diff --git a/deps/build_libs.sh b/deps/build_libs.sh index 4ea4168..a1054de 100755 --- a/deps/build_libs.sh +++ b/deps/build_libs.sh @@ -22,28 +22,17 @@ make install export PKG_CONFIG_PATH=$PREFIX/lib/pkgconfig -if [[ $CROSS_COMPILE == "i686-w64-mingw32" ]] ; then - # libusb-compat is a mess to compile for win32 - # use a precompiled version from libusb-win32 project - curl http://download.sourceforge.net/project/libusb-win32/libusb-win32-releases/1.2.6.0/libusb-win32-bin-1.2.6.0.zip -o libusb-win32-bin-1.2.6.0.zip -L - unzip libusb-win32-bin-1.2.6.0.zip - #mkdir -p $PREFIX/bin/ - #cp libusb-win32-bin-1.2.6.0/bin/x86/libusb0_x86.dll $PREFIX/bin/libusb0.dll - cp libusb-win32-bin-1.2.6.0/include/lusb0_usb.h $PREFIX/include - cp libusb-win32-bin-1.2.6.0/lib/gcc/libusb.a $PREFIX/lib -else - if [[ $CROSS_COMPILE == "x86_64-apple-darwin13" ]]; then - export LIBUSB_1_0_CFLAGS=-I${PREFIX}/include/libusb-1.0 - export LIBUSB_1_0_LIBS="-L${PREFIX}/lib -lusb-1.0" - fi - cd /opt/lib/libusb-compat-0.1.7 - export LIBUSB0_DIR=`pwd` - PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig" ./configure --prefix=${PREFIX} --enable-static --disable-shared --host=${CROSS_COMPILE} - make distclean - PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig" ./configure --prefix=${PREFIX} --enable-static --disable-shared --host=${CROSS_COMPILE} - make -j$(nproc) - make install +if [[ $CROSS_COMPILE == "x86_64-apple-darwin13" ]]; then + export LIBUSB_1_0_CFLAGS=-I${PREFIX}/include/libusb-1.0 + export LIBUSB_1_0_LIBS="-L${PREFIX}/lib -lusb-1.0" fi +cd /opt/lib/libusb-compat-0.1.7 +export LIBUSB0_DIR=`pwd` +PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig" ./configure --prefix=${PREFIX} --enable-static --disable-shared --host=${CROSS_COMPILE} +make distclean +PKG_CONFIG_PATH="$PREFIX/lib/pkgconfig" ./configure --prefix=${PREFIX} --enable-static --disable-shared --host=${CROSS_COMPILE} +make -j$(nproc) +make install cd /opt/lib/libftdi1-1.4 rm -rf build && mkdir build && cd build @@ -76,12 +65,12 @@ echo "*****************" export CPPFLAGS="-P" -cd /opt/lib/ncurses-5.9 +cd /opt/lib/ncurses-6.3 export NCURSES_DIR=`pwd` -./configure $EXTRAFLAGS --disable-shared --without-debug --without-ada --with-termlib --enable-termcap --without-manpages --without-progs --without-tests --host=$CROSS_COMPILE --prefix=${PREFIX} +./configure $EXTRAFLAGS --target=$CROSS_COMPILE --without-pthread --enable-database --enable-sp-funcs --enable-term-driver --without-shared --without-debug --without-ada --enable-termcap --without-manpages --without-progs --without-tests --host=$CROSS_COMPILE --prefix=${PREFIX} make distclean -./configure $EXTRAFLAGS --disable-shared --without-debug --without-ada --with-termlib --enable-termcap --without-manpages --without-progs --without-tests --host=$CROSS_COMPILE --prefix=${PREFIX} +./configure $EXTRAFLAGS --target=$CROSS_COMPILE --without-pthread --enable-database --enable-sp-funcs --enable-term-driver --without-shared --without-debug --without-ada --enable-termcap --without-manpages --without-progs --without-tests --host=$CROSS_COMPILE --prefix=${PREFIX} make -j$(nproc) make install.libs diff --git a/deps/ncurses-5.9/ANNOUNCE b/deps/ncurses-5.9/ANNOUNCE deleted file mode 100644 index 11933c5..0000000 --- a/deps/ncurses-5.9/ANNOUNCE +++ /dev/null @@ -1,288 +0,0 @@ - Announcing ncurses 5.9 - - The ncurses (new curses) library is a free software emulation of - curses in System V Release 4.0, and more. It uses terminfo format, - supports pads and color and multiple highlights and forms characters - and function-key mapping, and has all the other SYSV-curses - enhancements over BSD curses. - - In mid-June 1995, the maintainer of 4.4BSD curses declared that he - considered 4.4BSD curses obsolete, and encouraged the keepers of Unix - releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. - - The ncurses code was developed under GNU/Linux. It has been in use for - some time with OpenBSD as the system curses library, and on FreeBSD - and NetBSD as an external package. It should port easily to any - ANSI/POSIX-conforming UNIX. It has even been ported to OS/2 Warp! - - The distribution includes the library and support utilities, including - a terminfo compiler tic(1), a decompiler infocmp(1), clear(1), - tput(1), tset(1), and a termcap conversion tool captoinfo(1). Full - manual pages are provided for the library and tools. - - The ncurses distribution is available via anonymous FTP at the GNU - distribution site [1]ftp://ftp.gnu.org/gnu/ncurses/ . - It is also available at [2]ftp://invisible-island.net/ncurses/ . - - Release Notes - - This release is designed to be upward compatible from ncurses 5.0 - through 5.8; very few applications will require recompilation, - depending on the platform. These are the highlights from the - change-log since ncurses 5.8 release. - - This is a bug-fix release, correcting a small number of urgent - problems in the ncurses library from the 5.8 release. - - It also improves the Ada95 binding: - * fixes a longstanding portability problem with its use of the - [3]set_field_type function. Because that function uses - variable-length argument lists, its interface with gnat does not - work with certain platforms. - * improves configurability and portability, particularly when built - separately from the main ncurses tree. The 5.8 release introduced - scripts which can be used to construct separate tarballs for the - Ada95 and ncurses examples. - Those were a proof of concept. For the 5.9 release, those scripts - are augmented with rpm- and dpkg-scripts used in test builds - against a variety of gnat- and system ncurses versions as old as - gnat 3.15 and ncurses 5.4 (see snapshots and systems tested - [4]here. - * additional improvements were made for portability of the ncurses - examples, adding rpm- and dpkg-scripts for test-builds. See - [5]this page for snapshots and other information. - - Features of Ncurses - - The ncurses package is fully compatible with SVr4 (System V Release 4) - curses: - * All 257 of the SVr4 calls have been implemented (and are - documented). - * Full support for SVr4 curses features including keyboard mapping, - color, forms-drawing with ACS characters, and automatic - recognition of keypad and function keys. - * An emulation of the SVr4 panels library, supporting a stack of - windows with backing store, is included. - * An emulation of the SVr4 menus library, supporting a uniform but - flexible interface for menu programming, is included. - * An emulation of the SVr4 form library, supporting data collection - through on-screen forms, is included. - * Binary terminfo entries generated by the ncurses tic(1) - implementation are bit-for-bit-compatible with the entry format - SVr4 curses uses. - * The utilities have options to allow you to filter terminfo entries - for use with less capable curses/terminfo versions such as the - HP/UX and AIX ports. - - The ncurses package also has many useful extensions over SVr4: - * The API is 8-bit clean and base-level conformant with the X/OPEN - curses specification, XSI curses (that is, it implements all BASE - level features, and most EXTENDED features). It includes many - function calls not supported under SVr4 curses (but portability of - all calls is documented so you can use the SVr4 subset only). - * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost - corner of the screen if your terminal has an insert-character - capability. - * Ada95 and C++ bindings. - * Support for mouse event reporting with X Window xterm and FreeBSD - and OS/2 console windows. - * Extended mouse support via Alessandro Rubini's gpm package. - * The function wresize allows you to resize windows, preserving - their data. - * The function use_default_colors allows you to use the terminal's - default colors for the default color pair, achieving the effect of - transparent colors. - * The functions keyok and define_key allow you to better control the - use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by - defining more than one control sequence to map to a given key - code. - * Support for 256-color terminals, such as modern xterm, when - configured using the --enable-ext-colors option. - * Support for 16-color terminals, such as aixterm and modern xterm. - * Better cursor-movement optimization. The package now features a - cursor-local-movement computation more efficient than either BSD's - or System V's. - * Super hardware scrolling support. The screen-update code - incorporates a novel, simple, and cheap algorithm that enables it - to make optimal use of hardware scrolling, line-insertion, and - line-deletion for screen-line movements. This algorithm is more - powerful than the 4.4BSD curses quickch routine. - * Real support for terminals with the magic-cookie glitch. The - screen-update code will refrain from drawing a highlight if the - magic- cookie unattributed spaces required just before the - beginning and after the end would step on a non-space character. - It will automatically shift highlight boundaries when doing so - would make it possible to draw the highlight without changing the - visual appearance of the screen. - * It is possible to generate the library with a list of pre-loaded - fallback entries linked to it so that it can serve those terminal - types even when no terminfo tree or termcap file is accessible - (this may be useful for support of screen-oriented programs that - must run in single-user mode). - * The tic(1)/captoinfo utility provided with ncurses has the ability - to translate many termcaps from the XENIX, IBM and AT&T extension - sets. - * A BSD-like tset(1) utility is provided. - * The ncurses library and utilities will automatically read terminfo - entries from $HOME/.terminfo if it exists, and compile to that - directory if it exists and the user has no write access to the - system directory. This feature makes it easier for users to have - personal terminfo entries without giving up access to the system - terminfo directory. - * You may specify a path of directories to search for compiled - descriptions with the environment variable TERMINFO_DIRS (this - generalizes the feature provided by TERMINFO under stock System - V.) - * In terminfo source files, use capabilities may refer not just to - other entries in the same source file (as in System V) but also to - compiled entries in either the system terminfo directory or the - user's $HOME/.terminfo directory. - * A script (capconvert) is provided to help BSD users transition - from termcap to terminfo. It gathers the information in a TERMCAP - environment variable and/or a ~/.termcap local entries file and - converts it to an equivalent local terminfo tree under - $HOME/.terminfo. - * Automatic fallback to the /etc/termcap file can be compiled in - when it is not possible to build a terminfo tree. This feature is - neither fast nor cheap, you don't want to use it unless you have - to, but it's there. - * The table-of-entries utility toe makes it easy for users to see - exactly what terminal types are available on the system. - * The library meets the XSI requirement that every macro entry point - have a corresponding function which may be linked (and will be - prototype-checked) if the macro definition is disabled with - #undef. - * An HTML "Introduction to Programming with NCURSES" document - provides a narrative introduction to the curses programming - interface. - - State of the Package - - Numerous bugs present in earlier versions have been fixed; the library - is far more reliable than it used to be. Bounds checking in many - `dangerous' entry points has been improved. The code is now type-safe - according to gcc -Wall. The library has been checked for malloc leaks - and arena corruption by the Purify memory-allocation tester. - - The ncurses code has been tested with a wide variety of applications - including (versions starting with those noted): - - cdk - Curses Development Kit - [6]http://invisible-island.net/cdk/ - [7]http://www.vexus.ca/products/CDK/ - - ded - directory-editor - [8]http://invisible-island.net/ded/ - - dialog - the underlying application used in Slackware's setup, and the - basis for similar applications on GNU/Linux. - [9]http://invisible-island.net/dialog/ - - lynx - the character-screen WWW browser - [10]http://lynx.isc.org/release/ - - Midnight Commander - file manager - [11]http://www.midnight-commander.org/ - - mutt - mail utility - [12]http://www.mutt.org/ - - ncftp - file-transfer utility - [13]http://www.ncftp.com/ - - nvi - New vi versions 1.50 are able to use ncurses versions 1.9.7 and - later. - [14]https://sites.google.com/a/bostic.com/keithbostic/nvi - - pinfo - Lynx-like info browser. - [15]https://alioth.debian.org/projects/pinfo/ - - tin - newsreader, supporting color, MIME [16]http://www.tin.org/ - - as well as some that use ncurses for the terminfo support alone: - - minicom - terminal emulator - [17]http://alioth.debian.org/projects/minicom/ - - vile - vi-like-emacs - [18]http://invisible-island.net/vile/ - - The ncurses distribution includes a selection of test programs - (including a few games). - -Who's Who and What's What - - Zeyd Ben-Halim started it from a previous package pcurses, written by - Pavel Curtis. Eric S. Raymond continued development. Juergen Pfeifer - wrote most of the form and menu libraries. Ongoing work is being done - by [19]Thomas Dickey. Thomas Dickey acts as the maintainer for the - Free Software Foundation, which holds the copyright on ncurses. - Contact the current maintainers at [20]bug-ncurses@gnu.org. - - To join the ncurses mailing list, please write email to - bug-ncurses-request@gnu.org containing the line: - subscribe @ - - This list is open to anyone interested in helping with the development - and testing of this package. - - Beta versions of ncurses and patches to the current release are made - available at [21]ftp://invisible-island.net/ncurses/ . - -Future Plans - - * Extended-level XPG4 conformance, with internationalization - support. - * Ports to more systems, including DOS and Windows. - - We need people to help with these projects. If you are interested in - working on them, please join the ncurses list. - -Other Related Resources - - The distribution provides a newer version of the terminfo-format - terminal description file once maintained by [22]Eric Raymond . Unlike - the older version, the termcap and terminfo data are provided in the - same file, and provides several user-definable extensions beyond the - X/Open specification. - - You can find lots of information on terminal-related topics not - covered in the terminfo file at [23]Richard Shuford's archive . - -References - - 1. ftp://ftp.gnu.org/gnu/ncurses/ - 2. ftp://invisible-island.net/ncurses/ - 3. http://invisible-island.net/ncurses/man/form_fieldtype.3x - 4. http://invisible-island.net/ncurses/ncurses-Ada95.html - 5. http://invisible-island.net/ncurses/ncurses-examples.html - 6. http://invisible-island.net/cdk/ - 7. http://www.vexus.ca/products/CDK/ - 8. http://invisible-island.net/ded/ - 9. http://invisible-island.net/dialog/ - 10. http://lynx.isc.org/release/ - 11. http://www.midnight-commander.org/ - 12. http://www.mutt.org/ - 13. http://www.ncftp.com/ - 14. https://sites.google.com/a/bostic.com/keithbostic/nvi - 15. https://alioth.debian.org/projects/pinfo/ - 16. http://www.tin.org/ - 17. http://alioth.debian.org/projects/minicom/ - 18. http://invisible-island.net/vile/ - 19. mailto:dickey@invisible-island.net - 20. mailto:bug-ncurses@gnu.org - 21. ftp://invisible-island.net/ncurses/ - 22. http://www.catb.org/~esr/terminfo/ - 23. http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal diff --git a/deps/ncurses-5.9/Ada95/Makefile.in b/deps/ncurses-5.9/Ada95/Makefile.in deleted file mode 100644 index f820793..0000000 --- a/deps/ncurses-5.9/Ada95/Makefile.in +++ /dev/null @@ -1,81 +0,0 @@ -# $Id: Makefile.in,v 1.21 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2003,2010 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, 1996 -# -# Version Control -# $Revision: 1.21 $ -# -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -SUBDIRS = @ADA_SUBDIRS@ - -CF_MFLAGS = @cf_cv_makeflags@ -@SET_MAKE@ - -all \ -libs \ -sources \ -install \ -install.libs \ -uninstall \ -uninstall.libs :: - for d in $(SUBDIRS); do \ - (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\ - done - -clean \ -mostlyclean :: - for d in $(SUBDIRS); do \ - (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\ - done - -distclean \ -realclean :: - for d in $(SUBDIRS); do \ - (cd $$d ; $(MAKE) $(CF_MFLAGS) $@) ;\ - done - rm -rf lib - for lib_kind in static dynamic; do \ - rm -rf $${lib_kind}-ali; \ - rm -rf $${lib_kind}-obj; \ - done - -rm -f config.cache config.log config.status include/ncurses_cfg.h - -rm -f Makefile - -tags : - @ - -preinstall : - @ - -install.data : - @ diff --git a/deps/ncurses-5.9/Ada95/README b/deps/ncurses-5.9/Ada95/README deleted file mode 100644 index be84259..0000000 --- a/deps/ncurses-5.9/Ada95/README +++ /dev/null @@ -1,33 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998 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, 1996 - -The documentation is provided in HTML format in the ./html -subdirectory. The main document is named index.html - diff --git a/deps/ncurses-5.9/Ada95/aclocal.m4 b/deps/ncurses-5.9/Ada95/aclocal.m4 deleted file mode 100644 index 597483b..0000000 --- a/deps/ncurses-5.9/Ada95/aclocal.m4 +++ /dev/null @@ -1,3579 +0,0 @@ -dnl*************************************************************************** -dnl Copyright (c) 2010,2011 Free Software Foundation, Inc. * -dnl * -dnl Permission is hereby granted, free of charge, to any person obtaining a * -dnl copy of this software and associated documentation files (the * -dnl "Software"), to deal in the Software without restriction, including * -dnl without limitation the rights to use, copy, modify, merge, publish, * -dnl distribute, distribute with modifications, sublicense, and/or sell * -dnl copies of the Software, and to permit persons to whom the Software is * -dnl furnished to do so, subject to the following conditions: * -dnl * -dnl The above copyright notice and this permission notice shall be included * -dnl in all copies or substantial portions of the Software. * -dnl * -dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * -dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * -dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * -dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * -dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * -dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * -dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * -dnl * -dnl Except as contained in this notice, the name(s) of the above copyright * -dnl holders shall not be used in advertising or otherwise to promote the * -dnl sale, use or other dealings in this Software without prior written * -dnl authorization. * -dnl*************************************************************************** -dnl -dnl Author: Thomas E. Dickey -dnl -dnl $Id: aclocal.m4,v 1.24 2011/03/31 23:32:36 tom Exp $ -dnl Macros used in NCURSES Ada95 auto-configuration script. -dnl -dnl These macros are maintained separately from NCURSES. The copyright on -dnl this file applies to the aggregation of macros and does not affect use of -dnl these macros in other applications. -dnl -dnl See http://invisible-island.net/autoconf/ for additional information. -dnl -dnl --------------------------------------------------------------------------- -dnl --------------------------------------------------------------------------- -dnl CF_ADA_INCLUDE_DIRS version: 6 updated: 2010/02/26 19:52:07 -dnl ------------------- -dnl Construct the list of include-options for the C programs in the Ada95 -dnl binding. -AC_DEFUN([CF_ADA_INCLUDE_DIRS], -[ -ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" -if test "$srcdir" != "."; then - ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" -fi -if test "$GCC" != yes; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi - else - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi -fi -AC_SUBST(ACPPFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18 -dnl --------------- -dnl Add to $ADAFLAGS, which is substituted into makefile and scripts. -AC_DEFUN([CF_ADD_ADAFLAGS],[ - ADAFLAGS="$ADAFLAGS $1" - AC_SUBST(ADAFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42 -dnl ------------- -dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS -dnl The second parameter if given makes this macro verbose. -dnl -dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, -dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily -dnl confused by the quotes (which require backslashes to keep them usable). -AC_DEFUN([CF_ADD_CFLAGS], -[ -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $1 -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -D*) - cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` - CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) - ;; - esac - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -AC_SUBST(EXTRA_CPPFLAGS) - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_INCDIR version: 13 updated: 2010/05/26 16:44:57 -dnl ------------- -dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's -dnl redundant. We don't normally need to add -I/usr/local/include for gcc, -dnl but old versions (and some misinstalled ones) need that. To make things -dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to -dnl the include-path). -AC_DEFUN([CF_ADD_INCDIR], -[ -if test -n "$1" ; then - for cf_add_incdir in $1 - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - AC_TRY_COMPILE([#include ], - [printf("Hello")], - [], - [cf_have_incdir=yes]) - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - CF_VERBOSE(adding $cf_add_incdir to include-path) - ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 -dnl ---------- -dnl Add a library, used to enforce consistency. -dnl -dnl $1 = library to add, without the "-l" -dnl $2 = variable to update (default $LIBS) -AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIBDIR version: 9 updated: 2010/05/26 16:44:57 -dnl ------------- -dnl Adds to the library-path -dnl -dnl Some machines have trouble with multiple -L options. -dnl -dnl $1 is the (list of) directory(s) to add -dnl $2 is the optional name of the variable to update (default LDFLAGS) -dnl -AC_DEFUN([CF_ADD_LIBDIR], -[ -if test -n "$1" ; then - for cf_add_libdir in $1 - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - CF_VERBOSE(adding $cf_add_libdir to library-path) - ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])" - fi - fi - done -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIBS version: 1 updated: 2010/06/02 05:03:05 -dnl ----------- -dnl Add one or more libraries, used to enforce consistency. -dnl -dnl $1 = libraries to add, with the "-l", etc. -dnl $2 = variable to update (default $LIBS) -AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_SUBDIR_PATH version: 3 updated: 2010/07/03 20:58:12 -dnl ------------------ -dnl Append to a search-list for a nonstandard header/lib-file -dnl $1 = the variable to return as result -dnl $2 = the package name -dnl $3 = the subdirectory, e.g., bin, include or lib -dnl $4 = the directory under which we will test for subdirectories -dnl $5 = a directory that we do not want $4 to match -AC_DEFUN([CF_ADD_SUBDIR_PATH], -[ -test "$4" != "$5" && \ -test -d "$4" && \ -ifelse([$5],NONE,,[(test $5 = NONE || test "$4" != "$5") &&]) { - test -n "$verbose" && echo " ... testing for $3-directories under $4" - test -d $4/$3 && $1="[$]$1 $4/$3" - test -d $4/$3/$2 && $1="[$]$1 $4/$3/$2" - test -d $4/$3/$2/$3 && $1="[$]$1 $4/$3/$2/$3" - test -d $4/$2/$3 && $1="[$]$1 $4/$2/$3" - test -d $4/$2/$3/$2 && $1="[$]$1 $4/$2/$3/$2" -} -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ANSI_CC_CHECK version: 10 updated: 2010/10/23 15:52:32 -dnl ---------------- -dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES' -dnl in the sharutils 4.2 distribution. -AC_DEFUN([CF_ANSI_CC_CHECK], -[ -AC_CACHE_CHECK(for ${CC:-cc} option to accept ANSI C, cf_cv_ansi_cc,[ -cf_cv_ansi_cc=no -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) -for cf_arg in "-DCC_HAS_PROTOS" \ - "" \ - -qlanglvl=ansi \ - -std1 \ - -Ae \ - "-Aa -D_HPUX_SOURCE" \ - -Xc -do - CF_ADD_CFLAGS($cf_arg) - AC_TRY_COMPILE( -[ -#ifndef CC_HAS_PROTOS -#if !defined(__STDC__) || (__STDC__ != 1) -choke me -#endif -#endif -],[ - int test (int i, double x); - struct s1 {int (*f) (int a);}; - struct s2 {int (*f) (double a);};], - [cf_cv_ansi_cc="$cf_arg"; break]) -done -CFLAGS="$cf_save_CFLAGS" -CPPFLAGS="$cf_save_CPPFLAGS" -]) - -if test "$cf_cv_ansi_cc" != "no"; then -if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then - CF_ADD_CFLAGS($cf_cv_ansi_cc) -else - AC_DEFINE(CC_HAS_PROTOS) -fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ANSI_CC_REQD version: 4 updated: 2008/03/23 14:48:54 -dnl --------------- -dnl For programs that must use an ANSI compiler, obtain compiler options that -dnl will make it recognize prototypes. We'll do preprocessor checks in other -dnl macros, since tools such as unproto can fake prototypes, but only part of -dnl the preprocessor. -AC_DEFUN([CF_ANSI_CC_REQD], -[AC_REQUIRE([CF_ANSI_CC_CHECK]) -if test "$cf_cv_ansi_cc" = "no"; then - AC_MSG_ERROR( -[Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_AR_FLAGS version: 5 updated: 2010/05/20 20:24:29 -dnl ----------- -dnl Check for suitable "ar" (archiver) options for updating an archive. -AC_DEFUN([CF_AR_FLAGS],[ -AC_REQUIRE([CF_PROG_AR]) - -AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ - cf_cv_ar_flags=unknown - for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv - do - - # check if $ARFLAGS already contains this choice - if test "x$ARFLAGS" != "x" ; then - cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` - if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then - cf_cv_ar_flags= - break - fi - fi - - rm -f conftest.$ac_cv_objext - rm -f conftest.a - - cat >conftest.$ac_ext <&AC_FD_CC - $AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&AC_FD_CC 1>/dev/null - if test -f conftest.a ; then - cf_cv_ar_flags=$cf_ar_flags - break - fi - else - CF_VERBOSE(cannot compile test-program) - break - fi - done - rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext -]) - -if test -n "$ARFLAGS" ; then - if test -n "$cf_cv_ar_flags" ; then - ARFLAGS="$ARFLAGS $cf_cv_ar_flags" - fi -else - ARFLAGS=$cf_cv_ar_flags -fi - -AC_SUBST(ARFLAGS) -]) -dnl --------------------------------------------------------------------------- -dnl CF_BUILD_CC version: 6 updated: 2006/10/14 15:23:15 -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 -dnl compiler, etc., but we need a build compiler to generate parts of the -dnl source. -dnl -dnl $1 = default for $CPPFLAGS -dnl $2 = default for $LIBS -AC_DEFUN([CF_BUILD_CC],[ -AC_REQUIRE([CF_PROG_EXT]) -if test "$cross_compiling" = yes ; then - - # defaults that we might want to override - : ${BUILD_CFLAGS:=''} - : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'} - : ${BUILD_LDFLAGS:=''} - : ${BUILD_LIBS:='ifelse([$2],,,[$2])'} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} - - AC_ARG_WITH(build-cc, - [ --with-build-cc=XXX the build C compiler ($BUILD_CC)], - [BUILD_CC="$withval"], - [AC_CHECK_PROGS(BUILD_CC, gcc cc cl)]) - AC_MSG_CHECKING(for native build C compiler) - AC_MSG_RESULT($BUILD_CC) - - AC_MSG_CHECKING(for native build C preprocessor) - AC_ARG_WITH(build-cpp, - [ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)], - [BUILD_CPP="$withval"], - [BUILD_CPP='${BUILD_CC} -E']) - AC_MSG_RESULT($BUILD_CPP) - - AC_MSG_CHECKING(for native build C flags) - AC_ARG_WITH(build-cflags, - [ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)], - [BUILD_CFLAGS="$withval"]) - AC_MSG_RESULT($BUILD_CFLAGS) - - AC_MSG_CHECKING(for native build C preprocessor-flags) - AC_ARG_WITH(build-cppflags, - [ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)], - [BUILD_CPPFLAGS="$withval"]) - AC_MSG_RESULT($BUILD_CPPFLAGS) - - AC_MSG_CHECKING(for native build linker-flags) - AC_ARG_WITH(build-ldflags, - [ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)], - [BUILD_LDFLAGS="$withval"]) - AC_MSG_RESULT($BUILD_LDFLAGS) - - AC_MSG_CHECKING(for native build linker-libraries) - AC_ARG_WITH(build-libs, - [ --with-build-libs=XXX the build libraries (${BUILD_LIBS})], - [BUILD_LIBS="$withval"]) - AC_MSG_RESULT($BUILD_LIBS) - - # this assumes we're on Unix. - BUILD_EXEEXT= - BUILD_OBJEXT=o - - : ${BUILD_CC:='${CC}'} - - if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then - AC_MSG_ERROR([Cross-build requires two compilers. -Use --with-build-cc to specify the native compiler.]) - fi - -else - : ${BUILD_CC:='${CC}'} - : ${BUILD_CPP:='${CPP}'} - : ${BUILD_CFLAGS:='${CFLAGS}'} - : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} - : ${BUILD_LDFLAGS:='${LDFLAGS}'} - : ${BUILD_LIBS:='${LIBS}'} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} -fi - -AC_SUBST(BUILD_CC) -AC_SUBST(BUILD_CPP) -AC_SUBST(BUILD_CFLAGS) -AC_SUBST(BUILD_CPPFLAGS) -AC_SUBST(BUILD_LDFLAGS) -AC_SUBST(BUILD_LIBS) -AC_SUBST(BUILD_EXEEXT) -AC_SUBST(BUILD_OBJEXT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CFG_DEFAULTS version: 7 updated: 2005/09/24 16:15:00 -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 -dnl look for: -dnl 1. the prefix (e.g., /usr) -dnl 2. the header files (e.g., /usr/include/ncurses) -dnl We'll look for a previous installation of ncurses and use the same defaults. -dnl -dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and -dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's -dnl programs from a vendor's. -AC_DEFUN([CF_CFG_DEFAULTS], -[ -AC_MSG_CHECKING(for prefix) -if test "x$prefix" = "xNONE" ; then - case "$cf_cv_system_name" in - # non-vendor systems don't have a conflict - openbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu) - prefix=/usr - ;; - *) prefix=$ac_default_prefix - ;; - esac -fi -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 -for cf_symbol in \ - $includedir \ - $includedir/ncurses \ - $prefix/include \ - $prefix/include/ncurses \ - /usr/local/include \ - /usr/local/include/ncurses \ - /usr/include \ - /usr/include/ncurses -do - cf_dir=`eval echo $cf_symbol` - if test -f $cf_dir/curses.h ; then - if ( fgrep NCURSES_VERSION $cf_dir/curses.h 2>&1 >/dev/null ) ; then - includedir="$cf_symbol" - test -n "$verbose" && echo $ac_n " found " 1>&AC_FD_MSG - break - fi - fi - test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG -done -AC_MSG_RESULT($includedir) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CHECK_CACHE version: 11 updated: 2008/03/23 14:45:59 -dnl -------------- -dnl Check if we're accidentally using a cache from a different machine. -dnl Derive the system name, as a check for reusing the autoconf cache. -dnl -dnl If we've packaged config.guess and config.sub, run that (since it does a -dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow -dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM -dnl which is useful in cross-compiles. -dnl -dnl Note: we would use $ac_config_sub, but that is one of the places where -dnl autoconf 2.5x broke compatibility with autoconf 2.13 -AC_DEFUN([CF_CHECK_CACHE], -[ -if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then - ifelse([$1],,[AC_CANONICAL_HOST],[$1]) - system_name="$host_os" -else - system_name="`(uname -s -r) 2>/dev/null`" - if test -z "$system_name" ; then - system_name="`(hostname) 2>/dev/null`" - fi -fi -test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name") -AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) - -test -z "$system_name" && system_name="$cf_cv_system_name" -test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) - -if test ".$system_name" != ".$cf_cv_system_name" ; then - AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) - AC_MSG_ERROR("Please remove config.cache and try again.") -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_HEADER version: 2 updated: 2010/04/28 06:02:16 -dnl ---------------- -dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common -dnl variations of ncurses' installs. -dnl -dnl $1 = ncurses when looking for ncurses, or is empty -AC_DEFUN([CF_CURSES_HEADER],[ -AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[ -cf_cv_ncurses_header=none -for cf_header in ifelse($1,,,[ \ - $1/curses.h \ - $1/ncurses.h]) \ - curses.h \ - ncurses.h ifelse($1,,[ncurses/curses.h ncurses/ncurses.h]) -do -AC_TRY_COMPILE([#include <${cf_header}>], - [initscr(); tgoto("?", 0,0)], - [cf_cv_ncurses_header=$cf_header; break],[]) -done -]) - -if test "$cf_cv_ncurses_header" = none ; then - AC_MSG_ERROR(No curses header-files found) -fi - -# cheat, to get the right #define's for HAVE_NCURSES_H, etc. -AC_CHECK_HEADERS($cf_cv_ncurses_header) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52 -dnl ---------- -dnl "dirname" is not portable, so we fake it with a shell script. -AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FIND_LIBRARY version: 9 updated: 2008/03/23 14:48:54 -dnl --------------- -dnl Look for a non-standard library, given parameters for AC_TRY_LINK. We -dnl prefer a standard location, and use -L options only if we do not find the -dnl library in the standard library location(s). -dnl $1 = library name -dnl $2 = library class, usually the same as library name -dnl $3 = includes -dnl $4 = code fragment to compile/link -dnl $5 = corresponding function-name -dnl $6 = flag, nonnull if failure should not cause an error-exit -dnl -dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had -dnl to use a -L option. -AC_DEFUN([CF_FIND_LIBRARY], -[ - eval 'cf_cv_have_lib_'$1'=no' - cf_libdir="" - AC_CHECK_FUNC($5, - eval 'cf_cv_have_lib_'$1'=yes',[ - cf_save_LIBS="$LIBS" - AC_MSG_CHECKING(for $5 in -l$1) - LIBS="-l$1 $LIBS" - AC_TRY_LINK([$3],[$4], - [AC_MSG_RESULT(yes) - eval 'cf_cv_have_lib_'$1'=yes' - ], - [AC_MSG_RESULT(no) - CF_LIBRARY_PATH(cf_search,$2) - for cf_libdir in $cf_search - do - AC_MSG_CHECKING(for -l$1 in $cf_libdir) - LIBS="-L$cf_libdir -l$1 $cf_save_LIBS" - AC_TRY_LINK([$3],[$4], - [AC_MSG_RESULT(yes) - eval 'cf_cv_have_lib_'$1'=yes' - break], - [AC_MSG_RESULT(no) - LIBS="$cf_save_LIBS"]) - done - ]) - ]) -eval 'cf_found_library=[$]cf_cv_have_lib_'$1 -ifelse($6,,[ -if test $cf_found_library = no ; then - AC_MSG_ERROR(Cannot link $1 library) -fi -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FIND_LINKAGE version: 19 updated: 2010/05/29 16:31:02 -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. -dnl See also CF_ADD_SEARCHPATH. -dnl -dnl Parameters (4-on are optional): -dnl $1 = headers for library entrypoint -dnl $2 = code fragment for library entrypoint -dnl $3 = the library name without the "-l" option or ".so" suffix. -dnl $4 = action to perform if successful (default: update CPPFLAGS, etc) -dnl $5 = action to perform if not successful -dnl $6 = module name, if not the same as the library name -dnl $7 = extra libraries -dnl -dnl Sets these variables: -dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found -dnl $cf_cv_header_path_$3 - include-directory if needed -dnl $cf_cv_library_path_$3 - library-directory if needed -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. -cf_cv_header_path_$3= -cf_cv_library_path_$3= - -CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) - -cf_save_LIBS="$LIBS" - -AC_TRY_LINK([$1],[$2],[ - cf_cv_find_linkage_$3=yes - cf_cv_header_path_$3=/usr/include - cf_cv_library_path_$3=/usr/lib -],[ - -LIBS="-l$3 $7 $cf_save_LIBS" - -AC_TRY_LINK([$1],[$2],[ - cf_cv_find_linkage_$3=yes - cf_cv_header_path_$3=/usr/include - cf_cv_library_path_$3=/usr/lib - cf_cv_library_file_$3="-l$3" -],[ - cf_cv_find_linkage_$3=no - LIBS="$cf_save_LIBS" - - CF_VERBOSE(find linkage for $3 library) - CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)]) - - cf_save_CPPFLAGS="$CPPFLAGS" - cf_test_CPPFLAGS="$CPPFLAGS" - - CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6])) - for cf_cv_header_path_$3 in $cf_search - do - if test -d $cf_cv_header_path_$3 ; then - CF_VERBOSE(... testing $cf_cv_header_path_$3) - CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_$3" - AC_TRY_COMPILE([$1],[$2],[ - CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) - cf_cv_find_linkage_$3=maybe - cf_test_CPPFLAGS="$CPPFLAGS" - break],[ - CPPFLAGS="$cf_save_CPPFLAGS" - ]) - fi - done - - if test "$cf_cv_find_linkage_$3" = maybe ; then - - CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)]) - - cf_save_LIBS="$LIBS" - cf_save_LDFLAGS="$LDFLAGS" - - ifelse([$6],,,[ - CPPFLAGS="$cf_test_CPPFLAGS" - LIBS="-l$3 $7 $cf_save_LIBS" - AC_TRY_LINK([$1],[$2],[ - CF_VERBOSE(... found $3 library in system) - cf_cv_find_linkage_$3=yes]) - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - ]) - - if test "$cf_cv_find_linkage_$3" != yes ; then - CF_LIBRARY_PATH(cf_search,$3) - for cf_cv_library_path_$3 in $cf_search - do - if test -d $cf_cv_library_path_$3 ; then - CF_VERBOSE(... testing $cf_cv_library_path_$3) - 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],[ - CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) - cf_cv_find_linkage_$3=yes - cf_cv_library_file_$3="-l$3" - break],[ - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - LDFLAGS="$cf_save_LDFLAGS" - ]) - fi - done - CPPFLAGS="$cf_save_CPPFLAGS" - LDFLAGS="$cf_save_LDFLAGS" - fi - - else - cf_cv_find_linkage_$3=no - fi - ],$7) -]) - -LIBS="$cf_save_LIBS" - -if test "$cf_cv_find_linkage_$3" = yes ; then -ifelse([$4],,[ - CF_ADD_INCDIR($cf_cv_header_path_$3) - CF_ADD_LIBDIR($cf_cv_library_path_$3) - CF_ADD_LIB($3) -],[$4]) -else -ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_ATTRIBUTES version: 14 updated: 2010/10/23 15:52:32 -dnl ----------------- -dnl Test for availability of useful gcc __attribute__ directives to quiet -dnl compiler warnings. Though useful, not all are supported -- and contrary -dnl to documentation, unrecognized directives cause older compilers to barf. -AC_DEFUN([CF_GCC_ATTRIBUTES], -[ -if test "$GCC" = yes -then -cat > conftest.i < conftest.$ac_ext <&AC_FD_CC - - case $cf_attribute in #(vi - printf) #(vi - cf_printf_attribute=yes - cat >conftest.h <conftest.h <conftest.h <>confdefs.h - case $cf_attribute in #(vi - printf) #(vi - if test "$cf_printf_attribute" = no ; then - cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h -fi -rm -rf conftest* -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_VERSION version: 5 updated: 2010/04/24 11:02:31 -dnl -------------- -dnl Find version of gcc -AC_DEFUN([CF_GCC_VERSION],[ -AC_REQUIRE([AC_PROG_CC]) -GCC_VERSION=none -if test "$GCC" = yes ; then - AC_MSG_CHECKING(version of $CC) - GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" - test -z "$GCC_VERSION" && GCC_VERSION=unknown - AC_MSG_RESULT($GCC_VERSION) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_WARNINGS version: 27 updated: 2010/10/23 15:52:32 -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: -dnl -dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) -dnl -Wredundant-decls (system headers make this too noisy) -dnl -Wtraditional (combines too many unrelated messages, only a few useful) -dnl -Wwrite-strings (too noisy, but should review occasionally). This -dnl is enabled for ncurses using "--enable-const". -dnl -pedantic -dnl -dnl Parameter: -dnl $1 is an optional list of gcc warning flags that a particular -dnl application might want to use, e.g., "no-unused" for -dnl -Wno-unused -dnl Special: -dnl If $with_ext_const is "yes", add a check for -Wwrite-strings -dnl -AC_DEFUN([CF_GCC_WARNINGS], -[ -AC_REQUIRE([CF_GCC_VERSION]) -CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) - -cat > conftest.$ac_ext <>library.gpr <>confpackage.ads <>confpackage.adb <&AC_FD_CC 2>&1 ) ; then - cf_gnat_projects=yes - fi - cd .. - if test -f conftest.lib/confpackage.ali - then - cf_gnat_libraries=yes - fi - rm -rf conftest* *~conftest* - ;; - esac - ;; -esac -AC_MSG_RESULT($cf_gnat_projects) - -if test $cf_gnat_projects = yes -then - AC_MSG_CHECKING(if GNAT supports libraries) - AC_MSG_RESULT($cf_gnat_libraries) -fi - -if test "$cf_gnat_projects" = yes -then - USE_OLD_MAKERULES="#" - USE_GNAT_PROJECTS="" -else - USE_OLD_MAKERULES="" - USE_GNAT_PROJECTS="#" -fi - -if test "$cf_gnat_libraries" = yes -then - USE_GNAT_LIBRARIES="" -else - USE_GNAT_LIBRARIES="#" -fi - -AC_SUBST(USE_OLD_MAKERULES) -AC_SUBST(USE_GNAT_PROJECTS) -AC_SUBST(USE_GNAT_LIBRARIES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GNAT_TRY_LINK version: 3 updated: 2011/03/19 14:47:45 -dnl ---------------- -dnl Verify that a test program compiles/links with GNAT. -dnl $cf_ada_make is set to the program that compiles/links -dnl $ADAFLAGS may be set to the GNAT flags. -dnl -dnl $1 is the text of the spec -dnl $2 is the text of the body -dnl $3 is the shell command to execute if successful -dnl $4 is the shell command to execute if not successful -AC_DEFUN([CF_GNAT_TRY_LINK], -[ -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then -ifelse($3,, :,[ $3]) -ifelse($4,,,[else - $4]) -fi -rm -rf conftest* *~conftest* -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GNAT_TRY_RUN version: 5 updated: 2011/03/19 14:47:45 -dnl --------------- -dnl Verify that a test program compiles and runs with GNAT -dnl $cf_ada_make is set to the program that compiles/links -dnl $ADAFLAGS may be set to the GNAT flags. -dnl -dnl $1 is the text of the spec -dnl $2 is the text of the body -dnl $3 is the shell command to execute if successful -dnl $4 is the shell command to execute if not successful -AC_DEFUN([CF_GNAT_TRY_RUN], -[ -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then - if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then -ifelse($3,, :,[ $3]) -ifelse($4,,,[ else - $4]) - fi -ifelse($4,,,[else - $4]) -fi -rm -rf conftest* *~conftest* -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GNAT_VERSION version: 17 updated: 2011/03/23 20:24:41 -dnl --------------- -dnl Verify version of GNAT. -AC_DEFUN([CF_GNAT_VERSION], -[ -AC_MSG_CHECKING(for gnat version) -cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \ - grep '[[0-9]].[[0-9]][[0-9]]*' |\ - sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'` -AC_MSG_RESULT($cf_gnat_version) - -case $cf_gnat_version in #(vi -3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*) #(vi - cf_cv_prog_gnat_correct=yes - ;; -*) - AC_MSG_WARN(Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding.) - cf_cv_prog_gnat_correct=no - ;; -esac -]) -dnl --------------------------------------------------------------------------- -dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07 -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 -dnl (or misfeature) of glibc2, which breaks portability of many applications, -dnl since it is interwoven with GNU extensions. -dnl -dnl Well, yes we could work around it... -AC_DEFUN([CF_GNU_SOURCE], -[ -AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ -AC_TRY_COMPILE([#include ],[ -#ifndef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_gnu_source=no], - [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - AC_TRY_COMPILE([#include ],[ -#ifdef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_gnu_source=no], - [cf_cv_gnu_source=yes]) - CPPFLAGS="$cf_save" - ]) -]) -test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_HEADER_PATH version: 12 updated: 2010/05/05 05:22:40 -dnl -------------- -dnl Construct a search-list of directories for a nonstandard header-file -dnl -dnl Parameters -dnl $1 = the variable to return as result -dnl $2 = the package name -AC_DEFUN([CF_HEADER_PATH], -[ -$1= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE) - cf_header_path_list="$cf_header_path_list [$]$1" - ;; - esac - done -fi - -# add the variations for the package we are looking for -CF_SUBDIR_PATH($1,$2,include) - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && $1="[$]$1 $includedir" - test -d $includedir/$2 && $1="[$]$1 $includedir/$2" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && $1="[$]$1 $oldincludedir" - test -d $oldincludedir/$2 && $1="[$]$1 $oldincludedir/$2" -} - -$1="[$]$1 $cf_header_path_list" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23 -dnl --------------- -dnl Insert text into the help-message, for readability, from AC_ARG_WITH. -AC_DEFUN([CF_HELP_MESSAGE], -[AC_DIVERT_HELP([$1])dnl -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_INCLUDE_DIRS version: 6 updated: 2009/01/06 19:37:40 -dnl --------------- -dnl Construct the list of include-options according to whether we're building -dnl in the source directory or using '--srcdir=DIR' option. If we're building -dnl with gcc, don't append the includedir if it happens to be /usr/include, -dnl since that usually breaks gcc's shadow-includes. -AC_DEFUN([CF_INCLUDE_DIRS], -[ -CPPFLAGS="$CPPFLAGS -I. -I../include" -if test "$srcdir" != "."; then - CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include" -fi -if test "$GCC" != yes; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi - else - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi -fi -AC_SUBST(CPPFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_INTEL_COMPILER version: 4 updated: 2010/05/26 05:38:42 -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 -dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. -dnl -dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to -dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from -dnl the wrappers for gcc and g++ warnings. -dnl -dnl $1 = GCC (default) or GXX -dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS -dnl $3 = CFLAGS (default) or CXXFLAGS -AC_DEFUN([CF_INTEL_COMPILER],[ -ifelse([$2],,INTEL_COMPILER,[$2])=no - -if test "$ifelse([$1],,[$1],GCC)" = yes ; then - case $host_os in - linux*|gnu*) - 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([],[ -#ifdef __INTEL_COMPILER -#else -make an error -#endif -],[ifelse([$2],,INTEL_COMPILER,[$2])=yes -cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" -],[]) - ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" - AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) - ;; - esac -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LARGEFILE version: 7 updated: 2007/06/02 11:58:50 -dnl ------------ -dnl Add checks for large file support. -AC_DEFUN([CF_LARGEFILE],[ -ifdef([AC_FUNC_FSEEKO],[ - AC_SYS_LARGEFILE - if test "$enable_largefile" != no ; then - AC_FUNC_FSEEKO - - # Normally we would collect these definitions in the config.h, - # but (like _XOPEN_SOURCE), some environments rely on having these - # defined before any of the system headers are included. Another - # case comes up with C++, e.g., on AIX the compiler compiles the - # header files by themselves before looking at the body files it is - # told to compile. For ncurses, those header files do not include - # the config.h - test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES " - test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE " - test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits " - - AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[ - AC_TRY_COMPILE([ -#include -#include - ],[ - /* if transitional largefile support is setup, this is true */ - extern struct dirent64 * readdir(DIR *); - struct dirent64 *x = readdir((DIR *)0); - struct dirent *y = readdir((DIR *)0); - int z = x - y; - ], - [cf_cv_struct_dirent64=yes], - [cf_cv_struct_dirent64=no]) - ]) - test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64) - fi -]) -]) -dnl --------------------------------------------------------------------------- -dnl CF_LD_RPATH_OPT version: 3 updated: 2010/06/02 05:03:05 -dnl --------------- -dnl For the given system and compiler, find the compiler flags to pass to the -dnl loader to use the "rpath" feature. -AC_DEFUN([CF_LD_RPATH_OPT], -[ -AC_REQUIRE([CF_CHECK_CACHE]) - -LD_RPATH_OPT= -AC_MSG_CHECKING(for an rpath option) -case $cf_cv_system_name in #(vi -irix*) #(vi - if test "$GCC" = yes; then - LD_RPATH_OPT="-Wl,-rpath," - else - LD_RPATH_OPT="-rpath " - fi - ;; -linux*|gnu*|k*bsd*-gnu) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -openbsd[[2-9]].*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -freebsd*) #(vi - LD_RPATH_OPT="-rpath " - ;; -netbsd*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -osf*|mls+*) #(vi - LD_RPATH_OPT="-rpath " - ;; -solaris2*) #(vi - LD_RPATH_OPT="-R" - ;; -*) - ;; -esac -AC_MSG_RESULT($LD_RPATH_OPT) - -case "x$LD_RPATH_OPT" in #(vi -x-R*) - 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) - LIBS="$cf_save_LIBS" - AC_MSG_RESULT($cf_rpath_space) - test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIBRARY_PATH version: 9 updated: 2010/03/28 12:52:50 -dnl --------------- -dnl Construct a search-list of directories for a nonstandard library-file -dnl -dnl Parameters -dnl $1 = the variable to return as result -dnl $2 = the package name -AC_DEFUN([CF_LIBRARY_PATH], -[ -$1= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE) - cf_library_path_list="$cf_library_path_list [$]$1" - ;; - esac - done -fi - -CF_SUBDIR_PATH($1,$2,lib) - -$1="$cf_library_path_list [$]$1" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIB_PREFIX version: 8 updated: 2008/09/13 11:34:16 -dnl ------------- -dnl Compute the library-prefix for the given host system -dnl $1 = variable to set -AC_DEFUN([CF_LIB_PREFIX], -[ - case $cf_cv_system_name in #(vi - OS/2*|os2*) #(vi - LIB_PREFIX='' - ;; - *) LIB_PREFIX='lib' - ;; - esac -ifelse($1,,,[$1=$LIB_PREFIX]) - AC_SUBST(LIB_PREFIX) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIB_SONAME version: 5 updated: 2010/08/14 18:25:37 -dnl ------------- -dnl Find the and soname for the given shared library. Set the cache variable -dnl cf_cv_$3_soname to this, unless it is not found. Then set the cache -dnl variable to "unknown". -dnl -dnl $1 = headers -dnl $2 = code -dnl $3 = library name -AC_DEFUN([CF_LIB_SONAME], -[ -AC_CACHE_CHECK(for soname of $3 library,cf_cv_$3_soname,[ - -cf_cv_$3_soname=unknown -if test "$cross_compiling" != yes ; then -cat >conftest.$ac_ext </dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | fgrep lib$3.` - test -z "$cf_cv_$3_soname" && cf_cv_$3_soname=unknown - fi - fi -rm -rf conftest* -LIBS="$cf_save_LIBS" -fi -]) -]) -dnl --------------------------------------------------------------------------- -dnl CF_LIB_SUFFIX version: 16 updated: 2008/12/27 12:30:03 -dnl ------------- -dnl Compute the library file-suffix from the given model name -dnl $1 = model name -dnl $2 = variable to set (the nominal library suffix) -dnl $3 = dependency variable to set (actual filename) -dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. -AC_DEFUN([CF_LIB_SUFFIX], -[ - AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) - case $1 in #(vi - libtool) #(vi - $2='.la' - $3=[$]$2 - ;; - normal) #(vi - $2='.a' - $3=[$]$2 - ;; - debug) #(vi - $2='_g.a' - $3=[$]$2 - ;; - profile) #(vi - $2='_p.a' - $3=[$]$2 - ;; - shared) #(vi - case $cf_cv_system_name in - aix[[56]]*) #(vi - $2='.a' - $3=[$]$2 - ;; - cygwin*) #(vi - $2='.dll' - $3='.dll.a' - ;; - darwin*) #(vi - $2='.dylib' - $3=[$]$2 - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - $2='.so' - $3=[$]$2 - ;; - *) #(vi - $2='.sl' - $3=[$]$2 - ;; - esac - ;; - *) $2='.so' - $3=[$]$2 - ;; - esac - esac - test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" - test -n "$LIB_SUFFIX" && $3="${LIB_SUFFIX}[$]{$3}" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIB_TYPE version: 4 updated: 2000/10/20 22:57:49 -dnl ----------- -dnl Compute the string to append to -library from the given model name -dnl $1 = model name -dnl $2 = variable to set -dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. -AC_DEFUN([CF_LIB_TYPE], -[ - case $1 in - libtool) $2='' ;; - normal) $2='' ;; - debug) $2='_g' ;; - profile) $2='_p' ;; - shared) $2='' ;; - esac - test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LINK_DATAONLY version: 9 updated: 2009/01/01 20:21:38 -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 -dnl have to provide wrappers for global tables to ensure they're linked -dnl properly. -AC_DEFUN([CF_LINK_DATAONLY], -[ -AC_MSG_CHECKING([if data-only library module links]) -AC_CACHE_VAL(cf_cv_link_dataonly,[ - rm -f conftest.a - cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null - fi - rm -f conftest.$ac_ext data.o - cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null - fi - rm -f conftest.$ac_ext func.o - ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null - cf_saveLIBS="$LIBS" - LIBS="conftest.a $LIBS" - AC_TRY_RUN([ - int main() - { - extern int testfunc(); - ${cf_cv_main_return:-return} (!testfunc()); - } - ], - [cf_cv_link_dataonly=yes], - [cf_cv_link_dataonly=no], - [cf_cv_link_dataonly=unknown]) - LIBS="$cf_saveLIBS" - ]) -AC_MSG_RESULT($cf_cv_link_dataonly) - -if test "$cf_cv_link_dataonly" = no ; then - AC_DEFINE(BROKEN_LINKER) - BROKEN_LINKER=1 -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LINK_FUNCS version: 7 updated: 2006/12/16 12:33:30 -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. -dnl A few non-systems implement neither (or have nonfunctional versions). -AC_DEFUN([CF_LINK_FUNCS], -[ -AC_CHECK_FUNCS( \ - remove \ - unlink ) - -if test "$cross_compiling" = yes ; then - AC_CHECK_FUNCS( \ - link \ - symlink ) -else - AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[ - cf_cv_link_funcs= - for cf_func in link symlink ; do - AC_TRY_RUN([ -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -int main() -{ - int fail = 0; - char *src = "config.log"; - char *dst = "conftest.chk"; - struct stat src_sb; - struct stat dst_sb; - - stat(src, &src_sb); - fail = ($cf_func("config.log", "conftest.chk") < 0) - || (stat(dst, &dst_sb) < 0) - || (dst_sb.st_mtime != src_sb.st_mtime); -#ifdef HAVE_UNLINK - unlink(dst); -#else - remove(dst); -#endif - ${cf_cv_main_return:-return} (fail); -} - ],[ - cf_cv_link_funcs="$cf_cv_link_funcs $cf_func" - eval 'ac_cv_func_'$cf_func'=yes'],[ - eval 'ac_cv_func_'$cf_func'=no'],[ - eval 'ac_cv_func_'$cf_func'=error']) - done - test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no - ]) - test "$ac_cv_func_link" = yes && AC_DEFINE(HAVE_LINK) - test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAIN_RETURN version: 1 updated: 2006/12/10 09:51:54 -dnl -------------- -dnl Check if a return from main to the shell actually returns the same exit -dnl code. This is true for almost any POSIX environment. -dnl -dnl Some very old environments did not flush stdout, etc., on an exit. That -dnl would be a useful case to test for also. -AC_DEFUN([CF_MAIN_RETURN], -[ -cf_cv_main_return=return -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAKEFLAGS version: 14 updated: 2011/03/31 19:29:46 -dnl ------------ -dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make' -dnl options to lower-levels. It's 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_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[ - cf_cv_makeflags='' - for cf_option in '-${MAKEFLAGS}' '${MFLAGS}' - do - cat >cf_makeflags.tmp </dev/null | fgrep -v "ing directory" | sed -e 's,[[ ]]*$,,'` - case "$cf_result" in - .*k) - 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 "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_TAGS version: 6 updated: 2010/10/23 15:52:32 -dnl ------------ -dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have -dnl a monocase filesystem. -AC_DEFUN([CF_MAKE_TAGS],[ -AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) - -AC_CHECK_PROGS(CTAGS, exctags ctags) -AC_CHECK_PROGS(ETAGS, exetags etags) - -AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) - -if test "$cf_cv_mixedcase" = yes ; then - AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) -else - MAKE_UPPER_TAGS=no -fi - -if test "$MAKE_UPPER_TAGS" = yes ; then - MAKE_UPPER_TAGS= -else - MAKE_UPPER_TAGS="#" -fi - -if test "$MAKE_LOWER_TAGS" = yes ; then - MAKE_LOWER_TAGS= -else - MAKE_LOWER_TAGS="#" -fi - -AC_SUBST(CTAGS) -AC_SUBST(ETAGS) - -AC_SUBST(MAKE_UPPER_TAGS) -AC_SUBST(MAKE_LOWER_TAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55 -dnl ---------------------- -dnl Check if the file-system supports mixed-case filenames. If we're able to -dnl create a lowercase name and see it as uppercase, it doesn't support that. -AC_DEFUN([CF_MIXEDCASE_FILENAMES], -[ -AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ -if test "$cross_compiling" = yes ; then - case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi - cf_cv_mixedcase=no - ;; - *) - cf_cv_mixedcase=yes - ;; - esac -else - rm -f conftest CONFTEST - echo test >conftest - if test -f CONFTEST ; then - cf_cv_mixedcase=no - else - cf_cv_mixedcase=yes - fi - rm -f conftest CONFTEST -fi -]) -test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MKSTEMP version: 7 updated: 2010/08/14 18:25:37 -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). -AC_DEFUN([CF_MKSTEMP],[ -AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ -rm -rf conftest* -AC_TRY_RUN([ -#include -#include -#include -#include -#include -int main() -{ - char *tmpl = "conftestXXXXXX"; - char name[2][80]; - int n; - int result = 0; - int fd; - struct stat sb; - - umask(077); - for (n = 0; n < 2; ++n) { - strcpy(name[n], tmpl); - if ((fd = mkstemp(name[n])) >= 0) { - if (!strcmp(name[n], tmpl) - || stat(name[n], &sb) != 0 - || (sb.st_mode & S_IFMT) != S_IFREG - || (sb.st_mode & 077) != 0) { - result = 1; - } - close(fd); - } - } - if (result == 0 - && !strcmp(name[0], name[1])) - result = 1; - ${cf_cv_main_return:-return}(result); -} -],[cf_cv_func_mkstemp=yes -],[cf_cv_func_mkstemp=no -],[AC_CHECK_FUNC(mkstemp) -]) -]) -if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then - AC_DEFINE(HAVE_MKSTEMP) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 -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 -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_ADDON version: 4 updated: 2011/03/27 17:10:13 -dnl ---------------- -dnl Configure an ncurses add-on, built outside the ncurses tree. -AC_DEFUN([CF_NCURSES_ADDON],[ - -AC_PROVIDE([CF_SUBST_NCURSES_VERSION]) - -AC_MSG_CHECKING(if you want wide-character code) -AC_ARG_ENABLE(widec, - [ --enable-widec compile with wide-char/UTF-8 code], - [with_widec=$enableval], - [with_widec=no]) -AC_MSG_RESULT($with_widec) -if test "$with_widec" = yes ; then - CF_UTF8_LIB - CF_NCURSES_CONFIG(ncursesw) -else - CF_NCURSES_CONFIG(ncurses) -fi - -if test "$NCURSES_CONFIG" != none ; then - -cf_version=`$NCURSES_CONFIG --version` - -NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'` -NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'` -NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'` - -# ABI version is not available from headers -cf_cv_abi_version=`$NCURSES_CONFIG --abi-version` - -else - -for cf_name in MAJOR MINOR PATCH -do -cat >conftest.$ac_ext < -AUTOCONF_$cf_name NCURSES_VERSION_$cf_name -CF_EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out" - AC_TRY_EVAL(cf_try) - if test -f conftest.out ; then - cf_result=`cat conftest.out | sed -e "s/^.*AUTOCONF_$cf_name[[ ]][[ ]]*//"` - eval NCURSES_$cf_name=\"$cf_result\" - # cat conftest.$ac_ext - # cat conftest.out - fi -done - -cf_cv_abi_version=${NCURSES_MAJOR} - -fi - -cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} - -dnl Show the computed version, for logging -cf_cv_timestamp=`date` - -AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)) - -dnl We need these values in the generated headers -AC_SUBST(NCURSES_MAJOR) -AC_SUBST(NCURSES_MINOR) -AC_SUBST(NCURSES_PATCH) - -dnl We need these values in the generated makefiles -AC_SUBST(cf_cv_rel_version) -AC_SUBST(cf_cv_abi_version) - -dnl FIXME - not needed for Ada95 -AC_SUBST(cf_cv_builtin_bool) -AC_SUBST(cf_cv_header_stdbool_h) -AC_SUBST(cf_cv_type_of_bool)dnl - -]) -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_CC_CHECK version: 4 updated: 2007/07/29 10:39:05 -dnl ------------------- -dnl Check if we can compile with ncurses' header file -dnl $1 is the cache variable to set -dnl $2 is the header-file to include -dnl $3 is the root name (ncurses or ncursesw) -AC_DEFUN([CF_NCURSES_CC_CHECK],[ - AC_TRY_COMPILE([ -]ifelse($3,ncursesw,[ -#define _XOPEN_SOURCE_EXTENDED -#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ -#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ -])[ -#include <$2>],[ -#ifdef NCURSES_VERSION -]ifelse($3,ncursesw,[ -#ifndef WACS_BSSB - make an error -#endif -])[ -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - ] - ,[$1=$2] - ,[$1=no]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_CONFIG version: 8 updated: 2010/07/08 05:17:30 -dnl ----------------- -dnl Tie together the configure-script macros for ncurses. -dnl Prefer the "-config" script from ncurses 6.x, to simplify analysis. -dnl Allow that to be overridden using the $NCURSES_CONFIG environment variable. -dnl -dnl $1 is the root library name (default: "ncurses") -AC_DEFUN([CF_NCURSES_CONFIG], -[ -cf_ncuconfig_root=ifelse($1,,ncurses,$1) - -echo "Looking for ${cf_ncuconfig_root}-config" -AC_PATH_PROGS(NCURSES_CONFIG,${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config,none) - -if test "$NCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`" -CF_ADD_LIBS(`$NCURSES_CONFIG --libs`) - -# even with config script, some packages use no-override for curses.h -CF_CURSES_HEADER(ifelse($1,,ncurses,$1)) - -dnl like CF_NCURSES_CPPFLAGS -AC_DEFINE(NCURSES) - -dnl like CF_NCURSES_LIBS -CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root) -AC_DEFINE_UNQUOTED($cf_nculib_ROOT) - -dnl like CF_NCURSES_VERSION -cf_cv_ncurses_version=`$NCURSES_CONFIG --version` - -else - -CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1)) -CF_NCURSES_LIBS(ifelse($1,,ncurses,$1)) - -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_CPPFLAGS version: 20 updated: 2010/11/20 17:02:38 -dnl ------------------- -dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting -dnl the CPPFLAGS variable so we can include its header. -dnl -dnl The header files may be installed as either curses.h, or ncurses.h (would -dnl be obsolete, except that some packagers prefer this name to distinguish it -dnl from a "native" curses implementation). If not installed for overwrite, -dnl the curses.h file would be in an ncurses subdirectory (e.g., -dnl /usr/include/ncurses), but someone may have installed overwriting the -dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd -dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in -dnl the header. -dnl -dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header -dnl is already in the include-path, don't even bother with this, since we cannot -dnl easily determine which file it is. In this case, it has to be . -dnl -dnl The optional parameter gives the root name of the library, in case it is -dnl not installed as the default curses library. That is how the -dnl wide-character version of ncurses is installed. -AC_DEFUN([CF_NCURSES_CPPFLAGS], -[AC_REQUIRE([CF_WITH_CURSES_DIR]) - -AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl -cf_ncuhdr_root=ifelse($1,,ncurses,$1) - -test -n "$cf_cv_curses_dir" && \ -test "$cf_cv_curses_dir" != "no" && { \ - CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root) -} - -AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[ - cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" - ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" - for cf_header in $cf_header_list - do - CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1) - test "$cf_cv_ncurses_h" != no && break - done -]) - -CF_NCURSES_HEADER -CF_TERM_HEADER - -# some applications need this, but should check for NCURSES_VERSION -AC_DEFINE(NCURSES) - -CF_NCURSES_VERSION -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_HEADER version: 2 updated: 2008/03/23 14:48:54 -dnl ----------------- -dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common -dnl variations of ncurses' installs. -dnl -dnl See also CF_CURSES_HEADER, which sets the same cache variable. -AC_DEFUN([CF_NCURSES_HEADER],[ - -if test "$cf_cv_ncurses_h" != no ; then - cf_cv_ncurses_header=$cf_cv_ncurses_h -else - -AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[ - test -n "$verbose" && echo - CF_HEADER_PATH(cf_search,$cf_ncuhdr_root) - test -n "$verbose" && echo search path $cf_search - cf_save2_CPPFLAGS="$CPPFLAGS" - for cf_incdir in $cf_search - do - CF_ADD_INCDIR($cf_incdir) - for cf_header in \ - ncurses.h \ - curses.h - do - CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1) - if test "$cf_cv_ncurses_h2" != no ; then - cf_cv_ncurses_h2=$cf_incdir/$cf_header - test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&AC_FD_MSG - break - fi - test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG - done - CPPFLAGS="$cf_save2_CPPFLAGS" - test "$cf_cv_ncurses_h2" != no && break - done - test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found) - ]) - - CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2) - cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` - if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then - cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header - fi - CF_ADD_INCDIR($cf_1st_incdir) - -fi - -# Set definitions to allow ifdef'ing for ncurses.h - -case $cf_cv_ncurses_header in # (vi -*ncurses.h) - AC_DEFINE(HAVE_NCURSES_H) - ;; -esac - -case $cf_cv_ncurses_header in # (vi -ncurses/curses.h|ncurses/ncurses.h) - AC_DEFINE(HAVE_NCURSES_NCURSES_H) - ;; -ncursesw/curses.h|ncursesw/ncurses.h) - AC_DEFINE(HAVE_NCURSESW_NCURSES_H) - ;; -esac - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_LIBS version: 16 updated: 2010/11/20 17:02:38 -dnl --------------- -dnl Look for the ncurses library. This is a little complicated on Linux, -dnl because it may be linked with the gpm (general purpose mouse) library. -dnl Some distributions have gpm linked with (bsd) curses, which makes it -dnl unusable with ncurses. However, we don't want to link with gpm unless -dnl ncurses has a dependency, since gpm is normally set up as a shared library, -dnl and the linker will record a dependency. -dnl -dnl The optional parameter gives the root name of the library, in case it is -dnl not installed as the default curses library. That is how the -dnl wide-character version of ncurses is installed. -AC_DEFUN([CF_NCURSES_LIBS], -[AC_REQUIRE([CF_NCURSES_CPPFLAGS]) - -cf_nculib_root=ifelse($1,,ncurses,$1) - # This works, except for the special case where we find gpm, but - # ncurses is in a nonstandard location via $LIBS, and we really want - # to link gpm. -cf_ncurses_LIBS="" -cf_ncurses_SAVE="$LIBS" -AC_CHECK_LIB(gpm,Gpm_Open, - [AC_CHECK_LIB(gpm,initscr, - [LIBS="$cf_ncurses_SAVE"], - [cf_ncurses_LIBS="-lgpm"])]) - -case $host_os in #(vi -freebsd*) - # This is only necessary if you are linking against an obsolete - # version of ncurses (but it should do no harm, since it's static). - if test "$cf_nculib_root" = ncurses ; then - AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"]) - fi - ;; -esac - -CF_ADD_LIBS($cf_ncurses_LIBS) - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - CF_ADD_LIBS(-l$cf_nculib_root) -else - CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root, - [#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr()], - initscr) -fi - -if test -n "$cf_ncurses_LIBS" ; then - AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS) - cf_ncurses_SAVE="$LIBS" - for p in $cf_ncurses_LIBS ; do - q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` - if test "$q" != "$LIBS" ; then - LIBS="$q" - fi - done - AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);], - [AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no) - LIBS="$cf_ncurses_SAVE"]) -fi - -CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root) -AC_DEFINE_UNQUOTED($cf_nculib_ROOT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_VERSION version: 13 updated: 2010/10/23 15:54:49 -dnl ------------------ -dnl Check for the version of ncurses, to aid in reporting bugs, etc. -dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use -dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi. -AC_DEFUN([CF_NCURSES_VERSION], -[ -AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl -AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[ - cf_cv_ncurses_version=no - cf_tempfile=out$$ - rm -f $cf_tempfile - AC_TRY_RUN([ -#include <${cf_cv_ncurses_header:-curses.h}> -#include -int main() -{ - FILE *fp = fopen("$cf_tempfile", "w"); -#ifdef NCURSES_VERSION -# ifdef NCURSES_VERSION_PATCH - fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); -# else - fprintf(fp, "%s\n", NCURSES_VERSION); -# endif -#else -# ifdef __NCURSES_H - fprintf(fp, "old\n"); -# else - make an error -# endif -#endif - ${cf_cv_main_return:-return}(0); -}],[ - cf_cv_ncurses_version=`cat $cf_tempfile`],,[ - - # This will not work if the preprocessor splits the line after the - # Autoconf token. The 'unproto' program does that. - cat > conftest.$ac_ext < -#undef Autoconf -#ifdef NCURSES_VERSION -Autoconf NCURSES_VERSION -#else -#ifdef __NCURSES_H -Autoconf "old" -#endif -; -#endif -EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out" - AC_TRY_EVAL(cf_try) - if test -f conftest.out ; then - cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%'` - test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" - rm -f conftest.out - fi -]) - rm -f $cf_tempfile -]) -test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NO_LEAKS_OPTION version: 4 updated: 2006/12/16 14:24:05 -dnl ------------------ -dnl see CF_WITH_NO_LEAKS -AC_DEFUN([CF_NO_LEAKS_OPTION],[ -AC_MSG_CHECKING(if you want to use $1 for testing) -AC_ARG_WITH($1, - [$2], - [AC_DEFINE($3)ifelse([$4],,[ - $4 -]) - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_$1=yes], - [with_$1=]) -AC_MSG_RESULT(${with_$1:-no}) - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - CF_ADD_CFLAGS([-g]) - ;; - esac - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NUMBER_SYNTAX version: 1 updated: 2003/09/20 18:12:49 -dnl ---------------- -dnl Check if the given variable is a number. If not, report an error. -dnl $1 is the variable -dnl $2 is the message -AC_DEFUN([CF_NUMBER_SYNTAX],[ -if test -n "$1" ; then - case $1 in #(vi - [[0-9]]*) #(vi - ;; - *) - AC_MSG_ERROR($2 is not a number: $1) - ;; - esac -else - AC_MSG_ERROR($2 value is empty) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_OBJ_SUBDIR version: 4 updated: 2002/02/23 20:38:31 -dnl ------------- -dnl Compute the object-directory name from the given model name -AC_DEFUN([CF_OBJ_SUBDIR], -[ - case $1 in - libtool) $2='obj_lo' ;; - normal) $2='objects' ;; - debug) $2='obj_g' ;; - profile) $2='obj_p' ;; - shared) - case $cf_cv_system_name in #(vi - cygwin) #(vi - $2='objects' ;; - *) - $2='obj_s' ;; - esac - esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PATHSEP version: 5 updated: 2010/05/26 05:38:42 -dnl ---------- -dnl Provide a value for the $PATH and similar separator -AC_DEFUN([CF_PATHSEP], -[ - case $cf_cv_system_name in - os2*) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac -ifelse([$1],,,[$1=$PATH_SEPARATOR]) - AC_SUBST(PATH_SEPARATOR) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PATH_SYNTAX version: 13 updated: 2010/05/26 05:38:42 -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],[ -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".[$]$1" in #(vi -.\[$]\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX - ;; -.\[$]{*prefix}*) #(vi - eval $1="[$]$1" - case ".[$]$1" in #(vi - .NONE/*) - $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PKG_CONFIG version: 4 updated: 2011/02/18 20:26:24 -dnl ------------- -dnl Check for the package-config program, unless disabled by command-line. -AC_DEFUN([CF_PKG_CONFIG], -[ -AC_MSG_CHECKING(if you want to use pkg-config) -AC_ARG_WITH(pkg-config, - [ --with-pkg-config{=path} enable/disable use of pkg-config], - [cf_pkg_config=$withval], - [cf_pkg_config=yes]) -AC_MSG_RESULT($cf_pkg_config) - -case $cf_pkg_config in #(vi -no) #(vi - PKG_CONFIG=none - ;; -yes) #(vi - AC_PATH_TOOL(PKG_CONFIG, pkg-config, none) - ;; -*) - PKG_CONFIG=$withval - ;; -esac - -test -z "$PKG_CONFIG" && PKG_CONFIG=none -if test "$PKG_CONFIG" != none ; then - CF_PATH_SYNTAX(PKG_CONFIG) -fi - -AC_SUBST(PKG_CONFIG) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42 -dnl ----------------- -dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. -dnl -dnl POSIX.1-1990 _POSIX_SOURCE -dnl POSIX.1-1990 and _POSIX_SOURCE and -dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 -dnl Bindings Option -dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L -dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L -dnl X/Open 2000 _POSIX_C_SOURCE=200112L -dnl -dnl Parameters: -dnl $1 is the nominal value for _POSIX_C_SOURCE -AC_DEFUN([CF_POSIX_C_SOURCE], -[ -cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) - -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" - -CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) -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 ],[ -#ifndef _POSIX_C_SOURCE -make an error -#endif], - [cf_cv_posix_c_source=no], - [cf_want_posix_source=no - case .$cf_POSIX_C_SOURCE in #(vi - .[[12]]??*) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - ;; - .2) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - cf_want_posix_source=yes - ;; - .*) - cf_want_posix_source=yes - ;; - esac - if test "$cf_want_posix_source" = yes ; then - AC_TRY_COMPILE([#include ],[ -#ifdef _POSIX_SOURCE -make an error -#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) - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" - CF_MSG_LOG(if the second compile does not leave our definition intact error) - AC_TRY_COMPILE([#include ],[ -#ifndef _POSIX_C_SOURCE -make an error -#endif],, - [cf_cv_posix_c_source=no]) - CFLAGS="$cf_save_CFLAGS" - CPPFLAGS="$cf_save_CPPFLAGS" - ]) -]) - -if test "$cf_cv_posix_c_source" != no ; then - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS" - CF_ADD_CFLAGS($cf_cv_posix_c_source) -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22 -dnl ---------- -dnl Check for archiver "ar". -AC_DEFUN([CF_PROG_AR],[ -AC_CHECK_TOOL(AR, ar, ar) -]) -dnl --------------------------------------------------------------------------- -dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59 -dnl ----------- -dnl Check for awk, ensure that the check found something. -AC_DEFUN([CF_PROG_AWK], -[ -AC_PROG_AWK -test -z "$AWK" && AC_MSG_ERROR(No awk program found) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_CC_C_O version: 3 updated: 2010/08/14 18:25:37 -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 -dnl be used later. The parameter is either CC or CXX. The result is the -dnl cache variable: -dnl $cf_cv_prog_CC_c_o -dnl $cf_cv_prog_CXX_c_o -AC_DEFUN([CF_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_MSG_CHECKING([whether [$]$1 understands -c and -o together]) -AC_CACHE_VAL(cf_cv_prog_$1_c_o, -[ -cat > conftest.$ac_ext < -int main() -{ - ${cf_cv_main_return:-return}(0); -} -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 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC' -if AC_TRY_EVAL(ac_try) && - test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try); -then - eval cf_cv_prog_$1_c_o=yes -else - eval cf_cv_prog_$1_c_o=no -fi -rm -rf conftest* -])dnl -if test $cf_cv_prog_$1_c_o = yes; then - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_EGREP version: 1 updated: 2006/09/16 11:40:59 -dnl ------------- -dnl AC_PROG_EGREP was introduced in autoconf 2.53. -dnl This macro adds a check to ensure the script found something. -AC_DEFUN([CF_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -test -z "$EGREP" && AC_MSG_ERROR(No egrep program found) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18 -dnl ----------- -dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX. -AC_DEFUN([CF_PROG_EXT], -[ -AC_REQUIRE([CF_CHECK_CACHE]) -case $cf_cv_system_name in -os2*) - CFLAGS="$CFLAGS -Zmt" - CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" - CXXFLAGS="$CXXFLAGS -Zmt" - # autoconf's macro sets -Zexe and suffix both, which conflict:w - LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" - ac_cv_exeext=.exe - ;; -esac - -AC_EXEEXT -AC_OBJEXT - -PROG_EXT="$EXEEXT" -AC_SUBST(PROG_EXT) -test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT") -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_GNAT version: 1 updated: 2010/06/19 15:22:18 -dnl ------------ -dnl Check for gnatmake, ensure that it is complete. -AC_DEFUN([CF_PROG_GNAT],[ -cf_ada_make=gnatmake -AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no) -if test "$ac_cv_prog_gnat_exists" = no; then - cf_ada_make= -else - CF_GNAT_VERSION - AC_CHECK_PROG(M4_exists, m4, yes, no) - if test "$ac_cv_prog_M4_exists" = no; then - cf_cv_prog_gnat_correct=no - echo Ada95 binding required program m4 not found. Ada95 binding disabled. - fi - if test "$cf_cv_prog_gnat_correct" = yes; then - AC_MSG_CHECKING(if GNAT works) - CF_GNAT_TRY_RUN([procedure conftest;], -[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_cv_prog_gnat_correct=yes],[cf_cv_prog_gnat_correct=no]) - AC_MSG_RESULT($cf_cv_prog_gnat_correct) - fi -fi - -AC_SUBST(cf_ada_make) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37 -dnl ------------ -dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f" -dnl option if it is supported. -AC_DEFUN([CF_PROG_LN_S],[ -AC_PROG_LN_S -AC_MSG_CHECKING(if $LN_S -f options work) - -rm -f conf$$.src conf$$dst -echo >conf$$.dst -echo first >conf$$.src -if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then - cf_prog_ln_sf=yes -else - cf_prog_ln_sf=no -fi -rm -f conf$$.dst conf$$src -AC_MSG_RESULT($cf_prog_ln_sf) - -test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 -dnl ---------------- -dnl Remove all -U and -D options that refer to the given symbol from a list -dnl of C compiler options. This works around the problem that not all -dnl compilers process -U and -D options from left-to-right, so a -U option -dnl cannot be used to cancel the effect of a preceding -D option. -dnl -dnl $1 = target (which could be the same as the source variable) -dnl $2 = source (including '$') -dnl $3 = symbol to remove -define([CF_REMOVE_DEFINE], -[ -$1=`echo "$2" | \ - sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ - -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52 -dnl ------------- -dnl Remove the given library from the symbol -dnl -dnl $1 = target (which could be the same as the source variable) -dnl $2 = source (including '$') -dnl $3 = library to remove -define([CF_REMOVE_LIB], -[ -# remove $3 library from $2 -$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SHARED_OPTS version: 64 updated: 2010/06/05 16:51:16 -dnl -------------- -dnl -------------- -dnl Attempt to determine the appropriate CC/LD options for creating a shared -dnl library. -dnl -dnl Note: ${LOCAL_LDFLAGS} is used to link executables that will run within the -dnl build-tree, i.e., by making use of the libraries that are compiled in ../lib -dnl We avoid compiling-in a ../lib path for the shared library since that can -dnl lead to unexpected results at runtime. -dnl ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared libraries -dnl are compiled in ../../lib -dnl -dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure -dnl to install symbolic links to the rel/abi versions of shared libraries. -dnl -dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi -dnl version when making symbolic links. -dnl -dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library -dnl version numbers are infix (ex: libncurses..dylib) or postfix -dnl (ex: libncurses.so.). -dnl -dnl Some loaders leave 'so_locations' lying around. It's nice to clean up. -AC_DEFUN([CF_SHARED_OPTS], -[ - AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) - AC_REQUIRE([CF_LD_RPATH_OPT]) - LOCAL_LDFLAGS= - LOCAL_LDFLAGS2= - LD_SHARED_OPTS= - INSTALL_LIB="-m 644" - - cf_cv_do_symlinks=no - cf_ld_rpath_opt= - test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" - - AC_MSG_CHECKING(if release/abi version should be used for shared libs) - AC_ARG_WITH(shlib-version, - [ --with-shlib-version=X Specify rel or abi version for shared libs], - [test -z "$withval" && withval=auto - case $withval in #(vi - yes) #(vi - cf_cv_shlib_version=auto - ;; - rel|abi|auto|no) #(vi - cf_cv_shlib_version=$withval - ;; - *) - AC_MSG_ERROR([option value must be one of: rel, abi, auto or no]) - ;; - esac - ],[cf_cv_shlib_version=auto]) - AC_MSG_RESULT($cf_cv_shlib_version) - - cf_cv_rm_so_locs=no - - # Some less-capable ports of gcc support only -fpic - CC_SHARED_OPTS= - if test "$GCC" = yes - then - AC_MSG_CHECKING(which $CC option to use) - cf_save_CFLAGS="$CFLAGS" - for CC_SHARED_OPTS in -fPIC -fpic '' - do - CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" - AC_TRY_COMPILE([#include ],[int x = 1],[break],[]) - done - AC_MSG_RESULT($CC_SHARED_OPTS) - CFLAGS="$cf_save_CFLAGS" - fi - - cf_cv_shlib_version_infix=no - - case $cf_cv_system_name in #(vi - aix[[56]]*) #(vi - if test "$GCC" = yes; then - CC_SHARED_OPTS= - MK_SHARED_LIB='$(CC) -shared' - fi - ;; - beos*) #(vi - MK_SHARED_LIB='${CC} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0' - ;; - cygwin*) #(vi - CC_SHARED_OPTS= - MK_SHARED_LIB='sh ../mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' - cf_cv_shlib_version=cygdll - cf_cv_shlib_version_infix=cygdll - cat >mk_shared_lib.sh <<-CF_EOF - #!/bin/sh - SHARED_LIB=\[$]1 - IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` - shift - cat <<-EOF - Linking shared library - ** SHARED_LIB \[$]SHARED_LIB - ** IMPORT_LIB \[$]IMPORT_LIB -EOF - exec \[$]* -shared -Wl,--out-implib=../lib/\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/\[$]{SHARED_LIB} -CF_EOF - chmod +x mk_shared_lib.sh - ;; - darwin*) #(vi - EXTRA_CFLAGS="-no-cpp-precomp" - CC_SHARED_OPTS="-dynamic" - MK_SHARED_LIB='${CC} ${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 - 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) - LDFLAGS=$cf_save_LDFLAGS]) - if test $cf_cv_ldflags_search_paths_first = yes; then - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - fi - ;; - hpux*) #(vi - # (tested with gcc 2.7.2 -- I don't have c89) - if test "$GCC" = yes; then - LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' - else - CC_SHARED_OPTS='+Z' - LD_SHARED_OPTS='-Wl,+b,${libdir}' - fi - MK_SHARED_LIB='${LD} +b ${libdir} -b -o $[@]' - # HP-UX shared libraries must be executable, and should be - # readonly to exploit a quirk in the memory manager. - INSTALL_LIB="-m 555" - ;; - irix*) #(vi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - # tested with IRIX 5.2 and 'cc'. - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $[@]` -o $[@]' - else - MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $[@]` -o $[@]' - fi - cf_cv_rm_so_locs=yes - ;; - linux*|gnu*|k*bsd*-gnu) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CF_SHARED_SONAME - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' - ;; - openbsd[[2-9]].*) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - CF_SHARED_SONAME - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' - ;; - nto-qnx*|openbsd*|freebsd[[12]].*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - MK_SHARED_LIB='${LD} -Bshareable -o $[@]' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - freebsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CF_SHARED_SONAME - MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $[@]` -o $[@]' - ;; - netbsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - if test "$cf_cv_shlib_version" = auto; then - if test -f /usr/libexec/ld.elf_so; then - cf_cv_shlib_version=abi - else - cf_cv_shlib_version=rel - fi - fi - CF_SHARED_SONAME - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]' - else - MK_SHARED_LIB='${LD} -shared -Bshareable -o $[@]' - fi - ;; - osf*|mls+*) #(vi - # tested with OSF/1 V3.2 and 'cc' - # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't - # link with shared libs). - MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`' - case $host_os in #(vi - osf4*) - MK_SHARED_LIB="${MK_SHARED_LIB} -msym" - ;; - esac - MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]' - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - cf_cv_rm_so_locs=yes - ;; - sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98 - # tested with osr5.0.5 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-belf -KPIC' - fi - MK_SHARED_LIB='${LD} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@' - if test "$cf_cv_enable_rpath" = yes ; then - # only way is to set LD_RUN_PATH but no switch for it - RUN_PATH=$libdir - fi - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - LINK_PROGS='LD_RUN_PATH=${libdir}' - LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' - ;; - sunos4*) #(vi - # tested with SunOS 4.1.1 and gcc 2.7.0 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -assert pure-text -o $[@]' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - solaris2*) #(vi - # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 - # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" - fi - CF_SHARED_SONAME - if test "$GCC" != yes; then - cf_save_CFLAGS="$CFLAGS" - for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O - do - CFLAGS="$cf_shared_opts $cf_save_CFLAGS" - AC_TRY_COMPILE([#include ],[printf("Hello\n");],[break]) - done - CFLAGS="$cf_save_CFLAGS" - CC_SHARED_OPTS=$cf_shared_opts - MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $[@]' - else - MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]' - fi - ;; - sysv5uw7*|unix_sv*) #(vi - # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -d y -G -o [$]@' - ;; - *) - CC_SHARED_OPTS='unknown' - MK_SHARED_LIB='echo unknown' - ;; - esac - - # This works if the last tokens in $MK_SHARED_LIB are the -o target. - case "$cf_cv_shlib_version" in #(vi - rel|abi) - case "$MK_SHARED_LIB" in #(vi - *'-o $[@]') #(vi - test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes - ;; - *) - AC_MSG_WARN(ignored --with-shlib-version) - ;; - esac - ;; - esac - - if test -n "$cf_ld_rpath_opt" ; then - MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}" - fi - - AC_SUBST(CC_SHARED_OPTS) - AC_SUBST(LD_RPATH_OPT) - AC_SUBST(LD_SHARED_OPTS) - AC_SUBST(MK_SHARED_LIB) - AC_SUBST(LINK_PROGS) - AC_SUBST(LINK_TESTS) - AC_SUBST(EXTRA_LDFLAGS) - AC_SUBST(LOCAL_LDFLAGS) - AC_SUBST(LOCAL_LDFLAGS2) - AC_SUBST(INSTALL_LIB) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43 -dnl ---------------- -dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for -dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar) -dnl option. -dnl -dnl $1 is the default that should be used for "$cf_cv_shlib_version". -dnl If missing, use "rel". -define([CF_SHARED_SONAME], -[ - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1) - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $[@]`' - fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_STRIP_G_OPT version: 3 updated: 2002/12/21 19:25:52 -dnl -------------- -dnl Remove "-g" option from the compiler options -AC_DEFUN([CF_STRIP_G_OPT], -[$1=`echo ${$1} | sed -e 's%-g %%' -e 's%-g$%%'`])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SUBDIR_PATH version: 6 updated: 2010/04/21 06:20:50 -dnl -------------- -dnl Construct a search-list for a nonstandard header/lib-file -dnl $1 = the variable to return as result -dnl $2 = the package name -dnl $3 = the subdirectory, e.g., bin, include or lib -AC_DEFUN([CF_SUBDIR_PATH], -[ -$1= - -CF_ADD_SUBDIR_PATH($1,$2,$3,/usr,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE) -CF_ADD_SUBDIR_PATH($1,$2,$3,/usr/local,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,/opt,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,[$]HOME,$prefix) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SUBST version: 4 updated: 2006/06/17 12:33:03 -dnl -------- -dnl Shorthand macro for substituting things that the user may override -dnl with an environment variable. -dnl -dnl $1 = long/descriptive name -dnl $2 = environment variable -dnl $3 = default value -AC_DEFUN([CF_SUBST], -[AC_CACHE_VAL(cf_cv_subst_$2,[ -AC_MSG_CHECKING(for $1 (symbol $2)) -CF_SUBST_IF([-z "[$]$2"], [$2], [$3]) -cf_cv_subst_$2=[$]$2 -AC_MSG_RESULT([$]$2) -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_TERM_HEADER version: 2 updated: 2010/10/23 15:54:49 -dnl -------------- -dnl Look for term.h, which is part of X/Open curses. It defines the interface -dnl to terminfo database. Usually it is in the same include-path as curses.h, -dnl but some packagers change this, breaking various applications. -AC_DEFUN([CF_TERM_HEADER],[ -AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[ -case ${cf_cv_ncurses_header} in #(vi -*/ncurses.h|*/ncursesw.h) #(vi - cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'` - ;; -*) - cf_term_header=term.h - ;; -esac - -for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" -do -AC_TRY_COMPILE([#include -#include <${cf_cv_ncurses_header:-curses.h}> -#include <$cf_test> -],[int x = auto_left_margin],[ - cf_cv_term_header="$cf_test"],[ - cf_cv_term_header=unknown - ]) - test "$cf_cv_term_header" != unknown && break -done -]) - -# Set definitions to allow ifdef'ing to accommodate subdirectories - -case $cf_cv_term_header in # (vi -*term.h) - AC_DEFINE(HAVE_TERM_H) - ;; -esac - -case $cf_cv_term_header in # (vi -ncurses/term.h) #(vi - AC_DEFINE(HAVE_NCURSES_TERM_H) - ;; -ncursesw/term.h) - AC_DEFINE(HAVE_NCURSESW_TERM_H) - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_TOP_BUILDDIR version: 1 updated: 2006/10/15 16:33:23 -dnl --------------- -dnl Define a top_builddir symbol, for applications that need an absolute path. -AC_DEFUN([CF_TOP_BUILDDIR], -[ -top_builddir=`pwd` -AC_SUBST(top_builddir) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 -dnl -------- -dnl Make an uppercase version of a variable -dnl $1=uppercase($2) -AC_DEFUN([CF_UPPER], -[ -$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_UTF8_LIB version: 7 updated: 2010/06/20 09:24:28 -dnl ----------- -dnl Check for multibyte support, and if not found, utf8 compatibility library -AC_DEFUN([CF_UTF8_LIB], -[ -AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ - cf_save_LIBS="$LIBS" - AC_TRY_LINK([ -#include ],[putwc(0,0);], - [cf_cv_utf8_lib=yes], - [CF_FIND_LINKAGE([ -#include ],[putwc(0,0);],utf8, - [cf_cv_utf8_lib=add-on], - [cf_cv_utf8_lib=no]) -])]) - -# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between -# ncurses/ncursesw: -if test "$cf_cv_utf8_lib" = "add-on" ; then - AC_DEFINE(HAVE_LIBUTF8_H) - CF_ADD_INCDIR($cf_cv_header_path_utf8) - CF_ADD_LIBDIR($cf_cv_library_path_utf8) - CF_ADD_LIBS($cf_cv_library_file_utf8) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 -dnl ---------- -dnl Use AC_VERBOSE w/o the warnings -AC_DEFUN([CF_VERBOSE], -[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG -CF_MSG_LOG([$1]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06 -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([ -#include ], -[ -#if defined(__GNUC__) -# if defined __USE_ISOC99 -# define _cat_pragma(exp) _Pragma(#exp) -# define _weak_pragma(exp) _cat_pragma(weak name) -# else -# define _weak_pragma(exp) -# endif -# define _declare(name) __extension__ extern __typeof__(name) name -# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) -#endif - -weak_symbol(fopen); -],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no]) -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58 -dnl -------------------- -dnl Command-line option to specify the Ada95 compiler. -AC_DEFUN([CF_WITH_ADA_COMPILER],[ -AC_MSG_CHECKING(for ada-compiler) -AC_ARG_WITH(ada-compiler, - [ --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)], - [cf_ada_compiler=$withval], - [cf_ada_compiler=gnatmake]) -AC_SUBST(cf_ada_compiler) -AC_MSG_RESULT($cf_ada_compiler) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58 -dnl ------------------- -dnl Command-line option to specify where Ada includes will install. -AC_DEFUN([CF_WITH_ADA_INCLUDE],[ -AC_MSG_CHECKING(for ada-include) -CF_WITH_PATH(ada-include, - [ --with-ada-include=DIR Ada includes are in DIR], - ADA_INCLUDE, - PREFIX/share/ada/adainclude, - [$]prefix/share/ada/adainclude) -AC_SUBST(ADA_INCLUDE) -AC_MSG_RESULT($ADA_INCLUDE) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58 -dnl ------------------- -dnl Command-line option to specify where Ada objects will install. -AC_DEFUN([CF_WITH_ADA_OBJECTS],[ -AC_MSG_CHECKING(for ada-objects) -CF_WITH_PATH(ada-objects, - [ --with-ada-objects=DIR Ada objects are in DIR], - ADA_OBJECTS, - PREFIX/lib/ada/adalib, - [$]prefix/lib/ada/adalib) -AC_SUBST(ADA_OBJECTS) -AC_MSG_RESULT($ADA_OBJECTS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_SHAREDLIB version: 2 updated: 2010/06/26 17:35:58 -dnl --------------------- -dnl Command-line option to specify if an Ada95 shared-library should be built, -dnl and optionally what its soname should be. -AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[ -AC_MSG_CHECKING(if an Ada95 shared-library should be built) -AC_ARG_WITH(ada-sharedlib, - [ --with-ada-sharedlib=XX build Ada95 shared-library], - [with_ada_sharedlib=$withval], - [with_ada_sharedlib=no]) -AC_MSG_RESULT($with_ada_sharedlib) - -ADA_SHAREDLIB='lib$(LIB_NAME).so.1' -MAKE_ADA_SHAREDLIB="#" - -if test "x$with_ada_sharedlib" != xno -then - MAKE_ADA_SHAREDLIB= - if test "x$with_ada_sharedlib" != xyes - then - ADA_SHAREDLIB="$with_ada_sharedlib" - fi -fi - -AC_SUBST(ADA_SHAREDLIB) -AC_SUBST(MAKE_ADA_SHAREDLIB) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_CURSES_DIR version: 3 updated: 2010/11/20 17:02:38 -dnl ------------------ -dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses -dnl libraries. -AC_DEFUN([CF_WITH_CURSES_DIR],[ - -AC_MSG_CHECKING(for specific curses-directory) -AC_ARG_WITH(curses-dir, - [ --with-curses-dir=DIR directory in which (n)curses is installed], - [cf_cv_curses_dir=$withval], - [cf_cv_curses_dir=no]) -AC_MSG_RESULT($cf_cv_curses_dir) - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - CF_PATH_SYNTAX(withval) - if test -d "$cf_cv_curses_dir" - then - CF_ADD_INCDIR($cf_cv_curses_dir/include) - CF_ADD_LIBDIR($cf_cv_curses_dir/lib) - fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_PATH version: 10 updated: 2010/10/23 15:44:18 -dnl ------------ -dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just -dnl defaulting to yes/no. -dnl -dnl $1 = option name -dnl $2 = help-text -dnl $3 = environment variable to set -dnl $4 = default value, shown in the help-message, must be a constant -dnl $5 = default value, if it's an expression & cannot be in the help-message -dnl -AC_DEFUN([CF_WITH_PATH], -[AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),, -ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl -if ifelse([$5],,true,[test -n "$5"]) ; then -CF_PATH_SYNTAX(withval) -fi -$3="$withval" -AC_SUBST($3)dnl -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_PTHREAD version: 3 updated: 2010/05/29 16:31:02 -dnl --------------- -dnl Check for POSIX thread library. -AC_DEFUN([CF_WITH_PTHREAD], -[ -AC_MSG_CHECKING(if you want to link with the pthread library) -AC_ARG_WITH(pthread, - [ --with-pthread use POSIX thread library], - [with_pthread=$withval], - [with_pthread=no]) -AC_MSG_RESULT($with_pthread) - -if test "$with_pthread" != no ; then - AC_CHECK_HEADER(pthread.h,[ - AC_DEFINE(HAVE_PTHREADS_H) - - AC_MSG_CHECKING(if we can link with the pthread library) - cf_save_LIBS="$LIBS" - CF_ADD_LIB(pthread) - AC_TRY_LINK([ -#include -],[ - int rc = pthread_create(0,0,0,0); -],[with_pthread=yes],[with_pthread=no]) - LIBS="$cf_save_LIBS" - AC_MSG_RESULT($with_pthread) - - if test "$with_pthread" = yes ; then - CF_ADD_LIB(pthread) - AC_DEFINE(HAVE_LIBPTHREADS) - else - AC_MSG_ERROR(Cannot link with pthread library) - fi - ]) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_XOPEN_SOURCE version: 35 updated: 2011/02/20 20:37:37 -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, -dnl without losing the common non-POSIX features. -dnl -dnl Parameters: -dnl $1 is the nominal value for _XOPEN_SOURCE -dnl $2 is the nominal value for _POSIX_C_SOURCE -AC_DEFUN([CF_XOPEN_SOURCE],[ - -cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) -cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) -cf_xopen_source= - -case $host_os in #(vi -aix[[456]]*) #(vi - cf_xopen_source="-D_ALL_SOURCE" - ;; -cygwin) #(vi - cf_XOPEN_SOURCE=600 - ;; -darwin[[0-8]].*) #(vi - cf_xopen_source="-D_APPLE_C_SOURCE" - ;; -darwin*) #(vi - cf_xopen_source="-D_DARWIN_C_SOURCE" - ;; -freebsd*|dragonfly*) #(vi - # 5.x headers associate - # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L - # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L - cf_POSIX_C_SOURCE=200112L - cf_XOPEN_SOURCE=600 - cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -hpux11*) #(vi - cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" - ;; -hpux*) #(vi - cf_xopen_source="-D_HPUX_SOURCE" - ;; -irix[[56]].*) #(vi - cf_xopen_source="-D_SGI_SOURCE" - ;; -linux*|gnu*|mint*|k*bsd*-gnu) #(vi - CF_GNU_SOURCE - ;; -mirbsd*) #(vi - # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks - ;; -netbsd*) #(vi - # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw - ;; -openbsd*) #(vi - # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw - ;; -osf[[45]]*) #(vi - cf_xopen_source="-D_OSF_SOURCE" - ;; -nto-qnx*) #(vi - cf_xopen_source="-D_QNX_SOURCE" - ;; -sco*) #(vi - # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer - ;; -solaris2.1[[0-9]]) #(vi - cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -solaris2.[[1-9]]) #(vi - cf_xopen_source="-D__EXTENSIONS__" - ;; -*) - AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ - AC_TRY_COMPILE([#include ],[ -#ifndef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - AC_TRY_COMPILE([#include ],[ -#ifdef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) - CPPFLAGS="$cf_save" - ]) -]) - if test "$cf_cv_xopen_source" != no ; then - CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) - CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) - cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" - CF_ADD_CFLAGS($cf_temp_xopen_source) - fi - CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) - ;; -esac - -if test -n "$cf_xopen_source" ; then - CF_ADD_CFLAGS($cf_xopen_source) -fi -]) diff --git a/deps/ncurses-5.9/Ada95/configure b/deps/ncurses-5.9/Ada95/configure deleted file mode 100755 index 4db6f1f..0000000 --- a/deps/ncurses-5.9/Ada95/configure +++ /dev/null @@ -1,12502 +0,0 @@ -#! /bin/sh -# From configure.in Revision: 1.30 . -# Guess values for system-dependent variables and create Makefiles. -# Generated by Autoconf 2.52.20101002. -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -cross_compiling=no -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -ac_unique_file="gen/gen.c" - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: should be removed in autoconf 3.0. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat < if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -EOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue - cd $ac_subdir - # A "../" for each directory in /$ac_subdir. - ac_dots=`echo $ac_subdir | - sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` - - case $srcdir in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_subdir ;; - *) # Relative path. - ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure.gnu; then - echo - $SHELL $ac_sub_srcdir/configure.gnu --help=recursive - elif test -f $ac_sub_srcdir/configure; then - echo - $SHELL $ac_sub_srcdir/configure --help=recursive - elif test -f $ac_sub_srcdir/configure.ac || - test -f $ac_sub_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\EOF - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -EOF - exit 0 -fi -exec 5>config.log -cat >&5 </dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -PATH = $PATH - -_ASUNAME -} >&5 - -cat >&5 <\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" - ac_sep=" " ;; - esac - # Get rid of the leading space. -done - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - echo >&5 - echo "## ----------------- ##" >&5 - echo "## Cache variables. ##" >&5 - echo "## ----------------- ##" >&5 - echo >&5 - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} >&5 - sed "/^$/d" confdefs.h >conftest.log - if test -s conftest.log; then - echo >&5 - echo "## ------------ ##" >&5 - echo "## confdefs.h. ##" >&5 - echo "## ------------ ##" >&5 - echo >&5 - cat conftest.log >&5 - fi - (echo; echo) >&5 - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" >&5 - echo "$as_me: exit $exit_status" >&5 - rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:884: 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" - fi -done - -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:895: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:903: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:919: 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:923: 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:929: 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:931: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:933: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. It doesn't matter if - # we pass some twice (in addition to the command line arguments). - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" - ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:952: 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:954: 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 - -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 - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac -echo "#! $SHELL" >conftest.sh -echo "exit 0" >>conftest.sh -chmod +x conftest.sh -if { (echo "$as_me:975: PATH=\".;.\"; conftest.sh") >&5 - (PATH=".;."; conftest.sh) 2>&5 - ac_status=$? - echo "$as_me:978: \$? = $ac_status" >&5 - (exit $ac_status); }; then - ac_path_separator=';' -else - ac_path_separator=: -fi -PATH_SEPARATOR="$ac_path_separator" -rm -f conftest.sh - -ac_config_headers="$ac_config_headers include/ncurses_cfg.h:include/ncurses_cfg.hin" - -top_builddir=`pwd` - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:1008: 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 -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -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:1018: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:1022: 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 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:1031: 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:1035: 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:1040: 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:1047: 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 -else - ac_cv_host_alias=$host_alias -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:1056: 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:1061: 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/'` -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:1069: 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 -else - ac_cv_target_alias=$target_alias -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:1078: 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:1083: 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/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - system_name="$host_os" -else - system_name="`(uname -s -r) 2>/dev/null`" - if test -z "$system_name" ; then - system_name="`(hostname) 2>/dev/null`" - fi -fi -test -n "$system_name" && cat >>confdefs.h <&6 -else - cf_cv_system_name="$system_name" -fi - -test -z "$system_name" && system_name="$cf_cv_system_name" -test -n "$cf_cv_system_name" && echo "$as_me:1114: 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:1118: 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:1120: 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 - -# 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:1128: WARNING: overriding system type to $withval" >&5 -echo "$as_me: WARNING: overriding system type to $withval" >&2;} - cf_cv_system_name=$withval -fi; - -### Save the given $CFLAGS to allow user-override. -cf_user_CFLAGS="$CFLAGS" - -### Default install-location - -echo "$as_me:1138: 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 - # non-vendor systems don't have a conflict - openbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu) - prefix=/usr - ;; - *) prefix=$ac_default_prefix - ;; - esac -fi -echo "$as_me:1150: result: $prefix" >&5 -echo "${ECHO_T}$prefix" >&6 - -if test "x$prefix" = "xNONE" ; then -echo "$as_me:1154: 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 \ - $includedir \ - $includedir/ncurses \ - $prefix/include \ - $prefix/include/ncurses \ - /usr/local/include \ - /usr/local/include/ncurses \ - /usr/include \ - /usr/include/ncurses -do - cf_dir=`eval echo $cf_symbol` - if test -f $cf_dir/curses.h ; then - if ( fgrep NCURSES_VERSION $cf_dir/curses.h 2>&1 >/dev/null ) ; then - includedir="$cf_symbol" - test -n "$verbose" && echo $ac_n " found " 1>&6 - break - fi - fi - test -n "$verbose" && echo " tested $cf_dir" 1>&6 -done -echo "$as_me:1177: result: $includedir" >&5 -echo "${ECHO_T}$includedir" >&6 -fi - -### Checks for programs. -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 -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:1191: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc" -echo "$as_me:1206: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1214: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1217: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:1226: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="gcc" -echo "$as_me:1241: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1249: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1252: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:1265: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}cc" -echo "$as_me:1280: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1288: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1291: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:1300: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="cc" -echo "$as_me:1315: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1323: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1326: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:1339: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no - 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 -if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue -fi -ac_cv_prog_CC="cc" -echo "$as_me:1359: found $ac_dir/$ac_word" >&5 -break -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1381: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1384: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - 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:1395: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$ac_prog" -echo "$as_me:1410: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1418: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1421: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -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:1434: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="$ac_prog" -echo "$as_me:1449: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1457: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1460: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - -test -z "$CC" && { { echo "$as_me:1472: 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:1477:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:1480: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:1483: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:1485: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:1488: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:1490: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:1493: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -#line 1497 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -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:1513: 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:1516: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:1519: \$? = $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 -# resort. -for ac_file in `ls a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1542: 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:1548: 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:1553: 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:1559: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1562: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:1569: 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;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:1577: 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:1584: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:1586: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:1589: checking for executable suffix" >&5 -echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 -if { (eval echo "$as_me:1591: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:1594: \$? = $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 -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:1610: 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:1616: 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:1622: 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 1628 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:1640: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1643: \$? = $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 - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1655: 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:1662: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:1666: 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 1672 "configure" -#include "confdefs.h" - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1687: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1690: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1693: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1696: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_compiler_gnu=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:1708: 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:1714: 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 1720 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1732: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1735: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1738: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1741: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:1751: 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 -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1778: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1781: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1784: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1787: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line 1799 "configure" -#include "confdefs.h" -#include -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1812: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1815: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1818: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1821: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 1831 "configure" -#include "confdefs.h" -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1843: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1846: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1849: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1852: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -rf conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -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 - -GCC_VERSION=none -if test "$GCC" = yes ; then - echo "$as_me:1882: 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/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" - test -z "$GCC_VERSION" && GCC_VERSION=unknown - echo "$as_me:1886: result: $GCC_VERSION" >&5 -echo "${ECHO_T}$GCC_VERSION" >&6 -fi - -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:1896: 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 - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 1917 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:1922: \"$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:1928: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 1951 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:1955: \"$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:1961: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:1998: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 2008 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:2013: \"$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:2019: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 2042 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:2046: \"$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:2052: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:2080: error: C preprocessor \"$CPP\" fails sanity check" >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} - { (exit 1); exit 1; }; } -fi - -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 - -if test $ac_cv_c_compiler_gnu = yes; then - echo "$as_me:2093: 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 2100 "configure" -#include "confdefs.h" -#include -int Autoconf = TIOCGETP; -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -rf conftest* - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -#line 2115 "configure" -#include "confdefs.h" -#include -int Autoconf = TCGETA; -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -rf conftest* - - fi -fi -echo "$as_me:2128: 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:2135: 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 -else - -cat > conftest.$ac_ext < -int main() -{ - ${cf_cv_main_return:-return}(0); -} -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 -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -if { (eval echo "$as_me:2151: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2154: \$? = $ac_status" >&5 - (exit $ac_status); } && - test -f conftest2.$ac_objext && { (eval echo "$as_me:2156: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2159: \$? = $ac_status" >&5 - (exit $ac_status); }; -then - eval cf_cv_prog_CC_c_o=yes -else - eval cf_cv_prog_CC_c_o=no -fi -rm -rf conftest* - -fi -if test $cf_cv_prog_CC_c_o = yes; then - echo "$as_me:2170: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:2173: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:2177: checking for POSIXized ISC" >&5 -echo $ECHO_N "checking for POSIXized ISC... $ECHO_C" >&6 -if test -d /etc/conf/kconfig.d && - grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 -then - echo "$as_me:2182: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - ISC=yes # If later tests want to check for ISC. - -cat >>confdefs.h <<\EOF -#define _POSIX_SOURCE 1 -EOF - - if test "$GCC" = yes; then - CC="$CC -posix" - else - CC="$CC -Xp" - fi -else - echo "$as_me:2196: result: no" >&5 -echo "${ECHO_T}no" >&6 - ISC= -fi - -echo "$as_me:2201: checking for ${CC:-cc} option to accept ANSI C" >&5 -echo $ECHO_N "checking for ${CC:-cc} option to accept ANSI C... $ECHO_C" >&6 -if test "${cf_cv_ansi_cc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ansi_cc=no -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) -for cf_arg in "-DCC_HAS_PROTOS" \ - "" \ - -qlanglvl=ansi \ - -std1 \ - -Ae \ - "-Aa -D_HPUX_SOURCE" \ - -Xc -do - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_arg -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - cat >conftest.$ac_ext <<_ACEOF -#line 2305 "configure" -#include "confdefs.h" - -#ifndef CC_HAS_PROTOS -#if !defined(__STDC__) || (__STDC__ != 1) -choke me -#endif -#endif - -int -main () -{ - - int test (int i, double x); - struct s1 {int (*f) (int a);}; - struct s2 {int (*f) (double a);}; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2326: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2329: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2332: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2335: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ansi_cc="$cf_arg"; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -CFLAGS="$cf_save_CFLAGS" -CPPFLAGS="$cf_save_CPPFLAGS" - -fi -echo "$as_me:2348: result: $cf_cv_ansi_cc" >&5 -echo "${ECHO_T}$cf_cv_ansi_cc" >&6 - -if test "$cf_cv_ansi_cc" != "no"; then -if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_cv_ansi_cc -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -else - cat >>confdefs.h <<\EOF -#define CC_HAS_PROTOS 1 -EOF - -fi -fi - -if test "$cf_cv_ansi_cc" = "no"; then - { { echo "$as_me:2441: error: Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto" >&5 -echo "$as_me: error: Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto" >&2;} - { (exit 1); exit 1; }; } -fi - -case $cf_cv_system_name in -os2*) - CFLAGS="$CFLAGS -Zmt" - CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" - CXXFLAGS="$CXXFLAGS -Zmt" - # autoconf's macro sets -Zexe and suffix both, which conflict:w - LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" - ac_cv_exeext=.exe - ;; -esac - -PROG_EXT="$EXEEXT" - -test -n "$PROG_EXT" && cat >>confdefs.h <conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - -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:2488: 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 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog" -echo "$as_me:2503: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:2511: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:2514: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -test -z "$AWK" && { { echo "$as_me:2521: error: No awk program found" >&5 -echo "$as_me: error: No awk program found" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:2525: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:2535: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - -test -z "$EGREP" && { { echo "$as_me:2539: error: No egrep program found" >&5 -echo "$as_me: error: No egrep program found" >&2;} - { (exit 1); exit 1; }; } - -# 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: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# 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:2555: 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 - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_IFS=$IFS; IFS=$ac_path_separator - for ac_dir in $PATH; do - IFS=$ac_save_IFS - # Account for people who put trailing slashes in PATH elements. - case $ac_dir/ in - / | ./ | .// | /cC/* \ - | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ - | /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if $as_executable_p "$ac_dir/$ac_prog"; then - if test $ac_prog = install && - grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:2604: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -echo "$as_me:2615: 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:2619: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:2622: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 -fi - -echo "$as_me:2626: 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 -echo >conf$$.dst -echo first >conf$$.src -if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then - cf_prog_ln_sf=yes -else - cf_prog_ln_sf=no -fi -rm -f conf$$.dst conf$$src -echo "$as_me:2638: 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:2643: 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 -else - ac_cv_sys_long_file_names=yes -# Test for long file names in all the places we know might matter: -# . the current directory, where building will happen -# $prefix/lib where we will be installing things -# $exec_prefix/lib likewise -# eval it to expand exec_prefix. -# $TMPDIR if set, where it might want to write temporary files -# if $TMPDIR is not set: -# /tmp where it might want to write temporary files -# /var/tmp likewise -# /usr/tmp likewise -if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then - ac_tmpdirs=$TMPDIR -else - ac_tmpdirs='/tmp /var/tmp /usr/tmp' -fi -for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do - test -d $ac_dir || continue - test -w $ac_dir || continue # It is less confusing to not echo anything here. - ac_xdir=$ac_dir/cf$$ - (umask 077 && mkdir $ac_xdir 2>/dev/null) || continue - ac_tf1=$ac_xdir/conftest9012345 - ac_tf2=$ac_xdir/conftest9012346 - (echo 1 >$ac_tf1) 2>/dev/null - (echo 2 >$ac_tf2) 2>/dev/null - ac_val=`cat $ac_tf1 2>/dev/null` - if test ! -f $ac_tf1 || test "$ac_val" != 1; then - ac_cv_sys_long_file_names=no - rm -rf $ac_xdir 2>/dev/null - break - fi - rm -rf $ac_xdir 2>/dev/null -done -fi -echo "$as_me:2682: 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 - -cat >>confdefs.h <<\EOF -#define HAVE_LONG_FILE_NAMES 1 -EOF - -fi - -# if we find pkg-config, check if we should install the ".pc" files. - -echo "$as_me:2694: 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. -if test "${with_pkg_config+set}" = set; then - withval="$with_pkg_config" - cf_pkg_config=$withval -else - cf_pkg_config=yes -fi; -echo "$as_me:2704: result: $cf_pkg_config" >&5 -echo "${ECHO_T}$cf_pkg_config" >&6 - -case $cf_pkg_config in #(vi -no) #(vi - PKG_CONFIG=none - ;; -yes) #(vi - 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:2715: 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 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:2732: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG - -if test -n "$PKG_CONFIG"; then - echo "$as_me:2743: result: $PKG_CONFIG" >&5 -echo "${ECHO_T}$PKG_CONFIG" >&6 -else - echo "$as_me:2746: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:2755: 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 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:2772: found $ac_dir/$ac_word" >&5 - break -fi -done - - test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="none" - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG - -if test -n "$ac_pt_PKG_CONFIG"; then - echo "$as_me:2784: result: $ac_pt_PKG_CONFIG" >&5 -echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 -else - echo "$as_me:2787: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - PKG_CONFIG=$ac_pt_PKG_CONFIG -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - - ;; -*) - PKG_CONFIG=$withval - ;; -esac - -test -z "$PKG_CONFIG" && PKG_CONFIG=none -if test "$PKG_CONFIG" != none ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$PKG_CONFIG" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval PKG_CONFIG="$PKG_CONFIG" - case ".$PKG_CONFIG" in #(vi - .NONE/*) - PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:2830: error: expected a pathname, not \"$PKG_CONFIG\"" >&5 -echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi - -if test "$PKG_CONFIG" != none ; then - echo "$as_me:2839: 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 - - # Leave this as something that can be overridden in the environment. - if test -z "$PKG_CONFIG_LIBDIR" ; then - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`/lib/pkgconfig - fi - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'` - if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then - -# Check whether --enable-pc-files or --disable-pc-files was given. -if test "${enable_pc_files+set}" = set; then - enableval="$enable_pc_files" - enable_pc_files=$enableval -else - enable_pc_files=no -fi; - echo "$as_me:2856: result: $enable_pc_files" >&5 -echo "${ECHO_T}$enable_pc_files" >&6 - else - echo "$as_me:2859: result: no" >&5 -echo "${ECHO_T}no" >&6 - { echo "$as_me:2861: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&5 -echo "$as_me: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&2;} - enable_pc_files=no - fi -fi - -echo "$as_me:2867: 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. -if test "${with_tests+set}" = set; then - withval="$with_tests" - cf_with_tests=$withval -else - cf_with_tests=yes -fi; -echo "$as_me:2877: result: $cf_with_tests" >&5 -echo "${ECHO_T}$cf_with_tests" >&6 - -echo "$as_me:2880: 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. -if test "${enable_mixed_case+set}" = set; then - enableval="$enable_mixed_case" - enable_mixedcase=$enableval -else - enable_mixedcase=auto -fi; -echo "$as_me:2890: result: $enable_mixedcase" >&5 -echo "${ECHO_T}$enable_mixedcase" >&6 -if test "$enable_mixedcase" = "auto" ; then - -echo "$as_me:2894: 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 -else - -if test "$cross_compiling" = yes ; then - case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi - cf_cv_mixedcase=no - ;; - *) - cf_cv_mixedcase=yes - ;; - esac -else - rm -f conftest CONFTEST - echo test >conftest - if test -f CONFTEST ; then - cf_cv_mixedcase=no - else - cf_cv_mixedcase=yes - fi - rm -f conftest CONFTEST -fi - -fi -echo "$as_me:2921: result: $cf_cv_mixedcase" >&5 -echo "${ECHO_T}$cf_cv_mixedcase" >&6 -test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF -#define MIXEDCASE_FILENAMES 1 -EOF - -else - cf_cv_mixedcase=$enable_mixedcase - if test "$enable_mixedcase" = "yes" ; then - cat >>confdefs.h <<\EOF -#define MIXEDCASE_FILENAMES 1 -EOF - - fi -fi - -# do this after mixed-case option (tags/TAGS is not as important as tic). -echo "$as_me:2938: 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 - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:2958: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:2962: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -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:2971: 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 -else - if test -n "$CTAGS"; then - ac_cv_prog_CTAGS="$CTAGS" # 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_CTAGS="$ac_prog" -echo "$as_me:2986: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CTAGS=$ac_cv_prog_CTAGS -if test -n "$CTAGS"; then - echo "$as_me:2994: result: $CTAGS" >&5 -echo "${ECHO_T}$CTAGS" >&6 -else - echo "$as_me:2997: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CTAGS" && break -done - -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:3008: 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 -else - if test -n "$ETAGS"; then - ac_cv_prog_ETAGS="$ETAGS" # 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_ETAGS="$ac_prog" -echo "$as_me:3023: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ETAGS=$ac_cv_prog_ETAGS -if test -n "$ETAGS"; then - echo "$as_me:3031: result: $ETAGS" >&5 -echo "${ECHO_T}$ETAGS" >&6 -else - echo "$as_me:3034: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ETAGS" && break -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:3043: 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 -else - if test -n "$MAKE_LOWER_TAGS"; then - ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # 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_MAKE_LOWER_TAGS="yes" -echo "$as_me:3058: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no" -fi -fi -MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS -if test -n "$MAKE_LOWER_TAGS"; then - echo "$as_me:3067: result: $MAKE_LOWER_TAGS" >&5 -echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 -else - echo "$as_me:3070: 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:3077: 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 -else - if test -n "$MAKE_UPPER_TAGS"; then - ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # 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_MAKE_UPPER_TAGS="yes" -echo "$as_me:3092: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no" -fi -fi -MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS -if test -n "$MAKE_UPPER_TAGS"; then - echo "$as_me:3101: result: $MAKE_UPPER_TAGS" >&5 -echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 -else - echo "$as_me:3104: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -else - MAKE_UPPER_TAGS=no -fi - -if test "$MAKE_UPPER_TAGS" = yes ; then - MAKE_UPPER_TAGS= -else - MAKE_UPPER_TAGS="#" -fi - -if test "$MAKE_LOWER_TAGS" = yes ; then - MAKE_LOWER_TAGS= -else - MAKE_LOWER_TAGS="#" -fi - -echo "$as_me:3124: 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 </dev/null | fgrep -v "ing directory" | sed -e 's,[ ]*$,,'` - case "$cf_result" in - .*k) - 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 "given option \"$cf_option\", no match \"$cf_result\"" - ;; - esac - done - rm -f cf_makeflags.tmp - -fi -echo "$as_me:3158: 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:3164: 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 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib" -echo "$as_me:3179: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:3187: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:3190: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:3199: 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 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_ac_ct_RANLIB="ranlib" -echo "$as_me:3214: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB="':'" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:3223: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:3226: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -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:3238: 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 -else - if test -n "$LD"; then - ac_cv_prog_LD="$LD" # 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_LD="${ac_tool_prefix}ld" -echo "$as_me:3253: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -LD=$ac_cv_prog_LD -if test -n "$LD"; then - echo "$as_me:3261: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:3264: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:3273: 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 -else - if test -n "$ac_ct_LD"; then - ac_cv_prog_ac_ct_LD="$ac_ct_LD" # 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_ac_ct_LD="ld" -echo "$as_me:3288: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_LD" && ac_cv_prog_ac_ct_LD="ld" -fi -fi -ac_ct_LD=$ac_cv_prog_ac_ct_LD -if test -n "$ac_ct_LD"; then - echo "$as_me:3297: result: $ac_ct_LD" >&5 -echo "${ECHO_T}$ac_ct_LD" >&6 -else - echo "$as_me:3300: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - LD=$ac_ct_LD -else - LD="$ac_cv_prog_LD" -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:3312: 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 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" -echo "$as_me:3327: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:3335: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:3338: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:3347: 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 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" -echo "$as_me:3362: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:3371: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:3374: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -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:3386: 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 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" -echo "$as_me:3401: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:3409: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:3412: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:3421: 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 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" -echo "$as_me:3436: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:3445: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:3448: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -fi - -echo "$as_me:3457: 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 -else - - cf_cv_ar_flags=unknown - for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv - do - - # check if $ARFLAGS already contains this choice - if test "x$ARFLAGS" != "x" ; then - cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` - if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then - cf_cv_ar_flags= - break - fi - fi - - rm -f conftest.$ac_cv_objext - rm -f conftest.a - - cat >conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3486: \$? = $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 - if test -f conftest.a ; then - cf_cv_ar_flags=$cf_ar_flags - break - fi - else - test -n "$verbose" && echo " cannot compile test-program" 1>&6 - -echo "${as_me:-configure}:3497: testing cannot compile test-program ..." 1>&5 - - break - fi - done - rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext - -fi -echo "$as_me:3505: result: $cf_cv_ar_flags" >&5 -echo "${ECHO_T}$cf_cv_ar_flags" >&6 - -if test -n "$ARFLAGS" ; then - if test -n "$cf_cv_ar_flags" ; then - ARFLAGS="$ARFLAGS $cf_cv_ar_flags" - fi -else - ARFLAGS=$cf_cv_ar_flags -fi - -echo "$as_me:3516: checking if you have specified an install-prefix" >&5 -echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6 - -# Check whether --with-install-prefix or --without-install-prefix was given. -if test "${with_install_prefix+set}" = set; then - withval="$with_install_prefix" - case "$withval" in #(vi - yes|no) #(vi - ;; - *) DESTDIR="$withval" - ;; - esac -fi; -echo "$as_me:3529: result: $DESTDIR" >&5 -echo "${ECHO_T}$DESTDIR" >&6 - -############################################################################### - -# If we're cross-compiling, allow the user to override the tools and their -# options. The configure script is oriented toward identifying the host -# compiler, etc., but we need a build compiler to generate parts of the source. - -if test "$cross_compiling" = yes ; then - - # defaults that we might want to override - : ${BUILD_CFLAGS:=''} - : ${BUILD_CPPFLAGS:=''} - : ${BUILD_LDFLAGS:=''} - : ${BUILD_LIBS:=''} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} - -# Check whether --with-build-cc or --without-build-cc was given. -if test "${with_build_cc+set}" = set; then - withval="$with_build_cc" - BUILD_CC="$withval" -else - for ac_prog in gcc cc cl -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:3557: 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 -else - if test -n "$BUILD_CC"; then - ac_cv_prog_BUILD_CC="$BUILD_CC" # 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_BUILD_CC="$ac_prog" -echo "$as_me:3572: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -BUILD_CC=$ac_cv_prog_BUILD_CC -if test -n "$BUILD_CC"; then - echo "$as_me:3580: result: $BUILD_CC" >&5 -echo "${ECHO_T}$BUILD_CC" >&6 -else - echo "$as_me:3583: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$BUILD_CC" && break -done - -fi; - echo "$as_me:3591: checking for native build C compiler" >&5 -echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6 - echo "$as_me:3593: result: $BUILD_CC" >&5 -echo "${ECHO_T}$BUILD_CC" >&6 - - echo "$as_me:3596: 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. -if test "${with_build_cpp+set}" = set; then - withval="$with_build_cpp" - BUILD_CPP="$withval" -else - BUILD_CPP='${BUILD_CC} -E' -fi; - echo "$as_me:3606: result: $BUILD_CPP" >&5 -echo "${ECHO_T}$BUILD_CPP" >&6 - - echo "$as_me:3609: 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. -if test "${with_build_cflags+set}" = set; then - withval="$with_build_cflags" - BUILD_CFLAGS="$withval" -fi; - echo "$as_me:3617: result: $BUILD_CFLAGS" >&5 -echo "${ECHO_T}$BUILD_CFLAGS" >&6 - - echo "$as_me:3620: 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. -if test "${with_build_cppflags+set}" = set; then - withval="$with_build_cppflags" - BUILD_CPPFLAGS="$withval" -fi; - echo "$as_me:3628: result: $BUILD_CPPFLAGS" >&5 -echo "${ECHO_T}$BUILD_CPPFLAGS" >&6 - - echo "$as_me:3631: 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. -if test "${with_build_ldflags+set}" = set; then - withval="$with_build_ldflags" - BUILD_LDFLAGS="$withval" -fi; - echo "$as_me:3639: result: $BUILD_LDFLAGS" >&5 -echo "${ECHO_T}$BUILD_LDFLAGS" >&6 - - echo "$as_me:3642: 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. -if test "${with_build_libs+set}" = set; then - withval="$with_build_libs" - BUILD_LIBS="$withval" -fi; - echo "$as_me:3650: result: $BUILD_LIBS" >&5 -echo "${ECHO_T}$BUILD_LIBS" >&6 - - # this assumes we're on Unix. - BUILD_EXEEXT= - BUILD_OBJEXT=o - - : ${BUILD_CC:='${CC}'} - - if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then - { { echo "$as_me:3660: 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;} - { (exit 1); exit 1; }; } - fi - -else - : ${BUILD_CC:='${CC}'} - : ${BUILD_CPP:='${CPP}'} - : ${BUILD_CFLAGS:='${CFLAGS}'} - : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} - : ${BUILD_LDFLAGS:='${LDFLAGS}'} - : ${BUILD_LIBS:='${LIBS}'} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} -fi - -############################################################################### - -### Options to allow the user to specify the set of libraries which are used. -### Use "--without-normal --with-shared" to allow the default model to be -### shared, for example. -cf_list_models="" - -echo "$as_me:3685: checking if you want to build shared C-objects" >&5 -echo $ECHO_N "checking if you want to build shared C-objects... $ECHO_C" >&6 - -# Check whether --with-shared or --without-shared was given. -if test "${with_shared+set}" = set; then - withval="$with_shared" - with_shared=$withval -else - with_shared=no -fi; -echo "$as_me:3695: result: $with_shared" >&5 -echo "${ECHO_T}$with_shared" >&6 -test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared" - -echo "$as_me:3699: checking for specified models" >&5 -echo $ECHO_N "checking for specified models... $ECHO_C" >&6 -test -z "$cf_list_models" && cf_list_models=normal -echo "$as_me:3702: 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:3707: 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:3710: result: $DFT_LWR_MODEL" >&5 -echo "${ECHO_T}$DFT_LWR_MODEL" >&6 - -DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -echo "$as_me:3715: checking for specific curses-directory" >&5 -echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6 - -# Check whether --with-curses-dir or --without-curses-dir was given. -if test "${with_curses_dir+set}" = set; then - withval="$with_curses_dir" - cf_cv_curses_dir=$withval -else - cf_cv_curses_dir=no -fi; -echo "$as_me:3725: result: $cf_cv_curses_dir" >&5 -echo "${ECHO_T}$cf_cv_curses_dir" >&6 - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$withval" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval withval="$withval" - case ".$withval" in #(vi - .NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:3756: error: expected a pathname, not \"$withval\"" >&5 -echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - - if test -d "$cf_cv_curses_dir" - then - -if test -n "$cf_cv_curses_dir/include" ; then - for cf_add_incdir in $cf_cv_curses_dir/include - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 3789 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3801: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3804: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3807: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3810: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:3827: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -if test -n "$cf_cv_curses_dir/lib" ; then - for cf_add_libdir in $cf_cv_curses_dir/lib - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:3861: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - fi -fi - -echo "$as_me:3872: 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. -if test "${enable_widec+set}" = set; then - enableval="$enable_widec" - with_widec=$enableval -else - with_widec=no -fi; -echo "$as_me:3882: result: $with_widec" >&5 -echo "${ECHO_T}$with_widec" >&6 -if test "$with_widec" = yes ; then - -echo "$as_me:3886: 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 -else - - cf_save_LIBS="$LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 3894 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:3907: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:3910: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:3913: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3916: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_utf8_lib=yes -else - echo "$as_me: failed program was:" >&5 -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. -cf_cv_header_path_utf8= -cf_cv_library_path_utf8= - -echo "${as_me:-configure}:3928: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 - -cf_save_LIBS="$LIBS" - -cat >conftest.$ac_ext <<_ACEOF -#line 3933 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:3946: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:3949: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:3952: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3955: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_find_linkage_utf8=yes - cf_cv_header_path_utf8=/usr/include - cf_cv_library_path_utf8=/usr/lib - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -LIBS="-lutf8 $cf_save_LIBS" - -cat >conftest.$ac_ext <<_ACEOF -#line 3969 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:3982: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:3985: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:3988: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3991: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_find_linkage_utf8=yes - cf_cv_header_path_utf8=/usr/include - cf_cv_library_path_utf8=/usr/lib - cf_cv_library_file_utf8="-lutf8" - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_find_linkage_utf8=no - LIBS="$cf_save_LIBS" - - test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 - -echo "${as_me:-configure}:4008: testing find linkage for utf8 library ..." 1>&5 - -echo "${as_me:-configure}:4010: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 - - cf_save_CPPFLAGS="$CPPFLAGS" - cf_test_CPPFLAGS="$CPPFLAGS" - -cf_search= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - -test "$cf_header_path" != "NONE" && \ -test -d "$cf_header_path" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" - test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" - test -d $cf_header_path/include/utf8 && cf_search="$cf_search $cf_header_path/include/utf8" - test -d $cf_header_path/include/utf8/include && cf_search="$cf_search $cf_header_path/include/utf8/include" - test -d $cf_header_path/utf8/include && cf_search="$cf_search $cf_header_path/utf8/include" - test -d $cf_header_path/utf8/include/utf8 && cf_search="$cf_search $cf_header_path/utf8/include/utf8" -} - - cf_header_path_list="$cf_header_path_list $cf_search" - ;; - esac - done -fi - -# add the variations for the package we are looking for - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr" - test -d /usr/include && cf_search="$cf_search /usr/include" - test -d /usr/include/utf8 && cf_search="$cf_search /usr/include/utf8" - test -d /usr/include/utf8/include && cf_search="$cf_search /usr/include/utf8/include" - test -d /usr/utf8/include && cf_search="$cf_search /usr/utf8/include" - test -d /usr/utf8/include/utf8 && cf_search="$cf_search /usr/utf8/include/utf8" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $prefix" - test -d $prefix/include && cf_search="$cf_search $prefix/include" - test -d $prefix/include/utf8 && cf_search="$cf_search $prefix/include/utf8" - test -d $prefix/include/utf8/include && cf_search="$cf_search $prefix/include/utf8/include" - test -d $prefix/utf8/include && cf_search="$cf_search $prefix/utf8/include" - test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr/local" - test -d /usr/local/include && cf_search="$cf_search /usr/local/include" - test -d /usr/local/include/utf8 && cf_search="$cf_search /usr/local/include/utf8" - test -d /usr/local/include/utf8/include && cf_search="$cf_search /usr/local/include/utf8/include" - test -d /usr/local/utf8/include && cf_search="$cf_search /usr/local/utf8/include" - test -d /usr/local/utf8/include/utf8 && cf_search="$cf_search /usr/local/utf8/include/utf8" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /opt" - test -d /opt/include && cf_search="$cf_search /opt/include" - test -d /opt/include/utf8 && cf_search="$cf_search /opt/include/utf8" - test -d /opt/include/utf8/include && cf_search="$cf_search /opt/include/utf8/include" - test -d /opt/utf8/include && cf_search="$cf_search /opt/utf8/include" - test -d /opt/utf8/include/utf8 && cf_search="$cf_search /opt/utf8/include/utf8" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under $HOME" - test -d $HOME/include && cf_search="$cf_search $HOME/include" - test -d $HOME/include/utf8 && cf_search="$cf_search $HOME/include/utf8" - test -d $HOME/include/utf8/include && cf_search="$cf_search $HOME/include/utf8/include" - test -d $HOME/utf8/include && cf_search="$cf_search $HOME/utf8/include" - test -d $HOME/utf8/include/utf8 && cf_search="$cf_search $HOME/utf8/include/utf8" -} - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && cf_search="$cf_search $includedir" - test -d $includedir/utf8 && cf_search="$cf_search $includedir/utf8" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && cf_search="$cf_search $oldincludedir" - test -d $oldincludedir/utf8 && cf_search="$cf_search $oldincludedir/utf8" -} - -cf_search="$cf_search $cf_header_path_list" - - for cf_cv_header_path_utf8 in $cf_search - do - 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}:4123: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 - - CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_utf8" - cat >conftest.$ac_ext <<_ACEOF -#line 4127 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4140: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4143: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4146: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4149: \$? = $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}:4154: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 - - cf_cv_find_linkage_utf8=maybe - cf_test_CPPFLAGS="$CPPFLAGS" - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - CPPFLAGS="$cf_save_CPPFLAGS" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - fi - done - - if test "$cf_cv_find_linkage_utf8" = maybe ; then - -echo "${as_me:-configure}:4172: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 - - cf_save_LIBS="$LIBS" - cf_save_LDFLAGS="$LDFLAGS" - - if test "$cf_cv_find_linkage_utf8" != yes ; then - -cf_search= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - -test "$cf_library_path" != "NONE" && \ -test -d "$cf_library_path" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" - test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" - test -d $cf_library_path/lib/utf8 && cf_search="$cf_search $cf_library_path/lib/utf8" - test -d $cf_library_path/lib/utf8/lib && cf_search="$cf_search $cf_library_path/lib/utf8/lib" - test -d $cf_library_path/utf8/lib && cf_search="$cf_search $cf_library_path/utf8/lib" - test -d $cf_library_path/utf8/lib/utf8 && cf_search="$cf_search $cf_library_path/utf8/lib/utf8" -} - - cf_library_path_list="$cf_library_path_list $cf_search" - ;; - esac - done -fi - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr" - test -d /usr/lib && cf_search="$cf_search /usr/lib" - test -d /usr/lib/utf8 && cf_search="$cf_search /usr/lib/utf8" - test -d /usr/lib/utf8/lib && cf_search="$cf_search /usr/lib/utf8/lib" - test -d /usr/utf8/lib && cf_search="$cf_search /usr/utf8/lib" - test -d /usr/utf8/lib/utf8 && cf_search="$cf_search /usr/utf8/lib/utf8" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $prefix" - test -d $prefix/lib && cf_search="$cf_search $prefix/lib" - test -d $prefix/lib/utf8 && cf_search="$cf_search $prefix/lib/utf8" - test -d $prefix/lib/utf8/lib && cf_search="$cf_search $prefix/lib/utf8/lib" - test -d $prefix/utf8/lib && cf_search="$cf_search $prefix/utf8/lib" - test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr/local" - test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib" - test -d /usr/local/lib/utf8 && cf_search="$cf_search /usr/local/lib/utf8" - test -d /usr/local/lib/utf8/lib && cf_search="$cf_search /usr/local/lib/utf8/lib" - test -d /usr/local/utf8/lib && cf_search="$cf_search /usr/local/utf8/lib" - test -d /usr/local/utf8/lib/utf8 && cf_search="$cf_search /usr/local/utf8/lib/utf8" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /opt" - test -d /opt/lib && cf_search="$cf_search /opt/lib" - test -d /opt/lib/utf8 && cf_search="$cf_search /opt/lib/utf8" - test -d /opt/lib/utf8/lib && cf_search="$cf_search /opt/lib/utf8/lib" - test -d /opt/utf8/lib && cf_search="$cf_search /opt/utf8/lib" - test -d /opt/utf8/lib/utf8 && cf_search="$cf_search /opt/utf8/lib/utf8" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under $HOME" - test -d $HOME/lib && cf_search="$cf_search $HOME/lib" - test -d $HOME/lib/utf8 && cf_search="$cf_search $HOME/lib/utf8" - test -d $HOME/lib/utf8/lib && cf_search="$cf_search $HOME/lib/utf8/lib" - test -d $HOME/utf8/lib && cf_search="$cf_search $HOME/utf8/lib" - test -d $HOME/utf8/lib/utf8 && cf_search="$cf_search $HOME/utf8/lib/utf8" -} - -cf_search="$cf_library_path_list $cf_search" - - for cf_cv_library_path_utf8 in $cf_search - do - 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}:4269: 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 4275 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4288: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4291: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4294: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4297: \$? = $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}:4302: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 - - cf_cv_find_linkage_utf8=yes - cf_cv_library_file_utf8="-lutf8" - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - LDFLAGS="$cf_save_LDFLAGS" - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - fi - done - CPPFLAGS="$cf_save_CPPFLAGS" - LDFLAGS="$cf_save_LDFLAGS" - fi - - else - cf_cv_find_linkage_utf8=no - fi - -fi -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_LIBS" - -if test "$cf_cv_find_linkage_utf8" = yes ; then -cf_cv_utf8_lib=add-on -else -cf_cv_utf8_lib=no -fi - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:4344: 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 -# ncurses/ncursesw: -if test "$cf_cv_utf8_lib" = "add-on" ; then - cat >>confdefs.h <<\EOF -#define HAVE_LIBUTF8_H 1 -EOF - -if test -n "$cf_cv_header_path_utf8" ; then - for cf_add_incdir in $cf_cv_header_path_utf8 - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 4378 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4390: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4393: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4396: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4399: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:4416: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -if test -n "$cf_cv_library_path_utf8" ; then - for cf_add_libdir in $cf_cv_library_path_utf8 - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:4450: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - LIBS="$cf_cv_library_file_utf8 $LIBS" -fi - -cf_ncuconfig_root=ncursesw - -echo "Looking for ${cf_ncuconfig_root}-config" -for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config -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:4468: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_NCURSES_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $NCURSES_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_dir/$ac_word" - echo "$as_me:4485: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -NCURSES_CONFIG=$ac_cv_path_NCURSES_CONFIG - -if test -n "$NCURSES_CONFIG"; then - echo "$as_me:4496: result: $NCURSES_CONFIG" >&5 -echo "${ECHO_T}$NCURSES_CONFIG" >&6 -else - echo "$as_me:4499: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$NCURSES_CONFIG" && break -done -test -n "$NCURSES_CONFIG" || NCURSES_CONFIG="none" - -if test "$NCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`" -LIBS="`$NCURSES_CONFIG --libs` $LIBS" - -# even with config script, some packages use no-override for curses.h - -echo "$as_me:4514: checking if we have identified curses headers" >&5 -echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 -if test "${cf_cv_ncurses_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ncurses_header=none -for cf_header in \ - ncursesw/curses.h \ - ncursesw/ncurses.h \ - curses.h \ - ncurses.h -do -cat >conftest.$ac_ext <<_ACEOF -#line 4528 "configure" -#include "confdefs.h" -#include <${cf_header}> -int -main () -{ -initscr(); tgoto("?", 0,0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4540: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4543: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4546: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4549: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_header=$cf_header; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:4560: result: $cf_cv_ncurses_header" >&5 -echo "${ECHO_T}$cf_cv_ncurses_header" >&6 - -if test "$cf_cv_ncurses_header" = none ; then - { { echo "$as_me:4564: error: No curses header-files found" >&5 -echo "$as_me: error: No curses header-files found" >&2;} - { (exit 1); exit 1; }; } -fi - -# cheat, to get the right #define's for HAVE_NCURSES_H, etc. - -for ac_header in $cf_cv_ncurses_header -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:4574: 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 4580 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:4584: \"$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:4590: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4609: 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 <>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <conftest.$ac_ext <<_ACEOF -#line 4662 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4674: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4677: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4680: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4683: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:4700: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -} - -echo "$as_me:4717: checking for $cf_ncuhdr_root header in include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" - ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" - for cf_header in $cf_header_list - do - - cat >conftest.$ac_ext <<_ACEOF -#line 4729 "configure" -#include "confdefs.h" - -#define _XOPEN_SOURCE_EXTENDED -#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ -#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -#ifndef WACS_BSSB - make an error -#endif - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4761: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4764: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4767: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4770: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - test "$cf_cv_ncurses_h" != no && break - done - -fi -echo "$as_me:4785: result: $cf_cv_ncurses_h" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h" >&6 - -if test "$cf_cv_ncurses_h" != no ; then - cf_cv_ncurses_header=$cf_cv_ncurses_h -else - -echo "$as_me:4792: checking for $cf_ncuhdr_root include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h2+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - test -n "$verbose" && echo - -cf_search= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - -test "$cf_header_path" != "NONE" && \ -test -d "$cf_header_path" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" - test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" - test -d $cf_header_path/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" - test -d $cf_header_path/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - - cf_header_path_list="$cf_header_path_list $cf_search" - ;; - esac - done -fi - -# add the variations for the package we are looking for - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr" - test -d /usr/include && cf_search="$cf_search /usr/include" - test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root" - test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $prefix" - test -d $prefix/include && cf_search="$cf_search $prefix/include" - test -d $prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" - test -d $prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr/local" - test -d /usr/local/include && cf_search="$cf_search /usr/local/include" - test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root" - test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /opt" - test -d /opt/include && cf_search="$cf_search /opt/include" - test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root" - test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under $HOME" - test -d $HOME/include && cf_search="$cf_search $HOME/include" - test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root" - test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && cf_search="$cf_search $includedir" - test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && cf_search="$cf_search $oldincludedir" - test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" -} - -cf_search="$cf_search $cf_header_path_list" - - test -n "$verbose" && echo search path $cf_search - cf_save2_CPPFLAGS="$CPPFLAGS" - for cf_incdir in $cf_search - do - -if test -n "$cf_incdir" ; then - for cf_add_incdir in $cf_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 4932 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4944: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4947: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4950: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4953: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:4970: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - - for cf_header in \ - ncurses.h \ - curses.h - do - - cat >conftest.$ac_ext <<_ACEOF -#line 4991 "configure" -#include "confdefs.h" - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5015: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5018: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5021: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5024: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h2=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h2=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - if test "$cf_cv_ncurses_h2" != no ; then - cf_cv_ncurses_h2=$cf_incdir/$cf_header - test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 - break - fi - test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 - done - CPPFLAGS="$cf_save2_CPPFLAGS" - test "$cf_cv_ncurses_h2" != no && break - done - test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:5045: error: not found" >&5 -echo "$as_me: error: not found" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:5050: result: $cf_cv_ncurses_h2" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 - - cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'` - cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` - if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then - cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header - fi - -if test -n "$cf_1st_incdir" ; then - for cf_add_incdir in $cf_1st_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 5083 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5095: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5098: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5101: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5104: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:5121: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -fi - -# Set definitions to allow ifdef'ing for ncurses.h - -case $cf_cv_ncurses_header in # (vi -*ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_H 1 -EOF - - ;; -esac - -case $cf_cv_ncurses_header in # (vi -ncurses/curses.h|ncurses/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_NCURSES_H 1 -EOF - - ;; -ncursesw/curses.h|ncursesw/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_NCURSES_H 1 -EOF - - ;; -esac - -echo "$as_me:5164: checking for terminfo header" >&5 -echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 -if test "${cf_cv_term_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -case ${cf_cv_ncurses_header} in #(vi -*/ncurses.h|*/ncursesw.h) #(vi - cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` - ;; -*) - cf_term_header=term.h - ;; -esac - -for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" -do -cat >conftest.$ac_ext <<_ACEOF -#line 5182 "configure" -#include "confdefs.h" -#include -#include <${cf_cv_ncurses_header:-curses.h}> -#include <$cf_test> - -int -main () -{ -int x = auto_left_margin - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5197: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5200: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5203: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5206: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_term_header="$cf_test" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_term_header=unknown - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - test "$cf_cv_term_header" != unknown && break -done - -fi -echo "$as_me:5222: result: $cf_cv_term_header" >&5 -echo "${ECHO_T}$cf_cv_term_header" >&6 - -# Set definitions to allow ifdef'ing to accommodate subdirectories - -case $cf_cv_term_header in # (vi -*term.h) - cat >>confdefs.h <<\EOF -#define HAVE_TERM_H 1 -EOF - - ;; -esac - -case $cf_cv_term_header in # (vi -ncurses/term.h) #(vi - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_TERM_H 1 -EOF - - ;; -ncursesw/term.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_TERM_H 1 -EOF - - ;; -esac - -# some applications need this, but should check for NCURSES_VERSION -cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -echo "$as_me:5256: checking for ncurses version" >&5 -echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 -if test "${cf_cv_ncurses_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_cv_ncurses_version=no - cf_tempfile=out$$ - rm -f $cf_tempfile - if test "$cross_compiling" = yes; then - - # This will not work if the preprocessor splits the line after the - # Autoconf token. The 'unproto' program does that. - cat > conftest.$ac_ext < -#undef Autoconf -#ifdef NCURSES_VERSION -Autoconf NCURSES_VERSION -#else -#ifdef __NCURSES_H -Autoconf "old" -#endif -; -#endif -EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" - { (eval echo "$as_me:5282: \"$cf_try\"") >&5 - (eval $cf_try) 2>&5 - ac_status=$? - echo "$as_me:5285: \$? = $ac_status" >&5 - (exit $ac_status); } - if test -f conftest.out ; then - cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` - test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" - rm -f conftest.out - fi - -else - cat >conftest.$ac_ext <<_ACEOF -#line 5295 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include -int main() -{ - FILE *fp = fopen("$cf_tempfile", "w"); -#ifdef NCURSES_VERSION -# ifdef NCURSES_VERSION_PATCH - fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); -# else - fprintf(fp, "%s\n", NCURSES_VERSION); -# endif -#else -# ifdef __NCURSES_H - fprintf(fp, "old\n"); -# else - make an error -# endif -#endif - ${cf_cv_main_return:-return}(0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:5320: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5323: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:5325: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5328: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_ncurses_version=`cat $cf_tempfile` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - rm -f $cf_tempfile - -fi -echo "$as_me:5342: result: $cf_cv_ncurses_version" >&5 -echo "${ECHO_T}$cf_cv_ncurses_version" >&6 -test "$cf_cv_ncurses_version" = no || cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_root=ncursesw - # This works, except for the special case where we find gpm, but - # ncurses is in a nonstandard location via $LIBS, and we really want - # to link gpm. -cf_ncurses_LIBS="" -cf_ncurses_SAVE="$LIBS" -echo "$as_me:5354: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5362 "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 Gpm_Open (); -int -main () -{ -Gpm_Open (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5381: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5384: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5387: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5390: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_Gpm_Open=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_Gpm_Open=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5401: 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 - echo "$as_me:5404: checking for initscr in -lgpm" >&5 -echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 -if test "${ac_cv_lib_gpm_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5412 "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 initscr (); -int -main () -{ -initscr (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5431: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5434: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5437: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5440: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5451: result: $ac_cv_lib_gpm_initscr" >&5 -echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 -if test $ac_cv_lib_gpm_initscr = yes; then - LIBS="$cf_ncurses_SAVE" -else - cf_ncurses_LIBS="-lgpm" -fi - -fi - -case $host_os in #(vi -freebsd*) - # This is only necessary if you are linking against an obsolete - # version of ncurses (but it should do no harm, since it's static). - if test "$cf_nculib_root" = ncurses ; then - echo "$as_me:5466: checking for tgoto in -lmytinfo" >&5 -echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 -if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmytinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5474 "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 tgoto (); -int -main () -{ -tgoto (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5493: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5496: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5499: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5502: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_mytinfo_tgoto=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_mytinfo_tgoto=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5513: result: $ac_cv_lib_mytinfo_tgoto" >&5 -echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 -if test $ac_cv_lib_mytinfo_tgoto = yes; then - cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" -fi - - fi - ;; -esac - -LIBS="$cf_ncurses_LIBS $LIBS" - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - LIBS="-l$cf_nculib_root $LIBS" -else - - eval 'cf_cv_have_lib_'$cf_nculib_root'=no' - cf_libdir="" - echo "$as_me:5532: checking for initscr" >&5 -echo $ECHO_N "checking for initscr... $ECHO_C" >&6 -if test "${ac_cv_func_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 5538 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char initscr (); below. */ -#include -/* 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 initscr (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_initscr) || defined (__stub___initscr) -choke me -#else -f = initscr; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5569: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5572: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5575: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5578: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:5588: result: $ac_cv_func_initscr" >&5 -echo "${ECHO_T}$ac_cv_func_initscr" >&6 -if test $ac_cv_func_initscr = yes; then - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' -else - - cf_save_LIBS="$LIBS" - echo "$as_me:5595: checking for initscr in -l$cf_nculib_root" >&5 -echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 - LIBS="-l$cf_nculib_root $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 5599 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5611: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5614: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5617: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5620: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:5622: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:5629: result: no" >&5 -echo "${ECHO_T}no" >&6 - -cf_search= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - -test "$cf_library_path" != "NONE" && \ -test -d "$cf_library_path" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" - test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" - test -d $cf_library_path/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" - test -d $cf_library_path/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" -} - - cf_library_path_list="$cf_library_path_list $cf_search" - ;; - esac - done -fi - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr" - test -d /usr/lib && cf_search="$cf_search /usr/lib" - test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root" - test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $prefix" - test -d $prefix/lib && cf_search="$cf_search $prefix/lib" - test -d $prefix/lib/$cf_nculib_root && cf_search="$cf_search $prefix/lib/$cf_nculib_root" - test -d $prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib && cf_search="$cf_search $prefix/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr/local" - test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib" - test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root" - test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /opt" - test -d /opt/lib && cf_search="$cf_search /opt/lib" - test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root" - test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under $HOME" - test -d $HOME/lib && cf_search="$cf_search $HOME/lib" - test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root" - test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root" -} - -cf_search="$cf_library_path_list $cf_search" - - for cf_libdir in $cf_search - do - echo "$as_me:5719: checking for -l$cf_nculib_root in $cf_libdir" >&5 -echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 - LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 5723 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5735: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5738: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5741: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5744: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:5746: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:5753: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_save_LIBS" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi - -eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root - -if test $cf_found_library = no ; then - { { echo "$as_me:5768: error: Cannot link $cf_nculib_root library" >&5 -echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - -if test -n "$cf_ncurses_LIBS" ; then - echo "$as_me:5776: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 -echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 - cf_ncurses_SAVE="$LIBS" - for p in $cf_ncurses_LIBS ; do - q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` - if test "$q" != "$LIBS" ; then - LIBS="$q" - fi - done - cat >conftest.$ac_ext <<_ACEOF -#line 5786 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5798: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5801: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5804: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5807: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:5809: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:5814: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_ncurses_SAVE" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_NCURSES_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $NCURSES_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_dir/$ac_word" - echo "$as_me:5855: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -NCURSES_CONFIG=$ac_cv_path_NCURSES_CONFIG - -if test -n "$NCURSES_CONFIG"; then - echo "$as_me:5866: result: $NCURSES_CONFIG" >&5 -echo "${ECHO_T}$NCURSES_CONFIG" >&6 -else - echo "$as_me:5869: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$NCURSES_CONFIG" && break -done -test -n "$NCURSES_CONFIG" || NCURSES_CONFIG="none" - -if test "$NCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`" -LIBS="`$NCURSES_CONFIG --libs` $LIBS" - -# even with config script, some packages use no-override for curses.h - -echo "$as_me:5884: checking if we have identified curses headers" >&5 -echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 -if test "${cf_cv_ncurses_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ncurses_header=none -for cf_header in \ - ncurses/curses.h \ - ncurses/ncurses.h \ - curses.h \ - ncurses.h -do -cat >conftest.$ac_ext <<_ACEOF -#line 5898 "configure" -#include "confdefs.h" -#include <${cf_header}> -int -main () -{ -initscr(); tgoto("?", 0,0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5910: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5913: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5916: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5919: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_header=$cf_header; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:5930: result: $cf_cv_ncurses_header" >&5 -echo "${ECHO_T}$cf_cv_ncurses_header" >&6 - -if test "$cf_cv_ncurses_header" = none ; then - { { echo "$as_me:5934: error: No curses header-files found" >&5 -echo "$as_me: error: No curses header-files found" >&2;} - { (exit 1); exit 1; }; } -fi - -# cheat, to get the right #define's for HAVE_NCURSES_H, etc. - -for ac_header in $cf_cv_ncurses_header -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:5944: 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 5950 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:5954: \"$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:5960: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:5979: 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 <>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <conftest.$ac_ext <<_ACEOF -#line 6032 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6044: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6047: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6050: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6053: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:6070: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -} - -echo "$as_me:6087: checking for $cf_ncuhdr_root header in include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" - ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" - for cf_header in $cf_header_list - do - - cat >conftest.$ac_ext <<_ACEOF -#line 6099 "configure" -#include "confdefs.h" - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6123: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6126: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6129: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6132: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - test "$cf_cv_ncurses_h" != no && break - done - -fi -echo "$as_me:6147: result: $cf_cv_ncurses_h" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h" >&6 - -if test "$cf_cv_ncurses_h" != no ; then - cf_cv_ncurses_header=$cf_cv_ncurses_h -else - -echo "$as_me:6154: checking for $cf_ncuhdr_root include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h2+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - test -n "$verbose" && echo - -cf_search= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - -test "$cf_header_path" != "NONE" && \ -test -d "$cf_header_path" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" - test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" - test -d $cf_header_path/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" - test -d $cf_header_path/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - - cf_header_path_list="$cf_header_path_list $cf_search" - ;; - esac - done -fi - -# add the variations for the package we are looking for - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr" - test -d /usr/include && cf_search="$cf_search /usr/include" - test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root" - test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $prefix" - test -d $prefix/include && cf_search="$cf_search $prefix/include" - test -d $prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" - test -d $prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr/local" - test -d /usr/local/include && cf_search="$cf_search /usr/local/include" - test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root" - test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /opt" - test -d /opt/include && cf_search="$cf_search /opt/include" - test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root" - test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under $HOME" - test -d $HOME/include && cf_search="$cf_search $HOME/include" - test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root" - test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && cf_search="$cf_search $includedir" - test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && cf_search="$cf_search $oldincludedir" - test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" -} - -cf_search="$cf_search $cf_header_path_list" - - test -n "$verbose" && echo search path $cf_search - cf_save2_CPPFLAGS="$CPPFLAGS" - for cf_incdir in $cf_search - do - -if test -n "$cf_incdir" ; then - for cf_add_incdir in $cf_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 6294 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6306: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6309: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6312: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6315: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:6332: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - - for cf_header in \ - ncurses.h \ - curses.h - do - - cat >conftest.$ac_ext <<_ACEOF -#line 6353 "configure" -#include "confdefs.h" - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6377: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6380: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6383: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6386: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h2=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h2=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - if test "$cf_cv_ncurses_h2" != no ; then - cf_cv_ncurses_h2=$cf_incdir/$cf_header - test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 - break - fi - test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 - done - CPPFLAGS="$cf_save2_CPPFLAGS" - test "$cf_cv_ncurses_h2" != no && break - done - test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:6407: error: not found" >&5 -echo "$as_me: error: not found" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:6412: result: $cf_cv_ncurses_h2" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 - - cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'` - cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` - if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then - cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header - fi - -if test -n "$cf_1st_incdir" ; then - for cf_add_incdir in $cf_1st_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 6445 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6457: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6460: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6463: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6466: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:6483: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -fi - -# Set definitions to allow ifdef'ing for ncurses.h - -case $cf_cv_ncurses_header in # (vi -*ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_H 1 -EOF - - ;; -esac - -case $cf_cv_ncurses_header in # (vi -ncurses/curses.h|ncurses/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_NCURSES_H 1 -EOF - - ;; -ncursesw/curses.h|ncursesw/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_NCURSES_H 1 -EOF - - ;; -esac - -echo "$as_me:6526: checking for terminfo header" >&5 -echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 -if test "${cf_cv_term_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -case ${cf_cv_ncurses_header} in #(vi -*/ncurses.h|*/ncursesw.h) #(vi - cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` - ;; -*) - cf_term_header=term.h - ;; -esac - -for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" -do -cat >conftest.$ac_ext <<_ACEOF -#line 6544 "configure" -#include "confdefs.h" -#include -#include <${cf_cv_ncurses_header:-curses.h}> -#include <$cf_test> - -int -main () -{ -int x = auto_left_margin - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6559: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6562: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6565: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6568: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_term_header="$cf_test" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_term_header=unknown - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - test "$cf_cv_term_header" != unknown && break -done - -fi -echo "$as_me:6584: result: $cf_cv_term_header" >&5 -echo "${ECHO_T}$cf_cv_term_header" >&6 - -# Set definitions to allow ifdef'ing to accommodate subdirectories - -case $cf_cv_term_header in # (vi -*term.h) - cat >>confdefs.h <<\EOF -#define HAVE_TERM_H 1 -EOF - - ;; -esac - -case $cf_cv_term_header in # (vi -ncurses/term.h) #(vi - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_TERM_H 1 -EOF - - ;; -ncursesw/term.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_TERM_H 1 -EOF - - ;; -esac - -# some applications need this, but should check for NCURSES_VERSION -cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -echo "$as_me:6618: checking for ncurses version" >&5 -echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 -if test "${cf_cv_ncurses_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_cv_ncurses_version=no - cf_tempfile=out$$ - rm -f $cf_tempfile - if test "$cross_compiling" = yes; then - - # This will not work if the preprocessor splits the line after the - # Autoconf token. The 'unproto' program does that. - cat > conftest.$ac_ext < -#undef Autoconf -#ifdef NCURSES_VERSION -Autoconf NCURSES_VERSION -#else -#ifdef __NCURSES_H -Autoconf "old" -#endif -; -#endif -EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" - { (eval echo "$as_me:6644: \"$cf_try\"") >&5 - (eval $cf_try) 2>&5 - ac_status=$? - echo "$as_me:6647: \$? = $ac_status" >&5 - (exit $ac_status); } - if test -f conftest.out ; then - cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` - test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" - rm -f conftest.out - fi - -else - cat >conftest.$ac_ext <<_ACEOF -#line 6657 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include -int main() -{ - FILE *fp = fopen("$cf_tempfile", "w"); -#ifdef NCURSES_VERSION -# ifdef NCURSES_VERSION_PATCH - fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); -# else - fprintf(fp, "%s\n", NCURSES_VERSION); -# endif -#else -# ifdef __NCURSES_H - fprintf(fp, "old\n"); -# else - make an error -# endif -#endif - ${cf_cv_main_return:-return}(0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:6682: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6685: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:6687: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6690: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_ncurses_version=`cat $cf_tempfile` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - rm -f $cf_tempfile - -fi -echo "$as_me:6704: result: $cf_cv_ncurses_version" >&5 -echo "${ECHO_T}$cf_cv_ncurses_version" >&6 -test "$cf_cv_ncurses_version" = no || cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_root=ncurses - # This works, except for the special case where we find gpm, but - # ncurses is in a nonstandard location via $LIBS, and we really want - # to link gpm. -cf_ncurses_LIBS="" -cf_ncurses_SAVE="$LIBS" -echo "$as_me:6716: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 6724 "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 Gpm_Open (); -int -main () -{ -Gpm_Open (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6743: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6746: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6749: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6752: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_Gpm_Open=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_Gpm_Open=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:6763: 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 - echo "$as_me:6766: checking for initscr in -lgpm" >&5 -echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 -if test "${ac_cv_lib_gpm_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 6774 "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 initscr (); -int -main () -{ -initscr (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6793: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6796: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6799: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6802: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:6813: result: $ac_cv_lib_gpm_initscr" >&5 -echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 -if test $ac_cv_lib_gpm_initscr = yes; then - LIBS="$cf_ncurses_SAVE" -else - cf_ncurses_LIBS="-lgpm" -fi - -fi - -case $host_os in #(vi -freebsd*) - # This is only necessary if you are linking against an obsolete - # version of ncurses (but it should do no harm, since it's static). - if test "$cf_nculib_root" = ncurses ; then - echo "$as_me:6828: checking for tgoto in -lmytinfo" >&5 -echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 -if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmytinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 6836 "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 tgoto (); -int -main () -{ -tgoto (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6855: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6858: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6861: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6864: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_mytinfo_tgoto=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_mytinfo_tgoto=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:6875: result: $ac_cv_lib_mytinfo_tgoto" >&5 -echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 -if test $ac_cv_lib_mytinfo_tgoto = yes; then - cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" -fi - - fi - ;; -esac - -LIBS="$cf_ncurses_LIBS $LIBS" - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - LIBS="-l$cf_nculib_root $LIBS" -else - - eval 'cf_cv_have_lib_'$cf_nculib_root'=no' - cf_libdir="" - echo "$as_me:6894: checking for initscr" >&5 -echo $ECHO_N "checking for initscr... $ECHO_C" >&6 -if test "${ac_cv_func_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 6900 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char initscr (); below. */ -#include -/* 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 initscr (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_initscr) || defined (__stub___initscr) -choke me -#else -f = initscr; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6931: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6934: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6937: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6940: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:6950: result: $ac_cv_func_initscr" >&5 -echo "${ECHO_T}$ac_cv_func_initscr" >&6 -if test $ac_cv_func_initscr = yes; then - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' -else - - cf_save_LIBS="$LIBS" - echo "$as_me:6957: checking for initscr in -l$cf_nculib_root" >&5 -echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 - LIBS="-l$cf_nculib_root $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 6961 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6973: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6976: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6979: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6982: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:6984: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:6991: result: no" >&5 -echo "${ECHO_T}no" >&6 - -cf_search= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - -test "$cf_library_path" != "NONE" && \ -test -d "$cf_library_path" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" - test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" - test -d $cf_library_path/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" - test -d $cf_library_path/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" -} - - cf_library_path_list="$cf_library_path_list $cf_search" - ;; - esac - done -fi - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr" - test -d /usr/lib && cf_search="$cf_search /usr/lib" - test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root" - test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $prefix" - test -d $prefix/lib && cf_search="$cf_search $prefix/lib" - test -d $prefix/lib/$cf_nculib_root && cf_search="$cf_search $prefix/lib/$cf_nculib_root" - test -d $prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib && cf_search="$cf_search $prefix/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr/local" - test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib" - test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root" - test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /opt" - test -d /opt/lib && cf_search="$cf_search /opt/lib" - test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root" - test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under $HOME" - test -d $HOME/lib && cf_search="$cf_search $HOME/lib" - test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root" - test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root" -} - -cf_search="$cf_library_path_list $cf_search" - - for cf_libdir in $cf_search - do - echo "$as_me:7081: checking for -l$cf_nculib_root in $cf_libdir" >&5 -echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 - LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 7085 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7097: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7100: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7103: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7106: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:7108: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:7115: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_save_LIBS" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi - -eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root - -if test $cf_found_library = no ; then - { { echo "$as_me:7130: error: Cannot link $cf_nculib_root library" >&5 -echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - -if test -n "$cf_ncurses_LIBS" ; then - echo "$as_me:7138: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 -echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 - cf_ncurses_SAVE="$LIBS" - for p in $cf_ncurses_LIBS ; do - q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` - if test "$q" != "$LIBS" ; then - LIBS="$q" - fi - done - cat >conftest.$ac_ext <<_ACEOF -#line 7148 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7160: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7163: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7166: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7169: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:7171: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:7176: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_ncurses_SAVE" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <conftest.$ac_ext < -AUTOCONF_$cf_name NCURSES_VERSION_$cf_name -CF_EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out" - { (eval echo "$as_me:7213: \"$cf_try\"") >&5 - (eval $cf_try) 2>&5 - ac_status=$? - echo "$as_me:7216: \$? = $ac_status" >&5 - (exit $ac_status); } - if test -f conftest.out ; then - cf_result=`cat conftest.out | sed -e "s/^.*AUTOCONF_$cf_name[ ][ ]*//"` - eval NCURSES_$cf_name=\"$cf_result\" - # cat conftest.$ac_ext - # cat conftest.out - fi -done - -cf_cv_abi_version=${NCURSES_MAJOR} - -fi - -cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} - -cf_cv_timestamp=`date` - -echo "$as_me:7234: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5 -echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&6 - - case $cf_cv_system_name in #(vi - OS/2*|os2*) #(vi - LIB_PREFIX='' - ;; - *) LIB_PREFIX='lib' - ;; - esac -cf_prefix=$LIB_PREFIX - -LIB_PREFIX=$cf_prefix - -LIB_SUFFIX= - -############################################################################### - -if test X"$CC_G_OPT" = X"" ; then - CC_G_OPT='-g' - test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT='' -fi - -echo "$as_me:7257: checking for default loader flags" >&5 -echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6 -case $DFT_LWR_MODEL in -normal) LD_MODEL='' ;; -debug) LD_MODEL=$CC_G_OPT ;; -profile) LD_MODEL='-pg';; -shared) LD_MODEL='' ;; -esac -echo "$as_me:7265: result: $LD_MODEL" >&5 -echo "${ECHO_T}$LD_MODEL" >&6 - -LD_RPATH_OPT= -echo "$as_me:7269: checking for an rpath option" >&5 -echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 -case $cf_cv_system_name in #(vi -irix*) #(vi - if test "$GCC" = yes; then - LD_RPATH_OPT="-Wl,-rpath," - else - LD_RPATH_OPT="-rpath " - fi - ;; -linux*|gnu*|k*bsd*-gnu) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -openbsd[2-9].*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -freebsd*) #(vi - LD_RPATH_OPT="-rpath " - ;; -netbsd*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -osf*|mls+*) #(vi - LD_RPATH_OPT="-rpath " - ;; -solaris2*) #(vi - LD_RPATH_OPT="-R" - ;; -*) - ;; -esac -echo "$as_me:7300: result: $LD_RPATH_OPT" >&5 -echo "${ECHO_T}$LD_RPATH_OPT" >&6 - -case "x$LD_RPATH_OPT" in #(vi -x-R*) - echo "$as_me:7305: 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" - LIBS="${LD_RPATH_OPT}$libdir $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 7310 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7322: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7325: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7328: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7331: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_rpath_space=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_rpath_space=yes -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$cf_save_LIBS" - echo "$as_me:7341: result: $cf_rpath_space" >&5 -echo "${ECHO_T}$cf_rpath_space" >&6 - test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " - ;; -esac - - LOCAL_LDFLAGS= - LOCAL_LDFLAGS2= - LD_SHARED_OPTS= - INSTALL_LIB="-m 644" - - cf_cv_do_symlinks=no - cf_ld_rpath_opt= - test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" - - echo "$as_me:7356: checking if release/abi version should be used for shared libs" >&5 -echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6 - -# Check whether --with-shlib-version or --without-shlib-version was given. -if test "${with_shlib_version+set}" = set; then - withval="$with_shlib_version" - test -z "$withval" && withval=auto - case $withval in #(vi - yes) #(vi - cf_cv_shlib_version=auto - ;; - rel|abi|auto|no) #(vi - cf_cv_shlib_version=$withval - ;; - *) - { { echo "$as_me:7371: error: option value must be one of: rel, abi, auto or no" >&5 -echo "$as_me: error: option value must be one of: rel, abi, auto or no" >&2;} - { (exit 1); exit 1; }; } - ;; - esac - -else - cf_cv_shlib_version=auto -fi; - echo "$as_me:7380: result: $cf_cv_shlib_version" >&5 -echo "${ECHO_T}$cf_cv_shlib_version" >&6 - - cf_cv_rm_so_locs=no - - # Some less-capable ports of gcc support only -fpic - CC_SHARED_OPTS= - if test "$GCC" = yes - then - echo "$as_me:7389: 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 7396 "configure" -#include "confdefs.h" -#include -int -main () -{ -int x = 1 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7408: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7411: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7414: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7417: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done - echo "$as_me:7426: result: $CC_SHARED_OPTS" >&5 -echo "${ECHO_T}$CC_SHARED_OPTS" >&6 - CFLAGS="$cf_save_CFLAGS" - fi - - cf_cv_shlib_version_infix=no - - case $cf_cv_system_name in #(vi - aix[56]*) #(vi - if test "$GCC" = yes; then - CC_SHARED_OPTS= - MK_SHARED_LIB='$(CC) -shared' - fi - ;; - beos*) #(vi - MK_SHARED_LIB='${CC} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0' - ;; - cygwin*) #(vi - CC_SHARED_OPTS= - MK_SHARED_LIB='sh ../mk_shared_lib.sh $@ ${CC} ${CFLAGS}' - cf_cv_shlib_version=cygdll - cf_cv_shlib_version_infix=cygdll - cat >mk_shared_lib.sh <<-CF_EOF - #!/bin/sh - SHARED_LIB=\$1 - IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` - shift - cat <<-EOF - Linking shared library - ** SHARED_LIB \$SHARED_LIB - ** IMPORT_LIB \$IMPORT_LIB -EOF - exec \$* -shared -Wl,--out-implib=../lib/\${IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/\${SHARED_LIB} -CF_EOF - chmod +x mk_shared_lib.sh - ;; - darwin*) #(vi - EXTRA_CFLAGS="-no-cpp-precomp" - CC_SHARED_OPTS="-dynamic" - MK_SHARED_LIB='${CC} ${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:7468: 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 -else - - cf_save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - cat >conftest.$ac_ext <<_ACEOF -#line 7477 "configure" -#include "confdefs.h" - -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7489: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7492: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7495: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7498: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ldflags_search_paths_first=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ldflags_search_paths_first=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$cf_save_LDFLAGS -fi -echo "$as_me:7509: 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" - fi - ;; - hpux*) #(vi - # (tested with gcc 2.7.2 -- I don't have c89) - if test "$GCC" = yes; then - LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' - else - CC_SHARED_OPTS='+Z' - LD_SHARED_OPTS='-Wl,+b,${libdir}' - fi - MK_SHARED_LIB='${LD} +b ${libdir} -b -o $@' - # HP-UX shared libraries must be executable, and should be - # readonly to exploit a quirk in the memory manager. - INSTALL_LIB="-m 555" - ;; - irix*) #(vi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - # tested with IRIX 5.2 and 'cc'. - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $@` -o $@' - else - MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $@` -o $@' - fi - cf_cv_rm_so_locs=yes - ;; - linux*|gnu*|k*bsd*-gnu) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' - ;; - openbsd[2-9].*) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' - ;; - nto-qnx*|openbsd*|freebsd[12].*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - MK_SHARED_LIB='${LD} -Bshareable -o $@' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - freebsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $@` -o $@' - ;; - netbsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - if test "$cf_cv_shlib_version" = auto; then - if test -f /usr/libexec/ld.elf_so; then - cf_cv_shlib_version=abi - else - cf_cv_shlib_version=rel - fi - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@' - else - MK_SHARED_LIB='${LD} -shared -Bshareable -o $@' - fi - ;; - osf*|mls+*) #(vi - # tested with OSF/1 V3.2 and 'cc' - # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't - # link with shared libs). - MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`' - case $host_os in #(vi - osf4*) - MK_SHARED_LIB="${MK_SHARED_LIB} -msym" - ;; - esac - MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@' - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - cf_cv_rm_so_locs=yes - ;; - sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98 - # tested with osr5.0.5 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-belf -KPIC' - fi - MK_SHARED_LIB='${LD} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@' - if test "$cf_cv_enable_rpath" = yes ; then - # only way is to set LD_RUN_PATH but no switch for it - RUN_PATH=$libdir - fi - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - LINK_PROGS='LD_RUN_PATH=${libdir}' - LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' - ;; - sunos4*) #(vi - # tested with SunOS 4.1.1 and gcc 2.7.0 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -assert pure-text -o $@' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - solaris2*) #(vi - # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 - # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - if test "$GCC" != yes; then - cf_save_CFLAGS="$CFLAGS" - for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O - do - CFLAGS="$cf_shared_opts $cf_save_CFLAGS" - cat >conftest.$ac_ext <<_ACEOF -#line 7689 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello\n"); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7701: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7704: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7707: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7710: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done - CFLAGS="$cf_save_CFLAGS" - CC_SHARED_OPTS=$cf_shared_opts - MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $@' - else - MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $@' - fi - ;; - sysv5uw7*|unix_sv*) #(vi - # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -d y -G -o $@' - ;; - *) - CC_SHARED_OPTS='unknown' - MK_SHARED_LIB='echo unknown' - ;; - esac - - # This works if the last tokens in $MK_SHARED_LIB are the -o target. - case "$cf_cv_shlib_version" in #(vi - rel|abi) - case "$MK_SHARED_LIB" in #(vi - *'-o $@') #(vi - test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes - ;; - *) - { echo "$as_me:7747: WARNING: ignored --with-shlib-version" >&5 -echo "$as_me: WARNING: ignored --with-shlib-version" >&2;} - ;; - esac - ;; - esac - - if test -n "$cf_ld_rpath_opt" ; then - MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}" - fi - -# The test/sample programs in the original tree link using rpath option. -# Make it optional for packagers. -if test -n "$LOCAL_LDFLAGS" -then - echo "$as_me:7762: checking if you want to link sample programs with rpath option" >&5 -echo $ECHO_N "checking if you want to link sample programs with rpath option... $ECHO_C" >&6 - -# Check whether --enable-rpath-link or --disable-rpath-link was given. -if test "${enable_rpath_link+set}" = set; then - enableval="$enable_rpath_link" - with_rpath_link=$enableval -else - with_rpath_link=yes -fi; - echo "$as_me:7772: result: $with_rpath_link" >&5 -echo "${ECHO_T}$with_rpath_link" >&6 - if test "$with_rpath_link" = no - then - LOCAL_LDFLAGS= - LOCAL_LDFLAGS2= - fi -fi - -############################################################################### - - case $cf_cv_system_name in - os2*) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac - -### use option --enable-broken-linker to force on use of broken-linker support -echo "$as_me:7789: 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. -if test "${enable_broken_linker+set}" = set; then - enableval="$enable_broken_linker" - with_broken_linker=$enableval -else - with_broken_linker=${BROKEN_LINKER:-no} -fi; -echo "$as_me:7799: result: $with_broken_linker" >&5 -echo "${ECHO_T}$with_broken_linker" >&6 - -BROKEN_LINKER=0 -if test "$with_broken_linker" = yes ; then - cat >>confdefs.h <<\EOF -#define BROKEN_LINKER 1 -EOF - - BROKEN_LINKER=1 -elif test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - cat >>confdefs.h <<\EOF -#define BROKEN_LINKER 1 -EOF - - BROKEN_LINKER=1 - test -n "$verbose" && echo " cygwin linker is broken anyway" 1>&6 - -echo "${as_me:-configure}:7819: testing cygwin linker is broken anyway ..." 1>&5 - - ;; - esac -fi - -# Check to define _XOPEN_SOURCE "automatically" - -cf_XOPEN_SOURCE=500 -cf_POSIX_C_SOURCE=199506L -cf_xopen_source= - -case $host_os in #(vi -aix[456]*) #(vi - cf_xopen_source="-D_ALL_SOURCE" - ;; -cygwin) #(vi - cf_XOPEN_SOURCE=600 - ;; -darwin[0-8].*) #(vi - cf_xopen_source="-D_APPLE_C_SOURCE" - ;; -darwin*) #(vi - cf_xopen_source="-D_DARWIN_C_SOURCE" - ;; -freebsd*|dragonfly*) #(vi - # 5.x headers associate - # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L - # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L - cf_POSIX_C_SOURCE=200112L - cf_XOPEN_SOURCE=600 - cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -hpux11*) #(vi - cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" - ;; -hpux*) #(vi - cf_xopen_source="-D_HPUX_SOURCE" - ;; -irix[56].*) #(vi - cf_xopen_source="-D_SGI_SOURCE" - ;; -linux*|gnu*|mint*|k*bsd*-gnu) #(vi - -echo "$as_me:7863: 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 7870 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7885: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7888: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7891: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7894: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_gnu_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - cat >conftest.$ac_ext <<_ACEOF -#line 7903 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7918: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7921: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7924: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7927: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_gnu_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_gnu_source=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS="$cf_save" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:7942: result: $cf_cv_gnu_source" >&5 -echo "${ECHO_T}$cf_cv_gnu_source" >&6 -test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - - ;; -mirbsd*) #(vi - # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks - ;; -netbsd*) #(vi - # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw - ;; -openbsd*) #(vi - # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw - ;; -osf[45]*) #(vi - cf_xopen_source="-D_OSF_SOURCE" - ;; -nto-qnx*) #(vi - cf_xopen_source="-D_QNX_SOURCE" - ;; -sco*) #(vi - # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer - ;; -solaris2.1[0-9]) #(vi - cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -solaris2.[1-9]) #(vi - cf_xopen_source="-D__EXTENSIONS__" - ;; -*) - echo "$as_me:7972: 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 7979 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7994: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7997: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8000: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8003: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xopen_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - cat >conftest.$ac_ext <<_ACEOF -#line 8012 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8027: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8030: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8033: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8036: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xopen_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_xopen_source=$cf_XOPEN_SOURCE -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS="$cf_save" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:8051: result: $cf_cv_xopen_source" >&5 -echo "${ECHO_T}$cf_cv_xopen_source" >&6 - if test "$cf_cv_xopen_source" != no ; then - -CFLAGS=`echo "$CFLAGS" | \ - sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` - -CPPFLAGS=`echo "$CPPFLAGS" | \ - sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` - - cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_temp_xopen_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - fi - -cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE - -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" - -cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ - sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` - -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:8158: 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}:8164: testing if the symbol is already defined go no further ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 8167 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _POSIX_C_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8182: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8185: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8188: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8191: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_posix_c_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_want_posix_source=no - case .$cf_POSIX_C_SOURCE in #(vi - .[12]??*) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - ;; - .2) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - cf_want_posix_source=yes - ;; - .*) - cf_want_posix_source=yes - ;; - esac - if test "$cf_want_posix_source" = yes ; then - cat >conftest.$ac_ext <<_ACEOF -#line 8212 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _POSIX_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8227: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8230: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8233: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8236: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" -fi -rm -f conftest.$ac_objext conftest.$ac_ext - fi - -echo "${as_me:-configure}:8247: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 - - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" - -echo "${as_me:-configure}:8252: testing if the second compile does not leave our definition intact error ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 8255 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _POSIX_C_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8270: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8273: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8276: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8279: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_posix_c_source=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cf_save_CFLAGS" - CPPFLAGS="$cf_save_CPPFLAGS" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:8295: 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 - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_cv_posix_c_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -fi - - ;; -esac - -if test -n "$cf_xopen_source" ; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_xopen_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -fi - -# Check whether --enable-largefile or --disable-largefile was given. -if test "${enable_largefile+set}" = set; then - enableval="$enable_largefile" - -fi; -if test "$enable_largefile" != no; then - - echo "$as_me:8474: 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 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # 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 8486 "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - rm -f conftest.$ac_objext -if { (eval echo "$as_me:8506: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8509: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8512: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8515: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext - CC="$CC -n32" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:8525: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8528: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8531: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8534: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_largefile_CC=' -n32'; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -echo "$as_me:8548: 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:8554: 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 -else - while :; do - ac_cv_sys_file_offset_bits=no - cat >conftest.$ac_ext <<_ACEOF -#line 8562 "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8582: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8585: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8588: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8591: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 8600 "configure" -#include "confdefs.h" -#define _FILE_OFFSET_BITS 64 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8621: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8624: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8627: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8630: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_file_offset_bits=64; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:8641: 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 - -cat >>confdefs.h <&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 -else - while :; do - ac_cv_sys_large_files=no - cat >conftest.$ac_ext <<_ACEOF -#line 8659 "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8679: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8682: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8685: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8688: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 8697 "configure" -#include "confdefs.h" -#define _LARGE_FILES 1 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8718: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8721: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8724: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8727: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_large_files=1; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:8738: 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 - -cat >>confdefs.h <&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 -else - while :; do - ac_cv_sys_largefile_source=no - cat >conftest.$ac_ext <<_ACEOF -#line 8759 "configure" -#include "confdefs.h" -#include -int -main () -{ -return !fseeko; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8771: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8774: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8777: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8780: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 8789 "configure" -#include "confdefs.h" -#define _LARGEFILE_SOURCE 1 -#include -int -main () -{ -return !fseeko; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8802: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8805: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8808: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8811: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_largefile_source=1; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:8822: 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 - -cat >>confdefs.h <&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 8842 "configure" -#include "confdefs.h" -#include -int -main () -{ -return fseeko && fseeko (stdin, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8854: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8857: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8860: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8863: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_fseeko=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_fseeko=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:8873: result: $ac_cv_func_fseeko" >&5 -echo "${ECHO_T}$ac_cv_func_fseeko" >&6 -if test $ac_cv_func_fseeko = yes; then - -cat >>confdefs.h <<\EOF -#define HAVE_FSEEKO 1 -EOF - -fi - - # Normally we would collect these definitions in the config.h, - # but (like _XOPEN_SOURCE), some environments rely on having these - # defined before any of the system headers are included. Another - # case comes up with C++, e.g., on AIX the compiler compiles the - # header files by themselves before looking at the body files it is - # told to compile. For ncurses, those header files do not include - # the config.h - test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES " - test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE " - test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits " - - echo "$as_me:8894: 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 8901 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ - - /* if transitional largefile support is setup, this is true */ - extern struct dirent64 * readdir(DIR *); - struct dirent64 *x = readdir((DIR *)0); - struct dirent *y = readdir((DIR *)0); - int z = x - y; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8922: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8925: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8928: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8931: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_struct_dirent64=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_struct_dirent64=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:8942: result: $cf_cv_struct_dirent64" >&5 -echo "${ECHO_T}$cf_cv_struct_dirent64" >&6 - test "$cf_cv_struct_dirent64" = yes && cat >>confdefs.h <<\EOF -#define HAVE_STRUCT_DIRENT64 1 -EOF - - fi - -### Enable compiling-in rcs id's -echo "$as_me:8951: 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. -if test "${with_rcs_ids+set}" = set; then - withval="$with_rcs_ids" - with_rcs_ids=$withval -else - with_rcs_ids=no -fi; -echo "$as_me:8961: result: $with_rcs_ids" >&5 -echo "${ECHO_T}$with_rcs_ids" >&6 -test "$with_rcs_ids" = yes && cat >>confdefs.h <<\EOF -#define USE_RCS_IDS 1 -EOF - -############################################################################### - -### Note that some functions (such as const) are normally disabled anyway. -echo "$as_me:8970: 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. -if test "${enable_ext_funcs+set}" = set; then - enableval="$enable_ext_funcs" - with_ext_funcs=$enableval -else - with_ext_funcs=yes -fi; -echo "$as_me:8980: result: $with_ext_funcs" >&5 -echo "${ECHO_T}$with_ext_funcs" >&6 -if test "$with_ext_funcs" = yes ; then - NCURSES_EXT_FUNCS=1 - cat >>confdefs.h <<\EOF -#define HAVE_USE_DEFAULT_COLORS 1 -EOF - - cat >>confdefs.h <<\EOF -#define NCURSES_EXT_FUNCS 1 -EOF - -else - NCURSES_EXT_FUNCS=0 -fi - -### use option --enable-const to turn on use of const beyond that in XSI. -echo "$as_me:8997: 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. -if test "${enable_const+set}" = set; then - enableval="$enable_const" - with_ext_const=$enableval -else - with_ext_const=no -fi; -echo "$as_me:9007: result: $with_ext_const" >&5 -echo "${ECHO_T}$with_ext_const" >&6 -NCURSES_CONST='/*nothing*/' -if test "$with_ext_const" = yes ; then - NCURSES_CONST=const -fi - -############################################################################### -# These options are relatively safe to experiment with. - -echo "$as_me:9017: 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. -if test "${with_develop+set}" = set; then - withval="$with_develop" - with_develop=$withval -else - with_develop=no -fi; -echo "$as_me:9027: result: $with_develop" >&5 -echo "${ECHO_T}$with_develop" >&6 - -############################################################################### -# These are just experimental, probably should not be in a package: - -# This is still experimental (20080329), but should ultimately be moved to -# the script-block --with-normal, etc. - -echo "$as_me:9036: 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. -if test "${with_pthread+set}" = set; then - withval="$with_pthread" - with_pthread=$withval -else - with_pthread=no -fi; -echo "$as_me:9046: result: $with_pthread" >&5 -echo "${ECHO_T}$with_pthread" >&6 - -if test "$with_pthread" != no ; then - echo "$as_me:9050: 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 9056 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:9060: \"$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:9066: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_pthread_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_pthread_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:9085: 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 - - cat >>confdefs.h <<\EOF -#define HAVE_PTHREADS_H 1 -EOF - - echo "$as_me:9093: checking if we can link with the pthread library" >&5 -echo $ECHO_N "checking if we can link with the pthread library... $ECHO_C" >&6 - cf_save_LIBS="$LIBS" - LIBS="-lpthread $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 9098 "configure" -#include "confdefs.h" - -#include - -int -main () -{ - - int rc = pthread_create(0,0,0,0); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9114: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9117: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9120: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9123: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - with_pthread=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -with_pthread=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$cf_save_LIBS" - echo "$as_me:9133: result: $with_pthread" >&5 -echo "${ECHO_T}$with_pthread" >&6 - - if test "$with_pthread" = yes ; then - LIBS="-lpthread $LIBS" - cat >>confdefs.h <<\EOF -#define HAVE_LIBPTHREADS 1 -EOF - - else - { { echo "$as_me:9143: error: Cannot link with pthread library" >&5 -echo "$as_me: error: Cannot link with pthread library" >&2;} - { (exit 1); exit 1; }; } - fi - -fi - -fi - -echo "$as_me:9152: 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. -if test "${enable_weak_symbols+set}" = set; then - enableval="$enable_weak_symbols" - use_weak_symbols=$withval -else - use_weak_symbols=no -fi; -echo "$as_me:9162: result: $use_weak_symbols" >&5 -echo "${ECHO_T}$use_weak_symbols" >&6 -if test "$use_weak_symbols" = yes ; then - -echo "$as_me:9166: 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 9173 "configure" -#include "confdefs.h" - -#include -int -main () -{ - -#if defined(__GNUC__) -# if defined __USE_ISOC99 -# define _cat_pragma(exp) _Pragma(#exp) -# define _weak_pragma(exp) _cat_pragma(weak name) -# else -# define _weak_pragma(exp) -# endif -# define _declare(name) __extension__ extern __typeof__(name) name -# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) -#endif - -weak_symbol(fopen); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9199: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9202: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9205: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9208: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_weak_symbols=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_weak_symbols=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:9219: result: $cf_cv_weak_symbols" >&5 -echo "${ECHO_T}$cf_cv_weak_symbols" >&6 - -else - cf_cv_weak_symbols=no -fi - -if test $cf_cv_weak_symbols = yes ; then - cat >>confdefs.h <<\EOF -#define USE_WEAK_SYMBOLS 1 -EOF - -fi - -PTHREAD= -if test "$with_pthread" = "yes" ; then - cat >>confdefs.h <<\EOF -#define USE_PTHREADS 1 -EOF - - enable_reentrant=yes - if test $cf_cv_weak_symbols = yes ; then - PTHREAD=-lpthread - fi -fi - -# OpenSUSE is installing ncurses6, using reentrant option. -echo "$as_me:9246: checking for _nc_TABSIZE" >&5 -echo $ECHO_N "checking for _nc_TABSIZE... $ECHO_C" >&6 -if test "${ac_cv_func__nc_TABSIZE+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 9252 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char _nc_TABSIZE (); below. */ -#include -/* 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 _nc_TABSIZE (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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__nc_TABSIZE) || defined (__stub____nc_TABSIZE) -choke me -#else -f = _nc_TABSIZE; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9283: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9286: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9289: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9292: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func__nc_TABSIZE=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func__nc_TABSIZE=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:9302: result: $ac_cv_func__nc_TABSIZE" >&5 -echo "${ECHO_T}$ac_cv_func__nc_TABSIZE" >&6 -if test $ac_cv_func__nc_TABSIZE = yes; then - assume_reentrant=yes -else - assume_reentrant=no -fi - -# Reentrant code has to be opaque; there's little advantage to making ncurses -# 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:9314: checking if you want experimental reentrant code" >&5 -echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6 - -# Check whether --enable-reentrant or --disable-reentrant was given. -if test "${enable_reentrant+set}" = set; then - enableval="$enable_reentrant" - with_reentrant=$enableval -else - with_reentrant=$assume_reentrant -fi; -echo "$as_me:9324: result: $with_reentrant" >&5 -echo "${ECHO_T}$with_reentrant" >&6 -if test "$with_reentrant" = yes ; then - cf_cv_enable_reentrant=1 - if test $cf_cv_weak_symbols = yes ; then - -# remove pthread library from $LIBS -LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'` - - elif test "$assume_reentrant" = no ; then - LIB_SUFFIX="t${LIB_SUFFIX}" - fi - cat >>confdefs.h <<\EOF -#define USE_REENTRANT 1 -EOF - -else - cf_cv_enable_reentrant=0 -fi - -### Allow using a different wrap-prefix -if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then - echo "$as_me:9346: 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. -if test "${with_wrap_prefix+set}" = set; then - withval="$with_wrap_prefix" - NCURSES_WRAP_PREFIX=$withval -else - NCURSES_WRAP_PREFIX=_nc_ -fi; - echo "$as_me:9356: result: $NCURSES_WRAP_PREFIX" >&5 -echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6 -else - NCURSES_WRAP_PREFIX=_nc_ -fi - -cat >>confdefs.h <&5 -echo $ECHO_N "checking if you want to display full commands during build... $ECHO_C" >&6 - -# Check whether --enable-echo or --disable-echo was given. -if test "${enable_echo+set}" = set; then - enableval="$enable_echo" - with_echo=$enableval -else - with_echo=yes -fi; -if test "$with_echo" = yes; then - ECHO_LINK= -else - ECHO_LINK='@ echo linking $@ ... ;' -fi -echo "$as_me:9384: result: $with_echo" >&5 -echo "${ECHO_T}$with_echo" >&6 - -### use option --enable-warnings to turn on all gcc warnings -echo "$as_me:9388: checking if you want to see compiler warnings" >&5 -echo $ECHO_N "checking if you want to see compiler warnings... $ECHO_C" >&6 - -# Check whether --enable-warnings or --disable-warnings was given. -if test "${enable_warnings+set}" = set; then - enableval="$enable_warnings" - with_warnings=$enableval -fi; -echo "$as_me:9396: result: $with_warnings" >&5 -echo "${ECHO_T}$with_warnings" >&6 - -if test "x$with_warnings" = "xyes"; then - - ADAFLAGS="$ADAFLAGS -gnatg" - -INTEL_COMPILER=no - -if test "$GCC" = yes ; then - case $host_os in - linux*|gnu*) - echo "$as_me:9408: 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 9413 "configure" -#include "confdefs.h" - -int -main () -{ - -#ifdef __INTEL_COMPILER -#else -make an error -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9430: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9433: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9436: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9439: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - INTEL_COMPILER=yes -cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cf_save_CFLAGS" - echo "$as_me:9450: result: $INTEL_COMPILER" >&5 -echo "${ECHO_T}$INTEL_COMPILER" >&6 - ;; - esac -fi - -cat > conftest.$ac_ext <&5 -echo "$as_me: checking for $CC warning options..." >&6;} - cf_save_CFLAGS="$CFLAGS" - EXTRA_CFLAGS="-Wall" - for cf_opt in \ - wd1419 \ - wd1683 \ - wd1684 \ - wd193 \ - wd593 \ - wd279 \ - wd810 \ - wd869 \ - wd981 - do - CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:9490: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9493: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:9495: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" - fi - done - CFLAGS="$cf_save_CFLAGS" - -elif test "$GCC" = yes -then - { echo "$as_me:9504: checking for $CC warning options..." >&5 -echo "$as_me: checking for $CC warning options..." >&6;} - cf_save_CFLAGS="$CFLAGS" - EXTRA_CFLAGS= - cf_warn_CONST="" - test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" - for cf_opt in W Wall \ - Wbad-function-cast \ - Wcast-align \ - Wcast-qual \ - Winline \ - Wmissing-declarations \ - Wmissing-prototypes \ - Wnested-externs \ - Wpointer-arith \ - Wshadow \ - Wstrict-prototypes \ - Wundef $cf_warn_CONST Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum - do - CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:9524: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9527: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:9529: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - case $cf_opt in #(vi - Wcast-qual) #(vi - CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES" - ;; - Winline) #(vi - case $GCC_VERSION in - [34].*) - test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 - -echo "${as_me:-configure}:9540: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 - - continue;; - esac - ;; - esac - EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" - fi - done - CFLAGS="$cf_save_CFLAGS" -fi -rm -rf conftest* - -fi - -if test "$GCC" = yes -then -cat > conftest.i <&5 -echo "$as_me: checking for $CC __attribute__ directives..." >&6;} -cat > conftest.$ac_ext <&5 - - case $cf_attribute in #(vi - printf) #(vi - cf_printf_attribute=yes - cat >conftest.h <conftest.h <conftest.h <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9628: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:9630: result: ... $cf_attribute" >&5 -echo "${ECHO_T}... $cf_attribute" >&6 - cat conftest.h >>confdefs.h - case $cf_attribute in #(vi - printf) #(vi - if test "$cf_printf_attribute" = no ; then - cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h -fi -rm -rf conftest* -fi - -### use option --enable-assertions to turn on generation of assertion code -echo "$as_me:9666: 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. -if test "${enable_assertions+set}" = set; then - enableval="$enable_assertions" - with_assertions=$enableval -else - with_assertions=no -fi; -echo "$as_me:9676: result: $with_assertions" >&5 -echo "${ECHO_T}$with_assertions" >&6 -if test -n "$GCC" -then - if test "$with_assertions" = no - then - cat >>confdefs.h <<\EOF -#define NDEBUG 1 -EOF - - CPPFLAGS="$CPPFLAGS -DNDEBUG" - else - - ADAFLAGS="$ADAFLAGS -gnata" - - fi -fi - -### use option --disable-leaks to suppress "permanent" leaks, for testing -cat >>confdefs.h <<\EOF -#define HAVE_NC_ALLOC_H 1 -EOF - -### use option --enable-expanded to generate certain macros as functions - -# Check whether --enable-expanded or --disable-expanded was given. -if test "${enable_expanded+set}" = set; then - enableval="$enable_expanded" - test "$enableval" = yes && cat >>confdefs.h <<\EOF -#define NCURSES_EXPANDED 1 -EOF - -fi; - -### use option --disable-macros to suppress macros in favor of functions - -# Check whether --enable-macros or --disable-macros was given. -if test "${enable_macros+set}" = set; then - enableval="$enable_macros" - test "$enableval" = no && cat >>confdefs.h <<\EOF -#define NCURSES_NOMACROS 1 -EOF - -fi; - -# Normally we only add trace() to the debug-library. Allow this to be -# extended to all models of the ncurses library: -cf_all_traces=no -case "$CFLAGS $CPPFLAGS" in -*-DTRACE*) - cf_all_traces=yes - ;; -esac - -echo "$as_me:9730: 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. -if test "${with_trace+set}" = set; then - withval="$with_trace" - cf_with_trace=$withval -else - cf_with_trace=$cf_all_traces -fi; -echo "$as_me:9740: result: $cf_with_trace" >&5 -echo "${ECHO_T}$cf_with_trace" >&6 - -if test "$cf_with_trace" = yes ; then - 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 #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -else - ADA_TRACE=FALSE -fi - -### Checks for libraries. -case $cf_cv_system_name in #(vi -*mingw32*) #(vi - ;; -*) -echo "$as_me:9833: 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 9839 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gettimeofday (); below. */ -#include -/* 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 gettimeofday (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_gettimeofday) || defined (__stub___gettimeofday) -choke me -#else -f = gettimeofday; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9870: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9873: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9876: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9879: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gettimeofday=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_gettimeofday=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:9889: result: $ac_cv_func_gettimeofday" >&5 -echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 -if test $ac_cv_func_gettimeofday = yes; then - cat >>confdefs.h <<\EOF -#define HAVE_GETTIMEOFDAY 1 -EOF - -else - -echo "$as_me:9898: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 9906 "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 gettimeofday (); -int -main () -{ -gettimeofday (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9925: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9928: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9931: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9934: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_bsd_gettimeofday=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_bsd_gettimeofday=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:9945: 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 - cat >>confdefs.h <<\EOF -#define HAVE_GETTIMEOFDAY 1 -EOF - - LIBS="$LIBS -lbsd" -fi - -fi - ;; -esac - -### Checks for header files. -echo "$as_me:9960: 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 9966 "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:9974: \"$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:9980: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -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 10002 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -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 10020 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line 10041 "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - $ac_main_return(2); - $ac_main_return (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:10067: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10070: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10072: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10075: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:10088: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -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:10101: 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 10107 "configure" -#include "confdefs.h" -#include -#include <$ac_hdr> - -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10122: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10125: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10128: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10131: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10141: 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 <&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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldir $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 10162 "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 opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10181: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10184: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10187: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10190: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dir_opendir=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dir_opendir=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:10201: 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:10208: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lx $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 10216 "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 opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10235: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10238: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10241: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10244: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_x_opendir=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_x_opendir=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:10255: 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" -fi - -fi - -echo "$as_me:10263: 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 10269 "configure" -#include "confdefs.h" -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10285: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10288: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10291: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10294: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_time=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10304: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF - -fi - -### checks for compiler characteristics -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:10322: 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 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line 10330 "configure" -#include "confdefs.h" -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:10379: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10382: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10385: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10388: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:10405: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:10408: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -echo "$as_me:10413: 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 10419 "configure" -#include "confdefs.h" - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - 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}; - /* 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 - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10477: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10480: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10483: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10486: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_const=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10496: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\EOF -#define const -EOF - -fi - -### Checks for external-data - -echo "$as_me:10508: 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 -else - - rm -f conftest.a - cat >conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10522: \$? = $ac_status" >&5 - (exit $ac_status); } ; then - mv conftest.o data.o && \ - ( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null - fi - rm -f conftest.$ac_ext data.o - cat >conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10545: \$? = $ac_status" >&5 - (exit $ac_status); }; then - mv conftest.o func.o && \ - ( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null - fi - rm -f conftest.$ac_ext func.o - ( eval $RANLIB conftest.a ) 2>&5 >/dev/null - cf_saveLIBS="$LIBS" - LIBS="conftest.a $LIBS" - if test "$cross_compiling" = yes; then - cf_cv_link_dataonly=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 10558 "configure" -#include "confdefs.h" - - int main() - { - extern int testfunc(); - ${cf_cv_main_return:-return} (!testfunc()); - } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:10569: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10572: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10574: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10577: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_link_dataonly=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_link_dataonly=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - LIBS="$cf_saveLIBS" - -fi - -echo "$as_me:10592: result: $cf_cv_link_dataonly" >&5 -echo "${ECHO_T}$cf_cv_link_dataonly" >&6 - -if test "$cf_cv_link_dataonly" = no ; then - cat >>confdefs.h <<\EOF -#define BROKEN_LINKER 1 -EOF - - BROKEN_LINKER=1 -fi - -### Checks for library functions. - -echo "$as_me:10605: 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 -else - -rm -rf conftest* -if test "$cross_compiling" = yes; then - echo "$as_me:10613: 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 10619 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mkstemp (); below. */ -#include -/* 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 mkstemp (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_mkstemp) || defined (__stub___mkstemp) -choke me -#else -f = mkstemp; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10650: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10653: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10656: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10659: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mkstemp=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_mkstemp=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:10669: result: $ac_cv_func_mkstemp" >&5 -echo "${ECHO_T}$ac_cv_func_mkstemp" >&6 - -else - cat >conftest.$ac_ext <<_ACEOF -#line 10674 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#include -int main() -{ - char *tmpl = "conftestXXXXXX"; - char name[2][80]; - int n; - int result = 0; - int fd; - struct stat sb; - - umask(077); - for (n = 0; n < 2; ++n) { - strcpy(name[n], tmpl); - if ((fd = mkstemp(name[n])) >= 0) { - if (!strcmp(name[n], tmpl) - || stat(name[n], &sb) != 0 - || (sb.st_mode & S_IFMT) != S_IFREG - || (sb.st_mode & 077) != 0) { - result = 1; - } - close(fd); - } - } - if (result == 0 - && !strcmp(name[0], name[1])) - result = 1; - ${cf_cv_main_return:-return}(result); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:10712: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10715: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10717: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10720: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_func_mkstemp=yes - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_func_mkstemp=no - -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi -echo "$as_me:10735: result: $cf_cv_func_mkstemp" >&5 -echo "${ECHO_T}$cf_cv_func_mkstemp" >&6 -if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then - cat >>confdefs.h <<\EOF -#define HAVE_MKSTEMP 1 -EOF - -fi - -echo "$as_me:10744: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 10750 "configure" -#include "confdefs.h" -#include -#include -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10772: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10775: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10778: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10781: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10791: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 - -cat >>confdefs.h <&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_gnat_exists+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$gnat_exists"; then - ac_cv_prog_gnat_exists="$gnat_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_gnat_exists="yes" -echo "$as_me:10823: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_gnat_exists" && ac_cv_prog_gnat_exists="no" -fi -fi -gnat_exists=$ac_cv_prog_gnat_exists -if test -n "$gnat_exists"; then - echo "$as_me:10832: result: $gnat_exists" >&5 -echo "${ECHO_T}$gnat_exists" >&6 -else - echo "$as_me:10835: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test "$ac_cv_prog_gnat_exists" = no; then - cf_ada_make= -else - -echo "$as_me:10843: checking for gnat version" >&5 -echo $ECHO_N "checking for gnat version... $ECHO_C" >&6 -cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \ - grep '[0-9].[0-9][0-9]*' |\ - sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'` -echo "$as_me:10848: result: $cf_gnat_version" >&5 -echo "${ECHO_T}$cf_gnat_version" >&6 - -case $cf_gnat_version in #(vi -3.1[1-9]*|3.[2-9]*|[4-9].*) #(vi - cf_cv_prog_gnat_correct=yes - ;; -*) - { echo "$as_me:10856: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5 -echo "$as_me: WARNING: Unsupported GNAT version $cf_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:10864: 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:10879: 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:10888: result: $M4_exists" >&5 -echo "${ECHO_T}$M4_exists" >&6 -else - echo "$as_me:10891: 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 Ada95 binding required program m4 not found. Ada95 binding disabled. - fi - if test "$cf_cv_prog_gnat_correct" = yes; then - echo "$as_me:10900: checking if GNAT works" >&5 -echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6 - -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&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:10928: result: $cf_cv_prog_gnat_correct" >&5 -echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6 - fi -fi - - if test "$cf_cv_prog_gnat_correct" = yes; then - - # make ADAFLAGS consistent with CFLAGS - case "$CFLAGS" in - *-g*) - - ADAFLAGS="$ADAFLAGS -g" - - ;; - esac - case "$CFLAGS" in - *-O*) - - ADAFLAGS="$ADAFLAGS -O3" - - ;; - esac - -echo "$as_me:10951: checking if GNAT supports generics" >&5 -echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6 -case $cf_gnat_version in #(vi -3.[1-9]*|[4-9].*) #(vi - cf_gnat_generics=yes - ;; -*) - cf_gnat_generics=no - ;; -esac -echo "$as_me:10961: result: $cf_gnat_generics" >&5 -echo "${ECHO_T}$cf_gnat_generics" >&6 - -if test "$cf_gnat_generics" = yes -then - cf_compile_generics=generics - cf_generic_objects="\${GENOBJS}" -else - cf_compile_generics= - cf_generic_objects= -fi - -echo "$as_me:10973: 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 -else - -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&5 2>&1 ) ; then - cf_cv_gnat_sigint=yes -else - cf_cv_gnat_sigint=no -fi -rm -rf conftest* *~conftest* - -fi -echo "$as_me:11021: result: $cf_cv_gnat_sigint" >&5 -echo "${ECHO_T}$cf_cv_gnat_sigint" >&6 - -if test $cf_cv_gnat_sigint = yes ; then - USE_GNAT_SIGINT="" -else - USE_GNAT_SIGINT="#" -fi - -echo "$as_me:11030: checking if GNAT pragma Unreferenced works" >&5 -echo $ECHO_N "checking if GNAT pragma Unreferenced works... $ECHO_C" >&6 -if test "${cf_cv_pragma_unreferenced+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&5 2>&1 ) ; then - cf_cv_pragma_unreferenced=yes -else - cf_cv_pragma_unreferenced=no -fi -rm -rf conftest* *~conftest* - -fi -echo "$as_me:11061: result: $cf_cv_pragma_unreferenced" >&5 -echo "${ECHO_T}$cf_cv_pragma_unreferenced" >&6 - -# if the pragma is supported, use it (needed in the Trace code). -if test $cf_cv_pragma_unreferenced = yes ; then - PRAGMA_UNREF=TRUE -else - PRAGMA_UNREF=FALSE -fi - -cf_gnat_libraries=no -cf_gnat_projects=no - -echo "$as_me:11074: checking if GNAT supports project files" >&5 -echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6 -case $cf_gnat_version in #(vi -3.[0-9]*) #(vi - ;; -*) - case $cf_cv_system_name in #(vi - cygwin*) #(vi - ;; - *) - mkdir conftest.src conftest.bin conftest.lib - cd conftest.src - rm -rf conftest* *~conftest* - cat >>library.gpr <>confpackage.ads <>confpackage.adb <&5 2>&1 ) ; then - cf_gnat_projects=yes - fi - cd .. - if test -f conftest.lib/confpackage.ali - then - cf_gnat_libraries=yes - fi - rm -rf conftest* *~conftest* - ;; - esac - ;; -esac -echo "$as_me:11142: result: $cf_gnat_projects" >&5 -echo "${ECHO_T}$cf_gnat_projects" >&6 - -if test $cf_gnat_projects = yes -then - echo "$as_me:11147: checking if GNAT supports libraries" >&5 -echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6 - echo "$as_me:11149: result: $cf_gnat_libraries" >&5 -echo "${ECHO_T}$cf_gnat_libraries" >&6 -fi - -if test "$cf_gnat_projects" = yes -then - USE_OLD_MAKERULES="#" - USE_GNAT_PROJECTS="" -else - USE_OLD_MAKERULES="" - USE_GNAT_PROJECTS="#" -fi - -if test "$cf_gnat_libraries" = yes -then - USE_GNAT_LIBRARIES="" -else - USE_GNAT_LIBRARIES="#" -fi - -echo "$as_me:11169: checking for ada-compiler" >&5 -echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6 - -# Check whether --with-ada-compiler or --without-ada-compiler was given. -if test "${with_ada_compiler+set}" = set; then - withval="$with_ada_compiler" - cf_ada_compiler=$withval -else - cf_ada_compiler=gnatmake -fi; - -echo "$as_me:11180: result: $cf_ada_compiler" >&5 -echo "${ECHO_T}$cf_ada_compiler" >&6 - - cf_ada_package=terminal_interface - -echo "$as_me:11185: checking for ada-include" >&5 -echo $ECHO_N "checking for ada-include... $ECHO_C" >&6 - -# Check whether --with-ada-include or --without-ada-include was given. -if test "${with_ada_include+set}" = set; then - withval="$with_ada_include" - -else - withval="${ADA_INCLUDE:-$prefix/share/ada/adainclude}" -fi; if test -n "$prefix/share/ada/adainclude" ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$withval" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval withval="$withval" - case ".$withval" in #(vi - .NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:11221: error: expected a pathname, not \"$withval\"" >&5 -echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi -ADA_INCLUDE="$withval" - -echo "$as_me:11230: result: $ADA_INCLUDE" >&5 -echo "${ECHO_T}$ADA_INCLUDE" >&6 - -echo "$as_me:11233: checking for ada-objects" >&5 -echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6 - -# Check whether --with-ada-objects or --without-ada-objects was given. -if test "${with_ada_objects+set}" = set; then - withval="$with_ada_objects" - -else - withval="${ADA_OBJECTS:-$prefix/lib/ada/adalib}" -fi; if test -n "$prefix/lib/ada/adalib" ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$withval" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval withval="$withval" - case ".$withval" in #(vi - .NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:11269: error: expected a pathname, not \"$withval\"" >&5 -echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi -ADA_OBJECTS="$withval" - -echo "$as_me:11278: result: $ADA_OBJECTS" >&5 -echo "${ECHO_T}$ADA_OBJECTS" >&6 - -echo "$as_me:11281: checking if an Ada95 shared-library should be built" >&5 -echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6 - -# Check whether --with-ada-sharedlib or --without-ada-sharedlib was given. -if test "${with_ada_sharedlib+set}" = set; then - withval="$with_ada_sharedlib" - with_ada_sharedlib=$withval -else - with_ada_sharedlib=no -fi; -echo "$as_me:11291: result: $with_ada_sharedlib" >&5 -echo "${ECHO_T}$with_ada_sharedlib" >&6 - -ADA_SHAREDLIB='lib$(LIB_NAME).so.1' -MAKE_ADA_SHAREDLIB="#" - -if test "x$with_ada_sharedlib" != xno -then - MAKE_ADA_SHAREDLIB= - if test "x$with_ada_sharedlib" != xyes - then - ADA_SHAREDLIB="$with_ada_sharedlib" - fi -fi - - else - { { echo "$as_me:11307: error: No usable Ada compiler found" >&5 -echo "$as_me: error: No usable Ada compiler found" >&2;} - { (exit 1); exit 1; }; } - fi -else - { { echo "$as_me:11312: error: The Ada compiler is needed for this package" >&5 -echo "$as_me: error: The Ada compiler is needed for this package" >&2;} - { (exit 1); exit 1; }; } -fi - -################################################################################ - -# not needed -TINFO_ARGS2= - -### Construct the list of include-directories to be generated - -CPPFLAGS="$CPPFLAGS -I. -I../include" -if test "$srcdir" != "."; then - CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include" -fi -if test "$GCC" != yes; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi - else - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi -fi - -ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" -if test "$srcdir" != "."; then - ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" -fi -if test "$GCC" != yes; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi - else - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi -fi - -### Build up pieces for makefile rules -echo "$as_me:11357: checking default library suffix" >&5 -echo $ECHO_N "checking default library suffix... $ECHO_C" >&6 - - case $DFT_LWR_MODEL in - libtool) DFT_ARG_SUFFIX='' ;; - normal) DFT_ARG_SUFFIX='' ;; - debug) DFT_ARG_SUFFIX='_g' ;; - profile) DFT_ARG_SUFFIX='_p' ;; - shared) DFT_ARG_SUFFIX='' ;; - esac - test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}" -echo "$as_me:11368: result: $DFT_ARG_SUFFIX" >&5 -echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6 - -echo "$as_me:11371: checking default library-dependency suffix" >&5 -echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6 - - case $DFT_LWR_MODEL in #(vi - libtool) #(vi - DFT_LIB_SUFFIX='.la' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - normal) #(vi - DFT_LIB_SUFFIX='.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - debug) #(vi - DFT_LIB_SUFFIX='_g.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - profile) #(vi - DFT_LIB_SUFFIX='_p.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - shared) #(vi - case $cf_cv_system_name in - aix[56]*) #(vi - DFT_LIB_SUFFIX='.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - cygwin*) #(vi - DFT_LIB_SUFFIX='.dll' - DFT_DEP_SUFFIX='.dll.a' - ;; - darwin*) #(vi - DFT_LIB_SUFFIX='.dylib' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - DFT_LIB_SUFFIX='.so' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - *) #(vi - DFT_LIB_SUFFIX='.sl' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - esac - ;; - *) DFT_LIB_SUFFIX='.so' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - esac - esac - test -n "$LIB_SUFFIX" && DFT_LIB_SUFFIX="${LIB_SUFFIX}${DFT_LIB_SUFFIX}" - test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}" -echo "$as_me:11424: result: $DFT_DEP_SUFFIX" >&5 -echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6 - -echo "$as_me:11427: checking default object directory" >&5 -echo $ECHO_N "checking default object directory... $ECHO_C" >&6 - - case $DFT_LWR_MODEL in - libtool) DFT_OBJ_SUBDIR='obj_lo' ;; - normal) DFT_OBJ_SUBDIR='objects' ;; - debug) DFT_OBJ_SUBDIR='obj_g' ;; - profile) DFT_OBJ_SUBDIR='obj_p' ;; - shared) - case $cf_cv_system_name in #(vi - cygwin) #(vi - DFT_OBJ_SUBDIR='objects' ;; - *) - DFT_OBJ_SUBDIR='obj_s' ;; - esac - esac -echo "$as_me:11443: result: $DFT_OBJ_SUBDIR" >&5 -echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6 - -### Set up low-level terminfo dependencies for makefiles. - -if test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - # "lib" files have ".dll.a" suffix, "cyg" files have ".dll" - ;; - esac -fi - -### Construct the list of subdirectories for which we'll customize makefiles -### with the appropriate compile-rules. - -SUB_MAKEFILES="gen/adacurses${DFT_ARG_SUFFIX}-config:gen/adacurses-config.in" - -cat >>confdefs.h <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 -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overriden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if cmp -s $cache_file confcache; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -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:11659: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=\${CONFIG_SHELL-$SHELL} -ac_cs_invocation="\$0 \$@" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } - -exec 6>&1 - -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\EOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." -EOF - -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:11835: 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;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:11854: 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;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -exec 5>>config.log -cat >&5 << _ACEOF - -## ----------------------- ## -## Running config.status. ## -## ----------------------- ## - -This file was extended by $as_me 2.52.20101002, executed with - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - > $ac_cs_invocation -on `(hostname || uname -n) 2>/dev/null | sed 1q` - -_ACEOF -EOF - -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "$SUB_MAKEFILES" ) CONFIG_FILES="$CONFIG_FILES $SUB_MAKEFILES" ;; - "doc/adacurses${DFT_ARG_SUFFIX}-config.1" ) CONFIG_FILES="$CONFIG_FILES doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in" ;; - "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:11925: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - -EOF - -cat >>$CONFIG_STATUS <\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@DEFS@,$DEFS,;t t -s,@LIBS@,$LIBS,;t t -s,@top_builddir@,$top_builddir,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_os,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t -s,@PROG_EXT@,$PROG_EXT,;t t -s,@AWK@,$AWK,;t t -s,@EGREP@,$EGREP,;t t -s,@INSTALL_PROGRAM@,$INSTALL_PROGRAM,;t t -s,@INSTALL_SCRIPT@,$INSTALL_SCRIPT,;t t -s,@INSTALL_DATA@,$INSTALL_DATA,;t t -s,@LN_S@,$LN_S,;t t -s,@PKG_CONFIG@,$PKG_CONFIG,;t t -s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t -s,@PKG_CONFIG_LIBDIR@,$PKG_CONFIG_LIBDIR,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -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 -s,@ac_ct_LD@,$ac_ct_LD,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@ARFLAGS@,$ARFLAGS,;t t -s,@DESTDIR@,$DESTDIR,;t t -s,@BUILD_CC@,$BUILD_CC,;t t -s,@BUILD_CPP@,$BUILD_CPP,;t t -s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t -s,@BUILD_CPPFLAGS@,$BUILD_CPPFLAGS,;t t -s,@BUILD_LDFLAGS@,$BUILD_LDFLAGS,;t t -s,@BUILD_LIBS@,$BUILD_LIBS,;t t -s,@BUILD_EXEEXT@,$BUILD_EXEEXT,;t t -s,@BUILD_OBJEXT@,$BUILD_OBJEXT,;t t -s,@DFT_LWR_MODEL@,$DFT_LWR_MODEL,;t t -s,@DFT_UPR_MODEL@,$DFT_UPR_MODEL,;t t -s,@NCURSES_CONFIG@,$NCURSES_CONFIG,;t t -s,@NCURSES_MAJOR@,$NCURSES_MAJOR,;t t -s,@NCURSES_MINOR@,$NCURSES_MINOR,;t t -s,@NCURSES_PATCH@,$NCURSES_PATCH,;t t -s,@cf_cv_rel_version@,$cf_cv_rel_version,;t t -s,@cf_cv_abi_version@,$cf_cv_abi_version,;t t -s,@cf_cv_builtin_bool@,$cf_cv_builtin_bool,;t t -s,@cf_cv_header_stdbool_h@,$cf_cv_header_stdbool_h,;t t -s,@cf_cv_type_of_bool@,$cf_cv_type_of_bool,;t t -s,@LIB_PREFIX@,$LIB_PREFIX,;t t -s,@LIB_SUFFIX@,$LIB_SUFFIX,;t t -s,@CC_G_OPT@,$CC_G_OPT,;t t -s,@LD_MODEL@,$LD_MODEL,;t t -s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t -s,@LD_RPATH_OPT@,$LD_RPATH_OPT,;t t -s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t -s,@MK_SHARED_LIB@,$MK_SHARED_LIB,;t t -s,@LINK_PROGS@,$LINK_PROGS,;t t -s,@LINK_TESTS@,$LINK_TESTS,;t t -s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t -s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t -s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t -s,@INSTALL_LIB@,$INSTALL_LIB,;t t -s,@BROKEN_LINKER@,$BROKEN_LINKER,;t t -s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t -s,@NCURSES_CONST@,$NCURSES_CONST,;t t -s,@PTHREAD@,$PTHREAD,;t t -s,@cf_cv_enable_reentrant@,$cf_cv_enable_reentrant,;t t -s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t -s,@ECHO_LINK@,$ECHO_LINK,;t t -s,@ADAFLAGS@,$ADAFLAGS,;t t -s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t -s,@ADA_TRACE@,$ADA_TRACE,;t t -s,@gnat_exists@,$gnat_exists,;t t -s,@M4_exists@,$M4_exists,;t t -s,@cf_ada_make@,$cf_ada_make,;t t -s,@cf_compile_generics@,$cf_compile_generics,;t t -s,@cf_generic_objects@,$cf_generic_objects,;t t -s,@USE_GNAT_SIGINT@,$USE_GNAT_SIGINT,;t t -s,@PRAGMA_UNREF@,$PRAGMA_UNREF,;t t -s,@USE_OLD_MAKERULES@,$USE_OLD_MAKERULES,;t t -s,@USE_GNAT_PROJECTS@,$USE_GNAT_PROJECTS,;t t -s,@USE_GNAT_LIBRARIES@,$USE_GNAT_LIBRARIES,;t t -s,@cf_ada_compiler@,$cf_ada_compiler,;t t -s,@cf_ada_package@,$cf_ada_package,;t t -s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t -s,@ADA_OBJECTS@,$ADA_OBJECTS,;t t -s,@ADA_SHAREDLIB@,$ADA_SHAREDLIB,;t t -s,@MAKE_ADA_SHAREDLIB@,$MAKE_ADA_SHAREDLIB,;t t -s,@TINFO_ARGS2@,$TINFO_ARGS2,;t t -s,@ACPPFLAGS@,$ACPPFLAGS,;t t -s,@DFT_ARG_SUFFIX@,$DFT_ARG_SUFFIX,;t t -s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t -s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t -s,@MAKE_PC_FILES@,$MAKE_PC_FILES,;t t -s,@cross_compiling@,$cross_compiling,;t t -s,@TEST_ARG2@,$TEST_ARG2,;t t -s,@TEST_LIBS2@,$TEST_LIBS2,;t t -s,@NCURSES_SHLIB2@,$NCURSES_SHLIB2,;t t -s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t -s,@NCURSES_TREE@,$NCURSES_TREE,;t t -s,@EXTERNAL_TREE@,$EXTERNAL_TREE,;t t -s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t -CEOF - -EOF - - cat >>$CONFIG_STATUS <<\EOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # 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 - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -EOF -cat >>$CONFIG_STATUS <<\EOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` - else - ac_dir_suffix= ac_dots= - fi - - case $srcdir in - .) ac_srcdir=. - if test -z "$ac_dots"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_dots$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_dots$srcdir ;; - esac - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_dots$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:12240: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - configure_input="Generated automatically from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:12258: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:12271: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -EOF -cat >>$CONFIG_STATUS <<\EOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_iB='\([ ]\),\1#\2define\3' -ac_iC=' ' -ac_iD='\4,;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:12337: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:12348: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:12361: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -EOF - -# Transform confdefs.h into a list of #define's. We won't use it as a sed -# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to -# be either 'cat' or 'sort'. -cat confdefs.h | uniq >conftest.vals - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -echo ' rm -f conftest.frag' >> $CONFIG_STATUS -while grep . conftest.vals >/dev/null -do - # Write chunks of a limited-size here document to conftest.frag. - echo ' cat >> conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> $CONFIG_STATUS - echo 'CEOF' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -# Run sed to substitute the contents of conftest.frag into $tmp/in at the -# marker @DEFS@. -echo ' cat >> conftest.edit < $tmp/out -rm -f $tmp/in -mv $tmp/out $tmp/in -rm -f conftest.edit conftest.frag -' >> $CONFIG_STATUS - -cat >>$CONFIG_STATUS <<\EOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated automatically by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - 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:12419: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - fi - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -done -EOF -cat >>$CONFIG_STATUS <<\EOF -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - - case $ac_dest in - default ) -if test -z "$USE_OLD_MAKERULES" ; then - $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile -fi - ;; - esac -done -EOF - -cat >>$CONFIG_STATUS <<\EOF - -{ (exit 0); exit 0; } -EOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - exec 5>/dev/null - $SHELL $CONFIG_STATUS || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi -${MAKE:-make} preinstall diff --git a/deps/ncurses-5.9/Ada95/configure.in b/deps/ncurses-5.9/Ada95/configure.in deleted file mode 100644 index 2b89fd4..0000000 --- a/deps/ncurses-5.9/Ada95/configure.in +++ /dev/null @@ -1,678 +0,0 @@ -dnl*************************************************************************** -dnl Copyright (c) 2010,2011 Free Software Foundation, Inc. * -dnl * -dnl Permission is hereby granted, free of charge, to any person obtaining a * -dnl copy of this software and associated documentation files (the * -dnl "Software"), to deal in the Software without restriction, including * -dnl without limitation the rights to use, copy, modify, merge, publish, * -dnl distribute, distribute with modifications, sublicense, and/or sell * -dnl copies of the Software, and to permit persons to whom the Software is * -dnl furnished to do so, subject to the following conditions: * -dnl * -dnl The above copyright notice and this permission notice shall be included * -dnl in all copies or substantial portions of the Software. * -dnl * -dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * -dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * -dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * -dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * -dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * -dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * -dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * -dnl * -dnl Except as contained in this notice, the name(s) of the above copyright * -dnl holders shall not be used in advertising or otherwise to promote the * -dnl sale, use or other dealings in this Software without prior written * -dnl authorization. * -dnl*************************************************************************** -dnl -dnl Author: Thomas E. Dickey -dnl -dnl $Id: configure.in,v 1.30 2011/03/31 22:49:22 tom Exp $ -dnl Process this file with autoconf to produce a configure script. -dnl -dnl See http://invisible-island.net/autoconf/ for additional information. -dnl -dnl --------------------------------------------------------------------------- -AC_PREREQ(2.13.20020210) -AC_REVISION($Revision: 1.30 $) -AC_INIT(gen/gen.c) -AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin) - -CF_TOP_BUILDDIR - -CF_CHECK_CACHE([AC_CANONICAL_SYSTEM]) -AC_ARG_WITH(system-type, -[ --with-system-type=XXX test: override derived host system-type], -[AC_MSG_WARN(overriding system type to $withval) - cf_cv_system_name=$withval]) - -### Save the given $CFLAGS to allow user-override. -cf_user_CFLAGS="$CFLAGS" - -### Default install-location -CF_CFG_DEFAULTS - -### Checks for programs. -AC_PROG_CC -CF_GCC_VERSION - -AC_PROG_CPP -AC_PROG_GCC_TRADITIONAL -CF_PROG_CC_C_O(CC) -AC_ISC_POSIX -CF_ANSI_CC_REQD -CF_PROG_EXT - -AC_ARG_PROGRAM - -CF_PROG_AWK -CF_PROG_EGREP -AC_PROG_INSTALL -CF_PROG_LN_S - -AC_SYS_LONG_FILE_NAMES - -# if we find pkg-config, check if we should install the ".pc" files. -CF_PKG_CONFIG - -if test "$PKG_CONFIG" != none ; then - AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG) - - # Leave this as something that can be overridden in the environment. - if test -z "$PKG_CONFIG_LIBDIR" ; then - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`/lib/pkgconfig - fi - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'` - if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then - AC_ARG_ENABLE(pc-files, - [ --enable-pc-files generate and install .pc files for pkg-config], - [enable_pc_files=$enableval], - [enable_pc_files=no]) - AC_MSG_RESULT($enable_pc_files) - else - AC_MSG_RESULT(no) - AC_MSG_WARN(did not find library $PKG_CONFIG_LIBDIR) - enable_pc_files=no - fi -fi -AC_SUBST(PKG_CONFIG_LIBDIR) - -AC_MSG_CHECKING(if you want to build test-programs) -AC_ARG_WITH(tests, - [ --without-tests suppress build with test-programs], - [cf_with_tests=$withval], - [cf_with_tests=yes]) -AC_MSG_RESULT($cf_with_tests) - -AC_MSG_CHECKING(if we should assume mixed-case filenames) -AC_ARG_ENABLE(mixed-case, - [ --enable-mixed-case tic should assume mixed-case filenames], - [enable_mixedcase=$enableval], - [enable_mixedcase=auto]) -AC_MSG_RESULT($enable_mixedcase) -if test "$enable_mixedcase" = "auto" ; then - CF_MIXEDCASE_FILENAMES -else - cf_cv_mixedcase=$enable_mixedcase - if test "$enable_mixedcase" = "yes" ; then - AC_DEFINE(MIXEDCASE_FILENAMES) - fi -fi - -# do this after mixed-case option (tags/TAGS is not as important as tic). -AC_PROG_MAKE_SET -CF_MAKE_TAGS -CF_MAKEFLAGS - -dnl These are standard among *NIX systems, but not when cross-compiling -AC_CHECK_TOOL(RANLIB, ranlib, ':') -AC_CHECK_TOOL(LD, ld, ld) -AC_CHECK_TOOL(AR, ar, ar) -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(if you have specified an install-prefix) -AC_ARG_WITH(install-prefix, - [ --with-install-prefix prefixes actual install-location ($DESTDIR)], - [case "$withval" in #(vi - yes|no) #(vi - ;; - *) DESTDIR="$withval" - ;; - esac]) -AC_MSG_RESULT($DESTDIR) -AC_SUBST(DESTDIR) - -############################################################################### -CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:) -# If we're cross-compiling, allow the user to override the tools and their -# options. The configure script is oriented toward identifying the host -# compiler, etc., but we need a build compiler to generate parts of the source. -CF_BUILD_CC - -############################################################################### -CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:) - -### Options to allow the user to specify the set of libraries which are used. -### Use "--without-normal --with-shared" to allow the default model to be -### shared, for example. -cf_list_models="" - -AC_MSG_CHECKING(if you want to build shared C-objects) -AC_ARG_WITH(shared, - [ --with-shared generate shared C-objects (needed for --with-ada-sharedlib)], - [with_shared=$withval], - [with_shared=no]) -AC_MSG_RESULT($with_shared) -test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared" - -AC_MSG_CHECKING(for specified models) -test -z "$cf_list_models" && cf_list_models=normal -AC_MSG_RESULT($cf_list_models) - -### Use the first model as the default, and save its suffix for use in building -### up test-applications. -AC_MSG_CHECKING(for default model) -DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'` -AC_MSG_RESULT($DFT_LWR_MODEL) - -CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl - -AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal") -AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL") - -CF_NCURSES_ADDON - -CF_LIB_PREFIX(cf_prefix) -LIB_PREFIX=$cf_prefix -AC_SUBST(LIB_PREFIX) - -LIB_SUFFIX= -AC_SUBST(LIB_SUFFIX) - -############################################################################### - -dnl Not all ports of gcc support the -g option - -if test X"$CC_G_OPT" = X"" ; then - CC_G_OPT='-g' - test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT='' -fi -AC_SUBST(CC_G_OPT) - -AC_MSG_CHECKING(for default loader flags) -case $DFT_LWR_MODEL in -normal) LD_MODEL='' ;; -debug) LD_MODEL=$CC_G_OPT ;; -profile) LD_MODEL='-pg';; -shared) LD_MODEL='' ;; -esac -AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg) -AC_MSG_RESULT($LD_MODEL) - -CF_SHARED_OPTS - -# The test/sample programs in the original tree link using rpath option. -# Make it optional for packagers. -if test -n "$LOCAL_LDFLAGS" -then - AC_MSG_CHECKING(if you want to link sample programs with rpath option) - AC_ARG_ENABLE(rpath-link, - [ --enable-rpath-link link sample programs with rpath option], - [with_rpath_link=$enableval], - [with_rpath_link=yes]) - AC_MSG_RESULT($with_rpath_link) - if test "$with_rpath_link" = no - then - LOCAL_LDFLAGS= - LOCAL_LDFLAGS2= - fi -fi - -############################################################################### -CF_HELP_MESSAGE(Fine-Tuning Your Configuration:) - -CF_PATHSEP - -### use option --enable-broken-linker to force on use of broken-linker support -AC_MSG_CHECKING(if you want broken-linker support code) -AC_ARG_ENABLE(broken_linker, - [ --enable-broken_linker compile with broken-linker support code], - [with_broken_linker=$enableval], - [with_broken_linker=${BROKEN_LINKER:-no}]) -AC_MSG_RESULT($with_broken_linker) - -BROKEN_LINKER=0 -if test "$with_broken_linker" = yes ; then - AC_DEFINE(BROKEN_LINKER) - BROKEN_LINKER=1 -elif test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - AC_DEFINE(BROKEN_LINKER) - BROKEN_LINKER=1 - CF_VERBOSE(cygwin linker is broken anyway) - ;; - esac -fi -AC_SUBST(BROKEN_LINKER) - -# Check to define _XOPEN_SOURCE "automatically" -CF_XOPEN_SOURCE - -CF_LARGEFILE - -### Enable compiling-in rcs id's -AC_MSG_CHECKING(if RCS identifiers should be compiled-in) -AC_ARG_WITH(rcs-ids, - [ --with-rcs-ids compile-in RCS identifiers], - [with_rcs_ids=$withval], - [with_rcs_ids=no]) -AC_MSG_RESULT($with_rcs_ids) -test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS) - -############################################################################### -CF_HELP_MESSAGE(Extensions:) - -### Note that some functions (such as const) are normally disabled anyway. -AC_MSG_CHECKING(if you want to build with function extensions) -AC_ARG_ENABLE(ext-funcs, - [ --disable-ext-funcs disable function-extensions], - [with_ext_funcs=$enableval], - [with_ext_funcs=yes]) -AC_MSG_RESULT($with_ext_funcs) -if test "$with_ext_funcs" = yes ; then - NCURSES_EXT_FUNCS=1 - AC_DEFINE(HAVE_USE_DEFAULT_COLORS) - AC_DEFINE(NCURSES_EXT_FUNCS) -else - NCURSES_EXT_FUNCS=0 -fi -AC_SUBST(NCURSES_EXT_FUNCS) - -### use option --enable-const to turn on use of const beyond that in XSI. -AC_MSG_CHECKING(for extended use of const keyword) -AC_ARG_ENABLE(const, - [ --enable-const compile with extra/non-standard const], - [with_ext_const=$enableval], - [with_ext_const=no]) -AC_MSG_RESULT($with_ext_const) -NCURSES_CONST='/*nothing*/' -if test "$with_ext_const" = yes ; then - NCURSES_CONST=const -fi -AC_SUBST(NCURSES_CONST) - -############################################################################### -# These options are relatively safe to experiment with. -CF_HELP_MESSAGE(Development Code:) -AC_MSG_CHECKING(if you want all development code) -AC_ARG_WITH(develop, - [ --without-develop disable development options], - [with_develop=$withval], - [with_develop=no]) -AC_MSG_RESULT($with_develop) - -############################################################################### -# These are just experimental, probably should not be in a package: -CF_HELP_MESSAGE(Experimental Code:) - -# This is still experimental (20080329), but should ultimately be moved to -# the script-block --with-normal, etc. -CF_WITH_PTHREAD - -AC_MSG_CHECKING(if you want to use weak-symbols for pthreads) -AC_ARG_ENABLE(weak-symbols, - [ --enable-weak-symbols enable weak-symbols for pthreads], - [use_weak_symbols=$withval], - [use_weak_symbols=no]) -AC_MSG_RESULT($use_weak_symbols) -if test "$use_weak_symbols" = yes ; then - CF_WEAK_SYMBOLS -else - cf_cv_weak_symbols=no -fi - -if test $cf_cv_weak_symbols = yes ; then - AC_DEFINE(USE_WEAK_SYMBOLS) -fi - -PTHREAD= -if test "$with_pthread" = "yes" ; then - AC_DEFINE(USE_PTHREADS) - enable_reentrant=yes - if test $cf_cv_weak_symbols = yes ; then - PTHREAD=-lpthread - fi -fi -AC_SUBST(PTHREAD) - -# OpenSUSE is installing ncurses6, using reentrant option. -AC_CHECK_FUNC(_nc_TABSIZE,[assume_reentrant=yes], [assume_reentrant=no]) - -# Reentrant code has to be opaque; there's little advantage to making ncurses -# 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. -AC_MSG_CHECKING(if you want experimental reentrant code) -AC_ARG_ENABLE(reentrant, - [ --enable-reentrant compile with experimental reentrant code], - [with_reentrant=$enableval], - [with_reentrant=$assume_reentrant]) -AC_MSG_RESULT($with_reentrant) -if test "$with_reentrant" = yes ; then - cf_cv_enable_reentrant=1 - if test $cf_cv_weak_symbols = yes ; then - CF_REMOVE_LIB(LIBS,$LIBS,pthread) - elif test "$assume_reentrant" = no ; then - LIB_SUFFIX="t${LIB_SUFFIX}" - fi - AC_DEFINE(USE_REENTRANT) -else - cf_cv_enable_reentrant=0 -fi -AC_SUBST(cf_cv_enable_reentrant) - -### Allow using a different wrap-prefix -if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then - AC_MSG_CHECKING(for prefix used to wrap public variables) - AC_ARG_WITH(wrap-prefix, - [ --with-wrap-prefix=XXX override prefix used for public variables], - [NCURSES_WRAP_PREFIX=$withval], - [NCURSES_WRAP_PREFIX=_nc_]) - AC_MSG_RESULT($NCURSES_WRAP_PREFIX) -else - NCURSES_WRAP_PREFIX=_nc_ -fi -AC_SUBST(NCURSES_WRAP_PREFIX) -AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX") - -############################################################################### -CF_HELP_MESSAGE(Testing/development Options:) - -### use option --disable-echo to suppress full display compiling commands -AC_MSG_CHECKING(if you want to display full commands during build) -AC_ARG_ENABLE(echo, - [ --enable-echo build: display "compiling" commands (default)], - [with_echo=$enableval], - [with_echo=yes]) -if test "$with_echo" = yes; then - ECHO_LINK= -else - ECHO_LINK='@ echo linking $@ ... ;' -fi -AC_MSG_RESULT($with_echo) -AC_SUBST(ECHO_LINK) - -### use option --enable-warnings to turn on all gcc warnings -AC_MSG_CHECKING(if you want to see compiler warnings) -AC_ARG_ENABLE(warnings, - [ --enable-warnings build: turn on GCC compiler warnings], - [with_warnings=$enableval]) -AC_MSG_RESULT($with_warnings) - -if test "x$with_warnings" = "xyes"; then - CF_ADD_ADAFLAGS(-gnatg) - CF_GCC_WARNINGS(Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum) -fi -CF_GCC_ATTRIBUTES - -### use option --enable-assertions to turn on generation of assertion code -AC_MSG_CHECKING(if you want to enable runtime assertions) -AC_ARG_ENABLE(assertions, - [ --enable-assertions test: turn on generation of assertion code], - [with_assertions=$enableval], - [with_assertions=no]) -AC_MSG_RESULT($with_assertions) -if test -n "$GCC" -then - if test "$with_assertions" = no - then - AC_DEFINE(NDEBUG) - CPPFLAGS="$CPPFLAGS -DNDEBUG" - else - CF_ADD_ADAFLAGS(-gnata) - fi -fi - -### use option --disable-leaks to suppress "permanent" leaks, for testing -AC_DEFINE(HAVE_NC_ALLOC_H) - -### use option --enable-expanded to generate certain macros as functions -AC_ARG_ENABLE(expanded, - [ --enable-expanded test: generate functions for certain macros], - [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED)]) - -### use option --disable-macros to suppress macros in favor of functions -AC_ARG_ENABLE(macros, - [ --disable-macros test: use functions rather than macros], - [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS)]) - -# Normally we only add trace() to the debug-library. Allow this to be -# extended to all models of the ncurses library: -cf_all_traces=no -case "$CFLAGS $CPPFLAGS" in -*-DTRACE*) - cf_all_traces=yes - ;; -esac - -AC_MSG_CHECKING(whether to add trace feature to all models) -AC_ARG_WITH(trace, -[ --with-trace test: add trace() function to all models of ncurses], -[cf_with_trace=$withval], -[cf_with_trace=$cf_all_traces]) -AC_MSG_RESULT($cf_with_trace) - -if test "$cf_with_trace" = yes ; then - ADA_TRACE=TRUE - CF_ADD_CFLAGS(-DTRACE) -else - ADA_TRACE=FALSE -fi - -AC_SUBST(ADA_TRACE) - -### Checks for libraries. -case $cf_cv_system_name in #(vi -*mingw32*) #(vi - ;; -*) -AC_CHECK_FUNC(gettimeofday, - AC_DEFINE(HAVE_GETTIMEOFDAY),[ - -AC_CHECK_LIB(bsd, gettimeofday, - AC_DEFINE(HAVE_GETTIMEOFDAY) - LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday - ;; -esac - -### Checks for header files. -AC_STDC_HEADERS -AC_HEADER_DIRENT -AC_HEADER_TIME - -### checks for compiler characteristics -AC_LANG_C -AC_C_CONST - -### Checks for external-data -CF_LINK_DATAONLY - -### Checks for library functions. -CF_MKSTEMP - -AC_TYPE_SIGNAL - -dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS -if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then - CF_STRIP_G_OPT(CFLAGS) - CF_STRIP_G_OPT(CXXFLAGS) -fi - -CF_HELP_MESSAGE(Ada95 Binding Options:) - -dnl Check for availability of GNU Ada Translator (GNAT). -dnl At the moment we support no other Ada95 compiler. -if test "$cf_with_ada" != "no" ; then - CF_PROG_GNAT - if test "$cf_cv_prog_gnat_correct" = yes; then - - # make ADAFLAGS consistent with CFLAGS - case "$CFLAGS" in - *-g*) - CF_ADD_ADAFLAGS(-g) - ;; - esac - case "$CFLAGS" in - *-O*) - CF_ADD_ADAFLAGS(-O3) - ;; - esac - - CF_GNAT_GENERICS - CF_GNAT_SIGINT - CF_GNAT_PRAGMA_UNREF - CF_GNAT_PROJECTS - - CF_WITH_ADA_COMPILER - - cf_ada_package=terminal_interface - AC_SUBST(cf_ada_package) - - CF_WITH_ADA_INCLUDE - CF_WITH_ADA_OBJECTS - CF_WITH_ADA_SHAREDLIB - else - AC_MSG_ERROR(No usable Ada compiler found) - fi -else - AC_MSG_ERROR(The Ada compiler is needed for this package) -fi - -################################################################################ - -# not needed -TINFO_ARGS2= -AC_SUBST(TINFO_ARGS2) - -### Construct the list of include-directories to be generated -CF_INCLUDE_DIRS -CF_ADA_INCLUDE_DIRS - -### Build up pieces for makefile rules -AC_MSG_CHECKING(default library suffix) -CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl -AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("") -AC_MSG_RESULT($DFT_ARG_SUFFIX) - -AC_MSG_CHECKING(default library-dependency suffix) -CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl -AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a") -AC_MSG_RESULT($DFT_DEP_SUFFIX) - -AC_MSG_CHECKING(default object directory) -CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl -AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj") -AC_MSG_RESULT($DFT_OBJ_SUBDIR) - -### Set up low-level terminfo dependencies for makefiles. - -if test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - # "lib" files have ".dll.a" suffix, "cyg" files have ".dll" - ;; - esac -fi - -### Construct the list of subdirectories for which we'll customize makefiles -### with the appropriate compile-rules. - -SUB_MAKEFILES="gen/adacurses${DFT_ARG_SUFFIX}-config:gen/adacurses-config.in" - -AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR') - -### Now that we're done running tests, add the compiler-warnings, if any -CF_ADD_CFLAGS($EXTRA_CFLAGS) - -################################################################################ - -if test x"$enable_pc_files" = xyes ; then \ -SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in" -MAKE_PC_FILES= -else -MAKE_PC_FILES="#" -fi -AC_SUBST(MAKE_PC_FILES) -AC_SUBST(cross_compiling) - -################################################################################ - -TEST_ARG2= -AC_SUBST(TEST_ARG2) - -TEST_LIBS2= -AC_SUBST(TEST_LIBS2) - -dnl for separate build, this is good enough for "sh $(top_srcdir)/misc/shlib" -NCURSES_SHLIB2="sh -c" -AC_SUBST(NCURSES_SHLIB2) - -ADA_SUBDIRS="include gen src doc" -if test "x$cf_with_tests" != "xno" ; then - ADA_SUBDIRS="$ADA_SUBDIRS samples" -fi -for cf_dir in $ADA_SUBDIRS -do - SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile" -done -AC_SUBST(ADA_SUBDIRS) - -NCURSES_TREE="#" -AC_SUBST(NCURSES_TREE) - -EXTERNAL_TREE= -AC_SUBST(EXTERNAL_TREE) - -# match layout used by make-tar.sh -ADAHTML_DIR=../doc/ada -AC_SUBST(ADAHTML_DIR) - -AC_OUTPUT( \ - $SUB_MAKEFILES \ - doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in \ - Makefile,[ -if test -z "$USE_OLD_MAKERULES" ; then - $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile -fi -],[ -### Special initialization commands, used to pass information from the -### configuration-run into config.status - -AWK="$AWK" -DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX" -DFT_LWR_MODEL="$DFT_LWR_MODEL" -ECHO_LINK="$ECHO_LINK" -LIB_NAME="$LIB_NAME" -LIB_SUFFIX="$LIB_SUFFIX" -LN_S="$LN_S" -NCURSES_MAJOR="$NCURSES_MAJOR" -NCURSES_MINOR="$NCURSES_MINOR" -NCURSES_PATCH="$NCURSES_PATCH" -USE_OLD_MAKERULES="$USE_OLD_MAKERULES" -cf_cv_abi_version="$cf_cv_abi_version" -cf_cv_rel_version="$cf_cv_rel_version" -cf_cv_rm_so_locs="$cf_cv_rm_so_locs" -cf_cv_shared_soname='$cf_cv_shared_soname' -cf_cv_shlib_version="$cf_cv_shlib_version" -cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix" -cf_cv_system_name="$cf_cv_system_name" -host="$host" -target="$target" - -],cat)dnl -${MAKE:-make} preinstall diff --git a/deps/ncurses-5.9/Ada95/doc/Makefile.in b/deps/ncurses-5.9/Ada95/doc/Makefile.in deleted file mode 100644 index 8f33c93..0000000 --- a/deps/ncurses-5.9/Ada95/doc/Makefile.in +++ /dev/null @@ -1,81 +0,0 @@ -# $Id: Makefile.in,v 1.2 2011/03/26 19:26:17 tom Exp $ -############################################################################## -# Copyright (c) 2011 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: Thomas E. Dickey -# -# Makefile for AdaCurses manual pages. - -SHELL = /bin/sh -VPATH = @srcdir@ - -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -mandir = @mandir@ - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -DFT_ARG_SUFFIX = @DFT_ARG_SUFFIX@ - -THIS = AdaCurses -DOCDIR = $(DESTDIR)$(datadir)/doc/$(THIS) -MANDIR = $(DESTDIR)$(mandir)/man1 - -all \ -sources \ -depend \ -tags : - -$(DOCDIR) \ -$(MANDIR) : - mkdir -p $@ - -install install.man : $(MANDIR) - $(INSTALL_DATA) adacurses${DFT_ARG_SUFFIX}-config.1 $(MANDIR) - -uninstall uninstall.man : - -rm -f $(MANDIR)/adacurses${DFT_ARG_SUFFIX}-config.1 - -# HTML documentation is optional, usually in a separate package. -install.html : $(DOCDIR) - cd $(srcdir) && tar -cf - *.htm* ada | tar -C $(DOCDIR) -xf - - -uninstall.html : - -rm -rf $(DOCDIR) - -mostlyclean : - -rm -f core tags TAGS *~ *.bak *.ln *.atac trace - -clean: mostlyclean - -distclean realclean: clean - -rm -f Makefile *-config.1 diff --git a/deps/ncurses-5.9/Ada95/gen/Makefile.in b/deps/ncurses-5.9/Ada95/gen/Makefile.in deleted file mode 100644 index 10fd635..0000000 --- a/deps/ncurses-5.9/Ada95/gen/Makefile.in +++ /dev/null @@ -1,451 +0,0 @@ -############################################################################## -# Copyright (c) 1998-2010,2011 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, 1996 -# -# $Id: Makefile.in,v 1.74 2011/03/26 23:36:30 tom Exp $ -# -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -x = @PROG_EXT@ - -top_srcdir = @top_srcdir@ -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -includedir = @includedir@ - -INSTALL = @INSTALL@ -INSTALL_PROG = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -AWK = @AWK@ -LN_S = @LN_S@ - -CC = @CC@ -HOST_CC = @BUILD_CC@ -CFLAGS = @CFLAGS@ - -CPPFLAGS = @ACPPFLAGS@ @CPPFLAGS@ \ - -DHAVE_CONFIG_H -I$(srcdir) - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ -LOCAL_LIBDIR = @top_builddir@/lib - -LINK = $(HOST_CC) -LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) @TINFO_ARGS2@ - -RANLIB = @RANLIB@ - -M4 = m4 -M4FLAGS = -DNCURSES_EXT_FUNCS=@NCURSES_EXT_FUNCS@ - -ADACURSES_CONFIG = adacurses@DFT_ARG_SUFFIX@-config - -WRAPPER = @NCURSES_SHLIB2@ - -PROG_GENERATE = ./generate$x -GENERATE = $(PROG_GENERATE) '@DFT_ARG_SUFFIX@' -DEL_ADAMODE = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d' - -GNATHTML = `type -p gnathtml || type -p gnathtml.pl 2>/dev/null` -GNATHP = www.gnat.com - -################################################################################ -ALIB = @cf_ada_package@ -ABASE = $(ALIB)-curses - -ADA_SRCDIR = ../src - -GEN_FILES0 = Base_Defs - -GEN_FILES1 = ACS_Map \ - AC_Rep \ - Base_Defs \ - Character_Attribute_Set_Rep \ - Color_Defs \ - Key_Definitions \ - Linker_Options \ - Old_Keys \ - Public_Variables \ - Trace_Defs \ - Version_Info \ - Window_Offsets - -GEN_FILES2 = Menu_Opt_Rep \ - Menu_Base_Defs \ - Menu_Linker_Options \ - Item_Rep - -GEN_FILES3 = Form_Opt_Rep \ - Form_Base_Defs \ - Form_Linker_Options \ - Field_Rep - -GEN_FILES4 = Mouse_Base_Defs \ - Mouse_Event_Rep \ - Mouse_Events \ - Panel_Linker_Options - -GEN_FILES5 = Chtype_Def \ - Eti_Defs - -GEN_TARGETS = $(ADA_SRCDIR)/$(ABASE).ads \ - $(ADA_SRCDIR)/$(ABASE).adb \ - $(ADA_SRCDIR)/$(ABASE)-aux.ads \ - $(ADA_SRCDIR)/$(ABASE)-trace.ads \ - $(ADA_SRCDIR)/$(ABASE)-menus.ads \ - $(ADA_SRCDIR)/$(ABASE)-forms.ads \ - $(ADA_SRCDIR)/$(ABASE)-mouse.ads \ - $(ADA_SRCDIR)/$(ABASE)-panels.ads \ - $(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads \ - $(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads \ - $(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads \ - $(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads \ - $(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads \ - $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads - -GEN_SRC = $(srcdir)/$(ABASE).ads.m4 \ - $(srcdir)/$(ABASE).adb.m4 \ - $(srcdir)/$(ABASE)-aux.ads.m4 \ - $(srcdir)/$(ABASE)-trace.ads.m4 \ - $(srcdir)/$(ABASE)-menus.ads.m4 \ - $(srcdir)/$(ABASE)-forms.ads.m4 \ - $(srcdir)/$(ABASE)-mouse.ads.m4 \ - $(srcdir)/$(ABASE)-panels.ads.m4 \ - $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \ - $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \ - $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \ - $(srcdir)/$(ABASE)-forms-field_types.ads.m4 \ - $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \ - $(srcdir)/$(ABASE)-panels-user_data.ads.m4 - - -all \ -libs : $(GEN_TARGETS) - @echo made $@ - -sources: - -$(DESTDIR)$(bindir) : - mkdir -p $@ - -install \ -install.libs :: $(DESTDIR)$(bindir) $(ADACURSES_CONFIG) - $(INSTALL_PROG) $(ADACURSES_CONFIG) $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG) - -uninstall \ -uninstall.libs :: - -rm -f $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG) - -$(PROG_GENERATE): gen.o - @ECHO_LINK@ $(LINK) $(CFLAGS_NORMAL) gen.o $(LD_FLAGS) -o $@ - -gen.o: $(srcdir)/gen.c - $(HOST_CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c -################################################################################ -Character_Attribute_Set_Rep: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B A" >$@ - -Base_Defs: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B B" >$@ - -Color_Defs: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B C" >$@ - -Window_Offsets: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B D" >$@ - -Key_Definitions: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B K" >$@ - -Linker_Options: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B L" >$@ - -ACS_Map: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B M" >$@ - -Old_Keys: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B O" >$@ - -Public_Variables: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B P" >$@ - -AC_Rep: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B R" >$@ - -Version_Info: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B V" >$@ - -Trace_Defs: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B T" >$@ -################################################################################ -Menu_Opt_Rep: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) M R" >$@ - -Menu_Base_Defs: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) M B" >$@ - -Menu_Linker_Options: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) M L" >$@ - -Item_Rep: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) M I" >$@ -################################################################################ -Form_Opt_Rep: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) F R" >$@ - -Form_Base_Defs: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) F B" >$@ - -Form_Linker_Options: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) F L" >$@ - -Field_Rep: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) F I" >$@ -################################################################################ -Mouse_Base_Defs: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) P B" >$@ - -Mouse_Event_Rep: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) P M" >$@ - -Mouse_Events: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) B E" >$@ - -Panel_Linker_Options: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) P L" >$@ - -Chtype_Def: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) E C" >$@ - -Eti_Defs: $(PROG_GENERATE) - $(WRAPPER) "$(GENERATE) E E" >$@ -################################################################################ -$(ADA_SRCDIR)/$(ABASE).ads: $(srcdir)/$(ABASE).ads.m4 \ - $(GEN_FILES1) $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE).ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE).adb: $(srcdir)/$(ABASE).adb.m4 \ - $(GEN_FILES1) $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE).adb.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \ - $(GEN_FILES5) $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-aux.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \ - $(GEN_FILES5) $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-trace.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \ - $(GEN_FILES2) $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-menus.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-forms.ads: $(srcdir)/$(ABASE)-forms.ads.m4 \ - $(GEN_FILES3) $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-forms.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-mouse.ads: $(srcdir)/$(ABASE)-mouse.ads.m4 \ - $(GEN_FILES4) $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-mouse.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-panels.ads: $(srcdir)/$(ABASE)-panels.ads.m4 \ - $(GEN_FILES4) \ - $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-panels.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads: \ - $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \ - $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads: \ - $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \ - $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads: \ - $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \ - $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads: \ - $(srcdir)/$(ABASE)-forms-field_types.ads.m4 \ - $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-forms-field_types.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads: \ - $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \ - $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -$(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads: \ - $(srcdir)/$(ABASE)-panels-user_data.ads.m4 \ - $(srcdir)/normal.m4 - $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ - $(srcdir)/$(ABASE)-panels-user_data.ads.m4 |\ - $(DEL_ADAMODE) >$@ - -install.progs :: - -tags: - ctags *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ etags *.[ch] - -mostlyclean :: - -rm -f a.out core $(PROG_GENERATE) *.o - -rm -f $(GEN_FILES1) - -rm -f $(GEN_FILES2) - -rm -f $(GEN_FILES3) - -rm -f $(GEN_FILES4) - -rm -f $(GEN_FILES5) - -clean :: mostlyclean - -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp - -distclean :: clean - -rm -f $(ADACURSES_CONFIG) - -rm -f Makefile - -realclean :: distclean - -HTML_DIR = @ADAHTML_DIR@ - -instab.tmp : table.m4 $(GEN_SRC) - @rm -f $@ - @for f in $(GEN_SRC) ; do \ - $(M4) $(M4FLAGS) -DM4MACRO=table.m4 $$f | $(DEL_ADAMODE) >> $@ ;\ - done; - -$(HTML_DIR)/table.html : instab.tmp - @-touch $@ - @-chmod +w $@ - @echo ' $@ - @echo 'PUBLIC "-//IETF//DTD HTML 3.0//EN">' >> $@ - @echo '' >> $@ - @echo '' >> $@ - @echo 'Correspondence between ncurses C and Ada functions' >>$@ - @echo '' >> $@ - @echo '' >> $@ - @echo '

Correspondence between ncurses C and Ada functions

' >>$@ - @echo '

Sorted by C function name

' >>$@ - @echo '' >>$@ - @echo '' >>$@ - @echo '' >>$@ - @sort < instab.tmp >> $@ - @echo '
C nameAda nameman page
' >>$@ - @rm -f instab.tmp - -adahtml: - test -n "$(GNATHTML)" || exit 1 - @find $(HTML_DIR) -type f -exec rm -f {} \; - @mkdir -p $(HTML_DIR) - cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb] -@USE_OLD_MAKERULES@ ln -sf ../src/*.ali . -@USE_GNAT_PROJECTS@ ln -sf ../static-ali/*.ali . - @echo "Filtering generated files" - @for f in $(GEN_SRC); do \ - h=`basename $$f` ;\ - g=`basename $$f .ads.m4` ;\ - if test "$$g" != "$$h" ; then \ - $(M4) $(M4FLAGS) -DM4MACRO=html.m4 $$f | $(DEL_ADAMODE) > $$g.ads ;\ - echo "... $$g.ads" ;\ - fi \ - done - @-rm -f $(HTML_DIR)/$(ALIB)*.htm* - $(GNATHTML) -d -f $(ALIB)*.ads - for f in html/$(ALIB)*.htm*; do \ - a=`basename $$f` ; \ - sed -e 's/You may also.*body.*//' <$$f |\ - sed -e 's%GNAT%GNAT%g' |\ - sed -e 's%<A HREF%%g' |\ - sed -e 's/3X/3x/g' |\ - sed -e 's/$$\([ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxz0123456789_]*:.*\)\$$/@\1@/' |\ - sed -e 's%</A>%%g' > $$a.tmp ;\ - mv $$a.tmp $$f ;\ - done - @rm -f *.ad[sb] *.ali *.tmp - @for f in funcs.htm main.htm ; do \ - sed -e "\%\[ \]%d" < html/$$f > $$f ;\ - mv $$f html/$$f ;\ - done - @rm -f "html/funcs/ .htm" - @cp -pdrf html/* $(HTML_DIR)/ - @rm -rf html - -html : adahtml $(HTML_DIR)/table.html - @echo made $@ - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/Ada95/gen/gen.c b/deps/ncurses-5.9/Ada95/gen/gen.c deleted file mode 100644 index 30772b0..0000000 --- a/deps/ncurses-5.9/Ada95/gen/gen.c +++ /dev/null @@ -1,1568 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998,2010,2011 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, 1996 * - ****************************************************************************/ - -/* - Version Control - $Id: gen.c,v 1.59 2011/03/31 23:50:24 tom Exp $ - --------------------------------------------------------------------------*/ -/* - This program generates various record structures and constants from the - ncurses header file for the Ada95 packages. Essentially it produces - Ada95 source on stdout, which is then merged using m4 into a template - to produce the real source. - */ - -#ifdef HAVE_CONFIG_H -#include -#else -#include -#define HAVE_USE_DEFAULT_COLORS 1 -#endif - -#include -#include -#include -#include -#include - -#include -#include - -#define UChar(c) ((unsigned char)(c)) -#define RES_NAME "Reserved" - -static const char *model = ""; -static int little_endian = 0; - -typedef struct - { - const char *name; - unsigned long attr; - } -name_attribute_pair; - -static int -find_pos(char *s, unsigned len, int *low, int *high) -{ - unsigned int i, j; - int l = 0; - - *high = -1; - *low = (int)(8 * len); - - for (i = 0; i < len; i++, s++) - { - if (*s) - { - for (j = 0; j < 8 * sizeof(char); j++) - - { - if (((little_endian && ((*s) & 0x01)) || - (!little_endian && ((*s) & 0x80)))) - { - if (l > *high) - *high = l; - if (l < *low) - *low = l; - } - l++; - if (little_endian) - { - *s >>= 1; - } - else - { - *s = (char)(*s << 1); - } - } - } - else - l += 8; - } - return (*high >= 0 && (*low <= *high)) ? *low : -1; -} - -/* - * This helper routine generates a representation clause for a - * record type defined in the binding. - * We are only dealing with record types which are of 32 or 16 - * bit size, i.e. they fit into an (u)int or a (u)short. - */ -static void -gen_reps( - const name_attribute_pair * nap, /* array of name_attribute_pair records */ - const char *name, /* name of the represented record type */ - int len, /* size of the record in bytes */ - int bias) -{ - const char *unused_name = "Unused"; - int long_bits = (8 * (int)sizeof(unsigned long)); - int len_bits = (8 * len); - int i, j, n, l, cnt = 0, low, high; - int width = strlen(RES_NAME) + 3; - unsigned long a; - unsigned long mask = 0; - - assert(nap != NULL); - - for (i = 0; nap[i].name != (char *)0; i++) - { - cnt++; - l = (int)strlen(nap[i].name); - if (l > width) - width = l; - } - assert(width > 0); - - printf(" type %s is\n", name); - printf(" record\n"); - for (i = 0; nap[i].name != (char *)0; i++) - { - mask |= nap[i].attr; - printf(" %-*s : Boolean;\n", width, nap[i].name); - } - - /* - * Compute a mask for the unused bits in this target. - */ - mask = ~mask; - /* - * Bits in the biased area are unused by the target. - */ - for (j = 0; j < bias; ++j) - { - mask &= (unsigned long)(~(1L << j)); - } - /* - * Bits past the target's size are really unused. - */ - for (j = len_bits + bias; j < long_bits; ++j) - { - mask &= (unsigned long)(~(1L << j)); - } - if (mask != 0) - { - printf(" %-*s : Boolean;\n", width, unused_name); - } - printf(" end record;\n"); - printf(" pragma Convention (C, %s);\n\n", name); - - printf(" for %s use\n", name); - printf(" record\n"); - - for (i = 0; nap[i].name != (char *)0; i++) - { - a = nap[i].attr; - l = find_pos((char *)&a, sizeof(a), &low, &high); - if (l >= 0) - printf(" %-*s at 0 range %2d .. %2d;\n", width, nap[i].name, - low - bias, high - bias); - } - if (mask != 0) - { - l = find_pos((char *)&mask, sizeof(mask), &low, &high); - if (l >= 0) - printf(" %-*s at 0 range %2d .. %2d;\n", width, unused_name, - low - bias, high - bias); - } - i = 1; - n = cnt; - printf(" end record;\n"); - printf(" for %s'Size use %d;\n", name, len_bits); - printf(" -- Please note: this rep. clause is generated and may be\n"); - printf(" -- different on your system."); -} - -static void -chtype_rep(const char *name, attr_t mask) -{ - attr_t x = (attr_t)-1; - attr_t t = x & mask; - int low, high; - int l = find_pos((char *)&t, sizeof(t), &low, &high); - - if (l >= 0) - printf(" %-5s at 0 range %2d .. %2d;\n", name, low, high); -} - -static void -gen_chtype_rep(const char *name) -{ - printf(" for %s use\n record\n", name); - chtype_rep("Ch", A_CHARTEXT); - chtype_rep("Color", A_COLOR); - chtype_rep("Attr", (A_ATTRIBUTES & ~A_COLOR)); - printf(" end record;\n for %s'Size use %ld;\n", - name, (long)(8 * sizeof(chtype))); - - printf(" -- Please note: this rep. clause is generated and may be\n"); - printf(" -- different on your system.\n"); -} - -static void -mrep_rep(const char *name, void *rec) -{ - int low, high; - int l = find_pos((char *)rec, sizeof(MEVENT), &low, &high); - - if (l >= 0) - printf(" %-7s at 0 range %3d .. %3d;\n", name, low, high); -} - -static void -gen_mrep_rep(const char *name) -{ - MEVENT x; - - printf(" for %s use\n record\n", name); - - memset(&x, 0, sizeof(x)); - x.id = -1; - mrep_rep("Id", &x); - - memset(&x, 0, sizeof(x)); - x.x = -1; - mrep_rep("X", &x); - - memset(&x, 0, sizeof(x)); - x.y = -1; - mrep_rep("Y", &x); - - memset(&x, 0, sizeof(x)); - x.z = -1; - mrep_rep("Z", &x); - - memset(&x, 0, sizeof(x)); - x.bstate = (mmask_t) - 1; - mrep_rep("Bstate", &x); - - printf(" end record;\n"); - printf(" -- Please note: this rep. clause is generated and may be\n"); - printf(" -- different on your system.\n"); -} - -static void -gen_attr_set(const char *name) -{ - /* All of the A_xxx symbols are defined in ncurses, but not all are nonzero - * if "configure --enable-widec" is not specified. Originally (in - * 1999-2000), the ifdef's also were needed since the proposed bit-layout - * for wide characters allocated 16-bits for A_CHARTEXT, leaving too few - * bits for a few of the A_xxx symbols. - */ - static const name_attribute_pair nap[] = - { -#if A_STANDOUT - {"Stand_Out", A_STANDOUT}, -#endif -#if A_UNDERLINE - {"Under_Line", A_UNDERLINE}, -#endif -#if A_REVERSE - {"Reverse_Video", A_REVERSE}, -#endif -#if A_BLINK - {"Blink", A_BLINK}, -#endif -#if A_DIM - {"Dim_Character", A_DIM}, -#endif -#if A_BOLD - {"Bold_Character", A_BOLD}, -#endif -#if A_ALTCHARSET - {"Alternate_Character_Set", A_ALTCHARSET}, -#endif -#if A_INVIS - {"Invisible_Character", A_INVIS}, -#endif -#if A_PROTECT - {"Protected_Character", A_PROTECT}, -#endif -#if A_HORIZONTAL - {"Horizontal", A_HORIZONTAL}, -#endif -#if A_LEFT - {"Left", A_LEFT}, -#endif -#if A_LOW - {"Low", A_LOW}, -#endif -#if A_RIGHT - {"Right", A_RIGHT}, -#endif -#if A_TOP - {"Top", A_TOP}, -#endif -#if A_VERTICAL - {"Vertical", A_VERTICAL}, -#endif - {(char *)0, 0} - }; - chtype attr = A_ATTRIBUTES & ~A_COLOR; - int start = -1; - int len = 0; - int i; - chtype set; - for (i = 0; i < (int)(8 * sizeof(chtype)); i++) - - { - set = (attr & 1); - if (set) - { - if (start < 0) - start = i; - if (start >= 0) - { - len++; - } - } - attr = attr >> 1; - } - gen_reps(nap, name, (len + 7) / 8, little_endian ? start : 0); -} - -static void -gen_trace(const char *name) -{ - static const name_attribute_pair nap[] = - { - {"Times", TRACE_TIMES}, - {"Tputs", TRACE_TPUTS}, - {"Update", TRACE_UPDATE}, - {"Cursor_Move", TRACE_MOVE}, - {"Character_Output", TRACE_CHARPUT}, - {"Calls", TRACE_CALLS}, - {"Virtual_Puts", TRACE_VIRTPUT}, - {"Input_Events", TRACE_IEVENT}, - {"TTY_State", TRACE_BITS}, - {"Internal_Calls", TRACE_ICALLS}, - {"Character_Calls", TRACE_CCALLS}, - {"Termcap_TermInfo", TRACE_DATABASE}, - {"Attributes_And_Colors", TRACE_ATTRS}, - {(char *)0, 0} - }; - gen_reps(nap, name, sizeof(int), 0); -} - -static void -gen_menu_opt_rep(const char *name) -{ - static const name_attribute_pair nap[] = - { -#ifdef O_ONEVALUE - {"One_Valued", O_ONEVALUE}, -#endif -#ifdef O_SHOWDESC - {"Show_Descriptions", O_SHOWDESC}, -#endif -#ifdef O_ROWMAJOR - {"Row_Major_Order", O_ROWMAJOR}, -#endif -#ifdef O_IGNORECASE - {"Ignore_Case", O_IGNORECASE}, -#endif -#ifdef O_SHOWMATCH - {"Show_Matches", O_SHOWMATCH}, -#endif -#ifdef O_NONCYCLIC - {"Non_Cyclic", O_NONCYCLIC}, -#endif - {(char *)0, 0} - }; - gen_reps(nap, name, sizeof(int), 0); -} - -static void -gen_item_opt_rep(const char *name) -{ - static const name_attribute_pair nap[] = - { -#ifdef O_SELECTABLE - {"Selectable", O_SELECTABLE}, -#endif - {(char *)0, 0} - }; - gen_reps(nap, name, sizeof(int), 0); -} - -static void -gen_form_opt_rep(const char *name) -{ - static const name_attribute_pair nap[] = - { -#ifdef O_NL_OVERLOAD - {"NL_Overload", O_NL_OVERLOAD}, -#endif -#ifdef O_BS_OVERLOAD - {"BS_Overload", O_BS_OVERLOAD}, -#endif - {(char *)0, 0} - }; - gen_reps(nap, name, sizeof(int), 0); -} - -/* - * Generate the representation clause for the Field_Option_Set record - */ -static void -gen_field_opt_rep(const char *name) -{ - static const name_attribute_pair nap[] = - { -#ifdef O_VISIBLE - {"Visible", O_VISIBLE}, -#endif -#ifdef O_ACTIVE - {"Active", O_ACTIVE}, -#endif -#ifdef O_PUBLIC - {"Public", O_PUBLIC}, -#endif -#ifdef O_EDIT - {"Edit", O_EDIT}, -#endif -#ifdef O_WRAP - {"Wrap", O_WRAP}, -#endif -#ifdef O_BLANK - {"Blank", O_BLANK}, -#endif -#ifdef O_AUTOSKIP - {"Auto_Skip", O_AUTOSKIP}, -#endif -#ifdef O_NULLOK - {"Null_Ok", O_NULLOK}, -#endif -#ifdef O_PASSOK - {"Pass_Ok", O_PASSOK}, -#endif -#ifdef O_STATIC - {"Static", O_STATIC}, -#endif - {(char *)0, 0} - }; - gen_reps(nap, name, sizeof(int), 0); -} - -/* - * Generate a single key code constant definition. - */ -static void -keydef(const char *name, const char *old_name, int value, int mode) -{ - if (mode == 0) /* Generate the new name */ - printf(" %-30s : constant Special_Key_Code := 8#%3o#;\n", name, value); - else - { - const char *s = old_name; - const char *t = name; - - /* generate the old name, but only if it doesn't conflict with the old - * name (Ada95 isn't case sensitive!) - */ - while (*s && *t && (toupper(UChar(*s++)) == toupper(UChar(*t++)))); - if (*s || *t) - printf(" %-16s : Special_Key_Code renames %s;\n", old_name, name); - } -} - -/* - * Generate constants for the key codes. When called with mode==0, a - * complete list with nice constant names in proper casing style will - * be generated. Otherwise a list of old (i.e. C-style) names will be - * generated, given that the name wasn't already defined in the "nice" - * list. - */ -static void -gen_keydefs(int mode) -{ - char buf[16]; - char obuf[16]; - int i; - -#ifdef KEY_CODE_YES - keydef("Key_Code_Yes", "KEY_CODE_YES", KEY_CODE_YES, mode); -#endif -#ifdef KEY_MIN - keydef("Key_Min", "KEY_MIN", KEY_MIN, mode); -#endif -#ifdef KEY_BREAK - keydef("Key_Break", "KEY_BREAK", KEY_BREAK, mode); -#endif -#ifdef KEY_DOWN - keydef("Key_Cursor_Down", "KEY_DOWN", KEY_DOWN, mode); -#endif -#ifdef KEY_UP - keydef("Key_Cursor_Up", "KEY_UP", KEY_UP, mode); -#endif -#ifdef KEY_LEFT - keydef("Key_Cursor_Left", "KEY_LEFT", KEY_LEFT, mode); -#endif -#ifdef KEY_RIGHT - keydef("Key_Cursor_Right", "KEY_RIGHT", KEY_RIGHT, mode); -#endif -#ifdef KEY_HOME - keydef("Key_Home", "KEY_HOME", KEY_HOME, mode); -#endif -#ifdef KEY_BACKSPACE - keydef("Key_Backspace", "KEY_BACKSPACE", KEY_BACKSPACE, mode); -#endif -#ifdef KEY_F0 - keydef("Key_F0", "KEY_F0", KEY_F0, mode); -#endif -#ifdef KEY_F - for (i = 1; i <= 24; i++) - { - sprintf(buf, "Key_F%d", i); - sprintf(obuf, "KEY_F%d", i); - keydef(buf, obuf, KEY_F(i), mode); - } -#endif -#ifdef KEY_DL - keydef("Key_Delete_Line", "KEY_DL", KEY_DL, mode); -#endif -#ifdef KEY_IL - keydef("Key_Insert_Line", "KEY_IL", KEY_IL, mode); -#endif -#ifdef KEY_DC - keydef("Key_Delete_Char", "KEY_DC", KEY_DC, mode); -#endif -#ifdef KEY_IC - keydef("Key_Insert_Char", "KEY_IC", KEY_IC, mode); -#endif -#ifdef KEY_EIC - keydef("Key_Exit_Insert_Mode", "KEY_EIC", KEY_EIC, mode); -#endif -#ifdef KEY_CLEAR - keydef("Key_Clear_Screen", "KEY_CLEAR", KEY_CLEAR, mode); -#endif -#ifdef KEY_EOS - keydef("Key_Clear_End_Of_Screen", "KEY_EOS", KEY_EOS, mode); -#endif -#ifdef KEY_EOL - keydef("Key_Clear_End_Of_Line", "KEY_EOL", KEY_EOL, mode); -#endif -#ifdef KEY_SF - keydef("Key_Scroll_1_Forward", "KEY_SF", KEY_SF, mode); -#endif -#ifdef KEY_SR - keydef("Key_Scroll_1_Backward", "KEY_SR", KEY_SR, mode); -#endif -#ifdef KEY_NPAGE - keydef("Key_Next_Page", "KEY_NPAGE", KEY_NPAGE, mode); -#endif -#ifdef KEY_PPAGE - keydef("Key_Previous_Page", "KEY_PPAGE", KEY_PPAGE, mode); -#endif -#ifdef KEY_STAB - keydef("Key_Set_Tab", "KEY_STAB", KEY_STAB, mode); -#endif -#ifdef KEY_CTAB - keydef("Key_Clear_Tab", "KEY_CTAB", KEY_CTAB, mode); -#endif -#ifdef KEY_CATAB - keydef("Key_Clear_All_Tabs", "KEY_CATAB", KEY_CATAB, mode); -#endif -#ifdef KEY_ENTER - keydef("Key_Enter_Or_Send", "KEY_ENTER", KEY_ENTER, mode); -#endif -#ifdef KEY_SRESET - keydef("Key_Soft_Reset", "KEY_SRESET", KEY_SRESET, mode); -#endif -#ifdef KEY_RESET - keydef("Key_Reset", "KEY_RESET", KEY_RESET, mode); -#endif -#ifdef KEY_PRINT - keydef("Key_Print", "KEY_PRINT", KEY_PRINT, mode); -#endif -#ifdef KEY_LL - keydef("Key_Bottom", "KEY_LL", KEY_LL, mode); -#endif -#ifdef KEY_A1 - keydef("Key_Upper_Left_Of_Keypad", "KEY_A1", KEY_A1, mode); -#endif -#ifdef KEY_A3 - keydef("Key_Upper_Right_Of_Keypad", "KEY_A3", KEY_A3, mode); -#endif -#ifdef KEY_B2 - keydef("Key_Center_Of_Keypad", "KEY_B2", KEY_B2, mode); -#endif -#ifdef KEY_C1 - keydef("Key_Lower_Left_Of_Keypad", "KEY_C1", KEY_C1, mode); -#endif -#ifdef KEY_C3 - keydef("Key_Lower_Right_Of_Keypad", "KEY_C3", KEY_C3, mode); -#endif -#ifdef KEY_BTAB - keydef("Key_Back_Tab", "KEY_BTAB", KEY_BTAB, mode); -#endif -#ifdef KEY_BEG - keydef("Key_Beginning", "KEY_BEG", KEY_BEG, mode); -#endif -#ifdef KEY_CANCEL - keydef("Key_Cancel", "KEY_CANCEL", KEY_CANCEL, mode); -#endif -#ifdef KEY_CLOSE - keydef("Key_Close", "KEY_CLOSE", KEY_CLOSE, mode); -#endif -#ifdef KEY_COMMAND - keydef("Key_Command", "KEY_COMMAND", KEY_COMMAND, mode); -#endif -#ifdef KEY_COPY - keydef("Key_Copy", "KEY_COPY", KEY_COPY, mode); -#endif -#ifdef KEY_CREATE - keydef("Key_Create", "KEY_CREATE", KEY_CREATE, mode); -#endif -#ifdef KEY_END - keydef("Key_End", "KEY_END", KEY_END, mode); -#endif -#ifdef KEY_EXIT - keydef("Key_Exit", "KEY_EXIT", KEY_EXIT, mode); -#endif -#ifdef KEY_FIND - keydef("Key_Find", "KEY_FIND", KEY_FIND, mode); -#endif -#ifdef KEY_HELP - keydef("Key_Help", "KEY_HELP", KEY_HELP, mode); -#endif -#ifdef KEY_MARK - keydef("Key_Mark", "KEY_MARK", KEY_MARK, mode); -#endif -#ifdef KEY_MESSAGE - keydef("Key_Message", "KEY_MESSAGE", KEY_MESSAGE, mode); -#endif -#ifdef KEY_MOVE - keydef("Key_Move", "KEY_MOVE", KEY_MOVE, mode); -#endif -#ifdef KEY_NEXT - keydef("Key_Next", "KEY_NEXT", KEY_NEXT, mode); -#endif -#ifdef KEY_OPEN - keydef("Key_Open", "KEY_OPEN", KEY_OPEN, mode); -#endif -#ifdef KEY_OPTIONS - keydef("Key_Options", "KEY_OPTIONS", KEY_OPTIONS, mode); -#endif -#ifdef KEY_PREVIOUS - keydef("Key_Previous", "KEY_PREVIOUS", KEY_PREVIOUS, mode); -#endif -#ifdef KEY_REDO - keydef("Key_Redo", "KEY_REDO", KEY_REDO, mode); -#endif -#ifdef KEY_REFERENCE - keydef("Key_Reference", "KEY_REFERENCE", KEY_REFERENCE, mode); -#endif -#ifdef KEY_REFRESH - keydef("Key_Refresh", "KEY_REFRESH", KEY_REFRESH, mode); -#endif -#ifdef KEY_REPLACE - keydef("Key_Replace", "KEY_REPLACE", KEY_REPLACE, mode); -#endif -#ifdef KEY_RESTART - keydef("Key_Restart", "KEY_RESTART", KEY_RESTART, mode); -#endif -#ifdef KEY_RESUME - keydef("Key_Resume", "KEY_RESUME", KEY_RESUME, mode); -#endif -#ifdef KEY_SAVE - keydef("Key_Save", "KEY_SAVE", KEY_SAVE, mode); -#endif -#ifdef KEY_SBEG - keydef("Key_Shift_Begin", "KEY_SBEG", KEY_SBEG, mode); -#endif -#ifdef KEY_SCANCEL - keydef("Key_Shift_Cancel", "KEY_SCANCEL", KEY_SCANCEL, mode); -#endif -#ifdef KEY_SCOMMAND - keydef("Key_Shift_Command", "KEY_SCOMMAND", KEY_SCOMMAND, mode); -#endif -#ifdef KEY_SCOPY - keydef("Key_Shift_Copy", "KEY_SCOPY", KEY_SCOPY, mode); -#endif -#ifdef KEY_SCREATE - keydef("Key_Shift_Create", "KEY_SCREATE", KEY_SCREATE, mode); -#endif -#ifdef KEY_SDC - keydef("Key_Shift_Delete_Char", "KEY_SDC", KEY_SDC, mode); -#endif -#ifdef KEY_SDL - keydef("Key_Shift_Delete_Line", "KEY_SDL", KEY_SDL, mode); -#endif -#ifdef KEY_SELECT - keydef("Key_Select", "KEY_SELECT", KEY_SELECT, mode); -#endif -#ifdef KEY_SEND - keydef("Key_Shift_End", "KEY_SEND", KEY_SEND, mode); -#endif -#ifdef KEY_SEOL - keydef("Key_Shift_Clear_End_Of_Line", "KEY_SEOL", KEY_SEOL, mode); -#endif -#ifdef KEY_SEXIT - keydef("Key_Shift_Exit", "KEY_SEXIT", KEY_SEXIT, mode); -#endif -#ifdef KEY_SFIND - keydef("Key_Shift_Find", "KEY_SFIND", KEY_SFIND, mode); -#endif -#ifdef KEY_SHELP - keydef("Key_Shift_Help", "KEY_SHELP", KEY_SHELP, mode); -#endif -#ifdef KEY_SHOME - keydef("Key_Shift_Home", "KEY_SHOME", KEY_SHOME, mode); -#endif -#ifdef KEY_SIC - keydef("Key_Shift_Insert_Char", "KEY_SIC", KEY_SIC, mode); -#endif -#ifdef KEY_SLEFT - keydef("Key_Shift_Cursor_Left", "KEY_SLEFT", KEY_SLEFT, mode); -#endif -#ifdef KEY_SMESSAGE - keydef("Key_Shift_Message", "KEY_SMESSAGE", KEY_SMESSAGE, mode); -#endif -#ifdef KEY_SMOVE - keydef("Key_Shift_Move", "KEY_SMOVE", KEY_SMOVE, mode); -#endif -#ifdef KEY_SNEXT - keydef("Key_Shift_Next_Page", "KEY_SNEXT", KEY_SNEXT, mode); -#endif -#ifdef KEY_SOPTIONS - keydef("Key_Shift_Options", "KEY_SOPTIONS", KEY_SOPTIONS, mode); -#endif -#ifdef KEY_SPREVIOUS - keydef("Key_Shift_Previous_Page", "KEY_SPREVIOUS", KEY_SPREVIOUS, mode); -#endif -#ifdef KEY_SPRINT - keydef("Key_Shift_Print", "KEY_SPRINT", KEY_SPRINT, mode); -#endif -#ifdef KEY_SREDO - keydef("Key_Shift_Redo", "KEY_SREDO", KEY_SREDO, mode); -#endif -#ifdef KEY_SREPLACE - keydef("Key_Shift_Replace", "KEY_SREPLACE", KEY_SREPLACE, mode); -#endif -#ifdef KEY_SRIGHT - keydef("Key_Shift_Cursor_Right", "KEY_SRIGHT", KEY_SRIGHT, mode); -#endif -#ifdef KEY_SRSUME - keydef("Key_Shift_Resume", "KEY_SRSUME", KEY_SRSUME, mode); -#endif -#ifdef KEY_SSAVE - keydef("Key_Shift_Save", "KEY_SSAVE", KEY_SSAVE, mode); -#endif -#ifdef KEY_SSUSPEND - keydef("Key_Shift_Suspend", "KEY_SSUSPEND", KEY_SSUSPEND, mode); -#endif -#ifdef KEY_SUNDO - keydef("Key_Shift_Undo", "KEY_SUNDO", KEY_SUNDO, mode); -#endif -#ifdef KEY_SUSPEND - keydef("Key_Suspend", "KEY_SUSPEND", KEY_SUSPEND, mode); -#endif -#ifdef KEY_UNDO - keydef("Key_Undo", "KEY_UNDO", KEY_UNDO, mode); -#endif -#ifdef KEY_MOUSE - keydef("Key_Mouse", "KEY_MOUSE", KEY_MOUSE, mode); -#endif -#ifdef KEY_RESIZE - keydef("Key_Resize", "KEY_RESIZE", KEY_RESIZE, mode); -#endif -} - -/* - * Generate a constant with the given name. The second parameter - * is a reference to the ACS character in the acs_map[] array and - * will be translated into an index. - */ -static void -acs_def(const char *name, chtype *a) -{ - int c = (int)(a - &acs_map[0]); - - printf(" %-24s : constant Character := ", name); - if (isprint(UChar(c)) && (c != '`')) - printf("'%c';\n", c); - else - printf("Character'Val (%d);\n", c); -} - -/* - * Generate the constants for the ACS characters - */ -static void -gen_acs(void) -{ - printf(" type C_ACS_Map is array (Character'Val (0) .. Character'Val (127))\n"); - printf(" of Attributed_Character;\n"); -#if USE_REENTRANT || BROKEN_LINKER - printf(" type C_ACS_Ptr is access C_ACS_Map;\n"); - printf(" function ACS_Map return C_ACS_Ptr;\n"); - printf(" pragma Import (C, ACS_Map, \"" - NCURSES_WRAP_PREFIX - "acs_map\");\n"); -#else - printf(" ACS_Map : C_ACS_Map;\n"); - printf(" pragma Import (C, ACS_Map, \"acs_map\");\n"); -#endif - printf(" --\n"); - printf(" --\n"); - printf(" -- Constants for several characters from the Alternate Character Set\n"); - printf(" -- You must use these constants as indices into the ACS_Map array\n"); - printf(" -- to get the corresponding attributed character at runtime.\n"); - printf(" --\n"); - -#ifdef ACS_ULCORNER - acs_def("ACS_Upper_Left_Corner", &ACS_ULCORNER); -#endif -#ifdef ACS_LLCORNER - acs_def("ACS_Lower_Left_Corner", &ACS_LLCORNER); -#endif -#ifdef ACS_URCORNER - acs_def("ACS_Upper_Right_Corner", &ACS_URCORNER); -#endif -#ifdef ACS_LRCORNER - acs_def("ACS_Lower_Right_Corner", &ACS_LRCORNER); -#endif -#ifdef ACS_LTEE - acs_def("ACS_Left_Tee", &ACS_LTEE); -#endif -#ifdef ACS_RTEE - acs_def("ACS_Right_Tee", &ACS_RTEE); -#endif -#ifdef ACS_BTEE - acs_def("ACS_Bottom_Tee", &ACS_BTEE); -#endif -#ifdef ACS_TTEE - acs_def("ACS_Top_Tee", &ACS_TTEE); -#endif -#ifdef ACS_HLINE - acs_def("ACS_Horizontal_Line", &ACS_HLINE); -#endif -#ifdef ACS_VLINE - acs_def("ACS_Vertical_Line", &ACS_VLINE); -#endif -#ifdef ACS_PLUS - acs_def("ACS_Plus_Symbol", &ACS_PLUS); -#endif -#ifdef ACS_S1 - acs_def("ACS_Scan_Line_1", &ACS_S1); -#endif -#ifdef ACS_S9 - acs_def("ACS_Scan_Line_9", &ACS_S9); -#endif -#ifdef ACS_DIAMOND - acs_def("ACS_Diamond", &ACS_DIAMOND); -#endif -#ifdef ACS_CKBOARD - acs_def("ACS_Checker_Board", &ACS_CKBOARD); -#endif -#ifdef ACS_DEGREE - acs_def("ACS_Degree", &ACS_DEGREE); -#endif -#ifdef ACS_PLMINUS - acs_def("ACS_Plus_Minus", &ACS_PLMINUS); -#endif -#ifdef ACS_BULLET - acs_def("ACS_Bullet", &ACS_BULLET); -#endif -#ifdef ACS_LARROW - acs_def("ACS_Left_Arrow", &ACS_LARROW); -#endif -#ifdef ACS_RARROW - acs_def("ACS_Right_Arrow", &ACS_RARROW); -#endif -#ifdef ACS_DARROW - acs_def("ACS_Down_Arrow", &ACS_DARROW); -#endif -#ifdef ACS_UARROW - acs_def("ACS_Up_Arrow", &ACS_UARROW); -#endif -#ifdef ACS_BOARD - acs_def("ACS_Board_Of_Squares", &ACS_BOARD); -#endif -#ifdef ACS_LANTERN - acs_def("ACS_Lantern", &ACS_LANTERN); -#endif -#ifdef ACS_BLOCK - acs_def("ACS_Solid_Block", &ACS_BLOCK); -#endif -#ifdef ACS_S3 - acs_def("ACS_Scan_Line_3", &ACS_S3); -#endif -#ifdef ACS_S7 - acs_def("ACS_Scan_Line_7", &ACS_S7); -#endif -#ifdef ACS_LEQUAL - acs_def("ACS_Less_Or_Equal", &ACS_LEQUAL); -#endif -#ifdef ACS_GEQUAL - acs_def("ACS_Greater_Or_Equal", &ACS_GEQUAL); -#endif -#ifdef ACS_PI - acs_def("ACS_PI", &ACS_PI); -#endif -#ifdef ACS_NEQUAL - acs_def("ACS_Not_Equal", &ACS_NEQUAL); -#endif -#ifdef ACS_STERLING - acs_def("ACS_Sterling", &ACS_STERLING); -#endif -} - -#define GEN_EVENT(name,value) \ - printf(" %-25s : constant Event_Mask := 8#%011lo#;\n", \ - #name, value) - -#define GEN_MEVENT(name) \ - printf(" %-25s : constant Event_Mask := 8#%011lo#;\n", \ - #name, name) - -static void -gen_mouse_events(void) -{ - mmask_t all1 = 0; - mmask_t all2 = 0; - mmask_t all3 = 0; - mmask_t all4 = 0; - -#ifdef BUTTON1_RELEASED - GEN_MEVENT(BUTTON1_RELEASED); - all1 |= BUTTON1_RELEASED; -#endif -#ifdef BUTTON1_PRESSED - GEN_MEVENT(BUTTON1_PRESSED); - all1 |= BUTTON1_PRESSED; -#endif -#ifdef BUTTON1_CLICKED - GEN_MEVENT(BUTTON1_CLICKED); - all1 |= BUTTON1_CLICKED; -#endif -#ifdef BUTTON1_DOUBLE_CLICKED - GEN_MEVENT(BUTTON1_DOUBLE_CLICKED); - all1 |= BUTTON1_DOUBLE_CLICKED; -#endif -#ifdef BUTTON1_TRIPLE_CLICKED - GEN_MEVENT(BUTTON1_TRIPLE_CLICKED); - all1 |= BUTTON1_TRIPLE_CLICKED; -#endif -#ifdef BUTTON1_RESERVED_EVENT - GEN_MEVENT(BUTTON1_RESERVED_EVENT); - all1 |= BUTTON1_RESERVED_EVENT; -#endif -#ifdef BUTTON2_RELEASED - GEN_MEVENT(BUTTON2_RELEASED); - all2 |= BUTTON2_RELEASED; -#endif -#ifdef BUTTON2_PRESSED - GEN_MEVENT(BUTTON2_PRESSED); - all2 |= BUTTON2_PRESSED; -#endif -#ifdef BUTTON2_CLICKED - GEN_MEVENT(BUTTON2_CLICKED); - all2 |= BUTTON2_CLICKED; -#endif -#ifdef BUTTON2_DOUBLE_CLICKED - GEN_MEVENT(BUTTON2_DOUBLE_CLICKED); - all2 |= BUTTON2_DOUBLE_CLICKED; -#endif -#ifdef BUTTON2_TRIPLE_CLICKED - GEN_MEVENT(BUTTON2_TRIPLE_CLICKED); - all2 |= BUTTON2_TRIPLE_CLICKED; -#endif -#ifdef BUTTON2_RESERVED_EVENT - GEN_MEVENT(BUTTON2_RESERVED_EVENT); - all2 |= BUTTON2_RESERVED_EVENT; -#endif -#ifdef BUTTON3_RELEASED - GEN_MEVENT(BUTTON3_RELEASED); - all3 |= BUTTON3_RELEASED; -#endif -#ifdef BUTTON3_PRESSED - GEN_MEVENT(BUTTON3_PRESSED); - all3 |= BUTTON3_PRESSED; -#endif -#ifdef BUTTON3_CLICKED - GEN_MEVENT(BUTTON3_CLICKED); - all3 |= BUTTON3_CLICKED; -#endif -#ifdef BUTTON3_DOUBLE_CLICKED - GEN_MEVENT(BUTTON3_DOUBLE_CLICKED); - all3 |= BUTTON3_DOUBLE_CLICKED; -#endif -#ifdef BUTTON3_TRIPLE_CLICKED - GEN_MEVENT(BUTTON3_TRIPLE_CLICKED); - all3 |= BUTTON3_TRIPLE_CLICKED; -#endif -#ifdef BUTTON3_RESERVED_EVENT - GEN_MEVENT(BUTTON3_RESERVED_EVENT); - all3 |= BUTTON3_RESERVED_EVENT; -#endif -#ifdef BUTTON4_RELEASED - GEN_MEVENT(BUTTON4_RELEASED); - all4 |= BUTTON4_RELEASED; -#endif -#ifdef BUTTON4_PRESSED - GEN_MEVENT(BUTTON4_PRESSED); - all4 |= BUTTON4_PRESSED; -#endif -#ifdef BUTTON4_CLICKED - GEN_MEVENT(BUTTON4_CLICKED); - all4 |= BUTTON4_CLICKED; -#endif -#ifdef BUTTON4_DOUBLE_CLICKED - GEN_MEVENT(BUTTON4_DOUBLE_CLICKED); - all4 |= BUTTON4_DOUBLE_CLICKED; -#endif -#ifdef BUTTON4_TRIPLE_CLICKED - GEN_MEVENT(BUTTON4_TRIPLE_CLICKED); - all4 |= BUTTON4_TRIPLE_CLICKED; -#endif -#ifdef BUTTON4_RESERVED_EVENT - GEN_MEVENT(BUTTON4_RESERVED_EVENT); - all4 |= BUTTON4_RESERVED_EVENT; -#endif -#ifdef BUTTON_CTRL - GEN_MEVENT(BUTTON_CTRL); -#endif -#ifdef BUTTON_SHIFT - GEN_MEVENT(BUTTON_SHIFT); -#endif -#ifdef BUTTON_ALT - GEN_MEVENT(BUTTON_ALT); -#endif -#ifdef REPORT_MOUSE_POSITION - GEN_MEVENT(REPORT_MOUSE_POSITION); -#endif -#ifdef ALL_MOUSE_EVENTS - GEN_MEVENT(ALL_MOUSE_EVENTS); -#endif - - GEN_EVENT(BUTTON1_EVENTS, all1); - GEN_EVENT(BUTTON2_EVENTS, all2); - GEN_EVENT(BUTTON3_EVENTS, all3); - GEN_EVENT(BUTTON4_EVENTS, all4); -} - -static void -wrap_one_var(const char *c_var, - const char *c_type, - const char *ada_func, - const char *ada_type) -{ -#if USE_REENTRANT - /* must wrap variables */ - printf("\n"); - printf(" function %s return %s\n", ada_func, ada_type); - printf(" is\n"); - printf(" function Result return %s;\n", c_type); - printf(" pragma Import (C, Result, \"" NCURSES_WRAP_PREFIX "%s\");\n", c_var); - printf(" begin\n"); - if (strcmp(c_type, ada_type)) - printf(" return %s (Result);\n", ada_type); - else - printf(" return Result;\n"); - printf(" end %s;\n", ada_func); -#else - /* global variables are really global */ - printf("\n"); - printf(" function %s return %s\n", ada_func, ada_type); - printf(" is\n"); - printf(" Result : %s;\n", c_type); - printf(" pragma Import (C, Result, \"%s\");\n", c_var); - printf(" begin\n"); - if (strcmp(c_type, ada_type)) - printf(" return %s (Result);\n", ada_type); - else - printf(" return Result;\n"); - printf(" end %s;\n", ada_func); -#endif -} - -#define GEN_PUBLIC_VAR(c_var, c_type, ada_func, ada_type) \ - wrap_one_var(#c_var, #c_type, #ada_func, #ada_type) - -static void -gen_public_vars(void) -{ - GEN_PUBLIC_VAR(stdscr, Window, Standard_Window, Window); - GEN_PUBLIC_VAR(curscr, Window, Current_Window, Window); - GEN_PUBLIC_VAR(LINES, C_Int, Lines, Line_Count); - GEN_PUBLIC_VAR(COLS, C_Int, Columns, Column_Count); - GEN_PUBLIC_VAR(TABSIZE, C_Int, Tab_Size, Natural); - GEN_PUBLIC_VAR(COLORS, C_Int, Number_Of_Colors, Natural); - GEN_PUBLIC_VAR(COLOR_PAIRS, C_Int, Number_Of_Color_Pairs, Natural); -} - -/* - * Output some comment lines indicating that the file is generated. - * The name parameter is the name of the facility to be used in - * the comment. - */ -static void -prologue(const char *name) -{ - printf("-- %s binding.\n", name); - printf("-- This module is generated. Please don't change it manually!\n"); - printf("-- Run the generator instead.\n-- |"); - - printf("define(`M4_BIT_ORDER',`%s_Order_First')", - little_endian ? "Low" : "High"); -} - -/* - * Write the prologue for the curses facility and make sure that - * KEY_MIN and KEY_MAX are defined for the rest of this source. - */ -static void -basedefs(void) -{ - prologue("curses"); -#ifndef KEY_MAX -# define KEY_MAX 0777 -#endif - printf("define(`M4_KEY_MAX',`8#%o#')", KEY_MAX); -#ifndef KEY_MIN -# define KEY_MIN 0401 -#endif - if (KEY_MIN == 256) - { - fprintf(stderr, "Unexpected value for KEY_MIN: %d\n", KEY_MIN); - exit(1); - } - printf("define(`M4_SPECIAL_FIRST',`8#%o#')", KEY_MIN - 1); -} - -/* - * Write out the comment lines for the menu facility - */ -static void -menu_basedefs(void) -{ - prologue("menu"); -} - -/* - * Write out the comment lines for the form facility - */ -static void -form_basedefs(void) -{ - prologue("form"); -} - -/* - * Write out the comment lines for the mouse facility - */ -static void -mouse_basedefs(void) -{ - prologue("mouse"); -} - -/* - * Write the definition of a single color - */ -static void -color_def(const char *name, int value) -{ - printf(" %-16s : constant Color_Number := %d;\n", name, value); -} - -/* - * Generate all color definitions - */ -static void -gen_color(void) -{ -#if HAVE_USE_DEFAULT_COLORS - color_def("Default_Color", -1); -#endif -#ifdef COLOR_BLACK - color_def("Black", COLOR_BLACK); -#endif -#ifdef COLOR_RED - color_def("Red", COLOR_RED); -#endif -#ifdef COLOR_GREEN - color_def("Green", COLOR_GREEN); -#endif -#ifdef COLOR_YELLOW - color_def("Yellow", COLOR_YELLOW); -#endif -#ifdef COLOR_BLUE - color_def("Blue", COLOR_BLUE); -#endif -#ifdef COLOR_MAGENTA - color_def("Magenta", COLOR_MAGENTA); -#endif -#ifdef COLOR_CYAN - color_def("Cyan", COLOR_CYAN); -#endif -#ifdef COLOR_WHITE - color_def("White", COLOR_WHITE); -#endif -} - -/* - * Generate the linker options for the base facility - */ -static void -gen_linkopts(void) -{ - printf(" pragma Linker_Options (\"-lncurses%s\");\n", model); -} - -/* - * Generate the linker options for the menu facility - */ -static void -gen_menu_linkopts(void) -{ - printf(" pragma Linker_Options (\"-lmenu%s\");\n", model); -} - -/* - * Generate the linker options for the form facility - */ -static void -gen_form_linkopts(void) -{ - printf(" pragma Linker_Options (\"-lform%s\");\n", model); -} - -/* - * Generate the linker options for the panel facility - */ -static void -gen_panel_linkopts(void) -{ - printf(" pragma Linker_Options (\"-lpanel%s\");\n", model); -} - -static void -gen_version_info(void) -{ - static const char *v1 = - " NC_Major_Version : constant := %d; -- Major version of the library\n"; - static const char *v2 = - " NC_Minor_Version : constant := %d; -- Minor version of the library\n"; - static const char *v3 = - " NC_Version : constant String := %c%d.%d%c; -- Version of library\n"; - - printf(v1, NCURSES_VERSION_MAJOR); - printf(v2, NCURSES_VERSION_MINOR); - printf(v3, '"', NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR, '"'); -} - -static int -eti_gen(char *buf, int code, const char *name, int *etimin, int *etimax) -{ - sprintf(buf, " E_%-16s : constant Eti_Error := %d;\n", name, code); - if (code < *etimin) - *etimin = code; - if (code > *etimax) - *etimax = code; - return (int)strlen(buf); -} - -static void -gen_offsets(void) -{ - const char *s_bool = ""; - - if (sizeof(bool) == sizeof(char)) - { - s_bool = "char"; - } - else if (sizeof(bool) == sizeof(short)) - { - s_bool = "short"; - } - else if (sizeof(bool) == sizeof(int)) - { - s_bool = "int"; - } - printf(" Sizeof%-*s : constant Natural := %2ld; -- %s\n", - 12, "_bool", (long)sizeof(bool), "bool"); - - printf(" type Curses_Bool is mod 2 ** Interfaces.C.%s'Size;\n", s_bool); -} - -/* - * main() expects two arguments on the commandline, both single characters. - * The first character denotes the facility for which we generate output. - * Possible values are - * B - Base - * M - Menus - * F - Forms - * P - Pointer Device (Mouse) - * E - ETI base definitions - * - * The second character then denotes the specific output that should be - * generated for the selected facility. - */ -int -main(int argc, char *argv[]) -{ - int x = 0x12345678; - char *s = (char *)&x; - - if (*s == 0x78) - little_endian = 1; - - if (argc != 4) - exit(1); - model = *++argv; - - switch (argv[1][0]) - { - /* --------------------------------------------------------------- */ - case 'B': /* The Base facility */ - switch (argv[2][0]) - { - case 'A': /* chtype translation into Ada95 record type */ - gen_attr_set("Character_Attribute_Set"); - break; - case 'B': /* write some initial comment lines */ - basedefs(); - break; - case 'C': /* generate color constants */ - gen_color(); - break; - case 'D': /* generate displacements of fields in WINDOW struct. */ - gen_offsets(); - break; - case 'E': /* generate Mouse Event codes */ - gen_mouse_events(); - break; - case 'K': /* translation of keycodes */ - gen_keydefs(0); - break; - case 'L': /* generate the Linker_Options pragma */ - gen_linkopts(); - break; - case 'M': /* generate constants for the ACS characters */ - gen_acs(); - break; - case 'O': /* generate definitions of the old key code names */ - gen_keydefs(1); - break; - case 'P': /* generate definitions of the public variables */ - gen_public_vars(); - break; - case 'R': /* generate representation clause for Attributed character */ - gen_chtype_rep("Attributed_Character"); - break; - case 'T': /* generate the Trace info */ - gen_trace("Trace_Attribute_Set"); - break; - case 'V': /* generate version info */ - gen_version_info(); - break; - default: - break; - } - break; - /* --------------------------------------------------------------- */ - case 'M': /* The Menu facility */ - switch (argv[2][0]) - { - case 'R': /* generate representation clause for Menu_Option_Set */ - gen_menu_opt_rep("Menu_Option_Set"); - break; - case 'B': /* write some initial comment lines */ - menu_basedefs(); - break; - case 'L': /* generate the Linker_Options pragma */ - gen_menu_linkopts(); - break; - case 'I': /* generate representation clause for Item_Option_Set */ - gen_item_opt_rep("Item_Option_Set"); - break; - default: - break; - } - break; - /* --------------------------------------------------------------- */ - case 'F': /* The Form facility */ - switch (argv[2][0]) - { - case 'R': /* generate representation clause for Form_Option_Set */ - gen_form_opt_rep("Form_Option_Set"); - break; - case 'B': /* write some initial comment lines */ - form_basedefs(); - break; - case 'L': /* generate the Linker_Options pragma */ - gen_form_linkopts(); - break; - case 'I': /* generate representation clause for Field_Option_Set */ - gen_field_opt_rep("Field_Option_Set"); - break; - default: - break; - } - break; - /* --------------------------------------------------------------- */ - case 'P': /* The Pointer(=Mouse) facility */ - switch (argv[2][0]) - { - case 'B': /* write some initial comment lines */ - mouse_basedefs(); - break; - case 'M': /* generate representation clause for Mouse_Event */ - gen_mrep_rep("Mouse_Event"); - break; - case 'L': /* generate the Linker_Options pragma */ - gen_panel_linkopts(); - break; - default: - break; - } - break; - /* --------------------------------------------------------------- */ - case 'E': /* chtype size detection */ - switch (argv[2][0]) - { - case 'C': - { - const char *fmt = " type C_Chtype is new %s;\n"; - const char *afmt = " type C_AttrType is new %s;\n"; - - if (sizeof(chtype) == sizeof(int)) - { - if (sizeof(int) == sizeof(long)) - printf(fmt, "C_ULong"); - - else - printf(fmt, "C_UInt"); - } - else if (sizeof(chtype) == sizeof(long)) - { - printf(fmt, "C_ULong"); - } - else - printf("Error\n"); - - if (sizeof(attr_t) == sizeof(int)) - { - if (sizeof(int) == sizeof(long)) - printf(afmt, "C_ULong"); - - else - printf(afmt, "C_UInt"); - } - else if (sizeof(attr_t) == sizeof(long)) - { - printf(afmt, "C_ULong"); - } - else - printf("Error\n"); - - printf("define(`CF_CURSES_OK',`%d')", OK); - printf("define(`CF_CURSES_ERR',`%d')", ERR); - printf("define(`CF_CURSES_TRUE',`%d')", TRUE); - printf("define(`CF_CURSES_FALSE',`%d')", FALSE); - } - break; - case 'E': - { - char *buf = (char *)malloc(2048); - char *p = buf; - int etimin = E_OK; - int etimax = E_OK; - - if (p) - { - p += eti_gen(p, E_OK, "Ok", &etimin, &etimax); - p += eti_gen(p, E_SYSTEM_ERROR, "System_Error", &etimin, &etimax); - p += eti_gen(p, E_BAD_ARGUMENT, "Bad_Argument", &etimin, &etimax); - p += eti_gen(p, E_POSTED, "Posted", &etimin, &etimax); - p += eti_gen(p, E_CONNECTED, "Connected", &etimin, &etimax); - p += eti_gen(p, E_BAD_STATE, "Bad_State", &etimin, &etimax); - p += eti_gen(p, E_NO_ROOM, "No_Room", &etimin, &etimax); - p += eti_gen(p, E_NOT_POSTED, "Not_Posted", &etimin, &etimax); - p += eti_gen(p, E_UNKNOWN_COMMAND, - "Unknown_Command", &etimin, &etimax); - p += eti_gen(p, E_NO_MATCH, "No_Match", &etimin, &etimax); - p += eti_gen(p, E_NOT_SELECTABLE, - "Not_Selectable", &etimin, &etimax); - p += eti_gen(p, E_NOT_CONNECTED, - "Not_Connected", &etimin, &etimax); - p += eti_gen(p, E_REQUEST_DENIED, - "Request_Denied", &etimin, &etimax); - p += eti_gen(p, E_INVALID_FIELD, - "Invalid_Field", &etimin, &etimax); - p += eti_gen(p, E_CURRENT, - "Current", &etimin, &etimax); - } - printf(" subtype Eti_Error is C_Int range %d .. %d;\n\n", - etimin, etimax); - printf("%s", buf); - } - break; - default: - break; - } - break; - /* --------------------------------------------------------------- */ - case 'V': /* plain version dump */ - { - switch (argv[2][0]) - { - case '1': /* major version */ -#ifdef NCURSES_VERSION_MAJOR - printf("%d", NCURSES_VERSION_MAJOR); -#endif - break; - case '2': /* minor version */ -#ifdef NCURSES_VERSION_MINOR - printf("%d", NCURSES_VERSION_MINOR); -#endif - break; - case '3': /* patch level */ -#ifdef NCURSES_VERSION_PATCH - printf("%d", NCURSES_VERSION_PATCH); -#endif - break; - default: - break; - } - } - break; - /* --------------------------------------------------------------- */ - default: - break; - } - return 0; -} diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-aux.ads.m4 b/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-aux.ads.m4 deleted file mode 100644 index 111ec69..0000000 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-aux.ads.m4 +++ /dev/null @@ -1,105 +0,0 @@ --- -*- ada -*- -define(`HTMLNAME',`terminal_interface-curses-aux__ads.htm')dnl -include(M4MACRO)dnl ------------------------------------------------------------------------------- --- -- --- GNAT ncurses Binding -- --- -- --- Terminal_Interface.Curses.Aux -- --- -- --- S P E C -- --- -- ------------------------------------------------------------------------------- --- Copyright (c) 1998-2009,2011 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, 1996 --- Version Control: --- $Revision: 1.18 $ --- Binding Version 01.00 ------------------------------------------------------------------------------- -include(`Base_Defs') -with System; -with Interfaces.C; -with Interfaces.C.Strings; use Interfaces.C.Strings; -with Unchecked_Conversion; - -package Terminal_Interface.Curses.Aux is - pragma Preelaborate (Terminal_Interface.Curses.Aux); - - use type Interfaces.C.int; - - subtype C_Int is Interfaces.C.int; - subtype C_Short is Interfaces.C.short; - subtype C_Long_Int is Interfaces.C.long; - subtype C_Size_T is Interfaces.C.size_t; - subtype C_UInt is Interfaces.C.unsigned; - subtype C_ULong is Interfaces.C.unsigned_long; - subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr; - type C_Void_Ptr is new System.Address; -include(`Chtype_Def') - -- This is how those constants are defined in ncurses. I see them also - -- exactly like this in all ETI implementations I ever tested. So it - -- could be that this is quite general, but please check with your curses. - -- This is critical, because curses sometime mixes Boolean returns with - -- returning an error status. - Curses_Ok : constant C_Int := CF_CURSES_OK; - Curses_Err : constant C_Int := CF_CURSES_ERR; - - Curses_True : constant C_Int := CF_CURSES_TRUE; - Curses_False : constant C_Int := CF_CURSES_FALSE; - - -- Eti_Error: type for error codes returned by the menu and form subsystem -include(`Eti_Defs') - procedure Eti_Exception (Code : Eti_Error); - -- Dispatch the error code and raise the appropriate exception - -- - -- - -- Some helpers - function Chtype_To_AttrChar is new - Unchecked_Conversion (Source => C_Chtype, - Target => Attributed_Character); - function AttrChar_To_Chtype is new - Unchecked_Conversion (Source => Attributed_Character, - Target => C_Chtype); - - function AttrChar_To_AttrType is new - Unchecked_Conversion (Source => Attributed_Character, - Target => C_AttrType); - - function AttrType_To_AttrChar is new - Unchecked_Conversion (Source => C_AttrType, - Target => Attributed_Character); - - procedure Fill_String (Cp : chars_ptr; - Str : out String); - -- Fill the Str parameter with the string denoted by the chars_ptr - -- C-Style string. - - function Fill_String (Cp : chars_ptr) return String; - -- Same but as function. - -end Terminal_Interface.Curses.Aux; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-trace.ads.m4 b/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-trace.ads.m4 deleted file mode 100644 index 546004f..0000000 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-trace.ads.m4 +++ /dev/null @@ -1,78 +0,0 @@ --- -*- ada -*- -define(`HTMLNAME',`terminal_interface-curses-trace__ads.htm')dnl -include(M4MACRO)------------------------------------------------------------------------------ --- -- --- GNAT ncurses Binding -- --- -- --- Terminal_Interface.Curses.Trace -- --- -- --- S P E C -- --- -- ------------------------------------------------------------------------------- --- Copyright (c) 2000 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: Eugene V. Melaragno 2000 --- Version Control: --- $Revision: 1.1 $ --- Binding Version 01.00 ------------------------------------------------------------------------------- - -package Terminal_Interface.Curses.Trace is - pragma Preelaborate (Terminal_Interface.Curses.Trace); - - pragma Warnings (Off); -include(`Trace_Defs') - - pragma Warnings (On); - - Trace_Disable : constant Trace_Attribute_Set := (others => False); - - Trace_Ordinary : constant Trace_Attribute_Set := - (Times => True, - Tputs => True, - Update => True, - Cursor_Move => True, - Character_Output => True, - others => False); - Trace_Maximum : constant Trace_Attribute_Set := (others => True); - ------------------------------------------------------------------------------- - - -- MANPAGE(`curs_trace.3x') - - -- ANCHOR(`trace()',`Trace_on') - procedure Trace_On (x : Trace_Attribute_Set); - -- The debugging library has trace. - - -- ANCHOR(`_tracef()',`Trace_Put') - procedure Trace_Put (str : String); - -- AKA - - Current_Trace_Setting : Trace_Attribute_Set; - pragma Import (C, Current_Trace_Setting, "_nc_tracing"); - -end Terminal_Interface.Curses.Trace; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses.ads.m4 b/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses.ads.m4 deleted file mode 100644 index 28cc9d1..0000000 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses.ads.m4 +++ /dev/null @@ -1,1559 +0,0 @@ --- -*- ada -*- -define(`HTMLNAME',`terminal_interface-curses__ads.htm')dnl -include(M4MACRO)------------------------------------------------------------------------------ --- -- --- GNAT ncurses Binding -- --- -- --- Terminal_Interface.Curses -- --- -- --- S P E C -- --- -- ------------------------------------------------------------------------------- --- Copyright (c) 1998-2009,2011 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, 1996 --- Version Control: --- $Revision: 1.44 $ --- $Date: 2011/03/19 23:05:56 $ --- Binding Version 01.00 ------------------------------------------------------------------------------- -include(`Base_Defs') -with System.Storage_Elements; -with Interfaces.C; -- We need this for some assertions. - -package Terminal_Interface.Curses is - pragma Preelaborate (Terminal_Interface.Curses); -include(`Linker_Options') -include(`Version_Info') - type Window is private; - Null_Window : constant Window; - - type Line_Position is new Integer; -- line coordinate - type Column_Position is new Integer; -- column coordinate - - subtype Line_Count is Line_Position range 1 .. Line_Position'Last; - -- Type to count lines. We do not allow null windows, so must be positive - subtype Column_Count is Column_Position range 1 .. Column_Position'Last; - -- Type to count columns. We do not allow null windows, so must be positive - - type Key_Code is new Integer; - -- That is anything including real characters, special keys and logical - -- request codes. - - -- FIXME: The "-1" should be Curses_Err - subtype Real_Key_Code is Key_Code range -1 .. M4_KEY_MAX; - -- This are the codes that potentially represent a real keystroke. - -- Not all codes may be possible on a specific terminal. To check the - -- availability of a special key, the Has_Key function is provided. - - subtype Special_Key_Code is Real_Key_Code - range M4_SPECIAL_FIRST .. Real_Key_Code'Last; - -- Type for a function- or special key number - - subtype Normal_Key_Code is Real_Key_Code range - Character'Pos (Character'First) .. Character'Pos (Character'Last); - -- This are the codes for regular (incl. non-graphical) characters. - - -- Constants for function- and special keys - -- - Key_None : constant Special_Key_Code := M4_SPECIAL_FIRST; -include(`Key_Definitions') - Key_Max : constant Special_Key_Code - := Special_Key_Code'Last; - - subtype User_Key_Code is Key_Code - range (Key_Max + 129) .. Key_Code'Last; - -- This is reserved for user defined key codes. The range between Key_Max - -- and the first user code is reserved for subsystems like menu and forms. - - -- For those who like to use the original key names we produce them were - -- they differ from the original. Please note that they may differ in - -- lower/upper case. -include(`Old_Keys')dnl - ------------------------------------------------------------------------------- - - type Color_Number is range -1 .. Integer (Interfaces.C.short'Last); - for Color_Number'Size use Interfaces.C.short'Size; - -- (n)curses uses a short for the color index - -- The model is, that a Color_Number is an index into an array of - -- (potentially) definable colors. Some of those indices are - -- predefined (see below), although they may not really exist. - -include(`Color_Defs') - type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last); - for RGB_Value'Size use Interfaces.C.short'Size; - -- Some system may allow to redefine a color by setting RGB values. - - type Color_Pair is range 0 .. 255; - for Color_Pair'Size use 8; - subtype Redefinable_Color_Pair is Color_Pair range 1 .. 255; - -- (n)curses reserves 1 Byte for the color-pair number. Color Pair 0 - -- is fixed (Black & White). A color pair is simply a combination of - -- two colors described by Color_Numbers, one for the foreground and - -- the other for the background - -include(`Character_Attribute_Set_Rep') - -- (n)curses uses all but the lowest 16 Bits for Attributes. - - Normal_Video : constant Character_Attribute_Set := (others => False); - - type Attributed_Character is - record - Attr : Character_Attribute_Set; - Color : Color_Pair; - Ch : Character; - end record; - pragma Convention (C, Attributed_Character); - -- This is the counterpart for the chtype in C. - -include(`AC_Rep') - Default_Character : constant Attributed_Character - := (Ch => Character'First, - Color => Color_Pair'First, - Attr => (others => False)); -- preelaboratable Normal_Video - - type Attributed_String is array (Positive range <>) of Attributed_Character; - pragma Pack (Attributed_String); - -- In this binding we allow strings of attributed characters. - - ------------------ - -- Exceptions -- - ------------------ - Curses_Exception : exception; - Wrong_Curses_Version : exception; - - -- Those exceptions are raised by the ETI (Extended Terminal Interface) - -- subpackets for Menu and Forms handling. - -- - Eti_System_Error : exception; - Eti_Bad_Argument : exception; - Eti_Posted : exception; - Eti_Connected : exception; - Eti_Bad_State : exception; - Eti_No_Room : exception; - Eti_Not_Posted : exception; - Eti_Unknown_Command : exception; - Eti_No_Match : exception; - Eti_Not_Selectable : exception; - Eti_Not_Connected : exception; - Eti_Request_Denied : exception; - Eti_Invalid_Field : exception; - Eti_Current : exception; - - -------------------------------------------------------------------------- - -- External C variables - -- Conceptually even in C this are kind of constants, but they are - -- initialized and sometimes changed by the library routines at runtime - -- depending on the type of terminal. I believe the best way to model - -- this is to use functions. - -------------------------------------------------------------------------- - - function Lines return Line_Count; - pragma Inline (Lines); - - function Columns return Column_Count; - pragma Inline (Columns); - - function Tab_Size return Natural; - pragma Inline (Tab_Size); - - function Number_Of_Colors return Natural; - pragma Inline (Number_Of_Colors); - - function Number_Of_Color_Pairs return Natural; - pragma Inline (Number_Of_Color_Pairs); - -include(`ACS_Map')dnl - - -- MANPAGE(`curs_initscr.3x') - -- | Not implemented: newterm, set_term, delscreen - - -- ANCHOR(`stdscr',`Standard_Window') - function Standard_Window return Window; - -- AKA - pragma Inline (Standard_Window); - - -- ANCHOR(`curscr',`Current_Window') - function Current_Window return Window; - -- AKA - pragma Inline (Current_Window); - - -- ANCHOR(`initscr()',`Init_Screen') - procedure Init_Screen; - - -- ANCHOR(`initscr()',`Init_Windows') - procedure Init_Windows renames Init_Screen; - -- AKA - pragma Inline (Init_Screen); - -- pragma Inline (Init_Windows); - - -- ANCHOR(`endwin()',`End_Windows') - procedure End_Windows; - -- AKA - procedure End_Screen renames End_Windows; - pragma Inline (End_Windows); - -- pragma Inline (End_Screen); - - -- ANCHOR(`isendwin()',`Is_End_Window') - function Is_End_Window return Boolean; - -- AKA - pragma Inline (Is_End_Window); - - -- MANPAGE(`curs_move.3x') - - -- ANCHOR(`wmove()',`Move_Cursor') - procedure Move_Cursor (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position); - -- AKA - -- ALIAS(`move()') - pragma Inline (Move_Cursor); - - -- MANPAGE(`curs_addch.3x') - - -- ANCHOR(`waddch()',`Add') - procedure Add (Win : Window := Standard_Window; - Ch : Attributed_Character); - -- AKA - -- ALIAS(`addch()') - - procedure Add (Win : Window := Standard_Window; - Ch : Character); - -- Add a single character at the current logical cursor position to - -- the window. Use the current windows attributes. - - -- ANCHOR(`mvwaddch()',`Add') - procedure Add - (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Ch : Attributed_Character); - -- AKA - -- ALIAS(`mvaddch()') - - procedure Add - (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Ch : Character); - -- Move to the position and add a single character into the window - -- There are more Add routines, so the Inline pragma follows later - - -- ANCHOR(`wechochar()',`Add_With_Immediate_Echo') - procedure Add_With_Immediate_Echo - (Win : Window := Standard_Window; - Ch : Attributed_Character); - -- AKA - -- ALIAS(`echochar()') - - procedure Add_With_Immediate_Echo - (Win : Window := Standard_Window; - Ch : Character); - -- Add a character and do an immediate refresh of the screen. - pragma Inline (Add_With_Immediate_Echo); - - -- MANPAGE(`curs_window.3x') - -- Not Implemented: wcursyncup - - -- ANCHOR(`newwin()',`Create') - function Create - (Number_Of_Lines : Line_Count; - Number_Of_Columns : Column_Count; - First_Line_Position : Line_Position; - First_Column_Position : Column_Position) return Window; - -- Not Implemented: Default Number_Of_Lines, Number_Of_Columns - -- the C version lets them be 0, see the man page. - -- AKA - pragma Inline (Create); - - function New_Window - (Number_Of_Lines : Line_Count; - Number_Of_Columns : Column_Count; - First_Line_Position : Line_Position; - First_Column_Position : Column_Position) return Window - renames Create; - -- pragma Inline (New_Window); - - -- ANCHOR(`delwin()',`Delete') - procedure Delete (Win : in out Window); - -- AKA - -- Reset Win to Null_Window - pragma Inline (Delete); - - -- ANCHOR(`subwin()',`Sub_Window') - function Sub_Window - (Win : Window := Standard_Window; - Number_Of_Lines : Line_Count; - Number_Of_Columns : Column_Count; - First_Line_Position : Line_Position; - First_Column_Position : Column_Position) return Window; - -- AKA - pragma Inline (Sub_Window); - - -- ANCHOR(`derwin()',`Derived_Window') - function Derived_Window - (Win : Window := Standard_Window; - Number_Of_Lines : Line_Count; - Number_Of_Columns : Column_Count; - First_Line_Position : Line_Position; - First_Column_Position : Column_Position) return Window; - -- AKA - pragma Inline (Derived_Window); - - -- ANCHOR(`dupwin()',`Duplicate') - function Duplicate (Win : Window) return Window; - -- AKA - pragma Inline (Duplicate); - - -- ANCHOR(`mvwin()',`Move_Window') - procedure Move_Window (Win : Window; - Line : Line_Position; - Column : Column_Position); - -- AKA - pragma Inline (Move_Window); - - -- ANCHOR(`mvderwin()',`Move_Derived_Window') - procedure Move_Derived_Window (Win : Window; - Line : Line_Position; - Column : Column_Position); - -- AKA - pragma Inline (Move_Derived_Window); - - -- ANCHOR(`wsyncup()',`Synchronize_Upwards') - procedure Synchronize_Upwards (Win : Window); - -- AKA - pragma Import (C, Synchronize_Upwards, "wsyncup"); - - -- ANCHOR(`wsyncdown()',`Synchronize_Downwards') - procedure Synchronize_Downwards (Win : Window); - -- AKA - pragma Import (C, Synchronize_Downwards, "wsyncdown"); - - -- ANCHOR(`syncok()',`Set_Synch_Mode') - procedure Set_Synch_Mode (Win : Window := Standard_Window; - Mode : Boolean := False); - -- AKA - pragma Inline (Set_Synch_Mode); - - -- MANPAGE(`curs_addstr.3x') - - -- ANCHOR(`waddnstr()',`Add') - procedure Add (Win : Window := Standard_Window; - Str : String; - Len : Integer := -1); - -- AKA - -- ALIAS(`waddstr()') - -- ALIAS(`addnstr()') - -- ALIAS(`addstr()') - - -- ANCHOR(`mvwaddnstr()',`Add') - procedure Add (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Str : String; - Len : Integer := -1); - -- AKA - -- ALIAS(`mvwaddstr()') - -- ALIAS(`mvaddnstr()') - -- ALIAS(`mvaddstr()') - - -- MANPAGE(`curs_addchstr.3x') - - -- ANCHOR(`waddchnstr()',`Add') - procedure Add (Win : Window := Standard_Window; - Str : Attributed_String; - Len : Integer := -1); - -- AKA - -- ALIAS(`waddchstr()') - -- ALIAS(`addchnstr()') - -- ALIAS(`addchstr()') - - -- ANCHOR(`mvwaddchnstr()',`Add') - procedure Add (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Str : Attributed_String; - Len : Integer := -1); - -- AKA - -- ALIAS(`mvwaddchstr()') - -- ALIAS(`mvaddchnstr()') - -- ALIAS(`mvaddchstr()') - pragma Inline (Add); - - -- MANPAGE(`curs_border.3x') - -- | Not implemented: mvhline, mvwhline, mvvline, mvwvline - -- | use Move_Cursor then Horizontal_Line or Vertical_Line - - -- ANCHOR(`wborder()',`Border') - procedure Border - (Win : Window := Standard_Window; - Left_Side_Symbol : Attributed_Character := Default_Character; - Right_Side_Symbol : Attributed_Character := Default_Character; - Top_Side_Symbol : Attributed_Character := Default_Character; - Bottom_Side_Symbol : Attributed_Character := Default_Character; - Upper_Left_Corner_Symbol : Attributed_Character := Default_Character; - Upper_Right_Corner_Symbol : Attributed_Character := Default_Character; - Lower_Left_Corner_Symbol : Attributed_Character := Default_Character; - Lower_Right_Corner_Symbol : Attributed_Character := Default_Character - ); - -- AKA - -- ALIAS(`border()') - pragma Inline (Border); - - -- ANCHOR(`box()',`Box') - procedure Box - (Win : Window := Standard_Window; - Vertical_Symbol : Attributed_Character := Default_Character; - Horizontal_Symbol : Attributed_Character := Default_Character); - -- AKA - pragma Inline (Box); - - -- ANCHOR(`whline()',`Horizontal_Line') - procedure Horizontal_Line - (Win : Window := Standard_Window; - Line_Size : Natural; - Line_Symbol : Attributed_Character := Default_Character); - -- AKA - -- ALIAS(`hline()') - pragma Inline (Horizontal_Line); - - -- ANCHOR(`wvline()',`Vertical_Line') - procedure Vertical_Line - (Win : Window := Standard_Window; - Line_Size : Natural; - Line_Symbol : Attributed_Character := Default_Character); - -- AKA - -- ALIAS(`vline()') - pragma Inline (Vertical_Line); - - -- MANPAGE(`curs_getch.3x') - -- Not implemented: mvgetch, mvwgetch - - -- ANCHOR(`wgetch()',`Get_Keystroke') - function Get_Keystroke (Win : Window := Standard_Window) - return Real_Key_Code; - -- AKA - -- ALIAS(`getch()') - -- Get a character from the keyboard and echo it - if enabled - to the - -- window. - -- If for any reason (i.e. a timeout) we could not get a character the - -- returned keycode is Key_None. - pragma Inline (Get_Keystroke); - - -- ANCHOR(`ungetch()',`Undo_Keystroke') - procedure Undo_Keystroke (Key : Real_Key_Code); - -- AKA - pragma Inline (Undo_Keystroke); - - -- ANCHOR(`has_key()',`Has_Key') - function Has_Key (Key : Special_Key_Code) return Boolean; - -- AKA - pragma Inline (Has_Key); - - -- | - -- | Some helper functions - -- | - function Is_Function_Key (Key : Special_Key_Code) return Boolean; - -- Return True if the Key is a function key (i.e. one of F0 .. F63) - pragma Inline (Is_Function_Key); - - subtype Function_Key_Number is Integer range 0 .. 63; - -- (n)curses allows for 64 function keys. - - function Function_Key (Key : Real_Key_Code) return Function_Key_Number; - -- Return the number of the function key. If the code is not a - -- function key, a CONSTRAINT_ERROR will be raised. - pragma Inline (Function_Key); - - function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code; - -- Return the key code for a given function-key number. - pragma Inline (Function_Key_Code); - - -- MANPAGE(`curs_attr.3x') - -- | Not implemented attr_off, wattr_off, - -- | attr_on, wattr_on, attr_set, wattr_set - - -- PAIR_NUMBER - -- PAIR_NUMBER(c) is the same as c.Color - - -- ANCHOR(`standout()',`Standout') - procedure Standout (Win : Window := Standard_Window; - On : Boolean := True); - -- ALIAS(`wstandout()') - -- ALIAS(`wstandend()') - - -- ANCHOR(`wattron()',`Switch_Character_Attribute') - procedure Switch_Character_Attribute - (Win : Window := Standard_Window; - Attr : Character_Attribute_Set := Normal_Video; - On : Boolean := True); -- if False we switch Off. - -- Switches those Attributes set to true in the list. - -- AKA - -- ALIAS(`wattroff()') - -- ALIAS(`attron()') - -- ALIAS(`attroff()') - - -- ANCHOR(`wattrset()',`Set_Character_Attributes') - procedure Set_Character_Attributes - (Win : Window := Standard_Window; - Attr : Character_Attribute_Set := Normal_Video; - Color : Color_Pair := Color_Pair'First); - -- AKA - -- ALIAS(`attrset()') - pragma Inline (Set_Character_Attributes); - - -- ANCHOR(`wattr_get()',`Get_Character_Attributes') - function Get_Character_Attribute - (Win : Window := Standard_Window) return Character_Attribute_Set; - -- AKA - -- ALIAS(`attr_get()') - - -- ANCHOR(`wattr_get()',`Get_Character_Attribute') - function Get_Character_Attribute - (Win : Window := Standard_Window) return Color_Pair; - -- AKA - pragma Inline (Get_Character_Attribute); - - -- ANCHOR(`wcolor_set()',`Set_Color') - procedure Set_Color (Win : Window := Standard_Window; - Pair : Color_Pair); - -- AKA - -- ALIAS(`color_set()') - pragma Inline (Set_Color); - - -- ANCHOR(`wchgat()',`Change_Attributes') - procedure Change_Attributes - (Win : Window := Standard_Window; - Count : Integer := -1; - Attr : Character_Attribute_Set := Normal_Video; - Color : Color_Pair := Color_Pair'First); - -- AKA - -- ALIAS(`chgat()') - - -- ANCHOR(`mvwchgat()',`Change_Attributes') - procedure Change_Attributes - (Win : Window := Standard_Window; - Line : Line_Position := Line_Position'First; - Column : Column_Position := Column_Position'First; - Count : Integer := -1; - Attr : Character_Attribute_Set := Normal_Video; - Color : Color_Pair := Color_Pair'First); - -- AKA - -- ALIAS(`mvchgat()') - pragma Inline (Change_Attributes); - - -- MANPAGE(`curs_beep.3x') - - -- ANCHOR(`beep()',`Beep') - procedure Beep; - -- AKA - pragma Inline (Beep); - - -- ANCHOR(`flash()',`Flash_Screen') - procedure Flash_Screen; - -- AKA - pragma Inline (Flash_Screen); - - -- MANPAGE(`curs_inopts.3x') - - -- | Not implemented : typeahead - -- - -- ANCHOR(`cbreak()',`Set_Cbreak_Mode') - procedure Set_Cbreak_Mode (SwitchOn : Boolean := True); - -- AKA - -- ALIAS(`nocbreak()') - pragma Inline (Set_Cbreak_Mode); - - -- ANCHOR(`raw()',`Set_Raw_Mode') - procedure Set_Raw_Mode (SwitchOn : Boolean := True); - -- AKA - -- ALIAS(`noraw()') - pragma Inline (Set_Raw_Mode); - - -- ANCHOR(`echo()',`Set_Echo_Mode') - procedure Set_Echo_Mode (SwitchOn : Boolean := True); - -- AKA - -- ALIAS(`noecho()') - pragma Inline (Set_Echo_Mode); - - -- ANCHOR(`meta()',`Set_Meta_Mode') - procedure Set_Meta_Mode (Win : Window := Standard_Window; - SwitchOn : Boolean := True); - -- AKA - pragma Inline (Set_Meta_Mode); - - -- ANCHOR(`keypad()',`Set_KeyPad_Mode') - procedure Set_KeyPad_Mode (Win : Window := Standard_Window; - SwitchOn : Boolean := True); - -- AKA - pragma Inline (Set_KeyPad_Mode); - - function Get_KeyPad_Mode (Win : Window := Standard_Window) - return Boolean; - -- This has no pendant in C. There you've to look into the WINDOWS - -- structure to get the value. Bad practice, not repeated in Ada. - - type Half_Delay_Amount is range 1 .. 255; - - -- ANCHOR(`halfdelay()',`Half_Delay') - procedure Half_Delay (Amount : Half_Delay_Amount); - -- AKA - pragma Inline (Half_Delay); - - -- ANCHOR(`intrflush()',`Set_Flush_On_Interrupt_Mode') - procedure Set_Flush_On_Interrupt_Mode - (Win : Window := Standard_Window; - Mode : Boolean := True); - -- AKA - pragma Inline (Set_Flush_On_Interrupt_Mode); - - -- ANCHOR(`qiflush()',`Set_Queue_Interrupt_Mode') - procedure Set_Queue_Interrupt_Mode - (Win : Window := Standard_Window; - Flush : Boolean := True); - -- AKA - -- ALIAS(`noqiflush()') - pragma Inline (Set_Queue_Interrupt_Mode); - - -- ANCHOR(`nodelay()',`Set_NoDelay_Mode') - procedure Set_NoDelay_Mode - (Win : Window := Standard_Window; - Mode : Boolean := False); - -- AKA - pragma Inline (Set_NoDelay_Mode); - - type Timeout_Mode is (Blocking, Non_Blocking, Delayed); - - -- ANCHOR(`wtimeout()',`Set_Timeout_Mode') - procedure Set_Timeout_Mode (Win : Window := Standard_Window; - Mode : Timeout_Mode; - Amount : Natural); -- in Milliseconds - -- AKA - -- ALIAS(`timeout()') - -- Instead of overloading the semantic of the sign of amount, we - -- introduce the Timeout_Mode parameter. This should improve - -- readability. For Blocking and Non_Blocking, the Amount is not - -- evaluated. - -- We do not inline this procedure. - - -- ANCHOR(`notimeout()',`Set_Escape_Time_Mode') - procedure Set_Escape_Timer_Mode - (Win : Window := Standard_Window; - Timer_Off : Boolean := False); - -- AKA - pragma Inline (Set_Escape_Timer_Mode); - - -- MANPAGE(`curs_outopts.3x') - - -- ANCHOR(`nl()',`Set_NL_Mode') - procedure Set_NL_Mode (SwitchOn : Boolean := True); - -- AKA - -- ALIAS(`nonl()') - pragma Inline (Set_NL_Mode); - - -- ANCHOR(`clearok()',`Clear_On_Next_Update') - procedure Clear_On_Next_Update - (Win : Window := Standard_Window; - Do_Clear : Boolean := True); - -- AKA - pragma Inline (Clear_On_Next_Update); - - -- ANCHOR(`idlok()',`Use_Insert_Delete_Line') - procedure Use_Insert_Delete_Line - (Win : Window := Standard_Window; - Do_Idl : Boolean := True); - -- AKA - pragma Inline (Use_Insert_Delete_Line); - - -- ANCHOR(`idcok()',`Use_Insert_Delete_Character') - procedure Use_Insert_Delete_Character - (Win : Window := Standard_Window; - Do_Idc : Boolean := True); - -- AKA - pragma Inline (Use_Insert_Delete_Character); - - -- ANCHOR(`leaveok()',`Leave_Cursor_After_Update') - procedure Leave_Cursor_After_Update - (Win : Window := Standard_Window; - Do_Leave : Boolean := True); - -- AKA - pragma Inline (Leave_Cursor_After_Update); - - -- ANCHOR(`immedok()',`Immediate_Update_Mode') - procedure Immediate_Update_Mode - (Win : Window := Standard_Window; - Mode : Boolean := False); - -- AKA - pragma Inline (Immediate_Update_Mode); - - -- ANCHOR(`scrollok()',`Allow_Scrolling') - procedure Allow_Scrolling - (Win : Window := Standard_Window; - Mode : Boolean := False); - -- AKA - pragma Inline (Allow_Scrolling); - - function Scrolling_Allowed (Win : Window := Standard_Window) return Boolean; - -- There is no such function in the C interface. - pragma Inline (Scrolling_Allowed); - - -- ANCHOR(`wsetscrreg()',`Set_Scroll_Region') - procedure Set_Scroll_Region - (Win : Window := Standard_Window; - Top_Line : Line_Position; - Bottom_Line : Line_Position); - -- AKA - -- ALIAS(`setscrreg()') - pragma Inline (Set_Scroll_Region); - - -- MANPAGE(`curs_refresh.3x') - - -- ANCHOR(`doupdate()',`Update_Screen') - procedure Update_Screen; - -- AKA - pragma Inline (Update_Screen); - - -- ANCHOR(`wrefresh()',`Refresh') - procedure Refresh (Win : Window := Standard_Window); - -- AKA - -- There is an overloaded Refresh for Pads. - -- The Inline pragma appears there - -- ALIAS(`refresh()') - - -- ANCHOR(`wnoutrefresh()',`Refresh_Without_Update') - procedure Refresh_Without_Update - (Win : Window := Standard_Window); - -- AKA - -- There is an overloaded Refresh_Without_Update for Pads. - -- The Inline pragma appears there - - -- ANCHOR(`redrawwin()',`Redraw') - procedure Redraw (Win : Window := Standard_Window); - -- AKA - - -- ANCHOR(`wredrawln()',`Redraw') - procedure Redraw (Win : Window := Standard_Window; - Begin_Line : Line_Position; - Line_Count : Positive); - -- AKA - pragma Inline (Redraw); - - -- MANPAGE(`curs_clear.3x') - - -- ANCHOR(`werase()',`Erase') - procedure Erase (Win : Window := Standard_Window); - -- AKA - -- ALIAS(`erase()') - pragma Inline (Erase); - - -- ANCHOR(`wclear()',`Clear') - procedure Clear - (Win : Window := Standard_Window); - -- AKA - -- ALIAS(`clear()') - pragma Inline (Clear); - - -- ANCHOR(`wclrtobot()',`Clear_To_End_Of_Screen') - procedure Clear_To_End_Of_Screen - (Win : Window := Standard_Window); - -- AKA - -- ALIAS(`clrtobot()') - pragma Inline (Clear_To_End_Of_Screen); - - -- ANCHOR(`wclrtoeol()',`Clear_To_End_Of_Line') - procedure Clear_To_End_Of_Line - (Win : Window := Standard_Window); - -- AKA - -- ALIAS(`clrtoeol()') - pragma Inline (Clear_To_End_Of_Line); - - -- MANPAGE(`curs_bkgd.3x') - - -- ANCHOR(`wbkgdset()',`Set_Background') - -- TODO: we could have Set_Background(Window; Character_Attribute_Set) - -- because in C it is common to see bkgdset(A_BOLD) or - -- bkgdset(COLOR_PAIR(n)) - procedure Set_Background - (Win : Window := Standard_Window; - Ch : Attributed_Character); - -- AKA - -- ALIAS(`bkgdset()') - pragma Inline (Set_Background); - - -- ANCHOR(`wbkgd()',`Change_Background') - procedure Change_Background - (Win : Window := Standard_Window; - Ch : Attributed_Character); - -- AKA - -- ALIAS(`bkgd()') - pragma Inline (Change_Background); - - -- ANCHOR(`wbkgdget()',`Get_Background') - -- ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough. - function Get_Background (Win : Window := Standard_Window) - return Attributed_Character; - -- AKA - -- ALIAS(`bkgdget()') - pragma Inline (Get_Background); - - -- MANPAGE(`curs_touch.3x') - - -- ANCHOR(`untouchwin()',`Untouch') - procedure Untouch (Win : Window := Standard_Window); - -- AKA - pragma Inline (Untouch); - - -- ANCHOR(`touchwin()',`Touch') - procedure Touch (Win : Window := Standard_Window); - -- AKA - - -- ANCHOR(`touchline()',`Touch') - procedure Touch (Win : Window := Standard_Window; - Start : Line_Position; - Count : Positive); - -- AKA - pragma Inline (Touch); - - -- ANCHOR(`wtouchln()',`Change_Line_Status') - procedure Change_Lines_Status (Win : Window := Standard_Window; - Start : Line_Position; - Count : Positive; - State : Boolean); - -- AKA - pragma Inline (Change_Lines_Status); - - -- ANCHOR(`is_linetouched()',`Is_Touched') - function Is_Touched (Win : Window := Standard_Window; - Line : Line_Position) return Boolean; - -- AKA - - -- ANCHOR(`is_wintouched()',`Is_Touched') - function Is_Touched (Win : Window := Standard_Window) return Boolean; - -- AKA - pragma Inline (Is_Touched); - - -- MANPAGE(`curs_overlay.3x') - - -- ANCHOR(`copywin()',`Copy') - procedure Copy - (Source_Window : Window; - Destination_Window : Window; - Source_Top_Row : Line_Position; - Source_Left_Column : Column_Position; - Destination_Top_Row : Line_Position; - Destination_Left_Column : Column_Position; - Destination_Bottom_Row : Line_Position; - Destination_Right_Column : Column_Position; - Non_Destructive_Mode : Boolean := True); - -- AKA - pragma Inline (Copy); - - -- ANCHOR(`overwrite()',`Overwrite') - procedure Overwrite (Source_Window : Window; - Destination_Window : Window); - -- AKA - pragma Inline (Overwrite); - - -- ANCHOR(`overlay()',`Overlay') - procedure Overlay (Source_Window : Window; - Destination_Window : Window); - -- AKA - pragma Inline (Overlay); - - -- MANPAGE(`curs_deleteln.3x') - - -- ANCHOR(`winsdelln()',`Insert_Delete_Lines') - procedure Insert_Delete_Lines - (Win : Window := Standard_Window; - Lines : Integer := 1); -- default is to insert one line above - -- AKA - -- ALIAS(`insdelln()') - pragma Inline (Insert_Delete_Lines); - - -- ANCHOR(`wdeleteln()',`Delete_Line') - procedure Delete_Line (Win : Window := Standard_Window); - -- AKA - -- ALIAS(`deleteln()') - pragma Inline (Delete_Line); - - -- ANCHOR(`winsertln()',`Insert_Line') - procedure Insert_Line (Win : Window := Standard_Window); - -- AKA - -- ALIAS(`insertln()') - pragma Inline (Insert_Line); - - -- MANPAGE(`curs_getyx.3x') - - -- ANCHOR(`getmaxyx()',`Get_Size') - procedure Get_Size - (Win : Window := Standard_Window; - Number_Of_Lines : out Line_Count; - Number_Of_Columns : out Column_Count); - -- AKA - pragma Inline (Get_Size); - - -- ANCHOR(`getbegyx()',`Get_Window_Position') - procedure Get_Window_Position - (Win : Window := Standard_Window; - Top_Left_Line : out Line_Position; - Top_Left_Column : out Column_Position); - -- AKA - pragma Inline (Get_Window_Position); - - -- ANCHOR(`getyx()',`Get_Cursor_Position') - procedure Get_Cursor_Position - (Win : Window := Standard_Window; - Line : out Line_Position; - Column : out Column_Position); - -- AKA - pragma Inline (Get_Cursor_Position); - - -- ANCHOR(`getparyx()',`Get_Origin_Relative_To_Parent') - procedure Get_Origin_Relative_To_Parent - (Win : Window; - Top_Left_Line : out Line_Position; - Top_Left_Column : out Column_Position; - Is_Not_A_Subwindow : out Boolean); - -- AKA - -- Instead of placing -1 in the coordinates as return, we use a Boolean - -- to return the info that the window has no parent. - pragma Inline (Get_Origin_Relative_To_Parent); - - -- MANPAGE(`curs_pad.3x') - - -- ANCHOR(`newpad()',`New_Pad') - function New_Pad (Lines : Line_Count; - Columns : Column_Count) return Window; - -- AKA - pragma Inline (New_Pad); - - -- ANCHOR(`subpad()',`Sub_Pad') - function Sub_Pad - (Pad : Window; - Number_Of_Lines : Line_Count; - Number_Of_Columns : Column_Count; - First_Line_Position : Line_Position; - First_Column_Position : Column_Position) return Window; - -- AKA - pragma Inline (Sub_Pad); - - -- ANCHOR(`prefresh()',`Refresh') - procedure Refresh - (Pad : Window; - Source_Top_Row : Line_Position; - Source_Left_Column : Column_Position; - Destination_Top_Row : Line_Position; - Destination_Left_Column : Column_Position; - Destination_Bottom_Row : Line_Position; - Destination_Right_Column : Column_Position); - -- AKA - pragma Inline (Refresh); - - -- ANCHOR(`pnoutrefresh()',`Refresh_Without_Update') - procedure Refresh_Without_Update - (Pad : Window; - Source_Top_Row : Line_Position; - Source_Left_Column : Column_Position; - Destination_Top_Row : Line_Position; - Destination_Left_Column : Column_Position; - Destination_Bottom_Row : Line_Position; - Destination_Right_Column : Column_Position); - -- AKA - pragma Inline (Refresh_Without_Update); - - -- ANCHOR(`pechochar()',`Add_Character_To_Pad_And_Echo_It') - procedure Add_Character_To_Pad_And_Echo_It - (Pad : Window; - Ch : Attributed_Character); - -- AKA - - procedure Add_Character_To_Pad_And_Echo_It - (Pad : Window; - Ch : Character); - pragma Inline (Add_Character_To_Pad_And_Echo_It); - - -- MANPAGE(`curs_scroll.3x') - - -- ANCHOR(`wscrl()',`Scroll') - procedure Scroll (Win : Window := Standard_Window; - Amount : Integer := 1); - -- AKA - -- ALIAS(`scroll()') - -- ALIAS(`scrl()') - pragma Inline (Scroll); - - -- MANPAGE(`curs_delch.3x') - - -- ANCHOR(`wdelch()',`Delete_Character') - procedure Delete_Character (Win : Window := Standard_Window); - -- AKA - -- ALIAS(`delch()') - - -- ANCHOR(`mvwdelch()',`Delete_Character') - procedure Delete_Character - (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position); - -- AKA - -- ALIAS(`mvdelch()') - pragma Inline (Delete_Character); - - -- MANPAGE(`curs_inch.3x') - - -- ANCHOR(`winch()',`Peek') - function Peek (Win : Window := Standard_Window) - return Attributed_Character; - -- ALIAS(`inch()') - -- AKA - - -- ANCHOR(`mvwinch()',`Peek') - function Peek - (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position) return Attributed_Character; - -- AKA - -- ALIAS(`mvinch()') - -- More Peek's follow, pragma Inline appears later. - - -- MANPAGE(`curs_insch.3x') - - -- ANCHOR(`winsch()',`Insert') - procedure Insert (Win : Window := Standard_Window; - Ch : Attributed_Character); - -- AKA - -- ALIAS(`insch()') - - -- ANCHOR(`mvwinsch()',`Insert') - procedure Insert (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Ch : Attributed_Character); - -- AKA - -- ALIAS(`mvinsch()') - - -- MANPAGE(`curs_insstr.3x') - - -- ANCHOR(`winsnstr()',`Insert') - procedure Insert (Win : Window := Standard_Window; - Str : String; - Len : Integer := -1); - -- AKA - -- ALIAS(`winsstr()') - -- ALIAS(`insnstr()') - -- ALIAS(`insstr()') - - -- ANCHOR(`mvwinsnstr()',`Insert') - procedure Insert (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Str : String; - Len : Integer := -1); - -- AKA - -- ALIAS(`mvwinsstr()') - -- ALIAS(`mvinsnstr()') - -- ALIAS(`mvinsstr()') - pragma Inline (Insert); - - -- MANPAGE(`curs_instr.3x') - - -- ANCHOR(`winnstr()',`Peek') - procedure Peek (Win : Window := Standard_Window; - Str : out String; - Len : Integer := -1); - -- AKA - -- ALIAS(`winstr()') - -- ALIAS(`innstr()') - -- ALIAS(`instr()') - - -- ANCHOR(`mvwinnstr()',`Peek') - procedure Peek (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Str : out String; - Len : Integer := -1); - -- AKA - -- ALIAS(`mvwinstr()') - -- ALIAS(`mvinnstr()') - -- ALIAS(`mvinstr()') - - -- MANPAGE(`curs_inchstr.3x') - - -- ANCHOR(`winchnstr()',`Peek') - procedure Peek (Win : Window := Standard_Window; - Str : out Attributed_String; - Len : Integer := -1); - -- AKA - -- ALIAS(`winchstr()') - -- ALIAS(`inchnstr()') - -- ALIAS(`inchstr()') - - -- ANCHOR(`mvwinchnstr()',`Peek') - procedure Peek (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Str : out Attributed_String; - Len : Integer := -1); - -- AKA - -- ALIAS(`mvwinchstr()') - -- ALIAS(`mvinchnstr()') - -- ALIAS(`mvinchstr()') - -- We do not inline the Peek procedures - - -- MANPAGE(`curs_getstr.3x') - - -- ANCHOR(`wgetnstr()',`Get') - procedure Get (Win : Window := Standard_Window; - Str : out String; - Len : Integer := -1); - -- AKA - -- ALIAS(`wgetstr()') - -- ALIAS(`getnstr()') - -- ALIAS(`getstr()') - -- actually getstr is not supported because that results in buffer - -- overflows. - - -- ANCHOR(`mvwgetnstr()',`Get') - procedure Get (Win : Window := Standard_Window; - Line : Line_Position; - Column : Column_Position; - Str : out String; - Len : Integer := -1); - -- AKA - -- ALIAS(`mvwgetstr()') - -- ALIAS(`mvgetnstr()') - -- ALIAS(`mvgetstr()') - -- Get is not inlined - - -- MANPAGE(`curs_slk.3x') - - -- Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set - - type Soft_Label_Key_Format is (Three_Two_Three, - Four_Four, - PC_Style, -- ncurses specific - PC_Style_With_Index); -- " - type Label_Number is new Positive range 1 .. 12; - type Label_Justification is (Left, Centered, Right); - - -- ANCHOR(`slk_init()',`Init_Soft_Label_Keys') - procedure Init_Soft_Label_Keys - (Format : Soft_Label_Key_Format := Three_Two_Three); - -- AKA - pragma Inline (Init_Soft_Label_Keys); - - -- ANCHOR(`slk_set()',`Set_Soft_Label_Key') - procedure Set_Soft_Label_Key (Label : Label_Number; - Text : String; - Fmt : Label_Justification := Left); - -- AKA - -- We do not inline this procedure - - -- ANCHOR(`slk_refresh()',`Refresh_Soft_Label_Key') - procedure Refresh_Soft_Label_Keys; - -- AKA - pragma Inline (Refresh_Soft_Label_Keys); - - -- ANCHOR(`slk_noutrefresh()',`Refresh_Soft_Label_Keys_Without_Update') - procedure Refresh_Soft_Label_Keys_Without_Update; - -- AKA - pragma Inline (Refresh_Soft_Label_Keys_Without_Update); - - -- ANCHOR(`slk_label()',`Get_Soft_Label_Key') - procedure Get_Soft_Label_Key (Label : Label_Number; - Text : out String); - -- AKA - - -- ANCHOR(`slk_label()',`Get_Soft_Label_Key') - function Get_Soft_Label_Key (Label : Label_Number) return String; - -- AKA - -- Same as function - pragma Inline (Get_Soft_Label_Key); - - -- ANCHOR(`slk_clear()',`Clear_Soft_Label_Keys') - procedure Clear_Soft_Label_Keys; - -- AKA - pragma Inline (Clear_Soft_Label_Keys); - - -- ANCHOR(`slk_restore()',`Restore_Soft_Label_Keys') - procedure Restore_Soft_Label_Keys; - -- AKA - pragma Inline (Restore_Soft_Label_Keys); - - -- ANCHOR(`slk_touch()',`Touch_Soft_Label_Keys') - procedure Touch_Soft_Label_Keys; - -- AKA - pragma Inline (Touch_Soft_Label_Keys); - - -- ANCHOR(`slk_attron()',`Switch_Soft_Label_Key_Attributes') - procedure Switch_Soft_Label_Key_Attributes - (Attr : Character_Attribute_Set; - On : Boolean := True); - -- AKA - -- ALIAS(`slk_attroff()') - pragma Inline (Switch_Soft_Label_Key_Attributes); - - -- ANCHOR(`slk_attrset()',`Set_Soft_Label_Key_Attributes') - procedure Set_Soft_Label_Key_Attributes - (Attr : Character_Attribute_Set := Normal_Video; - Color : Color_Pair := Color_Pair'First); - -- AKA - pragma Inline (Set_Soft_Label_Key_Attributes); - - -- ANCHOR(`slk_attr()',`Get_Soft_Label_Key_Attributes') - function Get_Soft_Label_Key_Attributes return Character_Attribute_Set; - -- AKA - - -- ANCHOR(`slk_attr()',`Get_Soft_Label_Key_Attributes') - function Get_Soft_Label_Key_Attributes return Color_Pair; - -- AKA - pragma Inline (Get_Soft_Label_Key_Attributes); - - -- ANCHOR(`slk_color()',`Set_Soft_Label_Key_Color') - procedure Set_Soft_Label_Key_Color (Pair : Color_Pair); - -- AKA - pragma Inline (Set_Soft_Label_Key_Color); - - -- MANPAGE(`keybound.3x') - -- Not Implemented: keybound - - -- MANPAGE(`keyok.3x') - - -- ANCHOR(`keyok()',`Enable_Key') - procedure Enable_Key (Key : Special_Key_Code; - Enable : Boolean := True); - -- AKA - pragma Inline (Enable_Key); - - -- MANPAGE(`define_key.3x') - - -- ANCHOR(`define_key()',`Define_Key') - procedure Define_Key (Definition : String; - Key : Special_Key_Code); - -- AKA - pragma Inline (Define_Key); - - -- MANPAGE(`curs_util.3x') - - -- | Not implemented : filter, use_env - -- | putwin, getwin are in the child package PutWin - -- - - -- ANCHOR(`keyname()',`Key_Name') - procedure Key_Name (Key : Real_Key_Code; - Name : out String); - -- AKA - -- The external name for a real keystroke. - - -- ANCHOR(`keyname()',`Key_Name') - function Key_Name (Key : Real_Key_Code) return String; - -- AKA - -- Same as function - -- We do not inline this routine - - -- ANCHOR(`unctrl()',`Un_Control') - procedure Un_Control (Ch : Attributed_Character; - Str : out String); - -- AKA - - -- ANCHOR(`unctrl()',`Un_Control') - function Un_Control (Ch : Attributed_Character) return String; - -- AKA - -- Same as function - pragma Inline (Un_Control); - - -- ANCHOR(`delay_output()',`Delay_Output') - procedure Delay_Output (Msecs : Natural); - -- AKA - pragma Inline (Delay_Output); - - -- ANCHOR(`flushinp()',`Flush_Input') - procedure Flush_Input; - -- AKA - pragma Inline (Flush_Input); - - -- MANPAGE(`curs_termattrs.3x') - - -- ANCHOR(`baudrate()',`Baudrate') - function Baudrate return Natural; - -- AKA - pragma Inline (Baudrate); - - -- ANCHOR(`erasechar()',`Erase_Character') - function Erase_Character return Character; - -- AKA - pragma Inline (Erase_Character); - - -- ANCHOR(`killchar()',`Kill_Character') - function Kill_Character return Character; - -- AKA - pragma Inline (Kill_Character); - - -- ANCHOR(`has_ic()',`Has_Insert_Character') - function Has_Insert_Character return Boolean; - -- AKA - pragma Inline (Has_Insert_Character); - - -- ANCHOR(`has_il()',`Has_Insert_Line') - function Has_Insert_Line return Boolean; - -- AKA - pragma Inline (Has_Insert_Line); - - -- ANCHOR(`termattrs()',`Supported_Attributes') - function Supported_Attributes return Character_Attribute_Set; - -- AKA - pragma Inline (Supported_Attributes); - - -- ANCHOR(`longname()',`Long_Name') - procedure Long_Name (Name : out String); - -- AKA - - -- ANCHOR(`longname()',`Long_Name') - function Long_Name return String; - -- AKA - -- Same as function - pragma Inline (Long_Name); - - -- ANCHOR(`termname()',`Terminal_Name') - procedure Terminal_Name (Name : out String); - -- AKA - - -- ANCHOR(`termname()',`Terminal_Name') - function Terminal_Name return String; - -- AKA - -- Same as function - pragma Inline (Terminal_Name); - - -- MANPAGE(`curs_color.3x') - - -- COLOR_PAIR - -- COLOR_PAIR(n) in C is the same as - -- Attributed_Character(Ch => Nul, Color => n, Attr => Normal_Video) - -- In C you often see something like c = c | COLOR_PAIR(n); - -- This is equivalent to c.Color := n; - - -- ANCHOR(`start_color()',`Start_Color') - procedure Start_Color; - -- AKA - pragma Import (C, Start_Color, "start_color"); - - -- ANCHOR(`init_pair()',`Init_Pair') - procedure Init_Pair (Pair : Redefinable_Color_Pair; - Fore : Color_Number; - Back : Color_Number); - -- AKA - pragma Inline (Init_Pair); - - -- ANCHOR(`pair_content()',`Pair_Content') - procedure Pair_Content (Pair : Color_Pair; - Fore : out Color_Number; - Back : out Color_Number); - -- AKA - pragma Inline (Pair_Content); - - -- ANCHOR(`has_colors()',`Has_Colors') - function Has_Colors return Boolean; - -- AKA - pragma Inline (Has_Colors); - - -- ANCHOR(`init_color()',`Init_Color') - procedure Init_Color (Color : Color_Number; - Red : RGB_Value; - Green : RGB_Value; - Blue : RGB_Value); - -- AKA - pragma Inline (Init_Color); - - -- ANCHOR(`can_change_color()',`Can_Change_Color') - function Can_Change_Color return Boolean; - -- AKA - pragma Inline (Can_Change_Color); - - -- ANCHOR(`color_content()',`Color_Content') - procedure Color_Content (Color : Color_Number; - Red : out RGB_Value; - Green : out RGB_Value; - Blue : out RGB_Value); - -- AKA - pragma Inline (Color_Content); - - -- MANPAGE(`curs_kernel.3x') - -- | Not implemented: getsyx, setsyx - -- - type Curses_Mode is (Curses, Shell); - - -- ANCHOR(`def_prog_mode()',`Save_Curses_Mode') - procedure Save_Curses_Mode (Mode : Curses_Mode); - -- AKA - -- ALIAS(`def_shell_mode()') - pragma Inline (Save_Curses_Mode); - - -- ANCHOR(`reset_prog_mode()',`Reset_Curses_Mode') - procedure Reset_Curses_Mode (Mode : Curses_Mode); - -- AKA - -- ALIAS(`reset_shell_mode()') - pragma Inline (Reset_Curses_Mode); - - -- ANCHOR(`savetty()',`Save_Terminal_State') - procedure Save_Terminal_State; - -- AKA - pragma Inline (Save_Terminal_State); - - -- ANCHOR(`resetty();',`Reset_Terminal_State') - procedure Reset_Terminal_State; - -- AKA - pragma Inline (Reset_Terminal_State); - - type Stdscr_Init_Proc is access - function (Win : Window; - Columns : Column_Count) return Integer; - pragma Convention (C, Stdscr_Init_Proc); - -- N.B.: the return value is actually ignored, but it seems to be - -- a good practice to return 0 if you think all went fine - -- and -1 otherwise. - - -- ANCHOR(`ripoffline()',`Rip_Off_Lines') - procedure Rip_Off_Lines (Lines : Integer; - Proc : Stdscr_Init_Proc); - -- AKA - -- N.B.: to be more precise, this uses a ncurses specific enhancement of - -- ripoffline(), in which the Lines argument absolute value is the - -- number of lines to be ripped of. The official ripoffline() only - -- uses the sign of Lines to remove a single line from bottom or top. - pragma Inline (Rip_Off_Lines); - - type Cursor_Visibility is (Invisible, Normal, Very_Visible); - - -- ANCHOR(`curs_set()',`Set_Cursor_Visibility') - procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility); - -- AKA - pragma Inline (Set_Cursor_Visibility); - - -- ANCHOR(`napms()',`Nap_Milli_Seconds') - procedure Nap_Milli_Seconds (Ms : Natural); - -- AKA - pragma Inline (Nap_Milli_Seconds); - - -- |===================================================================== - -- | Some useful helpers. - -- |===================================================================== - type Transform_Direction is (From_Screen, To_Screen); - procedure Transform_Coordinates - (W : Window := Standard_Window; - Line : in out Line_Position; - Column : in out Column_Position; - Dir : Transform_Direction := From_Screen); - -- This procedure transforms screen coordinates into coordinates relative - -- to the window and vice versa, depending on the Dir parameter. - -- Screen coordinates are the position information for the physical device. - -- An Curses_Exception will be raised if Line and Column are not in the - -- Window or if you pass the Null_Window as argument. - -- We do not inline this procedure - - -- MANPAGE(`default_colors.3x') - - -- ANCHOR(`use_default_colors()',`Use_Default_Colors') - procedure Use_Default_Colors; - -- AKA - pragma Inline (Use_Default_Colors); - - -- ANCHOR(`assume_default_colors()',`Assume_Default_Colors') - procedure Assume_Default_Colors (Fore : Color_Number := Default_Color; - Back : Color_Number := Default_Color); - -- AKA - pragma Inline (Assume_Default_Colors); - - -- MANPAGE(`curs_extend.3x') - - -- ANCHOR(`curses_version()',`Curses_Version') - function Curses_Version return String; - -- AKA - - -- ANCHOR(`use_extended_names()',`Use_Extended_Names') - -- The returnvalue is the previous setting of the flag - function Use_Extended_Names (Enable : Boolean) return Boolean; - -- AKA - - -- MANPAGE(`curs_trace.3x') - - -- ANCHOR(`_nc_freeall()',`Curses_Free_All') - procedure Curses_Free_All; - -- AKA - - -- MANPAGE(`curs_scr_dump.3x') - - -- ANCHOR(`scr_dump()',`Screen_Dump_To_File') - procedure Screen_Dump_To_File (Filename : String); - -- AKA - - -- ANCHOR(`scr_restore()',`Screen_Restore_From_File') - procedure Screen_Restore_From_File (Filename : String); - -- AKA - - -- ANCHOR(`scr_init()',`Screen_Init_From_File') - procedure Screen_Init_From_File (Filename : String); - -- AKA - - -- ANCHOR(`scr_set()',`Screen_Set_File') - procedure Screen_Set_File (Filename : String); - -- AKA - - -- MANPAGE(`curs_print.3x') - -- Not implemented: mcprint - - -- MANPAGE(`curs_printw.3x') - -- Not implemented: printw, wprintw, mvprintw, mvwprintw, vwprintw, - -- vw_printw - -- Please use the Ada style Text_IO child packages for formatted - -- printing. It does not make a lot of sense to map the printf style - -- C functions to Ada. - - -- MANPAGE(`curs_scanw.3x') - -- Not implemented: scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw - - -- MANPAGE(`resizeterm.3x') - -- Not Implemented: resizeterm - - -- MANPAGE(`wresize.3x') - - -- ANCHOR(`wresize()',`Resize') - procedure Resize (Win : Window := Standard_Window; - Number_Of_Lines : Line_Count; - Number_Of_Columns : Column_Count); - -- AKA - -private - type Window is new System.Storage_Elements.Integer_Address; - Null_Window : constant Window := 0; - - -- The next constants are generated and may be different on your - -- architecture. - -- -include(`Window_Offsets')dnl - Curses_Bool_False : constant Curses_Bool := 0; - -end Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/include/MKncurses_def.sh b/deps/ncurses-5.9/Ada95/include/MKncurses_def.sh deleted file mode 100755 index 4aac865..0000000 --- a/deps/ncurses-5.9/Ada95/include/MKncurses_def.sh +++ /dev/null @@ -1,80 +0,0 @@ -#! /bin/sh -# $Id: MKncurses_def.sh,v 1.2 2003/10/25 16:19:46 tom Exp $ -############################################################################## -# Copyright (c) 2000 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. # -############################################################################## -# -# MKncurses_def.sh -- generate fallback definitions for ncurses_cfg.h -# -# Author: Thomas E. Dickey 2000 -# -# Given the choice between constructs such as -# -# #if defined(foo) && foo -# #if foo -# -# we chose the latter. It is guaranteed by the language standard, and there -# appear to be no broken compilers that do not honor that detail. But some -# people want to use gcc's -Wundef option (corresponding to one of the less -# useful features in Watcom's compiler) to check for misspellings. So we -# generate a set of fallback definitions to quiet the warnings without making -# the code ugly. -# -DEFS="${1-ncurses_defs}" -cat <$@ - -tags: - ctags *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ etags *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/Ada95/include/ncurses_cfg.hin b/deps/ncurses-5.9/Ada95/include/ncurses_cfg.hin deleted file mode 100644 index 3f8a482..0000000 --- a/deps/ncurses-5.9/Ada95/include/ncurses_cfg.hin +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2005 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: Thomas E. Dickey 1997 * - ****************************************************************************/ -/* - * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $ - * - * This is a template-file used to generate the "ncurses_cfg.h" file. - * - * Rather than list every definition, the configuration script substitutes the - * definitions that it finds using 'sed'. You need a patch (original date - * 971222) to autoconf 2.12 or 2.13 to do this. - * - * See: - * http://invisible-island.net/autoconf/ - * ftp://invisible-island.net/autoconf/ - */ -#ifndef NC_CONFIG_H -#define NC_CONFIG_H -@DEFS@ - -#include - - /* The C compiler may not treat these properly but C++ has to */ -#ifdef __cplusplus -#undef const -#undef inline -#else -#if defined(lint) || defined(TRACE) -#undef inline -#define inline /* nothing */ -#endif -#endif - - /* On HP-UX, the C compiler doesn't grok mbstate_t without - -D_XOPEN_SOURCE=500. However, this causes problems on - IRIX. So, we #define mbstate_t to int in configure.in - only for the C compiler if needed. */ -#ifndef __cplusplus -#ifdef NEED_MBSTATE_T_DEF -#define mbstate_t int -#endif -#endif - -#endif /* NC_CONFIG_H */ diff --git a/deps/ncurses-5.9/Ada95/include/ncurses_defs b/deps/ncurses-5.9/Ada95/include/ncurses_defs deleted file mode 100644 index b07f5f1..0000000 --- a/deps/ncurses-5.9/Ada95/include/ncurses_defs +++ /dev/null @@ -1,207 +0,0 @@ -# $Id: ncurses_defs,v 1.41 2008/11/16 00:19:59 juergen Exp $ -############################################################################## -# Copyright (c) 2000-2007,2008 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. # -############################################################################## -# -# See "MKncurses_def.sh" for an explanation. -# -# (hint: don't try to define NDEBUG ;-) - -BROKEN_LINKER -BSD_TPUTS -CC_HAS_PROTOS -CPP_HAS_PARAM_INIT -CURSES_ACS_ARRAY acs_map -CURSES_WACS_ARRAY _nc_wacs -DECL_ERRNO -ETIP_NEEDS_MATH_H -GCC_NORETURN /* nothing */ -GCC_UNUSED /* nothing */ -HAVE_BIG_CORE -HAVE_BSD_CGETENT -HAVE_BSD_SIGNAL_H -HAVE_BTOWC -HAVE_BUILTIN_H -HAVE_CHGAT 1 -HAVE_COLOR_SET 1 -HAVE_DIRENT_H -HAVE_ERRNO -HAVE_FCNTL_H -HAVE_FILTER 1 -HAVE_FORM_H -HAVE_GETBEGX 1 -HAVE_GETCURX 1 -HAVE_GETCWD -HAVE_GETEGID -HAVE_GETEUID -HAVE_GETMAXX 1 -HAVE_GETNSTR -HAVE_GETOPT_H -HAVE_GETPARX 1 -HAVE_GETTIMEOFDAY -HAVE_GETTTYNAM -HAVE_GETWIN 1 -HAVE_GPM_H -HAVE_GPP_BUILTIN_H -HAVE_GXX_BUILTIN_H -HAVE_HAS_KEY -HAVE_IOSTREAM -HAVE_ISASCII -HAVE_ISSETUGID -HAVE_LANGINFO_CODESET -HAVE_LIBC_H -HAVE_LIBDBMALLOC -HAVE_LIBDMALLOC -HAVE_LIBFORM -HAVE_LIBGPM -HAVE_LIBMENU -HAVE_LIBMPATROL -HAVE_LIBPANEL -HAVE_LIMITS_H -HAVE_LINK -HAVE_LOCALE_H -HAVE_LONG_FILE_NAMES -HAVE_MBLEN -HAVE_MBRLEN -HAVE_MBRTOWC -HAVE_MBSRTOWCS -HAVE_MBSTOWCS -HAVE_MBTOWC -HAVE_MENU_H -HAVE_MKSTEMP -HAVE_MVVLINE 1 -HAVE_MVWVLINE 1 -HAVE_NANOSLEEP -HAVE_NC_ALLOC_H -HAVE_PANEL_H -HAVE_POLL -HAVE_POLL_H -HAVE_PURIFY -HAVE_PUTWC -HAVE_PUTWIN 1 -HAVE_REGEXPR_H_FUNCS -HAVE_REGEXP_H_FUNCS -HAVE_REGEX_H_FUNCS -HAVE_REMOVE -HAVE_RESIZETERM -HAVE_RESIZE_TERM -HAVE_RIPOFFLINE 1 -HAVE_SELECT -HAVE_SETBUF -HAVE_SETBUFFER -HAVE_SETUPTERM 1 -HAVE_SETVBUF -HAVE_SIGACTION -HAVE_SIGVEC -HAVE_SIZECHANGE -HAVE_SLK_COLOR -HAVE_SLK_INIT 1 -HAVE_STRDUP -HAVE_STRSTR -HAVE_SYMLINK -HAVE_SYS_BSDTYPES_H -HAVE_SYS_IOCTL_H -HAVE_SYS_PARAM_H -HAVE_SYS_POLL_H -HAVE_SYS_SELECT_H -HAVE_SYS_TERMIO_H -HAVE_SYS_TIMES_H -HAVE_SYS_TIME_H -HAVE_SYS_TIME_SELECT -HAVE_TCGETATTR -HAVE_TCGETPGRP -HAVE_TELL -HAVE_TERMATTRS 1 -HAVE_TERMIOS_H -HAVE_TERMIO_H -HAVE_TERMNAME 1 -HAVE_TERM_H 1 -HAVE_TGETENT 1 -HAVE_TIGETNUM 1 -HAVE_TIGETSTR 1 -HAVE_TIMES -HAVE_TTYENT_H -HAVE_TYPEAHEAD 1 -HAVE_TYPEINFO -HAVE_TYPE_ATTR_T -HAVE_TYPE_SIGACTION -HAVE_UNISTD_H -HAVE_UNLINK -HAVE_USE_DEFAULT_COLORS -HAVE_VFSCANF -HAVE_VSNPRINTF -HAVE_VSSCANF -HAVE_WCSRTOMBS -HAVE_WCSTOMBS -HAVE_WCTOB -HAVE_WCTOMB -HAVE_WCTYPE_H -HAVE_WINSSTR 1 -HAVE_WORKING_POLL -HAVE_WRESIZE -HAVE__DOSCAN -MIXEDCASE_FILENAMES -NCURSES_CHAR_EQ -NCURSES_EXPANDED -NCURSES_EXT_COLORS -NCURSES_EXT_FUNCS -NCURSES_NO_PADDING -NCURSES_PATHSEP ':' -NEED_PTEM_H -NO_LEAKS -PURE_TERMINFO -RETSIGTYPE -STDC_HEADERS -SVR4_ACTION -SVR4_TERMIO -SYSTEM_NAME "unknown" -TERMINFO "none" -TERMPATH "none" -TIME_WITH_SYS_TIME -TYPEOF_CHTYPE -USE_COLORFGBG -USE_DATABASE -USE_GETCAP -USE_GETCAP_CACHE -USE_HARD_TABS -USE_HASHED_DB -USE_HASHMAP -USE_HOME_TERMINFO -USE_LINKS -USE_MY_MEMMOVE -USE_OK_BCOPY -USE_RCS_IDS -USE_REENTRANT -USE_SAFE_SPRINTF -USE_SCROLL_HINTS -USE_SIGWINCH -USE_SYMLINKS -USE_SYSMOUSE -USE_TERMCAP -USE_WEAK_SYMBOLS -USE_WIDEC_SUPPORT -USE_XMC_SUPPORT diff --git a/deps/ncurses-5.9/Ada95/make-tar.sh b/deps/ncurses-5.9/Ada95/make-tar.sh deleted file mode 100755 index 608bbdf..0000000 --- a/deps/ncurses-5.9/Ada95/make-tar.sh +++ /dev/null @@ -1,153 +0,0 @@ -#!/bin/sh -# $Id: make-tar.sh,v 1.12 2011/03/26 19:07:38 tom Exp $ -############################################################################## -# Copyright (c) 2010,2011 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. # -############################################################################## -# Construct a tar-file containing only the Ada95 tree as well as its associated -# documentation. The reason for doing that is to simplify distributing the -# ada binding as a separate package. - -CDPATH=: -export CDPATH - -TARGET=`pwd` - -: ${ROOTNAME:=ncurses-Ada95} -: ${PKG_NAME:=AdaCurses} -: ${DESTDIR:=$TARGET} -: ${TMPDIR:=/tmp} - -grep_assign() { - grep_assign=`egrep "^$2\>" "$1" | sed -e "s/^$2[ ]*=[ ]*//" -e 's/"//g'` - eval $2=\"$grep_assign\" -} - -grep_patchdate() { - grep_assign ../dist.mk NCURSES_MAJOR - grep_assign ../dist.mk NCURSES_MINOR - grep_assign ../dist.mk NCURSES_PATCH -} - -# The rpm spec-file in the ncurses tree is a template. Fill in the version -# information from dist.mk -edit_specfile() { - sed \ - -e "s/\\/$NCURSES_MAJOR/g" \ - -e "s/\\/$NCURSES_MINOR/g" \ - -e "s/\\/$NCURSES_PATCH/g" $1 >$1.new - chmod u+w $1 - mv $1.new $1 -} - -make_changelog() { - test -f $1 && chmod u+w $1 - cat >$1 <MANIFEST ) - -cd $BUILD || exit - -# Remove build-artifacts. -find . -name RCS -exec rm -rf {} \; -find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null -find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null -find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null - -# There is no need for this script in the tar file. -rm -f $ROOTNAME/make-tar.sh - -# Remove build-artifacts. -find . -name "*.gz" -exec rm -rf {} \; - -# Make the files writable... -chmod -R u+w . - -tar cf - $ROOTNAME | gzip >$DESTDIR/$ROOTNAME.tar.gz -cd $DESTDIR - -pwd -ls -l $ROOTNAME.tar.gz - -# vi:ts=4 sw=4 diff --git a/deps/ncurses-5.9/Ada95/mk-1st.awk b/deps/ncurses-5.9/Ada95/mk-1st.awk deleted file mode 100644 index 7726549..0000000 --- a/deps/ncurses-5.9/Ada95/mk-1st.awk +++ /dev/null @@ -1,90 +0,0 @@ -# $Id: mk-1st.awk,v 1.4 2011/02/22 09:40:01 tom Exp $ -############################################################################## -# Copyright (c) 2010,2011 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: Thomas E. Dickey -# -# Generate compile-rules for the Ada95 modules that we are using in libraries -# or programs. This script is used for older versions of gnatmake, which do -# not build libraries reliably, e.g., gnatmake 3.15. -# -# Fields in src/modules: -# $1 = module name -# $2 = directory where spec-dependency ".ads" is found -# $3 = directory where body-dependency ".adb" is found -# $4 = unit to compile (spec or body) -# -BEGIN { - printf "\n"; - printf "# generated by Ada95/mk-1st.awk\n"; - } - /^[#]/ { - next - } - /^$/ { - next - } - { - printf "\n"; - printf "%s.o :", $1; - - if ( $2 == "none" ) { - pre_spec = ""; - } else if ( $2 == "." ) { - pre_spec = ""; - printf " \\\n\t\t%s.ads", $1; - } else { - pre_spec = sprintf("%s/", $2); - printf " \\\n\t\t%s%s.ads", pre_spec, $1; - } - - if ( $3 == "none" ) { - pre_body = ""; - } else if ( $3 == "." ) { - pre_body = ""; - printf " \\\n\t\t%s.adb", $1; - } else { - pre_body = sprintf("%s/", $3); - printf " \\\n\t\t%s%s.adb", pre_body, $1; - printf " \\\n\t\t$(BASEDEPS)"; - } - - if ( $4 == "spec" ) { - suffix = "ads"; - prefix = pre_spec; - } else { - suffix = "adb"; - prefix = pre_body; - } - - printf "\n"; - printf "\t$(ADA) $(ADAFLAGS) -c -o $@ %s%s.%s\n", prefix, $1, suffix - } -END { - print "" - } diff --git a/deps/ncurses-5.9/Ada95/package/AdaCurses-doc.spec b/deps/ncurses-5.9/Ada95/package/AdaCurses-doc.spec deleted file mode 100644 index eb7e6b8..0000000 --- a/deps/ncurses-5.9/Ada95/package/AdaCurses-doc.spec +++ /dev/null @@ -1,48 +0,0 @@ -Summary: AdaCurses - Ada95 binding documentation for ncurses -%define AppProgram AdaCurses -%define AppVersion MAJOR.MINOR -%define AppRelease YYYYMMDD -%define AppPackage %{AppProgram}-doc -# $Id: AdaCurses-doc.spec,v 1.1 2011/03/26 19:22:39 tom Exp $ -Name: %{AppPackage} -Version: %{AppVersion} -Release: %{AppRelease} -License: MIT -Group: Applications/Development -URL: ftp://invisible-island.net/%{AppProgram} -Source0: %{AppProgram}-%{AppRelease}.tgz -Packager: Thomas Dickey - -%description -This is the Ada95 binding documentation from the ncurses MAJOR.MINOR -distribution, for patch-date YYYYMMDD. -%prep - -%setup -q -n %{AppProgram}-%{AppRelease} - -%build - -INSTALL_PROGRAM='${INSTALL}' \ - ./configure \ - --target %{_target_platform} \ - --prefix=%{_prefix} \ - --datadir=%{_datadir} \ - --with-ada-sharedlib - -%install -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT - -(cd doc && make install.html DESTDIR=$RPM_BUILD_ROOT ) - -%clean -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -%{_datadir}/doc/AdaCurses - -%changelog -# each patch should add its ChangeLog entries here - -* Sat Mar 26 2010 Thomas Dickey -- initial version diff --git a/deps/ncurses-5.9/Ada95/package/AdaCurses.spec b/deps/ncurses-5.9/Ada95/package/AdaCurses.spec deleted file mode 100644 index c98e104..0000000 --- a/deps/ncurses-5.9/Ada95/package/AdaCurses.spec +++ /dev/null @@ -1,78 +0,0 @@ -Summary: AdaCurses - Ada95 binding for ncurses -%define AppProgram AdaCurses -%define AppVersion MAJOR.MINOR -%define AppRelease YYYYMMDD -# $Id: AdaCurses.spec,v 1.12 2011/04/01 00:08:32 tom Exp $ -Name: %{AppProgram} -Version: %{AppVersion} -Release: %{AppRelease} -License: MIT -Group: Applications/Development -URL: ftp://invisible-island.net/%{AppProgram} -Source0: %{AppProgram}-%{AppRelease}.tgz -Packager: Thomas Dickey - -%description -This is the Ada95 binding from the ncurses MAJOR.MINOR distribution, for -patch-date YYYYMMDD. - -In addition to a library, this package installs sample programs in -"bin/AdaCurses" to avoid conflict with other packages. -%prep - -%setup -q -n %{AppProgram}-%{AppRelease} - -%build - -%define ada_libdir %{_prefix}/lib/ada/adalib - -INSTALL_PROGRAM='${INSTALL}' \ - ./configure \ - --target %{_target_platform} \ - --prefix=%{_prefix} \ - --bindir=%{_bindir} \ - --libdir=%{_libdir} \ - --mandir=%{_mandir} \ - --datadir=%{_datadir} \ - --disable-rpath-link \ - --with-shared \ - --with-ada-sharedlib - -make - -%install -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT - -make install DESTDIR=$RPM_BUILD_ROOT - -( cd samples && - make install.examples \ - DESTDIR=$RPM_BUILD_ROOT \ - BINDIR=$RPM_BUILD_ROOT%{_bindir}/%{AppProgram} -) - -%clean -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -%{_bindir}/adacurses*-config -%{_bindir}/%{AppProgram}/* -%{_libdir}/libAdaCurses.* -%{ada_libdir}/libAdaCurses.* -%{ada_libdir}/terminal_interface* -%{_mandir}/man1/adacurses*-config.1* -%{_datadir}/%{AppProgram}/* -%{_datadir}/ada/adainclude/terminal_interface* - -%changelog -# each patch should add its ChangeLog entries here - -* Thu Mar 31 2010 Thomas Dickey -- use --with-shared option for consistency with --with-ada-sharelib -- ensure that MY_DATADIR is set when installing examples -- add ada_libdir symbol to handle special case where libdir is /usr/lib64 -- use --disable-rpath-link to link sample programs without rpath - -* Fri Mar 25 2010 Thomas Dickey -- initial version diff --git a/deps/ncurses-5.9/Ada95/package/debian/compat b/deps/ncurses-5.9/Ada95/package/debian/compat deleted file mode 100644 index 7ed6ff8..0000000 --- a/deps/ncurses-5.9/Ada95/package/debian/compat +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/deps/ncurses-5.9/Ada95/package/debian/control b/deps/ncurses-5.9/Ada95/package/debian/control deleted file mode 100644 index 88af970..0000000 --- a/deps/ncurses-5.9/Ada95/package/debian/control +++ /dev/null @@ -1,17 +0,0 @@ -Source: adacurses -Maintainer: Thomas E. Dickey -Section: misc -Priority: optional -Standards-Version: 3.8.4 -Build-Depends: debhelper (>= 5) -Homepage: http://invisible-island.net/adacurses/ - -Package: adacurses -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: AdaCurses - Ada95 binding for ncurses - This package installs as "adacurses" to avoid conflict with other packages. - This is the Ada95 binding from the ncurses distribution. - . - In addition to a library, this package installs sample programs in - "bin/AdaCurses" to avoid conflict with other packages. diff --git a/deps/ncurses-5.9/Ada95/package/debian/copyright b/deps/ncurses-5.9/Ada95/package/debian/copyright deleted file mode 100644 index e681a6b..0000000 --- a/deps/ncurses-5.9/Ada95/package/debian/copyright +++ /dev/null @@ -1,69 +0,0 @@ -Upstream source http://invisible-island.net/ncurses/ncurses-examples.html - -Current ncurses maintainer: Thomas Dickey - -------------------------------------------------------------------------------- - Copyright (c) 1998-2010,2011 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. -------------------------------------------------------------------------------- - -Files: install-sh -Copyright: 1994 X Consortium -Licence: other-BSD - 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, 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 - 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. - - FSF changes to this file are in the public domain. - - Calling this script install-sh is preferred over install.sh, to prevent - `make' implicit rules from creating a file called install from it - when there is no Makefile. - - This script is compatible with the BSD install script, but was written - from scratch. It can only install one file at a time, a restriction - shared with many OS's install programs. - -On Debian systems, the complete text of the GNU General -Public License can be found in '/usr/share/common-licenses/GPL-2' diff --git a/deps/ncurses-5.9/Ada95/package/debian/rules b/deps/ncurses-5.9/Ada95/package/debian/rules deleted file mode 100755 index ad1a351..0000000 --- a/deps/ncurses-5.9/Ada95/package/debian/rules +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/make -f -# MAde with the aid of dh_make, by Craig Small -# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. -# Some lines taken from debmake, by Cristoph Lameter. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - -TARGET_DIR = $(CURDIR)/debian/adacurses -SAMPLE_DIR = $(TARGET_DIR)/usr/bin/AdaCurses - -CFLAGS = - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - - -configure: configure-stamp -configure-stamp: - dh_testdir - - CFLAGS="$(CFLAGS)" ./configure \ - --host=$(DEB_HOST_GNU_TYPE) \ - --build=$(DEB_BUILD_GNU_TYPE) \ - --prefix=/usr \ - --disable-rpath-link \ - --with-shared \ - --with-ada-sharedlib - - touch configure-stamp - -build: build-stamp -build-stamp: configure-stamp - dh_testdir - - $(MAKE) - - touch build-stamp - -clean: - dh_testdir - dh_testroot - - [ ! -f makefile ] || $(MAKE) distclean - - rm -f configure-stamp build-stamp install-stamp - - dh_clean - -install: install-stamp -install-stamp: build-stamp - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - $(MAKE) install DESTDIR=$(TARGET_DIR) - - # FIXME: it would be nice to make these into separate packages - ( cd samples && $(MAKE) install.examples DESTDIR=$(TARGET_DIR) BINDIR=$(SAMPLE_DIR) ) - ( cd doc && $(MAKE) install.html DESTDIR=$(TARGET_DIR) ) - - touch install-stamp - -# Build architecture-independent files here. -binary-indep: build install -# No binary-indep target. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installdocs - dh_installexamples - dh_installchangelogs NEWS - dh_strip - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/deps/ncurses-5.9/Ada95/package/debian/watch b/deps/ncurses-5.9/Ada95/package/debian/watch deleted file mode 100644 index 4794ae3..0000000 --- a/deps/ncurses-5.9/Ada95/package/debian/watch +++ /dev/null @@ -1,4 +0,0 @@ -version=3 - -opts=passive ftp://invisible-island.net/AdaCurses/AdaCurses-([\d.]+)\.tgz \ - debian uupdate diff --git a/deps/ncurses-5.9/Ada95/samples/Makefile.in b/deps/ncurses-5.9/Ada95/samples/Makefile.in deleted file mode 100644 index aa839ff..0000000 --- a/deps/ncurses-5.9/Ada95/samples/Makefile.in +++ /dev/null @@ -1,155 +0,0 @@ -############################################################################## -# Copyright (c) 1998-2010,2011 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, 1996 -# -# $Id: Makefile.in,v 1.46 2011/03/28 23:45:08 tom Exp $ -# -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -x = @PROG_EXT@ - -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -datadir = @datadir@ -libdir = @libdir@ -includedir = @includedir@ - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -AWK = @AWK@ -LN_S = @LN_S@ - -CC = @CC@ -CFLAGS = @CFLAGS@ - -CPPFLAGS = @ACPPFLAGS@ \ - -DHAVE_CONFIG_H -I$(srcdir) - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ -LOCAL_LIBDIR = @top_builddir@/lib - -LINK = $(CC) -LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ - -RANLIB = @RANLIB@ -################################################################################ -BINDIR = $(DESTDIR)$(bindir) -DATADIR = $(DESTDIR)$(datadir) -LIBDIR = $(DESTDIR)$(libdir) - -MY_DATADIR = $(DATADIR)/AdaCurses - -################################################################################ -ada_srcdir=../src - -LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) - -ADA = @cf_ada_compiler@ -ADAFLAGS = @ADAFLAGS@ -I$(srcdir) - -ADAMAKE = @cf_ada_make@ -ADAMAKEFLAGS = -a -A$(srcdir) -A$(ada_srcdir) -A$(srcdir)/$(ada_srcdir) - -ALIB = @cf_ada_package@ -ABASE = $(ALIB)-curses - -CARGS =-cargs $(ADAFLAGS) -LARGS =-largs -L../lib -lAdaCurses @TEST_ARG2@ $(LD_FLAGS) @TEST_LIBS2@ - -PROGS = tour$x ncurses$x @USE_GNAT_SIGINT@ rain$x - -all :: $(PROGS) - @echo made $@ - -sources : - @echo made $@ - -libs \ -install \ -install.libs :: - @echo made $@ - -uninstall \ -uninstall.libs :: - @echo made $@ - -install.examples :: $(BINDIR) $(PROGS) - $(INSTALL) $(PROGS) $(BINDIR) - -install.examples :: $(MY_DATADIR) - $(INSTALL_DATA) explain.txt $(MY_DATADIR) - -uninstall.examples :: - -cd $(BINDIR) && rm -f $(PROGS) - -rmdir $(BINDIR) - -rm -f $(MY_DATADIR)/explain.txt - -rmdir $(MY_DATADIR) - -$(BINDIR) \ -$(MY_DATADIR) : - mkdir -p $@ - -ncurses$x : - $(ADAMAKE) $(ADAMAKEFLAGS) ncurses $(CARGS) $(LARGS) - -tour$x : - $(ADAMAKE) $(ADAMAKEFLAGS) tour $(CARGS) $(LARGS) - -rain$x : - $(ADAMAKE) $(ADAMAKEFLAGS) rain $(CARGS) $(LARGS) - -mostlyclean: - @echo made $@ - -clean :: mostlyclean - rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] \ - trace screendump b~*.ad[bs] - -distclean :: clean - rm -f Makefile - -realclean :: distclean - @echo made $@ diff --git a/deps/ncurses-5.9/Ada95/samples/README b/deps/ncurses-5.9/Ada95/samples/README deleted file mode 100644 index c4f16ad..0000000 --- a/deps/ncurses-5.9/Ada95/samples/README +++ /dev/null @@ -1,35 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998,2006 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. -- -------------------------------------------------------------------------------- --- $Id: README,v 1.2 2006/04/22 22:24:12 tom Exp $ -------------------------------------------------------------------------------- - -The intention of the demo at this point in time is not to demonstrate all -the features of (n)curses and its subsystems, but to give some sample -sources how to use the binding at all. - -Ideally in the future we can combine both goals. diff --git a/deps/ncurses-5.9/Ada95/samples/sample-explanation.adb b/deps/ncurses-5.9/Ada95/samples/sample-explanation.adb deleted file mode 100644 index 5587099..0000000 --- a/deps/ncurses-5.9/Ada95/samples/sample-explanation.adb +++ /dev/null @@ -1,430 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT ncurses Binding Samples -- --- -- --- Sample.Explanation -- --- -- --- B O D Y -- --- -- ------------------------------------------------------------------------------- --- Copyright (c) 1998-2009,2011 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, 1996 --- Version Control --- $Revision: 1.26 $ --- $Date: 2011/03/26 22:33:29 $ --- Binding Version 01.00 ------------------------------------------------------------------------------- --- Poor mans help system. This scans a sequential file for key lines and --- then reads the lines up to the next key. Those lines are presented in --- a window as help or explanation. --- -with Ada.Text_IO; use Ada.Text_IO; -with Ada.Unchecked_Deallocation; -with Terminal_Interface.Curses; use Terminal_Interface.Curses; -with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; - -with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; -with Sample.Manifest; use Sample.Manifest; -with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; -with Sample.Helpers; use Sample.Helpers; - -package body Sample.Explanation is - - Help_Keys : constant String := "HELPKEYS"; - In_Help : constant String := "INHELP"; - - File_Name : constant String := "explain.txt"; - F : File_Type; - - type Help_Line; - type Help_Line_Access is access Help_Line; - pragma Controlled (Help_Line_Access); - type String_Access is access String; - pragma Controlled (String_Access); - - type Help_Line is - record - Prev, Next : Help_Line_Access; - Line : String_Access; - end record; - - procedure Explain (Key : String; - Win : Window); - - procedure Release_String is - new Ada.Unchecked_Deallocation (String, - String_Access); - procedure Release_Help_Line is - new Ada.Unchecked_Deallocation (Help_Line, - Help_Line_Access); - - function Search (Key : String) return Help_Line_Access; - procedure Release_Help (Root : in out Help_Line_Access); - - function Check_File (Name : String) return Boolean; - - procedure Explain (Key : String) - is - begin - Explain (Key, Null_Window); - end Explain; - - procedure Explain (Key : String; - Win : Window) - is - -- Retrieve the text associated with this key and display it in this - -- window. If no window argument is passed, the routine will create - -- a temporary window and use it. - - function Filter_Key return Real_Key_Code; - procedure Unknown_Key; - procedure Redo; - procedure To_Window (C : in out Help_Line_Access; - More : in out Boolean); - - Frame : Window := Null_Window; - - W : Window := Win; - K : Real_Key_Code; - P : Panel; - - Height : Line_Count; - Width : Column_Count; - Help : Help_Line_Access := Search (Key); - Current : Help_Line_Access; - Top_Line : Help_Line_Access; - - Has_More : Boolean := True; - - procedure Unknown_Key - is - begin - Add (W, "Help message with ID "); - Add (W, Key); - Add (W, " not found."); - Add (W, Character'Val (10)); - Add (W, "Press the Function key labeled 'Quit' key to continue."); - end Unknown_Key; - - procedure Redo - is - H : Help_Line_Access := Top_Line; - begin - if Top_Line /= null then - for L in 0 .. (Height - 1) loop - Add (W, L, 0, H.all.Line.all); - exit when H.all.Next = null; - H := H.all.Next; - end loop; - else - Unknown_Key; - end if; - end Redo; - - function Filter_Key return Real_Key_Code - is - K : Real_Key_Code; - begin - loop - K := Get_Key (W); - if K in Special_Key_Code'Range then - case K is - when HELP_CODE => - if not Find_Context (In_Help) then - Push_Environment (In_Help, False); - Explain (In_Help, W); - Pop_Environment; - Redo; - end if; - when EXPLAIN_CODE => - if not Find_Context (Help_Keys) then - Push_Environment (Help_Keys, False); - Explain (Help_Keys, W); - Pop_Environment; - Redo; - end if; - when others => exit; - end case; - else - exit; - end if; - end loop; - return K; - end Filter_Key; - - procedure To_Window (C : in out Help_Line_Access; - More : in out Boolean) - is - L : Line_Position := 0; - begin - loop - Add (W, L, 0, C.all.Line.all); - L := L + 1; - exit when C.all.Next = null or else L = Height; - C := C.all.Next; - end loop; - if C.all.Next /= null then - pragma Assert (L = Height); - More := True; - else - More := False; - end if; - end To_Window; - - begin - if W = Null_Window then - Push_Environment ("HELP"); - Default_Labels; - Frame := New_Window (Lines - 2, Columns, 0, 0); - if Has_Colors then - Set_Background (Win => Frame, - Ch => (Ch => ' ', - Color => Help_Color, - Attr => Normal_Video)); - Set_Character_Attributes (Win => Frame, - Attr => Normal_Video, - Color => Help_Color); - Erase (Frame); - end if; - Box (Frame); - Set_Character_Attributes (Frame, (Reverse_Video => True, - others => False)); - Add (Frame, Lines - 3, 2, "Cursor Up/Down scrolls"); - Set_Character_Attributes (Frame); -- Back to default. - Window_Title (Frame, "Explanation"); - W := Derived_Window (Frame, Lines - 4, Columns - 2, 1, 1); - Refresh_Without_Update (Frame); - Get_Size (W, Height, Width); - Set_Meta_Mode (W); - Set_KeyPad_Mode (W); - Allow_Scrolling (W, True); - Set_Echo_Mode (False); - P := Create (Frame); - Top (P); - Update_Panels; - else - Clear (W); - Refresh_Without_Update (W); - end if; - - Current := Help; Top_Line := Help; - - if null = Help then - Unknown_Key; - loop - K := Filter_Key; - exit when K = QUIT_CODE; - end loop; - else - To_Window (Current, Has_More); - if Has_More then - -- This means there are more lines available, so we have to go - -- into a scroll manager. - loop - K := Filter_Key; - if K in Special_Key_Code'Range then - case K is - when Key_Cursor_Down => - if Current.all.Next /= null then - Move_Cursor (W, Height - 1, 0); - Scroll (W, 1); - Current := Current.all.Next; - Top_Line := Top_Line.all.Next; - Add (W, Current.all.Line.all); - end if; - when Key_Cursor_Up => - if Top_Line.all.Prev /= null then - Move_Cursor (W, 0, 0); - Scroll (W, -1); - Top_Line := Top_Line.all.Prev; - Current := Current.all.Prev; - Add (W, Top_Line.all.Line.all); - end if; - when QUIT_CODE => exit; - when others => null; - end case; - end if; - end loop; - else - loop - K := Filter_Key; - exit when K = QUIT_CODE; - end loop; - end if; - end if; - - Clear (W); - - if Frame /= Null_Window then - Clear (Frame); - Delete (P); - Delete (W); - Delete (Frame); - Pop_Environment; - end if; - - Update_Panels; - Update_Screen; - - Release_Help (Help); - - end Explain; - - function Search (Key : String) return Help_Line_Access - is - Last : Natural; - Buffer : String (1 .. 256); - Root : Help_Line_Access := null; - Current : Help_Line_Access; - Tail : Help_Line_Access := null; - - function Next_Line return Boolean; - - function Next_Line return Boolean - is - H_End : constant String := "#END"; - begin - Get_Line (F, Buffer, Last); - if Last = H_End'Length and then H_End = Buffer (1 .. Last) then - return False; - else - return True; - end if; - end Next_Line; - begin - Reset (F); - Outer : - loop - exit Outer when not Next_Line; - if Last = (1 + Key'Length) and then Key = Buffer (2 .. Last) - and then Buffer (1) = '#' then - loop - exit when not Next_Line; - exit when Buffer (1) = '#'; - Current := new Help_Line'(null, null, - new String'(Buffer (1 .. Last))); - if Tail = null then - Release_Help (Root); - Root := Current; - else - Tail.all.Next := Current; - Current.all.Prev := Tail; - end if; - Tail := Current; - end loop; - exit Outer; - end if; - end loop Outer; - return Root; - end Search; - - procedure Release_Help (Root : in out Help_Line_Access) - is - Next : Help_Line_Access; - begin - loop - exit when Root = null; - Next := Root.all.Next; - Release_String (Root.all.Line); - Release_Help_Line (Root); - Root := Next; - end loop; - end Release_Help; - - procedure Explain_Context - is - begin - Explain (Context); - end Explain_Context; - - procedure Notepad (Key : String) - is - H : constant Help_Line_Access := Search (Key); - T : Help_Line_Access := H; - N : Line_Count := 1; - L : Line_Position := 0; - W : Window; - P : Panel; - begin - if H /= null then - loop - T := T.all.Next; - exit when T = null; - N := N + 1; - end loop; - W := New_Window (N + 2, Columns, Lines - N - 2, 0); - if Has_Colors then - Set_Background (Win => W, - Ch => (Ch => ' ', - Color => Notepad_Color, - Attr => Normal_Video)); - Set_Character_Attributes (Win => W, - Attr => Normal_Video, - Color => Notepad_Color); - Erase (W); - end if; - Box (W); - Window_Title (W, "Notepad"); - P := New_Panel (W); - T := H; - loop - Add (W, L + 1, 1, T.all.Line.all, Integer (Columns - 2)); - L := L + 1; - T := T.all.Next; - exit when T = null; - end loop; - T := H; - Release_Help (T); - Refresh_Without_Update (W); - Notepad_To_Context (P); - end if; - end Notepad; - - function Check_File (Name : String) return Boolean is - The_File : File_Type; - begin - Open (The_File, In_File, Name); - Close (The_File); - return True; - exception - when Name_Error => - return False; - end Check_File; - -begin - if Check_File ("/usr/share/AdaCurses/" & File_Name) then - Open (F, In_File, "/usr/share/AdaCurses/" & File_Name); - elsif Check_File (File_Name) then - Open (F, In_File, File_Name); - else - Put_Line (Standard_Error, - "The file explain.txt was not found in the current directory." - ); - raise Name_Error; - end if; -end Sample.Explanation; diff --git a/deps/ncurses-5.9/Ada95/src/Makefile.in b/deps/ncurses-5.9/Ada95/src/Makefile.in deleted file mode 100644 index f6c3e75..0000000 --- a/deps/ncurses-5.9/Ada95/src/Makefile.in +++ /dev/null @@ -1,319 +0,0 @@ -############################################################################## -# Copyright (c) 1998-2010,2011 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, 1996 -# -# $Id: Makefile.in,v 1.60 2011/03/31 09:46:16 tom Exp $ -# -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -MODEL = ../../@DFT_OBJ_SUBDIR@ - -DESTDIR = @DESTDIR@ - -top_srcdir = @top_srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -includedir = @includedir@ -libdir = @libdir@ - -LIBDIR = $(DESTDIR)$(libdir) -ADA_INCLUDE = $(DESTDIR)@ADA_INCLUDE@ -ADA_OBJECTS = $(DESTDIR)@ADA_OBJECTS@ - -INSTALL = @INSTALL@ -INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ - -AR = @AR@ -ARFLAGS = @ARFLAGS@ -AWK = @AWK@ -LN_S = @LN_S@ - -CC = @CC@ -CFLAGS = @CFLAGS@ - -CPPFLAGS = @ACPPFLAGS@ @CPPFLAGS@ \ - -DHAVE_CONFIG_H -I$(srcdir) - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -LINK = $(CC) -LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ - -RANLIB = @RANLIB@ - -################################################################################ -ADA = @cf_ada_compiler@ -ADAPREP = gnatprep -ADAFLAGS = @ADAFLAGS@ -I. -I$(srcdir) - -LIB_NAME = AdaCurses -SONAME = @ADA_SHAREDLIB@ - -GNAT_PROJECT = $(srcdir)/library.gpr - -# build/source are the Ada95 tree -BUILD_DIR = .. -SOURCE_DIR = .. - -BUILD_DIR_LIB = $(BUILD_DIR)/lib -SOURCE_DIR_SRC = $(SOURCE_DIR)/src - -ADAMAKE = @cf_ada_make@ -ADAMAKEFLAGS = \ - -P$(GNAT_PROJECT) \ - -XBUILD_DIR=`cd $(BUILD_DIR);pwd` \ - -XSOURCE_DIR=`cd $(SOURCE_DIR);pwd` \ - -XSOURCE_DIR2=`cd $(srcdir);pwd` \ - -XLIB_NAME=$(LIB_NAME) \ - -XSONAME=$(SONAME) - -CARGS = -cargs $(ADAFLAGS) -LARGS = - -STATIC_LIBNAME = lib$(LIB_NAME).a -SHARED_LIBNAME = $(SONAME) -SHARED_SYMLINK = lib$(LIB_NAME).so - -ALIB = @cf_ada_package@ -ABASE = $(ALIB)-curses -################################################################################ -GENERATED_SOURCES=$(ABASE).ads \ - $(ABASE).adb \ - $(ABASE)-aux.ads \ - $(ABASE)-trace.ads \ - $(ABASE)-menus.ads \ - $(ABASE)-forms.ads \ - $(ABASE)-mouse.ads \ - $(ABASE)-panels.ads \ - $(ABASE)-menus-menu_user_data.ads \ - $(ABASE)-menus-item_user_data.ads \ - $(ABASE)-forms-form_user_data.ads \ - $(ABASE)-forms-field_types.ads \ - $(ABASE)-forms-field_user_data.ads \ - $(ABASE)-panels-user_data.ads -################################################################################ -LIBOBJS=$(ALIB).o \ - $(ABASE)-aux.o \ - $(ABASE).o \ - $(ABASE)-terminfo.o \ - $(ABASE)-termcap.o \ - $(ABASE)-putwin.o \ - $(ABASE)-trace.o \ - $(ABASE)-mouse.o \ - $(ABASE)-panels.o \ - $(ABASE)-menus.o \ - $(ABASE)-forms.o \ - $(ABASE)-forms-field_types.o \ - $(ABASE)-forms-field_types-alpha.o \ - $(ABASE)-forms-field_types-alphanumeric.o \ - $(ABASE)-forms-field_types-intfield.o \ - $(ABASE)-forms-field_types-numeric.o \ - $(ABASE)-forms-field_types-regexp.o \ - $(ABASE)-forms-field_types-enumeration.o \ - $(ABASE)-forms-field_types-ipv4_address.o \ - $(ABASE)-forms-field_types-user.o \ - $(ABASE)-forms-field_types-user-choice.o \ - $(ABASE)-text_io.o \ - $(ABASE)-text_io-aux.o - -# Ada object files for generic packages. Since gnat 3.10 they are -# also compiled -GENOBJS=$(ABASE)-menus-menu_user_data.o \ - $(ABASE)-menus-item_user_data.o \ - $(ABASE)-forms-form_user_data.o \ - $(ABASE)-forms-field_user_data.o \ - $(ABASE)-forms-field_types-enumeration-ada.o \ - $(ABASE)-panels-user_data.o \ - $(ABASE)-text_io-integer_io.o \ - $(ABASE)-text_io-float_io.o \ - $(ABASE)-text_io-fixed_io.o \ - $(ABASE)-text_io-decimal_io.o \ - $(ABASE)-text_io-enumeration_io.o \ - $(ABASE)-text_io-modular_io.o \ - $(ABASE)-text_io-complex_io.o - -all :: $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) - @echo done - -$(ADA_INCLUDE) \ -$(ADA_OBJECTS) \ -$(LIBDIR) \ -$(BUILD_DIR_LIB) : - mkdir -p $@ - -sources : - @echo made $@ - -libs \ -install \ -install.libs :: \ - $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) - @echo made $(STATIC_LIBNAME) - -install \ -install.libs :: \ - $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \ - $(ADA_OBJECTS) - @$(INSTALL_LIB) \ - $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \ - $(ADA_OBJECTS) - -uninstall \ -uninstall.libs :: - @rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME) - -mostlyclean :: - rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] *.a - -clean :: mostlyclean - rm -f $(ABASE)-trace.adb - -distclean :: clean - rm -f Makefile - -realclean :: distclean - -BASEDEPS=$(ABASE).ads $(ABASE)-aux.ads $(ABASE).adb - -$(ABASE)-trace.adb : $(srcdir)/$(ABASE)-trace.adb_p - rm -f $@ - $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ -DPRAGMA_UNREF=@PRAGMA_UNREF@ $(srcdir)/$(ABASE)-trace.adb_p $@ - -############################################################################### -C_OBJS = c_varargs_to_ada.o ncurses_compat.o - -c_varargs_to_ada.o : $(srcdir)/c_varargs_to_ada.c - $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_varargs_to_ada.c - -ncurses_compat.o : $(srcdir)/ncurses_compat.c - $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/ncurses_compat.c - -############################################################################### - -MIXED_OBJS = $(C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@ - -@USE_OLD_MAKERULES@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \ -@USE_OLD_MAKERULES@ $(BUILD_DIR_LIB) \ -@USE_OLD_MAKERULES@ $(MIXED_OBJS) -@USE_OLD_MAKERULES@ $(AR) $(ARFLAGS) $@ $(MIXED_OBJS) - -$(BUILD_DIR)/static-ali : ; mkdir -p $@ -$(BUILD_DIR)/static-obj : ; mkdir -p $@ - -STATIC_DIRS = \ - $(BUILD_DIR_LIB) \ - $(BUILD_DIR)/static-ali \ - $(BUILD_DIR)/static-obj - -@USE_GNAT_PROJECTS@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \ -@USE_GNAT_PROJECTS@ $(ABASE)-trace.adb \ -@USE_GNAT_PROJECTS@ $(C_OBJS) \ -@USE_GNAT_PROJECTS@ $(STATIC_DIRS) -@USE_GNAT_PROJECTS@ $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=static -@USE_GNAT_PROJECTS@ $(AR) $(ARFLAGS) $@ $(C_OBJS) -@USE_GNAT_PROJECTS@ -@USE_GNAT_LIBRARIES@install \ -@USE_GNAT_LIBRARIES@install.libs :: \ -@USE_GNAT_LIBRARIES@ $(ADA_OBJECTS) -@USE_GNAT_LIBRARIES@ $(INSTALL_LIB) \ -@USE_GNAT_LIBRARIES@ $(BUILD_DIR)/static-ali/*.ali \ -@USE_GNAT_LIBRARIES@ $(ADA_OBJECTS) - -uninstall \ -uninstall.libs :: - @rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME) - -@USE_GNAT_LIBRARIES@uninstall \ -@USE_GNAT_LIBRARIES@uninstall.libs :: -@USE_GNAT_LIBRARIES@ @$(SHELL) -c 'for name in $(BUILD_DIR)/static-ali/*.ali ; do rm -f $(ADA_OBJECTS)/`basename $$name`; done' - -$(BUILD_DIR)/dynamic-ali : ; mkdir -p $@ -$(BUILD_DIR)/dynamic-obj : ; mkdir -p $@ - -SHARED_DIRS = \ - $(BUILD_DIR_LIB) \ - $(BUILD_DIR)/dynamic-ali \ - $(BUILD_DIR)/dynamic-obj - -@MAKE_ADA_SHAREDLIB@all :: $(BUILD_DIR_LIB)/$(SHARED_LIBNAME) -@MAKE_ADA_SHAREDLIB@$(BUILD_DIR_LIB)/$(SHARED_LIBNAME) :: $(ABASE)-trace.adb $(SHARED_DIRS) -@MAKE_ADA_SHAREDLIB@ cp $(MIXED_OBJS) $(BUILD_DIR)/dynamic-obj/ -@MAKE_ADA_SHAREDLIB@ $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=dynamic - -install \ -install.libs :: $(ADA_INCLUDE) - $(INSTALL_LIB) \ - $(SOURCE_DIR_SRC)/*.ad[sb] \ - $(ADA_INCLUDE) - -install \ -install.libs :: $(ADA_INCLUDE) - $(INSTALL_LIB) \ - $(GENERATED_SOURCES) \ - $(ADA_INCLUDE) - -uninstall \ -uninstall.libs :: - $(SHELL) -c 'for name in $(SOURCE_DIR_SRC)/*.ad[sb] $(GENERATED_SOURCES); do rm -f $(ADA_INCLUDE)/`basename $$name`; done' - -@MAKE_ADA_SHAREDLIB@install \ -@MAKE_ADA_SHAREDLIB@install.libs :: $(ADA_OBJECTS) $(LIBDIR) -@MAKE_ADA_SHAREDLIB@ $(INSTALL_LIB) \ -@MAKE_ADA_SHAREDLIB@ $(BUILD_DIR)/dynamic-ali/* \ -@MAKE_ADA_SHAREDLIB@ $(ADA_OBJECTS) -@MAKE_ADA_SHAREDLIB@ $(INSTALL_LIB) \ -@MAKE_ADA_SHAREDLIB@ $(BUILD_DIR_LIB)/$(SHARED_LIBNAME) \ -@MAKE_ADA_SHAREDLIB@ $(LIBDIR) -@MAKE_ADA_SHAREDLIB@ cd $(LIBDIR) && $(LN_S) $(SHARED_LIBNAME) $(SHARED_SYMLINK) -@MAKE_ADA_SHAREDLIB@ -@MAKE_ADA_SHAREDLIB@uninstall \ -@MAKE_ADA_SHAREDLIB@uninstall.libs :: -@MAKE_ADA_SHAREDLIB@ $(SHELL) -c 'for name in $(BUILD_DIR)/dynamic-ali/* ; do rm -f $(ADA_OBJECTS)/`basename $$name`; done' -@MAKE_ADA_SHAREDLIB@ -@MAKE_ADA_SHAREDLIB@uninstall \ -@MAKE_ADA_SHAREDLIB@uninstall.libs :: -@MAKE_ADA_SHAREDLIB@ rm -f $(LIBDIR)/$(SHARED_SYMLINK) -@MAKE_ADA_SHAREDLIB@ rm -f $(LIBDIR)/$(SHARED_LIBNAME) - -clean :: - rm -rf $(BUILD_DIR)/*-ali - rm -rf $(BUILD_DIR)/*-obj - rm -rf $(BUILD_DIR_LIB) diff --git a/deps/ncurses-5.9/Ada95/src/library.gpr b/deps/ncurses-5.9/Ada95/src/library.gpr deleted file mode 100644 index 33e4a3c..0000000 --- a/deps/ncurses-5.9/Ada95/src/library.gpr +++ /dev/null @@ -1,56 +0,0 @@ ------------------------------------------------------------------------------- --- Copyright (c) 2010,2011 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. -- ------------------------------------------------------------------------------- --- $Id: library.gpr,v 1.7 2011/03/18 23:10:28 Nicolas.Boulenguez Exp $ --- http://gcc.gnu.org/onlinedocs/gnat_ugn_unw/Library-Projects.html --- http://www.adaworld.com/debian/debian-ada-policy.html -project Library is - Build_Dir := External ("BUILD_DIR"); - Source_Dir := External ("SOURCE_DIR"); - Source_Dir2 := External ("SOURCE_DIR2"); - Kind := External ("LIB_KIND"); - for Library_Name use External ("LIB_NAME"); - for Library_Version use External ("SONAME"); - - for Library_Kind use Kind; - for Library_Dir use Build_Dir & "/lib"; - for Object_Dir use Build_Dir & "/" & Kind & "-obj"; - for Library_ALI_Dir use Build_Dir & "/" & Kind & "-ali"; - for Source_Dirs use (Source_Dir & "/src", - Source_Dir2, - Build_Dir & "/src"); - for Library_Options use ("-lncurses", "-lpanel", "-lmenu", "-lform"); - package Compiler is - for Default_Switches ("Ada") use - ("-g", - "-O2", - "-gnatafno", - "-gnatVa", -- All validity checks - "-gnatwa"); -- Activate all optional errors - end Compiler; - for Languages use ("C", "Ada"); -end Library; diff --git a/deps/ncurses-5.9/Ada95/src/modules b/deps/ncurses-5.9/Ada95/src/modules deleted file mode 100644 index 9f5e030..0000000 --- a/deps/ncurses-5.9/Ada95/src/modules +++ /dev/null @@ -1,70 +0,0 @@ -# $Id: modules,v 1.3 2010/06/26 23:33:14 tom Exp $ -############################################################################## -# Copyright (c) 2010 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: Thomas E. Dickey 2010 -# - -# Library objects -# rootname depend-spec depend-body unit -$(ALIB) $(srcdir) none spec -$(ABASE)-aux none $(srcdir) body -$(ABASE) none . body -$(ABASE)-terminfo $(srcdir) $(srcdir) body -$(ABASE)-termcap $(srcdir) $(srcdir) body -$(ABASE)-putwin $(srcdir) $(srcdir) body -$(ABASE)-trace . . body -$(ABASE)-mouse . $(srcdir) body -$(ABASE)-panels . $(srcdir) body -$(ABASE)-menus . $(srcdir) body -$(ABASE)-forms . $(srcdir) body -$(ABASE)-forms-field_types . $(srcdir) body -$(ABASE)-forms-field_types-alpha $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-alphanumeric $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-intfield $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-numeric $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-regexp $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-enumeration $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-ipv4_address $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-user $(srcdir) $(srcdir) body -$(ABASE)-forms-field_types-user-choice $(srcdir) $(srcdir) body -$(ABASE)-text_io $(srcdir) $(srcdir) body -$(ABASE)-text_io-aux $(srcdir) $(srcdir) body -$(ABASE)-menus-menu_user_data . $(srcdir) body -$(ABASE)-menus-item_user_data . $(srcdir) body -$(ABASE)-forms-form_user_data . $(srcdir) body -$(ABASE)-forms-field_user_data . $(srcdir) body -$(ABASE)-forms-field_types-enumeration-ada $(srcdir) $(srcdir) body -$(ABASE)-panels-user_data . $(srcdir) body -$(ABASE)-text_io-integer_io $(srcdir) $(srcdir) body -$(ABASE)-text_io-float_io $(srcdir) $(srcdir) body -$(ABASE)-text_io-fixed_io $(srcdir) $(srcdir) body -$(ABASE)-text_io-decimal_io $(srcdir) $(srcdir) body -$(ABASE)-text_io-enumeration_io $(srcdir) $(srcdir) body -$(ABASE)-text_io-modular_io $(srcdir) $(srcdir) body -$(ABASE)-text_io-complex_io $(srcdir) $(srcdir) body diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus.adb b/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus.adb deleted file mode 100644 index a7dca07..0000000 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus.adb +++ /dev/null @@ -1,1022 +0,0 @@ ------------------------------------------------------------------------------- --- -- --- GNAT ncurses Binding -- --- -- --- Terminal_Interface.Curses.Menus -- --- -- --- B O D Y -- --- -- ------------------------------------------------------------------------------- --- Copyright (c) 1998-2009,2011 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, 1996 --- Version Control: --- $Revision: 1.28 $ --- $Date: 2011/03/22 23:38:12 $ --- Binding Version 01.00 ------------------------------------------------------------------------------- -with Ada.Unchecked_Deallocation; -with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; - -with Interfaces.C; use Interfaces.C; -with Interfaces.C.Strings; use Interfaces.C.Strings; -with Interfaces.C.Pointers; - -with Ada.Unchecked_Conversion; - -package body Terminal_Interface.Curses.Menus is - - type C_Item_Array is array (Natural range <>) of aliased Item; - package I_Array is new - Interfaces.C.Pointers (Natural, Item, C_Item_Array, Null_Item); - - use type System.Bit_Order; - subtype chars_ptr is Interfaces.C.Strings.chars_ptr; - - function MOS_2_CInt is new - Ada.Unchecked_Conversion (Menu_Option_Set, - C_Int); - - function CInt_2_MOS is new - Ada.Unchecked_Conversion (C_Int, - Menu_Option_Set); - - function IOS_2_CInt is new - Ada.Unchecked_Conversion (Item_Option_Set, - C_Int); - - function CInt_2_IOS is new - Ada.Unchecked_Conversion (C_Int, - Item_Option_Set); - ------------------------------------------------------------------------------- - procedure Request_Name (Key : Menu_Request_Code; - Name : out String) - is - function Request_Name (Key : C_Int) return chars_ptr; - pragma Import (C, Request_Name, "menu_request_name"); - begin - Fill_String (Request_Name (C_Int (Key)), Name); - end Request_Name; - - function Request_Name (Key : Menu_Request_Code) return String - is - function Request_Name (Key : C_Int) return chars_ptr; - pragma Import (C, Request_Name, "menu_request_name"); - begin - return Fill_String (Request_Name (C_Int (Key))); - end Request_Name; - - function Create (Name : String; - Description : String := "") return Item - is - type Char_Ptr is access all Interfaces.C.char; - function Newitem (Name, Desc : Char_Ptr) return Item; - pragma Import (C, Newitem, "new_item"); - - type Name_String is new char_array (0 .. Name'Length); - type Name_String_Ptr is access Name_String; - pragma Controlled (Name_String_Ptr); - - type Desc_String is new char_array (0 .. Description'Length); - type Desc_String_Ptr is access Desc_String; - pragma Controlled (Desc_String_Ptr); - - Name_Str : constant Name_String_Ptr := new Name_String; - Desc_Str : constant Desc_String_Ptr := new Desc_String; - Name_Len, Desc_Len : size_t; - Result : Item; - begin - To_C (Name, Name_Str.all, Name_Len); - To_C (Description, Desc_Str.all, Desc_Len); - Result := Newitem (Name_Str.all (Name_Str.all'First)'Access, - Desc_Str.all (Desc_Str.all'First)'Access); - if Result = Null_Item then - raise Eti_System_Error; - end if; - return Result; - end Create; - - procedure Delete (Itm : in out Item) - is - function Descname (Itm : Item) return chars_ptr; - pragma Import (C, Descname, "item_description"); - function Itemname (Itm : Item) return chars_ptr; - pragma Import (C, Itemname, "item_name"); - - function Freeitem (Itm : Item) return C_Int; - pragma Import (C, Freeitem, "free_item"); - - Res : Eti_Error; - Ptr : chars_ptr; - begin - Ptr := Descname (Itm); - if Ptr /= Null_Ptr then - Interfaces.C.Strings.Free (Ptr); - end if; - Ptr := Itemname (Itm); - if Ptr /= Null_Ptr then - Interfaces.C.Strings.Free (Ptr); - end if; - Res := Freeitem (Itm); - if Res /= E_Ok then - Eti_Exception (Res); - end if; - Itm := Null_Item; - end Delete; -------------------------------------------------------------------------------- - procedure Set_Value (Itm : Item; - Value : Boolean := True) - is - function Set_Item_Val (Itm : Item; - Val : C_Int) return C_Int; - pragma Import (C, Set_Item_Val, "set_item_value"); - - Res : constant Eti_Error := Set_Item_Val (Itm, Boolean'Pos (Value)); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Value; - - function Value (Itm : Item) return Boolean - is - function Item_Val (Itm : Item) return C_Int; - pragma Import (C, Item_Val, "item_value"); - begin - if Item_Val (Itm) = Curses_False then - return False; - else - return True; - end if; - end Value; - -------------------------------------------------------------------------------- - function Visible (Itm : Item) return Boolean - is - function Item_Vis (Itm : Item) return C_Int; - pragma Import (C, Item_Vis, "item_visible"); - begin - if Item_Vis (Itm) = Curses_False then - return False; - else - return True; - end if; - end Visible; -------------------------------------------------------------------------------- - procedure Set_Options (Itm : Item; - Options : Item_Option_Set) - is - function Set_Item_Opts (Itm : Item; - Opt : C_Int) return C_Int; - pragma Import (C, Set_Item_Opts, "set_item_opts"); - - Opt : constant C_Int := IOS_2_CInt (Options); - Res : Eti_Error; - begin - Res := Set_Item_Opts (Itm, Opt); - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Options; - - procedure Switch_Options (Itm : Item; - Options : Item_Option_Set; - On : Boolean := True) - is - function Item_Opts_On (Itm : Item; - Opt : C_Int) return C_Int; - pragma Import (C, Item_Opts_On, "item_opts_on"); - function Item_Opts_Off (Itm : Item; - Opt : C_Int) return C_Int; - pragma Import (C, Item_Opts_Off, "item_opts_off"); - - Opt : constant C_Int := IOS_2_CInt (Options); - Err : Eti_Error; - begin - if On then - Err := Item_Opts_On (Itm, Opt); - else - Err := Item_Opts_Off (Itm, Opt); - end if; - if Err /= E_Ok then - Eti_Exception (Err); - end if; - end Switch_Options; - - procedure Get_Options (Itm : Item; - Options : out Item_Option_Set) - is - function Item_Opts (Itm : Item) return C_Int; - pragma Import (C, Item_Opts, "item_opts"); - - Res : constant C_Int := Item_Opts (Itm); - begin - Options := CInt_2_IOS (Res); - end Get_Options; - - function Get_Options (Itm : Item := Null_Item) return Item_Option_Set - is - Ios : Item_Option_Set; - begin - Get_Options (Itm, Ios); - return Ios; - end Get_Options; -------------------------------------------------------------------------------- - procedure Name (Itm : Item; - Name : out String) - is - function Itemname (Itm : Item) return chars_ptr; - pragma Import (C, Itemname, "item_name"); - begin - Fill_String (Itemname (Itm), Name); - end Name; - - function Name (Itm : Item) return String - is - function Itemname (Itm : Item) return chars_ptr; - pragma Import (C, Itemname, "item_name"); - begin - return Fill_String (Itemname (Itm)); - end Name; - - procedure Description (Itm : Item; - Description : out String) - is - function Descname (Itm : Item) return chars_ptr; - pragma Import (C, Descname, "item_description"); - begin - Fill_String (Descname (Itm), Description); - end Description; - - function Description (Itm : Item) return String - is - function Descname (Itm : Item) return chars_ptr; - pragma Import (C, Descname, "item_description"); - begin - return Fill_String (Descname (Itm)); - end Description; -------------------------------------------------------------------------------- - procedure Set_Current (Men : Menu; - Itm : Item) - is - function Set_Curr_Item (Men : Menu; - Itm : Item) return C_Int; - pragma Import (C, Set_Curr_Item, "set_current_item"); - - Res : constant Eti_Error := Set_Curr_Item (Men, Itm); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Current; - - function Current (Men : Menu) return Item - is - function Curr_Item (Men : Menu) return Item; - pragma Import (C, Curr_Item, "current_item"); - - Res : constant Item := Curr_Item (Men); - begin - if Res = Null_Item then - raise Menu_Exception; - end if; - return Res; - end Current; - - procedure Set_Top_Row (Men : Menu; - Line : Line_Position) - is - function Set_Toprow (Men : Menu; - Line : C_Int) return C_Int; - pragma Import (C, Set_Toprow, "set_top_row"); - - Res : constant Eti_Error := Set_Toprow (Men, C_Int (Line)); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Top_Row; - - function Top_Row (Men : Menu) return Line_Position - is - function Toprow (Men : Menu) return C_Int; - pragma Import (C, Toprow, "top_row"); - - Res : constant C_Int := Toprow (Men); - begin - if Res = Curses_Err then - raise Menu_Exception; - end if; - return Line_Position (Res); - end Top_Row; - - function Get_Index (Itm : Item) return Positive - is - function Get_Itemindex (Itm : Item) return C_Int; - pragma Import (C, Get_Itemindex, "item_index"); - - Res : constant C_Int := Get_Itemindex (Itm); - begin - if Res = Curses_Err then - raise Menu_Exception; - end if; - return Positive (Natural (Res) + Positive'First); - end Get_Index; -------------------------------------------------------------------------------- - procedure Post (Men : Menu; - Post : Boolean := True) - is - function M_Post (Men : Menu) return C_Int; - pragma Import (C, M_Post, "post_menu"); - function M_Unpost (Men : Menu) return C_Int; - pragma Import (C, M_Unpost, "unpost_menu"); - - Res : Eti_Error; - begin - if Post then - Res := M_Post (Men); - else - Res := M_Unpost (Men); - end if; - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Post; -------------------------------------------------------------------------------- - procedure Set_Options (Men : Menu; - Options : Menu_Option_Set) - is - function Set_Menu_Opts (Men : Menu; - Opt : C_Int) return C_Int; - pragma Import (C, Set_Menu_Opts, "set_menu_opts"); - - Opt : constant C_Int := MOS_2_CInt (Options); - Res : Eti_Error; - begin - Res := Set_Menu_Opts (Men, Opt); - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Options; - - procedure Switch_Options (Men : Menu; - Options : Menu_Option_Set; - On : Boolean := True) - is - function Menu_Opts_On (Men : Menu; - Opt : C_Int) return C_Int; - pragma Import (C, Menu_Opts_On, "menu_opts_on"); - function Menu_Opts_Off (Men : Menu; - Opt : C_Int) return C_Int; - pragma Import (C, Menu_Opts_Off, "menu_opts_off"); - - Opt : constant C_Int := MOS_2_CInt (Options); - Err : Eti_Error; - begin - if On then - Err := Menu_Opts_On (Men, Opt); - else - Err := Menu_Opts_Off (Men, Opt); - end if; - if Err /= E_Ok then - Eti_Exception (Err); - end if; - end Switch_Options; - - procedure Get_Options (Men : Menu; - Options : out Menu_Option_Set) - is - function Menu_Opts (Men : Menu) return C_Int; - pragma Import (C, Menu_Opts, "menu_opts"); - - Res : constant C_Int := Menu_Opts (Men); - begin - Options := CInt_2_MOS (Res); - end Get_Options; - - function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set - is - Mos : Menu_Option_Set; - begin - Get_Options (Men, Mos); - return Mos; - end Get_Options; -------------------------------------------------------------------------------- - procedure Set_Window (Men : Menu; - Win : Window) - is - function Set_Menu_Win (Men : Menu; - Win : Window) return C_Int; - pragma Import (C, Set_Menu_Win, "set_menu_win"); - - Res : constant Eti_Error := Set_Menu_Win (Men, Win); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Window; - - function Get_Window (Men : Menu) return Window - is - function Menu_Win (Men : Menu) return Window; - pragma Import (C, Menu_Win, "menu_win"); - - W : constant Window := Menu_Win (Men); - begin - return W; - end Get_Window; - - procedure Set_Sub_Window (Men : Menu; - Win : Window) - is - function Set_Menu_Sub (Men : Menu; - Win : Window) return C_Int; - pragma Import (C, Set_Menu_Sub, "set_menu_sub"); - - Res : constant Eti_Error := Set_Menu_Sub (Men, Win); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Sub_Window; - - function Get_Sub_Window (Men : Menu) return Window - is - function Menu_Sub (Men : Menu) return Window; - pragma Import (C, Menu_Sub, "menu_sub"); - - W : constant Window := Menu_Sub (Men); - begin - return W; - end Get_Sub_Window; - - procedure Scale (Men : Menu; - Lines : out Line_Count; - Columns : out Column_Count) - is - type C_Int_Access is access all C_Int; - function M_Scale (Men : Menu; - Yp, Xp : C_Int_Access) return C_Int; - pragma Import (C, M_Scale, "scale_menu"); - - X, Y : aliased C_Int; - Res : constant Eti_Error := M_Scale (Men, Y'Access, X'Access); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - Lines := Line_Count (Y); - Columns := Column_Count (X); - end Scale; -------------------------------------------------------------------------------- - procedure Position_Cursor (Men : Menu) - is - function Pos_Menu_Cursor (Men : Menu) return C_Int; - pragma Import (C, Pos_Menu_Cursor, "pos_menu_cursor"); - - Res : constant Eti_Error := Pos_Menu_Cursor (Men); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Position_Cursor; - -------------------------------------------------------------------------------- - procedure Set_Mark (Men : Menu; - Mark : String) - is - type Char_Ptr is access all Interfaces.C.char; - function Set_Mark (Men : Menu; - Mark : Char_Ptr) return C_Int; - pragma Import (C, Set_Mark, "set_menu_mark"); - - Txt : char_array (0 .. Mark'Length); - Len : size_t; - Res : Eti_Error; - begin - To_C (Mark, Txt, Len); - Res := Set_Mark (Men, Txt (Txt'First)'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Mark; - - procedure Mark (Men : Menu; - Mark : out String) - is - function Get_Menu_Mark (Men : Menu) return chars_ptr; - pragma Import (C, Get_Menu_Mark, "menu_mark"); - begin - Fill_String (Get_Menu_Mark (Men), Mark); - end Mark; - - function Mark (Men : Menu) return String - is - function Get_Menu_Mark (Men : Menu) return chars_ptr; - pragma Import (C, Get_Menu_Mark, "menu_mark"); - begin - return Fill_String (Get_Menu_Mark (Men)); - end Mark; - -------------------------------------------------------------------------------- - procedure Set_Foreground - (Men : Menu; - Fore : Character_Attribute_Set := Normal_Video; - Color : Color_Pair := Color_Pair'First) - is - function Set_Menu_Fore (Men : Menu; - Attr : C_Chtype) return C_Int; - pragma Import (C, Set_Menu_Fore, "set_menu_fore"); - - Ch : constant Attributed_Character := (Ch => Character'First, - Color => Color, - Attr => Fore); - Res : constant Eti_Error := Set_Menu_Fore (Men, AttrChar_To_Chtype (Ch)); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Foreground; - - procedure Foreground (Men : Menu; - Fore : out Character_Attribute_Set) - is - function Menu_Fore (Men : Menu) return C_Chtype; - pragma Import (C, Menu_Fore, "menu_fore"); - begin - Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr; - end Foreground; - - procedure Foreground (Men : Menu; - Fore : out Character_Attribute_Set; - Color : out Color_Pair) - is - function Menu_Fore (Men : Menu) return C_Chtype; - pragma Import (C, Menu_Fore, "menu_fore"); - begin - Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr; - Color := Chtype_To_AttrChar (Menu_Fore (Men)).Color; - end Foreground; - - procedure Set_Background - (Men : Menu; - Back : Character_Attribute_Set := Normal_Video; - Color : Color_Pair := Color_Pair'First) - is - function Set_Menu_Back (Men : Menu; - Attr : C_Chtype) return C_Int; - pragma Import (C, Set_Menu_Back, "set_menu_back"); - - Ch : constant Attributed_Character := (Ch => Character'First, - Color => Color, - Attr => Back); - Res : constant Eti_Error := Set_Menu_Back (Men, AttrChar_To_Chtype (Ch)); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Background; - - procedure Background (Men : Menu; - Back : out Character_Attribute_Set) - is - function Menu_Back (Men : Menu) return C_Chtype; - pragma Import (C, Menu_Back, "menu_back"); - begin - Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr; - end Background; - - procedure Background (Men : Menu; - Back : out Character_Attribute_Set; - Color : out Color_Pair) - is - function Menu_Back (Men : Menu) return C_Chtype; - pragma Import (C, Menu_Back, "menu_back"); - begin - Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr; - Color := Chtype_To_AttrChar (Menu_Back (Men)).Color; - end Background; - - procedure Set_Grey (Men : Menu; - Grey : Character_Attribute_Set := Normal_Video; - Color : Color_Pair := Color_Pair'First) - is - function Set_Menu_Grey (Men : Menu; - Attr : C_Chtype) return C_Int; - pragma Import (C, Set_Menu_Grey, "set_menu_grey"); - - Ch : constant Attributed_Character := (Ch => Character'First, - Color => Color, - Attr => Grey); - - Res : constant Eti_Error := Set_Menu_Grey (Men, AttrChar_To_Chtype (Ch)); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Grey; - - procedure Grey (Men : Menu; - Grey : out Character_Attribute_Set) - is - function Menu_Grey (Men : Menu) return C_Chtype; - pragma Import (C, Menu_Grey, "menu_grey"); - begin - Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr; - end Grey; - - procedure Grey (Men : Menu; - Grey : out Character_Attribute_Set; - Color : out Color_Pair) - is - function Menu_Grey (Men : Menu) return C_Chtype; - pragma Import (C, Menu_Grey, "menu_grey"); - begin - Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr; - Color := Chtype_To_AttrChar (Menu_Grey (Men)).Color; - end Grey; - - procedure Set_Pad_Character (Men : Menu; - Pad : Character := Space) - is - function Set_Menu_Pad (Men : Menu; - Ch : C_Int) return C_Int; - pragma Import (C, Set_Menu_Pad, "set_menu_pad"); - - Res : constant Eti_Error := Set_Menu_Pad (Men, - C_Int (Character'Pos (Pad))); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Pad_Character; - - procedure Pad_Character (Men : Menu; - Pad : out Character) - is - function Menu_Pad (Men : Menu) return C_Int; - pragma Import (C, Menu_Pad, "menu_pad"); - begin - Pad := Character'Val (Menu_Pad (Men)); - end Pad_Character; -------------------------------------------------------------------------------- - procedure Set_Spacing (Men : Menu; - Descr : Column_Position := 0; - Row : Line_Position := 0; - Col : Column_Position := 0) - is - function Set_Spacing (Men : Menu; - D, R, C : C_Int) return C_Int; - pragma Import (C, Set_Spacing, "set_menu_spacing"); - - Res : constant Eti_Error := Set_Spacing (Men, - C_Int (Descr), - C_Int (Row), - C_Int (Col)); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Spacing; - - procedure Spacing (Men : Menu; - Descr : out Column_Position; - Row : out Line_Position; - Col : out Column_Position) - is - type C_Int_Access is access all C_Int; - function Get_Spacing (Men : Menu; - D, R, C : C_Int_Access) return C_Int; - pragma Import (C, Get_Spacing, "menu_spacing"); - - D, R, C : aliased C_Int; - Res : constant Eti_Error := Get_Spacing (Men, - D'Access, - R'Access, - C'Access); - begin - if Res /= E_Ok then - Eti_Exception (Res); - else - Descr := Column_Position (D); - Row := Line_Position (R); - Col := Column_Position (C); - end if; - end Spacing; -------------------------------------------------------------------------------- - function Set_Pattern (Men : Menu; - Text : String) return Boolean - is - type Char_Ptr is access all Interfaces.C.char; - function Set_Pattern (Men : Menu; - Pattern : Char_Ptr) return C_Int; - pragma Import (C, Set_Pattern, "set_menu_pattern"); - - S : char_array (0 .. Text'Length); - L : size_t; - Res : Eti_Error; - begin - To_C (Text, S, L); - Res := Set_Pattern (Men, S (S'First)'Access); - case Res is - when E_No_Match => return False; - when E_Ok => return True; - when others => - Eti_Exception (Res); - return False; - end case; - end Set_Pattern; - - procedure Pattern (Men : Menu; - Text : out String) - is - function Get_Pattern (Men : Menu) return chars_ptr; - pragma Import (C, Get_Pattern, "menu_pattern"); - begin - Fill_String (Get_Pattern (Men), Text); - end Pattern; -------------------------------------------------------------------------------- - procedure Set_Format (Men : Menu; - Lines : Line_Count; - Columns : Column_Count) - is - function Set_Menu_Fmt (Men : Menu; - Lin : C_Int; - Col : C_Int) return C_Int; - pragma Import (C, Set_Menu_Fmt, "set_menu_format"); - - Res : constant Eti_Error := Set_Menu_Fmt (Men, - C_Int (Lines), - C_Int (Columns)); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Format; - - procedure Format (Men : Menu; - Lines : out Line_Count; - Columns : out Column_Count) - is - type C_Int_Access is access all C_Int; - function Menu_Fmt (Men : Menu; - Y, X : C_Int_Access) return C_Int; - pragma Import (C, Menu_Fmt, "menu_format"); - - L, C : aliased C_Int; - Res : constant Eti_Error := Menu_Fmt (Men, L'Access, C'Access); - begin - if Res /= E_Ok then - Eti_Exception (Res); - else - Lines := Line_Count (L); - Columns := Column_Count (C); - end if; - end Format; -------------------------------------------------------------------------------- - procedure Set_Item_Init_Hook (Men : Menu; - Proc : Menu_Hook_Function) - is - function Set_Item_Init (Men : Menu; - Proc : Menu_Hook_Function) return C_Int; - pragma Import (C, Set_Item_Init, "set_item_init"); - - Res : constant Eti_Error := Set_Item_Init (Men, Proc); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Item_Init_Hook; - - procedure Set_Item_Term_Hook (Men : Menu; - Proc : Menu_Hook_Function) - is - function Set_Item_Term (Men : Menu; - Proc : Menu_Hook_Function) return C_Int; - pragma Import (C, Set_Item_Term, "set_item_term"); - - Res : constant Eti_Error := Set_Item_Term (Men, Proc); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Item_Term_Hook; - - procedure Set_Menu_Init_Hook (Men : Menu; - Proc : Menu_Hook_Function) - is - function Set_Menu_Init (Men : Menu; - Proc : Menu_Hook_Function) return C_Int; - pragma Import (C, Set_Menu_Init, "set_menu_init"); - - Res : constant Eti_Error := Set_Menu_Init (Men, Proc); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Menu_Init_Hook; - - procedure Set_Menu_Term_Hook (Men : Menu; - Proc : Menu_Hook_Function) - is - function Set_Menu_Term (Men : Menu; - Proc : Menu_Hook_Function) return C_Int; - pragma Import (C, Set_Menu_Term, "set_menu_term"); - - Res : constant Eti_Error := Set_Menu_Term (Men, Proc); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end Set_Menu_Term_Hook; - - function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function - is - function Item_Init (Men : Menu) return Menu_Hook_Function; - pragma Import (C, Item_Init, "item_init"); - begin - return Item_Init (Men); - end Get_Item_Init_Hook; - - function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function - is - function Item_Term (Men : Menu) return Menu_Hook_Function; - pragma Import (C, Item_Term, "item_term"); - begin - return Item_Term (Men); - end Get_Item_Term_Hook; - - function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function - is - function Menu_Init (Men : Menu) return Menu_Hook_Function; - pragma Import (C, Menu_Init, "menu_init"); - begin - return Menu_Init (Men); - end Get_Menu_Init_Hook; - - function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function - is - function Menu_Term (Men : Menu) return Menu_Hook_Function; - pragma Import (C, Menu_Term, "menu_term"); - begin - return Menu_Term (Men); - end Get_Menu_Term_Hook; -------------------------------------------------------------------------------- - procedure Redefine (Men : Menu; - Items : Item_Array_Access) - is - function Set_Items (Men : Menu; - Items : System.Address) return C_Int; - pragma Import (C, Set_Items, "set_menu_items"); - - Res : Eti_Error; - begin - pragma Assert (Items.all (Items'Last) = Null_Item); - if Items.all (Items'Last) /= Null_Item then - raise Menu_Exception; - else - Res := Set_Items (Men, Items.all'Address); - if Res /= E_Ok then - Eti_Exception (Res); - end if; - end if; - end Redefine; - - function Item_Count (Men : Menu) return Natural - is - function Count (Men : Menu) return C_Int; - pragma Import (C, Count, "item_count"); - begin - return Natural (Count (Men)); - end Item_Count; - - function Items (Men : Menu; - Index : Positive) return Item - is - use I_Array; - - function C_Mitems (Men : Menu) return Pointer; - pragma Import (C, C_Mitems, "menu_items"); - - P : Pointer := C_Mitems (Men); - begin - if P = null or else Index > Item_Count (Men) then - raise Menu_Exception; - else - P := P + ptrdiff_t (C_Int (Index) - 1); - return P.all; - end if; - end Items; - -------------------------------------------------------------------------------- - function Create (Items : Item_Array_Access) return Menu - is - function Newmenu (Items : System.Address) return Menu; - pragma Import (C, Newmenu, "new_menu"); - - M : Menu; - begin - pragma Assert (Items.all (Items'Last) = Null_Item); - if Items.all (Items'Last) /= Null_Item then - raise Menu_Exception; - else - M := Newmenu (Items.all'Address); - if M = Null_Menu then - raise Menu_Exception; - end if; - return M; - end if; - end Create; - - procedure Delete (Men : in out Menu) - is - function Free (Men : Menu) return C_Int; - pragma Import (C, Free, "free_menu"); - - Res : constant Eti_Error := Free (Men); - begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - Men := Null_Menu; - end Delete; - ------------------------------------------------------------------------------- - function Driver (Men : Menu; - Key : Key_Code) return Driver_Result - is - function Driver (Men : Menu; - Key : C_Int) return C_Int; - pragma Import (C, Driver, "menu_driver"); - - R : constant Eti_Error := Driver (Men, C_Int (Key)); - begin - if R /= E_Ok then - case R is - when E_Unknown_Command => return Unknown_Request; - when E_No_Match => return No_Match; - when E_Request_Denied | - E_Not_Selectable => return Request_Denied; - when others => - Eti_Exception (R); - end case; - end if; - return Menu_Ok; - end Driver; - - procedure Free (IA : in out Item_Array_Access; - Free_Items : Boolean := False) - is - procedure Release is new Ada.Unchecked_Deallocation - (Item_Array, Item_Array_Access); - begin - if IA /= null and then Free_Items then - for I in IA'First .. (IA'Last - 1) loop - if IA.all (I) /= Null_Item then - Delete (IA.all (I)); - end if; - end loop; - end if; - Release (IA); - end Free; - -------------------------------------------------------------------------------- - function Default_Menu_Options return Menu_Option_Set - is - begin - return Get_Options (Null_Menu); - end Default_Menu_Options; - - function Default_Item_Options return Item_Option_Set - is - begin - return Get_Options (Null_Item); - end Default_Item_Options; -------------------------------------------------------------------------------- - -end Terminal_Interface.Curses.Menus; diff --git a/deps/ncurses-5.9/INSTALL b/deps/ncurses-5.9/INSTALL deleted file mode 100644 index eb26ab1..0000000 --- a/deps/ncurses-5.9/INSTALL +++ /dev/null @@ -1,1882 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2010,2011 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. -- -------------------------------------------------------------------------------- --- $Id: INSTALL,v 1.155 2011/03/31 08:27:24 tom Exp $ ---------------------------------------------------------------------- - How to install Ncurses/Terminfo on your system ---------------------------------------------------------------------- - - ************************************************************ - * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. * - ************************************************************ - -You should be reading the file INSTALL in a directory called ncurses-d.d, where -d.d is the current version number. There should be several subdirectories, -including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs', -and `test'. See the README file for a roadmap to the package. - -If you are a distribution integrator or packager, please read and act on the -section titled IF YOU ARE A SYSTEM INTEGRATOR below. - -If you are converting from BSD curses and do not have root access, be sure -to read the BSD CONVERSION NOTES section below. - -If you are trying to build applications using gpm with ncurses, -read the USING NCURSES WITH GPM section below. - -If you are running over the Andrew File System see the note below on -USING NCURSES WITH AFS. - -If you are cross-compiling, see the note below on BUILDING NCURSES WITH A -CROSS-COMPILER. - -If you want to build the Ada95 binding, go to the Ada95 directory and -follow the instructions there. The Ada95 binding is not covered below. - - -REQUIREMENTS: ------------- - -You will need the following to build and install ncurses under UNIX: - - * ANSI C compiler (gcc, for instance) - * sh (bash will do) - * awk (mawk or gawk will do) - * sed - * BSD or System V style install (a script is enclosed) - -Ncurses has been also built in the OS/2 EMX environment. - - -INSTALLATION PROCEDURE: ----------------------- - -1. First, decide whether you want ncurses to replace your existing library (in - which case you'll need super-user privileges) or be installed in parallel - with it. - - The --prefix option to configure changes the root directory for installing - ncurses. The default is normally in subdirectories of /usr/local, except - for systems where ncurses is normally installed as a system library (see - "IF YOU ARE A SYSTEM INTEGRATOR"). Use --prefix=/usr to replace your - default curses distribution. - - The package gets installed beneath the --prefix directory as follows: - - In $(prefix)/bin: tic, infocmp, captoinfo, tset, - reset, clear, tput, toe, tabs - In $(prefix)/lib: libncurses*.* libcurses.a - In $(prefix)/share/terminfo: compiled terminal descriptions - In $(prefix)/include: C header files - Under $(prefix)/man: the manual pages - - Note that the configure script attempts to locate previous installation of - ncurses, and will set the default prefix according to where it finds the - ncurses headers. - - Do not use commands such as - - make install prefix=XXX - - to change the prefix after configuration, since the prefix value is used - for some absolute pathnames such as TERMINFO. Instead do this - - make install DESTDIR=XXX - - See also the discussion of --with-install-prefix. - -2. Type `./configure' in the top-level directory of the distribution to - configure ncurses for your operating system and create the Makefiles. - Besides --prefix, various configuration options are available to customize - the installation; use `./configure --help' to list the available options. - - If your operating system is not supported, read the PORTABILITY section in - the file ncurses/README for information on how to create a configuration - file for your system. - - The `configure' script generates makefile rules for one or more object - models and their associated libraries: - - libncurses.a (normal) - - libcurses.a (normal, a link to libncurses.a) - This gets left out if you configure with --disable-overwrite. - - libncurses.so (shared) - - libncurses_g.a (debug) - - libncurses_p.a (profile) - - libncurses.la (libtool) - - If you configure using the --enable-widec option, a "w" is appended to the - library names (e.g., libncursesw.a), and the resulting libraries support - wide-characters, e.g., via a UTF-8 locale. The corresponding header files - are compatible with the non-wide-character configuration; wide-character - features are provided by ifdef's in the header files. The wide-character - library interfaces are not binary-compatible with the non-wide-character - version. Building and running the wide-character code relies on a fairly - recent implementation of libiconv. We have built this configuration on - various systems using libiconv, sometimes requiring libutf8. - - If you configure using the --with-pthread option, a "t" is appended to - the library names (e.g., libncursest.a, libncursestw.a). - - If you do not specify any models, the normal and debug libraries will be - configured. Typing `configure' with no arguments is equivalent to: - - ./configure --with-normal --with-debug --enable-overwrite - - Typing - - ./configure --with-shared - - makes the shared libraries the default, resulting in - - ./configure --with-shared --with-normal --with-debug --enable-overwrite - - If you want only shared libraries, type - - ./configure --with-shared --without-normal --without-debug - - Rules for generating shared libraries are highly dependent upon the choice - of host system and compiler. We've been testing shared libraries on - several systems, but more work needs to be done to make shared libraries - work on other systems. - - If you have libtool installed, you can type - - ./configure --with-libtool - - to generate the appropriate static and/or shared libraries for your - platform using libtool. - - You can make curses and terminfo fall back to an existing file of termcap - definitions by configuring with --enable-termcap. If you do this, the - library will search /etc/termcap before the terminfo database, and will - also interpret the contents of the TERM environment variable. See the - section BSD CONVERSION NOTES below. - -3. Type `make'. Ignore any warnings, no error messages should be produced. - This should compile the ncurses library, the terminfo compiler tic(1), - captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1) - programs (see the manual pages for explanation of what they do), some test - programs, and the panels, menus, and forms libraries. - -4. Run ncurses and several other test programs in the test directory to - verify that ncurses functions correctly before doing an install that - may overwrite system files. Read the file test/README for details on - the test programs. - - NOTE: You must have installed the terminfo database, or set the - environment variable $TERMINFO to point to a SVr4-compatible terminfo - database before running the test programs. Not all vendors' terminfo - databases are SVr4-compatible, but most seem to be. Exceptions include - DEC's Digital Unix (formerly known as OSF/1). - - If you run the test programs WITHOUT installing terminfo, ncurses may - read the termcap file and cache that in $HOME/.terminfo, which will - thereafter be used instead of the terminfo database. See the comments - on "--enable-getcap-cache", to see why this is a Bad Thing. - - It is possible to configure ncurses to use other terminfo database formats. - A few are provided as examples in the include-directory (see --with-caps). - - The ncurses program is designed specifically to test the ncurses library. - You can use it to verify that the screen highlights work correctly, that - cursor addressing and window scrolling works OK, etc. - -5. Once you've tested, you can type `make install' to install libraries, - the programs, the terminfo database and the manual pages. Alternately, you - can type `make install' in each directory you want to install. In the - top-level directory, you can do a partial install using these commands: - - 'make install.progs' installs tic, infocmp, etc... - 'make install.includes' installs the headers. - 'make install.libs' installs the libraries (and the headers). - 'make install.data' installs the terminfo data. (Note: `tic' must - be installed before the terminfo data can be - compiled). - 'make install.man' installs the manual pages. - - ############################################################################ - # CAVEAT EMPTOR: `install.data' run as root will NUKE any existing # - # terminfo database. If you have any custom or unusual entries SAVE them # - # before you install ncurses. I have a file called terminfo.custom for # - # this purpose. Don't forget to run tic on the file once you're done. # - ############################################################################ - - The terminfo(5) manual page must be preprocessed with tbl(1) before - being formatted by nroff(1). Modern man(1) implementations tend to do - this by default, but you may want to look at your version's manual page - to be sure. You may also install the manual pages after preprocessing - with tbl(1) by specifying the configure option --with-manpage-tbl. - - If the system already has a curses library that you need to keep using - you'll need to distinguish between it and ncurses. See the discussion of - --disable-overwrite. If ncurses is installed outside the standard - directories (/usr/include and /usr/lib) then all your users will need to - use the -I option to compile programs and -L to link them. - - If you have another curses installed in your system and you accidentally - compile using its curses.h you'll end up with a large number of - undefined symbols at link time. - - IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory - and run the `capconvert' script. This script will deduce various things - about your environment and use them to build you a private terminfo tree, - so you can use ncurses applications. - - If more than one user at your site does this, the space for the duplicate - trees is wasted. Try to get your site administrators to install a system- - wide terminfo tree instead. - - See the BSD CONVERSION NOTES section below for a few more details. - -6. The c++ directory has C++ classes that are built on top of ncurses and - panels. You must have c++ (and its libraries) installed before you can - compile and run the demo. - - Use --without-cxx-binding to tell configure to not build the C++ bindings - and demo. - - If you do not have C++, you must use the --without-cxx option to tell - the configure script to not attempt to determine the type of 'bool' - which may be supported by C++. IF YOU USE THIS OPTION, BE ADVISED THAT - YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++. - - -SUMMARY OF CONFIGURE OPTIONS: ----------------------------- - - The configure script provides a short list of its options when you type - - ./configure --help - - The --help and several options are common to all configure scripts that are - generated with autoconf. Those are all listed before the line - - --enable and --with options recognized: - - The other options are specific to this package. We list them in alphabetic - order. - - --disable-assumed-color - With ncurses 5.1, we introduced a new function, assume_default_colors() - which allows applications to specify what the default foreground and - background color are assumed to be. Most color applications use - full-screen color; but a few do not color the background. While the - assumed values can be overridden by invoking assume_default_colors(), - you may find it useful to set the assumed values to the pre-5.1 - convention, using this configure option. - - --disable-big-core - Assume machine has little memory. The configure script attempts to - determine if your machine has enough memory (about 6Mb) to compile the - terminfo database without writing portions to disk. Some allocators - return deceptive results, so you may have to override the configure - script. Or you may be building tic for a smaller machine. - - --disable-big-strings - Disable compile-time optimization of predefined tables which puts - all of their strings into a very long string, to reduce relocation - overhead. - - --disable-database - Use only built-in data. The ncurses libraries normally read terminfo - and termcap data from disk. You can configure ncurses to have a - built-in database, aka "fallback" entries. Embedded applications may - have no need for an external database. Some, but not all of the - programs are useful in this configuration, e.g., reset and tput versus - infocmp and tic. - - --disable-ext-funcs - Disable function-extensions. Configure ncurses without the functions - that are not specified by XSI. See ncurses/modules for the exact - list of library modules that would be suppressed. - - --disable-hashmap - Compile without hashmap scrolling-optimization code. This algorithm is - the default. - - --disable-home-terminfo - The $HOME/.terminfo directory is normally added to ncurses' search - list for reading/writing terminfo entries, since that directory is - more likely writable than the system terminfo database. Use this - option to disable the feature altogether. - - --disable-largefile - Disable compiler flags needed to use large-file interfaces. - - --disable-libtool-version - when using --with-libtool, control how the major/minor version numbers - are used for constructing the library name. - - The default uses the -version-number feature of libtool, which makes - the library names compatible (though not identical) with the standard - build using --with-shared. - - Use --disable-libtool-version to use the libtool -version-info feature. - This corresponds to the setting used before patch 20100515. - - --disable-leaks - For testing, compile-in code that frees memory that normally would not - be freed, to simplify analysis of memory-leaks. - - Any implementation of curses must not free the memory associated with - a screen, since (even after calling endwin()), it must be available - for use in the next call to refresh(). There are also chunks of - memory held for performance reasons. That makes it hard to analyze - curses applications for memory leaks. To work around this, build - a debugging version of the ncurses library which frees those chunks - which it can, and provides the _nc_free_and_exit() function to free - the remainder on exit. The ncurses utility and test programs use this - feature, e.g., via the ExitProgram() macro. - - --disable-lp64 - The header files will ignore use of the _LP64 symbol to make chtype - and mmask_t types 32 bits (they may be long on 64-bit hosts, for - compatibility with older releases). - - NOTE: this is potentially an ABI change, depending on existing - packages. The default for this option is "disabled" for ncurses - ABI 5, and "enabled" for ABI 6. - - --disable-macros - For testing, use functions rather than macros. The program will run - more slowly, but it is simpler to debug. This defines NCURSES_NOMACROS - at build time. See also the --enable-expanded option. - - --disable-overwrite - If you are installing ncurses on a system which contains another - development version of curses, or which could be confused by the loader - for another version, we recommend that you leave out the link to - -lcurses. The ncurses library is always available as -lncurses. - Disabling overwrite also causes the ncurses header files to be - installed into a subdirectory, e.g., /usr/local/include/ncurses, - rather than the include directory. This makes it simpler to avoid - compile-time conflicts with other versions of curses.h - - --disable-relink - If --enable-rpath is given, the generated makefiles normally will - rebuild the libraries during install. Use this option to simply - copy whatever the linked produced. - - This option is ignored if --enable-rpath is not given. - - --disable-root-environ - Compile with environment restriction, so certain environment variables - are not available when running as root, or via a setuid/setgid - application. These are (for example $TERMINFO) those that allow the - search path for the terminfo or termcap entry to be customized. - - --disable-rpath-hack - Normally the configure script helps link libraries found in unusual - places by adding an rpath option to the link command. If you are - building packages, this feature may be redundant. Use this option - to suppress the feature. - - --disable-scroll-hints - Compile without scroll-hints code. This option is ignored when - hashmap scrolling is configured, which is the default. - - --disable-tic-depends - When building shared libraries, normally the tic library is linked to - depend upon the ncurses library (and in turn, on the term-library if - the --with-termlib option was given). The tic- and term-libraries - ABI does not depend on the --enable-widec option. Some packagers have - used this to reduce the number of library files which are packaged - by using only one copy of those libraries. To make this work properly, - the tic library must be built without an explicit dependency on the - ncurses (or ncursesw) library. Use this configure option to do that. - For example - configure --with-ticlib --with-shared --disable-tic-depends - - --disable-tparm-varargs - Portable programs should call tparm() using the fixed-length parameter - list documented in X/Open. ncurses provides varargs support for this - function. Use --disable-tparm-varargs to disable this support. - - --enable-assertions - For testing, compile-in assertion code. This is used only for a few - places where ncurses cannot easily recover by returning an error code. - - --enable-broken_linker - A few platforms have what we consider a broken linker: it cannot link - objects from an archive solely by referring to data objects in those - files, but requires a function reference. This configure option - changes several data references to functions to work around this - problem. - - NOTE: With ncurses 5.1, this may not be necessary, since we are - told that some linkers interpret uninitialized global data as a - different type of reference which behaves as described above. We have - explicitly initialized all of the global data to work around the - problem. - - --enable-bsdpad - Recognize BSD-style prefix padding. Some ancient BSD programs (such as - nethack) call tputs("50") to implement delays. - - --enable-colorfgbg - Compile with experimental $COLORFGBG code. That environment variable - is set by some terminal emulators as a hint to applications, by - advertising the default foreground and background colors. During - initialization, ncurses sets color pair 0 to match this. - - --enable-const - The curses interface as documented in XSI is rather old, in fact - including features that precede ANSI C. The prototypes generally do - not make effective use of "const". When using stricter compilers (or - gcc with appropriate warnings), you may see warnings about the mismatch - between const and non-const data. We provide a configure option which - changes the interfaces to use const - quieting these warnings and - reflecting the actual use of the parameters more closely. The ncurses - library uses the symbol NCURSES_CONST for these instances of const, - and if you have asked for compiler warnings, will add gcc's const-qual - warning. There will still be warnings due to subtle inconsistencies - in the interface, but at a lower level. - - NOTE: configuring ncurses with this option may detract from the - portability of your applications by encouraging you to use const in - places where the XSI curses interface would not allow them. Similar - issues arise when porting to SVr4 curses, which uses const in even - fewer places. - - --enable-echo - Use the option --disable-echo to make the build-log less verbose by - suppressing the display of the compile and link commands. This makes - it easier to see the compiler warnings. (You can always use "make -n" - to see the options that are used). - - --enable-expanded - For testing, generate functions for certain macros to make them visible - as such to the debugger. See also the --disable-macros option. - - --enable-ext-colors - Extend the cchar_t structure to allow more than 16 colors to be - encoded. This applies only to the wide-character (--enable-widec) - configuration. - - NOTE: using this option will make libraries which are not binary- - compatible with libncursesw 5.4. None of the interfaces change, but - applications which have an array of cchar_t's must be recompiled. - - --enable-ext-mouse - Modify the encoding of mouse state to make room for a 5th mouse button. - That allows one to use ncurses with a wheel mouse with xterm or - similar X terminal emulators. - - NOTE: using this option will make libraries which are not binary- - compatible with libncursesw 5.4. None of the interfaces change, but - applications which have mouse mask mmask_t's must be recompiled. - - --enable-getcap - Use the 4.4BSD getcap code if available, or a bundled version of it to - fetch termcap entries. Entries read in this way cannot use (make - cross-references to) the terminfo tree, but it is faster than reading - /etc/termcap. - - If configured for one of the *BSD systems, this automatically uses - the hashed database system produced using cap_mkdb or similar tools. - In that case, there is no advantage in using the --enable-getcap-cache - option. - - See also the --with-hashed-db option. - - --enable-getcap-cache - Cache translated termcaps under the directory $HOME/.terminfo - - NOTE: this sounds good - it makes ncurses run faster the second time. - But look where the data comes from - an /etc/termcap containing lots of - entries that are not up to date. If you configure with this option and - forget to install the terminfo database before running an ncurses - application, you will end up with a hidden terminfo database that - generally does not support color and will miss some function keys. - - --enable-hard-tabs - Compile-in cursor-optimization code that uses hard-tabs. We would make - this a standard feature except for the concern that the terminfo entry - may not be accurate, or that your stty settings have disabled the use - of tabs. - - --enable-interop - Compile-in experimental interop bindings. These provide generic types - for the form-library. - - --enable-mixed-case - Controls whether the filesystem on which the terminfo database resides - supports mixed-case filenames (normal for UNIX, but not on other - systems). If you do not specify this option, the configure script - checks the current filesystem. - - --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 - terminfo entries. This is the default, unless you have disabled the - extended functions. - - --enable-pc-files - If pkg-config is found (see --with-pkg-config), generate ".pc" files - for each of the libraries, and install them in pkg-config's library - directory. - - --enable-pthreads-eintr - add logic in threaded configuration to ensure that a read(2) system - call can be interrupted for SIGWINCH. - - --enable-reentrant - Compile experimental configuration which improves reentrant use of the - library by reducing global and static variables. This option is also - set if --with-pthread is used. - - --enable-rpath - 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). - - More recently it is useful for systems that require special treatment - shared libraries in "unusual" locations. The "system" libraries reside - in directories which are on the loader's default search-path. While - you may be able to use workarounds such as the $LD_LIBRARY_PATH - environment variable, they do not work with setuid applications since - the LD_LIBRARY_PATH variable would be unset in that situation. - - This option does not apply to --with-libtool, since libtool makes - extra assumptions about rpath. - - --enable-safe-sprintf - Compile with experimental safe-sprintf code. You may consider using - this if you are building ncurses for a system that has neither - vsnprintf() or vsprintf(). It is slow, however. - - --enable-sigwinch - Compile support for ncurses' SIGWINCH handler. If your application has - its own SIGWINCH handler, ncurses will not use its own. The ncurses - handler causes wgetch() to return KEY_RESIZE when the screen-size - changes. This option is the default, unless you have disabled the - extended functions. - - --enable-signed-char - The term.h header declares a Booleans[] array typed "char". But it - stores signed values there and "char" is not necessarily signed. - Some packagers choose to alter the type of Booleans[] though this - is not strictly compatible. This option allows one to implement this - alteration without patching the source code. - - --enable-sp-funcs - Compile-in support for extended functions which accept a SCREEN pointer, - reducing the need for juggling the global SP value with set_term() and - delscreen(). - - --enable-symlinks - If your system supports symbolic links, make tic use symbolic links - rather than hard links to save diskspace when writing aliases in the - terminfo database. - - --enable-tcap-names - Compile-in support for user-definable terminal capabilities. Use the - -x option of tic and infocmp to treat unrecognized terminal - capabilities as user-defined strings. This option is the default, - 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-termcap - Compile in support for reading terminal descriptions from termcap if no - match is found in the terminfo database. See also the --enable-getcap - and --enable-getcap-cache options. - - --enable-warnings - Turn on GCC compiler warnings. There should be only a few. - - --enable-weak-symbols - If the --with-pthread option is set, check if the compiler supports - weak-symbols. If it does, then name the thread-capable library without - the "t" (libncurses rather than libncursest), and provide for - dynamically loading the pthreads entrypoints at runtime. This allows - one to reduce the number of library files for ncurses. - - --enable-wgetch-events - Compile with experimental wgetch-events code. See ncurses/README.IZ - - --enable-widec - Compile with wide-character code. This makes a different version of - the libraries (e.g., libncursesw.so), which stores characters as - wide-characters, - - NOTE: applications compiled with this configuration are not compatible - with those built for 8-bit characters. You cannot simply make a - symbolic link to equate libncurses.so with libncursesw.so - - NOTE: the Ada95 binding may be built against either version of the the - ncurses library, but you must decide which: the binding installs the - same set of files for either version. Currently (2002/6/22) it does - not use the extended features from the wide-character code, so it is - probably better to not install the binding for that configuration. - - --enable-xmc-glitch - Compile-in support experimental xmc (magic cookie) code. - - --with-abi-version=NUM - Override the ABI version, which is used in shared library filenames. - Normally this is the same as the release version; some ports have - special requirements for compatibility. - - This option does not affect linking with libtool, which uses the - release major/minor numbers. - - --with-ada-compiler=CMD - Specify the Ada95 compiler command (default "gnatmake") - - --with-ada-include=DIR - Tell where to install the Ada includes (default: - PREFIX/lib/ada/adainclude) - - --with-ada-objects=DIR - Tell where to install the Ada objects (default: PREFIX/lib/ada/adalib) - - --with-ada-sharedlib - Build a shared library for Ada95 binding, if the compiler permits. - - NOTE: You must also set the --with-shared option on some platforms - for a successful build. You need not use this option when you set - --with-shared, unless you want to use the Ada shared library. - - --with-bool=TYPE - If --without-cxx is specified, override the type used for the "bool" - declared in curses.h (normally the type is automatically chosen to - correspond with that in , or defaults to platform-specific - sizes). - - --with-build-cpp=XXX - This option is provided by the same macro used for $BUILD_CC, etc., - but is not directly used by ncurses. - - --with-build-cc=XXX - If cross-compiling, specify a host C compiler, which is needed to - compile a few utilities which generate source modules for ncurses. - If you do not give this option, the configure script checks if the - $BUILD_CC variable is set, and otherwise defaults to gcc or cc. - - --with-build-cflags=XXX - If cross-compiling, specify the host C compiler-flags. You might need - to do this if the target compiler has unusual flags which confuse the - host compiler. - - You can also set the environment variable $BUILD_CFLAGS rather than - use this option. - - --with-build-cppflags=XXX - If cross-compiling, specify the host C preprocessor-flags. You might - need to do this if the target compiler has unusual flags which confuse - the host compiler. - - You can also set the environment variable $BUILD_CPPFLAGS rather than - use this option. - - --with-build-ldflags=XXX - If cross-compiling, specify the host linker-flags. You might need to - do this if the target linker has unusual flags which confuse the host - compiler. - - You can also set the environment variable $BUILD_LDFLAGS rather than - use this option. - - --with-build-libs=XXX - If cross-compiling, the host libraries. You might need to do this if - the target environment requires unusual libraries. - - You can also set the environment variable $BUILD_LIBS rather than - use this option. - - --with-caps=XXX - Specify an alternate terminfo capabilities file, which makes the - configure script look for "include/Caps.XXX". A few systems, e.g., - AIX 4.x use the same overall file-format as ncurses for terminfo - data, but use different alignments within the tables to support - legacy applications. For those systems, you can configure ncurses - to use a terminfo database which is compatible with the native - applications. - - --with-ccharw-max=XXX - Override the size of the wide-character array in cchar_t structures. - Changing this will alter the binary interface. This defaults to 5. - - --with-chtype=TYPE - Override type of chtype, which stores the video attributes and (if - --enable-widec is not given) a character. Prior to ncurses 5.5, this - was always unsigned long, but with ncurses 5.5, it may be unsigned. - Use this option if you need to preserve compatibility with 64-bit - executables, e.g., by setting "--with-chtype=long" (the configure - script supplies "unsigned"). - - --with-database=XXX - Specify the terminfo source file to install. Usually you will wish - to install ncurses' default (misc/terminfo.src). Certain systems - have special requirements, e.g, OS/2 EMX has a customized terminfo - source file. - - --with-dbmalloc - For testing, compile and link with Conor Cahill's dbmalloc library. - This also sets the --disable-leaks option. - - --with-debug - Generate debug-libraries (default). These are named by adding "_g" - to the root, e.g., libncurses_g.a - - --with-default-terminfo-dir=XXX - Specify the default terminfo database directory. This is normally - DATADIR/terminfo, e.g., /usr/share/terminfo. - - --with-dmalloc - For testing, compile and link with Gray Watson's dmalloc library. - This also sets the --disable-leaks option. - - --with-fallbacks=XXX - Specify a list of fallback terminal descriptions which will be - compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES. - - --with-gpm - use Alessandro Rubini's GPM library to provide mouse support on the - Linux console. Prior to ncurses 5.5, this introduced a dependency on - the GPM library. - - Currently ncurses uses the dlsym() function to bind to the library at - runtime, so it is only necessary that the library be present when - ncurses is built, to obtain the filename (or soname) used in the - corresponding dlopen() call. If you give a value for this option, - e.g., - - --with-gpm=$HOME/tmp/test-gpm.so - - that overrides the configure check for the soname. - - See also --without-dlsym - - --with-hashed-db[=XXX] - Use a hashed database for storing terminfo data rather than storing - each compiled entry in a separate binary file within a directory - tree. - - In particular, this uses the Berkeley database 1.8.5 interface, as - provided by that and its successors db 2, 3, and 4. The actual - interface is slightly different in the successor versions of the - Berkeley database. The database should have been configured using - "--enable-compat185". - - If you use this option for configuring ncurses, tic will only be able - to write entries in the hashed database. infocmp can still read - entries from a directory tree as well as reading entries from the - hashed database. To do this, infocmp determines whether the $TERMINFO - variable points to a directory or a file, and reads the directory-tree - or hashed database respectively. - - You cannot have a directory containing both hashed-database and - filesystem-based terminfo entries. - - Use the parameter value to give the install-prefix used for the - datbase, e.g., - --with-hashed-db=/usr/local/BigBase - to find the corresponding include- and lib-directories under the - given directory. - - See also the --enable-getcap option. - - --with-install-prefix=XXX - Allows you to specify an alternate location for installing ncurses - after building it. The value you specify is prepended to the "real" - install location. This simplifies making binary packages. The - makefile variable DESTDIR is set by this option. It is also possible - to use - make install DESTDIR=XXX - since the makefiles pass that variable to subordinate makes. - - NOTE: a few systems build shared libraries with fixed pathnames; this - option probably will not work for those configurations. - - --with-libtool[=XXX] - Generate libraries with libtool. If this option is selected, then it - overrides all other library model specifications. Note that libtool - must already be installed, uses makefile rules dependent on GNU make, - and does not promise to follow the version numbering convention of - other shared libraries on your system. However, if the --with-shared - option does not succeed, you may get better results with this option. - - If a parameter value is given, it must be the full pathname of the - particular version of libtool, e.g., - /usr/bin/libtool-1.2.3 - - It is possible to rebuild the configure script to use the automake - macros for libtool, e.g., AC_PROG_LIBTOOL. See the comments in - aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure - using the appropriate patch for autoconf from - http://invisible-island.net/autoconf/ - - --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. - - --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 - 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. - The option value specifies the name of a file that lists the renamed - 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. - - --with-manpage-tbl - Tell the configure script that you with to preprocess the manpages - by running them through tbl to generate tables understandable by - nroff. - - --with-mmask-t=TYPE - Override type of mmask_t, which stores the mouse mask. Prior to - ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it - may be unsigned. Use this option if you need to preserve compatibility - with 64-bit executables. - - --with-normal - Generate normal (i.e., static) libraries (default). - - Note: on Linux, the configure script will attempt to use the GPM - library via the dlsym() function call. Use --without-dlsym to disable - this feature, or --without-gpm, depending on whether you wish to use - GPM. - - --with-ospeed=TYPE - Override type of ospeed variable, which is part of the termcap - compatibility interface. In termcap, this is a 'short', which works - for a wide range of baudrates because ospeed is not the actual speed - but the encoded value, e.g., B9600 would be a small number such as 13. - However the encoding scheme originally allowed for values "only" up to - 38400bd. A newer set of definitions past 38400bd is not encoded as - compactly, and is not guaranteed to fit into a short (see the function - cfgetospeed(), which returns a speed_t for this reason). In practice, - applications that required knowledge of the ospeed variable, i.e., - those using termcap, do not use the higher speeds. Your application - (or system, in general) may or may not. - - --with-pkg-config=[DIR] - Check for pkg-config, optionally specifying its path. - - --with-profile - Generate profile-libraries These are named by adding "_p" to the root, - e.g., libncurses_p.a - - --with-pthread - Link with POSIX threads, set --enable-reentrant. The use_window() and - use_screen() functions will use mutex's, allowing rudimentary support - for multithreaded applications. - - --with-rcs-ids - Compile-in RCS identifiers. Most of the C files have an identifier. - - --with-rel-version=NUM - Override the release version, which may be used in shared library - filenames. This consists of a major and minor version number separated - by ".". Normally the major version number is the same as the ABI - version; some ports have special requirements for compatibility. - - --with-shared - Generate shared-libraries. The names given depend on the system for - which you are building, typically using a ".so" suffix, along with - symbolic links that refer to the release version. - - NOTE: Unless you override the configure script by setting the $CFLAGS - environment variable, these will not be built with the -g debugging - option. - - NOTE: For some configurations, e.g., installing a new version of - ncurses shared libraries on a machine which already has ncurses - shared libraries, you may encounter problems with the linker. - For example, it may prevent you from running the build tree's - copy of tic (for installing the terminfo database) because it - loads the system's copy of the ncurses shared libraries. In that - case, using the misc/shlib script may be helpful, since it sets - $LD_LIBRARY_PATH to point to the build tree, e.g., - ./misc/shlib make install - - NOTE: If you use the --with-ada-sharedlib option, you should also - set this option, to ensure that C-language modules needed for the - Ada binding use appropriate compiler options. - - --with-shlib-version=XXX - Specify whether to use the release or ABI version for shared libraries. - This is normally chosen automatically based on the type of system - which you are building on. We use it for testing the configure script. - - --with-sysmouse - use FreeBSD sysmouse interface provide mouse support on the console. - - --with-system-type=XXX - For testing, override the derived host system-type which is used to - decide things such as the linker commands used to build shared - libraries. This is normally chosen automatically based on the type of - system which you are building on. We use it for testing the configure - script. - - --with-terminfo-dirs=XXX - Specify a search-list of terminfo directories which will be compiled - into the ncurses library (default: DATADIR/terminfo) - - --with-termlib[=XXX] - When building the ncurses library, organize this as two parts: the - curses library (libncurses) and the low-level terminfo library - (libtinfo). This is done to accommodate applications that use only - the latter. The terminfo library is about half the size of the total. - - If an option value is given, that overrides the name of the terminfo - library. For instance, if the wide-character version is built, the - terminfo library would be named libtinfow. But the libtinfow interface - is upward compatible from libtinfo, so it would be possible to overlay - libtinfo.so with a "wide" version of libtinfow.so by renaming it with - this option. - - --with-termpath=XXX - Specify a search-list of termcap files which will be compiled into the - ncurses library (default: /etc/termcap:/usr/share/misc/termcap) - - --with-ticlib[=XXX] - When building the ncurses library, build a separate library for - the modules that are used only by the utility programs. Normally - those would be bundled with the termlib or ncurses libraries. - - If an option value is given, that overrides the name of the tic - library. As in termlib, there is no ABI difference between the - "wide" libticw.so and libtic.so - - NOTE: Overriding the name of the tic library may be useful if you are - also using the --with-termlib option to rename libtinfo. If you are - not doing that, renaming the tic library can result in conflicting - library dependencies for tic and other programs built with the tic - library. - - --with-trace - Configure the trace() function as part of the all models of the ncurses - library. Normally it is part of the debug (libncurses_g) library only. - - --with-valgrind - For testing, compile with debug option. - This also sets the --disable-leaks option. - - --with-wrap-prefix=XXX - When using the --enable-reentrant option, ncurses redefines variables - that would be global in curses, e.g., LINES, as a macro that calls a - "wrapping" function which fetches the data from the current SCREEN - structure. Normally that function is named by prepending "_nc_" to the - variable's name. The function is technically private (since portable - applications would not refer directly to it). But according to one - line of reasoning, it is not the same type of "private" as functions - which applications should not call even via a macro. This configure - option lets you choose the prefix for these wrapped variables. - - --without-ada - Suppress the configure script's check for Ada95, do not build the - Ada95 binding and related demo. - - --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 - accordingly. - - --without-cxx - XSI curses declares "bool" as part of the interface. C++ also declares - "bool". Neither specifies the size and type of booleans, but both - insist on the same name. We chose to accommodate this by making the - configure script check for the size and type (e.g., unsigned or signed) - that your C++ compiler uses for booleans. If you do not wish to use - ncurses with C++, use this option to tell the configure script to not - adjust ncurses bool to match C++. - - --without-cxx-binding - Suppress the configure script's check for C++, do not build the - C++ binding and related demo. - - --without-develop - Disable development options. This does not include those that change - the interface, such as --enable-widec. - - --without-dlsym - Do not use dlsym() to load GPM dynamically. - - --without-manpages - Tell the configure script to suppress the install of ncurses' manpages. - - --without-progs - Tell the configure script to suppress the build of ncurses' application - programs (e.g., tic). The test applications will still be built if you - type "make", though not if you simply do "make install". - - --without-tests - Tell the configure script to suppress the build of ncurses' test - programs. - - --without-xterm-new - Tell the configure script to use "xterm-old" for the entry used in - the terminfo database. This will work with variations such as - X11R5 and X11R6 xterm. - - -COMPATIBILITY WITH OLDER VERSIONS OF NCURSES: --------------------------------------------- - - Because ncurses implements the X/Open Curses Specification, its interface - is fairly stable. That does not mean the interface does not change. - Changes are made to the documented interfaces when we find differences - between ncurses and X/Open or implementations which they certify (such as - Solaris). We add extensions to those interfaces to solve problems not - addressed by the original curses design, but those must not conflict with - the X/Open documentation. - - Here are some of the major interface changes, and related problems which - you may encounter when building a system with different versions of - ncurses: - - 5.8 (Feb 26, 2011) - Interface changes: - - + add an alternate library configuration, i.e., "terminal driver" to - support port to Windows, built with MinGW. There are two drivers - (terminfo and Windows console). The terminfo driver works on other - platforms. - - + add a new set of functions which accept a SCREEN* parameter, in - contrast with the original set which use the global value "sp". - By default, these names end with "_sp", and are otherwise - functionally identical with the originals. - - In addition to the "_sp" functions, there are a few new functions - associated with this feature: ceiling_panel, ground_panel, - new_prescr. - - If the library is not built with the sp-funcs extension, there - are no related interface changes. - - + add tiparm function based on review of X/Open Curses Issue 7. - - + change internal _nc_has_mouse function to public has_mouse function - - Added extensions: - - + add a few more functions to support the NCURSES_OPAQUE feature: - get_escdelay, is_pad, is_subwin - - Added internal functions (other than "_sp" variants): - _nc_curscr_of - _nc_format_slks - _nc_get_alias_table - _nc_get_hash_info - _nc_insert_wch - _nc_newscr_of - _nc_outc_wrapper - _nc_retrace_char - _nc_retrace_int_attr_t - _nc_retrace_mmask_t - _nc_setup_tinfo - _nc_stdscr_of - _nc_tinfo_cmdch - - Removed internal functions: - _nc_makenew (some configurations replace by _nc_makenew_sp) - - Modified internal functions: - _nc_UpdateAttrs - _nc_get_hash_table - _nc_has_mouse - _nc_insert_ch - _nc_wgetch - - 5.7 (November 2, 2008) - Interface changes: - - + generate linkable stubs for some macros: - getattrs - - + Add new library configuration for tic-library (the non-curses portion - of the ncurses library used for the tic program as well as some - others such as tack. There is no API change, but makefiles would be - changed to use the tic-library built separately. - - tack, distributed separately from ncurses, uses some of the internal - _nc_XXX functions, which are declared in the tic.h header file. - - The reason for providing this separate library is that none of the - functions in it are suitable for threaded applications. - - + Add new library configuration (ncursest, ncurseswt) which provides - rudimentary support for POSIX threads. This introduces opaque - access functions to the WINDOW structure and adds a parameter to - several internal functions. - - + move most internal variables (except tic-library) into data blocks - _nc_globals and _nc_prescreen to simplify analysis. Those were - globally accessible, but since they were not part of the documented - API, there is no ABI change. - - + changed static tables of strings to be indices into long strings, to - improve startup performance. This changes parameter lists for some - of the internal functions. - - Added extensions: - - + add NCURSES_OPAQUE definition in curses.h to control whether internal - details of the WINDOW structure are visible to an application. This - is always defined when the threaded library is built, and is optional - otherwise. New functions for this: is_cleared, is_idcok, is_idlok, - is_immedok, is_keypad, is_leaveok, is_nodelay, is_notimeout, - is_scrollok, is_syncok, wgetparent and wgetscrreg. - - + the threaded library (ncursest) also disallows direct updating of - global curses-level variables, providing functions (via macros) for - obtaining their value. A few of those variables can be modified by - the application, using new functions: set_escdelay, set_tabsize - - + added functions use_window() and use_screen() which wrap a mutex - (if threading is configured) around a call to a user-supplied - function. - - Added internal functions: - _nc_get_alias_table - _nc_get_screensize - _nc_keyname - _nc_screen_of - _nc_set_no_padding - _nc_tracechar - _nc_tracemouse - _nc_unctrl - _nc_ungetch - - These are used for leak-testing, and are stubs for - ABI compatibility when ncurses is not configured for that - using the --disable-leaks configure script option: - - _nc_free_and_exit - _nc_leaks_tinfo - - Removed internal functions: - none - - Modified internal functions: - _nc_fifo_dump - _nc_find_entry - _nc_handle_sigwinch - _nc_init_keytry - _nc_keypad - _nc_locale_breaks_acs - _nc_timed_wait - _nc_update_screensize - - Use new typedef TRIES to replace "struct tries": - - _nc_add_to_try - _nc_expand_try - _nc_remove_key - _nc_remove_string - _nc_trace_tries - - 5.6 (December 17, 2006) - Interface changes: - - + generate linkable stubs for some macros: - - getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx, - getpary, getpary, - - and (for libncursesw) - - wgetbkgrnd - - Added extensions: - nofilter() - use_legacy_coding() - - Added internal functions: - _nc_first_db - _nc_get_source - _nc_handle_sigwinch - _nc_is_abs_path - _nc_is_dir_path - _nc_is_file_path - _nc_keep_tic_dir - _nc_keep_tic_dir - _nc_last_db - _nc_next_db - _nc_read_termtype - _nc_tic_dir - - Also (if using the hashed database configuration): - - _nc_db_close - _nc_db_first - _nc_db_get - _nc_db_have_data - _nc_db_have_index - _nc_db_next - _nc_db_open - _nc_db_put - - otherwise - - _nc_hashed_db - - Removed internal functions: - none - - Modified internal functions: - _nc_add_to_try - _nc_do_color - _nc_expand_try - _nc_remove_key - _nc_setupscreen - - 5.5 (October 10, 2005) - Interface changes: - - + terminfo installs "xterm-new" as "xterm" entry rather than - "xterm-old" (aka xterm-r6). - - + terminfo data is installed using the tic -x option (few systems - still use ncurses 4.2). - - + modify C++ binding to work with newer C++ compilers by providing - initializers and using modern casts. Old-style header names are - still used in this release to allow compiling with not-so-old - compilers. - - + form and menu libraries now work with wide-character data. - Applications which bypassed the form library and manipulated the - FIELD.buf data directly will not work properly with libformw, since - that no longer points to an array of char. The set_field_buffer() - and field_buffer() functions translate to/from the actual field - data. - - + change SP->_current_attr to a pointer, adjust ifdef's to ensure that - libtinfo.so and libtinfow.so have the same ABI. The reason for this - is that the corresponding data which belongs to the upper-level - ncurses library has a different size in each model. - - + winnstr() now returns multibyte character strings for the - wide-character configuration. - - + assume_default_colors() no longer requires that use_default_colors() - be called first. - - + data_ahead() now works with wide-characters. - - + slk_set() and slk_wset() now accept and store multibyte or - multicolumn characters. - - + start_color() now returns OK if colors have already been started. - start_color() also returns ERR if it cannot allocate memory. - - + pair_content() now returns -1 for consistency with init_pair() if it - corresponds to the default-color. - - + unctrl() now returns null if its parameter does not correspond - to an unsigned char. - - Added extensions: - Experimental mouse version 2 supports wheel mice with buttons - 4 and 5. This requires ABI 6 because it modifies the encoding - of mouse events. - - Experimental extended colors allows encoding of 256 foreground - and background colors, e.g., with the xterm-256color or - xterm-88color terminfo entries. This requires ABI 6 because - it changes the size of cchar_t. - - Added internal functions: - _nc_check_termtype2 - _nc_resolve_uses2 - _nc_retrace_cptr - _nc_retrace_cvoid_ptr - _nc_retrace_void_ptr - _nc_setup_term - - Removed internal functions: - none - - Modified internal functions: - _nc_insert_ch - _nc_save_str - _nc_trans_string - - 5.4 (February 8, 2004) - Interface changes: - - + add the remaining functions for X/Open curses wide-character support. - These are only available if the library is configured using the - --enable-widec option. - pecho_wchar() - slk_wset() - - + write getyx() and related 2-return macros in terms of getcury(), - getcurx(), etc. - - + simplify ifdef for bool declaration in curses.h - - + modify ifdef's in curses.h that disabled use of __attribute__() for - g++, since recent versions implement the cases which ncurses uses. - - + change some interfaces to use const: - define_key() - mvprintw() - mvwprintw() - printw() - vw_printw() - winsnstr() - wprintw() - - Added extensions: - key_defined() - - Added internal functions: - _nc_get_locale() - _nc_insert_ch() - _nc_is_charable() wide - _nc_locale_breaks_acs() - _nc_pathlast() - _nc_to_char() wide - _nc_to_widechar() wide - _nc_tparm_analyze() - _nc_trace_bufcat() debug - _nc_unicode_locale() - - Removed internal functions: - _nc_outstr() - _nc_sigaction() - - Modified internal functions: - _nc_remove_string() - _nc_retrace_chtype() - - 5.3 (October 12, 2002) - Interface changes: - - + change type for bool used in headers to NCURSES_BOOL, which usually - is the same as the compiler's definition for 'bool'. - - + add all but two functions for X/Open curses wide-character support. - These are only available if the library is configured using the - --enable-widec option. Missing functions are - pecho_wchar() - slk_wset() - - + add environment variable $NCURSES_ASSUMED_COLORS to modify the - assume_default_colors() extension. - - Added extensions: - is_term_resized() - resize_term() - - Added internal functions: - _nc_altcharset_name() debug - _nc_reset_colors() - _nc_retrace_bool() debug - _nc_retrace_unsigned() debug - _nc_rootname() - _nc_trace_ttymode() debug - _nc_varargs() debug - _nc_visbufn() debug - _nc_wgetch() - - Removed internal functions: - _nc_background() - - Modified internal functions: - _nc_freeall() debug - - 5.2 (October 21, 2000) - Interface changes: - - + revert termcap ospeed variable to 'short' (see discussion of the - --with-ospeed configure option). - - 5.1 (July 8, 2000) - Interface changes: - - + made the extended terminal capabilities - (configure --enable-tcap-names) a standard feature. This should - be transparent to applications that do not require it. - - + removed the trace() function and related trace support from the - production library. - - + modified curses.h.in, undef'ing some symbols to avoid conflict - with C++ STL. - - Added extensions: assume_default_colors(). - - 5.0 (October 23, 1999) - Interface changes: - - + implemented the wcolor_set() and slk_color() functions. - - + move macro winch to a function, to hide details of struct ldat - - + corrected prototypes for slk_* functions, using chtype rather than - attr_t. - - + the slk_attr_{set,off,on} functions need an additional void* - parameter according to XSI. - - + modified several prototypes to correspond with 1997 version of X/Open - Curses: [w]attr_get(), [w]attr_set(), border_set() have different - parameters. Some functions were renamed or misspelled: - erase_wchar(), in_wchntr(), mvin_wchntr(). Some developers have used - attr_get(). - - Added extensions: keybound(), curses_version(). - - Terminfo database changes: - - + change translation for termcap 'rs' to terminfo 'rs2', which is - the documented equivalent, rather than 'rs1'. - - The problems are subtler in recent releases. - - a) This release provides users with the ability to define their own - terminal capability extensions, like termcap. To accomplish this, - we redesigned the TERMTYPE struct (in term.h). Very few - applications use this struct. They must be recompiled to work with - the 5.0 library. - - a) If you use the extended terminfo names (i.e., you used configure - --enable-tcap-names), the resulting terminfo database can have some - entries which are not readable by older versions of ncurses. This - is a bug in the older versions: - - + the terminfo database stores booleans, numbers and strings in - arrays. The capabilities that are listed in the arrays are - specified by X/Open. ncurses recognizes a number of obsolete and - extended names which are stored past the end of the specified - entries. - - + a change to read_entry.c in 951001 made the library do an lseek() - call incorrectly skipping data which is already read from the - string array. This happens when the number of strings in the - terminfo data file is greater than STRCOUNT, the number of - specified and obsolete or extended strings. - - + as part of alignment with the X/Open final specification, in the - 990109 patch we added two new terminfo capabilities: - set_a_attributes and set_pglen_inch). This makes the indices for - the obsolete and extended capabilities shift up by 2. - - + the last two capabilities in the obsolete/extended list are memu - and meml, which are found in most terminfo descriptions for xterm. - - When trying to read this terminfo entry, the spurious lseek() - causes the library to attempt to read the final portion of the - terminfo data (the text of the string capabilities) 4 characters - past its starting point, and reads 4 characters too few. The - library rejects the data, and applications are unable to - initialize that terminal type. - - FIX: remove memu and meml from the xterm description. They are - obsolete, not used by ncurses. (It appears that the feature was - added to xterm to make it more like hpterm). - - This is not a problem if you do not use the -x option of tic to - create a terminfo database with extended names. Note that the - user-defined terminal capabilities are not affected by this bug, - since they are stored in a table after the older terminfo data ends, - and are invisible to the older libraries. - - c) Some developers did not wish to use the C++ binding, and used the - configure --without-cxx option. This causes problems if someone - uses the ncurses library from C++ because that configure test - determines the type for C++'s bool and makes ncurses match it, since - both C++ and curses are specified to declare bool. Calling ncurses - functions with the incorrect type for bool will cause execution - errors. In 5.0 we added a configure option "--without-cxx-binding" - which controls whether the binding itself is built and installed. - - 4.2 (March 2, 1998) - Interface changes: - - + correct prototype for termattrs() as per XPG4 version 2. - - + add placeholder prototypes for color_set(), erasewchar(), - term_attrs(), wcolor_set() as per XPG4 version 2. - - + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in - SVr4 headers. - - New extensions: keyok() and define_key(). - - Terminfo database changes: - - + corrected definition in curses.h for ACS_LANTERN, which was 'I' - rather than 'i'. - - 4.1 (May 15, 1997) - - We added these extensions: use_default_colors(). Also added - configure option --enable-const, to support the use of const where - X/Open should have, but did not, specify. - - The terminfo database content changed the representation of color for - most entries that use ANSI colors. SVr4 curses treats the setaf/setab - and setf/setb capabilities differently, interchanging the red/blue - colors in the latter. - - 4.0 (December 24, 1996) - - We bumped to version 4.0 because the newly released Linux dynamic - loader (ld.so.1.8.5) did not load shared libraries whose ABI and REL - versions were inconsistent. At that point, ncurses ABI was 3.4 and the - REL was 1.9.9g, so we made them consistent. - - 1.9.9g (December 1, 1996) - - This fixed most of the problems with 1.9.9e, and made these interface - changes: - - + remove tparam(), which had been provided for compatibility with - some termcap. tparm() is standard, and does not conflict with - application's fallback for missing tparam(). - - + turn off hardware echo in initscr(). This changes the sense of the - echo() function, which was initialized to echoing rather than - nonechoing (the latter is specified). There were several other - corrections to the terminal I/O settings which cause applications to - behave differently. - - + implemented several functions (such as attr_on()) which were - available only as macros. - - + corrected several typos in curses.h.in (i.e., the mvXXXX macros). - - + corrected prototypes for delay_output(), - has_color, immedok() and idcok(). - - + corrected misspelled getbkgd(). Some applications used the - misspelled name. - - + added _yoffset to WINDOW. The size of WINDOW does not impact - applications, since they use only pointers to WINDOW structs. - - These changes were made to the terminfo database: - - + removed boolean 'getm' which was available as an extended name. - - We added these extensions: wresize(), resizeterm(), has_key() and - mcprint(). - - 1.9.9e (March 24, 1996) - - not recommended (a last-minute/untested change left the forms and - menus libraries unusable since they do not repaint the screen). - Foreground/background colors are combined incorrectly, working properly - only on a black background. When this was released, the X/Open - specification was available only in draft form. - - Some applications (such as lxdialog) were "fixed" to work with the - incorrect color scheme. - - -IF YOU ARE A SYSTEM INTEGRATOR: ------------------------------- - - Configuration and Installation: - - On platforms where ncurses is assumed to be installed in /usr/lib, - the configure script uses "/usr" as a default: - - GNU/Linux, FreeBSD, NetBSD, OpenBSD, Cygwin - - For other platforms, the default is "/usr/local". See the discussion - of the "--disable-overwrite" option. - - The location of the terminfo is set indirectly by the "--datadir" - configure option, e.g., /usr/share/terminfo, given a datadir of - /usr/share. You may want to override this if you are installing - ncurses libraries in nonstandard locations, but wish to share the - terminfo database. - - Normally the ncurses library is configured in a pure-terminfo mode; - that is, with the --disable-termcap option. This makes the ncurses - library smaller and faster. The ncurses library includes a termcap - emulation that queries the terminfo database, so even applications that - use raw termcap to query terminal characteristics will win (providing - you recompile and relink them!). - - If you must configure with termcap fallback enabled, you may also wish - to use the --enable-getcap option. This speeds up termcap-based - startups, at the expense of not allowing personal termcap entries to - reference the terminfo tree. See comments in - ncurses/tinfo/read_termcap.c for further details. - - Note that if you have $TERMCAP set, ncurses will use that value - to locate termcap data. In particular, running from xterm will - set $TERMCAP to the contents of the xterm's termcap entry. - If ncurses sees that, it will not examine /etc/termcap. - - Keyboard Mapping: - - The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48 - reverse-tabulation sequence) rather than ^I. Here are the loadkeys -d - mappings that will set this up: - - keycode 15 = Tab Tab - alt keycode 15 = Meta_Tab - shift keycode 15 = F26 - string F26 ="\033[Z" - - Naming the Console Terminal - - In various systems there has been a practice of designating the system - console driver type as `console'. Please do not do this! It - complicates peoples' lives, because it can mean that several different - terminfo entries from different operating systems all logically want to - be called `console'. - - Please pick a name unique to your console driver and set that up - in the /etc/inittab table or local equivalent. Send the entry to the - terminfo maintainer (listed in the misc/terminfo file) to be included - in the terminfo file, if it's not already there. See the - term(7) manual page included with this distribution for more on - conventions for choosing type names. - - Here are some recommended primary console names: - - linux -- Linux console driver - freebsd -- FreeBSD - netbsd -- NetBSD - bsdos -- BSD/OS - - If you are responsible for integrating ncurses for one of these - distributions, please either use the recommended name or get back - to us explaining why you don't want to, so we can work out nomenclature - that will make users' lives easier rather than harder. - - -RECENT XTERM VERSIONS: ---------------------- - - The terminfo database file included with this distribution assumes you - are running a modern xterm based on XFree86 (i.e., xterm-new). The - earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided - as well. See the --without-xterm-new configure script option if you - are unable to update your system. - - -CONFIGURING FALLBACK ENTRIES: ----------------------------- - - In order to support operation of ncurses programs before the terminfo - tree is accessible (that is, in single-user mode or at OS installation - time) the ncurses library can be compiled to include an array of - pre-fetched fallback entries. This must be done on a machine which - has ncurses' infocmp and terminfo database installed (as well as - ncurses' tic and infocmp programs). - - These entries are checked by setupterm() only when the conventional - fetches from the terminfo tree and the termcap fallback (if configured) - have been tried and failed. Thus, the presence of a fallback will not - shadow modifications to the on-disk entry for the same type, when that - entry is accessible. - - By default, there are no entries on the fallback list. After you have - built the ncurses suite for the first time, you can change the list - (the process needs infocmp(1)). To do so, use the script - ncurses/tinfo/MKfallback.sh. A configure script option - --with-fallbacks does this (it accepts a comma-separated list of the - names you wish, and does not require a rebuild). - - If you wanted (say) to have linux, vt100, and xterm fallbacks, you - would use the commands - - cd ncurses; - tinfo/MKfallback.sh linux vt100 xterm >fallback.c - - Then just rebuild and reinstall the library as you would normally. - You can restore the default empty fallback list with - - tinfo/MKfallback.sh >fallback.c - - The overhead for an empty fallback list is one trivial stub function. - Any non-empty fallback list is const-ed and therefore lives in sharable - text space. You can look at the comment trailing each initializer in - the generated ncurses/fallback.c file to see the core cost of the - fallbacks. A good rule of thumb for modern vt100-like entries is that - each one will cost about 2.5K of text space. - - -BSD CONVERSION NOTES: --------------------- - - If you need to support really ancient BSD programs, you probably - want to configure with the --enable-bsdpad option. What this does - is enable code in tputs() that recognizes a numeric prefix on a - capability as a request for that much trailing padding in milliseconds. - There are old BSD programs that do things like tputs("50"). - - (If you are distributing ncurses as a support-library component of - an application you probably want to put the remainder of this section - in the package README file.) - - The following note applies only if you have configured ncurses with - --enable-termcap. - -------------------------------- CUT HERE -------------------------------- - -If you are installing this application privately (either because you -have no root access or want to experiment with it before doing a root -installation), there are a couple of details you need to be aware of. -They have to do with the ncurses library, which uses terminfo rather -than termcap for describing terminal characteristics. - -Though the ncurses library is terminfo-based, it will interpret your -TERMCAP variable (if present), any local termcap files you reference -through it, and the system termcap file. However, in order to avoid -slowing down your application startup, it will only do this once per -terminal type! - -The first time you load a given terminal type from your termcap -database, the library initialization code will automatically write it -in terminfo format to a subdirectory under $HOME/.terminfo. After -that, the initialization code will find it there and do a (much -faster) terminfo fetch. - -Usually, all this means is that your home directory will silently grow -an invisible .terminfo subdirectory which will get filled in with -terminfo descriptions of terminal types as you invoke them. If anyone -ever installs a global terminfo tree on your system, this will quietly -stop happening and your $HOME/.terminfo will become redundant. - -The objective of all this logic is to make converting from BSD termcap -as painless as possible without slowing down your application (termcap -compilation is expensive). - -If you don't have a TERMCAP variable or custom personal termcap file, -you can skip the rest of this dissertation. - -If you *do* have a TERMCAP variable and/or a custom personal termcap file -that defines a terminal type, that definition will stop being visible -to this application after the first time you run it, because it will -instead see the terminfo entry that it wrote to $HOME/terminfo the -first time around. - -Subsequently, editing the TERMCAP variable or personal TERMCAP file -will have no effect unless you explicitly remove the terminfo entry -under $HOME/terminfo. If you do that, the entry will be recompiled -from your termcap resources the next time it is invoked. - -To avoid these complications, use infocmp(1) and tic(1) to edit the -terminfo directory directly. - -------------------------------- CUT HERE -------------------------------- - -USING NCURSES WITH AFS: - AFS treats each directory as a separate logical filesystem, you - can't hard-link across them. The --enable-symlinks option copes - with this by making tic use symbolic links. - -USING NCURSES WITH GPM: - Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse) - which is used with Linux console. Be aware that GPM is commonly - installed as a shared library which contains a wrapper for the curses - wgetch() function (libcurses.o). Some integrators have simplified - linking applications by combining all or part of libcurses.so into the - libgpm.so file, producing symbol conflicts with ncurses (specifically - the wgetch function). This was originally the BSD curses, but - generally whatever curses library exists on the system. - - You may be able to work around this problem by linking as follows: - - cc -o foo foo.o -lncurses -lgpm -lncurses - - but the linker may not cooperate, producing mysterious errors. - See the FAQ, as well as the discussion under the --with-gpm option: - - http://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib - -BUILDING NCURSES WITH A CROSS-COMPILER - Ncurses can be built with a cross-compiler. Some parts must be built - with the host's compiler since they are used for building programs - (e.g., ncurses/make_hash and ncurses/make_keys) that generate tables - that are compiled into the ncurses library. The essential thing to do - is set the BUILD_CC environment variable to your host's compiler, and - run the configure script configuring for the cross-compiler. - - The configure options --with-build-cc, etc., are provided to make this - simpler. Since make_hash and make_keys use only ANSI C features, it - is normally not necessary to provide the other options such as - --with-build-libs, but they are provided for completeness. - - Note that all of the generated source-files which are part of ncurses - will be made if you use - - make sources - - This would be useful in porting to an environment which has little - support for the tools used to generate the sources, e.g., sed, awk and - Bourne-shell. - - When ncurses has been successfully cross-compiled, you may want to use - "make install" (with a suitable target directory) to construct an - install tree. Note that in this case (as with the --with-fallbacks - option), ncurses uses the development platform's tic to do the - "make install.data" portion. - - The system's tic program is used to install the terminal database, - even for cross-compiles. For best results, the tic program should - be from the most current version of ncurses. - -BUGS: - Send any feedback to the ncurses mailing list at - bug-ncurses@gnu.org. To subscribe send mail to - bug-ncurses-request@gnu.org with body that reads: - subscribe ncurses - - The Hacker's Guide in the doc directory includes some guidelines - on how to report bugs in ways that will get them fixed most quickly. - --- vile:txtmode diff --git a/deps/ncurses-5.9/Makefile b/deps/ncurses-5.9/Makefile deleted file mode 100644 index b854591..0000000 --- a/deps/ncurses-5.9/Makefile +++ /dev/null @@ -1,209 +0,0 @@ -# $Id: Makefile.in,v 1.30 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2008,2010 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: Thomas E. Dickey 1996,1997 -# -# Master Makefile for ncurses library. - -SHELL = /bin/sh - - -DESTDIR= -CF_MFLAGS = DESTDIR="$(DESTDIR)" - - - -NCURSES_MAJOR = 5 -NCURSES_MINOR = 9 -NCURSES_PATCH = 20110404 - -top_srcdir = . -srcdir = . - -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} - -bindir = ${exec_prefix}/bin -ticdir = /home/martino/avrdude-build-script/objdir/share/terminfo -includedir = ${prefix}/include/ncurses -libdir = ${exec_prefix}/lib -mandir = ${prefix}/man - -INSTALL = /bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 - -DIRS_TO_MAKE = lib objects - -all :: $(DIRS_TO_MAKE) - -$(DIRS_TO_MAKE) : - mkdir $@ - -preinstall : - @ echo '' - @ echo '** Configuration summary for NCURSES $(NCURSES_MAJOR).$(NCURSES_MINOR) $(NCURSES_PATCH):' - @ echo '' - @ echo ' extended funcs: '`test 1 != 0 && echo yes || echo no` - @ echo ' xterm terminfo: 'xterm-new - @ echo '' - @ echo ' bin directory: '$(bindir) - @ echo ' lib directory: '$(libdir) - @ echo ' include directory: '$(includedir) - @ echo ' man directory: '$(mandir) - @ echo ' terminfo directory: '$(ticdir) - @ echo '' - @ test "$(includedir)" = "$(prefix)/include" || \ - echo '** Include-directory is not in a standard location' - @ test ! -f $(includedir)/termcap.h || \ - fgrep NCURSES_VERSION $(includedir)/termcap.h >/dev/null || \ - echo '** Will overwrite non-ncurses termcap.h' - @ test ! -f $(includedir)/curses.h || \ - fgrep NCURSES_VERSION $(includedir)/curses.h >/dev/null || \ - echo '** Will overwrite non-ncurses curses.h' - -dlls: libs - $(SHELL) $(srcdir)/mk-dlls.sh - -distclean \ -realclean :: - -rm -f mk-dlls.sh mingw_arch - -# Put the common rules here so that we can easily construct the list of -# directories to visit. -all \ -clean \ -distclean \ -mostlyclean \ -realclean \ -depend \ -sources \ -tags \ -uninstall \ -install :: - cd man && ${MAKE} ${CF_MFLAGS} $@ - cd include && ${MAKE} ${CF_MFLAGS} $@ - cd ncurses && ${MAKE} ${CF_MFLAGS} $@ - cd progs && ${MAKE} ${CF_MFLAGS} $@ - cd panel && ${MAKE} ${CF_MFLAGS} $@ - cd menu && ${MAKE} ${CF_MFLAGS} $@ - cd form && ${MAKE} ${CF_MFLAGS} $@ - cd test && ${MAKE} ${CF_MFLAGS} $@ - cd misc && ${MAKE} ${CF_MFLAGS} $@ - cd c++ && ${MAKE} ${CF_MFLAGS} $@ - -libs \ -install.libs \ -uninstall.libs \ -install.includes \ -uninstall.includes :: - cd include && ${MAKE} ${CF_MFLAGS} $@ - -lint \ -libs \ -lintlib \ -install.libs \ -uninstall.libs \ -install.ncurses \ -uninstall.ncurses :: - cd ncurses && ${MAKE} ${CF_MFLAGS} $@ - -lint \ -libs \ -lintlib \ -install.libs \ -uninstall.libs \ -install.progs \ -uninstall.progs :: - cd progs && ${MAKE} ${CF_MFLAGS} $@ - -install.includes \ -uninstall.includes \ -lint \ -libs \ -lintlib \ -install.libs \ -uninstall.libs \ -install.panel \ -uninstall.panel :: - cd panel && ${MAKE} ${CF_MFLAGS} $@ - -install.includes \ -uninstall.includes \ -lint \ -libs \ -lintlib \ -install.libs \ -uninstall.libs \ -install.menu \ -uninstall.menu :: - cd menu && ${MAKE} ${CF_MFLAGS} $@ - -install.includes \ -uninstall.includes \ -lint \ -libs \ -lintlib \ -install.libs \ -uninstall.libs \ -install.form \ -uninstall.form :: - cd form && ${MAKE} ${CF_MFLAGS} $@ - -lint \ -libs \ -lintlib \ -install.libs \ -uninstall.libs \ -install.test \ -uninstall.test :: - cd test && ${MAKE} ${CF_MFLAGS} $@ - -install.includes \ -uninstall.includes \ -libs \ -lintlib \ -install.libs \ -uninstall.libs \ -install.c++ \ -uninstall.c++ :: - cd c++ && ${MAKE} ${CF_MFLAGS} $@ - -install.libs uninstall.libs \ -install.data uninstall.data :: - cd misc && ${MAKE} ${CF_MFLAGS} $@ - -install.man \ -uninstall.man :: - cd man && ${MAKE} ${CF_MFLAGS} $@ - -distclean :: - rm -f config.cache config.log config.status Makefile include/ncurses_cfg.h - rm -f headers.sh headers.sed mk_shared_lib.sh - rm -f edit_man.* man_alias.* - rm -rf ${DIRS_TO_MAKE} diff --git a/deps/ncurses-5.9/Makefile.in b/deps/ncurses-5.9/Makefile.in deleted file mode 100644 index d891e00..0000000 --- a/deps/ncurses-5.9/Makefile.in +++ /dev/null @@ -1,108 +0,0 @@ -# $Id: Makefile.in,v 1.30 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2008,2010 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: Thomas E. Dickey 1996,1997 -# -# Master Makefile for ncurses library. - -SHELL = /bin/sh -VPATH = @srcdir@ - -DESTDIR=@DESTDIR@ -CF_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" - -@SET_MAKE@ - -NCURSES_MAJOR = @NCURSES_MAJOR@ -NCURSES_MINOR = @NCURSES_MINOR@ -NCURSES_PATCH = @NCURSES_PATCH@ - -top_srcdir = @top_srcdir@ -srcdir = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -ticdir = @TERMINFO@ -includedir = @includedir@ -libdir = @libdir@ -mandir = @mandir@ - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -DIRS_TO_MAKE = @DIRS_TO_MAKE@ - -all :: $(DIRS_TO_MAKE) - -$(DIRS_TO_MAKE) : - mkdir $@ - -preinstall : - @ echo '' - @ echo '** Configuration summary for NCURSES $(NCURSES_MAJOR).$(NCURSES_MINOR) $(NCURSES_PATCH):' - @ echo '' - @ echo ' extended funcs: '`test @NCURSES_EXT_FUNCS@ != 0 && echo yes || echo no` - @ echo ' xterm terminfo: '@WHICH_XTERM@ - @ echo '' - @ echo ' bin directory: '$(bindir) - @ echo ' lib directory: '$(libdir) - @ echo ' include directory: '$(includedir) - @ echo ' man directory: '$(mandir) -@MAKE_TERMINFO@ @ echo ' terminfo directory: '$(ticdir) - @ echo '' - @ test "$(includedir)" = "$(prefix)/include" || \ - echo '** Include-directory is not in a standard location' - @ test ! -f $(includedir)/termcap.h || \ - fgrep NCURSES_VERSION $(includedir)/termcap.h >/dev/null || \ - echo '** Will overwrite non-ncurses termcap.h' - @ test ! -f $(includedir)/curses.h || \ - fgrep NCURSES_VERSION $(includedir)/curses.h >/dev/null || \ - echo '** Will overwrite non-ncurses curses.h' - -dlls: libs - $(SHELL) $(srcdir)/mk-dlls.sh - -distclean \ -realclean :: - -rm -f mk-dlls.sh mingw_arch - -# Put the common rules here so that we can easily construct the list of -# directories to visit. -all \ -clean \ -distclean \ -mostlyclean \ -realclean \ -depend \ -sources \ -tags \ -uninstall \ -install :: diff --git a/deps/ncurses-5.9/NEWS b/deps/ncurses-5.9/NEWS deleted file mode 100644 index e8f9cef..0000000 --- a/deps/ncurses-5.9/NEWS +++ /dev/null @@ -1,9873 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2010,2011 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. -- -------------------------------------------------------------------------------- --- $Id: NEWS,v 1.1682 2011/04/04 00:02:42 tom Exp $ -------------------------------------------------------------------------------- - -This is a log of changes that ncurses has gone through since Zeyd started -working with Pavel Curtis' original work, pcurses, in 1992. - -Changes through 1.9.9e are recorded by Zeyd M Ben-Halim. -Changes since 1.9.9e are recorded by Thomas E Dickey. - -Contributors include those who have provided patches (even small ones), as well -as those who provide useful information (bug reports, analyses). Changes with -no cited author are the work of Thomas E Dickey (TD). - -A few contributors are given in this file by their initials. -They each account for one percent or more of the changes since 1.9.9e. -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. - -20110404 5.9 release for upload to ftp.gnu.org - -20110402 - + various build-fixes for the rpm/dpkg scripts. - + add "--enable-rpath-link" option to Ada95/configure, to allow - packages to suppress the rpath feature which is normally used for - the in-tree build of sample programs. - + corrected definition of libdir variable in Ada95/src/Makefile.in, - needed for rpm script. - + add "--with-shared" option to Ada95/configure script, to allow - making the C-language parts of the binding use appropriate compiler - options if building a shared library with gnat. - -20110329 - > portability fixes for Ada95 binding: - + add configure check to ensure that SIGINT works with gnat. This is - needed for the "rain" sample program. If SIGINT does not work, omit - that sample program. - + correct typo in check of $PKG_CONFIG variable in Ada95/configure - + add ncurses_compat.c, to supply functions used in the Ada95 binding - which were added in 5.7 and later. - + modify sed expression in CF_NCURSES_ADDON to eliminate a dependency - upon GNU sed. - -20110326 - + add special check in Ada95/configure script for ncurses6 reentrant - code. - + regen Ada html documentation. - + build-fix for Ada shared libraries versus the varargs workaround. - + add rpm and dpkg scripts for Ada95 and test directories, for test - builds. - + update test/configure macros CF_CURSES_LIBS, CF_XOPEN_SOURCE and - CF_X_ATHENA_LIBS. - + add configure check to determine if gnat's project feature supports - libraries, i.e., collections of .ali files. - + make all dereferences in Ada95 samples explicit. - + fix typo in comment in lib_add_wch.c (patch by Petr Pavlu). - + add configure check for, ifdef's for math.h which is in a separate - package on Solaris and potentially not installed (report by Petr - Pavlu). - > fixes for Ada95 binding (Nicolas Boulenguez): - + improve type-checking in Ada95 by eliminating a few warning-suppress - pragmas. - + suppress unreferenced warnings. - + make all dereferences in binding explicit. - -20110319 - + regen Ada html documentation. - + change order of -I options from ncurses*-config script when the - --disable-overwrite option was used, so that the subdirectory include - is listed first. - + modify the make-tar.sh scripts to add a MANIFEST and NEWS file. - + modify configure script to provide value for HTML_DIR in - Ada95/gen/Makefile.in, which depends on whether the Ada95 binding is - distributed separately (report by Nicolas Boulenguez). - + modify configure script to add -g and/or -O3 to ADAFLAGS if the - CFLAGS for the build has these options. - + amend change from 20070324, to not add 1 to the result of getmaxx - and getmaxy in the Ada binding (report by Nicolas Boulenguez for - thread in comp.lang.ada). - + build-fix Ada95/samples for gnat 4.5 - + spelling fixes for Ada95/samples/explain.txt - > fixes for Ada95 binding (Nicolas Boulenguez): - + add item in Trace_Attribute_Set corresponding to TRACE_ATTRS. - + add workaround for binding to set_field_type(), which uses varargs. - The original binding from 990220 relied on the prevalent - implementation of varargs which did not support or need va_copy(). - + add dependency on gen/Makefile.in needed for *-panels.ads - + add Library_Options to library.gpr - + add Languages to library.gpr, for gprbuild - -20110307 - + revert changes to limit-checks from 20110122 (Debian #616711). - > minor type-cleanup of Ada95 binding (Nicolas Boulenguez): - + corrected a minor sign error in a field of Low_Level_Field_Type, to - conform to form.h. - + replaced C_Int by Curses_Bool as return type for some callbacks, see - fieldtype(3FORM). - + modify samples/sample-explain.adb to provide explicit message when - explain.txt is not found. - -20110305 - + improve makefiles for Ada95 tree (patch by Nicolas Boulenguez). - + fix an off-by-one error in _nc_slk_initialize() from 20100605 fixes - for compiler warnings (report by Nicolas Boulenguez). - + modify Ada95/gen/gen.c to declare unused bits in generated layouts, - needed to compile when chtype is 64-bits using gnat 4.4.5 - -20110226 5.8 release for upload to ftp.gnu.org - -20110226 - + update release notes, for 5.8. - + regenerated html manpages. - + change open() in _nc_read_file_entry() to fopen() for consistency - with write_file(). - + modify misc/run_tic.in to create parent directory, in case this is - a new install of hashed database. - + fix typo in Ada95/mk-1st.awk which causes error with original awk. - -20110220 - + configure script rpath fixes from xterm #269. - + workaround for cygwin's non-functional features.h, to force ncurses' - configure script to define _XOPEN_SOURCE_EXTENDED when building - wide-character configuration. - + build-fix in run_tic.sh for OS/2 EMX install - + add cons25-debian entry (patch by Brian M Carlson, Debian #607662). - -20110212 - + regenerated html manpages. - + use _tracef() in show_where() function of tic, to work correctly with - special case of trace configuration. - -20110205 - + add xterm-utf8 entry as a demo of the U8 feature -TD - + add U8 feature to denote entries for terminal emulators which do not - support VT100 SI/SO when processing UTF-8 encoding -TD - + improve the NCURSES_NO_UTF8_ACS feature by adding a check for an - extended terminfo capability U8 (prompted by mailing list - discussion). - -20110122 - + start documenting interface changes for upcoming 5.8 release. - + correct limit-checks in derwin(). - + correct limit-checks in newwin(), to ensure that windows have nonzero - size (report by Garrett Cooper). - + fix a missing "weak" declaration for pthread_kill (patch by Nicholas - Alcock). - + improve documentation of KEY_ENTER in curs_getch.3x manpage (prompted - by discussion with Kevin Martin). - -20110115 - + modify Ada95/configure script to make the --with-curses-dir option - work without requiring the --with-ncurses option. - + modify test programs to allow them to be built with NetBSD curses. - + document thick- and double-line symbols in curs_add_wch.3x manpage. - + document WACS_xxx constants in curs_add_wch.3x manpage. - + fix some warnings for clang 2.6 "--analyze" - + modify Ada95 makefiles to make html-documentation with the project - file configuration if that is used. - + update config.guess, config.sub - -20110108 - + regenerated html manpages. - + minor fixes to enable lint when trace is not enabled, e.g., with - clang --analyze. - + fix typo in man/default_colors.3x (patch by Tim van der Molen). - + update ncurses/llib-lncurses* - -20110101 - + fix remaining strict compiler warnings in ncurses library ABI=5, - except those dealing with function pointers, etc. - -20101225 - + modify nc_tparm.h, adding guards against repeated inclusion, and - allowing TPARM_ARG to be overridden. - + fix some strict compiler warnings in ncurses library. - -20101211 - + suppress ncv in screen entry, allowing underline (patch by Alejandro - R Sedeno). - + also suppress ncv in konsole-base -TD - + fixes in wins_nwstr() and related functions to ensure that special - characters, i.e., control characters are handled properly with the - wide-character configuration. - + correct a comparison in wins_nwstr() (Redhat #661506). - + correct help-messages in some of the test-programs, which still - referred to quitting with 'q'. - -20101204 - + add special case to _nc_infotocap() to recognize the setaf/setab - strings from xterm+256color and xterm+88color, and provide a reduced - version which works with termcap. - + remove obsolete emacs "Local Variables" section from documentation - (request by Sven Joachim). - + update doc/html/index.html to include NCURSES-Programming-HOWTO.html - (report by Sven Joachim). - -20101128 - + modify test/configure and test/Makefile.in to handle this special - case of building within a build-tree (Debian #34182): - mkdir -p build && cd build && ../test/configure && make - -20101127 - + miscellaneous build-fixes for Ada95 and test-directories when built - out-of-tree. - + use VPATH in makefiles to simplify out-of-tree builds (Debian #34182). - + fix typo in rmso for tek4106 entry -Goran Weinholt - -20101120 - + improve checks in test/configure for X libraries, from xterm #267 - changes. - + modify test/configure to allow it to use the build-tree's libraries - e.g., when using that to configure the test-programs without the - rpath feature (request by Sven Joachim). - + repurpose "gnome" terminfo entries as "vte", retaining "gnome" items - for compatibility, but generally deprecating those since the VTE - library is what actually defines the behavior of "gnome", etc., - since 2003 -TD - -20101113 - + compiler warning fixes for test programs. - + various build-fixes for test-programs with pdcurses. - + updated configure checks for X packages in test/configure from xterm - #267 changes. - + add configure check to gnatmake, to accommodate cygwin. - -20101106 - + correct list of sub-directories needed in Ada95 tree for building as - a separate package. - + modify scripts in test-directory to improve builds as a separate - package. - -20101023 - + correct parsing of relative tab-stops in tabs program (report by - Philip Ganchev). - + adjust configure script so that "t" is not added to library suffix - when weak-symbols are used, allowing the pthread configuration to - more closely match the non-thread naming (report by Werner Fink). - + modify configure check for tic program, used for fallbacks, to a - warning if not found. This makes it simpler to use additonal - scripts to bootstrap the fallbacks code using tic from the build - tree (report by Werner Fink). - + fix several places in configure script using ${variable-value} form. - + modify configure macro CF_LDFLAGS_STATIC to accommodate some loaders - which do not support selectively linking against static libraries - (report by John P. Hartmann) - + fix an unescaped dash in man/tset.1 (report by Sven Joachim). - -20101009 - + correct comparison used for setting 16-colors in linux-16color - entry (Novell #644831) -TD - + improve linux-16color entry, using "dim" for color-8 which makes it - gray rather than black like color-0 -TD - + drop misc/ncu-indent and misc/jpf-indent; they are provided by an - external package "cindent". - -20101002 - + improve linkages in html manpages, adding references to the newer - pages, e.g., *_variables, curs_sp_funcs, curs_threads. - + add checks in tic for inconsistent cursor-movement controls, and for - inconsistent printer-controls. - + fill in no-parameter forms of cursor-movement where a parameterized - form is available -TD - + fill in missing cursor controls where the form of the controls is - ANSI -TD - + fix inconsistent punctuation in form_variables manpage (patch by - Sven Joachim). - + add parameterized cursor-controls to linux-basic (report by Dae) -TD - > patch by Juergen Pfeifer: - + document how to build 32-bit libraries in README.MinGW - + fixes to filename computation in mk-dlls.sh.in - + use POSIX locale in mk-dlls.sh.in rather than en_US (report by Sven - Joachim). - + add a check in mk-dlls.sh.in to obtain the size of a pointer to - distinguish between 32-bit and 64-bit hosts. The result is stored - in mingw_arch - -20100925 - + add "XT" capability to entries for terminals that support both - xterm-style mouse- and title-controls, for "screen" which - special-cases TERM beginning with "xterm" or "rxvt" -TD - > patch by Juergen Pfeifer: - + use 64-Bit MinGW toolchain (recommended package from TDM, see - README.MinGW). - + support pthreads when using the TDM MinGW toolchain - -20100918 - + regenerated html manpages. - + minor fixes for symlinks to curs_legacy.3x and curs_slk.3x manpages. - + add manpage for sp-funcs. - + add sp-funcs to test/listused.sh, for documentation aids. - -20100911 - + add manpages for summarizing public variables of curses-, terminfo- - and form-libraries. - + minor fixes to manpages for consistency (patch by Jason McIntyre). - + modify tic's -I/-C dump to reformat acsc strings into canonical form - (sorted, unique mapping) (cf: 971004). - + add configure check for pthread_kill(), needed for some old - platforms. - -20100904 - + add configure option --without-tests, to suppress building test - programs (request by Frederic L W Meunier). - -20100828 - + modify nsterm, xnuppc and tek4115 to make sgr/sgr0 consistent -TD - + add check in terminfo source-reader to provide more informative - message when someone attempts to run tic on a compiled terminal - description (prompted by Debian #593920). - + note in infotocap and captoinfo manpages that they read terminal - descriptions from text-files (Debian #593920). - + improve acsc string for vt52, show arrow keys (patch by Benjamin - Sittler). - -20100814 - + document in manpages that "mv" functions first use wmove() to check - the window pointer and whether the position lies within the window - (suggested by Poul-Henning Kamp). - + fixes to curs_color.3x, curs_kernel.3x and wresize.3x manpages (patch - by Tim van der Molen). - + modify configure script to transform library names for tic- and - tinfo-libraries so that those build properly with Mac OS X shared - library configuration. - + modify configure script to ensure that it removes conftest.dSYM - directory leftover on checks with Mac OS X. - + modify configure script to cleanup after check for symbolic links. - -20100807 - + correct a typo in mk-1st.awk (patch by Gabriele Balducci) - (cf: 20100724) - + improve configure checks for location of tic and infocmp programs - used for installing database and for generating fallback data, - e.g., for cross-compiling. - + add Markus Kuhn's wcwidth function for compiling MinGW - + add special case to CF_REGEX for cross-compiling to MinGW target. - -20100731 - + modify initialization check for win32con driver to eliminate need for - special case for TERM "unknown", using terminal database if available - (prompted by discussion with Roumen Petrov). - + for MinGW port, ensure that terminal driver is setup if tgetent() - is called (patch by Roumen Petrov). - + document tabs "-0" and "-8" options in manpage. - + fix Debian "lintian" issues with manpages reported in - http://lintian.debian.org/full/csmall@debian.org.html#ncurses - -20100724 - + add a check in tic for missing set_tab if clear_all_tabs given. - + improve use of symbolic links in makefiles by using "-f" option if - it is supported, to eliminate temporary removal of the target - (prompted by http://www.t2-project.org/packages/ncurses.html) - + minor improvement to test/ncurses.c, reset color pairs in 'd' test - after exit from 'm' main-menu command. - + improved ncu-indent, from mawk changes, allows more than one of - GCC_NORETURN, GCC_PRINTFLIKE and GCC_SCANFLIKE on a single line. - -20100717 - + add hard-reset for rs2 to wsvt25 to help ensure that reset ends - the alternate character set (patch by Nicholas Marriott) - + remove tar-copy.sh and related configure/Makefile chunks, since the - Ada95 binding is now installed using rules in Ada95/src. - -20100703 - + continue integrating changes to use gnatmake project files in Ada95 - + add/use configure check to turn on project rules for Ada95/src. - + revert the vfork change from 20100130, since it does not work. - -20100626 - + continue integrating changes to use gnatmake project files in Ada95 - + old gnatmake (3.15) does not produce libraries using project-file; - work around by adding script to generate alternate makefile. - -20100619 - + continue integrating changes to use gnatmake project files in Ada95 - + add configure --with-ada-sharedlib option, for the test_make rule. - + move Ada95-related logic into aclocal.m4, since additional checks - will be needed to distinguish old/new implementations of gnat. - -20100612 - + start integrating changes to use gnatmake project files in Ada95 tree - + add test_make / test_clean / test_install rules in Ada95/src - + change install-path for adainclude directory to /usr/share/ada (was - /usr/lib/ada). - + update Ada95/configure. - + add mlterm+256color entry, for mlterm 3.0.0 -TD - + modify test/configure to use macros to ensure consistent order - of updating LIBS variable. - -20100605 - + change search order of options for Solaris in CF_SHARED_OPTS, to - work with 64-bit compiles. - + correct quoting of assignment in CF_SHARED_OPTS case for aix - (cf: 20081227) - -20100529 - + regenerated html documentation. - + modify test/configure to support pkg-config for checking X libraries - used by PDCurses. - + add/use configure macro CF_ADD_LIB to force consistency of - assignments to $LIBS, etc. - + fix configure script for combining --with-pthread - and --enable-weak-symbols options. - -20100522 - + correct cross-compiling configure check for CF_MKSTEMP macro, by - adding a check cache variable set by AC_CHECK_FUNC (report by - Pierre Labastie). - + simplify include-dependencies of make_hash and make_keys, to reduce - the need for setting BUILD_CPPFLAGS in cross-compiling when the - build- and target-machines differ. - + repair broken-linker configuration by restoring a definition of SP - variable to curses.priv.h, and adjusting for cases where sp-funcs - are used. - + improve configure macro CF_AR_FLAGS, allowing ARFLAGS environment - variable to override (prompted by report by Pablo Cazallas). - -20100515 - + add configure option --enable-pthreads-eintr to control whether the - new EINTR feature is enabled. - + modify logic in pthread configuration to allow EINTR to interrupt - a read operation in wgetch() (Novell #540571, patch by Werner Fink). - + drop mkdirs.sh, use "mkdir -p". - + add configure option --disable-libtool-version, to use the - "-version-number" feature which was added in libtool 1.5 (report by - Peter Haering). The default value for the option uses the newer - feature, which makes libraries generated using libtool compatible - with the standard builds of ncurses. - + updated test/configure to match configure script macros. - + fixes for configure script from lynx changes: - + improve CF_FIND_LINKAGE logic for the case where a function is - found in predefined libraries. - + revert part of change to CF_HEADER (cf: 20100424) - -20100501 - + correct limit-check in wredrawln, accounting for begy/begx values - (patch by David Benjamin). - + fix most compiler warnings from clang. - + amend build-fix for OpenSolaris, to ensure that a system header is - included in curses.h before testing feature symbols, since they - may be defined by that route. - -20100424 - + fix some strict compiler warnings in ncurses library. - + modify configure macro CF_HEADER_PATH to not look for variations in - the predefined include directories. - + improve configure macros CF_GCC_VERSION and CF_GCC_WARNINGS to work - with gcc 4.x's c89 alias, which gives warning messages for cases - where older versions would produce an error. - -20100417 - + modify _nc_capcmp() to work with cancelled strings. - + correct translation of "^" in _nc_infotocap(), used to transform - terminfo to termcap strings - + add configure --disable-rpath-hack, to allow disabling the feature - which adds rpath options for libraries in unusual places. - + improve CF_RPATH_HACK_2 by checking if the rpath option for a given - directory was already added. - + improve CF_RPATH_HACK_2 by using ldd to provide a standard list of - directories (which will be ignored). - -20100410 - + improve win_driver.c handling of mouse: - + discard motion events - + avoid calling _nc_timed_wait when there is a mouse event - + handle 4th and "rightmost" buttons. - + quote substitutions in CF_RPATH_HACK_2 configure macro, needed for - cases where there are embedded blanks in the rpath option. - -20100403 - + add configure check for exctags vs ctags, to work around pkgsrc. - + simplify logic in _nc_get_screensize() to make it easier to see how - environment variables may override system- and terminfo-values - (prompted by discussion with Igor Bujna). - + make debug-traces for COLOR_PAIR and PAIR_NUMBER less verbose. - + improve handling of color-pairs embedded in attributes for the - extended-colors configuration. - + modify MKlib_gen.sh to build link_test with sp-funcs. - + build-fixes for OpenSolaris aka Solaris 11, for wide-character - configuration as well as for rpath feature in *-config scripts. - -20100327 - + refactor CF_SHARED_OPTS configure macro, making CF_RPATH_HACK more - reusable. - + improve configure CF_REGEX, similar fixes. - + improve configure CF_FIND_LINKAGE, adding add check between system - (default) and explicit paths, where we can find the entrypoint in the - given library. - + add check if Gpm_Open() returns a -2, e.g., for "xterm". This is - normally suppressed but can be overridden using $NCURSES_GPM_TERMS. - Ensure that Gpm_Close() is called in this case. - -20100320 - + rename atari and st52 terminfo entries to atari-old, st52-old, use - newer entries from FreeMiNT by Guido Flohr (from patch/report by Alan - Hourihane). - -20100313 - + modify install-rule for manpages so that *-config manpages will - install when building with --srcdir (report by Sven Joachim). - + modify CF_DISABLE_LEAKS configure macro so that the --enable-leaks - option is not the same as --disable-leaks (GenToo #305889). - + modify #define's for build-compiler to suppress cchar_t symbol from - compile of make_hash and make_keys, improving cross-compilation of - ncursesw (report by Bernhard Rosenkraenzer). - + modify CF_MAN_PAGES configure macro to replace all occurrences of - TPUT in tput.1's manpage (Debian #573597, report/analysis by Anders - Kaseorg). - -20100306 - + generate manpages for the *-config scripts, adapted from help2man - (suggested by Sven Joachim). - + use va_copy() in _nc_printf_string() to avoid conflicting use of - va_list value in _nc_printf_length() (report by Wim Lewis). - -20100227 - + add Ada95/configure script, to use in tar-file created by - Ada95/make-tar.sh - + fix typo in wresize.3x (patch by Tim van der Molen). - + modify screen-bce.XXX entries to exclude ech, since screen's color - model does not clear with color for that feature -TD - -20100220 - + add make-tar.sh scripts to Ada95 and test subdirectories to help with - making those separately distributable. - + build-fix for static libraries without dlsym (Debian #556378). - + fix a syntax error in man/form_field_opts.3x (patch by Ingo - Schwarze). - -20100213 - + add several screen-bce.XXX entries -TD - -20100206 - + update mrxvt terminfo entry -TD - + modify win_driver.c to support mouse single-clicks. - + correct name for termlib in ncurses*-config, e.g., if it is renamed - to provide a single file for ncurses/ncursesw libraries (patch by - Miroslav Lichvar). - -20100130 - + use vfork in test/ditto.c if available (request by Mike Frysinger). - + miscellaneous cleanup of manpages. - + fix typo in curs_bkgd.3x (patch by Tim van der Molen). - + build-fix for --srcdir (patch by Miroslav Lichvar). - -20100123 - + for term-driver configuration, ensure that the driver pointer is - initialized in setupterm so that terminfo/termcap programs work. - + amend fix for Debian #542031 to ensure that wattrset() returns only - OK or ERR, rather than the attribute value (report by Miroslav - Lichvar). - + reorder WINDOWLIST to put WINDOW data after SCREEN pointer, making - _nc_screen_of() compatible between normal/wide libraries again (patch - by Miroslav Lichvar) - + review/fix include-dependencies in modules files (report by Miroslav - Lichvar). - -20100116 - + modify win_driver.c to initialize acs_map for win32 console, so - that line-drawing works. - + modify win_driver.c to initialize TERMINAL struct so that programs - such as test/lrtest.c and test/ncurses.c which test string - capabilities can run. - + modify term-driver modules to eliminate forward-reference - declarations. - -20100109 - + modify configure macro CF_XOPEN_SOURCE, etc., to use CF_ADD_CFLAGS - consistently to add new -D's while removing duplicates. - + modify a few configure macros to consistently put new options - before older in the list. - + add tiparm(), based on review of X/Open Curses Issue 7. - + minor documentation cleanup. - + update config.guess, config.sub from - http://savannah.gnu.org/projects/config - (caveat - its maintainer put 2010 copyright date on files dated 2009) - -20100102 - + minor improvement to tic's checking of similar SGR's to allow for the - most common case of SGR 0. - + modify getmouse() to act as its documentation implied, returning on - each call the preceding event until none are left. When no more - events remain, it will return ERR. - -20091227 - + change order of lookup in progs/tput.c, looking for terminfo data - first. This fixes a confusion between termcap "sg" and terminfo - "sgr" or "sgr0", originally from 990123 changes, but exposed by - 20091114 fixes for hashing. With this change, only "dl" and "ed" are - ambiguous (Mandriva #56272). - -20091226 - + add bterm terminfo entry, based on bogl 0.1.18 -TD - + minor fix to rxvt+pcfkeys terminfo entry -TD - + build-fixes for Ada95 tree for gnat 4.4 "style". - -20091219 - + remove old check in mvderwin() which prevented moving a derived - window whose origin happened to coincide with its parent's origin - (report by Katarina Machalkova). - + improve test/ncurses.c to put mouse droppings in the proper window. - + update minix terminfo entry -TD - + add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler) - -20091212 - + correct transfer of multicolumn characters in multirow - field_buffer(), which stopped at the end of the first row due to - filling of unused entries in a cchar_t array with nulls. - + updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta) - + modify _nc_viscbuf2() and _tracecchar_t2() to show wide-character - nulls. - + use strdup() in set_menu_mark(), restore .marklen struct member on - failure. - + eliminate clause 3 from the UCB copyrights in read_termcap.c and - tset.c per - ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change - (patch by Nicholas Marriott). - + replace a malloc in tic.c with strdup, checking for failure (patch by - Nicholas Marriott). - + update config.guess, config.sub from - http://savannah.gnu.org/projects/config - -20091205 - + correct layout of working window used to extract data in - wide-character configured by set_field_buffer (patch by Rafael - Garrido Fernandez) - + improve some limit-checks related to filename length in reading and - writing terminfo entries. - + ensure that filename is always filled in when attempting to read - a terminfo entry, so that infocmp can report the filename (patch - by Nicholas Marriott). - -20091128 - + modify mk-1st.awk to allow tinfo library to be built when term-driver - is enabled. - + add error-check to configure script to ensure that sp-funcs is - enabled if term-driver is, since some internal interfaces rely upon - this. - -20091121 - + fix case where progs/tput is used while sp-funcs is configure; this - requires save/restore of out-character function from _nc_prescreen - rather than the SCREEN structure (report by Charles Wilson). - + fix typo in man/curs_trace.3x which caused incorrect symbolic links - + improved configure macros CF_GCC_ATTRIBUTES, CF_PROG_LINT. - -20091114 - - + updated man/curs_trace.3x - + limit hashing for termcap-names to 2-characters (Ubuntu #481740). - + change a variable name in lib_newwin.c to make it clearer which - value is being freed on error (patch by Nicholas Marriott). - -20091107 - + improve test/ncurses.c color-cycling test by reusing attribute- - and color-cycling logic from the video-attributes screen. - + add ifdef'd with NCURSES_INTEROP_FUNCS experimental bindings in form - library which help make it compatible with interop applications - (patch by Juergen Pfeifer). - + add configure option --enable-interop, for integrating changes - for generic/interop support to form-library by Juergen Pfeifer - -20091031 - + modify use of $CC environment variable which is defined by X/Open - as a curses feature, to ignore it if it is not a single character - (prompted by discussion with Benjamin C W Sittler). - + add START_TRACE in slk_init - + fix a regression in _nc_ripoffline which made test/ncurses.c not show - soft-keys, broken in 20090927 merging. - + change initialization of "hidden" flag for soft-keys from true to - false, broken in 20090704 merging (Ubuntu #464274). - + update nsterm entries (patch by Benjamin C W Sittler, prompted by - discussion with Fabian Groffen in GenToo #206201). - + add test/xterm-256color.dat - -20091024 - + quiet some pedantic gcc warnings. - + modify _nc_wgetch() to check for a -1 in the fifo, e.g., after a - SIGWINCH, and discard that value, to avoid confusing application - (patch by Eygene Ryabinkin, FreeBSD bin/136223). - -20091017 - + modify handling of $PKG_CONFIG_LIBDIR to use only the first item in - a possibly colon-separated list (Debian #550716). - -20091010 - + supply a null-terminator to buffer in _nc_viswibuf(). - + fix a sign-extension bug in unget_wch() (report by Mike Gran). - + minor fixes to error-returns in default function for tputs, as well - as in lib_screen.c - -20091003 - + add WACS_xxx definitions to wide-character configuration for thick- - and double-lines (discussion with Slava Zanko). - + remove unnecessary kcan assignment to ^C from putty (Sven Joachim) - + add ccc and initc capabilities to xterm-16color -TD - > patch by Benjamin C W Sittler: - + add linux-16color - + correct initc capability of linux-c-nc end-of-range - + similar change for dg+ccc and dgunix+ccc - -20090927 - + move leak-checking for comp_captab.c into _nc_leaks_tinfo() since - that module since 20090711 is in libtinfo. - + add configure option --enable-term-driver, to allow compiling with - terminal-driver. That is used in MinGW port, and (being somewhat - more complicated) is an experimental alternative to the conventional - termlib internals. Currently, it requires the sp-funcs feature to - be enabled. - + completed integrating "sp-funcs" by Juergen Pfeifer in ncurses - library (some work remains for forms library). - -20090919 - + document return code from define_key (report by Mike Gran). - + make some symbolic links in the terminfo directory-tree shorter - (patch by Daniel Jacobowitz, forwarded by Sven Joachim).). - + fix some groff warnings in terminfo.5, etc., from recent Debian - changes. - + change ncv and op capabilities in sun-color terminfo entry to match - Sun's entry for this (report by Laszlo Peter). - + improve interix smso terminfo capability by using reverse rather than - bold (report by Kristof Zelechovski). - -20090912 - + add some test programs (and make these use the same special keys - by sharing linedata.h functions): - test/test_addstr.c - test/test_addwstr.c - test/test_addchstr.c - test/test_add_wchstr.c - + correct internal _nc_insert_ch() to use _nc_insert_wch() when - inserting wide characters, since the wins_wch() function that it used - did not update the cursor position (report by Ciprian Craciun). - -20090906 - + fix typo s/is_timeout/is_notimeout/ which made "man is_notimeout" not - work. - + add null-pointer checks to other opaque-functions. - + add is_pad() and is_subwin() functions for opaque access to WINDOW - (discussion with Mark Dickinson). - + correct merge to lib_newterm.c, which broke when sp-funcs was - enabled. - -20090905 - + build-fix for building outside source-tree (report by Sven Joachim). - + fix Debian lintian warning for man/tabs.1 by making section number - agree with file-suffix (report by Sven Joachim). - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090829 - + workaround for bug in g++ 4.1-4.4 warnings for wattrset() macro on - amd64 (Debian #542031). - + fix typo in curs_mouse.3x (Debian #429198). - -20090822 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090815 - + correct use of terminfo capabilities for initializing soft-keys, - broken in 20090509 merging. - + modify wgetch() to ensure it checks SIGWINCH when it gets an error - in non-blocking mode (patch by Clemens Ladisch). - + use PATH_SEPARATOR symbol when substituting into run_tic.sh, to - help with builds on non-Unix platforms such as OS/2 EMX. - + modify scripting for misc/run_tic.sh to test configure script's - $cross_compiling variable directly rather than comparing host/build - compiler names (prompted by comment in GenToo #249363). - + fix configure script option --with-database, which was coded as an - enable-type switch. - + build-fixes for --srcdir (report by Frederic L W Meunier). - -20090808 - + separate _nc_find_entry() and _nc_find_type_entry() from - implementation details of hash function. - -20090803 - + add tabs.1 to man/man_db.renames - + modify lib_addch.c to compensate for removal of wide-character test - from unctrl() in 20090704 (Debian #539735). - -20090801 - + improve discussion in INSTALL for use of system's tic/infocmp for - cross-compiling and building fallbacks. - + modify test/demo_termcap.c to correspond better to options in - test/demo_terminfo.c - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - + fix logic for 'V' in test/ncurses.c tests f/F. - -20090728 - + correct logic in tigetnum(), which caused tput program to treat all - string capabilities as numeric (report by Rajeev V Pillai, - cf: 20090711). - -20090725 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090718 - + fix a null-pointer check in _nc_format_slks() in lib_slk.c, from - 20070704 changes. - + modify _nc_find_type_entry() to use hashing. - + make CCHARW_MAX value configurable, noting that changing this would - change the size of cchar_t, and would be ABI-incompatible. - + modify test-programs, e.g,. test/view.c, to address subtle - differences between Tru64/Solaris and HPUX/AIX getcchar() return - values. - + modify length returned by getcchar() to count the trailing null - which is documented in X/Open (cf: 20020427). - + fixes for test programs to build/work on HPUX and AIX, etc. - -20090711 - + improve performance of tigetstr, etc., by using hashing code from tic. - + minor fixes for memory-leak checking. - + add test/demo_terminfo, for comparison with demo_termcap - -20090704 - + remove wide-character checks from unctrl() (patch by Clemens Ladisch). - + revise wadd_wch() and wecho_wchar() to eliminate dependency on - unctrl(). - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090627 - + update llib-lncurses[wt] to use sp-funcs. - + various code-fixes to build/work with --disable-macros configure - option. - + add several new files from Juergen Pfeifer which will be used when - integration of "sp-funcs" is complete. This includes a port to - MinGW. - -20090613 - + move definition for NCURSES_WRAPPED_VAR back to ncurses_dll.h, to - make includes of term.h without curses.h work (report by "Nix"). - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090607 - + fix a regression in lib_tputs.c, from ongoing merges. - -20090606 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090530 - + fix an infinite recursion when adding a legacy-coding 8-bit value - using insch() (report by Clemens Ladisch). - + free home-terminfo string in del_curterm() (patch by Dan Weber). - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090523 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090516 - + work around antique BSD game's manipulation of stdscr, etc., versus - SCREEN's copy of the pointer (Debian #528411). - + add a cast to wattrset macro to avoid compiler warning when comparing - its result against ERR (adapted from patch by Matt Kraii, Debian - #528374). - -20090510 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090502 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - + add vwmterm terminfo entry (patch by Bryan Christ). - -20090425 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090419 - + build fix for _nc_free_and_exit() change in 20090418 (report by - Christian Ebert). - -20090418 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090411 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - This change finishes merging for menu and panel libraries, does - part of the form library. - -20090404 - + suppress configure check for static/dynamic linker flags for gcc on - Darwin (report by Nelson Beebe). - -20090328 - + extend ansi.sys pfkey capability from kf1-kf10 to kf1-kf48, moving - function key definitions from emx-base for consistency -TD - + correct missing final 'p' in pfkey capability of ansi.sys-old (report - by Kalle Olavi Niemitalo). - + improve test/ncurses.c 'F' test, show combining characters in color. - + quiet a false report by cppcheck in c++/cursesw.cc by eliminating - a temporary variable. - + use _nc_doalloc() rather than realloc() in a few places in ncurses - library to avoid leak in out-of-memory condition (reports by William - Egert and Martin Ettl based on cppcheck tool). - + add --with-ncurses-wrap-prefix option to test/configure (discussion - with Charles Wilson). - + use ncurses*-config scripts if available for test/configure. - + update test/aclocal.m4 and test/configure - > patches by Charles Wilson: - + modify CF_WITH_LIBTOOL configure check to allow unreleased libtool - version numbers (e.g. which include alphabetic chars, as well as - digits, after the final '.'). - + improve use of -no-undefined option for libtool by setting an - intermediate variable LT_UNDEF in the configure script, and then - using that in the libtool link-commands. - + fix an missing use of NCURSES_PUBLIC_VAR() in tinfo/MKcodes.awk - from 2009031 changes. - + improve mk-1st.awk script by writing separate cases for the - LIBTOOL_LINK command, depending on which library (ncurses, ticlib, - termlib) is to be linked. - + modify configure.in to allow broken-linker configurations, not just - enable-reentrant, to set public wrap prefix. - -20090321 - + add TICS_LIST and SHLIB_LIST to allow libtool 2.2.6 on Cygwin to - build with tic and term libraries (patch by Charles Wilson). - + add -no-undefined option to libtool for Cygwin, MinGW, U/Win and AIX - (report by Charles Wilson). - + fix definition for c++/Makefile.in's SHLIB_LIST, which did not list - the form, menu or panel libraries (patch by Charles Wilson). - + add configure option --with-wrap-prefix to allow setting the prefix - for functions used to wrap global variables to something other than - "_nc_" (discussion with Charles Wilson). - -20090314 - + modify scripts to generate ncurses*-config and pc-files to add - dependency for tinfo library (patch by Charles Wilson). - + improve comparison of program-names when checking for linked flavors - such as "reset" by ignoring the executable suffix (reports by Charles - Wilson, Samuel Thibault and Cedric Bretaudeau on Cygwin mailing - list). - + suppress configure check for static/dynamic linker flags for gcc on - Solaris 10, since gcc is confused by absence of static libc, and - does not switch back to dynamic mode before finishing the libraries - (reports by Joel Bertrand, Alan Pae). - + minor fixes to Intel compiler warning checks in configure script. - + modify _nc_leaks_tinfo() so leak-checking in test/railroad.c works. - + modify set_curterm() to make broken-linker configuration work with - changes from 20090228 (report by Charles Wilson). - -20090228 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - + modify declaration of cur_term when broken-linker is used, but - enable-reentrant is not, to match pre-5.7 (report by Charles Wilson). - -20090221 - + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). - -20090214 - + add configure script --enable-sp-funcs to enable the new set of - extended functions. - + start integrating patches by Juergen Pfeifer: - + add extended functions which specify the SCREEN pointer for several - curses functions which use the global SP (these are incomplete; - some internals work is needed to complete these). - + add special cases to configure script for MinGW port. - -20090207 - + update several configure macros from lynx changes - + append (not prepend) to CFLAGS/CPPFLAGS - + change variable from PATHSEP to PATH_SEPARATOR - + improve install-rules for pc-files (patch by Miroslav Lichvar). - + make it work with $DESTDIR - + create the pkg-config library directory if needed. - -20090124 - + modify init_pair() to allow caller to create extra color pairs beyond - the color_pairs limit, which use default colors (request by Emanuele - Giaquinta). - + add misc/terminfo.tmp and misc/*.pc to "sources" rule. - + fix typo "==" where "=" is needed in ncurses-config.in and - gen-pkgconfig.in files (Debian #512161). - -20090117 - + add -shared option to MK_SHARED_LIB when -Bsharable is used, for - *BSD's, without which "main" might be one of the shared library's - dependencies (report/analysis by Ken Dickey). - + modify waddch_literal(), updating line-pointer after a multicolumn - character is found to not fit on the current row, and wrapping is - done. Since the line-pointer was not updated, the wrapped - multicolumn character was written to the beginning of the current row - (cf: 20041023, reported by "Nick" regarding problem with ncmpc - http://musicpd.org/mantis/bug_view_page.php?bug_id=1930). - -20090110 - + add screen.Eterm terminfo entry (GenToo #124887) -TD - + modify adacurses-config to look for ".ali" files in the adalib - directory. - + correct install for Ada95, which omitted libAdaCurses.a used in - adacurses-config - + change install for adacurses-config to provide additional flavors - such as adacursesw-config, for ncursesw (GenToo #167849). - -20090105 - + remove undeveloped feature in ncurses-config.in for setting - prefix variable. - + recent change to ncurses-config.in did not take into account the - --disable-overwrite option, which sets $includedir to the - subdirectory and using just that for a -I option does not work - fix - (report by Frederic L W Meunier). - -20090104 - + modify gen-pkgconfig.in to eliminate a dependency on rpath when - deciding whether to add $LIBS to --libs output; that should be shown - for the ncurses and tinfo libraries without taking rpath into - account. - + fix an overlooked change from $AR_OPTS to $ARFLAGS in mk-1st.awk, - used in static libraries (report by Marty Jack). - -20090103 - + add a configure-time check to pick a suitable value for - CC_SHARED_OPTS for Solaris (report by Dagobert Michelsen). - + add configure --with-pkg-config and --enable-pc-files options, along - with misc/gen-pkgconfig.in which can be used to generate ".pc" files - for pkg-config (request by Jan Engelhardt). - + use $includedir symbol in misc/ncurses-config.in, add --includedir - option. - + change makefiles to use $ARFLAGS rather than $AR_OPTS, provide a - configure check to detect whether a "-" is needed before "ar" - options. - + update config.guess, config.sub from - http://savannah.gnu.org/projects/config - -20081227 - + modify mk-1st.awk to work with extra categories for tinfo library. - + modify configure script to allow building shared libraries with gcc - on AIX 5 or 6 (adapted from patch by Lital Natan). - -20081220 - + modify to omit the opaque-functions from lib_gen.o when - --disable-ext-funcs is used. - + add test/clip_printw.c to illustrate how to use printw without - wrapping. - + modify ncurses 'F' test to demo wborder_set() with colored lines. - + modify ncurses 'f' test to demo wborder() with colored lines. - -20081213 - + add check for failure to open hashed-database needed for db4.6 - (GenToo #245370). - + corrected --without-manpages option; previous change only suppressed - the auxiliary rules install.man and uninstall.man - + add case for FreeMINT to configure macro CF_XOPEN_SOURCE (patch from - GenToo #250454). - + fixes from NetBSD port at - http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/devel/ncurses/patches - patch-ac (build-fix for DragonFly) - patch-ae (use INSTALL_SCRIPT for installing misc/ncurses*-config). - + improve configure script macros CF_HEADER_PATH and CF_LIBRARY_PATH - by adding CFLAGS, CPPFLAGS and LDFLAGS, LIBS values to the - search-lists. - + correct title string for keybound manpage (patch by Frederic Culot, - OpenBSD documentation/6019), - -20081206 - + move del_curterm() call from _nc_freeall() to _nc_leaks_tinfo() to - work for progs/clear, progs/tabs, etc. - + correct buffer-size after internal resizing of wide-character - set_field_buffer(), broken in 20081018 changes (report by Mike Gran). - + add "-i" option to test/filter.c to tell it to use initscr() rather - than newterm(), to investigate report on comp.unix.programmer that - ncurses would clear the screen in that case (it does not - the issue - was xterm's alternate screen feature). - + add check in mouse-driver to disable connection if GPM returns a - zero, indicating that the connection is closed (Debian #506717, - adapted from patch by Samuel Thibault). - -20081129 - + improve a workaround in adding wide-characters, when a control - character is found. The library (cf: 20040207) uses unctrl() to - obtain a printable version of the control character, but was not - passing color or video attributes. - + improve test/ncurses.c 'a' test, using unctrl() more consistently to - display meta-characters. - + turn on _XOPEN_CURSES definition in curses.h - + add eterm-color entry (report by Vincent Lefevre) -TD - + correct use of key_name() in test/ncurses.c 'A' test, which only - displays wide-characters, not key-codes since 20070612 (report by - Ricardo Cantu). - -20081122 - + change _nc_has_mouse() to has_mouse(), reflect its use in C++ and - Ada95 (patch by Juergen Pfeifer). - + document in TO-DO an issue with Cygwin's package for GNAT (report - by Mike Dennison). - + improve error-checking of command-line options in "tabs" program. - -20081115 - + change several terminfo entries to make consistent use of ANSI - clear-all-tabs -TD - + add "tabs" program (prompted by Debian #502260). - + add configure --without-manpages option (request by Mike Frysinger). - -20081102 5.7 release for upload to ftp.gnu.org - -20081025 - + add a manpage to discuss memory leaks. - + add support for shared libraries for QNX (other than libtool, which - does not work well on that platform). - + build-fix for QNX C++ binding. - -20081018 - + build-fixes for OS/2 EMX. - + modify form library to accept control characters such as newline - in set_field_buffer(), which is compatible with Solaris (report by - Nit Khair). - + modify configure script to assume --without-hashed-db when - --disable-database is used. - + add "-e" option in ncurses/Makefile.in when generating source-files - to force earlier exit if the build environment fails unexpectedly - (prompted by patch by Adrian Bunk). - + change configure script to use CF_UTF8_LIB, improved variant of - CF_LIBUTF8. - -20081012 - + add teraterm4.59 terminfo entry, use that as primary teraterm entry, rename - original to teraterm2.3 -TD - + update "gnome" terminfo to 2.22.3 -TD - + update "konsole" terminfo to 1.6.6, needs today's fix for tic -TD - + add "aterm" terminfo -TD - + add "linux2.6.26" terminfo -TD - + add logic to tic for cancelling strings in user-defined capabilities, - overlooked til now. - -20081011 - + regenerated html documentation. - + add -m and -s options to test/keynames.c and test/key_names.c to test - the meta() function with keyname() or key_name(), respectively. - + correct return value of key_name() on error; it is null. - + document some unresolved issues for rpath and pthreads in TO-DO. - + fix a missing prototype for ioctl() on OpenBSD in tset.c - + add configure option --disable-tic-depends to make explicit whether - tic library depends on ncurses/ncursesw library, amends change from - 20080823 (prompted by Debian #501421). - -20081004 - + some build-fixes for configure --disable-ext-funcs (incomplete, but - works for C/C++ parts). - + improve configure-check for awks unable to handle large strings, e.g. - AIX 5.1 whose awk silently gives up on large printf's. - -20080927 - + fix build for --with-dmalloc by workaround for redefinition of - strndup between string.h and dmalloc.h - + fix build for --disable-sigwinch - + add environment variable NCURSES_GPM_TERMS to allow override to use - GPM on terminals other than "linux", etc. - + disable GPM mouse support when $TERM does not happen to contain - "linux", since Gpm_Open() no longer limits its assertion to terminals - that it might handle, e.g., within "screen" in xterm. - + reset mouse file-descriptor when unloading GPM library (report by - Miroslav Lichvar). - + fix build for --disable-leaks --enable-widec --with-termlib - > patch by Juergen Pfeifer: - + use improved initialization for soft-label keys in Ada95 sample code. - + discard internal symbol _nc_slk_format (unused since 20080112). - + move call of slk_paint_info() from _nc_slk_initialize() to - slk_intern_refresh(), improving initialization. - -20080925 - + fix bug in mouse code for GPM from 20080920 changes (reported in - Debian #500103, also Miroslav Lichvar). - -20080920 - + fix shared-library rules for cygwin with tic- and tinfo-libraries. - + fix a memory leak when failure to connect to GPM. - + correct check for notimeout() in wgetch() (report on linux.redhat - newsgroup by FurtiveBertie). - + add an example warning-suppression file for valgrind, - misc/ncurses.supp (based on example from Reuben Thomas) - -20080913 - + change shared-library configuration for OpenBSD, make rpath work. - + build-fixes for using libutf8, e.g., on OpenBSD 3.7 - -20080907 - + corrected fix for --enable-weak-symbols (report by Frederic L W - Meunier). - -20080906 - + corrected gcc options for building shared libraries on IRIX64. - + add configure check for awk programs unable to handle big-strings, - use that to improve the default for --enable-big-strings option. - + makefile-fixes for --enable-weak-symbols (report by Frederic L W - Meunier). - + update test/configure script. - + adapt ifdef's from library to make test/view.c build when mbrtowc() - is unavailable, e.g., with HPUX 10.20. - + add configure check for wcsrtombs, mbsrtowcs, which are used in - test/ncurses.c, and use wcstombs, mbstowcs instead if available, - fixing build of ncursew for HPUX 11.00 - -20080830 - + fixes to make Ada95 demo_panels() example work. - + modify Ada95 'rain' test program to accept keyboard commands like the - C-version. - + modify BeOS-specific ifdef's to build on Haiku (patch by Scott - Mccreary). - + add configure-check to see if the std namespace is legal for cerr - and endl, to fix a build issue with Tru64. - + consistently use NCURSES_BOOL in lib_gen.c - + filter #line's from lib_gen.c - + change delimiter in MKlib_gen.sh from '%' to '@', to avoid - substitution by IBM xlc to '#' as part of its extensions to digraphs. - + update config.guess, config.sub from - http://savannah.gnu.org/projects/config - (caveat - its maintainer removed support for older Linux systems). - -20080823 - + modify configure check for pthread library to work with OSF/1 5.1, - which uses #define's to associate its header and library. - + use pthread_mutexattr_init() for initializing pthread_mutexattr_t, - makes threaded code work on HPUX 11.23 - + fix a bug in demo_menus in freeing menus (cf: 20080804). - + modify configure script for the case where tic library is used (and - possibly renamed) to remove its dependency upon ncurses/ncursew - library (patch by Dr Werner Fink). - + correct manpage for menu_fore() which gave wrong default for - the attribute used to display a selected entry (report by Mike Gran). - + add Eterm-256color, Eterm-88color and rxvt-88color (prompted by - Debian #495815) -TD - -20080816 - + add configure option --enable-weak-symbols to turn on new feature. - + add configure-check for availability of weak symbols. - + modify linkage with pthread library to use weak symbols so that - applications not linked to that library will not use the mutexes, - etc. This relies on gcc, and may be platform-specific (patch by Dr - Werner Fink). - + add note to INSTALL to document limitation of renaming of tic library - using the --with-ticlib configure option (report by Dr Werner Fink). - + document (in manpage) why tputs does not detect I/O errors (prompted - by comments by Samuel Thibault). - + fix remaining warnings from Klocwork report. - -20080804 - + modify _nc_panelhook() data to account for a permanent memory leak. - + fix memory leaks in test/demo_menus - + fix most warnings from Klocwork tool (report by Larry Zhou). - + modify configure script CF_XOPEN_SOURCE macro to add case for - "dragonfly" from xterm #236 changes. - + modify configure script --with-hashed-db to let $LIBS override the - search for the db library (prompted by report by Samson Pierre). - -20080726 - + build-fixes for gcc 4.3.1 (changes to gnat "warnings", and C inlining - thresholds). - -20080713 - + build-fix (reports by Christian Ebert, Funda Wang). - -20080712 - + compiler-warning fixes for Solaris. - -20080705 - + use NCURSES_MOUSE_MASK() in definition of BUTTON_RELEASE(), etc., to - make those work properly with the "--enable-ext-mouse" configuration - (cf: 20050205). - + improve documentation of build-cc options in INSTALL. - + work-around a bug in gcc 4.2.4 on AIX, which does not pass the - -static/-dynamic flags properly to linker, causing test/bs to - not link. - -20080628 - + correct some ifdef's needed for the broken-linker configuration. - + make debugging library's $BAUDRATE feature work for termcap - interface. - + make $NCURSES_NO_PADDING feature work for termcap interface (prompted - by comment on FreeBSD mailing list). - + add screen.mlterm terminfo entry -TD - + improve mlterm and mlterm+pcfkeys terminfo entries -TD - -20080621 - + regenerated html documentation. - + expand manpage description of parameters for form_driver() and - menu_driver() (prompted by discussion with Adam Spragg). - + add null-pointer checks for cur_term in baudrate() and - def_shell_mode(), def_prog_mode() - + fix some memory leaks in delscreen() and wide acs. - -20080614 - + modify test/ditto.c to illustrate multi-threaded use_screen(). - + change CC_SHARED_OPTS from -KPIC to -xcode=pic32 for Solaris. - + add "-shared" option to MK_SHARED_LIB for gcc on Solaris (report - by Poor Yorick). - -20080607 - + finish changes to wgetch(), making it switch as needed to the - window's actual screen when calling wrefresh() and wgetnstr(). That - allows wgetch() to get used concurrently in different threads with - some minor restrictions, e.g., the application should not delete a - window which is being used in a wgetch(). - + simplify mutex's, combining the window- and screen-mutex's. - -20080531 - + modify wgetch() to use the screen which corresponds to its window - parameter rather than relying on SP; some dependent functions still - use SP internally. - + factor out most use of SP in lib_mouse.c, using parameter. - + add internal _nc_keyname(), replacing keyname() to associate with a - particular SCREEN rather than the global SP. - + add internal _nc_unctrl(), replacing unctrl() to associate with a - particular SCREEN rather than the global SP. - + add internal _nc_tracemouse(), replacing _tracemouse() to eliminate - its associated global buffer _nc_globals.tracemse_buf now in SCREEN. - + add internal _nc_tracechar(), replacing _tracechar() to use SCREEN in - preference to the global _nc_globals.tracechr_buf buffer. - -20080524 - + modify _nc_keypad() to make it switch temporarily as needed to the - screen which must be updated. - + wrap cur_term variable to help make _nc_keymap() thread-safe, and - always set the screen's copy of this variable in set_curterm(). - + restore curs_set() state after endwin()/refresh() (report/patch - Miroslav Lichvar) - -20080517 - + modify configure script to note that --enable-ext-colors and - --enable-ext-mouse are not experimental, but extensions from - the ncurses ABI 5. - + corrected manpage description of setcchar() (discussion with - Emanuele Giaquinta). - + fix for adding a non-spacing character at the beginning of a line - (report/patch by Miroslav Lichvar). - -20080503 - + modify screen.* terminfo entries using new screen+fkeys to fix - overridden keys in screen.rxvt (Debian #478094) -TD - + modify internal interfaces to reduce wgetch()'s dependency on the - global SP. - + simplify some loops with macros each_screen(), each_window() and - each_ripoff(). - -20080426 - + continue modifying test/ditto.c toward making it demonstrate - multithreaded use_screen(), using fifos to pass data between screens. - + fix typo in form.3x (report by Mike Gran). - -20080419 - + add screen.rxvt terminfo entry -TD - + modify tic -f option to format spaces as \s to prevent them from - being lost when that is read back in unformatted strings. - + improve test/ditto.c, using a "talk"-style layout. - -20080412 - + change test/ditto.c to use openpty() and xterm. - + add locks for copywin(), dupwin(), overlap(), overlay() on their - window parameters. - + add locks for initscr() and newterm() on updates to the SCREEN - pointer. - + finish table in curs_thread.3x manpage. - -20080405 - + begin table in curs_thread.3x manpage describing the scope of data - used by each function (or symbol) for threading analysis. - + add null-pointer checks to setsyx() and getsyx() (prompted by - discussion by Martin v. Lowis and Jeroen Ruigrok van der Werven on - python-dev2 mailing list). - -20080329 - + add null-pointer checks in set_term() and delscreen(). - + move _nc_windows into _nc_globals, since windows can be pads, which - are not associated with a particular screen. - + change use_screen() to pass the SCREEN* parameter rather than - stdscr to the callback function. - + force libtool to use tag for 'CC' in case it does not detect this, - e.g., on aix when using CC=powerpc-ibm-aix5.3.0.0-gcc - (report/patch by Michael Haubenwallner). - + override OBJEXT to "lo" when building with libtool, to work on - platforms such as AIX where libtool may use a different suffix for - the object files than ".o" (report/patch by Michael Haubenwallner). - + add configure --with-pthread option, for building with the POSIX - thread library. - -20080322 - + fill in extended-color pair two more places in wbkgrndset() and - waddch_nosync() (prompted by Sedeno's patch). - + fill in extended-color pair in _nc_build_wch() to make colors work - for wide-characters using extended-colors (patch by Alejandro R - Sedeno). - + add x/X toggles to ncurses.c C color test to test/demo - wide-characters with extended-colors. - + add a/A toggles to ncurses.c c/C color tests. - + modify test/ditto.c to use use_screen(). - + finish modifying test/rain.c to demonstrate threads. - -20080308 - + start modifying test/rain.c for threading demo. - + modify test/ncurses.c to make 'f' test accept the f/F/b/F/ toggles - that the 'F' accepts. - + modify test/worm.c to show trail in reverse-video when other threads - are working concurrently. - + fix a deadlock from improper nesting of mutexes for windowlist and - window. - -20080301 - + fixes from 20080223 resolved issue with mutexes; change to use - recursive mutexes to fix memory leak in delwin() as called from - _nc_free_and_exit(). - -20080223 - + fix a size-difference in _nc_globals which caused hanging of mutex - lock/unlock when termlib was built separately. - -20080216 - + avoid using nanosleep() in threaded configuration since that often - is implemented to suspend the entire process. - -20080209 - + update test programs to build/work with various UNIX curses for - comparisons. This was to reinvestigate statement in X/Open curses - that insnstr and winsnstr perform wrapping. None of the Unix-branded - implementations do this, as noted in manpage (cf: 20040228). - -20080203 - + modify _nc_setupscreen() to set the legacy-coding value the same - for both narrow/wide models. It had been set only for wide model, - but is needed to make unctrl() work with locale in the narrow model. - + improve waddch() and winsch() handling of EILSEQ from mbrtowc() by - using unctrl() to display illegal bytes rather than trying to append - further bytes to make up a valid sequence (reported by Andrey A - Chernov). - + modify unctrl() to check codes in 128-255 range versus isprint(). - If they are not printable, and locale was set, use a "M-" or "~" - sequence. - -20080126 - + improve threading in test/worm.c (wrap refresh calls, and KEY_RESIZE - handling). Now it hangs in napms(), no matter whether nanosleep() - or poll() or select() are used on Linux. - -20080119 - + fixes to build with --disable-ext-funcs - + add manpage for use_window and use_screen. - + add set_tabsize() and set_escdelay() functions. - -20080112 - + remove recursive-mutex definitions, finish threading demo for worm.c - + remove a redundant adjustment of lines in resizeterm.c's - adjust_window() which caused occasional misadjustment of stdscr when - softkeys were used. - -20080105 - + several improvements to terminfo entries based on xterm #230 -TD - + modify MKlib_gen.sh to handle keyname/key_name prototypes, so the - "link_test" builds properly. - + fix for toe command-line options -u/-U to ensure filename is given. - + fix allocation-size for command-line parsing in infocmp from 20070728 - (report by Miroslav Lichvar) - + improve resizeterm() by moving ripped-off lines, and repainting the - soft-keys (report by Katarina Machalkova) - + add clarification in wclear's manpage noting that the screen will be - cleared even if a subwindow is cleared (prompted by Christer Enfors - question). - + change test/ncurses.c soft-key tests to work with KEY_RESIZE. - -20071222 - + continue implementing support for threading demo by adding mutex - for delwin(). - -20071215 - + add several functions to C++ binding which wrap C functions that - pass a WINDOW* parameter (request by Chris Lee). - -20071201 - + add note about configure options needed for Berkeley database to the - INSTALL file. - + improve checks for version of Berkeley database libraries. - + amend fix for rpath to not modify LDFLAGS if the platform has no - applicable transformation (report by Christian Ebert, cf: 20071124). - -20071124 - + modify configure option --with-hashed-db to accept a parameter which - is the install-prefix of a given Berkeley Database (prompted by - pierre4d2 comments). - + rewrite wrapper for wcrtomb(), making it work on Solaris. This is - used in the form library to determine the length of the buffer needed - by field_buffer (report by Alfred Fung). - + remove unneeded window-parameter from C++ binding for wresize (report - by Chris Lee). - -20071117 - + modify the support for filesystems which do not support mixed-case to - generate 2-character (hexadecimal) codes for the lower-level of the - filesystem terminfo database (request by Michail Vidiassov). - + add configure option --enable-mixed-case, to allow overriding the - configure script's check if the filesystem supports mixed-case - filenames. - + add wresize() to C++ binding (request by Chris Lee). - + define NCURSES_EXT_FUNCS and NCURSES_EXT_COLORS in curses.h to make - it simpler to tell if the extended functions and/or colors are - declared. - -20071103 - + update memory-leak checks for changes to names.c and codes.c - + correct acsc strings in h19, z100 (patch by Benjamin C W Sittler). - -20071020 - + continue implementing support for threading demo by adding mutex - for use_window(). - + add mrxvt terminfo entry, add/fix xterm building blocks for modified - cursor keys -TD - + compile with FreeBSD "contemporary" TTY interface (patch by - Rong-En Fan). - -20071013 - + modify makefile rules to allow clear, tput and tset to be built - without libtic. The other programs (infocmp, tic and toe) rely on - that library. - + add/modify null-pointer checks in several functions for SP and/or - the WINDOW* parameter (report by Thorben Krueger). - + fixes for field_buffer() in formw library (see Redhat Bugzilla - #310071, patches by Miroslav Lichvar). - + improve performance of NCURSES_CHAR_EQ code (patch by Miroslav - Lichvar). - + update/improve mlterm and rxvt terminfo entries, e.g., for - the modified cursor- and keypad-keys -TD - -20071006 - + add code to curses.priv.h ifdef'd with NCURSES_CHAR_EQ, which - changes the CharEq() macro to an inline function to allow comparing - cchar_t struct's without comparing gaps in a possibly unpacked - memory layout (report by Miroslav Lichvar). - -20070929 - + add new functions to lib_trace.c to setup mutex's for the _tracef() - calls within the ncurses library. - + for the reentrant model, move _nc_tputs_trace and _nc_outchars into - the SCREEN. - + start modifying test/worm.c to provide threading demo (incomplete). - + separated ifdef's for some BSD-related symbols in tset.c, to make - it compile on LynxOS (report by Greg Gemmer). -20070915 - + modify Ada95/gen/Makefile to use shlib script, to simplify building - shared-library configuration on platforms lacking rpath support. - + build-fix for Ada95/src/Makefile to reflect changed dependency for - the terminal-interface-curses-aux.adb file which is now generated. - + restructuring test/worm.c, for use_window() example. - -20070908 - + add use_window() and use_screen() functions, to develop into support - for threaded library (incomplete). - + fix typos in man/curs_opaque.3x which kept the install script from - creating symbolic links to two aliases created in 20070818 (report by - Rong-En Fan). - -20070901 - + remove a spurious newline from output of html.m4, which caused links - for Ada95 html to be incorrect for the files generated using m4. - + start investigating mutex's for SCREEN manipulation (incomplete). - + minor cleanup of codes.c/names.c for --enable-const - + expand/revise "Routine and Argument Names" section of ncurses manpage - to address report by David Givens in newsgroup discussion. - + fix interaction between --without-progs/--with-termcap configure - options (report by Michail Vidiassov). - + fix typo in "--disable-relink" option (report by Michail Vidiassov). - -20070825 - + fix a sign-extension bug in infocmp's repair_acsc() function - (cf: 971004). - + fix old configure script bug which prevented "--disable-warnings" - option from working (patch by Mike Frysinger). - -20070818 - + add 9term terminal description (request by Juhapekka Tolvanen) -TD - + modify comp_hash.c's string output to avoid misinterpreting a null - "\0" followed by a digit. - + modify MKnames.awk and MKcodes.awk to support big-strings. - This only applies to the cases (broken linker, reentrant) where - the corresponding arrays are accessed via wrapper functions. - + split MKnames.awk into two scripts, eliminating the shell redirection - which complicated the make process and also the bogus timestamp file - which was introduced to fix "make -j". - + add test/test_opaque.c, test/test_arrays.c - + add wgetscrreg() and wgetparent() for applications that may need it - when NCURSES_OPAQUE is defined (prompted by Bryan Christ). - -20070812 - + amend treatment of infocmp "-r" option to retain the 1023-byte limit - unless "-T" is given (cf: 981017). - + modify comp_captab.c generation to use big-strings. - + make _nc_capalias_table and _nc_infoalias_table private accessed via - _nc_get_alias_table() since the tables are used only within the tic - library. - + modify configure script to skip Intel compiler in CF_C_INLINE. - + make _nc_info_hash_table and _nc_cap_hash_table private accessed via - _nc_get_hash_table() since the tables are used only within the tic - library. - -20070728 - + make _nc_capalias_table and _nc_infoalias_table private, accessed via - _nc_get_alias_table() since they are used only by parse_entry.c - + make _nc_key_names private since it is used only by lib_keyname.c - + add --disable-big-strings configure option to control whether - unctrl.c is generated using the big-string optimization - which may - use strings longer than supported by a given compiler. - + reduce relocation tables for tic, infocmp by changing type of - internal hash tables to short, and make those private symbols. - + eliminate large fixed arrays from progs/infocmp.c - -20070721 - + change winnstr() to stop at the end of the line (cf: 970315). - + add test/test_get_wstr.c - + add test/test_getstr.c - + add test/test_inwstr.c - + add test/test_instr.c - -20070716 - + restore a call to obtain screen-size in _nc_setupterm(), which - is used in tput and other non-screen applications via setupterm() - (Debian #433357, reported by Florent Bayle, Christian Ohm, - cf: 20070310). - -20070714 - + add test/savescreen.c test-program - + add check to trace-file open, if the given name is a directory, add - ".log" to the name and try again. - + add konsole-256color entry -TD - + add extra gcc warning options from xterm. - + minor fixes for ncurses/hashmap test-program. - + modify configure script to quiet c++ build with libtool when the - --disable-echo option is used. - + modify configure script to disable ada95 if libtool is selected, - writing a warning message (addresses FreeBSD ports/114493). - + update config.guess, config.sub - -20070707 - + add continuous-move "M" to demo_panels to help test refresh changes. - + improve fix for refresh of window on top of multi-column characters, - taking into account some split characters on left/right window - boundaries. - -20070630 - + add "widec" row to _tracedump() output to help diagnose remaining - problems with multi-column characters. - + partial fix for refresh of window on top of multi-column characters - which are partly overwritten (report by Sadrul H Chowdhury). - + ignore A_CHARTEXT bits in vidattr() and vid_attr(), in case - multi-column extension bits are passed there. - + add setlocale() call to demo_panels.c, needed for wide-characters. - + add some output flags to _nc_trace_ttymode to help diagnose a bug - report by Larry Virden, i.e., ONLCR, OCRNL, ONOCR and ONLRET, - -20070623 - + add test/demo_panels.c - + implement opaque version of setsyx() and getsyx(). - -20070612 - + corrected xterm+pcf2 terminfo modifiers for F1-F4, to match xterm - #226 -TD - + split-out key_name() from MKkeyname.awk since it now depends upon - wunctrl() which is not in libtinfo (report by Rong-En Fan). - -20070609 - + add test/key_name.c - + add stdscr cases to test/inchs.c and test/inch_wide.c - + update test/configure - + correct formatting of DEL (0x7f) in _nc_vischar(). - + null-terminate result of wunctrl(). - + add null-pointer check in key_name() (report by Andreas Krennmair, - cf: 20020901). - -20070602 - + adapt mouse-handling code from menu library in form-library - (discussion with Clive Nicolson). - + add a modification of test/dots.c, i.e., test/dots_mvcur.c to - illustrate how to use mvcur(). - + modify wide-character flavor of SetAttr() to preserve the - WidecExt() value stored in the .attr field, e.g., in case it - is overwritten by chgat (report by Aleksi Torhamo). - + correct buffer-size for _nc_viswbuf2n() (report by Aleksi Torhamo). - + build-fixes for Solaris 2.6 and 2.7 (patch by Peter O'Gorman). - -20070526 - + modify keyname() to use "^X" form only if meta() has been called, or - if keyname() is called without initializing curses, e.g., via - initscr() or newterm() (prompted by LinuxBase #1604). - + document some portability issues in man/curs_util.3x - + add a shadow copy of TTY buffer to _nc_prescreen to fix applications - broken by moving that data into SCREEN (cf: 20061230). - -20070512 - + add 'O' (wide-character panel test) in ncurses.c to demonstrate a - problem reported by Sadrul H Chowdhury with repainting parts of - a fullwidth cell. - + modify slk_init() so that if there are preceding calls to - ripoffline(), those affect the available lines for soft-keys (adapted - from patch by Clive Nicolson). - + document some portability issues in man/curs_getyx.3x - -20070505 - + fix a bug in Ada95/samples/ncurses which caused a variable to - become uninitialized in the "b" test. - + fix Ada95/gen/Makefile.in adahtml rule to account for recent - movement of files, fix a few incorrect manpage references in the - generated html. - + add Ada95 binding to _nc_freeall() as Curses_Free_All to help with - memory-checking. - + correct some functions in Ada95 binding which were using return value - from C where none was returned: idcok(), immedok() and wtimeout(). - + amend recent changes for Ada95 binding to make it build with - Cygwin's linker, e.g., with configure options - --enable-broken-linker --with-ticlib - -20070428 - + add a configure check for gcc's options for inlining, use that to - quiet a warning message where gcc's default behavior changed from - 3.x to 4.x. - + improve warning message when checking if GPM is linked to curses - library by not warning if its use of "wgetch" is via a weak symbol. - + add loader options when building with static libraries to ensure that - an installed shared library for ncurses does not conflict. This is - reported as problem with Tru64, but could affect other platforms - (report Martin Mokrejs, analysis by Tim Mooney). - + fix build on cygwin after recent ticlib/termlib changes, i.e., - + adjust TINFO_SUFFIX value to work with cygwin's dll naming - + revert a change from 20070303 which commented out dependency of - SHLIB_LIST in form/menu/panel/c++ libraries. - + fix initialization of ripoff stack pointer (cf: 20070421). - -20070421 - + move most static variables into structures _nc_globals and - _nc_prescreen, to simplify storage. - + add/use configure script macro CF_SIG_ATOMIC_T, use the corresponding - type for data manipulated by signal handlers (prompted by comments - in mailing.openbsd.bugs newsgroup). - + modify CF_WITH_LIBTOOL to allow one to pass options such as -static - to the libtool create- and link-operations. - -20070414 - + fix whitespace in curs_opaque.3x which caused a spurious ';' in - the installed aliases (report by Peter Santoro). - + fix configure script to not try to generate adacurses-config when - Ada95 tree is not built. - -20070407 - + add man/curs_legacy.3x, man/curs_opaque.3x - + fix acs_map binding for Ada95 when --enable-reentrant is used. - + add adacurses-config to the Ada95 install, based on version from - FreeBSD port, in turn by Juergen Pfeifer in 2000 (prompted by - comment on comp.lang.ada newsgroup). - + fix includes in c++ binding to build with Intel compiler - (cf: 20061209). - + update install rule in Ada95 to use mkdirs.sh - > other fixes prompted by inspection for Coverity report: - + modify ifdef's for c++ binding to use try/catch/throw statements - + add a null-pointer check in tack/ansi.c request_cfss() - + fix a memory leak in ncurses/base/wresize.c - + corrected check for valid memu/meml capabilities in - progs/dump_entry.c when handling V_HPUX case. - > fixes based on Coverity report: - + remove dead code in test/bs.c - + remove dead code in test/demo_defkey.c - + remove an unused assignment in progs/infocmp.c - + fix a limit check in tack/ansi.c tools_charset() - + fix tack/ansi.c tools_status() to perform the VT320/VT420 - tests in request_cfss(). The function had exited too soon. - + fix a memory leak in tic.c's make_namelist() - + fix a couple of places in tack/output.c which did not check for EOF. - + fix a loop-condition in test/bs.c - + add index checks in lib_color.c for color palettes - + add index checks in progs/dump_entry.c for version_filter() handling - of V_BSD case. - + fix a possible null-pointer dereference in copywin() - + fix a possible null-pointer dereference in waddchnstr() - + add a null-pointer check in _nc_expand_try() - + add a null-pointer check in tic.c's make_namelist() - + add a null-pointer check in _nc_expand_try() - + add null-pointer checks in test/cardfile.c - + fix a double-free in ncurses/tinfo/trim_sgr0.c - + fix a double-free in ncurses/base/wresize.c - + add try/catch block to c++/cursesmain.cc - -20070331 - + modify Ada95 binding to build with --enable-reentrant by wrapping - global variables (bug: acs_map does not yet work). - + modify Ada95 binding to use the new access-functions, allowing it - to build/run when NCURSES_OPAQUE is set. - + add access-functions and macros to return properties of the WINDOW - structure, e.g., when NCURSES_OPAQUE is set. - + improved install-sh's quoting. - + use mkdirs.sh rather than mkinstalldirs, e.g., to use fixes from - other programs. - -20070324 - + eliminate part of the direct use of WINDOW data from Ada95 interface. - + fix substitutions for termlib filename to make configure option - --enable-reentrant work with --with-termlib. - + change a constructor for NCursesWindow to allow compiling with - NCURSES_OPAQUE set, since we cannot pass a reference to - an opaque pointer. - -20070317 - + ignore --with-chtype=unsigned since unsigned is always added to - the type in curses.h; do the same for --with-mmask-t. - + change warning regarding --enable-ext-colors and wide-character - in the configure script to an error. - + tweak error message in CF_WITH_LIBTOOL to distinguish other programs - such as Darwin's libtool program (report by Michail Vidiassov) - + modify edit_man.sh to allow for multiple substitutions per line. - + set locale in misc/ncurses-config.in since it uses a range - + change permissions libncurses++.a install (report by Michail - Vidiassov). - + corrected length of temporary buffer in wide-character version - of set_field_buffer() (related to report by Bryan Christ). - -20070311 - + fix mk-1st.awk script install_shlib() function, broken in 20070224 - changes for cygwin (report by Michail Vidiassov). - -20070310 - + increase size of array in _nc_visbuf2n() to make "tic -v" work - properly in its similar_sgr() function (report/analysis by Peter - Santoro). - + add --enable-reentrant configure option for ongoing changes to - implement a reentrant version of ncurses: - + libraries are suffixed with "t" - + wrap several global variables (curscr, newscr, stdscr, ttytype, - COLORS, COLOR_PAIRS, COLS, ESCDELAY, LINES and TABSIZE) as - functions returning values stored in SCREEN or cur_term. - + move some initialization (LINES, COLS) from lib_setup.c, - i.e., setupterm() to _nc_setupscreen(), i.e., newterm(). - -20070303 - + regenerated html documentation. - + add NCURSES_OPAQUE symbol to curses.h, will use to make structs - opaque in selected configurations. - + move the chunk in lib_acs.c which resets acs capabilities when - running on a terminal whose locale interferes with those into - _nc_setupscreen(), so the libtinfo/libtinfow files can be made - identical (requested by Miroslav Lichvar). - + do not use configure variable SHLIB_LIBS for building libraries - outside the ncurses directory, since that symbol is customized - only for that directory, and using it introduces an unneeded - dependency on libdl (requested by Miroslav Lichvar). - + modify mk-1st.awk so the generated makefile rules for linking or - installing shared libraries do not first remove the library, in - case it is in use, e.g., libncurses.so by /bin/sh (report by Jeff - Chua). - + revised section "Using NCURSES under XTERM" in ncurses-intro.html - (prompted by newsgroup comment by Nick Guenther). - -20070224 - + change internal return codes of _nc_wgetch() to check for cases - where KEY_CODE_YES should be returned, e.g., if a KEY_RESIZE was - ungetch'd, and read by wget_wch(). - + fix static-library build broken in 20070217 changes to remove "-ldl" - (report by Miroslav Lichvar). - + change makefile/scripts for cygwin to allow building termlib. - + use Form_Hook in manpages to match form.h - + use Menu_Hook in manpages, as well as a few places in menu.h - + correct form- and menu-manpages to use specific Field_Options, - Menu_Options and Item_Options types. - + correct prototype for _tracechar() in manpage (cf: 20011229). - + correct prototype for wunctrl() in manpage. - -20070217 - + fixes for $(TICS_LIST) in ncurses/Makefile (report by Miroslav - Lichvar). - + modify relinking of shared libraries to apply only when rpath is - enabled, and add --disable-relink option which can be used to - disable the feature altogether (reports by Michail Vidiassov, - Adam J Richter). - + fix --with-termlib option for wide-character configuration, stripping - the "w" suffix in one place (report by Miroslav Lichvar). - + remove "-ldl" from some library lists to reduce dependencies in - programs (report by Miroslav Lichvar). - + correct description of --enable-signed-char in configure --help - (report by Michail Vidiassov). - + add pattern for GNU/kFreeBSD configuration to CF_XOPEN_SOURCE, - which matches an earlier change to CF_SHARED_OPTS, from xterm #224 - fixes. - + remove "${DESTDIR}" from -install_name option used for linking - shared libraries on Darwin (report by Michail Vidiassov). - -20070210 - + add test/inchs.c, test/inch_wide.c, to test win_wchnstr(). - + remove libdl from library list for termlib (report by Miroslav - Lichvar). - + fix configure.in to allow --without-progs --with-termlib (patch by - Miroslav Lichvar). - + modify win_wchnstr() to ensure that only a base cell is returned - for each multi-column character (prompted by report by Wei Kong - regarding change in mvwin_wch() cf: 20041023). - -20070203 - + modify fix_wchnstr() in form library to strip attributes (and color) - from the cchar_t array (field cells) read from a field's window. - Otherwise, when copying the field cells back to the window, the - associated color overrides the field's background color (report by - Ricardo Cantu). - + improve tracing for form library, showing created forms, fields, etc. - + ignore --enable-rpath configure option if --with-shared was omitted. - + add _nc_leaks_tinfo(), _nc_free_tic(), _nc_free_tinfo() entrypoints - to allow leak-checking when both tic- and tinfo-libraries are built. - + drop CF_CPP_VSCAN_FUNC macro from configure script, since C++ binding - no longer relies on it. - + disallow combining configure script options --with-ticlib and - --enable-termcap (report by Rong-En Fan). - + remove tack from ncurses tree. - -20070128 - + fix typo in configure script that broke --with-termlib option - (report by Rong-En Fan). - -20070127 - + improve fix for FreeBSD gnu/98975, to allow for null pointer passed - to tgetent() (report by Rong-en Fan). - + update tack/HISTORY and tack/README to tell how to build it after - it is removed from the ncurses tree. - + fix configure check for libtool's version to trim blank lines - (report by sci-fi@hush.ai). - + review/eliminate other original-file artifacts in cursesw.cc, making - its license consistent with ncurses. - + use ncurses vw_scanw() rather than reading into a fixed buffer in - the c++ binding for scanw() methods (prompted by report by Nuno Dias). - + eliminate fixed-buffer vsprintf() calls in c++ binding. - -20070120 - + add _nc_leaks_tic() to separate leak-checking of tic library from - term/ncurses libraries, and thereby eliminate a library dependency. - + fix test/mk-test.awk to ignore blank lines. - + correct paths in include/headers, for --srcdir (patch by Miroslav - Lichvar). - -20070113 - + add a break-statement in misc/shlib to ensure that it exits on the - _first_ matched directory (report by Paul Novak). - + add tack/configure, which can be used to build tack outside the - ncurses build-tree. - + add --with-ticlib option, to build/install the tic-support functions - in a separate library (suggested by Miroslav Lichvar). - -20070106 - + change MKunctrl.awk to reduce relocation table for unctrl.o - + change MKkeyname.awk to reduce relocation table for keyname.o - (patch by Miroslav Lichvar). - -20061230 - + modify configure check for libtool's version to trim blank lines - (report by sci-fi@hush.ai). - + modify some modules to allow them to be reentrant if _REENTRANT is - defined: lib_baudrate.c, resizeterm.c (local data only) - + eliminate static data from some modules: add_tries.c, hardscroll.c, - lib_ttyflags.c, lib_twait.c - + improve manpage install to add aliases for the transformed program - names, e.g., from --program-prefix. - + used linklint to verify links in the HTML documentation, made fixes - to manpages as needed. - + fix a typo in curs_mouse.3x (report by William McBrine). - + fix install-rule for ncurses5-config to make the bin-directory. - -20061223 - + modify configure script to omit the tic (terminfo compiler) support - from ncurses library if --without-progs option is given. - + modify install rule for ncurses5-config to do this via "install.libs" - + modify shared-library rules to allow FreeBSD 3.x to use rpath. - + update config.guess, config.sub - -20061217 5.6 release for upload to ftp.gnu.org - -20061217 - + add ifdef's for for HPUX, which has the corresponding - definitions in . - + revert the va_copy() change from 20061202, since it was neither - correct nor portable. - + add $(LOCAL_LIBS) definition to progs/Makefile.in, needed for - rpath on Solaris. - + ignore wide-acs line-drawing characters that wcwidth() claims are - not one-column. This is a workaround for Solaris' broken locale - support. - -20061216 - + modify configure --with-gpm option to allow it to accept a parameter, - i.e., the name of the dynamic GPM library to load via dlopen() - (requested by Bryan Henderson). - + add configure option --with-valgrind, changes from vile. - + modify configure script AC_TRY_RUN and AC_TRY_LINK checks to use - 'return' in preference to 'exit()'. - -20061209 - + change default for --with-develop back to "no". - + add XTABS to tracing of TTY bits. - + updated autoconf patch to ifdef-out the misfeature which declares - exit() for configure tests. This fixes a redefinition warning on - Solaris. - + use ${CC} rather than ${LD} in shared library rules for IRIX64, - Solaris to help ensure that initialization sections are provided for - extra linkage requirements, e.g., of C++ applications (prompted by - comment by Casper Dik in newsgroup). - + rename "$target" in CF_MAN_PAGES to make it easier to distinguish - from the autoconf predefined symbol. There was no conflict, - since "$target" was used only in the generated edit_man.sh file, - but SuSE's rpm package contains a patch. - -20061202 - + update man/term.5 to reflect extended terminfo support and hashed - database configuration. - + updates for test/configure script. - + adapted from SuSE rpm package: - + remove long-obsolete workaround for broken-linker which declared - cur_term in tic.c - + improve error recovery in PUTC() macro when wcrtomb() does not - return usable results for an 8-bit character. - + patches from rpm package (SuSE): - + use va_copy() in extra varargs manipulation for tracing version - of printw, etc. - + use a va_list rather than a null in _nc_freeall()'s call to - _nc_printf_string(). - + add some see-also references in manpages to show related - wide-character functions (suggested by Claus Fischer). - -20061125 - + add a check in lib_color.c to ensure caller does not increase COLORS - above max_colors, which is used as an array index (discussion with - Simon Sasburg). - + add ifdef's allowing ncurses to be built with tparm() using either - varargs (the existing status), or using a fixed-parameter list (to - match X/Open). - -20061104 - + fix redrawing of windows other than stdscr using wredrawln() by - touching the corresponding rows in curscr (discussion with Dan - Gookin). - + add test/redraw.c - + add test/echochar.c - + review/cleanup manpage descriptions of error-returns for form- and - menu-libraries (prompted by FreeBSD docs/46196). - -20061028 - + add AUTHORS file -TD - + omit the -D options from output of the new config script --cflags - option (suggested by Ralf S Engelschall). - + make NCURSES_INLINE unconditionally defined in curses.h - -20061021 - + revert change to accommodate bash 3.2, since that breaks other - platforms, e.g., Solaris. - + minor fixes to NEWS file to simplify scripting to obtain list of - contributors. - + improve some shared-library configure scripting for Linux, FreeBSD - and NetBSD to make "--with-shlib-version" work. - + change configure-script rules for FreeBSD shared libraries to allow - for rpath support in versions past 3. - + use $(DESTDIR) in makefile rules for installing/uninstalling the - package config script (reports/patches by Christian Wiese, - Ralf S Engelschall). - + fix a warning in the configure script for NetBSD 2.0, working around - spurious blanks embedded in its ${MAKEFLAGS} symbol. - + change test/Makefile to simplify installing test programs in a - different directory when --enable-rpath is used. - -20061014 - + work around bug in bash 3.2 by adding extra quotes (Jim Gifford). - + add/install a package config script, e.g., "ncurses5-config" or - "ncursesw5-config", according to configuration options. - -20061007 - + add several GNU Screen terminfo variations with 16- and 256-colors, - and status line (Alain Bench). - + change the way shared libraries (other than libtool) are installed. - Rather than copying the build-tree's libraries, link the shared - objects into the install directory. This makes the --with-rpath - option work except with $(DESTDIR) (cf: 20000930). - -20060930 - + fix ifdef in c++/internal.h for QNX 6.1 - + test-compiled with (old) egcs-1.1.2, modified configure script to - not unset the $CXX and related variables which would prevent this. - + fix a few terminfo.src typos exposed by improvments to "-f" option. - + improve infocmp/tic "-f" option formatting. - -20060923 - + make --disable-largefile option work (report by Thomas M Ott). - + updated html documentation. - + add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD - + minor improvements to rxvt+pcfkeys -TD - -20060916 - + move static data from lib_mouse.c into SCREEN struct. - + improve ifdef's for _POSIX_VDISABLE in tset to work with Mac OS X - (report by Michail Vidiassov). - + modify CF_PATH_SYNTAX to ensure it uses the result from --prefix - option (from lynx changes) -TD - + adapt AC_PROG_EGREP check, noting that this is likely to be another - place aggravated by POSIXLY_CORRECT. - + modify configure check for awk to ensure that it is found (prompted - by report by Christopher Parker). - + update config.sub - -20060909 - + add kon, kon2 and jfbterm terminfo entry (request by Till Maas) -TD - + remove invis capability from klone+sgr, mainly used by linux entry, - since it does not really do this -TD - -20060903 - + correct logic in wadd_wch() and wecho_wch(), which did not guard - against passing the multi-column attribute into a call on waddch(), - e.g., using data returned by win_wch() (cf: 20041023) - (report by Sadrul H Chowdhury). - -20060902 - + fix kterm's acsc string -TD - + fix for change to tic/infocmp in 20060819 to ensure no blank is - embedded into a termcap description. - + workaround for 20050806 ifdef's change to allow visbuf.c to compile - when using --with-termlib --with-trace options. - + improve tgetstr() by making the return value point into the user's - buffer, if provided (patch by Miroslav Lichvar (see Redhat Bugzilla - #202480)). - + correct libraries needed for foldkeys (report by Stanislav Ievlev) - -20060826 - + add terminfo entries for xfce terminal (xfce) and multi gnome - terminal (mgt) -TD - + add test/foldkeys.c - -20060819 - + modify tic and infocmp to avoid writing trailing blanks on terminfo - source output (Debian #378783). - + modify configure script to ensure that if the C compiler is used - rather than the loader in making shared libraries, the $(CFLAGS) - variable is also used (Redhat Bugzilla #199369). - + port hashed-db code to db2 and db3. - + fix a bug in tgetent() from 20060625 and 20060715 changes - (patch/analysis by Miroslav Lichvar (see Redhat Bugzilla #202480)). - -20060805 - + updated xterm function-keys terminfo to match xterm #216 -TD - + add configure --with-hashed-db option (tested only with FreeBSD 6.0, - e.g., the db 1.8.5 interface). - -20060729 - + modify toe to access termcap data, e.g., via cgetent() functions, - or as a text file if those are not available. - + use _nc_basename() in tset to improve $SHELL check for csh/sh. - + modify _nc_read_entry() and _nc_read_termcap_entry() so infocmp, - can access termcap data when the terminfo database is disabled. - -20060722 - + widen the test for xterm kmous a little to allow for other strings - than \E[M, e.g., for xterm-sco functionality in xterm. - + update xterm-related terminfo entries to match xterm patch #216 -TD - + update config.guess, config.sub - -20060715 - + fix for install-rule in Ada95 to add terminal_interface.ads - and terminal_interface.ali (anonymous posting in comp.lang.ada). - + correction to manpage for getcchar() (report by William McBrine). - + add test/chgat.c - + modify wchgat() to mark updated cells as changed so a refresh will - repaint those cells (comments by Sadrul H Chowdhury and William - McBrine). - + split up dependency of names.c and codes.c in ncurses/Makefile to - work with parallel make (report/analysis by Joseph S Myers). - + suppress a warning message (which is ignored) for systems without - an ldconfig program (patch by Justin Hibbits). - + modify configure script --disable-symlinks option to allow one to - disable symlink() in tic even when link() does not work (report by - Nigel Horne). - + modify MKfallback.sh to use tic -x when constructing fallback tables - to allow extended capabilities to be retrieved from a fallback entry. - + improve leak-checking logic in tgetent() from 20060625 to ensure that - it does not free the current screen (report by Miroslav Lichvar). - -20060708 - + add a check for _POSIX_VDISABLE in tset (NetBSD #33916). - + correct _nc_free_entries() and related functions used for memory leak - checking of tic. - -20060701 - + revert a minor change for magic-cookie support from 20060513, which - caused unexpected reset of attributes, e.g., when resizing test/view - in color mode. - + note in clear manpage that the program ignores command-line - parameters (prompted by Debian #371855). - + fixes to make lib_gen.c build properly with changes to the configure - --disable-macros option and NCURSES_NOMACROS (cf: 20060527) - + update/correct several terminfo entries -TD - + add some notes regarding copyright to terminfo.src -TD - -20060625 - + fixes to build Ada95 binding with gnat-4.1.0 - + modify read_termtype() so the term_names data is always allocated as - part of the str_table, a better fix for a memory leak (cf: 20030809). - + reduce memory leaks in repeated calls to tgetent() by remembering the - last TERMINAL* value allocated to hold the corresponding data and - freeing that if the tgetent() result buffer is the same as the - previous call (report by "Matt" for FreeBSD gnu/98975). - + modify tack to test extended capability function-key strings. - + improved gnome terminfo entry (GenToo #122566). - + improved xterm-256color terminfo entry (patch by Alain Bench). - -20060617 - + fix two small memory leaks related to repeated tgetent() calls - with TERM=screen (report by "Matt" for FreeBSD gnu/98975). - + add --enable-signed-char to simplify Debian package. - + reduce name-pollution in term.h by removing #define's for HAVE_xxx - symbols. - + correct typo in curs_terminfo.3x (Debian #369168). - -20060603 - + enable the mouse in test/movewindow.c - + improve a limit-check in frm_def.c (John Heasley). - + minor copyright fixes. - + change configure script to produce test/Makefile from data file. - -20060527 - + add a configure option --enable-wgetch-events to enable - NCURSES_WGETCH_EVENTS, and correct the associated loop-logic in - lib_twait.c (report by Bernd Jendrissek). - + remove include/nomacros.h from build, since the ifdef for - NCURSES_NOMACROS makes that obsolete. - + add entrypoints for some functions which were only provided as macros - to make NCURSES_NOMACROS ifdef work properly: getcurx(), getcury(), - getbegx(), getbegy(), getmaxx(), getmaxy(), getparx() and getpary(), - wgetbkgrnd(). - + provide ifdef for NCURSES_NOMACROS which suppresses most macro - definitions from curses.h, i.e., where a macro is defined to override - a function to improve performance. Allowing a developer to suppress - these definitions can simplify some application (discussion with - Stanislav Ievlev). - + improve description of memu/meml in terminfo manpage. - -20060520 - + if msgr is false, reset video attributes when doing an automargin - wrap to the next line. This makes the ncurses 'k' test work properly - for hpterm. - + correct caching of keyname(), which was using only half of its table. - + minor fixes to memory-leak checking. - + make SCREEN._acs_map and SCREEN._screen_acs_map pointers rather than - arrays, making ACS_LEN less visible to applications (suggested by - Stanislav Ievlev). - + move chunk in SCREEN ifdef'd for USE_WIDEC_SUPPORT to the end, so - _screen_acs_map will have the same offset in both ncurses/ncursesw, - making the corresponding tinfo/tinfow libraries binary-compatible - (cf: 20041016, report by Stanislav Ievlev). - -20060513 - + improve debug-tracing for EmitRange(). - + change default for --with-develop to "yes". Add NCURSES_NO_HARD_TABS - and NCURSES_NO_MAGIC_COOKIE environment variables to allow runtime - suppression of the related hard-tabs and xmc-glitch features. - + add ncurses version number to top-level manpages, e.g., ncurses, tic, - infocmp, terminfo as well as form, menu, panel. - + update config.guess, config.sub - + modify ncurses.c to work around a bug in NetBSD 3.0 curses - (field_buffer returning null for a valid field). The 'r' test - appears to not work with that configuration since the new_fieldtype() - function is broken in that implementation. - -20060506 - + add hpterm-color terminfo entry -TD - + fixes to compile test-programs with HPUX 11.23 - -20060422 - + add copyright notices to files other than those that are generated, - data or adapted from pdcurses (reports by William McBrine, David - Taylor). - + improve rendering on hpterm by not resetting attributes at the end - of doupdate() if the terminal has the magic-cookie feature (report - by Bernd Rieke). - + add 256color variants of terminfo entries for programs which are - reported to implement this feature -TD - -20060416 - + fix typo in change to NewChar() macro from 20060311 changes, which - broke tab-expansion (report by Frederic L W Meunier). - -20060415 - + document -U option of tic and infocmp. - + modify tic/infocmp to suppress smacs/rmacs when acsc is suppressed - due to size limit, e.g., converting to termcap format. Also - suppress them if the output format does not contain acsc and it - was not VT100-like, i.e., a one-one mapping (Novell #163715). - + add configure check to ensure that SIGWINCH is defined on platforms - such as OS X which exclude that when _XOPEN_SOURCE, etc., are - defined (report by Nicholas Cole) - -20060408 - + modify write_object() to not write coincidental extensions of an - entry made due to it being referenced in a use= clause (report by - Alain Bench). - + another fix for infocmp -i option, which did not ensure that some - escape sequences had comparable prefixes (report by Alain Bench). - -20060401 - + improve discussion of init/reset in terminfo and tput manpages - (report by Alain Bench). - + use is3 string for a fallback of rs3 in the reset program; it was - using is2 (report by Alain Bench). - + correct logic for infocmp -i option, which did not account for - multiple digits in a parameter (cf: 20040828) (report by Alain - Bench). - + move _nc_handle_sigwinch() to lib_setup.c to make --with-termlib - option work after 20060114 changes (report by Arkadiusz Miskiewicz). - + add copyright notices to test-programs as needed (report by William - McBrine). - -20060318 - + modify ncurses.c 'F' test to combine the wide-characters with color - and/or video attributes. - + modify test/ncurses to use CTL/Q or ESC consistently for exiting - a test-screen (some commands used 'x' or 'q'). - -20060312 - + fix an off-by-one in the scrolling-region change (cf_ 20060311). - -20060311 - + add checks in waddchnstr() and wadd_wchnstr() to stop copying when - a null character is found (report by Igor Bogomazov). - + modify progs/Makefile.in to make "tput init" work properly with - cygwin, i.e., do not pass a ".exe" in the reference string used - in check_aliases (report by Samuel Thibault). - + add some checks to ensure current position is within scrolling - region before scrolling on a new line (report by Dan Gookin). - + change some NewChar() usage to static variables to work around - stack garbage introduced when cchar_t is not packed (Redhat #182024). - -20060225 - + workarounds to build test/movewindow with PDcurses 2.7. - + fix for nsterm-16color entry (patch by Alain Bench). - + correct a typo in infocmp manpage (Debian #354281). - -20060218 - + add nsterm-16color entry -TD - + updated mlterm terminfo entry -TD - + remove 970913 feature for copying subwindows as they are moved in - mvwin() (discussion with Bryan Christ). - + modify test/demo_menus.c to demonstrate moving a menu (both the - window and subwindow) using shifted cursor-keys. - + start implementing recursive mvwin() in movewindow.c (incomplete). - + add a fallback definition for GCC_PRINTFLIKE() in test.priv.h, - for movewindow.c (report by William McBrine). - + add help-message to test/movewindow.c - -20060211 - + add test/movewindow.c, to test mvderwin(). - + fix ncurses soft-key test so color changes are shown immediately - rather than delayed. - + modify ncurses soft-key test to hide the keys when exiting the test - screen. - + fixes to build test programs with PDCurses 2.7, e.g., its headers - rely on autoconf symbols, and it declares stubs for nonfunctional - terminfo and termcap entrypoints. - -20060204 - + improved test/configure to build test/ncurses on HPUX 11 using the - vendor curses. - + documented ALTERNATE CONFIGURATIONS in the ncurses manpage, for the - benefit of developers who do not read INSTALL. - -20060128 - + correct form library Window_To_Buffer() change (cf: 20040516), which - should ignore the video attributes (report by Ricardo Cantu). - -20060121 - + minor fixes to xmc-glitch experimental code: - + suppress line-drawing - + implement max_attributes - tested with xterm. - + minor fixes for the database iterator. - + fix some buffer limits in c++ demo (comment by Falk Hueffner in - Debian #348117). - -20060114 - + add toe -a option, to show all databases. This uses new private - interfaces in the ncurses library for iterating through the list of - databases. - + fix toe from 20000909 changes which made it not look at - $HOME/.terminfo - + make toe's -v option parameter optional as per manpage. - + improve SIGWINCH handling by postponing its effect during newterm(), - etc., when allocating screens. - -20060111 - + modify wgetnstr() to return KEY_RESIZE if a sigwinch occurs. Use - this in test/filter.c - + fix an error in filter() modification which caused some applications - to fail. - -20060107 - + check if filter() was called when getting the screensize. Keep it - at 1 if so (based on Redhat #174498). - + add extension nofilter(). - + refined the workaround for ACS mapping. - + make ifdef's consistent in curses.h for the extended colors so the - header file can be used for the normal curses library. The header - file installed for extended colors is a variation of the - wide-character configuration (report by Frederic L W Meunier). - -20051231 - + add a workaround to ACS mapping to allow applications such as - test/blue.c to use the "PC ROM" characters by masking them with - A_ALTCHARSET. This worked up til 5.5, but was lost in the revision - of legacy coding (report by Michael Deutschmann). - + add a null-pointer check in the wide-character version of - calculate_actual_width() (report by Victor Julien). - + improve test/ncurses 'd' (color-edit) test by allowing the RGB - values to be set independently (patch by William McBrine). - + modify test/configure script to allow building test programs with - PDCurses/X11. - + modified test programs to allow some to work with NetBSD curses. - Several do not because NetBSD curses implements a subset of X/Open - curses, and also lacks much of SVr4 additions. But it's enough for - comparison. - + update config.guess and config.sub - -20051224 - + use BSD-specific fix for return-value from cgetent() from CVS where - an unknown terminal type would be reportd as "database not found". - + make tgetent() return code more readable using new symbols - TGETENT_YES, etc. - + remove references to non-existent "tctest" program. - + remove TESTPROGS from progs/Makefile.in (it was referring to code - that was never built in that directory). - + typos in curs_addchstr.3x, some doc files (noticed in OpenBSD CVS). - -20051217 - + add use_legacy_coding() function to support lynx's font-switching - feature. - + fix formatting in curs_termcap.3x (report by Mike Frysinger). - + modify MKlib_gen.sh to change preprocessor-expanded _Bool back to - bool. - -20051210 - + extend test/ncurses.c 's' (overlay window) test to exercise overlay(), - overwrite() and copywin() with different combinations of colors and - attributes (including background color) to make it easy to see the - effect of the different functions. - + corrections to menu/m_global.c for wide-characters (report by - Victor Julien). - -20051203 - + add configure option --without-dlsym, allowing developers to - configure GPM support without using dlsym() (discussion with Michael - Setzer). - + fix wins_nwstr(), which did not handle single-column non-8bit codes - (Debian #341661). - -20051126 - + move prototypes for wide-character trace functions from curses.tail - to curses.wide to avoid accidental reference to those if - _XOPEN_SOURCE_EXTENDED is defined without ensuring that is - included. - + add/use NCURSES_INLINE definition. - + change some internal functions to use int/unsigned rather than the - short equivalents. - -20051119 - + remove a redundant check in lib_color.c (Debian #335655). - + use ld's -search_paths_first option on Darwin to work around odd - search rules on that platform (report by Christian Gennerat, analysis - by Andrea Govoni). - + remove special case for Darwin in CF_XOPEN_SOURCE configure macro. - + ignore EINTR in tcgetattr/tcsetattr calls (Debian #339518). - + fix several bugs in test/bs.c (patch by Stephen Lindholm). - -20051112 - + other minor fixes to cygwin based on tack -TD - + correct smacs in cygwin (Debian #338234, report by Baurzhan - Ismagulov, who noted that it was fixed in Cygwin). - -20051029 - + add shifted up/down arrow codes to xterm-new as kind/kri strings -TD - + modify wbkgrnd() to avoid clearing the A_CHARTEXT attribute bits - since those record the state of multicolumn characters (Debian - #316663). - + modify werase to clear multicolumn characters that extend into - a derived window (Debian #316663). - -20051022 - + move assignment from environment variable ESCDELAY from initscr() - down to newterm() so the environment variable affects timeouts for - terminals opened with newterm() as well. - + fix a memory leak in keyname(). - + add test/demo_altkeys.c - + modify test/demo_defkey.c to exit from loop via 'q' to allow - leak-checking, as well as fix a buffer size in winnstr() call. - -20051015 - + correct order of use-clauses in rxvt-basic entry which made codes for - f1-f4 vt100-style rather than vt220-style (report by Gabor Z Papp). - + suppress configure check for gnatmake if Ada95/Makefile.in is not - found. - + correct a typo in configure --with-bool option for the case where - --without-cxx is used (report by Daniel Jacobowitz). - + add a note to INSTALL's discussion of --with-normal, pointing out - that one may wish to use --without-gpm to ensure a completely - static link (prompted by report by Felix von Leitner). - -20051010 5.5 release for upload to ftp.gnu.org - -20051008 - + document in demo_forms.c some portability issues. - -20051001 - + document side-effect of werase() which sets the cursor position. - + save/restore the current position in form field editing to make - overlay mode work. - -20050924 - + correct header dependencies in progs, allowing parallel make (report - by Daniel Jacobowitz). - + modify CF_BUILD_CC to ensure that pre-setting $BUILD_CC overrides - the configure check for --with-build-cc (report by Daniel Jacobowitz). - + modify CF_CFG_DEFAULTS to not use /usr as the default prefix for - NetBSD. - + update config.guess and config.sub from - http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ - -20050917 - + modify sed expression which computes path for /usr/lib/terminfo - symbolic link in install to ensure that it does not change unexpected - levels of the path (Gentoo #42336). - + modify default for --disable-lp64 configure option to reduce impact - on existing 64-bit builds. Enabling the _LP64 option may change the - size of chtype and mmask_t. However, for ABI 6, it is enabled by - default (report by Mike Frysinger). - + add configure script check for --enable-ext-mouse, bump ABI to 6 by - default if it is used. - + improve configure script logic for bumping ABI to omit this if the - --with-abi-version option was used. - + update address for Free Software Foundation in tack's source. - + correct wins_wch(), which was not marking the filler-cells of - multi-column characters (cf: 20041023). - -20050910 - + modify mouse initialization to ensure that Gpm_Open() is called only - once. Otherwise GPM gets confused in its initialization of signal - handlers (Debian #326709). - -20050903 - + modify logic for backspacing in a multiline form field to ensure that - it works even when the preceding line is full (report by Frank van - Vugt). - + remove comment about BUGS section of ncurses manpage (Debian #325481) - -20050827 - + document some workarounds for shared and libtool library - configurations in INSTALL (see --with-shared and --with-libtool). - + modify CF_GCC_VERSION and CF_GXX_VERSION macros to accommodate - cross-compilers which emit the platform name in their version - message, e.g., - arm-sa1100-linux-gnu-g++ (GCC) 4.0.1 - (report by Frank van Vugt). - -20050820 - + start updating documentation for upcoming 5.5 release. - + fix to make libtool and libtinfo work together again (cf: 20050122). - + fixes to allow building traces into libtinfo - + add debug trace to tic that shows if/how ncurses will write to the - lower corner of a terminal's screen. - + update llib-l* files. - -20050813 - + modify initializers in c++ binding to build with old versions of g++. - + improve special case for 20050115 repainting fix, ensuring that if - the first changed cell is not a character that the range to be - repainted is adjusted to start at a character's beginning (Debian - #316663). - -20050806 - + fixes to build on QNX 6.1 - + improve configure script checks for Intel 9.0 compiler. - + remove #include's for libc.h (obsolete). - + adjust ifdef's in curses.priv.h so that when cross-compiling to - produce comp_hash and make_keys, no dependency on wchar.h is needed. - That simplifies the build-cppflags (report by Frank van Vugt). - + move modules related to key-binding into libtinfo to fix linkage - problem caused by 20050430 changes to MKkeyname.sh (report by - Konstantin Andreev). - -20050723 - + updates/fixes for configure script macros from vile -TD - + make prism9's sgr string agree with the rest of the terminfo -TD - + make vt220's sgr0 string consistent with sgr string, do this for - several related cases -TD - + improve translation to termcap by filtering the 'me' (sgr0) strings - as in the runtime call to tgetent() (prompted by a discussion with - Thomas Klausner). - + improve tic check for sgr0 versus sgr(0), to help ensure that sgr0 - resets line-drawing. - -20050716 - + fix special cases for trimming sgr0 for hurd and vt220 (Debian - #318621). - + split-out _nc_trim_sgr0() from modifications made to tgetent(), to - allow it to be used by tic to provide information about the runtime - changes that would be made to sgr0 for termcap applications. - + modify make_sed.sh to make the group-name in the NAME section of - form/menu library manpage agree with the TITLE string when renaming - is done for Debian (Debian #78866). - -20050702 - + modify parameter type in c++ binding for insch() and mvwinsch() to - be consistent with underlying ncurses library (was char, is chtype). - + modify treatment of Intel compiler to allow _GNU_SOURCE to be defined - on Linux. - + improve configure check for nanosleep(), checking that it works since - some older systems such as AIX 4.3 have a nonworking version. - -20050625 - + update config.guess and config.sub from - http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ - + modify misc/shlib to work in test-directory. - + suppress $suffix in misc/run_tic.sh when cross-compiling. This - allows cross-compiles to use the host's tic program to handle the - "make install.data" step. - + improve description of $LINES and $COLUMNS variables in manpages - (prompted by report by Dave Ulrick). - + improve description of cross-compiling in INSTALL - + add NCURSES-Programming-HOWTO.html by Pradeep Padala - (see http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/). - + modify configure script to obtain soname for GPM library (discussion - with Daniel Jacobowitz). - + modify configure script so that --with-chtype option will still - compute the unsigned literals suffix for constants in curses.h - (report by Daniel Jacobowitz: - + patches from Daniel Jacobowitz: - + the man_db.renames entry for tack.1 was backwards. - + tack.1 had some 1m's that should have been 1M's. - + the section for curs_inwstr.3 was wrong. - -20050619 - + correction to --with-chtype option (report by Daniel Jacobowitz). - -20050618 - + move build-time edit_man.sh and edit_man.sed scripts to top directory - to simplify reusing them for renaming tack's manpage (prompted by a - review of Debian package). - + revert minor optimization from 20041030 (Debian #313609). - + libtool-specific fixes, tested with libtool 1.4.3, 1.5.0, 1.5.6, - 1.5.10 and 1.5.18 (all work except as noted previously for the c++ - install using libtool 1.5.0): - + modify the clean-rule in c++/Makefile.in to work with IRIX64 make - program. - + use $(LIBTOOL_UNINSTALL) symbol, overlooked in 20030830 - + add configure options --with-chtype and --with-mmask-t, to allow - overriding of the non-LP64 model's use of the corresponding types. - + revise test for size of chtype (and mmask_t), which always returned - "long" due to an uninitialized variable (report by Daniel Jacobowitz). - -20050611 - + change _tracef's that used "%p" format for va_list values to ignore - that, since on some platforms those are not pointers. - + fixes for long-formats in printf's due to largefile support. - -20050604 - + fixes for termcap support: - + reset pointer to _nc_curr_token.tk_name when the input stream is - closed, which could point to free memory (cf: 20030215). - + delink TERMTYPE data which is used by the termcap reader, so that - extended names data will be freed consistently. - + free pointer to TERMTYPE data in _nc_free_termtype() rather than - its callers. - + add some entrypoints for freeing permanently allocated data via - _nc_freeall() when NO_LEAKS is defined. - + amend 20041030 change to _nc_do_color to ensure that optimization is - applied only when the terminal supports back_color_erase (bce). - -20050528 - + add sun-color terminfo entry -TD - + correct a missing assignment in c++ binding's method - NCursesPanel::UserPointer() from 20050409 changes. - + improve configure check for large-files, adding check for dirent64 - from vile -TD - + minor change to configure script to improve linker options for the - Ada95 tree. - -20050515 - + document error conditions for ncurses library functions (report by - Stanislav Ievlev). - + regenerated html documentation for ada binding. - see ftp://invisible-island.net/ncurses/patches/gnathtml - -20050507 - + regenerated html documentation for manpages. - + add $(BUILD_EXEEXT) suffix to invocation of make_keys in - ncurses/Makefile (Gentoo #89772). - + modify c++/demo.cc to build with g++ -fno-implicit-templates option - (patch by Mike Frysinger). - + modify tic to filter out long extended names when translating to - termcap format. Only two characters are permissible for termcap - capability names. - -20050430 - + modify terminfo entries xterm-new and rxvt to add strings for - shift-, control-cursor keys. - + workaround to allow c++ binding to compile with g++ 2.95.3, which - has a broken implementation of static_cast<> (patch by Jeff Chua). - + modify initialization of key lookup table so that if an extended - capability (tic -x) string is defined, and its name begins with 'k', - it will automatically be treated as a key. - + modify test/keynames.c to allow for the possibility of extended - key names, e.g., via define_key(), or via "tic -x". - + add test/demo_termcap.c to show the contents of given entry via the - termcap interface. - -20050423 - + minor fixes for vt100/vt52 entries -TD - + add configure option --enable-largefile - + corrected libraries used to build Ada95/gen/gen, found in testing - gcc 4.0.0. - -20050416 - + update config.guess, config.sub - + modify configure script check for _XOPEN_SOURCE, disable that on - Darwin whose header files have problems (patch by Chris Zubrzycki). - + modify form library Is_Printable_String() to use iswprint() rather - than wcwidth() for determining if a character is printable. The - latter caused it to reject menu items containing non-spacing - characters. - + modify ncurses test program's F-test to handle non-spacing characters - by combining them with a reverse-video blank. - + review/fix several gcc -Wconversion warnings. - -20050409 - + correct an off-by-one error in m_driver() for mouse-clicks used to - position the mouse to a particular item. - + implement test/demo_menus.c - + add some checks in lib_mouse to ensure SP is set. - + modify C++ binding to make 20050403 changes work with the configure - --enable-const option. - -20050403 - + modify start_color() to return ERR if it cannot allocate memory. - + address g++ compiler warnings in C++ binding by adding explicit - member initialization, assignment operators and copy constructors. - Most of the changes simply preserve the existing semantics of the - binding, which can leak memory, etc., but by making these features - visible, it provides a framework for improving the binding. - + improve C++ binding using static_cast, etc. - + modify configure script --enable-warnings to add options to g++ to - correspond to the gcc --enable-warnings. - + modify C++ binding to use some C internal functions to make it - compile properly on Solaris (and other platforms). - -20050327 - + amend change from 20050320 to limit it to configurations with a - valid locale. - + fix a bug introduced in 20050320 which broke the translation of - nonprinting characters to uparrow form (report by Takahashi Tamotsu). - -20050326 - + add ifdef's for _LP64 in curses.h to avoid using wasteful 64-bits for - chtype and mmask_t, but add configure option --disable-lp64 in case - anyone used that configuration. - + update misc/shlib script to account for Mac OS X (report by Michail - Vidiassov). - + correct comparison for wrapping multibyte characters in - waddch_literal() (report by Takahashi Tamotsu). - -20050320 - + add -c and -w options to tset to allow user to suppress ncurses' - resizing of the terminal emulator window in the special case where it - is not able to detect the true size (report by Win Delvaux, Debian - #300419). - + modify waddch_nosync() to account for locale zn_CH.GBK, which uses - codes 128-159 as part of multibyte characters (report by Wang - WenRui, Debian #300512). - -20050319 - + modify ncurses.c 'd' test to make it work with 88-color - configuration, i.e., by implementing scrolling. - + improve scrolling in ncurses.c 'c' and 'C' tests, e.g., for 88-color - configuration. - -20050312 - + change tracemunch to use strict checking. - + modify ncurses.c 'p' test to test line-drawing within a pad. - + implement environment variable NCURSES_NO_UTF8_ACS to support - miscellaneous terminal emulators which ignore alternate character - set escape sequences when in UTF-8 mode. - -20050305 - + change NCursesWindow::err_handler() to a virtual function (request by - Steve Beal). - + modify fty_int.c and fty_num.c to handle wide characters (report by - Wolfgang Gutjahr). - + adapt fix for fty_alpha.c to fty_alnum.c, which also handled normal - and wide characters inconsistently (report by Wolfgang Gutjahr). - + update llib-* files to reflect internal interface additions/changes. - -20050226 - + improve test/configure script, adding tests for _XOPEN_SOURCE, etc., - from lynx. - + add aixterm-16color terminfo entry -TD - + modified xterm-new terminfo entry to work with tgetent() changes -TD - + extended changes in tgetent() from 20040710 to allow the substring of - sgr0 which matches rmacs to be at the beginning of the sgr0 string - (request by Thomas Wolff). Wolff says the visual effect in - combination with pre-20040710 ncurses is improved. - + fix off-by-one in winnstr() call which caused form field validation - of multibyte characters to ignore the last character in a field. - + correct logic in winsch() for inserting multibyte strings; the code - would clear cells after the insertion rather than push them to the - right (cf: 20040228). - + fix an inconsistency in Check_Alpha_Field() between normal and wide - character logic (report by Wolfgang Gutjahr). - -20050219 - + fix a bug in editing wide-characters in form library: deleting a - nonwide character modified the previous wide-character. - + update manpage to describe NCURSES_MOUSE_VERSION 2. - + correct manpage description of mouseinterval() (Debian #280687). - + add a note to default_colors.3x explaining why this extension was - added (Debian #295083). - + add traces to panel library. - -20050212 - + improve editing of wide-characters in form library: left/right - cursor movement, and single-character deletions work properly. - + disable GPM mouse support when $TERM happens to be prefixed with - "xterm". Gpm_Open() would otherwise assert that it can deal with - mouse events in this case. - + modify GPM mouse support so it closes the server connection when - the caller disables the mouse (report by Stanislav Ievlev). - -20050205 - + add traces for callback functions in form library. - + add experimental configure option --enable-ext-mouse, which defines - NCURSES_MOUSE_VERSION 2, and modifies the encoding of mouse events to - support wheel mice, which may transmit buttons 4 and 5. This works - with xterm and similar X terminal emulators (prompted by question by - Andreas Henningsson, this is also related to Debian #230990). - + improve configure macros CF_XOPEN_SOURCE and CF_POSIX_C_SOURCE to - avoid redefinition warnings on cygwin. - -20050129 - + merge remaining development changes for extended colors (mostly - complete, does not appear to break other configurations). - + add xterm-88color.dat (part of extended colors testing). - + improve _tracedump() handling of color pairs past 96. - + modify return-value from start_color() to return OK if colors have - already been started. - + modify curs_color.3x list error conditions for init_pair(), - pair_content() and color_content(). - + modify pair_content() to return -1 for consistency with init_pair() - if it corresponds to the default-color. - + change internal representation of default-color to allow application - to use color number 255. This does not affect the total number of - color pairs which are allowed. - + add a top-level tags rule. - -20050122 - + add a null-pointer check in wgetch() in case it is called without - first calling initscr(). - + add some null-pointer checks for SP, which is not set by libtinfo. - + modify misc/shlib to ensure that absolute pathnames are used. - + modify test/Makefile.in, etc., to link test programs only against the - libraries needed, e.g., omit form/menu/panel library for the ones - that are curses-specific. - + change SP->_current_attr to a pointer, adjust ifdef's to ensure that - libtinfo.so and libtinfow.so have the same ABI. The reason for this - is that the corresponding data which belongs to the upper-level - ncurses library has a different size in each model (report by - Stanislav Ievlev). - -20050115 - + minor fixes to allow test-compiles with g++. - + correct column value shown in tic's warnings, which did not account - for leading whitespace. - + add a check in _nc_trans_string() for improperly ended strings, i.e., - where a following line begins in column 1. - + modify _nc_save_str() to return a null pointer on buffer overflow. - + improve repainting while scrolling wide-character data (Eungkyu Song). - -20050108 - + merge some development changes to extend color capabilities. - -20050101 - + merge some development changes to extend color capabilities. - + fix manpage typo (FreeBSD report docs/75544). - + update config.guess, config.sub - > patches for configure script (Albert Chin-A-Young): - + improved fix to make mbstate_t recognized on HPUX 11i (cf: - 20030705), making vsscanf() prototype visible on IRIX64. Tested for - on HP-UX 11i, Solaris 7, 8, 9, AIX 4.3.3, 5.2, Tru64 UNIX 4.0D, 5.1, - IRIX64 6.5, Redhat Linux 7.1, 9, and RHEL 2.1, 3.0. - + print the result of the --disable-home-terminfo option. - + use -rpath when compiling with SGI C compiler. - -20041225 - + add trace calls to remaining public functions in form and menu - libraries. - + fix check for numeric digits in test/ncurses.c 'b' and 'B' tests. - + fix typo in test/ncurses.c 'c' test from 20041218. - -20041218 - + revise test/ncurses.c 'c' color test to improve use for xterm-88color - and xterm-256color, added 'C' test using the wide-character color_set - and attr_set functions. - -20041211 - + modify configure script to work with Intel compiler. - + fix an limit-check in wadd_wchnstr() which caused labels in the - forms-demo to be one character short. - + fix typo in curs_addchstr.3x (Jared Yanovich). - + add trace calls to most functions in form and menu libraries. - + update working-position for adding wide-characters when window is - scrolled (prompted by related report by Eungkyu Song). - -20041204 - + replace some references on Linux to wcrtomb() which use it to obtain - the length of a multibyte string with _nc_wcrtomb, since wcrtomb() is - broken in glibc (see Debian #284260). - + corrected length-computation in wide-character support for - field_buffer(). - + some fixes to frm_driver.c to allow it to accept multibyte input. - + modify configure script to work with Intel 8.0 compiler. - -20041127 - + amend change to setupterm() in 20030405 which would reuse the value - of cur_term if the same output was selected. This now reuses it only - when setupterm() is called from tgetent(), which has no notion of - separate SCREENs. Note that tgetent() must be called after initscr() - or newterm() to use this feature (Redhat Bugzilla #140326). - + add a check in CF_BUILD_CC macro to ensure that developer has given - the --with-build-cc option when cross-compiling (report by Alexandre - Campo). - + improved configure script checks for _XOPEN_SOURCE and - _POSIX_C_SOURCE (fix for IRIX 5.3 from Georg Schwarz, _POSIX_C_SOURCE - updates from lynx). - + cosmetic fix to test/gdc.c to recolor the bottom edge of the box - for consistency (comment by Dan Nelson). - -20041120 - + update wsvt25 terminfo entry -TD - + modify test/ins_wide.c to test all flavors of ins_wstr(). - + ignore filler-cells in wadd_wchnstr() when adding a cchar_t array - which consists of multi-column characters, since this function - constructs them (cf: 20041023). - + modify winnstr() to return multibyte character strings for the - wide-character configuration. - -20041106 - + fixes to make slk_set() and slk_wset() accept and store multibyte - or multicolumn characters. - -20041030 - + improve color optimization a little by making _nc_do_color() check - if the old/new pairs are equivalent to the default pair 0. - + modify assume_default_colors() to not require that - use_default_colors() be called first. - -20041023 - + modify term_attrs() to use termattrs(), add the extended attributes - such as enter_horizontal_hl_mode for WA_HORIZONTAL to term_attrs(). - + add logic in waddch_literal() to clear orphaned cells when one - multi-column character partly overwrites another. - + improved logic for clearing cells when a multi-column character - must be wrapped to a new line. - + revise storage of cells for multi-column characters to correct a - problem with repainting. In the old scheme, it was possible for - doupdate() to decide that only part of a multi-column character - should be repainted since the filler cells stored only an attribute - to denote them as fillers, rather than the character value and the - attribute. - -20041016 - + minor fixes for traces. - + add SP->_screen_acs_map[], used to ensure that mapping of missing - line-drawing characters is handled properly. For example, ACS_DARROW - is absent from xterm-new, and it was coincidentally displayed the - same as ACS_BTEE. - -20041009 - + amend 20021221 workaround for broken acs to reset the sgr, rmacs - and smacs strings as well. Also modify the check for screen's - limitations in that area to allow the multi-character shift-in - and shift-out which seem to work. - + change GPM initialization, using dl library to load it dynamically - at runtime (Debian #110586). - -20041002 - + correct logic for color pair in setcchar() and getcchar() (patch by - Marcin 'Qrczak' Kowalczyk). - + add t/T commands to ncurses b/B tests to allow a different color to - be tested for the attrset part of the test than is used in the - background color. - -20040925 - + fix to make setcchar() to work when its wchar_t* parameter is - pointing to a string which contains more data than can be converted. - + modify wget_wstr() and example in ncurses.c to work if wchar_t and - wint_t are different sizes (report by Marcin 'Qrczak' Kowalczyk). - -20040918 - + remove check in wget_wch() added to fix an infinite loop, appears to - have been working around a transitory glibc bug, and interferes - with normal operation (report by Marcin 'Qrczak' Kowalczyk). - + correct wadd_wch() and wecho_wch(), which did not pass the rendition - information (report by Marcin 'Qrczak' Kowalczyk). - + fix aclocal.m4 so that the wide-character version of ncurses gets - compiled as libncursesw.5.dylib, instead of libncurses.5w.dylib - (adapted from patch by James J Ramsey). - + change configure script for --with-caps option to indicate that it - is no longer experimental. - + change configure script to reflect the fact that --enable-widec has - not been "experimental" since 5.3 (report by Bruno Lustosa). - -20040911 - + add 'B' test to ncurses.c, to exercise some wide-character functions. - -20040828 - + modify infocmp -i option to match 8-bit controls against its table - entries, e.g., so it can analyze the xterm-8bit entry. - + add morphos terminfo entry, improve amiga-8bit entry (Pavel Fedin). - + correct translation of "%%" in terminfo format to termcap, e.g., - using "tic -C" (Redhat Bugzilla #130921). - + modified configure script CF_XOPEN_SOURCE macro to ensure that if - it defines _POSIX_C_SOURCE, that it defines it to a specific value - (comp.os.stratus newsgroup comment). - -20040821 - + fixes to build with Ada95 binding with gnat 3.4 (all warnings are - fatal, and gnat does not follow the guidelines for pragmas). - However that did find a coding error in Assume_Default_Colors(). - + modify several terminfo entries to ensure xterm mouse and cursor - visibility are reset in rs2 string: hurd, putty, gnome, - konsole-base, mlterm, Eterm, screen (Debian #265784, #55637). The - xterm entries are left alone - old ones for compatibility, and the - new ones do not require this change. -TD - -20040814 - + fake a SIGWINCH in newterm() to accommodate buggy terminal emulators - and window managers (Debian #265631). - > terminfo updates -TD - + remove dch/dch1 from rxvt because they are implemented inconsistently - with the common usage of bce/ech - + remove khome from vt220 (vt220's have no home key) - + add rxvt+pcfkeys - -20040807 - + modify test/ncurses.c 'b' test, adding v/V toggles to cycle through - combinations of video attributes so that for instance bold and - underline can be tested. This made the legend too crowded, added - a help window as well. - + modify test/ncurses.c 'b' test to cycle through default colors if - the -d option is set. - + update putty terminfo entry (Robert de Bath). - -20040731 - + modify test/cardfile.c to allow it to read more data than can be - displayed. - + correct logic in resizeterm.c which kept it from processing all - levels of window hierarchy (reports by Folkert van Heusden, - Chris Share). - -20040724 - + modify "tic -cv" to ignore delays when comparing strings. Also - modify it to ignore a canceled sgr string, e.g., for terminals which - cannot properly combine attributes in one control sequence. - + corrections for gnome and konsole entries (Redhat Bugzilla #122815, - patch by Hans de Goede) - > terminfo updates -TD - + make ncsa-m rmacs/smacs consistent with sgr - + add sgr, rc/sc and ech to syscons entries - + add function-keys to decansi - + add sgr to mterm-ansi - + add sgr, civis, cnorm to emu - + correct/simplify cup in addrinfo - -20040717 - > terminfo updates -TD - + add xterm-pc-fkeys - + review/update gnome and gnome-rh90 entries (prompted by Redhat - Bugzilla #122815). - + review/update konsole entries - + add sgr, correct sgr0 for kterm and mlterm - + correct tsl string in kterm - -20040711 - + add configure option --without-xterm-new - -20040710 - + add check in wget_wch() for printable bytes that are not part of a - multibyte character. - + modify wadd_wchnstr() to render text using window's background - attributes. - + improve tic's check to compare sgr and sgr0. - + fix c++ directory's .cc.i rule. - + modify logic in tgetent() which adjusts the termcap "me" string - to work with ISO-2022 string used in xterm-new (cf: 20010908). - + modify tic's check for conflicting function keys to omit that if - converting termcap to termcap format. - + add -U option to tic and infocmp. - + add rmam/smam to linux terminfo entry (Trevor Van Bremen) - > terminfo updates -TD - + minor fixes for emu - + add emu-220 - + change wyse acsc strings to use 'i' map rather than 'I' - + fixes for avatar0 - + fixes for vp3a+ - -20040703 - + use tic -x to install terminfo database -TD - + add -x to infocmp's usage message. - + correct field used for comparing O_ROWMAJOR in set_menu_format() - (report/patch by Tony Li). - + fix a missing nul check in set_field_buffer() from 20040508 changes. - > terminfo updates -TD - + make xterm-xf86-v43 derived from xterm-xf86-v40 rather than - xterm-basic -TD - + align with xterm patch #192's use of xterm-new -TD - + update xterm-new and xterm-8bit for cvvis/cnorm strings -TD - + make xterm-new the default "xterm" entry -TD - -20040626 - + correct BUILD_CPPFLAGS substitution in ncurses/Makefile.in, to allow - cross-compiling from a separate directory tree (report/patch by - Dan Engel). - + modify is_term_resized() to ensure that window sizes are nonzero, - as documented in the manpage (report by Ian Collier). - + modify CF_XOPEN_SOURCE configure macro to make Hurd port build - (Debian #249214, report/patch by Jeff Bailey). - + configure-script mods from xterm, e.g., updates to CF_ADD_CFLAGS - + update config.guess, config.sub - > terminfo updates -TD - + add mlterm - + add xterm-xf86-v44 - + modify xterm-new aka xterm-xfree86 to accommodate luit, which - relies on G1 being used via an ISO-2022 escape sequence (report by - Juliusz Chroboczek) - + add 'hurd' entry - -20040619 - + reconsidered winsnstr(), decided after comparing other - implementations that wrapping is an X/Open documentation error. - + modify test/inserts.c to test all flavors of insstr(). - -20040605 - + add setlocale() calls to a few test programs which may require it: - demo_forms.c, filter.c, ins_wide.c, inserts.c - + correct a few misspelled function names in ncurses-intro.html (report - by Tony Li). - + correct internal name of key_defined() manpage, which conflicted with - define_key(). - -20040529 - + correct size of internal pad used for holding wide-character - field_buffer() results. - + modify data_ahead() to work with wide-characters. - -20040522 - + improve description of terminfo if-then-else expressions (suggested - by Arne Thomassen). - + improve test/ncurses.c 'd' test, allow it to use external file for - initial palette (added xterm-16color.dat and linux-color.dat), and - reset colors to the initial palette when starting/ending the test. - + change limit-check in init_color() to allow r/g/b component to - reach 1000 (cf: 20020928). - -20040516 - + modify form library to use cchar_t's rather than char's in the - wide-character configuration for storing data for field buffers. - + correct logic of win_wchnstr(), which did not work for more than - one cell. - -20040508 - + replace memset/memcpy usage in form library with for-loops to - simplify changing the datatype of FIELD.buf, part of wide-character - changes. - + fix some inconsistent use of #if/#ifdef (report by Alain Guibert). - -20040501 - + modify menu library to account for actual number of columns used by - multibyte character strings, in the wide-character configuration - (adapted from patch by Philipp Tomsich). - + add "-x" option to infocmp like tic's "-x", for use in "-F" - comparisons. This modifies infocmp to only report extended - capabilities if the -x option is given, making this more consistent - with tic. Some scripts may break, since infocmp previous gave this - information without an option. - + modify termcap-parsing to retain 2-character aliases at the beginning - of an entry if the "-x" option is used in tic. - -20040424 - + minor compiler-warning and test-program fixes. - -20040417 - + modify tic's missing-sgr warning to apply to terminfo only. - + free some memory leaks in tic. - + remove check in post_menu() that prevented menus from extending - beyond the screen (request by Max J. Werner). - + remove check in newwin() that prevents allocating windows - that extend beyond the screen. Solaris curses does this. - + add ifdef in test/color_set.c to allow it to compile with older - curses. - + add napms() calls to test/dots.c to make it not be a CPU hog. - -20040403 - + modify unctrl() to return null if its parameter does not correspond - to an unsigned char. - + add some limit-checks to guard isprint(), etc., from being used on - values that do not fit into an unsigned char (report by Sami Farin). - -20040328 - + fix a typo in the _nc_get_locale() change. - -20040327 - + modify _nc_get_locale() to use setlocale() to query the program's - current locale rather than using getenv(). This fixes a case in tin - which relies on legacy treatment of 8-bit characters when the locale - is not initialized (reported by Urs Jansen). - + add sgr string to screen's and rxvt's terminfo entries -TD. - + add a check in tic for terminfo entries having an sgr0 but no sgr - string. This confuses Tru64 and HPUX curses when combined with - color, e.g., making them leave line-drawing characters in odd places. - + correct casts used in ABSENT_BOOLEAN, CANCELLED_BOOLEAN, matches the - original definitions used in Debian package to fix PowerPC bug before - 20030802 (Debian #237629). - -20040320 - + modify PutAttrChar() and PUTC() macro to improve use of - A_ALTCHARSET attribute to prevent line-drawing characters from - being lost in situations where the locale would otherwise treat the - raw data as nonprintable (Debian #227879). - -20040313 - + fix a redefinition of CTRL() macro in test/view.c for AIX 5.2 (report - by Jim Idle). - + remove ".PP" after ".SH NAME" in a few manpages; this confuses - some apropos script (Debian #237831). - -20040306 - + modify ncurses.c 'r' test so editing commands, like inserted text, - set the field background, and the state of insert/overlay editing - mode is shown in that test. - + change syntax of dummy targets in Ada95 makefiles to work with pmake. - + correct logic in test/ncurses.c 'b' for noncolor terminals which - did not recognize a quit-command (cf: 20030419). - -20040228 - + modify _nc_insert_ch() to allow for its input to be part of a - multibyte string. - + split out lib_insnstr.c, to prepare to rewrite it. X/Open states - that this function performs wrapping, unlike all of the other - insert-functions. Currently it does not wrap. - + check for nl_langinfo(CODESET), use it if available (report by - Stanislav Ievlev). - + split-out CF_BUILD_CC macro, actually did this for lynx first. - + fixes for configure script CF_WITH_DBMALLOC and CF_WITH_DMALLOC, - which happened to work with bash, but not with Bourne shell (report - by Marco d'Itri via tin-dev). - -20040221 - + some changes to adapt the form library to wide characters, incomplete - (request by Mike Aubury). - + add symbol to curses.h which can be used to suppress include of - stdbool.h, e.g., - #define NCURSES_ENABLE_STDBOOL_H 0 - #include - (discussion on XFree86 mailing list). - -20040214 - + modify configure --with-termlib option to accept a value which sets - the name of the terminfo library. This would allow a packager to - build libtinfow.so renamed to coincide with libtinfo.so (discussion - with Stanislav Ievlev). - + improve documentation of --with-install-prefix, --prefix and - $(DESTDIR) in INSTALL (prompted by discussion with Paul Lew). - + add configure check if the compiler can use -c -o options to rename - its output file, use that to omit the 'cd' command which was used to - ensure object files are created in a separate staging directory - (prompted by comments by Johnny Wezel, Martin Mokrejs). - -20040208 5.4 release for upload to ftp.gnu.org - + update TO-DO. - -20040207 pre-release - + minor fixes to _nc_tparm_analyze(), i.e., do not count %i as a param, - and do not count %d if it follows a %p. - + correct an inconsistency between handling of codes in the 128-255 - range, e.g., as illustrated by test/ncurses.c f/F tests. In POSIX - locale, the latter did not show printable results, while the former - did. - + modify MKlib_gen.sh to compensate for broken C preprocessor on Mac - OS X, which alters "%%" to "% % " (report by Robert Simms, fix - verified by Scott Corscadden). - -20040131 pre-release - + modify SCREEN struct to align it between normal/wide curses flavors - to simplify future changes to build a single version of libtinfo - (patch by Stanislav Ievlev). - + document handling of carriage return by addch() in manpage. - + document special features of unctrl() in manpage. - + documented interface changes in INSTALL. - + corrected control-char test in lib_addch.c to account for locale - (Debian #230335, cf: 971206). - + updated test/configure.in to use AC_EXEEXT and AC_OBJEXT. - + fixes to compile Ada95 binding with Debian gnat 3.15p-4 package. - + minor configure-script fixes for older ports, e.g., BeOS R4.5. - -20040125 pre-release - + amend change to PutAttrChar() from 20030614 which computed the number - of cells for a possibly multi-cell character. The 20030614 change - forced the cell to a blank if the result from wcwidth() was not - greater than zero. However, wcwidth() called for parameters in the - range 128-255 can give this return value. The logic now simply - ensures that the number of cells is greater than zero without - modifying the displayed value. - -20040124 pre-release - + looked good for 5.4 release for upload to ftp.gnu.org (but see above) - + modify configure script check for ranlib to use AC_CHECK_TOOL, since - that works better for cross-compiling. - -20040117 pre-release - + modify lib_get_wch.c to prefer mblen/mbtowc over mbrlen/mbrtowc to - work around core dump in Solaris 8's locale support, e.g., for - zh_CN.GB18030 (report by Saravanan Bellan). - + add includes for and in configure script macro - to make check work with Tru64 4.0d. - + add terminfo entry for U/Win -TD - + add terminfo entries for SFU aka Interix aka OpenNT (Federico - Bianchi). - + modify tput's error messages to prefix them with the program name - (report by Vincent Lefevre, patch by Daniel Jacobowitz (see Debian - #227586)). - + correct a place in tack where exit_standout_mode was used instead of - exit_attribute_mode (patch by Jochen Voss (see Debian #224443)). - + modify c++/cursesf.h to use const in the Enumeration_Field method. - + remove an ambiguous (actually redundant) method from c++/cursesf.h - + make $HOME/.terminfo update optional (suggested by Stanislav Ievlev). - + improve sed script which extracts libtool's version in the - CF_WITH_LIBTOOL macro. - + add ifdef'd call to AC_PROG_LIBTOOL to CF_WITH_LIBTOOL macro (to - simplify local patch for Albert Chin-A-Young).. - + add $(CXXFLAGS) to link command in c++/Makefile.in (adapted from - patch by Albert Chin-A-Young).. - + fix a missing substitution in configure.in for "$target" needed for - HPUX .so/.sl case. - + resync CF_XOPEN_SOURCE configure macro with lynx; fixes IRIX64 and - NetBSD 1.6 conflicts with _XOPEN_SOURCE. - + make check for stdbool.h more specific, to ensure that including it - will actually define/declare bool for the configured compiler. - + rewrite ifdef's in curses.h relating NCURSES_BOOL and bool. The - intention of that is to #define NCURSES_BOOL as bool when the - compiler declares bool, and to #define bool as NCURSES_BOOL when it - does not (reported by Jim Gifford, Sam Varshavchik, cf: 20031213). - -20040110 pre-release - + change minor version to 4, i.e., ncurses 5.4 - + revised/improved terminfo entries for tvi912b, tvi920b (Benjamin C W - Sittler). - + simplified ncurses/base/version.c by defining the result from the - configure script rather than using sprintf (suggested by Stanislav - Ievlev). - + remove obsolete casts from c++/cursesw.h (reported by Stanislav - Ievlev). - + modify configure script so that when configuring for termlib, programs - such as tic are not linked with the upper-level ncurses library - (suggested by Stanislav Ievlev). - + move version.c from ncurses/base to ncurses/tinfo to allow linking - of tic, etc., using libtinfo (suggested by Stanislav Ievlev). - -20040103 - + adjust -D's to build ncursesw on OpenBSD. - + modify CF_PROG_EXT to make OS/2 build with EXEEXT. - + add pecho_wchar(). - + remove include from lib_slk_wset.c which is not needed (or - available) on older platforms. - -20031227 - + add -D's to build ncursew on FreeBSD 5.1. - + modify shared library configuration for FreeBSD 4.x/5.x to add the - soname information (request by Marc Glisse). - + modify _nc_read_tic_entry() to not use MAX_ALIAS, but PATH_MAX only - for limiting the length of a filename in the terminfo database. - + modify termname() to return the terminal name used by setupterm() - rather than $TERM, without truncating to 14 characters as documented - by X/Open (report by Stanislav Ievlev, cf: 970719). - + re-add definition for _BSD_TYPES, lost in merge (cf: 20031206). - -20031220 - + add configure option --with-manpage-format=catonly to address - behavior of BSDI, allow install of man+cat files on NetBSD, whose - behavior has diverged by requiring both to be present. - + remove leading blanks from comment-lines in manlinks.sed script to - work with Tru64 4.0d. - + add screen.linux terminfo entry (discussion on mutt-users mailing - list). - -20031213 - + add a check for tic to flag missing backslashes for termcap - continuation lines. ncurses reads the whole entry, but termcap - applications do not. - + add configure option "--with-manpage-aliases" extending - "--with-manpage-aliases" to provide the option of generating ".so" - files rather than symbolic links for manpage aliases. - + add bool definition in include/curses.h.in for configurations with no - usable C++ compiler (cf: 20030607). - + fix pathname of SigAction.h for building with --srcdir (reported by - Mike Castle). - -20031206 - + folded ncurses/base/sigaction.c into includes of ncurses/SigAction.h, - since that header is used only within ncurses/tty/lib_tstp.c, for - non-POSIX systems (discussion with Stanislav Ievlev). - + remove obsolete _nc_outstr() function (report by Stanislav Ievlev - ). - + add test/background.c and test/color_set.c - + modify color_set() function to work with color pair 0 (report by - George Andreou ). - + add configure option --with-trace, since defining TRACE seems too - awkward for some cases. - + remove a call to _nc_free_termtype() from read_termtype(), since the - corresponding buffer contents were already zeroed by a memset (cf: - 20000101). - + improve configure check for _XOPEN_SOURCE and related definitions, - adding special cases for Solaris' __EXTENSIONS__ and FreeBSD's - __BSD_TYPES (reports by Marc Glisse ). - + small fixes to compile on Solaris and IRIX64 using cc. - + correct typo in check for pre-POSIX sort options in MKkey_defs.sh - (cf: 20031101). - -20031129 - + modify _nc_gettime() to avoid a problem with arithmetic on unsigned - values (Philippe Blain). - + improve the nanosleep() logic in napms() by checking for EINTR and - restarting (Philippe Blain). - + correct expression for "%D" in lib_tgoto.c (Juha Jarvi - ). - -20031122 - + add linux-vt terminfo entry (Andrey V Lukyanov ). - + allow "\|" escape in terminfo; tic should not warn about this. - + save the full pathname of the trace-file the first time it is opened, - to avoid creating it in different directories if the application - opens and closes it while changing its working directory. - + modify configure script to provide a non-empty default for - $BROKEN_LINKER - -20031108 - + add DJGPP to special case of DOS-style drive letters potentially - appearing in TERMCAP environment variable. - + fix some spelling in comments (reports by Jason McIntyre, Jonathon - Gray). - + update config.guess, config.sub - -20031101 - + fix a memory leak in error-return from setupterm() (report by - Stanislav Ievlev ). - + use EXEEXT and OBJEXT consistently in makefiles. - + amend fixes for cross-compiling to use separate executable-suffix - BUILD_EXEEXT (cf: 20031018). - + modify MKkey_defs.sh to check for sort utility that does not - recognize key options, e.g., busybox (report by Peter S Mazinger - ). - + fix potential out-of-bounds indexing in _nc_infotocap() (found by - David Krause using some of the new malloc debugging features - under OpenBSD, patch by Ted Unangst). - + modify CF_LIB_SUFFIX for Itanium releases of HP-UX, which use a - ".so" suffix (patch by Jonathan Ward ). - -20031025 - + update terminfo for xterm-xfree86 -TD - + add check for multiple "tc=" clauses in a termcap to tic. - + check for missing op/oc in tic. - + correct _nc_resolve_uses() and _nc_merge_entry() to allow infocmp and - tic to show cancelled capabilities. These functions were ignoring - the state of the target entry, which should be untouched if cancelled. - + correct comment in tack/output.c (Debian #215806). - + add some null-pointer checks to lib_options.c (report by Michael - Bienia). - + regenerated html documentation. - + correction to tar-copy.sh, remove a trap command that resulted in - leaving temporary files (cf: 20030510). - + remove contact/maintainer addresses for Juergen Pfeifer (his request). - -20031018 - + updated test/configure to reflect changes for libtool (cf: 20030830). - + fix several places in tack/pad.c which tested and used the parameter- - and parameterless strings inconsistently, i.e., in pad_rin(), - pad_il(), pad_indn() and pad_dl() (Debian #215805). - + minor fixes for configure script and makefiles to cleanup executables - generated when cross-compiling for DJGPP. - + modify infocmp to omit check for $TERM for operations that do not - require it, e.g., "infocmp -e" used to build fallback list (report by - Koblinger Egmont). - -20031004 - + add terminfo entries for DJGPP. - + updated note about maintainer in ncurses-intro.html - -20030927 - + update terminfo entries for gnome terminal. - + modify tack to reset colors after each color test, correct a place - where exit_standout_mode was used instead of exit_attribute_mode. - + improve tack's bce test by making it set colors other than black - on white. - + plug a potential recursion between napms() and _nc_timed_wait() - (report by Philippe Blain). - -20030920 - + add --with-rel-version option to allow workaround to allow making - libtool on Darwin generate the "same" library names as with the - --with-shared option. The Darwin ld program does not work well - with a zero as the minor-version value (request by Chris Zubrzycki). - + modify CF_MIXEDCASE_FILENAMES macro to work with cross-compiling. - + modify tack to allow it to run from fallback terminfo data. - > patch by Philippe Blain: - + improve PutRange() by adjusting call to EmitRange() and corresponding - return-value to not emit unchanged characters on the end of the - range. - + improve a check for changed-attribute by exiting a loop when the - change is found. - + improve logic in TransformLine(), eliminating a duplicated comparison - in the clr_bol logic. - -20030913 - > patch by Philippe Blain: - + in ncurses/tty/lib_mvcur.c, - move the label 'nonlocal' just before the second gettimeofday() to - be able to compute the diff time when 'goto nonlocal' used. - Rename 'msec' to 'microsec' in the debug-message. - + in ncurses/tty/lib_mvcur.c, - Use _nc_outch() in carriage return/newline movement instead of - putchar() which goes to stdout. Move test for xold>0 out of loop. - + in ncurses/tinfo/setbuf.c, - Set the flag SP->_buffered at the end of operations when all has been - successful (typeMalloc can fail). - + simplify NC_BUFFERED macro by moving check inside _nc_setbuf(). - -20030906 - + modify configure script to avoid using "head -1", which does not - work if POSIXLY_CORRECT (sic) is set. - + modify run_tic.in to avoid using wrong shared libraries when - cross-compiling (Dan Kegel). - -20030830 - + alter configure script help message to make it clearer that - --with-build-cc does not specify a cross-compiler (suggested by Dan - Kegel ). - + modify configure script to accommodate libtool 1.5, as well as add an - parameter to the "--with-libtool" option which can specify the - pathname of libtool (report by Chris Zubrzycki). We note that - libtool 1.5 has more than one bug in its C++ support, so it is not - able to install libncurses++, for instance, if $DESTDIR or the option - --with-install-prefix is used. - -20030823 - > patch by Philippe Blain: - + move assignments to SP->_cursrow, SP->_curscol into online_mvcur(). - + make baudrate computation in delay_output() consistent with the - assumption in _nc_mvcur_init(), i.e., a byte is 9 bits. - -20030816 - + modify logic in waddch_literal() to take into account zh_TW.Big5 - whose multibyte sequences may contain "printable" characters, e.g., - a "g" in the sequence "\247g" (Debian #204889, cf: 20030621). - + improve storage used by _nc_safe_strcpy() by ensuring that the size - is reset based on the initialization call, in case it were called - after other strcpy/strcat calls (report by Philippe Blain). - > patch by Philippe Blain: - + remove an unused ifdef for REAL_ATTR & WANT_CHAR - + correct a place where _cup_cost was used rather than _cuu_cost - -20030809 - + fix a small memory leak in _nc_free_termtype(). - + close trace-file if trace() is called with a zero parameter. - + free memory allocated for soft-key strings, in delscreen(). - + fix an allocation size in safe_sprintf.c for the "*" format code. - + correct safe_sprintf.c to not return a null pointer if the format - happens to be an empty string. This applies to the "configure - --enable-safe-sprintf" option (Redhat #101486). - -20030802 - + modify casts used for ABSENT_BOOLEAN and CANCELLED_BOOLEAN (report by - Daniel Jacobowitz). - > patch by Philippe Blain: - + change padding for change_scroll_region to not be proportional to - the size of the scroll-region. - + correct error-return in _nc_safe_strcat(). - -20030726 - + correct limit-checks in _nc_scroll_window() (report and test-case by - Thomas Graf cf: 20011020). - + re-order configure checks for _XOPEN_SOURCE to avoid conflict with - _GNU_SOURCE check. - -20030719 - + use clr_eol in preference to blanks for bce terminals, so select and - paste will have fewer trailing blanks, e.g., when using xterm - (request by Vincent Lefevre). - + correct prototype for wunctrl() in manpage. - + add configure --with-abi-version option (discussion with Charles - Wilson). - > cygwin changes from Charles Wilson: - + aclocal.m4: on cygwin, use autodetected prefix for import - and static lib, but use "cyg" for DLL. - + include/ncurses_dll.h: correct the comments to reflect current - status of cygwin/mingw port. Fix compiler warning. - + misc/run_tic.in: ensure that tic.exe can find the uninstalled - DLL, by adding the lib-directory to the PATH variable. - + misc/terminfo.src (nxterm|xterm-color): make xterm-color - primary instead of nxterm, to match XFree86's xterm.terminfo - usage and to prevent circular links. - (rxvt): add additional codes from rxvt.org. - (rxvt-color): new alias - (rxvt-xpm): new alias - (rxvt-cygwin): like rxvt, but with special acsc codes. - (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or - with a "native" MSWin GUI. Each takes different acsc codes, - which are both different from the "normal" rxvt's acsc. - (cygwin): cygwin-in-cmd.exe window. Lots of fixes. - (cygwinDBG): ditto. - + mk-1st.awk: use "cyg" for the DLL prefix, but "lib" for import - and static libs. - -20030712 - + update config.guess, config.sub - + add triples for configuring shared libraries with the Debian - GNU/FreeBSD packages (patch by Robert Millan ). - -20030705 - + modify CF_GCC_WARNINGS so it only applies to gcc, not g++. Some - platforms have installed g++ along with the native C compiler, which - would not accept gcc warning options. - + add -D_XOPEN_SOURCE=500 when configuring with --enable-widec, to - get mbstate_t declaration on HPUX 11.11 (report by David Ellement). - + add _nc_pathlast() to get rid of casts in _nc_basename() calls. - + correct a sign-extension in wadd_wch() and wecho_wchar() from - 20030628 (report by Tomohiro Kubota). - + work around omission of btowc() and wctob() from wide-character - support (sic) in NetBSD 1.6 using mbtowc() and wctomb() (report by - Gabor Z Papp). - + add portability note to curs_get_wstr.3x (Debian #199957). - -20030628 - + rewrite wadd_wch() and wecho_wchar() to call waddch() and wechochar() - respectively, to avoid calling waddch_noecho() with wide-character - data, since that function assumes its input is 8-bit data. - Similarly, modify waddnwstr() to call wadd_wch(). - + remove logic from waddnstr() which transformed multibyte character - strings into wide-characters. Rewrite of waddch_literal() from - 20030621 assumes its input is raw multibyte data rather than wide - characters (report by Tomohiro Kubota). - -20030621 - + write getyx() and related 2-return macros in terms of getcury(), - getcurx(), etc. - + modify waddch_literal() in case an application passes bytes of a - multibyte character directly to waddch(). In this case, waddch() - must reassemble the bytes into a wide-character (report by Tomohiro - Kubota ). - -20030614 - + modify waddch_literal() in case a multibyte value occupies more than - two cells. - + modify PutAttrChar() to compute the number of character cells that - are used in multibyte values. This fixes a problem displaying - double-width characters (report/test by Mitsuru Chinen - ). - + add a null-pointer check for result of keyname() in _tracechar() - + modify _tracechar() to work around glibc sprintf bug. - -20030607 - + add a call to setlocale() in cursesmain.cc, making demo display - properly in a UTF-8 locale. - + add a fallback definition in curses.priv.h for MB_LEN_MAX (prompted - by discussion with Gabor Z Papp). - + use macros NCURSES_ACS() and NCURSES_WACS() to hide cast needed to - appease -Wchar-subscript with g++ 3.3 (Debian #195732). - + fix a redefinition of $RANLIB in the configure script when libtool - is used, which broke configure on Mac OS X (report by Chris Zubrzycki - ). - + simplify ifdef for bool declaration in curses.h.in (suggested by - Albert Chin-A-Young). - + remove configure script check to allow -Wconversion for older - versions of gcc (suggested by Albert Chin-A-Young). - -20030531 - + regenerated html manpages. - + modify ifdef's in curses.h.in that disabled use of __attribute__() - for g++, since recent versions implement the cases which ncurses uses - (Debian #195230). - + modify _nc_get_token() to handle a case where an entry has no - description, and capabilities begin on the same line as the entry - name. - + fix a typo in ncurses_dll.h reported by gcc 3.3. - + add an entry for key_defined.3x to man_db.renames. - -20030524 - + modify setcchar() to allow converting control characters to complex - characters (report/test by Mitsuru Chinen ). - + add tkterm entry -TD - + modify parse_entry.c to allow a terminfo entry with a leading - 2-character name (report by Don Libes). - + corrected acsc in screen.teraterm, which requires a PC-style mapping. - + fix trace statements in read_entry.c to use lseek() rather than - tell(). - + fix signed/unsigned warnings from Sun's compiler (gcc should give - these warnings, but it is unpredictable). - + modify configure script to omit -Winline for gcc 3.3, since that - feature is broken. - + modify manlinks.sed to add a few functions that were overlooked since - they return function pointers: field_init, field_term, form_init, - form_term, item_init, item_term, menu_init and menu_term. - -20030517 - + prevent recursion in wgetch() via wgetnstr() if the connection cannot - be switched between cooked/raw modes because it is not a TTY (report - by Wolfgang Gutjahr ). - + change parameter of define_key() and key_defined() to const (prompted - by Debian #192860). - + add a check in test/configure for ncurses extensions, since there - are some older versions, etc., which would not compile with the - current test programs. - + corrected demo in test/ncurses.c of wgetn_wstr(), which did not - convert wchar_t string to multibyte form before printing it. - + corrections to lib_get_wstr.c: - + null-terminate buffer passed to setcchar(), which occasionally - failed. - + map special characters such as erase- and kill-characters into - key-codes so those will work as expected even if they are not - mentioned in the terminfo. - + modify PUTC() and Charable() macros to make wide-character line - drawing work for POSIX locale on Linux console (cf: 20021221). - -20030510 - + make typography for program options in manpages consistent (report - by Miloslav Trmac ). - + correct dependencies in Ada95/src/Makefile.in, so the builds with - "--srcdir" work (report by Warren L Dodge). - + correct missing definition of $(CC) in Ada95/gen/Makefile.in - (reported by Warren L Dodge ). - + fix typos and whitespace in manpages (patch by Jason McIntyre - ). - -20030503 - + fix form_driver() cases for REQ_CLR_EOF, REQ_CLR_EOL, REQ_DEL_CHAR, - REQ_DEL_PREV and REQ_NEW_LINE, which did not ensure the cursor was at - the editing position before making modifications. - + add test/demo_forms and associated test/edit_field.c demos. - + modify test/configure.in to use test/modules for the list of objects - to compile rather than using the list of programs. - -20030419 - + modify logic of acsc to use the original character if no mapping is - defined, noting that Solaris does this. - + modify ncurses 'b' test to avoid using the acs_map[] array since - 20021231 changes it to no longer contain information from the acsc - string. - + modify makefile rules in c++, progs, tack and test to ensure that - the compiler flags (e.g., $CFLAGS or $CCFLAGS) are used in the link - command (report by Jose Luis Rico Botella ). - + modify soft-key initialization to use A_REVERSE if A_STANDOUT would - not be shown when colors are used, i.e., if ncv#1 is set in the - terminfo as is done in "screen". - -20030412 - + add a test for slk_color(), in ncurses.c - + fix some issues reported by valgrind in the slk_set() and slk_wset() - code, from recent rewrite. - + modify ncurses 'E' test to use show previous label via slk_label(), - as in 'e' test. - + modify wide-character versions of NewChar(), NewChar2() macros to - ensure that the whole struct is initialized. - -20030405 - + modify setupterm() to check if the terminfo and terminal-modes have - already been read. This ensures that it does not reinvoke - def_prog_mode() when an application calls more than one function, - such as tgetent() and initscr() (report by Olaf Buddenhagen). - -20030329 - + add 'E' test to ncurses.c, to exercise slk_wset(). - + correct handling of carriage-return in wgetn_wstr(), used in demo of - slk_wset(). - + first draft of slk_wset() function. - -20030322 - + improved warnings in tic when suppressing items to fit in termcap's - 1023-byte limit. - + built a list in test/README showing which externals are being used - by either programs in the test-directory or via internal library - calls. - + adjust include-options in CF_ETIP_DEFINES to avoid missing - ncurses_dll.h, fixing special definitions that may be needed for - etip.h (reported by Greg Schafer ). - -20030315 - + minor fixes for cardfile.c, to make it write the updated fields to - a file when ^W is given. - + add/use _nc_trace_bufcat() to eliminate some fixed buffer limits in - trace code. - -20030308 - + correct a case in _nc_remove_string(), used by define_key(), to avoid - infinite loop if the given string happens to be a substring of other - strings which are assigned to keys (report by John McCutchan). - + add key_defined() function, to tell which keycode a string is bound - to (discussion with John McCutchan ). - + correct keybound(), which reported definitions in the wrong table, - i.e., the list of definitions which are disabled by keyok(). - + modify demo_keydef.c to show the details it changes, and to check - for errors. - -20030301 - + restructured test/configure script, make it work for libncursesw. - + add description of link_fieldtype() to manpage (report by - L Dee Holtsclaw ). - -20030222 - + corrected ifdef's relating to configure check for wchar_t, etc. - + if the output is a socket or other non-tty device, use 1 millisecond - for the cost in mvcur; previously it was 9 milliseconds because the - baudrate was not known. - + in _nc_get_tty_mode(), initialize the TTY buffer on error, since - glibc copies uninitialized data in that case, as noted by valgrind. - + modify tput to use the same parameter analysis as tparm() does, to - provide for user-defined strings, e.g., for xterm title, a - corresponding capability might be - title=\E]2;%p1%s^G, - + modify MKlib_gen.sh to avoid passing "#" tokens through the C - preprocessor. This works around Mac OS X's preprocessor, which - insists on adding a blank on each side of the token (report/analysis - by Kevin Murphy ). - -20030215 - + add configure check for wchar_t and wint_t types, rather than rely - on preprocessor definitions. Also work around for gcc fixinclude - bug which creates a shadow copy of curses.h if it sees these symbols - apparently typedef'd. - + if database is disabled, do not generate run_tic.sh - + minor fixes for memory-leak checking when termcap is read. - -20030208 - + add checking in tic for incomplete line-drawing character mapping. - + updated configure script to reflect fix for AC_PROG_GCC_TRADITIONAL, - which is broken in autoconf 2.5x for Mac OS X 10.2.3 (report by - Gerben Wierda ). - + make return value from _nc_printf_string() consistent. Before, - depending on whether --enable-safe-sprintf was used, it might not be - cached for reallocating. - -20030201 - + minor fixes for memory-leak checking in lib_tparm.c, hardscroll.c - + correct a potentially-uninitialized value if _read_termtype() does - not read as much data as expected (report by Wolfgang Rohdewald - ). - + correct several places where the aclocal.m4 macros relied on cache - variable names which were incompatible (as usual) between autoconf - 2.13 and 2.5x, causing the test for broken-linker to give incorrect - results (reports by Gerben Wierda and Thomas Esser - ). - + do not try to open gpm mouse driver if standard output is not a tty; - the gpm library does not make this check (bug report for dialog - by David Oliveira ). - -20030125 - + modified emx.src to correspond more closely to terminfo.src, added - emx-base to the latter -TD - + add configure option for FreeBSD sysmouse, --with-sysmouse, and - implement support for that in lib_mouse.c, lib_getch.c - -20030118 - + revert 20030105 change to can_clear_with(), does not work for the - case where the update is made on cells which are blanks with - attributes, e.g., reverse. - + improve ifdef's to guard against redefinition of wchar_t and wint_t - in curses.h (report by Urs Jansen). - -20030111 - + improve mvcur() by checking if it is safe to move when video - attributes are set (msgr), and if not, reset/restore attributes - within that function rather than doing it separately in the GoTo() - function in tty_update.c (suggested by Philippe Blain). - + add a message in run_tic.in to explain more clearly what does not - work when attempting to create a symbolic link for /usr/lib/terminfo - on OS/2 and other platforms with no symbolic links (report by John - Polterak). - + change several sed scripts to avoid using "\+" since it is not a BRE - (basic regular expression). One instance caused terminfo.5 to be - misformatted on FreeBSD (report by Kazuo Horikawa - (see FreeBSD docs/46709)). - + correct misspelled 'wint_t' in curs_get_wch.3x (Michael Elkins). - -20030105 - + improve description of terminfo operators, especially static/dynamic - variables (comments by Mark I Manning IV ). - + demonstrate use of FIELDTYPE by modifying test/ncurses 'r' test to - use the predefined TYPE_ALPHA field-type, and by defining a - specialized type for the middle initial/name. - + fix MKterminfo.sh, another workaround for POSIXLY_CORRECT misfeature - of sed 4.0 - > patch by Philippe Blain: - + optimize can_clear_with() a little by testing first if the parameter - is indeed a "blank". - + simplify ClrBottom() a little by allowing it to use clr_eos to clear - sections as small as one line. - + improve ClrToEOL() by checking if clr_eos is available before trying - to use it. - + use tputs() rather than putp() in a few cases in tty_update.c since - the corresponding delays are proportional to the number of lines - affected: repeat_char, clr_eos, change_scroll_region. - -20021231 - + rewrite of lib_acs.c conflicts with copying of SCREEN acs_map to/from - global acs_map[] array; removed the lines that did the copying. - -20021228 - + change some overlooked tputs() calls in scrolling code to use putp() - (report by Philippe Blain). - + modify lib_getch.c to avoid recursion via wgetnstr() when the input - is not a tty and consequently mode-changes do not work (report by - ). - + rewrote lib_acs.c to allow PutAttrChar() to decide how to render - alternate-characters, i.e., to work with Linux console and UTF-8 - locale. - + correct line/column reference in adjust_window(), needed to make - special windows such as curscr track properly when resizing (report - by Lucas Gonze ). - > patch by Philippe Blain: - + correct the value used for blank in ClrBottom() (broken in 20000708). - + correct an off-by-one in GoTo() parameter in _nc_scrolln(). - -20021221 - + change several tputs() calls in scrolling code to use putp(), to - enable padding which may be needed for some terminals (patch by - Philippe Blain). - + use '%' as sed substitute delimiter in run_tic script to avoid - problems with pathname delimiters such as ':' and '@' (report by John - Polterak). - + implement a workaround so that line-drawing works with screen's - crippled UTF-8 support (tested with 3.9.13). This only works with - the wide-character support (--enable-widec); the normal library will - simply suppress line-drawing when running in a UTF-8 locale in screen. - -20021214 - + allow BUILD_CC and related configure script variables to be - overridden from the environment. - + make build-tools variables in ncurses/Makefile.in consistent with - the configure script variables (report by Maciej W Rozycki). - + modify ncurses/modules to allow - configure --disable-leaks --disable-ext-funcs - to build (report by Gary Samuelson). - + fix a few places in configure.in which lacked quotes (report by - Gary Samuelson ). - + correct handling of multibyte characters in waddch_literal() which - force wrapping because they are started too late on the line (report - by Sam Varshavchik). - + small fix for CF_GNAT_VERSION to ignore the help-message which - gnatmake adds to its version-message. - > Maciej W Rozycki : - + use AC_CHECK_TOOL to get proper values for AR and LD for cross - compiling. - + use $cross_compiling variable in configure script rather than - comparing $host_alias and $target alias, since "host" is - traditionally misused in autoconf to refer to the target platform. - + change configure --help message to use "build" rather than "host" - when referring to the --with-build-XXX options. - -20021206 - + modify CF_GNAT_VERSION to print gnatmake's version, and to allow for - possible gnat versions such as 3.2 (report by Chris Lingard - ). - + modify #define's for CKILL and other default control characters in - tset to use the system's default values if they are defined. - + correct interchanged defaults for kill and interrupt characters - in tset, which caused it to report unnecessarily (Debian #171583). - + repair check for missing C++ compiler, which is broken in autoconf - 2.5x by hardcoding it to g++ (report by Martin Mokrejs). - + update config.guess, config.sub (2002-11-30) - + modify configure script to skip --with-shared, etc., when the - --with-libtool option is given, since they would be ignored anyway. - + fix to allow "configure --with-libtool --with-termlib" to build. - + modify configure script to show version number of libtool, to help - with bug reports. libtool still gets confused if the installed - ncurses libraries are old, since it ignores the -L options at some - point (tested with libtool 1.3.3 and 1.4.3). - + reorder configure script's updating of $CPPFLAGS and $CFLAGS to - prevent -I options in the user's environment from introducing - conflicts with the build -I options (may be related to reports by - Patrick Ash and George Goffe). - + rename test/define_key.c to test/demo_defkey.c, test/keyok.c to - test/demo_keyok.c to allow building these with libtool. - -20021123 - + add example program test/define_key.c for define_key(). - + add example program test/keyok.c for keyok(). - + add example program test/ins_wide.c for wins_wch() and wins_wstr(). - + modify wins_wch() and wins_wstr() to interpret tabs by using the - winsch() internal function. - + modify setcchar() to allow for wchar_t input strings that have - more than one spacing character. - -20021116 - + fix a boundary check in lib_insch.c (patch by Philippe Blain). - + change type for *printw functions from NCURSES_CONST to const - (prompted by comment by Pedro Palhoto Matos , - but really from a note on X/Open's website stating that either is - acceptable, and the latter will be used in a future revision). - + add xterm-1002, xterm-1003 terminfo entries to demonstrate changes in - lib_mouse.c (20021026) -TD - + add screen-bce, screen-s entries from screen 3.9.13 (report by - Adam Lazur ) -TD - + add mterm terminfo entries -TD - -20021109 - + split-out useful fragments in terminfo for vt100 and vt220 numeric - keypad, i.e., vt100+keypad, vt100+pfkeys, vt100+fnkeys and - vt220+keypad. The last as embedded in various entries had ka3 and - kb2 interchanged (report/discussion with Leonard den Ottolander - ). - + add check in tic for keypads consistent with vt100 layout. - + improve checks in tic for color capabilities - -20021102 - + check for missing/empty/illegal terminfo name in _nc_read_entry() - (report by Martin Mokrejs, where $TERM was set to an empty string). - + rewrote lib_insch.c, combining it with lib_insstr.c so both handle - tab and other control characters consistently (report by Philippe - Blain). - + remove an #undef for KEY_EVENT from curses.tail used in the - experimental NCURSES_WGETCH_EVENTS feature. The #undef confuses - dpkg's build script (Debian #165897). - + fix MKlib_gen.sh, working around the ironically named POSIXLY_CORRECT - feature of GNU sed 4.0 (reported by Ervin Nemeth ). - -20021026 - + implement logic in lib_mouse.c to handle position reports which are - generated when XFree86 xterm is initialized with private modes 1002 - or 1003. These are returned to the application as the - REPORT_MOUSE_POSITION mask, which was not implemented. Tested both - with ncurses 'a' menu (prompted by discussion with Larry Riedel - ). - + modify lib_mouse.c to look for "XM" terminfo string, which allows - one to override the escape sequence used to enable/disable mouse - mode. In particular this works for XFree86 xterm private modes - 1002 and 1003. If "XM" is missing (note that this is an extended - name), lib_mouse uses the conventional private mode 1000. - + correct NOT_LOCAL() macro in lib_mvcur.c to refer to screen_columns - where it used screen_lines (report by Philippe Blain). - + correct makefile rules for the case when both --with-libtool and - --with-gpm are given (report by Mr E_T ). - + add note to terminfo manpage regarding the differences between - setaf/setab and setf/setb capabilities (report by Pavel Roskin). - -20021019 - + remove redundant initialization of TABSIZE in newterm(), since it is - already done in setupterm() (report by Philippe Blain). - + add test/inserts.c, to test winnstr() and winsch(). - + replace 'sort' in dist.mk with script that sets locale to POSIX. - + update URLs in announce.html.in (patch by Frederic L W Meunier). - + remove glibc add-on files, which are no longer needed (report by - Frederic L W Meunier). - -20021012 5.3 release for upload to ftp.gnu.org - + modify ifdef's in etip.h.in to allow the etip.h header to compile - with gcc 3.2 (patch by Dimitar Zhekov ). - + add logic to setupterm() to make it like initscr() and newterm(), - by checking for $NCURSES_TRACE environment variable and enabling - the debug trace in that case. - + modify setupterm() to ensure that it initializes the baudrate, for - applications such as tput (report by Frank Henigman). - + modify definition of bits used for command-line and library debug - traces to avoid overlap, using new definition TRACE_SHIFT to relate - the two. - + document tput's interpretation of parameterized strings according to - whether parameters are given, etc. (discussion with Robert De Bath). - -20021005 pre-release - + correct winnwstr() to account for non-character cells generated when - a double-width character is added (report by Michael Bienia - ). - + modify _nc_viswbuf2n() to provide better results using wctomb(). - + correct logic in _nc_varargs() which broke tracing of parameters for - formats such as "%.*s". - + correct scale factor in linux-c and linux-c-nc terminfo entries - (report Floyd Davidson). - + change tic -A option to -t, add the same option to infocmp for - consistency. - + correct "%c" implementation in lib_tparm.c, which did not map a null - character to a 128 (cf: 980620) (patch by Frank Henigman - ). - -20020928 pre-release - + modify MKkey_defs.sh to check for POSIX sort -k option, use that if - it is found, to accommodate newer utility which dropped the - compatibility support for +number options (reported by Andrey A - Chernov). - + modify linux terminfo entry to use color palette feature from - linux-c-nc entry (comments by Tomasz Wasiak and Floyd Davidson). - + restore original color definitions in endwin() if init_color() was - used, and resume those colors on the next doupdate() or refresh() - (report by Tomasz Wasiak ). - + improve debug-traces by modifying MKlib_gen.sh to generate calls - to returnBool() and returnAttr(). - + add/use _nc_visbufn() and _nc_viswbufn() to limit the debug trace - of waddnstr() and similar functions to match the parameters as used. - + add/use _nc_retrace_bool() and _nc_retrace_unsigned(). - + correct type used by _nc_retrace_chtype(). - + add debug traces to some functions in lib_mouse.c - + modify lib_addch.c to handle non-spacing characters. - + correct parameter of RemAttr() in lib_bkgd.c, which caused the c++ - demo's boxes to lose the A_ALTCHARSET flag (broken in 20020629). - + correct width computed in _tracedump(), which did not account for - the attributes (broken in 20010602). - + modify test/tracemunch to replace addresses for windows other than - curscr, newscr and stdscr with window0, window1, etc. - -20020921 pre-release - + redid fix for edit_man.sed path. - + workaround for Cygwin bug which makes subprocess writes to stdout - result in core dump. - + documented getbegx(), etc. - + minor fixes to configure script to use '%' consistently as a sed - delimiter rather than '@'. - > patch by Philippe Blain: - + add check in lib_overlay.c to ensure that the windows to be merged - actually overlap, and in copywin(), limit the area to be touched - to the lines given for the destination window. - -20020914 pre-release - + modified curses.h so that if the wide-character version is installed - overwriting /usr/include/curses.h, and if it relied on libutf8.h, - then applications that use that header for wide-character support - must define HAVE_LIBUTF8_H. - + modify putwin(), getwin() and dupwin() to allow them to operate on - pads (request by Philippe Blain). - + correct attribute-merging in wborder(), broken in 20020216 (report - by Tomasz Wasiak ). - > patch by Philippe Blain: - + corrected pop-counts in tparam_internal() to '!' and '~' cases. - + use sizeof(NCURSES_CH_T) in one place that used sizeof(chtype). - + remove some unused variables from mvcur test-driver. - -20020907 pre-release - + change configure script to allow install of widec-character - (ncursesw) headers to overwrite normal (ncurses) headers, since the - latter is a compatible subset of the former. - + fix path of edit_man.sed in configure script, needed to regenerate - html manpages on Debian. - + fix mismatched enums in vsscanf.c, which caused warning on Solaris. - + update README.emx to reflect current patch used for autoconf. - + change web- and ftp-site to invisible-island.net - > patch by Philippe Blain: - + change case for 'P' in tparam_internal() to indicate that it pops - a variable from the stack. - + correct sense of precision and width in parse_format(), to avoid - confusion. - + modify lib_tparm.c, absorb really_get_space() into get_space(). - + modify getwin() and dupwin() to copy the _notimeout, _idlok and - _idcok window fields. - + better fix for _nc_set_type(), using typeMalloc(). - -20020901 pre-release - + change minor version to 3, i.e., ncurses 5.3 - + update config.guess, config.sub - + retest build with each configure option; minor ifdef fixes. - + make keyname() return a null pointer rather than "UNKNOWN STRING" to - match XSI. - + modify handling of wide line-drawing character functions to use the - normal line-drawing characters when not in UTF-8 locale. - + add check/fix to comp_parse.c to suppress warning about missing acsc - string. This happens in configurations where raw termcap information - is processed; tic already does this and other checks. - + modify tic's check for ich/ich1 versus rmir/smir to only warn about - ich1, to match xterm patch #70 notes. - + moved information for ripped-off lines into SCREEN struct to allow - use in resizeterm(). - + add experimental wgetch_events(), ifdef'd with NCURSES_WGETCH_EVENTS - (adapted from patch by Ilya Zakharevich - see ncurses/README.IZ). - + amend check in kgetch() from 20020824 to look only for function-keys, - otherwise escape sequences are not resolved properly. - > patch by Philippe Blain: - + removed redundant assignment to SP->_checkfd from newterm(). - + check return-value of setupterm() in restartterm(). - + use sizeof(NCURSES_CH_T) in a few places that used sizeof(chtype). - + prevent dupwin() from duplicating a pad. - + prevent putwin() from writing a pad. - + use typeRealloc() or typeMalloc() in preference to direct calls on - _nc_doalloc(). - -20020824 - + add a check in kgetch() for cooked characters in the fifo to avoid - calling fifo_push() when a KEY_RESIZE is available (report/analysis - by Sam Varshavchik ). - + fix an overlooked case for bugzilla #68199 (Philippe Blain). - + ensure clearerr() is called before using ferror() e.g., in - lib_screen.c (report by Philippe Blain). - -20020817 - + modify lib_screen.c and lib_newwin.c to maintain the SCREEN-specific - pointers for curscr/stdscr/newscr when scr_save() and scr_restore() - modify the global curscr/stdscr/newscr variables. Fixes Redhat - bugzilla #68199 dated 2002-07-07. - + add checks for null pointer in calls to tparm() and tgoto() based on - FreeBSD bug report. If ncurses were built with termcap support, and - the first call to tgoto() were a zero-length string, the result would - be a null pointer, which was not handled properly. - + correct a typo in terminfo.head, which gave the octal code for colon - rather than comma. - + remove the "tic -u" option from 20020810, since it did not account - for nested "tc=" clauses, and when that was addressed, was still - unsatisfactory. - -20020810 - + add tic -A option to suppress capabilities which are commented out - when translating to termcap. - + add tic -u option to provide older behavior of "tc=" clauses. - + modified tic to expand all but the final "tc=" clause in a termcap - entry, to accommodate termcap libraries which do not handle multiple - tc clauses. - + correct typo in curs_inopts.3x regarding CS8/CS7 usage (report by - Philippe Blain). - + remove a couple of redundant uses of A_ATTRIBUTES in expressions - using AttrOf(), which already incorporates that mask (report by - Philippe Blain). - + document TABSIZE variable. - + add NCURSES_ASSUMED_COLORS environment variable, to allow users to - override compiled-in default black-on-white assumption used in - assume_default_colors(). - + correct an off-by-one comparison against max_colors in COLORFGBG - logic. - + correct a use of uninitialized memory found by valgrind (reported by - Olaf Buddenhagen ). - + modified wresize() to ensure that a failed realloc will not corrupt - the window structure, and to make subwindows fit within the resized - window (completes Debian #87678, #101699) - -20020803 - + fix an off-by-one in lib_pad.c check for limits of pad (patch by - Philippe Blain). - + revise logic for BeOS in lib_twait.c altered in 20011013 to restore - logic used by lib_getch.c's support for GPM or EMX mouse (report by - Philippe Blain) - + remove NCURSES_CONST from several prototypes in curses.wide, to make - the --enable-const --enable-widec configure options to work together - (report by George Goffe ). - -20020727 - + finish no-leak checking in cardfile.c, using this for testing changes - to resizeterm(). - + simplify _nc_freeall() using delscreen(). - -20020720 - + check error-return from _nc_set_tty_mode() in _nc_initscr() and - reset_prog_mode() (report/patch by Philippe Blain). - + regenerate configure using patch for autoconf 2.52, to address - problem with identifying C++ bool type. - + correct/improve logic to produce an exit status for errors in tput, - which did not exit with an error when told to put a string not in the - current terminfo entry (report by David Gomez ). - + modify configure script AC_OUTPUT() call to work around defect in - autoconf 2.52 which adds an ifdef'd include to the generated - configure definitions. - + remove fstat() check from scr_init(), which also fixes a missing - include for from 20020713 (reported by David Ellement, - fix suggested by Philippe Blain). - + update curs_scanw.3x manpage to note that XSI curses differs from - SVr4 curses: return-values are incompatible. - + correct several prototypes in manpages which used const - inconsistently with the curses.h file, and removed spurious const's - in a few places from curses.h, e.g., for wbkgd() (report by Glenn - Maynard ). - + change internal type used by tparm() to long, to work with LP64 model. - + modify nc_alloc.h to allow building with g++, for testing. - -20020713 - + add resize-handling to cardfile.c test program. - + altered resizeterm() to avoid having it fail when a child window - cannot be resized because it would be larger than its parent. (More - work must be done on this, but it works well enough to integrate). - + improve a limit-check in lib_refresh.c - + remove check in lib_screen.c relating dumptime to file's modification - times, since that would not necessarily work for remotely mounted - filesystems. - + modify lrtest to simplify debugging changes to resizeterm, e.g., - t/T commands to enable/disable tracing. - + updated status of multibyte support in TO-DO. - + update contact info in source-files (patch by Juergen Pfeifer). - -20020706 - + add Caps.hpux11, as an example. - + modify version_filter(), used to implement -R option for tic and - infocmp, to use computed array offsets based on the Caps.* file which - is actually configured, rather than constants which correspond to - the Caps file. - + reorganized lib_raw.c to avoid updating SP and cur_term state if the - functions fail (reported by Philippe Blain). - + add -Wundef to gcc warnings, adjust a few ifdef's to accommodate gcc. - -20020629 - + correct parameters to setcchar() in ncurses.c (cf: 20020406). - + set locale in most test programs (view.c and ncurses.c were the - only ones). - + add configure option --with-build-cppflags (report by Maksim A - Nikulin ). - + correct a typo in wide-character logic for lib_bkgnd.c (Philippe - Blain). - + modify lib_wacs.c to not cancel the acsc, smacs, rmacs strings when - in UTF-8 locale. Wide-character functions use Unicode values, while - narrow-character functions use the terminfo data. - + fix a couple of places in Ada95/samples which did not compile with - gnat 3.14 - + modify mkinstalldirs so the DOS-pathname case is locale-independent. - + fix locale problem in MKlib_gen.sh by forcing related variables to - POSIX (C), using same approach as autoconf (set variables only if - they were set before). Update MKterminfo.sh and MKtermsort.sh to - match. - -20020622 - + add charset to generated html. - + add mvterm entry, adapted from a FreeBSD bug-report by Daniel Rudy - -TD - + add rxvt-16color, ibm+16color entries -TD - + modify check in --disable-overwrite option so that it is used by - default unless the --prefix/$prefix value is not /usr, in attempt to - work around packagers, e.g., for Sun's freeware, who do not read the - INSTALL notes. - -20020615 - + modify wgetch() to allow returning ungetch'd KEY_RESIZE as a function - key code in get_wch(). - + extended resize-handling in test/ncurses 'a' menu to the entire - stack of windows created with 'w' commands. - + improve $COLORFGBG feature by interpreting an out-of-range color - value as an SGR 39 or 49, for foreground/background respectively. - + correct a typo in configure --enable-colorfgbg option, and move it - to the experimental section (cf: 20011208). - -20020601 - + add logic to dump_entry.c to remove function-key definitions that do - not fit into the 1023-byte limit for generated termcaps. This makes - hds200 fit. - + more improvements to tic's warnings, including logic to ignore - differences between delay values in sgr strings. - + move definition of KEY_RESIZE into MKkeydefs.sh script, to - accommodate Caps.osf1r5 which introduced a conflicting definition. - -20020525 - + add simple resize-handling in test/ncurses.c 'a' menu. - + fixes in keyname() and _tracechar() to handle negative values. - + make tic's warnings about mismatches in sgr strings easier to follow. - + correct tic checks for number of parameters in smgbp and smglp. - + improve scoansi terminfo entry, and add scoansi-new entry -TD - + add pcvt25-color terminfo entry -TD - + add kf13-kf48 strings to cons25w terminfo entry (reported by Stephen - Hurd in newsgroup lucky.freebsd.bugs) -TD - + add entrypoint _nc_trace_ttymode(), use this to distinguish the - Ottyb and Nttyb members of terminal (aka cur_term), for tracing. - -20020523 - + correct and simplify logic for lib_pad.c change in 20020518 (reported - by Mike Castle). - -20020518 - + fix lib_pad.c for case of drawing a double-width character which - falls off the left margin of the pad (patch by Kriang Lerdsuwanakij - ) - + modify configure script to work around broken gcc 3.1 "--version" - option, which adds unnecessary trash to the requested information. - + adjust ifdef's in case SIGWINCH is not defined, e.g., with DJGPP - (reported by Ben Decker ). - -20020511 - + implement vid_puts(), vid_attr(), term_attrs() based on the narrow- - character versions as well. - + implement erasewchar(), killwchar() based on erasechar() and - killchar(). - + modify erasechar() and killchar() to return ERR if the value was - VDISABLE. - + correct a bug in wresize() in handling subwindows (based on patch by - Roger Gammans , report by Scott Beck - ). - + improve test/tclock.c by making the second-hand update more often - if gettimeofday() is available. - -20020429 - + workaround for Solaris sed with MKlib_gen.sh (reported by Andy - Tsouladze ). - -20020427 - + correct return-value from getcchar(), making it consistent with - Solaris and Tru64. - + reorder loops that generate makefile rules for different models vs - subsets so configure --with-termlib works again. This was broken by - logic added to avoid duplicate rules in changes to accommodate cygwin - dll's (reported by George.R.Goffe@seagate.com). - + update config.guess, config.sub - -20020421 - + modify ifdef's in write_entry.c to allow use of symbolic links on - platforms with no hard links, e.g., BeOS. - + modify a few includes to allow compile with BeOS, which has stdbool.h - with a conflicting definition for 'bool' versus its OS.h definition. - + amend MKlib_gen.sh to work with gawk, which defines 'func' as an - alias for 'function'. - -20020420 - + correct form of prototype for ripoffline(). - + modify MKlib_gen.sh to test that all functions marked as implemented - can be linked. - -20020413 - + add manpages: curs_get_wstr.3x, curs_in_wchstr.3x - + implement wgetn_wstr(). - + implement win_wchnstr(). - + remove redefinition of unget_wch() in lib_gen.c (reported by - Jungshik Shin ). - -20020406 - + modified several of the test programs to allow them to compile with - vendor curses implementations, e.g., Solaris, AIX -TD - -20020323 - + modified test/configure to allow configuring against ncursesw. - + change WACS_xxx definition to use address, to work like Tru64 curses. - -20020317 - + add 'e' and 'm' toggles to 'a', 'A' tests in ncurses.c to demonstrate - effect of echo/noecho and meta modes. - + add 'A' test to ncurses.c to demonstrate wget_wch() and related - functions. - + add manpage: curs_get_wch.3x - + implement unget_wch(). - + implement wget_wch(). - -20020310 - + regenerated html manpages. - + add manpages: curs_in_wch.3x, curs_ins_wch.3x, curs_ins_wstr.3x - + implement wins_wch(). - + implement win_wch(). - + implement wins_nwstr(), wins_wstr(). - -20020309 - + add manpages: curs_addwstr.3x, curs_winwstr.3x - + implement winnwstr(), winwstr(). - -20020223 - + add manpages: curs_add_wchstr.3x, curs_bkgrnd.3x - + document wunctrl, key_name. - + implement key_name(). - + remove const's in lib_box.c incorrectly leftover after splitting off - lib_box_set.c - + update llib-lncurses, llib-ncursesw, fix configure script related to - these. - -20020218 - + remove quotes on "SYNOPSIS" in man/curs_box_set.3x, which resulted - in spurious symlinks on install. - -20020216 - + implement whline_set(), wvline_set(), add manpage curs_border_set. - + add subtest 'b' to 'F' and 'f' in ncurses.c to demonstrate use of - box() and box_set() functions. - + add subtest 'u' to 'F' in ncurses.c, to demonstrate use of addstr() - given UTF-8 string equivalents of WACS_xxx symbols. - + minor fixes to several manpages based on groff -ww output. - + add descriptions of external variables of termcap interface to - the manpage (report by Bruce Evans ). - > patches by Bernhard Rosenkraenzer: - + correct configure option --with-bool, which was executed as - --with-ospeed. - + add quotes for parameters of --with-bool and --with-ospeed configure - options. - > patch by Sven Verdoolaege (report by Gerhard Haering - ): - + correct typos in definitions of several wide-character macros: - waddwstr, wgetbkgrnd, mvaddwstr, mvwadd_wchnstr, mvwadd_wchnstr, - mvwaddwstr. - + pass $(CPPFLAGS) to MKlib_gen.sh, thereby fixing a missing definition - of _XOPEN_SOURCE_EXTENDED, e.g., on Solaris - -20020209 - + implement wide-acs characters for UTF-8 locales. When in UTF-8 - locale, ignore narrow version of acs. Add 'F' test to test/ncurses.c - to demonstrate. - + correct prototype in keybound manpage (noted from a Debian mailing - list item). - -20020202 - + add several cases to the wscanw() example in testcurs.c, showing the - format. - + implement a simple vsscanf() fallback function which uses the %n - conversion to help parse the input data (prompted by discussion with - Albert Chin-A-Young). - + modify mk-1st.awk and test/Makefile.in to add $(LDFLAGS) when making - shared libraries, and to use $(CFLAGS) when linking test programs - (patch by Albert Chin-A-Young). - + add a call to _nc_keypad() in keypad() to accommodate applications - such as nvi, which use curses for output but not for input (fixes - Debian #131263, cf: 20011215). - + add entrypoints to resizeterm.c which provide better control over the - process: is_term_resized() and resize_term(). The latter restores - the original design of resizeterm() before KEY_RESIZE was added in - 970906. Do this to accommodate 20010922 changes to view.c, but allow - for programs with their own sigwinch handler, such as lynx (reported - by Russell Ruby ). - -20020127 - + fix a typo in change to mk-1st.awk, which broke the shared-library - makefile rules (reported by Martin Mokrejs). - -20020126 - + update config.guess, config.sub - + finish changes needed to build dll's on cygwin. - + fix a typo in mvwchat() macro (reported by Cy ). - + add configure check for mbstate_t, needed for wide-character - configuration. On some platforms we must include to - define this (reported by Daniel Jacobowitz). - + incorporate some of the changes needed to build dll's on cygwin. - -20020112a - + workaround for awk did not work with mawk, adjusted shell script. - -20020112 - + add Caps.osf1r5, as an example. - + modify behavior of can_clear_with() so that if an application is - running in a non-bce terminals with default colors enabled, it - returns true, allowing the user to select/paste text without picking - up extraneous trailing blanks (adapted from patch by Daniel - Jacobowitz ). - + modify generated curses.h to ifdef-out prototypes for extensions if - they are disabled, and to define curses_version() as a string in that - case. This is needed to make the programs such as tic build in that - configuration. - + modified generated headers.sh to remove a gzip'd version of the - target file if it exists, in case non-gzip'd manpages are installed - into a directory where gzip'd ones exist. In that case, the latter - would be found. - + corrected a redundant initialization of signal handlers from 20010922 - changes. - + clarified bug-reporting address in terminfo.src (report by John H - DuBois III ). - > several fixes from Robert Joop: - + do not use "-v" option of awk in MKkey_defs.sh because it does not - work with SunOS nawk. - + modify definitions for libutf8 in curses.h to avoid redefinition - warnings for mblen - + quoted references to compiler in shell command in misc/Makefile, in - case it uses multiple tokens. - -20011229 - + restore special case from 20010922 changes to omit SA_RESTART when - setting up SIGWINCH handler, which is needed to allow wgetch() to be - interrupted by that signal. - + updated configure macro CF_WITH_PATHLIST, to omit some double quotes - not needed with autoconf 2.52 - + revert configure script to autoconf 2.13 patched with - autoconf-2.13-19990117.patch.gz (or later) - from - ftp://invisible-island.net/autoconf/ - because autoconf 2.52 macro AC_PROG_AWK does not work on HPUX 11.0 - (report by David Ellement ). This also fixes a - different problem configuring with Mac OS X (reported by Marc Smith - ). - -20011222 - + modify include/edit_cfg.h to eliminate BROKEN_LINKER symbol from - term.h - + move prototype for _nc_vsscanf() into curses.h.in to omit - HAVE_VSSCANF symbol from curses.h, which was dependent upon the - ncurses_cfg.h file which is not installed. - + use ACS_LEN rather than SIZEOF(acs_map) in trace code of lib_acs.c, - to work with broken linker configuration, e.g., cygwin (report by - Robert Joop ). - + make napms() call _nc_timed_wait() rather than poll() or select(), - to work around broken implementations of these on cygwin. - -20011218 - + drop configure macro CF_WIDEC_SHIFT, since that was rendered obsolete - by Sven Verdoolaege's rewrite of wide-character support. This makes - libncursesw incompatible again, but makes the header files almost the - same as in the narrow-character configuration. - + simplify definitions that combine wide/narrow versions of bkgd, etc., - to eliminate differences between the wide/narrow versions of curses.h - + correct typo in configure macro CF_FUNC_VSSCANF - + correct location of call to _nc_keypad() from 20011215 changes which - prevented keypad() from being disabled (reported by Lars Hecking). - -20011215 - + rewrote ncurses 'a' test to exercise wgetch() and keypad() functions - better, e.g., by adding a 'w' command to create new windows which - may have different keypad() settings. - + corrected logic of keypad() by adding internal screen state to track - whether the terminal's keypad-mode has been set. Use this in - wgetch() to update the keypad-mode according to whether the - associated window's keypad-mode has been set with keypad(). This - corrects a related problem restoring terminal state after handling - SIGTSTP (reported by Mike Castle). - + regenerate configure using patch for autoconf 2.52 - autoconf-2.52-patch.gz - at - ftp://invisible-island.net/autoconf/ - + update config.guess, config.sub from - http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ - + minor changes to quoting in configure script to allow it to work - with autoconf 2.52 - -20011208 - + modify final checks in lib_setup.c for line and col values, making - them independent. - + modify acs_map[] if configure --broken-linker is specified, to make - it use a function rather than an array (prompted by an incorrect - implementation in cygwin package). - + correct spelling of configure option --enable-colorfgbg, which - happened to work if --with-develop was set (noted in cygwin package - for ncurses). - + modify ifdef for genericerror() to compile with SUNWspro Sun WorkShop - 6 update 1 C++ 5.2 (patch by Sullivan N Beck ). - + add configure checks to see if ncurses' fallback vsscanf() will - compile either of the special cases for FILE structs, and if not, - force it to the case which simply returns an error (report by - Sullivan N Beck indicates that Solaris 8 with - 64-bits does not allow access to FILE's fields). - + modify ifdef's for c++/cursesw.cc to use the fallback vsscanf() in - the ncurses library if no better substitute for this can be found - in the C++ runtime. - + modify the build to name dynamic libraries according to the - convention used on OS X and Darwin. Rather than something like - libncurses.dylib.5.2, Darwin would name it libncurses. 5.dylib. - There are a few additional minor fixes, such as setting the library - version and compatibility version numbers (patch by Jason Evans - ). - + use 'sh' to run mkinstalldirs, to work around problems with buggy - versions of 'make' on OS/2 (report by John Polterak ). - + correct typo in manpage description of curs_set() (Debian #121548). - + replace the configure script existence-check for mkstemp() by one - that checks if the function works, needed for older glibc and - AmigaOS. - -20011201 - + modify script that generates fallbacks.c to compile a temporary - copy of the terminfo source in case the host does not contain all of - the entries requested for fallbacks (request by Greg Roelofs). - + modify configure script to accommodate systems such as Mac OS X whose - header defines a 'bool' type inconsistent with ncurses, - which normally makes 'bool' consistent with C++. Include - from curses.h to force consistent usage, define a new type - NCURSES_BOOL and related that to the exported 'bool' as either a - typedef or definition, according to whether is present - (based on a bug report for tin 1.5.9 by Aaron Adams ). - -20011124 - + added/updated terminfo entries for M$ telnet and KDE konsole -TD - -20011117 - + updated/expanded Apple_Terminal and Darwin PowerPC terminfo entries - (Benjamin C W Sittler). - + add putty terminfo entry -TD - + if configuring for wide-curses, define _XOPEN_SOURCE_EXTENDED, since - this may not otherwise be defined to make test/view.c compile. - -20011110 - + review/correct several missing/generated items in curses.wide, sorted - the lists to make subsequent diff's easier to track. - -20011103 - + add manual pages for add_wch(), echo_wchar(), getcchar(), - mvadd_wch(), mvwadd_wch(), setcchar(), wadd_wch() and wecho_wchar(). - + implement wecho_wchar() - + modify _tracedump() to handle wide-characters by mapping them to '?' - and control-characters to '.', to make the trace file readable. Also - dynamically allocate the buffer used by _tracedump() for formatting - the results. - + modify T_CALLED/T_RETURN macros to ease balancing call/return lines - in a trace by using curly braces. - + implement _nc_viscbuf(), for tracing cchar_t arrays. - + correct trace-calls in setcchar() and getcchar() functions, which - traced the return values but not the entry to each function. - + correct usage message in test/view.c, which still mentioned -u flag. - -20011027 - + modify configure script to allow building with termcap only, or with - fallbacks only. In this case, we do not build tic and toe. - + add configure --with-termpath option, to override default TERMPATH - value of /etc/termcap:/usr/share/misc/termcap. - + cosmetic change to tack: make menu descriptions agree with menu - titles. - -20011020 - + rewrote limit-checks in wscrl() and associated _nc_scroll_window(), - to ensure that if the parameter of wscrl() is larger than the size of - the scrolling region, then the scrolling region will be cleared - (report by Ben Kohlen ). - + add trace/varargs.c, using this to trace parameters in lib_printw.c - + implement _tracecchar_t2() and _tracecchar_t(). - + split-out trace/visbuf.c - + correct typo in lib_printw.c changes from 20010922 (report by Mike - Castle). - -20011013 - + modify run_tic.sh to check if the build is a cross-compile. In that - case, do not use the build's tic to install the terminfo database - (report by Rafael Rodriguez Velilla ). - + modify mouse click resolution so that mouseinterval(-1) will disable - it, e.g., to handle touchscreens via a slow connection (request by - Byron Stanoszek ). - + correct mouseinterval() default value shown in curs_mouse.3x - + remove conflicting definition of mouse_trafo() (reported by Lars - Hecking, using gcc 2.95.3). - -20011001 - + simpler fix for signal_name(), to replace the one overlooked in - 20010929 (reported by Larry Virden). - -20010929 - + add -i option to view.c, to test ncurses' check for non-default - signal handler for SIGINT, etc. - + add cases for shared-libraries on Darwin/OS X (patch by Rob Braun - ). - + modify tset to restore original I/O modes if an error is encountered. - Also modify to use buffered stderr consistently rather than mixing - with write(). - + change signal_name() function to use if-then-else rather than case - statement, since signal-values aren't really integers (reported by - Larry Virden). - + add limit checks in wredrawln(), fixing a problem where lynx was - repainting a pad which was much larger than the screen. - -20010922 - + fix: PutRange() was counting the second part of a wide character as - part of a run, resulting in a cursor position that was one too far - (patch by Sven Verdoolaege). - + modify resizeterm() to not queue a KEY_RESIZE if there was no - SIGWINCH, thereby separating the two styles of SIGWINCH handling - in test/view.c - + simplified lib_tstp.c, modify it to use SA_RESTART flag for SIGWINCH. - + eliminate several static buffers in the terminfo compiler, using - allocated buffers. - + modify MKkeyname.awk so that keyname() does not store its result into - a static buffer that is overwritten by the next call. - + reorganize the output of infocmp -E and -e options to compile cleanly - with gcc -Wwrite-strings warnings. - + remove redefinition of chgat/wchgat/mvwchgat from curses.wide - -20010915 - + add label to test/view.c, showing the name of the last key or signal - that made the screen repaint, to make it clearer when a sigwinch - does this. - + use ExitProgram() consistently in the test-programs to make it - simpler to test leaks with dmalloc, etc. - + move hashtab static data out of hashmap.c into SCREEN struct. - + make NO_LEAK code compile with revised WINDOWLIST structs. - -20010908 - + modify tgetent() to check if exit_attribute_mode resets the alternate - character set, and if so, attempt to adjust the copy of the termcap - "me" string which it will return to eliminate that part. In - particular, 'screen' would lose track of line-drawing characters - (report by Frederic L W Meunier <0@pervalidus.net>, analysis by - Michael Schroeder). - -20010901 - + specify DOCTYPE in html manpages. - + add missing macros for several "generated" functions: attr_get(), - attr_off(), attr_on(), attr_set(), chgat(), mvchgat(), mvwchgat() and - mouse_trafo(). - + modify view.c to agree with non-experimental status of ncurses' - sigwinch handler: - + change the sense of the -r option, making it default to ncurses' - sigwinch handler. - + add a note explaining what functions are unsafe in a signal - handler. - + add a -c option, to set color display, for testing. - + unset $data variable in MKterminfo.sh script, to address potential - infinite loop if shell malfunction (report by Samuel Mikes - , for bash 2.05.0 on a Linux 2.0.36 system). - + change kbs in mach terminfo entries to ^? (Marcus Brinkmann - ). - + correct logic for COLORFGBG environment variable: if rxvt is compiled - with xpm support, the variable has three fields, making it slightly - incompatible with itself. In either case, the background color is - the last field. - -20010825 - + move calls to def_shell_mode() and def_prog_mode() before loop with - callbacks in lib_set_term.c, since the c++ demo otherwise initialized - the tty modes before saving them (patch by John David Anglin - ). - + duplicate logic used to initialize trace in newterm(), in initscr() - to avoid confusing trace of initscr(). - + simplify allocation of WINDOW and WINDOWLIST structs by making the - first a part of the second rather than storing a pointer. This saves - a call to malloc for each window (discussion with Philippe Blain). - + remove unused variable 'used_ncv' from lib_vidattr.c (Philippe - Blain). - + modify c++/Makefile.in to accommodate archive programs that are - different for C++ than for C, and add cases for vendor's C++ - compilers on Solaris and IRIX (report by Albert Chin-A-Young). - + correct manpage description of criteria for deciding if the terminal - supports xterm mouse controls. - + add several configure script options to aid with cross-compiling: - --with-build-cc, --with-build-cflags, --with-build-ldflags, and - --with-build-libs (request by Greg Roelofs). - + change criteria for deciding if configure is cross-compiling from - host/build mismatch to host/target mismatch (request by Greg Roelofs - ). - + correct logic for infocmp -e and -E options which writes the data for - the ext_Names[] array. This is needed if one constructs a fallback - table for a terminfo entry which uses extended termcap names, e.g., - AX in a color xterm. - + fix undefined NCURSES_PATHSEP when configure --disable-database - option is given. - -20010811 - + fix for VALID_BOOLEAN() macro when char is not signed. - + modify 'clean' rule for C++ binding to work with Sun compiler, which - caches additional information in a subdirectory of the objects. - + added llib-ncursesw. - -20010804 - + add Caps.keys example for experimental extended function keys - (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). - + 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). - + workaround for bug in HPUX 11.x C compiler: add a blank after - NCURSES_EXPORT macro in form.h (report by Albert Chin-A-Young) - + ignore blank lines in Caps* files in MKkey_defs.sh script (report by - Albert Chin-A-Young). - + correct definition of key_end in Caps.aix4, which left KEY_END - undefined (report by Albert Chin-A-Young). - + remove a QNX-specific fallback prototype for vsscanf(), which is - obsolete with QNX RTP. - + review/fix some of the T() and TR() macro calls, having noticed that - there was no data for delwin() in a trace of dialog because there was - no returnVoid call for wtimeout(). Also, traces in lib_twait.c are - now selected under TRACE_IEVENT rather than TRACE_CALLS. - -20010728 - + add a _nc_access() check before opening files listed via $TERMPATH. - + using modified man2html, regenerate some of the html manpages to fix - broken HREF's where the link was hyphenated. - -20010721 - + add some limit/pointer checks to -S option of tputs. - + updated/expanded Apple_Terminal and Darwin PowerPC terminfo entries - (Benjamin C W Sittler). - + add a note in curs_termcap.3x regarding a defect in the XSI - description of tgetent (based on a discussion with Urs Jansen - regarding the HPUX 11.x implementation, whose termcap interface is - not compatible with existing termcap programs). - + modify manhtml rule in dist.mk to preserve copyright notice on the - generated files, as well as to address HTML style issues reported by - tidy and weblint. Regenerated/updated corresponding html files. - + comment out use of Protected_Character and related rarely used - attributes in ncurses Ada95 test/demo to compile with wide-character - configuration. - -20010714 - + implement a simple example in C++ demo to test scanw(). - + corrected stdio function used to implement scanw() in cursesw.cc - + correct definition of RemAttr() macro from 20010602 changes, which - caused C++ SillyDemo to not show line-drawing characters. - + modify C++ binding, adding getKey() which can be overridden by user - to substitute functions other than getch() for keyboard processing - of forms and menus (patch by Juergen Pfeifer). - -20010707 - + fix some of the trace calls which needed modification to work with - new wide-character structures. - + modify magic-cookie code in tty_update.c to compile with new - wide-character structures (report by ). - + 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 - Verdoolaege). - -20010630 - + add configure check to define _GNU_SOURCE, needed to prop up glibc - header files. - + split-out include/curses.wide to solve spurious redefinitions caused - by defining _GNU_SOURCE, and move includes for before - to work around misdefinition of ERR in glibc 2.1.3 header - file. - + extended ospeed change to NetBSD and OpenBSD -TD - + modify logic in lib_baudrate.c for ospeed, for FreeBSD to make it - work properly for termcap applications (patch by Andrey A Chernov). - -20010623 - + correct an overlooked CharOf/UChar instance (reports by Eugene Lee - , Sven Verdoolaege). - + correct unneeded ifdef for wunctrl() (reported by Sven Verdoolaege) - -20010618 - + change overlooked several CharOf/UChar instances. - > several patches from Sven Verdoolaege: - + correct a typo in wunctrl(), which made it appear that botwc() was - needed (no such function: use btowc()). - + reimplement wide-character demo in test/view.c, using new functions. - + implement getcchar(), setcchar(), wadd_wchnstr() and related macros. - + fix a syntax problem with do/if/while in PUTC macro (curses.priv.h). - -20010616 - + add parentheses in macros for malloc in test.priv.h, fixes an - expression in view.c (report by Wolfgang Gutjahr ). - + add Caps.uwin, as an example. - + change the way curses.h is generated, making the list of function - key definitions extracted from the Caps file. - + add #undef's before possible redefinition of ERR and OK in curses.h - + modify logic in tic, toe, tput and tset which checks for basename of - argv[0] to work properly on systems such as OS/2 which have - case-independent filenames and/or program suffixes, e.g., ".ext". - -20010609 - + add a configure check, if --enable-widec is specified, for putwc(), - which may be in libutf8. - + remove some unnecessary text from curs_extend.3x and - default_colors.3x which caused man-db to make incorrect symbolic - links (Debian bug report #99550). - + add configure check if cast for _IO_va_list is needed to compile - C++ vscan code (Debian bug report #97945). - > several patches from Sven Verdoolaege: - + correct code that used non-standard auto-initialization of a struct, - which gcc allows (report by Larry Virden). - + use putwc() in PUTC() macro. - + make addstr() work for the special case where the codeset is - non-stateful (eg. UTF-8), as well as stateful codesets. - -20010603 - + correct loop expression in NEXT_CHAR macro for lib_addstr.c changes - from 20010602 (report by Mike Castle). - -20010602 - + modify mvcur() to avoid emitting newline characters when nonl() mode - is set. Normally this is not a problem since the actual terminal - mode is set to suppress nl/crlf translations, however it is useful to - allow the caller to manipulate the terminal mode to avoid staircasing - effects after spawning a process which writes messages (for lynx - 2.8.4) -TD - > several patches from Sven Verdoolaege : - + remove redundant type-conversion in fifo_push() - + correct definition of addwstr() macro in curses.h.in - + remove _nc_utf8_outch() - + rename most existing uses of CharOf() to UChar(), e.g., where it is - used to prevent sign-extension in ctype macros. - + change some chtype's to attr_t's where the corresponding variables - are used to manipulate attributes. - + UpdateAttr() was applied to both attributes (attr_t) and characters - (chtype). Modify macro and calls to it to make these distinct. - + add CharEq() macro, use in places where wide-character configuration - implementation uses a struct for cchar_t. - + moved struct ldat into curses.priv.h, to hide implementation details. - + change CharOf() macro to use it for masking A_CHARTEXT data from - chtype's. - + add L() macro to curses.priv.h, for long-character literals. - + replace several assignments from struct ldat entries to chtype or - char values with combinations of CharOf() and AttrOf() macros. - + add/use intermediate ChAttrOf() and ChCharOf() macros where we know - we are using chtype data. - + add/use lowlevel attribute manipulation macros AddAttr(), RemAttr() - and SetAttr(). - + add/use SetChar() macro, to change a cchar_t based on a character and - attributes. - + convert most internal use of chtype to NCURSES_CH_T, to simplify use - of cchar_t for wide-character configuration. Similarly, use ARG_CH_T - where a pointer would be more useful. - + add stubs for tracing cchar_t values. - + add/use macro ISBLANK() - + add/use constructors for cchar_t's: NewChar(), NewChar2(). - + add/use macros CHREF(), CHDEREF(), AttrOfD(), CharOfD() to facilitate - passing cchar_t's by address. - + add/use PUTC_DATA, PUTC() macros. - + for wide-character configuration, move the window background data to - the end of the WINDOW struct so that whether _XOPEN_SOURCE_EXTENDED - is defined or not, the offsets in the struct will not change. - + modify addch() to work with wide-characters. - + mark several wide-character functions as generated in curses.h.in - + implement wunctrl(), wadd_wch(), wbkgrndset(), wbkgrnd(), - wborder_set() and waddnwstr(). - -20010526 - + add experimental --with-caps=XXX option to customize to similar - terminfo database formats such as AIX 4.x - + add Caps.aix4 as an example. - + modify Caps to add columns for the the KEY_xxx symbols. - + modify configure --with-widec to suppress overwrite of libcurses.so - and curses.h - + add checks to toe.c to avoid being confused by files and directories - where we would expect the reverse, e.g., source-files in the - top-level terminfo levels as is the case for AIX. - -20010519 - + add top-level 'depend' rule for the C sources, assuming that the - makedepend program is available. As a side-effect, this makes - the generated sources, as in "make sources" (prompted by a report - by Mike Castle that "make -j" fails because the resulting parallel - processes race to generate ncurses/names.c). - + modify configure script so that --disable-overwrite option's action - to add a symbolic link for libcurses applies to the static library as - well as the shared library when both are configured (report by Felix - Natter ). - + add ELKS terminfo entries (Federico Bianchi - ) - + add u6 (CSR) to Eterm (Michael Jennings). - -20010512 - + modify test/ncurses.c to work with xterm-256color, which has fewer - color pairs than colors*colors (report by David Ellement - ). - -20010505 - + corrected screen.xterm-xfree86 entry. - + update comment in Caps regarding IBM (AIX) function-key definitions. - -20010421 - + modify c++/Makefile.in to link with libncurses++w.a when configured - for wide-characters (patch by Sven Verdoolaege). - + add check in _nc_trace_buf() to refrain from freeing a null pointer. - + improve CF_PROG_INSTALL macro using CF_DIRNAME. - + update config.guess, config.sub from autoconf 2.49e (alpha). - -20010414 - + add secondary check in tic.c, similar_sgr() to see if the reason - for mismatch was that the individual capabilities used a time-delay - while sgr did not. Used this to cleanup mismatches, e.g., in vt100, - and remove time-delay from Apple_Terminal entries. - + add Apple_Terminal terminfo entries (Benjamin C W Sittler - ). - + correct definitions of shifted editing keys for xterm-xfree86 -TD - + fix a bug in test/bs.c from 20010407 (patch by Erik Sigra). - + prevent relative_move() from doing an overwrite if it detects 8-bit - characters when configured for UTF-8 (reported by Sven Verdoolaege - ). - -20010407 - + add configure checks for strstream.h vscan function, and similar - stdio-based function which may be used in C++ binding for gcc 3.0 - (reports by George Goffe, Lars Hecking, Mike Castle). - + rewrite parts of configure.in which used changequote(). That feature - is broken in the latest autoconf alphas (e.g., 2.49d). - + add a missing pathname for ncurses_dll.h, needed when building in - a directory outside the source tree (patch by Sven Verdoolaege - ). - > fix 2 bugs in test/bs.c Erik Sigra : - + no ships were ever placed in the last row or in the last column. - This made the game very easy to win, because you never had to waste - any shots there, but the computer did. - + the squares around a sunken ship that belonged to the player were not - displayed as already hit by the computer, like it does for the - player. - -20010331 - + add some examples of customizing screen's terminfo: - screen.xterm-xfree86, screen.xterm-r6, screen.teraterm -TD - + modify screen's terminfo entry to match the khome/kend in screen - 3.09.08 (Debian bug report #92215). - + correct a memory leak in forms library (report by Stefan Vogtner - ) (patch by Juergen Pfeifer). - -20010324 - + change symbols used to guard against repeated includes to begin - consistently with "NCURSES_" rather than a leading underscore. There - are other symbols defined in the header files which begin with a - leading underscore, but they are part of the legacy interface. - + reorder includes in c++ binding so that rcs identifiers can be - compiled-in. - + add .cc.ii rule to c++ makefile, to get preprocessor output for - debugging. - + correct configure script handling of @keyword@ substitutions when the - --with-manpage-renames option is given (cf: 20000715, fixes Debian - bug #89939). - + report stack underflow/overflow in tparm() when tic -cv option is - given. - + remove spurious "%|" operator from xterm-xfree86 terminfo entry, - (reported by Adam Costello , Debian bug #89222). - -20010310 - + cleanup of newdemo.c, fixing some ambiguous expressions noted by gcc - 2.95.2, and correcting some conflicting color pair initializations. - + add missing copyright notice for cursesw.h - + review, make minor fixes for use of '::' for referring to C-language - interface from C++ binding. - + modify configure check for g++ library slightly to accommodate - nonstandard version number, e.g., -2.7 (report by Ronald Ho - ). - + add configure check for c++ header, replace hardcoded - ifdef. - + workaround for pre-release of gcc 3.0 libstdc++, which has dropped - vscan from strstreambuf to follow standard, use wrapper for C vscanf - instead (report by George Goffe and Matt Taggart - , fixes Debian . - -20010303 - + modify interface of _nc_get_token() to pass 'silent' parameter to it, - to make quieter loading of /etc/termcap (patch by Todd C Miller). - + correct a few typos in curs_slk.3x and curs_outopts.3x manpages - (patch by Todd C Miller). - -20010224 - + compiler-warning fixes (reported by Nelson Beebe). - -20010210 - + modify screen terminfo entry to use new 3.9.8 feature allowing xterm - mouse controls -TD - -20010203 - + broaden patterns used to match OS/2 EMX in configure script to cover - variant used in newer config.guess/config.sub - + remove changequote() calls from configure script, since this feature - is broken in the autoconf 2.49c alpha, maintainers decline to fix. - + remove macro callPutChar() from tty_update.c, since this is no longer - needed (reported by Philippe Blain). - + add a null-pointer check in tic.c to handle the case when the input - file is really empty. Modify the next_char() function in comp_scan.c - to allow arbitrarily long lines, and incidentally supply a newline to - files that do not end in a newline. These changes improve tic's - recovery from attempts to read binary files, e.g., its output from - the terminfo database (reported by Bernhard Rosenkraenzer). - -20010127 - + revert change to c++/demo.cc from 20001209, which changed definition - of main() apparently to accommodate cygwin linker, but broke the demo - program. - + workaround for broken egcs 2.91.66 which calls member functions - (i.e., lines() and colors() of NCursesWindow before calling its - constructor. Add calls to initialize() in a few constructors which - did not do this already. - + use the GNAT preprocessor to make the necessary switch between TRACE - and NO_TRACE configurations (patch by Juergen Pfeifer). - > patches by Bernhard Rosenkraenzer: - + modify kterm terminfo entry to use SCS sequence to support alternate - character set (it does not work with SI/SO). - + --with-ospeed=something didn't work. configure.in checked for a - $enableval where it should check for $withval. Also, - ncurses/llib-lncurses still had a hardcoded short. - -20010114 - + correction to my merge of Tom Riddle's patch that broke tic in some - conditions (reported by Enoch Wexler ) -TD - -20010113 - + modify view.c to test halfdelay(). Like other tests, this recognizes - the 's' and space commands for stopping/starting polled input, shows - a freerunning clock in the header. If given a parameter to 's', that - makes view.c use halfdelay() with that parameter rather than - nodelay(). - + fix to allow compile with the experimental configure option - --disable-hashmap. - + modify postprocess_termcap() to avoid overwriting key_backspace, - key_left, key_down when processing a non-base entry (report/patch by - Tom Riddle). - + modify _nc_wrap_entry(), adding option to reallocate the string - table, needed in _nc_merge_entry() when merging termcap entries. - (adapted from report/patch by Tom Riddle ). - + modify a few configure script macros to keep $CFLAGS used only for - compiler options, preprocessor options in $CPPFLAGS. - -20001230 - + correct marker positions in lrtest.c after receiving a sigwinch. - + fix ifdef's in ncurses.c to build against pre-5.2 for testing. - + fixes to tclock for resizing behavior, redundant computation (report - and patch by A M Kuchling ). - -20001216 - + improved scoansi terminfo entry -TD - + modify configure script and makefile in Ada95/src to compile a stub - for the trace functions when ncurses does not provide those. - -20001209 - + add ncurses_dll.h and related definitions to support generating DLL's - with cygwin (adapted from a patch by Charles Wilson - , changed NCURSES_EXPORT macro to make it - work with 'indent') -TD - -20001202 - + correct prototypes for some functions in curs_termcap.3x, matching - termcap.h, which matches X/Open. - > patch by Juergen Pfeifer: - + a revised version of the Ada enhancements sent in by "H. - Nanosecond", aka Eugene V Melaragno . This - patch includes - - small fixes to the existing ncurses binding - - addition of some more low-level functions to the binding, including - termcap and terminfo functions - - An Ada implementation of the "ncurses" test application originally - written in C. - -20001125 - + modify logic in lib_setup.c to allow either lines or columns value - from terminfo to be used if the screen size cannot be determined - dynamically rather than requiring both (patch by Ehud Karni - ). - + add check in lib_tgoto.c's is_termcap() function to reject null or - empty strings (reported by Valentin Nechayev to - freebsd-bugs). - + add definition from configure script that denotes the path-separator, - which is normally a colon. The path-separator is a semicolon on - OS/2 EMX and similar systems which may use a colon within pathnames. - + alter logic to set default for --disable-overwrite option to set it - to 'yes' if the --prefix/$prefix value is not /usr/local, thereby - accommodating the most common cause of problems: gcc's nonstandard - search rules. Other locations such as /usr/local/ncurses will - default to overwriting (report by Lars Hecking ). - -20001118 - + modify default for --disable-overwrite configure option to disable - if the --prefix or $prefix value is not /usr. - + add cygwin to systems for which ncurses is installed by default into - /usr rather than /usr/local. - -20001111 - + minor optimization in comp_error.c and lib_termname.c, using - strncat() to replace strncpy() (patch by Solar Designer). - + add a use_terminfo_vars() check for $HOME/.termcap, and check for - geteuid() to use_terminfo_vars() (patch by Solar Designer - ). - + improved cygwin terminfo entry, based on patch by - . - + modify _nc_write_entry() to allow for the possibility that linking - aliases on a filesystem that ignores case would not succeed because - the source and destination differ only by case, e.g., NCR260VT300WPP0 - on cygwin (report by Neil Zanella). - + fix a typo in the curs_deleteln.3x man page (patch by Bernhard - Rosenkraenzer ). - -20001104 - + add configure option --with-ospeed to assist packagers in transition - to 5.3 change to ospeed type. - + add/use CharOf() macro to suppress sign-extension of char type on - platforms where this is a problem in ctype macros, e.g., Solaris. - + change trace output to binary format. - + correct a missing quote adjustment in CF_PATH_SYNTAX autoconf - macro, for OS/2 EMX configuration. - + rearrange a few configure macros, moving preprocessor options to - $CPPFLAGS (a now-obsolete version of autoconf did not consistently - use $CPPFLAGS in both the compile and preprocessor checks). - + add a check in relative_move() to guard against buffer overflow in - the overwrite logic. - -20001028 - + add message to configure script showing g++ version. - + resync config.guess, config.sub - + modify lib_delwin.c, making it return ERR if the window did not exist - (suggested by Neil Zanella). - + add cases for FreeBSD 3.1 to tdlint and makellib scripts, used this - to test/review ncurses library. (Would use lclint, but it doesn't - work). - + reorganized knight.c to avoid forward references. Correct screen - updates when backtracking, especially to the first cell. Add F/B/a - commands. - -20001021 5.2 release for upload to ftp.gnu.org - + update generated html files from manpages. - + modify dist.mk to use edit_man.sh to substitute autoconf'd variables - in html manpages. - + fix an uninitialized pointer in read_termcap.c (report by Todd C - Miller, from report/patch by Philip Guenther ). - + correct help-message and array limit in knight.c (patch by Brian - Raiter ). - > patch by Juergen Pfeifer: - + fix to avoid warning by GNAT-3.13p about use of inconsistent casing - for some identifiers defined in the standard package. - + cosmetic change to forms/fty_enum.c - -20001014 - + correct an off-by-one position in test/railroad.c which could cause - wrapping at the right margin. - + test/repair some issues with libtool configuration. Make - --disable-echo force libtool --silent. (Libtool does not work for - OS/2 EMX, works partly for SCO - libtool is still very specific to - gcc). - + change default of --with-manpage-tbl to "no", since for most of the - platforms which do have tbl installed, the system "man" program - understands how to run tbl automatically. - + minor improvement to force_bar() in comp_parse.c (Bernhard - Rosenkraenzer ). - + modify lib_tparm.c to use get_space() before writing terminating - null character, both for consistency as well as to ensure that if - save_char() was called immediately before, that the allocated memory - is enough (patch by Sergei Ivanov). - + add note about termcap ML capability which is duplicated between two - different capabilities: smgl and smglr (reported by Sergei Ivanov - ). - + correct parameter counts in include/Caps for dclk as well as some - printer-specific capabilities: csnm, defc, scs, scsd, smgtp, smglp. - > patch by Johnny C Lam : - + add support for building with libtool (apparently version 1.3.5, - since old versions do not handle -L../lib), using new configure - option --with-libtool. - + add configure option --with-manpage-tbl, which causes the manpages to - be preprocessed by tbl(1) prior to installation, - + add configure option --without-curses-h, which causes the - installation process to install curses.h as ncurses.h and make - appropriate changes to headers and manpages. - -20001009 - + correct order of options/parameters in run_tic.in invocation of tic, - which did not work with standard getopt() (reported by Ethan - Butterfield ). - + correct logic for 'reverse' variable in lib_vidattr.c, which was - setting it true without checking if newmode had A_REVERSE set, e.g., - using $TERM=ansi on OS/2 EMX (see 20000917). - > patch by Todd C Miller: - + add a few missing use_terminfo_vars() and fixes up _nc_tgetent(). - Previously, _nc_cgetset() would still get called on cp so the - simplest thing is to set cp to NULL if !use_terminfo_vars(). - + added checks for an empty $HOME environment variable. - > patches for OS/2 EMX (Ilya Zakharevich): - + modify convert_configure.pl to support INSTALL. Change compiler - options in that script to use multithreading, needed for the mouse. - + modify OS/2 mouse support, retrying as a 2-button mouse if code fails - to set up a 3-button mouse. - + improve code for OS/2 mouse support, using _nc_timed_wait() to - replace select() call. - -20001007 - + change type of ospeed variable back to short to match its use in - legacy applications (reported by Andrey A Chernov). - + add case to configure script for --enable-rpath on IRIX (patch by - Albert Chin-A-Young). - + minor fix to position_check() function, to ensure it gets the whole - cursor report before decoding. - + add configure option --disable-assumed-color, to allow pre-5.1 - convention of default colors used for color-pair 0 to be configured - (see assume_default_colors()). - + rename configure option --enable-hashmap --disable-hashmap, and - reorder the configure options, splitting the experimental and - development - + add configure option --disable-root-environ, which tells ncurses to - disregard $TERMINFO and similar environment variables if the current - user is root, or running setuid/setgid (based on discussion with - several people). - + modified misc/run_tic.in to use tic -o, to eliminate dependency on - $TERMINFO variable for installs. - + add table entry for plab_norm to tput, so it passes in strings - for that capability. - + modify parse_format() in lib_tparm.c to ignore precision if it is - longer than 10000 (report by Jouko Pynnonen). - + rewrote limit checks in lib_mvcur.c using new functions - _nc_safe_strcat(), etc. Made other related changes to check lengths - used for strcat/strcpy (report by Jouko Pynnonen - ). - -20000930 - + modify several descriptions, including those for setaf, setab, in - include/Caps to indicate that the entries are parameterized. This - information is used to tell which strings are translated when - converting to termcap. Fixes a problem where the generated termcap - would contain a spurious "%p1" for the terminfo "%p1%d". - + modify ld -rpath options (e.g., Linux, and Solaris) to use an - 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. - + various fixes for install scripts used to support configure --srcdir - and --with-install-prefix (reported by Matthew Clarke - ). - + make configure script checks on variables $GCC and $GXX consistently - compare against 'yes' rather than test if they are nonnull, since - either may be set to the corresponding name of the C or C++ compiler - (report/patch by Albert Chin-A-Young). - -20000923 - + modify rs2 capability in xterm-r6 and similar where cursor - save/restore bracketed the sequence for resetting video attributes. - The cursor restore would undo that (report by John Hawkinson - (see NetBSD misc/11052)). - + using parameter check added to tic, corrected 27 typos in - terminfo.src -TD - + modify tic to verify that its inputs are really files, in case - someone tries to read a directory (or /dev/zero). - + add a check for empty buffers returned by fgets() in comp_scan.c - next_char() function, in case tic is run on a non-text file (fixes - a core dump reported by Aaron Campbell ). - + add to railroad.c some code exercising tgoto(), providing an - alternate form of display if the terminal supports cursor addressing. - + split-out tgoto() again, this time into new file lib_tgoto.c, and - implement a conventional BSD-style tgoto() which is used if the - capability string does not contain terminfo-style padding or - parameters (requested by Andrey A Chernov). - + add check to tic which reports capabilities that do not reference - the expected number of parameters. - + add error checking to infocmp's -v and -m options to ensure that - the option value is indeed a number. - + some cleanup of logic in _nc_signal_handler() to verify if SIGWINCH - handler is setup. Separated the old/new sigaction data for SIGTSTP - from the other signals. - -20000917 - + add S0, E0 extensions to screen's terminfo entry, which is another - way to solve the misconfiguration issue -TD - + completed special case for tgoto from 20000916 - -20000916 - + update xterm terminfo entries to match XFree86 xterm patch #146 -TD - + add Matrix Orbital terminfo entries (from Eric Z Ayers - ). - + add special case to lib_tparm.c to allow 'screen' program to use a - termcap-style parameter "%." to tgoto() for switching character sets. - + use LN_S substitution in run_tic.in, to work on OS/2 EMX which has - no symbolic links. - + updated notes in README.emx regarding autoconf patches. - + replace a lookup table in lib_vidattr.c used to decode no_color_video - with a logic expression (suggested by Philippe Blain). - + add a/A toggle to ncurses.c 'b' test, which clears/sets alternate - character set attribute from the displayed text. - + correct inequality in parameter analysis of rewritten lib_tparm.c - which had the effect of ignoring p9 in set_attributes (sgr), breaking - alternate character set (reported by Piotr Majka ). - + correct ifdef'ing for GCC_PRINTF, GCC_SCANF which would not compile - with Sun WorkShop compilers since these tokens were empty (cf: - 20000902, reported by Albert Chin-A-Young). - -20000909 - + correct an uninitialized parameter to open_tempfile() in tic.c which - made "tic -I" give an ambiguous error message about tmpnam. - + add special case in lib_vidattr.c to reset underline and standout for - devices that have no sgr0 defined (patch by Don Lewis - ). Note that this will not work for bold - mode, since there is no exit-bold-mode capability. - + improved patch for Make_Enum_Type (patch by Juergen Pfeifer). - + modify tparm to disallow arithmetic on strings, analyze the varargs - list to read strings as strings and numbers as numbers. - + modify tparm's internal function spop() to treat a null pointer as - an empty string. - + modify tput program so it can be renamed or invoked via a link as - 'reset' or 'init', producing the same effect as 'tput reset' or 'tput - init'. - + add private entrypoint _nc_basename(), use to consolidate related - code in progs, as well as accommodating OS/2 EMX pathnames. - + remove NCURSES_CONST line from edit_cfg.sh to compensate for its - removal (except via AC_SUBST) from configure.in, making - --enable-const work again (reported by Juergen Pfeifer). - + regen'd configure to pick up "hpux*" change from 20000902. - -20000902 - + modify tset.c to check for transformed "reset" program name, if any. - + add a check for null pointer in Make_Enum_Type() (reported by Steven - W Orr ). - + change functions _nc_parse_entry() and postprocess_termcap() to avoid - using strtok(), because it is non-reentrant (reported by Andrey A - Chernov ). - + remove "hpux10.*" case from CF_SHARED_OPTS configure script macro. - This differed from the "hpux*" case by using reversed symbolic - links, which made the 5.1 version not match the configuration of - 5.0 shared libraries (reported by Albert Chin-A-Young). - + correct a dependency in Ada95/src/Makefile.in which prevented - building with configure --srcdir (patch by H Nanosecond - ). - + modify ifdef's in curses.h.in to avoid warning if GCC_PRINTF or - GCC_SCANF was not previously defined (reported by Pavel Roskin - ). - + add MKncurses_def.sh to generate fallback definitions for - ncurses_cfg.h, to quiet gcc -Wundef warnings, modified ifdef's in - code to consistently use "#if" rather than "#ifdef". - -20000826 - + add QNX qansi entries to terminfo -TD - + add os2 entry to misc/emx.src (). - + add configure option --with-database to allow specifying a different - terminfo source-file to install. On OS/2 EMX, this defaults to - misc/emx.src - + change misc/run_tic.sh to derive it from misc/run_tic.in, to simplify - setting .exe extension on OS/2 EMX. - + add .exe extension in Ada95/gen/Makefile.in, - Ada95/samples/Makefile.in, for OS/2 EMX (reported by - ). - + add configure check for filesystems (such as OS/2 EMX) which do not - distinguish between upper/lowercase filenames, use this to fix tags - rules in makefiles. - + initialize fds[] array to 0's in _nc_timed_wait(); apparently poll() - only sets the revents members of that array when there is activity - corresponding to the related file (report by Glenn Cooper - , using Purify on Solaris 5.6). - + change configure script to use AC_CANONICAL_SYSTEM rather than - AC_CANONICAL_HOST, which means that configure --target will set - a default program-prefix. - + add note on cross-compiling to INSTALL (which does not rely on the - AC_CANONICAL_* macros). - -20000819 - + add cases for EMX OS/2 to config.guess, config.sub - + new version of config.guess, config.sub from lynx 2.8.4dev.7 - + add definitions via transform.h to allow tic and tput to check for - the transformed aliases rather than the original infotocap, etc. - + simplify transform-expressions in progs/Makefile.in, make the - uninstall rule work for transformed program names. - + change symbol used by --install-prefix configure option from - INSTALL_PREFIX to DESTDIR (the latter has become common usage - although the name is misleading). - + modify programs to use curses_version() string to report the version - of ncurses with which they are compiled rather than the - NCURSES_VERSION string. The function returns the patch level in - addition to the major and minor version numbers. - -20000812 - + modify CF_MAN_PAGES configure macro to make transformed program names - a parameter to that macro rather than embedding them in the macro. - + newer config.guess, config.sub (reference version used in lynx - 2.8.4dev.7). - + add configure option --with-default-terminfo-dir=DIR to allow - specifying the default terminfo database directory (request by Albert - Chin-A-Young). - + minor updates for terminfo.src from FreeBSD termcap change-history. - + correct notes in README and INSTALL regarding documentation files - that were moved from misc directory to doc (report by Rich Kulawiec - ). - + change most remaining unquoted parameters of 'test' in configure - script to use quotes, for instance fixing a problem in the - --disable-database option (reported by Christian Mondrup - ). - + minor adjustments to work around some of the incompatibilities/bugs - in autoconf 2.29a alpha. - + add -I/usr/local/include when --with-ncurses option is used in - test/configure script. - + correct logic in adjust_cancels(), which did not check both - alternatives when reclassifying an extended name between boolean, - number and string, causing an infinite loop in tic. - -20000730 - + correct a missing backslash in curses.priv.h - -20000729 - + change handling of non_dest_scroll_region in tty_update.c to clear - text after it is shifted in rather than before shifting out. Also - correct row computation (reported by Ruediger Kuhlmann - ). - + add/use new trace function to display chtype values from winch() and - getbkgd(). - + add trace mask TRACE_ATTRS, alter several existing _tracef calls that - trace attribute changes under TRACE_CALLS to use this. - + modify MKlib_gen.sh so that functions returning chtype will call - returnChar(). - + add returnChar() trace, for functions returning chtype. - + change indent.pro to line up parenthesis. - -20000722 - + fix a heap problem with the c++ binding (report by - , patch by Juergen Pfeifer). - + minor adjustment to ClrToEOL() to handle an out-of-bounds parameter. - + modify the check for big-core to force a couple of memory accesses, - which may work as needed for older/less-capable machines (if not, - there's still the explicit configure option). - > fixes based on diff's for Amiga and BeOS found at - http://www.mathematik.uni-karlsruhe.de/~kuhlmann/cross/ncurses/ - + alter definition of NCURSES_CONST to make it non-empty. - + add amiga-vnc terminfo entry. - + redefine 'TEXT' in menu.h for AMIGA, since it is reported to have - an (unspecified) symbol conflict. - + replaced case-statement in _nc_tracebits() for CSIZE with a table to - simplify working around implementations that define random - combinations of the related macros to zero. - + modify configure test for tcgetattr() to allow for old - implementations, e.g., on BeOS, which only defined it as a macro. - > patches by Bruno Haible: - + when checking LC_ALL/LC_CTYPE/LANG environment variables for UTF-8 - locale, ignore those which are set to an empty value, as per SUSV2. - + encode 0xFFFD in UTF-8 with 3 bytes, not 2. - + modify _nc_utf8_outch() to avoid sign-extension when checking for - out-of-range value. - -20000715 - + correct manlinks.sed script to avoid using ERE "\+", which is not - understood by older versions of sed (patch by Albert Chin-A-Young). - + implement configure script options that transform installed program - names, e.g., --program-prefix, including the manpage names and cross - references (patch by Albert Chin-A-Young ). - + correct several mismatches between manpage filename and ".TH" - directives, renaming dft_fgbg.3x to default_colors.3x and - menu_attribs.3x to menu_attributes.3x (report by Todd C Miller). - + correct missing includes for in several places, including - the C++ binding. This is not noted by gcc unless we use the - -fno-builtin option (reported by Igor Schein ). - + modified progs/tset.c and tack/sysdep.c to build with sgttyb - interface if neither termio or termios is available. Tested this - with FreeBSD 2.1.5 (which does have termios - but the sgttyb does - work). - -20000708 5.1 release for upload to ftp.gnu.org - + document configure options in INSTALL. - + 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(). - + add prototypes for touchline() and touchwin(), adding them to the - list of generated functions. - + modify fifo_push() to put ERR into the fifo just like other values to - return from wgetch(). It was returning without doing that, making - end-of-file condition incorrectly return a 0 (reported by Todd C - Miller). - + uncomment CC_SHARED_OPTS for progs and tack (see 971115), since they - are needed for SCO OpenServer. - + move _nc_disable_period from free_ttype.c to comp_scan.c to appease - dynamic loaders on SCO and IRIX64. - + add "-a" option to test/ncurses.c to invoke assume_default_colors() - for testing. - + correct assignment in assume_default_colors() which tells ncurses - whether to use default colors, or the assumed ones (reported by Gary - Funck ). - + review/correct logic in mk-1st.awk for making symbolic links for - shared libraries, in particular for FreeBSD, etc. - + regenerate misc/*.def files for OS/2 EMX dll's. - + correct quoting of values for CC_SHARED_OPTS in aclocal.m4 for - cases openbsd2*, openbsd*, freebsd* and netbsd* (patch by Peter - Wemm) (err in 20000610). - + minor updates to release notes, as well as adding/updating URLs for - examples cited in announce.html - > several fixes from Philippe Blain : - + correct placement of ifdef for NCURSES_XNAMES in function - _nc_free_termtype(), fixes a memory leak. - + add a call to _nc_synchook() to the end of function whline() like - that in wvline() (difference was in 1.9.4). - + make ClearScreen() a little faster by moving two instances of - UpdateAttr() out of for-loops. - + simplify ClrBottom() by eliminating the tstLine data, using for-loops - (cf: 960428). - -20000701 pre-release - + change minor version to 1, i.e., ncurses 5.1 - + add experimental configure option --enable-colorfgbg to check for - $COLORTERM variable as set by rxvt/aterm/Eterm. - + add Eterm terminfo entry (Michael Jennings ). - + modify manlinks.sed to pick aliases from the SYNOPSIS section, and - several manpages so manlinks.sed can find aliases for creating - symbolic links. - + add explanation to run_tic.sh regarding extended terminal - capabilities. - + change message format for edit_cfg.sh, since some people interpret - it as a warning. - + correct unescaped '$' in sysv5uw7*|unix_sv* rule for CF_SHARED_OPTS - configure macro (report by Thanh Ma ). - + correct logic in lib_twait.c as used by lib_mouse.c for GPM mouse - support when poll() is used rather than select() (prompted by - discussion with David Allen ). - -20000624 pre-release - + modify TransformLine() to check for cells with different color pairs - that happen to render the same display colors. - + apply $NCURSES_NO_PADDING to cost-computation in mvcur(). - + improve cost computation in PutRange() by accounting for the use - of parm_right_cursor in mvcur(). - + correct cost computation in EmitRange(), which was not using the - normalized value for cursor_address. - + newer config.guess, config.sub (reference version used in TIN 1.5.6). - -20000617 - + update config.guess, config.sub (reference version used in PCRE 3.2). - + resync changes to gnathtml against version 1.22, regenerated html - files under doc/html/ada using this (1.22.1.1). - + regenerated html files under doc/html/man after correcting top and - bottom margin options for man2html in dist.mk - + minor fixes to test programs ncurses 'i' and testcurs program to make - the subwindow's background color cover the subwindow. - + modify configure script so AC_MSG_ERROR is temporarily defined to a - warning in AC_PROG_CXX to make it recover from a missing C++ compiler - without requiring user to add --without-cxx option (adapted from - comment by Akim Demaille to autoconf mailing list). - + modify headers.sh to avoid creating temporary files in the build - directory when installing headers (reported by Sergei Pokrovsky - ) - -20000610 - + regenerated the html files under doc/html/ada/files and - doc/html/ada/funcs with a slightly-improved gnathtml. - + add kmous capability to linux terminfo entry to allow it to use - xterm-style events provided by gpm patch by Joerg Schoen. - + make the configure macro CF_SHARED_OPTS a little smarter by testing - if -fPIC is supported by gcc rather than -fpic. The former option - allows larger symbol tables. - + update config.guess and config.sub (patches by - Kevin Buettner (for elf64_ia64), - Bernd Kuemmerlen (for MacOS X)). - + add warning for 'tic -cv' about use of '^?' in terminfo source, which - is an extension. - -20000527 - + modify echo() behavior of getch() to match Solaris curses for - carriage return and backspace (reported by Neil Zanella). - + change _nc_flush() to a function. - + modify delscreen() to check if the output stream has been closed, and - if so, free the buffer allocated for setbuf (this provides an - ncurses-specific way to avoid a memory leak when repeatedly calling - newterm reported by Chipp C ). - + correct typo in curs_getch.3x manpage regarding noecho (reported by - David Malone ). - + add a "make libs" rule. - + make the Ada95 interface build with configure --enable-widec. - + if the configure --enable-widec option is given, append 'w' to names - of the generated libraries (e.g., libncursesw.so) to avoid conflict - with existing ncurses libraries. - -20000520 - + modify view.c to make a rudimentary viewer of UTF-8 text if ncurses - is configured with the experimental wide-character support. - + add a simple UTF-8 output driver to the experimental wide-character - support. If any of the environment variables LC_ALL, LC_CTYPE or - LANG contain the string "UTF-8", this driver will be used to - translate the output to UTF-8. This works with XFree86 xterm. - + modify configure script to allow building shared libraries on BeOS - (from a patch by Valeriy E Ushakov). - + modify lib_addch.c to allow repeated update to the lower-right - corner, rather than displaying only the first character written until - the cursor is moved. Recent versions of SVr4 curses can update the - lower-right corner, and behave this way (reported by Neil Zanella). - + add a limit-check in _nc_do_color(), to avoid using invalid color - pair value (report by Brendan O'Dea ). - -20000513 - + the tack program knows how to use smcup and rmcup but the "show caps - that can be tested" feature did not reflect this knowledge. Correct - the display in the menu tack/test/edit/c (patch by Daniel Weaver). - + xterm-16color does allow bold+colors, removed ncv#32 from that - terminfo entry. - -20000506 - + correct assignment to SP->_has_sgr_39_49 in lib_dft_fgbg.c, which - broke check for screen's AX capability (reported by Valeriy E Ushakov - ). - + change man2html rule in dist.mk to workaround bug in some - man-programs that ignores locale when rendering hyphenation. - + change web- and ftp-site to dickey.his.com - -20000429 - + move _nc_curr_token from parse_entry.c to comp_scan.c, to work around - problem linking tack on MacOS X DP3. - + include in lib_napms.c to compile on MacOS X DP3 - (reported by Gerben Wierda ). - + modify lib_vidattr.c to check for ncv fixes when pair-0 is not - default colors. - + add -d option to ncurses.c, to turn on default-colors for testing. - + add a check to _nc_makenew() to ensure that newwin() and newpad() - calls do not silently fail by passing too-large limits. - + add symbol NCURSES_SIZE_T to use rather than explicit 'short' for - internal window and pad sizes. Note that since this is visible in - the WINDOW struct, it would be an ABI change to make this an 'int' - (prompted by a question by Bastian Trompetter - , who attempted to create a 96000-line pad). - -20000422 - + add mgterm terminfo entry from NetBSD, minor adjustments to sun-ss5, - aixterm entries -TD - + modify tack/ansi.c to make it more tolerant of bad ANSI replies. An - example of an illegal ANSI resonse can be found using Microsoft's - Telnet client. A correct display can be found using a VT-4xx - terminal or XFree86 xterm with: - XTerm*VT100*decTerminalID: 450 - (patch by Daniel Weaver). - + modify gdc.c to recognize 'q' for quit, 's' for single-step and ' ' - for resume. Add '-n' option to force gdc's standard input to - /dev/null, to both illustrate the use of newterm() for specifying - alternate inputs as well as for testing signal handling. - + minor fix for configure option --with-manpage-symlinks, for target - directories that contain a period ('.') (reported by Larry Virden). - -20000415 - + minor additions to beterm entry (feedback from Rico Tudor) -TD - + corrections/updates for some IBM terminfo entries -TD - + modify _nc_screen_wrap() so that when exiting curses mode with - non-default colors, the last line on the screen will be cleared to - the screen's default colors (request by Alexander V Lukyanov). - + modify ncurses.c 'r' example to set nonl(), allowing control/M to be - read for demonstrating the REQ_NEW_LINE operation (prompted by a - question by Tony L Keith ). - + modify ncurses.c 'r' example of field_info() to work on Solaris 2.7, - documented extension of ncurses which allows a zero pointer. - + modify fmt_complex() to avoid buffer overflow in case of excess - recursion, and to recognize "%e%?" as a synonym for else-if, which - means that it will not recur for that special case. - + add logic to support $TERMCAP variable in case the USE_GETCAP symbol - is defined (patch by Todd C Miller). - + modify one of the m4 files used to generate the Ada95 sources, - to avoid using the token "symbols" (patch by Juergen Pfeifer). - -20000408 - + add terminfo entries bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig) - + correct spelling error in terminfo entry name: bq300-rv was given as - bg300-rv in esr's version. - + modify redrawwin() macro so its parameter is fully parenthesized - (fixes Debian bug report #61088). - + correct formatting error in dump_entry() which set incorrect column - value when no newline trimming was needed at the end of an entry, - before appending "use=" clauses (cf: 960406). - -20000401 - + add configure option --with-manpage-symlinks - + change unctrl() to render C1 characters (128-159) as ~@, ~A, etc. - + change makefiles so trace() function is provided only if TRACE is - defined, e.g., in the debug library. Modify related calls to - _tracechar() to use unctrl() instead. - -20000325 - + add screen's AX capability (for ECMA SGR 39 and 49) to applicable - terminfo entries, use presence of this as a check for a small - improvement in setting default colors. - + improve logic in _nc_do_color() implementing assume_default_colors() - by passing in previous color pair info to eliminate redundant call to - set_original_colors(). (Part of this is from a patch by Alexander - V Lukyanov). - + modify warning in _nc_trans_string() about a possibly too-long string - to do this once only rather than for each character past the - threshold (600). Change interface of _nc_trans_string() to allow - check for buffer overflow. - + correct use of memset in _nc_read_entry_source() to initialize ENTRY - struct each time before reading new data into it, rather than once - per loop (cf: 990301). This affects multi-entry in-core operations - such as "infocmp -Fa". - -20000319 - + remove a spurious pointer increment in _nc_infotocap() changes from - 20000311. Add check for '.' in format of number, since that also - is not permitted in termcap. - + correct typo in rxvt-basic terminfo from temporary change made while - integrating 20000318. - -20000318 - + revert part of the vt220 change (request by Todd C Miller). - + add ansi-* terminfo entries from ESR's version. - + add -a option to tic and infocmp, which retains commented-out - capabilities during source translation/comparison, e.g., captoinfo - and infotocap. - + modify cardfile.c to display an empty card if no input data file is - found, fixes a core dump in that case (reported by Bruno Haible). - + correct bracketing in CF_MATH_LIB configure macro, which gave wrong - result for OS/2 EMX. - + supply required parameter for _nc_resolve_uses() call in - read_termcap.c, overlooked in 20000311 (reported by Todd C Miller). - > patches by Bruno Haible : - + fix a compiler warning in fty_enum.c - + correct LIB_PREFIX expression for DEPS_CURSES in progs, tack - makefiles, which resulted in redundant linking (cf: 20000122). - -20000311 - + make ifdef's for BROKEN_LINKER consistent (patch by Todd C Miller). - + improved tack/README (patch by Daniel Weaver). - + modify tput.c to ensure that unspecified parameters are passed to - tparm() as 0's. - + add a few checks in infocmp to guard against buffer overflow when - displaying string capabilities. - + add check for zero-uses in infocmp's file_comparison() function - before calling _nc_align_termtype(). Otherwise one parameter is - indexed past the end of the uses-array. - + add an option -q to infocmp to specify the less verbose output, - keeping the existing format as the default, though not retaining the - previous behavior that made the -F option compare each entry to - itself. - + adapted patch by ESR to make infocmp -F less verbose -TD - (the submitted patch was unusable because it did not compile - properly) - + modify write_entry.c to ensure that absent or cancelled booleans - are written as FALSE, for consistency with infocmp which now - assumes this. Note that for the small-core configuration, tic - may not produce the same result as before. - + change some private library interfaces used by infocmp, e.g., - _nc_resolve_uses(). - + add a check in _nc_infotocap() to ensure that cm-style capabilities - accept only %d codes when converting the format from terminfo to - termcap. - + modify ENTRY struct to separate the data in 'parent' into the name - and link values (the original idea to merge both into 'parent' was - not good). - + discard repair_acsc(tterm); - > patch by Juergen Pfeifer: - + drop support for gnat 3.10 - + move generated documentation and html files under ./doc directory, - adding makefile rules for this to dist.mk - -20000304 - + correct conflicting use of tparm() in 20000226 change to tic, which - made it check only one entry at a time. - + fix errors in ncurses-intro.html and hackguide.html shown by Dave - Raggett's tidy. - + make the example in ncurses-intro.html do something plausible, and - corrected misleading comment (reported by Neil Zanella). - + modify pnoutrefresh() to set newscr->_leaveok as wnoutrefresh() does, - to fix a case where the cursor position was not updated as in - Solaris (patch by David Mosberger ). - + add a limit-check for wresize() to ensure that a subwindow does not - address out of bounds. - + correct offsets used for subwindows in wresize() (patch by Michael - Andres ). - + regenerate html'ized manual pages with man2html 3.0.1 (patch by - Juergen Pfeifer). This generated a file with a space in its name, - which I removed. - + fix a few spelling errors in tack. - + modify tack/Makefile.in to match linker options of progs/Makefile.in; - otherwise it does not build properly for older HPUX shared library - configurations. - + add several terminfo entries from esr's "11.0". - -20000226 - + make 'tput flash' work properly for xterm by flushing output in - delay_output() when using napms(), and modifying xterm's terminfo to - specify no padding character. Otherwise, xterm's reported baud rate - can mislead ncurses into producing too few padding characters - (Debian #58530). - + add a check to tic for consistency between sgr and the separate - capabilities such as smso, use this to check/correct several - terminfo entries (Debian #58530). - + add a check to tic if cvvis is the same as cnorm, adjusted several - terminfo entries to remove the conflict (Debian #58530). - + correct prototype shown in attr_set()/wattr_set() manpages (fixes - Debian #53962). - + minor clarification for curs_set() and leaveok() manpages. - + use mkstemp() for creating temporary file for tic's processing of - $TERMCAP contents (fixes Debian #56465). - + correct two errors from integrating Alexander's changes: did not - handle the non-bce case properly in can_erase_with() (noted by - Alexander), and left fg/bg uninitialized in the pair-zero case of - _nc_do_color() (reported by Dr Werner Fink and - Ismael Cordeiro ). - -20000219 - + store default-color code consistently as C_MASK, even if given as - -1 for convenience (adapted from patches by Alexander V Lukyanov). - > patches by Alexander V Lukyanov: - + change can_clear_with() macro to accommodate logic for - assume_default_colors(), making most of the FILL_BCE logic - unnecessary. Made can_clear_with() an inline function to make it - simpler to read. - -20000212 - + corrected form of recent copyright dates. - + minor corrections to xterm-xf86-v333 terminfo entry -TD - > patches by Alexander V Lukyanov: - + reworded dft_fgbg.3x to avoid assuming that the terminal's default - colors are white on black. - + fix initialization of tstLine so that it is filled with current blank - character in any case. Previously it was possible to have it filled - with old blank. The wrong over-optimization was introduced in 991002 - patch. (it is not very critical as the only bad effect is not using - clr_eos for clearing if blank has changed). - -20000205 - + minor corrections/updates to several terminfo entries: rxvt-basic, - vt520, vt525, ibm5151, xterm-xf86-v40 -TD - + modify ifdef's for poll() to allow it to use , thereby - allowing poll() to be used on Linux. - + add CF_FUNC_POLL macro to check if poll() is able to select from - standard input. If not we will not use it, preferring select() - (adapted from patch by Michael Pakovic ). - + update CF_SHARED_OPTS macro for SCO Unixware 7.1 to allow building - shared libraries (reported/tested by Thanh ). - + override $LANGUAGE in build to avoid incorrect ordering of keynames. - + correct CF_MATH_LIB parameter, must be sin(x), not sqrt(x). - -20000122 - + resync CF_CHECK_ERRNO and CF_LIB_PREFIX macros from tin and xterm -TD - + modify CF_MATH_LIB configure macro to parameterize the test function - used, for reuse in dialog and similar packages. - + correct tests for file-descriptors in OS/2 EMX mouse support. A - negative value could be used by FD_SET, causing the select() call - to wait indefinitely. - -20000115 - + additional fixes for non-bce terminals (handling of delete_character) - to work when assume_default_colors() is not specified. - + modify warning message from _nc_parse_entry() regarding extended - capability names to print only if tic/infocmp/toe have the -v flag - set, and not at all in ordinary user applications. Otherwise, this - warning would be shown for screen's extended capabilities in programs - that use the termcap interface (reported by Todd C Miller). - + modify use of _nc_tracing from programs such as tic so their debug - level is not in the same range as values set by trace() function. - + small panel header cleanup (patch by Juergen Pfeifer). - + add 'railroad' demo for termcap interface. - + modify 'tic' to write its usage message to stderr (patch by Todd C - Miller). - -20000108 - + add prototype for erase() to curses.h.in, needed to make test - programs build with c++/g++. - + add .c.i and .c.h suffix rules to generated makefiles, for debugging. - + correct install rule for tack.1; it assumed that file was in the - current directory (reported by Mike Castle ). - + modify terminfo/termcap translation to suppress acsc before trying - sgr if the entry would be too large (patch by Todd C Miller). - + document a special case of incompatiblity between ncurses 4.2 and - 5.0, add a section for this in INSTALL. - + add TRACE_DATABASE flag for trace(). - -20000101 - + update mach, add mach-color terminfo entries based on Debian diffs - for ncurses 5.0 -TD - + add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp - terminfo entries -TD - + change OTrs capabilities to rs2 in terminfo.src -TD - + add obsolete and extended capabilities to 'screen' terminfo -TD - + corrected conversion from terminfo rs2 to termcap rs (cf: 980704) - + make conversion to termcap ug (underline glitch) more consistently - applied. - + fix out-of-scope use of 'personal[]' buffer in 'toe' (this error - was in the original pre-1.9.7 version, when $HOME/.terminfo was - introduced). - + modify 'toe' to ignore terminfo directories to which it has no - permissions. - + modify read_termtype(), fixing 'toe', which could dump core when it - found an incomplete entry such as "dumb" because it did not - initialize its buffer for _nc_read_file_entry(). - + use -fPIC rather than -fpic for shared libraries on Linux, not - needed for i386 but some ports (from Debian diffs for 5.0) -TD - + use explicit VALID_NUMERIC() checks in a few places that had been - overlooked, and add a check to ensure that init_tabs is nonzero, - to avoid divide-by-zero (reported by Todd C Miller). - + minor fix for CF_ANSI_CC_CHECK configure macro, for HPUX 10.x (from - tin) -TD - -19991218 - + reorder tests during mouse initialization to allow for gpm to run in - xterm, or for xterm to be used under OS/2 EMX. Also drop test for - $DISPLAY in favor of kmous=\E[M or $TERM containing "xterm" (report - by Christian Weisgerber ). - + modify raw() and noraw() to clear/restore IEXTEN flag which affects - stty lnext on systems such as FreeBSD (report by Bruce Evans - , via Jason Evans ). - + fix a potential (but unlikely) buffer overflow in failed() function - of tset.c (reported by Todd C Miller). - + add manual-page for ncurses extensions, documented curses_version(), - use_extended_names(). - -19991211 - + treat as untranslatable to termcap those terminfo strings which - contain non-decimal formatting, e.g., hexadecimal or octal. - + correct commented-out capabilities that cannot be translated to - termcap, which did not check if a colon must be escaped. - + correct termcap translation for "%>" and "%+", which did not check - if a colon must be escaped, for instance. - + use save_string/save_char for _nc_captoinfo() to eliminate fixed - buffer (originally for _nc_infotocap() in 960301 -TD). - + correct expression used for terminfo equivalent of termcap %B, - adjust regent100 entry which uses this. - + some cleanup and commenting of ad hoc cases in _nc_infotocap(). - + eliminate a fixed-buffer in tic, used for translating comments. - + add manpage for infotocap - -19991204 - + add kvt and gnome terminfo entries -TD - + correct translation of "%%" by infotocap, which was emitted as "%". - + add "obsolete" termcap strings to terminfo.src - + modify infocmp to default to showing obsolete capabilities rather - than terminfo only. - + modify write_entry.c so that if extended names (i.e., configure - --enable-tcap-names) are active, then tic will also write "obsolete" - capabilities that are present in the terminfo source. - + modify tic so that when running as captoinfo or infotocap, it - initializes the output format as in -C and -I options, respectively. - + improve infocmp and tic -f option by splitting long strings that do - not have if-then-else construct, but do have parameters, e.g., the - initc for xterm-88color. - + refine MKtermsort.sh slightly by using bool for the *_from_termcap - arrays. - -19991127 - + additional fixes for non-bce terminals (handling of clear_screen, - clr_eol, clr_eos, scrolling) to work when assume_default_colors() is - not specified. - + several small changes to xterm terminfo entries -TD. - + move logic for _nc_windows in lib_freeall.c inside check for nonnull - SP, since it is part of that struct. - + remove obsolete shlib-versions, which was unintentionally re-added - in 970927. - + modify infocmp -e, -E options to ensure that generated fallback.c - type for Booleans agrees with term.h (reported by Eric Norum - ). - + correct configure script's use of $LIB_PREFIX, which did not work - for installing the c++ directory if $libdir did not end with "/lib" - (reported by Huy Le ). - + modify infocmp so -L and -f options work together. - + modify the initialization of SP->_color_table[] in start_color() so - that color_content() will return usable values for COLORS greater - than 8. - + modify ncurses 'd' test in case COLORS is greater than 16, e.g., for - xterm-88color, to limit the displayed/computed colors to 16. - > patch by Juergen Pfeifer: - + simplify coding of the panel library according to suggestions by - Philippe Blain. - + improve macro coding for a few macros in curses.priv.h - -19991113 - + modify treatment of color pair 0 so that if ncurses is configured - to support default colors, and they are not active, then ncurses - will set that explicitly, not relying on orig_colors or orig_pair. - + add new extension, assume_default_colors() to provide better control - over the use of default colors. - + modify test programs to use more-specific ifdef's for existence of - wresize(), resizeterm() and use_default_colors(). - + modify configure script to add specific ifdef's for some functions - that are included when --enable-ext-funcs is in effect, so their - existence can be ifdef'd in the test programs. - + reorder some configure options, moving those extensions that have - evolved from experimental status into a new section. - + change configure --enable-tcap-names to enable this by default. - -19991106 - + install tack's manpage (reported by Robert Weiner - ) - + correct worm.c's handling of KEY_RESIZE (patch by Frank Heckenbach). - + modify curses.h.in, undef'ing some symbols to avoid conflict with C++ - STL (reported by Matt Gerassimoff ) - -19991030 - + modify linux terminfo entry to indicate that dim does not mix with - color (reported by Klaus Weide ). - + correct several typos in terminfo entries related to missing '[' - in CSI's -TD - + fix several compiler warnings in c++ binding (reported by Tim - Mooney for alphaev56-dec-osf4.0f - + rename parameter of _nc_free_entries() to accommodate lint. - + correct lint rule for tack, used incorrect list of source files. - + add case to config.guess, config.sub for Rhapsody. - + improve configure tests for libg++ and libstdc++ by omitting the - math library (which is missing on Rhapsody), and improved test for - the math library itself (adapted from path by Nelson H. F. Beebe). - + explicitly initialize to zero several data items which were - implicitly initialized, e.g., cur_term. If not explicitly - initialized, their storage type is C (common), and causes problems - linking on Rhapsody 5.5 using gcc 2.7.2.1 (reported by Nelson H. F. - Beebe). - + modify Ada95 binding to not include the linker option for Ada - bindings in the Ada headers, but in the Makefiles instead (patch by - Juergen Pfeifer). - -19991023 5.0 release for upload to ftp.gnu.org - + effective with release of 5.0, change NCURSES_VERSION_PATCH to - 4-digit year. - + add function curses_version(), to return ncurses library version - (request by Bob van der Poel). - + remove rmam, smam from cygwin terminfo entry. - + modify FreeBSD cons25 terminfo entry to add cnorm and cvvis, as well - as update ncv to indicate that 'dim' conflicts with colors. - + modify configure script to use symbolic links for FreeBSD shared - libraries by default. - + correct ranf() function in rain and worm programs to ensure it does - not return 1.0 - + hide the cursor in hanoi.c if it is running automatically. - + amend lrtest.c to account for optimizations that exploit margin - wrapping. - + add a simple terminfo demo, dots.c - + modify SIGINT/SIGQUIT handler to set a flag used in _nc_outch() to - tell it to use write() rather than putc(), since the latter is not - safe in a signal handler according to POSIX. - + add/use internal macros _nc_flush() and NC_OUTPUT to hide details - of output-file pointer in ncurses library. - + uncomment CC_SHARED_OPTS (see 971115), since they are needed for SCO - OpenServer. - + correct CC_SHARED_OPTS for building shared libraries for SCO - OpenServer. - + remove usleep() from alternatives in napms(), since it may interact - with alarm(), causing a process to be interrupted by SIGALRM (with - advice from Bela Lubkin). - + modify terminal_interface-curses-forms.ads.m4 to build/work with - GNAT 3.10 (patch by Juergen Pfeifer). - + remove part of CF_GPP_LIBRARY configure-script macro, which did not - work with gcc 2.7.2.3 - + minor fix to test/tclock.c to avoid beeping more than once per second - + add 's' and ' ' decoding to test/rain.c - -991016 pre-release - + corrected BeOS code for lib_twait.c, making nodelay() function work. - -991009 pre-release - + correct ncurses' value for cursor-column in PutCharLR(), which was - off-by-one in one case (patch by Ilya Zakharevich). - + fix some minor errors in position_check() debugging code, found while - using this to validate the PutCharLR() patch. - + modify firework, lrtest, worm examples to be resizable, and to - recognize 'q' for quit, 's' for single-step and ' ' for resume. - + restore reverted change to terminal_interface-curses-forms.ads.m4, - add a note on building with gnat 3.10p to Ada95/TODO. - + add a copy of the standalone configure script for the test-directory - to simplify testing on SCO and Solaris. - -991002 pre-release - + minor fixes for _nc_msec_cost(), color_content(), pair_content(), - _nc_freewin(), ClrBottom() and onscreen_mvcur() (analysis by Philippe - Blain, comments by Alexander V Lukyanov). - + simplify definition of PANEL and eliminate internal functions - _nc_calculate_obscure(), _nc_free_obscure() and _nc_override(), - (patch by Juergen Pfeifer, analysis by Philippe Blain - )). - + change renaming of dft_fgbg.3x to use_default_colors.3ncurses in - man_db.renames, since Debian is not concerned with 14-character - filename limitation (Debian bug report by Josip Rodin - ). - + corrected scoansi terminfo entry by testing with scoterm and console. - + revert change from 990614 to terminal_interface-curses-forms.ads.m4, - since this does not work for gnat 3.10p - + modify tclock example to be resizable (if ncurses' sigwinch handler - is used), and in color. - + use $(CC) rather than 'gcc' in MK_SHARED_LIB symbols, used for Linux - shared library rules. - -990925 pre-release - + add newer NetBSD console terminfo entries - + add amiga-8bit terminfo entry (from Henning 'Faroul' Peters - ) - + remove -lcurses -ltermcap from configure script's check for the gpm - library, since they are not really necessary (a properly configured - gpm library has no dependency on any curses library), and if the - curses library is not installed, this would cause the test to fail. - + modify tic's -C option so that terminfo "use=" clauses are translated - to "tc=" clauses even when running it as captoinfo. - + modify CF_STDCPP_LIBRARY configure macro to perform its check only - for GNU C++, since that library conflicts with SGI's libC on IRIX-6.2 - + modify CF_SHARED_OPTS configure macro to support build on NetBSD with - ELF libraries (patch by Bernd Ernesti ). - + correct a problem in libpanel, where the _nc_top_panel variable was - not set properly when bottom_panel() is called to hide a panel which - is the only one on the stack (report/analysis by Michael Andres - , patch by Juergen Pfeifer). - -990918 pre-release - + add acsc string to HP 70092 terminfo entry (patch by Joerg Wunsch - ). - + add top-level uninstall.data and uninstall.man makefile rules. - + correct logic of CF_LINK_FUNCS configure script, from BeOS changes so - that hard-links work on Unix again. - + change default value of cf_cv_builtin_bool to 1 (suggested by - Jeremy Buhler), making it less likely that a conflicting declaration - of bool will be seen when compiling with C++. - -990911 pre-release - + improved configure checks for builtin.h - + minor changes to C++ binding (remove static initializations, and make - configure-test for parameter initializations) for features not - allowed by vendor's C++ compilers (reported by Martin Mokrejs, this - applies to SGI, though I found SCO has the same characteristics). - + corrected quoting of ETIP_xxx definitions which support old versions - of g++, e.g., those using -lg++ - + remove 'L' code from safe_sprintf.c, since 'long double' is not - widely portable. safe_sprintf.c is experimental, however, and - exists mainly as a fallback for systems without snprintf (reported - by Martin Mokrejs , for IRIX 6.2) - + modify definition of _nc_tinfo_fkeys in broken-linker configuration - so that it is not unnecessarily made extern (Jeffrey C Honig). - -990904 pre-release - + move definition for builtin.h in configure tests to specific check - for libg++, since qt uses the same filename incompatibly. - + correct logic of lib_termcap.c tgetstr function, which did not copy - the result to the buffer parameter. Testing shows Solaris does - update this, though of course tgetent's buffer is untouched (reported - in Peter Edwards in - mpc.lists.freebsd.current newsgroup. - + corrected beterm terminfo entry, which lists some capabilities which - are not actually provided by the BeOS Terminal. - + add special logic to replace select() calls on BeOS, whose select() - function works only for sockets. - + correct missing escape in mkterm.h.awk.in, which caused part - of the copyright noticed to be omitted (reported by Peter - Wemm ). - > several small changes to make the c++ binding and demo work on OS/2 - EMX (related to a clean reinstall of EMX): - + correct library-prefix for c++ binding; none is needed. - + add $x suffix to make_hash and make_keys so 'make distclean' works. - + correct missing $x suffix for tack, c++ demo executables. - + split CF_CXX_LIBRARY into CF_GPP_LIBRARY (for -lg++) and - CF_STDCPP_LIBRARY (for -lstdc++) - -990828 pre-release - + add cygwin terminfo entry -TD - + modify CF_PROG_EXT configure macro to set .exe extension for cygwin. - + add configure option --without-cxx-binding, modifying the existing - --without-cxx option to check only for the C++ compiler - characteristics. Whether or not the C++ binding is needed, the - configure script checks for the size/type of bool, to make ncurses - match. Otherwise C++ applications cannot use ncurses. - -990821 pre-release - + updated configure macros CF_MAKEFLAGS, CF_CHECK_ERRNO - + minor corrections to beterm terminfo entry. - + modify lib_setup.c to reject values of $TERM which have a '/' in - them. - + add ifdef's to guard against CS5, CS6, CS7, CS8 being zero, as more - than one is on BeOS. That would break a switch statement. - + add configure macro CF_LINK_FUNCS to detect and work around BeOS's - nonfunctional link(). - + improved configure macros CF_BOOL_DECL and CF_BOOL_SIZE to detect - BeOS's bool, which is declared as an unsigned char. - -990814 pre-release - + add ms-vt100 terminfo entry -TD - + minor fixes for misc/emx.src, based on testing with tack. - + minor fix for test/ncurses.c, test 'a', in case ncv is not set. - -990731 pre-release - + minor correction for 'screen' terminfo entry. - + clarify description of errret values for setupterm in manpage. - + modify tput to allow it to emit capabilities for hardcopy terminals - (patch by Goran Uddeborg ). - + modify the 'o' (panel) test in ncurses.c to show the panels in color - or at least in bold, to test Juergen's change to wrefresh(). - > patches by Juergen Pfeifer: - + Fixes a problem using wbkgdset() with panels. It has actually - nothing to with panels but is a problem in the implementation of - wrefresh(). Whenever a window changes its background attribute to - something different than newscr's background attribute, the whole - window is touched to force a copy to newscr. This is an unwanted - side-effect of wrefresh() and it is actually not necessary. A - changed background attribute affects only further outputs of - background it doesn't mean anything to the current content of the - window. So there is no need to force a copy. (reported by Frank - Heckenbach ). - + an upward compatible enhancement of the NCursesPad class in the C++ - binding. It allows one to add a "viewport" window to a pad and then - to use panning to view the pad through the viewport window. - -990724 pre-release - + suppress a call to def_prog_mode() in the SIGTSTP handler if the - signal was received while not in curses mode, e.g., endwin() was - called in preparation for spawning a shell command (reported by Frank - Heckenbach ) - + corrected/enhanced xterm-r5, xterm+sl, xterm+sl-twm terminfo entries. - + change test for xterm mouse capability: it now checks only if the - user's $DISPLAY variable is set in conjunction with the kmous - capability being present in the terminfo. Before, it checked if any - of "xterm", "rxvt" or "kterm" were substrings of the terminal name. - However, some emulators which are incompatible with xterm in other - ways do support the xterm mouse capability. - + reviewed and made minor changes in ncurses to quiet g++ warnings - about shadowed or uninitialized variables. g++ incorrectly warns - about uninitialized variables because it does not take into account - short-circuit expression evaluation. - + change ncurses 'b' test to start in color pair 0 and to show in the - right margin those attributes which are suppressed by no_color_video, - i.e., "(NCV)". - + modify ifdef's in curses.h so that __attribute__ is not redefined - when compiling with g++, but instead disabled the macros derived for - __attribute__ since g++ does not consistently recognize the same - keywords as gcc (reported by Stephan K Zitz ). - + update dependencies for term.h in ncurses/modules (reported by - Ilya Zakharevich). - -990710 pre-release - + modify the form demo in ncurses.c to illustrate how to manipulate the - field appearance, e.g, for highlighting or translating the field - contents. - + correct logic in write_entry from split-out of home_terminfo in - 980919, which prevented update of $HOME/.terminfo (reported by Philip - Spencer ). - -990703 pre-release - + modify linux terminfo description to make use of kernel 2.2.x mods - that support cursor style, e.g., to implement cvvis (patch by Frank - Heckenbach ) - + add special-case in setupterm to retain previously-saved terminal - settings in cur_term, which happens when curses and termcap calls are - mixed (from report by Bjorn Helgaas ). - + suppress initialization of key-tries in _nc_keypad() if we are only - disabling keypad mode, e.g., in endwin() called when keypad() was - not. - + modify the Ada95 makefile to ensure that always the Ada files from - the development tree are used for building and not the eventually - installed ones (patch by Juergen Pfeifer). - -990626 pre-release - + use TTY definition in tack/sysdep.c rather than struct termios - (reported by Philippe De Muyter). - + add a fallback for strstr, used in lib_mvcur.c and tack/edit.c, - not present on sysV68 (reported by Philippe De Muyter). - + correct definition in comp_hash.c to build with configure - --with-rcs-ids option. - -990619 pre-release - + modified ifdef's for sigaction and sigvec to ensure we do not try to - handle SIGTSTP if neither is available (from report by Philippe De - Muyter). - > patch by Philippe De Muyter: - + in tic.c, use `unlink' if `remove' is not available. - + use only `unsigned' as fallback value for `speed_t'. Some files used - `short' instead. - -990616 pre-release - + fix some compiler warnings in tack. - + add a check for predefined bool type in CC, based on report that - BeOS predefines a bool type. - + correct logic for infocmp -e option, i.e., the configure - --with-fallbacks option, which I'd not updated when implementing - extended names (cf: 990301). The new implementation adds a "-E" - option to infocmp -TD - > patch by Juergen Pfeifer: - + introduce the private type Curses_Bool in the Ada95 binding - implementation. This is to clearly represent the use of "bool" also - in the binding. It should have no effect on the generated code. - + improve the man page for field_buffer() to tell the people, that the - whole buffer including leading/trailing spaces is returned. This is - a common source of confusion, so it's better to document it clearly. - -990614 pre-release - > patch by Juergen Pfeifer: - + use pragma PreElaborate in several places. - + change a few System.Address uses to more specific types. - + change interface version-number to 1.0 - + regenerate Ada95 HTML files. - -990612 pre-release - + modify lib_endwin.c to avoid calling reset_shell_mode(), return ERR - if it appears that curses was never initialized, e.g., by initscr(). - For instance, this guards against setting the terminal modes to - strange values if endwin() is called after setupterm(). In the same - context, Solaris curses will dump core. - + modify logic that avoids a conflict in lib_vidattr.c between sgr0 and - equivalent values in rmso or rmul by ensuring we do not modify the - data which would be returned by the terminfo or termcap interfaces - (reported by Brad Pepers , cf: 960706). - + add a null-pointer check for SP in lib_vidattr.c to logic that checks - for magic cookies. - + improve fallback declaration of 'bool' when the --without-cxx option - is given, by using a 'char' on i386 and related hosts (prompted by - discussion with Alexander V Lukyanov). - -990605 pre-release - + include time.h in lib_napms.c if nanosleep is used (patch by - R Lindsay Todd ). - + add an "#undef bool" to curses.h, in case someone tries to define it, - e.g., perl. - + add check to tparm to guard against divide by zero (reported by Aaron - Campbell ). - -990516 pre-release - + minor fix to build tack on CLIX (mismatched const). - > patch by Juergen Pfeifer: - + change Juergen's old email address with new one in the files where it - is referenced. The Ada95 HTML pages are regenerated. - + update MANIFEST to list the tack files. - -990509 pre-release - + minor fixes to make 'tack' build/link on NeXT (reported by Francisco - A. Tomei Torres). - -990417 pre-release - + add 'tack' program (which is GPL'd), updating it to work with the - modified TERMTYPE struct and making a fix to support setaf/setab - capabilities. Note that the tack program is not part of the - ncurses libraries, but an application which can be distributed with - ncurses. The configure script will ignore the directory if it is - omitted, however. - + modify gpm mouse support so that buttons 2 and 3 are used for - select/paste only when shift key is pressed, making them available - for use by an application (patch by Klaus Weide). - + add complete list of function keys to scoansi terminfo entry - TD - -990410 pre-release - + add a simple test program cardfile.c to illustrate how to read form - fields, and showing forms within panels. - + change shared-library versioning for the Hurd to be like Linux rather - than *BSD (patch by Mark Kettenis ). - + add linux-lat terminfo entry. - + back-out _nc_access check in read_termcap.c (both incorrect and - unnecessary, except to guard against a small window where the file's - ownership may change). - -990403 pre-release - + remove conflicting _nc_free_termtype() function from test module - lib_freeall.c - + use _nc_access check in read_termcap.c for termpaths[] array (noted - by Jeremy Buhler, indicating that Alan Cox made a similar patch). - > patch by Juergen Pfeifer: - + modify menu creation to not inherit status flag from the default menu - which says that the associated marker string has been allocated and - should be freed (bug reported by Marek Paliwoda" - ) - -990327 pre-release (alpha.gnu.org:/gnu/ncurses-5.0-beta1.tar.gz) - + minor fixes to xterm-xfree86 terminfo entry - TD. - + split up an expression in configure script check for ldconfig to - workaround limitation of BSD/OS sh (reported by Jeff Haas - ). - + correct a typo in man/form_hook.3x (Todd C Miller). - -990318 pre-release - + parenthesize and undef 'index' symbol in c++ binding and demo, to - accommodate its definition on NeXT (reported by Francisco A. Tomei - Torres). - + add sigismember() to base/sigaction.c compatibility to link on NeXT - (reported by Francisco A. Tomei Torres). - + further refinements to inequality in hashmap.c to cover a case with - ^U in nvi (patch by Alexander V Lukyanov). - -990316 pre-release - + add fallback definition for getcwd, to link on NeXT. - + add a copy of cur_term to tic.c to make it link properly on NeXT - (reported by Francisco A. Tomei Torres). - + change inequality in hashmap.c which checks the distance traveled by - a chunk so that ^D command in nvi (scrolls 1/2 screen) will use - scrolling logic (patch by Alexander V Lukyanov, reported by Jeffrey - C Honig). - -990314 pre-release - + modify lib_color.c to handle a special case where the curscr - attributes have been made obsolete (patch by Alexander V Lukyanov). - + update BSD/OS console terminfo entries to use klone+sgr and - klone+color (patch by Jeffrey C Honig). - + update glibc addon configure script for extended capabilities. - + correct a couple of warnings in the --enable-const configuration. - + make comp_hash build properly with _nc_strdup(), on NeXT (reported by - Francisco A. Tomei Torres ). - -990313 pre-release - + correct typos in linux-c initc string - TD - + add 'crt' terminfo entry, update xterm-xfree86 entry - TD - + remove a spurious argument to tparm() in lib_sklrefr.c (patch by - Alexander V Lukyanov). - -990307 pre-release - + back-out change to wgetch because it causes a problem with ^Z - handling in lynx (reported by Kim DeVaughn). - -990306 pre-release - + add -G option to tic and infocmp, to reverse the -g option. - + recode functions in name_match.c to avoid use of strncpy, which - caused a 4-fold slowdown in tic (cf: 980530). - + correct a few warnings about sign-extension in recent changes. - > patch by Juergen Pfeifer: - + fixes suggested by Jeff Bradbury : - + improved parameter checking in new_fieldtype(). - + fixed a typo in wgetch() timeout handling. - + allow slk_init() to be called per newterm call. The internal SLK - state is stored in the SCREEN struct after every newterm() and then - reset for the next newterm. - + fix the problem that a slk_refresh() refreshes stdscr if the - terminal has true SLKs. - + update HTML documentation for Ada binding. - -990301 pre-release - + remove 'bool' casts from definitions of TRUE/FALSE so that statements - such as "#if TRUE" work. This was originally done to allow for a C++ - compiler which would warn of implicit conversions between enum and - int, but is not needed for g++ (reported by Kim DeVaughn). - + add use_extended_names() function to allow applications to suppress - read of the extended capabilities. - + add configure option --enable-tcap-names to support logic which - allows ncurses' tic to define new (i.e., extended) terminal - capabilities. This is activated by the tic -x switch. The infocmp - program automatically shows or compares extended capabilities. - Note: This changes the Strings and similar arrays in the TERMTYPE - struct so that applications which manipulate it must be recompiled. - + use macros typeMalloc, typeCalloc and typeRealloc consistently - throughout ncurses library. - + add _nc_strdup() to doalloc.c. - + modify define_key() to allow multiple strings to be bound to the - same keycode. - + correct logic error in _nc_remove_string, from 990220. - > patch for Ada95 binding (Juergen Pfeifer): - + regenerate some of the html documentation - + minor cleanup in terminal_interface-curses.adb - -990220 pre-release - + resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in - xterm and ncsa terminfo entries by removing the unneeded ones. Note - that some entries will return kend & khome versus kslt and kfnd, for - PC-style keyboards versus strict vt220 compatiblity - TD - + add function keybound(), which returns the definition associated with - a given keycode. - + modify define_key() to undefine the given string when no keycode is - given. - + modify keyok() so it works properly if there is more than one string - defined for a keycode. - + add check to tic to warn about terminfo descriptions that contain - more than one key assigned to the same string. This is shown only if - the verbose (-v) option is given. Moved related logic (tic -v) from - comp_parse.c into the tic program. - + add/use _nc_trace_tries() to show the function keys that will be - recognized. - + rename init_acs to _nc_init_acs (request by Alexander V Lukyanov). - > patch for Ada95 binding (Juergen Pfeifer): - + remove all the *_adabind.c from ncurses, menu and form projects. - Those little helper routines have all been implemented in Ada and are - no longer required. - + The option handling routines in menu and form have been made more - save. They now make sure that the unused bits in options are always - zero. - + modify configuration scripts to - + use gnatmake as default compiler name. This is a safer choice than - gcc, because some GNAT implementations use other names for the - compilerdriver to avoid conflicts. - + use new default installation locations for the Ada files according - to the proposed GNU Ada filesystem standard (for Linux). - + simplify the Makefiles for the Ada binding - + rename ada_include directory to src. - -990213 - + enable sigwinch handler by default. - + disable logic that allows setbuf to be turned off/on, because some - implementations will overrun the buffer after it has been disabled - once. - -990206 - + suppress sc/rc capabilities from terminal description if they appear - in smcup/rmcup. This affects only scrolling optimization, to fix a - problem reported by several people with xterm's alternate screen, - though the problem is more general. - > patch for Ada95 binding (Juergen Pfeifer): - + removed all pragma Preelaborate() stuff, because the just released - gnat-3.11p complains on some constructs. - + fixed some upper/lower case notations because gnat-3.11p found - inconsistent use. - + used a new method to generate the HTML documentation of the Ada95 - binding. This invalidates nearly the whole ./Ada95/html subtree. - Nearly all current files in this subtree are removed - -990130 - + cache last result from _nc_baudrate, for performance (suggested by - Alexander V Lukyanov). - + modify ClrUpdate() function to workaround a problem in nvi, which - uses redrawwin in SIGTSTP handling. Jeffrey C Honig reported that - ncurses repainted the screen with nulls before resuming normal - operation (patch by Alexander V Lukyanov). - + generalize is_xterm() function a little by letting xterm/rxvt/kterm - be any substring rather than the prefix. - + modify lib_data.c to initialize SP. Some linkers, e.g., IBM's, will - not link a module if the only symbols exported from the module are - uninitialized ones (patch by Ilya Zakharevich). Ilya says that he - has seen messages claiming this behavior conforms to the standard.) - + move call on _nc_signal_handler past _nc_initscr, to avoid a small - window where Nttyb hasn't yet been filled (reported by Klaus Weide). - + modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a - problem where ncurses applications which were run via a shell script - would hang when given a ^Z. Also, check if the terminal's process - group is consistent, i.e., a shell has not taken ownership of it, - before deciding to save the current terminal settings in the SIGTSTP - handler (patch by Klaus Weide). - + correct spelling of ACS_ names in curs_border.3x (reported by Bob van - der Poel ). - + correct a couple of typos in the macros supporting the configure - --with-shlib-version option. - -990123 - + modify fty_regex.c to compile on HAVE_REGEXPR_H_FUNCS machine (patch - by Kimio Ishii ). - + rename BSDI console terminfo entries: bsdos to bsdos-pc-nobold, and - bsdos-bold to bsdos-pc (patch by Jeffrey C Honig). - + modify tput to accept termcap names as an alternative to terminfo - names (patch by Jeffrey C Honig). - + correct a typo in term.7 (Todd C Miller). - + add configure --with-shlib-version option to allow installing shared - libraries named according to release or ABI versions. This - parameterizes some existing logic in the configure script, and is - intended for compatiblity upgrades on Digital Unix, which used - versioned libraries in ncurses 4.2, but no longer does (cf: 980425). - + resync configure script against autoconf 2.13 + patches - + minor improvements for teraterm terminfo entry based on the program's - source distribution. - -990116 - + change default for configure --enable-big-core to assume machines do - have enough memory to resolve terminfo.src in-memory. - + correct name of ncurses library in TEST_ARGS when configuring with - debug library. - + minor fixes to compile ncurses library with broken-linker with g++. - + add --enable-broken-linker configure option, default to environment - variable $BROKEN_LINKER (request by Jeffrey C Honig). - + change key_names[] array to static since it is not part of the curses - interface (reported by Jeffrey C Honig ). - -990110 - + add Tera Term terminfo entry - TD - -990109 - + reviewed/corrected macros in curses.h as per XSI document. - + provide support for termcap PC variable by copying it from terminfo - data and using it as the padding character in tputs (reported by - Alexander V Lukyanov). - + corrected iris-ansi and iris-ansi-ap terminfo entries for kent and - kf9-kf12 capabilities, as well as adding kcbt. - + document the mouse handling mechanism in menu_driver and make a small - change in menu_driver's return codes to provide more consistency - (patch by Juergen Pfeifer). - + add fallback definition for NCURSES_CONST to termcap.h.in (reported - by Uchiyama Yasushi ). - + move lib_restart.c to ncurses/base, since it uses curses functions - directly, and therefore cannot be used in libtinfo.so - + rename micro_char_size to micro_col_size, adding #define to retain - old name. - + add set_a_attributes and set_pglen_inch to terminfo structure, as per - XSI and Solaris 2.5. - + minor makefile files to build ncurses test_progs - + update html files in misc directory to reflect changes since 4.2 - -990102 - + disable scroll hints when hashmap is enabled (patch by Alexander - V Lukyanov). - + move logic for tic's verify of -e option versus -I and -C so that the - terminfo data is not processed if we cannot handle -e (reported by - Steven Schwartz . - + add test-driver traces to terminfo and termcap functions. - + provide support for termcap ospeed variable by copying it from the - internal cur_term member, and using ospeed as the baudrate reference - for the delay_output and tputs functions. If an application does not - set ospeed, the library behaves as before, except that _nc_timed_wait - is no longer used, or needed, since ospeed always has a value. But - the application can modify ospeed to adjust the output of padding - characters (prompted by a bug report for screen 3.7.6 and email from - Michael Schroeder ). - + removed some unused ifdef's as part of Alexander's restructuring. - + reviewed/updated curses.h, term.h against X/Open Curses Issue 4 - Version 2. This includes making some parameters NCURSES_CONST - rather than const, e.g., in termcap.h. - + change linux terminfo entry to use ncv#2, since underline does not - work with color - -981226 - + miscellaneous corrections for curses.h to match XSI. - + change --enable-no-padding configure option to be normally enabled. - + add section to ncurses manpage for environment variables. - + investigated Debian bug report that pertains to screen 3.7.4/3.7.6 - changes, found no sign of problems on Linux (or on SunOS, Solaris) - running screen built with ncurses. - + check if tmp_fp is opened in tic.c before closing it (patch by Pavel - Roskin ). - + correct several font specification typos in man-pages. - -981220 - + correct default value for BUILD_CC (reported by Larry Virden). - -981219 - + modify _nc_set_writedir() to set a flag in _nc_tic_dir() to prevent - it from changing the terminfo directory after chdir'ing to it. - Otherwise, a relative path in $TERMINFO would confuse tic (prompted - by a Debian bug report). - + correct/update ncsa terminfo entry (report by Larry Virden). - + update xterm-xfree86 terminfo to current (patch 90), smcur/rmcur - changes - + add Mathew Vernon's mach console entries to terminfo.src - + more changes, moving functions, as part of Alexander's restructuring. - + modify configure script for GNU/Hurd share-library support, introduce - BUILD_CC variable for cross compiling (patch by Uchiyama Yasushi - ) - -981212 - + add environment variable NCURSES_NO_SETBUF to allow disabling the - setbuf feature, for testing purposes. - + correct ifdef's for termcap.h versus term.h that suppress redundant - declarations of prototypes (reported by H.J.Lu). - + modify Makefile.os2 to add linker flags which allow multiple copies - of an application to coexist (reported by Ilya Zakharevich). - + update Makefile.glibc and associated configure script so that ncurses - builds as a glibc add-on with the new directory configuration - (reported by H.J.Lu). - -981205 - + modify gen_reps() function in gen.c to work properly on SunOS - (sparc), which is a left-to-right architecture. - + modify relative_move and tputs to avoid an interaction with the - BSD-style padding. The relative_move function could produce a string - to replace on the screen which began with a numeric character, which - was then interpreted by tputs as padding. Now relative_move will not - generate a string with a leading digit in that case (overwrite). - Also, tputs will only interpret padding if the string begins with a - digit; as coded it permitted a string to begin with a decimal point - or asterisk (reported by Larry Virden). - > patches by Juergen Pfeifer: - + fix a typo in m_driver.c mouse handling and improves the error - handling. - + fix broken mouse handling in the Ada95 binding - + make the Ada95 sample application menus work with the new menu mouse - support - + improve the mouse handling introduced by Ilya; it now handles menus - with spacing. - + repair a minor bug in the menu_driver code discovered during this - rework. - + add new function wmouse_trafo() to hide implementation details of - _yoffset member of WINDOW struct needed for mouse coordinate - transformation. - -981128 - + modify Ada95/gen/gen.c to avoid using return-value of sprintf, since - some older implementations (e.g., SunOS 4.x) return the buffer - address rather than its length. - > patch by Rick Ohnemus: - + modify demo.cc to get it to compile with newer versions of egcs. - + trim a space that appears at the end of the table preprocessor lines - ('\" t). This space prevents some versions of man from displaying - the pages - changed to remove all trailing whitespace (TD) - + finally, 'make clean' does not remove panel objects. - > patches by Ilya Zakharevich: - + allow remapping of OS/2 mouse buttons using environment variable - MOUSE_BUTTONS_123 with the default value 132. - + add mouse support to ncurses menus. - -981121 - + modify misc/makedef.cmd to report old-style .def file symbols, and to - generate the .def files sorted by increasing names rather than the - reverse. - + add misc/*.ref which are J.J.G.Ripoll's dll definition files (renamed - from misc/*.old), and updated based on the entrypoint coding he used - for an older version of ncurses. - + add README.emx, to document how to build on OS/2 EMX. - + updates for config.guess, config.sub from Lynx - > patches by Ilya Zakharevich: - + minor fixes for mouse handling mode: - a) Do not initialize mouse if the request is to have no mouse; - b) Allow switching of OS/2 VIO mouse on and off. - + modify Makefile.os2 to support alternative means of generating - configure script, by translating Unix script with Perl. - > patches by Juergen Pfeifer: - + Updates MANIFEST to reflect changes in source structure - + Eliminates a problem introduced with my last patch for the C++ - binding in the panels code. It removes the update() call done in the - panel destructor. - + Changes in the Ada95 binding to better support systems where - sizeof(chtype)!=sizeof(int) (e.g. DEC Alpha). - -981114 - + modify install-script for manpages to skip over .orig and .rej files - (request by Larry Virden). - > patches/discussion by Alexander V Lukyanov: - + move base-library sources into ncurses/base and tty (serial terminal) - sources into ncurses/tty, as part of Alexander V Lukyanov's proposed - changes to ncurses library. - + copy _tracemouse() into ncurses.c so that lib_tracemse.c need not - be linked into the normal ncurses library. - + move macro winch to a function, to hide details of struct ldat - > patches by Juergen Pfeifer: - + fix a potential compile problem in cursesw.cc - + some Ada95 cosmetics - + fix a gen.c problem when compiling on 64-Bit machines - + fix Ada95/gen/Makefile.in "-L" linker switch - + modify Ada95 makefiles to use the INSTALL_PREFIX setting. - -981107 - + ifdef'd out lib_freeall.c when not configured. - + rename _tracebits() to _nc_tracebits(). - + move terminfo-library sources into ncurses/tinfo, and trace-support - functions into ncurses/trace as part of Alexander V Lukyanov's - proposed changes to ncurses library. - + modify generated term.h to always specify its own definitions for - HAVE_TERMIOS_H, etc., to guard against inclusion by programs with - broken configure scripts. - -981031 - + modify terminfo parsing to accept octal and hexadecimal constants, - like Solaris. - + remove an autoconf 2.10 artifact from the configure script's check - for "-g" compiler options. (Though harmless, this confused someone - at Debian, who recently issued a patch that results in the opposite - effect). - + add configure option --with-ada-compiler to accommodate installations - that do not use gcc as the driver for GNAT (patch by Juergen - Pfeifer). - -981017 - + ensure ./man exists in configure script, needed when configuring - with --srcdir option. - + modify infocmp "-r" option to remove limit on formatted termcap - output, which makes it more like Solaris' version. - + modify captoinfo to treat no-argument case more like Solaris' - version, which uses the contents of $TERMCAP as the entry to format. - + modify mk-2nd.awk to handle subdirectories, e.g., ncurses/tty - (patch by Alexander V Lukyanov). - -981010 - + modify --with-terminfo-dirs option so that the default value is the - ${datadir} value, unless $TERMINFO_DIRS is already set. This gets - rid of a hardcoded list of candidate directories in the configure - script. - + add some error-checking to _nc_read_file_entry() to ensure that - strings are properly terminated (Todd C Miller). - + rename manpage file curs_scr_dmp.3x to curs_scr_dump.3x, to - correspond with contents (reported by Neil Zanella - ). - + remove redundant configure check for C++ which did not work when $CXX - was specified with a full pathname (reported by Andreas Jaeger). - + corrected bcopy/memmove check; the macro was not standalone. - -981003 - + remove unnecessary portion of OS/2 EMX mouse change from - check_pending() (reported by Alexander V Lukyanov). - -980926 - + implement mouse support for OS/2 EMX (adapted from patch against - 4.2(?) by Ilya Zakharevich). - + add configure-check for bcopy/memmove, for 980919 changes to hashmap. - + merge Data General terminfo from Hasufin - TD - + merge AIX 3.2.5 terminfo descriptions for IBM terminals, replaces - some older entries - TD - + modify tic to compile into %'char' form in preference to %{number}, - since that is a little more efficient. - + minor correction to infocmp to avoid displaying "difference" between - two capabilities that are rendered in equivalent forms. - + add -g option to tic/infocmp to force character constants to be - displayed in quoted form. Otherwise their decimal values are shown. - + modify setupterm so that cancelled strings are treated the same as - absent strings, cancelled and absent booleans false (does not affect - tic, infocmp). - + modify tic, infocmp to discard redundant i3, r3 strings when output - to termcap format. - > patch by Alexander V Lukyanov: - + improve performance of tparm, now it takes 19% instead of 25% when - profiling worm. - + rename maxlen/minlen to prec/width for better readability. - + use format string for printing strings. - + use len argument correctly in save_text, and pass it to save_number. - -980919 - + make test_progs compile (but hashmap does not function). - + correct NC_BUFFERED macro, used in lib_mvcur test-driver, modify - associated logic to avoid freeing the SP->_setbuf data. - + add modules home_terminfo and getenv_num to libtinfo. - + move write_entry to libtinfo, to work with termcap caching. - + minor fixes to blue.c to build with atac. - + remove softscroll.c module; no longer needed for testing. - > patches by Todd C Miller: - + use strtol(3) instead of atoi(3) when parsing env variables so we can - detect a bogus (non-numeric) value. - + check for terminal names > MAX_NAME_SIZE in a few more places when - dealing with env variables again. - + fix a MAX_NAME_SIZE that should be MAX_NAME_SIZE+1 - + use sizeof instead of strlen(3) on PRIVATE_INFO since it is a fixed - string #define (compile time vs runtime). - + when setting errno to ENOMEM, set it right before the return, not - before code that could, possibly, set errno to a different value. - > patches by Alexander V Lukyanov: - + use default background in update_cost_from_blank() - + disable scroll-hints when hashmap is configured. - + improve integration of hashmap scrolling code, by adding oldhash and - newhash data to SP struct. - + invoke del_curterm from delscreen. - + modify del_curterm to set cur_term to null if it matches the - function's parameter which is deleted. - + modify lib_doupdate to prefer parm_ich to the enter_insert_mode and - exit_insert_mode combination, adjusting InsCharCost to check - enter_insert_mode, exit_insert_mode and insert_padding. Add - insert_padding in insert mode after each char. This adds new costs - to the SP struct. - -980912 - + modify test-driver in lib_mvcur.s to use _nc_setbuffer, for - consistent treatment. - + modify ncurses to restore output to unbuffered on endwin, and resume - buffering in refresh (see lib_set_term.c and NC_BUFFERED macro). - + corrected HTML version numbers (according to the W3C validator, they - never were HTML 2.0-compliant, but are acceptable 3.0). - -980905 - + modify MKterminfo.sh to generate terminfo.5 with tables sorted by - capability name, as in SVr4. - + modified term.h, termcap.h headers to avoid redundant declarations. - + change 'u_int' type in tset.c to unsigned, making this compile on - Sequent PRX 4.1 (reported by Michael Sterrett ). - -980829 - + corrections to mailing addresses, and moving the magic line that - causes the man program to invoke tbl to the first line of each - manpage (patch by Rick Ohnemus ). - + add Makefile.os2 and supporting scripts to generate dll's on OS/2 EMX - (from J.J.G.Ripoll, with further integration by TD). - + correct a typo in icl6404 terminfo entry. - + add xtermm and xtermc terminfo entries. - > from esr's terminfo version: - + Added Francesco Potorti's tuned Wyse 99 entries. - + dtterm enacs (from Alexander V Lukyanov). - + Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version. - -980822 - + document AT&T acs characters in terminfo.5 manpage. - + use EMX _scrsize() function if terminfo and environment do not - declare the screen size (reported by Ilya Zakharevich - ). - + remove spurious '\' characters from eterm and osborne terminfo - entries (prompted by an old Debian bug report). - + correct reversed malloc/realloc calls in _nc_doalloc (reported by - Hans-Joachim Widmaier ). - + correct misplaced parenthesis which caused file-descriptor from - opening termcap to be lost, from 980725 changes (reported by Andreas - Jaeger). - -980815 - + modify lib_setup.c to eliminate unneeded include of - when termios is not used (patch by Todd C Miller). - + add function _nc_doalloc, to ensure that failed realloc calls do not - leak memory (reported by Todd C Miller). - + improved ncsa-telnet terminfo entry. - -980809 - + correct missing braces around a trace statement in read_entry.c, - from 980808 (reported by Kim DeVaughn and Liviu - Daia). - -980808 - + fix missing include in ditto.c (reported by Bernhard - Rosenkraenzer ) - + add NCSA telnet terminfo entries from Francesco Potorti - , from Debian bug reports. - + make handling of $LINES and $COLUMNS variables more compatible with - Solaris by allowing them to individually override the window size - as obtained via ioctl. - -980801 - + modify lib_vidattr.c to allow for terminal types (e.g., xterm-color) - which may reset all attributes in the 'op' capability, so that colors - are set before turning on bold and other attributes, but still after - turning attributes off. - + add 'ditto.c' to test directory to illustrate use of newterm for - initializing multiple screens. - + modify _nc_write_entry() to recover from failed attempt to link alias - for a terminfo on a filesystem which does not preserve character case - (reported by Peter L Jordan ). - -980725 - + updated versions of config.guess and config.sub based on automake 1.3 - + change name-comparisons in lib_termcap to compare no more than 2 - characters (gleaned from Debian distribution of 1.9.9g-8.8, verified - with Solaris curses). - + fix typo in curs_insstr.3x (patch by Todd C Miller) - + use 'access()' to check if ncurses library should be permitted to - open or modify files with fopen/open/link/unlink/remove calls, in - case the calling application is running in setuid mode (request by - Cristian Gafton , responding to Duncan Simpson - ). - + arm100 terminfo entries from Dave Millen ). - + qnxt2 and minitel terminfo entries from esr's version. - -980718 - + use -R option with ldconfig on FreeBSD because otherwise it resets - the search path to /usr/lib (reported by Dan Nelson). - + add -soname option when building shared libraries on OpenBSD 2.x - (request by QingLong). - + add configure options --with-manpage-format and - --with-manpage-renames (request by QingLong). - + correct conversion of CANCELLED_NUMERIC in write_object(), which was - omitting the high-order byte, producing a 254 in the compiled - terminfo. - + modify return-values of tgetflag, tgetnum, tgetstr, tigetflag, - tigetnum and tigetstr to be compatible with Solaris (gleaned from - Debian distribution of 1.9.9g-8.8). - + modify _nc_syserr_abort to abort only when compiled for debugging, - otherwise simply exit with an error. - -980711 - + modify Ada95 'gen' program to use appropriate library suffix (e.g., - "_g" for a debug build). - + update Ada95 'make clean' rule to include generics .ali files - + add a configure test to ensure that if GNAT is found, that it can - compile/link working Ada95 program. - + flush output in beep and flash functions, fixing a problem with - getstr (patch by Alexander V Lukyanov) - + fix egcs 1.0.2 warning for etip.h (patch by Chris Johns). - + correct ifdef/brace nesting in lib_sprintf.c (patch by Bernhard - Rosenkraenzer ). - + correct typo in wattr_get macro from 980509 fixes (patch by Dan - Nelson). - -980704 - + merge changes from current XFree86 xterm terminfo descriptions. - + add configure option '--without-ada'. - + add a smart-default for termcap 'ac' to terminfo 'acs_chars' which - corresponds to vt100. - + change translation for termcap 'rs' to terminfo 'rs2', which is - the documented equivalent, rather than 'rs1'. - -980627 - + slow 'worm' down a little, for very fast machines. - + corrected firstchar/lastchar computation in lib_hline.c - + simplify some expressions with CHANGED_CELL, CHANGED_RANGE and - CHANGED_TO_EOL macros. - + 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 ). - + 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). - -980620 - + review terminfo.5 against Solaris 2.6 curses version, corrected - several minor errors/omissions. - + implement tparm %l format. - + implement tparm printf-style width and precision for %s, %d, %x, %o - as per XSI. - + implement tparm dynamic variables (reported by Xiaodan Tang). - -980613 - + update man-page for 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 - wrong variable was used for cf_cv_type_of_bool. Compilers up to gcc - 2.8 tolerated the missing 'int'. - + remove the hardcoded name "gcc" for the GNU Ada compiler. The - compiler's name might be something like "egcs" (patch by Juergen - Pfeifer). - + correct curs_addch.3x, which implied that echochar could directly - display control characters (patch by Alexander V Lukyanov). - + fix typos in ncurses-intro.html (patch by Sidik Isani - ) - -980606 - + add configure test for conflicting use of exception in math.h and - other headers. - + minor optimization to 'hash()' function in hashmap.c, reduces its - time by 10%. - + correct form of LD_SHARED_OPTS for HP-UX 10.x (patch by Tim Mooney). - + fix missing quotes for 'print' in MKunctrl.awk script (reported by - Mihai Budiu ). - > patch by Alexander V Lukyanov: - + correct problem on Solaris (with poll() function) where getch could - hang indefinitely even if timeout(x) was called. This turned out to - be because milliseconds was not updated before 'goto retry' in - _nc_timed_wait. - + simplified the function _nc_timed_wait and fixed another bug, which - was the assumption of !GOOD_SELECT && HAVE_GETTIMEOFDAY in *timeleft - assignment. - + removed the cycle on EINTR, as it seems to be useless. - -980530 - + add makefile-rule for test/keynames - + modify run_tic.sh and shlib to ensure that user's .profile does not - override the $PATH used to run tic (patch by Tim Mooney). - + restore LD_SHARED_OPTS to $(LD_SHARED_FLAGS) when linking programs, - needed for HP-UX shared-library path (recommended by Tim Mooney). - + remove special case of HP-UX -L options, use +b options to embed - $(libdir) in the shared libraries (recommended by Tim Mooney). - + add checks for some possible buffer overflows and unchecked - malloc/realloc/calloc/strdup return values (patch by Todd C Miller - ) - -980523 - + correct maxx/maxy expression for num_columns/num_lines in derwin - (patch by Alexander V Lukyanov). - + add /usr/share/lib/terminfo and /usr/lib/terminfo as compatibilty - fallbacks to _nc_read_entry(), along with --with-terminfo-dirs - configure option (suggested by Mike Hopkirk). - + modify config.guess to recognize Unixware 2.1 and 7 (patch by Mike - Hopkirk ). - + suppress definition of CC_SHARED_OPTS in LDFLAGS_SHARED in c++ - Makefile.in, since this conflicts when g++ is used with HP-UX - compiler (reported by Tim Mooney). - + parenthesize 'strcpy' calls in c++ binding to workaround redefinition - in some C++ implementations (reported by several people running - egcs with glibc 2.0.93, analysis by Andreas Jaeger. - -980516 - + modify write_entry.c so that it will not attempt to link aliases - with embedded '/', but give only a warning. - + put -L$(libdir) first when linking programs, except for HP-UX. - + modify comp_scan.c to handle SVr4 terminfo description for att477, - which contains a colon in the description field. - + modify configure script to support SCO osr5.0.5 shared libraries, - from comp.unix.sco.programmer newsgroup item (Mike Hopkirk). - + eliminate extra GoTo call in lib_doupdate.c (patch by Alexander V. - Lukyanov). - + minor adjustments of const/NCURSES_CONST from IRIX compile. - + add updates based on esr's 980509 version of terminfo.src. - -980509 - + correct macros for wattr_set, wattr_get, separate wattrset macro from - these to preserve behavior that allows attributes to be combined with - color pair numbers. - + add configure option --enable-no-padding, to allow environment - variable $NCURSES_NO_PADDING to eliminate non-mandatory padding, - thereby making terminal emulators (e.g., for vt100) a little more - efficient (request by Daniel Eisenbud ). - + modify configure script to embed ABI in shared libraries for HP-UX - 10.x (detailed request by Tim Mooney). - + add test/example of the 'filter()' function. - + add nxterm and xterm-color terminfo description (request by Cristian - Gafton ). - + modify rxvt terminfo description to clear alternate screen before - switching back to normal screen, for compatibility with applications - which use xterm (reported by Manoj Kasichainula ). - + modify linux terminfo description to reset color palette (reported - by Telford Tendys ). - + correction to doupdate, for case where terminal does not support - insert/delete character. The logic did not check that there was a - difference in alignment of changes to old/new screens before - repainting the whole non-blank portion of the line. Modified to fall - through into logic that reduces by the portion which does not differ - (reported by Daniel Eisenbud ). - + minor performance improvement to wnoutrefresh by moving some - comparisons out of inner loop. - -980425 - + modify configure script to substitute NCURSES_CONST in curses.h - + updated terminfo entries for xterm-xf86-v40, xterm-16color, - xterm-8bit to correspond to XFree86 3.9Ag. - + remove restriction that forces ncurses to use setaf/setab if the - number of colors is greater than 8. (see 970524 for xterm-16color). - + change order of -L options (so that $(libdir) is searched first) when - linking tic and other programs, to workaround HP's linker. - Otherwise, the -L../lib is embedded when linking against shared - libraries and the installed program does not run (reported by Ralf - Hildebrandt). - + modify configuration of shared libraries on Digital Unix so that - versioning is embedded in the library, rather than implied by - links (patch by Tim Mooney). - -980418 - + modify etip.h to avoid conflict with math.h on HP-UX 9.03 with gcc - 2.8.1 which redefines 'exception' (reported by Ralf Hildebrandt - ). - + correct configure tests in CF_SHARED_OPTS which used $CC value to - check for gcc, rather than autoconf's $GCC value. This did not - work properly if the full pathname of the compiler were given - (reported by Michael Yount ). - + revise check for compiler options to force ANSI mode since repeating - an option such as -Aa causes HP's compiler to fail on its own headers - (reported by Clint Olsen ). - -980411 - + ifdef'd has_key() and mcprint() as extended functions. - + modified several prototypes to correspond with 1997 version of - X/Open Curses (affects ABI since developers have used attr_get). - + remove spurious trailing blanks in glibc addon-scripts (patch by - H.J.Lu). - + insert a few braces at locations where gcc-2.8.x asks to use them to - avoid ambigous else's, use -fpic rather than -fPIC for Linux (patch - by Juergen Pfeifer). - -980404 - + split SHLIB_LIST into SHLIB_DIRS/SHLIB_LIST to keep -L options - before -l to accommodate Solaris' linker (reported by Larry Virden). - -980328 - + modify lib_color.c to eliminate dependency on orig_colors and - orig_pair, since SVr4 curses does not require these either, but - uses them when they are available. - + add detailed usage-message to infocmp. - + correct a typo in att6386 entry (a "%?" which was "?"). - + add -f option to infocmp and tic, which formats the terminfo - if/then/else/endif so that they are readable (with newlines and - tabs). - + fixes for glibc addon scripts (patch by H.J.Lu). - -980321 - + revise configure macro CF_SPEED_TYPE so that termcap.h has speed_t - declared (from Adam J Richter ) - + remove spurious curs_set() call from leaveok() (J T Conklin). - + corrected handling leaveok() in doupdate() (patch by Alexander V. - Lukyanov). - + improved version of wredrawln (patch by Alexander V. Lukyanov). - + correct c++/Makefile.in so install target do not have embedded ../lib - to confuse it (patch by Thomas Graf ). - + add warning to preinstall rule which checks if the installer would - overwrite a curses.h or termcap.h that is not derived from ncurses. - (The recommended configuration for developers who need both is to - use --disable-overwrite). - + modify preinstall rule in top-level Makefile to avoid implicit - use of 'sh', to accommodate Ultrix 4.4 (reported by Joao Palhoto - Matos , patch by Thomas Esser - ) - + refine ifdef's for TRACE so that libncurses has fewer dependencies - on libtinfo when TRACE is disabled. - + modify configure script so that if the --with-termlib option is used - to generate a separate terminfo library, we chain it to the ncurses - library with a "-l" option (reported by Darryl Miles and Ian T. - Zimmerman). - -980314 - + correct limits and window in wredrawln function (reported/analysis by - Alexander V. Lukyanov). - + correct sed expression in configure script for --with-fallback - option (patch by Jesse Thilo). - + correct some places in configure script where $enableval was used - rather than $withval (patch by Darryl Miles ). - + modify some man-pages so no '.' or '..' falls between TH and SH - macros, to accommodate man_db program (reported by Ian T. Zimmerman - ). - + 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. - + corrected prototypes for slk_* functions, using chtype rather than - attr_t. - + implemented the wcolor_set() and slk_color() functions - + the slk_attr_{set,off,on} functions need an additional void* - parameter according to XSI. - + fix the C++ and Ada95 binding as well as the man pages to - reflect above enhancements. - -980307 - + use 'stat()' rather than 'access()' in toe.c to check for the - existence of $HOME/.terminfo, since it may be a file. - + suppress configure CF_CXX_LIBRARY check if we are not using g++ - 2.7.x, since this is not needed with g++ 2.8 or egcs (patch by - Juergen Pfeifer). - + turn on hashmap scrolling code by default, intend to remedy defects - by 4.3 release. - + minor corrections to terminfo.src changelog. - -980302 4.2 release for upload to prep.ai.mit.edu - + correct Florian's email address in ncurses-intro.html - + terminfo.src 10.2.0 (ESR). - -980228 pre-release - + add linux-koi8r replace linux-koi8, which is not KOI8 (patch by - QingLong ). - + minor documentation fixes (patch by Juergen Pfeifer). - + add setlocale() call to ncurses.c (reported by Claes G. Lindblad - ). - + correct sign-extension in lib_insstr.c (reported by Sotiris - Vassilopoulos ) - -980221 pre-release - + regenerated some documentation overlooked in 980214 patch - (ncurses-intro.doc, curs_outopts.3x.html) - + minor ifdef change to C++ binding to work with gcc 2.8.0 (patch by - Juergen Pfeifer). - + change maintainer's mailing address to florian@gnu.org, change - tentative mailing list address to bug-ncurses-request@gnu.org (patch - by Florian La Roche). - + add definition of $(REL_VERSION) to c++/Makefile.in (reported by Gran - Hasse ). - + restore version numbers to Ada95 binding, accidentally deleted by - copyright patch (patch by Juergen Pfeifer). - -980214 pre-release - + remove ncurses.lsm from MANIFEST so that it won't be used in FSF - distributions, though it is retained in development. - + correct scaling of milliseconds to nanoseconds in lib_napms.c (patch - by Jeremy Buhler). - + update mailing-list information (bug-ncurses@gnu.org). - + update announcement for upcoming 4.2 release. - + modify -lm test to check for 'sin()' rather than 'floor()' - + remove spurious commas from terminfo.src descriptions. - + change copyright notices to Free Software Foundation - -980207 - + minor fixes for autoconf macros CF_ERRNO, CF_HELP_MESSAGE and - CF_SIZECHANGE - + modify Makefile.glibc so that $(objpfx) is defined (H.J.Lu). - + ifdef-out true-return from _nc_mouse_inline() which depends on - merge of QNX patch (pending 4.2 release). - > patch to split off seldom-used modules in ncurses (J T Conklin): - This reduces size by up to 2.6kb. - + move functionality of _nc_usleep into napms, add configuration case - for nanosleep(). - + moved wchgat() from lib_addch.c to lib_chgat.c - + moved clearok(), immedok(), leaveok(), and scrollok() from - lib_options.c to lib_clearok.c, lib_immedok.c, lib_leaveok.c and - lib_scrollok.c. - + moved napms() from lib_kernel.c to lib_napms.c - + moved echo() and noecho() from lib_raw.c to lib_echo.c - + moved nl() and nonl() from lib_raw.c to lib_nl.c - -980131 - + corrected conversion in tclock.c (cf: 971018). - + updates to Makefile.glibc and associated Linux configure script - (patch by H.J.Lu). - + workaround a quoting problem on SunOS with tar-copy.sh - + correct init_pair() calls in worm.c to work when use_default_colors() - is not available. - + include in CF_SYS_TIME_SELECT to work with FreeBSD - 2.1.5 - + add ncv capability to FreeBSD console (cons25w), making reverse - work with color. - + correct sense of configure-test for sys/time.h inclusion with - sys/select.h - + fixes for Ada95/ada_include/Makefile.in to work with --srcdir option. - + remove unused/obsolete test-program rules from progs/Makefile.in - (the rules in ncurses/Makefile.in work). - + remove shared-library loader flags from test/Makefile.in, etc. - + simplify test/configure.in using new version of autoconf to create - test/ncurses_cfg.h - + suppress suffix rules in test/Makefile.in, provide explicit - dependency to work with --srcdir option and less capable 'make' - programs. - > adapted from patch for QNX by Xiaodan Tang: - + initialize %P and %g variables set/used in tparm, and also ensure - that empty strings don't return a null result from tparam_internal - + add QNX-specific prototype for vsscanf() - + move initialization of SP->_keytry from init_keytry() to newterm() to - avoid resetting it via a keyok() call by mouse_activate(). - + reorganized some functions in lib_mouse() to use case-statements. - + remove sgr string from qnx terminfo entry since it is reported to - turn off attributes inconsistently. - -980124 - + add f/F/b/B commands to ncurses 'b' test to toggle colors, providing - test for no_color_video. - + adjusted emx.src to use no_color_video, now works with ncurses 'b' - and 'k' tests. - + implement no_color_video attribute, and as a special case, reverse - colors when the reverse attribute cannot be combined with color. - + check for empty string in $TERM variable (reported by Brett Michaels - ). - > from reports by Fred Fish: - + add configure-test for isascii - + add configure-test for -lm library. - + modify CF_BOOL_SIZE to check if C++ bool types are unsigned. - > patches by J.J.G.Ripoll - + add configure/makefile variables to support .exe extension on - OS/2 EMX (requires additional autoconf patches). - + explicitly initialize variables in lib_data.c to appease OS/2 linker - > patches by Fred Fish - + misc/Makefile.in (install.data): Avoid trying to install the CVS - directory. - + aclocal.m4 (install.includes): Remove files in the include directory - where we are going to install new ones, not the original source - files. - + misc/terminfo.src: Add entry for "beterm", derived from termcap - distributed with BeOS PR2 using captoinfo. - + aclocal.m4: Wrap $cf_cv_type_of_bool with quotes (contains space) - + aclocal.m4: Assume bool types are unsigned. - + progs/infocmp.c: workaround mwcc 32k function data limit - -980117 - + correct initialization of color-pair (cf: 970524) in xmas.c, which - was using only one color-pair for all colors (reported by - J.J.G.Ripoll). - + add multithread options for objects build on EMX, for compatibility - with XFree86. - + split up an expression in MKlib_gen.sh to work around a problem on - OS/2 EMX, with 'ash' (patch by J.J.G.Ripoll). - + change terminfo entries xterm (xterm-xf86-v40), xterm-8bit rs1 to use - hard reset. - + rename terminfo entry xterm-xf86-v39t to xterm-xf86-v40 - + remove bold/underline from sun console entries since they're not - 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 - synopsis (reported by Darren Hiebert ). - + correct typo in panel/Makefile.in, reversed if-statement in scrolling - optimization (Alexander V. Lukyanov). - + test for 'remove()', use 'unlink() if not found (patch by Philippe De - Muyter ). - > patches by Juergen Pfeifer: - + Improve a feature of the forms driver. For invisible fields - (O_VISIBLE off) only the contents but not the attributes are cleared. - We now clear both. (Reported by Javier Kohan - ) - + The man page form_field_opts.3x makes now clear, that invisible - fields are also always inactive. - + adjust ifdef's to compile the C++ binding with the just released - gcc-2.8.0 c++ and the corresponding new C++ libraries. - -980110 - + correct "?" command in ncurses.c; it was performing non-screen writes - while the program was in screen mode. (It "worked" in 1.9.9e because - that version sets OPOST and OCRNL incorrectly). - + return error from functions in lib_kernel, lib_raw and lib_ti if - cur_term is null, or if underlying I/O fails. - + amend change to tputs() so that it does not return an error if - cur_term is null, since some applications depend on being able to use - tputs without initializing the terminal (reported by Christian J. - Robinson ). - -980103 - + add a copy of emx.src from J.J.G.Ripoll's OS/2 EMX version of ncurses - 1.9.9e, together with fixes/additions for the "ansi" terminal type. - + add tic check for save/restore cursor if change_scroll_region is - defined (reference: O'Reilly book). - + modify read_termcap.c to handle EMX-style pathnames (reported by - J.J.G.Ripoll). - + modify lib_raw.c to use EMX's setmode (patch from J.J.G.Ripoll). - Ripoll says EMX's curses does this. - + modify _nc_tic_expand() to generate \0 rather than \200. - + move/revise 'expand()' from dump_entry.c to ncurses library as - _nc_tic_expand(), for use by tack. - + decode \a as \007 for terminfo, as per XSI. - + correct translation of terminfo "^@", to \200, like \0. - + modify next_char() to treat the same as , for - cross-platform compatibility. - + use new version of autoconf (971230) to work around limited - environment on CLIX, due to the way autoconf builds --help message. - > patch by Juergen Pfeifer: - + check that the Ada95 binding runs against the correct version of - ncurses. - + insert constants about the library version into the main spec-file of - the Ada95 binding. - -971227 - + modify open/fopen calls to use binary mode, needed for EMX. - + modify configure script to work with autoconf 2.10 mods for OS/2 - EMX (from J.J.G.Ripoll). - + generated ncurses_cfg.h with patch (971222) to autoconf 2.12 which - bypasses limited sed buffer length. - > several changes from Juan Jose Garcia Ripoll - (J.J.G.Ripoll) to support OS/2 EMX: - + add a _scrolling flag to SP, to set when we encounter a terminal - that simply cannot scroll. - + corrected logic in _nc_add_to_try(), by ensuring that strings with - embedded \200 characters are matched. - + don't assume the host has 'link()' function, for linking terminfo - entries. - -971220 - + if there's no ioctl's to support sigwinch handler, disable it. - + add configure option --disable-ext-funcs to remove the extended - functions from the build. - + add configure option --with-termlib to generate the terminfo - functions as a separate library. - + add 'sources' rule to facilitate cross-compiling. - + review/fix order of mostlyclean/clean/distclean rules. - + modify install-rule for headers to first remove old header, in - case there was a symbolic link that confuses the install script. - + corrected substitution for NCURSES_CONST in term.h (cf: 971108) - + add null pointer checks in wnoutrefresh(), overlap() (patch by - Xiaodan Tang ) - + correct tputs(), which could dereference a null cur_term if invoked - before terminal is initialized (patch by Christopher Seawood - ) - > patch by Juergen Pfeifer: - + makes better use of "pragma Inline" in the Ada95 binding - + resynchronizes the generated html manpages - -971213 - + 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 - implemented correctly, added sgr0. - + change ncurses 's' to use raw mode, so ^Q works (reported by Rudolf - Leitgeb ) - -971206 - + 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, - for Debian configuration. - + add validity-check for SP in trace code in baudrate() (reported by - Daniel Weaver). - > patch by Alexander V. Lukyanov (fixes to match sol25 curses) - + modify 'overlay()' so that copy applies target window background to - characters. - + correct 'mvwin()' so that it does not clear the previous locations. - + correct lib_acs.c so that 8-bit character is not sign expanded in - case of wide characters in chtype. - + correct control-char test in lib_addch.c for use with wide chars - + use attribute in the chtype when adding a control character in - lib_addch.c control char was added with current attribute - -971129 - + save/restore errno in _tracef() function - + change treatment of initialize_color to use a range of 0..1000 - (recommended by Daniel Weaver). - + set umask in mkinstalldirs, fixing problems reported by users who - have set root's umask to 077. - + correct bug in tic that caused capabilities to be reprinted at the - end of output when they had embedded comments. - + rewrote wredrawln to correspond to XSI, and split-out since it is - not often used (from report by Alexander V. Lukyanov, 970825) - + rewrote Dan Nelson's change to make it portable, as well as to - correct logic for handling backslashes. - + add code to _nc_tgetent() to make it work more like a real tgetent(). - It removes all empty fields, and removes all but the first in a group - of duplicate caps. The code was pulled from the BSD libtermcap code - in termcap.c (patch by Dan Nelson - + don't include --enable-widec in the --with-develop configure option, - since it is not binary-compatible with 4.1 (noted by Alexander V. - Lukyanov) - > patch by Juergen Pfeifer: - + further improvements of the usage of elaboration pragmas in the Ada95 - binding - + enhanced Ada95 sample to use the user_data mechanism for panels. - + a fix for the configuration script to make gnat-3.10 the required - version. - + resync of the html version of the manpages - -971122 - > fixes/updates for terminfo.src: - + add vt220-js, pilot, rbcomm, datapoint entries from esr's 27-jun-97 - version. - + add hds200 description (Walter Skorski) - + add EMX 0.9b descriptions - + correct rmso/smso capabilities in wy30-mc and wy50-mc (Daniel Weaver) - + rename xhpterm back to hpterm. - > patch by Juergen Pfeifer: - + Improves the usage of elaboration pragmas for the Ada95 binding. - + Adds a translation of the test/rain.c into Ada95 to the samples. - This has been contributed to the project by Laurent Pautet - (pautet@gnat.com) - -971115 - + increase MAX_NAME_SIZE to 512 to handle extremely long alias list - in HP-UX terminfo. - + correction & simplification of delay computation in tputs, based on - comments from Daniel Weaver. - + replace test for SCO with more precise header tests. - + add configure test for unsigned literals, use in NCURSES_BITS macro. - + comment-out the -PIC, etc., flags from c++, progs and test makefiles - since they probably are not needed, and are less efficient (noted by - Juergen Fluk) - + add -L$(libdir) to loader options, after -L../lib so that loaders - that record this information will tend to do the right thing if - the programs are moved around after installing them (suggested by - Juergen Fluk). - + add -R option to loader options for programs for Solaris if the - --enable-rpath option is specified for the libraries. - -971112 - + correct installed filename for shared libraries on *BSD (reported by - Juergen Fluk). - -971108 - + cleanup logic for deciding when tputs() should call delay_output(), - based on comments from Daniel Weaver. - + modified tputs() to avoid use of float. - + correct use of trailpad in tputs(), which used the wrong variable - in call to delay_output(). - + correct inverted expression for null-count in delay_output() - (analysis by Daniel Weaver). - + apply --enable-rpath option to Solaris (requested by Larry Virden). - + correct substitution of EXTRA_CFLAGS for gcc 2.6.3 - + correct check for error-return by _nc_tgetent(), which returns 0 - for success. - + add configure test for BSD 4.4 cgetent() function, modify - read_termcap.c to use the host's version of that if found, using the - terminal database on FreeBSD (reported by Peter Wemm). - + add u8, u9 strings to sun-il description for Daniel Weaver. - + use NCURSES_CONST in panel's user-pointer. - + modify edit_cfg.sh and MKterm.h.awk.in to substitute NCURSES_CONST - so that will work on NeXT. - + use _nc_set_screen() rather than assignments to SP to fix port to - NeXT (reported by Francisco A. Tomei Torres). - -971101 - + force mandatory padding in bell and flash_screen, as specified in - XSI. - + don't allow padding_baud_rate to override mandatory delays (reported - by Daniel Weaver). - + modify delay_output() to use _nc_timed_wait() if no baudrate has been - defined, or if the cur_term pointer is not initialized. XSI treats - this as unspecified. (requested by Daniel Weaver). - + change getcap-cache ifdef's to eliminate unnecessary chdir/mkdir - when that feature is not configured. - + remove _nc_err_abort() calls when write_entry.c finds a directory but - cannot write to it, e.g., when translating part/all of /etc/termcap - (reported by Andreas Jaeger ). - (this dates back to 951102, in 1.9.7a). - + minor ifdef fixes to compile with atac and glibc 2.0.5c - + add check for -lgen when configuring regexpr.h - + modify Solaris shared-library option "-d y" to "-dy" to workaround - incompatibility of gcc 2.7.2 vs vendor's tools. - -971026 - + correct ifdef's for struct winsize vs struct ttysize in lib_setup.c - to compile on SCO. - + remove dangling backslash in panel/Makefile.in - + modify MKkeyname.awk to work with SCO's nawk, which dumps core in the - length() function. - + correct length of allocation in _nc_add_to_try(), to allow for - trailing null. - + correct logic in _nc_remove_key(), which was discarding too many - nodes (patch by Alexander V. Lukyanov) - -971025 - + add definition for $(REL_VERSION) to test/Makefile.in, so *BSD - shared libraries link properly (see 970524). - + modify Linux shared-library generation to include library - dependencies (e.g., -lncurses and -lgpm) in the forms, menu and - panel libraries (suggested by Juergen Pfeifer). - + modify configure script to use config.guess and config.sub rather - than uname, which is unreliable on some systems. - + updated Makefile.glibc, test-built with glibc 2.0.5c - + modify keyname() to return values consistent with SVr4 curses (patch - by Juergen Fluk). - > changes requested by Daniel Weaver: - + modify delay_output() so that it uses the same output function as - tputs() if called from that function. - + move _baudrate from SCREEN to TERMINAL so that low-level use of - tputs works when SP is not set. - > patch by Juergen Pfeifer: - + factor lib_menu and lib_form into smaller modules - + clean up the interface between panel and SCREEN - + minor changes to the Ada95 mouse support implemenation - + minor bugfix in C++ binding to ripoff windows - + fix a few Ada95 html documentation pages - -971018 - + split-out lib_ungetch.c, make runtime link to resizeterm() to - decouple those modules from lib_restart.c - + add xterm-xf86-v39t description to terminfo.src - + reset SP->_endwin in lib_tstp.c cleanup() function after calling - endwin() to avoid unnecessary repainting if the application has - established an atexit function, etc. Encountered this problem in - the c++ demo, whose destructors repaint the screen. - + combine _nc_get_screensize() and resizeterm() calls as new function - _nc_update_screensize(). - + minor fixes to allow compile with g++ (suggested by Nelson H. F. - Beebe). - + implement install-rules for Ada95 makefiles. - + use screen_lines or MAXLINES as needed where LINES was coded, - as well as screen_columns for COLS, in the ncurses library. - > patch by Alexander V. Lukyanov: - + modify logic for ripped-off lines to handle several SCREENs. - > patch by Juergen Pfeifer: - + factors lib_slk.c into some smaller modules - + factors panel.c into some smaller modules - + puts the static information about the current panel stack into the - SCREEN structure to allow different panel stacks on different - screens. - + preliminary fix for an error adjusting LINES to account for - ripped-off lines. - -971011 - + move _nc_max_click_interval and other mouse interface items to SCREEN - struct so that they are associated with a single terminal, and also - save memory when the application does not need a mouse (roughly 3k vs - 0.5k on Linux). - + modify mouseinterval() so that a negative parameter queries the - click-interval without modifying it. - + modify ncurses 'i' test to work with ncurses' apparent extension from - SVr4, i.e., allows nocbreak+noecho (analysis by Alexander V. - Lukyanov). - + add configure options --with-ada-includes and --with-ada-objects, - to drive Ada95 binding install (not yet implemented). - + install C++ binding as -lncurses++ and associated headers with the - other ncurses headers. - + fix header uninstall if configure --srcdir is used. - > minor interface changes to support 'tack' program -TD - (request by Daniel Weaver ). - + export functions _nc_trans_string() and _nc_msec_cost(). - + add variable _nc_nulls_sent, to record the number of padding - characters output in delay_output(). - + move tests for generic_type and hard_copy terminals in setupterm() - to the end of that function so that the library will still be - initialized, though not generally useful for curses programs. - > patches by Alexander V. Lukyanov: - + modify ClrBottom() to avoid using clr_eos if there is only one line - to erase. - + typo in configure --help. - > patch by J T Conklin (with minor resync against Juergen's changes) - + split-out lib_flash.c from lib_beep.c - + split-out lib_hline.c and lib_vline.c from lib_box.c - + split-out lib_wattron.c, lib_wattroff.c from lib_addch.c - -971005 - > patch by Juergen Pfeifer: - + correct source/target of c++/edit_cfg.sh - -971004 - + add color, mouse support to kterm terminfo entry. - + modify lib_mouse.c to recognize rxvt, kterm, color_xterm also as - providing "xterm"-style mouse. - + updated rxvt's terminfo description to correspond to 2.21b, with - fixes for the acsc (the box1 capability is incorrect, ech1 does not - work). - + fix logic in parse_entry.c that discarded acsc when 'synthesizing' - an entry from equivalents in XENIX or AIX. This lets ncurses handle - the distribution copy of rxvt's terminfo. - + modify acsc capability for linux and linux-koi8 terminfo descriptions - (from Pavel Roskin ). - + corrected definition in curses.h for ACS_LANTERN, which was 'I' - rather than 'i' (see 970802). - + updated terminfo.src with reformatted acsc entries, and repaired the - trashed entries with spurious '\' characters that this exposed. - + add logic to dump_entry.c to reformat acsc entries into canonical - form (sorted, unique mapping). - + add configure script to generate c++/etip.h - + add configure --with-develop option, to enable by default most of the - experimental options (requested by Alexander V. Lukyanov). - + rename 'deinstall' to 'uninstall', following GNU convention - (suggested by Alexander V. Lukyanov). - > patches by Alexander V. Lukyanov: - + modify tactics 2 and 5 in onscreen_mvcur(), to allow them on the last - line of the screen, since carriage return will not cause a newline. - + remove clause from PutCharLR() that would try to use - eat_newline_glitch since that apparently does not work on some - terminals (e.g., M$ telnet). - + correct a limit check in scroll_csr_backward() - > patches by Juergen Pfeifer: - + adds dummy implementations of methods above() and below() to the - NCursesPanel class. - + fixes missing returncode in NCursesWindow::ripoffline() - + fixes missing returncode in TestApplication::run() in demo.cc - + We should at least give a comment in etip.h why it is currently a - problem to install the C++ binding somewhere - + makes the WINDOW* argument of wenclose() a const. - + modifies several of the routines in lib_adabind.c to use a const - WINDOW* argument. - -970927 - + add 'deinstall' rules. - + use explicit assignments in configure --without-progs option to - work around autoconf bug which doesn't always set $withval. - + check for ldconfig, don't try to run it if not found. - + implement simple/unoptimized case in lib_doupdate.c to handle - display with magic cookie glitch, tested with ncurses.c program. - + correct missing _tracef in getmouse(), to balance the returnCode - macro. - + simplify show_attr() in ncurses.c using termattrs(). - > patches by Juergen Pfeifer: - + provides missing inlines for mvw[hv]line in cursesw.h of the C++ - binding - + fixes a typo in a comment of frm_driver.c - + Enhances Ada95 Makefiles to fulfill the requirement of GNAT-3.10 that - generics should be compiled. Proper fixes to the configuration - scripts are also provided. - -970920 - + several modifications to the configure script (requested by Ward - Horner): - + add configure options --without-progs, to suppress the build of the - utility programs, e.g., for cross-compiling. - + add $(HOSTCCFLAGS) and $(HOSTLDFLAGS) symbols to ncurses - Makefile.in, to simplify setup for cross compiling. - + add logic in configure script to recognize "--target=vxworks", and - generate load/install actions for VxWorks objects. - + move typedef for sigaction_t into SigAction.h to work around problem - generating lint library. - + modify fty_regex.c to reflect renaming of ifdef's for regular - expressions. - + simplify ifdef in lib_setup.c for TIOCGWINSZ since that symbol may - reside in . - + merge testcurs.c with version from PDCurses 2.3, clarifying some of - the more obscure tests, which rely upon color. - + use macros getbegyx() and getmaxyx() in newdemo.c and testcurs.c - + modify ncurses.c to use getbegyx() and getmaxyx() macros to cover up - implementation difference wrt SVr4 curses, allow 's' test to work. - + add missing endwin() to testscanw.c program (reported by Fausto - Saporito ). - + fixes/updates for Makefile.glibc and related files under sysdeps - (patch by H.J.Lu). - > patches by Juergen Pfeifer: - + add checks for null pointers, especially WINDOW's throughout the - ncurses library. - + solve a problem with wrong calculation of panel overlapping (reported - by Ward Horner): - + make sure that a panel's window isn't a pad. - + do more error checking in module lib_touch.c - + missing files for Ada95 binding from the last patch - + synch. of generated html pages (RCS-Id's were wrong in html files) - + support for Key_Resize in Ada binding - + changed documentation style in ./c++/cursesm.h - > patches by Alexander V. Lukyanov: - + undo attempt to do recursive inlining for PutChar(), noting that it - did not improve timing measurably, but inflated the size of - lib_doupdate.o - -970913 - + modify rain.c to use color. - + correct scroll_csr_backward() to match scroll_csr_forward(). - + minor adjustment to llib-lncurses, to work with Solaris 2.5.1 - + minor fixes to sysdeps/unix/sysv/linux/configure to reflect renaming - of configure cache variables in 970906. - + correct logic involving changes to O_VISIBLE option in - Synchronize_Options function in frm_driver.c (Tony Hoffmann - ) - + add $(HOSTCC) symbol to ncurses Makefile.in, to simplify setup for - cross compiling (suggested by Chris Johns). - + modify ifdef in lib_setup.c to only include if we can - use it to support screen-size calculation (reported by Chris Johns). - + #undef unctrl to avoid symbol conflict in port to RTEMS (reported by - Chris Johns ) - > patches by Juergen Pfeifer: - + simplified, made minor corrections to Ada95 binding to form - fieldtype. - + The C++ binding has been enhanced: - + Improve NCursesWindow class: added additional methods to cover - more ncurses functionality. Make refresh() and noutrefresh() - virtual members to allow different implementation in the - NCursesPanel class. - + CAUTION: changed order of parameters in vline() and hline() of - NCursesWindow class. - + Make refresh() in NCursesPanel non-static, it is now a - reimplementation of refresh() in the base class. Added - noutrefresh() to NCursesPanel. - + Added NCursesForm and related classes to support libform - functionality. - + Moved most of configuration related stuff from cursesw.h to etip.h - + Added NCursesApplication class to support easy configuration of - menu and forms related attributes as well as ripped of title lines - and Soft-Label-Keys for an application. - + Support of Auto-Cleanup for a menu's fieldlist. - + Change of return type for current_item() and operator[] for menus. - + Enhanced demo. - + Fixed a bug in form/fld_def.c: take into account that copyarg and - freearg for a fieldtype may be NULL, makearg must not be NULL - + Fixed a bug in form/fld_type.c: in set_fieldtype_arg() makearg must - not be NULL, copyarg and freearg may be NULL. - + Fixed a bug in form/frm_def.c: Allow Disconnect_Fields() if it is - already disconnected. - + Enhance form/frm_driver.c: Allow growth of dynamic fields also on - navigation requests. - + Fixed a bug in form/fty_enum.c: wrong position of postincrement in - case-insensitiva comparision routine. - + Enhanced form/lib_adabind.c with function _nc_get_field() to get a - forms field by index. - + Enhanced menu/m_adabind.c with function _nc_get_item() to get a menus - item by index. - + Fixed in curses.h.in: make chtype argument for pechochar() constant. - Mark wbkgdset() as implemented, remove wbkgdset macro, because it was - broken (didn't handle colors correctly). - + Enhanced lib_mouse.c: added _nc_has_mouse() function - + Added _nc_has_mouse() prototype to curses.priv.h - + Modified lib_bkgd.c: hopefully correct implementation of wbkgdset(); - streamlined implementation of wbkgd() - + Modified lib_mvwin.c: Disable move of a pad. Implement (costly) - move of subwindows. Fixed update behavior of movements of regular - windows. - + Fixed lib_pad.c: make chtype argument of pechochar() const. - + Fixed lib_window.c: dupwin() is not(!) in every bit a really clone - of the original. Subwindows become regular windows by doing a - dupwin(). - + Improved manpage form_fieldtype.3x - > patches by Alexander V. Lukyanov: - + simplify the PutChar() handling of exit_am_mode, because we already - know that auto_right_margin is true. - + add a check in PutChar() for ability to insert to the case of - shifting character to LR corner. - + in terminal initialization by _nc_screen_resume(), make sure that - terminal right margin mode is known. - + move logic that invokes touchline(), or does the equivalent, into - _nc_scroll_window(). - + modify scrolling logic use of insert/delete line capability, assuming - that they affect the screen contents only within the current - scrolling region. - + modify rain.c to demonstrate SIGWINCH handler. - + remove logic from getch() that would return an ERR if the application - called getch() when the cursor was at the lower-right corner of the - physical screen, and the terminal does not have insert-character - ability. - + change view.c so that it breaks out of getch() loop if a KEY_RESIZE - is read, and modify logic in getch() so this fix will yield the - desired behavior, i.e., the screen is repainted automatically when - the terminal window is resized. - -970906 - + add configure option --enable-sigwinch - + modify view.c to test KEY_RESIZE logic, with "-r" option. - + modify testcurs.c to eliminate misleading display wrt cursor type - by testing if the terminal supports cnorm, civis, cvvis. - + several fixes for m68k/NeXT 4.0, to bring cur_term, _nc_curr_line and - _nc_curr_col variables into linked programs: move these variables, - making new modules lib_cur_term and trace_buf (reported by Francisco - Alberto Tomei Torres ). - > patches by Alexander V. Lukyanov: - + add pseudo-functionkey KEY_RESIZE which is returned by getch() when - the SIGWINCH handler has been called since the last call to - doupdate(). - + modify lib_twait.c to hide EINTR only if HIDE_EINTR is defined. - + add SIGWINCH handler to ncurses library which is used if there is no - application SIGWINCH handler in effect when the screen is - initialized. - + make linked list of all SCREEN structures. - + move curses.h include before definition of SCREEN to use types in - that structure. - + correction to ensure that wgetstr uses only a newline to force a - scroll (970831). - -970831 - + add experimental configure option --enable-safe-sprintf; the normal - mode now allocates a buffer as large as the screen for the - lib_printw.c functions. - + modify wgetch to refresh screen when reading ungetch'd characters, - since the application may require this - SVr4 does this. - + refine treatment of newline in wgetstr to echo only when this would - force the screen to scroll. - -970830 - + remove override in wgetstr() that forces keypad(), since SVr4 does - not do this. - + correct y-reference for erasure in wgetstr() when a wrap forces a - scroll. - + correct x-position in waddch() after a wrap forces a scroll. - + echo newline in wgetstr(), making testscanw.c scroll properly when - scanw is done. - + modify vwscanw() to avoid potential buffer overflow. - + rewrote lib_printw.c to eliminate fixed-buffer limits. - > patches by Alexander V. Lukyanov: - + correct an error in handling cooked mode in wgetch(); processing - was in the wrong order. - + simplified logic in wgetch() that handles backspace, etc., by using - wechochar(). - + correct wechochar() so that it interprets the output character as - in waddch(). - + modify pechochar() to use prefresh() rather than doupdate(), since - the latter does not guarantee immediate refresh of the pad. - + modify pechochar() so that if called with a non-pad WINDOW, will - invoke wechochar() instead. - + modify fifo indices to allow fifo to be longer than 127 bytes. - -970823 - + add xterm-8bit to terminfo.src - + moved logic for SP->_fifohold inside check_pending() to make it - work properly when we add calls to that function. - + ensure that bool functions return only TRUE or FALSE, and TRUE/FALSE - are assigned to bool values (patch by H.J.Lu). - > patches by Alexander V. Lukyanov: - + several fixes to getch: - 1. Separate cooked and raw keys in fifo - 2. Fix the case of ungetch'ed KEY_MOUSE - 3. wrap the code for hiding EINTR with ifdef HIDE_EINTR - 4. correctly handle input errors (i.e., EINTR) without loss of raw - keys - 5. recognize ESC KEY_LEFT and similar - 6. correctly handle the case of receiption of KEY_MOUSE from gpm - + correct off-by-one indexing error in _nc_mouse_parse(), that caused - single mouse events (press/release) to be ignored in favor of - composed events (click). Improves on a fix from integrating gpm - support in 961229. - + add another call to check_pending, before scrolling, for - line-breakout optimization - + improve hashmap.c by - 1. fixed loop condition in grow_hunks() - 2. not marking lines with offset 0 - 3. fixed condition of 'too far' criteria, thus one-line hunks are - ignored and two lines interchanged won't pass. - + rewrote/simplified _nc_scroll_optimize() by separating into two - passes, forward/backward, looking for chunks moving only in the given - direction. - + move logic that emits sgr0 when initializing the screen to - _nc_screen_init(), now invoked from newterm. - + move cursor-movement cleanup from endwin() into _nc_mvcur_wrap() - function and screen cleanup (i.e., color) into _nc_screen_wrap() - function. - + add new functions _nc_screen_init(), _nc_screen_resume() and - _nc_screen_wrap(). - + rename _nc_mvcur_scrolln() to _nc_scrolln(). - + add a copy of acs_map[] to the SCREEN structure, where it can be - stored/retrieved via set_term(). - + move variables _nc_idcok, _nc_idlok, _nc_windows into the SCREEN - structure. - -970816 - + implement experimental _nc_perform_scroll(). - + modify newterm (actually _nc_setupscreen()) to emit an sgr0 when - initializing the screen, as does SVr4 (reported by Alexander V. - Lukyanov). - + added test_progs rule to ncurses/Makefile. - + modify test/configure.in to check if initscr is already in $LIBS - before looking for (n)curses library. - + correct version-number in configure script for OSF1 shared-library - options (patch by Tim Mooney). - + add -DNDEBUG to CPPFLAGS for --enable-assertions (as Juergen - originally patched) since the c++ demo files do not necessarily - include ncurses_cfg.h - + supply default value for --enable-assertions option in configure - script (reported by Kriang Lerdsuwanakij ). - > patches by Alexander V. Lukyanov: - + correct/simplify logic of werase(), wclrtoeol() and wclrbot(). See - example firstlast.c - + optimize waddch_literal() and waddch_nosync() by factoring out - common subexpressions. - + correct sense of NDEBUG ifdef for CHECK_POSITION macro. - + corrections to render_char(), to make handling of colored blanks - match SVr4 curses, as well as to correct a bug that xor'd space - against the background character. - + replaced hash function with a faster one (timed it) - + rewrote the hashmap algorithm to be one-pass, this avoids multiple - cost_effective() calls on the same lines. - + modified cost_effective() so it is now slightly more precise. - > patches for glibc integration (H.J.Lu): - + add modules define_key, keyok, name_match, tries - + add makefile rules for some of the unit tests in ncurses (mvcur, - captoinfo, hardscroll, hashmap). - + update Linux configure-script for wide-character definitions. - -970809 - + modify _tracebits() to show the character size (e.g., CS8). - + modify tparm() to emit '\200' where the generated string would have a - null (reported by From: Ian Dall for - terminal type ncr7900). - + modify install process so that ldconfig is not invoked if the - package is built with an install-prefix. - + correct test program for chtype size (reported by Tim Mooney). - + add configure option --disable-scroll-hints, using this to ifdef the - logic that computes indices for _nc_scroll_optimize(). - + add module ncurses/softscroll.c, to perform single-stage computation - of scroll indices used in _nc_scroll_optimize(). This is faster than - the existing scrolling algorithm, but tends to make too-small hunks. - + eliminate fixed buffer size in _nc_linedump(). - + minor fixes to lib_doupdate.c to add tradeoff between clr_eol (el) - and clr_bol (el1), refine logic in ClrUpdate() and ClrBottom() (patch - by Alexander V. Lukyanov). - + add test/testaddch.c, from a pending patch by Alexander V. Lukyanov. - + correct processing of "configure --enable-assertions" option (patch - by Juergen Pfeifer). - -970802 - + add '-s' (single-step) option too test/hashtest.c, correct an error - in loop limit for '-f' (footer option), toggle scrollok() when - writing footer to avoid wrap at lower-right corner. - + correct behavior of clrtoeol() immediately after wrapping cursor, - which was not clearing the line at the cursor position (reported by - Liviu Daia ). - + corrected mapping for ACS_LANTERN, which was 'I' rather than 'i' - (reported by Klaus Weide ). - + many corrections to make progs/capconvert work, as well as make it - reasonably portable and integrated with ncurses 4.1 (reported by Dave - Furstenau ). - -970726 - + add flag SP->_fifohold, corresponding logic to modify the behavior of - the line breakout logic so that if the application does not read - input, refreshes will not be stopped, but only slowed. - + generate slk_attr_off(), slk_attr_on(), slk_attr_set(), vid_attr(), - ifdef'd for wide-character support, since ncurses' WA_xxx attribute - masks are identical with the A_xxx masks. - + modify MKlib_gen.sh to generate ifdef'd functions to support optional - configuration of wide-characters. - + modify tset to behave more like SVr4's tset, which does not modify - the settings of intr, quit or erase unless they are given as command - options (reported by Nelson H. F. Beebe ). - + modify tset to look in /etc/ttys or /etc/ttytype if the configuration - does not have getttynam(). - + extend baudrate table in tset.c to match baudrate() function. - + add table entries for 230400 and 460800 bd to baudrate() function. - + improve breakout logic by allowing it before the first line updated, - which is what SVr4 curses does (patch by Alexander V. Lukyanov). - + correct initialization of vcost in relative_move(), for cursor-down - case (patch by Alexander V. Lukyanov). - > nits gleaned from Debian distribution of 1.9.9g-3: - + install symbolic link for intotocap. - + reference libc directly when making shared libraries. - + correct renaming of curs_scr_dmp.3x in man_db.renames. - + guard tgetflag() and other termcap functions against null cur_term - pointer. - -970719 - + corrected initial state of software echo (error in 970405, reported - by Alexander V. Lukyanov). - + reviewed/added messages to configure script, so that all non-test - options should be accompanied by a message. - + add configure check for long filenames, using this to determine if - it is safe to allow long aliases for terminal descriptions as does - SVr4. - + add configure options for widec (wide character), hashmap (both - experimental). - > patch by Alexander V. Lukyanov: - + hashmap.c - improved by heuristic, so that scroll test works much - better when csr is not available. - + hardscroll.c - patched so that it continues to scroll other chunks - after failure to scroll one. - + lib_doupdate.c - _nc_mvcur_scrolln extended to handle more cases; csr - is avoided as it is relative costly. Fixed wrong coordinates in one - case and wrong string in TRACE. - > patch by Juergen Pfeifer: - + modify C++ binding to compile on AIX 4.x with the IBM C-SET++ - compiler. - -970712 - + remove alternate character set from kterm terminfo entry; it uses the - shift-out control for a purpose incompatible with curses, i.e., font - switching. - + disentangle 'xterm' terminfo entry from some derived entries that - should be based on xterm-r6 instead. - + add cbt to xterm-xf86-xv32 terminfo entry; I added the emulation for - XFree86 3.1.2F, but overlooked its use in terminfo then - T.Dickey. - + correct logic in lib_mvcur.c that uses back_tab. - -970706 - + correct change from 970628 to ClrUpdate() in lib_doupdate.c so that - contents of curscr are saved in newscr before clearing the screen. - This is needed to make repainting work with the present logic of - TransformLine(). - + use napms() rather than sleep() in tset.c to avoid interrupting I/O. - -970705 - + add limit checks to _nc_read_file_entry() to guard against overflow - of buffer when reading incompatible terminfo format, e.g, from OSF/1. - + correct some loop-variable errors in xmc support in lib_doupdate.c - + modify ncurses 'b' test to add gaps, specified by user, to allow - investigation of interaction with xmc (magic cookie) code. - + correct typo in 970524 mods to xmas.c, had omitted empty parameter - list from has_colors(), which gcc ignores, but SVr4 does not - (reported by Larry Virden). - + correct rmso capability in wy50-mc description. - + add configure option "--enable-hard-tabs", renamed TABS_OK ifdef to - USE_HARD_TABS. - > patch by Juergen Pfeifer: - + Add bindings for keyok() and define_key() to the Ada95 packages. - + Improve man pages menu_post.3x and menu_format.3x - + Fix the HTML pages in the Ada95/html directory to reflect the above - changes. - -970628 - + modify change from 970101 to ClrUpdate() in lib_doupdate.c so that - pending changes to both curscr and newscr are flushed properly. - This fixes a case where the first scrolling operation in nvi would - cause the screen to be cleared unnecessarily and repainted before - doing the indexing, i.e., by repeatedly pressing 'j' (reported by - Juergen Pfeifer). - + correct error in trans_string() which added embedded newlines in a - terminfo description to the stored strings. - + remove spurious newlines from sgr in wyse50 (and several other) - terminfo descriptions. - + add configure option for experimental xmc (magic cookie) code, - "--enable-xmc-glitch". When disabled (the default), attributes that - would store a magic cookie are suppressed in vidputs(). The magic - cookie code is far from workable at this stage; the configuration - option is a stopgap. - + move _nc_initscr() from lib_initscr.c to lib_newterm.c - + correct path for invoking make_keys (a missing "./"). - -970621 - + correct sign-extension problem with "infocmp -e", which corrupted - acsc values computed for linux fallback data. - + correct dependency on ncurses/names.c (a missing "./"). - + modify configure script to use '&&' even for cd'ing to existing - directories to work around broken shell interpreters. - + correct a loop-limit in _nc_hash_map() (patch by Alexander V. - Lukyanov). - -970615 - + restore logic in _nc_scroll_optimize() which marks as touched the - lines in curscr that are shifted. - + add new utility 'make_keys' to compute keys.tries as a table rather - than a series of function calls. - + correct include-dependency for tic.h used by name_match - + removed buffer-allocation for name and description from m_item_new.c, - since this might result in incompatibilities with SVr4. Also fixed - the corresponding Ada95 binding module (patch by Juergen Pfeifer, - report by Avery Pennarun ) - + removed the mechanism to timestamp the generated Ada95 sources. This - resulted always in generating patches for the HTML doc, even when - nothing really changed (patch by Juergen Pfeifer). - + improve man page mitem_new.3x (patch by Juergen Pfeifer). - -970614 - + remove ech capability from rxvt description because it does not work. - + add missing case logic for infocmp -I option (reported by Lorenzo M. - Catucci ) - + correct old bug in pnoutrefresh() unmasked by fix in 970531; this - caused glitches in the ncurses 'p' test since the area outside the - pad was not compared when setting up indices for _nc_scroll_optimize. - + rewrote tracebits() to workaround misdefinition of TOSTOP on Ultrix - 4.4, as well as to eliminate fixed-size buffer (reported by Chris - Tanner ) - + correct prototype for termattrs() as per XPG4 version 2. - + add placeholder prototypes for color_set(), erasewchar(), - term_attrs(), wcolor_set() as per XPG4 version 2. - + correct attribution for progs/progs.priv.h and lib_twait.c - + improve line-breakout logic by checking based on changed lines rather - than total lines (patch by Alexander V. Lukyanov). - + correct loop limits for table-lookup of enumerated value in form - (patch by Juergen Pfeifer). - + improve threshhold computation for determining when to call ClrToEOL - (patch by Alexander V. Lukyanov). - -970531 - + add configure option --disable-database to force the library to - use only the fallback data. - + add configure option --with-fallbacks, to specify list of fallback - terminal descriptions. - + add a symbolic link for ncurses.h during install; too many programs - still assume there's an ncurses.h - + add new terminfo.src entry for xterm-xf86-v33. - + restore terminfo.src entry for emu to using setf/setb, since it is - not, after all, generating ANSI sequences. Corrected missing comma - that caused setf/setb entries to merge. - + modify mousemask() to use keyok() to enable/disable KEY_MOUSE, so - that applications can disable ncurses' mouse and supply their own - handler. - + add extensions keyok() and define_key(). These are designed to allow - the user's application better control over the use of function keys, - e.g., disabling the ncurses KEY_MOUSE. (The define_key idea was from - a mailing-list thread started by Kenneth Albanowski - Nov'1995). - + restore original behavior in ncurses 'g' test, i.e., explicitly - set the keypad mode rather than use the default, since it confuses - people. - + rewrote the newdemo banner so it's readable (reported by Hugh - Daniel). - + tidy up exit from hashtest (reported by Hugh Daniel). - + restore check for ^Q in ncurses 'g' test broken in 970510 (reported - by Hugh Daniel) - + correct tput program, checking return-value of setupterm (patch by - Florian La Roche). - + correct logic in pnoutrefresh() and pechochar() functions (reported - by Kriang Lerdsuwanakij ). The computation - of 'wide' date to eric's #283 (1.9.9), and the pechochar bug to the - original implementation (1.9.6). - + correct typo in vt102-w terminfo.src entry (patch by Robert Wuest - ) - + move calls of _nc_background() out of various loops, as its return - value will be the same for the whole window being operated on (patch - by J T Conklin). - + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in - SVr4 headers (patch by J T Conklin ) - + modify glibc addon-configure scripts (patch by H.J.Lu). - + correct a bug in hashmap.c: the size used for clearing the hashmap - table was incorrect, causing stack corruption for large values of - LINES, e.g., >MAXLINES/2 (patch by Alexander V. Lukyanov). - + eric's terminfo 9.13.23 & 9.13.24 changes: replaced minitel-2 entry, - added MGR, ansi-nt (note: the changes described for 9.13.24 have not - been applied). - > several changes by Juergen Pfeifer: - + correct a missing error-return in form_driver.c when wrapping of a - field is not possible. - + correct logic in form_driver.c for configurations that do not have - memccpy() (reported by Sidik Isani ) - + change several c++ binding functions to inline. - + modify c++ menu binding to inherit from panels, for proper - initialization. - + correct freeing of menu items in c++ binding. - + modify c++ binding to reflect removal of const from user data pointer - in forms/menus libraries. - -970524 - + add description of xterm-16color. - + modify name of shared-library on *BSD to end with $(REL_VERSION) - rather than $(ABI_VERSION) to match actual convention on FreeBSD - (cf: 960713). - + add OpenBSD to shared-library case, same as NetBSD and FreeBSD - (reported by Hugh Daniel ). - + corrected include-dependency in menu/Makefile so that "make install" - works properly w/o first doing "make". - + add fallback definition for isascii, used in infocmp. - + modify xmas to use color, and to exit right away when a key is - pressed. - + modify gdc so that the scrolled digits function as described (there - was no time delay between the stages, and the digits overwrote the - bounding box without tidying up). - + modify lib_color.c to use setaf/setab only for the ANSI color codes - 0 through 7. Using 16 colors requires setf/setb. - + modify ncurses 'c' test to work with 16 colors, as well as the normal - 8 colors. - + remove const qualifier from user data pointer in forms and menus - libraries (patch by Juergen Pfeifer). - + rewrote 'waddchnstr()' to avoid using the _nc_waddch_nosync() - function, thereby not interpreting tabs, etc., as per spec (patch by - Alexander V. Lukyanov). - -970517 - + suppress check for pre-existing ncurses header if the --prefix - option is specified. - + add configure options "--with-system-type" and - "--with-system-release" to assist in checking the generated - makefiles. - + add configure option "--enable-rpath" to allow installers to specify - that programs linked against shared libraries will have their library - path embedded, allowing installs into nonstandard locations. - + add flags to OSF1 shared-library options to specify version and - symbol file (patch by Tim Mooney ) - + add missing definition for ABI_VERSION to c++/Makefile.in (reported - by Satoshi Adachi ). - + modify link flags to accommodate HP-UX linker which embeds absolute - pathnames in executables linked against shared libraries (reported by - Jason Evans , solved by Alan Shutko - ). - + drop unnecessary check for attribute-change in onscreen_mvcur() since - mvcur() is the only caller within the library, and that check in turn - is exercised only from lib_doupdate.c (patch by Alexander V. - Lukyanov). - + add 'blank' parameter to _nc_scroll_window() so _nc_mvcur_scrolln() - can use the background of stdscr as a parameter to that function - (patch by Alexander V. Lukyanov). - + moved _nc_mvcur_scrolln() from lib_mvcur.c to lib_doupdate.c, to use - the latter's internal functions, as well as to eliminate unnecessary - cursor save/restore operations (patch by Alexander V. Lukyanov). - + omit parameter of ClrUpdate(), since it is called only for newscr, - further optimized/reduced by using ClearScreen() and TransformLine() - to get rid of duplicate code (patch by Alexander V. Lukyanov). - + modify scrolling algorithm in _nc_scroll_optimize() to reject hunks - that are smaller than the distance to be moved (patch by Alexander V. - Lukyanov). - + correct a place where the panel library was not ifdef'd in ncurses.c - (Juergen Pfeifer) - + documentation fixes (Juergen Pfeifer) - -970515 4.1 release for upload to prep.ai.mit.edu - + re-tag changes since 970505 as 4.1 release. - -970510 - + modify ncurses 'g' test to allow mouse input - + modify default xterm description to include mouse. - + modify configure script to add -Wwrite-strings if gcc warnings are - enabled while configuring --enable-const (and fixed related - warnings). - + add toggle, status display for keypad mode to ncurses 'g' test to - verify that keypad and scrollok are not inherited from parent window - during a call to newwin. - + correction to MKexpanded.sh to make it work when configure --srcdir - is used (reported by H.J.Lu). - + revise test for bool-type, ensuring that it checks if builtin.h is - available before including it, adding test for sizeof(bool) equal - to sizeof(short), and warning user if the size cannot be determined - (reported by Alexander V. Lukyanov). - + add files to support configuration of ncurses as an add-on library - for GNU libc (patch by H.J.Lu ) - -970506 - + correct buffer overrun in lib_traceatr.c - + modify change to lib_vidattr.c to avoid redundant orig_pair. - + turn on 'echo()' in hanoi.c, since it is initially off. - + rename local 'errno' variable in etip.h to avoid conflict with global - (H.J.Lu). - + modify configure script to cache LD, AR, AR_OPTS (patch by H.J.Lu - ) - -970505 4.1 pre-release - + regenerate the misc directory html dumps without the link list, which - is not useful. - + correct dependency in form directory makefile which caused - unnecessary recompiles. - + correct substitution for ABI_VERSION in test-makefile - + modify install rules for shared-library targets to remove the target - before installing, since some install programs do not properly handle - overwrite of symbolic links. - + change order of top-level targets so that 'include' immediate - precedes the 'ncurses' directory, reducing the time between new - headers and new libraries (requested by Larry Virden). - + modify lib_vidattr.c so that colors are turned off only before - modifying other attributes, turned on after others. This makes the - hanoi.c program display correctly on FreeBSD console. - + modify debug code in panel library to print user-data addresses - rather than the strings which they (may) point to. - + add check to ensure that C++ binding and demo are not built with g++ - versions below 2.7, since the binding uses templates. - + modify c++ binding and demo to build and run with SGI's c++ compiler. - (It also compiles with the Sun SparcWorks compiler, but the demo does - not link, due to a vtbl problem). - + corrections to demo.cc, to fix out-of-scope variables (Juergen - Pfeifer). - -970503 - + correct memory leak in _nc_trace_buf(). - + add configure test for regexpr.h, for Unixware 1.x. - + correct missing "./" prefixing names of generated files in ncurses - directory. - + use single-quotes in configure scripts assignments for MK_SHARED_LIB - to workaround shell bug on FreeBSD 2.1.5 - + remove tabs from intermediate #define's for GCC_PRINTF, GCC_SCANF - that caused incorrect result in ncurses_cfg.h - + correct initialization in lib_trace.c, which omitted version info. - + remove ech, el1 attributes from cons25w description; they appear to - malfunction in FreeBSD 2.1.5 - + correct color attributes in terminfo.src and lib_color.c to match - SVr4 behavior by interchanging codes 1,4, 3,6 in the setf/setb - capabilities. - + use curs_set() rather than checks via tigetstr() for test programs - that hide the cursor: firework, rain, worm. - + ensure that if the terminal lacks change_scroll_region, parm_index - and parm_rindex are used only to scroll the whole screen (patch by - Peter Wemm). - + correct curs_set() logic, which did not return ERR if the requested - attributes did not exist, nor did it assume an unknown initial state - for the cursor (patch by Alexander V. Lukyanov). - + combine IDcTransformLine and NoIDcTransformLine to new TransformLine - function in lib_doupdate.c (patch by Alexander V. Lukyanov). - + correct hashmap.c, which did not update index information (patch by - Alexander V. Lukyanov). - + fixes for C++ binding and demo (see c++/NEWS) (Juergen Pfeifer). - + correct index in lib_instr.c (Juergen Pfeifer). - + correct typo in 970426 patch from Tom's cleanup of lib_overlay.c - (patch by Juergen Pfeifer). - -970426 - + corrected cost computation in PutRange(), which was using - milliseconds compared to characters by adding two new members to the - SCREEN struct, _hpa_ch_cost and _cup_ch_cost. - + drop ncurses/lib_unctrl.c, add ncurses/MKunctrl.awk to generate a - const array of strings (suggested by Alexander V. Lukyanov). The - original suggestion in 970118 used a perl script. - + rewrote ncurses 'b' test to better exercise magic-cookie (xmc), as - well as noting the attributes that are not supported by a terminal. - + trace the computation of cost values in lib_mvcur.c - + modify _nc_visbuf() to use octal rather than hex, corrected sign - extension bug in that function that caused buffer overflow. - + modify trace in lib_acs.c to use _nc_visbuf(). - + suppress trace within _traceattr2(). - + correct logic of _tracechtype2(), which did not account for repeats - or redefinition within an acsc string. - + modify debug-library version baudrate() to use environment variable - $BAUDRATE to override speed computation. This is needed for - regression testing. - + correct problems shown by "weblint -pedantic". - + update mailing-list information (now ncurses@bsdi.com). - -970419 - + Improve form_field_validation.3x manpage to better describe the - precision parameter for TYPE_NUMERIC and TYPE_INTEGER. Provide more - precise information how the range checking can be avoided. (patch by - Juergen Pfeifer, reported by Bryan Henderson) - + change type of min/max value of form types TYPE_INTEGER to long to - match SVr4 documentation. - + set the form window to stdscr in set_form_win() so that form_win() - won't return null (patch by Juergen Pfeifer, reported by Bryan - Henderson ). - -970412 - + corrected ifdef'ing of inline (cf: 970321) for TRACE vs C++. - + corrected toggle_attr_off() macro (patch by Andries Brouwer). - + modify treatment of empty token in $MANPATH to /usr/man (reported by - ) - + modify traces that record functions-called so that chtype and attr_t - values are expressed symbolically, to simplify reuse of generated - test-scripts on SVr4 regression testing. - + add new trace functions _traceattr2() and _tracechtype2() - -970405 - + add configure option --enable-const, to support the use of 'const' - where XSI should have, but did not, specify. This defines - NCURSES_CONST, which is an empty token otherwise, for strict - compatibility. - + make processing of configure options more verbose by echoing the - --enable/--with values. - + add configure option --enable-big-core - + set initial state of software echo off as per XSI. - + check for C++ builtin.h header - + correct computation of absolute-path for $INSTALL that dropped "-c" - parameter from the expression. - + rename config.h to ncurses_cfg.h to avoid naming-conflict when - ncurses is integrated into larger systems (adapted from diffs by - H.J.Lu for libc). - + correct inequality in lib_doupdate.c that caused a single-char to not - be updated when the char on the right-margin was not blank, idcok() - was true (patch by Alexander V Lukyanov (in 970124), reported - by Kriang Lerdsuwanakij in 970329). - + modify 'clean' rule in include/Makefile so that files created by - configure script are removed in 'distclean' rule instead. - -970328 - + correct array limit in tparam_internal(), add case to interpret "%x" - (patch by Andreas Schwab) - + rewrote number-parsing in ncurses.c 'd' test; it did not reset the - value properly when non-numeric characters were given (reported by - Andreas Schwab ) - -970321 - + move definition of __INTERNAL_CAPS_VISIBLE before include for - progs.priv.h (patch by David MacKenzie). - + add configuration summary, reordered check for default include - directory to better accommodate a case where installer is configuring - a second copy of ncurses (reported by Klaus Weide - ) - + moved the #define for 'inline' as an empty token from the - $(CFLAGS_DEBUG) symbol into config.h, to avoid redefinition warning - (reported by Ward Horner). - + modify test for bool builtin type to use 'unsigned' rather than - 'unknown' when cross-compiling (reported by Ward Horner). - -970315 - + add header dependencies so that "make install.libs" will succeed - even if "make all" is not done first. - + moved some macros from lib_doupdate.c to curses.priv.h to use in - expanded functions with ATAC. - + correct implementation of lib_instr.c; both XSI and SVr4 agree that - the winnstr functions can return more characters than will fit on one - line. - -970308 - + modify script that generates lib_gen.c to support traces of called & - return. - + add new configure option "--disable-macros", for testing calls within - lib_gen.c - + corrected logic that screens level-checking of called/return traces. - -970301 - + use new configure macro NC_SUBST to replace AC_PATH_PROG, better - addressing request by Ward Horner. - + check for cross-compiling before trying to invoke the autoconf - AC_FUNC_SETVBUF_REVERSED macro (reported by Ward Horner) - + correct/simplify loop in _nc_visbuf(), 970201 changes omitted - a pointer-increment. - + eliminate obsolete symbol SHARED_ABI from dist.mk (noted by - Florian La Roche). - -970215 - + add configure option --enable-expanded, together with code that - implements an expanded form of certain complex macros, for testing - with ATAC. - + disable CHECK_POSITION unless --with-assertions is configured - (Alexander V Lukyanov pointed out that this is redundant). - + use keyname() to show traced chtype values where applicable rather - than _tracechar(), which truncates the value to 8-bits. - + minor fixes to TRACE_ICALLS, added T_CREATE, TRACE_CCALLS macros. - + modify makefiles in progs and test directories to avoid using C - preprocessor options on link commands (reported by Ward Horner) - + correct ifdef/include-order for nc_alloc.h vs lib_freeall.c (reported - by Ward Horner) - + modify ifdef's to use configure-defined symbols consistently - (reported by Ward Horner) - + add/use new makefile symbols AR, AR_OPTS and LD to assist in non-UNIX - ports (reported by Ward Horner ) - + rename struct try to struct tries, to avoid name conflict with C++ - (reported by Gary Johnson). - + modify worm.c to hide cursor while running. - + add -Wcast-qual to gcc warnings, fix accordingly. - + use PutChar rather than PutAttrChar in ClrToEOL to properly handle - wrapping (Alexander V Lukyanov). - + correct spurious echoing of input in hanoi.c from eric's #291 & #292 - patches (reported by Vernon C. Hoxie ). - + extend IRIX configuration to IRIX64 - + supply missing install.libs rule needed after restructuring - test/Makefile.in - -970208 - + modify "make mostlyclean" to leave automatically-generated source - in the ncurses directory, for use in cross-compiles. - + autogenerated object-dependencies for test directory - + add configure option --with-rcs-ids - + modify configuration scripts to generate major/minor/patch versions - (suggested by Alexander V Lukyanov). - + supply missing va_end's in lib_scanw.c - + use stream I/O for trace-output, to eliminate fixed-size buffer - + add TRACE_ICALLS definition/support to lib_trace.c - + modify Ada95 binding to work with GNAT 3.09 (Juergen Pfeifer). - -970201 - + add/modify traces for called/return values to simplify extraction - for test scripts. - + changed _nc_visbuf to quote its result, and to dynamically allocate - the returned buffer. - + invoke ldconfig after installing shared library - + modify install so that overwrite applies to shared library -lcurses - in preference to static library (reported by Zeyd M Ben-Halim 960928). - + correct missing ';' in 961221 mod to overwrite optional use of $(LN_S) - symbol. - + fixes to allow "make install" to work without first doing a "make - all" (suggested by Larry Virden). - -970125 - + correct order of #ifdef for TABS_OK. - + instrumented toe.c to test memory-leaks. - + correct memory-deallocation in toe.c (patch by Jesse Thilo). - + include in configuration test for regex.h (patch by - Andreas Schwab) - + make infocmp recognize -I option, for SVr4 compatibility (reported by - Andreas Schwab ) - -970118 - + add extension 'use_default_colors()', modified test applications that - use default background (firework, gdc, hanoi, knight, worm) to - demonstrate. - + correct some limit checks in lib_doupdate.c exposed while running - worm. - + use typeCalloc macro for readability. - + add/use definition for CONST to accommodate testing with Solaris - (SVr4) curses, which doesn't use 'const' in its prototypes. - + modify ifdef's in test/hashtest.c and test/view.c to compile with - Solaris curses. - + modify _tracedump() to pad pad colors & attrs lines to match change - in 970101 showing first/last changes. - + corrected location of terminating null on dynamically allocated forms - fields (patch by Per Foreby). - -970111 - + added headers to make view.c compile on SCO with the resizeterm() - code (i.e., struct winsize) - though this compiles, I don't have a - suitable test configuration since SIGWINCH doesn't pass my network to - that machine - T.Dickey. - + update test/configure.in to supply some default substitutions. - + modify configure script to add -lncurses after -lgpm to fix problem - linking against static libraries. - + add a missing noraw() to test/ncurses.c (places noted by Jeremy - Buhler) - + add a missing wclear() to test/testcurs.c (patch by Jeremy Buhler - ) - + modify headers to accommodate compilers that don't allow duplicate - "#define" lines for NCURSES_VERSION (reported by Larry W. Virden - ) - + fix formatting glitch in curs_getch.3x (patch by Jesse Thilo). - + modify lib_doupdate to make el, el1 and ed optimization use the - can_clear_with macro, and change EmitRange to allow leaving cursor at - the middle of interval, rather than always at the end (patch by - Alexander V Lukyanov). This was originally 960929, resync 970106. - -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 - by Jesse Thilo). - + correct font-codes in some man-pages (patch by Jesse Thilo - ) - + use configure script's knowledge of existence of g++ library for the - c++ Makefile (reported by Paul Jackson). - + correct misleading description of --datadir configuration option - (reported by Paul Jackson ) - -970101 - + several corrections to _nc_mvcur_scrolln(), prompted by a bug report - from Peter Wemm: - > the logic for non_dest_scroll_region was interchanged between the - forward & reverse scrolling cases. - > multiple returns from the function allowed certain conditions to do - part of an operation before discovering that it couldn't be - completed, returning an error without restoring the cursor. - > some returns were ERR, where the function had completed the - operation, because the insert/delete line logic was improperly - tested (this was probably the case Peter saw). - > contrary to comments, some scrolling cases were tested after the - insert/delete line method. - + modify _tracedump() to show first/last changes. - + modify param of ClrUpdate() in lib_doupdate.c to 'newscr', fixes - refresh problem (reported by Peter Wemm) that caused nvi to not show - result of ":r !ls" until a ^L was typed. - -961229 (internal alpha) - + correct some of the writable-strings warnings (reported by Gary - Johnson ). Note that most of the remaining ones - are part of the XSI specification, and can't be "fixed". - + improve include-dependencies in form, menu, panel directories. - + correct logic of delay_output(), which would return early if - there is data on stdin. - + modify interface & logic of _nc_timed_wait() to support 2 file - descriptors, needed for GPM. - + integrate patch by Andrew Kuchling for GPM (mouse) - support, correcting logic in wgetch() and _nc_mouse_parse() which - prevented patch from working properly -TD - + improve performance of panel algorithm (Juergen Pfeifer 961203). - + strip RCS id's from generated .html files in Ada95 subtree. - + resync with generated .html files (Juergen Pfeifer 961223). - + terminfo.src 10.1.0 (ESR). - -961224 4.0 release - + release as 4.0 to accommodate Linux ld.so.1.8.5 - + correct syntax/spelling, regenerated .doc files from .html using - lynx 2.5 - + refined forms/menus makefiles (Juergen Pfeifer 961223). - -961221 - snapshot - + remove logic in read_entry.c that attempts to refine errno by using - 'access()' for the directory (from patch by Florian La Roche). - + correct configure test/substitution that inhibits generating - include-path to /usr/include if gcc is used (reported by Florian La - Roche). - + modify setupterm() to allocate new TERMINAL for each call, just as - solaris' curses does (Alexander V Lukyanov 960829). - + corrected memory leaks in read_entry.c - + add configure options --with-dbmalloc, --with-dmalloc, and - --disable-leaks, tested by instrumenting infocmp, ncurses programs. - + move #include's for stdlib.h and string.h to *.priv.h to accommodate - use of dbmalloc. - + modify use of $(LN_S) to follow recommendation in autoconf 2.12, - i.e., set current directory before linking. - + split-out panel.priv.h, improve dependencies for forms, menus - (Juergen Pfeifer 961204). - + modify _nc_freewin() to reset globals curscr/newscr/stdscr when - freeing the corresponding WINDOW (found using Purify). - + modify delwin() to return ERR if the window to be deleted has - subwindows, needed as a side-effect of resizeterm() (found using - Purify). Tested and found that SVr4 curses behaves this way. - + implement logic for _nc_freeall(), bringing stub up to date. - -961215 - + modify wbkgd() so that it doesn't set nulls in the rendered text, - even if its argument doesn't specify a character (fixes test case by - Juergen Pfeifer for bug-report). - + set window-attributes in wbkgd(), to simplify comparison against - Solaris curses, which does this. - -961214 - snapshot - + replace most constants in ncurses 'o' test by expressions, making it - work with wider range of screen sizes. - + add options to ncurses.c to specify 'e' test softkey format, and the - number of header/footer lines to rip-off. - + add ^R (repaint after resize), ^L (refresh) commands to ncurses 'p' - test. - + add shell-out (!) command to ncurses 'p' test to allow test of - resize between endwin/refresh. - + correct line-wrap case in mvcur() by emitting carriage return, - overlooked in 960928, but needed due to SVr4 compatibility changes to - terminal modes in 960907. - + correct logic in wresize that causes new lines to be allocated, - broken for the special case of increasing rows only in 960907's fix - for subwindows. - + modify configure script to generate $(LDFLAGS) with -L and -l options - in preference to explicit library filenames. (NOTE: this may - require further amending, since I vaguely recall a dynamic loader - that did not work properly without the full names, but it should be - handled as an exception to the rule, since some linkers do bulk - inclusion of libraries when given the full name - T.Dickey). - + modify configure script to allow user-supplied $CFLAGS to set the - debug-option in all libraries (requested by lots of people) -TD - + use return consistently from main(), rather than exit (reported by - Florian La Roche). - + add --enable-getcap-cache option to configure, normally disabled - (requested by Florian La Roche). - + make configure test for gettimeofday() and possibly -lbsd more - efficient (requested by Florian La Roche ) - + minor adjustments to Ada95 binding (patches by Juergen Pfeifer) - + correct attributes after emitting orig_pair in lib_vidattr.c (patch - by Alexander V Lukyanov). - -961208 - + corrected README wrt Ada95 (Juergen Pfeifer) - -961207 - snapshot - + integrate resizeterm() into doupdate(), so that if screen size - changes between endwin/refresh, ncurses will resize windows to fit - (this needs additional testing with pads and softkeys). - + add, for memory-leak testing, _nc_freeall() entrypoint to free all - data used in ncurses library. - + initialize _nc_idcok, _nc_idlok statically to resolve discrepancy - between initscr() and newwin() initialization (reported by - Alexander V Lukyanov). - + test built VERSION=4.0, SHARED_ABI=4 with Linux ld.so.1.8.5 - (set beta versions to those values -- NOTE that subsequent pre-4.0 - beta may not be interchangeable). - + modify configure script to work with autoconf 2.12 - -961130 1.9.9g release - + add copyright notices to configuration scripts (written by Thomas - Dickey). - -961127 - > patch, mostly for panel (Juergen Pfeifer): - + cosmetic improvement for a few routines in the ncurses core library - to avoid warning messages. - + the panel overlap detection was broken - + the panel_window() function was not fool-proof. - + Some inlining... - + Cosmetic changes (also to avoid warning messages when compiling with - -DTRACE). - -961126 - > patch by Juergen Pfeifer: - + eliminates warning messages for the compile of libform. - + inserts Per Foreby's new field type TYPE_IPV4 into libform. - + Updates man page and the Ada95 binding to reflect this. - + Improves inlining in libmenu and libform. - -961120 - + improve the use of the "const" qualifier in the - panel library (Juergen Pfeifer) - + change set_panel_userptr() and panel_userptr() to use void* - (Juergen Pfeifer) - -961119 - + change ABI to 3.4 - + package with 961119 version of Ada95 binding (fixes for gnat-3.07). - (Juergen Pfeifer) - + correct initialization of the stdscr pseudo panel in panel library - (Juergen Pfeifer) - + use MODULE_ID (rcs keywords) in forms and menus libraries (Juergen - Pfeifer). - > patch #324 (ESR): - + typo in curs_termcap man page (reported by Hendrik Reichel - <106065.2344@compuserve.com>) - + change default xterm entry to xterm-r6. - + add entry for color_xterm - -961116 - snapshot - + lint found several functions that had only #define implementations - (e.g., attr_off), modified curses.h.in to generate them as per XSI - Curses requirement that every macro be available as a function. - + add check in infocmp.c to guard against string compare of - CANCELLED_STRING values. - + modify firework.c, rain.c to hide cursor while running. - + correct missing va_end in lib_tparm.c - + modify hanoi.c to work on non-color terminals, and to use timing - delays when in autoplay mode. - + correct 'echochar()' to refresh immediately (reported by Adrian - Garside <94ajg2@eng.cam.ac.uk>) - > patch #322 (ESR): - + reorganize terminfo.src entries for xterm. - -961109 - snapshot - + corrected error in line-breakout logic (lib_doupdate.c) - + modified newdemo to use wgetch(win) rather than getch() to eliminate - a spurious clear-screen. - + corrected ifdef's for 'poll()' configuration. - + added modules to ncurses, form, menu for Ada95 binding (Juergen - Pfeifer). - + modify set_field_buffer() to allow assignment of string longer than - the initial buffer length, and to return the complete string rather - than only the initial size (Juergen Pfeifer and Per Foreby - ). - -961102 - snapshot - + configure for 'poll()' in preference to 'select()', since older - systems are more likely to have a broken 'select()'. - + modified render_char() to avoid OR'ing colors. - + minor fixes to testcurs.c, newdemo.c test programs: ifdef'd out the - resize test, use wbkgd and corrected box() parameters. - + make flushinp() test work in ncurses.c by using napms() instead of - sleep(). - + undo ESR's changes to xterm-x11r6 (it no longer matched the X11R6.1 - distribution, as stated) - + terminfo 9.13.18 resync (ESR) - + check for getenv("HOME") returning null (ESR). - + change buffer used to decode xterm-mouse commands to unsigned to - handle displays wider than 128 chars (Juergen Pfeifer). - + correct typo curs_outopts.3x (Juergen Pfeifer). - + correct limit-checking in wenclose() (Juergen Pfeifer). - + correction to Peter Wemm's newwin change (Thomas Fehr - ). - + corrections to logic that combines colors and attributes; they must - not be OR'd (Juergen Pfeifer, extending from report/patch by Rick - Marshall). - -961026 - snapshot - + reset flags in 'getwin()' that might cause refresh to attempt to - manipulate the non-existent parent of a window that is read from a - file (lib_screen.c). - + restructure _nc_timed_wait() to log more information, and to try to - recover from badly-behaved 'select()' calls (still testing this). - + move define for GOOD_SELECT into configure script. - + corrected extra '\' character inserted before ',' in comp_scan.c - + corrected expansion of %-format characters in dump_entry.c; some were - rendered as octal constants. - + modify dump_entry.c to make terminfo output more readable and like - SVr4, by using "\s" for spaces (leading/trailing only), "\," for - comma, "\^" and "\:" as well. - + corrected some memory leaks in ncurses.c, and a minor logic error - in the top-level command-parser. - + correction for label format 4 (PC style with info line), a - slk_clear(), slk_restore() sequence didn't redraw the info line - (Juergen Pfeifer). - + modified the slk window (if simulated) to inherit the background and - default character attributes from stdscr (Juergen Pfeifer). - + corrected limit-check in set_top_row (Juergen Pfeifer). - -961019 - snapshot - + correct loop-limit in wnoutrefresh(), bug exposed during pipe-testing - had '.lastchar' entry one beyond '._maxx'. - + modify ncurses test-program to work with data piped to it. - + corrected pathname computation in run_tic.sh, removing extra "../" - (reported by Tim Mooney). - + modified configure script to use previous install's location for - curses.h - + added NetBSD and FreeBSD to platforms that use --prefix=/usr as - a default. - -961013 - + revised xterm terminfo descriptions to reflect the several versions - that are available. - + corrected a pointer reference in dump_entry.c that didn't test if - the pointer was -1. - -961005 - snapshot - + correct _nc_mvcur_scrolln for terminals w/o scrolling region. - + add -x option to hashtest to control whether it allows writes to the - lower-right corner. - + ifdef'd (NCURSES_TEST) the logic for _nc_optimize_enable to make it - 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 - $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 - + fix memory leaks in delscreen() (adapted from Alexander V Lukyanov). - + improve appearance of marker in multi-selection menu (Juergen - Pfeifer) - + fix behavior for forms with all fields inactive (Juergen Pfeifer) - + document 'field_index()' (Juergen Pfeifer) - > patch #321 (ESR): - + add some more XENIX keycap translations to include/Caps. - + modify newwin to set initial state of each line to 'touched' - (from patch by Peter Wemm ) - + in SET_TTY, replace TCSANOW with TCSADRAIN (Alexander V Lukyanov). - -960928 - snapshot - + ifdef'd out _nc_hash_map (still slower) - + add graphic characters to vt52 description. - + use PutAttrChar in ClrToEOL to ensure proper background, position. - + simplify/correct logic in 'mvcur()' that does wrapping; it was - updating the position w/o actually moving the cursor, which broke - relative moves. - + ensure that 'doupdate()' sets the .oldindex values back to a sane - state; this was causing a spurious refresh in ncurses 'r'. - + add logic to configure (from vile) to guard against builders who - don't remove config.cache & config.status when doing new builds -TD - + corrected logic for 'repeat_char' in EmitRange (cf: eric #317), which - did not follow the 2-parameter scheme specified in XSI. - + corrected logic of wrefresh, wnoutrefresh broken in #319, making - clearok work properly (report by Michael Elkins). - + corrected problem with endwin introduced by #314 (removing the - scrolling-region reset) that broke ncurses.c tests. - + corrected order of args in AC_CHECK_LIB (from report by Ami Fischman - ). - + corrected formatting of terminfo.5 tables (Juergen Ehling) - > patch 320 (ESR): - + change ABI to 3.3 - + emit a carriage-return in 'endwin()' to workaround a kernel bug in - BSDI. (requested by Mike Karels ) - + reverse the default o configure --enable-termcap (consensus). - > patch 319 (ESR): - + modified logic for clearok and related functions (from report by - Michael Elkins) - untested - > patch 318 (ESR): - + correction to #317. - > patch 317 (ESR): - + re-add _nc_hash_map - + modify EmitRange to maintain position as per original design. - + add hashtest.c, program to time the hashmap optimization. - > patch 316 (ESR): - + add logic to deal with magic-cookie (how was this tested?) - (lib_doupdate.c). - + add ncurses.c driver for magic-cookie, some fixes to ncurses.c - > patch 315 (ESR): - + merged Alexander V Lukyanov's patch to use ech and rep - untested - (lib_doupdate.c). - + modified handling of interrupted system calls - untested - (lib_getch.c, lib_twait.c). - + new function _nc_mvcur_resume() - + fix return value for 'overlay()', 'overwrite()' - -960914 - snapshot - + implement subwindow-logic in wresize, minor fixes to ncurses 'g' - test. - + corrected bracketing of fallback.c (reported/suggested fix by Juergen - Ehling ). - + update xterm-color to reflect XFree86 3.1.3G release. - + correct broken dtterm description from #314 patch (e.g., spurious - newline. The 'pairs' change might work, but no one's tested it - either ;-) - + clarify the documentation for the builtin form fieldtypes (Juergen - Pfeifer) - > patch 314 (ESR): - + reset scroll region on startup rather than at wrapup time - (enhancement suggested by Alexander V Lukyanov). - + make storage of palette tables and their size counts per-screen for - multi-terminal applications (suggested by Alexander V Lukyanov). - + Improved error reporting for infotocap translation errors. - + Update terminfo.src to 9.13.14. - -960907 - snapshot - + rewrote wgetstr to make it erase control chars and also fix bogus use - of _nc_outstr which caused the display to not wrap properly (display - problem reported by John M. Flinchbaugh ) - + modify ncurses 'f' test to accommodate terminal responses to C1 codes - (and split up this screen to accommodate non-ANSI terminals). - + test enter_insert_mode and exit_insert_mode in has_ic(). - + removed bogus logic in mvcur that assumes nl/nonl set output modes - (XSI says they are input modes; SVr4 implements this). - + added macros SET_TTY, GET_TTY to term.h - + correct getstr() logic that altered terminal modes w/o restoring. - + disable ICRNL, etc., during initialization to match SVr4, removing - the corresponding logic from raw, cbreak, etc. - + disable ONLCR during initialization, to match SVr4 (this is needed - for cursor optimization when the cursor-down is a newline). - + replaced ESR's imitation of wresize with my original (his didn't - work). - -960831 - snapshot - + memory leaks (Alexander V. Lukyanov). - + modified pnoutrefresh() to be more tolerant of too-large screen - size (reported by Michael Elkins). - + correct handling of terminfo files with no strings (Philippe De - Muyter) - + correct "tic -s" to take into account -I, -C options. - + modify ncurses 'f' test to not print codes 80 through 9F, since they - are considered control codes by ANSI terminals. - -960824 - snapshot - + correct speed variable-type in 'tgetent()' (reported by Peter Wemm) - + make "--enable-getcap" configuration-option work (reported by - Peter Wemm ) - -960820 - + correct err in 960817 that changed return-value of tigetflag() - (reported by Alexander V. Lukyanov). - + modify infocmp to use library default search-path for terminfo - directory (Alexander V. Lukyanov). - -960817 - snapshot - + corrected an err in mvcur that broke resizing-behavior. - + correct fall-thru behavior of _nc_read_entry(), which was not finding - descriptions that existed in directories past the first one searched - (reported by Alexander V. Lukyanov) - + corrected typo in dtterm description. - > patch 313 (ESR): - + add dtterm description - + clarify ncurses 'i' test (drop vscanf subtest) - -960810 - snapshot - + correct nl()/nonl() to work as per SVr4 & XSI. - + minor fixes to ncurses.c (use 'noraw()', mvscanw return-code) - + refine configure-test for -g option (Tim Mooney). - + correct interaction between O_BLANK and NEW_LINE request in form - library (Juergen Pfeifer) - -960804 - + revised fix to tparm; previous fix reversed parameter order. - > patch 312 (ESR): - correct terminfo.src corrupted by #310 - > patch 311 (ESR): - + fix idlok() and idcok() and the default of the idlok switch. - -960803 - snapshot - + corrected tparm to handle capability strings without explicit pop - (reported by William P Setzer) - + add fallback def for GCC_NORETURN, GCC_UNUSED for termcap users - (reported by Tim Mooney). - > patch 310 (ESR): - + documentation and prototyping errors for has_color, immedok and idcok - (reported by William P Setzer ) - + updated qnx terminfo entry (by Michael Hunter) - -960730 - + eliminate quoted includes in ncurses subdirectory, ensure config.h - is included first. - + newterm initializes terminal settings the same as initscr (reported - by Tim Mooney). - -960727 - snapshot - + call cbreak() in initscr(), as per XSI & SVr4. - + turn off hardware echo in initscr() as per XSI & SVr4 - > patch 309 (ESR): - + terminfo changes (9.3.10), from BRL - + add more checks to terminfo parser. - + add more symbols to infocmp. - -960720 - snapshot - + save previous-attribute in lib_vidattr.c if SP is null (reported by - Juergen Fluk ) - + corrected calls on _nc_render so that background character is set - as per XSI. - + corrected wbkgdset macro (XSI allows background character to be - null), and tests that use it. - + more corrections to terminfo (xterm & rxvt) - + undid change to mcprint prototype (cannot use size_t in curses.h - because not all systems declare it in the headers that we can safely - include therein). - + move the ifdefs for errno into curses.priv.h - > patch 308 (ESR): - + terminfo changes (9.3.8) - + modified logic of error-reporting in terminfo parser - -960713 - snapshot - + always check for since ISC needs it to declare - fd_set (Juergen Pfeifer) - + install shared-libraries on NetBSD/FreeBSD with ABI-version (reported - by Juergen Pfeifer, Mike Long) - + add LOCAL_LDFLAGS2 symbol (Juergen Pfeifer) - + corrected prototype for delay_output() -- bump ABI to 3.2 - + terminfo patches #306/307 (ESR). - + moved logic that filters out rmul and rmso from setupterm to newterm - where it is less likely to interfere with termcap applications. - -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 - preformatted. - + restore man/menu_requestname.3x omitted in Zeyd's resync (oops). - + auto-configure the GCC_PRINTFLIKE/GCC_SCANFLIKE macros (reported by - Philippe De Muyter). - -960706 - snapshot - + make lib_vidattr.c more readable using macros. - + filter out rmul, rmso that conflict with sgr0 when reading terminal - descriptions. - + added sanity-checking of various paired string attributes (ESR). - + work around autoconf bug, force $INSTALL to absolute path - (reported by Zeyd). - + 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 - + revised ncurses 't' logic to show trace-disable effect in the menu. - + use getopt in ncurses program to process -s and -t options. - + make ncurses 'p' legend toggle with '?' - + disable scrollok during the ncurses 'p' test; if it is enabled the - stdscr will scroll when putting the box-corners in the lower-right - of the screen. - -960629 - snapshot - + check return code of _nc_mvcur_scrolln() in _nc_scroll_optimize() for - terminals with no scrolling-support (reported by Nikolay Shadrin - ) - + added ^S scrollok-toggle to ncurses 'g' test. - + added ^T trace-toggle to ncurses tests. - + modified ncurses test program to use ^Q or ESC consistently for - terminating tests (rather than ^D), and to use control keys rather - than function keys in 'g' test. - + corrected misplaced wclrtoeol calls in addch to accommodate wrapping - (reported by Philippe De Muyter). - + modify lib_doupdate.c to use effective costs to tradeoff between - delete-character/insert-character vs normal updating (reported by - David MacKenzie). - + compute effective costs for screen update operations (e.g., clr_eos, - delete_character). - + corrected error in knight.c exposed by wrap fixes in 960622; the - msgwin needed scrollok set. - + corrected last change to IDcTransformLine logic to avoid conflict - between PutRange and InsStr - + modified run_tic.sh to not use /usr/tmp (reported by David - MacKenzie), and further revised it and aclocal.m4 to use $TMPDIR if - set. - + corrected off-by-one in RoomFor call in read_entry.c - -960622 - snapshot - + modified logic that wraps cursor in addch to follow the XSI spec, - (implemented in SVr4) which states that the cursor position is - updated when wrapping. Renamed _NEED_WRAP to _WRAPPED to reflect the - actual semantics. - + added -s option to tic, to provide better diagnostics in run_tic.sh - + improved error-recovery for tabset install. - + change ABI to 3.1 (dropped tparam, corrected getbkgd(), added - _yoffset to WINDOW). - + modified initialization of SP->_ofp so that init_acs() is called with - the "right" file pointer (reported by Rick Marshall - + documentation fixes (Juergen Pfeifer). - + corrected, using new SCREEN and WINDOW members, the behavior of - ncurses if one uses ripoffline() to remove a line from the top of the - screen (Juergen Pfeifer). - + modified autoconf scripts to prepare for Ada95 (GNAT) binding to - ncurses (Juergen Pfeifer). - + incorrect buffer-size in _nc_read_entry, reported by ESR. - -960617 - + corrected two logic errors in read_entry.c, write_entry.c (called by - tic, the write/read of terminfo entries used inconsistent rules for - locating the entries; the $TERMINFO_DIRS code would find only the - first entry in a list). - + refined pathname computation in run_tic.sh and shlib. - + corrected initialization of $IP in misc/run_tic.sh - -960615 - snapshot - + ifdef'd out _nc_hash_map() call because it does not improve speed. - + display version of gcc if configure script identifies it. - + modify configure script to use /usr as Linux's default prefix. - + modify run_tic.sh to use shlib script, fixes some problems installing - with a shared-library configuration. - + adjusted configure script so that it doesn't run tests with the - warnings turned on, which makes config.log hard to read. - + added 'lint' rule to top-level Makefile. - + added configure option '--with-install-prefix' for use by system - builders to install into staging locations (requested by - Charles Levert ). - + corrected autoconfigure for Debian man program; it's not installed - as "man_db". - + set noecho in 'worm'; it was ifdef'd for debug only - + updated test/configure.in for timing-display in ncurses 'p' test - + corrected misspelled 'getbkgd()'. - + corrected wbkgdset to work like observed syvr4 (sets A_CHARTEXT part - to blank if no character given, copies attributes to window's - attributes). - + modified lib_doupdate.c to use lower-level SP's current_attr state - instead of curscr's state, since it is redundant. - + correction to IDcTransformLine logic which controls where InsStr is - invoked (refined by Alexander V Lukyanov). - > patch 303 (ESR): - + conditionally include Chris Torek's hash function _nc_hash_map(). - + better fix for nvi refresh-bug (Rick Marshall) - + fix for bug in handling of interrupted keystroke waits, - (Werner Fleck). - -960601 - snapshot - + 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 - + corrected ifdef for BROKEN_LINKER in MKnames.awk.in - + corrected missing INSTALL_DATA in misc/Makefile.in - + flush output when changing cursor-visibility (Rick Marshall) - + fix a minor bug in the _nc_ripoff() routine and improve error - checking when creating the label window (Juergen Pfeifer). - + enhancement to the control over the new PC-style soft key format. - allow caller now to select whether or not one wants to have - the index-line; see curs_slk.3x for documentation (Juergen Pfeifer). - + typos, don't use inline with -g (Philippe De Muyter) - + fixes for menus & wattr-, slk-functions (Juergen Pfeifer) - -960526 - snapshot - + removed --with-ticdir option altogether, maintain compatibility with - existing applications via symbolic link in run_tic.sh - + patch for termio.h, signal (Philippe De Muyter) - + auto-configure gcc warning options rather than infer from version. - + auto-configure __attribute__ for different gcc versions. - + corrected special use of clearok() in hardscroll.c by resetting flag - in wrefresh(). - + include stdlib.h before defs for EXIT_SUCCESS, for OSF/1. - + include sys/types.h in case stdlib.h does not declare size_t. - + fixes for makefile (Tim Mooney) - + fixes for menus & forms (Juergen Pfeifer) - -960518 - snapshot - + revised ncurses.c panner test, let pad abut all 4 sides of screen. - + refined case in lib_doupdate.c for ClrToEOL(). - + corrected prior change for PutRange (Alexander V Lukyanov - ). - + autoconf mods (Tim Mooney ). - + locale fix for forms (Philippe De Muyter ) - + renamed "--with-datadir" option to "--with-ticdir" to avoid - confusion, and made this check for the /usr/lib/terminfo pre-existing - directory. - > patches 299-301 (ESR): - + added hashmap.c - + mods to tracing, especially for ACS chars. - + corrected off-by-one in IDCtransform. - + corrected intermittent mouse bug by using return-value from read(). - + mods to parse_entry.c, for smarter defaults. - -960512 - + use getopt in 'tic'; added -L option and modified -e option to allow - list from a file. - -960511 - + don't use fixed buffer-size in tparm(). - + modified tic to create terminfo directory if it doesn't exist. - + added -T options to tic and infocmp (for testing/analysis) - + refined the length criteria for termcap and terminfo - + optimize lib_doupdate with memcpy, PutRange - > patches 297, 298 (ESR): - + implement TERMINFO_DIRS, and -o option of tic - + added TRACE_IEVENT - + removed boolean version of 'getm' - + added lib_print.c (for Rick Marshall) - + added has_key() - + added 't' to ncurses.c test. - + moved delay_output() to lib_tputs.c - + removed tparam() (was added in 1.9.9, but conflicts with emacs and - is not part of X/Open Curses). - + misc cursor & optimization fixes. - -960504 - snapshot - + modified ncurses 'p' test to allow full-screen range for panner size. - + fixes for locale (Philippe De Muyter ) - + don't use fixed buffer-size in fmt_entry(). - + added usage-message to 'infocmp'. - + modified install.includes rules to prepend subdirectory-name to - "#include" if needed. - -960430 - + protect wrefresh, wnoutrefresh from invocation with pad argument. - + corrected default CCFLAGS in test/Makefile. - -960428 - snapshot - + implemented logic to support terminals with background color erase - (e.g., rxvt and the newer color xterm). - + improved screen update logic (off-by-one logic error; use clr_eos if - possible) - -960426 - snapshot - + change ncurses 'a' test to run in raw mode. - + make TIOCGWINSZ configure test less stringent, in case user - configures via terminal that cannot get screen size. - > patches 295, 296 (ESR): - + new "-e" option of tic. - + fix for "infocmp -e". - + restore working-directory in read_termcap.c - + split lib_kernel.c, lib_setup.c and names.c in order to reduce - overhead for programs that use only termcap features. - -960418 - snapshot - + use autoconf 2.9 - + fix for AIX 3.2.5 (must define _POSIX_SOURCE to get termios struct - definitions via , modified macros in lib_raw.c to avoid - K&R-style substitution) - > patches 293, 294 (ESR): - + mods to wgetch() in cooked mode - + corrected askuser() logic in tset - + correct interaction of endwin() with mouse processing - + added trace support for TTY flags - -960406 - + fixes for NeXT, ISC and HPUX auto-configure - + autogenerate development header-dependencies (config.h, *.priv.h) - + corrected single-column formatting of "use=" (e.g., in tic) - + modify tic to read full terminfo-names - + corrected divide-by-zero that caused hang (or worse) when redirecting - output - + modify tic to generate directories only as-needed (and corrected - instance of use of data from function that had already returned). - -### ncurses-1.9.8a -> 1.9.9e - -* fixed broken wsyncup()/wysncdown(), as a result wnoutrefresh() now has - copy-changed-lines behavior. -* added and documented wresize() function. -* more fixes to LOWER-RIGHT corner handling. -* changed the line-breakout optimization code to allow some lines to be - emitted before the first check. -* added option for tic to use symbolic instead of hard links (for AFS) -* fix to restore auto-wrap mode. -* trace level can be controlled by environment variable. -* better handling of NULs in terminal descriptions. -* improved compatibility with observed SVR4 behavior. -* the refresh behavior of over-lapping windows is now more efficient and - behaves like SVR4. -* use autoconf 2.7, which results in a working setup for SCO 5.0. -* support for ESCDELAY. -* small fixes for menu/form code. -* the test directory has its own configure. -* fixes to pads when optimizing scrolling. -* fixed several off-by-one bugs. -* fixes for termcap->terminfo translation; less restrictions more correct - behavior. - -### ncurses-1.9.7 -> 1.9.8a - -* teach infocmp -i to recognize ECMA highlight sequences -* infocmp now dumps all SVr4 termcaps (not just the SVr4 ones) on -C -* support infocmp -RBSD. -* satisfy XSI Curses requirement that every macro be available as a function. -* This represents the last big change to the public interface of ncurses. The - ABI_VERSION has now been set at 3.0 and should stay there barring any great - catastrophies or acts of God. -* The C++ has been cleaned up in reaction to the changes to satisfy XSI's - requirements. -* libncurses now gets linked to libcurses to help seamless emulation - (replacement) of a vendor's curses. --disable-overwrite turns this behavior - off. - -### ncurses-1.9.6 -> 1.9.7 - -* corrected return values of setupterm() -* Fixed some bugs in tput (it does padding now) -* fixed a bug in tic that made it do the wrong thing on entries with more than - one `use' capability. -* corrected the screen-size calculation at startup time to alter the - numeric capabilities as per SVr4, not just LINES and COLS. -* toe(1) introduced; does what infocmp -T used to. -* tic(1) can now translate AIX box1 and font[0123] capabilities. -* tic uses much less core, the dotic.sh kluge can go away now. -* fix read_entry() and write_entry() to pass through cancelled capabilities OK. -* Add $HOME/.terminfo as source/target directory for terminfo entries. -* termcap compilation now automatically dumps an entry to $HOME/.terminfo. -* added -h option to toe(1). -* added -R option to tic(1) and infocmp(1). -* added fallback-entry-list feature. -* added -i option to infocmp(1). -* do a better job at detecting if we're on SCO. - -### ncurses-1.9.5 -> 1.9.6 - -* handling of TERMCAP environment variables now works correctly. -* various changes to shorten termcap translations to less that 1024 chars. -* tset(1) added -* mouse support for xterm. -* most data tables are now const and accordingly live in shareable text space. -* Obey the XPG4/SVr4 practice that echo() is initally off. -* tic is much better at translating XENIX and AIX termcap entries now. -* tic can interpret ko capabilities now. -* integrated Juergen Pfeifer's forms library. -* taught write_entry() how not to write more than it needs to; this change - reduces the size of the terminfo tree by a full 26%! -* infocmp -T option added. -* better warnings about historical tic quirks from tic. - -### ncurses 1.9.4 -> 1.9.5 - -* menus library is now included with documentation. -* lib_mvcur has been carefully profiled and tuned. -* Fixed a ^Z-handling bug that was tanking lynx(1). -* HJ Lu's patches for ELF shared libraries under Linux -* terminfo.src 9.8.2 -* tweaks for compiling in seperate directories. -* Thomas Dickey's patches to support NeXT's brain-dead linker -* Eric Raymond's patches to fix problems with long termcap entries. -* more support for shared libraries under SunOS and IRIX. - -### ncurses 1.9.3 -> 1.9.4 - -* fixed an undefined-order-of-evaluation bug in lib_acs.c -* systematically gave non-API public functions and data an _nc_ prefix. -* integrated Juergen Pfeifer's menu code into the distribution. -* totally rewrote the knight test game's interface - -### ncurses 1.9.2c -> 1.9.3 - -* fixed the TERMCAP_FILE Support. -* fixed off-by-one errors in scrolling code -* added tracemunch to the test tools -* took steps to cut the running time of make install.data - -### ncurses 1.9.2c -> 1.9.2d - -* revised 'configure' script to produce libraries for normal, debug, - profile and shared object models. - -### ncurses 1.9.1 -> 1.9.2 - -* use 'autoconf' to implement 'configure' script. -* panels support added -* tic now checks for excessively long termcap entries when doing translation -* first cut at eliminating namespace pollution. - -### ncurses 1.8.9 -> 1.9 - -* cleanup gcc warnings for the following: use size_t where 'int' is not - appropriate, fixed some shadowed variables, change attr_t to compatible with - chtype, use attr_t in some places where it was confused with 'int'. -* use chtype/attr_t casts as appropriate to ensure portability of masking - operations. -* added-back waddchnstr() to lib_addstr.c (it had been deleted). -* supplied missing prototypes in curses.h -* include in lib_termcap.c to ensure that the prototypes - are consistent (they weren't). -* corrected prototype of tputs in -* rewrote varargs parsing in lib_tparm.c (to avoid referencing memory - that may be out of bounds on the stack) -- Purify found this. -* ensure that TRACE is defined in lib_trace.c (to solve prototype - warnings from gcc). -* corrected scrolling-region size in 'mvcur_wrap()' -* more spelling fixes -* use 'calloc()' to allocate WINDOW struct in lib_newwin.c (Purify). -* set default value for SP->_ofp in lib_set_term.c (otherwise SunOS dumps - core in init_acs()). -* include in write_entry.c (most "braindead" includes declare errno - in that file). - -### ncurses 1.8.8 -> 1.8.9 - -* compile (mostly) clean with gcc 2.5.8 -Wall -Wstrict-prototypes - -Wmissing-prototypes -Wconversion and using __attribute__ to flush out - non-portable use of "%x" for pointers, or for chtype data (which is declared - as a long). -* modified doupdate to ensure that typahead was turned on before attempting - select-call (otherwise, some implementations hang). -* added trace mask TRACE_FIFO, use this in lib_getch.c to allow finer - resolution of traces. -* improved bounds checking on several critical functions. -* the data directory has been replaced by the new master terminfo file. -* -F file-comparison option added to infocmp. -* compatibility with XSI Curses is now documented in the man bages. -* wsyncup/wsyncdown functions are reliable now; subwindow code in general - is much less flaky. -* capabilities ~msgr, tilde_glitch, insert_padding, generic_type, no_pad_char, - memory_above, memory_below, and hard_copy are now used properly. -* cursor-movement optimization has been completely rewritten. -* vertical-movement optimization now uses hardware scrolling, il, dl. - -### ncurses 1.8.7 -> 1.8.8 -* untic no longer exists, infocmp replaces it. -* tic can understand termcap now, especially if it is called captoinfo. -* The Linux Standard Console terminfo entry is called linux insead of console. - It also uses the kernel's new method of changing charsets. -* initscr() will EXIT upon error (as the docs say) This wil mostly happen if - you try to run on an undefined terminal. -* I can get things running on AIX but tic can't compile terminfo. I have to - compile entries on another machine. Volunteers to hunt this bug are welcome. -* wbkgd() and wbkgdset() can be used to set a windows background to color. - wclear()/werase() DO NOT use the current attribute to clear the screen. - This is the way SVR4 curses works. PDCurses 2.1 is broken in this respect, - though PDCurses 2.2 has been fixed. -* cleaned up the test/ directory. -* test/worm will segfault after quite a while. -* many spelling corrections courtesy of Thomas E. Dickey - -### ncurses 1.8.6 -> 1.8.7 -* cleaned up programs in test/ directory. -* fixed wbkgdset() macro. -* modified getstr() to stop it from advancing cursor in noecho mode. -* modified linux terminfo entry to work with the latest kernel to get - the correct alternate character set. -* also added a linux-mono entry for those running on monochrome screens. -* changed initscr() so that it behaves like the man page says it does. - this fixes the problem with programs in test/ crashing with SIGSEV if - a terminal is undefined. -* modified addch() to avoid using any term.h #define's -* removed duplicate tgoto() in lib_tparm.c -* modified dump_entry.c so that infocmp deals correctly with ',' in acsc -* modified delwin() to correctly handle deleting subwindows. -* fixed Makefile.dist to stop installing an empty curses.h -* fixed a couple of out-of-date notes in man pages. - -### ncurses 1.8.5 -> 1.8.6 -* Implemented wbkgd(), bkgd(), bkgdset(), and wbkgdset(). -* The handling of attributes has been improved and now does not turn off color - if other attributes are turned off. -* scrolling code is improved. Scrolling in subwindows is still broken. -* Fixes to several bugs that manifest them on platforms other than Linux. -* The default to meta now depends on the status of the terminal when ncurses - is started. -* The interface to the tracing facility has changed. Instead of the pair of - functions traceon() and traceoff(), there is just one function trace() which - takes a trace mask argument. The trace masks, defined in curses.h, are - as follows: - - #define TRACE_DISABLE 0x00 /* turn off tracing */ - #define TRACE_ORDINARY 0x01 /* ordinary trace mode */ - #define TRACE_CHARPUT 0x02 /* also trace all character outputs */ - #define TRACE_MAXIMUM 0x0f /* maximum trace level */ - - More trace masks may be added, or these may be changed, in future releases. -* The pad code has been improved and the pad test code in test/ncurses.c has - been improved. -* The prototype ansi entry has been changed to work with a wider variety - of emulators. -* Fix to the prototype ansi entry that enables it to work with PC emulators - that treat trailing ";m" in a highlight sequence as ";0m"; this doesn't - break operation with any emulators. -* There are now working infocmp, captoinfo, tput, and tclear utilities. -* tic can now compile entries in termcap syntax. -* Core-dump bug in pnoutrefresh fixed. -* We now recognize and compile all the nonstandard capabilities in Ross - Ridge's mytinfo package (rendering it obsolete). -* General cleanup and documentation improvements. -* Fixes and additions to the installation-documentation files. -* Take cursor to normal mode on endwin. - -### ncurses 1.8.4 -> 1.8.5 -* serious bugs in updating screen which caused erratic non-display, - fixed. -* fixed initialization for getch() related variable which cause - unpredictable results. -* fixed another doupdate bug which only appeared if you have - parm_char. -* implemented redrawln() and redrawwin(). -* implemented winsnstr() and related functions. -* cleaned up insertln() and deleteln() and implemented (w)insdeln(). -* changed Makefile.dist so that installation of man pages will - take note of the terminfo directory. -* fixed Configure (removed the mysterious 'X'). -* Eric S. Raymond fixed the script.* files so that they work with - stock awk. - -#### ncurses 1.8.3 -> 1.8.4 #### #### -* fixed bug in refreshing the screen after return from shell_mode. - There are still problems but they don't manifest themselves on - my machine (Linux 0.99.14f). -* added wgetnstr() and modified things accordingly. -* fixed the script.src script.test to work with awk not just gawk. -* Configure can now take an argument of the target system. -* added test/ncurses.c which replaces several other programs and - performs more testing. -[Thanks to Eric S Raymond for the last 4] -* more fixes to lib_overlay.c and added test/over.c to illustrate - how it works. -* fixed ungetch() to take int instead of ch. -* fixes to cure wgetch() if flushinp() is called. - -One note I forgot to mention in 1.8.3 is that tracing is off by -default starting in the version. If you want tracing output, put -traceon(); in your code and link with -ldcurses. - -#### ncurses 1.8.2 -> ncurses 1.8.3 #### #### -MAJOR CHANGES: -1) The order of capabilities has been changed in order to achieve -binary compatibility with SVR4 terminfo database. This has the -unfortunate effect of breaking application currently linked with -ncurses. To ensure correct behavior, recompile all such programs. -Most programs using color or newer capabilities will break, others -will probably continue to work ok. - -2) Pavel Curtis has renounced his copyright to the public domain. -This means that his original sources (posted to comp.sources.unix, -volume 1) are now in the public domain. The current sources are -NOT in the public domain, they are copyrighted by me. I'm -entertaining ideas on what the new terms ncurses is released under. - -3) Eric S. Raymond has supplied a complete set of man pages for -ncurses in ?roff format. They will eventually replace most of the -current docs. Both sets are included in this release. - -Other changes and notes from 1.8.2 include: -* SIGSEGV during scrolling no longer occurs. -* Other problems with scrolling and use of idl have been corrected. -* lib_getch.c has been re-written and should perform flawlessly. - please use test/getch.c and any other programs to test this. -* ripoffline() is implemented (Thanks to Eric) and slk_ functions - changed accordingly. -* I've added support for terminals that scroll if you write in the - bottom-right corner. -* fixed more bugs in pads code. If anybody has a program that uses - pads I'd love a copy. -* correct handling for terminal with back_color_erase capability - (such as Linux console, and most PC terminals) -* ^Z handling apparently didn't work (I should never trust code - sent me to me without extensive testing). It now seems to be - fixed. Let me know if you have problems. -* I've added support for Apollo and NeXT, but it may still be - incomplete, especially when dealing with the lack of POSIX - features. -* scrolling should be more efficient on terminals with idl - capabilities. Please see src/lib_scroll.c for more notes. -* The line drawing routines were offset by 1 at both ends. This - is now fixed. -* added a few missing prototypes and macros (e.g. setterm()) -* fixed code in src/lib_overlay.c which used to crash. -* added a few more programs in test/ The ones from the PDCurses - package are useful, especially if you have SVR4 proper. I'm - interested in the results you get on such a systems (Eric? ;-). - They already exposed certain bugs in ncurses. -* See src/README for porting notes. -* The C++ code should really replace ncurses.h instead of working - around it. It should avoid name-space clashes with nterm.h (use - rows instead of lines, etc.) -* The C++ should compile ok. I've added explicit rules to the - Makefile because no C++ defaults are documented on the suns. -* The docs say that echo() and nocbreak() are mutually exclusive. - At the moment ncurses will switch to cbreak() if the case above - occurs. Should it continue to do so? How about echo() and noraw()? -* PDCurses seem to assume that wclear() will use current attribute - when clearing the screen. According to Eric this is not the case - with SVR4. -* I have discovered, to my chagrin, SunOS 4.x (and probably other systems) - * doesn't have vsscanf and God knows what else! I've will do a vsscanf(). -* I've also found out that the src/script.* rely on gawk and will not - work with stock awk or even with nawk. Any changes are welcome. -* Linux is more tolerant of NULL dereferences than most systems. This - fact was exposed by hanoi. -* ncurses still seems inefficient in drawing the screen on a serial - link between Linux and suns. The padding may be the culprit. -* There seems to be one lingering problem with doupdate() after shelling - out. Despite the fact the it is sending out the correct information - to the terminal, nothing takes effect until you press ^L or another - refresh takes place. And yes, output does get flushed. - -#### ncurses 1.8.1 -> ncurses 1.8.2 #### Nov 28, 1993 #### - -* added support for SVR4 and BSDI's BSD/386. -* major update and fix to scrolling routine. -* MORE fixes to stuff in lib_getch.c. -* cleaned-up configuration options and can now generate - Config.* files through an awk script. -* changed setupterm() so it can be called more than once, - add added set_curterm(), del_curterm(). -* a few minor cleanups. -* added more prototypes in curses.h - -#### ncurses 1.8 -> ncurses 1.8.1 #### Nov 4, 1993 #### - -* added support for NeXTStep 3.0 -* added termcap emulation (not well tested). -* more complete C++ interface to ncurses. -* fixed overlay(), overwrite(), and added copywin(). -* a couple of bug fixes. -* a few code cleanups. - -#### ncurses 0.7.2/0.7.3 -> ncurses 1.8 #### Aug 31, 1993 #### - -* The annoying message "can't open file." was due to missing - terminfo entry for the used terminal. It has now been - replaced by a hopefully more helpful message. -* Problems with running on serial lines are now fixed. -* Added configuration files for SunOS, Linux, HP/UX, Ultrix, - 386bsd/BSDI (if you have others send'em to me) -* Cleaner Makefile. -* The documentation in manual.doc is now more uptodate. -* update optimization and support for hp terminals, and 386bsd - console driver(s). -* mvcur optimization for terminals without cursor addressing - (doesn't work on Linux) -* if cursor moved since last update, getch() will refresh the - screen before working. -* getch() & alarm() can now live together. in 0.7.3 a signal - interrupted getch() (bug or feature?) now the getch is - restarted. -* scanw() et all were sick, now fixed. -* support for 8-bit input (use meta()). -* added default screen size to all terminfos. -* added c++ Ncursesw class. -* several minor bug fixes. - -#### ncurses 0.7.2 -> ncurses 0.7.3 #### May 27, 1993 #### - -* Config file to cope with different platforms (386BSD, BSDI, Ultrix, SunOS) -* more fixes to lib_getch.c -* changes related to Config - -#### ncurses 0.7 -> ncurses 0.7.2 #### May 22, 1993 #### - -* docs updated slightly (color usage is now documented). -* yet another fix for getch(), this one fixes problems with ESC being swallowed - if another character is typed before the 1 second timeout. -* Hopefully, addstr() and addch() are 8-bit clean. -* fixed lib_tparm.c to use stdarg.h (should run on suns now) -* order of capabilities changed to reflect that specified in SYSV - this will allow for binary-compatibility with existing terminfo dbs. -* added halfdelay() -* fixed problems with asc_init() -* added A_PROTECT and A_INVIS -* cleaned up vidputs() -* general cleanup of the code -* more attention to portability to other systems -* added terminfos for hp70092 (wont work until changes to lib_update.c are - made) and 386BSD pcvt drivers. - -Thanks to Hellmuth Michaelis for his help. -optimization code is slated for the next major release, stay tuned! - -#### ncurses 0.6/0.61 -> ncurses 0.7 #### April 1, 1993 -Please note that the next release will be called 1.8. If you want to know about -the rationale drop me a line. - -Included are several test programs in test/. -I've split up the panels library, reversi, tetris, sokoban. They are now -available separately from netcom.com:pub/zmbenhal/ - -* color and ACS support is now fully compatible with SYSV at the terminfo - level. -* Capabilities now includes as many SYSV caps I could find. -* tigetflag,tigetnum,tigetstr functions added. -* boolnames, boolfnames, boolcodes numnames, numfnames, numcodes, - strnames, strfnames, strcodes arrays are now added. -* keyname() is added. -* All function keys can be defined in terminfo entries. -* fixed lin_tparm.c to behave properly. -* terminfo entries for vt* and xterm are included (improvements are welcome) -* more automation in handling caps and keys. -* included fixes from 0.6.1 -* added a few more missing functions. -* fixed a couple of minor bugs. -* updated docs JUST a little (still miles behind in documenting the newer - features). - -#### ncurses 0.6 -> ncurses 0.61 #### - -1) Included the missing data/console. - -2) allow attributes when drawing boxes. - -3) corrected usage of win->_delay value. - -4) fixed a bug in lib_getch.c. if it didn't recognize a sequence it would - simply return the last character in the sequence. The correct - behavior is to return the entire sequence one character at a time. - -#### ncurses0.5 -> ncurses0.6 #### March 1, 1993 #### -* removed _numchngd from struct _win_st and made appropriate changes. -* rewritten kgetch() to remove problems with interaction between alarm and - read(). It caused SIGSEGV every now and then. -* fixed a bug that miscounted the numbers of columns when updating. - (in lib_doupdate.c(ClrUpdate() -- iterate to columns not columns-1) -* fixed a bug that cause the lower-right corner to be incorrect. - (in lib_doupdate.c(putChar() -- check against columns not columns-1) -* made resize() and cleanup() static to lib_newterm.c -* added notimeout(). -* added timeout() define in curses.h -* added more function prototypes and fixed napms. -* added use_env(). -* moved screen size detection to lib_setup.c. -* fixed newterm() to confirm to prototype. -* removed SIGWINCH support as SYSV does not define its semantics. -* cleaned-up lib_touch.c -* added waddnstr() and relatives. -* added slk_* support. -* fixed a bug in wdeleteln(). -* added PANEL library. -* modified Makefile for smoother installation. -* terminfo.h is really term.h - -#### ncurses 0.4 -> ncurses 0.5 #### Feb 14, 1993 #### -* changed _win_st structure to allow support for missing functionality. -* Addition of terminfo support for all KEY_*. -* Support for nodelay(), timeout(), notimeout(). -* fixed a bug with the keypad char reading that did not return ESC until - another key is pressed. -* nl mapping no longer occur on output (as should be) - fixed bug '\n' no causing a LF. -* fixed bug that reset terminal colors regardless of whether we use color - or not. -* Better support for ACS (not quite complete). -* fixed bug in wvline(). -* added curs_set(). -* changed from signal() to sigaction(). -* re-included the contents of important.patch into source. - -#### ncurses 0.3 -> ncurses 0.4 #### Feb 3, 1993 #### -* Addition of more KEY_* definitions. -* Addition of function prototypes. -* Addition of several missing functions. -* No more crashes if screen size is undefined (use SIGWINCH handler). -* added a handler to cleanup after SIGSEGV (hopefully never needed). -* changed SRCDIR from /etc/term to /usr/lib/terminfo. -* renamed compile/dump to tic/untic. -* New scrolling code. -* fixed bug that reversed the sense of nl() and nonl(). - -#### ncurses 0.2 -> ncurses 0.3 #### Jan 20, 1993 #### -* more support for color and graphics see test/ for examples. -* fixed various files to allow correct update after shelling out. -* more fixes for updates. -* no more core dumps if you don't have a terminfo entry. -* support for LINES and COLUMNS environment variables. -* support for SIGWINCH signal. -* added a handler for SIGINT for clean exits. - -#### ncurses 0.1 -> ncurses 0.2 #### Aug 14, 1992 #### -* support for color. -* support for PC graphic characters. -* lib_trace.c updated to use stdarg.h and vprintf routines. -* added gdc.c (Great Digital Clock) as an example of using color. - -#### ncurses -> ncurses 0.1 #### Jul 31, 1992 #### -* replacing sgtty stuff by termios stuff. -* ANSIfication of some functions. -* Disabling cost analysis 'cause it's incorrect. -* A quick hack for a terminfo entry. - --- vile:txtmode: diff --git a/deps/ncurses-5.9/README b/deps/ncurses-5.9/README deleted file mode 100644 index 56bc385..0000000 --- a/deps/ncurses-5.9/README +++ /dev/null @@ -1,210 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2004,2006 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. -- -------------------------------------------------------------------------------- --- $Id: README,v 1.23 2006/04/22 22:19:37 tom Exp $ -------------------------------------------------------------------------------- - README file for the ncurses package - -See the file ANNOUNCE for a summary of ncurses features and ports. -See the file INSTALL for instructions on how to build and install ncurses. -See the file NEWS for a release history and bug-fix notes. -See the file TO-DO for things that still need doing, including known bugs. - -Browse the file misc/ncurses-intro.html for narrative descriptions of how -to use ncurses and the panel, menu, and form libraries. - -Browse the file doc/html/hackguide.html for a tour of the package internals. - -ROADMAP AND PACKAGE OVERVIEW: - -You should be reading this file in a directory called: ncurses-d.d, where d.d -is the current version number (see the dist.mk file in this directory for -that). There should be a number of subdirectories, including `c++', `form', -`man', `menu', `misc', `ncurses', `panel', `progs', `test', 'tack' and `Ada95'. -(The 'tack' program may be distributed separately). - -A full build/install of this package typically installs several libraries, a -handful of utilities, and a database hierarchy. Here is an inventory of the -pieces: - -The libraries are: - - libncurses.a (normal) - libncurses.so (shared) - libncurses_g.a (debug and trace code enabled) - libncurses_p.a (profiling enabled) - - libpanel.a (normal) - libpanel.so (shared) - libpanel_g.a (debug and trace code enabled) - - libmenu.a (normal) - libmenu.so (shared) - libmenu_g.a (debug enabled) - - libform.a (normal) - libform.so (shared) - libform_g.a (debug enabled) - -If you configure using the --enable-widec option, a "w" is appended to the -library names (e.g., libncursesw.a), and the resulting libraries support -wide-characters, e.g., via a UTF-8 locale. The corresponding header files -are compatible with the non-wide-character configuration; wide-character -features are provided by ifdef's in the header files. The wide-character -library interfaces are not binary-compatible with the non-wide-character -version. - -The ncurses libraries implement the curses API. The panel, menu and forms -libraries implement clones of the SVr4 panel, menu and forms APIs. The source -code for these lives in the `ncurses', `panel', `menu', and `form' directories -respectively. - -In the `c++' directory, you'll find code that defines an interface to the -curses, forms, menus and panels library packaged as C++ classes, and a demo program in C++ -to test it. These class definition modules are not installed by the 'make -install.libs' rule as libncurses++. - -In the `Ada95' directory, you'll find code and documentation for an -Ada95 binding of the curses API, to be used with the GNAT compiler. -This binding is built by a normal top-level `make' if configure detects -an usable version of GNAT (3.11 or above). It is not installed automatically. -See the Ada95 directory for more build and installation instructions and -for documentation of the binding. - -To do its job, the ncurses code needs your terminal type to be set in the -environment variable TERM (normally set by your OS; under UNIX, getty(1) -typically does this, but you can override it in your .profile); and, it needs a -database of terminal descriptions in which to look up your terminal type's -capabilities. - -In older (V7/BSD) versions of curses, the database was a flat text file, -/etc/termcap; in newer (USG/USL) versions, the database is a hierarchy of -fast-loading binary description blocks under /usr/lib/terminfo. These binary -blocks are compiled from an improved editable text representation called -`terminfo' format (documented in man/terminfo.5). The ncurses library can use -either /etc/termcap or the compiled binary terminfo blocks, but prefers the -second form. - -In the `misc' directory, there is a text file terminfo.src, in editable -terminfo format, which can be used to generate the terminfo binaries (that's -what make install.data does). If the package was built with the ---enable-termcap option enabled, and the ncurses library cannot find a terminfo -description for your terminal, it will fall back to the termcap file supplied -with your system (which the ncurses package installation leaves strictly -alone). - -The utilities are as follows: - - tic -- terminfo source to binary compiler - infocmp -- terminfo binary to source decompiler/comparator - clear -- emits clear-screen for current terminal - tput -- shell-script access to terminal capabilities. - toe -- table of entries utility - tset -- terminal-initialization utility - -The first two (tic and infocmp) are used for manipulating terminfo -descriptions; the next two (clear and tput) are for use in shell scripts. The -last (tset) is provided for 4.4BSD compatibility. The source code for all of -these lives in the `progs' directory. - -Detailed documentation for all libraries and utilities can be found in the -`man' and `doc' directories. An HTML introduction to ncurses, panels, and -menus programming lives in the `doc/html' directory. Manpages in HTML format -are under `doc/html/man'. - -The `test' directory contains programs that can be used to verify or -demonstrate the functions of the ncurses libraries. See test/README for -descriptions of these programs. Notably, the `ncurses' utility is designed to -help you systematically exercise the library functions. - -AUTHORS: - -Pavel Curtis: - wrote the original ncurses - -Zeyd M. Ben-Halim: - port of original to Linux and many enhancements. - -Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0): - configuration scripts, porting, mods to adhere to XSI Curses in the - areas of background color, terminal modes. Also memory leak testing, - the wresize, default colors and key definition extensions and numerous - bug fixes (more than half of those enumerated in NEWS beginning with - the internal release 1.8.9). - -Florian La Roche (official maintainer for FSF's ncurses 4.2) - Beginning with release 4.2, ncurses is distributed under an MIT-style - license. - -Eric S. Raymond: - the man pages, infocmp(1), tput(1), clear(1), captoinfo(1), tset(1), - toe(1), most of tic(1), trace levels, the HTML intro, wgetnstr() and - many other entry points, the cursor-movement optimization, the - scroll-pack optimizer for vertical motions, the mouse interface and - xterm mouse support, and the ncurses test program. - -Juergen Pfeifer - The menu and form libraries, C++ bindings for ncurses, menus, forms and - panels, as well as the Ada95 binding. Ongoing support for panel. - -CONTRIBUTORS: - -Alexander V. Lukyanov - for numerous fixes and improvements to the optimization logic. - -David MacKenzie - for first-class bug-chasing and methodical testing. - -Ross Ridge - for the code that hacks termcap parameterized strings into terminfo. - -Warren Tucker and Gerhard Fuernkranz, - for writing and sending the panel library. - -Hellmuth Michaelis, - for many patches and testing the optimization code. - -Eric Newton, Ulrich Drepper, and Anatoly Ivasyuk: - the C++ code. - -Jonathan Ross, - for lessons in using sed. - -Keith Bostic (maintainer of 4.4BSD curses) - for help, criticism, comments, bug-finding, and being willing to - deep-six BSD curses for this one when it grew up. - -Richard Stallman, - for his commitment to making ncurses free software. - -Countless other people have contributed by reporting bugs, sending fixes, -suggesting improvements, and generally whining about ncurses :-) - -BUGS: - See the INSTALL file for bug and developer-list addresses. - The Hacker's Guide in the doc directory includes some guidelines - on how to report bugs in ways that will get them fixed most quickly. diff --git a/deps/ncurses-5.9/README.MinGW b/deps/ncurses-5.9/README.MinGW deleted file mode 100644 index d111b38..0000000 --- a/deps/ncurses-5.9/README.MinGW +++ /dev/null @@ -1,149 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 2008-2010,2011 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. -- -------------------------------------------------------------------------------- --- $Id: README.MinGW,v 1.5 2011/02/26 16:57:17 tom Exp $ --- Author: Juergen Pfeifer -------------------------------------------------------------------------------- - -This is work in progress, but it's in an state where one can see it -works at least on the Windows Console. - -You should install the MSYS package, so that you've a shell environment that -allows you to run the scripts, especially configure etc. You can get that -from http://www.mingw.org - -To build ncurses for native Windows, you need the MinGW toolchain. The -original MinGW toolchain from the above site is only for 32-Bit Windows. As -Windows Server - and also regular workstations - are moving to 64-Bit, it -seems to be reasonable to have a toolchain that supports both architectures. -I recommend to use the TDM gcc toolchain which you can find at -http://tdm-gcc.tdragon.net/download. Go to the download section and select -the bundle installer for tdm64 (MinGW-w64). This installs a multilib version -of the gcc toolchain that can compile for native 32- and 64-Bit Windows -versions. It also comes with a working pthread implementation. - -The latest config and build scripts we use for MinGW have only been tested -for the gcc-4.4 compiler toolchain (or better). - -Using MinGW is a pragmatic decision, it's the easiest way to port this -heavily UNIX based sourcebase to native Windows. The goal is of course -to provide the includes, libraries and DLLs to be used with the more -common traditional development environments on Windows, mainly with -Microsoft Visual Studio. - -If you start a bash from the MSYS environment, please make sure that the -Microsoft Development tools are in your PATH right after the MinGW -tools. The LIB.EXE tool is the only one needed. You need this only if -you want to build DLLs that work with native Windows programs. If you -don't have any Microsoft Development tools on your machine, consider -at least to get the free "Visual C++ 2010 Express Edition". -It contains the LIB.EXE tool. You may also use this compiler to test -writing native Windows programs using the ncurses DLLs without using -MinGW then for writing apps. - -It is necessary to unset the TERM environment variable, to activate the -Windows console-driver. - -Please also make sure that MSYS links to the correct directory containing -your MinGW toolchain. For TDM this is usually C:\MinGW64. In your Windows -CMD.EXE command shell go to the MSYS root directory (most probably -C:\MSYS or C:\MSYS\1.0) and verify, that there is a junction point mingw -that points to the MinGW toolchain directory. If not, delete the mingw -directory and use the mklink command (or the linkd.exe utility on older -Windows) to create the junction point. - -This code requires WindowsNT 5.1 or better, which means on the client -Windows XP or better, on the server Windows Server 2003 or better. - -In order to build ncurses for the planned interop layer with .NET, we -recommend to use these options with configure - - --disable-home-terminfo - --enable-reentrant - --enable-sp-funcs - --enable-term-driver - --enable-interop - --with-pthread (if using TDM toolchain as recommended) - -This is the configuration commandline as I'm using it at the moment: - -./configure \ - --prefix=/mingw \ - --without-cxx-binding \ - --without-ada \ - --enable-warnings \ - --enable-assertions \ - --enable-reentrant \ - --with-debug \ - --with-normal \ - --disable-home-terminfo \ - --enable-sp-funcs \ - --enable-term-driver \ - --enable-interop \ - --with-pthread - -If you are on a 64-Bit Windows system and want to build a 32-Bit version -of ncurses, you may use this commandline for configuration (when using -the TDM toolchain): - -CC="gcc -m32" LD="ld -m32" ./configure \ - --prefix=/mingw \ - --without-cxx-binding \ - --without-ada \ - --enable-warnings \ - --enable-assertions \ - --enable-reentrant \ - --with-debug \ - --with-normal \ - --disable-home-terminfo \ - --enable-sp-funcs \ - --enable-term-driver \ - --enable-interop \ - --with-pthread - -All the options above are - like the whole Windows support - -experimental. - -In order to build the DLLs, after your regular make you must call - - make dlls - -A lot is still TODO, e.g.: - - - Wide Character support - The Win32Con driver should actually only use Unicode in the - future. - - Thread support (locking). If using TDM toolchain this is done by - configuring pthreads. - - A GUI console driver - - Support for Terminals attached via a serial port (via terminfo) - - Support for networked Terminal connections (via terminfo) - - Workarounds for MinGW's filesystem access are necessary to make infocmp - work (though tic works). - -To support terminfo, we need to have an ioctl() simulation for the -serial and networked Terminals. diff --git a/deps/ncurses-5.9/aclocal.m4 b/deps/ncurses-5.9/aclocal.m4 deleted file mode 100644 index 9a82855..0000000 --- a/deps/ncurses-5.9/aclocal.m4 +++ /dev/null @@ -1,6592 +0,0 @@ -dnl*************************************************************************** -dnl Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * -dnl * -dnl Permission is hereby granted, free of charge, to any person obtaining a * -dnl copy of this software and associated documentation files (the * -dnl "Software"), to deal in the Software without restriction, including * -dnl without limitation the rights to use, copy, modify, merge, publish, * -dnl distribute, distribute with modifications, sublicense, and/or sell * -dnl copies of the Software, and to permit persons to whom the Software is * -dnl furnished to do so, subject to the following conditions: * -dnl * -dnl The above copyright notice and this permission notice shall be included * -dnl in all copies or substantial portions of the Software. * -dnl * -dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * -dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * -dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * -dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * -dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * -dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * -dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * -dnl * -dnl Except as contained in this notice, the name(s) of the above copyright * -dnl holders shall not be used in advertising or otherwise to promote the * -dnl sale, use or other dealings in this Software without prior written * -dnl authorization. * -dnl*************************************************************************** -dnl -dnl Author: Thomas E. Dickey 1995-on -dnl -dnl $Id: aclocal.m4,v 1.553 2011/03/31 23:35:38 tom Exp $ -dnl Macros used in NCURSES auto-configuration script. -dnl -dnl These macros are maintained separately from NCURSES. The copyright on -dnl this file applies to the aggregation of macros and does not affect use of -dnl these macros in other applications. -dnl -dnl See http://invisible-island.net/autoconf/ for additional information. -dnl -dnl --------------------------------------------------------------------------- -dnl --------------------------------------------------------------------------- -dnl AM_LANGINFO_CODESET version: 3 updated: 2002/10/27 23:21:42 -dnl ------------------- -dnl Inserted as requested by gettext 0.10.40 -dnl File from /usr/share/aclocal -dnl codeset.m4 -dnl ==================== -dnl serial AM1 -dnl -dnl From Bruno Haible. -AC_DEFUN([AM_LANGINFO_CODESET], -[ - AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, - [AC_TRY_LINK([#include ], - [char* cs = nl_langinfo(CODESET);], - am_cv_langinfo_codeset=yes, - am_cv_langinfo_codeset=no) - ]) - if test $am_cv_langinfo_codeset = yes; then - AC_DEFINE(HAVE_LANGINFO_CODESET, 1, - [Define if you have and nl_langinfo(CODESET).]) - fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADA_INCLUDE_DIRS version: 6 updated: 2010/02/26 19:52:07 -dnl ------------------- -dnl Construct the list of include-options for the C programs in the Ada95 -dnl binding. -AC_DEFUN([CF_ADA_INCLUDE_DIRS], -[ -ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" -if test "$srcdir" != "."; then - ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" -fi -if test "$GCC" != yes; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi - else - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi -fi -AC_SUBST(ACPPFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18 -dnl --------------- -dnl Add to $ADAFLAGS, which is substituted into makefile and scripts. -AC_DEFUN([CF_ADD_ADAFLAGS],[ - ADAFLAGS="$ADAFLAGS $1" - AC_SUBST(ADAFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42 -dnl ------------- -dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS -dnl The second parameter if given makes this macro verbose. -dnl -dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, -dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily -dnl confused by the quotes (which require backslashes to keep them usable). -AC_DEFUN([CF_ADD_CFLAGS], -[ -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $1 -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -D*) - cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` - CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) - ;; - esac - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -AC_SUBST(EXTRA_CPPFLAGS) - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_INCDIR version: 13 updated: 2010/05/26 16:44:57 -dnl ------------- -dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's -dnl redundant. We don't normally need to add -I/usr/local/include for gcc, -dnl but old versions (and some misinstalled ones) need that. To make things -dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to -dnl the include-path). -AC_DEFUN([CF_ADD_INCDIR], -[ -if test -n "$1" ; then - for cf_add_incdir in $1 - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - AC_TRY_COMPILE([#include ], - [printf("Hello")], - [], - [cf_have_incdir=yes]) - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - CF_VERBOSE(adding $cf_add_incdir to include-path) - ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 -dnl ---------- -dnl Add a library, used to enforce consistency. -dnl -dnl $1 = library to add, without the "-l" -dnl $2 = variable to update (default $LIBS) -AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIBDIR version: 9 updated: 2010/05/26 16:44:57 -dnl ------------- -dnl Adds to the library-path -dnl -dnl Some machines have trouble with multiple -L options. -dnl -dnl $1 is the (list of) directory(s) to add -dnl $2 is the optional name of the variable to update (default LDFLAGS) -dnl -AC_DEFUN([CF_ADD_LIBDIR], -[ -if test -n "$1" ; then - for cf_add_libdir in $1 - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - CF_VERBOSE(adding $cf_add_libdir to library-path) - ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])" - fi - fi - done -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIBS version: 1 updated: 2010/06/02 05:03:05 -dnl ----------- -dnl Add one or more libraries, used to enforce consistency. -dnl -dnl $1 = libraries to add, with the "-l", etc. -dnl $2 = variable to update (default $LIBS) -AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_SUBDIR_PATH version: 3 updated: 2010/07/03 20:58:12 -dnl ------------------ -dnl Append to a search-list for a nonstandard header/lib-file -dnl $1 = the variable to return as result -dnl $2 = the package name -dnl $3 = the subdirectory, e.g., bin, include or lib -dnl $4 = the directory under which we will test for subdirectories -dnl $5 = a directory that we do not want $4 to match -AC_DEFUN([CF_ADD_SUBDIR_PATH], -[ -test "$4" != "$5" && \ -test -d "$4" && \ -ifelse([$5],NONE,,[(test $5 = NONE || test "$4" != "$5") &&]) { - test -n "$verbose" && echo " ... testing for $3-directories under $4" - test -d $4/$3 && $1="[$]$1 $4/$3" - test -d $4/$3/$2 && $1="[$]$1 $4/$3/$2" - test -d $4/$3/$2/$3 && $1="[$]$1 $4/$3/$2/$3" - test -d $4/$2/$3 && $1="[$]$1 $4/$2/$3" - test -d $4/$2/$3/$2 && $1="[$]$1 $4/$2/$3/$2" -} -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ANSI_CC_CHECK version: 10 updated: 2010/10/23 15:52:32 -dnl ---------------- -dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES' -dnl in the sharutils 4.2 distribution. -AC_DEFUN([CF_ANSI_CC_CHECK], -[ -AC_CACHE_CHECK(for ${CC:-cc} option to accept ANSI C, cf_cv_ansi_cc,[ -cf_cv_ansi_cc=no -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) -for cf_arg in "-DCC_HAS_PROTOS" \ - "" \ - -qlanglvl=ansi \ - -std1 \ - -Ae \ - "-Aa -D_HPUX_SOURCE" \ - -Xc -do - CF_ADD_CFLAGS($cf_arg) - AC_TRY_COMPILE( -[ -#ifndef CC_HAS_PROTOS -#if !defined(__STDC__) || (__STDC__ != 1) -choke me -#endif -#endif -],[ - int test (int i, double x); - struct s1 {int (*f) (int a);}; - struct s2 {int (*f) (double a);};], - [cf_cv_ansi_cc="$cf_arg"; break]) -done -CFLAGS="$cf_save_CFLAGS" -CPPFLAGS="$cf_save_CPPFLAGS" -]) - -if test "$cf_cv_ansi_cc" != "no"; then -if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then - CF_ADD_CFLAGS($cf_cv_ansi_cc) -else - AC_DEFINE(CC_HAS_PROTOS) -fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ANSI_CC_REQD version: 4 updated: 2008/03/23 14:48:54 -dnl --------------- -dnl For programs that must use an ANSI compiler, obtain compiler options that -dnl will make it recognize prototypes. We'll do preprocessor checks in other -dnl macros, since tools such as unproto can fake prototypes, but only part of -dnl the preprocessor. -AC_DEFUN([CF_ANSI_CC_REQD], -[AC_REQUIRE([CF_ANSI_CC_CHECK]) -if test "$cf_cv_ansi_cc" = "no"; then - AC_MSG_ERROR( -[Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 -dnl -------------- -dnl Allow user to disable a normally-on option. -AC_DEFUN([CF_ARG_DISABLE], -[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ARG_OPTION version: 4 updated: 2010/05/26 05:38:42 -dnl ------------- -dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus -dnl values. -dnl -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 $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) - if test "$enableval" != "$5" ; then -ifelse([$3],,[ :]dnl -,[ $3]) ifelse([$4],,,[ - else - $4]) - fi],[enableval=$5 ifelse([$4],,,[ - $4 -])dnl - ])])dnl -dnl --------------------------------------------------------------------------- -dnl CF_AR_FLAGS version: 5 updated: 2010/05/20 20:24:29 -dnl ----------- -dnl Check for suitable "ar" (archiver) options for updating an archive. -AC_DEFUN([CF_AR_FLAGS],[ -AC_REQUIRE([CF_PROG_AR]) - -AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ - cf_cv_ar_flags=unknown - for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv - do - - # check if $ARFLAGS already contains this choice - if test "x$ARFLAGS" != "x" ; then - cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` - if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then - cf_cv_ar_flags= - break - fi - fi - - rm -f conftest.$ac_cv_objext - rm -f conftest.a - - cat >conftest.$ac_ext <&AC_FD_CC - $AR $ARFLAGS $cf_ar_flags conftest.a conftest.$ac_cv_objext 2>&AC_FD_CC 1>/dev/null - if test -f conftest.a ; then - cf_cv_ar_flags=$cf_ar_flags - break - fi - else - CF_VERBOSE(cannot compile test-program) - break - fi - done - rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext -]) - -if test -n "$ARFLAGS" ; then - if test -n "$cf_cv_ar_flags" ; then - ARFLAGS="$ARFLAGS $cf_cv_ar_flags" - fi -else - ARFLAGS=$cf_cv_ar_flags -fi - -AC_SUBST(ARFLAGS) -]) -dnl --------------------------------------------------------------------------- -dnl CF_AWK_BIG_PRINTF version: 3 updated: 2008/12/27 12:30:03 -dnl ----------------- -dnl Check if awk can handle big strings using printf. Some older versions of -dnl awk choke on large strings passed via "%s". -dnl -dnl $1 = desired string size -dnl $2 = variable to set with result -AC_DEFUN([CF_AWK_BIG_PRINTF], -[ - case x$AWK in #(vi - x) - eval $2=no - ;; - *) #(vi - if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' \ - | $AWK '{ printf "%d\n", length([$]0); }' | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ([$]0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then - eval $2=yes - else - eval $2=no - fi - ;; - esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18 -dnl ------------ -dnl Test if 'bool' is a builtin type in the configured 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], - [cf_cv_header_stdbool_h=0], - [AC_TRY_COMPILE([ -#ifndef __BEOS__ -#include -#endif -],[bool foo = false], - [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 -#include -],[bool x = false], - [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 -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_BOOL_SIZE version: 12 updated: 2006/12/16 12:33:30 -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's been deprecated. -dnl -dnl If the current compiler is C rather than C++, we get the bool definition -dnl from . -AC_DEFUN([CF_BOOL_SIZE], -[ -AC_MSG_CHECKING([for size of bool]) -AC_CACHE_VAL(cf_cv_type_of_bool,[ - rm -f cf_test.out - AC_TRY_RUN([ -#include -#include - -#if defined(__cplusplus) - -#ifdef HAVE_GXX_BUILTIN_H -#include -#elif HAVE_GPP_BUILTIN_H -#include -#elif HAVE_BUILTIN_H -#include -#endif - -#else - -#if $cf_cv_header_stdbool_h -#include -#endif - -#endif - -main() -{ - FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { - bool x = true; - if ((bool)(-x) >= 0) - fputs("unsigned ", fp); - if (sizeof(x) == sizeof(int)) fputs("int", fp); - else if (sizeof(x) == sizeof(char)) fputs("char", fp); - else if (sizeof(x) == sizeof(short))fputs("short",fp); - else if (sizeof(x) == sizeof(long)) fputs("long", fp); - fclose(fp); - } - ${cf_cv_main_return:-return}(0); -} - ], - [cf_cv_type_of_bool=`cat cf_test.out` - if test -z "$cf_cv_type_of_bool"; then - cf_cv_type_of_bool=unknown - fi], - [cf_cv_type_of_bool=unknown], - [cf_cv_type_of_bool=unknown]) - ]) - rm -f cf_test.out -AC_MSG_RESULT($cf_cv_type_of_bool) -if test "$cf_cv_type_of_bool" = unknown ; then - case .$NCURSES_BOOL in #(vi - .auto|.) NCURSES_BOOL=unsigned;; - esac - AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool) - cf_cv_type_of_bool=$NCURSES_BOOL -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_BUILD_CC version: 6 updated: 2006/10/14 15:23:15 -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 -dnl compiler, etc., but we need a build compiler to generate parts of the -dnl source. -dnl -dnl $1 = default for $CPPFLAGS -dnl $2 = default for $LIBS -AC_DEFUN([CF_BUILD_CC],[ -AC_REQUIRE([CF_PROG_EXT]) -if test "$cross_compiling" = yes ; then - - # defaults that we might want to override - : ${BUILD_CFLAGS:=''} - : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'} - : ${BUILD_LDFLAGS:=''} - : ${BUILD_LIBS:='ifelse([$2],,,[$2])'} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} - - AC_ARG_WITH(build-cc, - [ --with-build-cc=XXX the build C compiler ($BUILD_CC)], - [BUILD_CC="$withval"], - [AC_CHECK_PROGS(BUILD_CC, gcc cc cl)]) - AC_MSG_CHECKING(for native build C compiler) - AC_MSG_RESULT($BUILD_CC) - - AC_MSG_CHECKING(for native build C preprocessor) - AC_ARG_WITH(build-cpp, - [ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)], - [BUILD_CPP="$withval"], - [BUILD_CPP='${BUILD_CC} -E']) - AC_MSG_RESULT($BUILD_CPP) - - AC_MSG_CHECKING(for native build C flags) - AC_ARG_WITH(build-cflags, - [ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)], - [BUILD_CFLAGS="$withval"]) - AC_MSG_RESULT($BUILD_CFLAGS) - - AC_MSG_CHECKING(for native build C preprocessor-flags) - AC_ARG_WITH(build-cppflags, - [ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)], - [BUILD_CPPFLAGS="$withval"]) - AC_MSG_RESULT($BUILD_CPPFLAGS) - - AC_MSG_CHECKING(for native build linker-flags) - AC_ARG_WITH(build-ldflags, - [ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)], - [BUILD_LDFLAGS="$withval"]) - AC_MSG_RESULT($BUILD_LDFLAGS) - - AC_MSG_CHECKING(for native build linker-libraries) - AC_ARG_WITH(build-libs, - [ --with-build-libs=XXX the build libraries (${BUILD_LIBS})], - [BUILD_LIBS="$withval"]) - AC_MSG_RESULT($BUILD_LIBS) - - # this assumes we're on Unix. - BUILD_EXEEXT= - BUILD_OBJEXT=o - - : ${BUILD_CC:='${CC}'} - - if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then - AC_MSG_ERROR([Cross-build requires two compilers. -Use --with-build-cc to specify the native compiler.]) - fi - -else - : ${BUILD_CC:='${CC}'} - : ${BUILD_CPP:='${CPP}'} - : ${BUILD_CFLAGS:='${CFLAGS}'} - : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} - : ${BUILD_LDFLAGS:='${LDFLAGS}'} - : ${BUILD_LIBS:='${LIBS}'} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} -fi - -AC_SUBST(BUILD_CC) -AC_SUBST(BUILD_CPP) -AC_SUBST(BUILD_CFLAGS) -AC_SUBST(BUILD_CPPFLAGS) -AC_SUBST(BUILD_LDFLAGS) -AC_SUBST(BUILD_LIBS) -AC_SUBST(BUILD_EXEEXT) -AC_SUBST(BUILD_OBJEXT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CFG_DEFAULTS version: 7 updated: 2005/09/24 16:15:00 -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 -dnl look for: -dnl 1. the prefix (e.g., /usr) -dnl 2. the header files (e.g., /usr/include/ncurses) -dnl We'll look for a previous installation of ncurses and use the same defaults. -dnl -dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and -dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's -dnl programs from a vendor's. -AC_DEFUN([CF_CFG_DEFAULTS], -[ -AC_MSG_CHECKING(for prefix) -if test "x$prefix" = "xNONE" ; then - case "$cf_cv_system_name" in - # non-vendor systems don't have a conflict - openbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu) - prefix=/usr - ;; - *) prefix=$ac_default_prefix - ;; - esac -fi -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 -for cf_symbol in \ - $includedir \ - $includedir/ncurses \ - $prefix/include \ - $prefix/include/ncurses \ - /usr/local/include \ - /usr/local/include/ncurses \ - /usr/include \ - /usr/include/ncurses -do - cf_dir=`eval echo $cf_symbol` - if test -f $cf_dir/curses.h ; then - if ( fgrep NCURSES_VERSION $cf_dir/curses.h 2>&1 >/dev/null ) ; then - includedir="$cf_symbol" - test -n "$verbose" && echo $ac_n " found " 1>&AC_FD_MSG - break - fi - fi - test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG -done -AC_MSG_RESULT($includedir) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CGETENT version: 3 updated: 2000/08/12 23:18:52 -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_MSG_CHECKING(for terminal-capability database functions) -AC_CACHE_VAL(cf_cv_cgetent,[ -AC_TRY_LINK([ -#include ],[ - char temp[128]; - char *buf = temp; - char *db_array = temp; - cgetent(&buf, /* int *, */ &db_array, "vt100"); - cgetcap(buf, "tc", '='); - cgetmatch(buf, "tc"); - ], - [cf_cv_cgetent=yes], - [cf_cv_cgetent=no]) -]) -AC_MSG_RESULT($cf_cv_cgetent) -test "$cf_cv_cgetent" = yes && AC_DEFINE(HAVE_BSD_CGETENT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CHECK_CACHE version: 11 updated: 2008/03/23 14:45:59 -dnl -------------- -dnl Check if we're accidentally using a cache from a different machine. -dnl Derive the system name, as a check for reusing the autoconf cache. -dnl -dnl If we've packaged config.guess and config.sub, run that (since it does a -dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow -dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM -dnl which is useful in cross-compiles. -dnl -dnl Note: we would use $ac_config_sub, but that is one of the places where -dnl autoconf 2.5x broke compatibility with autoconf 2.13 -AC_DEFUN([CF_CHECK_CACHE], -[ -if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then - ifelse([$1],,[AC_CANONICAL_HOST],[$1]) - system_name="$host_os" -else - system_name="`(uname -s -r) 2>/dev/null`" - if test -z "$system_name" ; then - system_name="`(hostname) 2>/dev/null`" - fi -fi -test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name") -AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) - -test -z "$system_name" && system_name="$cf_cv_system_name" -test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) - -if test ".$system_name" != ".$cf_cv_system_name" ; then - AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) - AC_MSG_ERROR("Please remove config.cache and try again.") -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CHECK_ERRNO version: 11 updated: 2010/05/26 05:38:42 -dnl -------------- -dnl Check for data that is usually declared in or , e.g., -dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it -dnl ourselves. -dnl -dnl $1 = the name to check -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([ -#ifdef HAVE_STDLIB_H -#include -#endif -#include -#include -#include ], - ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1, - [cf_cv_dcl_$1=yes], - [cf_cv_dcl_$1=no]) -]) - -if test "$cf_cv_dcl_$1" = no ; then - CF_UPPER(cf_result,decl_$1) - AC_DEFINE_UNQUOTED($cf_result) -fi - -# It's possible (for near-UNIX clones) that the data doesn't exist -CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CHECK_EXTERN_DATA version: 3 updated: 2001/12/30 18:03:23 -dnl -------------------- -dnl Check for existence of external data in the current set of libraries. If -dnl we can modify it, it's real enough. -dnl $1 = the name to check -dnl $2 = its type -AC_DEFUN([CF_CHECK_EXTERN_DATA], -[ -AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[ - AC_TRY_LINK([ -#undef $1 -extern $2 $1; -], - [$1 = 2], - [cf_cv_have_$1=yes], - [cf_cv_have_$1=no]) -]) - -if test "$cf_cv_have_$1" = yes ; then - CF_UPPER(cf_result,have_$1) - AC_DEFINE_UNQUOTED($cf_result) -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CHECK_GPM_WGETCH version: 2 updated: 2010/08/14 18:25:37 -dnl ------------------- -dnl Check if GPM is already linked with curses. If so - and if the linkage -dnl is not "weak" - warn about this because it can create problems linking -dnl applications with ncurses. -AC_DEFUN([CF_CHECK_GPM_WGETCH],[ -AC_CHECK_LIB(gpm,Gpm_Wgetch,[ - -AC_CACHE_CHECK(if GPM is weakly bound to curses library, cf_cv_check_gpm_wgetch,[ -cf_cv_check_gpm_wgetch=unknown -if test "$cross_compiling" != yes ; then - -cat >conftest.$ac_ext < -int main() -{ - Gpm_Wgetch(); - ${cf_cv_main_return:-return}(0); -} -CF_EOF - - cf_save_LIBS="$LIBS" - # This only works if we can look at the symbol table. If a shared - # library is stripped for install, we cannot use that. So we're forced - # to rely on the static library, noting that some packagers may not - # include it. - LIBS="-static -lgpm -dynamic $LIBS" - if AC_TRY_EVAL(ac_compile) ; then - if AC_TRY_EVAL(ac_link) ; then - cf_cv_check_gpm_wgetch=`nm conftest$ac_exeext | egrep '\' | egrep '\<[[vVwW]]\>'` - test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes - test -z "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=no - fi - fi - rm -rf conftest* - LIBS="$cf_save_LIBS" -fi -]) - -if test "$cf_cv_check_gpm_wgetch" != yes ; then - AC_MSG_WARN(GPM library is already linked with curses - read the FAQ) -fi -])])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CPP_PARAM_INIT version: 4 updated: 2001/04/07 22:31:18 -dnl ----------------- -dnl Check if the C++ compiler accepts duplicate parameter initialization. This -dnl is a late feature for the standard and is not in some recent compilers -dnl (1999/9/11). -AC_DEFUN([CF_CPP_PARAM_INIT], -[ -if test -n "$CXX"; then -AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - AC_TRY_RUN([ -class TEST { -private: - int value; -public: - TEST(int x = 1); - ~TEST(); -}; - -TEST::TEST(int x = 1) // some compilers do not like second initializer -{ - value = x; -} -void main() { } -], - [cf_cv_cpp_param_init=yes], - [cf_cv_cpp_param_init=no], - [cf_cv_cpp_param_init=unknown]) - AC_LANG_RESTORE -]) -fi -test "$cf_cv_cpp_param_init" = yes && AC_DEFINE(CPP_HAS_PARAM_INIT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CPP_STATIC_CAST version: 1 updated: 2005/07/23 16:52:43 -dnl ------------------ -dnl Check if the C++ compiler accepts static_cast in generics. This appears to -dnl not be supported in g++ before 3.0 -AC_DEFUN([CF_CPP_STATIC_CAST], -[ -if test -n "$CXX"; then - -AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[ - AC_LANG_SAVE - AC_LANG_CPLUSPLUS - - AC_TRY_COMPILE([ -class NCursesPanel -{ -public: - NCursesPanel(int nlines, - int ncols, - int begin_y = 0, - int begin_x = 0) - { - } - - ~NCursesPanel(); -}; - -template class NCursesUserPanel : public NCursesPanel -{ -public: - NCursesUserPanel (int nlines, - int ncols, - int begin_y = 0, - int begin_x = 0, - const T* p_UserData = static_cast(0)) - : NCursesPanel (nlines, ncols, begin_y, begin_x) - { - }; - NCursesUserPanel(const T* p_UserData = static_cast(0)) : NCursesPanel() - { - }; - - virtual ~NCursesUserPanel() {}; -}; -],[ - const char* p_UserData = static_cast(0)], - [cf_cv_cpp_static_cast=yes], - [cf_cv_cpp_static_cast=no]) - - AC_LANG_RESTORE -]) - -fi - -test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_C_INLINE version: 3 updated: 2010/05/01 15:14:41 -dnl ----------- -dnl Check if the C compiler supports "inline". -dnl $1 is the name of a shell variable to set if inline is supported -dnl $2 is the threshold for gcc 4.x's option controlling maximum inline size -AC_DEFUN([CF_C_INLINE],[ -AC_C_INLINE -$1= -if test "$ac_cv_c_inline" != no ; then - $1=inline - if test "$INTEL_COMPILER" = yes - then - : - elif test "$GCC" = yes - 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()], - [cf_cv_gcc_inline=yes], - [cf_cv_gcc_inline=no]) - CFLAGS=$cf_save_CFLAGS - ]) - if test "$cf_cv_gcc_inline" = yes ; then - CF_ADD_CFLAGS([--param max-inline-insns-single=$2]) - fi - fi -fi -AC_SUBST($1) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52 -dnl ---------- -dnl "dirname" is not portable, so we fake it with a shell script. -AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DIRS_TO_MAKE version: 3 updated: 2002/02/23 20:38:31 -dnl --------------- -AC_DEFUN([CF_DIRS_TO_MAKE], -[ -DIRS_TO_MAKE="lib" -for cf_item in $cf_list_models -do - CF_OBJ_SUBDIR($cf_item,cf_subdir) - for cf_item2 in $DIRS_TO_MAKE - do - test $cf_item2 = $cf_subdir && break - done - test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir" -done -for cf_dir in $DIRS_TO_MAKE -do - test ! -d $cf_dir && mkdir $cf_dir -done -AC_SUBST(DIRS_TO_MAKE) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DISABLE_LEAKS version: 6 updated: 2010/07/23 04:14:32 -dnl ---------------- -dnl Combine no-leak checks with the libraries or tools that are used for the -dnl checks. -AC_DEFUN([CF_DISABLE_LEAKS],[ - -AC_REQUIRE([CF_WITH_DMALLOC]) -AC_REQUIRE([CF_WITH_DBMALLOC]) -AC_REQUIRE([CF_WITH_VALGRIND]) - -AC_MSG_CHECKING(if you want to perform memory-leak testing) -AC_ARG_ENABLE(leaks, - [ --disable-leaks test: free permanent memory, analyze leaks], - [if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi], - : ${with_no_leaks:=no}) -AC_MSG_RESULT($with_no_leaks) - -if test "$with_no_leaks" = yes ; then - AC_DEFINE(NO_LEAKS) - AC_DEFINE(YY_NO_LEAKS) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DISABLE_LIBTOOL_VERSION version: 1 updated: 2010/05/15 15:45:59 -dnl -------------------------- -dnl Check if we should use the libtool 1.5 feature "-version-number" instead of -dnl the older "-version-info" feature. The newer feature allows us to use -dnl version numbering on shared libraries which make them compatible with -dnl various systems. -AC_DEFUN([CF_DISABLE_LIBTOOL_VERSION], -[ -AC_MSG_CHECKING(if libtool -version-number should be used) -CF_ARG_DISABLE(libtool-version, - [ --disable-libtool-version enable to use libtool's incompatible naming scheme], - [cf_libtool_version=no], - [cf_libtool_version=yes]) -AC_MSG_RESULT($cf_libtool_version) - -if test "$cf_libtool_version" = yes ; then - LIBTOOL_VERSION="-version-number" -else - LIBTOOL_VERSION="-version-info" -fi - -AC_SUBST(LIBTOOL_VERSION) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DISABLE_RPATH_HACK version: 2 updated: 2011/02/13 13:31:33 -dnl --------------------- -dnl The rpath-hack makes it simpler to build programs, particularly with the -dnl *BSD ports which may have essential libraries in unusual places. But it -dnl can interfere with building an executable for the base system. Use this -dnl option in that case. -AC_DEFUN([CF_DISABLE_RPATH_HACK], -[ -AC_MSG_CHECKING(if rpath-hack should be disabled) -CF_ARG_DISABLE(rpath-hack, - [ --disable-rpath-hack don't add rpath options for additional libraries], - [cf_disable_rpath_hack=yes], - [cf_disable_rpath_hack=no]) -AC_MSG_RESULT($cf_disable_rpath_hack) -if test "$cf_disable_rpath_hack" = no ; then - CF_RPATH_HACK -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42 -dnl --------------- -dnl Check if the rpath option should be used, setting cache variable -dnl cf_cv_enable_rpath if so. -AC_DEFUN([CF_ENABLE_RPATH], -[ -AC_MSG_CHECKING(if rpath option should be used) -AC_ARG_ENABLE(rpath, -[ --enable-rpath use rpath option when generating shared libraries], -[cf_cv_enable_rpath=$enableval], -[cf_cv_enable_rpath=no]) -AC_MSG_RESULT($cf_cv_enable_rpath) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39 -dnl -------- -dnl Check if 'errno' is declared in -AC_DEFUN([CF_ERRNO], -[ -CF_CHECK_ERRNO(errno) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ETIP_DEFINES version: 3 updated: 2003/03/22 19:13:43 -dnl --------------- -dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between -dnl math.h and builtin.h, only for ncurses -AC_DEFUN([CF_ETIP_DEFINES], -[ -AC_MSG_CHECKING(for special defines needed for etip.h) -cf_save_CXXFLAGS="$CXXFLAGS" -cf_result="none" -for cf_math in "" MATH_H -do -for cf_excp in "" MATH_EXCEPTION -do - CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -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([ -#include -],[],[ - 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" - break -],[]) -done -done -AC_MSG_RESULT($cf_result) -CXXFLAGS="$cf_save_CXXFLAGS" -]) -dnl --------------------------------------------------------------------------- -dnl CF_FIND_LINKAGE version: 19 updated: 2010/05/29 16:31:02 -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. -dnl See also CF_ADD_SEARCHPATH. -dnl -dnl Parameters (4-on are optional): -dnl $1 = headers for library entrypoint -dnl $2 = code fragment for library entrypoint -dnl $3 = the library name without the "-l" option or ".so" suffix. -dnl $4 = action to perform if successful (default: update CPPFLAGS, etc) -dnl $5 = action to perform if not successful -dnl $6 = module name, if not the same as the library name -dnl $7 = extra libraries -dnl -dnl Sets these variables: -dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found -dnl $cf_cv_header_path_$3 - include-directory if needed -dnl $cf_cv_library_path_$3 - library-directory if needed -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. -cf_cv_header_path_$3= -cf_cv_library_path_$3= - -CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) - -cf_save_LIBS="$LIBS" - -AC_TRY_LINK([$1],[$2],[ - cf_cv_find_linkage_$3=yes - cf_cv_header_path_$3=/usr/include - cf_cv_library_path_$3=/usr/lib -],[ - -LIBS="-l$3 $7 $cf_save_LIBS" - -AC_TRY_LINK([$1],[$2],[ - cf_cv_find_linkage_$3=yes - cf_cv_header_path_$3=/usr/include - cf_cv_library_path_$3=/usr/lib - cf_cv_library_file_$3="-l$3" -],[ - cf_cv_find_linkage_$3=no - LIBS="$cf_save_LIBS" - - CF_VERBOSE(find linkage for $3 library) - CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)]) - - cf_save_CPPFLAGS="$CPPFLAGS" - cf_test_CPPFLAGS="$CPPFLAGS" - - CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6])) - for cf_cv_header_path_$3 in $cf_search - do - if test -d $cf_cv_header_path_$3 ; then - CF_VERBOSE(... testing $cf_cv_header_path_$3) - CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_$3" - AC_TRY_COMPILE([$1],[$2],[ - CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) - cf_cv_find_linkage_$3=maybe - cf_test_CPPFLAGS="$CPPFLAGS" - break],[ - CPPFLAGS="$cf_save_CPPFLAGS" - ]) - fi - done - - if test "$cf_cv_find_linkage_$3" = maybe ; then - - CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)]) - - cf_save_LIBS="$LIBS" - cf_save_LDFLAGS="$LDFLAGS" - - ifelse([$6],,,[ - CPPFLAGS="$cf_test_CPPFLAGS" - LIBS="-l$3 $7 $cf_save_LIBS" - AC_TRY_LINK([$1],[$2],[ - CF_VERBOSE(... found $3 library in system) - cf_cv_find_linkage_$3=yes]) - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - ]) - - if test "$cf_cv_find_linkage_$3" != yes ; then - CF_LIBRARY_PATH(cf_search,$3) - for cf_cv_library_path_$3 in $cf_search - do - if test -d $cf_cv_library_path_$3 ; then - CF_VERBOSE(... testing $cf_cv_library_path_$3) - 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],[ - CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) - cf_cv_find_linkage_$3=yes - cf_cv_library_file_$3="-l$3" - break],[ - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - LDFLAGS="$cf_save_LDFLAGS" - ]) - fi - done - CPPFLAGS="$cf_save_CPPFLAGS" - LDFLAGS="$cf_save_LDFLAGS" - fi - - else - cf_cv_find_linkage_$3=no - fi - ],$7) -]) - -LIBS="$cf_save_LIBS" - -if test "$cf_cv_find_linkage_$3" = yes ; then -ifelse([$4],,[ - CF_ADD_INCDIR($cf_cv_header_path_$3) - CF_ADD_LIBDIR($cf_cv_library_path_$3) - CF_ADD_LIB($3) -],[$4]) -else -ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_DLSYM version: 2 updated: 2010/05/29 16:31:02 -dnl ------------- -dnl Test for dlsym() and related functions, as well as libdl. -dnl -dnl Sets -dnl $cf_have_dlsym -dnl $cf_have_libdl -AC_DEFUN([CF_FUNC_DLSYM],[ -cf_have_dlsym=no -AC_CHECK_FUNC(dlsym,cf_have_dlsym=yes,[ - -cf_have_libdl=no -AC_CHECK_LIB(dl,dlsym,[ - cf_have_dlsym=yes - cf_have_libdl=yes])]) - -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 ],[ - void *obj; - if ((obj = dlopen("filename", 0)) != 0) { - if (dlsym(obj, "symbolname") == 0) { - dlclose(obj); - } - }],[ - AC_DEFINE(HAVE_LIBDL)],[ - AC_MSG_ERROR(Cannot link test program for libdl)]) - AC_MSG_RESULT(ok) -else - AC_MSG_ERROR(Cannot find dlsym function) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_MEMMOVE version: 7 updated: 2006/12/16 12:33:30 -dnl --------------- -dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither -dnl is found, add our own version of memmove to the list of objects. -AC_DEFUN([CF_FUNC_MEMMOVE], -[ -AC_CHECK_FUNC(memmove,,[ -AC_CHECK_FUNC(bcopy,[ - AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[ - AC_TRY_RUN([ -int main() { - static char data[] = "abcdefghijklmnopqrstuwwxyz"; - char temp[40]; - bcopy(data, temp, sizeof(data)); - bcopy(temp+10, temp, 15); - bcopy(temp+5, temp+15, 10); - ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz")); -} - ], - [cf_cv_good_bcopy=yes], - [cf_cv_good_bcopy=no], - [cf_cv_good_bcopy=unknown]) - ]) - ],[cf_cv_good_bcopy=no]) - if test "$cf_cv_good_bcopy" = yes ; then - AC_DEFINE(USE_OK_BCOPY) - else - AC_DEFINE(USE_MY_MEMMOVE) - fi -])])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_NANOSLEEP version: 3 updated: 2006/12/16 12:33:30 -dnl ----------------- -dnl Check for existence of workable nanosleep() function. Some systems, e.g., -dnl AIX 4.x, provide a non-working version. -AC_DEFUN([CF_FUNC_NANOSLEEP],[ -AC_CACHE_CHECK(if nanosleep really works,cf_cv_func_nanosleep,[ -AC_TRY_RUN([ -#include -#include -#include - -#ifdef HAVE_SYS_TIME_H -#include -#endif - -int main() { - struct timespec ts1, ts2; - int code; - ts1.tv_sec = 0; - ts1.tv_nsec = 750000000; - ts2.tv_sec = 0; - ts2.tv_nsec = 0; - errno = 0; - code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */ - ${cf_cv_main_return:-return}(code != 0); -} -], - [cf_cv_func_nanosleep=yes], - [cf_cv_func_nanosleep=no], - [cf_cv_func_nanosleep=unknown])]) - -test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP) -]) -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_OPENPTY version: 3 updated: 2010/05/29 16:31:02 -dnl --------------- -dnl Check for openpty() function, along with header. It may need the -dnl "util" library as well. -AC_DEFUN([CF_FUNC_OPENPTY], -[ -AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no) -AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[ - cf_save_LIBS="$LIBS" - test $cf_cv_lib_util = yes && CF_ADD_LIB(util) - for cf_header in pty.h libutil.h util.h - do - AC_TRY_LINK([ -#include <$cf_header> -],[ - int x = openpty((int *)0, (int *)0, (char *)0, - (struct termios *)0, (struct winsize *)0); -],[ - cf_cv_func_openpty=$cf_header - break -],[ - cf_cv_func_openpty=no -]) - done - LIBS="$cf_save_LIBS" -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_POLL version: 4 updated: 2006/12/16 12:33:30 -dnl ------------ -dnl See if the poll function really works. Some platforms have poll(), but -dnl it does not work for terminals or files. -AC_DEFUN([CF_FUNC_POLL],[ -AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[ -AC_TRY_RUN([ -#include -#ifdef HAVE_POLL_H -#include -#else -#include -#endif -int main() { - struct pollfd myfds; - int ret; - - myfds.fd = 0; - myfds.events = POLLIN; - - ret = poll(&myfds, 1, 100); - ${cf_cv_main_return:-return}(ret != 0); -}], - [cf_cv_working_poll=yes], - [cf_cv_working_poll=no], - [cf_cv_working_poll=unknown])]) -test "$cf_cv_working_poll" = "yes" && AC_DEFINE(HAVE_WORKING_POLL) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_TERMIOS version: 2 updated: 2000/07/22 23:37:24 -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([ -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_TERMIOS_H -#include -#define TTY struct termios -#else -#ifdef HAVE_TERMIO_H -#include -#define TTY struct termio -#endif -#endif -],[ -TTY foo; -tcgetattr(1, &foo);], -[cf_cv_have_tcgetattr=yes], -[cf_cv_have_tcgetattr=no])]) -test "$cf_cv_have_tcgetattr" = yes && AC_DEFINE(HAVE_TCGETATTR) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_VSSCANF version: 3 updated: 2001/12/19 00:50:10 -dnl --------------- -dnl Check for vsscanf() function, which is in c9x but generally not in earlier -dnl versions of C. It is in the GNU C library, and can often be simulated by -dnl other functions. -AC_DEFUN([CF_FUNC_VSSCANF], -[ -AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[ -AC_TRY_LINK([ -#include -#include ],[ - va_list ap; - vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[ -AC_TRY_LINK([ -#include -#include ],[ - FILE strbuf; - char *str = "from"; - - strbuf._flag = _IOREAD; - 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([ -#include -#include ],[ - FILE strbuf; - char *str = "from"; - - strbuf._flag = _IOREAD; - strbuf._ptr = strbuf._base = (unsigned char *) str; - strbuf._cnt = strlen(str); - strbuf._file = _NFILE; - return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[ -cf_cv_func_vsscanf=no])])])]) - -case $cf_cv_func_vsscanf in #(vi -vsscanf) AC_DEFINE(HAVE_VSSCANF);; #(vi -vfscanf) AC_DEFINE(HAVE_VFSCANF);; #(vi -_doscan) AC_DEFINE(HAVE__DOSCAN);; -esac - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_ATTRIBUTES version: 14 updated: 2010/10/23 15:52:32 -dnl ----------------- -dnl Test for availability of useful gcc __attribute__ directives to quiet -dnl compiler warnings. Though useful, not all are supported -- and contrary -dnl to documentation, unrecognized directives cause older compilers to barf. -AC_DEFUN([CF_GCC_ATTRIBUTES], -[ -if test "$GCC" = yes -then -cat > conftest.i < conftest.$ac_ext <&AC_FD_CC - - case $cf_attribute in #(vi - printf) #(vi - cf_printf_attribute=yes - cat >conftest.h <conftest.h <conftest.h <>confdefs.h - case $cf_attribute in #(vi - printf) #(vi - if test "$cf_printf_attribute" = no ; then - cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h -fi -rm -rf conftest* -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_VERSION version: 5 updated: 2010/04/24 11:02:31 -dnl -------------- -dnl Find version of gcc -AC_DEFUN([CF_GCC_VERSION],[ -AC_REQUIRE([AC_PROG_CC]) -GCC_VERSION=none -if test "$GCC" = yes ; then - AC_MSG_CHECKING(version of $CC) - GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" - test -z "$GCC_VERSION" && GCC_VERSION=unknown - AC_MSG_RESULT($GCC_VERSION) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_WARNINGS version: 27 updated: 2010/10/23 15:52:32 -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: -dnl -dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) -dnl -Wredundant-decls (system headers make this too noisy) -dnl -Wtraditional (combines too many unrelated messages, only a few useful) -dnl -Wwrite-strings (too noisy, but should review occasionally). This -dnl is enabled for ncurses using "--enable-const". -dnl -pedantic -dnl -dnl Parameter: -dnl $1 is an optional list of gcc warning flags that a particular -dnl application might want to use, e.g., "no-unused" for -dnl -Wno-unused -dnl Special: -dnl If $with_ext_const is "yes", add a check for -Wwrite-strings -dnl -AC_DEFUN([CF_GCC_WARNINGS], -[ -AC_REQUIRE([CF_GCC_VERSION]) -CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) - -cat > conftest.$ac_ext <>library.gpr <>confpackage.ads <>confpackage.adb <&AC_FD_CC 2>&1 ) ; then - cf_gnat_projects=yes - fi - cd .. - if test -f conftest.lib/confpackage.ali - then - cf_gnat_libraries=yes - fi - rm -rf conftest* *~conftest* - ;; - esac - ;; -esac -AC_MSG_RESULT($cf_gnat_projects) - -if test $cf_gnat_projects = yes -then - AC_MSG_CHECKING(if GNAT supports libraries) - AC_MSG_RESULT($cf_gnat_libraries) -fi - -if test "$cf_gnat_projects" = yes -then - USE_OLD_MAKERULES="#" - USE_GNAT_PROJECTS="" -else - USE_OLD_MAKERULES="" - USE_GNAT_PROJECTS="#" -fi - -if test "$cf_gnat_libraries" = yes -then - USE_GNAT_LIBRARIES="" -else - USE_GNAT_LIBRARIES="#" -fi - -AC_SUBST(USE_OLD_MAKERULES) -AC_SUBST(USE_GNAT_PROJECTS) -AC_SUBST(USE_GNAT_LIBRARIES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GNAT_SIGINT version: 1 updated: 2011/03/27 20:07:59 -dnl -------------- -dnl Check if gnat supports SIGINT, and presumably tasking. For the latter, it -dnl is noted that gnat may compile a tasking unit even for configurations which -dnl fail at runtime. -AC_DEFUN([CF_GNAT_SIGINT],[ -AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[ -CF_GNAT_TRY_LINK([with Ada.Interrupts.Names; - -package ConfTest is - - pragma Warnings (Off); -- the next pragma exists since 3.11p - pragma Unreserve_All_Interrupts; - pragma Warnings (On); - - protected Process is - procedure Stop; - function Continue return Boolean; - pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT); - private - Done : Boolean := False; - end Process; - -end ConfTest;], -[package body ConfTest is - protected body Process is - procedure Stop is - begin - Done := True; - end Stop; - function Continue return Boolean is - begin - return not Done; - end Continue; - end Process; -end ConfTest;], - [cf_cv_gnat_sigint=yes], - [cf_cv_gnat_sigint=no])]) - -if test $cf_cv_gnat_sigint = yes ; then - USE_GNAT_SIGINT="" -else - USE_GNAT_SIGINT="#" -fi -AC_SUBST(USE_GNAT_SIGINT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GNAT_TRY_LINK version: 3 updated: 2011/03/19 14:47:45 -dnl ---------------- -dnl Verify that a test program compiles/links with GNAT. -dnl $cf_ada_make is set to the program that compiles/links -dnl $ADAFLAGS may be set to the GNAT flags. -dnl -dnl $1 is the text of the spec -dnl $2 is the text of the body -dnl $3 is the shell command to execute if successful -dnl $4 is the shell command to execute if not successful -AC_DEFUN([CF_GNAT_TRY_LINK], -[ -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then -ifelse($3,, :,[ $3]) -ifelse($4,,,[else - $4]) -fi -rm -rf conftest* *~conftest* -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GNAT_TRY_RUN version: 5 updated: 2011/03/19 14:47:45 -dnl --------------- -dnl Verify that a test program compiles and runs with GNAT -dnl $cf_ada_make is set to the program that compiles/links -dnl $ADAFLAGS may be set to the GNAT flags. -dnl -dnl $1 is the text of the spec -dnl $2 is the text of the body -dnl $3 is the shell command to execute if successful -dnl $4 is the shell command to execute if not successful -AC_DEFUN([CF_GNAT_TRY_RUN], -[ -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then - if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then -ifelse($3,, :,[ $3]) -ifelse($4,,,[ else - $4]) - fi -ifelse($4,,,[else - $4]) -fi -rm -rf conftest* *~conftest* -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GNAT_VERSION version: 17 updated: 2011/03/23 20:24:41 -dnl --------------- -dnl Verify version of GNAT. -AC_DEFUN([CF_GNAT_VERSION], -[ -AC_MSG_CHECKING(for gnat version) -cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \ - grep '[[0-9]].[[0-9]][[0-9]]*' |\ - sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'` -AC_MSG_RESULT($cf_gnat_version) - -case $cf_gnat_version in #(vi -3.1[[1-9]]*|3.[[2-9]]*|[[4-9]].*) #(vi - cf_cv_prog_gnat_correct=yes - ;; -*) - AC_MSG_WARN(Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding.) - cf_cv_prog_gnat_correct=no - ;; -esac -]) -dnl --------------------------------------------------------------------------- -dnl CF_GNU_SOURCE version: 6 updated: 2005/07/09 13:23:07 -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 -dnl (or misfeature) of glibc2, which breaks portability of many applications, -dnl since it is interwoven with GNU extensions. -dnl -dnl Well, yes we could work around it... -AC_DEFUN([CF_GNU_SOURCE], -[ -AC_CACHE_CHECK(if we must define _GNU_SOURCE,cf_cv_gnu_source,[ -AC_TRY_COMPILE([#include ],[ -#ifndef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_gnu_source=no], - [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - AC_TRY_COMPILE([#include ],[ -#ifdef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_gnu_source=no], - [cf_cv_gnu_source=yes]) - CPPFLAGS="$cf_save" - ]) -]) -test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GPP_LIBRARY version: 10 updated: 2010/05/29 16:31:02 -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 -dnl configure, but won't be able to build the c++ demo program. -AC_DEFUN([CF_GPP_LIBRARY], -[ -cf_cxx_library=unknown -case $cf_cv_system_name in #(vi -os2*) #(vi - cf_gpp_libname=gpp - ;; -*) - cf_gpp_libname=g++ - ;; -esac -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([ -#include <$cf_gpp_libname/builtin.h> - ], - [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 - AC_DEFINE(HAVE_GPP_BUILTIN_H) - else - AC_DEFINE(HAVE_GXX_BUILTIN_H) - fi], - [AC_TRY_LINK([ -#include - ], - [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)], - [cf_cxx_library=no])]) - LIBS="$cf_save" - AC_MSG_RESULT($cf_cxx_library) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GXX_VERSION version: 6 updated: 2010/10/23 15:44:18 -dnl -------------- -dnl Check for version of g++ -AC_DEFUN([CF_GXX_VERSION],[ -AC_REQUIRE([AC_PROG_CPP]) -GXX_VERSION=none -if test "$GXX" = yes; then - AC_MSG_CHECKING(version of g++) - GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" - test -z "$GXX_VERSION" && GXX_VERSION=unknown - AC_MSG_RESULT($GXX_VERSION) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GXX_WARNINGS version: 6 updated: 2010/08/14 18:25:37 -dnl --------------- -dnl Check if the compiler supports useful warning options. -dnl -dnl Most of gcc's options apply to g++, except: -dnl -Wbad-function-cast -dnl -Wmissing-declarations -dnl -Wnested-externs -dnl -dnl Omit a few (for now): -dnl -Winline -dnl -dnl Parameter: -dnl $1 is an optional list of g++ warning flags that a particular -dnl application might want to use, e.g., "no-unused" for -dnl -Wno-unused -dnl Special: -dnl If $with_ext_const is "yes", add a check for -Wwrite-strings -dnl -AC_DEFUN([CF_GXX_WARNINGS], -[ - -CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS) - -AC_REQUIRE([CF_GXX_VERSION]) - -AC_LANG_SAVE -AC_LANG_CPLUSPLUS - -cat > conftest.$ac_ext < -],[ - char *path = "/tmp/foo"; -#ifdef DB_VERSION_MAJOR -#if DB_VERSION_MAJOR >= 4 - DB *result = 0; - db_create(&result, NULL, 0); - result->open(result, - NULL, - path, - path, - DB_HASH, - DB_CREATE, - 0644); -#elif DB_VERSION_MAJOR >= 3 - DB *result = 0; - db_create(&result, NULL, 0); - result->open(result, - path, - path, - DB_HASH, - DB_CREATE, - 0644); -#elif DB_VERSION_MAJOR >= 2 - DB *result = 0; - db_open(path, - DB_HASH, - DB_CREATE, - 0644, - (DB_ENV *) 0, - (DB_INFO *) 0, - &result); -#endif /* DB_VERSION_MAJOR */ -#else - DB *result = dbopen(path, - 2, - 0644, - DB_HASH, - 0); -#endif - ${cf_cv_main_return:-return}(result != 0) -],[ - if test -n "$cf_db_libs" ; then - cf_cv_hashed_db_libs=$cf_db_libs - else - cf_cv_hashed_db_libs=default - fi - LIBS="$cf_save_libs" - break -]) - LIBS="$cf_save_libs" -done -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_HASHED_DB_VERSION version: 3 updated: 2007/12/01 15:01:37 -dnl -------------------- -dnl Given that we have the header file for hashed database, find the version -dnl information. -AC_DEFUN([CF_HASHED_DB_VERSION], -[ -AC_CACHE_CHECK(for version of db, cf_cv_hashed_db_version,[ -cf_cv_hashed_db_version=unknown - -for cf_db_version in 1 2 3 4 5 -do - CF_MSG_LOG(checking for db version $cf_db_version) - AC_TRY_COMPILE([ -$ac_includes_default -#include - -#ifdef DB_VERSION_MAJOR - /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */ -#if $cf_db_version == DB_VERSION_MAJOR - /* ok */ -#else - make an error -#endif -#else -#if $cf_db_version == 1 - /* ok: assuming this is DB 1.8.5 */ -#else - make an error -#endif -#endif -],[DBT *foo = 0],[ - cf_cv_hashed_db_version=$cf_db_version - break - ]) -done -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_HEADER_PATH version: 12 updated: 2010/05/05 05:22:40 -dnl -------------- -dnl Construct a search-list of directories for a nonstandard header-file -dnl -dnl Parameters -dnl $1 = the variable to return as result -dnl $2 = the package name -AC_DEFUN([CF_HEADER_PATH], -[ -$1= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE) - cf_header_path_list="$cf_header_path_list [$]$1" - ;; - esac - done -fi - -# add the variations for the package we are looking for -CF_SUBDIR_PATH($1,$2,include) - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && $1="[$]$1 $includedir" - test -d $includedir/$2 && $1="[$]$1 $includedir/$2" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && $1="[$]$1 $oldincludedir" - test -d $oldincludedir/$2 && $1="[$]$1 $oldincludedir/$2" -} - -$1="[$]$1 $cf_header_path_list" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_HELP_MESSAGE version: 3 updated: 1998/01/14 10:56:23 -dnl --------------- -dnl Insert text into the help-message, for readability, from AC_ARG_WITH. -AC_DEFUN([CF_HELP_MESSAGE], -[AC_DIVERT_HELP([$1])dnl -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_INCLUDE_DIRS version: 6 updated: 2009/01/06 19:37:40 -dnl --------------- -dnl Construct the list of include-options according to whether we're building -dnl in the source directory or using '--srcdir=DIR' option. If we're building -dnl with gcc, don't append the includedir if it happens to be /usr/include, -dnl since that usually breaks gcc's shadow-includes. -AC_DEFUN([CF_INCLUDE_DIRS], -[ -CPPFLAGS="$CPPFLAGS -I. -I../include" -if test "$srcdir" != "."; then - CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include" -fi -if test "$GCC" != yes; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi - else - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi -fi -AC_SUBST(CPPFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_INTEL_COMPILER version: 4 updated: 2010/05/26 05:38:42 -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 -dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. -dnl -dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to -dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from -dnl the wrappers for gcc and g++ warnings. -dnl -dnl $1 = GCC (default) or GXX -dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS -dnl $3 = CFLAGS (default) or CXXFLAGS -AC_DEFUN([CF_INTEL_COMPILER],[ -ifelse([$2],,INTEL_COMPILER,[$2])=no - -if test "$ifelse([$1],,[$1],GCC)" = yes ; then - case $host_os in - linux*|gnu*) - 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([],[ -#ifdef __INTEL_COMPILER -#else -make an error -#endif -],[ifelse([$2],,INTEL_COMPILER,[$2])=yes -cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" -],[]) - ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" - AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) - ;; - esac -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ISASCII version: 3 updated: 2000/08/12 23:18:52 -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 ],[int x = isascii(' ')], - [cf_cv_have_isascii=yes], - [cf_cv_have_isascii=no]) -])dnl -AC_MSG_RESULT($cf_cv_have_isascii) -test "$cf_cv_have_isascii" = yes && AC_DEFINE(HAVE_ISASCII) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LARGEFILE version: 7 updated: 2007/06/02 11:58:50 -dnl ------------ -dnl Add checks for large file support. -AC_DEFUN([CF_LARGEFILE],[ -ifdef([AC_FUNC_FSEEKO],[ - AC_SYS_LARGEFILE - if test "$enable_largefile" != no ; then - AC_FUNC_FSEEKO - - # Normally we would collect these definitions in the config.h, - # but (like _XOPEN_SOURCE), some environments rely on having these - # defined before any of the system headers are included. Another - # case comes up with C++, e.g., on AIX the compiler compiles the - # header files by themselves before looking at the body files it is - # told to compile. For ncurses, those header files do not include - # the config.h - test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES " - test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE " - test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits " - - AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[ - AC_TRY_COMPILE([ -#include -#include - ],[ - /* if transitional largefile support is setup, this is true */ - extern struct dirent64 * readdir(DIR *); - struct dirent64 *x = readdir((DIR *)0); - struct dirent *y = readdir((DIR *)0); - int z = x - y; - ], - [cf_cv_struct_dirent64=yes], - [cf_cv_struct_dirent64=no]) - ]) - test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64) - fi -]) -]) -dnl --------------------------------------------------------------------------- -dnl CF_LDFLAGS_STATIC version: 8 updated: 2010/10/23 14:39:56 -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 -dnl ensure that the linker picks up a given library based on its position in -dnl the list of linker options and libraries. -AC_DEFUN([CF_LDFLAGS_STATIC],[ - -if test "$GCC" = yes ; then - case $cf_cv_system_name in #( - OS/2*|os2*|aix[[4]]*|solaris2.1[[0-9]]|darwin*) #( vi - LDFLAGS_STATIC= - LDFLAGS_SHARED= - ;; - *) #( normally, except when broken - LDFLAGS_STATIC=-static - LDFLAGS_SHARED=-dynamic - ;; - esac -else - case $cf_cv_system_name in #( - aix[[456]]*) #( from ld manpage - LDFLAGS_STATIC=-bstatic - LDFLAGS_SHARED=-bdynamic - ;; - hpux*) #( from ld manpage 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 - LDFLAGS_STATIC=-Bstatic - LDFLAGS_SHARED=-Bdynamic - ;; - osf[[45]]*) #( from ld manpage osf4.0d, osf5.1 - # alternative "-oldstyle_liblookup" (not in cc manpage) - LDFLAGS_STATIC=-noso - LDFLAGS_SHARED=-so_archive - ;; - solaris2*) - LDFLAGS_STATIC=-Bstatic - LDFLAGS_SHARED=-Bdynamic - ;; - esac -fi - -if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED" -then - AC_MSG_CHECKING(if linker supports switching between static/dynamic) - - rm -f libconftest.a - cat >conftest.$ac_ext < -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 - fi - rm -f conftest.* - - cf_save_LIBS="$LIBS" - - LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS" - AC_TRY_LINK([ -#line __oline__ "configure" -#include -int cf_ldflags_static(FILE *fp); -],[ - return cf_ldflags_static(stdin); -],[cf_ldflags_static=yes],[cf_ldflags_static=no]) - - rm -f libconftest.* - LIBS="$cf_save_LIBS" - - AC_MSG_RESULT($cf_ldflags_static) - - if test $cf_ldflags_static != yes - then - LDFLAGS_STATIC= - LDFLAGS_SHARED= - fi -else - LDFLAGS_STATIC= - LDFLAGS_SHARED= -fi - -AC_SUBST(LDFLAGS_STATIC) -AC_SUBST(LDFLAGS_SHARED) -]) -dnl --------------------------------------------------------------------------- -dnl CF_LD_RPATH_OPT version: 3 updated: 2010/06/02 05:03:05 -dnl --------------- -dnl For the given system and compiler, find the compiler flags to pass to the -dnl loader to use the "rpath" feature. -AC_DEFUN([CF_LD_RPATH_OPT], -[ -AC_REQUIRE([CF_CHECK_CACHE]) - -LD_RPATH_OPT= -AC_MSG_CHECKING(for an rpath option) -case $cf_cv_system_name in #(vi -irix*) #(vi - if test "$GCC" = yes; then - LD_RPATH_OPT="-Wl,-rpath," - else - LD_RPATH_OPT="-rpath " - fi - ;; -linux*|gnu*|k*bsd*-gnu) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -openbsd[[2-9]].*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -freebsd*) #(vi - LD_RPATH_OPT="-rpath " - ;; -netbsd*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -osf*|mls+*) #(vi - LD_RPATH_OPT="-rpath " - ;; -solaris2*) #(vi - LD_RPATH_OPT="-R" - ;; -*) - ;; -esac -AC_MSG_RESULT($LD_RPATH_OPT) - -case "x$LD_RPATH_OPT" in #(vi -x-R*) - 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) - LIBS="$cf_save_LIBS" - AC_MSG_RESULT($cf_rpath_space) - test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIBRARY_PATH version: 9 updated: 2010/03/28 12:52:50 -dnl --------------- -dnl Construct a search-list of directories for a nonstandard library-file -dnl -dnl Parameters -dnl $1 = the variable to return as result -dnl $2 = the package name -AC_DEFUN([CF_LIBRARY_PATH], -[ -$1= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE) - cf_library_path_list="$cf_library_path_list [$]$1" - ;; - esac - done -fi - -CF_SUBDIR_PATH($1,$2,lib) - -$1="$cf_library_path_list [$]$1" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIB_PREFIX version: 8 updated: 2008/09/13 11:34:16 -dnl ------------- -dnl Compute the library-prefix for the given host system -dnl $1 = variable to set -AC_DEFUN([CF_LIB_PREFIX], -[ - case $cf_cv_system_name in #(vi - OS/2*|os2*) #(vi - LIB_PREFIX='' - ;; - *) LIB_PREFIX='lib' - ;; - esac -ifelse($1,,,[$1=$LIB_PREFIX]) - AC_SUBST(LIB_PREFIX) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIB_RULES version: 61 updated: 2010/10/23 16:10:30 -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 -dnl subdirectory is a library-source directory, modify the LIBS_TO_MAKE list in -dnl the corresponding makefile to list the models that we'll generate. -dnl -dnl For shared libraries, make a list of symbolic links to construct when -dnl generating each library. The convention used for Linux is the simplest -dnl one: -dnl lib.so -> -dnl lib.so. -> -dnl lib.so.. -AC_DEFUN([CF_LIB_RULES], -[ -CF_LIB_PREFIX(cf_prefix) -AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) - -if test $cf_cv_shlib_version = cygdll ; then - TINFO_NAME=$TINFO_ARG_SUFFIX - TINFO_SUFFIX=.dll -fi - -if test -n "$TINFO_SUFFIX" ; then - case $TINFO_SUFFIX in - tw*) - TINFO_NAME="${TINFO_NAME}tw" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^tw//'` - ;; - t*) - TINFO_NAME="${TINFO_NAME}t" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^t//'` - ;; - w*) - TINFO_NAME="${TINFO_NAME}w" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^w//'` - ;; - esac -fi - -for cf_dir in $SRC_SUBDIRS -do - if test ! -d $srcdir/$cf_dir ; then - continue - elif test -f $srcdir/$cf_dir/modules; then - - SHARED_LIB= - LIBS_TO_MAKE= - for cf_item in $cf_LIST_MODELS - do - CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf) - if test $cf_item = shared ; then - if test "$cf_cv_do_symlinks" = yes ; then - case "$cf_cv_shlib_version" in #(vi - rel) #(vi - case "$cf_cv_system_name" in #(vi - darwin*) - case .${LIB_SUFFIX} in - .tw*) - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_suffix=tw'.${REL_VERSION}'"$cf_suffix" - ;; - .t*) - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_suffix=t'.${REL_VERSION}'"$cf_suffix" - ;; - .w*) - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_suffix=w'.${REL_VERSION}'"$cf_suffix" - ;; - *) - cf_suffix='.${REL_VERSION}'"$cf_suffix" - ;; - esac - ;; #(vi - *) cf_suffix="$cf_suffix"'.${REL_VERSION}' ;; - esac - ;; - abi) - case "$cf_cv_system_name" in #(vi - darwin*) - case .${LIB_SUFFIX} in - .tw*) - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_suffix=tw'.${ABI_VERSION}'"$cf_suffix" - ;; - .t*) - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_suffix=t'.${ABI_VERSION}'"$cf_suffix" - ;; - .w*) - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_suffix=w'.${ABI_VERSION}'"$cf_suffix" - ;; - *) - cf_suffix='.${ABI_VERSION}'"$cf_suffix" - ;; - esac - ;; #(vi - *) cf_suffix="$cf_suffix"'.${ABI_VERSION}' ;; - esac - ;; - esac - fi - # cygwin needs import library, and has unique naming convention - # use autodetected ${cf_prefix} for import lib and static lib, but - # use 'cyg' prefix for shared lib. - if test $cf_cv_shlib_version = cygdll ; then - cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` - LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/cyg${cf_dir}${cf_cygsuf}" - continue - fi - fi - LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}" - done - - if test $cf_dir = ncurses ; then - cf_subsets="$LIB_SUBSETS" - cf_r_parts="$cf_subsets" - cf_liblist="$LIBS_TO_MAKE" - - while test -n "$cf_r_parts" - do - cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'` - cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[[^ ]]* //'` - if test "$cf_l_parts" != "$cf_r_parts" ; then - cf_item= - case $cf_l_parts in #(vi - *termlib*) #(vi - cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g` - ;; - *ticlib*) - cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g` - ;; - *) - break - ;; - esac - if test -n "$cf_item"; then - LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE" - fi - else - break - fi - done - else - cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'` - fi - - sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \ - -e "s%@SHARED_LIB@%$SHARED_LIB%" \ - $cf_dir/Makefile >$cf_dir/Makefile.out - mv $cf_dir/Makefile.out $cf_dir/Makefile - - $AWK -f $srcdir/mk-0th.awk \ - libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - - for cf_subset in $cf_subsets - do - cf_subdirs= - for cf_item in $cf_LIST_MODELS - do - echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})" - CF_UPPER(cf_ITEM,$cf_item) - CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf) - CF_OBJ_SUBDIR($cf_item,cf_subdir) - - # Test for case where we build libtinfo with a different name. - cf_libname=$cf_dir - if test $cf_dir = ncurses ; then - case $cf_subset in - *base*) - cf_libname=${cf_libname}$LIB_SUFFIX - ;; - *termlib*) - cf_libname=$TINFO_LIB_SUFFIX - ;; - ticlib*) - cf_libname=$TICS_LIB_SUFFIX - ;; - esac - else - cf_libname=${cf_libname}$LIB_SUFFIX - fi - if test -n "${DFT_ARG_SUFFIX}" ; then - # undo $LIB_SUFFIX add-on in CF_LIB_SUFFIX - cf_suffix=`echo $cf_suffix |sed -e "s%^${LIB_SUFFIX}%%"` - fi - - # These dependencies really are for development, not - # builds, but they are useful in porting, too. - cf_depend="../include/ncurses_cfg.h" - if test "$srcdir" = "."; then - cf_reldir="." - else - cf_reldir="\${srcdir}" - fi - - if test -f $srcdir/$cf_dir/$cf_dir.priv.h; then - cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h" - elif test -f $srcdir/$cf_dir/curses.priv.h; then - cf_depend="$cf_depend $cf_reldir/curses.priv.h" - fi - - cf_dir_suffix= - old_cf_suffix="$cf_suffix" - if test "$cf_cv_shlib_version_infix" = yes ; then - if test -n "$LIB_SUFFIX" ; then - case $LIB_SUFFIX in - tw*) - cf_libname=`echo $cf_libname | sed 's/tw$//'` - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_dir_suffix=tw - ;; - t*) - cf_libname=`echo $cf_libname | sed 's/t$//'` - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_dir_suffix=t - ;; - w*) - cf_libname=`echo $cf_libname | sed 's/w$//'` - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_dir_suffix=w - ;; - esac - fi - fi - - $AWK -f $srcdir/mk-1st.awk \ - name=${cf_libname}${cf_dir_suffix} \ - traces=$LIB_TRACING \ - MODEL=$cf_ITEM \ - model=$cf_subdir \ - prefix=$cf_prefix \ - suffix=$cf_suffix \ - subset=$cf_subset \ - SymLink="$LN_S" \ - TermlibRoot=$TINFO_NAME \ - TermlibSuffix=$TINFO_SUFFIX \ - ShlibVer=$cf_cv_shlib_version \ - ShlibVerInfix=$cf_cv_shlib_version_infix \ - ReLink=${cf_cv_do_relink:-no} \ - DoLinks=$cf_cv_do_symlinks \ - rmSoLocs=$cf_cv_rm_so_locs \ - ldconfig="$LDCONFIG" \ - overwrite=$WITH_OVERWRITE \ - depend="$cf_depend" \ - host="$host" \ - libtool_version="$LIBTOOL_VERSION" \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - - cf_suffix="$old_cf_suffix" - - for cf_subdir2 in $cf_subdirs lib - do - test $cf_subdir = $cf_subdir2 && break - done - test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \ - $AWK -f $srcdir/mk-2nd.awk \ - name=$cf_dir \ - traces=$LIB_TRACING \ - MODEL=$cf_ITEM \ - model=$cf_subdir \ - subset=$cf_subset \ - srcdir=$srcdir \ - echo=$WITH_ECHO \ - crenames=$cf_cv_prog_CC_c_o \ - cxxrenames=$cf_cv_prog_CXX_c_o \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - cf_subdirs="$cf_subdirs $cf_subdir" - done - done - fi - - echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} [$]@' >>Makefile -done - -for cf_dir in $SRC_SUBDIRS -do - if test ! -d $srcdir/$cf_dir ; then - continue - fi - - if test -f $cf_dir/Makefile ; then - case "$cf_dir" in - Ada95) #(vi - echo 'libs \' >> Makefile - echo 'install.libs \' >> Makefile - echo 'uninstall.libs ::' >> Makefile - echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} [$]@' >> Makefile - ;; - esac - fi - - if test -f $srcdir/$cf_dir/modules; then - echo >> Makefile - if test -f $srcdir/$cf_dir/headers; then -cat >> Makefile <> Makefile -fi -cat >> Makefile <> Makefile <> Makefile <> Makefile <> Makefile <> Makefile <headers.sh <>headers.sh </<\$END\/\$NAME>/" >> \$TMPSED - done - ;; -*) - echo "" >> \$TMPSED - ;; -esac -CF_EOF - -else - cat >>headers.sh <//" >> \$TMPSED - NAME=ncurses.h - fi - echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED - done - ;; -*) - echo "s///" >> \$TMPSED - ;; -esac -CF_EOF -fi -cat >>headers.sh < \$TMPSRC -NAME=\`basename \$SRC\` -CF_EOF -if test $WITH_CURSES_H != yes; then - cat >>headers.sh <>headers.sh <>$cf_dir/Makefile - fi - - if test -f $srcdir/$cf_dir/modules; then - if test "$cf_dir" != "c++" ; then - cat >>$cf_dir/Makefile <<"CF_EOF" -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. -CF_EOF - fi - fi -done -AC_SUBST(LIBS_TO_MAKE) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIB_SONAME version: 5 updated: 2010/08/14 18:25:37 -dnl ------------- -dnl Find the and soname for the given shared library. Set the cache variable -dnl cf_cv_$3_soname to this, unless it is not found. Then set the cache -dnl variable to "unknown". -dnl -dnl $1 = headers -dnl $2 = code -dnl $3 = library name -AC_DEFUN([CF_LIB_SONAME], -[ -AC_CACHE_CHECK(for soname of $3 library,cf_cv_$3_soname,[ - -cf_cv_$3_soname=unknown -if test "$cross_compiling" != yes ; then -cat >conftest.$ac_ext </dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | fgrep lib$3.` - test -z "$cf_cv_$3_soname" && cf_cv_$3_soname=unknown - fi - fi -rm -rf conftest* -LIBS="$cf_save_LIBS" -fi -]) -]) -dnl --------------------------------------------------------------------------- -dnl CF_LIB_SUFFIX version: 16 updated: 2008/12/27 12:30:03 -dnl ------------- -dnl Compute the library file-suffix from the given model name -dnl $1 = model name -dnl $2 = variable to set (the nominal library suffix) -dnl $3 = dependency variable to set (actual filename) -dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. -AC_DEFUN([CF_LIB_SUFFIX], -[ - AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) - case $1 in #(vi - libtool) #(vi - $2='.la' - $3=[$]$2 - ;; - normal) #(vi - $2='.a' - $3=[$]$2 - ;; - debug) #(vi - $2='_g.a' - $3=[$]$2 - ;; - profile) #(vi - $2='_p.a' - $3=[$]$2 - ;; - shared) #(vi - case $cf_cv_system_name in - aix[[56]]*) #(vi - $2='.a' - $3=[$]$2 - ;; - cygwin*) #(vi - $2='.dll' - $3='.dll.a' - ;; - darwin*) #(vi - $2='.dylib' - $3=[$]$2 - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - $2='.so' - $3=[$]$2 - ;; - *) #(vi - $2='.sl' - $3=[$]$2 - ;; - esac - ;; - *) $2='.so' - $3=[$]$2 - ;; - esac - esac - test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" - test -n "$LIB_SUFFIX" && $3="${LIB_SUFFIX}[$]{$3}" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIB_TYPE version: 4 updated: 2000/10/20 22:57:49 -dnl ----------- -dnl Compute the string to append to -library from the given model name -dnl $1 = model name -dnl $2 = variable to set -dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. -AC_DEFUN([CF_LIB_TYPE], -[ - case $1 in - libtool) $2='' ;; - normal) $2='' ;; - debug) $2='_g' ;; - profile) $2='_p' ;; - shared) $2='' ;; - esac - test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LINK_DATAONLY version: 9 updated: 2009/01/01 20:21:38 -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 -dnl have to provide wrappers for global tables to ensure they're linked -dnl properly. -AC_DEFUN([CF_LINK_DATAONLY], -[ -AC_MSG_CHECKING([if data-only library module links]) -AC_CACHE_VAL(cf_cv_link_dataonly,[ - rm -f conftest.a - cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null - fi - rm -f conftest.$ac_ext data.o - cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null - fi - rm -f conftest.$ac_ext func.o - ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null - cf_saveLIBS="$LIBS" - LIBS="conftest.a $LIBS" - AC_TRY_RUN([ - int main() - { - extern int testfunc(); - ${cf_cv_main_return:-return} (!testfunc()); - } - ], - [cf_cv_link_dataonly=yes], - [cf_cv_link_dataonly=no], - [cf_cv_link_dataonly=unknown]) - LIBS="$cf_saveLIBS" - ]) -AC_MSG_RESULT($cf_cv_link_dataonly) - -if test "$cf_cv_link_dataonly" = no ; then - AC_DEFINE(BROKEN_LINKER) - BROKEN_LINKER=1 -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LINK_FUNCS version: 7 updated: 2006/12/16 12:33:30 -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. -dnl A few non-systems implement neither (or have nonfunctional versions). -AC_DEFUN([CF_LINK_FUNCS], -[ -AC_CHECK_FUNCS( \ - remove \ - unlink ) - -if test "$cross_compiling" = yes ; then - AC_CHECK_FUNCS( \ - link \ - symlink ) -else - AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[ - cf_cv_link_funcs= - for cf_func in link symlink ; do - AC_TRY_RUN([ -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -int main() -{ - int fail = 0; - char *src = "config.log"; - char *dst = "conftest.chk"; - struct stat src_sb; - struct stat dst_sb; - - stat(src, &src_sb); - fail = ($cf_func("config.log", "conftest.chk") < 0) - || (stat(dst, &dst_sb) < 0) - || (dst_sb.st_mtime != src_sb.st_mtime); -#ifdef HAVE_UNLINK - unlink(dst); -#else - remove(dst); -#endif - ${cf_cv_main_return:-return} (fail); -} - ],[ - cf_cv_link_funcs="$cf_cv_link_funcs $cf_func" - eval 'ac_cv_func_'$cf_func'=yes'],[ - eval 'ac_cv_func_'$cf_func'=no'],[ - eval 'ac_cv_func_'$cf_func'=error']) - done - test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no - ]) - test "$ac_cv_func_link" = yes && AC_DEFINE(HAVE_LINK) - test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAIN_RETURN version: 1 updated: 2006/12/10 09:51:54 -dnl -------------- -dnl Check if a return from main to the shell actually returns the same exit -dnl code. This is true for almost any POSIX environment. -dnl -dnl Some very old environments did not flush stdout, etc., on an exit. That -dnl would be a useful case to test for also. -AC_DEFUN([CF_MAIN_RETURN], -[ -cf_cv_main_return=return -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAKEFLAGS version: 14 updated: 2011/03/31 19:29:46 -dnl ------------ -dnl Some 'make' programs support ${MAKEFLAGS}, some ${MFLAGS}, to pass 'make' -dnl options to lower-levels. It's 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_CACHE_CHECK(for makeflags variable, cf_cv_makeflags,[ - cf_cv_makeflags='' - for cf_option in '-${MAKEFLAGS}' '${MFLAGS}' - do - cat >cf_makeflags.tmp </dev/null | fgrep -v "ing directory" | sed -e 's,[[ ]]*$,,'` - case "$cf_result" in - .*k) - 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 "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_TAGS version: 6 updated: 2010/10/23 15:52:32 -dnl ------------ -dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have -dnl a monocase filesystem. -AC_DEFUN([CF_MAKE_TAGS],[ -AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) - -AC_CHECK_PROGS(CTAGS, exctags ctags) -AC_CHECK_PROGS(ETAGS, exetags etags) - -AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) - -if test "$cf_cv_mixedcase" = yes ; then - AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) -else - MAKE_UPPER_TAGS=no -fi - -if test "$MAKE_UPPER_TAGS" = yes ; then - MAKE_UPPER_TAGS= -else - MAKE_UPPER_TAGS="#" -fi - -if test "$MAKE_LOWER_TAGS" = yes ; then - MAKE_LOWER_TAGS= -else - MAKE_LOWER_TAGS="#" -fi - -AC_SUBST(CTAGS) -AC_SUBST(ETAGS) - -AC_SUBST(MAKE_UPPER_TAGS) -AC_SUBST(MAKE_LOWER_TAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_FORMAT version: 9 updated: 2010/10/23 16:10:30 -dnl ----------------- -dnl Option to allow user to override automatic configuration of manpage format. -dnl There are several special cases: -dnl -dnl gzip - man checks for, can display gzip'd files -dnl compress - man checks for, can display compressed files -dnl BSDI - files in the cat-directories are suffixed ".0" -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 convention would not match our use). -AC_DEFUN([CF_MANPAGE_FORMAT], -[ -AC_REQUIRE([CF_PATHSEP]) -AC_MSG_CHECKING(format of man-pages) - -AC_ARG_WITH(manpage-format, - [ --with-manpage-format specify manpage-format: gzip/compress/BSDI/normal and - optionally formatted/catonly, e.g., gzip,formatted], - [MANPAGE_FORMAT=$withval], - [MANPAGE_FORMAT=unknown]) - -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's 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 - *.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 #(vi - gzip|compress|BSDI|normal|formatted|catonly) - ;; - *) - cf_unknown="$cf_unknown $cf_option" - ;; - esac - done - ;; -esac - -AC_MSG_RESULT($MANPAGE_FORMAT) -if test -n "$cf_unknown" ; then - AC_MSG_WARN(Unexpected manpage-format $cf_unknown) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_RENAMES version: 7 updated: 2005/06/18 18:51:57 -dnl ------------------ -dnl The Debian people have their own naming convention for manpages. 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_ARG_WITH(manpage-renames, - [ --with-manpage-renames specify manpage-renaming], - [MANPAGE_RENAMES=$withval], - [MANPAGE_RENAMES=yes]) - -case ".$MANPAGE_RENAMES" in #(vi -.no) #(vi - ;; -.|.yes) - # Debian 'man' program? - if test -f /etc/debian_version ; then - MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames - else - MANPAGE_RENAMES=no - fi - ;; -esac - -if test "$MANPAGE_RENAMES" != no ; then - if test -f $srcdir/man/$MANPAGE_RENAMES ; then - MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES - elif test ! -f $MANPAGE_RENAMES ; then - AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES) - fi - - test ! -d man && mkdir man - - # Construct a sed-script to perform renaming within man-pages - if test -n "$MANPAGE_RENAMES" ; then - test ! -d man && mkdir man - sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed - fi -fi - -AC_MSG_RESULT($MANPAGE_RENAMES) -AC_SUBST(MANPAGE_RENAMES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_SYMLINKS version: 5 updated: 2010/07/24 17:12:40 -dnl ------------------- -dnl Some people expect each tool to make all aliases for manpages 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_ARG_WITH(manpage-aliases, - [ --with-manpage-aliases specify manpage-aliases using .so], - [MANPAGE_ALIASES=$withval], - [MANPAGE_ALIASES=yes]) - -AC_MSG_RESULT($MANPAGE_ALIASES) - -case "x$LN_S" in #(vi -xln*) #(vi - cf_use_symlinks=yes - ;; -*) - cf_use_symlinks=no - ;; -esac - -MANPAGE_SYMLINKS=no -if test "$MANPAGE_ALIASES" = yes ; then -AC_MSG_CHECKING(if manpage symlinks should be used) - -AC_ARG_WITH(manpage-symlinks, - [ --with-manpage-symlinks specify manpage-aliases using symlinks], - [MANPAGE_SYMLINKS=$withval], - [MANPAGE_SYMLINKS=$cf_use_symlinks]) - -if test "$$cf_use_symlinks" = no; then -if test "$MANPAGE_SYMLINKS" = yes ; then - AC_MSG_WARN(cannot make symlinks, will use .so files) - MANPAGE_SYMLINKS=no -fi -fi - -AC_MSG_RESULT($MANPAGE_SYMLINKS) -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32 -dnl -------------- -dnl This option causes manpages to be run through tbl(1) to generate tables -dnl correctly. -AC_DEFUN([CF_MANPAGE_TBL], -[ -AC_MSG_CHECKING(for manpage tbl) - -AC_ARG_WITH(manpage-tbl, - [ --with-manpage-tbl specify manpage processing with tbl], - [MANPAGE_TBL=$withval], - [MANPAGE_TBL=no]) - -AC_MSG_RESULT($MANPAGE_TBL) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAN_PAGES version: 39 updated: 2010/10/23 15:44:18 -dnl ------------ -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. -AC_DEFUN([CF_MAN_PAGES], -[ -CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:) -CF_MANPAGE_FORMAT -CF_MANPAGE_RENAMES -CF_MANPAGE_SYMLINKS -CF_MANPAGE_TBL - - if test "$prefix" = "NONE" ; then - cf_prefix="$ac_default_prefix" - else - cf_prefix="$prefix" - fi - - case "$MANPAGE_FORMAT" in # (vi - *catonly*) # (vi - cf_format=yes - cf_inboth=no - ;; - *formatted*) # (vi - cf_format=yes - cf_inboth=yes - ;; - *) - cf_format=no - cf_inboth=no - ;; - esac - -test ! -d man && mkdir man - -cf_so_strip= -cf_compress= -case "$MANPAGE_FORMAT" in #(vi -*compress*) #(vi - cf_so_strip="Z" - cf_compress=compress - ;; -*gzip*) - cf_so_strip="gz" - cf_compress=gzip - ;; -esac - -cf_edit_man=./edit_man.sh -cf_man_alias=`pwd`/man_alias.sed - -cat >$cf_edit_man <>$cf_man_alias <<-CF_EOF2 - s,@DATADIR@,\$datadir,g - s,@TERMINFO@,\$TERMINFO,g - s,@NCURSES_MAJOR@,\$NCURSES_MAJOR,g - s,@NCURSES_MINOR@,\$NCURSES_MINOR,g - s,@NCURSES_PATCH@,\$NCURSES_PATCH,g - s,@NCURSES_OSPEED@,\$NCURSES_OSPEED,g -CF_EOF - ifelse($1,,,[ - for cf_name in $1 - 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_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP -CF_EOF -else -cat >>$cf_edit_man <\$TMP -CF_EOF -fi - -cat >>$cf_edit_man <\$TMP.out - mv \$TMP.out \$TMP -fi -CF_EOF - -if test $with_curses_h != yes ; then -cat >>$cf_edit_man <\$TMP.out - mv \$TMP.out \$TMP -CF_EOF -fi - -cat >>$cf_edit_man <\$TMP.out - mv \$TMP.out \$TMP - fi -CF_EOF - -if test -n "$cf_compress" ; then -cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP -CF_EOF -if test -n "$cf_compress" ; then -cat >>$cf_edit_man <>$cf_edit_man < - #include - ], - [double x = rand(); printf("result = %g\n", ]ifelse([$2],,sin(x),$2)[)], - [cf_cv_need_libm=no], - [cf_cv_need_libm=yes])]) -if test "$cf_cv_need_libm" = yes -then -ifelse($1,,[ - CF_ADD_LIB(m) -],[$1=-lm]) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55 -dnl ---------------------- -dnl Check if the file-system supports mixed-case filenames. If we're able to -dnl create a lowercase name and see it as uppercase, it doesn't support that. -AC_DEFUN([CF_MIXEDCASE_FILENAMES], -[ -AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ -if test "$cross_compiling" = yes ; then - case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi - cf_cv_mixedcase=no - ;; - *) - cf_cv_mixedcase=yes - ;; - esac -else - rm -f conftest CONFTEST - echo test >conftest - if test -f CONFTEST ; then - cf_cv_mixedcase=no - else - cf_cv_mixedcase=yes - fi - rm -f conftest CONFTEST -fi -]) -test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MKSTEMP version: 7 updated: 2010/08/14 18:25:37 -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). -AC_DEFUN([CF_MKSTEMP],[ -AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ -rm -rf conftest* -AC_TRY_RUN([ -#include -#include -#include -#include -#include -int main() -{ - char *tmpl = "conftestXXXXXX"; - char name[2][80]; - int n; - int result = 0; - int fd; - struct stat sb; - - umask(077); - for (n = 0; n < 2; ++n) { - strcpy(name[n], tmpl); - if ((fd = mkstemp(name[n])) >= 0) { - if (!strcmp(name[n], tmpl) - || stat(name[n], &sb) != 0 - || (sb.st_mode & S_IFMT) != S_IFREG - || (sb.st_mode & 077) != 0) { - result = 1; - } - close(fd); - } - } - if (result == 0 - && !strcmp(name[0], name[1])) - result = 1; - ${cf_cv_main_return:-return}(result); -} -],[cf_cv_func_mkstemp=yes -],[cf_cv_func_mkstemp=no -],[AC_CHECK_FUNC(mkstemp) -]) -]) -if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then - AC_DEFINE(HAVE_MKSTEMP) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 -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 -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_ABI_6 version: 1 updated: 2005/09/17 18:42:49 -dnl ---------------- -dnl Set ncurses' ABI to 6 unless overridden by explicit configure option, and -dnl warn about this. -AC_DEFUN([CF_NCURSES_ABI_6],[ -if test "${with_abi_version+set}" != set; then - case $cf_cv_rel_version in - 5.*) - cf_cv_rel_version=6.0 - cf_cv_abi_version=6 - AC_MSG_WARN(Overriding ABI version to $cf_cv_abi_version) - ;; - esac -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NO_LEAKS_OPTION version: 4 updated: 2006/12/16 14:24:05 -dnl ------------------ -dnl see CF_WITH_NO_LEAKS -AC_DEFUN([CF_NO_LEAKS_OPTION],[ -AC_MSG_CHECKING(if you want to use $1 for testing) -AC_ARG_WITH($1, - [$2], - [AC_DEFINE($3)ifelse([$4],,[ - $4 -]) - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_$1=yes], - [with_$1=]) -AC_MSG_RESULT(${with_$1:-no}) - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - CF_ADD_CFLAGS([-g]) - ;; - esac - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NUMBER_SYNTAX version: 1 updated: 2003/09/20 18:12:49 -dnl ---------------- -dnl Check if the given variable is a number. If not, report an error. -dnl $1 is the variable -dnl $2 is the message -AC_DEFUN([CF_NUMBER_SYNTAX],[ -if test -n "$1" ; then - case $1 in #(vi - [[0-9]]*) #(vi - ;; - *) - AC_MSG_ERROR($2 is not a number: $1) - ;; - esac -else - AC_MSG_ERROR($2 value is empty) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_OBJ_SUBDIR version: 4 updated: 2002/02/23 20:38:31 -dnl ------------- -dnl Compute the object-directory name from the given model name -AC_DEFUN([CF_OBJ_SUBDIR], -[ - case $1 in - libtool) $2='obj_lo' ;; - normal) $2='objects' ;; - debug) $2='obj_g' ;; - profile) $2='obj_p' ;; - shared) - case $cf_cv_system_name in #(vi - cygwin) #(vi - $2='objects' ;; - *) - $2='obj_s' ;; - esac - esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PATHSEP version: 5 updated: 2010/05/26 05:38:42 -dnl ---------- -dnl Provide a value for the $PATH and similar separator -AC_DEFUN([CF_PATHSEP], -[ - case $cf_cv_system_name in - os2*) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac -ifelse([$1],,,[$1=$PATH_SEPARATOR]) - AC_SUBST(PATH_SEPARATOR) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PATH_SYNTAX version: 13 updated: 2010/05/26 05:38:42 -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],[ -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".[$]$1" in #(vi -.\[$]\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX - ;; -.\[$]{*prefix}*) #(vi - eval $1="[$]$1" - case ".[$]$1" in #(vi - .NONE/*) - $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PKG_CONFIG version: 4 updated: 2011/02/18 20:26:24 -dnl ------------- -dnl Check for the package-config program, unless disabled by command-line. -AC_DEFUN([CF_PKG_CONFIG], -[ -AC_MSG_CHECKING(if you want to use pkg-config) -AC_ARG_WITH(pkg-config, - [ --with-pkg-config{=path} enable/disable use of pkg-config], - [cf_pkg_config=$withval], - [cf_pkg_config=yes]) -AC_MSG_RESULT($cf_pkg_config) - -case $cf_pkg_config in #(vi -no) #(vi - PKG_CONFIG=none - ;; -yes) #(vi - AC_PATH_TOOL(PKG_CONFIG, pkg-config, none) - ;; -*) - PKG_CONFIG=$withval - ;; -esac - -test -z "$PKG_CONFIG" && PKG_CONFIG=none -if test "$PKG_CONFIG" != none ; then - CF_PATH_SYNTAX(PKG_CONFIG) -fi - -AC_SUBST(PKG_CONFIG) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42 -dnl ----------------- -dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. -dnl -dnl POSIX.1-1990 _POSIX_SOURCE -dnl POSIX.1-1990 and _POSIX_SOURCE and -dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 -dnl Bindings Option -dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L -dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L -dnl X/Open 2000 _POSIX_C_SOURCE=200112L -dnl -dnl Parameters: -dnl $1 is the nominal value for _POSIX_C_SOURCE -AC_DEFUN([CF_POSIX_C_SOURCE], -[ -cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) - -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" - -CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) -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 ],[ -#ifndef _POSIX_C_SOURCE -make an error -#endif], - [cf_cv_posix_c_source=no], - [cf_want_posix_source=no - case .$cf_POSIX_C_SOURCE in #(vi - .[[12]]??*) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - ;; - .2) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - cf_want_posix_source=yes - ;; - .*) - cf_want_posix_source=yes - ;; - esac - if test "$cf_want_posix_source" = yes ; then - AC_TRY_COMPILE([#include ],[ -#ifdef _POSIX_SOURCE -make an error -#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) - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" - CF_MSG_LOG(if the second compile does not leave our definition intact error) - AC_TRY_COMPILE([#include ],[ -#ifndef _POSIX_C_SOURCE -make an error -#endif],, - [cf_cv_posix_c_source=no]) - CFLAGS="$cf_save_CFLAGS" - CPPFLAGS="$cf_save_CPPFLAGS" - ]) -]) - -if test "$cf_cv_posix_c_source" != no ; then - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS" - CF_ADD_CFLAGS($cf_cv_posix_c_source) -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PREDEFINE version: 2 updated: 2010/05/26 16:44:57 -dnl ------------ -dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles. -dnl -dnl $1 = symbol to test -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 -],[ -#ifndef $1 -make an error -#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 -],[ -#if $1-$2 < 0 -make an error -#endif],[cf_result=yes],[cf_result=no]) - AC_MSG_RESULT($cf_result) - if test "$cf_result" = no ; then - # perhaps we can override it - try... - CPPFLAGS="$CPPFLAGS -D$1=$2" - fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PRG_RULES version: 1 updated: 2006/06/03 11:45:08 -dnl ------------ -dnl Append definitions and rules for the given programs to the subdirectory -dnl Makefiles, and the recursion rule for the top-level Makefile. -dnl -dnl parameters -dnl $1 = script to run -dnl $2 = list of subdirectories -dnl -dnl variables -dnl $AWK -AC_DEFUN([CF_PRG_RULES], -[ -for cf_dir in $2 -do - if test ! -d $srcdir/$cf_dir; then - continue - elif test -f $srcdir/$cf_dir/programs; then - $AWK -f $1 $srcdir/$cf_dir/programs >>$cf_dir/Makefile - fi -done - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22 -dnl ---------- -dnl Check for archiver "ar". -AC_DEFUN([CF_PROG_AR],[ -AC_CHECK_TOOL(AR, ar, ar) -]) -dnl --------------------------------------------------------------------------- -dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59 -dnl ----------- -dnl Check for awk, ensure that the check found something. -AC_DEFUN([CF_PROG_AWK], -[ -AC_PROG_AWK -test -z "$AWK" && AC_MSG_ERROR(No awk program found) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_CC_C_O version: 3 updated: 2010/08/14 18:25:37 -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 -dnl be used later. The parameter is either CC or CXX. The result is the -dnl cache variable: -dnl $cf_cv_prog_CC_c_o -dnl $cf_cv_prog_CXX_c_o -AC_DEFUN([CF_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC])dnl -AC_MSG_CHECKING([whether [$]$1 understands -c and -o together]) -AC_CACHE_VAL(cf_cv_prog_$1_c_o, -[ -cat > conftest.$ac_ext < -int main() -{ - ${cf_cv_main_return:-return}(0); -} -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 -c conftest.$ac_ext -o conftest2.$ac_objext >&AC_FD_CC' -if AC_TRY_EVAL(ac_try) && - test -f conftest2.$ac_objext && AC_TRY_EVAL(ac_try); -then - eval cf_cv_prog_$1_c_o=yes -else - eval cf_cv_prog_$1_c_o=no -fi -rm -rf conftest* -])dnl -if test $cf_cv_prog_$1_c_o = yes; then - AC_MSG_RESULT([yes]) -else - AC_MSG_RESULT([no]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_CC_U_D version: 1 updated: 2005/07/14 16:59:30 -dnl -------------- -dnl Check if C (preprocessor) -U and -D options are processed in the order -dnl given rather than by type of option. Some compilers insist on apply all -dnl of the -U options after all of the -D options. Others allow mixing them, -dnl and may predefine symbols that conflict with those we define. -AC_DEFUN([CF_PROG_CC_U_D], -[ -AC_CACHE_CHECK(if $CC -U and -D options work together,cf_cv_cc_u_d_options,[ - cf_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS" - AC_TRY_COMPILE([],[ -#ifndef U_D_OPTIONS -make an undefined-error -#endif -#ifdef D_U_OPTIONS -make a defined-error -#endif - ],[ - cf_cv_cc_u_d_options=yes],[ - cf_cv_cc_u_d_options=no]) - CPPFLAGS="$cf_save_CPPFLAGS" -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_EGREP version: 1 updated: 2006/09/16 11:40:59 -dnl ------------- -dnl AC_PROG_EGREP was introduced in autoconf 2.53. -dnl This macro adds a check to ensure the script found something. -AC_DEFUN([CF_PROG_EGREP], -[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep], - [if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi]) - EGREP=$ac_cv_prog_egrep - AC_SUBST([EGREP]) -test -z "$EGREP" && AC_MSG_ERROR(No egrep program found) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_EXT version: 10 updated: 2004/01/03 19:28:18 -dnl ----------- -dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX. -AC_DEFUN([CF_PROG_EXT], -[ -AC_REQUIRE([CF_CHECK_CACHE]) -case $cf_cv_system_name in -os2*) - CFLAGS="$CFLAGS -Zmt" - CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" - CXXFLAGS="$CXXFLAGS -Zmt" - # autoconf's macro sets -Zexe and suffix both, which conflict:w - LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" - ac_cv_exeext=.exe - ;; -esac - -AC_EXEEXT -AC_OBJEXT - -PROG_EXT="$EXEEXT" -AC_SUBST(PROG_EXT) -test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT") -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_GNAT version: 1 updated: 2010/06/19 15:22:18 -dnl ------------ -dnl Check for gnatmake, ensure that it is complete. -AC_DEFUN([CF_PROG_GNAT],[ -cf_ada_make=gnatmake -AC_CHECK_PROG(gnat_exists, $cf_ada_make, yes, no) -if test "$ac_cv_prog_gnat_exists" = no; then - cf_ada_make= -else - CF_GNAT_VERSION - AC_CHECK_PROG(M4_exists, m4, yes, no) - if test "$ac_cv_prog_M4_exists" = no; then - cf_cv_prog_gnat_correct=no - echo Ada95 binding required program m4 not found. Ada95 binding disabled. - fi - if test "$cf_cv_prog_gnat_correct" = yes; then - AC_MSG_CHECKING(if GNAT works) - CF_GNAT_TRY_RUN([procedure conftest;], -[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_cv_prog_gnat_correct=yes],[cf_cv_prog_gnat_correct=no]) - AC_MSG_RESULT($cf_cv_prog_gnat_correct) - fi -fi - -AC_SUBST(cf_ada_make) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_INSTALL version: 5 updated: 2002/12/21 22:46:07 -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 -/*) - ;; -*) - CF_DIRNAME(cf_dir,$INSTALL) - test -z "$cf_dir" && cf_dir=. - INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'` - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_LDCONFIG version: 2 updated: 2008/12/13 14:08:40 -dnl ---------------- -dnl Check for ldconfig, needed to fixup shared libraries that would be built -dnl and then used in the install. -AC_DEFUN([CF_PROG_LDCONFIG],[ -if test "$cross_compiling" = yes ; then - LDCONFIG=: -else -case "$cf_cv_system_name" in #(vi -dragonfly*|freebsd*) #(vi - test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R" - ;; -*) LDPATH=$PATH:/sbin:/usr/sbin - AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH) - ;; -esac -fi -AC_SUBST(LDCONFIG) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14 -dnl ------------ -AC_DEFUN([CF_PROG_LINT], -[ -AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint) -AC_SUBST(LINT_OPTS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37 -dnl ------------ -dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f" -dnl option if it is supported. -AC_DEFUN([CF_PROG_LN_S],[ -AC_PROG_LN_S -AC_MSG_CHECKING(if $LN_S -f options work) - -rm -f conf$$.src conf$$dst -echo >conf$$.dst -echo first >conf$$.src -if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then - cf_prog_ln_sf=yes -else - cf_prog_ln_sf=no -fi -rm -f conf$$.dst conf$$src -AC_MSG_RESULT($cf_prog_ln_sf) - -test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_REGEX version: 8 updated: 2010/08/07 14:09:44 -dnl -------- -dnl Attempt to determine if we've got one of the flavors of regular-expression -dnl code that we can support. -AC_DEFUN([CF_REGEX], -[ - -cf_regex_func=no - -cf_regex_libs="regex re" -case $host_os in #(vi -mingw*) - cf_regex_libs="regex.dll $cf_regex_libs" - ;; -esac - -AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[ - for cf_regex_lib in $cf_regex_libs - do - AC_CHECK_LIB($cf_regex_lib,regcomp,[ - CF_ADD_LIB($cf_regex_lib) - cf_regex_func=regcomp - break]) - done -]) - -if test "$cf_regex_func" = no ; then - AC_CHECK_FUNC(compile,[cf_regex_func=compile],[ - AC_CHECK_LIB(gen,compile,[ - CF_ADD_LIB(gen) - cf_regex_func=compile])]) -fi - -if test "$cf_regex_func" = no ; then - AC_MSG_WARN(cannot find regular expression library) -fi - -AC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[ - -cf_cv_regex_hdrs=no -case $cf_regex_func in #(vi -compile) #(vi - for cf_regex_hdr in regexp.h regexpr.h - do - AC_TRY_LINK([#include <$cf_regex_hdr>],[ - char *p = compile("", "", "", 0); - int x = step("", ""); - ],[ - cf_cv_regex_hdrs=$cf_regex_hdr - break - ]) - done - ;; -*) - for cf_regex_hdr in regex.h - do - AC_TRY_LINK([#include -#include <$cf_regex_hdr>],[ - regex_t *p; - int x = regcomp(p, "", 0); - int y = regexec(p, "", 0, 0, 0); - regfree(p); - ],[ - cf_cv_regex_hdrs=$cf_regex_hdr - break - ]) - done - ;; -esac - -]) - -case $cf_cv_regex_hdrs in #(vi - no) AC_MSG_WARN(no regular expression header found) ;; #(vi - regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS) ;; #(vi - regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS) ;; #(vi - regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS) ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 -dnl ---------------- -dnl Remove all -U and -D options that refer to the given symbol from a list -dnl of C compiler options. This works around the problem that not all -dnl compilers process -U and -D options from left-to-right, so a -U option -dnl cannot be used to cancel the effect of a preceding -D option. -dnl -dnl $1 = target (which could be the same as the source variable) -dnl $2 = source (including '$') -dnl $3 = symbol to remove -define([CF_REMOVE_DEFINE], -[ -$1=`echo "$2" | \ - sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ - -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52 -dnl ------------- -dnl Remove the given library from the symbol -dnl -dnl $1 = target (which could be the same as the source variable) -dnl $2 = source (including '$') -dnl $3 = library to remove -define([CF_REMOVE_LIB], -[ -# remove $3 library from $2 -$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_RPATH_HACK version: 9 updated: 2011/02/13 13:31:33 -dnl ------------- -AC_DEFUN([CF_RPATH_HACK], -[ -AC_REQUIRE([CF_LD_RPATH_OPT]) -AC_MSG_CHECKING(for updated LDFLAGS) -if test -n "$LD_RPATH_OPT" ; then - AC_MSG_RESULT(maybe) - - AC_CHECK_PROGS(cf_ldd_prog,ldd,no) - cf_rpath_list="/usr/lib /lib" - if test "$cf_ldd_prog" != no - then - cf_rpath_oops= - -AC_TRY_LINK([#include ], - [printf("Hello");], - [cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort -u` - cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[[ ]]/%/%' -e 's%/[[^/]][[^/]]*$%%' |sort -u`]) - - # If we passed the link-test, but get a "not found" on a given library, - # this could be due to inept reconfiguration of gcc to make it only - # partly honor /usr/local/lib (or whatever). Sometimes this behavior - # is intentional, e.g., installing gcc in /usr/bin and suppressing the - # /usr/local libraries. - if test -n "$cf_rpath_oops" - then - for cf_rpath_src in $cf_rpath_oops - do - for cf_rpath_dir in \ - /usr/local \ - /usr/pkg \ - /opt/sfw - do - if test -f $cf_rpath_dir/lib/$cf_rpath_src - then - CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) - LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" - break - fi - done - done - fi - fi - - CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) - - CF_RPATH_HACK_2(LDFLAGS) - CF_RPATH_HACK_2(LIBS) - - CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) -fi -AC_SUBST(EXTRA_LDFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_RPATH_HACK_2 version: 6 updated: 2010/04/17 16:31:24 -dnl --------------- -dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to -dnl EXTRA_LDFLAGS for each -L option found. -dnl -dnl $cf_rpath_list contains a list of directories to ignore. -dnl -dnl $1 = variable name to update. The LDFLAGS variable should be the only one, -dnl but LIBS often has misplaced -L options. -AC_DEFUN([CF_RPATH_HACK_2], -[ -CF_VERBOSE(...checking $1 [$]$1) - -cf_rpath_dst= -for cf_rpath_src in [$]$1 -do - case $cf_rpath_src in #(vi - -L*) #(vi - - # check if this refers to a directory which we will ignore - cf_rpath_skip=no - if test -n "$cf_rpath_list" - then - for cf_rpath_item in $cf_rpath_list - do - if test "x$cf_rpath_src" = "x-L$cf_rpath_item" - then - cf_rpath_skip=yes - break - fi - done - fi - - if test "$cf_rpath_skip" = no - then - # transform the option - if test "$LD_RPATH_OPT" = "-R " ; then - cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` - else - cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` - fi - - # if we have not already added this, add it now - cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` - if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" - then - CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) - EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" - fi - fi - ;; - esac - cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" -done -$1=$cf_rpath_dst - -CF_VERBOSE(...checked $1 [$]$1) -AC_SUBST(EXTRA_LDFLAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SHARED_OPTS version: 64 updated: 2010/06/05 16:51:16 -dnl -------------- -dnl -------------- -dnl Attempt to determine the appropriate CC/LD options for creating a shared -dnl library. -dnl -dnl Note: ${LOCAL_LDFLAGS} is used to link executables that will run within the -dnl build-tree, i.e., by making use of the libraries that are compiled in ../lib -dnl We avoid compiling-in a ../lib path for the shared library since that can -dnl lead to unexpected results at runtime. -dnl ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared libraries -dnl are compiled in ../../lib -dnl -dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure -dnl to install symbolic links to the rel/abi versions of shared libraries. -dnl -dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi -dnl version when making symbolic links. -dnl -dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library -dnl version numbers are infix (ex: libncurses..dylib) or postfix -dnl (ex: libncurses.so.). -dnl -dnl Some loaders leave 'so_locations' lying around. It's nice to clean up. -AC_DEFUN([CF_SHARED_OPTS], -[ - AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) - AC_REQUIRE([CF_LD_RPATH_OPT]) - LOCAL_LDFLAGS= - LOCAL_LDFLAGS2= - LD_SHARED_OPTS= - INSTALL_LIB="-m 644" - - cf_cv_do_symlinks=no - cf_ld_rpath_opt= - test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" - - AC_MSG_CHECKING(if release/abi version should be used for shared libs) - AC_ARG_WITH(shlib-version, - [ --with-shlib-version=X Specify rel or abi version for shared libs], - [test -z "$withval" && withval=auto - case $withval in #(vi - yes) #(vi - cf_cv_shlib_version=auto - ;; - rel|abi|auto|no) #(vi - cf_cv_shlib_version=$withval - ;; - *) - AC_MSG_ERROR([option value must be one of: rel, abi, auto or no]) - ;; - esac - ],[cf_cv_shlib_version=auto]) - AC_MSG_RESULT($cf_cv_shlib_version) - - cf_cv_rm_so_locs=no - - # Some less-capable ports of gcc support only -fpic - CC_SHARED_OPTS= - if test "$GCC" = yes - then - AC_MSG_CHECKING(which $CC option to use) - cf_save_CFLAGS="$CFLAGS" - for CC_SHARED_OPTS in -fPIC -fpic '' - do - CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" - AC_TRY_COMPILE([#include ],[int x = 1],[break],[]) - done - AC_MSG_RESULT($CC_SHARED_OPTS) - CFLAGS="$cf_save_CFLAGS" - fi - - cf_cv_shlib_version_infix=no - - case $cf_cv_system_name in #(vi - aix[[56]]*) #(vi - if test "$GCC" = yes; then - CC_SHARED_OPTS= - MK_SHARED_LIB='$(CC) -shared' - fi - ;; - beos*) #(vi - MK_SHARED_LIB='${CC} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0' - ;; - cygwin*) #(vi - CC_SHARED_OPTS= - MK_SHARED_LIB='sh ../mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' - cf_cv_shlib_version=cygdll - cf_cv_shlib_version_infix=cygdll - cat >mk_shared_lib.sh <<-CF_EOF - #!/bin/sh - SHARED_LIB=\[$]1 - IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` - shift - cat <<-EOF - Linking shared library - ** SHARED_LIB \[$]SHARED_LIB - ** IMPORT_LIB \[$]IMPORT_LIB -EOF - exec \[$]* -shared -Wl,--out-implib=../lib/\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/\[$]{SHARED_LIB} -CF_EOF - chmod +x mk_shared_lib.sh - ;; - darwin*) #(vi - EXTRA_CFLAGS="-no-cpp-precomp" - CC_SHARED_OPTS="-dynamic" - MK_SHARED_LIB='${CC} ${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 - 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) - LDFLAGS=$cf_save_LDFLAGS]) - if test $cf_cv_ldflags_search_paths_first = yes; then - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - fi - ;; - hpux*) #(vi - # (tested with gcc 2.7.2 -- I don't have c89) - if test "$GCC" = yes; then - LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' - else - CC_SHARED_OPTS='+Z' - LD_SHARED_OPTS='-Wl,+b,${libdir}' - fi - MK_SHARED_LIB='${LD} +b ${libdir} -b -o $[@]' - # HP-UX shared libraries must be executable, and should be - # readonly to exploit a quirk in the memory manager. - INSTALL_LIB="-m 555" - ;; - irix*) #(vi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - # tested with IRIX 5.2 and 'cc'. - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $[@]` -o $[@]' - else - MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $[@]` -o $[@]' - fi - cf_cv_rm_so_locs=yes - ;; - linux*|gnu*|k*bsd*-gnu) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CF_SHARED_SONAME - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' - ;; - openbsd[[2-9]].*) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - CF_SHARED_SONAME - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' - ;; - nto-qnx*|openbsd*|freebsd[[12]].*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - MK_SHARED_LIB='${LD} -Bshareable -o $[@]' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - freebsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CF_SHARED_SONAME - MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $[@]` -o $[@]' - ;; - netbsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - if test "$cf_cv_shlib_version" = auto; then - if test -f /usr/libexec/ld.elf_so; then - cf_cv_shlib_version=abi - else - cf_cv_shlib_version=rel - fi - fi - CF_SHARED_SONAME - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]' - else - MK_SHARED_LIB='${LD} -shared -Bshareable -o $[@]' - fi - ;; - osf*|mls+*) #(vi - # tested with OSF/1 V3.2 and 'cc' - # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't - # link with shared libs). - MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`' - case $host_os in #(vi - osf4*) - MK_SHARED_LIB="${MK_SHARED_LIB} -msym" - ;; - esac - MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]' - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - cf_cv_rm_so_locs=yes - ;; - sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98 - # tested with osr5.0.5 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-belf -KPIC' - fi - MK_SHARED_LIB='${LD} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@' - if test "$cf_cv_enable_rpath" = yes ; then - # only way is to set LD_RUN_PATH but no switch for it - RUN_PATH=$libdir - fi - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - LINK_PROGS='LD_RUN_PATH=${libdir}' - LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' - ;; - sunos4*) #(vi - # tested with SunOS 4.1.1 and gcc 2.7.0 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -assert pure-text -o $[@]' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - solaris2*) #(vi - # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 - # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" - fi - CF_SHARED_SONAME - if test "$GCC" != yes; then - cf_save_CFLAGS="$CFLAGS" - for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O - do - CFLAGS="$cf_shared_opts $cf_save_CFLAGS" - AC_TRY_COMPILE([#include ],[printf("Hello\n");],[break]) - done - CFLAGS="$cf_save_CFLAGS" - CC_SHARED_OPTS=$cf_shared_opts - MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $[@]' - else - MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]' - fi - ;; - sysv5uw7*|unix_sv*) #(vi - # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -d y -G -o [$]@' - ;; - *) - CC_SHARED_OPTS='unknown' - MK_SHARED_LIB='echo unknown' - ;; - esac - - # This works if the last tokens in $MK_SHARED_LIB are the -o target. - case "$cf_cv_shlib_version" in #(vi - rel|abi) - case "$MK_SHARED_LIB" in #(vi - *'-o $[@]') #(vi - test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes - ;; - *) - AC_MSG_WARN(ignored --with-shlib-version) - ;; - esac - ;; - esac - - if test -n "$cf_ld_rpath_opt" ; then - MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}" - fi - - AC_SUBST(CC_SHARED_OPTS) - AC_SUBST(LD_RPATH_OPT) - AC_SUBST(LD_SHARED_OPTS) - AC_SUBST(MK_SHARED_LIB) - AC_SUBST(LINK_PROGS) - AC_SUBST(LINK_TESTS) - AC_SUBST(EXTRA_LDFLAGS) - AC_SUBST(LOCAL_LDFLAGS) - AC_SUBST(LOCAL_LDFLAGS2) - AC_SUBST(INSTALL_LIB) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43 -dnl ---------------- -dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for -dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar) -dnl option. -dnl -dnl $1 is the default that should be used for "$cf_cv_shlib_version". -dnl If missing, use "rel". -define([CF_SHARED_SONAME], -[ - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1) - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $[@]`' - fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_SIGWINCH version: 1 updated: 2006/04/02 16:41:09 -dnl ----------- -dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all -dnl programs need this test). -dnl -dnl This is really a MacOS X 10.4.3 workaround. Defining _POSIX_C_SOURCE -dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct -dnl winsize declaration is left alone - we may revisit this if Apple choose to -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([ -#include -#include -],[int x = SIGWINCH], - [cf_cv_define_sigwinch=yes], - [AC_TRY_COMPILE([ -#undef _XOPEN_SOURCE -#undef _POSIX_SOURCE -#undef _POSIX_C_SOURCE -#include -#include -],[int x = SIGWINCH], - [cf_cv_define_sigwinch=maybe], - [cf_cv_define_sigwinch=no]) -]) -]) - -if test "$cf_cv_define_sigwinch" = maybe ; then -AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ -cf_cv_fixup_sigwinch=unknown -cf_sigwinch=32 -while test $cf_sigwinch != 1 -do - AC_TRY_COMPILE([ -#undef _XOPEN_SOURCE -#undef _POSIX_SOURCE -#undef _POSIX_C_SOURCE -#include -#include -],[ -#if SIGWINCH != $cf_sigwinch -make an error -#endif -int x = SIGWINCH], - [cf_cv_fixup_sigwinch=$cf_sigwinch - break]) - -cf_sigwinch=`expr $cf_sigwinch - 1` -done -]) - - if test "$cf_cv_fixup_sigwinch" != unknown ; then - CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" - fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SIG_ATOMIC_T version: 2 updated: 2005/09/18 17:27:12 -dnl --------------- -dnl signal handler, but there are some gcc depedencies in that recommendation. -dnl Try anyway. -AC_DEFUN([CF_SIG_ATOMIC_T], -[ -AC_MSG_CHECKING(for signal global datatype) -AC_CACHE_VAL(cf_cv_sig_atomic_t,[ - for cf_type in \ - "volatile sig_atomic_t" \ - "sig_atomic_t" \ - "int" - do - AC_TRY_COMPILE([ -#include -#include -#include - -extern $cf_type x; -$cf_type x; -static void handler(int sig) -{ - x = 5; -}], - [signal(SIGINT, handler); - x = 1], - [cf_cv_sig_atomic_t=$cf_type], - [cf_cv_sig_atomic_t=no]) - test "$cf_cv_sig_atomic_t" != no && break - done - ]) -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) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SIZECHANGE version: 8 updated: 2000/11/04 12:22:16 -dnl ------------- -dnl Check for definitions & structures needed for window size-changing -dnl FIXME: check that this works with "snake" (HP-UX 10.x) -AC_DEFUN([CF_SIZECHANGE], -[ -AC_REQUIRE([CF_STRUCT_TERMIOS]) -AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[ - cf_cv_sizechange=unknown - cf_save_CPPFLAGS="$CPPFLAGS" - -for cf_opts in "" "NEED_PTEM_H" -do - - CPPFLAGS="$cf_save_CPPFLAGS" - test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts" - AC_TRY_COMPILE([#include -#ifdef HAVE_TERMIOS_H -#include -#else -#ifdef HAVE_TERMIO_H -#include -#endif -#endif -#ifdef NEED_PTEM_H -/* This is a workaround for SCO: they neglected to define struct winsize in - * termios.h -- it's only in termio.h and ptem.h - */ -#include -#include -#endif -#if !defined(sun) || !defined(HAVE_TERMIOS_H) -#include -#endif -],[ -#ifdef TIOCGSIZE - struct ttysize win; /* FIXME: what system is this? */ - int y = win.ts_lines; - int x = win.ts_cols; -#else -#ifdef TIOCGWINSZ - struct winsize win; - int y = win.ws_row; - int x = win.ws_col; -#else - 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 - test -n "$cf_opts" && cf_cv_sizechange="$cf_opts" - break - fi -done -]) -if test "$cf_cv_sizechange" != no ; then - AC_DEFINE(HAVE_SIZECHANGE) - case $cf_cv_sizechange in #(vi - NEED*) - AC_DEFINE_UNQUOTED($cf_cv_sizechange ) - ;; - esac -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SRC_MODULES version: 21 updated: 2010/09/04 17:37:40 -dnl -------------- -dnl For each parameter, test if the source-directory exists, and if it contains -dnl a 'modules' file. If so, add to the list $cf_cv_src_modules which we'll -dnl use in CF_LIB_RULES. -dnl -dnl This uses the configured value to make the lists SRC_SUBDIRS and -dnl SUB_MAKEFILES which are used in the makefile-generation scheme. -AC_DEFUN([CF_SRC_MODULES], -[ -AC_MSG_CHECKING(for src modules) - -# dependencies and linker-arguments for test-programs -TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS" -TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2" -if test "$DFT_LWR_MODEL" = "libtool"; then - TEST_ARGS="${TEST_DEPS}" - TEST_ARG2="${TEST_DEP2}" -else - TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS" - TEST_ARG2="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARG2" -fi - -cf_cv_src_modules= -for cf_dir in $1 -do - if test -f $srcdir/$cf_dir/modules; then - - # We may/may not have tack in the distribution, though the - # makefile is. - if test $cf_dir = tack ; then - if test ! -f $srcdir/${cf_dir}/${cf_dir}.h; then - continue - fi - fi - - if test -z "$cf_cv_src_modules"; then - cf_cv_src_modules=$cf_dir - else - cf_cv_src_modules="$cf_cv_src_modules $cf_dir" - fi - - # Make the ncurses_cfg.h file record the library interface files as - # well. These are header files that are the same name as their - # directory. Ncurses is the only library that does not follow - # that pattern. - if test $cf_dir = tack ; then - continue - elif test -f $srcdir/${cf_dir}/${cf_dir}.h; then - CF_UPPER(cf_have_include,$cf_dir) - AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H) - AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include}) - TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEPS" - TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${cf_dir}${DFT_DEP_SUFFIX} $TEST_DEP2" - if test "$DFT_LWR_MODEL" = "libtool"; then - TEST_ARGS="${TEST_DEPS}" - TEST_ARG2="${TEST_DEP2}" - else - TEST_ARGS="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARGS" - TEST_ARG2="-l${cf_dir}${DFT_ARG_SUFFIX} $TEST_ARG2" - fi - fi - fi -done -AC_MSG_RESULT($cf_cv_src_modules) - -TEST_ARGS="-L${LIB_DIR} $TEST_ARGS" -TEST_ARG2="-L${LIB_2ND} $TEST_ARG2" - -AC_SUBST(TEST_ARGS) -AC_SUBST(TEST_DEPS) - -AC_SUBST(TEST_ARG2) -AC_SUBST(TEST_DEP2) - -SRC_SUBDIRS= -if test "x$cf_with_manpages" != xno ; then - SRC_SUBDIRS="$SRC_SUBDIRS man" -fi -SRC_SUBDIRS="$SRC_SUBDIRS include" -for cf_dir in $cf_cv_src_modules -do - SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir" -done -if test "x$cf_with_tests" != "xno" ; then - SRC_SUBDIRS="$SRC_SUBDIRS test" -fi -test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc" -test "$cf_with_cxx_binding" != no && SRC_SUBDIRS="$SRC_SUBDIRS c++" - -ADA_SUBDIRS= -if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then - SRC_SUBDIRS="$SRC_SUBDIRS Ada95" - ADA_SUBDIRS="gen src" - if test "x$cf_with_tests" != "xno" ; then - ADA_SUBDIRS="$ADA_SUBDIRS samples" - fi -fi - -SUB_MAKEFILES= -for cf_dir in $SRC_SUBDIRS -do - SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile" -done - -if test -n "$ADA_SUBDIRS"; then - for cf_dir in $ADA_SUBDIRS - do - SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile" - done - AC_SUBST(ADA_SUBDIRS) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_STDCPP_LIBRARY version: 7 updated: 2010/05/29 16:31:02 -dnl ----------------- -dnl Check for -lstdc++, which is GNU's standard C++ library. -AC_DEFUN([CF_STDCPP_LIBRARY], -[ -if test -n "$GXX" ; then -case $cf_cv_system_name in #(vi -os2*) #(vi - cf_stdcpp_libname=stdcpp - ;; -*) - cf_stdcpp_libname=stdc++ - ;; -esac -AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[ - cf_save="$LIBS" - CF_ADD_LIB($cf_stdcpp_libname) -AC_TRY_LINK([ -#include ],[ -char buf[80]; -strstreambuf foo(buf, sizeof(buf)) -], - [cf_cv_libstdcpp=yes], - [cf_cv_libstdcpp=no]) - LIBS="$cf_save" -]) -test "$cf_cv_libstdcpp" = yes && CF_ADD_LIB($cf_stdcpp_libname,CXXLIBS) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_STRIP_G_OPT version: 3 updated: 2002/12/21 19:25:52 -dnl -------------- -dnl Remove "-g" option from the compiler options -AC_DEFUN([CF_STRIP_G_OPT], -[$1=`echo ${$1} | sed -e 's%-g %%' -e 's%-g$%%'`])dnl -dnl --------------------------------------------------------------------------- -dnl CF_STRUCT_SIGACTION version: 3 updated: 2000/08/12 23:18:52 -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. -dnl -dnl If needed, define SVR4_ACTION. -AC_DEFUN([CF_STRUCT_SIGACTION],[ -if test "$ac_cv_func_sigaction" = yes; then -AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE) -AC_TRY_COMPILE([ -#include -#include ], - [struct sigaction act], - [sigact_bad=no], - [ -AC_TRY_COMPILE([ -#define _POSIX_SOURCE -#include -#include ], - [struct sigaction act], - [sigact_bad=yes - AC_DEFINE(SVR4_ACTION)], - [sigact_bad=unknown])]) -AC_MSG_RESULT($sigact_bad) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_STRUCT_TERMIOS version: 5 updated: 2000/11/04 12:22:46 -dnl ----------------- -dnl Some machines require _POSIX_SOURCE to completely define struct termios. -dnl If so, define SVR4_TERMIO -AC_DEFUN([CF_STRUCT_TERMIOS],[ -AC_CHECK_HEADERS( \ -termio.h \ -termios.h \ -unistd.h \ -) -if test "$ISC" = yes ; then - AC_CHECK_HEADERS( sys/termio.h ) -fi -if test "$ac_cv_header_termios_h" = yes ; then - case "$CFLAGS $CPPFLAGS" in - *-D_POSIX_SOURCE*) - termios_bad=dunno ;; - *) termios_bad=maybe ;; - esac - if test "$termios_bad" = maybe ; then - AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE) - AC_TRY_COMPILE([#include ], - [struct termios foo; int x = foo.c_iflag], - termios_bad=no, [ - AC_TRY_COMPILE([ -#define _POSIX_SOURCE -#include ], - [struct termios foo; int x = foo.c_iflag], - termios_bad=unknown, - termios_bad=yes AC_DEFINE(SVR4_TERMIO)) - ]) - AC_MSG_RESULT($termios_bad) - fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SUBDIR_PATH version: 6 updated: 2010/04/21 06:20:50 -dnl -------------- -dnl Construct a search-list for a nonstandard header/lib-file -dnl $1 = the variable to return as result -dnl $2 = the package name -dnl $3 = the subdirectory, e.g., bin, include or lib -AC_DEFUN([CF_SUBDIR_PATH], -[ -$1= - -CF_ADD_SUBDIR_PATH($1,$2,$3,/usr,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE) -CF_ADD_SUBDIR_PATH($1,$2,$3,/usr/local,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,/opt,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,[$]HOME,$prefix) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SUBST version: 4 updated: 2006/06/17 12:33:03 -dnl -------- -dnl Shorthand macro for substituting things that the user may override -dnl with an environment variable. -dnl -dnl $1 = long/descriptive name -dnl $2 = environment variable -dnl $3 = default value -AC_DEFUN([CF_SUBST], -[AC_CACHE_VAL(cf_cv_subst_$2,[ -AC_MSG_CHECKING(for $1 (symbol $2)) -CF_SUBST_IF([-z "[$]$2"], [$2], [$3]) -cf_cv_subst_$2=[$]$2 -AC_MSG_RESULT([$]$2) -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SUBST_IF version: 2 updated: 2006/06/17 12:33:03 -dnl ----------- -dnl Shorthand macro for substituting things that the user may override -dnl with an environment variable. -dnl -dnl $1 = condition to pass to "test" -dnl $2 = environment variable -dnl $3 = value if the test succeeds -dnl $4 = value if the test fails -AC_DEFUN([CF_SUBST_IF], -[ -if test $1 ; then - $2=$3 -ifelse($4,,,[else - $2=$4]) -fi -AC_SUBST($2) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SUBST_NCURSES_VERSION version: 8 updated: 2006/09/16 11:40:59 -dnl ------------------------ -dnl Get the version-number for use in shared-library naming, etc. -AC_DEFUN([CF_SUBST_NCURSES_VERSION], -[ -AC_REQUIRE([CF_PROG_EGREP]) -NCURSES_MAJOR="`$ac_cv_prog_egrep '^NCURSES_MAJOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`" -NCURSES_MINOR="`$ac_cv_prog_egrep '^NCURSES_MINOR[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`" -NCURSES_PATCH="`$ac_cv_prog_egrep '^NCURSES_PATCH[[ ]]*=' $srcdir/dist.mk | sed -e 's/^[[^0-9]]*//'`" -cf_cv_abi_version=${NCURSES_MAJOR} -cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} -dnl Show the computed version, for logging -cf_cv_timestamp=`date` -AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)) -dnl We need these values in the generated headers -AC_SUBST(NCURSES_MAJOR) -AC_SUBST(NCURSES_MINOR) -AC_SUBST(NCURSES_PATCH) -dnl We need these values in the generated makefiles -AC_SUBST(cf_cv_rel_version) -AC_SUBST(cf_cv_abi_version) -AC_SUBST(cf_cv_builtin_bool) -AC_SUBST(cf_cv_header_stdbool_h) -AC_SUBST(cf_cv_type_of_bool)dnl -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SYS_TIME_SELECT version: 4 updated: 2000/10/04 09:18:40 -dnl ------------------ -dnl Check if we can include with ; this breaks on -dnl older SCO configurations. -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([ -#include -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#endif -],[],[cf_cv_sys_time_select=yes], - [cf_cv_sys_time_select=no]) - ]) -AC_MSG_RESULT($cf_cv_sys_time_select) -test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_TOP_BUILDDIR version: 1 updated: 2006/10/15 16:33:23 -dnl --------------- -dnl Define a top_builddir symbol, for applications that need an absolute path. -AC_DEFUN([CF_TOP_BUILDDIR], -[ -top_builddir=`pwd` -AC_SUBST(top_builddir) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_TYPEOF_CHTYPE version: 8 updated: 2006/12/16 12:33:30 -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 -dnl long, but on newer 64-bit machines, probably want an int. If we're using -dnl wide characters, we have to have a type compatible with that, as well. -AC_DEFUN([CF_TYPEOF_CHTYPE], -[ -AC_MSG_CHECKING([for type of chtype]) -AC_CACHE_VAL(cf_cv_typeof_chtype,[ - AC_TRY_RUN([ -#define WANT_BITS 31 -#include -int main() -{ - FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { - char *result = "long"; - if (sizeof(unsigned long) > sizeof(unsigned int)) { - int n; - unsigned int x, y; - for (n = 0; n < WANT_BITS; n++) { - x = (1 << n); - y = (x >> n); - if (y != 1 || x == 0) { - x = 0; - break; - } - } - /* - * If x is nonzero, an int is big enough for the bits - * that we want. - */ - result = (x != 0) ? "int" : "long"; - } - fputs(result, fp); - fclose(fp); - } - ${cf_cv_main_return:-return}(0); -} - ], - [cf_cv_typeof_chtype=`cat cf_test.out`], - [cf_cv_typeof_chtype=long], - [cf_cv_typeof_chtype=long]) - rm -f cf_test.out - ]) -AC_MSG_RESULT($cf_cv_typeof_chtype) - -AC_SUBST(cf_cv_typeof_chtype) -AC_DEFINE_UNQUOTED(TYPEOF_CHTYPE,$cf_cv_typeof_chtype) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_TYPE_SIGACTION version: 3 updated: 2000/08/12 23:18:52 -dnl ----------------- -dnl -AC_DEFUN([CF_TYPE_SIGACTION], -[ -AC_MSG_CHECKING([for type sigaction_t]) -AC_CACHE_VAL(cf_cv_type_sigaction,[ - AC_TRY_COMPILE([ -#include ], - [sigaction_t 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) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_UNSIGNED_LITERALS version: 2 updated: 1998/02/07 22:10:16 -dnl -------------------- -dnl Test if the compiler supports 'U' and 'L' suffixes. Only old compilers -dnl won't, but they're still there. -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], - [cf_cv_unsigned_literals=yes], - [cf_cv_unsigned_literals=no]) - ]) -AC_MSG_RESULT($cf_cv_unsigned_literals) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 -dnl -------- -dnl Make an uppercase version of a variable -dnl $1=uppercase($2) -AC_DEFUN([CF_UPPER], -[ -$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_UTF8_LIB version: 7 updated: 2010/06/20 09:24:28 -dnl ----------- -dnl Check for multibyte support, and if not found, utf8 compatibility library -AC_DEFUN([CF_UTF8_LIB], -[ -AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ - cf_save_LIBS="$LIBS" - AC_TRY_LINK([ -#include ],[putwc(0,0);], - [cf_cv_utf8_lib=yes], - [CF_FIND_LINKAGE([ -#include ],[putwc(0,0);],utf8, - [cf_cv_utf8_lib=add-on], - [cf_cv_utf8_lib=no]) -])]) - -# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between -# ncurses/ncursesw: -if test "$cf_cv_utf8_lib" = "add-on" ; then - AC_DEFINE(HAVE_LIBUTF8_H) - CF_ADD_INCDIR($cf_cv_header_path_utf8) - CF_ADD_LIBDIR($cf_cv_library_path_utf8) - CF_ADD_LIBS($cf_cv_library_file_utf8) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_VA_COPY version: 2 updated: 2010/03/04 05:37:29 -dnl ---------- -dnl check for va_copy, part of stdarg.h -dnl Also, workaround for glibc's __va_copy, by checking for both. -AC_DEFUN([CF_VA_COPY],[ -AC_CACHE_CHECK(for va_copy, cf_cv_have_va_copy,[ -AC_TRY_LINK([ -#include -],[ - static va_list dst; - static va_list src; - va_copy(dst, src)], - cf_cv_have_va_copy=yes, - cf_cv_have_va_copy=no)]) - -test "$cf_cv_have_va_copy" = yes && AC_DEFINE(HAVE_VA_COPY) - -AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[ -AC_TRY_LINK([ -#include -],[ - static va_list dst; - static va_list src; - __va_copy(dst, src)], - cf_cv_have___va_copy=yes, - cf_cv_have___va_copy=no)]) - -test "$cf_cv_have___va_copy" = yes && AC_DEFINE(HAVE___VA_COPY) -]) -dnl --------------------------------------------------------------------------- -dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 -dnl ---------- -dnl Use AC_VERBOSE w/o the warnings -AC_DEFUN([CF_VERBOSE], -[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG -CF_MSG_LOG([$1]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WCHAR_TYPE version: 3 updated: 2010/05/26 16:44:57 -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 -dnl the type is not found. The first parameter sets a shell variable for the -dnl opposite sense. -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([ -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif], - [$1 state], - [cf_cv_$1=no], - [AC_TRY_COMPILE([ -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif], - [$1 value], - [cf_cv_$1=yes], - [cf_cv_$1=unknown])])]) - -if test "$cf_cv_$1" = yes ; then - AC_DEFINE(NEED_WCHAR_H) - NEED_WCHAR_H=1 -fi - -ifelse([$2],,,[ -# if we do not find $1 in either place, use substitution to provide a fallback. -if test "$cf_cv_$1" = unknown ; then - $2=1 -fi -]) -ifelse($3,,,[ -# if we find $1 in either place, use substitution to provide a fallback. -if test "$cf_cv_$1" != unknown ; then - $3=1 -fi -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06 -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([ -#include ], -[ -#if defined(__GNUC__) -# if defined __USE_ISOC99 -# define _cat_pragma(exp) _Pragma(#exp) -# define _weak_pragma(exp) _cat_pragma(weak name) -# else -# define _weak_pragma(exp) -# endif -# define _declare(name) __extension__ extern __typeof__(name) name -# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) -#endif - -weak_symbol(fopen); -],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no]) -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ABI_VERSION version: 1 updated: 2003/09/20 18:12:49 -dnl ------------------- -dnl Allow library's ABI to be overridden. Generally this happens when a -dnl packager has incremented the ABI past that used in the original package, -dnl and wishes to keep doing this. -dnl -dnl $1 is the package name, if any, to derive a corresponding {package}_ABI -dnl symbol. -AC_DEFUN([CF_WITH_ABI_VERSION],[ -test -z "$cf_cv_abi_version" && cf_cv_abi_version=0 -AC_ARG_WITH(abi-version, -[ --with-abi-version=XXX override derived ABI version], -[AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval) - cf_cv_abi_version=$withval]) - CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version) -ifelse($1,,,[ -$1_ABI=$cf_cv_abi_version -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58 -dnl -------------------- -dnl Command-line option to specify the Ada95 compiler. -AC_DEFUN([CF_WITH_ADA_COMPILER],[ -AC_MSG_CHECKING(for ada-compiler) -AC_ARG_WITH(ada-compiler, - [ --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)], - [cf_ada_compiler=$withval], - [cf_ada_compiler=gnatmake]) -AC_SUBST(cf_ada_compiler) -AC_MSG_RESULT($cf_ada_compiler) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58 -dnl ------------------- -dnl Command-line option to specify where Ada includes will install. -AC_DEFUN([CF_WITH_ADA_INCLUDE],[ -AC_MSG_CHECKING(for ada-include) -CF_WITH_PATH(ada-include, - [ --with-ada-include=DIR Ada includes are in DIR], - ADA_INCLUDE, - PREFIX/share/ada/adainclude, - [$]prefix/share/ada/adainclude) -AC_SUBST(ADA_INCLUDE) -AC_MSG_RESULT($ADA_INCLUDE) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58 -dnl ------------------- -dnl Command-line option to specify where Ada objects will install. -AC_DEFUN([CF_WITH_ADA_OBJECTS],[ -AC_MSG_CHECKING(for ada-objects) -CF_WITH_PATH(ada-objects, - [ --with-ada-objects=DIR Ada objects are in DIR], - ADA_OBJECTS, - PREFIX/lib/ada/adalib, - [$]prefix/lib/ada/adalib) -AC_SUBST(ADA_OBJECTS) -AC_MSG_RESULT($ADA_OBJECTS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_ADA_SHAREDLIB version: 2 updated: 2010/06/26 17:35:58 -dnl --------------------- -dnl Command-line option to specify if an Ada95 shared-library should be built, -dnl and optionally what its soname should be. -AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[ -AC_MSG_CHECKING(if an Ada95 shared-library should be built) -AC_ARG_WITH(ada-sharedlib, - [ --with-ada-sharedlib=XX build Ada95 shared-library], - [with_ada_sharedlib=$withval], - [with_ada_sharedlib=no]) -AC_MSG_RESULT($with_ada_sharedlib) - -ADA_SHAREDLIB='lib$(LIB_NAME).so.1' -MAKE_ADA_SHAREDLIB="#" - -if test "x$with_ada_sharedlib" != xno -then - MAKE_ADA_SHAREDLIB= - if test "x$with_ada_sharedlib" != xyes - then - ADA_SHAREDLIB="$with_ada_sharedlib" - fi -fi - -AC_SUBST(ADA_SHAREDLIB) -AC_SUBST(MAKE_ADA_SHAREDLIB) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 -dnl ---------------- -dnl Configure-option for dbmalloc. The optional parameter is used to override -dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. -AC_DEFUN([CF_WITH_DBMALLOC],[ -CF_NO_LEAKS_OPTION(dbmalloc, - [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], - [USE_DBMALLOC]) - -if test "$with_dbmalloc" = yes ; then - AC_CHECK_HEADER(dbmalloc.h, - [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 -dnl --------------- -dnl Configure-option for dmalloc. The optional parameter is used to override -dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. -AC_DEFUN([CF_WITH_DMALLOC],[ -CF_NO_LEAKS_OPTION(dmalloc, - [ --with-dmalloc test: use Gray Watson's dmalloc library], - [USE_DMALLOC]) - -if test "$with_dmalloc" = yes ; then - AC_CHECK_HEADER(dmalloc.h, - [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_GPM version: 7 updated: 2008/03/23 14:48:54 -dnl ----------- -dnl -dnl The option parameter (if neither yes/no) is assumed to be the name of -dnl the gpm library, e.g., for dynamic loading. -AC_DEFUN([CF_WITH_GPM], -[ -AC_MSG_CHECKING(if you want to link with the GPM mouse library) -AC_ARG_WITH(gpm, - [ --with-gpm use Alessandro Rubini's GPM library], - [with_gpm=$withval], - [with_gpm=maybe]) -AC_MSG_RESULT($with_gpm) - -if test "$with_gpm" != no ; then - AC_CHECK_HEADER(gpm.h,[ - AC_DEFINE(HAVE_GPM_H) - if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then - CF_VERBOSE(assuming we really have GPM library) - AC_DEFINE(HAVE_LIBGPM) - else - AC_CHECK_LIB(gpm,Gpm_Open,[:],[ - AC_MSG_ERROR(Cannot link with GPM library) - fi - with_gpm=yes - ]) - ],[ - test "$with_gpm" != maybe && AC_MSG_WARN(Cannot find GPM header) - with_gpm=no - ]) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_WITH_LIBTOOL version: 26 updated: 2010/10/23 15:55:24 -dnl --------------- -dnl Provide a configure option to incorporate libtool. Define several useful -dnl symbols for the makefile rules. -dnl -dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses -dnl macros from libtool.m4 which is in the aclocal directory of automake. -dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro. -dnl But that still does not work properly since the macro is expanded outside -dnl the CF_WITH_LIBTOOL macro: -dnl -dnl #!/bin/sh -dnl ACLOCAL=`aclocal --print-ac-dir` -dnl if test -z "$ACLOCAL" ; then -dnl echo cannot find aclocal directory -dnl exit 1 -dnl elif test ! -f $ACLOCAL/libtool.m4 ; then -dnl echo cannot find libtool.m4 file -dnl exit 1 -dnl fi -dnl -dnl LOCAL=aclocal.m4 -dnl ORIG=aclocal.m4.orig -dnl -dnl trap "mv $ORIG $LOCAL" 0 1 2 5 15 -dnl rm -f $ORIG -dnl mv $LOCAL $ORIG -dnl -dnl # sed the LIBTOOL= assignment to omit the current directory? -dnl sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL:-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL -dnl cat $ORIG >>$LOCAL -dnl -dnl autoconf-257 $* -dnl -AC_DEFUN([CF_WITH_LIBTOOL], -[ -AC_REQUIRE([CF_DISABLE_LIBTOOL_VERSION]) -ifdef([AC_PROG_LIBTOOL],,[ -LIBTOOL= -]) -# common library maintenance symbols that are convenient for libtool scripts: -LIB_CREATE='${AR} -cr' -LIB_OBJECT='${OBJECTS}' -LIB_SUFFIX=.a -LIB_PREP="$RANLIB" - -# symbols used to prop libtool up to enable it to determine what it should be -# doing: -LIB_CLEAN= -LIB_COMPILE= -LIB_LINK='${CC}' -LIB_INSTALL= -LIB_UNINSTALL= - -AC_MSG_CHECKING(if you want to build libraries with libtool) -AC_ARG_WITH(libtool, - [ --with-libtool generate libraries with libtool], - [with_libtool=$withval], - [with_libtool=no]) -AC_MSG_RESULT($with_libtool) -if test "$with_libtool" != "no"; then -ifdef([AC_PROG_LIBTOOL],[ - # missing_content_AC_PROG_LIBTOOL{{ - AC_PROG_LIBTOOL - # missing_content_AC_PROG_LIBTOOL}} -],[ - if test "$with_libtool" != "yes" ; then - CF_PATH_SYNTAX(with_libtool) - LIBTOOL=$with_libtool - else - AC_PATH_PROG(LIBTOOL,libtool) - fi - if test -z "$LIBTOOL" ; then - AC_MSG_ERROR(Cannot find libtool) - fi -])dnl - LIB_CREATE='${LIBTOOL} --mode=link ${CC} -rpath ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} -o' - LIB_OBJECT='${OBJECTS:.o=.lo}' - LIB_SUFFIX=.la - LIB_CLEAN='${LIBTOOL} --mode=clean' - LIB_COMPILE='${LIBTOOL} --mode=compile' - LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}' - LIB_INSTALL='${LIBTOOL} --mode=install' - LIB_UNINSTALL='${LIBTOOL} --mode=uninstall' - LIB_PREP=: - - # Show the version of libtool - AC_MSG_CHECKING(version of libtool) - - # Save the version in a cache variable - this is not entirely a good - # thing, but the version string from libtool is very ugly, and for - # bug reports it might be useful to have the original string. "(" - 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.]].*//'` - AC_MSG_RESULT($cf_cv_libtool_version) - if test -z "$cf_cv_libtool_version" ; then - AC_MSG_ERROR(This is not GNU libtool) - fi - - # special hack to add -no-undefined (which libtool should do for itself) - LT_UNDEF= - case "$cf_cv_system_name" in #(vi - cygwin*|mingw32*|uwin*|aix[[456]]) #(vi - LT_UNDEF=-no-undefined - ;; - esac - AC_SUBST([LT_UNDEF]) - - # special hack to add --tag option for C++ compiler - case $cf_cv_libtool_version in #(vi - 1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*) #(vi - LIBTOOL_CXX="$LIBTOOL --tag=CXX" - LIBTOOL="$LIBTOOL --tag=CC" - ;; - *) - LIBTOOL_CXX="$LIBTOOL" - ;; - esac -else - LIBTOOL="" - LIBTOOL_CXX="" -fi - -test -z "$LIBTOOL" && ECHO_LT= - -AC_SUBST(LIBTOOL) -AC_SUBST(LIBTOOL_CXX) -AC_SUBST(LIBTOOL_OPTS) - -AC_SUBST(LIB_CREATE) -AC_SUBST(LIB_OBJECT) -AC_SUBST(LIB_SUFFIX) -AC_SUBST(LIB_PREP) - -AC_SUBST(LIB_CLEAN) -AC_SUBST(LIB_COMPILE) -AC_SUBST(LIB_LINK) -AC_SUBST(LIB_INSTALL) -AC_SUBST(LIB_UNINSTALL) - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_PATH version: 10 updated: 2010/10/23 15:44:18 -dnl ------------ -dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just -dnl defaulting to yes/no. -dnl -dnl $1 = option name -dnl $2 = help-text -dnl $3 = environment variable to set -dnl $4 = default value, shown in the help-message, must be a constant -dnl $5 = default value, if it's an expression & cannot be in the help-message -dnl -AC_DEFUN([CF_WITH_PATH], -[AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),, -ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl -if ifelse([$5],,true,[test -n "$5"]) ; then -CF_PATH_SYNTAX(withval) -fi -$3="$withval" -AC_SUBST($3)dnl -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_PATHLIST version: 7 updated: 2010/10/23 16:10:30 -dnl ---------------- -dnl Process an option specifying a list of colon-separated paths. -dnl -dnl $1 = option name -dnl $2 = help-text -dnl $3 = environment variable to set -dnl $4 = default value, shown in the help-message, must be a constant -dnl $5 = default value, if it's an expression & cannot be in the help-message -dnl $6 = flag to tell if we want to define or substitute -dnl -AC_DEFUN([CF_WITH_PATHLIST],[ -AC_REQUIRE([CF_PATHSEP]) -AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),, -ifelse($4,,[withval=${$3}],[withval=${$3:-ifelse($5,,$4,$5)}]))dnl - -IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}" -cf_dst_path= -for cf_src_path in $withval -do - CF_PATH_SYNTAX(cf_src_path) - test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:" - cf_dst_path="${cf_dst_path}${cf_src_path}" -done -IFS="$ac_save_ifs" - -ifelse($6,define,[ -# Strip single quotes from the value, e.g., when it was supplied as a literal -# for $4 or $5. -case $cf_dst_path in #(vi -\'*) - cf_dst_path=`echo $cf_dst_path |sed -e s/\'// -e s/\'\$//` - ;; -esac -cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'` -]) - -eval '$3="$cf_dst_path"' -AC_SUBST($3)dnl - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_PTHREAD version: 3 updated: 2010/05/29 16:31:02 -dnl --------------- -dnl Check for POSIX thread library. -AC_DEFUN([CF_WITH_PTHREAD], -[ -AC_MSG_CHECKING(if you want to link with the pthread library) -AC_ARG_WITH(pthread, - [ --with-pthread use POSIX thread library], - [with_pthread=$withval], - [with_pthread=no]) -AC_MSG_RESULT($with_pthread) - -if test "$with_pthread" != no ; then - AC_CHECK_HEADER(pthread.h,[ - AC_DEFINE(HAVE_PTHREADS_H) - - AC_MSG_CHECKING(if we can link with the pthread library) - cf_save_LIBS="$LIBS" - CF_ADD_LIB(pthread) - AC_TRY_LINK([ -#include -],[ - int rc = pthread_create(0,0,0,0); -],[with_pthread=yes],[with_pthread=no]) - LIBS="$cf_save_LIBS" - AC_MSG_RESULT($with_pthread) - - if test "$with_pthread" = yes ; then - CF_ADD_LIB(pthread) - AC_DEFINE(HAVE_LIBPTHREADS) - else - AC_MSG_ERROR(Cannot link with pthread library) - fi - ]) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49 -dnl ------------------- -dnl Allow library's release-version to be overridden. Generally this happens when a -dnl packager has incremented the release-version past that used in the original package, -dnl and wishes to keep doing this. -dnl -dnl $1 is the package name, if any, to derive corresponding {package}_MAJOR -dnl and {package}_MINOR symbols -dnl symbol. -AC_DEFUN([CF_WITH_REL_VERSION],[ -test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0 -AC_ARG_WITH(rel-version, -[ --with-rel-version=XXX override derived release version], -[AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval) - cf_cv_rel_version=$withval]) -ifelse($1,,[ - CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version) -],[ - $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'` - $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'` - CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version) - CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version) -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_SYSMOUSE version: 2 updated: 2003/03/22 19:13:43 -dnl ---------------- -dnl If we can compile with sysmouse, make it available unless it is not wanted. -AC_DEFUN([CF_WITH_SYSMOUSE],[ -# not everyone has "test -c" -if test -c /dev/sysmouse 2>/dev/null ; then -AC_MSG_CHECKING(if you want to use sysmouse) -AC_ARG_WITH(sysmouse, - [ --with-sysmouse use sysmouse (FreeBSD console)], - [cf_with_sysmouse=$withval], - [cf_with_sysmouse=maybe]) - if test "$cf_with_sysmouse" != no ; then - AC_TRY_COMPILE([ -#include -#if (__FreeBSD_version >= 400017) -#include -#include -#else -#include -#endif -],[ - struct mouse_info the_mouse; - ioctl(0, CONS_MOUSECTL, &the_mouse); -],[cf_with_sysmouse=yes],[cf_with_sysmouse=no]) - fi -AC_MSG_RESULT($cf_with_sysmouse) -test "$cf_with_sysmouse" = yes && AC_DEFINE(USE_SYSMOUSE) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 -dnl ---------------- -AC_DEFUN([CF_WITH_VALGRIND],[ -CF_NO_LEAKS_OPTION(valgrind, - [ --with-valgrind test: use valgrind], - [USE_VALGRIND]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_XOPEN_SOURCE version: 35 updated: 2011/02/20 20:37:37 -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, -dnl without losing the common non-POSIX features. -dnl -dnl Parameters: -dnl $1 is the nominal value for _XOPEN_SOURCE -dnl $2 is the nominal value for _POSIX_C_SOURCE -AC_DEFUN([CF_XOPEN_SOURCE],[ - -cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) -cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) -cf_xopen_source= - -case $host_os in #(vi -aix[[456]]*) #(vi - cf_xopen_source="-D_ALL_SOURCE" - ;; -cygwin) #(vi - cf_XOPEN_SOURCE=600 - ;; -darwin[[0-8]].*) #(vi - cf_xopen_source="-D_APPLE_C_SOURCE" - ;; -darwin*) #(vi - cf_xopen_source="-D_DARWIN_C_SOURCE" - ;; -freebsd*|dragonfly*) #(vi - # 5.x headers associate - # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L - # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L - cf_POSIX_C_SOURCE=200112L - cf_XOPEN_SOURCE=600 - cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -hpux11*) #(vi - cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" - ;; -hpux*) #(vi - cf_xopen_source="-D_HPUX_SOURCE" - ;; -irix[[56]].*) #(vi - cf_xopen_source="-D_SGI_SOURCE" - ;; -linux*|gnu*|mint*|k*bsd*-gnu) #(vi - CF_GNU_SOURCE - ;; -mirbsd*) #(vi - # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks - ;; -netbsd*) #(vi - # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw - ;; -openbsd*) #(vi - # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw - ;; -osf[[45]]*) #(vi - cf_xopen_source="-D_OSF_SOURCE" - ;; -nto-qnx*) #(vi - cf_xopen_source="-D_QNX_SOURCE" - ;; -sco*) #(vi - # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer - ;; -solaris2.1[[0-9]]) #(vi - cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -solaris2.[[1-9]]) #(vi - cf_xopen_source="-D__EXTENSIONS__" - ;; -*) - AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ - AC_TRY_COMPILE([#include ],[ -#ifndef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - AC_TRY_COMPILE([#include ],[ -#ifdef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) - CPPFLAGS="$cf_save" - ]) -]) - if test "$cf_cv_xopen_source" != no ; then - CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) - CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) - cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" - CF_ADD_CFLAGS($cf_temp_xopen_source) - fi - CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) - ;; -esac - -if test -n "$cf_xopen_source" ; then - CF_ADD_CFLAGS($cf_xopen_source) -fi -]) diff --git a/deps/ncurses-5.9/announce.html.in b/deps/ncurses-5.9/announce.html.in deleted file mode 100644 index e385204..0000000 --- a/deps/ncurses-5.9/announce.html.in +++ /dev/null @@ -1,389 +0,0 @@ - - - - - - - - Announcing ncurses @VERSION@ - - - - - -

Announcing ncurses @VERSION@

The ncurses (new curses) - library is a free software emulation of curses in System V - Release 4.0, and more. It uses terminfo format, supports pads and - color and multiple highlights and forms characters and - function-key mapping, and has all the other SYSV-curses - enhancements over BSD curses. - -

In mid-June 1995, the maintainer of 4.4BSD curses declared - that he considered 4.4BSD curses obsolete, and encouraged the - keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to - switch over to ncurses.

- -

The ncurses code was developed under GNU/Linux. It has been in - use for some time with OpenBSD as the system curses library, and - on FreeBSD and NetBSD as an external package. It should port - easily to any ANSI/POSIX-conforming UNIX. It has even been ported - to OS/2 Warp!

- -

The distribution includes the library and support utilities, - including a terminfo compiler tic(1), a decompiler infocmp(1), - clear(1), tput(1), tset(1), and a termcap conversion tool - captoinfo(1). Full manual pages are provided for the library and - tools.

- -

The ncurses distribution is available via anonymous FTP at the - GNU distribution site ftp://ftp.gnu.org/gnu/ncurses/ .
- - It is also available at ftp://invisible-island.net/ncurses/ .

- -

Release Notes

This release is designed to be upward - compatible from ncurses 5.0 through 5.8; very few applications - will require recompilation, depending on the platform. These are - the highlights from the change-log since ncurses 5.8 release. -

- This is a bug-fix release, correcting a small number of urgent problems - in the ncurses library from the 5.8 release. -

- It also improves the Ada95 binding: -

    -
  • fixes a longstanding portability problem with its use of the - set_field_type - function. Because that function uses variable-length argument lists, - its interface with gnat does not work with certain platforms. -
  • improves configurability and portability, particularly when built - separately from the main ncurses tree. The 5.8 release introduced - scripts which can be used to construct separate tarballs for the - Ada95 and ncurses examples. -

    Those were a proof of concept. For the 5.9 release, those - scripts are augmented with rpm- and dpkg-scripts used in test builds - against a variety of gnat- and system ncurses versions as old as - gnat 3.15 and ncurses 5.4 (see snapshots and systems tested - here. -

  • additional improvements were made for portability of the - ncurses examples, adding rpm- and dpkg-scripts for test-builds. - See - this page - for snapshots and other information. -
- -

Features of Ncurses

The ncurses package is fully - compatible with SVr4 (System V Release 4) curses: - -
    -
  • All 257 of the SVr4 calls have been implemented (and are - documented).
  • - -
  • Full support for SVr4 curses features including keyboard - mapping, color, forms-drawing with ACS characters, and - automatic recognition of keypad and function keys.
  • - -
  • An emulation of the SVr4 panels library, supporting a stack - of windows with backing store, is included.
  • - -
  • An emulation of the SVr4 menus library, supporting a - uniform but flexible interface for menu programming, is - included.
  • - -
  • An emulation of the SVr4 form library, supporting data - collection through on-screen forms, is included.
  • - -
  • Binary terminfo entries generated by the ncurses tic(1) - implementation are bit-for-bit-compatible with the entry format - SVr4 curses uses.
  • - -
  • The utilities have options to allow you to filter terminfo - entries for use with less capable - curses/terminfo versions such - as the HP/UX and AIX ports.
  • -
The ncurses package also has many useful extensions over - SVr4: - -
    -
  • The API is 8-bit clean and base-level conformant with the - X/OPEN curses specification, XSI curses (that is, it implements - all BASE level features, and most EXTENDED features). It - includes many function calls not supported under SVr4 curses - (but portability of all calls is documented so you can use the - SVr4 subset only).
  • - -
  • Unlike SVr3 curses, ncurses can write to the - rightmost-bottommost corner of the screen if your terminal has - an insert-character capability.
  • - -
  • Ada95 and C++ bindings.
  • - -
  • Support for mouse event reporting with X Window xterm and - FreeBSD and OS/2 console windows.
  • - -
  • Extended mouse support via Alessandro Rubini's gpm - package.
  • - -
  • The function wresize allows you to resize - windows, preserving their data.
  • - -
  • The function use_default_colors allows you to - use the terminal's default colors for the default color pair, - achieving the effect of transparent colors.
  • - -
  • The functions keyok and - define_key allow you to better control the use of - function keys, e.g., disabling the ncurses KEY_MOUSE, or by - defining more than one control sequence to map to a given key - code.
  • - -
  • Support for 256-color terminals, such as modern xterm, when - configured using the --enable-ext-colors - option.
  • - -
  • Support for 16-color terminals, such as aixterm - and modern xterm.
  • - -
  • Better cursor-movement optimization. The package now - features a cursor-local-movement computation more efficient - than either BSD's or System V's.
  • - -
  • Super hardware scrolling support. The screen-update code - incorporates a novel, simple, and cheap algorithm that enables - it to make optimal use of hardware scrolling, line-insertion, - and line-deletion for screen-line movements. This algorithm is - more powerful than the 4.4BSD curses quickch - routine.
  • - -
  • Real support for terminals with the magic-cookie glitch. - The screen-update code will refrain from drawing a highlight if - the magic- cookie unattributed spaces required just before the - beginning and after the end would step on a non-space - character. It will automatically shift highlight boundaries - when doing so would make it possible to draw the highlight - without changing the visual appearance of the screen.
  • - -
  • It is possible to generate the library with a list of - pre-loaded fallback entries linked to it so that it can serve - those terminal types even when no terminfo tree or termcap file - is accessible (this may be useful for support of - screen-oriented programs that must run in single-user - mode).
  • - -
  • The tic(1)/captoinfo utility provided with ncurses has the - ability to translate many termcaps from the XENIX, IBM and - AT&T extension sets.
  • - -
  • A BSD-like tset(1) utility is provided.
  • - -
  • The ncurses library and utilities will automatically read - terminfo entries from $HOME/.terminfo if it exists, and compile - to that directory if it exists and the user has no write access - to the system directory. This feature makes it easier for users - to have personal terminfo entries without giving up access to - the system terminfo directory.
  • - -
  • You may specify a path of directories to search for - compiled descriptions with the environment variable - TERMINFO_DIRS (this generalizes the feature provided by - TERMINFO under stock System V.)
  • - -
  • In terminfo source files, use capabilities may refer not - just to other entries in the same source file (as in System V) - but also to compiled entries in either the system terminfo - directory or the user's $HOME/.terminfo directory.
  • - -
  • A script (capconvert) is provided to help - BSD users transition from termcap to terminfo. It gathers the - information in a TERMCAP environment variable and/or a - ~/.termcap local entries file and converts it to an equivalent - local terminfo tree under $HOME/.terminfo.
  • - -
  • Automatic fallback to the /etc/termcap file can be compiled - in when it is not possible to build a terminfo tree. This - feature is neither fast nor cheap, you don't want to use it - unless you have to, but it's there.
  • - -
  • The table-of-entries utility toe makes it - easy for users to see exactly what terminal types are available - on the system.
  • - -
  • The library meets the XSI requirement that every macro - entry point have a corresponding function which may be linked - (and will be prototype-checked) if the macro definition is - disabled with #undef.
  • - -
  • An HTML "Introduction to Programming with NCURSES" document - provides a narrative introduction to the curses programming - interface.
  • -
- -

State of the Package

Numerous bugs present in earlier - versions have been fixed; the library is far more reliable than - it used to be. Bounds checking in many `dangerous' entry points - has been improved. The code is now type-safe according to gcc - -Wall. The library has been checked for malloc leaks and arena - corruption by the Purify memory-allocation tester. - -

The ncurses code has been tested with a wide variety of - applications including (versions starting with those noted):

- -
-
cdk
- -
Curses Development Kit
- http://invisible-island.net/cdk/
- - http://www.vexus.ca/products/CDK/
- -
ded
- -
directory-editor
- http://invisible-island.net/ded/
- -
dialog
- -
the underlying application used in Slackware's setup, and - the basis for similar applications on GNU/Linux.
- http://invisible-island.net/dialog/
- -
lynx
- -
the character-screen WWW browser
- http://lynx.isc.org/release/
- -
Midnight Commander
- -
file manager
- http://www.midnight-commander.org/
- -
mutt
- -
mail utility
- http://www.mutt.org/
- -
ncftp
- -
file-transfer utility
- http://www.ncftp.com/
- -
nvi
- -
New vi versions 1.50 are able to use ncurses versions 1.9.7 - and later.
- https://sites.google.com/a/bostic.com/keithbostic/nvi
-
- -
pinfo
- -
Lynx-like info browser. https://alioth.debian.org/projects/pinfo/
- -
tin
- -
newsreader, supporting color, MIME http://www.tin.org/
-
as well as some that use ncurses for the terminfo support - alone: - -
-
minicom
- -
terminal emulator
- http://alioth.debian.org/projects/minicom/
- -
vile
- -
vi-like-emacs
- http://invisible-island.net/vile/
-
- -

The ncurses distribution includes a selection of test programs - (including a few games).

- -

Who's Who and What's What

Zeyd Ben-Halim started it from - a previous package pcurses, written by Pavel Curtis. Eric S. - Raymond continued development. Jürgen Pfeifer wrote most of - the form and menu libraries. Ongoing work is being done by - Thomas Dickey. - Thomas Dickey acts as the maintainer for the Free Software - Foundation, which holds the copyright on ncurses. Contact the - current maintainers at bug-ncurses@gnu.org. - -

To join the ncurses mailing list, please write email to - bug-ncurses-request@gnu.org containing the line:

-
-             subscribe <name>@<host.domain>
-
- -

This list is open to anyone interested in helping with the - development and testing of this package.

- -

Beta versions of ncurses and patches to the current release - are made available at ftp://invisible-island.net/ncurses/ .

- -

Future Plans

- -
    -
  • Extended-level XPG4 conformance, with internationalization - support.
  • - -
  • Ports to more systems, including DOS and Windows.
  • -
We need people to help with these projects. If you are - interested in working on them, please join the ncurses list. - -

Other Related Resources

The distribution provides a newer - version of the terminfo-format terminal description file once - maintained by Eric - Raymond . Unlike the older version, the termcap and - terminfo data are provided in the same file, and provides several - user-definable extensions beyond the X/Open specification. - -

You can find lots of information on terminal-related topics - not covered in the terminfo file at - Richard Shuford's archive .

- - diff --git a/deps/ncurses-5.9/c++/Makefile b/deps/ncurses-5.9/c++/Makefile deleted file mode 100644 index 0c100c5..0000000 --- a/deps/ncurses-5.9/c++/Makefile +++ /dev/null @@ -1,404 +0,0 @@ -# $Id: Makefile.in,v 1.93 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey -# -# Simple makefile for c++ window class demo - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - - -CF_MFLAGS = - -x = -o = .o - -MODEL = ../objects -DESTDIR = -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include/ncurses - -LIBTOOL = -LIBTOOL_CLEAN = -LIBTOOL_COMPILE = -LIBTOOL_LINK = ${CC} -LIBTOOL_INSTALL = -LIBTOOL_UNINSTALL = -LIBTOOL_VERSION = -version-number -LT_UNDEF = - -INSTALL = /bin/install -c -INSTALL_LIB = /bin/install -c -m 644 -INSTALL_DATA = ${INSTALL} -m 644 - -AR = ar -ARFLAGS = -curv - -CXX_AR = $(AR) -CXX_ARFLAGS = $(ARFLAGS) -RANLIB = ranlib - -CXX = /bin/g++ -CPP = /bin/g++ -E -CXXFLAGS = -w -O2 -fPIC -CXXLIBS = - -INCDIR = ../include -CPPFLAGS = -I../c++ -I$(INCDIR) -I$(srcdir) -DHAVE_CONFIG_H -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} - -CTAGS = -ETAGS = - -CC = ${CXX} -CCFLAGS = $(CPPFLAGS) $(CXXFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) -g -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) -fPIC - -CFLAGS_DEFAULT = $(CFLAGS_NORMAL) - -NCURSES_MAJOR = 5 -NCURSES_MINOR = 9 -REL_VERSION = 5.9 -ABI_VERSION = 5 - -LOCAL_LIBDIR = /home/martino/avrdude-build-script/ncurses-5.9/lib - -LINK = $(LIBTOOL_LINK) -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lform -lmenu -lpanel -lncurses -ldl -ltinfo - -LIBROOT = ncurses++ - -LIBNAME_LIBTOOL = lib$(LIBROOT).la -LIBNAME_NORMAL = lib$(LIBROOT).a -LIBNAME = lib$(LIBROOT).a - -MY_LIBRARY = ../lib/$(LIBNAME) - -LINK_FLAGS = -L../lib -l$(LIBROOT) - -LINK_LIBTOOL = -L../lib $(MY_LIBRARY) -LINK_NORMAL = $(LINK_FLAGS) -LINK_DEBUG = $(LINK_FLAGS) -LINK_PROFILE = $(LINK_FLAGS) -LINK_SHARED = $(LINK_FLAGS) - -TEST_LIBS = -lutil -TEST_ARGS = -static -L../lib -lform -lmenu -lpanel -lncurses -ltinfo -dynamic - -LDFLAGS = $(TEST_ARGS) -s -fPIC \ - $(TEST_LIBS) -ldl $(CXXLIBS) - -LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) -LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) -LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) -LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) -LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) - -LDFLAGS_DEFAULT = $(LINK_NORMAL) $(LDFLAGS_NORMAL) - -AUTO_SRC = \ - etip.h - -all \ -libs :: $(AUTO_SRC) $(MY_LIBRARY) - -all :: demo$x - -sources : $(AUTO_SRC) - -depend : - -tags: - $(CTAGS) *.[h] *.cc - -# Build a conventional library for installing, since a shared library would -# pull in all of the ncurses libraries (panel, menu, form, ncurses) as direct -# dependencies. -LIB_OBJS = \ - $(MODEL)/cursesf$o \ - $(MODEL)/cursesm$o \ - $(MODEL)/cursesw$o \ - $(MODEL)/cursespad$o \ - $(MODEL)/cursesp$o \ - $(MODEL)/cursslk$o \ - $(MODEL)/cursesapp$o \ - $(MODEL)/cursesmain$o - -../lib/$(LIBNAME_NORMAL) : $(LIB_OBJS) - $(CXX_AR) $(CXX_ARFLAGS) $@ $? - $(RANLIB) $@ - -../lib/$(LIBNAME_LIBTOOL) : $(LIB_OBJS) - cd ../lib && $(LIBTOOL_LINK) $(CXX) $(CXXFLAGS) \ - -o $(LIBNAME) $(LIB_OBJS:$o=.lo) \ - -rpath $(INSTALL_PREFIX)$(libdir) \ - $(LIBTOOL_VERSION) $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(SHLIB_LIST) - -OBJS_DEMO = $(MODEL)/demo$o - -$(MODEL)/demo$o : $(srcdir)/demo.cc \ - $(cursesf_h) $(cursesm_h) $(cursesapp_h) - -demo$x: $(OBJS_DEMO) \ - $(MY_LIBRARY) \ - ../lib/libform.a ../lib/libmenu.a ../lib/libpanel.a ../lib/libncurses.a ../lib/libtinfo.a - $(LINK) -o $@ $(OBJS_DEMO) $(LDFLAGS_DEFAULT) - -etip.h: $(srcdir)/etip.h.in $(srcdir)/edit_cfg.sh - cp $(srcdir)/etip.h.in $@ - sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ - -$(DESTDIR)$(libdir) : - mkdir -p $@ - -install \ -install.libs:: $(MY_LIBRARY) $(DESTDIR)$(libdir) - $(LIBTOOL_INSTALL) $(INSTALL_LIB) $(MY_LIBRARY) $(DESTDIR)$(libdir)/$(LIBNAME) - -uninstall \ -uninstall.libs:: - -$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(libdir)/$(LIBNAME) - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ii *.ln *.atac trace - -clean :: mostlyclean - -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" - -rm -rf $(MODEL)/SunWS_cache - -$(LIBTOOL_CLEAN) rm -f demo$x $(AUTO_SRC) $(MY_LIBRARY) $(LIB_OBJS) $(OBJS_DEMO) - -rm -rf .libs - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -############################################################################### - -cursesw_h = $(srcdir)/cursesw.h \ - etip.h \ - $(INCDIR)/curses.h - -cursesp_h = $(srcdir)/cursesp.h \ - $(cursesw_h) \ - $(INCDIR)/panel.h - -cursesf_h = $(srcdir)/cursesf.h \ - $(cursesp_h) \ - $(INCDIR)/form.h - -cursesm_h = $(srcdir)/cursesm.h \ - $(cursesp_h) \ - $(INCDIR)/menu.h - -cursslk_h = $(srcdir)/cursslk.h \ - $(cursesw_h) - -cursesapp_h = $(srcdir)/cursesapp.h \ - $(cursslk_h) - -$(INCDIR)/form.h : - cd ../form && $(MAKE) $@ - -$(INCDIR)/menu.h : - cd ../menu && $(MAKE) $@ - -$(INCDIR)/panel.h : - cd ../panel && $(MAKE) $@ - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### - -# generated by mk-0th.awk -# libname: c++ -# subsets: ticlib+termlib+ext_tinfo base+ext_funcs - -.SUFFIXES: .c .cc .h .i .ii -.c.i : - $(CPP) $(CPPFLAGS) $< >$@ -.cc.ii : - $(CPP) $(CPPFLAGS) $< >$@ -.h.i : - $(CPP) $(CPPFLAGS) $< >$@ - -C_SRC = \ - $(srcdir)/cursesf.cc \ - $(srcdir)/cursesm.cc \ - $(srcdir)/cursesp.cc \ - $(srcdir)/cursesw.cc \ - $(srcdir)/cursespad.cc \ - $(srcdir)/cursslk.cc \ - $(srcdir)/cursesapp.cc \ - $(srcdir)/cursesmain.cc \ - $(srcdir)/demo.cc - -lintlib : - @echo no action needed - - - -# generated by mk-1st.awk (subset=base+ext_funcs) -# name: c++ -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: base+ext_funcs -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h -# host: x86_64-unknown-linux-gnu - -NORMAL_OBJS = \ - ../objects/cursesf$o \ - ../objects/cursesm$o \ - ../objects/cursesp$o \ - ../objects/cursesw$o \ - ../objects/cursespad$o \ - ../objects/cursslk$o \ - ../objects/cursesapp$o \ - ../objects/cursesmain$o \ - ../objects/demo$o - -$(NORMAL_OBJS) : ../include/ncurses_cfg.h - -mostlyclean:: - -rm -f $(NORMAL_OBJS) - -clean :: - -rm -f $(NORMAL_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: base+ext_funcs -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/cursesf$o : $(srcdir)/cursesf.cc \ - $(cursesf_h) \ - $(cursesapp_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursesf.cc -o ../objects/cursesf$o - -../objects/cursesm$o : $(srcdir)/cursesm.cc \ - $(cursesm_h) \ - $(cursesapp_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursesm.cc -o ../objects/cursesm$o - -../objects/cursesp$o : $(srcdir)/cursesp.cc \ - $(cursesp_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursesp.cc -o ../objects/cursesp$o - -../objects/cursesw$o : $(srcdir)/cursesw.cc \ - $(cursesw_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursesw.cc -o ../objects/cursesw$o - -../objects/cursespad$o : $(srcdir)/cursespad.cc \ - $(cursesw_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursespad.cc -o ../objects/cursespad$o - -../objects/cursslk$o : $(srcdir)/cursslk.cc \ - $(cursslk_h) \ - $(cursesapp_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursslk.cc -o ../objects/cursslk$o - -../objects/cursesapp$o : $(srcdir)/cursesapp.cc \ - $(cursesapp_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursesapp.cc -o ../objects/cursesapp$o - -../objects/cursesmain$o : $(srcdir)/cursesmain.cc \ - $(cursesapp_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/cursesmain.cc -o ../objects/cursesmain$o - -../objects/demo$o : $(srcdir)/demo.cc \ - $(cursesf_h) \ - $(cursesm_h) \ - $(cursesapp_h) - $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_NORMAL) -c ../c++/demo.cc -o ../objects/demo$o - - -# generated by mk-hdr.awk -# subset: ticlib+termlib+ext_tinfo base+ext_funcs -# compat: yes - -${DESTDIR}${includedir} : - mkdir -p $@ - -install \ -install.libs \ -install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \ - $(srcdir)/cursesapp.h \ - $(srcdir)/cursesf.h \ - $(srcdir)/cursesm.h \ - $(srcdir)/cursesp.h \ - $(srcdir)/cursesw.h \ - $(srcdir)/cursslk.h \ - etip.h - @ (cd ${DESTDIR}${includedir} && rm -f cursesapp.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/cursesapp.h - @ (cd ${DESTDIR}${includedir} && rm -f cursesf.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/cursesf.h - @ (cd ${DESTDIR}${includedir} && rm -f cursesm.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/cursesm.h - @ (cd ${DESTDIR}${includedir} && rm -f cursesp.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/cursesp.h - @ (cd ${DESTDIR}${includedir} && rm -f cursesw.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/cursesw.h - @ (cd ${DESTDIR}${includedir} && rm -f cursslk.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/cursslk.h - @ (cd ${DESTDIR}${includedir} && rm -f etip.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} etip.h - -uninstall \ -uninstall.libs \ -uninstall.includes :: - -@ (cd ${DESTDIR}${includedir} && rm -f cursesapp.h) - -@ (cd ${DESTDIR}${includedir} && rm -f cursesf.h) - -@ (cd ${DESTDIR}${includedir} && rm -f cursesm.h) - -@ (cd ${DESTDIR}${includedir} && rm -f cursesp.h) - -@ (cd ${DESTDIR}${includedir} && rm -f cursesw.h) - -@ (cd ${DESTDIR}${includedir} && rm -f cursslk.h) - -@ (cd ${DESTDIR}${includedir} && rm -f etip.h) diff --git a/deps/ncurses-5.9/c++/Makefile.in b/deps/ncurses-5.9/c++/Makefile.in deleted file mode 100644 index 6fd8ffc..0000000 --- a/deps/ncurses-5.9/c++/Makefile.in +++ /dev/null @@ -1,248 +0,0 @@ -# $Id: Makefile.in,v 1.93 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey -# -# Simple makefile for c++ window class demo - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ - -CF_MFLAGS = @cf_cv_makeflags@ -@SET_MAKE@ -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = ../@DFT_OBJ_SUBDIR@ -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -libdir = @libdir@ -includedir = @includedir@ - -LIBTOOL = @LIBTOOL_CXX@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ -LIBTOOL_INSTALL = @LIB_INSTALL@ -LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ -LIBTOOL_VERSION = @LIBTOOL_VERSION@ -LT_UNDEF = @LT_UNDEF@ - -INSTALL = @INSTALL@ -INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ -INSTALL_DATA = @INSTALL_DATA@ - -AR = @AR@ -ARFLAGS = @ARFLAGS@ - -CXX_AR = @CXX_AR@ -CXX_ARFLAGS = @CXX_ARFLAGS@ -RANLIB = @LIB_PREP@ - -CXX = @CXX@ -CPP = @CXXCPP@ -CXXFLAGS = @CXXFLAGS@ @EXTRA_CXXFLAGS@ -CXXLIBS = @CXXLIBS@ - -INCDIR = ../include -CPPFLAGS = -I../c++ -I$(INCDIR) -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@ - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -CC = ${CXX} -CCFLAGS = $(CPPFLAGS) $(CXXFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CXX_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -NCURSES_MAJOR = @NCURSES_MAJOR@ -NCURSES_MINOR = @NCURSES_MINOR@ -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ - -LOCAL_LIBDIR = @top_builddir@/lib - -LINK = @LINK_PROGS@ $(LIBTOOL_LINK) @CXXLDFLAGS@ -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lform@LIB_SUFFIX@ -lmenu@LIB_SUFFIX@ -lpanel@LIB_SUFFIX@ -lncurses@LIB_SUFFIX@ @SHLIB_LIST@ - -LIBROOT = ncurses++ - -LIBNAME_LIBTOOL = @LIB_PREFIX@$(LIBROOT)@LIB_SUFFIX@.la -LIBNAME_NORMAL = @LIB_PREFIX@$(LIBROOT)@LIB_SUFFIX@.a -LIBNAME = @LIB_PREFIX@$(LIBROOT)@CXX_LIB_SUFFIX@ - -MY_LIBRARY = ../lib/$(LIBNAME) - -LINK_FLAGS = @EXTRA_LDFLAGS@ -L../lib -l$(LIBROOT)@LIB_SUFFIX@ - -LINK_LIBTOOL = @EXTRA_LDFLAGS@ -L../lib $(MY_LIBRARY) -LINK_NORMAL = $(LINK_FLAGS) -LINK_DEBUG = $(LINK_FLAGS) -LINK_PROFILE = $(LINK_FLAGS) -LINK_SHARED = $(LINK_FLAGS) - -TEST_LIBS = @TEST_LIBS@ -TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@ - -LDFLAGS = $(TEST_ARGS) @LDFLAGS@ \ - @LD_MODEL@ $(TEST_LIBS) @LIBS@ @LOCAL_LDFLAGS@ $(CXXLIBS) - -LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) -LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) -LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) -LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) -LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@ - -LDFLAGS_DEFAULT = $(LINK_@DFT_UPR_MODEL@) $(LDFLAGS_@DFT_UPR_MODEL@) - -AUTO_SRC = \ - etip.h - -all \ -libs :: $(AUTO_SRC) $(MY_LIBRARY) - -@MAKE_TESTS@all :: demo$x - -sources : $(AUTO_SRC) - -depend : - -tags: - $(CTAGS) *.[h] *.cc - -# Build a conventional library for installing, since a shared library would -# pull in all of the ncurses libraries (panel, menu, form, ncurses) as direct -# dependencies. -LIB_OBJS = \ - $(MODEL)/cursesf$o \ - $(MODEL)/cursesm$o \ - $(MODEL)/cursesw$o \ - $(MODEL)/cursespad$o \ - $(MODEL)/cursesp$o \ - $(MODEL)/cursslk$o \ - $(MODEL)/cursesapp$o \ - $(MODEL)/cursesmain$o - -../lib/$(LIBNAME_NORMAL) : $(LIB_OBJS) - $(CXX_AR) $(CXX_ARFLAGS) $@ $? - $(RANLIB) $@ - -../lib/$(LIBNAME_LIBTOOL) : $(LIB_OBJS) - cd ../lib && $(LIBTOOL_LINK) $(CXX) $(CXXFLAGS) \ - -o $(LIBNAME) $(LIB_OBJS:$o=.lo) \ - -rpath $(INSTALL_PREFIX)$(libdir) \ - $(LIBTOOL_VERSION) $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(SHLIB_LIST) - -OBJS_DEMO = $(MODEL)/demo$o - -$(MODEL)/demo$o : $(srcdir)/demo.cc \ - $(cursesf_h) $(cursesm_h) $(cursesapp_h) - -demo$x: $(OBJS_DEMO) \ - $(MY_LIBRARY) \ - @TEST_DEPS@ - @ECHO_LINK@ $(LINK) -o $@ $(OBJS_DEMO) $(LDFLAGS_DEFAULT) - -etip.h: $(srcdir)/etip.h.in $(srcdir)/edit_cfg.sh - cp $(srcdir)/etip.h.in $@ - sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ - -$(DESTDIR)$(libdir) : - mkdir -p $@ - -install \ -install.libs:: $(MY_LIBRARY) $(DESTDIR)$(libdir) - $(LIBTOOL_INSTALL) $(INSTALL_LIB) $(MY_LIBRARY) $(DESTDIR)$(libdir)/$(LIBNAME) - -uninstall \ -uninstall.libs:: - -$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(libdir)/$(LIBNAME) - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ii *.ln *.atac trace - -clean :: mostlyclean - -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" - -rm -rf $(MODEL)/SunWS_cache - -$(LIBTOOL_CLEAN) rm -f demo$x $(AUTO_SRC) $(MY_LIBRARY) $(LIB_OBJS) $(OBJS_DEMO) - -rm -rf .libs - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -############################################################################### - -cursesw_h = $(srcdir)/cursesw.h \ - etip.h \ - $(INCDIR)/curses.h - -cursesp_h = $(srcdir)/cursesp.h \ - $(cursesw_h) \ - $(INCDIR)/panel.h - -cursesf_h = $(srcdir)/cursesf.h \ - $(cursesp_h) \ - $(INCDIR)/form.h - -cursesm_h = $(srcdir)/cursesm.h \ - $(cursesp_h) \ - $(INCDIR)/menu.h - -cursslk_h = $(srcdir)/cursslk.h \ - $(cursesw_h) - -cursesapp_h = $(srcdir)/cursesapp.h \ - $(cursslk_h) - -$(INCDIR)/form.h : - cd ../form && $(MAKE) $@ - -$(INCDIR)/menu.h : - cd ../menu && $(MAKE) $@ - -$(INCDIR)/panel.h : - cd ../panel && $(MAKE) $@ - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/c++/NEWS b/deps/ncurses-5.9/c++/NEWS deleted file mode 100644 index 17488a4..0000000 --- a/deps/ncurses-5.9/c++/NEWS +++ /dev/null @@ -1,71 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998,2006 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. -- -------------------------------------------------------------------------------- --- $Id: NEWS,v 1.4 2006/04/22 22:19:37 tom Exp $ -------------------------------------------------------------------------------- -This is a log of changes that the ncurses C++ binding has gone -through starting with the integration of menu and forms integration -into the binding. - -990731 + Improve support for pads. A viewport window may now be added to - a pad. It will then be possible to use a builtin panning mechanism - to view the pad. - -970908 + Improve NCursesWindow class: added additional methods to - cover more ncurses functionality. Make refresh() and - noutrefresh() virtual members to allow different implementation - in the NCursesPanel class. - + CAUTION: changed order of parameters in vline() and hline() of - NCursesWindow class. - + Make refresh() in NCursesPanel non-static, it is now a - reimplementation of refresh() in the base class. Added - noutrefresh() to NCursesPanel. - + Added NCursesForm and related classes to support libform - functionality. - + Moved most of configuration related stuff from cursesw.h to - etip.h - + Added NCursesApplication class to support easy configuration - of menu and forms related attributes as well as ripped of - title lines and Soft-Label-Keys for an application. - + Support of Auto-Cleanup for a menus fieldlist. - + Change of return type for current_item() and operator[] for - menus. - + Enhanced demo. -970502 - + Introduced the THROW and THROWS functions/macros to prepare - a smoother transition to real exception handling. - + Exception classes provided in etip.h - + Added the NCursesMenu class to support libmenu functionality. - + The inheritace relation between NCursesWindow and NCursesColorWindow - was kind of brain damage. Monochrome is a special case of colored, so - the relation should be just the opposite. This would allow all - derived classes like NCursesPanel, NCursesMenu or NCursesForm to - have colors. - To resolve that design flaw I put the color functionality into the - NCursesWindow class and it can be switched on by the static member - useColors(). NCursesColorWindow is still there for compatibility - reasons. diff --git a/deps/ncurses-5.9/c++/demo b/deps/ncurses-5.9/c++/demo deleted file mode 100755 index 19b56ed..0000000 Binary files a/deps/ncurses-5.9/c++/demo and /dev/null differ diff --git a/deps/ncurses-5.9/c++/edit_cfg.sh b/deps/ncurses-5.9/c++/edit_cfg.sh deleted file mode 100755 index 73c31b2..0000000 --- a/deps/ncurses-5.9/c++/edit_cfg.sh +++ /dev/null @@ -1,71 +0,0 @@ -#!/bin/sh -# $Id: edit_cfg.sh,v 1.17 2008/08/30 19:44:25 tom Exp $ -############################################################################## -# Copyright (c) 1998-2007,2008 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: Thomas E. Dickey 1997-on -# -# Edit the default value of the etip.h file based on the autoconf-generated -# values: -# -# $1 = ncurses_cfg.h -# $2 = etip.h -# -echo "substituting autoconf'd values from $1 into $2" -for name in \ - CPP_HAS_PARAM_INIT \ - CPP_HAS_STATIC_CAST \ - ETIP_NEEDS_MATH_EXCEPTION \ - ETIP_NEEDS_MATH_H \ - HAVE_BUILTIN_H \ - HAVE_GPP_BUILTIN_H \ - HAVE_GXX_BUILTIN_H \ - HAVE_IOSTREAM \ - HAVE_TYPEINFO \ - HAVE_VALUES_H \ - IOSTREAM_NAMESPACE -do - rm -f $2.bak - mv $2 $2.bak - if ( grep "[ ]$name[ ]1" $1 2>&1 >/dev/null) - then - value=1 - sed -e 's/define '$name'.*$/define '$name' 1/' $2.bak >$2 - else - value=0 - sed -e 's/define '$name'.*$/define '$name' 0/' $2.bak >$2 - fi - if (cmp -s $2 $2.bak) - then - echo '... '$name $value - mv $2.bak $2 - else - echo '... '$name $value - rm -f $2.bak - fi -done diff --git a/deps/ncurses-5.9/c++/etip.h b/deps/ncurses-5.9/c++/etip.h deleted file mode 100644 index d1acb65..0000000 --- a/deps/ncurses-5.9/c++/etip.h +++ /dev/null @@ -1,378 +0,0 @@ -// * This makes emacs happy -*-Mode: C++;-*- -/**************************************************************************** - * Copyright (c) 1998-2007,2008 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, 1997 * - ****************************************************************************/ - -// $Id: etip.h.in,v 1.37 2008/08/30 19:27:32 tom Exp $ - -#ifndef NCURSES_ETIP_H_incl -#define NCURSES_ETIP_H_incl 1 - -// These are substituted at configure/build time -#ifndef HAVE_BUILTIN_H -#define HAVE_BUILTIN_H 0 -#endif - -#ifndef HAVE_GXX_BUILTIN_H -#define HAVE_GXX_BUILTIN_H 0 -#endif - -#ifndef HAVE_GPP_BUILTIN_H -#define HAVE_GPP_BUILTIN_H 0 -#endif - -#ifndef HAVE_IOSTREAM -#define HAVE_IOSTREAM 1 -#endif - -#ifndef HAVE_TYPEINFO -#define HAVE_TYPEINFO 1 -#endif - -#ifndef HAVE_VALUES_H -#define HAVE_VALUES_H 0 -#endif - -#ifndef ETIP_NEEDS_MATH_H -#define ETIP_NEEDS_MATH_H 1 -#endif - -#ifndef ETIP_NEEDS_MATH_EXCEPTION -#define ETIP_NEEDS_MATH_EXCEPTION 0 -#endif - -#ifndef CPP_HAS_PARAM_INIT -#define CPP_HAS_PARAM_INIT 0 -#endif - -#ifndef CPP_HAS_STATIC_CAST -#define CPP_HAS_STATIC_CAST 1 -#endif - -#ifndef IOSTREAM_NAMESPACE -#define IOSTREAM_NAMESPACE 1 -#endif - -#ifdef __GNUG__ -# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) -# if HAVE_TYPEINFO -# include -# endif -# endif -#endif - -#if defined(__GNUG__) -# if HAVE_BUILTIN_H || HAVE_GXX_BUILTIN_H || HAVE_GPP_BUILTIN_H -# if ETIP_NEEDS_MATH_H -# if ETIP_NEEDS_MATH_EXCEPTION -# undef exception -# define exception math_exception -# endif -# include -# endif -# undef exception -# define exception builtin_exception -# if HAVE_GPP_BUILTIN_H -# include -# elif HAVE_GXX_BUILTIN_H -# include -# else -# include -# endif -# undef exception -# endif -#elif defined (__SUNPRO_CC) -# include -#endif - -#include - -extern "C" { -#if HAVE_VALUES_H -# include -#endif - -#include -#include -#include -} - -// Language features -#if CPP_HAS_PARAM_INIT -#define NCURSES_PARAM_INIT(value) = value -#else -#define NCURSES_PARAM_INIT(value) /*nothing*/ -#endif - -#if CPP_HAS_STATIC_CAST -#define STATIC_CAST(s) static_cast -#else -#define STATIC_CAST(s) (s) -#endif - -// Forward Declarations -class NCURSES_IMPEXP NCursesPanel; -class NCURSES_IMPEXP NCursesMenu; -class NCURSES_IMPEXP NCursesForm; - -class NCURSES_IMPEXP NCursesException -{ -public: - const char *message; - int errorno; - - NCursesException (const char* msg, int err) - : message(msg), errorno (err) - {}; - - NCursesException (const char* msg) - : message(msg), errorno (E_SYSTEM_ERROR) - {}; - - NCursesException& operator=(const NCursesException& rhs) - { - errorno = rhs.errorno; - return *this; - } - - NCursesException(const NCursesException& rhs) - : message(rhs.message), errorno(rhs.errorno) - { - } - - virtual const char *classname() const { - return "NCursesWindow"; - } - - virtual ~NCursesException() - { - } -}; - -class NCURSES_IMPEXP NCursesPanelException : public NCursesException -{ -public: - const NCursesPanel* p; - - NCursesPanelException (const char *msg, int err) : - NCursesException (msg, err), - p (NULL) - {}; - - NCursesPanelException (const NCursesPanel* panel, - const char *msg, - int err) : - NCursesException (msg, err), - p (panel) - {}; - - NCursesPanelException (int err) : - NCursesException ("panel library error", err), - p (NULL) - {}; - - NCursesPanelException (const NCursesPanel* panel, - int err) : - NCursesException ("panel library error", err), - p (panel) - {}; - - NCursesPanelException& operator=(const NCursesPanelException& rhs) - { - if (this != &rhs) { - NCursesException::operator=(rhs); - p = rhs.p; - } - return *this; - } - - NCursesPanelException(const NCursesPanelException& rhs) - : NCursesException(rhs), p(rhs.p) - { - } - - virtual const char *classname() const { - return "NCursesPanel"; - } - - virtual ~NCursesPanelException() - { - } -}; - -class NCURSES_IMPEXP NCursesMenuException : public NCursesException -{ -public: - const NCursesMenu* m; - - NCursesMenuException (const char *msg, int err) : - NCursesException (msg, err), - m (NULL) - {}; - - NCursesMenuException (const NCursesMenu* menu, - const char *msg, - int err) : - NCursesException (msg, err), - m (menu) - {}; - - NCursesMenuException (int err) : - NCursesException ("menu library error", err), - m (NULL) - {}; - - NCursesMenuException (const NCursesMenu* menu, - int err) : - NCursesException ("menu library error", err), - m (menu) - {}; - - NCursesMenuException& operator=(const NCursesMenuException& rhs) - { - if (this != &rhs) { - NCursesException::operator=(rhs); - m = rhs.m; - } - return *this; - } - - NCursesMenuException(const NCursesMenuException& rhs) - : NCursesException(rhs), m(rhs.m) - { - } - - virtual const char *classname() const { - return "NCursesMenu"; - } - - virtual ~NCursesMenuException() - { - } -}; - -class NCURSES_IMPEXP NCursesFormException : public NCursesException -{ -public: - const NCursesForm* f; - - NCursesFormException (const char *msg, int err) : - NCursesException (msg, err), - f (NULL) - {}; - - NCursesFormException (const NCursesForm* form, - const char *msg, - int err) : - NCursesException (msg, err), - f (form) - {}; - - NCursesFormException (int err) : - NCursesException ("form library error", err), - f (NULL) - {}; - - NCursesFormException (const NCursesForm* form, - int err) : - NCursesException ("form library error", err), - f (form) - {}; - - NCursesFormException& operator=(const NCursesFormException& rhs) - { - if (this != &rhs) { - NCursesException::operator=(rhs); - f = rhs.f; - } - return *this; - } - - NCursesFormException(const NCursesFormException& rhs) - : NCursesException(rhs), f(rhs.f) - { - } - - virtual const char *classname() const { - return "NCursesForm"; - } - - virtual ~NCursesFormException() - { - } -}; - -#if !((defined(__GNUG__) && defined(__EXCEPTIONS)) || defined(__SUNPRO_CC)) -# if HAVE_IOSTREAM -# include -# if IOSTREAM_NAMESPACE -using std::cerr; -using std::endl; -# endif -# else -# include -# endif - extern "C" void exit(int); -#endif - -inline void THROW(const NCursesException *e) { -#if defined(__GNUG__) && defined(__EXCEPTIONS) -# if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) - (*lib_error_handler)(e ? e->classname() : "", e ? e->message : ""); -#else -#define CPP_HAS_TRY_CATCH 1 -#endif -#elif defined(__SUNPRO_CC) -# if !defined(__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT < 5) - genericerror(1, ((e != 0) ? (char *)(e->message) : "")); -#else -#define CPP_HAS_TRY_CATCH 1 -#endif -#else - if (e) - cerr << e->message << endl; - exit(0); -#endif - -#ifndef CPP_HAS_TRY_CATCH -#define CPP_HAS_TRY_CATCH 0 -#define NCURSES_CPP_TRY /* nothing */ -#define NCURSES_CPP_CATCH(e) if (false) -#define THROWS(s) /* nothing */ -#elif CPP_HAS_TRY_CATCH - throw *e; -#define NCURSES_CPP_TRY try -#define NCURSES_CPP_CATCH(e) catch(e) -#define THROWS(s) throw(s) -#endif -} - -#endif /* NCURSES_ETIP_H_incl */ diff --git a/deps/ncurses-5.9/c++/headers b/deps/ncurses-5.9/c++/headers deleted file mode 100644 index 0be0311..0000000 --- a/deps/ncurses-5.9/c++/headers +++ /dev/null @@ -1,40 +0,0 @@ -# C++ headers -# $Id: headers,v 1.3 2006/12/24 16:25:45 tom Exp $ -############################################################################## -# Copyright (c) 1998,2006 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: Thomas E. Dickey 1997 -# -$(srcdir)/cursesapp.h -$(srcdir)/cursesf.h -$(srcdir)/cursesm.h -$(srcdir)/cursesp.h -$(srcdir)/cursesw.h -$(srcdir)/cursslk.h -etip.h -# vile:makemode diff --git a/deps/ncurses-5.9/c++/modules b/deps/ncurses-5.9/c++/modules deleted file mode 100644 index bc4fae5..0000000 --- a/deps/ncurses-5.9/c++/modules +++ /dev/null @@ -1,45 +0,0 @@ -# Program modules -# $Id: modules,v 1.7 2006/12/24 00:53:08 tom Exp $ -############################################################################## -# Copyright (c) 1998,2006 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: Thomas E. Dickey 1995-on -# - -@ base -cursesf c++ $(srcdir) $(cursesf_h) $(cursesapp_h) -cursesm c++ $(srcdir) $(cursesm_h) $(cursesapp_h) -cursesp c++ $(srcdir) $(cursesp_h) -cursesw c++ $(srcdir) $(cursesw_h) -cursespad c++ $(srcdir) $(cursesw_h) -cursslk c++ $(srcdir) $(cursslk_h) $(cursesapp_h) -cursesapp c++ $(srcdir) $(cursesapp_h) -cursesmain c++ $(srcdir) $(cursesapp_h) -demo c++ $(srcdir) $(cursesf_h) $(cursesm_h) $(cursesapp_h) - -# vile:makemode diff --git a/deps/ncurses-5.9/config.guess b/deps/ncurses-5.9/config.guess deleted file mode 100755 index dbfb978..0000000 --- a/deps/ncurses-5.9/config.guess +++ /dev/null @@ -1,1421 +0,0 @@ -#! /bin/sh -# Attempt to guess a canonical system name. -# Copyright 1992-2015 Free Software Foundation, Inc. - -timestamp='2015-01-01' - -# 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 -# the Free Software Foundation; either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, see . -# -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that -# program. This Exception is an additional permission under section 7 -# of the GNU General Public License, version 3 ("GPLv3"). -# -# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. -# -# You can get the latest version of this script from: -# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD -# -# Please send patches to . - - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] - -Output the configuration name of the system \`$me' is run on. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.guess ($timestamp) - -Originally written by Per Bothner. -Copyright 1992-2015 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." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit ;; - --version | -v ) - echo "$version" ; exit ;; - --help | --h* | -h ) - echo "$usage"; exit ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" >&2 - exit 1 ;; - * ) - break ;; - esac -done - -if test $# != 0; then - echo "$me: too many arguments$help" >&2 - exit 1 -fi - -trap 'exit 1' 1 2 15 - -# CC_FOR_BUILD -- compiler used by this script. Note that the use of a -# compiler to aid in system detection is discouraged as it requires -# temporary files to be created and, as you can see below, it is a -# headache to deal with in a portable fashion. - -# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still -# use `HOST_CC' if defined, but it is deprecated. - -# Portable tmp directory creation inspired by the Autoconf team. - -set_cc_for_build=' -trap "exitcode=\$?; (rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null) && exit \$exitcode" 0 ; -trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; -: ${TMPDIR=/tmp} ; - { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || - { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir $tmp) ; } || - { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir $tmp) && echo "Warning: creating insecure temp directory" >&2 ; } || - { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } ; -dummy=$tmp/dummy ; -tmpfiles="$dummy.c $dummy.o $dummy.rel $dummy" ; -case $CC_FOR_BUILD,$HOST_CC,$CC in - ,,) echo "int x;" > $dummy.c ; - for c in cc gcc c89 c99 ; do - if ($c -c -o $dummy.o $dummy.c) >/dev/null 2>&1 ; then - CC_FOR_BUILD="$c"; break ; - fi ; - done ; - if test x"$CC_FOR_BUILD" = x ; then - CC_FOR_BUILD=no_compiler_found ; - fi - ;; - ,,*) CC_FOR_BUILD=$CC ;; - ,*,*) CC_FOR_BUILD=$HOST_CC ;; -esac ; set_cc_for_build= ;' - -# This is needed to find uname on a Pyramid OSx when run in the BSD universe. -# (ghazi@noc.rutgers.edu 1994-08-24) -if (test -f /.attbin/uname) >/dev/null 2>&1 ; then - PATH=$PATH:/.attbin ; export PATH -fi - -UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown -UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown -UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown -UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown - -case "${UNAME_SYSTEM}" in -Linux|GNU|GNU/*) - # If the system lacks a compiler, then just pick glibc. - # We could probably try harder. - LIBC=gnu - - eval $set_cc_for_build - cat <<-EOF > $dummy.c - #include - #if defined(__UCLIBC__) - LIBC=uclibc - #elif defined(__dietlibc__) - LIBC=dietlibc - #else - LIBC=gnu - #endif - EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` - ;; -esac - -# Note: order is significant - the case branches are not exclusive. - -case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in - *:NetBSD:*:*) - # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, - # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently - # switched to ELF, *-*-netbsd* would select the old - # object file format. This provides both forward - # compatibility and a consistent mechanism for selecting the - # object file format. - # - # Note: NetBSD doesn't particularly care about the vendor - # portion of the name. We always set it to "unknown". - sysctl="sysctl -n hw.machine_arch" - UNAME_MACHINE_ARCH=`(/sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || echo unknown)` - case "${UNAME_MACHINE_ARCH}" in - armeb) machine=armeb-unknown ;; - arm*) machine=arm-unknown ;; - sh3el) machine=shl-unknown ;; - sh3eb) machine=sh-unknown ;; - sh5el) machine=sh5le-unknown ;; - *) machine=${UNAME_MACHINE_ARCH}-unknown ;; - esac - # The Operating System including object format, if it has switched - # to ELF recently, or will in the future. - case "${UNAME_MACHINE_ARCH}" in - arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build - if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ELF__ - then - # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). - # Return netbsd for either. FIX? - os=netbsd - else - os=netbsdelf - fi - ;; - *) - os=netbsd - ;; - esac - # The OS release - # Debian GNU/NetBSD machines have a different userland, and - # thus, need a distinct triplet. However, they do not need - # kernel version information, so it can be replaced with a - # suitable tag, in the style of linux-gnu. - case "${UNAME_VERSION}" in - Debian*) - release='-gnu' - ;; - *) - release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'` - ;; - esac - # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: - # contains redundant information, the shorter form: - # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. - echo "${machine}-${os}${release}" - exit ;; - *:Bitrig:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} - exit ;; - *:OpenBSD:*:*) - UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` - echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} - exit ;; - *:ekkoBSD:*:*) - echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE} - exit ;; - *:SolidBSD:*:*) - echo ${UNAME_MACHINE}-unknown-solidbsd${UNAME_RELEASE} - exit ;; - macppc:MirBSD:*:*) - echo powerpc-unknown-mirbsd${UNAME_RELEASE} - exit ;; - *:MirBSD:*:*) - echo ${UNAME_MACHINE}-unknown-mirbsd${UNAME_RELEASE} - exit ;; - alpha:OSF1:*:*) - case $UNAME_RELEASE in - *4.0) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` - ;; - *5.*) - UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` - ;; - esac - # According to Compaq, /usr/sbin/psrinfo has been available on - # OSF/1 and Tru64 systems produced since 1995. I hope that - # covers most systems running today. This code pipes the CPU - # types through head -n 1, so we only detect the type of CPU 0. - ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` - case "$ALPHA_CPU_TYPE" in - "EV4 (21064)") - UNAME_MACHINE="alpha" ;; - "EV4.5 (21064)") - UNAME_MACHINE="alpha" ;; - "LCA4 (21066/21068)") - UNAME_MACHINE="alpha" ;; - "EV5 (21164)") - UNAME_MACHINE="alphaev5" ;; - "EV5.6 (21164A)") - UNAME_MACHINE="alphaev56" ;; - "EV5.6 (21164PC)") - UNAME_MACHINE="alphapca56" ;; - "EV5.7 (21164PC)") - UNAME_MACHINE="alphapca57" ;; - "EV6 (21264)") - UNAME_MACHINE="alphaev6" ;; - "EV6.7 (21264A)") - UNAME_MACHINE="alphaev67" ;; - "EV6.8CB (21264C)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8AL (21264B)") - UNAME_MACHINE="alphaev68" ;; - "EV6.8CX (21264D)") - UNAME_MACHINE="alphaev68" ;; - "EV6.9A (21264/EV69A)") - UNAME_MACHINE="alphaev69" ;; - "EV7 (21364)") - UNAME_MACHINE="alphaev7" ;; - "EV7.9 (21364A)") - UNAME_MACHINE="alphaev79" ;; - esac - # A Pn.n version is a patched version. - # A Vn.n version is a released version. - # A Tn.n version is a released field test version. - # A Xn.n version is an unreleased experimental baselevel. - # 1.2 uses "1.2" for uname -r. - echo ${UNAME_MACHINE}-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[PVTX]//' | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - # Reset EXIT trap before exiting to avoid spurious non-zero exit code. - exitcode=$? - trap '' 0 - exit $exitcode ;; - Alpha\ *:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # Should we change UNAME_MACHINE based on the output of uname instead - # of the specific Alpha model? - echo alpha-pc-interix - exit ;; - 21064:Windows_NT:50:3) - echo alpha-dec-winnt3.5 - exit ;; - Amiga*:UNIX_System_V:4.0:*) - echo m68k-unknown-sysv4 - exit ;; - *:[Aa]miga[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-amigaos - exit ;; - *:[Mm]orph[Oo][Ss]:*:*) - echo ${UNAME_MACHINE}-unknown-morphos - exit ;; - *:OS/390:*:*) - echo i370-ibm-openedition - exit ;; - *:z/VM:*:*) - echo s390-ibm-zvmoe - exit ;; - *:OS400:*:*) - echo powerpc-ibm-os400 - exit ;; - arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) - echo arm-acorn-riscix${UNAME_RELEASE} - exit ;; - arm*:riscos:*:*|arm*:RISCOS:*:*) - echo arm-unknown-riscos - exit ;; - SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) - echo hppa1.1-hitachi-hiuxmpp - exit ;; - Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) - # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. - if test "`(/bin/universe) 2>/dev/null`" = att ; then - echo pyramid-pyramid-sysv3 - else - echo pyramid-pyramid-bsd - fi - exit ;; - NILE*:*:*:dcosx) - echo pyramid-pyramid-svr4 - exit ;; - DRS?6000:unix:4.0:6*) - echo sparc-icl-nx6 - exit ;; - DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) - case `/usr/bin/uname -p` in - sparc) echo sparc-icl-nx7; exit ;; - esac ;; - s390x:SunOS:*:*) - echo ${UNAME_MACHINE}-ibm-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4H:SunOS:5.*:*) - echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) - echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) - echo i386-pc-auroraux${UNAME_RELEASE} - exit ;; - i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) - eval $set_cc_for_build - SUN_ARCH="i386" - # If there is a compiler, see if it is configured for 64-bit objects. - # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. - # This test works for both compilers. - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - SUN_ARCH="x86_64" - fi - fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:6*:*) - # According to config.sub, this is the proper way to canonicalize - # SunOS6. Hard to guess exactly what SunOS6 will be like, but - # it's likely to be more like Solaris than SunOS4. - echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - sun4*:SunOS:*:*) - case "`/usr/bin/arch -k`" in - Series*|S4*) - UNAME_RELEASE=`uname -v` - ;; - esac - # Japanese Language versions have a version number like `4.1.3-JL'. - echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'` - exit ;; - sun3*:SunOS:*:*) - echo m68k-sun-sunos${UNAME_RELEASE} - exit ;; - sun*:*:4.2BSD:*) - UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` - test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3 - case "`/bin/arch`" in - sun3) - echo m68k-sun-sunos${UNAME_RELEASE} - ;; - sun4) - echo sparc-sun-sunos${UNAME_RELEASE} - ;; - esac - exit ;; - aushp:SunOS:*:*) - echo sparc-auspex-sunos${UNAME_RELEASE} - exit ;; - # The situation for MiNT is a little confusing. The machine name - # can be virtually everything (everything which is not - # "atarist" or "atariste" at least should have a processor - # > m68000). The system name ranges from "MiNT" over "FreeMiNT" - # to the lowercase version "mint" (or "freemint"). Finally - # the system name "TOS" denotes a system which is actually not - # MiNT. But MiNT is downward compatible to TOS, so this should - # be no problem. - atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) - echo m68k-atari-mint${UNAME_RELEASE} - exit ;; - milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) - echo m68k-milan-mint${UNAME_RELEASE} - exit ;; - hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) - echo m68k-hades-mint${UNAME_RELEASE} - exit ;; - *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) - echo m68k-unknown-mint${UNAME_RELEASE} - exit ;; - m68k:machten:*:*) - echo m68k-apple-machten${UNAME_RELEASE} - exit ;; - powerpc:machten:*:*) - echo powerpc-apple-machten${UNAME_RELEASE} - exit ;; - RISC*:Mach:*:*) - echo mips-dec-mach_bsd4.3 - exit ;; - RISC*:ULTRIX:*:*) - echo mips-dec-ultrix${UNAME_RELEASE} - exit ;; - VAX*:ULTRIX*:*:*) - echo vax-dec-ultrix${UNAME_RELEASE} - exit ;; - 2020:CLIX:*:* | 2430:CLIX:*:*) - echo clipper-intergraph-clix${UNAME_RELEASE} - exit ;; - mips:*:*:UMIPS | mips:*:*:RISCos) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c -#ifdef __cplusplus -#include /* for printf() prototype */ - int main (int argc, char *argv[]) { -#else - int main (argc, argv) int argc; char *argv[]; { -#endif - #if defined (host_mips) && defined (MIPSEB) - #if defined (SYSTYPE_SYSV) - printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_SVR4) - printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0); - #endif - #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) - printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0); - #endif - #endif - exit (-1); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && - dummyarg=`echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` && - SYSTEM_NAME=`$dummy $dummyarg` && - { echo "$SYSTEM_NAME"; exit; } - echo mips-mips-riscos${UNAME_RELEASE} - exit ;; - Motorola:PowerMAX_OS:*:*) - echo powerpc-motorola-powermax - exit ;; - Motorola:*:4.3:PL8-*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) - echo powerpc-harris-powermax - exit ;; - Night_Hawk:Power_UNIX:*:*) - echo powerpc-harris-powerunix - exit ;; - m88k:CX/UX:7*:*) - echo m88k-harris-cxux7 - exit ;; - m88k:*:4*:R4*) - echo m88k-motorola-sysv4 - exit ;; - m88k:*:3*:R3*) - echo m88k-motorola-sysv3 - exit ;; - AViiON:dgux:*:*) - # DG/UX returns AViiON for all architectures - UNAME_PROCESSOR=`/usr/bin/uname -p` - if [ $UNAME_PROCESSOR = mc88100 ] || [ $UNAME_PROCESSOR = mc88110 ] - then - if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx ] || \ - [ ${TARGET_BINARY_INTERFACE}x = x ] - then - echo m88k-dg-dgux${UNAME_RELEASE} - else - echo m88k-dg-dguxbcs${UNAME_RELEASE} - fi - else - echo i586-dg-dgux${UNAME_RELEASE} - fi - exit ;; - M88*:DolphinOS:*:*) # DolphinOS (SVR3) - echo m88k-dolphin-sysv3 - exit ;; - M88*:*:R3*:*) - # Delta 88k system running SVR3 - echo m88k-motorola-sysv3 - exit ;; - XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) - echo m88k-tektronix-sysv3 - exit ;; - Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) - echo m68k-tektronix-bsd - exit ;; - *:IRIX*:*:*) - echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'` - exit ;; - ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. - echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id - exit ;; # Note that: echo "'`uname -s`'" gives 'AIX ' - i*86:AIX:*:*) - echo i386-ibm-aix - exit ;; - ia64:AIX:*:*) - if [ -x /usr/bin/oslevel ] ; then - IBM_REV=`/usr/bin/oslevel` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${UNAME_MACHINE}-ibm-aix${IBM_REV} - exit ;; - *:AIX:2:3) - if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - - main() - { - if (!__power_pc()) - exit(1); - puts("powerpc-ibm-aix3.2.5"); - exit(0); - } -EOF - if $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` - then - echo "$SYSTEM_NAME" - else - echo rs6000-ibm-aix3.2.5 - fi - elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then - echo rs6000-ibm-aix3.2.4 - else - echo rs6000-ibm-aix3.2 - fi - exit ;; - *:AIX:*:[4567]) - IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` - if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then - IBM_ARCH=rs6000 - else - IBM_ARCH=powerpc - fi - if [ -x /usr/bin/lslpp ] ; then - IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | - awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` - else - IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE} - fi - echo ${IBM_ARCH}-ibm-aix${IBM_REV} - exit ;; - *:AIX:*:*) - echo rs6000-ibm-aix - exit ;; - ibmrt:4.4BSD:*|romp-ibm:BSD:*) - echo romp-ibm-bsd4.4 - exit ;; - ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and - echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to - exit ;; # report: romp-ibm BSD 4.3 - *:BOSX:*:*) - echo rs6000-bull-bosx - exit ;; - DPX/2?00:B.O.S.:*:*) - echo m68k-bull-sysv3 - exit ;; - 9000/[34]??:4.3bsd:1.*:*) - echo m68k-hp-bsd - exit ;; - hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) - echo m68k-hp-bsd4.4 - exit ;; - 9000/[34678]??:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - case "${UNAME_MACHINE}" in - 9000/31? ) HP_ARCH=m68000 ;; - 9000/[34]?? ) HP_ARCH=m68k ;; - 9000/[678][0-9][0-9]) - if [ -x /usr/bin/getconf ]; then - sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` - sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` - case "${sc_cpu_version}" in - 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0 - 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1 - 532) # CPU_PA_RISC2_0 - case "${sc_kernel_bits}" in - 32) HP_ARCH="hppa2.0n" ;; - 64) HP_ARCH="hppa2.0w" ;; - '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20 - esac ;; - esac - fi - if [ "${HP_ARCH}" = "" ]; then - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - - #define _HPUX_SOURCE - #include - #include - - int main () - { - #if defined(_SC_KERNEL_BITS) - long bits = sysconf(_SC_KERNEL_BITS); - #endif - long cpu = sysconf (_SC_CPU_VERSION); - - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1"); break; - case CPU_PA_RISC2_0: - #if defined(_SC_KERNEL_BITS) - switch (bits) - { - case 64: puts ("hppa2.0w"); break; - case 32: puts ("hppa2.0n"); break; - default: puts ("hppa2.0"); break; - } break; - #else /* !defined(_SC_KERNEL_BITS) */ - puts ("hppa2.0"); break; - #endif - default: puts ("hppa1.0"); break; - } - exit (0); - } -EOF - (CCOPTS= $CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null) && HP_ARCH=`$dummy` - test -z "$HP_ARCH" && HP_ARCH=hppa - fi ;; - esac - if [ ${HP_ARCH} = "hppa2.0w" ] - then - eval $set_cc_for_build - - # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating - # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler - # generating 64-bit code. GNU and HP use different nomenclature: - # - # $ CC_FOR_BUILD=cc ./config.guess - # => hppa2.0w-hp-hpux11.23 - # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess - # => hppa64-hp-hpux11.23 - - if echo __LP64__ | (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | - grep -q __LP64__ - then - HP_ARCH="hppa2.0w" - else - HP_ARCH="hppa64" - fi - fi - echo ${HP_ARCH}-hp-hpux${HPUX_REV} - exit ;; - ia64:HP-UX:*:*) - HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'` - echo ia64-hp-hpux${HPUX_REV} - exit ;; - 3050*:HI-UX:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #include - int - main () - { - long cpu = sysconf (_SC_CPU_VERSION); - /* The order matters, because CPU_IS_HP_MC68K erroneously returns - true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct - results, however. */ - if (CPU_IS_PA_RISC (cpu)) - { - switch (cpu) - { - case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; - case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; - case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; - default: puts ("hppa-hitachi-hiuxwe2"); break; - } - } - else if (CPU_IS_HP_MC68K (cpu)) - puts ("m68k-hitachi-hiuxwe2"); - else puts ("unknown-hitachi-hiuxwe2"); - exit (0); - } -EOF - $CC_FOR_BUILD -o $dummy $dummy.c && SYSTEM_NAME=`$dummy` && - { echo "$SYSTEM_NAME"; exit; } - echo unknown-hitachi-hiuxwe2 - exit ;; - 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* ) - echo hppa1.1-hp-bsd - exit ;; - 9000/8??:4.3bsd:*:*) - echo hppa1.0-hp-bsd - exit ;; - *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) - echo hppa1.0-hp-mpeix - exit ;; - hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* ) - echo hppa1.1-hp-osf - exit ;; - hp8??:OSF1:*:*) - echo hppa1.0-hp-osf - exit ;; - i*86:OSF1:*:*) - if [ -x /usr/sbin/sysversion ] ; then - echo ${UNAME_MACHINE}-unknown-osf1mk - else - echo ${UNAME_MACHINE}-unknown-osf1 - fi - exit ;; - parisc*:Lites*:*:*) - echo hppa1.1-hp-lites - exit ;; - C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) - echo c1-convex-bsd - exit ;; - C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) - if getsysinfo -f scalar_acc - then echo c32-convex-bsd - else echo c2-convex-bsd - fi - exit ;; - C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) - echo c34-convex-bsd - exit ;; - C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) - echo c38-convex-bsd - exit ;; - C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) - echo c4-convex-bsd - exit ;; - CRAY*Y-MP:*:*:*) - echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*[A-Z]90:*:*:*) - echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \ - | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ - -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ - -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*TS:*:*:*) - echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*T3E:*:*:*) - echo alphaev5-cray-unicosmk${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - CRAY*SV1:*:*:*) - echo sv1-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - *:UNICOS/mp:*:*) - echo craynv-cray-unicosmp${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/' - exit ;; - F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) - FUJITSU_PROC=`uname -m | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'` - echo "${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - 5000:UNIX_System_V:4.*:*) - FUJITSU_SYS=`uname -p | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/\///'` - FUJITSU_REL=`echo ${UNAME_RELEASE} | tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz' | sed -e 's/ /_/'` - echo "sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}" - exit ;; - i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) - echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE} - exit ;; - sparc*:BSD/OS:*:*) - echo sparc-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:BSD/OS:*:*) - echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} - exit ;; - *:FreeBSD:*:*) - UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in - amd64) - echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - *) - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; - esac - exit ;; - i*:CYGWIN*:*) - echo ${UNAME_MACHINE}-pc-cygwin - exit ;; - *:MINGW64*:*) - echo ${UNAME_MACHINE}-pc-mingw64 - exit ;; - *:MINGW*:*) - echo ${UNAME_MACHINE}-pc-mingw32 - exit ;; - *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-msys - exit ;; - i*:windows32*:*) - # uname -m includes "-pc" on this system. - echo ${UNAME_MACHINE}-mingw32 - exit ;; - i*:PW*:*) - echo ${UNAME_MACHINE}-pc-pw32 - exit ;; - *:Interix*:*) - case ${UNAME_MACHINE} in - x86) - echo i586-pc-interix${UNAME_RELEASE} - exit ;; - authenticamd | genuineintel | EM64T) - echo x86_64-unknown-interix${UNAME_RELEASE} - exit ;; - IA64) - echo ia64-unknown-interix${UNAME_RELEASE} - exit ;; - esac ;; - [345]86:Windows_95:* | [345]86:Windows_98:* | [345]86:Windows_NT:*) - echo i${UNAME_MACHINE}-pc-mks - exit ;; - 8664:Windows_NT:*) - echo x86_64-pc-mks - exit ;; - i*:Windows_NT*:* | Pentium*:Windows_NT*:*) - # How do we know it's Interix rather than the generic POSIX subsystem? - # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we - # UNAME_MACHINE based on the output of uname instead of i386? - echo i586-pc-interix - exit ;; - i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin - exit ;; - amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) - echo x86_64-unknown-cygwin - exit ;; - p*:CYGWIN*:*) - echo powerpcle-unknown-cygwin - exit ;; - prep*:SunOS:5.*:*) - echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` - exit ;; - *:GNU:*:*) - # the GNU system - echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-${LIBC}`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'` - exit ;; - *:GNU/*:*:*) - # other systems with GNU libc and userland - echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-${LIBC} - exit ;; - i*86:Minix:*:*) - echo ${UNAME_MACHINE}-pc-minix - exit ;; - aarch64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - aarch64_be:Linux:*:*) - UNAME_MACHINE=aarch64_be - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - alpha:Linux:*:*) - case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in - EV5) UNAME_MACHINE=alphaev5 ;; - EV56) UNAME_MACHINE=alphaev56 ;; - PCA56) UNAME_MACHINE=alphapca56 ;; - PCA57) UNAME_MACHINE=alphapca56 ;; - EV6) UNAME_MACHINE=alphaev6 ;; - EV67) UNAME_MACHINE=alphaev67 ;; - EV68*) UNAME_MACHINE=alphaev68 ;; - esac - objdump --private-headers /bin/sh | grep -q ld.so.1 - if test "$?" = 0 ; then LIBC="gnulibc1" ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arc:Linux:*:* | arceb:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - arm*:Linux:*:*) - eval $set_cc_for_build - if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_EABI__ - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - else - if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ - | grep -q __ARM_PCS_VFP - then - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi - else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf - fi - fi - exit ;; - avr32*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - cris:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - crisv32:Linux:*:*) - echo ${UNAME_MACHINE}-axis-linux-${LIBC} - exit ;; - frv:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - hexagon:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:Linux:*:*) - echo ${UNAME_MACHINE}-pc-linux-${LIBC} - exit ;; - ia64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m32r*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - m68*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - mips:Linux:*:* | mips64:Linux:*:*) - eval $set_cc_for_build - sed 's/^ //' << EOF >$dummy.c - #undef CPU - #undef ${UNAME_MACHINE} - #undef ${UNAME_MACHINE}el - #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) - CPU=${UNAME_MACHINE}el - #else - #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) - CPU=${UNAME_MACHINE} - #else - CPU= - #endif - #endif -EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` - test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } - ;; - openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} - exit ;; - or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - padre:Linux:*:*) - echo sparc-unknown-linux-${LIBC} - exit ;; - parisc64:Linux:*:* | hppa64:Linux:*:*) - echo hppa64-unknown-linux-${LIBC} - exit ;; - parisc:Linux:*:* | hppa:Linux:*:*) - # Look for CPU level - case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in - PA7*) echo hppa1.1-unknown-linux-${LIBC} ;; - PA8*) echo hppa2.0-unknown-linux-${LIBC} ;; - *) echo hppa-unknown-linux-${LIBC} ;; - esac - exit ;; - ppc64:Linux:*:*) - echo powerpc64-unknown-linux-${LIBC} - exit ;; - ppc:Linux:*:*) - echo powerpc-unknown-linux-${LIBC} - exit ;; - ppc64le:Linux:*:*) - echo powerpc64le-unknown-linux-${LIBC} - exit ;; - ppcle:Linux:*:*) - echo powerpcle-unknown-linux-${LIBC} - exit ;; - s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux-${LIBC} - exit ;; - sh64*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sh*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - sparc:Linux:*:* | sparc64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - tile*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - vax:Linux:*:*) - echo ${UNAME_MACHINE}-dec-linux-${LIBC} - exit ;; - x86_64:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - xtensa*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} - exit ;; - i*86:DYNIX/ptx:4*:*) - # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. - # earlier versions are messed up and put the nodename in both - # sysname and nodename. - echo i386-sequent-sysv4 - exit ;; - i*86:UNIX_SV:4.2MP:2.*) - # Unixware is an offshoot of SVR4, but it has its own version - # number series starting with 2... - # I am not positive that other SVR4 systems won't match this, - # I just have to hope. -- rms. - # Use sysv4.2uw... so that sysv4* matches it. - echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION} - exit ;; - i*86:OS/2:*:*) - # If we were able to find `uname', then EMX Unix compatibility - # is probably installed. - echo ${UNAME_MACHINE}-pc-os2-emx - exit ;; - i*86:XTS-300:*:STOP) - echo ${UNAME_MACHINE}-unknown-stop - exit ;; - i*86:atheos:*:*) - echo ${UNAME_MACHINE}-unknown-atheos - exit ;; - i*86:syllable:*:*) - echo ${UNAME_MACHINE}-pc-syllable - exit ;; - i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) - echo i386-unknown-lynxos${UNAME_RELEASE} - exit ;; - i*86:*DOS:*:*) - echo ${UNAME_MACHINE}-pc-msdosdjgpp - exit ;; - i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` - if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then - echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL} - else - echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL} - fi - exit ;; - i*86:*:5:[678]*) - # UnixWare 7.x, OpenUNIX and OpenServer 6. - case `/bin/uname -X | grep "^Machine"` in - *486*) UNAME_MACHINE=i486 ;; - *Pentium) UNAME_MACHINE=i586 ;; - *Pent*|*Celeron) UNAME_MACHINE=i686 ;; - esac - echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} - exit ;; - i*86:*:3.2:*) - if test -f /usr/options/cb.name; then - UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then - UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` - (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 - (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ - && UNAME_MACHINE=i586 - (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ - && UNAME_MACHINE=i686 - (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ - && UNAME_MACHINE=i686 - echo ${UNAME_MACHINE}-pc-sco$UNAME_REL - else - echo ${UNAME_MACHINE}-pc-sysv32 - fi - exit ;; - pc:*:*:*) - # Left here for compatibility: - # uname -m prints for DJGPP always 'pc', but it prints nothing about - # the processor, so we play safe by assuming i586. - # Note: whatever this is, it MUST be the same as what config.sub - # prints for the "djgpp" host, or else GDB configury will decide that - # this is a cross-build. - echo i586-pc-msdosdjgpp - exit ;; - Intel:Mach:3*:*) - echo i386-pc-mach3 - exit ;; - paragon:*:*:*) - echo i860-intel-osf1 - exit ;; - i860:*:4.*:*) # i860-SVR4 - if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then - echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4 - else # Add other i860-SVR4 vendors below as they are discovered. - echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4 - fi - exit ;; - mini*:CTIX:SYS*5:*) - # "miniframe" - echo m68010-convergent-sysv - exit ;; - mc68k:UNIX:SYSTEM5:3.51m) - echo m68k-convergent-sysv - exit ;; - M680?0:D-NIX:5.3:*) - echo m68k-diab-dnix - exit ;; - M68*:*:R3V[5678]*:*) - test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; - 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) - OS_REL='' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4; exit; } ;; - NCR*:*:4.2:* | MPRAS*:*:4.2:*) - OS_REL='.3' - test -r /etc/.relid \ - && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` - /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ - && { echo i486-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } - /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ - && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;; - m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) - echo m68k-unknown-lynxos${UNAME_RELEASE} - exit ;; - mc68030:UNIX_System_V:4.*:*) - echo m68k-atari-sysv4 - exit ;; - TSUNAMI:LynxOS:2.*:*) - echo sparc-unknown-lynxos${UNAME_RELEASE} - exit ;; - rs6000:LynxOS:2.*:*) - echo rs6000-unknown-lynxos${UNAME_RELEASE} - exit ;; - PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) - echo powerpc-unknown-lynxos${UNAME_RELEASE} - exit ;; - SM[BE]S:UNIX_SV:*:*) - echo mips-dde-sysv${UNAME_RELEASE} - exit ;; - RM*:ReliantUNIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - RM*:SINIX-*:*:*) - echo mips-sni-sysv4 - exit ;; - *:SINIX-*:*:*) - if uname -p 2>/dev/null >/dev/null ; then - UNAME_MACHINE=`(uname -p) 2>/dev/null` - echo ${UNAME_MACHINE}-sni-sysv4 - else - echo ns32k-sni-sysv - fi - exit ;; - PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort - # says - echo i586-unisys-sysv4 - exit ;; - *:UNIX_System_V:4*:FTX*) - # From Gerald Hewes . - # How about differentiating between stratus architectures? -djm - echo hppa1.1-stratus-sysv4 - exit ;; - *:*:*:FTX*) - # From seanf@swdc.stratus.com. - echo i860-stratus-sysv4 - exit ;; - i*86:VOS:*:*) - # From Paul.Green@stratus.com. - echo ${UNAME_MACHINE}-stratus-vos - exit ;; - *:VOS:*:*) - # From Paul.Green@stratus.com. - echo hppa1.1-stratus-vos - exit ;; - mc68*:A/UX:*:*) - echo m68k-apple-aux${UNAME_RELEASE} - exit ;; - news*:NEWS-OS:6*:*) - echo mips-sony-newsos6 - exit ;; - R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) - if [ -d /usr/nec ]; then - echo mips-nec-sysv${UNAME_RELEASE} - else - echo mips-unknown-sysv${UNAME_RELEASE} - fi - exit ;; - BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. - echo powerpc-be-beos - exit ;; - BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. - echo powerpc-apple-beos - exit ;; - BePC:BeOS:*:*) # BeOS running on Intel PC compatible. - echo i586-pc-beos - exit ;; - BePC:Haiku:*:*) # Haiku running on Intel PC compatible. - echo i586-pc-haiku - exit ;; - x86_64:Haiku:*:*) - echo x86_64-unknown-haiku - exit ;; - SX-4:SUPER-UX:*:*) - echo sx4-nec-superux${UNAME_RELEASE} - exit ;; - SX-5:SUPER-UX:*:*) - echo sx5-nec-superux${UNAME_RELEASE} - exit ;; - SX-6:SUPER-UX:*:*) - echo sx6-nec-superux${UNAME_RELEASE} - exit ;; - SX-7:SUPER-UX:*:*) - echo sx7-nec-superux${UNAME_RELEASE} - exit ;; - SX-8:SUPER-UX:*:*) - echo sx8-nec-superux${UNAME_RELEASE} - exit ;; - SX-8R:SUPER-UX:*:*) - echo sx8r-nec-superux${UNAME_RELEASE} - exit ;; - Power*:Rhapsody:*:*) - echo powerpc-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Rhapsody:*:*) - echo ${UNAME_MACHINE}-apple-rhapsody${UNAME_RELEASE} - exit ;; - *:Darwin:*:*) - UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - eval $set_cc_for_build - if test "$UNAME_PROCESSOR" = unknown ; then - UNAME_PROCESSOR=powerpc - fi - if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - case $UNAME_PROCESSOR in - i386) UNAME_PROCESSOR=x86_64 ;; - powerpc) UNAME_PROCESSOR=powerpc64 ;; - esac - fi - fi - elif test "$UNAME_PROCESSOR" = i386 ; then - # Avoid executing cc on OS X 10.9, as it ships with a stub - # that puts up a graphical alert prompting to install - # developer tools. Any system running Mac OS X 10.7 or - # later (Darwin 11 and later) is required to have a 64-bit - # processor. This is not true of the ARM version of Darwin - # that Apple uses in portable devices. - UNAME_PROCESSOR=x86_64 - fi - echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} - exit ;; - *:procnto*:*:* | *:QNX:[0123456789]*:*) - UNAME_PROCESSOR=`uname -p` - if test "$UNAME_PROCESSOR" = "x86"; then - UNAME_PROCESSOR=i386 - UNAME_MACHINE=pc - fi - echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE} - exit ;; - *:QNX:*:4*) - echo i386-pc-qnx - exit ;; - NEO-?:NONSTOP_KERNEL:*:*) - echo neo-tandem-nsk${UNAME_RELEASE} - exit ;; - NSE-*:NONSTOP_KERNEL:*:*) - echo nse-tandem-nsk${UNAME_RELEASE} - exit ;; - NSR-?:NONSTOP_KERNEL:*:*) - echo nsr-tandem-nsk${UNAME_RELEASE} - exit ;; - *:NonStop-UX:*:*) - echo mips-compaq-nonstopux - exit ;; - BS2000:POSIX*:*:*) - echo bs2000-siemens-sysv - exit ;; - DS/*:UNIX_System_V:*:*) - echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE} - exit ;; - *:Plan9:*:*) - # "uname -m" is not consistent, so use $cputype instead. 386 - # is converted to i386 for consistency with other x86 - # operating systems. - if test "$cputype" = "386"; then - UNAME_MACHINE=i386 - else - UNAME_MACHINE="$cputype" - fi - echo ${UNAME_MACHINE}-unknown-plan9 - exit ;; - *:TOPS-10:*:*) - echo pdp10-unknown-tops10 - exit ;; - *:TENEX:*:*) - echo pdp10-unknown-tenex - exit ;; - KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) - echo pdp10-dec-tops20 - exit ;; - XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) - echo pdp10-xkl-tops20 - exit ;; - *:TOPS-20:*:*) - echo pdp10-unknown-tops20 - exit ;; - *:ITS:*:*) - echo pdp10-unknown-its - exit ;; - SEI:*:*:SEIUX) - echo mips-sei-seiux${UNAME_RELEASE} - exit ;; - *:DragonFly:*:*) - echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` - exit ;; - *:*VMS:*:*) - UNAME_MACHINE=`(uname -p) 2>/dev/null` - case "${UNAME_MACHINE}" in - A*) echo alpha-dec-vms ; exit ;; - I*) echo ia64-dec-vms ; exit ;; - V*) echo vax-dec-vms ; exit ;; - esac ;; - *:XENIX:*:SysV) - echo i386-pc-xenix - exit ;; - i*86:skyos:*:*) - echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//' - exit ;; - i*86:rdos:*:*) - echo ${UNAME_MACHINE}-pc-rdos - exit ;; - i*86:AROS:*:*) - echo ${UNAME_MACHINE}-pc-aros - exit ;; - x86_64:VMkernel:*:*) - echo ${UNAME_MACHINE}-unknown-esx - exit ;; -esac - -cat >&2 < in order to provide the needed -information to handle your system. - -config.guess timestamp = $timestamp - -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null` - -hostinfo = `(hostinfo) 2>/dev/null` -/bin/universe = `(/bin/universe) 2>/dev/null` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` -/bin/arch = `(/bin/arch) 2>/dev/null` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` - -UNAME_MACHINE = ${UNAME_MACHINE} -UNAME_RELEASE = ${UNAME_RELEASE} -UNAME_SYSTEM = ${UNAME_SYSTEM} -UNAME_VERSION = ${UNAME_VERSION} -EOF - -exit 1 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/deps/ncurses-5.9/config.log b/deps/ncurses-5.9/config.log deleted file mode 100644 index 509946f..0000000 --- a/deps/ncurses-5.9/config.log +++ /dev/null @@ -1,1962 +0,0 @@ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. - -It was created by configure, which was -generated by GNU Autoconf 2.52.20101002. Invocation command line was - - $ ./configure --prefix=/home/martino/avrdude-build-script/objdir --disable-shared --without-debug --without-ada --with-termlib --enable-termcap - -## ---------- ## -## Platform. ## -## ---------- ## - -hostname = arch-elitebook -uname -m = x86_64 -uname -r = 5.9.14-arch1-1 -uname -s = Linux -uname -v = #1 SMP PREEMPT Sat, 12 Dec 2020 14:37:12 +0000 - -/usr/bin/uname -p = unknown -/bin/uname -X = unknown - -/bin/arch = unknown -/usr/bin/arch -k = unknown -/usr/convex/getsysinfo = unknown -hostinfo = unknown -/bin/machine = unknown -/usr/bin/oslevel = unknown -/bin/universe = unknown - -PATH = /ssd/aarch64-gcc/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/:/ssd/aarch64-gcc/gcc-arm-9.2-2019.12-x86_64-aarch64-none-linux-gnu/bin/:/bin:/usr/bin:/usr/local/bin:/usr/local/sbin:/opt/android-sdk/tools:/usr/lib/emscripten:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/home/martino/.bashhub/bin - -## ------------ ## -## Core tests. ## -## ------------ ## - -configure:1101: PATH=".;."; conftest.sh -./configure: line 1102: conftest.sh: command not found -configure:1104: $? = 127 -configure:1117: checking for egrep -configure:1127: result: grep -E -configure:1141: result: Configuring NCURSES 5.9 ABI 5 (Fri Jan 8 11:00:30 CET 2021) -configure:1246: checking build system type -configure:1264: result: x86_64-unknown-linux-gnu -configure:1271: checking host system type -configure:1285: result: x86_64-unknown-linux-gnu -configure:1293: checking target system type -configure:1307: result: x86_64-unknown-linux-gnu -configure:1338: result: Configuring for linux-gnu -configure:1362: checking for prefix -configure:1374: result: /home/martino/avrdude-build-script/objdir -configure:1450: checking for gcc -configure:1465: found /bin/gcc -configure:1473: result: gcc -configure:1701: checking for C compiler version -configure:1704: gcc --version &5 -gcc (GCC) 10.2.0 -Copyright (C) 2020 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. - -configure:1707: $? = 0 -configure:1709: gcc -v &5 -Using built-in specs. -COLLECT_GCC=gcc -COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper -Target: x86_64-pc-linux-gnu -Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-libunwind-exceptions --disable-werror gdc_include_dir=/usr/include/dlang/gdc -Thread model: posix -Supported LTO compression algorithms: zlib zstd -gcc version 10.2.0 (GCC) -configure:1712: $? = 0 -configure:1714: gcc -V &5 -gcc: error: unrecognized command-line option '-V' -gcc: fatal error: no input files -compilation terminated. -configure:1717: $? = 1 -configure:1737: checking for C compiler default output -configure:1740: gcc -w -O2 -fPIC -P -s -fPIC conftest.c >&5 -configure:1743: $? = 0 -configure:1772: result: a.out -configure:1777: checking whether the C compiler works -configure:1783: ./a.out -configure:1786: $? = 0 -configure:1801: result: yes -configure:1808: checking whether we are cross compiling -configure:1810: result: no -configure:1813: checking for executable suffix -configure:1815: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c >&5 -configure:1818: $? = 0 -configure:1840: result: -configure:1846: checking for object suffix -configure:1864: gcc -c -w -O2 -fPIC -P conftest.c >&5 -configure:1867: $? = 0 -configure:1886: result: o -configure:1890: checking whether we are using the GNU C compiler -configure:1911: gcc -c -w -O2 -fPIC -P conftest.c >&5 -configure:1914: $? = 0 -configure:1917: test -s conftest.o -configure:1920: $? = 0 -configure:1932: result: yes -configure:1938: checking whether gcc accepts -g -configure:1956: gcc -c -g -P conftest.c >&5 -configure:1959: $? = 0 -configure:1962: test -s conftest.o -configure:1965: $? = 0 -configure:1975: result: yes -configure:2002: gcc -c -w -O2 -fPIC -P conftest.c >&5 -conftest.c:2:3: error: unknown type name 'choke' - 2 | choke me - | ^~~~~ -conftest.c:2:3: error: expected '=', ',', ';', 'asm' or '__attribute__' at end of input -configure:2005: $? = 1 -configure: failed program was: -#ifndef __cplusplus - choke me -#endif -configure:2106: checking version of gcc -configure:2110: result: 10.2.0 -configure:2120: checking how to run the C preprocessor -configure:2146: gcc -E -P conftest.c -configure:2152: $? = 0 -configure:2179: gcc -E -P conftest.c -configure:2176:10: fatal error: ac_nonexistent.h: No such file or directory - 2176 | #include "confdefs.h" - | ^~~~~~~~~~~~ -compilation terminated. -configure:2185: $? = 1 -configure: failed program was: -#line 2175 "configure" -#include "confdefs.h" -#include -configure:2222: result: gcc -E -configure:2237: gcc -E -P conftest.c -configure:2243: $? = 0 -configure:2270: gcc -E -P conftest.c -configure:2267:10: fatal error: ac_nonexistent.h: No such file or directory - 2267 | #include "confdefs.h" - | ^~~~~~~~~~~~ -compilation terminated. -configure:2276: $? = 1 -configure: failed program was: -#line 2266 "configure" -#include "confdefs.h" -#include -configure:2317: checking whether gcc needs -traditional -configure:2352: result: no -configure:2359: checking whether gcc understands -c and -o together -configure:2375: gcc -c conftest.c -o conftest2.o >&5 -configure:2378: $? = 0 -configure:2380: gcc -c conftest.c -o conftest2.o >&5 -configure:2383: $? = 0 -configure:2394: result: yes -configure:2401: checking for POSIXized ISC -configure:2420: result: no -configure:2425: checking for gcc option to accept ANSI C -configure:2550: gcc -c -w -O2 -fPIC -P -DCC_HAS_PROTOS conftest.c >&5 -configure:2553: $? = 0 -configure:2556: test -s conftest.o -configure:2559: $? = 0 -configure:2572: result: -DCC_HAS_PROTOS -configure:2705: checking for ldconfig -configure:2722: found /bin/ldconfig -configure:2733: result: /bin/ldconfig -configure:2744: checking if you want to ensure bool is consistent with C++ -configure:2754: result: yes -configure:2811: checking for g++ -configure:2826: found /bin/g++ -configure:2834: result: g++ -configure:2849: checking for C++ compiler version -configure:2852: g++ --version &5 -g++ (GCC) 10.2.0 -Copyright (C) 2020 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. - -configure:2855: $? = 0 -configure:2857: g++ -v &5 -Using built-in specs. -COLLECT_GCC=g++ -COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/10.2.0/lto-wrapper -Target: x86_64-pc-linux-gnu -Configured with: /build/gcc/src/gcc/configure --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++,d --with-isl --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit --enable-cet=auto --enable-checking=release --enable-clocale=gnu --enable-default-pie --enable-default-ssp --enable-gnu-indirect-function --enable-gnu-unique-object --enable-install-libiberty --enable-linker-build-id --enable-lto --enable-multilib --enable-plugin --enable-shared --enable-threads=posix --disable-libssp --disable-libstdcxx-pch --disable-libunwind-exceptions --disable-werror gdc_include_dir=/usr/include/dlang/gdc -Thread model: posix -Supported LTO compression algorithms: zlib zstd -gcc version 10.2.0 (GCC) -configure:2860: $? = 0 -configure:2862: g++ -V &5 -g++: error: unrecognized command-line option '-V' -g++: fatal error: no input files -compilation terminated. -configure:2865: $? = 1 -configure:2868: checking whether we are using the GNU C++ compiler -configure:2889: g++ -c -w -O2 -fPIC -P conftest.cc >&5 -configure:2892: $? = 0 -configure:2895: test -s conftest.o -configure:2898: $? = 0 -configure:2910: result: yes -configure:2916: checking whether g++ accepts -g -configure:2934: g++ -c -g -P conftest.cc >&5 -configure:2937: $? = 0 -configure:2940: test -s conftest.o -configure:2943: $? = 0 -configure:2953: result: yes -configure:2993: g++ -c -w -O2 -fPIC -P conftest.cc >&5 -configure:2996: $? = 0 -configure:2999: test -s conftest.o -configure:3002: $? = 0 -configure:3024: g++ -c -w -O2 -fPIC -P conftest.cc >&5 -configure: In function 'int main()': -configure:3017:1: error: 'exit' was not declared in this scope - 3017 | { - | ^ -configure:3027: $? = 1 -configure: failed program was: -#line 3012 "configure" -#include "confdefs.h" - -int -main () -{ -exit (42); - ; - return 0; -} -configure:2993: g++ -c -w -O2 -fPIC -P conftest.cc >&5 -configure:2996: $? = 0 -configure:2999: test -s conftest.o -configure:3002: $? = 0 -configure:3024: g++ -c -w -O2 -fPIC -P conftest.cc >&5 -configure:3027: $? = 0 -configure:3030: test -s conftest.o -configure:3033: $? = 0 -configure:3060: checking for g++ -configure:3077: found /bin/g++ -configure:3088: result: /bin/g++ -configure:3105: checking version of g++ -configure:3109: result: 10.2.0 -configure:3117: WARNING: templates do not work -configure:3122: checking if you want to build C++ binding and demo -configure:3132: result: yes -configure:3135: checking if you want to build with Ada95 -configure:3145: result: no -configure:3148: checking if you want to install manpages -configure:3158: result: yes -configure:3161: checking if you want to build programs such as tic -configure:3171: result: yes -configure:3174: checking if you want to build test-programs -configure:3184: result: yes -configure:3187: checking if you wish to install curses.h -configure:3197: result: yes -configure:3223: checking for mawk -configure:3249: result: no -configure:3223: checking for gawk -configure:3238: found /bin/gawk -configure:3246: result: gawk -configure:3260: checking for egrep -configure:3270: result: grep -E -configure:3290: checking for a BSD compatible install -configure:3339: result: /bin/install -c -configure:3364: checking for tdlint -configure:3390: result: no -configure:3364: checking for lint -configure:3390: result: no -configure:3364: checking for alint -configure:3390: result: no -configure:3364: checking for splint -configure:3390: result: no -configure:3364: checking for lclint -configure:3390: result: no -configure:3397: checking whether ln -s works -configure:3401: result: yes -configure:3408: checking if ln -s -f options work -configure:3420: result: yes -configure:3425: checking for long file names -configure:3464: result: yes -configure:3476: checking if you want to use pkg-config -configure:3486: result: yes -configure:3537: checking for pkg-config -configure:3554: found /bin/pkg-config -configure:3566: result: /bin/pkg-config -configure:3621: checking if we should install .pc files for /bin/pkg-config -configure:3638: result: no -configure:3649: checking if we should assume mixed-case filenames -configure:3659: result: auto -configure:3663: checking if filesystem supports mixed-case filenames -configure:3690: result: yes -configure:3707: checking whether make sets ${MAKE} -configure:3727: result: yes -configure:3740: checking for exctags -configure:3766: result: no -configure:3740: checking for ctags -configure:3766: result: no -configure:3777: checking for exetags -configure:3803: result: no -configure:3777: checking for etags -configure:3803: result: no -configure:3812: checking for ctags -configure:3836: result: no -configure:3846: checking for etags -configure:3870: result: no -configure:3893: checking for makeflags variable -configure:3927: result: -configure:3968: checking for ranlib -configure:3983: found /bin/ranlib -configure:3992: result: ranlib -configure:4042: checking for ld -configure:4057: found /bin/ld -configure:4066: result: ld -configure:4116: checking for ar -configure:4131: found /bin/ar -configure:4140: result: ar -configure:4190: checking for ar -configure:4214: result: ar -configure:4226: checking for options to update archives -configure:4252: gcc -c -w -O2 -fPIC -P conftest.c >&5 -configure:4255: $? = 0 -ar -curv conftest.a conftest.o -ar: `u' modifier ignored since `D' is the default (see `U') -configure:4274: result: -curv -configure:4285: checking if you have specified an install-prefix -configure:4298: result: -configure:4454: checking if libtool -version-number should be used -configure:4471: result: yes -configure:4496: checking if you want to build libraries with libtool -configure:4506: result: no -configure:4645: checking if you want to build shared libraries -configure:4655: result: no -configure:4659: checking if you want to build static libraries -configure:4669: result: yes -configure:4673: checking if you want to build debug libraries -configure:4683: result: no -configure:4687: checking if you want to build profiling libraries -configure:4697: result: no -configure:4705: checking for specified models -configure:4709: result: normal -configure:4714: checking for default model -configure:4717: result: normal -configure:4746: checking if you want to build a separate terminfo library -configure:4756: result: yes -configure:4759: checking if you want to build a separate tic library -configure:4769: result: no -configure:4775: checking if you want to link with the GPM mouse library -configure:4785: result: maybe -configure:4789: checking for gpm.h -configure:4799: gcc -E -P conftest.c -configure:4805: $? = 0 -configure:4824: result: yes -configure:4842: checking for Gpm_Open in -lgpm -configure:4869: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -lgpm >&5 -configure:4872: $? = 0 -configure:4875: test -s conftest -configure:4878: $? = 0 -configure:4889: result: yes -configure:4914: checking if you want to load GPM dynamically -configure:4924: result: yes -configure:4929: checking for dlsym -configure:4966: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c >&5 -/bin/ld: /tmp/ccwvvcWO.o: in function `main': -conftest.c:(.text.startup+0xa): undefined reference to `dlsym' -collect2: error: ld returned 1 exit status -configure:4969: $? = 1 -configure: failed program was: -#line 4935 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlsym (); below. */ -#include -/* 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 dlsym (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_dlsym) || defined (__stub___dlsym) -choke me -#else -f = dlsym; -#endif - - ; - return 0; -} -configure:4985: result: no -configure:4992: checking for dlsym in -ldl -configure:5019: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -ldl >&5 -configure:5022: $? = 0 -configure:5025: test -s conftest -configure:5028: $? = 0 -configure:5039: result: yes -configure:5052: checking whether able to link to dl*() functions -configure:5073: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -ldl >&5 -configure:5076: $? = 0 -configure:5079: test -s conftest -configure:5082: $? = 0 -configure:5098: result: ok -configure:5114: checking for soname of gpm library -configure:5132: gcc -c -w -O2 -fPIC -P conftest.c >&5 -configure:5135: $? = 0 -configure:5137: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -lgpm -ldl >&5 -configure:5140: $? = 0 -configure:5151: result: libgpm.so.2 -configure:5168: checking for Gpm_Wgetch in -lgpm -configure:5195: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -lgpm -ldl >&5 -configure:5198: $? = 0 -configure:5201: test -s conftest -configure:5204: $? = 0 -configure:5215: result: yes -configure:5219: checking if GPM is weakly bound to curses library -configure:5243: gcc -c -w -O2 -fPIC -P conftest.c >&5 -configure:5246: $? = 0 -configure:5248: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -static -lgpm -dynamic -ldl >&5 -cc1: warning: unrecognized gcc debugging option: y -cc1: warning: unrecognized gcc debugging option: n -cc1: warning: unrecognized gcc debugging option: m -cc1: warning: unrecognized gcc debugging option: i -cc1: warning: unrecognized gcc debugging option: c -/bin/ld: cannot find -lgpm -collect2: error: ld returned 1 exit status -configure:5251: $? = 1 -configure:5263: result: unknown -configure:5267: WARNING: GPM library is already linked with curses - read the FAQ -configure:5349: checking for default loader flags -configure:5358: result: -configure:5393: checking for an rpath option -configure:5424: result: -Wl,-rpath, -configure:5480: checking if release/abi version should be used for shared libs -configure:5504: result: auto -configure:5513: checking which gcc option to use -configure:5532: gcc -c -w -O2 -fPIC -fPIC -P conftest.c >&5 -configure:5535: $? = 0 -configure:5538: test -s conftest.o -configure:5541: $? = 0 -configure:5550: result: -fPIC -configure:6150: checking if you wish to install ncurses overwriting curses -configure:6160: result: no -configure:6163: checking if external terminfo-database is used -configure:6173: result: yes -configure:6195: checking which terminfo source-file will be installed -configure:6203: result: ${top_srcdir}/misc/terminfo.src -configure:6206: checking whether to use hashed database instead of directory/tree -configure:6216: result: no -configure:6222: checking for list of fallback descriptions -configure:6232: result: -configure:6236: checking if you want modern xterm or antique -configure:6250: result: xterm-new -configure:6260: checking for list of terminfo directories -configure:6313: result: /home/martino/avrdude-build-script/objdir/share/terminfo -configure:6319: checking for default terminfo directory -configure:6364: result: /home/martino/avrdude-build-script/objdir/share/terminfo -configure:6374: checking if big-core option selected -configure:6400: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -ldl >&5 -configure:6403: $? = 0 -configure:6405: ./conftest -configure:6408: $? = 0 -configure:6420: result: yes -configure:6429: checking if big-strings option selected -configure:6453: result: yes -configure:6460: checking if you want termcap-fallback support -configure:6470: result: yes -configure:6497: checking for list of termcap files -configure:6550: result: /etc/termcap:/usr/share/misc/termcap -configure:6557: checking if fast termcap-loader is needed -configure:6567: result: no -configure:6573: checking if translated termcaps will be cached in ~/.terminfo -configure:6583: result: no -configure:6592: checking if ~/.terminfo is wanted -configure:6602: result: yes -configure:6608: checking if you want to use restricted environment when running as root -configure:6618: result: yes -configure:6632: checking for remove -configure:6669: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -ldl >&5 -configure:6672: $? = 0 -configure:6675: test -s conftest -configure:6678: $? = 0 -configure:6688: result: yes -configure:6632: checking for unlink -configure:6669: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -ldl >&5 -configure:6672: $? = 0 -configure:6675: test -s conftest -configure:6678: $? = 0 -configure:6688: result: yes -configure:6772: checking if link/symlink functions work -configure:6815: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -ldl >&5 -configure:6818: $? = 0 -configure:6820: ./conftest -configure:6823: $? = 0 -configure:6815: gcc -o conftest -w -O2 -fPIC -P -s -fPIC conftest.c -ldl >&5 -configure:6818: $? = 0 -configure:6820: ./conftest -configure:6823: $? = 0 -configure:6841: result: link symlink -configure:6859: checking if tic should use symbolic links -configure:6869: result: no -configure:6876: checking if tic should use hard links -configure:6883: result: yes -configure:6896: checking if you want broken-linker support code -configure:6906: result: no -configure:6933: checking if tputs should process BSD-style prefix padding -configure:6943: result: no -configure:6996: checking if we must define _GNU_SOURCE -configure:7018: gcc -c -w -O2 -fPIC -P conftest.c >&5 -configure: In function 'main': -configure:7010:1: error: unknown type name 'make' - 7010 | #ifndef _XOPEN_SOURCE - | ^~~~ -configure:7010:9: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'error' - 7010 | #ifndef _XOPEN_SOURCE - | ^~~~~ -configure:7021: $? = 1 -configure: failed program was: -#line 7003 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -configure:7051: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure: In function 'main': -configure:7043:1: error: unknown type name 'make' - 7043 | #ifdef _XOPEN_SOURCE - | ^~~~ -configure:7043:9: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'error' - 7043 | #ifdef _XOPEN_SOURCE - | ^~~~~ -configure:7054: $? = 1 -configure: failed program was: -#line 7036 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -configure:7075: result: yes -configure:7602: checking if SIGWINCH is defined -configure:7624: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:7627: $? = 0 -configure:7630: test -s conftest.o -configure:7633: $? = 0 -configure:7681: result: yes -configure:7751: checking for nl_langinfo and CODESET -configure:7769: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -s -fPIC conftest.c -ldl >&5 -configure:7772: $? = 0 -configure:7775: test -s conftest -configure:7778: $? = 0 -configure:7789: result: yes -configure:7803: checking if you want wide-character code -configure:7813: result: no -configure:8893: checking whether to enable _LP64 definition in curses.h -configure:8903: result: no -configure:8919: checking for special C compiler options needed for large files -configure:8993: result: no -configure:8999: checking for _FILE_OFFSET_BITS value needed for large files -configure:9027: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:9030: $? = 0 -configure:9033: test -s conftest.o -configure:9036: $? = 0 -configure:9086: result: no -configure:9096: checking for _LARGE_FILES value needed for large files -configure:9124: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:9127: $? = 0 -configure:9130: test -s conftest.o -configure:9133: $? = 0 -configure:9183: result: no -configure:9196: checking for _LARGEFILE_SOURCE value needed for large files -configure:9216: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:9219: $? = 0 -configure:9222: test -s conftest.o -configure:9225: $? = 0 -configure:9267: result: no -configure:9281: checking for fseeko -configure:9299: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -s -fPIC conftest.c -ldl >&5 -configure:9302: $? = 0 -configure:9305: test -s conftest -configure:9308: $? = 0 -configure:9318: result: yes -configure:9339: checking whether to use struct dirent64 -configure:9367: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure: In function 'main': -configure:9356:28: error: conflicting types for 'readdir' - 9356 | /* if transitional largefile support is setup, this is true */ - | ^~~~~~~ -In file included from configure:9349: -/usr/include/dirent.h:162:23: note: previous declaration of 'readdir' was here - 162 | extern struct dirent *readdir (DIR *__dirp) __nonnull ((1)); - | ^~~~~~~ -configure:9359:13: error: invalid operands to binary - (have 'struct dirent64 *' and 'struct dirent *') - 9359 | struct dirent *y = readdir((DIR *)0); - | ^ -configure:9370: $? = 1 -configure: failed program was: -#line 9346 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ - - /* if transitional largefile support is setup, this is true */ - extern struct dirent64 * readdir(DIR *); - struct dirent64 *x = readdir((DIR *)0); - struct dirent *y = readdir((DIR *)0); - int z = x - y; - - ; - return 0; -} -configure:9387: result: no -configure:9396: checking if you want tparm not to use X/Open fixed-parameter list -configure:9406: result: yes -configure:9430: checking for type of bool -configure:9440: result: auto -configure:9443: checking for alternate terminal capabilities file -configure:9454: result: Caps -configure:9458: checking for type of chtype -configure:9468: result: auto -configure:9472: checking for type of ospeed -configure:9482: result: short -configure:9486: checking for type of mmask_t -configure:9496: result: auto -configure:9500: checking for size CCHARW_MAX -configure:9510: result: 5 -configure:9514: checking if RCS identifiers should be compiled-in -configure:9524: result: no -configure:9532: checking format of man-pages -configure:9621: result: gzip -configure:9628: checking for manpage renaming -configure:9670: result: no -configure:9673: checking if manpage aliases will be installed -configure:9684: result: yes -configure:9698: checking if manpage symlinks should be used -configure:9717: result: yes -configure:9721: checking for manpage tbl -configure:9732: result: no -configure:10054: checking if you want to build with function extensions -configure:10064: result: yes -configure:10106: checking if you want to build with experimental SCREEN extensions -configure:10116: result: no -configure:10130: checking if you want to build with experimental terminal-driver -configure:10140: result: no -configure:10155: checking for extended use of const keyword -configure:10165: result: no -configure:10173: checking if you want to use extended colors -configure:10183: result: no -configure:10214: checking if you want to use extended mouse encoding -configure:10224: result: no -configure:10243: checking if you want $NCURSES_NO_PADDING code -configure:10253: result: yes -configure:10259: checking for ANSI C header files -configure:10273: gcc -E -P -D_GNU_SOURCE conftest.c -configure:10279: $? = 0 -configure:10366: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -s -fPIC conftest.c -ldl >&5 -configure:10369: $? = 0 -configure:10371: ./conftest -configure:10374: $? = 0 -configure:10387: result: yes -configure:10403: checking for sys/types.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for sys/stat.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for stdlib.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for string.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for memory.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for strings.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for inttypes.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for stdint.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10403: checking for unistd.h -configure:10415: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10418: $? = 0 -configure:10421: test -s conftest.o -configure:10424: $? = 0 -configure:10434: result: yes -configure:10444: checking for signed char -configure:10465: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:10468: $? = 0 -configure:10471: test -s conftest.o -configure:10474: $? = 0 -configure:10484: result: yes -configure:10487: checking size of signed char -configure:10651: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -s -fPIC conftest.c -ldl >&5 -configure:10654: $? = 0 -configure:10656: ./conftest -configure:10659: $? = 0 -configure:10675: result: 1 -configure:10686: checking if you want to use signed Boolean array in term.h -configure:10696: result: no -configure:10701: checking if you want SIGWINCH handler -configure:10711: result: yes -configure:10718: checking if you want user-definable terminal capabilities like termcap -configure:10728: result: yes -configure:10736: checking if you want all development code -configure:10746: result: no -configure:10750: checking if you want hard-tabs code -configure:10760: result: no -configure:10767: checking if you want limited support for xmc -configure:10777: result: no -configure:10786: checking if you do not want to assume colors are white-on-black -configure:10796: result: yes -configure:10803: checking if you want hashmap scrolling-optimization code -configure:10813: result: yes -configure:10820: checking if you want colorfgbg code -configure:10830: result: no -configure:10837: checking if you want interop bindings -configure:10847: result: no -configure:10856: checking if you want to link with the pthread library -configure:10866: result: no -configure:11151: checking if you want experimental reentrant code -configure:11161: result: no -configure:11222: checking if you want experimental safe-sprintf code -configure:11232: result: no -configure:11259: checking if you want experimental wgetch-events code -configure:11269: result: no -configure:11278: checking if you want to display full commands during build -configure:11295: result: yes -configure:11299: checking if you want to see compiler warnings -configure:11307: result: -configure:11650: checking for gcc __attribute__ directives... -checking for gcc __attribute__((scanf)) -configure:11702: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:11705: $? = 0 -checking for gcc __attribute__((printf)) -configure:11702: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:11705: $? = 0 -checking for gcc __attribute__((unused)) -configure:11702: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:11705: $? = 0 -checking for gcc __attribute__((noreturn)) -configure:11702: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE conftest.c >&5 -configure:11705: $? = 0 -configure:11743: checking if you want to enable runtime assertions -configure:11753: result: no -configure:11773: checking if you want to use dmalloc for testing -configure:11789: result: no -configure:11984: checking if you want to use dbmalloc for testing -configure:12000: result: no -configure:12195: checking if you want to use valgrind for testing -configure:12211: result: no -configure:12304: checking if you want to perform memory-leak testing -configure:12314: result: no -configure:12363: checking whether to add trace feature to all models -configure:12373: result: no -configure:12468: checking for gettimeofday -configure:12505: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:12508: $? = 0 -configure:12511: test -s conftest -configure:12514: $? = 0 -configure:12524: result: yes -configure:12594: checking if -lm needed for math functions -configure:12616: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -/bin/ld: /tmp/ccbyRemZ.o: in function `main': -conftest.c:(.text.startup+0x14): undefined reference to `sin' -collect2: error: ld returned 1 exit status -configure:12619: $? = 1 -configure: failed program was: -#line 12601 "configure" -#include "confdefs.h" - - #include - #include - -int -main () -{ -double x = rand(); printf("result = %g\n", sin(x)) - ; - return 0; -} -configure:12635: result: yes -configure:12643: checking for ANSI C header files -configure:12771: result: yes -configure:12784: checking for dirent.h that defines DIR -configure:12805: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:12808: $? = 0 -configure:12811: test -s conftest.o -configure:12814: $? = 0 -configure:12824: result: yes -configure:12837: checking for opendir in -ldir -configure:12864: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldir -ldl >&5 -/bin/ld: cannot find -ldir -collect2: error: ld returned 1 exit status -configure:12867: $? = 1 -configure: failed program was: -#line 12845 "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 opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -configure:12884: result: no -configure:12946: checking whether time.h and sys/time.h may both be included -configure:12968: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:12971: $? = 0 -configure:12974: test -s conftest.o -configure:12977: $? = 0 -configure:12987: result: yes -configure:13006: checking for regcomp -configure:13043: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:13046: $? = 0 -configure:13049: test -s conftest -configure:13052: $? = 0 -configure:13062: result: yes -configure:13258: checking for regular-expression headers -configure:13329: gcc -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:13332: $? = 0 -configure:13335: test -s conftest -configure:13338: $? = 0 -configure:13354: result: regex.h -configure:13394: checking for fcntl.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for getopt.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for limits.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for locale.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for math.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for poll.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for sys/bsdtypes.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13401:10: fatal error: sys/bsdtypes.h: No such file or directory -13401 | #include "confdefs.h" - | ^~~~~~~~~~~~ -compilation terminated. -configure:13410: $? = 1 -configure: failed program was: -#line 13400 "configure" -#include "confdefs.h" -#include -configure:13429: result: no -configure:13394: checking for sys/ioctl.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for sys/param.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for sys/poll.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for sys/select.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for sys/time.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for sys/times.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for ttyent.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13394: checking for unistd.h -configure:13429: result: yes -configure:13394: checking for wctype.h -configure:13404: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:13410: $? = 0 -configure:13429: result: yes -configure:13548: checking if sys/time.h works with sys/select.h -configure:13575: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:13578: $? = 0 -configure:13581: test -s conftest.o -configure:13584: $? = 0 -configure:13596: result: yes -configure:13610: checking for gcc option to accept ANSI C -configure:13667: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:13670: $? = 0 -configure:13673: test -s conftest.o -configure:13676: $? = 0 -configure:13693: result: none needed -configure:13701: checking for an ANSI C-conforming const -configure:13765: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:13768: $? = 0 -configure:13771: test -s conftest.o -configure:13774: $? = 0 -configure:13784: result: yes -configure:13794: checking for inline -configure:13811: gcc -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:13814: $? = 0 -configure:13817: test -s conftest.o -configure:13820: $? = 0 -configure:13831: result: inline -configure:13854: checking if gcc supports options to tune inlining -configure:13875: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:13878: $? = 0 -configure:13881: test -s conftest.o -configure:13884: $? = 0 -configure:13896: result: yes -configure:13982: checking for signal global datatype -configure:14017: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:14020: $? = 0 -configure:14023: test -s conftest.o -configure:14026: $? = 0 -configure:14040: result: volatile sig_atomic_t -configure:14048: checking for type of chtype -configure:14093: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14096: $? = 0 -configure:14098: ./conftest -configure:14101: $? = 0 -configure:14116: result: int -configure:14128: checking if unsigned literals are legal -configure:14147: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:14150: $? = 0 -configure:14153: test -s conftest.o -configure:14156: $? = 0 -configure:14168: result: yes -configure:14184: checking if external errno is declared -configure:14209: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:14212: $? = 0 -configure:14215: test -s conftest.o -configure:14218: $? = 0 -configure:14229: result: yes -configure:14244: checking if external errno exists -configure:14266: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -/bin/ld: errno: TLS definition in /usr/lib/libc.so.6 section .tbss mismatches non-TLS reference in /tmp/ccN2lw8w.o -/bin/ld: /usr/lib/libc.so.6: error adding symbols: bad value -collect2: error: ld returned 1 exit status -configure:14269: $? = 1 -configure: failed program was: -#line 14251 "configure" -#include "confdefs.h" - -#undef errno -extern int errno; - -int -main () -{ -errno = 2 - ; - return 0; -} -configure:14286: result: no -configure:14299: checking if data-only library module links -configure:14310: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:14313: $? = 0 -ar: `u' modifier ignored since `D' is the default (see `U') -configure:14333: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:14336: $? = 0 -ar: `u' modifier ignored since `D' is the default (see `U') -configure:14360: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c conftest.a -ldl >&5 -configure:14363: $? = 0 -configure:14365: ./conftest -configure:14368: $? = 0 -configure:14383: result: yes -configure:14418: checking for getcwd -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for getegid -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for geteuid -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for getttynam -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for issetugid -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -/bin/ld: /tmp/ccD5pw5J.o: in function `main': -conftest.c:(.text.startup+0xa): undefined reference to `issetugid' -collect2: error: ld returned 1 exit status -configure:14458: $? = 1 -configure: failed program was: -#line 14424 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char issetugid (); below. */ -#include -/* 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 issetugid (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_issetugid) || defined (__stub___issetugid) -choke me -#else -f = issetugid; -#endif - - ; - return 0; -} -configure:14474: result: no -configure:14418: checking for poll -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for remove -configure:14474: result: yes -configure:14418: checking for select -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for setbuf -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for setbuffer -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for setvbuf -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for sigaction -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for sigvec -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -/bin/ld: /tmp/cc5DXc9J.o: in function `main': -conftest.c:(.text.startup+0xa): undefined reference to `sigvec' -collect2: error: ld returned 1 exit status -configure:14458: $? = 1 -configure: failed program was: -#line 14424 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char sigvec (); below. */ -#include -/* 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 sigvec (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_sigvec) || defined (__stub___sigvec) -choke me -#else -f = sigvec; -#endif - - ; - return 0; -} -configure:14474: result: no -configure:14418: checking for strdup -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for strstr -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for tcgetpgrp -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for times -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14418: checking for vsnprintf -configure:14455: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14458: $? = 0 -configure:14461: test -s conftest -configure:14464: $? = 0 -configure:14474: result: yes -configure:14542: checking for isascii -configure:14561: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14564: $? = 0 -configure:14567: test -s conftest -configure:14570: $? = 0 -configure:14581: result: yes -configure:14588: checking whether sigaction needs _POSIX_SOURCE -configure:14605: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:14608: $? = 0 -configure:14611: test -s conftest.o -configure:14614: $? = 0 -configure:14661: result: no -configure:14665: checking if nanosleep really works -configure:14700: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14703: $? = 0 -configure:14705: ./conftest -configure:14708: $? = 0 -configure:14720: result: yes -configure:14734: checking for termio.h -configure:14744: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:14750: $? = 0 -configure:14769: result: yes -configure:14734: checking for termios.h -configure:14744: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:14750: $? = 0 -configure:14769: result: yes -configure:14734: checking for unistd.h -configure:14769: result: yes -configure:14837: checking whether termios.h needs _POSIX_SOURCE -configure:14852: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:14855: $? = 0 -configure:14858: test -s conftest.o -configure:14861: $? = 0 -configure:14907: result: no -configure:14912: checking for tcgetattr -configure:14947: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14950: $? = 0 -configure:14953: test -s conftest -configure:14956: $? = 0 -configure:14966: result: yes -configure:14972: checking for vsscanf function or workaround -configure:14995: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:14998: $? = 0 -configure:15001: test -s conftest -configure:15004: $? = 0 -configure:15097: result: vsscanf -configure:15115: checking for working mkstemp -configure:15222: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:15225: $? = 0 -configure:15227: ./conftest -configure:15230: $? = 0 -configure:15245: result: yes -configure:15266: checking whether setvbuf arguments are reversed -configure:15294: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:15297: $? = 0 -configure:15299: ./conftest -configure:15302: $? = 1 -configure: program exited with status 1 -configure: failed program was: -#line 15277 "configure" -#include "confdefs.h" -#include -/* If setvbuf has the reversed format, exit 0. */ -int -main () -{ - /* This call has the arguments reversed. - A reversed system may check and see that the address of main - is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ - if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0) - return(1); - putc('\r', stdout); - return(0); /* Non-reversed systems segv here. */ -} -configure:15315: result: no -configure:15326: checking return type of signal handlers -configure:15354: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:15357: $? = 0 -configure:15360: test -s conftest.o -configure:15363: $? = 0 -configure:15373: result: void -configure:15380: checking for type sigaction_t -configure:15400: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure: In function 'main': -configure:15393:1: error: unknown type name 'sigaction_t' -15393 | { - | ^ -configure:15403: $? = 1 -configure: failed program was: -#line 15387 "configure" -#include "confdefs.h" - -#include -int -main () -{ -sigaction_t x - ; - return 0; -} -configure:15420: result: no -configure:15426: checking declaration of size-change -configure:15485: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:15488: $? = 0 -configure:15491: test -s conftest.o -configure:15494: $? = 0 -size-change succeeded () -configure:15513: result: yes -configure:15530: checking for memmove -configure:15567: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:15570: $? = 0 -configure:15573: test -s conftest -configure:15576: $? = 0 -configure:15586: result: yes -configure:15718: checking if poll really works -configure:15749: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:15752: $? = 0 -configure:15754: ./conftest -configure:15757: $? = 0 -configure:15769: result: yes -configure:15775: checking for va_copy -configure:15799: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:15802: $? = 0 -configure:15805: test -s conftest -configure:15808: $? = 0 -configure:15818: result: yes -configure:15825: checking for __va_copy -configure:15849: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:15852: $? = 0 -configure:15855: test -s conftest -configure:15858: $? = 0 -configure:15868: result: yes -configure:15875: checking for pid_t -configure:15896: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:15899: $? = 0 -configure:15902: test -s conftest.o -configure:15905: $? = 0 -configure:15915: result: yes -configure:15930: checking for unistd.h -configure:15965: result: yes -configure:15930: checking for vfork.h -configure:15940: gcc -E -P -D_GNU_SOURCE -DNDEBUG conftest.c -configure:15937:10: fatal error: vfork.h: No such file or directory -15937 | #include "confdefs.h" - | ^~~~~~~~~ -compilation terminated. -configure:15946: $? = 1 -configure: failed program was: -#line 15936 "configure" -#include "confdefs.h" -#include -configure:15965: result: no -configure:15978: checking for fork -configure:16015: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:16018: $? = 0 -configure:16021: test -s conftest -configure:16024: $? = 0 -configure:16034: result: yes -configure:15978: checking for vfork -configure:16015: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -ldl >&5 -configure:16018: $? = 0 -configure:16021: test -s conftest -configure:16024: $? = 0 -configure:16034: result: yes -configure:16046: checking for working fork -configure:16089: result: yes -configure:16108: checking for working vfork -configure:16234: result: yes -configure:16267: checking for openpty in -lutil -configure:16294: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -lutil -ldl >&5 -configure:16297: $? = 0 -configure:16300: test -s conftest -configure:16303: $? = 0 -configure:16314: result: yes -configure:16322: checking for openpty header -configure:16350: gcc -o conftest -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.c -lutil -ldl >&5 -configure:16353: $? = 0 -configure:16356: test -s conftest -configure:16359: $? = 0 -configure:16377: result: pty.h -configure:16757: checking if we should include stdbool.h -configure:16777: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure: In function 'main': -configure:16770:1: error: unknown type name 'bool' -16770 | { - | ^ -configure:16770:12: error: 'false' undeclared (first use in this function) -16770 | { - | ^ -configure:16770:12: note: each undeclared identifier is reported only once for each function it appears in -configure:16780: $? = 1 -configure: failed program was: -#line 16765 "configure" -#include "confdefs.h" - -int -main () -{ -bool foo = false - ; - return 0; -} -configure:16809: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure:16812: $? = 0 -configure:16815: test -s conftest.o -configure:16818: $? = 0 -configure:16832: result: yes -configure:16838: checking for builtin bool type -configure:16861: gcc -c -w -O2 -fPIC --param max-inline-insns-single=1200 -P -D_GNU_SOURCE -DNDEBUG conftest.c >&5 -configure: In function 'main': -configure:16854:1: error: unknown type name 'bool' -16854 | { - | ^ -configure:16854:10: error: 'false' undeclared (first use in this function); did you mean 'fclose'? -16854 | { - | ^ - | fclose -configure:16854:10: note: each undeclared identifier is reported only once for each function it appears in -configure:16864: $? = 1 -configure: failed program was: -#line 16846 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ -bool x = false - ; - return 0; -} -configure:16885: result: no -configure:16907: checking for library stdc++ -configure:16932: /bin/g++ -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.cc -lstdc++ -ldl >&5 -configure:16918:10: fatal error: strstream.h: No such file or directory -16918 | - | ^ -compilation terminated. -configure:16935: $? = 1 -configure: failed program was: -#line 16916 "configure" -#include "confdefs.h" - -#include -int -main () -{ - -char buf[80]; -strstreambuf foo(buf, sizeof(buf)) - - ; - return 0; -} -configure:16953: result: no -configure:16958: checking whether /bin/g++ understands -c and -o together -configure:16974: /bin/g++ -c conftest.cc -o conftest2.o >&5 -configure:16977: $? = 0 -configure:16979: /bin/g++ -c conftest.cc -o conftest2.o >&5 -configure:16982: $? = 0 -configure:16993: result: yes -configure:17119: checking how to run the C++ preprocessor -configure:17141: /bin/g++ -E -P -D_GNU_SOURCE -DNDEBUG conftest.cc -configure:17147: $? = 0 -configure:17174: /bin/g++ -E -P -D_GNU_SOURCE -DNDEBUG conftest.cc -configure:17171:10: fatal error: ac_nonexistent.h: No such file or directory -17171 | #include "confdefs.h" - | ^~~~~~~~~~~~ -compilation terminated. -configure:17180: $? = 1 -configure: failed program was: -#line 17170 "configure" -#include "confdefs.h" -#include -configure:17217: result: /bin/g++ -E -configure:17232: /bin/g++ -E -P -D_GNU_SOURCE -DNDEBUG conftest.cc -configure:17238: $? = 0 -configure:17265: /bin/g++ -E -P -D_GNU_SOURCE -DNDEBUG conftest.cc -configure:17262:10: fatal error: ac_nonexistent.h: No such file or directory -17262 | #include "confdefs.h" - | ^~~~~~~~~~~~ -compilation terminated. -configure:17271: $? = 1 -configure: failed program was: -#line 17261 "configure" -#include "confdefs.h" -#include -configure:17314: checking for iostream -configure:17324: /bin/g++ -E -P -D_GNU_SOURCE -DNDEBUG conftest.cc -configure:17330: $? = 0 -configure:17349: result: yes -configure:17314: checking for typeinfo -configure:17324: /bin/g++ -E -P -D_GNU_SOURCE -DNDEBUG conftest.cc -configure:17330: $? = 0 -configure:17349: result: yes -configure:17360: checking if iostream uses std-namespace -configure:17380: /bin/g++ -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.cc >&5 -configure:17383: $? = 0 -configure:17386: test -s conftest.o -configure:17389: $? = 0 -configure:17398: result: yes -configure:17408: checking if we should include stdbool.h -configure:17483: result: yes -configure:17489: checking for builtin bool type -configure:17512: /bin/g++ -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.cc >&5 -configure:17515: $? = 0 -configure:17518: test -s conftest.o -configure:17521: $? = 0 -configure:17534: result: yes -configure:17540: checking for size of bool -configure:17593: /bin/g++ -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.cc -ldl >&5 -configure:17596: $? = 0 -configure:17598: ./conftest -configure:17601: $? = 0 -configure:17619: result: unsigned char -configure:17630: checking for special defines needed for etip.h -configure:17656: /bin/g++ -c -w -O2 -fPIC -I./c++ -I./menu -I./include -P -D_GNU_SOURCE -DNDEBUG conftest.cc >&5 -configure:17659: $? = 0 -configure:17662: test -s conftest.o -configure:17665: $? = 0 -configure:17656: /bin/g++ -c -w -O2 -fPIC -I./c++ -I./menu -I./include -DETIP_NEEDS_MATH_H -P -D_GNU_SOURCE -DNDEBUG conftest.cc >&5 -configure:17659: $? = 0 -configure:17662: test -s conftest.o -configure:17665: $? = 0 -configure:17686: result: MATH_H -configure:17691: checking if /bin/g++ accepts parameter initialization -configure:17727: /bin/g++ -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -s -fPIC conftest.cc -ldl >&5 -configure:17718:1: error: default argument given for parameter 1 of 'TEST::TEST(int)' [-fpermissive] -17718 | - | ^ -configure:17714:2: note: previous specification in 'TEST::TEST(int)' here -17714 | public: - | ^~~~ -configure:17722:1: error: '::main' must return 'int' -17722 | } - | ^ -configure:17730: $? = 1 -configure: program exited with status 1 -configure: failed program was: -#line 17708 "configure" -#include "confdefs.h" - -class TEST { -private: - int value; -public: - TEST(int x = 1); - ~TEST(); -}; - -TEST::TEST(int x = 1) // some compilers do not like second initializer -{ - value = x; -} -void main() { } - -configure:17754: result: no -configure:17763: checking if /bin/g++ accepts static_cast -configure:17821: /bin/g++ -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG conftest.cc >&5 -configure:17824: $? = 0 -configure:17827: test -s conftest.o -configure:17830: $? = 0 -configure:17848: result: yes -configure:18549: checking for library subsets -configure:18590: result: ticlib+termlib+ext_tinfo base+ext_funcs -configure:18628: checking default library suffix -configure:18639: result: -configure:18642: checking default library-dependency suffix -configure:18695: result: .a -configure:18698: checking default object directory -configure:18714: result: objects -configure:18719: checking c++ library-dependency suffix -configure:18776: result: .a -configure:18930: checking if linker supports switching between static/dynamic -configure:18939: /bin/g++ -c -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} conftest.cc >&5 -configure:18942: $? = 0 -ar: `u' modifier ignored since `D' is the default (see `U') -configure:18971: /bin/g++ -o conftest -w -O2 -fPIC -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} -s -fPIC conftest.cc -static -L/home/martino/avrdude-build-script/ncurses-5.9 -lconftest -ldl >&5 -configure:18974: $? = 0 -configure:18977: test -s conftest -configure:18980: $? = 0 -configure:18993: result: yes -configure:19009: checking where we will install curses.h -configure:19014: result: ${prefix}/include/ncurses -configure:19039: checking for src modules -configure:19102: result: ncurses progs panel menu form -configure:19308: checking for tic -configure:19325: found /bin/tic -configure:19337: result: /bin/tic -configure:19449: creating ./config.status - -## ----------------------- ## -## Running config.status. ## -## ----------------------- ## - -This file was extended by config.status 2.52.20101002, executed with - CONFIG_FILES = - CONFIG_HEADERS = - CONFIG_LINKS = - CONFIG_COMMANDS = - > ./config.status -on arch-elitebook - -config.status:20160: creating include/MKterm.h.awk -config.status:20160: creating include/curses.head -config.status:20160: creating include/ncurses_dll.h -config.status:20160: creating include/termcap.h -config.status:20160: creating include/unctrl.h -config.status:20160: creating man/Makefile -config.status:20160: creating include/Makefile -config.status:20160: creating ncurses/Makefile -config.status:20160: creating progs/Makefile -config.status:20160: creating panel/Makefile -config.status:20160: creating menu/Makefile -config.status:20160: creating form/Makefile -config.status:20160: creating test/Makefile -config.status:20160: creating misc/Makefile -config.status:20160: creating c++/Makefile -config.status:20160: creating misc/run_tic.sh -config.status:20160: creating misc/ncurses-config -config.status:20160: creating man/ncurses5-config.1 -config.status:20160: creating Makefile -config.status:20257: creating include/ncurses_cfg.h - -## ----------------- ## -## Cache variables. ## -## ----------------- ## - -ac_cv_build=x86_64-unknown-linux-gnu -ac_cv_build_alias=x86_64-unknown-linux-gnu -ac_cv_c_compiler_gnu=yes -ac_cv_c_const=yes -ac_cv_c_inline=inline -ac_cv_cxx_compiler_gnu=yes -ac_cv_env_CC_set= -ac_cv_env_CC_value= -ac_cv_env_CFLAGS_set=set -ac_cv_env_CFLAGS_value='-w -O2 -fPIC' -ac_cv_env_CPPFLAGS_set=set -ac_cv_env_CPPFLAGS_value=-P -ac_cv_env_CPP_set= -ac_cv_env_CPP_value= -ac_cv_env_CXXCPP_set= -ac_cv_env_CXXCPP_value= -ac_cv_env_CXXFLAGS_set=set -ac_cv_env_CXXFLAGS_value='-w -O2 -fPIC' -ac_cv_env_CXX_set= -ac_cv_env_CXX_value= -ac_cv_env_LDFLAGS_set=set -ac_cv_env_LDFLAGS_value='-s -fPIC' -ac_cv_env_build_alias_set= -ac_cv_env_build_alias_value= -ac_cv_env_host_alias_set= -ac_cv_env_host_alias_value= -ac_cv_env_target_alias_set= -ac_cv_env_target_alias_value= -ac_cv_func_dlsym=no -ac_cv_func_fork=yes -ac_cv_func_fork_works=yes -ac_cv_func_fseeko=yes -ac_cv_func_getcwd=yes -ac_cv_func_getegid=yes -ac_cv_func_geteuid=yes -ac_cv_func_gettimeofday=yes -ac_cv_func_getttynam=yes -ac_cv_func_issetugid=no -ac_cv_func_link=yes -ac_cv_func_memmove=yes -ac_cv_func_poll=yes -ac_cv_func_regcomp=yes -ac_cv_func_remove=yes -ac_cv_func_select=yes -ac_cv_func_setbuf=yes -ac_cv_func_setbuffer=yes -ac_cv_func_setvbuf=yes -ac_cv_func_setvbuf_reversed=no -ac_cv_func_sigaction=yes -ac_cv_func_sigvec=no -ac_cv_func_strdup=yes -ac_cv_func_strstr=yes -ac_cv_func_symlink=yes -ac_cv_func_tcgetpgrp=yes -ac_cv_func_times=yes -ac_cv_func_unlink=yes -ac_cv_func_vfork=yes -ac_cv_func_vfork_works=yes -ac_cv_func_vsnprintf=yes -ac_cv_header_dirent_dirent_h=yes -ac_cv_header_fcntl_h=yes -ac_cv_header_getopt_h=yes -ac_cv_header_gpm_h=yes -ac_cv_header_inttypes_h=yes -ac_cv_header_iostream=yes -ac_cv_header_limits_h=yes -ac_cv_header_locale_h=yes -ac_cv_header_math_h=yes -ac_cv_header_memory_h=yes -ac_cv_header_poll_h=yes -ac_cv_header_stdc=yes -ac_cv_header_stdint_h=yes -ac_cv_header_stdlib_h=yes -ac_cv_header_string_h=yes -ac_cv_header_strings_h=yes -ac_cv_header_sys_bsdtypes_h=no -ac_cv_header_sys_ioctl_h=yes -ac_cv_header_sys_param_h=yes -ac_cv_header_sys_poll_h=yes -ac_cv_header_sys_select_h=yes -ac_cv_header_sys_stat_h=yes -ac_cv_header_sys_time_h=yes -ac_cv_header_sys_times_h=yes -ac_cv_header_sys_types_h=yes -ac_cv_header_termio_h=yes -ac_cv_header_termios_h=yes -ac_cv_header_time=yes -ac_cv_header_ttyent_h=yes -ac_cv_header_typeinfo=yes -ac_cv_header_unistd_h=yes -ac_cv_header_vfork_h=no -ac_cv_header_wctype_h=yes -ac_cv_host=x86_64-unknown-linux-gnu -ac_cv_host_alias=x86_64-unknown-linux-gnu -ac_cv_lib_dir_opendir=no -ac_cv_lib_dl_dlsym=yes -ac_cv_lib_gpm_Gpm_Open=yes -ac_cv_lib_gpm_Gpm_Wgetch=yes -ac_cv_lib_util_openpty=yes -ac_cv_objext=o -ac_cv_path_CXX=/bin/g++ -ac_cv_path_LDCONFIG=/bin/ldconfig -ac_cv_path_TIC_PATH=/bin/tic -ac_cv_path_ac_pt_PKG_CONFIG=/bin/pkg-config -ac_cv_path_install='/bin/install -c' -ac_cv_prog_AWK=gawk -ac_cv_prog_CPP='gcc -E' -ac_cv_prog_CXXCPP='/bin/g++ -E' -ac_cv_prog_MAKE_LOWER_TAGS=no -ac_cv_prog_MAKE_UPPER_TAGS=no -ac_cv_prog_ac_ct_AR=ar -ac_cv_prog_ac_ct_CC=gcc -ac_cv_prog_ac_ct_CXX=g++ -ac_cv_prog_ac_ct_LD=ld -ac_cv_prog_ac_ct_RANLIB=ranlib -ac_cv_prog_cc_g=yes -ac_cv_prog_cc_stdc= -ac_cv_prog_cxx_g=yes -ac_cv_prog_egrep='grep -E' -ac_cv_prog_gcc_traditional=no -ac_cv_prog_make_make_set=yes -ac_cv_sizeof_signed_char=1 -ac_cv_sys_file_offset_bits=no -ac_cv_sys_large_files=no -ac_cv_sys_largefile_CC=no -ac_cv_sys_largefile_source=no -ac_cv_sys_long_file_names=yes -ac_cv_target=x86_64-unknown-linux-gnu -ac_cv_target_alias=x86_64-unknown-linux-gnu -ac_cv_type_pid_t=yes -ac_cv_type_signal=void -ac_cv_type_signed_char=yes -am_cv_langinfo_codeset=yes -cf_cv_1UL=1U -cf_cv_abi_version=5 -cf_cv_ansi_cc=-DCC_HAS_PROTOS -cf_cv_ar_flags=-curv -cf_cv_builtin_bool=1 -cf_cv_cc_bool_type=0 -cf_cv_check_gpm_wgetch=unknown -cf_cv_cpp_param_init=no -cf_cv_cpp_static_cast=yes -cf_cv_dcl_errno=yes -cf_cv_define_sigwinch=yes -cf_cv_do_symlinks=yes -cf_cv_enable_lp64=0 -cf_cv_enable_opaque=NCURSES_OPAQUE -cf_cv_enable_reentrant=0 -cf_cv_func_mkstemp=yes -cf_cv_func_nanosleep=yes -cf_cv_func_openpty=pty.h -cf_cv_func_vsscanf=vsscanf -cf_cv_gcc_inline=yes -cf_cv_gnu_source=yes -cf_cv_gpm_soname=libgpm.so.2 -cf_cv_have___va_copy=yes -cf_cv_have_errno=no -cf_cv_have_isascii=yes -cf_cv_have_tcgetattr=yes -cf_cv_have_va_copy=yes -cf_cv_header_stdbool_h=1 -cf_cv_lib_util=yes -cf_cv_libstdcpp=no -cf_cv_link_dataonly=yes -cf_cv_link_funcs=' link symlink' -cf_cv_makeflags= -cf_cv_mixedcase=yes -cf_cv_need_libm=yes -cf_cv_prog_CC_c_o=yes -cf_cv_prog_CXX_c_o=yes -cf_cv_regex_hdrs=regex.h -cf_cv_rel_version=5.9 -cf_cv_rm_so_locs=no -cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' -cf_cv_shlib_version=rel -cf_cv_shlib_version_infix=no -cf_cv_sig_atomic_t='volatile sig_atomic_t' -cf_cv_sizechange=yes -cf_cv_src_modules='ncurses progs panel menu form' -cf_cv_struct_dirent64=no -cf_cv_sys_time_select=yes -cf_cv_system_name=linux-gnu -cf_cv_timestamp='Fri Jan 8 11:00:30 CET 2021' -cf_cv_type_of_bool='unsigned char' -cf_cv_type_sigaction=no -cf_cv_typeof_chtype=int -cf_cv_typeof_mmask_t=long -cf_cv_unsigned_literals=yes -cf_cv_working_poll=yes - -## ------------ ## -## confdefs.h. ## -## ------------ ## - -#define SYSTEM_NAME "linux-gnu" -#define CC_HAS_PROTOS 1 -#ifdef __cplusplus -#include -#endif -#define HAVE_LONG_FILE_NAMES 1 -#define MIXEDCASE_FILENAMES 1 -#define HAVE_GPM_H 1 -#define HAVE_LIBDL 1 -#define LIBGPM_SONAME "libgpm.so.2" -#define HAVE_LIBGPM 1 -#define USE_DATABASE 1 -#define TERMINFO_DIRS "/home/martino/avrdude-build-script/objdir/share/terminfo" -#define TERMINFO "/home/martino/avrdude-build-script/objdir/share/terminfo" -#define HAVE_BIG_CORE 1 -#define USE_TERMCAP 1 -#define TERMPATH "/etc/termcap:/usr/share/misc/termcap" -#define USE_HOME_TERMINFO 1 -#define USE_ROOT_ENVIRON 1 -#define HAVE_REMOVE 1 -#define HAVE_UNLINK 1 -#define HAVE_LINK 1 -#define HAVE_SYMLINK 1 -#define USE_LINKS 1 -#define HAVE_LANGINFO_CODESET 1 -#define HAVE_FSEEKO 1 -#define HAVE_CURSES_VERSION 1 -#define HAVE_HAS_KEY 1 -#define HAVE_RESIZETERM 1 -#define HAVE_RESIZE_TERM 1 -#define HAVE_TERM_ENTRY_H 1 -#define HAVE_USE_DEFAULT_COLORS 1 -#define HAVE_WRESIZE 1 -#define NCURSES_EXT_FUNCS 1 -#define NCURSES_NO_PADDING 1 -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_STRINGS_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_UNISTD_H 1 -#define SIZEOF_SIGNED_CHAR 1 -#define USE_SIGWINCH 1 -#define USE_ASSUMED_COLOR 1 -#define USE_HASHMAP 1 -#define NCURSES_WRAP_PREFIX "_nc_" -#define GCC_SCANF 1 -#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) -#define GCC_PRINTF 1 -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#define GCC_UNUSED __attribute__((unused)) -#define GCC_NORETURN __attribute__((noreturn)) -#define NDEBUG 1 -#define HAVE_NC_ALLOC_H 1 -#define HAVE_GETTIMEOFDAY 1 -#define STDC_HEADERS 1 -#define HAVE_DIRENT_H 1 -#define TIME_WITH_SYS_TIME 1 -#define HAVE_REGEX_H_FUNCS 1 -#define HAVE_FCNTL_H 1 -#define HAVE_GETOPT_H 1 -#define HAVE_LIMITS_H 1 -#define HAVE_LOCALE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_POLL_H 1 -#define HAVE_SYS_IOCTL_H 1 -#define HAVE_SYS_PARAM_H 1 -#define HAVE_SYS_POLL_H 1 -#define HAVE_SYS_SELECT_H 1 -#define HAVE_SYS_TIME_H 1 -#define HAVE_SYS_TIMES_H 1 -#define HAVE_TTYENT_H 1 -#define HAVE_UNISTD_H 1 -#define HAVE_WCTYPE_H 1 -#define HAVE_SYS_TIME_SELECT 1 -#define SIG_ATOMIC_T volatile sig_atomic_t -#define TYPEOF_CHTYPE int -#define HAVE_GETCWD 1 -#define HAVE_GETEGID 1 -#define HAVE_GETEUID 1 -#define HAVE_GETTTYNAM 1 -#define HAVE_POLL 1 -#define HAVE_REMOVE 1 -#define HAVE_SELECT 1 -#define HAVE_SETBUF 1 -#define HAVE_SETBUFFER 1 -#define HAVE_SETVBUF 1 -#define HAVE_SIGACTION 1 -#define HAVE_STRDUP 1 -#define HAVE_STRSTR 1 -#define HAVE_TCGETPGRP 1 -#define HAVE_TIMES 1 -#define HAVE_VSNPRINTF 1 -#define HAVE_ISASCII 1 -#define HAVE_NANOSLEEP 1 -#define HAVE_TERMIO_H 1 -#define HAVE_TERMIOS_H 1 -#define HAVE_UNISTD_H 1 -#define HAVE_TCGETATTR 1 -#define HAVE_VSSCANF 1 -#define HAVE_MKSTEMP 1 -#define RETSIGTYPE void -#define HAVE_SIZECHANGE 1 -#define HAVE_WORKING_POLL 1 -#define HAVE_VA_COPY 1 -#define HAVE___VA_COPY 1 -#define HAVE_UNISTD_H 1 -#define HAVE_FORK 1 -#define HAVE_VFORK 1 -#define HAVE_WORKING_VFORK 1 -#define HAVE_WORKING_FORK 1 -#define USE_OPENPTY_HEADER -#define USE_XTERM_PTY 1 -#define HAVE_IOSTREAM 1 -#define HAVE_TYPEINFO 1 -#define IOSTREAM_NAMESPACE 1 -#define ETIP_NEEDS_MATH_H 1 -#define CPP_HAS_STATIC_CAST 1 -#define HAVE_SLK_COLOR 1 -#define HAVE_PANEL_H 1 -#define HAVE_LIBPANEL 1 -#define HAVE_MENU_H 1 -#define HAVE_LIBMENU 1 -#define HAVE_FORM_H 1 -#define HAVE_LIBFORM 1 -#define NCURSES_PATHSEP ':' -#define NCURSES_VERSION_STRING "5.9.20110404" - - -configure: exit 0 diff --git a/deps/ncurses-5.9/config.status b/deps/ncurses-5.9/config.status deleted file mode 100755 index 9ba6447..0000000 --- a/deps/ncurses-5.9/config.status +++ /dev/null @@ -1,1608 +0,0 @@ -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=${CONFIG_SHELL-/bin/sh} -ac_cs_invocation="$0 $@" - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } - -exec 6>&1 - -config_files=" include/MKterm.h.awk include/curses.head:include/curses.h.in include/ncurses_dll.h include/termcap.h include/unctrl.h man/Makefile include/Makefile ncurses/Makefile progs/Makefile panel/Makefile menu/Makefile form/Makefile test/Makefile misc/Makefile c++/Makefile misc/run_tic.sh:misc/run_tic.in misc/ncurses-config:misc/ncurses-config.in man/ncurses5-config.1:man/MKncu_config.in Makefile" -config_headers=" include/ncurses_cfg.h:include/ncurses_cfg.hin" -config_commands=" default" - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." -ac_cs_version="\ -config.status -configured by ./configure, generated by GNU Autoconf 2.52.20101002, - with options \"--prefix=/home/martino/avrdude-build-script/objdir --disable-shared --without-debug --without-ada --with-termlib --enable-termcap 'CFLAGS=-w -O2 -fPIC' CPPFLAGS=-P 'CXXFLAGS=-w -O2 -fPIC' 'LDFLAGS=-s -fPIC'\" - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This config.status script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it." -srcdir=. -INSTALL="/bin/install -c" -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running /bin/sh ./configure " --prefix=/home/martino/avrdude-build-script/objdir --disable-shared --without-debug --without-ada --with-termlib --enable-termcap 'CFLAGS=-w -O2 -fPIC' CPPFLAGS=-P 'CXXFLAGS=-w -O2 -fPIC' 'LDFLAGS=-s -fPIC' " --no-create --no-recursion" - exec /bin/sh ./configure --prefix=/home/martino/avrdude-build-script/objdir --disable-shared --without-debug --without-ada --with-termlib --enable-termcap 'CFLAGS=-w -O2 -fPIC' CPPFLAGS=-P 'CXXFLAGS=-w -O2 -fPIC' 'LDFLAGS=-s -fPIC' --no-create --no-recursion ;; - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:19625: 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;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:19644: 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;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -exec 5>>config.log -cat >&5 << _ACEOF - -## ----------------------- ## -## Running config.status. ## -## ----------------------- ## - -This file was extended by $as_me 2.52.20101002, executed with - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - > $ac_cs_invocation -on `(hostname || uname -n) 2>/dev/null | sed 1q` - -_ACEOF -# -# INIT-COMMANDS section. -# - -### Special initialization commands, used to pass information from the -### configuration-run into config.status - -AWK="gawk" -DFT_ARG_SUFFIX="" -DFT_LWR_MODEL="normal" -ECHO_LINK="" -LDCONFIG="/bin/ldconfig" -LIBTOOL_VERSION="-version-number" -LIB_NAME="ncurses" -LIB_SUBSETS="ticlib+termlib+ext_tinfo base+ext_funcs" -LIB_SUFFIX="" -LIB_TRACING="DEBUG" -LN_S="ln -s -f" -MAKE_TERMINFO="" -NCURSES_MAJOR="5" -NCURSES_MINOR="9" -NCURSES_OSPEED="short" -NCURSES_PATCH="20110404" -SRC_SUBDIRS=" man include ncurses progs panel menu form test misc c++" -TERMINFO="/home/martino/avrdude-build-script/objdir/share/terminfo" -TICS_ARG_SUFFIX="" -TICS_LIB_SUFFIX="" -TICS_NAME="tic" -TIC_PATH="/bin/tic" -TINFO_ARG_SUFFIX="tinfo" -TINFO_LIB_SUFFIX="tinfo" -TINFO_NAME="tinfo" -TINFO_SUFFIX=".a" -USE_OLD_MAKERULES="" -WITH_CURSES_H="yes" -WITH_ECHO="yes" -WITH_OVERWRITE="no" -cf_LIST_MODELS=" normal" -cf_cv_abi_version="5" -cf_cv_do_relink="" -cf_cv_do_symlinks="yes" -cf_cv_enable_lp64="0" -cf_cv_enable_opaque="NCURSES_OPAQUE" -cf_cv_prog_CC_c_o=yes -cf_cv_prog_CXX_c_o=yes -cf_cv_rel_version="5.9" -cf_cv_rm_so_locs="no" -cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' -cf_cv_shlib_version="rel" -cf_cv_shlib_version_infix="no" -cf_cv_system_name="linux-gnu" -cf_with_ada="no" -cf_with_cxx_binding="yes" -cf_with_manpages="yes" -cf_with_tests="yes" -host="x86_64-unknown-linux-gnu" -target="x86_64-unknown-linux-gnu" - -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "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/termcap.h" ) CONFIG_FILES="$CONFIG_FILES include/termcap.h" ;; - "include/unctrl.h" ) CONFIG_FILES="$CONFIG_FILES include/unctrl.h" ;; - "$SUB_SCRIPTS" ) CONFIG_FILES="$CONFIG_FILES $SUB_SCRIPTS" ;; - "$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:19750: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - - -# -# CONFIG_FILES section. -# - -# No need to generate the scripts if there are no CONFIG_FILES. -# This happens for instance when ./config.status config.h -if test -n "$CONFIG_FILES"; then - # Protect against being on the right side of a sed subst in config.status. - sed 's/,@/@@/; s/@,/@@/; s/,;t t$/@;t t/; /@;t t$/s/[\\&,]/\\&/g; - s/@@/,@/; s/@@/@,/; s/@;t t$/,;t t/' >$tmp/subs.sed <<\CEOF -s,@SHELL@,/bin/sh,;t t -s,@exec_prefix@,${prefix},;t t -s,@prefix@,/home/martino/avrdude-build-script/objdir,;t t -s,@program_transform_name@,s,x,x,,;t t -s,@bindir@,${exec_prefix}/bin,;t t -s,@sbindir@,${exec_prefix}/sbin,;t t -s,@libexecdir@,${exec_prefix}/libexec,;t t -s,@datadir@,${prefix}/share,;t t -s,@sysconfdir@,${prefix}/etc,;t t -s,@sharedstatedir@,${prefix}/com,;t t -s,@localstatedir@,${prefix}/var,;t t -s,@libdir@,${exec_prefix}/lib,;t t -s,@includedir@,${prefix}/include/ncurses,;t t -s,@oldincludedir@,/usr/include,;t t -s,@infodir@,${prefix}/info,;t t -s,@mandir@,${prefix}/man,;t t -s,@PACKAGE_NAME@,,;t t -s,@PACKAGE_TARNAME@,,;t t -s,@PACKAGE_VERSION@,,;t t -s,@PACKAGE_STRING@,,;t t -s,@PACKAGE_BUGREPORT@,,;t t -s,@build_alias@,,;t t -s,@host_alias@,,;t t -s,@target_alias@,,;t t -s,@ECHO_C@,,;t t -s,@ECHO_N@,-n,;t t -s,@ECHO_T@,,;t t -s,@PATH_SEPARATOR@,:,;t t -s,@DEFS@,-DHAVE_CONFIG_H,;t t -s,@LIBS@,-ldl ,;t t -s,@top_builddir@,/home/martino/avrdude-build-script/ncurses-5.9,;t t -s,@EGREP@,grep -E,;t t -s,@NCURSES_MAJOR@,5,;t t -s,@NCURSES_MINOR@,9,;t t -s,@NCURSES_PATCH@,20110404,;t t -s,@cf_cv_rel_version@,5.9,;t t -s,@cf_cv_abi_version@,5,;t t -s,@cf_cv_builtin_bool@,1,;t t -s,@cf_cv_header_stdbool_h@,1,;t t -s,@cf_cv_type_of_bool@,unsigned char,;t t -s,@build@,x86_64-unknown-linux-gnu,;t t -s,@build_cpu@,x86_64,;t t -s,@build_vendor@,unknown,;t t -s,@build_os@,linux-gnu,;t t -s,@host@,x86_64-unknown-linux-gnu,;t t -s,@host_cpu@,x86_64,;t t -s,@host_vendor@,unknown,;t t -s,@host_os@,linux-gnu,;t t -s,@target@,x86_64-unknown-linux-gnu,;t t -s,@target_cpu@,x86_64,;t t -s,@target_vendor@,unknown,;t t -s,@target_os@,linux-gnu,;t t -s,@CC@,gcc,;t t -s,@CFLAGS@,-w -O2 -fPIC --param max-inline-insns-single=1200,;t t -s,@LDFLAGS@,-s -fPIC,;t t -s,@CPPFLAGS@,-P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir},;t t -s,@ac_ct_CC@,gcc,;t t -s,@EXEEXT@,,;t t -s,@OBJEXT@,o,;t t -s,@CPP@,gcc -E,;t t -s,@EXTRA_CPPFLAGS@,,;t t -s,@PROG_EXT@,,;t t -s,@LDCONFIG@,/bin/ldconfig,;t t -s,@CXX@,/bin/g++,;t t -s,@CXXFLAGS@,-w -O2 -fPIC,;t t -s,@ac_ct_CXX@,g++,;t t -s,@AWK@,gawk,;t t -s,@INSTALL_PROGRAM@,${INSTALL},;t t -s,@INSTALL_SCRIPT@,${INSTALL},;t t -s,@INSTALL_DATA@,${INSTALL} -m 644,;t t -s,@LINT@,,;t t -s,@LINT_OPTS@,,;t t -s,@LN_S@,ln -s -f,;t t -s,@PKG_CONFIG@,/bin/pkg-config,;t t -s,@ac_pt_PKG_CONFIG@,/bin/pkg-config,;t t -s,@PKG_CONFIG_LIBDIR@,/lib/pkgconfig,;t t -s,@SET_MAKE@,,;t t -s,@CTAGS@,,;t t -s,@ETAGS@,,;t t -s,@MAKE_LOWER_TAGS@,#,;t t -s,@MAKE_UPPER_TAGS@,#,;t t -s,@cf_cv_makeflags@,,;t t -s,@RANLIB@,ranlib,;t t -s,@ac_ct_RANLIB@,ranlib,;t t -s,@LD@,ld,;t t -s,@ac_ct_LD@,ld,;t t -s,@AR@,ar,;t t -s,@ac_ct_AR@,ar,;t t -s,@ARFLAGS@,-curv,;t t -s,@DESTDIR@,,;t t -s,@BUILD_CC@,${CC},;t t -s,@BUILD_CPP@,${CPP},;t t -s,@BUILD_CFLAGS@,${CFLAGS},;t t -s,@BUILD_CPPFLAGS@,${CPPFLAGS},;t t -s,@BUILD_LDFLAGS@,${LDFLAGS},;t t -s,@BUILD_LIBS@,${LIBS},;t t -s,@BUILD_EXEEXT@,$x,;t t -s,@BUILD_OBJEXT@,o,;t t -s,@cf_list_models@, normal,;t t -s,@LIBTOOL_VERSION@,-version-number,;t t -s,@LIBTOOL@,,;t t -s,@LT_UNDEF@,,;t t -s,@LIBTOOL_CXX@,,;t t -s,@LIBTOOL_OPTS@,,;t t -s,@LIB_CREATE@,${AR} -cr,;t t -s,@LIB_OBJECT@,${OBJECTS},;t t -s,@LIB_SUFFIX@,,;t t -s,@LIB_PREP@,ranlib,;t t -s,@LIB_CLEAN@,,;t t -s,@LIB_COMPILE@,,;t t -s,@LIB_LINK@,${CC},;t t -s,@LIB_INSTALL@,,;t t -s,@LIB_UNINSTALL@,,;t t -s,@DFT_LWR_MODEL@,normal,;t t -s,@DFT_UPR_MODEL@,NORMAL,;t t -s,@TICS_NAME@,tic,;t t -s,@TINFO_NAME@,tinfo,;t t -s,@LIB_NAME@,ncurses,;t t -s,@LIB_PREFIX@,lib,;t t -s,@CC_G_OPT@,-g,;t t -s,@CXX_G_OPT@,-g,;t t -s,@LD_MODEL@,,;t t -s,@CC_SHARED_OPTS@,-fPIC,;t t -s,@LD_RPATH_OPT@,-Wl,-rpath,,;t t -s,@LD_SHARED_OPTS@,,;t t -s,@MK_SHARED_LIB@,${CC} ${CFLAGS} -shared -Wl,-soname,`basename $@ .${REL_VERSION}`.${ABI_VERSION},-stats,-lc -o $@,;t t -s,@LINK_PROGS@,,;t t -s,@LINK_TESTS@,,;t t -s,@EXTRA_LDFLAGS@,,;t t -s,@LOCAL_LDFLAGS@,,;t t -s,@LOCAL_LDFLAGS2@,,;t t -s,@INSTALL_LIB@,-m 644,;t t -s,@cf_ldd_prog@,,;t t -s,@TERMINFO_SRC@,${top_srcdir}/misc/terminfo.src,;t t -s,@FALLBACK_LIST@,,;t t -s,@WHICH_XTERM@,xterm-new,;t t -s,@TERMINFO_DIRS@,/home/martino/avrdude-build-script/objdir/share/terminfo,;t t -s,@TERMINFO@,/home/martino/avrdude-build-script/objdir/share/terminfo,;t t -s,@MAKE_TERMINFO@,,;t t -s,@USE_BIG_STRINGS@,1,;t t -s,@TERMPATH@,/etc/termcap:/usr/share/misc/termcap,;t t -s,@BROKEN_LINKER@,0,;t t -s,@NCURSES_CH_T@,chtype,;t t -s,@NCURSES_LIBUTF8@,0,;t t -s,@NEED_WCHAR_H@,0,;t t -s,@NCURSES_MBSTATE_T@,0,;t t -s,@NCURSES_WCHAR_T@,0,;t t -s,@NCURSES_WINT_T@,0,;t t -s,@NCURSES_OK_WCHAR_T@,,;t t -s,@NCURSES_OK_WINT_T@,,;t t -s,@cf_cv_enable_lp64@,0,;t t -s,@NCURSES_TPARM_VARARGS@,1,;t t -s,@NCURSES_BOOL@,auto,;t t -s,@TERMINFO_CAPS@,Caps,;t t -s,@NCURSES_OSPEED@,short,;t t -s,@NCURSES_CCHARW_MAX@,5,;t t -s,@MANPAGE_RENAMES@,no,;t t -s,@NCURSES_EXT_FUNCS@,1,;t t -s,@GENERATED_EXT_FUNCS@,generated,;t t -s,@NCURSES_SP_FUNCS@,0,;t t -s,@GENERATED_SP_FUNCS@,,;t t -s,@NCURSES_CONST@,/*nothing*/,;t t -s,@NCURSES_EXT_COLORS@,0,;t t -s,@NCURSES_MOUSE_VERSION@,1,;t t -s,@NCURSES_SBOOL@,char,;t t -s,@NCURSES_XNAMES@,1,;t t -s,@NCURSES_INTEROP_FUNCS@,0,;t t -s,@PTHREAD@,,;t t -s,@cf_cv_enable_reentrant@,0,;t t -s,@cf_cv_enable_opaque@,NCURSES_OPAQUE,;t t -s,@NCURSES_OPAQUE@,0,;t t -s,@NCURSES_SIZE_T@,short,;t t -s,@NCURSES_WRAP_PREFIX@,_nc_,;t t -s,@ECHO_LINK@,,;t t -s,@ADAFLAGS@,,;t t -s,@EXTRA_CFLAGS@,,;t t -s,@EXTRA_CXXFLAGS@,,;t t -s,@ADA_TRACE@,FALSE,;t t -s,@MATH_LIB@,-lm,;t t -s,@NCURSES_INLINE@,inline,;t t -s,@cf_cv_typeof_chtype@,int,;t t -s,@cf_cv_1UL@,1U,;t t -s,@cf_cv_typeof_mmask_t@,long,;t t -s,@HAVE_VSSCANF@,1,;t t -s,@TEST_LIBS@,-lutil ,;t t -s,@TEST_LIBS2@,,;t t -s,@CXXCPP@,/bin/g++ -E,;t t -s,@CXXLDFLAGS@,,;t t -s,@CXX_AR@,$(AR),;t t -s,@CXX_ARFLAGS@,$(ARFLAGS),;t t -s,@CXXLIBS@,,;t t -s,@USE_CXX_BOOL@,defined(__cplusplus),;t t -s,@gnat_exists@,,;t t -s,@M4_exists@,,;t t -s,@cf_ada_make@,,;t t -s,@cf_compile_generics@,,;t t -s,@cf_generic_objects@,,;t t -s,@USE_GNAT_SIGINT@,,;t t -s,@PRAGMA_UNREF@,,;t t -s,@USE_OLD_MAKERULES@,,;t t -s,@USE_GNAT_PROJECTS@,,;t t -s,@USE_GNAT_LIBRARIES@,,;t t -s,@cf_ada_compiler@,,;t t -s,@cf_ada_package@,,;t t -s,@ADA_INCLUDE@,,;t t -s,@ADA_OBJECTS@,,;t t -s,@ADA_SHAREDLIB@,,;t t -s,@MAKE_ADA_SHAREDLIB@,,;t t -s,@ACPPFLAGS@,-I. -I../include -I../../include -I${includedir},;t t -s,@DFT_ARG_SUFFIX@,,;t t -s,@DFT_DEP_SUFFIX@,.a,;t t -s,@DFT_OBJ_SUBDIR@,objects,;t t -s,@CXX_LIB_SUFFIX@,.a,;t t -s,@TICS_ARG_SUFFIX@,,;t t -s,@TICS_DEP_SUFFIX@,,;t t -s,@TICS_LIB_SUFFIX@,,;t t -s,@TICS_ARGS@,-L../lib -lncurses,;t t -s,@TINFO_ARG_SUFFIX@,tinfo,;t t -s,@TINFO_DEP_SUFFIX@,tinfo.a,;t t -s,@TINFO_LIB_SUFFIX@,tinfo,;t t -s,@TINFO_ARGS@,-L../lib -ltinfo,;t t -s,@TINFO_ARGS2@,-L../../lib -ltinfo,;t t -s,@LDFLAGS_STATIC@,-static,;t t -s,@LDFLAGS_SHARED@,-dynamic,;t t -s,@WITH_OVERWRITE@,no,;t t -s,@TICS_LIST@, -ltinfo,;t t -s,@TINFO_LIST@,,;t t -s,@SHLIB_LIST@,-ldl -ltinfo,;t t -s,@NCURSES_TREE@,,;t t -s,@TEST_ARGS@,-L../lib -lform -lmenu -lpanel -lncurses -ltinfo,;t t -s,@TEST_DEPS@,../lib/libform.a ../lib/libmenu.a ../lib/libpanel.a ../lib/libncurses.a ../lib/libtinfo.a,;t t -s,@TEST_ARG2@,-L../../lib -lform -lmenu -lpanel -lncurses -ltinfo,;t t -s,@TEST_DEP2@,../../lib/libform.a ../../lib/libmenu.a ../../lib/libpanel.a ../../lib/libncurses.a ../../lib/libtinfo.a,;t t -s,@ADA_SUBDIRS@,,;t t -s,@DIRS_TO_MAKE@,lib objects,;t t -s,@NCURSES_SHLIB2@,sh $(top_srcdir)/misc/shlib,;t t -s,@HAVE_TCGETATTR@,1,;t t -s,@HAVE_TERMIO_H@,1,;t t -s,@HAVE_TERMIOS_H@,1,;t t -s,@MAKE_PC_FILES@,#,;t t -s,@cross_compiling@,no,;t t -s,@TIC_PATH@,/bin/tic,;t t -s,@MAKE_TESTS@,,;t t -s,@ADAHTML_DIR@,../../doc/html/ada,;t t -CEOF - - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # 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 - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` - else - ac_dir_suffix= ac_dots= - fi - - case $srcdir in - .) ac_srcdir=. - if test -z "$ac_dots"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_dots$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_dots$srcdir ;; - esac - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_dots$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:20160: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - configure_input="Generated automatically from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:20178: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:20191: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - sed "/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -} - -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_iB='\([ ]\),\1#\2define\3' -ac_iC=' ' -ac_iD='\4,;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:20257: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:20268: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:20281: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - - rm -f conftest.frag - cat >> conftest.frag < -#endif -#define HAVE_LONG_FILE_NAMES 1 -#define MIXEDCASE_FILENAMES 1 -#define HAVE_GPM_H 1 -#define HAVE_LIBDL 1 -#define LIBGPM_SONAME "libgpm.so.2" -#define HAVE_LIBGPM 1 -#define USE_DATABASE 1 -#define TERMINFO_DIRS "/home/martino/avrdude-build-script/objdir/share/terminfo" -#define TERMINFO "/home/martino/avrdude-build-script/objdir/share/terminfo" -#define HAVE_BIG_CORE 1 -#define USE_TERMCAP 1 -#define TERMPATH "/etc/termcap:/usr/share/misc/termcap" -#define USE_HOME_TERMINFO 1 -#define USE_ROOT_ENVIRON 1 -#define HAVE_REMOVE 1 -#define HAVE_UNLINK 1 -#define HAVE_LINK 1 -#define HAVE_SYMLINK 1 -#define USE_LINKS 1 -#define HAVE_LANGINFO_CODESET 1 -#define HAVE_FSEEKO 1 -#define HAVE_CURSES_VERSION 1 -#define HAVE_HAS_KEY 1 -#define HAVE_RESIZETERM 1 -#define HAVE_RESIZE_TERM 1 -#define HAVE_TERM_ENTRY_H 1 -#define HAVE_USE_DEFAULT_COLORS 1 -#define HAVE_WRESIZE 1 -#define NCURSES_EXT_FUNCS 1 -#define NCURSES_NO_PADDING 1 -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -CEOF - cat >> conftest.frag <> conftest.frag <> conftest.frag < -#define USE_XTERM_PTY 1 -#define HAVE_IOSTREAM 1 -#define HAVE_TYPEINFO 1 -#define IOSTREAM_NAMESPACE 1 -#define ETIP_NEEDS_MATH_H 1 -#define CPP_HAS_STATIC_CAST 1 -#define HAVE_SLK_COLOR 1 -#define HAVE_PANEL_H 1 -#define HAVE_LIBPANEL 1 -#define HAVE_MENU_H 1 -#define HAVE_LIBMENU 1 -#define HAVE_FORM_H 1 -#define HAVE_LIBFORM 1 -#define NCURSES_PATHSEP ':' -#define NCURSES_VERSION_STRING "5.9.20110404" -CEOF - cat >> conftest.edit < $tmp/out -rm -f $tmp/in -mv $tmp/out $tmp/in -rm -f conftest.edit conftest.frag - - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated automatically by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - 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:20339: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - fi - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -done -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - - case $ac_dest in - default ) -if test "x$cf_with_tests" != xno ; then - -for cf_dir in test -do - if test ! -d $srcdir/$cf_dir; then - continue - elif test -f $srcdir/$cf_dir/programs; then - $AWK -f $srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LINK" $srcdir/$cf_dir/programs >>$cf_dir/Makefile - fi -done - -fi - - case $cf_cv_system_name in #(vi - OS/2*|os2*) #(vi - LIB_PREFIX='' - ;; - *) LIB_PREFIX='lib' - ;; - esac -cf_prefix=$LIB_PREFIX - -if test $cf_cv_shlib_version = cygdll ; then - TINFO_NAME=$TINFO_ARG_SUFFIX - TINFO_SUFFIX=.dll -fi - -if test -n "$TINFO_SUFFIX" ; then - case $TINFO_SUFFIX in - tw*) - TINFO_NAME="${TINFO_NAME}tw" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^tw//'` - ;; - t*) - TINFO_NAME="${TINFO_NAME}t" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^t//'` - ;; - w*) - TINFO_NAME="${TINFO_NAME}w" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^w//'` - ;; - esac -fi - -for cf_dir in $SRC_SUBDIRS -do - if test ! -d $srcdir/$cf_dir ; then - continue - elif test -f $srcdir/$cf_dir/modules; then - - SHARED_LIB= - LIBS_TO_MAKE= - for cf_item in $cf_LIST_MODELS - do - - case $cf_item in #(vi - libtool) #(vi - cf_suffix='.la' - cf_depsuf=$cf_suffix - ;; - normal) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - debug) #(vi - cf_suffix='_g.a' - cf_depsuf=$cf_suffix - ;; - profile) #(vi - cf_suffix='_p.a' - cf_depsuf=$cf_suffix - ;; - shared) #(vi - case $cf_cv_system_name in - aix[56]*) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - cygwin*) #(vi - cf_suffix='.dll' - cf_depsuf='.dll.a' - ;; - darwin*) #(vi - cf_suffix='.dylib' - cf_depsuf=$cf_suffix - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - *) #(vi - cf_suffix='.sl' - cf_depsuf=$cf_suffix - ;; - esac - ;; - *) cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - esac - esac - test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}" - test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}" - - if test $cf_item = shared ; then - if test "$cf_cv_do_symlinks" = yes ; then - case "$cf_cv_shlib_version" in #(vi - rel) #(vi - case "$cf_cv_system_name" in #(vi - darwin*) - case .${LIB_SUFFIX} in - .tw*) - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_suffix=tw'.${REL_VERSION}'"$cf_suffix" - ;; - .t*) - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_suffix=t'.${REL_VERSION}'"$cf_suffix" - ;; - .w*) - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_suffix=w'.${REL_VERSION}'"$cf_suffix" - ;; - *) - cf_suffix='.${REL_VERSION}'"$cf_suffix" - ;; - esac - ;; #(vi - *) cf_suffix="$cf_suffix"'.${REL_VERSION}' ;; - esac - ;; - abi) - case "$cf_cv_system_name" in #(vi - darwin*) - case .${LIB_SUFFIX} in - .tw*) - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_suffix=tw'.${ABI_VERSION}'"$cf_suffix" - ;; - .t*) - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_suffix=t'.${ABI_VERSION}'"$cf_suffix" - ;; - .w*) - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_suffix=w'.${ABI_VERSION}'"$cf_suffix" - ;; - *) - cf_suffix='.${ABI_VERSION}'"$cf_suffix" - ;; - esac - ;; #(vi - *) cf_suffix="$cf_suffix"'.${ABI_VERSION}' ;; - esac - ;; - esac - fi - # cygwin needs import library, and has unique naming convention - # use autodetected ${cf_prefix} for import lib and static lib, but - # use 'cyg' prefix for shared lib. - if test $cf_cv_shlib_version = cygdll ; then - cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` - LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/cyg${cf_dir}${cf_cygsuf}" - continue - fi - fi - LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}" - done - - if test $cf_dir = ncurses ; then - cf_subsets="$LIB_SUBSETS" - cf_r_parts="$cf_subsets" - cf_liblist="$LIBS_TO_MAKE" - - while test -n "$cf_r_parts" - do - cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'` - cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[^ ]* //'` - if test "$cf_l_parts" != "$cf_r_parts" ; then - cf_item= - case $cf_l_parts in #(vi - *termlib*) #(vi - cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g` - ;; - *ticlib*) - cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g` - ;; - *) - break - ;; - esac - if test -n "$cf_item"; then - LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE" - fi - else - break - fi - done - else - cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'` - fi - - sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \ - -e "s%@SHARED_LIB@%$SHARED_LIB%" \ - $cf_dir/Makefile >$cf_dir/Makefile.out - mv $cf_dir/Makefile.out $cf_dir/Makefile - - $AWK -f $srcdir/mk-0th.awk \ - libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - - for cf_subset in $cf_subsets - do - cf_subdirs= - for cf_item in $cf_LIST_MODELS - do - echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})" - -cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - case $cf_item in #(vi - libtool) #(vi - cf_suffix='.la' - cf_depsuf=$cf_suffix - ;; - normal) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - debug) #(vi - cf_suffix='_g.a' - cf_depsuf=$cf_suffix - ;; - profile) #(vi - cf_suffix='_p.a' - cf_depsuf=$cf_suffix - ;; - shared) #(vi - case $cf_cv_system_name in - aix[56]*) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - cygwin*) #(vi - cf_suffix='.dll' - cf_depsuf='.dll.a' - ;; - darwin*) #(vi - cf_suffix='.dylib' - cf_depsuf=$cf_suffix - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - *) #(vi - cf_suffix='.sl' - cf_depsuf=$cf_suffix - ;; - esac - ;; - *) cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - esac - esac - test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}" - test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}" - - case $cf_item in - libtool) cf_subdir='obj_lo' ;; - normal) cf_subdir='objects' ;; - debug) cf_subdir='obj_g' ;; - profile) cf_subdir='obj_p' ;; - shared) - case $cf_cv_system_name in #(vi - cygwin) #(vi - cf_subdir='objects' ;; - *) - cf_subdir='obj_s' ;; - esac - esac - - # Test for case where we build libtinfo with a different name. - cf_libname=$cf_dir - if test $cf_dir = ncurses ; then - case $cf_subset in - *base*) - cf_libname=${cf_libname}$LIB_SUFFIX - ;; - *termlib*) - cf_libname=$TINFO_LIB_SUFFIX - ;; - ticlib*) - cf_libname=$TICS_LIB_SUFFIX - ;; - esac - else - cf_libname=${cf_libname}$LIB_SUFFIX - fi - if test -n "${DFT_ARG_SUFFIX}" ; then - # undo $LIB_SUFFIX add-on in CF_LIB_SUFFIX - cf_suffix=`echo $cf_suffix |sed -e "s%^${LIB_SUFFIX}%%"` - fi - - # These dependencies really are for development, not - # builds, but they are useful in porting, too. - cf_depend="../include/ncurses_cfg.h" - if test "$srcdir" = "."; then - cf_reldir="." - else - cf_reldir="\${srcdir}" - fi - - if test -f $srcdir/$cf_dir/$cf_dir.priv.h; then - cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h" - elif test -f $srcdir/$cf_dir/curses.priv.h; then - cf_depend="$cf_depend $cf_reldir/curses.priv.h" - fi - - cf_dir_suffix= - old_cf_suffix="$cf_suffix" - if test "$cf_cv_shlib_version_infix" = yes ; then - if test -n "$LIB_SUFFIX" ; then - case $LIB_SUFFIX in - tw*) - cf_libname=`echo $cf_libname | sed 's/tw$//'` - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_dir_suffix=tw - ;; - t*) - cf_libname=`echo $cf_libname | sed 's/t$//'` - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_dir_suffix=t - ;; - w*) - cf_libname=`echo $cf_libname | sed 's/w$//'` - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_dir_suffix=w - ;; - esac - fi - fi - - $AWK -f $srcdir/mk-1st.awk \ - name=${cf_libname}${cf_dir_suffix} \ - traces=$LIB_TRACING \ - MODEL=$cf_ITEM \ - model=$cf_subdir \ - prefix=$cf_prefix \ - suffix=$cf_suffix \ - subset=$cf_subset \ - SymLink="$LN_S" \ - TermlibRoot=$TINFO_NAME \ - TermlibSuffix=$TINFO_SUFFIX \ - ShlibVer=$cf_cv_shlib_version \ - ShlibVerInfix=$cf_cv_shlib_version_infix \ - ReLink=${cf_cv_do_relink:-no} \ - DoLinks=$cf_cv_do_symlinks \ - rmSoLocs=$cf_cv_rm_so_locs \ - ldconfig="$LDCONFIG" \ - overwrite=$WITH_OVERWRITE \ - depend="$cf_depend" \ - host="$host" \ - libtool_version="$LIBTOOL_VERSION" \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - - cf_suffix="$old_cf_suffix" - - for cf_subdir2 in $cf_subdirs lib - do - test $cf_subdir = $cf_subdir2 && break - done - test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \ - $AWK -f $srcdir/mk-2nd.awk \ - name=$cf_dir \ - traces=$LIB_TRACING \ - MODEL=$cf_ITEM \ - model=$cf_subdir \ - subset=$cf_subset \ - srcdir=$srcdir \ - echo=$WITH_ECHO \ - crenames=$cf_cv_prog_CC_c_o \ - cxxrenames=$cf_cv_prog_CXX_c_o \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - cf_subdirs="$cf_subdirs $cf_subdir" - done - done - fi - - echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >>Makefile -done - -for cf_dir in $SRC_SUBDIRS -do - if test ! -d $srcdir/$cf_dir ; then - continue - fi - - if test -f $cf_dir/Makefile ; then - case "$cf_dir" in - Ada95) #(vi - echo 'libs \' >> Makefile - echo 'install.libs \' >> Makefile - echo 'uninstall.libs ::' >> Makefile - echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >> Makefile - ;; - esac - fi - - if test -f $srcdir/$cf_dir/modules; then - echo >> Makefile - if test -f $srcdir/$cf_dir/headers; then -cat >> Makefile <> Makefile -fi -cat >> Makefile <> Makefile <> Makefile <> Makefile <> Makefile <> Makefile <headers.sh <>headers.sh </<\$END\/\$NAME>/" >> \$TMPSED - done - ;; -*) - echo "" >> \$TMPSED - ;; -esac -CF_EOF - -else - cat >>headers.sh <//" >> \$TMPSED - NAME=ncurses.h - fi - echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED - done - ;; -*) - echo "s///" >> \$TMPSED - ;; -esac -CF_EOF -fi -cat >>headers.sh < \$TMPSRC -NAME=\`basename \$SRC\` -CF_EOF -if test $WITH_CURSES_H != yes; then - cat >>headers.sh <>headers.sh <>$cf_dir/Makefile - fi - - if test -f $srcdir/$cf_dir/modules; then - if test "$cf_dir" != "c++" ; then - cat >>$cf_dir/Makefile <<"CF_EOF" -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. -CF_EOF - fi - fi -done - -if test "x$cf_with_ada" != xno ; then -if test -z "$USE_OLD_MAKERULES" ; then - $AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile -fi -fi - ;; - esac -done - -{ (exit 0); exit 0; } diff --git a/deps/ncurses-5.9/config.sub b/deps/ncurses-5.9/config.sub deleted file mode 100755 index a7d8cc9..0000000 --- a/deps/ncurses-5.9/config.sub +++ /dev/null @@ -1,1550 +0,0 @@ -#! /bin/sh -# Configuration validation subroutine script. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003 Free Software Foundation, Inc. - -timestamp='2004-03-12' - -# This file is (in principle) common to ALL GNU software. -# The presence of a machine in this file suggests that SOME GNU software -# can handle that machine. It does not imply ALL GNU software can. -# -# 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 -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, -# Boston, MA 02111-1307, USA. - -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - -# Please send patches to . Submit a context -# diff and a properly formatted ChangeLog entry. -# -# Configuration subroutine to validate and canonicalize a configuration type. -# Supply the specified configuration type as an argument. -# If it is invalid, we print an error message on stderr and exit with code 1. -# Otherwise, we print the canonical config type on stdout and succeed. - -# This file is supposed to be the same for all GNU packages -# and recognize all the CPU types, system types and aliases -# that are meaningful with *any* GNU software. -# Each package is responsible for reporting which valid configurations -# it does not support. The user should be able to distinguish -# a failure to support a valid configuration from a meaningless -# configuration. - -# The goal of this file is to map all the various variations of a given -# machine specification into a single specification in the form: -# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM -# or in some cases, the newer four-part form: -# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM -# It is wrong to echo any other type of specification. - -me=`echo "$0" | sed -e 's,.*/,,'` - -usage="\ -Usage: $0 [OPTION] CPU-MFR-OPSYS - $0 [OPTION] ALIAS - -Canonicalize a configuration name. - -Operation modes: - -h, --help print this help, then exit - -t, --time-stamp print date of last modification, then exit - -v, --version print version number, then exit - -Report bugs and patches to ." - -version="\ -GNU config.sub ($timestamp) - -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001 -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." - -help=" -Try \`$me --help' for more information." - -# Parse command line -while test $# -gt 0 ; do - case $1 in - --time-stamp | --time* | -t ) - echo "$timestamp" ; exit 0 ;; - --version | -v ) - echo "$version" ; exit 0 ;; - --help | --h* | -h ) - echo "$usage"; exit 0 ;; - -- ) # Stop option processing - shift; break ;; - - ) # Use stdin as input. - break ;; - -* ) - echo "$me: invalid option $1$help" - exit 1 ;; - - *local*) - # First pass through any local machine types. - echo $1 - exit 0;; - - * ) - break ;; - esac -done - -case $# in - 0) echo "$me: missing argument$help" >&2 - exit 1;; - 1) ;; - *) echo "$me: too many arguments$help" >&2 - exit 1;; -esac - -# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any). -# Here we must recognize all the valid KERNEL-OS combinations. -maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` -case $maybe_os in - nto-qnx* | linux-gnu* | linux-dietlibc | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | \ - kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | storm-chaos* | os2-emx* | rtmk-nova*) - os=-$maybe_os - basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` - ;; - *) - basic_machine=`echo $1 | sed 's/-[^-]*$//'` - if [ $basic_machine != $1 ] - then os=`echo $1 | sed 's/.*-/-/'` - else os=; fi - ;; -esac - -### Let's recognize common machines as not being operating systems so -### that things like config.sub decstation-3100 work. We also -### recognize some manufacturers as not being operating systems, so we -### can provide default operating systems below. -case $os in - -sun*os*) - # Prevent following clause from handling this invalid input. - ;; - -dec* | -mips* | -sequent* | -encore* | -pc532* | -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) - os= - basic_machine=$1 - ;; - -sim | -cisco | -oki | -wec | -winbond) - os= - basic_machine=$1 - ;; - -scout) - ;; - -wrs) - os=-vxworks - basic_machine=$1 - ;; - -chorusos*) - os=-chorusos - basic_machine=$1 - ;; - -chorusrdb) - os=-chorusrdb - basic_machine=$1 - ;; - -hiux*) - os=-hiuxwe2 - ;; - -sco5) - os=-sco3.2v5 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco4) - os=-sco3.2v4 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2.[4-9]*) - os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco3.2v[4-9]*) - # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -sco*) - os=-sco3.2v2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -udk*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -isc) - os=-isc2.2 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -clix*) - basic_machine=clipper-intergraph - ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` - ;; - -lynx*) - os=-lynxos - ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` - ;; - -windowsnt*) - os=`echo $os | sed -e 's/windowsnt/winnt/'` - ;; - -psos*) - os=-psos - ;; - -mint | -mint[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; -esac - -# Decode aliases for certain CPU-COMPANY combinations. -case $basic_machine in - # Recognize the basic CPU types without company name. - # Some are omitted here because they have special meanings below. - 1750a | 580 \ - | a29k \ - | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ - | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ - | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr \ - | aarch64 \ - | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx \ - | fr30 | frv \ - | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ - | i370 | i860 | i960 | ia64 \ - | ip2k | iq2000 \ - | m32r | m32rle | m68000 | m68k | m88k | mcore \ - | mips | mipsbe | mipseb | mipsel | mipsle \ - | mips16 \ - | mips64 | mips64el \ - | mips64vr | mips64vrel \ - | mips64orion | mips64orionel \ - | mips64vr4100 | mips64vr4100el \ - | mips64vr4300 | mips64vr4300el \ - | mips64vr5000 | mips64vr5000el \ - | mipsisa32 | mipsisa32el \ - | mipsisa32r2 | mipsisa32r2el \ - | mipsisa64 | mipsisa64el \ - | mipsisa64r2 | mipsisa64r2el \ - | mipsisa64sb1 | mipsisa64sb1el \ - | mipsisa64sr71k | mipsisa64sr71kel \ - | mipstx39 | mipstx39el \ - | mn10200 | mn10300 \ - | msp430 \ - | ns16k | ns32k \ - | openrisc | or32 \ - | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ - | pyramid \ - | sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \ - | sh64 | sh64le \ - | sparc | sparc64 | sparc86x | sparclet | sparclite | sparcv8 | sparcv9 | sparcv9b \ - | strongarm \ - | tahoe | thumb | tic4x | tic80 | tron \ - | v850 | v850e \ - | we32k \ - | x86 | xscale | xstormy16 | xtensa \ - | z8k) - basic_machine=$basic_machine-unknown - ;; - m6811 | m68hc11 | m6812 | m68hc12) - # Motorola 68HC11/12. - basic_machine=$basic_machine-unknown - os=-none - ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) - ;; - - # We use `pc' rather than `unknown' - # because (1) that's what they normally are, and - # (2) the word "unknown" tends to confuse beginning users. - i*86 | x86_64) - basic_machine=$basic_machine-pc - ;; - # Object if more than one company name word. - *-*-*) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; - # Recognize the basic CPU types with company name. - 580-* \ - | a29k-* \ - | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ - | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ - | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ - | avr-* \ - | bs2000-* \ - | c[123]* | c30-* | [cjt]90-* | c4x-* | c54x-* | c55x-* | c6x-* \ - | clipper-* | cydra-* \ - | d10v-* | d30v-* | dlx-* \ - | elxsi-* \ - | f30[01]-* | f700-* | fr30-* | frv-* | fx80-* \ - | h8300-* | h8500-* \ - | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ - | i*86-* | i860-* | i960-* | ia64-* \ - | ip2k-* | iq2000-* \ - | m32r-* | m32rle-* \ - | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | mcore-* \ - | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ - | mips16-* \ - | mips64-* | mips64el-* \ - | mips64vr-* | mips64vrel-* \ - | mips64orion-* | mips64orionel-* \ - | mips64vr4100-* | mips64vr4100el-* \ - | mips64vr4300-* | mips64vr4300el-* \ - | mips64vr5000-* | mips64vr5000el-* \ - | mipsisa32-* | mipsisa32el-* \ - | mipsisa32r2-* | mipsisa32r2el-* \ - | mipsisa64-* | mipsisa64el-* \ - | mipsisa64r2-* | mipsisa64r2el-* \ - | mipsisa64sb1-* | mipsisa64sb1el-* \ - | mipsisa64sr71k-* | mipsisa64sr71kel-* \ - | mipstx39-* | mipstx39el-* \ - | msp430-* \ - | none-* | np1-* | nv1-* | ns16k-* | ns32k-* \ - | orion-* \ - | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ - | pyramid-* \ - | romp-* | rs6000-* \ - | sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \ - | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ - | sparc-* | sparc64-* | sparc86x-* | sparclet-* | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ - | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tron-* \ - | v850-* | v850e-* | vax-* \ - | we32k-* \ - | x86-* | x86_64-* | xps100-* | xscale-* | xstormy16-* \ - | xtensa-* \ - | ymp-* \ - | z8k-*) - ;; - # Recognize the various machine names and aliases which stand - # for a CPU type and a company and sometimes even an OS. - 386bsd) - basic_machine=i386-unknown - os=-bsd - ;; - 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) - basic_machine=m68000-att - ;; - 3b*) - basic_machine=we32k-att - ;; - a29khif) - basic_machine=a29k-amd - os=-udi - ;; - abacus) - basic_machine=abacus-unknown - ;; - adobe68k) - basic_machine=m68010-adobe - os=-scout - ;; - alliant | fx80) - basic_machine=fx80-alliant - ;; - altos | altos3068) - basic_machine=m68k-altos - ;; - am29k) - basic_machine=a29k-none - os=-bsd - ;; - amd64) - basic_machine=x86_64-pc - ;; - amd64-*) - basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - amdahl) - basic_machine=580-amdahl - os=-sysv - ;; - amiga | amiga-*) - basic_machine=m68k-unknown - ;; - amigaos | amigados) - basic_machine=m68k-unknown - os=-amigaos - ;; - amigaunix | amix) - basic_machine=m68k-unknown - os=-sysv4 - ;; - apollo68) - basic_machine=m68k-apollo - os=-sysv - ;; - apollo68bsd) - basic_machine=m68k-apollo - os=-bsd - ;; - aux) - basic_machine=m68k-apple - os=-aux - ;; - balance) - basic_machine=ns32k-sequent - os=-dynix - ;; - c90) - basic_machine=c90-cray - os=-unicos - ;; - convex-c1) - basic_machine=c1-convex - os=-bsd - ;; - convex-c2) - basic_machine=c2-convex - os=-bsd - ;; - convex-c32) - basic_machine=c32-convex - os=-bsd - ;; - convex-c34) - basic_machine=c34-convex - os=-bsd - ;; - convex-c38) - basic_machine=c38-convex - os=-bsd - ;; - cray | j90) - basic_machine=j90-cray - os=-unicos - ;; - cr16c) - basic_machine=cr16c-unknown - os=-elf - ;; - crds | unos) - basic_machine=m68k-crds - ;; - cris | cris-* | etrax*) - basic_machine=cris-axis - ;; - crx) - basic_machine=crx-unknown - os=-elf - ;; - da30 | da30-*) - basic_machine=m68k-da30 - ;; - decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn) - basic_machine=mips-dec - ;; - decsystem10* | dec10*) - basic_machine=pdp10-dec - os=-tops10 - ;; - decsystem20* | dec20*) - basic_machine=pdp10-dec - os=-tops20 - ;; - delta | 3300 | motorola-3300 | motorola-delta \ - | 3300-motorola | delta-motorola) - basic_machine=m68k-motorola - ;; - delta88) - basic_machine=m88k-motorola - os=-sysv3 - ;; - dpx20 | dpx20-*) - basic_machine=rs6000-bull - os=-bosx - ;; - dpx2* | dpx2*-bull) - basic_machine=m68k-bull - os=-sysv3 - ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; - encore | umax | mmax) - basic_machine=ns32k-encore - ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose - ;; - fx2800) - basic_machine=i860-alliant - ;; - genix) - basic_machine=ns32k-ns - ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; - h3050r* | hiux*) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - h8300hms) - basic_machine=h8300-hitachi - os=-hms - ;; - h8300xray) - basic_machine=h8300-hitachi - os=-xray - ;; - h8500hms) - basic_machine=h8500-hitachi - os=-hms - ;; - harris) - basic_machine=m88k-harris - os=-sysv3 - ;; - hp300-*) - basic_machine=m68k-hp - ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; - hp3k9[0-9][0-9] | hp9[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k2[0-9][0-9] | hp9k31[0-9]) - basic_machine=m68000-hp - ;; - hp9k3[2-9][0-9]) - basic_machine=m68k-hp - ;; - hp9k6[0-9][0-9] | hp6[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hp9k7[0-79][0-9] | hp7[0-79][0-9]) - basic_machine=hppa1.1-hp - ;; - hp9k78[0-9] | hp78[0-9]) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) - # FIXME: really hppa2.0-hp - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][13679] | hp8[0-9][13679]) - basic_machine=hppa1.1-hp - ;; - hp9k8[0-9][0-9] | hp8[0-9][0-9]) - basic_machine=hppa1.0-hp - ;; - hppa-next) - os=-nextstep3 - ;; - hppaosf) - basic_machine=hppa1.1-hp - os=-osf - ;; - hppro) - basic_machine=hppa1.1-hp - os=-proelf - ;; - i370-ibm* | ibm*) - basic_machine=i370-ibm - ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? - i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 - ;; - i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 - ;; - i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv - ;; - i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 - ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta - ;; - iris | iris4d) - basic_machine=mips-sgi - case $os in - -irix*) - ;; - *) - os=-irix4 - ;; - esac - ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; - m88k-omron*) - basic_machine=m88k-omron - ;; - magnum | m3230) - basic_machine=mips-mips - os=-sysv - ;; - merlin) - basic_machine=ns32k-utek - os=-sysv - ;; - mingw32) - basic_machine=i386-pc - os=-mingw32 - ;; - miniframe) - basic_machine=m68000-convergent - ;; - *mint | -mint[0-9]* | *MiNT | *MiNT[0-9]*) - basic_machine=m68k-atari - os=-mint - ;; - mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` - ;; - mips3*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown - ;; - mmix*) - basic_machine=mmix-knuth - os=-mmixware - ;; - monitor) - basic_machine=m68k-rom68k - os=-coff - ;; - morphos) - basic_machine=powerpc-unknown - os=-morphos - ;; - msdos) - basic_machine=i386-pc - os=-msdos - ;; - mvs) - basic_machine=i370-ibm - os=-mvs - ;; - ncr3000) - basic_machine=i486-ncr - os=-sysv4 - ;; - netbsd386) - basic_machine=i386-unknown - os=-netbsd - ;; - netwinder) - basic_machine=armv4l-rebel - os=-linux - ;; - news | news700 | news800 | news900) - basic_machine=m68k-sony - os=-newsos - ;; - news1000) - basic_machine=m68030-sony - os=-newsos - ;; - news-3600 | risc-news) - basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv - ;; - next | m*-next ) - basic_machine=m68k-next - case $os in - -nextstep* ) - ;; - -ns2*) - os=-nextstep2 - ;; - *) - os=-nextstep3 - ;; - esac - ;; - nh3000) - basic_machine=m68k-harris - os=-cxux - ;; - nh[45]000) - basic_machine=m88k-harris - os=-cxux - ;; - nindy960) - basic_machine=i960-intel - os=-nindy - ;; - mon960) - basic_machine=i960-intel - os=-mon960 - ;; - nonstopux) - basic_machine=mips-compaq - os=-nonstopux - ;; - np1) - basic_machine=np1-gould - ;; - nv1) - basic_machine=nv1-cray - os=-unicosmp - ;; - nsr-tandem) - basic_machine=nsr-tandem - ;; - op50n-* | op60c-*) - basic_machine=hppa1.1-oki - os=-proelf - ;; - or32 | or32-*) - basic_machine=or32-unknown - os=-coff - ;; - os400) - basic_machine=powerpc-ibm - os=-os400 - ;; - OSE68000 | ose68000) - basic_machine=m68000-ericsson - os=-ose - ;; - os68k) - basic_machine=m68k-none - os=-os68k - ;; - pa-hitachi) - basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - pbd) - basic_machine=sparc-tti - ;; - pbb) - basic_machine=m68k-tti - ;; - pc532 | pc532-*) - basic_machine=ns32k-pc532 - ;; - pentium | p5 | k5 | k6 | nexgen | viac3) - basic_machine=i586-pc - ;; - pentiumpro | p6 | 6x86 | athlon | athlon_*) - basic_machine=i686-pc - ;; - pentiumii | pentium2 | pentiumiii | pentium3) - basic_machine=i686-pc - ;; - pentium4) - basic_machine=i786-pc - ;; - pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - pn) - basic_machine=pn-gould - ;; - power) basic_machine=power-ibm - ;; - ppc) basic_machine=powerpc-unknown - ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppcle | powerpclittle | ppc-le | powerpc-little) - basic_machine=powerpcle-unknown - ;; - ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64) basic_machine=powerpc64-unknown - ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ppc64le | powerpc64little | ppc64-le | powerpc64-little) - basic_machine=powerpc64le-unknown - ;; - ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` - ;; - ps2) - basic_machine=i386-ibm - ;; - pw32) - basic_machine=i586-unknown - os=-pw32 - ;; - rom68k) - basic_machine=m68k-rom68k - os=-coff - ;; - rm[46]00) - basic_machine=mips-siemens - ;; - rtpc | rtpc-*) - basic_machine=romp-ibm - ;; - s390 | s390-*) - basic_machine=s390-ibm - ;; - s390x | s390x-*) - basic_machine=s390x-ibm - ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; - sb1) - basic_machine=mipsisa64sb1-unknown - ;; - sb1el) - basic_machine=mipsisa64sb1el-unknown - ;; - sei) - basic_machine=mips-sei - os=-seiux - ;; - sequent) - basic_machine=i386-sequent - ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) - basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 - ;; - spur) - basic_machine=spur-unknown - ;; - st2000) - basic_machine=m68k-tandem - ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; - sun2) - basic_machine=m68000-sun - ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; - sun3 | sun3-*) - basic_machine=m68k-sun - ;; - sun4) - basic_machine=sparc-sun - ;; - sun386 | sun386i | roadrunner) - basic_machine=i386-sun - ;; - sv1) - basic_machine=sv1-cray - os=-unicos - ;; - symmetry) - basic_machine=i386-sequent - os=-dynix - ;; - t3e) - basic_machine=alphaev5-cray - os=-unicos - ;; - t90) - basic_machine=t90-cray - os=-unicos - ;; - tic54x | c54x*) - basic_machine=tic54x-unknown - os=-coff - ;; - tic55x | c55x*) - basic_machine=tic55x-unknown - os=-coff - ;; - tic6x | c6x*) - basic_machine=tic6x-unknown - os=-coff - ;; - tx39) - basic_machine=mipstx39-unknown - ;; - tx39el) - basic_machine=mipstx39el-unknown - ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; - tower | tower-32) - basic_machine=m68k-ncr - ;; - tpf) - basic_machine=s390x-ibm - os=-tpf - ;; - udi29k) - basic_machine=a29k-amd - os=-udi - ;; - ultra3) - basic_machine=a29k-nyu - os=-sym1 - ;; - v810 | necv810) - basic_machine=v810-nec - os=-none - ;; - vaxv) - basic_machine=vax-dec - os=-sysv - ;; - vms) - basic_machine=vax-dec - os=-vms - ;; - vpp*|vx|vx-*) - basic_machine=f301-fujitsu - ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - w65*) - basic_machine=w65-wdc - os=-none - ;; - w89k-*) - basic_machine=hppa1.1-winbond - os=-proelf - ;; - xps | xps100) - basic_machine=xps100-honeywell - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - none) - basic_machine=none-none - os=-none - ;; - -# Here we handle the default manufacturer of certain CPU types. It is in -# some cases the only manufacturer, in others, it is the most popular. - w89k) - basic_machine=hppa1.1-winbond - ;; - op50n) - basic_machine=hppa1.1-oki - ;; - op60c) - basic_machine=hppa1.1-oki - ;; - romp) - basic_machine=romp-ibm - ;; - rs6000) - basic_machine=rs6000-ibm - ;; - vax) - basic_machine=vax-dec - ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; - pdp11) - basic_machine=pdp11-dec - ;; - we32k) - basic_machine=we32k-att - ;; - sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele) - basic_machine=sh-unknown - ;; - sh64) - basic_machine=sh64-unknown - ;; - sparc | sparcv8 | sparcv9 | sparcv9b) - basic_machine=sparc-sun - ;; - cydra) - basic_machine=cydra-cydrome - ;; - orion) - basic_machine=orion-highlevel - ;; - orion105) - basic_machine=clipper-highlevel - ;; - mac | mpw | mac-mpw) - basic_machine=m68k-apple - ;; - pmac | pmac-mpw) - basic_machine=powerpc-apple - ;; - *-unknown) - # Make sure to match an already-canonicalized machine name. - ;; - *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 - exit 1 - ;; -esac - -# Here we canonicalize certain aliases for manufacturers. -case $basic_machine in - *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` - ;; - *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` - ;; - *) - ;; -esac - -# Decode manufacturer-specific aliases for certain operating systems. - -if [ x"$os" != x"" ] -then -case $os in - # First match some system type aliases - # that might get confused with valid system types. - # -solaris* is a basic system type, with this one exception. - -solaris1 | -solaris1.*) - os=`echo $os | sed -e 's|solaris1|sunos4|'` - ;; - -solaris) - os=-solaris2 - ;; - -svr4*) - os=-sysv4 - ;; - -unixware*) - os=-sysv4.2uw - ;; - -gnu/linux*) - os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'` - ;; - # First accept the basic system types. - # The portable systems comes first. - # Each alternative MUST END IN A *, to match a version number. - # -sysv* is not here because it comes later, after sysvr4. - -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ - | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\ - | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \ - | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ - | -aos* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* | -openbsd* \ - | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ - | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ - | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ - | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ - | -chorusos* | -chorusrdb* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-uclibc* | -uxpv* | -beos* | -mpeix* | -udk* \ - | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ - | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ - | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ - | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ - | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly*) - # Remember, each alternative MUST END IN *, to match a version number. - ;; - -qnx*) - case $basic_machine in - x86-* | i*86-*) - ;; - *) - os=-nto$os - ;; - esac - ;; - -nto-qnx*) - ;; - -nto*) - os=`echo $os | sed -e 's|nto|nto-qnx|'` - ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) - ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` - ;; - -linux-dietlibc) - os=-linux-dietlibc - ;; - -linux*) - os=`echo $os | sed -e 's|linux|linux-gnu|'` - ;; - -sunos5*) - os=`echo $os | sed -e 's|sunos5|solaris2|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` - ;; - -opened*) - os=-openedition - ;; - -os400*) - os=-os400 - ;; - -wince*) - os=-wince - ;; - -osfrose*) - os=-osfrose - ;; - -osf*) - os=-osf - ;; - -utek*) - os=-bsd - ;; - -dynix*) - os=-bsd - ;; - -acis*) - os=-aos - ;; - -atheos*) - os=-atheos - ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd - ;; - -ctix* | -uts*) - os=-sysv - ;; - -nova*) - os=-rtmk-nova - ;; - -ns2 ) - os=-nextstep2 - ;; - -nsk*) - os=-nsk - ;; - # Preserve the version number of sinix5. - -sinix5.*) - os=`echo $os | sed -e 's|sinix|sysv|'` - ;; - -sinix*) - os=-sysv4 - ;; - -tpf*) - os=-tpf - ;; - -triton*) - os=-sysv3 - ;; - -oss*) - os=-sysv3 - ;; - -svr4) - os=-sysv4 - ;; - -svr3) - os=-sysv3 - ;; - -sysvr4) - os=-sysv4 - ;; - # This must come after -sysvr4. - -sysv*) - ;; - -ose*) - os=-ose - ;; - -es1800*) - os=-ose - ;; - -xenix) - os=-xenix - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - os=-mint - ;; - -aros*) - os=-aros - ;; - -kaos*) - os=-kaos - ;; - -none) - ;; - *) - # Get rid of the `-' at the beginning of $os. - os=`echo $os | sed 's/[^-]*-//'` - echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2 - exit 1 - ;; -esac -else - -# Here we handle the default operating systems that come with various machines. -# The value should be what the vendor currently ships out the door with their -# machine or put another way, the most popular os provided with the machine. - -# Note that if you're going to try to match "-MANUFACTURER" here (say, -# "-sun"), then you have to tell the case statement up towards the top -# that MANUFACTURER isn't an operating system. Otherwise, code above -# will signal an error saying that MANUFACTURER isn't an operating -# system, and we'll never get to this point. - -case $basic_machine in - *-acorn) - os=-riscix1.2 - ;; - arm*-rebel) - os=-linux - ;; - arm*-semi) - os=-aout - ;; - c4x-* | tic4x-*) - os=-coff - ;; - # This must come before the *-dec entry. - pdp10-*) - os=-tops20 - ;; - pdp11-*) - os=-none - ;; - *-dec | vax-*) - os=-ultrix4.2 - ;; - m68*-apollo) - os=-domain - ;; - i386-sun) - os=-sunos4.0.2 - ;; - m68000-sun) - os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 - ;; - m68*-cisco) - os=-aout - ;; - mips*-cisco) - os=-elf - ;; - mips*-*) - os=-elf - ;; - or32-*) - os=-coff - ;; - *-tti) # must be before sparc entry or we get the wrong os. - os=-sysv3 - ;; - sparc-* | *-sun) - os=-sunos4.1.1 - ;; - *-be) - os=-beos - ;; - *-ibm) - os=-aix - ;; - *-wec) - os=-proelf - ;; - *-winbond) - os=-proelf - ;; - *-oki) - os=-proelf - ;; - *-hp) - os=-hpux - ;; - *-hitachi) - os=-hiux - ;; - i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent) - os=-sysv - ;; - *-cbm) - os=-amigaos - ;; - *-dg) - os=-dgux - ;; - *-dolphin) - os=-sysv3 - ;; - m68k-ccur) - os=-rtu - ;; - m88k-omron*) - os=-luna - ;; - *-next ) - os=-nextstep - ;; - *-sequent) - os=-ptx - ;; - *-crds) - os=-unos - ;; - *-ns) - os=-genix - ;; - i370-*) - os=-mvs - ;; - *-next) - os=-nextstep3 - ;; - *-gould) - os=-sysv - ;; - *-highlevel) - os=-bsd - ;; - *-encore) - os=-bsd - ;; - *-sgi) - os=-irix - ;; - *-siemens) - os=-sysv4 - ;; - *-masscomp) - os=-rtu - ;; - f30[01]-fujitsu | f700-fujitsu) - os=-uxpv - ;; - *-rom68k) - os=-coff - ;; - *-*bug) - os=-coff - ;; - *-apple) - os=-macos - ;; - *-atari*) - os=-mint - ;; - *) - os=-none - ;; -esac -fi - -# Here we handle the case where we know the os, and the CPU type, but not the -# manufacturer. We pick the logical manufacturer. -vendor=unknown -case $basic_machine in - *-unknown) - case $os in - -riscix*) - vendor=acorn - ;; - -sunos*) - vendor=sun - ;; - -aix*) - vendor=ibm - ;; - -beos*) - vendor=be - ;; - -hpux*) - vendor=hp - ;; - -mpeix*) - vendor=hp - ;; - -hiux*) - vendor=hitachi - ;; - -unos*) - vendor=crds - ;; - -dgux*) - vendor=dg - ;; - -luna*) - vendor=omron - ;; - -genix*) - vendor=ns - ;; - -mvs* | -opened*) - vendor=ibm - ;; - -os400*) - vendor=ibm - ;; - -ptx*) - vendor=sequent - ;; - -tpf*) - vendor=ibm - ;; - -vxsim* | -vxworks* | -windiss*) - vendor=wrs - ;; - -aux*) - vendor=apple - ;; - -hms*) - vendor=hitachi - ;; - -mpw* | -macos*) - vendor=apple - ;; - -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*) - vendor=atari - ;; - -vos*) - vendor=stratus - ;; - esac - basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"` - ;; -esac - -echo $basic_machine$os -exit 0 - -# Local variables: -# eval: (add-hook 'write-file-hooks 'time-stamp) -# time-stamp-start: "timestamp='" -# time-stamp-format: "%:y-%02m-%02d" -# time-stamp-end: "'" -# End: diff --git a/deps/ncurses-5.9/configure b/deps/ncurses-5.9/configure deleted file mode 100755 index 639b790..0000000 --- a/deps/ncurses-5.9/configure +++ /dev/null @@ -1,21016 +0,0 @@ -#! /bin/sh -# From configure.in Revision: 1.520 . -# Guess values for system-dependent variables and create Makefiles. -# Generated by Autoconf 2.52.20101002. -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -cross_compiling=no -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -ac_unique_file="ncurses/base/lib_initscr.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_SYS_STAT_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif -#if HAVE_UNISTD_H -# include -#endif" - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: should be removed in autoconf 3.0. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP -ac_env_CXX_set=${CXX+set} -ac_env_CXX_value=$CXX -ac_cv_env_CXX_set=${CXX+set} -ac_cv_env_CXX_value=$CXX -ac_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_env_CXXFLAGS_value=$CXXFLAGS -ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} -ac_cv_env_CXXFLAGS_value=$CXXFLAGS -ac_env_CXXCPP_set=${CXXCPP+set} -ac_env_CXXCPP_value=$CXXCPP -ac_cv_env_CXXCPP_set=${CXXCPP+set} -ac_cv_env_CXXCPP_value=$CXXCPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat < if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CPP C preprocessor - CXX C++ compiler command - CXXFLAGS C++ compiler flags - CXXCPP C++ preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -EOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue - cd $ac_subdir - # A "../" for each directory in /$ac_subdir. - ac_dots=`echo $ac_subdir | - sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` - - case $srcdir in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_subdir ;; - *) # Relative path. - ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure.gnu; then - echo - $SHELL $ac_sub_srcdir/configure.gnu --help=recursive - elif test -f $ac_sub_srcdir/configure; then - echo - $SHELL $ac_sub_srcdir/configure --help=recursive - elif test -f $ac_sub_srcdir/configure.ac || - test -f $ac_sub_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\EOF - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -EOF - exit 0 -fi -exec 5>config.log -cat >&5 </dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -PATH = $PATH - -_ASUNAME -} >&5 - -cat >&5 <\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" - ac_sep=" " ;; - esac - # Get rid of the leading space. -done - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - echo >&5 - echo "## ----------------- ##" >&5 - echo "## Cache variables. ##" >&5 - echo "## ----------------- ##" >&5 - echo >&5 - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} >&5 - sed "/^$/d" confdefs.h >conftest.log - if test -s conftest.log; then - echo >&5 - echo "## ------------ ##" >&5 - echo "## confdefs.h. ##" >&5 - echo "## ------------ ##" >&5 - echo >&5 - cat conftest.log >&5 - fi - (echo; echo) >&5 - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" >&5 - echo "$as_me: exit $exit_status" >&5 - rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:1010: 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" - fi -done - -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:1021: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:1029: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:1045: 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:1049: 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:1055: 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:1057: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:1059: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. It doesn't matter if - # we pass some twice (in addition to the command line arguments). - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" - ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:1078: 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:1080: 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 - -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 - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac -echo "#! $SHELL" >conftest.sh -echo "exit 0" >>conftest.sh -chmod +x conftest.sh -if { (echo "$as_me:1101: PATH=\".;.\"; conftest.sh") >&5 - (PATH=".;."; conftest.sh) 2>&5 - ac_status=$? - echo "$as_me:1104: \$? = $ac_status" >&5 - (exit $ac_status); }; then - ac_path_separator=';' -else - ac_path_separator=: -fi -PATH_SEPARATOR="$ac_path_separator" -rm -f conftest.sh - -ac_config_headers="$ac_config_headers include/ncurses_cfg.h:include/ncurses_cfg.hin" - -top_builddir=`pwd` - -echo "$as_me:1117: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:1127: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - -test -z "$EGREP" && { { echo "$as_me:1131: error: No egrep program found" >&5 -echo "$as_me: error: No egrep program found" >&2;} - { (exit 1); exit 1; }; } - -NCURSES_MAJOR="`$ac_cv_prog_egrep '^NCURSES_MAJOR[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`" -NCURSES_MINOR="`$ac_cv_prog_egrep '^NCURSES_MINOR[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`" -NCURSES_PATCH="`$ac_cv_prog_egrep '^NCURSES_PATCH[ ]*=' $srcdir/dist.mk | sed -e 's/^[^0-9]*//'`" -cf_cv_abi_version=${NCURSES_MAJOR} -cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} -cf_cv_timestamp=`date` -echo "$as_me:1141: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5 -echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&6 - -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:1149: 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; - - NCURSES_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'` - NCURSES_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[^.]*//' -e 's/^\.//' -e 's/\..*//'` - -if test -n "$NCURSES_MAJOR" ; then - case $NCURSES_MAJOR in #(vi - [0-9]*) #(vi - ;; - *) - { { echo "$as_me:1162: 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:1168: error: Release major-version value is empty" >&5 -echo "$as_me: error: Release major-version value is empty" >&2;} - { (exit 1); exit 1; }; } -fi - -if test -n "$NCURSES_MINOR" ; then - case $NCURSES_MINOR in #(vi - [0-9]*) #(vi - ;; - *) - { { echo "$as_me:1178: 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:1184: error: Release minor-version value is empty" >&5 -echo "$as_me: error: Release minor-version value is empty" >&2;} - { (exit 1); exit 1; }; } -fi - -test -z "$cf_cv_abi_version" && cf_cv_abi_version=0 - -# Check whether --with-abi-version or --without-abi-version was given. -if test "${with_abi_version+set}" = set; then - withval="$with_abi_version" - { echo "$as_me:1194: 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;} - cf_cv_abi_version=$withval -fi; - -if test -n "$cf_cv_abi_version" ; then - case $cf_cv_abi_version in #(vi - [0-9]*) #(vi - ;; - *) - { { echo "$as_me:1204: 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:1210: error: ABI version value is empty" >&5 -echo "$as_me: error: ABI version value is empty" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:1232: 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 -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -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:1242: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:1246: 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 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:1255: 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:1259: 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:1264: 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:1271: 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 -else - ac_cv_host_alias=$host_alias -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:1280: 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:1285: 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/'` -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:1293: 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 -else - ac_cv_target_alias=$target_alias -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:1302: 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:1307: 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/'` -target_vendor=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -target_os=`echo $ac_cv_target | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - -# The aliases save the names the user supplied, while $host etc. -# will get canonicalized. -test -n "$target_alias" && - test "$program_prefix$program_suffix$program_transform_name" = \ - NONENONEs,x,x, && - program_prefix=${target_alias}- - system_name="$host_os" -else - system_name="`(uname -s -r) 2>/dev/null`" - if test -z "$system_name" ; then - system_name="`(hostname) 2>/dev/null`" - fi -fi -test -n "$system_name" && cat >>confdefs.h <&6 -else - cf_cv_system_name="$system_name" -fi - -test -z "$system_name" && system_name="$cf_cv_system_name" -test -n "$cf_cv_system_name" && echo "$as_me:1338: 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:1342: 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:1344: 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 - -# 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:1352: WARNING: overriding system type to $withval" >&5 -echo "$as_me: WARNING: overriding system type to $withval" >&2;} - cf_cv_system_name=$withval -fi; - -### Save the given $CFLAGS to allow user-override. -cf_user_CFLAGS="$CFLAGS" - -### Default install-location - -echo "$as_me:1362: 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 - # non-vendor systems don't have a conflict - openbsd*|freebsd*|linux*|cygwin*|k*bsd*-gnu) - prefix=/usr - ;; - *) prefix=$ac_default_prefix - ;; - esac -fi -echo "$as_me:1374: result: $prefix" >&5 -echo "${ECHO_T}$prefix" >&6 - -if test "x$prefix" = "xNONE" ; then -echo "$as_me:1378: 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 \ - $includedir \ - $includedir/ncurses \ - $prefix/include \ - $prefix/include/ncurses \ - /usr/local/include \ - /usr/local/include/ncurses \ - /usr/include \ - /usr/include/ncurses -do - cf_dir=`eval echo $cf_symbol` - if test -f $cf_dir/curses.h ; then - if ( fgrep NCURSES_VERSION $cf_dir/curses.h 2>&1 >/dev/null ) ; then - includedir="$cf_symbol" - test -n "$verbose" && echo $ac_n " found " 1>&6 - break - fi - fi - test -n "$verbose" && echo " tested $cf_dir" 1>&6 -done -echo "$as_me:1401: result: $includedir" >&5 -echo "${ECHO_T}$includedir" >&6 -fi - -### Checks for programs. -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 -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:1415: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc" -echo "$as_me:1430: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1438: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1441: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:1450: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="gcc" -echo "$as_me:1465: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1473: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1476: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:1489: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}cc" -echo "$as_me:1504: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1512: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1515: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:1524: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="cc" -echo "$as_me:1539: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1547: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1550: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:1563: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no - 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 -if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue -fi -ac_cv_prog_CC="cc" -echo "$as_me:1583: found $ac_dir/$ac_word" >&5 -break -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1605: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1608: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - 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:1619: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$ac_prog" -echo "$as_me:1634: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1642: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1645: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -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:1658: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="$ac_prog" -echo "$as_me:1673: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1681: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1684: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - -test -z "$CC" && { { echo "$as_me:1696: 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:1701:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:1704: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:1707: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:1709: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:1712: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:1714: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:1717: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -#line 1721 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -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:1737: 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:1740: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:1743: \$? = $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 -# resort. -for ac_file in `ls a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1766: 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:1772: 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:1777: 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:1783: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1786: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:1793: 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;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:1801: 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:1808: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:1810: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:1813: checking for executable suffix" >&5 -echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 -if { (eval echo "$as_me:1815: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:1818: \$? = $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 -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:1834: 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:1840: 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:1846: 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 1852 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:1864: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1867: \$? = $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 - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1879: 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:1886: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:1890: 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 1896 "configure" -#include "confdefs.h" - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1911: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1914: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1917: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1920: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_compiler_gnu=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:1932: 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:1938: 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 1944 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1956: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1959: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1962: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1965: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:1975: 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 -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2002: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2005: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2008: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2011: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line 2023 "configure" -#include "confdefs.h" -#include -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2036: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2039: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2042: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2045: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 2055 "configure" -#include "confdefs.h" -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2067: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2070: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2073: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2076: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -rf conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -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 - -GCC_VERSION=none -if test "$GCC" = yes ; then - echo "$as_me:2106: 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/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" - test -z "$GCC_VERSION" && GCC_VERSION=unknown - echo "$as_me:2110: result: $GCC_VERSION" >&5 -echo "${ECHO_T}$GCC_VERSION" >&6 -fi - -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:2120: 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 - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 2141 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:2146: \"$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:2152: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 2175 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:2179: \"$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:2185: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:2222: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 2232 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:2237: \"$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:2243: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 2266 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:2270: \"$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:2276: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:2304: error: C preprocessor \"$CPP\" fails sanity check" >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} - { (exit 1); exit 1; }; } -fi - -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 - -if test $ac_cv_c_compiler_gnu = yes; then - echo "$as_me:2317: 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 2324 "configure" -#include "confdefs.h" -#include -int Autoconf = TIOCGETP; -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -else - ac_cv_prog_gcc_traditional=no -fi -rm -rf conftest* - - if test $ac_cv_prog_gcc_traditional = no; then - cat >conftest.$ac_ext <<_ACEOF -#line 2339 "configure" -#include "confdefs.h" -#include -int Autoconf = TCGETA; -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "$ac_pattern" >/dev/null 2>&1; then - ac_cv_prog_gcc_traditional=yes -fi -rm -rf conftest* - - fi -fi -echo "$as_me:2352: 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:2359: 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 -else - -cat > conftest.$ac_ext < -int main() -{ - ${cf_cv_main_return:-return}(0); -} -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 -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -if { (eval echo "$as_me:2375: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2378: \$? = $ac_status" >&5 - (exit $ac_status); } && - test -f conftest2.$ac_objext && { (eval echo "$as_me:2380: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2383: \$? = $ac_status" >&5 - (exit $ac_status); }; -then - eval cf_cv_prog_CC_c_o=yes -else - eval cf_cv_prog_CC_c_o=no -fi -rm -rf conftest* - -fi -if test $cf_cv_prog_CC_c_o = yes; then - echo "$as_me:2394: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:2397: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:2401: checking for POSIXized ISC" >&5 -echo $ECHO_N "checking for POSIXized ISC... $ECHO_C" >&6 -if test -d /etc/conf/kconfig.d && - grep _POSIX_VERSION /usr/include/sys/unistd.h >/dev/null 2>&1 -then - echo "$as_me:2406: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - ISC=yes # If later tests want to check for ISC. - -cat >>confdefs.h <<\EOF -#define _POSIX_SOURCE 1 -EOF - - if test "$GCC" = yes; then - CC="$CC -posix" - else - CC="$CC -Xp" - fi -else - echo "$as_me:2420: result: no" >&5 -echo "${ECHO_T}no" >&6 - ISC= -fi - -echo "$as_me:2425: checking for ${CC:-cc} option to accept ANSI C" >&5 -echo $ECHO_N "checking for ${CC:-cc} option to accept ANSI C... $ECHO_C" >&6 -if test "${cf_cv_ansi_cc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ansi_cc=no -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) -for cf_arg in "-DCC_HAS_PROTOS" \ - "" \ - -qlanglvl=ansi \ - -std1 \ - -Ae \ - "-Aa -D_HPUX_SOURCE" \ - -Xc -do - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_arg -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - cat >conftest.$ac_ext <<_ACEOF -#line 2529 "configure" -#include "confdefs.h" - -#ifndef CC_HAS_PROTOS -#if !defined(__STDC__) || (__STDC__ != 1) -choke me -#endif -#endif - -int -main () -{ - - int test (int i, double x); - struct s1 {int (*f) (int a);}; - struct s2 {int (*f) (double a);}; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2550: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2553: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2556: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2559: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ansi_cc="$cf_arg"; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -CFLAGS="$cf_save_CFLAGS" -CPPFLAGS="$cf_save_CPPFLAGS" - -fi -echo "$as_me:2572: result: $cf_cv_ansi_cc" >&5 -echo "${ECHO_T}$cf_cv_ansi_cc" >&6 - -if test "$cf_cv_ansi_cc" != "no"; then -if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_cv_ansi_cc -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -else - cat >>confdefs.h <<\EOF -#define CC_HAS_PROTOS 1 -EOF - -fi -fi - -if test "$cf_cv_ansi_cc" = "no"; then - { { echo "$as_me:2665: error: Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto" >&5 -echo "$as_me: error: Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto" >&2;} - { (exit 1); exit 1; }; } -fi - -case $cf_cv_system_name in -os2*) - CFLAGS="$CFLAGS -Zmt" - CPPFLAGS="$CPPFLAGS -D__ST_MT_ERRNO__" - CXXFLAGS="$CXXFLAGS -Zmt" - # autoconf's macro sets -Zexe and suffix both, which conflict:w - LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" - ac_cv_exeext=.exe - ;; -esac - -PROG_EXT="$EXEEXT" - -test -n "$PROG_EXT" && cat >>confdefs.h <&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 -else - case $LDCONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_LDCONFIG="$LDCONFIG" # Let the user override the test with a path. - ;; - *) - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$LDPATH" -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_LDCONFIG="$ac_dir/$ac_word" - echo "$as_me:2722: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -LDCONFIG=$ac_cv_path_LDCONFIG - -if test -n "$LDCONFIG"; then - echo "$as_me:2733: result: $LDCONFIG" >&5 -echo "${ECHO_T}$LDCONFIG" >&6 -else - echo "$as_me:2736: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - ;; -esac -fi - -echo "$as_me:2744: 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. -if test "${with_cxx+set}" = set; then - withval="$with_cxx" - cf_with_cxx=$withval -else - cf_with_cxx=yes -fi; -echo "$as_me:2754: result: $cf_with_cxx" >&5 -echo "${ECHO_T}$cf_with_cxx" >&6 -if test "X$cf_with_cxx" = Xno ; then - CXX="" - GXX="" -else - # with autoconf 2.13, we can change the error to a warning: - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 -if test -n "$ac_tool_prefix"; then - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC - 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:2772: 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 -else - if test -n "$CXX"; then - ac_cv_prog_CXX="$CXX" # 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_CXX="$ac_tool_prefix$ac_prog" -echo "$as_me:2787: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CXX=$ac_cv_prog_CXX -if test -n "$CXX"; then - echo "$as_me:2795: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 -else - echo "$as_me:2798: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CXX" && break - done -fi -if test -z "$CXX"; then - ac_ct_CXX=$CXX - for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC -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:2811: 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 -else - if test -n "$ac_ct_CXX"; then - ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_ac_ct_CXX="$ac_prog" -echo "$as_me:2826: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CXX=$ac_cv_prog_ac_ct_CXX -if test -n "$ac_ct_CXX"; then - echo "$as_me:2834: result: $ac_ct_CXX" >&5 -echo "${ECHO_T}$ac_ct_CXX" >&6 -else - echo "$as_me:2837: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CXX" && break -done -test -n "$ac_ct_CXX" || ac_ct_CXX="g++" - - CXX=$ac_ct_CXX -fi - -# Provide some information about the compiler. -echo "$as_me:2849:" \ - "checking for C++ compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:2852: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:2855: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:2857: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:2860: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:2862: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:2865: \$? = $ac_status" >&5 - (exit $ac_status); } - -echo "$as_me:2868: 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 2874 "configure" -#include "confdefs.h" - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2889: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2892: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2895: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2898: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_compiler_gnu=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_cv_cxx_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:2910: 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:2916: 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 2922 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2934: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2937: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2940: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2943: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cxx_g=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_prog_cxx_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:2953: 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 -elif test $ac_cv_prog_cxx_g = yes; then - if test "$GXX" = yes; then - CXXFLAGS="-g -O2" - else - CXXFLAGS="-g" - fi -else - if test "$GXX" = yes; then - CXXFLAGS="-O2" - else - CXXFLAGS= - fi -fi -for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line 2980 "configure" -#include "confdefs.h" -#include -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2993: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2996: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2999: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3002: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 3012 "configure" -#include "confdefs.h" -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3024: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3027: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3030: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3033: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -rf conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -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 - - # autoconf 2.5x removed the error - by hardcoding it to g++. - 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:3060: 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 -else - case $CXX in - [\\/]* | ?:[\\/]*) - ac_cv_path_CXX="$CXX" # 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_CXX="$ac_dir/$ac_word" - echo "$as_me:3077: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -CXX=$ac_cv_path_CXX - -if test -n "$CXX"; then - echo "$as_me:3088: result: $CXX" >&5 -echo "${ECHO_T}$CXX" >&6 -else - echo "$as_me:3091: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - fi - if test "$CXX" = "g++" ; then - { echo "$as_me:3097: WARNING: ignoring hardcoded g++" >&5 -echo "$as_me: WARNING: ignoring hardcoded g++" >&2;} - cf_with_cxx=no; CXX=""; GXX=""; - fi -fi - -GXX_VERSION=none -if test "$GXX" = yes; then - echo "$as_me:3105: checking version of g++" >&5 -echo $ECHO_N "checking version of g++... $ECHO_C" >&6 - GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" - test -z "$GXX_VERSION" && GXX_VERSION=unknown - echo "$as_me:3109: result: $GXX_VERSION" >&5 -echo "${ECHO_T}$GXX_VERSION" >&6 -fi - -case $GXX_VERSION in -1*|2.[0-6]*) - # GXX=""; CXX=""; ac_cv_prog_gxx=no - # cf_cxx_library=no - { echo "$as_me:3117: WARNING: templates do not work" >&5 -echo "$as_me: WARNING: templates do not work" >&2;} - ;; -esac - -echo "$as_me:3122: 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. -if test "${with_cxx_binding+set}" = set; then - withval="$with_cxx_binding" - cf_with_cxx_binding=$withval -else - cf_with_cxx_binding=$cf_with_cxx -fi; -echo "$as_me:3132: result: $cf_with_cxx_binding" >&5 -echo "${ECHO_T}$cf_with_cxx_binding" >&6 - -echo "$as_me:3135: checking if you want to build with Ada95" >&5 -echo $ECHO_N "checking if you want to build with Ada95... $ECHO_C" >&6 - -# Check whether --with-ada or --without-ada was given. -if test "${with_ada+set}" = set; then - withval="$with_ada" - cf_with_ada=$withval -else - cf_with_ada=yes -fi; -echo "$as_me:3145: result: $cf_with_ada" >&5 -echo "${ECHO_T}$cf_with_ada" >&6 - -echo "$as_me:3148: 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. -if test "${with_manpages+set}" = set; then - withval="$with_manpages" - cf_with_manpages=$withval -else - cf_with_manpages=yes -fi; -echo "$as_me:3158: result: $cf_with_manpages" >&5 -echo "${ECHO_T}$cf_with_manpages" >&6 - -echo "$as_me:3161: 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. -if test "${with_progs+set}" = set; then - withval="$with_progs" - cf_with_progs=$withval -else - cf_with_progs=yes -fi; -echo "$as_me:3171: result: $cf_with_progs" >&5 -echo "${ECHO_T}$cf_with_progs" >&6 - -echo "$as_me:3174: 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. -if test "${with_tests+set}" = set; then - withval="$with_tests" - cf_with_tests=$withval -else - cf_with_tests=yes -fi; -echo "$as_me:3184: result: $cf_with_tests" >&5 -echo "${ECHO_T}$cf_with_tests" >&6 - -echo "$as_me:3187: 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. -if test "${with_curses_h+set}" = set; then - withval="$with_curses_h" - with_curses_h=$withval -else - with_curses_h=yes -fi; -echo "$as_me:3197: result: $with_curses_h" >&5 -echo "${ECHO_T}$with_curses_h" >&6 - -modules_to_build="ncurses" -if test "X$cf_with_progs" != Xno ; then -modules_to_build="$modules_to_build progs tack" -fi -modules_to_build="$modules_to_build panel menu form" - -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - -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:3223: 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 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog" -echo "$as_me:3238: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:3246: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:3249: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -test -z "$AWK" && { { echo "$as_me:3256: error: No awk program found" >&5 -echo "$as_me: error: No awk program found" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:3260: checking for egrep" >&5 -echo $ECHO_N "checking for egrep... $ECHO_C" >&6 -if test "${ac_cv_prog_egrep+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if echo a | (grep -E '(a|b)') >/dev/null 2>&1 - then ac_cv_prog_egrep='grep -E' - else ac_cv_prog_egrep='egrep' - fi -fi -echo "$as_me:3270: result: $ac_cv_prog_egrep" >&5 -echo "${ECHO_T}$ac_cv_prog_egrep" >&6 - EGREP=$ac_cv_prog_egrep - -test -z "$EGREP" && { { echo "$as_me:3274: error: No egrep program found" >&5 -echo "$as_me: error: No egrep program found" >&2;} - { (exit 1); exit 1; }; } - -# 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: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# 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:3290: 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 - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_IFS=$IFS; IFS=$ac_path_separator - for ac_dir in $PATH; do - IFS=$ac_save_IFS - # Account for people who put trailing slashes in PATH elements. - case $ac_dir/ in - / | ./ | .// | /cC/* \ - | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ - | /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if $as_executable_p "$ac_dir/$ac_prog"; then - if test $ac_prog = install && - grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:3339: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -case $INSTALL in -/*) - ;; -*) - cf_dir=`echo $INSTALL | sed -e 's%/[^/]*$%%'` - test -z "$cf_dir" && cf_dir=. - INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'` - ;; -esac - -for ac_prog in tdlint lint alint splint lclint -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:3364: 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 -else - if test -n "$LINT"; then - ac_cv_prog_LINT="$LINT" # 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_LINT="$ac_prog" -echo "$as_me:3379: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -LINT=$ac_cv_prog_LINT -if test -n "$LINT"; then - echo "$as_me:3387: result: $LINT" >&5 -echo "${ECHO_T}$LINT" >&6 -else - echo "$as_me:3390: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$LINT" && break -done - -echo "$as_me:3397: 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:3401: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:3404: result: no, using $LN_S" >&5 -echo "${ECHO_T}no, using $LN_S" >&6 -fi - -echo "$as_me:3408: 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 -echo >conf$$.dst -echo first >conf$$.src -if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then - cf_prog_ln_sf=yes -else - cf_prog_ln_sf=no -fi -rm -f conf$$.dst conf$$src -echo "$as_me:3420: 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:3425: 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 -else - ac_cv_sys_long_file_names=yes -# Test for long file names in all the places we know might matter: -# . the current directory, where building will happen -# $prefix/lib where we will be installing things -# $exec_prefix/lib likewise -# eval it to expand exec_prefix. -# $TMPDIR if set, where it might want to write temporary files -# if $TMPDIR is not set: -# /tmp where it might want to write temporary files -# /var/tmp likewise -# /usr/tmp likewise -if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then - ac_tmpdirs=$TMPDIR -else - ac_tmpdirs='/tmp /var/tmp /usr/tmp' -fi -for ac_dir in . $ac_tmpdirs `eval echo $prefix/lib $exec_prefix/lib` ; do - test -d $ac_dir || continue - test -w $ac_dir || continue # It is less confusing to not echo anything here. - ac_xdir=$ac_dir/cf$$ - (umask 077 && mkdir $ac_xdir 2>/dev/null) || continue - ac_tf1=$ac_xdir/conftest9012345 - ac_tf2=$ac_xdir/conftest9012346 - (echo 1 >$ac_tf1) 2>/dev/null - (echo 2 >$ac_tf2) 2>/dev/null - ac_val=`cat $ac_tf1 2>/dev/null` - if test ! -f $ac_tf1 || test "$ac_val" != 1; then - ac_cv_sys_long_file_names=no - rm -rf $ac_xdir 2>/dev/null - break - fi - rm -rf $ac_xdir 2>/dev/null -done -fi -echo "$as_me:3464: 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 - -cat >>confdefs.h <<\EOF -#define HAVE_LONG_FILE_NAMES 1 -EOF - -fi - -# if we find pkg-config, check if we should install the ".pc" files. - -echo "$as_me:3476: 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. -if test "${with_pkg_config+set}" = set; then - withval="$with_pkg_config" - cf_pkg_config=$withval -else - cf_pkg_config=yes -fi; -echo "$as_me:3486: result: $cf_pkg_config" >&5 -echo "${ECHO_T}$cf_pkg_config" >&6 - -case $cf_pkg_config in #(vi -no) #(vi - PKG_CONFIG=none - ;; -yes) #(vi - 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:3497: 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 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:3514: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG - -if test -n "$PKG_CONFIG"; then - echo "$as_me:3525: result: $PKG_CONFIG" >&5 -echo "${ECHO_T}$PKG_CONFIG" >&6 -else - echo "$as_me:3528: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:3537: 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 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:3554: found $ac_dir/$ac_word" >&5 - break -fi -done - - test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="none" - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG - -if test -n "$ac_pt_PKG_CONFIG"; then - echo "$as_me:3566: result: $ac_pt_PKG_CONFIG" >&5 -echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 -else - echo "$as_me:3569: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - PKG_CONFIG=$ac_pt_PKG_CONFIG -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - - ;; -*) - PKG_CONFIG=$withval - ;; -esac - -test -z "$PKG_CONFIG" && PKG_CONFIG=none -if test "$PKG_CONFIG" != none ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$PKG_CONFIG" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval PKG_CONFIG="$PKG_CONFIG" - case ".$PKG_CONFIG" in #(vi - .NONE/*) - PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:3612: error: expected a pathname, not \"$PKG_CONFIG\"" >&5 -echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi - -if test "$PKG_CONFIG" != no ; then - echo "$as_me:3621: 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 - - # Leave this as something that can be overridden in the environment. - if test -z "$PKG_CONFIG_LIBDIR" ; then - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`/lib/pkgconfig - fi - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'` - if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then - -# Check whether --enable-pc-files or --disable-pc-files was given. -if test "${enable_pc_files+set}" = set; then - enableval="$enable_pc_files" - enable_pc_files=$enableval -else - enable_pc_files=no -fi; - echo "$as_me:3638: result: $enable_pc_files" >&5 -echo "${ECHO_T}$enable_pc_files" >&6 - else - echo "$as_me:3641: result: no" >&5 -echo "${ECHO_T}no" >&6 - { echo "$as_me:3643: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&5 -echo "$as_me: WARNING: did not find library $PKG_CONFIG_LIBDIR" >&2;} - enable_pc_files=no - fi -fi - -echo "$as_me:3649: 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. -if test "${enable_mixed_case+set}" = set; then - enableval="$enable_mixed_case" - enable_mixedcase=$enableval -else - enable_mixedcase=auto -fi; -echo "$as_me:3659: result: $enable_mixedcase" >&5 -echo "${ECHO_T}$enable_mixedcase" >&6 -if test "$enable_mixedcase" = "auto" ; then - -echo "$as_me:3663: 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 -else - -if test "$cross_compiling" = yes ; then - case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi - cf_cv_mixedcase=no - ;; - *) - cf_cv_mixedcase=yes - ;; - esac -else - rm -f conftest CONFTEST - echo test >conftest - if test -f CONFTEST ; then - cf_cv_mixedcase=no - else - cf_cv_mixedcase=yes - fi - rm -f conftest CONFTEST -fi - -fi -echo "$as_me:3690: result: $cf_cv_mixedcase" >&5 -echo "${ECHO_T}$cf_cv_mixedcase" >&6 -test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF -#define MIXEDCASE_FILENAMES 1 -EOF - -else - cf_cv_mixedcase=$enable_mixedcase - if test "$enable_mixedcase" = "yes" ; then - cat >>confdefs.h <<\EOF -#define MIXEDCASE_FILENAMES 1 -EOF - - fi -fi - -# do this after mixed-case option (tags/TAGS is not as important as tic). -echo "$as_me:3707: 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 - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:3727: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:3731: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -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:3740: 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 -else - if test -n "$CTAGS"; then - ac_cv_prog_CTAGS="$CTAGS" # 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_CTAGS="$ac_prog" -echo "$as_me:3755: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CTAGS=$ac_cv_prog_CTAGS -if test -n "$CTAGS"; then - echo "$as_me:3763: result: $CTAGS" >&5 -echo "${ECHO_T}$CTAGS" >&6 -else - echo "$as_me:3766: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CTAGS" && break -done - -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:3777: 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 -else - if test -n "$ETAGS"; then - ac_cv_prog_ETAGS="$ETAGS" # 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_ETAGS="$ac_prog" -echo "$as_me:3792: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ETAGS=$ac_cv_prog_ETAGS -if test -n "$ETAGS"; then - echo "$as_me:3800: result: $ETAGS" >&5 -echo "${ECHO_T}$ETAGS" >&6 -else - echo "$as_me:3803: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ETAGS" && break -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:3812: 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 -else - if test -n "$MAKE_LOWER_TAGS"; then - ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # 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_MAKE_LOWER_TAGS="yes" -echo "$as_me:3827: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no" -fi -fi -MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS -if test -n "$MAKE_LOWER_TAGS"; then - echo "$as_me:3836: result: $MAKE_LOWER_TAGS" >&5 -echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 -else - echo "$as_me:3839: 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:3846: 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 -else - if test -n "$MAKE_UPPER_TAGS"; then - ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # 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_MAKE_UPPER_TAGS="yes" -echo "$as_me:3861: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no" -fi -fi -MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS -if test -n "$MAKE_UPPER_TAGS"; then - echo "$as_me:3870: result: $MAKE_UPPER_TAGS" >&5 -echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 -else - echo "$as_me:3873: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -else - MAKE_UPPER_TAGS=no -fi - -if test "$MAKE_UPPER_TAGS" = yes ; then - MAKE_UPPER_TAGS= -else - MAKE_UPPER_TAGS="#" -fi - -if test "$MAKE_LOWER_TAGS" = yes ; then - MAKE_LOWER_TAGS= -else - MAKE_LOWER_TAGS="#" -fi - -echo "$as_me:3893: 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 </dev/null | fgrep -v "ing directory" | sed -e 's,[ ]*$,,'` - case "$cf_result" in - .*k) - 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 "given option \"$cf_option\", no match \"$cf_result\"" - ;; - esac - done - rm -f cf_makeflags.tmp - -fi -echo "$as_me:3927: 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:3933: 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 -else - if test -n "$RANLIB"; then - ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib" -echo "$as_me:3948: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -RANLIB=$ac_cv_prog_RANLIB -if test -n "$RANLIB"; then - echo "$as_me:3956: result: $RANLIB" >&5 -echo "${ECHO_T}$RANLIB" >&6 -else - echo "$as_me:3959: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:3968: 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 -else - if test -n "$ac_ct_RANLIB"; then - ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_ac_ct_RANLIB="ranlib" -echo "$as_me:3983: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB="':'" -fi -fi -ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB -if test -n "$ac_ct_RANLIB"; then - echo "$as_me:3992: result: $ac_ct_RANLIB" >&5 -echo "${ECHO_T}$ac_ct_RANLIB" >&6 -else - echo "$as_me:3995: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - RANLIB=$ac_ct_RANLIB -else - RANLIB="$ac_cv_prog_RANLIB" -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:4007: 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 -else - if test -n "$LD"; then - ac_cv_prog_LD="$LD" # 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_LD="${ac_tool_prefix}ld" -echo "$as_me:4022: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -LD=$ac_cv_prog_LD -if test -n "$LD"; then - echo "$as_me:4030: result: $LD" >&5 -echo "${ECHO_T}$LD" >&6 -else - echo "$as_me:4033: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:4042: 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 -else - if test -n "$ac_ct_LD"; then - ac_cv_prog_ac_ct_LD="$ac_ct_LD" # 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_ac_ct_LD="ld" -echo "$as_me:4057: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_LD" && ac_cv_prog_ac_ct_LD="ld" -fi -fi -ac_ct_LD=$ac_cv_prog_ac_ct_LD -if test -n "$ac_ct_LD"; then - echo "$as_me:4066: result: $ac_ct_LD" >&5 -echo "${ECHO_T}$ac_ct_LD" >&6 -else - echo "$as_me:4069: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - LD=$ac_ct_LD -else - LD="$ac_cv_prog_LD" -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:4081: 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 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" -echo "$as_me:4096: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:4104: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:4107: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:4116: 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 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" -echo "$as_me:4131: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:4140: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:4143: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -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:4155: 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 -else - if test -n "$AR"; then - ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" -echo "$as_me:4170: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -AR=$ac_cv_prog_AR -if test -n "$AR"; then - echo "$as_me:4178: result: $AR" >&5 -echo "${ECHO_T}$AR" >&6 -else - echo "$as_me:4181: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:4190: 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 -else - if test -n "$ac_ct_AR"; then - ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" -echo "$as_me:4205: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" -fi -fi -ac_ct_AR=$ac_cv_prog_ac_ct_AR -if test -n "$ac_ct_AR"; then - echo "$as_me:4214: result: $ac_ct_AR" >&5 -echo "${ECHO_T}$ac_ct_AR" >&6 -else - echo "$as_me:4217: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - AR=$ac_ct_AR -else - AR="$ac_cv_prog_AR" -fi - -echo "$as_me:4226: 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 -else - - cf_cv_ar_flags=unknown - for cf_ar_flags in -curv curv -crv crv -cqv cqv -rv rv - do - - # check if $ARFLAGS already contains this choice - if test "x$ARFLAGS" != "x" ; then - cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` - if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then - cf_cv_ar_flags= - break - fi - fi - - rm -f conftest.$ac_cv_objext - rm -f conftest.a - - cat >conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4255: \$? = $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 - if test -f conftest.a ; then - cf_cv_ar_flags=$cf_ar_flags - break - fi - else - test -n "$verbose" && echo " cannot compile test-program" 1>&6 - -echo "${as_me:-configure}:4266: testing cannot compile test-program ..." 1>&5 - - break - fi - done - rm -f conftest.a conftest.$ac_ext conftest.$ac_cv_objext - -fi -echo "$as_me:4274: result: $cf_cv_ar_flags" >&5 -echo "${ECHO_T}$cf_cv_ar_flags" >&6 - -if test -n "$ARFLAGS" ; then - if test -n "$cf_cv_ar_flags" ; then - ARFLAGS="$ARFLAGS $cf_cv_ar_flags" - fi -else - ARFLAGS=$cf_cv_ar_flags -fi - -echo "$as_me:4285: checking if you have specified an install-prefix" >&5 -echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6 - -# Check whether --with-install-prefix or --without-install-prefix was given. -if test "${with_install_prefix+set}" = set; then - withval="$with_install_prefix" - case "$withval" in #(vi - yes|no) #(vi - ;; - *) DESTDIR="$withval" - ;; - esac -fi; -echo "$as_me:4298: result: $DESTDIR" >&5 -echo "${ECHO_T}$DESTDIR" >&6 - -############################################################################### - -# If we're cross-compiling, allow the user to override the tools and their -# options. The configure script is oriented toward identifying the host -# compiler, etc., but we need a build compiler to generate parts of the source. - -if test "$cross_compiling" = yes ; then - - # defaults that we might want to override - : ${BUILD_CFLAGS:=''} - : ${BUILD_CPPFLAGS:=''} - : ${BUILD_LDFLAGS:=''} - : ${BUILD_LIBS:=''} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} - -# Check whether --with-build-cc or --without-build-cc was given. -if test "${with_build_cc+set}" = set; then - withval="$with_build_cc" - BUILD_CC="$withval" -else - for ac_prog in gcc cc cl -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:4326: 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 -else - if test -n "$BUILD_CC"; then - ac_cv_prog_BUILD_CC="$BUILD_CC" # 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_BUILD_CC="$ac_prog" -echo "$as_me:4341: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -BUILD_CC=$ac_cv_prog_BUILD_CC -if test -n "$BUILD_CC"; then - echo "$as_me:4349: result: $BUILD_CC" >&5 -echo "${ECHO_T}$BUILD_CC" >&6 -else - echo "$as_me:4352: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$BUILD_CC" && break -done - -fi; - echo "$as_me:4360: checking for native build C compiler" >&5 -echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6 - echo "$as_me:4362: result: $BUILD_CC" >&5 -echo "${ECHO_T}$BUILD_CC" >&6 - - echo "$as_me:4365: 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. -if test "${with_build_cpp+set}" = set; then - withval="$with_build_cpp" - BUILD_CPP="$withval" -else - BUILD_CPP='${BUILD_CC} -E' -fi; - echo "$as_me:4375: result: $BUILD_CPP" >&5 -echo "${ECHO_T}$BUILD_CPP" >&6 - - echo "$as_me:4378: 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. -if test "${with_build_cflags+set}" = set; then - withval="$with_build_cflags" - BUILD_CFLAGS="$withval" -fi; - echo "$as_me:4386: result: $BUILD_CFLAGS" >&5 -echo "${ECHO_T}$BUILD_CFLAGS" >&6 - - echo "$as_me:4389: 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. -if test "${with_build_cppflags+set}" = set; then - withval="$with_build_cppflags" - BUILD_CPPFLAGS="$withval" -fi; - echo "$as_me:4397: result: $BUILD_CPPFLAGS" >&5 -echo "${ECHO_T}$BUILD_CPPFLAGS" >&6 - - echo "$as_me:4400: 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. -if test "${with_build_ldflags+set}" = set; then - withval="$with_build_ldflags" - BUILD_LDFLAGS="$withval" -fi; - echo "$as_me:4408: result: $BUILD_LDFLAGS" >&5 -echo "${ECHO_T}$BUILD_LDFLAGS" >&6 - - echo "$as_me:4411: 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. -if test "${with_build_libs+set}" = set; then - withval="$with_build_libs" - BUILD_LIBS="$withval" -fi; - echo "$as_me:4419: result: $BUILD_LIBS" >&5 -echo "${ECHO_T}$BUILD_LIBS" >&6 - - # this assumes we're on Unix. - BUILD_EXEEXT= - BUILD_OBJEXT=o - - : ${BUILD_CC:='${CC}'} - - if ( test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}' ) ; then - { { echo "$as_me:4429: 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;} - { (exit 1); exit 1; }; } - fi - -else - : ${BUILD_CC:='${CC}'} - : ${BUILD_CPP:='${CPP}'} - : ${BUILD_CFLAGS:='${CFLAGS}'} - : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} - : ${BUILD_LDFLAGS:='${LDFLAGS}'} - : ${BUILD_LIBS:='${LIBS}'} - : ${BUILD_EXEEXT:='$x'} - : ${BUILD_OBJEXT:='o'} -fi - -############################################################################### - -### Options to allow the user to specify the set of libraries which are used. -### Use "--without-normal --with-shared" to allow the default model to be -### shared, for example. -cf_list_models="" - -echo "$as_me:4454: 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. -if test "${enable_libtool_version+set}" = set; then - enableval="$enable_libtool_version" - test "$enableval" != no && enableval=yes - if test "$enableval" != "yes" ; then - cf_libtool_version=no - else - cf_libtool_version=yes - fi -else - enableval=yes - cf_libtool_version=yes - -fi; -echo "$as_me:4471: result: $cf_libtool_version" >&5 -echo "${ECHO_T}$cf_libtool_version" >&6 - -if test "$cf_libtool_version" = yes ; then - LIBTOOL_VERSION="-version-number" -else - LIBTOOL_VERSION="-version-info" -fi - -LIBTOOL= - -# common library maintenance symbols that are convenient for libtool scripts: -LIB_CREATE='${AR} -cr' -LIB_OBJECT='${OBJECTS}' -LIB_SUFFIX=.a -LIB_PREP="$RANLIB" - -# symbols used to prop libtool up to enable it to determine what it should be -# doing: -LIB_CLEAN= -LIB_COMPILE= -LIB_LINK='${CC}' -LIB_INSTALL= -LIB_UNINSTALL= - -echo "$as_me:4496: 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. -if test "${with_libtool+set}" = set; then - withval="$with_libtool" - with_libtool=$withval -else - with_libtool=no -fi; -echo "$as_me:4506: result: $with_libtool" >&5 -echo "${ECHO_T}$with_libtool" >&6 -if test "$with_libtool" != "no"; then - - if test "$with_libtool" != "yes" ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$with_libtool" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval with_libtool="$with_libtool" - case ".$with_libtool" in #(vi - .NONE/*) - with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - with_libtool=`echo $with_libtool | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:4537: error: expected a pathname, not \"$with_libtool\"" >&5 -echo "$as_me: error: expected a pathname, not \"$with_libtool\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - - LIBTOOL=$with_libtool - else - # Extract the first word of "libtool", so it can be a program name with args. -set dummy libtool; ac_word=$2 -echo "$as_me:4547: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_LIBTOOL+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $LIBTOOL in - [\\/]* | ?:[\\/]*) - ac_cv_path_LIBTOOL="$LIBTOOL" # 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_LIBTOOL="$ac_dir/$ac_word" - echo "$as_me:4564: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -LIBTOOL=$ac_cv_path_LIBTOOL - -if test -n "$LIBTOOL"; then - echo "$as_me:4575: result: $LIBTOOL" >&5 -echo "${ECHO_T}$LIBTOOL" >&6 -else - echo "$as_me:4578: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - fi - if test -z "$LIBTOOL" ; then - { { echo "$as_me:4584: 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 ${DESTDIR}${libdir} ${LIBTOOL_VERSION} `cut -f1 ${srcdir}/VERSION` ${LIBTOOL_OPTS} ${LT_UNDEF} -o' - LIB_OBJECT='${OBJECTS:.o=.lo}' - LIB_SUFFIX=.la - LIB_CLEAN='${LIBTOOL} --mode=clean' - LIB_COMPILE='${LIBTOOL} --mode=compile' - LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}' - LIB_INSTALL='${LIBTOOL} --mode=install' - LIB_UNINSTALL='${LIBTOOL} --mode=uninstall' - LIB_PREP=: - - # Show the version of libtool - echo "$as_me:4599: checking version of libtool" >&5 -echo $ECHO_N "checking version of libtool... $ECHO_C" >&6 - - # Save the version in a cache variable - this is not entirely a good - # thing, but the version string from libtool is very ugly, and for - # bug reports it might be useful to have the original string. "(" - 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.].*//'` - echo "$as_me:4606: result: $cf_cv_libtool_version" >&5 -echo "${ECHO_T}$cf_cv_libtool_version" >&6 - if test -z "$cf_cv_libtool_version" ; then - { { echo "$as_me:4609: error: This is not GNU libtool" >&5 -echo "$as_me: error: This is not GNU libtool" >&2;} - { (exit 1); exit 1; }; } - fi - - # special hack to add -no-undefined (which libtool should do for itself) - LT_UNDEF= - case "$cf_cv_system_name" in #(vi - cygwin*|mingw32*|uwin*|aix[456]) #(vi - LT_UNDEF=-no-undefined - ;; - esac - - # special hack to add --tag option for C++ compiler - case $cf_cv_libtool_version in #(vi - 1.[5-9]*|[2-9].[0-9.a-z]*) #(vi - LIBTOOL_CXX="$LIBTOOL --tag=CXX" - LIBTOOL="$LIBTOOL --tag=CC" - ;; - *) - LIBTOOL_CXX="$LIBTOOL" - ;; - esac -else - LIBTOOL="" - LIBTOOL_CXX="" -fi - -test -z "$LIBTOOL" && ECHO_LT= - -if test "$with_libtool" != "no" ; then - -cf_list_models="$cf_list_models libtool" - -else - -echo "$as_me:4645: 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. -if test "${with_shared+set}" = set; then - withval="$with_shared" - with_shared=$withval -else - with_shared=no -fi; -echo "$as_me:4655: result: $with_shared" >&5 -echo "${ECHO_T}$with_shared" >&6 -test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared" - -echo "$as_me:4659: 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. -if test "${with_normal+set}" = set; then - withval="$with_normal" - with_normal=$withval -else - with_normal=yes -fi; -echo "$as_me:4669: result: $with_normal" >&5 -echo "${ECHO_T}$with_normal" >&6 -test "$with_normal" = "yes" && cf_list_models="$cf_list_models normal" - -echo "$as_me:4673: 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. -if test "${with_debug+set}" = set; then - withval="$with_debug" - with_debug=$withval -else - with_debug=yes -fi; -echo "$as_me:4683: result: $with_debug" >&5 -echo "${ECHO_T}$with_debug" >&6 -test "$with_debug" = "yes" && cf_list_models="$cf_list_models debug" - -echo "$as_me:4687: 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. -if test "${with_profile+set}" = set; then - withval="$with_profile" - with_profile=$withval -else - with_profile=no -fi; -echo "$as_me:4697: result: $with_profile" >&5 -echo "${ECHO_T}$with_profile" >&6 -test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile" - -fi - -############################################################################### - -echo "$as_me:4705: 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:4709: 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:4714: 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:4717: result: $DFT_LWR_MODEL" >&5 -echo "${ECHO_T}$DFT_LWR_MODEL" >&6 - -DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -TICS_NAME=tic - -TINFO_NAME=tinfo - -LIB_NAME=ncurses - -LIB_DIR=../lib -LIB_2ND=../../lib - - case $cf_cv_system_name in #(vi - OS/2*|os2*) #(vi - LIB_PREFIX='' - ;; - *) LIB_PREFIX='lib' - ;; - esac -cf_prefix=$LIB_PREFIX - -LIB_PREFIX=$cf_prefix - -LIB_SUFFIX= - -############################################################################### - -echo "$as_me:4746: 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. -if test "${with_termlib+set}" = set; then - withval="$with_termlib" - with_termlib=$withval -else - with_termlib=no -fi; -echo "$as_me:4756: result: $with_termlib" >&5 -echo "${ECHO_T}$with_termlib" >&6 - -echo "$as_me:4759: 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. -if test "${with_ticlib+set}" = set; then - withval="$with_ticlib" - with_ticlib=$withval -else - with_ticlib=no -fi; -echo "$as_me:4769: result: $with_ticlib" >&5 -echo "${ECHO_T}$with_ticlib" >&6 - -### Checks for special libraries, must be done up-front. -SHLIB_LIST="" - -echo "$as_me:4775: 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. -if test "${with_gpm+set}" = set; then - withval="$with_gpm" - with_gpm=$withval -else - with_gpm=maybe -fi; -echo "$as_me:4785: result: $with_gpm" >&5 -echo "${ECHO_T}$with_gpm" >&6 - -if test "$with_gpm" != no ; then - echo "$as_me:4789: 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 4795 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:4799: \"$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:4805: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_gpm_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_gpm_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4824: 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 - - cat >>confdefs.h <<\EOF -#define HAVE_GPM_H 1 -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}:4835: testing assuming we really have GPM library ..." 1>&5 - - cat >>confdefs.h <<\EOF -#define HAVE_LIBGPM 1 -EOF - - else - echo "$as_me:4842: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 4850 "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 Gpm_Open (); -int -main () -{ -Gpm_Open (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4869: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4872: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4875: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4878: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_Gpm_Open=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_Gpm_Open=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:4889: 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 - : -else - - { { echo "$as_me:4895: error: Cannot link with GPM library" >&5 -echo "$as_me: error: Cannot link with GPM library" >&2;} - { (exit 1); exit 1; }; } - fi - with_gpm=yes - -fi - -else - - test "$with_gpm" != maybe && { echo "$as_me:4905: WARNING: Cannot find GPM header" >&5 -echo "$as_me: WARNING: Cannot find GPM header" >&2;} - with_gpm=no - -fi - -fi - -if test "$with_gpm" != no ; then - echo "$as_me:4914: 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. -if test "${with_dlsym+set}" = set; then - withval="$with_dlsym" - with_dlsym=$withval -else - with_dlsym=yes -fi; - echo "$as_me:4924: result: $with_dlsym" >&5 -echo "${ECHO_T}$with_dlsym" >&6 - if test "$with_dlsym" = yes ; then - -cf_have_dlsym=no -echo "$as_me:4929: 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 4935 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char dlsym (); below. */ -#include -/* 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 dlsym (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_dlsym) || defined (__stub___dlsym) -choke me -#else -f = dlsym; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4966: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4969: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4972: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4975: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_dlsym=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_dlsym=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:4985: 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:4992: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5000 "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 dlsym (); -int -main () -{ -dlsym (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5019: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5022: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5025: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5028: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dl_dlsym=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dl_dlsym=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5039: 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 - - cf_have_dlsym=yes - cf_have_libdl=yes -fi - -fi - -if test "$cf_have_dlsym" = yes ; then - test "$cf_have_libdl" = yes && LIBS="-ldl $LIBS" - - echo "$as_me:5052: 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 5055 "configure" -#include "confdefs.h" -#include -int -main () -{ - - void *obj; - if ((obj = dlopen("filename", 0)) != 0) { - if (dlsym(obj, "symbolname") == 0) { - dlclose(obj); - } - } - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5073: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5076: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5079: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5082: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cat >>confdefs.h <<\EOF -#define HAVE_LIBDL 1 -EOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - { { echo "$as_me:5093: 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:5098: result: ok" >&5 -echo "${ECHO_T}ok" >&6 -else - { { echo "$as_me:5101: error: Cannot find dlsym function" >&5 -echo "$as_me: error: Cannot find dlsym function" >&2;} - { (exit 1); exit 1; }; } -fi - - if test "$with_gpm" != yes ; then - test -n "$verbose" && echo " assuming soname for gpm is $with_gpm" 1>&6 - -echo "${as_me:-configure}:5109: testing assuming soname for gpm is $with_gpm ..." 1>&5 - - cf_cv_gpm_soname="$with_gpm" - else - -echo "$as_me:5114: 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 -else - -cf_cv_gpm_soname=unknown -if test "$cross_compiling" != yes ; then -cat >conftest.$ac_ext < -int main() -{ -if (Gpm_Open(0,0)) Gpm_Close(); - ${cf_cv_main_return:-return}(0); -} -CF_EOF -cf_save_LIBS="$LIBS" - LIBS="-lgpm $LIBS" - if { (eval echo "$as_me:5132: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5135: \$? = $ac_status" >&5 - (exit $ac_status); } ; then - if { (eval echo "$as_me:5137: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5140: \$? = $ac_status" >&5 - (exit $ac_status); } ; then - cf_cv_gpm_soname=`ldd conftest$ac_exeext 2>/dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | fgrep libgpm.` - test -z "$cf_cv_gpm_soname" && cf_cv_gpm_soname=unknown - fi - fi -rm -rf conftest* -LIBS="$cf_save_LIBS" -fi - -fi -echo "$as_me:5151: result: $cf_cv_gpm_soname" >&5 -echo "${ECHO_T}$cf_cv_gpm_soname" >&6 - - fi - test "$cf_cv_gpm_soname" != "unknown" && cat >>confdefs.h <>confdefs.h <<\EOF -#define HAVE_LIBGPM 1 -EOF - -echo "$as_me:5168: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5176 "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 Gpm_Wgetch (); -int -main () -{ -Gpm_Wgetch (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5195: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5198: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5201: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5204: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_Gpm_Wgetch=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_Gpm_Wgetch=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5215: 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:5219: 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 -else - -cf_cv_check_gpm_wgetch=unknown -if test "$cross_compiling" != yes ; then - -cat >conftest.$ac_ext < -int main() -{ - Gpm_Wgetch(); - ${cf_cv_main_return:-return}(0); -} -CF_EOF - - cf_save_LIBS="$LIBS" - # This only works if we can look at the symbol table. If a shared - # library is stripped for install, we cannot use that. So we're forced - # to rely on the static library, noting that some packagers may not - # include it. - LIBS="-static -lgpm -dynamic $LIBS" - if { (eval echo "$as_me:5243: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5246: \$? = $ac_status" >&5 - (exit $ac_status); } ; then - if { (eval echo "$as_me:5248: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5251: \$? = $ac_status" >&5 - (exit $ac_status); } ; then - cf_cv_check_gpm_wgetch=`nm conftest$ac_exeext | egrep '\' | egrep '\<[vVwW]\>'` - test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes - test -z "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=no - fi - fi - rm -rf conftest* - LIBS="$cf_save_LIBS" -fi - -fi -echo "$as_me:5263: 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:5267: 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 - -fi - -fi - -# not everyone has "test -c" -if test -c /dev/sysmouse 2>/dev/null ; then -echo "$as_me:5277: 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. -if test "${with_sysmouse+set}" = set; then - withval="$with_sysmouse" - cf_with_sysmouse=$withval -else - cf_with_sysmouse=maybe -fi; - if test "$cf_with_sysmouse" != no ; then - cat >conftest.$ac_ext <<_ACEOF -#line 5289 "configure" -#include "confdefs.h" - -#include -#if (__FreeBSD_version >= 400017) -#include -#include -#else -#include -#endif - -int -main () -{ - - struct mouse_info the_mouse; - ioctl(0, CONS_MOUSECTL, &the_mouse); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5312: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5315: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5318: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5321: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_with_sysmouse=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_with_sysmouse=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - fi -echo "$as_me:5331: result: $cf_with_sysmouse" >&5 -echo "${ECHO_T}$cf_with_sysmouse" >&6 -test "$cf_with_sysmouse" = yes && cat >>confdefs.h <<\EOF -#define USE_SYSMOUSE 1 -EOF - -fi - -if test X"$CC_G_OPT" = X"" ; then - CC_G_OPT='-g' - test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT='' -fi - -if test X"$CXX_G_OPT" = X"" ; then - CXX_G_OPT='-g' - test -n "$GXX" && test "${ac_cv_prog_cxx_g}" != yes && CXX_G_OPT='' -fi - -echo "$as_me:5349: 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='' ;; -normal) LD_MODEL='' ;; -debug) LD_MODEL=$CC_G_OPT ;; -profile) LD_MODEL='-pg';; -shared) LD_MODEL='' ;; -esac -echo "$as_me:5358: result: $LD_MODEL" >&5 -echo "${ECHO_T}$LD_MODEL" >&6 - -case $DFT_LWR_MODEL in -shared) - -echo "$as_me:5364: 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. -if test "${enable_rpath+set}" = set; then - enableval="$enable_rpath" - cf_cv_enable_rpath=$enableval -else - cf_cv_enable_rpath=no -fi; -echo "$as_me:5374: result: $cf_cv_enable_rpath" >&5 -echo "${ECHO_T}$cf_cv_enable_rpath" >&6 - -echo "$as_me:5377: 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. -if test "${enable_relink+set}" = set; then - enableval="$enable_relink" - cf_cv_do_relink=$enableval -else - cf_cv_do_relink=yes -fi; -echo "$as_me:5387: result: $cf_cv_do_relink" >&5 -echo "${ECHO_T}$cf_cv_do_relink" >&6 - ;; -esac - -LD_RPATH_OPT= -echo "$as_me:5393: checking for an rpath option" >&5 -echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 -case $cf_cv_system_name in #(vi -irix*) #(vi - if test "$GCC" = yes; then - LD_RPATH_OPT="-Wl,-rpath," - else - LD_RPATH_OPT="-rpath " - fi - ;; -linux*|gnu*|k*bsd*-gnu) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -openbsd[2-9].*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -freebsd*) #(vi - LD_RPATH_OPT="-rpath " - ;; -netbsd*) #(vi - LD_RPATH_OPT="-Wl,-rpath," - ;; -osf*|mls+*) #(vi - LD_RPATH_OPT="-rpath " - ;; -solaris2*) #(vi - LD_RPATH_OPT="-R" - ;; -*) - ;; -esac -echo "$as_me:5424: result: $LD_RPATH_OPT" >&5 -echo "${ECHO_T}$LD_RPATH_OPT" >&6 - -case "x$LD_RPATH_OPT" in #(vi -x-R*) - echo "$as_me:5429: 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" - LIBS="${LD_RPATH_OPT}$libdir $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 5434 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5446: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5449: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5452: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5455: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_rpath_space=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_rpath_space=yes -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$cf_save_LIBS" - echo "$as_me:5465: result: $cf_rpath_space" >&5 -echo "${ECHO_T}$cf_rpath_space" >&6 - test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " - ;; -esac - - LOCAL_LDFLAGS= - LOCAL_LDFLAGS2= - LD_SHARED_OPTS= - INSTALL_LIB="-m 644" - - cf_cv_do_symlinks=no - cf_ld_rpath_opt= - test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" - - echo "$as_me:5480: checking if release/abi version should be used for shared libs" >&5 -echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6 - -# Check whether --with-shlib-version or --without-shlib-version was given. -if test "${with_shlib_version+set}" = set; then - withval="$with_shlib_version" - test -z "$withval" && withval=auto - case $withval in #(vi - yes) #(vi - cf_cv_shlib_version=auto - ;; - rel|abi|auto|no) #(vi - cf_cv_shlib_version=$withval - ;; - *) - { { echo "$as_me:5495: error: option value must be one of: rel, abi, auto or no" >&5 -echo "$as_me: error: option value must be one of: rel, abi, auto or no" >&2;} - { (exit 1); exit 1; }; } - ;; - esac - -else - cf_cv_shlib_version=auto -fi; - echo "$as_me:5504: result: $cf_cv_shlib_version" >&5 -echo "${ECHO_T}$cf_cv_shlib_version" >&6 - - cf_cv_rm_so_locs=no - - # Some less-capable ports of gcc support only -fpic - CC_SHARED_OPTS= - if test "$GCC" = yes - then - echo "$as_me:5513: 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 5520 "configure" -#include "confdefs.h" -#include -int -main () -{ -int x = 1 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5532: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5535: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5538: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5541: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done - echo "$as_me:5550: result: $CC_SHARED_OPTS" >&5 -echo "${ECHO_T}$CC_SHARED_OPTS" >&6 - CFLAGS="$cf_save_CFLAGS" - fi - - cf_cv_shlib_version_infix=no - - case $cf_cv_system_name in #(vi - aix[56]*) #(vi - if test "$GCC" = yes; then - CC_SHARED_OPTS= - MK_SHARED_LIB='$(CC) -shared' - fi - ;; - beos*) #(vi - MK_SHARED_LIB='${CC} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0' - ;; - cygwin*) #(vi - CC_SHARED_OPTS= - MK_SHARED_LIB='sh ../mk_shared_lib.sh $@ ${CC} ${CFLAGS}' - cf_cv_shlib_version=cygdll - cf_cv_shlib_version_infix=cygdll - cat >mk_shared_lib.sh <<-CF_EOF - #!/bin/sh - SHARED_LIB=\$1 - IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` - shift - cat <<-EOF - Linking shared library - ** SHARED_LIB \$SHARED_LIB - ** IMPORT_LIB \$IMPORT_LIB -EOF - exec \$* -shared -Wl,--out-implib=../lib/\${IMPORT_LIB} -Wl,--export-all-symbols -o ../lib/\${SHARED_LIB} -CF_EOF - chmod +x mk_shared_lib.sh - ;; - darwin*) #(vi - EXTRA_CFLAGS="-no-cpp-precomp" - CC_SHARED_OPTS="-dynamic" - MK_SHARED_LIB='${CC} ${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:5592: 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 -else - - cf_save_LDFLAGS=$LDFLAGS - LDFLAGS="$LDFLAGS -Wl,-search_paths_first" - cat >conftest.$ac_ext <<_ACEOF -#line 5601 "configure" -#include "confdefs.h" - -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5613: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5616: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5619: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5622: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ldflags_search_paths_first=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ldflags_search_paths_first=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LDFLAGS=$cf_save_LDFLAGS -fi -echo "$as_me:5633: 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" - fi - ;; - hpux*) #(vi - # (tested with gcc 2.7.2 -- I don't have c89) - if test "$GCC" = yes; then - LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' - else - CC_SHARED_OPTS='+Z' - LD_SHARED_OPTS='-Wl,+b,${libdir}' - fi - MK_SHARED_LIB='${LD} +b ${libdir} -b -o $@' - # HP-UX shared libraries must be executable, and should be - # readonly to exploit a quirk in the memory manager. - INSTALL_LIB="-m 555" - ;; - irix*) #(vi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - # tested with IRIX 5.2 and 'cc'. - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - MK_SHARED_LIB='${CC} -shared -rdata_shared -soname `basename $@` -o $@' - else - MK_SHARED_LIB='${CC} -shared -Wl,-soname,`basename $@` -o $@' - fi - cf_cv_rm_so_locs=yes - ;; - linux*|gnu*|k*bsd*-gnu) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' - ;; - openbsd[2-9].*) #(vi - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' - ;; - nto-qnx*|openbsd*|freebsd[12].*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - MK_SHARED_LIB='${LD} -Bshareable -o $@' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - freebsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${libdir} $LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${LD} -shared -Bshareable -soname=`basename $@` -o $@' - ;; - netbsd*) #(vi - CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" - if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then - LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${libdir} $EXTRA_LDFLAGS" - if test "$cf_cv_shlib_version" = auto; then - if test -f /usr/libexec/ld.elf_so; then - cf_cv_shlib_version=abi - else - cf_cv_shlib_version=rel - fi - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - MK_SHARED_LIB='${CC} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@' - else - MK_SHARED_LIB='${LD} -shared -Bshareable -o $@' - fi - ;; - osf*|mls+*) #(vi - # tested with OSF/1 V3.2 and 'cc' - # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't - # link with shared libs). - MK_SHARED_LIB='${LD} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`' - case $host_os in #(vi - osf4*) - MK_SHARED_LIB="${MK_SHARED_LIB} -msym" - ;; - esac - MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@' - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - cf_cv_rm_so_locs=yes - ;; - sco3.2v5*) # (also uw2* and UW7: hops 13-Apr-98 - # tested with osr5.0.5 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-belf -KPIC' - fi - MK_SHARED_LIB='${LD} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@' - if test "$cf_cv_enable_rpath" = yes ; then - # only way is to set LD_RUN_PATH but no switch for it - RUN_PATH=$libdir - fi - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - LINK_PROGS='LD_RUN_PATH=${libdir}' - LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' - ;; - sunos4*) #(vi - # tested with SunOS 4.1.1 and gcc 2.7.0 - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -assert pure-text -o $@' - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - ;; - solaris2*) #(vi - # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 - # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 - if test "$DFT_LWR_MODEL" = "shared" ; then - LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" - LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" - fi - if test "$cf_cv_enable_rpath" = yes ; then - EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" - fi - - test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel - if test "$cf_cv_shlib_version" = rel; then - cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' - else - cf_cv_shared_soname='`basename $@`' - fi - - if test "$GCC" != yes; then - cf_save_CFLAGS="$CFLAGS" - for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O - do - CFLAGS="$cf_shared_opts $cf_save_CFLAGS" - cat >conftest.$ac_ext <<_ACEOF -#line 5813 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello\n"); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5825: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5828: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5831: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5834: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done - CFLAGS="$cf_save_CFLAGS" - CC_SHARED_OPTS=$cf_shared_opts - MK_SHARED_LIB='${CC} -dy -G -h '$cf_cv_shared_soname' -o $@' - else - MK_SHARED_LIB='${CC} -shared -dy -G -h '$cf_cv_shared_soname' -o $@' - fi - ;; - sysv5uw7*|unix_sv*) #(vi - # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) - if test "$GCC" != yes; then - CC_SHARED_OPTS='-KPIC' - fi - MK_SHARED_LIB='${LD} -d y -G -o $@' - ;; - *) - CC_SHARED_OPTS='unknown' - MK_SHARED_LIB='echo unknown' - ;; - esac - - # This works if the last tokens in $MK_SHARED_LIB are the -o target. - case "$cf_cv_shlib_version" in #(vi - rel|abi) - case "$MK_SHARED_LIB" in #(vi - *'-o $@') #(vi - test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes - ;; - *) - { echo "$as_me:5871: WARNING: ignored --with-shlib-version" >&5 -echo "$as_me: WARNING: ignored --with-shlib-version" >&2;} - ;; - esac - ;; - esac - - if test -n "$cf_ld_rpath_opt" ; then - MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${libdir}" - fi - -if test "$CC_SHARED_OPTS" = "unknown"; then - for model in $cf_list_models; do - if test "$model" = "shared"; then - { { echo "$as_me:5885: 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 - done -fi - -### If we're building with rpath, try to link non-standard libs that way too. -if test "$DFT_LWR_MODEL" = "shared"; then - -echo "$as_me:5895: 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. -if test "${enable_rpath_hack+set}" = set; then - enableval="$enable_rpath_hack" - test "$enableval" != no && enableval=yes - if test "$enableval" != "yes" ; then - cf_disable_rpath_hack=yes - else - cf_disable_rpath_hack=no - fi -else - enableval=yes - cf_disable_rpath_hack=no - -fi; -echo "$as_me:5912: result: $cf_disable_rpath_hack" >&5 -echo "${ECHO_T}$cf_disable_rpath_hack" >&6 -if test "$cf_disable_rpath_hack" = no ; then - -echo "$as_me:5916: 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:5919: 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:5926: 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 -else - if test -n "$cf_ldd_prog"; then - ac_cv_prog_cf_ldd_prog="$cf_ldd_prog" # 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_cf_ldd_prog="$ac_prog" -echo "$as_me:5941: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -cf_ldd_prog=$ac_cv_prog_cf_ldd_prog -if test -n "$cf_ldd_prog"; then - echo "$as_me:5949: result: $cf_ldd_prog" >&5 -echo "${ECHO_T}$cf_ldd_prog" >&6 -else - echo "$as_me:5952: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$cf_ldd_prog" && break -done -test -n "$cf_ldd_prog" || cf_ldd_prog="no" - - cf_rpath_list="/usr/lib /lib" - if test "$cf_ldd_prog" != no - then - cf_rpath_oops= - -cat >conftest.$ac_ext <<_ACEOF -#line 5966 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello"); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5978: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5981: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5984: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5987: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_rpath_oops=`$cf_ldd_prog conftest$ac_exeext | fgrep ' not found' | sed -e 's% =>.*$%%' |sort -u` - cf_rpath_list=`$cf_ldd_prog conftest$ac_exeext | fgrep / | sed -e 's%^.*[ ]/%/%' -e 's%/[^/][^/]*$%%' |sort -u` -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - - # If we passed the link-test, but get a "not found" on a given library, - # this could be due to inept reconfiguration of gcc to make it only - # partly honor /usr/local/lib (or whatever). Sometimes this behavior - # is intentional, e.g., installing gcc in /usr/bin and suppressing the - # /usr/local libraries. - if test -n "$cf_rpath_oops" - then - for cf_rpath_src in $cf_rpath_oops - do - for cf_rpath_dir in \ - /usr/local \ - /usr/pkg \ - /opt/sfw - do - if test -f $cf_rpath_dir/lib/$cf_rpath_src - then - test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6 - -echo "${as_me:-configure}:6015: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5 - - LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" - break - fi - done - done - fi - fi - - test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 - -echo "${as_me:-configure}:6027: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 - -test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6 - -echo "${as_me:-configure}:6031: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5 - -cf_rpath_dst= -for cf_rpath_src in $LDFLAGS -do - case $cf_rpath_src in #(vi - -L*) #(vi - - # check if this refers to a directory which we will ignore - cf_rpath_skip=no - if test -n "$cf_rpath_list" - then - for cf_rpath_item in $cf_rpath_list - do - if test "x$cf_rpath_src" = "x-L$cf_rpath_item" - then - cf_rpath_skip=yes - break - fi - done - fi - - if test "$cf_rpath_skip" = no - then - # transform the option - if test "$LD_RPATH_OPT" = "-R " ; then - cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` - else - cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` - fi - - # if we have not already added this, add it now - cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` - if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" - then - test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 - -echo "${as_me:-configure}:6068: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 - - EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" - fi - fi - ;; - esac - cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" -done -LDFLAGS=$cf_rpath_dst - -test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6 - -echo "${as_me:-configure}:6081: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5 - -test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6 - -echo "${as_me:-configure}:6085: testing ...checking LIBS $LIBS ..." 1>&5 - -cf_rpath_dst= -for cf_rpath_src in $LIBS -do - case $cf_rpath_src in #(vi - -L*) #(vi - - # check if this refers to a directory which we will ignore - cf_rpath_skip=no - if test -n "$cf_rpath_list" - then - for cf_rpath_item in $cf_rpath_list - do - if test "x$cf_rpath_src" = "x-L$cf_rpath_item" - then - cf_rpath_skip=yes - break - fi - done - fi - - if test "$cf_rpath_skip" = no - then - # transform the option - if test "$LD_RPATH_OPT" = "-R " ; then - cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` - else - cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` - fi - - # if we have not already added this, add it now - cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` - if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" - then - test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 - -echo "${as_me:-configure}:6122: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 - - EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" - fi - fi - ;; - esac - cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" -done -LIBS=$cf_rpath_dst - -test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6 - -echo "${as_me:-configure}:6135: testing ...checked LIBS $LIBS ..." 1>&5 - - test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 - -echo "${as_me:-configure}:6139: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 - -fi - -fi - -fi - -############################################################################### - -### use option --disable-overwrite to leave out the link to -lcurses -echo "$as_me:6150: 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. -if test "${enable_overwrite+set}" = set; then - enableval="$enable_overwrite" - with_overwrite=$enableval -else - if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi -fi; -echo "$as_me:6160: result: $with_overwrite" >&5 -echo "${ECHO_T}$with_overwrite" >&6 - -echo "$as_me:6163: 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. -if test "${enable_database+set}" = set; then - enableval="$enable_database" - use_database=$enableval -else - use_database=yes -fi; -echo "$as_me:6173: result: $use_database" >&5 -echo "${ECHO_T}$use_database" >&6 - -case $host_os in #(vi -os2*) #(vi - TERMINFO_SRC='${top_srcdir}/misc/emx.src' - ;; -*) #(vi - TERMINFO_SRC='${top_srcdir}/misc/terminfo.src' - ;; -esac - - case $cf_cv_system_name in - os2*) PATH_SEPARATOR=';' ;; - *) PATH_SEPARATOR=':' ;; - esac - -if test "$use_database" != no ; then - cat >>confdefs.h <<\EOF -#define USE_DATABASE 1 -EOF - - echo "$as_me:6195: 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. -if test "${with_database+set}" = set; then - withval="$with_database" - TERMINFO_SRC=$withval -fi; - echo "$as_me:6203: result: $TERMINFO_SRC" >&5 -echo "${ECHO_T}$TERMINFO_SRC" >&6 - - echo "$as_me:6206: 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. -if test "${with_hashed_db+set}" = set; then - withval="$with_hashed_db" - -else - with_hashed_db=no -fi; - echo "$as_me:6216: result: $with_hashed_db" >&5 -echo "${ECHO_T}$with_hashed_db" >&6 -else - with_hashed_db=no -fi - -echo "$as_me:6222: checking for list of fallback descriptions" >&5 -echo $ECHO_N "checking for list of fallback descriptions... $ECHO_C" >&6 - -# Check whether --with-fallbacks or --without-fallbacks was given. -if test "${with_fallbacks+set}" = set; then - withval="$with_fallbacks" - with_fallback=$withval -else - with_fallback= -fi; -echo "$as_me:6232: result: $with_fallback" >&5 -echo "${ECHO_T}$with_fallback" >&6 -FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'` - -echo "$as_me:6236: 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. -if test "${with_xterm_new+set}" = set; then - withval="$with_xterm_new" - with_xterm_new=$withval -else - with_xterm_new=yes -fi; -case $with_xterm_new in -no) with_xterm_new=xterm-old;; -*) with_xterm_new=xterm-new;; -esac -echo "$as_me:6250: result: $with_xterm_new" >&5 -echo "${ECHO_T}$with_xterm_new" >&6 -WHICH_XTERM=$with_xterm_new - -MAKE_TERMINFO= -if test "$use_database" = no ; then - TERMINFO="${datadir}/terminfo" - MAKE_TERMINFO="#" -else - -echo "$as_me:6260: 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. -if test "${with_terminfo_dirs+set}" = set; then - withval="$with_terminfo_dirs" - -else - withval=${TERMINFO_DIRS:-${datadir}/terminfo} -fi; -IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}" -cf_dst_path= -for cf_src_path in $withval -do - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$cf_src_path" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval cf_src_path="$cf_src_path" - case ".$cf_src_path" in #(vi - .NONE/*) - cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:6300: 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; }; } - ;; -esac - - test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:" - cf_dst_path="${cf_dst_path}${cf_src_path}" -done -IFS="$ac_save_ifs" - -eval 'TERMINFO_DIRS="$cf_dst_path"' - -echo "$as_me:6313: result: $TERMINFO_DIRS" >&5 -echo "${ECHO_T}$TERMINFO_DIRS" >&6 -test -n "$TERMINFO_DIRS" && cat >>confdefs.h <&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. -if test "${with_default_terminfo_dir+set}" = set; then - withval="$with_default_terminfo_dir" - -else - withval="${TERMINFO:-${datadir}/terminfo}" -fi; if test -n "${datadir}/terminfo" ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$withval" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval withval="$withval" - case ".$withval" in #(vi - .NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:6355: error: expected a pathname, not \"$withval\"" >&5 -echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi -TERMINFO="$withval" - -echo "$as_me:6364: result: $TERMINFO" >&5 -echo "${ECHO_T}$TERMINFO" >&6 -cat >>confdefs.h <&5 -echo $ECHO_N "checking if big-core option selected... $ECHO_C" >&6 - -# Check whether --enable-big-core or --disable-big-core was given. -if test "${enable_big_core+set}" = set; then - enableval="$enable_big_core" - with_big_core=$enableval -else - if test "$cross_compiling" = yes; then - with_big_core=no -else - cat >conftest.$ac_ext <<_ACEOF -#line 6386 "configure" -#include "confdefs.h" - -#include -#include -int main() { - unsigned long n = 6000000L; - char *s = malloc(n); - if (s != 0) - s[0] = s[n-1] = 0; - ${cf_cv_main_return:-return}(s == 0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:6400: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6403: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:6405: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6408: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - with_big_core=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -with_big_core=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi; -echo "$as_me:6420: result: $with_big_core" >&5 -echo "${ECHO_T}$with_big_core" >&6 -test "$with_big_core" = "yes" && cat >>confdefs.h <<\EOF -#define HAVE_BIG_CORE 1 -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:6429: 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. -if test "${enable_big_strings+set}" = set; then - enableval="$enable_big_strings" - with_big_strings=$enableval -else - - case x$AWK in #(vi - x) - eval with_big_strings=no - ;; - *) #(vi - if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < 12000) { xx = xx "x"; }; printf("%s\n", xx); }' \ - | $AWK '{ printf "%d\n", length($0); }' | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ($0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then - eval with_big_strings=yes - else - eval with_big_strings=no - fi - ;; - esac - -fi; -echo "$as_me:6453: result: $with_big_strings" >&5 -echo "${ECHO_T}$with_big_strings" >&6 - -USE_BIG_STRINGS=0 -test "$with_big_strings" = "yes" && USE_BIG_STRINGS=1 - -### use option --enable-termcap to compile in the termcap fallback support -echo "$as_me:6460: 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. -if test "${enable_termcap+set}" = set; then - enableval="$enable_termcap" - with_termcap=$enableval -else - with_termcap=no -fi; -echo "$as_me:6470: result: $with_termcap" >&5 -echo "${ECHO_T}$with_termcap" >&6 - -if test "$with_termcap" != "yes" ; then - if test "$use_database" = no ; then - if test -z "$with_fallback" ; then - { { echo "$as_me:6476: 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 - fi - cat >>confdefs.h <<\EOF -#define PURE_TERMINFO 1 -EOF - -else - -if test "$with_ticlib" != no ; then - { { echo "$as_me:6488: 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 - -cat >>confdefs.h <<\EOF -#define USE_TERMCAP 1 -EOF - -echo "$as_me:6497: 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. -if test "${with_termpath+set}" = set; then - withval="$with_termpath" - -else - withval=${TERMPATH:-/etc/termcap:/usr/share/misc/termcap} -fi; -IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}" -cf_dst_path= -for cf_src_path in $withval -do - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$cf_src_path" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval cf_src_path="$cf_src_path" - case ".$cf_src_path" in #(vi - .NONE/*) - cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - cf_src_path=`echo $cf_src_path | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:6537: 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; }; } - ;; -esac - - test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}:" - cf_dst_path="${cf_dst_path}${cf_src_path}" -done -IFS="$ac_save_ifs" - -eval 'TERMPATH="$cf_dst_path"' - -echo "$as_me:6550: result: $TERMPATH" >&5 -echo "${ECHO_T}$TERMPATH" >&6 -test -n "$TERMPATH" && cat >>confdefs.h <&5 -echo $ECHO_N "checking if fast termcap-loader is needed... $ECHO_C" >&6 - -# Check whether --enable-getcap or --disable-getcap was given. -if test "${enable_getcap+set}" = set; then - enableval="$enable_getcap" - with_getcap=$enableval -else - with_getcap=no -fi; -echo "$as_me:6567: result: $with_getcap" >&5 -echo "${ECHO_T}$with_getcap" >&6 -test "$with_getcap" = "yes" && cat >>confdefs.h <<\EOF -#define USE_GETCAP 1 -EOF - -echo "$as_me:6573: 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. -if test "${enable_getcap_cache+set}" = set; then - enableval="$enable_getcap_cache" - with_getcap_cache=$enableval -else - with_getcap_cache=no -fi; -echo "$as_me:6583: result: $with_getcap_cache" >&5 -echo "${ECHO_T}$with_getcap_cache" >&6 -test "$with_getcap_cache" = "yes" && cat >>confdefs.h <<\EOF -#define USE_GETCAP_CACHE 1 -EOF - -fi - -### Use option --disable-home-terminfo to completely remove ~/.terminfo -echo "$as_me:6592: 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. -if test "${enable_home_terminfo+set}" = set; then - enableval="$enable_home_terminfo" - with_home_terminfo=$enableval -else - with_home_terminfo=yes -fi; -echo "$as_me:6602: result: $with_home_terminfo" >&5 -echo "${ECHO_T}$with_home_terminfo" >&6 -test "$with_home_terminfo" = "yes" && cat >>confdefs.h <<\EOF -#define USE_HOME_TERMINFO 1 -EOF - -echo "$as_me:6608: checking if you want to use restricted environment when running as root" >&5 -echo $ECHO_N "checking if you want to use restricted environment when running as root... $ECHO_C" >&6 - -# Check whether --enable-root-environ or --disable-root-environ was given. -if test "${enable_root_environ+set}" = set; then - enableval="$enable_root_environ" - with_root_environ=$enableval -else - with_root_environ=yes -fi; -echo "$as_me:6618: result: $with_root_environ" >&5 -echo "${ECHO_T}$with_root_environ" >&6 -test "$with_root_environ" = yes && cat >>confdefs.h <<\EOF -#define USE_ROOT_ENVIRON 1 -EOF - -### Use option --enable-symlinks to make tic use symlinks, not hard links -### to reduce storage requirements for the terminfo database. - -for ac_func in \ - remove \ - unlink -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:6632: 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 6638 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* 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 $ac_func (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6669: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6672: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6675: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6678: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:6688: 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 <&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 6711 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* 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 $ac_func (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6742: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6745: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6748: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6751: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:6761: 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 <&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 -else - - cf_cv_link_funcs= - for cf_func in link symlink ; do - if test "$cross_compiling" = yes; then - - eval 'ac_cv_func_'$cf_func'=error' -else - cat >conftest.$ac_ext <<_ACEOF -#line 6785 "configure" -#include "confdefs.h" - -#include -#include -#ifdef HAVE_UNISTD_H -#include -#endif -int main() -{ - int fail = 0; - char *src = "config.log"; - char *dst = "conftest.chk"; - struct stat src_sb; - struct stat dst_sb; - - stat(src, &src_sb); - fail = ($cf_func("config.log", "conftest.chk") < 0) - || (stat(dst, &dst_sb) < 0) - || (dst_sb.st_mtime != src_sb.st_mtime); -#ifdef HAVE_UNLINK - unlink(dst); -#else - remove(dst); -#endif - ${cf_cv_main_return:-return} (fail); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:6815: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6818: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:6820: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6823: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_link_funcs="$cf_cv_link_funcs $cf_func" - eval 'ac_cv_func_'$cf_func'=yes' -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - eval 'ac_cv_func_'$cf_func'=no' -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - done - test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no - -fi -echo "$as_me:6841: result: $cf_cv_link_funcs" >&5 -echo "${ECHO_T}$cf_cv_link_funcs" >&6 - test "$ac_cv_func_link" = yes && cat >>confdefs.h <<\EOF -#define HAVE_LINK 1 -EOF - - test "$ac_cv_func_symlink" = yes && cat >>confdefs.h <<\EOF -#define HAVE_SYMLINK 1 -EOF - -fi - -with_links=no -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 "$ac_cv_func_symlink" = yes ; then - echo "$as_me:6859: 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. -if test "${enable_symlinks+set}" = set; then - enableval="$enable_symlinks" - with_symlinks=$enableval -else - with_symlinks=no -fi; - echo "$as_me:6869: 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:6876: checking if tic should use hard links" >&5 -echo $ECHO_N "checking if tic should use hard links... $ECHO_C" >&6 - if test "$ac_cv_func_link" = yes ; then - with_links=yes - else - with_links=no - fi - echo "$as_me:6883: result: $with_links" >&5 -echo "${ECHO_T}$with_links" >&6 -fi - -test "$with_links" = yes && cat >>confdefs.h <<\EOF -#define USE_LINKS 1 -EOF - -test "$with_symlinks" = yes && cat >>confdefs.h <<\EOF -#define USE_SYMLINKS 1 -EOF - -### use option --enable-broken-linker to force on use of broken-linker support -echo "$as_me:6896: 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. -if test "${enable_broken_linker+set}" = set; then - enableval="$enable_broken_linker" - with_broken_linker=$enableval -else - with_broken_linker=${BROKEN_LINKER:-no} -fi; -echo "$as_me:6906: result: $with_broken_linker" >&5 -echo "${ECHO_T}$with_broken_linker" >&6 - -BROKEN_LINKER=0 -if test "$with_broken_linker" = yes ; then - cat >>confdefs.h <<\EOF -#define BROKEN_LINKER 1 -EOF - - BROKEN_LINKER=1 -elif test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - cat >>confdefs.h <<\EOF -#define BROKEN_LINKER 1 -EOF - - BROKEN_LINKER=1 - test -n "$verbose" && echo " cygwin linker is broken anyway" 1>&6 - -echo "${as_me:-configure}:6926: testing cygwin linker is broken anyway ..." 1>&5 - - ;; - esac -fi - -### use option --enable-bsdpad to have tputs process BSD-style prefix padding -echo "$as_me:6933: 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. -if test "${enable_bsdpad+set}" = set; then - enableval="$enable_bsdpad" - with_bsdpad=$enableval -else - with_bsdpad=no -fi; -echo "$as_me:6943: result: $with_bsdpad" >&5 -echo "${ECHO_T}$with_bsdpad" >&6 -test "$with_bsdpad" = yes && cat >>confdefs.h <<\EOF -#define BSD_TPUTS 1 -EOF - -### use option --enable-widec to turn on use of wide-character support -NCURSES_CH_T=chtype -NCURSES_LIBUTF8=0 - -NEED_WCHAR_H=0 -NCURSES_MBSTATE_T=0 -NCURSES_WCHAR_T=0 -NCURSES_WINT_T=0 - -# Check to define _XOPEN_SOURCE "automatically" - -cf_XOPEN_SOURCE=500 -cf_POSIX_C_SOURCE=199506L -cf_xopen_source= - -case $host_os in #(vi -aix[456]*) #(vi - cf_xopen_source="-D_ALL_SOURCE" - ;; -cygwin) #(vi - cf_XOPEN_SOURCE=600 - ;; -darwin[0-8].*) #(vi - cf_xopen_source="-D_APPLE_C_SOURCE" - ;; -darwin*) #(vi - cf_xopen_source="-D_DARWIN_C_SOURCE" - ;; -freebsd*|dragonfly*) #(vi - # 5.x headers associate - # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L - # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L - cf_POSIX_C_SOURCE=200112L - cf_XOPEN_SOURCE=600 - cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -hpux11*) #(vi - cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" - ;; -hpux*) #(vi - cf_xopen_source="-D_HPUX_SOURCE" - ;; -irix[56].*) #(vi - cf_xopen_source="-D_SGI_SOURCE" - ;; -linux*|gnu*|mint*|k*bsd*-gnu) #(vi - -echo "$as_me:6996: 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 7003 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7018: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7021: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7024: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7027: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_gnu_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - cat >conftest.$ac_ext <<_ACEOF -#line 7036 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7051: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7054: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7057: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7060: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_gnu_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_gnu_source=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS="$cf_save" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:7075: result: $cf_cv_gnu_source" >&5 -echo "${ECHO_T}$cf_cv_gnu_source" >&6 -test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - - ;; -mirbsd*) #(vi - # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks - ;; -netbsd*) #(vi - # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw - ;; -openbsd*) #(vi - # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw - ;; -osf[45]*) #(vi - cf_xopen_source="-D_OSF_SOURCE" - ;; -nto-qnx*) #(vi - cf_xopen_source="-D_QNX_SOURCE" - ;; -sco*) #(vi - # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer - ;; -solaris2.1[0-9]) #(vi - cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -solaris2.[1-9]) #(vi - cf_xopen_source="-D__EXTENSIONS__" - ;; -*) - echo "$as_me:7105: 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 7112 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7127: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7130: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7133: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7136: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xopen_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - cat >conftest.$ac_ext <<_ACEOF -#line 7145 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7160: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7163: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7166: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7169: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xopen_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_xopen_source=$cf_XOPEN_SOURCE -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS="$cf_save" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:7184: result: $cf_cv_xopen_source" >&5 -echo "${ECHO_T}$cf_cv_xopen_source" >&6 - if test "$cf_cv_xopen_source" != no ; then - -CFLAGS=`echo "$CFLAGS" | \ - sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` - -CPPFLAGS=`echo "$CPPFLAGS" | \ - sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` - - cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_temp_xopen_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - fi - -cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE - -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" - -cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ - sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` - -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:7291: 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}:7297: testing if the symbol is already defined go no further ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 7300 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _POSIX_C_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7315: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7318: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7321: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7324: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_posix_c_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_want_posix_source=no - case .$cf_POSIX_C_SOURCE in #(vi - .[12]??*) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - ;; - .2) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - cf_want_posix_source=yes - ;; - .*) - cf_want_posix_source=yes - ;; - esac - if test "$cf_want_posix_source" = yes ; then - cat >conftest.$ac_ext <<_ACEOF -#line 7345 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _POSIX_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7360: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7363: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7366: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7369: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" -fi -rm -f conftest.$ac_objext conftest.$ac_ext - fi - -echo "${as_me:-configure}:7380: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 - - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" - -echo "${as_me:-configure}:7385: testing if the second compile does not leave our definition intact error ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 7388 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _POSIX_C_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7403: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7406: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7409: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7412: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_posix_c_source=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cf_save_CFLAGS" - CPPFLAGS="$cf_save_CPPFLAGS" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:7428: 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 - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_cv_posix_c_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -fi - - ;; -esac - -if test -n "$cf_xopen_source" ; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_xopen_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -fi - -# Work around breakage on OS X - -echo "$as_me:7602: 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 7609 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ -int x = SIGWINCH - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7624: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7627: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7630: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7633: \$? = $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 7640 "configure" -#include "confdefs.h" - -#undef _XOPEN_SOURCE -#undef _POSIX_SOURCE -#undef _POSIX_C_SOURCE -#include -#include - -int -main () -{ -int x = SIGWINCH - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7658: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7661: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7664: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7667: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_define_sigwinch=maybe -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_define_sigwinch=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:7681: 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:7685: 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 -else - -cf_cv_fixup_sigwinch=unknown -cf_sigwinch=32 -while test $cf_sigwinch != 1 -do - cat >conftest.$ac_ext <<_ACEOF -#line 7696 "configure" -#include "confdefs.h" - -#undef _XOPEN_SOURCE -#undef _POSIX_SOURCE -#undef _POSIX_C_SOURCE -#include -#include - -int -main () -{ - -#if SIGWINCH != $cf_sigwinch -make an error -#endif -int x = SIGWINCH - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7718: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7721: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7724: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7727: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_fixup_sigwinch=$cf_sigwinch - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -cf_sigwinch=`expr $cf_sigwinch - 1` -done - -fi -echo "$as_me:7741: result: $cf_cv_fixup_sigwinch" >&5 -echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6 - - if test "$cf_cv_fixup_sigwinch" != unknown ; then - CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" - fi -fi - -# Checks for CODESET support. - - echo "$as_me:7751: 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 7757 "configure" -#include "confdefs.h" -#include -int -main () -{ -char* cs = nl_langinfo(CODESET); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7769: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7772: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7775: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7778: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - am_cv_langinfo_codeset=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -am_cv_langinfo_codeset=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -echo "$as_me:7789: result: $am_cv_langinfo_codeset" >&5 -echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 - if test $am_cv_langinfo_codeset = yes; then - -cat >>confdefs.h <<\EOF -#define HAVE_LANGINFO_CODESET 1 -EOF - - fi - -# use these variables to work around a defect in gcc's fixincludes. -NCURSES_OK_WCHAR_T= -NCURSES_OK_WINT_T= - -echo "$as_me:7803: 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. -if test "${enable_widec+set}" = set; then - enableval="$enable_widec" - with_widec=$enableval -else - with_widec=no -fi; -echo "$as_me:7813: result: $with_widec" >&5 -echo "${ECHO_T}$with_widec" >&6 -if test "$with_widec" = yes ; then - LIB_SUFFIX="w${LIB_SUFFIX}" - cat >>confdefs.h <<\EOF -#define USE_WIDEC_SUPPORT 1 -EOF - - case "$CFLAGS $CPPFLAGS" in #(vi - *-D_XOPEN_SOURCE=500) #(vi - ;; - *) - -echo "$as_me:7826: 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 7829 "configure" -#include "confdefs.h" -#include - -int -main () -{ - -#ifndef _XOPEN_SOURCE_EXTENDED -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7845: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7848: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7851: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7854: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:7863: 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:7869: 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 7872 "configure" -#include "confdefs.h" -#include - -int -main () -{ - -#if _XOPEN_SOURCE_EXTENDED- < 0 -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7888: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7891: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7894: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7897: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - echo "$as_me:7906: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - if test "$cf_result" = no ; then - # perhaps we can override it - try... - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=" - fi -fi - - ;; - esac - - # with_overwrite=no - NCURSES_CH_T=cchar_t - -for ac_func in putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:7923: 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 7929 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* 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 $ac_func (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7960: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7963: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7966: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7969: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:7979: 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 <&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 -else - - cf_save_LIBS="$LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 7999 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8012: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8015: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8018: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8021: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_utf8_lib=yes -else - echo "$as_me: failed program was:" >&5 -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. -cf_cv_header_path_utf8= -cf_cv_library_path_utf8= - -echo "${as_me:-configure}:8033: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 - -cf_save_LIBS="$LIBS" - -cat >conftest.$ac_ext <<_ACEOF -#line 8038 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8051: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8054: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8057: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8060: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_find_linkage_utf8=yes - cf_cv_header_path_utf8=/usr/include - cf_cv_library_path_utf8=/usr/lib - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -LIBS="-lutf8 $cf_save_LIBS" - -cat >conftest.$ac_ext <<_ACEOF -#line 8074 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8087: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8090: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8093: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8096: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_find_linkage_utf8=yes - cf_cv_header_path_utf8=/usr/include - cf_cv_library_path_utf8=/usr/lib - cf_cv_library_file_utf8="-lutf8" - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_find_linkage_utf8=no - LIBS="$cf_save_LIBS" - - test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 - -echo "${as_me:-configure}:8113: testing find linkage for utf8 library ..." 1>&5 - -echo "${as_me:-configure}:8115: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 - - cf_save_CPPFLAGS="$CPPFLAGS" - cf_test_CPPFLAGS="$CPPFLAGS" - -cf_search= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - -test "$cf_header_path" != "NONE" && \ -test -d "$cf_header_path" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" - test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" - test -d $cf_header_path/include/utf8 && cf_search="$cf_search $cf_header_path/include/utf8" - test -d $cf_header_path/include/utf8/include && cf_search="$cf_search $cf_header_path/include/utf8/include" - test -d $cf_header_path/utf8/include && cf_search="$cf_search $cf_header_path/utf8/include" - test -d $cf_header_path/utf8/include/utf8 && cf_search="$cf_search $cf_header_path/utf8/include/utf8" -} - - cf_header_path_list="$cf_header_path_list $cf_search" - ;; - esac - done -fi - -# add the variations for the package we are looking for - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr" - test -d /usr/include && cf_search="$cf_search /usr/include" - test -d /usr/include/utf8 && cf_search="$cf_search /usr/include/utf8" - test -d /usr/include/utf8/include && cf_search="$cf_search /usr/include/utf8/include" - test -d /usr/utf8/include && cf_search="$cf_search /usr/utf8/include" - test -d /usr/utf8/include/utf8 && cf_search="$cf_search /usr/utf8/include/utf8" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $prefix" - test -d $prefix/include && cf_search="$cf_search $prefix/include" - test -d $prefix/include/utf8 && cf_search="$cf_search $prefix/include/utf8" - test -d $prefix/include/utf8/include && cf_search="$cf_search $prefix/include/utf8/include" - test -d $prefix/utf8/include && cf_search="$cf_search $prefix/utf8/include" - test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr/local" - test -d /usr/local/include && cf_search="$cf_search /usr/local/include" - test -d /usr/local/include/utf8 && cf_search="$cf_search /usr/local/include/utf8" - test -d /usr/local/include/utf8/include && cf_search="$cf_search /usr/local/include/utf8/include" - test -d /usr/local/utf8/include && cf_search="$cf_search /usr/local/utf8/include" - test -d /usr/local/utf8/include/utf8 && cf_search="$cf_search /usr/local/utf8/include/utf8" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /opt" - test -d /opt/include && cf_search="$cf_search /opt/include" - test -d /opt/include/utf8 && cf_search="$cf_search /opt/include/utf8" - test -d /opt/include/utf8/include && cf_search="$cf_search /opt/include/utf8/include" - test -d /opt/utf8/include && cf_search="$cf_search /opt/utf8/include" - test -d /opt/utf8/include/utf8 && cf_search="$cf_search /opt/utf8/include/utf8" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under $HOME" - test -d $HOME/include && cf_search="$cf_search $HOME/include" - test -d $HOME/include/utf8 && cf_search="$cf_search $HOME/include/utf8" - test -d $HOME/include/utf8/include && cf_search="$cf_search $HOME/include/utf8/include" - test -d $HOME/utf8/include && cf_search="$cf_search $HOME/utf8/include" - test -d $HOME/utf8/include/utf8 && cf_search="$cf_search $HOME/utf8/include/utf8" -} - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && cf_search="$cf_search $includedir" - test -d $includedir/utf8 && cf_search="$cf_search $includedir/utf8" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && cf_search="$cf_search $oldincludedir" - test -d $oldincludedir/utf8 && cf_search="$cf_search $oldincludedir/utf8" -} - -cf_search="$cf_search $cf_header_path_list" - - for cf_cv_header_path_utf8 in $cf_search - do - 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}:8228: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 - - CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_utf8" - cat >conftest.$ac_ext <<_ACEOF -#line 8232 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8245: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8248: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8251: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8254: \$? = $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}:8259: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 - - cf_cv_find_linkage_utf8=maybe - cf_test_CPPFLAGS="$CPPFLAGS" - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - CPPFLAGS="$cf_save_CPPFLAGS" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - fi - done - - if test "$cf_cv_find_linkage_utf8" = maybe ; then - -echo "${as_me:-configure}:8277: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 - - cf_save_LIBS="$LIBS" - cf_save_LDFLAGS="$LDFLAGS" - - if test "$cf_cv_find_linkage_utf8" != yes ; then - -cf_search= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - -test "$cf_library_path" != "NONE" && \ -test -d "$cf_library_path" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" - test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" - test -d $cf_library_path/lib/utf8 && cf_search="$cf_search $cf_library_path/lib/utf8" - test -d $cf_library_path/lib/utf8/lib && cf_search="$cf_search $cf_library_path/lib/utf8/lib" - test -d $cf_library_path/utf8/lib && cf_search="$cf_search $cf_library_path/utf8/lib" - test -d $cf_library_path/utf8/lib/utf8 && cf_search="$cf_search $cf_library_path/utf8/lib/utf8" -} - - cf_library_path_list="$cf_library_path_list $cf_search" - ;; - esac - done -fi - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr" - test -d /usr/lib && cf_search="$cf_search /usr/lib" - test -d /usr/lib/utf8 && cf_search="$cf_search /usr/lib/utf8" - test -d /usr/lib/utf8/lib && cf_search="$cf_search /usr/lib/utf8/lib" - test -d /usr/utf8/lib && cf_search="$cf_search /usr/utf8/lib" - test -d /usr/utf8/lib/utf8 && cf_search="$cf_search /usr/utf8/lib/utf8" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $prefix" - test -d $prefix/lib && cf_search="$cf_search $prefix/lib" - test -d $prefix/lib/utf8 && cf_search="$cf_search $prefix/lib/utf8" - test -d $prefix/lib/utf8/lib && cf_search="$cf_search $prefix/lib/utf8/lib" - test -d $prefix/utf8/lib && cf_search="$cf_search $prefix/utf8/lib" - test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr/local" - test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib" - test -d /usr/local/lib/utf8 && cf_search="$cf_search /usr/local/lib/utf8" - test -d /usr/local/lib/utf8/lib && cf_search="$cf_search /usr/local/lib/utf8/lib" - test -d /usr/local/utf8/lib && cf_search="$cf_search /usr/local/utf8/lib" - test -d /usr/local/utf8/lib/utf8 && cf_search="$cf_search /usr/local/utf8/lib/utf8" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /opt" - test -d /opt/lib && cf_search="$cf_search /opt/lib" - test -d /opt/lib/utf8 && cf_search="$cf_search /opt/lib/utf8" - test -d /opt/lib/utf8/lib && cf_search="$cf_search /opt/lib/utf8/lib" - test -d /opt/utf8/lib && cf_search="$cf_search /opt/utf8/lib" - test -d /opt/utf8/lib/utf8 && cf_search="$cf_search /opt/utf8/lib/utf8" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under $HOME" - test -d $HOME/lib && cf_search="$cf_search $HOME/lib" - test -d $HOME/lib/utf8 && cf_search="$cf_search $HOME/lib/utf8" - test -d $HOME/lib/utf8/lib && cf_search="$cf_search $HOME/lib/utf8/lib" - test -d $HOME/utf8/lib && cf_search="$cf_search $HOME/utf8/lib" - test -d $HOME/utf8/lib/utf8 && cf_search="$cf_search $HOME/utf8/lib/utf8" -} - -cf_search="$cf_library_path_list $cf_search" - - for cf_cv_library_path_utf8 in $cf_search - do - 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}:8374: 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 8380 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8393: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8396: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8399: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8402: \$? = $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}:8407: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 - - cf_cv_find_linkage_utf8=yes - cf_cv_library_file_utf8="-lutf8" - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - LDFLAGS="$cf_save_LDFLAGS" - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - fi - done - CPPFLAGS="$cf_save_CPPFLAGS" - LDFLAGS="$cf_save_LDFLAGS" - fi - - else - cf_cv_find_linkage_utf8=no - fi - -fi -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_LIBS" - -if test "$cf_cv_find_linkage_utf8" = yes ; then -cf_cv_utf8_lib=add-on -else -cf_cv_utf8_lib=no -fi - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:8449: 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 -# ncurses/ncursesw: -if test "$cf_cv_utf8_lib" = "add-on" ; then - cat >>confdefs.h <<\EOF -#define HAVE_LIBUTF8_H 1 -EOF - -if test -n "$cf_cv_header_path_utf8" ; then - for cf_add_incdir in $cf_cv_header_path_utf8 - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 8483 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8495: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8498: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8501: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8504: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:8521: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -if test -n "$cf_cv_library_path_utf8" ; then - for cf_add_libdir in $cf_cv_library_path_utf8 - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:8555: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - LIBS="$cf_cv_library_file_utf8 $LIBS" -fi - - if test "$cf_cv_utf8_lib" != no ; then - NCURSES_LIBUTF8=1 - fi - fi - -# This is needed on Tru64 5.0 to declare mbstate_t -echo "$as_me:8572: 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 8579 "configure" -#include "confdefs.h" - -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -mbstate_t state - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8597: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8600: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8603: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8606: \$? = $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 8613 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -mbstate_t value - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8632: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8635: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8638: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8641: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_mbstate_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_mbstate_t=unknown -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:8653: result: $cf_cv_mbstate_t" >&5 -echo "${ECHO_T}$cf_cv_mbstate_t" >&6 - -if test "$cf_cv_mbstate_t" = yes ; then - cat >>confdefs.h <<\EOF -#define NEED_WCHAR_H 1 -EOF - - NEED_WCHAR_H=1 -fi - -# if we do not find mbstate_t in either place, use substitution to provide a fallback. -if test "$cf_cv_mbstate_t" = unknown ; then - NCURSES_MBSTATE_T=1 -fi - -# This is needed on Tru64 5.0 to declare wchar_t -echo "$as_me:8670: 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 8677 "configure" -#include "confdefs.h" - -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wchar_t state - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8695: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8698: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8701: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8704: \$? = $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 8711 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wchar_t value - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8730: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8733: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8736: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8739: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_wchar_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_wchar_t=unknown -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:8751: result: $cf_cv_wchar_t" >&5 -echo "${ECHO_T}$cf_cv_wchar_t" >&6 - -if test "$cf_cv_wchar_t" = yes ; then - cat >>confdefs.h <<\EOF -#define NEED_WCHAR_H 1 -EOF - - NEED_WCHAR_H=1 -fi - -# if we do not find wchar_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wchar_t" = unknown ; then - NCURSES_WCHAR_T=1 -fi - -# if we find wchar_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wchar_t" != unknown ; then - NCURSES_OK_WCHAR_T=1 -fi - -# This is needed on Tru64 5.0 to declare wint_t -echo "$as_me:8773: 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 8780 "configure" -#include "confdefs.h" - -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wint_t state - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8798: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8801: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8804: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8807: \$? = $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 8814 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wint_t value - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8833: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8836: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8839: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8842: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_wint_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_wint_t=unknown -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:8854: result: $cf_cv_wint_t" >&5 -echo "${ECHO_T}$cf_cv_wint_t" >&6 - -if test "$cf_cv_wint_t" = yes ; then - cat >>confdefs.h <<\EOF -#define NEED_WCHAR_H 1 -EOF - - NEED_WCHAR_H=1 -fi - -# if we do not find wint_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wint_t" = unknown ; then - NCURSES_WINT_T=1 -fi - -# if we find wint_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wint_t" != unknown ; then - NCURSES_OK_WINT_T=1 -fi - - if test "$NCURSES_MBSTATE_T" != 0; then - cat >>confdefs.h <<\EOF -#define NEED_MBSTATE_T_DEF 1 -EOF - - fi -fi - -### use option --disable-lp64 to allow long chtype -case $cf_cv_abi_version in -[345]*) - default_with_lp64=no - ;; -*) - default_with_lp64=yes - ;; -esac - -echo "$as_me:8893: 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. -if test "${enable_lp64+set}" = set; then - enableval="$enable_lp64" - with_lp64=$enableval -else - with_lp64=$default_with_lp64 -fi; -echo "$as_me:8903: result: $with_lp64" >&5 -echo "${ECHO_T}$with_lp64" >&6 - -if test "$with_lp64" = yes ; then - cf_cv_enable_lp64=1 -else - cf_cv_enable_lp64=0 -fi - -# Check whether --enable-largefile or --disable-largefile was given. -if test "${enable_largefile+set}" = set; then - enableval="$enable_largefile" - -fi; -if test "$enable_largefile" != no; then - - echo "$as_me:8919: 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 -else - ac_cv_sys_largefile_CC=no - if test "$GCC" != yes; then - ac_save_CC=$CC - while :; do - # 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 8931 "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF - rm -f conftest.$ac_objext -if { (eval echo "$as_me:8951: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8954: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8957: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8960: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext - CC="$CC -n32" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:8970: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8973: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8976: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8979: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_largefile_CC=' -n32'; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext - break - done - CC=$ac_save_CC - rm -f conftest.$ac_ext - fi -fi -echo "$as_me:8993: 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:8999: 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 -else - while :; do - ac_cv_sys_file_offset_bits=no - cat >conftest.$ac_ext <<_ACEOF -#line 9007 "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9027: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9030: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9033: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9036: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 9045 "configure" -#include "confdefs.h" -#define _FILE_OFFSET_BITS 64 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9066: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9069: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9072: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9075: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_file_offset_bits=64; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:9086: 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 - -cat >>confdefs.h <&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 -else - while :; do - ac_cv_sys_large_files=no - cat >conftest.$ac_ext <<_ACEOF -#line 9104 "configure" -#include "confdefs.h" -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9124: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9127: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9130: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9133: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 9142 "configure" -#include "confdefs.h" -#define _LARGE_FILES 1 -#include - /* Check that off_t can represent 2**63 - 1 correctly. - We can't simply define LARGE_OFF_T to be 9223372036854775807, - since some C++ compilers masquerading as C compilers - incorrectly reject 9223372036854775807. */ -#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) - int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 - && LARGE_OFF_T % 2147483647 == 1) - ? 1 : -1]; -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9163: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9166: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9169: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9172: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_large_files=1; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:9183: 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 - -cat >>confdefs.h <&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 -else - while :; do - ac_cv_sys_largefile_source=no - cat >conftest.$ac_ext <<_ACEOF -#line 9204 "configure" -#include "confdefs.h" -#include -int -main () -{ -return !fseeko; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9216: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9219: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9222: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9225: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 9234 "configure" -#include "confdefs.h" -#define _LARGEFILE_SOURCE 1 -#include -int -main () -{ -return !fseeko; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9247: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9250: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9253: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9256: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sys_largefile_source=1; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - break -done -fi -echo "$as_me:9267: 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 - -cat >>confdefs.h <&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 9287 "configure" -#include "confdefs.h" -#include -int -main () -{ -return fseeko && fseeko (stdin, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9299: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9302: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9305: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9308: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_fseeko=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_fseeko=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:9318: result: $ac_cv_func_fseeko" >&5 -echo "${ECHO_T}$ac_cv_func_fseeko" >&6 -if test $ac_cv_func_fseeko = yes; then - -cat >>confdefs.h <<\EOF -#define HAVE_FSEEKO 1 -EOF - -fi - - # Normally we would collect these definitions in the config.h, - # but (like _XOPEN_SOURCE), some environments rely on having these - # defined before any of the system headers are included. Another - # case comes up with C++, e.g., on AIX the compiler compiles the - # header files by themselves before looking at the body files it is - # told to compile. For ncurses, those header files do not include - # the config.h - test "$ac_cv_sys_large_files" != no && CPPFLAGS="$CPPFLAGS -D_LARGE_FILES " - test "$ac_cv_sys_largefile_source" != no && CPPFLAGS="$CPPFLAGS -D_LARGEFILE_SOURCE " - test "$ac_cv_sys_file_offset_bits" != no && CPPFLAGS="$CPPFLAGS -D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits " - - echo "$as_me:9339: 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 9346 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ - - /* if transitional largefile support is setup, this is true */ - extern struct dirent64 * readdir(DIR *); - struct dirent64 *x = readdir((DIR *)0); - struct dirent *y = readdir((DIR *)0); - int z = x - y; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:9367: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:9370: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:9373: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9376: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_struct_dirent64=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_struct_dirent64=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:9387: result: $cf_cv_struct_dirent64" >&5 -echo "${ECHO_T}$cf_cv_struct_dirent64" >&6 - test "$cf_cv_struct_dirent64" = yes && cat >>confdefs.h <<\EOF -#define HAVE_STRUCT_DIRENT64 1 -EOF - - fi - -### use option --disable-tparm-varargs to make tparm() conform to X/Open -echo "$as_me:9396: 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. -if test "${enable_tparm_varargs+set}" = set; then - enableval="$enable_tparm_varargs" - with_tparm_varargs=$enableval -else - with_tparm_varargs=yes -fi; -echo "$as_me:9406: result: $with_tparm_varargs" >&5 -echo "${ECHO_T}$with_tparm_varargs" >&6 -NCURSES_TPARM_VARARGS=0 -test "$with_tparm_varargs" = yes && 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:9413: 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. -if test "${enable_tic_depends+set}" = set; then - enableval="$enable_tic_depends" - with_tic_depends=$enableval -else - with_tic_depends=yes -fi; -echo "$as_me:9423: result: $with_tic_depends" >&5 -echo "${ECHO_T}$with_tic_depends" >&6 -else - with_tic_depends=no -fi - -### use option --with-bool to override bool's type -echo "$as_me:9430: 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. -if test "${with_bool+set}" = set; then - withval="$with_bool" - NCURSES_BOOL="$withval" -else - NCURSES_BOOL=auto -fi; -echo "$as_me:9440: result: $NCURSES_BOOL" >&5 -echo "${ECHO_T}$NCURSES_BOOL" >&6 - -echo "$as_me:9443: 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. -if test "${with_caps+set}" = set; then - withval="$with_caps" - TERMINFO_CAPS=Caps.$withval -else - TERMINFO_CAPS=Caps -fi; -test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps -echo "$as_me:9454: result: $TERMINFO_CAPS" >&5 -echo "${ECHO_T}$TERMINFO_CAPS" >&6 - -### use option --with-chtype to override chtype's type -echo "$as_me:9458: 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. -if test "${with_chtype+set}" = set; then - withval="$with_chtype" - NCURSES_CHTYPE="$withval" -else - NCURSES_CHTYPE=auto -fi; -echo "$as_me:9468: result: $NCURSES_CHTYPE" >&5 -echo "${ECHO_T}$NCURSES_CHTYPE" >&6 - -### use option --with-ospeed to override ospeed's type -echo "$as_me:9472: 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. -if test "${with_ospeed+set}" = set; then - withval="$with_ospeed" - NCURSES_OSPEED="$withval" -else - NCURSES_OSPEED=short -fi; -echo "$as_me:9482: result: $NCURSES_OSPEED" >&5 -echo "${ECHO_T}$NCURSES_OSPEED" >&6 - -### use option --with-mmask-t to override mmask_t's type -echo "$as_me:9486: 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. -if test "${with_mmask_t+set}" = set; then - withval="$with_mmask_t" - NCURSES_MMASK_T="$withval" -else - NCURSES_MMASK_T=auto -fi; -echo "$as_me:9496: result: $NCURSES_MMASK_T" >&5 -echo "${ECHO_T}$NCURSES_MMASK_T" >&6 - -### use option --with-ccharw-max to override CCHARW_MAX size -echo "$as_me:9500: 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. -if test "${with_ccharw_max+set}" = set; then - withval="$with_ccharw_max" - NCURSES_CCHARW_MAX="$withval" -else - NCURSES_CCHARW_MAX=5 -fi; -echo "$as_me:9510: result: $NCURSES_CCHARW_MAX" >&5 -echo "${ECHO_T}$NCURSES_CCHARW_MAX" >&6 - -### Enable compiling-in rcs id's -echo "$as_me:9514: 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. -if test "${with_rcs_ids+set}" = set; then - withval="$with_rcs_ids" - with_rcs_ids=$withval -else - with_rcs_ids=no -fi; -echo "$as_me:9524: result: $with_rcs_ids" >&5 -echo "${ECHO_T}$with_rcs_ids" >&6 -test "$with_rcs_ids" = yes && cat >>confdefs.h <<\EOF -#define USE_RCS_IDS 1 -EOF - -############################################################################### - -echo "$as_me:9532: 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's 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 - *.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 #(vi - gzip|compress|BSDI|normal|formatted|catonly) - ;; - *) - cf_unknown="$cf_unknown $cf_option" - ;; - esac - done - ;; -esac - -echo "$as_me:9621: result: $MANPAGE_FORMAT" >&5 -echo "${ECHO_T}$MANPAGE_FORMAT" >&6 -if test -n "$cf_unknown" ; then - { echo "$as_me:9624: WARNING: Unexpected manpage-format $cf_unknown" >&5 -echo "$as_me: WARNING: Unexpected manpage-format $cf_unknown" >&2;} -fi - -echo "$as_me:9628: 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 #(vi -.no) #(vi - ;; -.|.yes) - # Debian 'man' program? - if test -f /etc/debian_version ; then - MANPAGE_RENAMES=`cd $srcdir && pwd`/man/man_db.renames - else - MANPAGE_RENAMES=no - fi - ;; -esac - -if test "$MANPAGE_RENAMES" != no ; then - if test -f $srcdir/man/$MANPAGE_RENAMES ; then - MANPAGE_RENAMES=`cd $srcdir/man && pwd`/$MANPAGE_RENAMES - elif test ! -f $MANPAGE_RENAMES ; then - { { echo "$as_me:9656: error: not a filename: $MANPAGE_RENAMES" >&5 -echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;} - { (exit 1); exit 1; }; } - fi - - test ! -d man && mkdir man - - # Construct a sed-script to perform renaming within man-pages - if test -n "$MANPAGE_RENAMES" ; then - test ! -d man && mkdir man - sh $srcdir/man/make_sed.sh $MANPAGE_RENAMES >./edit_man.sed - fi -fi - -echo "$as_me:9670: result: $MANPAGE_RENAMES" >&5 -echo "${ECHO_T}$MANPAGE_RENAMES" >&6 - -echo "$as_me:9673: 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:9684: result: $MANPAGE_ALIASES" >&5 -echo "${ECHO_T}$MANPAGE_ALIASES" >&6 - -case "x$LN_S" in #(vi -xln*) #(vi - cf_use_symlinks=yes - ;; -*) - cf_use_symlinks=no - ;; -esac - -MANPAGE_SYMLINKS=no -if test "$MANPAGE_ALIASES" = yes ; then -echo "$as_me:9698: 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:9711: WARNING: cannot make symlinks" >&5 -echo "$as_me: WARNING: cannot make symlinks" >&2;} - MANPAGE_SYMLINKS=no -fi -fi - -echo "$as_me:9717: result: $MANPAGE_SYMLINKS" >&5 -echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6 -fi - -echo "$as_me:9721: 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:9732: 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 - - case "$MANPAGE_FORMAT" in # (vi - *catonly*) # (vi - cf_format=yes - cf_inboth=no - ;; - *formatted*) # (vi - cf_format=yes - cf_inboth=yes - ;; - *) - cf_format=no - cf_inboth=no - ;; - esac - -test ! -d man && mkdir man - -cf_so_strip= -cf_compress= -case "$MANPAGE_FORMAT" in #(vi -*compress*) #(vi - cf_so_strip="Z" - cf_compress=compress - ;; -*gzip*) - cf_so_strip="gz" - cf_compress=gzip - ;; -esac - -cf_edit_man=./edit_man.sh -cf_man_alias=`pwd`/man_alias.sed - -cat >$cf_edit_man <>$cf_man_alias <<-CF_EOF2 - s,@DATADIR@,\$datadir,g - s,@TERMINFO@,\$TERMINFO,g - s,@NCURSES_MAJOR@,\$NCURSES_MAJOR,g - s,@NCURSES_MINOR@,\$NCURSES_MINOR,g - s,@NCURSES_PATCH@,\$NCURSES_PATCH,g - s,@NCURSES_OSPEED@,\$NCURSES_OSPEED,g -CF_EOF - - for cf_name in captoinfo clear infocmp infotocap 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_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP -CF_EOF -else -cat >>$cf_edit_man <\$TMP -CF_EOF -fi - -cat >>$cf_edit_man <\$TMP.out - mv \$TMP.out \$TMP -fi -CF_EOF - -if test $with_curses_h != yes ; then -cat >>$cf_edit_man <\$TMP.out - mv \$TMP.out \$TMP -CF_EOF -fi - -cat >>$cf_edit_man <\$TMP.out - mv \$TMP.out \$TMP - fi -CF_EOF - -if test -n "$cf_compress" ; then -cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP -CF_EOF -if test -n "$cf_compress" ; then -cat >>$cf_edit_man <>$cf_edit_man <&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. -if test "${enable_ext_funcs+set}" = set; then - enableval="$enable_ext_funcs" - with_ext_funcs=$enableval -else - with_ext_funcs=yes -fi; -echo "$as_me:10064: result: $with_ext_funcs" >&5 -echo "${ECHO_T}$with_ext_funcs" >&6 -if test "$with_ext_funcs" = yes ; then - NCURSES_EXT_FUNCS=1 - cat >>confdefs.h <<\EOF -#define HAVE_CURSES_VERSION 1 -EOF - - cat >>confdefs.h <<\EOF -#define HAVE_HAS_KEY 1 -EOF - - cat >>confdefs.h <<\EOF -#define HAVE_RESIZETERM 1 -EOF - - cat >>confdefs.h <<\EOF -#define HAVE_RESIZE_TERM 1 -EOF - - cat >>confdefs.h <<\EOF -#define HAVE_TERM_ENTRY_H 1 -EOF - - cat >>confdefs.h <<\EOF -#define HAVE_USE_DEFAULT_COLORS 1 -EOF - - cat >>confdefs.h <<\EOF -#define HAVE_WRESIZE 1 -EOF - - cat >>confdefs.h <<\EOF -#define NCURSES_EXT_FUNCS 1 -EOF - - GENERATED_EXT_FUNCS=generated -else - NCURSES_EXT_FUNCS=0 - GENERATED_EXT_FUNCS= -fi - -echo "$as_me:10106: checking if you want to build with experimental SCREEN extensions" >&5 -echo $ECHO_N "checking if you want to build with experimental SCREEN extensions... $ECHO_C" >&6 - -# Check whether --enable-sp-funcs or --disable-sp-funcs was given. -if test "${enable_sp_funcs+set}" = set; then - enableval="$enable_sp_funcs" - with_sp_funcs=$enableval -else - with_sp_funcs=no -fi; -echo "$as_me:10116: result: $with_sp_funcs" >&5 -echo "${ECHO_T}$with_sp_funcs" >&6 -if test "$with_sp_funcs" = yes ; then - NCURSES_SP_FUNCS=1 - cat >>confdefs.h <<\EOF -#define NCURSES_SP_FUNCS 1 -EOF - - GENERATED_SP_FUNCS=generated -else - NCURSES_SP_FUNCS=0 - GENERATED_SP_FUNCS= -fi - -echo "$as_me:10130: checking if you want to build with experimental terminal-driver" >&5 -echo $ECHO_N "checking if you want to build with experimental terminal-driver... $ECHO_C" >&6 - -# Check whether --enable-term-driver or --disable-term-driver was given. -if test "${enable_term_driver+set}" = set; then - enableval="$enable_term_driver" - with_term_driver=$enableval -else - with_term_driver=no -fi; -echo "$as_me:10140: result: $with_term_driver" >&5 -echo "${ECHO_T}$with_term_driver" >&6 -if test "$with_term_driver" = yes ; then - cat >>confdefs.h <<\EOF -#define USE_TERM_DRIVER 1 -EOF - - if test "$with_sp_funcs" != yes ; then - { { echo "$as_me:10148: 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:10155: 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. -if test "${enable_const+set}" = set; then - enableval="$enable_const" - with_ext_const=$enableval -else - with_ext_const=no -fi; -echo "$as_me:10165: result: $with_ext_const" >&5 -echo "${ECHO_T}$with_ext_const" >&6 -NCURSES_CONST='/*nothing*/' -if test "$with_ext_const" = yes ; then - NCURSES_CONST=const -fi - -### use option --enable-ext-colors to turn on use of colors beyond 16. -echo "$as_me:10173: 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. -if test "${enable_ext_colors+set}" = set; then - enableval="$enable_ext_colors" - with_ext_colors=$enableval -else - with_ext_colors=no -fi; -echo "$as_me:10183: result: $with_ext_colors" >&5 -echo "${ECHO_T}$with_ext_colors" >&6 -NCURSES_EXT_COLORS=0 -if test "$with_ext_colors" = yes ; then - if test "$with_widec" != yes ; then - { { echo "$as_me:10188: error: This option applies only to wide-character library" >&5 -echo "$as_me: error: This option applies only to wide-character library" >&2;} - { (exit 1); exit 1; }; } - else - # cannot be ABI 5 since it changes sizeof(cchar_t) - -if test "${with_abi_version+set}" != set; then - case $cf_cv_rel_version in - 5.*) - cf_cv_rel_version=6.0 - cf_cv_abi_version=6 - { echo "$as_me:10199: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5 -echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;} - ;; - esac -fi - - fi - NCURSES_EXT_COLORS=1 - cat >>confdefs.h <<\EOF -#define NCURSES_EXT_COLORS 1 -EOF - -fi - -### use option --enable-ext-mouse to modify coding to support 5-button mice -echo "$as_me:10214: 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. -if test "${enable_ext_mouse+set}" = set; then - enableval="$enable_ext_mouse" - with_ext_mouse=$enableval -else - with_ext_mouse=no -fi; -echo "$as_me:10224: result: $with_ext_mouse" >&5 -echo "${ECHO_T}$with_ext_mouse" >&6 -NCURSES_MOUSE_VERSION=1 -if test "$with_ext_mouse" = yes ; then - NCURSES_MOUSE_VERSION=2 - -if test "${with_abi_version+set}" != set; then - case $cf_cv_rel_version in - 5.*) - cf_cv_rel_version=6.0 - cf_cv_abi_version=6 - { echo "$as_me:10235: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5 -echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;} - ;; - esac -fi - -fi - -echo "$as_me:10243: 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. -if test "${enable_no_padding+set}" = set; then - enableval="$enable_no_padding" - with_no_padding=$enableval -else - with_no_padding=$with_ext_funcs -fi; -echo "$as_me:10253: result: $with_no_padding" >&5 -echo "${ECHO_T}$with_no_padding" >&6 -test "$with_no_padding" = yes && cat >>confdefs.h <<\EOF -#define NCURSES_NO_PADDING 1 -EOF - -echo "$as_me:10259: 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 10265 "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:10273: \"$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:10279: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -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 10301 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -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 10319 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line 10340 "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - $ac_main_return(2); - $ac_main_return (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:10366: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10369: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10371: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10374: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:10387: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - -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:10403: 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 10409 "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10415: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10418: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10421: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10424: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10434: 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 <&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 10450 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((signed char *) 0) - return 0; -if (sizeof (signed char)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10465: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10468: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10471: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10474: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signed_char=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signed_char=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:10484: result: $ac_cv_type_signed_char" >&5 -echo "${ECHO_T}$ac_cv_type_signed_char" >&6 - -echo "$as_me:10487: 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 -else - if test "$ac_cv_type_signed_char" = yes; then - if test "$cross_compiling" = yes; then - # Depending upon the size, compute the lo and hi bounds. -cat >conftest.$ac_ext <<_ACEOF -#line 10496 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)] - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10508: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10511: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10514: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10517: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=0 ac_mid=0 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 10522 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10534: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10537: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10540: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10543: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1`; ac_mid=`expr 2 '*' $ac_mid + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=-1 ac_mid=-1 - while :; do - cat >conftest.$ac_ext <<_ACEOF -#line 10559 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)] - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10571: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10574: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10577: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10580: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_lo=$ac_mid; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_hi=`expr $ac_mid - 1`; ac_mid=`expr 2 '*' $ac_mid` -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done -fi -rm -f conftest.$ac_objext conftest.$ac_ext -# Binary search between lo and hi bounds. -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 10596 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:10608: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:10611: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:10614: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10617: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_hi=$ac_mid -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_lo=`expr $ac_mid + 1` -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -ac_cv_sizeof_signed_char=$ac_lo -else - if test "$cross_compiling" = yes; then - { { echo "$as_me:10630: 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 10635 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -FILE *f = fopen ("conftest.val", "w"); -if (!f) - $ac_main_return (1); -fprintf (f, "%d", (sizeof (signed char))); -fclose (f); - ; - return 0; -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:10651: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10654: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:10656: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10659: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_sizeof_signed_char=`cat conftest.val` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -rm -f conftest.val -else - ac_cv_sizeof_signed_char=0 -fi -fi -echo "$as_me:10675: result: $ac_cv_sizeof_signed_char" >&5 -echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6 -cat >>confdefs.h <&5 -echo $ECHO_N "checking if you want to use signed Boolean array in term.h... $ECHO_C" >&6 - -# Check whether --enable-signed-char or --disable-signed-char was given. -if test "${enable_signed_char+set}" = set; then - enableval="$enable_signed_char" - with_signed_char=$enableval -else - with_signed_char=no -fi; -echo "$as_me:10696: result: $with_signed_char" >&5 -echo "${ECHO_T}$with_signed_char" >&6 -test "$with_signed_char" != yes && NCURSES_SBOOL="char" - -### use option --enable-sigwinch to turn on use of SIGWINCH logic -echo "$as_me:10701: 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. -if test "${enable_sigwinch+set}" = set; then - enableval="$enable_sigwinch" - with_sigwinch=$enableval -else - with_sigwinch=$with_ext_funcs -fi; -echo "$as_me:10711: result: $with_sigwinch" >&5 -echo "${ECHO_T}$with_sigwinch" >&6 -test "$with_sigwinch" = yes && cat >>confdefs.h <<\EOF -#define USE_SIGWINCH 1 -EOF - -### use option --enable-tcap-names to allow user to define new capabilities -echo "$as_me:10718: 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. -if test "${enable_tcap_names+set}" = set; then - enableval="$enable_tcap_names" - with_tcap_names=$enableval -else - with_tcap_names=$with_ext_funcs -fi; -echo "$as_me:10728: result: $with_tcap_names" >&5 -echo "${ECHO_T}$with_tcap_names" >&6 -NCURSES_XNAMES=0 -test "$with_tcap_names" = yes && NCURSES_XNAMES=1 - -############################################################################### -# These options are relatively safe to experiment with. - -echo "$as_me:10736: 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. -if test "${with_develop+set}" = set; then - withval="$with_develop" - with_develop=$withval -else - with_develop=no -fi; -echo "$as_me:10746: result: $with_develop" >&5 -echo "${ECHO_T}$with_develop" >&6 - -### use option --enable-hard-tabs to turn on use of hard-tabs optimize -echo "$as_me:10750: 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. -if test "${enable_hard_tabs+set}" = set; then - enableval="$enable_hard_tabs" - -else - enable_hard_tabs=$with_develop -fi; -echo "$as_me:10760: result: $enable_hard_tabs" >&5 -echo "${ECHO_T}$enable_hard_tabs" >&6 -test "$enable_hard_tabs" = yes && cat >>confdefs.h <<\EOF -#define USE_HARD_TABS 1 -EOF - -### use option --enable-xmc-glitch to turn on use of magic-cookie optimize -echo "$as_me:10767: 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. -if test "${enable_xmc_glitch+set}" = set; then - enableval="$enable_xmc_glitch" - -else - enable_xmc_glitch=$with_develop -fi; -echo "$as_me:10777: result: $enable_xmc_glitch" >&5 -echo "${ECHO_T}$enable_xmc_glitch" >&6 -test "$enable_xmc_glitch" = yes && cat >>confdefs.h <<\EOF -#define USE_XMC_SUPPORT 1 -EOF - -############################################################################### -# These are just experimental, probably should not be in a package: - -echo "$as_me:10786: 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. -if test "${enable_assumed_color+set}" = set; then - enableval="$enable_assumed_color" - with_assumed_color=$enableval -else - with_assumed_color=yes -fi; -echo "$as_me:10796: result: $with_assumed_color" >&5 -echo "${ECHO_T}$with_assumed_color" >&6 -test "$with_assumed_color" = yes && cat >>confdefs.h <<\EOF -#define USE_ASSUMED_COLOR 1 -EOF - -### use option --enable-hashmap to turn on use of hashmap scrolling logic -echo "$as_me:10803: 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. -if test "${enable_hashmap+set}" = set; then - enableval="$enable_hashmap" - with_hashmap=$enableval -else - with_hashmap=yes -fi; -echo "$as_me:10813: result: $with_hashmap" >&5 -echo "${ECHO_T}$with_hashmap" >&6 -test "$with_hashmap" = yes && cat >>confdefs.h <<\EOF -#define USE_HASHMAP 1 -EOF - -### use option --enable-colorfgbg to turn on use of $COLORFGBG environment -echo "$as_me:10820: 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. -if test "${enable_colorfgbg+set}" = set; then - enableval="$enable_colorfgbg" - with_colorfgbg=$enableval -else - with_colorfgbg=no -fi; -echo "$as_me:10830: result: $with_colorfgbg" >&5 -echo "${ECHO_T}$with_colorfgbg" >&6 -test "$with_colorfgbg" = yes && cat >>confdefs.h <<\EOF -#define USE_COLORFGBG 1 -EOF - -### use option --enable-interop to turn on use of bindings used for interop -echo "$as_me:10837: 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. -if test "${enable_interop+set}" = set; then - enableval="$enable_interop" - with_exp_interop=$enableval -else - with_exp_interop=no -fi; -echo "$as_me:10847: result: $with_exp_interop" >&5 -echo "${ECHO_T}$with_exp_interop" >&6 - -NCURSES_INTEROP_FUNCS=0 -test "$with_exp_interop" = yes && NCURSES_INTEROP_FUNCS=1 - -# This is still experimental (20080329), but should ultimately be moved to -# the script-block --with-normal, etc. - -echo "$as_me:10856: 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. -if test "${with_pthread+set}" = set; then - withval="$with_pthread" - with_pthread=$withval -else - with_pthread=no -fi; -echo "$as_me:10866: result: $with_pthread" >&5 -echo "${ECHO_T}$with_pthread" >&6 - -if test "$with_pthread" != no ; then - echo "$as_me:10870: 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 10876 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:10880: \"$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:10886: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_pthread_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_pthread_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:10905: 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 - - cat >>confdefs.h <<\EOF -#define HAVE_PTHREADS_H 1 -EOF - - echo "$as_me:10913: checking if we can link with the pthread library" >&5 -echo $ECHO_N "checking if we can link with the pthread library... $ECHO_C" >&6 - cf_save_LIBS="$LIBS" - LIBS="-lpthread $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 10918 "configure" -#include "confdefs.h" - -#include - -int -main () -{ - - int rc = pthread_create(0,0,0,0); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10934: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10937: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10940: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10943: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - with_pthread=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -with_pthread=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$cf_save_LIBS" - echo "$as_me:10953: result: $with_pthread" >&5 -echo "${ECHO_T}$with_pthread" >&6 - - if test "$with_pthread" = yes ; then - LIBS="-lpthread $LIBS" - cat >>confdefs.h <<\EOF -#define HAVE_LIBPTHREADS 1 -EOF - - else - { { echo "$as_me:10963: error: Cannot link with pthread library" >&5 -echo "$as_me: error: Cannot link with pthread library" >&2;} - { (exit 1); exit 1; }; } - fi - -fi - -fi - -if test "x$with_pthread" != xno; then - echo "$as_me:10973: 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 10979 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char pthread_kill (); below. */ -#include -/* 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 pthread_kill (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_pthread_kill) || defined (__stub___pthread_kill) -choke me -#else -f = pthread_kill; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11010: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11013: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11016: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11019: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_pthread_kill=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_pthread_kill=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:11029: 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:11033: 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. -if test "${enable_pthreads_eintr+set}" = set; then - enableval="$enable_pthreads_eintr" - use_pthreads_eintr=$enableval -else - use_pthreads_eintr=no -fi; - echo "$as_me:11043: result: $use_pthreads_eintr" >&5 -echo "${ECHO_T}$use_pthreads_eintr" >&6 - if test $use_pthreads_eintr = yes ; then - cat >>confdefs.h <<\EOF -#define USE_PTHREADS_EINTR 1 -EOF - - fi -fi - - echo "$as_me:11053: 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. -if test "${enable_weak_symbols+set}" = set; then - enableval="$enable_weak_symbols" - use_weak_symbols=$enableval -else - use_weak_symbols=no -fi; - echo "$as_me:11063: result: $use_weak_symbols" >&5 -echo "${ECHO_T}$use_weak_symbols" >&6 - if test "$use_weak_symbols" = yes ; then - -echo "$as_me:11067: 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 11074 "configure" -#include "confdefs.h" - -#include -int -main () -{ - -#if defined(__GNUC__) -# if defined __USE_ISOC99 -# define _cat_pragma(exp) _Pragma(#exp) -# define _weak_pragma(exp) _cat_pragma(weak name) -# else -# define _weak_pragma(exp) -# endif -# define _declare(name) __extension__ extern __typeof__(name) name -# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) -#endif - -weak_symbol(fopen); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:11100: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11103: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11106: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11109: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_weak_symbols=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_weak_symbols=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:11120: result: $cf_cv_weak_symbols" >&5 -echo "${ECHO_T}$cf_cv_weak_symbols" >&6 - - else - cf_cv_weak_symbols=no - fi - - if test $cf_cv_weak_symbols = yes ; then - cat >>confdefs.h <<\EOF -#define USE_WEAK_SYMBOLS 1 -EOF - - fi -fi - -PTHREAD= -if test "$with_pthread" = "yes" ; then - cat >>confdefs.h <<\EOF -#define USE_PTHREADS 1 -EOF - - enable_reentrant=yes - if test $cf_cv_weak_symbols = yes ; then - PTHREAD=-lpthread - fi -fi - -# Reentrant code has to be opaque; there's little advantage to making ncurses -# 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:11151: checking if you want experimental reentrant code" >&5 -echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6 - -# Check whether --enable-reentrant or --disable-reentrant was given. -if test "${enable_reentrant+set}" = set; then - enableval="$enable_reentrant" - with_reentrant=$enableval -else - with_reentrant=no -fi; -echo "$as_me:11161: result: $with_reentrant" >&5 -echo "${ECHO_T}$with_reentrant" >&6 -if test "$with_reentrant" = yes ; then - cf_cv_enable_reentrant=1 - cf_cv_enable_opaque="NCURSES_INTERNALS" - NCURSES_OPAQUE=1 - NCURSES_SIZE_T=int - if test $cf_cv_weak_symbols = yes ; then - -# remove pthread library from $LIBS -LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'` - - TEST_LIBS="-lpthread $TEST_LIBS" - TEST_LIBS2="-lpthread $TEST_LIBS2" - else - LIB_SUFFIX="t${LIB_SUFFIX}" - fi - cat >>confdefs.h <<\EOF -#define USE_REENTRANT 1 -EOF - -if test "${with_abi_version+set}" != set; then - case $cf_cv_rel_version in - 5.*) - cf_cv_rel_version=6.0 - cf_cv_abi_version=6 - { echo "$as_me:11187: WARNING: Overriding ABI version to $cf_cv_abi_version" >&5 -echo "$as_me: WARNING: Overriding ABI version to $cf_cv_abi_version" >&2;} - ;; - esac -fi - -else - cf_cv_enable_reentrant=0 - cf_cv_enable_opaque="NCURSES_OPAQUE" - NCURSES_OPAQUE=0 - NCURSES_SIZE_T=short -fi - -### Allow using a different wrap-prefix -if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then - echo "$as_me:11202: 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. -if test "${with_wrap_prefix+set}" = set; then - withval="$with_wrap_prefix" - NCURSES_WRAP_PREFIX=$withval -else - NCURSES_WRAP_PREFIX=_nc_ -fi; - echo "$as_me:11212: result: $NCURSES_WRAP_PREFIX" >&5 -echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6 -else - NCURSES_WRAP_PREFIX=_nc_ -fi - -cat >>confdefs.h <&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. -if test "${enable_safe_sprintf+set}" = set; then - enableval="$enable_safe_sprintf" - with_safe_sprintf=$enableval -else - with_safe_sprintf=no -fi; -echo "$as_me:11232: result: $with_safe_sprintf" >&5 -echo "${ECHO_T}$with_safe_sprintf" >&6 -test "$with_safe_sprintf" = yes && cat >>confdefs.h <<\EOF -#define USE_SAFE_SPRINTF 1 -EOF - -### 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:11241: 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. -if test "${enable_scroll_hints+set}" = set; then - enableval="$enable_scroll_hints" - with_scroll_hints=$enableval -else - with_scroll_hints=yes -fi; -echo "$as_me:11251: result: $with_scroll_hints" >&5 -echo "${ECHO_T}$with_scroll_hints" >&6 -test "$with_scroll_hints" = yes && cat >>confdefs.h <<\EOF -#define USE_SCROLL_HINTS 1 -EOF - -fi - -echo "$as_me:11259: checking if you want experimental wgetch-events code" >&5 -echo $ECHO_N "checking if you want experimental wgetch-events code... $ECHO_C" >&6 - -# Check whether --enable-wgetch-events or --disable-wgetch-events was given. -if test "${enable_wgetch_events+set}" = set; then - enableval="$enable_wgetch_events" - with_wgetch_events=$enableval -else - with_wgetch_events=no -fi; -echo "$as_me:11269: result: $with_wgetch_events" >&5 -echo "${ECHO_T}$with_wgetch_events" >&6 -test "$with_wgetch_events" = yes && cat >>confdefs.h <<\EOF -#define NCURSES_WGETCH_EVENTS 1 -EOF - -############################################################################### - -### use option --disable-echo to suppress full display compiling commands -echo "$as_me:11278: checking if you want to display full commands during build" >&5 -echo $ECHO_N "checking if you want to display full commands during build... $ECHO_C" >&6 - -# Check whether --enable-echo or --disable-echo was given. -if test "${enable_echo+set}" = set; then - enableval="$enable_echo" - with_echo=$enableval -else - with_echo=yes -fi; -if test "$with_echo" = yes; then - ECHO_LINK= -else - ECHO_LINK='@ echo linking $@ ... ;' - test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent" - test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent" -fi -echo "$as_me:11295: result: $with_echo" >&5 -echo "${ECHO_T}$with_echo" >&6 - -### use option --enable-warnings to turn on all gcc warnings -echo "$as_me:11299: checking if you want to see compiler warnings" >&5 -echo $ECHO_N "checking if you want to see compiler warnings... $ECHO_C" >&6 - -# Check whether --enable-warnings or --disable-warnings was given. -if test "${enable_warnings+set}" = set; then - enableval="$enable_warnings" - with_warnings=$enableval -fi; -echo "$as_me:11307: result: $with_warnings" >&5 -echo "${ECHO_T}$with_warnings" >&6 - -if test "x$with_warnings" = "xyes"; then - - ADAFLAGS="$ADAFLAGS -gnatg" - -INTEL_COMPILER=no - -if test "$GCC" = yes ; then - case $host_os in - linux*|gnu*) - echo "$as_me:11319: 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 11324 "configure" -#include "confdefs.h" - -int -main () -{ - -#ifdef __INTEL_COMPILER -#else -make an error -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:11341: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11344: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11347: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11350: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - INTEL_COMPILER=yes -cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cf_save_CFLAGS" - echo "$as_me:11361: result: $INTEL_COMPILER" >&5 -echo "${ECHO_T}$INTEL_COMPILER" >&6 - ;; - esac -fi - -cat > conftest.$ac_ext <&5 -echo "$as_me: checking for $CC warning options..." >&6;} - cf_save_CFLAGS="$CFLAGS" - EXTRA_CFLAGS="-Wall" - for cf_opt in \ - wd1419 \ - wd1683 \ - wd1684 \ - wd193 \ - wd593 \ - wd279 \ - wd810 \ - wd869 \ - wd981 - do - CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:11401: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11404: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:11406: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" - fi - done - CFLAGS="$cf_save_CFLAGS" - -elif test "$GCC" = yes -then - { echo "$as_me:11415: checking for $CC warning options..." >&5 -echo "$as_me: checking for $CC warning options..." >&6;} - cf_save_CFLAGS="$CFLAGS" - EXTRA_CFLAGS= - cf_warn_CONST="" - test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" - for cf_opt in W Wall \ - Wbad-function-cast \ - Wcast-align \ - Wcast-qual \ - Winline \ - Wmissing-declarations \ - Wmissing-prototypes \ - Wnested-externs \ - Wpointer-arith \ - Wshadow \ - Wstrict-prototypes \ - Wundef $cf_warn_CONST Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum - do - CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:11435: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11438: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:11440: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - case $cf_opt in #(vi - Wcast-qual) #(vi - CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES" - ;; - Winline) #(vi - case $GCC_VERSION in - [34].*) - test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 - -echo "${as_me:-configure}:11451: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 - - continue;; - esac - ;; - esac - EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" - fi - done - CFLAGS="$cf_save_CFLAGS" -fi -rm -rf conftest* - - if test "$cf_with_cxx" = yes ; then - -INTEL_CPLUSPLUS=no - -if test "$GCC" = yes ; then - case $host_os in - linux*|gnu*) - echo "$as_me:11471: 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 11476 "configure" -#include "confdefs.h" - -int -main () -{ - -#ifdef __INTEL_COMPILER -#else -make an error -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:11493: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11496: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11499: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11502: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - INTEL_CPLUSPLUS=yes -cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CXXFLAGS="$cf_save_CFLAGS" - echo "$as_me:11513: result: $INTEL_CPLUSPLUS" >&5 -echo "${ECHO_T}$INTEL_CPLUSPLUS" >&6 - ;; - esac -fi - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 - -cat > conftest.$ac_ext <&5 -echo "$as_me: checking for $CC warning options..." >&6;} - cf_save_CXXFLAGS="$CXXFLAGS" - EXTRA_CXXFLAGS="-Wall" - for cf_opt in \ - wd1419 \ - wd1682 \ - wd1683 \ - wd1684 \ - wd193 \ - wd279 \ - wd593 \ - wd810 \ - wd869 \ - wd981 - do - CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt" - if { (eval echo "$as_me:11562: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11565: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:11567: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt" - fi - done - CXXFLAGS="$cf_save_CXXFLAGS" - -elif test "$GXX" = yes -then - { echo "$as_me:11576: checking for $CXX warning options..." >&5 -echo "$as_me: checking for $CXX warning options..." >&6;} - cf_save_CXXFLAGS="$CXXFLAGS" - EXTRA_CXXFLAGS="-W -Wall" - cf_gxx_extra_warnings="" - test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings" - case "$GCC_VERSION" in - [1-2].*) - ;; - *) - cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++" - ;; - esac - for cf_opt in \ - Wabi \ - fabi-version=0 \ - Woverloaded-virtual \ - Wsign-promo \ - Wsynth \ - Wold-style-cast \ - Wcast-align \ - Wcast-qual \ - Wmissing-prototypes \ - Wpointer-arith \ - Wshadow \ - Wstrict-prototypes \ - Wundef $cf_gxx_extra_warnings Wno-unused - do - CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt" - if { (eval echo "$as_me:11605: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11608: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:11610: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt" - else - test -n "$verbose" && echo "$as_me:11614: result: ... no -$cf_opt" >&5 -echo "${ECHO_T}... no -$cf_opt" >&6 - fi - done - CXXFLAGS="$cf_save_CXXFLAGS" -fi - -rm -rf conftest* -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 - - fi -fi - -if test "$GCC" = yes -then -cat > conftest.i <&5 -echo "$as_me: checking for $CC __attribute__ directives..." >&6;} -cat > conftest.$ac_ext <&5 - - case $cf_attribute in #(vi - printf) #(vi - cf_printf_attribute=yes - cat >conftest.h <conftest.h <conftest.h <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11705: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:11707: result: ... $cf_attribute" >&5 -echo "${ECHO_T}... $cf_attribute" >&6 - cat conftest.h >>confdefs.h - case $cf_attribute in #(vi - printf) #(vi - if test "$cf_printf_attribute" = no ; then - cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h -fi -rm -rf conftest* -fi - -### use option --enable-assertions to turn on generation of assertion code -echo "$as_me:11743: 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. -if test "${enable_assertions+set}" = set; then - enableval="$enable_assertions" - with_assertions=$enableval -else - with_assertions=no -fi; -echo "$as_me:11753: result: $with_assertions" >&5 -echo "${ECHO_T}$with_assertions" >&6 -if test -n "$GCC" -then - if test "$with_assertions" = no - then - cat >>confdefs.h <<\EOF -#define NDEBUG 1 -EOF - - CPPFLAGS="$CPPFLAGS -DNDEBUG" - else - - ADAFLAGS="$ADAFLAGS -gnata" - - fi -fi - -### use option --disable-leaks to suppress "permanent" leaks, for testing - -echo "$as_me:11773: 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. -if test "${with_dmalloc+set}" = set; then - withval="$with_dmalloc" - cat >>confdefs.h <<\EOF -#define USE_DMALLOC 1 -EOF - - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_dmalloc=yes -else - with_dmalloc= -fi; -echo "$as_me:11789: result: ${with_dmalloc:-no}" >&5 -echo "${ECHO_T}${with_dmalloc:-no}" >&6 - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in -g -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - ;; - esac - ;; -esac - -if test "$with_dmalloc" = yes ; then - echo "$as_me:11883: 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 11889 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:11893: \"$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:11899: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_dmalloc_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_dmalloc_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:11918: 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:11922: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldmalloc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 11930 "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 dmalloc_debug (); -int -main () -{ -dmalloc_debug (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11949: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11952: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11955: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11958: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dmalloc_dmalloc_debug=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dmalloc_dmalloc_debug=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:11969: 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 <&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. -if test "${with_dbmalloc+set}" = set; then - withval="$with_dbmalloc" - cat >>confdefs.h <<\EOF -#define USE_DBMALLOC 1 -EOF - - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_dbmalloc=yes -else - with_dbmalloc= -fi; -echo "$as_me:12000: result: ${with_dbmalloc:-no}" >&5 -echo "${ECHO_T}${with_dbmalloc:-no}" >&6 - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in -g -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - ;; - esac - ;; -esac - -if test "$with_dbmalloc" = yes ; then - echo "$as_me:12094: 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 12100 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:12104: \"$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:12110: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_dbmalloc_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_dbmalloc_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:12129: 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:12133: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldbmalloc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12141 "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 debug_malloc (); -int -main () -{ -debug_malloc (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12160: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12163: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12166: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12169: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dbmalloc_debug_malloc=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dbmalloc_debug_malloc=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12180: 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 <&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. -if test "${with_valgrind+set}" = set; then - withval="$with_valgrind" - cat >>confdefs.h <<\EOF -#define USE_VALGRIND 1 -EOF - - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_valgrind=yes -else - with_valgrind= -fi; -echo "$as_me:12211: result: ${with_valgrind:-no}" >&5 -echo "${ECHO_T}${with_valgrind:-no}" >&6 - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in -g -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - ;; - esac - ;; -esac - -echo "$as_me:12304: 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. -if test "${enable_leaks+set}" = set; then - enableval="$enable_leaks" - if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi -else - : ${with_no_leaks:=no} -fi; -echo "$as_me:12314: result: $with_no_leaks" >&5 -echo "${ECHO_T}$with_no_leaks" >&6 - -if test "$with_no_leaks" = yes ; then - cat >>confdefs.h <<\EOF -#define NO_LEAKS 1 -EOF - - cat >>confdefs.h <<\EOF -#define YY_NO_LEAKS 1 -EOF - -fi - -cat >>confdefs.h <<\EOF -#define HAVE_NC_ALLOC_H 1 -EOF - -### use option --enable-expanded to generate certain macros as functions - -# Check whether --enable-expanded or --disable-expanded was given. -if test "${enable_expanded+set}" = set; then - enableval="$enable_expanded" - test "$enableval" = yes && cat >>confdefs.h <<\EOF -#define NCURSES_EXPANDED 1 -EOF - -fi; - -### use option --disable-macros to suppress macros in favor of functions - -# Check whether --enable-macros or --disable-macros was given. -if test "${enable_macros+set}" = set; then - enableval="$enable_macros" - test "$enableval" = no && cat >>confdefs.h <<\EOF -#define NCURSES_NOMACROS 1 -EOF - -fi; - -# Normally we only add trace() to the debug-library. Allow this to be -# extended to all models of the ncurses library: -cf_all_traces=no -case "$CFLAGS $CPPFLAGS" in -*-DTRACE*) - cf_all_traces=yes - ;; -esac - -echo "$as_me:12363: 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. -if test "${with_trace+set}" = set; then - withval="$with_trace" - cf_with_trace=$withval -else - cf_with_trace=$cf_all_traces -fi; -echo "$as_me:12373: result: $cf_with_trace" >&5 -echo "${ECHO_T}$cf_with_trace" >&6 - -if test "$cf_with_trace" = yes ; 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 #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -else - LIB_TRACING=DEBUG - ADA_TRACE=FALSE -fi - -### Checks for libraries. -case $cf_cv_system_name in #(vi -*mingw32*) #(vi - ;; -*) -echo "$as_me:12468: 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 12474 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gettimeofday (); below. */ -#include -/* 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 gettimeofday (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_gettimeofday) || defined (__stub___gettimeofday) -choke me -#else -f = gettimeofday; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12505: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12508: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12511: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12514: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gettimeofday=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_gettimeofday=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:12524: result: $ac_cv_func_gettimeofday" >&5 -echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 -if test $ac_cv_func_gettimeofday = yes; then - cat >>confdefs.h <<\EOF -#define HAVE_GETTIMEOFDAY 1 -EOF - -else - -echo "$as_me:12533: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12541 "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 gettimeofday (); -int -main () -{ -gettimeofday (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12560: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12563: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12566: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12569: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_bsd_gettimeofday=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_bsd_gettimeofday=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12580: 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 - cat >>confdefs.h <<\EOF -#define HAVE_GETTIMEOFDAY 1 -EOF - - LIBS="-lbsd $LIBS" -fi - -fi - ;; -esac - -echo "$as_me:12594: 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 12601 "configure" -#include "confdefs.h" - - #include - #include - -int -main () -{ -double x = rand(); printf("result = %g\n", sin(x)) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12616: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12619: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12622: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12625: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_need_libm=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_need_libm=yes -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:12635: result: $cf_cv_need_libm" >&5 -echo "${ECHO_T}$cf_cv_need_libm" >&6 -if test "$cf_cv_need_libm" = yes -then -MATH_LIB=-lm -fi - -### Checks for header files. -echo "$as_me:12643: 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 12649 "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:12657: \"$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:12663: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -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 12685 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -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 12703 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line 12724 "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - $ac_main_return(2); - $ac_main_return (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:12750: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12753: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:12755: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12758: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:12771: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -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:12784: 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 12790 "configure" -#include "confdefs.h" -#include -#include <$ac_hdr> - -int -main () -{ -if ((DIR *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:12805: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:12808: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12811: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12814: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:12824: 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 <&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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldir $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12845 "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 opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12864: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12867: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12870: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12873: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dir_opendir=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dir_opendir=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12884: 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:12891: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lx $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12899 "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 opendir (); -int -main () -{ -opendir (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12918: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12921: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12924: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12927: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_x_opendir=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_x_opendir=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12938: 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" -fi - -fi - -echo "$as_me:12946: 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 12952 "configure" -#include "confdefs.h" -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:12968: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:12971: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12974: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12977: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_time=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:12987: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF - -fi - -cf_regex_func=no - -cf_regex_libs="regex re" -case $host_os in #(vi -mingw*) - cf_regex_libs="regex.dll $cf_regex_libs" - ;; -esac - -echo "$as_me:13006: 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 13012 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char regcomp (); below. */ -#include -/* 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 regcomp (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_regcomp) || defined (__stub___regcomp) -choke me -#else -f = regcomp; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13043: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13046: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13049: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13052: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_regcomp=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_regcomp=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:13062: 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 -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:13071: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-l$cf_regex_lib $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 13079 "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 regcomp (); -int -main () -{ -regcomp (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13098: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13101: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13104: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13107: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Lib=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Lib=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:13118: 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 - - LIBS="-l$cf_regex_lib $LIBS" - cf_regex_func=regcomp - break -fi - - done - -fi - -if test "$cf_regex_func" = no ; then - echo "$as_me:13132: 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 13138 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char compile (); below. */ -#include -/* 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 compile (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_compile) || defined (__stub___compile) -choke me -#else -f = compile; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13169: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13172: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13175: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13178: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_compile=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_compile=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:13188: 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:13194: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgen $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 13202 "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 compile (); -int -main () -{ -compile (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13221: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13224: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13227: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13230: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gen_compile=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gen_compile=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:13241: 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 - - LIBS="-lgen $LIBS" - cf_regex_func=compile -fi - -fi - -fi - -if test "$cf_regex_func" = no ; then - { echo "$as_me:13254: WARNING: cannot find regular expression library" >&5 -echo "$as_me: WARNING: cannot find regular expression library" >&2;} -fi - -echo "$as_me:13258: 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 -else - -cf_cv_regex_hdrs=no -case $cf_regex_func in #(vi -compile) #(vi - for cf_regex_hdr in regexp.h regexpr.h - do - cat >conftest.$ac_ext <<_ACEOF -#line 13270 "configure" -#include "confdefs.h" -#include <$cf_regex_hdr> -int -main () -{ - - char *p = compile("", "", "", 0); - int x = step("", ""); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13285: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13288: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13291: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13294: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_regex_hdrs=$cf_regex_hdr - break - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done - ;; -*) - for cf_regex_hdr in regex.h - do - cat >conftest.$ac_ext <<_ACEOF -#line 13311 "configure" -#include "confdefs.h" -#include -#include <$cf_regex_hdr> -int -main () -{ - - regex_t *p; - int x = regcomp(p, "", 0); - int y = regexec(p, "", 0, 0, 0); - regfree(p); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13329: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13332: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13335: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13338: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_regex_hdrs=$cf_regex_hdr - break - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done - ;; -esac - -fi -echo "$as_me:13354: result: $cf_cv_regex_hdrs" >&5 -echo "${ECHO_T}$cf_cv_regex_hdrs" >&6 - -case $cf_cv_regex_hdrs in #(vi - no) { echo "$as_me:13358: WARNING: no regular expression header found" >&5 -echo "$as_me: WARNING: no regular expression header found" >&2;} ;; #(vi - regex.h) cat >>confdefs.h <<\EOF -#define HAVE_REGEX_H_FUNCS 1 -EOF - ;; #(vi - regexp.h) cat >>confdefs.h <<\EOF -#define HAVE_REGEXP_H_FUNCS 1 -EOF - ;; #(vi - regexpr.h) cat >>confdefs.h <<\EOF -#define HAVE_REGEXPR_H_FUNCS 1 -EOF - ;; -esac - -for ac_header in \ -fcntl.h \ -getopt.h \ -limits.h \ -locale.h \ -math.h \ -poll.h \ -sys/bsdtypes.h \ -sys/ioctl.h \ -sys/param.h \ -sys/poll.h \ -sys/select.h \ -sys/time.h \ -sys/times.h \ -ttyent.h \ -unistd.h \ -wctype.h \ - -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:13394: 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 13400 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:13404: \"$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:13410: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:13429: 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 < to declare fd_set -if test "$ISC" = yes ; then - -echo "$as_me:13443: checking for main in -lcposix" >&5 -echo $ECHO_N "checking for main in -lcposix... $ECHO_C" >&6 -if test "${ac_cv_lib_cposix_main+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcposix $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 13451 "configure" -#include "confdefs.h" - -int -main () -{ -main (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13463: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13466: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13469: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13472: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_cposix_main=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_cposix_main=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:13483: result: $ac_cv_lib_cposix_main" >&5 -echo "${ECHO_T}$ac_cv_lib_cposix_main" >&6 -if test $ac_cv_lib_cposix_main = yes; then - cat >>confdefs.h <&5 -echo $ECHO_N "checking for bzero in -linet... $ECHO_C" >&6 -if test "${ac_cv_lib_inet_bzero+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-linet $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 13502 "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 bzero (); -int -main () -{ -bzero (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13521: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13524: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13527: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13530: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_inet_bzero=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_inet_bzero=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:13541: result: $ac_cv_lib_inet_bzero" >&5 -echo "${ECHO_T}$ac_cv_lib_inet_bzero" >&6 -if test $ac_cv_lib_inet_bzero = yes; then - LIBS="-linet $LIBS" -fi -fi - -echo "$as_me:13548: 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 13555 "configure" -#include "confdefs.h" - -#include -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13575: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13578: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13581: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13584: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_sys_time_select=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_sys_time_select=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi - -echo "$as_me:13596: 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 -#define HAVE_SYS_TIME_SELECT 1 -EOF - -### checks for compiler characteristics -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:13610: 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 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line 13618 "configure" -#include "confdefs.h" -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:13667: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13670: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13673: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13676: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:13693: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:13696: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -echo "$as_me:13701: 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 13707 "configure" -#include "confdefs.h" - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - 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}; - /* 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 - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13765: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13768: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13771: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13774: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_const=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:13784: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\EOF -#define const -EOF - -fi - -echo "$as_me:13794: 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 -else - ac_cv_c_inline=no -for ac_kw in inline __inline__ __inline; do - cat >conftest.$ac_ext <<_ACEOF -#line 13802 "configure" -#include "confdefs.h" -#ifndef __cplusplus -static $ac_kw int static_foo () {return 0; } -$ac_kw int foo () {return 0; } -#endif - -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13811: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13814: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13817: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13820: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_inline=$ac_kw; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:13831: result: $ac_cv_c_inline" >&5 -echo "${ECHO_T}$ac_cv_c_inline" >&6 -case $ac_cv_c_inline in - inline | yes) ;; - no) -cat >>confdefs.h <<\EOF -#define inline -EOF - ;; - *) cat >>confdefs.h <&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 -else - - cf_save_CFLAGS=$CFLAGS - CFLAGS="$CFLAGS --param max-inline-insns-single=1200" - cat >conftest.$ac_ext <<_ACEOF -#line 13863 "configure" -#include "confdefs.h" -inline int foo(void) { return 1; } -int -main () -{ -${cf_cv_main_return:-return} foo() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13875: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13878: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13881: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13884: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_gcc_inline=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_gcc_inline=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CFLAGS=$cf_save_CFLAGS - -fi -echo "$as_me:13896: result: $cf_cv_gcc_inline" >&5 -echo "${ECHO_T}$cf_cv_gcc_inline" >&6 - if test "$cf_cv_gcc_inline" = yes ; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in --param max-inline-insns-single=1200 -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - fi - fi -fi - -echo "$as_me:13982: 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 -else - - for cf_type in \ - "volatile sig_atomic_t" \ - "sig_atomic_t" \ - "int" - do - cat >conftest.$ac_ext <<_ACEOF -#line 13994 "configure" -#include "confdefs.h" - -#include -#include -#include - -extern $cf_type x; -$cf_type x; -static void handler(int sig) -{ - x = 5; -} -int -main () -{ -signal(SIGINT, handler); - x = 1 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14017: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14020: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14023: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14026: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_sig_atomic_t=$cf_type -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_sig_atomic_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - test "$cf_cv_sig_atomic_t" != no && break - done - -fi - -echo "$as_me:14040: 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 <&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 -else - - if test "$cross_compiling" = yes; then - cf_cv_typeof_chtype=long -else - cat >conftest.$ac_ext <<_ACEOF -#line 14058 "configure" -#include "confdefs.h" - -#define WANT_BITS 31 -#include -int main() -{ - FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { - char *result = "long"; - if (sizeof(unsigned long) > sizeof(unsigned int)) { - int n; - unsigned int x, y; - for (n = 0; n < WANT_BITS; n++) { - x = (1 << n); - y = (x >> n); - if (y != 1 || x == 0) { - x = 0; - break; - } - } - /* - * If x is nonzero, an int is big enough for the bits - * that we want. - */ - result = (x != 0) ? "int" : "long"; - } - fputs(result, fp); - fclose(fp); - } - ${cf_cv_main_return:-return}(0); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:14093: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14096: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14098: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14101: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_typeof_chtype=`cat cf_test.out` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_typeof_chtype=long -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - rm -f cf_test.out - -fi - -echo "$as_me:14116: result: $cf_cv_typeof_chtype" >&5 -echo "${ECHO_T}$cf_cv_typeof_chtype" >&6 - -cat >>confdefs.h <&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 14135 "configure" -#include "confdefs.h" - -int -main () -{ -long x = 1L + 1UL + 1U + 1 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14147: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14150: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14153: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14156: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_unsigned_literals=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_unsigned_literals=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi - -echo "$as_me:14168: result: $cf_cv_unsigned_literals" >&5 -echo "${ECHO_T}$cf_cv_unsigned_literals" >&6 - -cf_cv_1UL="1" -test ".$cf_cv_unsigned_literals" = .yes && cf_cv_1UL="${cf_cv_1UL}U" -test ".$cf_cv_typeof_chtype" = .long && cf_cv_1UL="${cf_cv_1UL}L" - -if test $NCURSES_MMASK_T = auto ; then - cf_cv_typeof_mmask_t=long -else - cf_cv_typeof_mmask_t=$NCURSES_MMASK_T -fi -test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t="" - -### Checks for external-data - -echo "$as_me:14184: 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 14191 "configure" -#include "confdefs.h" - -#ifdef HAVE_STDLIB_H -#include -#endif -#include -#include -#include -int -main () -{ -int x = (int) errno - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14209: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14212: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14215: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14218: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_dcl_errno=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_dcl_errno=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:14229: result: $cf_cv_dcl_errno" >&5 -echo "${ECHO_T}$cf_cv_dcl_errno" >&6 - -if test "$cf_cv_dcl_errno" = no ; then - -cf_result=`echo "decl_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <&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 14251 "configure" -#include "confdefs.h" - -#undef errno -extern int errno; - -int -main () -{ -errno = 2 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14266: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14269: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14272: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14275: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_have_errno=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_have_errno=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -echo "$as_me:14286: result: $cf_cv_have_errno" >&5 -echo "${ECHO_T}$cf_cv_have_errno" >&6 - -if test "$cf_cv_have_errno" = yes ; then - -cf_result=`echo "have_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <&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 -else - - rm -f conftest.a - cat >conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14313: \$? = $ac_status" >&5 - (exit $ac_status); } ; then - mv conftest.o data.o && \ - ( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null - fi - rm -f conftest.$ac_ext data.o - cat >conftest.$ac_ext <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14336: \$? = $ac_status" >&5 - (exit $ac_status); }; then - mv conftest.o func.o && \ - ( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null - fi - rm -f conftest.$ac_ext func.o - ( eval $RANLIB conftest.a ) 2>&5 >/dev/null - cf_saveLIBS="$LIBS" - LIBS="conftest.a $LIBS" - if test "$cross_compiling" = yes; then - cf_cv_link_dataonly=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 14349 "configure" -#include "confdefs.h" - - int main() - { - extern int testfunc(); - ${cf_cv_main_return:-return} (!testfunc()); - } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:14360: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14363: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14365: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14368: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_link_dataonly=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_link_dataonly=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - LIBS="$cf_saveLIBS" - -fi - -echo "$as_me:14383: result: $cf_cv_link_dataonly" >&5 -echo "${ECHO_T}$cf_cv_link_dataonly" >&6 - -if test "$cf_cv_link_dataonly" = no ; then - cat >>confdefs.h <<\EOF -#define BROKEN_LINKER 1 -EOF - - BROKEN_LINKER=1 -fi - -### Checks for library functions. - -for ac_func in \ -getcwd \ -getegid \ -geteuid \ -getttynam \ -issetugid \ -poll \ -remove \ -select \ -setbuf \ -setbuffer \ -setvbuf \ -sigaction \ -sigvec \ -strdup \ -strstr \ -tcgetpgrp \ -times \ -vsnprintf \ - -do -as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` -echo "$as_me:14418: 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 14424 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* 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 $ac_func (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14455: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14458: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14461: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14464: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:14474: 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 <&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 14493 "configure" -#include "confdefs.h" - -#include -int -main () -{ - - char temp[128]; - char *buf = temp; - char *db_array = temp; - cgetent(&buf, /* int *, */ &db_array, "vt100"); - cgetcap(buf, "tc", '='); - cgetmatch(buf, "tc"); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14513: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14516: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14519: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14522: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_cgetent=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_cgetent=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi - -echo "$as_me:14534: result: $cf_cv_cgetent" >&5 -echo "${ECHO_T}$cf_cv_cgetent" >&6 -test "$cf_cv_cgetent" = yes && cat >>confdefs.h <<\EOF -#define HAVE_BSD_CGETENT 1 -EOF - -fi - -echo "$as_me:14542: 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 14549 "configure" -#include "confdefs.h" -#include -int -main () -{ -int x = isascii(' ') - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14561: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14564: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14567: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14570: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_have_isascii=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_have_isascii=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -echo "$as_me:14581: result: $cf_cv_have_isascii" >&5 -echo "${ECHO_T}$cf_cv_have_isascii" >&6 -test "$cf_cv_have_isascii" = yes && cat >>confdefs.h <<\EOF -#define HAVE_ISASCII 1 -EOF - -if test "$ac_cv_func_sigaction" = yes; then -echo "$as_me:14588: 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 14591 "configure" -#include "confdefs.h" - -#include -#include -int -main () -{ -struct sigaction act - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14605: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14608: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14611: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14614: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - sigact_bad=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line 14622 "configure" -#include "confdefs.h" - -#define _POSIX_SOURCE -#include -#include -int -main () -{ -struct sigaction act - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14637: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14640: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14643: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14646: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - sigact_bad=yes - cat >>confdefs.h <<\EOF -#define SVR4_ACTION 1 -EOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -sigact_bad=unknown -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:14661: result: $sigact_bad" >&5 -echo "${ECHO_T}$sigact_bad" >&6 -fi - -echo "$as_me:14665: 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 -else - -if test "$cross_compiling" = yes; then - cf_cv_func_nanosleep=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 14675 "configure" -#include "confdefs.h" - -#include -#include -#include - -#ifdef HAVE_SYS_TIME_H -#include -#endif - -int main() { - struct timespec ts1, ts2; - int code; - ts1.tv_sec = 0; - ts1.tv_nsec = 750000000; - ts2.tv_sec = 0; - ts2.tv_nsec = 0; - errno = 0; - code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */ - ${cf_cv_main_return:-return}(code != 0); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:14700: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14703: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14705: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14708: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_func_nanosleep=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_func_nanosleep=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:14720: result: $cf_cv_func_nanosleep" >&5 -echo "${ECHO_T}$cf_cv_func_nanosleep" >&6 - -test "$cf_cv_func_nanosleep" = "yes" && cat >>confdefs.h <<\EOF -#define HAVE_NANOSLEEP 1 -EOF - -for ac_header in \ -termio.h \ -termios.h \ -unistd.h \ - -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:14734: 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 14740 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:14744: \"$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:14750: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:14769: 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 <&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 14790 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:14794: \"$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:14800: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:14819: 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 <&5 -echo $ECHO_N "checking whether termios.h needs _POSIX_SOURCE... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line 14840 "configure" -#include "confdefs.h" -#include -int -main () -{ -struct termios foo; int x = foo.c_iflag - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14852: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14855: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14858: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14861: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - termios_bad=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 14869 "configure" -#include "confdefs.h" - -#define _POSIX_SOURCE -#include -int -main () -{ -struct termios foo; int x = foo.c_iflag - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14883: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14886: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14889: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14892: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - termios_bad=unknown -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -termios_bad=yes cat >>confdefs.h <<\EOF -#define SVR4_TERMIO 1 -EOF - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - echo "$as_me:14907: result: $termios_bad" >&5 -echo "${ECHO_T}$termios_bad" >&6 - fi -fi - -echo "$as_me:14912: 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 14919 "configure" -#include "confdefs.h" - -#include -#ifdef HAVE_UNISTD_H -#include -#endif -#ifdef HAVE_TERMIOS_H -#include -#define TTY struct termios -#else -#ifdef HAVE_TERMIO_H -#include -#define TTY struct termio -#endif -#endif - -int -main () -{ - -TTY foo; -tcgetattr(1, &foo); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14947: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14950: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14953: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14956: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_have_tcgetattr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_have_tcgetattr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:14966: 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:14972: 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 14979 "configure" -#include "confdefs.h" - -#include -#include -int -main () -{ - - va_list ap; - vsscanf("from", "%d", ap) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14995: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14998: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15001: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15004: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_func_vsscanf=vsscanf -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line 15012 "configure" -#include "confdefs.h" - -#include -#include -int -main () -{ - - FILE strbuf; - char *str = "from"; - - strbuf._flag = _IOREAD; - strbuf._ptr = strbuf._base = (unsigned char *) str; - strbuf._cnt = strlen(str); - strbuf._file = _NFILE; - return (vfscanf(&strbuf, "%d", ap)) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15034: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15037: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15040: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15043: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_func_vsscanf=vfscanf -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line 15051 "configure" -#include "confdefs.h" - -#include -#include -int -main () -{ - - FILE strbuf; - char *str = "from"; - - strbuf._flag = _IOREAD; - strbuf._ptr = strbuf._base = (unsigned char *) str; - strbuf._cnt = strlen(str); - strbuf._file = _NFILE; - return (_doscan(&strbuf, "%d", ap)) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15073: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15076: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15079: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15082: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_func_vsscanf=_doscan -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -cf_cv_func_vsscanf=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -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:15097: result: $cf_cv_func_vsscanf" >&5 -echo "${ECHO_T}$cf_cv_func_vsscanf" >&6 - -case $cf_cv_func_vsscanf in #(vi -vsscanf) cat >>confdefs.h <<\EOF -#define HAVE_VSSCANF 1 -EOF -;; #(vi -vfscanf) cat >>confdefs.h <<\EOF -#define HAVE_VFSCANF 1 -EOF -;; #(vi -_doscan) cat >>confdefs.h <<\EOF -#define HAVE__DOSCAN 1 -EOF -;; -esac - -echo "$as_me:15115: 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 -else - -rm -rf conftest* -if test "$cross_compiling" = yes; then - echo "$as_me:15123: 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 15129 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char mkstemp (); below. */ -#include -/* 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 mkstemp (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_mkstemp) || defined (__stub___mkstemp) -choke me -#else -f = mkstemp; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15160: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15163: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15166: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15169: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_mkstemp=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_mkstemp=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:15179: result: $ac_cv_func_mkstemp" >&5 -echo "${ECHO_T}$ac_cv_func_mkstemp" >&6 - -else - cat >conftest.$ac_ext <<_ACEOF -#line 15184 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#include -int main() -{ - char *tmpl = "conftestXXXXXX"; - char name[2][80]; - int n; - int result = 0; - int fd; - struct stat sb; - - umask(077); - for (n = 0; n < 2; ++n) { - strcpy(name[n], tmpl); - if ((fd = mkstemp(name[n])) >= 0) { - if (!strcmp(name[n], tmpl) - || stat(name[n], &sb) != 0 - || (sb.st_mode & S_IFMT) != S_IFREG - || (sb.st_mode & 077) != 0) { - result = 1; - } - close(fd); - } - } - if (result == 0 - && !strcmp(name[0], name[1])) - result = 1; - ${cf_cv_main_return:-return}(result); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:15222: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15225: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:15227: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15230: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_func_mkstemp=yes - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_func_mkstemp=no - -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi -echo "$as_me:15245: result: $cf_cv_func_mkstemp" >&5 -echo "${ECHO_T}$cf_cv_func_mkstemp" >&6 -if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then - cat >>confdefs.h <<\EOF -#define HAVE_MKSTEMP 1 -EOF - -fi - -# setup for prototype of fallback for vsscanf() - -if test "$cf_cv_func_vsscanf" = vsscanf ; then - HAVE_VSSCANF=1 -else - HAVE_VSSCANF=0 -fi - -if test "$cross_compiling" = yes ; then - { echo "$as_me:15263: 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:15266: 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:15272: 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 15277 "configure" -#include "confdefs.h" -#include -/* If setvbuf has the reversed format, exit 0. */ -int -main () -{ - /* This call has the arguments reversed. - A reversed system may check and see that the address of main - is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ - if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0) - $ac_main_return(1); - putc('\r', stdout); - $ac_main_return(0); /* Non-reversed systems segv here. */ -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:15294: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15297: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:15299: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15302: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_setvbuf_reversed=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_setvbuf_reversed=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f core core.* *.core -fi -echo "$as_me:15315: 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 - -cat >>confdefs.h <<\EOF -#define SETVBUF_REVERSED 1 -EOF - -fi - -fi -echo "$as_me:15326: checking return type of signal handlers" >&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 15332 "configure" -#include "confdefs.h" -#include -#include -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:15354: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:15357: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:15360: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15363: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:15373: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 - -cat >>confdefs.h <&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 15387 "configure" -#include "confdefs.h" - -#include -int -main () -{ -sigaction_t x - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:15400: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:15403: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:15406: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15409: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_type_sigaction=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_type_sigaction=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi - -echo "$as_me:15420: 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:15426: 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 -else - - cf_cv_sizechange=unknown - cf_save_CPPFLAGS="$CPPFLAGS" - -for cf_opts in "" "NEED_PTEM_H" -do - - CPPFLAGS="$cf_save_CPPFLAGS" - test -n "$cf_opts" && CPPFLAGS="$CPPFLAGS -D$cf_opts" - cat >conftest.$ac_ext <<_ACEOF -#line 15441 "configure" -#include "confdefs.h" -#include -#ifdef HAVE_TERMIOS_H -#include -#else -#ifdef HAVE_TERMIO_H -#include -#endif -#endif -#ifdef NEED_PTEM_H -/* This is a workaround for SCO: they neglected to define struct winsize in - * termios.h -- it's only in termio.h and ptem.h - */ -#include -#include -#endif -#if !defined(sun) || !defined(HAVE_TERMIOS_H) -#include -#endif - -int -main () -{ - -#ifdef TIOCGSIZE - struct ttysize win; /* FIXME: what system is this? */ - int y = win.ts_lines; - int x = win.ts_cols; -#else -#ifdef TIOCGWINSZ - struct winsize win; - int y = win.ws_row; - int x = win.ws_col; -#else - no TIOCGSIZE or TIOCGWINSZ -#endif /* TIOCGWINSZ */ -#endif /* TIOCGSIZE */ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:15485: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:15488: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:15491: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15494: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_sizechange=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_sizechange=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - CPPFLAGS="$cf_save_CPPFLAGS" - if test "$cf_cv_sizechange" = yes ; then - echo "size-change succeeded ($cf_opts)" >&5 - test -n "$cf_opts" && cf_cv_sizechange="$cf_opts" - break - fi -done - -fi -echo "$as_me:15513: result: $cf_cv_sizechange" >&5 -echo "${ECHO_T}$cf_cv_sizechange" >&6 -if test "$cf_cv_sizechange" != no ; then - cat >>confdefs.h <<\EOF -#define HAVE_SIZECHANGE 1 -EOF - - case $cf_cv_sizechange in #(vi - NEED*) - cat >>confdefs.h <&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 15536 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char memmove (); below. */ -#include -/* 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 memmove (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_memmove) || defined (__stub___memmove) -choke me -#else -f = memmove; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15567: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15570: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15573: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15576: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_memmove=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_memmove=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:15586: 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:15592: 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 15598 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char bcopy (); below. */ -#include -/* 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 bcopy (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_bcopy) || defined (__stub___bcopy) -choke me -#else -f = bcopy; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15629: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15632: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15635: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15638: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_bcopy=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_bcopy=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:15648: 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:15652: 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 -else - - if test "$cross_compiling" = yes; then - cf_cv_good_bcopy=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 15662 "configure" -#include "confdefs.h" - -int main() { - static char data[] = "abcdefghijklmnopqrstuwwxyz"; - char temp[40]; - bcopy(data, temp, sizeof(data)); - bcopy(temp+10, temp, 15); - bcopy(temp+5, temp+15, 10); - ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz")); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:15676: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15679: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:15681: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15684: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_good_bcopy=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_good_bcopy=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi -echo "$as_me:15697: result: $cf_cv_good_bcopy" >&5 -echo "${ECHO_T}$cf_cv_good_bcopy" >&6 - -else - cf_cv_good_bcopy=no -fi - - if test "$cf_cv_good_bcopy" = yes ; then - cat >>confdefs.h <<\EOF -#define USE_OK_BCOPY 1 -EOF - - else - cat >>confdefs.h <<\EOF -#define USE_MY_MEMMOVE 1 -EOF - - fi - -fi - -echo "$as_me:15718: 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 -else - -if test "$cross_compiling" = yes; then - cf_cv_working_poll=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 15728 "configure" -#include "confdefs.h" - -#include -#ifdef HAVE_POLL_H -#include -#else -#include -#endif -int main() { - struct pollfd myfds; - int ret; - - myfds.fd = 0; - myfds.events = POLLIN; - - ret = poll(&myfds, 1, 100); - ${cf_cv_main_return:-return}(ret != 0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:15749: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15752: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:15754: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15757: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_working_poll=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_working_poll=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:15769: 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:15775: 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 15782 "configure" -#include "confdefs.h" - -#include - -int -main () -{ - - static va_list dst; - static va_list src; - va_copy(dst, src) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15799: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15802: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15805: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15808: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_have_va_copy=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_have_va_copy=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:15818: result: $cf_cv_have_va_copy" >&5 -echo "${ECHO_T}$cf_cv_have_va_copy" >&6 - -test "$cf_cv_have_va_copy" = yes && cat >>confdefs.h <<\EOF -#define HAVE_VA_COPY 1 -EOF - -echo "$as_me:15825: 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 15832 "configure" -#include "confdefs.h" - -#include - -int -main () -{ - - static va_list dst; - static va_list src; - __va_copy(dst, src) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15849: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15852: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15855: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15858: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_have___va_copy=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_have___va_copy=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:15868: result: $cf_cv_have___va_copy" >&5 -echo "${ECHO_T}$cf_cv_have___va_copy" >&6 - -test "$cf_cv_have___va_copy" = yes && cat >>confdefs.h <<\EOF -#define HAVE___VA_COPY 1 -EOF - -echo "$as_me:15875: 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 15881 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((pid_t *) 0) - return 0; -if (sizeof (pid_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:15896: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:15899: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:15902: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15905: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_pid_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_pid_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:15915: 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 - : -else - -cat >>confdefs.h <&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 15936 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:15940: \"$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:15946: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:15965: 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 <&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 15984 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* 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 $ac_func (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:16015: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:16018: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:16021: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16024: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:16034: 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 <&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 -else - if test "$cross_compiling" = yes; then - ac_cv_func_fork_works=cross -else - cat >conftest.$ac_ext <<_ACEOF -/* By Rüdiger Kuhlmann. */ - #include - #if HAVE_UNISTD_H - # include - #endif - /* Some systems only have a dummy stub for fork() */ - int main () - { - if (fork() < 0) - $ac_main_return (1); - $ac_main_return (0); - } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:16069: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:16072: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:16074: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16077: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_fork_works=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_fork_works=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:16089: result: $ac_cv_func_fork_works" >&5 -echo "${ECHO_T}$ac_cv_func_fork_works" >&6 - -fi -if test "x$ac_cv_func_fork_works" = xcross; then - case $host in - *-*-amigaos* | *-*-msdosdjgpp*) - # Override, as these systems have only a dummy fork() stub - ac_cv_func_fork_works=no - ;; - *) - ac_cv_func_fork_works=yes - ;; - esac - { echo "$as_me:16103: 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:16108: 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 -else - if test "$cross_compiling" = yes; then - ac_cv_func_vfork_works=cross -else - cat >conftest.$ac_ext <<_ACEOF -#line 16117 "configure" -#include "confdefs.h" -/* Thanks to Paul Eggert for this test. */ -#include -#include -#include -#if HAVE_UNISTD_H -# include -#endif -#if HAVE_VFORK_H -# include -#endif -/* On some sparc systems, changes by the child to local and incoming - argument registers are propagated back to the parent. The compiler - is told about this with #include , but some compilers - (e.g. gcc -O) don't grok . Test for this by using a - static variable whose address is put into a register that is - clobbered by the vfork. */ -static -#ifdef __cplusplus -sparc_address_test (int arg) -# else -sparc_address_test (arg) int arg; -#endif -{ - static pid_t child; - if (!child) { - child = vfork (); - if (child < 0) { - perror ("vfork"); - _exit(2); - } - if (!child) { - arg = getpid(); - write(-1, "", 0); - _exit (arg); - } - } -} - -int -main () -{ - pid_t parent = getpid (); - pid_t child; - - sparc_address_test (); - - child = vfork (); - - if (child == 0) { - /* Here is another test for sparc vfork register problems. This - test uses lots of local variables, at least as many local - variables as main has allocated so far including compiler - temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris - 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should - reuse the register of parent for one of the local variables, - since it will think that parent can't possibly be used any more - in this routine. Assigning to the local variable will thus - munge parent in the parent process. */ - pid_t - p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), - p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); - /* Convince the compiler that p..p7 are live; otherwise, it might - use the same hardware register for all 8 local variables. */ - if (p != p1 || p != p2 || p != p3 || p != p4 - || p != p5 || p != p6 || p != p7) - _exit(1); - - /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent - from child file descriptors. If the child closes a descriptor - before it execs or exits, this munges the parent's descriptor - as well. Test for this by closing stdout in the child. */ - _exit(close(fileno(stdout)) != 0); - } else { - int status; - struct stat st; - - while (wait(&status) != child) - ; - $ac_main_return( - /* Was there some problem with vforking? */ - child < 0 - - /* Did the child fail? (This shouldn't happen.) */ - || status - - /* Did the vfork/compiler bug occur? */ - || parent != getpid() - - /* Did the file descriptor bug occur? */ - || fstat(fileno(stdout), &st) != 0 - ); - } -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:16214: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:16217: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:16219: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16222: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_vfork_works=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_vfork_works=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:16234: 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:16240: 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 - -if test "x$ac_cv_func_vfork_works" = xyes; then - -cat >>confdefs.h <<\EOF -#define HAVE_WORKING_VFORK 1 -EOF - -else - -cat >>confdefs.h <<\EOF -#define vfork fork -EOF - -fi -if test "x$ac_cv_func_fork_works" = xyes; then - -cat >>confdefs.h <<\EOF -#define HAVE_WORKING_FORK 1 -EOF - -fi - -# special check for test/ditto.c - -echo "$as_me:16267: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lutil $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 16275 "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 openpty (); -int -main () -{ -openpty (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:16294: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:16297: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:16300: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16303: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_util_openpty=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_util_openpty=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:16314: 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 -else - cf_cv_lib_util=no -fi - -echo "$as_me:16322: 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 -else - - cf_save_LIBS="$LIBS" - test $cf_cv_lib_util = yes && LIBS="-lutil $LIBS" - for cf_header in pty.h libutil.h util.h - do - cat >conftest.$ac_ext <<_ACEOF -#line 16333 "configure" -#include "confdefs.h" - -#include <$cf_header> - -int -main () -{ - - int x = openpty((int *)0, (int *)0, (char *)0, - (struct termios *)0, (struct winsize *)0); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:16350: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:16353: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:16356: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16359: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_func_openpty=$cf_header - break - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_func_openpty=no - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done - LIBS="$cf_save_LIBS" - -fi -echo "$as_me:16377: result: $cf_cv_func_openpty" >&5 -echo "${ECHO_T}$cf_cv_func_openpty" >&6 - -if test "$cf_cv_func_openpty" != no ; then - cat >>confdefs.h < -EOF - - cat >>confdefs.h <<\EOF -#define USE_XTERM_PTY 1 -EOF - - if test "$cf_cv_lib_util" = yes ; then - TEST_LIBS="-lutil $TEST_LIBS" - fi -fi - -if test "$with_hashed_db" != no ; then - cat >>confdefs.h <<\EOF -#define USE_HASHED_DB 1 -EOF - -case $with_hashed_db in #(vi -yes|*able*) #(vi - ;; -*) - if test -d "$with_hashed_db" ; then - -if test -n "$with_hashed_db/include" ; then - for cf_add_incdir in $with_hashed_db/include - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 16429 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:16441: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:16444: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:16447: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16450: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:16467: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -if test -n "$with_hashed_db/lib" ; then - for cf_add_libdir in $with_hashed_db/lib - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:16501: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - fi -esac - -echo "$as_me:16512: 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 16518 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:16522: \"$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:16528: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_db_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_db_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:16547: 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:16551: 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 -else - -cf_cv_hashed_db_version=unknown - -for cf_db_version in 1 2 3 4 5 -do - -echo "${as_me:-configure}:16562: testing checking for db version $cf_db_version ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 16565 "configure" -#include "confdefs.h" - -$ac_includes_default -#include - -#ifdef DB_VERSION_MAJOR - /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */ -#if $cf_db_version == DB_VERSION_MAJOR - /* ok */ -#else - make an error -#endif -#else -#if $cf_db_version == 1 - /* ok: assuming this is DB 1.8.5 */ -#else - make an error -#endif -#endif - -int -main () -{ -DBT *foo = 0 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:16595: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:16598: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:16601: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16604: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_hashed_db_version=$cf_db_version - break - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:16618: 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:16622: 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:16627: 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 -else - -cf_cv_hashed_db_libs=unknown -for cf_db_libs in "" db$cf_cv_hashed_db_version db-$cf_cv_hashed_db_version db '' -do - cf_save_libs="$LIBS" - if test -n "$cf_db_libs"; then - LIBS="-l$cf_db_libs $LIBS" - fi - -echo "${as_me:-configure}:16641: testing checking for library "$cf_db_libs" ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 16644 "configure" -#include "confdefs.h" - -$ac_includes_default -#include - -int -main () -{ - - char *path = "/tmp/foo"; -#ifdef DB_VERSION_MAJOR -#if DB_VERSION_MAJOR >= 4 - DB *result = 0; - db_create(&result, NULL, 0); - result->open(result, - NULL, - path, - path, - DB_HASH, - DB_CREATE, - 0644); -#elif DB_VERSION_MAJOR >= 3 - DB *result = 0; - db_create(&result, NULL, 0); - result->open(result, - path, - path, - DB_HASH, - DB_CREATE, - 0644); -#elif DB_VERSION_MAJOR >= 2 - DB *result = 0; - db_open(path, - DB_HASH, - DB_CREATE, - 0644, - (DB_ENV *) 0, - (DB_INFO *) 0, - &result); -#endif /* DB_VERSION_MAJOR */ -#else - DB *result = dbopen(path, - 2, - 0644, - DB_HASH, - 0); -#endif - ${cf_cv_main_return:-return}(result != 0) - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:16699: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:16702: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:16705: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16708: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - if test -n "$cf_db_libs" ; then - cf_cv_hashed_db_libs=$cf_db_libs - else - cf_cv_hashed_db_libs=default - fi - LIBS="$cf_save_libs" - break - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$cf_save_libs" -done - -fi -echo "$as_me:16728: 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:16732: 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 - LIBS="-l$cf_cv_hashed_db_libs $LIBS" - fi -fi - -else - - { { echo "$as_me:16742: error: Cannot find db.h" >&5 -echo "$as_me: error: Cannot find db.h" >&2;} - { (exit 1); exit 1; }; } - -fi - -fi - -if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then - CFLAGS=`echo ${CFLAGS} | sed -e 's%-g %%' -e 's%-g$%%'` - CXXFLAGS=`echo ${CXXFLAGS} | sed -e 's%-g %%' -e 's%-g$%%'` -fi - -# Just in case, check if the C compiler has a bool type. - -echo "$as_me:16757: 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 16765 "configure" -#include "confdefs.h" - -int -main () -{ -bool foo = false - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:16777: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:16780: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:16783: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16786: \$? = $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 16793 "configure" -#include "confdefs.h" - -#ifndef __BEOS__ -#include -#endif - -int -main () -{ -bool foo = false - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:16809: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:16812: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:16815: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16818: \$? = $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:16832: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:16834: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:16838: 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 16846 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ -bool x = false - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:16861: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:16864: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:16867: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16870: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_cc_bool_type=1 -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_cc_bool_type=0 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi - -if test "$cf_cv_cc_bool_type" = 1 -then echo "$as_me:16883: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:16885: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -# Check for C++ compiler characteristics (and ensure that it's there!) -if test -n "$CXX" ; then - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 - -if test -n "$GXX" ; then -case $cf_cv_system_name in #(vi -os2*) #(vi - cf_stdcpp_libname=stdcpp - ;; -*) - cf_stdcpp_libname=stdc++ - ;; -esac -echo "$as_me:16907: 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 -else - - cf_save="$LIBS" - LIBS="-l$cf_stdcpp_libname $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 16916 "configure" -#include "confdefs.h" - -#include -int -main () -{ - -char buf[80]; -strstreambuf foo(buf, sizeof(buf)) - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:16932: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:16935: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:16938: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16941: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_libstdcpp=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_libstdcpp=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$cf_save" - -fi -echo "$as_me:16953: result: $cf_cv_libstdcpp" >&5 -echo "${ECHO_T}$cf_cv_libstdcpp" >&6 -test "$cf_cv_libstdcpp" = yes && CXXLIBS="-l$cf_stdcpp_libname $CXXLIBS" -fi - - echo "$as_me:16958: 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 -else - -cat > conftest.$ac_ext < -int main() -{ - ${cf_cv_main_return:-return}(0); -} -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 -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -if { (eval echo "$as_me:16974: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16977: \$? = $ac_status" >&5 - (exit $ac_status); } && - test -f conftest2.$ac_objext && { (eval echo "$as_me:16979: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:16982: \$? = $ac_status" >&5 - (exit $ac_status); }; -then - eval cf_cv_prog_CXX_c_o=yes -else - eval cf_cv_prog_CXX_c_o=no -fi -rm -rf conftest* - -fi -if test $cf_cv_prog_CXX_c_o = yes; then - echo "$as_me:16993: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:16996: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - case $GXX_VERSION in - 1*|2.0-6*) - cf_cxx_library=yes - ;; - *-2.7*|2.7*) - -cf_cxx_library=unknown -case $cf_cv_system_name in #(vi -os2*) #(vi - cf_gpp_libname=gpp - ;; -*) - cf_gpp_libname=g++ - ;; -esac -if test "$GXX" = yes; then - echo "$as_me:17016: checking for lib$cf_gpp_libname" >&5 -echo $ECHO_N "checking for lib$cf_gpp_libname... $ECHO_C" >&6 - cf_save="$LIBS" - LIBS="-l$cf_gpp_libname $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 17021 "configure" -#include "confdefs.h" - -#include <$cf_gpp_libname/builtin.h> - -int -main () -{ -two_arg_error_handler_t foo2 = lib_error_handler - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:17035: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:17038: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:17041: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17044: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cxx_library=yes - CXXLIBS="-l$cf_gpp_libname $CXXLIBS" - if test "$cf_gpp_libname" = cpp ; then - cat >>confdefs.h <<\EOF -#define HAVE_GPP_BUILTIN_H 1 -EOF - - else - cat >>confdefs.h <<\EOF -#define HAVE_GXX_BUILTIN_H 1 -EOF - - fi -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF -#line 17063 "configure" -#include "confdefs.h" - -#include - -int -main () -{ -two_arg_error_handler_t foo2 = lib_error_handler - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:17077: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:17080: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:17083: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17086: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cxx_library=yes - CXXLIBS="-l$cf_gpp_libname $CXXLIBS" - cat >>confdefs.h <<\EOF -#define HAVE_BUILTIN_H 1 -EOF - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cxx_library=no -fi -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:17103: result: $cf_cxx_library" >&5 -echo "${ECHO_T}$cf_cxx_library" >&6 -fi - - ;; - *) - cf_cxx_library=no - ;; - esac - - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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:17119: 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 - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CXXCPP needs to be expanded - for CXXCPP in "$CXX -E" "/lib/cpp" - do - ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 17136 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:17141: \"$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:17147: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 17170 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:17174: \"$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:17180: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CXXCPP=$CXXCPP - -fi - CXXCPP=$ac_cv_prog_CXXCPP -else - ac_cv_prog_CXXCPP=$CXXCPP -fi -echo "$as_me:17217: result: $CXXCPP" >&5 -echo "${ECHO_T}$CXXCPP" >&6 -ac_preproc_ok=false -for ac_cxx_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 17227 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:17232: \"$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:17238: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 17261 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:17265: \"$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:17271: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:17299: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5 -echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;} - { (exit 1); exit 1; }; } -fi - -ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 - -for ac_header in iostream typeinfo -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:17314: 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 17320 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:17324: \"$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:17330: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_cxx_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:17349: 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 <&5 -echo $ECHO_N "checking if iostream uses std-namespace... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line 17363 "configure" -#include "confdefs.h" - -#include -using std::endl; -using std::cerr; -int -main () -{ - -cerr << "testing" << endl; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:17380: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:17383: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:17386: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17389: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_iostream_namespace=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_iostream_namespace=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - echo "$as_me:17398: result: $cf_iostream_namespace" >&5 -echo "${ECHO_T}$cf_iostream_namespace" >&6 - if test "$cf_iostream_namespace" = yes ; then - cat >>confdefs.h <<\EOF -#define IOSTREAM_NAMESPACE 1 -EOF - - fi - fi - -echo "$as_me:17408: 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 17416 "configure" -#include "confdefs.h" - -int -main () -{ -bool foo = false - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:17428: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:17431: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:17434: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17437: \$? = $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 17444 "configure" -#include "confdefs.h" - -#ifndef __BEOS__ -#include -#endif - -int -main () -{ -bool foo = false - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:17460: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:17463: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:17466: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17469: \$? = $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:17483: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:17485: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:17489: 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 17497 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ -bool x = false - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:17512: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:17515: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:17518: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17521: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_builtin_bool=1 -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_builtin_bool=0 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi - -if test "$cf_cv_builtin_bool" = 1 -then echo "$as_me:17534: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else echo "$as_me:17536: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:17540: checking for size of bool" >&5 -echo $ECHO_N "checking for size of bool... $ECHO_C" >&6 -if test "${cf_cv_type_of_bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - rm -f cf_test.out - if test "$cross_compiling" = yes; then - cf_cv_type_of_bool=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 17551 "configure" -#include "confdefs.h" - -#include -#include - -#if defined(__cplusplus) - -#ifdef HAVE_GXX_BUILTIN_H -#include -#elif HAVE_GPP_BUILTIN_H -#include -#elif HAVE_BUILTIN_H -#include -#endif - -#else - -#if $cf_cv_header_stdbool_h -#include -#endif - -#endif - -main() -{ - FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { - bool x = true; - if ((bool)(-x) >= 0) - fputs("unsigned ", fp); - if (sizeof(x) == sizeof(int)) fputs("int", fp); - else if (sizeof(x) == sizeof(char)) fputs("char", fp); - else if (sizeof(x) == sizeof(short))fputs("short",fp); - else if (sizeof(x) == sizeof(long)) fputs("long", fp); - fclose(fp); - } - ${cf_cv_main_return:-return}(0); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:17593: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:17596: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:17598: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17601: \$? = $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 - cf_cv_type_of_bool=unknown - fi -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_type_of_bool=unknown -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi - - rm -f cf_test.out -echo "$as_me:17619: 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 #(vi - .auto|.) NCURSES_BOOL=unsigned;; - esac - { echo "$as_me:17625: 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:17630: 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" -for cf_math in "" MATH_H -do -for cf_excp in "" MATH_EXCEPTION -do - CXXFLAGS="$cf_save_CXXFLAGS -I${srcdir}/c++ -I${srcdir}/menu -I${srcdir}/include" - 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 17642 "configure" -#include "confdefs.h" - -#include - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:17656: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:17659: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:17662: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17665: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - test -n "$cf_math" && cat >>confdefs.h <>confdefs.h <&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -done -echo "$as_me:17686: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 -CXXFLAGS="$cf_save_CXXFLAGS" - -if test -n "$CXX"; then -echo "$as_me:17691: 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 -else - - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 - - if test "$cross_compiling" = yes; then - cf_cv_cpp_param_init=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 17708 "configure" -#include "confdefs.h" - -class TEST { -private: - int value; -public: - TEST(int x = 1); - ~TEST(); -}; - -TEST::TEST(int x = 1) // some compilers do not like second initializer -{ - value = x; -} -void main() { } - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:17727: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:17730: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:17732: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17735: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_cpp_param_init=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_cpp_param_init=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 - -fi -echo "$as_me:17754: result: $cf_cv_cpp_param_init" >&5 -echo "${ECHO_T}$cf_cv_cpp_param_init" >&6 -fi -test "$cf_cv_cpp_param_init" = yes && cat >>confdefs.h <<\EOF -#define CPP_HAS_PARAM_INIT 1 -EOF - -if test -n "$CXX"; then - -echo "$as_me:17763: 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 -else - - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 - - cat >conftest.$ac_ext <<_ACEOF -#line 17777 "configure" -#include "confdefs.h" - -class NCursesPanel -{ -public: - NCursesPanel(int nlines, - int ncols, - int begin_y = 0, - int begin_x = 0) - { - } - - ~NCursesPanel(); -}; - -template class NCursesUserPanel : public NCursesPanel -{ -public: - NCursesUserPanel (int nlines, - int ncols, - int begin_y = 0, - int begin_x = 0, - const T* p_UserData = static_cast(0)) - : NCursesPanel (nlines, ncols, begin_y, begin_x) - { - }; - NCursesUserPanel(const T* p_UserData = static_cast(0)) : NCursesPanel() - { - }; - - virtual ~NCursesUserPanel() {}; -}; - -int -main () -{ - - const char* p_UserData = static_cast(0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:17821: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:17824: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:17827: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17830: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_cpp_static_cast=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_cpp_static_cast=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - ac_ext=cc -ac_cpp='$CXXCPP $CPPFLAGS' -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 - -fi -echo "$as_me:17848: result: $cf_cv_cpp_static_cast" >&5 -echo "${ECHO_T}$cf_cv_cpp_static_cast" >&6 - -fi - -test "$cf_cv_cpp_static_cast" = yes && cat >>confdefs.h <<\EOF -#define CPP_HAS_STATIC_CAST 1 -EOF - - CXX_AR='$(AR)' - CXX_ARFLAGS='$(ARFLAGS)' - case $cf_cv_system_name in #(vi - irix*) #(vi - if test "$GXX" != yes ; then - CXX_AR='$(CXX)' - CXX_ARFLAGS='-ar -o' - fi - ;; - sco3.2v5*) #(vi - CXXLDFLAGS="-u main" - ;; - solaris2*) - if test "$GXX" != yes ; then - CXX_AR='$(CXX)' - CXX_ARFLAGS='-xar -o' - fi - ;; - esac - -else - cf_cxx_library=no - cf_cv_builtin_bool=1 - - # 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 - # the C++ portion of this configuration as a shortcut (or just to avoid - # compiling the demo in the c++ directory). So we need a reasonable - # default for the 'bool' type. - # - # Caveat: since the storage of the bool type is not standardized, it - # may change. - - if test "$NCURSES_BOOL" != auto ; then - cf_cv_type_of_bool=$NCURSES_BOOL - cf_cv_header_stdbool_h=0 - else - if test "$cf_cv_header_stdbool_h" = 1 ; then - -echo "$as_me:17896: checking for size of bool" >&5 -echo $ECHO_N "checking for size of bool... $ECHO_C" >&6 -if test "${cf_cv_type_of_bool+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - rm -f cf_test.out - if test "$cross_compiling" = yes; then - cf_cv_type_of_bool=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 17907 "configure" -#include "confdefs.h" - -#include -#include - -#if defined(__cplusplus) - -#ifdef HAVE_GXX_BUILTIN_H -#include -#elif HAVE_GPP_BUILTIN_H -#include -#elif HAVE_BUILTIN_H -#include -#endif - -#else - -#if $cf_cv_header_stdbool_h -#include -#endif - -#endif - -main() -{ - FILE *fp = fopen("cf_test.out", "w"); - if (fp != 0) { - bool x = true; - if ((bool)(-x) >= 0) - fputs("unsigned ", fp); - if (sizeof(x) == sizeof(int)) fputs("int", fp); - else if (sizeof(x) == sizeof(char)) fputs("char", fp); - else if (sizeof(x) == sizeof(short))fputs("short",fp); - else if (sizeof(x) == sizeof(long)) fputs("long", fp); - fclose(fp); - } - ${cf_cv_main_return:-return}(0); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:17949: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:17952: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:17954: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:17957: \$? = $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 - cf_cv_type_of_bool=unknown - fi -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_type_of_bool=unknown -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - -fi - - rm -f cf_test.out -echo "$as_me:17975: 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 #(vi - .auto|.) NCURSES_BOOL=unsigned;; - esac - { echo "$as_me:17981: 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:17987: checking for fallback type of bool" >&5 -echo $ECHO_N "checking for fallback type of bool... $ECHO_C" >&6 - case "$host_cpu" in #(vi - i?86) cf_cv_type_of_bool=char ;; #(vi - *) cf_cv_type_of_bool=int ;; - esac - echo "$as_me:17993: result: $cf_cv_type_of_bool" >&5 -echo "${ECHO_T}$cf_cv_type_of_bool" >&6 - fi - fi -fi - -# If the C compiler did not declare bool, and we did not determine that the C++ -# compiler does not declare bool, turn on an ifdef in curses.h that makes the -# ncurses library use the same type as C++ bool. Note that this allows one to -# 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 -then - # oops: C has a bool. Unlikely, but C++ could differ. - USE_CXX_BOOL=0 -elif test $cf_cv_builtin_bool = 0 -then - # C++ has no bool - USE_CXX_BOOL=0 -else - # this is the normal case - USE_CXX_BOOL='defined(__cplusplus)' -fi - -if test -f "${srcdir}/Ada95/Makefile.in" ; then - - if test "$cf_with_ada" != "no" ; then - if test "$with_libtool" != "no"; then - { echo "$as_me:18022: 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 - -cf_ada_make=gnatmake -# Extract the first word of "$cf_ada_make", so it can be a program name with args. -set dummy $cf_ada_make; ac_word=$2 -echo "$as_me:18033: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_prog_gnat_exists+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if test -n "$gnat_exists"; then - ac_cv_prog_gnat_exists="$gnat_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_gnat_exists="yes" -echo "$as_me:18048: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_gnat_exists" && ac_cv_prog_gnat_exists="no" -fi -fi -gnat_exists=$ac_cv_prog_gnat_exists -if test -n "$gnat_exists"; then - echo "$as_me:18057: result: $gnat_exists" >&5 -echo "${ECHO_T}$gnat_exists" >&6 -else - echo "$as_me:18060: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test "$ac_cv_prog_gnat_exists" = no; then - cf_ada_make= -else - -echo "$as_me:18068: checking for gnat version" >&5 -echo $ECHO_N "checking for gnat version... $ECHO_C" >&6 -cf_gnat_version=`${cf_ada_make:-gnatmake} -v 2>&1 | \ - grep '[0-9].[0-9][0-9]*' |\ - sed -e '2,$d' -e 's/[^0-9 \.]//g' -e 's/^[ ]*//' -e 's/ .*//'` -echo "$as_me:18073: result: $cf_gnat_version" >&5 -echo "${ECHO_T}$cf_gnat_version" >&6 - -case $cf_gnat_version in #(vi -3.1[1-9]*|3.[2-9]*|[4-9].*) #(vi - cf_cv_prog_gnat_correct=yes - ;; -*) - { echo "$as_me:18081: WARNING: Unsupported GNAT version $cf_gnat_version. We require 3.11 or better. Disabling Ada95 binding." >&5 -echo "$as_me: WARNING: Unsupported GNAT version $cf_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:18089: 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:18104: 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:18113: result: $M4_exists" >&5 -echo "${ECHO_T}$M4_exists" >&6 -else - echo "$as_me:18116: 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 Ada95 binding required program m4 not found. Ada95 binding disabled. - fi - if test "$cf_cv_prog_gnat_correct" = yes; then - echo "$as_me:18125: checking if GNAT works" >&5 -echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6 - -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&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:18153: result: $cf_cv_prog_gnat_correct" >&5 -echo "${ECHO_T}$cf_cv_prog_gnat_correct" >&6 - fi -fi - - if test "$cf_cv_prog_gnat_correct" = yes; then - - ADAFLAGS="$ADAFLAGS -gnatpn" - - # make ADAFLAGS consistent with CFLAGS - case "$CFLAGS" in - *-g*) - - ADAFLAGS="$ADAFLAGS -g" - - ;; - esac - case "$CFLAGS" in - *-O*) - - ADAFLAGS="$ADAFLAGS -O3" - - ;; - esac - -echo "$as_me:18178: checking if GNAT supports generics" >&5 -echo $ECHO_N "checking if GNAT supports generics... $ECHO_C" >&6 -case $cf_gnat_version in #(vi -3.[1-9]*|[4-9].*) #(vi - cf_gnat_generics=yes - ;; -*) - cf_gnat_generics=no - ;; -esac -echo "$as_me:18188: result: $cf_gnat_generics" >&5 -echo "${ECHO_T}$cf_gnat_generics" >&6 - -if test "$cf_gnat_generics" = yes -then - cf_compile_generics=generics - cf_generic_objects="\${GENOBJS}" -else - cf_compile_generics= - cf_generic_objects= -fi - -echo "$as_me:18200: 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 -else - -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&5 2>&1 ) ; then - cf_cv_gnat_sigint=yes -else - cf_cv_gnat_sigint=no -fi -rm -rf conftest* *~conftest* - -fi -echo "$as_me:18248: result: $cf_cv_gnat_sigint" >&5 -echo "${ECHO_T}$cf_cv_gnat_sigint" >&6 - -if test $cf_cv_gnat_sigint = yes ; then - USE_GNAT_SIGINT="" -else - USE_GNAT_SIGINT="#" -fi - -echo "$as_me:18257: checking if GNAT pragma Unreferenced works" >&5 -echo $ECHO_N "checking if GNAT pragma Unreferenced works... $ECHO_C" >&6 -if test "${cf_cv_pragma_unreferenced+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -rm -rf conftest* *~conftest* -cat >>conftest.ads <>conftest.adb <&5 2>&1 ) ; then - cf_cv_pragma_unreferenced=yes -else - cf_cv_pragma_unreferenced=no -fi -rm -rf conftest* *~conftest* - -fi -echo "$as_me:18288: result: $cf_cv_pragma_unreferenced" >&5 -echo "${ECHO_T}$cf_cv_pragma_unreferenced" >&6 - -# if the pragma is supported, use it (needed in the Trace code). -if test $cf_cv_pragma_unreferenced = yes ; then - PRAGMA_UNREF=TRUE -else - PRAGMA_UNREF=FALSE -fi - -cf_gnat_libraries=no -cf_gnat_projects=no - -echo "$as_me:18301: checking if GNAT supports project files" >&5 -echo $ECHO_N "checking if GNAT supports project files... $ECHO_C" >&6 -case $cf_gnat_version in #(vi -3.[0-9]*) #(vi - ;; -*) - case $cf_cv_system_name in #(vi - cygwin*) #(vi - ;; - *) - mkdir conftest.src conftest.bin conftest.lib - cd conftest.src - rm -rf conftest* *~conftest* - cat >>library.gpr <>confpackage.ads <>confpackage.adb <&5 2>&1 ) ; then - cf_gnat_projects=yes - fi - cd .. - if test -f conftest.lib/confpackage.ali - then - cf_gnat_libraries=yes - fi - rm -rf conftest* *~conftest* - ;; - esac - ;; -esac -echo "$as_me:18369: result: $cf_gnat_projects" >&5 -echo "${ECHO_T}$cf_gnat_projects" >&6 - -if test $cf_gnat_projects = yes -then - echo "$as_me:18374: checking if GNAT supports libraries" >&5 -echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6 - echo "$as_me:18376: result: $cf_gnat_libraries" >&5 -echo "${ECHO_T}$cf_gnat_libraries" >&6 -fi - -if test "$cf_gnat_projects" = yes -then - USE_OLD_MAKERULES="#" - USE_GNAT_PROJECTS="" -else - USE_OLD_MAKERULES="" - USE_GNAT_PROJECTS="#" -fi - -if test "$cf_gnat_libraries" = yes -then - USE_GNAT_LIBRARIES="" -else - USE_GNAT_LIBRARIES="#" -fi - -echo "$as_me:18396: checking for ada-compiler" >&5 -echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6 - -# Check whether --with-ada-compiler or --without-ada-compiler was given. -if test "${with_ada_compiler+set}" = set; then - withval="$with_ada_compiler" - cf_ada_compiler=$withval -else - cf_ada_compiler=gnatmake -fi; - -echo "$as_me:18407: result: $cf_ada_compiler" >&5 -echo "${ECHO_T}$cf_ada_compiler" >&6 - - cf_ada_package=terminal_interface - -echo "$as_me:18412: checking for ada-include" >&5 -echo $ECHO_N "checking for ada-include... $ECHO_C" >&6 - -# Check whether --with-ada-include or --without-ada-include was given. -if test "${with_ada_include+set}" = set; then - withval="$with_ada_include" - -else - withval="${ADA_INCLUDE:-$prefix/share/ada/adainclude}" -fi; if test -n "$prefix/share/ada/adainclude" ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$withval" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval withval="$withval" - case ".$withval" in #(vi - .NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:18448: error: expected a pathname, not \"$withval\"" >&5 -echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi -ADA_INCLUDE="$withval" - -echo "$as_me:18457: result: $ADA_INCLUDE" >&5 -echo "${ECHO_T}$ADA_INCLUDE" >&6 - -echo "$as_me:18460: checking for ada-objects" >&5 -echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6 - -# Check whether --with-ada-objects or --without-ada-objects was given. -if test "${with_ada_objects+set}" = set; then - withval="$with_ada_objects" - -else - withval="${ADA_OBJECTS:-$prefix/lib/ada/adalib}" -fi; if test -n "$prefix/lib/ada/adalib" ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$withval" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval withval="$withval" - case ".$withval" in #(vi - .NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:18496: error: expected a pathname, not \"$withval\"" >&5 -echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi -ADA_OBJECTS="$withval" - -echo "$as_me:18505: result: $ADA_OBJECTS" >&5 -echo "${ECHO_T}$ADA_OBJECTS" >&6 - -echo "$as_me:18508: checking if an Ada95 shared-library should be built" >&5 -echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6 - -# Check whether --with-ada-sharedlib or --without-ada-sharedlib was given. -if test "${with_ada_sharedlib+set}" = set; then - withval="$with_ada_sharedlib" - with_ada_sharedlib=$withval -else - with_ada_sharedlib=no -fi; -echo "$as_me:18518: result: $with_ada_sharedlib" >&5 -echo "${ECHO_T}$with_ada_sharedlib" >&6 - -ADA_SHAREDLIB='lib$(LIB_NAME).so.1' -MAKE_ADA_SHAREDLIB="#" - -if test "x$with_ada_sharedlib" != xno -then - MAKE_ADA_SHAREDLIB= - if test "x$with_ada_sharedlib" != xyes - then - ADA_SHAREDLIB="$with_ada_sharedlib" - fi -fi - - fi - fi -else - cf_with_ada=no -fi - -### Construct the ncurses library-subsets, if any, from this set of keywords: -### none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar -### -### ticlib modules may be a separate library, otherwise contained in termlib. -### termlib modules may be a separate library, otherwise contained in ncurses. -### -### The of "+" or " " between the tokens controls the way the script -### chooses to split module lists into libraries. -### -### (see CF_LIB_RULES). -echo "$as_me:18549: checking for library subsets" >&5 -echo $ECHO_N "checking for library subsets... $ECHO_C" >&6 -LIB_SUBSETS= - -if test "$cf_with_progs" = yes || test "$with_ticlib" != no || test "$with_termcap" != no; then - LIB_SUBSETS="${LIB_SUBSETS}ticlib" - if test "$with_ticlib" != no ; then - LIB_SUBSETS="${LIB_SUBSETS} " - else - LIB_SUBSETS="${LIB_SUBSETS}+" - fi -fi - -LIB_SUBSETS="${LIB_SUBSETS}termlib" -test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo" - -if test "$with_termlib" != no ; then - LIB_SUBSETS="${LIB_SUBSETS} " -else - LIB_SUBSETS="${LIB_SUBSETS}+" -fi - -LIB_SUBSETS="${LIB_SUBSETS}base" - -# Most term-driver calls are to tinfo, but some like init_pair are to the -# base library (so it resides in base). -if test "$with_term_driver" != no ; then - LIB_SUBSETS="${LIB_SUBSETS}+port_drivers" - case $cf_cv_system_name in #(vi - *mingw32*) #(vi - LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" - ;; - *) #(vi - LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo" - ;; - esac -fi - -test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar" -test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs" - -echo "$as_me:18590: result: $LIB_SUBSETS" >&5 -echo "${ECHO_T}$LIB_SUBSETS" >&6 - -### Construct the list of include-directories to be generated - -CPPFLAGS="$CPPFLAGS -I. -I../include" -if test "$srcdir" != "."; then - CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include" -fi -if test "$GCC" != yes; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi - else - CPPFLAGS="$CPPFLAGS -I\${includedir}" - fi -fi - -ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" -if test "$srcdir" != "."; then - ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" -fi -if test "$GCC" != yes; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" -elif test "$includedir" != "/usr/include"; then - if test "$includedir" = '${prefix}/include' ; then - if test $prefix != /usr ; then - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi - else - ACPPFLAGS="$ACPPFLAGS -I\${includedir}" - fi -fi - -### Build up pieces for makefile rules -echo "$as_me:18628: checking default library suffix" >&5 -echo $ECHO_N "checking default library suffix... $ECHO_C" >&6 - - case $DFT_LWR_MODEL in - libtool) DFT_ARG_SUFFIX='' ;; - normal) DFT_ARG_SUFFIX='' ;; - debug) DFT_ARG_SUFFIX='_g' ;; - profile) DFT_ARG_SUFFIX='_p' ;; - shared) DFT_ARG_SUFFIX='' ;; - esac - test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}" -echo "$as_me:18639: result: $DFT_ARG_SUFFIX" >&5 -echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6 - -echo "$as_me:18642: checking default library-dependency suffix" >&5 -echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6 - - case $DFT_LWR_MODEL in #(vi - libtool) #(vi - DFT_LIB_SUFFIX='.la' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - normal) #(vi - DFT_LIB_SUFFIX='.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - debug) #(vi - DFT_LIB_SUFFIX='_g.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - profile) #(vi - DFT_LIB_SUFFIX='_p.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - shared) #(vi - case $cf_cv_system_name in - aix[56]*) #(vi - DFT_LIB_SUFFIX='.a' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - cygwin*) #(vi - DFT_LIB_SUFFIX='.dll' - DFT_DEP_SUFFIX='.dll.a' - ;; - darwin*) #(vi - DFT_LIB_SUFFIX='.dylib' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - DFT_LIB_SUFFIX='.so' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - *) #(vi - DFT_LIB_SUFFIX='.sl' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - esac - ;; - *) DFT_LIB_SUFFIX='.so' - DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX - ;; - esac - esac - test -n "$LIB_SUFFIX" && DFT_LIB_SUFFIX="${LIB_SUFFIX}${DFT_LIB_SUFFIX}" - test -n "$LIB_SUFFIX" && DFT_DEP_SUFFIX="${LIB_SUFFIX}${DFT_DEP_SUFFIX}" -echo "$as_me:18695: result: $DFT_DEP_SUFFIX" >&5 -echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6 - -echo "$as_me:18698: checking default object directory" >&5 -echo $ECHO_N "checking default object directory... $ECHO_C" >&6 - - case $DFT_LWR_MODEL in - libtool) DFT_OBJ_SUBDIR='obj_lo' ;; - normal) DFT_OBJ_SUBDIR='objects' ;; - debug) DFT_OBJ_SUBDIR='obj_g' ;; - profile) DFT_OBJ_SUBDIR='obj_p' ;; - shared) - case $cf_cv_system_name in #(vi - cygwin) #(vi - DFT_OBJ_SUBDIR='objects' ;; - *) - DFT_OBJ_SUBDIR='obj_s' ;; - esac - esac -echo "$as_me:18714: result: $DFT_OBJ_SUBDIR" >&5 -echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6 - -# libtool thinks it can make c++ shared libraries (perhaps only g++) -if test "$cf_with_cxx" = yes ; then -echo "$as_me:18719: checking c++ library-dependency suffix" >&5 -echo $ECHO_N "checking c++ library-dependency suffix... $ECHO_C" >&6 -if test "$with_libtool" != "no"; then - CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX -else - - case normal in #(vi - libtool) #(vi - CXX_LIB_SUFFIX='.la' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - normal) #(vi - CXX_LIB_SUFFIX='.a' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - debug) #(vi - CXX_LIB_SUFFIX='_g.a' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - profile) #(vi - CXX_LIB_SUFFIX='_p.a' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - shared) #(vi - case $cf_cv_system_name in - aix[56]*) #(vi - CXX_LIB_SUFFIX='.a' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - cygwin*) #(vi - CXX_LIB_SUFFIX='.dll' - CXX_DEP_SUFFIX='.dll.a' - ;; - darwin*) #(vi - CXX_LIB_SUFFIX='.dylib' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - CXX_LIB_SUFFIX='.so' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - *) #(vi - CXX_LIB_SUFFIX='.sl' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - esac - ;; - *) CXX_LIB_SUFFIX='.so' - CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX - ;; - esac - esac - test -n "$LIB_SUFFIX" && CXX_LIB_SUFFIX="${LIB_SUFFIX}${CXX_LIB_SUFFIX}" - test -n "$LIB_SUFFIX" && CXX_DEP_SUFFIX="${LIB_SUFFIX}${CXX_DEP_SUFFIX}" -fi -echo "$as_me:18776: result: $CXX_LIB_SUFFIX" >&5 -echo "${ECHO_T}$CXX_LIB_SUFFIX" >&6 - -fi - -# do not want -ldl in build except as needed for -lncurses dependency -if test "$with_dlsym" = yes ; then -if test $DFT_LWR_MODEL = shared || \ - test $DFT_LWR_MODEL = libtool ; then - -# remove dl library from $LIBS -LIBS=`echo "$LIBS" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'` - -fi -fi -### Set up low-level terminfo dependencies for makefiles. - -# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but -# do not need libdl -TICS_LIST= -if test "$with_dlsym" = yes ; then - -# remove dl library from $SHLIB_LIST -TINFO_LIST=`echo "$SHLIB_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'` - -fi - -if test "$with_ticlib" != no ; then - - if test "$with_ticlib" != yes ; then - TICS_NAME=$with_ticlib - TICS_ARG_SUFFIX="${with_ticlib}`echo ${DFT_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}" - else - TICS_ARG_SUFFIX="${TICS_NAME}${DFT_ARG_SUFFIX}" - TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}" - TICS_LIB_SUFFIX="${TICS_NAME}${LIB_SUFFIX}" - fi - TICS_ARGS="-L${LIB_DIR} -l${TICS_LIB_SUFFIX}" -else - TICS_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" -fi - -if test "$with_termlib" != no ; then - - if test "$with_termlib" != yes ; then - TINFO_NAME=$with_termlib - TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`" - TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_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}" - else - TINFO_SUFFIX=${DFT_LIB_SUFFIX} - TINFO_ARG_SUFFIX="${TINFO_NAME}${DFT_ARG_SUFFIX}" - TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}" - TINFO_LIB_SUFFIX="${TINFO_NAME}${LIB_SUFFIX}" - fi - - TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" - TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" - if test "$DFT_LWR_MODEL" = "libtool"; then - TEST_ARGS="${TEST_DEPS}" - TEST_ARG2="${TEST_DEP2}" - TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS" - TICS_LIST="$SHLIB_LIST $TEST_ARGS" - SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS" - else - TEST_ARGS="-l${TINFO_ARG_SUFFIX}" - TEST_ARG2="-l${TINFO_ARG_SUFFIX}" - TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" - TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS" - SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" - fi -else - # the next lines are needed for linking libtic over libncurses - TINFO_NAME=${LIB_NAME} - TINFO_SUFFIX=${DFT_LIB_SUFFIX} - TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX} - if test "$with_tic_depends" = yes ; then - TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}" - else - TICS_LIST="$SHLIB_LIST" - fi - - TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" -fi - -if test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - # "lib" files have ".dll.a" suffix, "cyg" files have ".dll" - TINFO_SUFFIX=.dll - ;; - esac -fi - -if test "$with_dlsym" = yes ; then - -# remove dl library from $TICS_LIST -TICS_LIST=`echo "$TICS_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'` - -fi - -if test "$DFT_LWR_MODEL" = "libtool"; then - OBJEXT=lo -fi - -# needed for Ada95 -TINFO_ARGS2=`echo "$TINFO_ARGS" | sed -e 's,-L\.\./,-L../../,'` - -case $DFT_LWR_MODEL in -normal|debug|profile) - -if test "$GCC" = yes ; then - case $cf_cv_system_name in #( - OS/2*|os2*|aix[4]*|solaris2.1[0-9]|darwin*) #( vi - LDFLAGS_STATIC= - LDFLAGS_SHARED= - ;; - *) #( normally, except when broken - LDFLAGS_STATIC=-static - LDFLAGS_SHARED=-dynamic - ;; - esac -else - case $cf_cv_system_name in #( - aix[456]*) #( from ld manpage - LDFLAGS_STATIC=-bstatic - LDFLAGS_SHARED=-bdynamic - ;; - hpux*) #( from ld manpage 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 - LDFLAGS_STATIC=-Bstatic - LDFLAGS_SHARED=-Bdynamic - ;; - osf[45]*) #( from ld manpage osf4.0d, osf5.1 - # alternative "-oldstyle_liblookup" (not in cc manpage) - LDFLAGS_STATIC=-noso - LDFLAGS_SHARED=-so_archive - ;; - solaris2*) - LDFLAGS_STATIC=-Bstatic - LDFLAGS_SHARED=-Bdynamic - ;; - esac -fi - -if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED" -then - echo "$as_me:18930: 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 < -int cf_ldflags_static(FILE *fp) { return fflush(fp); } -EOF - if { (eval echo "$as_me:18939: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:18942: \$? = $ac_status" >&5 - (exit $ac_status); } ; then - ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&5 1>/dev/null - ( eval $RANLIB libconftest.a ) 2>&5 >/dev/null - fi - rm -f conftest.* - - cf_save_LIBS="$LIBS" - - LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 18953 "configure" -#include "confdefs.h" - -#line 18956 "configure" -#include -int cf_ldflags_static(FILE *fp); - -int -main () -{ - - return cf_ldflags_static(stdin); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:18971: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:18974: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:18977: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:18980: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_ldflags_static=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_ldflags_static=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - - rm -f libconftest.* - LIBS="$cf_save_LIBS" - - echo "$as_me:18993: result: $cf_ldflags_static" >&5 -echo "${ECHO_T}$cf_ldflags_static" >&6 - - if test $cf_ldflags_static != yes - then - LDFLAGS_STATIC= - LDFLAGS_SHARED= - fi -else - LDFLAGS_STATIC= - LDFLAGS_SHARED= -fi - - ;; -esac - -echo "$as_me:19009: checking where we will install curses.h" >&5 -echo $ECHO_N "checking where we will install curses.h... $ECHO_C" >&6 -test "$with_overwrite" = no && \ -test "x$includedir" = 'x${prefix}/include' && \ - includedir='${prefix}/include/ncurses'${LIB_SUFFIX} -echo "$as_me:19014: result: $includedir" >&5 -echo "${ECHO_T}$includedir" >&6 - -### Resolve a conflict between normal and wide-curses by forcing applications -### that will need libutf8 to add it to their configure script. -if test "$with_overwrite" != no ; then -if test "$NCURSES_LIBUTF8" = 1 ; then - NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)' - { echo "$as_me:19022: 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 -WITH_OVERWRITE=$with_overwrite - -# used to separate tack out of the tree -NCURSES_TREE= - -### predefined stuff for the test programs -cat >>confdefs.h <<\EOF -#define HAVE_SLK_COLOR 1 -EOF - -### Construct the list of subdirectories for which we'll customize makefiles -### with the appropriate compile-rules. - -echo "$as_me:19039: checking for src modules" >&5 -echo $ECHO_N "checking for src modules... $ECHO_C" >&6 - -# dependencies and linker-arguments for test-programs -TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS" -TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2" -if test "$DFT_LWR_MODEL" = "libtool"; then - TEST_ARGS="${TEST_DEPS}" - TEST_ARG2="${TEST_DEP2}" -else - TEST_ARGS="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARGS" - TEST_ARG2="-l${LIB_NAME}${DFT_ARG_SUFFIX} $TEST_ARG2" -fi - -cf_cv_src_modules= -for cf_dir in $modules_to_build -do - if test -f $srcdir/$cf_dir/modules; then - - # We may/may not have tack in the distribution, though the - # makefile is. - if test $cf_dir = tack ; then - if test ! -f $srcdir/${cf_dir}/${cf_dir}.h; then - continue - fi - fi - - if test -z "$cf_cv_src_modules"; then - cf_cv_src_modules=$cf_dir - else - cf_cv_src_modules="$cf_cv_src_modules $cf_dir" - fi - - # Make the ncurses_cfg.h file record the library interface files as - # well. These are header files that are the same name as their - # directory. Ncurses is the only library that does not follow - # that pattern. - if test $cf_dir = tack ; then - continue - elif test -f $srcdir/${cf_dir}/${cf_dir}.h; then - -cf_have_include=`echo "$cf_dir" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <>confdefs.h <&5 -echo "${ECHO_T}$cf_cv_src_modules" >&6 - -TEST_ARGS="-L${LIB_DIR} $TEST_ARGS" -TEST_ARG2="-L${LIB_2ND} $TEST_ARG2" - -SRC_SUBDIRS= -if test "x$cf_with_manpages" != xno ; then - SRC_SUBDIRS="$SRC_SUBDIRS man" -fi -SRC_SUBDIRS="$SRC_SUBDIRS include" -for cf_dir in $cf_cv_src_modules -do - SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir" -done -if test "x$cf_with_tests" != "xno" ; then - SRC_SUBDIRS="$SRC_SUBDIRS test" -fi -test -z "$MAKE_TERMINFO" && SRC_SUBDIRS="$SRC_SUBDIRS misc" -test "$cf_with_cxx_binding" != no && SRC_SUBDIRS="$SRC_SUBDIRS c++" - -ADA_SUBDIRS= -if test "$cf_cv_prog_gnat_correct" = yes && test -f $srcdir/Ada95/Makefile.in; then - SRC_SUBDIRS="$SRC_SUBDIRS Ada95" - ADA_SUBDIRS="gen src" - if test "x$cf_with_tests" != "xno" ; then - ADA_SUBDIRS="$ADA_SUBDIRS samples" - fi -fi - -SUB_MAKEFILES= -for cf_dir in $SRC_SUBDIRS -do - SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile" -done - -if test -n "$ADA_SUBDIRS"; then - for cf_dir in $ADA_SUBDIRS - do - SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile" - done - -fi - -if test "$cf_with_ada" != "no" && test "$cf_cv_prog_gnat_correct" != "no"; then - SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${DFT_ARG_SUFFIX}-config:Ada95/gen/adacurses-config.in" - SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${DFT_ARG_SUFFIX}-config.1:man/MKada_config.in" -fi - -DIRS_TO_MAKE="lib" -for cf_item in $cf_list_models -do - - case $cf_item in - libtool) cf_subdir='obj_lo' ;; - normal) cf_subdir='objects' ;; - debug) cf_subdir='obj_g' ;; - profile) cf_subdir='obj_p' ;; - shared) - case $cf_cv_system_name in #(vi - cygwin) #(vi - cf_subdir='objects' ;; - *) - cf_subdir='obj_s' ;; - esac - esac - - for cf_item2 in $DIRS_TO_MAKE - do - test $cf_item2 = $cf_subdir && break - done - test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir" -done -for cf_dir in $DIRS_TO_MAKE -do - test ! -d $cf_dir && mkdir $cf_dir -done - -# symbols that differ when compiling Ada95 by itself. -NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib' - -# values to use as strings -cat >>confdefs.h <>confdefs.h <&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_TIC_PATH+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $TIC_PATH in - [\\/]* | ?:[\\/]*) - ac_cv_path_TIC_PATH="$TIC_PATH" # Let the user override the test with a path. - ;; - *) - ac_save_IFS=$IFS; IFS=$ac_path_separator -ac_dummy="$PATH:/usr/local/ncurses/bin" -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_TIC_PATH="$ac_dir/$ac_word" - echo "$as_me:19325: found $ac_dir/$ac_word" >&5 - break -fi -done - - test -z "$ac_cv_path_TIC_PATH" && ac_cv_path_TIC_PATH="unknown" - ;; -esac -fi -TIC_PATH=$ac_cv_path_TIC_PATH - -if test -n "$TIC_PATH"; then - echo "$as_me:19337: result: $TIC_PATH" >&5 -echo "${ECHO_T}$TIC_PATH" >&6 -else - echo "$as_me:19340: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -if test -n "$FALLBACK_LIST" -then - if test "$TIC_PATH" = unknown - then - { echo "$as_me:19348: WARNING: no tic program found for fallbacks" >&5 -echo "$as_me: WARNING: no tic program found for fallbacks" >&2;} - fi -fi - -if test "x$cf_with_tests" != xno ; then - MAKE_TESTS= -else - MAKE_TESTS="#" -fi - -ADAHTML_DIR=../../doc/html/ada - -SUB_SCRIPTS= -case $cf_cv_system_name in #(vi -*mingw32*) #(vi - SUB_SCRIPTS="mk-dlls.sh" - ;; -esac - -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 $SUB_SCRIPTS $SUB_MAKEFILES Makefile" -ac_config_commands="$ac_config_commands default" -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 -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overriden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if cmp -s $cache_file confcache; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -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:19449: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=\${CONFIG_SHELL-$SHELL} -ac_cs_invocation="\$0 \$@" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } - -exec 6>&1 - -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\EOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." -EOF - -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:19625: 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;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:19644: 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;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -exec 5>>config.log -cat >&5 << _ACEOF - -## ----------------------- ## -## Running config.status. ## -## ----------------------- ## - -This file was extended by $as_me 2.52.20101002, executed with - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - > $ac_cs_invocation -on `(hostname || uname -n) 2>/dev/null | sed 1q` - -_ACEOF -EOF - -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "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/termcap.h" ) CONFIG_FILES="$CONFIG_FILES include/termcap.h" ;; - "include/unctrl.h" ) CONFIG_FILES="$CONFIG_FILES include/unctrl.h" ;; - "$SUB_SCRIPTS" ) CONFIG_FILES="$CONFIG_FILES $SUB_SCRIPTS" ;; - "$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:19750: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - -EOF - -cat >>$CONFIG_STATUS <\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@DEFS@,$DEFS,;t t -s,@LIBS@,$LIBS,;t t -s,@top_builddir@,$top_builddir,;t t -s,@EGREP@,$EGREP,;t t -s,@NCURSES_MAJOR@,$NCURSES_MAJOR,;t t -s,@NCURSES_MINOR@,$NCURSES_MINOR,;t t -s,@NCURSES_PATCH@,$NCURSES_PATCH,;t t -s,@cf_cv_rel_version@,$cf_cv_rel_version,;t t -s,@cf_cv_abi_version@,$cf_cv_abi_version,;t t -s,@cf_cv_builtin_bool@,$cf_cv_builtin_bool,;t t -s,@cf_cv_header_stdbool_h@,$cf_cv_header_stdbool_h,;t t -s,@cf_cv_type_of_bool@,$cf_cv_type_of_bool,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@target@,$target,;t t -s,@target_cpu@,$target_cpu,;t t -s,@target_vendor@,$target_vendor,;t t -s,@target_os@,$target_os,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t -s,@PROG_EXT@,$PROG_EXT,;t t -s,@LDCONFIG@,$LDCONFIG,;t t -s,@CXX@,$CXX,;t t -s,@CXXFLAGS@,$CXXFLAGS,;t t -s,@ac_ct_CXX@,$ac_ct_CXX,;t t -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,@LINT@,$LINT,;t t -s,@LINT_OPTS@,$LINT_OPTS,;t t -s,@LN_S@,$LN_S,;t t -s,@PKG_CONFIG@,$PKG_CONFIG,;t t -s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t -s,@PKG_CONFIG_LIBDIR@,$PKG_CONFIG_LIBDIR,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -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 -s,@ac_ct_LD@,$ac_ct_LD,;t t -s,@AR@,$AR,;t t -s,@ac_ct_AR@,$ac_ct_AR,;t t -s,@ARFLAGS@,$ARFLAGS,;t t -s,@DESTDIR@,$DESTDIR,;t t -s,@BUILD_CC@,$BUILD_CC,;t t -s,@BUILD_CPP@,$BUILD_CPP,;t t -s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t -s,@BUILD_CPPFLAGS@,$BUILD_CPPFLAGS,;t t -s,@BUILD_LDFLAGS@,$BUILD_LDFLAGS,;t t -s,@BUILD_LIBS@,$BUILD_LIBS,;t t -s,@BUILD_EXEEXT@,$BUILD_EXEEXT,;t t -s,@BUILD_OBJEXT@,$BUILD_OBJEXT,;t t -s,@cf_list_models@,$cf_list_models,;t t -s,@LIBTOOL_VERSION@,$LIBTOOL_VERSION,;t t -s,@LIBTOOL@,$LIBTOOL,;t t -s,@LT_UNDEF@,$LT_UNDEF,;t t -s,@LIBTOOL_CXX@,$LIBTOOL_CXX,;t t -s,@LIBTOOL_OPTS@,$LIBTOOL_OPTS,;t t -s,@LIB_CREATE@,$LIB_CREATE,;t t -s,@LIB_OBJECT@,$LIB_OBJECT,;t t -s,@LIB_SUFFIX@,$LIB_SUFFIX,;t t -s,@LIB_PREP@,$LIB_PREP,;t t -s,@LIB_CLEAN@,$LIB_CLEAN,;t t -s,@LIB_COMPILE@,$LIB_COMPILE,;t t -s,@LIB_LINK@,$LIB_LINK,;t t -s,@LIB_INSTALL@,$LIB_INSTALL,;t t -s,@LIB_UNINSTALL@,$LIB_UNINSTALL,;t t -s,@DFT_LWR_MODEL@,$DFT_LWR_MODEL,;t t -s,@DFT_UPR_MODEL@,$DFT_UPR_MODEL,;t t -s,@TICS_NAME@,$TICS_NAME,;t t -s,@TINFO_NAME@,$TINFO_NAME,;t t -s,@LIB_NAME@,$LIB_NAME,;t t -s,@LIB_PREFIX@,$LIB_PREFIX,;t t -s,@CC_G_OPT@,$CC_G_OPT,;t t -s,@CXX_G_OPT@,$CXX_G_OPT,;t t -s,@LD_MODEL@,$LD_MODEL,;t t -s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t -s,@LD_RPATH_OPT@,$LD_RPATH_OPT,;t t -s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t -s,@MK_SHARED_LIB@,$MK_SHARED_LIB,;t t -s,@LINK_PROGS@,$LINK_PROGS,;t t -s,@LINK_TESTS@,$LINK_TESTS,;t t -s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t -s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t -s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t -s,@INSTALL_LIB@,$INSTALL_LIB,;t t -s,@cf_ldd_prog@,$cf_ldd_prog,;t t -s,@TERMINFO_SRC@,$TERMINFO_SRC,;t t -s,@FALLBACK_LIST@,$FALLBACK_LIST,;t t -s,@WHICH_XTERM@,$WHICH_XTERM,;t t -s,@TERMINFO_DIRS@,$TERMINFO_DIRS,;t t -s,@TERMINFO@,$TERMINFO,;t t -s,@MAKE_TERMINFO@,$MAKE_TERMINFO,;t t -s,@USE_BIG_STRINGS@,$USE_BIG_STRINGS,;t t -s,@TERMPATH@,$TERMPATH,;t t -s,@BROKEN_LINKER@,$BROKEN_LINKER,;t t -s,@NCURSES_CH_T@,$NCURSES_CH_T,;t t -s,@NCURSES_LIBUTF8@,$NCURSES_LIBUTF8,;t t -s,@NEED_WCHAR_H@,$NEED_WCHAR_H,;t t -s,@NCURSES_MBSTATE_T@,$NCURSES_MBSTATE_T,;t t -s,@NCURSES_WCHAR_T@,$NCURSES_WCHAR_T,;t t -s,@NCURSES_WINT_T@,$NCURSES_WINT_T,;t t -s,@NCURSES_OK_WCHAR_T@,$NCURSES_OK_WCHAR_T,;t t -s,@NCURSES_OK_WINT_T@,$NCURSES_OK_WINT_T,;t t -s,@cf_cv_enable_lp64@,$cf_cv_enable_lp64,;t t -s,@NCURSES_TPARM_VARARGS@,$NCURSES_TPARM_VARARGS,;t t -s,@NCURSES_BOOL@,$NCURSES_BOOL,;t t -s,@TERMINFO_CAPS@,$TERMINFO_CAPS,;t t -s,@NCURSES_OSPEED@,$NCURSES_OSPEED,;t t -s,@NCURSES_CCHARW_MAX@,$NCURSES_CCHARW_MAX,;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_MOUSE_VERSION@,$NCURSES_MOUSE_VERSION,;t t -s,@NCURSES_SBOOL@,$NCURSES_SBOOL,;t t -s,@NCURSES_XNAMES@,$NCURSES_XNAMES,;t t -s,@NCURSES_INTEROP_FUNCS@,$NCURSES_INTEROP_FUNCS,;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 -s,@NCURSES_OPAQUE@,$NCURSES_OPAQUE,;t t -s,@NCURSES_SIZE_T@,$NCURSES_SIZE_T,;t t -s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t -s,@ECHO_LINK@,$ECHO_LINK,;t t -s,@ADAFLAGS@,$ADAFLAGS,;t t -s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t -s,@EXTRA_CXXFLAGS@,$EXTRA_CXXFLAGS,;t t -s,@ADA_TRACE@,$ADA_TRACE,;t t -s,@MATH_LIB@,$MATH_LIB,;t t -s,@NCURSES_INLINE@,$NCURSES_INLINE,;t t -s,@cf_cv_typeof_chtype@,$cf_cv_typeof_chtype,;t t -s,@cf_cv_1UL@,$cf_cv_1UL,;t t -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,@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,@gnat_exists@,$gnat_exists,;t t -s,@M4_exists@,$M4_exists,;t t -s,@cf_ada_make@,$cf_ada_make,;t t -s,@cf_compile_generics@,$cf_compile_generics,;t t -s,@cf_generic_objects@,$cf_generic_objects,;t t -s,@USE_GNAT_SIGINT@,$USE_GNAT_SIGINT,;t t -s,@PRAGMA_UNREF@,$PRAGMA_UNREF,;t t -s,@USE_OLD_MAKERULES@,$USE_OLD_MAKERULES,;t t -s,@USE_GNAT_PROJECTS@,$USE_GNAT_PROJECTS,;t t -s,@USE_GNAT_LIBRARIES@,$USE_GNAT_LIBRARIES,;t t -s,@cf_ada_compiler@,$cf_ada_compiler,;t t -s,@cf_ada_package@,$cf_ada_package,;t t -s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t -s,@ADA_OBJECTS@,$ADA_OBJECTS,;t t -s,@ADA_SHAREDLIB@,$ADA_SHAREDLIB,;t t -s,@MAKE_ADA_SHAREDLIB@,$MAKE_ADA_SHAREDLIB,;t t -s,@ACPPFLAGS@,$ACPPFLAGS,;t t -s,@DFT_ARG_SUFFIX@,$DFT_ARG_SUFFIX,;t t -s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t -s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t -s,@CXX_LIB_SUFFIX@,$CXX_LIB_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 -s,@TICS_ARGS@,$TICS_ARGS,;t t -s,@TINFO_ARG_SUFFIX@,$TINFO_ARG_SUFFIX,;t t -s,@TINFO_DEP_SUFFIX@,$TINFO_DEP_SUFFIX,;t t -s,@TINFO_LIB_SUFFIX@,$TINFO_LIB_SUFFIX,;t t -s,@TINFO_ARGS@,$TINFO_ARGS,;t t -s,@TINFO_ARGS2@,$TINFO_ARGS2,;t t -s,@LDFLAGS_STATIC@,$LDFLAGS_STATIC,;t t -s,@LDFLAGS_SHARED@,$LDFLAGS_SHARED,;t t -s,@WITH_OVERWRITE@,$WITH_OVERWRITE,;t t -s,@TICS_LIST@,$TICS_LIST,;t t -s,@TINFO_LIST@,$TINFO_LIST,;t t -s,@SHLIB_LIST@,$SHLIB_LIST,;t t -s,@NCURSES_TREE@,$NCURSES_TREE,;t t -s,@TEST_ARGS@,$TEST_ARGS,;t t -s,@TEST_DEPS@,$TEST_DEPS,;t t -s,@TEST_ARG2@,$TEST_ARG2,;t t -s,@TEST_DEP2@,$TEST_DEP2,;t t -s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t -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_TERMIO_H@,$HAVE_TERMIO_H,;t t -s,@HAVE_TERMIOS_H@,$HAVE_TERMIOS_H,;t t -s,@MAKE_PC_FILES@,$MAKE_PC_FILES,;t t -s,@cross_compiling@,$cross_compiling,;t t -s,@TIC_PATH@,$TIC_PATH,;t t -s,@MAKE_TESTS@,$MAKE_TESTS,;t t -s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t -CEOF - -EOF - - cat >>$CONFIG_STATUS <<\EOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # 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 - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -EOF -cat >>$CONFIG_STATUS <<\EOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` - else - ac_dir_suffix= ac_dots= - fi - - case $srcdir in - .) ac_srcdir=. - if test -z "$ac_dots"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_dots$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_dots$srcdir ;; - esac - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_dots$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:20160: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - configure_input="Generated automatically from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:20178: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:20191: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -EOF -cat >>$CONFIG_STATUS <<\EOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_iB='\([ ]\),\1#\2define\3' -ac_iC=' ' -ac_iD='\4,;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:20257: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:20268: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:20281: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -EOF - -# Transform confdefs.h into a list of #define's. We won't use it as a sed -# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to -# be either 'cat' or 'sort'. -cat confdefs.h | uniq >conftest.vals - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -echo ' rm -f conftest.frag' >> $CONFIG_STATUS -while grep . conftest.vals >/dev/null -do - # Write chunks of a limited-size here document to conftest.frag. - echo ' cat >> conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> $CONFIG_STATUS - echo 'CEOF' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -# Run sed to substitute the contents of conftest.frag into $tmp/in at the -# marker @DEFS@. -echo ' cat >> conftest.edit < $tmp/out -rm -f $tmp/in -mv $tmp/out $tmp/in -rm -f conftest.edit conftest.frag -' >> $CONFIG_STATUS - -cat >>$CONFIG_STATUS <<\EOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated automatically by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - 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:20339: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - fi - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -done -EOF -cat >>$CONFIG_STATUS <<\EOF -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - - case $ac_dest in - default ) -if test "x$cf_with_tests" != xno ; then - -for cf_dir in test -do - if test ! -d $srcdir/$cf_dir; then - continue - elif test -f $srcdir/$cf_dir/programs; then - $AWK -f $srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LINK" $srcdir/$cf_dir/programs >>$cf_dir/Makefile - fi -done - -fi - - case $cf_cv_system_name in #(vi - OS/2*|os2*) #(vi - LIB_PREFIX='' - ;; - *) LIB_PREFIX='lib' - ;; - esac -cf_prefix=$LIB_PREFIX - -if test $cf_cv_shlib_version = cygdll ; then - TINFO_NAME=$TINFO_ARG_SUFFIX - TINFO_SUFFIX=.dll -fi - -if test -n "$TINFO_SUFFIX" ; then - case $TINFO_SUFFIX in - tw*) - TINFO_NAME="${TINFO_NAME}tw" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^tw//'` - ;; - t*) - TINFO_NAME="${TINFO_NAME}t" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^t//'` - ;; - w*) - TINFO_NAME="${TINFO_NAME}w" - TINFO_SUFFIX=`echo $TINFO_SUFFIX | sed 's/^w//'` - ;; - esac -fi - -for cf_dir in $SRC_SUBDIRS -do - if test ! -d $srcdir/$cf_dir ; then - continue - elif test -f $srcdir/$cf_dir/modules; then - - SHARED_LIB= - LIBS_TO_MAKE= - for cf_item in $cf_LIST_MODELS - do - - case $cf_item in #(vi - libtool) #(vi - cf_suffix='.la' - cf_depsuf=$cf_suffix - ;; - normal) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - debug) #(vi - cf_suffix='_g.a' - cf_depsuf=$cf_suffix - ;; - profile) #(vi - cf_suffix='_p.a' - cf_depsuf=$cf_suffix - ;; - shared) #(vi - case $cf_cv_system_name in - aix[56]*) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - cygwin*) #(vi - cf_suffix='.dll' - cf_depsuf='.dll.a' - ;; - darwin*) #(vi - cf_suffix='.dylib' - cf_depsuf=$cf_suffix - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - *) #(vi - cf_suffix='.sl' - cf_depsuf=$cf_suffix - ;; - esac - ;; - *) cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - esac - esac - test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}" - test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}" - - if test $cf_item = shared ; then - if test "$cf_cv_do_symlinks" = yes ; then - case "$cf_cv_shlib_version" in #(vi - rel) #(vi - case "$cf_cv_system_name" in #(vi - darwin*) - case .${LIB_SUFFIX} in - .tw*) - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_suffix=tw'.${REL_VERSION}'"$cf_suffix" - ;; - .t*) - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_suffix=t'.${REL_VERSION}'"$cf_suffix" - ;; - .w*) - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_suffix=w'.${REL_VERSION}'"$cf_suffix" - ;; - *) - cf_suffix='.${REL_VERSION}'"$cf_suffix" - ;; - esac - ;; #(vi - *) cf_suffix="$cf_suffix"'.${REL_VERSION}' ;; - esac - ;; - abi) - case "$cf_cv_system_name" in #(vi - darwin*) - case .${LIB_SUFFIX} in - .tw*) - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_suffix=tw'.${ABI_VERSION}'"$cf_suffix" - ;; - .t*) - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_suffix=t'.${ABI_VERSION}'"$cf_suffix" - ;; - .w*) - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_suffix=w'.${ABI_VERSION}'"$cf_suffix" - ;; - *) - cf_suffix='.${ABI_VERSION}'"$cf_suffix" - ;; - esac - ;; #(vi - *) cf_suffix="$cf_suffix"'.${ABI_VERSION}' ;; - esac - ;; - esac - fi - # cygwin needs import library, and has unique naming convention - # use autodetected ${cf_prefix} for import lib and static lib, but - # use 'cyg' prefix for shared lib. - if test $cf_cv_shlib_version = cygdll ; then - cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` - LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/cyg${cf_dir}${cf_cygsuf}" - continue - fi - fi - LIBS_TO_MAKE="$LIBS_TO_MAKE ../lib/${cf_prefix}${cf_dir}${cf_suffix}" - done - - if test $cf_dir = ncurses ; then - cf_subsets="$LIB_SUBSETS" - cf_r_parts="$cf_subsets" - cf_liblist="$LIBS_TO_MAKE" - - while test -n "$cf_r_parts" - do - cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'` - cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[^ ]* //'` - if test "$cf_l_parts" != "$cf_r_parts" ; then - cf_item= - case $cf_l_parts in #(vi - *termlib*) #(vi - cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TINFO_LIB_SUFFIX}%g` - ;; - *ticlib*) - cf_item=`echo $cf_liblist |sed -e s%${LIB_NAME}${LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g` - ;; - *) - break - ;; - esac - if test -n "$cf_item"; then - LIBS_TO_MAKE="$cf_item $LIBS_TO_MAKE" - fi - else - break - fi - done - else - cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'` - fi - - sed -e "s%@LIBS_TO_MAKE@%$LIBS_TO_MAKE%" \ - -e "s%@SHARED_LIB@%$SHARED_LIB%" \ - $cf_dir/Makefile >$cf_dir/Makefile.out - mv $cf_dir/Makefile.out $cf_dir/Makefile - - $AWK -f $srcdir/mk-0th.awk \ - libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - - for cf_subset in $cf_subsets - do - cf_subdirs= - for cf_item in $cf_LIST_MODELS - do - echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})" - -cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - case $cf_item in #(vi - libtool) #(vi - cf_suffix='.la' - cf_depsuf=$cf_suffix - ;; - normal) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - debug) #(vi - cf_suffix='_g.a' - cf_depsuf=$cf_suffix - ;; - profile) #(vi - cf_suffix='_p.a' - cf_depsuf=$cf_suffix - ;; - shared) #(vi - case $cf_cv_system_name in - aix[56]*) #(vi - cf_suffix='.a' - cf_depsuf=$cf_suffix - ;; - cygwin*) #(vi - cf_suffix='.dll' - cf_depsuf='.dll.a' - ;; - darwin*) #(vi - cf_suffix='.dylib' - cf_depsuf=$cf_suffix - ;; - hpux*) #(vi - case $target in - ia64*) #(vi - cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - *) #(vi - cf_suffix='.sl' - cf_depsuf=$cf_suffix - ;; - esac - ;; - *) cf_suffix='.so' - cf_depsuf=$cf_suffix - ;; - esac - esac - test -n "$LIB_SUFFIX" && cf_suffix="${LIB_SUFFIX}${cf_suffix}" - test -n "$LIB_SUFFIX" && cf_depsuf="${LIB_SUFFIX}${cf_depsuf}" - - case $cf_item in - libtool) cf_subdir='obj_lo' ;; - normal) cf_subdir='objects' ;; - debug) cf_subdir='obj_g' ;; - profile) cf_subdir='obj_p' ;; - shared) - case $cf_cv_system_name in #(vi - cygwin) #(vi - cf_subdir='objects' ;; - *) - cf_subdir='obj_s' ;; - esac - esac - - # Test for case where we build libtinfo with a different name. - cf_libname=$cf_dir - if test $cf_dir = ncurses ; then - case $cf_subset in - *base*) - cf_libname=${cf_libname}$LIB_SUFFIX - ;; - *termlib*) - cf_libname=$TINFO_LIB_SUFFIX - ;; - ticlib*) - cf_libname=$TICS_LIB_SUFFIX - ;; - esac - else - cf_libname=${cf_libname}$LIB_SUFFIX - fi - if test -n "${DFT_ARG_SUFFIX}" ; then - # undo $LIB_SUFFIX add-on in CF_LIB_SUFFIX - cf_suffix=`echo $cf_suffix |sed -e "s%^${LIB_SUFFIX}%%"` - fi - - # These dependencies really are for development, not - # builds, but they are useful in porting, too. - cf_depend="../include/ncurses_cfg.h" - if test "$srcdir" = "."; then - cf_reldir="." - else - cf_reldir="\${srcdir}" - fi - - if test -f $srcdir/$cf_dir/$cf_dir.priv.h; then - cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h" - elif test -f $srcdir/$cf_dir/curses.priv.h; then - cf_depend="$cf_depend $cf_reldir/curses.priv.h" - fi - - cf_dir_suffix= - old_cf_suffix="$cf_suffix" - if test "$cf_cv_shlib_version_infix" = yes ; then - if test -n "$LIB_SUFFIX" ; then - case $LIB_SUFFIX in - tw*) - cf_libname=`echo $cf_libname | sed 's/tw$//'` - cf_suffix=`echo $cf_suffix | sed 's/^tw//'` - cf_dir_suffix=tw - ;; - t*) - cf_libname=`echo $cf_libname | sed 's/t$//'` - cf_suffix=`echo $cf_suffix | sed 's/^t//'` - cf_dir_suffix=t - ;; - w*) - cf_libname=`echo $cf_libname | sed 's/w$//'` - cf_suffix=`echo $cf_suffix | sed 's/^w//'` - cf_dir_suffix=w - ;; - esac - fi - fi - - $AWK -f $srcdir/mk-1st.awk \ - name=${cf_libname}${cf_dir_suffix} \ - traces=$LIB_TRACING \ - MODEL=$cf_ITEM \ - model=$cf_subdir \ - prefix=$cf_prefix \ - suffix=$cf_suffix \ - subset=$cf_subset \ - SymLink="$LN_S" \ - TermlibRoot=$TINFO_NAME \ - TermlibSuffix=$TINFO_SUFFIX \ - ShlibVer=$cf_cv_shlib_version \ - ShlibVerInfix=$cf_cv_shlib_version_infix \ - ReLink=${cf_cv_do_relink:-no} \ - DoLinks=$cf_cv_do_symlinks \ - rmSoLocs=$cf_cv_rm_so_locs \ - ldconfig="$LDCONFIG" \ - overwrite=$WITH_OVERWRITE \ - depend="$cf_depend" \ - host="$host" \ - libtool_version="$LIBTOOL_VERSION" \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - - cf_suffix="$old_cf_suffix" - - for cf_subdir2 in $cf_subdirs lib - do - test $cf_subdir = $cf_subdir2 && break - done - test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \ - $AWK -f $srcdir/mk-2nd.awk \ - name=$cf_dir \ - traces=$LIB_TRACING \ - MODEL=$cf_ITEM \ - model=$cf_subdir \ - subset=$cf_subset \ - srcdir=$srcdir \ - echo=$WITH_ECHO \ - crenames=$cf_cv_prog_CC_c_o \ - cxxrenames=$cf_cv_prog_CXX_c_o \ - $srcdir/$cf_dir/modules >>$cf_dir/Makefile - cf_subdirs="$cf_subdirs $cf_subdir" - done - done - fi - - echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >>Makefile -done - -for cf_dir in $SRC_SUBDIRS -do - if test ! -d $srcdir/$cf_dir ; then - continue - fi - - if test -f $cf_dir/Makefile ; then - case "$cf_dir" in - Ada95) #(vi - echo 'libs \' >> Makefile - echo 'install.libs \' >> Makefile - echo 'uninstall.libs ::' >> Makefile - echo ' cd '$cf_dir' && ${MAKE} ${CF_MFLAGS} $@' >> Makefile - ;; - esac - fi - - if test -f $srcdir/$cf_dir/modules; then - echo >> Makefile - if test -f $srcdir/$cf_dir/headers; then -cat >> Makefile <> Makefile -fi -cat >> Makefile <> Makefile <> Makefile <> Makefile <> Makefile <> Makefile <headers.sh <>headers.sh </<\$END\/\$NAME>/" >> \$TMPSED - done - ;; -*) - echo "" >> \$TMPSED - ;; -esac -CF_EOF - -else - cat >>headers.sh <//" >> \$TMPSED - NAME=ncurses.h - fi - echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED - done - ;; -*) - echo "s///" >> \$TMPSED - ;; -esac -CF_EOF -fi -cat >>headers.sh < \$TMPSRC -NAME=\`basename \$SRC\` -CF_EOF -if test $WITH_CURSES_H != yes; then - cat >>headers.sh <>headers.sh <>$cf_dir/Makefile - fi - - if test -f $srcdir/$cf_dir/modules; then - if test "$cf_dir" != "c++" ; then - cat >>$cf_dir/Makefile <<"CF_EOF" -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. -CF_EOF - fi - fi -done - -if test "x$cf_with_ada" != xno ; then -if test -z "$USE_OLD_MAKERULES" ; then - $AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile -fi -fi - ;; - esac -done -EOF - -cat >>$CONFIG_STATUS <<\EOF - -{ (exit 0); exit 0; } -EOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - exec 5>/dev/null - $SHELL $CONFIG_STATUS || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi -${MAKE:-make} preinstall diff --git a/deps/ncurses-5.9/configure.in b/deps/ncurses-5.9/configure.in deleted file mode 100644 index d5bc841..0000000 --- a/deps/ncurses-5.9/configure.in +++ /dev/null @@ -1,2002 +0,0 @@ -dnl*************************************************************************** -dnl Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * -dnl * -dnl Permission is hereby granted, free of charge, to any person obtaining a * -dnl copy of this software and associated documentation files (the * -dnl "Software"), to deal in the Software without restriction, including * -dnl without limitation the rights to use, copy, modify, merge, publish, * -dnl distribute, distribute with modifications, sublicense, and/or sell * -dnl copies of the Software, and to permit persons to whom the Software is * -dnl furnished to do so, subject to the following conditions: * -dnl * -dnl The above copyright notice and this permission notice shall be included * -dnl in all copies or substantial portions of the Software. * -dnl * -dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * -dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * -dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * -dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * -dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * -dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * -dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * -dnl * -dnl Except as contained in this notice, the name(s) of the above copyright * -dnl holders shall not be used in advertising or otherwise to promote the * -dnl sale, use or other dealings in this Software without prior written * -dnl authorization. * -dnl*************************************************************************** -dnl -dnl Author: Thomas E. Dickey 1995-on -dnl -dnl $Id: configure.in,v 1.520 2011/03/28 00:22:26 tom Exp $ -dnl Process this file with autoconf to produce a configure script. -dnl -dnl See http://invisible-island.net/autoconf/ for additional information. -dnl -dnl --------------------------------------------------------------------------- -AC_PREREQ(2.13.20020210) -AC_REVISION($Revision: 1.520 $) -AC_INIT(ncurses/base/lib_initscr.c) -AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin) - -CF_TOP_BUILDDIR -CF_SUBST_NCURSES_VERSION - -CF_WITH_REL_VERSION(NCURSES) -CF_WITH_ABI_VERSION - -CF_CHECK_CACHE([AC_CANONICAL_SYSTEM]) -AC_ARG_WITH(system-type, -[ --with-system-type=XXX test: override derived host system-type], -[AC_MSG_WARN(overriding system type to $withval) - cf_cv_system_name=$withval]) - -### Save the given $CFLAGS to allow user-override. -cf_user_CFLAGS="$CFLAGS" - -### Default install-location -CF_CFG_DEFAULTS - -### Checks for programs. -AC_PROG_CC -CF_GCC_VERSION - -AC_PROG_CPP -AC_PROG_GCC_TRADITIONAL -CF_PROG_CC_C_O(CC) -AC_ISC_POSIX -CF_ANSI_CC_REQD -CF_PROG_EXT -CF_PROG_LDCONFIG - -dnl DEFECT in autoconf 2.12: an attempt to set policy, this breaks the -dnl configure script by not letting us test if C++ -dnl is present, making this option necessary. -AC_MSG_CHECKING(if you want to ensure bool is consistent with C++) -AC_ARG_WITH(cxx, - [ --without-cxx do not adjust ncurses bool to match C++], - [cf_with_cxx=$withval], - [cf_with_cxx=yes]) -AC_MSG_RESULT($cf_with_cxx) -if test "X$cf_with_cxx" = Xno ; then - CXX="" - GXX="" -else - # with autoconf 2.13, we can change the error to a warning: - pushdef([AC_MSG_ERROR], - [AC_MSG_RESULT(no) - AC_MSG_WARN([You don't have any C++ compiler, too bad]) - cf_with_cxx=no; CXX=""; GXX="";])dnl - AC_PROG_CXX - popdef([AC_MSG_ERROR])dnl - # autoconf 2.5x removed the error - by hardcoding it to g++. - if test "$CXX" = "g++" ; then - AC_PATH_PROG(CXX,g++) - fi - if test "$CXX" = "g++" ; then - AC_MSG_WARN(ignoring hardcoded g++) - cf_with_cxx=no; CXX=""; GXX=""; - fi -fi - -CF_GXX_VERSION -case $GXX_VERSION in -1*|2.[[0-6]]*) - # GXX=""; CXX=""; ac_cv_prog_gxx=no - # cf_cxx_library=no - AC_MSG_WARN(templates do not work) - ;; -esac - -AC_MSG_CHECKING(if you want to build C++ binding and demo) -AC_ARG_WITH(cxx-binding, - [ --without-cxx-binding do not build C++ binding and demo], - [cf_with_cxx_binding=$withval], - [cf_with_cxx_binding=$cf_with_cxx]) -AC_MSG_RESULT($cf_with_cxx_binding) - -AC_MSG_CHECKING(if you want to build with Ada95) -AC_ARG_WITH(ada, - [ --without-ada suppress check for Ada95, don't build demo], - [cf_with_ada=$withval], - [cf_with_ada=yes]) -AC_MSG_RESULT($cf_with_ada) - -AC_MSG_CHECKING(if you want to install manpages) -AC_ARG_WITH(manpages, - [ --without-manpages suppress install of manpages], - [cf_with_manpages=$withval], - [cf_with_manpages=yes]) -AC_MSG_RESULT($cf_with_manpages) - -AC_MSG_CHECKING(if you want to build programs such as tic) -AC_ARG_WITH(progs, - [ --without-progs suppress build with programs (e.g., tic)], - [cf_with_progs=$withval], - [cf_with_progs=yes]) -AC_MSG_RESULT($cf_with_progs) - -AC_MSG_CHECKING(if you want to build test-programs) -AC_ARG_WITH(tests, - [ --without-tests suppress build with test-programs], - [cf_with_tests=$withval], - [cf_with_tests=yes]) -AC_MSG_RESULT($cf_with_tests) - -AC_MSG_CHECKING(if you wish to install curses.h) -AC_ARG_WITH(curses-h, - [ --without-curses-h install curses.h as ncurses.h only], - [with_curses_h=$withval], - [with_curses_h=yes]) -AC_MSG_RESULT($with_curses_h) - -modules_to_build="ncurses" -if test "X$cf_with_progs" != Xno ; then -modules_to_build="$modules_to_build progs tack" -fi -modules_to_build="$modules_to_build panel menu form" - -AC_ARG_PROGRAM - -CF_PROG_AWK -CF_PROG_EGREP -CF_PROG_INSTALL -CF_PROG_LINT -CF_PROG_LN_S - -AC_SYS_LONG_FILE_NAMES - -# if we find pkg-config, check if we should install the ".pc" files. -CF_PKG_CONFIG - -if test "$PKG_CONFIG" != no ; then - AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG) - - # Leave this as something that can be overridden in the environment. - if test -z "$PKG_CONFIG_LIBDIR" ; then - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'`/lib/pkgconfig - fi - PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'` - if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then - AC_ARG_ENABLE(pc-files, - [ --enable-pc-files generate and install .pc files for pkg-config], - [enable_pc_files=$enableval], - [enable_pc_files=no]) - AC_MSG_RESULT($enable_pc_files) - else - AC_MSG_RESULT(no) - AC_MSG_WARN(did not find library $PKG_CONFIG_LIBDIR) - enable_pc_files=no - fi -fi -AC_SUBST(PKG_CONFIG_LIBDIR) - -AC_MSG_CHECKING(if we should assume mixed-case filenames) -AC_ARG_ENABLE(mixed-case, - [ --enable-mixed-case tic should assume mixed-case filenames], - [enable_mixedcase=$enableval], - [enable_mixedcase=auto]) -AC_MSG_RESULT($enable_mixedcase) -if test "$enable_mixedcase" = "auto" ; then - CF_MIXEDCASE_FILENAMES -else - cf_cv_mixedcase=$enable_mixedcase - if test "$enable_mixedcase" = "yes" ; then - AC_DEFINE(MIXEDCASE_FILENAMES) - fi -fi - -# do this after mixed-case option (tags/TAGS is not as important as tic). -AC_PROG_MAKE_SET -CF_MAKE_TAGS -CF_MAKEFLAGS - -dnl These are standard among *NIX systems, but not when cross-compiling -AC_CHECK_TOOL(RANLIB, ranlib, ':') -AC_CHECK_TOOL(LD, ld, ld) -AC_CHECK_TOOL(AR, ar, ar) -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(if you have specified an install-prefix) -AC_ARG_WITH(install-prefix, - [ --with-install-prefix prefixes actual install-location ($DESTDIR)], - [case "$withval" in #(vi - yes|no) #(vi - ;; - *) DESTDIR="$withval" - ;; - esac]) -AC_MSG_RESULT($DESTDIR) -AC_SUBST(DESTDIR) - -############################################################################### -CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:) -# If we're cross-compiling, allow the user to override the tools and their -# options. The configure script is oriented toward identifying the host -# compiler, etc., but we need a build compiler to generate parts of the source. -CF_BUILD_CC - -############################################################################### -CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:) - -### Options to allow the user to specify the set of libraries which are used. -### Use "--without-normal --with-shared" to allow the default model to be -### shared, for example. -cf_list_models="" -AC_SUBST(cf_list_models)dnl the complete list of models ("normal debug") - -CF_WITH_LIBTOOL -if test "$with_libtool" != "no" ; then - -cf_list_models="$cf_list_models libtool" - -else - -AC_MSG_CHECKING(if you want to build shared libraries) -AC_ARG_WITH(shared, - [ --with-shared generate shared-libraries], - [with_shared=$withval], - [with_shared=no]) -AC_MSG_RESULT($with_shared) -test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared" - -AC_MSG_CHECKING(if you want to build static libraries) -AC_ARG_WITH(normal, - [ --with-normal generate normal-libraries (default)], - [with_normal=$withval], - [with_normal=yes]) -AC_MSG_RESULT($with_normal) -test "$with_normal" = "yes" && cf_list_models="$cf_list_models normal" - -AC_MSG_CHECKING(if you want to build debug libraries) -AC_ARG_WITH(debug, - [ --with-debug generate debug-libraries (default)], - [with_debug=$withval], - [with_debug=yes]) -AC_MSG_RESULT($with_debug) -test "$with_debug" = "yes" && cf_list_models="$cf_list_models debug" - -AC_MSG_CHECKING(if you want to build profiling libraries) -AC_ARG_WITH(profile, - [ --with-profile generate profile-libraries], - [with_profile=$withval], - [with_profile=no]) -AC_MSG_RESULT($with_profile) -test "$with_profile" = "yes" && cf_list_models="$cf_list_models profile" - -fi - -############################################################################### - -AC_MSG_CHECKING(for specified models) -test -z "$cf_list_models" && cf_list_models=normal -dnl If we use libtool to generate libraries, then it must be the only -dnl specified model. -test "$with_libtool" != "no" && cf_list_models=libtool -AC_MSG_RESULT($cf_list_models) - -### Use the first model as the default, and save its suffix for use in building -### up test-applications. -AC_MSG_CHECKING(for default model) -DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'` -AC_MSG_RESULT($DFT_LWR_MODEL) - -CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl - -AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal") -AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL") - -TICS_NAME=tic -AC_SUBST(TICS_NAME) - -TINFO_NAME=tinfo -AC_SUBST(TINFO_NAME) - -LIB_NAME=ncurses -AC_SUBST(LIB_NAME) - -LIB_DIR=../lib -LIB_2ND=../../lib - -CF_LIB_PREFIX(cf_prefix) -LIB_PREFIX=$cf_prefix -AC_SUBST(LIB_PREFIX) - -LIB_SUFFIX= -AC_SUBST(LIB_SUFFIX) - -############################################################################### - -AC_MSG_CHECKING(if you want to build a separate terminfo library) -AC_ARG_WITH(termlib, - [ --with-termlib generate separate terminfo library], - [with_termlib=$withval], - [with_termlib=no]) -AC_MSG_RESULT($with_termlib) - -AC_MSG_CHECKING(if you want to build a separate tic library) -AC_ARG_WITH(ticlib, - [ --with-ticlib generate separate tic library], - [with_ticlib=$withval], - [with_ticlib=no]) -AC_MSG_RESULT($with_ticlib) - -### Checks for special libraries, must be done up-front. -SHLIB_LIST="" -CF_WITH_GPM -if test "$with_gpm" != no ; then - AC_MSG_CHECKING(if you want to load GPM dynamically) - AC_ARG_WITH(dlsym, - [ --without-dlsym do not use dlsym() to load GPM dynamically], - [with_dlsym=$withval], - [with_dlsym=yes]) - AC_MSG_RESULT($with_dlsym) - if test "$with_dlsym" = yes ; then - CF_FUNC_DLSYM - if test "$with_gpm" != yes ; then - CF_VERBOSE(assuming soname for gpm is $with_gpm) - cf_cv_gpm_soname="$with_gpm" - else - CF_LIB_SONAME([#include ],[if (Gpm_Open(0,0)) Gpm_Close();],gpm) - fi - test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname") - SHLIB_LIST="-ldl $SHLIB_LIST" - else - SHLIB_LIST="-lgpm $SHLIB_LIST" - CF_ADD_LIB(gpm,TEST_LIBS) - fi - AC_DEFINE(HAVE_LIBGPM) - CF_CHECK_GPM_WGETCH -fi - -CF_WITH_SYSMOUSE - -dnl Not all ports of gcc support the -g option - -if test X"$CC_G_OPT" = X"" ; then - CC_G_OPT='-g' - test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT='' -fi -AC_SUBST(CC_G_OPT) - -if test X"$CXX_G_OPT" = X"" ; then - CXX_G_OPT='-g' - test -n "$GXX" && test "${ac_cv_prog_cxx_g}" != yes && CXX_G_OPT='' -fi -AC_SUBST(CXX_G_OPT) - -AC_MSG_CHECKING(for default loader flags) -case $DFT_LWR_MODEL in -libtool) LD_MODEL='' ;; -normal) LD_MODEL='' ;; -debug) LD_MODEL=$CC_G_OPT ;; -profile) LD_MODEL='-pg';; -shared) LD_MODEL='' ;; -esac -AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg) -AC_MSG_RESULT($LD_MODEL) - -case $DFT_LWR_MODEL in -shared) -CF_ENABLE_RPATH -AC_MSG_CHECKING(if shared libraries should be relinked during install) -AC_ARG_ENABLE(relink, -[ --disable-relink relink shared libraries during install], -[cf_cv_do_relink=$enableval], -[cf_cv_do_relink=yes]) -AC_MSG_RESULT($cf_cv_do_relink) - ;; -esac - -CF_SHARED_OPTS -if test "$CC_SHARED_OPTS" = "unknown"; then - for model in $cf_list_models; do - if test "$model" = "shared"; then - AC_ERROR(Shared libraries are not supported in this version) - fi - done -fi - -### If we're building with rpath, try to link non-standard libs that way too. -if test "$DFT_LWR_MODEL" = "shared"; then - CF_DISABLE_RPATH_HACK -fi - -############################################################################### -CF_HELP_MESSAGE(Fine-Tuning Your Configuration:) - -### use option --disable-overwrite to leave out the link to -lcurses -AC_MSG_CHECKING(if you wish to install ncurses overwriting curses) -AC_ARG_ENABLE(overwrite, - [ --disable-overwrite leave out the link to -lcurses], - [with_overwrite=$enableval], - [if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi]) -AC_MSG_RESULT($with_overwrite) - -AC_MSG_CHECKING(if external terminfo-database is used) -AC_ARG_ENABLE(database, - [ --disable-database do not use terminfo, only fallbacks/termcap], - [use_database=$enableval], - [use_database=yes]) -AC_MSG_RESULT($use_database) - -case $host_os in #(vi -os2*) #(vi - TERMINFO_SRC='${top_srcdir}/misc/emx.src' - ;; -*) #(vi - TERMINFO_SRC='${top_srcdir}/misc/terminfo.src' - ;; -esac -AC_SUBST(TERMINFO_SRC) - -CF_PATHSEP -if test "$use_database" != no ; then - AC_DEFINE(USE_DATABASE) - - AC_MSG_CHECKING(which terminfo source-file will be installed) - AC_ARG_WITH(database, - [ --with-database=XXX specify terminfo source to install], - [TERMINFO_SRC=$withval]) - AC_MSG_RESULT($TERMINFO_SRC) - - AC_MSG_CHECKING(whether to use hashed database instead of directory/tree) - AC_ARG_WITH(hashed-db, - [ --with-hashed-db specify hashed-database library],, - [with_hashed_db=no]) - AC_MSG_RESULT($with_hashed_db) -else - with_hashed_db=no -fi - -AC_MSG_CHECKING(for list of fallback descriptions) -AC_ARG_WITH(fallbacks, - [ --with-fallbacks=XXX specify list of fallback terminal descriptions], - [with_fallback=$withval], - [with_fallback=]) -AC_MSG_RESULT($with_fallback) -FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'` -AC_SUBST(FALLBACK_LIST) - -AC_MSG_CHECKING(if you want modern xterm or antique) -AC_ARG_WITH(xterm-new, - [ --without-xterm-new specify if xterm terminfo should be old version], - [with_xterm_new=$withval], - [with_xterm_new=yes]) -case $with_xterm_new in -no) with_xterm_new=xterm-old;; -*) with_xterm_new=xterm-new;; -esac -AC_MSG_RESULT($with_xterm_new) -WHICH_XTERM=$with_xterm_new -AC_SUBST(WHICH_XTERM) - -MAKE_TERMINFO= -if test "$use_database" = no ; then - TERMINFO="${datadir}/terminfo" - MAKE_TERMINFO="#" -else - -AC_MSG_CHECKING(for list of terminfo directories) -CF_WITH_PATHLIST(terminfo-dirs, - [ --with-terminfo-dirs=XXX specify list of terminfo directories], - TERMINFO_DIRS, - DATADIR/terminfo, - ${datadir}/terminfo) -AC_MSG_RESULT($TERMINFO_DIRS) -test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS") - -AC_MSG_CHECKING(for default terminfo directory) -CF_WITH_PATH(default-terminfo-dir, - [ --with-default-terminfo-dir=DIR default terminfo directory], - TERMINFO, - DATADIR/terminfo, - ${datadir}/terminfo) -AC_MSG_RESULT($TERMINFO) -AC_DEFINE_UNQUOTED(TERMINFO,"$TERMINFO") - -fi - -AC_SUBST(TERMINFO) -AC_SUBST(MAKE_TERMINFO) - -### use option --disable-big-core to make tic run on small machines -### We need 4Mb, check if we can allocate 50% more than that. -AC_MSG_CHECKING(if big-core option selected) -AC_ARG_ENABLE(big-core, - [ --disable-big-core assume machine has little memory], - [with_big_core=$enableval], - [AC_TRY_RUN([ -#include -#include -int main() { - unsigned long n = 6000000L; - char *s = malloc(n); - if (s != 0) - s[0] = s[n-1] = 0; - ${cf_cv_main_return:-return}(s == 0); -}], - [with_big_core=yes], - [with_big_core=no], - [with_big_core=no])]) -AC_MSG_RESULT($with_big_core) -test "$with_big_core" = "yes" && AC_DEFINE(HAVE_BIG_CORE) - -### 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. -AC_MSG_CHECKING(if big-strings option selected) -AC_ARG_ENABLE(big-strings, - [ --disable-big-strings assume compiler has only standard-size strings], - [with_big_strings=$enableval], - [CF_AWK_BIG_PRINTF(12000,with_big_strings)]) -AC_MSG_RESULT($with_big_strings) - -USE_BIG_STRINGS=0 -test "$with_big_strings" = "yes" && USE_BIG_STRINGS=1 -AC_SUBST(USE_BIG_STRINGS) - -### use option --enable-termcap to compile in the termcap fallback support -AC_MSG_CHECKING(if you want termcap-fallback support) -AC_ARG_ENABLE(termcap, - [ --enable-termcap compile in termcap fallback support], - [with_termcap=$enableval], - [with_termcap=no]) -AC_MSG_RESULT($with_termcap) - -if test "$with_termcap" != "yes" ; then - if test "$use_database" = no ; then - if test -z "$with_fallback" ; then - AC_ERROR(You have disabled the database w/o specifying fallbacks) - fi - fi - AC_DEFINE(PURE_TERMINFO) -else - -if test "$with_ticlib" != no ; then - AC_ERROR(Options --with-ticlib and --enable-termcap cannot be combined) -fi - -AC_DEFINE(USE_TERMCAP) -AC_MSG_CHECKING(for list of termcap files) -CF_WITH_PATHLIST(termpath, - [ --with-termpath=XXX specify list of termcap files], - TERMPATH, - /etc/termcap:/usr/share/misc/termcap) -AC_MSG_RESULT($TERMPATH) -test -n "$TERMPATH" && AC_DEFINE_UNQUOTED(TERMPATH,"$TERMPATH") - -### use option --enable-getcap to use a hacked getcap for reading termcaps -AC_MSG_CHECKING(if fast termcap-loader is needed) -AC_ARG_ENABLE(getcap, - [ --enable-getcap fast termcap load, no xrefs to terminfo], - [with_getcap=$enableval], - [with_getcap=no]) -AC_MSG_RESULT($with_getcap) -test "$with_getcap" = "yes" && AC_DEFINE(USE_GETCAP) - -AC_MSG_CHECKING(if translated termcaps will be cached in ~/.terminfo) -AC_ARG_ENABLE(getcap-cache, - [ --enable-getcap-cache cache translated termcaps in ~/.terminfo], - [with_getcap_cache=$enableval], - [with_getcap_cache=no]) -AC_MSG_RESULT($with_getcap_cache) -test "$with_getcap_cache" = "yes" && AC_DEFINE(USE_GETCAP_CACHE) - -fi - -### Use option --disable-home-terminfo to completely remove ~/.terminfo -AC_MSG_CHECKING(if ~/.terminfo is wanted) -AC_ARG_ENABLE(home-terminfo, - [ --disable-home-terminfo drop ~/.terminfo from terminfo search-path], - [with_home_terminfo=$enableval], - [with_home_terminfo=yes]) -AC_MSG_RESULT($with_home_terminfo) -test "$with_home_terminfo" = "yes" && AC_DEFINE(USE_HOME_TERMINFO) - -AC_MSG_CHECKING(if you want to use restricted environment when running as root) -AC_ARG_ENABLE(root-environ, - [ --disable-root-environ restrict environment when running as root], - [with_root_environ=$enableval], - [with_root_environ=yes]) -AC_MSG_RESULT($with_root_environ) -test "$with_root_environ" = yes && AC_DEFINE(USE_ROOT_ENVIRON) - -### Use option --enable-symlinks to make tic use symlinks, not hard links -### to reduce storage requirements for the terminfo database. -CF_LINK_FUNCS - -with_links=no -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 "$ac_cv_func_symlink" = yes ; then - AC_MSG_CHECKING(if tic should use symbolic links) - AC_ARG_ENABLE(symlinks, - [ --enable-symlinks make tic use symbolic links not hard links], - [with_symlinks=$enableval], - [with_symlinks=no]) - AC_MSG_RESULT($with_symlinks) -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 - AC_MSG_CHECKING(if tic should use hard links) - if test "$ac_cv_func_link" = yes ; then - with_links=yes - else - with_links=no - fi - AC_MSG_RESULT($with_links) -fi - -test "$with_links" = yes && AC_DEFINE(USE_LINKS) -test "$with_symlinks" = yes && AC_DEFINE(USE_SYMLINKS) - -### use option --enable-broken-linker to force on use of broken-linker support -AC_MSG_CHECKING(if you want broken-linker support code) -AC_ARG_ENABLE(broken_linker, - [ --enable-broken_linker compile with broken-linker support code], - [with_broken_linker=$enableval], - [with_broken_linker=${BROKEN_LINKER:-no}]) -AC_MSG_RESULT($with_broken_linker) - -BROKEN_LINKER=0 -if test "$with_broken_linker" = yes ; then - AC_DEFINE(BROKEN_LINKER) - BROKEN_LINKER=1 -elif test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - AC_DEFINE(BROKEN_LINKER) - BROKEN_LINKER=1 - CF_VERBOSE(cygwin linker is broken anyway) - ;; - esac -fi -AC_SUBST(BROKEN_LINKER) - -### use option --enable-bsdpad to have tputs process BSD-style prefix padding -AC_MSG_CHECKING(if tputs should process BSD-style prefix padding) -AC_ARG_ENABLE(bsdpad, - [ --enable-bsdpad recognize BSD-style prefix padding], - [with_bsdpad=$enableval], - [with_bsdpad=no]) -AC_MSG_RESULT($with_bsdpad) -test "$with_bsdpad" = yes && AC_DEFINE(BSD_TPUTS) - -### use option --enable-widec to turn on use of wide-character support -NCURSES_CH_T=chtype -NCURSES_LIBUTF8=0 - -NEED_WCHAR_H=0 -NCURSES_MBSTATE_T=0 -NCURSES_WCHAR_T=0 -NCURSES_WINT_T=0 - -# Check to define _XOPEN_SOURCE "automatically" -CF_XOPEN_SOURCE(500) - -# Work around breakage on OS X -CF_SIGWINCH - -# Checks for CODESET support. -AM_LANGINFO_CODESET - -# use these variables to work around a defect in gcc's fixincludes. -NCURSES_OK_WCHAR_T= -NCURSES_OK_WINT_T= - -AC_MSG_CHECKING(if you want wide-character code) -AC_ARG_ENABLE(widec, - [ --enable-widec compile with wide-char/UTF-8 code], - [with_widec=$enableval], - [with_widec=no]) -AC_MSG_RESULT($with_widec) -if test "$with_widec" = yes ; then - LIB_SUFFIX="w${LIB_SUFFIX}" - AC_DEFINE(USE_WIDEC_SUPPORT) - - case "$CFLAGS $CPPFLAGS" in #(vi - *-D_XOPEN_SOURCE=500) #(vi - ;; - *) - CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED) - ;; - esac - - # with_overwrite=no - NCURSES_CH_T=cchar_t - AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs) - if test "$ac_cv_func_putwc" != yes ; then - CF_UTF8_LIB - if test "$cf_cv_utf8_lib" != no ; then - NCURSES_LIBUTF8=1 - fi - fi - CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T) - CF_WCHAR_TYPE(wchar_t, NCURSES_WCHAR_T, NCURSES_OK_WCHAR_T) - CF_WCHAR_TYPE(wint_t, NCURSES_WINT_T, NCURSES_OK_WINT_T) - - if test "$NCURSES_MBSTATE_T" != 0; then - AC_DEFINE(NEED_MBSTATE_T_DEF) - fi -fi -AC_SUBST(NCURSES_CH_T) -AC_SUBST(NCURSES_LIBUTF8) - -AC_SUBST(NEED_WCHAR_H) -AC_SUBST(NCURSES_MBSTATE_T) -AC_SUBST(NCURSES_WCHAR_T) -AC_SUBST(NCURSES_WINT_T) - -AC_SUBST(NCURSES_OK_WCHAR_T) -AC_SUBST(NCURSES_OK_WINT_T) - -### use option --disable-lp64 to allow long chtype -case $cf_cv_abi_version in -[[345]]*) - default_with_lp64=no - ;; -*) - default_with_lp64=yes - ;; -esac - -AC_MSG_CHECKING(whether to enable _LP64 definition in curses.h) -AC_ARG_ENABLE(lp64, - [ --disable-lp64 allow chtype to be long (ignore _LP64)], - [with_lp64=$enableval], - [with_lp64=$default_with_lp64]) -AC_MSG_RESULT($with_lp64) - -if test "$with_lp64" = yes ; then - cf_cv_enable_lp64=1 -else - cf_cv_enable_lp64=0 -fi -AC_SUBST(cf_cv_enable_lp64) - -CF_LARGEFILE - -### use option --disable-tparm-varargs to make tparm() conform to X/Open -AC_MSG_CHECKING(if you want tparm not to use X/Open fixed-parameter list) -AC_ARG_ENABLE(tparm-varargs, - [ --disable-tparm-varargs compile tparm() without varargs interface], - [with_tparm_varargs=$enableval], - [with_tparm_varargs=yes]) -AC_MSG_RESULT($with_tparm_varargs) -NCURSES_TPARM_VARARGS=0 -test "$with_tparm_varargs" = yes && NCURSES_TPARM_VARARGS=1 -AC_SUBST(NCURSES_TPARM_VARARGS) - -### use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw -if test "$with_ticlib" != no ; then -AC_MSG_CHECKING(if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library) -AC_ARG_ENABLE(tic-depends, - [ --disable-tic-depends link tic library without explicit dependency on ncurses library], - [with_tic_depends=$enableval], - [with_tic_depends=yes]) -AC_MSG_RESULT($with_tic_depends) -else - with_tic_depends=no -fi - -### use option --with-bool to override bool's type -AC_MSG_CHECKING(for type of bool) -AC_ARG_WITH(bool, - [ --with-bool=TYPE override fallback type of bool variable], - [NCURSES_BOOL="$withval"], - [NCURSES_BOOL=auto]) -AC_MSG_RESULT($NCURSES_BOOL) -AC_SUBST(NCURSES_BOOL) - -AC_MSG_CHECKING(for alternate terminal capabilities file) -AC_ARG_WITH(caps, - [ --with-caps=alt compile with alternate Caps file], - [TERMINFO_CAPS=Caps.$withval], - [TERMINFO_CAPS=Caps]) -test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps -AC_MSG_RESULT($TERMINFO_CAPS) -AC_SUBST(TERMINFO_CAPS) - -### use option --with-chtype to override chtype's type -AC_MSG_CHECKING(for type of chtype) -AC_ARG_WITH(chtype, - [ --with-chtype=TYPE override type of chtype], - [NCURSES_CHTYPE="$withval"], - [NCURSES_CHTYPE=auto]) -AC_MSG_RESULT($NCURSES_CHTYPE) - -### use option --with-ospeed to override ospeed's type -AC_MSG_CHECKING(for type of ospeed) -AC_ARG_WITH(ospeed, - [ --with-ospeed=TYPE override type of ospeed variable], - [NCURSES_OSPEED="$withval"], - [NCURSES_OSPEED=short]) -AC_MSG_RESULT($NCURSES_OSPEED) -AC_SUBST(NCURSES_OSPEED) - -### use option --with-mmask-t to override mmask_t's type -AC_MSG_CHECKING(for type of mmask_t) -AC_ARG_WITH(mmask-t, - [ --with-mmask-t=TYPE override type of mmask_t], - [NCURSES_MMASK_T="$withval"], - [NCURSES_MMASK_T=auto]) -AC_MSG_RESULT($NCURSES_MMASK_T) - -### use option --with-ccharw-max to override CCHARW_MAX size -AC_MSG_CHECKING(for size CCHARW_MAX) -AC_ARG_WITH(ccharw-max, - [ --with-ccharw-max=XXX override size CCHARW_MAX], - [NCURSES_CCHARW_MAX="$withval"], - [NCURSES_CCHARW_MAX=5]) -AC_MSG_RESULT($NCURSES_CCHARW_MAX) -AC_SUBST(NCURSES_CCHARW_MAX) - -### Enable compiling-in rcs id's -AC_MSG_CHECKING(if RCS identifiers should be compiled-in) -AC_ARG_WITH(rcs-ids, - [ --with-rcs-ids compile-in RCS identifiers], - [with_rcs_ids=$withval], - [with_rcs_ids=no]) -AC_MSG_RESULT($with_rcs_ids) -test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS) - -############################################################################### -CF_MAN_PAGES([ captoinfo clear infocmp infotocap tabs tic toe tput tset ]) - -############################################################################### -CF_HELP_MESSAGE(Extensions:) - -### Note that some functions (such as const) are normally disabled anyway. -AC_MSG_CHECKING(if you want to build with function extensions) -AC_ARG_ENABLE(ext-funcs, - [ --disable-ext-funcs disable function-extensions], - [with_ext_funcs=$enableval], - [with_ext_funcs=yes]) -AC_MSG_RESULT($with_ext_funcs) -if test "$with_ext_funcs" = yes ; then - NCURSES_EXT_FUNCS=1 - AC_DEFINE(HAVE_CURSES_VERSION) - AC_DEFINE(HAVE_HAS_KEY) - AC_DEFINE(HAVE_RESIZETERM) - AC_DEFINE(HAVE_RESIZE_TERM) - AC_DEFINE(HAVE_TERM_ENTRY_H) - AC_DEFINE(HAVE_USE_DEFAULT_COLORS) - AC_DEFINE(HAVE_WRESIZE) - AC_DEFINE(NCURSES_EXT_FUNCS) - GENERATED_EXT_FUNCS=generated -else - NCURSES_EXT_FUNCS=0 - GENERATED_EXT_FUNCS= -fi -AC_SUBST(NCURSES_EXT_FUNCS) -AC_SUBST(GENERATED_EXT_FUNCS) - -AC_MSG_CHECKING(if you want to build with experimental SCREEN extensions) -AC_ARG_ENABLE(sp-funcs, - [ --enable-sp-funcs enable experimental SCREEN-extensions], - [with_sp_funcs=$enableval], - [with_sp_funcs=no]) -AC_MSG_RESULT($with_sp_funcs) -if test "$with_sp_funcs" = yes ; then - NCURSES_SP_FUNCS=1 - AC_DEFINE(NCURSES_SP_FUNCS) - GENERATED_SP_FUNCS=generated -else - NCURSES_SP_FUNCS=0 - GENERATED_SP_FUNCS= -fi -AC_SUBST(NCURSES_SP_FUNCS) -AC_SUBST(GENERATED_SP_FUNCS) - -AC_MSG_CHECKING(if you want to build with experimental terminal-driver) -AC_ARG_ENABLE(term-driver, - [ --enable-term-driver enable experimental terminal-driver], - [with_term_driver=$enableval], - [with_term_driver=no]) -AC_MSG_RESULT($with_term_driver) -if test "$with_term_driver" = yes ; then - AC_DEFINE(USE_TERM_DRIVER) - if test "$with_sp_funcs" != yes ; then - AC_MSG_ERROR(The term-driver option relies upon sp-funcs) - fi -fi - -### use option --enable-const to turn on use of const beyond that in XSI. -AC_MSG_CHECKING(for extended use of const keyword) -AC_ARG_ENABLE(const, - [ --enable-const compile with extra/non-standard const], - [with_ext_const=$enableval], - [with_ext_const=no]) -AC_MSG_RESULT($with_ext_const) -NCURSES_CONST='/*nothing*/' -if test "$with_ext_const" = yes ; then - NCURSES_CONST=const -fi -AC_SUBST(NCURSES_CONST) - -### use option --enable-ext-colors to turn on use of colors beyond 16. -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=no]) -AC_MSG_RESULT($with_ext_colors) -NCURSES_EXT_COLORS=0 -if test "$with_ext_colors" = yes ; then - if test "$with_widec" != yes ; then - AC_MSG_ERROR(This option applies only to wide-character library) - else - # cannot be ABI 5 since it changes sizeof(cchar_t) - CF_NCURSES_ABI_6 - fi - NCURSES_EXT_COLORS=1 - AC_DEFINE(NCURSES_EXT_COLORS) -fi -AC_SUBST(NCURSES_EXT_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) -AC_ARG_ENABLE(ext-mouse, - [ --enable-ext-mouse compile for extended mouse-encoding], - [with_ext_mouse=$enableval], - [with_ext_mouse=no]) -AC_MSG_RESULT($with_ext_mouse) -NCURSES_MOUSE_VERSION=1 -if test "$with_ext_mouse" = yes ; then - NCURSES_MOUSE_VERSION=2 - CF_NCURSES_ABI_6 -fi -AC_SUBST(NCURSES_MOUSE_VERSION) - -AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code) -AC_ARG_ENABLE(no-padding, - [ --enable-no-padding compile with $NCURSES_NO_PADDING code], - [with_no_padding=$enableval], - [with_no_padding=$with_ext_funcs]) -AC_MSG_RESULT($with_no_padding) -test "$with_no_padding" = yes && AC_DEFINE(NCURSES_NO_PADDING) - -AC_CHECK_SIZEOF([signed char], 0) -if test "$ac_cv_sizeof_signed_char" = 1 ; then - NCURSES_SBOOL="signed char" -else - NCURSES_SBOOL="char" -fi -AC_MSG_CHECKING(if you want to use signed Boolean array in term.h) -AC_ARG_ENABLE(signed-char, - [ --enable-signed-char compile using signed Boolean's in term.h], - [with_signed_char=$enableval], - [with_signed_char=no]) -AC_MSG_RESULT($with_signed_char) -test "$with_signed_char" != yes && NCURSES_SBOOL="char" -AC_SUBST(NCURSES_SBOOL) - -### use option --enable-sigwinch to turn on use of SIGWINCH logic -AC_MSG_CHECKING(if you want SIGWINCH handler) -AC_ARG_ENABLE(sigwinch, - [ --enable-sigwinch compile with SIGWINCH handler], - [with_sigwinch=$enableval], - [with_sigwinch=$with_ext_funcs]) -AC_MSG_RESULT($with_sigwinch) -test "$with_sigwinch" = yes && AC_DEFINE(USE_SIGWINCH) - -### use option --enable-tcap-names to allow user to define new capabilities -AC_MSG_CHECKING(if you want user-definable terminal capabilities like termcap) -AC_ARG_ENABLE(tcap-names, - [ --enable-tcap-names compile with user-definable terminal capabilities], - [with_tcap_names=$enableval], - [with_tcap_names=$with_ext_funcs]) -AC_MSG_RESULT($with_tcap_names) -NCURSES_XNAMES=0 -test "$with_tcap_names" = yes && NCURSES_XNAMES=1 -AC_SUBST(NCURSES_XNAMES) - -############################################################################### -# These options are relatively safe to experiment with. -CF_HELP_MESSAGE(Development Code:) -AC_MSG_CHECKING(if you want all development code) -AC_ARG_WITH(develop, - [ --without-develop disable development options], - [with_develop=$withval], - [with_develop=no]) -AC_MSG_RESULT($with_develop) - -### use option --enable-hard-tabs to turn on use of hard-tabs optimize -AC_MSG_CHECKING(if you want hard-tabs code) -AC_ARG_ENABLE(hard-tabs, - [ --enable-hard-tabs compile with hard-tabs code],, - [enable_hard_tabs=$with_develop]) -AC_MSG_RESULT($enable_hard_tabs) -test "$enable_hard_tabs" = yes && AC_DEFINE(USE_HARD_TABS) - -### use option --enable-xmc-glitch to turn on use of magic-cookie optimize -AC_MSG_CHECKING(if you want limited support for xmc) -AC_ARG_ENABLE(xmc-glitch, - [ --enable-xmc-glitch compile with support for xmc (magic-cookie)],, - [enable_xmc_glitch=$with_develop]) -AC_MSG_RESULT($enable_xmc_glitch) -test "$enable_xmc_glitch" = yes && AC_DEFINE(USE_XMC_SUPPORT) - -############################################################################### -# These are just experimental, probably should not be in a package: -CF_HELP_MESSAGE(Experimental Code:) - -AC_MSG_CHECKING(if you do not want to assume colors are white-on-black) -AC_ARG_ENABLE(assumed-color, - [ --disable-assumed-color do not assume anything about default-colors], - [with_assumed_color=$enableval], - [with_assumed_color=yes]) -AC_MSG_RESULT($with_assumed_color) -test "$with_assumed_color" = yes && AC_DEFINE(USE_ASSUMED_COLOR) - -### use option --enable-hashmap to turn on use of hashmap scrolling logic -AC_MSG_CHECKING(if you want hashmap scrolling-optimization code) -AC_ARG_ENABLE(hashmap, - [ --disable-hashmap compile without hashmap scrolling-optimization], - [with_hashmap=$enableval], - [with_hashmap=yes]) -AC_MSG_RESULT($with_hashmap) -test "$with_hashmap" = yes && AC_DEFINE(USE_HASHMAP) - -### use option --enable-colorfgbg to turn on use of $COLORFGBG environment -AC_MSG_CHECKING(if you want colorfgbg code) -AC_ARG_ENABLE(colorfgbg, - [ --enable-colorfgbg compile-in experimental $COLORFGBG code], - [with_colorfgbg=$enableval], - [with_colorfgbg=no]) -AC_MSG_RESULT($with_colorfgbg) -test "$with_colorfgbg" = yes && AC_DEFINE(USE_COLORFGBG) - -### use option --enable-interop to turn on use of bindings used for interop -AC_MSG_CHECKING(if you want interop bindings) -AC_ARG_ENABLE(interop, - [ --enable-interop compile-in experimental interop bindings], - [with_exp_interop=$enableval], - [with_exp_interop=no]) -AC_MSG_RESULT($with_exp_interop) - -NCURSES_INTEROP_FUNCS=0 -test "$with_exp_interop" = yes && NCURSES_INTEROP_FUNCS=1 -AC_SUBST(NCURSES_INTEROP_FUNCS) - -# This is still experimental (20080329), but should ultimately be moved to -# the script-block --with-normal, etc. -CF_WITH_PTHREAD - -if test "x$with_pthread" != xno; then - AC_CHECK_FUNC(pthread_kill,[ - AC_MSG_CHECKING(if you want to allow EINTR in wgetch with pthreads) - AC_ARG_ENABLE(pthreads-eintr, - [ --enable-pthreads-eintr enable EINTR in wgetch with pthreads], - [use_pthreads_eintr=$enableval], - [use_pthreads_eintr=no]) - AC_MSG_RESULT($use_pthreads_eintr) - if test $use_pthreads_eintr = yes ; then - AC_DEFINE(USE_PTHREADS_EINTR) - fi]) - - AC_MSG_CHECKING(if you want to use weak-symbols for pthreads) - AC_ARG_ENABLE(weak-symbols, - [ --enable-weak-symbols enable weak-symbols for pthreads], - [use_weak_symbols=$enableval], - [use_weak_symbols=no]) - AC_MSG_RESULT($use_weak_symbols) - if test "$use_weak_symbols" = yes ; then - CF_WEAK_SYMBOLS - else - cf_cv_weak_symbols=no - fi - - if test $cf_cv_weak_symbols = yes ; then - AC_DEFINE(USE_WEAK_SYMBOLS) - fi -fi - -PTHREAD= -if test "$with_pthread" = "yes" ; then - AC_DEFINE(USE_PTHREADS) - enable_reentrant=yes - if test $cf_cv_weak_symbols = yes ; then - PTHREAD=-lpthread - fi -fi -AC_SUBST(PTHREAD) - -# Reentrant code has to be opaque; there's little advantage to making ncurses -# 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. -AC_MSG_CHECKING(if you want experimental reentrant code) -AC_ARG_ENABLE(reentrant, - [ --enable-reentrant compile with experimental reentrant code], - [with_reentrant=$enableval], - [with_reentrant=no]) -AC_MSG_RESULT($with_reentrant) -if test "$with_reentrant" = yes ; then - cf_cv_enable_reentrant=1 - cf_cv_enable_opaque="NCURSES_INTERNALS" - NCURSES_OPAQUE=1 - NCURSES_SIZE_T=int - if test $cf_cv_weak_symbols = yes ; then - CF_REMOVE_LIB(LIBS,$LIBS,pthread) - CF_ADD_LIB(pthread,TEST_LIBS) - CF_ADD_LIB(pthread,TEST_LIBS2) - else - LIB_SUFFIX="t${LIB_SUFFIX}" - fi - AC_DEFINE(USE_REENTRANT) - CF_NCURSES_ABI_6 -else - cf_cv_enable_reentrant=0 - cf_cv_enable_opaque="NCURSES_OPAQUE" - NCURSES_OPAQUE=0 - NCURSES_SIZE_T=short -fi -AC_SUBST(cf_cv_enable_reentrant) -AC_SUBST(cf_cv_enable_opaque) -AC_SUBST(NCURSES_OPAQUE) -AC_SUBST(NCURSES_SIZE_T) - -### Allow using a different wrap-prefix -if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then - AC_MSG_CHECKING(for prefix used to wrap public variables) - AC_ARG_WITH(wrap-prefix, - [ --with-wrap-prefix=XXX override prefix used for public variables], - [NCURSES_WRAP_PREFIX=$withval], - [NCURSES_WRAP_PREFIX=_nc_]) - AC_MSG_RESULT($NCURSES_WRAP_PREFIX) -else - NCURSES_WRAP_PREFIX=_nc_ -fi -AC_SUBST(NCURSES_WRAP_PREFIX) -AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX") - -AC_MSG_CHECKING(if you want experimental safe-sprintf code) -AC_ARG_ENABLE(safe-sprintf, - [ --enable-safe-sprintf compile with experimental safe-sprintf code], - [with_safe_sprintf=$enableval], - [with_safe_sprintf=no]) -AC_MSG_RESULT($with_safe_sprintf) -test "$with_safe_sprintf" = yes && AC_DEFINE(USE_SAFE_SPRINTF) - -### 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 -AC_MSG_CHECKING(if you want to experiment without scrolling-hints code) -AC_ARG_ENABLE(scroll-hints, - [ --disable-scroll-hints compile without scroll-hints code], - [with_scroll_hints=$enableval], - [with_scroll_hints=yes]) -AC_MSG_RESULT($with_scroll_hints) -test "$with_scroll_hints" = yes && AC_DEFINE(USE_SCROLL_HINTS) -fi - -AC_MSG_CHECKING(if you want experimental wgetch-events code) -AC_ARG_ENABLE(wgetch-events, - [ --enable-wgetch-events compile with experimental wgetch-events code], - [with_wgetch_events=$enableval], - [with_wgetch_events=no]) -AC_MSG_RESULT($with_wgetch_events) -test "$with_wgetch_events" = yes && AC_DEFINE(NCURSES_WGETCH_EVENTS) - -############################################################################### -CF_HELP_MESSAGE(Testing/development Options:) - -### use option --disable-echo to suppress full display compiling commands -AC_MSG_CHECKING(if you want to display full commands during build) -AC_ARG_ENABLE(echo, - [ --enable-echo build: display "compiling" commands (default)], - [with_echo=$enableval], - [with_echo=yes]) -if test "$with_echo" = yes; then - ECHO_LINK= -else - ECHO_LINK='@ echo linking $@ ... ;' - test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent" - test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent" -fi -AC_MSG_RESULT($with_echo) -AC_SUBST(ECHO_LINK) - -### use option --enable-warnings to turn on all gcc warnings -AC_MSG_CHECKING(if you want to see compiler warnings) -AC_ARG_ENABLE(warnings, - [ --enable-warnings build: turn on GCC compiler warnings], - [with_warnings=$enableval]) -AC_MSG_RESULT($with_warnings) - -if test "x$with_warnings" = "xyes"; then - CF_ADD_ADAFLAGS(-gnatg) - CF_GCC_WARNINGS(Wdeclaration-after-statement Wextra Wno-unknown-pragmas Wswitch-enum) - if test "$cf_with_cxx" = yes ; then - CF_GXX_WARNINGS(Wno-unused) - fi -fi -CF_GCC_ATTRIBUTES - -### use option --enable-assertions to turn on generation of assertion code -AC_MSG_CHECKING(if you want to enable runtime assertions) -AC_ARG_ENABLE(assertions, - [ --enable-assertions test: turn on generation of assertion code], - [with_assertions=$enableval], - [with_assertions=no]) -AC_MSG_RESULT($with_assertions) -if test -n "$GCC" -then - if test "$with_assertions" = no - then - AC_DEFINE(NDEBUG) - CPPFLAGS="$CPPFLAGS -DNDEBUG" - else - CF_ADD_ADAFLAGS(-gnata) - fi -fi - -### use option --disable-leaks to suppress "permanent" leaks, for testing -CF_DISABLE_LEAKS -AC_DEFINE(HAVE_NC_ALLOC_H) - -### use option --enable-expanded to generate certain macros as functions -AC_ARG_ENABLE(expanded, - [ --enable-expanded test: generate functions for certain macros], - [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED)]) - -### use option --disable-macros to suppress macros in favor of functions -AC_ARG_ENABLE(macros, - [ --disable-macros test: use functions rather than macros], - [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS)]) - -# Normally we only add trace() to the debug-library. Allow this to be -# extended to all models of the ncurses library: -cf_all_traces=no -case "$CFLAGS $CPPFLAGS" in -*-DTRACE*) - cf_all_traces=yes - ;; -esac - -AC_MSG_CHECKING(whether to add trace feature to all models) -AC_ARG_WITH(trace, -[ --with-trace test: add trace() function to all models of ncurses], -[cf_with_trace=$withval], -[cf_with_trace=$cf_all_traces]) -AC_MSG_RESULT($cf_with_trace) - -if test "$cf_with_trace" = yes ; then - LIB_TRACING=all - ADA_TRACE=TRUE - CF_ADD_CFLAGS(-DTRACE) -else - LIB_TRACING=DEBUG - ADA_TRACE=FALSE -fi - -AC_SUBST(ADA_TRACE) - -### Checks for libraries. -case $cf_cv_system_name in #(vi -*mingw32*) #(vi - ;; -*) -AC_CHECK_FUNC(gettimeofday, - AC_DEFINE(HAVE_GETTIMEOFDAY),[ - -AC_CHECK_LIB(bsd, gettimeofday, - AC_DEFINE(HAVE_GETTIMEOFDAY) - CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday - ;; -esac - -CF_MATH_LIB(MATH_LIB,sin(x)) -AC_SUBST(MATH_LIB) - -### Checks for header files. -AC_STDC_HEADERS -AC_HEADER_DIRENT -AC_HEADER_TIME -CF_REGEX - -dnl These are some other potentially nonportable headers. -AC_CHECK_HEADERS( \ -fcntl.h \ -getopt.h \ -limits.h \ -locale.h \ -math.h \ -poll.h \ -sys/bsdtypes.h \ -sys/ioctl.h \ -sys/param.h \ -sys/poll.h \ -sys/select.h \ -sys/time.h \ -sys/times.h \ -ttyent.h \ -unistd.h \ -wctype.h \ -) - -# check for ISC (this may also define _POSIX_SOURCE) -# Note: even non-Posix ISC needs to declare fd_set -if test "$ISC" = yes ; then - AC_CHECK_LIB(cposix,main) - AC_CHECK_LIB(inet,bzero,CF_ADD_LIB(inet))dnl also 'select()' -fi - -CF_SYS_TIME_SELECT - -### checks for compiler characteristics -AC_LANG_C -AC_C_CONST -CF_C_INLINE(NCURSES_INLINE,1200) -CF_SIG_ATOMIC_T - -if test $NCURSES_CHTYPE = auto ; then - CF_TYPEOF_CHTYPE -else - cf_cv_typeof_chtype=$NCURSES_CHTYPE -fi -test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype="" -AC_SUBST(cf_cv_typeof_chtype) - -CF_UNSIGNED_LITERALS -cf_cv_1UL="1" -test ".$cf_cv_unsigned_literals" = .yes && cf_cv_1UL="${cf_cv_1UL}U" -test ".$cf_cv_typeof_chtype" = .long && cf_cv_1UL="${cf_cv_1UL}L" -AC_SUBST(cf_cv_1UL) - -if test $NCURSES_MMASK_T = auto ; then - cf_cv_typeof_mmask_t=long -else - cf_cv_typeof_mmask_t=$NCURSES_MMASK_T -fi -test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t="" -AC_SUBST(cf_cv_typeof_mmask_t) - -### Checks for external-data -CF_ERRNO -CF_LINK_DATAONLY - -### Checks for library functions. -AC_CHECK_FUNCS( \ -getcwd \ -getegid \ -geteuid \ -getttynam \ -issetugid \ -poll \ -remove \ -select \ -setbuf \ -setbuffer \ -setvbuf \ -sigaction \ -sigvec \ -strdup \ -strstr \ -tcgetpgrp \ -times \ -vsnprintf \ -) -if test "$with_getcap" = "yes" ; then - CF_CGETENT -fi - -CF_ISASCII -CF_STRUCT_SIGACTION -CF_FUNC_NANOSLEEP -CF_FUNC_TERMIOS -CF_FUNC_VSSCANF -CF_MKSTEMP - -# setup for prototype of fallback for vsscanf() -CF_SUBST_IF(["$cf_cv_func_vsscanf" = vsscanf], HAVE_VSSCANF, 1, 0) - -dnl FIXME (may need this) AC_SYS_RESTARTABLE_SYSCALLS -if test "$cross_compiling" = yes ; then - AC_MSG_WARN(cross compiling: assume setvbuf params not reversed) -else - AC_FUNC_SETVBUF_REVERSED -fi -AC_TYPE_SIGNAL -CF_TYPE_SIGACTION -CF_SIZECHANGE -CF_FUNC_MEMMOVE -CF_FUNC_POLL -CF_VA_COPY -AC_FUNC_VFORK - -# special check for test/ditto.c -CF_FUNC_OPENPTY -if test "$cf_cv_func_openpty" != no ; then - AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>) - AC_DEFINE(USE_XTERM_PTY) - if test "$cf_cv_lib_util" = yes ; then - CF_ADD_LIB(util,TEST_LIBS) - fi -fi -AC_SUBST(TEST_LIBS) -AC_SUBST(TEST_LIBS2) - -if test "$with_hashed_db" != no ; then - AC_DEFINE(USE_HASHED_DB) - CF_HASHED_DB($with_hashed_db) -fi - -dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS -if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then - CF_STRIP_G_OPT(CFLAGS) - CF_STRIP_G_OPT(CXXFLAGS) -fi - -# Just in case, check if the C compiler has a bool type. -CF_BOOL_DECL(cf_cv_cc_bool_type) - -# Check for C++ compiler characteristics (and ensure that it's there!) -if test -n "$CXX" ; then - AC_LANG_CPLUSPLUS - CF_STDCPP_LIBRARY - CF_PROG_CC_C_O(CXX) - - case $GXX_VERSION in - 1*|2.[0-6]*) - cf_cxx_library=yes - ;; - *-2.7*|2.7*) - CF_GPP_LIBRARY - ;; - *) - cf_cxx_library=no - ;; - esac - - AC_CHECK_HEADERS(iostream typeinfo) - - if test x"$ac_cv_header_iostream" = xyes ; then - AC_MSG_CHECKING(if iostream uses std-namespace) - AC_TRY_COMPILE([ -#include -using std::endl; -using std::cerr;],[ -cerr << "testing" << endl; -],[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) - fi - fi - - CF_BOOL_DECL - CF_BOOL_SIZE - CF_ETIP_DEFINES - CF_CPP_PARAM_INIT - CF_CPP_STATIC_CAST - - CXX_AR='$(AR)' - CXX_ARFLAGS='$(ARFLAGS)' - case $cf_cv_system_name in #(vi - irix*) #(vi - if test "$GXX" != yes ; then - CXX_AR='$(CXX)' - CXX_ARFLAGS='-ar -o' - fi - ;; - sco3.2v5*) #(vi - CXXLDFLAGS="-u main" - ;; - solaris2*) - if test "$GXX" != yes ; then - CXX_AR='$(CXX)' - CXX_ARFLAGS='-xar -o' - fi - ;; - esac - AC_SUBST(CXXLDFLAGS) - AC_SUBST(CXX_AR) - AC_SUBST(CXX_ARFLAGS) -else - cf_cxx_library=no - cf_cv_builtin_bool=1 - - # 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 - # the C++ portion of this configuration as a shortcut (or just to avoid - # compiling the demo in the c++ directory). So we need a reasonable - # default for the 'bool' type. - # - # Caveat: since the storage of the bool type is not standardized, it - # may change. - - if test "$NCURSES_BOOL" != auto ; then - cf_cv_type_of_bool=$NCURSES_BOOL - cf_cv_header_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 #(vi - i?86) cf_cv_type_of_bool=char ;; #(vi - *) cf_cv_type_of_bool=int ;; - esac - AC_MSG_RESULT($cf_cv_type_of_bool) - fi - fi -fi -AC_SUBST(CXXLIBS) - -# If the C compiler did not declare bool, and we did not determine that the C++ -# compiler does not declare bool, turn on an ifdef in curses.h that makes the -# ncurses library use the same type as C++ bool. Note that this allows one to -# 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 -then - # oops: C has a bool. Unlikely, but C++ could differ. - USE_CXX_BOOL=0 -elif test $cf_cv_builtin_bool = 0 -then - # C++ has no bool - USE_CXX_BOOL=0 -else - # this is the normal case - USE_CXX_BOOL='defined(__cplusplus)' -fi -AC_SUBST(USE_CXX_BOOL) - -CF_HELP_MESSAGE(Ada95 Binding Options:) - -dnl If the Ada95 source-tree is present, add that to the build unless it will -dnl not work, or was not requested. -if test -f "${srcdir}/Ada95/Makefile.in" ; then - -dnl libtool does not know anything about GNAT, though a change made in 1998 -dnl provided for it "someday". Disable the ada subtree if we are using -dnl libtool -TD 20070714 - if test "$cf_with_ada" != "no" ; then - if test "$with_libtool" != "no"; then - AC_MSG_WARN(libtool does not support Ada - disabling feature) - cf_with_ada=no - fi - fi - -dnl Check for availability of GNU Ada Translator (GNAT). -dnl At the moment we support no other Ada95 compiler. - if test "$cf_with_ada" != "no" ; then - CF_PROG_GNAT - if test "$cf_cv_prog_gnat_correct" = yes; then - CF_ADD_ADAFLAGS(-gnatpn) - - # make ADAFLAGS consistent with CFLAGS - case "$CFLAGS" in - *-g*) - CF_ADD_ADAFLAGS(-g) - ;; - esac - case "$CFLAGS" in - *-O*) - CF_ADD_ADAFLAGS(-O3) - ;; - esac - - CF_GNAT_GENERICS - CF_GNAT_SIGINT - CF_GNAT_PRAGMA_UNREF - CF_GNAT_PROJECTS - - CF_WITH_ADA_COMPILER - - cf_ada_package=terminal_interface - AC_SUBST(cf_ada_package) - - CF_WITH_ADA_INCLUDE - CF_WITH_ADA_OBJECTS - CF_WITH_ADA_SHAREDLIB - fi - fi -else - cf_with_ada=no -fi - -### Construct the ncurses library-subsets, if any, from this set of keywords: -### none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar -### -### ticlib modules may be a separate library, otherwise contained in termlib. -### termlib modules may be a separate library, otherwise contained in ncurses. -### -### The of "+" or " " between the tokens controls the way the script -### chooses to split module lists into libraries. -### -### (see CF_LIB_RULES). -AC_MSG_CHECKING(for library subsets) -LIB_SUBSETS= - -if test "$cf_with_progs" = yes || test "$with_ticlib" != no || test "$with_termcap" != no; then - LIB_SUBSETS="${LIB_SUBSETS}ticlib" - if test "$with_ticlib" != no ; then - LIB_SUBSETS="${LIB_SUBSETS} " - else - LIB_SUBSETS="${LIB_SUBSETS}+" - fi -fi - -LIB_SUBSETS="${LIB_SUBSETS}termlib" -test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo" - -if test "$with_termlib" != no ; then - LIB_SUBSETS="${LIB_SUBSETS} " -else - LIB_SUBSETS="${LIB_SUBSETS}+" -fi - -LIB_SUBSETS="${LIB_SUBSETS}base" - -# Most term-driver calls are to tinfo, but some like init_pair are to the -# base library (so it resides in base). -if test "$with_term_driver" != no ; then - LIB_SUBSETS="${LIB_SUBSETS}+port_drivers" - case $cf_cv_system_name in #(vi - *mingw32*) #(vi - LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" - ;; - *) #(vi - LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo" - ;; - esac -fi - -test "$with_widec" = yes && LIB_SUBSETS="${LIB_SUBSETS}+widechar" -test "$with_ext_funcs" = yes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs" - -AC_MSG_RESULT($LIB_SUBSETS) - -### Construct the list of include-directories to be generated -CF_INCLUDE_DIRS -CF_ADA_INCLUDE_DIRS - -### Build up pieces for makefile rules -AC_MSG_CHECKING(default library suffix) -CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl -AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("") -AC_MSG_RESULT($DFT_ARG_SUFFIX) - -AC_MSG_CHECKING(default library-dependency suffix) -CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl -AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a") -AC_MSG_RESULT($DFT_DEP_SUFFIX) - -AC_MSG_CHECKING(default object directory) -CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl -AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj") -AC_MSG_RESULT($DFT_OBJ_SUBDIR) - -# libtool thinks it can make c++ shared libraries (perhaps only g++) -if test "$cf_with_cxx" = yes ; then -AC_MSG_CHECKING(c++ library-dependency suffix) -if test "$with_libtool" != "no"; then - CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX -else - CF_LIB_SUFFIX(normal,CXX_LIB_SUFFIX,CXX_DEP_SUFFIX)dnl we normally make a static library -fi -AC_MSG_RESULT($CXX_LIB_SUFFIX) -AC_SUBST(CXX_LIB_SUFFIX) -fi - -# do not want -ldl in build except as needed for -lncurses dependency -if test "$with_dlsym" = yes ; then -if test $DFT_LWR_MODEL = shared || \ - test $DFT_LWR_MODEL = libtool ; then - CF_REMOVE_LIB(LIBS,$LIBS,dl) -fi -fi -### Set up low-level terminfo dependencies for makefiles. - -# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but -# do not need libdl -TICS_LIST= -if test "$with_dlsym" = yes ; then - CF_REMOVE_LIB(TINFO_LIST,$SHLIB_LIST,dl) -fi - -if test "$with_ticlib" != no ; then - - if test "$with_ticlib" != yes ; then - TICS_NAME=$with_ticlib - TICS_ARG_SUFFIX="${with_ticlib}`echo ${DFT_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}" - else - TICS_ARG_SUFFIX="${TICS_NAME}${DFT_ARG_SUFFIX}" - TICS_DEP_SUFFIX="${TICS_NAME}${DFT_DEP_SUFFIX}" - TICS_LIB_SUFFIX="${TICS_NAME}${LIB_SUFFIX}" - fi - TICS_ARGS="-L${LIB_DIR} -l${TICS_LIB_SUFFIX}" -else - TICS_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" -fi -AC_SUBST(TICS_ARG_SUFFIX) -AC_SUBST(TICS_DEP_SUFFIX) -AC_SUBST(TICS_LIB_SUFFIX) -AC_SUBST(TICS_ARGS) - -if test "$with_termlib" != no ; then - - if test "$with_termlib" != yes ; then - TINFO_NAME=$with_termlib - TINFO_SUFFIX="`echo ${DFT_LIB_SUFFIX}|sed -e "s/^${LIB_SUFFIX}//"`" - TINFO_ARG_SUFFIX="${with_termlib}`echo ${DFT_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}" - else - TINFO_SUFFIX=${DFT_LIB_SUFFIX} - TINFO_ARG_SUFFIX="${TINFO_NAME}${DFT_ARG_SUFFIX}" - TINFO_DEP_SUFFIX="${TINFO_NAME}${DFT_DEP_SUFFIX}" - TINFO_LIB_SUFFIX="${TINFO_NAME}${LIB_SUFFIX}" - fi - - TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" - TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" - if test "$DFT_LWR_MODEL" = "libtool"; then - TEST_ARGS="${TEST_DEPS}" - TEST_ARG2="${TEST_DEP2}" - TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS" - TICS_LIST="$SHLIB_LIST $TEST_ARGS" - SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS" - else - TEST_ARGS="-l${TINFO_ARG_SUFFIX}" - TEST_ARG2="-l${TINFO_ARG_SUFFIX}" - TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" - TINFO_ARGS="-L${LIB_DIR} $TEST_ARGS" - SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" - fi -else - # the next lines are needed for linking libtic over libncurses - TINFO_NAME=${LIB_NAME} - TINFO_SUFFIX=${DFT_LIB_SUFFIX} - TINFO_ARG_SUFFIX=${LIB_NAME}${DFT_ARG_SUFFIX} - if test "$with_tic_depends" = yes ; then - TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${DFT_ARG_SUFFIX}" - else - TICS_LIST="$SHLIB_LIST" - fi - - TINFO_ARGS="-L${LIB_DIR} -l${LIB_NAME}${DFT_ARG_SUFFIX}" -fi - -if test "$DFT_LWR_MODEL" = shared ; then - case $cf_cv_system_name in #(vi - cygwin*) - # "lib" files have ".dll.a" suffix, "cyg" files have ".dll" - TINFO_SUFFIX=.dll - ;; - esac -fi - -AC_SUBST(TINFO_ARG_SUFFIX) -AC_SUBST(TINFO_DEP_SUFFIX) -AC_SUBST(TINFO_LIB_SUFFIX) -AC_SUBST(TINFO_ARGS) - -if test "$with_dlsym" = yes ; then - CF_REMOVE_LIB(TICS_LIST,$TICS_LIST,dl) -fi - -if test "$DFT_LWR_MODEL" = "libtool"; then - OBJEXT=lo -fi - -# needed for Ada95 -TINFO_ARGS2=`echo "$TINFO_ARGS" | sed -e 's,-L\.\./,-L../../,'` -AC_SUBST(TINFO_ARGS2) - -case $DFT_LWR_MODEL in -normal|debug|profile) - CF_LDFLAGS_STATIC - ;; -esac - -AC_MSG_CHECKING(where we will install curses.h) -test "$with_overwrite" = no && \ -test "x$includedir" = 'x${prefix}/include' && \ - includedir='${prefix}/include/ncurses'${LIB_SUFFIX} -AC_MSG_RESULT($includedir) - -### Resolve a conflict between normal and wide-curses by forcing applications -### that will need libutf8 to add it to their configure script. -if test "$with_overwrite" != no ; then -if test "$NCURSES_LIBUTF8" = 1 ; then - NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)' - AC_MSG_WARN(Wide-character applications must define HAVE_LIBUTF8_H to include curses.h) -fi -fi -WITH_OVERWRITE=$with_overwrite - -AC_SUBST(WITH_OVERWRITE) -AC_SUBST(TICS_LIST) -AC_SUBST(TINFO_LIST) -AC_SUBST(SHLIB_LIST) - -# used to separate tack out of the tree -NCURSES_TREE= -AC_SUBST(NCURSES_TREE) - -### predefined stuff for the test programs -AC_DEFINE(HAVE_SLK_COLOR) - -### Construct the list of subdirectories for which we'll customize makefiles -### with the appropriate compile-rules. - -CF_SRC_MODULES($modules_to_build) - -if test "$cf_with_ada" != "no" && test "$cf_cv_prog_gnat_correct" != "no"; then - SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${DFT_ARG_SUFFIX}-config:Ada95/gen/adacurses-config.in" - SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${DFT_ARG_SUFFIX}-config.1:man/MKada_config.in" -fi - -CF_DIRS_TO_MAKE - -# symbols that differ when compiling Ada95 by itself. -NCURSES_SHLIB2='sh $(top_srcdir)/misc/shlib' -AC_SUBST(NCURSES_SHLIB2) - -# values to use as strings -AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR') - -AC_DEFINE_UNQUOTED(NCURSES_VERSION_STRING, "${NCURSES_MAJOR}.${NCURSES_MINOR}.${NCURSES_PATCH}") - -### Now that we're done running tests, add the compiler-warnings, if any -CF_ADD_CFLAGS($EXTRA_CFLAGS) - -### Define substitutions for header files to avoid name-pollution -CF_SUBST_IF(["$cf_cv_have_tcgetattr" = yes], HAVE_TCGETATTR, 1, 0) -CF_SUBST_IF(["$ac_cv_header_termio_h" = yes], HAVE_TERMIO_H, 1, 0) -CF_SUBST_IF(["$ac_cv_header_termios_h" = yes], HAVE_TERMIOS_H, 1, 0) - -################################################################################ -test "$use_database" = yes && \ -SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in" - -SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in" -SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${DFT_ARG_SUFFIX}${cf_cv_abi_version}-config.1:man/MKncu_config.in" - -if test x"$enable_pc_files" = xyes ; then \ -SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in" -MAKE_PC_FILES= -else -MAKE_PC_FILES="#" -fi -AC_SUBST(MAKE_PC_FILES) -AC_SUBST(cross_compiling) - -AC_PATH_PROG(TIC_PATH,tic,unknown,$PATH:/usr/local/ncurses/bin) -if test -n "$FALLBACK_LIST" -then - if test "$TIC_PATH" = unknown - then - AC_MSG_WARN(no tic program found for fallbacks) - fi -fi -AC_SUBST(TIC_PATH) - -if test "x$cf_with_tests" != xno ; then - MAKE_TESTS= -else - MAKE_TESTS="#" -fi -AC_SUBST(MAKE_TESTS) - -ADAHTML_DIR=../../doc/html/ada -AC_SUBST(ADAHTML_DIR) - -SUB_SCRIPTS= -case $cf_cv_system_name in #(vi -*mingw32*) #(vi - SUB_SCRIPTS="mk-dlls.sh" - ;; -esac - -AC_OUTPUT( \ - include/MKterm.h.awk \ - include/curses.head:include/curses.h.in \ - include/ncurses_dll.h \ - include/termcap.h \ - include/unctrl.h \ - $SUB_SCRIPTS \ - $SUB_MAKEFILES \ - Makefile,[ -if test "x$cf_with_tests" != xno ; then - CF_PRG_RULES([$srcdir/test/mk-test.awk INSTALL=no ECHO_LINK="$ECHO_LINK"], test) -fi -CF_LIB_RULES($SRC_SUBDIRS) - -if test "x$cf_with_ada" != xno ; then -if test -z "$USE_OLD_MAKERULES" ; then - $AWK -f $srcdir/Ada95/mk-1st.awk <$srcdir/Ada95/src/modules >>Ada95/src/Makefile -fi -fi -],[ -### Special initialization commands, used to pass information from the -### configuration-run into config.status - -AWK="$AWK" -DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX" -DFT_LWR_MODEL="$DFT_LWR_MODEL" -ECHO_LINK="$ECHO_LINK" -LDCONFIG="$LDCONFIG" -LIBTOOL_VERSION="$LIBTOOL_VERSION" -LIB_NAME="$LIB_NAME" -LIB_SUBSETS="$LIB_SUBSETS" -LIB_SUFFIX="$LIB_SUFFIX" -LIB_TRACING="$LIB_TRACING" -LN_S="$LN_S" -MAKE_TERMINFO="$MAKE_TERMINFO" -NCURSES_MAJOR="$NCURSES_MAJOR" -NCURSES_MINOR="$NCURSES_MINOR" -NCURSES_OSPEED="$NCURSES_OSPEED" -NCURSES_PATCH="$NCURSES_PATCH" -SRC_SUBDIRS="$SRC_SUBDIRS" -TERMINFO="$TERMINFO" -TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX" -TICS_LIB_SUFFIX="$TICS_LIB_SUFFIX" -TICS_NAME="$TICS_NAME" -TIC_PATH="$TIC_PATH" -TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX" -TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX" -TINFO_NAME="$TINFO_NAME" -TINFO_SUFFIX="$TINFO_SUFFIX" -USE_OLD_MAKERULES="$USE_OLD_MAKERULES" -WITH_CURSES_H="$with_curses_h" -WITH_ECHO="$with_echo" -WITH_OVERWRITE="$with_overwrite" -cf_LIST_MODELS="$cf_list_models" -cf_cv_abi_version="$cf_cv_abi_version" -cf_cv_do_relink="$cf_cv_do_relink" -cf_cv_do_symlinks="$cf_cv_do_symlinks" -cf_cv_enable_lp64="$cf_cv_enable_lp64" -cf_cv_enable_opaque="$cf_cv_enable_opaque" -cf_cv_prog_CC_c_o=$cf_cv_prog_CC_c_o -cf_cv_prog_CXX_c_o=$cf_cv_prog_CXX_c_o -cf_cv_rel_version="$cf_cv_rel_version" -cf_cv_rm_so_locs="$cf_cv_rm_so_locs" -cf_cv_shared_soname='$cf_cv_shared_soname' -cf_cv_shlib_version="$cf_cv_shlib_version" -cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix" -cf_cv_system_name="$cf_cv_system_name" -cf_with_ada="$cf_with_ada" -cf_with_cxx_binding="$cf_with_cxx_binding" -cf_with_manpages="$cf_with_manpages" -cf_with_tests="$cf_with_tests" -host="$host" -target="$target" - -],cat)dnl -${MAKE:-make} preinstall diff --git a/deps/ncurses-5.9/convert_configure.pl b/deps/ncurses-5.9/convert_configure.pl deleted file mode 100644 index 911bdc7..0000000 --- a/deps/ncurses-5.9/convert_configure.pl +++ /dev/null @@ -1,119 +0,0 @@ -extproc perl -S -w - -# $Id: convert_configure.pl,v 1.3 2006/04/22 23:04:06 tom Exp $ -############################################################################## -# Copyright (c) 1998-2000,2006 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. # -############################################################################## - -# The converted script is written to stdout, so run this script as -# convert_configure configure > configure.cmd -# -# When the converted script runs, it expects that /tmp dir is -# available (so we create it). -# -# run the result like this: -# .\configure - -# Some frequent manual intervention: -# a) Some makefiles hardwire SHELL = /bin/sh ==> change to: sh -# b) Some makefiles recognize that exe files terminate on .exe -# You need to give this script -no-zexe option... - -shift, $no_zexe = 1 if @ARGV and $ARGV[0] eq '-no-zexe'; - -mkdir '/tmp', 0777 unless -d '/tmp'; - -print <) { - if (/for\s+(\w+)\s+in\s*\$(PATH|ac_dummy)\s*;/) { - $checking_path = 1; - $varname = $1; - $subst= < - - - -Ada95 Binding for ncurses - - - - -

Ada95 Binding for ncurses

-by Jürgen Pfeifer. - -
-

General Remarks

-
    -
  • This document describes Version 01.00 of the binding.
  • -
  • The functionality is modeled to be compatible with the ncurses -package, a clone of the SVr4 curses model.
    -I did the development on an Intel box running the latest stable release of -Linux, ncurses and the most recent released -GNU Ada Translator -gnat versions. For any older versions of ncurses and gnat -it is not guaranteed to work.
  • -
  • You must have the m4 macroprocessor to build this package. -If you don't have this program, you can get the FSF version -here.
  • -
  • Ada programs are supposed to be readable. One of my -favorite methods to make code readable is to use expressive -names for the identifiers. You can find a list of a mapping -of the cryptic curses names to the Ada names in this table.
  • -
  • This is not a typical one-to-one interface mapping. It is -close to one-to-one on the functional level. Each (n)curses function -has it's counterpart with a more or less similar formal parameter list -in the binding. It is not one-to-one with respect to the datatypes. -I tried to make records out of the flat chtype and similar structures, -so you don't have to do bit operations to mark an attributed character -as bold. Just make the boolean member bold of the record -true. The binding also hides the structures like WINDOW, PANEL, MENU, FORM -etc. ! It's a pure functional API.
  • -
  • I try to do as much error checking as possible and feasible -in the binding. I will raise an Ada exception when something -went wrong in the low-level curses. This has the effect that - at least -first time in my life - (n)curses programs have now a very rigid error -checking, but - thanks to Ada - you don't have to code the orgiastic -error checking style of C.
  • -
  • Support for wide characters is currently not in the binding, as it -is not really in ncurses at this point in time.
  • -
- -

Limitations

-
    -
  • I provide no SCREEN datatype and functions to set a new screen. -If you need this (mostly for debugging I guess), write a small -C routine doing all this and import it into your Ada program.
  • -
  • I provide no functions to switch on/off curses tracing options. -Same suggestion as above.
  • -
  • Although Ada95 is an OO Language, this binding doesn't provide -an OO abstraction of the (n)curses functionality. As mentioned above -it's a thin binding for the (n)curses functions. But without any -doubt it would be nice to build on top of this an OO abstraction -of (n)curses functionality.
    -The only exception is the method how fieldtypes are represented in -this Binding. We provide an abstract tagged type Field_Type from -which the various fieldtypes are derived.
  • -
  • I currently do not support the link_fieldtype functionality of the -forms subsystem.
  • -
  • The *_IO packages are currently output only.
  • -
- -

Hierarchy of packages

- -If you want to navigate through the html pages of the package specs, click here. -

Implementation Details

-

Behind the abstraction

-All the new types like Window, Panel, -Menu, Form etc. are just -opaque representations of the pointers to the corresponding -low level (n)curses structures like -WINDOW *, PANEL *, -MENU * or FORM *. -So you can safely pass them to C routines that expect a pointer -to one of those structures. -

Extended ripoffline() usage

-The official documentation of (n)curses says, that the line parameter -determines only whether or not exactly one line is -stolen from the top or bottom of the screen. So essentially only the -sign of the parameter is evaluated. ncurses has internally implemented -it in a way, that uses the line parameter also to control the amount of -lines to steal. This mechanism is used in the Rip_Off_Lines -routine of the binding. -

How user defined field types work

-TBD -

Enumeration fields handling

-The (n)curses documentation says, that the String arrays to be passed to -an TYPE_ENUM fieldtype must not be automatic variables. This is not true -in this binding, because it is internally arranged to safely copy these -values. -

Using other Ada compilers

-This should basically not be a problem. -

Port to other curses implementations

-Basically it should not be too hard to make all this run on a regular SVr4 -implementation of curses. The problems are probably these:
-
    -
  • ncurses has some additional features which are presented in this binding. You -have two choices to deal with this: -
      -
    • Emulate the feature in this binding
    • -
    • Raise an exception for non implemented features
    • -
    -Most likely you will follow a mixed approach. Some features are easy to simulate, -others will be hard if not impossible.
  • -
-I'm quite sure I forgot something. - - diff --git a/deps/ncurses-5.9/doc/html/NCURSES-Programming-HOWTO.html b/deps/ncurses-5.9/doc/html/NCURSES-Programming-HOWTO.html deleted file mode 100644 index 3a10106..0000000 --- a/deps/ncurses-5.9/doc/html/NCURSES-Programming-HOWTO.html +++ /dev/null @@ -1,6413 +0,0 @@ - - - - -NCURSES Programming HOWTO - - - -
-
-

NCURSES Programming -HOWTO

-

Pradeep Padala

- -

v1.9, 2005-06-20

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Revision -History
Revision 1.92005-06-20Revised by: ppadala
The license has been changed to the -MIT-style license used by NCURSES. Note that the programs are also -re-licensed under this.
Revision 1.82005-06-17Revised by: ppadala
Lots of updates. Added references and -perl examples. Changes to examples. Many grammatical and stylistic -changes to the content. Changes to NCURSES history.
Revision 1.7.12002-06-25Revised by: ppadala
Added a README file for building and -instructions for building from source.
Revision 1.72002-06-25Revised by: ppadala
Added "Other formats" section and made -a lot of fancy changes to the programs. Inlining of programs is -gone.
Revision 1.6.12002-02-24Revised by: ppadala
Removed the old Changelog section, -cleaned the makefiles
Revision 1.62002-02-16Revised by: ppadala
Corrected a lot of spelling mistakes, -added ACS variables section
Revision 1.52002-01-05Revised by: ppadala
Changed structure to present proper -TOC
Revision 1.3.12001-07-26Revised by: ppadala
Corrected maintainers paragraph, -Corrected stable release number
Revision 1.32001-07-24Revised by: ppadala
Added copyright notices to main -document (LDP license) and programs (GPL), Corrected -printw_example.
Revision 1.22001-06-05Revised by: ppadala
Incorporated ravi's changes. Mainly to -introduction, menu, form, justforfun sections
Revision 1.12001-05-22Revised by: ppadala
Added "a word about window" section, -Added scanw_example.
-
-
-
-

This document is intended to be an "All in One" guide for -programming with ncurses and its sister libraries. We graduate from -a simple "Hello World" program to more complex form manipulation. -No prior experience in ncurses is assumed. Send comments to -this -address

-
-
-
-
-
-
Table of Contents
-
1. Introduction
-
-
-
1.1. What is NCURSES?
-
1.2. What we can do with -NCURSES
-
1.3. Where to get it
-
1.4. Purpose/Scope of the document
-
1.5. About the Programs
-
1.6. Other Formats of the -document
-
1.7. Credits
-
1.8. Wish List
-
1.9. Copyright
-
-
-
2. Hello World !!!
-
-
-
2.1. Compiling With the NCURSES -Library
-
2.2. Dissection
-
-
-
3. The Gory Details
-
4. Initialization
-
-
-
4.1. Initialization functions
-
4.2. raw() and cbreak()
-
4.3. echo() and noecho()
-
4.4. keypad()
-
4.5. halfdelay()
-
4.6. Miscellaneous Initialization -functions
-
4.7. An Example
-
-
-
5. A Word about Windows
-
6. Output functions
-
-
-
6.1. addch() class of functions
-
6.2. mvaddch(), waddch() and -mvwaddch()
-
6.3. printw() class of -functions
-
6.4. addstr() class of -functions
-
6.5. A word of caution
-
-
-
7. Input functions
-
-
-
7.1. getch() class of functions
-
7.2. scanw() class of functions
-
7.3. getstr() class of -functions
-
7.4. Some examples
-
-
-
8. Attributes
-
-
-
8.1. The details
-
8.2. attron() vs attrset()
-
8.3. attr_get()
-
8.4. attr_ functions
-
8.5. wattr functions
-
8.6. chgat() functions
-
-
-
9. Windows
-
-
-
9.1. The basics
-
9.2. Let there be a Window !!!
-
9.3. Explanation
-
9.4. The other stuff in the -example
-
9.5. Other Border -functions
-
-
-
10. Colors
-
-
-
10.1. The basics
-
10.2. Changing Color -Definitions
-
10.3. Color Content
-
-
-
11. Interfacing with the key board
-
-
-
11.1. The Basics
-
11.2. A Simple Key Usage -example
-
-
-
12. Interfacing with the mouse
-
-
-
12.1. The Basics
-
12.2. Getting the events
-
12.3. Putting it all Together
-
12.4. Miscellaneous -Functions
-
-
-
13. Screen Manipulation
-
-
-
13.1. getyx() functions
-
13.2. Screen Dumping
-
13.3. Window Dumping
-
-
-
14. Miscellaneous features
-
-
-
14.1. curs_set()
-
14.2. Temporarily Leaving Curses -mode
-
14.3. ACS_ variables
-
-
-
15. Other libraries
-
16. Panel Library
-
-
-
16.1. The Basics
-
16.2. Compiling With the Panels -Library
-
16.3. Panel Window Browsing
-
16.4. Using User Pointers
-
16.5. Moving and Resizing -Panels
-
16.6. Hiding and Showing -Panels
-
16.7. panel_above() and panel_below() -Functions
-
-
-
17. Menus Library
-
-
-
17.1. The Basics
-
17.2. Compiling With the Menu -Library
-
17.3. Menu Driver: The work horse of the -menu system
-
17.4. Menu Windows
-
17.5. Scrolling Menus
-
17.6. Multi Columnar Menus
-
17.7. Multi Valued Menus
-
17.8. Menu Options
-
17.9. The useful User Pointer
-
-
-
18. Forms Library
-
-
-
18.1. The Basics
-
18.2. Compiling With the Forms -Library
-
18.3. Playing with Fields
-
18.4. Form Windows
-
18.5. Field Validation
-
18.6. Form Driver: The work horse of the -forms system
-
-
-
19. Tools and Widget Libraries
-
-
-
19.1. CDK (Curses Development Kit)
-
19.2. The dialog
-
19.3. Perl Curses Modules CURSES::FORM -and CURSES::WIDGETS
-
-
-
20. Just For Fun !!!
-
-
-
20.1. The Game of Life
-
20.2. Magic Square
-
20.3. Towers of Hanoi
-
20.4. Queens Puzzle
-
20.5. Shuffle
-
20.6. Typing Tutor
-
-
-
21. References
-
-
-
-

1. -Introduction

-

In the olden days of teletype terminals, terminals were away -from computers and were connected to them through serial cables. -The terminals could be configured by sending a series of bytes. All -the capabilities (such as moving the cursor to a new location, -erasing part of the screen, scrolling the screen, changing modes -etc.) of terminals could be accessed through these series of bytes. -These control seeuqnces are usually called escape sequences, -because they start with an escape(0x1B) character. Even today, with -proper emulation, we can send escape sequences to the emulator and -achieve the same effect on a terminal window.

-

Suppose you wanted to print a line in color. Try typing this on -your console.

- - - - -
-
-echo "^[[0;31;40mIn Color"
-
-

The first character is an escape character, which looks like two -characters ^ and [. To be able to print it, you have to press -CTRL+V and then the ESC key. All the others are normal printable -characters. You should be able to see the string "In Color" in red. -It stays that way and to revert back to the original mode type -this.

- - - - -
-
-echo "^[[0;37;40m"
-
-

Now, what do these magic characters mean? Difficult to -comprehend? They might even be different for different terminals. -So the designers of UNIX invented a mechanism named termcap. It is a file that lists all the -capabilities of a particular terminal, along with the escape -sequences needed to achieve a particular effect. In the later -years, this was replaced by terminfo. -Without delving too much into details, this mechanism allows -application programs to query the terminfo database and obtain the -control characters to be sent to a terminal or terminal -emulator.

-
-
-

1.1. What is -NCURSES?

-

You might be wondering, what the import of all this technical -gibberish is. In the above scenario, every application program is -supposed to query the terminfo and perform the necessary stuff -(sending control characters etc.). It soon became difficult to -manage this complexity and this gave birth to 'CURSES'. Curses is a -pun on the name "cursor optimization". The Curses library forms a -wrapper over working with raw terminal codes, and provides highly -flexible and efficient API (Application Programming Interface). It -provides functions to move the cursor, create windows, produce -colors, play with mouse etc. The application programs need not -worry about the underlying terminal capabilities.

-

So what is NCURSES? NCURSES is a clone of the original System V -Release 4.0 (SVr4) curses. It is a freely distributable library, -fully compatible with older version of curses. In short, it is a -library of functions that manages an application's display on -character-cell terminals. In the remainder of the document, the -terms curses and ncurses are used interchangeably.

-

A detailed history of NCURSES can be found in the NEWS file from -the source distribution. The current package is maintained by -Thomas Dickey. -You can contact the maintainers at bug-ncurses@gnu.org.

-
-
-
-

1.2. What -we can do with NCURSES

-

NCURSES not only creates a wrapper over terminal capabilities, -but also gives a robust framework to create nice looking UI (User -Interface)s in text mode. It provides functions to create windows -etc. Its sister libraries panel, menu and form provide an extension -to the basic curses library. These libraries usually come along -with curses. One can create applications that contain multiple -windows, menus, panels and forms. Windows can be managed -independently, can provide 'scrollability' and even can be -hidden.

-

Menus provide the user with an easy command selection option. -Forms allow the creation of easy-to-use data entry and display -windows. Panels extend the capabilities of ncurses to deal with -overlapping and stacked windows.

-

These are just some of the basic things we can do with ncurses. -As we move along, We will see all the capabilities of these -libraries.

-
-
-
-

1.3. -Where to get it

-

All right, now that you know what you can do with ncurses, you -must be rearing to get started. NCURSES is usually shipped with -your installation. In case you don't have the library or want to -compile it on your own, read on.

-

Compiling the package

-

NCURSES can be obtained from ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz or any -of the ftp sites mentioned in http://www.gnu.org/order/ftp.html.

-

Read the README and INSTALL files for details on to how to -install it. It usually involves the following operations.

- - - - -
-
-    tar zxvf ncurses<version>.tar.gz  # unzip and untar the archive
-    cd ncurses<version>               # cd to the directory
-    ./configure                             # configure the build according to your 
-                                            # environment
-    make                                    # make it
-    su root                                 # become root
-    make install                            # install it
-
-

Using the RPM

-

NCURSES RPM can be found and downloaded from http://rpmfind.net . The RPM -can be installed with the following command after becoming -root.

- - - - -
-
-    rpm -i <downloaded rpm>
-
-
-
-
-

1.4. Purpose/Scope -of the document

-

This document is intended to be a "All in One" guide for -programming with ncurses and its sister libraries. We graduate from -a simple "Hello World" program to more complex form manipulation. -No prior experience in ncurses is assumed. The writing is informal, -but a lot of detail is provided for each of the examples.

-
-
-
-

1.5. -About the Programs

-

All the programs in the document are available in zipped form -here. Unzip and untar it. The directory structure -looks like this.

- - - - -
-
-ncurses
-   |
-   |----> JustForFun     -- just for fun programs
-   |----> basics         -- basic programs
-   |----> demo           -- output files go into this directory after make
-   |          |
-   |          |----> exe -- exe files of all example programs
-   |----> forms          -- programs related to form library
-   |----> menus          -- programs related to menus library
-   |----> panels         -- programs related to panels library
-   |----> perl           -- perl equivalents of the examples (contributed
-   |                            by Anuradha Ratnaweera)
-   |----> Makefile       -- the top level Makefile
-   |----> README         -- the top level README file. contains instructions
-   |----> COPYING        -- copyright notice
-
-

The individual directories contain the following files.

- - - - -
-
-Description of files in each directory
---------------------------------------
-JustForFun
-    |
-    |----> hanoi.c   -- The Towers of Hanoi Solver
-    |----> life.c    -- The Game of Life demo
-    |----> magic.c   -- An Odd Order Magic Square builder 
-    |----> queens.c  -- The famous N-Queens Solver
-    |----> shuffle.c -- A fun game, if you have time to kill
-    |----> tt.c      -- A very trivial typing tutor
-
-  basics
-    |
-    |----> acs_vars.c            -- ACS_ variables example
-    |----> hello_world.c         -- Simple "Hello World" Program
-    |----> init_func_example.c   -- Initialization functions example
-    |----> key_code.c            -- Shows the scan code of the key pressed
-    |----> mouse_menu.c          -- A menu accessible by mouse
-    |----> other_border.c        -- Shows usage of other border functions apa
-    |                               -- rt from box()
-    |----> printw_example.c      -- A very simple printw() example
-    |----> scanw_example.c       -- A very simple getstr() example
-    |----> simple_attr.c         -- A program that can print a c file with 
-    |                               -- comments in attribute
-    |----> simple_color.c        -- A simple example demonstrating colors
-    |----> simple_key.c          -- A menu accessible with keyboard UP, DOWN 
-    |                               -- arrows
-    |----> temp_leave.c          -- Demonstrates temporarily leaving curses mode
-    |----> win_border.c          -- Shows Creation of windows and borders
-    |----> with_chgat.c          -- chgat() usage example
-
-  forms 
-    |
-    |----> form_attrib.c     -- Usage of field attributes
-    |----> form_options.c    -- Usage of field options
-    |----> form_simple.c     -- A simple form example
-    |----> form_win.c        -- Demo of windows associated with forms
-
-  menus 
-    |
-    |----> menu_attrib.c     -- Usage of menu attributes
-    |----> menu_item_data.c  -- Usage of item_name() etc.. functions
-    |----> menu_multi_column.c    -- Creates multi columnar menus
-    |----> menu_scroll.c     -- Demonstrates scrolling capability of menus
-    |----> menu_simple.c     -- A simple menu accessed by arrow keys
-    |----> menu_toggle.c     -- Creates multi valued menus and explains
-    |                           -- REQ_TOGGLE_ITEM
-    |----> menu_userptr.c    -- Usage of user pointer
-    |----> menu_win.c        -- Demo of windows associated with menus
-
-  panels 
-    |
-    |----> panel_browse.c    -- Panel browsing through tab. Usage of user 
-    |                           -- pointer
-    |----> panel_hide.c      -- Hiding and Un hiding of panels
-    |----> panel_resize.c    -- Moving and resizing of panels
-    |----> panel_simple.c    -- A simple panel example
-
-  perl
-    |----> 01-10.pl          -- Perl equivalents of first ten example programs
-
-

There is a top level Makefile included in the main directory. It -builds all the files and puts the ready-to-use exes in demo/exe -directory. You can also do selective make by going into the -corresponding directory. Each directory contains a README file -explaining the purpose of each c file in the directory.

-

For every example, I have included path name for the file -relative to the examples directory.

-

If you prefer browsing individual programs, point your browser -to http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/

-

All the programs are released under the same license that is -used by ncurses (MIT-style). This gives you the ability to do -pretty much anything other than claiming them as yours. Feel free -to use them in your programs as appropriate.

-
-
-
-

1.6. -Other Formats of the document

-

This howto is also availabe in various other formats on the -tldp.org site. Here are the links to other formats of this -document.

- -
-
-

1.6.2. -Building from source

-

If above links are broken or if you want to experiment with sgml -read on.

- - - - -
-
-
    Get both the source and the tar,gzipped programs, available at
-        http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
-        NCURSES-HOWTO/NCURSES-Programming-HOWTO.sgml
-        http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
-        NCURSES-HOWTO/ncurses_programs.tar.gz
-
-    Unzip ncurses_programs.tar.gz with
-    tar zxvf ncurses_programs.tar.gz
-
-    Use jade to create various formats. For example if you just want to create
-    the multiple html files, you would use
-        jade -t sgml -i html -d <path to docbook html stylesheet>
-        NCURSES-Programming-HOWTO.sgml
-    to get pdf, first create a single html file of the HOWTO with 
-        jade -t sgml -i html -d <path to docbook html stylesheet> -V nochunks
-        NCURSES-Programming-HOWTO.sgml > NCURSES-ONE-BIG-FILE.html
-    then use htmldoc to get pdf file with
-        htmldoc --size universal -t pdf --firstpage p1 -f <output file name.pdf>
-        NCURSES-ONE-BIG-FILE.html
-    for ps, you would use
-        htmldoc --size universal -t ps --firstpage p1 -f <output file name.ps>
-        NCURSES-ONE-BIG-FILE.html
-
-

See LDP Author guide for more details. If all else failes, -mail me at ppadala@gmail.com

-
-
-
-
-

1.7. -Credits

-

I thank Sharath and Emre Akbas for helping me with few sections. -The introduction was initially written by sharath. I rewrote it -with few excerpts taken from his initial work. Emre helped in -writing printw and scanw sections.

-

Perl equivalents of the example programs are contributed by -Anuradha -Ratnaweera.

-

Then comes Ravi Parimi, my dearest friend, who has been on this -project before even one line was written. He constantly bombarded -me with suggestions and patiently reviewed the whole text. He also -checked each program on Linux and Solaris.

-
-
-
-

1.8. Wish -List

-

This is the wish list, in the order of priority. If you have a -wish or you want to work on completing the wish, mail me.

-
    -
  • -

    Add examples to last parts of forms section.

    -
  • -
  • -

    Prepare a Demo showing all the programs and allow the user to -browse through description of each program. Let the user compile -and see the program in action. A dialog based interface is -preferred.

    -
  • -
  • -

    Add debug info. _tracef, _tracemouse stuff.

    -
  • -
  • -

    Accessing termcap, terminfo using functions provided by ncurses -package.

    -
  • -
  • -

    Working on two terminals simultaneously.

    -
  • -
  • -

    Add more stuff to miscellaneous section.

    -
  • -
-
-
-
-

1.9. -Copyright

-

Copyright © 2001 by Pradeep Padala.

-

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.

-
-
-
-
-

2. Hello -World !!!

-

Welcome to the world of curses. Before we plunge into the -library and look into its various features, let's write a simple -program and say hello to the world.

-
-
-

2.1. -Compiling With the NCURSES Library

-

To use ncurses library functions, you have to include ncurses.h -in your programs. To link the program with ncurses the flag --lncurses should be added.

- - - - -
-
-    #include <ncurses.h>
-    .
-    .
-    .
-
-    compile and link: gcc <program file> -lncurses
-
-
-

Example 1. The Hello World !!! Program

- - - - -
-
-#include <ncurses.h>
-
-int main()
-{       
-        initscr();                      /* Start curses mode              */
-        printw("Hello World !!!");      /* Print Hello World              */
-        refresh();                      /* Print it on to the real screen */
-        getch();                        /* Wait for user input */
-        endwin();                       /* End curses mode                */
-
-        return 0;
-}
-
-
-
-
-
-

2.2. -Dissection

-

The above program prints "Hello World !!!" to the screen and -exits. This program shows how to initialize curses and do screen -manipulation and end curses mode. Let's dissect it line by -line.

-
-
-

2.2.1. -About initscr()

-

The function initscr() initializes the terminal in curses mode. -In some implementations, it clears the screen and presents a blank -screen. To do any screen manipulation using curses package this has -to be called first. This function initializes the curses system and -allocates memory for our present window (called stdscr) and some other data-structures. Under -extreme cases this function might fail due to insufficient memory -to allocate memory for curses library's data structures.

-

After this is done, we can do a variety of initializations to -customize our curses settings. These details will be explained -later .

-
-
-
-

2.2.2. -The mysterious refresh()

-

The next line printw prints the string "Hello World !!!" on to -the screen. This function is analogous to normal printf in all -respects except that it prints the data on a window called stdscr -at the current (y,x) co-ordinates. Since our present co-ordinates -are at 0,0 the string is printed at the left hand corner of the -window.

-

This brings us to that mysterious refresh(). Well, when we -called printw the data is actually written to an imaginary window, -which is not updated on the screen yet. The job of printw is to -update a few flags and data structures and write the data to a -buffer corresponding to stdscr. In order to show it on the screen, -we need to call refresh() and tell the curses system to dump the -contents on the screen.

-

The philosophy behind all this is to allow the programmer to do -multiple updates on the imaginary screen or windows and do a -refresh once all his screen update is done. refresh() checks the -window and updates only the portion which has been changed. This -improves performance and offers greater flexibility too. But, it is -sometimes frustrating to beginners. A common mistake committed by -beginners is to forget to call refresh() after they did some update -through printw() class of functions. I still forget to add it -sometimes :-)

-
-
-
-

2.2.3. -About endwin()

-

And finally don't forget to end the curses mode. Otherwise your -terminal might behave strangely after the program quits. endwin() -frees the memory taken by curses sub-system and its data structures -and puts the terminal in normal mode. This function must be called -after you are done with the curses mode.

-
-
-
-
-
-

3. The Gory -Details

-

Now that we have seen how to write a simple curses program let's -get into the details. There are many functions that help customize -what you see on screen and many features which can be put to full -use.

-

Here we go...

-
-
-
-

4. -Initialization

-

We now know that to initialize curses system the function -initscr() has to be called. There are functions which can be called -after this initialization to customize our curses session. We may -ask the curses system to set the terminal in raw mode or initialize -color or initialize the mouse etc.. Let's discuss some of the -functions that are normally called immediately after initscr();

- -
-
-

4.2. raw() and -cbreak()

-

Normally the terminal driver buffers the characters a user types -until a new line or carriage return is encountered. But most -programs require that the characters be available as soon as the -user types them. The above two functions are used to disable line -buffering. The difference between these two functions is in the way -control characters like suspend (CTRL-Z), interrupt and quit -(CTRL-C) are passed to the program. In the raw() mode these -characters are directly passed to the program without generating a -signal. In the cbreak() mode these -control characters are interpreted as any other character by the -terminal driver. I personally prefer to use raw() as I can exercise -greater control over what the user does.

-
-
-
-

4.3. echo() -and noecho()

-

These functions control the echoing of characters typed by the -user to the terminal. noecho() switches -off echoing. The reason you might want to do this is to gain more -control over echoing or to suppress unnecessary echoing while -taking input from the user through the getch() etc. functions. Most -of the interactive programs call noecho() at initialization and do the echoing of -characters in a controlled manner. It gives the programmer the -flexibility of echoing characters at any place in the window -without updating current (y,x) co-ordinates.

-
-
-
-

4.4. -keypad()

-

This is my favorite initialization function. It enables the -reading of function keys like F1, F2, arrow keys etc. Almost every -interactive program enables this, as arrow keys are a major part of -any User Interface. Do keypad(stdscr, -TRUE) to enable this feature for the regular screen (stdscr). -You will learn more about key management in later sections of this -document.

-
-
-
-

4.5. -halfdelay()

-

This function, though not used very often, is a useful one at -times. halfdelay()is called to enable the half-delay mode, which is -similar to the cbreak() mode in that characters typed are -immediately available to program. However, it waits for 'X' tenths -of a second for input and then returns ERR, if no input is -available. 'X' is the timeout value passed to the function -halfdelay(). This function is useful when you want to ask the user -for input, and if he doesn't respond with in certain time, we can -do some thing else. One possible example is a timeout at the -password prompt.

-
-
-
-

4.6. -Miscellaneous Initialization functions

-

There are few more functions which are called at initialization -to customize curses behavior. They are not used as extensively as -those mentioned above. Some of them are explained where -appropriate.

-
-
-
-

4.7. An -Example

-

Let's write a program which will clarify the usage of these -functions.

-
-

Example 2. Initialization Function Usage example

- - - - -
-
-#include <ncurses.h>
-
-int main()
-{       int ch;
-
-        initscr();                      /* Start curses mode            */
-        raw();                          /* Line buffering disabled      */
-        keypad(stdscr, TRUE);           /* We get F1, F2 etc..          */
-        noecho();                       /* Don't echo() while we do getch */
-
-        printw("Type any character to see it in bold\n");
-        ch = getch();                   /* If raw() hadn't been called
-                                         * we have to press enter before it
-                                         * gets to the program          */
-        if(ch == KEY_F(1))              /* Without keypad enabled this will */
-                printw("F1 Key pressed");/*  not get to us either       */
-                                        /* Without noecho() some ugly escape
-                                         * charachters might have been printed
-                                         * on screen                    */
-        else
-        {       printw("The pressed key is ");
-                attron(A_BOLD);
-                printw("%c", ch);
-                attroff(A_BOLD);
-        }
-        refresh();                      /* Print it on to the real screen */
-        getch();                        /* Wait for user input */
-        endwin();                       /* End curses mode                */
-
-        return 0;
-}
-
-
-

This program is self-explanatory. But I used functions which -aren't explained yet. The function getch() is used to get a character from user. It is -equivalent to normal getchar() except -that we can disable the line buffering to avoid <enter> after -input. Look for more about getch()and -reading keys in the key management section . -The functions attron and attroff are used to switch some attributes -on and off respectively. In the example I used them to print the -character in bold. These functions are explained in detail -later.

-
-
-
-
-

5. A -Word about Windows

-

Before we plunge into the myriad ncurses functions, let me clear -few things about windows. Windows are explained in detail in -following sections

-

A Window is an imaginary screen defined by curses system. A -window does not mean a bordered window which you usually see on -Win9X platforms. When curses is initialized, it creates a default -window named stdscr which represents -your 80x25 (or the size of window in which you are running) screen. -If you are doing simple tasks like printing few strings, reading -input etc., you can safely use this single window for all of your -purposes. You can also create windows and call functions which -explicitly work on the specified window.

-

For example, if you call

- - - - -
-
-    printw("Hi There !!!");
-    refresh();
-
-

It prints the string on stdscr at the present cursor position. -Similarly the call to refresh(), works on stdscr only.

-

Say you have created windows then you -have to call a function with a 'w' added to the usual function.

- - - - -
-
-    wprintw(win, "Hi There !!!");
-    wrefresh(win);
-
-

As you will see in the rest of the document, naming of functions -follow the same convention. For each function there usually are -three more functions.

- - - - -
-
-    printw(string);        /* Print on stdscr at present cursor position */
-    mvprintw(y, x, string);/* Move to (y, x) then print string     */
-    wprintw(win, string);  /* Print on window win at present cursor position */
-                           /* in the window */
-    mvwprintw(win, y, x, string);   /* Move to (y, x) relative to window */
-                                    /* co-ordinates and then print         */
-
-

Usually the w-less functions are macros which expand to -corresponding w-function with stdscr as the window parameter.

-
-
-
-

6. Output -functions

-

I guess you can't wait any more to see some action. Back to our -odyssey of curses functions. Now that curses is initialized, let's -interact with world.

-

There are three classes of functions which you can use to do -output on screen.

-
    -
  1. -

    addch() class: Print single character with attributes

    -
  2. -
  3. -

    printw() class: Print formatted output similar to printf()

    -
  4. -
  5. -

    addstr() class: Print strings

    -
  6. -
-

These functions can be used interchangeably and it's a matter of -style as to which class is used. Let's see each one in detail.

-
-
-

6.1. addch() -class of functions

-

These functions put a single character into the current cursor -location and advance the position of the cursor. You can give the -character to be printed but they usually are used to print a -character with some attributes. Attributes are explained in detail -in later sections of the document. If a -character is associated with an attribute(bold, reverse video -etc.), when curses prints the character, it is printed in that -attribute.

-

In order to combine a character with some attributes, you have -two options:

-
    -
  • -

    By OR'ing a single character with the desired attribute macros. -These attribute macros could be found in the header file -ncurses.h. For example, you want to -print a character ch(of type char) bold and underlined, you would -call addch() as below.

    - - - - -
    -
    -    addch(ch | A_BOLD | A_UNDERLINE);
    -
    -
  • -
  • -

    By using functions like attrset(),attron(),attroff(). These functions are -explained in the Attributes section. Briefly, -they manipulate the current attributes of the given window. Once -set, the character printed in the window are associated with the -attributes until it is turned off.

    -
  • -
-

Additionally, curses provides some -special characters for character-based graphics. You can draw -tables, horizontal or vertical lines, etc. You can find all -avaliable characters in the header file ncurses.h. Try looking for macros beginning with -ACS_ in this file.

-
-
-
-

6.2. mvaddch(), -waddch() and mvwaddch()

-

mvaddch() is used to move the cursor -to a given point, and then print. Thus, the calls:

- - - - -
-
-    move(row,col);    /* moves the cursor to rowth row and colth column */
-    addch(ch);
-
-can be replaced by - - - - -
-
-    mvaddch(row,col,ch);
-
-

waddch() is similar to addch(), except that it adds a character into the -given window. (Note that addch() adds a -character into the window stdscr.)

-

In a similar fashion mvwaddch() -function is used to add a character into the given window at the -given coordinates.

-

Now, we are familiar with the basic output function addch(). But, if we want to print a string, it -would be very annoying to print it character by character. -Fortunately, ncurses provides -printf-like or puts-like functions.

-
-
-
-

6.3. -printw() class of functions

-

These functions are similar to printf() with the added capability of printing at -any position on the screen.

-
-
-

6.3.1. printw() and mvprintw

-

These two functions work much like printf(). mvprintw() can -be used to move the cursor to a position and then print. If you -want to move the cursor first and then print using printw() function, use move() first and then use printw() though I see no point why one should avoid -using mvprintw(), you have the -flexibility to manipulate.

-
-
-
-

6.3.2. wprintw() and mvwprintw

-

These two functions are similar to above two except that they -print in the corresponding window given as argument.

-
-
-
-

6.3.3. -vwprintw()

-

This function is similar to vprintf(). This can be used when variable number of -arguments are to be printed.

-
-
-
-

6.3.4. A Simple printw example

-
-

Example 3. A Simple printw example

- - - - -
-
-#include <ncurses.h>                   /* ncurses.h includes stdio.h */  
-#include <string.h> 
- 
-int main()
-{
- char mesg[]="Just a string";           /* message to be appeared on the screen */
- int row,col;                           /* to store the number of rows and *
-                                         * the number of colums of the screen */
- initscr();                             /* start the curses mode */
- getmaxyx(stdscr,row,col);              /* get the number of rows and columns */
- mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
-                                        /* print the message at the center of the screen */
- mvprintw(row-2,0,"This screen has %d rows and %d columns\n",row,col);
- printw("Try resizing your window(if possible) and then run this program again");
- refresh();
- getch();
- endwin();
-
- return 0;
-}
-
-
-

Above program demonstrates how easy it is to use printw. You just feed the coordinates and the -message to be appeared on the screen, then it does what you -want.

-

The above program introduces us to a new function getmaxyx(), a macro defined in ncurses.h. It gives the number of columns and the -number of rows in a given window. getmaxyx() does this by updating the variables -given to it. Since getmaxyx() is not a -function we don't pass pointers to it, we just give two integer -variables.

-
-
-
-
-

6.4. -addstr() class of functions

-

addstr() is used to put a character -string into a given window. This function is similar to calling -addch() once for each character in a -given string. This is true for all output functions. There are -other functions from this family such as mvaddstr(),mvwaddstr() and waddstr(), which obey the naming convention of -curses.(e.g. mvaddstr() is similar to the respective calls move() -and then addstr().) Another function of this family is addnstr(), -which takes an integer parameter(say n) additionally. This function -puts at most n characters into the screen. If n is negative, then -the entire string will be added.

-
-
-
-

6.5. A word of -caution

-

All these functions take y co-ordinate first and then x in their -arguments. A common mistake by beginners is to pass x,y in that -order. If you are doing too many manipulations of (y,x) -co-ordinates, think of dividing the screen into windows and -manipulate each one separately. Windows are explained in the -windows section.

-
-
-
-
-

7. Input -functions

-

Well, printing without taking input, is boring. Let's see -functions which allow us to get input from user. These functions -also can be divided into three categories.

-
    -
  1. -

    getch() class: Get a character

    -
  2. -
  3. -

    scanw() class: Get formatted input

    -
  4. -
  5. -

    getstr() class: Get strings

    -
  6. -
-
-
-

7.1. getch() -class of functions

-

These functions read a single character from the terminal. But -there are several subtle facts to consider. For example if you -don't use the function cbreak(), curses will not read your input -characters contiguously but will begin read them only after a new -line or an EOF is encountered. In order to avoid this, the cbreak() -function must used so that characters are immediately available to -your program. Another widely used function is noecho(). As the name -suggests, when this function is set (used), the characters that are -keyed in by the user will not show up on the screen. The two -functions cbreak() and noecho() are typical examples of key -management. Functions of this genre are explained in the key management section .

-
-
-
-

7.2. scanw() -class of functions

-

These functions are similar to scanf() with the added capability of getting the -input from any location on the screen.

-
-
-

7.2.1. -scanw() and mvscanw

-

The usage of these functions is similar to that of sscanf(), where the line to be scanned is provided -by wgetstr() function. That is, these -functions call to wgetstr() -function(explained below) and uses the resulting line for a -scan.

-
-
-
-

7.2.2. wscanw() and mvwscanw()

-

These are similar to above two functions except that they read -from a window, which is supplied as one of the arguments to these -functions.

-
-
-
-

7.2.3. -vwscanw()

-

This function is similar to vscanf(). -This can be used when a variable number of arguments are to be -scanned.

-
-
-
-
-

7.3. -getstr() class of functions

-

These functions are used to get strings from the terminal. In -essence, this function performs the same task as would be achieved -by a series of calls to getch() until a -newline, carriage return, or end-of-file is received. The resulting -string of characters are pointed to by str, which is a character pointer provided by the -user.

-
-
-
-

7.4. Some -examples

-
-

Example 4. A Simple scanw example

- - - - -
-
-#include <ncurses.h>                   /* ncurses.h includes stdio.h */  
-#include <string.h> 
- 
-int main()
-{
- char mesg[]="Enter a string: ";                /* message to be appeared on the screen */
- char str[80];
- int row,col;                           /* to store the number of rows and *
-                                         * the number of colums of the screen */
- initscr();                             /* start the curses mode */
- getmaxyx(stdscr,row,col);              /* get the number of rows and columns */
- mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
-                                /* print the message at the center of the screen */
- getstr(str);
- mvprintw(LINES - 2, 0, "You Entered: %s", str);
- getch();
- endwin();
-
- return 0;
-}
-
-
-
-
-
-
-

8. -Attributes

-

We have seen an example of how attributes can be used to print -characters with some special effects. Attributes, when set -prudently, can present information in an easy, understandable -manner. The following program takes a C file as input and prints -the file with comments in bold. Scan through the code.

-
-

Example 5. A Simple Attributes example

- - - - -
-
-/* pager functionality by Joseph Spainhour" <spainhou@bellsouth.net> */
-#include <ncurses.h>
-#include <stdlib.h>
-
-int main(int argc, char *argv[])
-{ 
-  int ch, prev, row, col;
-  prev = EOF;
-  FILE *fp;
-  int y, x;
-
-  if(argc != 2)
-  {
-    printf("Usage: %s <a c file name>\n", argv[0]);
-    exit(1);
-  }
-  fp = fopen(argv[1], "r");
-  if(fp == NULL)
-  {
-    perror("Cannot open input file");
-    exit(1);
-  }
-  initscr();                            /* Start curses mode */
-  getmaxyx(stdscr, row, col);           /* find the boundaries of the screeen */
-  while((ch = fgetc(fp)) != EOF)        /* read the file till we reach the end */
-  {
-    getyx(stdscr, y, x);                /* get the current curser position */
-    if(y == (row - 1))                  /* are we are at the end of the screen */
-    {
-      printw("<-Press Any Key->");      /* tell the user to press a key */
-      getch();
-      clear();                          /* clear the screen */
-      move(0, 0);                       /* start at the beginning of the screen */
-    }
-    if(prev == '/' && ch == '*')        /* If it is / and * then only
-                                         * switch bold on */    
-    {
-      attron(A_BOLD);                   /* cut bold on */
-      getyx(stdscr, y, x);              /* get the current curser position */
-      move(y, x - 1);                   /* back up one space */
-      printw("%c%c", '/', ch);          /* The actual printing is done here */
-    }
-    else
-      printw("%c", ch);
-    refresh();
-    if(prev == '*' && ch == '/')
-      attroff(A_BOLD);                  /* Switch it off once we got *
-                                         * and then / */
-    prev = ch;
-  }
-  endwin();                             /* End curses mode */
-  fclose(fp);
-  return 0;
-}
-
-
-

Don't worry about all those initialization and other crap. -Concentrate on the while loop. It reads each character in the file -and searches for the pattern /*. Once it spots the pattern, it -switches the BOLD attribute on with attron() . When we get the pattern */ it is -switched off by attroff() .

-

The above program also introduces us to two useful functions -getyx() and move(). The first function gets the co-ordinates of -the present cursor into the variables y, x. Since getyx() is a -macro we don't have to pass pointers to variables. The function -move() moves the cursor to the -co-ordinates given to it.

-

The above program is really a simple one which doesn't do much. -On these lines one could write a more useful program which reads a -C file, parses it and prints it in different colors. One could even -extend it to other languages as well.

-
-
-

8.1. -The details

-

Let's get into more details of attributes. The functions -attron(), attroff(), attrset() , and -their sister functions attr_get() etc.. -can be used to switch attributes on/off , get attributes and -produce a colorful display.

-

The functions attron and attroff take a bit-mask of attributes -and switch them on or off, respectively. The following video -attributes, which are defined in <curses.h> can be passed to -these functions.

- - - - -
-
-    
-    A_NORMAL        Normal display (no highlight)
-    A_STANDOUT      Best highlighting mode of the terminal.
-    A_UNDERLINE     Underlining
-    A_REVERSE       Reverse video
-    A_BLINK         Blinking
-    A_DIM           Half bright
-    A_BOLD          Extra bright or bold
-    A_PROTECT       Protected mode
-    A_INVIS         Invisible or blank mode
-    A_ALTCHARSET    Alternate character set
-    A_CHARTEXT      Bit-mask to extract a character
-    COLOR_PAIR(n)   Color-pair number n 
-    
-
-

The last one is the most colorful one :-) Colors are explained -in the next sections.

-

We can OR(|) any number of above attributes to get a combined -effect. If you wanted reverse video with blinking characters you -can use

- - - - -
-
-    attron(A_REVERSE | A_BLINK);
-
-
-
-
-

8.2. attron() vs attrset()

-

Then what is the difference between attron() and attrset()? -attrset sets the attributes of window whereas attron just switches -on the attribute given to it. So attrset() fully overrides whatever -attributes the window previously had and sets it to the new -attribute(s). Similarly attroff() just switches off the -attribute(s) given to it as an argument. This gives us the -flexibility of managing attributes easily.But if you use them -carelessly you may loose track of what attributes the window has -and garble the display. This is especially true while managing -menus with colors and highlighting. So decide on a consistent -policy and stick to it. You can always use standend() which is equivalent to attrset(A_NORMAL) which turns off all attributes -and brings you to normal mode.

-
-
-
-

8.3. -attr_get()

-

The function attr_get() gets the current attributes and color -pair of the window. Though we might not use this as often as the -above functions, this is useful in scanning areas of screen. Say we -wanted to do some complex update on screen and we are not sure what -attribute each character is associated with. Then this function can -be used with either attrset or attron to produce the desired -effect.

-
-
-
-

8.4. attr_ -functions

-

There are series of functions like attr_set(), attr_on etc.. -These are similar to above functions except that they take -parameters of type attr_t.

-
-
-
-

8.5. wattr -functions

-

For each of the above functions we have a corresponding function -with 'w' which operates on a particular window. The above functions -operate on stdscr.

-
-
-
-

8.6. chgat() -functions

-

The function chgat() is listed in the end of the man page -curs_attr. It actually is a useful one. This function can be used -to set attributes for a group of characters without moving. I mean -it !!! without moving the cursor :-) It changes the attributes of a -given number of characters starting at the current cursor -location.

-

We can give -1 as the character count to update till end of -line. If you want to change attributes of characters from current -position to end of line, just use this.

- - - - -
-
-    chgat(-1, A_REVERSE, 0, NULL);
-
-

This function is useful when changing attributes for characters -that are already on the screen. Move to the character from which -you want to change and change the attribute.

-

Other functions wchgat(), mvchgat(), wchgat() behave similarly -except that the w functions operate on the particular window. The -mv functions first move the cursor then perform the work given to -them. Actually chgat is a macro which is replaced by a wchgat() -with stdscr as the window. Most of the "w-less" functions are -macros.

-
-

Example 6. Chgat() Usage example

- - - - -
-
-#include <ncurses.h>
-
-int main(int argc, char *argv[])
-{       initscr();                      /* Start curses mode            */
-        start_color();                  /* Start color functionality    */
-        
-        init_pair(1, COLOR_CYAN, COLOR_BLACK);
-        printw("A Big string which i didn't care to type fully ");
-        mvchgat(0, 0, -1, A_BLINK, 1, NULL);    
-        /* 
-         * First two parameters specify the position at which to start 
-         * Third parameter number of characters to update. -1 means till 
-         * end of line
-         * Forth parameter is the normal attribute you wanted to give 
-         * to the charcter
-         * Fifth is the color index. It is the index given during init_pair()
-         * use 0 if you didn't want color
-         * Sixth one is always NULL 
-         */
-        refresh();
-        getch();
-        endwin();                       /* End curses mode                */
-        return 0;
-}
-
-
-

This example also introduces us to the color world of curses. -Colors will be explained in detail later. Use 0 for no color.

-
-
-
-
-

9. -Windows

-

Windows form the most important concept in curses. You have seen -the standard window stdscr above where all the functions implicitly -operated on this window. Now to make design even a simplest GUI, -you need to resort to windows. The main reason you may want to use -windows is to manipulate parts of the screen separately, for better -efficiency, by updating only the windows that need to be changed -and for a better design. I would say the last reason is the most -important in going for windows. You should always strive for a -better and easy-to-manage design in your programs. If you are -writing big, complex GUIs this is of pivotal importance before you -start doing anything.

-
-
-

9.1. The -basics

-

A Window can be created by calling the function newwin(). It doesn't create any thing on the screen -actually. It allocates memory for a structure to manipulate the -window and updates the structure with data regarding the window -like it's size, beginy, beginx etc.. Hence in curses, a window is -just an abstraction of an imaginary window, which can be -manipulated independent of other parts of screen. The function -newwin() returns a pointer to structure WINDOW, which can be passed -to window related functions like wprintw() etc.. Finally the window -can be destroyed with delwin(). It will deallocate the memory -associated with the window structure.

-
-
-
-

9.2. Let -there be a Window !!!

-

What fun is it, if a window is created and we can't see it. So -the fun part begins by displaying the window. The function -box() can be used to draw a border -around the window. Let's explore these functions in more detail in -this example.

-
-

Example 7. Window Border example

- - - - -
-
-#include <ncurses.h>
-
-
-WINDOW *create_newwin(int height, int width, int starty, int startx);
-void destroy_win(WINDOW *local_win);
-
-int main(int argc, char *argv[])
-{       WINDOW *my_win;
-        int startx, starty, width, height;
-        int ch;
-
-        initscr();                      /* Start curses mode            */
-        cbreak();                       /* Line buffering disabled, Pass on
-                                         * everty thing to me           */
-        keypad(stdscr, TRUE);           /* I need that nifty F1         */
-
-        height = 3;
-        width = 10;
-        starty = (LINES - height) / 2;  /* Calculating for a center placement */
-        startx = (COLS - width) / 2;    /* of the window                */
-        printw("Press F1 to exit");
-        refresh();
-        my_win = create_newwin(height, width, starty, startx);
-
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case KEY_LEFT:
-                                destroy_win(my_win);
-                                my_win = create_newwin(height, width, starty,--startx);
-                                break;
-                        case KEY_RIGHT:
-                                destroy_win(my_win);
-                                my_win = create_newwin(height, width, starty,++startx);
-                                break;
-                        case KEY_UP:
-                                destroy_win(my_win);
-                                my_win = create_newwin(height, width, --starty,startx);
-                                break;
-                        case KEY_DOWN:
-                                destroy_win(my_win);
-                                my_win = create_newwin(height, width, ++starty,startx);
-                                break;  
-                }
-        }
-                
-        endwin();                       /* End curses mode                */
-        return 0;
-}
-
-WINDOW *create_newwin(int height, int width, int starty, int startx)
-{       WINDOW *local_win;
-
-        local_win = newwin(height, width, starty, startx);
-        box(local_win, 0 , 0);          /* 0, 0 gives default characters 
-                                         * for the vertical and horizontal
-                                         * lines                        */
-        wrefresh(local_win);            /* Show that box                */
-
-        return local_win;
-}
-
-void destroy_win(WINDOW *local_win)
-{       
-        /* box(local_win, ' ', ' '); : This won't produce the desired
-         * result of erasing the window. It will leave it's four corners 
-         * and so an ugly remnant of window. 
-         */
-        wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
-        /* The parameters taken are 
-         * 1. win: the window on which to operate
-         * 2. ls: character to be used for the left side of the window 
-         * 3. rs: character to be used for the right side of the window 
-         * 4. ts: character to be used for the top side of the window 
-         * 5. bs: character to be used for the bottom side of the window 
-         * 6. tl: character to be used for the top left corner of the window 
-         * 7. tr: character to be used for the top right corner of the window 
-         * 8. bl: character to be used for the bottom left corner of the window 
-         * 9. br: character to be used for the bottom right corner of the window
-         */
-        wrefresh(local_win);
-        delwin(local_win);
-}
-
-
-
-
-
-

9.3. -Explanation

-

Don't scream. I know it's a big example. But I have to explain -some important things here :-). This program creates a rectangular -window that can be moved with left, right, up, down arrow keys. It -repeatedly creates and destroys windows as user press a key. Don't -go beyond the screen limits. Checking for those limits is left as -an exercise for the reader. Let's dissect it by line by line.

-

The create_newwin() function creates -a window with newwin() and displays a -border around it with box. The function destroy_win() first erases the window from screen -by painting a border with ' ' character and then calling -delwin() to deallocate memory related to -it. Depending on the key the user presses, starty or startx is -changed and a new window is created.

-

In the destroy_win, as you can see, I used wborder instead of -box. The reason is written in the comments (You missed it. I know. -Read the code :-)). wborder draws a border around the window with -the characters given to it as the 4 corner points and the 4 lines. -To put it clearly, if you have called wborder as below:

- - - - -
-
-    wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');
-
-

it produces some thing like

- - - - -
-
-    +------------+
-    |            |
-    |            |
-    |            |
-    |            |
-    |            |
-    |            |
-    +------------+
-
-
-
-
-

9.4. The -other stuff in the example

-

You can also see in the above examples, that I have used the -variables COLS, LINES which are initialized to the screen sizes -after initscr(). They can be useful in finding screen dimensions -and finding the center co-ordinate of the screen as above. The -function getch() as usual gets the key -from keyboard and according to the key it does the corresponding -work. This type of switch- case is very common in any GUI based -programs.

-
-
-
-

9.5. Other Border functions

-

Above program is grossly inefficient in that with each press of -a key, a window is destroyed and another is created. So let's write -a more efficient program which uses other border related -functions.

-

The following program uses mvhline() -and mvvline() to achieve similar effect. -These two functions are simple. They create a horizontal or -vertical line of the specified length at the specified -position.

-
-

Example 8. More border functions

- - - - -
-
-#include <ncurses.h>
-
-typedef struct _win_border_struct {
-        chtype  ls, rs, ts, bs, 
-                tl, tr, bl, br;
-}WIN_BORDER;
-
-typedef struct _WIN_struct {
-
-        int startx, starty;
-        int height, width;
-        WIN_BORDER border;
-}WIN;
-
-void init_win_params(WIN *p_win);
-void print_win_params(WIN *p_win);
-void create_box(WIN *win, bool flag);
-
-int main(int argc, char *argv[])
-{       WIN win;
-        int ch;
-
-        initscr();                      /* Start curses mode            */
-        start_color();                  /* Start the color functionality */
-        cbreak();                       /* Line buffering disabled, Pass on
-                                         * everty thing to me           */
-        keypad(stdscr, TRUE);           /* I need that nifty F1         */
-        noecho();
-        init_pair(1, COLOR_CYAN, COLOR_BLACK);
-
-        /* Initialize the window parameters */
-        init_win_params(&win);
-        print_win_params(&win);
-
-        attron(COLOR_PAIR(1));
-        printw("Press F1 to exit");
-        refresh();
-        attroff(COLOR_PAIR(1));
-        
-        create_box(&win, TRUE);
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case KEY_LEFT:
-                                create_box(&win, FALSE);
-                                --win.startx;
-                                create_box(&win, TRUE);
-                                break;
-                        case KEY_RIGHT:
-                                create_box(&win, FALSE);
-                                ++win.startx;
-                                create_box(&win, TRUE);
-                                break;
-                        case KEY_UP:
-                                create_box(&win, FALSE);
-                                --win.starty;
-                                create_box(&win, TRUE);
-                                break;
-                        case KEY_DOWN:
-                                create_box(&win, FALSE);
-                                ++win.starty;
-                                create_box(&win, TRUE);
-                                break;  
-                }
-        }
-        endwin();                       /* End curses mode                */
-        return 0;
-}
-void init_win_params(WIN *p_win)
-{
-        p_win->height = 3;
-        p_win->width = 10;
-        p_win->starty = (LINES - p_win->height)/2;      
-        p_win->startx = (COLS - p_win->width)/2;
-
-        p_win->border.ls = '|';
-        p_win->border.rs = '|';
-        p_win->border.ts = '-';
-        p_win->border.bs = '-';
-        p_win->border.tl = '+';
-        p_win->border.tr = '+';
-        p_win->border.bl = '+';
-        p_win->border.br = '+';
-
-}
-void print_win_params(WIN *p_win)
-{
-#ifdef _DEBUG
-        mvprintw(25, 0, "%d %d %d %d", p_win->startx, p_win->starty, 
-                                p_win->width, p_win->height);
-        refresh();
-#endif
-}
-void create_box(WIN *p_win, bool flag)
-{       int i, j;
-        int x, y, w, h;
-
-        x = p_win->startx;
-        y = p_win->starty;
-        w = p_win->width;
-        h = p_win->height;
-
-        if(flag == TRUE)
-        {       mvaddch(y, x, p_win->border.tl);
-                mvaddch(y, x + w, p_win->border.tr);
-                mvaddch(y + h, x, p_win->border.bl);
-                mvaddch(y + h, x + w, p_win->border.br);
-                mvhline(y, x + 1, p_win->border.ts, w - 1);
-                mvhline(y + h, x + 1, p_win->border.bs, w - 1);
-                mvvline(y + 1, x, p_win->border.ls, h - 1);
-                mvvline(y + 1, x + w, p_win->border.rs, h - 1);
-
-        }
-        else
-                for(j = y; j <= y + h; ++j)
-                        for(i = x; i <= x + w; ++i)
-                                mvaddch(j, i, ' ');
-                                
-        refresh();
-
-}
-
-
-
-
-
-
-

10. Colors

-
-

10.1. The -basics

-

Life seems dull with no colors. Curses has a nice mechanism to -handle colors. Let's get into the thick of the things with a small -program.

-
-

Example 9. A Simple Color example

- - - - -
-
-#include <ncurses.h>
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string);
-int main(int argc, char *argv[])
-{       initscr();                      /* Start curses mode            */
-        if(has_colors() == FALSE)
-        {       endwin();
-                printf("Your terminal does not support color\n");
-                exit(1);
-        }
-        start_color();                  /* Start color                  */
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-
-        attron(COLOR_PAIR(1));
-        print_in_middle(stdscr, LINES / 2, 0, 0, "Viola !!! In color ...");
-        attroff(COLOR_PAIR(1));
-        getch();
-        endwin();
-}
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string)
-{       int length, x, y;
-        float temp;
-
-        if(win == NULL)
-                win = stdscr;
-        getyx(win, y, x);
-        if(startx != 0)
-                x = startx;
-        if(starty != 0)
-                y = starty;
-        if(width == 0)
-                width = 80;
-
-        length = strlen(string);
-        temp = (width - length)/ 2;
-        x = startx + (int)temp;
-        mvwprintw(win, y, x, "%s", string);
-        refresh();
-}
-
-
-
-

As you can see, to start using color, you should first call the -function start_color(). After that, you -can use color capabilities of your terminals using various -functions. To find out whether a terminal has color capabilities or -not, you can use has_colors() function, -which returns FALSE if the terminal does not support color.

-

Curses initializes all the colors supported by terminal when -start_color() is called. These can be accessed by the define -constants like COLOR_BLACK etc. Now to -actually start using colors, you have to define pairs. Colors are -always used in pairs. That means you have to use the function -init_pair() to define the foreground and -background for the pair number you give. After that that pair -number can be used as a normal attribute with COLOR_PAIR()function. This may seem to be -cumbersome at first. But this elegant solution allows us to manage -color pairs very easily. To appreciate it, you have to look into -the the source code of "dialog", a utility for displaying dialog -boxes from shell scripts. The developers have defined foreground -and background combinations for all the colors they might need and -initialized at the beginning. This makes it very easy to set -attributes just by accessing a pair which we already have defined -as a constant.

-

The following colors are defined in curses.h. You can use these as parameters for -various color functions.

- - - - -
-
-        COLOR_BLACK   0
-        COLOR_RED     1
-        COLOR_GREEN   2
-        COLOR_YELLOW  3
-        COLOR_BLUE    4
-        COLOR_MAGENTA 5
-        COLOR_CYAN    6
-        COLOR_WHITE   7
-
-
-
-
-

10.2. Changing Color Definitions

-

The function init_color()can be used -to change the rgb values for the colors defined by curses -initially. Say you wanted to lighten the intensity of red color by -a minuscule. Then you can use this function as

- - - - -
-
-    init_color(COLOR_RED, 700, 0, 0);
-    /* param 1     : color name
-     * param 2, 3, 4 : rgb content min = 0, max = 1000 */
-
-

If your terminal cannot change the color definitions, the -function returns ERR. The function can_change_color() can be used to find out whether -the terminal has the capability of changing color content or not. -The rgb content is scaled from 0 to 1000. Initially RED color is -defined with content 1000(r), 0(g), 0(b).

-
-
-
-

10.3. -Color Content

-

The functions color_content() and -pair_content() can be used to find the -color content and foreground, background combination for the -pair.

-
-
-
-
-

11. Interfacing with the -key board

-
-

11.1. The -Basics

-

No GUI is complete without a strong user interface and to -interact with the user, a curses program should be sensitive to key -presses or the mouse actions done by the user. Let's deal with the -keys first.

-

As you have seen in almost all of the above examples, it's very -easy to get key input from the user. A simple way of getting key -presses is to use getch() function. The -cbreak mode should be enabled to read keys when you are interested -in reading individual key hits rather than complete lines of text -(which usually end with a carriage return). keypad should be -enabled to get the Functions keys, arrow keys etc. See the -initialization section for details.

-

getch() returns an integer -corresponding to the key pressed. If it is a normal character, the -integer value will be equivalent to the character. Otherwise it -returns a number which can be matched with the constants defined in -curses.h. For example if the user -presses F1, the integer returned is 265. This can be checked using -the macro KEY_F() defined in curses.h. This makes reading keys -portable and easy to manage.

-

For example, if you call getch() like this

- - - - -
-
-    int ch;
-
-    ch = getch();
-
-

getch() will wait for the user to press a key, (unless you -specified a timeout) and when user presses a key, the corresponding -integer is returned. Then you can check the value returned with the -constants defined in curses.h to match against the keys you -want.

-

The following code piece will do that job.

- - - - -
-
-    if(ch == KEY_LEFT)
-        printw("Left arrow is pressed\n");
-
-

Let's write a small program which creates a menu which can be -navigated by up and down arrows.

-
-
-
-

11.2. A -Simple Key Usage example

-
-

Example 10. A Simple Key Usage example

- - - - -
-
-#include <stdio.h>
-#include <ncurses.h>
-
-#define WIDTH 30
-#define HEIGHT 10 
-
-int startx = 0;
-int starty = 0;
-
-char *choices[] = { 
-                        "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Exit",
-                  };
-int n_choices = sizeof(choices) / sizeof(char *);
-void print_menu(WINDOW *menu_win, int highlight);
-
-int main()
-{       WINDOW *menu_win;
-        int highlight = 1;
-        int choice = 0;
-        int c;
-
-        initscr();
-        clear();
-        noecho();
-        cbreak();       /* Line buffering disabled. pass on everything */
-        startx = (80 - WIDTH) / 2;
-        starty = (24 - HEIGHT) / 2;
-                
-        menu_win = newwin(HEIGHT, WIDTH, starty, startx);
-        keypad(menu_win, TRUE);
-        mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
-        refresh();
-        print_menu(menu_win, highlight);
-        while(1)
-        {       c = wgetch(menu_win);
-                switch(c)
-                {       case KEY_UP:
-                                if(highlight == 1)
-                                        highlight = n_choices;
-                                else
-                                        --highlight;
-                                break;
-                        case KEY_DOWN:
-                                if(highlight == n_choices)
-                                        highlight = 1;
-                                else 
-                                        ++highlight;
-                                break;
-                        case 10:
-                                choice = highlight;
-                                break;
-                        default:
-                                mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
-                                refresh();
-                                break;
-                }
-                print_menu(menu_win, highlight);
-                if(choice != 0) /* User did a choice come out of the infinite loop */
-                        break;
-        }       
-        mvprintw(23, 0, "You chose choice %d with choice string %s\n", choice, choices[choice - 1]);
-        clrtoeol();
-        refresh();
-        endwin();
-        return 0;
-}
-
-
-void print_menu(WINDOW *menu_win, int highlight)
-{
-        int x, y, i;    
-
-        x = 2;
-        y = 2;
-        box(menu_win, 0, 0);
-        for(i = 0; i < n_choices; ++i)
-        {       if(highlight == i + 1) /* High light the present choice */
-                {       wattron(menu_win, A_REVERSE); 
-                        mvwprintw(menu_win, y, x, "%s", choices[i]);
-                        wattroff(menu_win, A_REVERSE);
-                }
-                else
-                        mvwprintw(menu_win, y, x, "%s", choices[i]);
-                ++y;
-        }
-        wrefresh(menu_win);
-}
-
-
-
-
-
-
-
-

12. Interfacing with -the mouse

-

Now that you have seen how to get keys, lets do the same thing -from mouse. Usually each UI allows the user to interact with both -keyboard and mouse.

-
-
-

12.1. The -Basics

-

Before you do any thing else, the events you want to receive -have to be enabled with mousemask().

- - - - -
-
-    mousemask(  mmask_t newmask,    /* The events you want to listen to */
-                mmask_t *oldmask)    /* The old events mask                */
-
-

The first parameter to above function is a bit mask of events -you would like to listen. By default, all the events are turned -off. The bit mask ALL_MOUSE_EVENTS can -be used to get all the events.

-

The following are all the event masks:

- - - - -
-
-    Name            Description
-       ---------------------------------------------------------------------
-       BUTTON1_PRESSED          mouse button 1 down
-       BUTTON1_RELEASED         mouse button 1 up
-       BUTTON1_CLICKED          mouse button 1 clicked
-       BUTTON1_DOUBLE_CLICKED   mouse button 1 double clicked
-       BUTTON1_TRIPLE_CLICKED   mouse button 1 triple clicked
-       BUTTON2_PRESSED          mouse button 2 down
-       BUTTON2_RELEASED         mouse button 2 up
-       BUTTON2_CLICKED          mouse button 2 clicked
-       BUTTON2_DOUBLE_CLICKED   mouse button 2 double clicked
-       BUTTON2_TRIPLE_CLICKED   mouse button 2 triple clicked
-       BUTTON3_PRESSED          mouse button 3 down
-       BUTTON3_RELEASED         mouse button 3 up
-       BUTTON3_CLICKED          mouse button 3 clicked
-       BUTTON3_DOUBLE_CLICKED   mouse button 3 double clicked
-       BUTTON3_TRIPLE_CLICKED   mouse button 3 triple clicked
-       BUTTON4_PRESSED          mouse button 4 down
-       BUTTON4_RELEASED         mouse button 4 up
-       BUTTON4_CLICKED          mouse button 4 clicked
-       BUTTON4_DOUBLE_CLICKED   mouse button 4 double clicked
-       BUTTON4_TRIPLE_CLICKED   mouse button 4 triple clicked
-       BUTTON_SHIFT             shift was down during button state change
-       BUTTON_CTRL              control was down during button state change
-       BUTTON_ALT               alt was down during button state change
-       ALL_MOUSE_EVENTS         report all button state changes
-       REPORT_MOUSE_POSITION    report mouse movement
-
-
-
-
-

12.2. -Getting the events

-

Once a class of mouse events have been enabled, getch() class of -functions return KEY_MOUSE every time some mouse event happens. -Then the mouse event can be retrieved with getmouse().

-

The code approximately looks like this:

- - - - -
-
-    MEVENT event;
-
-    ch = getch();
-    if(ch == KEY_MOUSE)
-        if(getmouse(&event) == OK)
-            .    /* Do some thing with the event */
-            .
-            .
-
-

getmouse() returns the event into the pointer given to it. It's -a structure which contains

- - - - -
-
-    typedef struct
-    {
-        short id;         /* ID to distinguish multiple devices */
-        int x, y, z;      /* event coordinates */
-        mmask_t bstate;   /* button state bits */
-    }    
-
-

The bstate is the main variable we -are interested in. It tells the button state of the mouse.

-

Then with a code snippet like the following, we can find out -what happened.

- - - - -
-
-    if(event.bstate & BUTTON1_PRESSED)
-        printw("Left Button Pressed");
-
-
-
-
-

12.3. -Putting it all Together

-

That's pretty much interfacing with mouse. Let's create the same -menu and enable mouse interaction. To make things simpler, key -handling is removed.

-
-

Example 11. Access the menu with mouse !!!

- - - - -
-
-#include <ncurses.h>
-
-#define WIDTH 30
-#define HEIGHT 10 
-
-int startx = 0;
-int starty = 0;
-
-char *choices[] = {     "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Exit",
-                  };
-
-int n_choices = sizeof(choices) / sizeof(char *);
-
-void print_menu(WINDOW *menu_win, int highlight);
-void report_choice(int mouse_x, int mouse_y, int *p_choice);
-
-int main()
-{       int c, choice = 0;
-        WINDOW *menu_win;
-        MEVENT event;
-
-        /* Initialize curses */
-        initscr();
-        clear();
-        noecho();
-        cbreak();       //Line buffering disabled. pass on everything
-
-        /* Try to put the window in the middle of screen */
-        startx = (80 - WIDTH) / 2;
-        starty = (24 - HEIGHT) / 2;
-        
-        attron(A_REVERSE);
-        mvprintw(23, 1, "Click on Exit to quit (Works best in a virtual console)");
-        refresh();
-        attroff(A_REVERSE);
-
-        /* Print the menu for the first time */
-        menu_win = newwin(HEIGHT, WIDTH, starty, startx);
-        print_menu(menu_win, 1);
-        /* Get all the mouse events */
-        mousemask(ALL_MOUSE_EVENTS, NULL);
-        
-        while(1)
-        {       c = wgetch(menu_win);
-                switch(c)
-                {       case KEY_MOUSE:
-                        if(getmouse(&event) == OK)
-                        {       /* When the user clicks left mouse button */
-                                if(event.bstate & BUTTON1_PRESSED)
-                                {       report_choice(event.x + 1, event.y + 1, &choice);
-                                        if(choice == -1) //Exit chosen
-                                                goto end;
-                                        mvprintw(22, 1, "Choice made is : %d String Chosen is \"%10s\"", choice, choices[choice - 1]);
-                                        refresh(); 
-                                }
-                        }
-                        print_menu(menu_win, choice);
-                        break;
-                }
-        }               
-end:
-        endwin();
-        return 0;
-}
-
-
-void print_menu(WINDOW *menu_win, int highlight)
-{
-        int x, y, i;    
-
-        x = 2;
-        y = 2;
-        box(menu_win, 0, 0);
-        for(i = 0; i < n_choices; ++i)
-        {       if(highlight == i + 1)
-                {       wattron(menu_win, A_REVERSE); 
-                        mvwprintw(menu_win, y, x, "%s", choices[i]);
-                        wattroff(menu_win, A_REVERSE);
-                }
-                else
-                        mvwprintw(menu_win, y, x, "%s", choices[i]);
-                ++y;
-        }
-        wrefresh(menu_win);
-}
-
-/* Report the choice according to mouse position */
-void report_choice(int mouse_x, int mouse_y, int *p_choice)
-{       int i,j, choice;
-
-        i = startx + 2;
-        j = starty + 3;
-        
-        for(choice = 0; choice < n_choices; ++choice)
-                if(mouse_y == j + choice && mouse_x >= i && mouse_x <= i + strlen(choices[choice]))
-                {       if(choice == n_choices - 1)
-                                *p_choice = -1;         
-                        else
-                                *p_choice = choice + 1; 
-                        break;
-                }
-}
-
-
-
-
-
-

12.4. Miscellaneous Functions

-

The functions mouse_trafo() and wmouse_trafo() can be used to -convert to mouse co-ordinates to screen relative co-ordinates. See -curs_mouse(3X) man page for details.

-

The mouseinterval function sets the maximum time (in thousands -of a second) that can elapse between press and release events in -order for them to be recognized as a click. This function returns -the previous interval value. The default is one fifth of a -second.

-
-
-
-
-

13. Screen -Manipulation

-

In this section, we will look into some functions, which allow -us to manage the screen efficiently and to write some fancy -programs. This is especially important in writing games.

-
-
-

13.1. getyx() -functions

-

The function getyx() can be used to -find out the present cursor co-ordinates. It will fill the values -of x and y co-ordinates in the arguments given to it. Since getyx() -is a macro you don't have to pass the address of the variables. It -can be called as

- - - - -
-
-    getyx(win, y, x);
-    /* win: window pointer
-     *   y, x: y, x co-ordinates will be put into this variables 
-     */
-
-

The function getparyx() gets the beginning co-ordinates of the -sub window relative to the main window. This is some times useful -to update a sub window. When designing fancy stuff like writing -multiple menus, it becomes difficult to store the menu positions, -their first option co-ordinates etc. A simple solution to this -problem, is to create menus in sub windows and later find the -starting co-ordinates of the menus by using getparyx().

-

The functions getbegyx() and getmaxyx() store current window's -beginning and maximum co-ordinates. These functions are useful in -the same way as above in managing the windows and sub windows -effectively.

-
-
-
-

13.2. Screen -Dumping

-

While writing games, some times it becomes necessary to store -the state of the screen and restore it back to the same state. The -function scr_dump() can be used to dump the screen contents to a -file given as an argument. Later it can be restored by scr_restore -function. These two simple functions can be used effectively to -maintain a fast moving game with changing scenarios.

-
-
-
-

13.3. Window -Dumping

-

To store and restore windows, the functions putwin() and getwin() -can be used. putwin() puts the present -window state into a file, which can be later restored by -getwin().

-

The function copywin() can be used to -copy a window completely onto another window. It takes the source -and destination windows as parameters and according to the -rectangle specified, it copies the rectangular region from source -to destination window. It's last parameter specifies whether to -overwrite or just overlay the contents on to the destination -window. If this argument is true, then the copying is -non-destructive.

-
-
-
-
-

14. Miscellaneous -features

-

Now you know enough features to write a good curses program, -with all bells and whistles. There are some miscellaneous functions -which are useful in various cases. Let's go headlong into some of -those.

-
-
-

14.1. -curs_set()

-

This function can be used to make the cursor invisible. The -parameter to this function should be

- - - - -
-
-    0 : invisible      or
-    1 : normal    or
-    2 : very visible.
-
-
-
-
-

14.2. -Temporarily Leaving Curses mode

-

Some times you may want to get back to cooked mode (normal line -buffering mode) temporarily. In such a case you will first need to -save the tty modes with a call to def_prog_mode() and then call endwin() to end the curses mode. This will leave -you in the original tty mode. To get back to curses once you are -done, call reset_prog_mode() . This -function returns the tty to the state stored by def_prog_mode(). Then do refresh(), and you are -back to the curses mode. Here is an example showing the sequence of -things to be done.

-
-

Example 12. Temporarily Leaving Curses Mode

- - - - -
-
-#include <ncurses.h>
-
-int main()
-{       
-        initscr();                      /* Start curses mode              */
-        printw("Hello World !!!\n");    /* Print Hello World              */
-        refresh();                      /* Print it on to the real screen */
-        def_prog_mode();                /* Save the tty modes             */
-        endwin();                       /* End curses mode temporarily    */
-        system("/bin/sh");              /* Do whatever you like in cooked mode */
-        reset_prog_mode();              /* Return to the previous tty mode*/
-                                        /* stored by def_prog_mode()      */
-        refresh();                      /* Do refresh() to restore the    */
-                                        /* Screen contents                */
-        printw("Another String\n");     /* Back to curses use the full    */
-        refresh();                      /* capabilities of curses         */
-        endwin();                       /* End curses mode                */
-
-        return 0;
-}
-
-
-
-
-
-

14.3. ACS_ -variables

-

If you have ever programmed in DOS, you know about those nifty -characters in extended character set. They are printable only on -some terminals. NCURSES functions like box() use these characters. All these variables -start with ACS meaning alternative character set. You might have -noticed me using these characters in some of the programs above. -Here's an example showing all the characters.

-
-

Example 13. ACS Variables Example

- - - - -
-
-#include <ncurses.h>
-
-int main()
-{
-        initscr();
-
-        printw("Upper left corner           "); addch(ACS_ULCORNER); printw("\n"); 
-        printw("Lower left corner           "); addch(ACS_LLCORNER); printw("\n");
-        printw("Lower right corner          "); addch(ACS_LRCORNER); printw("\n");
-        printw("Tee pointing right          "); addch(ACS_LTEE); printw("\n");
-        printw("Tee pointing left           "); addch(ACS_RTEE); printw("\n");
-        printw("Tee pointing up             "); addch(ACS_BTEE); printw("\n");
-        printw("Tee pointing down           "); addch(ACS_TTEE); printw("\n");
-        printw("Horizontal line             "); addch(ACS_HLINE); printw("\n");
-        printw("Vertical line               "); addch(ACS_VLINE); printw("\n");
-        printw("Large Plus or cross over    "); addch(ACS_PLUS); printw("\n");
-        printw("Scan Line 1                 "); addch(ACS_S1); printw("\n");
-        printw("Scan Line 3                 "); addch(ACS_S3); printw("\n");
-        printw("Scan Line 7                 "); addch(ACS_S7); printw("\n");
-        printw("Scan Line 9                 "); addch(ACS_S9); printw("\n");
-        printw("Diamond                     "); addch(ACS_DIAMOND); printw("\n");
-        printw("Checker board (stipple)     "); addch(ACS_CKBOARD); printw("\n");
-        printw("Degree Symbol               "); addch(ACS_DEGREE); printw("\n");
-        printw("Plus/Minus Symbol           "); addch(ACS_PLMINUS); printw("\n");
-        printw("Bullet                      "); addch(ACS_BULLET); printw("\n");
-        printw("Arrow Pointing Left         "); addch(ACS_LARROW); printw("\n");
-        printw("Arrow Pointing Right        "); addch(ACS_RARROW); printw("\n");
-        printw("Arrow Pointing Down         "); addch(ACS_DARROW); printw("\n");
-        printw("Arrow Pointing Up           "); addch(ACS_UARROW); printw("\n");
-        printw("Board of squares            "); addch(ACS_BOARD); printw("\n");
-        printw("Lantern Symbol              "); addch(ACS_LANTERN); printw("\n");
-        printw("Solid Square Block          "); addch(ACS_BLOCK); printw("\n");
-        printw("Less/Equal sign             "); addch(ACS_LEQUAL); printw("\n");
-        printw("Greater/Equal sign          "); addch(ACS_GEQUAL); printw("\n");
-        printw("Pi                          "); addch(ACS_PI); printw("\n");
-        printw("Not equal                   "); addch(ACS_NEQUAL); printw("\n");
-        printw("UK pound sign               "); addch(ACS_STERLING); printw("\n");
-
-        refresh();
-        getch();
-        endwin();
-
-        return 0;
-}
-
-
-
-
-
-
-

15. Other -libraries

-

Apart from the curses library, there are few text mode -libraries, which provide more functionality and a lot of features. -The following sections explain three standard libraries which are -usually distributed along with curses.

-
-
-
-

16. Panel -Library

-

Now that you are proficient in curses, you wanted to do some -thing big. You created a lot of overlapping windows to give a -professional windows-type look. Unfortunately, it soon becomes -difficult to manage these. The multiple refreshes, updates plunge -you into a nightmare. The overlapping windows create blotches, -whenever you forget to refresh the windows in the proper order.

-

Don't despair. There's an elegant solution provided in panels -library. In the words of developers of ncurses

-

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.

-

If you have lot of overlapping windows, then panels library is -the way to go. It obviates the need of doing series of -wnoutrefresh(), doupdate() and relieves the burden of doing it -correctly(bottom up). The library maintains information about the -order of windows, their overlapping and update the screen properly. -So why wait? Let's take a close peek into panels.

-
-
-

16.1. The -Basics

-

Panel object is a window that is implicitly treated as part of a -deck including all other panel objects. The deck is treated as a -stack with the top panel being completely visible and the other -panels may or may not be obscured according to their positions. So -the basic idea is to create a stack of overlapping panels and use -panels library to display them correctly. There is a function -similar to refresh() which, when called , displays panels in the -correct order. Functions are provided to hide or show panels, move -panels, change its size etc.. The overlapping problem is managed by -the panels library during all the calls to these functions.

-

The general flow of a panel program goes like this:

-
    -
  1. -

    Create the windows (with newwin()) to be attached to the -panels.

    -
  2. -
  3. -

    Create panels with the chosen visibility order. Stack them up -according to the desired visibility. The function new_panel() is -used to created panels.

    -
  4. -
  5. -

    Call update_panels() to write the panels to the virtual screen -in correct visibility order. Do a doupdate() to show it on the -screen.

    -
  6. -
  7. -

    Mainpulate the panels with show_panel(), hide_panel(), -move_panel() etc. Make use of helper functions like panel_hidden() -and panel_window(). Make use of user pointer to store custom data -for a panel. Use the functions set_panel_userptr() and -panel_userptr() to set and get the user pointer for a panel.

    -
  8. -
  9. -

    When you are done with the panel use del_panel() to delete the -panel.

    -
  10. -
-

Let's make the concepts clear, with some programs. The following -is a simple program which creates 3 overlapping panels and shows -them on the screen.

-
-
-
-

16.2. -Compiling With the Panels Library

-

To use panels library functions, you have to include panel.h and -to link the program with panels library the flag -lpanel should be -added along with -lncurses in that order.

- - - - -
-
-    #include <panel.h>
-    .
-    .
-    .
-
-    compile and link: gcc <program file> -lpanel -lncurses
-
-
-

Example 14. Panel basics

- - - - -
-
-#include <panel.h>
-
-int main()
-{       WINDOW *my_wins[3];
-        PANEL  *my_panels[3];
-        int lines = 10, cols = 40, y = 2, x = 4, i;
-
-        initscr();
-        cbreak();
-        noecho();
-
-        /* Create windows for the panels */
-        my_wins[0] = newwin(lines, cols, y, x);
-        my_wins[1] = newwin(lines, cols, y + 1, x + 5);
-        my_wins[2] = newwin(lines, cols, y + 2, x + 10);
-
-        /* 
-         * Create borders around the windows so that you can see the effect
-         * of panels
-         */
-        for(i = 0; i < 3; ++i)
-                box(my_wins[i], 0, 0);
-
-        /* Attach a panel to each window */     /* Order is bottom up */
-        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
-        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
-        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
-
-        /* Update the stacking order. 2nd panel will be on top */
-        update_panels();
-
-        /* Show it on the screen */
-        doupdate();
-        
-        getch();
-        endwin();
-}
-
-
-
-

As you can see, above program follows a simple flow as -explained. The windows are created with newwin() and then they are -attached to panels with new_panel(). As we attach one panel after -another, the stack of panels gets updated. To put them on screen -update_panels() and doupdate() are called.

-
-
-
-

16.3. -Panel Window Browsing

-

A slightly complicated example is given below. This program -creates 3 windows which can be cycled through using tab. Have a -look at the code.

-
-

Example 15. Panel Window Browsing Example

- - - - -
-
-#include <panel.h>
-
-#define NLINES 10
-#define NCOLS 40
-
-void init_wins(WINDOW **wins, int n);
-void win_show(WINDOW *win, char *label, int label_color);
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
-
-int main()
-{       WINDOW *my_wins[3];
-        PANEL  *my_panels[3];
-        PANEL  *top;
-        int ch;
-
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize all the colors */
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-        init_pair(2, COLOR_GREEN, COLOR_BLACK);
-        init_pair(3, COLOR_BLUE, COLOR_BLACK);
-        init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
-        init_wins(my_wins, 3);
-        
-        /* Attach a panel to each window */     /* Order is bottom up */
-        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
-        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
-        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
-
-        /* Set up the user pointers to the next panel */
-        set_panel_userptr(my_panels[0], my_panels[1]);
-        set_panel_userptr(my_panels[1], my_panels[2]);
-        set_panel_userptr(my_panels[2], my_panels[0]);
-
-        /* Update the stacking order. 2nd panel will be on top */
-        update_panels();
-
-        /* Show it on the screen */
-        attron(COLOR_PAIR(4));
-        mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
-        attroff(COLOR_PAIR(4));
-        doupdate();
-
-        top = my_panels[2];
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case 9:
-                                top = (PANEL *)panel_userptr(top);
-                                top_panel(top);
-                                break;
-                }
-                update_panels();
-                doupdate();
-        }
-        endwin();
-        return 0;
-}
-
-/* Put all the windows */
-void init_wins(WINDOW **wins, int n)
-{       int x, y, i;
-        char label[80];
-
-        y = 2;
-        x = 10;
-        for(i = 0; i < n; ++i)
-        {       wins[i] = newwin(NLINES, NCOLS, y, x);
-                sprintf(label, "Window Number %d", i + 1);
-                win_show(wins[i], label, i + 1);
-                y += 3;
-                x += 7;
-        }
-}
-
-/* Show the window with a border and a label */
-void win_show(WINDOW *win, char *label, int label_color)
-{       int startx, starty, height, width;
-
-        getbegyx(win, starty, startx);
-        getmaxyx(win, height, width);
-
-        box(win, 0, 0);
-        mvwaddch(win, 2, 0, ACS_LTEE); 
-        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
-        mvwaddch(win, 2, width - 1, ACS_RTEE); 
-        
-        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
-}
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{       int length, x, y;
-        float temp;
-
-        if(win == NULL)
-                win = stdscr;
-        getyx(win, y, x);
-        if(startx != 0)
-                x = startx;
-        if(starty != 0)
-                y = starty;
-        if(width == 0)
-                width = 80;
-
-        length = strlen(string);
-        temp = (width - length)/ 2;
-        x = startx + (int)temp;
-        wattron(win, color);
-        mvwprintw(win, y, x, "%s", string);
-        wattroff(win, color);
-        refresh();
-}
-
-
-
-
-
-

16.4. -Using User Pointers

-

In the above example I used user pointers to find out the next -window in the cycle. We can attach custom information to the panel -by specifying a user pointer, which can point to any information -you want to store. In this case I stored the pointer to the next -panel in the cycle. User pointer for a panel can be set with the -function set_panel_userptr(). It can be -accessed using the function panel_userptr() which will return the user pointer -for the panel given as argument. After finding the next panel in -the cycle It's brought to the top by the function top_panel(). This -function brings the panel given as argument to the top of the panel -stack.

-
-
-
-

16.5. Moving and Resizing Panels

-

The function move_panel() can be used -to move a panel to the desired location. It does not change the -position of the panel in the stack. Make sure that you use -move_panel() instead mvwin() on the window associated with the -panel.

-

Resizing a panel is slightly complex. There is no straight -forward function just to resize the window associated with a panel. -A solution to resize a panel is to create a new window with the -desired sizes, change the window associated with the panel using -replace_panel(). Don't forget to delete the old window. The window -associated with a panel can be found by using the function -panel_window().

-

The following program shows these concepts, in supposedly simple -program. You can cycle through the window with <TAB> as -usual. To resize or move the active panel press 'r' for resize 'm' -for moving. Then use arrow keys to resize or move it to the desired -way and press enter to end your resizing or moving. This example -makes use of user data to get the required data to do the -operations.

-
-

Example 16. Panel Moving and Resizing example

- - - - -
-
-#include <panel.h>
-
-typedef struct _PANEL_DATA {
-        int x, y, w, h;
-        char label[80]; 
-        int label_color;
-        PANEL *next;
-}PANEL_DATA;
-
-#define NLINES 10
-#define NCOLS 40
-
-void init_wins(WINDOW **wins, int n);
-void win_show(WINDOW *win, char *label, int label_color);
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
-void set_user_ptrs(PANEL **panels, int n);
-
-int main()
-{       WINDOW *my_wins[3];
-        PANEL  *my_panels[3];
-        PANEL_DATA  *top;
-        PANEL *stack_top;
-        WINDOW *temp_win, *old_win;
-        int ch;
-        int newx, newy, neww, newh;
-        int size = FALSE, move = FALSE;
-
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize all the colors */
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-        init_pair(2, COLOR_GREEN, COLOR_BLACK);
-        init_pair(3, COLOR_BLUE, COLOR_BLACK);
-        init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
-        init_wins(my_wins, 3);
-        
-        /* Attach a panel to each window */     /* Order is bottom up */
-        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
-        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
-        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
-
-        set_user_ptrs(my_panels, 3);
-        /* Update the stacking order. 2nd panel will be on top */
-        update_panels();
-
-        /* Show it on the screen */
-        attron(COLOR_PAIR(4));
-        mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
-        mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
-        attroff(COLOR_PAIR(4));
-        doupdate();
-
-        stack_top = my_panels[2];
-        top = (PANEL_DATA *)panel_userptr(stack_top);
-        newx = top->x;
-        newy = top->y;
-        neww = top->w;
-        newh = top->h;
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case 9:         /* Tab */
-                                top = (PANEL_DATA *)panel_userptr(stack_top);
-                                top_panel(top->next);
-                                stack_top = top->next;
-                                top = (PANEL_DATA *)panel_userptr(stack_top);
-                                newx = top->x;
-                                newy = top->y;
-                                neww = top->w;
-                                newh = top->h;
-                                break;
-                        case 'r':       /* Re-Size*/
-                                size = TRUE;
-                                attron(COLOR_PAIR(4));
-                                mvprintw(LINES - 4, 0, "Entered Resizing :Use Arrow Keys to resize and press <ENTER> to end resizing");
-                                refresh();
-                                attroff(COLOR_PAIR(4));
-                                break;
-                        case 'm':       /* Move */
-                                attron(COLOR_PAIR(4));
-                                mvprintw(LINES - 4, 0, "Entered Moving: Use Arrow Keys to Move and press <ENTER> to end moving");
-                                refresh();
-                                attroff(COLOR_PAIR(4));
-                                move = TRUE;
-                                break;
-                        case KEY_LEFT:
-                                if(size == TRUE)
-                                {       --newx;
-                                        ++neww;
-                                }
-                                if(move == TRUE)
-                                        --newx;
-                                break;
-                        case KEY_RIGHT:
-                                if(size == TRUE)
-                                {       ++newx;
-                                        --neww;
-                                }
-                                if(move == TRUE)
-                                        ++newx;
-                                break;
-                        case KEY_UP:
-                                if(size == TRUE)
-                                {       --newy;
-                                        ++newh;
-                                }
-                                if(move == TRUE)
-                                        --newy;
-                                break;
-                        case KEY_DOWN:
-                                if(size == TRUE)
-                                {       ++newy;
-                                        --newh;
-                                }
-                                if(move == TRUE)
-                                        ++newy;
-                                break;
-                        case 10:        /* Enter */
-                                move(LINES - 4, 0);
-                                clrtoeol();
-                                refresh();
-                                if(size == TRUE)
-                                {       old_win = panel_window(stack_top);
-                                        temp_win = newwin(newh, neww, newy, newx);
-                                        replace_panel(stack_top, temp_win);
-                                        win_show(temp_win, top->label, top->label_color); 
-                                        delwin(old_win);
-                                        size = FALSE;
-                                }
-                                if(move == TRUE)
-                                {       move_panel(stack_top, newy, newx);
-                                        move = FALSE;
-                                }
-                                break;
-                        
-                }
-                attron(COLOR_PAIR(4));
-                mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
-                mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
-                attroff(COLOR_PAIR(4));
-                refresh();      
-                update_panels();
-                doupdate();
-        }
-        endwin();
-        return 0;
-}
-
-/* Put all the windows */
-void init_wins(WINDOW **wins, int n)
-{       int x, y, i;
-        char label[80];
-
-        y = 2;
-        x = 10;
-        for(i = 0; i < n; ++i)
-        {       wins[i] = newwin(NLINES, NCOLS, y, x);
-                sprintf(label, "Window Number %d", i + 1);
-                win_show(wins[i], label, i + 1);
-                y += 3;
-                x += 7;
-        }
-}
-
-/* Set the PANEL_DATA structures for individual panels */
-void set_user_ptrs(PANEL **panels, int n)
-{       PANEL_DATA *ptrs;
-        WINDOW *win;
-        int x, y, w, h, i;
-        char temp[80];
-        
-        ptrs = (PANEL_DATA *)calloc(n, sizeof(PANEL_DATA));
-
-        for(i = 0;i < n; ++i)
-        {       win = panel_window(panels[i]);
-                getbegyx(win, y, x);
-                getmaxyx(win, h, w);
-                ptrs[i].x = x;
-                ptrs[i].y = y;
-                ptrs[i].w = w;
-                ptrs[i].h = h;
-                sprintf(temp, "Window Number %d", i + 1);
-                strcpy(ptrs[i].label, temp);
-                ptrs[i].label_color = i + 1;
-                if(i + 1 == n)
-                        ptrs[i].next = panels[0];
-                else
-                        ptrs[i].next = panels[i + 1];
-                set_panel_userptr(panels[i], &ptrs[i]);
-        }
-}
-
-/* Show the window with a border and a label */
-void win_show(WINDOW *win, char *label, int label_color)
-{       int startx, starty, height, width;
-
-        getbegyx(win, starty, startx);
-        getmaxyx(win, height, width);
-
-        box(win, 0, 0);
-        mvwaddch(win, 2, 0, ACS_LTEE); 
-        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
-        mvwaddch(win, 2, width - 1, ACS_RTEE); 
-        
-        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
-}
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{       int length, x, y;
-        float temp;
-
-        if(win == NULL)
-                win = stdscr;
-        getyx(win, y, x);
-        if(startx != 0)
-                x = startx;
-        if(starty != 0)
-                y = starty;
-        if(width == 0)
-                width = 80;
-
-        length = strlen(string);
-        temp = (width - length)/ 2;
-        x = startx + (int)temp;
-        wattron(win, color);
-        mvwprintw(win, y, x, "%s", string);
-        wattroff(win, color);
-        refresh();
-}
-
-
-

Concentrate on the main while loop. Once it finds out the type -of key pressed, it takes appropriate action. If 'r' is pressed -resizing mode is started. After this the new sizes are updated as -the user presses the arrow keys. When the user presses -<ENTER> present selection ends and panel is resized by using -the concept explained. While in resizing mode the program doesn't -show how the window is getting resized. It's left as an exercise to -the reader to print a dotted border while it gets resized to a new -position.

-

When the user presses 'm' the move mode starts. This is a bit -simpler than resizing. As the arrow keys are pressed the new -position is updated and pressing of <ENTER> causes the panel -to be moved by calling the function move_panel().

-

In this program the user data which is represented as -PANEL_DATA, plays very important role in finding the associated -information with a panel. As written in the comments, the -PANEL_DATA stores the panel sizes, label, label color and a pointer -to the next panel in the cycle.

-
-
-
-

16.6. -Hiding and Showing Panels

-

A Panel can be hidden by using the function hide_panel(). This -function merely removes it form the stack of panels, thus hiding it -on the screen once you do update_panels() and doupdate(). It -doesn't destroy the PANEL structure associated with the hidden -panel. It can be shown again by using the show_panel() -function.

-

The following program shows the hiding of panels. Press 'a' or -'b' or 'c' to show or hide first, second and third windows -respectively. It uses a user data with a small variable hide, which -keeps track of whether the window is hidden or not. For some reason -the function panel_hidden() which tells -whether a panel is hidden or not is not working. A bug report was -also presented by Michael Andres here

-
-

Example 17. Panel Hiding and Showing example

- - - - -
-
-#include <panel.h>
-
-typedef struct _PANEL_DATA {
-        int hide;       /* TRUE if panel is hidden */
-}PANEL_DATA;
-
-#define NLINES 10
-#define NCOLS 40
-
-void init_wins(WINDOW **wins, int n);
-void win_show(WINDOW *win, char *label, int label_color);
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
-
-int main()
-{       WINDOW *my_wins[3];
-        PANEL  *my_panels[3];
-        PANEL_DATA panel_datas[3];
-        PANEL_DATA *temp;
-        int ch;
-
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize all the colors */
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-        init_pair(2, COLOR_GREEN, COLOR_BLACK);
-        init_pair(3, COLOR_BLUE, COLOR_BLACK);
-        init_pair(4, COLOR_CYAN, COLOR_BLACK);
-
-        init_wins(my_wins, 3);
-        
-        /* Attach a panel to each window */     /* Order is bottom up */
-        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
-        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
-        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
-
-        /* Initialize panel datas saying that nothing is hidden */
-        panel_datas[0].hide = FALSE;
-        panel_datas[1].hide = FALSE;
-        panel_datas[2].hide = FALSE;
-
-        set_panel_userptr(my_panels[0], &panel_datas[0]);
-        set_panel_userptr(my_panels[1], &panel_datas[1]);
-        set_panel_userptr(my_panels[2], &panel_datas[2]);
-
-        /* Update the stacking order. 2nd panel will be on top */
-        update_panels();
-
-        /* Show it on the screen */
-        attron(COLOR_PAIR(4));
-        mvprintw(LINES - 3, 0, "Show or Hide a window with 'a'(first window)  'b'(Second Window)  'c'(Third Window)");
-        mvprintw(LINES - 2, 0, "F1 to Exit");
-
-        attroff(COLOR_PAIR(4));
-        doupdate();
-        
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case 'a':                       
-                                temp = (PANEL_DATA *)panel_userptr(my_panels[0]);
-                                if(temp->hide == FALSE)
-                                {       hide_panel(my_panels[0]);
-                                        temp->hide = TRUE;
-                                }
-                                else
-                                {       show_panel(my_panels[0]);
-                                        temp->hide = FALSE;
-                                }
-                                break;
-                        case 'b':
-                                temp = (PANEL_DATA *)panel_userptr(my_panels[1]);
-                                if(temp->hide == FALSE)
-                                {       hide_panel(my_panels[1]);
-                                        temp->hide = TRUE;
-                                }
-                                else
-                                {       show_panel(my_panels[1]);
-                                        temp->hide = FALSE;
-                                }
-                                break;
-                        case 'c':
-                                temp = (PANEL_DATA *)panel_userptr(my_panels[2]);
-                                if(temp->hide == FALSE)
-                                {       hide_panel(my_panels[2]);
-                                        temp->hide = TRUE;
-                                }
-                                else
-                                {       show_panel(my_panels[2]);
-                                        temp->hide = FALSE;
-                                }
-                                break;
-                }
-                update_panels();
-                doupdate();
-        }
-        endwin();
-        return 0;
-}
-
-/* Put all the windows */
-void init_wins(WINDOW **wins, int n)
-{       int x, y, i;
-        char label[80];
-
-        y = 2;
-        x = 10;
-        for(i = 0; i < n; ++i)
-        {       wins[i] = newwin(NLINES, NCOLS, y, x);
-                sprintf(label, "Window Number %d", i + 1);
-                win_show(wins[i], label, i + 1);
-                y += 3;
-                x += 7;
-        }
-}
-
-/* Show the window with a border and a label */
-void win_show(WINDOW *win, char *label, int label_color)
-{       int startx, starty, height, width;
-
-        getbegyx(win, starty, startx);
-        getmaxyx(win, height, width);
-
-        box(win, 0, 0);
-        mvwaddch(win, 2, 0, ACS_LTEE); 
-        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
-        mvwaddch(win, 2, width - 1, ACS_RTEE); 
-        
-        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
-}
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{       int length, x, y;
-        float temp;
-
-        if(win == NULL)
-                win = stdscr;
-        getyx(win, y, x);
-        if(startx != 0)
-                x = startx;
-        if(starty != 0)
-                y = starty;
-        if(width == 0)
-                width = 80;
-
-        length = strlen(string);
-        temp = (width - length)/ 2;
-        x = startx + (int)temp;
-        wattron(win, color);
-        mvwprintw(win, y, x, "%s", string);
-        wattroff(win, color);
-        refresh();
-}
-
-
-
-
-
-

16.7. -panel_above() and panel_below() Functions

-

The functions panel_above() and -panel_below() can be used to find out -the panel above and below a panel. If the argument to these -functions is NULL, then they return a pointer to bottom panel and -top panel respectively.

-
-
-
-
-

17. Menus -Library

-

The menus library provides a nice extension to basic curses, -through which you can create menus. It provides a set of functions -to create menus. But they have to be customized to give a nicer -look, with colors etc. Let's get into the details.

-

A menu is a screen display that assists the user to choose some -subset of a given set of items. To put it simple, a menu is a -collection of items from which one or more items can be chosen. -Some readers might not be aware of multiple item selection -capability. Menu library provides functionality to write menus from -which the user can chose more than one item as the preferred -choice. This is dealt with in a later section. Now it is time for -some rudiments.

-
-
-

17.1. The -Basics

-

To create menus, you first create items, and then post the menu -to the display. After that, all the processing of user responses is -done in an elegant function menu_driver() which is the work horse -of any menu program.

-

The general flow of control of a menu program looks like -this.

-
    -
  1. -

    Initialize curses

    -
  2. -
  3. -

    Create items using new_item(). You can specify a name and -description for the items.

    -
  4. -
  5. -

    Create the menu with new_menu() by specifying the items to be -attached with.

    -
  6. -
  7. -

    Post the menu with menu_post() and refresh the screen.

    -
  8. -
  9. -

    Process the user requests with a loop and do necessary updates -to menu with menu_driver.

    -
  10. -
  11. -

    Unpost the menu with menu_unpost()

    -
  12. -
  13. -

    Free the memory allocated to menu by free_menu()

    -
  14. -
  15. -

    Free the memory allocated to the items with free_item()

    -
  16. -
  17. -

    End curses

    -
  18. -
-

Let's see a program which prints a simple menu and updates the -current selection with up, down arrows.

-
-
-
-

17.2. -Compiling With the Menu Library

-

To use menu library functions, you have to include menu.h and to -link the program with menu library the flag -lmenu should be added -along with -lncurses in that order.

- - - - -
-
-    #include <menu.h>
-    .
-    .
-    .
-
-    compile and link: gcc <program file> -lmenu -lncurses
-
-
-

Example 18. Menu Basics

- - - - -
-
-#include <curses.h>
-#include <menu.h>
-
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD   4
-
-char *choices[] = {
-                        "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Exit",
-                  };
-
-int main()
-{       ITEM **my_items;
-        int c;                          
-        MENU *my_menu;
-        int n_choices, i;
-        ITEM *cur_item;
-        
-        
-        initscr();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-        
-        n_choices = ARRAY_SIZE(choices);
-        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
-
-        for(i = 0; i < n_choices; ++i)
-                my_items[i] = new_item(choices[i], choices[i]);
-        my_items[n_choices] = (ITEM *)NULL;
-
-        my_menu = new_menu((ITEM **)my_items);
-        mvprintw(LINES - 2, 0, "F1 to Exit");
-        post_menu(my_menu);
-        refresh();
-
-        while((c = getch()) != KEY_F(1))
-        {   switch(c)
-            {   case KEY_DOWN:
-                        menu_driver(my_menu, REQ_DOWN_ITEM);
-                                break;
-                        case KEY_UP:
-                                menu_driver(my_menu, REQ_UP_ITEM);
-                                break;
-                }
-        }       
-
-        free_item(my_items[0]);
-        free_item(my_items[1]);
-        free_menu(my_menu);
-        endwin();
-}
-        
-
-
-

This program demonstrates the basic concepts involved in -creating a menu using menus library. First we create the items -using new_item() and then attach them to the menu with new_menu() -function. After posting the menu and refreshing the screen, the -main processing loop starts. It reads user input and takes -corresponding action. The function menu_driver() is the main work -horse of the menu system. The second parameter to this function -tells what's to be done with the menu. According to the parameter, -menu_driver() does the corresponding task. The value can be either -a menu navigational request, an ascii character, or a KEY_MOUSE -special key associated with a mouse event.

-

The menu_driver accepts following navigational requests.

- - - - -
-
-
     REQ_LEFT_ITEM         Move left to an item.
-     REQ_RIGHT_ITEM      Move right to an item.
-     REQ_UP_ITEM         Move up to an item.
-     REQ_DOWN_ITEM       Move down to an item.
-     REQ_SCR_ULINE       Scroll up a line.
-     REQ_SCR_DLINE          Scroll down a line.
-     REQ_SCR_DPAGE          Scroll down a page.
-     REQ_SCR_UPAGE         Scroll up a page.
-     REQ_FIRST_ITEM     Move to the first item.
-     REQ_LAST_ITEM         Move to the last item.
-     REQ_NEXT_ITEM         Move to the next item.
-     REQ_PREV_ITEM         Move to the previous item. 
-     REQ_TOGGLE_ITEM     Select/deselect an item.
-     REQ_CLEAR_PATTERN     Clear the menu pattern buffer.
-     REQ_BACK_PATTERN      Delete the previous character from the pattern buffer.
-     REQ_NEXT_MATCH     Move to the next item matching the pattern match.
-     REQ_PREV_MATCH     Move to the previous item matching the pattern match.
-
-

Don't get overwhelmed by the number of options. We will see them -slowly one after another. The options of interest in this example -are REQ_UP_ITEM and REQ_DOWN_ITEM. These two options when passed to -menu_driver, menu driver updates the current item to one item up or -down respectively.

-
-
-
-

17.3. Menu -Driver: The work horse of the menu system

-

As you have seen in the above example, menu_driver plays an -important role in updating the menu. It is very important to -understand various options it takes and what they do. As explained -above, the second parameter to menu_driver() can be either a -navigational request, a printable character or a KEY_MOUSE key. -Let's dissect the different navigational requests.

-
    -
  • -

    REQ_LEFT_ITEM and REQ_RIGHT_ITEM

    -

    A Menu can be displayed with multiple columns for more than one -item. This can be done by using the menu_format()function. When a multi columnar menu -is displayed these requests cause the menu driver to move the -current selection to left or right.

    -
  • -
  • -

    REQ_UP_ITEM and REQ_DOWN_ITEM

    -

    These two options you have seen in the above example. These -options when given, makes the menu_driver to move the current -selection to an item up or down.

    -
  • -
  • -

    REQ_SCR_* options

    -

    The four options REQ_SCR_ULINE, REQ_SCR_DLINE, REQ_SCR_DPAGE, -REQ_SCR_UPAGE are related to scrolling. If all the items in the -menu cannot be displayed in the menu sub window, then the menu is -scrollable. These requests can be given to the menu_driver to do -the scrolling either one line up, down or one page down or up -respectively.

    -
  • -
  • -

    REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_NEXT_ITEM and -REQ_PREV_ITEM

    -

    These requests are self explanatory.

    -
  • -
  • -

    REQ_TOGGLE_ITEM

    -

    This request when given, toggles the present selection. This -option is to be used only in a multi valued menu. So to use this -request the option O_ONEVALUE must be off. This option can be made -off or on with set_menu_opts().

    -
  • -
  • -

    Pattern Requests

    -

    Every menu has an associated pattern buffer, which is used to -find the nearest match to the ascii characters entered by the user. -Whenever ascii characters are given to menu_driver, it puts in to -the pattern buffer. It also tries to find the nearest match to the -pattern in the items list and moves current selection to that item. -The request REQ_CLEAR_PATTERN clears the pattern buffer. The -request REQ_BACK_PATTERN deletes the previous character in the -pattern buffer. In case the pattern matches more than one item then -the matched items can be cycled through REQ_NEXT_MATCH and -REQ_PREV_MATCH which move the current selection to the next and -previous matches respectively.

    -
  • -
  • -

    Mouse Requests

    -

    In case of KEY_MOUSE requests, according to the mouse position -an action is taken accordingly. The action to be taken is explained -in the man page as,

    - - - - -
    -
    -       If  the  second argument is the KEY_MOUSE special key, the
    -       associated mouse event is translated into one of the above
    -       pre-defined  requests.   Currently only clicks in the user
    -       window (e.g. inside the menu display area or  the  decora­
    -       tion  window)  are handled. If you click above the display
    -       region of the menu, a REQ_SCR_ULINE is generated,  if  you
    -       doubleclick  a  REQ_SCR_UPAGE  is  generated  and  if  you
    -       tripleclick a REQ_FIRST_ITEM is generated.  If  you  click
    -       below  the  display region of the menu, a REQ_SCR_DLINE is
    -       generated, if you doubleclick a REQ_SCR_DPAGE is generated
    -       and  if  you  tripleclick a REQ_LAST_ITEM is generated. If
    -       you click at an item inside the display area of the  menu,
    -       the menu cursor is positioned to that item.
    -
    -
  • -
-

Each of the above requests will be explained in the following -lines with several examples whenever appropriate.

-
-
-
-

17.4. Menu -Windows

-

Every menu created is associated with a window and a sub window. -The menu window displays any title or border associated with the -menu. The menu sub window displays the menu items currently -available for selection. But we didn't specify any window or sub -window in the simple example. When a window is not specified, -stdscr is taken as the main window, and then menu system calculates -the sub window size required for the display of items. Then items -are displayed in the calculated sub window. So let's play with -these windows and display a menu with a border and a title.

-
-

Example 19. Menu Windows Usage example

- - - - -
-
-#include <menu.h>
-
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD   4
-
-char *choices[] = {
-                        "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Exit",
-                        (char *)NULL,
-                  };
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
-
-int main()
-{       ITEM **my_items;
-        int c;                          
-        MENU *my_menu;
-        WINDOW *my_menu_win;
-        int n_choices, i;
-        
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-
-        /* Create items */
-        n_choices = ARRAY_SIZE(choices);
-        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
-        for(i = 0; i < n_choices; ++i)
-                my_items[i] = new_item(choices[i], choices[i]);
-
-        /* Crate menu */
-        my_menu = new_menu((ITEM **)my_items);
-
-        /* Create the window to be associated with the menu */
-        my_menu_win = newwin(10, 40, 4, 4);
-        keypad(my_menu_win, TRUE);
-     
-        /* Set main window and sub window */
-        set_menu_win(my_menu, my_menu_win);
-        set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
-
-        /* Set menu mark to the string " * " */
-        set_menu_mark(my_menu, " * ");
-
-        /* Print a border around the main window and print a title */
-        box(my_menu_win, 0, 0);
-        print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
-        mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
-        mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
-        mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
-        mvprintw(LINES - 2, 0, "F1 to exit");
-        refresh();
-        
-        /* Post the menu */
-        post_menu(my_menu);
-        wrefresh(my_menu_win);
-
-        while((c = wgetch(my_menu_win)) != KEY_F(1))
-        {       switch(c)
-                {       case KEY_DOWN:
-                                menu_driver(my_menu, REQ_DOWN_ITEM);
-                                break;
-                        case KEY_UP:
-                                menu_driver(my_menu, REQ_UP_ITEM);
-                                break;
-                }
-                wrefresh(my_menu_win);
-        }       
-
-        /* Unpost and free all the memory taken up */
-        unpost_menu(my_menu);
-        free_menu(my_menu);
-        for(i = 0; i < n_choices; ++i)
-                free_item(my_items[i]);
-        endwin();
-}
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{       int length, x, y;
-        float temp;
-
-        if(win == NULL)
-                win = stdscr;
-        getyx(win, y, x);
-        if(startx != 0)
-                x = startx;
-        if(starty != 0)
-                y = starty;
-        if(width == 0)
-                width = 80;
-
-        length = strlen(string);
-        temp = (width - length)/ 2;
-        x = startx + (int)temp;
-        wattron(win, color);
-        mvwprintw(win, y, x, "%s", string);
-        wattroff(win, color);
-        refresh();
-}
-
-
-

This example creates a menu with a title, border, a fancy line -separating title and the items. As you can see, in order to attach -a window to a menu the function set_menu_win() has to be used. Then -we attach the sub window also. This displays the items in the sub -window. You can also set the mark string which gets displayed to -the left of the selected item with set_menu_mark().

-
-
-
-

17.5. -Scrolling Menus

-

If the sub window given for a window is not big enough to show -all the items, then the menu will be scrollable. When you are on -the last item in the present list, if you send REQ_DOWN_ITEM, it -gets translated into REQ_SCR_DLINE and the menu scrolls by one -item. You can manually give REQ_SCR_ operations to do scrolling. -Let's see how it can be done.

-
-

Example 20. Scrolling Menus example

- - - - -
-
-#include <curses.h>
-#include <menu.h>
-
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD   4
-
-char *choices[] = {
-                        "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Choice 5",
-                        "Choice 6",
-                        "Choice 7",
-                        "Choice 8",
-                        "Choice 9",
-                        "Choice 10",
-                        "Exit",
-                        (char *)NULL,
-                  };
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
-
-int main()
-{       ITEM **my_items;
-        int c;                          
-        MENU *my_menu;
-        WINDOW *my_menu_win;
-        int n_choices, i;
-        
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-        init_pair(2, COLOR_CYAN, COLOR_BLACK);
-
-        /* Create items */
-        n_choices = ARRAY_SIZE(choices);
-        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
-        for(i = 0; i < n_choices; ++i)
-                my_items[i] = new_item(choices[i], choices[i]);
-
-        /* Crate menu */
-        my_menu = new_menu((ITEM **)my_items);
-
-        /* Create the window to be associated with the menu */
-        my_menu_win = newwin(10, 40, 4, 4);
-        keypad(my_menu_win, TRUE);
-     
-        /* Set main window and sub window */
-        set_menu_win(my_menu, my_menu_win);
-        set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
-        set_menu_format(my_menu, 5, 1);
-                        
-        /* Set menu mark to the string " * " */
-        set_menu_mark(my_menu, " * ");
-
-        /* Print a border around the main window and print a title */
-        box(my_menu_win, 0, 0);
-        print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
-        mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
-        mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
-        mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
-        
-        /* Post the menu */
-        post_menu(my_menu);
-        wrefresh(my_menu_win);
-        
-        attron(COLOR_PAIR(2));
-        mvprintw(LINES - 2, 0, "Use PageUp and PageDown to scoll down or up a page of items");
-        mvprintw(LINES - 1, 0, "Arrow Keys to navigate (F1 to Exit)");
-        attroff(COLOR_PAIR(2));
-        refresh();
-
-        while((c = wgetch(my_menu_win)) != KEY_F(1))
-        {       switch(c)
-                {       case KEY_DOWN:
-                                menu_driver(my_menu, REQ_DOWN_ITEM);
-                                break;
-                        case KEY_UP:
-                                menu_driver(my_menu, REQ_UP_ITEM);
-                                break;
-                        case KEY_NPAGE:
-                                menu_driver(my_menu, REQ_SCR_DPAGE);
-                                break;
-                        case KEY_PPAGE:
-                                menu_driver(my_menu, REQ_SCR_UPAGE);
-                                break;
-                }
-                wrefresh(my_menu_win);
-        }       
-
-        /* Unpost and free all the memory taken up */
-        unpost_menu(my_menu);
-        free_menu(my_menu);
-        for(i = 0; i < n_choices; ++i)
-                free_item(my_items[i]);
-        endwin();
-}
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{       int length, x, y;
-        float temp;
-
-        if(win == NULL)
-                win = stdscr;
-        getyx(win, y, x);
-        if(startx != 0)
-                x = startx;
-        if(starty != 0)
-                y = starty;
-        if(width == 0)
-                width = 80;
-
-        length = strlen(string);
-        temp = (width - length)/ 2;
-        x = startx + (int)temp;
-        wattron(win, color);
-        mvwprintw(win, y, x, "%s", string);
-        wattroff(win, color);
-        refresh();
-}
-
-
-

This program is self-explanatory. In this example the number of -choices has been increased to ten, which is larger than our sub -window size which can hold 6 items. This message has to be -explicitly conveyed to the menu system with the function -set_menu_format(). In here we specify the number of rows and -columns we want to be displayed for a single page. We can specify -any number of items to be shown, in the rows variables, if it is -less than the height of the sub window. If the key pressed by the -user is a PAGE UP or PAGE DOWN, the menu is scrolled a page due to -the requests (REQ_SCR_DPAGE and REQ_SCR_UPAGE) given to -menu_driver().

-
-
-
-

17.6. -Multi Columnar Menus

-

In the above example you have seen how to use the function -set_menu_format(). I didn't mention what the cols variable (third -parameter) does. Well, If your sub window is wide enough, you can -opt to display more than one item per row. This can be specified in -the cols variable. To make things simpler, the following example -doesn't show descriptions for the items.

-
-

Example 21. Milt Columnar Menus Example

- - - - -
-
-#include <curses.h>
-#include <menu.h>
-
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD   4
-
-char *choices[] = {
-                        "Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5",
-                        "Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",
-                        "Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",
-                        "Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",
-                        "Exit",
-                        (char *)NULL,
-                  };
-
-int main()
-{       ITEM **my_items;
-        int c;                          
-        MENU *my_menu;
-        WINDOW *my_menu_win;
-        int n_choices, i;
-        
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-        init_pair(2, COLOR_CYAN, COLOR_BLACK);
-
-        /* Create items */
-        n_choices = ARRAY_SIZE(choices);
-        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
-        for(i = 0; i < n_choices; ++i)
-                my_items[i] = new_item(choices[i], choices[i]);
-
-        /* Crate menu */
-        my_menu = new_menu((ITEM **)my_items);
-
-        /* Set menu option not to show the description */
-        menu_opts_off(my_menu, O_SHOWDESC);
-
-        /* Create the window to be associated with the menu */
-        my_menu_win = newwin(10, 70, 4, 4);
-        keypad(my_menu_win, TRUE);
-     
-        /* Set main window and sub window */
-        set_menu_win(my_menu, my_menu_win);
-        set_menu_sub(my_menu, derwin(my_menu_win, 6, 68, 3, 1));
-        set_menu_format(my_menu, 5, 3);
-        set_menu_mark(my_menu, " * ");
-
-        /* Print a border around the main window and print a title */
-        box(my_menu_win, 0, 0);
-        
-        attron(COLOR_PAIR(2));
-        mvprintw(LINES - 3, 0, "Use PageUp and PageDown to scroll");
-        mvprintw(LINES - 2, 0, "Use Arrow Keys to navigate (F1 to Exit)");
-        attroff(COLOR_PAIR(2));
-        refresh();
-
-        /* Post the menu */
-        post_menu(my_menu);
-        wrefresh(my_menu_win);
-        
-        while((c = wgetch(my_menu_win)) != KEY_F(1))
-        {       switch(c)
-                {       case KEY_DOWN:
-                                menu_driver(my_menu, REQ_DOWN_ITEM);
-                                break;
-                        case KEY_UP:
-                                menu_driver(my_menu, REQ_UP_ITEM);
-                                break;
-                        case KEY_LEFT:
-                                menu_driver(my_menu, REQ_LEFT_ITEM);
-                                break;
-                        case KEY_RIGHT:
-                                menu_driver(my_menu, REQ_RIGHT_ITEM);
-                                break;
-                        case KEY_NPAGE:
-                                menu_driver(my_menu, REQ_SCR_DPAGE);
-                                break;
-                        case KEY_PPAGE:
-                                menu_driver(my_menu, REQ_SCR_UPAGE);
-                                break;
-                }
-                wrefresh(my_menu_win);
-        }       
-
-        /* Unpost and free all the memory taken up */
-        unpost_menu(my_menu);
-        free_menu(my_menu);
-        for(i = 0; i < n_choices; ++i)
-                free_item(my_items[i]);
-        endwin();
-}
-
-
-

Watch the function call to set_menu_format(). It specifies the -number of columns to be 3, thus displaying 3 items per row. We have -also switched off the showing descriptions with the function -menu_opts_off(). There are couple of functions set_menu_opts(), -menu_opts_on() and menu_opts() which can be used to manipulate menu -options. The following menu options can be specified.

- - - - -
-
-       O_ONEVALUE
-            Only one item can be selected for this menu.
-
-       O_SHOWDESC
-            Display  the  item  descriptions  when  the  menu  is
-            posted.
-
-       O_ROWMAJOR
-            Display the menu in row-major order.
-
-       O_IGNORECASE
-            Ignore the case when pattern-matching.
-
-       O_SHOWMATCH
-            Move the cursor to within the item  name  while  pat­
-            tern-matching.
-
-       O_NONCYCLIC
-            Don't   wrap   around  next-item  and  previous-item,
-            requests to the other end of the menu.
-
-

All options are on by default. You can switch specific -attributes on or off with menu_opts_on() and menu_opts_off() -functions. You can also use set_menu_opts() to directly specify the -options. The argument to this function should be a OR ed value of -some of those above constants. The function menu_opts() can be used -to find out a menu's present options.

-
-
-
-

17.7. Multi Valued Menus

-

You might be wondering what if you switch off the option -O_ONEVALUE. Then the menu becomes multi-valued. That means you can -select more than one item. This brings us to the request -REQ_TOGGLE_ITEM. Let's see it in action.

-
-

Example 22. Multi Valued Menus example

- - - - -
-
-#include <curses.h>
-#include <menu.h>
-
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD   4
-
-char *choices[] = {
-                        "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Choice 5",
-                        "Choice 6",
-                        "Choice 7",
-                        "Exit",
-                  };
-
-int main()
-{       ITEM **my_items;
-        int c;                          
-        MENU *my_menu;
-        int n_choices, i;
-        ITEM *cur_item;
-        
-        /* Initialize curses */ 
-        initscr();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize items */
-        n_choices = ARRAY_SIZE(choices);
-        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
-        for(i = 0; i < n_choices; ++i)
-                my_items[i] = new_item(choices[i], choices[i]);
-        my_items[n_choices] = (ITEM *)NULL;
-
-        my_menu = new_menu((ITEM **)my_items);
-
-        /* Make the menu multi valued */
-        menu_opts_off(my_menu, O_ONEVALUE);
-
-        mvprintw(LINES - 3, 0, "Use <SPACE> to select or unselect an item.");
-        mvprintw(LINES - 2, 0, "<ENTER> to see presently selected items(F1 to Exit)");
-        post_menu(my_menu);
-        refresh();
-
-        while((c = getch()) != KEY_F(1))
-        {       switch(c)
-                {       case KEY_DOWN:
-                                menu_driver(my_menu, REQ_DOWN_ITEM);
-                                break;
-                        case KEY_UP:
-                                menu_driver(my_menu, REQ_UP_ITEM);
-                                break;
-                        case ' ':
-                                menu_driver(my_menu, REQ_TOGGLE_ITEM);
-                                break;
-                        case 10:        /* Enter */
-                        {       char temp[200];
-                                ITEM **items;
-
-                                items = menu_items(my_menu);
-                                temp[0] = '\0';
-                                for(i = 0; i < item_count(my_menu); ++i)
-                                        if(item_value(items[i]) == TRUE)
-                                        {       strcat(temp, item_name(items[i]));
-                                                strcat(temp, " ");
-                                        }
-                                move(20, 0);
-                                clrtoeol();
-                                mvprintw(20, 0, temp);
-                                refresh();
-                        }
-                        break;
-                }
-        }       
-
-        free_item(my_items[0]);
-        free_item(my_items[1]);
-        free_menu(my_menu);
-        endwin();
-}
-        
-
-
-

Whew, A lot of new functions. Let's take them one after another. -Firstly, the REQ_TOGGLE_ITEM. In a multi-valued menu, the user -should be allowed to select or un select more than one item. The -request REQ_TOGGLE_ITEM toggles the present selection. In this case -when space is pressed REQ_TOGGLE_ITEM request is sent to -menu_driver to achieve the result.

-

Now when the user presses <ENTER> we show the items he -presently selected. First we find out the items associated with the -menu using the function menu_items(). Then we loop through the -items to find out if the item is selected or not. The function -item_value() returns TRUE if an item is selected. The function -item_count() returns the number of items in the menu. The item name -can be found with item_name(). You can also find the description -associated with an item using item_description().

-
-
-
-

17.8. Menu -Options

-

Well, by this time you must be itching for some difference in -your menu, with lots of functionality. I know. You want Colors !!!. -You want to create nice menus similar to those text mode dos -games. The functions set_menu_fore() and set_menu_back() can be -used to change the attribute of the selected item and unselected -item. The names are misleading. They don't change menu's foreground -or background which would have been useless.

-

The function set_menu_grey() can be used to set the display -attribute for the non-selectable items in the menu. This brings us -to the interesting option for an item the one and only -O_SELECTABLE. We can turn it off by the function item_opts_off() -and after that that item is not selectable. It's like a grayed item -in those fancy windows menus. Let's put these concepts in practice -with this example

-
-

Example 23. Menu Options example

- - - - -
-
-#include <menu.h>
-
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD   4
-
-char *choices[] = {
-                        "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Choice 5",
-                        "Choice 6",
-                        "Choice 7",
-                        "Exit",
-                  };
-
-int main()
-{       ITEM **my_items;
-        int c;                          
-        MENU *my_menu;
-        int n_choices, i;
-        ITEM *cur_item;
-        
-        /* Initialize curses */ 
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-        init_pair(2, COLOR_GREEN, COLOR_BLACK);
-        init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
-
-        /* Initialize items */
-        n_choices = ARRAY_SIZE(choices);
-        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
-        for(i = 0; i < n_choices; ++i)
-                my_items[i] = new_item(choices[i], choices[i]);
-        my_items[n_choices] = (ITEM *)NULL;
-        item_opts_off(my_items[3], O_SELECTABLE);
-        item_opts_off(my_items[6], O_SELECTABLE);
-
-        /* Create menu */
-        my_menu = new_menu((ITEM **)my_items);
-
-        /* Set fore ground and back ground of the menu */
-        set_menu_fore(my_menu, COLOR_PAIR(1) | A_REVERSE);
-        set_menu_back(my_menu, COLOR_PAIR(2));
-        set_menu_grey(my_menu, COLOR_PAIR(3));
-
-        /* Post the menu */
-        mvprintw(LINES - 3, 0, "Press <ENTER> to see the option selected");
-        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
-        post_menu(my_menu);
-        refresh();
-
-        while((c = getch()) != KEY_F(1))
-        {       switch(c)
-                {       case KEY_DOWN:
-                                menu_driver(my_menu, REQ_DOWN_ITEM);
-                                break;
-                        case KEY_UP:
-                                menu_driver(my_menu, REQ_UP_ITEM);
-                                break;
-                        case 10: /* Enter */
-                                move(20, 0);
-                                clrtoeol();
-                                mvprintw(20, 0, "Item selected is : %s", 
-                                                item_name(current_item(my_menu)));
-                                pos_menu_cursor(my_menu);
-                                break;
-                }
-        }       
-        unpost_menu(my_menu);
-        for(i = 0; i < n_choices; ++i)
-                free_item(my_items[i]);
-        free_menu(my_menu);
-        endwin();
-}
-        
-
-
-
-
-
-

17.9. The -useful User Pointer

-

We can associate a user pointer with each item in the menu. It -works the same way as user pointer in panels. It's not touched by -menu system. You can store any thing you like in that. I usually -use it to store the function to be executed when the menu option is -chosen (It's selected and may be the user pressed -<ENTER>);

-
-

Example 24. Menu User Pointer Usage

- - - - -
-
-#include <curses.h>
-#include <menu.h>
-
-#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
-#define CTRLD   4
-
-char *choices[] = {
-                        "Choice 1",
-                        "Choice 2",
-                        "Choice 3",
-                        "Choice 4",
-                        "Choice 5",
-                        "Choice 6",
-                        "Choice 7",
-                        "Exit",
-                  };
-void func(char *name);
-
-int main()
-{       ITEM **my_items;
-        int c;                          
-        MENU *my_menu;
-        int n_choices, i;
-        ITEM *cur_item;
-        
-        /* Initialize curses */ 
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-        init_pair(2, COLOR_GREEN, COLOR_BLACK);
-        init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
-
-        /* Initialize items */
-        n_choices = ARRAY_SIZE(choices);
-        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
-        for(i = 0; i < n_choices; ++i)
-        {       my_items[i] = new_item(choices[i], choices[i]);
-                /* Set the user pointer */
-                set_item_userptr(my_items[i], func);
-        }
-        my_items[n_choices] = (ITEM *)NULL;
-
-        /* Create menu */
-        my_menu = new_menu((ITEM **)my_items);
-
-        /* Post the menu */
-        mvprintw(LINES - 3, 0, "Press <ENTER> to see the option selected");
-        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
-        post_menu(my_menu);
-        refresh();
-
-        while((c = getch()) != KEY_F(1))
-        {       switch(c)
-                {       case KEY_DOWN:
-                                menu_driver(my_menu, REQ_DOWN_ITEM);
-                                break;
-                        case KEY_UP:
-                                menu_driver(my_menu, REQ_UP_ITEM);
-                                break;
-                        case 10: /* Enter */
-                        {       ITEM *cur;
-                                void (*p)(char *);
-
-                                cur = current_item(my_menu);
-                                p = item_userptr(cur);
-                                p((char *)item_name(cur));
-                                pos_menu_cursor(my_menu);
-                                break;
-                        }
-                        break;
-                }
-        }       
-        unpost_menu(my_menu);
-        for(i = 0; i < n_choices; ++i)
-                free_item(my_items[i]);
-        free_menu(my_menu);
-        endwin();
-}
-
-void func(char *name)
-{       move(20, 0);
-        clrtoeol();
-        mvprintw(20, 0, "Item selected is : %s", name);
-}       
-
-
-
-
-
-
-

18. Forms -Library

-

Well. If you have seen those forms on web pages which take input -from users and do various kinds of things, you might be wondering -how would any one create such forms in text mode display. It's -quite difficult to write those nifty forms in plain ncurses. Forms -library tries to provide a basic frame work to build and maintain -forms with ease. It has lot of features(functions) which manage -validation, dynamic expansion of fields etc.. Let's see it in full -flow.

-

A form is a collection of fields; each field can be either a -label(static text) or a data-entry location. The forms also library -provides functions to divide forms into multiple pages.

-
-
-

18.1. The -Basics

-

Forms are created in much the same way as menus. First the -fields related to the form are created with new_field(). You can -set options for the fields, so that they can be displayed with some -fancy attributes, validated before the field looses focus etc.. -Then the fields are attached to form. After this, the form can be -posted to display and is ready to receive inputs. On the similar -lines to menu_driver(), the form is manipulated with form_driver(). -We can send requests to form_driver to move focus to a certain -field, move cursor to end of the field etc.. After the user enters -values in the fields and validation done, form can be unposted and -memory allocated can be freed.

-

The general flow of control of a forms program looks like -this.

-
    -
  1. -

    Initialize curses

    -
  2. -
  3. -

    Create fields using new_field(). You can specify the height and -width of the field, and its position on the form.

    -
  4. -
  5. -

    Create the forms with new_form() by specifying the fields to be -attached with.

    -
  6. -
  7. -

    Post the form with form_post() and refresh the screen.

    -
  8. -
  9. -

    Process the user requests with a loop and do necessary updates -to form with form_driver.

    -
  10. -
  11. -

    Unpost the menu with form_unpost()

    -
  12. -
  13. -

    Free the memory allocated to menu by free_form()

    -
  14. -
  15. -

    Free the memory allocated to the items with free_field()

    -
  16. -
  17. -

    End curses

    -
  18. -
-

As you can see, working with forms library is much similar to -handling menu library. The following examples will explore various -aspects of form processing. Let's start the journey with a simple -example. first.

-
-
-
-

18.2. -Compiling With the Forms Library

-

To use forms library functions, you have to include form.h and -to link the program with forms library the flag -lform should be -added along with -lncurses in that order.

- - - - -
-
-    #include <form.h>
-    .
-    .
-    .
-
-    compile and link: gcc <program file> -lform -lncurses
-
-
-

Example 25. Forms Basics

- - - - -
-
-#include <form.h>
-
-int main()
-{       FIELD *field[3];
-        FORM  *my_form;
-        int ch;
-        
-        /* Initialize curses */
-        initscr();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize the fields */
-        field[0] = new_field(1, 10, 4, 18, 0, 0);
-        field[1] = new_field(1, 10, 6, 18, 0, 0);
-        field[2] = NULL;
-
-        /* Set field options */
-        set_field_back(field[0], A_UNDERLINE);  /* Print a line for the option  */
-        field_opts_off(field[0], O_AUTOSKIP);   /* Don't go to next field when this */
-                                                /* Field is filled up           */
-        set_field_back(field[1], A_UNDERLINE); 
-        field_opts_off(field[1], O_AUTOSKIP);
-
-        /* Create the form and post it */
-        my_form = new_form(field);
-        post_form(my_form);
-        refresh();
-        
-        mvprintw(4, 10, "Value 1:");
-        mvprintw(6, 10, "Value 2:");
-        refresh();
-
-        /* Loop through to get user requests */
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case KEY_DOWN:
-                                /* Go to next field */
-                                form_driver(my_form, REQ_NEXT_FIELD);
-                                /* Go to the end of the present buffer */
-                                /* Leaves nicely at the last character */
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        case KEY_UP:
-                                /* Go to previous field */
-                                form_driver(my_form, REQ_PREV_FIELD);
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        default:
-                                /* If this is a normal character, it gets */
-                                /* Printed                                */    
-                                form_driver(my_form, ch);
-                                break;
-                }
-        }
-
-        /* Un post form and free the memory */
-        unpost_form(my_form);
-        free_form(my_form);
-        free_field(field[0]);
-        free_field(field[1]); 
-
-        endwin();
-        return 0;
-}
-
-
-

Above example is pretty straight forward. It creates two fields -with new_field(). new_field() takes -height, width, starty, startx, number of offscreen rows and number -of additional working buffers. The fifth argument number of -offscreen rows specifies how much of the field to be shown. If it -is zero, the entire field is always displayed otherwise the form -will be scrollable when the user accesses not displayed parts of -the field. The forms library allocates one buffer per field to -store the data user enters. Using the last parameter to new_field() -we can specify it to allocate some additional buffers. These can be -used for any purpose you like.

-

After creating the fields, back ground attribute of both of them -is set to an underscore with set_field_back(). The AUTOSKIP option -is turned off using field_opts_off(). If this option is turned on, -focus will move to the next field in the form once the active field -is filled up completely.

-

After attaching the fields to the form, it is posted. Here on, -user inputs are processed in the while loop, by making -corresponding requests to form_driver. The details of all the -requests to the form_driver() are explained later.

-
-
-
-

18.3. -Playing with Fields

-

Each form field is associated with a lot of attributes. They can -be manipulated to get the required effect and to have fun !!!. So -why wait?

-
-
-

18.3.1. -Fetching Size and Location of Field

-

The parameters we have given at the time of creation of a field -can be retrieved with field_info(). It returns height, width, -starty, startx, number of offscreen rows, and number of additional -buffers into the parameters given to it. It is a sort of inverse of -new_field().

- - - - -
-
-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 */
-
-
-
-
-

18.3.2. Moving -the field

-

The location of the field can be moved to a different position -with move_field().

- - - - -
-
-int move_field(    FIELD *field,              /* field to alter */
-                   int top, int left);        /* new upper-left corner */
-
-

As usual, the changed position can be queried with -field_infor().

-
-
-
-

18.3.3. -Field Justification

-

The justification to be done for the field can be fixed using -the function set_field_just().

- - - - -
-
-    int set_field_just(FIELD *field,          /* field to alter */
-               int justmode);         /* mode to set */
-    int field_just(FIELD *field);          /* fetch justify mode of field */
-
-

The justification mode valued accepted and returned by these -functions are NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or -JUSTIFY_CENTER.

-
-
-
-

18.3.4. Field Display Attributes

-

As you have seen, in the above example, display attribute for -the fields can be set with set_field_fore() and setfield_back(). -These functions set foreground and background attribute of the -fields. You can also specify a pad character which will be filled -in the unfilled portion of the field. The pad character is set with -a call to set_field_pad(). Default pad value is a space. The -functions field_fore(), field_back, field_pad() can be used to -query the present foreground, background attributes and pad -character for the field. The following list gives the usage of -functions.

- - - - -
-
-
int set_field_fore(FIELD *field,        /* field to alter */
-                   chtype attr);        /* attribute to set */ 
-
-chtype field_fore(FIELD *field);        /* field to query */
-                                        /* returns foreground attribute */
-
-int set_field_back(FIELD *field,        /* field to alter */
-                   chtype attr);        /* attribute to set */ 
-
-chtype field_back(FIELD *field);        /* field to query */
-                                        /* returns background attribute */
-
-int set_field_pad(FIELD *field,         /* field to alter */
-                  int pad);             /* pad character to set */ 
-
-chtype field_pad(FIELD *field);         /* field to query */  
-                                        /* returns present pad character */
-
-

Though above functions seem quite simple, using colors with -set_field_fore() may be frustrating in the beginning. Let me first -explain about foreground and background attributes of a field. The -foreground attribute is associated with the character. That means a -character in the field is printed with the attribute you have set -with set_field_fore(). Background attribute is the attribute used -to fill background of field, whether any character is there or not. -So what about colors? Since colors are always defined in pairs, -what is the right way to display colored fields? Here's an example -clarifying color attributes.

-
-

Example 26. Form Attributes example

- - - - -
-
-#include <form.h>
-
-int main()
-{       FIELD *field[3];
-        FORM  *my_form;
-        int ch;
-        
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize few color pairs */
-        init_pair(1, COLOR_WHITE, COLOR_BLUE);
-        init_pair(2, COLOR_WHITE, COLOR_BLUE);
-
-        /* Initialize the fields */
-        field[0] = new_field(1, 10, 4, 18, 0, 0);
-        field[1] = new_field(1, 10, 6, 18, 0, 0);
-        field[2] = NULL;
-
-        /* Set field options */
-        set_field_fore(field[0], COLOR_PAIR(1));/* Put the field with blue background */
-        set_field_back(field[0], COLOR_PAIR(2));/* and white foreground (characters */
-                                                /* are printed in white         */
-        field_opts_off(field[0], O_AUTOSKIP);   /* Don't go to next field when this */
-                                                /* Field is filled up           */
-        set_field_back(field[1], A_UNDERLINE); 
-        field_opts_off(field[1], O_AUTOSKIP);
-
-        /* Create the form and post it */
-        my_form = new_form(field);
-        post_form(my_form);
-        refresh();
-        
-        set_current_field(my_form, field[0]); /* Set focus to the colored field */
-        mvprintw(4, 10, "Value 1:");
-        mvprintw(6, 10, "Value 2:");
-        mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
-        refresh();
-
-        /* Loop through to get user requests */
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case KEY_DOWN:
-                                /* Go to next field */
-                                form_driver(my_form, REQ_NEXT_FIELD);
-                                /* Go to the end of the present buffer */
-                                /* Leaves nicely at the last character */
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        case KEY_UP:
-                                /* Go to previous field */
-                                form_driver(my_form, REQ_PREV_FIELD);
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        default:
-                                /* If this is a normal character, it gets */
-                                /* Printed                                */    
-                                form_driver(my_form, ch);
-                                break;
-                }
-        }
-
-        /* Un post form and free the memory */
-        unpost_form(my_form);
-        free_form(my_form);
-        free_field(field[0]);
-        free_field(field[1]); 
-
-        endwin();
-        return 0;
-}
-
-
-

Play with the color pairs and try to understand the foreground -and background attributes. In my programs using color attributes, I -usually set only the background with set_field_back(). Curses -simply doesn't allow defining individual color attributes.

-
-
-
-

18.3.5. Field Option Bits

-

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:

- - - - -
-
-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 */ 
-
-

The function set_field_opts() can be used to directly set -attributes of a field or you can choose to switch a few attributes -on and off with field_opts_on() and field_opts_off() selectively. -Anytime you can query the attributes of a field with field_opts(). -The following is the list of available options. By default, all -options are on.

-
-
-
O_VISIBLE
-
-

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.

-
-
O_ACTIVE
-
-

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.

-
-
O_PUBLIC
-
-

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.

-
-
O_EDIT
-
-

Controls whether the field's data can be modified. When this -option is off, all editing requests except REQ_PREV_CHOICE and REQ_NEXT_CHOICEwill fail. Such read-only fields may -be useful for help messages.

-
-
O_WRAP
-
-

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.

-
-
O_BLANK
-
-

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).

-
-
O_AUTOSKIP
-
-

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.

-
-
O_NULLOK
-
-

Controls whether validation 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.

-
-
O_PASSOK
-
-

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.

-
-
O_STATIC
-
-

Controls whether the field is fixed to its initial dimensions. -If you turn this off, the field becomes dynamic and will stretch to -fit entered data.

-
-
-
-

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.

-

The option values are bit-masks and can be composed with -logical-or in the obvious way. You have seen the usage of switching -off O_AUTOSKIP option. The following example clarifies usage of -some more options. Other options are explained where -appropriate.

-
-

Example 27. Field Options Usage example

- - - - -
-
-#include <form.h>
-
-#define STARTX 15
-#define STARTY 4
-#define WIDTH 25
-
-#define N_FIELDS 3
-
-int main()
-{       FIELD *field[N_FIELDS];
-        FORM  *my_form;
-        int ch, i;
-        
-        /* Initialize curses */
-        initscr();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize the fields */
-        for(i = 0; i < N_FIELDS - 1; ++i)
-                field[i] = new_field(1, WIDTH, STARTY + i * 2, STARTX, 0, 0);
-        field[N_FIELDS - 1] = NULL;
-
-        /* Set field options */
-        set_field_back(field[1], A_UNDERLINE);  /* Print a line for the option  */
-        
-        field_opts_off(field[0], O_ACTIVE); /* This field is a static label */
-        field_opts_off(field[1], O_PUBLIC); /* This filed is like a password field*/
-        field_opts_off(field[1], O_AUTOSKIP); /* To avoid entering the same field */
-                                              /* after last character is entered */
-        
-        /* Create the form and post it */
-        my_form = new_form(field);
-        post_form(my_form);
-        refresh();
-        
-        set_field_just(field[0], JUSTIFY_CENTER); /* Center Justification */
-        set_field_buffer(field[0], 0, "This is a static Field"); 
-                                                  /* Initialize the field  */
-        mvprintw(STARTY, STARTX - 10, "Field 1:");
-        mvprintw(STARTY + 2, STARTX - 10, "Field 2:");
-        refresh();
-
-        /* Loop through to get user requests */
-        while((ch = getch()) != KEY_F(1))
-        {       switch(ch)
-                {       case KEY_DOWN:
-                                /* Go to next field */
-                                form_driver(my_form, REQ_NEXT_FIELD);
-                                /* Go to the end of the present buffer */
-                                /* Leaves nicely at the last character */
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        case KEY_UP:
-                                /* Go to previous field */
-                                form_driver(my_form, REQ_PREV_FIELD);
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        default:
-                                /* If this is a normal character, it gets */
-                                /* Printed                                */    
-                                form_driver(my_form, ch);
-                                break;
-                }
-        }
-
-        /* Un post form and free the memory */
-        unpost_form(my_form);
-        free_form(my_form);
-        free_field(field[0]);
-        free_field(field[1]); 
-
-        endwin();
-        return 0;
-}
-
-
-

This example, though useless, shows the usage of options. If -used properly, they can present information very effectively in a -form. The second field being not O_PUBLIC, does not show the -characters you are typing.

-
-
-
-

18.3.6. -Field Status

-

The field status specifies whether the field has got edited or -not. It is initially set to FALSE and when user enters something -and the data buffer gets modified it becomes TRUE. So a field's -status can be queried to find out whether it has been modified or -not. The following functions can assist in those operations.

- - - - -
-
-int set_field_status(FIELD *field,      /* field to alter */
-                   int status);         /* status to set */
-
-int field_status(FIELD *field);         /* fetch status of field */
-
-

It's better to check the field's status only after after leaving -the field, as data buffer might not have been updated yet as the -validation is still due. To guarantee that right status is -returned, call field_status() 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 -REQ_VALIDATION request has been processed by the forms driver

-
-
-
-

18.3.7. -Field User Pointer

-

Every field structure contains one pointer that can be used by -the user for various purposes. It is not touched by forms library -and can be used for any purpose by the user. The following -functions set and fetch user pointer.

- - - - -
-
-int set_field_userptr(FIELD *field,   
-           char *userptr);      /* the user pointer you wish to associate */
-                                /* with the field    */
-
-char *field_userptr(FIELD *field);      /* fetch user pointer of the field */
-
-
-
-
-

18.3.8. Variable-Sized Fields

-

If you want a dynamically changing field with variable width, -this is the feature you want to put to full use. This will allow -the user to enter more data than the original size of the field and -let the field grow. According to the field orientation it will -scroll horizontally or vertically to incorporate the new data.

-

To make a field dynamically growable, the option O_STATIC should -be turned off. This can be done with a

- - - - -
-
-    field_opts_off(field_pointer, O_STATIC);
-
-

But it's usually not advisable to allow a field to grow -infinitely. You can set a maximum limit to the growth of the field -with

- - - - -
-
-int set_max_field(FIELD *field,    /* Field on which to operate */
-                  int max_growth); /* maximum growth allowed for the field */
-
-

The field info for a dynamically growable field can be retrieved -by

- - - - -
-
-int dynamic_field_info( FIELD *field,     /* Field on which to operate */
-            int   *prows,     /* number of rows will be filled in this */
-            int   *pcols,     /* number of columns will be filled in this*/
-            int   *pmax)      /* maximum allowable growth will be filled */
-                              /* in this */
-
-Though field_info work as usual, it is advisable to use this -function to get the proper attributes of a dynamically growable -field. -

Recall the library routine new_field; a new field created with -height set to one will be defined to be a one line field. A new -field created with height greater than one will be defined to be a -multi line field.

-

A one line field with O_STATIC turned off (dynamically growable -field) will contain a single fixed row, but the number of columns -can increase if the user enters more data than the initial field -will hold. The number of columns displayed will remain fixed and -the additional data will scroll horizontally.

-

A multi line field with O_STATIC turned off (dynamically -growable field) will contain a fixed number of columns, but the -number of rows can increase if the user enters more data than the -initial field will hold. The number of rows displayed will remain -fixed and the additional data will scroll vertically.

-

The above two paragraphs pretty much describe a dynamically -growable field's behavior. The way other parts of forms library -behaves is described below:

-
    -
  1. -

    The field option O_AUTOSKIP will be ignored if the option -O_STATIC is off and there is no maximum growth specified for the -field. Currently, O_AUTOSKIP generates an automatic REQ_NEXT_FIELD -form driver request when the user types in the last character -position of a field. On a growable field with no maximum growth -specified, there is no last character position. If a maximum growth -is specified, the O_AUTOSKIP option will work as normal if the -field has grown to its maximum size.

    -
  2. -
  3. -

    The field justification will be ignored if the option O_STATIC -is off. Currently, set_field_just can be used to JUSTIFY_LEFT, -JUSTIFY_RIGHT, JUSTIFY_CENTER the contents of a one line field. A -growable one line field will, by definition, grow and scroll -horizontally and may contain more data than can be justified. The -return from field_just will be unchanged.

    -
  4. -
  5. -

    The overloaded form driver request REQ_NEW_LINE will operate the -same way regardless of the O_NL_OVERLOAD form option if the field -option O_STATIC is off and there is no maximum growth specified for -the field. Currently, if the form option O_NL_OVERLOAD is on, -REQ_NEW_LINE implicitly generates a REQ_NEXT_FIELD if called from -the last line of a field. If a field can grow without bound, there -is no last line, so REQ_NEW_LINE will never implicitly generate a -REQ_NEXT_FIELD. If a maximum growth limit is specified and the -O_NL_OVERLOAD form option is on, REQ_NEW_LINE will only implicitly -generate REQ_NEXT_FIELD if the field has grown to its maximum size -and the user is on the last line.

    -
  6. -
  7. -

    The library call dup_field will work as usual; it will duplicate -the field, including the current buffer size and contents of the -field being duplicated. Any specified maximum growth will also be -duplicated.

    -
  8. -
  9. -

    The library call link_field will work as usual; it will -duplicate all field attributes and share buffers with the field -being linked. If the O_STATIC field option is subsequently changed -by a field sharing buffers, how the system reacts to an attempt to -enter more data into the field than the buffer will currently hold -will depend on the setting of the option in the current field.

    -
  10. -
  11. -

    The library call field_info will work as usual; the variable -nrow will contain the value of the original call to new_field. The -user should use dynamic_field_info, described above, to query the -current size of the buffer.

    -
  12. -
-

Some of the above points make sense only after explaining form -driver. We will be looking into that in next few sections.

-
-
-
-
-

18.4. Form -Windows

-

The form windows concept is pretty much similar to menu windows. -Every form is associated with a main window and a sub window. The -form main window displays any title or border associated or -whatever the user wishes. Then the sub window contains all the -fields and displays them according to their position. This gives -the flexibility of manipulating fancy form displaying very -easily.

-

Since this is pretty much similar to menu windows, I am -providing an example with out much explanation. The functions are -similar and they work the same way.

-
-

Example 28. Form Windows Example

- - - - -
-
-#include <form.h>
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
-
-int main()
-{
-        FIELD *field[3];
-        FORM  *my_form;
-        WINDOW *my_form_win;
-        int ch, rows, cols;
-        
-        /* Initialize curses */
-        initscr();
-        start_color();
-        cbreak();
-        noecho();
-        keypad(stdscr, TRUE);
-
-        /* Initialize few color pairs */
-        init_pair(1, COLOR_RED, COLOR_BLACK);
-
-        /* Initialize the fields */
-        field[0] = new_field(1, 10, 6, 1, 0, 0);
-        field[1] = new_field(1, 10, 8, 1, 0, 0);
-        field[2] = NULL;
-
-        /* Set field options */
-        set_field_back(field[0], A_UNDERLINE);
-        field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
-                                              /* Field is filled up             */
-        set_field_back(field[1], A_UNDERLINE); 
-        field_opts_off(field[1], O_AUTOSKIP);
-        
-        /* Create the form and post it */
-        my_form = new_form(field);
-        
-        /* Calculate the area required for the form */
-        scale_form(my_form, &rows, &cols);
-
-        /* Create the window to be associated with the form */
-        my_form_win = newwin(rows + 4, cols + 4, 4, 4);
-        keypad(my_form_win, TRUE);
-
-        /* Set main window and sub window */
-        set_form_win(my_form, my_form_win);
-        set_form_sub(my_form, derwin(my_form_win, rows, cols, 2, 2));
-
-        /* Print a border around the main window and print a title */
-        box(my_form_win, 0, 0);
-        print_in_middle(my_form_win, 1, 0, cols + 4, "My Form", COLOR_PAIR(1));
-        
-        post_form(my_form);
-        wrefresh(my_form_win);
-
-        mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
-        refresh();
-
-        /* Loop through to get user requests */
-        while((ch = wgetch(my_form_win)) != KEY_F(1))
-        {       switch(ch)
-                {       case KEY_DOWN:
-                                /* Go to next field */
-                                form_driver(my_form, REQ_NEXT_FIELD);
-                                /* Go to the end of the present buffer */
-                                /* Leaves nicely at the last character */
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        case KEY_UP:
-                                /* Go to previous field */
-                                form_driver(my_form, REQ_PREV_FIELD);
-                                form_driver(my_form, REQ_END_LINE);
-                                break;
-                        default:
-                                /* If this is a normal character, it gets */
-                                /* Printed                                */    
-                                form_driver(my_form, ch);
-                                break;
-                }
-        }
-
-        /* Un post form and free the memory */
-        unpost_form(my_form);
-        free_form(my_form);
-        free_field(field[0]);
-        free_field(field[1]); 
-
-        endwin();
-        return 0;
-}
-
-void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
-{       int length, x, y;
-        float temp;
-
-        if(win == NULL)
-                win = stdscr;
-        getyx(win, y, x);
-        if(startx != 0)
-                x = startx;
-        if(starty != 0)
-                y = starty;
-        if(width == 0)
-                width = 80;
-
-        length = strlen(string);
-        temp = (width - length)/ 2;
-        x = startx + (int)temp;
-        wattron(win, color);
-        mvwprintw(win, y, x, "%s", string);
-        wattroff(win, color);
-        refresh();
-}
-
-
-
-
-
-

18.5. -Field Validation

-

By default, a field will accept any data input by the user. It -is possible to attach validation to the field. Then any attempt by -the user to leave the field, while it contains data that doesn't -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.

-

Validation can be attached to a field with the following -function.

- - - - -
-
-int set_field_type(FIELD *field,          /* field to alter */
-                   FIELDTYPE *ftype,      /* type to associate */
-                   ...);                  /* additional arguments*/
-
-Once set, the validation type for a field can be queried with - - - - -
-
-FIELDTYPE *field_type(FIELD *field);      /* field to query */
-
-

The form driver validates the data in a field only when data is -entered by the end-user. Validation does not occur when

-
    -
  • -

    the application program changes the field value by calling -set_field_buffer.

    -
  • -
  • -

    linked field values are changed indirectly -- by changing the -field to which they are linked

    -
  • -
-

The following are the pre-defined validation types. You can also -specify custom validation, though it's a bit tricky and -cumbersome.

-

TYPE_ALPHA

-

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:

- - - - -
-
-int set_field_type(FIELD *field,          /* field to alter */
-                   TYPE_ALPHA,            /* type to associate */
-                   int width);            /* maximum width of field */
-
-

The width argument sets a minimum width of data. The user has to -enter at-least width number of characters before he can leave the -field. Typically you'll want to set this to the field width; if -it's greater than the field width, the validation check will always -fail. A minimum width of zero makes field completion optional.

-

TYPE_ALNUM

-

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:

- - - - -
-
-int set_field_type(FIELD *field,          /* field to alter */
-                   TYPE_ALNUM,            /* type to associate */
-                   int width);            /* maximum width of field */
-
-

The width argument sets a minimum width of data. As with -TYPE_ALPHA, typically you'll want to set this to the field width; -if it's greater than the field width, the validation check will -always fail. A minimum width of zero makes field completion -optional.

-

TYPE_ENUM

-

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:

- - - - -
-
-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? */
-
-

The valuelist parameter must point at a NULL-terminated list of -valid strings. The checkcase argument, if true, makes comparison -with the string case-sensitive.

-

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.

-

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 checkunique argument, if true, -requires prefix matches to be unique in order to be valid.

-

The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests can be -particularly useful with these fields.

-

TYPE_INTEGER

-

This field type accepts an integer. It is set up as follows:

- - - - -
-
-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 */
-
-

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.

-

If the value passes its range check, it is padded with as many -leading zero digits as necessary to meet the padding argument.

-

A TYPE_INTEGER value buffer can conveniently be interpreted with -the C library function atoi(3).

-

TYPE_NUMERIC

-

This field type accepts a decimal number. It is set up as -follows:

- - - - -
-
-int set_field_type(FIELD *field,          /* field to alter */
-                   TYPE_NUMERIC,          /* type to associate */
-                   int padding,           /* # places of precision */
-                   int vmin, int vmax);   /* valid range */
-
-

Valid characters consist of an optional leading minus and -digits. possibly including a decimal point. The range check is -performed on exit. If the range maximum is less than or equal to -the minimum, the range is ignored.

-

If the value passes its range check, it is padded with as many -trailing zero digits as necessary to meet the padding argument.

-

A TYPE_NUMERIC value buffer can conveniently be interpreted with -the C library function atof(3).

-

TYPE_REGEXP

-

This field type accepts data matching a regular expression. It -is set up as follows:

- - - - -
-
-int set_field_type(FIELD *field,          /* field to alter */
-                   TYPE_REGEXP,           /* type to associate */
-                   char *regexp);         /* expression to match */
-
-

The syntax for regular expressions is that of regcomp(3). The -check for regular-expression match is performed on exit.

-
-
-
-

18.6. Form -Driver: The work horse of the forms system

-

As in the menu system, form_driver() plays a very important role -in forms system. All types of requests to forms system should be -funneled through form_driver().

- - - - -
-
-int form_driver(FORM *form,     /* form on which to operate     */
-                int request)    /* form request code         */
-
-

As you have seen some of the examples above, you have to be in a -loop looking for user input and then decide whether it's a field -data or a form request. The form requests are then passed to -form_driver() to do the work.

-

The requests roughly can be divided into following categories. -Different requests and their usage is explained below:

-
-
-

18.6.1. Page -Navigation Requests

-

These requests cause page-level moves through the form, -triggering display of a new form screen. A form can be made of -multiple pages. If you have a big form with lot of fields and -logical sections, then you can divide the form into pages. The -function set_new_page() to set a new page at the field -specified.

- - - - -
-
-int set_new_page(FIELD *field,/* Field at which page break to be set or unset */
-         bool new_page_flag); /* should be TRUE to put a break */
-
-

The following requests allow you to move to different pages

-
    -
  • -

    REQ_NEXT_PAGE Move to the next form page.

    -
  • -
  • -

    REQ_PREV_PAGE Move to the previous form page.

    -
  • -
  • -

    REQ_FIRST_PAGE Move to the first form page.

    -
  • -
  • -

    REQ_LAST_PAGE Move to the last form page.

    -
  • -
-

These requests treat the list as cyclic; that is, REQ_NEXT_PAGE -from the last page goes to the first, and REQ_PREV_PAGE from the -first page goes to the last.

-
-
-
-

18.6.2. Inter-Field Navigation Requests

-

These requests handle navigation between fields on the same -page.

-
    -
  • -

    REQ_NEXT_FIELD Move to next field.

    -
  • -
  • -

    REQ_PREV_FIELD Move to previous field.

    -
  • -
  • -

    REQ_FIRST_FIELD Move to the first field.

    -
  • -
  • -

    REQ_LAST_FIELD Move to the last field.

    -
  • -
  • -

    REQ_SNEXT_FIELD Move to sorted next field.

    -
  • -
  • -

    REQ_SPREV_FIELD Move to sorted previous field.

    -
  • -
  • -

    REQ_SFIRST_FIELD Move to the sorted first field.

    -
  • -
  • -

    REQ_SLAST_FIELD Move to the sorted last field.

    -
  • -
  • -

    REQ_LEFT_FIELD Move left to field.

    -
  • -
  • -

    REQ_RIGHT_FIELD Move right to field.

    -
  • -
  • -

    REQ_UP_FIELD Move up to field.

    -
  • -
  • -

    REQ_DOWN_FIELD Move down to field.

    -
  • -
-

These requests treat the list of fields on a page as cyclic; -that is, REQ_NEXT_FIELD from the last field goes to the first, and -REQ_PREV_FIELD from the first field goes to the last. The order of -the fields for these (and the REQ_FIRST_FIELD and REQ_LAST_FIELD -requests) is simply the order of the field pointers in the form -array (as set up by new_form() or set_form_fields()

-

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.

-

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.

-

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 REQ_MOVE_RIGHT from A will go -to B only if A, B, and C all share the same first line; otherwise -it will skip over B to C.

-
-
-
-

18.6.3. Intra-Field Navigation Requests

-

These requests drive movement of the edit cursor within the -currently selected field.

-
    -
  • -

    REQ_NEXT_CHAR Move to next character.

    -
  • -
  • -

    REQ_PREV_CHAR Move to previous character.

    -
  • -
  • -

    REQ_NEXT_LINE Move to next line.

    -
  • -
  • -

    REQ_PREV_LINE Move to previous line.

    -
  • -
  • -

    REQ_NEXT_WORD Move to next word.

    -
  • -
  • -

    REQ_PREV_WORD Move to previous word.

    -
  • -
  • -

    REQ_BEG_FIELD Move to beginning of field.

    -
  • -
  • -

    REQ_END_FIELD Move to end of field.

    -
  • -
  • -

    REQ_BEG_LINE Move to beginning of line.

    -
  • -
  • -

    REQ_END_LINE Move to end of line.

    -
  • -
  • -

    REQ_LEFT_CHAR Move left in field.

    -
  • -
  • -

    REQ_RIGHT_CHAR Move right in field.

    -
  • -
  • -

    REQ_UP_CHAR Move up in field.

    -
  • -
  • -

    REQ_DOWN_CHAR Move down in field.

    -
  • -
-

Each word 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.

-
-
-
-

18.6.4. -Scrolling Requests

-

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:

-
    -
  • -

    REQ_SCR_FLINE Scroll vertically forward a line.

    -
  • -
  • -

    REQ_SCR_BLINE Scroll vertically backward a line.

    -
  • -
  • -

    REQ_SCR_FPAGE Scroll vertically forward a page.

    -
  • -
  • -

    REQ_SCR_BPAGE Scroll vertically backward a page.

    -
  • -
  • -

    REQ_SCR_FHPAGE Scroll vertically forward half a -page.

    -
  • -
  • -

    REQ_SCR_BHPAGE Scroll vertically backward half a -page.

    -
  • -
  • -

    REQ_SCR_FCHAR Scroll horizontally forward a -character.

    -
  • -
  • -

    REQ_SCR_BCHAR Scroll horizontally backward a -character.

    -
  • -
  • -

    REQ_SCR_HFLINE Scroll horizontally one field width -forward.

    -
  • -
  • -

    REQ_SCR_HBLINE Scroll horizontally one field width -backward.

    -
  • -
  • -

    REQ_SCR_HFHALF Scroll horizontally one half field width -forward.

    -
  • -
  • -

    REQ_SCR_HBHALF Scroll horizontally one half field width -backward.

    -
  • -
-

For scrolling purposes, a page of a field is the height of its -visible part.

-
-
-
-

18.6.5. Editing -Requests

-

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.

-

The following requests support editing the field and changing -the edit mode:

-
    -
  • -

    REQ_INS_MODE Set insertion mode.

    -
  • -
  • -

    REQ_OVL_MODE Set overlay mode.

    -
  • -
  • -

    REQ_NEW_LINE New line request (see below for -explanation).

    -
  • -
  • -

    REQ_INS_CHAR Insert space at character location.

    -
  • -
  • -

    REQ_INS_LINE Insert blank line at character -location.

    -
  • -
  • -

    REQ_DEL_CHAR Delete character at cursor.

    -
  • -
  • -

    REQ_DEL_PREV Delete previous word at cursor.

    -
  • -
  • -

    REQ_DEL_LINE Delete line at cursor.

    -
  • -
  • -

    REQ_DEL_WORD Delete word at cursor.

    -
  • -
  • -

    REQ_CLR_EOL Clear to end of line.

    -
  • -
  • -

    REQ_CLR_EOF Clear to end of field.

    -
  • -
  • -

    REQ_CLR_FIELD Clear entire field.

    -
  • -
-

The behavior of the REQ_NEW_LINE and REQ_DEL_PREV 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.

-

First, we consider REQ_NEW_LINE:

-

The normal behavior of REQ_NEW_LINE 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).

-

The normal behavior of REQ_NEW_LINE 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.

-

However, REQ_NEW_LINE at the beginning of a field, or on the -last line of a field, instead does a REQ_NEXT_FIELD. O_NL_OVERLOAD -option is off, this special action is disabled.

-

Now, let us consider REQ_DEL_PREV:

-

The normal behavior of REQ_DEL_PREV 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).

-

However, REQ_DEL_PREV at the beginning of a field is instead -treated as a REQ_PREV_FIELD.

-

If the O_BS_OVERLOAD option is off, this special action is -disabled and the forms driver just returns E_REQUEST_DENIED.

-
-
-
-

18.6.6. Order -Requests

-

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:

-
    -
  • -

    REQ_NEXT_CHOICE Place the successor value of the -current value in the buffer.

    -
  • -
  • -

    REQ_PREV_CHOICE Place the predecessor value of the -current value in the buffer.

    -
  • -
-

Of the built-in field types, only TYPE_ENUM has built-in -successor and predecessor functions. When you define a field type -of your own (see Custom Validation Types), you can associate our -own ordering functions.

-
-
-
-

18.6.7. Application Commands

-

Form requests are represented as integers above the curses value -greater than KEY_MAX and less than or equal to the constant -MAX_COMMAND. A value within this range gets ignored by -form_driver(). So this can be used for any purpose by the -application. It can be treated as an application specific action -and take corresponding action.

-
-
-
-
-
-

19. Tools and Widget -Libraries

-

Now that you have seen the capabilities of ncurses and its -sister libraries, you are rolling your sleeves up and gearing for a -project that heavily manipulates screen. But wait.. It can be -pretty difficult to write and maintain complex GUI widgets in plain -ncurses or even with the additional libraries. There are some -ready-to-use tools and widget libraries that can be used instead of -writing your own widgets. You can use some of them, get ideas from -the code, or even extend them.

-
-
-

19.1. CDK (Curses -Development Kit)

-

In the author's words

-

CDK stands for 'Curses Development Kit' and it currently -contains 21 ready to use widgets which facilitate the speedy -development of full screen curses programs.

-

The kit provides some useful widgets, which can be used in your -programs directly. It's pretty well written and the documentation -is very good. The examples in the examples directory can be a good -place to start for beginners. The CDK can be downloaded from -http://invisible-island.net/cdk/ . Follow the -instructions in README file to install it.

-
-
-

19.1.1. -Widget List

-

The following is the list of widgets provided with cdk and their -description.

- - - - -
-
-Widget Type           Quick Description
-===========================================================================
-Alphalist             Allows a user to select from a list of words, with
-                      the ability to narrow the search list by typing in a
-                      few characters of the desired word.
-Buttonbox             This creates a multiple button widget. 
-Calendar              Creates a little simple calendar widget.
-Dialog                Prompts the user with a message, and the user
-                      can pick an answer from the buttons provided.
-Entry                 Allows the user to enter various types of information.
-File Selector         A file selector built from Cdk base widgets. This
-                      example shows how to create more complicated widgets
-                      using the Cdk widget library.
-Graph                 Draws a graph.
-Histogram             Draws a histogram.
-Item List             Creates a pop up field which allows the user to select
-                      one of several choices in a small field. Very useful
-                      for things like days of the week or month names.
-Label                 Displays messages in a pop up box, or the label can be
-                      considered part of the screen.
-Marquee               Displays a message in a scrolling marquee.
-Matrix                Creates a complex matrix with lots of options.
-Menu                  Creates a pull-down menu interface.
-Multiple Line Entry   A multiple line entry field. Very useful
-                      for long fields. (like a description
-                      field)
-Radio List            Creates a radio button list.
-Scale                 Creates a numeric scale. Used for allowing a user to
-                      pick a numeric value and restrict them to a range of 
-                      values.
-Scrolling List        Creates a scrolling list/menu list.
-Scrolling Window      Creates a scrolling log file viewer. Can add 
-                      information into the window while its running. 
-                      A good widget for displaying the progress of
-                      something. (akin to a console window)
-Selection List        Creates a multiple option selection list.
-Slider                Akin to the scale widget, this widget provides a
-                      visual slide bar to represent the numeric value.
-Template              Creates a entry field with character sensitive 
-                      positions. Used for pre-formatted fields like
-                      dates and phone numbers.
-Viewer                This is a file/information viewer. Very useful
-                      when you need to display loads of information.
-===========================================================================
-
-

A few of the widgets are modified by Thomas Dickey in recent -versions.

-
-
-
-

19.1.2. Some -Attractive Features

-

Apart from making our life easier with readily usable widgets, -cdk solves one frustrating problem with printing multi colored -strings, justified strings elegantly. Special formatting tags can -be embedded in the strings which are passed to CDK functions. For -Example

-

If the string

- - - - -
-
-"</B/1>This line should have a yellow foreground and a blue
-background.<!1>"
-
-

given as a parameter to newCDKLabel(), it prints the line with -yellow foreground and blue background. There are other tags -available for justifying string, embedding special drawing -characters etc.. Please refer to the man page cdk_display(3X) for -details. The man page explains the usage with nice examples.

-
-
-
-

19.1.3. Conclusion

-

All in all, CDK is a well-written package of widgets, which if -used properly can form a strong frame work for developing complex -GUI.

-
-
-
-
-

19.2. The -dialog

-

Long long ago, in September 1994, when few people knew linux, -Jeff Tranter wrote an article on dialog in Linux Journal. He starts the -article with these words..

-

Linux is based on the Unix operating system, but also -features a number of unique and useful kernel features and -application programs that often go beyond what is available under -Unix. One little-known gem is "dialog", a utility for creating -professional-looking dialog boxes from within shell scripts. This -article presents a tutorial introduction to the dialog utility, and -shows examples of how and where it can be used

-

As he explains, dialog is a real gem in making -professional-looking dialog boxes with ease. It creates a variety -of dialog boxes, menus, check lists etc.. It is usually installed -by default. If not, you can download it from Thomas -Dickey's site.

-

The above-mentioned article gives a very good overview of its -uses and capabilites. The man page has more details. It can be used -in variety of situations. One good example is building of linux -kernel in text mode. Linux kernel uses a modified version of dialog -tailored for its needs.

-

dialog was initially designed to be used with shell scripts. If -you want to use its functionality in a c program, then you can use -libdialog. The documentation regarding this is sparse. Definitive -reference is the dialog.h header file which comes with the library. -You may need to hack here and there to get the required output. The -source is easily customizable. I have used it on a number of -occasions by modifying the code.

-
-
-
-

19.3. Perl -Curses Modules CURSES::FORM and CURSES::WIDGETS

-

The perl module Curses, Curses::Form and Curses::Widgets give -access to curses from perl. If you have curses and basic perl is -installed, you can get these modules from CPAN All Modules page. Get the three zipped modules in -the Curses category. Once installed you can use these modules from -perl scripts like any other module. For more information on perl -modules see perlmod man page. The above modules come with good -documentation and they have some demo scripts to test the -functionality. Though the widgets provided are very rudimentary, -these modules provide good access to curses library from perl.

-

Some of my code examples are converted to perl by Anuradha -Ratnaweera and they are available in the perl directory.

-

For more information see man pages Curses(3) , Curses::Form(3) -and Curses::Widgets(3). These pages are installed only when the -above modules are acquired and installed.

-
-
-
-
-

20. Just For -Fun !!!

-

This section contains few programs written by me just for fun. -They don't signify a better programming practice or the best way of -using ncurses. They are provided here so as to allow beginners to -get ideas and add more programs to this section. If you have -written a couple of nice, simple programs in curses and want them -to included here, contact me.

-
-
-

20.1. The -Game of Life

-

Game of life is a wonder of math. In Paul Callahan's words

- - - - -
-
-The Game of Life (or simply Life) is not a game in the conventional sense. There
-are no players, and no winning or losing. Once the "pieces" are placed in the
-starting position, the rules determine everything that happens later.
-Nevertheless, Life is full of surprises! In most cases, it is impossible to look
-at a starting position (or pattern) and see what will happen in the future. The
-only way to find out is to follow the rules of the game.
-
-

This program starts with a simple inverted U pattern and shows -how wonderful life works. There is a lot of room for improvement in -the program. You can let the user enter pattern of his choice or -even take input from a file. You can also change rules and play -with a lot of variations. Search on google for interesting information on game of -life.

-

File Path: JustForFun/life.c

-
-
-
-

20.2. Magic -Square

-

Magic Square, another wonder of math, is very simple to -understand but very difficult to make. In a magic square sum of the -numbers in each row, each column is equal. Even diagnol sum can be -equal. There are many variations which have special properties.

-

This program creates a simple magic square of odd order.

-

File Path: JustForFun/magic.c

-
-
-
-

20.3. Towers of -Hanoi

-

The famous towers of hanoi solver. The aim of the game is to -move the disks on the first peg to last peg, using middle peg as a -temporary stay. The catch is not to place a larger disk over a -small disk at any time.

-

File Path: JustForFun/hanoi.c

-
-
-
-

20.4. Queens -Puzzle

-

The objective of the famous N-Queen puzzle is to put N queens on -a N X N chess board without attacking each other.

-

This program solves it with a simple backtracking technique.

-

File Path: JustForFun/queens.c

-
-
-
-

20.5. -Shuffle

-

A fun game, if you have time to kill.

-

File Path: JustForFun/shuffle.c

-
-
-
-

20.6. Typing Tutor

-

A simple typing tutor, I created more out of need than for ease -of use. If you know how to put your fingers correctly on the -keyboard, but lack practice, this can be helpful.

-

File Path: JustForFun/tt.c

-
-
-
-
-

21. References

- -
-
- - diff --git a/deps/ncurses-5.9/doc/html/ada/files.htm b/deps/ncurses-5.9/doc/html/ada/files.htm deleted file mode 100644 index a3bad64..0000000 --- a/deps/ncurses-5.9/doc/html/ada/files.htm +++ /dev/null @@ -1,6 +0,0 @@ - - - -

Files

-[T] - diff --git a/deps/ncurses-5.9/doc/html/ada/files/T.htm b/deps/ncurses-5.9/doc/html/ada/files/T.htm deleted file mode 100644 index d9d6950..0000000 --- a/deps/ncurses-5.9/doc/html/ada/files/T.htm +++ /dev/null @@ -1,78 +0,0 @@ - -T - -

Files - T

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs.htm b/deps/ncurses-5.9/doc/html/ada/funcs.htm deleted file mode 100644 index 9a2da61..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs.htm +++ /dev/null @@ -1,27 +0,0 @@ - - - -

Functions/Procedures

-[A] -[B] -[C] -[D] -[E] -[F] -[G] -[H] -[I] -[K] -[L] -[M] -[N] -[O] -[P] -[Q] -[R] -[S] -[T] -[U] -[V] -[W] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/A.htm b/deps/ncurses-5.9/doc/html/ada/funcs/A.htm deleted file mode 100644 index 7714f75..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/A.htm +++ /dev/null @@ -1,24 +0,0 @@ - -A - -

Functions - A

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/B.htm b/deps/ncurses-5.9/doc/html/ada/funcs/B.htm deleted file mode 100644 index b62dda8..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/B.htm +++ /dev/null @@ -1,21 +0,0 @@ - -B - -

Functions - B

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/C.htm b/deps/ncurses-5.9/doc/html/ada/funcs/C.htm deleted file mode 100644 index 85a094a..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/C.htm +++ /dev/null @@ -1,56 +0,0 @@ - -C - -

Functions - C

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/D.htm b/deps/ncurses-5.9/doc/html/ada/funcs/D.htm deleted file mode 100644 index e2db5db..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/D.htm +++ /dev/null @@ -1,47 +0,0 @@ - -D - -

Functions - D

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/E.htm b/deps/ncurses-5.9/doc/html/ada/funcs/E.htm deleted file mode 100644 index 70d6a2a..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/E.htm +++ /dev/null @@ -1,18 +0,0 @@ - -E - -

Functions - E

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/F.htm b/deps/ncurses-5.9/doc/html/ada/funcs/F.htm deleted file mode 100644 index 465e06e..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/F.htm +++ /dev/null @@ -1,55 +0,0 @@ - -F - -

Functions - F

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/G.htm b/deps/ncurses-5.9/doc/html/ada/funcs/G.htm deleted file mode 100644 index 1f7bf21..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/G.htm +++ /dev/null @@ -1,96 +0,0 @@ - -G - -

Functions - G

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/H.htm b/deps/ncurses-5.9/doc/html/ada/funcs/H.htm deleted file mode 100644 index 4d31ced..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/H.htm +++ /dev/null @@ -1,22 +0,0 @@ - -H - -

Functions - H

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/I.htm b/deps/ncurses-5.9/doc/html/ada/funcs/I.htm deleted file mode 100644 index 8826565..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/I.htm +++ /dev/null @@ -1,51 +0,0 @@ - -I - -

Functions - I

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/K.htm b/deps/ncurses-5.9/doc/html/ada/funcs/K.htm deleted file mode 100644 index 715a6e4..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/K.htm +++ /dev/null @@ -1,14 +0,0 @@ - -K - -

Functions - K

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/L.htm b/deps/ncurses-5.9/doc/html/ada/funcs/L.htm deleted file mode 100644 index 13a0b9a..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/L.htm +++ /dev/null @@ -1,20 +0,0 @@ - -L - -

Functions - L

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/M.htm b/deps/ncurses-5.9/doc/html/ada/funcs/M.htm deleted file mode 100644 index 27dea4e..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/M.htm +++ /dev/null @@ -1,51 +0,0 @@ - -M - -

Functions - M

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/N.htm b/deps/ncurses-5.9/doc/html/ada/funcs/N.htm deleted file mode 100644 index 40fbf5a..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/N.htm +++ /dev/null @@ -1,35 +0,0 @@ - -N - -

Functions - N

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/O.htm b/deps/ncurses-5.9/doc/html/ada/funcs/O.htm deleted file mode 100644 index 0e65524..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/O.htm +++ /dev/null @@ -1,12 +0,0 @@ - -O - -

Functions - O

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/P.htm b/deps/ncurses-5.9/doc/html/ada/funcs/P.htm deleted file mode 100644 index ea4ee25..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/P.htm +++ /dev/null @@ -1,59 +0,0 @@ - -P - -

Functions - P

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/Q.htm b/deps/ncurses-5.9/doc/html/ada/funcs/Q.htm deleted file mode 100644 index d487468..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/Q.htm +++ /dev/null @@ -1,8 +0,0 @@ - -Q - -

Functions - Q

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/R.htm b/deps/ncurses-5.9/doc/html/ada/funcs/R.htm deleted file mode 100644 index 8e223f4..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/R.htm +++ /dev/null @@ -1,39 +0,0 @@ - -R - -

Functions - R

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/S.htm b/deps/ncurses-5.9/doc/html/ada/funcs/S.htm deleted file mode 100644 index 6747806..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/S.htm +++ /dev/null @@ -1,191 +0,0 @@ - -S - -

Functions - S

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/T.htm b/deps/ncurses-5.9/doc/html/ada/funcs/T.htm deleted file mode 100644 index 2714f68..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/T.htm +++ /dev/null @@ -1,36 +0,0 @@ - -T - -

Functions - T

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/U.htm b/deps/ncurses-5.9/doc/html/ada/funcs/U.htm deleted file mode 100644 index ccd09de..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/U.htm +++ /dev/null @@ -1,23 +0,0 @@ - -U - -

Functions - U

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/V.htm b/deps/ncurses-5.9/doc/html/ada/funcs/V.htm deleted file mode 100644 index 858d0e6..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/V.htm +++ /dev/null @@ -1,11 +0,0 @@ - -V - -

Functions - V

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/funcs/W.htm b/deps/ncurses-5.9/doc/html/ada/funcs/W.htm deleted file mode 100644 index 8567ecc..0000000 --- a/deps/ncurses-5.9/doc/html/ada/funcs/W.htm +++ /dev/null @@ -1,53 +0,0 @@ - -W - -

Functions - W

-[index] - diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-aux__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-aux__adb.htm deleted file mode 100644 index b2e86ce..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-aux__adb.htm +++ /dev/null @@ -1,122 +0,0 @@ - -terminal_interface-curses-aux.adb - -

File : terminal_interface-curses-aux.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Aux                       --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package body Terminal_Interface.Curses.Aux is
-   --
-   --  Some helpers
-   procedure Fill_String (Cp  : chars_ptr;
-                          Str : out String)
-   is
-      --  Fill the string with the characters referenced by the
-      --  chars_ptr.
-      --
-      Len : Natural;
-   begin
-      if Cp /= Null_Ptr then
-         Len := Natural (Strlen (Cp));
-         if Str'Length < Len then
-            raise Constraint_Error;
-         end if;
-         declare
-            S : String (1 .. Len);
-         begin
-            S := Value (Cp);
-            Str (Str'First .. (Str'First + Len - 1)) := S (S'Range);
-         end;
-      else
-         Len := 0;
-      end if;
-
-      if Len < Str'Length then
-         Str ((Str'First + Len) .. Str'Last) := (others => ' ');
-      end if;
-
-   end Fill_String;
-
-   function Fill_String (Cp : chars_ptr) return String
-   is
-      Len : Natural;
-   begin
-      if Cp /= Null_Ptr then
-         Len := Natural (Strlen (Cp));
-         if Len = 0 then
-            return "";
-         else
-            declare
-               S : String (1 .. Len);
-            begin
-               Fill_String (Cp, S);
-               return S;
-            end;
-         end if;
-      else
-         return "";
-      end if;
-   end Fill_String;
-
-   procedure Eti_Exception (Code : Eti_Error)
-   is
-   begin
-      case Code is
-         when E_Ok              => null;
-         when E_System_Error    => raise Eti_System_Error;
-         when E_Bad_Argument    => raise Eti_Bad_Argument;
-         when E_Posted          => raise Eti_Posted;
-         when E_Connected       => raise Eti_Connected;
-         when E_Bad_State       => raise Eti_Bad_State;
-         when E_No_Room         => raise Eti_No_Room;
-         when E_Not_Posted      => raise Eti_Not_Posted;
-         when E_Unknown_Command => raise Eti_Unknown_Command;
-         when E_No_Match        => raise Eti_No_Match;
-         when E_Not_Selectable  => raise Eti_Not_Selectable;
-         when E_Not_Connected   => raise Eti_Not_Connected;
-         when E_Request_Denied  => raise Eti_Request_Denied;
-         when E_Invalid_Field   => raise Eti_Invalid_Field;
-         when E_Current         => raise Eti_Current;
-      end case;
-   end Eti_Exception;
-
-end Terminal_Interface.Curses.Aux;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-aux__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-aux__ads.htm deleted file mode 100644 index 26742af..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-aux__ads.htm +++ /dev/null @@ -1,130 +0,0 @@ - -terminal_interface-curses-aux.ads - -

File : terminal_interface-curses-aux.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                       Terminal_Interface.Curses.Aux                      --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.18 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
---  curses binding.
---  This module is generated. Please don't change it manually!
---  Run the generator instead.
---  |
-with System;
-with Interfaces.C;
-with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Unchecked_Conversion;
-
-package Terminal_Interface.Curses.Aux is
-   pragma Preelaborate (Terminal_Interface.Curses.Aux);
-
-   use type Interfaces.C.int;
-
-   subtype C_Int      is Interfaces.C.int;
-   subtype C_Short    is Interfaces.C.short;
-   subtype C_Long_Int is Interfaces.C.long;
-   subtype C_Size_T   is Interfaces.C.size_t;
-   subtype C_UInt     is Interfaces.C.unsigned;
-   subtype C_ULong    is Interfaces.C.unsigned_long;
-   subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr;
-   type    C_Void_Ptr is new System.Address;
-   type    C_Chtype   is new C_ULong;
-   type    C_AttrType is new C_ULong;
-
-   --  This is how those constants are defined in ncurses. I see them also
-   --  exactly like this in all ETI implementations I ever tested. So it
-   --  could be that this is quite general, but please check with your curses.
-   --  This is critical, because curses sometime mixes Boolean returns with
-   --  returning an error status.
-   Curses_Ok    : constant C_Int := 0;
-   Curses_Err   : constant C_Int := -1;
-
-   Curses_True  : constant C_Int := 1;
-   Curses_False : constant C_Int := 0;
-
-   --  Eti_Error: type for error codes returned by the menu and form subsystem
-   subtype Eti_Error is C_Int range -14 .. 0;
-
-   E_Ok               : constant Eti_Error := 0;
-   E_System_Error     : constant Eti_Error := -1;
-   E_Bad_Argument     : constant Eti_Error := -2;
-   E_Posted           : constant Eti_Error := -3;
-   E_Connected        : constant Eti_Error := -4;
-   E_Bad_State        : constant Eti_Error := -5;
-   E_No_Room          : constant Eti_Error := -6;
-   E_Not_Posted       : constant Eti_Error := -7;
-   E_Unknown_Command  : constant Eti_Error := -8;
-   E_No_Match         : constant Eti_Error := -9;
-   E_Not_Selectable   : constant Eti_Error := -10;
-   E_Not_Connected    : constant Eti_Error := -11;
-   E_Request_Denied   : constant Eti_Error := -12;
-   E_Invalid_Field    : constant Eti_Error := -13;
-   E_Current          : constant Eti_Error := -14;
-
-   procedure Eti_Exception (Code : Eti_Error);
-   --  Dispatch the error code and raise the appropriate exception
-   --
-   --
-   --  Some helpers
-   function Chtype_To_AttrChar is new
-     Unchecked_Conversion (Source => C_Chtype,
-                           Target => Attributed_Character);
-   function AttrChar_To_Chtype is new
-     Unchecked_Conversion (Source => Attributed_Character,
-                           Target => C_Chtype);
-
-   function AttrChar_To_AttrType is new
-     Unchecked_Conversion (Source => Attributed_Character,
-                           Target => C_AttrType);
-
-   function AttrType_To_AttrChar is new
-     Unchecked_Conversion (Source => C_AttrType,
-                           Target => Attributed_Character);
-
-   procedure Fill_String (Cp  : chars_ptr;
-                          Str : out String);
-   --  Fill the Str parameter with the string denoted by the chars_ptr
-   --  C-Style string.
-
-   function Fill_String (Cp : chars_ptr) return String;
-   --  Same but as function.
-
-end Terminal_Interface.Curses.Aux;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm deleted file mode 100644 index 531e280..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm +++ /dev/null @@ -1,68 +0,0 @@ - -terminal_interface-curses-forms-field_types-alpha.adb - -

File : terminal_interface-curses-forms-field_types-alpha.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---              Terminal_Interface.Curses.Forms.Field_Types.Alpha           --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  @Date: 2011/03/19 00:45:37 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.Alpha is
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Alpha_Field)
-   is
-      function Set_Fld_Type (F    : Field := Fld;
-                             Arg1 : C_Int) return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_alpha");
-
-      Res : Eti_Error;
-   begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Wrap_Builtin (Fld, Typ);
-   end Set_Field_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.Alpha;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm deleted file mode 100644 index 9a861b5..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm +++ /dev/null @@ -1,59 +0,0 @@ - -terminal_interface-curses-forms-field_types-alpha.ads - -

File : terminal_interface-curses-forms-field_types-alpha.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---              Terminal_Interface.Curses.Forms.Field_Types.Alpha           --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package Terminal_Interface.Curses.Forms.Field_Types.Alpha is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Alpha);
-
-   type Alpha_Field is new Field_Type
-     with record
-        Minimum_Field_Width : Natural := 0;
-     end record;
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Alpha_Field);
-   pragma Inline (Set_Field_Type);
-
-end Terminal_Interface.Curses.Forms.Field_Types.Alpha;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm deleted file mode 100644 index 97a14f4..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm +++ /dev/null @@ -1,68 +0,0 @@ - -terminal_interface-curses-forms-field_types-alphanumeric.adb - -

File : terminal_interface-curses-forms-field_types-alphanumeric.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---          Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric        --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  @Date: 2011/03/19 00:45:37 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : AlphaNumeric_Field)
-   is
-      function Set_Fld_Type (F    : Field := Fld;
-                             Arg1 : C_Int) return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_alnum");
-
-      Res : Eti_Error;
-   begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Wrap_Builtin (Fld, Typ);
-   end Set_Field_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm deleted file mode 100644 index fb13c7c..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm +++ /dev/null @@ -1,60 +0,0 @@ - -terminal_interface-curses-forms-field_types-alphanumeric.ads - -

File : terminal_interface-curses-forms-field_types-alphanumeric.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---          Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric        --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is
-   pragma Preelaborate
-     (Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric);
-
-   type AlphaNumeric_Field is new Field_Type
-     with record
-        Minimum_Field_Width : Natural := 0;
-     end record;
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : AlphaNumeric_Field);
-   pragma Inline (Set_Field_Type);
-
-end Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm deleted file mode 100644 index aa1c666..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm +++ /dev/null @@ -1,87 +0,0 @@ - -terminal_interface-curses-forms-field_types-enumeration-ada.adb - -

File : terminal_interface-curses-forms-field_types-enumeration-ada.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---         Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada      --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2004,2011 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  @Date: 2011/03/22 23:36:20 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Characters.Handling; use Ada.Characters.Handling;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada is
-
-   function Create (Set            : Type_Set := Mixed_Case;
-                    Case_Sensitive : Boolean  := False;
-                    Must_Be_Unique : Boolean  := False)
-                    return Enumeration_Field
-   is
-      I : Enumeration_Info (T'Pos (T'Last) - T'Pos (T'First) + 1);
-      J : Positive := 1;
-   begin
-      I.Case_Sensitive := Case_Sensitive;
-      I.Match_Must_Be_Unique := Must_Be_Unique;
-
-      for E in T'Range loop
-         I.Names (J) := new String'(T'Image (E));
-         --  The Image attribute defaults to upper case, so we have to handle
-         --  only the other ones...
-         if Set /= Upper_Case then
-            I.Names (J).all := To_Lower (I.Names (J).all);
-            if Set = Mixed_Case then
-               I.Names (J).all (I.Names (J).all'First) :=
-                 To_Upper (I.Names (J).all (I.Names (J).all'First));
-            end if;
-         end if;
-         J := J + 1;
-      end loop;
-
-      return Create (I, True);
-   end Create;
-
-   function Value (Fld : Field;
-                   Buf : Buffer_Number := Buffer_Number'First) return T
-   is
-   begin
-      return T'Value (Get_Buffer (Fld, Buf));
-   end Value;
-
-end Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm deleted file mode 100644 index 80fd9cf..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm +++ /dev/null @@ -1,65 +0,0 @@ - -terminal_interface-curses-forms-field_types-enumeration-ada.ads - -

File : terminal_interface-curses-forms-field_types-enumeration-ada.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---         Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada      --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998 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, 1996
---  Version Control:
---  @Revision: 1.10 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-generic
-   type T is (<>);
-
-package Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada is
-   pragma Preelaborate
-     (Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada);
-
-   function Create (Set            : Type_Set := Mixed_Case;
-                    Case_Sensitive : Boolean  := False;
-                    Must_Be_Unique : Boolean  := False)
-                    return Enumeration_Field;
-
-   function Value (Fld : Field;
-                   Buf : Buffer_Number := Buffer_Number'First) return T;
-   --  Translate the content of the fields buffer - indicated by the
-   --  buffer number - into an enumeration value. If the buffer is empty
-   --  or the content is invalid, a Constraint_Error is raises.
-
-end Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm deleted file mode 100644 index adac9c0..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm +++ /dev/null @@ -1,121 +0,0 @@ - -terminal_interface-curses-forms-field_types-enumeration.adb - -

File : terminal_interface-curses-forms-field_types-enumeration.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---          Terminal_Interface.Curses.Forms.Field_Types.Enumeration         --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.10 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Unchecked_Deallocation;
-with Interfaces.C; use Interfaces.C;
-with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
-
-   function Create (Info               : Enumeration_Info;
-                    Auto_Release_Names : Boolean := False)
-                    return Enumeration_Field
-   is
-      procedure Release_String is
-        new Ada.Unchecked_Deallocation (String,
-                                        String_Access);
-      E : Enumeration_Field;
-      L : constant size_t := 1 + size_t (Info.C);
-      S : String_Access;
-   begin
-      E.Case_Sensitive       := Info.Case_Sensitive;
-      E.Match_Must_Be_Unique := Info.Match_Must_Be_Unique;
-      E.Arr := new chars_ptr_array (size_t (1) .. L);
-      for I in 1 .. Positive (L - 1) loop
-         if Info.Names (I) = null then
-            raise Form_Exception;
-         end if;
-         E.Arr.all (size_t (I)) := New_String (Info.Names (I).all);
-         if Auto_Release_Names then
-            S := Info.Names (I);
-            Release_String (S);
-         end if;
-      end loop;
-      E.Arr.all (L) := Null_Ptr;
-      return E;
-   end Create;
-
-   procedure Release (Enum : in out Enumeration_Field)
-   is
-      I : size_t := 0;
-      P : chars_ptr;
-   begin
-      loop
-         P := Enum.Arr.all (I);
-         exit when P = Null_Ptr;
-         Free (P);
-         Enum.Arr.all (I) := Null_Ptr;
-         I := I + 1;
-      end loop;
-      Enum.Arr := null;
-   end Release;
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Enumeration_Field)
-   is
-      function Set_Fld_Type (F    : Field := Fld;
-                             Arg1 : chars_ptr_array;
-                             Arg2 : C_Int;
-                             Arg3 : C_Int) return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_enum");
-
-      Res : Eti_Error;
-   begin
-      if Typ.Arr = null then
-         raise Form_Exception;
-      end if;
-      Res := Set_Fld_Type (Arg1 => Typ.Arr.all,
-                           Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)),
-                           Arg3 => C_Int (Boolean'Pos
-                                          (Typ.Match_Must_Be_Unique)));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Wrap_Builtin (Fld, Typ, C_Choice_Router);
-   end Set_Field_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm deleted file mode 100644 index bb0abeb..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm +++ /dev/null @@ -1,104 +0,0 @@ - -terminal_interface-curses-forms-field_types-enumeration.ads - -

File : terminal_interface-curses-forms-field_types-enumeration.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---           Terminal_Interface.Curses.Forms.Field_Types.Enumeration        --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C.Strings;
-
-package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is
-   pragma Preelaborate
-     (Terminal_Interface.Curses.Forms.Field_Types.Enumeration);
-
-   type String_Access is access String;
-
-   --  Type_Set is used by the child package Ada
-   type Type_Set is (Lower_Case, Upper_Case, Mixed_Case);
-
-   type Enum_Array is array (Positive range <>)
-     of String_Access;
-
-   type Enumeration_Info (C : Positive) is
-      record
-         Names                : Enum_Array (1 .. C);
-         Case_Sensitive       : Boolean := False;
-         Match_Must_Be_Unique : Boolean := False;
-      end record;
-
-   type Enumeration_Field is new Field_Type with private;
-
-   function Create (Info : Enumeration_Info;
-                    Auto_Release_Names : Boolean := False)
-                    return Enumeration_Field;
-   --  Make an fieldtype from the info. Enumerations are special, because
-   --  they normally don't copy the enum values into a private store, so
-   --  we have to care for the lifetime of the info we provide.
-   --  The Auto_Release_Names flag may be used to automatically releases
-   --  the strings in the Names array of the Enumeration_Info.
-
-   function Make_Enumeration_Type (Info : Enumeration_Info;
-                                   Auto_Release_Names : Boolean := False)
-                                   return Enumeration_Field renames Create;
-
-   procedure Release (Enum : in out Enumeration_Field);
-   --  But we may want to release the field to release the memory allocated
-   --  by it internally. After that the Enumeration field is no longer usable.
-
-   --  The next type defintions are all ncurses extensions. They are typically
-   --  not available in other curses implementations.
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Enumeration_Field);
-   pragma Inline (Set_Field_Type);
-
-private
-   type CPA_Access is access Interfaces.C.Strings.chars_ptr_array;
-
-   type Enumeration_Field is new Field_Type with
-      record
-         Case_Sensitive       : Boolean := False;
-         Match_Must_Be_Unique : Boolean := False;
-         Arr                  : CPA_Access := null;
-      end record;
-
-end Terminal_Interface.Curses.Forms.Field_Types.Enumeration;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm deleted file mode 100644 index be4d9b3..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm +++ /dev/null @@ -1,72 +0,0 @@ - -terminal_interface-curses-forms-field_types-intfield.adb - -

File : terminal_interface-curses-forms-field_types-intfield.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---            Terminal_Interface.Curses.Forms.Field_Types.IntField          --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  @Date: 2011/03/19 00:45:37 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.IntField is
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Integer_Field)
-   is
-      function Set_Fld_Type (F    : Field := Fld;
-                             Arg1 : C_Int;
-                             Arg2 : C_Long_Int;
-                             Arg3 : C_Long_Int) return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_integer");
-
-      Res : Eti_Error;
-   begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
-                           Arg2 => C_Long_Int (Typ.Lower_Limit),
-                           Arg3 => C_Long_Int (Typ.Upper_Limit));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Wrap_Builtin (Fld, Typ);
-   end Set_Field_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.IntField;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm deleted file mode 100644 index 8623978..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm +++ /dev/null @@ -1,61 +0,0 @@ - -terminal_interface-curses-forms-field_types-intfield.ads - -

File : terminal_interface-curses-forms-field_types-intfield.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---            Terminal_Interface.Curses.Forms.Field_Types.IntField          --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package Terminal_Interface.Curses.Forms.Field_Types.IntField is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.IntField);
-
-   type Integer_Field is new Field_Type with
-      record
-         Precision   : Natural;
-         Lower_Limit : Integer;
-         Upper_Limit : Integer;
-      end record;
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Integer_Field);
-   pragma Inline (Set_Field_Type);
-
-end Terminal_Interface.Curses.Forms.Field_Types.IntField;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm deleted file mode 100644 index bd33283..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm +++ /dev/null @@ -1,68 +0,0 @@ - -terminal_interface-curses-forms-field_types-ipv4_address.adb - -

File : terminal_interface-curses-forms-field_types-ipv4_address.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---          Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address        --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  @Date: 2011/03/19 00:45:37 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Internet_V4_Address_Field)
-   is
-      function Set_Fld_Type (F : Field := Fld)
-                             return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_ipv4");
-
-      Res : Eti_Error;
-   begin
-      Res := Set_Fld_Type;
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Wrap_Builtin (Fld, Typ);
-   end Set_Field_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm deleted file mode 100644 index 8f9e051..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm +++ /dev/null @@ -1,57 +0,0 @@ - -terminal_interface-curses-forms-field_types-ipv4_address.ads - -

File : terminal_interface-curses-forms-field_types-ipv4_address.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---          Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address        --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is
-   pragma Preelaborate
-     (Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address);
-
-   type Internet_V4_Address_Field is new Field_Type with null record;
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Internet_V4_Address_Field);
-   pragma Inline (Set_Field_Type);
-
-end Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm deleted file mode 100644 index 9b82999..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm +++ /dev/null @@ -1,75 +0,0 @@ - -terminal_interface-curses-forms-field_types-numeric.adb - -

File : terminal_interface-curses-forms-field_types-numeric.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---            Terminal_Interface.Curses.Forms.Field_Types.Numeric           --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  @Date: 2011/03/19 00:45:37 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.Numeric is
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Numeric_Field)
-   is
-      type Double is new Interfaces.C.double;
-
-      function Set_Fld_Type (F    : Field := Fld;
-                             Arg1 : C_Int;
-                             Arg2 : Double;
-                             Arg3 : Double) return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_numeric");
-
-      Res : Eti_Error;
-   begin
-      Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision),
-                           Arg2 => Double (Typ.Lower_Limit),
-                           Arg3 => Double (Typ.Upper_Limit));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Wrap_Builtin (Fld, Typ);
-   end Set_Field_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.Numeric;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm deleted file mode 100644 index e3f37a2..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm +++ /dev/null @@ -1,61 +0,0 @@ - -terminal_interface-curses-forms-field_types-numeric.ads - -

File : terminal_interface-curses-forms-field_types-numeric.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---             Terminal_Interface.Curses.Forms.Field_Types.Numeric          --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package Terminal_Interface.Curses.Forms.Field_Types.Numeric is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.Numeric);
-
-   type Numeric_Field is new Field_Type with
-      record
-         Precision   : Natural;
-         Lower_Limit : Float;
-         Upper_Limit : Float;
-      end record;
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Numeric_Field);
-   pragma Inline (Set_Field_Type);
-
-end Terminal_Interface.Curses.Forms.Field_Types.Numeric;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm deleted file mode 100644 index 9d3b1df..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm +++ /dev/null @@ -1,73 +0,0 @@ - -terminal_interface-curses-forms-field_types-regexp.adb - -

File : terminal_interface-curses-forms-field_types-regexp.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---             Terminal_Interface.Curses.Forms.Field_Types.RegExp           --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.10 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C; use Interfaces.C;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.RegExp is
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Regular_Expression_Field)
-   is
-      type Char_Ptr is access all Interfaces.C.char;
-
-      function Set_Ftyp (F    : Field := Fld;
-                         Arg1 : Char_Ptr) return C_Int;
-      pragma Import (C, Set_Ftyp, "set_field_type_regexp");
-
-      Txt : char_array (0 .. Typ.Regular_Expression.all'Length);
-      Len : size_t;
-      Res : Eti_Error;
-   begin
-      To_C (Typ.Regular_Expression.all, Txt, Len);
-      Res := Set_Ftyp (Arg1 => Txt (Txt'First)'Access);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Wrap_Builtin (Fld, Typ);
-   end Set_Field_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.RegExp;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm deleted file mode 100644 index dd273dc..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm +++ /dev/null @@ -1,61 +0,0 @@ - -terminal_interface-curses-forms-field_types-regexp.ads - -

File : terminal_interface-curses-forms-field_types-regexp.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---              Terminal_Interface.Curses.Forms.Field_Types.RegExp          --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package Terminal_Interface.Curses.Forms.Field_Types.RegExp is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.RegExp);
-
-   type String_Access is access String;
-
-   type Regular_Expression_Field is new Field_Type with
-      record
-         Regular_Expression : String_Access;
-      end record;
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : Regular_Expression_Field);
-   pragma Inline (Set_Field_Type);
-
-end Terminal_Interface.Curses.Forms.Field_Types.RegExp;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm deleted file mode 100644 index 018a19d..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm +++ /dev/null @@ -1,114 +0,0 @@ - -terminal_interface-curses-forms-field_types-user-choice.adb - -

File : terminal_interface-curses-forms-field_types-user-choice.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---          Terminal_Interface.Curses.Forms.Field_Types.User.Choice         --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2008,2011 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, 1996
---  Version Control:
---  @Revision: 1.17 @
---  @Date: 2011/03/22 10:53:37 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with System.Address_To_Access_Conversions;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
-
-   package Argument_Conversions is
-      new System.Address_To_Access_Conversions (Argument);
-
-   function Generic_Next (Fld : Field;
-                          Usr : System.Address) return Curses_Bool
-   is
-      Result : Boolean;
-      Udf    : constant User_Defined_Field_Type_With_Choice_Access :=
-        User_Defined_Field_Type_With_Choice_Access
-        (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ);
-   begin
-      Result := Next (Fld, Udf.all);
-      return Curses_Bool (Boolean'Pos (Result));
-   end Generic_Next;
-
-   function Generic_Prev (Fld : Field;
-                          Usr : System.Address) return Curses_Bool
-   is
-      Result : Boolean;
-      Udf    : constant User_Defined_Field_Type_With_Choice_Access :=
-        User_Defined_Field_Type_With_Choice_Access
-        (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ);
-   begin
-      Result := Previous (Fld, Udf.all);
-      return Curses_Bool (Boolean'Pos (Result));
-   end Generic_Prev;
-
-   --  -----------------------------------------------------------------------
-   --
-   function C_Generic_Choice return C_Field_Type
-   is
-      Res : Eti_Error;
-      T   : C_Field_Type;
-   begin
-      if M_Generic_Choice = Null_Field_Type then
-         T := New_Fieldtype (Generic_Field_Check'Access,
-                             Generic_Char_Check'Access);
-         if T = Null_Field_Type then
-            raise Form_Exception;
-         else
-            Res := Set_Fieldtype_Arg (T,
-                                      Make_Arg'Access,
-                                      Copy_Arg'Access,
-                                      Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
-
-            Res := Set_Fieldtype_Choice (T,
-                                         Generic_Next'Access,
-                                         Generic_Prev'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
-         end if;
-         M_Generic_Choice := T;
-      end if;
-      pragma Assert (M_Generic_Choice /= Null_Field_Type);
-      return M_Generic_Choice;
-   end C_Generic_Choice;
-
-end Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm deleted file mode 100644 index 1b0d0ff..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm +++ /dev/null @@ -1,100 +0,0 @@ - -terminal_interface-curses-forms-field_types-user-choice.ads - -

File : terminal_interface-curses-forms-field_types-user-choice.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---           Terminal_Interface.Curses.Forms.Field_Types.User.Choice        --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2008,2011 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, 1996
---  Version Control:
---  @Revision: 1.14 @
---  @Date: 2011/03/19 12:27:47 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C;
-
-package Terminal_Interface.Curses.Forms.Field_Types.User.Choice is
-   pragma Preelaborate
-     (Terminal_Interface.Curses.Forms.Field_Types.User.Choice);
-
-   subtype C_Int is Interfaces.C.int;
-
-   type User_Defined_Field_Type_With_Choice is abstract new
-     User_Defined_Field_Type with null record;
-   --  This is the root of the mechanism we use to create field types in
-   --  Ada95 that allow the prev/next mechanism. You should your own type
-   --  derive from this one and implement the Field_Check, Character_Check
-   --  Next and Previous functions for your own type.
-
-   type User_Defined_Field_Type_With_Choice_Access is access all
-     User_Defined_Field_Type_With_Choice'Class;
-
-   function Next
-     (Fld : Field;
-      Typ : User_Defined_Field_Type_With_Choice) return Boolean
-      is abstract;
-   --  If True is returned, the function successfully generated a next
-   --  value into the fields buffer.
-
-   function Previous
-     (Fld : Field;
-      Typ : User_Defined_Field_Type_With_Choice) return Boolean
-      is abstract;
-   --  If True is returned, the function successfully generated a previous
-   --  value into the fields buffer.
-
-   --  +----------------------------------------------------------------------
-   --  | Private Part.
-   --  |
-private
-   function C_Generic_Choice return C_Field_Type;
-
-   function Generic_Next (Fld : Field;
-                          Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Generic_Next);
-   --  This is the generic next Choice_Function for the low-level fieldtype
-   --  representing all the User_Defined_Field_Type derivatives. It routes
-   --  the call to the Next implementation for the type.
-
-   function Generic_Prev (Fld : Field;
-                          Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Generic_Prev);
-   --  This is the generic prev Choice_Function for the low-level fieldtype
-   --  representing all the User_Defined_Field_Type derivatives. It routes
-   --  the call to the Previous implementation for the type.
-
-end Terminal_Interface.Curses.Forms.Field_Types.User.Choice;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm deleted file mode 100644 index ed3a5e1..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm +++ /dev/null @@ -1,139 +0,0 @@ - -terminal_interface-curses-forms-field_types-user.adb - -

File : terminal_interface-curses-forms-field_types-user.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---              Terminal_Interface.Curses.Forms.Field_Types.User            --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.21 @
---  @Date: 2011/03/23 00:44:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with System.Address_To_Access_Conversions;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Field_Types.User is
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : User_Defined_Field_Type)
-   is
-      function Allocate_Arg (T : User_Defined_Field_Type'Class)
-                             return Argument_Access;
-
-      function Set_Fld_Type (F    : Field := Fld;
-                             Cft  : C_Field_Type := C_Generic_Type;
-                             Arg1 : Argument_Access)
-                             return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_user");
-
-      Res : Eti_Error;
-
-      function Allocate_Arg (T : User_Defined_Field_Type'Class)
-                             return Argument_Access
-      is
-         Ptr : constant Field_Type_Access
-             := new User_Defined_Field_Type'Class'(T);
-      begin
-         return new Argument'(Usr => System.Null_Address,
-                              Typ => Ptr,
-                              Cft => Null_Field_Type);
-      end Allocate_Arg;
-
-   begin
-      Res := Set_Fld_Type (Arg1 => Allocate_Arg (Typ));
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Field_Type;
-
-   package Argument_Conversions is
-      new System.Address_To_Access_Conversions (Argument);
-
-   function Generic_Field_Check (Fld : Field;
-                                 Usr : System.Address) return Curses_Bool
-   is
-      Result : Boolean;
-      Udf    : constant User_Defined_Field_Type_Access :=
-        User_Defined_Field_Type_Access
-          (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ);
-   begin
-      Result := Field_Check (Fld, Udf.all);
-      return Curses_Bool (Boolean'Pos (Result));
-   end Generic_Field_Check;
-
-   function Generic_Char_Check (Ch  : C_Int;
-                                Usr : System.Address) return Curses_Bool
-   is
-      Result : Boolean;
-      Udf    : constant User_Defined_Field_Type_Access :=
-        User_Defined_Field_Type_Access
-          (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ);
-   begin
-      Result := Character_Check (Character'Val (Ch), Udf.all);
-      return Curses_Bool (Boolean'Pos (Result));
-   end Generic_Char_Check;
-
-   --  -----------------------------------------------------------------------
-   --
-   function C_Generic_Type return C_Field_Type
-   is
-      Res : Eti_Error;
-      T   : C_Field_Type;
-   begin
-      if M_Generic_Type = Null_Field_Type then
-         T := New_Fieldtype (Generic_Field_Check'Access,
-                             Generic_Char_Check'Access);
-         if T = Null_Field_Type then
-            raise Form_Exception;
-         else
-            Res := Set_Fieldtype_Arg (T,
-                                      Make_Arg'Access,
-                                      Copy_Arg'Access,
-                                      Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
-         end if;
-         M_Generic_Type := T;
-      end if;
-      pragma Assert (M_Generic_Type /= Null_Field_Type);
-      return M_Generic_Type;
-   end C_Generic_Type;
-
-end Terminal_Interface.Curses.Forms.Field_Types.User;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm deleted file mode 100644 index 107c863..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm +++ /dev/null @@ -1,101 +0,0 @@ - -terminal_interface-curses-forms-field_types-user.ads - -

File : terminal_interface-curses-forms-field_types-user.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Forms.Field_Types.User           --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.15 @
---  @Date: 2011/03/19 12:27:21 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C;
-
-package Terminal_Interface.Curses.Forms.Field_Types.User is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types.User);
-   subtype C_Int is Interfaces.C.int;
-
-   type User_Defined_Field_Type is abstract new Field_Type with null record;
-   --  This is the root of the mechanism we use to create field types in
-   --  Ada95. You should your own type derive from this one and implement
-   --  the Field_Check and Character_Check functions for your own type.
-
-   type User_Defined_Field_Type_Access is access all
-     User_Defined_Field_Type'Class;
-
-   function Field_Check
-     (Fld : Field;
-      Typ : User_Defined_Field_Type) return Boolean
-      is abstract;
-   --  If True is returned, the field is considered valid, otherwise it is
-   --  invalid.
-
-   function Character_Check
-     (Ch  : Character;
-      Typ : User_Defined_Field_Type) return Boolean
-      is abstract;
-   --  If True is returned, the character is considered as valid for the
-   --  field, otherwise as invalid.
-
-   procedure Set_Field_Type (Fld : Field;
-                             Typ : User_Defined_Field_Type);
-   --  This should work for all types derived from User_Defined_Field_Type.
-   --  No need to reimplement it for your derived type.
-
-   --  +----------------------------------------------------------------------
-   --  | Private Part.
-   --  | Used by the Choice child package.
-private
-   function C_Generic_Type   return C_Field_Type;
-
-   function Generic_Field_Check (Fld : Field;
-                                 Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Generic_Field_Check);
-   --  This is the generic Field_Check_Function for the low-level fieldtype
-   --  representing all the User_Defined_Field_Type derivatives. It routes
-   --  the call to the Field_Check implementation for the type.
-
-   function Generic_Char_Check (Ch  : C_Int;
-                                Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Generic_Char_Check);
-   --  This is the generic Char_Check_Function for the low-level fieldtype
-   --  representing all the User_Defined_Field_Type derivatives. It routes
-   --  the call to the Character_Check implementation for the type.
-
-end Terminal_Interface.Curses.Forms.Field_Types.User;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm deleted file mode 100644 index 2a48f9c..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm +++ /dev/null @@ -1,289 +0,0 @@ - -terminal_interface-curses-forms-field_types.adb - -

File : terminal_interface-curses-forms-field_types.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                 Terminal_Interface.Curses.Forms.Field_Types              --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.25 @
---  @Date: 2011/03/22 23:22:27 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-with Ada.Unchecked_Deallocation;
-with System.Address_To_Access_Conversions;
-
---  |
---  |=====================================================================
---  | man page form_fieldtype.3x
---  |=====================================================================
---  |
-package body Terminal_Interface.Curses.Forms.Field_Types is
-
-   use type System.Address;
-
-   package Argument_Conversions is
-      new System.Address_To_Access_Conversions (Argument);
-
-   function Get_Fieldtype (F : Field) return C_Field_Type;
-   pragma Import (C, Get_Fieldtype, "field_type");
-
-   function Get_Arg (F : Field) return System.Address;
-   pragma Import (C, Get_Arg, "field_arg");
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_validation.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Get_Type (Fld : Field) return Field_Type_Access
-   is
-      Low_Level : constant C_Field_Type := Get_Fieldtype (Fld);
-      Arg : Argument_Access;
-   begin
-      if Low_Level = Null_Field_Type then
-         return null;
-      else
-         if Low_Level = M_Builtin_Router or else
-           Low_Level = M_Generic_Type or else
-           Low_Level = M_Choice_Router or else
-           Low_Level = M_Generic_Choice then
-            Arg := Argument_Access
-         (Argument_Conversions.To_Pointer (Get_Arg (Fld)));
-            if Arg = null then
-               raise Form_Exception;
-            else
-               return Arg.all.Typ;
-            end if;
-         else
-            raise Form_Exception;
-         end if;
-      end if;
-   end Get_Type;
-
-   function Copy_Arg (Usr : System.Address) return System.Address
-   is
-   begin
-      return Usr;
-   end Copy_Arg;
-
-   procedure Free_Arg (Usr : System.Address)
-   is
-      procedure Free_Type is new Ada.Unchecked_Deallocation
-        (Field_Type'Class, Field_Type_Access);
-      procedure Freeargs is new Ada.Unchecked_Deallocation
-        (Argument, Argument_Access);
-
-      To_Be_Free : Argument_Access
-   := Argument_Access (Argument_Conversions.To_Pointer (Usr));
-      Low_Level  : C_Field_Type;
-   begin
-      if To_Be_Free /= null then
-         if To_Be_Free.all.Usr /= System.Null_Address then
-            Low_Level := To_Be_Free.all.Cft;
-            if Low_Level.all.Freearg /= null then
-               Low_Level.all.Freearg (To_Be_Free.all.Usr);
-            end if;
-         end if;
-         if To_Be_Free.all.Typ /= null then
-            Free_Type (To_Be_Free.all.Typ);
-         end if;
-         Freeargs (To_Be_Free);
-      end if;
-   end Free_Arg;
-
-   procedure Wrap_Builtin (Fld : Field;
-                           Typ : Field_Type'Class;
-                           Cft : C_Field_Type := C_Builtin_Router)
-   is
-      Usr_Arg   : constant System.Address := Get_Arg (Fld);
-      Low_Level : constant C_Field_Type := Get_Fieldtype (Fld);
-      Arg : Argument_Access;
-      Res : Eti_Error;
-      function Set_Fld_Type (F    : Field := Fld;
-                             Cf   : C_Field_Type := Cft;
-                             Arg1 : Argument_Access) return C_Int;
-      pragma Import (C, Set_Fld_Type, "set_field_type_user");
-
-   begin
-      pragma Assert (Low_Level /= Null_Field_Type);
-      if Cft /= C_Builtin_Router and then Cft /= C_Choice_Router then
-         raise Form_Exception;
-      else
-         Arg := new Argument'(Usr => System.Null_Address,
-                              Typ => new Field_Type'Class'(Typ),
-                              Cft => Get_Fieldtype (Fld));
-         if Usr_Arg /= System.Null_Address then
-            if Low_Level.all.Copyarg /= null then
-               Arg.all.Usr := Low_Level.all.Copyarg (Usr_Arg);
-            else
-               Arg.all.Usr := Usr_Arg;
-            end if;
-         end if;
-
-         Res := Set_Fld_Type (Arg1 => Arg);
-         if Res /= E_Ok then
-            Eti_Exception (Res);
-         end if;
-      end if;
-   end Wrap_Builtin;
-
-   function Field_Check_Router (Fld : Field;
-                                Usr : System.Address) return Curses_Bool
-   is
-      Arg  : constant Argument_Access
-   := Argument_Access (Argument_Conversions.To_Pointer (Usr));
-   begin
-      pragma Assert (Arg /= null and then Arg.all.Cft /= Null_Field_Type
-                     and then Arg.all.Typ /= null);
-      if Arg.all.Cft.all.Fcheck /= null then
-         return Arg.all.Cft.all.Fcheck (Fld, Arg.all.Usr);
-      else
-         return 1;
-      end if;
-   end Field_Check_Router;
-
-   function Char_Check_Router (Ch  : C_Int;
-                               Usr : System.Address) return Curses_Bool
-   is
-      Arg  : constant Argument_Access
-   := Argument_Access (Argument_Conversions.To_Pointer (Usr));
-   begin
-      pragma Assert (Arg /= null and then Arg.all.Cft /= Null_Field_Type
-                     and then Arg.all.Typ /= null);
-      if Arg.all.Cft.all.Ccheck /= null then
-         return Arg.all.Cft.all.Ccheck (Ch, Arg.all.Usr);
-      else
-         return 1;
-      end if;
-   end Char_Check_Router;
-
-   function Next_Router (Fld : Field;
-                         Usr : System.Address) return Curses_Bool
-   is
-      Arg  : constant Argument_Access
-   := Argument_Access (Argument_Conversions.To_Pointer (Usr));
-   begin
-      pragma Assert (Arg /= null and then Arg.all.Cft /= Null_Field_Type
-                     and then Arg.all.Typ /= null);
-      if Arg.all.Cft.all.Next /= null then
-         return Arg.all.Cft.all.Next (Fld, Arg.all.Usr);
-      else
-         return 1;
-      end if;
-   end Next_Router;
-
-   function Prev_Router (Fld : Field;
-                         Usr : System.Address) return Curses_Bool
-   is
-      Arg  : constant Argument_Access :=
-               Argument_Access (Argument_Conversions.To_Pointer (Usr));
-   begin
-      pragma Assert (Arg /= null and then Arg.all.Cft /= Null_Field_Type
-                     and then Arg.all.Typ /= null);
-      if Arg.all.Cft.all.Prev /= null then
-         return Arg.all.Cft.all.Prev (Fld, Arg.all.Usr);
-      else
-         return 1;
-      end if;
-   end Prev_Router;
-
-   --  -----------------------------------------------------------------------
-   --
-   function C_Builtin_Router return C_Field_Type
-   is
-      Res : Eti_Error;
-      T   : C_Field_Type;
-   begin
-      if M_Builtin_Router = Null_Field_Type then
-         T := New_Fieldtype (Field_Check_Router'Access,
-                             Char_Check_Router'Access);
-         if T = Null_Field_Type then
-            raise Form_Exception;
-         else
-            Res := Set_Fieldtype_Arg (T,
-                                      Make_Arg'Access,
-                                      Copy_Arg'Access,
-                                      Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
-         end if;
-         M_Builtin_Router := T;
-      end if;
-      pragma Assert (M_Builtin_Router /= Null_Field_Type);
-      return M_Builtin_Router;
-   end C_Builtin_Router;
-
-   --  -----------------------------------------------------------------------
-   --
-   function C_Choice_Router return C_Field_Type
-   is
-      Res : Eti_Error;
-      T   : C_Field_Type;
-   begin
-      if M_Choice_Router = Null_Field_Type then
-         T := New_Fieldtype (Field_Check_Router'Access,
-                             Char_Check_Router'Access);
-         if T = Null_Field_Type then
-            raise Form_Exception;
-         else
-            Res := Set_Fieldtype_Arg (T,
-                                      Make_Arg'Access,
-                                      Copy_Arg'Access,
-                                      Free_Arg'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
-
-            Res := Set_Fieldtype_Choice (T,
-                                         Next_Router'Access,
-                                         Prev_Router'Access);
-            if Res /= E_Ok then
-               Eti_Exception (Res);
-            end if;
-         end if;
-         M_Choice_Router := T;
-      end if;
-      pragma Assert (M_Choice_Router /= Null_Field_Type);
-      return M_Choice_Router;
-   end C_Choice_Router;
-
-end Terminal_Interface.Curses.Forms.Field_Types;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm deleted file mode 100644 index 94f90ea..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm +++ /dev/null @@ -1,245 +0,0 @@ - -terminal_interface-curses-forms-field_types.ads - -

File : terminal_interface-curses-forms-field_types.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                 Terminal_Interface.Curses.Forms.Field_Types              --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.16 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C;
-
-package Terminal_Interface.Curses.Forms.Field_Types is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types);
-   use type Interfaces.C.int;
-   subtype C_Int is Interfaces.C.int;
-
-   --  |=====================================================================
-   --  | Man page form_fieldtype.3x
-   --  |=====================================================================
-
-   type Field_Type is abstract tagged null record;
-   --  Abstract base type for all field types. A concrete field type
-   --  is an extension that adds some data elements describing formats or
-   --  boundary values for the type and validation routines.
-   --  For the builtin low-level fieldtypes, the validation routines are
-   --  already defined by the low-level C library.
-   --  The builtin types like Alpha or AlphaNumeric etc. are defined in
-   --  child packages of this package. You may use one of them as example
-   --  how to create you own child packages for low-level field types that
-   --  you may have already written in C.
-
-   type Field_Type_Access is access all Field_Type'Class;
-
-   --  #1A NAME="AFU_1"#2|
-   procedure Set_Field_Type (Fld      : Field;
-                             Fld_Type : Field_Type) is abstract;
-   --  AKA: set_field_type()
-   --  But: we hide the vararg mechanism of the C interface. You always
-   --       have to pass a single Field_Type parameter.
-
-   --  ---------------------------------------------------------------------
-
-   --  |=====================================================================
-   --  | Man page form_field_validation.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_2"#2|
-   function Get_Type (Fld : Field) return Field_Type_Access;
-   --  AKA: field_type()
-   --  AKA: field_arg()
-   --  In Ada95 we can combine these. If you try to retrieve the field type
-   --  that is not defined as extension of the abstract tagged type above,
-   --  you will raise a Form_Exception.
-   --  This is not inlined
-
-   --  +----------------------------------------------------------------------
-   --  | Private Part.
-   --  | Most of this is used by the implementations of the child packages.
-   --  |
-private
-   type Makearg_Function is access
-     function (Args : System.Address) return System.Address;
-   pragma Convention (C, Makearg_Function);
-
-   type Copyarg_Function is access
-     function (Usr : System.Address) return System.Address;
-   pragma Convention (C, Copyarg_Function);
-
-   type Freearg_Function is access
-     procedure (Usr : System.Address);
-   pragma Convention (C, Freearg_Function);
-
-   type Field_Check_Function is access
-     function (Fld : Field; Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Field_Check_Function);
-
-   type Char_Check_Function is access
-     function (Ch : C_Int; Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Char_Check_Function);
-
-   type Choice_Function is access
-     function (Fld : Field; Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Choice_Function);
-
-   --  +----------------------------------------------------------------------
-   --  | This must be in sync with the FIELDTYPE structure in form.h
-   --  |
-   type Low_Level_Field_Type is
-      record
-         Status :              Interfaces.C.unsigned_short;
-         Ref_Count :           Interfaces.C.long;
-         Left, Right :         System.Address;
-         Makearg :             Makearg_Function;
-         Copyarg :             Copyarg_Function;
-         Freearg :             Freearg_Function;
-         Fcheck :              Field_Check_Function;
-         Ccheck :              Char_Check_Function;
-         Next, Prev :          Choice_Function;
-      end record;
-   pragma Convention (C, Low_Level_Field_Type);
-   type C_Field_Type is access all Low_Level_Field_Type;
-
-   Null_Field_Type   : constant C_Field_Type := null;
-
-   --  +----------------------------------------------------------------------
-   --  | This four low-level fieldtypes are the ones associated with
-   --  | fieldtypes handled by this binding. Any other low-level fieldtype
-   --  | will result in a Form_Exception is function Get_Type.
-   --  |
-   M_Generic_Type   : C_Field_Type := null;
-   M_Generic_Choice : C_Field_Type := null;
-   M_Builtin_Router : C_Field_Type := null;
-   M_Choice_Router  : C_Field_Type := null;
-
-   --  Two wrapper functions to access those low-level fieldtypes defined
-   --  in this package.
-   function C_Builtin_Router return C_Field_Type;
-   function C_Choice_Router  return C_Field_Type;
-
-   procedure Wrap_Builtin (Fld : Field;
-                           Typ : Field_Type'Class;
-                           Cft : C_Field_Type := C_Builtin_Router);
-   --  This procedure has to be called by the Set_Field_Type implementation
-   --  for builtin low-level fieldtypes to replace it by an Ada95
-   --  conformant Field_Type object.
-   --  The parameter Cft must be C_Builtin_Router for regular low-level
-   --  fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for
-   --  low-level fieldtypes witch choice functions (like TYP_ENUM).
-   --  Any other value will raise a Form_Exception.
-
-   function Make_Arg (Args : System.Address) return System.Address;
-   pragma Import (C, Make_Arg, "void_star_make_arg");
-   --  This is the Makearg_Function for the internal low-level types
-   --  introduced by this binding.
-
-   function Copy_Arg (Usr : System.Address) return System.Address;
-   pragma Convention (C, Copy_Arg);
-   --  This is the Copyarg_Function for the internal low-level types
-   --  introduced by this binding.
-
-   procedure Free_Arg (Usr : System.Address);
-   pragma Convention (C, Free_Arg);
-   --  This is the Freearg_Function for the internal low-level types
-   --  introduced by this binding.
-
-   function Field_Check_Router (Fld : Field;
-                                Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Field_Check_Router);
-   --  This is the Field_Check_Function for the internal low-level types
-   --  introduced to wrap the low-level types by a Field_Type derived
-   --  type. It routes the call to the corresponding low-level validation
-   --  function.
-
-   function Char_Check_Router (Ch : C_Int;
-                               Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Char_Check_Router);
-   --  This is the Char_Check_Function for the internal low-level types
-   --  introduced to wrap the low-level types by a Field_Type derived
-   --  type. It routes the call to the corresponding low-level validation
-   --  function.
-
-   function Next_Router (Fld : Field;
-                         Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Next_Router);
-   --  This is the Choice_Function for the internal low-level types
-   --  introduced to wrap the low-level types by a Field_Type derived
-   --  type. It routes the call to the corresponding low-level next_choice
-   --  function.
-
-   function Prev_Router (Fld : Field;
-                         Usr : System.Address) return Curses_Bool;
-   pragma Convention (C, Prev_Router);
-   --  This is the Choice_Function for the internal low-level types
-   --  introduced to wrap the low-level types by a Field_Type derived
-   --  type. It routes the call to the corresponding low-level prev_choice
-   --  function.
-
-   --  This is the Argument structure maintained by all low-level field types
-   --  introduced by this binding.
-   type Argument is record
-      Typ : Field_Type_Access;   --  the Field_Type creating this record
-      Usr : System.Address;      --  original arg for builtin low-level types
-      Cft : C_Field_Type;        --  the original low-level type
-   end record;
-   type Argument_Access is access all Argument;
-
-   --  +----------------------------------------------------------------------
-   --  |
-   --  | Some Imports of libform routines to deal with low-level fieldtypes.
-   --  |
-   function New_Fieldtype (Fcheck : Field_Check_Function;
-                           Ccheck : Char_Check_Function)
-     return C_Field_Type;
-   pragma Import (C, New_Fieldtype, "new_fieldtype");
-
-   function Set_Fieldtype_Arg (Cft : C_Field_Type;
-                               Mak : Makearg_Function := Make_Arg'Access;
-                               Cop : Copyarg_Function := Copy_Arg'Access;
-                               Fre : Freearg_Function := Free_Arg'Access)
-     return C_Int;
-   pragma Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg");
-
-   function Set_Fieldtype_Choice (Cft : C_Field_Type;
-                                  Next, Prev : Choice_Function)
-     return C_Int;
-   pragma Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice");
-
-end Terminal_Interface.Curses.Forms.Field_Types;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm deleted file mode 100644 index a04a469..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm +++ /dev/null @@ -1,91 +0,0 @@ - -terminal_interface-curses-forms-field_user_data.adb - -

File : terminal_interface-curses-forms-field_user_data.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Forms.Field_User_Data            --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.13 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use  Terminal_Interface.Curses.Aux;
-
---  |
---  |=====================================================================
---  | man page form_field_userptr.3x
---  |=====================================================================
---  |
-package body Terminal_Interface.Curses.Forms.Field_User_Data is
-   --  |
-   --  |
-   --  |
-   use type Interfaces.C.int;
-
-   procedure Set_User_Data (Fld  : Field;
-                            Data : User_Access)
-   is
-      function Set_Field_Userptr (Fld : Field;
-                                  Usr : User_Access) return C_Int;
-      pragma Import (C, Set_Field_Userptr, "set_field_userptr");
-
-      Res : constant Eti_Error := Set_Field_Userptr (Fld, Data);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_User_Data;
-   --  |
-   --  |
-   --  |
-   function Get_User_Data (Fld  : Field) return User_Access
-   is
-      function Field_Userptr (Fld : Field) return User_Access;
-      pragma Import (C, Field_Userptr, "field_userptr");
-   begin
-      return Field_Userptr (Fld);
-   end Get_User_Data;
-
-   procedure Get_User_Data (Fld  : Field;
-                            Data : out User_Access)
-   is
-   begin
-      Data := Get_User_Data (Fld);
-   end Get_User_Data;
-
-end Terminal_Interface.Curses.Forms.Field_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm deleted file mode 100644 index 0723780..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm +++ /dev/null @@ -1,75 +0,0 @@ - -terminal_interface-curses-forms-field_user_data.ads - -

File : terminal_interface-curses-forms-field_user_data.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Forms.Field_User_Data            --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.16 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-generic
-   type User is limited private;
-   type User_Access is access User;
-package Terminal_Interface.Curses.Forms.Field_User_Data is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_User_Data);
-
-   --  |=====================================================================
-   --  | Man page form_field_userptr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   procedure Set_User_Data (Fld  : Field;
-                            Data : User_Access);
-   --  AKA: set_field_userptr
-   pragma Inline (Set_User_Data);
-
-   --  #1A NAME="AFU_2"#2|
-   procedure Get_User_Data (Fld  : Field;
-                            Data : out User_Access);
-   --  AKA: field_userptr
-
-   --  #1A NAME="AFU_3"#2|
-   function Get_User_Data (Fld  : Field) return User_Access;
-   --  AKA: field_userptr
-   --  Sama as function
-   pragma Inline (Get_User_Data);
-
-end Terminal_Interface.Curses.Forms.Field_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm deleted file mode 100644 index 3b91c7b..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm +++ /dev/null @@ -1,92 +0,0 @@ - -terminal_interface-curses-forms-form_user_data.adb - -

File : terminal_interface-curses-forms-form_user_data.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                Terminal_Interface.Curses.Forms.Form_User_Data            --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.13 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
---  |
---  |=====================================================================
---  | man page form__userptr.3x
---  |=====================================================================
---  |
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms.Form_User_Data is
-
-   use type Interfaces.C.int;
-
-   --  |
-   --  |
-   --  |
-   procedure Set_User_Data (Frm  : Form;
-                            Data : User_Access)
-   is
-      function Set_Form_Userptr (Frm  : Form;
-                                 Data : User_Access)  return C_Int;
-      pragma Import (C, Set_Form_Userptr, "set_form_userptr");
-
-      Res : constant Eti_Error := Set_Form_Userptr (Frm, Data);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_User_Data;
-   --  |
-   --  |
-   --  |
-   function Get_User_Data (Frm  : Form) return User_Access
-   is
-      function Form_Userptr (Frm : Form) return User_Access;
-      pragma Import (C, Form_Userptr, "form_userptr");
-   begin
-      return Form_Userptr (Frm);
-   end Get_User_Data;
-
-   procedure Get_User_Data (Frm  : Form;
-                            Data : out User_Access)
-   is
-   begin
-      Data := Get_User_Data (Frm);
-   end Get_User_Data;
-
-end Terminal_Interface.Curses.Forms.Form_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm deleted file mode 100644 index bc0be4c..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm +++ /dev/null @@ -1,75 +0,0 @@ - -terminal_interface-curses-forms-form_user_data.ads - -

File : terminal_interface-curses-forms-form_user_data.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                Terminal_Interface.Curses.Forms.Form_User_Data            --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.15 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-generic
-   type User is limited private;
-   type User_Access is access User;
-package Terminal_Interface.Curses.Forms.Form_User_Data is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms.Form_User_Data);
-
-   --  |=====================================================================
-   --  | Man page form_userptr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   procedure Set_User_Data (Frm  : Form;
-                            Data : User_Access);
-   --  AKA: set_form_userptr
-   pragma Inline (Set_User_Data);
-
-   --  #1A NAME="AFU_2"#2|
-   procedure Get_User_Data (Frm  : Form;
-                            Data : out User_Access);
-   --  AKA: form_userptr
-
-   --  #1A NAME="AFU_3"#2|
-   function Get_User_Data (Frm  : Form) return User_Access;
-   --  AKA: form_userptr
-   --  Same as function
-   pragma Inline (Get_User_Data);
-
-end Terminal_Interface.Curses.Forms.Form_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms__adb.htm deleted file mode 100644 index 007b21b..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms__adb.htm +++ /dev/null @@ -1,1167 +0,0 @@ - -terminal_interface-curses-forms.adb - -

File : terminal_interface-curses-forms.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Forms                     --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.28 @
---  @Date: 2011/03/22 23:37:32 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Unchecked_Deallocation;
-with Ada.Unchecked_Conversion;
-
-with Interfaces.C; use Interfaces.C;
-with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Interfaces.C.Pointers;
-
-with Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Forms is
-
-   use Terminal_Interface.Curses.Aux;
-
-   type C_Field_Array is array (Natural range <>) of aliased Field;
-   package F_Array is new
-     Interfaces.C.Pointers (Natural, Field, C_Field_Array, Null_Field);
-
-------------------------------------------------------------------------------
-   --  |
-   --  |
-   --  |
-   --  subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
-
-   function FOS_2_CInt is new
-     Ada.Unchecked_Conversion (Field_Option_Set,
-                               C_Int);
-
-   function CInt_2_FOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Field_Option_Set);
-
-   function FrmOS_2_CInt is new
-     Ada.Unchecked_Conversion (Form_Option_Set,
-                               C_Int);
-
-   function CInt_2_FrmOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Form_Option_Set);
-
-   procedure Request_Name (Key  : Form_Request_Code;
-                                Name : out String)
-   is
-      function Form_Request_Name (Key : C_Int) return chars_ptr;
-      pragma Import (C, Form_Request_Name, "form_request_name");
-   begin
-      Fill_String (Form_Request_Name (C_Int (Key)), Name);
-   end Request_Name;
-
-   function Request_Name (Key : Form_Request_Code) return String
-   is
-      function Form_Request_Name (Key : C_Int) return chars_ptr;
-      pragma Import (C, Form_Request_Name, "form_request_name");
-   begin
-      return Fill_String (Form_Request_Name (C_Int (Key)));
-   end Request_Name;
-------------------------------------------------------------------------------
-   --  |
-   --  |
-   --  |
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_new.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Create (Height       : Line_Count;
-                    Width        : Column_Count;
-                    Top          : Line_Position;
-                    Left         : Column_Position;
-                    Off_Screen   : Natural := 0;
-                    More_Buffers : Buffer_Number := Buffer_Number'First)
-                    return Field
-   is
-      function Newfield (H, W, T, L, O, M : C_Int) return Field;
-      pragma Import (C, Newfield, "new_field");
-      Fld : constant Field := Newfield (C_Int (Height), C_Int (Width),
-                                        C_Int (Top), C_Int (Left),
-                                        C_Int (Off_Screen),
-                                        C_Int (More_Buffers));
-   begin
-      if Fld = Null_Field then
-         raise Form_Exception;
-      end if;
-      return Fld;
-   end Create;
---  |
---  |
---  |
-   procedure Delete (Fld : in out Field)
-   is
-      function Free_Field (Fld : Field) return C_Int;
-      pragma Import (C, Free_Field, "free_field");
-
-      Res : Eti_Error;
-   begin
-      Res := Free_Field (Fld);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Fld := Null_Field;
-   end Delete;
-   --  |
-   --  |
-   --  |
-   function Duplicate (Fld  : Field;
-                       Top  : Line_Position;
-                       Left : Column_Position) return Field
-   is
-      function Dup_Field (Fld  : Field;
-                          Top  : C_Int;
-                          Left : C_Int) return Field;
-      pragma Import (C, Dup_Field, "dup_field");
-
-      F : constant Field := Dup_Field (Fld,
-                                       C_Int (Top),
-                                       C_Int (Left));
-   begin
-      if F = Null_Field then
-         raise Form_Exception;
-      end if;
-      return F;
-   end Duplicate;
-   --  |
-   --  |
-   --  |
-   function Link (Fld  : Field;
-                  Top  : Line_Position;
-                  Left : Column_Position) return Field
-   is
-      function Lnk_Field (Fld  : Field;
-                          Top  : C_Int;
-                          Left : C_Int) return Field;
-      pragma Import (C, Lnk_Field, "link_field");
-
-      F : constant Field := Lnk_Field (Fld,
-                                       C_Int (Top),
-                                       C_Int (Left));
-   begin
-      if F = Null_Field then
-         raise Form_Exception;
-      end if;
-      return F;
-   end Link;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_just.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Justification (Fld  : Field;
-                                Just : Field_Justification := None)
-   is
-      function Set_Field_Just (Fld  : Field;
-                               Just : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Just, "set_field_just");
-
-      Res : constant Eti_Error :=
-        Set_Field_Just (Fld,
-                        C_Int (Field_Justification'Pos (Just)));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Justification;
-   --  |
-   --  |
-   --  |
-   function Get_Justification (Fld : Field) return Field_Justification
-   is
-      function Field_Just (Fld : Field) return C_Int;
-      pragma Import (C, Field_Just, "field_just");
-   begin
-      return Field_Justification'Val (Field_Just (Fld));
-   end Get_Justification;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_buffer.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Buffer
-     (Fld    : Field;
-      Buffer : Buffer_Number := Buffer_Number'First;
-      Str    : String)
-   is
-      type Char_Ptr is access all Interfaces.C.char;
-      function Set_Fld_Buffer (Fld    : Field;
-                                 Bufnum : C_Int;
-                                 S      : Char_Ptr)
-        return C_Int;
-      pragma Import (C, Set_Fld_Buffer, "set_field_buffer");
-
-      Txt : char_array (0 .. Str'Length);
-      Len : size_t;
-      Res : Eti_Error;
-   begin
-      To_C (Str, Txt, Len);
-      Res := Set_Fld_Buffer (Fld, C_Int (Buffer), Txt (Txt'First)'Access);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Buffer;
-   --  |
-   --  |
-   --  |
-   procedure Get_Buffer
-     (Fld    : Field;
-      Buffer : Buffer_Number := Buffer_Number'First;
-      Str    : out String)
-   is
-      function Field_Buffer (Fld : Field;
-                             B   : C_Int) return chars_ptr;
-      pragma Import (C, Field_Buffer, "field_buffer");
-   begin
-      Fill_String (Field_Buffer (Fld, C_Int (Buffer)), Str);
-   end Get_Buffer;
-
-   function Get_Buffer
-     (Fld    : Field;
-      Buffer : Buffer_Number := Buffer_Number'First) return String
-   is
-      function Field_Buffer (Fld : Field;
-                             B   : C_Int) return chars_ptr;
-      pragma Import (C, Field_Buffer, "field_buffer");
-   begin
-      return Fill_String (Field_Buffer (Fld, C_Int (Buffer)));
-   end Get_Buffer;
-   --  |
-   --  |
-   --  |
-   procedure Set_Status (Fld    : Field;
-                         Status : Boolean := True)
-   is
-      function Set_Fld_Status (Fld : Field;
-                               St  : C_Int) return C_Int;
-      pragma Import (C, Set_Fld_Status, "set_field_status");
-
-      Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status));
-   begin
-      if Res /= E_Ok then
-         raise Form_Exception;
-      end if;
-   end Set_Status;
-   --  |
-   --  |
-   --  |
-   function Changed (Fld : Field) return Boolean
-   is
-      function Field_Status (Fld : Field) return C_Int;
-      pragma Import (C, Field_Status, "field_status");
-
-      Res : constant C_Int := Field_Status (Fld);
-   begin
-      if Res = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Changed;
-   --  |
-   --  |
-   --  |
-   procedure Set_Maximum_Size (Fld : Field;
-                               Max : Natural := 0)
-   is
-      function Set_Field_Max (Fld : Field;
-                              M   : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Max, "set_max_field");
-
-      Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Maximum_Size;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_opts.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Options (Fld     : Field;
-                          Options : Field_Option_Set)
-   is
-      function Set_Field_Opts (Fld : Field;
-                               Opt : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Opts, "set_field_opts");
-
-      Opt : constant C_Int := FOS_2_CInt (Options);
-      Res : Eti_Error;
-   begin
-      Res := Set_Field_Opts (Fld, Opt);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Options;
-   --  |
-   --  |
-   --  |
-   procedure Switch_Options (Fld     : Field;
-                             Options : Field_Option_Set;
-                             On      : Boolean := True)
-   is
-      function Field_Opts_On (Fld : Field;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Field_Opts_On, "field_opts_on");
-      function Field_Opts_Off (Fld : Field;
-                               Opt : C_Int) return C_Int;
-      pragma Import (C, Field_Opts_Off, "field_opts_off");
-
-      Err : Eti_Error;
-      Opt : constant C_Int := FOS_2_CInt (Options);
-   begin
-      if On then
-         Err := Field_Opts_On (Fld, Opt);
-      else
-         Err := Field_Opts_Off (Fld, Opt);
-      end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
-      end if;
-   end Switch_Options;
-   --  |
-   --  |
-   --  |
-   procedure Get_Options (Fld     : Field;
-                          Options : out Field_Option_Set)
-   is
-      function Field_Opts (Fld : Field) return C_Int;
-      pragma Import (C, Field_Opts, "field_opts");
-
-      Res : constant C_Int := Field_Opts (Fld);
-   begin
-      Options := CInt_2_FOS (Res);
-   end Get_Options;
-   --  |
-   --  |
-   --  |
-   function Get_Options (Fld : Field := Null_Field)
-                         return Field_Option_Set
-   is
-      Fos : Field_Option_Set;
-   begin
-      Get_Options (Fld, Fos);
-      return Fos;
-   end Get_Options;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_attributes.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Foreground
-     (Fld   : Field;
-      Fore  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First)
-   is
-      function Set_Field_Fore (Fld  : Field;
-                               Attr : C_Chtype) return C_Int;
-      pragma Import (C, Set_Field_Fore, "set_field_fore");
-
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Color => Color,
-                                             Attr  => Fore);
-      Res : constant Eti_Error :=
-        Set_Field_Fore (Fld, AttrChar_To_Chtype (Ch));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Foreground;
-   --  |
-   --  |
-   --  |
-   procedure Foreground (Fld  : Field;
-                         Fore : out Character_Attribute_Set)
-   is
-      function Field_Fore (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Fore, "field_fore");
-   begin
-      Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
-   end Foreground;
-
-   procedure Foreground (Fld   : Field;
-                         Fore  : out Character_Attribute_Set;
-                         Color : out Color_Pair)
-   is
-      function Field_Fore (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Fore, "field_fore");
-   begin
-      Fore  := Chtype_To_AttrChar (Field_Fore (Fld)).Attr;
-      Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color;
-   end Foreground;
-   --  |
-   --  |
-   --  |
-   procedure Set_Background
-     (Fld   : Field;
-      Back  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First)
-   is
-      function Set_Field_Back (Fld  : Field;
-                               Attr : C_Chtype) return C_Int;
-      pragma Import (C, Set_Field_Back, "set_field_back");
-
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Color => Color,
-                                             Attr  => Back);
-      Res : constant Eti_Error :=
-        Set_Field_Back (Fld, AttrChar_To_Chtype (Ch));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Background;
-   --  |
-   --  |
-   --  |
-   procedure Background (Fld  : Field;
-                         Back : out Character_Attribute_Set)
-   is
-      function Field_Back (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Back, "field_back");
-   begin
-      Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
-   end Background;
-
-   procedure Background (Fld   : Field;
-                         Back  : out Character_Attribute_Set;
-                         Color : out Color_Pair)
-   is
-      function Field_Back (Fld : Field) return C_Chtype;
-      pragma Import (C, Field_Back, "field_back");
-   begin
-      Back  := Chtype_To_AttrChar (Field_Back (Fld)).Attr;
-      Color := Chtype_To_AttrChar (Field_Back (Fld)).Color;
-   end Background;
-   --  |
-   --  |
-   --  |
-   procedure Set_Pad_Character (Fld : Field;
-                                Pad : Character := Space)
-   is
-      function Set_Field_Pad (Fld : Field;
-                              Ch  : C_Int) return C_Int;
-      pragma Import (C, Set_Field_Pad, "set_field_pad");
-
-      Res : constant Eti_Error := Set_Field_Pad (Fld,
-                                                 C_Int (Character'Pos (Pad)));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Pad_Character;
-   --  |
-   --  |
-   --  |
-   procedure Pad_Character (Fld : Field;
-                            Pad : out Character)
-   is
-      function Field_Pad (Fld : Field) return C_Int;
-      pragma Import (C, Field_Pad, "field_pad");
-   begin
-      Pad := Character'Val (Field_Pad (Fld));
-   end Pad_Character;
-   --  |
-   --  |=====================================================================
-   --  | man page form_field_info.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Info (Fld                : Field;
-                   Lines              : out Line_Count;
-                   Columns            : out Column_Count;
-                   First_Row          : out Line_Position;
-                   First_Column       : out Column_Position;
-                   Off_Screen         : out Natural;
-                   Additional_Buffers : out Buffer_Number)
-   is
-      type C_Int_Access is access all C_Int;
-      function Fld_Info (Fld : Field;
-                         L, C, Fr, Fc, Os, Ab : C_Int_Access)
-                         return C_Int;
-      pragma Import (C, Fld_Info, "field_info");
-
-      L, C, Fr, Fc, Os, Ab : aliased C_Int;
-      Res : constant Eti_Error := Fld_Info (Fld,
-                                            L'Access, C'Access,
-                                            Fr'Access, Fc'Access,
-                                            Os'Access, Ab'Access);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      else
-         Lines              := Line_Count (L);
-         Columns            := Column_Count (C);
-         First_Row          := Line_Position (Fr);
-         First_Column       := Column_Position (Fc);
-         Off_Screen         := Natural (Os);
-         Additional_Buffers := Buffer_Number (Ab);
-      end if;
-   end Info;
---  |
---  |
---  |
-   procedure Dynamic_Info (Fld     : Field;
-                           Lines   : out Line_Count;
-                           Columns : out Column_Count;
-                           Max     : out Natural)
-   is
-      type C_Int_Access is access all C_Int;
-      function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return C_Int;
-      pragma Import (C, Dyn_Info, "dynamic_field_info");
-
-      L, C, M : aliased C_Int;
-      Res : constant Eti_Error := Dyn_Info (Fld,
-                                            L'Access, C'Access,
-                                            M'Access);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      else
-         Lines   := Line_Count (L);
-         Columns := Column_Count (C);
-         Max     := Natural (M);
-      end if;
-   end Dynamic_Info;
-   --  |
-   --  |=====================================================================
-   --  | man page form_win.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Window (Frm : Form;
-                         Win : Window)
-   is
-      function Set_Form_Win (Frm : Form;
-                             Win : Window) return C_Int;
-      pragma Import (C, Set_Form_Win, "set_form_win");
-
-      Res : constant Eti_Error := Set_Form_Win (Frm, Win);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Window;
-   --  |
-   --  |
-   --  |
-   function Get_Window (Frm : Form) return Window
-   is
-      function Form_Win (Frm : Form) return Window;
-      pragma Import (C, Form_Win, "form_win");
-
-      W : constant Window := Form_Win (Frm);
-   begin
-      return W;
-   end Get_Window;
-   --  |
-   --  |
-   --  |
-   procedure Set_Sub_Window (Frm : Form;
-                             Win : Window)
-   is
-      function Set_Form_Sub (Frm : Form;
-                             Win : Window) return C_Int;
-      pragma Import (C, Set_Form_Sub, "set_form_sub");
-
-      Res : constant Eti_Error := Set_Form_Sub (Frm, Win);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Sub_Window;
-   --  |
-   --  |
-   --  |
-   function Get_Sub_Window (Frm : Form) return Window
-   is
-      function Form_Sub (Frm : Form) return Window;
-      pragma Import (C, Form_Sub, "form_sub");
-
-      W : constant Window := Form_Sub (Frm);
-   begin
-      return W;
-   end Get_Sub_Window;
-   --  |
-   --  |
-   --  |
-   procedure Scale (Frm     : Form;
-                    Lines   : out Line_Count;
-                    Columns : out Column_Count)
-   is
-      type C_Int_Access is access all C_Int;
-      function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return C_Int;
-      pragma Import (C, M_Scale, "scale_form");
-
-      X, Y : aliased C_Int;
-      Res  : constant Eti_Error := M_Scale (Frm, Y'Access, X'Access);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Lines := Line_Count (Y);
-      Columns := Column_Count (X);
-   end Scale;
-   --  |
-   --  |=====================================================================
-   --  | man page menu_hook.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Field_Init_Hook (Frm  : Form;
-                                  Proc : Form_Hook_Function)
-   is
-      function Set_Field_Init (Frm  : Form;
-                               Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Field_Init, "set_field_init");
-
-      Res : constant Eti_Error := Set_Field_Init (Frm, Proc);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Field_Init_Hook;
-   --  |
-   --  |
-   --  |
-   procedure Set_Field_Term_Hook (Frm  : Form;
-                                  Proc : Form_Hook_Function)
-   is
-      function Set_Field_Term (Frm  : Form;
-                               Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Field_Term, "set_field_term");
-
-      Res : constant Eti_Error := Set_Field_Term (Frm, Proc);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Field_Term_Hook;
-   --  |
-   --  |
-   --  |
-   procedure Set_Form_Init_Hook (Frm  : Form;
-                                 Proc : Form_Hook_Function)
-   is
-      function Set_Form_Init (Frm  : Form;
-                              Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Form_Init, "set_form_init");
-
-      Res : constant Eti_Error := Set_Form_Init (Frm, Proc);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Form_Init_Hook;
-   --  |
-   --  |
-   --  |
-   procedure Set_Form_Term_Hook (Frm  : Form;
-                                 Proc : Form_Hook_Function)
-   is
-      function Set_Form_Term (Frm  : Form;
-                              Proc : Form_Hook_Function) return C_Int;
-      pragma Import (C, Set_Form_Term, "set_form_term");
-
-      Res : constant Eti_Error := Set_Form_Term (Frm, Proc);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Form_Term_Hook;
-   --  |
-   --  |=====================================================================
-   --  | man page form_fields.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Redefine (Frm  : Form;
-                       Flds : Field_Array_Access)
-   is
-      function Set_Frm_Fields (Frm   : Form;
-                               Items : System.Address) return C_Int;
-      pragma Import (C, Set_Frm_Fields, "set_form_fields");
-
-      Res : Eti_Error;
-   begin
-      pragma Assert (Flds.all (Flds'Last) = Null_Field);
-      if Flds.all (Flds'Last) /= Null_Field then
-         raise Form_Exception;
-      else
-         Res := Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address);
-         if  Res /= E_Ok then
-            Eti_Exception (Res);
-         end if;
-      end if;
-   end Redefine;
-   --  |
-   --  |
-   --  |
-   function Fields (Frm   : Form;
-                    Index : Positive) return Field
-   is
-      use F_Array;
-
-      function C_Fields (Frm : Form) return Pointer;
-      pragma Import (C, C_Fields, "form_fields");
-
-      P : Pointer := C_Fields (Frm);
-   begin
-      if P = null or else Index > Field_Count (Frm) then
-         raise Form_Exception;
-      else
-         P := P + ptrdiff_t (C_Int (Index) - 1);
-         return P.all;
-      end if;
-   end Fields;
-   --  |
-   --  |
-   --  |
-   function Field_Count (Frm : Form) return Natural
-   is
-      function Count (Frm : Form) return C_Int;
-      pragma Import (C, Count, "field_count");
-   begin
-      return Natural (Count (Frm));
-   end Field_Count;
-   --  |
-   --  |
-   --  |
-   procedure Move (Fld    : Field;
-                   Line   : Line_Position;
-                   Column : Column_Position)
-   is
-      function Move (Fld : Field; L, C : C_Int) return C_Int;
-      pragma Import (C, Move, "move_field");
-
-      Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Move;
-   --  |
-   --  |=====================================================================
-   --  | man page form_new.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Create (Fields : Field_Array_Access) return Form
-   is
-      function NewForm (Fields : System.Address) return Form;
-      pragma Import (C, NewForm, "new_form");
-
-      M   : Form;
-   begin
-      pragma Assert (Fields.all (Fields'Last) = Null_Field);
-      if Fields.all (Fields'Last) /= Null_Field then
-         raise Form_Exception;
-      else
-         M := NewForm (Fields.all (Fields'First)'Address);
-         if M = Null_Form then
-            raise Form_Exception;
-         end if;
-         return M;
-      end if;
-   end Create;
-   --  |
-   --  |
-   --  |
-   procedure Delete (Frm : in out Form)
-   is
-      function Free (Frm : Form) return C_Int;
-      pragma Import (C, Free, "free_form");
-
-      Res : constant Eti_Error := Free (Frm);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Frm := Null_Form;
-   end Delete;
-   --  |
-   --  |=====================================================================
-   --  | man page form_opts.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Options (Frm     : Form;
-                          Options : Form_Option_Set)
-   is
-      function Set_Form_Opts (Frm : Form;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Set_Form_Opts, "set_form_opts");
-
-      Opt : constant C_Int := FrmOS_2_CInt (Options);
-      Res : Eti_Error;
-   begin
-      Res := Set_Form_Opts (Frm, Opt);
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Options;
-   --  |
-   --  |
-   --  |
-   procedure Switch_Options (Frm     : Form;
-                             Options : Form_Option_Set;
-                             On      : Boolean := True)
-   is
-      function Form_Opts_On (Frm : Form;
-                             Opt : C_Int) return C_Int;
-      pragma Import (C, Form_Opts_On, "form_opts_on");
-      function Form_Opts_Off (Frm : Form;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Form_Opts_Off, "form_opts_off");
-
-      Err : Eti_Error;
-      Opt : constant C_Int := FrmOS_2_CInt (Options);
-   begin
-      if On then
-         Err := Form_Opts_On (Frm, Opt);
-      else
-         Err := Form_Opts_Off (Frm, Opt);
-      end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
-      end if;
-   end Switch_Options;
-   --  |
-   --  |
-   --  |
-   procedure Get_Options (Frm     : Form;
-                          Options : out Form_Option_Set)
-   is
-      function Form_Opts (Frm : Form) return C_Int;
-      pragma Import (C, Form_Opts, "form_opts");
-
-      Res : constant C_Int := Form_Opts (Frm);
-   begin
-      Options := CInt_2_FrmOS (Res);
-   end Get_Options;
-   --  |
-   --  |
-   --  |
-   function Get_Options (Frm : Form := Null_Form) return Form_Option_Set
-   is
-      Fos : Form_Option_Set;
-   begin
-      Get_Options (Frm, Fos);
-      return Fos;
-   end Get_Options;
-   --  |
-   --  |=====================================================================
-   --  | man page form_post.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Post (Frm  : Form;
-                   Post : Boolean := True)
-   is
-      function M_Post (Frm : Form) return C_Int;
-      pragma Import (C, M_Post, "post_form");
-      function M_Unpost (Frm : Form) return C_Int;
-      pragma Import (C, M_Unpost, "unpost_form");
-
-      Res : Eti_Error;
-   begin
-      if Post then
-         Res := M_Post (Frm);
-      else
-         Res := M_Unpost (Frm);
-      end if;
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Post;
-   --  |
-   --  |=====================================================================
-   --  | man page form_cursor.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Position_Cursor (Frm : Form)
-   is
-      function Pos_Form_Cursor (Frm : Form) return C_Int;
-      pragma Import (C, Pos_Form_Cursor, "pos_form_cursor");
-
-      Res : constant Eti_Error := Pos_Form_Cursor (Frm);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Position_Cursor;
-   --  |
-   --  |=====================================================================
-   --  | man page form_data.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Data_Ahead (Frm : Form) return Boolean
-   is
-      function Ahead (Frm : Form) return C_Int;
-      pragma Import (C, Ahead, "data_ahead");
-
-      Res : constant C_Int := Ahead (Frm);
-   begin
-      if Res = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Data_Ahead;
-   --  |
-   --  |
-   --  |
-   function Data_Behind (Frm : Form) return Boolean
-   is
-      function Behind (Frm : Form) return C_Int;
-      pragma Import (C, Behind, "data_behind");
-
-      Res : constant C_Int := Behind (Frm);
-   begin
-      if Res = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Data_Behind;
-   --  |
-   --  |=====================================================================
-   --  | man page form_driver.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   function Driver (Frm : Form;
-                    Key : Key_Code) return Driver_Result
-   is
-      function Frm_Driver (Frm : Form; Key : C_Int) return C_Int;
-      pragma Import (C, Frm_Driver, "form_driver");
-
-      R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key));
-   begin
-      if R /= E_Ok then
-         if R = E_Unknown_Command then
-            return Unknown_Request;
-         elsif R = E_Invalid_Field then
-            return Invalid_Field;
-         elsif R = E_Request_Denied then
-            return Request_Denied;
-         else
-            Eti_Exception (R);
-            return Form_Ok;
-         end if;
-      else
-         return Form_Ok;
-      end if;
-   end Driver;
-   --  |
-   --  |=====================================================================
-   --  | man page form_page.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_Current (Frm : Form;
-                          Fld : Field)
-   is
-      function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int;
-      pragma Import (C, Set_Current_Fld, "set_current_field");
-
-      Res : constant Eti_Error := Set_Current_Fld (Frm, Fld);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Current;
-   --  |
-   --  |
-   --  |
-   function Current (Frm : Form) return Field
-   is
-      function Current_Fld (Frm : Form) return Field;
-      pragma Import (C, Current_Fld, "current_field");
-
-      Fld : constant Field := Current_Fld (Frm);
-   begin
-      if Fld = Null_Field then
-         raise Form_Exception;
-      end if;
-      return Fld;
-   end Current;
-   --  |
-   --  |
-   --  |
-   procedure Set_Page (Frm  : Form;
-                       Page : Page_Number := Page_Number'First)
-   is
-      function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int;
-      pragma Import (C, Set_Frm_Page, "set_form_page");
-
-      Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Page;
-   --  |
-   --  |
-   --  |
-   function Page (Frm : Form) return Page_Number
-   is
-      function Get_Page (Frm : Form) return C_Int;
-      pragma Import (C, Get_Page, "form_page");
-
-      P : constant C_Int := Get_Page (Frm);
-   begin
-      if P < 0 then
-         raise Form_Exception;
-      else
-         return Page_Number (P);
-      end if;
-   end Page;
-
-   function Get_Index (Fld : Field) return Positive
-   is
-      function Get_Fieldindex (Fld : Field) return C_Int;
-      pragma Import (C, Get_Fieldindex, "field_index");
-
-      Res : constant C_Int := Get_Fieldindex (Fld);
-   begin
-      if Res = Curses_Err then
-         raise Form_Exception;
-      end if;
-      return Positive (Natural (Res) + Positive'First);
-   end Get_Index;
-
-   --  |
-   --  |=====================================================================
-   --  | man page form_new_page.3x
-   --  |=====================================================================
-   --  |
-   --  |
-   --  |
-   procedure Set_New_Page (Fld      : Field;
-                           New_Page : Boolean := True)
-   is
-      function Set_Page (Fld : Field; Flg : C_Int) return C_Int;
-      pragma Import (C, Set_Page, "set_new_page");
-
-      Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_New_Page;
-   --  |
-   --  |
-   --  |
-   function Is_New_Page (Fld : Field) return Boolean
-   is
-      function Is_New (Fld : Field) return C_Int;
-      pragma Import (C, Is_New, "new_page");
-
-      Res : constant C_Int := Is_New (Fld);
-   begin
-      if Res = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Is_New_Page;
-
-   procedure Free (FA          : in out Field_Array_Access;
-                   Free_Fields : Boolean := False)
-   is
-      procedure Release is new Ada.Unchecked_Deallocation
-        (Field_Array, Field_Array_Access);
-   begin
-      if FA /= null and then Free_Fields then
-         for I in FA'First .. (FA'Last - 1) loop
-            if FA.all (I) /= Null_Field then
-               Delete (FA.all (I));
-            end if;
-         end loop;
-      end if;
-      Release (FA);
-   end Free;
-
-   --  |=====================================================================
-
-   function Default_Field_Options return Field_Option_Set
-   is
-   begin
-      return Get_Options (Null_Field);
-   end Default_Field_Options;
-
-   function Default_Form_Options return Form_Option_Set
-   is
-   begin
-      return Get_Options (Null_Form);
-   end Default_Form_Options;
-
-end Terminal_Interface.Curses.Forms;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms__ads.htm deleted file mode 100644 index a899c5d..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-forms__ads.htm +++ /dev/null @@ -1,790 +0,0 @@ - -terminal_interface-curses-forms.ads - -

File : terminal_interface-curses-forms.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Form                      --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 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, 1996
---  Version Control:
---  @Revision: 1.30 @
---  @Date: 2009/12/26 17:31:35 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
---  form binding.
---  This module is generated. Please don't change it manually!
---  Run the generator instead.
---  |
-with System;
-with Ada.Characters.Latin_1;
-
-package Terminal_Interface.Curses.Forms is
-   pragma Preelaborate (Terminal_Interface.Curses.Forms);
-   pragma Linker_Options ("-lform");
-   pragma Linker_Options ("-lncurses");
-
-   Space : Character renames Ada.Characters.Latin_1.Space;
-
-   type Field        is private;
-   type Form         is private;
-
-   Null_Field        : constant Field;
-   Null_Form         : constant Form;
-
-   type Field_Justification is (None,
-                                Left,
-                                Center,
-                                Right);
-
-   pragma Warnings (Off);
-   type Field_Option_Set is
-      record
-         Visible     : Boolean;
-         Active      : Boolean;
-         Public      : Boolean;
-         Edit        : Boolean;
-         Wrap        : Boolean;
-         Blank       : Boolean;
-         Auto_Skip   : Boolean;
-         Null_Ok     : Boolean;
-         Pass_Ok     : Boolean;
-         Static      : Boolean;
-         Unused      : Boolean;
-      end record;
-   pragma Convention (C, Field_Option_Set);
-
-   for Field_Option_Set use
-      record
-         Visible     at 0 range  0 ..  0;
-         Active      at 0 range  1 ..  1;
-         Public      at 0 range  2 ..  2;
-         Edit        at 0 range  3 ..  3;
-         Wrap        at 0 range  4 ..  4;
-         Blank       at 0 range  5 ..  5;
-         Auto_Skip   at 0 range  6 ..  6;
-         Null_Ok     at 0 range  7 ..  7;
-         Pass_Ok     at 0 range  8 ..  8;
-         Static      at 0 range  9 ..  9;
-         Unused      at 0 range 10 .. 31;
-      end record;
-   for Field_Option_Set'Size use 32;
-   --  Please note: this rep. clause is generated and may be
-   --               different on your system.Dnl
-
-   pragma Warnings (On);
-
-   function Default_Field_Options return Field_Option_Set;
-   --  The initial defaults for the field options.
-   pragma Inline (Default_Field_Options);
-
-   pragma Warnings (Off);
-   type Form_Option_Set is
-      record
-         NL_Overload : Boolean;
-         BS_Overload : Boolean;
-         Unused      : Boolean;
-      end record;
-   pragma Convention (C, Form_Option_Set);
-
-   for Form_Option_Set use
-      record
-         NL_Overload at 0 range  0 ..  0;
-         BS_Overload at 0 range  1 ..  1;
-         Unused      at 0 range  2 .. 31;
-      end record;
-   for Form_Option_Set'Size use 32;
-   --  Please note: this rep. clause is generated and may be
-   --               different on your system.Dnl
-
-   pragma Warnings (On);
-
-   function Default_Form_Options return Form_Option_Set;
-   --  The initial defaults for the form options.
-   pragma Inline (Default_Form_Options);
-
-   type Buffer_Number is new Natural;
-
-   type Field_Array is array (Positive range <>) of aliased Field;
-   pragma Convention (C, Field_Array);
-
-   type Field_Array_Access is access Field_Array;
-
-   procedure Free (FA          : in out Field_Array_Access;
-                   Free_Fields : Boolean := False);
-   --  Release the memory for an allocated field array
-   --  If Free_Fields is True, call Delete() for all the fields in
-   --  the array.
-
-   subtype Form_Request_Code is Key_Code range (Key_Max + 1) .. (Key_Max + 57);
-
-   --  The prefix F_ stands for "Form Request"
-   F_Next_Page                : constant Form_Request_Code := Key_Max + 1;
-   F_Previous_Page            : constant Form_Request_Code := Key_Max + 2;
-   F_First_Page               : constant Form_Request_Code := Key_Max + 3;
-   F_Last_Page                : constant Form_Request_Code := Key_Max + 4;
-
-   F_Next_Field               : constant Form_Request_Code := Key_Max + 5;
-   F_Previous_Field           : constant Form_Request_Code := Key_Max + 6;
-   F_First_Field              : constant Form_Request_Code := Key_Max + 7;
-   F_Last_Field               : constant Form_Request_Code := Key_Max + 8;
-   F_Sorted_Next_Field        : constant Form_Request_Code := Key_Max + 9;
-   F_Sorted_Previous_Field    : constant Form_Request_Code := Key_Max + 10;
-   F_Sorted_First_Field       : constant Form_Request_Code := Key_Max + 11;
-   F_Sorted_Last_Field        : constant Form_Request_Code := Key_Max + 12;
-   F_Left_Field               : constant Form_Request_Code := Key_Max + 13;
-   F_Right_Field              : constant Form_Request_Code := Key_Max + 14;
-   F_Up_Field                 : constant Form_Request_Code := Key_Max + 15;
-   F_Down_Field               : constant Form_Request_Code := Key_Max + 16;
-
-   F_Next_Char                : constant Form_Request_Code := Key_Max + 17;
-   F_Previous_Char            : constant Form_Request_Code := Key_Max + 18;
-   F_Next_Line                : constant Form_Request_Code := Key_Max + 19;
-   F_Previous_Line            : constant Form_Request_Code := Key_Max + 20;
-   F_Next_Word                : constant Form_Request_Code := Key_Max + 21;
-   F_Previous_Word            : constant Form_Request_Code := Key_Max + 22;
-   F_Begin_Field              : constant Form_Request_Code := Key_Max + 23;
-   F_End_Field                : constant Form_Request_Code := Key_Max + 24;
-   F_Begin_Line               : constant Form_Request_Code := Key_Max + 25;
-   F_End_Line                 : constant Form_Request_Code := Key_Max + 26;
-   F_Left_Char                : constant Form_Request_Code := Key_Max + 27;
-   F_Right_Char               : constant Form_Request_Code := Key_Max + 28;
-   F_Up_Char                  : constant Form_Request_Code := Key_Max + 29;
-   F_Down_Char                : constant Form_Request_Code := Key_Max + 30;
-
-   F_New_Line                 : constant Form_Request_Code := Key_Max + 31;
-   F_Insert_Char              : constant Form_Request_Code := Key_Max + 32;
-   F_Insert_Line              : constant Form_Request_Code := Key_Max + 33;
-   F_Delete_Char              : constant Form_Request_Code := Key_Max + 34;
-   F_Delete_Previous          : constant Form_Request_Code := Key_Max + 35;
-   F_Delete_Line              : constant Form_Request_Code := Key_Max + 36;
-   F_Delete_Word              : constant Form_Request_Code := Key_Max + 37;
-   F_Clear_EOL                : constant Form_Request_Code := Key_Max + 38;
-   F_Clear_EOF                : constant Form_Request_Code := Key_Max + 39;
-   F_Clear_Field              : constant Form_Request_Code := Key_Max + 40;
-   F_Overlay_Mode             : constant Form_Request_Code := Key_Max + 41;
-   F_Insert_Mode              : constant Form_Request_Code := Key_Max + 42;
-
-   --  Vertical Scrolling
-   F_ScrollForward_Line       : constant Form_Request_Code := Key_Max + 43;
-   F_ScrollBackward_Line      : constant Form_Request_Code := Key_Max + 44;
-   F_ScrollForward_Page       : constant Form_Request_Code := Key_Max + 45;
-   F_ScrollBackward_Page      : constant Form_Request_Code := Key_Max + 46;
-   F_ScrollForward_HalfPage   : constant Form_Request_Code := Key_Max + 47;
-   F_ScrollBackward_HalfPage  : constant Form_Request_Code := Key_Max + 48;
-
-   --  Horizontal Scrolling
-   F_HScrollForward_Char      : constant Form_Request_Code := Key_Max + 49;
-   F_HScrollBackward_Char     : constant Form_Request_Code := Key_Max + 50;
-   F_HScrollForward_Line      : constant Form_Request_Code := Key_Max + 51;
-   F_HScrollBackward_Line     : constant Form_Request_Code := Key_Max + 52;
-   F_HScrollForward_HalfLine  : constant Form_Request_Code := Key_Max + 53;
-   F_HScrollBackward_HalfLine : constant Form_Request_Code := Key_Max + 54;
-
-   F_Validate_Field           : constant Form_Request_Code := Key_Max + 55;
-   F_Next_Choice              : constant Form_Request_Code := Key_Max + 56;
-   F_Previous_Choice          : constant Form_Request_Code := Key_Max + 57;
-
-   --  For those who like the old 'C' style request names
-   REQ_NEXT_PAGE    : Form_Request_Code renames F_Next_Page;
-   REQ_PREV_PAGE    : Form_Request_Code renames F_Previous_Page;
-   REQ_FIRST_PAGE   : Form_Request_Code renames F_First_Page;
-   REQ_LAST_PAGE    : Form_Request_Code renames F_Last_Page;
-
-   REQ_NEXT_FIELD   : Form_Request_Code renames F_Next_Field;
-   REQ_PREV_FIELD   : Form_Request_Code renames F_Previous_Field;
-   REQ_FIRST_FIELD  : Form_Request_Code renames F_First_Field;
-   REQ_LAST_FIELD   : Form_Request_Code renames F_Last_Field;
-   REQ_SNEXT_FIELD  : Form_Request_Code renames F_Sorted_Next_Field;
-   REQ_SPREV_FIELD  : Form_Request_Code renames F_Sorted_Previous_Field;
-   REQ_SFIRST_FIELD : Form_Request_Code renames F_Sorted_First_Field;
-   REQ_SLAST_FIELD  : Form_Request_Code renames F_Sorted_Last_Field;
-   REQ_LEFT_FIELD   : Form_Request_Code renames F_Left_Field;
-   REQ_RIGHT_FIELD  : Form_Request_Code renames F_Right_Field;
-   REQ_UP_FIELD     : Form_Request_Code renames F_Up_Field;
-   REQ_DOWN_FIELD   : Form_Request_Code renames F_Down_Field;
-
-   REQ_NEXT_CHAR    : Form_Request_Code renames F_Next_Char;
-   REQ_PREV_CHAR    : Form_Request_Code renames F_Previous_Char;
-   REQ_NEXT_LINE    : Form_Request_Code renames F_Next_Line;
-   REQ_PREV_LINE    : Form_Request_Code renames F_Previous_Line;
-   REQ_NEXT_WORD    : Form_Request_Code renames F_Next_Word;
-   REQ_PREV_WORD    : Form_Request_Code renames F_Previous_Word;
-   REQ_BEG_FIELD    : Form_Request_Code renames F_Begin_Field;
-   REQ_END_FIELD    : Form_Request_Code renames F_End_Field;
-   REQ_BEG_LINE     : Form_Request_Code renames F_Begin_Line;
-   REQ_END_LINE     : Form_Request_Code renames F_End_Line;
-   REQ_LEFT_CHAR    : Form_Request_Code renames F_Left_Char;
-   REQ_RIGHT_CHAR   : Form_Request_Code renames F_Right_Char;
-   REQ_UP_CHAR      : Form_Request_Code renames F_Up_Char;
-   REQ_DOWN_CHAR    : Form_Request_Code renames F_Down_Char;
-
-   REQ_NEW_LINE     : Form_Request_Code renames F_New_Line;
-   REQ_INS_CHAR     : Form_Request_Code renames F_Insert_Char;
-   REQ_INS_LINE     : Form_Request_Code renames F_Insert_Line;
-   REQ_DEL_CHAR     : Form_Request_Code renames F_Delete_Char;
-   REQ_DEL_PREV     : Form_Request_Code renames F_Delete_Previous;
-   REQ_DEL_LINE     : Form_Request_Code renames F_Delete_Line;
-   REQ_DEL_WORD     : Form_Request_Code renames F_Delete_Word;
-   REQ_CLR_EOL      : Form_Request_Code renames F_Clear_EOL;
-   REQ_CLR_EOF      : Form_Request_Code renames F_Clear_EOF;
-   REQ_CLR_FIELD    : Form_Request_Code renames F_Clear_Field;
-   REQ_OVL_MODE     : Form_Request_Code renames F_Overlay_Mode;
-   REQ_INS_MODE     : Form_Request_Code renames F_Insert_Mode;
-
-   REQ_SCR_FLINE    : Form_Request_Code renames F_ScrollForward_Line;
-   REQ_SCR_BLINE    : Form_Request_Code renames F_ScrollBackward_Line;
-   REQ_SCR_FPAGE    : Form_Request_Code renames F_ScrollForward_Page;
-   REQ_SCR_BPAGE    : Form_Request_Code renames F_ScrollBackward_Page;
-   REQ_SCR_FHPAGE   : Form_Request_Code renames F_ScrollForward_HalfPage;
-   REQ_SCR_BHPAGE   : Form_Request_Code renames F_ScrollBackward_HalfPage;
-
-   REQ_SCR_FCHAR    : Form_Request_Code renames F_HScrollForward_Char;
-   REQ_SCR_BCHAR    : Form_Request_Code renames F_HScrollBackward_Char;
-   REQ_SCR_HFLINE   : Form_Request_Code renames F_HScrollForward_Line;
-   REQ_SCR_HBLINE   : Form_Request_Code renames F_HScrollBackward_Line;
-   REQ_SCR_HFHALF   : Form_Request_Code renames F_HScrollForward_HalfLine;
-   REQ_SCR_HBHALF   : Form_Request_Code renames F_HScrollBackward_HalfLine;
-
-   REQ_VALIDATION   : Form_Request_Code renames F_Validate_Field;
-   REQ_NEXT_CHOICE  : Form_Request_Code renames F_Next_Choice;
-   REQ_PREV_CHOICE  : Form_Request_Code renames F_Previous_Choice;
-
-   procedure Request_Name (Key  : Form_Request_Code;
-                           Name : out String);
-
-   function  Request_Name (Key : Form_Request_Code) return String;
-   --  Same as function
-   pragma Inline (Request_Name);
-
-   ------------------
-   --  Exceptions  --
-   ------------------
-   Form_Exception : exception;
-
-   --  |=====================================================================
-   --  | Man page form_field_new.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   function Create (Height       : Line_Count;
-                    Width        : Column_Count;
-                    Top          : Line_Position;
-                    Left         : Column_Position;
-                    Off_Screen   : Natural := 0;
-                    More_Buffers : Buffer_Number := Buffer_Number'First)
-                    return Field;
-   --  AKA: new_field()
-   --  An overloaded Create is defined later. Pragma Inline appears there.
-
-   --  #1A NAME="AFU_2"#2|
-   function New_Field (Height       : Line_Count;
-                       Width        : Column_Count;
-                       Top          : Line_Position;
-                       Left         : Column_Position;
-                       Off_Screen   : Natural := 0;
-                       More_Buffers : Buffer_Number := Buffer_Number'First)
-                       return Field renames Create;
-   --  AKA: new_field()
-   pragma Inline (New_Field);
-
-   --  #1A NAME="AFU_3"#2|
-   procedure Delete (Fld : in out Field);
-   --  AKA: free_field()
-   --  Reset Fld to Null_Field
-   --  An overloaded Delete is defined later. Pragma Inline appears there.
-
-   --  #1A NAME="AFU_4"#2|
-   function Duplicate (Fld  : Field;
-                       Top  : Line_Position;
-                       Left : Column_Position) return Field;
-   --  AKA: dup_field()
-   pragma Inline (Duplicate);
-
-   --  #1A NAME="AFU_5"#2|
-   function Link (Fld  : Field;
-                  Top  : Line_Position;
-                  Left : Column_Position) return Field;
-   --  AKA: link_field()
-   pragma Inline (Link);
-
-   --  |=====================================================================
-   --  | Man page form_field_just.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_6"#2|
-   procedure Set_Justification (Fld  : Field;
-                                Just : Field_Justification := None);
-   --  AKA: set_field_just()
-   pragma Inline (Set_Justification);
-
-   --  #1A NAME="AFU_7"#2|
-   function Get_Justification (Fld : Field) return Field_Justification;
-   --  AKA: field_just()
-   pragma Inline (Get_Justification);
-
-   --  |=====================================================================
-   --  | Man page form_field_buffer.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_8"#2|
-   procedure Set_Buffer
-     (Fld    : Field;
-      Buffer : Buffer_Number := Buffer_Number'First;
-      Str    : String);
-   --  AKA: set_field_buffer()
-   --  Not inlined
-
-   --  #1A NAME="AFU_9"#2|
-   procedure Get_Buffer
-     (Fld    : Field;
-      Buffer : Buffer_Number := Buffer_Number'First;
-      Str    : out String);
-   --  AKA: field_buffer()
-
-   function Get_Buffer
-     (Fld    : Field;
-      Buffer : Buffer_Number := Buffer_Number'First) return String;
-   --  AKA: field_buffer()
-   --  Same but as function
-   pragma Inline (Get_Buffer);
-
-   --  #1A NAME="AFU_10"#2|
-   procedure Set_Status (Fld    : Field;
-                         Status : Boolean := True);
-   --  AKA: set_field_status()
-   pragma Inline (Set_Status);
-
-   --  #1A NAME="AFU_11"#2|
-   function Changed (Fld : Field) return Boolean;
-   --  AKA: field_status()
-   pragma Inline (Changed);
-
-   --  #1A NAME="AFU_12"#2|
-   procedure Set_Maximum_Size (Fld : Field;
-                               Max : Natural := 0);
-   --  AKA: set_field_max()
-   pragma Inline (Set_Maximum_Size);
-
-   --  |=====================================================================
-   --  | Man page form_field_opts.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_13"#2|
-   procedure Set_Options (Fld     : Field;
-                          Options : Field_Option_Set);
-   --  AKA: set_field_opts()
-   --  An overloaded version is defined later. Pragma Inline appears there
-
-   --  #1A NAME="AFU_14"#2|
-   procedure Switch_Options (Fld     : Field;
-                             Options : Field_Option_Set;
-                             On      : Boolean := True);
-   --  AKA: field_opts_on()
-   --  AKA: field_opts_off()
-   --  An overloaded version is defined later. Pragma Inline appears there
-
-   --  #1A NAME="AFU_15"#2|
-   procedure Get_Options (Fld     : Field;
-                          Options : out Field_Option_Set);
-   --  AKA: field_opts()
-
-   --  #1A NAME="AFU_16"#2|
-   function Get_Options (Fld : Field := Null_Field)
-                         return Field_Option_Set;
-   --  AKA: field_opts()
-   --  An overloaded version is defined later. Pragma Inline appears there
-
-   --  |=====================================================================
-   --  | Man page form_field_attributes.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_17"#2|
-   procedure Set_Foreground
-     (Fld   : Field;
-      Fore  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: set_field_fore()
-   pragma Inline (Set_Foreground);
-
-   --  #1A NAME="AFU_18"#2|
-   procedure Foreground (Fld  : Field;
-                         Fore : out Character_Attribute_Set);
-   --  AKA: field_fore()
-
-   --  #1A NAME="AFU_19"#2|
-   procedure Foreground (Fld   : Field;
-                         Fore  : out Character_Attribute_Set;
-                         Color : out Color_Pair);
-   --  AKA: field_fore()
-   pragma Inline (Foreground);
-
-   --  #1A NAME="AFU_20"#2|
-   procedure Set_Background
-     (Fld   : Field;
-      Back  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: set_field_back()
-   pragma Inline (Set_Background);
-
-   --  #1A NAME="AFU_21"#2|
-   procedure Background (Fld  : Field;
-                         Back : out Character_Attribute_Set);
-   --  AKA: field_back()
-
-   --  #1A NAME="AFU_22"#2|
-   procedure Background (Fld   : Field;
-                         Back  : out Character_Attribute_Set;
-                         Color : out Color_Pair);
-   --  AKA: field_back()
-   pragma Inline (Background);
-
-   --  #1A NAME="AFU_23"#2|
-   procedure Set_Pad_Character (Fld : Field;
-                                Pad : Character := Space);
-   --  AKA: set_field_pad()
-   pragma Inline (Set_Pad_Character);
-
-   --  #1A NAME="AFU_24"#2|
-   procedure Pad_Character (Fld : Field;
-                            Pad : out Character);
-   --  AKA: field_pad()
-   pragma Inline (Pad_Character);
-
-   --  |=====================================================================
-   --  | Man page form_field_info.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_25"#2|
-   procedure Info (Fld                : Field;
-                   Lines              : out Line_Count;
-                   Columns            : out Column_Count;
-                   First_Row          : out Line_Position;
-                   First_Column       : out Column_Position;
-                   Off_Screen         : out Natural;
-                   Additional_Buffers : out Buffer_Number);
-   --  AKA: field_info()
-   pragma Inline (Info);
-
-   --  #1A NAME="AFU_26"#2|
-   procedure Dynamic_Info (Fld     : Field;
-                           Lines   : out Line_Count;
-                           Columns : out Column_Count;
-                           Max     : out Natural);
-   --  AKA: dynamic_field_info()
-   pragma Inline (Dynamic_Info);
-
-   --  |=====================================================================
-   --  | Man page form_win.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_27"#2|
-   procedure Set_Window (Frm : Form;
-                         Win : Window);
-   --  AKA: set_form_win()
-   pragma Inline (Set_Window);
-
-   --  #1A NAME="AFU_28"#2|
-   function Get_Window (Frm : Form) return Window;
-   --  AKA: form_win()
-   pragma Inline (Get_Window);
-
-   --  #1A NAME="AFU_29"#2|
-   procedure Set_Sub_Window (Frm : Form;
-                             Win : Window);
-   --  AKA: set_form_sub()
-   pragma Inline (Set_Sub_Window);
-
-   --  #1A NAME="AFU_30"#2|
-   function Get_Sub_Window (Frm : Form) return Window;
-   --  AKA: form_sub()
-   pragma Inline (Get_Sub_Window);
-
-   --  #1A NAME="AFU_31"#2|
-   procedure Scale (Frm     : Form;
-                    Lines   : out Line_Count;
-                    Columns : out Column_Count);
-   --  AKA: scale_form()
-   pragma Inline (Scale);
-
-   --  |=====================================================================
-   --  | Man page form_hook.3x
-   --  |=====================================================================
-
-   type Form_Hook_Function is access procedure (Frm : Form);
-   pragma Convention (C, Form_Hook_Function);
-
-   --  #1A NAME="AFU_32"#2|
-   procedure Set_Field_Init_Hook (Frm  : Form;
-                                  Proc : Form_Hook_Function);
-   --  AKA: set_field_init()
-   pragma Inline (Set_Field_Init_Hook);
-
-   --  #1A NAME="AFU_33"#2|
-   procedure Set_Field_Term_Hook (Frm  : Form;
-                                  Proc : Form_Hook_Function);
-   --  AKA: set_field_term()
-   pragma Inline (Set_Field_Term_Hook);
-
-   --  #1A NAME="AFU_34"#2|
-   procedure Set_Form_Init_Hook (Frm  : Form;
-                                 Proc : Form_Hook_Function);
-   --  AKA: set_form_init()
-   pragma Inline (Set_Form_Init_Hook);
-
-   --  #1A NAME="AFU_35"#2|
-   procedure Set_Form_Term_Hook (Frm  : Form;
-                                 Proc : Form_Hook_Function);
-   --  AKA: set_form_term()
-   pragma Inline (Set_Form_Term_Hook);
-
-   --  #1A NAME="AFU_36"#2|
-   function Get_Field_Init_Hook (Frm : Form) return Form_Hook_Function;
-   --  AKA: field_init()
-   pragma Import (C, Get_Field_Init_Hook, "field_init");
-
-   --  #1A NAME="AFU_37"#2|
-   function Get_Field_Term_Hook (Frm : Form) return Form_Hook_Function;
-   --  AKA: field_term()
-   pragma Import (C, Get_Field_Term_Hook, "field_term");
-
-   --  #1A NAME="AFU_38"#2|
-   function Get_Form_Init_Hook (Frm : Form) return Form_Hook_Function;
-   --  AKA: form_init()
-   pragma Import (C, Get_Form_Init_Hook, "form_init");
-
-   --  #1A NAME="AFU_39"#2|
-   function Get_Form_Term_Hook (Frm : Form) return Form_Hook_Function;
-   --  AKA: form_term()
-   pragma Import (C, Get_Form_Term_Hook, "form_term");
-
-   --  |=====================================================================
-   --  | Man page form_field.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_40"#2|
-   procedure Redefine (Frm  : Form;
-                       Flds : Field_Array_Access);
-   --  AKA: set_form_fields()
-   pragma Inline (Redefine);
-
-   --  #1A NAME="AFU_41"#2|
-   procedure Set_Fields (Frm  : Form;
-                         Flds : Field_Array_Access) renames Redefine;
-   --  AKA: set_form_fields()
-   --  pragma Inline (Set_Fields);
-
-   --  #1A NAME="AFU_42"#2|
-   function Fields (Frm   : Form;
-                    Index : Positive) return Field;
-   --  AKA: form_fields()
-   pragma Inline (Fields);
-
-   --  #1A NAME="AFU_43"#2|
-   function Field_Count (Frm : Form) return Natural;
-   --  AKA: field_count()
-   pragma Inline (Field_Count);
-
-   --  #1A NAME="AFU_44"#2|
-   procedure Move (Fld    : Field;
-                   Line   : Line_Position;
-                   Column : Column_Position);
-   --  AKA: move_field()
-   pragma Inline (Move);
-
-   --  |=====================================================================
-   --  | Man page form_new.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_45"#2|
-   function Create (Fields : Field_Array_Access) return Form;
-   --  AKA: new_form()
-   pragma Inline (Create);
-
-   --  #1A NAME="AFU_46"#2|
-   function New_Form (Fields : Field_Array_Access) return Form
-     renames Create;
-   --  AKA: new_form()
-   --  pragma Inline (New_Form);
-
-   --  #1A NAME="AFU_47"#2|
-   procedure Delete (Frm : in out Form);
-   --  AKA: free_form()
-   --  Reset Frm to Null_Form
-   pragma Inline (Delete);
-
-   --  |=====================================================================
-   --  | Man page form_opts.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_48"#2|
-   procedure Set_Options (Frm     : Form;
-                          Options : Form_Option_Set);
-   --  AKA: set_form_opts()
-   pragma Inline (Set_Options);
-
-   --  #1A NAME="AFU_49"#2|
-   procedure Switch_Options (Frm     : Form;
-                             Options : Form_Option_Set;
-                             On      : Boolean := True);
-   --  AKA: form_opts_on()
-   --  AKA: form_opts_off()
-   pragma Inline (Switch_Options);
-
-   --  #1A NAME="AFU_50"#2|
-   procedure Get_Options (Frm     : Form;
-                          Options : out Form_Option_Set);
-   --  AKA: form_opts()
-
-   --  #1A NAME="AFU_51"#2|
-   function Get_Options (Frm : Form := Null_Form) return Form_Option_Set;
-   --  AKA: form_opts()
-   pragma Inline (Get_Options);
-
-   --  |=====================================================================
-   --  | Man page form_post.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_52"#2|
-   procedure Post (Frm  : Form;
-                   Post : Boolean := True);
-   --  AKA: post_form()
-   --  AKA: unpost_form()
-   pragma Inline (Post);
-
-   --  |=====================================================================
-   --  | Man page form_cursor.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_53"#2|
-   procedure Position_Cursor (Frm : Form);
-   --  AKA: pos_form_cursor()
-   pragma Inline (Position_Cursor);
-
-   --  |=====================================================================
-   --  | Man page form_data.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_54"#2|
-   function Data_Ahead (Frm : Form) return Boolean;
-   --  AKA: data_ahead()
-   pragma Inline (Data_Ahead);
-
-   --  #1A NAME="AFU_55"#2|
-   function Data_Behind (Frm : Form) return Boolean;
-   --  AKA: data_behind()
-   pragma Inline (Data_Behind);
-
-   --  |=====================================================================
-   --  | Man page form_driver.3x
-   --  |=====================================================================
-
-   type Driver_Result is (Form_Ok,
-                          Request_Denied,
-                          Unknown_Request,
-                          Invalid_Field);
-
-   --  #1A NAME="AFU_56"#2|
-   function Driver (Frm : Form;
-                    Key : Key_Code) return Driver_Result;
-   --  AKA: form_driver()
-   --  Driver not inlined
-
-   --  |=====================================================================
-   --  | Man page form_page.3x
-   --  |=====================================================================
-
-   type Page_Number is new Natural;
-
-   --  #1A NAME="AFU_57"#2|
-   procedure Set_Current (Frm : Form;
-                          Fld : Field);
-   --  AKA: set_current_field()
-   pragma Inline (Set_Current);
-
-   --  #1A NAME="AFU_58"#2|
-   function Current (Frm : Form) return Field;
-   --  AKA: current_field()
-   pragma Inline (Current);
-
-   --  #1A NAME="AFU_59"#2|
-   procedure Set_Page (Frm  : Form;
-                       Page : Page_Number := Page_Number'First);
-   --  AKA: set_form_page()
-   pragma Inline (Set_Page);
-
-   --  #1A NAME="AFU_60"#2|
-   function Page (Frm : Form) return Page_Number;
-   --  AKA: form_page()
-   pragma Inline (Page);
-
-   --  #1A NAME="AFU_61"#2|
-   function Get_Index (Fld : Field) return Positive;
-   --  AKA: field_index()
-   --  Please note that in this binding we start the numbering of fields
-   --  with 1. So this is number is one more than you get from the low
-   --  level call.
-   pragma Inline (Get_Index);
-
-   --  |=====================================================================
-   --  | Man page form_new_page.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_62"#2|
-   procedure Set_New_Page (Fld      : Field;
-                           New_Page : Boolean := True);
-   --  AKA: set_new_page()
-   pragma Inline (Set_New_Page);
-
-   --  #1A NAME="AFU_63"#2|
-   function Is_New_Page (Fld : Field) return Boolean;
-   --  AKA: new_page()
-   pragma Inline (Is_New_Page);
-
-   --  |=====================================================================
-   --  | Man page form_requestname.3x
-   --  |=====================================================================
-   --  Not Implemented: form_request_name, form_request_by_name
-
-------------------------------------------------------------------------------
-private
-   type Field is new System.Storage_Elements.Integer_Address;
-   type Form  is new System.Storage_Elements.Integer_Address;
-
-   Null_Field : constant Field := 0;
-   Null_Form  : constant Form  := 0;
-
-end Terminal_Interface.Curses.Forms;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm deleted file mode 100644 index c9583dd..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm +++ /dev/null @@ -1,83 +0,0 @@ - -terminal_interface-curses-menus-item_user_data.adb - -

File : terminal_interface-curses-menus-item_user_data.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Menus.Item_User_Data             --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Menus.Item_User_Data is
-
-   use type Interfaces.C.int;
-
-   procedure Set_User_Data (Itm  : Item;
-                            Data : User_Access)
-   is
-      function Set_Item_Userptr (Itm  : Item;
-                                 Addr : User_Access)  return C_Int;
-      pragma Import (C, Set_Item_Userptr, "set_item_userptr");
-
-      Res : constant Eti_Error := Set_Item_Userptr (Itm, Data);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_User_Data;
-
-   function Get_User_Data (Itm  : Item) return User_Access
-   is
-      function Item_Userptr (Itm : Item) return User_Access;
-      pragma Import (C, Item_Userptr, "item_userptr");
-   begin
-      return Item_Userptr (Itm);
-   end Get_User_Data;
-
-   procedure Get_User_Data (Itm  : Item;
-                            Data : out User_Access)
-   is
-   begin
-      Data := Get_User_Data (Itm);
-   end Get_User_Data;
-
-end Terminal_Interface.Curses.Menus.Item_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm deleted file mode 100644 index 8614e20..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm +++ /dev/null @@ -1,80 +0,0 @@ - -terminal_interface-curses-menus-item_user_data.ads - -

File : terminal_interface-curses-menus-item_user_data.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Menus.Item_User_Data             --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 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, 1996
---  Version Control:
---  @Revision: 1.17 @
---  @Date: 2009/12/26 17:31:35 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-generic
-   type User is limited private;
-   type User_Access is access User;
-package Terminal_Interface.Curses.Menus.Item_User_Data is
-   pragma Preelaborate (Terminal_Interface.Curses.Menus.Item_User_Data);
-
-   --  The binding uses the same user pointer for menu items
-   --  as the low level C implementation. So you can safely
-   --  read or write the user pointer also with the C routines
-   --
-   --  |=====================================================================
-   --  | Man page mitem_userptr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   procedure Set_User_Data (Itm  : Item;
-                            Data : User_Access);
-   --  AKA: set_item_userptr
-   pragma Inline (Set_User_Data);
-
-   --  #1A NAME="AFU_2"#2|
-   procedure Get_User_Data (Itm  : Item;
-                            Data : out User_Access);
-   --  AKA: item_userptr
-
-   --  #1A NAME="AFU_3"#2|
-   function Get_User_Data (Itm  : Item) return User_Access;
-   --  AKA: item_userptr
-   --  Same as function
-   pragma Inline (Get_User_Data);
-
-end Terminal_Interface.Curses.Menus.Item_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm deleted file mode 100644 index 9c4e92f..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm +++ /dev/null @@ -1,82 +0,0 @@ - -terminal_interface-curses-menus-menu_user_data.adb - -

File : terminal_interface-curses-menus-menu_user_data.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Menus.Menu_User_Data             --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.13 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.Menus.Menu_User_Data is
-
-   use type Interfaces.C.int;
-
-   procedure Set_User_Data (Men  : Menu;
-                            Data : User_Access)
-   is
-      function Set_Menu_Userptr (Men  : Menu;
-                                 Data : User_Access)  return C_Int;
-      pragma Import (C, Set_Menu_Userptr, "set_menu_userptr");
-
-      Res : constant Eti_Error := Set_Menu_Userptr (Men, Data);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_User_Data;
-
-   function Get_User_Data (Men  : Menu) return User_Access
-   is
-      function Menu_Userptr (Men : Menu) return User_Access;
-      pragma Import (C, Menu_Userptr, "menu_userptr");
-   begin
-      return Menu_Userptr (Men);
-   end Get_User_Data;
-
-   procedure Get_User_Data (Men  : Menu;
-                            Data : out User_Access)
-   is
-   begin
-      Data := Get_User_Data (Men);
-   end Get_User_Data;
-
-end Terminal_Interface.Curses.Menus.Menu_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm deleted file mode 100644 index 7227641..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm +++ /dev/null @@ -1,75 +0,0 @@ - -terminal_interface-curses-menus-menu_user_data.ads - -

File : terminal_interface-curses-menus-menu_user_data.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Menus.Menu_User_Data             --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.15 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-generic
-   type User is limited private;
-   type User_Access is access User;
-package Terminal_Interface.Curses.Menus.Menu_User_Data is
-   pragma Preelaborate (Terminal_Interface.Curses.Menus.Menu_User_Data);
-
-   --  |=====================================================================
-   --  | Man page menu_userptr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   procedure Set_User_Data (Men  : Menu;
-                            Data : User_Access);
-   --  AKA: set_menu_userptr
-   pragma Inline (Set_User_Data);
-
-   --  #1A NAME="AFU_2"#2|
-   procedure Get_User_Data (Men  : Menu;
-                            Data : out User_Access);
-   --  AKA: menu_userptr
-
-   --  #1A NAME="AFU_3"#2|
-   function Get_User_Data (Men  : Menu) return User_Access;
-   --  AKA: menu_userptr
-   --  Same as function
-   pragma Inline (Get_User_Data);
-
-end Terminal_Interface.Curses.Menus.Menu_User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus__adb.htm deleted file mode 100644 index c51db28..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus__adb.htm +++ /dev/null @@ -1,1028 +0,0 @@ - -terminal_interface-curses-menus.adb - -

File : terminal_interface-curses-menus.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Menus                     --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.28 @
---  @Date: 2011/03/22 23:38:12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Unchecked_Deallocation;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-with Interfaces.C; use Interfaces.C;
-with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Interfaces.C.Pointers;
-
-with Ada.Unchecked_Conversion;
-
-package body Terminal_Interface.Curses.Menus is
-
-   type C_Item_Array is array (Natural range <>) of aliased Item;
-   package I_Array is new
-     Interfaces.C.Pointers (Natural, Item, C_Item_Array, Null_Item);
-
-   use type System.Bit_Order;
-   subtype chars_ptr is Interfaces.C.Strings.chars_ptr;
-
-   function MOS_2_CInt is new
-     Ada.Unchecked_Conversion (Menu_Option_Set,
-                               C_Int);
-
-   function CInt_2_MOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Menu_Option_Set);
-
-   function IOS_2_CInt is new
-     Ada.Unchecked_Conversion (Item_Option_Set,
-                               C_Int);
-
-   function CInt_2_IOS is new
-     Ada.Unchecked_Conversion (C_Int,
-                               Item_Option_Set);
-
-------------------------------------------------------------------------------
-   procedure Request_Name (Key  : Menu_Request_Code;
-                           Name : out String)
-   is
-      function Request_Name (Key : C_Int) return chars_ptr;
-      pragma Import (C, Request_Name, "menu_request_name");
-   begin
-      Fill_String (Request_Name (C_Int (Key)), Name);
-   end Request_Name;
-
-   function Request_Name (Key : Menu_Request_Code) return String
-   is
-      function Request_Name (Key : C_Int) return chars_ptr;
-      pragma Import (C, Request_Name, "menu_request_name");
-   begin
-      return Fill_String (Request_Name (C_Int (Key)));
-   end Request_Name;
-
-   function Create (Name        : String;
-                    Description : String := "") return Item
-   is
-      type Char_Ptr is access all Interfaces.C.char;
-      function Newitem (Name, Desc : Char_Ptr) return Item;
-      pragma Import (C, Newitem, "new_item");
-
-      type Name_String is new char_array (0 .. Name'Length);
-      type Name_String_Ptr is access Name_String;
-      pragma Controlled (Name_String_Ptr);
-
-      type Desc_String is new char_array (0 .. Description'Length);
-      type Desc_String_Ptr is access Desc_String;
-      pragma Controlled (Desc_String_Ptr);
-
-      Name_Str : constant Name_String_Ptr := new Name_String;
-      Desc_Str : constant Desc_String_Ptr := new Desc_String;
-      Name_Len, Desc_Len : size_t;
-      Result : Item;
-   begin
-      To_C (Name, Name_Str.all, Name_Len);
-      To_C (Description, Desc_Str.all, Desc_Len);
-      Result := Newitem (Name_Str.all (Name_Str.all'First)'Access,
-                         Desc_Str.all (Desc_Str.all'First)'Access);
-      if Result = Null_Item then
-         raise Eti_System_Error;
-      end if;
-      return Result;
-   end Create;
-
-   procedure Delete (Itm : in out Item)
-   is
-      function Descname (Itm  : Item) return chars_ptr;
-      pragma Import (C, Descname, "item_description");
-      function Itemname (Itm  : Item) return chars_ptr;
-      pragma Import (C, Itemname, "item_name");
-
-      function Freeitem (Itm : Item) return C_Int;
-      pragma Import (C, Freeitem, "free_item");
-
-      Res : Eti_Error;
-      Ptr : chars_ptr;
-   begin
-      Ptr := Descname (Itm);
-      if Ptr /= Null_Ptr then
-         Interfaces.C.Strings.Free (Ptr);
-      end if;
-      Ptr := Itemname (Itm);
-      if Ptr /= Null_Ptr then
-         Interfaces.C.Strings.Free (Ptr);
-      end if;
-      Res := Freeitem (Itm);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Itm := Null_Item;
-   end Delete;
--------------------------------------------------------------------------------
-   procedure Set_Value (Itm   : Item;
-                        Value : Boolean := True)
-   is
-      function Set_Item_Val (Itm : Item;
-                             Val : C_Int) return C_Int;
-      pragma Import (C, Set_Item_Val, "set_item_value");
-
-      Res : constant Eti_Error := Set_Item_Val (Itm, Boolean'Pos (Value));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Value;
-
-   function Value (Itm : Item) return Boolean
-   is
-      function Item_Val (Itm : Item) return C_Int;
-      pragma Import (C, Item_Val, "item_value");
-   begin
-      if Item_Val (Itm) = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Value;
-
--------------------------------------------------------------------------------
-   function Visible (Itm : Item) return Boolean
-   is
-      function Item_Vis (Itm : Item) return C_Int;
-      pragma Import (C, Item_Vis, "item_visible");
-   begin
-      if Item_Vis (Itm) = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Visible;
--------------------------------------------------------------------------------
-   procedure Set_Options (Itm     : Item;
-                          Options : Item_Option_Set)
-   is
-      function Set_Item_Opts (Itm : Item;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Set_Item_Opts, "set_item_opts");
-
-      Opt : constant C_Int := IOS_2_CInt (Options);
-      Res : Eti_Error;
-   begin
-      Res := Set_Item_Opts (Itm, Opt);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Options;
-
-   procedure Switch_Options (Itm     : Item;
-                             Options : Item_Option_Set;
-                             On      : Boolean := True)
-   is
-      function Item_Opts_On (Itm : Item;
-                             Opt : C_Int) return C_Int;
-      pragma Import (C, Item_Opts_On, "item_opts_on");
-      function Item_Opts_Off (Itm : Item;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Item_Opts_Off, "item_opts_off");
-
-      Opt : constant C_Int := IOS_2_CInt (Options);
-      Err : Eti_Error;
-   begin
-      if On then
-         Err := Item_Opts_On (Itm, Opt);
-      else
-         Err := Item_Opts_Off (Itm, Opt);
-      end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
-      end if;
-   end Switch_Options;
-
-   procedure Get_Options (Itm     : Item;
-                          Options : out Item_Option_Set)
-   is
-      function Item_Opts (Itm : Item) return C_Int;
-      pragma Import (C, Item_Opts, "item_opts");
-
-      Res : constant C_Int := Item_Opts (Itm);
-   begin
-      Options := CInt_2_IOS (Res);
-   end Get_Options;
-
-   function Get_Options (Itm : Item := Null_Item) return Item_Option_Set
-   is
-      Ios : Item_Option_Set;
-   begin
-      Get_Options (Itm, Ios);
-      return Ios;
-   end Get_Options;
--------------------------------------------------------------------------------
-   procedure Name (Itm  : Item;
-                   Name : out String)
-   is
-      function Itemname (Itm : Item) return chars_ptr;
-      pragma Import (C, Itemname, "item_name");
-   begin
-      Fill_String (Itemname (Itm), Name);
-   end Name;
-
-   function Name (Itm : Item) return String
-   is
-      function Itemname (Itm : Item) return chars_ptr;
-      pragma Import (C, Itemname, "item_name");
-   begin
-      return Fill_String (Itemname (Itm));
-   end Name;
-
-   procedure Description (Itm         : Item;
-                          Description : out String)
-   is
-      function Descname (Itm  : Item) return chars_ptr;
-      pragma Import (C, Descname, "item_description");
-   begin
-      Fill_String (Descname (Itm), Description);
-   end Description;
-
-   function Description (Itm : Item) return String
-   is
-      function Descname (Itm  : Item) return chars_ptr;
-      pragma Import (C, Descname, "item_description");
-   begin
-      return Fill_String (Descname (Itm));
-   end Description;
--------------------------------------------------------------------------------
-   procedure Set_Current (Men : Menu;
-                          Itm : Item)
-   is
-      function Set_Curr_Item (Men : Menu;
-                              Itm : Item) return C_Int;
-      pragma Import (C, Set_Curr_Item, "set_current_item");
-
-      Res : constant Eti_Error := Set_Curr_Item (Men, Itm);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Current;
-
-   function Current (Men : Menu) return Item
-   is
-      function Curr_Item (Men : Menu) return Item;
-      pragma Import (C, Curr_Item, "current_item");
-
-      Res : constant Item := Curr_Item (Men);
-   begin
-      if Res = Null_Item then
-         raise Menu_Exception;
-      end if;
-      return Res;
-   end Current;
-
-   procedure Set_Top_Row (Men  : Menu;
-                          Line : Line_Position)
-   is
-      function Set_Toprow (Men  : Menu;
-                           Line : C_Int) return C_Int;
-      pragma Import (C, Set_Toprow, "set_top_row");
-
-      Res : constant Eti_Error := Set_Toprow (Men, C_Int (Line));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Top_Row;
-
-   function Top_Row (Men : Menu) return Line_Position
-   is
-      function Toprow (Men : Menu) return C_Int;
-      pragma Import (C, Toprow, "top_row");
-
-      Res : constant C_Int := Toprow (Men);
-   begin
-      if Res = Curses_Err then
-         raise Menu_Exception;
-      end if;
-      return Line_Position (Res);
-   end Top_Row;
-
-   function Get_Index (Itm : Item) return Positive
-   is
-      function Get_Itemindex (Itm : Item) return C_Int;
-      pragma Import (C, Get_Itemindex, "item_index");
-
-      Res : constant C_Int := Get_Itemindex (Itm);
-   begin
-      if Res = Curses_Err then
-         raise Menu_Exception;
-      end if;
-      return Positive (Natural (Res) + Positive'First);
-   end Get_Index;
--------------------------------------------------------------------------------
-   procedure Post (Men  : Menu;
-                   Post : Boolean := True)
-   is
-      function M_Post (Men : Menu) return C_Int;
-      pragma Import (C, M_Post, "post_menu");
-      function M_Unpost (Men : Menu) return C_Int;
-      pragma Import (C, M_Unpost, "unpost_menu");
-
-      Res : Eti_Error;
-   begin
-      if Post then
-         Res := M_Post (Men);
-      else
-         Res := M_Unpost (Men);
-      end if;
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Post;
--------------------------------------------------------------------------------
-   procedure Set_Options (Men     : Menu;
-                          Options : Menu_Option_Set)
-   is
-      function Set_Menu_Opts (Men : Menu;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Set_Menu_Opts, "set_menu_opts");
-
-      Opt : constant C_Int := MOS_2_CInt (Options);
-      Res : Eti_Error;
-   begin
-      Res := Set_Menu_Opts (Men, Opt);
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Options;
-
-   procedure Switch_Options (Men     : Menu;
-                             Options : Menu_Option_Set;
-                             On      : Boolean := True)
-   is
-      function Menu_Opts_On (Men : Menu;
-                             Opt : C_Int) return C_Int;
-      pragma Import (C, Menu_Opts_On, "menu_opts_on");
-      function Menu_Opts_Off (Men : Menu;
-                              Opt : C_Int) return C_Int;
-      pragma Import (C, Menu_Opts_Off, "menu_opts_off");
-
-      Opt : constant C_Int := MOS_2_CInt (Options);
-      Err : Eti_Error;
-   begin
-      if On then
-         Err := Menu_Opts_On  (Men, Opt);
-      else
-         Err := Menu_Opts_Off (Men, Opt);
-      end if;
-      if Err /= E_Ok then
-         Eti_Exception (Err);
-      end if;
-   end Switch_Options;
-
-   procedure Get_Options (Men     : Menu;
-                          Options : out Menu_Option_Set)
-   is
-      function Menu_Opts (Men : Menu) return C_Int;
-      pragma Import (C, Menu_Opts, "menu_opts");
-
-      Res : constant C_Int := Menu_Opts (Men);
-   begin
-      Options := CInt_2_MOS (Res);
-   end Get_Options;
-
-   function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set
-   is
-      Mos : Menu_Option_Set;
-   begin
-      Get_Options (Men, Mos);
-      return Mos;
-   end Get_Options;
--------------------------------------------------------------------------------
-   procedure Set_Window (Men : Menu;
-                         Win : Window)
-   is
-      function Set_Menu_Win (Men : Menu;
-                             Win : Window) return C_Int;
-      pragma Import (C, Set_Menu_Win, "set_menu_win");
-
-      Res : constant Eti_Error := Set_Menu_Win (Men, Win);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Window;
-
-   function Get_Window (Men : Menu) return Window
-   is
-      function Menu_Win (Men : Menu) return Window;
-      pragma Import (C, Menu_Win, "menu_win");
-
-      W : constant Window := Menu_Win (Men);
-   begin
-      return W;
-   end Get_Window;
-
-   procedure Set_Sub_Window (Men : Menu;
-                             Win : Window)
-   is
-      function Set_Menu_Sub (Men : Menu;
-                             Win : Window) return C_Int;
-      pragma Import (C, Set_Menu_Sub, "set_menu_sub");
-
-      Res : constant Eti_Error := Set_Menu_Sub (Men, Win);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Sub_Window;
-
-   function Get_Sub_Window (Men : Menu) return Window
-   is
-      function Menu_Sub (Men : Menu) return Window;
-      pragma Import (C, Menu_Sub, "menu_sub");
-
-      W : constant Window := Menu_Sub (Men);
-   begin
-      return W;
-   end Get_Sub_Window;
-
-   procedure Scale (Men     : Menu;
-                    Lines   : out Line_Count;
-                    Columns : out Column_Count)
-   is
-      type C_Int_Access is access all C_Int;
-      function M_Scale (Men    : Menu;
-                        Yp, Xp : C_Int_Access) return C_Int;
-      pragma Import (C, M_Scale, "scale_menu");
-
-      X, Y : aliased C_Int;
-      Res  : constant Eti_Error := M_Scale (Men, Y'Access, X'Access);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Lines := Line_Count (Y);
-      Columns := Column_Count (X);
-   end Scale;
--------------------------------------------------------------------------------
-   procedure Position_Cursor (Men : Menu)
-   is
-      function Pos_Menu_Cursor (Men : Menu) return C_Int;
-      pragma Import (C, Pos_Menu_Cursor, "pos_menu_cursor");
-
-      Res : constant Eti_Error := Pos_Menu_Cursor (Men);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Position_Cursor;
-
--------------------------------------------------------------------------------
-   procedure Set_Mark (Men  : Menu;
-                       Mark : String)
-   is
-      type Char_Ptr is access all Interfaces.C.char;
-      function Set_Mark (Men  : Menu;
-                         Mark : Char_Ptr) return C_Int;
-      pragma Import (C, Set_Mark, "set_menu_mark");
-
-      Txt : char_array (0 .. Mark'Length);
-      Len : size_t;
-      Res : Eti_Error;
-   begin
-      To_C (Mark, Txt, Len);
-      Res := Set_Mark (Men, Txt (Txt'First)'Access);
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Mark;
-
-   procedure Mark (Men  : Menu;
-                   Mark : out String)
-   is
-      function Get_Menu_Mark (Men : Menu) return chars_ptr;
-      pragma Import (C, Get_Menu_Mark, "menu_mark");
-   begin
-      Fill_String (Get_Menu_Mark (Men), Mark);
-   end Mark;
-
-   function Mark (Men : Menu) return String
-   is
-      function Get_Menu_Mark (Men : Menu) return chars_ptr;
-      pragma Import (C, Get_Menu_Mark, "menu_mark");
-   begin
-      return Fill_String (Get_Menu_Mark (Men));
-   end Mark;
-
--------------------------------------------------------------------------------
-   procedure Set_Foreground
-     (Men   : Menu;
-      Fore  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First)
-   is
-      function Set_Menu_Fore (Men  : Menu;
-                              Attr : C_Chtype) return C_Int;
-      pragma Import (C, Set_Menu_Fore, "set_menu_fore");
-
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Color => Color,
-                                             Attr  => Fore);
-      Res : constant Eti_Error := Set_Menu_Fore (Men, AttrChar_To_Chtype (Ch));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Foreground;
-
-   procedure Foreground (Men  : Menu;
-                         Fore : out Character_Attribute_Set)
-   is
-      function Menu_Fore (Men : Menu) return C_Chtype;
-      pragma Import (C, Menu_Fore, "menu_fore");
-   begin
-      Fore := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
-   end Foreground;
-
-   procedure Foreground (Men   : Menu;
-                         Fore  : out Character_Attribute_Set;
-                         Color : out Color_Pair)
-   is
-      function Menu_Fore (Men : Menu) return C_Chtype;
-      pragma Import (C, Menu_Fore, "menu_fore");
-   begin
-      Fore  := Chtype_To_AttrChar (Menu_Fore (Men)).Attr;
-      Color := Chtype_To_AttrChar (Menu_Fore (Men)).Color;
-   end Foreground;
-
-   procedure Set_Background
-     (Men   : Menu;
-      Back  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First)
-   is
-      function Set_Menu_Back (Men  : Menu;
-                              Attr : C_Chtype) return C_Int;
-      pragma Import (C, Set_Menu_Back, "set_menu_back");
-
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Color => Color,
-                                             Attr  => Back);
-      Res : constant Eti_Error := Set_Menu_Back (Men, AttrChar_To_Chtype (Ch));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Background;
-
-   procedure Background (Men  : Menu;
-                         Back : out Character_Attribute_Set)
-   is
-      function Menu_Back (Men : Menu) return C_Chtype;
-      pragma Import (C, Menu_Back, "menu_back");
-   begin
-      Back := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
-   end Background;
-
-   procedure Background (Men   : Menu;
-                         Back  : out Character_Attribute_Set;
-                         Color : out Color_Pair)
-   is
-      function Menu_Back (Men : Menu) return C_Chtype;
-      pragma Import (C, Menu_Back, "menu_back");
-   begin
-      Back  := Chtype_To_AttrChar (Menu_Back (Men)).Attr;
-      Color := Chtype_To_AttrChar (Menu_Back (Men)).Color;
-   end Background;
-
-   procedure Set_Grey (Men   : Menu;
-                       Grey  : Character_Attribute_Set := Normal_Video;
-                       Color : Color_Pair := Color_Pair'First)
-   is
-      function Set_Menu_Grey (Men  : Menu;
-                              Attr : C_Chtype) return C_Int;
-      pragma Import (C, Set_Menu_Grey, "set_menu_grey");
-
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Color => Color,
-                                             Attr  => Grey);
-
-      Res : constant Eti_Error := Set_Menu_Grey (Men, AttrChar_To_Chtype (Ch));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Grey;
-
-   procedure Grey (Men  : Menu;
-                   Grey : out Character_Attribute_Set)
-   is
-      function Menu_Grey (Men : Menu) return C_Chtype;
-      pragma Import (C, Menu_Grey, "menu_grey");
-   begin
-      Grey := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
-   end Grey;
-
-   procedure Grey (Men  : Menu;
-                   Grey : out Character_Attribute_Set;
-                   Color : out Color_Pair)
-   is
-      function Menu_Grey (Men : Menu) return C_Chtype;
-      pragma Import (C, Menu_Grey, "menu_grey");
-   begin
-      Grey  := Chtype_To_AttrChar (Menu_Grey (Men)).Attr;
-      Color := Chtype_To_AttrChar (Menu_Grey (Men)).Color;
-   end Grey;
-
-   procedure Set_Pad_Character (Men : Menu;
-                                Pad : Character := Space)
-   is
-      function Set_Menu_Pad (Men : Menu;
-                             Ch  : C_Int) return C_Int;
-      pragma Import (C, Set_Menu_Pad, "set_menu_pad");
-
-      Res : constant Eti_Error := Set_Menu_Pad (Men,
-                                                C_Int (Character'Pos (Pad)));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Pad_Character;
-
-   procedure Pad_Character (Men : Menu;
-                            Pad : out Character)
-   is
-      function Menu_Pad (Men : Menu) return C_Int;
-      pragma Import (C, Menu_Pad, "menu_pad");
-   begin
-      Pad := Character'Val (Menu_Pad (Men));
-   end Pad_Character;
--------------------------------------------------------------------------------
-   procedure Set_Spacing (Men   : Menu;
-                          Descr : Column_Position := 0;
-                          Row   : Line_Position   := 0;
-                          Col   : Column_Position := 0)
-   is
-      function Set_Spacing (Men     : Menu;
-                            D, R, C : C_Int) return C_Int;
-      pragma Import (C, Set_Spacing, "set_menu_spacing");
-
-      Res : constant Eti_Error := Set_Spacing (Men,
-                                               C_Int (Descr),
-                                               C_Int (Row),
-                                               C_Int (Col));
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Spacing;
-
-   procedure Spacing (Men   : Menu;
-                      Descr : out Column_Position;
-                      Row   : out Line_Position;
-                      Col   : out Column_Position)
-   is
-      type C_Int_Access is access all C_Int;
-      function Get_Spacing (Men     : Menu;
-                            D, R, C : C_Int_Access) return C_Int;
-      pragma Import (C, Get_Spacing, "menu_spacing");
-
-      D, R, C : aliased C_Int;
-      Res : constant Eti_Error := Get_Spacing (Men,
-                                               D'Access,
-                                               R'Access,
-                                               C'Access);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      else
-         Descr := Column_Position (D);
-         Row   := Line_Position (R);
-         Col   := Column_Position (C);
-      end if;
-   end Spacing;
--------------------------------------------------------------------------------
-   function Set_Pattern (Men  : Menu;
-                         Text : String) return Boolean
-   is
-      type Char_Ptr is access all Interfaces.C.char;
-      function Set_Pattern (Men     : Menu;
-                            Pattern : Char_Ptr) return C_Int;
-      pragma Import (C, Set_Pattern, "set_menu_pattern");
-
-      S   : char_array (0 .. Text'Length);
-      L   : size_t;
-      Res : Eti_Error;
-   begin
-      To_C (Text, S, L);
-      Res := Set_Pattern (Men, S (S'First)'Access);
-      case Res is
-         when E_No_Match => return False;
-         when E_Ok       => return True;
-         when others =>
-            Eti_Exception (Res);
-            return False;
-      end case;
-   end Set_Pattern;
-
-   procedure Pattern (Men  : Menu;
-                      Text : out String)
-   is
-      function Get_Pattern (Men : Menu) return chars_ptr;
-      pragma Import (C, Get_Pattern, "menu_pattern");
-   begin
-      Fill_String (Get_Pattern (Men), Text);
-   end Pattern;
--------------------------------------------------------------------------------
-   procedure Set_Format (Men     : Menu;
-                         Lines   : Line_Count;
-                         Columns : Column_Count)
-   is
-      function Set_Menu_Fmt (Men : Menu;
-                             Lin : C_Int;
-                             Col : C_Int) return C_Int;
-      pragma Import (C, Set_Menu_Fmt, "set_menu_format");
-
-      Res : constant Eti_Error := Set_Menu_Fmt (Men,
-                                                C_Int (Lines),
-                                                C_Int (Columns));
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Format;
-
-   procedure Format (Men     : Menu;
-                     Lines   : out Line_Count;
-                     Columns : out Column_Count)
-   is
-      type C_Int_Access is access all C_Int;
-      function Menu_Fmt (Men  : Menu;
-                         Y, X : C_Int_Access) return C_Int;
-      pragma Import (C, Menu_Fmt, "menu_format");
-
-      L, C : aliased C_Int;
-      Res  : constant Eti_Error := Menu_Fmt (Men, L'Access, C'Access);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      else
-         Lines   := Line_Count (L);
-         Columns := Column_Count (C);
-      end if;
-   end Format;
--------------------------------------------------------------------------------
-   procedure Set_Item_Init_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function)
-   is
-      function Set_Item_Init (Men  : Menu;
-                              Proc : Menu_Hook_Function) return C_Int;
-      pragma Import (C, Set_Item_Init, "set_item_init");
-
-      Res : constant Eti_Error := Set_Item_Init (Men, Proc);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Item_Init_Hook;
-
-   procedure Set_Item_Term_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function)
-   is
-      function Set_Item_Term (Men  : Menu;
-                              Proc : Menu_Hook_Function) return C_Int;
-      pragma Import (C, Set_Item_Term, "set_item_term");
-
-      Res : constant Eti_Error := Set_Item_Term (Men, Proc);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Item_Term_Hook;
-
-   procedure Set_Menu_Init_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function)
-   is
-      function Set_Menu_Init (Men  : Menu;
-                              Proc : Menu_Hook_Function) return C_Int;
-      pragma Import (C, Set_Menu_Init, "set_menu_init");
-
-      Res : constant Eti_Error := Set_Menu_Init (Men, Proc);
-   begin
-      if  Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Menu_Init_Hook;
-
-   procedure Set_Menu_Term_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function)
-   is
-      function Set_Menu_Term (Men  : Menu;
-                              Proc : Menu_Hook_Function) return C_Int;
-      pragma Import (C, Set_Menu_Term, "set_menu_term");
-
-      Res : constant Eti_Error := Set_Menu_Term (Men, Proc);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-   end Set_Menu_Term_Hook;
-
-   function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function
-   is
-      function Item_Init (Men : Menu) return Menu_Hook_Function;
-      pragma Import (C, Item_Init, "item_init");
-   begin
-      return Item_Init (Men);
-   end Get_Item_Init_Hook;
-
-   function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function
-   is
-      function Item_Term (Men : Menu) return Menu_Hook_Function;
-      pragma Import (C, Item_Term, "item_term");
-   begin
-      return Item_Term (Men);
-   end Get_Item_Term_Hook;
-
-   function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function
-   is
-      function Menu_Init (Men : Menu) return Menu_Hook_Function;
-      pragma Import (C, Menu_Init, "menu_init");
-   begin
-      return Menu_Init (Men);
-   end Get_Menu_Init_Hook;
-
-   function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function
-   is
-      function Menu_Term (Men : Menu) return Menu_Hook_Function;
-      pragma Import (C, Menu_Term, "menu_term");
-   begin
-      return Menu_Term (Men);
-   end Get_Menu_Term_Hook;
--------------------------------------------------------------------------------
-   procedure Redefine (Men   : Menu;
-                       Items : Item_Array_Access)
-   is
-      function Set_Items (Men   : Menu;
-                          Items : System.Address) return C_Int;
-      pragma Import (C, Set_Items, "set_menu_items");
-
-      Res : Eti_Error;
-   begin
-      pragma Assert (Items.all (Items'Last) = Null_Item);
-      if Items.all (Items'Last) /= Null_Item then
-         raise Menu_Exception;
-      else
-         Res := Set_Items (Men, Items.all'Address);
-         if  Res /= E_Ok then
-            Eti_Exception (Res);
-         end if;
-      end if;
-   end Redefine;
-
-   function Item_Count (Men : Menu) return Natural
-   is
-      function Count (Men : Menu) return C_Int;
-      pragma Import (C, Count, "item_count");
-   begin
-      return Natural (Count (Men));
-   end Item_Count;
-
-   function Items (Men   : Menu;
-                   Index : Positive) return Item
-   is
-      use I_Array;
-
-      function C_Mitems (Men : Menu) return Pointer;
-      pragma Import (C, C_Mitems, "menu_items");
-
-      P : Pointer := C_Mitems (Men);
-   begin
-      if P = null or else Index > Item_Count (Men) then
-         raise Menu_Exception;
-      else
-         P := P + ptrdiff_t (C_Int (Index) - 1);
-         return P.all;
-      end if;
-   end Items;
-
--------------------------------------------------------------------------------
-   function Create (Items : Item_Array_Access) return Menu
-   is
-      function Newmenu (Items : System.Address) return Menu;
-      pragma Import (C, Newmenu, "new_menu");
-
-      M   : Menu;
-   begin
-      pragma Assert (Items.all (Items'Last) = Null_Item);
-      if Items.all (Items'Last) /= Null_Item then
-         raise Menu_Exception;
-      else
-         M := Newmenu (Items.all'Address);
-         if M = Null_Menu then
-            raise Menu_Exception;
-         end if;
-         return M;
-      end if;
-   end Create;
-
-   procedure Delete (Men : in out Menu)
-   is
-      function Free (Men : Menu) return C_Int;
-      pragma Import (C, Free, "free_menu");
-
-      Res : constant Eti_Error := Free (Men);
-   begin
-      if Res /= E_Ok then
-         Eti_Exception (Res);
-      end if;
-      Men := Null_Menu;
-   end Delete;
-
-------------------------------------------------------------------------------
-   function Driver (Men : Menu;
-                    Key : Key_Code) return Driver_Result
-   is
-      function Driver (Men : Menu;
-                       Key : C_Int) return C_Int;
-      pragma Import (C, Driver, "menu_driver");
-
-      R : constant Eti_Error := Driver (Men, C_Int (Key));
-   begin
-      if R /= E_Ok then
-         case R is
-            when E_Unknown_Command  => return Unknown_Request;
-            when E_No_Match         => return No_Match;
-            when E_Request_Denied |
-                 E_Not_Selectable   => return Request_Denied;
-            when others =>
-               Eti_Exception (R);
-         end case;
-      end if;
-      return Menu_Ok;
-   end Driver;
-
-   procedure Free (IA         : in out Item_Array_Access;
-                   Free_Items : Boolean := False)
-   is
-      procedure Release is new Ada.Unchecked_Deallocation
-        (Item_Array, Item_Array_Access);
-   begin
-      if IA /= null and then Free_Items then
-         for I in IA'First .. (IA'Last - 1) loop
-            if IA.all (I) /= Null_Item then
-               Delete (IA.all (I));
-            end if;
-         end loop;
-      end if;
-      Release (IA);
-   end Free;
-
--------------------------------------------------------------------------------
-   function Default_Menu_Options return Menu_Option_Set
-   is
-   begin
-      return Get_Options (Null_Menu);
-   end Default_Menu_Options;
-
-   function Default_Item_Options return Item_Option_Set
-   is
-   begin
-      return Get_Options (Null_Item);
-   end Default_Item_Options;
--------------------------------------------------------------------------------
-
-end Terminal_Interface.Curses.Menus;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus__ads.htm deleted file mode 100644 index a022065..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-menus__ads.htm +++ /dev/null @@ -1,685 +0,0 @@ - -terminal_interface-curses-menus.ads - -

File : terminal_interface-curses-menus.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Menu                      --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2007,2009 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, 1996
---  Version Control:
---  @Revision: 1.28 @
---  @Date: 2009/12/26 18:35:22 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
---  menu binding.
---  This module is generated. Please don't change it manually!
---  Run the generator instead.
---  |
-with System;
-with Ada.Characters.Latin_1;
-
-package Terminal_Interface.Curses.Menus is
-   pragma Preelaborate (Terminal_Interface.Curses.Menus);
-   pragma Linker_Options ("-lmenu");
-   pragma Linker_Options ("-lncurses");
-
-   Space : Character renames Ada.Characters.Latin_1.Space;
-
-   type Item is private;
-   type Menu is private;
-
-   ---------------------------
-   --  Interface constants  --
-   ---------------------------
-   Null_Item : constant Item;
-   Null_Menu : constant Menu;
-
-   subtype Menu_Request_Code is Key_Code
-     range (Key_Max + 1) .. (Key_Max + 17);
-
-   --  The prefix M_ stands for "Menu Request"
-   M_Left_Item       : constant Menu_Request_Code := Key_Max + 1;
-   M_Right_Item      : constant Menu_Request_Code := Key_Max + 2;
-   M_Up_Item         : constant Menu_Request_Code := Key_Max + 3;
-   M_Down_Item       : constant Menu_Request_Code := Key_Max + 4;
-   M_ScrollUp_Line   : constant Menu_Request_Code := Key_Max + 5;
-   M_ScrollDown_Line : constant Menu_Request_Code := Key_Max + 6;
-   M_ScrollDown_Page : constant Menu_Request_Code := Key_Max + 7;
-   M_ScrollUp_Page   : constant Menu_Request_Code := Key_Max + 8;
-   M_First_Item      : constant Menu_Request_Code := Key_Max + 9;
-   M_Last_Item       : constant Menu_Request_Code := Key_Max + 10;
-   M_Next_Item       : constant Menu_Request_Code := Key_Max + 11;
-   M_Previous_Item   : constant Menu_Request_Code := Key_Max + 12;
-   M_Toggle_Item     : constant Menu_Request_Code := Key_Max + 13;
-   M_Clear_Pattern   : constant Menu_Request_Code := Key_Max + 14;
-   M_Back_Pattern    : constant Menu_Request_Code := Key_Max + 15;
-   M_Next_Match      : constant Menu_Request_Code := Key_Max + 16;
-   M_Previous_Match  : constant Menu_Request_Code := Key_Max + 17;
-
-   --  For those who like the old 'C' names for the request codes
-   REQ_LEFT_ITEM     : Menu_Request_Code renames M_Left_Item;
-   REQ_RIGHT_ITEM    : Menu_Request_Code renames M_Right_Item;
-   REQ_UP_ITEM       : Menu_Request_Code renames M_Up_Item;
-   REQ_DOWN_ITEM     : Menu_Request_Code renames M_Down_Item;
-   REQ_SCR_ULINE     : Menu_Request_Code renames M_ScrollUp_Line;
-   REQ_SCR_DLINE     : Menu_Request_Code renames M_ScrollDown_Line;
-   REQ_SCR_DPAGE     : Menu_Request_Code renames M_ScrollDown_Page;
-   REQ_SCR_UPAGE     : Menu_Request_Code renames M_ScrollUp_Page;
-   REQ_FIRST_ITEM    : Menu_Request_Code renames M_First_Item;
-   REQ_LAST_ITEM     : Menu_Request_Code renames M_Last_Item;
-   REQ_NEXT_ITEM     : Menu_Request_Code renames M_Next_Item;
-   REQ_PREV_ITEM     : Menu_Request_Code renames M_Previous_Item;
-   REQ_TOGGLE_ITEM   : Menu_Request_Code renames M_Toggle_Item;
-   REQ_CLEAR_PATTERN : Menu_Request_Code renames M_Clear_Pattern;
-   REQ_BACK_PATTERN  : Menu_Request_Code renames M_Back_Pattern;
-   REQ_NEXT_MATCH    : Menu_Request_Code renames M_Next_Match;
-   REQ_PREV_MATCH    : Menu_Request_Code renames M_Previous_Match;
-
-   procedure Request_Name (Key  : Menu_Request_Code;
-                           Name : out String);
-
-   function  Request_Name (Key : Menu_Request_Code) return String;
-   --  Same as function
-
-   ------------------
-   --  Exceptions  --
-   ------------------
-
-   Menu_Exception : exception;
-   --
-   --  Menu options
-   --
-   pragma Warnings (Off);
-   type Menu_Option_Set is
-      record
-         One_Valued        : Boolean;
-         Show_Descriptions : Boolean;
-         Row_Major_Order   : Boolean;
-         Ignore_Case       : Boolean;
-         Show_Matches      : Boolean;
-         Non_Cyclic        : Boolean;
-         Unused            : Boolean;
-      end record;
-   pragma Convention (C, Menu_Option_Set);
-
-   for Menu_Option_Set use
-      record
-         One_Valued        at 0 range  0 ..  0;
-         Show_Descriptions at 0 range  1 ..  1;
-         Row_Major_Order   at 0 range  2 ..  2;
-         Ignore_Case       at 0 range  3 ..  3;
-         Show_Matches      at 0 range  4 ..  4;
-         Non_Cyclic        at 0 range  5 ..  5;
-         Unused            at 0 range  6 .. 31;
-      end record;
-   for Menu_Option_Set'Size use 32;
-   --  Please note: this rep. clause is generated and may be
-   --               different on your system.
-   pragma Warnings (On);
-
-   function Default_Menu_Options return Menu_Option_Set;
-   --  Initial default options for a menu.
-   pragma Inline (Default_Menu_Options);
-   --
-   --  Item options
-   --
-   pragma Warnings (Off);
-   type Item_Option_Set is
-      record
-         Selectable  : Boolean;
-         Unused      : Boolean;
-      end record;
-   pragma Convention (C, Item_Option_Set);
-
-   for Item_Option_Set use
-      record
-         Selectable  at 0 range  0 ..  0;
-         Unused      at 0 range  1 .. 31;
-      end record;
-   for Item_Option_Set'Size use 32;
-   --  Please note: this rep. clause is generated and may be
-   --               different on your system.
-   pragma Warnings (On);
-
-   function Default_Item_Options return Item_Option_Set;
-   --  Initial default options for an item.
-   pragma Inline (Default_Item_Options);
-
-   --
-   --  Item Array
-   --
-   type Item_Array is array (Positive range <>) of aliased Item;
-   pragma Convention (C, Item_Array);
-
-   type Item_Array_Access is access Item_Array;
-
-   procedure Free (IA         : in out Item_Array_Access;
-                   Free_Items : Boolean := False);
-   --  Release the memory for an allocated item array
-   --  If Free_Items is True, call Delete() for all the items in
-   --  the array.
-
-   --  |=====================================================================
-   --  | Man page mitem_new.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   function Create (Name        : String;
-                    Description : String := "") return Item;
-   --  AKA: new_item()
-   --  Not inlined.
-
-   --  #1A NAME="AFU_2"#2|
-   function New_Item (Name        : String;
-                      Description : String := "") return Item
-     renames Create;
-   --  AKA: new_item()
-
-   --  #1A NAME="AFU_3"#2|
-   procedure Delete (Itm : in out Item);
-   --  AKA: free_item()
-   --  Resets Itm to Null_Item
-
-   --  |=====================================================================
-   --  | Man page mitem_value.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_4"#2|
-   procedure Set_Value (Itm   : Item;
-                        Value : Boolean := True);
-   --  AKA: set_item_value()
-   pragma Inline (Set_Value);
-
-   --  #1A NAME="AFU_5"#2|
-   function Value (Itm : Item) return Boolean;
-   --  AKA: item_value()
-   pragma Inline (Value);
-
-   --  |=====================================================================
-   --  | Man page mitem_visible.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_6"#2|
-   function Visible (Itm : Item) return Boolean;
-   --  AKA: item_visible()
-   pragma Inline (Visible);
-
-   --  |=====================================================================
-   --  | Man page mitem_opts.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_7"#2|
-   procedure Set_Options (Itm     : Item;
-                          Options : Item_Option_Set);
-   --  AKA: set_item_opts()
-   --  An overloaded Set_Options is defined later. Pragma Inline appears there
-
-   --  #1A NAME="AFU_8"#2|
-   procedure Switch_Options (Itm     : Item;
-                             Options : Item_Option_Set;
-                             On      : Boolean := True);
-   --  AKA: item_opts_on()
-   --  AKA: item_opts_off()
-   --  An overloaded Switch_Options is defined later.
-   --  Pragma Inline appears there
-
-   --  #1A NAME="AFU_9"#2|
-   procedure Get_Options (Itm     : Item;
-                          Options : out Item_Option_Set);
-   --  AKA: item_opts()
-
-   --  #1A NAME="AFU_10"#2|
-   function Get_Options (Itm : Item := Null_Item) return Item_Option_Set;
-   --  AKA: item_opts()
-   --  An overloaded Get_Options is defined later. Pragma Inline appears there
-
-   --  |=====================================================================
-   --  | Man page mitem_name.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_11"#2|
-   procedure Name (Itm  : Item;
-                   Name : out String);
-   --  AKA: item_name()
-   function  Name (Itm : Item) return String;
-   --  AKA: item_name()
-   --  Implemented as function
-   pragma Inline (Name);
-
-   --  #1A NAME="AFU_12"#2|
-   procedure Description (Itm         : Item;
-                          Description : out String);
-   --  AKA: item_description();
-
-   function  Description (Itm : Item) return String;
-   --  AKA: item_description();
-   --  Implemented as function
-   pragma Inline (Description);
-
-   --  |=====================================================================
-   --  | Man page mitem_current.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_13"#2|
-   procedure Set_Current (Men : Menu;
-                          Itm : Item);
-   --  AKA: set_current_item()
-   pragma Inline (Set_Current);
-
-   --  #1A NAME="AFU_14"#2|
-   function Current (Men : Menu) return Item;
-   --  AKA: current_item()
-   pragma Inline (Current);
-
-   --  #1A NAME="AFU_15"#2|
-   procedure Set_Top_Row (Men  : Menu;
-                          Line : Line_Position);
-   --  AKA: set_top_row()
-   pragma Inline (Set_Top_Row);
-
-   --  #1A NAME="AFU_16"#2|
-   function Top_Row (Men : Menu) return Line_Position;
-   --  AKA: top_row()
-   pragma Inline (Top_Row);
-
-   --  #1A NAME="AFU_17"#2|
-   function Get_Index (Itm : Item) return Positive;
-   --  AKA: item_index()
-   --  Please note that in this binding we start the numbering of items
-   --  with 1. So this is number is one more than you get from the low
-   --  level call.
-   pragma Inline (Get_Index);
-
-   --  |=====================================================================
-   --  | Man page menu_post.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_18"#2|
-   procedure Post (Men  : Menu;
-                   Post : Boolean := True);
-   --  AKA: post_menu()
-   --  AKA: unpost_menu()
-   pragma Inline (Post);
-
-   --  |=====================================================================
-   --  | Man page menu_opts.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_19"#2|
-   procedure Set_Options (Men     : Menu;
-                          Options : Menu_Option_Set);
-   --  AKA: set_menu_opts()
-   pragma Inline (Set_Options);
-
-   --  #1A NAME="AFU_20"#2|
-   procedure Switch_Options (Men     : Menu;
-                             Options : Menu_Option_Set;
-                             On      : Boolean := True);
-   --  AKA: menu_opts_on()
-   --  AKA: menu_opts_off()
-   pragma Inline (Switch_Options);
-
-   --  #1A NAME="AFU_21"#2|
-   procedure Get_Options (Men     : Menu;
-                          Options : out Menu_Option_Set);
-   --  AKA: menu_opts()
-
-   --  #1A NAME="AFU_22"#2|
-   function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set;
-   --  AKA: menu_opts()
-   pragma Inline (Get_Options);
-
-   --  |=====================================================================
-   --  | Man page menu_win.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_23"#2|
-   procedure Set_Window (Men : Menu;
-                         Win : Window);
-   --  AKA: set_menu_win()
-   pragma Inline (Set_Window);
-
-   --  #1A NAME="AFU_24"#2|
-   function Get_Window (Men : Menu) return Window;
-   --  AKA: menu_win()
-   pragma Inline (Get_Window);
-
-   --  #1A NAME="AFU_25"#2|
-   procedure Set_Sub_Window (Men : Menu;
-                             Win : Window);
-   --  AKA: set_menu_sub()
-   pragma Inline (Set_Sub_Window);
-
-   --  #1A NAME="AFU_26"#2|
-   function Get_Sub_Window (Men : Menu) return Window;
-   --  AKA: menu_sub()
-   pragma Inline (Get_Sub_Window);
-
-   --  #1A NAME="AFU_27"#2|
-   procedure Scale (Men     : Menu;
-                    Lines   : out Line_Count;
-                    Columns : out Column_Count);
-   --  AKA: scale_menu()
-   pragma Inline (Scale);
-
-   --  |=====================================================================
-   --  | Man page menu_cursor.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_28"#2|
-   procedure Position_Cursor (Men : Menu);
-   --  AKA: pos_menu_cursor()
-   pragma Inline (Position_Cursor);
-
-   --  |=====================================================================
-   --  | Man page menu_mark.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_29"#2|
-   procedure Set_Mark (Men  : Menu;
-                       Mark : String);
-   --  AKA: set_menu_mark()
-   pragma Inline (Set_Mark);
-
-   --  #1A NAME="AFU_30"#2|
-   procedure Mark (Men  : Menu;
-                   Mark : out String);
-   --  AKA: menu_mark()
-
-   function  Mark (Men : Menu) return String;
-   --  AKA: menu_mark()
-   --  Implemented as function
-   pragma Inline (Mark);
-
-   --  |=====================================================================
-   --  | Man page menu_attributes.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_31"#2|
-   procedure Set_Foreground
-     (Men   : Menu;
-      Fore  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: set_menu_fore()
-   pragma Inline (Set_Foreground);
-
-   --  #1A NAME="AFU_32"#2|
-   procedure Foreground (Men   : Menu;
-                         Fore  : out Character_Attribute_Set);
-   --  AKA: menu_fore()
-
-   --  #1A NAME="AFU_33"#2|
-   procedure Foreground (Men   : Menu;
-                         Fore  : out Character_Attribute_Set;
-                         Color : out Color_Pair);
-   --  AKA: menu_fore()
-   pragma Inline (Foreground);
-
-   --  #1A NAME="AFU_34"#2|
-   procedure Set_Background
-     (Men   : Menu;
-      Back  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: set_menu_back()
-   pragma Inline (Set_Background);
-
-   --  #1A NAME="AFU_35"#2|
-   procedure Background (Men  : Menu;
-                         Back : out Character_Attribute_Set);
-   --  AKA: menu_back()
-   --  #1A NAME="AFU_36"#2|
-
-   procedure Background (Men   : Menu;
-                         Back  : out Character_Attribute_Set;
-                         Color : out Color_Pair);
-   --  AKA: menu_back()
-   pragma Inline (Background);
-
-   --  #1A NAME="AFU_37"#2|
-   procedure Set_Grey
-     (Men   : Menu;
-      Grey  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: set_menu_grey()
-   pragma Inline (Set_Grey);
-
-   --  #1A NAME="AFU_38"#2|
-   procedure Grey (Men  : Menu;
-                   Grey : out Character_Attribute_Set);
-   --  AKA: menu_grey()
-
-   --  #1A NAME="AFU_39"#2|
-   procedure Grey
-     (Men   : Menu;
-      Grey  : out Character_Attribute_Set;
-      Color : out Color_Pair);
-   --  AKA: menu_grey()
-   pragma Inline (Grey);
-
-   --  #1A NAME="AFU_40"#2|
-   procedure Set_Pad_Character (Men : Menu;
-                                Pad : Character := Space);
-   --  AKA: set_menu_pad()
-   pragma Inline (Set_Pad_Character);
-
-   --  #1A NAME="AFU_41"#2|
-   procedure Pad_Character (Men : Menu;
-                            Pad : out Character);
-   --  AKA: menu_pad()
-   pragma Inline (Pad_Character);
-
-   --  |=====================================================================
-   --  | Man page menu_spacing.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_42"#2|
-   procedure Set_Spacing (Men   : Menu;
-                          Descr : Column_Position := 0;
-                          Row   : Line_Position   := 0;
-                          Col   : Column_Position := 0);
-   --  AKA: set_menu_spacing()
-   pragma Inline (Set_Spacing);
-
-   --  #1A NAME="AFU_43"#2|
-   procedure Spacing (Men   : Menu;
-                      Descr : out Column_Position;
-                      Row   : out Line_Position;
-                      Col   : out Column_Position);
-   --  AKA: menu_spacing()
-   pragma Inline (Spacing);
-
-   --  |=====================================================================
-   --  | Man page menu_pattern.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_44"#2|
-   function Set_Pattern (Men  : Menu;
-                         Text : String) return Boolean;
-   --  AKA: set_menu_pattern()
-   --  Return TRUE if the pattern matches, FALSE otherwise
-   pragma Inline (Set_Pattern);
-
-   --  #1A NAME="AFU_45"#2|
-   procedure Pattern (Men  : Menu;
-                      Text : out String);
-   --  AKA: menu_pattern()
-   pragma Inline (Pattern);
-
-   --  |=====================================================================
-   --  | Man page menu_format.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_46"#2|
-   procedure Set_Format (Men     : Menu;
-                         Lines   : Line_Count;
-                         Columns : Column_Count);
-   --  Not implemented: 0 argument for Lines or Columns;
-   --  instead use Format to get the current sizes
-   --      The  default  format  is  16  rows,  1  column.    Calling
-   --      set_menu_format  with a null menu pointer will change this
-   --      default.  A zero row or column argument to set_menu_format
-   --      is  interpreted  as  a  request  not to change the current
-   --      value.
-   --  AKA: set_menu_format()
-   pragma Inline (Set_Format);
-
-   --  #1A NAME="AFU_47"#2|
-   procedure Format (Men     : Menu;
-                     Lines   : out Line_Count;
-                     Columns : out Column_Count);
-   --  AKA: menu_format()
-   pragma Inline (Format);
-
-   --  |=====================================================================
-   --  | Man page menu_hook.3x
-   --  |=====================================================================
-
-   type Menu_Hook_Function is access procedure (Men : Menu);
-   pragma Convention (C, Menu_Hook_Function);
-
-   --  #1A NAME="AFU_48"#2|
-   procedure Set_Item_Init_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function);
-   --  AKA: set_item_init()
-   pragma Inline (Set_Item_Init_Hook);
-
-   --  #1A NAME="AFU_49"#2|
-   procedure Set_Item_Term_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function);
-   --  AKA: set_item_term()
-   pragma Inline (Set_Item_Term_Hook);
-
-   --  #1A NAME="AFU_50"#2|
-   procedure Set_Menu_Init_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function);
-   --  AKA: set_menu_init()
-   pragma Inline (Set_Menu_Init_Hook);
-
-   --  #1A NAME="AFU_51"#2|
-   procedure Set_Menu_Term_Hook (Men  : Menu;
-                                 Proc : Menu_Hook_Function);
-   --  AKA: set_menu_term()
-   pragma Inline (Set_Menu_Term_Hook);
-
-   --  #1A NAME="AFU_52"#2|
-   function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function;
-   --  AKA: item_init()
-   pragma Inline (Get_Item_Init_Hook);
-
-   --  #1A NAME="AFU_53"#2|
-   function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function;
-   --  AKA: item_term()
-   pragma Inline (Get_Item_Term_Hook);
-
-   --  #1A NAME="AFU_54"#2|
-   function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function;
-   --  AKA: menu_init()
-   pragma Inline (Get_Menu_Init_Hook);
-
-   --  #1A NAME="AFU_55"#2|
-   function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function;
-   --  AKA: menu_term()
-   pragma Inline (Get_Menu_Term_Hook);
-
-   --  |=====================================================================
-   --  | Man page menu_items.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_56"#2|
-   procedure Redefine (Men   : Menu;
-                       Items : Item_Array_Access);
-   --  AKA: set_menu_items()
-   pragma Inline (Redefine);
-
-   procedure Set_Items (Men   : Menu;
-                        Items : Item_Array_Access) renames Redefine;
-   --  pragma Inline (Set_Items);
-
-   --  #1A NAME="AFU_57"#2|
-   function Items (Men   : Menu;
-                   Index : Positive) return Item;
-   --  AKA: menu_items()
-   pragma Inline (Items);
-
-   --  #1A NAME="AFU_58"#2|
-   function Item_Count (Men : Menu) return Natural;
-   --  AKA: item_count()
-   pragma Inline (Item_Count);
-
-   --  |=====================================================================
-   --  | Man page menu_new.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_59"#2|
-   function Create (Items : Item_Array_Access) return Menu;
-   --  AKA: new_menu()
-   --  Not inlined
-
-   function New_Menu (Items : Item_Array_Access) return Menu renames Create;
-
-   --  #1A NAME="AFU_60"#2|
-   procedure Delete (Men : in out Menu);
-   --  AKA: free_menu()
-   --  Reset Men to Null_Menu
-   --  Not inlined
-
-   --  |=====================================================================
-   --  | Man page menu_driver.3x
-   --  |=====================================================================
-
-   type Driver_Result is (Menu_Ok,
-                          Request_Denied,
-                          Unknown_Request,
-                          No_Match);
-
-   --  #1A NAME="AFU_61"#2|
-   function Driver (Men : Menu;
-                    Key : Key_Code) return Driver_Result;
-   --  AKA: menu_driver()
-   --  Driver is not inlined
-
-   --  #1A NAME="AFU_62"#2|
-   --  Not Implemented: menu_request_name, menu_request_by_name
--------------------------------------------------------------------------------
-private
-   type Item   is new System.Storage_Elements.Integer_Address;
-   type Menu   is new System.Storage_Elements.Integer_Address;
-
-   Null_Item : constant Item := 0;
-   Null_Menu : constant Menu := 0;
-
-end Terminal_Interface.Curses.Menus;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-mouse__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-mouse__adb.htm deleted file mode 100644 index f75789c..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-mouse__adb.htm +++ /dev/null @@ -1,223 +0,0 @@ - -terminal_interface-curses-mouse.adb - -

File : terminal_interface-curses-mouse.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                     Terminal_Interface.Curses.Mouse                      --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2008,2009 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, 1996
---  Version Control:
---  @Revision: 1.24 @
---  @Date: 2009/12/26 17:38:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-with Interfaces.C; use Interfaces.C;
-use Interfaces;
-
-package body Terminal_Interface.Curses.Mouse is
-
-   use type System.Bit_Order;
-
-   function Has_Mouse return Boolean
-   is
-      function Mouse_Avail return C_Int;
-      pragma Import (C, Mouse_Avail, "has_mouse");
-   begin
-      if Has_Key (Key_Mouse) or else Mouse_Avail /= 0 then
-         return True;
-      else
-         return False;
-      end if;
-   end Has_Mouse;
-
-   function Get_Mouse return Mouse_Event
-   is
-      type Event_Access is access all Mouse_Event;
-
-      function Getmouse (Ev : Event_Access) return C_Int;
-      pragma Import (C, Getmouse, "getmouse");
-
-      Event : aliased Mouse_Event;
-   begin
-      if Getmouse (Event'Access) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-      return Event;
-   end Get_Mouse;
-
-   procedure Register_Reportable_Event (Button : Mouse_Button;
-                                        State  : Button_State;
-                                        Mask   : in out Event_Mask)
-   is
-      Button_Nr : constant Natural := Mouse_Button'Pos (Button);
-      State_Nr  : constant Natural := Button_State'Pos (State);
-   begin
-      if Button in Modifier_Keys and then State /= Pressed then
-         raise Curses_Exception;
-      else
-         if Button in Real_Buttons then
-            Mask := Mask or ((2 ** (6 * Button_Nr)) ** State_Nr);
-         else
-            Mask := Mask or (BUTTON_CTRL ** (Button_Nr - 4));
-         end if;
-      end if;
-   end Register_Reportable_Event;
-
-   procedure Register_Reportable_Events (Button : Mouse_Button;
-                                         State  : Button_States;
-                                         Mask   : in out Event_Mask)
-   is
-   begin
-      for S in Button_States'Range loop
-         if State (S) then
-            Register_Reportable_Event (Button, S, Mask);
-         end if;
-      end loop;
-   end Register_Reportable_Events;
-
-   function Start_Mouse (Mask : Event_Mask := All_Events)
-                         return Event_Mask
-   is
-      function MMask (M : Event_Mask;
-                      O : access Event_Mask) return Event_Mask;
-      pragma Import (C, MMask, "mousemask");
-      R   : Event_Mask;
-      Old : aliased Event_Mask;
-   begin
-      R := MMask (Mask, Old'Access);
-      if R = No_Events then
-         Beep;
-      end if;
-      return Old;
-   end Start_Mouse;
-
-   procedure End_Mouse (Mask : Event_Mask := No_Events)
-   is
-   begin
-      if Mask /= No_Events then
-         Beep;
-      end if;
-   end End_Mouse;
-
-   procedure Dispatch_Event (Mask   : Event_Mask;
-                             Button : out Mouse_Button;
-                             State  : out Button_State);
-
-   procedure Dispatch_Event (Mask   : Event_Mask;
-                             Button : out Mouse_Button;
-                             State  : out Button_State) is
-      L : Event_Mask;
-   begin
-      Button := Alt;  --  preset to non real button;
-      if (Mask and BUTTON1_EVENTS) /= 0 then
-         Button := Left;
-      elsif (Mask and BUTTON2_EVENTS) /= 0 then
-         Button := Middle;
-      elsif (Mask and BUTTON3_EVENTS) /= 0 then
-         Button := Right;
-      elsif (Mask and BUTTON4_EVENTS) /= 0 then
-         Button := Button4;
-      end if;
-      if Button in Real_Buttons then
-         L := 2 ** (6 * Mouse_Button'Pos (Button));
-         for I in Button_State'Range loop
-            if (Mask and L) /= 0 then
-               State := I;
-               exit;
-            end if;
-            L := 2 * L;
-         end loop;
-      else
-         State := Pressed;
-         if (Mask and BUTTON_CTRL) /= 0 then
-            Button := Control;
-         elsif (Mask and BUTTON_SHIFT) /= 0 then
-            Button := Shift;
-         elsif (Mask and BUTTON_ALT) /= 0 then
-            Button := Alt;
-         end if;
-      end if;
-   end Dispatch_Event;
-
-   procedure Get_Event (Event  : Mouse_Event;
-                        Y      : out Line_Position;
-                        X      : out Column_Position;
-                        Button : out Mouse_Button;
-                        State  : out Button_State)
-   is
-      Mask  : constant Event_Mask := Event.Bstate;
-   begin
-      X := Column_Position (Event.X);
-      Y := Line_Position   (Event.Y);
-      Dispatch_Event (Mask, Button, State);
-   end Get_Event;
-
-   procedure Unget_Mouse (Event : Mouse_Event)
-   is
-      function Ungetmouse (Ev : Mouse_Event) return C_Int;
-      pragma Import (C, Ungetmouse, "ungetmouse");
-   begin
-      if Ungetmouse (Event) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Unget_Mouse;
-
-   function Enclosed_In_Window (Win    : Window := Standard_Window;
-                                Event  : Mouse_Event) return Boolean
-   is
-      function Wenclose (Win : Window; Y : C_Int; X : C_Int)
-                         return Curses_Bool;
-      pragma Import (C, Wenclose, "wenclose");
-   begin
-      if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X))
-        = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Enclosed_In_Window;
-
-   function Mouse_Interval (Msec : Natural := 200) return Natural
-   is
-      function Mouseinterval (Msec : C_Int) return C_Int;
-      pragma Import (C, Mouseinterval, "mouseinterval");
-   begin
-      return Natural (Mouseinterval (C_Int (Msec)));
-   end Mouse_Interval;
-
-end Terminal_Interface.Curses.Mouse;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-mouse__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-mouse__ads.htm deleted file mode 100644 index b02db8e..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-mouse__ads.htm +++ /dev/null @@ -1,231 +0,0 @@ - -terminal_interface-curses-mouse.ads - -

File : terminal_interface-curses-mouse.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Mouse                     --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.29 @
---  @Date: 2011/03/19 12:35:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
---  mouse binding.
---  This module is generated. Please don't change it manually!
---  Run the generator instead.
---  |
-with System;
-
-package Terminal_Interface.Curses.Mouse is
-   pragma Preelaborate (Terminal_Interface.Curses.Mouse);
-
-   --  |=====================================================================
-   --  | Man page curs_mouse.3x
-   --  |=====================================================================
-   --  mouse_trafo, wmouse_trafo are implemented as Transform_Coordinates
-   --  in the parent package.
-   --
-   --  Not implemented:
-   --  REPORT_MOUSE_POSITION (i.e. as a parameter to Register_Reportable_Event
-   --  or Start_Mouse)
-   type Event_Mask is private;
-   No_Events  : constant Event_Mask;
-   All_Events : constant Event_Mask;
-
-   type Mouse_Button is (Left,     -- aka: Button 1
-                         Middle,   -- aka: Button 2
-                         Right,    -- aka: Button 3
-                         Button4,  -- aka: Button 4
-                         Control,  -- Control Key
-                         Shift,    -- Shift Key
-                         Alt);     -- ALT Key
-
-   subtype Real_Buttons  is Mouse_Button range Left .. Button4;
-   subtype Modifier_Keys is Mouse_Button range Control .. Alt;
-
-   type Button_State is (Released,
-                         Pressed,
-                         Clicked,
-                         Double_Clicked,
-                         Triple_Clicked);
-
-   type Button_States is array (Button_State) of Boolean;
-   pragma Pack (Button_States);
-
-   All_Clicks : constant Button_States := (Clicked .. Triple_Clicked => True,
-                                           others => False);
-   All_States : constant Button_States := (others => True);
-
-   type Mouse_Event is private;
-
-   --  |=====================================================================
-   --  | Man page curs_mouse.3x
-   --  |=====================================================================
-
-   function Has_Mouse return Boolean;
-   --  Return true if a mouse device is supported, false otherwise.
-
-   procedure Register_Reportable_Event
-     (Button : Mouse_Button;
-      State  : Button_State;
-      Mask   : in out Event_Mask);
-   --  Stores the event described by the button and the state in the mask.
-   --  Before you call this the first time, you should initialize the mask
-   --  with the Empty_Mask constant
-   pragma Inline (Register_Reportable_Event);
-
-   procedure Register_Reportable_Events
-     (Button : Mouse_Button;
-      State  : Button_States;
-      Mask   : in out Event_Mask);
-   --  Register all events described by the Button and the State bitmap.
-   --  Before you call this the first time, you should initialize the mask
-   --  with the Empty_Mask constant
-
-   --  #1A NAME="AFU_1"#2|
-   --  There is one difference to mousmask(): we return the value of the
-   --  old mask, that means the event mask value before this call.
-   --  Not Implemented: The library version
-   --  returns a Mouse_Mask that tells which events are reported.
-   function Start_Mouse (Mask : Event_Mask := All_Events)
-                         return Event_Mask;
-   --  AKA: mousemask()
-   pragma Inline (Start_Mouse);
-
-   procedure End_Mouse (Mask : Event_Mask := No_Events);
-   --  Terminates the mouse, restores the specified event mask
-   pragma Inline (End_Mouse);
-
-   --  #1A NAME="AFU_2"#2|
-   function Get_Mouse return Mouse_Event;
-   --  AKA: getmouse()
-   pragma Inline (Get_Mouse);
-
-   procedure Get_Event (Event  : Mouse_Event;
-                        Y      : out Line_Position;
-                        X      : out Column_Position;
-                        Button : out Mouse_Button;
-                        State  : out Button_State);
-   --  !!! Warning: X and Y are screen coordinates. Due to ripped of lines they
-   --  may not be identical to window coordinates.
-   --  Not Implemented: Get_Event only reports one event, the C library
-   --  version supports multiple events, e.g. {click-1, click-3}
-   pragma Inline (Get_Event);
-
-   --  #1A NAME="AFU_3"#2|
-   procedure Unget_Mouse (Event : Mouse_Event);
-   --  AKA: ungetmouse()
-   pragma Inline (Unget_Mouse);
-
-   --  #1A NAME="AFU_4"#2|
-   function Enclosed_In_Window (Win    : Window := Standard_Window;
-                                Event  : Mouse_Event) return Boolean;
-   --  AKA: wenclose()
-   --  But : use event instead of screen coordinates.
-   pragma Inline (Enclosed_In_Window);
-
-   --  #1A NAME="AFU_5"#2|
-   function Mouse_Interval (Msec : Natural := 200) return Natural;
-   --  AKA: mouseinterval()
-   pragma Inline (Mouse_Interval);
-
-private
-   type Event_Mask is new Interfaces.C.unsigned_long;
-
-   type Mouse_Event is
-      record
-         Id      : Integer range Integer (Interfaces.C.short'First) ..
-                                 Integer (Interfaces.C.short'Last);
-         X, Y, Z : Integer range Integer (Interfaces.C.int'First) ..
-                                 Integer (Interfaces.C.int'Last);
-         Bstate  : Event_Mask;
-      end record;
-   pragma Convention (C, Mouse_Event);
-
-   for Mouse_Event use
-      record
-         Id      at 0 range   0 ..  15;
-         X       at 0 range  32 ..  63;
-         Y       at 0 range  64 ..  95;
-         Z       at 0 range  96 .. 127;
-         Bstate  at 0 range 128 .. 159;
-      end record;
-      --  Please note: this rep. clause is generated and may be
-      --               different on your system.
-
-   Generation_Bit_Order : constant System.Bit_Order := System.Low_Order_First;
-   --  This constant may be different on your system.
-
-   BUTTON1_RELEASED          : constant Event_Mask := 8#00000000001#;
-   BUTTON1_PRESSED           : constant Event_Mask := 8#00000000002#;
-   BUTTON1_CLICKED           : constant Event_Mask := 8#00000000004#;
-   BUTTON1_DOUBLE_CLICKED    : constant Event_Mask := 8#00000000010#;
-   BUTTON1_TRIPLE_CLICKED    : constant Event_Mask := 8#00000000020#;
-   BUTTON1_RESERVED_EVENT    : constant Event_Mask := 8#00000000040#;
-   BUTTON2_RELEASED          : constant Event_Mask := 8#00000000100#;
-   BUTTON2_PRESSED           : constant Event_Mask := 8#00000000200#;
-   BUTTON2_CLICKED           : constant Event_Mask := 8#00000000400#;
-   BUTTON2_DOUBLE_CLICKED    : constant Event_Mask := 8#00000001000#;
-   BUTTON2_TRIPLE_CLICKED    : constant Event_Mask := 8#00000002000#;
-   BUTTON2_RESERVED_EVENT    : constant Event_Mask := 8#00000004000#;
-   BUTTON3_RELEASED          : constant Event_Mask := 8#00000010000#;
-   BUTTON3_PRESSED           : constant Event_Mask := 8#00000020000#;
-   BUTTON3_CLICKED           : constant Event_Mask := 8#00000040000#;
-   BUTTON3_DOUBLE_CLICKED    : constant Event_Mask := 8#00000100000#;
-   BUTTON3_TRIPLE_CLICKED    : constant Event_Mask := 8#00000200000#;
-   BUTTON3_RESERVED_EVENT    : constant Event_Mask := 8#00000400000#;
-   BUTTON4_RELEASED          : constant Event_Mask := 8#00001000000#;
-   BUTTON4_PRESSED           : constant Event_Mask := 8#00002000000#;
-   BUTTON4_CLICKED           : constant Event_Mask := 8#00004000000#;
-   BUTTON4_DOUBLE_CLICKED    : constant Event_Mask := 8#00010000000#;
-   BUTTON4_TRIPLE_CLICKED    : constant Event_Mask := 8#00020000000#;
-   BUTTON4_RESERVED_EVENT    : constant Event_Mask := 8#00040000000#;
-   BUTTON_CTRL               : constant Event_Mask := 8#00100000000#;
-   BUTTON_SHIFT              : constant Event_Mask := 8#00200000000#;
-   BUTTON_ALT                : constant Event_Mask := 8#00400000000#;
-   REPORT_MOUSE_POSITION     : constant Event_Mask := 8#01000000000#;
-   ALL_MOUSE_EVENTS          : constant Event_Mask := 8#00777777777#;
-   BUTTON1_EVENTS            : constant Event_Mask := 8#00000000077#;
-   BUTTON2_EVENTS            : constant Event_Mask := 8#00000007700#;
-   BUTTON3_EVENTS            : constant Event_Mask := 8#00000770000#;
-   BUTTON4_EVENTS            : constant Event_Mask := 8#00077000000#;
-
-   No_Events  : constant Event_Mask := 0;
-   All_Events : constant Event_Mask := ALL_MOUSE_EVENTS;
-
-end Terminal_Interface.Curses.Mouse;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm deleted file mode 100644 index 60ef809..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm +++ /dev/null @@ -1,84 +0,0 @@ - -terminal_interface-curses-panels-user_data.adb - -

File : terminal_interface-curses-panels-user_data.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                 Terminal_Interface.Curses.Panels.User_Data               --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Interfaces.C;
-with Terminal_Interface.Curses.Aux;
-use  Terminal_Interface.Curses.Aux;
-with Terminal_Interface.Curses.Panels;
-use  Terminal_Interface.Curses.Panels;
-
-package body Terminal_Interface.Curses.Panels.User_Data is
-
-   use type Interfaces.C.int;
-
-   procedure Set_User_Data (Pan  : Panel;
-                            Data : User_Access)
-   is
-      function Set_Panel_Userptr (Pan  : Panel;
-                                  Addr : User_Access) return C_Int;
-      pragma Import (C, Set_Panel_Userptr, "set_panel_userptr");
-   begin
-      if Set_Panel_Userptr (Pan, Data) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-   end Set_User_Data;
-
-   function Get_User_Data (Pan  : Panel) return User_Access
-   is
-      function Panel_Userptr (Pan : Panel) return User_Access;
-      pragma Import (C, Panel_Userptr, "panel_userptr");
-   begin
-      return Panel_Userptr (Pan);
-   end Get_User_Data;
-
-   procedure Get_User_Data (Pan  : Panel;
-                            Data : out User_Access)
-   is
-   begin
-      Data := Get_User_Data (Pan);
-   end Get_User_Data;
-
-end Terminal_Interface.Curses.Panels.User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm deleted file mode 100644 index 0fd9c5b..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm +++ /dev/null @@ -1,75 +0,0 @@ - -terminal_interface-curses-panels-user_data.ads - -

File : terminal_interface-curses-panels-user_data.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                 Terminal_Interface.Curses.Panels.User_Data               --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.15 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-generic
-   type User is limited private;
-   type User_Access is access all User;
-package Terminal_Interface.Curses.Panels.User_Data is
-   pragma Preelaborate (Terminal_Interface.Curses.Panels.User_Data);
-
-   --  |=====================================================================
-   --  | Man page panel.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   procedure Set_User_Data (Pan  : Panel;
-                            Data : User_Access);
-   --  AKA: set_panel_userptr
-   pragma Inline (Set_User_Data);
-
-   --  #1A NAME="AFU_2"#2|
-   procedure Get_User_Data (Pan  : Panel;
-                            Data : out User_Access);
-   --  AKA: panel_userptr
-
-   --  #1A NAME="AFU_3"#2|
-   function Get_User_Data (Pan  : Panel) return User_Access;
-   --  AKA: panel_userptr
-   --  Same as function
-   pragma Inline (Get_User_Data);
-
-end Terminal_Interface.Curses.Panels.User_Data;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels__adb.htm deleted file mode 100644 index a7cb4d0..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels__adb.htm +++ /dev/null @@ -1,171 +0,0 @@ - -terminal_interface-curses-panels.adb - -

File : terminal_interface-curses-panels.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Panels                    --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2004,2009 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, 1996
---  Version Control:
---  @Revision: 1.14 @
---  @Date: 2009/12/26 17:38:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-with Interfaces.C;
-
-package body Terminal_Interface.Curses.Panels is
-
-   use type Interfaces.C.int;
-
-   function Create (Win : Window) return Panel
-   is
-      function Newpanel (Win : Window) return Panel;
-      pragma Import (C, Newpanel, "new_panel");
-
-      Pan : Panel;
-   begin
-      Pan := Newpanel (Win);
-      if Pan = Null_Panel then
-         raise Panel_Exception;
-      end if;
-      return Pan;
-   end Create;
-
-   procedure Bottom (Pan : Panel)
-   is
-      function Bottompanel (Pan : Panel) return C_Int;
-      pragma Import (C, Bottompanel, "bottom_panel");
-   begin
-      if Bottompanel (Pan) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-   end Bottom;
-
-   procedure Top (Pan : Panel)
-   is
-      function Toppanel (Pan : Panel) return C_Int;
-      pragma Import (C, Toppanel, "top_panel");
-   begin
-      if Toppanel (Pan) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-   end Top;
-
-   procedure Show (Pan : Panel)
-   is
-      function Showpanel (Pan : Panel) return C_Int;
-      pragma Import (C, Showpanel, "show_panel");
-   begin
-      if Showpanel (Pan) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-   end Show;
-
-   procedure Hide (Pan : Panel)
-   is
-      function Hidepanel (Pan : Panel) return C_Int;
-      pragma Import (C, Hidepanel, "hide_panel");
-   begin
-      if Hidepanel (Pan) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-   end Hide;
-
-   function Get_Window (Pan : Panel) return Window
-   is
-      function Panel_Win (Pan : Panel) return Window;
-      pragma Import (C, Panel_Win, "panel_window");
-
-      Win : constant Window := Panel_Win (Pan);
-   begin
-      if Win = Null_Window then
-         raise Panel_Exception;
-      end if;
-      return Win;
-   end Get_Window;
-
-   procedure Replace (Pan : Panel;
-                      Win : Window)
-   is
-      function Replace_Pan (Pan : Panel;
-                            Win : Window) return C_Int;
-      pragma Import (C, Replace_Pan, "replace_panel");
-   begin
-      if Replace_Pan (Pan, Win) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-   end Replace;
-
-   procedure Move (Pan    : Panel;
-                   Line   : Line_Position;
-                   Column : Column_Position)
-   is
-      function Move (Pan    : Panel;
-                     Line   : C_Int;
-                     Column : C_Int) return C_Int;
-      pragma Import (C, Move, "move_panel");
-   begin
-      if Move (Pan, C_Int (Line), C_Int (Column)) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-   end Move;
-
-   function Is_Hidden (Pan : Panel) return Boolean
-   is
-      function Panel_Hidden (Pan : Panel) return C_Int;
-      pragma Import (C, Panel_Hidden, "panel_hidden");
-   begin
-      if Panel_Hidden (Pan) = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Is_Hidden;
-
-   procedure Delete (Pan : in out Panel)
-   is
-      function Del_Panel (Pan : Panel) return C_Int;
-      pragma Import (C, Del_Panel, "del_panel");
-   begin
-      if Del_Panel (Pan) = Curses_Err then
-         raise Panel_Exception;
-      end if;
-      Pan := Null_Panel;
-   end Delete;
-
-end Terminal_Interface.Curses.Panels;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels__ads.htm deleted file mode 100644 index 5f14019..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-panels__ads.htm +++ /dev/null @@ -1,153 +0,0 @@ - -terminal_interface-curses-panels.ads - -

File : terminal_interface-curses-panels.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Panels                    --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 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, 1996
---  Version Control:
---  @Revision: 1.20 @
---  @Date: 2009/12/26 17:38:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with System;
-
-package Terminal_Interface.Curses.Panels is
-   pragma Preelaborate (Terminal_Interface.Curses.Panels);
-   pragma Linker_Options ("-lpanel");
-   pragma Linker_Options ("-lncurses");
-
-   type Panel is private;
-
-   ---------------------------
-   --  Interface constants  --
-   ---------------------------
-   Null_Panel : constant Panel;
-
-   -------------------
-   --  Exceptions   --
-   -------------------
-
-   Panel_Exception : exception;
-
-   --  |=====================================================================
-   --  | Man page panel.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   function Create (Win : Window) return Panel;
-   --  AKA: new_panel()
-   pragma Inline (Create);
-
-   --  #1A NAME="AFU_2"#2|
-   function New_Panel (Win : Window) return Panel renames Create;
-   --  AKA: new_panel()
-   --  pragma Inline (New_Panel);
-
-   --  #1A NAME="AFU_3"#2|
-   procedure Bottom (Pan : Panel);
-   --  AKA: bottom_panel()
-   pragma Inline (Bottom);
-
-   --  #1A NAME="AFU_4"#2|
-   procedure Top (Pan : Panel);
-   --  AKA: top_panel()
-   pragma Inline (Top);
-
-   --  #1A NAME="AFU_5"#2|
-   procedure Show (Pan : Panel);
-   --  AKA: show_panel()
-   pragma Inline (Show);
-
-   --  #1A NAME="AFU_6"#2|
-   procedure Update_Panels;
-   --  AKA: update_panels()
-   pragma Import (C, Update_Panels, "update_panels");
-
-   --  #1A NAME="AFU_7"#2|
-   procedure Hide (Pan : Panel);
-   --  AKA: hide_panel()
-   pragma Inline (Hide);
-
-   --  #1A NAME="AFU_8"#2|
-   function Get_Window (Pan : Panel) return Window;
-   --  AKA: panel_window()
-   pragma Inline (Get_Window);
-
-   --  #1A NAME="AFU_9"#2|
-   function Panel_Window (Pan : Panel) return Window renames Get_Window;
-   --  pragma Inline (Panel_Window);
-
-   --  #1A NAME="AFU_10"#2|
-   procedure Replace (Pan : Panel;
-                      Win : Window);
-   --  AKA: replace_panel()
-   pragma Inline (Replace);
-
-   --  #1A NAME="AFU_11"#2|
-   procedure Move (Pan    : Panel;
-                   Line   : Line_Position;
-                   Column : Column_Position);
-   --  AKA: move_panel()
-   pragma Inline (Move);
-
-   --  #1A NAME="AFU_12"#2|
-   function Is_Hidden (Pan : Panel) return Boolean;
-   --  AKA: panel_hidden()
-   pragma Inline (Is_Hidden);
-
-   --  #1A NAME="AFU_13"#2|
-   function Above (Pan : Panel) return Panel;
-   --  AKA: panel_above()
-   pragma Import (C, Above, "panel_above");
-
-   --  #1A NAME="AFU_14"#2|
-   function Below (Pan : Panel) return Panel;
-   --  AKA: panel_below()
-   pragma Import (C, Below, "panel_below");
-
-   --  #1A NAME="AFU_15"#2|
-   procedure Delete (Pan : in out Panel);
-   --  AKA: del_panel()
-   pragma Inline (Delete);
-
-private
-      type Panel is new System.Storage_Elements.Integer_Address;
-      Null_Panel : constant Panel := 0;
-
-end Terminal_Interface.Curses.Panels;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-putwin__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-putwin__adb.htm deleted file mode 100644 index b27e07d..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-putwin__adb.htm +++ /dev/null @@ -1,83 +0,0 @@ - -terminal_interface-curses-putwin.adb - -

File : terminal_interface-curses-putwin.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                    Terminal_Interface.Curses.PutWin                      --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 2000 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, 1996
---  Version Control:
---  @Revision: 1.3 @
---  Binding Version 01.00
-
-with Ada.Streams.Stream_IO.C_Streams;
-with Interfaces.C_Streams;
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-
-package body Terminal_Interface.Curses.PutWin is
-
-   package ICS renames Interfaces.C_Streams;
-   package ACS renames Ada.Streams.Stream_IO.C_Streams;
-   use type C_Int;
-
-   procedure Put_Window (Win  : Window;
-                         File : Ada.Streams.Stream_IO.File_Type) is
-      function putwin (Win : Window; f : ICS.FILEs) return C_Int;
-      pragma Import (C, putwin, "putwin");
-
-      R : constant C_Int := putwin (Win, ACS.C_Stream (File));
-   begin
-      if R /= Curses_Ok then
-         raise Curses_Exception;
-      end if;
-   end Put_Window;
-
-   function Get_Window (File : Ada.Streams.Stream_IO.File_Type)
-                        return Window is
-      function getwin (f : ICS.FILEs) return Window;
-      pragma Import (C, getwin, "getwin");
-
-      W : constant Window := getwin (ACS.C_Stream (File));
-   begin
-      if W = Null_Window then
-         raise Curses_Exception;
-      else
-         return W;
-      end if;
-   end Get_Window;
-
-end Terminal_Interface.Curses.PutWin;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-putwin__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-putwin__ads.htm deleted file mode 100644 index 0bf60e6..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-putwin__ads.htm +++ /dev/null @@ -1,56 +0,0 @@ - -terminal_interface-curses-putwin.ads - -

File : terminal_interface-curses-putwin.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                    Terminal_Interface.Curses.PutWin                      --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 2000 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, 1996
---  Version Control:
---  @Revision: 1.3 @
---  Binding Version 01.00
-
-with Ada.Streams.Stream_IO;
-
-package Terminal_Interface.Curses.PutWin is
-
-   procedure Put_Window (Win  : Window;
-                         File : Ada.Streams.Stream_IO.File_Type);
-
-   function Get_Window (File  : Ada.Streams.Stream_IO.File_Type) return Window;
-
-end Terminal_Interface.Curses.PutWin;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-termcap__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-termcap__adb.htm deleted file mode 100644 index 3a82187..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-termcap__adb.htm +++ /dev/null @@ -1,169 +0,0 @@ - -terminal_interface-curses-termcap.adb - -

File : terminal_interface-curses-termcap.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                    Terminal_Interface.Curses.Termcap                     --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 2000-2006,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  @Date: 2009/12/26 17:38:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-with Interfaces.C; use Interfaces.C;
-with Interfaces.C.Strings; use Interfaces.C.Strings;
-
-package body Terminal_Interface.Curses.Termcap is
-
-   function Get_Entry (Name : String) return Boolean
-   is
-      function tgetent (name : char_array; val : char_array)
-                        return C_Int;
-      pragma Import (C, tgetent, "tgetent");
-      NameTxt : char_array (0 .. Name'Length);
-      Length  : size_t;
-      ignored : constant char_array (0 .. 0) := (0 => nul);
-      result  : C_Int;
-   begin
-      To_C (Name, NameTxt, Length);
-      result := tgetent (char_array (ignored), NameTxt);
-      if result = -1 then
-         raise Curses_Exception;
-      else
-         return Boolean'Val (result);
-      end if;
-   end Get_Entry;
-
-------------------------------------------------------------------------------
-   function Get_Flag (Name : String) return Boolean
-   is
-      function tgetflag (id : char_array) return C_Int;
-      pragma Import (C, tgetflag, "tgetflag");
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-   begin
-      To_C (Name, Txt, Length);
-      if tgetflag (Txt) = 0 then
-         return False;
-      else
-         return True;
-      end if;
-   end Get_Flag;
-
-------------------------------------------------------------------------------
-   procedure Get_Number (Name   : String;
-                         Value  : out Integer;
-                         Result : out Boolean)
-   is
-      function tgetnum (id : char_array) return C_Int;
-      pragma Import (C, tgetnum, "tgetnum");
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-   begin
-      To_C (Name, Txt, Length);
-      Value := Integer (tgetnum (Txt));
-      if Value = -1 then
-         Result := False;
-      else
-         Result :=  True;
-      end if;
-   end Get_Number;
-
-------------------------------------------------------------------------------
-   procedure Get_String (Name   : String;
-                         Value  : out String;
-                         Result : out Boolean)
-   is
-      function tgetstr (id  : char_array;
-                        buf : char_array) return chars_ptr;
-      pragma Import (C, tgetstr, "tgetstr");
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-      Txt2   : chars_ptr;
-      type t is new char_array (0 .. 1024); --  does it need to be 1024?
-      Return_Buffer : constant t := (others => nul);
-   begin
-      To_C (Name, Txt, Length);
-      Txt2 := tgetstr (Txt, char_array (Return_Buffer));
-      if Txt2 = Null_Ptr then
-         Result := False;
-      else
-         Value := Fill_String (Txt2);
-         Result := True;
-      end if;
-   end Get_String;
-
-   function Get_String (Name : String) return Boolean
-   is
-      function tgetstr (Id  : char_array;
-                        buf : char_array) return chars_ptr;
-      pragma Import (C, tgetstr, "tgetstr");
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-      Txt2   : chars_ptr;
-      type t is new char_array (0 .. 1024); --  does it need to be 1024?
-      Phony_Txt : constant t := (others => nul);
-   begin
-      To_C (Name, Txt, Length);
-      Txt2 := tgetstr (Txt, char_array (Phony_Txt));
-      if Txt2 = Null_Ptr then
-         return False;
-      else
-         return True;
-      end if;
-   end Get_String;
-
-------------------------------------------------------------------------------
-   function TGoto (Cap : String;
-                   Col : Column_Position;
-                   Row : Line_Position) return Termcap_String is
-      function tgoto (cap : char_array;
-                      col : C_Int;
-                      row : C_Int) return chars_ptr;
-      pragma Import (C, tgoto);
-      Txt    : char_array (0 .. Cap'Length);
-      Length : size_t;
-   begin
-      To_C (Cap, Txt, Length);
-      return Termcap_String (Fill_String
-                             (tgoto (Txt, C_Int (Col), C_Int (Row))));
-   end TGoto;
-
-end Terminal_Interface.Curses.Termcap;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-termcap__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-termcap__ads.htm deleted file mode 100644 index 51621b6..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-termcap__ads.htm +++ /dev/null @@ -1,86 +0,0 @@ - -terminal_interface-curses-termcap.ads - -

File : terminal_interface-curses-termcap.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                     Terminal_Interface.Curses.Termcap                    --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 2000 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, 1996
---  Version Control:
---  @Revision: 1.3 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-package Terminal_Interface.Curses.Termcap is
-   pragma Preelaborate (Terminal_Interface.Curses.Termcap);
-
-   --  |=====================================================================
-   --  | Man page curs_termcap.3x
-   --  |=====================================================================
-   --  Not implemented:  tputs (see curs_terminfo)
-
-   type Termcap_String is new String;
-
-   --  |
-   function TGoto (Cap : String;
-                   Col : Column_Position;
-                   Row : Line_Position) return Termcap_String;
-   --  AKA: tgoto()
-
-   --  |
-   function Get_Entry (Name : String) return Boolean;
-   --  AKA: tgetent()
-
-   --  |
-   function Get_Flag (Name : String) return Boolean;
-   --  AKA: tgetflag()
-
-   --  |
-   procedure Get_Number (Name   : String;
-                         Value  : out Integer;
-                         Result : out Boolean);
-   --  AKA: tgetnum()
-
-   --  |
-   procedure Get_String (Name   : String;
-                         Value  : out String;
-                         Result : out Boolean);
-   function Get_String (Name : String) return Boolean;
-   --  Returns True if the string is found.
-   --  AKA: tgetstr()
-
-end Terminal_Interface.Curses.Termcap;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-terminfo__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-terminfo__adb.htm deleted file mode 100644 index 049e154..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-terminfo__adb.htm +++ /dev/null @@ -1,167 +0,0 @@ - -terminal_interface-curses-terminfo.adb - -

File : terminal_interface-curses-terminfo.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                    Terminal_Interface.Curses.Terminfo                    --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 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, 1996
---  Version Control:
---  @Revision: 1.6 @
---  @Date: 2009/12/26 17:38:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux;
-with Interfaces.C; use Interfaces.C;
-with Interfaces.C.Strings; use Interfaces.C.Strings;
-with Ada.Unchecked_Conversion;
-
-package body Terminal_Interface.Curses.Terminfo is
-
-   function Is_MinusOne_Pointer (P : chars_ptr) return Boolean;
-
-   function Is_MinusOne_Pointer (P : chars_ptr) return Boolean is
-      type Weird_Address is new System.Storage_Elements.Integer_Address;
-      Invalid_Pointer : constant Weird_Address := -1;
-      function To_Weird is new Ada.Unchecked_Conversion
-        (Source => chars_ptr, Target => Weird_Address);
-   begin
-      if To_Weird (P) = Invalid_Pointer then
-         return True;
-      else
-         return False;
-      end if;
-   end Is_MinusOne_Pointer;
-   pragma Inline (Is_MinusOne_Pointer);
-
-------------------------------------------------------------------------------
-   function Get_Flag (Name : String) return Boolean
-   is
-      function tigetflag (id : char_array) return Curses_Bool;
-      pragma Import (C, tigetflag);
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-   begin
-      To_C (Name, Txt, Length);
-      if tigetflag (Txt) = Curses_Bool (Curses_True) then
-         return True;
-      else
-         return False;
-      end if;
-   end Get_Flag;
-
-------------------------------------------------------------------------------
-   procedure Get_String (Name   : String;
-                         Value  : out Terminfo_String;
-                         Result : out Boolean)
-   is
-      function tigetstr (id : char_array) return chars_ptr;
-      pragma Import (C, tigetstr, "tigetstr");
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-      Txt2 : chars_ptr;
-   begin
-      To_C (Name, Txt, Length);
-      Txt2 := tigetstr (Txt);
-      if Txt2 = Null_Ptr then
-         Result := False;
-      elsif Is_MinusOne_Pointer (Txt2) then
-         raise Curses_Exception;
-      else
-         Value  := Terminfo_String (Fill_String (Txt2));
-         Result := True;
-      end if;
-   end Get_String;
-
-------------------------------------------------------------------------------
-   function Has_String (Name : String) return Boolean
-   is
-      function tigetstr (id : char_array) return chars_ptr;
-      pragma Import (C, tigetstr, "tigetstr");
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-      Txt2 : chars_ptr;
-   begin
-      To_C (Name, Txt, Length);
-      Txt2 := tigetstr (Txt);
-      if Txt2 = Null_Ptr then
-         return False;
-      elsif Is_MinusOne_Pointer (Txt2) then
-         raise Curses_Exception;
-      else
-         return True;
-      end if;
-   end Has_String;
-
-------------------------------------------------------------------------------
-   function Get_Number (Name : String) return Integer is
-      function tigetstr (s : char_array) return C_Int;
-      pragma Import (C, tigetstr);
-      Txt    : char_array (0 .. Name'Length);
-      Length : size_t;
-   begin
-      To_C (Name, Txt, Length);
-      return Integer (tigetstr (Txt));
-   end Get_Number;
-
-------------------------------------------------------------------------------
-   procedure Put_String (Str    : Terminfo_String;
-                         affcnt : Natural := 1;
-                         putc   : putctype := null) is
-      function tputs (str    : char_array;
-                      affcnt : C_Int;
-                      putc   : putctype) return C_Int;
-      function putp (str : char_array) return C_Int;
-      pragma Import (C, tputs);
-      pragma Import (C, putp);
-      Txt    : char_array (0 .. Str'Length);
-      Length : size_t;
-      Err : C_Int;
-   begin
-      To_C (String (Str), Txt, Length);
-      if putc = null then
-         Err := putp (Txt);
-      else
-         Err := tputs (Txt, C_Int (affcnt), putc);
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Put_String;
-
-end Terminal_Interface.Curses.Terminfo;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-terminfo__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-terminfo__ads.htm deleted file mode 100644 index 72edda4..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-terminfo__ads.htm +++ /dev/null @@ -1,87 +0,0 @@ - -terminal_interface-curses-terminfo.ads - -

File : terminal_interface-curses-terminfo.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                     Terminal_Interface.Curses.Terminfo                   --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 2000 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, 1996
---  Version Control:
---  @Revision: 1.3 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-with Interfaces.C;
-
-package Terminal_Interface.Curses.Terminfo is
-   pragma Preelaborate (Terminal_Interface.Curses.Terminfo);
-
-   --  |=====================================================================
-   --  | Man page curs_terminfo.3x
-   --  |=====================================================================
-   --  Not implemented:  setupterm, setterm, set_curterm, del_curterm,
-   --                    restartterm, tparm, putp, vidputs,  vidattr,
-   --                    mvcur
-
-   type Terminfo_String is new String;
-
-   --  |
-   procedure Get_String (Name   : String;
-                         Value  : out Terminfo_String;
-                         Result : out Boolean);
-   function Has_String (Name : String) return Boolean;
-   --  AKA: tigetstr()
-
-   --  |
-   function Get_Flag (Name : String) return Boolean;
-   --  AKA: tigetflag()
-
-   --  |
-   function Get_Number (Name : String) return Integer;
-   --  AKA: tigetnum()
-
-   type putctype is access function (c : Interfaces.C.int)
-                                    return Interfaces.C.int;
-   pragma Convention (C, putctype);
-
-   --  |
-   procedure Put_String (Str    : Terminfo_String;
-                         affcnt : Natural := 1;
-                         putc   : putctype := null);
-   --  AKA: tputs()
-
-end Terminal_Interface.Curses.Terminfo;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm deleted file mode 100644 index 36dc342..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm +++ /dev/null @@ -1,134 +0,0 @@ - -terminal_interface-curses-text_io-aux.adb - -

File : terminal_interface-curses-text_io-aux.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                   Terminal_Interface.Curses.Text_IO.Aux                  --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 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, 1996
---  Version Control:
---  @Revision: 1.13 @
---  @Date: 2009/12/26 17:38:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package body Terminal_Interface.Curses.Text_IO.Aux is
-
-   procedure Put_Buf
-     (Win    : Window;
-      Buf    : String;
-      Width  : Field;
-      Signal : Boolean := True;
-      Ljust  : Boolean := False)
-   is
-      L   : Field;
-      Len : Field;
-      W   : Field := Width;
-      LC  : Line_Count;
-      CC  : Column_Count;
-      Y   : Line_Position;
-      X   : Column_Position;
-
-      procedure Output (From, To : Field);
-
-      procedure Output (From, To : Field)
-      is
-      begin
-         if Len > 0 then
-            if W = 0 then
-               W := Len;
-            end if;
-            if Len > W then
-               --  LRM A10.6 (7) says this
-               W := Len;
-            end if;
-
-            pragma Assert (Len <= W);
-            Get_Size (Win, LC, CC);
-            if Column_Count (Len) > CC then
-               if Signal then
-                  raise Layout_Error;
-               else
-                  return;
-               end if;
-            else
-               if Len < W and then not Ljust then
-                  declare
-                     Filler : constant String (1 .. (W - Len))
-                       := (others => ' ');
-                  begin
-                     Put (Win, Filler);
-                  end;
-               end if;
-               Get_Cursor_Position (Win, Y, X);
-               if (X + Column_Position (Len)) > CC then
-                  New_Line (Win);
-               end if;
-               Put (Win, Buf (From .. To));
-               if Len < W and then Ljust then
-                  declare
-                     Filler : constant String (1 .. (W - Len))
-                       := (others => ' ');
-                  begin
-                     Put (Win, Filler);
-                  end;
-               end if;
-            end if;
-         end if;
-      end Output;
-
-   begin
-      pragma Assert (Win /= Null_Window);
-      if Ljust then
-         L := 1;
-         for I in 1 .. Buf'Length loop
-            exit when Buf (L) = ' ';
-            L := L + 1;
-         end loop;
-         Len := L - 1;
-         Output (1, Len);
-      else  -- input buffer is not left justified
-         L := Buf'Length;
-         for I in 1 .. Buf'Length loop
-            exit when Buf (L) = ' ';
-            L := L - 1;
-         end loop;
-         Len := Buf'Length - L;
-         Output (L + 1, Buf'Length);
-      end if;
-   end Put_Buf;
-
-end Terminal_Interface.Curses.Text_IO.Aux;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm deleted file mode 100644 index 6a8ff2c..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm +++ /dev/null @@ -1,61 +0,0 @@ - -terminal_interface-curses-text_io-aux.ads - -

File : terminal_interface-curses-text_io-aux.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                   Terminal_Interface.Curses.Text_IO.Aux                  --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2006,2009 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, 1996
---  Version Control:
---  @Revision: 1.14 @
---  @Date: 2009/12/26 17:38:58 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-private package Terminal_Interface.Curses.Text_IO.Aux is
-   --  pragma Preelaborate (Aux);
-
-   --  This routine is called from the Text_IO output routines for numeric
-   --  and enumeration types.
-   --
-   procedure Put_Buf
-     (Win    : Window;               -- The output window
-      Buf    : String;               -- The buffer containing the text
-      Width  : Field;                -- The width of the output field
-      Signal : Boolean := True;      -- If true, we raise Layout_Error
-      Ljust  : Boolean := False);    -- The Buf is left justified
-
-end Terminal_Interface.Curses.Text_IO.Aux;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm deleted file mode 100644 index 8f94a95..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm +++ /dev/null @@ -1,79 +0,0 @@ - -terminal_interface-curses-text_io-complex_io.adb - -

File : terminal_interface-curses-text_io-complex_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Complex_IO               --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Terminal_Interface.Curses.Text_IO.Float_IO;
-
-package body Terminal_Interface.Curses.Text_IO.Complex_IO is
-
-   package FIO is new
-     Terminal_Interface.Curses.Text_IO.Float_IO (Complex_Types.Real'Base);
-
-   procedure Put
-     (Win  : Window;
-      Item : Complex;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp)
-   is
-   begin
-      Put (Win, '(');
-      FIO.Put (Win, Item.Re, Fore, Aft, Exp);
-      Put (Win, ',');
-      FIO.Put (Win, Item.Im, Fore, Aft, Exp);
-      Put (Win, ')');
-   end Put;
-
-   procedure Put
-     (Item : Complex;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp)
-   is
-   begin
-      Put (Get_Window, Item, Fore, Aft, Exp);
-   end Put;
-
-end Terminal_Interface.Curses.Text_IO.Complex_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm deleted file mode 100644 index ce215b5..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm +++ /dev/null @@ -1,76 +0,0 @@ - -terminal_interface-curses-text_io-complex_io.ads - -

File : terminal_interface-curses-text_io-complex_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Complex_IO               --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Numerics.Generic_Complex_Types;
-
-generic
-   with package Complex_Types is new Ada.Numerics.Generic_Complex_Types (<>);
-
-package Terminal_Interface.Curses.Text_IO.Complex_IO is
-
-   use Complex_Types;
-
-   Default_Fore : Field := 2;
-   Default_Aft  : Field := Real'Digits - 1;
-   Default_Exp  : Field := 3;
-
-   procedure Put
-     (Win  : Window;
-      Item : Complex;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-   procedure Put
-     (Item : Complex;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-private
-   pragma Inline (Put);
-
-end Terminal_Interface.Curses.Text_IO.Complex_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm deleted file mode 100644 index 0e02144..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm +++ /dev/null @@ -1,81 +0,0 @@ - -terminal_interface-curses-text_io-decimal_io.adb - -

File : terminal_interface-curses-text_io-decimal_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Decimal_IO               --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Text_IO;
-with Terminal_Interface.Curses.Text_IO.Aux;
-
-package body Terminal_Interface.Curses.Text_IO.Decimal_IO is
-
-   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
-   package DIO is new Ada.Text_IO.Decimal_IO (Num);
-
-   procedure Put
-     (Win  : Window;
-      Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp)
-   is
-      Buf : String (1 .. Field'Last);
-      Len : Field := Fore + 1 + Aft;
-   begin
-      if Exp > 0 then
-         Len := Len + 1 + Exp;
-      end if;
-      DIO.Put (Buf, Item, Aft, Exp);
-      Aux.Put_Buf (Win, Buf, Len, False);
-   end Put;
-
-   procedure Put
-     (Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp) is
-   begin
-      Put (Get_Window, Item, Fore, Aft, Exp);
-   end Put;
-
-end Terminal_Interface.Curses.Text_IO.Decimal_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm deleted file mode 100644 index b19c151..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm +++ /dev/null @@ -1,72 +0,0 @@ - -terminal_interface-curses-text_io-decimal_io.ads - -

File : terminal_interface-curses-text_io-decimal_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Decimal_IO               --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-generic
-   type Num is delta <> digits <>;
-
-package Terminal_Interface.Curses.Text_IO.Decimal_IO is
-
-   Default_Fore : Field := Num'Fore;
-   Default_Aft  : Field := Num'Aft;
-   Default_Exp  : Field := 0;
-
-   procedure Put
-     (Win  : Window;
-      Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-   procedure Put
-     (Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-private
-   pragma Inline (Put);
-
-end Terminal_Interface.Curses.Text_IO.Decimal_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm deleted file mode 100644 index 070e480..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm +++ /dev/null @@ -1,86 +0,0 @@ - -terminal_interface-curses-text_io-enumeration_io.adb - -

File : terminal_interface-curses-text_io-enumeration_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---             Terminal_Interface.Curses.Text_IO.Enumeration_IO             --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Text_IO;
-with Ada.Characters.Handling; use Ada.Characters.Handling;
-with Terminal_Interface.Curses.Text_IO.Aux;
-
-package body Terminal_Interface.Curses.Text_IO.Enumeration_IO is
-
-   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
-   package EIO is new Ada.Text_IO.Enumeration_IO (Enum);
-
-   procedure Put
-     (Win   : Window;
-      Item  : Enum;
-      Width : Field := Default_Width;
-      Set   : Type_Set := Default_Setting)
-   is
-      Buf  : String (1 .. Field'Last);
-      Tset : Ada.Text_IO.Type_Set;
-   begin
-      if Set /= Mixed_Case then
-         Tset := Ada.Text_IO.Type_Set'Val (Type_Set'Pos (Set));
-      else
-         Tset := Ada.Text_IO.Lower_Case;
-      end if;
-      EIO.Put (Buf, Item, Tset);
-      if Set = Mixed_Case then
-         Buf (Buf'First) := To_Upper (Buf (Buf'First));
-      end if;
-      Aux.Put_Buf (Win, Buf, Width, True, True);
-   end Put;
-
-   procedure Put
-     (Item  : Enum;
-      Width : Field := Default_Width;
-      Set   : Type_Set := Default_Setting)
-   is
-   begin
-      Put (Get_Window, Item, Width, Set);
-   end Put;
-
-end Terminal_Interface.Curses.Text_IO.Enumeration_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm deleted file mode 100644 index b3d316a..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm +++ /dev/null @@ -1,69 +0,0 @@ - -terminal_interface-curses-text_io-enumeration_io.ads - -

File : terminal_interface-curses-text_io-enumeration_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---             Terminal_Interface.Curses.Text_IO.Enumeration_IO             --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-generic
-   type Enum is (<>);
-
-package Terminal_Interface.Curses.Text_IO.Enumeration_IO is
-
-   Default_Width : Field := 0;
-   Default_Setting : Type_Set := Mixed_Case;
-
-   procedure Put
-     (Win   : Window;
-      Item  : Enum;
-      Width : Field := Default_Width;
-      Set   : Type_Set := Default_Setting);
-
-   procedure Put
-     (Item  : Enum;
-      Width : Field := Default_Width;
-      Set   : Type_Set := Default_Setting);
-
-private
-   pragma Inline (Put);
-
-end Terminal_Interface.Curses.Text_IO.Enumeration_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm deleted file mode 100644 index 578da53..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm +++ /dev/null @@ -1,81 +0,0 @@ - -terminal_interface-curses-text_io-fixed_io.adb - -

File : terminal_interface-curses-text_io-fixed_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                Terminal_Interface.Curses.Text_IO.Fixed_IO                --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Text_IO;
-with Terminal_Interface.Curses.Text_IO.Aux;
-
-package body Terminal_Interface.Curses.Text_IO.Fixed_IO is
-
-   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
-   package FIXIO is new Ada.Text_IO.Fixed_IO (Num);
-
-   procedure Put
-     (Win  : Window;
-      Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp)
-   is
-      Buf : String (1 .. Field'Last);
-      Len : Field := Fore + 1 + Aft;
-   begin
-      if Exp > 0 then
-         Len := Len + 1 + Exp;
-      end if;
-      FIXIO.Put (Buf, Item, Aft, Exp);
-      Aux.Put_Buf (Win, Buf, Len, False);
-   end Put;
-
-   procedure Put
-     (Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp) is
-   begin
-      Put (Get_Window, Item, Fore, Aft, Exp);
-   end Put;
-
-end Terminal_Interface.Curses.Text_IO.Fixed_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm deleted file mode 100644 index 315a0cb..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm +++ /dev/null @@ -1,72 +0,0 @@ - -terminal_interface-curses-text_io-fixed_io.ads - -

File : terminal_interface-curses-text_io-fixed_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                Terminal_Interface.Curses.Text_IO.Fixed_IO                --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-generic
-   type Num is delta <>;
-
-package Terminal_Interface.Curses.Text_IO.Fixed_IO is
-
-   Default_Fore : Field := Num'Fore;
-   Default_Aft  : Field := Num'Aft;
-   Default_Exp  : Field := 0;
-
-   procedure Put
-     (Win  : Window;
-      Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-   procedure Put
-     (Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-private
-   pragma Inline (Put);
-
-end Terminal_Interface.Curses.Text_IO.Fixed_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm deleted file mode 100644 index db86cfc..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm +++ /dev/null @@ -1,82 +0,0 @@ - -terminal_interface-curses-text_io-float_io.adb - -

File : terminal_interface-curses-text_io-float_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                Terminal_Interface.Curses.Text_IO.Float_IO                --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Text_IO;
-with Terminal_Interface.Curses.Text_IO.Aux;
-
-package body Terminal_Interface.Curses.Text_IO.Float_IO is
-
-   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
-   package FIO is new Ada.Text_IO.Float_IO (Num);
-
-   procedure Put
-     (Win  : Window;
-      Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp)
-   is
-      Buf : String (1 .. Field'Last);
-      Len : Field := Fore + 1 + Aft;
-   begin
-      if Exp > 0 then
-         Len := Len + 1 + Exp;
-      end if;
-      FIO.Put (Buf, Item, Aft, Exp);
-      Aux.Put_Buf (Win, Buf, Len, False);
-   end Put;
-
-   procedure Put
-     (Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp)
-   is
-   begin
-      Put (Get_Window, Item, Fore, Aft, Exp);
-   end Put;
-
-end Terminal_Interface.Curses.Text_IO.Float_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm deleted file mode 100644 index 6b6e30a..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm +++ /dev/null @@ -1,72 +0,0 @@ - -terminal_interface-curses-text_io-float_io.ads - -

File : terminal_interface-curses-text_io-float_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                Terminal_Interface.Curses.Text_IO.Float_IO                --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-generic
-   type Num is digits <>;
-
-package Terminal_Interface.Curses.Text_IO.Float_IO is
-
-   Default_Fore : Field := 2;
-   Default_Aft  : Field := Num'Digits - 1;
-   Default_Exp  : Field := 3;
-
-   procedure Put
-     (Win  : Window;
-      Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-   procedure Put
-     (Item : Num;
-      Fore : Field := Default_Fore;
-      Aft  : Field := Default_Aft;
-      Exp  : Field := Default_Exp);
-
-private
-   pragma Inline (Put);
-
-end Terminal_Interface.Curses.Text_IO.Float_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm deleted file mode 100644 index 17c2f49..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm +++ /dev/null @@ -1,76 +0,0 @@ - -terminal_interface-curses-text_io-integer_io.adb - -

File : terminal_interface-curses-text_io-integer_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Integer_IO               --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Text_IO;
-with Terminal_Interface.Curses.Text_IO.Aux;
-
-package body Terminal_Interface.Curses.Text_IO.Integer_IO is
-
-   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
-   package IIO is new Ada.Text_IO.Integer_IO (Num);
-
-   procedure Put
-     (Win   : Window;
-      Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base)
-   is
-      Buf : String (1 .. Field'Last);
-   begin
-      IIO.Put (Buf, Item, Base);
-      Aux.Put_Buf (Win, Buf, Width);
-   end Put;
-
-   procedure Put
-     (Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base)
-   is
-   begin
-      Put (Get_Window, Item, Width, Base);
-   end Put;
-
-end Terminal_Interface.Curses.Text_IO.Integer_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm deleted file mode 100644 index 930bff1..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm +++ /dev/null @@ -1,69 +0,0 @@ - -terminal_interface-curses-text_io-integer_io.ads - -

File : terminal_interface-curses-text_io-integer_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Integer_IO               --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-generic
-   type Num is range <>;
-
-package Terminal_Interface.Curses.Text_IO.Integer_IO is
-
-   Default_Width : Field := Num'Width;
-   Default_Base  : Number_Base := 10;
-
-   procedure Put
-     (Win   : Window;
-      Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base);
-
-   procedure Put
-     (Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base);
-
-private
-   pragma Inline (Put);
-
-end Terminal_Interface.Curses.Text_IO.Integer_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm deleted file mode 100644 index 1ef76a7..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm +++ /dev/null @@ -1,76 +0,0 @@ - -terminal_interface-curses-text_io-modular_io.adb - -

File : terminal_interface-curses-text_io-modular_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Modular_IO               --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.11 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Text_IO;
-with Terminal_Interface.Curses.Text_IO.Aux;
-
-package body Terminal_Interface.Curses.Text_IO.Modular_IO is
-
-   package Aux renames Terminal_Interface.Curses.Text_IO.Aux;
-   package MIO is new Ada.Text_IO.Modular_IO (Num);
-
-   procedure Put
-     (Win   : Window;
-      Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base)
-   is
-      Buf : String (1 .. Field'Last);
-   begin
-      MIO.Put (Buf, Item, Base);
-      Aux.Put_Buf (Win, Buf, Width);
-   end Put;
-
-   procedure Put
-     (Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base)
-   is
-   begin
-      Put (Get_Window, Item, Width, Base);
-   end Put;
-
-end Terminal_Interface.Curses.Text_IO.Modular_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm deleted file mode 100644 index 227dd9b..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm +++ /dev/null @@ -1,69 +0,0 @@ - -terminal_interface-curses-text_io-modular_io.ads - -

File : terminal_interface-curses-text_io-modular_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---               Terminal_Interface.Curses.Text_IO.Modular_IO               --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.12 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-generic
-   type Num is mod <>;
-
-package Terminal_Interface.Curses.Text_IO.Modular_IO is
-
-   Default_Width : Field := Num'Width;
-   Default_Base  : Number_Base := 10;
-
-   procedure Put
-     (Win   : Window;
-      Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base);
-
-   procedure Put
-     (Item  : Num;
-      Width : Field := Default_Width;
-      Base  : Number_Base := Default_Base);
-
-private
-   pragma Inline (Put);
-
-end Terminal_Interface.Curses.Text_IO.Modular_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io__adb.htm deleted file mode 100644 index 7d48825..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io__adb.htm +++ /dev/null @@ -1,344 +0,0 @@ - -terminal_interface-curses-text_io.adb - -

File : terminal_interface-curses-text_io.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                     Terminal_Interface.Curses.Text_IO                    --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.20 @
---  @Date: 2011/03/22 23:38:49 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package body Terminal_Interface.Curses.Text_IO is
-
-   Default_Window : Window := Null_Window;
-
-   procedure Set_Window (Win : Window)
-   is
-   begin
-      Default_Window := Win;
-   end Set_Window;
-
-   function Get_Window return Window
-   is
-   begin
-      if Default_Window = Null_Window then
-         return Standard_Window;
-      else
-         return Default_Window;
-      end if;
-   end Get_Window;
-   pragma Inline (Get_Window);
-
-   procedure Flush (Win : Window)
-   is
-   begin
-      Refresh (Win);
-   end Flush;
-
-   procedure Flush
-   is
-   begin
-      Flush (Get_Window);
-   end Flush;
-
-   --------------------------------------------
-   -- Specification of line and page lengths --
-   --------------------------------------------
-
-   --  There are no set routines in this package. I assume, that you allocate
-   --  the window with an appropriate size.
-   --  A scroll-window is interpreted as an page with unbounded page length,
-   --  i.e. it returns the conventional 0 as page length.
-
-   function Line_Length (Win : Window) return Count
-   is
-      N_Lines : Line_Count;
-      N_Cols  : Column_Count;
-   begin
-      Get_Size (Win, N_Lines, N_Cols);
-      --  if Natural (N_Cols) > Natural (Count'Last) then
-      --     raise Layout_Error;
-      --  end if;
-      return Count (N_Cols);
-   end Line_Length;
-
-   function Line_Length return Count
-   is
-   begin
-      return Line_Length (Get_Window);
-   end Line_Length;
-
-   function Page_Length (Win : Window) return Count
-   is
-      N_Lines : Line_Count;
-      N_Cols  : Column_Count;
-   begin
-      if Scrolling_Allowed (Win) then
-         return 0;
-      else
-         Get_Size (Win, N_Lines, N_Cols);
-         --  if Natural (N_Lines) > Natural (Count'Last) then
-         --     raise Layout_Error;
-         --  end if;
-         return Count (N_Lines);
-      end if;
-   end Page_Length;
-
-   function Page_Length return Count
-   is
-   begin
-      return Page_Length (Get_Window);
-   end Page_Length;
-
-   ------------------------------------
-   -- Column, Line, and Page Control --
-   ------------------------------------
-   procedure New_Line (Win : Window; Spacing : Positive_Count := 1)
-   is
-      P_Size : constant Count := Page_Length (Win);
-   begin
-      if not Spacing'Valid then
-         raise Constraint_Error;
-      end if;
-
-      for I in 1 .. Spacing loop
-         if P_Size > 0 and then Line (Win) >= P_Size then
-            New_Page (Win);
-         else
-            Add (Win, ASCII.LF);
-         end if;
-      end loop;
-   end New_Line;
-
-   procedure New_Line (Spacing : Positive_Count := 1)
-   is
-   begin
-      New_Line (Get_Window, Spacing);
-   end New_Line;
-
-   procedure New_Page (Win : Window)
-   is
-   begin
-      Clear (Win);
-   end New_Page;
-
-   procedure New_Page
-   is
-   begin
-      New_Page (Get_Window);
-   end New_Page;
-
-   procedure Set_Col (Win : Window;  To : Positive_Count)
-   is
-      Y  : Line_Position;
-      X1 : Column_Position;
-      X2 : Column_Position;
-      N  : Natural;
-   begin
-      if not To'Valid then
-         raise Constraint_Error;
-      end if;
-
-      Get_Cursor_Position (Win, Y, X1);
-      N  := Natural (To); N := N - 1;
-      X2 := Column_Position (N);
-      if X1 > X2 then
-         New_Line (Win, 1);
-         X1 := 0;
-      end if;
-      if X1 < X2 then
-         declare
-            Filler : constant String (Integer (X1) .. (Integer (X2) - 1))
-              := (others => ' ');
-         begin
-            Put (Win, Filler);
-         end;
-      end if;
-   end Set_Col;
-
-   procedure Set_Col (To : Positive_Count)
-   is
-   begin
-      Set_Col (Get_Window, To);
-   end Set_Col;
-
-   procedure Set_Line (Win : Window; To : Positive_Count)
-   is
-      Y1 : Line_Position;
-      Y2 : Line_Position;
-      X  : Column_Position;
-      N  : Natural;
-   begin
-      if not To'Valid then
-         raise Constraint_Error;
-      end if;
-
-      Get_Cursor_Position (Win, Y1, X);
-      pragma Unreferenced (X);
-      N  := Natural (To); N := N - 1;
-      Y2 := Line_Position (N);
-      if Y2 < Y1 then
-         New_Page (Win);
-         Y1 := 0;
-      end if;
-      if Y1 < Y2 then
-         New_Line (Win, Positive_Count (Y2 - Y1));
-      end if;
-   end Set_Line;
-
-   procedure Set_Line (To : Positive_Count)
-   is
-   begin
-      Set_Line (Get_Window, To);
-   end Set_Line;
-
-   function Col (Win : Window) return Positive_Count
-   is
-      Y : Line_Position;
-      X : Column_Position;
-      N : Natural;
-   begin
-      Get_Cursor_Position (Win, Y, X);
-      N := Natural (X); N := N + 1;
-      --  if N > Natural (Count'Last) then
-      --     raise Layout_Error;
-      --  end if;
-      return Positive_Count (N);
-   end Col;
-
-   function Col return Positive_Count
-   is
-   begin
-      return Col (Get_Window);
-   end Col;
-
-   function Line (Win : Window) return Positive_Count
-   is
-      Y : Line_Position;
-      X : Column_Position;
-      N : Natural;
-   begin
-      Get_Cursor_Position (Win, Y, X);
-      N := Natural (Y); N := N + 1;
-      --  if N > Natural (Count'Last) then
-      --     raise Layout_Error;
-      --  end if;
-      return Positive_Count (N);
-   end Line;
-
-   function Line return Positive_Count
-   is
-   begin
-      return Line (Get_Window);
-   end Line;
-
-   -----------------------
-   -- Characters Output --
-   -----------------------
-
-   procedure Put (Win  : Window; Item : Character)
-   is
-      P_Size : constant Count := Page_Length (Win);
-      Y : Line_Position;
-      X : Column_Position;
-      L : Line_Count;
-      C : Column_Count;
-   begin
-      if P_Size > 0 then
-         Get_Cursor_Position (Win, Y, X);
-         Get_Size (Win, L, C);
-         if (Y + 1) = L and then (X + 1) = C then
-            New_Page (Win);
-         end if;
-      end if;
-      Add (Win, Item);
-   end Put;
-
-   procedure Put (Item : Character)
-   is
-   begin
-      Put (Get_Window, Item);
-   end Put;
-
-   --------------------
-   -- Strings-Output --
-   --------------------
-
-   procedure Put (Win  : Window; Item : String)
-   is
-      P_Size : constant Count := Page_Length (Win);
-      Y : Line_Position;
-      X : Column_Position;
-      L : Line_Count;
-      C : Column_Count;
-   begin
-      if P_Size > 0 then
-         Get_Cursor_Position (Win, Y, X);
-         Get_Size (Win, L, C);
-         if (Y + 1) = L and then (X + 1 + Item'Length) >= C then
-            New_Page (Win);
-         end if;
-      end if;
-      Add (Win, Item);
-   end Put;
-
-   procedure Put (Item : String)
-   is
-   begin
-      Put (Get_Window, Item);
-   end Put;
-
-   procedure Put_Line
-     (Win  : Window;
-      Item : String)
-   is
-   begin
-      Put (Win, Item);
-      New_Line (Win, 1);
-   end Put_Line;
-
-   procedure Put_Line
-     (Item : String)
-   is
-   begin
-      Put_Line (Get_Window, Item);
-   end Put_Line;
-
-end Terminal_Interface.Curses.Text_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io__ads.htm deleted file mode 100644 index 36f9476..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-text_io__ads.htm +++ /dev/null @@ -1,142 +0,0 @@ - -terminal_interface-curses-text_io.ads - -

File : terminal_interface-curses-text_io.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                     Terminal_Interface.Curses.Text_IO                    --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2003,2009 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, 1996
---  Version Control:
---  @Revision: 1.14 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with Ada.Text_IO;
-with Ada.IO_Exceptions;
-
-package Terminal_Interface.Curses.Text_IO is
-
-   use type Ada.Text_IO.Count;
-   subtype Count is Ada.Text_IO.Count;
-   subtype Positive_Count is Count range 1 .. Count'Last;
-
-   subtype Field is Ada.Text_IO.Field;
-   subtype Number_Base is Integer range 2 .. 16;
-
-   type Type_Set is (Lower_Case, Upper_Case, Mixed_Case);
-
-   --  For most of the routines you will see a version without a Window
-   --  type parameter. They will operate on a default window, which can
-   --  be set by the user. It is initially equal to Standard_Window.
-
-   procedure Set_Window (Win : Window);
-   --  Set Win as the default window
-
-   function Get_Window return Window;
-   --  Get the current default window
-
-   procedure Flush (Win : Window);
-   procedure Flush;
-
-   --------------------------------------------
-   -- Specification of line and page lengths --
-   --------------------------------------------
-
-   --  There are no set routines in this package. I assume, that you allocate
-   --  the window with an appropriate size.
-   --  A scroll-window is interpreted as an page with unbounded page length,
-   --  i.e. it returns the conventional 0 as page length.
-
-   function Line_Length (Win : Window) return Count;
-   function Line_Length return Count;
-
-   function Page_Length (Win : Window) return Count;
-   function Page_Length return Count;
-
-   ------------------------------------
-   -- Column, Line, and Page Control --
-   ------------------------------------
-   procedure New_Line (Win : Window; Spacing : Positive_Count := 1);
-   procedure New_Line (Spacing : Positive_Count := 1);
-
-   procedure New_Page (Win : Window);
-   procedure New_Page;
-
-   procedure Set_Col (Win : Window;  To : Positive_Count);
-   procedure Set_Col (To : Positive_Count);
-
-   procedure Set_Line (Win : Window; To : Positive_Count);
-   procedure Set_Line (To : Positive_Count);
-
-   function Col (Win : Window) return Positive_Count;
-   function Col return Positive_Count;
-
-   function Line (Win : Window) return Positive_Count;
-   function Line return Positive_Count;
-
-   -----------------------
-   -- Characters-Output --
-   -----------------------
-
-   procedure Put (Win  : Window; Item : Character);
-   procedure Put (Item : Character);
-
-   --------------------
-   -- Strings-Output --
-   --------------------
-
-   procedure Put (Win  : Window; Item : String);
-   procedure Put (Item : String);
-
-   procedure Put_Line
-     (Win  : Window;
-      Item : String);
-
-   procedure Put_Line
-     (Item : String);
-
-   --  Exceptions
-
-   Status_Error : exception renames Ada.IO_Exceptions.Status_Error;
-   Mode_Error   : exception renames Ada.IO_Exceptions.Mode_Error;
-   Name_Error   : exception renames Ada.IO_Exceptions.Name_Error;
-   Use_Error    : exception renames Ada.IO_Exceptions.Use_Error;
-   Device_Error : exception renames Ada.IO_Exceptions.Device_Error;
-   End_Error    : exception renames Ada.IO_Exceptions.End_Error;
-   Data_Error   : exception renames Ada.IO_Exceptions.Data_Error;
-   Layout_Error : exception renames Ada.IO_Exceptions.Layout_Error;
-
-end Terminal_Interface.Curses.Text_IO;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-trace__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-trace__adb.htm deleted file mode 100644 index b771291..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-trace__adb.htm +++ /dev/null @@ -1,62 +0,0 @@ - -terminal_interface-curses-trace.adb - -

File : terminal_interface-curses-trace.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Trace                     --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 2000-2004,2009 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, 1996
---  Version Control:
---  @Revision: 1.7 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-package body Terminal_Interface.Curses.Trace is
-
-   procedure Trace_On (x : Trace_Attribute_Set) is
-   pragma Unreferenced (x);
-   begin
-      null;
-   end Trace_On;
-
-   procedure Trace_Put (str : String) is
-   pragma Unreferenced (str);
-   begin
-      null;
-   end Trace_Put;
-
-end Terminal_Interface.Curses.Trace;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-trace__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-trace__ads.htm deleted file mode 100644 index 6aa1e8c..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses-trace__ads.htm +++ /dev/null @@ -1,122 +0,0 @@ - -terminal_interface-curses-trace.ads - -

File : terminal_interface-curses-trace.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                      Terminal_Interface.Curses.Trace                     --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 2000 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: Eugene V. Melaragno <aldomel@ix.netcom.com> 2000
---  Version Control:
---  @Revision: 1.1 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-
-package Terminal_Interface.Curses.Trace is
-   pragma Preelaborate (Terminal_Interface.Curses.Trace);
-
-   pragma Warnings (Off);
-   type Trace_Attribute_Set is
-      record
-         Times                 : Boolean;
-         Tputs                 : Boolean;
-         Update                : Boolean;
-         Cursor_Move           : Boolean;
-         Character_Output      : Boolean;
-         Calls                 : Boolean;
-         Virtual_Puts          : Boolean;
-         Input_Events          : Boolean;
-         TTY_State             : Boolean;
-         Internal_Calls        : Boolean;
-         Character_Calls       : Boolean;
-         Termcap_TermInfo      : Boolean;
-         Attributes_And_Colors : Boolean;
-         Unused                : Boolean;
-      end record;
-   pragma Convention (C, Trace_Attribute_Set);
-
-   for Trace_Attribute_Set use
-      record
-         Times                 at 0 range  0 ..  0;
-         Tputs                 at 0 range  1 ..  1;
-         Update                at 0 range  2 ..  2;
-         Cursor_Move           at 0 range  3 ..  3;
-         Character_Output      at 0 range  4 ..  4;
-         Calls                 at 0 range  5 ..  5;
-         Virtual_Puts          at 0 range  6 ..  6;
-         Input_Events          at 0 range  7 ..  7;
-         TTY_State             at 0 range  8 ..  8;
-         Internal_Calls        at 0 range  9 ..  9;
-         Character_Calls       at 0 range 10 .. 10;
-         Termcap_TermInfo      at 0 range 11 .. 11;
-         Attributes_And_Colors at 0 range 12 .. 12;
-         Unused                at 0 range 13 .. 31;
-      end record;
-   for Trace_Attribute_Set'Size use 32;
-   --  Please note: this rep. clause is generated and may be
-   --               different on your system.
-
-   pragma Warnings (On);
-
-   Trace_Disable  : constant Trace_Attribute_Set := (others => False);
-
-   Trace_Ordinary : constant Trace_Attribute_Set :=
-     (Times            => True,
-      Tputs            => True,
-      Update           => True,
-      Cursor_Move      => True,
-      Character_Output => True,
-      others           => False);
-   Trace_Maximum : constant Trace_Attribute_Set := (others => True);
-
-------------------------------------------------------------------------------
-
-   --  |=====================================================================
-   --  | Man page curs_trace.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_1"#2|
-   procedure Trace_On (x : Trace_Attribute_Set);
-   --  The debugging library has trace.
-
-   --  #1A NAME="AFU_2"#2|
-   procedure Trace_Put (str : String);
-   --  AKA: _tracef()
-
-   Current_Trace_Setting : Trace_Attribute_Set;
-   pragma Import (C, Current_Trace_Setting, "_nc_tracing");
-
-end Terminal_Interface.Curses.Trace;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses__adb.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses__adb.htm deleted file mode 100644 index 272b003..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses__adb.htm +++ /dev/null @@ -1,2562 +0,0 @@ - -terminal_interface-curses.adb - -

File : terminal_interface-curses.adb


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                        Terminal_Interface.Curses                         --
---                                                                          --
---                                 B O D Y                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.8 @
---  @Date: 2011/03/22 23:02:14 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-with System;
-
-with Terminal_Interface.Curses.Aux;
-with Interfaces.C;                  use Interfaces.C;
-with Interfaces.C.Strings;          use Interfaces.C.Strings;
-with Ada.Characters.Handling;       use Ada.Characters.Handling;
-with Ada.Strings.Fixed;
-
-package body Terminal_Interface.Curses is
-
-   use Aux;
-   use type System.Bit_Order;
-
-   package ASF renames Ada.Strings.Fixed;
-
-   type chtype_array is array (size_t range <>)
-      of aliased Attributed_Character;
-   pragma Convention (C, chtype_array);
-
-------------------------------------------------------------------------------
-   function Key_Name (Key : Real_Key_Code) return String
-   is
-      function Keyname (K : C_Int) return chars_ptr;
-      pragma Import (C, Keyname, "keyname");
-
-      Ch : Character;
-   begin
-      if Key <= Character'Pos (Character'Last) then
-         Ch := Character'Val (Key);
-         if Is_Control (Ch) then
-            return Un_Control (Attributed_Character'(Ch    => Ch,
-                                                     Color => Color_Pair'First,
-                                                     Attr  => Normal_Video));
-         elsif Is_Graphic (Ch) then
-            declare
-               S : String (1 .. 1);
-            begin
-               S (1) := Ch;
-               return S;
-            end;
-         else
-            return "";
-         end if;
-      else
-         return Fill_String (Keyname (C_Int (Key)));
-      end if;
-   end Key_Name;
-
-   procedure Key_Name (Key  :  Real_Key_Code;
-                       Name : out String)
-   is
-   begin
-      ASF.Move (Key_Name (Key), Name);
-   end Key_Name;
-
-------------------------------------------------------------------------------
-   procedure Init_Screen
-   is
-      function Initscr return Window;
-      pragma Import (C, Initscr, "initscr");
-
-      W : Window;
-   begin
-      W := Initscr;
-      if W = Null_Window then
-         raise Curses_Exception;
-      end if;
-   end Init_Screen;
-
-   procedure End_Windows
-   is
-      function Endwin return C_Int;
-      pragma Import (C, Endwin, "endwin");
-   begin
-      if Endwin = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end End_Windows;
-
-   function Is_End_Window return Boolean
-   is
-      function Isendwin return Curses_Bool;
-      pragma Import (C, Isendwin, "isendwin");
-   begin
-      if Isendwin = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Is_End_Window;
-------------------------------------------------------------------------------
-   procedure Move_Cursor (Win    : Window := Standard_Window;
-                          Line   : Line_Position;
-                          Column : Column_Position)
-   is
-      function Wmove (Win    : Window;
-                      Line   : C_Int;
-                      Column : C_Int
-                     ) return C_Int;
-      pragma Import (C, Wmove, "wmove");
-   begin
-      if Wmove (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Move_Cursor;
-------------------------------------------------------------------------------
-   procedure Add (Win : Window := Standard_Window;
-                  Ch  : Attributed_Character)
-   is
-      function Waddch (W  : Window;
-                       Ch : C_Chtype) return C_Int;
-      pragma Import (C, Waddch, "waddch");
-   begin
-      if Waddch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Add;
-
-   procedure Add (Win : Window := Standard_Window;
-                  Ch  : Character)
-   is
-   begin
-      Add (Win,
-           Attributed_Character'(Ch    => Ch,
-                                 Color => Color_Pair'First,
-                                 Attr  => Normal_Video));
-   end Add;
-
-   procedure Add
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Ch     : Attributed_Character)
-   is
-      function mvwaddch (W  : Window;
-                         Y  : C_Int;
-                         X  : C_Int;
-                         Ch : C_Chtype) return C_Int;
-      pragma Import (C, mvwaddch, "mvwaddch");
-   begin
-      if mvwaddch (Win, C_Int (Line),
-                   C_Int (Column),
-                   AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Add;
-
-   procedure Add
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Ch     : Character)
-   is
-   begin
-      Add (Win,
-           Line,
-           Column,
-           Attributed_Character'(Ch    => Ch,
-                                 Color => Color_Pair'First,
-                                 Attr  => Normal_Video));
-   end Add;
-
-   procedure Add_With_Immediate_Echo
-     (Win : Window := Standard_Window;
-      Ch  : Attributed_Character)
-   is
-      function Wechochar (W  : Window;
-                          Ch : C_Chtype) return C_Int;
-      pragma Import (C, Wechochar, "wechochar");
-   begin
-      if Wechochar (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Add_With_Immediate_Echo;
-
-   procedure Add_With_Immediate_Echo
-     (Win : Window := Standard_Window;
-      Ch  : Character)
-   is
-   begin
-      Add_With_Immediate_Echo
-        (Win,
-         Attributed_Character'(Ch    => Ch,
-                               Color => Color_Pair'First,
-                               Attr  => Normal_Video));
-   end Add_With_Immediate_Echo;
-------------------------------------------------------------------------------
-   function Create (Number_Of_Lines       : Line_Count;
-                    Number_Of_Columns     : Column_Count;
-                    First_Line_Position   : Line_Position;
-                    First_Column_Position : Column_Position) return Window
-   is
-      function Newwin (Number_Of_Lines       : C_Int;
-                       Number_Of_Columns     : C_Int;
-                       First_Line_Position   : C_Int;
-                       First_Column_Position : C_Int) return Window;
-      pragma Import (C, Newwin, "newwin");
-
-      W : Window;
-   begin
-      W := Newwin (C_Int (Number_Of_Lines),
-                   C_Int (Number_Of_Columns),
-                   C_Int (First_Line_Position),
-                   C_Int (First_Column_Position));
-      if W = Null_Window then
-         raise Curses_Exception;
-      end if;
-      return W;
-   end Create;
-
-   procedure Delete (Win : in out Window)
-   is
-      function Wdelwin (W : Window) return C_Int;
-      pragma Import (C, Wdelwin, "delwin");
-   begin
-      if Wdelwin (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-      Win := Null_Window;
-   end Delete;
-
-   function Sub_Window
-     (Win                   : Window := Standard_Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window
-   is
-      function Subwin
-        (Win                   : Window;
-         Number_Of_Lines       : C_Int;
-         Number_Of_Columns     : C_Int;
-         First_Line_Position   : C_Int;
-         First_Column_Position : C_Int) return Window;
-      pragma Import (C, Subwin, "subwin");
-
-      W : Window;
-   begin
-      W := Subwin (Win,
-                   C_Int (Number_Of_Lines),
-                   C_Int (Number_Of_Columns),
-                   C_Int (First_Line_Position),
-                   C_Int (First_Column_Position));
-      if W = Null_Window then
-         raise Curses_Exception;
-      end if;
-      return W;
-   end Sub_Window;
-
-   function Derived_Window
-     (Win                   : Window := Standard_Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window
-   is
-      function Derwin
-        (Win                   : Window;
-         Number_Of_Lines       : C_Int;
-         Number_Of_Columns     : C_Int;
-         First_Line_Position   : C_Int;
-         First_Column_Position : C_Int) return Window;
-      pragma Import (C, Derwin, "derwin");
-
-      W : Window;
-   begin
-      W := Derwin (Win,
-                   C_Int (Number_Of_Lines),
-                   C_Int (Number_Of_Columns),
-                   C_Int (First_Line_Position),
-                   C_Int (First_Column_Position));
-      if W = Null_Window then
-         raise Curses_Exception;
-      end if;
-      return W;
-   end Derived_Window;
-
-   function Duplicate (Win : Window) return Window
-   is
-      function Dupwin (Win : Window) return Window;
-      pragma Import (C, Dupwin, "dupwin");
-
-      W : constant Window := Dupwin (Win);
-   begin
-      if W = Null_Window then
-         raise Curses_Exception;
-      end if;
-      return W;
-   end Duplicate;
-
-   procedure Move_Window (Win    : Window;
-                          Line   : Line_Position;
-                          Column : Column_Position)
-   is
-      function Mvwin (Win    : Window;
-                      Line   : C_Int;
-                      Column : C_Int) return C_Int;
-      pragma Import (C, Mvwin, "mvwin");
-   begin
-      if Mvwin (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Move_Window;
-
-   procedure Move_Derived_Window (Win    : Window;
-                                  Line   : Line_Position;
-                                  Column : Column_Position)
-   is
-      function Mvderwin (Win    : Window;
-                         Line   : C_Int;
-                         Column : C_Int) return C_Int;
-      pragma Import (C, Mvderwin, "mvderwin");
-   begin
-      if Mvderwin (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Move_Derived_Window;
-
-   procedure Set_Synch_Mode (Win  : Window  := Standard_Window;
-                             Mode : Boolean := False)
-   is
-      function Syncok (Win  : Window;
-                       Mode : Curses_Bool) return C_Int;
-      pragma Import (C, Syncok, "syncok");
-   begin
-      if Syncok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Synch_Mode;
-------------------------------------------------------------------------------
-   procedure Add (Win : Window := Standard_Window;
-                  Str : String;
-                  Len : Integer := -1)
-   is
-      function Waddnstr (Win : Window;
-                         Str : char_array;
-                         Len : C_Int := -1) return C_Int;
-      pragma Import (C, Waddnstr, "waddnstr");
-
-      Txt    : char_array (0 .. Str'Length);
-      Length : size_t;
-   begin
-      To_C (Str, Txt, Length);
-      if Waddnstr (Win, Txt, C_Int (Len)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Add;
-
-   procedure Add
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Str    : String;
-      Len    : Integer := -1)
-   is
-   begin
-      Move_Cursor (Win, Line, Column);
-      Add (Win, Str, Len);
-   end Add;
-------------------------------------------------------------------------------
-   procedure Add
-     (Win : Window := Standard_Window;
-      Str : Attributed_String;
-      Len : Integer := -1)
-   is
-      function Waddchnstr (Win : Window;
-                           Str : chtype_array;
-                           Len : C_Int := -1) return C_Int;
-      pragma Import (C, Waddchnstr, "waddchnstr");
-
-      Txt : chtype_array (0 .. Str'Length);
-   begin
-      for Length in 1 .. size_t (Str'Length) loop
-         Txt (Length - 1) := Str (Natural (Length));
-      end loop;
-      Txt (Str'Length) := Default_Character;
-      if Waddchnstr (Win,
-                     Txt,
-                     C_Int (Len)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Add;
-
-   procedure Add
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Str    : Attributed_String;
-      Len    : Integer := -1)
-   is
-   begin
-      Move_Cursor (Win, Line, Column);
-      Add (Win, Str, Len);
-   end Add;
-------------------------------------------------------------------------------
-   procedure Border
-     (Win                       : Window := Standard_Window;
-      Left_Side_Symbol          : Attributed_Character := Default_Character;
-      Right_Side_Symbol         : Attributed_Character := Default_Character;
-      Top_Side_Symbol           : Attributed_Character := Default_Character;
-      Bottom_Side_Symbol        : Attributed_Character := Default_Character;
-      Upper_Left_Corner_Symbol  : Attributed_Character := Default_Character;
-      Upper_Right_Corner_Symbol : Attributed_Character := Default_Character;
-      Lower_Left_Corner_Symbol  : Attributed_Character := Default_Character;
-      Lower_Right_Corner_Symbol : Attributed_Character := Default_Character)
-   is
-      function Wborder (W   : Window;
-                        LS  : C_Chtype;
-                        RS  : C_Chtype;
-                        TS  : C_Chtype;
-                        BS  : C_Chtype;
-                        ULC : C_Chtype;
-                        URC : C_Chtype;
-                        LLC : C_Chtype;
-                        LRC : C_Chtype) return C_Int;
-      pragma Import (C, Wborder, "wborder");
-   begin
-      if Wborder (Win,
-                  AttrChar_To_Chtype (Left_Side_Symbol),
-                  AttrChar_To_Chtype (Right_Side_Symbol),
-                  AttrChar_To_Chtype (Top_Side_Symbol),
-                  AttrChar_To_Chtype (Bottom_Side_Symbol),
-                  AttrChar_To_Chtype (Upper_Left_Corner_Symbol),
-                  AttrChar_To_Chtype (Upper_Right_Corner_Symbol),
-                  AttrChar_To_Chtype (Lower_Left_Corner_Symbol),
-                  AttrChar_To_Chtype (Lower_Right_Corner_Symbol)
-                  ) = Curses_Err
-      then
-         raise Curses_Exception;
-      end if;
-   end Border;
-
-   procedure Box
-     (Win               : Window := Standard_Window;
-      Vertical_Symbol   : Attributed_Character := Default_Character;
-      Horizontal_Symbol : Attributed_Character := Default_Character)
-   is
-   begin
-      Border (Win,
-              Vertical_Symbol, Vertical_Symbol,
-              Horizontal_Symbol, Horizontal_Symbol);
-   end Box;
-
-   procedure Horizontal_Line
-     (Win         : Window := Standard_Window;
-      Line_Size   : Natural;
-      Line_Symbol : Attributed_Character := Default_Character)
-   is
-      function Whline (W   : Window;
-                       Ch  : C_Chtype;
-                       Len : C_Int) return C_Int;
-      pragma Import (C, Whline, "whline");
-   begin
-      if Whline (Win,
-                 AttrChar_To_Chtype (Line_Symbol),
-                 C_Int (Line_Size)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Horizontal_Line;
-
-   procedure Vertical_Line
-     (Win         : Window := Standard_Window;
-      Line_Size   : Natural;
-      Line_Symbol : Attributed_Character := Default_Character)
-   is
-      function Wvline (W   : Window;
-                       Ch  : C_Chtype;
-                       Len : C_Int) return C_Int;
-      pragma Import (C, Wvline, "wvline");
-   begin
-      if Wvline (Win,
-                 AttrChar_To_Chtype (Line_Symbol),
-                 C_Int (Line_Size)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Vertical_Line;
-
-------------------------------------------------------------------------------
-   function Get_Keystroke (Win : Window := Standard_Window)
-     return Real_Key_Code
-   is
-      function Wgetch (W : Window) return C_Int;
-      pragma Import (C, Wgetch, "wgetch");
-
-      C : constant C_Int := Wgetch (Win);
-   begin
-      if C = Curses_Err then
-         return Key_None;
-      else
-         return Real_Key_Code (C);
-      end if;
-   end Get_Keystroke;
-
-   procedure Undo_Keystroke (Key : Real_Key_Code)
-   is
-      function Ungetch (Ch : C_Int) return C_Int;
-      pragma Import (C, Ungetch, "ungetch");
-   begin
-      if Ungetch (C_Int (Key)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Undo_Keystroke;
-
-   function Has_Key (Key : Special_Key_Code) return Boolean
-   is
-      function Haskey (Key : C_Int) return C_Int;
-      pragma Import (C, Haskey, "has_key");
-   begin
-      if Haskey (C_Int (Key)) = Curses_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Has_Key;
-
-   function Is_Function_Key (Key : Special_Key_Code) return Boolean
-   is
-      L : constant Special_Key_Code  := Special_Key_Code (Natural (Key_F0) +
-        Natural (Function_Key_Number'Last));
-   begin
-      if (Key >= Key_F0) and then (Key <= L) then
-         return True;
-      else
-         return False;
-      end if;
-   end Is_Function_Key;
-
-   function Function_Key (Key : Real_Key_Code)
-                          return Function_Key_Number
-   is
-   begin
-      if Is_Function_Key (Key) then
-         return Function_Key_Number (Key - Key_F0);
-      else
-         raise Constraint_Error;
-      end if;
-   end Function_Key;
-
-   function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code
-   is
-   begin
-      return Real_Key_Code (Natural (Key_F0) + Natural (Key));
-   end Function_Key_Code;
-------------------------------------------------------------------------------
-   procedure Standout (Win : Window  := Standard_Window;
-                       On  : Boolean := True)
-   is
-      function wstandout (Win : Window) return C_Int;
-      pragma Import (C, wstandout, "wstandout");
-      function wstandend (Win : Window) return C_Int;
-      pragma Import (C, wstandend, "wstandend");
-
-      Err : C_Int;
-   begin
-      if On then
-         Err := wstandout (Win);
-      else
-         Err := wstandend (Win);
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Standout;
-
-   procedure Switch_Character_Attribute
-     (Win  : Window := Standard_Window;
-      Attr : Character_Attribute_Set := Normal_Video;
-      On   : Boolean := True)
-   is
-      function Wattron (Win    : Window;
-                        C_Attr : C_AttrType) return C_Int;
-      pragma Import (C, Wattron, "wattr_on");
-      function Wattroff (Win    : Window;
-                         C_Attr : C_AttrType) return C_Int;
-      pragma Import (C, Wattroff, "wattr_off");
-      --  In Ada we use the On Boolean to control whether or not we want to
-      --  switch on or off the attributes in the set.
-      Err : C_Int;
-      AC  : constant Attributed_Character := (Ch    => Character'First,
-                                              Color => Color_Pair'First,
-                                              Attr  => Attr);
-   begin
-      if On then
-         Err := Wattron  (Win, AttrChar_To_AttrType (AC));
-      else
-         Err := Wattroff (Win, AttrChar_To_AttrType (AC));
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Switch_Character_Attribute;
-
-   procedure Set_Character_Attributes
-     (Win   : Window := Standard_Window;
-      Attr  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First)
-   is
-      function Wattrset (Win    : Window;
-                         C_Attr : C_AttrType) return C_Int;
-      pragma Import (C, Wattrset, "wattrset"); -- ??? wattr_set
-   begin
-      if Wattrset (Win,
-                   AttrChar_To_AttrType (Attributed_Character'
-                                         (Ch    => Character'First,
-                                          Color => Color,
-                                          Attr  => Attr))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Character_Attributes;
-
-   function Get_Character_Attribute (Win : Window := Standard_Window)
-                                     return Character_Attribute_Set
-   is
-      function Wattrget (Win : Window;
-                         Atr : access C_AttrType;
-                         Col : access C_Short;
-                         Opt : System.Address) return C_Int;
-      pragma Import (C, Wattrget, "wattr_get");
-
-      Attr : aliased C_AttrType;
-      Col  : aliased C_Short;
-      Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
-                                         System.Null_Address);
-      Ch   : Attributed_Character;
-   begin
-      if Res = Curses_Ok then
-         Ch := AttrType_To_AttrChar (Attr);
-         return Ch.Attr;
-      else
-         raise Curses_Exception;
-      end if;
-   end Get_Character_Attribute;
-
-   function Get_Character_Attribute (Win : Window := Standard_Window)
-                                     return Color_Pair
-   is
-      function Wattrget (Win : Window;
-                         Atr : access C_AttrType;
-                         Col : access C_Short;
-                         Opt : System.Address) return C_Int;
-      pragma Import (C, Wattrget, "wattr_get");
-
-      Attr : aliased C_AttrType;
-      Col  : aliased C_Short;
-      Res  : constant C_Int := Wattrget (Win, Attr'Access, Col'Access,
-                                         System.Null_Address);
-      Ch   : Attributed_Character;
-   begin
-      if Res = Curses_Ok then
-         Ch := AttrType_To_AttrChar (Attr);
-         return Ch.Color;
-      else
-         raise Curses_Exception;
-      end if;
-   end Get_Character_Attribute;
-
-   procedure Set_Color (Win  : Window := Standard_Window;
-                        Pair : Color_Pair)
-   is
-      function Wset_Color (Win   : Window;
-                           Color : C_Short;
-                           Opts  : C_Void_Ptr) return C_Int;
-      pragma Import (C, Wset_Color, "wcolor_set");
-   begin
-      if Wset_Color (Win,
-                     C_Short (Pair),
-                     C_Void_Ptr (System.Null_Address)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Color;
-
-   procedure Change_Attributes
-     (Win   : Window := Standard_Window;
-      Count : Integer := -1;
-      Attr  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First)
-   is
-      function Wchgat (Win   : Window;
-                       Cnt   : C_Int;
-                       Attr  : C_AttrType;
-                       Color : C_Short;
-                       Opts  : System.Address := System.Null_Address)
-                       return C_Int;
-      pragma Import (C, Wchgat, "wchgat");
-
-      Ch : constant Attributed_Character :=
-        (Ch => Character'First, Color => Color_Pair'First, Attr => Attr);
-   begin
-      if Wchgat (Win, C_Int (Count), AttrChar_To_AttrType (Ch),
-                 C_Short (Color)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Change_Attributes;
-
-   procedure Change_Attributes
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position := Line_Position'First;
-      Column : Column_Position := Column_Position'First;
-      Count  : Integer := -1;
-      Attr   : Character_Attribute_Set := Normal_Video;
-      Color  : Color_Pair := Color_Pair'First)
-   is
-   begin
-      Move_Cursor (Win, Line, Column);
-      Change_Attributes (Win, Count, Attr, Color);
-   end Change_Attributes;
-------------------------------------------------------------------------------
-   procedure Beep
-   is
-      function Beeper return C_Int;
-      pragma Import (C, Beeper, "beep");
-   begin
-      if Beeper = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Beep;
-
-   procedure Flash_Screen
-   is
-      function Flash return C_Int;
-      pragma Import (C, Flash, "flash");
-   begin
-      if Flash = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Flash_Screen;
-------------------------------------------------------------------------------
-   procedure Set_Cbreak_Mode (SwitchOn : Boolean := True)
-   is
-      function Cbreak return C_Int;
-      pragma Import (C, Cbreak, "cbreak");
-      function NoCbreak return C_Int;
-      pragma Import (C, NoCbreak, "nocbreak");
-
-      Err : C_Int;
-   begin
-      if SwitchOn then
-         Err := Cbreak;
-      else
-         Err := NoCbreak;
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Cbreak_Mode;
-
-   procedure Set_Raw_Mode (SwitchOn : Boolean := True)
-   is
-      function Raw return C_Int;
-      pragma Import (C, Raw, "raw");
-      function NoRaw return C_Int;
-      pragma Import (C, NoRaw, "noraw");
-
-      Err : C_Int;
-   begin
-      if SwitchOn then
-         Err := Raw;
-      else
-         Err := NoRaw;
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Raw_Mode;
-
-   procedure Set_Echo_Mode (SwitchOn : Boolean := True)
-   is
-      function Echo return C_Int;
-      pragma Import (C, Echo, "echo");
-      function NoEcho return C_Int;
-      pragma Import (C, NoEcho, "noecho");
-
-      Err : C_Int;
-   begin
-      if SwitchOn then
-         Err := Echo;
-      else
-         Err := NoEcho;
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Echo_Mode;
-
-   procedure Set_Meta_Mode (Win      : Window := Standard_Window;
-                            SwitchOn : Boolean := True)
-   is
-      function Meta (W : Window; Mode : Curses_Bool) return C_Int;
-      pragma Import (C, Meta, "meta");
-   begin
-      if Meta (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Meta_Mode;
-
-   procedure Set_KeyPad_Mode (Win      : Window := Standard_Window;
-                              SwitchOn : Boolean := True)
-   is
-      function Keypad (W : Window; Mode : Curses_Bool) return C_Int;
-      pragma Import (C, Keypad, "keypad");
-   begin
-      if Keypad (Win, Curses_Bool (Boolean'Pos (SwitchOn))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_KeyPad_Mode;
-
-   function Get_KeyPad_Mode (Win : Window := Standard_Window)
-                             return Boolean
-   is
-      function Is_Keypad (W : Window) return Curses_Bool;
-      pragma Import (C, Is_Keypad, "is_keypad");
-   begin
-      return (Is_Keypad (Win) /= Curses_Bool_False);
-   end Get_KeyPad_Mode;
-
-   procedure Half_Delay (Amount : Half_Delay_Amount)
-   is
-      function Halfdelay (Amount : C_Int) return C_Int;
-      pragma Import (C, Halfdelay, "halfdelay");
-   begin
-      if Halfdelay (C_Int (Amount)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Half_Delay;
-
-   procedure Set_Flush_On_Interrupt_Mode
-     (Win  : Window := Standard_Window;
-      Mode : Boolean := True)
-   is
-      function Intrflush (Win : Window; Mode : Curses_Bool) return C_Int;
-      pragma Import (C, Intrflush, "intrflush");
-   begin
-      if Intrflush (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Flush_On_Interrupt_Mode;
-
-   procedure Set_Queue_Interrupt_Mode
-     (Win   : Window := Standard_Window;
-      Flush : Boolean := True)
-   is
-      procedure Qiflush;
-      pragma Import (C, Qiflush, "qiflush");
-      procedure No_Qiflush;
-      pragma Import (C, No_Qiflush, "noqiflush");
-   begin
-      if Win = Null_Window then
-         raise Curses_Exception;
-      end if;
-      if Flush then
-         Qiflush;
-      else
-         No_Qiflush;
-      end if;
-   end Set_Queue_Interrupt_Mode;
-
-   procedure Set_NoDelay_Mode
-     (Win  : Window := Standard_Window;
-      Mode : Boolean := False)
-   is
-      function Nodelay (Win : Window; Mode : Curses_Bool) return C_Int;
-      pragma Import (C, Nodelay, "nodelay");
-   begin
-      if Nodelay (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_NoDelay_Mode;
-
-   procedure Set_Timeout_Mode (Win    : Window := Standard_Window;
-                               Mode   : Timeout_Mode;
-                               Amount : Natural)
-   is
-      procedure Wtimeout (Win : Window; Amount : C_Int);
-      pragma Import (C, Wtimeout, "wtimeout");
-
-      Time : C_Int;
-   begin
-      case Mode is
-         when Blocking     => Time := -1;
-         when Non_Blocking => Time := 0;
-         when Delayed      =>
-            if Amount = 0 then
-               raise Constraint_Error;
-            end if;
-            Time := C_Int (Amount);
-      end case;
-      Wtimeout (Win, Time);
-   end Set_Timeout_Mode;
-
-   procedure Set_Escape_Timer_Mode
-     (Win       : Window := Standard_Window;
-      Timer_Off : Boolean := False)
-   is
-      function Notimeout (Win : Window; Mode : Curses_Bool) return C_Int;
-      pragma Import (C, Notimeout, "notimeout");
-   begin
-      if Notimeout (Win, Curses_Bool (Boolean'Pos (Timer_Off)))
-        = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Escape_Timer_Mode;
-
-------------------------------------------------------------------------------
-   procedure Set_NL_Mode (SwitchOn : Boolean := True)
-   is
-      function NL return C_Int;
-      pragma Import (C, NL, "nl");
-      function NoNL return C_Int;
-      pragma Import (C, NoNL, "nonl");
-
-      Err : C_Int;
-   begin
-      if SwitchOn then
-         Err := NL;
-      else
-         Err := NoNL;
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_NL_Mode;
-
-   procedure Clear_On_Next_Update
-     (Win      : Window := Standard_Window;
-      Do_Clear : Boolean := True)
-   is
-      function Clear_Ok (W : Window; Flag : Curses_Bool) return C_Int;
-      pragma Import (C, Clear_Ok, "clearok");
-   begin
-      if Clear_Ok (Win, Curses_Bool (Boolean'Pos (Do_Clear))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Clear_On_Next_Update;
-
-   procedure Use_Insert_Delete_Line
-     (Win    : Window := Standard_Window;
-      Do_Idl : Boolean := True)
-   is
-      function IDL_Ok (W : Window; Flag : Curses_Bool) return C_Int;
-      pragma Import (C, IDL_Ok, "idlok");
-   begin
-      if IDL_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idl))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Use_Insert_Delete_Line;
-
-   procedure Use_Insert_Delete_Character
-     (Win    : Window := Standard_Window;
-      Do_Idc : Boolean := True)
-   is
-      procedure IDC_Ok (W : Window; Flag : Curses_Bool);
-      pragma Import (C, IDC_Ok, "idcok");
-   begin
-      IDC_Ok (Win, Curses_Bool (Boolean'Pos (Do_Idc)));
-   end Use_Insert_Delete_Character;
-
-   procedure Leave_Cursor_After_Update
-     (Win      : Window := Standard_Window;
-      Do_Leave : Boolean := True)
-   is
-      function Leave_Ok (W : Window; Flag : Curses_Bool) return C_Int;
-      pragma Import (C, Leave_Ok, "leaveok");
-   begin
-      if Leave_Ok (Win, Curses_Bool (Boolean'Pos (Do_Leave))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Leave_Cursor_After_Update;
-
-   procedure Immediate_Update_Mode
-     (Win  : Window := Standard_Window;
-      Mode : Boolean := False)
-   is
-      procedure Immedok (Win : Window; Mode : Curses_Bool);
-      pragma Import (C, Immedok, "immedok");
-   begin
-      Immedok (Win, Curses_Bool (Boolean'Pos (Mode)));
-   end Immediate_Update_Mode;
-
-   procedure Allow_Scrolling
-     (Win  : Window  := Standard_Window;
-      Mode : Boolean := False)
-   is
-      function Scrollok (Win : Window; Mode : Curses_Bool) return C_Int;
-      pragma Import (C, Scrollok, "scrollok");
-   begin
-      if Scrollok (Win, Curses_Bool (Boolean'Pos (Mode))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Allow_Scrolling;
-
-   function Scrolling_Allowed (Win : Window := Standard_Window)
-                               return Boolean
-   is
-      function Is_Scroll_Ok (W : Window) return Curses_Bool;
-      pragma Import (C, Is_Scroll_Ok, "is_scrollok");
-   begin
-      return (Is_Scroll_Ok (Win) /= Curses_Bool_False);
-   end Scrolling_Allowed;
-
-   procedure Set_Scroll_Region
-     (Win         : Window := Standard_Window;
-      Top_Line    : Line_Position;
-      Bottom_Line : Line_Position)
-   is
-      function Wsetscrreg (Win : Window;
-                           Lin : C_Int;
-                           Col : C_Int) return C_Int;
-      pragma Import (C, Wsetscrreg, "wsetscrreg");
-   begin
-      if Wsetscrreg (Win, C_Int (Top_Line), C_Int (Bottom_Line))
-        = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Scroll_Region;
-------------------------------------------------------------------------------
-   procedure Update_Screen
-   is
-      function Do_Update return C_Int;
-      pragma Import (C, Do_Update, "doupdate");
-   begin
-      if Do_Update = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Update_Screen;
-
-   procedure Refresh (Win : Window := Standard_Window)
-   is
-      function Wrefresh (W : Window) return C_Int;
-      pragma Import (C, Wrefresh, "wrefresh");
-   begin
-      if Wrefresh (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Refresh;
-
-   procedure Refresh_Without_Update
-     (Win : Window := Standard_Window)
-   is
-      function Wnoutrefresh (W : Window) return C_Int;
-      pragma Import (C, Wnoutrefresh, "wnoutrefresh");
-   begin
-      if Wnoutrefresh (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Refresh_Without_Update;
-
-   procedure Redraw (Win : Window := Standard_Window)
-   is
-      function Redrawwin (Win : Window) return C_Int;
-      pragma Import (C, Redrawwin, "redrawwin");
-   begin
-      if Redrawwin (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Redraw;
-
-   procedure Redraw
-     (Win        : Window := Standard_Window;
-      Begin_Line : Line_Position;
-      Line_Count : Positive)
-   is
-      function Wredrawln (Win : Window; First : C_Int; Cnt : C_Int)
-                          return C_Int;
-      pragma Import (C, Wredrawln, "wredrawln");
-   begin
-      if Wredrawln (Win,
-                    C_Int (Begin_Line),
-                    C_Int (Line_Count)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Redraw;
-
-------------------------------------------------------------------------------
-   procedure Erase (Win : Window := Standard_Window)
-   is
-      function Werase (W : Window) return C_Int;
-      pragma Import (C, Werase, "werase");
-   begin
-      if Werase (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Erase;
-
-   procedure Clear (Win : Window := Standard_Window)
-   is
-      function Wclear (W : Window) return C_Int;
-      pragma Import (C, Wclear, "wclear");
-   begin
-      if Wclear (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Clear;
-
-   procedure Clear_To_End_Of_Screen (Win : Window := Standard_Window)
-   is
-      function Wclearbot (W : Window) return C_Int;
-      pragma Import (C, Wclearbot, "wclrtobot");
-   begin
-      if Wclearbot (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Clear_To_End_Of_Screen;
-
-   procedure Clear_To_End_Of_Line (Win : Window := Standard_Window)
-   is
-      function Wcleareol (W : Window) return C_Int;
-      pragma Import (C, Wcleareol, "wclrtoeol");
-   begin
-      if Wcleareol (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Clear_To_End_Of_Line;
-------------------------------------------------------------------------------
-   procedure Set_Background
-     (Win : Window := Standard_Window;
-      Ch  : Attributed_Character)
-   is
-      procedure WBackground (W : Window; Ch : C_Chtype);
-      pragma Import (C, WBackground, "wbkgdset");
-   begin
-      WBackground (Win, AttrChar_To_Chtype (Ch));
-   end Set_Background;
-
-   procedure Change_Background
-     (Win : Window := Standard_Window;
-      Ch  : Attributed_Character)
-   is
-      function WChangeBkgd (W : Window; Ch : C_Chtype) return C_Int;
-      pragma Import (C, WChangeBkgd, "wbkgd");
-   begin
-      if WChangeBkgd (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Change_Background;
-
-   function Get_Background (Win : Window := Standard_Window)
-     return Attributed_Character
-   is
-      function Wgetbkgd (Win : Window) return C_Chtype;
-      pragma Import (C, Wgetbkgd, "getbkgd");
-   begin
-      return Chtype_To_AttrChar (Wgetbkgd (Win));
-   end Get_Background;
-------------------------------------------------------------------------------
-   procedure Change_Lines_Status (Win   : Window := Standard_Window;
-                                  Start : Line_Position;
-                                  Count : Positive;
-                                  State : Boolean)
-   is
-      function Wtouchln (Win : Window;
-                         Sta : C_Int;
-                         Cnt : C_Int;
-                         Chg : C_Int) return C_Int;
-      pragma Import (C, Wtouchln, "wtouchln");
-   begin
-      if Wtouchln (Win, C_Int (Start), C_Int (Count),
-                   C_Int (Boolean'Pos (State))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Change_Lines_Status;
-
-   procedure Touch (Win : Window := Standard_Window)
-   is
-      Y : Line_Position;
-      X : Column_Position;
-   begin
-      Get_Size (Win, Y, X);
-      pragma Unreferenced (X);
-      Change_Lines_Status (Win, 0, Positive (Y), True);
-   end Touch;
-
-   procedure Untouch (Win : Window := Standard_Window)
-   is
-      Y : Line_Position;
-      X : Column_Position;
-   begin
-      Get_Size (Win, Y, X);
-      pragma Unreferenced (X);
-      Change_Lines_Status (Win, 0, Positive (Y), False);
-   end Untouch;
-
-   procedure Touch (Win   : Window := Standard_Window;
-                    Start : Line_Position;
-                    Count : Positive)
-   is
-   begin
-      Change_Lines_Status (Win, Start, Count, True);
-   end Touch;
-
-   function Is_Touched
-     (Win  : Window := Standard_Window;
-      Line : Line_Position) return Boolean
-   is
-      function WLineTouched (W : Window; L : C_Int) return Curses_Bool;
-      pragma Import (C, WLineTouched, "is_linetouched");
-   begin
-      if WLineTouched (Win, C_Int (Line)) = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Is_Touched;
-
-   function Is_Touched
-     (Win : Window := Standard_Window) return Boolean
-   is
-      function WWinTouched (W : Window) return Curses_Bool;
-      pragma Import (C, WWinTouched, "is_wintouched");
-   begin
-      if WWinTouched (Win) = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Is_Touched;
-------------------------------------------------------------------------------
-   procedure Copy
-     (Source_Window            : Window;
-      Destination_Window       : Window;
-      Source_Top_Row           : Line_Position;
-      Source_Left_Column       : Column_Position;
-      Destination_Top_Row      : Line_Position;
-      Destination_Left_Column  : Column_Position;
-      Destination_Bottom_Row   : Line_Position;
-      Destination_Right_Column : Column_Position;
-      Non_Destructive_Mode     : Boolean := True)
-   is
-      function Copywin (Src : Window;
-                        Dst : Window;
-                        Str : C_Int;
-                        Slc : C_Int;
-                        Dtr : C_Int;
-                        Dlc : C_Int;
-                        Dbr : C_Int;
-                        Drc : C_Int;
-                        Ndm : C_Int) return C_Int;
-      pragma Import (C, Copywin, "copywin");
-   begin
-      if Copywin (Source_Window,
-                  Destination_Window,
-                  C_Int (Source_Top_Row),
-                  C_Int (Source_Left_Column),
-                  C_Int (Destination_Top_Row),
-                  C_Int (Destination_Left_Column),
-                  C_Int (Destination_Bottom_Row),
-                  C_Int (Destination_Right_Column),
-                  Boolean'Pos (Non_Destructive_Mode)
-                ) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Copy;
-
-   procedure Overwrite
-     (Source_Window      : Window;
-      Destination_Window : Window)
-   is
-      function Overwrite (Src : Window; Dst : Window) return C_Int;
-      pragma Import (C, Overwrite, "overwrite");
-   begin
-      if Overwrite (Source_Window, Destination_Window) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Overwrite;
-
-   procedure Overlay
-     (Source_Window      : Window;
-      Destination_Window : Window)
-   is
-      function Overlay (Src : Window; Dst : Window) return C_Int;
-      pragma Import (C, Overlay, "overlay");
-   begin
-      if Overlay (Source_Window, Destination_Window) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Overlay;
-
-------------------------------------------------------------------------------
-   procedure Insert_Delete_Lines
-     (Win   : Window := Standard_Window;
-      Lines : Integer       := 1) -- default is to insert one line above
-   is
-      function Winsdelln (W : Window; N : C_Int) return C_Int;
-      pragma Import (C, Winsdelln, "winsdelln");
-   begin
-      if Winsdelln (Win, C_Int (Lines)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Insert_Delete_Lines;
-
-   procedure Delete_Line (Win : Window := Standard_Window)
-   is
-   begin
-      Insert_Delete_Lines (Win, -1);
-   end Delete_Line;
-
-   procedure Insert_Line (Win : Window := Standard_Window)
-   is
-   begin
-      Insert_Delete_Lines (Win, 1);
-   end Insert_Line;
-------------------------------------------------------------------------------
-
-   procedure Get_Size
-     (Win               : Window := Standard_Window;
-      Number_Of_Lines   : out Line_Count;
-      Number_Of_Columns : out Column_Count)
-   is
-      function GetMaxY (W : Window) return C_Int;
-      pragma Import (C, GetMaxY, "getmaxy");
-
-      function GetMaxX (W : Window) return C_Int;
-      pragma Import (C, GetMaxX, "getmaxx");
-
-      Y : constant C_Int := GetMaxY (Win);
-      X : constant C_Int := GetMaxX (Win);
-   begin
-      Number_Of_Lines   := Line_Count (Y);
-      Number_Of_Columns := Column_Count (X);
-   end Get_Size;
-
-   procedure Get_Window_Position
-     (Win             : Window := Standard_Window;
-      Top_Left_Line   : out Line_Position;
-      Top_Left_Column : out Column_Position)
-   is
-      function GetBegY (W : Window) return C_Int;
-      pragma Import (C, GetBegY, "getbegy");
-
-      function GetBegX (W : Window) return C_Int;
-      pragma Import (C, GetBegX, "getbegx");
-
-      Y : constant C_Short := C_Short (GetBegY (Win));
-      X : constant C_Short := C_Short (GetBegX (Win));
-   begin
-      Top_Left_Line   := Line_Position (Y);
-      Top_Left_Column := Column_Position (X);
-   end Get_Window_Position;
-
-   procedure Get_Cursor_Position
-     (Win    :  Window := Standard_Window;
-      Line   : out Line_Position;
-      Column : out Column_Position)
-   is
-      function GetCurY (W : Window) return C_Int;
-      pragma Import (C, GetCurY, "getcury");
-
-      function GetCurX (W : Window) return C_Int;
-      pragma Import (C, GetCurX, "getcurx");
-
-      Y : constant C_Short := C_Short (GetCurY (Win));
-      X : constant C_Short := C_Short (GetCurX (Win));
-   begin
-      Line   := Line_Position (Y);
-      Column := Column_Position (X);
-   end Get_Cursor_Position;
-
-   procedure Get_Origin_Relative_To_Parent
-     (Win                :  Window;
-      Top_Left_Line      : out Line_Position;
-      Top_Left_Column    : out Column_Position;
-      Is_Not_A_Subwindow : out Boolean)
-   is
-      function GetParY (W : Window) return C_Int;
-      pragma Import (C, GetParY, "getpary");
-
-      function GetParX (W : Window) return C_Int;
-      pragma Import (C, GetParX, "getparx");
-
-      Y : constant C_Int := GetParY (Win);
-      X : constant C_Int := GetParX (Win);
-   begin
-      if Y = -1 then
-         Top_Left_Line   := Line_Position'Last;
-         Top_Left_Column := Column_Position'Last;
-         Is_Not_A_Subwindow := True;
-      else
-         Top_Left_Line   := Line_Position (Y);
-         Top_Left_Column := Column_Position (X);
-         Is_Not_A_Subwindow := False;
-      end if;
-   end Get_Origin_Relative_To_Parent;
-------------------------------------------------------------------------------
-   function New_Pad (Lines   : Line_Count;
-                     Columns : Column_Count) return Window
-   is
-      function Newpad (Lines : C_Int; Columns : C_Int) return Window;
-      pragma Import (C, Newpad, "newpad");
-
-      W : Window;
-   begin
-      W := Newpad (C_Int (Lines), C_Int (Columns));
-      if W = Null_Window then
-         raise Curses_Exception;
-      end if;
-      return W;
-   end New_Pad;
-
-   function Sub_Pad
-     (Pad                   : Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window
-   is
-      function Subpad
-        (Pad                   : Window;
-         Number_Of_Lines       : C_Int;
-         Number_Of_Columns     : C_Int;
-         First_Line_Position   : C_Int;
-         First_Column_Position : C_Int) return Window;
-      pragma Import (C, Subpad, "subpad");
-
-      W : Window;
-   begin
-      W := Subpad (Pad,
-                   C_Int (Number_Of_Lines),
-                   C_Int (Number_Of_Columns),
-                   C_Int (First_Line_Position),
-                   C_Int (First_Column_Position));
-      if W = Null_Window then
-         raise Curses_Exception;
-      end if;
-      return W;
-   end Sub_Pad;
-
-   procedure Refresh
-     (Pad                      : Window;
-      Source_Top_Row           : Line_Position;
-      Source_Left_Column       : Column_Position;
-      Destination_Top_Row      : Line_Position;
-      Destination_Left_Column  : Column_Position;
-      Destination_Bottom_Row   : Line_Position;
-      Destination_Right_Column : Column_Position)
-   is
-      function Prefresh
-        (Pad                      : Window;
-         Source_Top_Row           : C_Int;
-         Source_Left_Column       : C_Int;
-         Destination_Top_Row      : C_Int;
-         Destination_Left_Column  : C_Int;
-         Destination_Bottom_Row   : C_Int;
-         Destination_Right_Column : C_Int) return C_Int;
-      pragma Import (C, Prefresh, "prefresh");
-   begin
-      if Prefresh (Pad,
-                   C_Int (Source_Top_Row),
-                   C_Int (Source_Left_Column),
-                   C_Int (Destination_Top_Row),
-                   C_Int (Destination_Left_Column),
-                   C_Int (Destination_Bottom_Row),
-                   C_Int (Destination_Right_Column)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Refresh;
-
-   procedure Refresh_Without_Update
-     (Pad                      : Window;
-      Source_Top_Row           : Line_Position;
-      Source_Left_Column       : Column_Position;
-      Destination_Top_Row      : Line_Position;
-      Destination_Left_Column  : Column_Position;
-      Destination_Bottom_Row   : Line_Position;
-      Destination_Right_Column : Column_Position)
-   is
-      function Pnoutrefresh
-        (Pad                      : Window;
-         Source_Top_Row           : C_Int;
-         Source_Left_Column       : C_Int;
-         Destination_Top_Row      : C_Int;
-         Destination_Left_Column  : C_Int;
-         Destination_Bottom_Row   : C_Int;
-         Destination_Right_Column : C_Int) return C_Int;
-      pragma Import (C, Pnoutrefresh, "pnoutrefresh");
-   begin
-      if Pnoutrefresh (Pad,
-                       C_Int (Source_Top_Row),
-                       C_Int (Source_Left_Column),
-                       C_Int (Destination_Top_Row),
-                       C_Int (Destination_Left_Column),
-                       C_Int (Destination_Bottom_Row),
-                       C_Int (Destination_Right_Column)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Refresh_Without_Update;
-
-   procedure Add_Character_To_Pad_And_Echo_It
-     (Pad : Window;
-      Ch  : Attributed_Character)
-   is
-      function Pechochar (Pad : Window; Ch : C_Chtype)
-                          return C_Int;
-      pragma Import (C, Pechochar, "pechochar");
-   begin
-      if Pechochar (Pad, AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Add_Character_To_Pad_And_Echo_It;
-
-   procedure Add_Character_To_Pad_And_Echo_It
-     (Pad : Window;
-      Ch  : Character)
-   is
-   begin
-      Add_Character_To_Pad_And_Echo_It
-        (Pad,
-         Attributed_Character'(Ch    => Ch,
-                               Color => Color_Pair'First,
-                               Attr  => Normal_Video));
-   end Add_Character_To_Pad_And_Echo_It;
-------------------------------------------------------------------------------
-   procedure Scroll (Win    : Window := Standard_Window;
-                     Amount : Integer := 1)
-   is
-      function Wscrl (Win : Window; N : C_Int) return C_Int;
-      pragma Import (C, Wscrl, "wscrl");
-
-   begin
-      if Wscrl (Win, C_Int (Amount)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Scroll;
-
-------------------------------------------------------------------------------
-   procedure Delete_Character (Win : Window := Standard_Window)
-   is
-      function Wdelch (Win : Window) return C_Int;
-      pragma Import (C, Wdelch, "wdelch");
-   begin
-      if Wdelch (Win) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Delete_Character;
-
-   procedure Delete_Character
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position)
-   is
-      function Mvwdelch (Win : Window;
-                         Lin : C_Int;
-                         Col : C_Int) return C_Int;
-      pragma Import (C, Mvwdelch, "mvwdelch");
-   begin
-      if Mvwdelch (Win, C_Int (Line), C_Int (Column)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Delete_Character;
-------------------------------------------------------------------------------
-   function Peek (Win : Window := Standard_Window)
-     return Attributed_Character
-   is
-      function Winch (Win : Window) return C_Chtype;
-      pragma Import (C, Winch, "winch");
-   begin
-      return Chtype_To_AttrChar (Winch (Win));
-   end Peek;
-
-   function Peek
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position) return Attributed_Character
-   is
-      function Mvwinch (Win : Window;
-                        Lin : C_Int;
-                        Col : C_Int) return C_Chtype;
-      pragma Import (C, Mvwinch, "mvwinch");
-   begin
-      return Chtype_To_AttrChar (Mvwinch (Win, C_Int (Line), C_Int (Column)));
-   end Peek;
-------------------------------------------------------------------------------
-   procedure Insert (Win : Window := Standard_Window;
-                     Ch  : Attributed_Character)
-   is
-      function Winsch (Win : Window; Ch : C_Chtype) return C_Int;
-      pragma Import (C, Winsch, "winsch");
-   begin
-      if Winsch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Insert;
-
-   procedure Insert
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Ch     : Attributed_Character)
-   is
-      function Mvwinsch (Win : Window;
-                         Lin : C_Int;
-                         Col : C_Int;
-                         Ch  : C_Chtype) return C_Int;
-      pragma Import (C, Mvwinsch, "mvwinsch");
-   begin
-      if Mvwinsch (Win,
-                   C_Int (Line),
-                   C_Int (Column),
-                   AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Insert;
-------------------------------------------------------------------------------
-   procedure Insert (Win : Window := Standard_Window;
-                     Str : String;
-                     Len : Integer := -1)
-   is
-      function Winsnstr (Win : Window;
-                         Str : char_array;
-                         Len : Integer := -1) return C_Int;
-      pragma Import (C, Winsnstr, "winsnstr");
-
-      Txt    : char_array (0 .. Str'Length);
-      Length : size_t;
-   begin
-      To_C (Str, Txt, Length);
-      if Winsnstr (Win, Txt, Len) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Insert;
-
-   procedure Insert
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Str    : String;
-      Len    : Integer := -1)
-   is
-      function Mvwinsnstr (Win    : Window;
-                           Line   : C_Int;
-                           Column : C_Int;
-                           Str    : char_array;
-                           Len    : C_Int) return C_Int;
-      pragma Import (C, Mvwinsnstr, "mvwinsnstr");
-
-      Txt    : char_array (0 .. Str'Length);
-      Length : size_t;
-   begin
-      To_C (Str, Txt, Length);
-      if Mvwinsnstr (Win, C_Int (Line), C_Int (Column), Txt, C_Int (Len))
-        = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Insert;
-------------------------------------------------------------------------------
-   procedure Peek (Win :  Window := Standard_Window;
-                   Str : out String;
-                   Len :  Integer := -1)
-   is
-      function Winnstr (Win : Window;
-                        Str : char_array;
-                        Len : C_Int) return C_Int;
-      pragma Import (C, Winnstr, "winnstr");
-
-      N   : Integer := Len;
-      Txt : char_array (0 .. Str'Length);
-      Cnt : Natural;
-   begin
-      if N < 0 then
-         N := Str'Length;
-      end if;
-      if N > Str'Length then
-         raise Constraint_Error;
-      end if;
-      Txt (0) := Interfaces.C.char'First;
-      if Winnstr (Win, Txt, C_Int (N)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-      To_Ada (Txt, Str, Cnt, True);
-      if Cnt < Str'Length then
-         Str ((Str'First + Cnt) .. Str'Last) := (others => ' ');
-      end if;
-   end Peek;
-
-   procedure Peek
-     (Win    :  Window := Standard_Window;
-      Line   :  Line_Position;
-      Column :  Column_Position;
-      Str    : out String;
-      Len    :  Integer := -1)
-   is
-   begin
-      Move_Cursor (Win, Line, Column);
-      Peek (Win, Str, Len);
-   end Peek;
-------------------------------------------------------------------------------
-   procedure Peek
-     (Win :  Window := Standard_Window;
-      Str : out Attributed_String;
-      Len :  Integer := -1)
-   is
-      function Winchnstr (Win : Window;
-                          Str : chtype_array;             -- out
-                          Len : C_Int) return C_Int;
-      pragma Import (C, Winchnstr, "winchnstr");
-
-      N   : Integer := Len;
-      Txt : constant chtype_array (0 .. Str'Length)
-          := (0 => Default_Character);
-      Cnt : Natural := 0;
-   begin
-      if N < 0 then
-         N := Str'Length;
-      end if;
-      if N > Str'Length then
-         raise Constraint_Error;
-      end if;
-      if Winchnstr (Win, Txt, C_Int (N)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-      for To in Str'Range loop
-         exit when Txt (size_t (Cnt)) = Default_Character;
-         Str (To) := Txt (size_t (Cnt));
-         Cnt := Cnt + 1;
-      end loop;
-      if Cnt < Str'Length then
-         Str ((Str'First + Cnt) .. Str'Last) :=
-           (others => (Ch => ' ',
-                       Color => Color_Pair'First,
-                       Attr => Normal_Video));
-      end if;
-   end Peek;
-
-   procedure Peek
-     (Win    :  Window := Standard_Window;
-      Line   :  Line_Position;
-      Column :  Column_Position;
-      Str    : out Attributed_String;
-      Len    : Integer := -1)
-   is
-   begin
-      Move_Cursor (Win, Line, Column);
-      Peek (Win, Str, Len);
-   end Peek;
-------------------------------------------------------------------------------
-   procedure Get (Win :  Window := Standard_Window;
-                  Str : out String;
-                  Len :  Integer := -1)
-   is
-      function Wgetnstr (Win : Window;
-                         Str : char_array;
-                         Len : C_Int) return C_Int;
-      pragma Import (C, Wgetnstr, "wgetnstr");
-
-      N   : Integer := Len;
-      Txt : char_array (0 .. Str'Length);
-      Cnt : Natural;
-   begin
-      if N < 0 then
-         N := Str'Length;
-      end if;
-      if N > Str'Length then
-         raise Constraint_Error;
-      end if;
-      Txt (0) := Interfaces.C.char'First;
-      if Wgetnstr (Win, Txt, C_Int (N)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-      To_Ada (Txt, Str, Cnt, True);
-      if Cnt < Str'Length then
-         Str ((Str'First + Cnt) .. Str'Last) := (others => ' ');
-      end if;
-   end Get;
-
-   procedure Get
-     (Win    :  Window := Standard_Window;
-      Line   :  Line_Position;
-      Column :  Column_Position;
-      Str    : out String;
-      Len    :  Integer := -1)
-   is
-   begin
-      Move_Cursor (Win, Line, Column);
-      Get (Win, Str, Len);
-   end Get;
-------------------------------------------------------------------------------
-   procedure Init_Soft_Label_Keys
-     (Format : Soft_Label_Key_Format := Three_Two_Three)
-   is
-      function Slk_Init (Fmt : C_Int) return C_Int;
-      pragma Import (C, Slk_Init, "slk_init");
-   begin
-      if Slk_Init (Soft_Label_Key_Format'Pos (Format)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Init_Soft_Label_Keys;
-
-   procedure Set_Soft_Label_Key (Label : Label_Number;
-                                 Text  : String;
-                                 Fmt   : Label_Justification := Left)
-   is
-      function Slk_Set (Label : C_Int;
-                        Txt   : char_array;
-                        Fmt   : C_Int) return C_Int;
-      pragma Import (C, Slk_Set, "slk_set");
-
-      Txt : char_array (0 .. Text'Length);
-      Len : size_t;
-   begin
-      To_C (Text, Txt, Len);
-      if Slk_Set (C_Int (Label), Txt,
-                  C_Int (Label_Justification'Pos (Fmt))) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Soft_Label_Key;
-
-   procedure Refresh_Soft_Label_Keys
-   is
-      function Slk_Refresh return C_Int;
-      pragma Import (C, Slk_Refresh, "slk_refresh");
-   begin
-      if Slk_Refresh = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Refresh_Soft_Label_Keys;
-
-   procedure Refresh_Soft_Label_Keys_Without_Update
-   is
-      function Slk_Noutrefresh return C_Int;
-      pragma Import (C, Slk_Noutrefresh, "slk_noutrefresh");
-   begin
-      if Slk_Noutrefresh = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Refresh_Soft_Label_Keys_Without_Update;
-
-   procedure Get_Soft_Label_Key (Label : Label_Number;
-                                 Text  : out String)
-   is
-      function Slk_Label (Label : C_Int) return chars_ptr;
-      pragma Import (C, Slk_Label, "slk_label");
-   begin
-      Fill_String (Slk_Label (C_Int (Label)), Text);
-   end Get_Soft_Label_Key;
-
-   function Get_Soft_Label_Key (Label : Label_Number) return String
-   is
-      function Slk_Label (Label : C_Int) return chars_ptr;
-      pragma Import (C, Slk_Label, "slk_label");
-   begin
-      return Fill_String (Slk_Label (C_Int (Label)));
-   end Get_Soft_Label_Key;
-
-   procedure Clear_Soft_Label_Keys
-   is
-      function Slk_Clear return C_Int;
-      pragma Import (C, Slk_Clear, "slk_clear");
-   begin
-      if Slk_Clear = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Clear_Soft_Label_Keys;
-
-   procedure Restore_Soft_Label_Keys
-   is
-      function Slk_Restore return C_Int;
-      pragma Import (C, Slk_Restore, "slk_restore");
-   begin
-      if Slk_Restore = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Restore_Soft_Label_Keys;
-
-   procedure Touch_Soft_Label_Keys
-   is
-      function Slk_Touch return C_Int;
-      pragma Import (C, Slk_Touch, "slk_touch");
-   begin
-      if Slk_Touch = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Touch_Soft_Label_Keys;
-
-   procedure Switch_Soft_Label_Key_Attributes
-     (Attr : Character_Attribute_Set;
-      On   : Boolean := True)
-   is
-      function Slk_Attron (Ch : C_Chtype) return C_Int;
-      pragma Import (C, Slk_Attron, "slk_attron");
-      function Slk_Attroff (Ch : C_Chtype) return C_Int;
-      pragma Import (C, Slk_Attroff, "slk_attroff");
-
-      Err : C_Int;
-      Ch  : constant Attributed_Character := (Ch    => Character'First,
-                                              Attr  => Attr,
-                                              Color => Color_Pair'First);
-   begin
-      if On then
-         Err := Slk_Attron  (AttrChar_To_Chtype (Ch));
-      else
-         Err := Slk_Attroff (AttrChar_To_Chtype (Ch));
-      end if;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Switch_Soft_Label_Key_Attributes;
-
-   procedure Set_Soft_Label_Key_Attributes
-     (Attr  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First)
-   is
-      function Slk_Attrset (Ch : C_Chtype) return C_Int;
-      pragma Import (C, Slk_Attrset, "slk_attrset");
-
-      Ch : constant Attributed_Character := (Ch    => Character'First,
-                                             Attr  => Attr,
-                                             Color => Color);
-   begin
-      if Slk_Attrset (AttrChar_To_Chtype (Ch)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Soft_Label_Key_Attributes;
-
-   function Get_Soft_Label_Key_Attributes return Character_Attribute_Set
-   is
-      function Slk_Attr return C_Chtype;
-      pragma Import (C, Slk_Attr, "slk_attr");
-
-      Attr : constant C_Chtype := Slk_Attr;
-   begin
-      return Chtype_To_AttrChar (Attr).Attr;
-   end Get_Soft_Label_Key_Attributes;
-
-   function Get_Soft_Label_Key_Attributes return Color_Pair
-   is
-      function Slk_Attr return C_Chtype;
-      pragma Import (C, Slk_Attr, "slk_attr");
-
-      Attr : constant C_Chtype := Slk_Attr;
-   begin
-      return Chtype_To_AttrChar (Attr).Color;
-   end Get_Soft_Label_Key_Attributes;
-
-   procedure Set_Soft_Label_Key_Color (Pair : Color_Pair)
-   is
-      function Slk_Color (Color : C_Short) return C_Int;
-      pragma Import (C, Slk_Color, "slk_color");
-   begin
-      if Slk_Color (C_Short (Pair)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Set_Soft_Label_Key_Color;
-
-------------------------------------------------------------------------------
-   procedure Enable_Key (Key    : Special_Key_Code;
-                         Enable : Boolean := True)
-   is
-      function Keyok (Keycode : C_Int;
-                      On_Off  : Curses_Bool) return C_Int;
-      pragma Import (C, Keyok, "keyok");
-   begin
-      if Keyok (C_Int (Key), Curses_Bool (Boolean'Pos (Enable)))
-        = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Enable_Key;
-------------------------------------------------------------------------------
-   procedure Define_Key (Definition : String;
-                         Key        : Special_Key_Code)
-   is
-      function Defkey (Def : char_array;
-                       Key : C_Int) return C_Int;
-      pragma Import (C, Defkey, "define_key");
-
-      Txt    : char_array (0 .. Definition'Length);
-      Length : size_t;
-   begin
-      To_C (Definition, Txt, Length);
-      if Defkey (Txt, C_Int (Key)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Define_Key;
-------------------------------------------------------------------------------
-   procedure Un_Control (Ch  : Attributed_Character;
-                         Str : out String)
-   is
-      function Unctrl (Ch : C_Chtype) return chars_ptr;
-      pragma Import (C, Unctrl, "unctrl");
-   begin
-      Fill_String (Unctrl (AttrChar_To_Chtype (Ch)), Str);
-   end Un_Control;
-
-   function Un_Control (Ch : Attributed_Character) return String
-   is
-      function Unctrl (Ch : C_Chtype) return chars_ptr;
-      pragma Import (C, Unctrl, "unctrl");
-   begin
-      return Fill_String (Unctrl (AttrChar_To_Chtype (Ch)));
-   end Un_Control;
-
-   procedure Delay_Output (Msecs : Natural)
-   is
-      function Delayoutput (Msecs : C_Int) return C_Int;
-      pragma Import (C, Delayoutput, "delay_output");
-   begin
-      if Delayoutput (C_Int (Msecs)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Delay_Output;
-
-   procedure Flush_Input
-   is
-      function Flushinp return C_Int;
-      pragma Import (C, Flushinp, "flushinp");
-   begin
-      if Flushinp = Curses_Err then  -- docu says that never happens, but...
-         raise Curses_Exception;
-      end if;
-   end Flush_Input;
-------------------------------------------------------------------------------
-   function Baudrate return Natural
-   is
-      function Baud return C_Int;
-      pragma Import (C, Baud, "baudrate");
-   begin
-      return Natural (Baud);
-   end Baudrate;
-
-   function Erase_Character return Character
-   is
-      function Erasechar return C_Int;
-      pragma Import (C, Erasechar, "erasechar");
-   begin
-      return Character'Val (Erasechar);
-   end Erase_Character;
-
-   function Kill_Character return Character
-   is
-      function Killchar return C_Int;
-      pragma Import (C, Killchar, "killchar");
-   begin
-      return Character'Val (Killchar);
-   end Kill_Character;
-
-   function Has_Insert_Character return Boolean
-   is
-      function Has_Ic return Curses_Bool;
-      pragma Import (C, Has_Ic, "has_ic");
-   begin
-      if Has_Ic = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Has_Insert_Character;
-
-   function Has_Insert_Line return Boolean
-   is
-      function Has_Il return Curses_Bool;
-      pragma Import (C, Has_Il, "has_il");
-   begin
-      if Has_Il = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Has_Insert_Line;
-
-   function Supported_Attributes return Character_Attribute_Set
-   is
-      function Termattrs return C_Chtype;
-      pragma Import (C, Termattrs, "termattrs");
-
-      Ch : constant Attributed_Character := Chtype_To_AttrChar (Termattrs);
-   begin
-      return Ch.Attr;
-   end Supported_Attributes;
-
-   procedure Long_Name (Name : out String)
-   is
-      function Longname return chars_ptr;
-      pragma Import (C, Longname, "longname");
-   begin
-      Fill_String (Longname, Name);
-   end Long_Name;
-
-   function Long_Name return String
-   is
-      function Longname return chars_ptr;
-      pragma Import (C, Longname, "longname");
-   begin
-      return Fill_String (Longname);
-   end Long_Name;
-
-   procedure Terminal_Name (Name : out String)
-   is
-      function Termname return chars_ptr;
-      pragma Import (C, Termname, "termname");
-   begin
-      Fill_String (Termname, Name);
-   end Terminal_Name;
-
-   function Terminal_Name return String
-   is
-      function Termname return chars_ptr;
-      pragma Import (C, Termname, "termname");
-   begin
-      return Fill_String (Termname);
-   end Terminal_Name;
-------------------------------------------------------------------------------
-   procedure Init_Pair (Pair : Redefinable_Color_Pair;
-                        Fore : Color_Number;
-                        Back : Color_Number)
-   is
-      function Initpair (Pair : C_Short;
-                         Fore : C_Short;
-                         Back : C_Short) return C_Int;
-      pragma Import (C, Initpair, "init_pair");
-   begin
-      if Integer (Pair) >= Number_Of_Color_Pairs then
-         raise Constraint_Error;
-      end if;
-      if Integer (Fore) >= Number_Of_Colors or else
-         Integer (Back) >= Number_Of_Colors then
-         raise Constraint_Error;
-      end if;
-      if Initpair (C_Short (Pair), C_Short (Fore), C_Short (Back))
-        = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Init_Pair;
-
-   procedure Pair_Content (Pair : Color_Pair;
-                           Fore : out Color_Number;
-                           Back : out Color_Number)
-   is
-      type C_Short_Access is access all C_Short;
-      function Paircontent (Pair : C_Short;
-                            Fp   : C_Short_Access;
-                            Bp   : C_Short_Access) return C_Int;
-      pragma Import (C, Paircontent, "pair_content");
-
-      F, B : aliased C_Short;
-   begin
-      if Paircontent (C_Short (Pair), F'Access, B'Access) = Curses_Err then
-         raise Curses_Exception;
-      else
-         Fore := Color_Number (F);
-         Back := Color_Number (B);
-      end if;
-   end Pair_Content;
-
-   function Has_Colors return Boolean
-   is
-      function Hascolors return Curses_Bool;
-      pragma Import (C, Hascolors, "has_colors");
-   begin
-      if Hascolors = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Has_Colors;
-
-   procedure Init_Color (Color : Color_Number;
-                         Red   : RGB_Value;
-                         Green : RGB_Value;
-                         Blue  : RGB_Value)
-   is
-      function Initcolor (Col   : C_Short;
-                          Red   : C_Short;
-                          Green : C_Short;
-                          Blue  : C_Short) return C_Int;
-      pragma Import (C, Initcolor, "init_color");
-   begin
-      if Initcolor (C_Short (Color), C_Short (Red), C_Short (Green),
-                    C_Short (Blue)) = Curses_Err then
-            raise Curses_Exception;
-      end if;
-   end Init_Color;
-
-   function Can_Change_Color return Boolean
-   is
-      function Canchangecolor return Curses_Bool;
-      pragma Import (C, Canchangecolor, "can_change_color");
-   begin
-      if Canchangecolor = Curses_Bool_False then
-         return False;
-      else
-         return True;
-      end if;
-   end Can_Change_Color;
-
-   procedure Color_Content (Color :  Color_Number;
-                            Red   : out RGB_Value;
-                            Green : out RGB_Value;
-                            Blue  : out RGB_Value)
-   is
-      type C_Short_Access is access all C_Short;
-
-      function Colorcontent (Color : C_Short; R, G, B : C_Short_Access)
-                             return C_Int;
-      pragma Import (C, Colorcontent, "color_content");
-
-      R, G, B : aliased C_Short;
-   begin
-      if Colorcontent (C_Short (Color), R'Access, G'Access, B'Access) =
-        Curses_Err then
-         raise Curses_Exception;
-      else
-         Red   := RGB_Value (R);
-         Green := RGB_Value (G);
-         Blue  := RGB_Value (B);
-      end if;
-   end Color_Content;
-
-------------------------------------------------------------------------------
-   procedure Save_Curses_Mode (Mode : Curses_Mode)
-   is
-      function Def_Prog_Mode return C_Int;
-      pragma Import (C, Def_Prog_Mode, "def_prog_mode");
-      function Def_Shell_Mode return C_Int;
-      pragma Import (C, Def_Shell_Mode, "def_shell_mode");
-
-      Err : C_Int;
-   begin
-      case Mode is
-         when Curses => Err := Def_Prog_Mode;
-         when Shell  => Err := Def_Shell_Mode;
-      end case;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Save_Curses_Mode;
-
-   procedure Reset_Curses_Mode (Mode : Curses_Mode)
-   is
-      function Reset_Prog_Mode return C_Int;
-      pragma Import (C, Reset_Prog_Mode, "reset_prog_mode");
-      function Reset_Shell_Mode return C_Int;
-      pragma Import (C, Reset_Shell_Mode, "reset_shell_mode");
-
-      Err : C_Int;
-   begin
-      case Mode is
-         when Curses => Err := Reset_Prog_Mode;
-         when Shell  => Err := Reset_Shell_Mode;
-      end case;
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Reset_Curses_Mode;
-
-   procedure Save_Terminal_State
-   is
-      function Savetty return C_Int;
-      pragma Import (C, Savetty, "savetty");
-   begin
-      if Savetty = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Save_Terminal_State;
-
-   procedure Reset_Terminal_State
-   is
-      function Resetty return C_Int;
-      pragma Import (C, Resetty, "resetty");
-   begin
-      if Resetty = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Reset_Terminal_State;
-
-   procedure Rip_Off_Lines (Lines : Integer;
-                            Proc  : Stdscr_Init_Proc)
-   is
-      function Ripoffline (Lines : C_Int;
-                           Proc  : Stdscr_Init_Proc) return C_Int;
-      pragma Import (C, Ripoffline, "_nc_ripoffline");
-   begin
-      if Ripoffline (C_Int (Lines), Proc) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Rip_Off_Lines;
-
-   procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility)
-   is
-      function Curs_Set (Curs : C_Int) return C_Int;
-      pragma Import (C, Curs_Set, "curs_set");
-
-      Res : C_Int;
-   begin
-      Res := Curs_Set (Cursor_Visibility'Pos (Visibility));
-      if Res /= Curses_Err then
-         Visibility := Cursor_Visibility'Val (Res);
-      end if;
-   end Set_Cursor_Visibility;
-
-   procedure Nap_Milli_Seconds (Ms : Natural)
-   is
-      function Napms (Ms : C_Int) return C_Int;
-      pragma Import (C, Napms, "napms");
-   begin
-      if Napms (C_Int (Ms)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Nap_Milli_Seconds;
-------------------------------------------------------------------------------
-
-   function Standard_Window return Window
-   is
-      Result : Window;
-      pragma Import (C, Result, "stdscr");
-   begin
-      return Result;
-   end Standard_Window;
-
-   function Current_Window return Window
-   is
-      Result : Window;
-      pragma Import (C, Result, "curscr");
-   begin
-      return Result;
-   end Current_Window;
-
-   function Lines return Line_Count
-   is
-      Result : C_Int;
-      pragma Import (C, Result, "LINES");
-   begin
-      return Line_Count (Result);
-   end Lines;
-
-   function Columns return Column_Count
-   is
-      Result : C_Int;
-      pragma Import (C, Result, "COLS");
-   begin
-      return Column_Count (Result);
-   end Columns;
-
-   function Tab_Size return Natural
-   is
-      Result : C_Int;
-      pragma Import (C, Result, "TABSIZE");
-   begin
-      return Natural (Result);
-   end Tab_Size;
-
-   function Number_Of_Colors return Natural
-   is
-      Result : C_Int;
-      pragma Import (C, Result, "COLORS");
-   begin
-      return Natural (Result);
-   end Number_Of_Colors;
-
-   function Number_Of_Color_Pairs return Natural
-   is
-      Result : C_Int;
-      pragma Import (C, Result, "COLOR_PAIRS");
-   begin
-      return Natural (Result);
-   end Number_Of_Color_Pairs;
-
-------------------------------------------------------------------------------
-   procedure Transform_Coordinates
-     (W      : Window := Standard_Window;
-      Line   : in out Line_Position;
-      Column : in out Column_Position;
-      Dir    : Transform_Direction := From_Screen)
-   is
-      type Int_Access is access all C_Int;
-      function Transform (W    : Window;
-                          Y, X : Int_Access;
-                          Dir  : Curses_Bool) return C_Int;
-      pragma Import (C, Transform, "wmouse_trafo");
-
-      X : aliased C_Int := C_Int (Column);
-      Y : aliased C_Int := C_Int (Line);
-      D : Curses_Bool := Curses_Bool_False;
-      R : C_Int;
-   begin
-      if Dir = To_Screen then
-         D := 1;
-      end if;
-      R := Transform (W, Y'Access, X'Access, D);
-      if R = Curses_False then
-         raise Curses_Exception;
-      else
-         Line   := Line_Position (Y);
-         Column := Column_Position (X);
-      end if;
-   end Transform_Coordinates;
-------------------------------------------------------------------------------
-   procedure Use_Default_Colors is
-      function C_Use_Default_Colors return C_Int;
-      pragma Import (C, C_Use_Default_Colors, "use_default_colors");
-      Err : constant C_Int := C_Use_Default_Colors;
-   begin
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Use_Default_Colors;
-
-   procedure Assume_Default_Colors (Fore : Color_Number := Default_Color;
-                                    Back : Color_Number := Default_Color)
-   is
-      function C_Assume_Default_Colors (Fore : C_Int;
-                                        Back : C_Int) return C_Int;
-      pragma Import (C, C_Assume_Default_Colors, "assume_default_colors");
-
-      Err : constant C_Int := C_Assume_Default_Colors (C_Int (Fore),
-                                                       C_Int (Back));
-   begin
-      if Err = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Assume_Default_Colors;
-------------------------------------------------------------------------------
-   function Curses_Version return String
-   is
-      function curses_versionC return chars_ptr;
-      pragma Import (C, curses_versionC, "curses_version");
-      Result : constant chars_ptr := curses_versionC;
-   begin
-      return Fill_String (Result);
-   end Curses_Version;
-------------------------------------------------------------------------------
-   procedure Curses_Free_All is
-      procedure curses_freeall;
-      pragma Import (C, curses_freeall, "_nc_freeall");
-   begin
-      --  Use this only for testing: you cannot use curses after calling it,
-      --  so it has to be the "last" thing done before exiting the program.
-      --  This will not really free ALL of memory used by curses.  That is
-      --  because it cannot free the memory used for stdout's setbuf.  The
-      --  _nc_free_and_exit() procedure can do that, but it can be invoked
-      --  safely only from C - and again, that only as the "last" thing done
-      --  before exiting the program.
-      curses_freeall;
-   end Curses_Free_All;
-------------------------------------------------------------------------------
-   function Use_Extended_Names (Enable : Boolean) return Boolean
-   is
-      function use_extended_namesC (e : Curses_Bool) return C_Int;
-      pragma Import (C, use_extended_namesC, "use_extended_names");
-
-      Res : constant C_Int :=
-         use_extended_namesC (Curses_Bool (Boolean'Pos (Enable)));
-   begin
-      if Res = C_Int (Curses_Bool_False) then
-         return False;
-      else
-         return True;
-      end if;
-   end Use_Extended_Names;
-------------------------------------------------------------------------------
-   procedure Screen_Dump_To_File (Filename : String)
-   is
-      function scr_dump (f : char_array) return C_Int;
-      pragma Import (C, scr_dump, "scr_dump");
-      Txt    : char_array (0 .. Filename'Length);
-      Length : size_t;
-   begin
-      To_C (Filename, Txt, Length);
-      if Curses_Err = scr_dump (Txt) then
-         raise Curses_Exception;
-      end if;
-   end Screen_Dump_To_File;
-
-   procedure Screen_Restore_From_File (Filename : String)
-   is
-      function scr_restore (f : char_array) return C_Int;
-      pragma Import (C, scr_restore, "scr_restore");
-      Txt    : char_array (0 .. Filename'Length);
-      Length : size_t;
-   begin
-      To_C (Filename, Txt, Length);
-      if Curses_Err = scr_restore (Txt)  then
-         raise Curses_Exception;
-      end if;
-   end Screen_Restore_From_File;
-
-   procedure Screen_Init_From_File (Filename : String)
-   is
-      function scr_init (f : char_array) return C_Int;
-      pragma Import (C, scr_init, "scr_init");
-      Txt    : char_array (0 .. Filename'Length);
-      Length : size_t;
-   begin
-      To_C (Filename, Txt, Length);
-      if Curses_Err = scr_init (Txt) then
-         raise Curses_Exception;
-      end if;
-   end Screen_Init_From_File;
-
-   procedure Screen_Set_File (Filename : String)
-   is
-      function scr_set (f : char_array) return C_Int;
-      pragma Import (C, scr_set, "scr_set");
-      Txt    : char_array (0 .. Filename'Length);
-      Length : size_t;
-   begin
-      To_C (Filename, Txt, Length);
-      if Curses_Err = scr_set (Txt) then
-         raise Curses_Exception;
-      end if;
-   end Screen_Set_File;
-------------------------------------------------------------------------------
-   procedure Resize (Win               : Window := Standard_Window;
-                     Number_Of_Lines   : Line_Count;
-                     Number_Of_Columns : Column_Count) is
-      function wresize (win     : Window;
-                        lines   : C_Int;
-                        columns : C_Int) return C_Int;
-      pragma Import (C, wresize);
-   begin
-      if wresize (Win,
-                  C_Int (Number_Of_Lines),
-                  C_Int (Number_Of_Columns)) = Curses_Err then
-         raise Curses_Exception;
-      end if;
-   end Resize;
-------------------------------------------------------------------------------
-
-end Terminal_Interface.Curses;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses__ads.htm deleted file mode 100644 index 8139eb8..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface-curses__ads.htm +++ /dev/null @@ -1,1935 +0,0 @@ - -terminal_interface-curses.ads - -

File : terminal_interface-curses.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                         Terminal_Interface.Curses                        --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998-2009,2011 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, 1996
---  Version Control:
---  @Revision: 1.44 @
---  @Date: 2011/03/19 23:05:56 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
---  curses binding.
---  This module is generated. Please don't change it manually!
---  Run the generator instead.
---  |
-with System.Storage_Elements;
-with Interfaces.C;   --  We need this for some assertions.
-
-package Terminal_Interface.Curses is
-   pragma Preelaborate (Terminal_Interface.Curses);
-   pragma Linker_Options ("-lncurses");
-
-   NC_Major_Version : constant := 5; --  Major version of the library
-   NC_Minor_Version : constant := 9; --  Minor version of the library
-   NC_Version : constant String := "5.9";  --  Version of library
-
-   type Window is private;
-   Null_Window : constant Window;
-
-   type Line_Position   is new Integer; --  line coordinate
-   type Column_Position is new Integer; --  column coordinate
-
-   subtype Line_Count   is Line_Position   range 1 .. Line_Position'Last;
-   --  Type to count lines. We do not allow null windows, so must be positive
-   subtype Column_Count is Column_Position range 1 .. Column_Position'Last;
-   --  Type to count columns. We do not allow null windows, so must be positive
-
-   type Key_Code is new Integer;
-   --  That is anything including real characters, special keys and logical
-   --  request codes.
-
-   --  FIXME: The "-1" should be Curses_Err
-   subtype Real_Key_Code is Key_Code range -1 .. 8#777#;
-   --  This are the codes that potentially represent a real keystroke.
-   --  Not all codes may be possible on a specific terminal. To check the
-   --  availability of a special key, the Has_Key function is provided.
-
-   subtype Special_Key_Code is Real_Key_Code
-     range 8#400# .. Real_Key_Code'Last;
-   --  Type for a function- or special key number
-
-   subtype Normal_Key_Code is Real_Key_Code range
-     Character'Pos (Character'First) .. Character'Pos (Character'Last);
-   --  This are the codes for regular (incl. non-graphical) characters.
-
-   --  Constants for function- and special keys
-   --
-   Key_None                       : constant Special_Key_Code := 8#400#;
-   Key_Code_Yes                   : constant Special_Key_Code := 8#400#;
-   Key_Min                        : constant Special_Key_Code := 8#401#;
-   Key_Break                      : constant Special_Key_Code := 8#401#;
-   Key_Cursor_Down                : constant Special_Key_Code := 8#402#;
-   Key_Cursor_Up                  : constant Special_Key_Code := 8#403#;
-   Key_Cursor_Left                : constant Special_Key_Code := 8#404#;
-   Key_Cursor_Right               : constant Special_Key_Code := 8#405#;
-   Key_Home                       : constant Special_Key_Code := 8#406#;
-   Key_Backspace                  : constant Special_Key_Code := 8#407#;
-   Key_F0                         : constant Special_Key_Code := 8#410#;
-   Key_F1                         : constant Special_Key_Code := 8#411#;
-   Key_F2                         : constant Special_Key_Code := 8#412#;
-   Key_F3                         : constant Special_Key_Code := 8#413#;
-   Key_F4                         : constant Special_Key_Code := 8#414#;
-   Key_F5                         : constant Special_Key_Code := 8#415#;
-   Key_F6                         : constant Special_Key_Code := 8#416#;
-   Key_F7                         : constant Special_Key_Code := 8#417#;
-   Key_F8                         : constant Special_Key_Code := 8#420#;
-   Key_F9                         : constant Special_Key_Code := 8#421#;
-   Key_F10                        : constant Special_Key_Code := 8#422#;
-   Key_F11                        : constant Special_Key_Code := 8#423#;
-   Key_F12                        : constant Special_Key_Code := 8#424#;
-   Key_F13                        : constant Special_Key_Code := 8#425#;
-   Key_F14                        : constant Special_Key_Code := 8#426#;
-   Key_F15                        : constant Special_Key_Code := 8#427#;
-   Key_F16                        : constant Special_Key_Code := 8#430#;
-   Key_F17                        : constant Special_Key_Code := 8#431#;
-   Key_F18                        : constant Special_Key_Code := 8#432#;
-   Key_F19                        : constant Special_Key_Code := 8#433#;
-   Key_F20                        : constant Special_Key_Code := 8#434#;
-   Key_F21                        : constant Special_Key_Code := 8#435#;
-   Key_F22                        : constant Special_Key_Code := 8#436#;
-   Key_F23                        : constant Special_Key_Code := 8#437#;
-   Key_F24                        : constant Special_Key_Code := 8#440#;
-   Key_Delete_Line                : constant Special_Key_Code := 8#510#;
-   Key_Insert_Line                : constant Special_Key_Code := 8#511#;
-   Key_Delete_Char                : constant Special_Key_Code := 8#512#;
-   Key_Insert_Char                : constant Special_Key_Code := 8#513#;
-   Key_Exit_Insert_Mode           : constant Special_Key_Code := 8#514#;
-   Key_Clear_Screen               : constant Special_Key_Code := 8#515#;
-   Key_Clear_End_Of_Screen        : constant Special_Key_Code := 8#516#;
-   Key_Clear_End_Of_Line          : constant Special_Key_Code := 8#517#;
-   Key_Scroll_1_Forward           : constant Special_Key_Code := 8#520#;
-   Key_Scroll_1_Backward          : constant Special_Key_Code := 8#521#;
-   Key_Next_Page                  : constant Special_Key_Code := 8#522#;
-   Key_Previous_Page              : constant Special_Key_Code := 8#523#;
-   Key_Set_Tab                    : constant Special_Key_Code := 8#524#;
-   Key_Clear_Tab                  : constant Special_Key_Code := 8#525#;
-   Key_Clear_All_Tabs             : constant Special_Key_Code := 8#526#;
-   Key_Enter_Or_Send              : constant Special_Key_Code := 8#527#;
-   Key_Soft_Reset                 : constant Special_Key_Code := 8#530#;
-   Key_Reset                      : constant Special_Key_Code := 8#531#;
-   Key_Print                      : constant Special_Key_Code := 8#532#;
-   Key_Bottom                     : constant Special_Key_Code := 8#533#;
-   Key_Upper_Left_Of_Keypad       : constant Special_Key_Code := 8#534#;
-   Key_Upper_Right_Of_Keypad      : constant Special_Key_Code := 8#535#;
-   Key_Center_Of_Keypad           : constant Special_Key_Code := 8#536#;
-   Key_Lower_Left_Of_Keypad       : constant Special_Key_Code := 8#537#;
-   Key_Lower_Right_Of_Keypad      : constant Special_Key_Code := 8#540#;
-   Key_Back_Tab                   : constant Special_Key_Code := 8#541#;
-   Key_Beginning                  : constant Special_Key_Code := 8#542#;
-   Key_Cancel                     : constant Special_Key_Code := 8#543#;
-   Key_Close                      : constant Special_Key_Code := 8#544#;
-   Key_Command                    : constant Special_Key_Code := 8#545#;
-   Key_Copy                       : constant Special_Key_Code := 8#546#;
-   Key_Create                     : constant Special_Key_Code := 8#547#;
-   Key_End                        : constant Special_Key_Code := 8#550#;
-   Key_Exit                       : constant Special_Key_Code := 8#551#;
-   Key_Find                       : constant Special_Key_Code := 8#552#;
-   Key_Help                       : constant Special_Key_Code := 8#553#;
-   Key_Mark                       : constant Special_Key_Code := 8#554#;
-   Key_Message                    : constant Special_Key_Code := 8#555#;
-   Key_Move                       : constant Special_Key_Code := 8#556#;
-   Key_Next                       : constant Special_Key_Code := 8#557#;
-   Key_Open                       : constant Special_Key_Code := 8#560#;
-   Key_Options                    : constant Special_Key_Code := 8#561#;
-   Key_Previous                   : constant Special_Key_Code := 8#562#;
-   Key_Redo                       : constant Special_Key_Code := 8#563#;
-   Key_Reference                  : constant Special_Key_Code := 8#564#;
-   Key_Refresh                    : constant Special_Key_Code := 8#565#;
-   Key_Replace                    : constant Special_Key_Code := 8#566#;
-   Key_Restart                    : constant Special_Key_Code := 8#567#;
-   Key_Resume                     : constant Special_Key_Code := 8#570#;
-   Key_Save                       : constant Special_Key_Code := 8#571#;
-   Key_Shift_Begin                : constant Special_Key_Code := 8#572#;
-   Key_Shift_Cancel               : constant Special_Key_Code := 8#573#;
-   Key_Shift_Command              : constant Special_Key_Code := 8#574#;
-   Key_Shift_Copy                 : constant Special_Key_Code := 8#575#;
-   Key_Shift_Create               : constant Special_Key_Code := 8#576#;
-   Key_Shift_Delete_Char          : constant Special_Key_Code := 8#577#;
-   Key_Shift_Delete_Line          : constant Special_Key_Code := 8#600#;
-   Key_Select                     : constant Special_Key_Code := 8#601#;
-   Key_Shift_End                  : constant Special_Key_Code := 8#602#;
-   Key_Shift_Clear_End_Of_Line    : constant Special_Key_Code := 8#603#;
-   Key_Shift_Exit                 : constant Special_Key_Code := 8#604#;
-   Key_Shift_Find                 : constant Special_Key_Code := 8#605#;
-   Key_Shift_Help                 : constant Special_Key_Code := 8#606#;
-   Key_Shift_Home                 : constant Special_Key_Code := 8#607#;
-   Key_Shift_Insert_Char          : constant Special_Key_Code := 8#610#;
-   Key_Shift_Cursor_Left          : constant Special_Key_Code := 8#611#;
-   Key_Shift_Message              : constant Special_Key_Code := 8#612#;
-   Key_Shift_Move                 : constant Special_Key_Code := 8#613#;
-   Key_Shift_Next_Page            : constant Special_Key_Code := 8#614#;
-   Key_Shift_Options              : constant Special_Key_Code := 8#615#;
-   Key_Shift_Previous_Page        : constant Special_Key_Code := 8#616#;
-   Key_Shift_Print                : constant Special_Key_Code := 8#617#;
-   Key_Shift_Redo                 : constant Special_Key_Code := 8#620#;
-   Key_Shift_Replace              : constant Special_Key_Code := 8#621#;
-   Key_Shift_Cursor_Right         : constant Special_Key_Code := 8#622#;
-   Key_Shift_Resume               : constant Special_Key_Code := 8#623#;
-   Key_Shift_Save                 : constant Special_Key_Code := 8#624#;
-   Key_Shift_Suspend              : constant Special_Key_Code := 8#625#;
-   Key_Shift_Undo                 : constant Special_Key_Code := 8#626#;
-   Key_Suspend                    : constant Special_Key_Code := 8#627#;
-   Key_Undo                       : constant Special_Key_Code := 8#630#;
-   Key_Mouse                      : constant Special_Key_Code := 8#631#;
-   Key_Resize                     : constant Special_Key_Code := 8#632#;
-
-   Key_Max                        : constant Special_Key_Code
-     := Special_Key_Code'Last;
-
-   subtype User_Key_Code is Key_Code
-     range (Key_Max + 129) .. Key_Code'Last;
-   --  This is reserved for user defined key codes. The range between Key_Max
-   --  and the first user code is reserved for subsystems like menu and forms.
-
-   --  For those who like to use the original key names we produce them were
-   --  they differ from the original. Please note that they may differ in
-   --  lower/upper case.
-   KEY_DOWN         : Special_Key_Code renames Key_Cursor_Down;
-   KEY_UP           : Special_Key_Code renames Key_Cursor_Up;
-   KEY_LEFT         : Special_Key_Code renames Key_Cursor_Left;
-   KEY_RIGHT        : Special_Key_Code renames Key_Cursor_Right;
-   KEY_DL           : Special_Key_Code renames Key_Delete_Line;
-   KEY_IL           : Special_Key_Code renames Key_Insert_Line;
-   KEY_DC           : Special_Key_Code renames Key_Delete_Char;
-   KEY_IC           : Special_Key_Code renames Key_Insert_Char;
-   KEY_EIC          : Special_Key_Code renames Key_Exit_Insert_Mode;
-   KEY_CLEAR        : Special_Key_Code renames Key_Clear_Screen;
-   KEY_EOS          : Special_Key_Code renames Key_Clear_End_Of_Screen;
-   KEY_EOL          : Special_Key_Code renames Key_Clear_End_Of_Line;
-   KEY_SF           : Special_Key_Code renames Key_Scroll_1_Forward;
-   KEY_SR           : Special_Key_Code renames Key_Scroll_1_Backward;
-   KEY_NPAGE        : Special_Key_Code renames Key_Next_Page;
-   KEY_PPAGE        : Special_Key_Code renames Key_Previous_Page;
-   KEY_STAB         : Special_Key_Code renames Key_Set_Tab;
-   KEY_CTAB         : Special_Key_Code renames Key_Clear_Tab;
-   KEY_CATAB        : Special_Key_Code renames Key_Clear_All_Tabs;
-   KEY_ENTER        : Special_Key_Code renames Key_Enter_Or_Send;
-   KEY_SRESET       : Special_Key_Code renames Key_Soft_Reset;
-   KEY_LL           : Special_Key_Code renames Key_Bottom;
-   KEY_A1           : Special_Key_Code renames Key_Upper_Left_Of_Keypad;
-   KEY_A3           : Special_Key_Code renames Key_Upper_Right_Of_Keypad;
-   KEY_B2           : Special_Key_Code renames Key_Center_Of_Keypad;
-   KEY_C1           : Special_Key_Code renames Key_Lower_Left_Of_Keypad;
-   KEY_C3           : Special_Key_Code renames Key_Lower_Right_Of_Keypad;
-   KEY_BTAB         : Special_Key_Code renames Key_Back_Tab;
-   KEY_BEG          : Special_Key_Code renames Key_Beginning;
-   KEY_SBEG         : Special_Key_Code renames Key_Shift_Begin;
-   KEY_SCANCEL      : Special_Key_Code renames Key_Shift_Cancel;
-   KEY_SCOMMAND     : Special_Key_Code renames Key_Shift_Command;
-   KEY_SCOPY        : Special_Key_Code renames Key_Shift_Copy;
-   KEY_SCREATE      : Special_Key_Code renames Key_Shift_Create;
-   KEY_SDC          : Special_Key_Code renames Key_Shift_Delete_Char;
-   KEY_SDL          : Special_Key_Code renames Key_Shift_Delete_Line;
-   KEY_SEND         : Special_Key_Code renames Key_Shift_End;
-   KEY_SEOL         : Special_Key_Code renames Key_Shift_Clear_End_Of_Line;
-   KEY_SEXIT        : Special_Key_Code renames Key_Shift_Exit;
-   KEY_SFIND        : Special_Key_Code renames Key_Shift_Find;
-   KEY_SHELP        : Special_Key_Code renames Key_Shift_Help;
-   KEY_SHOME        : Special_Key_Code renames Key_Shift_Home;
-   KEY_SIC          : Special_Key_Code renames Key_Shift_Insert_Char;
-   KEY_SLEFT        : Special_Key_Code renames Key_Shift_Cursor_Left;
-   KEY_SMESSAGE     : Special_Key_Code renames Key_Shift_Message;
-   KEY_SMOVE        : Special_Key_Code renames Key_Shift_Move;
-   KEY_SNEXT        : Special_Key_Code renames Key_Shift_Next_Page;
-   KEY_SOPTIONS     : Special_Key_Code renames Key_Shift_Options;
-   KEY_SPREVIOUS    : Special_Key_Code renames Key_Shift_Previous_Page;
-   KEY_SPRINT       : Special_Key_Code renames Key_Shift_Print;
-   KEY_SREDO        : Special_Key_Code renames Key_Shift_Redo;
-   KEY_SREPLACE     : Special_Key_Code renames Key_Shift_Replace;
-   KEY_SRIGHT       : Special_Key_Code renames Key_Shift_Cursor_Right;
-   KEY_SRSUME       : Special_Key_Code renames Key_Shift_Resume;
-   KEY_SSAVE        : Special_Key_Code renames Key_Shift_Save;
-   KEY_SSUSPEND     : Special_Key_Code renames Key_Shift_Suspend;
-   KEY_SUNDO        : Special_Key_Code renames Key_Shift_Undo;
-
-------------------------------------------------------------------------------
-
-   type Color_Number is range -1 .. Integer (Interfaces.C.short'Last);
-   for Color_Number'Size use Interfaces.C.short'Size;
-   --  (n)curses uses a short for the color index
-   --  The model is, that a Color_Number is an index into an array of
-   --  (potentially) definable colors. Some of those indices are
-   --  predefined (see below), although they may not really exist.
-
-   Default_Color    : constant Color_Number := -1;
-   Black            : constant Color_Number := 0;
-   Red              : constant Color_Number := 1;
-   Green            : constant Color_Number := 2;
-   Yellow           : constant Color_Number := 3;
-   Blue             : constant Color_Number := 4;
-   Magenta          : constant Color_Number := 5;
-   Cyan             : constant Color_Number := 6;
-   White            : constant Color_Number := 7;
-
-   type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last);
-   for RGB_Value'Size use Interfaces.C.short'Size;
-   --  Some system may allow to redefine a color by setting RGB values.
-
-   type Color_Pair is range 0 .. 255;
-   for Color_Pair'Size use 8;
-   subtype Redefinable_Color_Pair is Color_Pair range 1 .. 255;
-   --  (n)curses reserves 1 Byte for the color-pair number. Color Pair 0
-   --  is fixed (Black & White). A color pair is simply a combination of
-   --  two colors described by Color_Numbers, one for the foreground and
-   --  the other for the background
-
-   type Character_Attribute_Set is
-      record
-         Stand_Out               : Boolean;
-         Under_Line              : Boolean;
-         Reverse_Video           : Boolean;
-         Blink                   : Boolean;
-         Dim_Character           : Boolean;
-         Bold_Character          : Boolean;
-         Alternate_Character_Set : Boolean;
-         Invisible_Character     : Boolean;
-         Protected_Character     : Boolean;
-         Horizontal              : Boolean;
-         Left                    : Boolean;
-         Low                     : Boolean;
-         Right                   : Boolean;
-         Top                     : Boolean;
-         Vertical                : Boolean;
-         Unused                  : Boolean;
-      end record;
-   pragma Convention (C, Character_Attribute_Set);
-
-   for Character_Attribute_Set use
-      record
-         Stand_Out               at 0 range  0 ..  0;
-         Under_Line              at 0 range  1 ..  1;
-         Reverse_Video           at 0 range  2 ..  2;
-         Blink                   at 0 range  3 ..  3;
-         Dim_Character           at 0 range  4 ..  4;
-         Bold_Character          at 0 range  5 ..  5;
-         Alternate_Character_Set at 0 range  6 ..  6;
-         Invisible_Character     at 0 range  7 ..  7;
-         Protected_Character     at 0 range  8 ..  8;
-         Horizontal              at 0 range  9 ..  9;
-         Left                    at 0 range 10 .. 10;
-         Low                     at 0 range 11 .. 11;
-         Right                   at 0 range 12 .. 12;
-         Top                     at 0 range 13 .. 13;
-         Vertical                at 0 range 14 .. 14;
-         Unused                  at 0 range 15 .. 15;
-      end record;
-   for Character_Attribute_Set'Size use 16;
-   --  Please note: this rep. clause is generated and may be
-   --               different on your system.
-   --  (n)curses uses all but the lowest 16 Bits for Attributes.
-
-   Normal_Video : constant Character_Attribute_Set := (others => False);
-
-   type Attributed_Character is
-      record
-         Attr  : Character_Attribute_Set;
-         Color : Color_Pair;
-         Ch    : Character;
-      end record;
-   pragma Convention (C, Attributed_Character);
-   --  This is the counterpart for the chtype in C.
-
-   for Attributed_Character use
-      record
-         Ch    at 0 range  0 ..  7;
-         Color at 0 range  8 .. 15;
-         Attr  at 0 range 16 .. 31;
-      end record;
-   for Attributed_Character'Size use 32;
-      --  Please note: this rep. clause is generated and may be
-      --               different on your system.
-
-   Default_Character : constant Attributed_Character
-     := (Ch    => Character'First,
-         Color => Color_Pair'First,
-         Attr  => (others => False));  --  preelaboratable Normal_Video
-
-   type Attributed_String is array (Positive range <>) of Attributed_Character;
-   pragma Pack (Attributed_String);
-   --  In this binding we allow strings of attributed characters.
-
-   ------------------
-   --  Exceptions  --
-   ------------------
-   Curses_Exception     : exception;
-   Wrong_Curses_Version : exception;
-
-   --  Those exceptions are raised by the ETI (Extended Terminal Interface)
-   --  subpackets for Menu and Forms handling.
-   --
-   Eti_System_Error    : exception;
-   Eti_Bad_Argument    : exception;
-   Eti_Posted          : exception;
-   Eti_Connected       : exception;
-   Eti_Bad_State       : exception;
-   Eti_No_Room         : exception;
-   Eti_Not_Posted      : exception;
-   Eti_Unknown_Command : exception;
-   Eti_No_Match        : exception;
-   Eti_Not_Selectable  : exception;
-   Eti_Not_Connected   : exception;
-   Eti_Request_Denied  : exception;
-   Eti_Invalid_Field   : exception;
-   Eti_Current         : exception;
-
-   --------------------------------------------------------------------------
-   --  External C variables
-   --  Conceptually even in C this are kind of constants, but they are
-   --  initialized and sometimes changed by the library routines at runtime
-   --  depending on the type of terminal. I believe the best way to model
-   --  this is to use functions.
-   --------------------------------------------------------------------------
-
-   function Lines            return Line_Count;
-   pragma Inline (Lines);
-
-   function Columns          return Column_Count;
-   pragma Inline (Columns);
-
-   function Tab_Size         return Natural;
-   pragma Inline (Tab_Size);
-
-   function Number_Of_Colors return Natural;
-   pragma Inline (Number_Of_Colors);
-
-   function Number_Of_Color_Pairs return Natural;
-   pragma Inline (Number_Of_Color_Pairs);
-
-   type C_ACS_Map is array (Character'Val (0) .. Character'Val (127))
-        of Attributed_Character;
-   ACS_Map : C_ACS_Map;
-   pragma Import (C, ACS_Map, "acs_map");
-   --
-   --
-   --  Constants for several characters from the Alternate Character Set
-   --  You must use these constants as indices into the ACS_Map array
-   --  to get the corresponding attributed character at runtime.
-   --
-   ACS_Upper_Left_Corner    : constant Character := 'l';
-   ACS_Lower_Left_Corner    : constant Character := 'm';
-   ACS_Upper_Right_Corner   : constant Character := 'k';
-   ACS_Lower_Right_Corner   : constant Character := 'j';
-   ACS_Left_Tee             : constant Character := 't';
-   ACS_Right_Tee            : constant Character := 'u';
-   ACS_Bottom_Tee           : constant Character := 'v';
-   ACS_Top_Tee              : constant Character := 'w';
-   ACS_Horizontal_Line      : constant Character := 'q';
-   ACS_Vertical_Line        : constant Character := 'x';
-   ACS_Plus_Symbol          : constant Character := 'n';
-   ACS_Scan_Line_1          : constant Character := 'o';
-   ACS_Scan_Line_9          : constant Character := 's';
-   ACS_Diamond              : constant Character := Character'Val (96);
-   ACS_Checker_Board        : constant Character := 'a';
-   ACS_Degree               : constant Character := 'f';
-   ACS_Plus_Minus           : constant Character := 'g';
-   ACS_Bullet               : constant Character := '~';
-   ACS_Left_Arrow           : constant Character := ',';
-   ACS_Right_Arrow          : constant Character := '+';
-   ACS_Down_Arrow           : constant Character := '.';
-   ACS_Up_Arrow             : constant Character := '-';
-   ACS_Board_Of_Squares     : constant Character := 'h';
-   ACS_Lantern              : constant Character := 'i';
-   ACS_Solid_Block          : constant Character := '0';
-   ACS_Scan_Line_3          : constant Character := 'p';
-   ACS_Scan_Line_7          : constant Character := 'r';
-   ACS_Less_Or_Equal        : constant Character := 'y';
-   ACS_Greater_Or_Equal     : constant Character := 'z';
-   ACS_PI                   : constant Character := '{';
-   ACS_Not_Equal            : constant Character := '|';
-   ACS_Sterling             : constant Character := '}';
-
-   --  |=====================================================================
-   --  | Man page curs_initscr.3x
-   --  |=====================================================================
-   --  | Not implemented: newterm, set_term, delscreen
-
-   --  #1A NAME="AFU_1"#2|
-   function Standard_Window return Window;
-   --  AKA: stdscr
-   pragma Inline (Standard_Window);
-
-   --  #1A NAME="AFU_2"#2|
-   function Current_Window return Window;
-   --  AKA: curscr
-   pragma Inline (Current_Window);
-
-   --  #1A NAME="AFU_3"#2|
-   procedure Init_Screen;
-
-   --  #1A NAME="AFU_4"#2|
-   procedure Init_Windows renames Init_Screen;
-   --  AKA: initscr()
-   pragma Inline (Init_Screen);
-   --  pragma Inline (Init_Windows);
-
-   --  #1A NAME="AFU_5"#2|
-   procedure End_Windows;
-   --  AKA: endwin()
-   procedure End_Screen renames End_Windows;
-   pragma Inline (End_Windows);
-   --  pragma Inline (End_Screen);
-
-   --  #1A NAME="AFU_6"#2|
-   function Is_End_Window return Boolean;
-   --  AKA: isendwin()
-   pragma Inline (Is_End_Window);
-
-   --  |=====================================================================
-   --  | Man page curs_move.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_7"#2|
-   procedure Move_Cursor (Win    : Window := Standard_Window;
-                          Line   : Line_Position;
-                          Column : Column_Position);
-   --  AKA: wmove()
-   --  AKA: move()
-   pragma Inline (Move_Cursor);
-
-   --  |=====================================================================
-   --  | Man page curs_addch.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_8"#2|
-   procedure Add (Win : Window := Standard_Window;
-                  Ch  : Attributed_Character);
-   --  AKA: waddch()
-   --  AKA: addch()
-
-   procedure Add (Win : Window := Standard_Window;
-                  Ch  : Character);
-   --  Add a single character at the current logical cursor position to
-   --  the window. Use the current windows attributes.
-
-   --  #1A NAME="AFU_9"#2|
-   procedure Add
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Ch     : Attributed_Character);
-   --  AKA: mvwaddch()
-   --  AKA: mvaddch()
-
-   procedure Add
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position;
-      Ch     : Character);
-   --  Move to the position and add a single character into the window
-   --  There are more Add routines, so the Inline pragma follows later
-
-   --  #1A NAME="AFU_10"#2|
-   procedure Add_With_Immediate_Echo
-     (Win : Window := Standard_Window;
-      Ch  : Attributed_Character);
-   --  AKA: wechochar()
-   --  AKA: echochar()
-
-   procedure Add_With_Immediate_Echo
-     (Win : Window := Standard_Window;
-      Ch  : Character);
-   --  Add a character and do an immediate refresh of the screen.
-   pragma Inline (Add_With_Immediate_Echo);
-
-   --  |=====================================================================
-   --  | Man page curs_window.3x
-   --  |=====================================================================
-   --  Not Implemented: wcursyncup
-
-   --  #1A NAME="AFU_11"#2|
-   function Create
-     (Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window;
-   --  Not Implemented: Default Number_Of_Lines, Number_Of_Columns
-   --  the C version lets them be 0, see the man page.
-   --  AKA: newwin()
-   pragma Inline (Create);
-
-   function New_Window
-     (Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window
-     renames Create;
-   --  pragma Inline (New_Window);
-
-   --  #1A NAME="AFU_12"#2|
-   procedure Delete (Win : in out Window);
-   --  AKA: delwin()
-   --  Reset Win to Null_Window
-   pragma Inline (Delete);
-
-   --  #1A NAME="AFU_13"#2|
-   function Sub_Window
-     (Win                   : Window := Standard_Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window;
-   --  AKA: subwin()
-   pragma Inline (Sub_Window);
-
-   --  #1A NAME="AFU_14"#2|
-   function Derived_Window
-     (Win                   : Window := Standard_Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window;
-   --  AKA: derwin()
-   pragma Inline (Derived_Window);
-
-   --  #1A NAME="AFU_15"#2|
-   function Duplicate (Win : Window) return Window;
-   --  AKA: dupwin()
-   pragma Inline (Duplicate);
-
-   --  #1A NAME="AFU_16"#2|
-   procedure Move_Window (Win    : Window;
-                          Line   : Line_Position;
-                          Column : Column_Position);
-   --  AKA: mvwin()
-   pragma Inline (Move_Window);
-
-   --  #1A NAME="AFU_17"#2|
-   procedure Move_Derived_Window (Win    : Window;
-                                  Line   : Line_Position;
-                                  Column : Column_Position);
-   --  AKA: mvderwin()
-   pragma Inline (Move_Derived_Window);
-
-   --  #1A NAME="AFU_18"#2|
-   procedure Synchronize_Upwards (Win : Window);
-   --  AKA: wsyncup()
-   pragma Import (C, Synchronize_Upwards, "wsyncup");
-
-   --  #1A NAME="AFU_19"#2|
-   procedure Synchronize_Downwards (Win : Window);
-   --  AKA: wsyncdown()
-   pragma Import (C, Synchronize_Downwards, "wsyncdown");
-
-   --  #1A NAME="AFU_20"#2|
-   procedure Set_Synch_Mode (Win  : Window := Standard_Window;
-                             Mode : Boolean := False);
-   --  AKA: syncok()
-   pragma Inline (Set_Synch_Mode);
-
-   --  |=====================================================================
-   --  | Man page curs_addstr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_21"#2|
-   procedure Add (Win : Window := Standard_Window;
-                  Str : String;
-                  Len : Integer := -1);
-   --  AKA: waddnstr()
-   --  AKA: waddstr()
-   --  AKA: addnstr()
-   --  AKA: addstr()
-
-   --  #1A NAME="AFU_22"#2|
-   procedure Add (Win    : Window := Standard_Window;
-                  Line   : Line_Position;
-                  Column : Column_Position;
-                  Str    : String;
-                  Len    : Integer := -1);
-   --  AKA: mvwaddnstr()
-   --  AKA: mvwaddstr()
-   --  AKA: mvaddnstr()
-   --  AKA: mvaddstr()
-
-   --  |=====================================================================
-   --  | Man page curs_addchstr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_23"#2|
-   procedure Add (Win : Window := Standard_Window;
-                  Str : Attributed_String;
-                  Len : Integer := -1);
-   --  AKA: waddchnstr()
-   --  AKA: waddchstr()
-   --  AKA: addchnstr()
-   --  AKA: addchstr()
-
-   --  #1A NAME="AFU_24"#2|
-   procedure Add (Win    : Window := Standard_Window;
-                  Line   : Line_Position;
-                  Column : Column_Position;
-                  Str    : Attributed_String;
-                  Len    : Integer := -1);
-   --  AKA: mvwaddchnstr()
-   --  AKA: mvwaddchstr()
-   --  AKA: mvaddchnstr()
-   --  AKA: mvaddchstr()
-   pragma Inline (Add);
-
-   --  |=====================================================================
-   --  | Man page curs_border.3x
-   --  |=====================================================================
-   --  | Not implemented: mvhline,  mvwhline, mvvline, mvwvline
-   --  | use Move_Cursor then Horizontal_Line or Vertical_Line
-
-   --  #1A NAME="AFU_25"#2|
-   procedure Border
-     (Win                       : Window := Standard_Window;
-      Left_Side_Symbol          : Attributed_Character := Default_Character;
-      Right_Side_Symbol         : Attributed_Character := Default_Character;
-      Top_Side_Symbol           : Attributed_Character := Default_Character;
-      Bottom_Side_Symbol        : Attributed_Character := Default_Character;
-      Upper_Left_Corner_Symbol  : Attributed_Character := Default_Character;
-      Upper_Right_Corner_Symbol : Attributed_Character := Default_Character;
-      Lower_Left_Corner_Symbol  : Attributed_Character := Default_Character;
-      Lower_Right_Corner_Symbol : Attributed_Character := Default_Character
-     );
-   --  AKA: wborder()
-   --  AKA: border()
-   pragma Inline (Border);
-
-   --  #1A NAME="AFU_26"#2|
-   procedure Box
-     (Win               : Window := Standard_Window;
-      Vertical_Symbol   : Attributed_Character := Default_Character;
-      Horizontal_Symbol : Attributed_Character := Default_Character);
-   --  AKA: box()
-   pragma Inline (Box);
-
-   --  #1A NAME="AFU_27"#2|
-   procedure Horizontal_Line
-     (Win         : Window := Standard_Window;
-      Line_Size   : Natural;
-      Line_Symbol : Attributed_Character := Default_Character);
-   --  AKA: whline()
-   --  AKA: hline()
-   pragma Inline (Horizontal_Line);
-
-   --  #1A NAME="AFU_28"#2|
-   procedure Vertical_Line
-     (Win         : Window := Standard_Window;
-      Line_Size   : Natural;
-      Line_Symbol : Attributed_Character := Default_Character);
-   --  AKA: wvline()
-   --  AKA: vline()
-   pragma Inline (Vertical_Line);
-
-   --  |=====================================================================
-   --  | Man page curs_getch.3x
-   --  |=====================================================================
-   --  Not implemented: mvgetch, mvwgetch
-
-   --  #1A NAME="AFU_29"#2|
-   function Get_Keystroke (Win : Window := Standard_Window)
-                           return Real_Key_Code;
-   --  AKA: wgetch()
-   --  AKA: getch()
-   --  Get a character from the keyboard and echo it - if enabled - to the
-   --  window.
-   --  If for any reason (i.e. a timeout) we could not get a character the
-   --  returned keycode is Key_None.
-   pragma Inline (Get_Keystroke);
-
-   --  #1A NAME="AFU_30"#2|
-   procedure Undo_Keystroke (Key : Real_Key_Code);
-   --  AKA: ungetch()
-   pragma Inline (Undo_Keystroke);
-
-   --  #1A NAME="AFU_31"#2|
-   function Has_Key (Key : Special_Key_Code) return Boolean;
-   --  AKA: has_key()
-   pragma Inline (Has_Key);
-
-   --  |
-   --  | Some helper functions
-   --  |
-   function Is_Function_Key (Key : Special_Key_Code) return Boolean;
-   --  Return True if the Key is a function key (i.e. one of F0 .. F63)
-   pragma Inline (Is_Function_Key);
-
-   subtype Function_Key_Number is Integer range 0 .. 63;
-   --  (n)curses allows for 64 function keys.
-
-   function Function_Key (Key : Real_Key_Code) return Function_Key_Number;
-   --  Return the number of the function key. If the code is not a
-   --  function key, a CONSTRAINT_ERROR will be raised.
-   pragma Inline (Function_Key);
-
-   function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code;
-   --  Return the key code for a given function-key number.
-   pragma Inline (Function_Key_Code);
-
-   --  |=====================================================================
-   --  | Man page curs_attr.3x
-   --  |=====================================================================
-   --  | Not implemented attr_off,  wattr_off,
-   --  |  attr_on, wattr_on, attr_set, wattr_set
-
-   --  PAIR_NUMBER
-   --  PAIR_NUMBER(c) is the same as c.Color
-
-   --  #1A NAME="AFU_32"#2|
-   procedure Standout (Win : Window  := Standard_Window;
-                       On  : Boolean := True);
-   --  AKA: wstandout()
-   --  AKA: wstandend()
-
-   --  #1A NAME="AFU_33"#2|
-   procedure Switch_Character_Attribute
-     (Win  : Window := Standard_Window;
-      Attr : Character_Attribute_Set := Normal_Video;
-      On   : Boolean := True); --  if False we switch Off.
-   --  Switches those Attributes set to true in the list.
-   --  AKA: wattron()
-   --  AKA: wattroff()
-   --  AKA: attron()
-   --  AKA: attroff()
-
-   --  #1A NAME="AFU_34"#2|
-   procedure Set_Character_Attributes
-     (Win   : Window := Standard_Window;
-      Attr  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: wattrset()
-   --  AKA: attrset()
-   pragma Inline (Set_Character_Attributes);
-
-   --  #1A NAME="AFU_35"#2|
-   function Get_Character_Attribute
-     (Win : Window := Standard_Window) return Character_Attribute_Set;
-   --  AKA: wattr_get()
-   --  AKA: attr_get()
-
-   --  #1A NAME="AFU_36"#2|
-   function Get_Character_Attribute
-     (Win : Window := Standard_Window) return Color_Pair;
-   --  AKA: wattr_get()
-   pragma Inline (Get_Character_Attribute);
-
-   --  #1A NAME="AFU_37"#2|
-   procedure Set_Color (Win  : Window := Standard_Window;
-                        Pair : Color_Pair);
-   --  AKA: wcolor_set()
-   --  AKA: color_set()
-   pragma Inline (Set_Color);
-
-   --  #1A NAME="AFU_38"#2|
-   procedure Change_Attributes
-     (Win   : Window := Standard_Window;
-      Count : Integer := -1;
-      Attr  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: wchgat()
-   --  AKA: chgat()
-
-   --  #1A NAME="AFU_39"#2|
-   procedure Change_Attributes
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position := Line_Position'First;
-      Column : Column_Position := Column_Position'First;
-      Count  : Integer := -1;
-      Attr   : Character_Attribute_Set := Normal_Video;
-      Color  : Color_Pair := Color_Pair'First);
-   --  AKA: mvwchgat()
-   --  AKA: mvchgat()
-   pragma Inline (Change_Attributes);
-
-   --  |=====================================================================
-   --  | Man page curs_beep.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_40"#2|
-   procedure Beep;
-   --  AKA: beep()
-   pragma Inline (Beep);
-
-   --  #1A NAME="AFU_41"#2|
-   procedure Flash_Screen;
-   --  AKA: flash()
-   pragma Inline (Flash_Screen);
-
-   --  |=====================================================================
-   --  | Man page curs_inopts.3x
-   --  |=====================================================================
-
-   --  | Not implemented : typeahead
-   --
-   --  #1A NAME="AFU_42"#2|
-   procedure Set_Cbreak_Mode (SwitchOn : Boolean := True);
-   --  AKA: cbreak()
-   --  AKA: nocbreak()
-   pragma Inline (Set_Cbreak_Mode);
-
-   --  #1A NAME="AFU_43"#2|
-   procedure Set_Raw_Mode (SwitchOn : Boolean := True);
-   --  AKA: raw()
-   --  AKA: noraw()
-   pragma Inline (Set_Raw_Mode);
-
-   --  #1A NAME="AFU_44"#2|
-   procedure Set_Echo_Mode (SwitchOn : Boolean := True);
-   --  AKA: echo()
-   --  AKA: noecho()
-   pragma Inline (Set_Echo_Mode);
-
-   --  #1A NAME="AFU_45"#2|
-   procedure Set_Meta_Mode (Win      : Window := Standard_Window;
-                            SwitchOn : Boolean := True);
-   --  AKA: meta()
-   pragma Inline (Set_Meta_Mode);
-
-   --  #1A NAME="AFU_46"#2|
-   procedure Set_KeyPad_Mode (Win      : Window := Standard_Window;
-                              SwitchOn : Boolean := True);
-   --  AKA: keypad()
-   pragma Inline (Set_KeyPad_Mode);
-
-   function Get_KeyPad_Mode (Win : Window := Standard_Window)
-                             return Boolean;
-   --  This has no pendant in C. There you've to look into the WINDOWS
-   --  structure to get the value. Bad practice, not repeated in Ada.
-
-   type Half_Delay_Amount is range 1 .. 255;
-
-   --  #1A NAME="AFU_47"#2|
-   procedure Half_Delay (Amount : Half_Delay_Amount);
-   --  AKA: halfdelay()
-   pragma Inline (Half_Delay);
-
-   --  #1A NAME="AFU_48"#2|
-   procedure Set_Flush_On_Interrupt_Mode
-     (Win  : Window := Standard_Window;
-      Mode : Boolean := True);
-   --  AKA: intrflush()
-   pragma Inline (Set_Flush_On_Interrupt_Mode);
-
-   --  #1A NAME="AFU_49"#2|
-   procedure Set_Queue_Interrupt_Mode
-     (Win   : Window := Standard_Window;
-      Flush : Boolean := True);
-   --  AKA: qiflush()
-   --  AKA: noqiflush()
-   pragma Inline (Set_Queue_Interrupt_Mode);
-
-   --  #1A NAME="AFU_50"#2|
-   procedure Set_NoDelay_Mode
-     (Win  : Window := Standard_Window;
-      Mode : Boolean := False);
-   --  AKA: nodelay()
-   pragma Inline (Set_NoDelay_Mode);
-
-   type Timeout_Mode is (Blocking, Non_Blocking, Delayed);
-
-   --  #1A NAME="AFU_51"#2|
-   procedure Set_Timeout_Mode (Win    : Window := Standard_Window;
-                               Mode   : Timeout_Mode;
-                               Amount : Natural); --  in Milliseconds
-   --  AKA: wtimeout()
-   --  AKA: timeout()
-   --  Instead of overloading the semantic of the sign of amount, we
-   --  introduce the Timeout_Mode parameter. This should improve
-   --  readability. For Blocking and Non_Blocking, the Amount is not
-   --  evaluated.
-   --  We do not inline this procedure.
-
-   --  #1A NAME="AFU_52"#2|
-   procedure Set_Escape_Timer_Mode
-     (Win       : Window := Standard_Window;
-      Timer_Off : Boolean := False);
-   --  AKA: notimeout()
-   pragma Inline (Set_Escape_Timer_Mode);
-
-   --  |=====================================================================
-   --  | Man page curs_outopts.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_53"#2|
-   procedure Set_NL_Mode (SwitchOn : Boolean := True);
-   --  AKA: nl()
-   --  AKA: nonl()
-   pragma Inline (Set_NL_Mode);
-
-   --  #1A NAME="AFU_54"#2|
-   procedure Clear_On_Next_Update
-     (Win      : Window := Standard_Window;
-      Do_Clear : Boolean := True);
-   --  AKA: clearok()
-   pragma Inline (Clear_On_Next_Update);
-
-   --  #1A NAME="AFU_55"#2|
-   procedure Use_Insert_Delete_Line
-     (Win    : Window := Standard_Window;
-      Do_Idl : Boolean := True);
-   --  AKA: idlok()
-   pragma Inline (Use_Insert_Delete_Line);
-
-   --  #1A NAME="AFU_56"#2|
-   procedure Use_Insert_Delete_Character
-     (Win    : Window := Standard_Window;
-      Do_Idc : Boolean := True);
-   --  AKA: idcok()
-   pragma Inline (Use_Insert_Delete_Character);
-
-   --  #1A NAME="AFU_57"#2|
-   procedure Leave_Cursor_After_Update
-     (Win      : Window := Standard_Window;
-      Do_Leave : Boolean := True);
-   --  AKA: leaveok()
-   pragma Inline (Leave_Cursor_After_Update);
-
-   --  #1A NAME="AFU_58"#2|
-   procedure Immediate_Update_Mode
-     (Win  : Window := Standard_Window;
-      Mode : Boolean := False);
-   --  AKA: immedok()
-   pragma Inline (Immediate_Update_Mode);
-
-   --  #1A NAME="AFU_59"#2|
-   procedure Allow_Scrolling
-     (Win  : Window := Standard_Window;
-      Mode : Boolean := False);
-   --  AKA: scrollok()
-   pragma Inline (Allow_Scrolling);
-
-   function Scrolling_Allowed (Win : Window := Standard_Window) return Boolean;
-   --  There is no such function in the C interface.
-   pragma Inline (Scrolling_Allowed);
-
-   --  #1A NAME="AFU_60"#2|
-   procedure Set_Scroll_Region
-     (Win         : Window := Standard_Window;
-      Top_Line    : Line_Position;
-      Bottom_Line : Line_Position);
-   --  AKA: wsetscrreg()
-   --  AKA: setscrreg()
-   pragma Inline (Set_Scroll_Region);
-
-   --  |=====================================================================
-   --  | Man page curs_refresh.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_61"#2|
-   procedure Update_Screen;
-   --  AKA: doupdate()
-   pragma Inline (Update_Screen);
-
-   --  #1A NAME="AFU_62"#2|
-   procedure Refresh (Win : Window := Standard_Window);
-   --  AKA: wrefresh()
-   --  There is an overloaded Refresh for Pads.
-   --  The Inline pragma appears there
-   --  AKA: refresh()
-
-   --  #1A NAME="AFU_63"#2|
-   procedure Refresh_Without_Update
-     (Win : Window := Standard_Window);
-   --  AKA: wnoutrefresh()
-   --  There is an overloaded Refresh_Without_Update for Pads.
-   --  The Inline pragma appears there
-
-   --  #1A NAME="AFU_64"#2|
-   procedure Redraw (Win : Window := Standard_Window);
-   --  AKA: redrawwin()
-
-   --  #1A NAME="AFU_65"#2|
-   procedure Redraw (Win        : Window := Standard_Window;
-                     Begin_Line : Line_Position;
-                     Line_Count : Positive);
-   --  AKA: wredrawln()
-   pragma Inline (Redraw);
-
-   --  |=====================================================================
-   --  | Man page curs_clear.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_66"#2|
-   procedure Erase (Win : Window := Standard_Window);
-   --  AKA: werase()
-   --  AKA: erase()
-   pragma Inline (Erase);
-
-   --  #1A NAME="AFU_67"#2|
-   procedure Clear
-     (Win : Window := Standard_Window);
-   --  AKA: wclear()
-   --  AKA: clear()
-   pragma Inline (Clear);
-
-   --  #1A NAME="AFU_68"#2|
-   procedure Clear_To_End_Of_Screen
-     (Win : Window := Standard_Window);
-   --  AKA: wclrtobot()
-   --  AKA: clrtobot()
-   pragma Inline (Clear_To_End_Of_Screen);
-
-   --  #1A NAME="AFU_69"#2|
-   procedure Clear_To_End_Of_Line
-     (Win : Window := Standard_Window);
-   --  AKA: wclrtoeol()
-   --  AKA: clrtoeol()
-   pragma Inline (Clear_To_End_Of_Line);
-
-   --  |=====================================================================
-   --  | Man page curs_bkgd.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_70"#2|
-   --  TODO: we could have Set_Background(Window; Character_Attribute_Set)
-   --  because in C it is common to see bkgdset(A_BOLD) or
-   --  bkgdset(COLOR_PAIR(n))
-   procedure Set_Background
-     (Win : Window := Standard_Window;
-      Ch  : Attributed_Character);
-   --  AKA: wbkgdset()
-   --  AKA: bkgdset()
-   pragma Inline (Set_Background);
-
-   --  #1A NAME="AFU_71"#2|
-   procedure Change_Background
-     (Win : Window := Standard_Window;
-      Ch  : Attributed_Character);
-   --  AKA: wbkgd()
-   --  AKA: bkgd()
-   pragma Inline (Change_Background);
-
-   --  #1A NAME="AFU_72"#2|
-   --  ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough.
-   function Get_Background (Win : Window := Standard_Window)
-     return Attributed_Character;
-   --  AKA: wbkgdget()
-   --  AKA: bkgdget()
-   pragma Inline (Get_Background);
-
-   --  |=====================================================================
-   --  | Man page curs_touch.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_73"#2|
-   procedure Untouch (Win : Window := Standard_Window);
-   --  AKA: untouchwin()
-   pragma Inline (Untouch);
-
-   --  #1A NAME="AFU_74"#2|
-   procedure Touch (Win : Window := Standard_Window);
-   --  AKA: touchwin()
-
-   --  #1A NAME="AFU_75"#2|
-   procedure Touch (Win   : Window := Standard_Window;
-                    Start : Line_Position;
-                    Count : Positive);
-   --  AKA: touchline()
-   pragma Inline (Touch);
-
-   --  #1A NAME="AFU_76"#2|
-   procedure Change_Lines_Status (Win   : Window := Standard_Window;
-                                  Start : Line_Position;
-                                  Count : Positive;
-                                  State : Boolean);
-   --  AKA: wtouchln()
-   pragma Inline (Change_Lines_Status);
-
-   --  #1A NAME="AFU_77"#2|
-   function Is_Touched (Win  : Window := Standard_Window;
-                        Line : Line_Position) return Boolean;
-   --  AKA: is_linetouched()
-
-   --  #1A NAME="AFU_78"#2|
-   function Is_Touched (Win : Window := Standard_Window) return Boolean;
-   --  AKA: is_wintouched()
-   pragma Inline (Is_Touched);
-
-   --  |=====================================================================
-   --  | Man page curs_overlay.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_79"#2|
-   procedure Copy
-     (Source_Window            : Window;
-      Destination_Window       : Window;
-      Source_Top_Row           : Line_Position;
-      Source_Left_Column       : Column_Position;
-      Destination_Top_Row      : Line_Position;
-      Destination_Left_Column  : Column_Position;
-      Destination_Bottom_Row   : Line_Position;
-      Destination_Right_Column : Column_Position;
-      Non_Destructive_Mode     : Boolean := True);
-   --  AKA: copywin()
-   pragma Inline (Copy);
-
-   --  #1A NAME="AFU_80"#2|
-   procedure Overwrite (Source_Window      : Window;
-                        Destination_Window : Window);
-   --  AKA: overwrite()
-   pragma Inline (Overwrite);
-
-   --  #1A NAME="AFU_81"#2|
-   procedure Overlay (Source_Window      : Window;
-                      Destination_Window : Window);
-   --  AKA: overlay()
-   pragma Inline (Overlay);
-
-   --  |=====================================================================
-   --  | Man page curs_deleteln.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_82"#2|
-   procedure Insert_Delete_Lines
-     (Win   : Window  := Standard_Window;
-      Lines : Integer := 1); --  default is to insert one line above
-   --  AKA: winsdelln()
-   --  AKA: insdelln()
-   pragma Inline (Insert_Delete_Lines);
-
-   --  #1A NAME="AFU_83"#2|
-   procedure Delete_Line (Win : Window := Standard_Window);
-   --  AKA: wdeleteln()
-   --  AKA: deleteln()
-   pragma Inline (Delete_Line);
-
-   --  #1A NAME="AFU_84"#2|
-   procedure Insert_Line (Win : Window := Standard_Window);
-   --  AKA: winsertln()
-   --  AKA: insertln()
-   pragma Inline (Insert_Line);
-
-   --  |=====================================================================
-   --  | Man page curs_getyx.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_85"#2|
-   procedure Get_Size
-     (Win               : Window := Standard_Window;
-      Number_Of_Lines   : out Line_Count;
-      Number_Of_Columns : out Column_Count);
-   --  AKA: getmaxyx()
-   pragma Inline (Get_Size);
-
-   --  #1A NAME="AFU_86"#2|
-   procedure Get_Window_Position
-     (Win             : Window := Standard_Window;
-      Top_Left_Line   : out Line_Position;
-      Top_Left_Column : out Column_Position);
-   --  AKA: getbegyx()
-   pragma Inline (Get_Window_Position);
-
-   --  #1A NAME="AFU_87"#2|
-   procedure Get_Cursor_Position
-     (Win    : Window := Standard_Window;
-      Line   : out Line_Position;
-      Column : out Column_Position);
-   --  AKA: getyx()
-   pragma Inline (Get_Cursor_Position);
-
-   --  #1A NAME="AFU_88"#2|
-   procedure Get_Origin_Relative_To_Parent
-     (Win                : Window;
-      Top_Left_Line      : out Line_Position;
-      Top_Left_Column    : out Column_Position;
-      Is_Not_A_Subwindow : out Boolean);
-   --  AKA: getparyx()
-   --  Instead of placing -1 in the coordinates as return, we use a Boolean
-   --  to return the info that the window has no parent.
-   pragma Inline (Get_Origin_Relative_To_Parent);
-
-   --  |=====================================================================
-   --  | Man page curs_pad.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_89"#2|
-   function New_Pad (Lines   : Line_Count;
-                     Columns : Column_Count) return Window;
-   --  AKA: newpad()
-   pragma Inline (New_Pad);
-
-   --  #1A NAME="AFU_90"#2|
-   function Sub_Pad
-     (Pad                   : Window;
-      Number_Of_Lines       : Line_Count;
-      Number_Of_Columns     : Column_Count;
-      First_Line_Position   : Line_Position;
-      First_Column_Position : Column_Position) return Window;
-   --  AKA: subpad()
-   pragma Inline (Sub_Pad);
-
-   --  #1A NAME="AFU_91"#2|
-   procedure Refresh
-     (Pad                      : Window;
-      Source_Top_Row           : Line_Position;
-      Source_Left_Column       : Column_Position;
-      Destination_Top_Row      : Line_Position;
-      Destination_Left_Column  : Column_Position;
-      Destination_Bottom_Row   : Line_Position;
-      Destination_Right_Column : Column_Position);
-   --  AKA: prefresh()
-   pragma Inline (Refresh);
-
-   --  #1A NAME="AFU_92"#2|
-   procedure Refresh_Without_Update
-     (Pad                      : Window;
-      Source_Top_Row           : Line_Position;
-      Source_Left_Column       : Column_Position;
-      Destination_Top_Row      : Line_Position;
-      Destination_Left_Column  : Column_Position;
-      Destination_Bottom_Row   : Line_Position;
-      Destination_Right_Column : Column_Position);
-   --  AKA: pnoutrefresh()
-   pragma Inline (Refresh_Without_Update);
-
-   --  #1A NAME="AFU_93"#2|
-   procedure Add_Character_To_Pad_And_Echo_It
-     (Pad : Window;
-      Ch  : Attributed_Character);
-   --  AKA: pechochar()
-
-   procedure Add_Character_To_Pad_And_Echo_It
-     (Pad : Window;
-      Ch  : Character);
-   pragma Inline (Add_Character_To_Pad_And_Echo_It);
-
-   --  |=====================================================================
-   --  | Man page curs_scroll.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_94"#2|
-   procedure Scroll (Win    : Window  := Standard_Window;
-                     Amount : Integer := 1);
-   --  AKA: wscrl()
-   --  AKA: scroll()
-   --  AKA: scrl()
-   pragma Inline (Scroll);
-
-   --  |=====================================================================
-   --  | Man page curs_delch.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_95"#2|
-   procedure Delete_Character (Win : Window := Standard_Window);
-   --  AKA: wdelch()
-   --  AKA: delch()
-
-   --  #1A NAME="AFU_96"#2|
-   procedure Delete_Character
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position);
-   --  AKA: mvwdelch()
-   --  AKA: mvdelch()
-   pragma Inline (Delete_Character);
-
-   --  |=====================================================================
-   --  | Man page curs_inch.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_97"#2|
-   function Peek (Win : Window := Standard_Window)
-     return Attributed_Character;
-   --  AKA: inch()
-   --  AKA: winch()
-
-   --  #1A NAME="AFU_98"#2|
-   function Peek
-     (Win    : Window := Standard_Window;
-      Line   : Line_Position;
-      Column : Column_Position) return Attributed_Character;
-   --  AKA: mvwinch()
-   --  AKA: mvinch()
-   --  More Peek's follow, pragma Inline appears later.
-
-   --  |=====================================================================
-   --  | Man page curs_insch.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_99"#2|
-   procedure Insert (Win : Window := Standard_Window;
-                     Ch  : Attributed_Character);
-   --  AKA: winsch()
-   --  AKA: insch()
-
-   --  #1A NAME="AFU_100"#2|
-   procedure Insert (Win    : Window := Standard_Window;
-                     Line   : Line_Position;
-                     Column : Column_Position;
-                     Ch     : Attributed_Character);
-   --  AKA: mvwinsch()
-   --  AKA: mvinsch()
-
-   --  |=====================================================================
-   --  | Man page curs_insstr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_101"#2|
-   procedure Insert (Win : Window := Standard_Window;
-                     Str : String;
-                     Len : Integer := -1);
-   --  AKA: winsnstr()
-   --  AKA: winsstr()
-   --  AKA: insnstr()
-   --  AKA: insstr()
-
-   --  #1A NAME="AFU_102"#2|
-   procedure Insert (Win    : Window := Standard_Window;
-                     Line   : Line_Position;
-                     Column : Column_Position;
-                     Str    : String;
-                     Len    : Integer := -1);
-   --  AKA: mvwinsnstr()
-   --  AKA: mvwinsstr()
-   --  AKA: mvinsnstr()
-   --  AKA: mvinsstr()
-   pragma Inline (Insert);
-
-   --  |=====================================================================
-   --  | Man page curs_instr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_103"#2|
-   procedure Peek (Win : Window := Standard_Window;
-                   Str : out String;
-                   Len : Integer := -1);
-   --  AKA: winnstr()
-   --  AKA: winstr()
-   --  AKA: innstr()
-   --  AKA: instr()
-
-   --  #1A NAME="AFU_104"#2|
-   procedure Peek (Win    : Window := Standard_Window;
-                   Line   : Line_Position;
-                   Column : Column_Position;
-                   Str    : out String;
-                   Len    : Integer := -1);
-   --  AKA: mvwinnstr()
-   --  AKA: mvwinstr()
-   --  AKA: mvinnstr()
-   --  AKA: mvinstr()
-
-   --  |=====================================================================
-   --  | Man page curs_inchstr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_105"#2|
-   procedure Peek (Win : Window := Standard_Window;
-                   Str : out Attributed_String;
-                   Len : Integer := -1);
-   --  AKA: winchnstr()
-   --  AKA: winchstr()
-   --  AKA: inchnstr()
-   --  AKA: inchstr()
-
-   --  #1A NAME="AFU_106"#2|
-   procedure Peek (Win    : Window := Standard_Window;
-                   Line   : Line_Position;
-                   Column : Column_Position;
-                   Str    : out Attributed_String;
-                   Len    : Integer := -1);
-   --  AKA: mvwinchnstr()
-   --  AKA: mvwinchstr()
-   --  AKA: mvinchnstr()
-   --  AKA: mvinchstr()
-   --  We do not inline the Peek procedures
-
-   --  |=====================================================================
-   --  | Man page curs_getstr.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_107"#2|
-   procedure Get (Win : Window := Standard_Window;
-                  Str : out String;
-                  Len : Integer := -1);
-   --  AKA: wgetnstr()
-   --  AKA: wgetstr()
-   --  AKA: getnstr()
-   --  AKA: getstr()
-   --  actually getstr is not supported because that results in buffer
-   --  overflows.
-
-   --  #1A NAME="AFU_108"#2|
-   procedure Get (Win    : Window := Standard_Window;
-                  Line   : Line_Position;
-                  Column : Column_Position;
-                  Str    : out String;
-                  Len    : Integer := -1);
-   --  AKA: mvwgetnstr()
-   --  AKA: mvwgetstr()
-   --  AKA: mvgetnstr()
-   --  AKA: mvgetstr()
-   --  Get is not inlined
-
-   --  |=====================================================================
-   --  | Man page curs_slk.3x
-   --  |=====================================================================
-
-   --  Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set
-
-   type Soft_Label_Key_Format is (Three_Two_Three,
-                                  Four_Four,
-                                  PC_Style,              --  ncurses specific
-                                  PC_Style_With_Index);  --  "
-   type Label_Number is new Positive range 1 .. 12;
-   type Label_Justification is (Left, Centered, Right);
-
-   --  #1A NAME="AFU_109"#2|
-   procedure Init_Soft_Label_Keys
-     (Format : Soft_Label_Key_Format := Three_Two_Three);
-   --  AKA: slk_init()
-   pragma Inline (Init_Soft_Label_Keys);
-
-   --  #1A NAME="AFU_110"#2|
-   procedure Set_Soft_Label_Key (Label : Label_Number;
-                                 Text  : String;
-                                 Fmt   : Label_Justification := Left);
-   --  AKA: slk_set()
-   --  We do not inline this procedure
-
-   --  #1A NAME="AFU_111"#2|
-   procedure Refresh_Soft_Label_Keys;
-   --  AKA: slk_refresh()
-   pragma Inline (Refresh_Soft_Label_Keys);
-
-   --  #1A NAME="AFU_112"#2|
-   procedure Refresh_Soft_Label_Keys_Without_Update;
-   --  AKA: slk_noutrefresh()
-   pragma Inline (Refresh_Soft_Label_Keys_Without_Update);
-
-   --  #1A NAME="AFU_113"#2|
-   procedure Get_Soft_Label_Key (Label : Label_Number;
-                                 Text  : out String);
-   --  AKA: slk_label()
-
-   --  #1A NAME="AFU_114"#2|
-   function Get_Soft_Label_Key (Label : Label_Number) return String;
-   --  AKA: slk_label()
-   --  Same as function
-   pragma Inline (Get_Soft_Label_Key);
-
-   --  #1A NAME="AFU_115"#2|
-   procedure Clear_Soft_Label_Keys;
-   --  AKA: slk_clear()
-   pragma Inline (Clear_Soft_Label_Keys);
-
-   --  #1A NAME="AFU_116"#2|
-   procedure Restore_Soft_Label_Keys;
-   --  AKA: slk_restore()
-   pragma Inline (Restore_Soft_Label_Keys);
-
-   --  #1A NAME="AFU_117"#2|
-   procedure Touch_Soft_Label_Keys;
-   --  AKA: slk_touch()
-   pragma Inline (Touch_Soft_Label_Keys);
-
-   --  #1A NAME="AFU_118"#2|
-   procedure Switch_Soft_Label_Key_Attributes
-     (Attr : Character_Attribute_Set;
-      On   : Boolean := True);
-   --  AKA: slk_attron()
-   --  AKA: slk_attroff()
-   pragma Inline (Switch_Soft_Label_Key_Attributes);
-
-   --  #1A NAME="AFU_119"#2|
-   procedure Set_Soft_Label_Key_Attributes
-     (Attr  : Character_Attribute_Set := Normal_Video;
-      Color : Color_Pair := Color_Pair'First);
-   --  AKA: slk_attrset()
-   pragma Inline (Set_Soft_Label_Key_Attributes);
-
-   --  #1A NAME="AFU_120"#2|
-   function Get_Soft_Label_Key_Attributes return Character_Attribute_Set;
-   --  AKA: slk_attr()
-
-   --  #1A NAME="AFU_121"#2|
-   function Get_Soft_Label_Key_Attributes return Color_Pair;
-   --  AKA: slk_attr()
-   pragma Inline (Get_Soft_Label_Key_Attributes);
-
-   --  #1A NAME="AFU_122"#2|
-   procedure Set_Soft_Label_Key_Color (Pair : Color_Pair);
-   --  AKA: slk_color()
-   pragma Inline (Set_Soft_Label_Key_Color);
-
-   --  |=====================================================================
-   --  | Man page keybound.3x
-   --  |=====================================================================
-   --  Not Implemented: keybound
-
-   --  |=====================================================================
-   --  | Man page keyok.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_123"#2|
-   procedure Enable_Key (Key    : Special_Key_Code;
-                         Enable : Boolean := True);
-   --  AKA: keyok()
-   pragma Inline (Enable_Key);
-
-   --  |=====================================================================
-   --  | Man page define_key.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_124"#2|
-   procedure Define_Key (Definition : String;
-                         Key        : Special_Key_Code);
-   --  AKA: define_key()
-   pragma Inline (Define_Key);
-
-   --  |=====================================================================
-   --  | Man page curs_util.3x
-   --  |=====================================================================
-
-   --  | Not implemented : filter, use_env
-   --  | putwin, getwin are in the child package PutWin
-   --
-
-   --  #1A NAME="AFU_125"#2|
-   procedure Key_Name (Key  : Real_Key_Code;
-                       Name : out String);
-   --  AKA: keyname()
-   --  The external name for a real keystroke.
-
-   --  #1A NAME="AFU_126"#2|
-   function Key_Name (Key  : Real_Key_Code) return String;
-   --  AKA: keyname()
-   --  Same as function
-   --  We do not inline this routine
-
-   --  #1A NAME="AFU_127"#2|
-   procedure Un_Control (Ch  : Attributed_Character;
-                         Str : out String);
-   --  AKA: unctrl()
-
-   --  #1A NAME="AFU_128"#2|
-   function Un_Control (Ch  : Attributed_Character) return String;
-   --  AKA: unctrl()
-   --  Same as function
-   pragma Inline (Un_Control);
-
-   --  #1A NAME="AFU_129"#2|
-   procedure Delay_Output (Msecs : Natural);
-   --  AKA: delay_output()
-   pragma Inline (Delay_Output);
-
-   --  #1A NAME="AFU_130"#2|
-   procedure Flush_Input;
-   --  AKA: flushinp()
-   pragma Inline (Flush_Input);
-
-   --  |=====================================================================
-   --  | Man page curs_termattrs.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_131"#2|
-   function Baudrate return Natural;
-   --  AKA: baudrate()
-   pragma Inline (Baudrate);
-
-   --  #1A NAME="AFU_132"#2|
-   function Erase_Character return Character;
-   --  AKA: erasechar()
-   pragma Inline (Erase_Character);
-
-   --  #1A NAME="AFU_133"#2|
-   function Kill_Character return Character;
-   --  AKA: killchar()
-   pragma Inline (Kill_Character);
-
-   --  #1A NAME="AFU_134"#2|
-   function Has_Insert_Character return Boolean;
-   --  AKA: has_ic()
-   pragma Inline (Has_Insert_Character);
-
-   --  #1A NAME="AFU_135"#2|
-   function Has_Insert_Line return Boolean;
-   --  AKA: has_il()
-   pragma Inline (Has_Insert_Line);
-
-   --  #1A NAME="AFU_136"#2|
-   function Supported_Attributes return Character_Attribute_Set;
-   --  AKA: termattrs()
-   pragma Inline (Supported_Attributes);
-
-   --  #1A NAME="AFU_137"#2|
-   procedure Long_Name (Name : out String);
-   --  AKA: longname()
-
-   --  #1A NAME="AFU_138"#2|
-   function Long_Name return String;
-   --  AKA: longname()
-   --  Same as function
-   pragma Inline (Long_Name);
-
-   --  #1A NAME="AFU_139"#2|
-   procedure Terminal_Name (Name : out String);
-   --  AKA: termname()
-
-   --  #1A NAME="AFU_140"#2|
-   function Terminal_Name return String;
-   --  AKA: termname()
-   --  Same as function
-   pragma Inline (Terminal_Name);
-
-   --  |=====================================================================
-   --  | Man page curs_color.3x
-   --  |=====================================================================
-
-   --  COLOR_PAIR
-   --  COLOR_PAIR(n) in C is the same as
-   --  Attributed_Character(Ch => Nul, Color => n, Attr => Normal_Video)
-   --  In C you often see something like c = c | COLOR_PAIR(n);
-   --  This is equivalent to c.Color := n;
-
-   --  #1A NAME="AFU_141"#2|
-   procedure Start_Color;
-   --  AKA: start_color()
-   pragma Import (C, Start_Color, "start_color");
-
-   --  #1A NAME="AFU_142"#2|
-   procedure Init_Pair (Pair : Redefinable_Color_Pair;
-                        Fore : Color_Number;
-                        Back : Color_Number);
-   --  AKA: init_pair()
-   pragma Inline (Init_Pair);
-
-   --  #1A NAME="AFU_143"#2|
-   procedure Pair_Content (Pair : Color_Pair;
-                           Fore : out Color_Number;
-                           Back : out Color_Number);
-   --  AKA: pair_content()
-   pragma Inline (Pair_Content);
-
-   --  #1A NAME="AFU_144"#2|
-   function Has_Colors return Boolean;
-   --  AKA: has_colors()
-   pragma Inline (Has_Colors);
-
-   --  #1A NAME="AFU_145"#2|
-   procedure Init_Color (Color : Color_Number;
-                         Red   : RGB_Value;
-                         Green : RGB_Value;
-                         Blue  : RGB_Value);
-   --  AKA: init_color()
-   pragma Inline (Init_Color);
-
-   --  #1A NAME="AFU_146"#2|
-   function Can_Change_Color return Boolean;
-   --  AKA: can_change_color()
-   pragma Inline (Can_Change_Color);
-
-   --  #1A NAME="AFU_147"#2|
-   procedure Color_Content (Color : Color_Number;
-                            Red   : out RGB_Value;
-                            Green : out RGB_Value;
-                            Blue  : out RGB_Value);
-   --  AKA: color_content()
-   pragma Inline (Color_Content);
-
-   --  |=====================================================================
-   --  | Man page curs_kernel.3x
-   --  |=====================================================================
-   --  | Not implemented: getsyx, setsyx
-   --
-   type Curses_Mode is (Curses, Shell);
-
-   --  #1A NAME="AFU_148"#2|
-   procedure Save_Curses_Mode (Mode : Curses_Mode);
-   --  AKA: def_prog_mode()
-   --  AKA: def_shell_mode()
-   pragma Inline (Save_Curses_Mode);
-
-   --  #1A NAME="AFU_149"#2|
-   procedure Reset_Curses_Mode (Mode : Curses_Mode);
-   --  AKA: reset_prog_mode()
-   --  AKA: reset_shell_mode()
-   pragma Inline (Reset_Curses_Mode);
-
-   --  #1A NAME="AFU_150"#2|
-   procedure Save_Terminal_State;
-   --  AKA: savetty()
-   pragma Inline (Save_Terminal_State);
-
-   --  #1A NAME="AFU_151"#2|
-   procedure Reset_Terminal_State;
-   --  AKA: resetty();
-   pragma Inline (Reset_Terminal_State);
-
-   type Stdscr_Init_Proc is access
-      function (Win     : Window;
-                Columns : Column_Count) return Integer;
-   pragma Convention (C, Stdscr_Init_Proc);
-   --  N.B.: the return value is actually ignored, but it seems to be
-   --        a good practice to return 0 if you think all went fine
-   --        and -1 otherwise.
-
-   --  #1A NAME="AFU_152"#2|
-   procedure Rip_Off_Lines (Lines : Integer;
-                            Proc  : Stdscr_Init_Proc);
-   --  AKA: ripoffline()
-   --  N.B.: to be more precise, this uses a ncurses specific enhancement of
-   --        ripoffline(), in which the Lines argument absolute value is the
-   --        number of lines to be ripped of. The official ripoffline() only
-   --        uses the sign of Lines to remove a single line from bottom or top.
-   pragma Inline (Rip_Off_Lines);
-
-   type Cursor_Visibility is (Invisible, Normal, Very_Visible);
-
-   --  #1A NAME="AFU_153"#2|
-   procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility);
-   --  AKA: curs_set()
-   pragma Inline (Set_Cursor_Visibility);
-
-   --  #1A NAME="AFU_154"#2|
-   procedure Nap_Milli_Seconds (Ms : Natural);
-   --  AKA: napms()
-   pragma Inline (Nap_Milli_Seconds);
-
-   --  |=====================================================================
-   --  | Some useful helpers.
-   --  |=====================================================================
-   type Transform_Direction is (From_Screen, To_Screen);
-   procedure Transform_Coordinates
-     (W      : Window := Standard_Window;
-      Line   : in out Line_Position;
-      Column : in out Column_Position;
-      Dir    : Transform_Direction := From_Screen);
-   --  This procedure transforms screen coordinates into coordinates relative
-   --  to the window and vice versa, depending on the Dir parameter.
-   --  Screen coordinates are the position information for the physical device.
-   --  An Curses_Exception will be raised if Line and Column are not in the
-   --  Window or if you pass the Null_Window as argument.
-   --  We do not inline this procedure
-
-   --  |=====================================================================
-   --  | Man page default_colors.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_155"#2|
-   procedure Use_Default_Colors;
-   --  AKA: use_default_colors()
-   pragma Inline (Use_Default_Colors);
-
-   --  #1A NAME="AFU_156"#2|
-   procedure Assume_Default_Colors (Fore : Color_Number := Default_Color;
-                                    Back : Color_Number := Default_Color);
-   --  AKA: assume_default_colors()
-   pragma Inline (Assume_Default_Colors);
-
-   --  |=====================================================================
-   --  | Man page curs_extend.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_157"#2|
-   function Curses_Version return String;
-   --  AKA: curses_version()
-
-   --  #1A NAME="AFU_158"#2|
-   --  The returnvalue is the previous setting of the flag
-   function Use_Extended_Names (Enable : Boolean) return Boolean;
-   --  AKA: use_extended_names()
-
-   --  |=====================================================================
-   --  | Man page curs_trace.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_159"#2|
-   procedure Curses_Free_All;
-   --  AKA: _nc_freeall()
-
-   --  |=====================================================================
-   --  | Man page curs_scr_dump.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_160"#2|
-   procedure Screen_Dump_To_File (Filename : String);
-   --  AKA: scr_dump()
-
-   --  #1A NAME="AFU_161"#2|
-   procedure Screen_Restore_From_File (Filename : String);
-   --  AKA: scr_restore()
-
-   --  #1A NAME="AFU_162"#2|
-   procedure Screen_Init_From_File (Filename : String);
-   --  AKA: scr_init()
-
-   --  #1A NAME="AFU_163"#2|
-   procedure Screen_Set_File (Filename : String);
-   --  AKA: scr_set()
-
-   --  |=====================================================================
-   --  | Man page curs_print.3x
-   --  |=====================================================================
-   --  Not implemented: mcprint
-
-   --  |=====================================================================
-   --  | Man page curs_printw.3x
-   --  |=====================================================================
-   --  Not implemented: printw,  wprintw, mvprintw, mvwprintw, vwprintw,
-   --                   vw_printw
-   --  Please use the Ada style Text_IO child packages for formatted
-   --  printing. It does not make a lot of sense to map the printf style
-   --  C functions to Ada.
-
-   --  |=====================================================================
-   --  | Man page curs_scanw.3x
-   --  |=====================================================================
-   --  Not implemented: scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw
-
-   --  |=====================================================================
-   --  | Man page resizeterm.3x
-   --  |=====================================================================
-   --  Not Implemented: resizeterm
-
-   --  |=====================================================================
-   --  | Man page wresize.3x
-   --  |=====================================================================
-
-   --  #1A NAME="AFU_164"#2|
-   procedure Resize (Win               : Window := Standard_Window;
-                     Number_Of_Lines   : Line_Count;
-                     Number_Of_Columns : Column_Count);
-   --  AKA: wresize()
-
-private
-   type Window is new System.Storage_Elements.Integer_Address;
-   Null_Window : constant Window := 0;
-
-   --  The next constants are generated and may be different on your
-   --  architecture.
-   --
-   Sizeof_bool        : constant Natural :=  1; --  bool
-   type Curses_Bool is mod 2 ** Interfaces.C.char'Size;
-   Curses_Bool_False : constant Curses_Bool := 0;
-
-end Terminal_Interface.Curses;
-
diff --git a/deps/ncurses-5.9/doc/html/ada/terminal_interface__ads.htm b/deps/ncurses-5.9/doc/html/ada/terminal_interface__ads.htm deleted file mode 100644 index 6d7cdf1..0000000 --- a/deps/ncurses-5.9/doc/html/ada/terminal_interface__ads.htm +++ /dev/null @@ -1,53 +0,0 @@ - -terminal_interface.ads - -

File : terminal_interface.ads


-
-------------------------------------------------------------------------------
---                                                                          --
---                           GNAT ncurses Binding                           --
---                                                                          --
---                            Terminal_Interface                            --
---                                                                          --
---                                 S P E C                                  --
---                                                                          --
-------------------------------------------------------------------------------
--- Copyright (c) 1998,2006 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, 1996
---  Version Control:
---  @Revision: 1.14 @
---  @Date: 2006/06/25 14:30:22 @
---  Binding Version 01.00
-------------------------------------------------------------------------------
-package Terminal_Interface is
-   pragma Pure (Terminal_Interface);
---
---  Everything is in the child units
---
-end Terminal_Interface;
-
diff --git a/deps/ncurses-5.9/doc/html/announce.html b/deps/ncurses-5.9/doc/html/announce.html deleted file mode 100644 index 961e757..0000000 --- a/deps/ncurses-5.9/doc/html/announce.html +++ /dev/null @@ -1,389 +0,0 @@ - - - - - - - - Announcing ncurses 5.9 - - - - - -

Announcing ncurses 5.9

The ncurses (new curses) - library is a free software emulation of curses in System V - Release 4.0, and more. It uses terminfo format, supports pads and - color and multiple highlights and forms characters and - function-key mapping, and has all the other SYSV-curses - enhancements over BSD curses. - -

In mid-June 1995, the maintainer of 4.4BSD curses declared - that he considered 4.4BSD curses obsolete, and encouraged the - keepers of Unix releases such as BSD/OS, FreeBSD and NetBSD to - switch over to ncurses.

- -

The ncurses code was developed under GNU/Linux. It has been in - use for some time with OpenBSD as the system curses library, and - on FreeBSD and NetBSD as an external package. It should port - easily to any ANSI/POSIX-conforming UNIX. It has even been ported - to OS/2 Warp!

- -

The distribution includes the library and support utilities, - including a terminfo compiler tic(1), a decompiler infocmp(1), - clear(1), tput(1), tset(1), and a termcap conversion tool - captoinfo(1). Full manual pages are provided for the library and - tools.

- -

The ncurses distribution is available via anonymous FTP at the - GNU distribution site ftp://ftp.gnu.org/gnu/ncurses/ .
- - It is also available at ftp://invisible-island.net/ncurses/ .

- -

Release Notes

This release is designed to be upward - compatible from ncurses 5.0 through 5.8; very few applications - will require recompilation, depending on the platform. These are - the highlights from the change-log since ncurses 5.8 release. -

- This is a bug-fix release, correcting a small number of urgent problems - in the ncurses library from the 5.8 release. -

- It also improves the Ada95 binding: -

    -
  • fixes a longstanding portability problem with its use of the - set_field_type - function. Because that function uses variable-length argument lists, - its interface with gnat does not work with certain platforms. -
  • improves configurability and portability, particularly when built - separately from the main ncurses tree. The 5.8 release introduced - scripts which can be used to construct separate tarballs for the - Ada95 and ncurses examples. -

    Those were a proof of concept. For the 5.9 release, those - scripts are augmented with rpm- and dpkg-scripts used in test builds - against a variety of gnat- and system ncurses versions as old as - gnat 3.15 and ncurses 5.4 (see snapshots and systems tested - here. -

  • additional improvements were made for portability of the - ncurses examples, adding rpm- and dpkg-scripts for test-builds. - See - this page - for snapshots and other information. -
- -

Features of Ncurses

The ncurses package is fully - compatible with SVr4 (System V Release 4) curses: - -
    -
  • All 257 of the SVr4 calls have been implemented (and are - documented).
  • - -
  • Full support for SVr4 curses features including keyboard - mapping, color, forms-drawing with ACS characters, and - automatic recognition of keypad and function keys.
  • - -
  • An emulation of the SVr4 panels library, supporting a stack - of windows with backing store, is included.
  • - -
  • An emulation of the SVr4 menus library, supporting a - uniform but flexible interface for menu programming, is - included.
  • - -
  • An emulation of the SVr4 form library, supporting data - collection through on-screen forms, is included.
  • - -
  • Binary terminfo entries generated by the ncurses tic(1) - implementation are bit-for-bit-compatible with the entry format - SVr4 curses uses.
  • - -
  • The utilities have options to allow you to filter terminfo - entries for use with less capable - curses/terminfo versions such - as the HP/UX and AIX ports.
  • -
The ncurses package also has many useful extensions over - SVr4: - -
    -
  • The API is 8-bit clean and base-level conformant with the - X/OPEN curses specification, XSI curses (that is, it implements - all BASE level features, and most EXTENDED features). It - includes many function calls not supported under SVr4 curses - (but portability of all calls is documented so you can use the - SVr4 subset only).
  • - -
  • Unlike SVr3 curses, ncurses can write to the - rightmost-bottommost corner of the screen if your terminal has - an insert-character capability.
  • - -
  • Ada95 and C++ bindings.
  • - -
  • Support for mouse event reporting with X Window xterm and - FreeBSD and OS/2 console windows.
  • - -
  • Extended mouse support via Alessandro Rubini's gpm - package.
  • - -
  • The function wresize allows you to resize - windows, preserving their data.
  • - -
  • The function use_default_colors allows you to - use the terminal's default colors for the default color pair, - achieving the effect of transparent colors.
  • - -
  • The functions keyok and - define_key allow you to better control the use of - function keys, e.g., disabling the ncurses KEY_MOUSE, or by - defining more than one control sequence to map to a given key - code.
  • - -
  • Support for 256-color terminals, such as modern xterm, when - configured using the --enable-ext-colors - option.
  • - -
  • Support for 16-color terminals, such as aixterm - and modern xterm.
  • - -
  • Better cursor-movement optimization. The package now - features a cursor-local-movement computation more efficient - than either BSD's or System V's.
  • - -
  • Super hardware scrolling support. The screen-update code - incorporates a novel, simple, and cheap algorithm that enables - it to make optimal use of hardware scrolling, line-insertion, - and line-deletion for screen-line movements. This algorithm is - more powerful than the 4.4BSD curses quickch - routine.
  • - -
  • Real support for terminals with the magic-cookie glitch. - The screen-update code will refrain from drawing a highlight if - the magic- cookie unattributed spaces required just before the - beginning and after the end would step on a non-space - character. It will automatically shift highlight boundaries - when doing so would make it possible to draw the highlight - without changing the visual appearance of the screen.
  • - -
  • It is possible to generate the library with a list of - pre-loaded fallback entries linked to it so that it can serve - those terminal types even when no terminfo tree or termcap file - is accessible (this may be useful for support of - screen-oriented programs that must run in single-user - mode).
  • - -
  • The tic(1)/captoinfo utility provided with ncurses has the - ability to translate many termcaps from the XENIX, IBM and - AT&T extension sets.
  • - -
  • A BSD-like tset(1) utility is provided.
  • - -
  • The ncurses library and utilities will automatically read - terminfo entries from $HOME/.terminfo if it exists, and compile - to that directory if it exists and the user has no write access - to the system directory. This feature makes it easier for users - to have personal terminfo entries without giving up access to - the system terminfo directory.
  • - -
  • You may specify a path of directories to search for - compiled descriptions with the environment variable - TERMINFO_DIRS (this generalizes the feature provided by - TERMINFO under stock System V.)
  • - -
  • In terminfo source files, use capabilities may refer not - just to other entries in the same source file (as in System V) - but also to compiled entries in either the system terminfo - directory or the user's $HOME/.terminfo directory.
  • - -
  • A script (capconvert) is provided to help - BSD users transition from termcap to terminfo. It gathers the - information in a TERMCAP environment variable and/or a - ~/.termcap local entries file and converts it to an equivalent - local terminfo tree under $HOME/.terminfo.
  • - -
  • Automatic fallback to the /etc/termcap file can be compiled - in when it is not possible to build a terminfo tree. This - feature is neither fast nor cheap, you don't want to use it - unless you have to, but it's there.
  • - -
  • The table-of-entries utility toe makes it - easy for users to see exactly what terminal types are available - on the system.
  • - -
  • The library meets the XSI requirement that every macro - entry point have a corresponding function which may be linked - (and will be prototype-checked) if the macro definition is - disabled with #undef.
  • - -
  • An HTML "Introduction to Programming with NCURSES" document - provides a narrative introduction to the curses programming - interface.
  • -
- -

State of the Package

Numerous bugs present in earlier - versions have been fixed; the library is far more reliable than - it used to be. Bounds checking in many `dangerous' entry points - has been improved. The code is now type-safe according to gcc - -Wall. The library has been checked for malloc leaks and arena - corruption by the Purify memory-allocation tester. - -

The ncurses code has been tested with a wide variety of - applications including (versions starting with those noted):

- -
-
cdk
- -
Curses Development Kit
- http://invisible-island.net/cdk/
- - http://www.vexus.ca/products/CDK/
- -
ded
- -
directory-editor
- http://invisible-island.net/ded/
- -
dialog
- -
the underlying application used in Slackware's setup, and - the basis for similar applications on GNU/Linux.
- http://invisible-island.net/dialog/
- -
lynx
- -
the character-screen WWW browser
- http://lynx.isc.org/release/
- -
Midnight Commander
- -
file manager
- http://www.midnight-commander.org/
- -
mutt
- -
mail utility
- http://www.mutt.org/
- -
ncftp
- -
file-transfer utility
- http://www.ncftp.com/
- -
nvi
- -
New vi versions 1.50 are able to use ncurses versions 1.9.7 - and later.
- https://sites.google.com/a/bostic.com/keithbostic/nvi
-
- -
pinfo
- -
Lynx-like info browser. https://alioth.debian.org/projects/pinfo/
- -
tin
- -
newsreader, supporting color, MIME http://www.tin.org/
-
as well as some that use ncurses for the terminfo support - alone: - -
-
minicom
- -
terminal emulator
- http://alioth.debian.org/projects/minicom/
- -
vile
- -
vi-like-emacs
- http://invisible-island.net/vile/
-
- -

The ncurses distribution includes a selection of test programs - (including a few games).

- -

Who's Who and What's What

Zeyd Ben-Halim started it from - a previous package pcurses, written by Pavel Curtis. Eric S. - Raymond continued development. Jürgen Pfeifer wrote most of - the form and menu libraries. Ongoing work is being done by - Thomas Dickey. - Thomas Dickey acts as the maintainer for the Free Software - Foundation, which holds the copyright on ncurses. Contact the - current maintainers at bug-ncurses@gnu.org. - -

To join the ncurses mailing list, please write email to - bug-ncurses-request@gnu.org containing the line:

-
-             subscribe <name>@<host.domain>
-
- -

This list is open to anyone interested in helping with the - development and testing of this package.

- -

Beta versions of ncurses and patches to the current release - are made available at ftp://invisible-island.net/ncurses/ .

- -

Future Plans

- -
    -
  • Extended-level XPG4 conformance, with internationalization - support.
  • - -
  • Ports to more systems, including DOS and Windows.
  • -
We need people to help with these projects. If you are - interested in working on them, please join the ncurses list. - -

Other Related Resources

The distribution provides a newer - version of the terminfo-format terminal description file once - maintained by Eric - Raymond . Unlike the older version, the termcap and - terminfo data are provided in the same file, and provides several - user-definable extensions beyond the X/Open specification. - -

You can find lots of information on terminal-related topics - not covered in the terminfo file at - Richard Shuford's archive .

- - diff --git a/deps/ncurses-5.9/doc/html/hackguide.html b/deps/ncurses-5.9/doc/html/hackguide.html deleted file mode 100644 index 417f4c9..0000000 --- a/deps/ncurses-5.9/doc/html/hackguide.html +++ /dev/null @@ -1,914 +0,0 @@ - - - - -A Hacker's Guide to Ncurses Internals - - - - - - -

A Hacker's Guide to NCURSES

- -

Contents

- - -

Abstract

- -This document is a hacker's tour of the ncurses 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. - -

Objective of the Package

- -The objective of the ncurses package is to provide a free software API for -character-cell terminals and terminal emulators with the following -characteristics: - -
    -
  • Source-compatible with historical curses implementations (including - the original BSD curses and System V curses. -
  • Conformant with the XSI Curses standard issued as part of XPG4 by - X/Open. -
  • High-quality -- stable and reliable code, wide portability, good - packaging, superior documentation. -
  • Featureful -- should eliminate as much of the drudgery of C interface - programming as possible, freeing programmers to think at a higher - level of design. -
- -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. - -

Why System V Curses?

- -We used System V curses as a model, reverse-engineering their API, in -order to fulfill the first two objectives.

- -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.

- -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. - -

How to Design Extensions

- -The third objective (standards conformance) requires that it be easy to -condition source code using ncurses so that the absence of nonstandard -extensions does not break the code.

- -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 ncurses extension.

- -For example, there is a macro NCURSES_MOUSE_VERSION which XSI Curses -does not define, but which is defined in the ncurses library header. -You can use this to condition the calls to the mouse API calls. - -

Portability and Configuration

- -Code written for ncurses may assume an ANSI-standard C compiler and -POSIX-compatible OS interface. It may also assume the presence of a -System-V-compatible select(2) call.

- -We encourage (but do not require) developers to make the code friendly -to less-capable UNIX environments wherever possible.

- -We encourage developers to support OS-specific optimizations and methods -not available under POSIX/ANSI, provided only that: - -

    -
  • All such code is properly conditioned so the build process does not - attempt to compile it under a plain ANSI/POSIX environment. -
  • Adding such implementation methods does not introduce incompatibilities - in the ncurses API between platforms. -
- -We use GNU autoconf(1) 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. - -

Documentation Conventions

- -There are three kinds of documentation associated with this package. Each -has a different preferred format: - -
    -
  • Package-internal files (README, INSTALL, TO-DO etc.) -
  • Manual pages. -
  • Everything else (i.e., narrative documentation). -
- -Our conventions are simple: -
    -
  1. Maintain package-internal files in plain text. - The expected viewer for them more(1) or an editor window; there's - no point in elaborate mark-up. - -
  2. Mark up manual pages in the man macros. These have to be viewable - through traditional man(1) programs. - -
  3. Write everything else in HTML. -
- -When in doubt, HTMLize a master and use lynx(1) to generate -plain ASCII (as we do for the announcement document).

- -The reason for choosing HTML is that it's (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 don't 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. - -

How to Report Bugs

- -The reporting address for bugs is -bug-ncurses@gnu.org. -This is a majordomo list; to join, write -to bug-ncurses-request@gnu.org with a message containing the line: -
-             subscribe <name>@<host.domain>
-
- -The ncurses code is maintained by a small group of -volunteers. While we try our best to fix bugs promptly, we simply -don't 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 ncurses, there are some steps you can take -before contacting us that will help get the bug fixed quickly.

- -In order to use our bug-fixing time efficiently, we put people who -show us they've taken these steps at the head of our queue. This -means that if you don't, you'll probably end up at the tail end and -have to wait a while. - -

    -
  1. Develop a recipe to reproduce the bug. -

    -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.) - -

  2. Try to reproduce the bug on a different terminal type.

    - -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're using a traditional -asynchronous terminal or PC-based terminal emulator, rather than xterm -or a UNIX console entry.

    - -It's therefore extremely helpful if you can tell us whether or not your -problem reproduces on other terminal types. Usually you'll have both -a console type and xterm available; please tell us whether or not your -bug reproduces on both.

    - -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've seen -are either triggered or masked by these. - -

  3. Generate and examine a trace file for the broken behavior.

    - -Recompile your program with the debugging versions of the libraries. -Insert a trace() call with the argument set to TRACE_UPDATE. -(See "Writing Programs with -NCURSES" for details on trace levels.) -Reproduce your bug, then look at the trace file to see what the library -was actually doing.

    - -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.

    - -If the virtual-screen dumps look correct but the bug persists, it's -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.

    - -Often you'll find terminfo problems at this stage by noticing that the -escape sequences put out for various capabilities are wrong. If not, -you're likely to learn enough to be able to characterize any bug in -the screen-update logic quite exactly. - -

  4. Report details and symptoms, not just interpretations.

    - -If you do the preceding two steps, it is very likely that you'll 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 can't characterize and fix yourself.

    - -If you're still stuck, at least you'll 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.

    - -If your bug produces a bad update, include a trace file. Try to make -the trace at the least voluminous level that pins down the -bug. Logs that have been through tracemunch are OK, it doesn't throw -away any information (actually they're better than un-munched ones because -they're easier to read).

    - -If your bug produces a core-dump, please include a symbolic stack trace -generated by gdb(1) or your local equivalent.

    - -Tell us about every terminal on which you've reproduced the bug -- and -every terminal on which you can't. Ideally, sent us terminfo sources -for all of these (yours might differ from ours).

    - -Include your ncurses version and your OS/machine type, of course! You can -find your ncurses version in the curses.h file. -

- -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.

- -The most important of these is mvcur, 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've got -a bad capability identified, you can disable it and test again. The -program is command-driven and has on-line help.

- -If you think the vertical-scroll optimization is broken, or just want to -understand how it works better, build hashmap and read the -header comments of hardscroll.c and hashmap.c; then try -it out. You can also test the hardware-scrolling optimization separately -with hardscroll.

- -

A Tour of the Ncurses Library

- -

Library Overview

- -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 -
- -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 - -
-are all in this category. They are very -unlikely to need change, barring bugs or some fundamental -reorganization in the underlying data structures.

- -These files are used only for debugging support: -

- -lib_trace.c -lib_traceatr.c -lib_tracebits.c -lib_tracechr.c -lib_tracedmp.c -lib_tracemse.c -trace_buf.c - -
-It is rather unlikely you will ever need to change these, unless -you want to introduce a new debug trace level for some reason.

- -There is another group of files that do direct I/O via tputs(), -computations on the terminal capabilities, or queries to the OS -environment, but nevertheless have only fairly low complexity. These -include: -

- -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. - -
-They are likely to need revision only if -ncurses is being ported to an environment without an underlying -terminfo capability representation.

- -These files -have serious hooks into -the tty driver and signal facilities: -

- -lib_kernel.c -lib_baudrate.c -lib_raw.c -lib_tstp.c -lib_twait.c - -
-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 lib_print.c uses sleep(2) and also -falls in this category.

- -Almost all of the real work is done in the files -

- -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 - -
-Most of the algorithmic complexity in the -library lives in these files. -If there is a real bug in ncurses itself, it's probably here. -We'll tour some of these files in detail -below (see The Engine Room).

- -Finally, there is a group of files that is actually most of the -terminfo compiler. The reason this code lives in the ncurses -library is to support fallback to /etc/termcap. These files include -

- -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 - -
-We'll discuss these in the compiler tour. - -

The Engine Room

- -

Keyboard Input

- -All ncurses input funnels through the function -wgetch(), defined in lib_getch.c. 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.

- -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 ungetch().

- -The wgetch() 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.

- -Hackers bruised by previous encounters with variant select(2) -calls may find the code in lib_twait.c interesting. It deals -with the problem that some BSD selects don't return a reliable -time-left value. The function timed_wait() effectively -simulates a System V select. - -

Mouse Events

- -If the mouse interface is active, wgetch() polls for mouse -events each call, before it goes to the keyboard for input. It is -up to lib_mouse.c how the polling is accomplished; it may vary -for different devices.

- -Under xterm, however, mouse event notifications come in via the keyboard -input stream. They are recognized by having the kmous 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.

- -This kluge only works because kmous isn't actually used by any -historic terminal type or curses implementation we know of. Best -guess is it's a relic of some forgotten experiment in-house at Bell -Labs that didn't 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.

- -Here are some more details about mouse event handling:

- -The lib_mouse()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.

- -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) _nc_mouse_event() detects a series of incoming -mouse reports and queues them, or (b) code in lib_getch.c detects the -kmous prefix in the keyboard input stream and calls _nc_mouse_inline -to queue up a series of adjacent mouse reports.

- -In either case, _nc_mouse_parse() 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). - -

Output and Screen Updating

- -With the single exception of character echoes during a wgetnstr() -call (which simulates cooked-mode line editing in an ncurses window), -the library normally does all its output at refresh time.

- -The main job is to go from the current state of the screen (as represented -in the curscr window structure) to the desired new state (as -represented in the newscr window structure), while doing as -little I/O as possible.

- -The brains of this operation are the modules hashmap.c, -hardscroll.c and lib_doupdate.c; the latter two use -lib_mvcur.c. Essentially, what happens looks like this:

- -The hashmap.c 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.

- -The hardscroll.c module computes an optimum set of scroll, -insertion, and deletion operations to make the indices match. It calls -_nc_mvcur_scrolln() in lib_mvcur.c to do those motions.

- -Then lib_doupdate.c goes to work. Its job is to do line-by-line -transformations of curscr lines to newscr lines. Its main -tool is the routine mvcur() in lib_mvcur.c. This routine -does cursor-movement optimization, attempting to get from given screen -location A to given location B in the fewest output characters possible.

- -If you want to work on screen optimizations, you should use the fact -that (in the trace-enabled version of the library) enabling the -TRACE_TIMES 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.

- -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 -_nc_optimize_enable. See the file include/curses.h.in -for mask values, near the end. - -

The Forms and Menu Libraries

- -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.

- -The configuration code prefers the POSIX regex facility, modeled on -System V's, but will settle for BSD regexps if the former isn't available.

- -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 ncurses. - -

A Tour of the Terminfo Compiler

- -The ncurses implementation of tic 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.

- -The implementation therefore starts with a table-driven, dual-mode -lexical analyzer (in comp_scan.c). 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". - -

Translation of Non-use Capabilities

- -Translation of most things besides use 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.

- -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 include/Caps; 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).

- -Thus, adding a new capability is usually pretty trivial, just a matter -of adding one line to the include/Caps file. We'll have more -to say about this in the section on Source-Form -Translation. - -

Use Capability Resolution

- -The background problem that makes tic tricky isn't the capability -translation itself, it's the resolution of use capabilities. Older -versions would not handle forward use 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.

- -This won't do for ncurses. The problem is that that the whole -compilation process has to be embeddable in the ncurses library -so that it can be called by the startup code to translate termcap -entries on the fly. The embedded version can't go promiscuously writing -everything it translates out to disk -- for one thing, it will typically -be running with non-root permissions.

- -So our tic is designed to parse an entire terminfo file into a -doubly-linked circular list of entry structures in-core, and then do -use 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're written out easy to do.

- -And this is exactly how the embedded version works. But the stand-alone -user-accessible version of tic partly reverts to the historical -strategy; it writes to disk (not keeping in core) any entry with no -use references.

- -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 three hours, rather than the twenty seconds -or less typical on the author's development box.

- -So. The executable tic passes the entry-parser a hook that -immediately 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's OK; -the resolution code will fetch it off disk when it can't find it in -core.

- -Name collisions will still be detected, just not as cleanly. The -write_entry() code complains before overwriting an entry that -postdates the time of tic's first call to -write_entry(), Thus it will complain about overwriting -entries newly made during the tic run, but not about -overwriting ones that predate it. - -

Source-Form Translation

- -Another use of tic 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 captoinfo(1) -manual page.

- -The translation output code (dump_entry() in -ncurses/dump_entry.c) is shared with the infocmp(1) -utility. It takes the same internal representation used to generate -the binary form and dumps it to standard output in a specified -format.

- -The include/Caps file has a header comment describing ways you -can specify source translations for nonstandard capabilities just by -altering the master table. It's possible to set up capability aliasing -or tell the compiler to plain ignore a given capability without writing -any C code at all.

- -For circumstances where you need to do algorithmic translation, there -are functions in parse_entry.c called after the parse of each -entry that are specifically intended to encapsulate such -translations. This, for example, is where the AIX box1 capability -get translated to an acsc string. - -

Other Utilities

- -The infocmp utility is just a wrapper around the same -entry-dumping code used by tic for source translation. Perhaps -the one interesting aspect of the code is the use of a predicate -function passed in to dump_entry() to control which -capabilities are dumped. This is necessary in order to handle both -the ordinary De-compilation case and entry difference reporting.

- -The tput and clear utilities just do an entry load -followed by a tputs() of a selected capability. - -

Style Tips for Developers

- -See the TO-DO file in the top-level directory of the source distribution -for additions that would be particularly useful.

- -The prefix _nc_ 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.

- -Look for the string FIXME in source files to tag minor bugs -and potential problems that could use fixing.

- -Don't try to auto-detect OS features in the main body of the C code. -That's the job of the configuration system.

- -To hold down complexity, do make your code data-driven. Especially, -if you can drive logic from a table filtered out of -include/Caps, do it. If you find you need to augment the -data in that file in order to generate the proper table, that's still -preferable to ad-hoc code -- that's why the fifth field (flags) is -there.

- -Have fun! - -

Porting Hints

- -The following notes are intended to be a first step towards DOS and Macintosh -ports of the ncurses libraries.

- -The following library modules are `pure curses'; they operate only on -the curses internal structures, do all output through other curses -calls (not including tputs() and putp()) 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. - -

- -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 - -
-

- -This module is pure curses, but calls outstr(): - -

- -lib_getstr.c - -
-

- -These modules are pure curses, except that they use tputs() -and putp(): - -

- -lib_beep.c -lib_color.c -lib_endwin.c -lib_options.c -lib_slk.c -lib_vidattr.c - -
-

- -This modules assist in POSIX emulation on non-POSIX systems: -

-
sigaction.c -
signal calls -
- -The following source files will not be needed for a -single-terminal-type port. - -
- -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 - -
-

- -The following modules will use open()/read()/write()/close()/lseek() on files, -but no other OS calls. - -

-
lib_screen.c -
used to read/write screen dumps -
lib_trace.c -
used to write trace data to the logfile -
- -Modules that would have to be modified for a port start here:

- -The following modules are `pure curses' but contain assumptions inappropriate -for a memory-mapped port. - -

-
lib_longname.c
assumes there may be multiple terminals -
lib_acs.c
assumes acs_map as a double indirection -
lib_mvcur.c
assumes cursor moves have variable cost -
lib_termcap.c
assumes there may be multiple terminals -
lib_ti.c
assumes there may be multiple terminals -
- -The following modules use UNIX-specific calls: - -
-
lib_doupdate.c
input checking -
lib_getch.c
read() -
lib_initscr.c
getenv() -
lib_newterm.c -
lib_baudrate.c -
lib_kernel.c
various tty-manipulation and system calls -
lib_raw.c
various tty-manipulation calls -
lib_setup.c
various tty-manipulation calls -
lib_restart.c
various tty-manipulation calls -
lib_tstp.c
signal-manipulation calls -
lib_twait.c
gettimeofday(), select(). -
- -
-
Eric S. Raymond <esr@snark.thyrsus.com>
-(Note: This is not the bug address!) - - diff --git a/deps/ncurses-5.9/doc/html/index.html b/deps/ncurses-5.9/doc/html/index.html deleted file mode 100644 index f95e198..0000000 --- a/deps/ncurses-5.9/doc/html/index.html +++ /dev/null @@ -1,51 +0,0 @@ - - - - -Welcome to ncurses - - - - - -

Welcome to ncurses

-From this index page you have access to these further documents -

-We also have HTML versions of all the ncurses manpages. - - diff --git a/deps/ncurses-5.9/doc/html/man/adacurses-config.1.html b/deps/ncurses-5.9/doc/html/man/adacurses-config.1.html deleted file mode 100644 index 74b58a1..0000000 --- a/deps/ncurses-5.9/doc/html/man/adacurses-config.1.html +++ /dev/null @@ -1,98 +0,0 @@ - - - - -ADACURSES 1 User Commands - - - - -

ADACURSES 1 User Commands

-
-
-
-ADACURSES(1)                 User Commands                 ADACURSES(1)
-
-
-
-
-
-

NAME

-       adacurses-config - helper script for AdaCurses libraries
-
-
-
-

SYNOPSIS

-       adacurses-config [options]
-
-
-
-

DESCRIPTION

-       This  is  a  shell  script which simplifies configuring an
-       application  to  use  the  AdaCurses  library  binding  to
-       ncurses.
-
-
-
-

OPTIONS

-       --cflags
-              echos  the gnat (Ada compiler) flags needed to com-
-              pile with AdaCurses.
-
-       --libs echos  the  gnat  libraries  needed  to  link  with
-              AdaCurses.
-
-       --version
-              echos  the release+patchdate version of the ncurses
-              libraries used to configure and build AdaCurses.
-
-       --help prints a  list  of  the  adacurses-config  script's
-              options.
-
-
-
-

SEE ALSO

-       curses(3x)
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                           ADACURSES(1)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/captoinfo.1m.html b/deps/ncurses-5.9/doc/html/man/captoinfo.1m.html deleted file mode 100644 index aeacdd3..0000000 --- a/deps/ncurses-5.9/doc/html/man/captoinfo.1m.html +++ /dev/null @@ -1,229 +0,0 @@ - - - - -captoinfo 1m - - - - -

captoinfo 1m

-
-
-
-captoinfo(1m)                                             captoinfo(1m)
-
-
-
-
-
-

NAME

-       captoinfo  - convert a termcap description into a terminfo
-       description
-
-
-
-

SYNOPSIS

-       captoinfo [-vn width]  [-V] [-1] [-w width] file . . .
-
-
-
-

DESCRIPTION

-       captoinfo looks  in  each  given  text  file  for  termcap
-       descriptions.   For each one found, an equivalent terminfo
-       description is written to  standard  output.   Termcap  tc
-       capabilities are translated directly to terminfo use capa-
-       bilities.
-
-       If no file is given, then the environment variable TERMCAP
-       is  used  for the filename or entry.  If TERMCAP is a full
-       pathname to a file, only the terminal whose name is speci-
-       fied  in  the  environment variable TERM is extracted from
-       that file.  If the environment  variable  TERMCAP  is  not
-       set, then the file /usr/share/terminfo is read.
-
-       -v   print  out  tracing  information on standard error as
-            the program runs.
-
-       -V   print out the version of the program in use on  stan-
-            dard error and exit.
-
-       -1   cause  the fields to print out one to a line.  Other-
-            wise, the fields will be printed several to a line to
-            a maximum width of 60 characters.
-
-       -w   change the output to width characters.
-
-
-
-

FILES

-       /usr/share/terminfo Compiled      terminal     description
-                           database.
-
-
-
-

TRANSLATIONS FROM NONSTANDARD CAPABILITIES

-       Some obsolete nonstandard capabilities will  automatically
-       be  translated  into  standard  (SVr4/XSI Curses) terminfo
-       capabilities by captoinfo.  Whenever one  of  these  auto-
-       matic  translations  is  done,  the  program will issue an
-       notification to stderr, inviting the user to check that it
-       has  not  mistakenly  translated  a completely unknown and
-       random capability and/or syntax error.
-
-
-       Nonstd   Std    From           Terminfo
-        name    name                 capability
-       -----------------------------------------------
-       BO       mr     AT&T    enter_reverse_mode
-       CI       vi     AT&T    cursor_invisible
-       CV       ve     AT&T    cursor_normal
-       DS       mh     AT&T    enter_dim_mode
-       EE       me     AT&T    exit_attribute_mode
-       FE       LF     AT&T    label_on
-       FL       LO     AT&T    label_off
-       XS       mk     AT&T    enter_secure_mode
-       EN       @7     XENIX   key_end
-       GE       ae     XENIX   exit_alt_charset_mode
-       GS       as     XENIX   enter_alt_charset_mode
-
-       HM       kh     XENIX   key_home
-       LD       kL     XENIX   key_dl
-       PD       kN     XENIX   key_npage
-       PN       po     XENIX   prtr_off
-       PS       pf     XENIX   prtr_on
-       PU       kP     XENIX   key_ppage
-       RT       @8     XENIX   kent
-       UP       ku     XENIX   kcuu1
-       KA       k;     Tek     key_f10
-       KB       F1     Tek     key_f11
-       KC       F2     Tek     key_f12
-       KD       F3     Tek     key_f13
-       KE       F4     Tek     key_f14
-       KF       F5     Tek     key_f15
-       BC       Sb     Tek     set_background
-       FC       Sf     Tek     set_foreground
-       HS       mh     Iris    enter_dim_mode
-
-       XENIX termcap also used to have a set of  extension  capa-
-       bilities  for forms drawing, designed to take advantage of
-       the IBM PC high-half graphics.  They were as follows:
-
-
-       Cap          Graphic
-       -----------------------------
-       G2    upper left
-       G3    lower left
-       G1    upper right
-       G4    lower right
-       GR    pointing right
-       GL    pointing left
-       GU    pointing up
-       GD    pointing down
-       GH    horizontal line
-       GV    vertical line
-       GC    intersection
-       G6    upper left
-       G7    lower left
-       G5    upper right
-       G8    lower right
-       Gr    tee pointing right
-       Gr    tee pointing left
-       Gu    tee pointing up
-       Gd    tee pointing down
-       Gh    horizontal line
-       Gv    vertical line
-       Gc    intersection
-       GG    acs magic cookie count
-
-       If the single-line capabilities occur in  an  entry,  they
-       will  automatically  be composed into an acsc string.  The
-       double-line capabilities and GG are discarded with a warn-
-       ing message.
-
-       IBM's AIX has a terminfo facility descended from SVr1 ter-
-       minfo but incompatible with the SVr4 format.  The  follow-
-       ing AIX extensions are automatically translated:
-
-        IBM    XSI
-       -------------
-       ksel    kslt
-       kbtab   kcbt
-       font0   s0ds
-       font1   s1ds
-       font2   s2ds
-
-       font3   s3ds
-
-       Additionally,  the  AIX  box1 capability will be automati-
-       cally translated to an acsc string.
-
-       Hewlett-Packard's terminfo library supports  two  nonstan-
-       dard  terminfo  capabilities  meml  (memory lock) and memu
-       (memory unlock).  These will be discarded with  a  warning
-       message.
-
-
-
-

NOTES

-       This  utility is actually a link to tic(1m), running in -I
-       mode.  You can use other tic options such as -f and  -x.
-
-       The trace option is not identical to SVr4's.  Under  SVr4,
-       instead  of  following  the  -v  with a trace level n, you
-       repeat it n times.
-
-
-
-

SEE ALSO

-       infocmp(1m), curses(3x), terminfo(5)
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-

AUTHOR

-       Eric S. Raymond <esr@snark.thyrsus.com> and
-       Thomas E. Dickey <dickey@invisible-island.net>
-
-
-
-                                                          captoinfo(1m)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/clear.1.html b/deps/ncurses-5.9/doc/html/man/clear.1.html deleted file mode 100644 index 138806f..0000000 --- a/deps/ncurses-5.9/doc/html/man/clear.1.html +++ /dev/null @@ -1,84 +0,0 @@ - - - - -clear 1 - - - - -

clear 1

-
-
-
-clear(1)                                                       clear(1)
-
-
-
-
-
-

NAME

-       clear - clear the terminal screen
-
-
-
-

SYNOPSIS

-       clear
-
-
-
-

DESCRIPTION

-       clear clears your screen if this is possible.  It looks in
-       the environment for the terminal type and then in the ter-
-       minfo database to figure out how to clear the screen.
-
-       clear  ignores  any  command-line  parameters  that may be
-       present.
-
-
-
-

SEE ALSO

-       tput(1), terminfo(5)
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                               clear(1)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_add_wch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_add_wch.3x.html deleted file mode 100644 index 77ed34d..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_add_wch.3x.html +++ /dev/null @@ -1,232 +0,0 @@ - - - - -curs_add_wch 3x - - - - -

curs_add_wch 3x

-
-
-
-curs_add_wch(3x)                                       curs_add_wch(3x)
-
-
-
-
-
-

NAME

-       add_wch,   wadd_wch,  mvadd_wch,  mvwadd_wch,  echo_wchar,
-       wecho_wchar - add a complex character and rendition  to  a
-       curses window, then advance the cursor
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int add_wch( const cchar_t *wch );
-       int wadd_wch( WINDOW *win, const cchar_t *wch );
-       int mvadd_wch( int y, int x, const cchar_t *wch );
-       int  mvwadd_wch(  WINDOW *win, int y, int x, const cchar_t
-       *wch );
-       int echo_wchar( const cchar_t *wch );
-       int wecho_wchar( WINDOW *win, const cchar_t *wch );
-
-
-
-

DESCRIPTION

-       The add_wch, wadd_wch, mvadd_wch, and mvwadd_wch functions
-       put the complex character wch into the given window at its
-       current position, which is then advanced.  These functions
-       perform  wrapping and special-character processing as fol-
-       lows:
-
-       o   If wch refers to a spacing character, then any  previ-
-           ous  character  at  that  location  is removed.  A new
-           character specified by wch is placed at that  location
-           with  rendition  specified  by  wch.   The cursor then
-           advances to the next spacing character on the  screen.
-
-       o   If wch refers to a non-spacing character, all previous
-           characters at that location are preserved.   The  non-
-           spacing  characters  of  wch  are added to the spacing
-           complex character, and the rendition specified by  wch
-           is ignored.
-
-       o   If  the  character  part  of  wch  is  a tab, newline,
-           backspace or other control character,  the  window  is
-           updated  and the cursor moves as if addch were called.
-
-       The echo_wchar function is functionally  equivalent  to  a
-       call to add_wch followed by a call to refresh.  Similarly,
-       the wecho_wchar is functionally equivalent to  a  call  to
-       wadd_wch  followed  by  a call to wrefresh.  The knowledge
-       that only a single character is being output is taken into
-       consideration and, for non-control characters, a consider-
-       able performance gain might be seen by  using  the  *echo*
-       functions instead of their equivalents.
-
-   Line Graphics
-       Like  addch(3x),  addch_wch  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 addch(3x).
-
-
-       Name              Unicode    Default   Description
-       ----------------------------------------------------------------
-       WACS_BLOCK        0x25ae     #         solid square block
-       WACS_BOARD        0x2592     #         board of squares
-       WACS_BTEE         0x2534     +         bottom tee
-       WACS_BULLET       0x00b7     o         bullet
-
-       WACS_CKBOARD      0x2592     :         checker board (stipple)
-       WACS_DARROW       0x2193     v         arrow pointing down
-       WACS_DEGREE       0x00b0     '         degree symbol
-       WACS_DIAMOND      0x25c6     +         diamond
-       WACS_GEQUAL       0x2265     >         greater-than-or-equal-to
-       WACS_HLINE        0x2500     -         horizontal line
-       WACS_LANTERN      0x2603     #         lantern symbol
-       WACS_LARROW       0x2190     <         arrow pointing left
-       WACS_LEQUAL       0x2264     <         less-than-or-equal-to
-       WACS_LLCORNER     0x2514     +         lower left-hand corner
-       WACS_LRCORNER     0x2518     +         lower right-hand corner
-       WACS_LTEE         0x2524     +         left tee
-       WACS_NEQUAL       0x2260     !         not-equal
-       WACS_PI           0x03c0     *         greek pi
-       WACS_PLMINUS      0x00b1     #         plus/minus
-       WACS_PLUS         0x253c     +         plus
-       WACS_RARROW       0x2192     >         arrow pointing right
-       WACS_RTEE         0x251c     +         right tee
-       WACS_S1           0x23ba     -         scan line 1
-       WACS_S3           0x23bb     -         scan line 3
-       WACS_S7           0x23bc     -         scan line 7
-       WACS_S9           0x23bd     _         scan line 9
-       WACS_STERLING     0x00a3     f         pound-sterling symbol
-       WACS_TTEE         0x252c     +         top tee
-       WACS_UARROW       0x2191     ^         arrow pointing up
-       WACS_ULCORNER     0x250c     +         upper left-hand corner
-       WACS_URCORNER     0x2510     +         upper right-hand corner
-       WACS_VLINE        0x2502     |         vertical line
-
-       The wide-character configuration of ncurses  also  defines
-       symbols for thick- and double-lines:
-
-
-       Name              Unicode   Default   Description
-       ---------------------------------------------------------------------
-       WACS_T_ULCORNER   0x250f    +         thick upper left corner
-       WACS_T_LLCORNER   0x2517    +         thick lower left corner
-       WACS_T_URCORNER   0x2513    +         thick upper right corner
-       WACS_T_LRCORNER   0x251b    +         thick lower right corner
-       WACS_T_LTEE       0x252b    +         thick tee pointing right
-       WACS_T_RTEE       0x2523    +         thick tee pointing left
-       WACS_T_BTEE       0x253b    +         thick tee pointing up
-       WACS_T_TTEE       0x2533    +         thick tee pointing down
-       WACS_T_HLINE      0x2501    -         thick horizontal line
-       WACS_T_VLINE      0x2503    |         thick vertical line
-       WACS_T_PLUS       0x254b    +         thick large plus or crossover
-       WACS_D_ULCORNER   0x2554    +         double upper left corner
-       WACS_D_LLCORNER   0x255a    +         double lower left corner
-       WACS_D_URCORNER   0x2557    +         double upper right corner
-       WACS_D_LRCORNER   0x255d    +         double lower right corner
-       WACS_D_RTEE       0x2563    +         double tee pointing left
-       WACS_D_LTEE       0x2560    +         double tee pointing right
-       WACS_D_BTEE       0x2569    +         double tee pointing up
-       WACS_D_TTEE       0x2566    +         double tee pointing down
-       WACS_D_HLINE      0x2550    -         double horizontal line
-       WACS_D_VLINE      0x2551    |         double vertical line
-       WACS_D_PLUS       0x256c    +         double large plus or crossover
-
-
-
-

RETURN VALUES

-       All routines return the integer ERR upon failure and OK on
-       success.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that add_wch, mvadd_wch, mvwadd_wch,  and  echo_wchar
-       may be macros.
-
-
-
-

PORTABILITY

-       All  of  these  functions  are described in the XSI Curses
-       standard, Issue 4.  The defaults specified for  line-draw-
-       ing characters apply in the POSIX locale.
-
-       X/Open Curses makes it clear that the WACS_ symbols should
-       be defined as a pointer to cchar_t data, e.g., in the dis-
-       cussion of border_set.  A few implementations are problem-
-       atic:
-
-       o   NetBSD curses defines the symbols as a wchar_t  within
-           a cchar_t.
-
-       o   HPUX  curses  equates  some of the ACS_ symbols to the
-           analogous WACS_ symbols as if the  ACS_  symbols  were
-           wide  characters.   The  misdefined  symbols  are  the
-           arrows and other symbols which are not used for  line-
-           drawing.
-
-       X/Open  Curses  does not define symbols for thick- or dou-
-       ble-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.
-
-
-
-

SEE ALSO

-       curses(3x), curs_addch(3x), curs_attr(3x), curs_clear(3x),
-       curs_outopts(3x), curs_refresh(3x), putwc(3)
-
-
-
-                                                       curs_add_wch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_add_wchstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_add_wchstr.3x.html deleted file mode 100644 index 0f676ce..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_add_wchstr.3x.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -curs_add_wchstr 3x - - - - -

curs_add_wchstr 3x

-
-
-
-curs_add_wchstr(3x)                                 curs_add_wchstr(3x)
-
-
-
-
-
-

NAME

-       add_wchstr,    add_wchnstr,   wadd_wchstr,   wadd_wchnstr,
-       mvadd_wchstr, mvadd_wchnstr, mvwadd_wchstr, mvwadd_wchnstr
-       - add an array of complex characters (and attributes) to a
-       curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int add_wchstr(const cchar_t *wchstr);
-       int add_wchnstr(const cchar_t *wchstr, int n);
-       int wadd_wchstr(WINDOW * win, const cchar_t *wchstr);
-       int wadd_wchnstr(WINDOW * win, const cchar_t *wchstr, int n);
-       int mvadd_wchstr(int y, int x, const cchar_t *wchstr);
-       int mvadd_wchnstr(int y, int x, const cchar_t *wchstr, int n);
-       int mvwadd_wchstr(WINDOW *win, int y, int x, const cchar_t *wchstr);
-       int mvwadd_wchnstr(WINDOW *win, int y, int x, const cchar_t *wchstr, int n);
-
-
-
-

DESCRIPTION

-       These routines copy the array of complex characters wchstr
-       into  the  window image structure at and after the current
-       cursor position.  The four routines with  n  as  the  last
-       argument  copy  at  most n elements, but no more than will
-       fit on the line.  If n=-1 then the whole array is  copied,
-       to  the  maximum number of characters that will fit on the
-       line.
-
-       The window cursor is not advanced.   These  routines  work
-       faster than waddnstr.  On the other hand, they do not per-
-       form checking (such as for the newline, backspace, or car-
-       riage  return characters), they do not advance the current
-       cursor position, they do not expand other control  charac-
-       ters  to  ^-escapes,  and  they  truncate the string if it
-       crosses the right margin, rather than wrapping  it  around
-       to the new line.
-
-       These  routines  end  successfully  on encountering a null
-       cchar_t, 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.
-
-
-
-

NOTES

-       All functions except wadd_wchnstr may be macros.
-
-
-
-

RETURN VALUES

-       All routines return the integer ERR upon failure and OK on
-       success.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

PORTABILITY

-       All these entry points are described  in  the  XSI  Curses
-       standard, Issue 4.
-
-
-
-

SEE ALSO

-       curses(3x), curs_addchstr(3x), curs_addwstr(3x)
-
-
-
-                                                    curs_add_wchstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_addch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_addch.3x.html deleted file mode 100644 index af56711..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_addch.3x.html +++ /dev/null @@ -1,220 +0,0 @@ - - - - -curs_addch 3x - - - - -

curs_addch 3x

-
-
-
-curs_addch(3x)                                           curs_addch(3x)
-
-
-
-
-
-

NAME

-       addch,  waddch,  mvaddch,  mvwaddch, echochar, wechochar -
-       add a character (with attributes) to a curses window, then
-       advance the cursor
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int addch(const chtype ch);
-       int waddch(WINDOW *win, const chtype ch);
-       int mvaddch(int y, int x, const chtype ch);
-       int mvwaddch(WINDOW *win, int y, int x, const chtype ch);
-       int echochar(const chtype ch);
-       int wechochar(WINDOW *win, const chtype ch);
-
-
-
-

DESCRIPTION

-       The  addch,  waddch, mvaddch and mvwaddch routines put the
-       character ch into the given window at its  current  window
-       position,  which  is then advanced.  They are analogous to
-       putchar in stdio(3).  If the advance is at the right  mar-
-       gin,  the  cursor  automatically wraps to the beginning of
-       the next line.  At the bottom  of  the  current  scrolling
-       region,  if  scrollok  is enabled, the scrolling region is
-       scrolled up one line.
-
-       If ch is a tab, newline, or backspace, the cursor is moved
-       appropriately within the window.  Backspace moves the cur-
-       sor one character left; at the left edge of  a  window  it
-       does  nothing.   Newline  does  a clrtoeol, then moves the
-       cursor to  the  window  left  margin  on  the  next  line,
-       scrolling  the  window if on the last line.  Tabs are con-
-       sidered to be at every eighth column.   The  tab  interval
-       may be altered by setting the TABSIZE variable.
-
-       If ch is any control character other than tab, newline, or
-       backspace, it is drawn  in  ^X  notation.   Calling  winch
-       after adding a control character does not return the char-
-       acter itself, but instead returns the ^-representation  of
-       the control character.
-
-       Video attributes can be combined with a character argument
-       passed to addch or related functions by logical-ORing them
-       into  the  character.   (Thus, text, including attributes,
-       can be copied from one place to  another  using  inch  and
-       addch.)   See  the curs_attr(3x) page for values of prede-
-       fined video attribute constants that can be usefully OR'ed
-       into characters.
-
-       The  echochar  and  wechochar routines are equivalent to a
-       call to addch followed by a call to refresh, or a call  to
-       waddch followed by a call to wrefresh.  The knowledge that
-       only a single character is being output is used  and,  for
-       non-control  characters,  a  considerable performance gain
-       may be seen by  using  these  routines  instead  of  their
-       equivalents.
-
-   Line Graphics
-       The  following  variables  may be used to add line drawing
-       characters to the screen with routines of the  addch  fam-
-       ily.   The  default  character listed below is used if the
-       acsc  capability  does  not  define  a   terminal-specific
-       replacement  for  it.   The  names  are  taken  from VT100
-       nomenclature.
-
-
-       Name           Default   Description
-       --------------------------------------------------
-       ACS_BLOCK      #         solid square block
-       ACS_BOARD      #         board of squares
-       ACS_BTEE       +         bottom tee
-       ACS_BULLET     o         bullet
-       ACS_CKBOARD    :         checker board (stipple)
-       ACS_DARROW     v         arrow pointing down
-       ACS_DEGREE     '         degree symbol
-       ACS_DIAMOND    +         diamond
-       ACS_GEQUAL     >         greater-than-or-equal-to
-       ACS_HLINE      -         horizontal line
-       ACS_LANTERN    #         lantern symbol
-       ACS_LARROW     <         arrow pointing left
-       ACS_LEQUAL     <         less-than-or-equal-to
-       ACS_LLCORNER   +         lower left-hand corner
-       ACS_LRCORNER   +         lower right-hand corner
-       ACS_LTEE       +         left tee
-       ACS_NEQUAL     !         not-equal
-       ACS_PI         *         greek pi
-       ACS_PLMINUS    #         plus/minus
-       ACS_PLUS       +         plus
-       ACS_RARROW     >         arrow pointing right
-       ACS_RTEE       +         right tee
-       ACS_S1         -         scan line 1
-       ACS_S3         -         scan line 3
-       ACS_S7         -         scan line 7
-       ACS_S9         _         scan line 9
-       ACS_STERLING   f         pound-sterling symbol
-       ACS_TTEE       +         top tee
-       ACS_UARROW     ^         arrow pointing up
-       ACS_ULCORNER   +         upper left-hand corner
-       ACS_URCORNER   +         upper right-hand corner
-       ACS_VLINE      |         vertical line
-
-
-
-

RETURN VALUE

-       All routines return the integer ERR upon failure and OK on
-       success  (the  SVr4 manuals specify only "an integer value
-       other than ERR") upon successful completion, unless other-
-       wise noted in the preceding routine descriptions.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note  that  addch,  mvaddch, mvwaddch, and echochar may be
-       macros.
-
-
-
-

PORTABILITY

-       All these functions are described in the XSI Curses  stan-
-       dard,  Issue  4.  The defaults specified for forms-drawing
-       characters apply in the POSIX locale.
-
-       X/Open Curses states that the ACS_  definitions  are  char
-       constants.   For  the  wide-character  implementation (see
-       curs_add_wch), there are analogous WACS_ definitions which
-       are cchar_t constants.
-
-       Some  ACS symbols (ACS_S3, ACS_S7, ACS_LEQUAL, ACS_GEQUAL,
-       ACS_PI, ACS_NEQUAL, ACS_STERLING) were not  documented  in
-       any  publicly  released  System V.  However, many publicly
-       available terminfos include acsc strings  in  which  their
-       key  characters  (pryz{|}) are embedded, and a second-hand
-       list of their character descriptions has  come  to  light.
-       The   ACS-prefixed   names  for  them  were  invented  for
-       ncurses(3x).
-
-       The TABSIZE variable is implemented in  some  versions  of
-       curses, but is not part of X/Open curses.
-
-       If  ch  is  a  carriage return, the cursor is moved to the
-       beginning of the current row of the window.  This is  true
-       of other implementations, but is not documented.
-
-
-
-

SEE ALSO

-       curses(3x),  curs_attr(3x), curs_clear(3x), curs_inch(3x),
-       curs_outopts(3x),  curs_refresh(3x),   curs_variables(3x),
-       putc(3).
-
-       Comparable  functions  in  the  wide-character  (ncursesw)
-       library are described in curs_add_wch(3x).
-
-
-
-                                                         curs_addch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_addchstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_addchstr.3x.html deleted file mode 100644 index e886139..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_addchstr.3x.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -curs_addchstr 3x - - - - -

curs_addchstr 3x

-
-
-
-curs_addchstr(3x)                                     curs_addchstr(3x)
-
-
-
-
-
-

NAME

-       addchstr, addchnstr, waddchstr, waddchnstr, mvaddchstr,
-       mvaddchnstr, mvwaddchstr, mvwaddchnstr - add a string of
-       characters (and attributes) to a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int addchstr(const chtype *chstr);
-       int addchnstr(const chtype *chstr, int n);
-       int waddchstr(WINDOW *win, const chtype *chstr);
-       int waddchnstr(WINDOW *win, const chtype *chstr, int n);
-       int mvaddchstr(int y, int x, const chtype *chstr);
-       int mvaddchnstr(int y, int x, const chtype *chstr, int n);
-       int  mvwaddchstr(WINDOW  *win,  int y, int x, const chtype
-       *chstr);
-       int mvwaddchnstr(WINDOW *win, int y, int x,  const  chtype
-       *chstr, int n);
-
-
-
-

DESCRIPTION

-       These  routines copy chstr into the window image structure
-       at and after the current cursor position.  The  four  rou-
-       tines with n as the last argument copy at most n elements,
-       but no more than will fit on the line.  If n=-1  then  the
-       whole  string  is copied, to the maximum number of charac-
-       ters that will fit on the line.
-
-       The window cursor is not advanced, and these routines work
-       faster than waddnstr.  On the other hand, they do not per-
-       form any kind  of  checking  (such  as  for  the  newline,
-       backspace, or carriage return characters), they do not ad-
-       vance the current cursor position, they do not expand oth-
-       er  control characters to ^-escapes, and they truncate the
-       string if it crosses the right margin, rather  than  wrap-
-       ping it around to the new line.
-
-
-
-

RETURN VALUES

-       All routines return the integer ERR upon failure and OK on
-       success (the SVr4 manuals specify only "an  integer  value
-       other than ERR") upon successful completion, unless other-
-       wise noted in the preceding routine descriptions.
-
-       X/Open does not define any error conditions.  This  imple-
-       mentation returns an error if the window pointer is null.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that all routines except waddchnstr may be macros.
-
-
-
-

PORTABILITY

-       These  entry  points are described in the XSI Curses stan-
-       dard, Issue 4.
-
-
-
-

SEE ALSO

-       curses(3x).
-
-       Comparable functions in the wide-character (ncursesw)  li-
-       brary are described in curs_add_wchstr(3x).
-
-
-
-                                                      curs_addchstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_addstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_addstr.3x.html deleted file mode 100644 index d89503c..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_addstr.3x.html +++ /dev/null @@ -1,125 +0,0 @@ - - - - -curs_addstr 3x - - - - -

curs_addstr 3x

-
-
-
-curs_addstr(3x)                                         curs_addstr(3x)
-
-
-
-
-
-

NAME

-       addstr, addnstr, waddstr, waddnstr, mvaddstr, mvaddnstr,
-       mvwaddstr, mvwaddnstr - add a string of characters to a
-       curses window and advance cursor
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int addstr(const char *str);
-       int addnstr(const char *str, int n);
-       int waddstr(WINDOW *win, const char *str);
-       int waddnstr(WINDOW *win, const char *str, int n);
-       int mvaddstr(int y, int x, const char *str);
-       int mvaddnstr(int y, int x, const char *str, int n);
-       int mvwaddstr(WINDOW *win, int y, int x, const char *str);
-       int mvwaddnstr(WINDOW *win, int y, int x, const char *str, int n);
-
-
-
-

DESCRIPTION

-       These routines write the characters of the (null-terminat-
-       ed) character string str on the given window.  It is simi-
-       lar  to  calling  waddch  once  for  each character in the
-       string.  The four routines with n  as  the  last  argument
-       write  at  most n characters.  If n is -1, then the entire
-       string will be added, up to the maximum number of  charac-
-       ters  that  will  fit  on the line, or until a terminating
-       null is reached.
-
-
-
-

RETURN VALUE

-       All routines return the integer ERR upon failure and OK on
-       success  (the  SVr4 manuals specify only "an integer value
-       other than ERR") upon successful completion.
-
-       X/Open does not define any error conditions.  This  imple-
-       mentation  returns  an error if the window pointer is null
-       or if the string pointer is null or if  the  corresponding
-       calls to waddch return an error.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note  that  all  of  these  routines  except  waddstr  and
-       waddnstr may be macros.
-
-
-
-

PORTABILITY

-       All these entry points are described  in  the  XSI  Curses
-       standard,  Issue  4.  The XSI errors EILSEQ and EOVERFLOW,
-       associated with extended-level conformance,  are  not  yet
-       detected.
-
-
-
-

SEE ALSO

-       curses(3x), curs_addch(3x).
-
-
-
-                                                        curs_addstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_addwstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_addwstr.3x.html deleted file mode 100644 index 99ab802..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_addwstr.3x.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - -curs_addwstr 3x - - - - -

curs_addwstr 3x

-
-
-
-curs_addwstr(3x)                                       curs_addwstr(3x)
-
-
-
-
-
-

NAME

-       addwstr, addnwstr, waddwstr, waddnwstr, mvaddwstr,
-       mvaddnwstr, mvwaddwstr, mvwaddnwstr - add a string of wide
-       characters to a curses window and advance cursor
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int addwstr(const wchar_t *wstr);
-       int addnwstr(const wchar_t *wstr, int n);
-       int waddwstr(WINDOW *win, const wchar_t *wstr);
-       int waddnwstr(WINDOW *win, const wchar_t *wstr, int n);
-       int mvaddwstr(int y, int x, const wchar_t *wstr);
-       int mvaddnwstr(int y, int x, const wchar_t *wstr, int n);
-       int mvwaddwstr(WINDOW *win, int y, int x, const wchar_t *wstr);
-       int mvwaddnwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
-
-
-
-

DESCRIPTION

-       These routines write the characters of the (null-terminat-
-       ed) wchar_t character string wstr on the given window.  It
-       is  similar  to constructing a cchar_t for each wchar_t in
-       the  string,  then  calling  wadd_wch  for  the  resulting
-       cchar_t.
-
-       The mv routines perform cursor movement once, before writ-
-       ing any characters.  Thereafter, the cursor is advanced as
-       a side-effect of writing to the window.
-
-       The  four  routines  with  n as the last argument write at
-       most n wchar_t characters.  If n is -1,  then  the  entire
-       string  will be added, up to the maximum number of charac-
-       ters that will fit on the line,  or  until  a  terminating
-       null is reached.
-
-
-
-

RETURN VALUES

-       All routines return the integer ERR upon failure and OK on
-       success.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that all of these routines except  waddnwstr  may  be
-       macros.
-
-
-
-

PORTABILITY

-       All  these  entry  points  are described in the XSI Curses
-       standard, Issue 4.
-
-
-
-

SEE ALSO

-       curses(3x), curs_add_wch(3x)
-
-
-
-                                                       curs_addwstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_attr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_attr.3x.html deleted file mode 100644 index 23a1573..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_attr.3x.html +++ /dev/null @@ -1,267 +0,0 @@ - - - - -curs_attr 3x - - - - -

curs_attr 3x

-
-
-
-curs_attr(3x)                                             curs_attr(3x)
-
-
-
-
-
-

NAME

-       attroff, wattroff, attron, wattron, attrset, wattrset,
-       color_set, wcolor_set, standend, wstandend, standout,
-       wstandout, attr_get, wattr_get, attr_off, wattr_off,
-       attr_on, wattr_on, attr_set, wattr_set, chgat, wchgat,
-       mvchgat, mvwchgat, PAIR_NUMBER - curses character and
-       window attribute control routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-       int attroff(int attrs);
-       int wattroff(WINDOW *win, int attrs);
-       int attron(int attrs);
-       int wattron(WINDOW *win, int attrs);
-       int attrset(int attrs);
-       int wattrset(WINDOW *win, int attrs);
-       int color_set(short color_pair_number, void* opts);
-       int wcolor_set(WINDOW *win, short color_pair_number,
-             void* opts);
-       int standend(void);
-       int wstandend(WINDOW *win);
-       int standout(void);
-       int wstandout(WINDOW *win);
-       int attr_get(attr_t *attrs, short *pair, void *opts);
-       int wattr_get(WINDOW *win, attr_t *attrs, short *pair,
-              void *opts);
-       int attr_off(attr_t attrs, void *opts);
-       int wattr_off(WINDOW *win, attr_t attrs, void *opts);
-       int attr_on(attr_t attrs, void *opts);
-       int wattr_on(WINDOW *win, attr_t attrs, void *opts);
-       int attr_set(attr_t attrs, short pair, void *opts);
-       int wattr_set(WINDOW *win, attr_t attrs, short pair,  void
-       *opts);
-       int chgat(int n, attr_t attr, short color,
-             const void *opts)
-       int wchgat(WINDOW *win, int n, attr_t attr,
-             short color, const void *opts)
-       int mvchgat(int y, int x, int n, attr_t attr,
-             short color, const void *opts)
-       int mvwchgat(WINDOW *win, int y, int x, int n,
-             attr_t attr, short color, const void *opts)
-
-
-
-

DESCRIPTION

-       These  routines  manipulate  the current attributes of the
-       named window.  The current attributes of a window apply to
-       all characters that are written into the window with wadd-
-       ch, waddstr and wprintw.  Attributes are a property of the
-       character,   and  move  with  the  character  through  any
-       scrolling and insert/delete line/character operations.  To
-       the  extent  possible,  they  are displayed as appropriate
-       modifications to the graphic rendition of  characters  put
-       on the screen.
-
-       The  routine  attrset  sets  the current attributes of the
-       given window to attrs.  The routine attroff turns off  the
-       named  attributes  without turning any other attributes on
-       or off.  The routine attron turns on the named  attributes
-       without affecting any others.  The routine standout is the
-       same as attron(A_STANDOUT).  The routine standend  is  the
-       same as attrset(A_NORMAL) or attrset(0), that is, it turns
-       off all attributes.
-
-       The attrset and related routines do  not  affect  the  at-
-       tributes  used  when  erasing portions of the window.  See
-       curs_bkgd(3x) for functions which  modify  the  attributes
-       used for erasing and clearing.
-
-       The  routine color_set sets the current color of the given
-       window to the foreground/background combination  described
-       by  the  color_pair_number. The parameter opts is reserved
-       for future use, applications must supply a null pointer.
-
-       The routine wattr_get returns the  current  attribute  and
-       color pair for the given window; attr_get returns the cur-
-       rent attribute and color pair for stdscr.   The  remaining
-       attr_*  functions  operate  exactly like the corresponding
-       attr* functions, except that they take arguments  of  type
-       attr_t rather than int.
-
-       The routine chgat changes the attributes of a given number
-       of characters starting at the current cursor  location  of
-       stdscr.   It  does not update the cursor and does not per-
-       form wrapping.  A character count of -1  or  greater  than
-       the  remaining window width means to change attributes all
-       the way to the end of the current line.  The wchgat  func-
-       tion generalizes this to any window; the mvwchgat function
-       does a cursor move before acting.  In these functions, the
-       color  argument is a color-pair index (as in the first ar-
-       gument of init_pair, see curs_color(3x)).  The opts  argu-
-       ment is not presently used, but is reserved for the future
-       (leave it NULL).
-
-   Attributes
-       The following video attributes, defined in <curses.h>, can
-       be passed to the routines attron, attroff, and attrset, or
-       OR'd with the characters passed to addch.
-
-
-        A_NORMAL        Normal display (no highlight)
-        A_STANDOUT      Best highlighting mode of the terminal.
-        A_UNDERLINE     Underlining
-        A_REVERSE       Reverse video
-        A_BLINK         Blinking
-        A_DIM           Half bright
-        A_BOLD          Extra bright or bold
-        A_PROTECT       Protected mode
-        A_INVIS         Invisible or blank mode
-        A_ALTCHARSET    Alternate character set
-        A_CHARTEXT      Bit-mask to extract a character
-        COLOR_PAIR(n)   Color-pair number n
-
-       The following macro is the reverse of COLOR_PAIR(n):
-
-       PAIR_NUMBER(attrs) Returns the pair number associated
-                          with the COLOR_PAIR(n) attribute.
-
-       The return values of many of these routines are not  mean-
-       ingful (they are implemented as macro-expanded assignments
-       and simply return their argument).  The SVr4  manual  page
-       claims (falsely) that these routines always return 1.
-
-
-
-

NOTES

-       Note  that  attroff,  wattroff,  attron, wattron, attrset,
-       wattrset, standend and standout may be macros.
-
-       COLOR_PAIR values can only be OR'd with attributes if  the
-       pair  number  is  less  than 256.  The alternate functions
-       such as color_set can pass a color  pair  value  directly.
-       However,  ncurses  ABI 4 and 5 simply OR this value within
-       the alternate functions.  You must use ncurses  ABI  6  to
-       support more than 256 color pairs.
-
-
-
-

PORTABILITY

-       These  functions are supported in the XSI Curses standard,
-       Issue 4.  The standard  defined  the  dedicated  type  for
-       highlights,  attr_t,  which is not defined in SVr4 curses.
-       The functions taking attr_t arguments  are  not  supported
-       under SVr4.
-
-       The XSI Curses standard states that whether the tradition-
-       al functions  attron/attroff/attrset  can  manipulate  at-
-       tributes  other  than  A_BLINK,  A_BOLD, A_DIM, A_REVERSE,
-       A_STANDOUT, or A_UNDERLINE is "unspecified".   Under  this
-       implementation  as  well  as  SVr4 curses, these functions
-       correctly manipulate all other  highlights  (specifically,
-       A_ALTCHARSET, A_PROTECT, and A_INVIS).
-
-       XSI  Curses added the new entry points, attr_get, attr_on,
-       attr_off, attr_set, wattr_on, wattr_off,  wattr_get,  wat-
-       tr_set.   These  are intended to work with a new series of
-       highlight macros prefixed with WA_.
-
-       Older versions of this library did not force an update  of
-       the  screen when changing the attributes.  Use touchwin to
-       force the screen to match the updated attributes.
-
-
-        WA_NORMAL       Normal display (no highlight)
-        WA_STANDOUT     Best highlighting mode of the terminal.
-        WA_UNDERLINE    Underlining
-        WA_REVERSE      Reverse video
-        WA_BLINK        Blinking
-        WA_DIM          Half bright
-        WA_BOLD         Extra bright or bold
-        WA_ALTCHARSET   Alternate character set
-
-       The XSI curses standard specifies that each pair of corre-
-       sponding  A_  and WA_-using functions operates on the same
-       current-highlight information.
-
-       The XSI standard extended conformance level adds new high-
-       lights A_HORIZONTAL, A_LEFT, A_LOW, A_RIGHT, A_TOP, A_VER-
-       TICAL (and corresponding WA_ macros for each)  which  this
-       implementation does not yet support.
-
-
-
-

RETURN VALUE

-       All  routines  return the integer OK on success, or ERR on
-       failure.
-
-       X/Open does not define any error conditions.
-
-       This implementation returns an error if the window pointer
-       is  null.  The wcolor_set function returns an error if the
-       color  pair  parameter  is  outside  the   range   0..COL-
-       OR_PAIRS-1.   This  implementation  also provides getattrs
-       for compatibility with older versions of curses.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

SEE ALSO

-       curses(3x),        curs_addch(3x),        curs_addstr(3x),
-       curs_bkgd(3x), curs_printw(3x), curs_variables(3x)
-
-
-
-                                                          curs_attr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_beep.3x.html b/deps/ncurses-5.9/doc/html/man/curs_beep.3x.html deleted file mode 100644 index e450ce2..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_beep.3x.html +++ /dev/null @@ -1,106 +0,0 @@ - - - - -curs_beep 3x - - - - -

curs_beep 3x

-
-
-
-curs_beep(3x)                                             curs_beep(3x)
-
-
-
-
-
-

NAME

-       beep, flash - curses bell and screen flash routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int beep(void);
-       int flash(void);
-
-
-
-

DESCRIPTION

-       The beep and flash routines are used to alert the terminal
-       user.  The routine beep sounds an  audible  alarm  on  the
-       terminal,  if  possible;  otherwise  it flashes the screen
-       (visible bell).  The routine flash 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.
-
-
-
-

RETURN VALUE

-       These routines return OK if they  succeed  in  beeping  or
-       flashing, ERR otherwise.
-
-
-
-

EXTENSIONS

-       SVr4's  beep  and flash routines always returned OK, so it
-       was not possible to tell when the beep or flash failed.
-
-
-
-

PORTABILITY

-       These functions are described in the XSI Curses  standard,
-       Issue  4.  Like SVr4, it specifies that they always return
-       OK.
-
-
-
-

SEE ALSO

-       curses(3x)
-
-
-
-                                                          curs_beep(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_bkgd.3x.html b/deps/ncurses-5.9/doc/html/man/curs_bkgd.3x.html deleted file mode 100644 index 56f5cb9..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_bkgd.3x.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -curs_bkgd 3x - - - - -

curs_bkgd 3x

-
-
-
-curs_bkgd(3x)                                             curs_bkgd(3x)
-
-
-
-
-
-

NAME

-       bkgdset,  wbkgdset,  bkgd,  wbkgd, getbkgd - curses window
-       background manipulation routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       void bkgdset(chtype ch);
-       void wbkgdset(WINDOW *win, chtype ch);
-       int bkgd(chtype ch);
-       int wbkgd(WINDOW *win, chtype ch);
-       chtype getbkgd(WINDOW *win);
-
-
-
-

DESCRIPTION

-       The bkgdset and wbkgdset  routines  manipulate  the  back-
-       ground  of  the  named window.  The window background is a
-       chtype consisting of any combination of attributes  (i.e.,
-       rendition)  and  a  character.   The attribute part of the
-       background is combined (OR'ed) with all non-blank  charac-
-       ters  that  are written into the window with waddch.  Both
-       the character and attribute parts of  the  background  are
-       combined   with  the  blank  characters.   The  background
-       becomes a property of the character  and  moves  with  the
-       character   through   any   scrolling   and  insert/delete
-       line/character operations.
-
-       To the extent  possible  on  a  particular  terminal,  the
-       attribute  part  of  the  background  is  displayed as the
-       graphic rendition of the character put on the screen.
-
-       The bkgd and wbkgd functions set the  background  property
-       of  the  current  or  specified window and then apply this
-       setting to every character position in that window:
-
-              The rendition of every character on the  screen  is
-              changed to the new background rendition.
-
-              Wherever  the  former background character appears,
-              it is changed to the new background character.
-
-       The getbkgd function returns the  given  window's  current
-       background character/attribute pair.
-
-
-
-

RETURN VALUE

-       The  routines  bkgd  and wbkgd return the integer OK.  The
-       SVr4.0 manual says "or a non-negative integer  if  immedok
-       is set", but this appears to be an error.
-
-
-
-

NOTES

-       Note that bkgdset and bkgd may be macros.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.  It specifies that bkgd and wbkgd return  ERR  on
-       failure, but gives no failure conditions.
-
-
-
-

SEE ALSO

-       curses(3x),   curs_addch(3x),   curs_attr(3x),   curs_out-
-       opts(3x)
-
-
-
-                                                          curs_bkgd(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_bkgrnd.3x.html b/deps/ncurses-5.9/doc/html/man/curs_bkgrnd.3x.html deleted file mode 100644 index 5dc6fdb..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_bkgrnd.3x.html +++ /dev/null @@ -1,128 +0,0 @@ - - - - -curs_bkgrnd 3x - - - - -

curs_bkgrnd 3x

-
-
-
-curs_bkgrnd(3x)                                         curs_bkgrnd(3x)
-
-
-
-
-
-

NAME

-       bkgrnd,  wbkgrnd,  bkgrndset, wbkgrndset, getbkgrnd, wget-
-       bkgrnd - curses  window  complex  background  manipulation
-       routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int bkgrnd( const cchar_t *wch);
-       int wbkgrnd( WINDOW *win, const cchar_t *wch);
-       void bkgrndset(const cchar_t *wch );
-       void wbkgrndset(WINDOW *win, const cchar_t *wch);
-       int getbkgrnd(cchar_t *wch);
-       int wgetbkgrnd(WINDOW *win, cchar_t *wch);
-
-
-
-

DESCRIPTION

-       The bkgrndset and wbkgrndset routines manipulate the back-
-       ground of the named window.  The window  background  is  a
-       cchar_t consisting of any combination of attributes (i.e.,
-       rendition) and a complex character.  The attribute part of
-       the  background  is  combined  (OR'ed)  with all non-blank
-       characters that are written into the window  with  waddch.
-       Both  the  character and attribute parts of the background
-       are combined with the blank  characters.   The  background
-       becomes  a  property  of  the character and moves with the
-       character  through   any   scrolling   and   insert/delete
-       line/character operations.
-
-       To  the  extent  possible  on  a  particular terminal, the
-       attribute part of  the  background  is  displayed  as  the
-       graphic rendition of the character put on the screen.
-
-       The  bkgrnd and wbkgrnd functions set the background prop-
-       erty of the current or specified  window  and  then  apply
-       this setting to every character position in that window:
-
-              The  rendition  of every character on the screen is
-              changed to the new background rendition.
-
-              Wherever the former background  character  appears,
-              it is changed to the new background character.
-
-       The  getbkgrnd function returns the given window's current
-       background character/attribute pair via the wch pointer.
-
-
-
-

NOTES

-       Note that bkgrnd, bkgrndset, and getbkgrnd may be macros.
-
-
-
-

RETURN VALUES

-       The bkgrndset and wbkgrndset  routines  do  not  return  a
-       value.
-
-       Upon successful completion, the other functions return OK.
-       Otherwise, they return ERR.   A  null  window  pointer  is
-       treated as an error.
-
-
-
-

SEE ALSO

-       curses(3x), curs_bkgd(3x)
-
-
-
-                                                        curs_bkgrnd(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_border.3x.html b/deps/ncurses-5.9/doc/html/man/curs_border.3x.html deleted file mode 100644 index 880d59b..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_border.3x.html +++ /dev/null @@ -1,162 +0,0 @@ - - - - -curs_border 3x - - - - -

curs_border 3x

-
-
-
-curs_border(3x)                                         curs_border(3x)
-
-
-
-
-
-

NAME

-       border, wborder, box, hline, whline, vline, wvline,
-       mvhline, mvwhline, mvvline, mvwvline - create curses
-       borders, horizontal and vertical lines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-       int border(chtype ls, chtype rs, chtype ts, chtype bs,
-          chtype tl, chtype tr, chtype bl, chtype br);
-       int wborder(WINDOW *win, chtype ls, chtype rs,
-          chtype ts, chtype bs, chtype tl, chtype tr,
-          chtype bl, chtype br);
-       int box(WINDOW *win, chtype verch, chtype horch);
-       int hline(chtype ch, int n);
-       int whline(WINDOW *win, chtype ch, int n);
-       int vline(chtype ch, int n);
-       int wvline(WINDOW *win, chtype ch, int n);
-       int mvhline(int y, int x, chtype ch, int n);
-       int mvwhline(WINDOW *, int y, int x, chtype ch, int n);
-       int mvvline(int y, int x, chtype ch, int n);
-       int mvwvline(WINDOW *, int y, int x, chtype ch, int n);
-
-
-
-

DESCRIPTION

-       The border, wborder and box routines draw a box around the
-       edges of a window.  Other than the window,  each  argument
-       is a character with attributes:
-
-              ls - left side,
-              rs - right side,
-              ts - top side,
-              bs - bottom side,
-              tl - top left-hand corner,
-              tr - top right-hand corner,
-              bl - bottom left-hand corner, and
-              br - bottom right-hand corner.
-
-       If  any of these arguments is zero, then the corresponding
-       default values (defined in curses.h) are used instead:
-
-              ACS_VLINE,
-              ACS_VLINE,
-              ACS_HLINE,
-              ACS_HLINE,
-              ACS_ULCORNER,
-              ACS_URCORNER,
-              ACS_LLCORNER,
-              ACS_LRCORNER.
-
-       box(win, verch, horch) is a shorthand  for  the  following
-       call:  wborder(win,  verch,  verch, horch, horch, 0, 0, 0,
-       0).
-
-       The hline and whline functions draw a horizontal (left  to
-       right)  line using ch starting at the current cursor posi-
-       tion in the window.  The current cursor  position  is  not
-       changed.   The  line  is  at most n characters long, or as
-       many as fit into the window.
-
-       The vline and wvline functions draw  a  vertical  (top  to
-       bottom) line using ch starting at the current cursor posi-
-       tion in the window.  The current cursor  position  is  not
-       changed.   The  line  is  at most n characters long, or as
-       many as fit into the window.
-
-
-
-

RETURN VALUE

-       All routines return the integer  OK.   The  SVr4.0  manual
-       says  "or  a  non-negative integer if immedok is set", but
-       this appears to be an error.
-
-       X/Open does not define any error conditions.  This  imple-
-       mentation returns an error if the window pointer is null.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       The  borders  generated by these functions are inside bor-
-       ders (this is also true of SVr4 curses, though the fact is
-       not documented).
-
-       Note that border and box may be macros.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.  The standard specifies that they return  ERR  on
-       failure, but specifies no error conditions.
-
-
-
-

SEE ALSO

-       curses(3x), curs_outopts(3x).
-
-
-
-                                                        curs_border(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_border_set.3x.html b/deps/ncurses-5.9/doc/html/man/curs_border_set.3x.html deleted file mode 100644 index c64a816..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_border_set.3x.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -curs_border_set 3x - - - - -

curs_border_set 3x

-
-
-
-curs_border_set(3x)                                 curs_border_set(3x)
-
-
-
-
-
-

NAME

-       border_set, wborder_set, box_set, hline_set, whline_set,
-       mvhline_set, mvwhline_set, vline_set, wvline_set,
-       mvvline_set, mvwvline_set - create curses borders or lines
-       using complex characters and renditions
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int border_set(
-          const cchar_t *ls, const cchar_t *rs,
-          const cchar_t *ts, const cchar_t *bs,
-          const cchar_t *tl, const cchar_t *tr,
-          const cchar_t *bl, const cchar_t *br );
-       int wborder_set(
-          WINDOW *win,
-          const cchar_t *ls, const cchar_t *rs,
-          const cchar_t *ts, const cchar_t *bs,
-          const cchar_t *tl, const cchar_t *tr,
-          const cchar_t *bl, const cchar_t *br);
-       int box_set(
-          WINDOW *win,
-          const cchar_t *verch,
-          const cchar_t *horch);
-       int hline_set(
-          const cchar_t *wch, int n);
-       int whline_set(
-          WINDOW *win,
-          const cchar_t *wch, int n);
-       int mvhline_set(
-          int y, int x,
-          const cchar_t *wch, int n);
-       int mvwhline_set(
-          WINDOW *win,
-          int y, int x,
-          const cchar_t *wch, int n);
-       int vline_set(
-          const cchar_t *wch, int n);
-       int wvline_set(
-          WINDOW *win,
-          const cchar_t *wch, int n);
-       int mvvline_set(
-          int y, int x,
-          const cchar_t *wch, int n);
-       int mvwvline_set(
-          WINDOW *win,
-          int y, int x,
-          const cchar_t *wch, int n);
-
-
-
-

DESCRIPTION

-       The border_set and wborder_set  functions  draw  a  border
-       around  the  edges  of  the  current  or specified window.
-       These functions do not change the cursor position, and  do
-       not wrap.
-
-       Other  than the window, each argument is a complex charac-
-       ter with attributes:
-              ls - left side,
-              rs - right side,
-              ts - top side,
-              bs - bottom side,
-              tl - top left-hand corner,
-              tr - top right-hand corner,
-              bl - bottom left-hand corner, and
-              br - bottom right-hand corner.
-
-       If any of these arguments is zero, then the  corresponding
-       default values (defined in curses.h) are used instead:
-              WACS_VLINE,
-              WACS_VLINE,
-              WACS_HLINE,
-              WACS_HLINE,
-              WACS_ULCORNER,
-              WACS_URCORNER,
-              WACS_LLCORNER, and
-              WACS_LRCORNER.
-
-       box_set(win, verch, horch); is a shorthand for the follow-
-       ing call:
-
-       wborder_set(win, verch, verch,
-           horch, horch, NULL, NULL, NULL, NULL);
-
-       The *line_set functions use wch to draw a line starting at
-       the current cursor position in the window.  The line is at
-       most n characters long or as many as fit into the  window.
-       The current cursor position is not changed.
-
-       The  hline_set,  mvhline_set, mvwhline_set, and whline_set
-       functions draw a line proceeding toward the last column of
-       the same line.
-
-       The  vline_set,  mvvline_set, mvwvline_set, and wvline_set
-       functions draw a line proceeding toward the last  line  of
-       the window.
-
-
-
-

NOTES

-       Note that border_set, hline_set, mvhline_set, mvvline_set,
-       mvwhline_set, mvwvline_set, and vline_set may be macros.
-
-
-
-

RETURN VALUES

-       Upon successful completion,  these  functions  return  OK.
-       Otherwise, they return ERR.
-
-       Functions  using  a window parameter return an error if it
-       is null.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

SEE ALSO

-       ncurses(3x), curs_add_wch(3x), curs_border(3x),  curs_out-
-       opts(3x)
-
-
-
-                                                    curs_border_set(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_clear.3x.html b/deps/ncurses-5.9/doc/html/man/curs_clear.3x.html deleted file mode 100644 index ca581c2..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_clear.3x.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - -curs_clear 3x - - - - -

curs_clear 3x

-
-
-
-curs_clear(3x)                                           curs_clear(3x)
-
-
-
-
-
-

NAME

-       erase, werase, clear, wclear, clrtobot, wclrtobot,
-       clrtoeol, wclrtoeol - clear all or part of a curses window
-
-
-
-

SYNOPSIS

-       # include <curses.h>
-
-       int erase(void);
-       int werase(WINDOW *win);
-       int clear(void);
-       int wclear(WINDOW *win);
-       int clrtobot(void);
-       int wclrtobot(WINDOW *win);
-       int clrtoeol(void);
-       int wclrtoeol(WINDOW *win);
-
-
-
-

DESCRIPTION

-       The erase and werase routines copy blanks to  every  posi-
-       tion in the window, clearing the screen.
-
-       The  clear  and wclear routines are like erase and werase,
-       but they also call clearok, so that the screen is  cleared
-       completely  on  the  next call to wrefresh for that window
-       and repainted from scratch.
-
-       The clrtobot and wclrtobot routines erase from the  cursor
-       to the end of screen.  That is, they erase all lines below
-       the cursor in the window.  Also, the current line  to  the
-       right of the cursor, inclusive, is erased.
-
-       The clrtoeol and wclrtoeol routines erase the current line
-       to the right of the cursor, inclusive, to the end  of  the
-       current line.
-
-       Blanks created by erasure have the current background ren-
-       dition (as set by wbkgdset) merged into them.
-
-
-
-

RETURN VALUE

-       All routines return the integer OK on success and  ERR  on
-       failure.   The SVr4.0 manual says "or a non-negative inte-
-       ger if immedok is set", but this appears to be an error.
-
-       X/Open defines no error conditions.  In  this  implementa-
-       tion, functions using a window pointer parameter return an
-       error if it is null.
-
-
-
-

NOTES

-       Note that erase, werase, clear, wclear, clrtobot, and clr-
-       toeol may be macros.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.  The standard specifies that they return  ERR  on
-       failure, but specifies no error conditions.
-
-       Some  historic  curses  implementations had, as an undocu-
-       mented feature,  the  ability  to  do  the  equivalent  of
-       clearok(...,  1)  by saying touchwin(stdscr) or clear(std-
-       scr).  This will not work under ncurses.
-
-       This implementation, and others such as Solaris, sets  the
-       current  position  to  0,0  after erasing via werase() and
-       wclear().  That fact is not documented in other  implemen-
-       tations, and may not be true of implementations which were
-       not derived from SVr4 source.
-
-       Not obvious from  the  description,  most  implementations
-       clear  the screen after wclear even for a subwindow or de-
-       rived window.  If you do not want to clear the screen dur-
-       ing the next wrefresh, use werase instead.
-
-
-
-

SEE ALSO

-       curses(3x), curs_outopts(3x), curs_refresh(3x), curs_vari-
-       ables(3x)
-
-
-
-                                                         curs_clear(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_color.3x.html b/deps/ncurses-5.9/doc/html/man/curs_color.3x.html deleted file mode 100644 index 39a7318..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_color.3x.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - -curs_color 3x - - - - -

curs_color 3x

-
-
-
-curs_color(3x)                                           curs_color(3x)
-
-
-
-
-
-

NAME

-       start_color, init_pair, init_color, has_colors,
-       can_change_color, color_content, pair_content, COLOR_PAIR
-       - curses color manipulation routines
-
-
-
-

SYNOPSIS

-       # include <curses.h>
-
-       int start_color(void);
-       int init_pair(short pair, short f, short b);
-       int init_color(short color, short r, short g, short b);
-       bool has_colors(void);
-       bool can_change_color(void);
-       int  color_content(short  color, short *r, short *g, short
-       *b);
-       int pair_content(short pair, short *f, short *b);
-
-
-
-

DESCRIPTION

-   Overview
-       curses support color attributes on terminals with that ca-
-       pability.   To  use  these  routines  start_color  must be
-       called, usually right after initscr.   Colors  are  always
-       used  in pairs (referred to as color-pairs).  A color-pair
-       consists of a foreground  color  (for  characters)  and  a
-       background color (for the blank field on which the charac-
-       ters are displayed).  A programmer  initializes  a  color-
-       pair  with  the routine init_pair.  After it has been ini-
-       tialized, COLOR_PAIR(n), a macro  defined  in  <curses.h>,
-       can be used as a new video attribute.
-
-       If  a  terminal  is capable of redefining colors, the pro-
-       grammer can use the routine init_color to change the defi-
-       nition   of   a   color.    The  routines  has_colors  and
-       can_change_color  return  TRUE  or  FALSE,  depending   on
-       whether  the  terminal  has color capabilities and whether
-       the programmer can change the colors.   The  routine  col-
-       or_content  allows  a programmer to extract the amounts of
-       red, green, and blue components in an  initialized  color.
-       The  routine  pair_content allows a programmer to find out
-       how a given color-pair is currently defined.
-
-   Routine Descriptions
-       The start_color routine requires no arguments.  It must be
-       called  if  the programmer wants to use colors, and before
-       any other color manipulation routine  is  called.   It  is
-       good  practice  to  call this routine right after initscr.
-       start_color initializes eight basic  colors  (black,  red,
-       green,  yellow,  blue,  magenta, cyan, and white), and two
-       global variables,  COLORS  and  COLOR_PAIRS  (respectively
-       defining  the maximum number of colors and color-pairs the
-       terminal can support).  It also restores the colors on the
-       terminal to the values they had when the terminal was just
-       turned on.
-
-       The init_pair routine changes the definition of  a  color-
-       pair.   It takes three arguments: the number of the color-
-       pair to be changed, the foreground color number,  and  the
-       background color number.  For portable applications:
-
-       o   The  value of the first argument must be between 1 and
-           COLOR_PAIRS-1, except that if default colors are  used
-           (see  use_default_colors)  the upper limit is adjusted
-           to allow for extra pairs which use a default color  in
-           foreground and/or background.
-
-       o   The  value  of  the second and third arguments must be
-           between 0 and COLORS.  Color pair 0 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.
-
-       If  the  color-pair was previously initialized, the screen
-       is refreshed and all occurrences of  that  color-pair  are
-       changed to the new definition.
-
-       As  an  extension,  ncurses allows you to set color pair 0
-       via the assume_default_colors routine, or to  specify  the
-       use  of  default colors (color number -1) if you first in-
-       voke the use_default_colors routine.
-
-       The init_color routine changes the definition of a  color.
-       It  takes  four  arguments:  the number of the color to be
-       changed followed by three RGB values (for the  amounts  of
-       red,  green, and blue components).  The value of the first
-       argument must be between 0 and COLORS.  (See  the  section
-       Colors  for  the  default  color index.)  Each of the last
-       three arguments must be a value between 0 and 1000.   When
-       init_color  is  used, all occurrences of that color on the
-       screen immediately change to the new definition.
-
-       The has_colors routine requires no arguments.  It  returns
-       TRUE  if the terminal can manipulate colors; otherwise, it
-       returns FALSE.  This routine facilitates writing terminal-
-       independent  programs.   For example, a programmer can use
-       it to decide whether to use color or some other video  at-
-       tribute.
-
-       The  can_change_color  routine  requires no arguments.  It
-       returns TRUE if  the  terminal  supports  colors  and  can
-       change  their  definitions; other, it returns FALSE.  This
-       routine facilitates writing terminal-independent programs.
-
-       The color_content routine gives programmers a way to  find
-       the intensity of the red, green, and blue (RGB) components
-       in a color.  It requires four arguments: the color number,
-       and  three addresses of shorts for storing the information
-       about the amounts of red, green, and  blue  components  in
-       the  given color.  The value of the first argument must be
-       between 0 and COLORS.  The values that are stored  at  the
-       addresses  pointed  to by the last three arguments are be-
-       tween 0 (no component) and 1000 (maximum amount of  compo-
-       nent).
-
-       The  pair_content  routine  allows programmers to find out
-       what colors a given color-pair consists of.   It  requires
-       three  arguments: the color-pair number, and two addresses
-       of shorts for storing the foreground  and  the  background
-       color  numbers.   The  value of the first argument must be
-       between 1 and COLOR_PAIRS-1.  The values that  are  stored
-       at  the addresses pointed to by the second and third argu-
-       ments are between 0 and COLORS.
-
-   Colors
-       In <curses.h> the following macros are defined.  These are
-       the  default colors.  curses also assumes that COLOR_BLACK
-       is the default background color for all terminals.
-
-             COLOR_BLACK
-             COLOR_RED
-             COLOR_GREEN
-             COLOR_YELLOW
-             COLOR_BLUE
-             COLOR_MAGENTA
-             COLOR_CYAN
-             COLOR_WHITE
-
-
-
-

RETURN VALUE

-       The routines can_change_color()  and  has_colors()  return
-       TRUE or FALSE.
-
-       All other routines return the integer ERR upon failure and
-       an OK (SVr4 specifies only "an integer  value  other  than
-       ERR") upon successful completion.
-
-       X/Open  defines  no error conditions.  This implementation
-       will return ERR on attempts to use  color  values  outside
-       the range 0 to COLORS-1 (except for the default colors ex-
-       tension), or use color pairs outside the range 0  to  COL-
-       OR_PAIRS-1.   Color  values  used in init_color must be in
-       the range 0 to 1000.  An error is returned from all  func-
-       tions  if the terminal has not been initialized.  An error
-       is returned from secondary functions such as init_pair  if
-       start_color was not called.
-
-          init_color
-               returns  an error if the terminal does not support
-               this feature, e.g., if the initialize_color  capa-
-               bility is absent from the terminal description.
-
-          start_color
-               returns  an error if the color table cannot be al-
-               located.
-
-
-
-

NOTES

-       In the ncurses implementation, there is a  separate  color
-       activation flag, color palette, color pairs table, and as-
-       sociated COLORS and COLOR_PAIRS counts  for  each  screen;
-       the  start_color function only affects the current screen.
-       The SVr4/XSI interface is not really designed with this in
-       mind,  and  historical  implementations  may  use a single
-       shared color palette.
-
-       Note that 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 curs_bkgd(3x).
-
-       Several caveats apply on 386 and 486  machines  with  VGA-
-       compatible graphics:
-
-       o   COLOR_YELLOW  is  actually  brown.  To get yellow, use
-           COLOR_YELLOW combined with the A_BOLD attribute.
-
-       o   The A_BLINK attribute should in theory cause the back-
-           ground  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).
-
-       o   Color RGB values are not settable.
-
-
-
-

PORTABILITY

-       This  implementation  satisfies XSI Curses's minimum maxi-
-       mums for COLORS and COLOR_PAIRS.
-
-       The init_pair routine accepts  negative  values  of  fore-
-       ground   and  background  color  to  support  the  use_de-
-       fault_colors extension, but only if that routine has  been
-       first invoked.
-
-       The  assumption that COLOR_BLACK is the default background
-       color for all terminals can  be  modified  using  the  as-
-       sume_default_colors extension.
-
-       This  implementation  checks  the  pointers, e.g., for the
-       values returned by  color_content  and  pair_content,  and
-       will treat those as optional parameters when null.
-
-
-
-

SEE ALSO

-       curses(3x),  curs_initscr(3x),  curs_attr(3x),  curs_vari-
-       ables(3x), default_colors(3x)
-
-
-
-                                                         curs_color(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_delch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_delch.3x.html deleted file mode 100644 index 174b17d..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_delch.3x.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -curs_delch 3x - - - - -

curs_delch 3x

-
-
-
-curs_delch(3x)                                           curs_delch(3x)
-
-
-
-
-
-

NAME

-       delch,  wdelch, mvdelch, mvwdelch - delete character under
-       the cursor in a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int delch(void);
-       int wdelch(WINDOW *win);
-       int mvdelch(int y, int x);
-       int mvwdelch(WINDOW *win, int y, int x);
-
-
-
-

DESCRIPTION

-       These routines delete the character under the cursor;  all
-       characters to the right of the cursor on the same line are
-       moved to the left one position and the last  character  on
-       the line is filled with a blank.  The cursor position does
-       not change (after moving to y, x,  if  specified).   (This
-       does  not  imply use of the hardware delete character fea-
-       ture.)
-
-
-
-

RETURN VALUE

-       All routines return the integer ERR upon failure and an OK
-       (SVr4  specifies  only  "an integer value other than ERR")
-       upon successful completion.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that delch, mvdelch, and mvwdelch may be macros.
-
-
-
-

PORTABILITY

-       These functions are described in the XSI Curses  standard,
-       Issue  4.   The standard specifies that they return ERR on
-       failure, but specifies no error conditions.
-
-
-
-

SEE ALSO

-       curses(3x)
-
-
-
-                                                         curs_delch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_deleteln.3x.html b/deps/ncurses-5.9/doc/html/man/curs_deleteln.3x.html deleted file mode 100644 index 5015849..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_deleteln.3x.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -curs_deleteln 3x - - - - -

curs_deleteln 3x

-
-
-
-curs_deleteln(3x)                                     curs_deleteln(3x)
-
-
-
-
-
-

NAME

-       deleteln,  wdeleteln,  insdelln, winsdelln, insertln, win-
-       sertln - delete and insert lines in a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int deleteln(void);
-       int wdeleteln(WINDOW *win);
-       int insdelln(int n);
-       int winsdelln(WINDOW *win, int n);
-       int insertln(void);
-       int winsertln(WINDOW *win);
-
-
-
-

DESCRIPTION

-       The deleteln and wdeleteln 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.  The cursor position does not change.
-
-       The  insdelln  and  winsdelln  routines,  for  positive n,
-       insert n lines into the specified window above the current
-       line.   The  n  bottom  lines  are  lost.  For negative n,
-       delete n lines (starting with the one under  the  cursor),
-       and  move  the remaining lines up.  The bottom n lines are
-       cleared.  The current cursor position remains the same.
-
-       The insertln and winsertln routines insert  a  blank  line
-       above the current line and the bottom line is lost.
-
-
-
-

RETURN VALUE

-       All routines return the integer ERR upon failure and an OK
-       (SVr4 specifies only "an integer value  other  than  ERR")
-       upon successful completion.
-
-       X/Open  defines  no error conditions.  In this implementa-
-       tion, if  the  window  parameter  is  null,  an  error  is
-       returned.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.  The standard specifies that they return  ERR  on
-       failure, but specifies no error conditions.
-
-
-
-

NOTES

-       Note that all but winsdelln may be macros.
-
-       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 idlok(..., TRUE)
-       has been set on the current window.
-
-
-
-

SEE ALSO

-       curses(3x)
-
-
-
-                                                      curs_deleteln(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_extend.3x.html b/deps/ncurses-5.9/doc/html/man/curs_extend.3x.html deleted file mode 100644 index a90ccd7..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_extend.3x.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - -curs_extend 3x - - - - -

curs_extend 3x

-
-
-
-curs_extend(3x)                                         curs_extend(3x)
-
-
-
-
-
-

NAME

-       curses_version,  use_extended_names - miscellaneous curses
-       extensions
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       const char * curses_version(void);
-       int use_extended_names(bool enable);
-
-
-
-

DESCRIPTION

-       These functions are extensions to the curses library which
-       do not fit easily into other categories.
-
-       Use  curses_version() to get the version number, including
-       patch level of the library, e.g., 5.0.19991023
-
-       The use_extended_names()  function  controls  whether  the
-       calling  application  is  able to use user-defined or non-
-       standard 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 -x option of tic
-       to compile extended terminal definitions.  However you can
-       disable  this  feature  to ensure compatibility with other
-       implementations of curses.
-
-
-
-

PORTABILITY

-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on them be  con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       curs_getch(3x),       curs_mouse(3x),      curs_print(3x),
-       curs_util(3x),  default_colors(3x),  define_key(3x),  key-
-       bound(3x), keyok(3x), resizeterm(3x), wresize(3x).
-
-
-
-

AUTHOR

-       Thomas Dickey.
-
-
-
-                                                        curs_extend(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_get_wch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_get_wch.3x.html deleted file mode 100644 index 0b2373e..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_get_wch.3x.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - -curs_get_wch 3x - - - - -

curs_get_wch 3x

-
-
-
-curs_get_wch(3x)                                       curs_get_wch(3x)
-
-
-
-
-
-

NAME

-       get_wch,  wget_wch, mvget_wch, mvwget_wch, unget_wch - get
-       (or push back) a wide character from curses terminal  key-
-       board
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int get_wch(wint_t *wch);
-       int wget_wch(WINDOW *win, wint_t *wch);
-       int mvget_wch(int y, int x, wint_t *wch);
-       int mvwget_wch(WINDOW *win, int y, int x, wint_t *wch);
-       int unget_wch(const wchar_t wch);
-
-
-
-

DESCRIPTION

-       The get_wch, wget_wch, mvget_wch, and mvwget_wch functions
-       read a character from the  terminal  associated  with  the
-       current  or  specified  window.   In  no-delay mode, if no
-       input is waiting, the value ERR  is  returned.   In  delay
-       mode,  the  program  waits  until  the  system passes text
-       through to the  program.   Depending  on  the  setting  of
-       cbreak,  this  is  after  one  character (cbreak mode), or
-       after the first newline (nocbreak  mode).   In  half-delay
-       mode,  the  program waits until the user types a character
-       or the specified timeout interval has elapsed.
-
-       Unless noecho has been set, these routines echo the  char-
-       acter into the designated window.
-
-       If  the window is not a pad and has been moved or modified
-       since the last call to wrefresh, wrefresh will  be  called
-       before another character is read.
-
-       If  keypad  is  enabled,  these  functions  respond to the
-       pressing of a function key by setting the  object  pointed
-       to  by  wch  to  the  corresponding  KEY_ value defined in
-       <curses.h> and returning  KEY_CODE_YES.   If  a  character
-       (such as escape) that could be the beginning of a function
-       key is received, curses sets a timer.  If the remainder of
-       the  sequence  does  arrive  within  the  designated time,
-       curses passes through  the  character;  otherwise,  curses
-       returns  the  function  key  value.  For this reason, many
-       terminals experience a  delay  between  the  time  a  user
-       presses the escape key and the time the escape is returned
-       to the program.
-
-       The unget_wch function pushes the wide character wch  back
-       onto the head of the input queue, so the wide character is
-       returned by the next call to get_wch.  The pushback of one
-       character  is  guaranteed.  If the program calls unget_wch
-       too many times without an intervening call to get_wch, the
-       operation may fail.
-
-
-
-

NOTES

-       The  header  file  <curses.h>  automatically  includes the
-       header file <stdio.h>.
-
-       Applications should not define the escape key by itself as
-       a single-character function.
-
-       When  using  get_wch,  wget_wch, mvget_wch, or mvwget_wch,
-       applications should not use nocbreak mode and echo mode at
-       the  same  time.  Depending on the state of the tty driver
-       when each character is  typed,  the  program  may  produce
-       undesirable results.
-
-       All functions except wget_wch and unget_wch may be macros.
-
-
-
-

RETURN VALUES

-       When  get_wch,  wget_wch,  mvget_wch, and mvwget_wch func-
-       tions successfully report the pressing of a function  key,
-       they return KEY_CODE_YES.  When they successfully report a
-       wide character, they return OK.   Otherwise,  they  return
-       ERR.
-
-       Upon  successful completion, unget_wch returns OK.  Other-
-       wise, the function returns ERR.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

SEE ALSO

-       curses(3x),       curs_getch(3x),        curs_ins_wch(3x),
-       curs_inopts(3x), curs_move(3x), curs_refresh(3x)
-
-
-
-                                                       curs_get_wch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_get_wstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_get_wstr.3x.html deleted file mode 100644 index 5775678..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_get_wstr.3x.html +++ /dev/null @@ -1,166 +0,0 @@ - - - - -curs_get_wstr 3x - - - - -

curs_get_wstr 3x

-
-
-
-curs_get_wstr(3x)                                     curs_get_wstr(3x)
-
-
-
-
-
-

NAME

-       get_wstr, getn_wstr, wget_wstr, wgetn_wstr, mvget_wstr,
-       mvgetn_wstr, mvwget_wstr, mvwgetn_wstr - get an array of
-       wide characters from a curses terminal keyboard
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int get_wstr(wint_t *wstr);
-       int getn_wstr(wint_t *wstr, int n);
-       int wget_wstr(WINDOW *win, wint_t *wstr);
-       int wgetn_wstr(WINDOW *win, wint_t *wstr, int n);
-       int mvget_wstr(int y, int x, wint_t *wstr);
-       int mvgetn_wstr(int y, int x, wint_t *wstr, int n);
-       int mvwget_wstr(WINDOW *win, int y, int x, wint_t *wstr);
-       int mvwgetn_wstr(WINDOW *win, int y, int x, wint_t *wstr, int n);
-
-
-
-

DESCRIPTION

-       The  effect  of get_wstr is as though a series of calls to
-       get_wch were made, until a newline, other end-of-line,  or
-       end-of-file condition is processed.  An end-of-file condi-
-       tion is represented by WEOF, as defined in <wchar.h>.  The
-       newline  and end-of-line conditions are represented by the
-       \n wchar_t value.  In all instances, the end of the string
-       is  terminated  by a null wchar_t.  The routine places re-
-       sulting values in the area pointed to by wstr.
-
-       The user's erase and kill characters are interpreted.   If
-       keypad   mode   is   on   for  the  window,  KEY_LEFT  and
-       KEY_BACKSPACE are both considered equivalent to the user's
-       kill character.
-
-       Characters  input are echoed only if echo is currently on.
-       In that case, backspace is echoed as deletion of the  pre-
-       vious character (typically a left motion).
-
-       The  effect of wget_wstr is as though a series of calls to
-       wget_wch were made.
-
-       The effect of mvget_wstr is as though a call to  move  and
-       then a series of calls to get_wch were made.
-
-       The effect of mvwget_wstr is as though a call to wmove and
-       then a series of calls to wget_wch were made.
-
-       The getn_wstr, mvgetn_wstr, mvwgetn_wstr,  and  wgetn_wstr
-       functions  are  identical  to  the  get_wstr,  mvget_wstr,
-       mvwget_wstr, and wget_wstr functions, respectively, except
-       that  the *n_* versions read at most n characters, letting
-       the application prevent overflow of the input buffer.
-
-
-
-

NOTES

-       Using get_wstr, mvget_wstr, mvwget_wstr, or  wget_wstr  to
-       read  a  line  that overflows the array pointed to by wstr
-       causes  undefined  results.    The   use   of   getn_wstr,
-       mvgetn_wstr, mvwgetn_wstr, or wgetn_wstr, respectively, is
-       recommended.
-
-       These functions cannot return KEY_ values because there is
-       no  way  to  distinguish a KEY_ value from a valid wchar_t
-       value.
-
-       All of these routines except wgetn_wstr may be macros.
-
-
-
-

RETURN VALUES

-       All of these functions return OK upon  successful  comple-
-       tion.  Otherwise, they return ERR.
-
-       Functions  using  a window parameter return an error if it
-       is null.
-
-              wgetn_wstr
-                   returns an error if  the  associated  call  to
-                   wget_wch failed.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

PORTABILITY

-       These  functions are described in The Single Unix Specifi-
-       cation, Version 2.  No error conditions are defined.  This
-       implementation  returns ERR if the window pointer is null,
-       or if the lower-level wget_wch call returns  an  ERR.   In
-       the  latter  case,  an  ERR  return  without other data is
-       treated as an end-of-file condition, and the returned  ar-
-       ray contains a WEOF followed by a null wchar_t.
-
-       X/Open  curses  documents these functions to pass an array
-       of wchar_t, but all of the vendors  implement  this  using
-       wint_t.
-
-
-
-

SEE ALSO

-       Functions: curses(3x), curs_get_wch(3x), curs_getstr(3x).
-
-
-
-                                                      curs_get_wstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_getcchar.3x.html b/deps/ncurses-5.9/doc/html/man/curs_getcchar.3x.html deleted file mode 100644 index 22cb819..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_getcchar.3x.html +++ /dev/null @@ -1,158 +0,0 @@ - - - - -curs_getcchar 3x - - - - -

curs_getcchar 3x

-
-
-
-curs_getcchar(3x)                                     curs_getcchar(3x)
-
-
-
-
-
-

NAME

-       getcchar,  setcchar - Get a wide character string and ren-
-       dition from a cchar_t or set a cchar_t from a wide-charac-
-       ter string
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int getcchar(
-               const cchar_t *wcval,
-               wchar_t *wch,
-               attr_t *attrs,
-               short *color_pair,
-               void *opts );
-
-       int setcchar(
-               cchar_t *wcval,
-               const wchar_t *wch,
-               const attr_t attrs,
-               short color_pair,
-               void *opts );
-
-
-
-

DESCRIPTION

-       The  getcchar  function  gets  a wide-character string and
-       rendition from a cchar_t argument.  When wch is not a null
-       pointer, the getcchar function does the following:
-
-       o   Extracts information from a cchar_t value wcval
-
-       o   Stores   the  character  attributes  in  the  location
-           pointed to by attrs
-
-       o   Stores the color-pair in the location  pointed  to  by
-           color_pair
-
-       o   Stores  the  wide-character  string, characters refer-
-           enced by wcval, into the array pointed to by wch.
-
-       When wch is a null pointer, the getcchar function does the
-       following:
-
-       o   Obtains  the  number  of wide characters pointed to by
-           wcval
-
-       o   Does not  change  the  data  referenced  by  attrs  or
-           color_pair
-
-       The  setcchar function initializes the location pointed to
-       by wcval by using:
-
-       o   The character attributes in attrs
-
-       o   The color pair in color_pair
-
-       o   The wide-character string  pointed  to  by  wch.   The
-           string  must  be L'\0' terminated, contain at most one
-           spacing character, which must be the first.
-
-           Up to CCHARW_MAX-1 nonspacing characters  may  follow.
-           Additional nonspacing characters are ignored.
-
-           The  string  may  contain  a  single control character
-           instead.  In that case, no nonspacing  characters  are
-           allowed.
-
-
-
-

NOTES

-       The  opts argument is reserved for future use.  Currently,
-       an application must provide a null pointer as opts.
-
-       The wcval argument may be a value generated by a  call  to
-       setcchar  or by a function that has a cchar_t output argu-
-       ment.  If wcval is constructed by  any  other  means,  the
-       effect is unspecified.
-
-
-
-

RETURN VALUES

-       When wch is a null pointer, getcchar returns the number of
-       wide characters referenced by wcval, including one  for  a
-       trailing null.
-
-       When  wch  is not a null pointer, getcchar returns OK upon
-       successful completion, and ERR otherwise.
-
-       Upon successful completion, setcchar returns  OK.   Other-
-       wise, it returns ERR.
-
-
-
-

SEE ALSO

-       Functions:   curs_attr(3x),   curs_color(3x),  curses(3x),
-       wcwidth(3).
-
-
-
-                                                      curs_getcchar(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_getch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_getch.3x.html deleted file mode 100644 index 2bdcdc4..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_getch.3x.html +++ /dev/null @@ -1,359 +0,0 @@ - - - - -curs_getch 3x - - - - -

curs_getch 3x

-
-
-
-curs_getch(3x)                                           curs_getch(3x)
-
-
-
-
-
-

NAME

-       getch, wgetch, mvgetch, mvwgetch, ungetch, has_key - get
-       (or push back) characters from curses terminal keyboard
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int getch(void);
-       int wgetch(WINDOW *win);
-       int mvgetch(int y, int x);
-       int mvwgetch(WINDOW *win, int y, int x);
-       int ungetch(int ch);
-       int has_key(int ch);
-
-
-
-

DESCRIPTION

-       The getch, wgetch, mvgetch and mvwgetch, routines  read  a
-       character  from the window.  In no-delay mode, if no input
-       is waiting, the value ERR is returned.  In delay mode, the
-       program  waits until the system passes text through to the
-       program.  Depending on the setting of cbreak, this is  af-
-       ter  one  character (cbreak mode), or after the first new-
-       line (nocbreak mode).  In  half-delay  mode,  the  program
-       waits  until a character is typed or the specified timeout
-       has been reached.
-
-       Unless noecho has been set, then the character  will  also
-       be echoed into the designated window according to the fol-
-       lowing rules: if the character is the current erase  char-
-       acter,  left  arrow, or backspace, the cursor is moved one
-       space to the left and that screen position is erased as if
-       delch had been called.  If the character value is any oth-
-       er KEY_ define, the user is  alerted  with  a  beep  call.
-       Otherwise the character is simply output to the screen.
-
-       If the window is not a pad, and it has been moved or modi-
-       fied since the last call to  wrefresh,  wrefresh  will  be
-       called before another character is read.
-
-       If  keypad is TRUE, and a function key is pressed, the to-
-       ken for that function key is returned instead of  the  raw
-       characters.   Possible function keys are defined in <curs-
-       es.h> as macros with values outside  the  range  of  8-bit
-       characters  whose  names begin with KEY_. Thus, a variable
-       intended to hold the return value of a function  key  must
-       be of short size or larger.
-
-       When a character that could be the beginning of a function
-       key is received (which, on modern terminals, means an  es-
-       cape character), curses sets a timer.  If the remainder of
-       the sequence does not come in within the designated  time,
-       the  character  is passed through; otherwise, the function
-       key value is returned.  For this  reason,  many  terminals
-       experience a delay between the time a user presses the es-
-       cape key and the escape is returned to the program.
-
-       The ungetch routine places ch back onto the input queue to
-       be returned by the next call to wgetch.  There is just one
-       input queue for all windows.
-
-
-   Function Keys
-       The following function keys, defined in <curses.h>,  might
-       be  returned  by  getch  if keypad has been enabled.  Note
-       that not all of these are  necessarily  supported  on  any
-       particular terminal.
-
-
-            Name            Key name
-            KEY_BREAK       Break key
-            KEY_DOWN        The four arrow keys ...
-            KEY_UP
-            KEY_LEFT
-            KEY_RIGHT
-            KEY_HOME        Home key (upward+left arrow)
-            KEY_BACKSPACE   Backspace
-            KEY_F0          Function keys; space for 64 keys
-                            is reserved.
-            KEY_F(n)        For 0 <= n <= 63
-            KEY_DL          Delete line
-            KEY_IL          Insert line
-            KEY_DC          Delete character
-            KEY_IC          Insert char or enter insert mode
-            KEY_EIC         Exit insert char mode
-            KEY_CLEAR       Clear screen
-            KEY_EOS         Clear to end of screen
-            KEY_EOL         Clear to end of line
-            KEY_SF          Scroll 1 line forward
-            KEY_SR          Scroll 1 line backward (reverse)
-            KEY_NPAGE       Next page
-            KEY_PPAGE       Previous page
-            KEY_STAB        Set tab
-            KEY_CTAB        Clear tab
-            KEY_CATAB       Clear all tabs
-            KEY_ENTER       Enter or send
-            KEY_SRESET      Soft (partial) reset
-            KEY_RESET       Reset or hard reset
-            KEY_PRINT       Print or copy
-            KEY_LL          Home down or bottom (lower left)
-            KEY_A1          Upper left of keypad
-            KEY_A3          Upper right of keypad
-            KEY_B2          Center of keypad
-            KEY_C1          Lower left of keypad
-            KEY_C3          Lower right of keypad
-            KEY_BTAB        Back tab key
-            KEY_BEG         Beg(inning) key
-            KEY_CANCEL      Cancel key
-            KEY_CLOSE       Close key
-            KEY_COMMAND     Cmd (command) key
-            KEY_COPY        Copy key
-            KEY_CREATE      Create key
-            KEY_END         End key
-            KEY_EXIT        Exit key
-            KEY_FIND        Find key
-            KEY_HELP        Help key
-            KEY_MARK        Mark key
-            KEY_MESSAGE     Message key
-            KEY_MOUSE       Mouse event read
-            KEY_MOVE        Move key
-            KEY_NEXT        Next object key
-            KEY_OPEN        Open key
-            KEY_OPTIONS     Options key
-            KEY_PREVIOUS    Previous object key
-            KEY_REDO        Redo key
-            KEY_REFERENCE   Ref(erence) key
-            KEY_REFRESH     Refresh key
-            KEY_REPLACE     Replace key
-            KEY_RESIZE      Screen resized
-            KEY_RESTART     Restart key
-            KEY_RESUME      Resume key
-
-            KEY_SAVE        Save key
-            KEY_SBEG        Shifted beginning key
-            KEY_SCANCEL     Shifted cancel key
-            KEY_SCOMMAND    Shifted command key
-            KEY_SCOPY       Shifted copy key
-            KEY_SCREATE     Shifted create key
-            KEY_SDC         Shifted delete char key
-            KEY_SDL         Shifted delete line key
-            KEY_SELECT      Select key
-            KEY_SEND        Shifted end key
-            KEY_SEOL        Shifted clear line key
-            KEY_SEXIT       Shifted exit key
-            KEY_SFIND       Shifted find key
-            KEY_SHELP       Shifted help key
-            KEY_SHOME       Shifted home key
-            KEY_SIC         Shifted input key
-            KEY_SLEFT       Shifted left arrow key
-            KEY_SMESSAGE    Shifted message key
-            KEY_SMOVE       Shifted move key
-            KEY_SNEXT       Shifted next key
-            KEY_SOPTIONS    Shifted options key
-            KEY_SPREVIOUS   Shifted prev key
-            KEY_SPRINT      Shifted print key
-            KEY_SREDO       Shifted redo key
-            KEY_SREPLACE    Shifted replace key
-            KEY_SRIGHT      Shifted right arrow
-            KEY_SRSUME      Shifted resume key
-            KEY_SSAVE       Shifted save key
-            KEY_SSUSPEND    Shifted suspend key
-            KEY_SUNDO       Shifted undo key
-            KEY_SUSPEND     Suspend key
-            KEY_UNDO        Undo key
-
-       Keypad is arranged like this:
-
-
-                         +-----+------+-------+
-                         | A1  |  up  |  A3   |
-                         +-----+------+-------+
-                         |left |  B2  | right |
-                         +-----+------+-------+
-                         | C1  | down |  C3   |
-                         +-----+------+-------+
-       The has_key routine takes a key value from the above list,
-       and returns TRUE or FALSE according to whether the current
-       terminal type recognizes a key with that value.  Note that
-       a  few  values  do  not  correspond  to  a real key, e.g.,
-       KEY_RESIZE and KEY_MOUSE.  See resizeterm(3x) for more de-
-       tails  about  KEY_RESIZE, and curs_mouse(3x) for a discus-
-       sion of KEY_MOUSE.
-
-
-
-
-

RETURN VALUE

-       All routines return the integer ERR upon  failure  and  an
-       integer value other than ERR (OK in the case of ungetch())
-       upon successful completion.
-
-              ungetch
-                   returns an error if there is no more  room  in
-                   the FIFO.
-
-              wgetch
-                   returns  an  error  if  the  window pointer is
-                   null, or if its timeout expires without having
-                   any data.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Use of the escape key by a programmer for a single charac-
-       ter function is discouraged, as it will cause a  delay  of
-       up to one second while the keypad code looks for a follow-
-       ing function-key sequence.
-
-       Note that some keys may be the same as commonly used  con-
-       trol keys, e.g., KEY_ENTER versus control/M, KEY_BACKSPACE
-       versus control/H.  Some curses implementations may  differ
-       according  to  whether  they treat these control keys spe-
-       cially (and ignore the terminfo), or use the terminfo def-
-       initions.   Ncurses  uses  the terminfo definition.  If it
-       says  that  KEY_ENTER  is  control/M,  getch  will  return
-       KEY_ENTER when you press control/M.
-
-       Generally,  KEY_ENTER denotes the character(s) sent by the
-       Enter key on the numeric keypad:
-
-       o   the terminal description lists the most useful keys,
-
-       o   the Enter key on the regular keyboard is already  han-
-           dled by the standard ASCII characters for carriage-re-
-           turn and line-feed,
-
-       o   depending on whether nl or nonl was  called,  pressing
-           "Enter"  on  the  regular keyboard may return either a
-           carriage-return or line-feed, and finally
-
-       o   "Enter or send" is the standard description  for  this
-           key.
-
-       When  using  getch, wgetch, mvgetch, or mvwgetch, nocbreak
-       mode (nocbreak) and echo mode (echo) should not be used at
-       the  same  time.  Depending on the state of the tty driver
-       when each character is typed, the program may produce  un-
-       desirable results.
-
-       Note that getch, mvgetch, and mvwgetch may be macros.
-
-       Historically, the set of keypad macros was largely defined
-       by the extremely function-key-rich keyboard  of  the  AT&T
-       7300,  aka  3B1,  aka Safari 4.  Modern personal computers
-       usually have only a small subset of these.   IBM  PC-style
-       consoles   typically  support  little  more  than  KEY_UP,
-       KEY_DOWN,   KEY_LEFT,   KEY_RIGHT,   KEY_HOME,    KEY_END,
-       KEY_NPAGE, KEY_PPAGE, and function keys 1 through 12.  The
-       Ins key is usually mapped to KEY_IC.
-
-
-
-

PORTABILITY

-       The *get* functions are described in the XSI Curses  stan-
-       dard,  Issue  4.   They  read single-byte characters only.
-       The standard specifies that they return  ERR  on  failure,
-       but specifies no error conditions.
-
-       The  echo  behavior of these functions on input of KEY_ or
-       backspace characters was not specified in the  SVr4  docu-
-       mentation.  This description is adopted from the XSI Curs-
-       es standard.
-
-       The behavior of getch and friends in the presence of  han-
-       dled  signals  is  unspecified  in the SVr4 and XSI Curses
-       documentation.  Under historical  curses  implementations,
-       it  varied depending on whether the operating system's im-
-       plementation  of  handled  signal  receipt  interrupts   a
-       read(2)  call in progress or not, and also (in some imple-
-       mentations) depending on whether an input timeout or  non-
-       blocking mode has been set.
-
-       Programmers concerned about portability should be prepared
-       for either of two cases: (a) signal receipt does  not  in-
-       terrupt  getch;  (b)  signal  receipt interrupts getch and
-       causes it to return ERR with errno set  to  EINTR.   Under
-       the  ncurses  implementation, handled signals never inter-
-       rupt getch.
-
-       The has_key function is unique to ncurses.   We  recommend
-       that  any  code  using it be conditionalized on the NCURS-
-       ES_VERSION feature macro.
-
-
-
-

SEE ALSO

-       curses(3x),       curs_inopts(3x),       curs_outopts(3x),
-       curs_mouse(3x),   curs_move(3x),   curs_refresh(3x),   re-
-       sizeterm(3x).
-
-       Comparable functions in the wide-character (ncursesw)  li-
-       brary are described in curs_get_wch(3x).
-
-
-
-                                                         curs_getch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_getstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_getstr.3x.html deleted file mode 100644 index 222f00b..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_getstr.3x.html +++ /dev/null @@ -1,155 +0,0 @@ - - - - -curs_getstr 3x - - - - -

curs_getstr 3x

-
-
-
-curs_getstr(3x)                                         curs_getstr(3x)
-
-
-
-
-
-

NAME

-       getstr, getnstr, wgetstr, wgetnstr, mvgetstr, mvgetnstr,
-       mvwgetstr, mvwgetnstr - accept character strings from
-       curses terminal keyboard
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int getstr(char *str);
-       int getnstr(char *str, int n);
-       int wgetstr(WINDOW *win, char *str);
-       int wgetnstr(WINDOW *win, char *str, int n);
-       int mvgetstr(int y, int x, char *str);
-       int mvwgetstr(WINDOW *win, int y, int x, char *str);
-       int mvgetnstr(int y, int x, char *str, int n);
-       int mvwgetnstr(WINDOW *, int y, int x, char *str, int n);
-
-
-
-

DESCRIPTION

-       The  function getstr is equivalent to a series of calls to
-       getch, until a newline or carriage return is received (the
-       terminating  character  is  not  included  in the returned
-       string).  The resulting value is placed in the area point-
-       ed to by the character pointer str.
-
-       wgetnstr  reads  at  most  n characters, thus preventing a
-       possible overflow of the input buffer.  Any attempt to en-
-       ter more characters (other than the terminating newline or
-       carriage return) causes a beep.  Function keys also  cause
-       a  beep  and are ignored.  The getnstr function reads from
-       the stdscr default window.
-
-       The user's erase and kill characters are interpreted.   If
-       keypad   mode   is   on   for  the  window,  KEY_LEFT  and
-       KEY_BACKSPACE are both considered equivalent to the user's
-       kill character.
-
-       Characters  input are echoed only if echo is currently on.
-       In that case, backspace is echoed as deletion of the  pre-
-       vious character (typically a left motion).
-
-
-
-

RETURN VALUE

-       All routines return the integer ERR upon failure and an OK
-       (SVr4 specifies only "an integer value  other  than  ERR")
-       upon successful completion.
-
-       X/Open defines no error conditions.
-
-       In this implementation, these functions return an error if
-       the window pointer is null,  or  if  its  timeout  expires
-       without having any data.
-
-       This  implementation  provides an extension as well.  If a
-       SIGWINCH interrupts the function, it will  return  KEY_RE-
-       SIZE rather than OK or ERR.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that getstr, mvgetstr, and mvwgetstr may be macros.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.  They  read  single-byte  characters  only.   The
-       standard  does  not define any error conditions.  This im-
-       plementation returns ERR if the window pointer is null, or
-       if the lower-level wgetch call returns an ERR.
-
-       SVr3  and early SVr4 curses implementations did not reject
-       function keys; the SVr4.0 documentation claimed that "spe-
-       cial  keys"  (such  as  function keys, "home" key, "clear"
-       key, etc.) 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).
-
-       The functions  getnstr,  mvgetnstr,  and  mvwgetnstr  were
-       present but not documented in SVr4.
-
-
-
-

SEE ALSO

-       curses(3x), curs_getch(3x), curs_variables(3x).
-
-
-
-                                                        curs_getstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_getyx.3x.html b/deps/ncurses-5.9/doc/html/man/curs_getyx.3x.html deleted file mode 100644 index 7a37716..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_getyx.3x.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -curs_getyx 3x - - - - -

curs_getyx 3x

-
-
-
-curs_getyx(3x)                                           curs_getyx(3x)
-
-
-
-
-
-

NAME

-       getyx,  getparyx,  getbegyx,  getmaxyx - get curses cursor
-       and window coordinates
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       void getyx(WINDOW *win, int y, int x);
-       void getparyx(WINDOW *win, int y, int x);
-       void getbegyx(WINDOW *win, int y, int x);
-       void getmaxyx(WINDOW *win, int y, int x);
-
-
-
-

DESCRIPTION

-       The getyx macro places the current cursor position of  the
-       given window in the two integer variables y and x.
-
-       If  win  is  a  subwindow,  the  getparyx macro places the
-       beginning coordinates of the  subwindow  relative  to  the
-       parent  window into two integer variables y and x.  Other-
-       wise, -1 is placed into y and x.
-
-       Like getyx, the getbegyx and  getmaxyx  macros  store  the
-       current  beginning  coordinates  and size of the specified
-       window.
-
-
-
-

RETURN VALUE

-       The return values of these  macros  are  undefined  (i.e.,
-       they  should not be used as the right-hand side of assign-
-       ment statements).
-
-
-
-

NOTES

-       All of these interfaces are macros.  A "&" is  not  neces-
-       sary before the variables y and x.
-
-
-
-

PORTABILITY

-       The  getyx,  getparyx,  getbegyx  and  getmaxyx macros are
-       described in the XSI Curses standard, Issue 4.
-
-       This implementation also provides functions getbegx, getb-
-       egy,  getcurx, getcury, getmaxx, getmaxy, getparx and get-
-       pary for compatibility with older versions of curses.
-
-       Although X/Open Curses does not address this, many  imple-
-       mentations  provide  members  of the WINDOW structure con-
-       taining values corresponding to these  macros.   For  best
-       portability,  do  not  rely  on  using the data in WINDOW,
-       since some implementations  make  WINDOW  opaque  (do  not
-       allow direct use of its members).
-
-       Besides  the problem of opaque structures, the data stored
-       in like-named members may not have like-values in  differ-
-       ent  implementations.   For  example, the WINDOW._maxx and
-       WINDOW._maxy  values  in  ncurses  have  (at  least  since
-       release 1.8.1) differed by one from some other implementa-
-       tions.  The difference is hidden by  means  of  the  macro
-       getmaxyx.
-
-
-
-

SEE ALSO

-       curses(3x), curs_legacy(3x), curs_opaque(3x)
-
-
-
-                                                         curs_getyx(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_in_wch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_in_wch.3x.html deleted file mode 100644 index 1535e51..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_in_wch.3x.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - -curs_in_wch 3x - - - - -

curs_in_wch 3x

-
-
-
-curs_in_wch(3x)                                         curs_in_wch(3x)
-
-
-
-
-
-

NAME

-       in_wch,  mvin_wch,  mvwin_wch, win_wch - extract a complex
-       character and rendition from a window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int in_wch(cchar_t *wcval);
-       int mvin_wch(int y, int x, cchar_t *wcval);
-       int mvwin_wch(WINDOW *win, int y, int x, cchar_t *wcval);
-       int win_wch(WINDOW *win, cchar_t *wcval);
-
-
-
-

DESCRIPTION

-       These functions extract the complex character  and  rendi-
-       tion  from  the  current position in the named window into
-       the cchar_t object referenced by wcval.
-
-
-
-

RETURN VALUE

-       No errors are defined in the XSI  Curses  standard.   This
-       implementation  checks  for  null pointers, returns ERR in
-       that case.  Also, the mv routines check for  error  moving
-       the  cursor,  returning  ERR in that case.  Otherwise they
-       return OK
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that all of these routines may be macros.
-
-
-
-

PORTABILITY

-       These functions are described in the XSI Curses  standard,
-       Issue 4.
-
-
-
-

SEE ALSO

-       curses(3x), curs_inch(3x).
-
-
-
-                                                        curs_in_wch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_in_wchstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_in_wchstr.3x.html deleted file mode 100644 index e394e90..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_in_wchstr.3x.html +++ /dev/null @@ -1,124 +0,0 @@ - - - - -curs_in_wchstr 3x - - - - -

curs_in_wchstr 3x

-
-
-
-curs_in_wchstr(3x)                                   curs_in_wchstr(3x)
-
-
-
-
-
-

NAME

-       in_wchstr, in_wchnstr, win_wchstr, win_wchnstr,
-       mvin_wchstr, mvin_wchnstr, mvwin_wchstr, mvwin_wchnstr -
-       get an array of complex characters and renditions from a
-       curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int in_wchstr(cchar_t *wchstr);
-       int in_wchnstr(cchar_t *wchstr, int n);
-       int win_wchstr(WINDOW *win, cchar_t *wchstr);
-       int win_wchnstr(WINDOW *win, cchar_t *wchstr, int n);
-       int mvin_wchstr(int y, int x, cchar_t *wchstr);
-       int mvin_wchnstr(int y, int x, cchar_t *wchstr, int n);
-       int mvwin_wchstr(WINDOW *win, int y, int x, cchar_t *wchstr);
-       int mvwin_wchnstr(WINDOW *win, int y, int x, cchar_t *wchstr, int n);
-
-
-
-

DESCRIPTION

-       These functions return an array of complex  characters  in
-       wchstr,  starting  at  the  current cursor position in the
-       named window.  Attributes (rendition) are stored with  the
-       characters.
-
-       The  in_wchnstr, mvin_wchnstr, mvwin_wchnstr and win_wchn-
-       str fill the array with at most n cchar_t elements.
-
-
-
-

NOTES

-       Note that all routines except win_wchnstr may be macros.
-
-       Reading a line that overflows the array pointed to by wch-
-       str  with in_wchstr, mvin_wchstr, mvwin_wchstr or win_wch-
-       str  causes  undefined  results.  Therefore,  the  use  of
-       in_wchnstr, mvin_wchnstr, mvwin_wchnstr, or win_wchnstr is
-       recommended.
-
-
-
-

RETURN VALUES

-       Upon successful completion,  these  functions  return  OK.
-       Otherwise, they return ERR.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

PORTABILITY

-       The  XSI  Curses defines no error conditions.  This imple-
-       mentation checks for null pointers, returning ERR in  that
-       case.
-
-
-
-

SEE ALSO

-       Functions:  curses(3x),  curs_in_wch(3x),  curs_instr(3x),
-       curs_inwstr(3x) curs_inchstr(3x)
-
-
-
-                                                     curs_in_wchstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_inch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_inch.3x.html deleted file mode 100644 index 43c6159..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_inch.3x.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -curs_inch 3x - - - - -

curs_inch 3x

-
-
-
-curs_inch(3x)                                             curs_inch(3x)
-
-
-
-
-
-

NAME

-       inch,  winch,  mvinch,  mvwinch  -  get  a  character  and
-       attributes from a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       chtype inch(void);
-       chtype winch(WINDOW *win);
-       chtype mvinch(int y, int x);
-       chtype mvwinch(WINDOW *win, int y, int x);
-
-
-
-

DESCRIPTION

-       These routines return the character, of  type  chtype,  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
-       <curses.h> can be used with the & (logical  AND)  operator
-       to extract the character or attributes alone.
-
-   Attributes
-       The  following  bit-masks  may  be  AND-ed with characters
-       returned by winch.
-
-       A_CHARTEXT     Bit-mask to extract character
-       A_ATTRIBUTES   Bit-mask to extract attributes
-       A_COLOR        Bit-mask to extract color-pair field information
-
-
-
-

RETURN VALUE

-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that all of these routines may be macros.
-
-
-
-

PORTABILITY

-       These functions are described in the XSI Curses  standard,
-       Issue 4.
-
-
-
-

SEE ALSO

-       curses(3x).
-
-       Comparable  functions  in  the  wide-character  (ncursesw)
-       library are described in curs_in_wch(3x).
-
-
-
-                                                          curs_inch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_inchstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_inchstr.3x.html deleted file mode 100644 index 73a78fc..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_inchstr.3x.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -curs_inchstr 3x - - - - -

curs_inchstr 3x

-
-
-
-curs_inchstr(3x)                                       curs_inchstr(3x)
-
-
-
-
-
-

NAME

-       inchstr, inchnstr, winchstr, winchnstr, mvinchstr,
-       mvinchnstr, mvwinchstr, mvwinchnstr - get a string of
-       characters (and attributes) from a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int inchstr(chtype *chstr);
-       int inchnstr(chtype *chstr, int n);
-       int winchstr(WINDOW *win, chtype *chstr);
-       int winchnstr(WINDOW *win, chtype *chstr, int n);
-       int mvinchstr(int y, int x, chtype *chstr);
-       int mvinchnstr(int y, int x, chtype *chstr, int n);
-       int mvwinchstr(WINDOW *win, int y, int x, chtype *chstr);
-       int  mvwinchnstr(WINDOW *win, int y, int x, chtype *chstr,
-       int n);
-
-
-
-

DESCRIPTION

-       These routines return a NULL-terminated  array  of  chtype
-       quantities, starting at the current cursor position in the
-       named window and ending at the right margin of the window.
-       The  four  functions with n as the last argument, return a
-       leading substring at most n characters long (exclusive  of
-       the  trailing (chtype)0).  Constants defined in <curses.h>
-       can be used with the & (logical AND) operator  to  extract
-       the  character or the attribute alone from any position in
-       the chstr [see curs_inch(3x)].
-
-
-
-

RETURN VALUE

-       All routines return the integer ERR upon  failure  and  an
-       integer  value  other  than ERR upon successful completion
-       (the number of  characters  retrieved,  exclusive  of  the
-       trailing 0).
-
-       No  error  conditions are defined.  If the chstr parameter
-       is null, no data is returned, and the return value is  ze-
-       ro.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note  that  all  routines  except winchnstr may be macros.
-       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.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.  It is no more specific than the SVr4  documenta-
-       tion on the trailing 0.  It does specify that the success-
-       ful return of the functions is OK.
-
-
-
-

SEE ALSO

-       curses(3x), curs_inch(3x).
-
-       Comparable functions in the wide-character (ncursesw)  li-
-       brary are described in curs_in_wchstr(3x).
-
-
-
-                                                       curs_inchstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_initscr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_initscr.3x.html deleted file mode 100644 index 5c4364d..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_initscr.3x.html +++ /dev/null @@ -1,167 +0,0 @@ - - - - -curs_initscr 3x - - - - -

curs_initscr 3x

-
-
-
-curs_initscr(3x)                                       curs_initscr(3x)
-
-
-
-
-
-

NAME

-       initscr, newterm, endwin, isendwin, set_term, delscreen -
-       curses screen initialization and manipulation routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       WINDOW *initscr(void);
-       int endwin(void);
-       bool isendwin(void);
-       SCREEN *newterm(char *type, FILE *outfd, FILE *infd);
-       SCREEN *set_term(SCREEN *new);
-       void delscreen(SCREEN* sp);
-
-
-
-

DESCRIPTION

-       initscr is normally the first curses routine to call  when
-       initializing  a program.  A few special routines sometimes
-       need to be called before it; these are  slk_init,  filter,
-       ripoffline,  use_env.  For multiple-terminal applications,
-       newterm may be called before initscr.
-
-       The initscr code determines the terminal type and initial-
-       izes  all curses data structures.  initscr also causes the
-       first call to refresh to clear the screen.  If errors  oc-
-       cur,  initscr writes an appropriate error message to stan-
-       dard error and exits; otherwise, a pointer is returned  to
-       stdscr.
-
-       A  program  that  outputs to more than one terminal should
-       use the newterm  routine  for  each  terminal  instead  of
-       initscr.  A program that needs to inspect capabilities, so
-       it can continue to run in a line-oriented mode if the ter-
-       minal cannot support a screen-oriented program, would also
-       use newterm.  The routine newterm should  be  called  once
-       for each terminal.  It returns a variable of type SCREEN *
-       which should be saved as a  reference  to  that  terminal.
-       The  arguments  are the type of the terminal to be used in
-       place of $TERM, a file pointer for output to the terminal,
-       and  another  file pointer for input from the terminal (if
-       type is NULL, $TERM will be used).  The program must  also
-       call  endwin  for  each terminal being used before exiting
-       from curses.  If newterm is called more than once for  the
-       same  terminal, the first terminal referred to must be the
-       last one for which endwin is called.
-
-       A program should always call endwin before exiting or  es-
-       caping  from  curses  mode  temporarily.  This routine re-
-       stores tty modes, moves the cursor to the lower  left-hand
-       corner  of  the  screen  and  resets the terminal into the
-       proper non-visual mode.  Calling refresh or doupdate after
-       a  temporary  escape  causes  the program to resume visual
-       mode.
-
-       The isendwin routine  returns  TRUE  if  endwin  has  been
-       called without any subsequent calls to wrefresh, and FALSE
-       otherwise.
-
-       The set_term routine is used to switch  between  different
-       terminals.   The screen reference new becomes the new cur-
-       rent terminal.  The previous terminal is returned  by  the
-       routine.   This  is  the  only  routine  which manipulates
-       SCREEN pointers; all other routines affect only  the  cur-
-       rent terminal.
-
-       The  delscreen  routine  frees storage associated with the
-       SCREEN data structure.  The endwin  routine  does  not  do
-       this, so delscreen should be called after endwin if a par-
-       ticular SCREEN is no longer needed.
-
-
-
-

RETURN VALUE

-       endwin returns the integer ERR upon failure  and  OK  upon
-       successful completion.
-
-       Routines that return pointers always return NULL on error.
-
-       X/Open  defines  no error conditions.  In this implementa-
-       tion endwin returns an error if the terminal was not  ini-
-       tialized.
-
-
-
-

NOTES

-       Note that initscr and newterm may be macros.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.  It specifies that portable applications must not
-       call initscr more than once.
-
-       Old versions of curses, e.g., BSD 4.4, may have returned a
-       null pointer from  initscr  when  an  error  is  detected,
-       rather  than  exiting.   It is safe but redundant to check
-       the return value of initscr in XSI Curses.
-
-
-
-

SEE ALSO

-       curses(3x),       curs_kernel(3x),       curs_refresh(3x),
-       curs_slk(3x), curs_util(3x), curs_variables(3x).
-
-
-
-                                                       curs_initscr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_inopts.3x.html b/deps/ncurses-5.9/doc/html/man/curs_inopts.3x.html deleted file mode 100644 index d851642..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_inopts.3x.html +++ /dev/null @@ -1,261 +0,0 @@ - - - - -curs_inopts 3x - - - - -

curs_inopts 3x

-
-
-
-curs_inopts(3x)                                         curs_inopts(3x)
-
-
-
-
-
-

NAME

-       cbreak, nocbreak, echo, noecho, halfdelay, intrflush,
-       keypad, meta, nodelay, notimeout, raw, noraw, noqiflush,
-       qiflush, timeout, wtimeout, typeahead - curses input
-       options
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int cbreak(void);
-       int nocbreak(void);
-       int echo(void);
-       int noecho(void);
-       int halfdelay(int tenths);
-       int intrflush(WINDOW *win, bool bf);
-       int keypad(WINDOW *win, bool bf);
-       int meta(WINDOW *win, bool bf);
-       int nodelay(WINDOW *win, bool bf);
-       int raw(void);
-       int noraw(void);
-       void noqiflush(void);
-       void qiflush(void);
-       int notimeout(WINDOW *win, bool bf);
-       void timeout(int delay);
-       void wtimeout(WINDOW *win, int delay);
-       int typeahead(int fd);
-
-
-
-

DESCRIPTION

-       Normally, the tty driver buffers typed characters until  a
-       newline  or  carriage return is typed.  The cbreak routine
-       disables line buffering and erase/kill  character-process-
-       ing  (interrupt  and flow control characters are unaffect-
-       ed), making  characters  typed  by  the  user  immediately
-       available  to  the  program.  The nocbreak routine returns
-       the terminal to normal (cooked) mode.
-
-       Initially the terminal may or may not be in  cbreak  mode,
-       as the mode is inherited; therefore, a program should call
-       cbreak or nocbreak explicitly.  Most interactive  programs
-       using  curses set the cbreak mode.  Note that cbreak over-
-       rides raw.  [See curs_getch(3x) for a  discussion  of  how
-       these routines interact with echo and noecho.]
-
-       The  echo  and  noecho routines control whether characters
-       typed by the user are echoed by getch as they  are  typed.
-       Echoing by the tty driver is always disabled, but initial-
-       ly getch 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, or not  to
-       echo  at  all,  so they disable echoing by calling noecho.
-       [See curs_getch(3x) for a discussion of how these routines
-       interact with cbreak and nocbreak.]
-
-       The  halfdelay  routine is used for 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 tenths tenths of seconds,  ERR  is  re-
-       turned  if  nothing  has  been typed.  The value of tenths
-       must be a number between 1 and 255.  Use nocbreak to leave
-       half-delay mode.
-
-       If  the intrflush option is enabled, (bf is TRUE), when an
-       interrupt key  is  pressed  on  the  keyboard  (interrupt,
-       break,  quit)  all  output in the tty driver queue will be
-       flushed, giving the effect of faster response to  the  in-
-       terrupt, but causing curses to have the wrong idea of what
-       is on the screen.  Disabling (bf  is  FALSE),  the  option
-       prevents  the flush.  The default for the option is inher-
-       ited from the tty driver settings.  The window argument is
-       ignored.
-
-       The  keypad option enables the keypad of the user's termi-
-       nal.  If enabled (bf is TRUE), the user can press a  func-
-       tion  key (such as an arrow key) and wgetch returns a sin-
-       gle value representing the function key, as  in  KEY_LEFT.
-       If  disabled (bf is FALSE), 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  local-
-       ly),  turning on this option causes the terminal keypad to
-       be turned on when wgetch is called.  The default value for
-       keypad is false.
-
-       Initially, whether the terminal returns 7 or 8 significant
-       bits on input depends on the control mode of the tty driv-
-       er  [see  termio(7)].  To force 8 bits to be returned, in-
-       voke meta(win, TRUE); this is equivalent, under POSIX,  to
-       setting  the CS8 flag on the terminal.  To force 7 bits to
-       be returned, invoke meta(win, FALSE); this is  equivalent,
-       under POSIX, to setting the CS7 flag on the terminal.  The
-       window argument, win, is always ignored.  If the  terminfo
-       capabilities  smm (meta_on) and rmm (meta_off) are defined
-       for the  terminal,  smm  is  sent  to  the  terminal  when
-       meta(win,  TRUE)  is called and rmm is sent when meta(win,
-       FALSE) is called.
-
-       The nodelay option causes getch to be a non-blocking call.
-       If  no input is ready, getch returns ERR.  If disabled (bf
-       is FALSE), getch waits until a key is pressed.
-
-       While interpreting an input escape sequence, wgetch sets a
-       timer  while  waiting  for the next character.  If notime-
-       out(win, TRUE) is called,  then  wgetch  does  not  set  a
-       timer.  The purpose of the timeout is to differentiate be-
-       tween sequences received from a  function  key  and  those
-       typed by a user.
-
-       The  raw and noraw routines place the terminal into or out
-       of raw mode.  Raw mode is similar to cbreak mode, in  that
-       characters typed are immediately passed through to the us-
-       er program.  The differences are that in raw mode, the in-
-       terrupt,  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 tty driver that are not set by curses.
-
-       When the noqiflush routine is used, normal flush of  input
-       and  output queues associated with the INTR, QUIT and SUSP
-       characters will not be done [see termio(7)].  When qiflush
-       is  called,  the queues will be flushed when these control
-       characters are read.  You may want to call noqiflush()  in
-       a  signal handler if you want output to continue as though
-       the interrupt had not occurred, after the handler exits.
-
-       The timeout and wtimeout routines  set  blocking  or  non-
-       blocking  read  for a given window.  If delay is negative,
-       blocking read is used (i.e., waits  indefinitely  for  in-
-       put).   If  delay  is zero, then non-blocking read is used
-       (i.e., read returns ERR if no input is waiting).  If delay
-       is  positive, then read blocks for delay milliseconds, and
-       returns ERR if there is still no input.  Hence, these rou-
-       tines  provide the same functionality as nodelay, plus the
-       additional capability of being able to block for only  de-
-       lay milliseconds (where delay is positive).
-
-       The  curses library does ``line-breakout optimization'' by
-       looking for  typeahead  periodically  while  updating  the
-       screen.   If  input is found, and it is coming from a tty,
-       the current update is postponed until refresh or  doupdate
-       is  called again.  This allows faster response to commands
-       typed in advance.  Normally, the input FILE pointer passed
-       to  newterm,  or  stdin in the case that initscr was used,
-       will be used to do this typeahead checking.  The typeahead
-       routine  specifies  that  the  file descriptor fd is to be
-       used to check for typeahead instead.  If fd is -1, then no
-       typeahead checking is done.
-
-
-
-

RETURN VALUE

-       All  routines that return an integer return ERR upon fail-
-       ure and OK (SVr4 specifies only "an  integer  value  other
-       than  ERR")  upon  successful completion, unless otherwise
-       noted in the preceding routine descriptions.
-
-       X/Open does not define any error conditions.  In this  im-
-       plementation,  functions  with a window parameter will re-
-       turn an error if it is null.  Any function will  also  re-
-       turn an error if the terminal was not initialized.  Also,
-
-              halfdelay
-                   returns  an  error if its parameter is outside
-                   the range 1..255.
-
-
-
-

PORTABILITY

-       These functions are described in the XSI Curses  standard,
-       Issue 4.
-
-       The  ncurses  library obeys the XPG4 standard and the his-
-       torical practice of the AT&T  curses  implementations,  in
-       that  the  echo bit is cleared when curses initializes the
-       terminal state.  BSD curses differed from  this  slightly;
-       it left the echo bit on at initialization, but the BSD raw
-       call turned it off as a side-effect.  For best  portabili-
-       ty,  set  echo or noecho explicitly just after initializa-
-       tion, even if your program remains in cooked mode.
-
-
-
-

NOTES

-       Note that echo, noecho, halfdelay, intrflush, meta,  node-
-       lay,  notimeout, noqiflush, qiflush, timeout, and wtimeout
-       may be macros.
-
-       The noraw and nocbreak calls follow historical practice in
-       that  they  attempt  to  restore to normal (`cooked') mode
-       from raw and cbreak modes respectively.  Mixing  raw/noraw
-       and  cbreak/nocbreak  calls  leads  to  tty driver control
-       states that are hard to predict or understand; it  is  not
-       recommended.
-
-
-
-

SEE ALSO

-       curses(3x), curs_getch(3x), curs_initscr(3x), termio(7)
-
-
-
-                                                        curs_inopts(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_ins_wch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_ins_wch.3x.html deleted file mode 100644 index 2b3714c..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_ins_wch.3x.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -curs_ins_wch 3x - - - - -

curs_ins_wch 3x

-
-
-
-curs_ins_wch(3x)                                       curs_ins_wch(3x)
-
-
-
-
-
-

NAME

-       ins_wch,  mvins_wch,  mvwins_wch, wins_wch - insert a com-
-       plex character and rendition into a window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int ins_wch(const cchar_t *wch);
-       int wins_wch(WINDOW *win, const cchar_t *wch);
-       int mvins_wch(int y, int x, const cchar_t *wch);
-       int mvwins_wch(WINDOW *win, int y, int  x,  const  cchar_t
-       *wch);
-
-
-
-

DESCRIPTION

-       These routines, insert the complex character wch with ren-
-       dition before the character under the cursor.  All charac-
-       ters to the right of the cursor are moved one space to the
-       right, with the possibility of the rightmost character  on
-       the  line  being  lost.   The insertion operation does not
-       change the cursor position.
-
-
-
-

RETURN VALUE

-       If successful, these functions return OK.   If  not,  they
-       return ERR.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

ERRORS

-       No errors are defined.
-
-
-
-

SEE ALSO

-       curses(3x), curs_insch(3x).
-
-
-
-                                                       curs_ins_wch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_ins_wstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_ins_wstr.3x.html deleted file mode 100644 index 5f7cee6..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_ins_wstr.3x.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - -curs_ins_wstr 3x - - - - -

curs_ins_wstr 3x

-
-
-
-curs_ins_wstr(3x)                                     curs_ins_wstr(3x)
-
-
-
-
-
-

NAME

-       ins_wstr, ins_nwstr, wins_wstr, wins_nwstr, mvins_wstr,
-       mvins_nwstr, mvwins_wstr, mvwins_nwstr - insert a wide-
-       character string into a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int ins_wstr(const wchar_t *wstr);
-       int ins_nwstr(const wchar_t *wstr, int n);
-       int wins_wstr(WINDOW *win, const wchar_t *wstr);
-       int wins_nwstr(WINDOW *win, const wchar_t *wstr, int n);
-       int mvins_wstr(int y, int x, const wchar_t *wstr);
-       int mvins_nwstr(int y, int x, const wchar_t *wstr, int n);
-       int mvwins_wstr(WINDOW *win, int y, int x, const wchar_t *wstr);
-       int mvwins_nwstr(WINDOW *win, int y, int x, const wchar_t *wstr, int n);
-
-
-
-

DESCRIPTION

-       These  routines insert a wchar_t character string (as many
-       characters as will fit on the line) before  the  character
-       under the cursor.  All characters to the right of the cur-
-       sor are shifted right, with the possibility of the  right-
-       most  characters  on  the line being lost.  No wrapping is
-       performed.  The cursor position  does  not  change  (after
-       moving  to  y, x, if specified).  The four routines with n
-       as the last argument insert a leading substring of at most
-       n  wchar_t  characters.   If  n is less than 1, the entire
-       string is inserted.
-
-       If a character in wstr is a tab, newline, carriage  return
-       or backspace, the cursor is moved appropriately within the
-       window.  A newline also does  a  clrtoeol  before  moving.
-       Tabs  are  considered  to be at every eighth column.  If a
-       character in wstr is  another  control  character,  it  is
-       drawn  in the ^X notation.  Calling win_wch after adding a
-       control character (and moving to it,  if  necessary)  does
-       not  return  the  control character, but instead returns a
-       character in the ^-representation of the  control  charac-
-       ter.
-
-
-
-

NOTES

-       Note that all but wins_nwstr may be macros.
-
-       If the first character in the string is a nonspacing char-
-       acter, these functions will fail.   XSI  does  not  define
-       what  will happen if a nonspacing character follows a con-
-       trol character.
-
-
-
-

RETURN VALUES

-       Upon successful completion,  these  functions  return  OK.
-       Otherwise, they return ERR.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

SEE ALSO

-       curses(3x),        curs_insstr(3x),       curs_in_wch(3x),
-       curs_ins_wch(3x).
-
-
-
-                                                      curs_ins_wstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_insch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_insch.3x.html deleted file mode 100644 index f8c833e..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_insch.3x.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -curs_insch 3x - - - - -

curs_insch 3x

-
-
-
-curs_insch(3x)                                           curs_insch(3x)
-
-
-
-
-
-

NAME

-       insch,  winsch,  mvinsch,  mvwinsch  -  insert a character
-       before cursor in a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int insch(chtype ch);
-       int winsch(WINDOW *win, chtype ch);
-       int mvinsch(int y, int x, chtype ch);
-       int mvwinsch(WINDOW *win, int y, int x, chtype ch);
-
-
-
-

DESCRIPTION

-       These routines insert the character ch before the  charac-
-       ter  under the cursor.  All characters to the right of the
-       cursor are moved one space to the right, with  the  possi-
-       bility  of the rightmost character on the line being lost.
-       The insertion operation does not change the  cursor  posi-
-       tion.
-
-
-
-

RETURN VALUE

-       All  routines that return an integer return ERR upon fail-
-       ure and OK (SVr4 specifies only "an  integer  value  other
-       than  ERR")  upon  successful completion, unless otherwise
-       noted in the preceding routine descriptions.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       These routines do not necessarily imply use of a  hardware
-       insert character feature.
-
-       Note that insch, mvinsch, and mvwinsch may be macros.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.
-
-
-
-

SEE ALSO

-       curses(3x).
-
-       Comparable  functions  in  the  wide-character  (ncursesw)
-       library are described in curs_ins_wch(3x).
-
-
-
-                                                         curs_insch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_insstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_insstr.3x.html deleted file mode 100644 index 7a61648..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_insstr.3x.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -curs_insstr 3x - - - - -

curs_insstr 3x

-
-
-
-curs_insstr(3x)                                         curs_insstr(3x)
-
-
-
-
-
-

NAME

-       insstr,  insnstr,  winsstr, winsnstr, mvinsstr, mvinsnstr,
-       mvwinsstr, mvwinsnstr - insert string before cursor  in  a
-       curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-       int insstr(const char *str);
-       int insnstr(const char *str, int n);
-       int winsstr(WINDOW *win, const char *str);
-       int winsnstr(WINDOW *win, const char *str, int n);
-       int mvinsstr(int y, int x, const char *str);
-       int mvinsnstr(int y, int x, const char *str, int n);
-       int mvwinsstr(WINDOW *win, int y, int x, const char *str);
-       int mvwinsnstr(WINDOW *win, int y, int x, const char *str,
-       int n);
-
-
-
-

DESCRIPTION

-       These routines insert a character string (as many  charac-
-       ters  as  will fit on the line) before the character under
-       the cursor.  All characters to the right of the cursor are
-       shifted  right with the possibility of the rightmost char-
-       acters on the line being lost.  The cursor  position  does
-       not  change  (after  moving  to  y, x, if specified).  The
-       functions with n as the last  argument  insert  a  leading
-       substring  of  at  most  n  characters.  If n<=0, then the
-       entire string is inserted.
-
-       Special characters are handled as in addch.
-
-
-
-

RETURN VALUE

-       All routines that return an integer return ERR upon  fail-
-       ure  and  OK  (SVr4 specifies only "an integer value other
-       than ERR") upon successful  completion,  unless  otherwise
-       noted in the preceding routine descriptions.
-
-       X/Open  defines  no error conditions.  In this implementa-
-       tion, if the window parameter is null or the str parameter
-       is null, an error is returned.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that all but winsnstr may be macros.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4, which adds const qualifiers to the arguments.
-
-       The Single  Unix  Specification,  Version  2  states  that
-       insnstr  and  winsnstr perform wrapping.  This is probably
-       an error, since it makes this group of functions inconsis-
-       tent.   Also,  no  implementation of curses documents this
-       inconsistency.
-
-
-
-

SEE ALSO

-       curses(3x), curs_util(3x), curs_clear(3x), curs_inch(3x).
-
-
-
-                                                        curs_insstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_instr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_instr.3x.html deleted file mode 100644 index 0f32d58..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_instr.3x.html +++ /dev/null @@ -1,123 +0,0 @@ - - - - -curs_instr 3x - - - - -

curs_instr 3x

-
-
-
-curs_instr(3x)                                           curs_instr(3x)
-
-
-
-
-
-

NAME

-       instr,  innstr, winstr, winnstr, mvinstr, mvinnstr, mvwin-
-       str, mvwinnstr - get a string of characters from a  curses
-       window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int instr(char *str);
-       int innstr(char *str, int n);
-       int winstr(WINDOW *win, char *str);
-       int winnstr(WINDOW *win, char *str, int n);
-       int mvinstr(int y, int x, char *str);
-       int mvinnstr(int y, int x, char *str, int n);
-       int mvwinstr(WINDOW *win, int y, int x, char *str);
-       int  mvwinnstr(WINDOW  *win,  int y, int x, char *str, int
-       n);
-
-
-
-

DESCRIPTION

-       These routines return  a  string  of  characters  in  str,
-       extracted  starting  at the current cursor position in the
-       named window.  Attributes are stripped  from  the  charac-
-       ters.   The  four  functions  with  n as the last argument
-       return a leading  substring  at  most  n  characters  long
-       (exclusive of the trailing NUL).
-
-
-
-

RETURN VALUE

-       All  of the functions return ERR upon failure, or the num-
-       ber of characters actually read into the string.
-
-       X/Open defines no error conditions.  In  this  implementa-
-       tion, if the window parameter is null or the str parameter
-       is null, a zero is returned.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

NOTES

-       Note that all routines except winnstr may be macros.
-
-
-
-

PORTABILITY

-       SVr4 does not document whether a length limit includes  or
-       excludes the trailing NUL.
-
-       The  ncurses library extends the XSI description by allow-
-       ing a negative value for n.  In this case,  the  functions
-       return the string ending at the right margin.
-
-
-
-

SEE ALSO

-       curses(3x).
-
-
-
-                                                         curs_instr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_inwstr.3x.html b/deps/ncurses-5.9/doc/html/man/curs_inwstr.3x.html deleted file mode 100644 index 223c398..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_inwstr.3x.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - -curs_inwstr 3x - - - - -

curs_inwstr 3x

-
-
-
-curs_inwstr(3x)                                         curs_inwstr(3x)
-
-
-
-
-
-

NAME

-       inwstr,  innwstr,  winwstr, winnwstr, mvinwstr, mvinnwstr,
-       mvwinwstr, mvwinnwstr - get a string of wchar_t characters
-       from a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int inwstr(wchar_t *str);
-       int innwstr(wchar_t *str, int n);
-       int winwstr(WINDOW *win, wchar_t *str);
-       int winnwstr(WINDOW *win, wchar_t *str, int n);
-       int mvinwstr(int y, int x, wchar_t *str);
-       int mvinnwstr(int y, int x, wchar_t *str, int n);
-       int mvwinwstr(WINDOW *win, int y, int x, wchar_t *str);
-       int mvwinnwstr(WINDOW *win, int y, int x, wchar_t *str, int n);
-
-
-
-

DESCRIPTION

-       These  routines  return  a string of wchar_t characters in
-       wstr, extracted starting at the current cursor position in
-       the  named window.  Attributes are stripped from the char-
-       acters.  The four functions with n as  the  last  argument
-       return a leading substring at most n bytes long (exclusive
-       of the trailing NUL).  Transfer stops at the  end  of  the
-       current  line,  or  when  n  bytes have been stored at the
-       location referenced by wstr.
-
-       If the size n is not large  enough  to  store  a  complete
-       character, an error is generated.
-
-
-
-

NOTES

-       Note that all routines except winnwstr may be macros.
-
-
-
-

RETURN VALUES

-       All routines return ERR upon failure. Upon successful com-
-       pletion, the *inwstr routines return OK, and the  *innwstr
-       routines  return  the  number  of characters read into the
-       string.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

SEE ALSO

-       curses(3x), curs_instr(3x), curs_in_wchstr(3x)
-
-
-
-                                                        curs_inwstr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_kernel.3x.html b/deps/ncurses-5.9/doc/html/man/curs_kernel.3x.html deleted file mode 100644 index a2e247c..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_kernel.3x.html +++ /dev/null @@ -1,206 +0,0 @@ - - - - -curs_kernel 3x - - - - -

curs_kernel 3x

-
-
-
-curs_kernel(3x)                                         curs_kernel(3x)
-
-
-
-
-
-

NAME

-       def_prog_mode, def_shell_mode, reset_prog_mode,
-       reset_shell_mode, resetty, savetty, getsyx, setsyx,
-       ripoffline, curs_set, napms - low-level curses routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int def_prog_mode(void);
-       int def_shell_mode(void);
-       int reset_prog_mode(void);
-       int reset_shell_mode(void);
-       int resetty(void);
-       int savetty(void);
-       void getsyx(int y, int x);
-       void setsyx(int y, int x);
-       int ripoffline(int line, int (*init)(WINDOW *, int));
-       int curs_set(int visibility);
-       int napms(int ms);
-
-
-
-

DESCRIPTION

-       The  following  routines  give low-level access to various
-       curses capabilities.  These routines  typically  are  used
-       inside library routines.
-
-       The  def_prog_mode  and  def_shell_mode  routines save the
-       current terminal modes as the  "program"  (in  curses)  or
-       "shell"   (not  in  curses)  state  for  use  by  the  re-
-       set_prog_mode and reset_shell_mode routines.  This is done
-       automatically by initscr.  There is one such save area for
-       each screen context allocated by newterm().
-
-       The reset_prog_mode and reset_shell_mode routines  restore
-       the  terminal  to "program" (in curses) or "shell" (out of
-       curses) state.  These are  done  automatically  by  endwin
-       and,  after  an  endwin, by doupdate, so they normally are
-       not called.
-
-       The resetty and savetty  routines  save  and  restore  the
-       state  of  the  terminal modes.  savetty saves the current
-       state in a buffer and resetty restores the state  to  what
-       it was at the last call to savetty.
-
-       The  getsyx routine returns the current coordinates of the
-       virtual screen cursor in y and x.  If leaveok is currently
-       TRUE,  then -1,-1 is returned.  If lines have been removed
-       from the top of the screen, using ripoffline, y and x  in-
-       clude  these lines; therefore, y and x should be used only
-       as arguments for setsyx.
-
-       The setsyx routine sets the virtual screen cursor to y, x.
-       If y and x are both -1, then leaveok is set.  The two rou-
-       tines getsyx and setsyx are designed to be used by  a  li-
-       brary  routine,  which manipulates curses windows but does
-       not want to change the current position of  the  program's
-       cursor.   The library routine would call getsyx at the be-
-       ginning, do its manipulation of  its  own  windows,  do  a
-       wnoutrefresh  on  its  windows, call setsyx, and then call
-       doupdate.
-
-       The ripoffline routine provides access to the same facili-
-       ty  that  slk_init  [see  curs_slk(3x)] uses to reduce the
-       size of the screen.   ripoffline  must  be  called  before
-       initscr or newterm is called.  If line is positive, a line
-       is removed from the top of stdscr; if line is negative,  a
-       line is removed from the bottom.  When this is done inside
-       initscr, the routine init (supplied by the user) is called
-       with  two arguments: a window pointer to the one-line win-
-       dow that has been allocated and an integer with the number
-       of columns in the window.  Inside this initialization rou-
-       tine, the integer variables LINES  and  COLS  (defined  in
-       <curses.h>) are not guaranteed to be accurate and wrefresh
-       or doupdate must not be called.  It is allowable  to  call
-       wnoutrefresh during the initialization routine.
-
-       ripoffline  can  be called up to five times before calling
-       initscr or newterm.
-
-       The curs_set routine sets the cursor state  to  invisible,
-       normal, or very visible for visibility equal to 0, 1, or 2
-       respectively.  If the terminal supports the visibility re-
-       quested, the previous cursor state is returned; otherwise,
-       ERR is returned.
-
-       The napms routine is used to sleep for ms milliseconds.
-
-
-
-

RETURN VALUE

-       Except for curs_set, these routines always return OK.
-
-       curs_set returns the previous cursor state, or ERR if  the
-       requested visibility is not supported.
-
-       X/Open  defines  no error conditions.  In this implementa-
-       tion
-
-              def_prog_mode, def_shell_mode, reset_prog_mode, re-
-              set_shell_mode
-                   return  an  error if the terminal was not ini-
-                   tialized, or if the I/O  call  to  obtain  the
-                   terminal settings fails.
-
-              ripoffline
-                   returns  an  error  if  the  maximum number of
-                   ripped-off lines exceeds the maximum (NRIPS  =
-                   5).
-
-
-
-

NOTES

-       Note  that getsyx is a macro, so & is not necessary before
-       the variables y and x.
-
-       Older SVr4  man  pages  warn  that  the  return  value  of
-       curs_set  "is  currently  incorrect".  This implementation
-       gets it right, but it may be unwise to count on  the  cor-
-       rectness of the return value anywhere else.
-
-       Both  ncurses  and  SVr4  will  call curs_set in endwin if
-       curs_set has been called to make  the  cursor  other  than
-       normal,  i.e., either invisible or very visible.  There is
-       no way for ncurses to determine the initial  cursor  state
-       to restore that.
-
-
-
-

PORTABILITY

-       The  functions  setsyx and getsyx are not described in the
-       XSI Curses standard, Issue 4.  All other functions are  as
-       described in XSI Curses.
-
-       The SVr4 documentation describes setsyx and getsyx as hav-
-       ing return type int.  This  is  misleading,  as  they  are
-       macros with no documented semantics for the return value.
-
-
-
-

SEE ALSO

-       curses(3x),  curs_initscr(3x),  curs_outopts(3x), curs_re-
-       fresh(3x),  curs_scr_dump(3x),  curs_slk(3x),   curs_vari-
-       ables(3x).
-
-
-
-                                                        curs_kernel(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_legacy.3x.html b/deps/ncurses-5.9/doc/html/man/curs_legacy.3x.html deleted file mode 100644 index 5a86252..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_legacy.3x.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - -curs_legacy 3x - - - - -

curs_legacy 3x

-
-
-
-curs_legacy(3x)                                         curs_legacy(3x)
-
-
-
-
-
-

NAME

-       getattrs  -  get  curses  cursor  and  window coordinates,
-       attributes
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int getattrs(WINDOW *win);
-       int getbegx(WINDOW *win);
-       int getbegy(WINDOW *win);
-       int getcurx(WINDOW *win);
-       int getcury(WINDOW *win);
-       int getmaxx(WINDOW *win);
-       int getmaxy(WINDOW *win);
-       int getparx(WINDOW *win);
-       int getpary(WINDOW *win);
-
-
-
-

DESCRIPTION

-       The getbegy and getbegx functions return the same data  as
-       getbegyx.
-
-       The  getcury and getcurx functions return the same data as
-       getyx.
-
-       The getmaxy and getmaxx functions return the same data  as
-       getmaxyx.
-
-       The  getpary and getparx functions return the same data as
-       getparyx.
-
-
-
-

RETURN VALUE

-       These functions return an integer, or ERR  if  the  window
-       parameter is null.
-
-
-
-

NOTES

-       All  of  these interfaces are provided as macros and func-
-       tions.  The macros are suppressed (and only the  functions
-       provided)  when  NCURSES_OPAQUE  is defined.  The standard
-       forms such as getyx 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 WINDOW structure.
-
-
-
-

PORTABILITY

-       These functions were supported on Version 7, BSD or System
-       V implementations.
-
-
-
-

SEE ALSO

-       curses(3x), curs_getyx(3x), curs_opaque(3x)
-
-
-
-                                                        curs_legacy(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_memleaks.3x.html b/deps/ncurses-5.9/doc/html/man/curs_memleaks.3x.html deleted file mode 100644 index 540ea93..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_memleaks.3x.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - -curs_memleaks 3x - - - - -

curs_memleaks 3x

-
-
-
-curs_memleaks(3x)                                     curs_memleaks(3x)
-
-
-
-
-
-

NAME

-       _nc_freeall _nc_free_and_exit - curses memory-leak
-       checking
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       void _nc_freeall(void);
-       void _nc_free_and_exit(int);
-
-
-
-

DESCRIPTION

-       These functions are used to simplify  analysis  of  memory
-       leaks  in  the  ncurses  library.   They  are normally not
-       available; they must be configured  into  the  library  at
-       build  time  using  the --disable-leaks option.  That com-
-       piles-in code that frees memory that normally would not be
-       freed.
-
-       Any  implementation of curses must not free the memory as-
-       sociated with a screen, since (even after calling endwin),
-       it  must be available for use in the next call to refresh.
-       There are also chunks of memory held for performance  rea-
-       sons.   That  makes it hard to analyze curses applications
-       for memory leaks.  To work around this, one  can  build  a
-       debugging version of the ncurses library which frees those
-       chunks which it can, and provides these functions to  free
-       all of the memory allocated by the ncurses library.
-
-       The  _nc_free_and_exit function is the preferred one since
-       some of the memory which is freed may be required for  the
-       application  to  continue  running.   Its parameter is the
-       code to pass to the exit routine.
-
-
-
-

RETURN VALUE

-       These functions do not return a value.
-
-
-
-

PORTABILITY

-       These functions are not part of the XSI interface.
-
-
-
-

SEE ALSO

-       curses(3x).
-
-
-
-                                                      curs_memleaks(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_mouse.3x.html b/deps/ncurses-5.9/doc/html/man/curs_mouse.3x.html deleted file mode 100644 index d640680..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_mouse.3x.html +++ /dev/null @@ -1,318 +0,0 @@ - - - - -curs_mouse 3x - - - - -

curs_mouse 3x

-
-
-
-curs_mouse(3x)                                           curs_mouse(3x)
-
-
-
-
-
-

NAME

-       has_mouse, getmouse, ungetmouse, mousemask, wenclose,
-       mouse_trafo, wmouse_trafo, mouseinterval - mouse interface
-       through curses
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       typedef unsigned long mmask_t;
-
-       typedef struct
-       {
-           short id;         /* ID to distinguish multiple devices */
-           int x, y, z;      /* event coordinates */
-           mmask_t bstate;   /* button state bits */
-       }
-       MEVENT;
-       bool has_mouse(void);
-       int getmouse(MEVENT *event);
-       int ungetmouse(MEVENT *event);
-       mmask_t mousemask(mmask_t newmask, mmask_t *oldmask);
-       bool wenclose(const WINDOW *win, int y, int x);
-       bool mouse_trafo(int* pY, int* pX, bool to_screen);
-       bool wmouse_trafo(const WINDOW* win, int* pY, int* pX,
-            bool to_screen);
-       int mouseinterval(int erval);
-
-
-
-

DESCRIPTION

-       These  functions provide an interface to mouse events from
-       ncurses(3x).  Mouse events are  represented  by  KEY_MOUSE
-       pseudo-key values in the wgetch input stream.
-
-       To  make mouse events visible, use the mousemask function.
-       This will set the mouse events to  be  reported.   By  de-
-       fault,  no  mouse  events are reported.  The function will
-       return a mask to indicate which  of  the  specified  mouse
-       events  can be reported; on complete failure it returns 0.
-       If oldmask is non-NULL, this function fills the  indicated
-       location  with  the  previous  value of the given window's
-       mouse event mask.
-
-       As a side effect, setting a zero mousemask  may  turn  off
-       the  mouse pointer; setting a nonzero mask may turn it on.
-       Whether this happens is device-dependent.
-
-       Here are the mouse event type masks which may be defined:
-
-
-       Name                     Description
-       ---------------------------------------------------------------------
-       BUTTON1_PRESSED          mouse button 1 down
-       BUTTON1_RELEASED         mouse button 1 up
-       BUTTON1_CLICKED          mouse button 1 clicked
-       BUTTON1_DOUBLE_CLICKED   mouse button 1 double clicked
-       BUTTON1_TRIPLE_CLICKED   mouse button 1 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON2_PRESSED          mouse button 2 down
-       BUTTON2_RELEASED         mouse button 2 up
-       BUTTON2_CLICKED          mouse button 2 clicked
-       BUTTON2_DOUBLE_CLICKED   mouse button 2 double clicked
-
-
-       BUTTON2_TRIPLE_CLICKED   mouse button 2 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON3_PRESSED          mouse button 3 down
-       BUTTON3_RELEASED         mouse button 3 up
-       BUTTON3_CLICKED          mouse button 3 clicked
-       BUTTON3_DOUBLE_CLICKED   mouse button 3 double clicked
-       BUTTON3_TRIPLE_CLICKED   mouse button 3 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON4_PRESSED          mouse button 4 down
-       BUTTON4_RELEASED         mouse button 4 up
-       BUTTON4_CLICKED          mouse button 4 clicked
-       BUTTON4_DOUBLE_CLICKED   mouse button 4 double clicked
-       BUTTON4_TRIPLE_CLICKED   mouse button 4 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON5_PRESSED          mouse button 5 down
-       BUTTON5_RELEASED         mouse button 5 up
-       BUTTON5_CLICKED          mouse button 5 clicked
-       BUTTON5_DOUBLE_CLICKED   mouse button 5 double clicked
-       BUTTON5_TRIPLE_CLICKED   mouse button 5 triple clicked
-       ---------------------------------------------------------------------
-       BUTTON_SHIFT             shift was down during button state change
-       BUTTON_CTRL              control was down during button state change
-       BUTTON_ALT               alt was down during button state change
-       ALL_MOUSE_EVENTS         report all button state changes
-       REPORT_MOUSE_POSITION    report mouse movement
-       ---------------------------------------------------------------------
-
-       Once a class of mouse events have been made visible  in  a
-       window, calling the wgetch function on that window may re-
-       turn KEY_MOUSE as an indicator that a mouse event has been
-       queued.   To read the event data and pop the event off the
-       queue, call getmouse.  This function will return OK  if  a
-       mouse  event  is actually visible in the given window, ERR
-       otherwise.  When getmouse returns OK, 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 getmouse will retrieve the
-       next older item from the queue.
-
-       The ungetmouse function behaves  analogously  to  ungetch.
-       It  pushes a KEY_MOUSE event onto the input queue, and as-
-       sociates with that event the given state data and  screen-
-       relative character-cell coordinates.
-
-       The  wenclose  function  tests  whether  a  given  pair of
-       screen-relative character-cell coordinates is enclosed  by
-       a  given  window, returning TRUE if it is and FALSE other-
-       wise.  It is useful for determining  what  subset  of  the
-       screen windows enclose the location of a mouse event.
-
-       The wmouse_trafo function transforms a given pair of coor-
-       dinates from stdscr-relative  coordinates  to  coordinates
-       relative to the given window or vice versa.  Please remem-
-       ber, that stdscr-relative coordinates are not always iden-
-       tical  to window-relative coordinates due to the mechanism
-       to reserve lines on top or bottom of the screen for  other
-       purposes (see the ripoffline() and slk_init calls, for ex-
-       ample).  If the parameter to_screen is TRUE, the  pointers
-       pY, pX must reference the coordinates of a location inside
-       the window win.  They are converted to window-relative co-
-       ordinates  and returned through the pointers.  If the con-
-       version was successful, the function returns TRUE.  If one
-       of  the  parameters was NULL or the location is not inside
-       the window, FALSE is returned.  If to_screen is FALSE, the
-       pointers  pY,  pX  must  reference window-relative coordi-
-       nates.  They are converted to stdscr-relative  coordinates
-       if  the  window win encloses this point.  In this case the
-       function returns TRUE.  If one of the parameters  is  NULL
-       or  the point is not inside the window, FALSE is returned.
-       Please notice, that the referenced  coordinates  are  only
-       replaced  by  the converted coordinates if the transforma-
-       tion was successful.
-
-       The mouse_trafo function performs the same translation  as
-       wmouse_trafo, using stdscr for win.
-
-       The mouseinterval function sets the maximum time (in thou-
-       sands of a second) that can elapse between press  and  re-
-       lease  events  for  them to be recognized as a click.  Use
-       mouseinterval(0) to disable click resolution.  This  func-
-       tion returns the previous interval value.  Use mouseinter-
-       val(-1) to obtain the interval without altering  it.   The
-       default is one sixth of a second.
-
-       The  has_mouse  function  returns TRUE if the mouse driver
-       has been successfully initialized.
-
-       Note that mouse events will be ignored when  input  is  in
-       cooked mode, and will cause an error beep when cooked mode
-       is being simulated in a window by a function such as  get-
-       str that expects a linefeed for input-loop termination.
-
-
-
-

RETURN VALUE

-       getmouse  and ungetmouse return the integer ERR upon fail-
-       ure or OK upon successful completion.
-
-              getmouse
-                   returns an error.  If no mouse driver was ini-
-                   tialized, or if the mask parameter is zero, it
-                   also returns an error if no more events remain
-                   in the queue.
-
-              ungetmouse
-                   returns an error if the FIFO is full.
-
-       mousemask returns the mask of reportable events.
-
-       mouseinterval  returns the previous interval value, unless
-       the terminal was not initialized.  In that  case,  it  re-
-       turns the maximum interval value (166).
-
-       wenclose  and wmouse_trafo are boolean functions returning
-       TRUE or FALSE depending on their test result.
-
-
-
-

PORTABILITY

-       These calls were designed for  ncurses(3x),  and  are  not
-       found in SVr4 curses, 4.4BSD curses, or any other previous
-       version of curses.
-
-       The feature macro NCURSES_MOUSE_VERSION is provided so the
-       preprocessor  can  be  used to test whether these features
-       are present.  If the interface is changed,  the  value  of
-       NCURSES_MOUSE_VERSION  will  be incremented.  These values
-       for NCURSES_MOUSE_VERSION may be specified when  configur-
-       ing ncurses:
-
-              1  has  definitions  for reserved events.  The mask
-                 uses 28 bits.
-
-              2  adds definitions for button 5, removes the defi-
-                 nitions  for  reserved events.  The mask uses 29
-                 bits.
-
-       The order of the MEVENT structure members is  not  guaran-
-       teed.   Additional fields may be added to the structure in
-       the future.
-
-       Under ncurses(3x), these calls are implemented  using  ei-
-       ther  xterm's built-in mouse-tracking API or platform-spe-
-       cific drivers including
-              Alessandro Rubini's gpm server
-              FreeBSD sysmouse
-              OS/2 EMX
-       If you  are  using  an  unsupported  configuration,  mouse
-       events  will not be visible to ncurses(3x) (and the mouse-
-       mask function will always return 0).
-
-       If the terminfo entry contains a XM string, this  is  used
-       in  the xterm mouse driver to control the way the terminal
-       is initialized for mouse operation.  The default, if XM is
-       not found, corresponds to private mode 1000 of xterm:
-              \E[?1000%?%p1%{1}%=%th%el%;
-       The z member in the 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.
-
-
-
-

BUGS

-       Mouse events under xterm will not in fact be ignored  dur-
-       ing  cooked  mode, if they have been enabled by mousemask.
-       Instead, the xterm mouse report sequence  will  appear  in
-       the string read.
-
-       Mouse events under xterm will not be detected correctly in
-       a window with its keypad bit off, since  they  are  inter-
-       preted  as  a  variety of function key.  Your terminfo de-
-       scription should have kmous set to "\E[M"  (the  beginning
-       of  the response from xterm for mouse clicks).  Other val-
-       ues for kmous are permitted, but under  the  same  assump-
-       tion, i.e., it is the beginning of the response.
-
-       Because  there  are  no  standard  terminal responses that
-       would serve to identify terminals which support the  xterm
-       mouse  protocol,  ncurses assumes that if your $TERM envi-
-       ronment variable contains "xterm", or kmous is defined  in
-       the terminal description, then the terminal may send mouse
-       events.
-
-
-
-

SEE ALSO

-       curses(3x),  curs_kernel(3x),   curs_slk(3x),   curs_vari-
-       ables(3x).
-
-
-
-                                                         curs_mouse(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_move.3x.html b/deps/ncurses-5.9/doc/html/man/curs_move.3x.html deleted file mode 100644 index d78178d..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_move.3x.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -curs_move 3x - - - - -

curs_move 3x

-
-
-
-curs_move(3x)                                             curs_move(3x)
-
-
-
-
-
-

NAME

-       move, wmove - move curses window cursor
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int move(int y, int x);
-       int wmove(WINDOW *win, int y, int x);
-
-
-
-

DESCRIPTION

-       These  routines move the cursor associated with the window
-       to line y and column x.  This routine does  not  move  the
-       physical  cursor  of the terminal until refresh is called.
-       The position specified is relative to the upper  left-hand
-       corner of the window, which is (0,0).
-
-
-
-

RETURN VALUE

-       These routines return ERR upon failure and OK (SVr4 speci-
-       fies only "an integer value other than ERR") upon success-
-       ful completion.
-
-       Specifically,  they  return an error if the window pointer
-       is null, or if the position is outside the window.
-
-
-
-

NOTES

-       Note that move may be a macro.
-
-
-
-

PORTABILITY

-       These functions are described in the XSI Curses  standard,
-       Issue 4.
-
-
-
-

SEE ALSO

-       curses(3x), curs_refresh(3x)
-
-
-
-                                                          curs_move(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_opaque.3x.html b/deps/ncurses-5.9/doc/html/man/curs_opaque.3x.html deleted file mode 100644 index 6d01f2e..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_opaque.3x.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - -curs_opaque 3x - - - - -

curs_opaque 3x

-
-
-
-curs_opaque(3x)                                         curs_opaque(3x)
-
-
-
-
-
-

NAME

-       is_cleared, is_idlok, is_idcok, is_immedok, is_keypad,
-       is_leaveok, is_nodelay, is_notimeout, is_pad, is_scrollok,
-       is_subwin, is_syncok - curses window properties
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       bool is_cleared(const WINDOW *win);
-       bool is_idcok(const WINDOW *win);
-       bool is_idlok(const WINDOW *win);
-       bool is_immedok(const WINDOW *win);
-       bool is_keypad(const WINDOW *win);
-       bool is_leaveok(const WINDOW *win);
-       bool is_nodelay(const WINDOW *win);
-       bool is_notimeout(const WINDOW *win);
-       bool is_pad(const WINDOW *win);
-       bool is_scrollok(const WINDOW *win);
-       bool is_subwin(const WINDOW *win);
-       bool is_syncok(const WINDOW *win);
-       WINDOW * wgetparent(const WINDOW *win);
-       int wgetscrreg(const WINDOW *win, int *top, int *bottom);
-
-
-
-

DESCRIPTION

-       This  implementation provides functions which return prop-
-       erties set in the WINDOW  structure,  allowing  it  to  be
-       ``opaque'' if the symbol NCURSES_OPAQUE is defined:
-
-       is_cleared
-            returns the value set in clearok
-
-       is_idcok
-            returns the value set in idcok
-
-       is_idlok
-            returns the value set in idlok
-
-       is_immedok
-            returns the value set in immedok
-
-       is_keypad
-            returns the value set in keypad
-
-       is_leaveok
-            returns the value set in leaveok
-
-       is_nodelay
-            returns the value set in nodelay
-
-       is_notimeout
-            returns the value set in notimeout
-
-       is_pad
-            returns  TRUE if the window is a pad i.e., created by
-            newpad
-
-       is_scrollok
-            returns the value set in scrollok
-
-       is_subwin
-            returns TRUE if the window is a subwindow, i.e., cre-
-            ated by subwin or derwin
-
-       is_syncok
-            returns the value set in syncok
-
-       wgetparent
-            returns  the parent WINDOW pointer for subwindows, or
-            NULL for windows having no parent.
-
-       wgetscrreg
-            returns the top and bottom  rows  for  the  scrolling
-            margin as set in wsetscrreg.
-
-
-
-

RETURN VALUE

-       These functions all return TRUE or FALSE, except as noted.
-
-
-
-

NOTES

-       Both a macro and a function are provided for each name.
-
-
-
-

PORTABILITY

-       These  routines  are  specific  to ncurses.  They were not
-       supported on Version 7, BSD or System  V  implementations.
-       It  is  recommended that any code depending on ncurses ex-
-       tensions be conditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       curses(3x), curs_inopts(3x),  curs_outopts(3x),  curs_win-
-       dow(3x)
-
-
-
-                                                        curs_opaque(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_outopts.3x.html b/deps/ncurses-5.9/doc/html/man/curs_outopts.3x.html deleted file mode 100644 index 9be94d9..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_outopts.3x.html +++ /dev/null @@ -1,234 +0,0 @@ - - - - -curs_outopts 3x - - - - -

curs_outopts 3x

-
-
-
-curs_outopts(3x)                                       curs_outopts(3x)
-
-
-
-
-
-

NAME

-       clearok, idlok, idcok, immedok, leaveok, setscrreg,
-       wsetscrreg, scrollok, nl, nonl - curses output options
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int clearok(WINDOW *win, bool bf);
-       int idlok(WINDOW *win, bool bf);
-       void idcok(WINDOW *win, bool bf);
-       void immedok(WINDOW *win, bool bf);
-       int leaveok(WINDOW *win, bool bf);
-       int setscrreg(int top, int bot);
-       int wsetscrreg(WINDOW *win, int top, int bot);
-       int scrollok(WINDOW *win, bool bf);
-       int nl(void);
-       int nonl(void);
-
-
-
-

DESCRIPTION

-       These routines set options that change the style of output
-       within  curses.   All  options are initially FALSE, unless
-       otherwise stated.  It is not necessary to turn  these  op-
-       tions off before calling endwin.
-
-       If  clearok is called with TRUE as argument, the next call
-       to wrefresh with this window will clear  the  screen  com-
-       pletely  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.  If
-       the win argument to clearok is the global variable curscr,
-       the  next  call  to  wrefresh  with  any window causes the
-       screen to be cleared and repainted from scratch.
-
-       If idlok is called with TRUE as  second  argument,  curses
-       considers using the hardware insert/delete line feature of
-       terminals so equipped.  Calling idlok with FALSE 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 edi-
-       tor.  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 can-
-       not  be  used,  curses redraws the changed portions of all
-       lines.
-
-       If idcok is called with FALSE as second  argument,  curses
-       no longer considers using the hardware insert/delete char-
-       acter feature of terminals so equipped.  Use of  character
-       insert/delete  is  enabled by default.  Calling idcok with
-       TRUE as second argument re-enables use of character inser-
-       tion and deletion.
-
-       If  immedok is called with TRUE as argument, any change in
-       the window image, such as the ones caused by waddch, wclr-
-       tobot,  wscrl,  etc.,  automatically  cause a call to wre-
-       fresh.  However, it may degrade performance  considerably,
-       due  to repeated calls to wrefresh.  It is disabled by de-
-       fault.
-
-       Normally, the hardware cursor is left at the  location  of
-       the window cursor being refreshed.  The leaveok option al-
-       lows 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.
-
-       The setscrreg and wsetscrreg routines allow  the  applica-
-       tion  programmer  to  set a software scrolling region in a
-       window.  The top and 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  scrollok are enabled, an attempt to move off the bot-
-       tom 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 re-
-       gion capability in the terminal, like that in  the  VT100.
-       If  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.)
-
-       The  scrollok 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, (bf is FALSE), the cursor is left
-       on the bottom line.  If enabled, (bf is TRUE), the  window
-       is  scrolled  up  one  line (Note that to get the physical
-       scrolling effect on the terminal, it is also necessary  to
-       call idlok).
-
-       The  nl  and  nonl routines control whether the underlying
-       display device translates the return key into  newline  on
-       input,  and  whether it translates newline into return and
-       line-feed on output (in either case, the call  addch('\n')
-       does the equivalent of return and line feed on the virtual
-       screen).  Initially, these translations do occur.  If  you
-       disable  them using nonl, curses will be able to make bet-
-       ter use of the line-feed capability, resulting  in  faster
-       cursor  motion.   Also, curses will then be able to detect
-       the return key.
-
-
-
-

RETURN VALUE

-       The functions setscrreg and wsetscrreg return OK upon suc-
-       cess and ERR upon failure.  All other routines that return
-       an integer always return OK.
-
-       X/Open does not define any error conditions.
-
-       In this implementation, those functions that have a window
-       pointer  will  return  an  error  if the window pointer is
-       null.
-
-              wclrtoeol
-                   returns an error if  the  cursor  position  is
-                   about to wrap.
-
-              wsetscrreg
-                   returns  an error if the scrolling region lim-
-                   its extend outside the window.
-
-       X/Open does not define any error conditions.  This  imple-
-       mentation returns an error if the window pointer is null.
-
-
-
-

PORTABILITY

-       These  functions are described in the XSI Curses standard,
-       Issue 4.
-
-       The XSI Curses standard is ambiguous on  the  question  of
-       whether  raw()  should  disable the CRLF translations con-
-       trolled by nl() and nonl().  BSD curses did turn off these
-       translations;  AT&T  curses (at least as late as SVr1) did
-       not.  We choose to do so, on the theory that a  programmer
-       requesting  raw  input wants a clean (ideally 8-bit clean)
-       connection that the operating system will not alter.
-
-       Some historic curses implementations had,  as  an  undocu-
-       mented  feature,  the  ability  to  do  the  equivalent of
-       clearok(..., 1) by saying touchwin(stdscr)  or  clear(std-
-       scr).  This will not work under ncurses.
-
-       Earlier  System  V  curses  implementations specified that
-       with scrollok enabled, any window modification  triggering
-       a  scroll also forced a physical refresh.  XSI Curses does
-       not require this, and ncurses avoids doing it  to  perform
-       better vertical-motion optimization at wrefresh time.
-
-       The  XSI  Curses standard does not mention that the cursor
-       should be made invisible  as  a  side-effect  of  leaveok.
-       SVr4  curses  documentation  does  this, but the code does
-       not.  Use curs_set to make the cursor invisible.
-
-
-
-

NOTES

-       Note that clearok, leaveok, scrollok, idcok, nl, nonl  and
-       setscrreg may be macros.
-
-       The immedok routine is useful for windows that are used as
-       terminal emulators.
-
-
-
-

SEE ALSO

-       curses(3x),        curs_addch(3x),         curs_clear(3x),
-       curs_initscr(3x),    curs_scroll(3x),    curs_refresh(3x),
-       curs_variables(3x).
-
-
-
-                                                       curs_outopts(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_overlay.3x.html b/deps/ncurses-5.9/doc/html/man/curs_overlay.3x.html deleted file mode 100644 index 69ed0fc..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_overlay.3x.html +++ /dev/null @@ -1,122 +0,0 @@ - - - - -curs_overlay 3x - - - - -

curs_overlay 3x

-
-
-
-curs_overlay(3x)                                       curs_overlay(3x)
-
-
-
-
-
-

NAME

-       overlay, overwrite, copywin - overlay and manipulate
-       overlapped curses windows
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int overlay(const WINDOW *srcwin, WINDOW *dstwin);
-       int overwrite(const WINDOW *srcwin, WINDOW *dstwin);
-       int copywin(const  WINDOW  *srcwin,  WINDOW  *dstwin,  int
-       sminrow,
-             int smincol, int dminrow, int dmincol, int dmaxrow,
-             int dmaxcol, int overlay);
-
-
-
-

DESCRIPTION

-       The  overlay  and overwrite routines overlay srcwin on top
-       of dstwin.  scrwin and dstwin are not required to  be  the
-       same  size;  only  text  where  the two windows overlap is
-       copied.  The difference is that overlay is non-destructive
-       (blanks are not copied) whereas overwrite is destructive.
-
-       The  copywin  routine provides a finer granularity of con-
-       trol over the overlay and overwrite routines.  Like in the
-       prefresh routine, a rectangle is specified in the destina-
-       tion window, (dminrow, dmincol)  and  (dmaxrow,  dmaxcol),
-       and  the  upper-left-corner coordinates of the source win-
-       dow, (sminrow, smincol).  If the argument overlay is true,
-       then copying is non-destructive, as in overlay.
-
-
-
-

RETURN VALUE

-       Routines  that  return an integer return ERR upon failure,
-       and OK (SVr4 only specifies "an integer value  other  than
-       ERR") upon successful completion.
-
-       X/Open  defines  no error conditions.  In this implementa-
-       tion, copywin, overlay and overwrite return  an  error  if
-       either of the window pointers are null, or if some part of
-       the window would be placed off-screen.
-
-
-
-

NOTES

-       Note that overlay and overwrite may be macros.
-
-
-
-

PORTABILITY

-       The XSI Curses standard, Issue 4 describes these functions
-       (adding the const qualifiers).  It further specifies their
-       behavior in the presence of characters with multibyte ren-
-       ditions (not yet supported in this implementation).
-
-
-
-

SEE ALSO

-       curses(3x), curs_pad(3x), curs_refresh(3x)
-
-
-
-                                                       curs_overlay(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_pad.3x.html b/deps/ncurses-5.9/doc/html/man/curs_pad.3x.html deleted file mode 100644 index ca16cf4..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_pad.3x.html +++ /dev/null @@ -1,184 +0,0 @@ - - - - -curs_pad 3x - - - - -

curs_pad 3x

-
-
-
-curs_pad(3x)                                               curs_pad(3x)
-
-
-
-
-
-

NAME

-       newpad, subpad, prefresh, pnoutrefresh, pechochar,
-       pecho_wchar - create and display curses pads
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       WINDOW *newpad(int nlines, int ncols);
-       WINDOW *subpad(WINDOW *orig, int nlines, int ncols,
-             int begin_y, int begin_x);
-       int prefresh(WINDOW *pad, int pminrow, int pmincol,
-             int sminrow, int smincol, int smaxrow, int smaxcol);
-       int pnoutrefresh(WINDOW *pad, int pminrow, int pmincol,
-             int sminrow, int smincol, int smaxrow, int smaxcol);
-       int pechochar(WINDOW *pad, chtype ch);
-       int pecho_wchar(WINDOW *pad, const cchar_t *wch);
-
-
-
-

DESCRIPTION

-       The newpad routine creates and returns a pointer to a  new
-       pad data structure with the given number of lines, nlines,
-       and columns, ncols.  A pad is like a window,  except  that
-       it is not restricted by the screen size, and is not neces-
-       sarily associated with a particular part  of  the  screen.
-       Pads can be used when a large window is needed, and only a
-       part of the window will be on the screen at one time.  Au-
-       tomatic refreshes of pads (e.g., from scrolling or echoing
-       of input) do not occur.  It is not legal to call  wrefresh
-       with  a  pad  as  an  argument;  the  routines prefresh or
-       pnoutrefresh should be called instead.   Note  that  these
-       routines require additional parameters to specify the part
-       of the pad to be displayed and the location on the  screen
-       to be used for the display.
-
-       The subpad routine creates and returns a pointer to a sub-
-       window within a  pad  with  the  given  number  of  lines,
-       nlines,  and  columns,  ncols.   Unlike subwin, which uses
-       screen coordinates, the window is  at  position  (begin_x,
-       begin_y)  on the pad.  The window is made in the middle of
-       the window orig, so that changes made to one window affect
-       both windows.  During the use of this routine, it will of-
-       ten be necessary to call touchwin or touchline on orig be-
-       fore calling prefresh.
-
-       The  prefresh  and  pnoutrefresh routines are analogous to
-       wrefresh and wnoutrefresh except that they relate to  pads
-       instead  of windows.  The additional parameters are needed
-       to indicate what part of the pad and screen are  involved.
-       The pminrow and pmincol parameters specify the upper left-
-       hand corner of the rectangle to be displayed in  the  pad.
-       The  sminrow,  smincol,  smaxrow,  and  smaxcol parameters
-       specify the edges of the rectangle to be displayed on  the
-       screen.   The  lower right-hand corner of the rectangle to
-       be displayed in the pad is calculated from the screen  co-
-       ordinates,  since  the  rectangles  must be the same size.
-       Both rectangles must be entirely  contained  within  their
-       respective  structures.  Negative values of pminrow, pmin-
-       col, sminrow, or smincol are treated as if they were zero.
-
-       The pechochar routine is functionally equivalent to a call
-       to  addch  followed by a call to refresh, a call to waddch
-       followed by a call to wrefresh, or a call to  waddch  fol-
-       lowed  by  a  call to prefresh.  The knowledge that only a
-       single character is being output is taken into  considera-
-       tion  and, for non-control characters, a considerable per-
-       formance gain might be seen by using  these  routines  in-
-       stead of their equivalents.  In the case of pechochar, the
-       last location of the pad on the screen is reused  for  the
-       arguments to prefresh.
-
-       The  pecho_wchar  function is the analogous wide-character
-       form of pechochar.  It outputs one character to a pad  and
-       immediately  refreshes the pad.  It does this by a call to
-       wadd_wch followed by a call to prefresh.
-
-
-
-

RETURN VALUE

-       Routines that return an integer return  ERR  upon  failure
-       and  OK  (SVr4 only specifies "an integer value other than
-       ERR") upon successful completion.
-
-       Routines that return pointers return NULL  on  error,  and
-       set errno to ENOMEM.
-
-       X/Open  does not define any error conditions.  In this im-
-       plementation
-
-              prefresh and pnoutrefresh
-                   return an error 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 maxi-
-                   mum.
-
-              pechochar
-                   returns an error if the window is not really a
-                   pad,  and the associated call to wechochar re-
-                   turns an error.
-
-              pecho_wchar
-                   returns an error if the window is not really a
-                   pad,  and  the  associated call to wecho_wchar
-                   returns an error.
-
-
-
-

NOTES

-       Note that pechochar may be a macro.
-
-
-
-

PORTABILITY

-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.
-
-
-
-

SEE ALSO

-       curses(3x),  curs_refresh(3x),  curs_touch(3x),  curs_add-
-       ch(3x).
-
-
-
-                                                           curs_pad(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_print.3x.html b/deps/ncurses-5.9/doc/html/man/curs_print.3x.html deleted file mode 100644 index 11b64a7..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_print.3x.html +++ /dev/null @@ -1,121 +0,0 @@ - - - - -curs_print 3x - - - - -

curs_print 3x

-
-
-
-curs_print(3x)                                           curs_print(3x)
-
-
-
-
-
-

NAME

-       mcprint - ship binary data to printer
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int mcprint(char *data, int len);
-
-
-
-

DESCRIPTION

-       This  function  uses the mc5p or mc4 and mc5 capabilities,
-       if they are present, to  ship  given  data  to  a  printer
-       attached to the terminal.
-
-       Note  that  the mcprint 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).  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.
-
-
-
-

RETURN VALUE

-       The mcprint function returns ERR if  the  write  operation
-       aborted for some reason.  In this case, errno will contain
-       either an error associated with write(2)  or  one  of  the
-       following:
-
-       ENODEV
-            Capabilities for printer redirection do not exist.
-
-       ENOMEM
-            Couldn't  allocate  sufficient  memory  to buffer the
-            printer write.
-
-       When mcprint succeeds, it returns the number of characters
-       actually sent to the printer.
-
-
-
-

PORTABILITY

-       The  mcprint call was designed for ncurses(3x), and is not
-       found in SVr4 curses, 4.4BSD curses, or any other previous
-       version of curses.
-
-
-
-

BUGS

-       Padding  in the mc5p, mc4 and mc5 capabilities will not be
-       interpreted.
-
-
-
-

SEE ALSO

-       curses(3x)
-
-
-
-                                                         curs_print(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_printw.3x.html b/deps/ncurses-5.9/doc/html/man/curs_printw.3x.html deleted file mode 100644 index f845852..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_printw.3x.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -curs_printw 3x - - - - -

curs_printw 3x

-
-
-
-curs_printw(3x)                                         curs_printw(3x)
-
-
-
-
-
-

NAME

-       printw, wprintw, mvprintw, mvwprintw, vwprintw, vw_printw
-       - print formatted output in curses windows
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int printw(const char *fmt, ...);
-       int wprintw(WINDOW *win, const char *fmt, ...);
-       int mvprintw(int y, int x, const char *fmt, ...);
-       int mvwprintw(WINDOW *win, int y, int x, const char  *fmt,
-       ...);
-       int  vwprintw(WINDOW  *win,  const char *fmt, va_list var-
-       glist);
-       int vw_printw(WINDOW *win, const char *fmt,  va_list  var-
-       glist);
-
-
-
-

DESCRIPTION

-       The  printw,  wprintw, mvprintw and mvwprintw routines are
-       analogous to  printf  [see  printf(3)].   In  effect,  the
-       string that would be output by printf is output instead as
-       though waddstr were used on the given window.
-
-       The vwprintw  and  wv_printw  routines  are  analogous  to
-       vprintf  [see  printf(3)]  and  perform  a wprintw using a
-       variable argument list.  The third argument is a  va_list,
-       a   pointer   to  a  list  of  arguments,  as  defined  in
-       <stdarg.h>.
-
-
-
-

RETURN VALUE

-       Routines that return an integer return  ERR  upon  failure
-       and  OK  (SVr4 only specifies "an integer value other than
-       ERR") upon successful completion.
-
-       X/Open defines no error conditions.  In  this  implementa-
-       tion,  an  error  may  be  returned  if it cannot allocate
-       enough memory for the buffer used to format  the  results.
-       It will return an error if the window pointer is null.
-
-       Functions  with a "mv" prefix first perform a cursor move-
-       ment using wmove, and return an error if the  position  is
-       outside the window, or if the window pointer is null.
-
-
-
-

PORTABILITY

-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.  The function vwprintw is marked TO  BE  WITHDRAWN,
-       and  is  to  be replaced by a function vw_printw using the
-       <stdarg.h> interface.  The Single Unix Specification, Ver-
-       sion  2  states  that  vw_printw  is preferred to vwprintw
-       since the latter  requires  including  <varargs.h>,  which
-       cannot  be  used in the same file as <stdarg.h>.  This im-
-       plementation uses <stdarg.h> for both, because that header
-       is included in <curses.h>.
-
-
-
-

SEE ALSO

-       curses(3x), printf(3), vprintf(3)
-
-
-
-                                                        curs_printw(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_refresh.3x.html b/deps/ncurses-5.9/doc/html/man/curs_refresh.3x.html deleted file mode 100644 index 78988f5..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_refresh.3x.html +++ /dev/null @@ -1,170 +0,0 @@ - - - - -curs_refresh 3x - - - - -

curs_refresh 3x

-
-
-
-curs_refresh(3x)                                       curs_refresh(3x)
-
-
-
-
-
-

NAME

-       doupdate, redrawwin, refresh, wnoutrefresh, wredrawln,
-       wrefresh - refresh curses windows and lines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int refresh(void);
-       int wrefresh(WINDOW *win);
-       int wnoutrefresh(WINDOW *win);
-       int doupdate(void);
-       int redrawwin(WINDOW *win);
-       int wredrawln(WINDOW *win, int beg_line, int num_lines);
-
-
-
-

DESCRIPTION

-       The refresh and wrefresh  routines  (or  wnoutrefresh  and
-       doupdate)  must be called to get actual output to the ter-
-       minal, as other routines  merely  manipulate  data  struc-
-       tures.   The  routine  wrefresh copies the named window to
-       the physical terminal screen, taking into account what  is
-       already there to do optimizations.  The refresh routine is
-       the same, using stdscr  as  the  default  window.   Unless
-       leaveok  has been enabled, the physical cursor of the ter-
-       minal is left at the location of the cursor for that  win-
-       dow.
-
-       The  wnoutrefresh and doupdate routines allow multiple up-
-       dates with more efficiency than wrefresh alone.  In  addi-
-       tion  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.
-
-       The  routine wrefresh works by first calling wnoutrefresh,
-       which copies the named window to the virtual  screen,  and
-       then  calling  doupdate, which compares the virtual screen
-       to the physical screen and does the actual update.  If the
-       programmer wishes to output several windows at once, a se-
-       ries of calls to wrefresh results in alternating calls  to
-       wnoutrefresh  and doupdate, causing several bursts of out-
-       put to the screen.  By first calling wnoutrefresh for each
-       window, it is then possible to call doupdate once, result-
-       ing in only one burst of output, with fewer total  charac-
-       ters transmitted and less CPU time used.  If the win argu-
-       ment to wrefresh is the global variable curscr, the screen
-       is immediately cleared and repainted from scratch.
-
-       The phrase "copies the named window to the virtual screen"
-       above is ambiguous.  What actually  happens  is  that  all
-       touched  (changed)  lines  in the window are copied to the
-       virtual screen.  This affects programs that  use  overlap-
-       ping  windows;  it  means that if two windows overlap, you
-       can refresh them in either order and  the  overlap  region
-       will be modified only when it is explicitly changed.  (But
-       see the section on PORTABILITY below for a  warning  about
-       exploiting this behavior.)
-
-       The wredrawln routine indicates to curses that some screen
-       lines are corrupted and should be thrown away before  any-
-       thing  is  written  over  them.   It touches the indicated
-       lines (marking them  changed).   The  routine  redrawwin()
-       touches the entire window.
-
-
-
-

RETURN VALUE

-       Routines  that  return an integer return ERR upon failure,
-       and OK (SVr4 only specifies "an integer value  other  than
-       ERR") upon successful completion.
-
-       X/Open  does not define any error conditions.  In this im-
-       plementation
-
-              wnoutrefresh
-                   returns an error  if  the  window  pointer  is
-                   null, or if the window is really a pad.
-
-              wredrawln
-                   returns  an  error  if  the associated call to
-                   touchln returns an error.
-
-
-
-

NOTES

-       Note that refresh and redrawwin may be macros.
-
-
-
-

PORTABILITY

-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.
-
-       Whether  wnoutrefresh()  copies  to the virtual screen the
-       entire contents of a window or just its  changed  portions
-       has never been well-documented in historic curses versions
-       (including SVr4).  It might be unwise to  rely  on  either
-       behavior  in  programs  that  might have to be linked with
-       other curses implementations.  Instead, you can do an  ex-
-       plicit  touchwin() before the wnoutrefresh() call to guar-
-       antee an entire-contents copy anywhere.
-
-
-
-

SEE ALSO

-       curses(3x), curs_outopts(3x) curs_variables(3x).
-
-
-
-                                                       curs_refresh(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_scanw.3x.html b/deps/ncurses-5.9/doc/html/man/curs_scanw.3x.html deleted file mode 100644 index 40cb952..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_scanw.3x.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -curs_scanw 3x - - - - -

curs_scanw 3x

-
-
-
-curs_scanw(3x)                                           curs_scanw(3x)
-
-
-
-
-
-

NAME

-       scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw - con-
-       vert formatted input from a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int scanw(char *fmt, ...);
-       int wscanw(WINDOW *win, char *fmt, ...);
-       int mvscanw(int y, int x, char *fmt, ...);
-       int mvwscanw(WINDOW *win, int y, int x, char *fmt, ...);
-       int vw_scanw(WINDOW *win, char *fmt, va_list varglist);
-       int vwscanw(WINDOW *win, char *fmt, va_list varglist);
-
-
-
-

DESCRIPTION

-       The scanw, wscanw and mvscanw routines  are  analogous  to
-       scanf  [see scanf(3)].  The effect of these routines is as
-       though wgetstr were called on the window, and the  result-
-       ing line used as input for sscanf(3).  Fields which do not
-       map to a variable in the fmt field are lost.
-
-       The vwscanw and vw_scanw routines are analogous to vscanf.
-       They perform a wscanw using a variable argument list.  The
-       third argument is a va_list, a pointer to a list of  argu-
-       ments, as defined in <stdarg.h>.
-
-
-
-

RETURN VALUE

-       vwscanw returns ERR on failure and an integer equal to the
-       number of fields scanned on success.
-
-       Applications may use the  return  value  from  the  scanw,
-       wscanw,  mvscanw  and  mvwscanw  routines to determine the
-       number of fields which were mapped in the call.
-
-       Functions with a "mv" prefix first perform a cursor  move-
-       ment  using  wmove, and return an error if the position is
-       outside the window, or if the window pointer is null.
-
-
-
-

PORTABILITY

-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.   The  function  vwscanw is marked TO BE WITHDRAWN,
-       and is to be replaced by a  function  vw_scanw  using  the
-       <stdarg.h> interface.  The Single Unix Specification, Ver-
-       sion 2 states that vw_scanw  is preferred to vwscanw since
-       the latter requires including <varargs.h>, which cannot be
-       used in the same file as <stdarg.h>.  This  implementation
-       uses  <stdarg.h> for both, because that header is included
-       in <curses.h>.
-
-       Both XSI and The  Single  Unix  Specification,  Version  2
-       state  that  these  functions return ERR or OK.  Since the
-       underlying scanf can return the number of  items  scanned,
-       and the SVr4 code was documented to use this feature, this
-       is probably an editing error which was introduced in  XSI,
-       rather  than  being done intentionally.  Portable applica-
-       tions should only test if the return value is  ERR,  since
-       the  OK value (zero) is likely to be misleading.  One pos-
-       sible way to get useful results would be  to  use  a  "%n"
-       conversion  at the end of the format string to ensure that
-       something was processed.
-
-
-
-

SEE ALSO

-       curses(3x), curs_getstr(3x), curs_printw(3x), scanf(3)
-
-
-
-                                                         curs_scanw(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_scr_dump.3x.html b/deps/ncurses-5.9/doc/html/man/curs_scr_dump.3x.html deleted file mode 100644 index d2931e1..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_scr_dump.3x.html +++ /dev/null @@ -1,137 +0,0 @@ - - - - -curs_scr_dump 3x - - - - -

curs_scr_dump 3x

-
-
-
-curs_scr_dump(3x)                                     curs_scr_dump(3x)
-
-
-
-
-
-

NAME

-       scr_dump, scr_restore, scr_init, scr_set - read (write) a
-       curses screen from (to) a file
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int scr_dump(const char *filename);
-       int scr_restore(const char *filename);
-       int scr_init(const char *filename);
-       int scr_set(const char *filename);
-
-
-
-

DESCRIPTION

-       The scr_dump routine dumps the  current  contents  of  the
-       virtual screen to the file filename.
-
-       The  scr_restore  routine  sets  the virtual screen to the
-       contents of filename, which must have been  written  using
-       scr_dump.   The  next call to doupdate restores the screen
-       to the way it looked in the dump file.
-
-       The scr_init routine reads in the contents of filename and
-       uses  them  to initialize the curses data structures about
-       what the terminal currently has on its screen.  If the da-
-       ta is determined to be valid, curses bases its next update
-       of the screen on this information rather than clearing the
-       screen  and starting from scratch.  scr_init is used after
-       initscr or a system call to share the screen with  another
-       process  which  has done a scr_dump after its endwin call.
-       The data is declared invalid if the terminfo  capabilities
-       rmcup and nrrmc exist; also if the terminal has been writ-
-       ten to since the preceding scr_dump call.
-
-       The scr_set routine is a combination  of  scr_restore  and
-       scr_init.   It  tells  the program that the information in
-       filename 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.
-
-       To read (write) a window from (to) a file, use the  getwin
-       and putwin routines [see curs_util(3x)].
-
-
-
-

RETURN VALUE

-       All  routines  return  the integer ERR upon failure and OK
-       upon success.
-
-       X/Open defines no error conditions.  In  this  implementa-
-       tion,  each  will  return  an  error if the file cannot be
-       opened.
-
-
-
-

NOTES

-       Note  that  scr_init,  scr_set,  and  scr_restore  may  be
-       macros.
-
-
-
-

PORTABILITY

-       The  XSI  Curses  standard, Issue 4, describes these func-
-       tions (adding the const qualifiers).
-
-       The SVr4 docs merely say under scr_init that the dump data
-       is  also  considered invalid "if the time-stamp of the tty
-       is old" but do not define "old".
-
-
-
-

SEE ALSO

-       curses(3x),      curs_initscr(3x),       curs_refresh(3x),
-       curs_util(3x), system(3)
-
-
-
-                                                      curs_scr_dump(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_scroll.3x.html b/deps/ncurses-5.9/doc/html/man/curs_scroll.3x.html deleted file mode 100644 index 856b9f5..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_scroll.3x.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -curs_scroll 3x - - - - -

curs_scroll 3x

-
-
-
-curs_scroll(3x)                                         curs_scroll(3x)
-
-
-
-
-
-

NAME

-       scroll, scrl, wscrl - scroll a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int scroll(WINDOW *win);
-       int scrl(int n);
-       int wscrl(WINDOW *win, int n);
-
-
-
-

DESCRIPTION

-       The  scroll  routine scrolls the window up one line.  This
-       involves moving the lines in the  window  data  structure.
-       As  an optimization, if the scrolling region of the window
-       is the entire screen, the physical screen may be  scrolled
-       at the same time.
-
-       For  positive  n,  the  scrl and wscrl routines scroll the
-       window up n lines (line i+n becomes i);  otherwise  scroll
-       the  window  down n lines.  This involves moving the lines
-       in the window character image structure.  The current cur-
-       sor position is not changed.
-
-       For these functions to work, scrolling must be enabled via
-       scrollok.
-
-
-
-

RETURN VALUE

-       These routines return ERR upon failure, and OK (SVr4  only
-       specifies "an integer value other than ERR") upon success-
-       ful completion.
-
-       X/Open defines no error conditions.
-
-       This implementation returns an error if the window pointer
-       is  null,  or  if  scrolling is not enabled in the window,
-       e.g., with scrollok.
-
-
-
-

NOTES

-       Note that scrl and scroll may be macros.
-
-       The SVr4 documentation says that the optimization of phys-
-       ically  scrolling  immediately if the scroll region is the
-       entire screen "is"  performed,  not  "may  be"  performed.
-       This  implementation  deliberately does not guarantee that
-       this will occur, to leave open the possibility of  smarter
-       optimization  of  multiple  scroll actions on the next up-
-       date.
-
-       Neither the SVr4 nor the XSI documentation specify whether
-       the current attribute or current color-pair of blanks gen-
-       erated by the scroll function is zeroed.  Under  this  im-
-       plementation it is.
-
-
-
-

PORTABILITY

-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.
-
-
-
-

SEE ALSO

-       curses(3x), curs_outopts(3x)
-
-
-
-                                                        curs_scroll(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_slk.3x.html b/deps/ncurses-5.9/doc/html/man/curs_slk.3x.html deleted file mode 100644 index 54e4f7a..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_slk.3x.html +++ /dev/null @@ -1,235 +0,0 @@ - - - - -curs_slk 3x - - - - -

curs_slk 3x

-
-
-
-curs_slk(3x)                                               curs_slk(3x)
-
-
-
-
-
-

NAME

-       slk_init, slk_set, slk_wset, slk_refresh, slk_noutrefresh,
-       slk_label, slk_clear, slk_restore, slk_touch, slk_attron,
-       slk_attrset, slk_attroff, slk_attr_on, slk_attr_set,
-       slk_attr_off, slk_attr, slk_color - curses soft label
-       routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int slk_init(int fmt);
-       int slk_set(int labnum, const char *label, int fmt);
-       int slk_refresh(void);
-       int slk_noutrefresh(void);
-       char *slk_label(int labnum);
-       int slk_clear(void);
-       int slk_restore(void);
-       int slk_touch(void);
-       int slk_attron(const chtype attrs);
-       int slk_attroff(const chtype attrs);
-       int slk_attrset(const chtype attrs);
-       int slk_attr_on(attr_t attrs, void* opts);
-       int slk_attr_off(const attr_t attrs, void * opts);
-       int  slk_attr_set(const  attr_t  attrs,  short color_pair,
-       void* opts);
-       attr_t slk_attr(void);
-       int slk_color(short color_pair);
-       int slk_wset(int labnum, const wchar_t *label, int fmt);
-
-
-
-

DESCRIPTION

-       The slk* functions manipulate the set of soft function-key
-       labels  that exist on many terminals.  For those terminals
-       that do not have soft labels, curses takes over the bottom
-       line  of stdscr, reducing the size of stdscr and the vari-
-       able LINES.  curses standardizes on eight labels of up  to
-       eight  characters  each.  In addition to this, the ncurses
-       implementation supports a mode where it simulates  12  la-
-       bels  of  up  to five characters each.  This is useful for
-       today's PC-like enduser devices.  ncurses  simulates  this
-       mode  by  taking over up to two lines at the bottom of the
-       screen; it does not try to use any  hardware  support  for
-       this mode.
-
-       The  slk_init  routine  must  be  called before initscr or
-       newterm is called.  If initscr eventually uses a line from
-       stdscr to emulate the soft labels, then fmt determines how
-       the labels are arranged on the screen:
-
-              0  indicates a 3-2-3 arrangement of the labels.
-
-              1  indicates a 4-4 arrangement
-
-              2  indicates the PC-like 4-4-4 mode.
-
-              3  is again the PC-like 4-4-4 mode, but in addition
-                 an  index line is generated, helping the user to
-                 identify the key numbers easily.
-
-       The slk_set routine (and  the  slk_wset  routine  for  the
-       wide-character library) has three parameters:
-
-              labnum
-                   is  the  label number, from 1 to 8 (12 for fmt
-                   in slk_init is 2 or 3);
-
-              label
-                   is be the string to put on the  label,  up  to
-                   eight  (five  for  fmt  in slk_init is 2 or 3)
-                   characters in length.  A null string or a null
-                   pointer sets up a blank label.
-
-              fmt  is  either  0, 1, or 2, indicating whether the
-                   label is to be  left-justified,  centered,  or
-                   right-justified,  respectively, within the la-
-                   bel.
-
-       The slk_refresh and slk_noutrefresh routines correspond to
-       the wrefresh and wnoutrefresh routines.
-
-       The  slk_label routine returns the current label for label
-       number labnum, with leading and trailing blanks stripped.
-
-       The slk_clear routine clears  the  soft  labels  from  the
-       screen.
-
-       The  slk_restore  routine  restores the soft labels to the
-       screen after a slk_clear has been performed.
-
-       The slk_touch routine forces all the  soft  labels  to  be
-       output the next time a slk_noutrefresh is performed.
-
-       The slk_attron, slk_attrset, slk_attroff and slk_attr rou-
-       tines correspond to attron, attrset, attroff and attr_get.
-       They  have  an effect only if soft labels are simulated on
-       the bottom line of the screen.  The default highlight  for
-       soft keys is A_STANDOUT (as in System V curses, which does
-       not document this fact).
-
-       The slk_color routine corresponds to color_set.  It has an
-       effect  only  if  soft  labels are simulated on the bottom
-       line of the screen.
-
-
-
-

RETURN VALUE

-       These routines return ERR upon failure and OK (SVr4 speci-
-       fies only "an integer value other than ERR") upon success-
-       ful completion.
-
-       X/Open defines no error conditions.  In  this  implementa-
-       tion
-
-              slk_attr
-                   returns the attribute used for the soft keys.
-
-              slk_attroff, slk_attron, slk_clear,
-              slk_noutrefresh, slk_refresh, slk_touch
-                   return an error if the terminal or  the  soft-
-                   keys were not initialized.
-
-              slk_attrset
-                   returns  an error if the terminal or the soft-
-                   keys were not initialized.
-
-              slk_attr_set
-                   returns an error if the terminal or the  soft-
-                   keys  were  not initialized, or the color pair
-                   is outside the range 0..COLOR_PAIRS-1, or opts
-                   is not null.
-
-              slk_color
-                   returns  an error if the terminal or the soft-
-                   keys were not initialized, or the  color  pair
-                   is outside the range 0..COLOR_PAIRS-1.
-
-              slk_init
-                   returns  an  error  if the format parameter is
-                   outside the range 0..3.
-
-              slk_label
-                   returns NULL on error.
-
-              slk_set
-                   returns an error if the terminal or the  soft-
-                   keys  were  not initialized, or the labnum pa-
-                   rameter is outside the range of label  counts,
-                   or  if  the  format  parameter  is outside the
-                   range 0..2, or if memory for the labels cannot
-                   be allocated.
-
-
-
-

NOTES

-       Most applications would use slk_noutrefresh because a wre-
-       fresh is likely to follow soon.
-
-
-
-

PORTABILITY

-       The XSI Curses standard, Issue 4,  describes  these  func-
-       tions.   It changes the argument type of the attribute-ma-
-       nipulation functions slk_attron, slk_attroff,  slk_attrset
-       to be attr_t, and adds const qualifiers.  The format codes
-       2 and 3 for slk_init() and the function slk_attr are  spe-
-       cific to ncurses.
-
-
-
-

SEE ALSO

-       curses(3x),   curs_attr(3x),   curs_initscr(3x),  curs_re-
-       fresh(3x), curs_variables(3x).
-
-
-
-                                                           curs_slk(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_sp_funcs.3x.html b/deps/ncurses-5.9/doc/html/man/curs_sp_funcs.3x.html deleted file mode 100644 index a11947a..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_sp_funcs.3x.html +++ /dev/null @@ -1,285 +0,0 @@ - - - - -curs_sp_funcs 3x - - - - -

curs_sp_funcs 3x

-
-
-
-curs_sp_funcs(3x)                                     curs_sp_funcs(3x)
-
-
-
-
-
-

NAME

-       new_prescr - curses screen-pointer extension
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int assume_default_colors_sp(SCREEN*, int, int);
-       int baudrate_sp(SCREEN*);
-       int beep_sp(SCREEN*);
-       bool can_change_color_sp(SCREEN*);
-       int cbreak_sp(SCREEN*);
-       int color_content_sp(SCREEN*, short, short*, short*, short*);
-       int curs_set_sp(SCREEN*, int);
-       int define_key_sp(SCREEN*, const char *, int);
-       int def_prog_mode_sp(SCREEN*);
-       int def_shell_mode_sp(SCREEN*);
-       int delay_output_sp(SCREEN*, int);
-       int doupdate_sp(SCREEN*);
-       int echo_sp(SCREEN*);
-       int endwin_sp(SCREEN*);
-       int erasechar_sp(SCREEN*);
-       int filter_sp(SCREEN*);
-       int flash_sp(SCREEN*);
-       int flushinp_sp(SCREEN*);
-       int get_escdelay_sp(SCREEN*);
-       int getmouse_sp(SCREEN*, MEVENT*);
-       WINDOW* getwin_sp(SCREEN*, FILE*);
-       int halfdelay_sp(SCREEN*);
-       bool has_colors_sp(SCREEN*);
-       bool has_ic_sp(SCREEN*);
-       bool has_il_sp(SCREEN*);
-       int has_key_sp(SCREEN*, int);
-       bool has_mouse_sp(SCREEN*);
-       int init_color_sp(SCREEN*, short, short, short, short);
-       int init_pair_sp(SCREEN*, short, short, short);
-       int intrflush_sp(SCREEN*, WINDOW*, bool);
-       bool isendwin_sp(SCREEN*);
-       bool is_term_resized_sp(SCREEN*, int, int);
-       char* keybound_sp(SCREEN*, int, int);
-       int key_defined_sp(SCREEN*, const char *);
-       NCURSES_CONST char * keyname_sp(SCREEN*, int);
-       int keyok_sp(SCREEN*, int, bool);
-       char killchar_sp(SCREEN*);
-       int mcprint_sp(SCREEN*, char *, int);
-       int mouseinterval_sp(SCREEN*, int);
-       mmask_t mousemask_sp(SCREEN*, mmask_t, mmask_t *);
-       int mvcur_sp(SCREEN*, int, int, int, int);
-       int napms_sp(SCREEN*, int);
-       WINDOW* newpad_sp(SCREEN*, int, int);
-       SCREEN* new_prescr(void);
-       SCREEN* newterm_sp(SCREEN*, NCURSES_CONST char *, FILE *, FILE *);
-       WINDOW* newwin_sp(SCREEN*, int, int, int, int);
-       int nl_sp(SCREEN*);
-       int nocbreak_sp(SCREEN*);
-       int noecho_sp(SCREEN*);
-       int nofilter_sp(SCREEN*);
-       int nonl_sp(SCREEN*);
-       void noqiflush_sp(SCREEN*);
-       int noraw_sp(SCREEN*);
-       int pair_content_sp(SCREEN*, short, short*, short*);
-       void qiflush_sp(SCREEN*);
-       int raw_sp(SCREEN*);
-       int reset_prog_mode_sp(SCREEN*);
-       int reset_shell_mode_sp(SCREEN*);
-       int resetty_sp(SCREEN*);
-       int resize_term_sp(SCREEN*, int, int);
-       int resizeterm_sp(SCREEN*, int, int);
-       int restartterm_sp(SCREEN*, NCURSES_CONST char*, int, int *);
-       int ripoffline_sp(SCREEN*, int, int (*)(WINDOW*, int));
-       int savetty_sp(SCREEN*);
-       int scr_init_sp(SCREEN*, const char *);
-       int scr_restore_sp(SCREEN*, const char *);
-       int scr_set_sp(SCREEN*, const char *);
-       TERMINAL* set_curterm_sp(SCREEN*, TERMINAL*);
-       int set_escdelay_sp(SCREEN*, int);
-       int set_tabsize_sp(SCREEN*, int);
-       int slk_attroff_sp(SCREEN*, const chtype);
-       int slk_attron_sp(SCREEN*, const chtype);
-       int slk_attr_set_sp(SCREEN*, const attr_t, short, void*);
-       int slk_attrset_sp(SCREEN*, const chtype);
-       int slk_attr_sp((SCREEN*);
-       int slk_clear_sp(SCREEN*);
-       int slk_color_sp(SCREEN*, short);
-       int slk_init_sp(SCREEN*, int);
-       int slk_label_sp(SCREEN*, int);
-       int slk_noutrefresh_sp(SCREEN*);
-       int slk_refresh_sp(SCREEN*);
-       int slk_restore_sp(SCREEN*);
-       int slk_set_sp(SCREEN*, int, const char *, int);
-       int slk_touch_sp(SCREEN*);
-       int start_color_sp(SCREEN*);
-       attr_t term_attrs_sp(SCREEN*);
-       chtype termattrs_sp(SCREEN*);
-       char* termname_sp(SCREEN*);
-       int typeahead_sp(SCREEN*, int);
-       NCURSES_CONST char* unctrl_sp(SCREEN*, chtype);
-       int ungetch_sp(SCREEN*, int);
-       int ungetmouse_sp(SCREEN*,MEVENT *);
-       int unget_wch_sp(SCREEN*, const wchar_t);
-       int use_default_colors_sp(SCREEN*);
-       void use_env_sp(SCREEN*, bool);
-       int use_legacy_coding_sp(SCREEN*, int);
-       int vid_attr_sp(SCREEN*, attr_t, short, void *);
-       int vidattr_sp(SCREEN*, chtype);
-       int vid_puts_sp(SCREEN*, attr_t, short, void *, NCURSES_SP_OUTC);
-       int vidputs_sp(SCREEN*, chtype, NCURSES_SP_OUTC);
-       wchar_t* wunctrl_sp(SCREEN*, cchar_t *);
-
-       #include <form.h>
-
-       int new_form_sp(SCREEN*, FIELD **);
-
-       #include <menu.h>
-
-       int new_menu_sp(SCREEN*, ITEM **);
-
-       #include <panel.h>
-
-       int ceiling_panel(SCREEN*);
-       PANEL* ground_panel(SCREEN*);
-       int update_panels_sp(SCREEN*);
-
-       #include <term.h>
-
-       int del_curterm_sp(SCREEN*, TERMINAL *);
-       int putp_sp(SCREEN*, const char *);
-       int tgetflag_sp(SCREEN*, char *, const char *);
-       int tgetent_sp(SCREEN*, char *, const char *);
-       int tgetnum_sp(SCREEN*, NCURSES_CONST char *);
-       char* tgetstr_sp(SCREEN*, NCURSES_CONST char *, char **);
-       int tigetflag_sp(SCREEN*, NCURSES_CONST char *);
-       int tigetnum_sp(SCREEN*, NCURSES_CONST char *);
-       char* tigetstr_sp(SCREEN*, NCURSES_CONST char *);
-       int tputs_sp(SCREEN*, const char *, int, NCURSES_SP_OUTC);
-
-
-
-

DESCRIPTION

-       This  implementation can be configured to provide a set of
-       functions which improve the  ability  to  manage  multiple
-       screens.  This feature can be added to any of the configu-
-       rations supported by  ncurses;  it  adds  new  entrypoints
-       without  changing the meaning of any of the existing ones.
-
-
-   IMPROVED FUNCTIONS
-       Most of the functions are new versions of  existing  func-
-       tions.  A parameter is added at the front of the parameter
-       list.  It is a SCREEN pointer.
-
-       The existing functions all use the current  screen,  which
-       is  a  static  variable.   The  extended functions use the
-       specified screen, thereby reducing the number of variables
-       which must be modified to update multiple screens.
-
-   NEW FUNCTIONS
-       Here are the new functions:
-
-       ceiling_panel
-            this  returns  a  pointer to the topmost panel in the
-            given screen.
-
-       ground_panel
-            this returns a pointer to the  lowest  panel  in  the
-            given screen.
-
-       new_prescr
-            when  creating  a new screen, the library uses static
-            variables  which   have   been   preset,   e.g.,   by
-            use_env(3x), filter(3x), etc.  With the screen-point-
-            er extension, there are situations where it must cre-
-            ate  a  current  screen before the unextended library
-            does.  The new_prescr function is used internally  to
-            handle these cases.  It is also provided as an entry-
-            point to allow applications to customize the  library
-            initialization.
-
-
-
-

NOTES

-       This extension introduces some new names:
-
-       NCURSES_SP_FUNCS
-            This  is  set  to the library patch-level number.  In
-            the unextended library, this is zero (0), to make  it
-            useful for checking if the extension is provided.
-
-       NCURSES_SP_NAME
-            The  new  functions  are named using the macro NCURS-
-            ES_SP_NAME, which hides  the  actual  implementation.
-            Currently this adds a "_sp" suffix to the name of the
-            unextended function.  This manual  page  indexes  the
-            extensions showing the full name.  However the proper
-            usage of these functions uses the macro,  to  provide
-            for the possibility of changing the naming convention
-            for specific library configurations.
-
-       NCURSES_SP_OUTC
-            This is a new function-pointer type  to  use  in  the
-            screen-pointer  functions  where  an  NCURSES_OUTC is
-            used in the unextended library.
-
-       NCURSES_OUTC
-            This is a function-pointer type used  for  the  cases
-            where  a  function  passes  characters  to the output
-            stream, e.g., vidputs(3x).
-
-
-
-
-

PORTABILITY

-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on  ncurses  ex-
-       tensions be conditioned using NCURSES_SP_FUNCS.
-
-
-
-

SEE ALSO

-       curses(3x), curs_opaque(3x), curs_threads(3x).
-
-
-
-                                                      curs_sp_funcs(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_termattrs.3x.html b/deps/ncurses-5.9/doc/html/man/curs_termattrs.3x.html deleted file mode 100644 index 960cc2a..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_termattrs.3x.html +++ /dev/null @@ -1,161 +0,0 @@ - - - - -curs_termattrs 3x - - - - -

curs_termattrs 3x

-
-
-
-curs_termattrs(3x)                                   curs_termattrs(3x)
-
-
-
-
-
-

NAME

-       baudrate, erasechar, erasewchar, has_ic, has_il, killchar,
-       killwchar, longname,  term_attrs,  termattrs,  termname  -
-       curses environment query routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int baudrate(void);
-       char erasechar(void);
-       int erasewchar(wchar_t *ch);
-       bool has_ic(void);
-       bool has_il(void);
-       char killchar(void);
-       int killwchar(wchar_t *ch);
-       char *longname(void);
-       attr_t term_attrs(void);
-       chtype termattrs(void);
-       char *termname(void);
-
-
-
-

DESCRIPTION

-       The  baudrate routine returns the output speed of the ter-
-       minal.  The number returned is in  bits  per  second,  for
-       example 9600, and is an integer.
-
-       The  erasechar  routine  returns  the user's current erase
-       character.
-
-       The erasewchar routine stores the current erase  character
-       in  the  location referenced by ch.  If no erase character
-       has been defined, the routine fails and the location  ref-
-       erenced by ch is not changed.
-
-       The has_ic routine is true if the terminal has insert- and
-       delete- character capabilities.
-
-       The has_il 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
-       scrollok.
-
-       The killchar routine returns the user's current line  kill
-       character.
-
-       The killwchar routine stores the current line-kill charac-
-       ter in the location referenced by  ch.   If  no  line-kill
-       character  has  been  defined,  the  routine fails and the
-       location referenced by ch is not changed.
-
-       The longname 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 charac-
-       ters.   It  is  defined  only after the call to initscr or
-       newterm.  The area is overwritten by each call to  newterm
-       and  is  not  restored by set_term, so the value should be
-       saved between calls to newterm if longname is going to  be
-       used with multiple terminals.
-
-       If  a  given  terminal  does not support a video attribute
-       that an application program is trying to use,  curses  may
-       substitute  a  different  video  attribute  for  it.   The
-       termattrs and term_attrs functions return a logical OR  of
-       all  video  attributes  supported by the terminal using A_
-       and WA_ constants respectively.  This information is  use-
-       ful  when a curses program needs complete control over the
-       appearance of the screen.
-
-       The termname routine returns the  terminal  name  used  by
-       setupterm.
-
-
-
-

RETURN VALUE

-       longname and termname return NULL on error.
-
-       Routines  that  return  an integer return ERR upon failure
-       and OK (SVr4 only specifies "an integer value  other  than
-       ERR") upon successful completion.
-
-
-
-

NOTES

-       Note that termattrs may be a macro.
-
-
-
-

PORTABILITY

-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.  It changes the return type of termattrs to the new
-       type  attr_t.  Most versions of curses truncate the result
-       returned by termname to 14 characters.
-
-
-
-

SEE ALSO

-       curses(3x), curs_initscr(3x), curs_outopts(3x)
-
-
-
-                                                     curs_termattrs(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_termcap.3x.html b/deps/ncurses-5.9/doc/html/man/curs_termcap.3x.html deleted file mode 100644 index f62fc0c..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_termcap.3x.html +++ /dev/null @@ -1,191 +0,0 @@ - - - - -curs_termcap 3x - - - - -

curs_termcap 3x

-
-
-
-curs_termcap(3x)                                       curs_termcap(3x)
-
-
-
-
-
-

NAME

-       PC, UP, BC, ospeed, tgetent, tgetflag, tgetnum, tgetstr,
-       tgoto, tputs - direct curses interface to the terminfo
-       capability database
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-       #include <term.h>
-
-       extern char PC;
-       extern char * UP;
-       extern char * BC;
-       extern short ospeed;
-
-       int tgetent(char *bp, const char *name);
-       int tgetflag(char *id);
-       int tgetnum(char *id);
-       char *tgetstr(char *id, char **area);
-       char *tgoto(const char *cap, int col, int row);
-       int tputs(const char *str, int affcnt, int (*putc)(int));
-
-
-
-

DESCRIPTION

-       These  routines  are included as a conversion aid for pro-
-       grams that use the termcap library.  Their parameters  are
-       the  same and the routines are emulated using the terminfo
-       database.  Thus, they can only be used to query the  capa-
-       bilities  of  entries  for which a terminfo entry has been
-       compiled.
-
-       The tgetent routine loads the entry for name.  It  returns
-       1  on  success, 0 if there is no such entry, and -1 if the
-       terminfo database could not be found.  The  emulation  ig-
-       nores the buffer pointer bp.
-
-       The tgetflag routine gets the boolean entry for id, or ze-
-       ro if it is not available.
-
-       The tgetnum routine gets the numeric entry for id,  or  -1
-       if it is not available.
-
-       The  tgetstr  routine  returns the string entry for id, or
-       zero if it is not available.  Use tputs to output the  re-
-       turned  string.   The  return value will also be copied to
-       the buffer pointed to by area, and the area value will  be
-       updated to point past the null ending this value.
-
-       Only the first two characters of the id parameter of tget-
-       flag, tgetnum and tgetstr are compared in lookups.
-
-       The tgoto routine instantiates  the  parameters  into  the
-       given  capability.   The output from this routine is to be
-       passed to tputs.
-
-       The tputs routine is described  on  the  curs_terminfo(3x)
-       manual page.  It can retrieve capabilities by either term-
-       cap or terminfo name.
-
-       The variables PC, UP and BC are set by tgetent to the ter-
-       minfo   entry's   data   for   pad_char,   cursor_up   and
-       backspace_if_not_bs, respectively.   UP  is  not  used  by
-       ncurses.  PC is used in the tdelay_output function.  BC is
-       used in the tgoto emulation.  The variable ospeed  is  set
-       by ncurses in a system-specific coding to reflect the ter-
-       minal speed.
-
-
-
-

RETURN VALUE

-       Except where explicitly noted, routines that return an in-
-       teger  return ERR upon failure and OK (SVr4 only specifies
-       "an integer value other than ERR") upon successful comple-
-       tion.
-
-       Routines that return pointers return NULL on error.
-
-
-
-

BUGS

-       If you call tgetstr to fetch ca or any other parameterized
-       string, be aware that it will be returned in terminfo  no-
-       tation, not the older and not-quite-compatible termcap no-
-       tation.  This will not cause problems if all you  do  with
-       it  is  call  tgoto  or tparm, which both expand terminfo-
-       style strings as terminfo.  (The tgoto function,  if  con-
-       figured  to  support  termcap, will check if the string is
-       indeed terminfo-style by looking for  "%p"  parameters  or
-       "$<..>"  delays,  and invoke a termcap-style parser if the
-       string does not appear to be terminfo).
-
-       Because terminfo conventions for representing  padding  in
-       string  capabilities  differ  from termcap's, tputs("50");
-       will put out a literal "50" rather than  busy-waiting  for
-       50 milliseconds.  Cope with it.
-
-       Note  that termcap has nothing analogous to terminfo's sgr
-       string.  One consequence of this is that termcap  applica-
-       tions  assume me (terminfo sgr0) does not reset the alter-
-       nate character set.  This implementation checks  for,  and
-       modifies the data shown to the termcap interface to accom-
-       modate termcap's limitation in this respect.
-
-
-
-

PORTABILITY

-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.   However,  they are marked TO BE WITHDRAWN and may
-       be removed in future versions.
-
-       Neither the XSI Curses standard nor  the  SVr4  man  pages
-       documented  the return values of tgetent correctly, though
-       all three were in fact returned ever since SVr1.  In  par-
-       ticular,  an  omission in the XSI Curses documentation has
-       been misinterpreted to mean that  tgetent  returns  OK  or
-       ERR.  Because the purpose of these functions is to provide
-       compatibility with the termcap library, that is  a  defect
-       in XCurses, Issue 4, Version 2 rather than in ncurses.
-
-       External  variables  are  provided  for support of certain
-       termcap applications.  However, termcap applications'  use
-       of those variables is poorly documented, e.g., not distin-
-       guishing between input and output.   In  particular,  some
-       applications are reported to declare and/or modify ospeed.
-
-
-
-

SEE ALSO

-       curses(3x), terminfo(5), term_variables(3x), putc(3).
-
-
-
-                                                       curs_termcap(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_terminfo.3x.html b/deps/ncurses-5.9/doc/html/man/curs_terminfo.3x.html deleted file mode 100644 index 9a640e9..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_terminfo.3x.html +++ /dev/null @@ -1,363 +0,0 @@ - - - - -curs_terminfo 3x - - - - -

curs_terminfo 3x

-
-
-
-curs_terminfo(3x)                                     curs_terminfo(3x)
-
-
-
-
-
-

NAME

-       del_curterm, mvcur, putp, restartterm, set_curterm,
-       setterm, setupterm, tigetflag, tigetnum, tigetstr, tiparm,
-       tparm, tputs, vid_attr, vid_puts, vidattr, vidputs -
-       curses interfaces to terminfo database
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-       #include <term.h>
-
-       int setupterm(char *term, int fildes, int *errret);
-       int setterm(char *term);
-       TERMINAL *set_curterm(TERMINAL *nterm);
-       int del_curterm(TERMINAL *oterm);
-       int restartterm(char *term, int fildes, int *errret);
-       char *tparm(char *str, ...);
-       int tputs(const char *str, int affcnt, int (*putc)(int));
-       int putp(const char *str);
-       int vidputs(chtype attrs, int (*putc)(int));
-       int vidattr(chtype attrs);
-       int vid_puts(attr_t attrs, short pair, void *opts, int (*putc)(char));
-       int vid_attr(attr_t attrs, short pair, void *opts);
-       int mvcur(int oldrow, int oldcol, int newrow, int newcol);
-       int tigetflag(char *capname);
-       int tigetnum(char *capname);
-       char *tigetstr(char *capname);
-       char *tiparm(const char *str, ...);
-
-
-
-

DESCRIPTION

-       These low-level routines must be called by  programs  that
-       have to deal directly with the terminfo database to handle
-       certain terminal capabilities, such as  programming  func-
-       tion  keys.   For all other functionality, curses routines
-       are more suitable and their use is recommended.
-
-       Initially, setupterm should  be  called.   Note  that  se-
-       tupterm  is  automatically  called by initscr and newterm.
-       This  defines  the  set  of  terminal-dependent  variables
-       [listed in terminfo(5)].  The terminfo variables lines and
-       columns are initialized by setupterm as follows:
-
-              If use_env(FALSE) has been called, values for lines
-              and columns specified in terminfo are used.
-
-              Otherwise,  if  the environment variables LINES and
-              COLUMNS exist, their values are used.  If these en-
-              vironment 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 lines and columns  speci-
-              fied in the terminfo database are used.
-
-       The  header  files  curses.h and term.h should be included
-       (in this order) to get the definitions for these  strings,
-       numbers,  and  flags.   Parameterized  strings  should  be
-       passed through tparm to instantiate  them.   All  terminfo
-       strings  [including the output of tparm] should be printed
-       with tputs or putp.  Call the reset_shell_mode to  restore
-       the  tty modes before exiting [see curs_kernel(3x)].  Pro-
-       grams  which  use  cursor  addressing  should  output  en-
-       ter_ca_mode  upon  startup  and should output exit_ca_mode
-       before exiting.  Programs desiring  shell  escapes  should
-       call
-
-       reset_shell_mode  and output exit_ca_mode before the shell
-       is called and should output  enter_ca_mode  and  call  re-
-       set_prog_mode after returning from the shell.
-
-       The setupterm routine reads in the terminfo database, ini-
-       tializing the terminfo structures, but does not set up the
-       output virtualization structures used by curses.  The ter-
-       minal type is the character string term; if term is  null,
-       the  environment  variable TERM is used.  All output is to
-       file descriptor fildes which is  initialized  for  output.
-       If  errret  is  not null, then setupterm returns OK or ERR
-       and stores a status value in the integer pointed to by er-
-       rret.   A  return value of OK combined with status of 1 in
-       errret is normal.  If ERR is returned, examine errret:
-
-              1    means that the terminal is hardcopy, cannot be
-                   used for curses applications.
-
-              0    means that the terminal could not be found, or
-                   that it is a generic type, having  too  little
-                   information for curses applications to run.
-
-              -1   means  that the terminfo database could not be
-                   found.
-
-       If errret is null, setupterm prints an error message  upon
-       finding an error and exits.  Thus, the simplest call is:
-
-             setupterm((char *)0, 1, (int *)0);,
-
-       which  uses  all the defaults and sends the output to std-
-       out.
-
-       The setterm routine is being replaced by  setupterm.   The
-       call:
-
-             setupterm(term, 1, (int *)0)
-
-       provides  the  same  functionality  as setterm(term).  The
-       setterm routine is included here  for  BSD  compatibility,
-       and is not recommended for new programs.
-
-       The  set_curterm  routine  sets  the  variable cur_term to
-       nterm, and makes all of the terminfo boolean, numeric, and
-       string  variables  use  the values from nterm.  It returns
-       the old value of cur_term.
-
-       The del_curterm routine frees  the  space  pointed  to  by
-       oterm and makes it available for further use.  If oterm is
-       the same as cur_term, references to any  of  the  terminfo
-       boolean,  numeric, and string variables thereafter may re-
-       fer to invalid memory locations  until  another  setupterm
-       has been called.
-
-       The  restartterm  routine  is  similar  to  setupterm  and
-       initscr, except that it is called after  restoring  memory
-       to  a  previous  state (for example, when reloading a game
-       saved as a core image dump).  It assumes that the  windows
-       and the input and output options are the same as when mem-
-       ory was saved, but the terminal type and baud rate may  be
-       different.   Accordingly, it saves various tty state bits,
-       calls setupterm, and then restores the bits.
-
-       The tparm routine instantiates the string str with parame-
-       ters  pi.  A pointer is returned to the result of str with
-       the parameters applied.
-
-       tiparm is a newer form  of  tparm  which  uses  <stdarg.h>
-       rather  than  a fixed-parameter list.  Its numeric parame-
-       ters are integers (int) rather than longs.
-
-       The tputs  routine  applies  padding  information  to  the
-       string  str  and  outputs  it.  The str must be a terminfo
-       string variable or the return value from  tparm,  tgetstr,
-       or tgoto.  affcnt is the number of lines affected, or 1 if
-       not applicable.  putc is a putchar-like routine  to  which
-       the characters are passed, one at a time.
-
-       The  putp routine calls tputs(str, 1, putchar).  Note that
-       the output of putp always  goes  to  stdout,  not  to  the
-       fildes specified in setupterm.
-
-       The vidputs routine displays the string on the terminal in
-       the video attribute mode attrs, which is  any  combination
-       of  the  attributes  listed in curses(3x).  The characters
-       are passed to the putchar-like routine putc.
-
-       The vidattr routine is like the  vidputs  routine,  except
-       that it outputs through putchar.
-
-       The  vid_attr  and vid_puts routines correspond to vidattr
-       and vidputs, respectively.  They use a  set  of  arguments
-       for  representing  the  video attributes plus color, i.e.,
-       one of type attr_t for the attributes and one of short for
-       the color_pair number.  The vid_attr and vid_puts routines
-       are designed to use the attribute constants with  the  WA_
-       prefix.   The  opts  argument  is reserved for future use.
-       Currently, applications must provide a  null  pointer  for
-       that argument.
-
-       The  mvcur  routine  provides low-level cursor motion.  It
-       takes effect immediately (rather  than  at  the  next  re-
-       fresh).
-
-       The  tigetflag,  tigetnum and tigetstr routines return the
-       value of the capability corresponding to the terminfo cap-
-       name passed to them, such as xenl.
-
-       The  tigetflag  routine returns the value -1 if capname is
-       not a boolean capability, or 0 if it is canceled or absent
-       from the terminal description.
-
-       The  tigetnum  routine  returns the value -2 if capname is
-       not a numeric capability, or -1 if it is canceled  or  ab-
-       sent from the terminal description.
-
-       The  tigetstr routine returns the value (char *)-1 if cap-
-       name is not a string capability, or 0 if it is canceled or
-       absent from the terminal description.
-
-       The capname for each capability is given in the table col-
-       umn entitled capname code in the capabilities  section  of
-       terminfo(5).
-
-              char *boolnames[], *boolcodes[], *boolfnames[]
-
-              char *numnames[], *numcodes[], *numfnames[]
-
-              char *strnames[], *strcodes[], *strfnames[]
-
-       These  null-terminated  arrays  contain  the capnames, the
-       termcap codes, and the full C names, for each of the  ter-
-       minfo variables.
-
-
-
-

RETURN VALUE

-       Routines  that  return  an integer return ERR upon failure
-       and OK (SVr4 only specifies "an integer value  other  than
-       ERR")  upon  successful completion, unless otherwise noted
-       in the preceding routine descriptions.
-
-       Routines that return pointers always return NULL on error.
-
-       X/Open defines no error conditions.  In  this  implementa-
-       tion
-
-              del_curterm
-                   returns  an error if its terminal parameter is
-                   null.
-
-              putp calls tputs, returning the same error-codes.
-
-              restartterm
-                   returns an error if the associated call to se-
-                   tupterm returns an error.
-
-              setupterm
-                   returns  an error if it cannot allocate enough
-                   memory, or create the initial windows (stdscr,
-                   curscr,  newscr).   Other error conditions are
-                   documented above.
-
-              tputs
-                   returns an error if the  string  parameter  is
-                   null.   It  does not detect I/O errors: X/Open
-                   states that tputs ignores the return value  of
-                   the output function putc.
-
-
-
-

NOTES

-       The  setupterm routine should be used in place of setterm.
-       It may be useful when you want to test for terminal  capa-
-       bilities  without  committing to the allocation of storage
-       involved in initscr.
-
-       Note that vidattr and vidputs may be macros.
-
-
-
-

PORTABILITY

-       The function setterm is not described by X/Open  and  must
-       be  considered  non-portable.   All other functions are as
-       described by X/Open.
-
-       setupterm copies the terminal name to the  array  ttytype.
-       This  is not part of X/Open Curses, but is assumed by some
-       applications.
-
-       In System V Release 4, set_curterm has an int return  type
-       and  returns  OK  or ERR.  We have chosen to implement the
-       X/Open Curses semantics.
-
-       In System V Release 4, the third argument of tputs has the
-       type int (*putc)(char).
-
-       At least one implementation of X/Open Curses (Solaris) re-
-       turns a value other than OK/ERR from tputs.  That  returns
-       the length of the string, and does no error-checking.
-
-       X/Open  Curses prototypes tparm with a fixed number of pa-
-       rameters, rather than a variable argument list.  This  im-
-       plementation  uses  a  variable  argument list, but can be
-       configured to use the fixed-parameter list.  Portable  ap-
-       plications  should  provide 9 parameters after the format;
-       zeroes are fine for this purpose.
-
-       In response to comments by Thomas E. Dickey, X/Open Curses
-       Issue 7 proposed the tiparam function in mid-2009.
-
-       X/Open  notes  that  after calling mvcur, the curses state
-       may not match the actual terminal state, and that  an  ap-
-       plication  should  touch and refresh the window before re-
-       suming normal curses calls.  Both ncurses and System V Re-
-       lease 4 curses implement mvcur using the SCREEN data allo-
-       cated in either initscr or newterm.  So though it is docu-
-       mented  as  a  terminfo function, mvcur is really a curses
-       function which is not well specified.
-
-       X/Open states that the old  location  must  be  given  for
-       mvcur.   This implementation allows the caller to use -1's
-       for the old ordinates.  In that case, the old location  is
-       unknown.
-
-       Extended  terminal  capability  names, e.g., as defined by
-       tic -x, are not stored in the  arrays  described  in  this
-       section.
-
-
-
-

SEE ALSO

-       curses(3x),  curs_initscr(3x), curs_kernel(3x), curs_term-
-       cap(3x), curs_variables(3x), term_variables(3x),  putc(3),
-       terminfo(5)
-
-
-
-                                                      curs_terminfo(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_threads.3x.html b/deps/ncurses-5.9/doc/html/man/curs_threads.3x.html deleted file mode 100644 index 394544a..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_threads.3x.html +++ /dev/null @@ -1,634 +0,0 @@ - - - - -curs_threads 3x - - - - -

curs_threads 3x

-
-
-
-curs_threads(3x)                                       curs_threads(3x)
-
-
-
-
-
-

NAME

-       use_screen, use_window - curses thread support
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);
-       typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);
-       int get_escdelay(void);
-       int set_escdelay(int size);
-       int set_tabsize(int size);
-       int  use_screen(SCREEN  *scr, NCURSES_WINDOW_CB func, void
-       *data);
-       int use_window(WINDOW *win, NCURSES_SCREEN_CB  func,  void
-       *data);
-
-
-
-

DESCRIPTION

-       This  implementation can be configured to provide rudimen-
-       tary support for multi-threaded applications.  This  makes
-       a  different set of libraries, e.g., libncursest since the
-       binary interfaces are different.
-
-       Rather than modify the interfaces to pass a thread  speci-
-       fier  to  each function, it adds a few functions which can
-       be used in any configuration which hide the mutex's needed
-       to  prevent  concurrent  use  of the global variables when
-       configured for threading.
-
-       In addition to forcing access to  members  of  the  WINDOW
-       structure  to  be  via functions (see curs_opaque(3x)), it
-       makes functions of the common global variables, e.g., COL-
-       ORS,  COLOR_PAIRS,  COLS, ESCDELAY, LINES, TABSIZE curscr,
-       newscr and ttytype.  Those  variables  are  maintained  as
-       read-only values, stored in the SCREEN structure.
-
-       Even  this is not enough to make a thread-safe application
-       using curses.  A multi-threaded application would  be  ex-
-       pected  to  have threads updating separate windows (within
-       the same device), or updating on separate screens (on dif-
-       ferent  devices).  Also, a few of the global variables are
-       considered writable by some applications.   The  functions
-       described here address these special situations.
-
-       The  ESCDELAY and TABSIZE global variables are modified by
-       some applications.  To modify them in  any  configuration,
-       use  the  set_escdelay  or  set_tabsize  functions.  Other
-       global variables are not modifiable.
-
-       The get_escdelay function returns the value for ESCDELAY.
-
-       The use_window and  use_screen  functions  provide  coarse
-       granularity mutexes for their respective WINDOW and SCREEN
-       parameters, and call a user-supplied function, passing  it
-       a  data  parameter, and returning the value from the user-
-       supplied function to the application.
-
-   USAGE
-       All of the ncurses library functions assume that  the  lo-
-       cale  is  not altered during operation.  In addition, they
-       use data which is maintained within a hierarchy of scopes.
-
-          o   global data, e.g., used in the  low-level  terminfo
-              or termcap interfaces.
-
-          o   terminal  data,  e.g.,  associated  with  a call to
-              set_curterm.  The  terminal  data  are  initialized
-              when screens are created.
-
-          o   screen  data,  e.g.,  associated  with  a  call  to
-              newterm or initscr.
-
-          o   window data, e.g., associated with a call to newwin
-              or  subwin.   Windows  are associated with screens.
-              Pads are not necessarily associated with a particu-
-              lar screen.
-
-              Most  curses  applications  operate  on one or more
-              windows within a single screen.
-
-          o   reentrant, i.e., it uses only the  data  passed  as
-              parameters.
-
-       This table lists the scope of data used for each symbol in
-       the ncurses library  when  it  is  configured  to  support
-       threading:
-
-      Symbol                  Scope
-      -------------------------------------------------------------
-      BC                      global
-      COLORS                  screen (readonly)
-      COLOR_PAIR              reentrant
-      COLOR_PAIRS             screen (readonly)
-      COLS                    screen (readonly)
-      ESCDELAY                screen (readonly, see set_escdelay)
-      LINES                   screen (readonly)
-      PAIR_NUMBER             reentrant
-      PC                      global
-      SP                      global
-      TABSIZE                 screen (readonly)
-      UP                      global
-      acs_map                 screen (readonly)
-      add_wch                 window (stdscr)
-      add_wchnstr             window (stdscr)
-      add_wchstr              window (stdscr)
-      addch                   window (stdscr)
-      addchnstr               window (stdscr)
-      addchstr                window (stdscr)
-      addnstr                 window (stdscr)
-      addnwstr                window (stdscr)
-      addstr                  window (stdscr)
-      addwstr                 window (stdscr)
-      assume_default_colors   screen
-      attr_get                window (stdscr)
-      attr_off                window (stdscr)
-      attr_on                 window (stdscr)
-      attr_set                window (stdscr)
-      attroff                 window (stdscr)
-      attron                  window (stdscr)
-      attrset                 window (stdscr)
-      baudrate                screen
-      beep                    screen
-      bkgd                    window (stdscr)
-      bkgdset                 window (stdscr)
-      bkgrnd                  window (stdscr)
-      bkgrndset               window (stdscr)
-      boolcodes               global (readonly)
-      boolfnames              global (readonly)
-      boolnames               global (readonly)
-      border                  window (stdscr)
-
-      border_set              window (stdscr)
-      box                     window (stdscr)
-      box_set                 window (stdscr)
-      can_change_color        terminal
-      cbreak                  screen
-      chgat                   window (stdscr)
-      clear                   window (stdscr)
-      clearok                 window
-      clrtobot                window (stdscr)
-      clrtoeol                window (stdscr)
-      color_content           screen
-      color_set               window (stdscr)
-      copywin                 window locks(source, target)
-      cur_term                terminal
-      curs_set                screen
-      curscr                  screen (readonly)
-      curses_version          global (readonly)
-      def_prog_mode           terminal
-      def_shell_mode          terminal
-      define_key              screen
-      del_curterm             screen
-      delay_output            screen
-      delch                   window (stdscr)
-      deleteln                window (stdscr)
-      delscreen               global locks(screenlist, screen)
-      delwin                  global locks(windowlist)
-      derwin                  screen
-      doupdate                screen
-      dupwin                  screen locks(window)
-      echo                    screen
-      echo_wchar              window (stdscr)
-      echochar                window (stdscr)
-      endwin                  screen
-      erase                   window (stdscr)
-      erasechar               window (stdscr)
-      erasewchar              window (stdscr)
-      filter                  global
-      flash                   terminal
-      flushinp                screen
-      get_wch                 screen (input-operation)
-      get_wstr                screen (input-operation)
-      getattrs                window
-      getbegx                 window
-      getbegy                 window
-      getbkgd                 window
-      getbkgrnd               window
-      getcchar                reentrant
-      getch                   screen (input-operation)
-      getcurx                 window
-      getcury                 window
-      getmaxx                 window
-      getmaxy                 window
-      getmouse                screen (input-operation)
-      getn_wstr               screen (input-operation)
-      getnstr                 screen (input-operation)
-      getparx                 window
-      getpary                 window
-      getstr                  screen (input-operation)
-      getwin                  screen (input-operation)
-      halfdelay               screen
-      has_colors              terminal
-      has_ic                  terminal
-      has_il                  terminal
-      has_key                 screen
-      hline                   window (stdscr)
-      hline_set               window (stdscr)
-
-      idcok                   window
-      idlok                   window
-      immedok                 window
-      in_wch                  window (stdscr)
-      in_wchnstr              window (stdscr)
-      in_wchstr               window (stdscr)
-      inch                    window (stdscr)
-      inchnstr                window (stdscr)
-      inchstr                 window (stdscr)
-      init_color              screen
-      init_pair               screen
-      initscr                 global locks(screenlist)
-      innstr                  window (stdscr)
-      innwstr                 window (stdscr)
-      ins_nwstr               window (stdscr)
-      ins_wch                 window (stdscr)
-      ins_wstr                window (stdscr)
-      insch                   window (stdscr)
-      insdelln                window (stdscr)
-      insertln                window (stdscr)
-      insnstr                 window (stdscr)
-      insstr                  window (stdscr)
-      instr                   window (stdscr)
-      intrflush               terminal
-      inwstr                  window (stdscr)
-      is_cleared              window
-      is_idcok                window
-      is_idlok                window
-      is_immedok              window
-      is_keypad               window
-      is_leaveok              window
-      is_linetouched          window
-      is_nodelay              window
-      is_notimeout            window
-      is_scrollok             window
-      is_syncok               window
-      is_term_resized         terminal
-      is_wintouched           window
-      isendwin                screen
-      key_defined             screen
-      key_name                global (static data)
-      keybound                screen
-      keyname                 global (static data)
-      keyok                   screen
-      keypad                  window
-      killchar                terminal
-      killwchar               terminal
-      leaveok                 window
-      longname                screen
-      mcprint                 terminal
-      meta                    screen
-      mouse_trafo             window (stdscr)
-      mouseinterval           screen
-      mousemask               screen
-      move                    window (stdscr)
-      mvadd_wch               window (stdscr)
-      mvadd_wchnstr           window (stdscr)
-      mvadd_wchstr            window (stdscr)
-      mvaddch                 window (stdscr)
-      mvaddchnstr             window (stdscr)
-      mvaddchstr              window (stdscr)
-      mvaddnstr               window (stdscr)
-      mvaddnwstr              window (stdscr)
-      mvaddstr                window (stdscr)
-      mvaddwstr               window (stdscr)
-      mvchgat                 window (stdscr)
-
-      mvcur                   screen
-      mvdelch                 window (stdscr)
-      mvderwin                window (stdscr)
-      mvget_wch               screen (input-operation)
-      mvget_wstr              screen (input-operation)
-      mvgetch                 screen (input-operation)
-      mvgetn_wstr             screen (input-operation)
-      mvgetnstr               screen (input-operation)
-      mvgetstr                screen (input-operation)
-      mvhline                 window (stdscr)
-      mvhline_set             window (stdscr)
-      mvin_wch                window (stdscr)
-      mvin_wchnstr            window (stdscr)
-      mvin_wchstr             window (stdscr)
-      mvinch                  window (stdscr)
-      mvinchnstr              window (stdscr)
-      mvinchstr               window (stdscr)
-      mvinnstr                window (stdscr)
-      mvinnwstr               window (stdscr)
-      mvins_nwstr             window (stdscr)
-      mvins_wch               window (stdscr)
-      mvins_wstr              window (stdscr)
-      mvinsch                 window (stdscr)
-      mvinsnstr               window (stdscr)
-      mvinsstr                window (stdscr)
-      mvinstr                 window (stdscr)
-      mvinwstr                window (stdscr)
-      mvprintw                window (stdscr)
-      mvscanw                 screen
-      mvvline                 window (stdscr)
-      mvvline_set             window (stdscr)
-      mvwadd_wch              window
-      mvwadd_wchnstr          window
-      mvwadd_wchstr           window
-      mvwaddch                window
-      mvwaddchnstr            window
-      mvwaddchstr             window
-      mvwaddnstr              window
-      mvwaddnwstr             window
-      mvwaddstr               window
-      mvwaddwstr              window
-      mvwchgat                window
-      mvwdelch                window
-      mvwget_wch              screen (input-operation)
-      mvwget_wstr             screen (input-operation)
-      mvwgetch                screen (input-operation)
-      mvwgetn_wstr            screen (input-operation)
-      mvwgetnstr              screen (input-operation)
-      mvwgetstr               screen (input-operation)
-      mvwhline                window
-      mvwhline_set            window
-      mvwin                   window
-      mvwin_wch               window
-      mvwin_wchnstr           window
-      mvwin_wchstr            window
-      mvwinch                 window
-      mvwinchnstr             window
-      mvwinchstr              window
-      mvwinnstr               window
-      mvwinnwstr              window
-      mvwins_nwstr            window
-      mvwins_wch              window
-      mvwins_wstr             window
-      mvwinsch                window
-      mvwinsnstr              window
-      mvwinsstr               window
-
-      mvwinstr                window
-      mvwinwstr               window
-      mvwprintw               window
-      mvwscanw                screen
-      mvwvline                window
-      mvwvline_set            window
-      napms                   reentrant
-      newpad                  global locks(windowlist)
-      newscr                  screen (readonly)
-      newterm                 global locks(screenlist)
-      newwin                  global locks(windowlist)
-      nl                      screen
-      nocbreak                screen
-      nodelay                 window
-      noecho                  screen
-      nofilter                global
-      nonl                    screen
-      noqiflush               terminal
-      noraw                   screen
-      notimeout               window
-      numcodes                global (readonly)
-      numfnames               global (readonly)
-      numnames                global (readonly)
-      ospeed                  global
-      overlay                 window locks(source, target)
-      overwrite               window locks(source, target)
-      pair_content            screen
-      pecho_wchar             screen
-      pechochar               screen
-      pnoutrefresh            screen
-      prefresh                screen
-      printw                  window
-      putp                    global
-      putwin                  window
-      qiflush                 terminal
-      raw                     screen
-      redrawwin               window
-      refresh                 screen
-      reset_prog_mode         screen
-      reset_shell_mode        screen
-      resetty                 terminal
-      resize_term             screen locks(windowlist)
-      resizeterm              screen
-      restartterm             screen
-      ripoffline              global (static data)
-      savetty                 terminal
-      scanw                   screen
-      scr_dump                screen
-      scr_init                screen
-      scr_restore             screen
-      scr_set                 screen
-      scrl                    window (stdscr)
-      scroll                  window
-      scrollok                window
-      set_curterm             screen
-      set_escdelay            screen
-      set_tabsize             screen
-      set_term                global locks(screenlist, screen)
-      setcchar                reentrant
-      setscrreg               window (stdscr)
-      setupterm               global
-      slk_attr                screen
-      slk_attr_off            screen
-      slk_attr_on             screen
-      slk_attr_set            screen
-      slk_attroff             screen
-
-      slk_attron              screen
-      slk_attrset             screen
-      slk_clear               screen
-      slk_color               screen
-      slk_init                screen
-      slk_label               screen
-      slk_noutrefresh         screen
-      slk_refresh             screen
-      slk_restore             screen
-      slk_set                 screen
-      slk_touch               screen
-      slk_wset                screen
-      standend                window
-      standout                window
-      start_color             screen
-      stdscr                  screen (readonly)
-      strcodes                global (readonly)
-      strfnames               global (readonly)
-      strnames                global (readonly)
-      subpad                  window
-      subwin                  window
-      syncok                  window
-      term_attrs              screen
-      termattrs               screen
-      termname                terminal
-      tgetent                 global
-      tgetflag                global
-      tgetnum                 global
-      tgetstr                 global
-      tgoto                   global
-      tigetflag               terminal
-      tigetnum                terminal
-      tigetstr                terminal
-      timeout                 window (stdscr)
-      touchline               window
-      touchwin                window
-      tparm                   global (static data)
-      tputs                   screen
-      trace                   global (static data)
-      ttytype                 screen (readonly)
-      typeahead               screen
-      unctrl                  screen
-      unget_wch               screen (input-operation)
-      ungetch                 screen (input-operation)
-      ungetmouse              screen (input-operation)
-      untouchwin              window
-      use_default_colors      screen
-      use_env                 global (static data)
-      use_extended_names      global (static data)
-      use_legacy_coding       screen
-      use_screen              global locks(screenlist, screen)
-      use_window              global locks(windowlist, window)
-      vid_attr                screen
-      vid_puts                screen
-      vidattr                 screen
-      vidputs                 screen
-      vline                   window (stdscr)
-      vline_set               window (stdscr)
-      vw_printw               window
-      vw_scanw                screen
-      vwprintw                window
-      vwscanw                 screen
-      wadd_wch                window
-      wadd_wchnstr            window
-      wadd_wchstr             window
-      waddch                  window
-
-      waddchnstr              window
-      waddchstr               window
-      waddnstr                window
-      waddnwstr               window
-      waddstr                 window
-      waddwstr                window
-      wattr_get               window
-      wattr_off               window
-      wattr_on                window
-      wattr_set               window
-      wattroff                window
-      wattron                 window
-      wattrset                window
-      wbkgd                   window
-      wbkgdset                window
-      wbkgrnd                 window
-      wbkgrndset              window
-      wborder                 window
-      wborder_set             window
-      wchgat                  window
-      wclear                  window
-      wclrtobot               window
-      wclrtoeol               window
-      wcolor_set              window
-      wcursyncup              screen (affects window plus parents)
-      wdelch                  window
-      wdeleteln               window
-      wecho_wchar             window
-      wechochar               window
-      wenclose                window
-      werase                  window
-      wget_wch                screen (input-operation)
-      wget_wstr               screen (input-operation)
-      wgetbkgrnd              window
-      wgetch                  screen (input-operation)
-      wgetn_wstr              screen (input-operation)
-      wgetnstr                screen (input-operation)
-      wgetparent              window
-      wgetscrreg              window
-      wgetstr                 screen (input-operation)
-      whline                  window
-      whline_set              window
-      win_wch                 window
-      win_wchnstr             window
-      win_wchstr              window
-      winch                   window
-      winchnstr               window
-      winchstr                window
-      winnstr                 window
-      winnwstr                window
-      wins_nwstr              window
-      wins_wch                window
-      wins_wstr               window
-      winsch                  window
-      winsdelln               window
-      winsertln               window
-      winsnstr                window
-      winsstr                 window
-      winstr                  window
-      winwstr                 window
-      wmouse_trafo            window
-      wmove                   window
-      wnoutrefresh            screen
-      wprintw                 window
-      wredrawln               window
-      wrefresh                screen
-
-      wresize                 window locks(windowlist)
-      wscanw                  screen
-      wscrl                   window
-      wsetscrreg              window
-      wstandend               window
-      wstandout               window
-      wsyncdown               screen (affects window plus parents)
-      wsyncup                 screen (affects window plus parents)
-      wtimeout                window
-      wtouchln                window
-      wunctrl                 global (static data)
-      wvline                  window
-      wvline_set              window
-
-
-
-

RETURN VALUE

-       These functions all return TRUE or FALSE, except as noted.
-
-
-
-

NOTES

-       Both a macro and a function are provided for each name.
-
-
-
-

PORTABILITY

-       These  routines  are  specific  to ncurses.  They were not
-       supported on Version 7, BSD or System  V  implementations.
-       It  is  recommended that any code depending on ncurses ex-
-       tensions be conditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       curses(3x), curs_opaque(3x), curs_variables(3x).
-
-
-
-                                                       curs_threads(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_touch.3x.html b/deps/ncurses-5.9/doc/html/man/curs_touch.3x.html deleted file mode 100644 index 9ba1bc6..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_touch.3x.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - -curs_touch 3x - - - - -

curs_touch 3x

-
-
-
-curs_touch(3x)                                           curs_touch(3x)
-
-
-
-
-
-

NAME

-       touchwin, touchline, untouchwin, wtouchln, is_linetouched,
-       is_wintouched - curses refresh control routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-       int touchwin(WINDOW *win);
-       int touchline(WINDOW *win, int start, int count);
-       int untouchwin(WINDOW *win);
-       int wtouchln(WINDOW *win, int y, int n, int changed);
-       bool is_linetouched(WINDOW *win, int line);
-       bool is_wintouched(WINDOW *win);
-
-
-
-

DESCRIPTION

-       The touchwin and touchline routines throw away  all  opti-
-       mization  information about which parts of the window have
-       been touched, by pretending that  the  entire  window  has
-       been  drawn  on.   This  is sometimes necessary when using
-       overlapping windows, since a change to one window  affects
-       the other window, but the records of which lines have been
-       changed in the other window do  not  reflect  the  change.
-       The  routine touchline only pretends that count lines have
-       been changed, beginning with line start.
-
-       The untouchwin routine marks all lines in  the  window  as
-       unchanged since the last call to wrefresh.
-
-       The wtouchln routine makes n lines in the window, starting
-       at line y, look as if they have (changed=1)  or  have  not
-       (changed=0) been changed since the last call to wrefresh.
-
-       The  is_linetouched and is_wintouched routines return TRUE
-       if the specified line/window was modified since  the  last
-       call  to  wrefresh; otherwise they return FALSE.  In addi-
-       tion, is_linetouched returns ERR if line is not valid  for
-       the given window.
-
-
-
-

RETURN VALUE

-       All  routines  return  the integer ERR upon failure and an
-       integer value other than ERR upon  successful  completion,
-       unless  otherwise  noted in the preceding routine descrip-
-       tions.
-
-       X/Open does not define any error conditions.  In this  im-
-       plementation
-
-              is_linetouched
-                   returns  an  error  if  the  window pointer is
-                   null, or if the line  number  is  outside  the
-                   window.   Note  that ERR is distinct from TRUE
-                   and FALSE, which are the normal return  values
-                   of this function.
-
-              wtouchln
-                   returns  an  error  if  the  window pointer is
-                   null, or if the line  number  is  outside  the
-                   window.
-
-
-
-

PORTABILITY

-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.
-
-       Some historic curses implementations had,  as  an  undocu-
-       mented  feature,  the  ability  to  do  the  equivalent of
-       clearok(..., 1) by saying touchwin(stdscr)  or  clear(std-
-       scr).  This will not work under ncurses.
-
-
-
-

NOTES

-       Note that all routines except wtouchln may be macros.
-
-
-
-

SEE ALSO

-       curses(3x), curs_refresh(3x), curs_variables(3x).
-
-
-
-                                                         curs_touch(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_trace.3x.html b/deps/ncurses-5.9/doc/html/man/curs_trace.3x.html deleted file mode 100644 index 3705fda..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_trace.3x.html +++ /dev/null @@ -1,186 +0,0 @@ - - - - -curs_trace 3x - - - - -

curs_trace 3x

-
-
-
-curs_trace(3x)                                           curs_trace(3x)
-
-
-
-
-
-

NAME

-       _tracef, _tracedump, _traceattr, _traceattr2,
-       _nc_tracebits, _tracecchar_t, _tracecchar_t2, _tracechar,
-       _tracechtype, _tracechtype2, _tracemouse, trace - curses
-       debugging routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       void _tracef(const char *format, ...);
-       void _tracedump(const char *label, WINDOW *win);
-       char *_traceattr(attr_t attr);
-       char *_traceattr2(int buffer, chtype ch);
-       char *_nc_tracebits(void);
-       char * _tracecchar_t(const cchar_t *string);
-       char * _tracecchar_t2(int buffer, const cchar_t *string);
-       char *_tracechar(int ch);
-       char *_tracechtype(chtype ch);
-       char *_tracechtype2(int buffer, chtype ch);
-       char *_tracemouse(const MEVENT *event);
-       void trace(const unsigned int param);
-
-
-
-

DESCRIPTION

-       The trace routines are used for debugging the ncurses  li-
-       braries, as well as applications which use the ncurses li-
-       braries.  These functions are normally available only with
-       the  debugging library libncurses_g.a, but may be compiled
-       into any model (shared, static, profile) by  defining  the
-       symbol  TRACE.   Additionally,  some  functions  are  only
-       available with the wide-character configuration of the li-
-       braries.
-
-       The  principal  parts of this interface are the trace rou-
-       tine which selectively enables different tracing features,
-       and the _tracef routine which writes formatted data to the
-       trace file.
-
-       Calling trace with a  nonzero  parameter  opens  the  file
-       trace  in the current directory for output.  The parameter
-       is formed by OR'ing values from the list of TRACE_xxx def-
-       initions in <curses.h>.  These include:
-
-       TRACE_DISABLE
-            turn off tracing.
-
-       TRACE_TIMES
-            trace user and system times of updates.
-
-       TRACE_TPUTS
-            trace tputs calls.
-
-       TRACE_UPDATE
-            trace update actions, old & new screens.
-
-       TRACE_MOVE
-            trace cursor movement and scrolling.
-
-       TRACE_CHARPUT
-            trace all character outputs.
-
-       TRACE_ORDINARY
-            trace  all  update  actions.   The old and new screen
-            contents are written to the trace file for  each  re-
-            fresh.
-
-       TRACE_CALLS
-            trace all curses calls.  The parameters for each call
-            are traced, as well as return values.
-
-       TRACE_VIRTPUT
-            trace virtual character puts, i.e., calls to addch.
-
-       TRACE_IEVENT
-            trace low-level input processing, including timeouts.
-
-       TRACE_BITS
-            trace state of TTY control bits.
-
-       TRACE_ICALLS
-            trace internal/nested calls.
-
-       TRACE_CCALLS
-            trace per-character calls.
-
-       TRACE_DATABASE
-            trace read/write of terminfo/termcap data.
-
-       TRACE_ATTRS
-            trace changes to video attributes and colors.
-
-       TRACE_MAXIMUM
-            maximum trace level,  enables  all  of  the  separate
-            trace features.
-
-       Some  tracing  features are enabled whenever the trace pa-
-       rameter is nonzero.  Some features overlap.  The  specific
-       names are used as a guideline.
-
-       These  functions check the NCURSES_TRACE environment vari-
-       able, to set the tracing feature as if trace was called:
-              filter,  initscr,  new_prescr,  newterm,  nofilter,
-              ripoffline, setupterm, slk_init, tgetent
-
-
-
-
-

RETURN VALUE

-       Routines  which  return a value are designed to be used as
-       parameters to the _tracef routine.
-
-
-
-

PORTABILITY

-       These functions are not part of the XSI  interface.   Some
-       other  curses  implementations  are known to have similar,
-       undocumented features, but they are  not  compatible  with
-       ncurses.
-
-
-
-

SEE ALSO

-       curses(3x).
-
-
-
-                                                         curs_trace(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_util.3x.html b/deps/ncurses-5.9/doc/html/man/curs_util.3x.html deleted file mode 100644 index 8181efa..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_util.3x.html +++ /dev/null @@ -1,266 +0,0 @@ - - - - -curs_util 3x - - - - -

curs_util 3x

-
-
-
-curs_util(3x)                                             curs_util(3x)
-
-
-
-
-
-

NAME

-       delay_output, filter, flushinp, getwin, key_name, keyname,
-       nofilter, putwin, unctrl, use_env, wunctrl - miscellaneous
-       curses utility routines
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       char *unctrl(chtype c);
-       wchar_t *wunctrl(cchar_t *c);
-       char *keyname(int c);
-       char *key_name(wchar_t w);
-       void filter(void);
-       void nofilter(void);
-       void use_env(bool f);
-       int putwin(WINDOW *win, FILE *filep);
-       WINDOW *getwin(FILE *filep);
-       int delay_output(int ms);
-       int flushinp(void);
-
-
-
-

DESCRIPTION

-       The  unctrl  routine returns a character string which is a
-       printable representation of the character c, ignoring  at-
-       tributes.   Control characters are displayed in the ^X no-
-       tation.  Printing characters are  displayed  as  is.   The
-       corresponding  wunctrl  returns a printable representation
-       of a wide character.
-
-       The keyname routine returns a character string correspond-
-       ing to the key c:
-
-          o   Printable  characters  are displayed as themselves,
-              e.g., a one-character string containing the key.
-
-          o   Control characters are displayed in  the  ^X  nota-
-              tion.
-
-          o   DEL (character 127) is displayed as ^?.
-
-          o   Values above 128 are either meta characters (if the
-              screen has not been initialized,  or  if  meta  has
-              been  called  with  a TRUE parameter), shown in the
-              M-X notation, or are displayed as  themselves.   In
-              the  latter  case, the values may not be printable;
-              this follows the X/Open specification.
-
-          o   Values above 256 may be the names of the  names  of
-              function keys.
-
-          o   Otherwise  (if  there is no corresponding name) the
-              function returns null, to denote an error.   X/Open
-              also  lists  an  "UNKNOWN  KEY" return value, which
-              some implementations return rather than null.
-
-       The corresponding key_name returns a character string cor-
-       responding  to  the wide-character value w.  The two func-
-       tions do not return the same set of  strings;  the  latter
-       returns null where the former would display a meta charac-
-       ter.
-
-       The filter routine, if used, must be called before initscr
-       or  newterm  are called.  The effect is that, during those
-       calls, LINES is set to 1;  the  capabilities  clear,  cup,
-       cud,  cud1,  cuu1,  cuu,  vpa  are  disabled; and the home
-       string is set to the value of cr.
-
-       The nofilter routine cancels the  effect  of  a  preceding
-       filter  call.   That  allows  the  caller  to initialize a
-       screen on a different device, using a different  value  of
-       $TERM.   The  limitation arises because the filter routine
-       modifies the in-memory copy of the terminal information.
-
-       The use_env routine, if used, is called before initscr  or
-       newterm  are  called.   When called with FALSE as an argu-
-       ment, the values of lines and  columns  specified  in  the
-       terminfo  database will be used, even if environment vari-
-       ables LINES and COLUMNS (used by default) are set,  or  if
-       curses  is  running in a window (in which case default be-
-       havior would be to  use  the  window  size  if  LINES  and
-       COLUMNS  are not set).  Note that setting LINES or COLUMNS
-       overrides the corresponding size  which  may  be  obtained
-       from the operating system.
-
-       The  putwin routine writes all data associated with window
-       win into the file to which filep points.  This information
-       can be later retrieved using the getwin function.
-
-       The getwin routine reads window related data stored in the
-       file by putwin.  The routine then creates and  initializes
-       a new window using that data.  It returns a pointer to the
-       new window.
-
-       The delay_output routine inserts an ms  millisecond  pause
-       in  output.   This  routine should not be used extensively
-       because padding characters are  used  rather  than  a  CPU
-       pause.   If  no  padding character is specified, this uses
-       napms to perform the delay.
-
-       The flushinp routine throws away any  typeahead  that  has
-       been  typed  by  the user and has not yet been read by the
-       program.
-
-
-
-

RETURN VALUE

-       Except for flushinp, routines that return an  integer  re-
-       turn  ERR upon failure and OK (SVr4 specifies only "an in-
-       teger value other than ERR") upon successful completion.
-
-       Routines that return pointers return NULL on error.
-
-       X/Open does not define any error conditions.  In this  im-
-       plementation
-
-          flushinp
-               returns  an error if the terminal was not initial-
-               ized.
-
-          meta returns an error if the terminal was not  initial-
-               ized.
-
-          putwin
-               returns  an  error  if the associated fwrite calls
-               return an error.
-
-
-
-

PORTABILITY

-       The XSI Curses standard, Issue  4  describes  these  func-
-       tions.   It  states  that unctrl and wunctrl will return a
-       null pointer if unsuccessful, but does not define any  er-
-       ror conditions.  This implementation checks for three cas-
-       es:
-
-          o   the parameter is a 7-bit US-ASCII  code.   This  is
-              the case that X/Open Curses documented.
-
-          o   the  parameter  is in the range 128-159, i.e., a C1
-              control code.  If use_legacy_coding has been called
-              with  a  2 parameter, unctrl 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  con-
-              trols.
-
-              X/Open  Curses does not document whether unctrl can
-              be called before initializing curses.  This  imple-
-              mentation  permits  that,  and  returns the ``~@'',
-              etc., values in that case.
-
-          o   parameter values outside the 0 to 255 range.   unc-
-              trl returns a null pointer.
-
-       The SVr4 documentation describes the action of filter only
-       in the vaguest terms.  The  description  here  is  adapted
-       from  the  XSI Curses standard (which erroneously fails to
-       describe the disabling of cuu).
-
-       The strings returned by unctrl in this implementation  are
-       determined  at  compile time, showing C1 controls from the
-       upper-128 codes with a `~' prefix rather than `^'.   Other
-       implementations  have different conventions.  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  print-
-       able.  This implementation uses 8 bits but does not modify
-       the string to reflect locale.  The use_legacy_coding func-
-       tion allows the caller to change the output of unctrl.
-
-       Likewise,  the  meta  function allows the caller to change
-       the output of keyname, i.e., it determines whether to  use
-       the  `M-' prefix for ``meta'' keys (codes in the range 128
-       to 255).  Both use_legacy_coding and meta succeed only af-
-       ter  curses  is initialized.  X/Open Curses does not docu-
-       ment the treatment of codes 128  to  159.   When  treating
-       them as ``meta'' keys (or if keyname is called before ini-
-       tializing curses),  this  implementation  returns  strings
-       ``M-^@'', ``M-^A'', etc.
-
-       The  keyname function may return the names of user-defined
-       string capabilities which are defined in the terminfo  en-
-       try  via  the -x option of tic.  This implementation auto-
-       matically 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.   The
-       use_extended_names  function controls whether this data is
-       loaded when the terminal description is read  by  the  li-
-       brary.
-
-       The  nofilter  routine is specific to ncurses.  It was not
-       supported on Version 7, BSD or System  V  implementations.
-       It  is  recommended that any code depending on ncurses ex-
-       tensions be conditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       legacy_coding(3x), curses(3x), curs_initscr(3x), curs_ker-
-       nel(3x),   curs_scr_dump(3x),   curs_variables(3x),  lega-
-       cy_coding(3x).
-
-
-
-                                                          curs_util(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_variables.3x.html b/deps/ncurses-5.9/doc/html/man/curs_variables.3x.html deleted file mode 100644 index 3cca3fe..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_variables.3x.html +++ /dev/null @@ -1,164 +0,0 @@ - - - - -curs_variables 3x - - - - -

curs_variables 3x

-
-
-
-curs_variables(3x)                                   curs_variables(3x)
-
-
-
-
-
-

NAME

-       COLORS, COLOR_PAIRS, COLS, ESCDELAY, LINES, TABSIZE,
-       curscr, newscr, stdscr - curses global variables
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int COLOR_PAIRS;
-       int COLORS;
-       int COLS;
-       int ESCDELAY;
-       int LINES;
-       int TABSIZE;
-       WINDOW * curscr;
-       WINDOW * newscr;
-       WINDOW * stdscr;
-
-
-
-

DESCRIPTION

-       This page summarizes variables provided by the curses  li-
-       brary.   A more complete description is given in the curs-
-       es(3x) manual page.
-
-       Depending on the configuration, these may be actual  vari-
-       ables,  or  macros  (see  curs_threads(3x))  which provide
-       read-only access to curses's state.  In either  case,  ap-
-       plications should treat them as read-only to avoid confus-
-       ing the library.
-
-   COLOR_PAIRS
-       After initializing curses, this variable contains the num-
-       ber of color pairs which the terminal can support.  Usual-
-       ly the number of color pairs  will  be  the  product  COL-
-       ORS*COLORS, however this is not always true:
-
-       o   a  few  terminals  use HLS colors, which do not follow
-           this rule
-
-       o   terminals supporting a large number of colors are lim-
-           ited  by  the number of color pairs that can be repre-
-           sented in a signed short value.
-
-   COLORS
-       After initializing curses, this variable contains the num-
-       ber of colors which the terminal can support.
-
-   COLS
-       After  initializing  curses,  this  variable  contains the
-       width of the screen, i.e., the number of columns.
-
-   ESCDELAY
-       This variable holds the number of milliseconds to wait af-
-       ter reading an escape character, to distinguish between an
-       individual escape character entered on the  keyboard  from
-       escape  sequences  sent  by cursor- and function-keys (see
-       curses(3x).
-
-   LINES
-       After initializing  curses,  this  variable  contains  the
-       height of the screen, i.e., the number of lines.
-
-   TABSIZE
-       This  variable  holds  the  number  of columns used by the
-       curses library when converting a tab character  to  spaces
-       as it adds the tab to a window (see curs_addch(3x).
-
-   The Current Screen
-       This implementation of curses uses a special window curscr
-       to record its updates to the terminal screen.
-
-   The New Screen
-       This implementation of curses uses a special window newscr
-       to  hold  updates  to  the terminal screen before applying
-       them to curscr.
-
-   The Standard Screen
-       Upon initializing curses, a default window called  stdscr,
-       which  is  the  size  of  the terminal screen, is created.
-       Many curses functions use this window.
-
-
-
-

NOTES

-       The   curses   library   is   initialized   using   either
-       initscr(3x), or newterm(3x).
-
-       If  curses  is  configured to use separate curses/terminfo
-       libraries, most of these variables reside  in  the  curses
-       library.
-
-
-
-

PORTABILITY

-       ESCDELAY  and TABSIZE are extensions, not provided in most
-       other implementations of curses.
-
-
-
-

SEE ALSO

-       curses(3x), curs_threads(3x), term_variables(3x),  termin-
-       fo(3x), terminfo(5).
-
-
-
-                                                     curs_variables(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/curs_window.3x.html b/deps/ncurses-5.9/doc/html/man/curs_window.3x.html deleted file mode 100644 index d3d4ef4..0000000 --- a/deps/ncurses-5.9/doc/html/man/curs_window.3x.html +++ /dev/null @@ -1,216 +0,0 @@ - - - - -curs_window 3x - - - - -

curs_window 3x

-
-
-
-curs_window(3x)                                         curs_window(3x)
-
-
-
-
-
-

NAME

-       newwin, delwin, mvwin, subwin, derwin, mvderwin, dupwin,
-       wsyncup, syncok, wcursyncup, wsyncdown - create curses
-       windows
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       WINDOW *newwin(int nlines, int ncols, int begin_y,
-             int begin_x);
-       int delwin(WINDOW *win);
-       int mvwin(WINDOW *win, int y, int x);
-       WINDOW *subwin(WINDOW *orig, int nlines, int ncols,
-             int begin_y, int begin_x);
-       WINDOW *derwin(WINDOW *orig, int nlines, int ncols,
-             int begin_y, int begin_x);
-       int mvderwin(WINDOW *win, int par_y, int par_x);
-       WINDOW *dupwin(WINDOW *win);
-       void wsyncup(WINDOW *win);
-       int syncok(WINDOW *win, bool bf);
-       void wcursyncup(WINDOW *win);
-       void wsyncdown(WINDOW *win);
-
-
-
-

DESCRIPTION

-       Calling newwin creates and returns a pointer to a new win-
-       dow with the given number of lines and columns.  The upper
-       left-hand  corner of the window is at line begin_y, column
-       begin_x.  If either nlines or ncols is zero, they  default
-       to  LINES - begin_y and COLS - begin_x.  A new full-screen
-       window is created by calling newwin(0,0,0,0).
-
-       Calling delwin deletes the named window, freeing all memo-
-       ry associated with it (it does not actually erase the win-
-       dow's screen image).  Subwindows must  be  deleted  before
-       the main window can be deleted.
-
-       Calling mvwin moves the window so that the upper left-hand
-       corner is at position (x, y).  If the move would cause the
-       window to be off the screen, it is an error and the window
-       is not moved.  Moving subwindows is allowed, but should be
-       avoided.
-
-       Calling subwin creates and returns a pointer to a new win-
-       dow with the given number of lines, nlines,  and  columns,
-       ncols.   The  window  is at position (begin_y, begin_x) on
-       the screen.  (This position is relative to the screen, and
-       not to the window orig.)  The window is made in the middle
-       of the window orig, so that changes  made  to  one  window
-       will  affect  both  windows.   The subwindow shares memory
-       with the window orig.  When using this routine, it is nec-
-       essary  to call touchwin or touchline on orig before call-
-       ing wrefresh on the subwindow.
-
-       Calling derwin is the same as calling subwin, except  that
-       begin_y and begin_x are relative to the origin of the win-
-       dow orig rather than the screen.  There is  no  difference
-       between the subwindows and the derived windows.
-
-       Calling mvderwin moves a derived window (or subwindow) in-
-       side its parent window.  The screen-relative parameters of
-       the  window are not changed.  This routine is used to dis-
-       play different parts of the  parent  window  at  the  same
-       physical position on the screen.
-
-       Calling  dupwin  creates  an exact duplicate of the window
-       win.
-
-       Calling wsyncup touches all locations in ancestors of  win
-       that  are changed in win.  If syncok is called with second
-       argument TRUE then wsyncup is called automatically whenev-
-       er there is a change in the window.
-
-       The  wsyncdown  routine  touches each location in win that
-       has been touched in any of  its  ancestor  windows.   This
-       routine  is  called by wrefresh, so it should almost never
-       be necessary to call it manually.
-
-       The routine wcursyncup updates the current cursor position
-       of  all the ancestors of the window to reflect the current
-       cursor position of the window.
-
-
-
-

RETURN VALUE

-       Routines that return an integer return the integer ERR up-
-       on  failure  and OK (SVr4 only specifies "an integer value
-       other than ERR") upon successful completion.
-
-       Routines that return pointers return NULL on error.
-
-       X/Open defines no error conditions.  In  this  implementa-
-       tion
-
-              delwin
-                   returns  an  error  if  the  window pointer is
-                   null, or if the window is the parent of anoth-
-                   er window.
-
-                   This  implementation  also maintains a list of
-                   windows, and checks that the pointer passed to
-                   delwin  is  one  that it created, returning an
-                   error if it was not..
-
-              mvderwin
-                   returns an error  if  the  window  pointer  is
-                   null,  or  if some part of the window would be
-                   placed off-screen.
-
-              mvwin
-                   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.
-
-              syncok
-                   returns  an  error  if  the  window pointer is
-                   null.
-
-
-
-

NOTES

-       If many small changes are made to the window, the  wsyncup
-       option could degrade performance.
-
-       Note that syncok may be a macro.
-
-
-
-

BUGS

-       The  subwindow  functions (subwin, derwin, mvderwin, wsyn-
-       cup, wsyncdown, wcursyncup, syncok) are flaky, incomplete-
-       ly implemented, and not well tested.
-
-       The  System  V  curses documentation is very unclear about
-       what wsyncup and wsyncdown actually do.  It seems to imply
-       that  they  are only supposed to touch exactly those lines
-       that are affected by ancestor changes.  The language here,
-       and  the  behavior  of  the curses implementation, is pat-
-       terned on the XPG4 curses standard.  The weaker XPG4  spec
-       may result in slower updates.
-
-
-
-

PORTABILITY

-       The  XSI  Curses  standard,  Issue 4 describes these func-
-       tions.
-
-
-
-

SEE ALSO

-       curses(3x), curs_refresh(3x),  curs_touch(3x),  curs_vari-
-       ables(3x)
-
-
-
-                                                        curs_window(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/default_colors.3x.html b/deps/ncurses-5.9/doc/html/man/default_colors.3x.html deleted file mode 100644 index f0e44e2..0000000 --- a/deps/ncurses-5.9/doc/html/man/default_colors.3x.html +++ /dev/null @@ -1,180 +0,0 @@ - - - - -default_colors 3x - - - - -

default_colors 3x

-
-
-
-default_colors(3x)                                   default_colors(3x)
-
-
-
-
-
-

NAME

-       use_default_colors, assume_default_colors - use terminal's
-       default colors
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int use_default_colors(void);
-       int assume_default_colors(int fg, int bg);
-
-
-
-

DESCRIPTION

-       The use_default_colors() and assume_default_colors() func-
-       tions are extensions to the curses library.  They are used
-       with terminals that support ISO 6429 color, or equivalent.
-       These terminals allow the application to reset color to an
-       unspecified default value (e.g., with SGR 39 or SGR 49).
-
-       Applications that paint  a  colored  background  over  the
-       whole  screen  do not take advantage of SGR 39 and SGR 49.
-       Some applications are designed to work  with  the  default
-       background,  using  colors  only  for  text.  For example,
-       there are several implementations of the ls program  which
-       use  colors to denote different file types or permissions.
-       These "color ls" programs do not  necessarily  modify  the
-       background  color, typically using only the setaf terminfo
-       capability  to  set  the  foreground  color.   Full-screen
-       applications  that  use default colors can achieve similar
-       visual effects.
-
-       The first function, use_default_colors() tells the  curses
-       library  to  assign terminal default foreground/background
-       colors to color number  -1.  So  init_pair(x,COLOR_RED,-1)
-       will  initialize  pair  x as red on default background and
-       init_pair(x,-1,COLOR_BLUE)  will  initialize  pair  x   as
-       default foreground on blue.
-
-       The  other,  assume_default_colors() is a refinement which
-       tells which colors to paint for color pair 0.  This  func-
-       tion  recognizes  a special color number -1, which denotes
-       the default terminal color.
-
-       The following are equivalent:
-              use_default_colors();
-              assume_default_colors(-1,-1);
-
-       These are ncurses extensions.  For other curses  implemen-
-       tations,  color  number -1 does not mean anything, just as
-       for ncurses before a successful call  of  use_default_col-
-       ors() or assume_default_colors().
-
-       Other  curses  implementations do not allow an application
-       to modify color pair 0.  They assume that  the  background
-       is COLOR_BLACK, but do not ensure that the color pair 0 is
-       painted to match the assumption.  If your application does
-       not use either use_default_colors() or assume_default_col-
-       ors() ncurses will paint a white  foreground  (text)  with
-       black background for color pair 0.
-
-
-
-

RETURN VALUE

-       These functions return the integer ERR upon failure and OK
-       on success.  They will fail if either  the  terminal  does
-       not  support  the orig_pair or orig_colors capability.  If
-       the initialize_pair capability is not found,  this  causes
-       an error as well.
-
-
-
-

NOTES

-       Associated  with  this  extension,  the init_pair function
-       accepts negative arguments to specify  default  foreground
-       or background colors.
-
-       The  use_default_colors()  function  was  added to support
-       ded.  This is a full-screen application which uses  curses
-       to  manage only part of the screen.  The bottom portion of
-       the screen, which is of adjustable size, is left uncolored
-       to  display the results from shell commands.  The top por-
-       tion of the screen colors filenames using  a  scheme  like
-       the  "color  ls" programs.  Attempting to manage the back-
-       ground color of the screen for this application would give
-       unsatisfactory  results  for  a  variety of reasons.  This
-       extension was devised after noting that color  xterm  (and
-       similar  programs)  provides a background color which does
-       not necessarily correspond to  any  of  the  ANSI  colors.
-       While  a special terminfo entry could be constructed using
-       nine colors, there was no mechanism provided within curses
-       to  account for the related orig_pair and back_color_erase
-       capabilities.
-
-       The assume_default_colors() function was added to solve  a
-       different  problem:  support  for applications which would
-       use  environment  variables  and  other  configuration  to
-       bypass  curses'  notion  of the terminal's default colors,
-       setting specific values.
-
-
-
-

PORTABILITY

-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on them be  con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       curs_color(3x), ded(1).
-
-
-
-

AUTHOR

-       Thomas  Dickey  (from  an analysis of the requirements for
-       color xterm for XFree86 3.1.2C, February 1996).
-
-
-
-                                                     default_colors(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/define_key.3x.html b/deps/ncurses-5.9/doc/html/man/define_key.3x.html deleted file mode 100644 index 8556833..0000000 --- a/deps/ncurses-5.9/doc/html/man/define_key.3x.html +++ /dev/null @@ -1,111 +0,0 @@ - - - - -define_key 3x - - - - -

define_key 3x

-
-
-
-define_key(3x)                                           define_key(3x)
-
-
-
-
-
-

NAME

-       define_key - define a keycode
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int define_key(const char *definition, int keycode);
-
-
-
-

DESCRIPTION

-       This is an extension to the curses library.  It permits an
-       application to define keycodes  with  their  corresponding
-       control  strings,  so that the ncurses library will inter-
-       pret them just as it would the  predefined  codes  in  the
-       terminfo database.
-
-       If  the  given string is null, any existing definition for
-       the keycode is removed.  Similarly, if the  given  keycode
-       is  negative  or  zero,  any existing string for the given
-       definition is removed.
-
-
-
-

RETURN VALUE

-       The keycode must be greater than zero, and the string non-
-       null, otherwise ERR is returned.  ERR may also be returned
-       if there is insufficient memory to allocate  the  data  to
-       store  the  definition.   If  no  error is detected, OK is
-       returned.
-
-
-
-

PORTABILITY

-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on them be  con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       keyok(3x), key_defined(3x).
-
-
-
-

AUTHOR

-       Thomas Dickey.
-
-
-
-                                                         define_key(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form.3x.html b/deps/ncurses-5.9/doc/html/man/form.3x.html deleted file mode 100644 index 86e3317..0000000 --- a/deps/ncurses-5.9/doc/html/man/form.3x.html +++ /dev/null @@ -1,258 +0,0 @@ - - - - -form 3x - - - - -

form 3x

-
-
-
-form(3x)                                                       form(3x)
-
-
-
-
-
-

NAME

-       form - curses extension for programming forms
-
-
-
-

SYNOPSIS

-       #include <form.h>
-
-
-
-

DESCRIPTION

-       The  form library provides terminal-independent facilities
-       for composing form screens  on  character-cell  terminals.
-       The  library  includes:  field  routines, which create and
-       modify form fields; and form routines, which group  fields
-       into forms, display forms on the screen, and handle inter-
-       action with the user.
-
-       The form library uses the curses libraries.   To  use  the
-       form library, link with the options -lform -lcurses.
-
-       Your program should set up the locale, e.g.,
-
-            setlocale(LC_ALL, "");
-
-       so that input/output processing will work.
-
-       A  curses  initialization  routine such as initscr must be
-       called before using any of these functions.
-
-   Current Default Values for Field Attributes
-       The form library  maintains  a  default  value  for  field
-       attributes.   You  can  get or set this default by calling
-       the appropriate set_ or  retrieval  routine  with  a  NULL
-       field pointer.  Changing this default with a set_ function
-       affects future field creations, but does  not  change  the
-       rendering of fields already created.
-
-   Routine Name Index
-       The  following  table lists each form routine and the name
-       of the manual page on which it is described.
-
-       curses Routine Name    Manual Page Name
-       -------------------------------------------------
-       current_field          form_page(3x)
-       data_ahead             form_data(3x)
-       data_behind            form_data(3x)
-       dup_field              form_field_new(3x)
-       dynamic_field_info     form_field_info(3x)
-       field_arg              form_field_validation(3x)
-       field_back             form_field_attributes(3x)
-       field_buffer           form_field_buffer(3x)
-       field_count            form_field(3x)
-       field_fore             form_field_attributes(3x)
-       field_index            form_page(3x)
-       field_info             form_field_info(3x)
-       field_init             form_hook(3x)
-       field_just             form_field_just(3x)
-       field_opts             form_field_opts(3x)
-       field_opts_off         form_field_opts(3x)
-       field_opts_on          form_field_opts(3x)
-       field_pad              form_field_attributes(3x)
-       field_status           form_field_buffer(3x)
-       field_term             form_hook(3x)
-       field_type             form_field_validation(3x)
-
-       field_userptr          form_field_userptr(3x)
-       form_driver            form_driver(3x)
-       form_fields            form_field(3x)
-       form_init              form_hook(3x)
-       form_opts              form_opts(3x)
-       form_opts_off          form_opts(3x)
-       form_opts_on           form_opts(3x)
-       form_page              form_page(3x)
-       form_request_by_name   form_requestname(3x)
-       form_request_name      form_requestname(3x)
-       form_sub               form_win(3x)
-       form_term              form_hook(3x)
-       form_userptr           form_userptr(3x)
-       form_win               form_win(3x)
-       free_field             form_field_new(3x)
-       free_fieldtype         form_fieldtype(3x)
-       free_form              form_new(3x)
-       link_field             form_field_new(3x)
-       link_fieldtype         form_fieldtype(3x)
-       move_field             form_field(3x)
-       new_field              form_field_new(3x)
-       new_fieldtype          form_fieldtype(3x)
-       new_form               form_new(3x)
-       new_page               form_new_page(3x)
-       pos_form_cursor        form_cursor(3x)
-       post_form              form_post(3x)
-       scale_form             form_win(3x)
-       set_current_field      form_page(3x)
-       set_field_back         form_field_attributes(3x)
-       set_field_buffer       form_field_buffer(3x)
-       set_field_fore         form_field_attributes(3x)
-       set_field_init         form_hook(3x)
-       set_field_just         form_field_just(3x)
-       set_field_opts         form_field_opts(3x)
-       set_field_pad          form_field_attributes(3x)
-       set_field_status       form_field_buffer(3x)
-       set_field_term         form_hook(3x)
-       set_field_type         form_field_validation(3x)
-       set_field_userptr      form_field_userptr(3x)
-       set_fieldtype_arg      form_fieldtype(3x)
-       set_fieldtype_choice   form_fieldtype(3x)
-       set_form_fields        form_field(3x)
-       set_form_init          form_hook(3x)
-       set_form_opts          form_field_opts(3x)
-       set_form_page          form_page(3x)
-       set_form_sub           form_win(3x)
-       set_form_term          form_hook(3x)
-       set_form_userptr       form_userptr(3x)
-       set_form_win           form_win(3x)
-       set_max_field          form_field_buffer(3x)
-       set_new_page           form_new_page(3x)
-       unpost_form            form_post(3x)
-
-
-
-

RETURN VALUE

-       Routines that return pointers return NULL  on  error,  and
-       set  errno  to  the  corresponding  error-code returned by
-       functions returning an integer.  Routines that  return  an
-       integer return one of the following error codes:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_CONNECTED
-            The field is already connected to a form.
-
-       E_INVALID_FIELD
-            Contents of a field are not valid.
-
-       E_NOT_CONNECTED
-            No fields are connected to the form.
-
-       E_NOT_POSTED
-            The form has not been posted.
-
-       E_NO_ROOM
-            Form is too large for its window.
-
-       E_POSTED
-            The form is already posted.
-
-       E_REQUEST_DENIED
-            The form driver could not process the request.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_UNKNOWN_COMMAND
-            The form driver code saw an unknown request code.
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       files <curses.h> and <eti.h>.
-
-       In  your  library  list,  libform.a should be before libn-
-       curses.a; that is, you want to say `-lform -lncurses', not
-       the  other  way  around (which would give you a link error
-       using most linkers).
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
-       by Eric S. Raymond.
-
-
-
-

SEE ALSO

-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                               form(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_cursor.3x.html b/deps/ncurses-5.9/doc/html/man/form_cursor.3x.html deleted file mode 100644 index 04de65a..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_cursor.3x.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -form_cursor 3x - - - - -

form_cursor 3x

-
-
-
-form_cursor(3x)                                         form_cursor(3x)
-
-
-
-
-
-

NAME

-       form_cursor - position a form window cursor
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int pos_form_cursor(FORM *form);
-
-
-
-

DESCRIPTION

-       The  function  pos_form_cursor  restores the cursor to the
-       position required for the forms driver  to  continue  pro-
-       cessing  requests.   This  is useful after curses routines
-       have been called to do screen-painting in  response  to  a
-       form operation.
-
-
-
-

RETURN VALUE

-       This routine returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_NOT_POSTED
-            The form has not been posted.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                        form_cursor(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_data.3x.html b/deps/ncurses-5.9/doc/html/man/form_data.3x.html deleted file mode 100644 index f181a9a..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_data.3x.html +++ /dev/null @@ -1,104 +0,0 @@ - - - - -form_data 3x - - - - -

form_data 3x

-
-
-
-form_data(3x)                                             form_data(3x)
-
-
-
-
-
-

NAME

-       form_data - test for off-screen data in given forms
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       bool data_ahead(const FORM *form);
-       bool data_behind(const FORM *form);
-
-
-
-

DESCRIPTION

-       The  function data_ahead tests whether there is off-screen
-       data ahead in the given form.   It  returns  TRUE  (1)  or
-       FALSE (0).
-
-       The function data_behind tests whether there is off-screen
-       data behind in the given form.  It  returns  TRUE  (1)  or
-       FALSE (0).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          form_data(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_driver.3x.html b/deps/ncurses-5.9/doc/html/man/form_driver.3x.html deleted file mode 100644 index ab9a263..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_driver.3x.html +++ /dev/null @@ -1,375 +0,0 @@ - - - - -form_driver 3x - - - - -

form_driver 3x

-
-
-
-form_driver(3x)                                         form_driver(3x)
-
-
-
-
-
-

NAME

-       form_driver - command-processing loop of the form system
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int form_driver(FORM *form, int c);
-
-
-
-

DESCRIPTION

-       Once a form has been posted (displayed), you should funnel
-       input events to it through form_driver.  This routine  has
-       three major input cases:
-
-       o   The  input  is  a form navigation request.  Navigation
-           request codes are constants defined in <form.h>, which
-           are   distinct  from  the  key-  and  character  codes
-           returned by wgetch.
-
-       o   The input is a printable character.  Printable charac-
-           ters  (which  must  be  positive,  less  than 256) are
-           checked according to the program's locale settings.
-
-       o   The input is the KEY_MOUSE special key associated with
-           an mouse event.
-
-       The form driver requests are as follows:
-
-       REQ_NEXT_PAGE
-            Move to the next page.
-
-       REQ_PREV_PAGE
-            Move to the previous page.
-
-       REQ_FIRST_PAGE
-            Move to the first page.
-
-       REQ_LAST_PAGE
-            Move to the last field.
-
-
-       REQ_NEXT_FIELD
-            Move to the next field.
-
-       REQ_PREV_FIELD
-            Move to the previous field.
-
-       REQ_FIRST_FIELD
-            Move to the first field.
-
-       REQ_LAST_FIELD
-            Move to the last field.
-
-       REQ_SNEXT_FIELD
-            Move to the sorted next field.
-
-       REQ_SPREV_FIELD
-            Move to the sorted previous field.
-
-       REQ_SFIRST_FIELD
-            Move to the sorted first field.
-
-       REQ_SLAST_FIELD
-            Move to the sorted last field.
-
-       REQ_LEFT_FIELD
-            Move left to a field.
-
-       REQ_RIGHT_FIELD
-            Move right to a field.
-
-       REQ_UP_FIELD
-            Move up to a field.
-
-       REQ_DOWN_FIELD
-            Move down to a field.
-
-
-       REQ_NEXT_CHAR
-            Move to the next char.
-
-       REQ_PREV_CHAR
-            Move to the previous char.
-
-       REQ_NEXT_LINE
-            Move to the next line.
-
-       REQ_PREV_LINE
-            Move to the previous line.
-
-       REQ_NEXT_WORD
-            Move to the next word.
-
-       REQ_PREV_WORD
-            Move to the previous word.
-
-       REQ_BEG_FIELD
-            Move to the beginning of the field.
-
-       REQ_END_FIELD
-            Move to the end of the field.
-
-       REQ_BEG_LINE
-            Move to the beginning of the line.
-
-       REQ_END_LINE
-            Move to the end of the line.
-
-       REQ_LEFT_CHAR
-            Move left in the field.
-
-       REQ_RIGHT_CHAR
-            Move right in the field.
-
-       REQ_UP_CHAR
-            Move up in the field.
-
-       REQ_DOWN_CHAR
-            Move down in the field.
-
-
-       REQ_NEW_LINE
-            Insert or overlay a new line.
-
-       REQ_INS_CHAR
-            Insert a blank at the cursor.
-
-       REQ_INS_LINE
-            Insert a blank line at the cursor.
-
-       REQ_DEL_CHAR
-            Delete character at the cursor.
-
-       REQ_DEL_PREV
-            Delete character before the cursor.
-
-       REQ_DEL_LINE
-            Delete line at the cursor.
-
-       REQ_DEL_WORD
-            Delete blank-delimited word at the cursor.
-
-       REQ_CLR_EOL
-            Clear to end of line from cursor.
-
-       REQ_CLR_EOF
-            Clear to end of field from cursor.
-
-       REQ_CLR_FIELD
-            Clear the entire field.
-
-       REQ_OVL_MODE
-            Enter overlay mode.
-
-       REQ_INS_MODE
-            Enter insert mode.
-
-
-       REQ_SCR_FLINE
-            Scroll the field forward a line.
-
-       REQ_SCR_BLINE
-            Scroll the field backward a line.
-
-       REQ_SCR_FPAGE
-            Scroll the field forward a page.
-
-       REQ_SCR_BPAGE
-            Scroll the field backward a page.
-
-       REQ_SCR_FHPAGE
-            Scroll the field forward half a page.
-
-       REQ_SCR_BHPAGE
-            Scroll the field backward half a page.
-
-
-       REQ_SCR_FCHAR
-            Scroll the field forward a character.
-
-       REQ_SCR_BCHAR
-            Scroll the field backward a character.
-
-       REQ_SCR_HFLINE
-            Horizontal scroll the field forward a line.
-
-       REQ_SCR_HBLINE
-            Horizontal scroll the field backward a line.
-
-       REQ_SCR_HFHALF
-            Horizontal scroll the field forward half a line.
-
-       REQ_SCR_HBHALF
-            Horizontal scroll the field backward half a line.
-
-
-       REQ_VALIDATION
-            Validate field.
-
-       REQ_NEXT_CHOICE
-            Display next field choice.
-
-       REQ_PREV_CHOICE
-            Display previous field choice.
-
-       If  the  second  argument  is  a  printable character, the
-       driver places it in the current position  in  the  current
-       field.   If  it is one of the forms requests listed above,
-       that request is executed.
-
-   MOUSE HANDLING
-       If the second argument is the KEY_MOUSE special  key,  the
-       associated mouse event is translated into one of the above
-       pre-defined requests.  Currently only clicks in  the  user
-       window  (e.g., inside the form display area or the decora-
-       tion window) are handled.
-
-       If you click above the display region of the form:
-
-          a REQ_PREV_FIELD is generated for a single click,
-
-          a REQ_PREV_PAGE is generated for a double-click and
-
-          a REQ_FIRST_FIELD is generated for a triple-click.
-
-       If you click below the display region of the form:
-
-          a REQ_NEXT_FIELD is generated for a single click,
-
-          a REQ_NEXT_PAGE is generated for a double-click and
-
-          a REQ_LAST_FIELD is generated for a triple-click.
-
-       If you click at an field inside the display  area  of  the
-       form:
-
-          o   the form cursor is positioned to that field.
-
-          o   If  you  double-click  a  field, the form cursor is
-              positioned to that field and  E_UNKNOWN_COMMAND  is
-              returned.  This return value makes sense, because a
-              double click usually means that  an  field-specific
-              action  should be returned.  It is exactly the pur-
-              pose of this return value to signal that an  appli-
-              cation specific command should be executed.
-
-          o   If   a   translation   into  a  request  was  done,
-              form_driver returns the result of this request.
-
-       If you clicked outside the user window or the mouse  event
-       could   not   be   translated   into  a  form  request  an
-       E_REQUEST_DENIED is returned.
-
-   APPLICATION-DEFINED COMMANDS
-       If the second argument is neither printable nor one of the
-       above  pre-defined form requests, the driver assumes it is
-       an application-specific command and returns E_UNKNOWN_COM-
-       MAND.  Application-defined commands should be defined rel-
-       ative to MAX_COMMAND, the  maximum  value  of  these  pre-
-       defined requests.
-
-
-
-

RETURN VALUE

-       form_driver returns one of the following error codes:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_NOT_POSTED
-            The form has not been posted.
-
-       E_INVALID_FIELD
-            Contents of field is invalid.
-
-       E_REQUEST_DENIED
-            The form driver could not process the request.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_UNKNOWN_COMMAND
-            The form driver code saw an unknown request code.
-
-
-
-

SEE ALSO

-       curses(3x), form(3x), form_variables(3x), getch(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       files <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                        form_driver(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field.3x.html b/deps/ncurses-5.9/doc/html/man/form_field.3x.html deleted file mode 100644 index 0e7f821..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field.3x.html +++ /dev/null @@ -1,142 +0,0 @@ - - - - -form_field 3x - - - - -

form_field 3x

-
-
-
-form_field(3x)                                           form_field(3x)
-
-
-
-
-
-

NAME

-       form_field - make and break connections between fields and
-       forms
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_form_fields(FORM *form, FIELD **fields);
-       FIELD **form_fields(const FORM *form);
-       int field_count(const FORM *form);
-       int move_field(FIELD *field, int frow, int fcol);
-
-
-
-

DESCRIPTION

-       The function set_form_fields  changes  the  field  pointer
-       array  of the given form.  The array must be terminated by
-       a NULL.
-
-       The function form_fields returns the field  array  of  the
-       given form.
-
-       The  function  field_count  returns the count of fields in
-       form.
-
-       The function move_field moves the given field (which  must
-       be disconnected) to a specified location on the screen.
-
-
-
-

RETURN VALUES

-       The  function  form_fields returns a pointer (which may be
-       NULL).  It does not set errno.
-
-       The function field_count returns ERR if the form parameter
-       is NULL.
-
-       The functions set_form_fields and move_field return one of
-       the following codes on error:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_CONNECTED
-            The field is already connected to a form.
-
-       E_POSTED
-            The form is already posted.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-       The   SVr4   forms  library  documentation  specifies  the
-       field_count error value as -1 (which is the value of ERR).
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                         form_field(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_attributes.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_attributes.3x.html deleted file mode 100644 index 36b93e5..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_attributes.3x.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - -form_field_attributes 3x - - - - -

form_field_attributes 3x

-
-
-
-form_field_attributes(3x)                     form_field_attributes(3x)
-
-
-
-
-
-

NAME

-       form_field_attributes  -  color  and attribute control for
-       form fields
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_field_fore(FIELD *field, chtype attr);
-       chtype field_fore(const FIELD *field);
-       int set_field_back(FIELD *field, chtype attr);
-       chtype field_back(const FIELD *field);
-       int set_field_pad(FIELD *field, int pad);
-       int field_pad(const FIELD *field);
-
-
-
-

DESCRIPTION

-       The function set_field_fore sets the foreground  attribute
-       of  field. This is the highlight used to display the field
-       contents.  The function field_fore returns the  foreground
-       attribute.  The default is A_STANDOUT.
-
-       The  function set_field_back sets the background attribute
-       of form. This is the highlight used to display the  extent
-       fields  in  the form.  The function field_back returns the
-       background attribute.  The default is A_NORMAL.
-
-       The function set_field_pad sets the character used to fill
-       the  field.   The  function  field_pad  returns  the given
-       form's pad character.  The default is a blank.
-
-
-
-

RETURN VALUE

-       These routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                              form_field_attributes(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_buffer.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_buffer.3x.html deleted file mode 100644 index fe6b531..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_buffer.3x.html +++ /dev/null @@ -1,179 +0,0 @@ - - - - -form_field_buffer 3x - - - - -

form_field_buffer 3x

-
-
-
-form_field_buffer(3x)                             form_field_buffer(3x)
-
-
-
-
-
-

NAME

-       form_field_buffer - field buffer control
-
-
-
-

SYNOPSIS

-       #include <form.h>
-
-       int  set_field_buffer(FIELD  *field,  int  buf, const char
-       *value);
-       char *field_buffer(const FIELD *field, int buffer);
-       int set_field_status(FIELD *field, bool status);
-       bool field_status(const FIELD *field);
-       int set_max_field(FIELD *field, int max);
-
-
-
-

DESCRIPTION

-       The function set_field_buffer sets the numbered buffer  of
-       the given field to contain a given string:
-
-          o   Buffer 0 is the displayed value of the field.
-
-          o   Other numbered buffers may be allocated by applica-
-              tions   through   the   nbuf   argument   of   (see
-              form_field_new(3x))  but are not manipulated by the
-              forms library.
-
-       The function field_buffer returns a pointer  to  the  con-
-       tents of the given numbered buffer:
-
-          o   The  buffer  contents  always have the same length,
-              and are padded with trailing spaces  as  needed  to
-              ensure this length is the same.
-
-          o   The buffer may contain leading spaces, depending on
-              how it was set.
-
-          o   The buffer contents are set with  set_field_buffer,
-              or  as  a  side effect of any editing operations on
-              the corresponding field.
-
-          o   Editing operations are based on  the  window  which
-              displays the field, rather than a string.  The win-
-              dow contains  only  printable  characters,  and  is
-              filled  with blanks.  If you want the raw data, you
-              must write your own routine that copies  the  value
-              out  of  the  buffer  and  removes  the leading and
-              trailing spaces.
-
-          o   Because editing operations change  the  content  of
-              the  buffer to correspond to the window, you should
-              not rely on using buffers for long-term storage  of
-              form data.
-
-       The  function  set_field_status sets the associated status
-       flag of field; field_status gets the current  value.   The
-       status  flag  is set to a nonzero value whenever the field
-       changes.
-
-       The function set_max_field sets the  maximum  size  for  a
-       dynamic  field.   An  argument  of 0 turns off any maximum
-       size threshold for that field.
-
-
-
-

RETURN VALUE

-       The field_buffer function returns NULL on error.  It  sets
-       errno according to their success:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       The field_status function returns TRUE or FALSE.
-
-       The remaining routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file
-
-       When  configured for wide characters, field_buffer returns
-       a pointer to temporary storage (allocated and freed by the
-       library).   The  application  should not attempt to modify
-       the  data.   It  will  be  freed  on  the  next  call   to
-       field_buffer to return the same buffer.  <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                  form_field_buffer(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_info.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_info.3x.html deleted file mode 100644 index eec5556..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_info.3x.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - -form_field_info 3x - - - - -

form_field_info 3x

-
-
-
-form_field_info(3x)                                 form_field_info(3x)
-
-
-
-
-
-

NAME

-       form_field_info - retrieve field characteristics
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int field_info(const FIELD *field, int *rows, int *cols,
-                     int *frow, int *fcol, int *nrow, int *nbuf);
-       int  dynamic_field_info(const FIELD *field, int *rows, int
-       *cols, int *max);
-
-
-
-

DESCRIPTION

-       The  function  field_info  returns  the  sizes  and  other
-       attributes  passed  in  to the field at its creation time.
-       The attributes are: height, width, row of upper-left  cor-
-       ner,  column of upper-left corner, number off-screen rows,
-       and number of working buffers.
-
-       The function dynamic_field_info returns the actual size of
-       the  field,  and  its maximum possible size.  If the field
-       has no size limit, the location  addressed  by  the  third
-       argument will be set to 0.  A field can be made dynamic by
-       turning off the O_STATIC option with field_opts_off.
-
-
-
-

RETURN VALUE

-       These routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-       A null (zero pointer) is accepted for any  of  the  return
-       values,  to  ignore  that  value.  Not all implementations
-       allow this, e.g., Solaris 2.7 does not.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                    form_field_info(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_just.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_just.3x.html deleted file mode 100644 index 62dab75..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_just.3x.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - -form_field_just 3x - - - - -

form_field_just 3x

-
-
-
-form_field_just(3x)                                 form_field_just(3x)
-
-
-
-
-
-

NAME

-       form_field_just - retrieve field characteristics
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_field_just(FIELD *field, int justification);
-       int field_just(const FIELD *field);
-
-
-
-

DESCRIPTION

-       The   function   set_field_just   sets  the  justification
-       attribute of a field; field_just returns a field's  justi-
-       fication attribute.  The attribute may be one of NO_JUSTI-
-       FICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
-
-
-
-

RETURN VALUE

-       The function field_just returns one of:  NO_JUSTIFICATION,
-       JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER.
-
-       The function set_field_just returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                    form_field_just(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_new.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_new.3x.html deleted file mode 100644 index 66b8d80..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_new.3x.html +++ /dev/null @@ -1,150 +0,0 @@ - - - - -form_field_new 3x - - - - -

form_field_new 3x

-
-
-
-form_field_new(3x)                                   form_field_new(3x)
-
-
-
-
-
-

NAME

-       form_field_new - create and destroy form fields
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       FIELD *new_field(int height, int width,
-                        int toprow, int leftcol,
-                        int offscreen, int nbuffers);
-       FIELD *dup_field(FIELD *field, int toprow, int leftcol);
-       FIELD *link_field(FIELD *field, int toprow, int leftcol);
-       int free_field(FIELD *field);
-
-
-
-

DESCRIPTION

-       The  function new_field allocates a new field and initial-
-       izes it from the parameters given: height, width,  row  of
-       upper-left  corner,  column  of  upper-left corner, number
-       off-screen rows, and number of additional working buffers.
-
-       The function dup_field duplicates a field at a  new  loca-
-       tion.   Most attributes (including current contents, size,
-       validation type, buffer count, growth threshold,  justifi-
-       cation,  foreground,  background,  pad character, options,
-       and user pointer) are copied.  Field status and the  field
-       page bit are not copied.
-
-       The  function  link_field acts like dup_field, but the new
-       field shares buffers with its parent.  Attribute  data  is
-       separate.
-
-       The  function  free_field  de-allocates storage associated
-       with a field.
-
-
-
-

RETURN VALUE

-       The function, new_field, dup_field, link_field return NULL
-       on error.  They set errno according to their success:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_SYSTEM_ERROR
-            System error occurred, e.g., malloc failure.
-
-       The function free_field returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_CONNECTED
-            field is connected.
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-       It  may be unwise to count on the set of attributes copied
-       by dup_field being portable; the System  V  forms  library
-       documents are not very explicit about what gets copied and
-       what does not.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                     form_field_new(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_opts.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_opts.3x.html deleted file mode 100644 index 5463815..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_opts.3x.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - -form_field_opts 3x - - - - -

form_field_opts 3x

-
-
-
-form_field_opts(3x)                                 form_field_opts(3x)
-
-
-
-
-
-

NAME

-       form_field_opts - set and get field options
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_field_opts(FIELD *field, Field_Options opts);
-       int field_opts_on(FIELD *field, Field_Options opts);
-       int field_opts_off(FIELD *field, Field_Options opts);
-       Field_Options field_opts(const FIELD *field);
-
-
-
-

DESCRIPTION

-       The  function  set_field_opts  sets  all the given field's
-       option bits (field  option  bits  may  be  logically-OR'ed
-       together).
-
-       The function field_opts_on turns on the given option bits,
-       and leaves others alone.
-
-       The function field_opts_off turns  off  the  given  option
-       bits, and leaves others alone.
-
-       The function field_opts returns the field's current option
-       bits.
-
-       The following options are defined (all are on by default):
-
-       O_VISIBLE
-            The field is displayed.  If this option is off,  dis-
-            play of the field is suppressed.
-
-       O_ACTIVE
-            The  field  is  visited  during  processing.  If this
-            option is off, the field will  not  be  reachable  by
-            navigation  keys.  Please  notice  that  an invisible
-            field appears to be inactive also.
-
-       O_PUBLIC
-            The field contents are displayed as data is entered.
-
-       O_EDIT
-            The field can be edited.
-
-       O_WRAP
-            Words that do not fit on a line are  wrapped  to  the
-            next line.  Words are blank-separated.
-
-       O_BLANK
-            The  field is cleared whenever a character is entered
-            at the first position.
-
-       O_AUTOSKIP
-            Skip to the next field when this one fills.
-
-       O_NULLOK
-            Allow a blank field.
-
-       O_STATIC
-            Field buffers are fixed  to  field's  original  size.
-            Turn this option off to create a dynamic field.
-
-       O_PASSOK
-            Validate field only if modified by user.
-
-
-
-

RETURN VALUE

-       Except  for  field_opts,  each  routine returns one of the
-       following:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_CURRENT
-            The field is the current field.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                    form_field_opts(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_userptr.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_userptr.3x.html deleted file mode 100644 index 787e672..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_userptr.3x.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -form_field_userptr 3x - - - - -

form_field_userptr 3x

-
-
-
-form_field_userptr(3x)                           form_field_userptr(3x)
-
-
-
-
-
-

NAME

-       form_field_userptr  -  associate  application  data with a
-       form field
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_field_userptr(FIELD *field, void*userptr);
-       void *field_userptr(const FIELD *field);
-
-
-
-

DESCRIPTION

-       Every form field 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 that field.
-
-
-
-

RETURN VALUE

-       The function field_userptr returns a pointer (which may be
-       NULL).  It does not set errno.
-
-       The function set_field_userptr returns E_OK (success).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-       The user pointer is a void pointer.  We chose not to leave
-       it as a char pointer for SVr4 compatibility.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                 form_field_userptr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_field_validation.3x.html b/deps/ncurses-5.9/doc/html/man/form_field_validation.3x.html deleted file mode 100644 index e810402..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_field_validation.3x.html +++ /dev/null @@ -1,195 +0,0 @@ - - - - -form_field_validation 3x - - - - -

form_field_validation 3x

-
-
-
-form_field_validation(3x)                     form_field_validation(3x)
-
-
-
-
-
-

NAME

-       form_field_validation - data type validation for fields
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_field_type(FIELD *field, FIELDTYPE *type, ...);
-       FIELDTYPE *field_type(const FIELD *field);
-       void *field_arg(const FIELD *field);
-
-       FIELDTYPE *TYPE_ALNUM;
-       FIELDTYPE *TYPE_ALPHA;
-       FIELDTYPE *TYPE_ENUM;
-       FIELDTYPE *TYPE_INTEGER;
-       FIELDTYPE *TYPE_NUMERIC;
-       FIELDTYPE *TYPE_REGEXP;
-       FIELDTYPE *TYPE_IPV4;
-
-
-
-

DESCRIPTION

-       The  function  set_field_type  declares  a data type for a
-       given form field.  This is the type checked by  validation
-       functions.  The predefined types are as follows:
-
-       TYPE_ALNUM
-            Alphanumeric  data.  Requires a third int argument, a
-            minimum field width.
-
-       TYPE_ALPHA
-            Character data.  Requires a  third  int  argument,  a
-            minimum field width.
-
-       TYPE_ENUM
-            Accept one of a specified set of strings.  Requires a
-            third (char **) argument pointing to a string list; a
-            fourth  int flag argument to enable case-sensitivity;
-            and a fifth int flag argument  specifying  whether  a
-            partial  match  must be a unique one (if this flag is
-            off, a prefix matches the first of any  set  of  more
-            than  one  list  elements  with  that prefix). Please
-            notice that the string list is copied. So you may use
-            a  list  that  lives  in  automatic  variables on the
-            stack.
-
-       TYPE_INTEGER
-            Integer data, parsable  to  an  integer  by  atoi(3).
-            Requires  a third int argument controlling the preci-
-            sion, a fourth  long  argument  constraining  minimum
-            value,  and  a fifth long constraining maximum value.
-            If the maximum value is less than  or  equal  to  the
-            minimum value, the range is simply ignored. On return
-            the field buffer is formatted according to the printf
-            format   specification   ".*ld",  where  the  '*'  is
-            replaced by the precision argument.  For  details  of
-            the precision handling see printf's man-page.
-
-       TYPE_NUMERIC
-            Numeric   data   (may  have  a  decimal-point  part).
-            Requires a third int argument controlling the  preci-
-            sion,  a  fourth double argument constraining minimum
-            value, and a fifth double constraining maximum value.
-            If  your  system  supports locales, the decimal point
-            character to be used must be  the  one  specified  by
-            your  locale.   If  the maximum value is less than or
-            equal to the  minimum  value,  the  range  is  simply
-            ignored.  On  return  the  field  buffer is formatted
-            according to the printf format  specification  ".*f",
-            where  the '*' is replaced by the precision argument.
-            For details of the precision  handling  see  printf's
-            man-page.
-
-       TYPE_REGEXP
-            Regular  expression data.  Requires a regular expres-
-            sion (char *) third argument; the data  is  valid  if
-            the  regular  expression matches it.  Regular expres-
-            sions are in  the  format  of  regcomp  and  regexec.
-            Please  notice that the regular expression must match
-            the whole field. If you have  for  example  an  eight
-            character wide field, a regular expression "^[0-9]*$"
-            always means that you have to fill  all  eight  posi-
-            tions with digits. If you want to allow fewer digits,
-            you may use for example "^[0-9]* *$"  which  is  good
-            for  trailing  spaces  (up  to an empty field), or "^
-            *[0-9]* *$" which is good for  leading  and  trailing
-            spaces around the digits.
-
-       TYPE_IPV4
-            An Internet Protocol Version 4 address. This requires
-            no additional argument. It is checked whether or  not
-            the  buffer  has  the form a.b.c.d, where a,b,c and d
-            are numbers between 0 and 255. Trailing blanks in the
-            buffer  are  ignored. The address itself is not vali-
-            dated. Please note that this is an ncurses extension.
-            This  field type may not be available in other curses
-            implementations.
-
-       It is possible to  set  up  new  programmer-defined  field
-       types.  See the form_fieldtype(3x) manual page.
-
-
-
-

RETURN VALUE

-       The  functions  field_type  and  field_arg  return NULL on
-       error. The function set_field_type returns one of the fol-
-       lowing:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x), form_variables(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                              form_field_validation(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_fieldtype.3x.html b/deps/ncurses-5.9/doc/html/man/form_fieldtype.3x.html deleted file mode 100644 index 7f195ee..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_fieldtype.3x.html +++ /dev/null @@ -1,190 +0,0 @@ - - - - -form_fieldtype 3x - - - - -

form_fieldtype 3x

-
-
-
-form_fieldtype(3x)                                   form_fieldtype(3x)
-
-
-
-
-
-

NAME

-       form_fieldtype - define validation-field types
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       FIELDTYPE *new_fieldtype(
-           bool (* const field_check)(FIELD *, const void *),
-           bool (* const char_check)(int, const void *));
-       int free_fieldtype(FIELDTYPE *fieldtype);
-       int set_fieldtype_arg(
-           FIELDTYPE *fieldtype,
-           void *(* const make_arg)(va_list *),
-           void *(* const copy_arg)(const void *),
-           void  (* const free_arg)(void *));
-       int set_fieldtype_choice(
-           FIELDTYPE *fieldtype,
-           bool (* const next_choice)(FIELD *, const void *),
-           bool (* const prev_choice)(FIELD *, const void *));
-       FIELDTYPE *link_fieldtype(FIELDTYPE *type1,
-                                 FIELDTYPE *type2);
-
-
-
-

DESCRIPTION

-       The function new_fieldtype creates a new field type usable
-       for data validation.  You supply it  with  field_check,  a
-       predicate  to check the validity of an entered data string
-       whenever the user attempts to leave a field.   The  (FIELD
-       *)  argument  is passed in so the validation predicate can
-       see the field's buffer, sizes and  other  attributes;  the
-       second  argument  is  an  argument-block  structure, about
-       which more below.
-
-       You also supply new_fieldtype with char_check, a  function
-       to  validate input characters as they are entered; it will
-       be passed the character to be checked and a pointer to  an
-       argument-block structure.
-
-       The  function free_fieldtype frees the space allocated for
-       a given validation type.
-
-       The function set_fieldtype_arg associates  three  storage-
-       management  functions  with  a  field  type.  The make_arg
-       function is automatically applied to the list of arguments
-       you  give  set_field_type  when  attaching validation to a
-       field; its job is to bundle these into an allocated  argu-
-       ment-block  object which can later be passed to validation
-       predicated.  The other two hook arguments should copy  and
-       free  argument-block structures.  They will be used by the
-       forms-driver code.  You must supply the make_arg function,
-       the  other two are optional, you may supply NULL for them.
-       In this case it is assumed that make_arg does not allocate
-       memory  but simply loads the argument into a single scalar
-       value.
-
-       The function link_fieldtype creates a new field type  from
-       the  two  given  types.   They are connected by an logical
-       'OR'.
-
-       The   form    driver    requests    REQ_NEXT_CHOICE    and
-       REQ_PREV_CHOICE assume that the possible values of a field
-       form an ordered set, and provide the forms user with a way
-       to  move  through the set.  The set_fieldtype_choice func-
-       tion allows forms  programmers  to  define  successor  and
-       predecessor functions for the field type.  These functions
-       take the field pointer and an argument-block structure  as
-       arguments.
-
-
-
-

RETURN VALUE

-       The  pointer-valued  routines  return NULL on error.  They
-       set errno according to their success:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_SYSTEM_ERROR
-            System error occurred, e.g., malloc failure.
-
-       The  integer-valued  routines  return one of the following
-       codes on error:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_CONNECTED
-            The field is already connected to a form.
-
-       E_CURRENT
-            The field is the current field.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-       All of the (char *) arguments of  these  functions  should
-       actually  be (void *).  The type has been left uncorrected
-       for strict compatibility with System V.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                     form_fieldtype(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_hook.3x.html b/deps/ncurses-5.9/doc/html/man/form_hook.3x.html deleted file mode 100644 index 369c164..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_hook.3x.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -form_hook 3x - - - - -

form_hook 3x

-
-
-
-form_hook(3x)                                             form_hook(3x)
-
-
-
-
-
-

NAME

-       form_hook - set hooks for automatic invocation by applica-
-       tions
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_field_init(FORM *form, Form_Hook func);
-       Form_Hook field_init(const FORM *form);
-       int set_field_term(FORM *form, Form_Hook func);
-       Form_Hook field_term(const FORM *form);
-       int set_form_init(FORM *form, Form_Hook func);
-       Form_Hook form_init(const FORM *form);
-       int set_form_term(FORM *form, Form_Hook func);
-       Form_Hook form_term(const FORM *form);
-
-
-
-

DESCRIPTION

-       These functions make it possible to set hook functions  to
-       be called at various points in the automatic processing of
-       input event codes by form_driver.
-
-       The function set_field_init sets a hook to  be  called  at
-       form-post  time  and  each time the selected field changes
-       (after the change).  field_init returns the current  field
-       init hook, if any (NULL if there is no such hook).
-
-       The  function  set_field_term  sets a hook to be called at
-       form-unpost time and each time the selected field  changes
-       (before the change).  field_term returns the current field
-       term hook, if any (NULL if there is no such hook).
-
-       The function set_form_init sets a hook  to  be  called  at
-       form-post  time  and  just  after a page change once it is
-       posted.  form_init returns the current form init hook,  if
-       any (NULL if there is no such hook).
-
-       The  function  set_form_term  sets  a hook to be called at
-       form-unpost time and just before a page change once it  is
-       posted.   form_init returns the current form term hook, if
-       any (NULL if there is no such hook).
-
-
-
-

RETURN VALUE

-       Routines that return pointers return NULL on error.  Other
-       routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          form_hook(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_new.3x.html b/deps/ncurses-5.9/doc/html/man/form_new.3x.html deleted file mode 100644 index d73547a..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_new.3x.html +++ /dev/null @@ -1,132 +0,0 @@ - - - - -form_new 3x - - - - -

form_new 3x

-
-
-
-form_new(3x)                                               form_new(3x)
-
-
-
-
-
-

NAME

-       form_new - create and destroy forms
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       FORM *new_form(FIELD **fields);
-       int free_form(FORM *form);
-
-
-
-

DESCRIPTION

-       The  function  new_form  creates a new form connected to a
-       specified field pointer array (which must  be  NULL-termi-
-       nated).
-
-       The  function  free_form  disconnects  form from its field
-       array and frees the storage allocated for the form.
-
-
-
-

RETURN VALUE

-       The function new_form returns  NULL  on  error.   It  sets
-       errno according to the function's success:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_CONNECTED
-            The field is already connected to a form.
-
-       E_SYSTEM_ERROR
-            System error occurred, e.g., malloc failure.
-
-       The function free_form returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_POSTED
-            The form has already been posted.
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                           form_new(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_new_page.3x.html b/deps/ncurses-5.9/doc/html/man/form_new_page.3x.html deleted file mode 100644 index be9d115..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_new_page.3x.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - -form_new_page 3x - - - - -

form_new_page 3x

-
-
-
-form_new_page(3x)                                     form_new_page(3x)
-
-
-
-
-
-

NAME

-       form_new_page - form pagination functions
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_new_page(FIELD *field, bool new_page_flag);
-       bool new_page(const FIELD *field);
-
-
-
-

DESCRIPTION

-       The  function  set_new_page  sets or resets a flag marking
-       the given field as the beginning of  a  new  page  on  its
-       form.
-
-       The  function  new_page  is  a  predicate which tests if a
-       given field marks a page beginning on its form.
-
-
-
-

RETURN VALUE

-       The function new_page returns TRUE or FALSE.
-
-       The function set_new_page return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_CONNECTED
-            The given field is already connected to a form.
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "form_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                      form_new_page(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_opts.3x.html b/deps/ncurses-5.9/doc/html/man/form_opts.3x.html deleted file mode 100644 index 78d57fd..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_opts.3x.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -form_opts 3x - - - - -

form_opts 3x

-
-
-
-form_opts(3x)                                             form_opts(3x)
-
-
-
-
-
-

NAME

-       form_opts - set and get form options
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_form_opts(FORM *form, Field_Options opts);
-       int form_opts_on(FORM *form, Field_Options opts);
-       int form_opts_off(FORM *form, Field_Options opts);
-       Field_Options form_opts(const FORM *form);
-
-
-
-

DESCRIPTION

-       The  function  set_form_opts  sets  all  the  given form's
-       option bits  (form  option  bits  may  be  logically-OR'ed
-       together).
-
-       The  function form_opts_on turns on the given option bits,
-       and leaves others alone.
-
-       The function form_opts_off  turns  off  the  given  option
-       bits, and leaves others alone.
-
-       The  function  form_opts returns the form's current option
-       bits.
-
-       The following options are defined (all are on by default):
-
-       O_NL_OVERLOAD
-            Overload the REQ_NEW_LINE  forms  driver  request  so
-            that  calling  it  at  the end of a field goes to the
-            next field.
-
-       O_BS_OVERLOAD
-            Overload the REQ_DEL_PREV  forms  driver  request  so
-            that  calling  it at the beginning of a field goes to
-            the previous field.
-
-
-
-

RETURN VALUE

-       Except for form_opts, each routine returns one of the fol-
-       lowing:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          form_opts(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_page.3x.html b/deps/ncurses-5.9/doc/html/man/form_page.3x.html deleted file mode 100644 index 2168af1..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_page.3x.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -form_page 3x - - - - -

form_page 3x

-
-
-
-form_page(3x)                                             form_page(3x)
-
-
-
-
-
-

NAME

-       form_page - set and get form page number
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_current_field(FORM *form, FIELD *field);
-       FIELD *current_field(const FORM *);
-       int set_form_page(FORM *form, int n);
-       int form_page(const FORM *form);
-       int field_index(const FIELD *field);
-
-
-
-

DESCRIPTION

-       The  function  set_current field sets the current field of
-       the given form; current_field returns the current field of
-       the given form.
-
-       The  function  set_form_page  sets  the form's page number
-       (goes to page n of the form).
-
-       The function form_page returns  the  form's  current  page
-       number.
-
-       The function field_index returns the index of the field in
-       the field array of the form it is connected to. It returns
-       ERR  if  the  argument is the null pointer or the field is
-       not connected.
-
-
-
-

RETURN VALUE

-       Except for form_page, each routine returns one of the fol-
-       lowing:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_INVALID_FIELD
-            Contents of a field are not valid.
-
-       E_REQUEST_DENIED
-            The form driver could not process the request.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          form_page(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_post.3x.html b/deps/ncurses-5.9/doc/html/man/form_post.3x.html deleted file mode 100644 index 1e7e714..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_post.3x.html +++ /dev/null @@ -1,136 +0,0 @@ - - - - -form_post 3x - - - - -

form_post 3x

-
-
-
-form_post(3x)                                             form_post(3x)
-
-
-
-
-
-

NAME

-       form_post  -  write or erase forms from associated subwin-
-       dows
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int post_form(FORM *form);
-       int unpost_form(FORM *form);
-
-
-
-

DESCRIPTION

-       The function post_form displays a form to  its  associated
-       subwindow.   To trigger physical display of the subwindow,
-       use  refresh  or  some  equivalent  curses  routine   (the
-       implicit  doupdate  triggered  by  an curses input request
-       will do).
-
-       The function unpost_form erases form from  its  associated
-       subwindow.
-
-
-
-

RETURN VALUE

-       These routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_NOT_POSTED
-            The form has not been posted.
-
-       E_NOT_CONNECTED
-            No items are connected to the form.
-
-       E_NO_ROOM
-            Form is too large for its window.
-
-       E_POSTED
-            The form has already been posted.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          form_post(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_requestname.3x.html b/deps/ncurses-5.9/doc/html/man/form_requestname.3x.html deleted file mode 100644 index 8400063..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_requestname.3x.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -form_requestname 3x - - - - -

form_requestname 3x

-
-
-
-form_requestname(3x)                               form_requestname(3x)
-
-
-
-
-
-

NAME

-       form_requestname - handle printable form request names
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       const char *form_request_name(int request);
-       int form_request_by_name(const char *name);
-
-
-
-

DESCRIPTION

-       The  function form_request_name returns the printable name
-       of a form request code.
-       The function form_request_by_name searches in the name-ta-
-       ble  for  a  request  with  the given name and returns its
-       request code. Otherwise E_NO_MATCH is returned.
-
-
-
-

RETURN VALUE

-       form_request_name returns NULL on error and sets errno  to
-       E_BAD_ARGUMENT.
-       form_request_by_name returns E_NO_MATCH on error.  It does
-       not set errno.
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  are  specific  to ncurses.  They were not
-       supported on Version 7, BSD or System  V  implementations.
-       It  is recommended that any code depending on them be con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                   form_requestname(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_userptr.3x.html b/deps/ncurses-5.9/doc/html/man/form_userptr.3x.html deleted file mode 100644 index 189fca2..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_userptr.3x.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -form_userptr 3x - - - - -

form_userptr 3x

-
-
-
-form_userptr(3x)                                       form_userptr(3x)
-
-
-
-
-
-

NAME

-       form_userptr - associate application data with a form item
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_form_userptr(FORM *form, void *userptr);
-       void* form_userptr(const FORM *form);
-
-
-
-

DESCRIPTION

-       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.
-
-
-
-

RETURN VALUE

-       The function form_userptr returns a pointer (which may  be
-       NULL).  It does not set errno.
-
-       The function set_form_userptr returns E_OK (success).
-
-
-
-

SEE ALSO

-       curses(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V forms  library.   They
-       were not supported on Version 7 or BSD versions.
-
-       The user pointer is a void pointer.  We chose not to leave
-       it as a char pointer for SVr4 compatibility.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                       form_userptr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_variables.3x.html b/deps/ncurses-5.9/doc/html/man/form_variables.3x.html deleted file mode 100644 index 5d252d9..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_variables.3x.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -form_variables 3x - - - - -

form_variables 3x

-
-
-
-form_variables(3x)                                   form_variables(3x)
-
-
-
-
-
-

NAME

-       TYPE_ALNUM, TYPE_ALPHA, TYPE_ENUM, TYPE_INTEGER,
-       TYPE_IPV4, TYPE_NUMERIC, TYPE_REGEXP - form system global
-       variables
-
-
-
-

SYNOPSIS

-       #include <form.h>
-
-       FIELDTYPE * TYPE_ALNUM;
-       FIELDTYPE * TYPE_ALPHA;
-       FIELDTYPE * TYPE_ENUM;
-       FIELDTYPE * TYPE_INTEGER;
-       FIELDTYPE * TYPE_IPV4;
-       FIELDTYPE * TYPE_NUMERIC;
-       FIELDTYPE * TYPE_REGEXP;
-
-
-
-

DESCRIPTION

-       These  are  building blocks for the form library, defining
-       fields that can be created using set_fieldtype(3x).   Each
-       provides  functions  for  field- and character-validation,
-       according to the given datatype.
-
-   TYPE_ALNUM
-       This holds alphanumeric data.
-
-   TYPE_ALPHA
-       This holds alphabetic data.
-
-   TYPE_ENUM
-       This holds an enumerated type.
-
-   TYPE_INTEGER
-       This holds a decimal integer.
-
-   TYPE_IPV4
-       This holds an IPv4 internet address, e.g., "127.0.0.1".
-
-   TYPE_NUMERIC
-       This holds a decimal number, with optional sign and  deci-
-       mal point.
-
-   TYPE_REGEXP
-       This holds a regular expression.
-
-
-
-

PORTABILITY

-       The  TYPE_IPV4  variable  is  an extension not provided by
-       older implementations of the form library.
-
-
-
-

SEE ALSO

-       form(3x).
-
-
-
-                                                     form_variables(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/form_win.3x.html b/deps/ncurses-5.9/doc/html/man/form_win.3x.html deleted file mode 100644 index 9baa68f..0000000 --- a/deps/ncurses-5.9/doc/html/man/form_win.3x.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -form_win 3x - - - - -

form_win 3x

-
-
-
-form_win(3x)                                               form_win(3x)
-
-
-
-
-
-

NAME

-       form_win  - make and break form window and subwindow asso-
-       ciations
-
-
-
-

SYNOPSIS

-       #include <form.h>
-       int set_form_win(FORM *form, WINDOW *win);
-       WINDOW *form_win(const FORM *form);
-       int set_form_sub(FORM *form, WINDOW *sub);
-       WINDOW *form_sub(const FORM *form);
-       int scale_form(const FORM *form, int *rows, int *columns);
-
-
-
-

DESCRIPTION

-       Every form has an associated pair of curses windows.   The
-       form  window displays any title and border associated with
-       the window; the form subwindow displays the items  of  the
-       form that are currently available for selection.
-
-       The first four functions get and set those windows.  It is
-       not necessary to set either window; by default, the driver
-       code uses stdscr for both.
-
-       In  the set_ functions, window argument of NULL is treated
-       as though it were stsdcr.  A  form  argument  of  NULL  is
-       treated  as  a  request  to change the system default form
-       window or subwindow.
-
-       The function scale_form returns the minimum size  required
-       for the subwindow of form.
-
-
-
-

RETURN VALUE

-       Routines  that return pointers return NULL on error.  Rou-
-       tines that return an integer return one of  the  following
-       error codes:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_POSTED
-            The form has already been posted.
-
-       E_NOT_CONNECTED
-            No items are connected to the form.
-
-
-
-

SEE ALSO

-       curses(3x), curs_variables(3x), form(3x).
-
-
-
-

NOTES

-       The header file <form.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate the System V forms library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                           form_win(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/index.html b/deps/ncurses-5.9/doc/html/man/index.html deleted file mode 100644 index 64a832f..0000000 --- a/deps/ncurses-5.9/doc/html/man/index.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - -NCURSES – Manual Pages - - - -
- - - diff --git a/deps/ncurses-5.9/doc/html/man/infocmp.1m.html b/deps/ncurses-5.9/doc/html/man/infocmp.1m.html deleted file mode 100644 index 553e385..0000000 --- a/deps/ncurses-5.9/doc/html/man/infocmp.1m.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - -infocmp 1m - - - - -

infocmp 1m

-
-
-
-infocmp(1m)                                                 infocmp(1m)
-
-
-
-
-
-

NAME

-       infocmp - compare or print out terminfo descriptions
-
-
-
-

SYNOPSIS

-       infocmp [-1CEFGILTUVcdegilnpqrtux]
-             [-v n] [-s d| i| l| c] [-R subset]
-             [-w width] [-A directory] [-B directory]
-             [termname...]
-
-
-
-

DESCRIPTION

-       infocmp  can  be  used  to compare a binary terminfo entry
-       with other terminfo entries, rewrite a  terminfo  descrip-
-       tion  to  take  advantage  of  the use= terminfo field, or
-       print out a terminfo  description  from  the  binary  file
-       (term) 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.
-
-   Default Options
-       If  no options are specified and zero or one termnames are
-       specified, the -I option will be assumed.   If  more  than
-       one  termname is specified, the -d option will be assumed.
-
-   Comparison Options [-d] [-c] [-n]
-       infocmp compares the terminfo  description  of  the  first
-       terminal  termname  with each of the descriptions given by
-       the entries for the  other  terminal's  termnames.   If  a
-       capability  is  defined for only one of the terminals, the
-       value returned will depend on the type of the  capability:
-       F  for  boolean  variables,  -1 for integer variables, and
-       NULL for string variables.
-
-       The -d option produces a list of each capability  that  is
-       different  between  two entries.  This option is useful to
-       show the difference between two entries, created  by  dif-
-       ferent people, for the same or similar terminals.
-
-       The  -c  option produces a list of each capability that is
-       common between two entries.  Capabilities that are not set
-       are  ignored.  This option can be used as a quick check to
-       see if the -u option is worth using.
-
-       The -n option produces a list of each capability  that  is
-       in neither entry.  If no termnames are given, the environ-
-       ment variable TERM will be used for both of the termnames.
-       This  can  be used as a quick check to see if anything was
-       left out of a description.
-
-   Source Listing Options [-I] [-L] [-C] [-r]
-       The -I, -L, and -C options will produce a  source  listing
-       for each terminal named.
-
-      -I   use the terminfo names
-      -L   use the long C variable name listed in <term.h>
-      -C   use the termcap names
-      -r   when using -C, put out all capabilities in termcap form
-
-       If  no  termnames are given, the environment variable TERM
-       will be used for the terminal name.
-
-       The source produced by the -C option may be used  directly
-       as  a termcap entry, but not all parameterized strings can
-       be changed to the termcap format.  infocmp will attempt to
-       convert  most  of  the parameterized information, and any-
-       thing not converted will be plainly marked in  the  output
-       and commented out.  These should be edited by hand.
-
-       All  padding  information  for  strings  will be collected
-       together and placed at the beginning of the  string  where
-       termcap  expects  it.  Mandatory padding (padding informa-
-       tion with a trailing '/') will become optional.
-
-       All termcap variables no longer supported by terminfo, but
-       which are derivable from other terminfo variables, will be
-       output.  Not all terminfo capabilities will be translated;
-       only  those variables which were part of termcap will nor-
-       mally be output.  Specifying the -r option will  take  off
-       this  restriction,  allowing all capabilities to be output
-       in termcap form.
-
-       Note that because padding is collected to the beginning of
-       the  capability,  not all capabilities are output.  Manda-
-       tory padding is not supported.   Because  termcap  strings
-       are  not as flexible, it is not always possible to convert
-       a terminfo string capability into  an  equivalent  termcap
-       format.   A subsequent conversion of the termcap file back
-       into terminfo format will not  necessarily  reproduce  the
-       original terminfo source.
-
-       Some  common  terminfo  parameter sequences, their termcap
-       equivalents, and some terminal types which  commonly  have
-       such sequences, are:
-
-     terminfo                    termcap   Representative Terminals
-     ---------------------------------------------------------------
-     %p1%c                       %.        adm
-     %p1%d                       %d        hp, ANSI standard, vt100
-     %p1%'x'%+%c                 %+x       concept
-     %i                          %iq       ANSI standard, vt100
-     %p1%?%'x'%>%t%p1%'y'%+%;    %>xy      concept
-     %p2 is printed before %p1   %r        hp
-
-   Use= Option [-u]
-       The  -u  option  produces a terminfo source description of
-       the first terminal termname which is relative to  the  sum
-       of  the  descriptions  given  by the entries for the other
-       terminals termnames.  It does this by analyzing  the  dif-
-       ferences   between   the  first  termname  and  the  other
-       termnames and producing a description with use= fields for
-       the  other  terminals.   In this manner, it is possible to
-       retrofit  generic  terminfo  entries  into  a   terminal's
-       description.  Or, if two similar terminals exist, but were
-       coded at different times or by different  people  so  that
-       each description is a full description, using infocmp will
-       show what can be done to change one description to be rel-
-       ative to the other.
-
-       A capability will get printed with an at-sign (@) if it no
-       longer exists in the first termname, but one of the  other
-       termname  entries contains a value for it.  A capability's
-       value gets printed if the value in the first  termname  is
-       not  found in any of the other termname entries, or if the
-       first of the other termname entries that has this capabil-
-       ity  gives  a different value for the capability than that
-       in the first termname.
-
-       The order of the other termname  entries  is  significant.
-       Since  the terminfo compiler tic does a left-to-right scan
-       of the capabilities, specifying two use= entries that con-
-       tain differing entries for the same capabilities will pro-
-       duce different results depending on  the  order  that  the
-       entries  are  given in.  infocmp will flag any such incon-
-       sistencies between the other termname entries as they  are
-       found.
-
-       Alternatively,  specifying a capability after a use= entry
-       that contains that capability will cause the second speci-
-       fication  to  be  ignored.   Using  infocmp  to recreate a
-       description can be a useful check to make sure that every-
-       thing  was  specified  correctly  in  the  original source
-       description.
-
-       Another error  that  does  not  cause  incorrect  compiled
-       files,  but will slow down the compilation time, is speci-
-       fying extra use= fields  that  are  superfluous.   infocmp
-       will  flag  any  other  termname use= fields that were not
-       needed.
-
-   Changing Databases [-A directory] [-B directory]
-       The location of the compiled terminfo  database  is  taken
-       from  the environment variable TERMINFO .  If the variable
-       is not defined, or the terminal is not found in that loca-
-       tion,  the  system  terminfo  database, in /usr/share/ter-
-       minfo, will be used.  The options -A and -B may be used to
-       override  this  location.  The -A option will set TERMINFO
-       for the first termname and the -B option will set TERMINFO
-       for  the  other  termnames.   With this, it is possible to
-       compare descriptions for a terminal  with  the  same  name
-       located  in  two  different databases.  This is useful for
-       comparing descriptions for the same  terminal  created  by
-       different people.
-
-   Other Options
-       -1   causes  the  fields  to be printed out one to a line.
-            Otherwise, the fields will be printed  several  to  a
-            line to a maximum width of 60 characters.
-
-       -a   tells  infocmp  to  retain commented-out capabilities
-            rather than discarding them.  Capabilities  are  com-
-            mented by prefixing them with a period.
-
-       -E   Dump  the  capabilities  of  the  given  terminal  as
-            tables, needed in the C initializer  for  a  TERMTYPE
-            structure  (the  terminal capability structure in the
-            <term.h>).  This option is useful for preparing  ver-
-            sions  of  the  curses  library hardwired for a given
-            terminal type.  The tables are all  declared  static,
-            and  are  named according to the type and the name of
-            the corresponding terminal entry.
-
-            Before ncurses 5.0, the split between the -e  and  -E
-            options  was  not  needed;  but  support for extended
-            names required making the arrays of terminal capabil-
-            ities separate from the TERMTYPE structure.
-
-       -e   Dump  the  capabilities  of the given terminal as a C
-            initializer for a TERMTYPE  structure  (the  terminal
-            capability  structure  in the <term.h>).  This option
-            is  useful  for  preparing  versions  of  the  curses
-            library hardwired for a given terminal type.
-
-       -F   compare  terminfo  files.  This assumes that two fol-
-            lowing  arguments  are  filenames.   The  files   are
-            searched  for  pairwise matches between entries, with
-            two entries considered to match if any of their names
-            do.   The  report  printed  to  standard output lists
-            entries with  no  matches  in  the  other  file,  and
-            entries  with  more than one match.  For entries with
-            exactly one match it includes  a  difference  report.
-            Normally,  to  reduce  the  volume of the report, use
-            references are not resolved before looking  for  dif-
-            ferences, but resolution can be forced by also speci-
-            fying -r.
-
-       -f   Display  complex  terminfo  strings   which   contain
-            if/then/else/endif expressions indented for readabil-
-            ity.
-
-       -G   Display constant literals in decimal form rather than
-            their character equivalents.
-
-       -g   Display  constant  character  literals in quoted form
-            rather than their decimal equivalents.
-
-       -i   Analyze the initialization (is1, is2, is3), and reset
-            (rs1,  rs2,  rs3),  strings  in  the entry.  For each
-            string, the code tries to analyze it into actions  in
-            terms of the other capabilities in the entry, certain
-            X3.64/ISO 6429/ECMA-48 capabilities, and certain  DEC
-            VT-series  private  modes (the set of recognized spe-
-            cial sequences has  been  selected  for  completeness
-            over  the  existing  terminfo database).  Each report
-            line consists of the capability name, followed  by  a
-            colon and space, followed by a printable expansion of
-            the capability string with sections  matching  recog-
-            nized  actions  translated into {}-bracketed descrip-
-            tions.  Here  is  a  list  of  the  DEC/ANSI  special
-            sequences recognized: i.
-
-                  Action        Meaning
-                  -----------------------------------------
-                  RIS           full reset
-                  SC            save cursor
-                  RC            restore cursor
-                  LL            home-down
-                  RSR           reset scroll region
-                  -----------------------------------------
-                  DECSTR        soft reset (VT320)
-                  S7C1T         7-bit controls (VT220)
-                  -----------------------------------------
-                  ISO DEC G0    enable DEC graphics for G0
-                  ISO UK G0     enable UK chars for G0
-                  ISO US G0     enable US chars for G0
-                  ISO DEC G1    enable DEC graphics for G1
-                  ISO UK G1     enable UK chars for G1
-                  ISO US G1     enable US chars for G1
-                  -----------------------------------------
-                  DECPAM        application keypad mode
-                  DECPNM        normal keypad mode
-                  DECANSI       enter ANSI mode
-                  -----------------------------------------
-                  ECMA[+-]AM    keyboard action mode
-                  ECMA[+-]IRM   insert replace mode
-                  ECMA[+-]SRM   send receive mode
-                  ECMA[+-]LNM   linefeed mode
-                  -----------------------------------------
-                  DEC[+-]CKM    application cursor keys
-                  DEC[+-]ANM    set VT52 mode
-                  DEC[+-]COLM   132-column mode
-
-                  DEC[+-]SCLM   smooth scroll
-                  DEC[+-]SCNM   reverse video mode
-                  DEC[+-]OM     origin mode
-                  DEC[+-]AWM    wraparound mode
-                  DEC[+-]ARM    auto-repeat mode
-
-            It  also  recognizes  a  SGR  action corresponding to
-            ANSI/ISO 6429/ECMA Set Graphics Rendition,  with  the
-            values  NORMAL,  BOLD, UNDERLINE, BLINK, and REVERSE.
-            All but NORMAL may be prefixed with `+' (turn on)  or
-            `-' (turn off).
-
-       An SGR0 designates an empty highlight sequence (equivalent
-       to {SGR:NORMAL}).
-
-       -l   Set output format to terminfo.
-
-       -p   Ignore padding specifications when comparing strings.
-
-       -q   Make  the comparison listing shorter by omitting sub-
-            headings, and using "-" for absent capabilities,  "@"
-            for canceled rather than "NULL".
-
-       -Rsubset
-            Restrict  output  to  a given subset.  This option is
-            for use with archaic versions of terminfo like  those
-            on  SVr1,  Ultrix,  or  HP/UX that do not support the
-            full set of SVR4/XSI Curses  terminfo;  and  variants
-            such as AIX that have their own extensions incompati-
-            ble with SVr4/XSI.  Available  terminfo  subsets  are
-            "SVr1",  "Ultrix",  "HP",  and "AIX"; see terminfo(5)
-            for details.  You can also choose  the  subset  "BSD"
-            which  selects only capabilities with termcap equiva-
-            lents recognized by 4.4BSD.
-
-       -s [d|i|l|c]
-            The -s option  sorts  the  fields  within  each  type
-            according to the argument below:
-
-            d    leave  fields  in the order that they are stored
-                 in the terminfo database.
-
-            i    sort by terminfo name.
-
-            l    sort by the long C variable name.
-
-            c    sort by the termcap name.
-
-            If the -s option is not given, the fields printed out
-            will  be  sorted  alphabetically by the terminfo name
-            within each type, except in the case of the -C or the
-            -L options, which cause the sorting to be done by the
-            termcap name or the long  C  variable  name,  respec-
-            tively.
-
-       -T   eliminates  size-restrictions  on the generated text.
-            This is mainly useful for testing and analysis, since
-            the compiled descriptions are limited (e.g., 1023 for
-            termcap, 4096 for terminfo).
-
-       -t   tells  tic  to  discard  commented-out  capabilities.
-            Normally  when  translating from terminfo to termcap,
-            untranslatable capabilities are commented-out.
-
-       -U   tells infocmp to  not  post-process  the  data  after
-            parsing  the  source  file.   This feature helps when
-            comparing the actual contents of  two  source  files,
-            since  it  excludes the inferences that infocmp makes
-            to fill in missing data.
-
-       -V   reports the version of ncurses which was used in this
-            program, and exits.
-
-       -v n prints  out  tracing information on standard error as
-            the program runs.  Higher values of n induce  greater
-            verbosity.
-
-       -w width
-            changes the output to width characters.
-
-       -x   print   information  for  user-defined  capabilities.
-            These are extensions to the terminfo repertoire which
-            can be loaded using the -x option of tic.
-
-
-
-

FILES

-       /usr/share/terminfo Compiled      terminal     description
-                           database.
-
-
-
-

EXTENSIONS

-       The -E, -F, -G, -R, -T, -V, -a, -e, -f, -g, -i, -l, -p, -q
-       and -t options are not supported in SVr4 curses.
-
-       The -r 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 -r
-       -RBSD.
-
-
-
-

BUGS

-       The -F option of infocmp(1m) should be a toe(1m) mode.
-
-
-
-

SEE ALSO

-       captoinfo(1m),    infotocap(1m),     tic(1m),     toe(1m),
-       curses(3x), terminfo(5).
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-

AUTHOR

-       Eric S. Raymond <esr@snark.thyrsus.com> and
-       Thomas E. Dickey <dickey@invisible-island.net>
-
-
-
-                                                            infocmp(1m)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/infotocap.1m.html b/deps/ncurses-5.9/doc/html/man/infotocap.1m.html deleted file mode 100644 index a143e45..0000000 --- a/deps/ncurses-5.9/doc/html/man/infotocap.1m.html +++ /dev/null @@ -1,115 +0,0 @@ - - - - -infotocap 1m - - - - -

infotocap 1m

-
-
-
-infotocap(1m)                                             infotocap(1m)
-
-
-
-
-
-

NAME

-       infotocap  - convert a terminfo description into a termcap
-       description
-
-
-
-

SYNOPSIS

-       infotocap [-vn width]  [-V] [-1] [-w width] file . . .
-
-
-
-

DESCRIPTION

-       infotocap looks in  each  given  text  file  for  terminfo
-       descriptions.   For  each  terminfo  description found, an
-       equivalent termcap description is written to standard out-
-       put.  Terminfo use capabilities are translated directly to
-       termcap tc capabilities.
-
-       -v   print out tracing information on  standard  error  as
-            the program runs.
-
-       -V   print  out the version of the program in use on stan-
-            dard error and exit.
-
-       -1   cause the fields to print out one to a line.   Other-
-            wise, the fields will be printed several to a line to
-            a maximum width of 60 characters.
-
-       -w   change the output to width characters.
-
-
-
-

FILES

-       /usr/share/terminfo Compiled     terminal      description
-                           database.
-
-
-
-

NOTES

-       This  utility  is  actually  a  link to tic, running in -C
-       mode.  You can use other tic options such as -f and  -x.
-
-
-
-

SEE ALSO

-       curses(3x), tic(1m), infocmp(1m), terminfo(5)
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-

AUTHOR

-       Eric S. Raymond <esr@snark.thyrsus.com> and
-       Thomas E. Dickey <dickey@invisible-island.net>
-
-
-
-                                                          infotocap(1m)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/key_defined.3x.html b/deps/ncurses-5.9/doc/html/man/key_defined.3x.html deleted file mode 100644 index ee6126b..0000000 --- a/deps/ncurses-5.9/doc/html/man/key_defined.3x.html +++ /dev/null @@ -1,103 +0,0 @@ - - - - -key_defined 3x - - - - -

key_defined 3x

-
-
-
-key_defined(3x)                                         key_defined(3x)
-
-
-
-
-
-

NAME

-       key_defined - check if a keycode is defined
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int key_defined(const char *definition);
-
-
-
-

DESCRIPTION

-       This is an extension to the curses library.  It permits an
-       application to determine if a string is currently bound to
-       any keycode.
-
-
-
-

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.
-
-
-
-

PORTABILITY

-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on them be  con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       define_key(3x).
-
-
-
-

AUTHOR

-       Thomas Dickey.
-
-
-
-                                                        key_defined(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/keybound.3x.html b/deps/ncurses-5.9/doc/html/man/keybound.3x.html deleted file mode 100644 index 5b54466..0000000 --- a/deps/ncurses-5.9/doc/html/man/keybound.3x.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -keybound 3x - - - - -

keybound 3x

-
-
-
-keybound(3x)                                               keybound(3x)
-
-
-
-
-
-

NAME

-       keybound - return definition of keycode
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       char * keybound(int keycode, int count);
-
-
-
-

DESCRIPTION

-       This is an extension to the curses library.  It permits an
-       application to determine the string which  is  defined  in
-       the terminfo for specific keycodes.
-
-
-
-

RETURN VALUE

-       The keycode parameter must be greater than zero, else NULL
-       is returned.  If it does not correspond to a defined  key,
-       then  NULL  is  returned.   The count parameter is used to
-       allow the application to iterate through multiple  defini-
-       tions,  counting from zero.  When successful, the function
-       returns a string which must be freed by the caller.
-
-
-
-

PORTABILITY

-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on them be  con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       define_key(3x), keyok(3x).
-
-
-
-

AUTHOR

-       Thomas Dickey.
-
-
-
-                                                           keybound(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/keyok.3x.html b/deps/ncurses-5.9/doc/html/man/keyok.3x.html deleted file mode 100644 index d2b0be1..0000000 --- a/deps/ncurses-5.9/doc/html/man/keyok.3x.html +++ /dev/null @@ -1,105 +0,0 @@ - - - - -keyok 3x - - - - -

keyok 3x

-
-
-
-keyok(3x)                                                     keyok(3x)
-
-
-
-
-
-

NAME

-       keyok - enable or disable a keycode
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int keyok(int keycode, bool enable);
-
-
-
-

DESCRIPTION

-       This is an extension to the curses library.  It permits an
-       application to disable specific keycodes, rather than  use
-       the  keypad  function  to disable all keycodes.  Keys that
-       have been disabled can be re-enabled.
-
-
-
-

RETURN VALUE

-       The keycode  must  be  greater  than  zero,  else  ERR  is
-       returned.   If  it  does  not correspond to a defined key,
-       then ERR is returned.  If the enable  parameter  is  true,
-       then  the  key  must  have  been disabled, and vice versa.
-       Otherwise, the function returns OK.
-
-
-
-

PORTABILITY

-       These routines are specific to  ncurses.   They  were  not
-       supported  on  Version 7, BSD or System V implementations.
-       It is recommended that any code depending on them be  con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       define_key(3x).
-
-
-
-

AUTHOR

-       Thomas Dickey.
-
-
-
-                                                              keyok(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/legacy_coding.3x.html b/deps/ncurses-5.9/doc/html/man/legacy_coding.3x.html deleted file mode 100644 index 03eea8b..0000000 --- a/deps/ncurses-5.9/doc/html/man/legacy_coding.3x.html +++ /dev/null @@ -1,118 +0,0 @@ - - - - -legacy_coding 3x - - - - -

legacy_coding 3x

-
-
-
-legacy_coding(3x)                                     legacy_coding(3x)
-
-
-
-
-
-

NAME

-       use_legacy_coding - use terminal's default colors
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int use_legacy_coding(int level);
-
-
-
-

DESCRIPTION

-       The  use_legacy_coding()  function  is an extension to the
-       curses library.  It allows the caller to change the result
-       of  unctrl, and suppress related checks within the library
-       that would normally cause  nonprinting  characters  to  be
-       rendered in visible form.  This affects only 8-bit charac-
-       ters.
-
-       The level parameter controls the result:
-
-              0    the library functions normally, rendering non-
-                   printing characters as described in unctrl.
-
-              1    the  library ignores isprintf for codes in the
-                   range 160-255.
-
-              2    the library ignores isprintf for codes in  the
-                   range 128-255.  It also modifies the output of
-                   unctrl, showing codes in the range 128-159  as
-                   is.
-
-
-
-

RETURN VALUE

-       If  the  screen  has  not  been  initialized, or the level
-       parameter is out of range, the function returns ERR.  Oth-
-       erwise, it returns the previous level: 0, 1 or 2.
-
-
-
-

PORTABILITY

-       This routine is specific to ncurses.  It was not supported
-       on Version 7, BSD or System V implementations.  It is rec-
-       ommended  that any code depending on ncurses extensions be
-       conditioned using NCURSES_VERSION.
-
-
-
-

SEE ALSO

-       unctrl.
-
-
-
-

AUTHOR

-       Thomas Dickey (to support lynx's font-switching feature).
-
-
-
-                                                      legacy_coding(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu.3x.html b/deps/ncurses-5.9/doc/html/man/menu.3x.html deleted file mode 100644 index adfde4c..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu.3x.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - -menu 3x - - - - -

menu 3x

-
-
-
-menu(3x)                                                       menu(3x)
-
-
-
-
-
-

NAME

-       menu - curses extension for programming menus
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-
-
-
-

DESCRIPTION

-       The  menu library provides terminal-independent facilities
-       for composing menu systems  on  character-cell  terminals.
-       The library includes: item routines, which create and mod-
-       ify menu items; and menu routines, which group items  into
-       menus, display menus on the screen, and handle interaction
-       with the user.
-
-       The menu library uses the curses libraries, and  a  curses
-       initialization  routine  such  as  initscr  must be called
-       before using any of these  functions.   To  use  the  menu
-       library, link with the options -lmenu -lcurses.
-
-   Current Default Values for Item Attributes
-       The  menu  library  maintains  a  default  value  for item
-       attributes.  You can get or set this  default  by  calling
-       the  appropriate  get_  or  set_  routine with a NULL item
-       pointer.  Changing  this  default  with  a  set_  function
-       affects  future  item  creations,  but does not change the
-       rendering of items already created.
-
-   Routine Name Index
-       The following table lists each menu routine and  the  name
-       of the manual page on which it is described.
-
-       curses Routine Name    Manual Page Name
-       --------------------------------------------
-       current_item           mitem_current(3x)
-       free_item              mitem_new(3x)
-       free_menu              menu_new(3x)
-       item_count             menu_items(3x)
-       item_description       mitem_name(3x)
-       item_index             mitem_current(3x)
-       item_init              menu_hook(3x)
-       item_name              mitem_name(3x)
-       item_opts              mitem_opts(3x)
-       item_opts_off          mitem_opts(3x)
-       item_opts_on           mitem_opts(3x)
-       item_term              menu_hook(3x)
-       item_userptr           mitem_userptr(3x)
-       item_value             mitem_value(3x)
-       item_visible           mitem_visible(3x)
-       menu_back              menu_attributes(3x)
-       menu_driver            menu_driver(3x)
-       menu_fore              menu_attributes(3x)
-       menu_format            menu_format(3x)
-       menu_grey              menu_attributes(3x)
-       menu_init              menu_hook(3x)
-       menu_items             menu_items(3x)
-       menu_mark              menu_mark(3x)
-       menu_opts              menu_opts(3x)
-       menu_opts_off          menu_opts(3x)
-       menu_opts_on           menu_opts(3x)
-       menu_pad               menu_attributes(3x)
-       menu_pattern           menu_pattern(3x)
-
-       menu_request_by_name   menu_requestname(3x)
-       menu_request_name      menu_requestname(3x)
-       menu_spacing           menu_spacing(3x)
-       menu_sub               menu_win(3x)
-       menu_term              menu_hook(3x)
-       menu_userptr           menu_userptr(3x)
-       menu_win               menu_win(3x)
-       new_item               mitem_new(3x)
-       new_menu               menu_new(3x)
-       pos_menu_cursor        menu_cursor(3x)
-       post_menu              menu_post(3x)
-       scale_menu             menu_win(3x)
-       set_current_item       mitem_current(3x)
-       set_item_init          menu_hook(3x)
-       set_item_opts          mitem_opts(3x)
-       set_item_term          menu_hook(3x)
-       set_item_userptr       mitem_userptr(3x)
-       set_item_value         mitem_value(3x)
-       set_menu_back          menu_attributes(3x)
-       set_menu_fore          menu_attributes(3x)
-       set_menu_format        menu_format(3x)
-       set_menu_grey          menu_attributes(3x)
-       set_menu_init          menu_hook(3x)
-       set_menu_items         menu_items(3x)
-       set_menu_mark          menu_mark(3x)
-       set_menu_opts          mitem_opts(3x)
-       set_menu_pad           menu_attributes(3x)
-       set_menu_pattern       menu_pattern(3x)
-       set_menu_spacing       menu_spacing(3x)
-       set_menu_sub           menu_win(3x)
-       set_menu_term          menu_hook(3x)
-       set_menu_userptr       menu_userptr(3x)
-       set_menu_win           menu_win(3x)
-       set_top_row            mitem_current(3x)
-       top_row                mitem_current(3x)
-       unpost_menu            menu_post(3x)
-
-
-
-

RETURN VALUE

-       Routines  that return pointers return NULL on error.  Rou-
-       tines that return an integer return one of  the  following
-       error codes:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_NO_MATCH
-            Character failed to match.
-
-       E_NO_ROOM
-            Menu is too large for its window.
-
-       E_NOT_CONNECTED
-            No items are connected to the menu.
-
-       E_NOT_POSTED
-            The menu has not been posted.
-
-       E_NOT_SELECTABLE
-            The designated item cannot be selected.
-
-       E_POSTED
-            The menu is already posted.
-
-       E_REQUEST_DENIED
-            The menu driver could not process the request.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_UNKNOWN_COMMAND
-            The menu driver code saw an unknown request code.
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "menu_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       files <curses.h> and <eti.h>.
-
-       In  your  library  list,  libmenu.a should be before libn-
-       curses.a; that is, you want to say `-lmenu -lncurses', not
-       the  other  way  around  (which would usually give a link-
-       error).
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.  Manual pages and adaptation for ncurses
-       by Eric S. Raymond.
-
-
-
-

SEE ALSO

-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                               menu(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_attributes.3x.html b/deps/ncurses-5.9/doc/html/man/menu_attributes.3x.html deleted file mode 100644 index c02a4ab..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_attributes.3x.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -menu_attributes 3x - - - - -

menu_attributes 3x

-
-
-
-menu_attributes(3x)                                 menu_attributes(3x)
-
-
-
-
-
-

NAME

-       menu_attributes - color and attribute control for menus
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_fore(MENU *menu, chtype attr);
-       chtype menu_fore(const MENU *menu);
-       int set_menu_back(MENU *menu, chtype attr);
-       chtype menu_back(const MENU *menu);
-       int set_menu_grey(MENU *menu, chtype attr);
-       chtype menu_grey(const MENU *menu);
-       int set_menu_pad(MENU *menu, int pad);
-       int menu_pad(const MENU *menu);
-
-
-
-

DESCRIPTION

-       The  function  set_menu_fore sets the foreground attribute
-       of menu. This is the  highlight  used  for  selected  menu
-       items.   menu_fore  returns the foreground attribute.  The
-       default is A_REVERSE.
-
-       The function set_menu_back sets the  background  attribute
-       of  menu.  This  is the highlight used for selectable (but
-       not  currently  selected)  menu   items.    The   function
-       menu_back  returns  the background attribute.  The default
-       is A_NORMAL.
-
-       The function set_menu_grey  sets  the  grey  attribute  of
-       menu.  This  is  the highlight used for un-selectable menu
-       items in menus that permit more than one  selection.   The
-       function   menu_grey  returns  the  grey  attribute.   The
-       default is A_UNDERLINE.
-
-       The function set_menu_pad sets the character used to  fill
-       the space between the name and description parts of a menu
-       item.  menu_pad returns the given  menu's  pad  character.
-       The default is a blank.
-
-
-
-

RETURN VALUE

-       These routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-
-
-

SEE ALSO

-       curses(3x) and related pages whose names begin "menu_" for
-       detailed descriptions of the entry points.
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                    menu_attributes(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_cursor.3x.html b/deps/ncurses-5.9/doc/html/man/menu_cursor.3x.html deleted file mode 100644 index be4f429..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_cursor.3x.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -menu_cursor 3x - - - - -

menu_cursor 3x

-
-
-
-menu_cursor(3x)                                         menu_cursor(3x)
-
-
-
-
-
-

NAME

-       menu_cursor - position a menu's cursor
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int pos_menu_cursor(const MENU *menu);
-
-
-
-

DESCRIPTION

-       The  function  pos_menu_cursor  restores the cursor to the
-       current position associated with the menu's selected item.
-       This  is  useful after curses routines have been called to
-       do screen-painting in response to a menu select.
-
-
-
-

RETURN VALUE

-       This routine returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_NOT_POSTED
-            The menu has not been posted.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                        menu_cursor(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_driver.3x.html b/deps/ncurses-5.9/doc/html/man/menu_driver.3x.html deleted file mode 100644 index f2b6c16..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_driver.3x.html +++ /dev/null @@ -1,255 +0,0 @@ - - - - -menu_driver 3x - - - - -

menu_driver 3x

-
-
-
-menu_driver(3x)                                         menu_driver(3x)
-
-
-
-
-
-

NAME

-       menu_driver - command-processing loop of the menu system
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int menu_driver(MENU *menu, int c);
-
-
-
-

DESCRIPTION

-       Once a menu has been posted (displayed), you should funnel
-       input events to it through menu_driver.  This routine  has
-       three major input cases:
-
-       o   The  input  is  a form navigation request.  Navigation
-           request codes are constants defined in <form.h>, which
-           are   distinct  from  the  key-  and  character  codes
-           returned by wgetch.
-
-       o   The input is a printable character.  Printable charac-
-           ters  (which  must  be  positive,  less  than 256) are
-           checked according to the program's locale settings.
-
-       o   The input is the KEY_MOUSE special key associated with
-           an mouse event.
-
-       The menu driver requests are as follows:
-
-       REQ_LEFT_ITEM
-            Move left to an item.
-
-       REQ_RIGHT_ITEM
-            Move right to an item.
-
-       REQ_UP_ITEM
-            Move up to an item.
-
-       REQ_DOWN_ITEM
-            Move down to an item.
-
-       REQ_SCR_ULINE
-            Scroll up a line.
-
-       REQ_SCR_DLINE
-            Scroll down a line.
-
-       REQ_SCR_DPAGE
-            Scroll down a page.
-
-       REQ_SCR_UPAGE
-            Scroll up a page.
-
-       REQ_FIRST_ITEM
-            Move to the first item.
-
-       REQ_LAST_ITEM
-            Move to the last item.
-
-       REQ_NEXT_ITEM
-            Move to the next item.
-
-       REQ_PREV_ITEM
-            Move to the previous item.
-
-       REQ_TOGGLE_ITEM
-            Select/deselect an item.
-
-       REQ_CLEAR_PATTERN
-            Clear the menu pattern buffer.
-
-       REQ_BACK_PATTERN
-            Delete   the  previous  character  from  the  pattern
-            buffer.
-
-       REQ_NEXT_MATCH
-            Move to the next item matching the pattern match.
-
-       REQ_PREV_MATCH
-            Move to the previous item matching the pattern match.
-
-       If  the second argument is a printable character, the code
-       appends it to the pattern buffer and attempts to  move  to
-       the  next  item  matching the new pattern.  If there is no
-       such match, menu_driver returns E_NO_MATCH and deletes the
-       appended character from the buffer.
-
-       If  the  second  argument  is one of the above pre-defined
-       requests, the corresponding action is performed.
-
-   MOUSE HANDLING
-       If the second argument is the KEY_MOUSE special  key,  the
-       associated mouse event is translated into one of the above
-       pre-defined requests.  Currently only clicks in  the  user
-       window  (e.g., inside the menu display area or the decora-
-       tion window) are handled.
-
-       If you click above the display region of the menu:
-
-       o   a REQ_SCR_ULINE is generated for a single click,
-
-       o   a REQ_SCR_UPAGE is generated for a double-click and
-
-       o   a REQ_FIRST_ITEM is generated for a triple-click.
-
-       If you click below the display region of the menu:
-
-       o   a REQ_SCR_DLINE is generated for a single click,
-
-       o   a REQ_SCR_DPAGE is generated for a double-click and
-
-       o   a REQ_LAST_ITEM is generated for a triple-click.
-
-       If you click at an item inside the  display  area  of  the
-       menu:
-
-       o   the menu cursor is positioned to that item.
-
-       o   If  you double-click an item a REQ_TOGGLE_ITEM is gen-
-           erated and E_UNKNOWN_COMMAND is returned.  This return
-           value  makes  sense,  because  a  double click usually
-           means that an item-specific action should be returned.
-           It is exactly the purpose of this return value to sig-
-           nal that an application  specific  command  should  be
-           executed.
-
-       o   If  a translation into a request was done, menu_driver
-           returns the result of this request.
-
-       If you clicked outside the user window or the mouse  event
-       could   not   be   translated   into  a  menu  request  an
-       E_REQUEST_DENIED is returned.
-
-   APPLICATION-DEFINED COMMANDS
-       If the second argument is neither printable nor one of the
-       above  pre-defined  menu  requests or KEY_MOUSE, the drive
-       assumes it is an application-specific command and  returns
-       E_UNKNOWN_COMMAND.  Application-defined commands should be
-       defined relative to  MAX_COMMAND,  the  maximum  value  of
-       these pre-defined requests.
-
-
-
-

RETURN VALUE

-       menu_driver return one of the following error codes:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_NOT_POSTED
-            The menu has not been posted.
-
-       E_UNKNOWN_COMMAND
-            The menu driver code saw an unknown request code.
-
-       E_NO_MATCH
-            Character failed to match.
-
-       E_REQUEST_DENIED
-            The menu driver could not process the request.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x), getch(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       files <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were  not supported on Version 7 or BSD versions. The sup-
-       port for mouse events is ncurses specific.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                        menu_driver(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_format.3x.html b/deps/ncurses-5.9/doc/html/man/menu_format.3x.html deleted file mode 100644 index c419406..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_format.3x.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -menu_format 3x - - - - -

menu_format 3x

-
-
-
-menu_format(3x)                                         menu_format(3x)
-
-
-
-
-
-

NAME

-       menu_format - set and get menu sizes
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_format(MENU *menu, int rows, int cols);
-       void menu_format(const MENU *menu, int *rows, int *cols);
-
-
-
-

DESCRIPTION

-       The function set_menu_format sets the maximum display size
-       of the given menu.  If this size is too small  to  display
-       all  menu items, the menu will be made scrollable. If this
-       size is larger than the menus subwindow and the  subwindow
-       is  too  small to display all menu items, post_menu() will
-       fail.
-
-       The  default  format  is  16  rows,  1  column.    Calling
-       set_menu_format  with a null menu pointer will change this
-       default.  A zero row or column argument to set_menu_format
-       is  interpreted  as  a  request  not to change the current
-       value.
-
-       The function menu_format  returns  the  maximum-size  con-
-       straints  for the given menu into the storage addressed by
-       rows and cols.
-
-
-
-

RETURN VALUE

-       These routines returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_POSTED
-            The menu is already posted.
-
-       E_NOT_CONNECTED
-            No items are connected to the menu.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                        menu_format(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_hook.3x.html b/deps/ncurses-5.9/doc/html/man/menu_hook.3x.html deleted file mode 100644 index 6a57ac7..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_hook.3x.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -menu_hook 3x - - - - -

menu_hook 3x

-
-
-
-menu_hook(3x)                                             menu_hook(3x)
-
-
-
-
-
-

NAME

-       menu_hook - set hooks for automatic invocation by applica-
-       tions
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_item_init(MENU *menu, Menu_Hook func);
-       Menu_Hook item_init(const MENU *menu);
-       int set_item_term(MENU *menu, Menu_Hook func);
-       Menu_Hook item_term(const MENU *menu);
-       int set_menu_init(MENU *menu, Menu_Hook func);
-       Menu_Hook menu_init(const MENU *menu);
-       int set_menu_term(MENU *menu, Menu_Hook func);
-       Menu_Hook menu_term(const MENU *menu);
-
-
-
-

DESCRIPTION

-       These functions make it possible to set hook functions  to
-       be called at various points in the automatic processing of
-       input event codes by menu_driver.
-
-       The function set_item_init sets a hook  to  be  called  at
-       menu-post  time  and  each  time the selected item changes
-       (after the change).  item_init returns  the  current  item
-       init hook, if any (NULL if there is no such hook).
-
-       The  function  set_item_term  sets  a hook to be called at
-       menu-unpost time and each time the selected  item  changes
-       (before  the  change).  item_term returns the current item
-       term hook, if any (NULL if there is no such hook).
-
-       The function set_menu_init sets a hook  to  be  called  at
-       menu-post  time  and  just  after  the top row on the menu
-       changes once it is posted.  menu_init returns the  current
-       menu init hook, if any (NULL if there is no such hook).
-
-       The  function  set_menu_term  sets  a hook to be called at
-       menu-unpost time and just before the top row on  the  menu
-       changes  once it is posted.  menu_term returns the current
-       menu term hook, if any (NULL if there is no such hook).
-
-
-
-

RETURN VALUE

-       Routines that return pointers return NULL on error.  Other
-       routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          menu_hook(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_items.3x.html b/deps/ncurses-5.9/doc/html/man/menu_items.3x.html deleted file mode 100644 index 322247a..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_items.3x.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -menu_items 3x - - - - -

menu_items 3x

-
-
-
-menu_items(3x)                                           menu_items(3x)
-
-
-
-
-
-

NAME

-       menu_items  - make and break connections between items and
-       menus
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_items(MENU *menu, ITEM **items);
-       ITEM **menu_items(const MENU *menu);
-       int item_count(const MENU *menu);
-
-
-
-

DESCRIPTION

-       The function set_menu_items changes the item pointer array
-       of  the  given  menu.   The  array must be terminated by a
-       NULL.
-
-       The function menu_items returns  the  item  array  of  the
-       given menu.
-
-       The  function  item_count  returns  the  count of items in
-       menu.
-
-
-
-

RETURN VALUES

-       The function menu_items returns a pointer  (which  may  be
-       NULL).  It does not set errno.
-
-       The  function  item_count  returns ERR (the general curses
-       error return value) if its menu parameter is NULL.
-
-       The function set_menu_items returns one of  the  following
-       codes on error:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_NOT_CONNECTED
-            No items are connected to the menu.
-
-       E_POSTED
-            The menu is already posted.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-       The  SVr4  menu  library   documentation   specifies   the
-       item_count error value as -1 (which is the value of ERR).
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                         menu_items(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_mark.3x.html b/deps/ncurses-5.9/doc/html/man/menu_mark.3x.html deleted file mode 100644 index bdeaec6..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_mark.3x.html +++ /dev/null @@ -1,131 +0,0 @@ - - - - -menu_mark 3x - - - - -

menu_mark 3x

-
-
-
-menu_mark(3x)                                             menu_mark(3x)
-
-
-
-
-
-

NAME

-       menu_mark - get and set the menu mark string
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_mark(MENU *menu, const char *mark);
-       const char *menu_mark(const MENU *menu);
-
-
-
-

DESCRIPTION

-       In  order  to make menu selections visible on older termi-
-       nals without highlighting or color  capability,  the  menu
-       library  marks  selected  items  in  a  menu with a prefix
-       string.
-
-       The function set_menu_mark sets the mark  string  for  the
-       given  menu.   Calling set_menu_mark with a null menu item
-       will abolish the mark  string.   Note  that  changing  the
-       length  of  the  mark  string for a menu while the menu is
-       posted is likely to produce unhelpful behavior.
-
-       The default string is "-" (a dash). Calling  set_menu_mark
-       with a non-NULL menu argument will change this default.
-
-       The  function menu_mark returns the menu's mark string (or
-       NULL if there is none).
-
-
-
-

RETURN VALUE

-       The function menu_mark returns a  pointer  (which  may  be
-       NULL).  It does not set errno.
-
-       The  function set_menu_mark may return the following error
-       codes:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          menu_mark(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_new.3x.html b/deps/ncurses-5.9/doc/html/man/menu_new.3x.html deleted file mode 100644 index fde5fcc..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_new.3x.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - -menu_new 3x - - - - -

menu_new 3x

-
-
-
-menu_new(3x)                                               menu_new(3x)
-
-
-
-
-
-

NAME

-       menu_new - create and destroy menus
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       MENU *new_menu(ITEM **items);
-       int free_menu(MENU *menu);
-
-
-
-

DESCRIPTION

-       The  function  new_menu  creates a new menu connected to a
-       specified item pointer array (which  must  be  NULL-termi-
-       nated).
-
-       The  function  free_menu  disconnects  menu  from its item
-       array and frees the storage allocated for the menu.
-
-
-
-

RETURN VALUE

-       The function new_menu returns  NULL  on  error.   It  sets
-       errno according to the function's failure:
-
-       E_NOT_CONNECTED
-            No items are connected to the menu.
-
-       E_SYSTEM_ERROR
-            System error occurred, e.g., malloc failure.
-
-       The function free_menu returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_POSTED
-            The menu has already been posted.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                           menu_new(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_opts.3x.html b/deps/ncurses-5.9/doc/html/man/menu_opts.3x.html deleted file mode 100644 index 7853d4e..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_opts.3x.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - -menu_opts 3x - - - - -

menu_opts 3x

-
-
-
-menu_opts(3x)                                             menu_opts(3x)
-
-
-
-
-
-

NAME

-       menu_opts - set and get menu options
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_opts(MENU *menu, Menu_Options opts);
-       int menu_opts_on(MENU *menu, Menu_Options opts);
-       int menu_opts_off(MENU *menu, Menu_Options opts);
-       Menu_Options menu_opts(const MENU *menu);
-
-
-
-

DESCRIPTION

-       The  function  set_menu_opts  sets  all  the  given menu's
-       option bits  (menu  option  bits  may  be  logically-OR'ed
-       together).
-
-       The  function menu_opts_on turns on the given option bits,
-       and leaves others alone.
-
-       The function menu_opts_off  turns  off  the  given  option
-       bits, and leaves others alone.
-
-       The  function  menu_opts returns the menu's current option
-       bits.
-
-       The following options are defined (all are on by default):
-
-       O_ONEVALUE
-            Only one item can be selected for this menu.
-
-       O_SHOWDESC
-            Display  the  item  descriptions  when  the  menu  is
-            posted.
-
-       O_ROWMAJOR
-            Display the menu in row-major order.
-
-       O_IGNORECASE
-            Ignore the case when pattern-matching.
-
-       O_SHOWMATCH
-            Move  the  cursor  to within the item name while pat-
-            tern-matching.
-
-       O_NONCYCLIC
-            Don't  wrap  around  next-item   and   previous-item,
-            requests to the other end of the menu.
-
-
-
-

RETURN VALUE

-       Except for menu_opts, each routine returns one of the fol-
-       lowing:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_POSTED
-            The menu is already posted.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                          menu_opts(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_pattern.3x.html b/deps/ncurses-5.9/doc/html/man/menu_pattern.3x.html deleted file mode 100644 index 88e6cdb..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_pattern.3x.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -menu_pattern 3x - - - - -

menu_pattern 3x

-
-
-
-menu_pattern(3x)                                       menu_pattern(3x)
-
-
-
-
-
-

NAME

-       menu_pattern - get and set a menu's pattern buffer
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_pattern(MENU *menu, const char *pattern);
-       char *menu_pattern(const MENU *menu);
-
-
-
-

DESCRIPTION

-       Every  menu  has  an  associated pattern match buffer.  As
-       input events that are printable characters come  in,  they
-       are  appended to this match buffer and tested for a match,
-       as described in menu_driver(3x).
-
-       The function set_menu_pattern sets the pattern buffer  for
-       the  given menu and tries to find the first matching item.
-       If it succeeds, that item becomes  current;  if  not,  the
-       current item does not change.
-
-       The  function  menu_pattern  returns the pattern buffer of
-       the given menu.
-
-
-
-

RETURN VALUE

-       The function menu_pattern returns a pointer, which is NULL
-       if the menu parameter is NULL.  Otherwise, it is a pointer
-       to a string which is empty if no pattern has been set.  It
-       does not set errno.
-
-       The  function  set_menu_pattern  may  return the following
-       error codes:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_NOT_CONNECTED
-            No items are connected to menu.
-
-       E_NO_MATCH
-            Character failed to match.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                       menu_pattern(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_post.3x.html b/deps/ncurses-5.9/doc/html/man/menu_post.3x.html deleted file mode 100644 index b8715f2..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_post.3x.html +++ /dev/null @@ -1,138 +0,0 @@ - - - - -menu_post 3x - - - - -

menu_post 3x

-
-
-
-menu_post(3x)                                             menu_post(3x)
-
-
-
-
-
-

NAME

-       menu_post  -  write or erase menus from associated subwin-
-       dows
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int post_menu(MENU *menu);
-       int unpost_menu(MENU *menu);
-
-
-
-

DESCRIPTION

-       The function post_menu displays a menu to  its  associated
-       subwindow.   To trigger physical display of the subwindow,
-       use  refresh  or  some  equivalent  curses  routine   (the
-       implicit  doupdate  triggered  by  an curses input request
-       will do). post_menu resets the  selection  status  of  all
-       items.
-
-       The  function  unpost_menu erases menu from its associated
-       subwindow.
-
-
-
-

RETURN VALUE

-       These routines return one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_POSTED
-            The menu has already been posted.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_NO_ROOM
-            Menu is too large for its window. You should consider
-            to use set_menu_format() to solve the problem.
-
-       E_NOT_POSTED
-            The menu has not been posted.
-
-       E_NOT_CONNECTED
-            No items are connected to the menu.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                          menu_post(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_requestname.3x.html b/deps/ncurses-5.9/doc/html/man/menu_requestname.3x.html deleted file mode 100644 index 54926fd..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_requestname.3x.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -menu_requestname 3x - - - - -

menu_requestname 3x

-
-
-
-menu_requestname(3x)                               menu_requestname(3x)
-
-
-
-
-
-

NAME

-       menu_requestname - handle printable menu request names
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       const char *menu_request_name(int request);
-       int menu_request_by_name(const char *name);
-
-
-
-

DESCRIPTION

-       The  function menu_request_name returns the printable name
-       of a menu request code.
-       The function menu_request_by_name searches in the name-ta-
-       ble  for  a  request  with  the given name and returns its
-       request code.  Otherwise E_NO_MATCH is returned.
-
-
-
-

RETURN VALUE

-       menu_request_name returns NULL on error and sets errno  to
-       E_BAD_ARGUMENT.
-       menu_request_by_name returns E_NO_MATCH on error.  It does
-       not set errno.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  are  specific  to ncurses.  They were not
-       supported on Version 7, BSD or System  V  implementations.
-       It  is recommended that any code depending on them be con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                   menu_requestname(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_spacing.3x.html b/deps/ncurses-5.9/doc/html/man/menu_spacing.3x.html deleted file mode 100644 index 82e8575..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_spacing.3x.html +++ /dev/null @@ -1,129 +0,0 @@ - - - - -menu_spacing 3x - - - - -

menu_spacing 3x

-
-
-
-menu_spacing(3x)                                       menu_spacing(3x)
-
-
-
-
-
-

NAME

-       menu_spacing - Control spacing between menu items.
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_spacing(MENU *menu,
-                            int spc_description,
-                            int spc_rows,
-                            int spc_columns);
-       int menu_spacing(const MENU *menu,
-                        int* spc_description,
-                        int* spc_rows,
-                        int* spc_columns);
-
-
-
-

DESCRIPTION

-       The function set_menu_spacing sets the spacing information
-       for the menu.  Its parameter spc_description controls  the
-       number of spaces between an item name and an item descrip-
-       tion.  It must not be larger than TABSIZE.  The menu  sys-
-       tem  puts in the middle of this spacing area the pad char-
-       acter.  The remaining parts are filled with  spaces.   The
-       spc_rows  parameter  controls  the number of rows that are
-       used for an item.  It must not be larger than 3.  The menu
-       system  inserts  the  blank lines between item rows, these
-       lines will contain the pad character  in  the  appropriate
-       positions.   The spc_columns parameter controls the number
-       of blanks between columns of items.  It must not be larger
-       than  TABSIZE.   A  value  of 0 for all the spacing values
-       resets them to the default, which is 1 for all of them.
-       The function menu_spacing passes back the spacing info for
-       the  menu.   If  a  pointer is NULL, this specific info is
-       simply not returned.
-
-
-
-

RETURN VALUE

-       Both routines return E_OK  on  success.   set_menu_spacing
-       may  return E_POSTED if the menu is posted, or E_BAD_ARGU-
-       MENT if one of the spacing values is out of range.
-
-
-
-

SEE ALSO

-       curses(3x), curs_variables(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  are  specific  to ncurses.  They were not
-       supported on Version 7, BSD or System  V  implementations.
-       It  is recommended that any code depending on them be con-
-       ditioned using NCURSES_VERSION.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                       menu_spacing(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_userptr.3x.html b/deps/ncurses-5.9/doc/html/man/menu_userptr.3x.html deleted file mode 100644 index be4f7d0..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_userptr.3x.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -menu_userptr 3x - - - - -

menu_userptr 3x

-
-
-
-menu_userptr(3x)                                       menu_userptr(3x)
-
-
-
-
-
-

NAME

-       menu_userptr - associate application data with a menu item
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_userptr(MENU *menu, void *userptr);
-       void *menu_userptr(const MENU *menu);
-
-
-
-

DESCRIPTION

-       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.
-
-
-
-

RETURN VALUE

-       menu_userptr returns a pointer (which may  be  NULL).   It
-       does not set errno.
-
-       set_menu_userptr returns E_OK (success).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-       The user pointer is a void pointer.  We chose not to leave
-       it as a char pointer for SVr4 compatibility.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                       menu_userptr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/menu_win.3x.html b/deps/ncurses-5.9/doc/html/man/menu_win.3x.html deleted file mode 100644 index 64e685e..0000000 --- a/deps/ncurses-5.9/doc/html/man/menu_win.3x.html +++ /dev/null @@ -1,139 +0,0 @@ - - - - -menu_win 3x - - - - -

menu_win 3x

-
-
-
-menu_win(3x)                                               menu_win(3x)
-
-
-
-
-
-

NAME

-       menu_win  - make and break menu window and subwindow asso-
-       ciations
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_menu_win(MENU *menu, WINDOW *win);
-       WINDOW *menu_win(const MENU *menu);
-       int set_menu_sub(MENU *menu, WINDOW *sub);
-       WINDOW *menu_sub(const MENU *menu);
-       int scale_menu(const MENU *menu, int *rows, int *columns);
-
-
-
-

DESCRIPTION

-       Every menu has an associated pair of curses windows.   The
-       menu  window displays any title and border associated with
-       the window; the menu subwindow displays the items  of  the
-       menu that are currently available for selection.
-
-       The first four functions get and set those windows.  It is
-       not necessary to set either window; by default, the driver
-       code uses stdscr for both.
-
-       In  the set_ functions, window argument of NULL is treated
-       as though it were stsdcr.  A  menu  argument  of  NULL  is
-       treated  as  a  request  to change the system default menu
-       window or subwindow.
-
-       The function scale_menu returns the minimum size  required
-       for the subwindow of menu.
-
-
-
-

RETURN VALUE

-       Routines  that return pointers return NULL on error.  Rou-
-       tines that return an integer return one of  the  following
-       error codes:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_POSTED
-            The menu has already been posted.
-
-       E_NOT_CONNECTED
-            No items are connected to the menu.
-
-
-
-

SEE ALSO

-       curses(3x), curs_variables(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                           menu_win(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/mitem_current.3x.html b/deps/ncurses-5.9/doc/html/man/mitem_current.3x.html deleted file mode 100644 index d496682..0000000 --- a/deps/ncurses-5.9/doc/html/man/mitem_current.3x.html +++ /dev/null @@ -1,146 +0,0 @@ - - - - -mitem_current 3x - - - - -

mitem_current 3x

-
-
-
-mitem_current(3x)                                     mitem_current(3x)
-
-
-
-
-
-

NAME

-       mitem_current - set and get current_menu_item
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_current_item(MENU *menu, const ITEM *item);
-       ITEM *current_item(const MENU *menu);
-       int set_top_row(MENU *menu, int row);
-       int top_row(const MENU *menu);
-       int item_index(const ITEM *item);
-
-
-
-

DESCRIPTION

-       The  function  set_current_item sets the current item (the
-       item on  which  the  menu  cursor  is  positioned).   cur-
-       rent_item  returns  a  pointer  to the current item in the
-       given menu.
-
-       The function set_top_row sets the top row of the  menu  to
-       show  the  given  row  (the top row is initially 0, and is
-       reset to this value whenever the O_ROWMAJOR option is tog-
-       gled).   The  item  leftmost on the given row becomes cur-
-       rent.  The function top_row returns the number of the  top
-       menu row being displayed.
-
-       The function item_index returns the (zero-origin) index of
-       item in the menu's item pointer list.
-
-
-
-

RETURN VALUE

-       current_item returns a pointer (which may  be  NULL).   It
-       does not set errno.
-
-       top_row  and  item_index  return  ERR  (the general curses
-       error value) if their menu parameter is NULL.
-
-       set_current_item and set_top_row return one of the follow-
-       ing:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_BAD_STATE
-            Routine was called from an initialization or termina-
-            tion function.
-
-       E_NOT_CONNECTED
-            No items are connected to the menu.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-       The  SVr4 menu library documentation specifies the top_row
-       and index_item error value as -1 (which is  the  value  of
-       ERR).
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                      mitem_current(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/mitem_name.3x.html b/deps/ncurses-5.9/doc/html/man/mitem_name.3x.html deleted file mode 100644 index e596bbf..0000000 --- a/deps/ncurses-5.9/doc/html/man/mitem_name.3x.html +++ /dev/null @@ -1,107 +0,0 @@ - - - - -mitem_name 3x - - - - -

mitem_name 3x

-
-
-
-mitem_name(3x)                                           mitem_name(3x)
-
-
-
-
-
-

NAME

-       mitem_name - get menu item name and description fields
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       const char *item_name(const ITEM *item);
-       const char *item_description(const ITEM *item);
-
-
-
-

DESCRIPTION

-       The  function item_name returns the name part of the given
-       item.
-       The function item_description returns the description part
-       of the given item.
-
-
-
-

RETURN VALUE

-       These routines return a pointer (which may be NULL).  They
-       do not set errno.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                         mitem_name(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/mitem_new.3x.html b/deps/ncurses-5.9/doc/html/man/mitem_new.3x.html deleted file mode 100644 index 4b6e1f3..0000000 --- a/deps/ncurses-5.9/doc/html/man/mitem_new.3x.html +++ /dev/null @@ -1,134 +0,0 @@ - - - - -mitem_new 3x - - - - -

mitem_new 3x

-
-
-
-mitem_new(3x)                                             mitem_new(3x)
-
-
-
-
-
-

NAME

-       mitem_new - create and destroy menu items
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       ITEM *new_item(const char *name, const char *description);
-       int free_item(ITEM *item);
-
-
-
-

DESCRIPTION

-       The function new_item allocates a new item and initializes
-       it from the name and description pointers.  Please  notice
-       that  the  item  stores  only the pointers to the name and
-       description. Those pointers must be valid during the life-
-       time of the item. So you should be very careful with names
-       or descriptions allocated on the stack of some routines.
-       The function free_item de-allocates an item. Please notice
-       that  it  is  the  responsibility  of  the  application to
-       release the memory for the name or the description of  the
-       item.
-
-
-
-

RETURN VALUE

-       The  function  new_item  returns  NULL  on error.  It sets
-       errno according to the function's failure:
-
-       E_BAD_ARGUMENT
-            Routine detected an incorrect or  out-of-range  argu-
-            ment.
-
-       E_SYSTEM_ERROR
-            System error occurred, e.g., malloc failure.
-
-       The function free_item returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_BAD_ARGUMENT
-            Routine  detected  an incorrect or out-of-range argu-
-            ment.
-
-       E_CONNECTED
-            Item is connected to a menu.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                          mitem_new(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/mitem_opts.3x.html b/deps/ncurses-5.9/doc/html/man/mitem_opts.3x.html deleted file mode 100644 index 27d44a5..0000000 --- a/deps/ncurses-5.9/doc/html/man/mitem_opts.3x.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -mitem_opts 3x - - - - -

mitem_opts 3x

-
-
-
-mitem_opts(3x)                                           mitem_opts(3x)
-
-
-
-
-
-

NAME

-       mitem_opts - set and get menu item options
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_item_opts(ITEM *item, Item_Options opts);
-       int item_opts_on(ITEM *item, Item_Options opts);
-       int item_opts_off(ITEM *item, Item_Options opts);
-       Item_Options item_opts(const ITEM *item);
-
-
-
-

DESCRIPTION

-       The  function  set_item_opts  sets  all  the  given item's
-       option bits  (menu  option  bits  may  be  logically-OR'ed
-       together).
-
-       The  function item_opts_on turns on the given option bits,
-       and leaves others alone.
-
-       The function item_opts_off  turns  off  the  given  option
-       bits, and leaves others alone.
-
-       The  function  item_opts returns the item's current option
-       bits.
-
-       There is only one defined option bit  mask,  O_SELECTABLE.
-       When this is on, the item may be selected during menu pro-
-       cessing.  This option defaults to on.
-
-
-
-

RETURN VALUE

-       Except for item_opts, each routine returns one of the fol-
-       lowing:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen  Pfeifer.   Manual  pages  and  adaptation for new
-       curses by Eric S. Raymond.
-
-
-
-                                                         mitem_opts(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/mitem_userptr.3x.html b/deps/ncurses-5.9/doc/html/man/mitem_userptr.3x.html deleted file mode 100644 index 5cc957e..0000000 --- a/deps/ncurses-5.9/doc/html/man/mitem_userptr.3x.html +++ /dev/null @@ -1,112 +0,0 @@ - - - - -mitem_userptr 3x - - - - -

mitem_userptr 3x

-
-
-
-mitem_userptr(3x)                                     mitem_userptr(3x)
-
-
-
-
-
-

NAME

-       mitem_userptr  -  associate  application  data with a menu
-       item
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_item_userptr(ITEM *item, void *userptr);
-       void *item_userptr(const ITEM *item);
-
-
-
-

DESCRIPTION

-       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 that field.
-
-
-
-

RETURN VALUE

-       The function  item_userptr  returns  a  pointer  (possibly
-       NULL).  It does not set errno.
-
-       The set_item_userptr always returns E_OK (success).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These routines emulate the System V  menu  library.   They
-       were not supported on Version 7 or BSD versions.
-
-       The user pointer is a void pointer.  We chose not to leave
-       it as a char pointer for SVr4 compatibility.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                      mitem_userptr(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/mitem_value.3x.html b/deps/ncurses-5.9/doc/html/man/mitem_value.3x.html deleted file mode 100644 index e68a2b0..0000000 --- a/deps/ncurses-5.9/doc/html/man/mitem_value.3x.html +++ /dev/null @@ -1,117 +0,0 @@ - - - - -mitem_value 3x - - - - -

mitem_value 3x

-
-
-
-mitem_value(3x)                                         mitem_value(3x)
-
-
-
-
-
-

NAME

-       mitem_value - set and get menu item values
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       int set_item_value(ITEM *item, bool value);
-       bool item_value(const ITEM *item);
-
-
-
-

DESCRIPTION

-       If  you  turn  off  the menu option O_ONEVALUE (e.g., with
-       set_menu_opts or menu_opts_off;  see  menu_opts(3x)),  the
-       menu becomes multi-valued; that is, more than one item may
-       simultaneously be selected.
-
-       In a multi_valued menu, you  can  used  set_item_value  to
-       select the given menu item (second argument TRUE) or dese-
-       lect it (second argument FALSE).
-
-
-
-

RETURN VALUE

-       The function set_item_value returns one of the following:
-
-       E_OK The routine succeeded.
-
-       E_SYSTEM_ERROR
-            System error occurred (see errno).
-
-       E_REQUEST_DENIED
-            The menu driver could not process the request.
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                        mitem_value(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/mitem_visible.3x.html b/deps/ncurses-5.9/doc/html/man/mitem_visible.3x.html deleted file mode 100644 index 52cdbdb..0000000 --- a/deps/ncurses-5.9/doc/html/man/mitem_visible.3x.html +++ /dev/null @@ -1,100 +0,0 @@ - - - - -mitem_visible 3x - - - - -

mitem_visible 3x

-
-
-
-mitem_visible(3x)                                     mitem_visible(3x)
-
-
-
-
-
-

NAME

-       mitem_visible - check visibility of a menu item
-
-
-
-

SYNOPSIS

-       #include <menu.h>
-       bool item_visible(const ITEM *item);
-
-
-
-

DESCRIPTION

-       A  menu  item  is  visible  when it is in the portion of a
-       posted menu that is mapped onto the screen (if the menu is
-       scrollable,  in  particular,  this portion will be smaller
-       than the whole menu).
-
-
-
-

SEE ALSO

-       curses(3x), menu(3x).
-
-
-
-

NOTES

-       The header file <menu.h> automatically includes the header
-       file <curses.h>.
-
-
-
-

PORTABILITY

-       These  routines  emulate  the System V menu library.  They
-       were not supported on Version 7 or BSD versions.
-
-
-
-

AUTHORS

-       Juergen Pfeifer.  Manual  pages  and  adaptation  for  new
-       curses by Eric S. Raymond.
-
-
-
-                                                      mitem_visible(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/ncurses.3x.html b/deps/ncurses-5.9/doc/html/man/ncurses.3x.html deleted file mode 100644 index 576b1a1..0000000 --- a/deps/ncurses-5.9/doc/html/man/ncurses.3x.html +++ /dev/null @@ -1,1267 +0,0 @@ - - - - -ncurses 3x - - - - -

ncurses 3x

-
-
-
-ncurses(3x)                                                 ncurses(3x)
-
-
-
-
-
-

NAME

-       ncurses - CRT screen handling and optimization package
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-
-
-

DESCRIPTION

-       The  ncurses  library  routines  give the user a terminal-
-       independent method of updating character screens with rea-
-       sonable   optimization.    This  implementation  is  ``new
-       curses'' (ncurses) and is  the  approved  replacement  for
-       4.4BSD  classic curses, which has been discontinued.  This
-       describes ncurses version 5.9 (patch 20110404).
-
-       The ncurses library emulates the curses library of  System
-       V  Release  4  UNIX,  and  XPG4 (X/Open Portability Guide)
-       curses (also known as XSI curses).  XSI stands for  X/Open
-       System  Interfaces  Extension.   The  ncurses  library  is
-       freely redistributable in source form.   Differences  from
-       the  SVr4  curses  are summarized under the EXTENSIONS and
-       PORTABILITY sections below and described in detail in  the
-       respective  EXTENSIONS,  PORTABILITY  and BUGS sections of
-       individual man pages.
-
-       The ncurses library also provides many useful  extensions,
-       i.e.,  features  which  cannot  be implemented by a simple
-       add-on library but which require access to  the  internals
-       of the library.
-
-       A  program  using  these  routines must be linked with the
-       -lncurses option, or (if it has been generated)  with  the
-       debugging  library  -lncurses_g.   (Your system integrator
-       may also have installed these libraries  under  the  names
-       -lcurses and -lcurses_g.)  The ncurses_g library generates
-       trace logs (in a file called 'trace' in the current direc-
-       tory)  that describe curses actions.  See also the section
-       on ALTERNATE CONFIGURATIONS.
-
-       The ncurses package supports: overall screen,  window  and
-       pad manipulation; output to windows and pads; reading ter-
-       minal input; control over terminal and  curses  input  and
-       output  options; environment query routines; color manipu-
-       lation; use of soft label keys; terminfo capabilities; and
-       access to low-level terminal-manipulation routines.
-
-       The  library uses the locale which the calling program has
-       initialized.  That is normally done with setlocale:
-
-             setlocale(LC_ALL, "");
-
-       If the locale is not initialized, the library assumes that
-       characters  are  printable  as in ISO-8859-1, to work with
-       certain legacy programs.  You should initialize the locale
-       and  not  rely on specific details of the library when the
-       locale has not been setup.
-
-       The function initscr or newterm must be called to initial-
-       ize the library before any of the other routines that deal
-       with windows and screens are  used.   The  routine  endwin
-       must be called before exiting.
-
-       To  get  character-at-a-time  input  without echoing (most
-       interactive, screen oriented programs want this), the fol-
-       lowing sequence should be used:
-
-             initscr(); cbreak(); noecho();
-
-       Most programs would additionally use the sequence:
-
-             nonl();
-             intrflush(stdscr, FALSE);
-             keypad(stdscr, TRUE);
-
-       Before  a curses program is run, the tab stops of the ter-
-       minal should be set and  its  initialization  strings,  if
-       defined,  must  be  output.  This can be done by executing
-       the tput init command after the shell environment variable
-       TERM  has  been  exported.  tset(1) is usually responsible
-       for doing this.  [See terminfo(5) for further details.]
-
-       The ncurses library permits manipulation  of  data  struc-
-       tures,  called  windows,  which  can be thought of as two-
-       dimensional arrays of characters representing all or  part
-       of a CRT screen.  A default window called stdscr, which is
-       the size of the terminal screen, is supplied.  Others  may
-       be created with newwin.
-
-       Note  that  curses  does  not  handle overlapping windows,
-       that's done by the panel(3x) library.  This means that you
-       can either use stdscr or divide the screen into tiled win-
-       dows and not using stdscr at all.   Mixing  the  two  will
-       result in unpredictable, and undesired, effects.
-
-       Windows are referred to by variables declared as WINDOW *.
-       These  data  structures  are  manipulated  with   routines
-       described  here and elsewhere in the ncurses manual pages.
-       Among those, the most basic routines are move  and  addch.
-       More  general versions of these routines are included with
-       names beginning with w, allowing the  user  to  specify  a
-       window.   The routines not beginning with w affect stdscr.
-
-       After using routines to manipulate a  window,  refresh  is
-       called,  telling curses to make the user's CRT screen look
-       like stdscr.  The characters in a window are  actually  of
-       type  chtype, (character and attribute data) so that other
-       information about the character may also  be  stored  with
-       each character.
-
-       Special  windows  called  pads  may  also  be manipulated.
-       These are windows which are not constrained to the size of
-       the  screen and whose contents need not be completely dis-
-       played.  See curs_pad(3x) for more information.
-
-       In addition to drawing characters  on  the  screen,  video
-       attributes  and colors may be supported, causing the char-
-       acters to show up in such modes as underlined, in  reverse
-       video,  or in color on terminals that support such display
-       enhancements.  Line drawing characters may be specified to
-       be  output.   On  input,  curses is also able to translate
-       arrow and function keys  that  transmit  escape  sequences
-       into  single  values.   The video attributes, line drawing
-       characters,  and  input  values  use  names,  defined   in
-       <curses.h>, such as A_REVERSE, ACS_HLINE, and KEY_LEFT.
-
-       If the environment variables LINES and COLUMNS are set, or
-       if the program is executing in a window environment,  line
-       and  column  information  in the environment will override
-       information read by terminfo.  This would affect a program
-       running  in an AT&T 630 layer, for example, where the size
-       of a screen is changeable (see ENVIRONMENT).
-
-       If the environment variable TERMINFO is defined, any  pro-
-       gram  using  curses checks for a local terminal definition
-       before checking in the standard place.   For  example,  if
-       TERM is set to att4424, then the compiled terminal defini-
-       tion is found in
-
-             /usr/share/terminfo/a/att4424.
-
-       (The a is copied from the first letter of att4424 to avoid
-       creation  of  huge  directories.)  However, if TERMINFO is
-       set to $HOME/myterms, curses first checks
-
-             $HOME/myterms/a/att4424,
-
-       and if that fails, it then checks
-
-             /usr/share/terminfo/a/att4424.
-
-       This is useful for developing experimental definitions  or
-       when write permission in /usr/share/terminfo is not avail-
-       able.
-
-       The integer  variables  LINES  and  COLS  are  defined  in
-       <curses.h>  and will be filled in by initscr with the size
-       of the screen.  The constants TRUE and FALSE have the val-
-       ues 1 and 0, respectively.
-
-       The  curses  routines  also  define  the WINDOW * variable
-       curscr which is used for certain low-level operations like
-       clearing  and  redrawing a screen containing garbage.  The
-       curscr can be used in only a few routines.
-
-   Routine and Argument Names
-       Many curses routines have two or more versions.  The  rou-
-       tines prefixed with w require a window argument.  The rou-
-       tines prefixed with p require a pad argument.  Those with-
-       out a prefix generally use stdscr.
-
-       The routines prefixed with mv require a y and x coordinate
-       to move to before performing the appropriate action.   The
-       mv  routines  imply  a call to move before the call to the
-       other routine.  The coordinate y always refers to the  row
-       (of  the  window), and x always refers to the column.  The
-       upper left-hand corner is always (0,0), not (1,1).
-
-       The routines prefixed with mvw take both a window argument
-       and  x  and  y coordinates.  The window argument is always
-       specified before the coordinates.
-
-       In each case, win is the window affected, and pad  is  the
-       pad affected; win and pad are always pointers to type WIN-
-       DOW.
-
-       Option setting routines require a Boolean flag bf with the
-       value  TRUE  or FALSE; bf is always of type bool.  Most of
-       the data types used in the library routines, such as  WIN-
-       DOW,  SCREEN,  bool, and chtype are defined in <curses.h>.
-       Types used for the terminfo routines such as TERMINAL  are
-       defined in <term.h>.
-
-       This  manual  page describes functions which may appear in
-       any configuration of the library.  There  are  two  common
-       configurations of the library:
-
-              ncurses
-                   the  "normal"  library,  which  handles  8-bit
-                   characters.  The normal (8-bit) library stores
-                   characters  combined with attributes in chtype
-                   data.
-
-                   Attributes alone (no corresponding  character)
-                   may  be  stored  in  chtype  or the equivalent
-                   attr_t data.  In  either  case,  the  data  is
-                   stored in something like an integer.
-
-                   Each  cell  (row  and  column)  in a WINDOW is
-                   stored as a chtype.
-
-              ncursesw
-                   the so-called "wide"  library,  which  handles
-                   multibyte   characters  (see  the  section  on
-                   ALTERNATE CONFIGURATIONS).  The "wide" library
-                   includes  all  of  the calls from the "normal"
-                   library.  It adds about one third  more  calls
-                   using data types which store multibyte charac-
-                   ters:
-
-                   cchar_t
-                        corresponds to chtype.  However it  is  a
-                        structure,  because  more  data is stored
-                        than can fit into an integer.  The  char-
-                        acters are large enough to require a full
-                        integer value - and  there  may  be  more
-                        than  one  character per cell.  The video
-                        attributes and color are stored in  sepa-
-                        rate fields of the structure.
-
-                        Each cell (row and column) in a WINDOW is
-                        stored as a cchar_t.
-
-                   wchar_t
-                        stores a "wide" character.  Like  chtype,
-                        this may be an integer.
-
-                   wint_t
-                        stores  a wchar_t or WEOF - not the same,
-                        though both may have the same size.
-
-                   The  "wide"  library  provides  new  functions
-                   which  are analogous to functions in the "nor-
-                   mal" library.  There is  a  naming  convention
-                   which  relates  many  of the normal/wide vari-
-                   ants: a "_w" is inserted into the  name.   For
-                   example, waddch becomes wadd_wch.
-
-
-   Routine Name Index
-       The following table lists each curses routine and the name
-       of the manual page on which  it  is  described.   Routines
-       flagged  with  `*'  are ncurses-specific, not described by
-       XPG4 or present in SVr4.
-
-
-              curses Routine Name     Manual Page Name
-              --------------------------------------------
-              COLOR_PAIR              curs_color(3x)
-              PAIR_NUMBER             curs_attr(3x)
-              _nc_free_and_exit       curs_memleaks(3x)*
-
-              _nc_freeall             curs_memleaks(3x)*
-              _nc_tracebits           curs_trace(3x)*
-              _traceattr              curs_trace(3x)*
-              _traceattr2             curs_trace(3x)*
-              _tracechar              curs_trace(3x)*
-              _tracechtype            curs_trace(3x)*
-              _tracechtype2           curs_trace(3x)*
-              _tracedump              curs_trace(3x)*
-              _tracef                 curs_trace(3x)*
-              _tracemouse             curs_trace(3x)*
-              add_wch                 curs_add_wch(3x)
-              add_wchnstr             curs_add_wchstr(3x)
-              add_wchstr              curs_add_wchstr(3x)
-              addch                   curs_addch(3x)
-              addchnstr               curs_addchstr(3x)
-              addchstr                curs_addchstr(3x)
-              addnstr                 curs_addstr(3x)
-              addnwstr                curs_addwstr(3x)
-              addstr                  curs_addstr(3x)
-              addwstr                 curs_addwstr(3x)
-              assume_default_colors   default_colors(3x)*
-              attr_get                curs_attr(3x)
-              attr_off                curs_attr(3x)
-              attr_on                 curs_attr(3x)
-              attr_set                curs_attr(3x)
-              attroff                 curs_attr(3x)
-              attron                  curs_attr(3x)
-              attrset                 curs_attr(3x)
-              baudrate                curs_termattrs(3x)
-              beep                    curs_beep(3x)
-              bkgd                    curs_bkgd(3x)
-              bkgdset                 curs_bkgd(3x)
-              bkgrnd                  curs_bkgrnd(3x)
-              bkgrndset               curs_bkgrnd(3x)
-              border                  curs_border(3x)
-              border_set              curs_border_set(3x)
-              box                     curs_border(3x)
-              box_set                 curs_border_set(3x)
-              can_change_color        curs_color(3x)
-              cbreak                  curs_inopts(3x)
-              chgat                   curs_attr(3x)
-              clear                   curs_clear(3x)
-              clearok                 curs_outopts(3x)
-              clrtobot                curs_clear(3x)
-              clrtoeol                curs_clear(3x)
-              color_content           curs_color(3x)
-              color_set               curs_attr(3x)
-              copywin                 curs_overlay(3x)
-              curs_set                curs_kernel(3x)
-              curses_version          curs_extend(3x)*
-              def_prog_mode           curs_kernel(3x)
-              def_shell_mode          curs_kernel(3x)
-              define_key              define_key(3x)*
-              del_curterm             curs_terminfo(3x)
-              delay_output            curs_util(3x)
-              delch                   curs_delch(3x)
-              deleteln                curs_deleteln(3x)
-              delscreen               curs_initscr(3x)
-              delwin                  curs_window(3x)
-              derwin                  curs_window(3x)
-              doupdate                curs_refresh(3x)
-              dupwin                  curs_window(3x)
-              echo                    curs_inopts(3x)
-              echo_wchar              curs_add_wch(3x)
-              echochar                curs_addch(3x)
-
-              endwin                  curs_initscr(3x)
-              erase                   curs_clear(3x)
-              erasechar               curs_termattrs(3x)
-              erasewchar              curs_termattrs(3x)
-              filter                  curs_util(3x)
-              flash                   curs_beep(3x)
-              flushinp                curs_util(3x)
-              get_wch                 curs_get_wch(3x)
-              get_wstr                curs_get_wstr(3x)
-              getattrs                curs_attr(3x)
-              getbegx                 curs_legacy(3x)*
-              getbegy                 curs_legacy(3x)*
-              getbegyx                curs_getyx(3x)
-              getbkgd                 curs_bkgd(3x)
-              getbkgrnd               curs_bkgrnd(3x)
-              getcchar                curs_getcchar(3x)
-              getch                   curs_getch(3x)
-              getcurx                 curs_legacy(3x)*
-              getcury                 curs_legacy(3x)*
-              getmaxx                 curs_legacy(3x)*
-              getmaxy                 curs_legacy(3x)*
-              getmaxyx                curs_getyx(3x)
-              getmouse                curs_mouse(3x)*
-              getn_wstr               curs_get_wstr(3x)
-              getnstr                 curs_getstr(3x)
-              getparx                 curs_legacy(3x)*
-              getpary                 curs_legacy(3x)*
-              getparyx                curs_getyx(3x)
-              getstr                  curs_getstr(3x)
-              getsyx                  curs_kernel(3x)
-              getwin                  curs_util(3x)
-              getyx                   curs_getyx(3x)
-              halfdelay               curs_inopts(3x)
-              has_colors              curs_color(3x)
-              has_ic                  curs_termattrs(3x)
-              has_il                  curs_termattrs(3x)
-              has_key                 curs_getch(3x)*
-              hline                   curs_border(3x)
-              hline_set               curs_border_set(3x)
-              idcok                   curs_outopts(3x)
-              idlok                   curs_outopts(3x)
-              immedok                 curs_outopts(3x)
-              in_wch                  curs_in_wch(3x)
-              in_wchnstr              curs_in_wchstr(3x)
-              in_wchstr               curs_in_wchstr(3x)
-              inch                    curs_inch(3x)
-              inchnstr                curs_inchstr(3x)
-              inchstr                 curs_inchstr(3x)
-              init_color              curs_color(3x)
-              init_pair               curs_color(3x)
-              initscr                 curs_initscr(3x)
-              innstr                  curs_instr(3x)
-              innwstr                 curs_inwstr(3x)
-              ins_nwstr               curs_ins_wstr(3x)
-              ins_wch                 curs_ins_wch(3x)
-              ins_wstr                curs_ins_wstr(3x)
-              insch                   curs_insch(3x)
-              insdelln                curs_deleteln(3x)
-              insertln                curs_deleteln(3x)
-              insnstr                 curs_insstr(3x)
-              insstr                  curs_insstr(3x)
-              instr                   curs_instr(3x)
-              intrflush               curs_inopts(3x)
-              inwstr                  curs_inwstr(3x)
-              is_cleared              curs_opaque(3x)*
-
-              is_idcok                curs_opaque(3x)*
-              is_idlok                curs_opaque(3x)*
-              is_immedok              curs_opaque(3x)*
-              is_keypad               curs_opaque(3x)*
-              is_leaveok              curs_opaque(3x)*
-              is_linetouched          curs_touch(3x)
-              is_nodelay              curs_opaque(3x)*
-              is_notimeout            curs_opaque(3x)*
-              is_scrollok             curs_opaque(3x)*
-              is_syncok               curs_opaque(3x)*
-              is_term_resized         resizeterm(3x)*
-              is_wintouched           curs_touch(3x)
-              isendwin                curs_initscr(3x)
-              key_defined             key_defined(3x)*
-              key_name                curs_util(3x)
-              keybound                keybound(3x)*
-              keyname                 curs_util(3x)
-              keyok                   keyok(3x)*
-              keypad                  curs_inopts(3x)
-              killchar                curs_termattrs(3x)
-              killwchar               curs_termattrs(3x)
-              leaveok                 curs_outopts(3x)
-              longname                curs_termattrs(3x)
-              mcprint                 curs_print(3x)*
-              meta                    curs_inopts(3x)
-              mouse_trafo             curs_mouse(3x)*
-              mouseinterval           curs_mouse(3x)*
-              mousemask               curs_mouse(3x)*
-              move                    curs_move(3x)
-              mvadd_wch               curs_add_wch(3x)
-              mvadd_wchnstr           curs_add_wchstr(3x)
-              mvadd_wchstr            curs_add_wchstr(3x)
-              mvaddch                 curs_addch(3x)
-              mvaddchnstr             curs_addchstr(3x)
-              mvaddchstr              curs_addchstr(3x)
-              mvaddnstr               curs_addstr(3x)
-              mvaddnwstr              curs_addwstr(3x)
-              mvaddstr                curs_addstr(3x)
-              mvaddwstr               curs_addwstr(3x)
-              mvchgat                 curs_attr(3x)
-              mvcur                   curs_terminfo(3x)
-              mvdelch                 curs_delch(3x)
-              mvderwin                curs_window(3x)
-              mvget_wch               curs_get_wch(3x)
-              mvget_wstr              curs_get_wstr(3x)
-              mvgetch                 curs_getch(3x)
-              mvgetn_wstr             curs_get_wstr(3x)
-              mvgetnstr               curs_getstr(3x)
-              mvgetstr                curs_getstr(3x)
-              mvhline                 curs_border(3x)
-              mvhline_set             curs_border_set(3x)
-              mvin_wch                curs_in_wch(3x)
-              mvin_wchnstr            curs_in_wchstr(3x)
-              mvin_wchstr             curs_in_wchstr(3x)
-              mvinch                  curs_inch(3x)
-              mvinchnstr              curs_inchstr(3x)
-              mvinchstr               curs_inchstr(3x)
-              mvinnstr                curs_instr(3x)
-              mvinnwstr               curs_inwstr(3x)
-              mvins_nwstr             curs_ins_wstr(3x)
-              mvins_wch               curs_ins_wch(3x)
-              mvins_wstr              curs_ins_wstr(3x)
-              mvinsch                 curs_insch(3x)
-              mvinsnstr               curs_insstr(3x)
-              mvinsstr                curs_insstr(3x)
-
-              mvinstr                 curs_instr(3x)
-              mvinwstr                curs_inwstr(3x)
-              mvprintw                curs_printw(3x)
-              mvscanw                 curs_scanw(3x)
-              mvvline                 curs_border(3x)
-              mvvline_set             curs_border_set(3x)
-              mvwadd_wch              curs_add_wch(3x)
-              mvwadd_wchnstr          curs_add_wchstr(3x)
-              mvwadd_wchstr           curs_add_wchstr(3x)
-              mvwaddch                curs_addch(3x)
-              mvwaddchnstr            curs_addchstr(3x)
-              mvwaddchstr             curs_addchstr(3x)
-              mvwaddnstr              curs_addstr(3x)
-              mvwaddnwstr             curs_addwstr(3x)
-              mvwaddstr               curs_addstr(3x)
-              mvwaddwstr              curs_addwstr(3x)
-              mvwchgat                curs_attr(3x)
-              mvwdelch                curs_delch(3x)
-              mvwget_wch              curs_get_wch(3x)
-              mvwget_wstr             curs_get_wstr(3x)
-              mvwgetch                curs_getch(3x)
-              mvwgetn_wstr            curs_get_wstr(3x)
-              mvwgetnstr              curs_getstr(3x)
-              mvwgetstr               curs_getstr(3x)
-              mvwhline                curs_border(3x)
-              mvwhline_set            curs_border_set(3x)
-              mvwin                   curs_window(3x)
-              mvwin_wch               curs_in_wch(3x)
-              mvwin_wchnstr           curs_in_wchstr(3x)
-              mvwin_wchstr            curs_in_wchstr(3x)
-              mvwinch                 curs_inch(3x)
-              mvwinchnstr             curs_inchstr(3x)
-              mvwinchstr              curs_inchstr(3x)
-              mvwinnstr               curs_instr(3x)
-              mvwinnwstr              curs_inwstr(3x)
-              mvwins_nwstr            curs_ins_wstr(3x)
-              mvwins_wch              curs_ins_wch(3x)
-              mvwins_wstr             curs_ins_wstr(3x)
-              mvwinsch                curs_insch(3x)
-              mvwinsnstr              curs_insstr(3x)
-              mvwinsstr               curs_insstr(3x)
-              mvwinstr                curs_instr(3x)
-              mvwinwstr               curs_inwstr(3x)
-              mvwprintw               curs_printw(3x)
-              mvwscanw                curs_scanw(3x)
-              mvwvline                curs_border(3x)
-              mvwvline_set            curs_border_set(3x)
-              napms                   curs_kernel(3x)
-              newpad                  curs_pad(3x)
-              newterm                 curs_initscr(3x)
-              newwin                  curs_window(3x)
-              nl                      curs_outopts(3x)
-              nocbreak                curs_inopts(3x)
-              nodelay                 curs_inopts(3x)
-              noecho                  curs_inopts(3x)
-              nofilter                curs_util(3x)*
-              nonl                    curs_outopts(3x)
-              noqiflush               curs_inopts(3x)
-              noraw                   curs_inopts(3x)
-              notimeout               curs_inopts(3x)
-              overlay                 curs_overlay(3x)
-              overwrite               curs_overlay(3x)
-              pair_content            curs_color(3x)
-              pechochar               curs_pad(3x)
-              pnoutrefresh            curs_pad(3x)
-
-              prefresh                curs_pad(3x)
-              printw                  curs_printw(3x)
-              putp                    curs_terminfo(3x)
-              putwin                  curs_util(3x)
-              qiflush                 curs_inopts(3x)
-              raw                     curs_inopts(3x)
-              redrawwin               curs_refresh(3x)
-              refresh                 curs_refresh(3x)
-              reset_prog_mode         curs_kernel(3x)
-              reset_shell_mode        curs_kernel(3x)
-              resetty                 curs_kernel(3x)
-              resizeterm              resizeterm(3x)*
-              restartterm             curs_terminfo(3x)
-              ripoffline              curs_kernel(3x)
-              savetty                 curs_kernel(3x)
-              scanw                   curs_scanw(3x)
-              scr_dump                curs_scr_dump(3x)
-              scr_init                curs_scr_dump(3x)
-              scr_restore             curs_scr_dump(3x)
-              scr_set                 curs_scr_dump(3x)
-              scrl                    curs_scroll(3x)
-              scroll                  curs_scroll(3x)
-              scrollok                curs_outopts(3x)
-              set_curterm             curs_terminfo(3x)
-              set_term                curs_initscr(3x)
-              setcchar                curs_getcchar(3x)
-              setscrreg               curs_outopts(3x)
-              setsyx                  curs_kernel(3x)
-              setterm                 curs_terminfo(3x)
-              setupterm               curs_terminfo(3x)
-              slk_attr                curs_slk(3x)*
-              slk_attr_off            curs_slk(3x)
-              slk_attr_on             curs_slk(3x)
-              slk_attr_set            curs_slk(3x)
-              slk_attroff             curs_slk(3x)
-              slk_attron              curs_slk(3x)
-              slk_attrset             curs_slk(3x)
-              slk_clear               curs_slk(3x)
-              slk_color               curs_slk(3x)
-              slk_init                curs_slk(3x)
-              slk_label               curs_slk(3x)
-              slk_noutrefresh         curs_slk(3x)
-              slk_refresh             curs_slk(3x)
-              slk_restore             curs_slk(3x)
-              slk_set                 curs_slk(3x)
-              slk_touch               curs_slk(3x)
-              standend                curs_attr(3x)
-              standout                curs_attr(3x)
-              start_color             curs_color(3x)
-              subpad                  curs_pad(3x)
-              subwin                  curs_window(3x)
-              syncok                  curs_window(3x)
-              term_attrs              curs_termattrs(3x)
-              termattrs               curs_termattrs(3x)
-              termname                curs_termattrs(3x)
-              tgetent                 curs_termcap(3x)
-              tgetflag                curs_termcap(3x)
-              tgetnum                 curs_termcap(3x)
-              tgetstr                 curs_termcap(3x)
-              tgoto                   curs_termcap(3x)
-              tigetflag               curs_terminfo(3x)
-              tigetnum                curs_terminfo(3x)
-              tigetstr                curs_terminfo(3x)
-              timeout                 curs_inopts(3x)
-              touchline               curs_touch(3x)
-
-              touchwin                curs_touch(3x)
-              tparm                   curs_terminfo(3x)
-              tputs                   curs_termcap(3x)
-              tputs                   curs_terminfo(3x)
-              trace                   curs_trace(3x)*
-              typeahead               curs_inopts(3x)
-              unctrl                  curs_util(3x)
-              unget_wch               curs_get_wch(3x)
-              ungetch                 curs_getch(3x)
-              ungetmouse              curs_mouse(3x)*
-              untouchwin              curs_touch(3x)
-              use_default_colors      default_colors(3x)*
-              use_env                 curs_util(3x)
-              use_extended_names      curs_extend(3x)*
-              use_legacy_coding       legacy_coding(3x)*
-              vid_attr                curs_terminfo(3x)
-              vid_puts                curs_terminfo(3x)
-              vidattr                 curs_terminfo(3x)
-              vidputs                 curs_terminfo(3x)
-              vline                   curs_border(3x)
-              vline_set               curs_border_set(3x)
-              vw_printw               curs_printw(3x)
-              vw_scanw                curs_scanw(3x)
-              vwprintw                curs_printw(3x)
-              vwscanw                 curs_scanw(3x)
-              wadd_wch                curs_add_wch(3x)
-              wadd_wchnstr            curs_add_wchstr(3x)
-              wadd_wchstr             curs_add_wchstr(3x)
-              waddch                  curs_addch(3x)
-              waddchnstr              curs_addchstr(3x)
-              waddchstr               curs_addchstr(3x)
-              waddnstr                curs_addstr(3x)
-              waddnwstr               curs_addwstr(3x)
-              waddstr                 curs_addstr(3x)
-              waddwstr                curs_addwstr(3x)
-              wattr_get               curs_attr(3x)
-              wattr_off               curs_attr(3x)
-              wattr_on                curs_attr(3x)
-              wattr_set               curs_attr(3x)
-              wattroff                curs_attr(3x)
-              wattron                 curs_attr(3x)
-              wattrset                curs_attr(3x)
-              wbkgd                   curs_bkgd(3x)
-              wbkgdset                curs_bkgd(3x)
-              wbkgrnd                 curs_bkgrnd(3x)
-              wbkgrndset              curs_bkgrnd(3x)
-              wborder                 curs_border(3x)
-              wborder_set             curs_border_set(3x)
-              wchgat                  curs_attr(3x)
-              wclear                  curs_clear(3x)
-              wclrtobot               curs_clear(3x)
-              wclrtoeol               curs_clear(3x)
-              wcolor_set              curs_attr(3x)
-              wcursyncup              curs_window(3x)
-              wdelch                  curs_delch(3x)
-              wdeleteln               curs_deleteln(3x)
-              wecho_wchar             curs_add_wch(3x)
-              wechochar               curs_addch(3x)
-              wenclose                curs_mouse(3x)*
-              werase                  curs_clear(3x)
-              wget_wch                curs_get_wch(3x)
-              wget_wstr               curs_get_wstr(3x)
-              wgetbkgrnd              curs_bkgrnd(3x)
-              wgetch                  curs_getch(3x)
-              wgetn_wstr              curs_get_wstr(3x)
-
-              wgetnstr                curs_getstr(3x)
-              wgetstr                 curs_getstr(3x)
-              whline                  curs_border(3x)
-              whline_set              curs_border_set(3x)
-              win_wch                 curs_in_wch(3x)
-              win_wchnstr             curs_in_wchstr(3x)
-              win_wchstr              curs_in_wchstr(3x)
-              winch                   curs_inch(3x)
-              winchnstr               curs_inchstr(3x)
-              winchstr                curs_inchstr(3x)
-              winnstr                 curs_instr(3x)
-              winnwstr                curs_inwstr(3x)
-              wins_nwstr              curs_ins_wstr(3x)
-              wins_wch                curs_ins_wch(3x)
-              wins_wstr               curs_ins_wstr(3x)
-              winsch                  curs_insch(3x)
-              winsdelln               curs_deleteln(3x)
-              winsertln               curs_deleteln(3x)
-              winsnstr                curs_insstr(3x)
-              winsstr                 curs_insstr(3x)
-              winstr                  curs_instr(3x)
-              winwstr                 curs_inwstr(3x)
-              wmouse_trafo            curs_mouse(3x)*
-              wmove                   curs_move(3x)
-              wnoutrefresh            curs_refresh(3x)
-              wprintw                 curs_printw(3x)
-              wredrawln               curs_refresh(3x)
-              wrefresh                curs_refresh(3x)
-              wresize                 wresize(3x)*
-              wscanw                  curs_scanw(3x)
-              wscrl                   curs_scroll(3x)
-              wsetscrreg              curs_outopts(3x)
-              wstandend               curs_attr(3x)
-              wstandout               curs_attr(3x)
-              wsyncdown               curs_window(3x)
-              wsyncup                 curs_window(3x)
-              wtimeout                curs_inopts(3x)
-              wtouchln                curs_touch(3x)
-              wunctrl                 curs_util(3x)
-              wvline                  curs_border(3x)
-              wvline_set              curs_border_set(3x)
-
-
-
-

RETURN VALUE

-       Routines that return an integer return  ERR  upon  failure
-       and  an  integer value other than ERR upon successful com-
-       pletion, unless otherwise noted in  the  routine  descrip-
-       tions.
-
-       All  macros  return  the  value  of  the w version, except
-       setscrreg, wsetscrreg, getyx, getbegyx, and getmaxyx.  The
-       return  values  of setscrreg, wsetscrreg, getyx, getbegyx,
-       and getmaxyx are undefined (i.e., these should not be used
-       as the right-hand side of assignment statements).
-
-       Routines that return pointers return NULL on error.
-
-
-
-

ENVIRONMENT

-       The following environment symbols are useful for customiz-
-       ing the runtime behavior of the ncurses library.  The most
-       important ones have been already discussed in detail.
-
-       BAUDRATE
-            The  debugging library checks this environment symbol
-            when the application has redirected output to a file.
-            The  symbol's numeric value is used for the baudrate.
-            If no value is found, ncurses uses 9600.  This allows
-            testers  to construct repeatable test-cases that take
-            into account costs that depend on baudrate.
-
-       CC   When set, change occurrences of the command_character
-            (i.e.,  the  cmdch capability) of the loaded terminfo
-            entries to the value of this symbol.  Very  few  ter-
-            minfo entries provide this feature.
-
-            Because  this  name is also used in development envi-
-            ronments to represent the C compiler's name,  ncurses
-            ignores it if it does not happen to be a single char-
-            acter.
-
-       COLUMNS
-            Specify  the  width  of  the  screen  in  characters.
-            Applications  running in a windowing environment usu-
-            ally are able to obtain the width of  the  window  in
-            which  they  are  executing.   If neither the COLUMNS
-            value nor the terminal's screen  size  is  available,
-            ncurses  uses  the size which may be specified in the
-            terminfo database (i.e., the cols capability).
-
-            It is important that your application use  a  correct
-            size  for  the  screen.   This is not always possible
-            because your application may be  running  on  a  host
-            which  does not honor NAWS (Negotiations About Window
-            Size), or because  you  are  temporarily  running  as
-            another  user.  However, setting COLUMNS and/or LINES
-            overrides  the  library's  use  of  the  screen  size
-            obtained from the operating system.
-
-            Either  COLUMNS  or  LINES  symbols  may be specified
-            independently.  This is mainly useful  to  circumvent
-            legacy  misfeatures  of  terminal descriptions, e.g.,
-            xterm which commonly specifies a 65 line screen.  For
-            best  results, lines and cols should not be specified
-            in a terminal description for terminals which are run
-            as emulations.
-
-            Use the use_env function to disable all use of exter-
-            nal environment (including system calls) to determine
-            the screen size.
-
-       ESCDELAY
-            Specifies  the total time, in milliseconds, for which
-            ncurses will await  a  character  sequence,  e.g.,  a
-            function  key.  The default value, 1000 milliseconds,
-            is enough for most uses.  However, it is made a vari-
-            able to accommodate unusual applications.
-
-            The most common instance where you may wish to change
-            this value is to work with slow hosts, e.g.,  running
-            on  a  network.   If  the host cannot read characters
-            rapidly enough, it will have the same  effect  as  if
-            the  terminal did not send characters rapidly enough.
-            The library will still see a timeout.
-
-            Note that xterm mouse events are built up from  char-
-            acter  sequences  received  from  the xterm.  If your
-            application makes heavy use of multiple-clicking, you
-            may  wish  to lengthen this default value because the
-            timeout applies to the composed multi-click event  as
-            well as the individual clicks.
-
-            In  addition to the environment variable, this imple-
-            mentation provides a global variable  with  the  same
-            name.  Portable applications should not rely upon the
-            presence of ESCDELAY in either form, but setting  the
-            environment  variable rather than the global variable
-            does not create problems when compiling  an  applica-
-            tion.
-
-       HOME Tells  ncurses where your home directory is.  That is
-            where  it  may  read  and  write  auxiliary  terminal
-            descriptions:
-
-            $HOME/.termcap
-            $HOME/.terminfo
-
-       LINES
-            Like  COLUMNS,  specify  the  height of the screen in
-            characters.  See COLUMNS for a detailed  description.
-
-       MOUSE_BUTTONS_123
-            This applies only to the OS/2 EMX port.  It specifies
-            the order of buttons on the mouse.   OS/2  numbers  a
-            3-button mouse inconsistently from other platforms:
-
-            1 = left
-            2 = right
-            3 = middle.
-
-            This symbol lets you customize the mouse.  The symbol
-            must be three numeric digits 1-3 in any order,  e.g.,
-            123  or  321.   If  it is not specified, ncurses uses
-            132.
-
-       NCURSES_ASSUMED_COLORS
-            Override the compiled-in assumption that  the  termi-
-            nal's   default   colors   are   white-on-black  (see
-            default_colors(3x)).  You may set the foreground  and
-            background  color  values with this environment vari-
-            able by proving a  2-element  list:  foreground,back-
-            ground.   For  example, to tell ncurses to not assume
-            anything about the colors, set this to  "-1,-1".   To
-            make  it  green-on-black, set it to "2,0".  Any posi-
-            tive value from zero to the terminfo max_colors value
-            is allowed.
-
-       NCURSES_GPM_TERMS
-            This  applies  only  to ncurses configured to use the
-            GPM interface.
-
-            If present, the environment variable is a list of one
-            or  more  terminal names against which the TERM envi-
-            ronment variable is matched.  Setting it to an  empty
-            value  disables the GPM interface; using the built-in
-            support for xterm, etc.
-
-            If the environment variable is absent,  ncurses  will
-            attempt to open GPM if TERM contains "linux".
-
-       NCURSES_NO_HARD_TABS
-            Ncurses  may  use tabs as part of the cursor movement
-            optimization.  In some cases,  your  terminal  driver
-            may  not handle these properly.  Set this environment
-            variable to disable the feature.  You can also adjust
-            your stty settings to avoid the problem.
-
-       NCURSES_NO_MAGIC_COOKIES
-            Some  terminals  use  a  magic-cookie  feature  which
-            requires special handling to  make  highlighting  and
-            other  video  attributes  display  properly.  You can
-            suppress the highlighting entirely for  these  termi-
-            nals by setting this environment variable.
-
-       NCURSES_NO_PADDING
-            Most  of  the  terminal  descriptions in the terminfo
-            database are written for real  "hardware"  terminals.
-            Many  people  use  terminal  emulators which run in a
-            windowing environment and use  curses-based  applica-
-            tions.   Terminal  emulators can duplicate all of the
-            important aspects of a hardware terminal, but they do
-            not  have the same limitations.  The chief limitation
-            of a hardware terminal from the  standpoint  of  your
-            application is the management of dataflow, i.e., tim-
-            ing.  Unless a hardware terminal is interfaced into a
-            terminal  concentrator  (which does flow control), it
-            (or your application) must manage dataflow,  prevent-
-            ing  overruns.   The  cheapest  solution (no hardware
-            cost) is for your program to do this by pausing after
-            operations  that  the  terminal  does slowly, such as
-            clearing the display.
-
-            As a result, many  terminal  descriptions  (including
-            the  vt100)  have delay times embedded.  You may wish
-            to use these descriptions, but not want  to  pay  the
-            performance penalty.
-
-            Set  the NCURSES_NO_PADDING symbol to disable all but
-            mandatory padding.  Mandatory padding is  used  as  a
-            part of special control sequences such as flash.
-
-       NCURSES_NO_SETBUF
-            Normally  ncurses enables buffered output during ter-
-            minal initialization.   This  is  done  (as  in  SVr4
-            curses)  for  performance  reasons.  For testing pur-
-            poses, both of ncurses and certain applications, this
-            feature    is    made    optional.     Setting    the
-            NCURSES_NO_SETBUF variable disables output buffering,
-            leaving  the  output  in  the  original (usually line
-            buffered) mode.
-
-       NCURSES_NO_UTF8_ACS
-            During initialization, the ncurses library checks for
-            special  cases where VT100 line-drawing (and the cor-
-            responding  alternate  character  set   capabilities)
-            described  in  the  terminfo are known to be missing.
-            Specifically, when running in  a  UTF-8  locale,  the
-            Linux  console  emulator  and  the GNU screen program
-            ignore these.  Ncurses checks  the  TERM  environment
-            variable  for  these.   For  other special cases, you
-            should set this  environment  variable.   Doing  this
-            tells  ncurses to use Unicode values which correspond
-            to the VT100 line-drawing glyphs.  That works for the
-            special cases cited, and is likely to work for termi-
-            nal emulators.
-
-            When setting this variable, you should set  it  to  a
-            nonzero  value.   Setting it to zero (or to a nonnum-
-            ber) disables  the  special  check  for  "linux"  and
-            "screen".
-
-            As   an  alternative  to  the  environment  variable,
-            ncurses checks for an  extended  terminfo  capability
-            U8.   This  is a numeric capability which can be com-
-            piled using tic -x.  For example
-
-            # linux console, if patched to provide working
-            # VT100 shift-in/shift-out, with corresponding font.
-            linux-vt100|linux console with VT100 line-graphics,
-                                 U8#0, use=linux,
-
-            # uxterm with vt100Graphics resource set to false
-            xterm-utf8|xterm relying on UTF-8 line-graphics,
-                                 U8#1, use=xterm,
-
-            The name "U8" is chosen to be two characters, to per-
-            mit  it  to be used by applications that use ncurses'
-            termcap interface.
-
-       NCURSES_TRACE
-            During initialization, the ncurses debugging  library
-            checks  the  NCURSES_TRACE symbol.  If it is defined,
-            to a numeric value, ncurses calls the trace function,
-            using that value as the argument.
-
-            The  argument  values, which are defined in curses.h,
-            provide several types of information.   When  running
-            with  traces enabled, your application will write the
-            file trace to the current directory.
-
-       TERM Denotes your terminal type.  Each  terminal  type  is
-            distinct, though many are similar.
-
-       TERMCAP
-            If the ncurses library has been configured with term-
-            cap support, ncurses  will  check  for  a  terminal's
-            description in termcap form if it is not available in
-            the terminfo database.
-
-            The  TERMCAP  symbol  contains  either   a   terminal
-            description  (with  newlines stripped out), or a file
-            name telling where the  information  denoted  by  the
-            TERM  symbol  exists.   In  either  case,  setting it
-            directs ncurses to ignore the usual  place  for  this
-            information, e.g., /etc/termcap.
-
-       TERMINFO
-            Overrides the directory in which ncurses searches for
-            your terminal description.  This is the simplest, but
-            not  the  only way to change the list of directories.
-            The complete list of directories in order follows:
-
-            o   the last directory to  which  ncurses  wrote,  if
-                any, is searched first
-
-            o   the directory specified by the TERMINFO symbol
-
-            o   $HOME/.terminfo
-
-            o   directories listed in the TERMINFO_DIRS symbol
-
-            o   one  or  more directories whose names are config-
-                ured and compiled into the ncurses library, e.g.,
-                /usr/share/terminfo
-
-       TERMINFO_DIRS
-            Specifies  a list of directories to search for termi-
-            nal descriptions.  The list is  separated  by  colons
-            (i.e.,  ":") on Unix, semicolons on OS/2 EMX.  All of
-            the terminal descriptions are in terminfo form, which
-            makes  a  subdirectory  named for the first letter of
-            the terminal names therein.
-
-       TERMPATH
-            If TERMCAP does not hold a  file  name  then  ncurses
-            checks  the TERMPATH symbol.  This is a list of file-
-            names separated by spaces or colons  (i.e.,  ":")  on
-            Unix, semicolons on OS/2 EMX.  If the TERMPATH symbol
-            is not set, ncurses looks in the files  /etc/termcap,
-            /usr/share/misc/termcap  and  $HOME/.termcap, in that
-            order.
-
-       The library may be configured to disregard  the  following
-       variables  when  the current user is the superuser (root),
-       or if the application uses setuid or  setgid  permissions:
-       $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME.
-
-
-
-

ALTERNATE CONFIGURATIONS

-       Several  different  configurations are possible, depending
-       on  the  configure  script  options  used  when   building
-       ncurses.   There  are a few main options whose effects are
-       visible to the applications developer using ncurses:
-
-       --disable-overwrite
-            The standard include for ncurses is as noted in  SYN-
-            OPSIS:
-
-            #include <curses.h>
-
-            This  option is used to avoid filename conflicts when
-            ncurses is not the main implementation of  curses  of
-            the  computer.   If  ncurses  is  installed disabling
-            overwrite, it puts its  headers  in  a  subdirectory,
-            e.g.,
-
-            #include <ncurses/curses.h>
-
-            It  also  omits a symbolic link which would allow you
-            to use -lcurses to build executables.
-
-       --enable-widec
-            The configure script renames the library and (if  the
-            --disable-overwrite  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
-
-            -lncurses
-
-            you link with
-
-            -lncursesw
-
-            You must also define _XOPEN_SOURCE_EXTENDED when com-
-            piling  for  the  wide-character  library  to use the
-            extended (wide-character)  functions.   The  curses.h
-            file   which  is  installed  for  the  wide-character
-            library is designed to be compatible with the  normal
-            library's header.  Only the size of the WINDOW struc-
-            ture differs, and very few applications require  more
-            than  a  pointer  to  WINDOWs.   If  the  headers are
-            installed  allowing  overwrite,  the   wide-character
-            library's  headers should be installed last, to allow
-            applications to be built using  either  library  from
-            the same set of headers.
-
-       --with-shared
-
-       --with-normal
-
-       --with-debug
-
-       --with-profile
-            The  shared  and normal (static) library names differ
-            by   their   suffixes,   e.g.,   libncurses.so    and
-            libncurses.a.   The debug and profiling libraries add
-            a "_g" and a "_p" to  the  root  names  respectively,
-            e.g., libncurses_g.a and libncurses_p.a.
-
-       --with-trace
-            The  trace  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 assum-
-            ing it is always in the debug library.
-
-
-
-

FILES

-       /usr/share/tabset
-            directory  containing  initialization  files  for the
-            terminal capability database /usr/share/terminfo ter-
-            minal capability database
-
-
-
-

SEE ALSO

-       terminfo(5)  and  related  pages whose names begin "curs_"
-       for detailed routine descriptions.
-       curs_variables(3x)
-
-
-
-

EXTENSIONS

-       The  ncurses  library  can  be  compiled  with  an  option
-       (-DUSE_GETCAP) that falls back to the old-style /etc/term-
-       cap file if the terminal setup code cannot find a terminfo
-       entry  corresponding  to TERM.  Use of this feature is not
-       recommended, as it essentially includes an entire  termcap
-       compiler  in the ncurses startup code, at significant cost
-       in core and startup cycles.
-
-       The ncurses  library  includes  facilities  for  capturing
-       mouse  events on certain terminals (including xterm).  See
-       the curs_mouse(3x) manual page for details.
-
-       The ncurses library includes facilities for responding  to
-       window  resizing  events,  e.g., when running in an xterm.
-       See the resizeterm(3x) and wresize(3x)  manual  pages  for
-       details.   In addition, the library may be configured with
-       a SIGWINCH handler.
-
-       The ncurses library extends the fixed set of function  key
-       capabilities  of  terminals  by  allowing  the application
-       designer to define additional key  sequences  at  runtime.
-       See the define_key(3x) key_defined(3x), and keyok(3x) man-
-       ual pages for details.
-
-       The ncurses library can exploit the capabilities of termi-
-       nals  which  implement the ISO-6429 SGR 39 and SGR 49 con-
-       trols, which allow an application to reset the terminal to
-       its  original  foreground and background colors.  From the
-       users' perspective, the application is able to  draw  col-
-       ored  text  on  a  background  whose color is set indepen-
-       dently, providing better  control  over  color  contrasts.
-       See the default_colors(3x) manual page for details.
-
-       The  ncurses  library  includes  a  function for directing
-       application output to a printer attached to  the  terminal
-       device.  See the curs_print(3x) manual page for details.
-
-
-
-

PORTABILITY

-       The  ncurses  library is intended to be BASE-level confor-
-       mant with XSI Curses.  The EXTENDED XSI Curses functional-
-       ity (including color support) is supported.
-
-       A  small  number of local differences (that is, individual
-       differences between the XSI Curses and ncurses calls)  are
-       described  in  PORTABILITY  sections  of  the  library man
-       pages.
-
-       This implementation also contains several extensions:
-
-       o   The routine has_key is not part of  XPG4,  nor  is  it
-           present  in  SVr4.  See the curs_getch(3x) manual page
-           for details.
-
-       o   The routine slk_attr is not part of XPG4,  nor  is  it
-           present in SVr4.  See the curs_slk(3x) manual page for
-           details.
-
-       o   The routines getmouse, mousemask, ungetmouse, mousein-
-           terval, and wenclose relating to mouse interfacing are
-           not part of XPG4, nor are they present in  SVr4.   See
-           the curs_mouse(3x) manual page for details.
-
-       o   The  routine  mcprint  was not present in any previous
-           curses implementation.  See the curs_print(3x)  manual
-           page for details.
-
-       o   The  routine  wresize  is  not part of XPG4, nor is it
-           present in SVr4.  See the wresize(3x) manual page  for
-           details.
-
-       o   The  WINDOW structure's internal details can be hidden
-           from application programs.   See  curs_opaque(3x)  for
-           the discussion of is_scrollok, etc.
-
-       o   This implementation can be configured to provide rudi-
-           mentary support for multi-threaded applications.   See
-           curs_threads(3x) for details.
-
-       o   This  implementation can also be configured to provide
-           a set of functions which improve the ability to manage
-           multiple  screens.  See curs_sp_funcs(3x) for details.
-
-       In historic curses versions, delays embedded in the  capa-
-       bilities cr, ind, cub1, ff and tab activated corresponding
-       delay bits in the UNIX tty driver.   In  this  implementa-
-       tion,  all  padding  is  done  by sending NUL bytes.  This
-       method is slightly more expensive, but narrows the  inter-
-       face  to  the  UNIX kernel significantly and increases the
-       package's portability correspondingly.
-
-
-
-

NOTES

-       The header  file  <curses.h>  automatically  includes  the
-       header files <stdio.h> and <unctrl.h>.
-
-       If  standard  output from a ncurses program is re-directed
-       to something which is not a tty, screen  updates  will  be
-       directed to standard error.  This was an undocumented fea-
-       ture of AT&T System V Release 3 curses.
-
-
-
-

AUTHORS

-       Zeyd M. Ben-Halim, Eric  S.  Raymond,  Thomas  E.  Dickey.
-       Based on pcurses by Pavel Curtis.
-
-
-
-                                                            ncurses(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/ncurses5-config.1.html b/deps/ncurses-5.9/doc/html/man/ncurses5-config.1.html deleted file mode 100644 index 2169bb9..0000000 --- a/deps/ncurses-5.9/doc/html/man/ncurses5-config.1.html +++ /dev/null @@ -1,133 +0,0 @@ - - - - -ncurses5-config 1 - - - - -

ncurses5-config 1

-
-
-
-ncurses5-config(1)                                   ncurses5-config(1)
-
-
-
-
-
-

NAME

-       ncurses5-config - helper script for ncurses libraries
-
-
-
-

SYNOPSIS

-       ncurses5-config [options]
-
-
-
-

DESCRIPTION

-       This is a shell script which simplifies configuring appli-
-       cations against a particular set of ncurses libraries.
-
-
-
-

OPTIONS

-       --prefix
-              echos the package-prefix of ncurses
-
-       --exec-prefix
-              echos the executable-prefix of ncurses
-
-       --cflags
-              echos the C compiler flags needed to  compile  with
-              ncurses
-
-       --libs echos the libraries needed to link with ncurses
-
-       --version
-              echos the release+patchdate version of ncurses
-
-       --abi-version
-              echos the ABI version of ncurses
-
-       --mouse-version
-              echos the mouse-interface version of ncurses
-
-       --bindir
-              echos the directory containing ncurses programs
-
-       --datadir
-              echos the directory containing ncurses data
-
-       --includedir
-              echos the directory containing ncurses header files
-
-       --libdir
-              echos the directory containing ncurses libraries
-
-       --mandir
-              echos the directory containing ncurses manpages
-
-       --terminfo
-              echos the $TERMINFO terminfo database path, e.g.,
-              /usr/share/terminfo
-
-       --terminfo-dirs
-              echos the $TERMINFO_DIRS directory list, e.g.,
-              /usr/local/ncurses/lib/terminfo:/usr/share/terminfo
-
-       --termpath
-              echos  the  $TERMPATH  termcap list, if support for
-              termcap is configured.
-
-       --help prints this message
-
-
-
-

SEE ALSO

-       curses(3x)
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                     ncurses5-config(1)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/panel.3x.html b/deps/ncurses-5.9/doc/html/man/panel.3x.html deleted file mode 100644 index c73e241..0000000 --- a/deps/ncurses-5.9/doc/html/man/panel.3x.html +++ /dev/null @@ -1,241 +0,0 @@ - - - - -panel 3x - - - - -

panel 3x

-
-
-
-panel(3x)                                                     panel(3x)
-
-
-
-
-
-

NAME

-       panel - panel stack extension for curses
-
-
-
-

SYNOPSIS

-       #include <panel.h>
-
-       cc [flags] sourcefiles -lpanel -lncurses
-
-       PANEL *new_panel(WINDOW *win)
-       int bottom_panel(PANEL *pan)
-       int top_panel(PANEL *pan)
-       int show_panel(PANEL *pan)
-       void update_panels();
-       int hide_panel(PANEL *pan)
-       WINDOW *panel_window(const PANEL *pan)
-       int replace_panel(PANEL *pan, WINDOW *window)
-       int move_panel(PANEL *pan, int starty, int startx)
-       int panel_hidden(const PANEL *pan)
-       PANEL *panel_above(const PANEL *pan)
-       PANEL *panel_below(const PANEL *pan)
-       int set_panel_userptr(PANEL *pan, const void *ptr)
-       const void *panel_userptr(const PANEL *pan)
-       int del_panel(PANEL *pan)
-
-
-
-

DESCRIPTION

-       Panels  are  curses(3x)  windows with the added feature of
-       depth.  Panel functions allow the use of  stacked  windows
-       and  ensure  the  proper  portions  of each window and the
-       curses stdscr window are hidden or displayed  when  panels
-       are  added,  moved,  modified or removed.  The set of cur-
-       rently visible panels is the stack of panels.  The  stdscr
-       window  is  beneath all panels, and is not considered part
-       of the stack.
-
-       A window is associated with every panel.  The  panel  rou-
-       tines  enable  you to create, move, hide, and show panels,
-       as well as position a panel at any desired location in the
-       stack.
-
-       Panel routines are a functional layer added to curses(3x),
-       make only high-level curses calls, and work anywhere  ter-
-       minfo curses does.
-
-
-
-

FUNCTIONS

-       new_panel(win)
-              allocates   a   PANEL structure, associates it with
-              win, places the panel  on  the  top  of  the  stack
-              (causes   it  to   be   displayed  above  any other
-              panel) and returns a pointer to the new panel.
-
-       update_panels()
-              refreshes the virtual screen to reflect  the  rela-
-              tions between the panels in the stack, but does not
-              call doupdate() to  refresh  the  physical  screen.
-              Use this function and not wrefresh or wnoutrefresh.
-              update_panels may be called more than once before a
-              call  to doupdate(), but doupdate() is the function
-              responsible for updating the physical screen.
-
-       del_panel(pan)
-              removes the given panel from the  stack and deallo-
-              cates  the  PANEL structure (but not its associated
-              window).
-
-       hide_panel(pan)
-              removes the given panel from the  panel  stack  and
-              thus hides it from view. The PANEL structure is not
-              lost, merely removed from the stack.
-
-       panel_hidden(pan)
-              returns TRUE if the panel is in  the  panel  stack,
-              FALSE  if  it  is  not.   If  the  panel  is a null
-              pointer, return ERR.
-
-       show_panel(pan)
-              makes a hidden panel visible by placing it  on  top
-              of the panels in the panel stack. See COMPATIBILITY
-              below.
-
-       top_panel(pan)
-              puts the given visible panel on top of  all  panels
-              in the stack.  See COMPATIBILITY below.
-
-       bottom_panel(pan)
-              puts panel at the bottom of all panels.
-
-       move_panel(pan,starty,startx)
-              moves the given panel window so that its upper-left
-              corner is at starty, startx.  It  does  not  change
-              the position of the panel in the stack.  Be sure to
-              use this function, not mvwin(),  to  move  a  panel
-              window.
-
-       replace_panel(pan,window)
-              replaces  the  current  window of panel with window
-              (useful, for example if you want to resize a panel;
-              if you're using ncurses, you can call replace_panel
-              on the output of wresize(3x)).  It does not  change
-              the position of the panel in the stack.
-
-       panel_above(pan)
-              returns  a  pointer to the panel above pan.  If the
-              panel argument is (PANEL *)0, it returns a  pointer
-              to the bottom panel in the stack.
-
-       panel_below(pan)
-              returns  a pointer to the panel just below pan.  If
-              the panel argument is  (PANEL  *)0,  it  returns  a
-              pointer to the top panel in the stack.
-
-       set_panel_userptr(pan,ptr)
-              sets the panel's user pointer.
-
-       panel_userptr(pan)
-              returns the user pointer for a given panel.
-
-       panel_window(pan)
-              returns a pointer to the window of the given panel.
-
-
-
-

DIAGNOSTICS

-       Each routine that returns a pointer  returns  NULL  if  an
-       error  occurs.  Each  routine  that  returns  an int value
-       returns OK if it executes successfully and ERR if not.
-
-
-
-

COMPATIBILITY

-       Reasonable care has been taken to   ensure   compatibility
-       with   the   native   panel  facility introduced in SVr3.2
-       (inspection  of  the  SVr4  manual  pages   suggests   the
-       programming  interface  is  unchanged).   The  PANEL  data
-       structures are merely  similar. The   programmer  is  cau-
-       tioned not to directly use PANEL fields.
-
-       The  functions  show_panel() and top_panel() are identical
-       in this implementation, and work equally  well  with  dis-
-       played or hidden panels.  In the native System V implemen-
-       tation, show_panel() is intended for making a hidden panel
-       visible  (at  the  top  of  the  stack) and top_panel() is
-       intended for making an already-visible panel move  to  the
-       top  of  the  stack.  You are cautioned to use the correct
-       function  to  ensure  compatibility  with   native   panel
-       libraries.
-
-
-
-

NOTE

-       In  your  library  list, libpanel.a should be before libn-
-       curses.a; that is, you want to  say  `-lpanel  -lncurses',
-       not the other way around (which would usually give a link-
-       error).
-
-
-
-

FILES

-       panel.h interface for the panels library
-
-       libpanel.a the panels library itself
-
-
-
-

SEE ALSO

-       curses(3x), curs_variables(3x),
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-

AUTHOR

-       Originally  written  by   Warren   Tucker   <wht@n4hgf.mt-
-       park.ga.us>,  primarily  to  assist  in porting u386mon to
-       systems without a native panels library.   Repackaged  for
-       ncurses by Zeyd ben-Halim.
-
-
-
-                                                              panel(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/resizeterm.3x.html b/deps/ncurses-5.9/doc/html/man/resizeterm.3x.html deleted file mode 100644 index d675ee3..0000000 --- a/deps/ncurses-5.9/doc/html/man/resizeterm.3x.html +++ /dev/null @@ -1,141 +0,0 @@ - - - - -resizeterm 3x - - - - -

resizeterm 3x

-
-
-
-resizeterm(3x)                                           resizeterm(3x)
-
-
-
-
-
-

NAME

-       is_term_resized,  resize_term,  resizeterm  -  change  the
-       curses terminal size
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       bool is_term_resized(int lines, int columns);
-       int resize_term(int lines, int columns);
-       int resizeterm(int lines, int columns);
-
-
-
-

DESCRIPTION

-       This is an extension to the curses library.   It  provides
-       callers  with  a hook into the ncurses data to resize win-
-       dows, primarily for use by programs running in an X Window
-       terminal  (e.g.,  xterm).  The function resizeterm resizes
-       the standard and current windows to the  specified  dimen-
-       sions,  and  adjusts  other  bookkeeping  data used by the
-       ncurses library that record the window dimensions.
-
-       Most  of  the  work  is  done  by   the   inner   function
-       resize_term.  The outer function resizeterm adds bookkeep-
-       ing for the SIGWINCH handler.  When resizing the  windows,
-       resize_term  blank-fills the areas that are extended.  The
-       calling application should fill in these areas with appro-
-       priate  data.  The resize_term function attempts to resize
-       all windows.  However, due to the  calling  convention  of
-       pads,  it  is  not  possible to resize these without addi-
-       tional interaction with the application.
-
-       A support function is_term_resized  is  provided  so  that
-       applications  can  check if the resize_term function would
-       modify the window structures.  It returns TRUE if the win-
-       dows would be modified, and FALSE otherwise.
-
-
-
-

RETURN VALUE

-       Except  as  notes,  these  function return the integer ERR
-       upon failure and OK on success.  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.
-
-
-
-

NOTES

-       While these functions are intended to be used to support a
-       signal  handler (i.e., for SIGWINCH), care should be taken
-       to avoid invoking them in a context where malloc or  real-
-       loc  may  have been interrupted, since it uses those func-
-       tions.
-
-       If ncurses is configured to supply its own  SIGWINCH  han-
-       dler, the resizeterm function ungetch's a KEY_RESIZE which
-       will be read on the next call to getch.  This is  used  to
-       alert an application that the screen size has changed, and
-       that it should repaint special features such as pads  that
-       cannot be done automatically.
-
-       If  the  environment  variables  LINES or COLUMNS are set,
-       this overrides  the  library's  use  of  the  window  size
-       obtained  from the operating system.  Thus, even if a SIG-
-       WINCH is received, no screen size change may be  recorded.
-       In that case, no KEY_RESIZE is queued for the next call to
-       getch; an ERR will be returned instead.
-
-
-
-

SEE ALSO

-       curs_variables(3x), wresize(3x).
-
-
-
-

AUTHOR

-       Thomas Dickey (from an equivalent function written in 1988
-       for BSD curses).
-
-
-
-                                                         resizeterm(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/tabs.1.html b/deps/ncurses-5.9/doc/html/man/tabs.1.html deleted file mode 100644 index a8781ac..0000000 --- a/deps/ncurses-5.9/doc/html/man/tabs.1.html +++ /dev/null @@ -1,171 +0,0 @@ - - - - -tabs 1 - - - - -

tabs 1

-
-
-
-tabs(1)                                                         tabs(1)
-
-
-
-
-
-

NAME

-       tabs - set tabs on a terminal
-
-
-
-

SYNOPSIS

-       tabs [-v[n]] [-ahuUV] file...
-
-
-
-

DESCRIPTION

-       The  tabs  program clears and sets tab-stops on the termi-
-       nal.  This uses the terminfo  clear_all_tabs  and  set_tab
-       capabilities.   If  either  is  absent,  tabs is unable to
-       clear/set tab-stops.  The terminal should be configured to
-       use hard tabs, e.g.,
-
-              stty tab0
-
-
-
-

OPTIONS

-   General Options
-       -Tname
-            Tell tabs which terminal type to use.  If this option
-            is not given, tabs will  use  the  $TERM  environment
-            variable.   If  that  is  not  set,  it  will use the
-            ansi+tabs entry.
-
-       -d   The debugging option shows a ruler line, followed  by
-            two  data  lines.   The  first  data  line  shows the
-            expected tab-stops marked with asterisks.  The second
-            data  line  shows  the  actual tab-stops, marked with
-            asterisks.
-
-       -n   This option tells tabs to check the options  and  run
-            any  debugging option, but not to modify the terminal
-            settings.
-
-       The tabs program processes a single  list  of  tab  stops.
-       The  last  option  to be processed which defines a list is
-       the one that determines the list to be processed.
-
-   Implicit Lists
-       Use a single number as an option, e.g., "-5" to  set  tabs
-       at  the  given  interval  (in  this case 1, 6, 11, 16, 21,
-       etc.).  Tabs are repeated up to the right  margin  of  the
-       screen.
-
-       Use "-0" to clear all tabs.
-
-       Use "-8" to set tabs to the standard interval.
-
-   Explicit Lists
-       An  explicit  list  can be defined after the options (this
-       does not use a "-").  The values in the list  must  be  in
-       increasing numeric order, and greater than zero.  They are
-       separated by a comma or a blank, for example,
-
-              tabs 1,6,11,16,21
-              tabs 1 6 11 16 21
-       Use a '+' to treat a number as an  increment  relative  to
-       the previous value, e.g.,
-
-              tabs 1,+5,+5,+5,+5
-       which is equivalent to the 1,6,11,16,21 example.
-
-   Predefined Tab-Stops
-       X/Open defines several predefined lists of tab stops.
-
-       -a   Assembler, IBM S/370, first format
-
-       -a2  Assembler, IBM S/370, second format
-
-       -c   COBOL, normal format
-
-       -c2  COBOL compact format
-
-       -c3  COBOL compact format extended
-
-       -f   FORTRAN
-
-       -p   PL/I
-
-       -s   SNOBOL
-
-       -u   UNIVAC 1100 Assembler
-
-
-
-

PORTABILITY

-       X/Open  describes  a  +m option, to set a terminal's left-
-       margin.  Very few of the entries in the terminal  database
-       provide this capability.
-
-       The  -d  (debug) and -n (no-op) options are extensions not
-       provided by other implementations.
-
-       Documentation for other implementations states that  there
-       is  a limit on the number of tab stops.  While some termi-
-       nals may not accept an arbitrary number of tab stops, this
-       implementation  will  attempt  to  set tab stops up to the
-       right margin of the screen, if the given list  happens  to
-       be that long.
-
-
-
-

SEE ALSO

-       tset(1), infocmp(1m), curses(3x), terminfo(5).
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                                tabs(1)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/term.5.html b/deps/ncurses-5.9/doc/html/man/term.5.html deleted file mode 100644 index 73ecbb2..0000000 --- a/deps/ncurses-5.9/doc/html/man/term.5.html +++ /dev/null @@ -1,308 +0,0 @@ - - - - -term 5 - - - - -

term 5

-
-
-
-term(5)                                                         term(5)
-
-
-
-
-
-

NAME

-       term - format of compiled term file.
-
-
-
-

SYNOPSIS

-       term
-
-
-
-

DESCRIPTION

-   STORAGE LOCATION
-       Compiled terminfo descriptions are placed under the direc-
-       tory /usr/share/terminfo.   Two  configurations  are  sup-
-       ported (when building the ncurses libraries):
-
-       directory tree
-            A  two-level  scheme is used to avoid a linear search
-            of a  huge  UNIX  system  directory:  /usr/share/ter-
-            minfo/c/name  where name is the name of the terminal,
-            and c is the first character of name.  Thus, act4 can
-            be  found  in  the  file  /usr/share/terminfo/a/act4.
-            Synonyms for the same  terminal  are  implemented  by
-            multiple links to the same compiled file.
-
-       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 pri-
-            mary name as  a  key,  and  records  containing  only
-            aliases pointing to the primary name.
-
-            If built to write hashed databases, ncurses can still
-            read terminfo  databases  organized  as  a  directory
-            tree,  but  cannot  write  entries into the directory
-            tree.  It can  write  (or  rewrite)  entries  in  the
-            hashed database.
-
-            ncurses  distinguishes  the two cases in the TERMINFO
-            and TERMINFO_DIRS environment variable by assuming  a
-            directory  tree  for  entries  that  correspond to an
-            existing directory, and hashed database otherwise.
-
-   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  or  sign  extension  are
-       made.
-
-       The  compiled  file  is  created with the tic program, and
-       read by the routine setupterm.  The file is  divided  into
-       six parts: the header, terminal names, boolean flags, num-
-       bers, strings, and string table.
-
-       The header section begins the file.  This section contains
-       six  short  integers in the format described below.  These
-       integers are
-
-            (1) the magic number (octal 0432);
-
-            (2) the size, in bytes, of the names section;
-
-            (3) the number of bytes in the boolean section;
-
-            (4) the number of short integers in the numbers  sec-
-            tion;
-
-            (5)  the  number  of  offsets (short integers) in the
-            strings section;
-
-            (6) the size, in bytes, of the string table.
-
-       Short integers are stored in 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.)  The
-       value -1 is represented by the two bytes 0377, 0377; other
-       negative  values  are  illegal. This value generally means
-       that the corresponding capability  is  missing  from  this
-       terminal.   Note that this format corresponds to the hard-
-       ware  of  the  VAX  and  PDP-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.
-
-       The  terminal  names  section comes next.  It contains the
-       first line of the terminfo description, listing the  vari-
-       ous  names  for the terminal, separated by the `|' charac-
-       ter.  The section is terminated with an ASCII NUL  charac-
-       ter.
-
-       The  boolean flags have one byte for each flag.  This byte
-       is either 0 or 1 as the flag is present  or  absent.   The
-       capabilities are in the same order as the file <term.h>.
-
-       Between the boolean section and the number section, a null
-       byte will be inserted, if necessary, to  ensure  that  the
-       number  section begins on an even byte (this is a relic of
-       the  PDP-11's  word-addressed   architecture,   originally
-       designed  in  to  avoid  IOT traps induced by addressing a
-       word on an odd byte boundary).   All  short  integers  are
-       aligned on a short word boundary.
-
-       The numbers section is similar to the flags section.  Each
-       capability takes up two bytes, and is stored as a  little-
-       endian short integer.  If the value represented is -1, the
-       capability is taken to be missing.
-
-       The strings section is also similar.  Each  capability  is
-       stored  as  a short integer, in the format above.  A value
-       of -1 means the capability  is  missing.   Otherwise,  the
-       value  is  taken  as  an  offset from the beginning of the
-       string table.  Special characters in ^X or \c notation are
-       stored  in their interpreted form, not the printing repre-
-       sentation.  Padding information $<nn> and parameter infor-
-       mation %x are stored intact in uninterpreted form.
-
-       The  final  section  is the string table.  It contains all
-       the values of string capabilities referenced in the string
-       section.  Each string is null terminated.
-
-   EXTENDED STORAGE FORMAT
-       The  previous  section describes the conventional terminfo
-       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.
-
-       The  ncurses  libraries  and applications support extended
-       terminfo binary format, allowing users to define capabili-
-       ties  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.  ncurses  checks  the
-       size,  and  if it exceeds that due to the predefined data,
-       continues to parse according to its own scheme.
-
-       First, it reads the extended header (5 short integers):
-
-            (1)  count of extended boolean capabilities
-
-            (2)  count of extended numeric capabilities
-
-            (3)  count of extended string capabilities
-
-            (4)  size of the extended string table in bytes.
-
-            (5)  last offset of  the  extended  string  table  in
-                 bytes.
-
-       Using  the  counts and sizes, ncurses allocates arrays and
-       reads data for the extended capabilties in the same  order
-       as the header information.
-
-       The extended string table contains values for string capa-
-       bilities.  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.
-
-
-
-

PORTABILITY

-       Note that it is possible for setupterm to expect a differ-
-       ent  set  of capabilities than are actually present in the
-       file.  Either the database may  have  been  updated  since
-       setupterm has been recompiled (resulting in extra unrecog-
-       nized entries in the file) or the program  may  have  been
-       recompiled  more  recently  than  the database was updated
-       (resulting in missing  entries).   The  routine  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.
-
-       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 XSI
-       Curses extensions.  See terminfo(5) for  detailed  discus-
-       sion of terminfo source compatibility issues.
-
-
-
-

EXAMPLE

-       As  an  example, here is a hex dump of the description for
-       the Lear-Siegler ADM-3, a  popular  though  rather  stupid
-       early terminal:
-
-       adm3a|lsi adm3a,
-               am,
-               cols#80, lines#24,
-               bel=^G, clear= 32$<1>, cr=^M, cub1=^H, cud1=^J,
-               cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K,
-               home=^^, ind=^J,
-
-       0000  1a 01 10 00 02 00 03 00  82 00 31 00 61 64 6d 33  ........ ..1.adm3
-       0010  61 7c 6c 73 69 20 61 64  6d 33 61 00 00 01 50 00  a|lsi ad m3a...P.
-       0020  ff ff 18 00 ff ff 00 00  02 00 ff ff ff ff 04 00  ........ ........
-       0030  ff ff ff ff ff ff ff ff  0a 00 25 00 27 00 ff ff  ........ ..%.'...
-       0040  29 00 ff ff ff ff 2b 00  ff ff 2d 00 ff ff ff ff  ).....+. ..-.....
-       0050  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       0060  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       0070  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       0080  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       0090  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       00a0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       00b0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       00c0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       00d0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       00e0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       00f0  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       0100  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       0110  ff ff ff ff ff ff ff ff  ff ff ff ff ff ff ff ff  ........ ........
-       0120  ff ff ff ff ff ff 2f 00  07 00 0d 00 1a 24 3c 31  ....../. .....$<1
-       0130  3e 00 1b 3d 25 70 31 25  7b 33 32 7d 25 2b 25 63  >..=%p1% {32}%+%c
-       0140  25 70 32 25 7b 33 32 7d  25 2b 25 63 00 0a 00 1e  %p2%{32} %+%c....
-       0150  00 08 00 0c 00 0b 00 0a  00                       ........ .
-
-
-
-
-

LIMITS

-       Some  limitations:  total  compiled  entries cannot exceed
-       4096 bytes.  The name field cannot exceed 128 bytes.
-
-
-
-

FILES

-       /usr/share/terminfo/*/*  compiled terminal capability data
-       base
-
-
-
-

SEE ALSO

-       curses(3x), terminfo(5).
-
-
-
-

AUTHORS

-       Thomas E. Dickey
-       extended terminfo format for ncurses 5.0
-       hashed database support for ncurses 5.6
-
-       Eric S. Raymond
-
-
-
-                                                                term(5)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/term.7.html b/deps/ncurses-5.9/doc/html/man/term.7.html deleted file mode 100644 index 4c944a1..0000000 --- a/deps/ncurses-5.9/doc/html/man/term.7.html +++ /dev/null @@ -1,251 +0,0 @@ - - - - -term 7 - - - - -

term 7

-
-
-
-term(7)                                                         term(7)
-
-
-
-
-
-

NAME

-       term - conventions for naming terminal types
-
-
-
-

DESCRIPTION

-       The  environment variable TERM should normally contain the
-       type name of the terminal, console or display-device  type
-       you  are  using.   This  information  is  critical for all
-       screen-oriented  programs,  including  your   editor   and
-       mailer.
-
-       A  default  TERM  value will be set on a per-line basis by
-       either  /etc/inittab  (e.g.,  System-V-like   UNIXes)   or
-       /etc/ttys  (BSD  UNIXes).  This will nearly always suffice
-       for workstation and microcomputer consoles.
-
-       If you use a dialup line, the type of device  attached  to
-       it  may vary.  Older UNIX systems pre-set a very dumb ter-
-       minal type like `dumb' or `dialup' on dialup lines.  Newer
-       ones may pre-set `vt100', reflecting the prevalence of DEC
-       VT100-compatible terminals  and  personal-computer  emula-
-       tors.
-
-       Modern  telnets  pass  your TERM environment variable from
-       the local side to the remote one.  There can  be  problems
-       if  the  remote terminfo or termcap entry for your type is
-       not compatible with yours, but this situation is rare  and
-       can  almost  always  be  avoided  by  explicitly exporting
-       `vt100' (assuming you are in fact using  a  VT100-superset
-       console, terminal, or terminal emulator.)
-
-       In any case, you are free to override the system TERM set-
-       ting to your taste in your  shell  profile.   The  tset(1)
-       utility  may  be  of  assistance; you can give it a set of
-       rules for deducing or requesting a terminal type based  on
-       the tty device and baud rate.
-
-       Setting your own TERM value may also be useful if you have
-       created a custom  entry  incorporating  options  (such  as
-       visual  bell  or reverse-video) which you wish to override
-       the system default type for your line.
-
-       Terminal type descriptions are stored as files of capabil-
-       ity data underneath /usr/share/terminfo.  To browse a list
-       of all terminal names recognized by the system, do
-
-            toe | more
-
-       from your shell.  These capability files are in  a  binary
-       format optimized for retrieval speed (unlike the old text-
-       based termcap format they replace); to examine  an  entry,
-       you  must  use the infocmp(1m) command.  Invoke it as fol-
-       lows:
-
-            infocmp entry_name
-
-       where entry_name is the name of the type you wish to exam-
-       ine  (and the name of its capability file the subdirectory
-       of /usr/share/terminfo named for its first letter).   This
-       command  dumps  a  capability  file  in  the  text  format
-       described by terminfo(5).
-
-       The first line of  a  terminfo(5)  description  gives  the
-       names by which terminfo knows a terminal, separated by `|'
-       (pipe-bar) characters with the last name field  terminated
-       by  a  comma.   The first name field is the type's primary
-       name, and is the one to use when setting TERM.   The  last
-       name  field  (if  distinct  from  the first) is actually a
-       description of the terminal type (it may  contain  blanks;
-       the others must be single words).  Name fields between the
-       first and last (if present) are aliases for the  terminal,
-       usually historical names retained for compatibility.
-
-       There are some conventions for how to choose terminal pri-
-       mary names that help keep  them  informative  and  unique.
-       Here is a step-by-step guide to naming terminals that also
-       explains how to parse them:
-
-       First, choose a root name.  The root  will  consist  of  a
-       lower-case  letter followed by up to seven lower-case let-
-       ters or digits.  You need to avoid using punctuation char-
-       acters  in  root  names,  because they are used and inter-
-       preted as filenames and shell meta-characters (such as  !,
-       $,  *, ?, etc.) embedded in them may cause odd and unhelp-
-       ful behavior.  The slash (/), or any other character  that
-       may  be  interpreted by anyone's file system (\, $, [, ]),
-       is especially dangerous (terminfo is platform-independent,
-       and  choosing  names with special characters could someday
-       make life difficult for users of a future port).  The  dot
-       (.)  character  is  relatively safe as long as there is at
-       most one per root name; some historical terminfo names use
-       it.
-
-       The  root  name for a terminal or workstation console type
-       should almost always begin with a vendor prefix  (such  as
-       hp  for Hewlett-Packard, wy for Wyse, or att for AT&T ter-
-       minals), or a common name of the terminal line (vt for the
-       VT  series of terminals from DEC, or sun for Sun Microsys-
-       tems workstation consoles, or regent for the  ADDS  Regent
-       series.   You  can list the terminfo tree to see what pre-
-       fixes are already in common use.   The  root  name  prefix
-       should  be  followed  when  appropriate by a model number;
-       thus vt100, hp2621, wy50.
-
-       The root name for a PC-Unix console type should be the  OS
-       name,  i.e., linux, bsdos, freebsd, netbsd.  It should not
-       be console or any other generic that might cause confusion
-       in  a  multi-platform environment!  If a model number fol-
-       lows, it should indicate either the OS  release  level  or
-       the console driver release level.
-
-       The  root  name  for a terminal emulator (assuming it does
-       not fit one of the standard ANSI or vt100 types) should be
-       the program name or a readily recognizable abbreviation of
-       it (i.e., versaterm, ctrm).
-
-       Following the root name, you may add any reasonable number
-       of hyphen-separated feature suffixes.
-
-       2p   Has two pages of memory.  Likewise 4p, 8p, etc.
-
-       mc   Magic-cookie.   Some  terminals (notably older Wyses)
-            can only support one attribute  without  magic-cookie
-            lossage.   Their  base  entry  is usually paired with
-            another that has this suffix and uses  magic  cookies
-            to support multiple attributes.
-
-       -am  Enable auto-margin (right-margin wraparound).
-
-       -m   Mono mode - suppress color support.
-
-       -na  No  arrow keys - termcap ignores arrow keys which are
-            actually there on the terminal, so the user  can  use
-            the arrow keys locally.
-
-       -nam No auto-margin - suppress am capability.
-
-       -nl  No labels - suppress soft labels.
-
-       -nsl No status line - suppress status line.
-
-       -pp  Has a printer port which is used.
-
-       -rv  Terminal in reverse video mode (black on white).
-
-       -s   Enable status line.
-
-       -vb  Use visible bell (flash) rather than beep.
-
-       -w   Wide; terminal is in 132 column mode.
-
-       Conventionally,   if  your  terminal  type  is  a  variant
-       intended to specify a line height, that suffix  should  go
-       first.  So, for a hypothetical FuBarCo model 2317 terminal
-       in 30-line mode with reverse video,  best  form  would  be
-       fubar-30-rv (rather than, say, `fubar-rv-30').
-
-       Terminal types that are written not as standalone entries,
-       but rather as components to be plugged into other  entries
-       via  use capabilities, are distinguished by using embedded
-       plus signs rather than dashes.
-
-       Commands which use a  terminal  type  to  control  display
-       often  accept  a  -T  option  that accepts a terminal name
-       argument.  Such programs should  fall  back  on  the  TERM
-       environment variable when no -T option is specified.
-
-
-
-

PORTABILITY

-       For  maximum  compatibility  with  older  System V UNIXes,
-       names and aliases should be unique  within  the  first  14
-       characters.
-
-
-
-

FILES

-       /usr/share/terminfo/?/*
-            compiled terminal capability data base
-
-       /etc/inittab
-            tty line initialization (AT&T-like UNIXes)
-
-       /etc/ttys
-            tty line initialization (BSD-like UNIXes)
-
-
-
-

SEE ALSO

-       curses(3x), terminfo(5), term(5).
-
-
-
-                                                                term(7)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/term_variables.3x.html b/deps/ncurses-5.9/doc/html/man/term_variables.3x.html deleted file mode 100644 index bc1f9ba..0000000 --- a/deps/ncurses-5.9/doc/html/man/term_variables.3x.html +++ /dev/null @@ -1,165 +0,0 @@ - - - - -term_variables 3x - - - - -

term_variables 3x

-
-
-
-term_variables(3x)                                   term_variables(3x)
-
-
-
-
-
-

NAME

-       SP, acs_map, boolcodes, boolfnames, boolnames, cur_term,
-       numcodes, numfnames, numnames, strcodes, strfnames,
-       strnames, ttytype - curses terminfo global variables
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-       #include <term.h>
-
-       chtype acs_map[];
-       NCURSES_CONST char * const * boolcodes;
-       NCURSES_CONST char * const * boolfnames;
-       NCURSES_CONST char * const * boolnames;
-       TERMINAL * cur_term;
-       NCURSES_CONST char * const * numcodes;
-       NCURSES_CONST char * const * numfnames;
-       NCURSES_CONST char * const * numnames;
-       NCURSES_CONST char * const * strcodes;
-       NCURSES_CONST char * const * strfnames;
-       NCURSES_CONST char * const * strnames;
-       char ttytype[];
-
-
-
-

DESCRIPTION

-       This  page summarizes variables provided by the curses li-
-       brary's low-level terminfo interface.  A more complete de-
-       scription is given in the curs_terminfo(3x) manual page.
-
-       Depending  on the configuration, these may be actual vari-
-       ables, or  macros  (see  curs_threads(3x))  which  provide
-       read-only  access  to curses's state.  In either case, ap-
-       plications should treat them as read-only to avoid confus-
-       ing the library.
-
-   Alternate Character Set Mapping
-       After  initializing the curses or terminfo interfaces, the
-       acs_map array holds information used  to  translate  cells
-       with  the  A_ALTCHARSET  video attribute into line-drawing
-       characters.
-
-       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>.
-
-       The comparable data for the wide-character  library  is  a
-       private variable.
-
-   Current Terminal Data
-       After  initializing the curses or terminfo interfaces, the
-       cur_term contains data describing  the  current  terminal.
-       This variable is also set as a side-effect of set_term(3x)
-       and delscreen(3x).
-
-       It is possible to save a value of cur_term for  subsequent
-       use  as  a  parameter  to  set_term, for switching between
-       screens.  Alternatively, one can  save  the  return  value
-       from newterm or setupterm to reuse in set_term.
-
-   Terminfo Names
-       The  tic(1)  and infocmp(1) programs use lookup tables for
-       the long and short names of terminfo capabilities, as well
-       as  the  corresponding  names  for  termcap  capabilities.
-       These are available  to  other  applications,  though  the
-       hash-tables are not available.
-
-       The  long  terminfo  capability  names  use a "l" (ell) in
-       their names: boolfnames numfnames strfnames
-
-       These are the short names for terminfo capabilities: bool-
-       names, numnames, and strnames.
-
-       These  are  the  corresponding  names used for termcap de-
-       scriptions: boolcodes, numcodes, and strcodes.
-
-   Terminal Type
-       On initialization of the curses  or  terminfo  interfaces,
-       setupterm copies the terminal name to the array ttytype.
-
-
-
-

NOTES

-       The  low-level terminfo interface is initialized using se-
-       tupterm(3x).  The upper-level curses  interface  uses  the
-       low-level terminfo interface, internally.
-
-
-
-

PORTABILITY

-       X/Open  Curses  does  not describe any of these except for
-       cur_term.  (The inclusion of cur_term  appears  to  be  an
-       oversight, since other comparable low-level information is
-       omitted by X/Open).
-
-       Other implementations may have comparable variables.  Some
-       implementations  provide the variables in their libraries,
-       but omit them from the header files.
-
-
-
-

SEE ALSO

-       curses(3x), curs_terminfo(3x),  curs_threads(3x),  termin-
-       fo(3x), terminfo(5).
-
-
-
-                                                     term_variables(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/terminfo.5.html b/deps/ncurses-5.9/doc/html/man/terminfo.5.html deleted file mode 100644 index 0340f50..0000000 --- a/deps/ncurses-5.9/doc/html/man/terminfo.5.html +++ /dev/null @@ -1,2375 +0,0 @@ - - - - -terminfo 5 File Formats - - - - -

terminfo 5 File Formats

-
-
-
-terminfo(5)                   File Formats                  terminfo(5)
-
-
-
-
-
-

NAME

-       terminfo - terminal capability data base
-
-
-
-

SYNOPSIS

-       /usr/share/terminfo/*/*
-
-
-
-

DESCRIPTION

-       Terminfo  is  a  data  base  describing terminals, used by
-       screen-oriented programs  such  as  nvi(1),  rogue(1)  and
-       libraries  such  as curses(3x).  Terminfo describes termi-
-       nals by giving a set of capabilities which they  have,  by
-       specifying how to perform screen operations, and by speci-
-       fying padding requirements and  initialization  sequences.
-       This describes ncurses version 5.9 (patch 20110404).
-
-       Entries in terminfo consist of a sequence of `,' separated
-       fields (embedded commas may be escaped with a backslash or
-       notated  as \054).  White space after the `,' separator is
-       ignored.  The first entry  for  each  terminal  gives  the
-       names  which  are known for the terminal, separated by `|'
-       characters.  The first  name  given  is  the  most  common
-       abbreviation  for the terminal, the last name given should
-       be a long name fully identifying  the  terminal,  and  all
-       others  are  understood as synonyms for the terminal name.
-       All names but the last should be in lower case and contain
-       no  blanks;  the last name may well contain upper case and
-       blanks for readability.
-
-       Lines beginning with a `#' in the first column are treated
-       as  comments.  While comment lines are legal at any point,
-       the output of captoinfo and infotocap  (aliases  for  tic)
-       will move comments so they occur only between entries.
-
-       Newlines  and  leading  tabs  may  be  used for formatting
-       entries for readability.  These are  removed  from  parsed
-       entries.   The  infocmp -f option relies on this to format
-       if-then-else expressions: the result can be read by tic.
-
-       Terminal names (except for the last, verbose entry) should
-       be chosen using the following conventions.  The particular
-       piece of hardware making up the  terminal  should  have  a
-       root  name, thus ``hp2621''.  This name should not contain
-       hyphens.  Modes that the hardware can be in, or user pref-
-       erences,  should  be indicated by appending a hyphen and a
-       mode suffix.  Thus, a vt100 in 132 column  mode  would  be
-       vt100-w.  The following suffixes should be used where pos-
-       sible:
-
-
-      Suffix                  Meaning                   Example
-      -nn      Number of lines on the screen            aaa-60
-      -np      Number of pages of memory                c100-4p
-      -am      With automargins (usually the default)   vt100-am
-      -m       Mono mode; suppress color                ansi-m
-      -mc      Magic cookie; spaces when highlighting   wy30-mc
-      -na      No arrow keys (leave them in local)      c100-na
-      -nam     Without automatic margins                vt100-nam
-      -nl      No status line                           att4415-nl
-      -ns      No status line                           hp2626-ns
-      -rv      Reverse video                            c100-rv
-      -s       Enable status line                       vt100-s
-
-      -vb      Use visible bell instead of beep         wy370-vb
-      -w       Wide mode (> 80 columns, usually 132)    vt100-w
-
-       For more on terminal naming conventions, see  the  term(7)
-       manual page.
-
-   Capabilities
-       The  following  is  a  complete  table of the capabilities
-       included in a terminfo description block and available  to
-       terminfo-using code.  In each line of the table,
-
-       The  variable  is the name by which the programmer (at the
-       terminfo level) accesses the capability.
-
-       The capname is the short name used  in  the  text  of  the
-       database,  and  is used by a person updating the database.
-       Whenever possible, capnames are chosen to be the  same  as
-       or similar to the ANSI X3.64-1979 standard (now superseded
-       by ECMA-48, which uses identical or very  similar  names).
-       Semantics are also intended to match those of the specifi-
-       cation.
-
-       The termcap code is the old termcap capability name  (some
-       capabilities are new, and have names which termcap did not
-       originate).
-
-       Capability names have no hard length limit, but an  infor-
-       mal  limit  of  5 characters has been adopted to keep them
-       short and to allow the tabs in the  source  file  Caps  to
-       line up nicely.
-
-       Finally,  the  description  field  attempts  to convey the
-       semantics of the capability.  You may find some  codes  in
-       the description field:
-
-       (P)    indicates that padding may be specified
-
-       #[1-9] in  the description field indicates that the string
-              is passed through tparm with parms as given (#i).
-
-       (P*)   indicates that padding may vary  in  proportion  to
-              the number of lines affected
-
-       (#i)   indicates the ith parameter.
-
-
-       These are the boolean capabilities:
-
-
-               Variable          Cap-  TCap      Description
-               Booleans          name  Code
-       auto_left_margin          bw    bw    cub1 wraps from col-
-                                             umn 0 to last column
-       auto_right_margin         am    am    terminal has auto-
-                                             matic margins
-       back_color_erase          bce   ut    screen erased with
-                                             background color
-       can_change                ccc   cc    terminal can re-
-                                             define existing col-
-                                             ors
-       ceol_standout_glitch      xhp   xs    standout not erased
-                                             by overwriting (hp)
-       col_addr_glitch           xhpa  YA    only positive motion
-                                             for hpa/mhpa caps
-
-
-       cpi_changes_res           cpix  YF    changing character
-                                             pitch changes reso-
-                                             lution
-       cr_cancels_micro_mode     crxm  YB    using cr turns off
-                                             micro mode
-       dest_tabs_magic_smso      xt    xt    tabs destructive,
-                                             magic so char
-                                             (t1061)
-       eat_newline_glitch        xenl  xn    newline ignored
-                                             after 80 cols (con-
-                                             cept)
-       erase_overstrike          eo    eo    can erase over-
-                                             strikes with a blank
-       generic_type              gn    gn    generic line type
-       hard_copy                 hc    hc    hardcopy terminal
-       hard_cursor               chts  HC    cursor is hard to
-                                             see
-       has_meta_key              km    km    Has a meta key
-                                             (i.e., sets 8th-bit)
-       has_print_wheel           daisy YC    printer needs opera-
-                                             tor to change char-
-                                             acter set
-       has_status_line           hs    hs    has extra status
-                                             line
-       hue_lightness_saturation  hls   hl    terminal uses only
-                                             HLS color notation
-                                             (Tektronix)
-       insert_null_glitch        in    in    insert mode distin-
-                                             guishes nulls
-       lpi_changes_res           lpix  YG    changing line pitch
-                                             changes resolution
-       memory_above              da    da    display may be
-                                             retained above the
-                                             screen
-       memory_below              db    db    display may be
-                                             retained below the
-                                             screen
-       move_insert_mode          mir   mi    safe to move while
-                                             in insert mode
-       move_standout_mode        msgr  ms    safe to move while
-                                             in standout mode
-       needs_xon_xoff            nxon  nx    padding will not
-                                             work, xon/xoff
-                                             required
-       no_esc_ctlc               xsb   xb    beehive (f1=escape,
-                                             f2=ctrl C)
-       no_pad_char               npc   NP    pad character does
-                                             not exist
-       non_dest_scroll_region    ndscr ND    scrolling region is
-                                             non-destructive
-       non_rev_rmcup             nrrmc NR    smcup does not
-                                             reverse rmcup
-       over_strike               os    os    terminal can over-
-                                             strike
-       prtr_silent               mc5i  5i    printer will not
-                                             echo on screen
-       row_addr_glitch           xvpa  YD    only positive motion
-                                             for vpa/mvpa caps
-       semi_auto_right_margin    sam   YE    printing in last
-                                             column causes cr
-       status_line_esc_ok        eslok es    escape can be used
-                                             on the status line
-       tilde_glitch              hz    hz    cannot print ~'s
-                                             (hazeltine)
-
-
-       transparent_underline     ul    ul    underline character
-                                             overstrikes
-       xon_xoff                  xon   xo    terminal uses
-                                             xon/xoff handshaking
-
-       These are the numeric capabilities:
-
-
-            Variable         Cap-     TCap       Description
-             Numeric         name     Code
-       columns               cols     co     number of columns in
-                                             a line
-       init_tabs             it       it     tabs initially every
-                                             # spaces
-       label_height          lh       lh     rows in each label
-       label_width           lw       lw     columns in each
-                                             label
-       lines                 lines    li     number of lines on
-                                             screen or page
-       lines_of_memory       lm       lm     lines of memory if >
-                                             line. 0 means varies
-       magic_cookie_glitch   xmc      sg     number of blank
-                                             characters left by
-                                             smso or rmso
-       max_attributes        ma       ma     maximum combined
-                                             attributes terminal
-                                             can handle
-       max_colors            colors   Co     maximum number of
-                                             colors on screen
-       max_pairs             pairs    pa     maximum number of
-                                             color-pairs on the
-                                             screen
-       maximum_windows       wnum     MW     maximum number of
-                                             defineable windows
-       no_color_video        ncv      NC     video attributes
-                                             that cannot be used
-                                             with colors
-       num_labels            nlab     Nl     number of labels on
-                                             screen
-       padding_baud_rate     pb       pb     lowest baud rate
-                                             where padding needed
-       virtual_terminal      vt       vt     virtual terminal
-                                             number (CB/unix)
-       width_status_line     wsl      ws     number of columns in
-                                             status line
-
-       The following numeric  capabilities  are  present  in  the
-       SVr4.0  term  structure, but are not yet documented in the
-       man page.  They came in with SVr4's printer support.
-
-
-             Variable         Cap-    TCap       Description
-             Numeric          name    Code
-       bit_image_entwining    bitwin  Yo     number of passes for
-                                             each bit-image row
-       bit_image_type         bitype  Yp     type of bit-image
-                                             device
-       buffer_capacity        bufsz   Ya     numbers of bytes
-                                             buffered before
-                                             printing
-       buttons                btns    BT     number of buttons on
-                                             mouse
-       dot_horz_spacing       spinh   Yc     spacing of dots hor-
-                                             izontally in dots
-                                             per inch
-
-       dot_vert_spacing       spinv   Yb     spacing of pins ver-
-                                             tically in pins per
-                                             inch
-       max_micro_address      maddr   Yd     maximum value in
-                                             micro_..._address
-       max_micro_jump         mjump   Ye     maximum value in
-                                             parm_..._micro
-       micro_col_size         mcs     Yf     character step size
-                                             when in micro mode
-       micro_line_size        mls     Yg     line step size when
-                                             in micro mode
-       number_of_pins         npins   Yh     numbers of pins in
-                                             print-head
-       output_res_char        orc     Yi     horizontal resolu-
-                                             tion in units per
-                                             line
-       output_res_horz_inch   orhi    Yk     horizontal resolu-
-                                             tion in units per
-                                             inch
-       output_res_line        orl     Yj     vertical resolution
-                                             in units per line
-       output_res_vert_inch   orvi    Yl     vertical resolution
-                                             in units per inch
-       print_rate             cps     Ym     print rate in char-
-                                             acters per second
-       wide_char_size         widcs   Yn     character step size
-                                             when in double wide
-                                             mode
-
-       These are the string capabilities:
-
-
-               Variable          Cap-   TCap     Description
-                String           name   Code
-       acs_chars                 acsc   ac   graphics charset
-                                             pairs, based on
-                                             vt100
-       back_tab                  cbt    bt   back tab (P)
-       bell                      bel    bl   audible signal
-                                             (bell) (P)
-       carriage_return           cr     cr   carriage return (P*)
-                                             (P*)
-       change_char_pitch         cpi    ZA   Change number of
-                                             characters per inch
-                                             to #1
-       change_line_pitch         lpi    ZB   Change number of
-                                             lines per inch to #1
-       change_res_horz           chr    ZC   Change horizontal
-                                             resolution to #1
-       change_res_vert           cvr    ZD   Change vertical res-
-                                             olution to #1
-       change_scroll_region      csr    cs   change region to
-                                             line #1 to line #2
-                                             (P)
-       char_padding              rmp    rP   like ip but when in
-                                             insert mode
-       clear_all_tabs            tbc    ct   clear all tab stops
-                                             (P)
-       clear_margins             mgc    MC   clear right and left
-                                             soft margins
-       clear_screen              clear  cl   clear screen and
-                                             home cursor (P*)
-       clr_bol                   el1    cb   Clear to beginning
-                                             of line
-
-
-       clr_eol                   el     ce   clear to end of line
-                                             (P)
-       clr_eos                   ed     cd   clear to end of
-                                             screen (P*)
-       column_address            hpa    ch   horizontal position
-                                             #1, absolute (P)
-       command_character         cmdch  CC   terminal settable
-                                             cmd character in
-                                             prototype !?
-       create_window             cwin   CW   define a window #1
-                                             from #2,#3 to #4,#5
-       cursor_address            cup    cm   move to row #1
-                                             columns #2
-       cursor_down               cud1   do   down one line
-       cursor_home               home   ho   home cursor (if no
-                                             cup)
-       cursor_invisible          civis  vi   make cursor invisi-
-                                             ble
-       cursor_left               cub1   le   move left one space
-       cursor_mem_address        mrcup  CM   memory relative cur-
-                                             sor addressing, move
-                                             to row #1 columns #2
-       cursor_normal             cnorm  ve   make cursor appear
-                                             normal (undo
-                                             civis/cvvis)
-       cursor_right              cuf1   nd   non-destructive
-                                             space (move right
-                                             one space)
-       cursor_to_ll              ll     ll   last line, first
-                                             column (if no cup)
-       cursor_up                 cuu1   up   up one line
-       cursor_visible            cvvis  vs   make cursor very
-                                             visible
-       define_char               defc   ZE   Define a character
-                                             #1, #2 dots wide,
-                                             descender #3
-       delete_character          dch1   dc   delete character
-                                             (P*)
-       delete_line               dl1    dl   delete line (P*)
-       dial_phone                dial   DI   dial number #1
-       dis_status_line           dsl    ds   disable status line
-       display_clock             dclk   DK   display clock
-       down_half_line            hd     hd   half a line down
-       ena_acs                   enacs  eA   enable alternate
-                                             char set
-       enter_alt_charset_mode    smacs  as   start alternate
-                                             character set (P)
-       enter_am_mode             smam   SA   turn on automatic
-                                             margins
-       enter_blink_mode          blink  mb   turn on blinking
-       enter_bold_mode           bold   md   turn on bold (extra
-                                             bright) mode
-       enter_ca_mode             smcup  ti   string to start pro-
-                                             grams using cup
-       enter_delete_mode         smdc   dm   enter delete mode
-       enter_dim_mode            dim    mh   turn on half-bright
-                                             mode
-       enter_doublewide_mode     swidm  ZF   Enter double-wide
-                                             mode
-       enter_draft_quality       sdrfq  ZG   Enter draft-quality
-                                             mode
-       enter_insert_mode         smir   im   enter insert mode
-       enter_italics_mode        sitm   ZH   Enter italic mode
-       enter_leftward_mode       slm    ZI   Start leftward car-
-                                             riage motion
-
-       enter_micro_mode          smicm  ZJ   Start micro-motion
-                                             mode
-       enter_near_letter_quality snlq   ZK   Enter NLQ mode
-       enter_normal_quality      snrmq  ZL   Enter normal-quality
-                                             mode
-       enter_protected_mode      prot   mp   turn on protected
-                                             mode
-       enter_reverse_mode        rev    mr   turn on reverse
-                                             video mode
-       enter_secure_mode         invis  mk   turn on blank mode
-                                             (characters invisi-
-                                             ble)
-       enter_shadow_mode         sshm   ZM   Enter shadow-print
-                                             mode
-       enter_standout_mode       smso   so   begin standout mode
-       enter_subscript_mode      ssubm  ZN   Enter subscript mode
-       enter_superscript_mode    ssupm  ZO   Enter superscript
-                                             mode
-       enter_underline_mode      smul   us   begin underline mode
-       enter_upward_mode         sum    ZP   Start upward car-
-                                             riage motion
-       enter_xon_mode            smxon  SX   turn on xon/xoff
-                                             handshaking
-       erase_chars               ech    ec   erase #1 characters
-                                             (P)
-       exit_alt_charset_mode     rmacs  ae   end alternate char-
-                                             acter set (P)
-       exit_am_mode              rmam   RA   turn off automatic
-                                             margins
-       exit_attribute_mode       sgr0   me   turn off all
-                                             attributes
-       exit_ca_mode              rmcup  te   strings to end pro-
-                                             grams using cup
-       exit_delete_mode          rmdc   ed   end delete mode
-       exit_doublewide_mode      rwidm  ZQ   End double-wide mode
-       exit_insert_mode          rmir   ei   exit insert mode
-       exit_italics_mode         ritm   ZR   End italic mode
-       exit_leftward_mode        rlm    ZS   End left-motion mode
-       exit_micro_mode           rmicm  ZT   End micro-motion
-                                             mode
-       exit_shadow_mode          rshm   ZU   End shadow-print
-                                             mode
-       exit_standout_mode        rmso   se   exit standout mode
-       exit_subscript_mode       rsubm  ZV   End subscript mode
-       exit_superscript_mode     rsupm  ZW   End superscript mode
-       exit_underline_mode       rmul   ue   exit underline mode
-       exit_upward_mode          rum    ZX   End reverse charac-
-                                             ter motion
-       exit_xon_mode             rmxon  RX   turn off xon/xoff
-                                             handshaking
-       fixed_pause               pause  PA   pause for 2-3 sec-
-                                             onds
-       flash_hook                hook   fh   flash switch hook
-       flash_screen              flash  vb   visible bell (may
-                                             not move cursor)
-       form_feed                 ff     ff   hardcopy terminal
-                                             page eject (P*)
-       from_status_line          fsl    fs   return from status
-                                             line
-       goto_window               wingo  WG   go to window #1
-       hangup                    hup    HU   hang-up phone
-       init_1string              is1    i1   initialization
-                                             string
-       init_2string              is2    is   initialization
-                                             string
-
-       init_3string              is3    i3   initialization
-                                             string
-       init_file                 if     if   name of initializa-
-                                             tion file
-       init_prog                 iprog  iP   path name of program
-                                             for initialization
-       initialize_color          initc  Ic   initialize color #1
-                                             to (#2,#3,#4)
-       initialize_pair           initp  Ip   Initialize color
-                                             pair #1 to
-                                             fg=(#2,#3,#4),
-                                             bg=(#5,#6,#7)
-       insert_character          ich1   ic   insert character (P)
-       insert_line               il1    al   insert line (P*)
-       insert_padding            ip     ip   insert padding after
-                                             inserted character
-       key_a1                    ka1    K1   upper left of keypad
-       key_a3                    ka3    K3   upper right of key-
-                                             pad
-       key_b2                    kb2    K2   center of keypad
-       key_backspace             kbs    kb   backspace key
-       key_beg                   kbeg   @1   begin key
-       key_btab                  kcbt   kB   back-tab key
-       key_c1                    kc1    K4   lower left of keypad
-       key_c3                    kc3    K5   lower right of key-
-                                             pad
-       key_cancel                kcan   @2   cancel key
-       key_catab                 ktbc   ka   clear-all-tabs key
-       key_clear                 kclr   kC   clear-screen or
-                                             erase key
-       key_close                 kclo   @3   close key
-       key_command               kcmd   @4   command key
-       key_copy                  kcpy   @5   copy key
-       key_create                kcrt   @6   create key
-       key_ctab                  kctab  kt   clear-tab key
-       key_dc                    kdch1  kD   delete-character key
-       key_dl                    kdl1   kL   delete-line key
-       key_down                  kcud1  kd   down-arrow key
-       key_eic                   krmir  kM   sent by rmir or smir
-                                             in insert mode
-       key_end                   kend   @7   end key
-       key_enter                 kent   @8   enter/send key
-       key_eol                   kel    kE   clear-to-end-of-line
-                                             key
-       key_eos                   ked    kS   clear-to-end-of-
-                                             screen key
-       key_exit                  kext   @9   exit key
-       key_f0                    kf0    k0   F0 function key
-       key_f1                    kf1    k1   F1 function key
-       key_f10                   kf10   k;   F10 function key
-       key_f11                   kf11   F1   F11 function key
-       key_f12                   kf12   F2   F12 function key
-       key_f13                   kf13   F3   F13 function key
-       key_f14                   kf14   F4   F14 function key
-       key_f15                   kf15   F5   F15 function key
-       key_f16                   kf16   F6   F16 function key
-       key_f17                   kf17   F7   F17 function key
-       key_f18                   kf18   F8   F18 function key
-       key_f19                   kf19   F9   F19 function key
-       key_f2                    kf2    k2   F2 function key
-       key_f20                   kf20   FA   F20 function key
-       key_f21                   kf21   FB   F21 function key
-       key_f22                   kf22   FC   F22 function key
-       key_f23                   kf23   FD   F23 function key
-       key_f24                   kf24   FE   F24 function key
-
-       key_f25                   kf25   FF   F25 function key
-       key_f26                   kf26   FG   F26 function key
-       key_f27                   kf27   FH   F27 function key
-       key_f28                   kf28   FI   F28 function key
-       key_f29                   kf29   FJ   F29 function key
-       key_f3                    kf3    k3   F3 function key
-       key_f30                   kf30   FK   F30 function key
-       key_f31                   kf31   FL   F31 function key
-       key_f32                   kf32   FM   F32 function key
-       key_f33                   kf33   FN   F33 function key
-       key_f34                   kf34   FO   F34 function key
-       key_f35                   kf35   FP   F35 function key
-       key_f36                   kf36   FQ   F36 function key
-       key_f37                   kf37   FR   F37 function key
-       key_f38                   kf38   FS   F38 function key
-       key_f39                   kf39   FT   F39 function key
-       key_f4                    kf4    k4   F4 function key
-       key_f40                   kf40   FU   F40 function key
-       key_f41                   kf41   FV   F41 function key
-       key_f42                   kf42   FW   F42 function key
-       key_f43                   kf43   FX   F43 function key
-       key_f44                   kf44   FY   F44 function key
-       key_f45                   kf45   FZ   F45 function key
-       key_f46                   kf46   Fa   F46 function key
-       key_f47                   kf47   Fb   F47 function key
-       key_f48                   kf48   Fc   F48 function key
-       key_f49                   kf49   Fd   F49 function key
-       key_f5                    kf5    k5   F5 function key
-       key_f50                   kf50   Fe   F50 function key
-       key_f51                   kf51   Ff   F51 function key
-       key_f52                   kf52   Fg   F52 function key
-       key_f53                   kf53   Fh   F53 function key
-       key_f54                   kf54   Fi   F54 function key
-       key_f55                   kf55   Fj   F55 function key
-       key_f56                   kf56   Fk   F56 function key
-       key_f57                   kf57   Fl   F57 function key
-       key_f58                   kf58   Fm   F58 function key
-       key_f59                   kf59   Fn   F59 function key
-       key_f6                    kf6    k6   F6 function key
-       key_f60                   kf60   Fo   F60 function key
-       key_f61                   kf61   Fp   F61 function key
-       key_f62                   kf62   Fq   F62 function key
-       key_f63                   kf63   Fr   F63 function key
-       key_f7                    kf7    k7   F7 function key
-       key_f8                    kf8    k8   F8 function key
-       key_f9                    kf9    k9   F9 function key
-       key_find                  kfnd   @0   find key
-       key_help                  khlp   %1   help key
-       key_home                  khome  kh   home key
-       key_ic                    kich1  kI   insert-character key
-       key_il                    kil1   kA   insert-line key
-       key_left                  kcub1  kl   left-arrow key
-       key_ll                    kll    kH   lower-left key (home
-                                             down)
-       key_mark                  kmrk   %2   mark key
-       key_message               kmsg   %3   message key
-       key_move                  kmov   %4   move key
-       key_next                  knxt   %5   next key
-       key_npage                 knp    kN   next-page key
-       key_open                  kopn   %6   open key
-       key_options               kopt   %7   options key
-       key_ppage                 kpp    kP   previous-page key
-       key_previous              kprv   %8   previous key
-       key_print                 kprt   %9   print key
-       key_redo                  krdo   %0   redo key
-
-       key_reference             kref   &1   reference key
-       key_refresh               krfr   &2   refresh key
-       key_replace               krpl   &3   replace key
-       key_restart               krst   &4   restart key
-       key_resume                kres   &5   resume key
-       key_right                 kcuf1  kr   right-arrow key
-       key_save                  ksav   &6   save key
-       key_sbeg                  kBEG   &9   shifted begin key
-       key_scancel               kCAN   &0   shifted cancel key
-       key_scommand              kCMD   *1   shifted command key
-       key_scopy                 kCPY   *2   shifted copy key
-       key_screate               kCRT   *3   shifted create key
-       key_sdc                   kDC    *4   shifted delete-char-
-                                             acter key
-       key_sdl                   kDL    *5   shifted delete-line
-                                             key
-       key_select                kslt   *6   select key
-       key_send                  kEND   *7   shifted end key
-       key_seol                  kEOL   *8   shifted clear-to-
-                                             end-of-line key
-       key_sexit                 kEXT   *9   shifted exit key
-       key_sf                    kind   kF   scroll-forward key
-       key_sfind                 kFND   *0   shifted find key
-       key_shelp                 kHLP   #1   shifted help key
-       key_shome                 kHOM   #2   shifted home key
-       key_sic                   kIC    #3   shifted insert-char-
-                                             acter key
-       key_sleft                 kLFT   #4   shifted left-arrow
-                                             key
-       key_smessage              kMSG   %a   shifted message key
-       key_smove                 kMOV   %b   shifted move key
-       key_snext                 kNXT   %c   shifted next key
-       key_soptions              kOPT   %d   shifted options key
-       key_sprevious             kPRV   %e   shifted previous key
-       key_sprint                kPRT   %f   shifted print key
-       key_sr                    kri    kR   scroll-backward key
-       key_sredo                 kRDO   %g   shifted redo key
-       key_sreplace              kRPL   %h   shifted replace key
-       key_sright                kRIT   %i   shifted right-arrow
-                                             key
-       key_srsume                kRES   %j   shifted resume key
-       key_ssave                 kSAV   !1   shifted save key
-       key_ssuspend              kSPD   !2   shifted suspend key
-       key_stab                  khts   kT   set-tab key
-       key_sundo                 kUND   !3   shifted undo key
-       key_suspend               kspd   &7   suspend key
-       key_undo                  kund   &8   undo key
-       key_up                    kcuu1  ku   up-arrow key
-       keypad_local              rmkx   ke   leave 'key-
-                                             board_transmit' mode
-       keypad_xmit               smkx   ks   enter 'key-
-                                             board_transmit' mode
-       lab_f0                    lf0    l0   label on function
-                                             key f0 if not f0
-       lab_f1                    lf1    l1   label on function
-                                             key f1 if not f1
-       lab_f10                   lf10   la   label on function
-                                             key f10 if not f10
-       lab_f2                    lf2    l2   label on function
-                                             key f2 if not f2
-       lab_f3                    lf3    l3   label on function
-                                             key f3 if not f3
-       lab_f4                    lf4    l4   label on function
-                                             key f4 if not f4
-
-
-       lab_f5                    lf5    l5   label on function
-                                             key f5 if not f5
-       lab_f6                    lf6    l6   label on function
-                                             key f6 if not f6
-       lab_f7                    lf7    l7   label on function
-                                             key f7 if not f7
-       lab_f8                    lf8    l8   label on function
-                                             key f8 if not f8
-       lab_f9                    lf9    l9   label on function
-                                             key f9 if not f9
-       label_format              fln    Lf   label format
-       label_off                 rmln   LF   turn off soft labels
-       label_on                  smln   LO   turn on soft labels
-       meta_off                  rmm    mo   turn off meta mode
-       meta_on                   smm    mm   turn on meta mode
-                                             (8th-bit on)
-       micro_column_address      mhpa   ZY   Like column_address
-                                             in micro mode
-       micro_down                mcud1  ZZ   Like cursor_down in
-                                             micro mode
-       micro_left                mcub1  Za   Like cursor_left in
-                                             micro mode
-       micro_right               mcuf1  Zb   Like cursor_right in
-                                             micro mode
-       micro_row_address         mvpa   Zc   Like row_address #1
-                                             in micro mode
-       micro_up                  mcuu1  Zd   Like cursor_up in
-                                             micro mode
-       newline                   nel    nw   newline (behave like
-                                             cr followed by lf)
-       order_of_pins             porder Ze   Match software bits
-                                             to print-head pins
-       orig_colors               oc     oc   Set all color pairs
-                                             to the original ones
-       orig_pair                 op     op   Set default pair to
-                                             its original value
-       pad_char                  pad    pc   padding char
-                                             (instead of null)
-       parm_dch                  dch    DC   delete #1 characters
-                                             (P*)
-       parm_delete_line          dl     DL   delete #1 lines (P*)
-       parm_down_cursor          cud    DO   down #1 lines (P*)
-       parm_down_micro           mcud   Zf   Like parm_down_cur-
-                                             sor in micro mode
-       parm_ich                  ich    IC   insert #1 characters
-                                             (P*)
-       parm_index                indn   SF   scroll forward #1
-                                             lines (P)
-       parm_insert_line          il     AL   insert #1 lines (P*)
-       parm_left_cursor          cub    LE   move #1 characters
-                                             to the left (P)
-       parm_left_micro           mcub   Zg   Like parm_left_cur-
-                                             sor in micro mode
-       parm_right_cursor         cuf    RI   move #1 characters
-                                             to the right (P*)
-       parm_right_micro          mcuf   Zh   Like parm_right_cur-
-                                             sor in micro mode
-       parm_rindex               rin    SR   scroll back #1 lines
-                                             (P)
-       parm_up_cursor            cuu    UP   up #1 lines (P*)
-       parm_up_micro             mcuu   Zi   Like parm_up_cursor
-                                             in micro mode
-       pkey_key                  pfkey  pk   program function key
-                                             #1 to type string #2
-
-
-       pkey_local                pfloc  pl   program function key
-                                             #1 to execute string
-                                             #2
-       pkey_xmit                 pfx    px   program function key
-                                             #1 to transmit
-                                             string #2
-       plab_norm                 pln    pn   program label #1 to
-                                             show string #2
-       print_screen              mc0    ps   print contents of
-                                             screen
-       prtr_non                  mc5p   pO   turn on printer for
-                                             #1 bytes
-       prtr_off                  mc4    pf   turn off printer
-       prtr_on                   mc5    po   turn on printer
-       pulse                     pulse  PU   select pulse dialing
-       quick_dial                qdial  QD   dial number #1 with-
-                                             out checking
-       remove_clock              rmclk  RC   remove clock
-       repeat_char               rep    rp   repeat char #1 #2
-                                             times (P*)
-       req_for_input             rfi    RF   send next input char
-                                             (for ptys)
-       reset_1string             rs1    r1   reset string
-       reset_2string             rs2    r2   reset string
-       reset_3string             rs3    r3   reset string
-       reset_file                rf     rf   name of reset file
-       restore_cursor            rc     rc   restore cursor to
-                                             position of last
-                                             save_cursor
-       row_address               vpa    cv   vertical position #1
-                                             absolute (P)
-       save_cursor               sc     sc   save current cursor
-                                             position (P)
-       scroll_forward            ind    sf   scroll text up (P)
-       scroll_reverse            ri     sr   scroll text down (P)
-       select_char_set           scs    Zj   Select character
-                                             set, #1
-       set_attributes            sgr    sa   define video
-                                             attributes #1-#9
-                                             (PG9)
-       set_background            setb   Sb   Set background color
-                                             #1
-       set_bottom_margin         smgb   Zk   Set bottom margin at
-                                             current line
-       set_bottom_margin_parm    smgbp  Zl   Set bottom margin at
-                                             line #1 or (if smgtp
-                                             is not given) #2
-                                             lines from bottom
-       set_clock                 sclk   SC   set clock, #1 hrs #2
-                                             mins #3 secs
-       set_color_pair            scp    sp   Set current color
-                                             pair to #1
-       set_foreground            setf   Sf   Set foreground color
-                                             #1
-       set_left_margin           smgl   ML   set left soft margin
-                                             at current column.
-                                             See smgl. (ML is not
-                                             in BSD termcap).
-       set_left_margin_parm      smglp  Zm   Set left (right)
-                                             margin at column #1
-       set_right_margin          smgr   MR   set right soft mar-
-                                             gin at current col-
-                                             umn
-       set_right_margin_parm     smgrp  Zn   Set right margin at
-                                             column #1
-
-       set_tab                   hts    st   set a tab in every
-                                             row, current columns
-       set_top_margin            smgt   Zo   Set top margin at
-                                             current line
-       set_top_margin_parm       smgtp  Zp   Set top (bottom)
-                                             margin at row #1
-       set_window                wind   wi   current window is
-                                             lines #1-#2 cols
-                                             #3-#4
-       start_bit_image           sbim   Zq   Start printing bit
-                                             image graphics
-       start_char_set_def        scsd   Zr   Start character set
-                                             definition #1, with
-                                             #2 characters in the
-                                             set
-       stop_bit_image            rbim   Zs   Stop printing bit
-                                             image graphics
-       stop_char_set_def         rcsd   Zt   End definition of
-                                             character set #1
-       subscript_characters      subcs  Zu   List of subscript-
-                                             able characters
-       superscript_characters    supcs  Zv   List of superscript-
-                                             able characters
-       tab                       ht     ta   tab to next 8-space
-                                             hardware tab stop
-       these_cause_cr            docr   Zw   Printing any of
-                                             these characters
-                                             causes CR
-       to_status_line            tsl    ts   move to status line,
-                                             column #1
-       tone                      tone   TO   select touch tone
-                                             dialing
-       underline_char            uc     uc   underline char and
-                                             move past it
-       up_half_line              hu     hu   half a line up
-       user0                     u0     u0   User string #0
-       user1                     u1     u1   User string #1
-       user2                     u2     u2   User string #2
-       user3                     u3     u3   User string #3
-       user4                     u4     u4   User string #4
-       user5                     u5     u5   User string #5
-       user6                     u6     u6   User string #6
-       user7                     u7     u7   User string #7
-       user8                     u8     u8   User string #8
-       user9                     u9     u9   User string #9
-       wait_tone                 wait   WA   wait for dial-tone
-       xoff_character            xoffc  XF   XOFF character
-       xon_character             xonc   XN   XON character
-       zero_motion               zerom  Zx   No motion for subse-
-                                             quent character
-
-       The  following  string  capabilities  are  present  in the
-       SVr4.0 term structure, but were originally not  documented
-       in the man page.
-
-
-               Variable          Cap-     TCap    Description
-                String           name     Code
-       alt_scancode_esc          scesa    S8   Alternate escape
-                                               for scancode emu-
-                                               lation
-       bit_image_carriage_return bicr     Yv   Move to beginning
-                                               of same row
-       bit_image_newline         binel    Zz   Move to next row
-                                               of the bit image
-
-       bit_image_repeat          birep    Xy   Repeat bit image
-                                               cell #1 #2 times
-       char_set_names            csnm     Zy   Produce #1'th item
-                                               from list of char-
-                                               acter set names
-       code_set_init             csin     ci   Init sequence for
-                                               multiple codesets
-       color_names               colornm  Yw   Give name for
-                                               color #1
-       define_bit_image_region   defbi    Yx   Define rectan-
-                                               gualar bit image
-                                               region
-       device_type               devt     dv   Indicate lan-
-                                               guage/codeset sup-
-                                               port
-       display_pc_char           dispc    S1   Display PC charac-
-                                               ter #1
-       end_bit_image_region      endbi    Yy   End a bit-image
-                                               region
-       enter_pc_charset_mode     smpch    S2   Enter PC character
-                                               display mode
-       enter_scancode_mode       smsc     S4   Enter PC scancode
-                                               mode
-       exit_pc_charset_mode      rmpch    S3   Exit PC character
-                                               display mode
-       exit_scancode_mode        rmsc     S5   Exit PC scancode
-                                               mode
-       get_mouse                 getm     Gm   Curses should get
-                                               button events,
-                                               parameter #1 not
-                                               documented.
-       key_mouse                 kmous    Km   Mouse event has
-                                               occurred
-       mouse_info                minfo    Mi   Mouse status
-                                               information
-       pc_term_options           pctrm    S6   PC terminal
-                                               options
-       pkey_plab                 pfxl     xl   Program function
-                                               key #1 to type
-                                               string #2 and show
-                                               string #3
-       req_mouse_pos             reqmp    RQ   Request mouse
-                                               position
-       scancode_escape           scesc    S7   Escape for scan-
-                                               code emulation
-       set0_des_seq              s0ds     s0   Shift to codeset 0
-                                               (EUC set 0, ASCII)
-       set1_des_seq              s1ds     s1   Shift to codeset 1
-       set2_des_seq              s2ds     s2   Shift to codeset 2
-       set3_des_seq              s3ds     s3   Shift to codeset 3
-       set_a_background          setab    AB   Set background
-                                               color to #1, using
-                                               ANSI escape
-       set_a_foreground          setaf    AF   Set foreground
-                                               color to #1, using
-                                               ANSI escape
-       set_color_band            setcolor Yz   Change to ribbon
-                                               color #1
-       set_lr_margin             smglr    ML   Set both left and
-                                               right margins to
-                                               #1, #2.  (ML is
-                                               not in BSD term-
-                                               cap).
-       set_page_length           slines   YZ   Set page length to
-                                               #1 lines
-
-       set_tb_margin             smgtb    MT   Sets both top and
-                                               bottom margins to
-                                               #1, #2
-
-        The XSI Curses  standard  added  these.   They  are  some
-        post-4.1  versions  of System V curses, e.g., Solaris 2.5
-        and IRIX 6.x.  The ncurses termcap  names  for  them  are
-        invented; according to the XSI Curses standard, they have
-        no termcap names.  If your compiled terminfo entries  use
-        these,  they  may  not be binary-compatible with System V
-        terminfo entries after SVr4.1; beware!
-
-
-                Variable         Cap-   TCap     Description
-                 String          name   Code
-        enter_horizontal_hl_mode ehhlm  Xh   Enter horizontal
-                                             highlight mode
-        enter_left_hl_mode       elhlm  Xl   Enter left highlight
-                                             mode
-        enter_low_hl_mode        elohlm Xo   Enter low highlight
-                                             mode
-        enter_right_hl_mode      erhlm  Xr   Enter right high-
-                                             light mode
-        enter_top_hl_mode        ethlm  Xt   Enter top highlight
-                                             mode
-        enter_vertical_hl_mode   evhlm  Xv   Enter vertical high-
-                                             light mode
-        set_a_attributes         sgr1   sA   Define second set of
-                                             video attributes
-                                             #1-#6
-        set_pglen_inch           slengthsL   YI Set page length
-                                             to #1 hundredth of
-                                             an inch
-
-   A Sample Entry
-       The following entry, describing an ANSI-standard terminal,
-       is  representative  of  what a terminfo entry for a modern
-       terminal typically looks like.
-
-     ansi|ansi/pc-term compatible with color,
-             mc5i,
-             colors#8, ncv#3, pairs#64,
-             cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC,
-             cuu=\E[%p1%dA, dch=\E[%p1%dP, dl=\E[%p1%dM,
-             ech=\E[%p1%dX, el1=\E[1K, hpa=\E[%p1%dG, ht=\E[I,
-             ich=\E[%p1%d@, il=\E[%p1%dL, indn=\E[%p1%dS, .indn=\E[%p1%dT,
-             kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B,
-             kcuf1=\E[C, kcuu1=\E[A, 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, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S,
-             op=\E[37;40m, rep=%p1%c\E[%p2%{1}%-%db,
-             rin=\E[%p1%dT, s0ds=\E(B, s1ds=\E)B, s2ds=\E*B,
-             s3ds=\E+B, 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}%=%t3%e%p1%d%;m,
-             sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m,
-             sgr0=\E[0;10m, tbc=\E[2g, u6=\E[%d;%dR, u7=\E[6n,
-             u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%p1%dd,
-
-       Entries may continue onto multiple lines by placing  white
-       space  at  the  beginning  of  each line except the first.
-       Comments may be included on lines  beginning  with  ``#''.
-       Capabilities in terminfo are of three types: Boolean capa-
-       bilities which indicate that the terminal has some partic-
-       ular  feature, numeric capabilities giving the size of the
-       terminal or the size  of  particular  delays,  and  string
-       capabilities,  which  give a sequence which can be used to
-       perform particular terminal operations.
-
-
-   Types of Capabilities
-       All capabilities have names.  For instance, the fact  that
-       ANSI-standard  terminals  have automatic margins (i.e., an
-       automatic return and line-feed when the end of a  line  is
-       reached)  is  indicated  by  the capability am.  Hence the
-       description of ansi includes am.  Numeric capabilities are
-       followed  by  the character `#' and then a positive value.
-       Thus cols, which indicates the number of columns the  ter-
-       minal  has,  gives  the  value  `80' for ansi.  Values for
-       numeric capabilities may be specified in decimal, octal or
-       hexadecimal,  using the C programming language conventions
-       (e.g., 255, 0377 and 0xff or 0xFF).
-
-       Finally, string valued capabilities, such as el (clear  to
-       end of line sequence) are given by the two-character code,
-       an `=', and then a string ending  at  the  next  following
-       `,'.
-
-       A  number  of  escape sequences are provided in the string
-       valued capabilities for easy encoding of characters there.
-       Both  \E  and  \e map to an ESCAPE character, ^x maps to a
-       control-x for any appropriate x, and the sequences  \n  \l
-       \r  \t  \b  \f  \s give a newline, line-feed, return, tab,
-       backspace, form-feed, and space.  Other escapes include \^
-       for  ^, \\ for \, \, for comma, \: for :, and \0 for null.
-       (\0 will produce \200, which does not terminate  a  string
-       but behaves as a null character on most terminals, provid-
-       ing CS7 is specified.  See stty(1).)  Finally,  characters
-       may be given as three octal digits after a \.
-
-       A  delay  in  milliseconds may appear anywhere in a string
-       capability, enclosed in $<..> brackets, as in  el=\EK$<5>,
-       and  padding  characters  are supplied by tputs to provide
-       this delay.  The delay must be a number with at  most  one
-       decimal place of precision; it may be followed by suffixes
-       `*' or '/' or both.  A  `*'  indicates  that  the  padding
-       required  is  proportional to the number of lines affected
-       by the  operation,  and  the  amount  given  is  the  per-
-       affected-unit  padding  required.   (In the case of insert
-       character,  the  factor  is  still  the  number  of  lines
-       affected.)   Normally,  padding  is advisory if the device
-       has the xon capability; it is used  for  cost  computation
-       but  does not trigger delays.  A `/' suffix indicates that
-       the padding is mandatory and forces a delay of  the  given
-       number  of  milliseconds  even on devices for which xon is
-       present to indicate flow control.
-
-       Sometimes individual capabilities must be  commented  out.
-       To  do this, put a period before the capability name.  For
-       example, see the second ind in the example above.
-
-
-   Fetching Compiled Descriptions
-       If the environment variable TERMINFO is set, it is  inter-
-       preted  as the pathname of a directory containing the com-
-       piled description you are working on.  Only that directory
-       is searched.
-
-       If  TERMINFO  is  not set, the ncurses version of the ter-
-       minfo reader code  will  instead  look  in  the  directory
-       $HOME/.terminfo  for  a compiled description.  If it fails
-       to find one  there,  and  the  environment  variable  TER-
-       MINFO_DIRS  is set, it will interpret the contents of that
-       variable as a list of colon- separated directories  to  be
-       searched  (an  empty  entry is interpreted as a command to
-       search /usr/share/terminfo).  If no description  is  found
-       in  any of the TERMINFO_DIRS directories, the fetch fails.
-
-       If neither TERMINFO nor TERMINFO_DIRS  is  set,  the  last
-       place   tried  will  be  the  system  terminfo  directory,
-       /usr/share/terminfo.
-
-       (Neither the  $HOME/.terminfo  lookups  nor  TERMINFO_DIRS
-       extensions   are  supported  under  stock  System  V  ter-
-       minfo/curses.)
-
-
-   Preparing Descriptions
-       We now outline how to prepare descriptions  of  terminals.
-       The  most  effective way to prepare a terminal description
-       is by imitating the description of a similar  terminal  in
-       terminfo  and  to  build up a description gradually, using
-       partial descriptions with vi or some other screen-oriented
-       program  to  check that they are correct.  Be aware that a
-       very unusual terminal may expose deficiencies in the abil-
-       ity  of  the  terminfo  file to describe it or bugs in the
-       screen-handling code of the test program.
-
-       To get the padding for insert line right (if the  terminal
-       manufacturer did not document it) a severe test is to edit
-       a large file at 9600 baud, delete 16 or so lines from  the
-       middle  of  the screen, then hit the `u' key several times
-       quickly.  If the terminal messes up, more padding is  usu-
-       ally  needed.  A similar test can be used for insert char-
-       acter.
-
-
-   Basic Capabilities
-       The number of columns on each line  for  the  terminal  is
-       given  by the cols numeric capability.  If the terminal is
-       a CRT, then the number of lines on the screen is given  by
-       the lines capability.  If the terminal wraps around to the
-       beginning of the next line when it reaches the right  mar-
-       gin, then it should have the am capability.  If the termi-
-       nal can clear its screen, leaving the cursor in  the  home
-       position,  then this is given by the clear string capabil-
-       ity.  If the terminal overstrikes (rather than clearing  a
-       position  when  a character is struck over) then it should
-       have the os capability.  If the  terminal  is  a  printing
-       terminal,  with no soft copy unit, give it both hc and os.
-       (os applies to storage scope terminals, such as  TEKTRONIX
-       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 cr.  (Normally this will be car-
-       riage return, control M.)  If there is a code  to  produce
-       an audible signal (bell, beep, etc) give this as bel.
-
-       If  there is a code to move the cursor one position to the
-       left (such as backspace) that capability should  be  given
-       as  cub1.   Similarly, codes to move to the right, up, and
-       down should be given as cuf1, cuu1, and cud1.  These local
-       cursor  motions  should not alter the text they pass over,
-       for example, you would not normally use  `cuf1= '  because
-       the space would erase the character moved over.
-
-       A  very  important  point  here  is  that the local cursor
-       motions encoded in terminfo are undefined at the left  and
-       top  edges  of  a  CRT  terminal.   Programs  should never
-       attempt to backspace around the left edge,  unless  bw  is
-       given, and never attempt to go up locally off the top.  In
-       order to scroll text up, a program will go to  the  bottom
-       left corner of the screen and send the ind (index) string.
-
-       To scroll text down, a program goes to the top left corner
-       of  the  screen  and  sends the ri (reverse index) string.
-       The strings ind and ri are undefined  when  not  on  their
-       respective corners of the screen.
-
-       Parameterized versions of the scrolling sequences are indn
-       and rin which have the same semantics as ind and ri except
-       that  they take one parameter, and scroll that many lines.
-       They are also undefined except at the appropriate edge  of
-       the screen.
-
-       The  am  capability tells whether the cursor sticks at the
-       right edge of the screen when text  is  output,  but  this
-       does not necessarily apply to a cuf1 from the last column.
-       The only local motion which is defined from the left  edge
-       is  if  bw  is  given, then a cub1 from the left edge will
-       move to the right edge of the previous row.  If bw is  not
-       given,  the effect is undefined.  This is useful for draw-
-       ing a box around the edge of the screen, for example.   If
-       the  terminal has switch selectable automatic margins, the
-       terminfo file usually assumes that this is on;  i.e.,  am.
-       If  the  terminal  has  a command which moves to the first
-       column of the next line, that command can be given as  nel
-       (newline).   It  does not matter if the command clears the
-       remainder of the current line, so if the terminal  has  no
-       cr  and lf it may still be possible to craft a working nel
-       out of one or both of them.
-
-       These  capabilities  suffice  to  describe  hard-copy  and
-       "glass-tty"  terminals.   Thus  the  model  33 teletype is
-       described as
-
-       33|tty33|tty|model 33 teletype,
-            bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,
-
-       while the Lear Siegler ADM-3 is described as
-
-       adm3|3|lsi adm3,
-            am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J,
-            ind=^J, lines#24,
-
-
-   Parameterized Strings
-       Cursor addressing and other strings  requiring  parameters
-       in  the  terminal  are described by a parameterized string
-       capability, with printf(3) like escapes  %x  in  it.   For
-       example,  to  address  the  cursor,  the 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 physical screen visible to the user, not to any unseen
-       memory.)   If  the  terminal  has  memory  relative cursor
-       addressing, that can be indicated by mrcup.
-
-       The parameter mechanism uses a stack and special  %  codes
-       to  manipulate  it.  Typically a sequence will push one of
-       the parameters onto the stack and then print  it  in  some
-       format.   Print  (e.g.,  "%d")  is  a special case.  Other
-       operations, including "%t"  pop  their  operand  from  the
-       stack.  It is noted that more complex operations are often
-       necessary, e.g., in the sgr string.
-
-       The % encodings have the following meanings:
-
-
-       %%   outputs `%'
-
-       %[[:]flags][width[.precision]][doxXs]
-            as in printf, flags are [-+#] and space.  Use  a  `:'
-            to  allow the next character to be a `-' flag, avoid-
-            ing interpreting "%-" as an operator.
-
-       %c   print pop() like %c in printf
-
-       %s   print pop() like %s in printf
-
-       %p[1-9]
-            push i'th parameter
-
-       %P[a-z]
-            set dynamic variable [a-z] to pop()
-
-       %g[a-z]
-            get dynamic variable [a-z] and push it
-
-       %P[A-Z]
-            set static variable [a-z] to pop()
-
-       %g[A-Z]
-            get static variable [a-z] and push it
-
-            The terms  "static"  and  "dynamic"  are  misleading.
-            Historically,  these are simply two different sets of
-            variables, whose values are not reset  between  calls
-            to  tparm.   However,  that fact is not documented in
-            other implementations.  Relying on it will  adversely
-            impact portability to other implementations.
-
-       %'c' char constant c
-
-       %{nn}
-            integer constant nn
-
-       %l   push strlen(pop)
-
-       %+ %- %* %/ %m
-            arithmetic (%m is mod): push(pop() op pop())
-
-       %& %| %^
-            bit operations (AND, OR and exclusive-OR): push(pop()
-            op pop())
-
-       %= %> %<
-            logical operations: push(pop() op pop())
-
-       %A, %O
-            logical AND and OR operations (for conditionals)
-
-       %! %~
-            unary  operations  (logical  and   bit   complement):
-            push(op pop())
-
-       %i   add 1 to first two parameters (for ANSI terminals)
-
-       %? expr %t thenpart %e elsepart %;
-            This  forms  an  if-then-else.   The  %e  elsepart is
-            optional.  Usually the %? expr part  pushes  a  value
-            onto  the stack, and %t pops it from the stack, test-
-            ing if it is nonzero (true).  If it is zero  (false),
-            control passes to the %e (else) part.
-
-            It is possible to form else-if's a la Algol 68:
-            %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e %;
-
-            where ci are conditions, bi are bodies.
-
-            Use the -f option of tic or infocmp to see the struc-
-            ture  of if-then-else's.  Some strings, e.g., sgr can
-            be very complicated when written on one line.  The -f
-            option  splits  the  string into lines with the parts
-            indented.
-
-       Binary operations are in postfix form with the operands in
-       the  usual  order.   That  is,  to  get  x-5 one would use
-       "%gx%{5}%-".  %P and %g variables  are  persistent  across
-       escape-string evaluations.
-
-       Consider the HP2645, which, to get to row 3 and column 12,
-       needs to be sent \E&a12c03Y  padded  for  6  milliseconds.
-       Note  that  the  order of the rows and columns is inverted
-       here, and that the row and column are printed as two  dig-
-       its.  Thus its cup capability is "cup=6\E&%p2%2dc%p1%2dY".
-
-       The Microterm ACT-IV needs the current row and column sent
-       preceded  by  a ^T, with the row and column simply encoded
-       in binary, "cup=^T%p1%c%p2%c".  Terminals which  use  "%c"
-       need  to  be  able  to backspace the cursor (cub1), and to
-       move the cursor up one line on the screen (cuu1).  This is
-       necessary  because it is not always safe to transmit \n ^D
-       and \r, as the system may change or  discard  them.   (The
-       library  routines  dealing  with terminfo set tty modes so
-       that tabs are never expanded, so \t is safe to send.  This
-       turns out to be essential for the Ann Arbor 4080.)
-
-       A final example is the LSI ADM-3a, which uses row and col-
-       umn  offset  by  a  blank  character,  thus  "cup=\E=%p1%'
-       '%+%c%p2%'  '%+%c".   After sending `\E=', this pushes the
-       first parameter, pushes the ASCII value for a space  (32),
-       adds  them  (pushing  the sum on the stack in place of the
-       two previous values) and outputs that value as  a  charac-
-       ter.   Then  the  same  is  done for the second parameter.
-       More complex arithmetic is possible using the stack.
-
-
-   Cursor Motions
-       If the terminal has a fast way to home the cursor (to very
-       upper  left  corner  of  screen) then this can be given as
-       home; similarly a fast way of getting to the  lower  left-
-       hand  corner can be given as ll; this may involve going up
-       with cuu1 from the home position,  but  a  program  should
-       never  do this itself (unless ll does) because it can make
-       no assumption about the effect of moving up from the  home
-       position.   Note  that  the  home  position is the same as
-       addressing to (0,0): to the top left corner of the screen,
-       not  of  memory.   (Thus, the \EH sequence on HP terminals
-       cannot be used for home.)
-
-       If the terminal has row or column absolute cursor address-
-       ing,  these  can be given as single parameter capabilities
-       hpa (horizontal position absolute) and vpa (vertical posi-
-       tion absolute).  Sometimes these are shorter than the more
-       general two parameter sequence (as with  the  hp2645)  and
-       can   be   used  in  preference  to  cup.   If  there  are
-       parameterized local motions (e.g., move n  spaces  to  the
-       right) these can be given as cud, cub, cuf, and cuu with a
-       single parameter  indicating  how  many  spaces  to  move.
-       These  are  primarily useful if the terminal does not have
-       cup, such as the TEKTRONIX 4025.
-
-       If the terminal needs to be in a special mode when running
-       a program that uses these capabilities, the codes to enter
-       and exit this mode can be given as smcup and rmcup.   This
-       arises,  for example, from terminals like the Concept with
-       more than one page of memory.  If the  terminal  has  only
-       memory  relative cursor addressing and not screen relative
-       cursor addressing, a one screen-sized window must be fixed
-       into  the terminal for cursor addressing to work properly.
-       This is also used for the TEKTRONIX 4025, where smcup sets
-       the  command character to be the one used by terminfo.  If
-       the smcup sequence will not restore the  screen  after  an
-       rmcup sequence is output (to the state prior to outputting
-       rmcup), specify nrrmc.
-
-
-   Area Clears
-       If the terminal can clear from the current position to the
-       end  of  the  line,  leaving  the cursor where it is, this
-       should be given as el.  If the terminal can clear from the
-       beginning  of  the line to the current position inclusive,
-       leaving the cursor where it is, this should  be  given  as
-       el1.   If the terminal can clear from the current position
-       to the end of the display, then this should  be  given  as
-       ed.   Ed  is only defined from the first column of a line.
-       (Thus, it can be simulated by a request to delete a  large
-       number of lines, if a true ed is not available.)
-
-
-   Insert/delete line and vertical motions
-       If  the terminal can open a new blank line before the line
-       where the cursor is, this should be given as il1; this  is
-       done  only  from the first position of a line.  The cursor
-       must then appear on the newly blank line.  If the terminal
-       can  delete  the  line  which  the cursor is on, then this
-       should be given as dl1; this is done only from  the  first
-       position  on  the line to be deleted.  Versions of il1 and
-       dl1 which take a single parameter  and  insert  or  delete
-       that many lines can be given as il and dl.
-
-       If  the terminal has a settable scrolling region (like the
-       vt100) the command to set this can be described  with  the
-       csr  capability,  which  takes two parameters: the top and
-       bottom lines of the scrolling region.  The cursor position
-       is, alas, undefined after using this command.
-
-       It  is possible to get the effect of insert or delete line
-       using csr on a properly chosen region; the sc and rc (save
-       and  restore  cursor)  commands may be useful for ensuring
-       that your synthesized insert/delete string does  not  move
-       the  cursor.  (Note that the ncurses(3x) library does this
-       synthesis  automatically,  so   you   need   not   compose
-       insert/delete strings for an entry with csr).
-
-       Yet another way to construct insert and delete might be to
-       use a combination of index with  the  memory-lock  feature
-       found  on some terminals (like the HP-700/90 series, which
-       however also has insert/delete).
-
-       Inserting lines at the top or bottom  of  the  screen  can
-       also  be  done using ri or ind on many terminals without a
-       true insert/delete line, and is often faster even on  ter-
-       minals with those features.
-
-       The  boolean  non_dest_scroll_region should be set if each
-       scrolling window is effectively a view port on  a  screen-
-       sized  canvas.   To  test  for  this  capability, create a
-       scrolling region in the middle of the screen, write  some-
-       thing  to  the  bottom line, move the cursor to the top of
-       the region, and do ri followed by dl1 or ind.  If the data
-       scrolled  off  the  bottom  of  the  region  by the ri re-
-       appears, then scrolling is non-destructive.  System V  and
-       XSI  Curses  expect that ind, ri, indn, and rin will simu-
-       late destructive scrolling; their  documentation  cautions
-       you  not  to  define csr unless this is true.  This curses
-       implementation is more liberal and will do explicit erases
-       after scrolling if ndstr is defined.
-
-       If the terminal has the ability to define a window as part
-       of memory, which all commands affect, it should  be  given
-       as the parameterized string wind.  The four parameters are
-       the starting and ending lines in memory and  the  starting
-       and ending columns in memory, in that order.
-
-       If  the terminal can retain display memory above, then the
-       da capability should be given; if display  memory  can  be
-       retained  below,  then db should be given.  These indicate
-       that deleting a line  or  scrolling  may  bring  non-blank
-       lines  up  from  below  or that scrolling back with ri may
-       bring down non-blank lines.
-
-
-   Insert/Delete Character
-       There are two basic kinds of  intelligent  terminals  with
-       respect  to insert/delete character which can be described
-       using terminfo.  The most common  insert/delete  character
-       operations  affect only the characters on the current line
-       and shift characters off the  end  of  the  line  rigidly.
-       Other  terminals,  such  as the Concept 100 and the Perkin
-       Elmer Owl, make a distinction between  typed  and  untyped
-       blanks  on  the  screen, shifting upon an insert or delete
-       only to an untyped blank on the  screen  which  is  either
-       eliminated,  or  expanded  to two untyped blanks.  You can
-       determine the kind of terminal you have  by  clearing  the
-       screen  and  then typing text separated by cursor motions.
-       Type "abc    def" using local cursor motions (not  spaces)
-       between the "abc" and the "def".  Then position the cursor
-       before the "abc" and put the terminal in insert mode.   If
-       typing  characters  causes  the  rest of the line to shift
-       rigidly and characters to fall off the end, then your ter-
-       minal  does  not  distinguish  between  blanks and untyped
-       positions.  If the "abc" shifts over to  the  "def"  which
-       then  move together around the end of the current line and
-       onto the next as you insert, you have the second  type  of
-       terminal,  and should give the capability in, which stands
-       for "insert null".  While these are two logically separate
-       attributes  (one  line  versus multi-line insert mode, and
-       special treatment of untyped spaces) we have seen no  ter-
-       minals whose insert mode cannot be described with the sin-
-       gle attribute.
-
-       Terminfo can describe both terminals which have an  insert
-       mode, and terminals which send a simple sequence to open a
-       blank position on the current  line.   Give  as  smir  the
-       sequence  to  get  into  insert  mode.   Give  as rmir the
-       sequence to leave insert  mode.   Now  give  as  ich1  any
-       sequence  needed  to  be  sent  just  before  sending  the
-       character to be inserted.   Most  terminals  with  a  true
-       insert  mode  will  not  give ich1; terminals which send a
-       sequence to open a screen position should give it here.
-
-       If your terminal has both, insert mode is usually  prefer-
-       able  to  ich1.   Technically,  you  should  not give both
-       unless the terminal actually requires both to be  used  in
-       combination.   Accordingly,  some  non-curses applications
-       get confused if both are present; the symptom  is  doubled
-       characters in an update using insert.  This requirement is
-       now rare; most ich sequences do not require previous smir,
-       and most smir insert modes do not require ich1 before each
-       character.  Therefore, the  new  curses  actually  assumes
-       this  is the case and uses either rmir/smir or ich/ich1 as
-       appropriate (but not both).  If you have to write an entry
-       to  be  used under new curses for a terminal old enough to
-       need both, include the rmir/smir sequences in ich1.
-
-       If post insert padding is needed, give this as a number of
-       milliseconds  in ip (a string option).  Any other sequence
-       which may need to be sent after  an  insert  of  a  single
-       character may also be given in ip.  If your terminal needs
-       both to be placed into an `insert mode' and a special code
-       to  precede  each  inserted character, then both smir/rmir
-       and ich1 can be given, and both will  be  used.   The  ich
-       capability, with one parameter, n, will repeat the effects
-       of ich1 n times.
-
-       If padding is necessary between characters typed while not
-       in  insert  mode,  give  this  as a number of milliseconds
-       padding in rmp.
-
-       It is occasionally  necessary  to  move  around  while  in
-       insert  mode  to delete characters on the same line (e.g.,
-       if there is a tab after the insertion position).  If  your
-       terminal  allows  motion while in insert mode you can give
-       the capability mir to speed up  inserting  in  this  case.
-       Omitting  mir  will  affect  only  speed.   Some terminals
-       (notably Datamedia's) must not have mir because of the way
-       their insert mode works.
-
-       Finally,  you  can specify dch1 to delete a single charac-
-       ter, dch with one parameter, n, to  delete  n  characters,
-       and  delete mode by giving smdc and rmdc to enter and exit
-       delete mode (any mode the terminal needs to be  placed  in
-       for dch1 to work).
-
-       A  command to erase n characters (equivalent to outputting
-       n blanks without moving the cursor) can be  given  as  ech
-       with one parameter.
-
-
-   Highlighting, Underlining, and Visible Bells
-       If  your  terminal  has  one  or  more  kinds  of  display
-       attributes, these can be represented in a number  of  dif-
-       ferent ways.  You should choose one display form as stand-
-       out mode, representing a good, high contrast, easy-on-the-
-       eyes,  format  for  highlighting  error messages and other
-       attention getters.  (If you have a choice,  reverse  video
-       plus  half-bright  is  good, or reverse video alone.)  The
-       sequences to enter and exit standout  mode  are  given  as
-       smso  and  rmso, respectively.  If the code to change into
-       or out of standout mode  leaves  one  or  even  two  blank
-       spaces  on the screen, as the TVI 912 and Teleray 1061 do,
-       then xmc should be given to tell how many spaces are left.
-
-       Codes  to  begin  underlining  and  end underlining can be
-       given as smul and rmul respectively.  If the terminal  has
-       a  code  to  underline  the current character and move the
-       cursor one space to the right, such as the Microterm Mime,
-       this can be given as uc.
-
-       Other  capabilities  to  enter  various highlighting modes
-       include blink (blinking) bold (bold or extra  bright)  dim
-       (dim  or  half-bright)  invis (blanking or invisible text)
-       prot (protected) rev (reverse video) sgr0  (turn  off  all
-       attribute  modes)  smacs  (enter  alternate  character set
-       mode) and  rmacs  (exit  alternate  character  set  mode).
-       Turning  on  any of these modes singly may or may not turn
-       off other modes.
-
-       If there is a sequence to set  arbitrary  combinations  of
-       modes,  this should be given as sgr (set attributes), tak-
-       ing 9 parameters.  Each parameter is either 0 or  nonzero,
-       as the corresponding attribute is on or off.  The 9 param-
-       eters are, in order: standout, underline, reverse,  blink,
-       dim,  bold,  blank, protect, alternate character set.  Not
-       all modes need be supported by sgr, only those  for  which
-       corresponding separate attribute commands exist.
-
-       For example, the DEC vt220 supports most of the modes:
-
-
-            tparm parameter   attribute    escape sequence
-
-            none              none         \E[0m
-            p1                standout     \E[0;1;7m
-            p2                underline    \E[0;4m
-            p3                reverse      \E[0;7m
-            p4                blink        \E[0;5m
-            p5                dim          not available
-            p6                bold         \E[0;1m
-            p7                invis        \E[0;8m
-            p8                protect      not used
-            p9                altcharset   ^O (off) ^N (on)
-
-       We  begin each escape sequence by turning off any existing
-       modes, since there is no quick way  to  determine  whether
-       they are active.  Standout is set up to be the combination
-       of reverse and bold.  The vt220  terminal  has  a  protect
-       mode,  though  it  is  not commonly used in sgr because it
-       protects characters on the screen  from  the  host's  era-
-       sures.   The  altcharset mode also is different in that it
-       is either ^O or ^N, depending on whether it is off or  on.
-       If  all  modes  are  turned  on, the resulting sequence is
-       \E[0;1;4;5;7;8m^N.
-
-       Some sequences are common to different modes.   For  exam-
-       ple,  ;7  is output when either p1 or p3 is true, that is,
-       if either standout or reverse modes are turned on.
-
-       Writing out the above sequences, along with  their  depen-
-       dencies yields
-
-
-          sequence   when to output      terminfo translation
-
-          \E[0       always              \E[0
-          ;1         if p1 or p6         %?%p1%p6%|%t;1%;
-          ;4         if p2               %?%p2%|%t;4%;
-          ;5         if p4               %?%p4%|%t;5%;
-
-          ;7         if p1 or p3         %?%p1%p3%|%t;7%;
-          ;8         if p7               %?%p7%|%t;8%;
-          m          always              m
-          ^N or ^O   if p9 ^N, else ^O   %?%p9%t^N%e^O%;
-
-       Putting this all together into the sgr sequence gives:
-
-           sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;
-               %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;,
-
-       Remember  that  if  you specify sgr, you must also specify
-       sgr0.  Also, some implementations rely on sgr being  given
-       if  sgr0  is, Not all terminfo entries necessarily have an
-       sgr string, however.  Many terminfo  entries  are  derived
-       from  termcap  entries which have no sgr string.  The only
-       drawback to adding an sgr  string  is  that  termcap  also
-       assumes  that  sgr0  does not exit alternate character set
-       mode.
-
-       Terminals with the ``magic cookie'' glitch  (xmc)  deposit
-       special   ``cookies''   when   they  receive  mode-setting
-       sequences, which affect the display algorithm rather  than
-       having  extra  bits  for  each character.  Some terminals,
-       such as the HP 2621,  automatically  leave  standout  mode
-       when  they  move to a new line or the cursor is addressed.
-       Programs using standout mode  should  exit  standout  mode
-       before  moving the cursor or sending a newline, unless the
-       msgr capability, asserting that it  is  safe  to  move  in
-       standout mode, is present.
-
-       If  the terminal has a way of flashing the screen to indi-
-       cate an error quietly (a bell replacement) then  this  can
-       be given as flash; it must not move the cursor.
-
-       If  the  cursor  needs to be made more visible than normal
-       when it is not on the bottom line (to make, for example, a
-       non-blinking  underline  into  an  easier to find block or
-       blinking underline) give this sequence as cvvis.  If there
-       is  a  way  to  make the cursor completely invisible, give
-       that as civis.  The capability cnorm should be given which
-       undoes the effects of both of these modes.
-
-       If your terminal correctly generates underlined characters
-       (with no special codes needed) even  though  it  does  not
-       overstrike,  then you should give the capability ul.  If a
-       character overstriking another leaves both  characters  on
-       the screen, specify the capability os.  If overstrikes are
-       erasable with a blank, then this should  be  indicated  by
-       giving eo.
-
-
-   Keypad and Function Keys
-       If the terminal has a keypad that transmits codes when the
-       keys are pressed, this information  can  be  given.   Note
-       that it is not possible to handle terminals where the key-
-       pad only works in local (this applies, for example, to the
-       unshifted  HP  2621  keys).   If  the keypad can be set to
-       transmit or not transmit, give these  codes  as  smkx  and
-       rmkx.  Otherwise the keypad is assumed to always transmit.
-       The codes sent by the left arrow, right arrow,  up  arrow,
-       down  arrow,  and  home keys can be given as kcub1, kcuf1,
-       kcuu1, kcud1, and khome respectively.  If there are  func-
-       tion  keys  such  as f0, f1, ..., f10, the codes they send
-       can be given as kf0, kf1, ..., kf10.  If these  keys  have
-       labels  other  than the default f0 through f10, the labels
-       can  be  given  as  lf0,  lf1,  ...,  lf10.    The   codes
-       transmitted  by  certain  other special keys can be given:
-       kll (home down), kbs (backspace), ktbc (clear  all  tabs),
-       kctab  (clear  the  tab  stop in this column), kclr (clear
-       screen or  erase  key),  kdch1  (delete  character),  kdl1
-       (delete line), krmir (exit insert mode), kel (clear to end
-       of line), ked (clear to  end  of  screen),  kich1  (insert
-       character  or  enter insert mode), kil1 (insert line), knp
-       (next  page),  kpp  (previous  page),  kind  (scroll  for-
-       ward/down), kri (scroll backward/up), khts (set a tab stop
-       in this column).  In addition, if the keypad has a 3 by  3
-       array  of  keys  including  the four arrow keys, the other
-       five keys can be given as ka1, ka3,  kb2,  kc1,  and  kc3.
-       These  keys are useful when the effects of a 3 by 3 direc-
-       tional pad are needed.
-
-       Strings to program function keys can be  given  as  pfkey,
-       pfloc,  and pfx.  A string to program screen labels should
-       be specified as pln.  Each  of  these  strings  takes  two
-       parameters:  the function key number to program (from 0 to
-       10) and the string to program it with.  Function key  num-
-       bers  out  of  this  range may program undefined keys in a
-       terminal dependent manner.   The  difference  between  the
-       capabilities  is  that pfkey causes pressing the given key
-       to be the same as the user typing the given string;  pfloc
-       causes the string to be executed by the terminal in local;
-       and pfx causes the string to be transmitted  to  the  com-
-       puter.
-
-       The capabilities nlab, lw and lh define the number of pro-
-       grammable screen labels and their width  and  height.   If
-       there  are  commands  to  turn the labels on and off, give
-       them in smln and rmln.  smln is normally output after  one
-       or more pln sequences to make sure that the change becomes
-       visible.
-
-
-   Tabs and Initialization
-       If the terminal has hardware tabs, the command to  advance
-       to  the  next tab stop can be given as ht (usually control
-       I).  A ``back-tab'' command which moves  leftward  to  the
-       preceding tab stop can be given as cbt.  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  ht  or  cbt  even  if  they  are
-       present,  since  the user may not have the tab stops prop-
-       erly set.  If the terminal has  hardware  tabs  which  are
-       initially  set every n spaces when the terminal is powered
-       up, the numeric parameter it is given, showing the  number
-       of  spaces  the tabs are set to.  This is normally used by
-       the tset command to determine whether to set the mode  for
-       hardware  tab expansion, and whether to set the tab stops.
-       If the terminal has tab stops that can be  saved  in  non-
-       volatile  memory, the terminfo description can assume that
-       they are properly set.
-
-       Other capabilities include is1, is2, and is3,  initializa-
-       tion  strings  for the terminal, iprog, the path name of a
-       program to be run to initialize the terminal, and if,  the
-       name  of  a  file  containing long initialization strings.
-       These strings are expected to set the terminal into  modes
-       consistent  with  the  rest  of  the terminfo description.
-       They are normally sent to the terminal, by the init option
-       of  the  tput  program,  each time the user logs in.  They
-       will be printed in the following order:
-
-              run the program
-                     iprog
-
-              output is1 is2
-
-              set the margins using
-                     mgc, smgl and smgr
-
-              set tabs using
-                     tbc and hts
-
-              print the file
-                     if
-
-              and finally
-                     output is3.
-
-       Most initialization is done with  is2.   Special  terminal
-       modes can be set up without duplicating strings by putting
-       the common sequences in is2 and special cases in  is1  and
-       is3.
-
-       A set of sequences that does a harder reset from a totally
-       unknown state can be given as rs1, rs2, rf and rs3, analo-
-       gous  to  is1  ,  is2  ,  if  and is3 respectively.  These
-       strings are output by the reset  program,  which  is  used
-       when  the terminal gets into a wedged state.  Commands are
-       normally placed in rs1, rs2 rs3 and rf only if  they  pro-
-       duce  annoying effects on the screen and are not necessary
-       when logging in.  For example,  the  command  to  set  the
-       vt100  into  80-column mode would normally be part of is2,
-       but it causes an annoying glitch of the screen and is  not
-       normally  needed  since the terminal is usually already in
-       80 column mode.
-
-       The reset program writes strings including iprog, etc., in
-       the  same  order  as  the  init  program, using rs1, etc.,
-       instead of is1, etc.  If any of rs1, rs2, rs3, or rf reset
-       capability  strings  are  missing, the reset program falls
-       back  upon  the  corresponding  initialization  capability
-       string.
-
-       If there are commands to set and clear tab stops, they can
-       be given as tbc (clear all tab stops) and hts (set  a  tab
-       stop  in the current column of every row).  If a more com-
-       plex sequence is needed  to  set  the  tabs  than  can  be
-       described  by  this,  the sequence can be placed in is2 or
-       if.
-
-   Delays and Padding
-       Many older and slower  terminals  do  not  support  either
-       XON/XOFF or DTR handshaking, including hard copy terminals
-       and some very archaic CRTs (including,  for  example,  DEC
-       VT100s).   These may require padding characters after cer-
-       tain cursor motions and screen changes.
-
-       If the terminal uses xon/xoff handshaking for flow control
-       (that  is, it automatically emits ^S back to the host when
-       its input buffers are close to full), set xon.  This capa-
-       bility  suppresses  the emission of padding.  You can also
-       set it for memory-mapped console devices effectively  that
-       do  not  have  a  speed limit.  Padding information should
-       still be included so that routines can make  better  deci-
-       sions about relative costs, but actual pad characters will
-       not be transmitted.
-
-       If pb (padding baud rate) is given, padding is  suppressed
-       at  baud rates below the value of pb.  If the entry has no
-       padding baud rate, then whether padding is emitted or  not
-       is completely controlled by xon.
-
-       If  the terminal requires other than a null (zero) charac-
-       ter as a pad, then this can be given  as  pad.   Only  the
-       first character of the pad string is used.
-
-
-   Status Lines
-       Some  terminals  have  an extra `status line' which is not
-       normally used by software (and thus  not  counted  in  the
-       terminal's lines capability).
-
-       The  simplest  case  is  a  status  line  which is cursor-
-       addressable but not part of the main scrolling  region  on
-       the  screen;  the  Heathkit  H19 has a status line of this
-       kind, as would a 24-line VT100 with  a  23-line  scrolling
-       region  set up on initialization.  This situation is indi-
-       cated by the hs capability.
-
-       Some terminals with status lines need special sequences to
-       access  the  status  line.   These  may  be expressed as a
-       string with single parameter tsl which takes the cursor to
-       a  given zero-origin column on the status line.  The capa-
-       bility fsl must return to the main-screen cursor positions
-       before  the  last  tsl.   You may need to embed the string
-       values of sc (save cursor) and rc (restore cursor) in  tsl
-       and fsl to accomplish this.
-
-       The  status  line is normally assumed to be the same width
-       as the width of the terminal.  If this is untrue, you  can
-       specify it with the numeric capability wsl.
-
-       A  command to erase or blank the status line may be speci-
-       fied as dsl.
-
-       The  boolean  capability  eslok  specifies   that   escape
-       sequences, tabs, etc., work ordinarily in the status line.
-
-       The ncurses implementation does not yet use any  of  these
-       capabilities.   They are documented here in case they ever
-       become important.
-
-
-   Line Graphics
-       Many terminals have alternate character  sets  useful  for
-       forms-drawing.   Terminfo  and curses build in support for
-       the drawing characters supported by the VT100,  with  some
-       characters  from  the  AT&T  4410v1 added.  This alternate
-       character set may be specified by the acsc capability.
-
-
-       Glyph                      ACS            Ascii      VT100
-       Name                       Name           Default    Name
-       UK pound sign              ACS_STERLING   f          }
-       arrow pointing down        ACS_DARROW     v          .
-       arrow pointing left        ACS_LARROW     <          ,
-       arrow pointing right       ACS_RARROW     >          +
-       arrow pointing up          ACS_UARROW     ^          -
-       board of squares           ACS_BOARD      #          h
-       bullet                     ACS_BULLET     o          ~
-       checker board (stipple)    ACS_CKBOARD    :          a
-       degree symbol              ACS_DEGREE     \          f
-       diamond                    ACS_DIAMOND    +          `
-       greater-than-or-equal-to   ACS_GEQUAL     >          z
-       greek pi                   ACS_PI         *          {
-       horizontal line            ACS_HLINE      -          q
-       lantern symbol             ACS_LANTERN    #          i
-       large plus or crossover    ACS_PLUS       +          n
-       less-than-or-equal-to      ACS_LEQUAL     <          y
-
-       lower left corner          ACS_LLCORNER   +          m
-       lower right corner         ACS_LRCORNER   +          j
-       not-equal                  ACS_NEQUAL     !          |
-       plus/minus                 ACS_PLMINUS    #          g
-       scan line 1                ACS_S1         ~          o
-       scan line 3                ACS_S3         -          p
-       scan line 7                ACS_S7         -          r
-       scan line 9                ACS_S9         _          s
-       solid square block         ACS_BLOCK      #          0
-       tee pointing down          ACS_TTEE       +          w
-       tee pointing left          ACS_RTEE       +          u
-       tee pointing right         ACS_LTEE       +          t
-       tee pointing up            ACS_BTEE       +          v
-       upper left corner          ACS_ULCORNER   +          l
-       upper right corner         ACS_URCORNER   +          k
-       vertical line              ACS_VLINE      |          x
-
-       The best way to define a new device's graphics set  is  to
-       add  a  column  to a copy of this table for your terminal,
-       giving  the  character   which   (when   emitted   between
-       smacs/rmacs  switches) will be rendered as the correspond-
-       ing graphic.  Then read off the VT100/your terminal  char-
-       acter  pairs  right  to left in sequence; these become the
-       ACSC string.
-
-
-   Color Handling
-       Most color terminals are either `Tektronix-like'  or  `HP-
-       like'.   Tektronix-like terminals have a predefined set of
-       N colors (where N usually 8), and can  set  character-cell
-       foreground and background characters independently, mixing
-       them into N * N color-pairs.  On  HP-like  terminals,  the
-       use must set each color pair up separately (foreground and
-       background are  not  independently  settable).   Up  to  M
-       color-pairs  may  be  set  up  from  2*M different colors.
-       ANSI-compatible terminals are Tektronix-like.
-
-       Some basic color capabilities are independent of the color
-       method.  The numeric capabilities colors and pairs specify
-       the maximum numbers of colors and color-pairs that can  be
-       displayed  simultaneously.   The op (original pair) string
-       resets foreground and background colors to  their  default
-       values  for the terminal.  The oc 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 bce.
-
-       To change the current foreground or background color on  a
-       Tektronix-type  terminal,  use setaf (set ANSI foreground)
-       and setab (set ANSI background) or setf  (set  foreground)
-       and  setb (set background).  These take one parameter, the
-       color  number.   The  SVr4  documentation  describes  only
-       setaf/setab;  the  XPG4  draft  says that "If the terminal
-       supports ANSI escape sequences to set background and fore-
-       ground,  they  should be coded as setaf and setab, respec-
-       tively.  If the terminal supports other  escape  sequences
-       to  set background and foreground, they should be coded as
-       setf and setb, respectively.  The vidputs()  function  and
-       the  refresh  functions  use  setaf  and setab if they are
-       defined."
-
-       The setaf/setab and setf/setb capabilities take  a  single
-       numeric argument each.  Argument values 0-7 of setaf/setab
-       are portably defined as follows (the middle column is  the
-       symbolic #define available in the header for the curses or
-       ncurses libraries).  The terminal hardware is free to  map
-       these  as  it  likes,  but  the RGB values indicate normal
-       locations in color space.
-
-
-             Color       #define       Value       RGB
-             black     COLOR_BLACK       0     0, 0, 0
-             red       COLOR_RED         1     max,0,0
-             green     COLOR_GREEN       2     0,max,0
-             yellow    COLOR_YELLOW      3     max,max,0
-             blue      COLOR_BLUE        4     0,0,max
-             magenta   COLOR_MAGENTA     5     max,0,max
-             cyan      COLOR_CYAN        6     0,max,max
-             white     COLOR_WHITE       7     max,max,max
-
-       The argument values of setf/setb  historically  correspond
-       to a different mapping, i.e.,
-
-             Color       #define       Value       RGB
-             black     COLOR_BLACK       0     0, 0, 0
-             blue      COLOR_BLUE        1     0,0,max
-             green     COLOR_GREEN       2     0,max,0
-             cyan      COLOR_CYAN        3     0,max,max
-             red       COLOR_RED         4     max,0,0
-             magenta   COLOR_MAGENTA     5     max,0,max
-             yellow    COLOR_YELLOW      6     max,max,0
-             white     COLOR_WHITE       7     max,max,max
-       It is important to not confuse the two sets of color capa-
-       bilities; otherwise red/blue will be interchanged  on  the
-       display.
-
-       On  an  HP-like terminal, use scp with a color-pair number
-       parameter to set which color pair is current.
-
-       On a Tektronix-like terminal, the capability  ccc  may  be
-       present  to  indicate that colors can be modified.  If so,
-       the initc capability will take a color number (0 to colors
-       -  1)and  three  more parameters which describe the color.
-       These three parameters default to being interpreted as RGB
-       (Red,  Green, Blue) values.  If the boolean capability hls
-       is present, they are instead as HLS (Hue, Lightness, Satu-
-       ration) indices.  The ranges are terminal-dependent.
-
-       On  an  HP-like  terminal, initp may give a capability for
-       changing a color-pair value.  It will take  seven  parame-
-       ters;  a  color-pair  number (0 to max_pairs - 1), and two
-       triples describing first background  and  then  foreground
-       colors.   These  parameters  must be (Red, Green, Blue) or
-       (Hue, Lightness, Saturation) depending on hls.
-
-       On some color terminals, colors collide  with  highlights.
-       You can register these collisions with the ncv capability.
-       This is a bit-mask of attributes not to be used when  col-
-       ors  are  enabled.  The correspondence with the attributes
-       understood by curses is as follows:
-
-
-                      Attribute      Bit   Decimal
-                      A_STANDOUT     0     1
-                      A_UNDERLINE    1     2
-                      A_REVERSE      2     4
-                      A_BLINK        3     8
-                      A_DIM          4     16
-                      A_BOLD         5     32
-                      A_INVIS        6     64
-                      A_PROTECT      7     128
-                      A_ALTCHARSET   8     256
-
-       For example,  on  many  IBM  PC  consoles,  the  underline
-       attribute  collides  with the foreground color blue and is
-       not available in color mode.  These  should  have  an  ncv
-       capability of 2.
-
-       SVr4  curses  does nothing with ncv, ncurses recognizes it
-       and optimizes the output in favor of colors.
-
-
-   Miscellaneous
-       If the terminal requires other than a null (zero)  charac-
-       ter  as  a  pad,  then this can be given as pad.  Only the
-       first character of the pad string is used.  If the  termi-
-       nal does not have a pad character, specify npc.  Note that
-       ncurses implements  the  termcap-compatible  PC  variable;
-       though  the  application  may  set this value to something
-       other than a null, ncurses will test  npc  first  and  use
-       napms if the terminal has no pad character.
-
-       If  the terminal can move up or down half a line, this can
-       be indicated with hu  (half-line  up)  and  hd  (half-line
-       down).  This is primarily useful for superscripts and sub-
-       scripts on hard-copy terminals.  If a  hard-copy  terminal
-       can  eject  to  the next page (form feed), give this as ff
-       (usually control L).
-
-       If there is a command to repeat a given character a  given
-       number  of times (to save time transmitting a large number
-       of identical characters) this can be  indicated  with  the
-       parameterized  string  rep.   The  first  parameter is the
-       character to be repeated and the second is the  number  of
-       times  to repeat it.  Thus, tparm(repeat_char, 'x', 10) is
-       the same as `xxxxxxxxxx'.
-
-       If the terminal has a settable command character, such  as
-       the  TEKTRONIX  4025, this can be indicated with cmdch.  A
-       prototype command character is chosen which is used in all
-       capabilities.   This character is given in the cmdch capa-
-       bility to identify it.  The following convention  is  sup-
-       ported  on  some  UNIX  systems:  The environment is to be
-       searched for a CC variable, and if found, all  occurrences
-       of the prototype character are replaced with the character
-       in the environment variable.
-
-       Terminal descriptions that do  not  represent  a  specific
-       kind of known terminal, such as switch, dialup, patch, and
-       network, should include the  gn  (generic)  capability  so
-       that  programs  can  complain that they do not know how to
-       talk to the terminal.  (This capability does not apply  to
-       virtual   terminal   descriptions  for  which  the  escape
-       sequences are known.)
-
-       If the terminal has a ``meta key'' which acts as  a  shift
-       key,  setting  the  8th  bit of any character transmitted,
-       this fact can be indicated with km.   Otherwise,  software
-       will assume that the 8th bit is parity and it will usually
-       be cleared.  If strings exist to turn this  ``meta  mode''
-       on and off, they can be given as smm and rmm.
-
-       If  the terminal has more lines of memory than will fit on
-       the screen at once, the number of lines of memory  can  be
-       indicated  with  lm.   A  value of lm#0 indicates that the
-       number of lines is not fixed, but that there is still more
-       memory than fits on the screen.
-
-       If the terminal is one of those supported by the UNIX vir-
-       tual terminal protocol, the terminal number can  be  given
-       as vt.
-
-       Media copy strings which control an auxiliary printer con-
-       nected to the terminal can be given as mc0: print the con-
-       tents  of  the screen, mc4: turn off the printer, and mc5:
-       turn on the printer.  When the printer  is  on,  all  text
-       sent  to  the terminal will be sent to the printer.  It is
-       undefined whether the text is also displayed on the termi-
-       nal screen when the printer is on.  A variation mc5p takes
-       one parameter, and leaves the printer on for as many char-
-       acters  as  the  value  of  the  parameter, then turns the
-       printer off.  The parameter should not  exceed  255.   All
-       text,  including  mc4,  is  transparently  passed  to  the
-       printer while an mc5p is in effect.
-
-
-   Glitches and Braindamage
-       Hazeltine terminals, which do not allow `~' characters  to
-       be displayed should indicate hz.
-
-       Terminals which ignore a line-feed immediately after an am
-       wrap, such as the Concept and vt100, should indicate xenl.
-
-       If  el  is  required  to  get  rid of standout (instead of
-       merely writing normal text on top of it),  xhp  should  be
-       given.
-
-       Teleray  terminals,  where  tabs turn all characters moved
-       over to blanks, should  indicate  xt  (destructive  tabs).
-       Note:    the    variable    indicating    this    is   now
-       `dest_tabs_magic_smso'; in older  versions,  it  was  tel-
-       eray_glitch.  This glitch is also taken to mean that it is
-       not possible to position the cursor on top  of  a  ``magic
-       cookie'', that to erase standout mode it is instead neces-
-       sary to use delete and insert line.  The ncurses implemen-
-       tation ignores this glitch.
-
-       The  Beehive Superbee, which is unable to correctly trans-
-       mit the escape or control C characters, has xsb,  indicat-
-       ing  that the f1 key is used for escape and f2 for control
-       C.  (Only certain Superbees have this  problem,  depending
-       on  the  ROM.)  Note that in older terminfo versions, this
-       capability  was  called  `beehive_glitch';   it   is   now
-       `no_esc_ctl_c'.
-
-       Other  specific  terminal  problems  may  be  corrected by
-       adding more capabilities of the form xx.
-
-
-   Similar Terminals
-       If there are two very similar terminals, one (the variant)
-       can  be  defined  as  being just like the other (the base)
-       with certain exceptions.  In the definition of  the  vari-
-       ant,  the string capability use can be given with the name
-       of the base terminal.  The capabilities given  before  use
-       override  those  in  the base type named by use.  If there
-       are multiple use capabilities, they are merged in  reverse
-       order.   That is, the rightmost use reference is processed
-       first, then the one to its left, and so forth.   Capabili-
-       ties  given explicitly in the entry override those brought
-       in by use references.
-
-       A capability can be canceled by placing xx@ to the left of
-       the  use  reference that imports it, where xx is the capa-
-       bility.  For example, the entry
-
-                   2621-nl, smkx@, rmkx@, use=2621,
-
-       defines a 2621-nl that does not  have  the  smkx  or  rmkx
-       capabilities,  and hence does not turn on the function key
-       labels when in visual mode.  This is useful for  different
-       modes for a terminal, or for different user preferences.
-
-
-   Pitfalls of Long Entries
-       Long  terminfo  entries  are  unlikely to be a problem; to
-       date, no entry has even  approached  terminfo's  4096-byte
-       string-table maximum.  Unfortunately, the termcap transla-
-       tions are much more strictly limited (to 1023 bytes), thus
-       termcap  translations  of  long terminfo entries can cause
-       problems.
-
-       The man pages for 4.3BSD and older versions  of  tgetent()
-       instruct  the  user to allocate a 1024-byte buffer for the
-       termcap entry.  The  entry  gets  null-terminated  by  the
-       termcap library, so that makes the maximum safe length for
-       a termcap entry 1k-1 (1023) bytes.  Depending on what  the
-       application  and  the termcap library being used does, and
-       where in the termcap file the terminal type that tgetent()
-       is searching for is, several bad things can happen.
-
-       Some  termcap libraries print a warning message or exit if
-       they find an entry that's longer than 1023  bytes;  others
-       do  not;  others truncate the entries to 1023 bytes.  Some
-       application programs allocate more than the recommended 1K
-       for the termcap entry; others do not.
-
-       Each termcap entry has two important sizes associated with
-       it: before "tc" expansion, and after "tc" expansion.  "tc"
-       is  the  capability that tacks on another termcap entry to
-       the end of the current one, to add  on  its  capabilities.
-       If  a termcap entry does not use the "tc" capability, then
-       of course the two lengths are the same.
-
-       The "before tc expansion" length  is  the  most  important
-       one,  because it affects more than just users of that par-
-       ticular terminal.  This is the length of the entry  as  it
-       exists in /etc/termcap, minus the backslash-newline pairs,
-       which tgetent() strips out while reading it.  Some termcap
-       libraries  strip  off  the final newline, too (GNU termcap
-       does not).  Now suppose:
-
-       *    a termcap entry before expansion is  more  than  1023
-            bytes long,
-
-       *    and the application has only allocated a 1k buffer,
-
-       *    and  the  termcap library (like the one in BSD/OS 1.1
-            and GNU) reads the whole entry into  the  buffer,  no
-            matter  what its length, to see if it is the entry it
-            wants,
-
-       *    and tgetent() is searching for a terminal  type  that
-            either is the long entry, appears in the termcap file
-            after the long entry, or does not appear in the  file
-            at  all  (so  that  tgetent() has to search the whole
-            termcap file).
-
-       Then tgetent() will overwrite memory, perhaps  its  stack,
-       and  probably core dump the program.  Programs like telnet
-       are particularly vulnerable;  modern  telnets  pass  along
-       values  like the terminal type automatically.  The results
-       are almost as undesirable with  a  termcap  library,  like
-       SunOS  4.1.3  and Ultrix 4.4, that prints warning messages
-       when it reads an overly long termcap entry.  If a  termcap
-       library  truncates  long  entries,  like  OSF/1 3.0, it is
-       immune to dying here but will return  incorrect  data  for
-       the terminal.
-
-       The "after tc expansion" length will have a similar effect
-       to the above, but only for people who actually set TERM to
-       that  terminal type, since tgetent() only does "tc" expan-
-       sion once it is found the terminal  type  it  was  looking
-       for, not while searching.
-
-       In summary, a termcap entry that is longer than 1023 bytes
-       can cause, on various combinations  of  termcap  libraries
-       and  applications,  a  core  dump,  warnings, or incorrect
-       operation.  If it is too long even before "tc"  expansion,
-       it will have this effect even for users of some other ter-
-       minal types and users whose TERM variable does not have  a
-       termcap entry.
-
-       When in -C (translate to termcap) mode, the ncurses imple-
-       mentation of tic(1m) issues warning messages when the pre-
-       tc  length  of  a termcap translation is too long.  The -c
-       (check) option also checks resolved (after  tc  expansion)
-       lengths.
-
-   Binary Compatibility
-       It  is not wise to count on portability of binary terminfo
-       entries between commercial UNIX versions.  The problem  is
-       that  there  are  at least two versions of terminfo (under
-       HP-UX and AIX) 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 XSI Curses extensions.
-
-
-
-

EXTENSIONS

-       Some  SVr4  curses  implementations,  and  all previous to
-       SVr4, do not interpret the %A and %O operators in  parame-
-       ter strings.
-
-       SVr4/XPG4  do  not  specify whether msgr licenses movement
-       while in an alternate-character-set mode (such modes  may,
-       among  other  things,  map CR and NL to characters that do
-       not trigger local motions).   The  ncurses  implementation
-       ignores  msgr  in ALTCHARSET mode.  This raises the possi-
-       bility that an XPG4  implementation  making  the  opposite
-       interpretation  may need terminfo entries made for ncurses
-       to have msgr turned off.
-
-       The ncurses library handles insert-character  and  insert-
-       character modes in a slightly non-standard way to get bet-
-       ter update efficiency.  See  the  Insert/Delete  Character
-       subsection above.
-
-       The   parameter   substitutions  for  set_clock  and  dis-
-       play_clock are not documented in SVr4 or  the  XSI  Curses
-       standard.  They are deduced from the documentation for the
-       AT&T 505 terminal.
-
-       Be careful assigning the kmous  capability.   The  ncurses
-       wants  to  interpret it as KEY_MOUSE, for use by terminals
-       and emulators like xterm that  can  return  mouse-tracking
-       information in the keyboard-input stream.
-
-       Different  commercial ports of terminfo and curses support
-       different subsets of the XSI Curses standard and (in  some
-       cases) different extension sets.  Here is a summary, accu-
-       rate as of October 1995:
-
-       SVR4, Solaris, ncurses -- These support all SVr4 capabili-
-       ties.
-
-       SGI  --  Supports  the  SVr4  set,  adds  one undocumented
-       extended string capability (set_pglen).
-
-       SVr1, Ultrix -- These support a restricted subset of  ter-
-       minfo  capabilities.   The booleans end with xon_xoff; the
-       numerics with  width_status_line;  and  the  strings  with
-       prtr_non.
-
-       HP/UX  --  Supports  the  SVr1  subset,  plus the SVr[234]
-       numerics num_labels, label_height, label_width, plus func-
-       tion  keys  11  through  63, plus plab_norm, label_on, and
-       label_off, plus some incompatible extensions in the string
-       table.
-
-       AIX  --  Supports  the  SVr1 subset, plus function keys 11
-       through 63, plus a number  of  incompatible  string  table
-       extensions.
-
-       OSF  -- Supports both the SVr4 set and the AIX extensions.
-
-
-
-

FILES

-       /usr/share/terminfo/?/*  files     containing     terminal
-                                descriptions
-
-
-
-

SEE ALSO

-       tic(1m),   infocmp(1m),  curses(3x),  printf(3),  term(5).
-       term_variables(3x).
-
-
-
-

AUTHORS

-       Zeyd M. Ben-Halim, Eric  S.  Raymond,  Thomas  E.  Dickey.
-       Based on pcurses by Pavel Curtis.
-
-
-
-                                                            terminfo(5)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/tic.1m.html b/deps/ncurses-5.9/doc/html/man/tic.1m.html deleted file mode 100644 index 9d05671..0000000 --- a/deps/ncurses-5.9/doc/html/man/tic.1m.html +++ /dev/null @@ -1,330 +0,0 @@ - - - - -tic 1m - - - - -

tic 1m

-
-
-
-tic(1m)                                                         tic(1m)
-
-
-
-
-
-

NAME

-       tic - the terminfo entry-description compiler
-
-
-
-

SYNOPSIS

-       tic  [-1CGILNTUVacfgrstx]  [-e names] [-o dir] [-R subset]
-       [-v[n]] [-w[n]] file
-
-
-
-

DESCRIPTION

-       The command tic translates a  terminfo  file  from  source
-       format  into compiled format.  The compiled format is nec-
-       essary for use with the library routines in ncurses(3x).
-
-       The results are normally placed  in  the  system  terminfo
-       directory  /usr/share/terminfo.   There  are  two  ways to
-       change this behavior.
-
-       First, you may override the system default by setting  the
-       variable  TERMINFO  in  your  shell environment to a valid
-       (existing) directory name.
-
-       Secondly, if tic cannot get access to  /usr/share/terminfo
-       or  your  TERMINFO  directory,  it looks for the directory
-       $HOME/.terminfo; if that directory exists,  the  entry  is
-       placed there.
-
-       Libraries that read terminfo entries are expected to check
-       for a TERMINFO directory first, look at $HOME/.terminfo if
-       TERMINFO  is  not set, and finally look in /usr/share/ter-
-       minfo.
-
-       -1     restricts the output to a single column
-
-       -a     tells  tic  to  retain  commented-out  capabilities
-              rather than discarding them.  Capabilities are com-
-              mented by prefixing them with a period.  This  sets
-              the  -x 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.  Otherwise these are ignored.
-
-       -C     Force source translation to termcap format.   Note:
-              this  differs  from the -C option of infocmp(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 but
-              commented out with two preceding dots.
-
-       -c     tells tic to only check file for errors,  including
-              syntax  problems and bad use links.  If you specify
-              -C (-I) with this option, the code will print warn-
-              ings about entries which, after use resolution, are
-              more than 1023 (4096) bytes long.  Due to  a  fixed
-              buffer  length  in  older  termcap libraries (and a
-              documented limit in terminfo),  these  entries  may
-              cause core dumps.
-
-       -e names
-              Limit  writes  and  translations  to  the following
-              comma-separated list of terminals.  If any name  or
-              alias of a terminal matches one of the names in 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 con-
-              taining  the  list  if  it  contains a '/'.  (Note:
-              depending on how tic was compiled, this option  may
-              require -I or -C.)
-
-       -f     Display  complex  terminfo  strings  which  contain
-              if/then/else/endif expressions indented  for  read-
-              ability.
-
-       -G     Display  constant  literals  in decimal form rather
-              than their character equivalents.
-
-       -g     Display constant character literals in quoted  form
-              rather than their decimal equivalents.
-
-       -I     Force source translation to terminfo format.
-
-       -L     Force  source  translation to terminfo format using
-              the long C variable names listed in <term.h>
-
-       -N     Disable smart defaults.  Normally, when translating
-              from termcap to terminfo, the compiler makes a num-
-              ber of assumptions about  the  defaults  of  string
-              capabilities  reset1_string,  carriage_return, cur-
-              sor_left, cursor_down,  scroll_forward,  tab,  new-
-              line,  key_backspace,  key_left, and key_down, then
-              attempts to use obsolete  termcap  capabilities  to
-              deduce correct values.  It also normally suppresses
-              output of obsolete termcap capabilities such as bs.
-              This  option forces a more literal translation that
-              also preserves the obsolete capabilities.
-
-       -odir  Write compiled entries to given  directory.   Over-
-              rides the TERMINFO environment variable.
-
-       -Rsubset
-              Restrict  output to a given subset.  This option is
-              for use with  archaic  versions  of  terminfo  like
-              those on SVr1, Ultrix, or HP/UX that do not support
-              the full set of SVR4/XSI Curses terminfo; and  out-
-              right broken ports like AIX 3.x that have their own
-              extensions incompatible with  SVr4/XSI.   Available
-              subsets  are  "SVr1",  "Ultrix",  "HP",  "BSD"  and
-              "AIX"; see terminfo(5) for details.
-
-       -r     Force entry resolution (so there are  no  remaining
-              tc  capabilities)  even  when  doing translation to
-              termcap format.  This may  be  needed  if  you  are
-              preparing  a  termcap  file  for  a termcap library
-              (such as GNU termcap through  version  1.3  or  BSD
-              termcap through 4.3BSD) that does not handle multi-
-              ple tc capabilities per entry.
-
-       -s     Summarize the compile by showing the directory into
-              which  entries  are  written,  and  the  number  of
-              entries which are compiled.
-
-       -T     eliminates size-restrictions on the generated text.
-              This  is  mainly  useful  for testing and analysis,
-              since the compiled descriptions are limited  (e.g.,
-              1023 for termcap, 4096 for terminfo).
-
-       -t     tells  tic  to  discard commented-out capabilities.
-              Normally when translating from terminfo to termcap,
-              untranslatable capabilities are commented-out.
-
-       -U   tells  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 term-
-            caps.
-
-       -V   reports the version of ncurses which was used in this
-            program, and exits.
-
-       -vn  specifies  that  (verbose) output be written to stan-
-            dard error trace information showing tic's  progress.
-            The  optional  parameter  n is a number from 1 to 10,
-            inclusive, indicating the desired level of detail  of
-            information.   If  n is omitted, the default level is
-            1.  If n is specified and greater than 1,  the  level
-            of detail is increased.
-
-       -wn  specifies  the width of the output.  The parameter is
-            optional.  If it is omitted, it defaults to 60.
-
-       -x   Treat unknown capabilities as user-defined.  That is,
-            if  you  supply  a capability name which 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.
-
-       file contains one or more terminfo  terminal  descriptions
-            in source format [see terminfo(5)].  Each description
-            in the file describes the capabilities of a  particu-
-            lar terminal.
-
-       The debug flag levels are as follows:
-
-       1      Names of files created and linked
-
-       2      Information related to the ``use'' facility
-
-       3      Statistics from the hashing algorithm
-
-       5      String-table memory allocations
-
-       7      Entries into the string-table
-
-       8      List of tokens encountered by scanner
-
-       9      All values computed in construction of the hash ta-
-              ble
-
-       If the debug level n is not given, it is taken to be  one.
-
-       All but one of the capabilities recognized by tic are doc-
-       umented in terminfo(5).  The exception is the use capabil-
-       ity.
-
-       When  a  use=entry-name  field is discovered in a terminal
-       entry currently being compiled, tic reads  in  the  binary
-       from  /usr/share/terminfo to complete the entry.  (Entries
-       created from file will be used first.  If the  environment
-       variable  TERMINFO  is  set,  that  directory  is searched
-       instead of /usr/share/terminfo.)  tic duplicates the capa-
-       bilities  in  entry-name  for  the current entry, with the
-       exception  of  those  capabilities  that  explicitly   are
-       defined in the current entry.
-
-       When    an   entry,   e.g.,   entry_name_1,   contains   a
-       use=entry_name_2  field,  any  canceled  capabilities   in
-       entry_name_2  must also appear in entry_name_1 before use=
-       for these capabilities to be canceled in entry_name_1.
-
-       If the environment variable TERMINFO is set, the  compiled
-       results are placed there instead of /usr/share/terminfo.
-
-       Total compiled entries cannot exceed 4096 bytes.  The name
-       field cannot exceed 512 bytes.  Terminal  names  exceeding
-       the  maximum  alias  length (32 characters on systems with
-       long filenames, 14 characters otherwise) will be truncated
-       to  the maximum alias length and a warning message will be
-       printed.
-
-
-
-

COMPATIBILITY

-       There is some evidence that historic  tic  implementations
-       treated  description  fields with no whitespace in them as
-       additional aliases or short names.  This tic does  not  do
-       that,  but  it  does  warn  when description fields may be
-       treated that way and check them for dangerous  characters.
-
-
-
-

EXTENSIONS

-       Unlike the stock SVr4 tic command, this implementation can
-       actually compile termcap sources.   In  fact,  entries  in
-       terminfo  and  termcap  syntax  can  be  mixed in a single
-       source file.  See terminfo(5)  for  the  list  of  termcap
-       names taken to be equivalent to terminfo names.
-
-       The  SVr4  manual  pages  are  not clear on the resolution
-       rules for use capabilities.  This  implementation  of  tic
-       will find use targets anywhere in the source file, or any-
-       where in the file tree rooted at TERMINFO (if TERMINFO  is
-       defined),  or  in the user's $HOME/.terminfo directory (if
-       it exists), or (finally) anywhere  in  the  system's  file
-       tree of compiled entries.
-
-       The  error  messages from this tic have the same format as
-       GNU C error messages, and can be  parsed  by  GNU  Emacs's
-       compile facility.
-
-       The  -C,  -G,  -I, -N, -R, -T, -V, -a, -e, -f, -g, -o, -r,
-       -s, -t and -x options are not supported under  SVr4.   The
-       SVr4 -c mode does not report bad use links.
-
-       System  V does not compile entries to or read entries from
-       your $HOME/.terminfo directory unless TERMINFO is  explic-
-       itly set to it.
-
-
-
-

FILES

-       /usr/share/terminfo/?/*
-            Compiled terminal description database.
-
-
-
-

SEE ALSO

-       infocmp(1m),    captoinfo(1m),   infotocap(1m),   toe(1m),
-       curses(3x), terminfo(5).
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-

AUTHOR

-       Eric S. Raymond <esr@snark.thyrsus.com> and
-       Thomas E. Dickey <dickey@invisible-island.net>
-
-
-
-                                                                tic(1m)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/toe.1m.html b/deps/ncurses-5.9/doc/html/man/toe.1m.html deleted file mode 100644 index 925d390..0000000 --- a/deps/ncurses-5.9/doc/html/man/toe.1m.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - -toe 1m - - - - -

toe 1m

-
-
-
-toe(1m)                                                         toe(1m)
-
-
-
-
-
-

NAME

-       toe - table of (terminfo) entries
-
-
-
-

SYNOPSIS

-       toe [-v[n]] [-ahuUV] file...
-
-
-
-

DESCRIPTION

-       With no options, toe lists all available terminal types by
-       primary name with descriptions.   File  arguments  specify
-       the  directories  to  be scanned; if no such arguments are
-       given, your default terminfo directory is scanned.  If you
-       also  specify  the  -h  option, a directory header will be
-       issued as each directory is entered.
-
-       There are other options intended for use by terminfo  file
-       maintainers:
-
-       -a     report  on  all  of  the  terminal  databases which
-              ncurses would search, rather than  only  the  first
-              one that it finds.
-
-       -u file
-              says  to  write  a  report  to the standard output,
-              listing dependencies in the given  terminfo/termcap
-              source  file.  The report condenses the `use' rela-
-              tion: each line consists of the primary name  of  a
-              terminal  that  has use capabilities, followed by a
-              colon, followed by the whitespace-separated primary
-              names  of  all  terminals  which occur in those use
-              capabilities, followed by a newline
-
-       -U file
-              says to write a  report  to  the  standard  output,
-              listing  reverse  dependencies  in  the  given ter-
-              minfo/termcap source file.  The report reverses the
-              `use'  relation:  each line consists of the primary
-              name of a terminal that occurs in use capabilities,
-              followed  by  a  colon, followed by the whitespace-
-              separated primary  names  of  all  terminals  which
-              depend on it, followed by a newline.
-
-       -vn    specifies that (verbose) output be written to stan-
-              dard error, showing toe's progress.   The  optional
-              parameter  n  is a number from 1 to 10, interpreted
-              as for tic(1m).
-
-       -V     reports the version of ncurses which  was  used  in
-              this program, and exits.
-
-
-
-

FILES

-       /usr/share/terminfo/?/*
-            Compiled terminal description database.
-
-
-
-

SEE ALSO

-       tic(1m),    infocmp(1m),   captoinfo(1m),   infotocap(1m),
-       curses(3x), terminfo(5).
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                                toe(1m)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/tput.1.html b/deps/ncurses-5.9/doc/html/man/tput.1.html deleted file mode 100644 index c04914f..0000000 --- a/deps/ncurses-5.9/doc/html/man/tput.1.html +++ /dev/null @@ -1,343 +0,0 @@ - - - - -tput 1 - - - - -

tput 1

-
-
-
-tput(1)                                                         tput(1)
-
-
-
-
-
-

NAME

-       tput,  reset  -  initialize  a  terminal or query terminfo
-       database
-
-
-
-

SYNOPSIS

-       tput [-Ttype] capname [parms ... ]
-       tput [-Ttype] init
-       tput [-Ttype] reset
-       tput [-Ttype] longname
-       tput -S  <<
-       tput -V
-
-
-
-

DESCRIPTION

-       The tput utility uses the terminfo database  to  make  the
-       values  of terminal-dependent capabilities and information
-       available to the shell (see sh(1)), to initialize or reset
-       the  terminal,  or  return  the long name of the requested
-       terminal type.  The result depends upon  the  capability's
-       type:
-
-              string
-                   tput writes the string to the standard output.
-                   No trailing newline is supplied.
-
-              integer
-                   tput writes the decimal value to the  standard
-                   output, with a trailing newline.
-
-              boolean
-                   tput  simply sets the exit code (0 for TRUE if
-                   the terminal has the capability, 1  for  FALSE
-                   if  it  does  not),  and writes nothing to the
-                   standard output.
-
-       Before using a value returned on the standard output,  the
-       application  should  test  the  exit  code  (e.g., $?, see
-       sh(1)) to be sure it is 0.  (See the EXIT CODES and  DIAG-
-       NOSTICS  sections.)   For  a complete list of capabilities
-       and the capname associated with each, see terminfo(5).
-
-       -Ttype indicates the  type  of  terminal.   Normally  this
-              option is unnecessary, because the default is taken
-              from the environment variable TERM.  If -T is spec-
-              ified,  then  the shell variables LINES and COLUMNS
-              will be ignored,and the operating system  will  not
-              be queried for the actual screen size.
-
-       capname
-              indicates   the   capability   from   the  terminfo
-              database.  When termcap support is compiled in, the
-              termcap name for the capability is also accepted.
-
-       parms  If  the  capability  is a string that takes parame-
-              ters, the arguments parms will be instantiated into
-              the string.
-
-              Most  parameters  are numbers.  Only a few terminfo
-              capabilities require string parameters; tput uses a
-              table to decide which to pass as strings.  Normally
-              tput uses tparm (3x) to perform  the  substitution.
-              If no parameters are given for the capability, tput
-              writes   the   string   without   performing    the
-              substitution.
-
-       -S     allows  more  than one capability per invocation of
-              tput.  The capabilities must be passed to tput from
-              the standard input instead of from the command line
-              (see example).  Only one  capname  is  allowed  per
-              line.   The  -S option changes the meaning of the 0
-              and 1 boolean and string exit codes (see  the  EXIT
-              CODES section).
-
-              Again, tput uses a table and the presence of param-
-              eters in its input to decide whether to  use  tparm
-              (3x), and how to interpret the parameters.
-
-       -V     reports  the  version  of ncurses which was used in
-              this program, and exits.
-
-       init   If the terminfo database is present  and  an  entry
-              for the user's terminal exists (see -Ttype, above),
-              the following will occur:
-
-              (1)    if present,  the  terminal's  initialization
-                     strings  will  be  output as detailed in the
-                     terminfo(5) section on Tabs and  Initializa-
-                     tion,
-
-              (2)    any  delays (e.g., newline) specified in the
-                     entry will be set in the tty driver,
-
-              (3)    tabs expansion will  be  turned  on  or  off
-                     according to the specification in the entry,
-                     and
-
-              (4)    if tabs are not expanded, standard tabs will
-                     be set (every 8 spaces).
-
-              If an entry does not contain the information needed
-              for any of the four above activities, that activity
-              will silently be skipped.
-
-       reset  Instead  of putting out initialization strings, the
-              terminal's reset strings will be output if  present
-              (rs1,  rs2, rs3, rf).  If the reset strings are not
-              present, but initialization strings are,  the  ini-
-              tialization  strings  will  be  output.  Otherwise,
-              reset acts identically to init.
-
-       longname
-              If the terminfo database is present  and  an  entry
-              for  the user's terminal exists (see -Ttype above),
-              then the long name of the terminal will be put out.
-              The long name is the last name in the first line of
-              the terminal's description in the terminfo database
-              [see term(5)].
-
-       If  tput  is  invoked  by a link named reset, this has the
-       same effect as tput reset.  See tset for comparison, which
-       has similar behavior.
-
-
-
-

EXAMPLES

-       tput init
-            Initialize the terminal according to the type of ter-
-            minal in the environmental variable TERM.  This  com-
-            mand  should be included in everyone's .profile after
-            the environmental variable TERM has been exported, as
-            illustrated on the profile(5) manual page.
-
-       tput -T5620 reset
-            Reset  an  AT&T 5620 terminal, overriding the type of
-            terminal in the environmental variable TERM.
-
-       tput cup 0 0
-            Send the sequence to move the cursor to row 0, column
-            0 (the upper left corner of the screen, usually known
-            as the "home" cursor position).
-
-       tput clear
-            Echo the clear-screen sequence for the current termi-
-            nal.
-
-       tput cols
-            Print the number of columns for the current terminal.
-
-       tput -T450 cols
-            Print the number of columns for the 450 terminal.
-
-       bold=`tput smso` offbold=`tput rmso`
-            Set the shell variables bold, to begin stand-out mode
-            sequence, and offbold, to end standout mode sequence,
-            for the current terminal.  This might be followed  by
-            a  prompt:  echo  "${bold}Please  type  in your name:
-            ${offbold}\c"
-
-       tput hc
-            Set exit code to indicate if the current terminal  is
-            a hard copy terminal.
-
-       tput cup 23 4
-            Send  the sequence to move the cursor to row 23, col-
-            umn 4.
-
-       tput cup
-            Send the terminfo string for cursor-movement, with no
-            parameters substituted.
-
-       tput longname
-            Print  the  long  name from the terminfo database for
-            the type of terminal specified in  the  environmental
-            variable TERM.
-
-            tput -S <<!
-            > clear
-            > cup 10 10
-            > bold
-            > !
-
-            This  example shows tput processing several capabili-
-            ties in one invocation.  It clears the screen,  moves
-            the  cursor  to  position  10,  10  and turns on bold
-            (extra bright) mode.  The list is  terminated  by  an
-            exclamation mark (!) on a line by itself.
-
-
-
-

FILES

-       /usr/share/terminfo
-              compiled terminal description database
-
-       /usr/share/tabset/*
-              tab settings for some terminals, in a format appro-
-              priate  to  be  output  to  the  terminal   (escape
-              sequences  that  set  margins  and  tabs); for more
-              information, see the "Tabs and Initialization" sec-
-              tion of terminfo(5)
-
-
-
-

EXIT CODES

-       If the -S option is used, tput checks for errors from each
-       line, and if any errors are found, will set the exit  code
-       to  4  plus the number of lines with errors.  If no errors
-       are found, the exit code is 0.   No  indication  of  which
-       line failed can be given so exit code 1 will never appear.
-       Exit codes 2, 3, and 4 retain their usual  interpretation.
-       If the -S option is not used, the exit code depends on the
-       type of capname:
-
-            boolean
-                   a value of 0 is set for TRUE and 1 for  FALSE.
-
-            string a  value of 0 is set if the capname is defined
-                   for this terminal type (the value  of  capname
-                   is  returned on standard output); a value of 1
-                   is set if capname is not defined for this ter-
-                   minal  type  (nothing  is  written to standard
-                   output).
-
-            integer
-                   a value of 0 is always  set,  whether  or  not
-                   capname is defined for this terminal type.  To
-                   determine if capname is defined for this  ter-
-                   minal type, the user must test the value writ-
-                   ten to standard output.  A value of  -1  means
-                   that  capname is not defined for this terminal
-                   type.
-
-            other  reset or init may fail to find  their  respec-
-                   tive  files.   In  that case, the exit code is
-                   set to 4 + errno.
-
-       Any other exit code indicates an error; see  the  DIAGNOS-
-       TICS section.
-
-
-
-

DIAGNOSTICS

-       tput prints the following error messages and sets the cor-
-       responding exit codes.
-
-
-       exit code   error message
-       ---------------------------------------------------------------------
-       0           (capname is a numeric variable that is not specified  in
-                   the  terminfo(5)  database  for this terminal type, e.g.
-                   tput -T450 lines and tput -T2621 xmc)
-       1           no error message is printed, see the EXIT CODES section.
-       2           usage error
-       3           unknown terminal type or no terminfo database
-       4           unknown terminfo capability capname
-       >4          error occurred in -S
-       ---------------------------------------------------------------------
-
-
-
-

PORTABILITY

-       The longname and -S options, and  the  parameter-substitu-
-       tion  features  used in the cup example, are not supported
-       in BSD curses or in AT&T/USL curses before SVr4.
-
-       X/Open documents only the operands  for  clear,  init  and
-       reset.   In this implementation, clear is part of the cap-
-       name support.  Other implementations of tput on SVr4-based
-       systems such as Solaris, IRIX64 and HPUX as well as others
-       such  as  AIX  and  Tru64  provide  support  for   capname
-       operands.  A few platforms such as FreeBSD and NetBSD rec-
-       ognize termcap names rather than terminfo capability names
-       in their respective tput commands.
-
-
-
-

SEE ALSO

-       clear(1), stty(1), tabs(1), terminfo(5).
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                                tput(1)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/tset.1.html b/deps/ncurses-5.9/doc/html/man/tset.1.html deleted file mode 100644 index 2b86f9f..0000000 --- a/deps/ncurses-5.9/doc/html/man/tset.1.html +++ /dev/null @@ -1,334 +0,0 @@ - - - - -tset 1 - - - - -

tset 1

-
-
-
-tset(1)                                                         tset(1)
-
-
-
-
-
-

NAME

-       tset, reset - terminal initialization
-
-
-
-

SYNOPSIS

-       tset  [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping]
-       [terminal]
-       reset [-IQVcqrsw] [-] [-e ch] [-i ch] [-k ch] [-m mapping]
-       [terminal]
-
-
-
-

DESCRIPTION

-       Tset  initializes  terminals.   Tset  first determines the
-       type of terminal that you are using.   This  determination
-       is done as follows, using the first terminal type found.
-
-       1. The terminal argument specified on the command line.
-
-       2. The value of the TERM environmental variable.
-
-       3.  (BSD  systems only.) The terminal type associated with
-       the standard error output device in  the  /etc/ttys  file.
-       (On  System-V-like  UNIXes  and systems using that conven-
-       tion, getty does this job by setting TERM according to the
-       type passed to it by /etc/inittab.)
-
-       4. The default terminal type, ``unknown''.
-
-       If  the  terminal  type  was not specified on the command-
-       line, the -m option mappings are  then  applied  (see  the
-       section  TERMINAL  TYPE  MAPPING  for  more  information).
-       Then, if the terminal type begins  with  a  question  mark
-       (``?''), the user is prompted for confirmation of the ter-
-       minal type.  An empty  response  confirms  the  type,  or,
-       another  type  can be entered to specify a new type.  Once
-       the terminal type has been determined, the terminfo  entry
-       for  the  terminal  is retrieved.  If no terminfo entry is
-       found for the type, the user is prompted for another  ter-
-       minal type.
-
-       Once  the  terminfo  entry  is retrieved, the window size,
-       backspace, interrupt and line kill characters (among  many
-       other things) are set and the terminal and tab initializa-
-       tion strings  are  sent  to  the  standard  error  output.
-       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 standard error output.
-       Use the -c or -w option to select only the  window  sizing
-       versus  the  other  initialization.   If neither option is
-       given, both are assumed.
-
-       When invoked as reset, tset sets cooked  and  echo  modes,
-       turns  off cbreak and raw modes, turns on newline transla-
-       tion and resets any  unset  special  characters  to  their
-       default  values  before  doing the terminal initialization
-       described above.  This is  useful  after  a  program  dies
-       leaving  a  terminal  in an abnormal state.  Note, you may
-       have to type
-
-           <LF>reset<LF>
-
-       (the line-feed character is normally control-J) to get the
-       terminal to work, as carriage-return may no longer work in
-       the abnormal state.  Also, the  terminal  will  often  not
-       echo the command.
-
-       The options are as follows:
-
-       -c   Set  control  characters and modes.  -e Set the erase
-            character to ch.
-
-       -I   Do  not  send  the  terminal  or  tab  initialization
-            strings to the terminal.
-
-       -i   Set the interrupt character to ch.
-
-       -k   Set the line kill character to ch.
-
-       -m   Specify  a  mapping  from  a port type to a terminal.
-            See the section TERMINAL TYPE MAPPING for more infor-
-            mation.
-
-       -Q   Do  not  display  any values for the erase, interrupt
-            and line kill characters.  Normally tset displays the
-            values  for  control characters which differ from the
-            system's default values.
-
-       -q   The terminal type is displayed to the  standard  out-
-            put,  and the terminal is not initialized in any way.
-            The option `-' by itself is equivalent but archaic.
-
-       -r   Print the terminal type to the standard error output.
-
-       -s   Print  the  sequence  of shell commands to initialize
-            the environment variable TERM to the standard output.
-            See  the section SETTING THE ENVIRONMENT for details.
-
-       -V   reports the version of ncurses which was used in this
-            program, and exits.
-
-       -w   Resize  the  window  to  match  the  size deduced via
-            setupterm.   Normally  this  has  no  effect,  unless
-            setupterm is not able to detect the window size.
-
-       The arguments for the -e, -i, and -k options may either be
-       entered as actual characters or by using the  `hat'  nota-
-       tion,  i.e.,  control-h  may  be  specified  as  ``^H'' or
-       ``^h''.
-
-
-
-

SETTING THE ENVIRONMENT

-       It is often desirable  to  enter  the  terminal  type  and
-       information  about  the  terminal's  capabilities into the
-       shell's environment.  This is done using the -s option.
-
-       When the -s option is specified, the commands to enter the
-       information  into  the  shell's environment are written to
-       the standard output.  If the SHELL environmental  variable
-       ends in ``csh'', the commands are for csh, otherwise, they
-       are for sh.  Note, the csh  commands  set  and  unset  the
-       shell  variable  noglob,  leaving it unset.  The following
-       line in the .login or .profile files will  initialize  the
-       environment correctly:
-
-           eval `tset -s options ... `
-
-
-
-

TERMINAL TYPE MAPPING

-       When the terminal is not hardwired into the system (or the
-       current system information is incorrect) the terminal type
-       derived  from the /etc/ttys file or the TERM environmental
-       variable is often something generic like network,  dialup,
-       or  unknown.   When tset is used in a startup script it is
-       often desirable to provide information about the  type  of
-       terminal used on such ports.
-
-       The  purpose  of  the -m option is to map from some set of
-       conditions to a terminal type, that is, to tell tset  ``If
-       I'm  on this port at a particular speed, guess that I'm on
-       that kind of terminal''.
-
-       The argument to the -m option consists of an optional port
-       type, an optional operator, an optional baud rate specifi-
-       cation, an optional colon (``:'') character and a terminal
-       type.   The port type is a string (delimited by either the
-       operator or the colon character).  The operator may be any
-       combination of ``>'', ``<'', ``@'', and ``!''; ``>'' means
-       greater than, ``<'' means less than, ``@'' means equal  to
-       and ``!'' inverts the sense of the test.  The baud rate is
-       specified as a number and is compared with  the  speed  of
-       the  standard  error  output  (which should be the control
-       terminal).  The terminal type is a string.
-
-       If the terminal type is not specified on the command line,
-       the  -m mappings are applied to the terminal type.  If the
-       port type and baud rate match the  mapping,  the  terminal
-       type  specified  in the mapping replaces the current type.
-       If more than one mapping is specified, the first  applica-
-       ble mapping is used.
-
-       For    example,    consider    the    following   mapping:
-       dialup>9600:vt100.  The port type is dialup , the operator
-       is  >, the baud rate specification is 9600, and the termi-
-       nal type is vt100.  The result of this mapping is to spec-
-       ify that if the terminal type is dialup, and the baud rate
-       is greater than 9600 baud, a terminal type of  vt100  will
-       be used.
-
-       If no baud rate is specified, the terminal type will match
-       any baud rate.  If no port type is specified, the terminal
-       type   will   match   any  port  type.   For  example,  -m
-       dialup:vt100  -m  :?xterm  will  cause  any  dialup  port,
-       regardless of baud rate, to match the terminal type vt100,
-       and any non-dialup port type to match  the  terminal  type
-       ?xterm.   Note,  because of the leading question mark, the
-       user will be queried on a default port as to whether  they
-       are actually using an xterm terminal.
-
-       No  whitespace  characters  are permitted in the -m option
-       argument.  Also, to avoid problems  with  meta-characters,
-       it  is  suggested  that  the  entire -m option argument be
-       placed within single quote characters, and that csh  users
-       insert  a  backslash character (``\'') before any exclama-
-       tion marks (``!'').
-
-
-
-

HISTORY

-       The tset command appeared in BSD 3.0.  The ncurses  imple-
-       mentation  was lightly adapted from the 4.4BSD sources for
-       a terminfo environment by Eric S. Raymond <esr@snark.thyr-
-       sus.com>.
-
-
-
-

COMPATIBILITY

-       The  tset  utility has been provided for backward-compati-
-       bility with BSD environments (under  most  modern  UNIXes,
-       /etc/inittab  and  getty(1) can set TERM appropriately for
-       each dial-up line; this  obviates  what  was  tset's  most
-       important  use).   This implementation behaves like 4.4BSD
-       tset, with a few exceptions specified here.
-
-       The -S option of BSD tset no longer works;  it  prints  an
-       error message to stderr and dies.  The -s option only sets
-       TERM, not TERMCAP.  Both these  changes  are  because  the
-       TERMCAP  variable  is  no longer supported under terminfo-
-       based ncurses, which makes tset -S useless (we made it die
-       noisily rather than silently induce lossage).
-
-       There  was  an  undocumented  4.4BSD feature that invoking
-       tset via a link named `TSET` (or via any other name begin-
-       ning  with  an  upper-case letter) set the terminal to use
-       upper-case only.  This feature has been omitted.
-
-       The -A, -E, -h, -u and -v options were  deleted  from  the
-       tset  utility  in 4.4BSD.  None of them were documented in
-       4.3BSD and all are of limited utility at  best.   The  -a,
-       -d, and -p options are similarly not documented or useful,
-       but were retained as they appear to be in widespread  use.
-       It  is  strongly recommended that any usage of these three
-       options be changed to use the -m option instead.   The  -n
-       option  remains, but has no effect.  The -adnp options are
-       therefore omitted from the usage summary above.
-
-       It is still permissible to specify  the  -e,  -i,  and  -k
-       options  without arguments, although it is strongly recom-
-       mended that such usage be fixed to explicitly specify  the
-       character.
-
-       As  of  4.4BSD,  executing tset as reset no longer implies
-       the -Q option.  Also, the interaction between the - option
-       and the terminal argument in some historic implementations
-       of tset has been removed.
-
-
-
-

ENVIRONMENT

-       The tset command uses these environment variables:
-
-       SHELL
-            tells tset whether to initialize TERM using sh or csh
-            syntax.
-
-       TERM Denotes  your  terminal  type.  Each terminal type is
-            distinct, though many are similar.
-
-       TERMCAP
-            may denote the location of a termcap database.  If it
-            is not an absolute pathname, e.g., begins with a `/',
-            tset removes the variable from the environment before
-            looking for the terminal description.
-
-
-
-

FILES

-       /etc/ttys
-            system  port  name  to terminal type mapping database
-            (BSD versions only).
-
-       /usr/share/terminfo
-            terminal capability database
-
-
-
-

SEE ALSO

-       csh(1), sh(1), stty(1),  curs_terminfo(3x),  tty(4),  ter-
-       minfo(5), ttys(5), environ(7)
-
-       This describes ncurses version 5.9 (patch 20110404).
-
-
-
-                                                                tset(1)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/man/wresize.3x.html b/deps/ncurses-5.9/doc/html/man/wresize.3x.html deleted file mode 100644 index dff5834..0000000 --- a/deps/ncurses-5.9/doc/html/man/wresize.3x.html +++ /dev/null @@ -1,108 +0,0 @@ - - - - -wresize 3x - - - - -

wresize 3x

-
-
-
-wresize(3x)                                                 wresize(3x)
-
-
-
-
-
-

NAME

-       wresize - resize a curses window
-
-
-
-

SYNOPSIS

-       #include <curses.h>
-
-       int wresize(WINDOW *win, int lines, int columns);
-
-
-
-

DESCRIPTION

-       This  is  an  extension to the curses library.  It reallo-
-       cates storage for an ncurses window to adjust  its  dimen-
-       sions  to  the  specified  values.  If either dimension is
-       larger than the  current  values,  the  window's  data  is
-       filled with blanks that have the current background rendi-
-       tion (as set by wbkgdset) merged into them.
-
-
-
-

RETURN VALUE

-       The function returns the integer ERR upon failure  and  OK
-       on success.  It will fail if either of the dimensions less
-       than or equal  to  zero,  or  if  an  error  occurs  while
-       (re)allocating memory for the window.
-
-
-
-

NOTES

-       The only restriction placed on the dimensions is that they
-       be greater than zero.  The dimensions are not compared  to
-       curses   screen   dimensions  to  simplify  the  logic  of
-       resizeterm.  The caller  must  ensure  that  the  window's
-       dimensions fit within the actual screen dimensions.
-
-
-
-

SEE ALSO

-       resizeterm(3x).
-
-
-
-

AUTHOR

-       Thomas Dickey (from an equivalent function written in 1988
-       for BSD curses).
-
-
-
-                                                            wresize(3x)
-
-
-
-Man(1) output converted with -man2html -
- - diff --git a/deps/ncurses-5.9/doc/html/ncurses-intro.html b/deps/ncurses-5.9/doc/html/ncurses-intro.html deleted file mode 100644 index fc529f2..0000000 --- a/deps/ncurses-5.9/doc/html/ncurses-intro.html +++ /dev/null @@ -1,2722 +0,0 @@ - - - - -Writing Programs with NCURSES - - - - - -

Writing Programs with NCURSES

- -
-by Eric S. Raymond and Zeyd M. Ben-Halim
-updates since release 1.9.9e by Thomas Dickey -
- -

Contents

- - -
-

Introduction

- -This document is an introduction to programming with curses. It is -not an exhaustive reference for the curses Application Programming Interface -(API); that role is filled by the curses manual pages. Rather, it -is intended to help C programmers ease into using the package.

- -This document is aimed at C applications programmers not yet specifically -familiar with ncurses. If you are already an experienced curses -programmer, you should nevertheless read the sections on -Mouse Interfacing, Debugging, -Compatibility with Older Versions, -and Hints, Tips, and Tricks. These will bring you up -to speed on the special features and quirks of the ncurses -implementation. If you are not so experienced, keep reading.

- -The curses 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. Curses uses terminfo, which -is a database format that can describe the capabilities of thousands of -different terminals.

- -The curses 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 xterm(1); the curses -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 curses -will typically be a great deal simpler and less expensive than one using an -X toolkit. - -

A Brief History of Curses

- -Historically, the first ancestor of curses was the routines written to -provide screen-handling for the game rogue; these used the -already-existing termcap database facility for describing terminal -capabilities. These routines were abstracted into a documented library and -first released with the early BSD UNIX versions.

- -System III UNIX from Bell Labs featured a rewritten and much-improved -curses library. It introduced the terminfo format. 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, curses evolved to use more facilities and offer -more capabilities, going far beyond BSD curses in power and flexibility. - -

Scope of This Document

- -This document describes ncurses, a free implementation of -the System V curses API with some clearly marked extensions. -It includes the following System V curses features: -
    -
  • Support for multiple screen highlights (BSD curses could only -handle one `standout' highlight, usually reverse-video). -
  • Support for line- and box-drawing using forms characters. -
  • Recognition of function keys on input. -
  • Color support. -
  • Support for pads (windows of larger than screen size on which the -screen or a subwindow defines a viewport). -
- -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.

- -The ncurses 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.

- -The ncurses package was originated by Pavel Curtis. The original -maintainer of this package is -Zeyd Ben-Halim -<zmbenhal@netcom.com>. -Eric S. Raymond -<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 -Ada95 binding. -Ongoing work is being done by -Thomas Dickey (maintainer). -Contact the current maintainers at -bug-ncurses@gnu.org. -

- -This document also describes the panels 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).

- -Finally, this document describes in detail the menus and forms extension libraries, also cloned from System V, -which support easy construction and sequences of menus and fill-in -forms. - - -

Terminology

- -In this document, the following terminology is used with reasonable -consistency: - -
-
window -
-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. -
screens -
-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, stdscr, is automatically provided for the programmer. -
terminal screen -
-The package's idea of what the terminal display currently looks like, i.e., -what the user sees now. This is a special screen. -
- -

The Curses Library

- -

An Overview of Curses

- -

Compiling Programs using Curses

- -In order to use the library, it is necessary to have certain types and -variables defined. Therefore, the programmer must have a line: - -
-	  #include <curses.h>
-
- -at the top of the program source. The screen package uses the Standard I/O -library, so <curses.h> includes -<stdio.h>. <curses.h> also includes -<termios.h>, <termio.h>, or -<sgtty.h> depending on your system. It is redundant (but -harmless) for the programmer to do these includes, too. In linking with -curses you need to have -lncurses in your LDFLAGS or on the -command line. There is no need for any other libraries. - -

Updating the Screen

- -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 curscr, for current screen) is a -screen image of what the terminal currently looks like. Another screen (called -stdscr, for standard screen) is provided by default to make changes -on.

- -A window is a purely internal representation. It is used to build and store a -potential image of a portion of the terminal. It doesn't bear any necessary -relation to what is really on the terminal screen; it's more like a -scratchpad or write buffer.

- -To make the section of physical screen corresponding to a window reflect the -contents of the window structure, the routine refresh() (or -wrefresh() if the window is not stdscr) is called.

- -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. - -

Standard Windows and Function Naming Conventions

- -As hinted above, the routines can use several windows, but two are -automatically given: curscr, which knows what the terminal looks like, -and stdscr, which is what the programmer wants the terminal to look -like next. The user should never actually access curscr directly. -Changes should be made to through the API, and then the routine -refresh() (or wrefresh()) called.

- -Many functions are defined to use stdscr as a default screen. For -example, to add a character to stdscr, one calls addch() with -the desired character as argument. To write to a different window. use the -routine waddch() (for `w'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.

- -In order to move the current (y, x) coordinates from one point to another, the -routines move() and wmove() 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 - -

-	  move(y, x);
-	  addch(ch);
-
- -can be replaced by - -
-	  mvaddch(y, x, ch);
-
- -and - -
-	  wmove(win, y, x);
-	  waddch(win, ch);
-
- -can be replaced by - -
-	  mvwaddch(win, y, x, ch);
-
- -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. - -

Variables

- -The curses library sets some variables describing the terminal -capabilities. - -
-      type   name      description
-      ------------------------------------------------------------------
-      int    LINES     number of lines on the terminal
-      int    COLS      number of columns on the terminal
-
- -The curses.h also introduces some #define constants and types -of general usefulness: - -
-
bool -
boolean type, actually a `char' (e.g., bool doneit;) -
TRUE -
boolean `true' flag (1). -
FALSE -
boolean `false' flag (0). -
ERR -
error flag returned by routines on a failure (-1). -
OK -
error flag returned by routines when things go right. -
- -

Using the Library

- -Now we describe how to actually use the screen package. In it, we assume all -updating, reading, etc. is applied to stdscr. These instructions will -work on any window, providing you change the function names and parameters as -mentioned above.

- -Here is a sample program to motivate the discussion: - -

-#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're done */
-}
-
-static void finish(int sig)
-{
-    endwin();
-
-    /* do your non-curses wrapup here */
-
-    exit(0);
-}
-
- -

Starting up

- -In order to use the screen package, the routines must know about terminal -characteristics, and the space for curscr and stdscr must be -allocated. These function initscr() 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, initscr() will terminate -the program with an error message. initscr() 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 curscr or stdscr 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 nl() and cbreak() should be called -after initscr().

- -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 -scrollok(). If you want the cursor to be left in place after -the last change, use leaveok(). If this isn't done, -refresh() will move the cursor to the window's current (y, x) -coordinates after updating it.

- -You can create new windows of your own using the functions newwin(), -derwin(), and subwin(). The routine delwin() will -allow you to get rid of old windows. All the options described above can be -applied to any window. - -

Output

- -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 -addch() and move(). addch() adds a character at the -current (y, x) coordinates. move() changes the current (y, x) -coordinates to whatever you want them to be. It returns ERR if you -try to move off the window. As mentioned above, you can combine the two into -mvaddch() to do both things at once.

- -The other output functions, such as addstr() and printw(), -all call addch() to add characters to the window.

- -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 -refresh(). In order to optimize finding changes, refresh() -assumes that any part of the window not changed since the last -refresh() 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 touchwin() is provided -to make it look like the entire window has been changed, thus making -refresh() check the whole subsection of the terminal for changes.

- -If you call wrefresh() with curscr as its argument, it will -make the screen look like curscr thinks it looks like. This is useful -for implementing a command which would redraw the screen in case it get messed -up. - -

Input

- -The complementary function to addch() is getch() which, if -echo is set, will call addch() 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 getch(); otherwise, -the program's output will be unpredictable.

- -When you need to accept line-oriented input in a window, the functions -wgetstr() and friends are available. There is even a wscanw() -function that can do scanf()(3)-style multi-field parsing on window -input. These pseudo-line-oriented functions turn on echoing while they -execute.

- -The example code above uses the call keypad(stdscr, TRUE) to enable -support for function-key mapping. With this feature, the getch() code -watches the input stream for character sequences that correspond to arrow and -function keys. These sequences are returned as pseudo-character values. The -#define values returned are listed in the curses.h The -mapping from sequences to #define values is determined by -key_ capabilities in the terminal's terminfo entry. - -

Using Forms Characters

- -The addch() function (and some others, including box() and -border()) can accept some pseudo-character arguments which are specially -defined by ncurses. These are #define values set up in -the curses.h header; see there for a complete list (look for -the prefix ACS_).

- -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, curses.h will map them to a -recognizable (though ugly) set of ASCII defaults. - -

Character Attributes and Color

- -The ncurses package supports screen highlights including standout, -reverse-video, underline, and blink. It also supports color, which is treated -as another kind of highlight.

- -Highlights are encoded, internally, as high bits of the pseudo-character type -(chtype) that curses.h uses to represent the contents of a -screen cell. See the curses.h header file for a complete list of -highlight mask values (look for the prefix A_).

- -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 addch() call, -or any other output call that takes a chtype argument.

- -The other is to set the current-highlight value. This is logical-or'ed with -any highlight you specify the first way. You do this with the functions -attron(), attroff(), and attrset(); 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 init_pair() values.

- -Once you've done an init_pair() that creates color-pair N, you can -use COLOR_PAIR(N) as a highlight that invokes that particular -color combination. Note that COLOR_PAIR(N), for constant N, -is itself a compile-time constant and can be used in initializers. - -

Mouse Interfacing

- -The ncurses library also provides a mouse interface. - -
-NOTE: this facility is specific to ncurses, 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. -
- -Presently, mouse event reporting works in the following environments: -
    -
  • xterm and similar programs such as rxvt. -
  • Linux console, when configured with gpm(1), Alessandro -Rubini's mouse server. -
  • FreeBSD sysmouse (console) -
  • OS/2 EMX -
-

-The mouse interface is very simple. To activate it, you use the function -mousemask(), 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.

- -Once the mouse is active, your application's command loop should watch -for a return value of KEY_MOUSE from wgetch(). When -you see this, a mouse event report has been queued. To pick it off -the queue, use the function getmouse() (you must do this before -the next wgetch(), otherwise another mouse event might come -in and make the first one inaccessible).

- -Each call to getmouse() fills a structure (the address of which you'll -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.

- -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.

- -The class of visible events may be changed at any time via mousemask(). -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 don't 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.

- -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.

- -Because mouse event reporting will not be available in all -environments, it would be unwise to build ncurses -applications that require 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 -ncurses distribution (bs and knight) contain -code that illustrates how this can be done.

- -See the manual page curs_mouse(3X) for full details of the -mouse-interface functions. - -

Finishing Up

- -In order to clean up after the ncurses routines, the routine -endwin() is provided. It restores tty modes to what they were when -initscr() was first called, and moves the cursor down to the -lower-left corner. Thus, anytime after the call to initscr, endwin() -should be called before exiting. - -

Function Descriptions

- -We describe the detailed behavior of some important curses functions here, as a -supplement to the manual page descriptions. - -

Initialization and Wrapup

- -
-
initscr() -
The first function called should almost always be initscr(). -This will determine the terminal type and -initialize curses data structures. initscr() also arranges that -the first call to refresh() 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 (slk_init(), filter(), -ripoffline(), use_env(), and, if you are using multiple -terminals, newterm().) -
endwin() -
Your program should always call endwin() 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 refresh() -or doupdate() after a temporary escape from the program will -restore the ncurses screen from before the escape. -
newterm(type, ofp, ifp) -
A program which outputs to more than one terminal should use -newterm() instead of initscr(). newterm() should -be called once for each terminal. It returns a variable of type -SCREEN * which should be saved as a reference to that -terminal. -(NOTE: a SCREEN variable is not a screen 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 -FILE pointers for the output and input of the terminal. If -type is NULL then the environment variable $TERM is used. -endwin() should called once at wrapup time for each terminal -opened using this function. -
set_term(new) -
This function is used to switch to a different terminal previously -opened by newterm(). 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. -
delscreen(sp) -
The inverse of newterm(); deallocates the data structures -associated with a given SCREEN reference. -
- -

Causing Output to the Terminal

- -
-
refresh() and wrefresh(win) -
These functions must be called to actually get any output on -the terminal, as other routines merely manipulate data -structures. wrefresh() copies the named window to the physical -terminal screen, taking into account what is already -there in order to do optimizations. refresh() does a -refresh of stdscr. Unless leaveok() has been -enabled, the physical cursor of the terminal is left at the -location of the window's cursor. -
doupdate() and wnoutrefresh(win) -
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 -(wnoutrefresh()), and then calling the routine to update the -screen (doupdate()). If the programmer wishes to output -several windows at once, a series of calls to wrefresh will result -in alternating calls to wnoutrefresh() and doupdate(), -causing several bursts of output to the screen. By calling -wnoutrefresh() for each window, it is then possible to call -doupdate() once, resulting in only one burst of output, with -fewer total characters transmitted (this also avoids a visually annoying -flicker at each update). -
- -

Low-Level Capability Access

- -
-
setupterm(term, filenum, errret) -
This routine is called to initialize a terminal's description, without setting -up the curses screen structures or changing the tty-driver mode bits. -term is the character string representing the name of the terminal -being used. filenum is the UNIX file descriptor of the terminal to -be used for output. errret 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).

- -The value of term can be given as NULL, which will cause the value of -TERM in the environment to be used. The errret pointer can -also be given as NULL, meaning no error code is wanted. If errret is -defaulted, and something goes wrong, setupterm() 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.

- -After the call to setupterm(), the global variable cur_term is -set to point to the current structure of terminal capabilities. By calling -setupterm() for each terminal, and saving and restoring -cur_term, it is possible for a program to use two or more terminals at -once. Setupterm() also stores the names section of the terminal -description in the global character array ttytype[]. Subsequent calls -to setupterm() will overwrite this array, so you'll have to save it -yourself if need be. -

- -

Debugging

- - -
-NOTE: These functions are not part of the standard curses API! -
- -
-
trace() -
-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 TRACE_ defines -in the curses.h file for details. (It is also possible to set -a trace level by assigning a trace level value to the environment variable -NCURSES_TRACE). -
_tracef() -
-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 -printf(), only it outputs a newline after the end of arguments. -The output goes to a file called trace in the current directory. -
- -Trace logs can be difficult to interpret due to the sheer volume of -data dumped in them. There is a script called tracemunch -included with the ncurses 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. - -

Hints, Tips, and Tricks

- -The ncurses 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. - -

Some Notes of Caution

- -If you find yourself thinking you need to use noraw() or -nocbreak(), think again and move carefully. It's probably -better design to use getstr() or one of its relatives to -simulate cooked mode. The noraw() and nocbreak() -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.

- -Bear in mind that refresh() is a synonym for wrefresh(stdscr). -Don't try to mix use of stdscr with use of windows declared -by newwin(); a refresh() call will blow them off the -screen. The right way to handle this is to use subwin(), or -not touch stdscr at all and tile your screen with declared -windows which you then wnoutrefresh() somewhere in your program -event loop, with a single doupdate() call to trigger actual -repainting.

- -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 ncurses library is not yet an exception to this -rule.

- -There is a panels library included in the ncurses -distribution that does a pretty good job of strengthening the -overlapping-windows facilities.

- -Try to avoid using the global variables LINES and COLS. Use -getmaxyx() on the stdscr 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. - -

Temporarily Leaving NCURSES Mode

- -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 ncurses.

- -To leave ncurses mode, call endwin() 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 -ncurses mode, simply call refresh() or doupdate(). -This will repaint the screen.

- -There is a boolean function, isendwin(), which code can use to -test whether ncurses screen mode is active. It returns TRUE -in the interval between an endwin() call and the following -refresh(), FALSE otherwise.

- -Here is some sample code for shellout: - -

-    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 */
-
- -

Using NCURSES under XTERM

- -A resize operation in X sends SIGWINCH to the application running -under xterm. - -The easiest way to handle SIGWINCH -is to do an endwin, -followed by an refresh and a screen repaint you code -yourself. -The refresh will pick up the new screen size from the -xterm's environment.

- -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. -Ncurses provides an extension which works better, the -resizeterm function. That function ensures that all windows -are limited to the new screen dimensions, and pads stdscr -with blanks if the screen is larger.

- -The ncurses library provides a SIGWINCH signal handler, -which pushes a KEY_RESIZE via the wgetch() calls. -When ncurses returns that code, -it calls resizeterm -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 -KEY_RESIZE yourself. - -

Handling Multiple Terminal Screens

- -The initscr() function actually calls a function named -newterm() to do most of its work. If you are writing a program that -opens multiple terminals, use newterm() directly.

- -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 stdscr will be -set to the last one allocated. You will switch between screens with the -set_term call. Note that you will also have to call -def_shell_mode and def_prog_mode on each tty yourself. - -

Testing for Terminal Capabilities

- -Sometimes you may want to write programs that test for the presence of various -capabilities before deciding whether to go into ncurses mode. An easy -way to do this is to call setupterm(), then use the functions -tigetflag(), tigetnum(), and tigetstr() to do your -testing.

- -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 tigetstr("cup") is non-NULL. Alternatively, -you can include the term.h file and test the value of the -macro cursor_address. - -

Tuning for Speed

- -Use the addchstr() family of functions for fast -screen-painting of text when you know the text doesn't contain any -control characters. Try to make attribute changes infrequent on your -screens. Don't use the immedok() option! - -

Special Features of NCURSES

- -The wresize() function allows you to resize a window in place. -The associated resizeterm() function simplifies the construction -of SIGWINCH handlers, for resizing all windows.

- -The define_key() function allows you -to define at runtime function-key control sequences which are not in the -terminal description. -The keyok() function allows you to temporarily -enable or disable interpretation of any function-key control sequence.

- -The use_default_colors() 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.

- -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. - -

Compatibility with Older Versions

- -Despite our best efforts, there are some differences between ncurses -and the (undocumented!) behavior of older curses implementations. These arise -from ambiguities or omissions in the documentation of the API. - -

Refresh of Overlapping Windows

- -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 -curses versions were often not documented precisely.

- -To understand why this is a problem, remember that screen updates are -calculated between two representations of the entire 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.

- -What happens to the overlapping region depends on what wnoutrefresh() -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 -wtouchln() and friends). Some implementations do "entire copy", -copying all window locations to the virtual screen whether or not -they have changed.

- -The ncurses 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.

- -For most commercial curses implementations, it is not documented and not known -for sure (at least not to the ncurses 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's 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.

- -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 touchwin() before the wnoutrefresh() call to -guarantee an entire-contents copy anywhere.

- -The really clean way to handle this is to use the panels library. If, -when you want a screen update, you do update_panels(), it will -do all the necessary wnoutrefresh() calls for whatever panel -stacking order you have defined. Then you can do one doupdate() -and there will be a single burst of physical I/O that will do -all your updates. - -

Background Erase

- -If you have been using a very old versions of ncurses (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 wattrset(), wattron(), -wattroff() and friends).

- -In newer versions, this is not so. Instead, the attribute of erased blanks -is normal unless and until it is modified by the functions bkgdset() -or wbkgdset().

- -This change in behavior conforms ncurses to System V Release 4 and -the XSI Curses standard. - -

XSI Curses Conformance

- -The ncurses 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.

- -One effect of XSI conformance is the change in behavior described under -"Background Erase -- Compatibility with Old Versions".

- -Also, ncurses meets the XSI requirement that every macro -entry point have a corresponding function which may be linked (and -will be prototype-checked) if the macro definition is disabled with -#undef. - -

The Panels Library

- -The ncurses 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 -wnoutrefresh() calls followed by a doupdate(), 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.

- -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.

- -The panel library first appeared in AT&T System V. The -version documented here is the panel code distributed -with ncurses. - -

Compiling With the Panels Library

- -Your panels-using modules must import the panels library declarations with - -
-	  #include <panel.h>
-
- -and must be linked explicitly with the panels library using an --lpanel argument. Note that they must also link the -ncurses library with -lncurses. Many linkers -are two-pass and will accept either order, but it is still good practice -to put -lpanel first and -lncurses second. - -

Overview of Panels

- -A panel object is a window that is implicitly treated as part of a -deck including all other panel objects. The deck has an implicit -bottom-to-top visibility order. The panels library includes an update -function (analogous to refresh()) that displays all panels in the -deck in the proper order to resolve overlaps. The standard window, -stdscr, is considered below all panels.

- -Details on the panels functions are available in the man pages. We'll just -hit the highlights here.

- -You create a panel from a window by calling new_panel() on a -window pointer. It then becomes the top of the deck. The panel's window -is available as the value of panel_window() called with the -panel pointer as argument.

- -You can delete a panel (removing it from the deck) with del_panel. -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 -replace_window. The new window may be of different size; -the panel code will re-compute all overlaps. This operation doesn't -change the panel's position in the deck.

- -To move a panel's window, use move_panel(). The -mvwin() function on the panel's window isn't sufficient because it -doesn't update the panels library's representation of where the windows are. -This operation leaves the panel's depth, contents, and size unchanged.

- -Two functions (top_panel(), bottom_panel()) 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.

- -The function update_panels() does all the -wnoutrefresh() calls needed to prepare for -doupdate() (which you must call yourself, afterwards).

- -Typically, you will want to call update_panels() and -doupdate() just before accepting command input, once in each cycle -of interaction with the user. If you call update_panels() after -each and every panel write, you'll generate a lot of unnecessary refresh -activity and screen flicker. - -

Panels, Input, and the Standard Screen

- -You shouldn't mix wnoutrefresh() or wrefresh() -operations with panels code; this will work only if the argument window -is either in the top panel or unobscured by any other panels.

- -The stsdcr window is a special case. It is considered below all -panels. Because changes to panels may obscure parts of stdscr, -though, you should call update_panels() before -doupdate() even when you only change stdscr.

- -Note that wgetch automatically calls wrefresh. -Therefore, before requesting input from a panel window, you need to be sure -that the panel is totally unobscured.

- -There is presently no way to display changes to one obscured panel without -repainting all panels. - -

Hiding Panels

- -It's possible to remove a panel from the deck temporarily; use -hide_panel for this. Use show_panel() to render it -visible again. The predicate function panel_hidden -tests whether or not a panel is hidden.

- -The panel_update code ignores hidden panels. You cannot do -top_panel() or bottom_panel on a hidden panel(). -Other panels operations are applicable. - -

Miscellaneous Other Facilities

- -It's possible to navigate the deck using the functions -panel_above() and panel_below. Handed a panel -pointer, they return the panel above or below that panel. Handed -NULL, they return the bottom-most or top-most panel.

- -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 set_panel_userptr() and panel_userptr for -details. - -

The Menu Library

- -A menu is a screen display that assists the user to choose some subset -of a given set of items. The menu library is a curses -extension that supports easy programming of menu hierarchies with a -uniform but flexible interface.

- -The menu library first appeared in AT&T System V. The -version documented here is the menu code distributed -with ncurses. - -

Compiling With the menu Library

- -Your menu-using modules must import the menu library declarations with - -
-	  #include <menu.h>
-
- -and must be linked explicitly with the menus library using an --lmenu argument. Note that they must also link the -ncurses library with -lncurses. Many linkers -are two-pass and will accept either order, but it is still good practice -to put -lmenu first and -lncurses second. - -

Overview of Menus

- -The menus created by this library consist of collections of -items 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.

- -The menu can then by posted, 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.

- -A menu may also be unposted (that is, undisplayed), and finally -freed to make the storage associated with it and its items available for -re-use.

- -The general flow of control of a menu program looks like this: - -

    -
  1. Initialize curses. -
  2. Create the menu items, using new_item(). -
  3. Create the menu using new_menu(). -
  4. Post the menu using post_menu(). -
  5. Refresh the screen. -
  6. Process user requests via an input loop. -
  7. Unpost the menu using unpost_menu(). -
  8. Free the menu, using free_menu(). -
  9. Free the items using free_item(). -
  10. Terminate curses. -
- -

Selecting items

- -Menus may be multi-valued or (the default) single-valued (see the manual -page menu_opts(3x) to see how to change the default). -Both types always have a current item.

- -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 item_value() -predicate function. Your menu-processing code can use the function -set_item_value() to flag the items in the select set.

- -Menu items can be made unselectable using set_item_opts() -or item_opts_off() with the O_SELECTABLE -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. - -

Menu Display

- -The menu library calculates a minimum display size for your window, based -on the following variables: - -
    -
  • The number and maximum length of the menu items -
  • Whether the O_ROWMAJOR option is enabled -
  • Whether display of descriptions is enabled -
  • Whatever menu format may have been set by the programmer -
  • The length of the menu mark string used for highlighting selected items -
- -The function set_menu_format() allows you to set the -maximum size of the viewport or menu page that will be used -to display menu items. You can retrieve any format associated with a -menu with menu_format(). The default format is rows=16, -columns=1.

- -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.

- -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.

-You can scroll it with requests to the menu driver, which will be described -in the section on menu input handling.

- -Each menu has a mark string used to visually tag selected items; -see the menu_mark(3x) manual page for details. The mark -string length also influences the menu page size.

- -The function scale_menu() 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 menu_attribs(3x) manual page. - -

Menu Windows

- -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.

- -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 -subwindow is where the current menu page is displayed.

- -By default, both windows are stdscr. You can set them with the -functions in menu_win(3x).

- -When you call post_menu(), you write the menu to its -subwindow. When you call unpost_menu(), you erase the -subwindow, However, neither of these actually modifies the screen. To -do that, call wrefresh() or some equivalent. - -

Processing Menu Input

- -The main loop of your menu-processing code should call -menu_driver() 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 menu_driver(). The menu command codes are -fully documented in menu_driver(3x).

- -The simplest group of command codes is REQ_NEXT_ITEM, -REQ_PREV_ITEM, REQ_FIRST_ITEM, -REQ_LAST_ITEM, REQ_UP_ITEM, -REQ_DOWN_ITEM, REQ_LEFT_ITEM, -REQ_RIGHT_ITEM. These change the currently selected -item. These requests may cause scrolling of the menu page if it only -partially displayed.

- -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 REQ_SCR_DLINE, -REQ_SCR_ULINE, REQ_SCR_DPAGE, and -REQ_SCR_UPAGE.

- -The REQ_TOGGLE_ITEM selects or deselects the current item. -It is for use in multi-valued menus; if you use it with O_ONEVALUE -on, you'll get an error return (E_REQUEST_DENIED).

- -Each menu has an associated pattern buffer. The -menu_driver() 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 menu_driver() returns -E_NO_MATCH.

- -Some requests change the pattern buffer directly: -REQ_CLEAR_PATTERN, REQ_BACK_PATTERN, -REQ_NEXT_MATCH, REQ_PREV_MATCH. The latter -two are useful when pattern buffer input matches more than one item -in a multi-valued menu.

- -Each successful scroll or item navigation request clears the pattern -buffer. It is also possible to set the pattern buffer explicitly -with set_menu_pattern().

- -Finally, menu driver requests above the constant MAX_COMMAND -are considered application-specific commands. The menu_driver() -code ignores them and returns E_UNKNOWN_COMMAND. - -

Miscellaneous Other Features

- -Various menu options can affect the processing and visual appearance -and input processing of menus. See menu_opts(3x) for -details.

- -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 -mitem_current(3x). - -If your application needs to change the menu subwindow cursor for -any reason, pos_menu_cursor() will restore it to the -correct location for continuing menu driver processing.

- -It is possible to set hooks to be called at menu initialization and -wrapup time, and whenever the selected item changes. See -menu_hook(3x).

- -Each item, and each menu, has an associated user pointer on which you -can hang application data. See mitem_userptr(3x) and -menu_userptr(3x). - -

The Forms Library

- -The form library is a curses extension that supports easy -programming of on-screen forms for data entry and program control.

- -The form library first appeared in AT&T System V. The -version documented here is the form code distributed -with ncurses. - -

Compiling With the form Library

- -Your form-using modules must import the form library declarations with - -
-	  #include <form.h>
-
- -and must be linked explicitly with the forms library using an --lform argument. Note that they must also link the -ncurses library with -lncurses. Many linkers -are two-pass and will accept either order, but it is still good practice -to put -lform first and -lncurses second. - -

Overview of Forms

- -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.

-To make forms, you create groups of fields and connect them with form -frame objects; the form library makes this relatively simple.

- -Once defined, a form can be posted, 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.

- -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 curses - -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.

- -Once its transaction is completed (or aborted), a form may be -unposted (that is, undisplayed), and finally freed to make -the storage associated with it and its items available for re-use.

- -The general flow of control of a form program looks like this: - -

    -
  1. Initialize curses. -
  2. Create the form fields, using new_field(). -
  3. Create the form using new_form(). -
  4. Post the form using post_form(). -
  5. Refresh the screen. -
  6. Process user requests via an input loop. -
  7. Unpost the form using unpost_form(). -
  8. Free the form, using free_form(). -
  9. Free the fields using free_field(). -
  10. Terminate curses. -
- -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 menu library -wherever possible.

- -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. - -

Creating and Freeing Fields and Forms

- -The basic function for creating fields is new_field(): - -
-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 */
-
- -Menu items always occupy a single row, but forms fields may have -multiple rows. So new_field() requires you to specify a -width and height (the first two arguments, which mist both be greater -than zero).

- -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 stdscr by default but -need not be stdscr if you've done an explicit -set_form_win() call.

- -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 offscreen argument was initially zero.

- -The forms library allocates one working buffer per field; the size of -each buffer is ((height + offscreen)*width + 1, 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. - -

-FIELD *dup_field(FIELD *field,            /* field to copy */
-                 int top, int left);      /* location of new copy */
-
- -The function dup_field() duplicates an existing field at a -new location. Size and buffering information are copied; some -attribute flags and status bits are not (see the -form_field_new(3X) for details). - -
-FIELD *link_field(FIELD *field,           /* field to copy */
-                  int top, int left);     /* location of new copy */
-
- -The function link_field() also duplicates an existing field -at a new location. The difference from dup_field() is that -it arranges for the new field's buffer to be shared with the old one.

- -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.

- -As with duplicated fields, linked fields have attribute bits separate -from the original.

- -As you might guess, all these field-allocations return NULL if -the field allocation is not possible due to an out-of-memory error or -out-of-bounds arguments.

- -To connect fields to a form, use - -

-FORM *new_form(FIELD **fields);
-
- -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).

- -Note that new_field() does not 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.

- -The functions free_field() and free_form 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. - -

Fetching and Changing Field Attributes

- -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 O_STATIC 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.

- -When a field is created, the attributes not specified by the -new_field 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. - -

Fetching Size and Location Data

- -You can retrieve field sizes and locations through: - -
-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 */
-
- -This function is a sort of inverse of new_field(); instead of -setting size and location attributes of a new field, it fetches them -from an existing one. - -

Changing the Field Location

- -It is possible to move a field's location on the screen: - -
-int move_field(FIELD *field,              /* field to alter */
-               int top, int left);        /* new upper-left corner */
-
- -You can, of course. query the current location through field_info(). - -

The Justification Attribute

- -One-line fields may be unjustified, justified right, justified left, -or centered. Here is how you manipulate this attribute: - -
-int set_field_just(FIELD *field,          /* field to alter */
-                   int justmode);         /* mode to set */
-
-int field_just(FIELD *field);             /* fetch mode of field */
-
- -The mode values accepted and returned by this functions are -preprocessor macros NO_JUSTIFICATION, JUSTIFY_RIGHT, -JUSTIFY_LEFT, or JUSTIFY_CENTER. - -

Field Display Attributes

- -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.

- -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. - -

-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 */
-
- -The attributes set and returned by the first four functions are normal -curses(3x) display attribute values (A_STANDOUT, -A_BOLD, A_REVERSE etc). - -The page bit of a field controls whether it is displayed at the start of -a new form screen. - -

Field Option Bits

- -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: - -
-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 */
-
- -By default, all options are on. Here are the available option bits: -
-
O_VISIBLE -
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. -
O_ACTIVE -
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. -
O_PUBLIC -
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. -
O_EDIT -
Controls whether the field's data can be modified. When this option is -off, all editing requests except REQ_PREV_CHOICE and -REQ_NEXT_CHOICE will fail. Such read-only fields may be useful for -help messages. -
O_WRAP -
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. -
O_BLANK -
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). -
O_AUTOSKIP -
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. -
O_NULLOK -
Controls whether validation 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. -
O_PASSOK -
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. -
O_STATIC -
Controls whether the field is fixed to its initial dimensions. If you -turn this off, the field becomes dynamic and will -stretch to fit entered data. -
- -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.

- -The option values are bit-masks and can be composed with logical-or in -the obvious way. - -

Field Status

- -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: - -
-int set_field_status(FIELD *field,      /* field to alter */
-                   int status);         /* mode to set */
-
-int field_status(FIELD *field);         /* fetch mode of field */
-
- -Setting this flag under program control can be useful if you use the same -form repeatedly, looking for modified fields each time.

- -Calling field_status() on a field not currently selected -for input will return a correct value. Calling field_status() on a -field that is currently selected for input may not necessarily give a -correct field status value, because entered data isn't necessarily copied to -buffer zero before the exit validation check. - -To guarantee that the returned status value reflects reality, call -field_status() 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 REQ_VALIDATION request has been -processed by the forms driver. - -

Field User Pointer

- -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: - -
-int set_field_userptr(FIELD *field,       /* field to alter */
-                   char *userptr);        /* mode to set */
-
-char *field_userptr(FIELD *field);        /* fetch mode of field */
-
- -(Properly, this user pointer field ought to have (void *) type. -The (char *) type is retained for System V compatibility.)

- -It is valid to set the user pointer of the default field (with a -set_field_userptr() 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. - -

Variable-Sized Fields

- -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 -dynamic 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.

- -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.

- -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: - -

-int set_max_field(FIELD *field,     /* field to alter (may not be NULL) */
-                   int max_size);   /* upper limit on field size */
-
- -If the field is one-line, max_size 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.

- -The following properties of a field change when it becomes dynamic: - -

    -
  • If there is no growth limit, there is no final position of the field; -therefore O_AUTOSKIP and O_NL_OVERLOAD are ignored. -
  • Field justification will be ignored (though whatever justification is -set up will be retained internally and can be queried). -
  • The dup_field() and link_field() calls copy -dynamic-buffer sizes. If the O_STATIC option is set on one of a -collection of links, buffer resizing will occur only when the field is -edited through that link. -
  • The call field_info() will retrieve the original static size of -the field; use dynamic_field_info() to get the actual dynamic size. -
- -

Field Validation

- -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 doesn't -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.

- -A field's validation check (if any) is not called when -set_field_buffer() modifies the input buffer, nor when that buffer -is changed through a linked field.

- -The form 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: - -

-int set_field_type(FIELD *field,          /* field to alter */
-                   FIELDTYPE *ftype,      /* type to associate */
-                   ...);                  /* additional arguments*/
-
-FIELDTYPE *field_type(FIELD *field);      /* field to query */
-
- -The validation type of a field is considered an attribute of the field. As -with other field attributes, Also, doing set_field_type() with a -NULL field default will change the system default for validation of -newly-created fields.

- -Here are the pre-defined validation types: - -

TYPE_ALPHA

- -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: - -
-int set_field_type(FIELD *field,          /* field to alter */
-                   TYPE_ALPHA,            /* type to associate */
-                   int width);            /* maximum width of field */
-
- -The width argument sets a minimum width of data. Typically -you'll want to set this to the field width; if it's greater than the -field width, the validation check will always fail. A minimum width -of zero makes field completion optional. - -

TYPE_ALNUM

- -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: - -
-int set_field_type(FIELD *field,          /* field to alter */
-                   TYPE_ALNUM,            /* type to associate */
-                   int width);            /* maximum width of field */
-
- -The width argument sets a minimum width of data. As with -TYPE_ALPHA, typically you'll want to set this to the field width; if it's -greater than the field width, the validation check will always fail. A -minimum width of zero makes field completion optional. - -

TYPE_ENUM

- -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: - -
-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? */
-
- -The valuelist parameter must point at a NULL-terminated list of -valid strings. The checkcase argument, if true, makes comparison -with the string case-sensitive.

- -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.

- -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 checkunique argument, if true, requires prefix -matches to be unique in order to be valid.

- -The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests -can be particularly useful with these fields. - -

TYPE_INTEGER

- -This field type accepts an integer. It is set up as follows: - -
-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 */
-
- -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.

- -If the value passes its range check, it is padded with as many leading -zero digits as necessary to meet the padding argument.

- -A TYPE_INTEGER value buffer can conveniently be interpreted -with the C library function atoi(3). - -

TYPE_NUMERIC

- -This field type accepts a decimal number. It is set up as follows: - -
-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 */
-
- -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.

- -If the value passes its range check, it is padded with as many trailing -zero digits as necessary to meet the padding argument.

- -A TYPE_NUMERIC value buffer can conveniently be interpreted -with the C library function atof(3). - -

TYPE_REGEXP

- -This field type accepts data matching a regular expression. It is set up -as follows: - -
-int set_field_type(FIELD *field,          /* field to alter */
-                   TYPE_REGEXP,           /* type to associate */
-                   char *regexp);         /* expression to match */
-
- -The syntax for regular expressions is that of regcomp(3). -The check for regular-expression match is performed on exit. - -

Direct Field Buffer Manipulation

- -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: - -
-char *field_buffer(FIELD *field,          /* field to query */
-                   int bufindex);         /* number of buffer to query */
-
- -Normally, the state of the zero-numbered buffer for each field is set by -the user's editing actions on that field. It's sometimes useful to be able -to set the value of the zero-numbered (or some other) buffer from your -application: - -
-int set_field_buffer(FIELD *field,        /* field to alter */
-                   int bufindex,          /* number of buffer to alter */
-                   char *value);          /* string value to set */
-
- -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.

- -Calling field_buffer() with a null field pointer will raise an -error. Calling field_buffer() on a field not currently selected -for input will return a correct value. Calling field_buffer() on a -field that is currently selected for input may not necessarily give a -correct field buffer value, because entered data isn't necessarily copied to -buffer zero before the exit validation check. - -To guarantee that the returned buffer value reflects on-screen reality, -call field_buffer() 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 REQ_VALIDATION request has been processed -by the forms driver. - -

Attributes of Forms

- -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 NULL.

- -The principal attribute of a form is its field list. You can query -and change this list with: - -

-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 */
-
- -The second argument of set_form_fields() may be a -NULL-terminated field pointer array like the one required by -new_form(). 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.

- -It may also be null, in which case the old fields are disconnected -(and not freed) but no new ones are connected.

- -The field_count() function simply counts the number of fields -connected to a given from. It returns -1 if the form-pointer argument -is NULL. - -

Control of Form Display

- -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 -stdscr.

- -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 panels.

- -The two windows associated with each form have the same functions as -their analogues in the menu library. Both these -windows are painted when the form is posted and erased when the form -is unposted.

- -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.

- -In order to declare your own frame window for a form, you'll need to -know the size of the form's bounding rectangle. You can get this -information with: - -

-int scale_form(FORM *form,                /* form to query */
-               int *rows,                 /* form rows */
-               int *cols);                /* form cols */
-
- -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: - -
-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 */
-
- -Note that curses operations, including refresh(), on the form, -should be done on the frame window, not the form subwindow.

- -It is possible to check from your application whether all of a -scrollable field is actually displayed within the menu subwindow. Use -these functions: - -

-int data_ahead(FORM *form);               /* form to be queried */
-
-int data_behind(FORM *form);              /* form to be queried */
-
- -The function data_ahead() 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.

- -The function data_behind() returns TRUE if the first (upper -left hand) character position is off-screen (not being displayed).

- -Finally, there is a function to restore the form window's cursor to the -value expected by the forms driver: - -

-int pos_form_cursor(FORM *)               /* form to be queried */
-
- -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. - -

Input Processing in the Forms Driver

- -The function form_driver() handles virtualized input requests -for form navigation, editing, and validation requests, just as -menu_driver does for menus (see the section on menu input handling). - -
-int form_driver(FORM *form,               /* form to pass input to */
-                int request);             /* form request code */
-
- -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.

- -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. - -

Page Navigation Requests

- -These requests cause page-level moves through the form, -triggering display of a new form screen. - -
-
REQ_NEXT_PAGE -
Move to the next form page. -
REQ_PREV_PAGE -
Move to the previous form page. -
REQ_FIRST_PAGE -
Move to the first form page. -
REQ_LAST_PAGE -
Move to the last form page. -
- -These requests treat the list as cyclic; that is, REQ_NEXT_PAGE -from the last page goes to the first, and REQ_PREV_PAGE from -the first page goes to the last. - -

Inter-Field Navigation Requests

- -These requests handle navigation between fields on the same page. - -
-
REQ_NEXT_FIELD -
Move to next field. -
REQ_PREV_FIELD -
Move to previous field. -
REQ_FIRST_FIELD -
Move to the first field. -
REQ_LAST_FIELD -
Move to the last field. -
REQ_SNEXT_FIELD -
Move to sorted next field. -
REQ_SPREV_FIELD -
Move to sorted previous field. -
REQ_SFIRST_FIELD -
Move to the sorted first field. -
REQ_SLAST_FIELD -
Move to the sorted last field. -
REQ_LEFT_FIELD -
Move left to field. -
REQ_RIGHT_FIELD -
Move right to field. -
REQ_UP_FIELD -
Move up to field. -
REQ_DOWN_FIELD -
Move down to field. -
- -These requests treat the list of fields on a page as cyclic; that is, -REQ_NEXT_FIELD from the last field goes to the first, and -REQ_PREV_FIELD from the first field goes to the last. The -order of the fields for these (and the REQ_FIRST_FIELD and -REQ_LAST_FIELD requests) is simply the order of the field -pointers in the form array (as set up by new_form() or -set_form_fields()

- -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.

- -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.

- -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 REQ_MOVE_RIGHT from A will -go to B only if A, B, and C all share the same first line; -otherwise it will skip over B to C. - -

Intra-Field Navigation Requests

- -These requests drive movement of the edit cursor within the currently -selected field. - -
-
REQ_NEXT_CHAR -
Move to next character. -
REQ_PREV_CHAR -
Move to previous character. -
REQ_NEXT_LINE -
Move to next line. -
REQ_PREV_LINE -
Move to previous line. -
REQ_NEXT_WORD -
Move to next word. -
REQ_PREV_WORD -
Move to previous word. -
REQ_BEG_FIELD -
Move to beginning of field. -
REQ_END_FIELD -
Move to end of field. -
REQ_BEG_LINE -
Move to beginning of line. -
REQ_END_LINE -
Move to end of line. -
REQ_LEFT_CHAR -
Move left in field. -
REQ_RIGHT_CHAR -
Move right in field. -
REQ_UP_CHAR -
Move up in field. -
REQ_DOWN_CHAR -
Move down in field. -
- -Each word 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. - -

Scrolling Requests

- -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: - -
-
REQ_SCR_FLINE -
Scroll vertically forward a line. -
REQ_SCR_BLINE -
Scroll vertically backward a line. -
REQ_SCR_FPAGE -
Scroll vertically forward a page. -
REQ_SCR_BPAGE -
Scroll vertically backward a page. -
REQ_SCR_FHPAGE -
Scroll vertically forward half a page. -
REQ_SCR_BHPAGE -
Scroll vertically backward half a page. -
REQ_SCR_FCHAR -
Scroll horizontally forward a character. -
REQ_SCR_BCHAR -
Scroll horizontally backward a character. -
REQ_SCR_HFLINE -
Scroll horizontally one field width forward. -
REQ_SCR_HBLINE -
Scroll horizontally one field width backward. -
REQ_SCR_HFHALF -
Scroll horizontally one half field width forward. -
REQ_SCR_HBHALF -
Scroll horizontally one half field width backward. -
- -For scrolling purposes, a page of a field is the height -of its visible part. - -

Editing Requests

- -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.

- -The following requests support editing the field and changing the edit -mode: - -

-
REQ_INS_MODE -
Set insertion mode. -
REQ_OVL_MODE -
Set overlay mode. -
REQ_NEW_LINE -
New line request (see below for explanation). -
REQ_INS_CHAR -
Insert space at character location. -
REQ_INS_LINE -
Insert blank line at character location. -
REQ_DEL_CHAR -
Delete character at cursor. -
REQ_DEL_PREV -
Delete previous word at cursor. -
REQ_DEL_LINE -
Delete line at cursor. -
REQ_DEL_WORD -
Delete word at cursor. -
REQ_CLR_EOL -
Clear to end of line. -
REQ_CLR_EOF -
Clear to end of field. -
REQ_CLEAR_FIELD -
Clear entire field. -
- -The behavior of the REQ_NEW_LINE and REQ_DEL_PREV 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.

- -First, we consider REQ_NEW_LINE:

- -The normal behavior of REQ_NEW_LINE 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).

- -The normal behavior of REQ_NEW_LINE 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.

- -However, REQ_NEW_LINE at the beginning of a field, or on the -last line of a field, instead does a REQ_NEXT_FIELD. -O_NL_OVERLOAD option is off, this special action is -disabled.

- -Now, let us consider REQ_DEL_PREV:

- -The normal behavior of REQ_DEL_PREV 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).

- -However, REQ_DEL_PREV at the beginning of a field is instead -treated as a REQ_PREV_FIELD.

If the -O_BS_OVERLOAD option is off, this special action is -disabled and the forms driver just returns E_REQUEST_DENIED.

- -See Form Options for discussion of how to set -and clear the overload options. - -

Order Requests

- -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: - -
-
REQ_NEXT_CHOICE -
Place the successor value of the current value in the buffer. -
REQ_PREV_CHOICE -
Place the predecessor value of the current value in the buffer. -
- -Of the built-in field types, only TYPE_ENUM has built-in successor -and predecessor functions. When you define a field type of your own -(see Custom Validation Types), you can associate -our own ordering functions. - -

Application Commands

- -Form requests are represented as integers above the curses value -greater than KEY_MAX and less than or equal to the constant -MAX_COMMAND. If your input-virtualization routine returns a -value above MAX_COMMAND, the forms driver will ignore it. - -

Field Change Hooks

- -It is possible to set function hooks to be executed whenever the -current field or form changes. Here are the functions that support this: - -
-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 */
-
- -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. - -
-
form_init -
This hook is called when the form is posted; also, just after -each page change operation. -
field_init -
This hook is called when the form is posted; also, just after -each field change -
field_term -
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. -
form_term -
This hook is called when the form is unposted; also, just before -each page change operation. -
- -Calls to these hooks may be triggered -
    -
  1. When user editing requests are processed by the forms driver -
  2. When the current page is changed by set_current_field() call -
  3. When the current field is changed by a set_form_page() call -
- -See Field Change Commands for discussion of the latter -two cases.

- -You can set a default hook for all fields by passing one of the set functions -a NULL first argument.

- -You can disable any of these hooks by (re)setting them to NULL, the default -value. - -

Field Change Commands

- -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: - -
-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 */
-
- -The function field_index() returns the index of the given field -in the given form's field array (the array passed to new_form() or -set_form_fields()).

- -The initial current field of a form is the first active field on the -first page. The function set_form_fields() resets this.

- -It is also possible to move around by pages. - -

-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 */
-
- -The initial page of a newly-created form is 0. The function -set_form_fields() resets this. - -

Form Options

- -Like fields, forms may have control option bits. They can be changed -or queried with these functions: - -
-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 */
-
- -By default, all options are on. Here are the available option bits: - -
-
O_NL_OVERLOAD -
Enable overloading of REQ_NEW_LINE as described in Editing Requests. 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 -REQ_NEXT_FIELD never arise. -
O_BS_OVERLOAD -
Enable overloading of REQ_DEL_PREV as described in -Editing Requests. -
- -The option values are bit-masks and can be composed with logical-or in -the obvious way. - -

Custom Validation Types

- -The form library gives you the capability to define custom -validation types of your own. Further, the optional additional arguments -of set_field_type 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. - -

Union Types

- -The simplest way to create a custom data type is to compose it from two -preexisting ones: - -
-FIELD *link_fieldtype(FIELDTYPE *type1,
-                      FIELDTYPE *type2);
-
- -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 set_field_type() call later requires arguments, the new -composite type expects all arguments for the first type, than all arguments -for the second. Order functions (see Order Requests) -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. - -

New Field Types

- -To create a field type from scratch, you need to specify one or both of the -following things: - -
    -
  • A character-validation function, to check each character as it is entered. -
  • A field-validation function to be applied on exit from the field. -
- -Here's how you do that: -
-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 */
-
- -At least one of the arguments of new_fieldtype() 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.

- -The function free_fieldtype() deallocates the argument -fieldtype, freeing all storage associated with it.

- -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.

- -A character validator gets the character passed in as a first argument. -It too should return TRUE if the character is valid, FALSE otherwise. - -

Validation Function Arguments

- -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'll call a pile) built from any of the -field-type-specific arguments passed to set_field_type(). If -no such arguments are defined for the field type, this pile pointer -argument will be NULL.

- -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 set_field_type() argument, and -a pointer to the pile will be passed to the validation functions.

- -Here is how you make the association: - -

-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 */
-
- -Here is how the storage-management hooks are used: - -
-
make_str -
This function is called by set_field_type(). It gets one -argument, a va_list of the type-specific arguments passed to -set_field_type(). It is expected to return a pile pointer to a data -structure that encapsulates those arguments. -
copy_str -
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. -
free_str -
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. -
- -The make_str and copy_str 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. - -

Order Functions For Custom Types

- -Some custom field types are simply ordered in the same well-defined way -that TYPE_ENUM is. For such types, it is possible to define -successor and predecessor functions to support the REQ_NEXT_CHOICE -and REQ_PREV_CHOICE requests. Here's how: - -
-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 */
-
- -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 field_buffer() to read the -current value, and set_field_buffer() 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. - -

Avoiding Problems

- -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.

- -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 ncurses library has been specifically exempted from -the package copyright to support this.

- -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. - - diff --git a/deps/ncurses-5.9/edit_man.sh b/deps/ncurses-5.9/edit_man.sh deleted file mode 100755 index 3e63aaa..0000000 --- a/deps/ncurses-5.9/edit_man.sh +++ /dev/null @@ -1,186 +0,0 @@ -#! /bin/sh -# this script is generated by the configure-script CF_MAN_PAGES macro. - -prefix="/home/martino/avrdude-build-script/objdir" -datadir="${prefix}/share" - -NCURSES_MAJOR="5" -NCURSES_MINOR="9" -NCURSES_PATCH="20110404" - -NCURSES_OSPEED="short" -TERMINFO="/home/martino/avrdude-build-script/objdir/share/terminfo" - -INSTALL="/bin/install -c" -INSTALL_DATA="${INSTALL} -m 644" - -transform="s,x,x," - -TMP=${TMPDIR:=/tmp}/man$$ -trap "rm -f $TMP" 0 1 2 5 15 - -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 "no" = yes ; then - if test "no" = no ; then - sh $0 format $verb $mandir $srcdir $* - exit 0 - fi - fi - cf_subdir=$mandir/man - cf_tables=no -else - cf_subdir=$mandir/cat - cf_tables=yes -fi - -# process the list of source-files -for i in $* ; do -case $i in #(vi -*.orig|*.rej) ;; #(vi -*.[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 /home/martino/avrdude-build-script/ncurses-5.9/man_alias.sed ; then -cat >>/home/martino/avrdude-build-script/ncurses-5.9/man_alias.sed <<-CF_EOF2 - s,@DATADIR@,$datadir,g - s,@TERMINFO@,$TERMINFO,g - s,@NCURSES_MAJOR@,$NCURSES_MAJOR,g - s,@NCURSES_MINOR@,$NCURSES_MINOR,g - s,@NCURSES_PATCH@,$NCURSES_PATCH,g - s,@NCURSES_OSPEED@,$NCURSES_OSPEED,g -s,@CAPTOINFO@,captoinfo,g -s,@CLEAR@,clear,g -s,@INFOCMP@,infocmp,g -s,@INFOTOCAP@,infotocap,g -s,@TABS@,tabs,g -s,@TIC@,tic,g -s,@TOE@,toe,g -s,@TPUT@,tput,g -s,@TSET@,tset,g -CF_EOF2 - echo "...made /home/martino/avrdude-build-script/ncurses-5.9/man_alias.sed" - fi - - aliases= - cf_source=`basename $i` - inalias=$cf_source - test ! -f $inalias && inalias="$srcdir/$inalias" - if test ! -f $inalias ; then - echo .. skipped $cf_source - continue - fi - aliases=`sed -f $top_srcdir/man/manlinks.sed $inalias |sed -f /home/martino/avrdude-build-script/ncurses-5.9/man_alias.sed | sort -u` - # 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 - sed -f /home/martino/avrdude-build-script/ncurses-5.9/man_alias.sed \ - < $i >$TMP -if test $cf_tables = yes ; then - tbl $TMP >$TMP.out - mv $TMP.out $TMP -fi - if test $form = format ; then - nroff -man $TMP >$TMP.out - mv $TMP.out $TMP - fi - if test $verb = installing ; then - if ( gzip -f $TMP ) - then - mv $TMP.gz $TMP - fi - fi - cf_target="$cf_target.gz" - suffix=`basename $cf_target | sed -e 's%^[^.]*%%'` - 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 "gz" && cf_source=`echo $cf_source |sed -e 's%\.gz$%%'` - cf_target=`basename $cf_target` - for cf_alias in $aliases - do - if test $section = 1 ; then - cf_alias=`echo $cf_alias|sed "${transform}"` - fi - - if test "yes" = 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} - ln -s -f $cf_target $cf_alias${suffix} - elif test "$cf_target" != "$cf_alias${suffix}" ; then - echo ".so $cf_source" >$TMP - if test -n "gz" ; then - gzip -f $TMP - mv $TMP.gz $TMP - fi - 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 - - echo .. $verb alias $cf_alias${suffix} - rm -f $cf_alias${suffix} - done - ) - ) - else -# echo ".hy 0" - cat $TMP - fi - ;; -esac -done - -if test no = yes ; then -if test $form != format ; then - sh $0 format $verb $mandir $srcdir $* -fi -fi - -exit 0 diff --git a/deps/ncurses-5.9/form/Makefile b/deps/ncurses-5.9/form/Makefile deleted file mode 100644 index 025201b..0000000 --- a/deps/ncurses-5.9/form/Makefile +++ /dev/null @@ -1,526 +0,0 @@ -# $Id: Makefile.in,v 1.53 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for form source code. -# -# This makes the following: -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - -THIS = Makefile - -x = -o = .o - -MODEL = normal -DESTDIR = -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -bindir = ${exec_prefix}/bin -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include/ncurses - -LIBTOOL = -LIBTOOL_CLEAN = -LIBTOOL_COMPILE = -LIBTOOL_LINK = ${CC} -LIBTOOL_INSTALL = -LIBTOOL_UNINSTALL = -LT_UNDEF = - -INSTALL = /bin/install -c -INSTALL_LIB = /bin/install -c -m 644 -INSTALL_PROG = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 - -AR = ar -ARFLAGS = -curv -AWK = gawk -LD = ld -LN_S = ln -s -f - -CTAGS = -ETAGS = - -CC = gcc -CPP = gcc -E -CFLAGS = -w -O2 -fPIC --param max-inline-insns-single=1200 - -CPPFLAGS = -I../ncurses -DHAVE_CONFIG_H -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) -g -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) -fPIC - -CFLAGS_DEFAULT = $(CFLAGS_NORMAL) - -LINK = $(LIBTOOL_LINK) -LDFLAGS = -s -fPIC -ldl - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses -ldl -ltinfo - -MK_SHARED_LIB = ${CC} ${CFLAGS} -shared -Wl,-soname,`basename $@ .${REL_VERSION}`.${ABI_VERSION},-stats,-lc -o $@ - -NCURSES_MAJOR = 5 -NCURSES_MINOR = 9 -REL_VERSION = 5.9 -ABI_VERSION = 5 - -RANLIB = ranlib - -LIBRARIES = ../lib/libform.a - -LINT = -LINT_OPTS = -LINT_LIBS = -lform -lncurses -ldl - -AUTO_SRC = \ - ../include/form.h - -################################################################################ -all \ -libs \ -install :: $(AUTO_SRC) $(LIBRARIES) - -sources : $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -# make copies to simplify include-paths while still keeping form's include -# file in this directory. -../include/form.h : $(srcdir)/form.h - -rm -f $@ - cp $(srcdir)/form.h $@ - -HEADER_DEPS = \ - $(srcdir)/form.priv.h \ - $(srcdir)/form.h \ - ../include/mf_common.h \ - ../include/curses.h \ - ../include/eti.h - -tags: - $(CTAGS) *.[ch] - -#TAGS: -# $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -../include/mf_common.h \ -../include/eti.h : - cd ../menu && $(MAKE) $@ - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### - -# generated by mk-0th.awk -# libname: form -# subsets: ticlib+termlib+ext_tinfo base+ext_funcs - -.SUFFIXES: .c .cc .h .i .ii -.c.i : - $(CPP) $(CPPFLAGS) $< >$@ -.cc.ii : - $(CPP) $(CPPFLAGS) $< >$@ -.h.i : - $(CPP) $(CPPFLAGS) $< >$@ - -C_SRC = \ - $(srcdir)/f_trace.c \ - $(srcdir)/fld_arg.c \ - $(srcdir)/fld_attr.c \ - $(srcdir)/fld_current.c \ - $(srcdir)/fld_def.c \ - $(srcdir)/fld_dup.c \ - $(srcdir)/fld_ftchoice.c \ - $(srcdir)/fld_ftlink.c \ - $(srcdir)/fld_info.c \ - $(srcdir)/fld_just.c \ - $(srcdir)/fld_link.c \ - $(srcdir)/fld_max.c \ - $(srcdir)/fld_move.c \ - $(srcdir)/fld_newftyp.c \ - $(srcdir)/fld_opts.c \ - $(srcdir)/fld_pad.c \ - $(srcdir)/fld_page.c \ - $(srcdir)/fld_stat.c \ - $(srcdir)/fld_type.c \ - $(srcdir)/fld_user.c \ - $(srcdir)/frm_cursor.c \ - $(srcdir)/frm_data.c \ - $(srcdir)/frm_def.c \ - $(srcdir)/frm_driver.c \ - $(srcdir)/frm_hook.c \ - $(srcdir)/frm_opts.c \ - $(srcdir)/frm_page.c \ - $(srcdir)/frm_post.c \ - $(srcdir)/frm_req_name.c \ - $(srcdir)/frm_scale.c \ - $(srcdir)/frm_sub.c \ - $(srcdir)/frm_user.c \ - $(srcdir)/frm_win.c \ - $(srcdir)/fty_alnum.c \ - $(srcdir)/fty_alpha.c \ - $(srcdir)/fty_enum.c \ - $(srcdir)/fty_generic.c \ - $(srcdir)/fty_int.c \ - $(srcdir)/fty_ipv4.c \ - $(srcdir)/fty_num.c \ - $(srcdir)/fty_regex.c - -# Producing llib-lform is time-consuming, so there's no direct-dependency for -# it in the lintlib rule. We'll only remove in the cleanest setup. -clean :: - rm -f llib-lform.* - -realclean :: - rm -f llib-lform - -llib-lform : $(C_SRC) - cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@ - -lintlib : - sh $(srcdir)/../misc/makellib form $(CPPFLAGS) -lint : - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS) - - - -# generated by mk-1st.awk (subset=base+ext_funcs) -# name: form -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: base+ext_funcs -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h ./form.priv.h -# host: x86_64-unknown-linux-gnu - -NORMAL_OBJS = \ - ../objects/fld_arg$o \ - ../objects/fld_attr$o \ - ../objects/fld_current$o \ - ../objects/fld_def$o \ - ../objects/fld_dup$o \ - ../objects/fld_ftchoice$o \ - ../objects/fld_ftlink$o \ - ../objects/fld_info$o \ - ../objects/fld_just$o \ - ../objects/fld_link$o \ - ../objects/fld_max$o \ - ../objects/fld_move$o \ - ../objects/fld_newftyp$o \ - ../objects/fld_opts$o \ - ../objects/fld_pad$o \ - ../objects/fld_page$o \ - ../objects/fld_stat$o \ - ../objects/fld_type$o \ - ../objects/fld_user$o \ - ../objects/frm_cursor$o \ - ../objects/frm_data$o \ - ../objects/frm_def$o \ - ../objects/frm_driver$o \ - ../objects/frm_hook$o \ - ../objects/frm_opts$o \ - ../objects/frm_page$o \ - ../objects/frm_post$o \ - ../objects/frm_req_name$o \ - ../objects/frm_scale$o \ - ../objects/frm_sub$o \ - ../objects/frm_user$o \ - ../objects/frm_win$o \ - ../objects/fty_alnum$o \ - ../objects/fty_alpha$o \ - ../objects/fty_enum$o \ - ../objects/fty_generic$o \ - ../objects/fty_int$o \ - ../objects/fty_ipv4$o \ - ../objects/fty_num$o \ - ../objects/fty_regex$o - -$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./form.priv.h - -../lib/libform.a : $(NORMAL_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -install \ -install.libs \ -install.form :: $(DESTDIR)$(libdir) ../lib/libform.a - @echo installing ../lib/libform.a as $(DESTDIR)$(libdir)/libform.a - $(INSTALL_DATA) ../lib/libform.a $(DESTDIR)$(libdir)/libform.a - $(RANLIB) $(DESTDIR)$(libdir)/libform.a - -uninstall \ -uninstall.libs \ -uninstall.form :: - @echo uninstalling $(DESTDIR)$(libdir)/libform.a - -@rm -f $(DESTDIR)$(libdir)/libform.a - -clean :: - -rm -f ../lib/libform.a - -rm -f ../lib/ - -rm -f ../lib/libform.a - -mostlyclean:: - -rm -f $(NORMAL_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: base+ext_funcs -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/fld_arg$o : $(srcdir)/fld_arg.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_arg.c -o ../objects/fld_arg$o - -../objects/fld_attr$o : $(srcdir)/fld_attr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_attr.c -o ../objects/fld_attr$o - -../objects/fld_current$o : $(srcdir)/fld_current.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_current.c -o ../objects/fld_current$o - -../objects/fld_def$o : $(srcdir)/fld_def.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_def.c -o ../objects/fld_def$o - -../objects/fld_dup$o : $(srcdir)/fld_dup.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_dup.c -o ../objects/fld_dup$o - -../objects/fld_ftchoice$o : $(srcdir)/fld_ftchoice.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_ftchoice.c -o ../objects/fld_ftchoice$o - -../objects/fld_ftlink$o : $(srcdir)/fld_ftlink.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_ftlink.c -o ../objects/fld_ftlink$o - -../objects/fld_info$o : $(srcdir)/fld_info.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_info.c -o ../objects/fld_info$o - -../objects/fld_just$o : $(srcdir)/fld_just.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_just.c -o ../objects/fld_just$o - -../objects/fld_link$o : $(srcdir)/fld_link.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_link.c -o ../objects/fld_link$o - -../objects/fld_max$o : $(srcdir)/fld_max.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_max.c -o ../objects/fld_max$o - -../objects/fld_move$o : $(srcdir)/fld_move.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_move.c -o ../objects/fld_move$o - -../objects/fld_newftyp$o : $(srcdir)/fld_newftyp.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_newftyp.c -o ../objects/fld_newftyp$o - -../objects/fld_opts$o : $(srcdir)/fld_opts.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_opts.c -o ../objects/fld_opts$o - -../objects/fld_pad$o : $(srcdir)/fld_pad.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_pad.c -o ../objects/fld_pad$o - -../objects/fld_page$o : $(srcdir)/fld_page.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_page.c -o ../objects/fld_page$o - -../objects/fld_stat$o : $(srcdir)/fld_stat.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_stat.c -o ../objects/fld_stat$o - -../objects/fld_type$o : $(srcdir)/fld_type.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_type.c -o ../objects/fld_type$o - -../objects/fld_user$o : $(srcdir)/fld_user.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fld_user.c -o ../objects/fld_user$o - -../objects/frm_cursor$o : $(srcdir)/frm_cursor.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_cursor.c -o ../objects/frm_cursor$o - -../objects/frm_data$o : $(srcdir)/frm_data.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_data.c -o ../objects/frm_data$o - -../objects/frm_def$o : $(srcdir)/frm_def.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_def.c -o ../objects/frm_def$o - -../objects/frm_driver$o : $(srcdir)/frm_driver.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_driver.c -o ../objects/frm_driver$o - -../objects/frm_hook$o : $(srcdir)/frm_hook.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_hook.c -o ../objects/frm_hook$o - -../objects/frm_opts$o : $(srcdir)/frm_opts.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_opts.c -o ../objects/frm_opts$o - -../objects/frm_page$o : $(srcdir)/frm_page.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_page.c -o ../objects/frm_page$o - -../objects/frm_post$o : $(srcdir)/frm_post.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_post.c -o ../objects/frm_post$o - -../objects/frm_req_name$o : $(srcdir)/frm_req_name.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_req_name.c -o ../objects/frm_req_name$o - -../objects/frm_scale$o : $(srcdir)/frm_scale.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_scale.c -o ../objects/frm_scale$o - -../objects/frm_sub$o : $(srcdir)/frm_sub.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_sub.c -o ../objects/frm_sub$o - -../objects/frm_user$o : $(srcdir)/frm_user.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_user.c -o ../objects/frm_user$o - -../objects/frm_win$o : $(srcdir)/frm_win.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/frm_win.c -o ../objects/frm_win$o - -../objects/fty_alnum$o : $(srcdir)/fty_alnum.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_alnum.c -o ../objects/fty_alnum$o - -../objects/fty_alpha$o : $(srcdir)/fty_alpha.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_alpha.c -o ../objects/fty_alpha$o - -../objects/fty_enum$o : $(srcdir)/fty_enum.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_enum.c -o ../objects/fty_enum$o - -../objects/fty_generic$o : $(srcdir)/fty_generic.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_generic.c -o ../objects/fty_generic$o - -../objects/fty_int$o : $(srcdir)/fty_int.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_int.c -o ../objects/fty_int$o - -../objects/fty_ipv4$o : $(srcdir)/fty_ipv4.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_ipv4.c -o ../objects/fty_ipv4$o - -../objects/fty_num$o : $(srcdir)/fty_num.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_num.c -o ../objects/fty_num$o - -../objects/fty_regex$o : $(srcdir)/fty_regex.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../form/fty_regex.c -o ../objects/fty_regex$o - - -# generated by mk-hdr.awk -# subset: ticlib+termlib+ext_tinfo base+ext_funcs -# compat: yes - -${DESTDIR}${includedir} : - mkdir -p $@ - -install \ -install.libs \ -install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \ - $(srcdir)/form.h - @ (cd ${DESTDIR}${includedir} && rm -f form.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/form.h - -uninstall \ -uninstall.libs \ -uninstall.includes :: - -@ (cd ${DESTDIR}${includedir} && rm -f form.h) -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/deps/ncurses-5.9/form/Makefile.in b/deps/ncurses-5.9/form/Makefile.in deleted file mode 100644 index 1a07e14..0000000 --- a/deps/ncurses-5.9/form/Makefile.in +++ /dev/null @@ -1,170 +0,0 @@ -# $Id: Makefile.in,v 1.53 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for form source code. -# -# This makes the following: -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ - -LIBTOOL = @LIBTOOL@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ -LIBTOOL_INSTALL = @LIB_INSTALL@ -LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ -LT_UNDEF = @LT_UNDEF@ - -INSTALL = @INSTALL@ -INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ -INSTALL_PROG = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -AR = @AR@ -ARFLAGS = @ARFLAGS@ -AWK = @AWK@ -LD = @LD@ -LN_S = @LN_S@ - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -CC = @CC@ -CPP = @CPP@ -CFLAGS = @CFLAGS@ - -CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@ - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -LINK = $(LIBTOOL_LINK) -LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@ - -MK_SHARED_LIB = @MK_SHARED_LIB@ - -NCURSES_MAJOR = @NCURSES_MAJOR@ -NCURSES_MINOR = @NCURSES_MINOR@ -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ - -RANLIB = @LIB_PREP@ - -LIBRARIES = @LIBS_TO_MAKE@ - -LINT = @LINT@ -LINT_OPTS = @LINT_OPTS@ -LINT_LIBS = -lform -lncurses @LIBS@ - -AUTO_SRC = \ - ../include/form.h - -################################################################################ -all \ -libs \ -install :: $(AUTO_SRC) $(LIBRARIES) - -sources : $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -# make copies to simplify include-paths while still keeping form's include -# file in this directory. -../include/form.h : $(srcdir)/form.h - -rm -f $@ - cp $(srcdir)/form.h $@ - -HEADER_DEPS = \ - $(srcdir)/form.priv.h \ - $(srcdir)/form.h \ - ../include/mf_common.h \ - ../include/curses.h \ - ../include/eti.h - -tags: - $(CTAGS) *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -../include/mf_common.h \ -../include/eti.h : - cd ../menu && $(MAKE) $@ - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/form/READ.ME b/deps/ncurses-5.9/form/READ.ME deleted file mode 100644 index da86bf6..0000000 --- a/deps/ncurses-5.9/form/READ.ME +++ /dev/null @@ -1,42 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2003,2006 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. -- -------------------------------------------------------------------------------- --- $Id: READ.ME,v 0.7 2006/04/22 23:13:05 tom Exp $ -------------------------------------------------------------------------------- - -This is a clone of the form library that is available with typical -System V curses implementations (ETI). - -It is modelled after the documentation that comes for this library with -a 386 based SVR4 implementation (ESIX). - -The development environment was and is an ELF based Linux system. - -For things that still need doing, see the TO-DO file in the top-level -directory. - -Juergen Pfeifer diff --git a/deps/ncurses-5.9/form/form.h b/deps/ncurses-5.9/form/form.h deleted file mode 100644 index f52893b..0000000 --- a/deps/ncurses-5.9/form/form.h +++ /dev/null @@ -1,422 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2009 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: form.h,v 0.21 2009/11/07 19:31:11 tom Exp $ */ - -#ifndef FORM_H -#define FORM_H - -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef FORM_PRIV_H -typedef void *FIELD_CELL; -#endif - -#ifndef NCURSES_FIELD_INTERNALS -#define NCURSES_FIELD_INTERNALS /* nothing */ -#endif - -typedef int Form_Options; -typedef int Field_Options; - - /********** - * _PAGE * - **********/ - -typedef struct { - short pmin; /* index of first field on page */ - short pmax; /* index of last field on page */ - short smin; /* index of top leftmost field on page */ - short smax; /* index of bottom rightmost field on page */ -} _PAGE; - - /********** - * FIELD * - **********/ - -typedef struct fieldnode { - unsigned short status; /* flags */ - short rows; /* size in rows */ - short cols; /* size in cols */ - short frow; /* first row */ - short fcol; /* first col */ - int drows; /* dynamic rows */ - int dcols; /* dynamic cols */ - int maxgrow; /* maximum field growth */ - int nrow; /* off-screen rows */ - short nbuf; /* additional buffers */ - short just; /* justification */ - short page; /* page on form */ - short index; /* into form -> field */ - int pad; /* pad character */ - chtype fore; /* foreground attribute */ - chtype back; /* background attribute */ - Field_Options opts; /* options */ - struct fieldnode * snext; /* sorted order pointer */ - struct fieldnode * sprev; /* sorted order pointer */ - struct fieldnode * link; /* linked field chain */ - struct formnode * form; /* containing form */ - struct typenode * type; /* field type */ - void * arg; /* argument for type */ - FIELD_CELL * buf; /* field buffers */ - void * usrptr; /* user pointer */ - /* - * The wide-character configuration requires extra information. Because - * there are existing applications that manipulate the members of FIELD - * directly, we cannot make the struct opaque. Offsets of members up to - * this point are the same in the narrow- and wide-character configuration. - * But note that the type of buf depends on the configuration, and is made - * opaque for that reason. - */ - NCURSES_FIELD_INTERNALS -} FIELD; - - - /********* - * FORM * - *********/ - -typedef struct formnode { - unsigned short status; /* flags */ - short rows; /* size in rows */ - short cols; /* size in cols */ - int currow; /* current row in field window */ - int curcol; /* current col in field window */ - int toprow; /* in scrollable field window */ - int begincol; /* in horiz. scrollable field */ - short maxfield; /* number of fields */ - short maxpage; /* number of pages */ - short curpage; /* index into page */ - Form_Options opts; /* options */ - WINDOW * win; /* window */ - WINDOW * sub; /* subwindow */ - WINDOW * w; /* window for current field */ - FIELD ** field; /* field [maxfield] */ - FIELD * current; /* current field */ - _PAGE * page; /* page [maxpage] */ - void * usrptr; /* user pointer */ - - void (*forminit)(struct formnode *); - void (*formterm)(struct formnode *); - void (*fieldinit)(struct formnode *); - void (*fieldterm)(struct formnode *); - -} FORM; - - - /************** - * FIELDTYPE * - **************/ - -typedef struct typenode { - unsigned short status; /* flags */ - long ref; /* reference count */ - struct typenode * left; /* ptr to operand for | */ - struct typenode * right; /* ptr to operand for | */ - - void* (*makearg)(va_list *); /* make fieldtype arg */ - void* (*copyarg)(const void *); /* copy fieldtype arg */ - void (*freearg)(void *); /* free fieldtype arg */ - -#if NCURSES_INTEROP_FUNCS - union { - bool (*ofcheck)(FIELD *,const void *); /* field validation */ - bool (*gfcheck)(FORM*,FIELD *,const void*); /* generic field validation */ - } fieldcheck; - union { - bool (*occheck)(int,const void *); /* character validation */ - bool (*gccheck)(int,FORM*, - FIELD*,const void*); /* generic char validation */ - } charcheck; - union { - bool (*onext)(FIELD *,const void *); /* enumerate next value */ - bool (*gnext)(FORM*,FIELD*,const void*); /* generic enumerate next */ - } enum_next; - union { - bool (*oprev)(FIELD *,const void *); /* enumerate prev value */ - bool (*gprev)(FORM*,FIELD*,const void*); /* generic enumerate prev */ - } enum_prev; - void* (*genericarg)(void*); /* Alternate Arg method */ -#else - bool (*fcheck)(FIELD *,const void *); /* field validation */ - bool (*ccheck)(int,const void *); /* character validation */ - - bool (*next)(FIELD *,const void *); /* enumerate next value */ - bool (*prev)(FIELD *,const void *); /* enumerate prev value */ -#endif -} FIELDTYPE; - -typedef void (*Form_Hook)(FORM *); - - /*************************** - * miscellaneous #defines * - ***************************/ - -/* field justification */ -#define NO_JUSTIFICATION (0) -#define JUSTIFY_LEFT (1) -#define JUSTIFY_CENTER (2) -#define JUSTIFY_RIGHT (3) - -/* field options */ -#define O_VISIBLE (0x0001U) -#define O_ACTIVE (0x0002U) -#define O_PUBLIC (0x0004U) -#define O_EDIT (0x0008U) -#define O_WRAP (0x0010U) -#define O_BLANK (0x0020U) -#define O_AUTOSKIP (0x0040U) -#define O_NULLOK (0x0080U) -#define O_PASSOK (0x0100U) -#define O_STATIC (0x0200U) - -/* form options */ -#define O_NL_OVERLOAD (0x0001U) -#define O_BS_OVERLOAD (0x0002U) - -/* form driver commands */ -#define REQ_NEXT_PAGE (KEY_MAX + 1) /* move to next page */ -#define REQ_PREV_PAGE (KEY_MAX + 2) /* move to previous page */ -#define REQ_FIRST_PAGE (KEY_MAX + 3) /* move to first page */ -#define REQ_LAST_PAGE (KEY_MAX + 4) /* move to last page */ - -#define REQ_NEXT_FIELD (KEY_MAX + 5) /* move to next field */ -#define REQ_PREV_FIELD (KEY_MAX + 6) /* move to previous field */ -#define REQ_FIRST_FIELD (KEY_MAX + 7) /* move to first field */ -#define REQ_LAST_FIELD (KEY_MAX + 8) /* move to last field */ -#define REQ_SNEXT_FIELD (KEY_MAX + 9) /* move to sorted next field */ -#define REQ_SPREV_FIELD (KEY_MAX + 10) /* move to sorted prev field */ -#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field */ -#define REQ_SLAST_FIELD (KEY_MAX + 12) /* move to sorted last field */ -#define REQ_LEFT_FIELD (KEY_MAX + 13) /* move to left to field */ -#define REQ_RIGHT_FIELD (KEY_MAX + 14) /* move to right to field */ -#define REQ_UP_FIELD (KEY_MAX + 15) /* move to up to field */ -#define REQ_DOWN_FIELD (KEY_MAX + 16) /* move to down to field */ - -#define REQ_NEXT_CHAR (KEY_MAX + 17) /* move to next char in field */ -#define REQ_PREV_CHAR (KEY_MAX + 18) /* move to prev char in field */ -#define REQ_NEXT_LINE (KEY_MAX + 19) /* move to next line in field */ -#define REQ_PREV_LINE (KEY_MAX + 20) /* move to prev line in field */ -#define REQ_NEXT_WORD (KEY_MAX + 21) /* move to next word in field */ -#define REQ_PREV_WORD (KEY_MAX + 22) /* move to prev word in field */ -#define REQ_BEG_FIELD (KEY_MAX + 23) /* move to first char in field */ -#define REQ_END_FIELD (KEY_MAX + 24) /* move after last char in fld */ -#define REQ_BEG_LINE (KEY_MAX + 25) /* move to beginning of line */ -#define REQ_END_LINE (KEY_MAX + 26) /* move after last char in line */ -#define REQ_LEFT_CHAR (KEY_MAX + 27) /* move left in field */ -#define REQ_RIGHT_CHAR (KEY_MAX + 28) /* move right in field */ -#define REQ_UP_CHAR (KEY_MAX + 29) /* move up in field */ -#define REQ_DOWN_CHAR (KEY_MAX + 30) /* move down in field */ - -#define REQ_NEW_LINE (KEY_MAX + 31) /* insert/overlay new line */ -#define REQ_INS_CHAR (KEY_MAX + 32) /* insert blank char at cursor */ -#define REQ_INS_LINE (KEY_MAX + 33) /* insert blank line at cursor */ -#define REQ_DEL_CHAR (KEY_MAX + 34) /* delete char at cursor */ -#define REQ_DEL_PREV (KEY_MAX + 35) /* delete char before cursor */ -#define REQ_DEL_LINE (KEY_MAX + 36) /* delete line at cursor */ -#define REQ_DEL_WORD (KEY_MAX + 37) /* delete word at cursor */ -#define REQ_CLR_EOL (KEY_MAX + 38) /* clear to end of line */ -#define REQ_CLR_EOF (KEY_MAX + 39) /* clear to end of field */ -#define REQ_CLR_FIELD (KEY_MAX + 40) /* clear entire field */ -#define REQ_OVL_MODE (KEY_MAX + 41) /* begin overlay mode */ -#define REQ_INS_MODE (KEY_MAX + 42) /* begin insert mode */ -#define REQ_SCR_FLINE (KEY_MAX + 43) /* scroll field forward a line */ -#define REQ_SCR_BLINE (KEY_MAX + 44) /* scroll field backward a line */ -#define REQ_SCR_FPAGE (KEY_MAX + 45) /* scroll field forward a page */ -#define REQ_SCR_BPAGE (KEY_MAX + 46) /* scroll field backward a page */ -#define REQ_SCR_FHPAGE (KEY_MAX + 47) /* scroll field forward half page */ -#define REQ_SCR_BHPAGE (KEY_MAX + 48) /* scroll field backward half page */ -#define REQ_SCR_FCHAR (KEY_MAX + 49) /* horizontal scroll char */ -#define REQ_SCR_BCHAR (KEY_MAX + 50) /* horizontal scroll char */ -#define REQ_SCR_HFLINE (KEY_MAX + 51) /* horizontal scroll line */ -#define REQ_SCR_HBLINE (KEY_MAX + 52) /* horizontal scroll line */ -#define REQ_SCR_HFHALF (KEY_MAX + 53) /* horizontal scroll half line */ -#define REQ_SCR_HBHALF (KEY_MAX + 54) /* horizontal scroll half line */ - -#define REQ_VALIDATION (KEY_MAX + 55) /* validate field */ -#define REQ_NEXT_CHOICE (KEY_MAX + 56) /* display next field choice */ -#define REQ_PREV_CHOICE (KEY_MAX + 57) /* display prev field choice */ - -#define MIN_FORM_COMMAND (KEY_MAX + 1) /* used by form_driver */ -#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver */ - -#if defined(MAX_COMMAND) -# if (MAX_FORM_COMMAND > MAX_COMMAND) -# error Something is wrong -- MAX_FORM_COMMAND is greater than MAX_COMMAND -# elif (MAX_COMMAND != (KEY_MAX + 128)) -# error Something is wrong -- MAX_COMMAND is already inconsistently defined. -# endif -#else -# define MAX_COMMAND (KEY_MAX + 128) -#endif - - /************************* - * standard field types * - *************************/ -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP; - - /************************************ - * built-in additional field types * - * They are not defined in SVr4 * - ************************************/ -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4; /* Internet IP Version 4 address */ - - /*********************** - * FIELDTYPE routines * - ***********************/ -extern NCURSES_EXPORT(FIELDTYPE *) new_fieldtype ( - bool (* const field_check)(FIELD *,const void *), - bool (* const char_check)(int,const void *)); -extern NCURSES_EXPORT(FIELDTYPE *) link_fieldtype( - FIELDTYPE *, FIELDTYPE *); - -extern NCURSES_EXPORT(int) free_fieldtype (FIELDTYPE *); -extern NCURSES_EXPORT(int) set_fieldtype_arg (FIELDTYPE *, - void * (* const make_arg)(va_list *), - void * (* const copy_arg)(const void *), - void (* const free_arg)(void *)); -extern NCURSES_EXPORT(int) set_fieldtype_choice (FIELDTYPE *, - bool (* const next_choice)(FIELD *,const void *), - bool (* const prev_choice)(FIELD *,const void *)); - - /******************* - * FIELD routines * - *******************/ -extern NCURSES_EXPORT(FIELD *) new_field (int,int,int,int,int,int); -extern NCURSES_EXPORT(FIELD *) dup_field (FIELD *,int,int); -extern NCURSES_EXPORT(FIELD *) link_field (FIELD *,int,int); - -extern NCURSES_EXPORT(int) free_field (FIELD *); -extern NCURSES_EXPORT(int) field_info (const FIELD *,int *,int *,int *,int *,int *,int *); -extern NCURSES_EXPORT(int) dynamic_field_info (const FIELD *,int *,int *,int *); -extern NCURSES_EXPORT(int) set_max_field ( FIELD *,int); -extern NCURSES_EXPORT(int) move_field (FIELD *,int,int); -extern NCURSES_EXPORT(int) set_field_type (FIELD *,FIELDTYPE *,...); -extern NCURSES_EXPORT(int) set_new_page (FIELD *,bool); -extern NCURSES_EXPORT(int) set_field_just (FIELD *,int); -extern NCURSES_EXPORT(int) field_just (const FIELD *); -extern NCURSES_EXPORT(int) set_field_fore (FIELD *,chtype); -extern NCURSES_EXPORT(int) set_field_back (FIELD *,chtype); -extern NCURSES_EXPORT(int) set_field_pad (FIELD *,int); -extern NCURSES_EXPORT(int) field_pad (const FIELD *); -extern NCURSES_EXPORT(int) set_field_buffer (FIELD *,int,const char *); -extern NCURSES_EXPORT(int) set_field_status (FIELD *,bool); -extern NCURSES_EXPORT(int) set_field_userptr (FIELD *, void *); -extern NCURSES_EXPORT(int) set_field_opts (FIELD *,Field_Options); -extern NCURSES_EXPORT(int) field_opts_on (FIELD *,Field_Options); -extern NCURSES_EXPORT(int) field_opts_off (FIELD *,Field_Options); - -extern NCURSES_EXPORT(chtype) field_fore (const FIELD *); -extern NCURSES_EXPORT(chtype) field_back (const FIELD *); - -extern NCURSES_EXPORT(bool) new_page (const FIELD *); -extern NCURSES_EXPORT(bool) field_status (const FIELD *); - -extern NCURSES_EXPORT(void *) field_arg (const FIELD *); - -extern NCURSES_EXPORT(void *) field_userptr (const FIELD *); - -extern NCURSES_EXPORT(FIELDTYPE *) field_type (const FIELD *); - -extern NCURSES_EXPORT(char *) field_buffer (const FIELD *,int); - -extern NCURSES_EXPORT(Field_Options) field_opts (const FIELD *); - - /****************** - * FORM routines * - ******************/ - -extern NCURSES_EXPORT(FORM *) new_form (FIELD **); - -extern NCURSES_EXPORT(FIELD **) form_fields (const FORM *); -extern NCURSES_EXPORT(FIELD *) current_field (const FORM *); - -extern NCURSES_EXPORT(WINDOW *) form_win (const FORM *); -extern NCURSES_EXPORT(WINDOW *) form_sub (const FORM *); - -extern NCURSES_EXPORT(Form_Hook) form_init (const FORM *); -extern NCURSES_EXPORT(Form_Hook) form_term (const FORM *); -extern NCURSES_EXPORT(Form_Hook) field_init (const FORM *); -extern NCURSES_EXPORT(Form_Hook) field_term (const FORM *); - -extern NCURSES_EXPORT(int) free_form (FORM *); -extern NCURSES_EXPORT(int) set_form_fields (FORM *,FIELD **); -extern NCURSES_EXPORT(int) field_count (const FORM *); -extern NCURSES_EXPORT(int) set_form_win (FORM *,WINDOW *); -extern NCURSES_EXPORT(int) set_form_sub (FORM *,WINDOW *); -extern NCURSES_EXPORT(int) set_current_field (FORM *,FIELD *); -extern NCURSES_EXPORT(int) field_index (const FIELD *); -extern NCURSES_EXPORT(int) set_form_page (FORM *,int); -extern NCURSES_EXPORT(int) form_page (const FORM *); -extern NCURSES_EXPORT(int) scale_form (const FORM *,int *,int *); -extern NCURSES_EXPORT(int) set_form_init (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_form_term (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_field_init (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_field_term (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) post_form (FORM *); -extern NCURSES_EXPORT(int) unpost_form (FORM *); -extern NCURSES_EXPORT(int) pos_form_cursor (FORM *); -extern NCURSES_EXPORT(int) form_driver (FORM *,int); -extern NCURSES_EXPORT(int) set_form_userptr (FORM *,void *); -extern NCURSES_EXPORT(int) set_form_opts (FORM *,Form_Options); -extern NCURSES_EXPORT(int) form_opts_on (FORM *,Form_Options); -extern NCURSES_EXPORT(int) form_opts_off (FORM *,Form_Options); -extern NCURSES_EXPORT(int) form_request_by_name (const char *); - -extern NCURSES_EXPORT(const char *) form_request_name (int); - -extern NCURSES_EXPORT(void *) form_userptr (const FORM *); - -extern NCURSES_EXPORT(Form_Options) form_opts (const FORM *); - -extern NCURSES_EXPORT(bool) data_ahead (const FORM *); -extern NCURSES_EXPORT(bool) data_behind (const FORM *); - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(FORM *) NCURSES_SP_NAME(new_form) (SCREEN*, FIELD **); -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* FORM_H */ diff --git a/deps/ncurses-5.9/form/form.priv.h b/deps/ncurses-5.9/form/form.priv.h deleted file mode 100644 index 49250b4..0000000 --- a/deps/ncurses-5.9/form/form.priv.h +++ /dev/null @@ -1,297 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2009 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: form.priv.h,v 0.32 2009/11/07 21:26:43 tom Exp $ */ - -#ifndef FORM_PRIV_H -#define FORM_PRIV_H 1 - -#include "curses.priv.h" -#include "mf_common.h" - -#if USE_WIDEC_SUPPORT -#if HAVE_WCTYPE_H -#include -#endif - -#ifndef MB_LEN_MAX -#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */ -#endif - -#define FIELD_CELL NCURSES_CH_T - -#define NCURSES_FIELD_INTERNALS char** expanded; WINDOW *working; -#define NCURSES_FIELD_EXTENSION , (char **)0, (WINDOW *)0 - -#else - -#define FIELD_CELL char - -#define NCURSES_FIELD_EXTENSION /* nothing */ - -#endif - -#include "form.h" - - /*********************** - * Default objects * - ***********************/ -extern NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form; -extern NCURSES_EXPORT_VAR(FIELD *) _nc_Default_Field; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType; - -/* form status values */ -#define _OVLMODE (0x04U) /* Form is in overlay mode */ -#define _WINDOW_MODIFIED (0x10U) /* Current field window has been modified */ -#define _FCHECK_REQUIRED (0x20U) /* Current field needs validation */ - -/* field status values */ -#define _CHANGED (0x01U) /* Field has been changed */ -#define _NEWTOP (0x02U) /* Vertical scrolling occurred */ -#define _NEWPAGE (0x04U) /* field begins new page of form */ -#define _MAY_GROW (0x08U) /* dynamic field may still grow */ - -/* fieldtype status values */ -#define _LINKED_TYPE (0x01U) /* Type is a linked type */ -#define _HAS_ARGS (0x02U) /* Type has arguments */ -#define _HAS_CHOICE (0x04U) /* Type has choice methods */ -#define _RESIDENT (0x08U) /* Type is built-in */ -#define _GENERIC (0x10U) /* A generic field type */ - -/* This are the field options required to be a selectable field in field - navigation requests */ -#define O_SELECTABLE (O_ACTIVE | O_VISIBLE) - -/* If form is NULL replace form argument by default-form */ -#define Normalize_Form(form) \ - ((form) = (form != 0) ? (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) - -#if NCURSES_SP_FUNCS -#define Get_Form_Screen(form) \ - ((form)->win ? _nc_screen_of((form->win)):CURRENT_SCREEN) -#else -#define Get_Form_Screen(form) CURRENT_SCREEN -#endif - -/* Retrieve forms window */ -#define Get_Form_Window(form) \ - ((form)->sub \ - ? (form)->sub \ - : ((form)->win \ - ? (form)->win \ - : StdScreen(Get_Form_Screen(form)))) - -/* Calculate the size for a single buffer for this field */ -#define Buffer_Length(field) ((field)->drows * (field)->dcols) - -/* Calculate the total size of all buffers for this field */ -#define Total_Buffer_Size(field) \ - ( (Buffer_Length(field) + 1) * (1+(field)->nbuf) * sizeof(FIELD_CELL) ) - -/* Logic to determine whether or not a field is single lined */ -#define Single_Line_Field(field) \ - (((field)->rows + (field)->nrow) == 1) - -/* Logic to determine whether or not a field is selectable */ -#define Field_Is_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)==O_SELECTABLE) -#define Field_Is_Not_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)!=O_SELECTABLE) - -typedef struct typearg - { - struct typearg *left; - struct typearg *right; - } -TypeArgument; - -/* This is a dummy request code (normally invalid) to be used internally - with the form_driver() routine to position to the first active field - on the form -*/ -#define FIRST_ACTIVE_MAGIC (-291056) - -#define ALL_FORM_OPTS ( \ - O_NL_OVERLOAD |\ - O_BS_OVERLOAD ) - -#define ALL_FIELD_OPTS (Field_Options)( \ - O_VISIBLE |\ - O_ACTIVE |\ - O_PUBLIC |\ - O_EDIT |\ - O_WRAP |\ - O_BLANK |\ - O_AUTOSKIP|\ - O_NULLOK |\ - O_PASSOK |\ - O_STATIC ) - -#define C_BLANK ' ' -#define is_blank(c) ((c)==C_BLANK) - -#define C_ZEROS '\0' - -extern NCURSES_EXPORT(TypeArgument *) _nc_Make_Argument (const FIELDTYPE*, va_list*, int*); -extern NCURSES_EXPORT(TypeArgument *) _nc_Copy_Argument (const FIELDTYPE*, const TypeArgument*, int*); -extern NCURSES_EXPORT(void) _nc_Free_Argument (const FIELDTYPE*, TypeArgument*); -extern NCURSES_EXPORT(bool) _nc_Copy_Type (FIELD*, FIELD const *); -extern NCURSES_EXPORT(void) _nc_Free_Type (FIELD *); - -extern NCURSES_EXPORT(int) _nc_Synchronize_Attributes (FIELD*); -extern NCURSES_EXPORT(int) _nc_Synchronize_Options (FIELD*, Field_Options); -extern NCURSES_EXPORT(int) _nc_Set_Form_Page (FORM*, int, FIELD*); -extern NCURSES_EXPORT(int) _nc_Refresh_Current_Field (FORM*); -extern NCURSES_EXPORT(FIELD *) _nc_First_Active_Field (FORM*); -extern NCURSES_EXPORT(bool) _nc_Internal_Validation (FORM*); -extern NCURSES_EXPORT(int) _nc_Set_Current_Field (FORM*, FIELD*); -extern NCURSES_EXPORT(int) _nc_Position_Form_Cursor (FORM*); - -#if NCURSES_INTEROP_FUNCS -extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_INTEGER(void); -extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ALNUM(void); -extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ALPHA(void); -extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_ENUM(void); -extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_NUMERIC(void); -extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_REGEXP(void); -extern NCURSES_EXPORT(FIELDTYPE *) _nc_TYPE_IPV4(void); - -extern NCURSES_EXPORT(FIELDTYPE *) -_nc_generic_fieldtype(bool (*const field_check) (FORM*, - FIELD *, - const void *), - bool (*const char_check) (int, - FORM*, - FIELD*, - const void *), - bool (*const next)(FORM*,FIELD*,const void*), - bool (*const prev)(FORM*,FIELD*,const void*), - void (*freecallback)(void*)); -extern NCURSES_EXPORT(int) _nc_set_generic_fieldtype(FIELD*, FIELDTYPE*, int (*)(void**)); -extern NCURSES_EXPORT(WINDOW*) _nc_form_cursor(const FORM* , int* , int* ); - -#define INIT_FT_FUNC(func) {func} -#else -#define INIT_FT_FUNC(func) func -#endif - -extern NCURSES_EXPORT(void) _nc_get_fieldbuffer(FORM*, FIELD*, FIELD_CELL*); - -#if USE_WIDEC_SUPPORT -extern NCURSES_EXPORT(wchar_t *) _nc_Widen_String(char *, int *); -#endif - -#ifdef TRACE - -#define returnField(code) TRACE_RETURN(code,field) -#define returnFieldPtr(code) TRACE_RETURN(code,field_ptr) -#define returnForm(code) TRACE_RETURN(code,form) -#define returnFieldType(code) TRACE_RETURN(code,field_type) -#define returnFormHook(code) TRACE_RETURN(code,form_hook) - -extern NCURSES_EXPORT(FIELD **) _nc_retrace_field_ptr (FIELD **); -extern NCURSES_EXPORT(FIELD *) _nc_retrace_field (FIELD *); -extern NCURSES_EXPORT(FIELDTYPE *) _nc_retrace_field_type (FIELDTYPE *); -extern NCURSES_EXPORT(FORM *) _nc_retrace_form (FORM *); -extern NCURSES_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook); - -#else /* !TRACE */ - -#define returnFieldPtr(code) return code -#define returnFieldType(code) return code -#define returnField(code) return code -#define returnForm(code) return code -#define returnFormHook(code) return code - -#endif /* TRACE/!TRACE */ - -/* - * Use Check_CTYPE_Field() to simplify FIELDTYPE's that use only the ccheck() - * function. - */ -#if USE_WIDEC_SUPPORT -#define Check_CTYPE_Field(result, buffer, width, ccheck) \ - while (*buffer && *buffer == ' ') \ - buffer++; \ - if (*buffer) \ - { \ - bool blank = FALSE; \ - int len; \ - int n; \ - wchar_t *list = _nc_Widen_String((char *)buffer, &len); \ - if (list != 0) \ - { \ - result = TRUE; \ - for (n = 0; n < len; ++n) \ - { \ - if (blank) \ - { \ - if (list[n] != ' ') \ - { \ - result = FALSE; \ - break; \ - } \ - } \ - else if (list[n] == ' ') \ - { \ - blank = TRUE; \ - result = (n + 1 >= width); \ - } \ - else if (!ccheck(list[n], NULL)) \ - { \ - result = FALSE; \ - break; \ - } \ - } \ - free(list); \ - } \ - } -#else -#define Check_CTYPE_Field(result, buffer, width, ccheck) \ - while (*buffer && *buffer == ' ') \ - buffer++; \ - if (*buffer) \ - { \ - unsigned char *s = buffer; \ - int l = -1; \ - while (*buffer && ccheck(*buffer, NULL)) \ - buffer++; \ - l = (int)(buffer - s); \ - while (*buffer && *buffer == ' ') \ - buffer++; \ - result = ((*buffer || (l < width)) ? FALSE : TRUE); \ - } -#endif - -#endif /* FORM_PRIV_H */ diff --git a/deps/ncurses-5.9/form/frm_req_name.c b/deps/ncurses-5.9/form/frm_req_name.c deleted file mode 100644 index 99abd7e..0000000 --- a/deps/ncurses-5.9/form/frm_req_name.c +++ /dev/null @@ -1,170 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2009 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, 1995,1997 * - ****************************************************************************/ - -/*************************************************************************** -* Module form_request_name * -* Routines to handle external names of menu requests * -***************************************************************************/ - -#include "form.priv.h" - -MODULE_ID("$Id: frm_req_name.c,v 1.17 2009/10/10 16:17:01 tom Exp $") - -static const char *request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] = -{ - "NEXT_PAGE", - "PREV_PAGE", - "FIRST_PAGE", - "LAST_PAGE", - - "NEXT_FIELD", - "PREV_FIELD", - "FIRST_FIELD", - "LAST_FIELD", - "SNEXT_FIELD", - "SPREV_FIELD", - "SFIRST_FIELD", - "SLAST_FIELD", - "LEFT_FIELD", - "RIGHT_FIELD", - "UP_FIELD", - "DOWN_FIELD", - - "NEXT_CHAR", - "PREV_CHAR", - "NEXT_LINE", - "PREV_LINE", - "NEXT_WORD", - "PREV_WORD", - "BEG_FIELD", - "END_FIELD", - "BEG_LINE", - "END_LINE", - "LEFT_CHAR", - "RIGHT_CHAR", - "UP_CHAR", - "DOWN_CHAR", - - "NEW_LINE", - "INS_CHAR", - "INS_LINE", - "DEL_CHAR", - "DEL_PREV", - "DEL_LINE", - "DEL_WORD", - "CLR_EOL", - "CLR_EOF", - "CLR_FIELD", - "OVL_MODE", - "INS_MODE", - "SCR_FLINE", - "SCR_BLINE", - "SCR_FPAGE", - "SCR_BPAGE", - "SCR_FHPAGE", - "SCR_BHPAGE", - "SCR_FCHAR", - "SCR_BCHAR", - "SCR_HFLINE", - "SCR_HBLINE", - "SCR_HFHALF", - "SCR_HBHALF", - - "VALIDATION", - "NEXT_CHOICE", - "PREV_CHOICE" -}; - -#define A_SIZE (sizeof(request_names)/sizeof(request_names[0])) - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : const char * form_request_name (int request); -| -| Description : Get the external name of a form request. -| -| Return Values : Pointer to name - on success -| NULL - on invalid request code -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(const char *) -form_request_name(int request) -{ - T((T_CALLED("form_request_name(%d)"), request)); - - if ((request < MIN_FORM_COMMAND) || (request > MAX_FORM_COMMAND)) - { - SET_ERROR(E_BAD_ARGUMENT); - returnCPtr((const char *)0); - } - else - returnCPtr(request_names[request - MIN_FORM_COMMAND]); -} - -/*--------------------------------------------------------------------------- -| Facility : libnform -| Function : int form_request_by_name (const char *str); -| -| Description : Search for a request with this name. -| -| Return Values : Request Id - on success -| E_NO_MATCH - request not found -+--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -form_request_by_name(const char *str) -{ - /* because the table is so small, it doesn't really hurt - to run sequentially through it. - */ - unsigned int i = 0; - char buf[16]; - - T((T_CALLED("form_request_by_name(%s)"), _nc_visbuf(str))); - - if (str) - { - strncpy(buf, str, sizeof(buf)); - while ((i < sizeof(buf)) && (buf[i] != '\0')) - { - buf[i] = (char)toupper(UChar(buf[i])); - i++; - } - - for (i = 0; i < A_SIZE; i++) - { - if (strncmp(request_names[i], buf, sizeof(buf)) == 0) - returnCode(MIN_FORM_COMMAND + (int)i); - } - } - RETURN(E_NO_MATCH); -} - -/* frm_req_name.c ends here */ diff --git a/deps/ncurses-5.9/form/headers b/deps/ncurses-5.9/form/headers deleted file mode 100644 index 56d72f0..0000000 --- a/deps/ncurses-5.9/form/headers +++ /dev/null @@ -1,32 +0,0 @@ -############################################################################## -# Copyright (c) 1998,2006 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: Thomas E. Dickey 1996 -# -$(srcdir)/form.h -# vile:makemode diff --git a/deps/ncurses-5.9/form/modules b/deps/ncurses-5.9/form/modules deleted file mode 100644 index 205356b..0000000 --- a/deps/ncurses-5.9/form/modules +++ /dev/null @@ -1,78 +0,0 @@ -# $Id: modules,v 1.17 2010/01/23 16:26:37 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1995-on -# and: Juergen Pfeifer 2008 -# - -@ base -# Library objects -f_trace lib $(srcdir) $(HEADER_DEPS) -fld_arg lib $(srcdir) $(HEADER_DEPS) -fld_attr lib $(srcdir) $(HEADER_DEPS) -fld_current lib $(srcdir) $(HEADER_DEPS) -fld_def lib $(srcdir) $(HEADER_DEPS) -fld_dup lib $(srcdir) $(HEADER_DEPS) -fld_ftchoice lib $(srcdir) $(HEADER_DEPS) -fld_ftlink lib $(srcdir) $(HEADER_DEPS) -fld_info lib $(srcdir) $(HEADER_DEPS) -fld_just lib $(srcdir) $(HEADER_DEPS) -fld_link lib $(srcdir) $(HEADER_DEPS) -fld_max lib $(srcdir) $(HEADER_DEPS) -fld_move lib $(srcdir) $(HEADER_DEPS) -fld_newftyp lib $(srcdir) $(HEADER_DEPS) -fld_opts lib $(srcdir) $(HEADER_DEPS) -fld_pad lib $(srcdir) $(HEADER_DEPS) -fld_page lib $(srcdir) $(HEADER_DEPS) -fld_stat lib $(srcdir) $(HEADER_DEPS) -fld_type lib $(srcdir) $(HEADER_DEPS) -fld_user lib $(srcdir) $(HEADER_DEPS) -frm_cursor lib $(srcdir) $(HEADER_DEPS) -frm_data lib $(srcdir) $(HEADER_DEPS) -frm_def lib $(srcdir) $(HEADER_DEPS) -frm_driver lib $(srcdir) $(HEADER_DEPS) -frm_hook lib $(srcdir) $(HEADER_DEPS) -frm_opts lib $(srcdir) $(HEADER_DEPS) -frm_page lib $(srcdir) $(HEADER_DEPS) -frm_post lib $(srcdir) $(HEADER_DEPS) -frm_req_name lib $(srcdir) $(HEADER_DEPS) -frm_scale lib $(srcdir) $(HEADER_DEPS) -frm_sub lib $(srcdir) $(HEADER_DEPS) -frm_user lib $(srcdir) $(HEADER_DEPS) -frm_win lib $(srcdir) $(HEADER_DEPS) -fty_alnum lib $(srcdir) $(HEADER_DEPS) -fty_alpha lib $(srcdir) $(HEADER_DEPS) -fty_enum lib $(srcdir) $(HEADER_DEPS) -fty_generic lib $(srcdir) $(HEADER_DEPS) -fty_int lib $(srcdir) $(HEADER_DEPS) -fty_ipv4 lib $(srcdir) $(HEADER_DEPS) -fty_num lib $(srcdir) $(HEADER_DEPS) -fty_regex lib $(srcdir) $(HEADER_DEPS) - -# vile:makemode diff --git a/deps/ncurses-5.9/headers.sh b/deps/ncurses-5.9/headers.sh deleted file mode 100755 index a7a93b8..0000000 --- a/deps/ncurses-5.9/headers.sh +++ /dev/null @@ -1,37 +0,0 @@ -#! /bin/sh -# 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 -# directory that is used to adjust includes for header files that reside in a -# subdirectory of /usr/include, etc. -PRG="" -while test $# != 3 -do -PRG="$PRG $1"; shift -done -DST=$1 -REF=$2 -SRC=$3 -TMPSRC=${TMPDIR:-/tmp}/`basename $SRC`$$ -TMPSED=${TMPDIR:-/tmp}/headers.sed$$ -echo installing $SRC in $DST -case $DST in -/*/include/*) - END=`basename $DST` - for i in `cat $REF/../*/headers |fgrep -v "#"` - do - NAME=`basename $i` - echo "s/<$NAME>/<$END\/$NAME>/" >> $TMPSED - done - ;; -*) - echo "" >> $TMPSED - ;; -esac -rm -f $TMPSRC -sed -f $TMPSED $SRC > $TMPSRC -NAME=`basename $SRC` -# Just in case someone gzip'd manpages, remove the conflicting copy. -test -f $DST/$NAME.gz && rm -f $DST/$NAME.gz - -eval $PRG $TMPSRC $DST/$NAME -rm -f $TMPSRC $TMPSED diff --git a/deps/ncurses-5.9/include/MKncurses_def.sh b/deps/ncurses-5.9/include/MKncurses_def.sh deleted file mode 100755 index 4aac865..0000000 --- a/deps/ncurses-5.9/include/MKncurses_def.sh +++ /dev/null @@ -1,80 +0,0 @@ -#! /bin/sh -# $Id: MKncurses_def.sh,v 1.2 2003/10/25 16:19:46 tom Exp $ -############################################################################## -# Copyright (c) 2000 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. # -############################################################################## -# -# MKncurses_def.sh -- generate fallback definitions for ncurses_cfg.h -# -# Author: Thomas E. Dickey 2000 -# -# Given the choice between constructs such as -# -# #if defined(foo) && foo -# #if foo -# -# we chose the latter. It is guaranteed by the language standard, and there -# appear to be no broken compilers that do not honor that detail. But some -# people want to use gcc's -Wundef option (corresponding to one of the less -# useful features in Watcom's compiler) to check for misspellings. So we -# generate a set of fallback definitions to quiet the warnings without making -# the code ugly. -# -DEFS="${1-ncurses_defs}" -cat < 1992,1995 */" - print "/* and: Eric S. Raymond */" - print "/* and: Thomas E. Dickey 1995-on */" - print "/****************************************************************************/" - print "" - print "/* $Id: MKterm.h.awk.in,v 1.58 2010/01/09 19:53:26 tom Exp $ */" - print "" - print "/*" - print "** term.h -- Definition of struct term" - print "*/" - print "" - print "#ifndef NCURSES_TERM_H_incl" - print "#define NCURSES_TERM_H_incl 1" - print "" - print "#undef NCURSES_VERSION" - print "#define NCURSES_VERSION \"5.9\"" - print "" - print "#include " - print "" - print "#ifdef __cplusplus" - print "extern \"C\" {" - print "#endif" - print "" - print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H" - print " * definition (based on the system for which this was configured)." - print " */" - print "" - print "#undef NCURSES_CONST" - print "#define NCURSES_CONST /*nothing*/" - print "" - print "#undef NCURSES_SBOOL" - print "#define NCURSES_SBOOL char" - print "" - print "#undef NCURSES_XNAMES" - print "#define NCURSES_XNAMES 1" - print "" - print "/* We will 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 1 && 1" - print "" - print "#undef TERMIOS" - print "#define TERMIOS 1" - print "" - print "#include " - print "#define TTY struct termios" - print "" - print "#else /* !HAVE_TERMIOS_H */" - print "" - print "/* #if HAVE_TERMIO_H */" - print "#if 1" - print "" - print "#undef TERMIOS" - print "#define TERMIOS 1" - print "" - print "#include " - print "#define TTY struct termio" - print "" - print "/* Add definitions to make termio look like termios." - print " * But ifdef it, since there are some implementations" - print " * that try to do this for us in a fake ." - print " */" - print "#ifndef TCSANOW" - print "#define TCSANOW TCSETA" - print "#endif" - print "#ifndef TCSADRAIN" - print "#define TCSADRAIN TCSETAW" - print "#endif" - print "#ifndef TCSAFLUSH" - print "#define TCSAFLUSH TCSETAF" - print "#endif" - print "#ifndef tcsetattr" - print "#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)" - print "#endif" - print "#ifndef tcgetattr" - print "#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)" - print "#endif" - print "#ifndef cfgetospeed" - print "#define cfgetospeed(t) ((t)->c_cflag & CBAUD)" - print "#endif" - print "#ifndef TCIFLUSH " - print "#define TCIFLUSH 0" - print "#endif" - print "#ifndef TCOFLUSH " - print "#define TCOFLUSH 1" - print "#endif" - print "#ifndef TCIOFLUSH " - print "#define TCIOFLUSH 2" - print "#endif" - print "#ifndef tcflush" - print "#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)" - print "#endif" - print "" - print "#else /* !HAVE_TERMIO_H */" - print "" - print "#if __MINGW32__" - print "# include " - print "# define TTY struct termios" - print "#else" - print "#undef TERMIOS" - print "#include " - print "#include " - print "#define TTY struct sgttyb" - print "#endif /* MINGW32 */" - print "#endif /* HAVE_TERMIO_H */" - 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 "#else" - print "#define GET_TTY(fd, buf) gtty(fd, buf)" - print "#define SET_TTY(fd, buf) stty(fd, buf)" - print "#endif" - print "" - print "#define NAMESIZE 256" - print "" - print "#define CUR cur_term->type." - print "" - } - -$2 == "%%-STOP-HERE-%%" { - print "" - printf "#define BOOLWRITE %d\n", BoolCount - printf "#define NUMWRITE %d\n", NumberCount - printf "#define STRWRITE %d\n", StringCount - print "" - print "/* older synonyms for some capabilities */" - print "#define beehive_glitch no_esc_ctlc" - print "#define teleray_glitch dest_tabs_magic_smso" - print "#define micro_char_size micro_col_size" - print "" - print "#ifdef __INTERNAL_CAPS_VISIBLE" - } - -/^#/ {next;} - -$1 == "acs_chars" {acsindex = StringCount} - -$3 == "bool" { - printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++ - } - -$3 == "num" { - printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++ - } - -$3 == "str" { - printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++ - } - -END { - print "#endif /* __INTERNAL_CAPS_VISIBLE */" - print "" - print "" - print "/*" - print " * Predefined terminfo array sizes" - print " */" - printf "#define BOOLCOUNT %d\n", BoolCount - printf "#define NUMCOUNT %d\n", NumberCount - printf "#define STRCOUNT %d\n", StringCount - print "" - print "/* used by code for comparing entries */" - print "#define acs_chars_index ", acsindex - print "" - print "typedef struct termtype { /* in-core form of terminfo data */" - print " char *term_names; /* str_table offset of term names */" - print " char *str_table; /* pointer to string table */" - print " NCURSES_SBOOL *Booleans; /* array of boolean values */" - print " short *Numbers; /* array of integer values */" - print " char **Strings; /* array of string offsets */" - print "" - print "#if NCURSES_XNAMES" - print " char *ext_str_table; /* pointer to extended string table */" - print " char **ext_Names; /* corresponding names */" - print "" - print " unsigned short num_Booleans;/* count total Booleans */" - print " unsigned short num_Numbers; /* count total Numbers */" - print " unsigned short num_Strings; /* count total Strings */" - print "" - print " unsigned short ext_Booleans;/* count extensions to Booleans */" - print " unsigned short ext_Numbers; /* count extensions to Numbers */" - print " unsigned short ext_Strings; /* count extensions to Strings */" - print "#endif /* NCURSES_XNAMES */" - print "" - print "} TERMTYPE;" - print "" - print "typedef struct term { /* describe an actual terminal */" - print " TERMTYPE type; /* terminal type description */" - print " short Filedes; /* file description being written to */" - print " TTY Ottyb, /* original state of the terminal */" - print " Nttyb; /* current state of the terminal */" - print " int _baudrate; /* used to compute padding */" - print " char * _termname; /* used for termname() */" - print "} TERMINAL;" - print "" - print "#if 0 && !0" - print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" - print "#elif 0" - print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);" - print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())" - print "#else" - print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" - print "#endif" - print "" - print "#if 0 || 0" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);" - print "" - print "#define boolnames NCURSES_PUBLIC_VAR(boolnames())" - print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())" - print "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())" - print "#define numnames NCURSES_PUBLIC_VAR(numnames())" - print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())" - print "#define numfnames NCURSES_PUBLIC_VAR(numfnames())" - print "#define strnames NCURSES_PUBLIC_VAR(strnames())" - print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())" - print "#define strfnames NCURSES_PUBLIC_VAR(strfnames())" - print "" - print "#else" - print "" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];" - print "" - print "#endif" - print "" - print "/* internals */" - print "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);" - print "extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf);" - print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);" - print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *);" - print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);" - print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);" - print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);" - print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);" - print "" - print "/* entry points */" - print "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);" - print "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);" - print "" - print "/* miscellaneous entry points */" - print "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);" - print "extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *);" - print "" - print "/* terminfo entry points, also declared in curses.h */" - print "#if !defined(__NCURSES_H)" - print "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT_VAR(char) ttytype[];" - print "extern NCURSES_EXPORT(int) putp (const char *);" - print "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);" - print "" - print "#if 1 /* NCURSES_TPARM_VARARGS */" - print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */" - print "#else" - print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */" - print "extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */" - print "#endif" - print "" - print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */" - print "" - print "#endif /* __NCURSES_H */" - print "" - print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */" - print "#if !defined(NCURSES_TERMCAP_H_incl)" - print "extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);" - print "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);" - print "extern NCURSES_EXPORT(int) tgetent (char *, const char *);" - print "extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));" - print "#endif /* NCURSES_TERMCAP_H_incl */" - print "" - print "/*" - print " * Include curses.h before term.h to enable these extensions." - print " */" - print "#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0)" - print "" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, NCURSES_CONST char *);" - print "" - print "#if 1 /* NCURSES_TPARM_VARARGS */" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, ...); /* special */" - print "#else" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, NCURSES_CONST char *, ...); /* special */" - print "#endif" - print "" - print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, NCURSES_CONST char *, char **);" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC);" - print "" - print "extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *);" - print "" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *);" - print "#endif /* NCURSES_SP_FUNCS */" - print "" - print "#ifdef __cplusplus" - print "}" - print "#endif" - print "" - print "#endif /* NCURSES_TERM_H_incl */" - } diff --git a/deps/ncurses-5.9/include/MKterm.h.awk.in b/deps/ncurses-5.9/include/MKterm.h.awk.in deleted file mode 100644 index 261c40d..0000000 --- a/deps/ncurses-5.9/include/MKterm.h.awk.in +++ /dev/null @@ -1,362 +0,0 @@ -# vile:awkmode -BEGIN { - print "/****************************************************************************" - print " * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. *" - print " * *" - print " * Permission is hereby granted, free of charge, to any person obtaining a *" - print " * copy of this software and associated documentation files (the *" - print " * \"Software\"), to deal in the Software without restriction, including *" - print " * without limitation the rights to use, copy, modify, merge, publish, *" - print " * distribute, distribute with modifications, sublicense, and/or sell *" - print " * copies of the Software, and to permit persons to whom the Software is *" - print " * furnished to do so, subject to the following conditions: *" - print " * *" - print " * The above copyright notice and this permission notice shall be included *" - print " * in all copies or substantial portions of the Software. *" - print " * *" - print " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS *" - print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *" - print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *" - print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *" - print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *" - print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *" - print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *" - print " * *" - print " * Except as contained in this notice, the name(s) of the above copyright *" - print " * holders shall not be used in advertising or otherwise to promote the *" - print " * sale, use or other dealings in this Software without prior written *" - print " * authorization. *" - print " ****************************************************************************/" - print "" - print "/****************************************************************************/" - print "/* Author: Zeyd M. Ben-Halim 1992,1995 */" - print "/* and: Eric S. Raymond */" - print "/* and: Thomas E. Dickey 1995-on */" - print "/****************************************************************************/" - print "" - print "/* $Id: MKterm.h.awk.in,v 1.58 2010/01/09 19:53:26 tom Exp $ */" - print "" - print "/*" - print "** term.h -- Definition of struct term" - print "*/" - print "" - print "#ifndef NCURSES_TERM_H_incl" - print "#define NCURSES_TERM_H_incl 1" - print "" - print "#undef NCURSES_VERSION" - print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\"" - print "" - print "#include " - print "" - print "#ifdef __cplusplus" - print "extern \"C\" {" - print "#endif" - print "" - print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H" - print " * definition (based on the system for which this was configured)." - print " */" - print "" - print "#undef NCURSES_CONST" - print "#define NCURSES_CONST @NCURSES_CONST@" - print "" - print "#undef NCURSES_SBOOL" - print "#define NCURSES_SBOOL @NCURSES_SBOOL@" - print "" - print "#undef NCURSES_XNAMES" - print "#define NCURSES_XNAMES @NCURSES_XNAMES@" - print "" - print "/* We will 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 "" - print "#undef TERMIOS" - print "#define TERMIOS 1" - print "" - print "#include " - print "#define TTY struct termios" - print "" - print "#else /* !HAVE_TERMIOS_H */" - print "" - print "/* #if HAVE_TERMIO_H */" - print "#if @HAVE_TERMIO_H@" - print "" - print "#undef TERMIOS" - print "#define TERMIOS 1" - print "" - print "#include " - print "#define TTY struct termio" - print "" - print "/* Add definitions to make termio look like termios." - print " * But ifdef it, since there are some implementations" - print " * that try to do this for us in a fake ." - print " */" - print "#ifndef TCSANOW" - print "#define TCSANOW TCSETA" - print "#endif" - print "#ifndef TCSADRAIN" - print "#define TCSADRAIN TCSETAW" - print "#endif" - print "#ifndef TCSAFLUSH" - print "#define TCSAFLUSH TCSETAF" - print "#endif" - print "#ifndef tcsetattr" - print "#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg)" - print "#endif" - print "#ifndef tcgetattr" - print "#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg)" - print "#endif" - print "#ifndef cfgetospeed" - print "#define cfgetospeed(t) ((t)->c_cflag & CBAUD)" - print "#endif" - print "#ifndef TCIFLUSH " - print "#define TCIFLUSH 0" - print "#endif" - print "#ifndef TCOFLUSH " - print "#define TCOFLUSH 1" - print "#endif" - print "#ifndef TCIOFLUSH " - print "#define TCIOFLUSH 2" - print "#endif" - print "#ifndef tcflush" - print "#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg)" - print "#endif" - print "" - print "#else /* !HAVE_TERMIO_H */" - print "" - print "#if __MINGW32__" - print "# include " - print "# define TTY struct termios" - print "#else" - print "#undef TERMIOS" - print "#include " - print "#include " - print "#define TTY struct sgttyb" - print "#endif /* MINGW32 */" - print "#endif /* HAVE_TERMIO_H */" - 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 "#else" - print "#define GET_TTY(fd, buf) gtty(fd, buf)" - print "#define SET_TTY(fd, buf) stty(fd, buf)" - print "#endif" - print "" - print "#define NAMESIZE 256" - print "" - print "#define CUR cur_term->type." - print "" - } - -$2 == "%%-STOP-HERE-%%" { - print "" - printf "#define BOOLWRITE %d\n", BoolCount - printf "#define NUMWRITE %d\n", NumberCount - printf "#define STRWRITE %d\n", StringCount - print "" - print "/* older synonyms for some capabilities */" - print "#define beehive_glitch no_esc_ctlc" - print "#define teleray_glitch dest_tabs_magic_smso" - print "#define micro_char_size micro_col_size" - print "" - print "#ifdef __INTERNAL_CAPS_VISIBLE" - } - -/^#/ {next;} - -$1 == "acs_chars" {acsindex = StringCount} - -$3 == "bool" { - printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++ - } - -$3 == "num" { - printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++ - } - -$3 == "str" { - printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++ - } - -END { - print "#endif /* __INTERNAL_CAPS_VISIBLE */" - print "" - print "" - print "/*" - print " * Predefined terminfo array sizes" - print " */" - printf "#define BOOLCOUNT %d\n", BoolCount - printf "#define NUMCOUNT %d\n", NumberCount - printf "#define STRCOUNT %d\n", StringCount - print "" - print "/* used by code for comparing entries */" - print "#define acs_chars_index ", acsindex - print "" - print "typedef struct termtype { /* in-core form of terminfo data */" - print " char *term_names; /* str_table offset of term names */" - print " char *str_table; /* pointer to string table */" - print " NCURSES_SBOOL *Booleans; /* array of boolean values */" - print " short *Numbers; /* array of integer values */" - print " char **Strings; /* array of string offsets */" - print "" - print "#if NCURSES_XNAMES" - print " char *ext_str_table; /* pointer to extended string table */" - print " char **ext_Names; /* corresponding names */" - print "" - print " unsigned short num_Booleans;/* count total Booleans */" - print " unsigned short num_Numbers; /* count total Numbers */" - print " unsigned short num_Strings; /* count total Strings */" - print "" - print " unsigned short ext_Booleans;/* count extensions to Booleans */" - print " unsigned short ext_Numbers; /* count extensions to Numbers */" - print " unsigned short ext_Strings; /* count extensions to Strings */" - print "#endif /* NCURSES_XNAMES */" - print "" - print "} TERMTYPE;" - print "" - print "typedef struct term { /* describe an actual terminal */" - print " TERMTYPE type; /* terminal type description */" - print " short Filedes; /* file description being written to */" - print " TTY Ottyb, /* original state of the terminal */" - print " Nttyb; /* current state of the terminal */" - print " int _baudrate; /* used to compute padding */" - print " char * _termname; /* used for termname() */" - print "} TERMINAL;" - print "" - print "#if @BROKEN_LINKER@ && !@cf_cv_enable_reentrant@" - print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" - print "#elif @cf_cv_enable_reentrant@" - print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);" - print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())" - print "#else" - print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" - print "#endif" - print "" - 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);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);" - print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);" - print "" - print "#define boolnames NCURSES_PUBLIC_VAR(boolnames())" - print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())" - print "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())" - print "#define numnames NCURSES_PUBLIC_VAR(numnames())" - print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())" - print "#define numfnames NCURSES_PUBLIC_VAR(numfnames())" - print "#define strnames NCURSES_PUBLIC_VAR(strnames())" - print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())" - print "#define strfnames NCURSES_PUBLIC_VAR(strfnames())" - print "" - print "#else" - print "" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];" - print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];" - print "" - print "#endif" - print "" - print "/* internals */" - print "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);" - print "extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf);" - print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);" - print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *);" - print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int);" - print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);" - print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);" - print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);" - print "" - print "/* entry points */" - print "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);" - print "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);" - print "" - print "/* miscellaneous entry points */" - print "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);" - print "extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *);" - print "" - print "/* terminfo entry points, also declared in curses.h */" - print "#if !defined(__NCURSES_H)" - print "extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT_VAR(char) ttytype[];" - print "extern NCURSES_EXPORT(int) putp (const char *);" - print "extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *);" - print "" - print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */" - print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */" - print "#else" - print "extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */" - print "extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */" - print "#endif" - print "" - print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */" - print "" - print "#endif /* __NCURSES_H */" - print "" - print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */" - print "#if !defined(NCURSES_TERMCAP_H_incl)" - print "extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **);" - print "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);" - print "extern NCURSES_EXPORT(int) tgetent (char *, const char *);" - print "extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));" - print "#endif /* NCURSES_TERMCAP_H_incl */" - print "" - print "/*" - print " * Include curses.h before term.h to enable these extensions." - print " */" - print "#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0)" - print "" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, NCURSES_CONST char *);" - print "" - print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, ...); /* special */" - print "#else" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, NCURSES_CONST char *, ...); /* special */" - print "#endif" - print "" - print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, NCURSES_CONST char *, char **);" - print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, NCURSES_CONST char *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC);" - print "" - print "extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *);" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *);" - print "" - print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *);" - print "#endif /* NCURSES_SP_FUNCS */" - print "" - print "#ifdef __cplusplus" - print "}" - print "#endif" - print "" - print "#endif /* NCURSES_TERM_H_incl */" - } diff --git a/deps/ncurses-5.9/include/Makefile b/deps/ncurses-5.9/include/Makefile deleted file mode 100644 index 7e94214..0000000 --- a/deps/ncurses-5.9/include/Makefile +++ /dev/null @@ -1,177 +0,0 @@ -# $Id: Makefile.in,v 1.40 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998,2009,2010 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: Thomas E. Dickey 1996-2001 -# -# Makefile for ncurses source code. -# -# This makes/installs ncurses include-files -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - -THIS = Makefile - -DESTDIR = -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -includedir = ${prefix}/include/ncurses - -INSTALL = /bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 - -AWK = gawk -LN_S = ln -s -f - -CTAGS = -ETAGS = - -VERSION = 5.9 - -# The "Caps" file specifies the terminfo database format, as well as the list -# of function keys. -TERMINFO_CAPS = $(srcdir)/Caps - -# These files are generated by the configure script -CONFIG_SRC = \ - MKterm.h.awk \ - curses.head \ - ncurses_dll.h \ - termcap.h \ - unctrl.h - -# These files are generated by this makefile -AUTO_SRC = \ - curses.h \ - hashsize.h \ - ncurses_def.h \ - parametrized.h \ - config.h \ - term.h - -################################################################################ -all \ -libs \ -depend \ -sources \ -install :: $(AUTO_SRC) - -curses.h : $(TERMINFO_CAPS) \ - curses.head \ - $(srcdir)/curses.tail \ - $(srcdir)/MKkey_defs.sh - cat curses.head >$@ - AWK=$(AWK) sh $(srcdir)/MKkey_defs.sh $(TERMINFO_CAPS) >>$@ - sh -c 'if test "chtype" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi' - cat $(srcdir)/curses.tail >>$@ - -term.h: $(TERMINFO_CAPS) MKterm.h.awk - $(AWK) -f MKterm.h.awk $(TERMINFO_CAPS) > $@ - sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ - -hashsize.h: $(TERMINFO_CAPS) $(srcdir)/MKhashsize.sh - sh $(srcdir)/MKhashsize.sh $(TERMINFO_CAPS) >$@ - -ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh - AWK=$(AWK) sh $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@ - -parametrized.h: $(TERMINFO_CAPS) $(srcdir)/MKparametrized.sh - AWK=$(AWK) sh $(srcdir)/MKparametrized.sh $(TERMINFO_CAPS) >$@ - -# This is required by pthread.h on MinGW -config.h: - touch $@ - -tags: - $(CTAGS) *.[ch] - -#TAGS: -# $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile $(CONFIG_SRC) config.h - -realclean :: distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### - -# generated by mk-hdr.awk -# subset: ticlib+termlib+ext_tinfo base+ext_funcs -# compat: yes - -${DESTDIR}${includedir} : - mkdir -p $@ - -install \ -install.libs \ -install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \ - term.h \ - curses.h \ - unctrl.h \ - termcap.h \ - ncurses_dll.h \ - $(srcdir)/tic.h \ - $(srcdir)/term_entry.h \ - $(srcdir)/nc_tparm.h - @ (cd ${DESTDIR}${includedir} && rm -f term.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} term.h - @ (cd ${DESTDIR}${includedir} && rm -f curses.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} curses.h - @ (cd ${DESTDIR}${includedir} && rm -f ncurses.h && ${LN_S} curses.h ncurses.h) - @ (cd ${DESTDIR}${includedir} && rm -f unctrl.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} unctrl.h - @ (cd ${DESTDIR}${includedir} && rm -f termcap.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} termcap.h - @ (cd ${DESTDIR}${includedir} && rm -f ncurses_dll.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} ncurses_dll.h - @ (cd ${DESTDIR}${includedir} && rm -f tic.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/tic.h - @ (cd ${DESTDIR}${includedir} && rm -f term_entry.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/term_entry.h - @ (cd ${DESTDIR}${includedir} && rm -f nc_tparm.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/nc_tparm.h - -uninstall \ -uninstall.libs \ -uninstall.includes :: - -@ (cd ${DESTDIR}${includedir} && rm -f term.h) - -@ (cd ${DESTDIR}${includedir} && rm -f curses.h) - -@ (cd ${DESTDIR}${includedir} && rm -f ncurses.h) - -@ (cd ${DESTDIR}${includedir} && rm -f unctrl.h) - -@ (cd ${DESTDIR}${includedir} && rm -f termcap.h) - -@ (cd ${DESTDIR}${includedir} && rm -f ncurses_dll.h) - -@ (cd ${DESTDIR}${includedir} && rm -f tic.h) - -@ (cd ${DESTDIR}${includedir} && rm -f term_entry.h) - -@ (cd ${DESTDIR}${includedir} && rm -f nc_tparm.h) diff --git a/deps/ncurses-5.9/include/Makefile.in b/deps/ncurses-5.9/include/Makefile.in deleted file mode 100644 index e2a2f8a..0000000 --- a/deps/ncurses-5.9/include/Makefile.in +++ /dev/null @@ -1,136 +0,0 @@ -# $Id: Makefile.in,v 1.40 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998,2009,2010 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: Thomas E. Dickey 1996-2001 -# -# Makefile for ncurses source code. -# -# This makes/installs ncurses include-files -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -includedir = @includedir@ - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -AWK = @AWK@ -LN_S = @LN_S@ - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -VERSION = @cf_cv_rel_version@ - -# The "Caps" file specifies the terminfo database format, as well as the list -# of function keys. -TERMINFO_CAPS = $(srcdir)/@TERMINFO_CAPS@ - -# These files are generated by the configure script -CONFIG_SRC = \ - MKterm.h.awk \ - curses.head \ - ncurses_dll.h \ - termcap.h \ - unctrl.h - -# These files are generated by this makefile -AUTO_SRC = \ - curses.h \ - hashsize.h \ - ncurses_def.h \ - parametrized.h \ - config.h \ - term.h - -################################################################################ -all \ -libs \ -depend \ -sources \ -install :: $(AUTO_SRC) - -curses.h : $(TERMINFO_CAPS) \ - curses.head \ - $(srcdir)/curses.tail \ - $(srcdir)/MKkey_defs.sh - cat curses.head >$@ - AWK=$(AWK) sh $(srcdir)/MKkey_defs.sh $(TERMINFO_CAPS) >>$@ - sh -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi' - cat $(srcdir)/curses.tail >>$@ - -term.h: $(TERMINFO_CAPS) MKterm.h.awk - $(AWK) -f MKterm.h.awk $(TERMINFO_CAPS) > $@ - sh $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ - -hashsize.h: $(TERMINFO_CAPS) $(srcdir)/MKhashsize.sh - sh $(srcdir)/MKhashsize.sh $(TERMINFO_CAPS) >$@ - -ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh - AWK=$(AWK) sh $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@ - -parametrized.h: $(TERMINFO_CAPS) $(srcdir)/MKparametrized.sh - AWK=$(AWK) sh $(srcdir)/MKparametrized.sh $(TERMINFO_CAPS) >$@ - -# This is required by pthread.h on MinGW -config.h: - touch $@ - -tags: - $(CTAGS) *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile $(CONFIG_SRC) config.h - -realclean :: distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/include/config.h b/deps/ncurses-5.9/include/config.h deleted file mode 100644 index e69de29..0000000 diff --git a/deps/ncurses-5.9/include/curses.h b/deps/ncurses-5.9/include/curses.h deleted file mode 100644 index c188291..0000000 --- a/deps/ncurses-5.9/include/curses.h +++ /dev/null @@ -1,1675 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* $Id: curses.h.in,v 1.220 2011/01/22 19:47:20 tom Exp $ */ - -#ifndef __NCURSES_H -#define __NCURSES_H - -#define CURSES 1 -#define CURSES_H 1 - -/* These are defined only in curses.h, and are used for conditional compiles */ -#define NCURSES_VERSION_MAJOR 5 -#define NCURSES_VERSION_MINOR 9 -#define NCURSES_VERSION_PATCH 20110404 - -/* This is defined in more than one ncurses header, for identification */ -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.9" - -/* - * Identify the mouse encoding version. - */ -#define NCURSES_MOUSE_VERSION 1 - -/* - * Definitions to facilitate DLL's. - */ -#include - -/* - * User-definable tweak to disable the include of . - */ -#ifndef NCURSES_ENABLE_STDBOOL_H -#define NCURSES_ENABLE_STDBOOL_H 1 -#endif - -/* - * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses - * configured using --disable-macros. - */ -#ifdef NCURSES_NOMACROS -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T attr_t -#endif -#endif /* NCURSES_NOMACROS */ - -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T int -#endif - -/* - * Expands to 'const' if ncurses is configured using --enable-const. Note that - * doing so makes it incompatible with other implementations of X/Open Curses. - */ -#undef NCURSES_CONST -#define NCURSES_CONST /*nothing*/ - -#undef NCURSES_INLINE -#define NCURSES_INLINE inline - -/* - * The internal type used for color values - */ -#undef NCURSES_COLOR_T -#define NCURSES_COLOR_T short - -/* - * Definition used to make WINDOW and similar structs opaque. - */ -#ifndef NCURSES_OPAQUE -#define NCURSES_OPAQUE 0 -#endif - -/* - * The reentrant code relies on the opaque setting, but adds features. - */ -#ifndef NCURSES_REENTRANT -#define NCURSES_REENTRANT 0 -#endif - -/* - * Control whether bindings for interop support are added. - */ -#undef NCURSES_INTEROP_FUNCS -#define NCURSES_INTEROP_FUNCS 0 - -/* - * The internal type used for window dimensions. - */ -#undef NCURSES_SIZE_T -#define NCURSES_SIZE_T short - -/* - * Control whether tparm() supports varargs or fixed-parameter list. - */ -#undef NCURSES_TPARM_VARARGS -#define NCURSES_TPARM_VARARGS 1 - -/* - * NCURSES_CH_T is used in building the library, but not used otherwise in - * this header file, since that would make the normal/wide-character versions - * of the header incompatible. - */ -#undef NCURSES_CH_T -#define NCURSES_CH_T chtype - -#if 0 && defined(_LP64) -typedef unsigned chtype; -typedef unsigned mmask_t; -#else -typedef unsigned int chtype; -typedef unsigned long mmask_t; -#endif - -/* - * We need FILE, etc. Include this before checking any feature symbols. - */ -#include - -/* - * With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or - * conflicting) when _XOPEN_SOURCE is 500 or greater. - */ -#undef NCURSES_WIDECHAR -#if defined(_XOPEN_SOURCE_EXTENDED) || defined(_XPG5) -#define NCURSES_WIDECHAR -#endif - -#include /* we need va_list */ -#ifdef NCURSES_WIDECHAR -#include /* we want wchar_t */ -#endif - -/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also - * implement it. If so, we must use the C++ compiler's type to avoid conflict - * with other interfaces. - * - * A further complication is that may declare 'bool' to be a - * different type, such as an enum which is not necessarily compatible with - * C++. If we have , make 'bool' a macro, so users may #undef it. - * Otherwise, let it remain a typedef to avoid conflicts with other #define's. - * In either case, make a typedef for NCURSES_BOOL which can be used if needed - * from either C or C++. - */ - -#undef TRUE -#define TRUE 1 - -#undef FALSE -#define FALSE 0 - -typedef unsigned char NCURSES_BOOL; - -#if defined(__cplusplus) /* __cplusplus, etc. */ - -/* use the C++ compiler's bool type */ -#define NCURSES_BOOL bool - -#else /* c89, c99, etc. */ - -#if NCURSES_ENABLE_STDBOOL_H -#include -/* use whatever the C compiler decides bool really is */ -#define NCURSES_BOOL bool -#else -/* there is no predefined bool - use our own */ -#undef bool -#define bool NCURSES_BOOL -#endif - -#endif /* !__cplusplus, etc. */ - -#ifdef __cplusplus -extern "C" { -#define NCURSES_CAST(type,value) static_cast(value) -#else -#define NCURSES_CAST(type,value) (type)(value) -#endif - -/* - * X/Open attributes. In the ncurses implementation, they are identical to the - * A_ attributes. - */ -#define WA_ATTRIBUTES A_ATTRIBUTES -#define WA_NORMAL A_NORMAL -#define WA_STANDOUT A_STANDOUT -#define WA_UNDERLINE A_UNDERLINE -#define WA_REVERSE A_REVERSE -#define WA_BLINK A_BLINK -#define WA_DIM A_DIM -#define WA_BOLD A_BOLD -#define WA_ALTCHARSET A_ALTCHARSET -#define WA_INVIS A_INVIS -#define WA_PROTECT A_PROTECT -#define WA_HORIZONTAL A_HORIZONTAL -#define WA_LEFT A_LEFT -#define WA_LOW A_LOW -#define WA_RIGHT A_RIGHT -#define WA_TOP A_TOP -#define WA_VERTICAL A_VERTICAL - -/* colors */ -#define COLOR_BLACK 0 -#define COLOR_RED 1 -#define COLOR_GREEN 2 -#define COLOR_YELLOW 3 -#define COLOR_BLUE 4 -#define COLOR_MAGENTA 5 -#define COLOR_CYAN 6 -#define COLOR_WHITE 7 - -/* line graphics */ - -#if 0 || NCURSES_REENTRANT -NCURSES_WRAPPED_VAR(chtype*, acs_map); -#define acs_map NCURSES_PUBLIC_VAR(acs_map()) -#else -extern NCURSES_EXPORT_VAR(chtype) acs_map[]; -#endif - -#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)]) - -/* VT100 symbols begin here */ -#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */ -#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */ -#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */ -#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */ -#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */ -#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */ -#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */ -#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */ -#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */ -#define ACS_VLINE NCURSES_ACS('x') /* vertical line */ -#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */ -#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */ -#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */ -#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */ -#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */ -#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */ -#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */ -#define ACS_BULLET NCURSES_ACS('~') /* bullet */ -/* Teletype 5410v1 symbols begin here */ -#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */ -#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */ -#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */ -#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */ -#define ACS_BOARD NCURSES_ACS('h') /* board of squares */ -#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */ -#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */ -/* - * These aren't documented, but a lot of System Vs have them anyway - * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). - * The ACS_names may not match AT&T's, our source didn't know them. - */ -#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */ -#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */ -#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */ -#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */ -#define ACS_PI NCURSES_ACS('{') /* Pi */ -#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */ -#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */ - -/* - * 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. - */ -#define ACS_BSSB ACS_ULCORNER -#define ACS_SSBB ACS_LLCORNER -#define ACS_BBSS ACS_URCORNER -#define ACS_SBBS ACS_LRCORNER -#define ACS_SBSS ACS_RTEE -#define ACS_SSSB ACS_LTEE -#define ACS_SSBS ACS_BTEE -#define ACS_BSSS ACS_TTEE -#define ACS_BSBS ACS_HLINE -#define ACS_SBSB ACS_VLINE -#define ACS_SSSS ACS_PLUS - -#undef ERR -#define ERR (-1) - -#undef OK -#define OK (0) - -/* values for the _flags member */ -#define _SUBWIN 0x01 /* is this a sub-window? */ -#define _ENDLINE 0x02 /* is the window flush right? */ -#define _FULLWIN 0x04 /* is the window full-screen? */ -#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ -#define _ISPAD 0x10 /* is this window a pad? */ -#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ -#define _WRAPPED 0x40 /* cursor was just wrappped */ - -/* - * this value is used in the firstchar and lastchar fields to mark - * unchanged lines - */ -#define _NOCHANGE -1 - -/* - * this value is used in the oldindex field to mark lines created by insertions - * and scrolls. - */ -#define _NEWINDEX -1 - -typedef struct screen SCREEN; -typedef struct _win_st WINDOW; - -typedef chtype attr_t; /* ...must be at least as wide as chtype */ - -#ifdef NCURSES_WIDECHAR - -#if 0 -#ifdef mblen /* libutf8.h defines it w/o undefining first */ -#undef mblen -#endif -#include -#endif - -#if 0 -#include /* ...to get mbstate_t, etc. */ -#endif - -#if 0 -typedef unsigned short wchar_t; -#endif - -#if 0 -typedef unsigned int wint_t; -#endif - -/* - * cchar_t stores an array of CCHARW_MAX wide characters. The first is - * normally a spacing character. The others are non-spacing. If those - * (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 5 -typedef struct -{ - attr_t attr; - wchar_t chars[CCHARW_MAX]; -#if 0 -#undef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS 20110404 - int ext_color; /* color pair, must be more than 16-bits */ -#endif -} -cchar_t; - -#endif /* NCURSES_WIDECHAR */ - -#if !NCURSES_OPAQUE -struct ldat; - -struct _win_st -{ - NCURSES_SIZE_T _cury, _curx; /* current cursor position */ - - /* window location and size */ - NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */ - NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */ - - short _flags; /* window state flags */ - - /* attribute tracking */ - attr_t _attrs; /* current attribute for non-space character */ - chtype _bkgd; /* current background char/attribute pair */ - - /* option values set by user */ - bool _notimeout; /* no time out on function-key entry? */ - bool _clear; /* consider all data in the window invalid? */ - bool _leaveok; /* OK to not reset cursor on exit? */ - bool _scroll; /* OK to scroll this window? */ - bool _idlok; /* OK to use insert/delete line? */ - bool _idcok; /* OK to use insert/delete char? */ - bool _immed; /* window in immed mode? (not yet used) */ - bool _sync; /* window in sync mode? */ - bool _use_keypad; /* process function keys into KEY_ symbols? */ - int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ - - struct ldat *_line; /* the actual line data */ - - /* global screen state */ - NCURSES_SIZE_T _regtop; /* top line of scrolling region */ - NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */ - - /* these are used only if this is a sub-window */ - int _parx; /* x coordinate of this window in parent */ - int _pary; /* y coordinate of this window in parent */ - WINDOW *_parent; /* pointer to parent if a sub-window */ - - /* these are used only if this is a pad */ - struct pdat - { - NCURSES_SIZE_T _pad_y, _pad_x; - NCURSES_SIZE_T _pad_top, _pad_left; - NCURSES_SIZE_T _pad_bottom, _pad_right; - } _pad; - - NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ - -#ifdef NCURSES_WIDECHAR - cchar_t _bkgrnd; /* current background char/attribute pair */ -#if 0 - int _color; /* current color-pair for non-space character */ -#endif -#endif -}; -#endif /* NCURSES_OPAQUE */ - -/* - * This is an extension to support events... - */ -#if 1 -#ifdef NCURSES_WGETCH_EVENTS -#if !defined(__BEOS__) || defined(__HAIKU__) - /* Fix _nc_timed_wait() on BEOS... */ -# define NCURSES_EVENT_VERSION 1 -#endif /* !defined(__BEOS__) */ - -/* - * Bits to set in _nc_event.data.flags - */ -# define _NC_EVENT_TIMEOUT_MSEC 1 -# define _NC_EVENT_FILE 2 -# define _NC_EVENT_FILE_READABLE 2 -# if 0 /* Not supported yet... */ -# define _NC_EVENT_FILE_WRITABLE 4 -# define _NC_EVENT_FILE_EXCEPTION 8 -# endif - -typedef struct -{ - int type; - union - { - long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */ - struct - { - unsigned int flags; - int fd; - unsigned int result; - } fev; /* _NC_EVENT_FILE */ - } data; -} _nc_event; - -typedef struct -{ - int count; - int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */ - _nc_event *events[1]; -} _nc_eventlist; - -extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *); /* experimental */ -extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *);/* experimental */ - -#endif /* NCURSES_WGETCH_EVENTS */ -#endif /* NCURSES_EXT_FUNCS */ - -/* - * GCC (and some other compilers) define '__attribute__'; we're using this - * macro to alert the compiler to flag inconsistencies in printf/scanf-like - * function calls. Just in case '__attribute__' isn't defined, make a dummy. - * Old versions of G++ do not accept it anyway, at least not consistently with - * GCC. - */ -#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__)) -#define __attribute__(p) /* nothing */ -#endif - -/* - * We cannot define these in ncurses_cfg.h, since they require parameters to be - * passed (that is non-portable). If you happen to be using gcc with warnings - * enabled, define - * GCC_PRINTF - * GCC_SCANF - * to improve checking of calls to printw(), etc. - */ -#ifndef GCC_PRINTFLIKE -#if defined(GCC_PRINTF) && !defined(printf) -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#else -#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_SCANFLIKE -#if defined(GCC_SCANF) && !defined(scanf) -#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) -#else -#define GCC_SCANFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif - -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -/* - * Curses uses a helper function. Define our type for this to simplify - * extending it for the sp-funcs feature. - */ -typedef int (*NCURSES_OUTC)(int); - -/* - * Function prototypes. This is the complete X/Open Curses list of required - * functions. Those marked `generated' will have sources generated from the - * macro definitions later in this file, in order to satisfy XPG4.2 - * requirements. - */ - -extern NCURSES_EXPORT(int) addch (const chtype); /* generated */ -extern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */ -extern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) addstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) baudrate (void); /* implemented */ -extern NCURSES_EXPORT(int) beep (void); /* implemented */ -extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */ -extern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */ -extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ -extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */ -extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */ -extern NCURSES_EXPORT(int) cbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) clear (void); /* generated */ -extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) clrtobot (void); /* generated */ -extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */ -extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) color_set (short,void*); /* generated */ -extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */ -extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) curs_set (int); /* implemented */ -extern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) delay_output (int); /* implemented */ -extern NCURSES_EXPORT(int) delch (void); /* generated */ -extern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) deleteln (void); /* generated */ -extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) doupdate (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) echo (void); /* implemented */ -extern NCURSES_EXPORT(int) echochar (const chtype); /* generated */ -extern NCURSES_EXPORT(int) erase (void); /* generated */ -extern NCURSES_EXPORT(int) endwin (void); /* implemented */ -extern NCURSES_EXPORT(char) erasechar (void); /* implemented */ -extern NCURSES_EXPORT(void) filter (void); /* implemented */ -extern NCURSES_EXPORT(int) flash (void); /* implemented */ -extern NCURSES_EXPORT(int) flushinp (void); /* implemented */ -extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getch (void); /* generated */ -extern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) getstr (char *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */ -extern NCURSES_EXPORT(int) halfdelay (int); /* implemented */ -extern NCURSES_EXPORT(bool) has_colors (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_ic (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_il (void); /* implemented */ -extern NCURSES_EXPORT(int) hline (chtype, int); /* generated */ -extern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) inch (void); /* generated */ -extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */ -extern NCURSES_EXPORT(int) init_color (short,short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) init_pair (short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) insch (chtype); /* generated */ -extern NCURSES_EXPORT(int) insdelln (int); /* generated */ -extern NCURSES_EXPORT(int) insertln (void); /* generated */ -extern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) insstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) instr (char *); /* generated */ -extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(bool) isendwin (void); /* implemented */ -extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */ -extern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char) killchar (void); /* implemented */ -extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char *) longname (void); /* implemented */ -extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) move (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */ -extern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(3,4); -extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(3,4); -extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */ -extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */ -extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) napms (int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */ -extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) nl (void); /* implemented */ -extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) noecho (void); /* implemented */ -extern NCURSES_EXPORT(int) nonl (void); /* implemented */ -extern NCURSES_EXPORT(void) noqiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) noraw (void); /* implemented */ -extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) pair_content (short,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */ -extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */ -extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */ - GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */ -extern NCURSES_EXPORT(void) qiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) raw (void); /* implemented */ -extern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) refresh (void); /* generated */ -extern NCURSES_EXPORT(int) resetty (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */ -extern NCURSES_EXPORT(int) savetty (void); /* implemented */ -extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(1,2); -extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scrl (int); /* generated */ -extern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */ -extern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */ -extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */ -extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*); /* implemented */ -extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_color (short); /* implemented */ -extern NCURSES_EXPORT(int) slk_init (int); /* implemented */ -extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */ -extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */ -extern NCURSES_EXPORT(int) standout (void); /* generated */ -extern NCURSES_EXPORT(int) standend (void); /* generated */ -extern NCURSES_EXPORT(int) start_color (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */ -extern NCURSES_EXPORT(char *) termname (void); /* implemented */ -extern NCURSES_EXPORT(void) timeout (int); /* generated */ -extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) typeahead (int); /* implemented */ -extern NCURSES_EXPORT(int) ungetch (int); /* implemented */ -extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) use_env (bool); /* implemented */ -extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */ -extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */ -extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */ -extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */ -extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */ -extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */ -extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*); /* implemented */ -extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */ -extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */ -extern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */ -extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */ -extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */ -extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */ -extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */ - GCC_PRINTFLIKE(2,3); -extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(2,3); -extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */ - -/* - * These are also declared in : - */ -extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) putp (const char *); /* implemented */ - -#if NCURSES_TPARM_VARARGS -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ -#endif - -extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */ - -/* - * These functions are not in X/Open, but we use them in macro definitions: - */ -extern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ - -/* - * vid_attr() was implemented originally based on a draft of X/Open curses. - */ -#ifndef NCURSES_WIDECHAR -#define vid_attr(a,pair,opts) vidattr(a) -#endif - -/* - * These functions are extensions - not in X/Open Curses. - */ -#if 1 -#undef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS 20110404 -typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); -typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); -extern NCURSES_EXPORT(bool) is_term_resized (int, int); -extern NCURSES_EXPORT(char *) keybound (int, int); -extern NCURSES_EXPORT(const char *) curses_version (void); -extern NCURSES_EXPORT(int) assume_default_colors (int, int); -extern NCURSES_EXPORT(int) define_key (const char *, int); -extern NCURSES_EXPORT(int) get_escdelay (void); -extern NCURSES_EXPORT(int) key_defined (const char *); -extern NCURSES_EXPORT(int) keyok (int, bool); -extern NCURSES_EXPORT(int) resize_term (int, int); -extern NCURSES_EXPORT(int) resizeterm (int, int); -extern NCURSES_EXPORT(int) set_escdelay (int); -extern NCURSES_EXPORT(int) set_tabsize (int); -extern NCURSES_EXPORT(int) use_default_colors (void); -extern NCURSES_EXPORT(int) use_extended_names (bool); -extern NCURSES_EXPORT(int) use_legacy_coding (int); -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); -extern NCURSES_EXPORT(void) nofilter(void); - -/* - * These extensions provide access to information stored in the WINDOW even - * when NCURSES_OPAQUE is set: - */ -extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_pad (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */ - -#else -#define curses_version() NCURSES_VERSION -#endif - -/* - * Extra extension-functions, which pass a SCREEN pointer rather than using - * a global variable SP. - */ -#if 0 -#undef NCURSES_SP_FUNCS -#define NCURSES_SP_FUNCS 20110404 -#define NCURSES_SP_NAME(name) name##_sp - -/* Define the sp-funcs helper function */ -#define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC) -typedef int (*NCURSES_SP_OUTC)(SCREEN*, int); - -extern NCURSES_EXPORT(SCREEN *) new_prescr (void); /* implemented:SP_FUNC */ - -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(baudrate) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, short, short*, short*, short*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(doupdate) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char) NCURSES_SP_NAME(erasechar) (SCREEN*);/* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(filter) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flash) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flushinp) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(getwin) (SCREEN*, FILE *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, short, short, short, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, short, short, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char) NCURSES_SP_NAME(killchar) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, NCURSES_CONST char *, FILE *, FILE *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, short, short*, short*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resetty) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ripoffline) (SCREEN*, int, int (*)(WINDOW *, int)); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(savetty) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_init) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_set) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, short, void*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (SCREEN*, int, const char *, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(start_color) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(termattrs) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (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 1 -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (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 */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ -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 -#undef NCURSES_SP_FUNCS -#define NCURSES_SP_FUNCS 0 -#define NCURSES_SP_NAME(name) name -#define NCURSES_SP_OUTC NCURSES_OUTC -#endif - -/* attributes */ - -#define NCURSES_ATTR_SHIFT 8 -#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT)) - -#define A_NORMAL (1U - 1U) -#define A_ATTRIBUTES NCURSES_BITS(~(1U - 1U),0) -#define A_CHARTEXT (NCURSES_BITS(1U,0) - 1U) -#define A_COLOR NCURSES_BITS(((1U) << 8) - 1U,0) -#define A_STANDOUT NCURSES_BITS(1U,8) -#define A_UNDERLINE NCURSES_BITS(1U,9) -#define A_REVERSE NCURSES_BITS(1U,10) -#define A_BLINK NCURSES_BITS(1U,11) -#define A_DIM NCURSES_BITS(1U,12) -#define A_BOLD NCURSES_BITS(1U,13) -#define A_ALTCHARSET NCURSES_BITS(1U,14) -#define A_INVIS NCURSES_BITS(1U,15) -#define A_PROTECT NCURSES_BITS(1U,16) -#define A_HORIZONTAL NCURSES_BITS(1U,17) -#define A_LEFT NCURSES_BITS(1U,18) -#define A_LOW NCURSES_BITS(1U,19) -#define A_RIGHT NCURSES_BITS(1U,20) -#define A_TOP NCURSES_BITS(1U,21) -#define A_VERTICAL NCURSES_BITS(1U,22) - -/* - * Most of the pseudo functions are macros that either provide compatibility - * with older versions of curses, or provide inline functionality to improve - * performance. - */ - -/* - * These pseudo functions are always implemented as macros: - */ - -#define getyx(win,y,x) (y = getcury(win), x = getcurx(win)) -#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win)) -#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win)) -#define getparyx(win,y,x) (y = getpary(win), x = getparx(win)) - -#define getsyx(y,x) do { if (newscr) { \ - if (is_leaveok(newscr)) \ - (y) = (x) = -1; \ - else \ - getyx(newscr,(y), (x)); \ - } \ - } while(0) - -#define setsyx(y,x) do { if (newscr) { \ - if ((y) == -1 && (x) == -1) \ - leaveok(newscr, TRUE); \ - else { \ - leaveok(newscr, FALSE); \ - wmove(newscr, (y), (x)); \ - } \ - } \ - } while(0) - -#ifndef NCURSES_NOMACROS - -/* - * These miscellaneous pseudo functions are provided for compatibility: - */ - -#define wgetstr(w, s) wgetnstr(w, s, -1) -#define getnstr(s, n) wgetnstr(stdscr, s, n) - -#define setterm(term) setupterm(term, 1, (int *)0) - -#define fixterm() reset_prog_mode() -#define resetterm() reset_shell_mode() -#define saveterm() def_prog_mode() -#define crmode() cbreak() -#define nocrmode() nocbreak() -#define gettmode() - -/* It seems older SYSV curses versions define these */ -#if !NCURSES_OPAQUE -#define getattrs(win) NCURSES_CAST(int, (win) ? (win)->_attrs : A_NORMAL) -#define getcurx(win) ((win) ? (win)->_curx : ERR) -#define getcury(win) ((win) ? (win)->_cury : ERR) -#define getbegx(win) ((win) ? (win)->_begx : ERR) -#define getbegy(win) ((win) ? (win)->_begy : ERR) -#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR) -#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR) -#define getparx(win) ((win) ? (win)->_parx : ERR) -#define getpary(win) ((win) ? (win)->_pary : ERR) -#endif /* NCURSES_OPAQUE */ - -#define wstandout(win) (wattrset(win,A_STANDOUT)) -#define wstandend(win) (wattrset(win,A_NORMAL)) - -#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL) -#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL) - -#if !NCURSES_OPAQUE -#if defined(NCURSES_WIDECHAR) && 0 -#define wattrset(win,at) ((win) \ - ? ((win)->_color = PAIR_NUMBER(at), \ - (win)->_attrs = NCURSES_CAST(attr_t, at), \ - OK) \ - : ERR) -#else -#define wattrset(win,at) ((win) \ - ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \ - OK) \ - : ERR) -#endif -#endif /* NCURSES_OPAQUE */ - -#define scroll(win) wscrl(win,1) - -#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) -#define touchline(win, s, c) wtouchln((win), s, c, 1) -#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) - -#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) -#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) -#define hline(ch, n) whline(stdscr, ch, n) -#define vline(ch, n) wvline(stdscr, ch, n) - -#define winstr(w, s) winnstr(w, s, -1) -#define winchstr(w, s) winchnstr(w, s, -1) -#define winsstr(w, s) winsnstr(w, s, -1) - -#if !NCURSES_OPAQUE -#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1) -#endif /* NCURSES_OPAQUE */ - -#define waddstr(win,str) waddnstr(win,str,-1) -#define waddchstr(win,str) waddchnstr(win,str,-1) - -/* - * These apply to the first 256 color pairs. - */ -#define COLOR_PAIR(n) NCURSES_BITS(n, 0) -#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,a) & A_COLOR) >> NCURSES_ATTR_SHIFT))) - -/* - * pseudo functions for standard screen - */ - -#define addch(ch) waddch(stdscr,ch) -#define addchnstr(str,n) waddchnstr(stdscr,str,n) -#define addchstr(str) waddchstr(stdscr,str) -#define addnstr(str,n) waddnstr(stdscr,str,n) -#define addstr(str) waddnstr(stdscr,str,-1) -#define attroff(at) wattroff(stdscr,at) -#define attron(at) wattron(stdscr,at) -#define attrset(at) wattrset(stdscr,at) -#define attr_get(ap,cp,o) wattr_get(stdscr,ap,cp,o) -#define attr_off(a,o) wattr_off(stdscr,a,o) -#define attr_on(a,o) wattr_on(stdscr,a,o) -#define attr_set(a,c,o) wattr_set(stdscr,a,c,o) -#define bkgd(ch) wbkgd(stdscr,ch) -#define bkgdset(ch) wbkgdset(stdscr,ch) -#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o) -#define clear() wclear(stdscr) -#define clrtobot() wclrtobot(stdscr) -#define clrtoeol() wclrtoeol(stdscr) -#define color_set(c,o) wcolor_set(stdscr,c,o) -#define delch() wdelch(stdscr) -#define deleteln() winsdelln(stdscr,-1) -#define echochar(c) wechochar(stdscr,c) -#define erase() werase(stdscr) -#define getch() wgetch(stdscr) -#define getstr(str) wgetstr(stdscr,str) -#define inch() winch(stdscr) -#define inchnstr(s,n) winchnstr(stdscr,s,n) -#define inchstr(s) winchstr(stdscr,s) -#define innstr(s,n) winnstr(stdscr,s,n) -#define insch(c) winsch(stdscr,c) -#define insdelln(n) winsdelln(stdscr,n) -#define insertln() winsdelln(stdscr,1) -#define insnstr(s,n) winsnstr(stdscr,s,n) -#define insstr(s) winsstr(stdscr,s) -#define instr(s) winstr(stdscr,s) -#define move(y,x) wmove(stdscr,y,x) -#define refresh() wrefresh(stdscr) -#define scrl(n) wscrl(stdscr,n) -#define setscrreg(t,b) wsetscrreg(stdscr,t,b) -#define standend() wstandend(stdscr) -#define standout() wstandout(stdscr) -#define timeout(delay) wtimeout(stdscr,delay) -#define wdeleteln(win) winsdelln(win,-1) -#define winsertln(win) winsdelln(win,1) - -/* - * mv functions - */ - -#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch)) -#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n)) -#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1)) -#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n)) -#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1)) -#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win)) -#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o)) -#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win)) -#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n)) -#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str)) -#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n)) -#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win)) -#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n)) -#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s)) -#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n)) -#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c)) -#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n)) -#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s)) -#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s)) -#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n)) - -#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) -#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n) -#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str) -#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n) -#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) -#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o) -#define mvdelch(y,x) mvwdelch(stdscr,y,x) -#define mvgetch(y,x) mvwgetch(stdscr,y,x) -#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n) -#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) -#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n) -#define mvinch(y,x) mvwinch(stdscr,y,x) -#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n) -#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s) -#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n) -#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c) -#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n) -#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s) -#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s) -#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n) - -/* - * Some wide-character functions can be implemented without the extensions. - */ -#if !NCURSES_OPAQUE -#define getbkgd(win) ((win)->_bkgd) -#endif /* NCURSES_OPAQUE */ - -#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) -#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) - -#if !NCURSES_OPAQUE -#if defined(NCURSES_WIDECHAR) && 0 -#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \ - (win)->_color = (p), \ - OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (short)(win)->_color)), \ - OK) -#else -#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | (attr_t)COLOR_PAIR(p)), OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (short)PAIR_NUMBER((win)->_attrs))), \ - OK) -#endif -#endif /* NCURSES_OPAQUE */ - -/* - * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use - * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to - * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already - * use stdarg.h, so... - */ -#define vw_printw vwprintw -#define vw_scanw vwscanw - -/* - * Export fallback function for use in C++ binding. - */ -#if !1 -#define vsscanf(a,b,c) _nc_vsscanf(a,b,c) -NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); -#endif - -/* - * These macros are extensions - not in X/Open Curses. - */ -#if 1 -#if !NCURSES_OPAQUE -#define is_cleared(win) ((win) ? (win)->_clear : FALSE) -#define is_idcok(win) ((win) ? (win)->_idcok : FALSE) -#define is_idlok(win) ((win) ? (win)->_idlok : FALSE) -#define is_immedok(win) ((win) ? (win)->_immed : FALSE) -#define is_keypad(win) ((win) ? (win)->_use_keypad : FALSE) -#define is_leaveok(win) ((win) ? (win)->_leaveok : FALSE) -#define is_nodelay(win) ((win) ? ((win)->_delay == 0) : FALSE) -#define is_notimeout(win) ((win) ? (win)->_notimeout : FALSE) -#define is_pad(win) ((win) ? ((win)->_flags & _ISPAD) != 0 : FALSE) -#define is_scrollok(win) ((win) ? (win)->_scroll : FALSE) -#define is_subwin(win) ((win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE) -#define is_syncok(win) ((win) ? (win)->_sync : FALSE) -#define wgetparent(win) ((win) ? (win)->_parent : 0) -#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR) -#endif -#endif - -#endif /* NCURSES_NOMACROS */ - -/* - * Public variables. - * - * Notes: - * a. ESCDELAY was an undocumented feature under AIX curses. - * It gives the ESC expire time in milliseconds. - * b. ttytype is needed for backward compatibility - */ -#if NCURSES_REENTRANT - -NCURSES_WRAPPED_VAR(WINDOW *, curscr); -NCURSES_WRAPPED_VAR(WINDOW *, newscr); -NCURSES_WRAPPED_VAR(WINDOW *, stdscr); -NCURSES_WRAPPED_VAR(char *, ttytype); -NCURSES_WRAPPED_VAR(int, COLORS); -NCURSES_WRAPPED_VAR(int, COLOR_PAIRS); -NCURSES_WRAPPED_VAR(int, COLS); -NCURSES_WRAPPED_VAR(int, ESCDELAY); -NCURSES_WRAPPED_VAR(int, LINES); -NCURSES_WRAPPED_VAR(int, TABSIZE); - -#define curscr NCURSES_PUBLIC_VAR(curscr()) -#define newscr NCURSES_PUBLIC_VAR(newscr()) -#define stdscr NCURSES_PUBLIC_VAR(stdscr()) -#define ttytype NCURSES_PUBLIC_VAR(ttytype()) -#define COLORS NCURSES_PUBLIC_VAR(COLORS()) -#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS()) -#define COLS NCURSES_PUBLIC_VAR(COLS()) -#define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY()) -#define LINES NCURSES_PUBLIC_VAR(LINES()) -#define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE()) - -#else - -extern NCURSES_EXPORT_VAR(WINDOW *) curscr; -extern NCURSES_EXPORT_VAR(WINDOW *) newscr; -extern NCURSES_EXPORT_VAR(WINDOW *) stdscr; -extern NCURSES_EXPORT_VAR(char) ttytype[]; -extern NCURSES_EXPORT_VAR(int) COLORS; -extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS; -extern NCURSES_EXPORT_VAR(int) COLS; -extern NCURSES_EXPORT_VAR(int) ESCDELAY; -extern NCURSES_EXPORT_VAR(int) LINES; -extern NCURSES_EXPORT_VAR(int) TABSIZE; - -#endif - -/* - * Pseudo-character tokens outside ASCII range. The curses wgetch() function - * will return any given one of these only if the corresponding k- capability - * is defined in your terminal's terminfo entry. - * - * Some keys (KEY_A1, etc) are arranged like this: - * a1 up a3 - * left b2 right - * c1 down c3 - * - * A few key codes do not depend upon the terminfo entry. - */ -#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ -#define KEY_MIN 0401 /* Minimum curses key */ -#define KEY_BREAK 0401 /* Break key (unreliable) */ -#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ -#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ -/* - * These definitions were generated by ./MKkey_defs.sh ./Caps - */ -#define KEY_DOWN 0402 /* down-arrow key */ -#define KEY_UP 0403 /* up-arrow key */ -#define KEY_LEFT 0404 /* left-arrow key */ -#define KEY_RIGHT 0405 /* right-arrow key */ -#define KEY_HOME 0406 /* home key */ -#define KEY_BACKSPACE 0407 /* backspace key */ -#define KEY_F0 0410 /* Function keys. Space for 64 */ -#define KEY_F(n) (KEY_F0+(n)) /* Value of function key n */ -#define KEY_DL 0510 /* delete-line key */ -#define KEY_IL 0511 /* insert-line key */ -#define KEY_DC 0512 /* delete-character key */ -#define KEY_IC 0513 /* insert-character key */ -#define KEY_EIC 0514 /* sent by rmir or smir in insert mode */ -#define KEY_CLEAR 0515 /* clear-screen or erase key */ -#define KEY_EOS 0516 /* clear-to-end-of-screen key */ -#define KEY_EOL 0517 /* clear-to-end-of-line key */ -#define KEY_SF 0520 /* scroll-forward key */ -#define KEY_SR 0521 /* scroll-backward key */ -#define KEY_NPAGE 0522 /* next-page key */ -#define KEY_PPAGE 0523 /* previous-page key */ -#define KEY_STAB 0524 /* set-tab key */ -#define KEY_CTAB 0525 /* clear-tab key */ -#define KEY_CATAB 0526 /* clear-all-tabs key */ -#define KEY_ENTER 0527 /* enter/send key */ -#define KEY_PRINT 0532 /* print key */ -#define KEY_LL 0533 /* lower-left key (home down) */ -#define KEY_A1 0534 /* upper left of keypad */ -#define KEY_A3 0535 /* upper right of keypad */ -#define KEY_B2 0536 /* center of keypad */ -#define KEY_C1 0537 /* lower left of keypad */ -#define KEY_C3 0540 /* lower right of keypad */ -#define KEY_BTAB 0541 /* back-tab key */ -#define KEY_BEG 0542 /* begin key */ -#define KEY_CANCEL 0543 /* cancel key */ -#define KEY_CLOSE 0544 /* close key */ -#define KEY_COMMAND 0545 /* command key */ -#define KEY_COPY 0546 /* copy key */ -#define KEY_CREATE 0547 /* create key */ -#define KEY_END 0550 /* end key */ -#define KEY_EXIT 0551 /* exit key */ -#define KEY_FIND 0552 /* find key */ -#define KEY_HELP 0553 /* help key */ -#define KEY_MARK 0554 /* mark key */ -#define KEY_MESSAGE 0555 /* message key */ -#define KEY_MOVE 0556 /* move key */ -#define KEY_NEXT 0557 /* next key */ -#define KEY_OPEN 0560 /* open key */ -#define KEY_OPTIONS 0561 /* options key */ -#define KEY_PREVIOUS 0562 /* previous key */ -#define KEY_REDO 0563 /* redo key */ -#define KEY_REFERENCE 0564 /* reference key */ -#define KEY_REFRESH 0565 /* refresh key */ -#define KEY_REPLACE 0566 /* replace key */ -#define KEY_RESTART 0567 /* restart key */ -#define KEY_RESUME 0570 /* resume key */ -#define KEY_SAVE 0571 /* save key */ -#define KEY_SBEG 0572 /* shifted begin key */ -#define KEY_SCANCEL 0573 /* shifted cancel key */ -#define KEY_SCOMMAND 0574 /* shifted command key */ -#define KEY_SCOPY 0575 /* shifted copy key */ -#define KEY_SCREATE 0576 /* shifted create key */ -#define KEY_SDC 0577 /* shifted delete-character key */ -#define KEY_SDL 0600 /* shifted delete-line key */ -#define KEY_SELECT 0601 /* select key */ -#define KEY_SEND 0602 /* shifted end key */ -#define KEY_SEOL 0603 /* shifted clear-to-end-of-line key */ -#define KEY_SEXIT 0604 /* shifted exit key */ -#define KEY_SFIND 0605 /* shifted find key */ -#define KEY_SHELP 0606 /* shifted help key */ -#define KEY_SHOME 0607 /* shifted home key */ -#define KEY_SIC 0610 /* shifted insert-character key */ -#define KEY_SLEFT 0611 /* shifted left-arrow key */ -#define KEY_SMESSAGE 0612 /* shifted message key */ -#define KEY_SMOVE 0613 /* shifted move key */ -#define KEY_SNEXT 0614 /* shifted next key */ -#define KEY_SOPTIONS 0615 /* shifted options key */ -#define KEY_SPREVIOUS 0616 /* shifted previous key */ -#define KEY_SPRINT 0617 /* shifted print key */ -#define KEY_SREDO 0620 /* shifted redo key */ -#define KEY_SREPLACE 0621 /* shifted replace key */ -#define KEY_SRIGHT 0622 /* shifted right-arrow key */ -#define KEY_SRSUME 0623 /* shifted resume key */ -#define KEY_SSAVE 0624 /* shifted save key */ -#define KEY_SSUSPEND 0625 /* shifted suspend key */ -#define KEY_SUNDO 0626 /* shifted undo key */ -#define KEY_SUSPEND 0627 /* suspend key */ -#define KEY_UNDO 0630 /* undo key */ -#define KEY_MOUSE 0631 /* Mouse event has occurred */ -#define KEY_RESIZE 0632 /* Terminal resize event */ -#define KEY_EVENT 0633 /* We were interrupted by an event */ - -#define KEY_MAX 0777 /* Maximum key value is 0633 */ -/* $Id: curses.tail,v 1.20 2010/03/28 19:10:55 tom Exp $ */ -/* - * vile:cmode: - * This file is part of ncurses, designed to be appended after curses.h.in - * (see that file for the relevant copyright). - */ - -/* mouse interface */ - -#if NCURSES_MOUSE_VERSION > 1 -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 5)) -#else -#define NCURSES_MOUSE_MASK(b,m) ((m) << (((b) - 1) * 6)) -#endif - -#define NCURSES_BUTTON_RELEASED 001L -#define NCURSES_BUTTON_PRESSED 002L -#define NCURSES_BUTTON_CLICKED 004L -#define NCURSES_DOUBLE_CLICKED 010L -#define NCURSES_TRIPLE_CLICKED 020L -#define NCURSES_RESERVED_EVENT 040L - -/* event masks */ -#define BUTTON1_RELEASED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED) -#define BUTTON1_PRESSED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED) -#define BUTTON1_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_CLICKED) -#define BUTTON1_DOUBLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED) -#define BUTTON1_TRIPLE_CLICKED NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED) - -#define BUTTON2_RELEASED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_RELEASED) -#define BUTTON2_PRESSED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_PRESSED) -#define BUTTON2_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_BUTTON_CLICKED) -#define BUTTON2_DOUBLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_DOUBLE_CLICKED) -#define BUTTON2_TRIPLE_CLICKED NCURSES_MOUSE_MASK(2, NCURSES_TRIPLE_CLICKED) - -#define BUTTON3_RELEASED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_RELEASED) -#define BUTTON3_PRESSED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_PRESSED) -#define BUTTON3_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_BUTTON_CLICKED) -#define BUTTON3_DOUBLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_DOUBLE_CLICKED) -#define BUTTON3_TRIPLE_CLICKED NCURSES_MOUSE_MASK(3, NCURSES_TRIPLE_CLICKED) - -#define BUTTON4_RELEASED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_RELEASED) -#define BUTTON4_PRESSED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_PRESSED) -#define BUTTON4_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_BUTTON_CLICKED) -#define BUTTON4_DOUBLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_DOUBLE_CLICKED) -#define BUTTON4_TRIPLE_CLICKED NCURSES_MOUSE_MASK(4, NCURSES_TRIPLE_CLICKED) - -/* - * In 32 bits the version-1 scheme does not provide enough space for a 5th - * button, unless we choose to change the ABI by omitting the reserved-events. - */ -#if NCURSES_MOUSE_VERSION > 1 - -#define BUTTON5_RELEASED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_RELEASED) -#define BUTTON5_PRESSED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_PRESSED) -#define BUTTON5_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_BUTTON_CLICKED) -#define BUTTON5_DOUBLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_DOUBLE_CLICKED) -#define BUTTON5_TRIPLE_CLICKED NCURSES_MOUSE_MASK(5, NCURSES_TRIPLE_CLICKED) - -#define BUTTON_CTRL NCURSES_MOUSE_MASK(6, 0001L) -#define BUTTON_SHIFT NCURSES_MOUSE_MASK(6, 0002L) -#define BUTTON_ALT NCURSES_MOUSE_MASK(6, 0004L) -#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(6, 0010L) - -#else - -#define BUTTON1_RESERVED_EVENT NCURSES_MOUSE_MASK(1, NCURSES_RESERVED_EVENT) -#define BUTTON2_RESERVED_EVENT NCURSES_MOUSE_MASK(2, NCURSES_RESERVED_EVENT) -#define BUTTON3_RESERVED_EVENT NCURSES_MOUSE_MASK(3, NCURSES_RESERVED_EVENT) -#define BUTTON4_RESERVED_EVENT NCURSES_MOUSE_MASK(4, NCURSES_RESERVED_EVENT) - -#define BUTTON_CTRL NCURSES_MOUSE_MASK(5, 0001L) -#define BUTTON_SHIFT NCURSES_MOUSE_MASK(5, 0002L) -#define BUTTON_ALT NCURSES_MOUSE_MASK(5, 0004L) -#define REPORT_MOUSE_POSITION NCURSES_MOUSE_MASK(5, 0010L) - -#endif - -#define ALL_MOUSE_EVENTS (REPORT_MOUSE_POSITION - 1) - -/* macros to extract single event-bits from masks */ -#define BUTTON_RELEASE(e, x) ((e) & NCURSES_MOUSE_MASK(x, 001)) -#define BUTTON_PRESS(e, x) ((e) & NCURSES_MOUSE_MASK(x, 002)) -#define BUTTON_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 004)) -#define BUTTON_DOUBLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 010)) -#define BUTTON_TRIPLE_CLICK(e, x) ((e) & NCURSES_MOUSE_MASK(x, 020)) -#define BUTTON_RESERVED_EVENT(e, x) ((e) & NCURSES_MOUSE_MASK(x, 040)) - -typedef struct -{ - short id; /* ID to distinguish multiple devices */ - int x, y, z; /* event coordinates (character-cell) */ - mmask_t bstate; /* button state bits */ -} -MEVENT; - -extern NCURSES_EXPORT(bool) has_mouse(void); -extern NCURSES_EXPORT(int) getmouse (MEVENT *); -extern NCURSES_EXPORT(int) ungetmouse (MEVENT *); -extern NCURSES_EXPORT(mmask_t) mousemask (mmask_t, mmask_t *); -extern NCURSES_EXPORT(bool) wenclose (const WINDOW *, int, int); -extern NCURSES_EXPORT(int) mouseinterval (int); -extern NCURSES_EXPORT(bool) wmouse_trafo (const WINDOW*, int*, int*, bool); -extern NCURSES_EXPORT(bool) mouse_trafo (int*, int*, bool); /* generated */ - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_mouse) (SCREEN*); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(getmouse) (SCREEN*, MEVENT *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetmouse) (SCREEN*,MEVENT *); -extern NCURSES_EXPORT(mmask_t) NCURSES_SP_NAME(mousemask) (SCREEN*, mmask_t, mmask_t *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mouseinterval) (SCREEN*, int); -#endif - -#define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen) - -/* other non-XSI functions */ - -extern NCURSES_EXPORT(int) mcprint (char *, int); /* direct data to printer */ -extern NCURSES_EXPORT(int) has_key (int); /* do we have given key? */ - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(has_key) (SCREEN*, int); /* do we have given key? */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mcprint) (SCREEN*, char *, int); /* direct data to printer */ -#endif - -/* Debugging : use with libncurses_g.a */ - -extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *); -extern NCURSES_EXPORT(char *) _traceattr (attr_t); -extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype); -extern NCURSES_EXPORT(char *) _nc_tracebits (void); -extern NCURSES_EXPORT(char *) _tracechar (int); -extern NCURSES_EXPORT(char *) _tracechtype (chtype); -extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype); -#ifdef NCURSES_WIDECHAR -#define _tracech_t _tracecchar_t -extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *); -#define _tracech_t2 _tracecchar_t2 -extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *); -#else -#define _tracech_t _tracechtype -#define _tracech_t2 _tracechtype2 -#endif -extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *); -extern NCURSES_EXPORT(void) trace (const unsigned int); - -/* trace masks */ -#define TRACE_DISABLE 0x0000 /* turn off tracing */ -#define TRACE_TIMES 0x0001 /* trace user and system times of updates */ -#define TRACE_TPUTS 0x0002 /* trace tputs calls */ -#define TRACE_UPDATE 0x0004 /* trace update actions, old & new screens */ -#define TRACE_MOVE 0x0008 /* trace cursor moves and scrolls */ -#define TRACE_CHARPUT 0x0010 /* trace all character outputs */ -#define TRACE_ORDINARY 0x001F /* trace all update actions */ -#define TRACE_CALLS 0x0020 /* trace all curses calls */ -#define TRACE_VIRTPUT 0x0040 /* trace virtual character puts */ -#define TRACE_IEVENT 0x0080 /* trace low-level input processing */ -#define TRACE_BITS 0x0100 /* trace state of TTY control bits */ -#define TRACE_ICALLS 0x0200 /* trace internal/nested calls */ -#define TRACE_CCALLS 0x0400 /* trace per-character calls */ -#define TRACE_DATABASE 0x0800 /* trace read/write of terminfo/termcap data */ -#define TRACE_ATTRS 0x1000 /* trace attribute updates */ - -#define TRACE_SHIFT 13 /* number of bits in the trace masks */ -#define TRACE_MAXIMUM ((1 << TRACE_SHIFT) - 1) /* maximum trace level */ - -#if defined(TRACE) || defined(NCURSES_TEST) -extern NCURSES_EXPORT_VAR(int) _nc_optimize_enable; /* enable optimizations */ -extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *); -#define OPTIMIZE_MVCUR 0x01 /* cursor movement optimization */ -#define OPTIMIZE_HASHMAP 0x02 /* diff hashing to detect scrolls */ -#define OPTIMIZE_SCROLL 0x04 /* scroll optimization */ -#define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */ -#endif - -#include - -#ifdef __cplusplus - -#ifndef NCURSES_NOMACROS - -/* these names conflict with STL */ -#undef box -#undef clear -#undef erase -#undef move -#undef refresh - -#endif /* NCURSES_NOMACROS */ - -} -#endif - -#endif /* __NCURSES_H */ diff --git a/deps/ncurses-5.9/include/curses.h.in b/deps/ncurses-5.9/include/curses.h.in deleted file mode 100644 index 5774154..0000000 --- a/deps/ncurses-5.9/include/curses.h.in +++ /dev/null @@ -1,1385 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* $Id: curses.h.in,v 1.220 2011/01/22 19:47:20 tom Exp $ */ - -#ifndef __NCURSES_H -#define __NCURSES_H - -#define CURSES 1 -#define CURSES_H 1 - -/* These are defined only in curses.h, and are used for conditional compiles */ -#define NCURSES_VERSION_MAJOR @NCURSES_MAJOR@ -#define NCURSES_VERSION_MINOR @NCURSES_MINOR@ -#define NCURSES_VERSION_PATCH @NCURSES_PATCH@ - -/* This is defined in more than one ncurses header, for identification */ -#undef NCURSES_VERSION -#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@" - -/* - * Identify the mouse encoding version. - */ -#define NCURSES_MOUSE_VERSION @NCURSES_MOUSE_VERSION@ - -/* - * Definitions to facilitate DLL's. - */ -#include - -/* - * User-definable tweak to disable the include of . - */ -#ifndef NCURSES_ENABLE_STDBOOL_H -#define NCURSES_ENABLE_STDBOOL_H @cf_cv_header_stdbool_h@ -#endif - -/* - * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses - * configured using --disable-macros. - */ -#ifdef NCURSES_NOMACROS -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T attr_t -#endif -#endif /* NCURSES_NOMACROS */ - -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T int -#endif - -/* - * Expands to 'const' if ncurses is configured using --enable-const. Note that - * doing so makes it incompatible with other implementations of X/Open Curses. - */ -#undef NCURSES_CONST -#define NCURSES_CONST @NCURSES_CONST@ - -#undef NCURSES_INLINE -#define NCURSES_INLINE @NCURSES_INLINE@ - -/* - * The internal type used for color values - */ -#undef NCURSES_COLOR_T -#define NCURSES_COLOR_T short - -/* - * Definition used to make WINDOW and similar structs opaque. - */ -#ifndef @cf_cv_enable_opaque@ -#define NCURSES_OPAQUE @NCURSES_OPAQUE@ -#endif - -/* - * The reentrant code relies on the opaque setting, but adds features. - */ -#ifndef NCURSES_REENTRANT -#define NCURSES_REENTRANT @cf_cv_enable_reentrant@ -#endif - -/* - * Control whether bindings for interop support are added. - */ -#undef NCURSES_INTEROP_FUNCS -#define NCURSES_INTEROP_FUNCS @NCURSES_INTEROP_FUNCS@ - -/* - * The internal type used for window dimensions. - */ -#undef NCURSES_SIZE_T -#define NCURSES_SIZE_T @NCURSES_SIZE_T@ - -/* - * Control whether tparm() supports varargs or fixed-parameter list. - */ -#undef NCURSES_TPARM_VARARGS -#define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@ - -/* - * NCURSES_CH_T is used in building the library, but not used otherwise in - * this header file, since that would make the normal/wide-character versions - * of the header incompatible. - */ -#undef NCURSES_CH_T -#define NCURSES_CH_T @NCURSES_CH_T@ - -#if @cf_cv_enable_lp64@ && defined(_LP64) -typedef unsigned chtype; -typedef unsigned mmask_t; -#else -typedef unsigned @cf_cv_typeof_chtype@ chtype; -typedef unsigned @cf_cv_typeof_mmask_t@ mmask_t; -#endif - -/* - * We need FILE, etc. Include this before checking any feature symbols. - */ -#include - -/* - * With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or - * conflicting) when _XOPEN_SOURCE is 500 or greater. - */ -#undef NCURSES_WIDECHAR -#if defined(_XOPEN_SOURCE_EXTENDED) || defined(_XPG5) -#define NCURSES_WIDECHAR -#endif - -#include /* we need va_list */ -#ifdef NCURSES_WIDECHAR -#include /* we want wchar_t */ -#endif - -/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also - * implement it. If so, we must use the C++ compiler's type to avoid conflict - * with other interfaces. - * - * A further complication is that may declare 'bool' to be a - * different type, such as an enum which is not necessarily compatible with - * C++. If we have , make 'bool' a macro, so users may #undef it. - * Otherwise, let it remain a typedef to avoid conflicts with other #define's. - * In either case, make a typedef for NCURSES_BOOL which can be used if needed - * from either C or C++. - */ - -#undef TRUE -#define TRUE 1 - -#undef FALSE -#define FALSE 0 - -typedef @cf_cv_type_of_bool@ NCURSES_BOOL; - -#if @USE_CXX_BOOL@ /* __cplusplus, etc. */ - -/* use the C++ compiler's bool type */ -#define NCURSES_BOOL bool - -#else /* c89, c99, etc. */ - -#if NCURSES_ENABLE_STDBOOL_H -#include -/* use whatever the C compiler decides bool really is */ -#define NCURSES_BOOL bool -#else -/* there is no predefined bool - use our own */ -#undef bool -#define bool NCURSES_BOOL -#endif - -#endif /* !__cplusplus, etc. */ - -#ifdef __cplusplus -extern "C" { -#define NCURSES_CAST(type,value) static_cast(value) -#else -#define NCURSES_CAST(type,value) (type)(value) -#endif - -/* - * X/Open attributes. In the ncurses implementation, they are identical to the - * A_ attributes. - */ -#define WA_ATTRIBUTES A_ATTRIBUTES -#define WA_NORMAL A_NORMAL -#define WA_STANDOUT A_STANDOUT -#define WA_UNDERLINE A_UNDERLINE -#define WA_REVERSE A_REVERSE -#define WA_BLINK A_BLINK -#define WA_DIM A_DIM -#define WA_BOLD A_BOLD -#define WA_ALTCHARSET A_ALTCHARSET -#define WA_INVIS A_INVIS -#define WA_PROTECT A_PROTECT -#define WA_HORIZONTAL A_HORIZONTAL -#define WA_LEFT A_LEFT -#define WA_LOW A_LOW -#define WA_RIGHT A_RIGHT -#define WA_TOP A_TOP -#define WA_VERTICAL A_VERTICAL - -/* colors */ -#define COLOR_BLACK 0 -#define COLOR_RED 1 -#define COLOR_GREEN 2 -#define COLOR_YELLOW 3 -#define COLOR_BLUE 4 -#define COLOR_MAGENTA 5 -#define COLOR_CYAN 6 -#define COLOR_WHITE 7 - -/* line graphics */ - -#if @BROKEN_LINKER@ || NCURSES_REENTRANT -NCURSES_WRAPPED_VAR(chtype*, acs_map); -#define acs_map NCURSES_PUBLIC_VAR(acs_map()) -#else -extern NCURSES_EXPORT_VAR(chtype) acs_map[]; -#endif - -#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)]) - -/* VT100 symbols begin here */ -#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */ -#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */ -#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */ -#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */ -#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */ -#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */ -#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */ -#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */ -#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */ -#define ACS_VLINE NCURSES_ACS('x') /* vertical line */ -#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */ -#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */ -#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */ -#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */ -#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */ -#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */ -#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */ -#define ACS_BULLET NCURSES_ACS('~') /* bullet */ -/* Teletype 5410v1 symbols begin here */ -#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */ -#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */ -#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */ -#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */ -#define ACS_BOARD NCURSES_ACS('h') /* board of squares */ -#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */ -#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */ -/* - * These aren't documented, but a lot of System Vs have them anyway - * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). - * The ACS_names may not match AT&T's, our source didn't know them. - */ -#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */ -#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */ -#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */ -#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */ -#define ACS_PI NCURSES_ACS('{') /* Pi */ -#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */ -#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */ - -/* - * 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. - */ -#define ACS_BSSB ACS_ULCORNER -#define ACS_SSBB ACS_LLCORNER -#define ACS_BBSS ACS_URCORNER -#define ACS_SBBS ACS_LRCORNER -#define ACS_SBSS ACS_RTEE -#define ACS_SSSB ACS_LTEE -#define ACS_SSBS ACS_BTEE -#define ACS_BSSS ACS_TTEE -#define ACS_BSBS ACS_HLINE -#define ACS_SBSB ACS_VLINE -#define ACS_SSSS ACS_PLUS - -#undef ERR -#define ERR (-1) - -#undef OK -#define OK (0) - -/* values for the _flags member */ -#define _SUBWIN 0x01 /* is this a sub-window? */ -#define _ENDLINE 0x02 /* is the window flush right? */ -#define _FULLWIN 0x04 /* is the window full-screen? */ -#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ -#define _ISPAD 0x10 /* is this window a pad? */ -#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ -#define _WRAPPED 0x40 /* cursor was just wrappped */ - -/* - * this value is used in the firstchar and lastchar fields to mark - * unchanged lines - */ -#define _NOCHANGE -1 - -/* - * this value is used in the oldindex field to mark lines created by insertions - * and scrolls. - */ -#define _NEWINDEX -1 - -typedef struct screen SCREEN; -typedef struct _win_st WINDOW; - -typedef chtype attr_t; /* ...must be at least as wide as chtype */ - -#ifdef NCURSES_WIDECHAR - -#if @NCURSES_LIBUTF8@ -#ifdef mblen /* libutf8.h defines it w/o undefining first */ -#undef mblen -#endif -#include -#endif - -#if @NEED_WCHAR_H@ -#include /* ...to get mbstate_t, etc. */ -#endif - -#if @NCURSES_WCHAR_T@ -typedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@; -#endif - -#if @NCURSES_WINT_T@ -typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@; -#endif - -/* - * cchar_t stores an array of CCHARW_MAX wide characters. The first is - * normally a spacing character. The others are non-spacing. If those - * (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@ -typedef struct -{ - attr_t attr; - wchar_t chars[CCHARW_MAX]; -#if @NCURSES_EXT_COLORS@ -#undef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS @NCURSES_PATCH@ - int ext_color; /* color pair, must be more than 16-bits */ -#endif -} -cchar_t; - -#endif /* NCURSES_WIDECHAR */ - -#if !NCURSES_OPAQUE -struct ldat; - -struct _win_st -{ - NCURSES_SIZE_T _cury, _curx; /* current cursor position */ - - /* window location and size */ - NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */ - NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */ - - short _flags; /* window state flags */ - - /* attribute tracking */ - attr_t _attrs; /* current attribute for non-space character */ - chtype _bkgd; /* current background char/attribute pair */ - - /* option values set by user */ - bool _notimeout; /* no time out on function-key entry? */ - bool _clear; /* consider all data in the window invalid? */ - bool _leaveok; /* OK to not reset cursor on exit? */ - bool _scroll; /* OK to scroll this window? */ - bool _idlok; /* OK to use insert/delete line? */ - bool _idcok; /* OK to use insert/delete char? */ - bool _immed; /* window in immed mode? (not yet used) */ - bool _sync; /* window in sync mode? */ - bool _use_keypad; /* process function keys into KEY_ symbols? */ - int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ - - struct ldat *_line; /* the actual line data */ - - /* global screen state */ - NCURSES_SIZE_T _regtop; /* top line of scrolling region */ - NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */ - - /* these are used only if this is a sub-window */ - int _parx; /* x coordinate of this window in parent */ - int _pary; /* y coordinate of this window in parent */ - WINDOW *_parent; /* pointer to parent if a sub-window */ - - /* these are used only if this is a pad */ - struct pdat - { - NCURSES_SIZE_T _pad_y, _pad_x; - NCURSES_SIZE_T _pad_top, _pad_left; - NCURSES_SIZE_T _pad_bottom, _pad_right; - } _pad; - - NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ - -#ifdef NCURSES_WIDECHAR - cchar_t _bkgrnd; /* current background char/attribute pair */ -#if @NCURSES_EXT_COLORS@ - int _color; /* current color-pair for non-space character */ -#endif -#endif -}; -#endif /* NCURSES_OPAQUE */ - -/* - * This is an extension to support events... - */ -#if @NCURSES_EXT_FUNCS@ -#ifdef NCURSES_WGETCH_EVENTS -#if !defined(__BEOS__) || defined(__HAIKU__) - /* Fix _nc_timed_wait() on BEOS... */ -# define NCURSES_EVENT_VERSION 1 -#endif /* !defined(__BEOS__) */ - -/* - * Bits to set in _nc_event.data.flags - */ -# define _NC_EVENT_TIMEOUT_MSEC 1 -# define _NC_EVENT_FILE 2 -# define _NC_EVENT_FILE_READABLE 2 -# if 0 /* Not supported yet... */ -# define _NC_EVENT_FILE_WRITABLE 4 -# define _NC_EVENT_FILE_EXCEPTION 8 -# endif - -typedef struct -{ - int type; - union - { - long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */ - struct - { - unsigned int flags; - int fd; - unsigned int result; - } fev; /* _NC_EVENT_FILE */ - } data; -} _nc_event; - -typedef struct -{ - int count; - int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */ - _nc_event *events[1]; -} _nc_eventlist; - -extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *); /* experimental */ -extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *);/* experimental */ - -#endif /* NCURSES_WGETCH_EVENTS */ -#endif /* NCURSES_EXT_FUNCS */ - -/* - * GCC (and some other compilers) define '__attribute__'; we're using this - * macro to alert the compiler to flag inconsistencies in printf/scanf-like - * function calls. Just in case '__attribute__' isn't defined, make a dummy. - * Old versions of G++ do not accept it anyway, at least not consistently with - * GCC. - */ -#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__)) -#define __attribute__(p) /* nothing */ -#endif - -/* - * We cannot define these in ncurses_cfg.h, since they require parameters to be - * passed (that is non-portable). If you happen to be using gcc with warnings - * enabled, define - * GCC_PRINTF - * GCC_SCANF - * to improve checking of calls to printw(), etc. - */ -#ifndef GCC_PRINTFLIKE -#if defined(GCC_PRINTF) && !defined(printf) -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#else -#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_SCANFLIKE -#if defined(GCC_SCANF) && !defined(scanf) -#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) -#else -#define GCC_SCANFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif - -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -/* - * Curses uses a helper function. Define our type for this to simplify - * extending it for the sp-funcs feature. - */ -typedef int (*NCURSES_OUTC)(int); - -/* - * Function prototypes. This is the complete X/Open Curses list of required - * functions. Those marked `generated' will have sources generated from the - * macro definitions later in this file, in order to satisfy XPG4.2 - * requirements. - */ - -extern NCURSES_EXPORT(int) addch (const chtype); /* generated */ -extern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */ -extern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) addstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) baudrate (void); /* implemented */ -extern NCURSES_EXPORT(int) beep (void); /* implemented */ -extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */ -extern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */ -extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ -extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */ -extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */ -extern NCURSES_EXPORT(int) cbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) clear (void); /* generated */ -extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) clrtobot (void); /* generated */ -extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */ -extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) color_set (short,void*); /* generated */ -extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */ -extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) curs_set (int); /* implemented */ -extern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) delay_output (int); /* implemented */ -extern NCURSES_EXPORT(int) delch (void); /* generated */ -extern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) deleteln (void); /* generated */ -extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) doupdate (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) echo (void); /* implemented */ -extern NCURSES_EXPORT(int) echochar (const chtype); /* generated */ -extern NCURSES_EXPORT(int) erase (void); /* generated */ -extern NCURSES_EXPORT(int) endwin (void); /* implemented */ -extern NCURSES_EXPORT(char) erasechar (void); /* implemented */ -extern NCURSES_EXPORT(void) filter (void); /* implemented */ -extern NCURSES_EXPORT(int) flash (void); /* implemented */ -extern NCURSES_EXPORT(int) flushinp (void); /* implemented */ -extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getch (void); /* generated */ -extern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) getstr (char *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */ -extern NCURSES_EXPORT(int) halfdelay (int); /* implemented */ -extern NCURSES_EXPORT(bool) has_colors (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_ic (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_il (void); /* implemented */ -extern NCURSES_EXPORT(int) hline (chtype, int); /* generated */ -extern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) inch (void); /* generated */ -extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */ -extern NCURSES_EXPORT(int) init_color (short,short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) init_pair (short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) insch (chtype); /* generated */ -extern NCURSES_EXPORT(int) insdelln (int); /* generated */ -extern NCURSES_EXPORT(int) insertln (void); /* generated */ -extern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) insstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) instr (char *); /* generated */ -extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(bool) isendwin (void); /* implemented */ -extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */ -extern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char) killchar (void); /* implemented */ -extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char *) longname (void); /* implemented */ -extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) move (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */ -extern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(3,4); -extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(3,4); -extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */ -extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */ -extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) napms (int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */ -extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) nl (void); /* implemented */ -extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) noecho (void); /* implemented */ -extern NCURSES_EXPORT(int) nonl (void); /* implemented */ -extern NCURSES_EXPORT(void) noqiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) noraw (void); /* implemented */ -extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) pair_content (short,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */ -extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */ -extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */ - GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */ -extern NCURSES_EXPORT(void) qiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) raw (void); /* implemented */ -extern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) refresh (void); /* generated */ -extern NCURSES_EXPORT(int) resetty (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */ -extern NCURSES_EXPORT(int) savetty (void); /* implemented */ -extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(1,2); -extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scrl (int); /* generated */ -extern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */ -extern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */ -extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */ -extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*); /* implemented */ -extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_color (short); /* implemented */ -extern NCURSES_EXPORT(int) slk_init (int); /* implemented */ -extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */ -extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */ -extern NCURSES_EXPORT(int) standout (void); /* generated */ -extern NCURSES_EXPORT(int) standend (void); /* generated */ -extern NCURSES_EXPORT(int) start_color (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */ -extern NCURSES_EXPORT(char *) termname (void); /* implemented */ -extern NCURSES_EXPORT(void) timeout (int); /* generated */ -extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) typeahead (int); /* implemented */ -extern NCURSES_EXPORT(int) ungetch (int); /* implemented */ -extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) use_env (bool); /* implemented */ -extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */ -extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */ -extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */ -extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */ -extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */ -extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */ -extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*); /* implemented */ -extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */ -extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */ -extern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */ -extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */ -extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */ -extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */ -extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */ - GCC_PRINTFLIKE(2,3); -extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(2,3); -extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */ - -/* - * These are also declared in : - */ -extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) putp (const char *); /* implemented */ - -#if NCURSES_TPARM_VARARGS -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ -#endif - -extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */ - -/* - * These functions are not in X/Open, but we use them in macro definitions: - */ -extern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ - -/* - * vid_attr() was implemented originally based on a draft of X/Open curses. - */ -#ifndef NCURSES_WIDECHAR -#define vid_attr(a,pair,opts) vidattr(a) -#endif - -/* - * These functions are extensions - not in X/Open Curses. - */ -#if @NCURSES_EXT_FUNCS@ -#undef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS @NCURSES_PATCH@ -typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); -typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); -extern NCURSES_EXPORT(bool) is_term_resized (int, int); -extern NCURSES_EXPORT(char *) keybound (int, int); -extern NCURSES_EXPORT(const char *) curses_version (void); -extern NCURSES_EXPORT(int) assume_default_colors (int, int); -extern NCURSES_EXPORT(int) define_key (const char *, int); -extern NCURSES_EXPORT(int) get_escdelay (void); -extern NCURSES_EXPORT(int) key_defined (const char *); -extern NCURSES_EXPORT(int) keyok (int, bool); -extern NCURSES_EXPORT(int) resize_term (int, int); -extern NCURSES_EXPORT(int) resizeterm (int, int); -extern NCURSES_EXPORT(int) set_escdelay (int); -extern NCURSES_EXPORT(int) set_tabsize (int); -extern NCURSES_EXPORT(int) use_default_colors (void); -extern NCURSES_EXPORT(int) use_extended_names (bool); -extern NCURSES_EXPORT(int) use_legacy_coding (int); -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); -extern NCURSES_EXPORT(void) nofilter(void); - -/* - * These extensions provide access to information stored in the WINDOW even - * when NCURSES_OPAQUE is set: - */ -extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_pad (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ -extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* @GENERATED_EXT_FUNCS@ */ - -#else -#define curses_version() NCURSES_VERSION -#endif - -/* - * Extra extension-functions, which pass a SCREEN pointer rather than using - * a global variable SP. - */ -#if @NCURSES_SP_FUNCS@ -#undef NCURSES_SP_FUNCS -#define NCURSES_SP_FUNCS @NCURSES_PATCH@ -#define NCURSES_SP_NAME(name) name##_sp - -/* Define the sp-funcs helper function */ -#define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC) -typedef int (*NCURSES_SP_OUTC)(SCREEN*, int); - -extern NCURSES_EXPORT(SCREEN *) new_prescr (void); /* implemented:SP_FUNC */ - -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(baudrate) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, short, short*, short*, short*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(doupdate) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char) NCURSES_SP_NAME(erasechar) (SCREEN*);/* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(filter) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flash) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flushinp) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(getwin) (SCREEN*, FILE *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, short, short, short, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, short, short, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char) NCURSES_SP_NAME(killchar) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, NCURSES_CONST char *, FILE *, FILE *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, short, short*, short*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resetty) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ripoffline) (SCREEN*, int, int (*)(WINDOW *, int)); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(savetty) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_init) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_set) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, short, void*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (SCREEN*, int, const char *, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(start_color) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(termattrs) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (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@ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (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 */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ -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 -#undef NCURSES_SP_FUNCS -#define NCURSES_SP_FUNCS 0 -#define NCURSES_SP_NAME(name) name -#define NCURSES_SP_OUTC NCURSES_OUTC -#endif - -/* attributes */ - -#define NCURSES_ATTR_SHIFT 8 -#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT)) - -#define A_NORMAL (@cf_cv_1UL@ - @cf_cv_1UL@) -#define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0) -#define A_CHARTEXT (NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@) -#define A_COLOR NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0) -#define A_STANDOUT NCURSES_BITS(@cf_cv_1UL@,8) -#define A_UNDERLINE NCURSES_BITS(@cf_cv_1UL@,9) -#define A_REVERSE NCURSES_BITS(@cf_cv_1UL@,10) -#define A_BLINK NCURSES_BITS(@cf_cv_1UL@,11) -#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) -#define A_INVIS NCURSES_BITS(@cf_cv_1UL@,15) -#define A_PROTECT NCURSES_BITS(@cf_cv_1UL@,16) -#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) -#define A_RIGHT NCURSES_BITS(@cf_cv_1UL@,20) -#define A_TOP NCURSES_BITS(@cf_cv_1UL@,21) -#define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22) - -/* - * Most of the pseudo functions are macros that either provide compatibility - * with older versions of curses, or provide inline functionality to improve - * performance. - */ - -/* - * These pseudo functions are always implemented as macros: - */ - -#define getyx(win,y,x) (y = getcury(win), x = getcurx(win)) -#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win)) -#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win)) -#define getparyx(win,y,x) (y = getpary(win), x = getparx(win)) - -#define getsyx(y,x) do { if (newscr) { \ - if (is_leaveok(newscr)) \ - (y) = (x) = -1; \ - else \ - getyx(newscr,(y), (x)); \ - } \ - } while(0) - -#define setsyx(y,x) do { if (newscr) { \ - if ((y) == -1 && (x) == -1) \ - leaveok(newscr, TRUE); \ - else { \ - leaveok(newscr, FALSE); \ - wmove(newscr, (y), (x)); \ - } \ - } \ - } while(0) - -#ifndef NCURSES_NOMACROS - -/* - * These miscellaneous pseudo functions are provided for compatibility: - */ - -#define wgetstr(w, s) wgetnstr(w, s, -1) -#define getnstr(s, n) wgetnstr(stdscr, s, n) - -#define setterm(term) setupterm(term, 1, (int *)0) - -#define fixterm() reset_prog_mode() -#define resetterm() reset_shell_mode() -#define saveterm() def_prog_mode() -#define crmode() cbreak() -#define nocrmode() nocbreak() -#define gettmode() - -/* It seems older SYSV curses versions define these */ -#if !NCURSES_OPAQUE -#define getattrs(win) NCURSES_CAST(int, (win) ? (win)->_attrs : A_NORMAL) -#define getcurx(win) ((win) ? (win)->_curx : ERR) -#define getcury(win) ((win) ? (win)->_cury : ERR) -#define getbegx(win) ((win) ? (win)->_begx : ERR) -#define getbegy(win) ((win) ? (win)->_begy : ERR) -#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR) -#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR) -#define getparx(win) ((win) ? (win)->_parx : ERR) -#define getpary(win) ((win) ? (win)->_pary : ERR) -#endif /* NCURSES_OPAQUE */ - -#define wstandout(win) (wattrset(win,A_STANDOUT)) -#define wstandend(win) (wattrset(win,A_NORMAL)) - -#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL) -#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL) - -#if !NCURSES_OPAQUE -#if defined(NCURSES_WIDECHAR) && @NCURSES_EXT_COLORS@ -#define wattrset(win,at) ((win) \ - ? ((win)->_color = PAIR_NUMBER(at), \ - (win)->_attrs = NCURSES_CAST(attr_t, at), \ - OK) \ - : ERR) -#else -#define wattrset(win,at) ((win) \ - ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \ - OK) \ - : ERR) -#endif -#endif /* NCURSES_OPAQUE */ - -#define scroll(win) wscrl(win,1) - -#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) -#define touchline(win, s, c) wtouchln((win), s, c, 1) -#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) - -#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) -#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) -#define hline(ch, n) whline(stdscr, ch, n) -#define vline(ch, n) wvline(stdscr, ch, n) - -#define winstr(w, s) winnstr(w, s, -1) -#define winchstr(w, s) winchnstr(w, s, -1) -#define winsstr(w, s) winsnstr(w, s, -1) - -#if !NCURSES_OPAQUE -#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1) -#endif /* NCURSES_OPAQUE */ - -#define waddstr(win,str) waddnstr(win,str,-1) -#define waddchstr(win,str) waddchnstr(win,str,-1) - -/* - * These apply to the first 256 color pairs. - */ -#define COLOR_PAIR(n) NCURSES_BITS(n, 0) -#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,a) & A_COLOR) >> NCURSES_ATTR_SHIFT))) - -/* - * pseudo functions for standard screen - */ - -#define addch(ch) waddch(stdscr,ch) -#define addchnstr(str,n) waddchnstr(stdscr,str,n) -#define addchstr(str) waddchstr(stdscr,str) -#define addnstr(str,n) waddnstr(stdscr,str,n) -#define addstr(str) waddnstr(stdscr,str,-1) -#define attroff(at) wattroff(stdscr,at) -#define attron(at) wattron(stdscr,at) -#define attrset(at) wattrset(stdscr,at) -#define attr_get(ap,cp,o) wattr_get(stdscr,ap,cp,o) -#define attr_off(a,o) wattr_off(stdscr,a,o) -#define attr_on(a,o) wattr_on(stdscr,a,o) -#define attr_set(a,c,o) wattr_set(stdscr,a,c,o) -#define bkgd(ch) wbkgd(stdscr,ch) -#define bkgdset(ch) wbkgdset(stdscr,ch) -#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o) -#define clear() wclear(stdscr) -#define clrtobot() wclrtobot(stdscr) -#define clrtoeol() wclrtoeol(stdscr) -#define color_set(c,o) wcolor_set(stdscr,c,o) -#define delch() wdelch(stdscr) -#define deleteln() winsdelln(stdscr,-1) -#define echochar(c) wechochar(stdscr,c) -#define erase() werase(stdscr) -#define getch() wgetch(stdscr) -#define getstr(str) wgetstr(stdscr,str) -#define inch() winch(stdscr) -#define inchnstr(s,n) winchnstr(stdscr,s,n) -#define inchstr(s) winchstr(stdscr,s) -#define innstr(s,n) winnstr(stdscr,s,n) -#define insch(c) winsch(stdscr,c) -#define insdelln(n) winsdelln(stdscr,n) -#define insertln() winsdelln(stdscr,1) -#define insnstr(s,n) winsnstr(stdscr,s,n) -#define insstr(s) winsstr(stdscr,s) -#define instr(s) winstr(stdscr,s) -#define move(y,x) wmove(stdscr,y,x) -#define refresh() wrefresh(stdscr) -#define scrl(n) wscrl(stdscr,n) -#define setscrreg(t,b) wsetscrreg(stdscr,t,b) -#define standend() wstandend(stdscr) -#define standout() wstandout(stdscr) -#define timeout(delay) wtimeout(stdscr,delay) -#define wdeleteln(win) winsdelln(win,-1) -#define winsertln(win) winsdelln(win,1) - -/* - * mv functions - */ - -#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch)) -#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n)) -#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1)) -#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n)) -#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1)) -#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win)) -#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o)) -#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win)) -#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n)) -#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str)) -#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n)) -#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win)) -#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n)) -#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s)) -#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n)) -#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c)) -#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n)) -#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s)) -#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s)) -#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n)) - -#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) -#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n) -#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str) -#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n) -#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) -#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o) -#define mvdelch(y,x) mvwdelch(stdscr,y,x) -#define mvgetch(y,x) mvwgetch(stdscr,y,x) -#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n) -#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) -#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n) -#define mvinch(y,x) mvwinch(stdscr,y,x) -#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n) -#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s) -#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n) -#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c) -#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n) -#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s) -#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s) -#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n) - -/* - * Some wide-character functions can be implemented without the extensions. - */ -#if !NCURSES_OPAQUE -#define getbkgd(win) ((win)->_bkgd) -#endif /* NCURSES_OPAQUE */ - -#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) -#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) - -#if !NCURSES_OPAQUE -#if defined(NCURSES_WIDECHAR) && @NCURSES_EXT_COLORS@ -#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \ - (win)->_color = (p), \ - OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (short)(win)->_color)), \ - OK) -#else -#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | (attr_t)COLOR_PAIR(p)), OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (short)PAIR_NUMBER((win)->_attrs))), \ - OK) -#endif -#endif /* NCURSES_OPAQUE */ - -/* - * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use - * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to - * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already - * use stdarg.h, so... - */ -#define vw_printw vwprintw -#define vw_scanw vwscanw - -/* - * Export fallback function for use in C++ binding. - */ -#if !@HAVE_VSSCANF@ -#define vsscanf(a,b,c) _nc_vsscanf(a,b,c) -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_OPAQUE -#define is_cleared(win) ((win) ? (win)->_clear : FALSE) -#define is_idcok(win) ((win) ? (win)->_idcok : FALSE) -#define is_idlok(win) ((win) ? (win)->_idlok : FALSE) -#define is_immedok(win) ((win) ? (win)->_immed : FALSE) -#define is_keypad(win) ((win) ? (win)->_use_keypad : FALSE) -#define is_leaveok(win) ((win) ? (win)->_leaveok : FALSE) -#define is_nodelay(win) ((win) ? ((win)->_delay == 0) : FALSE) -#define is_notimeout(win) ((win) ? (win)->_notimeout : FALSE) -#define is_pad(win) ((win) ? ((win)->_flags & _ISPAD) != 0 : FALSE) -#define is_scrollok(win) ((win) ? (win)->_scroll : FALSE) -#define is_subwin(win) ((win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE) -#define is_syncok(win) ((win) ? (win)->_sync : FALSE) -#define wgetparent(win) ((win) ? (win)->_parent : 0) -#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR) -#endif -#endif - -#endif /* NCURSES_NOMACROS */ - -/* - * Public variables. - * - * Notes: - * a. ESCDELAY was an undocumented feature under AIX curses. - * It gives the ESC expire time in milliseconds. - * b. ttytype is needed for backward compatibility - */ -#if NCURSES_REENTRANT - -NCURSES_WRAPPED_VAR(WINDOW *, curscr); -NCURSES_WRAPPED_VAR(WINDOW *, newscr); -NCURSES_WRAPPED_VAR(WINDOW *, stdscr); -NCURSES_WRAPPED_VAR(char *, ttytype); -NCURSES_WRAPPED_VAR(int, COLORS); -NCURSES_WRAPPED_VAR(int, COLOR_PAIRS); -NCURSES_WRAPPED_VAR(int, COLS); -NCURSES_WRAPPED_VAR(int, ESCDELAY); -NCURSES_WRAPPED_VAR(int, LINES); -NCURSES_WRAPPED_VAR(int, TABSIZE); - -#define curscr NCURSES_PUBLIC_VAR(curscr()) -#define newscr NCURSES_PUBLIC_VAR(newscr()) -#define stdscr NCURSES_PUBLIC_VAR(stdscr()) -#define ttytype NCURSES_PUBLIC_VAR(ttytype()) -#define COLORS NCURSES_PUBLIC_VAR(COLORS()) -#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS()) -#define COLS NCURSES_PUBLIC_VAR(COLS()) -#define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY()) -#define LINES NCURSES_PUBLIC_VAR(LINES()) -#define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE()) - -#else - -extern NCURSES_EXPORT_VAR(WINDOW *) curscr; -extern NCURSES_EXPORT_VAR(WINDOW *) newscr; -extern NCURSES_EXPORT_VAR(WINDOW *) stdscr; -extern NCURSES_EXPORT_VAR(char) ttytype[]; -extern NCURSES_EXPORT_VAR(int) COLORS; -extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS; -extern NCURSES_EXPORT_VAR(int) COLS; -extern NCURSES_EXPORT_VAR(int) ESCDELAY; -extern NCURSES_EXPORT_VAR(int) LINES; -extern NCURSES_EXPORT_VAR(int) TABSIZE; - -#endif - -/* - * Pseudo-character tokens outside ASCII range. The curses wgetch() function - * will return any given one of these only if the corresponding k- capability - * is defined in your terminal's terminfo entry. - * - * Some keys (KEY_A1, etc) are arranged like this: - * a1 up a3 - * left b2 right - * c1 down c3 - * - * A few key codes do not depend upon the terminfo entry. - */ -#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ -#define KEY_MIN 0401 /* Minimum curses key */ -#define KEY_BREAK 0401 /* Break key (unreliable) */ -#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ -#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ diff --git a/deps/ncurses-5.9/include/curses.head b/deps/ncurses-5.9/include/curses.head deleted file mode 100644 index b2446f2..0000000 --- a/deps/ncurses-5.9/include/curses.head +++ /dev/null @@ -1,1385 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* $Id: curses.h.in,v 1.220 2011/01/22 19:47:20 tom Exp $ */ - -#ifndef __NCURSES_H -#define __NCURSES_H - -#define CURSES 1 -#define CURSES_H 1 - -/* These are defined only in curses.h, and are used for conditional compiles */ -#define NCURSES_VERSION_MAJOR 5 -#define NCURSES_VERSION_MINOR 9 -#define NCURSES_VERSION_PATCH 20110404 - -/* This is defined in more than one ncurses header, for identification */ -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.9" - -/* - * Identify the mouse encoding version. - */ -#define NCURSES_MOUSE_VERSION 1 - -/* - * Definitions to facilitate DLL's. - */ -#include - -/* - * User-definable tweak to disable the include of . - */ -#ifndef NCURSES_ENABLE_STDBOOL_H -#define NCURSES_ENABLE_STDBOOL_H 1 -#endif - -/* - * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses - * configured using --disable-macros. - */ -#ifdef NCURSES_NOMACROS -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T attr_t -#endif -#endif /* NCURSES_NOMACROS */ - -#ifndef NCURSES_ATTR_T -#define NCURSES_ATTR_T int -#endif - -/* - * Expands to 'const' if ncurses is configured using --enable-const. Note that - * doing so makes it incompatible with other implementations of X/Open Curses. - */ -#undef NCURSES_CONST -#define NCURSES_CONST /*nothing*/ - -#undef NCURSES_INLINE -#define NCURSES_INLINE inline - -/* - * The internal type used for color values - */ -#undef NCURSES_COLOR_T -#define NCURSES_COLOR_T short - -/* - * Definition used to make WINDOW and similar structs opaque. - */ -#ifndef NCURSES_OPAQUE -#define NCURSES_OPAQUE 0 -#endif - -/* - * The reentrant code relies on the opaque setting, but adds features. - */ -#ifndef NCURSES_REENTRANT -#define NCURSES_REENTRANT 0 -#endif - -/* - * Control whether bindings for interop support are added. - */ -#undef NCURSES_INTEROP_FUNCS -#define NCURSES_INTEROP_FUNCS 0 - -/* - * The internal type used for window dimensions. - */ -#undef NCURSES_SIZE_T -#define NCURSES_SIZE_T short - -/* - * Control whether tparm() supports varargs or fixed-parameter list. - */ -#undef NCURSES_TPARM_VARARGS -#define NCURSES_TPARM_VARARGS 1 - -/* - * NCURSES_CH_T is used in building the library, but not used otherwise in - * this header file, since that would make the normal/wide-character versions - * of the header incompatible. - */ -#undef NCURSES_CH_T -#define NCURSES_CH_T chtype - -#if 0 && defined(_LP64) -typedef unsigned chtype; -typedef unsigned mmask_t; -#else -typedef unsigned int chtype; -typedef unsigned long mmask_t; -#endif - -/* - * We need FILE, etc. Include this before checking any feature symbols. - */ -#include - -/* - * With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or - * conflicting) when _XOPEN_SOURCE is 500 or greater. - */ -#undef NCURSES_WIDECHAR -#if defined(_XOPEN_SOURCE_EXTENDED) || defined(_XPG5) -#define NCURSES_WIDECHAR -#endif - -#include /* we need va_list */ -#ifdef NCURSES_WIDECHAR -#include /* we want wchar_t */ -#endif - -/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also - * implement it. If so, we must use the C++ compiler's type to avoid conflict - * with other interfaces. - * - * A further complication is that may declare 'bool' to be a - * different type, such as an enum which is not necessarily compatible with - * C++. If we have , make 'bool' a macro, so users may #undef it. - * Otherwise, let it remain a typedef to avoid conflicts with other #define's. - * In either case, make a typedef for NCURSES_BOOL which can be used if needed - * from either C or C++. - */ - -#undef TRUE -#define TRUE 1 - -#undef FALSE -#define FALSE 0 - -typedef unsigned char NCURSES_BOOL; - -#if defined(__cplusplus) /* __cplusplus, etc. */ - -/* use the C++ compiler's bool type */ -#define NCURSES_BOOL bool - -#else /* c89, c99, etc. */ - -#if NCURSES_ENABLE_STDBOOL_H -#include -/* use whatever the C compiler decides bool really is */ -#define NCURSES_BOOL bool -#else -/* there is no predefined bool - use our own */ -#undef bool -#define bool NCURSES_BOOL -#endif - -#endif /* !__cplusplus, etc. */ - -#ifdef __cplusplus -extern "C" { -#define NCURSES_CAST(type,value) static_cast(value) -#else -#define NCURSES_CAST(type,value) (type)(value) -#endif - -/* - * X/Open attributes. In the ncurses implementation, they are identical to the - * A_ attributes. - */ -#define WA_ATTRIBUTES A_ATTRIBUTES -#define WA_NORMAL A_NORMAL -#define WA_STANDOUT A_STANDOUT -#define WA_UNDERLINE A_UNDERLINE -#define WA_REVERSE A_REVERSE -#define WA_BLINK A_BLINK -#define WA_DIM A_DIM -#define WA_BOLD A_BOLD -#define WA_ALTCHARSET A_ALTCHARSET -#define WA_INVIS A_INVIS -#define WA_PROTECT A_PROTECT -#define WA_HORIZONTAL A_HORIZONTAL -#define WA_LEFT A_LEFT -#define WA_LOW A_LOW -#define WA_RIGHT A_RIGHT -#define WA_TOP A_TOP -#define WA_VERTICAL A_VERTICAL - -/* colors */ -#define COLOR_BLACK 0 -#define COLOR_RED 1 -#define COLOR_GREEN 2 -#define COLOR_YELLOW 3 -#define COLOR_BLUE 4 -#define COLOR_MAGENTA 5 -#define COLOR_CYAN 6 -#define COLOR_WHITE 7 - -/* line graphics */ - -#if 0 || NCURSES_REENTRANT -NCURSES_WRAPPED_VAR(chtype*, acs_map); -#define acs_map NCURSES_PUBLIC_VAR(acs_map()) -#else -extern NCURSES_EXPORT_VAR(chtype) acs_map[]; -#endif - -#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,c)]) - -/* VT100 symbols begin here */ -#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */ -#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */ -#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */ -#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */ -#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */ -#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */ -#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */ -#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */ -#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */ -#define ACS_VLINE NCURSES_ACS('x') /* vertical line */ -#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */ -#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */ -#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */ -#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */ -#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */ -#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */ -#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */ -#define ACS_BULLET NCURSES_ACS('~') /* bullet */ -/* Teletype 5410v1 symbols begin here */ -#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */ -#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */ -#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */ -#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */ -#define ACS_BOARD NCURSES_ACS('h') /* board of squares */ -#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */ -#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */ -/* - * These aren't documented, but a lot of System Vs have them anyway - * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). - * The ACS_names may not match AT&T's, our source didn't know them. - */ -#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */ -#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */ -#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */ -#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */ -#define ACS_PI NCURSES_ACS('{') /* Pi */ -#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */ -#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */ - -/* - * 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. - */ -#define ACS_BSSB ACS_ULCORNER -#define ACS_SSBB ACS_LLCORNER -#define ACS_BBSS ACS_URCORNER -#define ACS_SBBS ACS_LRCORNER -#define ACS_SBSS ACS_RTEE -#define ACS_SSSB ACS_LTEE -#define ACS_SSBS ACS_BTEE -#define ACS_BSSS ACS_TTEE -#define ACS_BSBS ACS_HLINE -#define ACS_SBSB ACS_VLINE -#define ACS_SSSS ACS_PLUS - -#undef ERR -#define ERR (-1) - -#undef OK -#define OK (0) - -/* values for the _flags member */ -#define _SUBWIN 0x01 /* is this a sub-window? */ -#define _ENDLINE 0x02 /* is the window flush right? */ -#define _FULLWIN 0x04 /* is the window full-screen? */ -#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ -#define _ISPAD 0x10 /* is this window a pad? */ -#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ -#define _WRAPPED 0x40 /* cursor was just wrappped */ - -/* - * this value is used in the firstchar and lastchar fields to mark - * unchanged lines - */ -#define _NOCHANGE -1 - -/* - * this value is used in the oldindex field to mark lines created by insertions - * and scrolls. - */ -#define _NEWINDEX -1 - -typedef struct screen SCREEN; -typedef struct _win_st WINDOW; - -typedef chtype attr_t; /* ...must be at least as wide as chtype */ - -#ifdef NCURSES_WIDECHAR - -#if 0 -#ifdef mblen /* libutf8.h defines it w/o undefining first */ -#undef mblen -#endif -#include -#endif - -#if 0 -#include /* ...to get mbstate_t, etc. */ -#endif - -#if 0 -typedef unsigned short wchar_t; -#endif - -#if 0 -typedef unsigned int wint_t; -#endif - -/* - * cchar_t stores an array of CCHARW_MAX wide characters. The first is - * normally a spacing character. The others are non-spacing. If those - * (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 5 -typedef struct -{ - attr_t attr; - wchar_t chars[CCHARW_MAX]; -#if 0 -#undef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS 20110404 - int ext_color; /* color pair, must be more than 16-bits */ -#endif -} -cchar_t; - -#endif /* NCURSES_WIDECHAR */ - -#if !NCURSES_OPAQUE -struct ldat; - -struct _win_st -{ - NCURSES_SIZE_T _cury, _curx; /* current cursor position */ - - /* window location and size */ - NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */ - NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */ - - short _flags; /* window state flags */ - - /* attribute tracking */ - attr_t _attrs; /* current attribute for non-space character */ - chtype _bkgd; /* current background char/attribute pair */ - - /* option values set by user */ - bool _notimeout; /* no time out on function-key entry? */ - bool _clear; /* consider all data in the window invalid? */ - bool _leaveok; /* OK to not reset cursor on exit? */ - bool _scroll; /* OK to scroll this window? */ - bool _idlok; /* OK to use insert/delete line? */ - bool _idcok; /* OK to use insert/delete char? */ - bool _immed; /* window in immed mode? (not yet used) */ - bool _sync; /* window in sync mode? */ - bool _use_keypad; /* process function keys into KEY_ symbols? */ - int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ - - struct ldat *_line; /* the actual line data */ - - /* global screen state */ - NCURSES_SIZE_T _regtop; /* top line of scrolling region */ - NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */ - - /* these are used only if this is a sub-window */ - int _parx; /* x coordinate of this window in parent */ - int _pary; /* y coordinate of this window in parent */ - WINDOW *_parent; /* pointer to parent if a sub-window */ - - /* these are used only if this is a pad */ - struct pdat - { - NCURSES_SIZE_T _pad_y, _pad_x; - NCURSES_SIZE_T _pad_top, _pad_left; - NCURSES_SIZE_T _pad_bottom, _pad_right; - } _pad; - - NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ - -#ifdef NCURSES_WIDECHAR - cchar_t _bkgrnd; /* current background char/attribute pair */ -#if 0 - int _color; /* current color-pair for non-space character */ -#endif -#endif -}; -#endif /* NCURSES_OPAQUE */ - -/* - * This is an extension to support events... - */ -#if 1 -#ifdef NCURSES_WGETCH_EVENTS -#if !defined(__BEOS__) || defined(__HAIKU__) - /* Fix _nc_timed_wait() on BEOS... */ -# define NCURSES_EVENT_VERSION 1 -#endif /* !defined(__BEOS__) */ - -/* - * Bits to set in _nc_event.data.flags - */ -# define _NC_EVENT_TIMEOUT_MSEC 1 -# define _NC_EVENT_FILE 2 -# define _NC_EVENT_FILE_READABLE 2 -# if 0 /* Not supported yet... */ -# define _NC_EVENT_FILE_WRITABLE 4 -# define _NC_EVENT_FILE_EXCEPTION 8 -# endif - -typedef struct -{ - int type; - union - { - long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */ - struct - { - unsigned int flags; - int fd; - unsigned int result; - } fev; /* _NC_EVENT_FILE */ - } data; -} _nc_event; - -typedef struct -{ - int count; - int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */ - _nc_event *events[1]; -} _nc_eventlist; - -extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *); /* experimental */ -extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *);/* experimental */ - -#endif /* NCURSES_WGETCH_EVENTS */ -#endif /* NCURSES_EXT_FUNCS */ - -/* - * GCC (and some other compilers) define '__attribute__'; we're using this - * macro to alert the compiler to flag inconsistencies in printf/scanf-like - * function calls. Just in case '__attribute__' isn't defined, make a dummy. - * Old versions of G++ do not accept it anyway, at least not consistently with - * GCC. - */ -#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__)) -#define __attribute__(p) /* nothing */ -#endif - -/* - * We cannot define these in ncurses_cfg.h, since they require parameters to be - * passed (that is non-portable). If you happen to be using gcc with warnings - * enabled, define - * GCC_PRINTF - * GCC_SCANF - * to improve checking of calls to printw(), etc. - */ -#ifndef GCC_PRINTFLIKE -#if defined(GCC_PRINTF) && !defined(printf) -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#else -#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_SCANFLIKE -#if defined(GCC_SCANF) && !defined(scanf) -#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) -#else -#define GCC_SCANFLIKE(fmt,var) /*nothing*/ -#endif -#endif - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif - -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -/* - * Curses uses a helper function. Define our type for this to simplify - * extending it for the sp-funcs feature. - */ -typedef int (*NCURSES_OUTC)(int); - -/* - * Function prototypes. This is the complete X/Open Curses list of required - * functions. Those marked `generated' will have sources generated from the - * macro definitions later in this file, in order to satisfy XPG4.2 - * requirements. - */ - -extern NCURSES_EXPORT(int) addch (const chtype); /* generated */ -extern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */ -extern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) addstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */ -extern NCURSES_EXPORT(int) attr_get (attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */ -extern NCURSES_EXPORT(int) attr_set (attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) baudrate (void); /* implemented */ -extern NCURSES_EXPORT(int) beep (void); /* implemented */ -extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */ -extern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */ -extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ -extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */ -extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */ -extern NCURSES_EXPORT(int) cbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) chgat (int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) clear (void); /* generated */ -extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) clrtobot (void); /* generated */ -extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */ -extern NCURSES_EXPORT(int) color_content (short,short*,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) color_set (short,void*); /* generated */ -extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */ -extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) curs_set (int); /* implemented */ -extern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) delay_output (int); /* implemented */ -extern NCURSES_EXPORT(int) delch (void); /* generated */ -extern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) deleteln (void); /* generated */ -extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) doupdate (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) echo (void); /* implemented */ -extern NCURSES_EXPORT(int) echochar (const chtype); /* generated */ -extern NCURSES_EXPORT(int) erase (void); /* generated */ -extern NCURSES_EXPORT(int) endwin (void); /* implemented */ -extern NCURSES_EXPORT(char) erasechar (void); /* implemented */ -extern NCURSES_EXPORT(void) filter (void); /* implemented */ -extern NCURSES_EXPORT(int) flash (void); /* implemented */ -extern NCURSES_EXPORT(int) flushinp (void); /* implemented */ -extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getch (void); /* generated */ -extern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) getstr (char *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */ -extern NCURSES_EXPORT(int) halfdelay (int); /* implemented */ -extern NCURSES_EXPORT(bool) has_colors (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_ic (void); /* implemented */ -extern NCURSES_EXPORT(bool) has_il (void); /* implemented */ -extern NCURSES_EXPORT(int) hline (chtype, int); /* generated */ -extern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) inch (void); /* generated */ -extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */ -extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */ -extern NCURSES_EXPORT(int) init_color (short,short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) init_pair (short,short,short); /* implemented */ -extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */ -extern NCURSES_EXPORT(int) insch (chtype); /* generated */ -extern NCURSES_EXPORT(int) insdelln (int); /* generated */ -extern NCURSES_EXPORT(int) insertln (void); /* generated */ -extern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */ -extern NCURSES_EXPORT(int) insstr (const char *); /* generated */ -extern NCURSES_EXPORT(int) instr (char *); /* generated */ -extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(bool) isendwin (void); /* implemented */ -extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */ -extern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char) killchar (void); /* implemented */ -extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(char *) longname (void); /* implemented */ -extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) move (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, short, const void *); /* generated */ -extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */ -extern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(3,4); -extern NCURSES_EXPORT(int) mvscanw (int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(3,4); -extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */ -extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, short, const void *);/* generated */ -extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */ -extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */ -extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */ -extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */ -extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */ -extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */ - GCC_PRINTFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(4,5); -extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */ -extern NCURSES_EXPORT(int) napms (int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */ -extern NCURSES_EXPORT(SCREEN *) newterm (NCURSES_CONST char *,FILE *,FILE *); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) nl (void); /* implemented */ -extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */ -extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) noecho (void); /* implemented */ -extern NCURSES_EXPORT(int) nonl (void); /* implemented */ -extern NCURSES_EXPORT(void) noqiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) noraw (void); /* implemented */ -extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) pair_content (short,short*,short*); /* implemented */ -extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */ -extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */ -extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */ - GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */ -extern NCURSES_EXPORT(void) qiflush (void); /* implemented */ -extern NCURSES_EXPORT(int) raw (void); /* implemented */ -extern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) refresh (void); /* generated */ -extern NCURSES_EXPORT(int) resetty (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */ -extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */ -extern NCURSES_EXPORT(int) savetty (void); /* implemented */ -extern NCURSES_EXPORT(int) scanw (NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(1,2); -extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scrl (int); /* generated */ -extern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */ -extern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */ -extern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */ -extern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */ -extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */ -extern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */ -extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,short,void*); /* implemented */ -extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_color (short); /* implemented */ -extern NCURSES_EXPORT(int) slk_init (int); /* implemented */ -extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */ -extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */ -extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */ -extern NCURSES_EXPORT(int) standout (void); /* generated */ -extern NCURSES_EXPORT(int) standend (void); /* generated */ -extern NCURSES_EXPORT(int) start_color (void); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */ -extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */ -extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */ -extern NCURSES_EXPORT(char *) termname (void); /* implemented */ -extern NCURSES_EXPORT(void) timeout (int); /* generated */ -extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */ -extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) typeahead (int); /* implemented */ -extern NCURSES_EXPORT(int) ungetch (int); /* implemented */ -extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) use_env (bool); /* implemented */ -extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */ -extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */ -extern NCURSES_EXPORT(int) vline (chtype, int); /* generated */ -extern NCURSES_EXPORT(int) vwprintw (WINDOW *, const char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_printw (WINDOW *, const char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) vwscanw (WINDOW *, NCURSES_CONST char *,va_list); /* implemented */ -extern NCURSES_EXPORT(int) vw_scanw (WINDOW *, NCURSES_CONST char *,va_list); /* generated */ -extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */ -extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */ -extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */ -extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, short *, void *); /* generated */ -extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */ -extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, short, void *); /* generated */ -extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ -extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, short, const void *);/* implemented */ -extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,short,void*); /* implemented */ -extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */ -extern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */ -extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */ -extern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */ -extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */ -extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */ -extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */ -extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */ -extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */ -extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */ -extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */ - GCC_PRINTFLIKE(2,3); -extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(int) wscanw (WINDOW *, NCURSES_CONST char *,...) /* implemented */ - GCC_SCANFLIKE(2,3); -extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */ -extern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */ -extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */ -extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */ -extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */ - -/* - * These are also declared in : - */ -extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); /* implemented */ -extern NCURSES_EXPORT(int) putp (const char *); /* implemented */ - -#if NCURSES_TPARM_VARARGS -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ -#endif - -extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */ - -/* - * These functions are not in X/Open, but we use them in macro definitions: - */ -extern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ - -/* - * vid_attr() was implemented originally based on a draft of X/Open curses. - */ -#ifndef NCURSES_WIDECHAR -#define vid_attr(a,pair,opts) vidattr(a) -#endif - -/* - * These functions are extensions - not in X/Open Curses. - */ -#if 1 -#undef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS 20110404 -typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); -typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); -extern NCURSES_EXPORT(bool) is_term_resized (int, int); -extern NCURSES_EXPORT(char *) keybound (int, int); -extern NCURSES_EXPORT(const char *) curses_version (void); -extern NCURSES_EXPORT(int) assume_default_colors (int, int); -extern NCURSES_EXPORT(int) define_key (const char *, int); -extern NCURSES_EXPORT(int) get_escdelay (void); -extern NCURSES_EXPORT(int) key_defined (const char *); -extern NCURSES_EXPORT(int) keyok (int, bool); -extern NCURSES_EXPORT(int) resize_term (int, int); -extern NCURSES_EXPORT(int) resizeterm (int, int); -extern NCURSES_EXPORT(int) set_escdelay (int); -extern NCURSES_EXPORT(int) set_tabsize (int); -extern NCURSES_EXPORT(int) use_default_colors (void); -extern NCURSES_EXPORT(int) use_extended_names (bool); -extern NCURSES_EXPORT(int) use_legacy_coding (int); -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); -extern NCURSES_EXPORT(void) nofilter(void); - -/* - * These extensions provide access to information stored in the WINDOW even - * when NCURSES_OPAQUE is set: - */ -extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_pad (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(bool) is_syncok (const WINDOW *); /* generated */ -extern NCURSES_EXPORT(int) wgetscrreg (const WINDOW *, int *, int *); /* generated */ - -#else -#define curses_version() NCURSES_VERSION -#endif - -/* - * Extra extension-functions, which pass a SCREEN pointer rather than using - * a global variable SP. - */ -#if 0 -#undef NCURSES_SP_FUNCS -#define NCURSES_SP_FUNCS 20110404 -#define NCURSES_SP_NAME(name) name##_sp - -/* Define the sp-funcs helper function */ -#define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC) -typedef int (*NCURSES_SP_OUTC)(SCREEN*, int); - -extern NCURSES_EXPORT(SCREEN *) new_prescr (void); /* implemented:SP_FUNC */ - -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(baudrate) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, short, short*, short*, short*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(doupdate) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char) NCURSES_SP_NAME(erasechar) (SCREEN*);/* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(filter) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flash) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flushinp) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(getwin) (SCREEN*, FILE *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, short, short, short, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, short, short, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char) NCURSES_SP_NAME(killchar) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, NCURSES_CONST char *, FILE *, FILE *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, short, short*, short*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resetty) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ripoffline) (SCREEN*, int, int (*)(WINDOW *, int)); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(savetty) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_init) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_set) (SCREEN*, const char *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, short, void*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, short); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (SCREEN*, int, const char *, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(start_color) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(termattrs) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (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 1 -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (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 */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ -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 -#undef NCURSES_SP_FUNCS -#define NCURSES_SP_FUNCS 0 -#define NCURSES_SP_NAME(name) name -#define NCURSES_SP_OUTC NCURSES_OUTC -#endif - -/* attributes */ - -#define NCURSES_ATTR_SHIFT 8 -#define NCURSES_BITS(mask,shift) ((mask) << ((shift) + NCURSES_ATTR_SHIFT)) - -#define A_NORMAL (1U - 1U) -#define A_ATTRIBUTES NCURSES_BITS(~(1U - 1U),0) -#define A_CHARTEXT (NCURSES_BITS(1U,0) - 1U) -#define A_COLOR NCURSES_BITS(((1U) << 8) - 1U,0) -#define A_STANDOUT NCURSES_BITS(1U,8) -#define A_UNDERLINE NCURSES_BITS(1U,9) -#define A_REVERSE NCURSES_BITS(1U,10) -#define A_BLINK NCURSES_BITS(1U,11) -#define A_DIM NCURSES_BITS(1U,12) -#define A_BOLD NCURSES_BITS(1U,13) -#define A_ALTCHARSET NCURSES_BITS(1U,14) -#define A_INVIS NCURSES_BITS(1U,15) -#define A_PROTECT NCURSES_BITS(1U,16) -#define A_HORIZONTAL NCURSES_BITS(1U,17) -#define A_LEFT NCURSES_BITS(1U,18) -#define A_LOW NCURSES_BITS(1U,19) -#define A_RIGHT NCURSES_BITS(1U,20) -#define A_TOP NCURSES_BITS(1U,21) -#define A_VERTICAL NCURSES_BITS(1U,22) - -/* - * Most of the pseudo functions are macros that either provide compatibility - * with older versions of curses, or provide inline functionality to improve - * performance. - */ - -/* - * These pseudo functions are always implemented as macros: - */ - -#define getyx(win,y,x) (y = getcury(win), x = getcurx(win)) -#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win)) -#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win)) -#define getparyx(win,y,x) (y = getpary(win), x = getparx(win)) - -#define getsyx(y,x) do { if (newscr) { \ - if (is_leaveok(newscr)) \ - (y) = (x) = -1; \ - else \ - getyx(newscr,(y), (x)); \ - } \ - } while(0) - -#define setsyx(y,x) do { if (newscr) { \ - if ((y) == -1 && (x) == -1) \ - leaveok(newscr, TRUE); \ - else { \ - leaveok(newscr, FALSE); \ - wmove(newscr, (y), (x)); \ - } \ - } \ - } while(0) - -#ifndef NCURSES_NOMACROS - -/* - * These miscellaneous pseudo functions are provided for compatibility: - */ - -#define wgetstr(w, s) wgetnstr(w, s, -1) -#define getnstr(s, n) wgetnstr(stdscr, s, n) - -#define setterm(term) setupterm(term, 1, (int *)0) - -#define fixterm() reset_prog_mode() -#define resetterm() reset_shell_mode() -#define saveterm() def_prog_mode() -#define crmode() cbreak() -#define nocrmode() nocbreak() -#define gettmode() - -/* It seems older SYSV curses versions define these */ -#if !NCURSES_OPAQUE -#define getattrs(win) NCURSES_CAST(int, (win) ? (win)->_attrs : A_NORMAL) -#define getcurx(win) ((win) ? (win)->_curx : ERR) -#define getcury(win) ((win) ? (win)->_cury : ERR) -#define getbegx(win) ((win) ? (win)->_begx : ERR) -#define getbegy(win) ((win) ? (win)->_begy : ERR) -#define getmaxx(win) ((win) ? ((win)->_maxx + 1) : ERR) -#define getmaxy(win) ((win) ? ((win)->_maxy + 1) : ERR) -#define getparx(win) ((win) ? (win)->_parx : ERR) -#define getpary(win) ((win) ? (win)->_pary : ERR) -#endif /* NCURSES_OPAQUE */ - -#define wstandout(win) (wattrset(win,A_STANDOUT)) -#define wstandend(win) (wattrset(win,A_NORMAL)) - -#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL) -#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL) - -#if !NCURSES_OPAQUE -#if defined(NCURSES_WIDECHAR) && 0 -#define wattrset(win,at) ((win) \ - ? ((win)->_color = PAIR_NUMBER(at), \ - (win)->_attrs = NCURSES_CAST(attr_t, at), \ - OK) \ - : ERR) -#else -#define wattrset(win,at) ((win) \ - ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \ - OK) \ - : ERR) -#endif -#endif /* NCURSES_OPAQUE */ - -#define scroll(win) wscrl(win,1) - -#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) -#define touchline(win, s, c) wtouchln((win), s, c, 1) -#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) - -#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) -#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) -#define hline(ch, n) whline(stdscr, ch, n) -#define vline(ch, n) wvline(stdscr, ch, n) - -#define winstr(w, s) winnstr(w, s, -1) -#define winchstr(w, s) winchnstr(w, s, -1) -#define winsstr(w, s) winsnstr(w, s, -1) - -#if !NCURSES_OPAQUE -#define redrawwin(win) wredrawln(win, 0, (win)->_maxy+1) -#endif /* NCURSES_OPAQUE */ - -#define waddstr(win,str) waddnstr(win,str,-1) -#define waddchstr(win,str) waddchnstr(win,str,-1) - -/* - * These apply to the first 256 color pairs. - */ -#define COLOR_PAIR(n) NCURSES_BITS(n, 0) -#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,a) & A_COLOR) >> NCURSES_ATTR_SHIFT))) - -/* - * pseudo functions for standard screen - */ - -#define addch(ch) waddch(stdscr,ch) -#define addchnstr(str,n) waddchnstr(stdscr,str,n) -#define addchstr(str) waddchstr(stdscr,str) -#define addnstr(str,n) waddnstr(stdscr,str,n) -#define addstr(str) waddnstr(stdscr,str,-1) -#define attroff(at) wattroff(stdscr,at) -#define attron(at) wattron(stdscr,at) -#define attrset(at) wattrset(stdscr,at) -#define attr_get(ap,cp,o) wattr_get(stdscr,ap,cp,o) -#define attr_off(a,o) wattr_off(stdscr,a,o) -#define attr_on(a,o) wattr_on(stdscr,a,o) -#define attr_set(a,c,o) wattr_set(stdscr,a,c,o) -#define bkgd(ch) wbkgd(stdscr,ch) -#define bkgdset(ch) wbkgdset(stdscr,ch) -#define chgat(n,a,c,o) wchgat(stdscr,n,a,c,o) -#define clear() wclear(stdscr) -#define clrtobot() wclrtobot(stdscr) -#define clrtoeol() wclrtoeol(stdscr) -#define color_set(c,o) wcolor_set(stdscr,c,o) -#define delch() wdelch(stdscr) -#define deleteln() winsdelln(stdscr,-1) -#define echochar(c) wechochar(stdscr,c) -#define erase() werase(stdscr) -#define getch() wgetch(stdscr) -#define getstr(str) wgetstr(stdscr,str) -#define inch() winch(stdscr) -#define inchnstr(s,n) winchnstr(stdscr,s,n) -#define inchstr(s) winchstr(stdscr,s) -#define innstr(s,n) winnstr(stdscr,s,n) -#define insch(c) winsch(stdscr,c) -#define insdelln(n) winsdelln(stdscr,n) -#define insertln() winsdelln(stdscr,1) -#define insnstr(s,n) winsnstr(stdscr,s,n) -#define insstr(s) winsstr(stdscr,s) -#define instr(s) winstr(stdscr,s) -#define move(y,x) wmove(stdscr,y,x) -#define refresh() wrefresh(stdscr) -#define scrl(n) wscrl(stdscr,n) -#define setscrreg(t,b) wsetscrreg(stdscr,t,b) -#define standend() wstandend(stdscr) -#define standout() wstandout(stdscr) -#define timeout(delay) wtimeout(stdscr,delay) -#define wdeleteln(win) winsdelln(win,-1) -#define winsertln(win) winsdelln(win,1) - -/* - * mv functions - */ - -#define mvwaddch(win,y,x,ch) (wmove(win,y,x) == ERR ? ERR : waddch(win,ch)) -#define mvwaddchnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,n)) -#define mvwaddchstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddchnstr(win,str,-1)) -#define mvwaddnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,n)) -#define mvwaddstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : waddnstr(win,str,-1)) -#define mvwdelch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wdelch(win)) -#define mvwchgat(win,y,x,n,a,c,o) (wmove(win,y,x) == ERR ? ERR : wchgat(win,n,a,c,o)) -#define mvwgetch(win,y,x) (wmove(win,y,x) == ERR ? ERR : wgetch(win)) -#define mvwgetnstr(win,y,x,str,n) (wmove(win,y,x) == ERR ? ERR : wgetnstr(win,str,n)) -#define mvwgetstr(win,y,x,str) (wmove(win,y,x) == ERR ? ERR : wgetstr(win,str)) -#define mvwhline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline(win,c,n)) -#define mvwinch(win,y,x) (wmove(win,y,x) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win)) -#define mvwinchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winchnstr(win,s,n)) -#define mvwinchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winchstr(win,s)) -#define mvwinnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winnstr(win,s,n)) -#define mvwinsch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winsch(win,c)) -#define mvwinsnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : winsnstr(win,s,n)) -#define mvwinsstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winsstr(win,s)) -#define mvwinstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : winstr(win,s)) -#define mvwvline(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline(win,c,n)) - -#define mvaddch(y,x,ch) mvwaddch(stdscr,y,x,ch) -#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,y,x,str,n) -#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,y,x,str) -#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,y,x,str,n) -#define mvaddstr(y,x,str) mvwaddstr(stdscr,y,x,str) -#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,y,x,n,a,c,o) -#define mvdelch(y,x) mvwdelch(stdscr,y,x) -#define mvgetch(y,x) mvwgetch(stdscr,y,x) -#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,y,x,str,n) -#define mvgetstr(y,x,str) mvwgetstr(stdscr,y,x,str) -#define mvhline(y,x,c,n) mvwhline(stdscr,y,x,c,n) -#define mvinch(y,x) mvwinch(stdscr,y,x) -#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,y,x,s,n) -#define mvinchstr(y,x,s) mvwinchstr(stdscr,y,x,s) -#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,y,x,s,n) -#define mvinsch(y,x,c) mvwinsch(stdscr,y,x,c) -#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,y,x,s,n) -#define mvinsstr(y,x,s) mvwinsstr(stdscr,y,x,s) -#define mvinstr(y,x,s) mvwinstr(stdscr,y,x,s) -#define mvvline(y,x,c,n) mvwvline(stdscr,y,x,c,n) - -/* - * Some wide-character functions can be implemented without the extensions. - */ -#if !NCURSES_OPAQUE -#define getbkgd(win) ((win)->_bkgd) -#endif /* NCURSES_OPAQUE */ - -#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) -#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) - -#if !NCURSES_OPAQUE -#if defined(NCURSES_WIDECHAR) && 0 -#define wattr_set(win,a,p,opts) ((win)->_attrs = ((a) & ~A_COLOR), \ - (win)->_color = (p), \ - OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (short)(win)->_color)), \ - OK) -#else -#define wattr_set(win,a,p,opts) ((win)->_attrs = (((a) & ~A_COLOR) | (attr_t)COLOR_PAIR(p)), OK) -#define wattr_get(win,a,p,opts) ((void)((a) != (void *)0 && (*(a) = (win)->_attrs)), \ - (void)((p) != (void *)0 && (*(p) = (short)PAIR_NUMBER((win)->_attrs))), \ - OK) -#endif -#endif /* NCURSES_OPAQUE */ - -/* - * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use - * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to - * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already - * use stdarg.h, so... - */ -#define vw_printw vwprintw -#define vw_scanw vwscanw - -/* - * Export fallback function for use in C++ binding. - */ -#if !1 -#define vsscanf(a,b,c) _nc_vsscanf(a,b,c) -NCURSES_EXPORT(int) vsscanf(const char *, const char *, va_list); -#endif - -/* - * These macros are extensions - not in X/Open Curses. - */ -#if 1 -#if !NCURSES_OPAQUE -#define is_cleared(win) ((win) ? (win)->_clear : FALSE) -#define is_idcok(win) ((win) ? (win)->_idcok : FALSE) -#define is_idlok(win) ((win) ? (win)->_idlok : FALSE) -#define is_immedok(win) ((win) ? (win)->_immed : FALSE) -#define is_keypad(win) ((win) ? (win)->_use_keypad : FALSE) -#define is_leaveok(win) ((win) ? (win)->_leaveok : FALSE) -#define is_nodelay(win) ((win) ? ((win)->_delay == 0) : FALSE) -#define is_notimeout(win) ((win) ? (win)->_notimeout : FALSE) -#define is_pad(win) ((win) ? ((win)->_flags & _ISPAD) != 0 : FALSE) -#define is_scrollok(win) ((win) ? (win)->_scroll : FALSE) -#define is_subwin(win) ((win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE) -#define is_syncok(win) ((win) ? (win)->_sync : FALSE) -#define wgetparent(win) ((win) ? (win)->_parent : 0) -#define wgetscrreg(win,t,b) ((win) ? (*(t) = (win)->_regtop, *(b) = (win)->_regbottom, OK) : ERR) -#endif -#endif - -#endif /* NCURSES_NOMACROS */ - -/* - * Public variables. - * - * Notes: - * a. ESCDELAY was an undocumented feature under AIX curses. - * It gives the ESC expire time in milliseconds. - * b. ttytype is needed for backward compatibility - */ -#if NCURSES_REENTRANT - -NCURSES_WRAPPED_VAR(WINDOW *, curscr); -NCURSES_WRAPPED_VAR(WINDOW *, newscr); -NCURSES_WRAPPED_VAR(WINDOW *, stdscr); -NCURSES_WRAPPED_VAR(char *, ttytype); -NCURSES_WRAPPED_VAR(int, COLORS); -NCURSES_WRAPPED_VAR(int, COLOR_PAIRS); -NCURSES_WRAPPED_VAR(int, COLS); -NCURSES_WRAPPED_VAR(int, ESCDELAY); -NCURSES_WRAPPED_VAR(int, LINES); -NCURSES_WRAPPED_VAR(int, TABSIZE); - -#define curscr NCURSES_PUBLIC_VAR(curscr()) -#define newscr NCURSES_PUBLIC_VAR(newscr()) -#define stdscr NCURSES_PUBLIC_VAR(stdscr()) -#define ttytype NCURSES_PUBLIC_VAR(ttytype()) -#define COLORS NCURSES_PUBLIC_VAR(COLORS()) -#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS()) -#define COLS NCURSES_PUBLIC_VAR(COLS()) -#define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY()) -#define LINES NCURSES_PUBLIC_VAR(LINES()) -#define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE()) - -#else - -extern NCURSES_EXPORT_VAR(WINDOW *) curscr; -extern NCURSES_EXPORT_VAR(WINDOW *) newscr; -extern NCURSES_EXPORT_VAR(WINDOW *) stdscr; -extern NCURSES_EXPORT_VAR(char) ttytype[]; -extern NCURSES_EXPORT_VAR(int) COLORS; -extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS; -extern NCURSES_EXPORT_VAR(int) COLS; -extern NCURSES_EXPORT_VAR(int) ESCDELAY; -extern NCURSES_EXPORT_VAR(int) LINES; -extern NCURSES_EXPORT_VAR(int) TABSIZE; - -#endif - -/* - * Pseudo-character tokens outside ASCII range. The curses wgetch() function - * will return any given one of these only if the corresponding k- capability - * is defined in your terminal's terminfo entry. - * - * Some keys (KEY_A1, etc) are arranged like this: - * a1 up a3 - * left b2 right - * c1 down c3 - * - * A few key codes do not depend upon the terminfo entry. - */ -#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ -#define KEY_MIN 0401 /* Minimum curses key */ -#define KEY_BREAK 0401 /* Break key (unreliable) */ -#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ -#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ diff --git a/deps/ncurses-5.9/include/curses.wide b/deps/ncurses-5.9/include/curses.wide deleted file mode 100644 index 44135ee..0000000 --- a/deps/ncurses-5.9/include/curses.wide +++ /dev/null @@ -1,312 +0,0 @@ -/* $Id: curses.wide,v 1.42 2010/03/30 00:39:41 tom Exp $ */ -/* - * vile:cmode: - * This file is part of ncurses, designed to be appended after curses.h.in - * (see that file for the relevant copyright). - */ -#define _XOPEN_CURSES 1 - -#ifdef NCURSES_WIDECHAR - -extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs; - -#define NCURSES_WACS(c) (&_nc_wacs[(unsigned char)c]) - -#define WACS_BSSB NCURSES_WACS('l') -#define WACS_SSBB NCURSES_WACS('m') -#define WACS_BBSS NCURSES_WACS('k') -#define WACS_SBBS NCURSES_WACS('j') -#define WACS_SBSS NCURSES_WACS('u') -#define WACS_SSSB NCURSES_WACS('t') -#define WACS_SSBS NCURSES_WACS('v') -#define WACS_BSSS NCURSES_WACS('w') -#define WACS_BSBS NCURSES_WACS('q') -#define WACS_SBSB NCURSES_WACS('x') -#define WACS_SSSS NCURSES_WACS('n') - -#define WACS_ULCORNER WACS_BSSB -#define WACS_LLCORNER WACS_SSBB -#define WACS_URCORNER WACS_BBSS -#define WACS_LRCORNER WACS_SBBS -#define WACS_RTEE WACS_SBSS -#define WACS_LTEE WACS_SSSB -#define WACS_BTEE WACS_SSBS -#define WACS_TTEE WACS_BSSS -#define WACS_HLINE WACS_BSBS -#define WACS_VLINE WACS_SBSB -#define WACS_PLUS WACS_SSSS - -#define WACS_S1 NCURSES_WACS('o') /* scan line 1 */ -#define WACS_S9 NCURSES_WACS('s') /* scan line 9 */ -#define WACS_DIAMOND NCURSES_WACS('`') /* diamond */ -#define WACS_CKBOARD NCURSES_WACS('a') /* checker board */ -#define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */ -#define WACS_PLMINUS NCURSES_WACS('g') /* plus/minus */ -#define WACS_BULLET NCURSES_WACS('~') /* bullet */ - - /* Teletype 5410v1 symbols */ -#define WACS_LARROW NCURSES_WACS(',') /* arrow left */ -#define WACS_RARROW NCURSES_WACS('+') /* arrow right */ -#define WACS_DARROW NCURSES_WACS('.') /* arrow down */ -#define WACS_UARROW NCURSES_WACS('-') /* arrow up */ -#define WACS_BOARD NCURSES_WACS('h') /* board of squares */ -#define WACS_LANTERN NCURSES_WACS('i') /* lantern symbol */ -#define WACS_BLOCK NCURSES_WACS('0') /* solid square block */ - - /* ncurses extensions */ -#define WACS_S3 NCURSES_WACS('p') /* scan line 3 */ -#define WACS_S7 NCURSES_WACS('r') /* scan line 7 */ -#define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */ -#define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */ -#define WACS_PI NCURSES_WACS('{') /* Pi */ -#define WACS_NEQUAL NCURSES_WACS('|') /* not equal */ -#define WACS_STERLING NCURSES_WACS('}') /* UK pound sign */ - - /* double lines */ -#define WACS_BDDB NCURSES_WACS('C') -#define WACS_DDBB NCURSES_WACS('D') -#define WACS_BBDD NCURSES_WACS('B') -#define WACS_DBBD NCURSES_WACS('A') -#define WACS_DBDD NCURSES_WACS('G') -#define WACS_DDDB NCURSES_WACS('F') -#define WACS_DDBD NCURSES_WACS('H') -#define WACS_BDDD NCURSES_WACS('I') -#define WACS_BDBD NCURSES_WACS('R') -#define WACS_DBDB NCURSES_WACS('Y') -#define WACS_DDDD NCURSES_WACS('E') - -#define WACS_D_ULCORNER WACS_BDDB -#define WACS_D_LLCORNER WACS_DDBB -#define WACS_D_URCORNER WACS_BBDD -#define WACS_D_LRCORNER WACS_DBBD -#define WACS_D_RTEE WACS_DBDD -#define WACS_D_LTEE WACS_DDDB -#define WACS_D_BTEE WACS_DDBD -#define WACS_D_TTEE WACS_BDDD -#define WACS_D_HLINE WACS_BDBD -#define WACS_D_VLINE WACS_DBDB -#define WACS_D_PLUS WACS_DDDD - - /* thick lines */ -#define WACS_BTTB NCURSES_WACS('L') -#define WACS_TTBB NCURSES_WACS('M') -#define WACS_BBTT NCURSES_WACS('K') -#define WACS_TBBT NCURSES_WACS('J') -#define WACS_TBTT NCURSES_WACS('U') -#define WACS_TTTB NCURSES_WACS('T') -#define WACS_TTBT NCURSES_WACS('V') -#define WACS_BTTT NCURSES_WACS('W') -#define WACS_BTBT NCURSES_WACS('Q') -#define WACS_TBTB NCURSES_WACS('X') -#define WACS_TTTT NCURSES_WACS('N') - -#define WACS_T_ULCORNER WACS_BTTB -#define WACS_T_LLCORNER WACS_TTBB -#define WACS_T_URCORNER WACS_BBTT -#define WACS_T_LRCORNER WACS_TBBT -#define WACS_T_RTEE WACS_TBTT -#define WACS_T_LTEE WACS_TTTB -#define WACS_T_BTEE WACS_TTBT -#define WACS_T_TTEE WACS_BTTT -#define WACS_T_HLINE WACS_BTBT -#define WACS_T_VLINE WACS_TBTB -#define WACS_T_PLUS WACS_TTTT - -/* - * Function prototypes for wide-character operations. - * - * "generated" comments should include ":WIDEC" to make the corresponding - * functions ifdef'd in lib_gen.c - * - * "implemented" comments do not need this marker. - */ - -extern NCURSES_EXPORT(int) add_wch (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) add_wchnstr (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) add_wchstr (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) addnwstr (const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) addwstr (const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) bkgrnd (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented */ -extern NCURSES_EXPORT(int) get_wch (wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) get_wstr (wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, short*, void*); /* implemented */ -extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wch (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) in_wchstr (cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) innwstr (wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_wch (const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) inwstr (wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t); /* implemented */ -extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvaddnwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvaddwstr (int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvins_wstr (int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvinwstr (int, int, wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvvline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wchnstr (WINDOW *, int, int, const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwadd_wchstr (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwaddnwstr (WINDOW *, int, int, const wchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwaddwstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, short, const void *); /* implemented */ -extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented */ -extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented */ -extern NCURSES_EXPORT(int) vid_attr (attr_t, short, void *); /* implemented */ -extern NCURSES_EXPORT(int) vid_puts (attr_t, short, void *, NCURSES_OUTC); /* implemented */ -extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */ -extern NCURSES_EXPORT(int) wadd_wchstr (WINDOW *,const cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) waddnwstr (WINDOW *,const wchar_t *,int); /* implemented */ -extern NCURSES_EXPORT(int) waddwstr (WINDOW *,const wchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wbkgrnd (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(void) wbkgrndset (WINDOW *,const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* implemented */ -extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */ -extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */ -extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *,wint_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */ -extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *); /* generated:WIDEC */ -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(wchar_t*) wunctrl (cchar_t *); /* implemented */ -extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */ - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(term_attrs) (SCREEN*); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(unget_wch) (SCREEN*, const wchar_t); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_attr) (SCREEN*, attr_t, short, void *); /* implemented:SP_FUNC */ -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, short, void *, NCURSES_SP_OUTC); /* implemented:SP_FUNC */ -#endif - -#ifndef NCURSES_NOMACROS - -/* - * XSI curses macros for XPG4 conformance. - */ -#define add_wch(c) wadd_wch(stdscr,c) -#define add_wchnstr(str,n) wadd_wchnstr(stdscr,str,n) -#define add_wchstr(str) wadd_wchstr(stdscr,str) -#define addnwstr(wstr,n) waddnwstr(stdscr,wstr,n) -#define addwstr(wstr) waddwstr(stdscr,wstr) -#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 echo_wchar(c) wecho_wchar(stdscr,c) -#define get_wch(c) wget_wch(stdscr,c) -#define get_wstr(t) wget_wstr(stdscr,t) -#define getbkgrnd(wch) wgetbkgrnd(stdscr,wch) -#define getn_wstr(t,n) wgetn_wstr(stdscr,t,n) -#define hline_set(c,n) whline_set(stdscr,c,n) -#define in_wch(c) win_wch(stdscr,c) -#define in_wchnstr(c,n) win_wchnstr(stdscr,c,n) -#define in_wchstr(c) win_wchstr(stdscr,c) -#define innwstr(c,n) winnwstr(stdscr,c,n) -#define ins_nwstr(t,n) wins_nwstr(stdscr,t,n) -#define ins_wch(c) wins_wch(stdscr,c) -#define ins_wstr(t) wins_wstr(stdscr,t) -#define inwstr(c) winwstr(stdscr,c) -#define vline_set(c,n) wvline_set(stdscr,c,n) -#define wadd_wchstr(win,str) wadd_wchnstr(win,str,-1) -#define waddwstr(win,wstr) waddnwstr(win,wstr,-1) -#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) - -#if !NCURSES_OPAQUE -#define wgetbkgrnd(win,wch) (*wch = win->_bkgrnd, OK) -#endif - -#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,y,x,c) -#define mvadd_wchnstr(y,x,s,n) mvwadd_wchnstr(stdscr,y,x,s,n) -#define mvadd_wchstr(y,x,s) mvwadd_wchstr(stdscr,y,x,s) -#define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,y,x,wstr,n) -#define mvaddwstr(y,x,wstr) mvwaddwstr(stdscr,y,x,wstr) -#define mvget_wch(y,x,c) mvwget_wch(stdscr,y,x,c) -#define mvget_wstr(y,x,t) mvwget_wstr(stdscr,y,x,t) -#define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,y,x,t,n) -#define mvhline_set(y,x,c,n) mvwhline_set(stdscr,y,x,c,n) -#define mvin_wch(y,x,c) mvwin_wch(stdscr,y,x,c) -#define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,y,x,c,n) -#define mvin_wchstr(y,x,c) mvwin_wchstr(stdscr,y,x,c) -#define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,y,x,c,n) -#define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,y,x,t,n) -#define mvins_wch(y,x,c) mvwins_wch(stdscr,y,x,c) -#define mvins_wstr(y,x,t) mvwins_wstr(stdscr,y,x,t) -#define mvinwstr(y,x,c) mvwinwstr(stdscr,y,x,c) -#define mvvline_set(y,x,c,n) mvwvline_set(stdscr,y,x,c,n) - -#define mvwadd_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wadd_wch(win,c)) -#define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,y,x) == ERR ? ERR : wadd_wchnstr(win,s,n)) -#define mvwadd_wchstr(win,y,x,s) (wmove(win,y,x) == ERR ? ERR : wadd_wchstr(win,s)) -#define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,y,x) == ERR ? ERR : waddnwstr(win,wstr,n)) -#define mvwaddwstr(win,y,x,wstr) (wmove(win,y,x) == ERR ? ERR : waddwstr(win,wstr)) -#define mvwget_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wget_wch(win,c)) -#define mvwget_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wget_wstr(win,t)) -#define mvwgetn_wstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wgetn_wstr(win,t,n)) -#define mvwhline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : whline_set(win,c,n)) -#define mvwin_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wch(win,c)) -#define mvwin_wchnstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : win_wchnstr(win,c,n)) -#define mvwin_wchstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : win_wchstr(win,c)) -#define mvwinnwstr(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : winnwstr(win,c,n)) -#define mvwins_nwstr(win,y,x,t,n) (wmove(win,y,x) == ERR ? ERR : wins_nwstr(win,t,n)) -#define mvwins_wch(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : wins_wch(win,c)) -#define mvwins_wstr(win,y,x,t) (wmove(win,y,x) == ERR ? ERR : wins_wstr(win,t)) -#define mvwinwstr(win,y,x,c) (wmove(win,y,x) == ERR ? ERR : winwstr(win,c)) -#define mvwvline_set(win,y,x,c,n) (wmove(win,y,x) == ERR ? ERR : wvline_set(win,c,n)) - -#endif /* NCURSES_NOMACROS */ - -#if defined(TRACE) || defined(NCURSES_TEST) -extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *); -extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *); -#endif - -#endif /* NCURSES_WIDECHAR */ diff --git a/deps/ncurses-5.9/include/edit_cfg.sh b/deps/ncurses-5.9/include/edit_cfg.sh deleted file mode 100755 index 8d64fee..0000000 --- a/deps/ncurses-5.9/include/edit_cfg.sh +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/sh -# $Id: edit_cfg.sh,v 1.12 2001/12/23 00:52:40 tom Exp $ -############################################################################## -# Copyright (c) 1998,2000,2001 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: Thomas E. Dickey 1996,1997,2000 -# -# Edit the default value of the term.h file based on the autoconf-generated -# values: -# -# $1 = ncurses_cfg.h -# $2 = term.h -# -BAK=save$$ -TMP=edit$$ -trap "rm -f $BAK $TMP" 0 1 2 5 15 -for name in \ - HAVE_TCGETATTR \ - HAVE_TERMIOS_H \ - HAVE_TERMIO_H \ - BROKEN_LINKER -do - mv $2 $BAK - if ( grep "[ ]$name[ ]" $1 2>&1 >$TMP ) - then - value=1 - else - value=0 - fi - echo '** edit: '$name $value - sed \ - -e "s@#define ${name}.*\$@#define $name $value@" \ - -e "s@#if $name\$@#if $value /* $name */@" \ - -e "s@#if !$name\$@#if $value /* !$name */@" \ - $BAK >$2 - if (cmp -s $2 $BAK) - then - mv $BAK $2 - else - rm -f $BAK - fi -done diff --git a/deps/ncurses-5.9/include/eti.h b/deps/ncurses-5.9/include/eti.h deleted file mode 100644 index baa6190..0000000 --- a/deps/ncurses-5.9/include/eti.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2002,2003 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: eti.h,v 1.8 2003/10/25 15:24:29 tom Exp $ */ - -#ifndef NCURSES_ETI_H_incl -#define NCURSES_ETI_H_incl 1 - -#define E_OK (0) -#define E_SYSTEM_ERROR (-1) -#define E_BAD_ARGUMENT (-2) -#define E_POSTED (-3) -#define E_CONNECTED (-4) -#define E_BAD_STATE (-5) -#define E_NO_ROOM (-6) -#define E_NOT_POSTED (-7) -#define E_UNKNOWN_COMMAND (-8) -#define E_NO_MATCH (-9) -#define E_NOT_SELECTABLE (-10) -#define E_NOT_CONNECTED (-11) -#define E_REQUEST_DENIED (-12) -#define E_INVALID_FIELD (-13) -#define E_CURRENT (-14) - -#endif diff --git a/deps/ncurses-5.9/include/form.h b/deps/ncurses-5.9/include/form.h deleted file mode 100644 index f52893b..0000000 --- a/deps/ncurses-5.9/include/form.h +++ /dev/null @@ -1,422 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2009 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: form.h,v 0.21 2009/11/07 19:31:11 tom Exp $ */ - -#ifndef FORM_H -#define FORM_H - -#include -#include - -#ifdef __cplusplus - extern "C" { -#endif - -#ifndef FORM_PRIV_H -typedef void *FIELD_CELL; -#endif - -#ifndef NCURSES_FIELD_INTERNALS -#define NCURSES_FIELD_INTERNALS /* nothing */ -#endif - -typedef int Form_Options; -typedef int Field_Options; - - /********** - * _PAGE * - **********/ - -typedef struct { - short pmin; /* index of first field on page */ - short pmax; /* index of last field on page */ - short smin; /* index of top leftmost field on page */ - short smax; /* index of bottom rightmost field on page */ -} _PAGE; - - /********** - * FIELD * - **********/ - -typedef struct fieldnode { - unsigned short status; /* flags */ - short rows; /* size in rows */ - short cols; /* size in cols */ - short frow; /* first row */ - short fcol; /* first col */ - int drows; /* dynamic rows */ - int dcols; /* dynamic cols */ - int maxgrow; /* maximum field growth */ - int nrow; /* off-screen rows */ - short nbuf; /* additional buffers */ - short just; /* justification */ - short page; /* page on form */ - short index; /* into form -> field */ - int pad; /* pad character */ - chtype fore; /* foreground attribute */ - chtype back; /* background attribute */ - Field_Options opts; /* options */ - struct fieldnode * snext; /* sorted order pointer */ - struct fieldnode * sprev; /* sorted order pointer */ - struct fieldnode * link; /* linked field chain */ - struct formnode * form; /* containing form */ - struct typenode * type; /* field type */ - void * arg; /* argument for type */ - FIELD_CELL * buf; /* field buffers */ - void * usrptr; /* user pointer */ - /* - * The wide-character configuration requires extra information. Because - * there are existing applications that manipulate the members of FIELD - * directly, we cannot make the struct opaque. Offsets of members up to - * this point are the same in the narrow- and wide-character configuration. - * But note that the type of buf depends on the configuration, and is made - * opaque for that reason. - */ - NCURSES_FIELD_INTERNALS -} FIELD; - - - /********* - * FORM * - *********/ - -typedef struct formnode { - unsigned short status; /* flags */ - short rows; /* size in rows */ - short cols; /* size in cols */ - int currow; /* current row in field window */ - int curcol; /* current col in field window */ - int toprow; /* in scrollable field window */ - int begincol; /* in horiz. scrollable field */ - short maxfield; /* number of fields */ - short maxpage; /* number of pages */ - short curpage; /* index into page */ - Form_Options opts; /* options */ - WINDOW * win; /* window */ - WINDOW * sub; /* subwindow */ - WINDOW * w; /* window for current field */ - FIELD ** field; /* field [maxfield] */ - FIELD * current; /* current field */ - _PAGE * page; /* page [maxpage] */ - void * usrptr; /* user pointer */ - - void (*forminit)(struct formnode *); - void (*formterm)(struct formnode *); - void (*fieldinit)(struct formnode *); - void (*fieldterm)(struct formnode *); - -} FORM; - - - /************** - * FIELDTYPE * - **************/ - -typedef struct typenode { - unsigned short status; /* flags */ - long ref; /* reference count */ - struct typenode * left; /* ptr to operand for | */ - struct typenode * right; /* ptr to operand for | */ - - void* (*makearg)(va_list *); /* make fieldtype arg */ - void* (*copyarg)(const void *); /* copy fieldtype arg */ - void (*freearg)(void *); /* free fieldtype arg */ - -#if NCURSES_INTEROP_FUNCS - union { - bool (*ofcheck)(FIELD *,const void *); /* field validation */ - bool (*gfcheck)(FORM*,FIELD *,const void*); /* generic field validation */ - } fieldcheck; - union { - bool (*occheck)(int,const void *); /* character validation */ - bool (*gccheck)(int,FORM*, - FIELD*,const void*); /* generic char validation */ - } charcheck; - union { - bool (*onext)(FIELD *,const void *); /* enumerate next value */ - bool (*gnext)(FORM*,FIELD*,const void*); /* generic enumerate next */ - } enum_next; - union { - bool (*oprev)(FIELD *,const void *); /* enumerate prev value */ - bool (*gprev)(FORM*,FIELD*,const void*); /* generic enumerate prev */ - } enum_prev; - void* (*genericarg)(void*); /* Alternate Arg method */ -#else - bool (*fcheck)(FIELD *,const void *); /* field validation */ - bool (*ccheck)(int,const void *); /* character validation */ - - bool (*next)(FIELD *,const void *); /* enumerate next value */ - bool (*prev)(FIELD *,const void *); /* enumerate prev value */ -#endif -} FIELDTYPE; - -typedef void (*Form_Hook)(FORM *); - - /*************************** - * miscellaneous #defines * - ***************************/ - -/* field justification */ -#define NO_JUSTIFICATION (0) -#define JUSTIFY_LEFT (1) -#define JUSTIFY_CENTER (2) -#define JUSTIFY_RIGHT (3) - -/* field options */ -#define O_VISIBLE (0x0001U) -#define O_ACTIVE (0x0002U) -#define O_PUBLIC (0x0004U) -#define O_EDIT (0x0008U) -#define O_WRAP (0x0010U) -#define O_BLANK (0x0020U) -#define O_AUTOSKIP (0x0040U) -#define O_NULLOK (0x0080U) -#define O_PASSOK (0x0100U) -#define O_STATIC (0x0200U) - -/* form options */ -#define O_NL_OVERLOAD (0x0001U) -#define O_BS_OVERLOAD (0x0002U) - -/* form driver commands */ -#define REQ_NEXT_PAGE (KEY_MAX + 1) /* move to next page */ -#define REQ_PREV_PAGE (KEY_MAX + 2) /* move to previous page */ -#define REQ_FIRST_PAGE (KEY_MAX + 3) /* move to first page */ -#define REQ_LAST_PAGE (KEY_MAX + 4) /* move to last page */ - -#define REQ_NEXT_FIELD (KEY_MAX + 5) /* move to next field */ -#define REQ_PREV_FIELD (KEY_MAX + 6) /* move to previous field */ -#define REQ_FIRST_FIELD (KEY_MAX + 7) /* move to first field */ -#define REQ_LAST_FIELD (KEY_MAX + 8) /* move to last field */ -#define REQ_SNEXT_FIELD (KEY_MAX + 9) /* move to sorted next field */ -#define REQ_SPREV_FIELD (KEY_MAX + 10) /* move to sorted prev field */ -#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field */ -#define REQ_SLAST_FIELD (KEY_MAX + 12) /* move to sorted last field */ -#define REQ_LEFT_FIELD (KEY_MAX + 13) /* move to left to field */ -#define REQ_RIGHT_FIELD (KEY_MAX + 14) /* move to right to field */ -#define REQ_UP_FIELD (KEY_MAX + 15) /* move to up to field */ -#define REQ_DOWN_FIELD (KEY_MAX + 16) /* move to down to field */ - -#define REQ_NEXT_CHAR (KEY_MAX + 17) /* move to next char in field */ -#define REQ_PREV_CHAR (KEY_MAX + 18) /* move to prev char in field */ -#define REQ_NEXT_LINE (KEY_MAX + 19) /* move to next line in field */ -#define REQ_PREV_LINE (KEY_MAX + 20) /* move to prev line in field */ -#define REQ_NEXT_WORD (KEY_MAX + 21) /* move to next word in field */ -#define REQ_PREV_WORD (KEY_MAX + 22) /* move to prev word in field */ -#define REQ_BEG_FIELD (KEY_MAX + 23) /* move to first char in field */ -#define REQ_END_FIELD (KEY_MAX + 24) /* move after last char in fld */ -#define REQ_BEG_LINE (KEY_MAX + 25) /* move to beginning of line */ -#define REQ_END_LINE (KEY_MAX + 26) /* move after last char in line */ -#define REQ_LEFT_CHAR (KEY_MAX + 27) /* move left in field */ -#define REQ_RIGHT_CHAR (KEY_MAX + 28) /* move right in field */ -#define REQ_UP_CHAR (KEY_MAX + 29) /* move up in field */ -#define REQ_DOWN_CHAR (KEY_MAX + 30) /* move down in field */ - -#define REQ_NEW_LINE (KEY_MAX + 31) /* insert/overlay new line */ -#define REQ_INS_CHAR (KEY_MAX + 32) /* insert blank char at cursor */ -#define REQ_INS_LINE (KEY_MAX + 33) /* insert blank line at cursor */ -#define REQ_DEL_CHAR (KEY_MAX + 34) /* delete char at cursor */ -#define REQ_DEL_PREV (KEY_MAX + 35) /* delete char before cursor */ -#define REQ_DEL_LINE (KEY_MAX + 36) /* delete line at cursor */ -#define REQ_DEL_WORD (KEY_MAX + 37) /* delete word at cursor */ -#define REQ_CLR_EOL (KEY_MAX + 38) /* clear to end of line */ -#define REQ_CLR_EOF (KEY_MAX + 39) /* clear to end of field */ -#define REQ_CLR_FIELD (KEY_MAX + 40) /* clear entire field */ -#define REQ_OVL_MODE (KEY_MAX + 41) /* begin overlay mode */ -#define REQ_INS_MODE (KEY_MAX + 42) /* begin insert mode */ -#define REQ_SCR_FLINE (KEY_MAX + 43) /* scroll field forward a line */ -#define REQ_SCR_BLINE (KEY_MAX + 44) /* scroll field backward a line */ -#define REQ_SCR_FPAGE (KEY_MAX + 45) /* scroll field forward a page */ -#define REQ_SCR_BPAGE (KEY_MAX + 46) /* scroll field backward a page */ -#define REQ_SCR_FHPAGE (KEY_MAX + 47) /* scroll field forward half page */ -#define REQ_SCR_BHPAGE (KEY_MAX + 48) /* scroll field backward half page */ -#define REQ_SCR_FCHAR (KEY_MAX + 49) /* horizontal scroll char */ -#define REQ_SCR_BCHAR (KEY_MAX + 50) /* horizontal scroll char */ -#define REQ_SCR_HFLINE (KEY_MAX + 51) /* horizontal scroll line */ -#define REQ_SCR_HBLINE (KEY_MAX + 52) /* horizontal scroll line */ -#define REQ_SCR_HFHALF (KEY_MAX + 53) /* horizontal scroll half line */ -#define REQ_SCR_HBHALF (KEY_MAX + 54) /* horizontal scroll half line */ - -#define REQ_VALIDATION (KEY_MAX + 55) /* validate field */ -#define REQ_NEXT_CHOICE (KEY_MAX + 56) /* display next field choice */ -#define REQ_PREV_CHOICE (KEY_MAX + 57) /* display prev field choice */ - -#define MIN_FORM_COMMAND (KEY_MAX + 1) /* used by form_driver */ -#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver */ - -#if defined(MAX_COMMAND) -# if (MAX_FORM_COMMAND > MAX_COMMAND) -# error Something is wrong -- MAX_FORM_COMMAND is greater than MAX_COMMAND -# elif (MAX_COMMAND != (KEY_MAX + 128)) -# error Something is wrong -- MAX_COMMAND is already inconsistently defined. -# endif -#else -# define MAX_COMMAND (KEY_MAX + 128) -#endif - - /************************* - * standard field types * - *************************/ -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC; -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP; - - /************************************ - * built-in additional field types * - * They are not defined in SVr4 * - ************************************/ -extern NCURSES_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4; /* Internet IP Version 4 address */ - - /*********************** - * FIELDTYPE routines * - ***********************/ -extern NCURSES_EXPORT(FIELDTYPE *) new_fieldtype ( - bool (* const field_check)(FIELD *,const void *), - bool (* const char_check)(int,const void *)); -extern NCURSES_EXPORT(FIELDTYPE *) link_fieldtype( - FIELDTYPE *, FIELDTYPE *); - -extern NCURSES_EXPORT(int) free_fieldtype (FIELDTYPE *); -extern NCURSES_EXPORT(int) set_fieldtype_arg (FIELDTYPE *, - void * (* const make_arg)(va_list *), - void * (* const copy_arg)(const void *), - void (* const free_arg)(void *)); -extern NCURSES_EXPORT(int) set_fieldtype_choice (FIELDTYPE *, - bool (* const next_choice)(FIELD *,const void *), - bool (* const prev_choice)(FIELD *,const void *)); - - /******************* - * FIELD routines * - *******************/ -extern NCURSES_EXPORT(FIELD *) new_field (int,int,int,int,int,int); -extern NCURSES_EXPORT(FIELD *) dup_field (FIELD *,int,int); -extern NCURSES_EXPORT(FIELD *) link_field (FIELD *,int,int); - -extern NCURSES_EXPORT(int) free_field (FIELD *); -extern NCURSES_EXPORT(int) field_info (const FIELD *,int *,int *,int *,int *,int *,int *); -extern NCURSES_EXPORT(int) dynamic_field_info (const FIELD *,int *,int *,int *); -extern NCURSES_EXPORT(int) set_max_field ( FIELD *,int); -extern NCURSES_EXPORT(int) move_field (FIELD *,int,int); -extern NCURSES_EXPORT(int) set_field_type (FIELD *,FIELDTYPE *,...); -extern NCURSES_EXPORT(int) set_new_page (FIELD *,bool); -extern NCURSES_EXPORT(int) set_field_just (FIELD *,int); -extern NCURSES_EXPORT(int) field_just (const FIELD *); -extern NCURSES_EXPORT(int) set_field_fore (FIELD *,chtype); -extern NCURSES_EXPORT(int) set_field_back (FIELD *,chtype); -extern NCURSES_EXPORT(int) set_field_pad (FIELD *,int); -extern NCURSES_EXPORT(int) field_pad (const FIELD *); -extern NCURSES_EXPORT(int) set_field_buffer (FIELD *,int,const char *); -extern NCURSES_EXPORT(int) set_field_status (FIELD *,bool); -extern NCURSES_EXPORT(int) set_field_userptr (FIELD *, void *); -extern NCURSES_EXPORT(int) set_field_opts (FIELD *,Field_Options); -extern NCURSES_EXPORT(int) field_opts_on (FIELD *,Field_Options); -extern NCURSES_EXPORT(int) field_opts_off (FIELD *,Field_Options); - -extern NCURSES_EXPORT(chtype) field_fore (const FIELD *); -extern NCURSES_EXPORT(chtype) field_back (const FIELD *); - -extern NCURSES_EXPORT(bool) new_page (const FIELD *); -extern NCURSES_EXPORT(bool) field_status (const FIELD *); - -extern NCURSES_EXPORT(void *) field_arg (const FIELD *); - -extern NCURSES_EXPORT(void *) field_userptr (const FIELD *); - -extern NCURSES_EXPORT(FIELDTYPE *) field_type (const FIELD *); - -extern NCURSES_EXPORT(char *) field_buffer (const FIELD *,int); - -extern NCURSES_EXPORT(Field_Options) field_opts (const FIELD *); - - /****************** - * FORM routines * - ******************/ - -extern NCURSES_EXPORT(FORM *) new_form (FIELD **); - -extern NCURSES_EXPORT(FIELD **) form_fields (const FORM *); -extern NCURSES_EXPORT(FIELD *) current_field (const FORM *); - -extern NCURSES_EXPORT(WINDOW *) form_win (const FORM *); -extern NCURSES_EXPORT(WINDOW *) form_sub (const FORM *); - -extern NCURSES_EXPORT(Form_Hook) form_init (const FORM *); -extern NCURSES_EXPORT(Form_Hook) form_term (const FORM *); -extern NCURSES_EXPORT(Form_Hook) field_init (const FORM *); -extern NCURSES_EXPORT(Form_Hook) field_term (const FORM *); - -extern NCURSES_EXPORT(int) free_form (FORM *); -extern NCURSES_EXPORT(int) set_form_fields (FORM *,FIELD **); -extern NCURSES_EXPORT(int) field_count (const FORM *); -extern NCURSES_EXPORT(int) set_form_win (FORM *,WINDOW *); -extern NCURSES_EXPORT(int) set_form_sub (FORM *,WINDOW *); -extern NCURSES_EXPORT(int) set_current_field (FORM *,FIELD *); -extern NCURSES_EXPORT(int) field_index (const FIELD *); -extern NCURSES_EXPORT(int) set_form_page (FORM *,int); -extern NCURSES_EXPORT(int) form_page (const FORM *); -extern NCURSES_EXPORT(int) scale_form (const FORM *,int *,int *); -extern NCURSES_EXPORT(int) set_form_init (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_form_term (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_field_init (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) set_field_term (FORM *,Form_Hook); -extern NCURSES_EXPORT(int) post_form (FORM *); -extern NCURSES_EXPORT(int) unpost_form (FORM *); -extern NCURSES_EXPORT(int) pos_form_cursor (FORM *); -extern NCURSES_EXPORT(int) form_driver (FORM *,int); -extern NCURSES_EXPORT(int) set_form_userptr (FORM *,void *); -extern NCURSES_EXPORT(int) set_form_opts (FORM *,Form_Options); -extern NCURSES_EXPORT(int) form_opts_on (FORM *,Form_Options); -extern NCURSES_EXPORT(int) form_opts_off (FORM *,Form_Options); -extern NCURSES_EXPORT(int) form_request_by_name (const char *); - -extern NCURSES_EXPORT(const char *) form_request_name (int); - -extern NCURSES_EXPORT(void *) form_userptr (const FORM *); - -extern NCURSES_EXPORT(Form_Options) form_opts (const FORM *); - -extern NCURSES_EXPORT(bool) data_ahead (const FORM *); -extern NCURSES_EXPORT(bool) data_behind (const FORM *); - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(FORM *) NCURSES_SP_NAME(new_form) (SCREEN*, FIELD **); -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* FORM_H */ diff --git a/deps/ncurses-5.9/include/hashsize.h b/deps/ncurses-5.9/include/hashsize.h deleted file mode 100644 index 478fd59..0000000 --- a/deps/ncurses-5.9/include/hashsize.h +++ /dev/null @@ -1,6 +0,0 @@ -/* - * hashsize.h -- hash and token table constants - */ - -#define CAPTABSIZE 497 -#define HASHTABSIZE (497 * 2) diff --git a/deps/ncurses-5.9/include/headers b/deps/ncurses-5.9/include/headers deleted file mode 100644 index 6c36795..0000000 --- a/deps/ncurses-5.9/include/headers +++ /dev/null @@ -1,42 +0,0 @@ -# $Id: headers,v 1.10 2009/09/05 17:46:30 tom Exp $ -############################################################################## -# Copyright (c) 1998-2007,2009 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: Thomas E. Dickey 1996-on -# -term.h -curses.h -unctrl.h -termcap.h -ncurses_dll.h -@ ticlib -$(srcdir)/tic.h -$(srcdir)/term_entry.h -$(srcdir)/nc_tparm.h - -# vile:makemode diff --git a/deps/ncurses-5.9/include/menu.h b/deps/ncurses-5.9/include/menu.h deleted file mode 100644 index 4eeac01..0000000 --- a/deps/ncurses-5.9/include/menu.h +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2009 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: menu.h,v 1.20 2009/04/05 00:28:07 tom Exp $ */ - -#ifndef ETI_MENU -#define ETI_MENU - -#ifdef AMIGA -#define TEXT TEXT_ncurses -#endif - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef int Menu_Options; -typedef int Item_Options; - -/* Menu options: */ -#define O_ONEVALUE (0x01) -#define O_SHOWDESC (0x02) -#define O_ROWMAJOR (0x04) -#define O_IGNORECASE (0x08) -#define O_SHOWMATCH (0x10) -#define O_NONCYCLIC (0x20) - -/* Item options: */ -#define O_SELECTABLE (0x01) - -typedef struct -{ - const char* str; - unsigned short length; -} TEXT; - -typedef struct tagITEM -{ - TEXT name; /* name of menu item */ - TEXT description; /* description of item, optional in display */ - struct tagMENU *imenu; /* Pointer to parent menu */ - void *userptr; /* Pointer to user defined per item data */ - Item_Options opt; /* Item options */ - short index; /* Item number if connected to a menu */ - short y; /* y and x location of item in menu */ - short x; - bool value; /* Selection value */ - - struct tagITEM *left; /* neighbor items */ - struct tagITEM *right; - struct tagITEM *up; - struct tagITEM *down; - -} ITEM; - -typedef void (*Menu_Hook)(struct tagMENU *); - -typedef struct tagMENU -{ - short height; /* Nr. of chars high */ - short width; /* Nr. of chars wide */ - short rows; /* Nr. of items high */ - short cols; /* Nr. of items wide */ - short frows; /* Nr. of formatted items high */ - short fcols; /* Nr. of formatted items wide */ - short arows; /* Nr. of items high (actual) */ - short namelen; /* Max. name length */ - short desclen; /* Max. description length */ - short marklen; /* Length of mark, if any */ - short itemlen; /* Length of one item */ - short spc_desc; /* Spacing for descriptor */ - short spc_cols; /* Spacing for columns */ - short spc_rows; /* Spacing for rows */ - char *pattern; /* Buffer to store match chars */ - short pindex; /* Index into pattern buffer */ - WINDOW *win; /* Window containing menu */ - WINDOW *sub; /* Subwindow for menu display */ - WINDOW *userwin; /* User's window */ - WINDOW *usersub; /* User's subwindow */ - ITEM **items; /* array of items */ - short nitems; /* Nr. of items in menu */ - ITEM *curitem; /* Current item */ - short toprow; /* Top row of menu */ - chtype fore; /* Selection attribute */ - chtype back; /* Nonselection attribute */ - chtype grey; /* Inactive attribute */ - unsigned char pad; /* Pad character */ - - Menu_Hook menuinit; /* User hooks */ - Menu_Hook menuterm; - Menu_Hook iteminit; - Menu_Hook itemterm; - - void *userptr; /* Pointer to menus user data */ - char *mark; /* Pointer to marker string */ - - Menu_Options opt; /* Menu options */ - unsigned short status; /* Internal state of menu */ - -} MENU; - - -/* Define keys */ - -#define REQ_LEFT_ITEM (KEY_MAX + 1) -#define REQ_RIGHT_ITEM (KEY_MAX + 2) -#define REQ_UP_ITEM (KEY_MAX + 3) -#define REQ_DOWN_ITEM (KEY_MAX + 4) -#define REQ_SCR_ULINE (KEY_MAX + 5) -#define REQ_SCR_DLINE (KEY_MAX + 6) -#define REQ_SCR_DPAGE (KEY_MAX + 7) -#define REQ_SCR_UPAGE (KEY_MAX + 8) -#define REQ_FIRST_ITEM (KEY_MAX + 9) -#define REQ_LAST_ITEM (KEY_MAX + 10) -#define REQ_NEXT_ITEM (KEY_MAX + 11) -#define REQ_PREV_ITEM (KEY_MAX + 12) -#define REQ_TOGGLE_ITEM (KEY_MAX + 13) -#define REQ_CLEAR_PATTERN (KEY_MAX + 14) -#define REQ_BACK_PATTERN (KEY_MAX + 15) -#define REQ_NEXT_MATCH (KEY_MAX + 16) -#define REQ_PREV_MATCH (KEY_MAX + 17) - -#define MIN_MENU_COMMAND (KEY_MAX + 1) -#define MAX_MENU_COMMAND (KEY_MAX + 17) - -/* - * Some AT&T code expects MAX_COMMAND to be out-of-band not - * just for menu commands but for forms ones as well. - */ -#if defined(MAX_COMMAND) -# if (MAX_MENU_COMMAND > MAX_COMMAND) -# error Something is wrong -- MAX_MENU_COMMAND is greater than MAX_COMMAND -# elif (MAX_COMMAND != (KEY_MAX + 128)) -# error Something is wrong -- MAX_COMMAND is already inconsistently defined. -# endif -#else -# define MAX_COMMAND (KEY_MAX + 128) -#endif - - -/* --------- prototypes for libmenu functions ----------------------------- */ - -extern NCURSES_EXPORT(ITEM **) menu_items (const MENU *); -extern NCURSES_EXPORT(ITEM *) current_item (const MENU *); -extern NCURSES_EXPORT(ITEM *) new_item (const char *,const char *); - -extern NCURSES_EXPORT(MENU *) new_menu (ITEM **); - -extern NCURSES_EXPORT(Item_Options) item_opts (const ITEM *); -extern NCURSES_EXPORT(Menu_Options) menu_opts (const MENU *); - -extern NCURSES_EXPORT(Menu_Hook) item_init (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) item_term (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) menu_init (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) menu_term (const MENU *); - -extern NCURSES_EXPORT(WINDOW *) menu_sub (const MENU *); -extern NCURSES_EXPORT(WINDOW *) menu_win (const MENU *); - -extern NCURSES_EXPORT(const char *) item_description (const ITEM *); -extern NCURSES_EXPORT(const char *) item_name (const ITEM *); -extern NCURSES_EXPORT(const char *) menu_mark (const MENU *); -extern NCURSES_EXPORT(const char *) menu_request_name (int); - -extern NCURSES_EXPORT(char *) menu_pattern (const MENU *); - -extern NCURSES_EXPORT(void *) menu_userptr (const MENU *); -extern NCURSES_EXPORT(void *) item_userptr (const ITEM *); - -extern NCURSES_EXPORT(chtype) menu_back (const MENU *); -extern NCURSES_EXPORT(chtype) menu_fore (const MENU *); -extern NCURSES_EXPORT(chtype) menu_grey (const MENU *); - -extern NCURSES_EXPORT(int) free_item (ITEM *); -extern NCURSES_EXPORT(int) free_menu (MENU *); -extern NCURSES_EXPORT(int) item_count (const MENU *); -extern NCURSES_EXPORT(int) item_index (const ITEM *); -extern NCURSES_EXPORT(int) item_opts_off (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) item_opts_on (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) menu_driver (MENU *,int); -extern NCURSES_EXPORT(int) menu_opts_off (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) menu_opts_on (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) menu_pad (const MENU *); -extern NCURSES_EXPORT(int) pos_menu_cursor (const MENU *); -extern NCURSES_EXPORT(int) post_menu (MENU *); -extern NCURSES_EXPORT(int) scale_menu (const MENU *,int *,int *); -extern NCURSES_EXPORT(int) set_current_item (MENU *menu,ITEM *item); -extern NCURSES_EXPORT(int) set_item_init (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_item_opts (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) set_item_term (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_item_userptr (ITEM *, void *); -extern NCURSES_EXPORT(int) set_item_value (ITEM *,bool); -extern NCURSES_EXPORT(int) set_menu_back (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_fore (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_format (MENU *,int,int); -extern NCURSES_EXPORT(int) set_menu_grey (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_init (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_menu_items (MENU *,ITEM **); -extern NCURSES_EXPORT(int) set_menu_mark (MENU *, const char *); -extern NCURSES_EXPORT(int) set_menu_opts (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) set_menu_pad (MENU *,int); -extern NCURSES_EXPORT(int) set_menu_pattern (MENU *,const char *); -extern NCURSES_EXPORT(int) set_menu_sub (MENU *,WINDOW *); -extern NCURSES_EXPORT(int) set_menu_term (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_menu_userptr (MENU *,void *); -extern NCURSES_EXPORT(int) set_menu_win (MENU *,WINDOW *); -extern NCURSES_EXPORT(int) set_top_row (MENU *,int); -extern NCURSES_EXPORT(int) top_row (const MENU *); -extern NCURSES_EXPORT(int) unpost_menu (MENU *); -extern NCURSES_EXPORT(int) menu_request_by_name (const char *); -extern NCURSES_EXPORT(int) set_menu_spacing (MENU *,int,int,int); -extern NCURSES_EXPORT(int) menu_spacing (const MENU *,int *,int *,int *); - - -extern NCURSES_EXPORT(bool) item_value (const ITEM *); -extern NCURSES_EXPORT(bool) item_visible (const ITEM *); - -extern NCURSES_EXPORT(void) menu_format (const MENU *,int *,int *); - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(MENU *) NCURSES_SP_NAME(new_menu) (SCREEN*, ITEM **); -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* ETI_MENU */ diff --git a/deps/ncurses-5.9/include/mf_common.h b/deps/ncurses-5.9/include/mf_common.h deleted file mode 100644 index 681672d..0000000 --- a/deps/ncurses-5.9/include/mf_common.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: mf_common.h,v 0.22 2005/11/26 15:26:52 tom Exp $ */ - -/* Common internal header for menu and form library */ - -#ifndef MF_COMMON_H_incl -#define MF_COMMON_H_incl 1 - -#include -#include - -#include -#include -#include -#include -#include -#include - -#if DECL_ERRNO -extern int errno; -#endif - -/* in case of debug version we ignore the suppression of assertions */ -#ifdef TRACE -# ifdef NDEBUG -# undef NDEBUG -# endif -#endif - -#include - -#if USE_RCS_IDS -#define MODULE_ID(id) static const char Ident[] = id; -#else -#define MODULE_ID(id) /*nothing*/ -#endif - - -/* Maximum regular 8-bit character code */ -#define MAX_REGULAR_CHARACTER (0xff) - -#define SET_ERROR(code) (errno=(code)) -#define GET_ERROR() (errno) - -#ifdef TRACE -#define RETURN(code) returnCode( SET_ERROR(code) ) -#else -#define RETURN(code) return( SET_ERROR(code) ) -#endif - -/* The few common values in the status fields for menus and forms */ -#define _POSTED (0x01U) /* menu or form is posted */ -#define _IN_DRIVER (0x02U) /* menu or form is processing hook routine */ - -/* Call object hook */ -#define Call_Hook( object, handler ) \ - if ( (object) != 0 && ((object)->handler) != (void *) 0 )\ - {\ - (object)->status |= _IN_DRIVER;\ - (object)->handler(object);\ - (object)->status &= ~_IN_DRIVER;\ - } - -#endif /* MF_COMMON_H_incl */ diff --git a/deps/ncurses-5.9/include/ncurses_cfg.h b/deps/ncurses-5.9/include/ncurses_cfg.h deleted file mode 100644 index a08a72b..0000000 --- a/deps/ncurses-5.9/include/ncurses_cfg.h +++ /dev/null @@ -1,204 +0,0 @@ -/* include/ncurses_cfg.h. Generated automatically by configure. */ -/**************************************************************************** - * Copyright (c) 1998-2004,2005 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: Thomas E. Dickey 1997 * - ****************************************************************************/ -/* - * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $ - * - * This is a template-file used to generate the "ncurses_cfg.h" file. - * - * Rather than list every definition, the configuration script substitutes the - * definitions that it finds using 'sed'. You need a patch (original date - * 971222) to autoconf 2.12 or 2.13 to do this. - * - * See: - * http://invisible-island.net/autoconf/ - * ftp://invisible-island.net/autoconf/ - */ -#ifndef NC_CONFIG_H -#define NC_CONFIG_H - -#define SYSTEM_NAME "linux-gnu" -#define CC_HAS_PROTOS 1 -#if 0 -#include -#endif -#define HAVE_LONG_FILE_NAMES 1 -#define MIXEDCASE_FILENAMES 1 -#define HAVE_GPM_H 1 -#define HAVE_LIBDL 1 -#define LIBGPM_SONAME "libgpm.so.2" -#define HAVE_LIBGPM 1 -#define USE_DATABASE 1 -#define TERMINFO_DIRS "/home/martino/avrdude-build-script/objdir/share/terminfo" -#define TERMINFO "/home/martino/avrdude-build-script/objdir/share/terminfo" -#define HAVE_BIG_CORE 1 -#define USE_TERMCAP 1 -#define TERMPATH "/etc/termcap:/usr/share/misc/termcap" -#define USE_HOME_TERMINFO 1 -#define USE_ROOT_ENVIRON 1 -#define HAVE_REMOVE 1 -#define HAVE_UNLINK 1 -#define HAVE_LINK 1 -#define HAVE_SYMLINK 1 -#define USE_LINKS 1 -#define HAVE_LANGINFO_CODESET 1 -#define HAVE_FSEEKO 1 -#define HAVE_CURSES_VERSION 1 -#define HAVE_HAS_KEY 1 -#define HAVE_RESIZETERM 1 -#define HAVE_RESIZE_TERM 1 -#define HAVE_TERM_ENTRY_H 1 -#define HAVE_USE_DEFAULT_COLORS 1 -#define HAVE_WRESIZE 1 -#define NCURSES_EXT_FUNCS 1 -#define NCURSES_NO_PADDING 1 -#define STDC_HEADERS 1 -#define HAVE_SYS_TYPES_H 1 -#define HAVE_SYS_STAT_H 1 -#define HAVE_STDLIB_H 1 -#define HAVE_STRING_H 1 -#define HAVE_MEMORY_H 1 -#define HAVE_STRINGS_H 1 -#define HAVE_INTTYPES_H 1 -#define HAVE_STDINT_H 1 -#define HAVE_UNISTD_H 1 -#define SIZEOF_SIGNED_CHAR 1 -#define USE_SIGWINCH 1 -#define USE_ASSUMED_COLOR 1 -#define USE_HASHMAP 1 -#define NCURSES_WRAP_PREFIX "_nc_" -#define GCC_SCANF 1 -#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) -#define GCC_PRINTF 1 -#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) -#define GCC_UNUSED __attribute__((unused)) -#define GCC_NORETURN __attribute__((noreturn)) -#define NDEBUG 1 -#define HAVE_NC_ALLOC_H 1 -#define HAVE_GETTIMEOFDAY 1 -#define STDC_HEADERS 1 -#define HAVE_DIRENT_H 1 -#define TIME_WITH_SYS_TIME 1 -#define HAVE_REGEX_H_FUNCS 1 -#define HAVE_FCNTL_H 1 -#define HAVE_GETOPT_H 1 -#define HAVE_LIMITS_H 1 -#define HAVE_LOCALE_H 1 -#define HAVE_MATH_H 1 -#define HAVE_POLL_H 1 -#define HAVE_SYS_IOCTL_H 1 -#define HAVE_SYS_PARAM_H 1 -#define HAVE_SYS_POLL_H 1 -#define HAVE_SYS_SELECT_H 1 -#define HAVE_SYS_TIME_H 1 -#define HAVE_SYS_TIMES_H 1 -#define HAVE_TTYENT_H 1 -#define HAVE_UNISTD_H 1 -#define HAVE_WCTYPE_H 1 -#define HAVE_SYS_TIME_SELECT 1 -#define SIG_ATOMIC_T volatile sig_atomic_t -#define TYPEOF_CHTYPE int -#define HAVE_GETCWD 1 -#define HAVE_GETEGID 1 -#define HAVE_GETEUID 1 -#define HAVE_GETTTYNAM 1 -#define HAVE_POLL 1 -#define HAVE_REMOVE 1 -#define HAVE_SELECT 1 -#define HAVE_SETBUF 1 -#define HAVE_SETBUFFER 1 -#define HAVE_SETVBUF 1 -#define HAVE_SIGACTION 1 -#define HAVE_STRDUP 1 -#define HAVE_STRSTR 1 -#define HAVE_TCGETPGRP 1 -#define HAVE_TIMES 1 -#define HAVE_VSNPRINTF 1 -#define HAVE_ISASCII 1 -#define HAVE_NANOSLEEP 1 -#define HAVE_TERMIO_H 1 -#define HAVE_TERMIOS_H 1 -#define HAVE_UNISTD_H 1 -#define HAVE_TCGETATTR 1 -#define HAVE_VSSCANF 1 -#define HAVE_MKSTEMP 1 -#define RETSIGTYPE void -#define HAVE_SIZECHANGE 1 -#define HAVE_WORKING_POLL 1 -#define HAVE_VA_COPY 1 -#define HAVE___VA_COPY 1 -#define HAVE_UNISTD_H 1 -#define HAVE_FORK 1 -#define HAVE_VFORK 1 -#define HAVE_WORKING_VFORK 1 -#define HAVE_WORKING_FORK 1 -#define USE_OPENPTY_HEADER -#define USE_XTERM_PTY 1 -#define HAVE_IOSTREAM 1 -#define HAVE_TYPEINFO 1 -#define IOSTREAM_NAMESPACE 1 -#define ETIP_NEEDS_MATH_H 1 -#define CPP_HAS_STATIC_CAST 1 -#define HAVE_SLK_COLOR 1 -#define HAVE_PANEL_H 1 -#define HAVE_LIBPANEL 1 -#define HAVE_MENU_H 1 -#define HAVE_LIBMENU 1 -#define HAVE_FORM_H 1 -#define HAVE_LIBFORM 1 -#define NCURSES_PATHSEP ':' -#define NCURSES_VERSION_STRING "5.9.20110404" - -#include - - /* The C compiler may not treat these properly but C++ has to */ -#ifdef __cplusplus -#undef const -#undef inline -#else -#if defined(lint) || defined(TRACE) -#undef inline -#define inline /* nothing */ -#endif -#endif - - /* On HP-UX, the C compiler doesn't grok mbstate_t without - -D_XOPEN_SOURCE=500. However, this causes problems on - IRIX. So, we #define mbstate_t to int in configure.in - only for the C compiler if needed. */ -#ifndef __cplusplus -#ifdef NEED_MBSTATE_T_DEF -#define mbstate_t int -#endif -#endif - -#endif /* NC_CONFIG_H */ diff --git a/deps/ncurses-5.9/include/ncurses_cfg.hin b/deps/ncurses-5.9/include/ncurses_cfg.hin deleted file mode 100644 index 3f8a482..0000000 --- a/deps/ncurses-5.9/include/ncurses_cfg.hin +++ /dev/null @@ -1,72 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2004,2005 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: Thomas E. Dickey 1997 * - ****************************************************************************/ -/* - * $Id: ncurses_cfg.hin,v 1.7 2005/01/02 01:26:58 tom Exp $ - * - * This is a template-file used to generate the "ncurses_cfg.h" file. - * - * Rather than list every definition, the configuration script substitutes the - * definitions that it finds using 'sed'. You need a patch (original date - * 971222) to autoconf 2.12 or 2.13 to do this. - * - * See: - * http://invisible-island.net/autoconf/ - * ftp://invisible-island.net/autoconf/ - */ -#ifndef NC_CONFIG_H -#define NC_CONFIG_H -@DEFS@ - -#include - - /* The C compiler may not treat these properly but C++ has to */ -#ifdef __cplusplus -#undef const -#undef inline -#else -#if defined(lint) || defined(TRACE) -#undef inline -#define inline /* nothing */ -#endif -#endif - - /* On HP-UX, the C compiler doesn't grok mbstate_t without - -D_XOPEN_SOURCE=500. However, this causes problems on - IRIX. So, we #define mbstate_t to int in configure.in - only for the C compiler if needed. */ -#ifndef __cplusplus -#ifdef NEED_MBSTATE_T_DEF -#define mbstate_t int -#endif -#endif - -#endif /* NC_CONFIG_H */ diff --git a/deps/ncurses-5.9/include/ncurses_def.h b/deps/ncurses-5.9/include/ncurses_def.h deleted file mode 100644 index 184b802..0000000 --- a/deps/ncurses-5.9/include/ncurses_def.h +++ /dev/null @@ -1,728 +0,0 @@ -/* - * This file is generated by ./MKncurses_def.sh - */ - -#ifndef NC_DEFINE_H -#define NC_DEFINE_H 1 - -#ifndef BROKEN_LINKER -#define BROKEN_LINKER 0 -#endif - -#ifndef BSD_TPUTS -#define BSD_TPUTS 0 -#endif - -#ifndef CC_HAS_PROTOS -#define CC_HAS_PROTOS 0 -#endif - -#ifndef CPP_HAS_PARAM_INIT -#define CPP_HAS_PARAM_INIT 0 -#endif - -#ifndef CURSES_ACS_ARRAY -#define CURSES_ACS_ARRAY acs_map -#endif - -#ifndef CURSES_WACS_ARRAY -#define CURSES_WACS_ARRAY _nc_wacs -#endif - -#ifndef DECL_ERRNO -#define DECL_ERRNO 0 -#endif - -#ifndef ETIP_NEEDS_MATH_H -#define ETIP_NEEDS_MATH_H 0 -#endif - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif - -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -#ifndef HAVE_BIG_CORE -#define HAVE_BIG_CORE 0 -#endif - -#ifndef HAVE_BSD_CGETENT -#define HAVE_BSD_CGETENT 0 -#endif - -#ifndef HAVE_BSD_SIGNAL_H -#define HAVE_BSD_SIGNAL_H 0 -#endif - -#ifndef HAVE_BTOWC -#define HAVE_BTOWC 0 -#endif - -#ifndef HAVE_BUILTIN_H -#define HAVE_BUILTIN_H 0 -#endif - -#ifndef HAVE_CHGAT -#define HAVE_CHGAT 1 -#endif - -#ifndef HAVE_COLOR_SET -#define HAVE_COLOR_SET 1 -#endif - -#ifndef HAVE_DIRENT_H -#define HAVE_DIRENT_H 0 -#endif - -#ifndef HAVE_ERRNO -#define HAVE_ERRNO 0 -#endif - -#ifndef HAVE_FCNTL_H -#define HAVE_FCNTL_H 0 -#endif - -#ifndef HAVE_FILTER -#define HAVE_FILTER 1 -#endif - -#ifndef HAVE_FORM_H -#define HAVE_FORM_H 0 -#endif - -#ifndef HAVE_GETBEGX -#define HAVE_GETBEGX 1 -#endif - -#ifndef HAVE_GETCURX -#define HAVE_GETCURX 1 -#endif - -#ifndef HAVE_GETCWD -#define HAVE_GETCWD 0 -#endif - -#ifndef HAVE_GETEGID -#define HAVE_GETEGID 0 -#endif - -#ifndef HAVE_GETEUID -#define HAVE_GETEUID 0 -#endif - -#ifndef HAVE_GETMAXX -#define HAVE_GETMAXX 1 -#endif - -#ifndef HAVE_GETNSTR -#define HAVE_GETNSTR 0 -#endif - -#ifndef HAVE_GETOPT_H -#define HAVE_GETOPT_H 0 -#endif - -#ifndef HAVE_GETPARX -#define HAVE_GETPARX 1 -#endif - -#ifndef HAVE_GETTIMEOFDAY -#define HAVE_GETTIMEOFDAY 0 -#endif - -#ifndef HAVE_GETTTYNAM -#define HAVE_GETTTYNAM 0 -#endif - -#ifndef HAVE_GETWIN -#define HAVE_GETWIN 1 -#endif - -#ifndef HAVE_GPM_H -#define HAVE_GPM_H 0 -#endif - -#ifndef HAVE_GPP_BUILTIN_H -#define HAVE_GPP_BUILTIN_H 0 -#endif - -#ifndef HAVE_GXX_BUILTIN_H -#define HAVE_GXX_BUILTIN_H 0 -#endif - -#ifndef HAVE_HAS_KEY -#define HAVE_HAS_KEY 0 -#endif - -#ifndef HAVE_IOSTREAM -#define HAVE_IOSTREAM 0 -#endif - -#ifndef HAVE_ISASCII -#define HAVE_ISASCII 0 -#endif - -#ifndef HAVE_ISSETUGID -#define HAVE_ISSETUGID 0 -#endif - -#ifndef HAVE_LANGINFO_CODESET -#define HAVE_LANGINFO_CODESET 0 -#endif - -#ifndef HAVE_LIBC_H -#define HAVE_LIBC_H 0 -#endif - -#ifndef HAVE_LIBDBMALLOC -#define HAVE_LIBDBMALLOC 0 -#endif - -#ifndef HAVE_LIBDMALLOC -#define HAVE_LIBDMALLOC 0 -#endif - -#ifndef HAVE_LIBFORM -#define HAVE_LIBFORM 0 -#endif - -#ifndef HAVE_LIBGPM -#define HAVE_LIBGPM 0 -#endif - -#ifndef HAVE_LIBMENU -#define HAVE_LIBMENU 0 -#endif - -#ifndef HAVE_LIBMPATROL -#define HAVE_LIBMPATROL 0 -#endif - -#ifndef HAVE_LIBPANEL -#define HAVE_LIBPANEL 0 -#endif - -#ifndef HAVE_LIMITS_H -#define HAVE_LIMITS_H 0 -#endif - -#ifndef HAVE_LINK -#define HAVE_LINK 0 -#endif - -#ifndef HAVE_LOCALE_H -#define HAVE_LOCALE_H 0 -#endif - -#ifndef HAVE_LONG_FILE_NAMES -#define HAVE_LONG_FILE_NAMES 0 -#endif - -#ifndef HAVE_MATH_H -#define HAVE_MATH_H 0 -#endif - -#ifndef HAVE_MBLEN -#define HAVE_MBLEN 0 -#endif - -#ifndef HAVE_MBRLEN -#define HAVE_MBRLEN 0 -#endif - -#ifndef HAVE_MBRTOWC -#define HAVE_MBRTOWC 0 -#endif - -#ifndef HAVE_MBSRTOWCS -#define HAVE_MBSRTOWCS 0 -#endif - -#ifndef HAVE_MBSTOWCS -#define HAVE_MBSTOWCS 0 -#endif - -#ifndef HAVE_MBTOWC -#define HAVE_MBTOWC 0 -#endif - -#ifndef HAVE_MENU_H -#define HAVE_MENU_H 0 -#endif - -#ifndef HAVE_MKSTEMP -#define HAVE_MKSTEMP 0 -#endif - -#ifndef HAVE_MVVLINE -#define HAVE_MVVLINE 1 -#endif - -#ifndef HAVE_MVWVLINE -#define HAVE_MVWVLINE 1 -#endif - -#ifndef HAVE_NANOSLEEP -#define HAVE_NANOSLEEP 0 -#endif - -#ifndef HAVE_NC_ALLOC_H -#define HAVE_NC_ALLOC_H 0 -#endif - -#ifndef HAVE_PANEL_H -#define HAVE_PANEL_H 0 -#endif - -#ifndef HAVE_POLL -#define HAVE_POLL 0 -#endif - -#ifndef HAVE_POLL_H -#define HAVE_POLL_H 0 -#endif - -#ifndef HAVE_PURIFY -#define HAVE_PURIFY 0 -#endif - -#ifndef HAVE_PUTWC -#define HAVE_PUTWC 0 -#endif - -#ifndef HAVE_PUTWIN -#define HAVE_PUTWIN 1 -#endif - -#ifndef HAVE_REGEXPR_H_FUNCS -#define HAVE_REGEXPR_H_FUNCS 0 -#endif - -#ifndef HAVE_REGEXP_H_FUNCS -#define HAVE_REGEXP_H_FUNCS 0 -#endif - -#ifndef HAVE_REGEX_H_FUNCS -#define HAVE_REGEX_H_FUNCS 0 -#endif - -#ifndef HAVE_REMOVE -#define HAVE_REMOVE 0 -#endif - -#ifndef HAVE_RESIZETERM -#define HAVE_RESIZETERM 0 -#endif - -#ifndef HAVE_RESIZE_TERM -#define HAVE_RESIZE_TERM 0 -#endif - -#ifndef HAVE_RIPOFFLINE -#define HAVE_RIPOFFLINE 1 -#endif - -#ifndef HAVE_SCR_DUMP -#define HAVE_SCR_DUMP 1 -#endif - -#ifndef HAVE_SELECT -#define HAVE_SELECT 0 -#endif - -#ifndef HAVE_SETBUF -#define HAVE_SETBUF 0 -#endif - -#ifndef HAVE_SETBUFFER -#define HAVE_SETBUFFER 0 -#endif - -#ifndef HAVE_SETUPTERM -#define HAVE_SETUPTERM 1 -#endif - -#ifndef HAVE_SETVBUF -#define HAVE_SETVBUF 0 -#endif - -#ifndef HAVE_SGTTY_H -#define HAVE_SGTTY_H 0 -#endif - -#ifndef HAVE_SIGACTION -#define HAVE_SIGACTION 0 -#endif - -#ifndef HAVE_SIGVEC -#define HAVE_SIGVEC 0 -#endif - -#ifndef HAVE_SIZECHANGE -#define HAVE_SIZECHANGE 0 -#endif - -#ifndef HAVE_SLK_COLOR -#define HAVE_SLK_COLOR 0 -#endif - -#ifndef HAVE_SLK_INIT -#define HAVE_SLK_INIT 1 -#endif - -#ifndef HAVE_STRDUP -#define HAVE_STRDUP 0 -#endif - -#ifndef HAVE_STRSTR -#define HAVE_STRSTR 0 -#endif - -#ifndef HAVE_SYMLINK -#define HAVE_SYMLINK 0 -#endif - -#ifndef HAVE_SYS_BSDTYPES_H -#define HAVE_SYS_BSDTYPES_H 0 -#endif - -#ifndef HAVE_SYS_IOCTL_H -#define HAVE_SYS_IOCTL_H 0 -#endif - -#ifndef HAVE_SYS_PARAM_H -#define HAVE_SYS_PARAM_H 0 -#endif - -#ifndef HAVE_SYS_POLL_H -#define HAVE_SYS_POLL_H 0 -#endif - -#ifndef HAVE_SYS_SELECT_H -#define HAVE_SYS_SELECT_H 0 -#endif - -#ifndef HAVE_SYS_TERMIO_H -#define HAVE_SYS_TERMIO_H 0 -#endif - -#ifndef HAVE_SYS_TIMES_H -#define HAVE_SYS_TIMES_H 0 -#endif - -#ifndef HAVE_SYS_TIME_H -#define HAVE_SYS_TIME_H 0 -#endif - -#ifndef HAVE_SYS_TIME_SELECT -#define HAVE_SYS_TIME_SELECT 0 -#endif - -#ifndef HAVE_TCGETATTR -#define HAVE_TCGETATTR 0 -#endif - -#ifndef HAVE_TCGETPGRP -#define HAVE_TCGETPGRP 0 -#endif - -#ifndef HAVE_TELL -#define HAVE_TELL 0 -#endif - -#ifndef HAVE_TERMATTRS -#define HAVE_TERMATTRS 1 -#endif - -#ifndef HAVE_TERMIOS_H -#define HAVE_TERMIOS_H 0 -#endif - -#ifndef HAVE_TERMIO_H -#define HAVE_TERMIO_H 0 -#endif - -#ifndef HAVE_TERMNAME -#define HAVE_TERMNAME 1 -#endif - -#ifndef HAVE_TERM_ENTRY_H -#define HAVE_TERM_ENTRY_H 1 -#endif - -#ifndef HAVE_TERM_H -#define HAVE_TERM_H 1 -#endif - -#ifndef HAVE_TGETENT -#define HAVE_TGETENT 1 -#endif - -#ifndef HAVE_TIGETNUM -#define HAVE_TIGETNUM 1 -#endif - -#ifndef HAVE_TIGETSTR -#define HAVE_TIGETSTR 1 -#endif - -#ifndef HAVE_TIMES -#define HAVE_TIMES 0 -#endif - -#ifndef HAVE_TTYENT_H -#define HAVE_TTYENT_H 0 -#endif - -#ifndef HAVE_TYPEAHEAD -#define HAVE_TYPEAHEAD 1 -#endif - -#ifndef HAVE_TYPEINFO -#define HAVE_TYPEINFO 0 -#endif - -#ifndef HAVE_TYPE_ATTR_T -#define HAVE_TYPE_ATTR_T 0 -#endif - -#ifndef HAVE_TYPE_SIGACTION -#define HAVE_TYPE_SIGACTION 0 -#endif - -#ifndef HAVE_UNISTD_H -#define HAVE_UNISTD_H 0 -#endif - -#ifndef HAVE_UNLINK -#define HAVE_UNLINK 0 -#endif - -#ifndef HAVE_USE_DEFAULT_COLORS -#define HAVE_USE_DEFAULT_COLORS 0 -#endif - -#ifndef HAVE_VFSCANF -#define HAVE_VFSCANF 0 -#endif - -#ifndef HAVE_VSNPRINTF -#define HAVE_VSNPRINTF 0 -#endif - -#ifndef HAVE_VSSCANF -#define HAVE_VSSCANF 0 -#endif - -#ifndef HAVE_WCSRTOMBS -#define HAVE_WCSRTOMBS 0 -#endif - -#ifndef HAVE_WCSTOMBS -#define HAVE_WCSTOMBS 0 -#endif - -#ifndef HAVE_WCTOB -#define HAVE_WCTOB 0 -#endif - -#ifndef HAVE_WCTOMB -#define HAVE_WCTOMB 0 -#endif - -#ifndef HAVE_WCTYPE_H -#define HAVE_WCTYPE_H 0 -#endif - -#ifndef HAVE_WINSSTR -#define HAVE_WINSSTR 1 -#endif - -#ifndef HAVE_WORKING_POLL -#define HAVE_WORKING_POLL 0 -#endif - -#ifndef HAVE_WRESIZE -#define HAVE_WRESIZE 0 -#endif - -#ifndef HAVE_WSYNCDOWN -#define HAVE_WSYNCDOWN 1 -#endif - -#ifndef HAVE__DOSCAN -#define HAVE__DOSCAN 0 -#endif - -#ifndef MIXEDCASE_FILENAMES -#define MIXEDCASE_FILENAMES 0 -#endif - -#ifndef NCURSES_CHAR_EQ -#define NCURSES_CHAR_EQ 0 -#endif - -#ifndef NCURSES_EXPANDED -#define NCURSES_EXPANDED 0 -#endif - -#ifndef NCURSES_EXT_COLORS -#define NCURSES_EXT_COLORS 0 -#endif - -#ifndef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS 0 -#endif - -#ifndef NCURSES_NO_PADDING -#define NCURSES_NO_PADDING 0 -#endif - -#ifndef NCURSES_PATHSEP -#define NCURSES_PATHSEP ':' -#endif - -#ifndef NEED_PTEM_H -#define NEED_PTEM_H 0 -#endif - -#ifndef NO_LEAKS -#define NO_LEAKS 0 -#endif - -#ifndef PURE_TERMINFO -#define PURE_TERMINFO 0 -#endif - -#ifndef RETSIGTYPE -#define RETSIGTYPE 0 -#endif - -#ifndef STDC_HEADERS -#define STDC_HEADERS 0 -#endif - -#ifndef SVR4_ACTION -#define SVR4_ACTION 0 -#endif - -#ifndef SVR4_TERMIO -#define SVR4_TERMIO 0 -#endif - -#ifndef SYSTEM_NAME -#define SYSTEM_NAME "unknown" -#endif - -#ifndef TERMINFO -#define TERMINFO "none" -#endif - -#ifndef TERMPATH -#define TERMPATH "none" -#endif - -#ifndef TIME_WITH_SYS_TIME -#define TIME_WITH_SYS_TIME 0 -#endif - -#ifndef TYPEOF_CHTYPE -#define TYPEOF_CHTYPE 0 -#endif - -#ifndef USE_COLORFGBG -#define USE_COLORFGBG 0 -#endif - -#ifndef USE_DATABASE -#define USE_DATABASE 0 -#endif - -#ifndef USE_GETCAP -#define USE_GETCAP 0 -#endif - -#ifndef USE_GETCAP_CACHE -#define USE_GETCAP_CACHE 0 -#endif - -#ifndef USE_HARD_TABS -#define USE_HARD_TABS 0 -#endif - -#ifndef USE_HASHED_DB -#define USE_HASHED_DB 0 -#endif - -#ifndef USE_HASHMAP -#define USE_HASHMAP 0 -#endif - -#ifndef USE_HOME_TERMINFO -#define USE_HOME_TERMINFO 0 -#endif - -#ifndef USE_LINKS -#define USE_LINKS 0 -#endif - -#ifndef USE_MY_MEMMOVE -#define USE_MY_MEMMOVE 0 -#endif - -#ifndef USE_OK_BCOPY -#define USE_OK_BCOPY 0 -#endif - -#ifndef USE_PTHREADS_EINTR -#define USE_PTHREADS_EINTR 0 -#endif - -#ifndef USE_RCS_IDS -#define USE_RCS_IDS 0 -#endif - -#ifndef USE_REENTRANT -#define USE_REENTRANT 0 -#endif - -#ifndef USE_SAFE_SPRINTF -#define USE_SAFE_SPRINTF 0 -#endif - -#ifndef USE_SCROLL_HINTS -#define USE_SCROLL_HINTS 0 -#endif - -#ifndef USE_SIGWINCH -#define USE_SIGWINCH 0 -#endif - -#ifndef USE_SYMLINKS -#define USE_SYMLINKS 0 -#endif - -#ifndef USE_SYSMOUSE -#define USE_SYSMOUSE 0 -#endif - -#ifndef USE_TERMCAP -#define USE_TERMCAP 0 -#endif - -#ifndef USE_WEAK_SYMBOLS -#define USE_WEAK_SYMBOLS 0 -#endif - -#ifndef USE_WIDEC_SUPPORT -#define USE_WIDEC_SUPPORT 0 -#endif - -#ifndef USE_XMC_SUPPORT -#define USE_XMC_SUPPORT 0 -#endif - -#endif /* NC_DEFINE_H */ diff --git a/deps/ncurses-5.9/include/ncurses_defs b/deps/ncurses-5.9/include/ncurses_defs deleted file mode 100644 index 42d5908..0000000 --- a/deps/ncurses-5.9/include/ncurses_defs +++ /dev/null @@ -1,213 +0,0 @@ -# $Id: ncurses_defs,v 1.46 2011/03/22 09:17:59 tom Exp $ -############################################################################## -# Copyright (c) 2000-2010,2011 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. # -############################################################################## -# -# See "MKncurses_def.sh" for an explanation. -# -# (hint: don't try to define NDEBUG ;-) - -BROKEN_LINKER -BSD_TPUTS -CC_HAS_PROTOS -CPP_HAS_PARAM_INIT -CURSES_ACS_ARRAY acs_map -CURSES_WACS_ARRAY _nc_wacs -DECL_ERRNO -ETIP_NEEDS_MATH_H -GCC_NORETURN /* nothing */ -GCC_UNUSED /* nothing */ -HAVE_BIG_CORE -HAVE_BSD_CGETENT -HAVE_BSD_SIGNAL_H -HAVE_BTOWC -HAVE_BUILTIN_H -HAVE_CHGAT 1 -HAVE_COLOR_SET 1 -HAVE_DIRENT_H -HAVE_ERRNO -HAVE_FCNTL_H -HAVE_FILTER 1 -HAVE_FORM_H -HAVE_GETBEGX 1 -HAVE_GETCURX 1 -HAVE_GETCWD -HAVE_GETEGID -HAVE_GETEUID -HAVE_GETMAXX 1 -HAVE_GETNSTR -HAVE_GETOPT_H -HAVE_GETPARX 1 -HAVE_GETTIMEOFDAY -HAVE_GETTTYNAM -HAVE_GETWIN 1 -HAVE_GPM_H -HAVE_GPP_BUILTIN_H -HAVE_GXX_BUILTIN_H -HAVE_HAS_KEY -HAVE_IOSTREAM -HAVE_ISASCII -HAVE_ISSETUGID -HAVE_LANGINFO_CODESET -HAVE_LIBC_H -HAVE_LIBDBMALLOC -HAVE_LIBDMALLOC -HAVE_LIBFORM -HAVE_LIBGPM -HAVE_LIBMENU -HAVE_LIBMPATROL -HAVE_LIBPANEL -HAVE_LIMITS_H -HAVE_LINK -HAVE_LOCALE_H -HAVE_LONG_FILE_NAMES -HAVE_MATH_H -HAVE_MBLEN -HAVE_MBRLEN -HAVE_MBRTOWC -HAVE_MBSRTOWCS -HAVE_MBSTOWCS -HAVE_MBTOWC -HAVE_MENU_H -HAVE_MKSTEMP -HAVE_MVVLINE 1 -HAVE_MVWVLINE 1 -HAVE_NANOSLEEP -HAVE_NC_ALLOC_H -HAVE_PANEL_H -HAVE_POLL -HAVE_POLL_H -HAVE_PURIFY -HAVE_PUTWC -HAVE_PUTWIN 1 -HAVE_REGEXPR_H_FUNCS -HAVE_REGEXP_H_FUNCS -HAVE_REGEX_H_FUNCS -HAVE_REMOVE -HAVE_RESIZETERM -HAVE_RESIZE_TERM -HAVE_RIPOFFLINE 1 -HAVE_SCR_DUMP 1 -HAVE_SELECT -HAVE_SETBUF -HAVE_SETBUFFER -HAVE_SETUPTERM 1 -HAVE_SETVBUF -HAVE_SGTTY_H -HAVE_SIGACTION -HAVE_SIGVEC -HAVE_SIZECHANGE -HAVE_SLK_COLOR -HAVE_SLK_INIT 1 -HAVE_STRDUP -HAVE_STRSTR -HAVE_SYMLINK -HAVE_SYS_BSDTYPES_H -HAVE_SYS_IOCTL_H -HAVE_SYS_PARAM_H -HAVE_SYS_POLL_H -HAVE_SYS_SELECT_H -HAVE_SYS_TERMIO_H -HAVE_SYS_TIMES_H -HAVE_SYS_TIME_H -HAVE_SYS_TIME_SELECT -HAVE_TCGETATTR -HAVE_TCGETPGRP -HAVE_TELL -HAVE_TERMATTRS 1 -HAVE_TERMIOS_H -HAVE_TERMIO_H -HAVE_TERMNAME 1 -HAVE_TERM_ENTRY_H 1 -HAVE_TERM_H 1 -HAVE_TGETENT 1 -HAVE_TIGETNUM 1 -HAVE_TIGETSTR 1 -HAVE_TIMES -HAVE_TTYENT_H -HAVE_TYPEAHEAD 1 -HAVE_TYPEINFO -HAVE_TYPE_ATTR_T -HAVE_TYPE_SIGACTION -HAVE_UNISTD_H -HAVE_UNLINK -HAVE_USE_DEFAULT_COLORS -HAVE_VFSCANF -HAVE_VSNPRINTF -HAVE_VSSCANF -HAVE_WCSRTOMBS -HAVE_WCSTOMBS -HAVE_WCTOB -HAVE_WCTOMB -HAVE_WCTYPE_H -HAVE_WINSSTR 1 -HAVE_WORKING_POLL -HAVE_WRESIZE -HAVE_WSYNCDOWN 1 -HAVE__DOSCAN -MIXEDCASE_FILENAMES -NCURSES_CHAR_EQ -NCURSES_EXPANDED -NCURSES_EXT_COLORS -NCURSES_EXT_FUNCS -NCURSES_NO_PADDING -NCURSES_PATHSEP ':' -NEED_PTEM_H -NO_LEAKS -PURE_TERMINFO -RETSIGTYPE -STDC_HEADERS -SVR4_ACTION -SVR4_TERMIO -SYSTEM_NAME "unknown" -TERMINFO "none" -TERMPATH "none" -TIME_WITH_SYS_TIME -TYPEOF_CHTYPE -USE_COLORFGBG -USE_DATABASE -USE_GETCAP -USE_GETCAP_CACHE -USE_HARD_TABS -USE_HASHED_DB -USE_HASHMAP -USE_HOME_TERMINFO -USE_LINKS -USE_MY_MEMMOVE -USE_OK_BCOPY -USE_PTHREADS_EINTR -USE_RCS_IDS -USE_REENTRANT -USE_SAFE_SPRINTF -USE_SCROLL_HINTS -USE_SIGWINCH -USE_SYMLINKS -USE_SYSMOUSE -USE_TERMCAP -USE_WEAK_SYMBOLS -USE_WIDEC_SUPPORT -USE_XMC_SUPPORT diff --git a/deps/ncurses-5.9/include/ncurses_dll.h b/deps/ncurses-5.9/include/ncurses_dll.h deleted file mode 100644 index a385d2b..0000000 --- a/deps/ncurses-5.9/include/ncurses_dll.h +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2009 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. * - ****************************************************************************/ -/* $Id: ncurses_dll.h.in,v 1.8 2009/04/04 22:26:27 tom Exp $ */ - -#ifndef NCURSES_DLL_H_incl -#define NCURSES_DLL_H_incl 1 - -/* - * For reentrant code, we map the various global variables into SCREEN by - * using functions to access them. - */ -#define NCURSES_PUBLIC_VAR(name) _nc_##name -#define NCURSES_WRAPPED_VAR(type,name) extern type NCURSES_PUBLIC_VAR(name)(void) - -/* no longer needed on cygwin or mingw, thanks to auto-import */ -/* but this structure may be useful at some point for an MSVC build */ -/* so, for now unconditionally define the important flags */ -/* "the right way" for proper static and dll+auto-import behavior */ -#undef NCURSES_DLL -#define NCURSES_STATIC - -#if defined(__CYGWIN__) || defined(__MINGW32__) -# if defined(NCURSES_DLL) -# if defined(NCURSES_STATIC) -# undef NCURSES_STATIC -# endif -# endif -# undef NCURSES_IMPEXP -# undef NCURSES_API -# undef NCURSES_EXPORT -# undef NCURSES_EXPORT_VAR -# if defined(NCURSES_DLL) -/* building a DLL */ -# define NCURSES_IMPEXP __declspec(dllexport) -# elif defined(NCURSES_STATIC) -/* building or linking to a static library */ -# define NCURSES_IMPEXP /* nothing */ -# else -/* linking to the DLL */ -# define NCURSES_IMPEXP __declspec(dllimport) -# endif -# define NCURSES_API __cdecl -# define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API -# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type -#endif - -/* Take care of non-cygwin platforms */ -#if !defined(NCURSES_IMPEXP) -# define NCURSES_IMPEXP /* nothing */ -#endif -#if !defined(NCURSES_API) -# define NCURSES_API /* nothing */ -#endif -#if !defined(NCURSES_EXPORT) -# define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API -#endif -#if !defined(NCURSES_EXPORT_VAR) -# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type -#endif - -#endif /* NCURSES_DLL_H_incl */ diff --git a/deps/ncurses-5.9/include/ncurses_dll.h.in b/deps/ncurses-5.9/include/ncurses_dll.h.in deleted file mode 100644 index 82c9b85..0000000 --- a/deps/ncurses-5.9/include/ncurses_dll.h.in +++ /dev/null @@ -1,86 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2009 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. * - ****************************************************************************/ -/* $Id: ncurses_dll.h.in,v 1.8 2009/04/04 22:26:27 tom Exp $ */ - -#ifndef NCURSES_DLL_H_incl -#define NCURSES_DLL_H_incl 1 - -/* - * For reentrant code, we map the various global variables into SCREEN by - * using functions to access them. - */ -#define NCURSES_PUBLIC_VAR(name) @NCURSES_WRAP_PREFIX@##name -#define NCURSES_WRAPPED_VAR(type,name) extern type NCURSES_PUBLIC_VAR(name)(void) - -/* no longer needed on cygwin or mingw, thanks to auto-import */ -/* but this structure may be useful at some point for an MSVC build */ -/* so, for now unconditionally define the important flags */ -/* "the right way" for proper static and dll+auto-import behavior */ -#undef NCURSES_DLL -#define NCURSES_STATIC - -#if defined(__CYGWIN__) || defined(__MINGW32__) -# if defined(NCURSES_DLL) -# if defined(NCURSES_STATIC) -# undef NCURSES_STATIC -# endif -# endif -# undef NCURSES_IMPEXP -# undef NCURSES_API -# undef NCURSES_EXPORT -# undef NCURSES_EXPORT_VAR -# if defined(NCURSES_DLL) -/* building a DLL */ -# define NCURSES_IMPEXP __declspec(dllexport) -# elif defined(NCURSES_STATIC) -/* building or linking to a static library */ -# define NCURSES_IMPEXP /* nothing */ -# else -/* linking to the DLL */ -# define NCURSES_IMPEXP __declspec(dllimport) -# endif -# define NCURSES_API __cdecl -# define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API -# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type -#endif - -/* Take care of non-cygwin platforms */ -#if !defined(NCURSES_IMPEXP) -# define NCURSES_IMPEXP /* nothing */ -#endif -#if !defined(NCURSES_API) -# define NCURSES_API /* nothing */ -#endif -#if !defined(NCURSES_EXPORT) -# define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API -#endif -#if !defined(NCURSES_EXPORT_VAR) -# define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type -#endif - -#endif /* NCURSES_DLL_H_incl */ diff --git a/deps/ncurses-5.9/include/ncurses_mingw.h b/deps/ncurses-5.9/include/ncurses_mingw.h deleted file mode 100644 index 4ea1dad..0000000 --- a/deps/ncurses-5.9/include/ncurses_mingw.h +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2008 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.1 2008/12/14 19:22:16 juergen Exp $ */ - -/* - * This is a placholder up to now and describes what needs to be implemented - * to support I/O to external terminals with ncurses on the Windows OS. - */ - -#if __MINGW32__ -#ifndef _NC_MINGWH -#define _NC_MINGWH - -#define USE_CONSOLE_DRIVER 1 - -#undef TERMIOS -#define TERMIOS 1 - -#define InvalidHandle ((TERM_HANDLE)-1) -#define InvalidConsoleHandle(s) ((s)==InvalidHandle) - -typedef unsigned char cc_t; -typedef unsigned int speed_t; -typedef unsigned int tcflag_t; - -#define NCCS 32 -struct termios -{ - tcflag_t c_iflag; /* input mode */ - tcflag_t c_oflag; /* output mode */ - tcflag_t c_cflag; /* control mode */ - tcflag_t c_lflag; /* local mode */ - cc_t c_line; /* line discipline */ - cc_t c_cc[NCCS]; /* control characters */ - speed_t c_ispeed; /* input speed */ - speed_t c_ospeed; /* c_ospeed */ -}; - -/* c_cc chars */ -#define VINTR 0 -#define VQUIT 1 -#define VERASE 2 -#define VKILL 3 -#define VEOF 4 -#define VTIME 5 -#define VMIN 6 - -/* c_iflag bits */ -#define ISTRIP 0000040 -#define INLCR 0000100 -#define IGNCR 0000200 -#define ICRNL 0000400 -#define BRKINT 0000002 -#define PARMRK 0000010 -#define IXON 0002000 -#define IGNBRK 0000001 -#define IGNPAR 0000004 -#define INPCK 0000020 -#define IXOFF 0010000 - -/* c_oflag bits */ -#define OPOST 0000001 - -/* c_cflag bit meaning */ -#define CBAUD 0010017 -#define CSIZE 0000060 -#define CS8 0000060 -#define B0 0000000 -#define B50 0000001 -#define B75 0000002 -#define B110 0000003 -#define B134 0000004 -#define B150 0000005 -#define B200 0000006 -#define B300 0000007 -#define B600 0000010 -#define B1200 0000011 -#define B1800 0000012 -#define B2400 0000013 -#define B4800 0000014 -#define B9600 0000015 -#define CLOCAL 0004000 -#define CREAD 0000200 -#define CSTOPB 0000100 -#define HUPCL 0002000 -#define PARENB 0000400 -#define PARODD 0001000 - -/* c_lflag bits */ -#define ECHO 0000010 -#define ECHONL 0000100 -#define ISIG 0000001 -#define IEXTEN 0100000 -#define ICANON 0000002 -#define NOFLSH 0000200 -#define ECHOE 0000020 -#define ECHOK 0000040 - -/* tcflush() */ -#define TCIFLUSH 0 - -/* tcsetattr uses these */ -#define TCSADRAIN 1 - -/* ioctls */ -#define TCGETA 0x5405 -#define TCFLSH 0x540B -#define TIOCGWINSZ 0x5413 - -extern int _nc_mingw_ioctl(int fd, long int request, struct termios* arg); -extern void _nc_set_term_driver(void* term); - -#ifndef cfgetospeed -#define cfgetospeed(t) ((t)->c_cflag & CBAUD) -#endif - -#ifndef tcsetattr -#define tcsetattr(fd, cmd, arg) _nc_mingw_ioctl(fd, cmd, arg) -#endif - -#ifndef tcgetattr -#define tcgetattr(fd, arg) _nc_mingw_ioctl(fd, TCGETA, arg) -#endif - -#ifndef tcflush -#define tcflush(fd, arg) _nc_mingw_ioctl(fd, TCFLSH, arg) -#endif - -#undef ttyname -#define ttyname(fd) NULL - -#endif -#endif diff --git a/deps/ncurses-5.9/include/panel.h b/deps/ncurses-5.9/include/panel.h deleted file mode 100644 index 6ed2061..0000000 --- a/deps/ncurses-5.9/include/panel.h +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2009 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: Zeyd M. Ben-Halim 1995 * - * and: Eric S. Raymond * - * and: Juergen Pfeifer 1996-1999,2008 * - ****************************************************************************/ - -/* $Id: panel.h,v 1.11 2009/04/11 19:50:40 tom Exp $ */ - -/* panel.h -- interface file for panels library */ - -#ifndef NCURSES_PANEL_H_incl -#define NCURSES_PANEL_H_incl 1 - -#include - -typedef struct panel -{ - WINDOW *win; - struct panel *below; - struct panel *above; - NCURSES_CONST void *user; -} PANEL; - -#if defined(__cplusplus) -extern "C" { -#endif - -extern NCURSES_EXPORT(WINDOW*) panel_window (const PANEL *); -extern NCURSES_EXPORT(void) update_panels (void); -extern NCURSES_EXPORT(int) hide_panel (PANEL *); -extern NCURSES_EXPORT(int) show_panel (PANEL *); -extern NCURSES_EXPORT(int) del_panel (PANEL *); -extern NCURSES_EXPORT(int) top_panel (PANEL *); -extern NCURSES_EXPORT(int) bottom_panel (PANEL *); -extern NCURSES_EXPORT(PANEL*) new_panel (WINDOW *); -extern NCURSES_EXPORT(PANEL*) panel_above (const PANEL *); -extern NCURSES_EXPORT(PANEL*) panel_below (const PANEL *); -extern NCURSES_EXPORT(int) set_panel_userptr (PANEL *, NCURSES_CONST void *); -extern NCURSES_EXPORT(NCURSES_CONST void*) panel_userptr (const PANEL *); -extern NCURSES_EXPORT(int) move_panel (PANEL *, int, int); -extern NCURSES_EXPORT(int) replace_panel (PANEL *,WINDOW *); -extern NCURSES_EXPORT(int) panel_hidden (const PANEL *); - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(PANEL *) ground_panel(SCREEN *); -extern NCURSES_EXPORT(PANEL *) ceiling_panel(SCREEN *); - -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(update_panels) (SCREEN*); -#endif - -#if defined(__cplusplus) -} -#endif - -#endif /* NCURSES_PANEL_H_incl */ - -/* end of panel.h */ diff --git a/deps/ncurses-5.9/include/parametrized.h b/deps/ncurses-5.9/include/parametrized.h deleted file mode 100644 index 950a947..0000000 --- a/deps/ncurses-5.9/include/parametrized.h +++ /dev/null @@ -1,560 +0,0 @@ -/* - * parametrized.h --- is a termcap capability parametrized? - * - * Note: this file is generated using MKparametrized.sh, do not edit by hand. - * A value of -1 in the table means suppress both pad and % translations. - * A value of 0 in the table means do pad but not % translations. - * A value of 1 in the table means do both pad and % translations. - */ - -static short const parametrized[] = { -0, /* cbt */ -0, /* bel */ -0, /* cr */ -1, /* csr */ -0, /* tbc */ -0, /* clear */ -0, /* el */ -0, /* ed */ -1, /* hpa */ -0, /* cmdch */ -1, /* cup */ -0, /* cud1 */ -0, /* home */ -0, /* civis */ -0, /* cub1 */ -1, /* mrcup */ -0, /* cnorm */ -0, /* cuf1 */ -0, /* ll */ -0, /* cuu1 */ -0, /* cvvis */ -0, /* dch1 */ -0, /* dl1 */ -0, /* dsl */ -0, /* hd */ -0, /* smacs */ -0, /* blink */ -0, /* bold */ -0, /* smcup */ -0, /* smdc */ -0, /* dim */ -0, /* smir */ -0, /* invis */ -0, /* prot */ -0, /* rev */ -0, /* smso */ -0, /* smul */ -1, /* ech */ -0, /* rmacs */ -0, /* sgr0 */ -0, /* rmcup */ -0, /* rmdc */ -0, /* rmir */ -0, /* rmso */ -0, /* rmul */ -0, /* flash */ -0, /* ff */ -0, /* fsl */ -0, /* is1 */ -0, /* is2 */ -0, /* is3 */ -0, /* if */ -0, /* ich1 */ -0, /* il1 */ -0, /* ip */ -0, /* kbs */ -0, /* ktbc */ -0, /* kclr */ -0, /* kctab */ -0, /* kdch1 */ -0, /* kdl1 */ -0, /* kcud1 */ -0, /* krmir */ -0, /* kel */ -0, /* ked */ -0, /* kf0 */ -0, /* kf1 */ -0, /* kf10 */ -0, /* kf2 */ -0, /* kf3 */ -0, /* kf4 */ -0, /* kf5 */ -0, /* kf6 */ -0, /* kf7 */ -0, /* kf8 */ -0, /* kf9 */ -0, /* khome */ -0, /* kich1 */ -0, /* kil1 */ -0, /* kcub1 */ -0, /* kll */ -0, /* knp */ -0, /* kpp */ -0, /* kcuf1 */ -0, /* kind */ -0, /* kri */ -0, /* khts */ -0, /* kcuu1 */ -0, /* rmkx */ -0, /* smkx */ -0, /* lf0 */ -0, /* lf1 */ -0, /* lf10 */ -0, /* lf2 */ -0, /* lf3 */ -0, /* lf4 */ -0, /* lf5 */ -0, /* lf6 */ -0, /* lf7 */ -0, /* lf8 */ -0, /* lf9 */ -0, /* rmm */ -0, /* smm */ -0, /* nel */ -0, /* pad */ -1, /* dch */ -1, /* dl */ -1, /* cud */ -1, /* ich */ -1, /* indn */ -1, /* il */ -1, /* cub */ -1, /* cuf */ -1, /* rin */ -1, /* cuu */ -1, /* pfkey */ -1, /* pfloc */ -1, /* pfx */ -0, /* mc0 */ -0, /* mc4 */ -0, /* mc5 */ -1, /* rep */ -0, /* rs1 */ -0, /* rs2 */ -0, /* rs3 */ -0, /* rf */ -0, /* rc */ -1, /* vpa */ -0, /* sc */ -0, /* ind */ -0, /* ri */ -1, /* sgr */ -0, /* hts */ -1, /* wind */ -0, /* ht */ -1, /* tsl */ -0, /* uc */ -0, /* hu */ -0, /* iprog */ -0, /* ka1 */ -0, /* ka3 */ -0, /* kb2 */ -0, /* kc1 */ -0, /* kc3 */ -1, /* mc5p */ -0, /* rmp */ --1, /* acsc */ -1, /* pln */ -0, /* kcbt */ -0, /* smxon */ -0, /* rmxon */ -0, /* smam */ -0, /* rmam */ -0, /* xonc */ -0, /* xoffc */ -0, /* enacs */ -0, /* smln */ -0, /* rmln */ -0, /* kbeg */ -0, /* kcan */ -0, /* kclo */ -0, /* kcmd */ -0, /* kcpy */ -0, /* kcrt */ -0, /* kend */ -0, /* kent */ -0, /* kext */ -0, /* kfnd */ -0, /* khlp */ -0, /* kmrk */ -0, /* kmsg */ -0, /* kmov */ -0, /* knxt */ -0, /* kopn */ -0, /* kopt */ -0, /* kprv */ -0, /* kprt */ -0, /* krdo */ -0, /* kref */ -0, /* krfr */ -0, /* krpl */ -0, /* krst */ -0, /* kres */ -0, /* ksav */ -0, /* kspd */ -0, /* kund */ -0, /* kBEG */ -0, /* kCAN */ -0, /* kCMD */ -0, /* kCPY */ -0, /* kCRT */ -0, /* kDC */ -0, /* kDL */ -0, /* kslt */ -0, /* kEND */ -0, /* kEOL */ -0, /* kEXT */ -0, /* kFND */ -1, /* kHLP */ -1, /* kHOM */ -1, /* kIC */ -1, /* kLFT */ -0, /* kMSG */ -0, /* kMOV */ -0, /* kNXT */ -0, /* kOPT */ -0, /* kPRV */ -0, /* kPRT */ -0, /* kRDO */ -0, /* kRPL */ -0, /* kRIT */ -0, /* kRES */ -0, /* kSAV */ -0, /* kSPD */ -0, /* kUND */ -0, /* rfi */ -0, /* kf11 */ -0, /* kf12 */ -0, /* kf13 */ -0, /* kf14 */ -0, /* kf15 */ -0, /* kf16 */ -0, /* kf17 */ -0, /* kf18 */ -0, /* kf19 */ -0, /* kf20 */ -0, /* kf21 */ -0, /* kf22 */ -0, /* kf23 */ -0, /* kf24 */ -0, /* kf25 */ -0, /* kf26 */ -0, /* kf27 */ -0, /* kf28 */ -0, /* kf29 */ -0, /* kf30 */ -0, /* kf31 */ -0, /* kf32 */ -0, /* kf33 */ -0, /* kf34 */ -0, /* kf35 */ -0, /* kf36 */ -0, /* kf37 */ -0, /* kf38 */ -0, /* kf39 */ -0, /* kf40 */ -0, /* kf41 */ -0, /* kf42 */ -0, /* kf43 */ -0, /* kf44 */ -0, /* kf45 */ -0, /* kf46 */ -0, /* kf47 */ -0, /* kf48 */ -0, /* kf49 */ -0, /* kf50 */ -0, /* kf51 */ -0, /* kf52 */ -0, /* kf53 */ -0, /* kf54 */ -0, /* kf55 */ -0, /* kf56 */ -0, /* kf57 */ -0, /* kf58 */ -0, /* kf59 */ -0, /* kf60 */ -0, /* kf61 */ -0, /* kf62 */ -0, /* kf63 */ -0, /* el1 */ -0, /* mgc */ -0, /* smgl */ -0, /* smgr */ -0, /* fln */ -1, /* sclk */ -0, /* dclk */ -0, /* rmclk */ -1, /* cwin */ -1, /* wingo */ -0, /* hup */ -1, /* dial */ -1, /* qdial */ -0, /* tone */ -0, /* pulse */ -0, /* hook */ -0, /* pause */ -0, /* wait */ -1, /* u0 */ -1, /* u1 */ -1, /* u2 */ -1, /* u3 */ -1, /* u4 */ -1, /* u5 */ -1, /* u6 */ -1, /* u7 */ -1, /* u8 */ -1, /* u9 */ -0, /* op */ -0, /* oc */ -1, /* initc */ -1, /* initp */ -1, /* scp */ -1, /* setf */ -1, /* setb */ -1, /* cpi */ -1, /* lpi */ -1, /* chr */ -1, /* cvr */ -1, /* defc */ -0, /* swidm */ -0, /* sdrfq */ -0, /* sitm */ -0, /* slm */ -0, /* smicm */ -0, /* snlq */ -0, /* snrmq */ -0, /* sshm */ -0, /* ssubm */ -0, /* ssupm */ -0, /* sum */ -0, /* rwidm */ -0, /* ritm */ -0, /* rlm */ -0, /* rmicm */ -0, /* rshm */ -0, /* rsubm */ -0, /* rsupm */ -0, /* rum */ -0, /* mhpa */ -0, /* mcud1 */ -0, /* mcub1 */ -0, /* mcuf1 */ -1, /* mvpa */ -0, /* mcuu1 */ -0, /* porder */ -0, /* mcud */ -0, /* mcub */ -0, /* mcuf */ -0, /* mcuu */ -1, /* scs */ -0, /* smgb */ -1, /* smgbp */ -1, /* smglp */ -1, /* smgrp */ -0, /* smgt */ -1, /* smgtp */ -0, /* sbim */ -1, /* scsd */ -0, /* rbim */ -1, /* rcsd */ -0, /* subcs */ -0, /* supcs */ -0, /* docr */ -0, /* zerom */ -1, /* csnm */ -0, /* kmous */ -0, /* minfo */ -0, /* reqmp */ -1, /* getm */ -1, /* setaf */ -1, /* setab */ -1, /* pfxl */ -0, /* devt */ -0, /* csin */ -0, /* s0ds */ -0, /* s1ds */ -0, /* s2ds */ -0, /* s3ds */ -1, /* smglr */ -1, /* smgtb */ -1, /* birep */ -0, /* binel */ -0, /* bicr */ -1, /* colornm */ -0, /* defbi */ -0, /* endbi */ -1, /* setcolor */ -1, /* slines */ -1, /* dispc */ -0, /* smpch */ -0, /* rmpch */ -0, /* smsc */ -0, /* rmsc */ -0, /* pctrm */ -0, /* scesc */ -0, /* scesa */ -0, /* ehhlm */ -0, /* elhlm */ -0, /* elohlm */ -0, /* erhlm */ -0, /* ethlm */ -0, /* evhlm */ -1, /* sgr1 */ -1, /* slength */ -0, /* OTi2 */ -0, /* OTrs */ -0, /* OTnl */ -0, /* OTbc */ -0, /* OTko */ -0, /* OTma */ --1, /* OTG2 */ --1, /* OTG3 */ --1, /* OTG1 */ --1, /* OTG4 */ --1, /* OTGR */ --1, /* OTGL */ --1, /* OTGU */ --1, /* OTGD */ --1, /* OTGH */ --1, /* OTGV */ --1, /* OTGC */ -0, /* meml */ -0, /* memu */ -1, /* pln */ -0, /* smln */ -0, /* rmln */ -0, /* kf11 */ -0, /* kf12 */ -0, /* kf13 */ -0, /* kf14 */ -0, /* kf15 */ -0, /* kf16 */ -0, /* kf17 */ -0, /* kf18 */ -0, /* kf19 */ -0, /* kf20 */ -0, /* kf21 */ -0, /* kf22 */ -0, /* kf23 */ -0, /* kf24 */ -0, /* kf25 */ -0, /* kf26 */ -0, /* kf27 */ -0, /* kf28 */ -0, /* kf29 */ -0, /* kf30 */ -0, /* kf31 */ -0, /* kf32 */ -0, /* kf33 */ -0, /* kf34 */ -0, /* kf35 */ -0, /* kf36 */ -0, /* kf37 */ -0, /* kf38 */ -0, /* kf39 */ -0, /* kf40 */ -0, /* kf41 */ -0, /* kf42 */ -0, /* kf43 */ -0, /* kf44 */ -0, /* kf45 */ -0, /* kf46 */ -0, /* kf47 */ -0, /* kf48 */ -0, /* kf49 */ -0, /* kf50 */ -0, /* kf51 */ -0, /* kf52 */ -0, /* kf53 */ -0, /* kf54 */ -0, /* kf55 */ -0, /* kf56 */ -0, /* kf57 */ -0, /* kf58 */ -0, /* kf59 */ -0, /* kf60 */ -0, /* kf61 */ -0, /* kf62 */ -0, /* kf63 */ -0, /* box1 */ -0, /* box2 */ -0, /* batt1 */ -0, /* batt2 */ -0, /* colb0 */ -0, /* colb1 */ -0, /* colb2 */ -0, /* colb3 */ -0, /* colb4 */ -0, /* colb5 */ -0, /* colb6 */ -0, /* colb7 */ -0, /* colf0 */ -0, /* colf1 */ -0, /* colf2 */ -0, /* colf3 */ -0, /* colf4 */ -0, /* colf5 */ -0, /* colf6 */ -0, /* colf7 */ -0, /* font0 */ -0, /* font1 */ -0, /* font2 */ -0, /* font3 */ -0, /* font4 */ -0, /* font5 */ -0, /* font6 */ -0, /* font7 */ -0, /* kbtab */ -0, /* kdo */ -0, /* kcmd */ -0, /* kcpn */ -0, /* kend */ -0, /* khlp */ -0, /* knl */ -0, /* knpn */ -0, /* kppn */ -0, /* kppn */ -0, /* kquit */ -0, /* ksel */ -0, /* kscl */ -0, /* kscr */ -0, /* ktab */ -0, /* kmpf1 */ -0, /* kmpt1 */ -0, /* kmpf2 */ -0, /* kmpt2 */ -0, /* kmpf3 */ -0, /* kmpt3 */ -0, /* kmpf4 */ -0, /* kmpt4 */ -0, /* kmpf5 */ -0, /* kmpt5 */ -0, /* apstr */ -0, /* kmpf6 */ -0, /* kmpt6 */ -0, /* kmpf7 */ -0, /* kmpt7 */ -0, /* kmpf8 */ -0, /* kmpt8 */ -0, /* kmpf9 */ -0, /* kmpt9 */ -0, /* ksf1 */ -0, /* ksf2 */ -0, /* ksf3 */ -0, /* ksf4 */ -0, /* ksf5 */ -0, /* ksf6 */ -0, /* ksf7 */ -0, /* ksf8 */ -0, /* ksf9 */ -0, /* ksf10 */ -0, /* kf11 */ -0, /* kf12 */ -0, /* kact */ -0, /* topl */ -0, /* btml */ -0, /* rvert */ -0, /* lvert */ -} /* 548 entries */; - diff --git a/deps/ncurses-5.9/include/term.h b/deps/ncurses-5.9/include/term.h deleted file mode 100644 index 4f7aaa3..0000000 --- a/deps/ncurses-5.9/include/term.h +++ /dev/null @@ -1,834 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 */ -/* and: Eric S. Raymond */ -/* and: Thomas E. Dickey 1995-on */ -/****************************************************************************/ - -/* $Id: MKterm.h.awk.in,v 1.58 2010/01/09 19:53:26 tom Exp $ */ - -/* -** term.h -- Definition of struct term -*/ - -#ifndef NCURSES_TERM_H_incl -#define NCURSES_TERM_H_incl 1 - -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.9" - -#include - -#ifdef __cplusplus -extern "C" { -#endif - -/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H - * definition (based on the system for which this was configured). - */ - -#undef NCURSES_CONST -#define NCURSES_CONST /*nothing*/ - -#undef NCURSES_SBOOL -#define NCURSES_SBOOL char - -#undef NCURSES_XNAMES -#define NCURSES_XNAMES 1 - -/* We will use these symbols to hide differences between - * termios/termio/sgttyb interfaces. - */ -#undef TTY -#undef SET_TTY -#undef GET_TTY - -/* Assume POSIX termio if we have the header and function */ -/* #if HAVE_TERMIOS_H && HAVE_TCGETATTR */ -#if 1 && 1 - -#undef TERMIOS -#define TERMIOS 1 - -#include -#define TTY struct termios - -#else /* !HAVE_TERMIOS_H */ - -/* #if HAVE_TERMIO_H */ -#if 1 - -#undef TERMIOS -#define TERMIOS 1 - -#include -#define TTY struct termio - -/* Add definitions to make termio look like termios. - * But ifdef it, since there are some implementations - * that try to do this for us in a fake . - */ -#ifndef TCSANOW -#define TCSANOW TCSETA -#endif -#ifndef TCSADRAIN -#define TCSADRAIN TCSETAW -#endif -#ifndef TCSAFLUSH -#define TCSAFLUSH TCSETAF -#endif -#ifndef tcsetattr -#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg) -#endif -#ifndef tcgetattr -#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg) -#endif -#ifndef cfgetospeed -#define cfgetospeed(t) ((t)->c_cflag & CBAUD) -#endif -#ifndef TCIFLUSH -#define TCIFLUSH 0 -#endif -#ifndef TCOFLUSH -#define TCOFLUSH 1 -#endif -#ifndef TCIOFLUSH -#define TCIOFLUSH 2 -#endif -#ifndef tcflush -#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg) -#endif - -#else /* !HAVE_TERMIO_H */ - -#if __MINGW32__ -# include -# define TTY struct termios -#else -#undef TERMIOS -#include -#include -#define TTY struct sgttyb -#endif /* MINGW32 */ -#endif /* HAVE_TERMIO_H */ - -#endif /* HAVE_TERMIOS_H */ - -#ifdef TERMIOS -#define GET_TTY(fd, buf) tcgetattr(fd, buf) -#define SET_TTY(fd, buf) tcsetattr(fd, TCSADRAIN, buf) -#else -#define GET_TTY(fd, buf) gtty(fd, buf) -#define SET_TTY(fd, buf) stty(fd, buf) -#endif - -#define NAMESIZE 256 - -#define CUR cur_term->type. - -#define auto_left_margin CUR Booleans[0] -#define auto_right_margin CUR Booleans[1] -#define no_esc_ctlc CUR Booleans[2] -#define ceol_standout_glitch CUR Booleans[3] -#define eat_newline_glitch CUR Booleans[4] -#define erase_overstrike CUR Booleans[5] -#define generic_type CUR Booleans[6] -#define hard_copy CUR Booleans[7] -#define has_meta_key CUR Booleans[8] -#define has_status_line CUR Booleans[9] -#define insert_null_glitch CUR Booleans[10] -#define memory_above CUR Booleans[11] -#define memory_below CUR Booleans[12] -#define move_insert_mode CUR Booleans[13] -#define move_standout_mode CUR Booleans[14] -#define over_strike CUR Booleans[15] -#define status_line_esc_ok CUR Booleans[16] -#define dest_tabs_magic_smso CUR Booleans[17] -#define tilde_glitch CUR Booleans[18] -#define transparent_underline CUR Booleans[19] -#define xon_xoff CUR Booleans[20] -#define needs_xon_xoff CUR Booleans[21] -#define prtr_silent CUR Booleans[22] -#define hard_cursor CUR Booleans[23] -#define non_rev_rmcup CUR Booleans[24] -#define no_pad_char CUR Booleans[25] -#define non_dest_scroll_region CUR Booleans[26] -#define can_change CUR Booleans[27] -#define back_color_erase CUR Booleans[28] -#define hue_lightness_saturation CUR Booleans[29] -#define col_addr_glitch CUR Booleans[30] -#define cr_cancels_micro_mode CUR Booleans[31] -#define has_print_wheel CUR Booleans[32] -#define row_addr_glitch CUR Booleans[33] -#define semi_auto_right_margin CUR Booleans[34] -#define cpi_changes_res CUR Booleans[35] -#define lpi_changes_res CUR Booleans[36] -#define columns CUR Numbers[0] -#define init_tabs CUR Numbers[1] -#define lines CUR Numbers[2] -#define lines_of_memory CUR Numbers[3] -#define magic_cookie_glitch CUR Numbers[4] -#define padding_baud_rate CUR Numbers[5] -#define virtual_terminal CUR Numbers[6] -#define width_status_line CUR Numbers[7] -#define num_labels CUR Numbers[8] -#define label_height CUR Numbers[9] -#define label_width CUR Numbers[10] -#define max_attributes CUR Numbers[11] -#define maximum_windows CUR Numbers[12] -#define max_colors CUR Numbers[13] -#define max_pairs CUR Numbers[14] -#define no_color_video CUR Numbers[15] -#define buffer_capacity CUR Numbers[16] -#define dot_vert_spacing CUR Numbers[17] -#define dot_horz_spacing CUR Numbers[18] -#define max_micro_address CUR Numbers[19] -#define max_micro_jump CUR Numbers[20] -#define micro_col_size CUR Numbers[21] -#define micro_line_size CUR Numbers[22] -#define number_of_pins CUR Numbers[23] -#define output_res_char CUR Numbers[24] -#define output_res_line CUR Numbers[25] -#define output_res_horz_inch CUR Numbers[26] -#define output_res_vert_inch CUR Numbers[27] -#define print_rate CUR Numbers[28] -#define wide_char_size CUR Numbers[29] -#define buttons CUR Numbers[30] -#define bit_image_entwining CUR Numbers[31] -#define bit_image_type CUR Numbers[32] -#define back_tab CUR Strings[0] -#define bell CUR Strings[1] -#define carriage_return CUR Strings[2] -#define change_scroll_region CUR Strings[3] -#define clear_all_tabs CUR Strings[4] -#define clear_screen CUR Strings[5] -#define clr_eol CUR Strings[6] -#define clr_eos CUR Strings[7] -#define column_address CUR Strings[8] -#define command_character CUR Strings[9] -#define cursor_address CUR Strings[10] -#define cursor_down CUR Strings[11] -#define cursor_home CUR Strings[12] -#define cursor_invisible CUR Strings[13] -#define cursor_left CUR Strings[14] -#define cursor_mem_address CUR Strings[15] -#define cursor_normal CUR Strings[16] -#define cursor_right CUR Strings[17] -#define cursor_to_ll CUR Strings[18] -#define cursor_up CUR Strings[19] -#define cursor_visible CUR Strings[20] -#define delete_character CUR Strings[21] -#define delete_line CUR Strings[22] -#define dis_status_line CUR Strings[23] -#define down_half_line CUR Strings[24] -#define enter_alt_charset_mode CUR Strings[25] -#define enter_blink_mode CUR Strings[26] -#define enter_bold_mode CUR Strings[27] -#define enter_ca_mode CUR Strings[28] -#define enter_delete_mode CUR Strings[29] -#define enter_dim_mode CUR Strings[30] -#define enter_insert_mode CUR Strings[31] -#define enter_secure_mode CUR Strings[32] -#define enter_protected_mode CUR Strings[33] -#define enter_reverse_mode CUR Strings[34] -#define enter_standout_mode CUR Strings[35] -#define enter_underline_mode CUR Strings[36] -#define erase_chars CUR Strings[37] -#define exit_alt_charset_mode CUR Strings[38] -#define exit_attribute_mode CUR Strings[39] -#define exit_ca_mode CUR Strings[40] -#define exit_delete_mode CUR Strings[41] -#define exit_insert_mode CUR Strings[42] -#define exit_standout_mode CUR Strings[43] -#define exit_underline_mode CUR Strings[44] -#define flash_screen CUR Strings[45] -#define form_feed CUR Strings[46] -#define from_status_line CUR Strings[47] -#define init_1string CUR Strings[48] -#define init_2string CUR Strings[49] -#define init_3string CUR Strings[50] -#define init_file CUR Strings[51] -#define insert_character CUR Strings[52] -#define insert_line CUR Strings[53] -#define insert_padding CUR Strings[54] -#define key_backspace CUR Strings[55] -#define key_catab CUR Strings[56] -#define key_clear CUR Strings[57] -#define key_ctab CUR Strings[58] -#define key_dc CUR Strings[59] -#define key_dl CUR Strings[60] -#define key_down CUR Strings[61] -#define key_eic CUR Strings[62] -#define key_eol CUR Strings[63] -#define key_eos CUR Strings[64] -#define key_f0 CUR Strings[65] -#define key_f1 CUR Strings[66] -#define key_f10 CUR Strings[67] -#define key_f2 CUR Strings[68] -#define key_f3 CUR Strings[69] -#define key_f4 CUR Strings[70] -#define key_f5 CUR Strings[71] -#define key_f6 CUR Strings[72] -#define key_f7 CUR Strings[73] -#define key_f8 CUR Strings[74] -#define key_f9 CUR Strings[75] -#define key_home CUR Strings[76] -#define key_ic CUR Strings[77] -#define key_il CUR Strings[78] -#define key_left CUR Strings[79] -#define key_ll CUR Strings[80] -#define key_npage CUR Strings[81] -#define key_ppage CUR Strings[82] -#define key_right CUR Strings[83] -#define key_sf CUR Strings[84] -#define key_sr CUR Strings[85] -#define key_stab CUR Strings[86] -#define key_up CUR Strings[87] -#define keypad_local CUR Strings[88] -#define keypad_xmit CUR Strings[89] -#define lab_f0 CUR Strings[90] -#define lab_f1 CUR Strings[91] -#define lab_f10 CUR Strings[92] -#define lab_f2 CUR Strings[93] -#define lab_f3 CUR Strings[94] -#define lab_f4 CUR Strings[95] -#define lab_f5 CUR Strings[96] -#define lab_f6 CUR Strings[97] -#define lab_f7 CUR Strings[98] -#define lab_f8 CUR Strings[99] -#define lab_f9 CUR Strings[100] -#define meta_off CUR Strings[101] -#define meta_on CUR Strings[102] -#define newline CUR Strings[103] -#define pad_char CUR Strings[104] -#define parm_dch CUR Strings[105] -#define parm_delete_line CUR Strings[106] -#define parm_down_cursor CUR Strings[107] -#define parm_ich CUR Strings[108] -#define parm_index CUR Strings[109] -#define parm_insert_line CUR Strings[110] -#define parm_left_cursor CUR Strings[111] -#define parm_right_cursor CUR Strings[112] -#define parm_rindex CUR Strings[113] -#define parm_up_cursor CUR Strings[114] -#define pkey_key CUR Strings[115] -#define pkey_local CUR Strings[116] -#define pkey_xmit CUR Strings[117] -#define print_screen CUR Strings[118] -#define prtr_off CUR Strings[119] -#define prtr_on CUR Strings[120] -#define repeat_char CUR Strings[121] -#define reset_1string CUR Strings[122] -#define reset_2string CUR Strings[123] -#define reset_3string CUR Strings[124] -#define reset_file CUR Strings[125] -#define restore_cursor CUR Strings[126] -#define row_address CUR Strings[127] -#define save_cursor CUR Strings[128] -#define scroll_forward CUR Strings[129] -#define scroll_reverse CUR Strings[130] -#define set_attributes CUR Strings[131] -#define set_tab CUR Strings[132] -#define set_window CUR Strings[133] -#define tab CUR Strings[134] -#define to_status_line CUR Strings[135] -#define underline_char CUR Strings[136] -#define up_half_line CUR Strings[137] -#define init_prog CUR Strings[138] -#define key_a1 CUR Strings[139] -#define key_a3 CUR Strings[140] -#define key_b2 CUR Strings[141] -#define key_c1 CUR Strings[142] -#define key_c3 CUR Strings[143] -#define prtr_non CUR Strings[144] -#define char_padding CUR Strings[145] -#define acs_chars CUR Strings[146] -#define plab_norm CUR Strings[147] -#define key_btab CUR Strings[148] -#define enter_xon_mode CUR Strings[149] -#define exit_xon_mode CUR Strings[150] -#define enter_am_mode CUR Strings[151] -#define exit_am_mode CUR Strings[152] -#define xon_character CUR Strings[153] -#define xoff_character CUR Strings[154] -#define ena_acs CUR Strings[155] -#define label_on CUR Strings[156] -#define label_off CUR Strings[157] -#define key_beg CUR Strings[158] -#define key_cancel CUR Strings[159] -#define key_close CUR Strings[160] -#define key_command CUR Strings[161] -#define key_copy CUR Strings[162] -#define key_create CUR Strings[163] -#define key_end CUR Strings[164] -#define key_enter CUR Strings[165] -#define key_exit CUR Strings[166] -#define key_find CUR Strings[167] -#define key_help CUR Strings[168] -#define key_mark CUR Strings[169] -#define key_message CUR Strings[170] -#define key_move CUR Strings[171] -#define key_next CUR Strings[172] -#define key_open CUR Strings[173] -#define key_options CUR Strings[174] -#define key_previous CUR Strings[175] -#define key_print CUR Strings[176] -#define key_redo CUR Strings[177] -#define key_reference CUR Strings[178] -#define key_refresh CUR Strings[179] -#define key_replace CUR Strings[180] -#define key_restart CUR Strings[181] -#define key_resume CUR Strings[182] -#define key_save CUR Strings[183] -#define key_suspend CUR Strings[184] -#define key_undo CUR Strings[185] -#define key_sbeg CUR Strings[186] -#define key_scancel CUR Strings[187] -#define key_scommand CUR Strings[188] -#define key_scopy CUR Strings[189] -#define key_screate CUR Strings[190] -#define key_sdc CUR Strings[191] -#define key_sdl CUR Strings[192] -#define key_select CUR Strings[193] -#define key_send CUR Strings[194] -#define key_seol CUR Strings[195] -#define key_sexit CUR Strings[196] -#define key_sfind CUR Strings[197] -#define key_shelp CUR Strings[198] -#define key_shome CUR Strings[199] -#define key_sic CUR Strings[200] -#define key_sleft CUR Strings[201] -#define key_smessage CUR Strings[202] -#define key_smove CUR Strings[203] -#define key_snext CUR Strings[204] -#define key_soptions CUR Strings[205] -#define key_sprevious CUR Strings[206] -#define key_sprint CUR Strings[207] -#define key_sredo CUR Strings[208] -#define key_sreplace CUR Strings[209] -#define key_sright CUR Strings[210] -#define key_srsume CUR Strings[211] -#define key_ssave CUR Strings[212] -#define key_ssuspend CUR Strings[213] -#define key_sundo CUR Strings[214] -#define req_for_input CUR Strings[215] -#define key_f11 CUR Strings[216] -#define key_f12 CUR Strings[217] -#define key_f13 CUR Strings[218] -#define key_f14 CUR Strings[219] -#define key_f15 CUR Strings[220] -#define key_f16 CUR Strings[221] -#define key_f17 CUR Strings[222] -#define key_f18 CUR Strings[223] -#define key_f19 CUR Strings[224] -#define key_f20 CUR Strings[225] -#define key_f21 CUR Strings[226] -#define key_f22 CUR Strings[227] -#define key_f23 CUR Strings[228] -#define key_f24 CUR Strings[229] -#define key_f25 CUR Strings[230] -#define key_f26 CUR Strings[231] -#define key_f27 CUR Strings[232] -#define key_f28 CUR Strings[233] -#define key_f29 CUR Strings[234] -#define key_f30 CUR Strings[235] -#define key_f31 CUR Strings[236] -#define key_f32 CUR Strings[237] -#define key_f33 CUR Strings[238] -#define key_f34 CUR Strings[239] -#define key_f35 CUR Strings[240] -#define key_f36 CUR Strings[241] -#define key_f37 CUR Strings[242] -#define key_f38 CUR Strings[243] -#define key_f39 CUR Strings[244] -#define key_f40 CUR Strings[245] -#define key_f41 CUR Strings[246] -#define key_f42 CUR Strings[247] -#define key_f43 CUR Strings[248] -#define key_f44 CUR Strings[249] -#define key_f45 CUR Strings[250] -#define key_f46 CUR Strings[251] -#define key_f47 CUR Strings[252] -#define key_f48 CUR Strings[253] -#define key_f49 CUR Strings[254] -#define key_f50 CUR Strings[255] -#define key_f51 CUR Strings[256] -#define key_f52 CUR Strings[257] -#define key_f53 CUR Strings[258] -#define key_f54 CUR Strings[259] -#define key_f55 CUR Strings[260] -#define key_f56 CUR Strings[261] -#define key_f57 CUR Strings[262] -#define key_f58 CUR Strings[263] -#define key_f59 CUR Strings[264] -#define key_f60 CUR Strings[265] -#define key_f61 CUR Strings[266] -#define key_f62 CUR Strings[267] -#define key_f63 CUR Strings[268] -#define clr_bol CUR Strings[269] -#define clear_margins CUR Strings[270] -#define set_left_margin CUR Strings[271] -#define set_right_margin CUR Strings[272] -#define label_format CUR Strings[273] -#define set_clock CUR Strings[274] -#define display_clock CUR Strings[275] -#define remove_clock CUR Strings[276] -#define create_window CUR Strings[277] -#define goto_window CUR Strings[278] -#define hangup CUR Strings[279] -#define dial_phone CUR Strings[280] -#define quick_dial CUR Strings[281] -#define tone CUR Strings[282] -#define pulse CUR Strings[283] -#define flash_hook CUR Strings[284] -#define fixed_pause CUR Strings[285] -#define wait_tone CUR Strings[286] -#define user0 CUR Strings[287] -#define user1 CUR Strings[288] -#define user2 CUR Strings[289] -#define user3 CUR Strings[290] -#define user4 CUR Strings[291] -#define user5 CUR Strings[292] -#define user6 CUR Strings[293] -#define user7 CUR Strings[294] -#define user8 CUR Strings[295] -#define user9 CUR Strings[296] -#define orig_pair CUR Strings[297] -#define orig_colors CUR Strings[298] -#define initialize_color CUR Strings[299] -#define initialize_pair CUR Strings[300] -#define set_color_pair CUR Strings[301] -#define set_foreground CUR Strings[302] -#define set_background CUR Strings[303] -#define change_char_pitch CUR Strings[304] -#define change_line_pitch CUR Strings[305] -#define change_res_horz CUR Strings[306] -#define change_res_vert CUR Strings[307] -#define define_char CUR Strings[308] -#define enter_doublewide_mode CUR Strings[309] -#define enter_draft_quality CUR Strings[310] -#define enter_italics_mode CUR Strings[311] -#define enter_leftward_mode CUR Strings[312] -#define enter_micro_mode CUR Strings[313] -#define enter_near_letter_quality CUR Strings[314] -#define enter_normal_quality CUR Strings[315] -#define enter_shadow_mode CUR Strings[316] -#define enter_subscript_mode CUR Strings[317] -#define enter_superscript_mode CUR Strings[318] -#define enter_upward_mode CUR Strings[319] -#define exit_doublewide_mode CUR Strings[320] -#define exit_italics_mode CUR Strings[321] -#define exit_leftward_mode CUR Strings[322] -#define exit_micro_mode CUR Strings[323] -#define exit_shadow_mode CUR Strings[324] -#define exit_subscript_mode CUR Strings[325] -#define exit_superscript_mode CUR Strings[326] -#define exit_upward_mode CUR Strings[327] -#define micro_column_address CUR Strings[328] -#define micro_down CUR Strings[329] -#define micro_left CUR Strings[330] -#define micro_right CUR Strings[331] -#define micro_row_address CUR Strings[332] -#define micro_up CUR Strings[333] -#define order_of_pins CUR Strings[334] -#define parm_down_micro CUR Strings[335] -#define parm_left_micro CUR Strings[336] -#define parm_right_micro CUR Strings[337] -#define parm_up_micro CUR Strings[338] -#define select_char_set CUR Strings[339] -#define set_bottom_margin CUR Strings[340] -#define set_bottom_margin_parm CUR Strings[341] -#define set_left_margin_parm CUR Strings[342] -#define set_right_margin_parm CUR Strings[343] -#define set_top_margin CUR Strings[344] -#define set_top_margin_parm CUR Strings[345] -#define start_bit_image CUR Strings[346] -#define start_char_set_def CUR Strings[347] -#define stop_bit_image CUR Strings[348] -#define stop_char_set_def CUR Strings[349] -#define subscript_characters CUR Strings[350] -#define superscript_characters CUR Strings[351] -#define these_cause_cr CUR Strings[352] -#define zero_motion CUR Strings[353] -#define char_set_names CUR Strings[354] -#define key_mouse CUR Strings[355] -#define mouse_info CUR Strings[356] -#define req_mouse_pos CUR Strings[357] -#define get_mouse CUR Strings[358] -#define set_a_foreground CUR Strings[359] -#define set_a_background CUR Strings[360] -#define pkey_plab CUR Strings[361] -#define device_type CUR Strings[362] -#define code_set_init CUR Strings[363] -#define set0_des_seq CUR Strings[364] -#define set1_des_seq CUR Strings[365] -#define set2_des_seq CUR Strings[366] -#define set3_des_seq CUR Strings[367] -#define set_lr_margin CUR Strings[368] -#define set_tb_margin CUR Strings[369] -#define bit_image_repeat CUR Strings[370] -#define bit_image_newline CUR Strings[371] -#define bit_image_carriage_return CUR Strings[372] -#define color_names CUR Strings[373] -#define define_bit_image_region CUR Strings[374] -#define end_bit_image_region CUR Strings[375] -#define set_color_band CUR Strings[376] -#define set_page_length CUR Strings[377] -#define display_pc_char CUR Strings[378] -#define enter_pc_charset_mode CUR Strings[379] -#define exit_pc_charset_mode CUR Strings[380] -#define enter_scancode_mode CUR Strings[381] -#define exit_scancode_mode CUR Strings[382] -#define pc_term_options CUR Strings[383] -#define scancode_escape CUR Strings[384] -#define alt_scancode_esc CUR Strings[385] -#define enter_horizontal_hl_mode CUR Strings[386] -#define enter_left_hl_mode CUR Strings[387] -#define enter_low_hl_mode CUR Strings[388] -#define enter_right_hl_mode CUR Strings[389] -#define enter_top_hl_mode CUR Strings[390] -#define enter_vertical_hl_mode CUR Strings[391] -#define set_a_attributes CUR Strings[392] -#define set_pglen_inch CUR Strings[393] - -#define BOOLWRITE 37 -#define NUMWRITE 33 -#define STRWRITE 394 - -/* older synonyms for some capabilities */ -#define beehive_glitch no_esc_ctlc -#define teleray_glitch dest_tabs_magic_smso -#define micro_char_size micro_col_size - -#ifdef __INTERNAL_CAPS_VISIBLE -#define termcap_init2 CUR Strings[394] -#define termcap_reset CUR Strings[395] -#define magic_cookie_glitch_ul CUR Numbers[33] -#define backspaces_with_bs CUR Booleans[37] -#define crt_no_scrolling CUR Booleans[38] -#define no_correctly_working_cr CUR Booleans[39] -#define carriage_return_delay CUR Numbers[34] -#define new_line_delay CUR Numbers[35] -#define linefeed_if_not_lf CUR Strings[396] -#define backspace_if_not_bs CUR Strings[397] -#define gnu_has_meta_key CUR Booleans[40] -#define linefeed_is_newline CUR Booleans[41] -#define backspace_delay CUR Numbers[36] -#define horizontal_tab_delay CUR Numbers[37] -#define number_of_function_keys CUR Numbers[38] -#define other_non_function_keys CUR Strings[398] -#define arrow_key_map CUR Strings[399] -#define has_hardware_tabs CUR Booleans[42] -#define return_does_clr_eol CUR Booleans[43] -#define acs_ulcorner CUR Strings[400] -#define acs_llcorner CUR Strings[401] -#define acs_urcorner CUR Strings[402] -#define acs_lrcorner CUR Strings[403] -#define acs_ltee CUR Strings[404] -#define acs_rtee CUR Strings[405] -#define acs_btee CUR Strings[406] -#define acs_ttee CUR Strings[407] -#define acs_hline CUR Strings[408] -#define acs_vline CUR Strings[409] -#define acs_plus CUR Strings[410] -#define memory_lock CUR Strings[411] -#define memory_unlock CUR Strings[412] -#define box_chars_1 CUR Strings[413] -#endif /* __INTERNAL_CAPS_VISIBLE */ - - -/* - * Predefined terminfo array sizes - */ -#define BOOLCOUNT 44 -#define NUMCOUNT 39 -#define STRCOUNT 414 - -/* used by code for comparing entries */ -#define acs_chars_index 146 - -typedef struct termtype { /* in-core form of terminfo data */ - char *term_names; /* str_table offset of term names */ - char *str_table; /* pointer to string table */ - NCURSES_SBOOL *Booleans; /* array of boolean values */ - short *Numbers; /* array of integer values */ - char **Strings; /* array of string offsets */ - -#if NCURSES_XNAMES - char *ext_str_table; /* pointer to extended string table */ - char **ext_Names; /* corresponding names */ - - unsigned short num_Booleans;/* count total Booleans */ - unsigned short num_Numbers; /* count total Numbers */ - unsigned short num_Strings; /* count total Strings */ - - unsigned short ext_Booleans;/* count extensions to Booleans */ - unsigned short ext_Numbers; /* count extensions to Numbers */ - unsigned short ext_Strings; /* count extensions to Strings */ -#endif /* NCURSES_XNAMES */ - -} TERMTYPE; - -typedef struct term { /* describe an actual terminal */ - TERMTYPE type; /* terminal type description */ - short Filedes; /* file description being written to */ - TTY Ottyb, /* original state of the terminal */ - Nttyb; /* current state of the terminal */ - int _baudrate; /* used to compute padding */ - char * _termname; /* used for termname() */ -} TERMINAL; - -#if 0 && !0 -extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term; -#elif 0 -NCURSES_WRAPPED_VAR(TERMINAL *, cur_term); -#define cur_term NCURSES_PUBLIC_VAR(cur_term()) -#else -extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term; -#endif - -#if 0 || 0 -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolcodes); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes); -NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames); - -#define boolnames NCURSES_PUBLIC_VAR(boolnames()) -#define boolcodes NCURSES_PUBLIC_VAR(boolcodes()) -#define boolfnames NCURSES_PUBLIC_VAR(boolfnames()) -#define numnames NCURSES_PUBLIC_VAR(numnames()) -#define numcodes NCURSES_PUBLIC_VAR(numcodes()) -#define numfnames NCURSES_PUBLIC_VAR(numfnames()) -#define strnames NCURSES_PUBLIC_VAR(strnames()) -#define strcodes NCURSES_PUBLIC_VAR(strcodes()) -#define strfnames NCURSES_PUBLIC_VAR(strfnames()) - -#else - -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[]; - -#endif - -/* internals */ -extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf); -extern NCURSES_EXPORT(int) _nc_get_tty_mode (TTY *buf); -extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const); -extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE *); -extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE *, char *, int); -extern NCURSES_EXPORT(char *) _nc_first_name (const char *const); -extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const); -extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *); - -/* entry points */ -extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *); -extern NCURSES_EXPORT(int) del_curterm (TERMINAL *); - -/* miscellaneous entry points */ -extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *); -extern NCURSES_EXPORT(int) setupterm (NCURSES_CONST char *,int,int *); - -/* terminfo entry points, also declared in curses.h */ -#if !defined(__NCURSES_H) -extern NCURSES_EXPORT(char *) tigetstr (NCURSES_CONST char *); -extern NCURSES_EXPORT_VAR(char) ttytype[]; -extern NCURSES_EXPORT(int) putp (const char *); -extern NCURSES_EXPORT(int) tigetflag (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tigetnum (NCURSES_CONST char *); - -#if 1 /* NCURSES_TPARM_VARARGS */ -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) tparm (NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) tparm_varargs (NCURSES_CONST char *, ...); /* special */ -#endif - -extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */ - -#endif /* __NCURSES_H */ - -/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */ -#if !defined(NCURSES_TERMCAP_H_incl) -extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **); -extern NCURSES_EXPORT(char *) tgoto (const char *, int, int); -extern NCURSES_EXPORT(int) tgetent (char *, const char *); -extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int)); -#endif /* NCURSES_TERMCAP_H_incl */ - -/* - * Include curses.h before term.h to enable these extensions. - */ -#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0) - -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, NCURSES_CONST char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetflag) (SCREEN*, NCURSES_CONST char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tigetnum) (SCREEN*, NCURSES_CONST char *); - -#if 1 /* NCURSES_TPARM_VARARGS */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, ...); /* special */ -#else -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, NCURSES_CONST char *, long,long,long,long,long,long,long,long,long); /* special */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm_varargs) (SCREEN*, NCURSES_CONST char *, ...); /* special */ -#endif - -/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */ -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, NCURSES_CONST char *, char **); -extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, NCURSES_CONST char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, NCURSES_CONST char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC); - -extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *); - -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *); -#endif /* NCURSES_SP_FUNCS */ - -#ifdef __cplusplus -} -#endif - -#endif /* NCURSES_TERM_H_incl */ diff --git a/deps/ncurses-5.9/include/term_entry.h b/deps/ncurses-5.9/include/term_entry.h deleted file mode 100644 index 4770f86..0000000 --- a/deps/ncurses-5.9/include/term_entry.h +++ /dev/null @@ -1,174 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2009 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1998-on * - ****************************************************************************/ - -/* $Id: term_entry.h,v 1.37 2009/07/11 16:52:29 tom Exp $ */ - -/* - * term_entry.h -- interface to entry-manipulation code - */ - -#ifndef NCURSES_TERM_ENTRY_H_incl -#define NCURSES_TERM_ENTRY_H_incl 1 - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#define MAX_USES 32 -#define MAX_CROSSLINKS 16 - -typedef struct entry { - TERMTYPE tterm; - unsigned nuses; - struct - { - char *name; - struct entry *link; - long line; - } - uses[MAX_USES]; - int ncrosslinks; - struct entry *crosslinks[MAX_CROSSLINKS]; - long cstart, cend; - long startline; - struct entry *next; - struct entry *last; -} -ENTRY; - -#if NCURSES_XNAMES -#define NUM_BOOLEANS(tp) (tp)->num_Booleans -#define NUM_NUMBERS(tp) (tp)->num_Numbers -#define NUM_STRINGS(tp) (tp)->num_Strings -#define EXT_NAMES(tp,i,limit,index,table) (i >= limit) ? tp->ext_Names[index] : table[i] -#else -#define NUM_BOOLEANS(tp) BOOLCOUNT -#define NUM_NUMBERS(tp) NUMCOUNT -#define NUM_STRINGS(tp) STRCOUNT -#define EXT_NAMES(tp,i,limit,index,table) table[i] -#endif - -#define NUM_EXT_NAMES(tp) (unsigned) ((tp)->ext_Booleans + (tp)->ext_Numbers + (tp)->ext_Strings) - -#define for_each_boolean(n,tp) for(n = 0; n < NUM_BOOLEANS(tp); n++) -#define for_each_number(n,tp) for(n = 0; n < NUM_NUMBERS(tp); n++) -#define for_each_string(n,tp) for(n = 0; n < NUM_STRINGS(tp); n++) - -#if NCURSES_XNAMES -#define for_each_ext_boolean(n,tp) for(n = BOOLCOUNT; n < NUM_BOOLEANS(tp); n++) -#define for_each_ext_number(n,tp) for(n = NUMCOUNT; n < NUM_NUMBERS(tp); n++) -#define for_each_ext_string(n,tp) for(n = STRCOUNT; n < NUM_STRINGS(tp); n++) -#endif - -#define ExtBoolname(tp,i,names) EXT_NAMES(tp, i, BOOLCOUNT, (i - (tp->num_Booleans - tp->ext_Booleans)), names) -#define ExtNumname(tp,i,names) EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names) -#define ExtStrname(tp,i,names) EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names) - -extern NCURSES_EXPORT_VAR(ENTRY *) _nc_head; -extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail; -#define for_entry_list(qp) for (qp = _nc_head; qp; qp = qp->next) - -#define MAX_LINE 132 - -#define NULLHOOK (bool(*)(ENTRY *))0 - -/* - * Note that WANTED and PRESENT are not simple inverses! If a capability - * has been explicitly cancelled, it's not considered WANTED. - */ -#define WANTED(s) ((s) == ABSENT_STRING) -#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING)) - -#define ANDMISSING(p,q) \ - {if (PRESENT(p) && !PRESENT(q)) _nc_warning(#p " but no " #q);} - -#define PAIRED(p,q) \ - { \ - if (PRESENT(q) && !PRESENT(p)) \ - _nc_warning(#q " but no " #p); \ - if (PRESENT(p) && !PRESENT(q)) \ - _nc_warning(#p " but no " #q); \ - } - -/* alloc_entry.c: elementary allocation code */ -extern NCURSES_EXPORT(ENTRY *) _nc_copy_entry (ENTRY *oldp); -extern NCURSES_EXPORT(char *) _nc_save_str (const char *const); -extern NCURSES_EXPORT(void) _nc_init_entry (TERMTYPE *const); -extern NCURSES_EXPORT(void) _nc_merge_entry (TERMTYPE *const, TERMTYPE *const); -extern NCURSES_EXPORT(void) _nc_wrap_entry (ENTRY *const, bool); - -/* alloc_ttype.c: elementary allocation code */ -extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE *, TERMTYPE *); -extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, TERMTYPE *); - -/* free_ttype.c: elementary allocation code */ -extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *); - -/* lib_acs.c */ -extern NCURSES_EXPORT(void) _nc_init_acs (void); /* corresponds to traditional 'init_acs()' */ - -/* lib_termcap.c: trim sgr0 string for termcap users */ -extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE *); - -/* parse_entry.c: entry-parsing code */ -#if NCURSES_XNAMES -extern NCURSES_EXPORT_VAR(bool) _nc_user_definable; -extern NCURSES_EXPORT_VAR(bool) _nc_disable_period; -#endif -extern NCURSES_EXPORT(int) _nc_parse_entry (ENTRY *, int, bool); -extern NCURSES_EXPORT(int) _nc_capcmp (const char *, const char *); - -/* write_entry.c: writing an entry to the file system */ -extern NCURSES_EXPORT(void) _nc_set_writedir (char *); -extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE *const); - -/* comp_parse.c: entry list handling */ -extern NCURSES_EXPORT(void) _nc_read_entry_source (FILE*, char*, int, bool, bool (*)(ENTRY*)); -extern NCURSES_EXPORT(bool) _nc_entry_match (char *, char *); -extern NCURSES_EXPORT(int) _nc_resolve_uses (bool); /* obs 20040705 */ -extern NCURSES_EXPORT(int) _nc_resolve_uses2 (bool, bool); -extern NCURSES_EXPORT(void) _nc_free_entries (ENTRY *); -extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */ -extern NCURSES_IMPEXP void NCURSES_API (*_nc_check_termtype2)(TERMTYPE *, bool); - -/* trace_xnames.c */ -extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *); - -#ifdef __cplusplus -} -#endif - -#endif /* NCURSES_TERM_ENTRY_H_incl */ diff --git a/deps/ncurses-5.9/include/termcap.h b/deps/ncurses-5.9/include/termcap.h deleted file mode 100644 index 13314dc..0000000 --- a/deps/ncurses-5.9/include/termcap.h +++ /dev/null @@ -1,75 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998,2000 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - ****************************************************************************/ - -/* $Id: termcap.h.in,v 1.16 2001/03/24 21:53:27 tom Exp $ */ - -#ifndef NCURSES_TERMCAP_H_incl -#define NCURSES_TERMCAP_H_incl 1 - -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.9" - -#include - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#include - -#undef NCURSES_CONST -#define NCURSES_CONST /*nothing*/ - -#undef NCURSES_OSPEED -#define NCURSES_OSPEED short - -extern NCURSES_EXPORT_VAR(char) PC; -extern NCURSES_EXPORT_VAR(char *) UP; -extern NCURSES_EXPORT_VAR(char *) BC; -extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed; - -#if !defined(NCURSES_TERM_H_incl) -extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **); -extern NCURSES_EXPORT(char *) tgoto (const char *, int, int); -extern NCURSES_EXPORT(int) tgetent (char *, const char *); -extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int)); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* NCURSES_TERMCAP_H_incl */ diff --git a/deps/ncurses-5.9/include/tic.h b/deps/ncurses-5.9/include/tic.h deleted file mode 100644 index 4f3a21c..0000000 --- a/deps/ncurses-5.9/include/tic.h +++ /dev/null @@ -1,346 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2009 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996 on * - ****************************************************************************/ - -/* - * $Id: tic.h,v 1.65 2009/08/08 17:52:46 tom Exp $ - * tic.h - Global variables and structures for the terminfo - * compiler. - */ - -#ifndef __TIC_H -#define __TIC_H - -#ifdef __cplusplus -extern "C" { -#endif - -#include /* for the _tracef() prototype, ERR/OK, bool defs */ - -/* -** The format of compiled terminfo files is as follows: -** -** Header (12 bytes), containing information given below -** Names Section, containing the names of the terminal -** Boolean Section, containing the values of all of the -** boolean capabilities -** A null byte may be inserted here to make -** sure that the Number Section begins on an -** even word boundary. -** Number Section, containing the values of all of the numeric -** capabilities, each as a short integer -** String Section, containing short integer offsets into the -** String Table, one per string capability -** String Table, containing the actual characters of the string -** capabilities. -** -** NOTE that all short integers in the file are stored using VAX/PDP-style -** byte-order, i.e., least-significant byte first. -** -** There is no structure definition here because it would only confuse -** matters. Terminfo format is a raw byte layout, not a structure -** dump. If you happen to be on a little-endian machine with 16-bit -** shorts that requires no padding between short members in a struct, -** then there is a natural C structure that captures the header, but -** not very helpfully. -*/ - -#define MAGIC 0432 /* first two bytes of a compiled entry */ - -#undef BYTE -#define BYTE(p,n) (unsigned char)((p)[n]) - -#define IS_NEG1(p) ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377)) -#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377)) -#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1)) - -#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC) - -/* - * The "maximum" here is misleading; XSI guarantees minimum values, which a - * given implementation may exceed. - */ -#define MAX_NAME_SIZE 512 /* maximum legal name field size (XSI:127) */ -#define MAX_ENTRY_SIZE 4096 /* maximum legal entry size */ - -/* - * The maximum size of individual name or alias is guaranteed in XSI to be at - * least 14, since that corresponds to the older filename lengths. Newer - * systems allow longer aliases, though not many terminal descriptions are - * written to use them. The MAX_ALIAS symbol is used for warnings. - */ -#if HAVE_LONG_FILE_NAMES -#define MAX_ALIAS 32 /* smaller than POSIX minimum for PATH_MAX */ -#else -#define MAX_ALIAS 14 /* SVr3 filename length */ -#endif - -/* location of user's personal info directory */ -#define PRIVATE_INFO "%s/.terminfo" /* plug getenv("HOME") into %s */ - -/* - * Some traces are designed to be used via tic's verbose option (and similar in - * infocmp and toe) rather than the 'trace()' function. So we use the bits - * above the normal trace() parameter as a debug-level. - */ - -#define MAX_DEBUG_LEVEL 15 -#define DEBUG_LEVEL(n) ((n) << TRACE_SHIFT) - -#define set_trace_level(n) \ - _nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL), \ - _nc_tracing |= DEBUG_LEVEL(n) - -#ifdef TRACE -#define DEBUG(n, a) if (_nc_tracing >= DEBUG_LEVEL(n)) _tracef a -#else -#define DEBUG(n, a) /*nothing*/ -#endif - -extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing; -extern NCURSES_EXPORT(void) _nc_tracef (char *, ...) GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *); -extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *); - -/* - * These are the types of tokens returned by the scanner. The first - * three are also used in the hash table of capability names. The scanner - * returns one of these values after loading the specifics into the global - * structure curr_token. - */ - -#define BOOLEAN 0 /* Boolean capability */ -#define NUMBER 1 /* Numeric capability */ -#define STRING 2 /* String-valued capability */ -#define CANCEL 3 /* Capability to be cancelled in following tc's */ -#define NAMES 4 /* The names for a terminal type */ -#define UNDEF 5 /* Undefined */ - -#define NO_PUSHBACK -1 /* used in pushtype to indicate no pushback */ - - /* - * The global structure in which the specific parts of a - * scanned token are returned. - * - */ - -struct token -{ - char *tk_name; /* name of capability */ - int tk_valnumber; /* value of capability (if a number) */ - char *tk_valstring; /* value of capability (if a string) */ -}; - -extern NCURSES_EXPORT_VAR(struct token) _nc_curr_token; - - /* - * Offsets to string capabilities, with the corresponding functionkey - * codes. - */ -struct tinfo_fkeys { - unsigned offset; - chtype code; - }; - -#if BROKEN_LINKER - -#define _nc_tinfo_fkeys _nc_tinfo_fkeysf() -extern NCURSES_EXPORT(const struct tinfo_fkeys *) _nc_tinfo_fkeysf (void); - -#else - -extern NCURSES_EXPORT_VAR(const struct tinfo_fkeys) _nc_tinfo_fkeys[]; - -#endif - -typedef short HashValue; - - /* - * The file comp_captab.c contains an array of these structures, one - * per possible capability. These are indexed by a hash table array of - * pointers to the same structures for use by the parser. - */ - -struct name_table_entry -{ - const char *nte_name; /* name to hash on */ - int nte_type; /* BOOLEAN, NUMBER or STRING */ - HashValue nte_index; /* index of associated variable in its array */ - HashValue nte_link; /* index in table of next hash, or -1 */ -}; - - /* - * Use this structure to hide differences between terminfo and termcap - * tables. - */ -typedef struct { - unsigned table_size; - const HashValue *table_data; - HashValue (*hash_of)(const char *); - int (*compare_names)(const char *, const char *); -} HashData; - -struct alias -{ - const char *from; - const char *to; - const char *source; -}; - -extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool); -extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool); -extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool); -extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool); - -#define NOTFOUND ((struct name_table_entry *) 0) - -/* out-of-band values for representing absent capabilities */ -#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */ -#define ABSENT_NUMERIC (-1) -#define ABSENT_STRING (char *)0 - -/* out-of-band values for representing cancels */ -#define CANCELLED_BOOLEAN ((signed char)-2) /* 254 */ -#define CANCELLED_NUMERIC (-2) -#define CANCELLED_STRING (char *)(-1) - -#define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */ -#define VALID_NUMERIC(s) ((s) >= 0) -#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING) - -/* termcap entries longer than this may break old binaries */ -#define MAX_TERMCAP_LENGTH 1023 - -/* this is a documented limitation of terminfo */ -#define MAX_TERMINFO_LENGTH 4096 - -#ifndef TERMINFO -#define TERMINFO "/usr/share/terminfo" -#endif - -/* access.c */ -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(char *) _nc_basename (char *); -extern NCURSES_EXPORT(char *) _nc_rootname (char *); - -/* comp_hash.c: name lookup */ -extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry - (const char *, const HashValue *); -extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_type_entry - (const char *, int, bool); - -/* comp_scan.c: lexical analysis */ -extern NCURSES_EXPORT(int) _nc_get_token (bool); -extern NCURSES_EXPORT(void) _nc_panic_mode (char); -extern NCURSES_EXPORT(void) _nc_push_token (int); -extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *); -extern NCURSES_EXPORT_VAR(int) _nc_curr_col; -extern NCURSES_EXPORT_VAR(int) _nc_curr_line; -extern NCURSES_EXPORT_VAR(int) _nc_syntax; -extern NCURSES_EXPORT_VAR(long) _nc_comment_end; -extern NCURSES_EXPORT_VAR(long) _nc_comment_start; -extern NCURSES_EXPORT_VAR(long) _nc_curr_file_pos; -extern NCURSES_EXPORT_VAR(long) _nc_start_line; -#define SYN_TERMINFO 0 -#define SYN_TERMCAP 1 - -/* comp_error.c: warning & abort messages */ -extern NCURSES_EXPORT(const char *) _nc_get_source (void); -extern NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN; -extern NCURSES_EXPORT(void) _nc_get_type (char *name); -extern NCURSES_EXPORT(void) _nc_set_source (const char *const); -extern NCURSES_EXPORT(void) _nc_set_type (const char *const); -extern NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFLIKE(1,2) GCC_NORETURN; -extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings; - -/* comp_expand.c: expand string into readable form */ -extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int); - -/* comp_scan.c: decode string from readable form */ -extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *); - -/* captoinfo.c: capability conversion */ -extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const); -extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int const); - -/* home_terminfo.c */ -extern NCURSES_EXPORT(char *) _nc_home_terminfo (void); - -/* lib_tparm.c */ -#define NUM_PARM 9 - -extern NCURSES_EXPORT_VAR(int) _nc_tparm_err; - -extern NCURSES_EXPORT(int) _nc_tparm_analyze(const char *, char **, int *); - -/* lib_tputs.c */ -extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */ - -/* comp_main.c: compiler main */ -extern const char * _nc_progname; - -/* db_iterator.c */ -typedef enum { - dbdTIC = 0, -#if USE_DATABASE - dbdEnvOnce, - dbdHome, - dbdEnvList, - dbdCfgList, - dbdCfgOnce, -#endif -#if USE_TERMCAP - dbdEnvOnce2, - dbdEnvList2, - dbdCfgList2, -#endif - dbdLAST -} DBDIRS; - -extern NCURSES_EXPORT(const char *) _nc_next_db(DBDIRS *, int *); -extern NCURSES_EXPORT(const char *) _nc_tic_dir (const char *); -extern NCURSES_EXPORT(void) _nc_first_db(DBDIRS *, int *); -extern NCURSES_EXPORT(void) _nc_last_db(void); - -/* write_entry.c */ -extern NCURSES_EXPORT(int) _nc_tic_written (void); - -#ifdef __cplusplus -} -#endif - -#endif /* __TIC_H */ diff --git a/deps/ncurses-5.9/include/unctrl.h b/deps/ncurses-5.9/include/unctrl.h deleted file mode 100644 index ff844d7..0000000 --- a/deps/ncurses-5.9/include/unctrl.h +++ /dev/null @@ -1,67 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2009 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - ****************************************************************************/ - -/* - * unctrl.h - * - * Display a printable version of a control character. - * Control characters are displayed in caret notation (^x), DELETE is displayed - * as ^?. Printable characters are displayed as is. - */ - -/* $Id: unctrl.h.in,v 1.11 2009/04/18 21:00:52 tom Exp $ */ - -#ifndef NCURSES_UNCTRL_H_incl -#define NCURSES_UNCTRL_H_incl 1 - -#undef NCURSES_VERSION -#define NCURSES_VERSION "5.9" - -#ifdef __cplusplus -extern "C" { -#endif - -#include - -#undef unctrl -NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype); - -#if 0 -NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(unctrl) (SCREEN*, chtype); -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* NCURSES_UNCTRL_H_incl */ diff --git a/deps/ncurses-5.9/lib/libform.a b/deps/ncurses-5.9/lib/libform.a deleted file mode 100644 index 4d19d11..0000000 Binary files a/deps/ncurses-5.9/lib/libform.a and /dev/null differ diff --git a/deps/ncurses-5.9/lib/libmenu.a b/deps/ncurses-5.9/lib/libmenu.a deleted file mode 100644 index 65e0c00..0000000 Binary files a/deps/ncurses-5.9/lib/libmenu.a and /dev/null differ diff --git a/deps/ncurses-5.9/lib/libncurses++.a b/deps/ncurses-5.9/lib/libncurses++.a deleted file mode 100644 index 60bd087..0000000 Binary files a/deps/ncurses-5.9/lib/libncurses++.a and /dev/null differ diff --git a/deps/ncurses-5.9/lib/libncurses.a b/deps/ncurses-5.9/lib/libncurses.a deleted file mode 100644 index 49e5b3f..0000000 Binary files a/deps/ncurses-5.9/lib/libncurses.a and /dev/null differ diff --git a/deps/ncurses-5.9/lib/libpanel.a b/deps/ncurses-5.9/lib/libpanel.a deleted file mode 100644 index a0be911..0000000 Binary files a/deps/ncurses-5.9/lib/libpanel.a and /dev/null differ diff --git a/deps/ncurses-5.9/lib/libtinfo.a b/deps/ncurses-5.9/lib/libtinfo.a deleted file mode 100644 index 6282ce1..0000000 Binary files a/deps/ncurses-5.9/lib/libtinfo.a and /dev/null differ diff --git a/deps/ncurses-5.9/man/MKada_config.in b/deps/ncurses-5.9/man/MKada_config.in deleted file mode 100644 index 2be3c41..0000000 --- a/deps/ncurses-5.9/man/MKada_config.in +++ /dev/null @@ -1,57 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2010,2011 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. * -.\"*************************************************************************** -.\" -.\" $Id: MKada_config.in,v 1.5 2011/03/26 14:44:51 tom Exp $ -.TH ADACURSES "1" "" "" "User Commands" -.SH NAME -adacurses\-config \- helper script for AdaCurses libraries -.SH SYNOPSIS -.B adacurses\-config -[\fIoptions\fR] -.SH DESCRIPTION -This is a shell script which simplifies configuring an application to use -the AdaCurses library binding to ncurses. -.SH OPTIONS -.TP -\fB\-\-cflags\fR -echos the gnat (Ada compiler) flags needed to compile with AdaCurses. -.TP -\fB\-\-libs\fR -echos the gnat libraries needed to link with AdaCurses. -.TP -\fB\-\-version\fR -echos the release+patchdate version of the ncurses libraries used -to configure and build AdaCurses. -.TP -\fB\-\-help\fR -prints a list of the \fBadacurses\-config\fP script's options. -.SH "SEE ALSO" -\fBcurses\fR(3X) -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/man/Makefile b/deps/ncurses-5.9/man/Makefile deleted file mode 100644 index ae7d3cc..0000000 --- a/deps/ncurses-5.9/man/Makefile +++ /dev/null @@ -1,81 +0,0 @@ -# $Id: Makefile.in,v 1.45 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2007,2010 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: Thomas E. Dickey 1996,1997 -# -# Makefile for ncurses manual pages. -# -# NOTE: When you add or rename a man page, make sure you update both -# the top-level MANIFEST and any man/*.renames files! - -SHELL = /bin/sh - - -DESTDIR = -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -datadir = ${prefix}/share -mandir = ${prefix}/man - -INSTALL = /bin/install -c -INSTALL_DATA = ${INSTALL} -m 644 - -all \ -sources : terminfo.5 -depend : -tags : - -$(DESTDIR)$(mandir) : - mkdir -p $@ - -EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]* - -install install.man : terminfo.5 $(DESTDIR)$(mandir) - sh ../edit_man.sh normal installing $(EDITARGS) - -uninstall uninstall.man : - -sh ../edit_man.sh normal removing $(EDITARGS) - -# We compose terminfo.5 from the real sources... -CAPLIST=$(srcdir)/../include/Caps -terminfo.5: $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail Makefile $(srcdir)/MKterminfo.sh - sh $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5 - -mostlyclean : - -rm -f core tags TAGS *~ *.bak *.ln *.atac trace - -clean: mostlyclean - rm -f terminfo.5 - -../edit_man.sed : make_sed.sh no - sh $(srcdir)/make_sed.sh no >../edit_man.sed - -distclean realclean: clean - rm -f Makefile *-config.1 ../edit_man.* ../man_alias.* diff --git a/deps/ncurses-5.9/man/Makefile.in b/deps/ncurses-5.9/man/Makefile.in deleted file mode 100644 index 82a6706..0000000 --- a/deps/ncurses-5.9/man/Makefile.in +++ /dev/null @@ -1,81 +0,0 @@ -# $Id: Makefile.in,v 1.45 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2007,2010 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: Thomas E. Dickey 1996,1997 -# -# Makefile for ncurses manual pages. -# -# NOTE: When you add or rename a man page, make sure you update both -# the top-level MANIFEST and any man/*.renames files! - -SHELL = /bin/sh -VPATH = @srcdir@ - -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = @datadir@ -mandir = @mandir@ - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ - -all \ -sources : terminfo.5 -depend : -tags : - -$(DESTDIR)$(mandir) : - mkdir -p $@ - -EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]* - -install install.man : terminfo.5 $(DESTDIR)$(mandir) - sh ../edit_man.sh normal installing $(EDITARGS) - -uninstall uninstall.man : - -sh ../edit_man.sh normal removing $(EDITARGS) - -# We compose terminfo.5 from the real sources... -CAPLIST=$(srcdir)/../include/@TERMINFO_CAPS@ -terminfo.5: $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail Makefile $(srcdir)/MKterminfo.sh - sh $(srcdir)/MKterminfo.sh $(srcdir)/terminfo.head $(CAPLIST) $(srcdir)/terminfo.tail >terminfo.5 - -mostlyclean : - -rm -f core tags TAGS *~ *.bak *.ln *.atac trace - -clean: mostlyclean - rm -f terminfo.5 - -../edit_man.sed : make_sed.sh @MANPAGE_RENAMES@ - sh $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed - -distclean realclean: clean - rm -f Makefile *-config.1 ../edit_man.* ../man_alias.* diff --git a/deps/ncurses-5.9/man/clear.1 b/deps/ncurses-5.9/man/clear.1 deleted file mode 100644 index b70d37e..0000000 --- a/deps/ncurses-5.9/man/clear.1 +++ /dev/null @@ -1,47 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: clear.1,v 1.8 2010/12/04 18:36:44 tom Exp $ -.TH @CLEAR@ 1 "" -.ds n 5 -.SH NAME -\fB@CLEAR@\fR \- clear the terminal screen -.SH SYNOPSIS -\fB@CLEAR@\fR -.br -.SH DESCRIPTION -\fB@CLEAR@\fR clears your screen if this is possible. It looks in the -environment for the terminal type and then in the \fBterminfo\fR database to -figure out how to clear the screen. -.PP -\fB@CLEAR@\fR ignores any command-line parameters that may be present. -.SH SEE ALSO -\fB@TPUT@\fR(1), \fBterminfo\fR(\*n) -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/man/curs_add_wch.3x b/deps/ncurses-5.9/man/curs_add_wch.3x deleted file mode 100644 index 26319a8..0000000 --- a/deps/ncurses-5.9/man/curs_add_wch.3x +++ /dev/null @@ -1,224 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2001-2010,2011 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_add_wch.3x,v 1.14 2011/01/15 15:27:43 tom Exp $ -.TH curs_add_wch 3X "" -.de bP -.IP \(bu 4 -.. -.SH NAME -\fBadd_wch\fP, -\fBwadd_wch\fP, -\fBmvadd_wch\fP, -\fBmvwadd_wch\fP, -\fBecho_wchar\fP, -\fBwecho_wchar\fP \- add a complex character and rendition to a \fBcurses\fR window, then advance the cursor -.SH SYNOPSIS -.PP -\fB#include \fP -.sp -.B "int add_wch( const cchar_t *\fIwch\fB );" -.br -.B "int wadd_wch( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );" -.br -.B "int mvadd_wch( int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );" -.br -.B "int mvwadd_wch( WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );" -.br -.B "int echo_wchar( const cchar_t *\fIwch\fB );" -.br -.B "int wecho_wchar( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );" -.br -.SH DESCRIPTION -.PP -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: -.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 to -the next spacing character on the screen. -.bP -If \fIwch\fP refers to a non-spacing character, -all previous characters at that location are preserved. -The non-spacing characters of \fIwch\fP -are added to the spacing complex character, -and the rendition specified by \fIwch\fP is ignored. -.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\fR were called. -.PP -The \fBecho_wchar\fP -function is functionally equivalent to a call to -\fBadd_wch\fP -followed by a call to -\fBrefresh\fP. -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 \fBaddch\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 -\fBaddch\fP(3X). -.PP -.TS -l l l l -_ _ _ _ -lw(1.5i) lw7 lw7 lw20. -\fIName\fR \fIUnicode\fP \fIDefault\fR \fIDescription\fR -WACS_BLOCK 0x25ae # solid square block -WACS_BOARD 0x2592 # board of squares -WACS_BTEE 0x2534 + bottom tee -WACS_BULLET 0x00b7 o bullet -WACS_CKBOARD 0x2592 : checker board (stipple) -WACS_DARROW 0x2193 v arrow pointing down -WACS_DEGREE 0x00b0 ' degree symbol -WACS_DIAMOND 0x25c6 + diamond -WACS_GEQUAL 0x2265 > greater-than-or-equal-to -WACS_HLINE 0x2500 \- horizontal line -WACS_LANTERN 0x2603 # lantern symbol -WACS_LARROW 0x2190 < arrow pointing left -WACS_LEQUAL 0x2264 < less-than-or-equal-to -WACS_LLCORNER 0x2514 + lower left-hand corner -WACS_LRCORNER 0x2518 + lower right-hand corner -WACS_LTEE 0x2524 + left tee -WACS_NEQUAL 0x2260 ! not-equal -WACS_PI 0x03c0 * greek pi -WACS_PLMINUS 0x00b1 # plus/minus -WACS_PLUS 0x253c + plus -WACS_RARROW 0x2192 > arrow pointing right -WACS_RTEE 0x251c + right tee -WACS_S1 0x23ba \- scan line 1 -WACS_S3 0x23bb \- scan line 3 -WACS_S7 0x23bc \- scan line 7 -WACS_S9 0x23bd \&_ scan line 9 -WACS_STERLING 0x00a3 f pound-sterling symbol -WACS_TTEE 0x252c + top tee -WACS_UARROW 0x2191 ^ arrow pointing up -WACS_ULCORNER 0x250c + upper left-hand corner -WACS_URCORNER 0x2510 + upper right-hand corner -WACS_VLINE 0x2502 | vertical line -.TE -.PP -The wide-character configuration of ncurses also defines symbols -for thick- and double-lines: -.PP -.TS -l l l l -_ _ _ _ -lw(1.5i) lw7 lw7 lw20. -\fIName\fR \fIUnicode\fP \fIDefault\fR \fIDescription\fR -WACS_T_ULCORNER 0x250f + thick upper left corner -WACS_T_LLCORNER 0x2517 + thick lower left corner -WACS_T_URCORNER 0x2513 + thick upper right corner -WACS_T_LRCORNER 0x251b + thick lower right corner -WACS_T_LTEE 0x252b + thick tee pointing right -WACS_T_RTEE 0x2523 + thick tee pointing left -WACS_T_BTEE 0x253b + thick tee pointing up -WACS_T_TTEE 0x2533 + thick tee pointing down -WACS_T_HLINE 0x2501 - thick horizontal line -WACS_T_VLINE 0x2503 | thick vertical line -WACS_T_PLUS 0x254b + thick large plus or crossover -WACS_D_ULCORNER 0x2554 + double upper left corner -WACS_D_LLCORNER 0x255a + double lower left corner -WACS_D_URCORNER 0x2557 + double upper right corner -WACS_D_LRCORNER 0x255d + double lower right corner -WACS_D_RTEE 0x2563 + double tee pointing left -WACS_D_LTEE 0x2560 + double tee pointing right -WACS_D_BTEE 0x2569 + double tee pointing up -WACS_D_TTEE 0x2566 + double tee pointing down -WACS_D_HLINE 0x2550 - double horizontal line -WACS_D_VLINE 0x2551 | double vertical line -WACS_D_PLUS 0x256c + double large plus or crossover -.TE -.SH RETURN VALUES -.PP -All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -.PP -Note that -\fBadd_wch\fP, -\fBmvadd_wch\fP, -\fBmvwadd_wch\fP, and -\fBecho_wchar\fP -may be macros. -.SH PORTABILITY -.PP -All of these functions are described in the XSI Curses standard, Issue 4. -The defaults specified for line-drawing characters apply in the POSIX locale. -.PP -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\fR. -A few implementations are problematic: -.bP -NetBSD curses defines the symbols as a \fBwchar_t\fP within a \fBcchar_t\fP. -.bP -HPUX curses equates some of the \fIACS_\fP symbols -to the analogous \fIWACS_\fP symbols as if the \fIACS_\fP 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 define 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. -.SH SEE ALSO -.PP -\fBcurses\fR(3X), -\fBcurs_addch\fR(3X), -\fBcurs_attr\fR(3X), -\fBcurs_clear\fR(3X), -\fBcurs_outopts\fR(3X), -\fBcurs_refresh\fR(3X), -\fBputwc\fR(3) diff --git a/deps/ncurses-5.9/man/curs_add_wchstr.3x b/deps/ncurses-5.9/man/curs_add_wchstr.3x deleted file mode 100644 index 957adc0..0000000 --- a/deps/ncurses-5.9/man/curs_add_wchstr.3x +++ /dev/null @@ -1,95 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2002-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_add_wchstr.3x,v 1.9 2010/12/04 18:36:44 tom Exp $ -.TH curs_add_wchstr 3X "" -.SH NAME -\fBadd_wchstr\fR, -\fBadd_wchnstr\fR, -\fBwadd_wchstr\fR, -\fBwadd_wchnstr\fR, -\fBmvadd_wchstr\fR, -\fBmvadd_wchnstr\fR, -\fBmvwadd_wchstr\fR, -\fBmvwadd_wchnstr\fR \- add an array of complex characters (and attributes) to a curses window -.SH SYNOPSIS -.B #include -.PP -.nf -\fBint add_wchstr(const cchar_t *\fR\fIwchstr\fR\fB);\fR -.br -\fBint add_wchnstr(const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint wadd_wchstr(WINDOW *\fR \fIwin\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB);\fR -.br -\fBint wadd_wchnstr(WINDOW *\fR \fIwin\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvadd_wchstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB);\fR -.br -\fBint mvadd_wchnstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvwadd_wchstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB);\fR -.br -\fBint mvwadd_wchnstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR -.fi -.SH DESCRIPTION -These routines copy the array of complex characters \fIwchstr\fR -into the window image structure at and after the current cursor position. -The four routines with \fIn\fR as the last -argument copy at most \fIn\fR elements, but no more than will fit on the line. -If \fBn\fR=\fB\-1\fR then the whole array is copied, -to the maximum number of characters that will fit on the line. -.PP -The window cursor is \fInot\fR advanced. -These routines work faster than \fBwaddnstr\fR. -On the other hand, they do not perform checking -(such as for the newline, backspace, or carriage return characters), -they do not advance the current cursor position, -they do not expand other control characters to ^-escapes, -and they truncate the string if it crosses the right margin, -rather than wrapping it around to the new line. -.PP -These routines end successfully -on encountering a null \fIcchar_t\fR, 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. -.SH NOTES -All functions except \fBwadd_wchnstr\fR may be macros. -.SH RETURN VALUES -All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH PORTABILITY -All these entry points are described in the XSI Curses standard, Issue 4. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_addchstr\fR(3X), -\fBcurs_addwstr\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_addch.3x b/deps/ncurses-5.9/man/curs_addch.3x deleted file mode 100644 index 1ad071a..0000000 --- a/deps/ncurses-5.9/man/curs_addch.3x +++ /dev/null @@ -1,187 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2010,2011 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_addch.3x,v 1.32 2011/01/15 14:15:10 tom Exp $ -.TH curs_addch 3X "" -.SH NAME -\fBaddch\fR, -\fBwaddch\fR, -\fBmvaddch\fR, -\fBmvwaddch\fR, -\fBechochar\fR, -\fBwechochar\fR \- add a character (with attributes) to a \fBcurses\fR window, then advance the cursor -.SH SYNOPSIS -\fB#include \fR -.PP -\fBint addch(const chtype ch);\fR -.br -\fBint waddch(WINDOW *win, const chtype ch);\fR -.br -\fBint mvaddch(int y, int x, const chtype ch);\fR -.br -\fBint mvwaddch(WINDOW *win, int y, int x, const chtype ch);\fR -.br -\fBint echochar(const chtype ch);\fR -.br -\fBint wechochar(WINDOW *win, const chtype ch);\fR -.br -.SH DESCRIPTION -The \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR and \fBmvwaddch\fR routines put -the character \fIch\fR into the given window at its current window position, -which is then advanced. They are analogous to \fBputchar\fR in \fBstdio\fR(3). -If the advance is at the right margin, the cursor automatically wraps to the -beginning of the next line. At the bottom of the current scrolling region, if -\fBscrollok\fR is enabled, the scrolling region is scrolled up one line. -.PP -If \fIch\fR is a tab, newline, or backspace, -the cursor is moved appropriately within the window. -Backspace moves the cursor one character left; at the left -edge of a window it does nothing. -Newline does a \fBclrtoeol\fR, -then moves the cursor to the window left margin on the next line, -scrolling the window if on the last line. -Tabs are considered to be at every eighth column. -The tab interval may be altered by setting the \fBTABSIZE\fR variable. -.PP -If \fIch\fR is any control character other than tab, newline, or backspace, it -is drawn in \fB^\fR\fIX\fR notation. Calling \fBwinch\fR after adding a -control character does not return the character itself, but instead returns -the ^-representation of the control character. -.PP -Video attributes can be combined with a character argument passed to -\fBaddch\fR or related functions by logical-ORing them into the character. -(Thus, text, including attributes, can be copied from one place to another -using \fBinch\fR and \fBaddch\fR.) See the \fBcurs_attr\fR(3X) page for -values of predefined video attribute constants that can be usefully OR'ed -into characters. -.PP -The \fBechochar\fR and \fBwechochar\fR routines are equivalent to a call to -\fBaddch\fR followed by a call to \fBrefresh\fR, or a call to \fBwaddch\fR -followed by a call to \fBwrefresh\fR. The knowledge that only a single -character is being output is used and, for non-control characters, a -considerable performance gain may be seen by using these routines instead of -their equivalents. -.SS Line Graphics -The following variables may be used to add line drawing characters to the -screen with routines of the \fBaddch\fR family. The default character listed -below is used if the \fBacsc\fR capability does not define a terminal-specific -replacement for it. -The names are taken from VT100 nomenclature. -.PP -.TS -l l l -_ _ _ -l l l. -\fIName\fR \fIDefault\fR \fIDescription\fR -ACS_BLOCK # solid square block -ACS_BOARD # board of squares -ACS_BTEE + bottom tee -ACS_BULLET o bullet -ACS_CKBOARD : checker board (stipple) -ACS_DARROW v arrow pointing down -ACS_DEGREE ' degree symbol -ACS_DIAMOND + diamond -ACS_GEQUAL > greater-than-or-equal-to -ACS_HLINE \- horizontal line -ACS_LANTERN # lantern symbol -ACS_LARROW < arrow pointing left -ACS_LEQUAL < less-than-or-equal-to -ACS_LLCORNER + lower left-hand corner -ACS_LRCORNER + lower right-hand corner -ACS_LTEE + left tee -ACS_NEQUAL ! not-equal -ACS_PI * greek pi -ACS_PLMINUS # plus/minus -ACS_PLUS + plus -ACS_RARROW > arrow pointing right -ACS_RTEE + right tee -ACS_S1 \- scan line 1 -ACS_S3 \- scan line 3 -ACS_S7 \- scan line 7 -ACS_S9 \&_ scan line 9 -ACS_STERLING f pound-sterling symbol -ACS_TTEE + top tee -ACS_UARROW ^ arrow pointing up -ACS_ULCORNER + upper left-hand corner -ACS_URCORNER + upper right-hand corner -ACS_VLINE | vertical line -.TE -.SH RETURN VALUE -All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success -(the SVr4 manuals specify only "an integer value other than \fBERR\fR") upon -successful completion, unless otherwise noted in the preceding routine -descriptions. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that \fBaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR, and -\fBechochar\fR may be macros. -.SH PORTABILITY -All these functions are described in the XSI Curses standard, Issue 4. -The defaults specified for forms-drawing characters apply in the POSIX locale. -.LP -X/Open Curses states that the \fIACS_\fP definitions are \fBchar\fP constants. -For the wide-character implementation (see \fBcurs_add_wch\fP), -there are analogous \fIWACS_\fP definitions which are \fBcchar_t\fP constants. -.LP -Some ACS symbols -(ACS_S3, -ACS_S7, -ACS_LEQUAL, -ACS_GEQUAL, -ACS_PI, -ACS_NEQUAL, -ACS_STERLING) -were not documented in -any publicly released System V. However, many publicly available terminfos -include \fBacsc\fR strings in which their key characters (pryz{|}) are -embedded, and a second-hand list of their character descriptions has come -to light. The ACS-prefixed names for them were invented for \fBncurses\fR(3X). -.LP -The \fBTABSIZE\fR variable is implemented in some versions of curses, -but is not part of X/Open curses. -.LP -If \fIch\fR is a carriage return, -the cursor is moved to the beginning of the current row of the window. -This is true of other implementations, but is not documented. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_attr\fR(3X), -\fBcurs_clear\fR(3X), -\fBcurs_inch\fR(3X), -\fBcurs_outopts\fR(3X), -\fBcurs_refresh\fR(3X), -\fBcurs_variables\fR(3X), -\fBputc\fR(3). -.PP -Comparable functions in the wide-character (ncursesw) library are -described in -\fBcurs_add_wch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_addchstr.3x b/deps/ncurses-5.9/man/curs_addchstr.3x deleted file mode 100644 index 1547219..0000000 --- a/deps/ncurses-5.9/man/curs_addchstr.3x +++ /dev/null @@ -1,97 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_addchstr.3x,v 1.15 2010/12/04 18:36:44 tom Exp $ -.TH curs_addchstr 3X "" -.na -.hy 0 -.SH NAME -\fBaddchstr\fR, -\fBaddchnstr\fR, -\fBwaddchstr\fR, -\fBwaddchnstr\fR, -\fBmvaddchstr\fR, -\fBmvaddchnstr\fR, -\fBmvwaddchstr\fR, -\fBmvwaddchnstr\fR \- add a string of characters (and attributes) to a \fBcurses\fR window -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.PP -\fBint addchstr(const chtype *chstr);\fR -.br -\fBint addchnstr(const chtype *chstr, int n);\fR -.br -\fBint waddchstr(WINDOW *win, const chtype *chstr);\fR -.br -\fBint waddchnstr(WINDOW *win, const chtype *chstr, int n);\fR -.br -\fBint mvaddchstr(int y, int x, const chtype *chstr);\fR -.br -\fBint mvaddchnstr(int y, int x, const chtype *chstr, int n);\fR -.br -\fBint mvwaddchstr(WINDOW *win, int y, int x, const chtype *chstr);\fR -.br -\fBint mvwaddchnstr(WINDOW *win, int y, int x, const chtype *chstr, int n);\fR -.SH DESCRIPTION -These routines copy \fIchstr\fR into the window image structure at and after -the current cursor position. The four routines with \fIn\fR as the last -argument copy at most \fIn\fR elements, but no more than will fit on the line. -If \fBn\fR=\fB\-1\fR then the whole string is copied, to the maximum number of -characters that will fit on the line. -.PP -The window cursor is \fInot\fR advanced, and these routines work faster than -\fBwaddnstr\fR. On the other hand, they do not perform any kind of checking -(such as for the newline, backspace, or carriage return characters), they do not -advance the current cursor position, they do not expand other control characters -to ^-escapes, and they truncate the string if it crosses the right margin, -rather than wrapping it around to the new line. -.SH RETURN VALUES -All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success -(the SVr4 manuals specify only "an integer value other than \fBERR\fR") upon -successful completion, unless otherwise noted in the preceding routine -descriptions. -.PP -X/Open does not define any error conditions. -This implementation returns an error -if the window pointer is null. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that all routines except \fBwaddchnstr\fR may be macros. -.SH PORTABILITY -These entry points are described in the XSI Curses standard, Issue 4. -.SH SEE ALSO -\fBcurses\fR(3X). -.PP -Comparable functions in the wide-character (ncursesw) library are -described in -\fBcurs_add_wchstr\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_addstr.3x b/deps/ncurses-5.9/man/curs_addstr.3x deleted file mode 100644 index a52619e..0000000 --- a/deps/ncurses-5.9/man/curs_addstr.3x +++ /dev/null @@ -1,95 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_addstr.3x,v 1.16 2010/12/04 18:36:44 tom Exp $ -.TH curs_addstr 3X "" -.na -.hy 0 -.SH NAME -\fBaddstr\fR, -\fBaddnstr\fR, -\fBwaddstr\fR, -\fBwaddnstr\fR, -\fBmvaddstr\fR, -\fBmvaddnstr\fR, -\fBmvwaddstr\fR, -\fBmvwaddnstr\fR \- add a string of characters to a \fBcurses\fR window and advance cursor -.ad -.hy -.SH SYNOPSIS -.nf -\fB#include \fR -.PP -\fBint addstr(const char *\fR\fIstr\fR\fB);\fR -.br -\fBint addnstr(const char *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint waddstr(WINDOW *\fR\fIwin\fR\fB, const char *\fR\fIstr\fR\fB);\fR -.br -\fBint waddnstr(WINDOW *\fR\fIwin\fR\fB, const char *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvaddstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr\fR\fB);\fR -.br -\fBint mvaddnstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvwaddstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr\fR\fB);\fR -.br -\fBint mvwaddnstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr, int \fR\fIn\fR\fB);\fR -.fi -.SH DESCRIPTION -These routines write the characters of the (null-terminated) character string -\fIstr\fR on the given window. -It is similar to calling \fBwaddch\fR once for each character in the string. -The four routines with \fIn\fR as the last argument -write at most \fIn\fR characters. -If \fIn\fR is \-1, then the entire string will be added, -up to the maximum number of characters that will fit on the line, -or until a terminating null is reached. -.SH RETURN VALUE -All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success -(the SVr4 manuals specify only "an integer value other than \fBERR\fR") upon -successful completion. -.PP -X/Open does not define any error conditions. -This implementation returns an error -if the window pointer is null or -if the string pointer is null or -if the corresponding calls to \fBwaddch\fP return an error. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that all of these routines except \fBwaddstr\fR and \fBwaddnstr\fR may be -macros. -.SH PORTABILITY -All these entry points are described in the XSI Curses standard, Issue 4. The -XSI errors EILSEQ and EOVERFLOW, associated with extended-level conformance, -are not yet detected. -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_addch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_attr.3x b/deps/ncurses-5.9/man/curs_attr.3x deleted file mode 100644 index 67740f9..0000000 --- a/deps/ncurses-5.9/man/curs_attr.3x +++ /dev/null @@ -1,270 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_attr.3x,v 1.36 2010/12/04 18:36:44 tom Exp $ -.TH curs_attr 3X "" -.na -.hy 0 -.SH NAME -\fBattroff\fR, -\fBwattroff\fR, -\fBattron\fR, -\fBwattron\fR, -\fBattrset\fR, -\fBwattrset\fR, -\fBcolor_set\fR, -\fBwcolor_set\fR, -\fBstandend\fR, -\fBwstandend\fR, -\fBstandout\fR, -\fBwstandout\fR, -\fBattr_get\fR, -\fBwattr_get\fR, -\fBattr_off\fR, -\fBwattr_off\fR, -\fBattr_on\fR, -\fBwattr_on\fR, -\fBattr_set\fR, -\fBwattr_set\fR, -\fBchgat\fR, -\fBwchgat\fR, -\fBmvchgat\fR, -\fBmvwchgat\fR, -\fBPAIR_NUMBER\fR \- \fBcurses\fR character and window attribute control routines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.br -\fBint attroff(int attrs);\fR -.br -\fBint wattroff(WINDOW *win, int attrs);\fR -.br -\fBint attron(int attrs);\fR -.br -\fBint wattron(WINDOW *win, int attrs);\fR -.br -\fBint attrset(int attrs);\fR -.br -\fBint wattrset(WINDOW *win, int attrs);\fR -.br -\fBint color_set(short color_pair_number, void* opts);\fR -.br -\fBint wcolor_set(WINDOW *win, short color_pair_number,\fR - \fBvoid* opts);\fR -.br -\fBint standend(void);\fR -.br -\fBint wstandend(WINDOW *win);\fR -.br -\fBint standout(void);\fR -.br -\fBint wstandout(WINDOW *win);\fR -.br -\fBint attr_get(attr_t *attrs, short *pair, void *opts);\fR -.br -\fBint wattr_get(WINDOW *win, attr_t *attrs, short *pair,\fR - \fBvoid *opts);\fR -.br -\fBint attr_off(attr_t attrs, void *opts);\fR -.br -\fBint wattr_off(WINDOW *win, attr_t attrs, void *opts);\fR -.br -\fBint attr_on(attr_t attrs, void *opts);\fR -.br -\fBint wattr_on(WINDOW *win, attr_t attrs, void *opts);\fR -.br -\fBint attr_set(attr_t attrs, short pair, void *opts);\fR -.br -\fBint wattr_set(WINDOW *win, attr_t attrs, short pair, void *opts);\fR -.br -\fBint chgat(int n, attr_t attr, short color,\fR - \fBconst void *opts)\fR -.br -\fBint wchgat(WINDOW *win, int n, attr_t attr,\fR - \fBshort color, const void *opts)\fR -.br -\fBint mvchgat(int y, int x, int n, attr_t attr,\fR - \fBshort color, const void *opts)\fR -.br -\fBint mvwchgat(WINDOW *win, int y, int x, int n,\fR - \fBattr_t attr, short color, const void *opts)\fR -.br -.SH DESCRIPTION -These routines manipulate the current attributes of the named window. The -current attributes of a window apply to all characters that are written into -the window with \fBwaddch\fR, \fBwaddstr\fR and \fBwprintw\fR. Attributes are -a property of the character, and move with the character through any scrolling -and insert/delete line/character operations. To the extent possible, they are -displayed as appropriate modifications to the graphic rendition of characters -put on the screen. -.PP -The routine \fBattrset\fR sets the current attributes of the given window to -\fIattrs\fR. The routine \fBattroff\fR turns off the named attributes without -turning any other attributes on or off. The routine \fBattron\fR turns on the -named attributes without affecting any others. The routine \fBstandout\fR is -the same as \fBattron(A_STANDOUT)\fR. The routine \fBstandend\fR is the same -as \fBattrset(A_NORMAL)\fR or \fBattrset(0)\fR, that is, it turns off all -attributes. -.PP -The \fBattrset\fR and related routines do not affect the attributes used -when erasing portions of the window. -See \fBcurs_bkgd\fR(3X) for functions which modify the attributes used for -erasing and clearing. -.PP -The routine \fBcolor_set\fR sets the current color of the given window to the -foreground/background combination described by the color_pair_number. The -parameter opts is reserved for future use, applications must supply a null -pointer. -.PP -The routine \fBwattr_get\fR returns the current attribute and color pair for -the given window; \fBattr_get\fR returns the current attribute and color pair -for \fBstdscr\fR. -The remaining \fBattr_\fR* functions operate exactly like the corresponding -\fBattr\fR* functions, except that they take arguments of type \fBattr_t\fR -rather than \fBint\fR. -.PP -The routine \fBchgat\fR changes the attributes of a given number of characters -starting at the current cursor location of \fBstdscr\fR. It does not update -the cursor and does not perform wrapping. A character count of \-1 or greater -than the remaining window width means to change attributes all the way to the -end of the current line. The \fBwchgat\fR function generalizes this to any -window; the \fBmvwchgat\fR function does a cursor move before acting. In these -functions, the color argument is a color-pair index (as in the first argument -of \fIinit_pair\fR, see \fBcurs_color\fR(3X)). The \fBopts\fR argument is not -presently used, but is reserved for the future (leave it \fBNULL\fR). -.SS Attributes -The following video attributes, defined in \fB\fR, can be passed to -the routines \fBattron\fR, \fBattroff\fR, and \fBattrset\fR, or OR'd with the -characters passed to \fBaddch\fR. -.PP -.TS -center ; -l l . -\fBA_NORMAL\fR Normal display (no highlight) -\fBA_STANDOUT\fR Best highlighting mode of the terminal. -\fBA_UNDERLINE\fR Underlining -\fBA_REVERSE\fR Reverse video -\fBA_BLINK\fR Blinking -\fBA_DIM\fR Half bright -\fBA_BOLD\fR Extra bright or bold -\fBA_PROTECT\fR Protected mode -\fBA_INVIS\fR Invisible or blank mode -\fBA_ALTCHARSET\fR Alternate character set -\fBA_CHARTEXT\fR Bit-mask to extract a character -\fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR Color-pair number \fIn\fR -.TE -.PP -The following macro is the reverse of \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR: -.PP -.br -\fBPAIR_NUMBER(\fR\fIattrs\fR) Returns the pair number associated - with the \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR attribute. -.br -.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\fR. -.SH NOTES -Note that \fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR, -\fBattrset\fR, \fBwattrset\fR, \fBstandend\fR and \fBstandout\fR may be macros. -.PP -\fBCOLOR_PAIR\fP values can only be OR'd 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, ncurses ABI 4 and 5 simply OR this value within the alternate functions. -You must use ncurses ABI 6 to support more than 256 color pairs. -.SH PORTABILITY -These functions are supported in the XSI Curses standard, Issue 4. The -standard defined the dedicated type for highlights, \fBattr_t\fR, which is not -defined in SVr4 curses. The functions taking \fBattr_t\fR arguments are -not supported under SVr4. -.PP -The XSI Curses standard states that whether the traditional functions -\fBattron\fR/\fBattroff\fR/\fBattrset\fR can manipulate attributes other than -\fBA_BLINK\fR, \fBA_BOLD\fR, \fBA_DIM\fR, \fBA_REVERSE\fR, \fBA_STANDOUT\fR, or -\fBA_UNDERLINE\fR is "unspecified". Under this implementation as well as -SVr4 curses, these functions correctly manipulate all other highlights -(specifically, \fBA_ALTCHARSET\fR, \fBA_PROTECT\fR, and \fBA_INVIS\fR). -.PP -XSI Curses added the new entry points, \fBattr_get\fR, \fBattr_on\fR, -\fBattr_off\fR, \fBattr_set\fR, \fBwattr_on\fR, \fBwattr_off\fR, -\fBwattr_get\fR, \fBwattr_set\fR. These are intended to work with -a new series of highlight macros prefixed with \fBWA_\fR. -.PP -Older versions of this library did not force an update of the screen -when changing the attributes. -Use \fBtouchwin\fR to force the screen to match the updated attributes. -.PP -.ne 9 -.TS -center ; -l l . -\fBWA_NORMAL\fR Normal display (no highlight) -\fBWA_STANDOUT\fR Best highlighting mode of the terminal. -\fBWA_UNDERLINE\fR Underlining -\fBWA_REVERSE\fR Reverse video -\fBWA_BLINK\fR Blinking -\fBWA_DIM\fR Half bright -\fBWA_BOLD\fR Extra bright or bold -\fBWA_ALTCHARSET\fR Alternate character set -.TE -.PP -The XSI curses standard specifies that each pair of corresponding \fBA_\fR -and \fBWA_\fR-using functions operates on the same current-highlight -information. -.PP -The XSI standard extended conformance level adds new highlights -\fBA_HORIZONTAL\fR, \fBA_LEFT\fR, \fBA_LOW\fR, \fBA_RIGHT\fR, \fBA_TOP\fR, -\fBA_VERTICAL\fR (and corresponding \fBWA_\fR macros for each) which this -implementation does not yet support. -.SH RETURN VALUE -All routines return the integer \fBOK\fR on success, or \fBERR\fP on failure. -.PP -X/Open does not define any error conditions. -.PP -This implementation returns an error -if the window pointer is null. -The \fBwcolor_set\fP function returns an error if the color pair parameter -is outside the range 0..COLOR_PAIRS\-1. -This implementation also provides -\fBgetattrs\fR -for compatibility with older versions of curses. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_addch\fR(3X), -\fBcurs_addstr\fR(3X), -\fBcurs_bkgd\fR(3X), -\fBcurs_printw\fR(3X), -\fBcurs_variables\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_bkgd.3x b/deps/ncurses-5.9/man/curs_bkgd.3x deleted file mode 100644 index 67e2ab8..0000000 --- a/deps/ncurses-5.9/man/curs_bkgd.3x +++ /dev/null @@ -1,92 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2003,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_bkgd.3x,v 1.22 2010/12/04 18:36:44 tom Exp $ -.TH curs_bkgd 3X "" -.SH NAME -\fBbkgdset\fR, \fBwbkgdset\fR, -\fBbkgd\fR, \fBwbkgd\fR, -\fBgetbkgd\fR \- \fBcurses\fR window background manipulation routines -.SH SYNOPSIS -\fB#include \fR -.PP -\fBvoid bkgdset(chtype ch);\fR -.br -\fBvoid wbkgdset(WINDOW *win, chtype ch);\fR -.br -\fBint bkgd(chtype ch);\fR -.br -\fBint wbkgd(WINDOW *win, chtype ch);\fR -.br -\fBchtype getbkgd(WINDOW *win);\fR -.br -.SH DESCRIPTION -The \fBbkgdset\fR and \fBwbkgdset\fR routines manipulate the -background of the named window. -The window background is a \fBchtype\fR consisting of -any combination of attributes (i.e., rendition) and a character. -The attribute part of the background is combined (OR'ed) with all non-blank -characters that are written into the window with \fBwaddch\fR. Both -the character and attribute parts of the background are combined with -the blank characters. The background becomes a property of the -character and moves with the character through any scrolling and -insert/delete line/character operations. -.PP -To the extent possible on a particular terminal, -the attribute part of the background is displayed -as the graphic rendition of the character put on the screen. -.PP -The \fBbkgd\fR and \fBwbkgd\fR functions -set the background property of the current or specified window -and then apply this setting to every character position in that window: -.PP -.RS -The rendition of every character on the screen is changed to -the new background rendition. -.PP -Wherever the former background character -appears, it is changed to the new background character. -.RE -.PP -The \fBgetbkgd\fR function returns the given window's current background -character/attribute pair. -.SH RETURN VALUE -The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR. -The SVr4.0 manual says "or a non-negative integer if \fBimmedok\fR is set", -but this appears to be an error. -.SH NOTES -Note that \fBbkgdset\fR and \fBbkgd\fR may be macros. -.SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. -It specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR on failure, -but gives no failure conditions. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_addch\fR(3X), -\fBcurs_attr\fR(3X), -\fBcurs_outopts\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_border.3x b/deps/ncurses-5.9/man/curs_border.3x deleted file mode 100644 index 5a58e9d..0000000 --- a/deps/ncurses-5.9/man/curs_border.3x +++ /dev/null @@ -1,153 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_border.3x,v 1.22 2010/12/04 18:36:44 tom Exp $ -.TH curs_border 3X "" -.na -.hy 0 -.SH NAME -\fBborder\fR, -\fBwborder\fR, -\fBbox\fR, -\fBhline\fR, -\fBwhline\fR, -\fBvline\fR, -\fBwvline\fR, -\fBmvhline\fR, -\fBmvwhline\fR, -\fBmvvline\fR, -\fBmvwvline\fR \- create \fBcurses\fR borders, horizontal and vertical lines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.br -\fBint border(chtype ls, chtype rs, chtype ts, chtype bs,\fR - \fBchtype tl, chtype tr, chtype bl, chtype br);\fR -.br -\fBint wborder(WINDOW *win, chtype ls, chtype rs,\fR - \fBchtype ts, chtype bs, chtype tl, chtype tr,\fR - \fBchtype bl, chtype br);\fR -.br -\fBint box(WINDOW *win, chtype verch, chtype horch);\fR -.br -\fBint hline(chtype ch, int n);\fR -.br -\fBint whline(WINDOW *win, chtype ch, int n);\fR -.br -\fBint vline(chtype ch, int n);\fR -.br -\fBint wvline(WINDOW *win, chtype ch, int n);\fR -.br -\fBint mvhline(int y, int x, chtype ch, int n);\fR -.br -\fBint mvwhline(WINDOW *, int y, int x, chtype ch, int n);\fR -.br -\fBint mvvline(int y, int x, chtype ch, int n);\fR -.br -\fBint mvwvline(WINDOW *, int y, int x, chtype ch, int n);\fR -.br -.SH DESCRIPTION -The \fBborder\fR, \fBwborder\fR and \fBbox\fR routines -draw a box around the edges of a window. -Other than the window, each argument is a character with attributes: -.sp -.RS -\fIls\fR \- left side, -.br -\fIrs\fR \- right side, -.br -\fIts\fR \- top side, -.br -\fIbs\fR \- bottom side, -.br -\fItl\fR \- top left-hand corner, -.br -\fItr\fR \- top right-hand corner, -.br -\fIbl\fR \- bottom left-hand corner, and -.br -\fIbr\fR \- bottom right-hand corner. -.RE -.PP -If any of these arguments is zero, then the corresponding -default values (defined in \fBcurses.h\fR) are used instead: -.sp -.RS -\fBACS_VLINE\fR, -.br -\fBACS_VLINE\fR, -.br -\fBACS_HLINE\fR, -.br -\fBACS_HLINE\fR, -.br -\fBACS_ULCORNER\fR, -.br -\fBACS_URCORNER\fR, -.br -\fBACS_LLCORNER\fR, -.br -\fBACS_LRCORNER\fR. -.RE -.PP -\fBbox(\fR\fIwin\fR\fB, \fR\fIverch\fR\fB, \fR\fIhorch\fR\fB)\fR is a shorthand -for the following call: \fBwborder(\fR\fIwin\fR\fB,\fR \fIverch\fR\fB,\fR -\fIverch\fR\fB,\fR \fIhorch\fR\fB,\fR \fIhorch\fR\fB, 0, 0, 0, 0)\fR. -.PP -The \fBhline\fR and \fBwhline\fR functions draw a horizontal (left to right) -line using \fIch\fR starting at the current cursor position in the window. The -current cursor position is not changed. The line is at most \fIn\fR characters -long, or as many as fit into the window. -.PP -The \fBvline\fR and \fBwvline\fR functions draw a vertical (top to bottom) line -using \fIch\fR starting at the current cursor position in the window. The -current cursor position is not changed. The line is at most \fIn\fR characters -long, or as many as fit into the window. -.SH RETURN VALUE -All routines return the integer \fBOK\fR. The SVr4.0 manual says "or a -non-negative integer if \fBimmedok\fR is set", but this appears to be an error. -.PP -X/Open does not define any error conditions. -This implementation returns an error -if the window pointer is null. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -The borders generated by these functions are \fIinside\fR borders (this -is also true of SVr4 curses, though the fact is not documented). -.PP -Note that \fBborder\fR and \fBbox\fR may be macros. -.SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. -The standard specifies that they return \fBERR\fR on failure, -but specifies no error conditions. -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_outopts\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_color.3x b/deps/ncurses-5.9/man/curs_color.3x deleted file mode 100644 index 2f63c84..0000000 --- a/deps/ncurses-5.9/man/curs_color.3x +++ /dev/null @@ -1,243 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_color.3x,v 1.35 2010/12/20 00:50:58 tom Exp $ -.TH curs_color 3X "" -.de bP -.IP \(bu 4 -.. -.na -.hy 0 -.SH NAME -\fBstart_color\fR, -\fBinit_pair\fR, -\fBinit_color\fR, -\fBhas_colors\fR, -\fBcan_change_color\fR, -\fBcolor_content\fR, -\fBpair_content\fR, -\fBCOLOR_PAIR\fR \- \fBcurses\fR color manipulation routines -.ad -.hy -.SH SYNOPSIS -\fB# include \fR -.sp -\fBint start_color(void);\fR -.br -\fBint init_pair(short pair, short f, short b);\fR -.br -\fBint init_color(short color, short r, short g, short b);\fR -.br -\fBbool has_colors(void);\fR -.br -\fBbool can_change_color(void);\fR -.br -\fBint color_content(short color, short *r, short *g, short *b);\fR -.br -\fBint pair_content(short pair, short *f, short *b);\fR -.br -.SH DESCRIPTION -.SS Overview -\fBcurses\fR support color attributes on terminals with that capability. To -use these routines \fBstart_color\fR must be called, usually right after -\fBinitscr\fR. Colors are always used in pairs (referred to as color-pairs). -A color-pair consists of a foreground color (for characters) and a background -color (for the blank field on which the characters are displayed). A -programmer initializes a color-pair with the routine \fBinit_pair\fR. After it -has been initialized, \fBCOLOR_PAIR\fR(\fIn\fR), a macro defined in -\fB\fR, can be used as a new video attribute. -.PP -If a terminal is capable of redefining colors, the programmer can use the -routine \fBinit_color\fR to change the definition of a color. The routines -\fBhas_colors\fR and \fBcan_change_color\fR return \fBTRUE\fR or \fBFALSE\fR, -depending on whether the terminal has color capabilities and whether the -programmer can change the colors. The routine \fBcolor_content\fR allows a -programmer to extract the amounts of red, green, and blue components in an -initialized color. The routine \fBpair_content\fR allows a programmer to find -out how a given color-pair is currently defined. -.SS Routine Descriptions -The \fBstart_color\fR routine requires no arguments. It must be -called if the programmer wants to use colors, and before any other -color manipulation routine is called. It is good practice to call -this routine right after \fBinitscr\fR. \fBstart_color\fR initializes -eight basic colors (black, red, green, yellow, blue, magenta, cyan, -and white), and two global variables, \fBCOLORS\fR and -\fBCOLOR_PAIRS\fR (respectively defining the maximum number of colors -and color-pairs the terminal can support). It also restores the -colors on the terminal to the values they had when the terminal was -just turned on. -.PP -The \fBinit_pair\fR routine changes the definition of a color-pair. It takes -three arguments: the number of the color-pair to be changed, the foreground -color number, and the background color number. -For portable applications: -.bP -The value of the first argument -must be between \fB1\fR and \fBCOLOR_PAIRS\-1\fR, -except that if default colors are used (see \fBuse_default_colors\fP) -the upper limit is adjusted to allow for extra pairs which use -a default color in foreground and/or background. -.bP -The value of the second and -third arguments must be between 0 and \fBCOLORS\fR. -Color pair 0 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. -.PP -If the color-pair was previously -initialized, the screen is refreshed and all occurrences of that color-pair -are changed to the new definition. -.PP -As an extension, ncurses allows you to set color pair 0 via -the \fBassume_default_colors\fR routine, or to specify the use of -default colors (color number \fB\-1\fR) if you first invoke the -\fBuse_default_colors\fR routine. -.PP -The \fBinit_color\fR routine changes the definition of a color. It takes four -arguments: the number of the color to be changed followed by three RGB values -(for the amounts of red, green, and blue components). The value of the first -argument must be between \fB0\fR and \fBCOLORS\fR. (See the section -\fBColors\fR for the default color index.) Each of the last three arguments -must be a value between 0 and 1000. When \fBinit_color\fR is used, all -occurrences of that color on the screen immediately change to the new -definition. -.PP -The \fBhas_colors\fR routine requires no arguments. It returns \fBTRUE\fR if -the terminal can manipulate colors; otherwise, it returns \fBFALSE\fR. 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. -.PP -The \fBcan_change_color\fR routine requires no arguments. It returns -\fBTRUE\fR if the terminal supports colors and can change their definitions; -other, it returns \fBFALSE\fR. This routine facilitates writing -terminal-independent programs. -.PP -The \fBcolor_content\fR routine gives programmers a way to find the intensity -of the red, green, and blue (RGB) components in a color. It requires four -arguments: the color number, and three addresses of \fBshort\fRs for storing -the information about the amounts of red, green, and blue components in the -given color. The value of the first argument must be between 0 and -\fBCOLORS\fR. The values that are stored at the addresses pointed to by the -last three arguments are between 0 (no component) and 1000 (maximum amount of -component). -.PP -The \fBpair_content\fR routine allows programmers to find out what colors a -given color-pair consists of. It requires three arguments: the color-pair -number, and two addresses of \fBshort\fRs for storing the foreground and the -background color numbers. The value of the first argument must be between 1 -and \fBCOLOR_PAIRS\-1\fR. The values that are stored at the addresses pointed -to by the second and third arguments are between 0 and \fBCOLORS\fR. -.SS Colors -In \fB\fR the following macros are defined. These are the default -colors. \fBcurses\fR also assumes that \fBCOLOR_BLACK\fR is the default -background color for all terminals. -.PP -.nf - \fBCOLOR_BLACK\fR - \fBCOLOR_RED\fR - \fBCOLOR_GREEN\fR - \fBCOLOR_YELLOW\fR - \fBCOLOR_BLUE\fR - \fBCOLOR_MAGENTA\fR - \fBCOLOR_CYAN\fR - \fBCOLOR_WHITE\fR -.fi -.SH RETURN VALUE -The routines \fBcan_change_color()\fR and \fBhas_colors()\fR return \fBTRUE\fR -or \fBFALSE\fR. -.PP -All other routines return the integer \fBERR\fR upon failure and an \fBOK\fR -(SVr4 specifies only "an integer value other than \fBERR\fR") upon successful -completion. -.PP -X/Open defines no error conditions. -This implementation will return \fBERR\fR on attempts to -use color values outside the range 0 to COLORS\-1 -(except for the default colors extension), -or use color pairs outside the range 0 to COLOR_PAIRS\-1. -Color values used in \fBinit_color\fP must be in the range 0 to 1000. -An error is returned from all functions -if the terminal has not been initialized. -An error is returned from secondary functions such as \fBinit_pair\fP -if \fBstart_color\fP was not called. -.RS 3 -.TP 5 -\fBinit_color\fP -returns an error if the terminal does not support -this feature, e.g., if the \fIinitialize_color\fP capability is absent -from the terminal description. -.TP 5 -\fBstart_color\fP -returns an error if the color table cannot be allocated. -.RE -.SH NOTES -In the \fIncurses\fR implementation, there is a separate color activation flag, -color palette, color pairs table, and associated COLORS and COLOR_PAIRS counts -for each screen; the \fBstart_color\fR function only affects the current -screen. The SVr4/XSI interface is not really designed with this in mind, and -historical implementations may use a single shared color palette. -.PP -Note that 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 \fBcurs_bkgd\fR(3X). -.PP -Several caveats apply on 386 and 486 machines with VGA-compatible graphics: -.bP -COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW combined with -the \fBA_BOLD\fR 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). -.bP -Color RGB values are not settable. -.SH PORTABILITY -This implementation satisfies XSI Curses's minimum maximums -for \fBCOLORS\fR and \fBCOLOR_PAIRS\fR. -.PP -The \fBinit_pair\fP routine accepts negative values of foreground -and background color to support the \fBuse_default_colors\fP extension, -but only if that routine has been first invoked. -.PP -The assumption that \fBCOLOR_BLACK\fR is the default -background color for all terminals can be modified using the -\fBassume_default_colors\fP extension. -.PP -This implementation checks the pointers, -e.g., for the values returned by -\fBcolor_content\fP and \fBpair_content\fP, -and will treat those as optional parameters when null. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_initscr\fR(3X), -\fBcurs_attr\fR(3X), -\fBcurs_variables\fR(3X), -\fBdefault_colors\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_get_wstr.3x b/deps/ncurses-5.9/man/curs_get_wstr.3x deleted file mode 100644 index 9beb177..0000000 --- a/deps/ncurses-5.9/man/curs_get_wstr.3x +++ /dev/null @@ -1,176 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_get_wstr.3x,v 1.8 2010/12/04 18:36:44 tom Exp $ -.TH curs_get_wstr 3X "" -.na -.hy 0 -.SH NAME -\fBget_wstr\fR, -\fBgetn_wstr\fR, -\fBwget_wstr\fR, -\fBwgetn_wstr\fR, -\fBmvget_wstr\fR, -\fBmvgetn_wstr\fR, -\fBmvwget_wstr\fR, -\fBmvwgetn_wstr\fR \- get an array of wide characters from a curses terminal keyboard -.ad -.hy -.SH SYNOPSIS -.nf -\fB#include \fR -.sp -\fBint get_wstr(wint_t *\fR\fIwstr\fR\fB);\fR -.br -\fBint getn_wstr(wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint wget_wstr(WINDOW *\fR\fIwin\fR\fB, wint_t *\fR\fIwstr\fR\fB);\fR -.br -\fBint wgetn_wstr(WINDOW *\fR\fIwin\fR\fB, wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvget_wstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB);\fR -.br -\fBint mvgetn_wstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvwget_wstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB);\fR -.br -\fBint mvwgetn_wstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR -.fi -.SH DESCRIPTION -The effect of -\fBget_wstr\fR -is as though a series of calls -to -\fBget_wch\fR -were made, until a newline, other end-of-line, or end-of-file condition is processed. -An end-of-file condition is represented by \fBWEOF\fR, as defined in \fB\fR. -The newline and end-of-line conditions are represented by the \fB\\n\fR \fBwchar_t\fR value. -In all instances, the end of the string is terminated by a null \fBwchar_t\fR. -The routine places resulting values in the area pointed to by \fIwstr\fR. -.PP -The user's erase and kill characters are interpreted. If keypad -mode is on for the window, \fBKEY_LEFT\fR and \fBKEY_BACKSPACE\fR -are both considered equivalent to the user's kill character. -.PP -Characters input are echoed only if \fBecho\fR is currently on. In that case, -backspace is echoed as deletion of the previous character (typically a left -motion). -.PP -The effect of -\fBwget_wstr\fR -is as though a series of -calls to -\fBwget_wch\fR -were made. -.PP -The effect of -\fBmvget_wstr\fR -is as though a call to -\fBmove\fR -and then a series of calls to -\fBget_wch\fR -were -made. -.PP -The effect of -\fBmvwget_wstr\fR -is as though a call to -\fBwmove\fR -and then a series of calls to -\fBwget_wch\fR -were made. -.PP -The -\fBgetn_wstr\fR, -\fBmvgetn_wstr\fR, -\fBmvwgetn_wstr\fR, and -\fBwgetn_wstr\fR -functions are identical -to the -\fBget_wstr\fR, -\fBmvget_wstr\fR, -\fBmvwget_wstr\fR, and -\fBwget_wstr\fR -functions, respectively, -except that the -\fB*n_*\fR -versions read at most -\fIn\fR -characters, letting the application prevent overflow of the -input buffer. -.SH NOTES -Using -\fBget_wstr\fR, -\fBmvget_wstr\fR, -\fBmvwget_wstr\fR, or -\fBwget_wstr\fR -to read a line that -overflows the array pointed to by -\fBwstr\fR -causes undefined -results. -The use of -\fBgetn_wstr\fR, -\fBmvgetn_wstr\fR, -\fBmvwgetn_wstr\fR, or -\fBwgetn_wstr\fR, respectively, is recommended. -.PP -These functions cannot return \fBKEY_\fR values because there -is no way to distinguish a \fBKEY_\fR value from a valid \fBwchar_t\fR value. -.PP -All of these routines except \fBwgetn_wstr\fR may be macros. -.SH RETURN VALUES -All of these functions return \fBOK\fR upon successful completion. -Otherwise, they return \fBERR\fR. -.PP -Functions using a window parameter return an error if it is null. -.RS -.TP 5 -\fBwgetn_wstr\fP -returns an error if the associated call to \fBwget_wch\fP failed. -.RE -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH PORTABILITY -These functions are described in The Single Unix Specification, Version 2. -No error conditions are defined. -This implementation returns ERR if the window pointer is null, -or if the lower-level \fBwget_wch\fR call returns an ERR. -In the latter case, -an ERR return without other data is treated as an end-of-file condition, -and the returned array contains a \fBWEOF\fR followed by a null \fBwchar_t\fR. -.PP -X/Open curses documents these functions to pass an array of \fBwchar_t\fR, -but all of the vendors implement this using \fBwint_t\fR. -.SH SEE ALSO -Functions: -\fBcurses\fR(3X), -\fBcurs_get_wch\fR(3X), -\fBcurs_getstr\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_getcchar.3x b/deps/ncurses-5.9/man/curs_getcchar.3x deleted file mode 100644 index 1b878f3..0000000 --- a/deps/ncurses-5.9/man/curs_getcchar.3x +++ /dev/null @@ -1,138 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2001-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_getcchar.3x,v 1.15 2010/12/04 18:36:44 tom Exp $ -.TH curs_getcchar 3X "" -.de bP -.IP \(bu 4 -.. -.SH NAME -\fBgetcchar\fP, -\fBsetcchar\fP \- Get a wide character string and rendition from a \fBcchar_t\fP or set a \fBcchar_t\fP from a wide-character string -.SH SYNOPSIS -\fB#include \fP -.sp -\fBint getcchar(\fP -.br -.B " const cchar_t *\fIwcval\fP," -.br -.B " wchar_t *\fIwch\fP," -.br -.B " attr_t *\fIattrs\fP," -.br -.B " short *\fIcolor_pair\fP," -.br -.B " void *\fIopts\fP );" -.sp -.B "int setcchar(" -.br -.B " cchar_t *\fIwcval\fP," -.br -.B " const wchar_t *\fIwch\fP," -.br -.B " const attr_t \fIattrs\fP," -.br -.B " short \fIcolor_pair\fP," -.br -.B " void *\fIopts\fP );" -.SH DESCRIPTION -.PP -The \fBgetcchar\fP function gets a wide-character string -and rendition from a \fBcchar_t\fP argument. -When \fIwch\fP is not a null pointer, -the \fBgetcchar\fP function does the following: -.bP -Extracts information from a \fBcchar_t\fP value \fIwcval\fP -.bP -Stores the character attributes in the location pointed to by \fIattrs\fP -.bP -Stores the color-pair in the location pointed to by \fIcolor_pair\fP -.bP -Stores the wide-character string, -characters referenced by \fIwcval\fP, into the array pointed to by \fIwch\fP. -.PP -When -\fIwch\fP -is a null pointer, the -\fBgetcchar\fP -function does the following: -.bP -Obtains the number of wide characters pointed to by \fIwcval\fP -.bP -Does not change the data referenced by -\fIattrs\fP -or -\fIcolor_pair\fP -.PP -The \fBsetcchar\fP function initializes the location pointed to by \fIwcval\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 \fIwch\fP. -The string must be L'\\0' terminated, -contain at most one spacing character, -which must be the first. -.IP -Up to \fBCCHARW_MAX\fP\-1 nonspacing characters may follow. -Additional nonspacing characters are ignored. -.IP -The string may contain a single control character instead. -In that case, no nonspacing characters are allowed. -.SH NOTES -.PP -The \fIopts\fP argument is reserved for future use. -Currently, an application must provide a null pointer as \fIopts\fP. -.PP -The \fIwcval\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 \fIwcval\fP is constructed by any other means, the effect is unspecified. -.SH RETURN VALUES -.PP -When \fIwch\fP is a null pointer, -\fBgetcchar\fP returns the number of wide characters referenced by -\fIwcval\fP, -including one for a trailing null. -.PP -When \fIwch\fP is not a null pointer, -\fBgetcchar\fP returns \fBOK\fP upon successful completion, -and \fBERR\fP otherwise. -.PP -Upon successful completion, \fBsetcchar\fP returns \fBOK\fP. -Otherwise, it returns \fBERR\fP. -.SH SEE ALSO -.PP -Functions: -\fBcurs_attr\fR(3X), -\fBcurs_color\fR(3X), -\fBcurses\fR(3X), -\fBwcwidth\fR(3). diff --git a/deps/ncurses-5.9/man/curs_getch.3x b/deps/ncurses-5.9/man/curs_getch.3x deleted file mode 100644 index 2d5d6fd..0000000 --- a/deps/ncurses-5.9/man/curs_getch.3x +++ /dev/null @@ -1,344 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2010,2011 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_getch.3x,v 1.36 2011/01/22 19:38:51 tom Exp $ -.TH curs_getch 3X "" -.na -.hy 0 -.de bP -.IP \(bu 4 -.. -.SH NAME -\fBgetch\fR, -\fBwgetch\fR, -\fBmvgetch\fR, -\fBmvwgetch\fR, -\fBungetch\fR, -\fBhas_key\fR \- get (or push back) characters from \fBcurses\fR terminal keyboard -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.PP -\fBint getch(void);\fR -.br -\fBint wgetch(WINDOW *win);\fR -.br -\fBint mvgetch(int y, int x);\fR -.br -\fBint mvwgetch(WINDOW *win, int y, int x);\fR -.br -\fBint ungetch(int ch);\fR -.br -\fBint has_key(int ch);\fR -.br -.SH DESCRIPTION -The \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR and \fBmvwgetch\fR, routines read -a character from the window. -In no-delay mode, if no input is waiting, the value \fBERR\fR is returned. -In delay mode, the program waits until the system -passes text through to the program. -Depending on the setting of \fBcbreak\fR, -this is after one character (cbreak mode), -or after the first newline (nocbreak mode). -In half-delay mode, -the program waits until a character is typed or the -specified timeout has been reached. -.PP -Unless \fBnoecho\fR has been set, -then the character will also be echoed into the -designated window according to the following rules: -if the character is the current erase character, left arrow, or backspace, -the cursor is moved one space to the left and that screen position is erased -as if \fBdelch\fR had been called. -If the character value is any other \fBKEY_\fR define, the user is alerted -with a \fBbeep\fR call. -Otherwise the character is simply output to the screen. -.PP -If the window is not a pad, and it has been moved or modified since the last -call to \fBwrefresh\fR, \fBwrefresh\fR will be called before another character -is read. -.PP -If \fBkeypad\fR is \fBTRUE\fR, and a function key is pressed, the token for -that function key is returned instead of the raw characters. -Possible function -keys are defined in \fB\fR as macros with values outside the range -of 8-bit characters whose names begin with \fBKEY_\fR. Thus, a variable -intended to hold the return value of a function key must be of short size or -larger. -.PP -When a character that could be the beginning of a function key is received -(which, on modern terminals, means an escape character), -\fBcurses\fR sets a timer. -If the remainder of the sequence does not come in within the designated -time, the character is passed through; -otherwise, the function key value is returned. -For this reason, many terminals experience a delay between the time -a user presses the escape key and the escape is returned to the program. -.PP -The \fBungetch\fR routine places \fIch\fR back onto the input queue to be -returned by the next call to \fBwgetch\fR. -There is just one input queue for all windows. -.PP -.SS Function Keys -The following function keys, defined in \fB\fR, might be returned by -\fBgetch\fR if \fBkeypad\fR has been enabled. -Note that not all of these are -necessarily supported on any particular terminal. -.sp -.TS -center tab(/) ; -l l -l l . -\fIName\fR/\fIKey\fR \fIname\fR -KEY_BREAK/Break key -KEY_DOWN/The four arrow keys ... -KEY_UP -KEY_LEFT -KEY_RIGHT -KEY_HOME/Home key (upward+left arrow) -KEY_BACKSPACE/Backspace -KEY_F0/T{ -Function keys; space for 64 keys is reserved. -T} -KEY_F(\fIn\fR)/T{ -For 0 \(<= \fIn\fR \(<= 63 -T} -KEY_DL/Delete line -KEY_IL/Insert line -KEY_DC/Delete character -KEY_IC/Insert char or enter insert mode -KEY_EIC/Exit insert char mode -KEY_CLEAR/Clear screen -KEY_EOS/Clear to end of screen -KEY_EOL/Clear to end of line -KEY_SF/Scroll 1 line forward -KEY_SR/Scroll 1 line backward (reverse) -KEY_NPAGE/Next page -KEY_PPAGE/Previous page -KEY_STAB/Set tab -KEY_CTAB/Clear tab -KEY_CATAB/Clear all tabs -KEY_ENTER/Enter or send -KEY_SRESET/Soft (partial) reset -KEY_RESET/Reset or hard reset -KEY_PRINT/Print or copy -KEY_LL/Home down or bottom (lower left) -KEY_A1/Upper left of keypad -KEY_A3/Upper right of keypad -KEY_B2/Center of keypad -KEY_C1/Lower left of keypad -KEY_C3/Lower right of keypad -KEY_BTAB/Back tab key -KEY_BEG/Beg(inning) key -KEY_CANCEL/Cancel key -KEY_CLOSE/Close key -KEY_COMMAND/Cmd (command) key -KEY_COPY/Copy key -KEY_CREATE/Create key -KEY_END/End key -KEY_EXIT/Exit key -KEY_FIND/Find key -KEY_HELP/Help key -KEY_MARK/Mark key -KEY_MESSAGE/Message key -KEY_MOUSE/Mouse event read -KEY_MOVE/Move key -KEY_NEXT/Next object key -KEY_OPEN/Open key -KEY_OPTIONS/Options key -KEY_PREVIOUS/Previous object key -KEY_REDO/Redo key -KEY_REFERENCE/Ref(erence) key -KEY_REFRESH/Refresh key -KEY_REPLACE/Replace key -KEY_RESIZE/Screen resized -KEY_RESTART/Restart key -KEY_RESUME/Resume key -KEY_SAVE/Save key -KEY_SBEG/Shifted beginning key -KEY_SCANCEL/Shifted cancel key -KEY_SCOMMAND/Shifted command key -KEY_SCOPY/Shifted copy key -KEY_SCREATE/Shifted create key -KEY_SDC/Shifted delete char key -KEY_SDL/Shifted delete line key -KEY_SELECT/Select key -KEY_SEND/Shifted end key -KEY_SEOL/Shifted clear line key -KEY_SEXIT/Shifted exit key -KEY_SFIND/Shifted find key -KEY_SHELP/Shifted help key -KEY_SHOME/Shifted home key -KEY_SIC/Shifted input key -KEY_SLEFT/Shifted left arrow key -KEY_SMESSAGE/Shifted message key -KEY_SMOVE/Shifted move key -KEY_SNEXT/Shifted next key -KEY_SOPTIONS/Shifted options key -KEY_SPREVIOUS/Shifted prev key -KEY_SPRINT/Shifted print key -KEY_SREDO/Shifted redo key -KEY_SREPLACE/Shifted replace key -KEY_SRIGHT/Shifted right arrow -KEY_SRSUME/Shifted resume key -KEY_SSAVE/Shifted save key -KEY_SSUSPEND/Shifted suspend key -KEY_SUNDO/Shifted undo key -KEY_SUSPEND/Suspend key -KEY_UNDO/Undo key -.TE -.PP -Keypad is arranged like this: -.sp -.TS -center allbox tab(/) ; -c c c . -\fBA1\fR/\fBup\fR/\fBA3\fR -\fBleft\fR/\fBB2\fR/\fBright\fR -\fBC1\fR/\fBdown\fR/\fBC3\fR -.TE -.sp -The \fBhas_key\fR routine takes a key value from the above list, and -returns TRUE or FALSE according to whether -the current terminal type recognizes a key with that value. -Note that a few values do not correspond to a real key, -e.g., \fBKEY_RESIZE\fP and \fBKEY_MOUSE\fP. -See \fBresizeterm\fR(3X) for more details about \fBKEY_RESIZE\fP, and -\fBcurs_mouse\fR(3X) for a discussion of \fBKEY_MOUSE\fP. -.PP -.SH RETURN VALUE -All routines return the integer \fBERR\fR upon failure and an integer value -other than \fBERR\fR (\fBOK\fR in the case of ungetch()) upon successful -completion. -.RS -.TP 5 -\fBungetch\fP -returns an error -if there is no more room in the FIFO. -.TP 5 -\fBwgetch\fP -returns an error -if the window pointer is null, or -if its timeout expires without having any data. -.RE -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Use of the escape key by a programmer for a single character function is -discouraged, as it will cause a delay of up to one second while the -keypad code looks for a following function-key sequence. -.PP -Note that some keys may be the same as commonly used control -keys, e.g., \fBKEY_ENTER\fP versus control/M, \fBKEY_BACKSPACE\fP versus control/H. -Some curses implementations may differ according to whether they -treat these control keys specially (and ignore the terminfo), or -use the terminfo definitions. -\fBNcurses\fR uses the terminfo definition. -If it says that \fBKEY_ENTER\fP is control/M, -\fBgetch\fR will return \fBKEY_ENTER\fP -when you press control/M. -.PP -Generally, \fBKEY_ENTER\fP denotes the character(s) sent by the \fIEnter\fP -key on the numeric keypad: -.bP -the terminal description lists the most useful keys, -.bP -the \fIEnter\fP key on the regular keyboard is already handled by -the standard ASCII characters for carriage-return and line-feed, -.bP -depending on whether \fBnl\fP or \fBnonl\fP was called, -pressing "Enter" on the regular keyboard may return either a carriage-return -or line-feed, and finally -.bP -"Enter or send" is the standard description for this key. -.PP -When using \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR, or -\fBmvwgetch\fR, nocbreak mode (\fBnocbreak\fR) and echo mode -(\fBecho\fR) should not be used at the same time. -Depending on the -state of the tty driver when each character is typed, the program may -produce undesirable results. -.PP -Note that \fBgetch\fR, \fBmvgetch\fR, and \fBmvwgetch\fR may be macros. -.PP -Historically, the set of keypad macros was largely defined by the extremely -function-key-rich keyboard of the AT&T 7300, aka 3B1, aka Safari 4. -Modern -personal computers usually have only a small subset of these. -IBM PC-style -consoles typically support little more than \fBKEY_UP\fR, \fBKEY_DOWN\fR, -\fBKEY_LEFT\fR, \fBKEY_RIGHT\fR, \fBKEY_HOME\fR, \fBKEY_END\fR, -\fBKEY_NPAGE\fR, \fBKEY_PPAGE\fR, and function keys 1 through 12. -The Ins key -is usually mapped to \fBKEY_IC\fR. -.SH PORTABILITY -The *get* functions are described in the XSI Curses standard, Issue 4. -They -read single-byte characters only. -The standard specifies that they return -\fBERR\fR on failure, but specifies no error conditions. -.PP -The echo behavior of these functions on input of \fBKEY_\fR or backspace -characters was not specified in the SVr4 documentation. -This description is -adopted from the XSI Curses standard. -.PP -The behavior of \fBgetch\fR and friends in the presence of handled signals is -unspecified in the SVr4 and XSI Curses documentation. -Under historical curses -implementations, it varied depending on whether the operating system's -implementation of handled signal receipt interrupts a \fBread\fR(2) call in -progress or not, and also (in some implementations) depending on whether an -input timeout or non-blocking mode has been set. -.PP -Programmers concerned about portability should be prepared for either of two -cases: (a) signal receipt does not interrupt \fBgetch\fR; (b) signal receipt -interrupts \fBgetch\fR and causes it to return ERR with \fBerrno\fR set to -\fBEINTR\fR. -Under the \fBncurses\fR implementation, handled signals never -interrupt \fBgetch\fR. -.PP -The \fBhas_key\fR function is unique to \fBncurses\fR. -We recommend that -any code using it be conditionalized on the \fBNCURSES_VERSION\fR feature macro. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_inopts\fR(3X), -\fBcurs_outopts\fR(3X), -\fBcurs_mouse\fR(3X), -\fBcurs_move\fR(3X), -\fBcurs_refresh\fR(3X), -\fBresizeterm\fR(3X). -.PP -Comparable functions in the wide-character (ncursesw) library are -described in -\fBcurs_get_wch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_getstr.3x b/deps/ncurses-5.9/man/curs_getstr.3x deleted file mode 100644 index e548cf1..0000000 --- a/deps/ncurses-5.9/man/curs_getstr.3x +++ /dev/null @@ -1,122 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_getstr.3x,v 1.19 2010/12/04 18:36:44 tom Exp $ -.TH curs_getstr 3X "" -.na -.hy 0 -.SH NAME -\fBgetstr\fR, -\fBgetnstr\fR, -\fBwgetstr\fR, -\fBwgetnstr\fR, -\fBmvgetstr\fR, -\fBmvgetnstr\fR, -\fBmvwgetstr\fR, -\fBmvwgetnstr\fR \- accept character strings from \fBcurses\fR terminal keyboard -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint getstr(char *str);\fR -.br -\fBint getnstr(char *str, int n);\fR -.br -\fBint wgetstr(WINDOW *win, char *str);\fR -.br -\fBint wgetnstr(WINDOW *win, char *str, int n);\fR -.br -\fBint mvgetstr(int y, int x, char *str);\fR -.br -\fBint mvwgetstr(WINDOW *win, int y, int x, char *str);\fR -.br -\fBint mvgetnstr(int y, int x, char *str, int n);\fR -.br -\fBint mvwgetnstr(WINDOW *, int y, int x, char *str, int n);\fR -.br -.SH DESCRIPTION -The function \fBgetstr\fR is equivalent to a series of calls to \fBgetch\fR, -until a newline or carriage return is received (the terminating character is -not included in the returned string). The resulting value is placed in the -area pointed to by the character pointer \fIstr\fR. -.PP -\fBwgetnstr\fR reads at most \fIn\fR characters, thus preventing a possible -overflow of the input buffer. Any attempt to enter more characters (other -than the terminating newline or carriage return) causes a beep. Function -keys also cause a beep and are ignored. The \fBgetnstr\fR function reads -from the \fIstdscr\fR default window. -.PP -The user's erase and kill characters are interpreted. If keypad -mode is on for the window, \fBKEY_LEFT\fR and \fBKEY_BACKSPACE\fR -are both considered equivalent to the user's kill character. -.PP -Characters input are echoed only if \fBecho\fR is currently on. In that case, -backspace is echoed as deletion of the previous character (typically a left -motion). -.SH RETURN VALUE -All routines return the integer \fBERR\fR upon failure and an \fBOK\fR (SVr4 -specifies only "an integer value other than \fBERR\fR") upon successful -completion. -.PP -X/Open defines no error conditions. -.PP -In this implementation, -these functions return an error -if the window pointer is null, or -if its timeout expires without having any data. -.PP -This implementation provides an extension as well. -If a SIGWINCH interrupts the function, it will return \fBKEY_RESIZE\fP -rather than \fBOK\fP or \fBERR\fP. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that \fBgetstr\fR, \fBmvgetstr\fR, and \fBmvwgetstr\fR may be macros. -.SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. -They read single-byte characters only. -The standard does not define any error conditions. -This implementation returns ERR if the window pointer is null, -or if the lower-level \fBwgetch\fR call returns an ERR. -.PP -SVr3 and early SVr4 curses implementations did not reject function keys; -the SVr4.0 documentation claimed that "special keys" (such as function -keys, "home" key, "clear" key, \fIetc\fR.) 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). -.PP -The functions \fBgetnstr\fR, \fBmvgetnstr\fR, and \fBmvwgetnstr\fR were -present but not documented in SVr4. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_getch\fR(3X), -\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_inch.3x b/deps/ncurses-5.9/man/curs_inch.3x deleted file mode 100644 index 7e1e3b4..0000000 --- a/deps/ncurses-5.9/man/curs_inch.3x +++ /dev/null @@ -1,77 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_inch.3x,v 1.17 2010/12/04 18:36:44 tom Exp $ -.TH curs_inch 3X "" -.SH NAME -\fBinch\fR, -\fBwinch\fR, -\fBmvinch\fR, -\fBmvwinch\fR \- get a character and attributes from a \fBcurses\fR window -.SH SYNOPSIS -\fB#include \fR -.sp -\fBchtype inch(void);\fR -.br -\fBchtype winch(WINDOW *win);\fR -.br -\fBchtype mvinch(int y, int x);\fR -.br -\fBchtype mvwinch(WINDOW *win, int y, int x);\fR -.br -.SH DESCRIPTION -These routines return the character, of type \fBchtype\fR, 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\fR can be used with the \fB&\fR (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\fR. -. -.TS -l l . -\fBA_CHARTEXT\fR Bit-mask to extract character -\fBA_ATTRIBUTES\fR Bit-mask to extract attributes -\fBA_COLOR\fR Bit-mask to extract color-pair field information -.TE -.SH RETURN VALUE -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that all of these routines may be macros. -.SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. -.SH SEE ALSO -\fBcurses\fR(3X). -.PP -Comparable functions in the wide-character (ncursesw) library are -described in -\fBcurs_in_wch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_inchstr.3x b/deps/ncurses-5.9/man/curs_inchstr.3x deleted file mode 100644 index 2dc7673..0000000 --- a/deps/ncurses-5.9/man/curs_inchstr.3x +++ /dev/null @@ -1,99 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_inchstr.3x,v 1.15 2010/12/04 18:36:44 tom Exp $ -.TH curs_inchstr 3X "" -.na -.hy 0 -.SH NAME -\fBinchstr\fR, -\fBinchnstr\fR, -\fBwinchstr\fR, -\fBwinchnstr\fR, -\fBmvinchstr\fR, -\fBmvinchnstr\fR, -\fBmvwinchstr\fR, -\fBmvwinchnstr\fR \- get a string of characters (and attributes) from a \fBcurses\fR window -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint inchstr(chtype *chstr);\fR -.br -\fBint inchnstr(chtype *chstr, int n);\fR -.br -\fBint winchstr(WINDOW *win, chtype *chstr);\fR -.br -\fBint winchnstr(WINDOW *win, chtype *chstr, int n);\fR -.br -\fBint mvinchstr(int y, int x, chtype *chstr);\fR -.br -\fBint mvinchnstr(int y, int x, chtype *chstr, int n);\fR -.br -\fBint mvwinchstr(WINDOW *win, int y, int x, chtype *chstr);\fR -.br -\fBint mvwinchnstr(WINDOW *win, int y, int x, chtype *chstr, int n);\fR -.br -.SH DESCRIPTION -These routines return a NULL-terminated array of \fBchtype\fR quantities, -starting at the current cursor position in the named window and ending at the -right margin of the window. The four functions with \fIn\fR as -the last argument, return a leading substring at most \fIn\fR characters long -(exclusive of the trailing (chtype)0). -Constants defined in \fB\fR can be used with the \fB&\fR (logical -AND) operator to extract the character or the attribute alone from any position -in the \fIchstr\fR [see \fBcurs_inch\fR(3X)]. -.SH RETURN VALUE -All routines return the integer \fBERR\fR upon failure and an integer value -other than \fBERR\fR upon successful completion (the number of characters -retrieved, exclusive of the trailing 0). -.PP -No error conditions are defined. -If the \fIchstr\fP parameter is null, -no data is returned, -and the return value is zero. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that all routines except \fBwinchnstr\fR may be macros. 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. -.SH PORTABILITY -These functions are described in the XSI Curses standard, 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\fR. -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_inch\fR(3X). -.PP -Comparable functions in the wide-character (ncursesw) library are -described in -\fBcurs_in_wchstr\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_initscr.3x b/deps/ncurses-5.9/man/curs_initscr.3x deleted file mode 100644 index 83a01ea..0000000 --- a/deps/ncurses-5.9/man/curs_initscr.3x +++ /dev/null @@ -1,130 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_initscr.3x,v 1.17 2010/12/04 18:36:58 tom Exp $ -.TH curs_initscr 3X "" -.na -.hy 0 -.SH NAME -\fBinitscr\fR, -\fBnewterm\fR, -\fBendwin\fR, -\fBisendwin\fR, -\fBset_term\fR, -\fBdelscreen\fR \- \fBcurses\fR screen initialization and manipulation routines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBWINDOW *initscr(void);\fR -.br -\fBint endwin(void);\fR -.br -\fBbool isendwin(void);\fR -.br -\fBSCREEN *newterm(char *type, FILE *outfd, FILE *infd);\fR -.br -\fBSCREEN *set_term(SCREEN *new);\fR -.br -\fBvoid delscreen(SCREEN* sp);\fR -.br -.SH DESCRIPTION -\fBinitscr\fR is normally the first \fBcurses\fR routine to call when -initializing a program. A few special routines sometimes need to be -called before it; these are \fBslk_init\fR, \fBfilter\fR, \fBripoffline\fR, -\fBuse_env\fR. For multiple-terminal applications, \fBnewterm\fR may be -called before \fBinitscr\fR. -.PP -The initscr code determines the terminal type and initializes all \fBcurses\fR -data structures. \fBinitscr\fR also causes the first call to \fBrefresh\fR to -clear the screen. If errors occur, \fBinitscr\fR writes an appropriate error -message to standard error and exits; otherwise, a pointer is returned to -\fBstdscr\fR. -.PP -A program that outputs to more than one terminal should use the \fBnewterm\fR -routine for each terminal instead of \fBinitscr\fR. 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\fR. The routine \fBnewterm\fR should be called once for each -terminal. It returns a variable of type \fBSCREEN *\fR which should be saved -as a reference to that terminal. The arguments are the \fItype\fR of the -terminal to be used in place of \fB$TERM\fR, a file pointer for output to the -terminal, and another file pointer for input from the terminal (if \fItype\fR -is \fBNULL\fR, \fB$TERM\fR will be used). The program must also call -\fBendwin\fR for each terminal being used before exiting from \fBcurses\fR. -If \fBnewterm\fR is called more than once for the same terminal, the first -terminal referred to must be the last one for which \fBendwin\fR is called. -.PP -A program should always call \fBendwin\fR before exiting or escaping from -\fBcurses\fR mode temporarily. This routine restores tty modes, moves the -cursor to the lower left-hand corner of the screen and resets the terminal into -the proper non-visual mode. Calling \fBrefresh\fR or \fBdoupdate\fR after a -temporary escape causes the program to resume visual mode. -.PP -The \fBisendwin\fR routine returns \fBTRUE\fR if \fBendwin\fR has been -called without any subsequent calls to \fBwrefresh\fR, and \fBFALSE\fR -otherwise. -.PP -The \fBset_term\fR routine is used to switch between different -terminals. The screen reference \fBnew\fR becomes the new current -terminal. The previous terminal is returned by the routine. This is -the only routine which manipulates \fBSCREEN\fR pointers; all other -routines affect only the current terminal. -.PP -The \fBdelscreen\fR routine frees storage associated with the -\fBSCREEN\fR data structure. The \fBendwin\fR routine does not do -this, so \fBdelscreen\fR should be called after \fBendwin\fR if a -particular \fBSCREEN\fR is no longer needed. -.SH RETURN VALUE -\fBendwin\fR returns the integer \fBERR\fR upon failure and \fBOK\fR -upon successful completion. -.PP -Routines that return pointers always return \fBNULL\fR on error. -.PP -X/Open defines no error conditions. -In this implementation -\fBendwin\fP returns an error if the terminal was not initialized. -.SH NOTES -Note that \fBinitscr\fR and \fBnewterm\fR may be macros. -.SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. It -specifies that portable applications must not call \fBinitscr\fR more than -once. -.PP -Old versions of curses, e.g., BSD 4.4, may have returned a null pointer -from \fBinitscr\fR when an error is detected, rather than exiting. -It is safe but redundant to check the return value of \fBinitscr\fR -in XSI Curses. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_kernel\fR(3X), -\fBcurs_refresh\fR(3X), -\fBcurs_slk\fR(3X), -\fBcurs_util\fR(3X), -\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_inopts.3x b/deps/ncurses-5.9/man/curs_inopts.3x deleted file mode 100644 index aecb2e3..0000000 --- a/deps/ncurses-5.9/man/curs_inopts.3x +++ /dev/null @@ -1,236 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_inopts.3x,v 1.15 2010/12/04 18:40:45 tom Exp $ -.TH curs_inopts 3X "" -.na -.hy 0 -.SH NAME -\fBcbreak\fR, -\fBnocbreak\fR, -\fBecho\fR, -\fBnoecho\fR, -\fBhalfdelay\fR, -\fBintrflush\fR, -\fBkeypad\fR, -\fBmeta\fR, -\fBnodelay\fR, -\fBnotimeout\fR, -\fBraw\fR, -\fBnoraw\fR, -\fBnoqiflush\fR, -\fBqiflush\fR, -\fBtimeout\fR, -\fBwtimeout\fR, -\fBtypeahead\fR \- \fBcurses\fR input options -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.PP -\fBint cbreak(void);\fR -.br -\fBint nocbreak(void);\fR -.br -\fBint echo(void);\fR -.br -\fBint noecho(void);\fR -.br -\fBint halfdelay(int tenths);\fR -.br -\fBint intrflush(WINDOW *win, bool bf);\fR -.br -\fBint keypad(WINDOW *win, bool bf);\fR -.br -\fBint meta(WINDOW *win, bool bf);\fR -.br -\fBint nodelay(WINDOW *win, bool bf);\fR -.br -\fBint raw(void);\fR -.br -\fBint noraw(void);\fR -.br -\fBvoid noqiflush(void);\fR -.br -\fBvoid qiflush(void);\fR -.br -\fBint notimeout(WINDOW *win, bool bf);\fR -.br -\fBvoid timeout(int delay);\fR -.br -\fBvoid wtimeout(WINDOW *win, int delay);\fR -.br -\fBint typeahead(int fd);\fR -.br -.SH DESCRIPTION -Normally, the tty driver buffers typed characters until a newline or carriage -return is typed. The \fBcbreak\fR 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 -program. The \fBnocbreak\fR routine returns the terminal to normal (cooked) -mode. -.PP -Initially the terminal may or may not be in \fBcbreak\fR mode, as the mode is -inherited; therefore, a program should call \fBcbreak\fR or \fBnocbreak\fR -explicitly. Most interactive programs using \fBcurses\fR set the \fBcbreak\fR -mode. Note that \fBcbreak\fR overrides \fBraw\fR. -[See \fBcurs_getch\fR(3X) for a -discussion of how these routines interact with \fBecho\fR and \fBnoecho\fR.] -.PP -The \fBecho\fR and \fBnoecho\fR routines control whether characters typed by -the user are echoed by \fBgetch\fR as they are typed. Echoing by the tty -driver is always disabled, but initially \fBgetch\fR 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, or not to echo at all, so -they disable echoing by calling \fBnoecho\fR. -[See \fBcurs_getch\fR(3X) for a -discussion of how these routines interact with \fBcbreak\fR and -\fBnocbreak\fR.] -.PP -The \fBhalfdelay\fR routine is used for half-delay mode, which is similar to -\fBcbreak\fR mode in that characters typed by the user are immediately -available to the program. However, after blocking for \fItenths\fR tenths of -seconds, ERR is returned if nothing has been typed. The value of \fBtenths\fR -must be a number between 1 and 255. Use \fBnocbreak\fR to leave half-delay -mode. -.PP -If the \fBintrflush\fR option is enabled, (\fIbf\fR is \fBTRUE\fR), when an -interrupt key is pressed on the keyboard (interrupt, break, quit) all output in -the tty driver queue will be flushed, giving the effect of faster response to -the interrupt, but causing \fBcurses\fR to have the wrong idea of what is on -the screen. Disabling (\fIbf\fR is \fBFALSE\fR), the option prevents the -flush. The default for the option is inherited from the tty driver settings. -The window argument is ignored. -.PP -The \fBkeypad\fR option enables the keypad of the user's terminal. If -enabled (\fIbf\fR is \fBTRUE\fR), the user can press a function key -(such as an arrow key) and \fBwgetch\fR returns a single value -representing the function key, as in \fBKEY_LEFT\fR. If disabled -(\fIbf\fR is \fBFALSE\fR), \fBcurses\fR 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 \fBwgetch\fR is -called. The default value for keypad is false. -.PP -Initially, whether the terminal returns 7 or 8 significant bits on -input depends on the control mode of the tty driver [see termio(7)]. -To force 8 bits to be returned, invoke \fBmeta\fR(\fIwin\fR, -\fBTRUE\fR); this is equivalent, under POSIX, to setting the CS8 flag -on the terminal. To force 7 bits to be returned, invoke -\fBmeta\fR(\fIwin\fR, \fBFALSE\fR); this is equivalent, under POSIX, -to setting the CS7 flag on the terminal. The window argument, -\fIwin\fR, is always ignored. If the terminfo capabilities \fBsmm\fR -(meta_on) and \fBrmm\fR (meta_off) are defined for the terminal, -\fBsmm\fR is sent to the terminal when \fBmeta\fR(\fIwin\fR, -\fBTRUE\fR) is called and \fBrmm\fR is sent when \fBmeta\fR(\fIwin\fR, -\fBFALSE\fR) is called. -.PP -The \fBnodelay\fR option causes \fBgetch\fR to be a non-blocking call. -If no input is ready, \fBgetch\fR returns \fBERR\fR. If disabled -(\fIbf\fR is \fBFALSE\fR), \fBgetch\fR waits until a key is pressed. -.PP -While interpreting an input escape sequence, \fBwgetch\fR sets a timer -while waiting for the next character. If \fBnotimeout(\fR\fIwin\fR, -\fBTRUE\fR) is called, then \fBwgetch\fR does not set a timer. The -purpose of the timeout is to differentiate between sequences received -from a function key and those typed by a user. -.PP -The \fBraw\fR and \fBnoraw\fR routines place the terminal into or out of raw -mode. Raw mode is similar to \fBcbreak\fR mode, in that characters typed are -immediately passed through to the user program. The differences are that in -raw mode, the 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 tty driver that are not set by -\fBcurses\fR. -.PP -When the \fBnoqiflush\fR routine is used, normal flush of input and -output queues associated with the \fBINTR\fR, \fBQUIT\fR and -\fBSUSP\fR characters will not be done [see termio(7)]. When -\fBqiflush\fR is called, the queues will be flushed when these control -characters are read. You may want to call \fBnoqiflush()\fR in a signal -handler if you want output to continue as though the interrupt -had not occurred, after the handler exits. -.PP -The \fBtimeout\fR and \fBwtimeout\fR routines set blocking or -non-blocking read for a given window. If \fIdelay\fR is negative, -blocking read is used (i.e., waits indefinitely for -input). If \fIdelay\fR is zero, then non-blocking read is used -(i.e., read returns \fBERR\fR if no input is waiting). If -\fIdelay\fR is positive, then read blocks for \fIdelay\fR -milliseconds, and returns \fBERR\fR if there is still no input. -Hence, these routines provide the same functionality as \fBnodelay\fR, -plus the additional capability of being able to block for only -\fIdelay\fR milliseconds (where \fIdelay\fR is positive). -.PP -The \fBcurses\fR library does ``line-breakout optimization'' by looking for -typeahead periodically while updating the screen. If input is found, -and it is coming from a tty, the current update is postponed until -\fBrefresh\fR or \fBdoupdate\fR is called again. This allows faster -response to commands typed in advance. Normally, the input FILE -pointer passed to \fBnewterm\fR, or \fBstdin\fR in the case that -\fBinitscr\fR was used, will be used to do this typeahead checking. -The \fBtypeahead\fR routine specifies that the file descriptor -\fIfd\fR is to be used to check for typeahead instead. If \fIfd\fR is -\-1, then no typeahead checking is done. -.SH RETURN VALUE -All routines that return an integer return \fBERR\fR upon failure and OK (SVr4 -specifies only "an integer value other than \fBERR\fR") upon successful -completion, unless otherwise noted in the preceding routine descriptions. -.PP -X/Open does not define 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 -.TP 5 -\fBhalfdelay\fP -returns an error -if its parameter is outside the range 1..255. -.RE -.SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. -.PP -The ncurses library obeys the XPG4 standard and the historical practice of the -AT&T curses implementations, in that the echo bit is cleared when curses -initializes the terminal state. BSD curses differed from this slightly; it -left the echo bit on at initialization, but the BSD \fBraw\fR call turned it -off as a side-effect. For best portability, set echo or noecho explicitly -just after initialization, even if your program remains in cooked mode. -.SH NOTES -Note that \fBecho\fR, \fBnoecho\fR, \fBhalfdelay\fR, \fBintrflush\fR, -\fBmeta\fR, \fBnodelay\fR, \fBnotimeout\fR, \fBnoqiflush\fR, -\fBqiflush\fR, \fBtimeout\fR, and \fBwtimeout\fR may be macros. -.PP -The \fBnoraw\fR and \fBnocbreak\fR calls follow historical practice in that -they attempt to restore to normal (`cooked') mode from raw and cbreak modes -respectively. Mixing raw/noraw and cbreak/nocbreak calls leads to tty driver -control states that are hard to predict or understand; it is not recommended. -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_getch\fR(3X), \fBcurs_initscr\fR(3X), \fBtermio\fR(7) diff --git a/deps/ncurses-5.9/man/curs_insstr.3x b/deps/ncurses-5.9/man/curs_insstr.3x deleted file mode 100644 index 3e38a53..0000000 --- a/deps/ncurses-5.9/man/curs_insstr.3x +++ /dev/null @@ -1,99 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_insstr.3x,v 1.21 2010/12/04 18:38:55 tom Exp $ -.TH curs_insstr 3X "" -.SH NAME -\fBinsstr\fR, -\fBinsnstr\fR, -\fBwinsstr\fR, -\fBwinsnstr\fR, -\fBmvinsstr\fR, -\fBmvinsnstr\fR, -\fBmvwinsstr\fR, -\fBmvwinsnstr\fR \- insert string before cursor in a \fBcurses\fR window -.SH SYNOPSIS -\fB#include \fR -.br -\fBint insstr(const char *str);\fR -.br -\fBint insnstr(const char *str, int n);\fR -.br -\fBint winsstr(WINDOW *win, const char *str);\fR -.br -\fBint winsnstr(WINDOW *win, const char *str, int n);\fR -.br -\fBint mvinsstr(int y, int x, const char *str);\fR -.br -\fBint mvinsnstr(int y, int x, const char *str, int n);\fR -.br -\fBint mvwinsstr(WINDOW *win, int y, int x, const char *str);\fR -.br -\fBint mvwinsnstr(WINDOW *win, int y, int x, const char *str, int n);\fR -.br -.SH DESCRIPTION -These routines insert a character string -(as many characters as will fit on the line) -before the character under the cursor. -All characters to the right of the cursor are shifted right -with the possibility of the rightmost characters on the line being lost. -The cursor position does not change -(after moving to \fIy\fR, \fIx\fR, if specified). -The functions with \fIn\fR as the last argument -insert a leading substring of at most \fIn\fR characters. -If \fIn\fR<=0, then the entire string is inserted. -.PP -Special characters are handled as in \fBaddch\fP. -.SH RETURN VALUE -All routines that return an integer return \fBERR\fR upon failure and OK (SVr4 -specifies only "an integer value other than \fBERR\fR") upon successful -completion, unless otherwise noted in the preceding routine descriptions. -.PP -X/Open defines no error conditions. -In this implementation, -if the window parameter is null or the str parameter is null, -an error is returned. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that all but \fBwinsnstr\fR may be macros. -.SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4, which adds -const qualifiers to the arguments. -.LP -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. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_util\fR(3X), -\fBcurs_clear\fR(3X), -\fBcurs_inch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_instr.3x b/deps/ncurses-5.9/man/curs_instr.3x deleted file mode 100644 index 1b17db9..0000000 --- a/deps/ncurses-5.9/man/curs_instr.3x +++ /dev/null @@ -1,87 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_instr.3x,v 1.16 2010/12/04 18:38:55 tom Exp $ -.TH curs_instr 3X "" -.SH NAME -\fBinstr\fR, -\fBinnstr\fR, -\fBwinstr\fR, -\fBwinnstr\fR, -\fBmvinstr\fR, -\fBmvinnstr\fR, -\fBmvwinstr\fR, -\fBmvwinnstr\fR \- get a string of characters from a \fBcurses\fR window -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint instr(char *str);\fR -.br -\fBint innstr(char *str, int n);\fR -.br -\fBint winstr(WINDOW *win, char *str);\fR -.br -\fBint winnstr(WINDOW *win, char *str, int n);\fR -.br -\fBint mvinstr(int y, int x, char *str);\fR -.br -\fBint mvinnstr(int y, int x, char *str, int n);\fR -.br -\fBint mvwinstr(WINDOW *win, int y, int x, char *str);\fR -.br -\fBint mvwinnstr(WINDOW *win, int y, int x, char *str, int n);\fR -.br -.SH DESCRIPTION -These routines return a string of characters in \fIstr\fR, extracted starting -at the current cursor position in the named window. -Attributes are stripped from the characters. The four -functions with \fIn\fR as the last argument return a leading substring at most -\fIn\fR characters long (exclusive of the trailing NUL). -.SH RETURN VALUE -All of the functions return \fBERR\fR upon failure, -or the number of characters actually read into the string. -.PP -X/Open defines no error conditions. -In this implementation, -if the window parameter is null or the str parameter is null, -a zero is returned. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH NOTES -Note that all routines except \fBwinnstr\fR may be macros. -.SH PORTABILITY -SVr4 does not -document whether a length limit includes or excludes the trailing NUL. -.PP -The ncurses library extends the XSI description by allowing a negative -value for \fIn\fR. -In this case, the functions return the string ending at the right margin. -.SH SEE ALSO -\fBcurses\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_inwstr.3x b/deps/ncurses-5.9/man/curs_inwstr.3x deleted file mode 100644 index 966c7b4..0000000 --- a/deps/ncurses-5.9/man/curs_inwstr.3x +++ /dev/null @@ -1,91 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_inwstr.3x,v 1.7 2010/12/04 18:38:55 tom Exp $ -.TH curs_inwstr 3X "" -.SH NAME -\fBinwstr\fR, -\fBinnwstr\fR, -\fBwinwstr\fR, -\fBwinnwstr\fR, -\fBmvinwstr\fR, -\fBmvinnwstr\fR, -\fBmvwinwstr\fR, -\fBmvwinnwstr\fR \- get a string of \fBwchar_t\fR characters from a curses window -.SH SYNOPSIS -.nf -\fB#include \fR -.sp -\fBint inwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB);\fR -.br -\fBint innwstr(\fR\fBwchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint winwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR -.br -\fBint winnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvinwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR -.br -\fBint mvinnwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br -\fBint mvwinwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB);\fR -.br -\fBint mvwinnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR -.fi -.SH DESCRIPTION -These routines return a string of \fBwchar_t\fR characters in \fIwstr\fR, -extracted starting at the current cursor position in the named window. -Attributes are stripped from the characters. -The four functions with \fIn\fR as the last argument return a leading substring at most -\fIn\fR bytes long (exclusive of the trailing NUL). -Transfer stops at the end of the current line, or when \fIn\fR bytes have -been stored at the location referenced by \fIwstr\fR. -.PP -If the size \fIn\fR is not large enough to store a complete character, -an error is generated. -.SH NOTES -Note that all routines except -\fBwinnwstr\fR -may be macros. -.SH RETURN VALUES -All routines return -\fBERR\fR -upon failure. Upon -successful completion, the *\fBinwstr\fR -routines return -\fBOK\fR, and the *\fBinnwstr\fR -routines return the -number of characters read into the string. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_instr\fR(3X), -\fBcurs_in_wchstr\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_kernel.3x b/deps/ncurses-5.9/man/curs_kernel.3x deleted file mode 100644 index d81b134..0000000 --- a/deps/ncurses-5.9/man/curs_kernel.3x +++ /dev/null @@ -1,185 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_kernel.3x,v 1.19 2010/12/04 18:38:55 tom Exp $ -.TH curs_kernel 3X "" -.na -.hy 0 -.SH NAME -\fBdef_prog_mode\fR, -\fBdef_shell_mode\fR, -\fBreset_prog_mode\fR, -\fBreset_shell_mode\fR, -\fBresetty\fR, -\fBsavetty\fR, -\fBgetsyx\fR, -\fBsetsyx\fR, -\fBripoffline\fR, -\fBcurs_set\fR, -\fBnapms\fR \- low-level \fBcurses\fR routines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint def_prog_mode(void);\fR -.br -\fBint def_shell_mode(void);\fR -.br -\fBint reset_prog_mode(void);\fR -.br -\fBint reset_shell_mode(void);\fR -.br -\fBint resetty(void);\fR -.br -\fBint savetty(void);\fR -.br -\fBvoid getsyx(int y, int x);\fR -.br -\fBvoid setsyx(int y, int x);\fR -.br -\fBint ripoffline(int line, int (*init)(WINDOW *, int));\fR -.br -\fBint curs_set(int visibility);\fR -.br -\fBint napms(int ms);\fR -.br -.SH DESCRIPTION -The following routines give low-level access to various \fBcurses\fR -capabilities. These routines typically are used inside library -routines. -.PP -The \fBdef_prog_mode\fR and \fBdef_shell_mode\fR routines save the -current terminal modes as the "program" (in \fBcurses\fR) or "shell" -(not in \fBcurses\fR) state for use by the \fBreset_prog_mode\fR and -\fBreset_shell_mode\fR routines. This is done automatically by -\fBinitscr\fR. There is one such save area for each screen context -allocated by \fBnewterm()\fR. -.PP -The \fBreset_prog_mode\fR and \fBreset_shell_mode\fR routines restore -the terminal to "program" (in \fBcurses\fR) or "shell" (out of -\fBcurses\fR) state. These are done automatically by \fBendwin\fR -and, after an \fBendwin\fR, by \fBdoupdate\fR, so they normally are -not called. -.PP -The \fBresetty\fR and \fBsavetty\fR routines save and restore the -state of the terminal modes. \fBsavetty\fR saves the current state in -a buffer and \fBresetty\fR restores the state to what it was at the -last call to \fBsavetty\fR. -.PP -The \fBgetsyx\fR routine returns the current coordinates of the virtual screen -cursor in \fIy\fR and \fIx\fR. If \fBleaveok\fR is currently \fBTRUE\fR, then -\fB\-1\fR,\fB\-1\fR is returned. If lines have been removed from the top of the -screen, using \fBripoffline\fR, \fIy\fR and \fIx\fR include these lines; -therefore, \fIy\fR and \fIx\fR should be used only as arguments for -\fBsetsyx\fR. -.PP -The \fBsetsyx\fR routine sets the virtual screen cursor to -\fIy\fR, \fIx\fR. If \fIy\fR and \fIx\fR are both \fB\-1\fR, then -\fBleaveok\fR is set. The two routines \fBgetsyx\fR and \fBsetsyx\fR -are designed to be used by a library routine, which manipulates -\fBcurses\fR windows but does not want to change the current position -of the program's cursor. The library routine would call \fBgetsyx\fR -at the beginning, do its manipulation of its own windows, do a -\fBwnoutrefresh\fR on its windows, call \fBsetsyx\fR, and then call -\fBdoupdate\fR. -.PP -The \fBripoffline\fR routine provides access to the same facility that -\fBslk_init\fR [see \fBcurs_slk\fR(3X)] uses to reduce the size of the -screen. \fBripoffline\fR must be called before \fBinitscr\fR or -\fBnewterm\fR is called. If \fIline\fR is positive, a line is removed -from the top of \fBstdscr\fR; if \fIline\fR is negative, a line is -removed from the bottom. When this is done inside \fBinitscr\fR, the -routine \fBinit\fR (supplied by the user) is called with two -arguments: a window pointer to the one-line window that has been -allocated and an integer with the number of columns in the window. -Inside this initialization routine, the integer variables \fBLINES\fR -and \fBCOLS\fR (defined in \fB\fR) are not guaranteed to be -accurate and \fBwrefresh\fR or \fBdoupdate\fR must not be called. It -is allowable to call \fBwnoutrefresh\fR during the initialization -routine. -.PP -\fBripoffline\fR can be called up to five times before calling \fBinitscr\fR or -\fBnewterm\fR. -.PP -The \fBcurs_set\fR routine sets the cursor state to invisible, -normal, or very visible for \fBvisibility\fR equal to \fB0\fR, -\fB1\fR, or \fB2\fR respectively. If the terminal supports the -\fIvisibility\fR requested, the previous \fIcursor\fR state is -returned; otherwise, \fBERR\fR is returned. -.PP -The \fBnapms\fR routine is used to sleep for \fIms\fR milliseconds. -.SH RETURN VALUE -Except for \fBcurs_set\fR, these routines always return \fBOK\fR. -.PP -\fBcurs_set\fR -returns the previous cursor state, or \fBERR\fR if the -requested \fIvisibility\fR is not supported. -.PP -X/Open defines no error conditions. -In this implementation -.RS -.TP 5 -\fBdef_prog_mode\fR, \fBdef_shell_mode\fR, \fBreset_prog_mode\fR, \fBreset_shell_mode\fR -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 (NRIPS = 5). -.RE -.SH NOTES -Note that \fBgetsyx\fR is a macro, so \fB&\fR is not necessary before -the variables \fIy\fR and \fIx\fR. -.PP -Older SVr4 man pages warn that the return value of \fBcurs_set\fR "is currently -incorrect". This implementation gets it right, but it may be unwise to count -on the correctness of the return value anywhere else. -.PP -Both ncurses and SVr4 will call \fBcurs_set\fR in \fBendwin\fR -if \fBcurs_set\fR -has been called to make the cursor other than normal, i.e., either -invisible or very visible. -There is no way for ncurses to determine the initial cursor state to -restore that. -.SH PORTABILITY -The functions \fBsetsyx\fR and \fBgetsyx\fR are not described in the XSI -Curses standard, Issue 4. All other functions are as described in XSI Curses. -.PP -The SVr4 documentation describes \fBsetsyx\fR and \fBgetsyx\fR as having return -type int. This is misleading, as they are macros with no documented semantics -for the return value. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_initscr\fR(3X), -\fBcurs_outopts\fR(3X), -\fBcurs_refresh\fR(3X), -\fBcurs_scr_dump\fR(3X), -\fBcurs_slk\fR(3X), -\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_legacy.3x b/deps/ncurses-5.9/man/curs_legacy.3x deleted file mode 100644 index febaf29..0000000 --- a/deps/ncurses-5.9/man/curs_legacy.3x +++ /dev/null @@ -1,82 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_legacy.3x,v 1.5 2010/12/04 18:38:55 tom Exp $ -.TH curs_legacy 3X "" -.SH NAME -getattrs \- get \fBcurses\fR cursor and window coordinates, attributes -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint getattrs(WINDOW *win);\fR -.br -\fBint getbegx(WINDOW *win);\fR -.br -\fBint getbegy(WINDOW *win);\fR -.br -\fBint getcurx(WINDOW *win);\fR -.br -\fBint getcury(WINDOW *win);\fR -.br -\fBint getmaxx(WINDOW *win);\fR -.br -\fBint getmaxy(WINDOW *win);\fR -.br -\fBint getparx(WINDOW *win);\fR -.br -\fBint getpary(WINDOW *win);\fR -.br -.SH DESCRIPTION -The \fBgetbegy\fR and \fBgetbegx\fR functions return the same -data as \fBgetbegyx\fR. -.PP -The \fBgetcury\fR and \fBgetcurx\fR functions return the same -data as \fBgetyx\fR. -.PP -The \fBgetmaxy\fR and \fBgetmaxx\fR functions return the same -data as \fBgetmaxyx\fR. -.PP -The \fBgetpary\fR and \fBgetparx\fR functions return the same -data as \fBgetparyx\fR. -.SH RETURN VALUE -These functions return an integer, -or ERR if the window parameter is null. -.SH NOTES -All of these interfaces are provided as macros and functions. -The macros are suppressed (and only the functions provided) -when \fBNCURSES_OPAQUE\fR is defined. -The standard forms such as \fBgetyx\fP 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 WINDOW structure. -.SH PORTABILITY -These functions were supported on Version 7, BSD or System V implementations. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_getyx\fR(3X), -\fBcurs_opaque\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_memleaks.3x b/deps/ncurses-5.9/man/curs_memleaks.3x deleted file mode 100644 index 5ebc0d0..0000000 --- a/deps/ncurses-5.9/man/curs_memleaks.3x +++ /dev/null @@ -1,69 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_memleaks.3x,v 1.3 2010/12/04 18:40:45 tom Exp $ -.TH curs_memleaks 3X "" -.na -.hy 0 -.SH NAME -\fB_nc_freeall\fP -\fB_nc_free_and_exit\fP \- \fBcurses\fR memory-leak checking -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBvoid _nc_freeall(void);\fR -.br -\fBvoid _nc_free_and_exit(int);\fR -.SH DESCRIPTION -These functions are used to simplify analysis of memory leaks in the ncurses -library. -They are normally not available; they must be configured into the library -at build time using the \fB\-\-disable-leaks\fP option. -That compiles-in code that frees memory that normally would not be freed. -.PP -Any implementation of curses must not free the memory associated with -a screen, since (even after calling \fBendwin\fP), it must be available -for use in the next call to \fBrefresh\fP. -There are also chunks of memory held for performance reasons. -That makes it hard to analyze curses applications for memory leaks. -To work around this, one can build a debugging version of the ncurses -library which frees those chunks which it can, and provides these -functions to free all of the memory allocated by the ncurses library. -.PP -The \fP_nc_free_and_exit\fP function is the preferred one since -some of the memory which is freed may be required for the application -to continue running. -Its parameter is the code to pass to the \fPexit\fP routine. -.SH RETURN VALUE -These functions do not return a value. -.SH PORTABILITY -These functions are not part of the XSI interface. -.SH SEE ALSO -\fBcurses\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_mouse.3x b/deps/ncurses-5.9/man/curs_mouse.3x deleted file mode 100644 index 01dc682..0000000 --- a/deps/ncurses-5.9/man/curs_mouse.3x +++ /dev/null @@ -1,315 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_mouse.3x,v 1.38 2010/12/04 18:38:55 tom Exp $ -.TH curs_mouse 3X "" -.na -.hy 0 -.SH NAME -\fBhas_mouse\fR, -\fBgetmouse\fR, \fBungetmouse\fR, -\fBmousemask\fR, \fBwenclose\fR, -\fBmouse_trafo\fR, \fBwmouse_trafo\fR, -\fBmouseinterval\fR \- mouse interface through curses -.ad -.hy -.SH SYNOPSIS -.nf -\fB#include -.PP -\fBtypedef unsigned long mmask_t; -.PP -typedef struct -{ - 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;\fR -.fi -.br -\fBbool has_mouse(void);\fR -.br -\fBint getmouse(MEVENT *event);\fR -.br -\fBint ungetmouse(MEVENT *event);\fR -.br -\fBmmask_t mousemask(mmask_t newmask, mmask_t *oldmask);\fR -.br -\fBbool wenclose(const WINDOW *win, int y, int x);\fR -.br -\fBbool mouse_trafo(int* pY, int* pX, bool to_screen);\fR -.br -\fBbool wmouse_trafo(const WINDOW* win, int* pY, int* pX,\fR -.br - \fBbool to_screen);\fR -.br -\fBint mouseinterval(int erval);\fR -.br -.SH DESCRIPTION -These functions provide an interface to mouse events from -\fBncurses\fR(3X). -Mouse events are represented by \fBKEY_MOUSE\fR -pseudo-key values in the \fBwgetch\fR input stream. -.PP -To make mouse events visible, use the \fBmousemask\fR function. -This will set -the mouse events to be reported. -By default, no mouse events are reported. -The function will return a mask to indicate which of the specified mouse events -can be reported; on complete failure it returns 0. -If oldmask is non-NULL, -this function fills the indicated location with the previous value of the given -window's mouse event mask. -.PP -As a side effect, setting a zero mousemask may turn off the mouse pointer; -setting a nonzero mask may turn it on. -Whether this happens is device-dependent. -.PP -Here are the mouse event type masks which may be defined: -.PP -.TS -l l -_ _ -l l. -\fIName\fR \fIDescription\fR -BUTTON1_PRESSED mouse button 1 down -BUTTON1_RELEASED mouse button 1 up -BUTTON1_CLICKED mouse button 1 clicked -BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked -BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked -_ -BUTTON2_PRESSED mouse button 2 down -BUTTON2_RELEASED mouse button 2 up -BUTTON2_CLICKED mouse button 2 clicked -BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked -BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked -_ -BUTTON3_PRESSED mouse button 3 down -BUTTON3_RELEASED mouse button 3 up -BUTTON3_CLICKED mouse button 3 clicked -BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked -BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked -_ -BUTTON4_PRESSED mouse button 4 down -BUTTON4_RELEASED mouse button 4 up -BUTTON4_CLICKED mouse button 4 clicked -BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked -BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked -_ -BUTTON5_PRESSED mouse button 5 down -BUTTON5_RELEASED mouse button 5 up -BUTTON5_CLICKED mouse button 5 clicked -BUTTON5_DOUBLE_CLICKED mouse button 5 double clicked -BUTTON5_TRIPLE_CLICKED mouse button 5 triple clicked -_ -BUTTON_SHIFT shift was down during button state change -BUTTON_CTRL control was down during button state change -BUTTON_ALT alt was down during button state change -ALL_MOUSE_EVENTS report all button state changes -REPORT_MOUSE_POSITION report mouse movement -_ -.TE -.PP -Once a class of mouse events have been made visible in a window, -calling the \fBwgetch\fR function on that window may return -\fBKEY_MOUSE\fR as an indicator that a mouse event has been queued. -To read the event data and pop the event off the queue, call -\fBgetmouse\fR. -This function will return \fBOK\fR if a mouse event -is actually visible in the given window, \fBERR\fR otherwise. -When \fBgetmouse\fR returns \fBOK\fR, 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 \fBgetmouse\fP will retrieve the next older -item from the queue. -.PP -The \fBungetmouse\fR function behaves analogously to \fBungetch\fR. -It pushes -a \fBKEY_MOUSE\fR event onto the input queue, and associates with that event -the given state data and screen-relative character-cell coordinates. -.PP -The \fBwenclose\fR function tests whether a given pair of screen-relative -character-cell coordinates is enclosed by a given window, returning TRUE -if it is and FALSE otherwise. -It is useful for determining what subset of -the screen windows enclose the location of a mouse event. -.PP -The \fBwmouse_trafo\fR function transforms a given pair of coordinates -from stdscr-relative coordinates -to coordinates relative to the given window or vice versa. -Please remember, that stdscr-relative coordinates are not always identical -to window-relative coordinates due to the mechanism to reserve lines on top -or bottom of the screen for other purposes -(see the \fBripoffline()\fP and \fBslk_init\fR calls, for example). -If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers -\fBpY, pX\fR must reference the coordinates of a location -inside the window \fBwin\fR. -They are converted to window-relative coordinates and returned -through the pointers. -If the conversion was successful, the function returns \fBTRUE\fR. -If one of the parameters was NULL or the location is -not inside the window, \fBFALSE\fR is returned. -If \fBto_screen\fR is -\fBFALSE\fR, the pointers \fBpY, pX\fR must reference window-relative -coordinates. -They are converted to stdscr-relative coordinates if the -window \fBwin\fR encloses this point. -In this case the function returns \fBTRUE\fR. -If one of the parameters is NULL or the point is not inside the -window, \fBFALSE\fR is returned. -Please notice, that the referenced coordinates -are only replaced by the converted coordinates if the transformation was -successful. -.PP -The \fBmouse_trafo\fR function performs the same translation -as \fBwmouse_trafo\fR, -using stdscr for \fBwin\fR. -.PP -The \fBmouseinterval\fR function sets the maximum time (in thousands of a -second) that can elapse between press and release events for them to -be recognized as a click. -Use \fBmouseinterval(0)\fR to disable click resolution. -This function returns the previous interval value. -Use \fBmouseinterval(\-1)\fR to obtain the interval without altering it. -The default is one sixth of a second. -.PP -The \fBhas_mouse\fP function returns TRUE if the mouse driver has been -successfully initialized. -.PP -Note that mouse events will be ignored when input is in cooked mode, and will -cause an error beep when cooked mode is being simulated in a window by a -function such as \fBgetstr\fR that expects a linefeed for input-loop -termination. -.SH RETURN VALUE -\fBgetmouse\fR and \fBungetmouse\fR -return the integer \fBERR\fR upon failure or \fBOK\fR -upon successful completion. -.RS -.TP 5 -\fBgetmouse\fP -returns an error. -If no mouse driver was initialized, or -if the mask parameter is zero, -it also returns an error if no more events remain in the queue. -.TP 5 -\fBungetmouse\fP -returns an error if the FIFO is full. -.RE -.PP -\fBmousemask\fR -returns the mask of reportable events. -.PP -\fBmouseinterval\fR -returns the previous interval value, unless -the terminal was not initialized. -In that case, it returns the maximum interval value (166). -.PP -\fBwenclose\fR and \fBwmouse_trafo\fR -are boolean functions returning \fBTRUE\fR or \fBFALSE\fR depending -on their test result. -.SH PORTABILITY -These calls were designed for \fBncurses\fR(3X), and are not found in SVr4 -curses, 4.4BSD curses, or any other previous version of curses. -.PP -The feature macro \fBNCURSES_MOUSE_VERSION\fR is provided so the preprocessor -can be used to test whether these features are present. -If the interface is changed, the value of \fBNCURSES_MOUSE_VERSION\fR will be -incremented. -These values for \fBNCURSES_MOUSE_VERSION\fR may be -specified when configuring ncurses: -.RS -.TP 3 -1 -has definitions for reserved events. -The mask uses 28 bits. -.TP 3 -2 -adds definitions for button 5, -removes the definitions for reserved events. -The mask uses 29 bits. -.RE -.PP -The order of the \fBMEVENT\fR structure members is not guaranteed. -Additional fields may be added to the structure in the future. -.PP -Under \fBncurses\fR(3X), these calls are implemented using either -xterm's built-in mouse-tracking API or -platform-specific drivers including -.RS -Alessandro Rubini's gpm server -.br -FreeBSD sysmouse -.br -OS/2 EMX -.RE -If you are using an unsupported configuration, -mouse events will not be visible to -\fBncurses\fR(3X) (and the \fBmousemask\fR function will always -return \fB0\fR). -.PP -If the terminfo entry contains a \fBXM\fR string, -this is used in the xterm mouse driver to control the -way the terminal is initialized for mouse operation. -The default, if \fBXM\fR is not found, -corresponds to private mode 1000 of xterm: -.RS -\\E[?1000%?%p1%{1}%=%th%el%; -.RE -The z member in the 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. -.SH BUGS -Mouse events under xterm will not in fact be ignored during cooked mode, -if they have been enabled by \fBmousemask\fR. -Instead, the xterm mouse -report sequence will appear in the string read. -.PP -Mouse events under xterm will not be detected correctly in a window with -its keypad bit off, since they are interpreted as a variety of function key. -Your terminfo description should have \fBkmous\fR set to "\\E[M" -(the beginning of the response from xterm for mouse clicks). -Other values for \fBkmous\fR are permitted, -but under the same assumption, -i.e., it is the beginning of the response. -.PP -Because there are no standard terminal responses that would serve to identify -terminals which support the xterm mouse protocol, \fBncurses\fR assumes that -if your $TERM environment variable contains "xterm", -or \fBkmous\fR is defined in -the terminal description, then the terminal may send mouse events. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_kernel\fR(3X), -\fBcurs_slk\fR(3X), -\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_opaque.3x b/deps/ncurses-5.9/man/curs_opaque.3x deleted file mode 100644 index f3ad22e..0000000 --- a/deps/ncurses-5.9/man/curs_opaque.3x +++ /dev/null @@ -1,141 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2007-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_opaque.3x,v 1.9 2010/12/04 18:40:45 tom Exp $ -.TH curs_opaque 3X "" -.na -.hy 0 -.SH NAME -\fBis_cleared\fR, -\fBis_idlok\fR, -\fBis_idcok\fR, -\fBis_immedok\fR, -\fBis_keypad\fR, -\fBis_leaveok\fR, -\fBis_nodelay\fR, -\fBis_notimeout\fR, -\fBis_pad\fR, -\fBis_scrollok\fR, -\fBis_subwin\fR, -\fBis_syncok\fR \- \fBcurses\fR window properties -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBbool is_cleared(const WINDOW *win);\fR -.br -\fBbool is_idcok(const WINDOW *win);\fR -.br -\fBbool is_idlok(const WINDOW *win);\fR -.br -\fBbool is_immedok(const WINDOW *win);\fR -.br -\fBbool is_keypad(const WINDOW *win);\fR -.br -\fBbool is_leaveok(const WINDOW *win);\fR -.br -\fBbool is_nodelay(const WINDOW *win);\fR -.br -\fBbool is_notimeout(const WINDOW *win);\fR -.br -\fBbool is_pad(const WINDOW *win);\fR -.br -\fBbool is_scrollok(const WINDOW *win);\fR -.br -\fBbool is_subwin(const WINDOW *win);\fR -.br -\fBbool is_syncok(const WINDOW *win);\fR -.br -\fBWINDOW * wgetparent(const WINDOW *win);\fR -.br -\fBint wgetscrreg(const WINDOW *win, int *top, int *bottom);\fR -.br -.SH DESCRIPTION -This implementation provides functions which return properties -set in the WINDOW structure, allowing it to be ``opaque'' if -the symbol \fBNCURSES_OPAQUE\fR is defined: -.TP 5 -\fBis_cleared\fR -returns the value set in \fBclearok\fR -.TP 5 -\fBis_idcok\fR -returns the value set in \fBidcok\fR -.TP 5 -\fBis_idlok\fR -returns the value set in \fBidlok\fR -.TP 5 -\fBis_immedok\fR -returns the value set in \fBimmedok\fR -.TP 5 -\fBis_keypad\fR -returns the value set in \fBkeypad\fR -.TP 5 -\fBis_leaveok\fR -returns the value set in \fBleaveok\fR -.TP 5 -\fBis_nodelay\fR -returns the value set in \fBnodelay\fR -.TP 5 -\fBis_notimeout\fR -returns the value set in \fBnotimeout\fR -.TP 5 -\fBis_pad\fR -returns TRUE if the window is a pad -i.e., created by \fBnewpad\fP -.TP 5 -\fBis_scrollok\fR -returns the value set in \fBscrollok\fR -.TP 5 -\fBis_subwin\fR -returns TRUE if the window is a subwindow, -i.e., created by \fBsubwin\fP or \fBderwin\fP -.TP 5 -\fBis_syncok\fR -returns the value set in \fBsyncok\fR -.TP 5 -\fBwgetparent\fR -returns the parent WINDOW pointer for subwindows, -or NULL for windows having no parent. -.TP 5 -\fBwgetscrreg\fR -returns the top and bottom rows for the scrolling margin as set in \fBwsetscrreg\fP. -.SH RETURN VALUE -These functions all return TRUE or FALSE, except as noted. -.SH NOTES -Both a macro and a function are provided for each name. -.SH PORTABILITY -These routines are specific to ncurses. -They were not supported on Version 7, BSD or System V implementations. -It is recommended that any code depending on ncurses extensions -be conditioned using NCURSES_VERSION. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_inopts\fR(3X), -\fBcurs_outopts\fR(3X), -\fBcurs_window\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_overlay.3x b/deps/ncurses-5.9/man/curs_overlay.3x deleted file mode 100644 index cea734e..0000000 --- a/deps/ncurses-5.9/man/curs_overlay.3x +++ /dev/null @@ -1,81 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_overlay.3x,v 1.16 2010/12/04 18:40:45 tom Exp $ -.TH curs_overlay 3X "" -.na -.hy 0 -.SH NAME -\fBoverlay\fR, -\fBoverwrite\fR, -\fBcopywin\fR \- overlay and manipulate overlapped \fBcurses\fR windows -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint overlay(const WINDOW *srcwin, WINDOW *dstwin);\fR -.br -\fBint overwrite(const WINDOW *srcwin, WINDOW *dstwin);\fR -.br -\fBint copywin(const WINDOW *srcwin, WINDOW *dstwin, int sminrow,\fR - \fBint smincol, int dminrow, int dmincol, int dmaxrow,\fR - \fBint dmaxcol, int overlay);\fR -.SH DESCRIPTION -The \fBoverlay\fR and \fBoverwrite\fR routines overlay \fIsrcwin\fR on -top of \fIdstwin\fR. \fIscrwin\fR and \fIdstwin\fR are not required -to be the same size; only text where the two windows overlap is -copied. The difference is that \fBoverlay\fR is non-destructive -(blanks are not copied) whereas \fBoverwrite\fR is destructive. -.PP -The \fBcopywin\fR routine provides a finer granularity of control over the -\fBoverlay\fR and \fBoverwrite\fR routines. Like in the \fBprefresh\fR -routine, a rectangle is specified in the destination window, (\fIdminrow\fR, -\fIdmincol\fR) and (\fIdmaxrow\fR, \fIdmaxcol\fR), and the upper-left-corner -coordinates of the source window, (\fIsminrow\fR, \fIsmincol\fR). If the -argument \fIoverlay\fR is \fBtrue\fR, then copying is non-destructive, as in -\fBoverlay\fR. -.SH RETURN VALUE -Routines that return an integer return \fBERR\fR upon failure, and \fBOK\fR -(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful -completion. -.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. -.SH NOTES -Note that \fBoverlay\fR and \fBoverwrite\fR may be macros. -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions (adding the const -qualifiers). It further specifies their behavior in the presence of characters -with multibyte renditions (not yet supported in this implementation). -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_pad\fR(3X), \fBcurs_refresh\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_pad.3x b/deps/ncurses-5.9/man/curs_pad.3x deleted file mode 100644 index 6ce640b..0000000 --- a/deps/ncurses-5.9/man/curs_pad.3x +++ /dev/null @@ -1,157 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_pad.3x,v 1.17 2010/12/04 18:41:07 tom Exp $ -.TH curs_pad 3X "" -.na -.hy 0 -.SH NAME -\fBnewpad\fR, -\fBsubpad\fR, -\fBprefresh\fR, -\fBpnoutrefresh\fR, -\fBpechochar\fR, -\fBpecho_wchar\fR \- create and display \fBcurses\fR pads -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBWINDOW *newpad(int nlines, int ncols);\fR -.br -\fBWINDOW *subpad(WINDOW *orig, int nlines, int ncols,\fR - \fBint begin_y, int begin_x);\fR -.br -\fBint prefresh(WINDOW *pad, int pminrow, int pmincol,\fR - \fBint sminrow, int smincol, int smaxrow, int smaxcol);\fR -.br -\fBint pnoutrefresh(WINDOW *pad, int pminrow, int pmincol,\fR - \fBint sminrow, int smincol, int smaxrow, int smaxcol);\fR -.br -\fBint pechochar(WINDOW *pad, chtype ch);\fR -.br -\fBint pecho_wchar(WINDOW *pad, const cchar_t *wch);\fR -.SH DESCRIPTION -The \fBnewpad\fR routine creates and returns a pointer to a new pad data -structure with the given number of lines, \fInlines\fR, and columns, -\fIncols\fR. -A pad is like a window, except that it is not restricted by the -screen size, and is not necessarily associated with a particular part of the -screen. -Pads can be used when a large window is needed, and only a part of the -window will be on the screen at one time. -Automatic refreshes of pads -(e.g., from scrolling or echoing of input) do not occur. -It is not -legal to call \fBwrefresh\fR with a \fIpad\fR as an argument; the routines -\fBprefresh\fR or \fBpnoutrefresh\fR should be called instead. -Note that these -routines require additional parameters to specify the part of the pad to be -displayed and the location on the screen to be used for the display. -.PP -The \fBsubpad\fR routine creates and returns a pointer to a subwindow within a -pad with the given number of lines, \fInlines\fR, and columns, \fIncols\fR. -Unlike \fBsubwin\fR, which uses screen coordinates, the window is at position -(\fIbegin\fR_\fIx\fR\fB,\fR \fIbegin\fR_\fIy\fR) on the pad. -The window is -made in the middle of the window \fIorig\fR, so that changes made to one window -affect both windows. -During the use of this routine, it will often be -necessary to call \fBtouchwin\fR or \fBtouchline\fR on \fIorig\fR before -calling \fBprefresh\fR. -.PP -The \fBprefresh\fR and \fBpnoutrefresh\fR routines are analogous to -\fBwrefresh\fR and \fBwnoutrefresh\fR except that they relate to pads instead -of windows. -The additional parameters are needed to indicate what part of the -pad and screen are involved. -The \fIpminrow\fR and \fIpmincol\fR parameters specify the upper -left-hand corner of the rectangle to be displayed in the pad. -The \fIsminrow\fR, -\fIsmincol\fR, \fIsmaxrow\fR, and \fIsmaxcol\fR -parameters specify the edges of the -rectangle to be displayed on the screen. -The lower right-hand corner of the -rectangle to be displayed in the pad is calculated from the screen coordinates, -since the rectangles must be the same size. -Both rectangles must be entirely -contained within their respective structures. -Negative values of -\fIpminrow\fR, \fIpmincol\fR, \fIsminrow\fR, or \fIsmincol\fR are treated as if -they were zero. -.PP -The \fBpechochar\fR routine is functionally equivalent to a call to \fBaddch\fR -followed by a call to \fBrefresh\fR, a call to \fBwaddch\fR followed by a call -to \fBwrefresh\fR, or a call to \fBwaddch\fR followed by a call to -\fBprefresh\fR. -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 these routines instead of their -equivalents. -In the case of \fBpechochar\fR, the last location of the pad on -the screen is reused for the arguments to \fBprefresh\fR. -.PP -The \fBpecho_wchar\fR function is the analogous wide-character -form of \fBpechochar\fR. -It outputs one character to a pad and immediately refreshes the pad. -It does this by a call to \fBwadd_wch\fR followed by a call to \fBprefresh\fR. -.SH RETURN VALUE -Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR -(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful -completion. -.PP -Routines that return pointers return \fBNULL\fR on error, and set \fBerrno\fR -to \fBENOMEM\fR. -.PP -X/Open does not define any error conditions. -In this implementation -.RS -.TP 5 -\fBprefresh\fP and \fBpnoutrefresh\fP -return an error -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 \fBwechochar\fP returns an error. -.TP 5 -\fBpecho_wchar\fP -returns an error -if the window is not really a pad, and the associated call -to \fBwecho_wchar\fP returns an error. -.RE -.SH NOTES -Note that \fBpechochar\fR may be a macro. -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_refresh\fR(3X), \fBcurs_touch\fR(3X), \fBcurs_addch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_printw.3x b/deps/ncurses-5.9/man/curs_printw.3x deleted file mode 100644 index 9918f9d..0000000 --- a/deps/ncurses-5.9/man/curs_printw.3x +++ /dev/null @@ -1,92 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_printw.3x,v 1.20 2010/12/04 18:40:45 tom Exp $ -.TH curs_printw 3X "" -.na -.hy 0 -.SH NAME -\fBprintw\fR, -\fBwprintw\fR, -\fBmvprintw\fR, -\fBmvwprintw\fR, -\fBvwprintw\fR, \fBvw_printw\fR \- print formatted output in \fBcurses\fR windows -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint printw(const char *fmt, ...);\fR -.br -\fBint wprintw(WINDOW *win, const char *fmt, ...);\fR -.br -\fBint mvprintw(int y, int x, const char *fmt, ...);\fR -.br -\fBint mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...);\fR -.br -\fBint vwprintw(WINDOW *win, const char *fmt, va_list varglist);\fR -.br -\fBint vw_printw(WINDOW *win, const char *fmt, va_list varglist);\fR -.br -.SH DESCRIPTION -The \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR and \fBmvwprintw\fR -routines are analogous to \fBprintf\fR [see \fBprintf\fR(3)]. In -effect, the string that would be output by \fBprintf\fR is output -instead as though \fBwaddstr\fR were used on the given window. -.PP -The \fBvwprintw\fR and \fBwv_printw\fR routines are analogous -to \fBvprintf\fR [see \fBprintf\fR(3)] -and perform a \fBwprintw\fR using a variable argument list. -The third argument is a \fBva_list\fR, a pointer to a -list of arguments, as defined in \fB\fR. -.SH RETURN VALUE -Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR -(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful -completion. -.PP -X/Open defines no error conditions. -In this implementation, -an error may be returned if it cannot allocate enough memory for the -buffer used to format the results. -It will return an error if the window pointer is null. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. The function -\fBvwprintw\fR is marked TO BE WITHDRAWN, and is to be replaced by a function -\fBvw_printw\fR using the \fB\fR interface. -The Single Unix Specification, Version 2 states that -\fBvw_printw\fR is preferred to \fBvwprintw\fR since the latter requires -including \fB\fR, which -cannot be used in the same file as \fB\fR. -This implementation uses \fB\fR for both, because that header -is included in \fB. -.SH SEE ALSO -\fBcurses\fR(3X), \fBprintf\fR(3), \fBvprintf(3)\fR diff --git a/deps/ncurses-5.9/man/curs_refresh.3x b/deps/ncurses-5.9/man/curs_refresh.3x deleted file mode 100644 index e1552c3..0000000 --- a/deps/ncurses-5.9/man/curs_refresh.3x +++ /dev/null @@ -1,140 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_refresh.3x,v 1.15 2010/12/04 18:38:55 tom Exp $ -.TH curs_refresh 3X "" -.na -.hy 0 -.SH NAME -\fBdoupdate\fR, -\fBredrawwin\fR, -\fBrefresh\fR, -\fBwnoutrefresh\fR, -\fBwredrawln\fR, -\fBwrefresh\fR \- refresh \fBcurses\fR windows and lines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint refresh(void);\fR -.br -\fBint wrefresh(WINDOW *win);\fR -.br -\fBint wnoutrefresh(WINDOW *win);\fR -.br -\fBint doupdate(void);\fR -.br -\fBint redrawwin(WINDOW *win);\fR -.br -\fBint wredrawln(WINDOW *win, int beg_line, int num_lines);\fR -.br -.SH DESCRIPTION -The \fBrefresh\fR and \fBwrefresh\fR routines (or \fBwnoutrefresh\fR and -\fBdoupdate\fR) must be called to get actual output to the terminal, as other -routines merely manipulate data structures. -The routine \fBwrefresh\fR copies -the named window to the physical terminal screen, taking into account what is -already there to do optimizations. -The \fBrefresh\fR routine is the -same, using \fBstdscr\fR as the default window. -Unless \fBleaveok\fR has been -enabled, the physical cursor of the terminal is left at the location of the -cursor for that window. -.PP -The \fBwnoutrefresh\fR and \fBdoupdate\fR routines allow multiple updates with -more efficiency than \fBwrefresh\fR alone. -In addition to all the window -structures, \fBcurses\fR 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. -.PP -The routine \fBwrefresh\fR works by first calling \fBwnoutrefresh\fR, which -copies the named window to the virtual screen, and then calling \fBdoupdate\fR, -which compares the virtual screen to the physical screen and does the actual -update. -If the programmer wishes to output several windows at once, a series -of calls to \fBwrefresh\fR results in alternating calls to \fBwnoutrefresh\fR -and \fBdoupdate\fR, causing several bursts of output to the screen. -By first -calling \fBwnoutrefresh\fR for each window, it is then possible to call -\fBdoupdate\fR once, resulting in only one burst of output, with fewer total -characters transmitted and less CPU time used. -If the \fIwin\fR argument to -\fBwrefresh\fR is the global variable \fBcurscr\fR, the screen is immediately -cleared and repainted from scratch. -.PP -The phrase "copies the named window to the virtual screen" above is ambiguous. -What actually happens is that all \fItouched\fR (changed) lines in the window -are copied to the virtual screen. -This affects programs that use overlapping -windows; it means that if two windows overlap, you can refresh them in either -order and the overlap region will be modified only when it is explicitly -changed. -(But see the section on \fBPORTABILITY\fR below for a warning about -exploiting this behavior.) -.PP -The \fBwredrawln\fR routine indicates to \fBcurses\fR that some screen lines -are corrupted and should be thrown away before anything is written over them. -It touches the indicated lines (marking them changed). -The routine \fBredrawwin\fR() touches the entire window. -.SH RETURN VALUE -Routines that return an integer return \fBERR\fR upon failure, and \fBOK\fR -(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful -completion. -.PP -X/Open does not define any error conditions. -In this implementation -.RS -.TP 5 -\fBwnoutrefresh\fP -returns an error -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. -.RE -.SH NOTES -Note that \fBrefresh\fR and \fBredrawwin\fR may be macros. -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. -.PP -Whether \fBwnoutrefresh()\fR copies to the virtual screen the entire contents -of a window or just its changed portions has never been well-documented in -historic curses versions (including SVr4). -It might 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 \fBtouchwin()\fR before the -\fBwnoutrefresh()\fR call to guarantee an entire-contents copy anywhere. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_outopts\fR(3X) -\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_scanw.3x b/deps/ncurses-5.9/man/curs_scanw.3x deleted file mode 100644 index a3208f5..0000000 --- a/deps/ncurses-5.9/man/curs_scanw.3x +++ /dev/null @@ -1,95 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_scanw.3x,v 1.17 2010/12/04 18:40:45 tom Exp $ -.TH curs_scanw 3X "" -.SH NAME -\fBscanw\fR, -\fBwscanw\fR, -\fBmvscanw\fR, -\fBmvwscanw\fR, -\fBvwscanw\fR, \fBvw_scanw\fR \- convert formatted input from a \fBcurses\fR window -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint scanw(char *fmt, ...);\fR -.br -\fBint wscanw(WINDOW *win, char *fmt, ...);\fR -.br -\fBint mvscanw(int y, int x, char *fmt, ...);\fR -.br -\fBint mvwscanw(WINDOW *win, int y, int x, char *fmt, ...);\fR -.br -\fBint vw_scanw(WINDOW *win, char *fmt, va_list varglist);\fR -.br -\fBint vwscanw(WINDOW *win, char *fmt, va_list varglist);\fR -.SH DESCRIPTION -The \fBscanw\fR, \fBwscanw\fR and \fBmvscanw\fR routines are analogous to -\fBscanf\fR [see \fBscanf\fR(3)]. The effect of these routines is as though -\fBwgetstr\fR were called on the window, and the resulting line used as input -for \fBsscanf\fR(3). Fields which do not map to a variable in the \fIfmt\fR -field are lost. -.PP -The \fBvwscanw\fR and \fBvw_scanw\fR routines are analogous to \fBvscanf\fR. -They perform a \fBwscanw\fR using a variable argument list. -The third argument is a \fIva_list\fR, -a pointer to a list of arguments, as defined in \fB\fR. -.SH RETURN VALUE -\fBvwscanw\fR returns \fBERR\fR on failure and an integer equal to the -number of fields scanned on success. -.PP -Applications may use the return value from the \fBscanw\fR, \fBwscanw\fR, -\fBmvscanw\fR and \fBmvwscanw\fR routines to determine the number of fields -which were mapped in the call. -.PP -Functions with a "mv" prefix first perform a cursor movement using -\fBwmove\fP, and return an error if the position is outside the window, -or if the window pointer is null. -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. The function -\fBvwscanw\fR is marked TO BE WITHDRAWN, and is to be replaced by a function -\fBvw_scanw\fR using the \fB\fR interface. -The Single Unix Specification, Version 2 states that -\fBvw_scanw\fR is preferred to \fBvwscanw\fR since the latter requires -including \fB\fR, which -cannot be used in the same file as \fB\fR. -This implementation uses \fB\fR for both, because that header -is included in \fB. -.LP -Both XSI and The Single Unix Specification, Version 2 state that these -functions return ERR or OK. -Since the underlying \fBscanf\fR can return the number of items scanned, -and the SVr4 code was documented to use this feature, -this is probably an editing error which was introduced in XSI, -rather than being done intentionally. -Portable applications should only test if the return value is ERR, -since the OK value (zero) is likely to be misleading. -One possible way to get useful results would be to use a "%n" conversion -at the end of the format string to ensure that something was processed. -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_getstr\fR(3X), \fBcurs_printw\fR(3X), \fBscanf\fR(3) diff --git a/deps/ncurses-5.9/man/curs_scr_dump.3x b/deps/ncurses-5.9/man/curs_scr_dump.3x deleted file mode 100644 index df3e79c..0000000 --- a/deps/ncurses-5.9/man/curs_scr_dump.3x +++ /dev/null @@ -1,96 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_scr_dump.3x,v 1.9 2010/12/04 18:40:45 tom Exp $ -.TH curs_scr_dump 3X "" -.na -.hy 0 -.SH NAME -\fBscr_dump\fR, -\fBscr_restore\fR, -\fBscr_init\fR, -\fBscr_set\fR \- read (write) a \fBcurses\fR screen from (to) a file -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint scr_dump(const char *filename);\fR -.br -\fBint scr_restore(const char *filename);\fR -.br -\fBint scr_init(const char *filename);\fR -.br -\fBint scr_set(const char *filename);\fR -.br -.SH DESCRIPTION -The \fBscr_dump\fR routine dumps the current contents of the virtual screen -to the file \fIfilename\fR. -.PP -The \fBscr_restore\fR routine sets the virtual screen to the contents -of \fIfilename\fR, which must have been written using \fBscr_dump\fR. The next -call to \fBdoupdate\fR restores the screen to the way it looked in the dump -file. -.PP -The \fBscr_init\fR routine reads in the contents of \fIfilename\fR and uses -them to initialize the \fBcurses\fR data structures about what the terminal -currently has on its screen. If the data is determined to be valid, -\fBcurses\fR bases its next update of the screen on this information rather -than clearing the screen and starting from scratch. \fBscr_init\fR is used -after \fBinitscr\fR or a \fBsystem\fR call to share -the screen with another process which has done a \fBscr_dump\fR after its -\fBendwin\fR call. The data is declared invalid if the terminfo capabilities -\fBrmcup\fR and \fBnrrmc\fR exist; also if the terminal has been written to -since the preceding \fBscr_dump\fR call. -.PP -The \fBscr_set\fR routine is a combination of \fBscr_restore\fR and -\fBscr_init\fR. It tells the program that the information in \fIfilename\fR 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. -.PP -To read (write) a window from (to) a file, use the \fBgetwin\fR and -\fBputwin\fR routines [see \fBcurs_util\fR(3X)]. -.SH RETURN VALUE -All routines return the integer \fBERR\fR upon failure and \fBOK\fR -upon success. -.PP -X/Open defines no error conditions. -In this implementation, -each will return an error if the file cannot be opened. -.SH NOTES -Note that \fBscr_init\fR, \fBscr_set\fR, and \fBscr_restore\fR may be macros. -.SH PORTABILITY -The XSI Curses standard, Issue 4, describes these functions (adding the const -qualifiers). -.PP -The SVr4 docs merely say under \fBscr_init\fR that the dump data is also -considered invalid "if the time-stamp of the tty is old" but do not define -"old". -.SH SEE ALSO -\fBcurses\fR(3X), \fBcurs_initscr\fR(3X), \fBcurs_refresh\fR(3X), -\fBcurs_util\fR(3X), \fBsystem\fR(3) diff --git a/deps/ncurses-5.9/man/curs_slk.3x b/deps/ncurses-5.9/man/curs_slk.3x deleted file mode 100644 index e8f7afb..0000000 --- a/deps/ncurses-5.9/man/curs_slk.3x +++ /dev/null @@ -1,242 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_slk.3x,v 1.22 2010/12/04 18:38:55 tom Exp $ -.TH curs_slk 3X "" -.na -.hy 0 -.SH NAME -\fBslk_init\fR, -\fBslk_set\fR, -\fBslk_wset\fR, -\fBslk_refresh\fR, -\fBslk_noutrefresh\fR, -\fBslk_label\fR, -\fBslk_clear\fR, -\fBslk_restore\fR, -\fBslk_touch\fR, -\fBslk_attron\fR, -\fBslk_attrset\fR, -\fBslk_attroff\fR, -\fBslk_attr_on\fR, -\fBslk_attr_set\fR, -\fBslk_attr_off\fR, -\fBslk_attr\fR, -\fBslk_color\fR \- \fBcurses\fR soft label routines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBint slk_init(int fmt);\fR -.br -\fBint slk_set(int labnum, const char *label, int fmt);\fR -.br -\fBint slk_refresh(void);\fR -.br -\fBint slk_noutrefresh(void);\fR -.br -\fBchar *slk_label(int labnum);\fR -.br -\fBint slk_clear(void);\fR -.br -\fBint slk_restore(void);\fR -.br -\fBint slk_touch(void);\fR -.br -\fBint slk_attron(const chtype attrs);\fR -.br -\fBint slk_attroff(const chtype attrs);\fR -.br -\fBint slk_attrset(const chtype attrs);\fR -.br -\fBint slk_attr_on(attr_t attrs, void* opts);\fR -.br -\fBint slk_attr_off(const attr_t attrs, void * opts);\fR -.br -\fBint slk_attr_set(const attr_t attrs, short color_pair, void* opts);\fR -.br -\fBattr_t slk_attr(void);\fR -.br -\fBint slk_color(short color_pair);\fR -.br -\fBint slk_wset(int labnum, const wchar_t *label, int fmt);\fR -.br -.SH DESCRIPTION -The slk* functions manipulate the set of soft function-key labels that exist on -many terminals. -For those terminals that do not have soft labels, -\fBcurses\fR takes over the bottom line of \fBstdscr\fR, reducing the size of -\fBstdscr\fR and the variable \fBLINES\fR. -\fBcurses\fR standardizes on eight -labels of up to eight characters each. -In addition to this, the ncurses -implementation supports a mode where it simulates 12 labels of up to five -characters each. -This is useful for today's PC-like enduser devices. -ncurses simulates this mode by taking over up to two lines at -the bottom of the screen; -it does not try to use any hardware support for this -mode. -.PP -The \fBslk_init\fR routine must be called before \fBinitscr\fR or \fBnewterm\fR -is called. -If \fBinitscr\fR eventually uses a line from \fBstdscr\fR to -emulate the soft labels, -then \fIfmt\fR determines how the labels are arranged on the screen: -.RS -.TP 3 -.B 0 -indicates a 3\-2\-3 arrangement of -the labels. -.TP 3 -.B 1 -indicates a 4\-4 arrangement -.TP 3 -.B 2 -indicates the PC-like 4\-4\-4 mode. -.TP 3 -.B 3 -is again the PC-like 4\-4\-4 mode, -but in addition an index line is generated, helping the user to -identify the key numbers easily. -.RE -.PP -The \fBslk_set\fR routine -(and the \fBslk_wset\fR routine for the wide-character library) -has three parameters: -.RS -.TP 5 -.I labnum -is the label number, from \fB1\fR to \fB8\fR -(12 for \fIfmt\fP in \fBslk_init\fP is \fB2\fP or \fB3\fP); -.TP -.I label -is be the string to put on the label, -up to eight -(five for \fIfmt\fP in \fBslk_init\fP is \fB2\fP or \fB3\fP) -characters in length. -A null string or a null pointer sets up a blank label. -.TP -.I fmt -is either -\fB0\fR, \fB1\fR, or \fB2\fR, indicating whether the label is to be -left-justified, centered, or right-justified, respectively, within the -label. -.RE -.PP -The \fBslk_refresh\fR and \fBslk_noutrefresh\fR routines correspond to -the \fBwrefresh\fR and \fBwnoutrefresh\fR routines. -.PP -The \fBslk_label\fR routine returns the current label for label number -\fIlabnum\fR, with leading and trailing blanks stripped. -.PP -The \fBslk_clear\fR routine clears the soft labels from the screen. -.PP -The \fBslk_restore\fR routine restores the soft labels to the screen -after a \fBslk_clear\fR has been performed. -.PP -The \fBslk_touch\fR routine forces all the soft labels to be output -the next time a \fBslk_noutrefresh\fR is performed. -.PP -The \fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR and \fBslk_attr\fR -routines correspond to \fBattron\fR, \fBattrset\fR, \fBattroff\fR and \fBattr_get\fR. -They have an effect only if soft labels are simulated on the bottom line of -the screen. -The default highlight for soft keys is A_STANDOUT (as in -System V curses, which does not document this fact). -.PP -The \fBslk_color\fR routine corresponds to \fBcolor_set\fR. -It has an effect only -if soft labels are simulated on the bottom line of the screen. -. -.SH RETURN VALUE -These routines return \fBERR\fR upon failure and OK (SVr4 specifies only "an -integer value other than \fBERR\fR") upon successful completion. -.PP -X/Open defines no error conditions. -In this implementation -.RS -.TP 5 -\fBslk_attr\fR -returns the attribute used for the soft keys. -.TP 5 -.na -.hy 0 -\fBslk_attroff\fP, \fBslk_attron\fP, \fBslk_clear\fP, \fBslk_noutrefresh\fP, \fBslk_refresh\fP, \fBslk_touch\fP -.ad -.hy -return an error -if the terminal or the softkeys were not initialized. -.TP 5 -\fBslk_attrset\fP -returns an error -if the terminal or the softkeys were not initialized. -.TP 5 -\fBslk_attr_set\fP -returns an error -if the terminal or the softkeys were not initialized, or -the color pair is outside the range 0..COLOR_PAIRS\-1, -or opts is not null. -.TP 5 -\fBslk_color\fP -returns an error -if the terminal or the softkeys were not initialized, or -the color pair is outside the range 0..COLOR_PAIRS\-1. -.TP 5 -\fBslk_init\fR -returns an error -if the format parameter is outside the range 0..3. -.TP 5 -\fBslk_label\fR -returns \fBNULL\fR on error. -.TP 5 -\fBslk_set\fP -returns an error -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 -memory for the labels cannot be allocated. -.RE -.SH NOTES -Most applications would use \fBslk_noutrefresh\fR because a -\fBwrefresh\fR is likely to follow soon. -.SH PORTABILITY -The XSI Curses standard, Issue 4, describes these functions. -It changes the -argument type of the attribute-manipulation functions \fBslk_attron\fR, -\fBslk_attroff\fR, \fBslk_attrset\fR to be \fBattr_t\fR, and adds \fBconst\fR -qualifiers. -The format codes \fB2\fR and \fB3\fR for \fBslk_init()\fR and the -function \fBslk_attr\fR are specific to ncurses. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_attr\fR(3X), -\fBcurs_initscr\fR(3X), -\fBcurs_refresh\fR(3X), -\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_sp_funcs.3x b/deps/ncurses-5.9/man/curs_sp_funcs.3x deleted file mode 100644 index 020e5c1..0000000 --- a/deps/ncurses-5.9/man/curs_sp_funcs.3x +++ /dev/null @@ -1,353 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_sp_funcs.3x,v 1.5 2010/12/04 18:38:55 tom Exp $ -.TH curs_sp_funcs 3X "" -.na -.hy 0 -.SH NAME -new_prescr \- \fBcurses\fR screen-pointer extension -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.nf -.sp -\fBint assume_default_colors_sp(SCREEN*, int, int);\fR -.br -\fBint baudrate_sp(SCREEN*);\fR -.br -\fBint beep_sp(SCREEN*);\fR -.br -\fBbool can_change_color_sp(SCREEN*);\fR -.br -\fBint cbreak_sp(SCREEN*);\fR -.br -\fBint color_content_sp(SCREEN*, short, short*, short*, short*);\fR -.br -\fBint curs_set_sp(SCREEN*, int);\fR -.br -\fBint define_key_sp(SCREEN*, const char *, int);\fR -.br -\fBint def_prog_mode_sp(SCREEN*);\fR -.br -\fBint def_shell_mode_sp(SCREEN*);\fR -.br -\fBint delay_output_sp(SCREEN*, int);\fR -.br -\fBint doupdate_sp(SCREEN*);\fR -.br -\fBint echo_sp(SCREEN*);\fR -.br -\fBint endwin_sp(SCREEN*);\fR -.br -\fBint erasechar_sp(SCREEN*);\fR -.br -\fBint filter_sp(SCREEN*);\fR -.br -\fBint flash_sp(SCREEN*);\fR -.br -\fBint flushinp_sp(SCREEN*);\fR -.br -\fBint get_escdelay_sp(SCREEN*);\fR -.br -\fBint getmouse_sp(SCREEN*, MEVENT*);\fR -.br -\fBWINDOW* getwin_sp(SCREEN*, FILE*);\fR -.br -\fBint halfdelay_sp(SCREEN*);\fR -.br -\fBbool has_colors_sp(SCREEN*);\fR -.br -\fBbool has_ic_sp(SCREEN*);\fR -.br -\fBbool has_il_sp(SCREEN*);\fR -.br -\fBint has_key_sp(SCREEN*, int);\fR -.br -\fBbool has_mouse_sp(SCREEN*);\fR -.br -\fBint init_color_sp(SCREEN*, short, short, short, short);\fR -.br -\fBint init_pair_sp(SCREEN*, short, short, short);\fR -.br -\fBint intrflush_sp(SCREEN*, WINDOW*, bool);\fR -.br -\fBbool isendwin_sp(SCREEN*);\fR -.br -\fBbool is_term_resized_sp(SCREEN*, int, int);\fR -.br -\fBchar* keybound_sp(SCREEN*, int, int);\fR -.br -\fBint key_defined_sp(SCREEN*, const char *);\fR -.br -\fBNCURSES_CONST char * keyname_sp(SCREEN*, int);\fR -.br -\fBint keyok_sp(SCREEN*, int, bool);\fR -.br -\fBchar killchar_sp(SCREEN*);\fR -.br -\fBint mcprint_sp(SCREEN*, char *, int);\fR -.br -\fBint mouseinterval_sp(SCREEN*, int);\fR -.br -\fBmmask_t mousemask_sp(SCREEN*, mmask_t, mmask_t *);\fR -.br -\fBint mvcur_sp(SCREEN*, int, int, int, int);\fR -.br -\fBint napms_sp(SCREEN*, int);\fR -.br -\fBWINDOW* newpad_sp(SCREEN*, int, int);\fR -.br -\fBSCREEN* new_prescr(void);\fR -.br -\fBSCREEN* newterm_sp(SCREEN*, NCURSES_CONST char *, FILE *, FILE *);\fR -.br -\fBWINDOW* newwin_sp(SCREEN*, int, int, int, int);\fR -.br -\fBint nl_sp(SCREEN*);\fR -.br -\fBint nocbreak_sp(SCREEN*);\fR -.br -\fBint noecho_sp(SCREEN*);\fR -.br -\fBint nofilter_sp(SCREEN*);\fR -.br -\fBint nonl_sp(SCREEN*);\fR -.br -\fBvoid noqiflush_sp(SCREEN*);\fR -.br -\fBint noraw_sp(SCREEN*);\fR -.br -\fBint pair_content_sp(SCREEN*, short, short*, short*);\fR -.br -\fBvoid qiflush_sp(SCREEN*);\fR -.br -\fBint raw_sp(SCREEN*);\fR -.br -\fBint reset_prog_mode_sp(SCREEN*);\fR -.br -\fBint reset_shell_mode_sp(SCREEN*);\fR -.br -\fBint resetty_sp(SCREEN*);\fR -.br -\fBint resize_term_sp(SCREEN*, int, int);\fR -.br -\fBint resizeterm_sp(SCREEN*, int, int);\fR -.br -\fBint restartterm_sp(SCREEN*, NCURSES_CONST char*, int, int *);\fR -.br -\fBint ripoffline_sp(SCREEN*, int, int (*)(WINDOW*, int));\fR -.br -\fBint savetty_sp(SCREEN*);\fR -.br -\fBint scr_init_sp(SCREEN*, const char *);\fR -.br -\fBint scr_restore_sp(SCREEN*, const char *);\fR -.br -\fBint scr_set_sp(SCREEN*, const char *);\fR -.br -\fBTERMINAL* set_curterm_sp(SCREEN*, TERMINAL*);\fR -.br -\fBint set_escdelay_sp(SCREEN*, int);\fR -.br -\fBint set_tabsize_sp(SCREEN*, int);\fR -.br -\fBint slk_attroff_sp(SCREEN*, const chtype);\fR -.br -\fBint slk_attron_sp(SCREEN*, const chtype);\fR -.br -\fBint slk_attr_set_sp(SCREEN*, const attr_t, short, void*);\fR -.br -\fBint slk_attrset_sp(SCREEN*, const chtype);\fR -.br -\fBint slk_attr_sp((SCREEN*);\fR -.br -\fBint slk_clear_sp(SCREEN*);\fR -.br -\fBint slk_color_sp(SCREEN*, short);\fR -.br -\fBint slk_init_sp(SCREEN*, int);\fR -.br -\fBint slk_label_sp(SCREEN*, int);\fR -.br -\fBint slk_noutrefresh_sp(SCREEN*);\fR -.br -\fBint slk_refresh_sp(SCREEN*);\fR -.br -\fBint slk_restore_sp(SCREEN*);\fR -.br -\fBint slk_set_sp(SCREEN*, int, const char *, int);\fR -.br -\fBint slk_touch_sp(SCREEN*);\fR -.br -\fBint start_color_sp(SCREEN*);\fR -.br -\fBattr_t term_attrs_sp(SCREEN*);\fR -.br -\fBchtype termattrs_sp(SCREEN*);\fR -.br -\fBchar* termname_sp(SCREEN*);\fR -.br -\fBint typeahead_sp(SCREEN*, int);\fR -.br -\fBNCURSES_CONST char* unctrl_sp(SCREEN*, chtype);\fR -.br -\fBint ungetch_sp(SCREEN*, int);\fR -.br -\fBint ungetmouse_sp(SCREEN*,MEVENT *);\fR -.br -\fBint unget_wch_sp(SCREEN*, const wchar_t);\fR -.br -\fBint use_default_colors_sp(SCREEN*);\fR -.br -\fBvoid use_env_sp(SCREEN*, bool);\fR -.br -\fBint use_legacy_coding_sp(SCREEN*, int);\fR -.br -\fBint vid_attr_sp(SCREEN*, attr_t, short, void *);\fR -.br -\fBint vidattr_sp(SCREEN*, chtype);\fR -.br -\fBint vid_puts_sp(SCREEN*, attr_t, short, void *, NCURSES_SP_OUTC);\fR -.br -\fBint vidputs_sp(SCREEN*, chtype, NCURSES_SP_OUTC);\fR -.br -\fBwchar_t* wunctrl_sp(SCREEN*, cchar_t *);\fR -.sp -\fB#include \fR -.sp -\fBint new_form_sp(SCREEN*, FIELD **);\fR -.sp -\fB#include \fR -.sp -\fBint new_menu_sp(SCREEN*, ITEM **);\fR -.sp -\fB#include \fR -.sp -\fBint ceiling_panel(SCREEN*);\fR -.br -\fBPANEL* ground_panel(SCREEN*);\fR -.br -\fBint update_panels_sp(SCREEN*);\fR -.sp -\fB#include \fR -.sp -\fBint del_curterm_sp(SCREEN*, TERMINAL *);\fR -.br -\fBint putp_sp(SCREEN*, const char *);\fR -.br -\fBint tgetflag_sp(SCREEN*, char *, const char *);\fR -.br -\fBint tgetent_sp(SCREEN*, char *, const char *);\fR -.br -\fBint tgetnum_sp(SCREEN*, NCURSES_CONST char *);\fR -.br -\fBchar* tgetstr_sp(SCREEN*, NCURSES_CONST char *, char **);\fR -.br -\fBint tigetflag_sp(SCREEN*, NCURSES_CONST char *);\fR -.br -\fBint tigetnum_sp(SCREEN*, NCURSES_CONST char *);\fR -.br -\fBchar* tigetstr_sp(SCREEN*, NCURSES_CONST char *);\fR -.br -\fBint tputs_sp(SCREEN*, const char *, int, NCURSES_SP_OUTC);\fR -.ad -.br -.SH DESCRIPTION -This implementation can be configured to provide a set of functions which -improve the ability to manage multiple screens. -This feature can be added to any of the configurations supported by ncurses; -it adds new entrypoints -without changing the meaning of any of the existing ones. -.PP -.\" *************************************************************************** -.SS IMPROVED FUNCTIONS -Most of the functions are new versions of existing functions. -A parameter is added at the front of the parameter list. -It is a SCREEN pointer. -.PP -The existing functions all use the current screen, -which is a static variable. -The extended functions use the specified screen, -thereby reducing the number of variables which must be modified -to update multiple screens. -.\" *************************************************************************** -.SS NEW FUNCTIONS -Here are the new functions: -.TP 5 -ceiling_panel -this returns a pointer to the topmost panel in the given screen. -.TP 5 -ground_panel -this returns a pointer to the lowest panel in the given screen. -.TP 5 -new_prescr -when creating a new screen, the library uses static variables which -have been preset, e.g., by \fBuse_env\fP(3X), \fBfilter\fP(3X), etc. -With the screen-pointer extension, -there are situations where it must create a current screen before -the unextended library does. -The \fBnew_prescr\fP function is used internally to handle these cases. -It is also provided as an entrypoint to allow applications to customize -the library initialization. -.\" *************************************************************************** -.SH NOTES -This extension introduces some new names: -.TP 5 -NCURSES_SP_FUNCS -This is set to the library patch-level number. -In the unextended library, this is zero (0), -to make it useful for checking if the extension is provided. -.TP 5 -NCURSES_SP_NAME -The new functions are named using the macro \fINCURSES_SP_NAME\fP, -which hides the actual implementation. -Currently this adds a "_sp" suffix to the name of the unextended function. -This manual page indexes the extensions showing the full name. -However the proper usage of these functions uses the macro, -to provide for the possibility of changing the naming convention -for specific library configurations. -.TP 5 -NCURSES_SP_OUTC -This is a new function-pointer type to use in the screen-pointer functions -where an \fINCURSES_OUTC\fP is used in the unextended library. -.TP 5 -NCURSES_OUTC -This is a function-pointer type used for the cases where a function passes -characters to the output stream, e.g., \fBvidputs\fP(3X). -.PP -.SH PORTABILITY -These routines are specific to ncurses. -They were not supported on Version 7, BSD or System V implementations. -It is recommended that any code depending on ncurses extensions -be conditioned using \fINCURSES_SP_FUNCS\fP. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_opaque\fR(3X), -\fBcurs_threads\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_termcap.3x b/deps/ncurses-5.9/man/curs_termcap.3x deleted file mode 100644 index 70a6710..0000000 --- a/deps/ncurses-5.9/man/curs_termcap.3x +++ /dev/null @@ -1,172 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_termcap.3x,v 1.26 2010/12/04 18:38:55 tom Exp $ -.TH curs_termcap 3X "" -.na -.hy 0 -.ds n 5 -.SH NAME -\fBPC\fR, -\fBUP\fR, -\fBBC\fR, -\fBospeed\fR, -\fBtgetent\fR, -\fBtgetflag\fR, -\fBtgetnum\fR, -\fBtgetstr\fR, -\fBtgoto\fR, -\fBtputs\fR \- direct \fBcurses\fR interface to the terminfo capability database -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.br -\fB#include \fR -.sp -\fBextern char PC;\fR -.br -\fBextern char * UP;\fR -.br -\fBextern char * BC;\fR -.br -\fBextern @NCURSES_OSPEED@ ospeed;\fR -.sp -\fBint tgetent(char *bp, const char *name);\fR -.br -\fBint tgetflag(char *id);\fR -.br -\fBint tgetnum(char *id);\fR -.br -\fBchar *tgetstr(char *id, char **area);\fR -.br -\fBchar *tgoto(const char *cap, int col, int row);\fR -.br -\fBint tputs(const char *str, int affcnt, int (*putc)(int));\fR -.br -.SH DESCRIPTION -These routines are included as a conversion aid for programs that use -the \fItermcap\fR library. Their parameters are the same and the -routines are emulated using the \fIterminfo\fR database. Thus, they -can only be used to query the capabilities of entries for which a -terminfo entry has been compiled. -.PP -The \fBtgetent\fR routine loads the entry for \fIname\fR. -It returns 1 on success, 0 if there is no such entry, and \-1 if the -terminfo database could not be found. -The emulation ignores the buffer pointer \fIbp\fR. -.PP -The \fBtgetflag\fR routine gets the boolean entry for \fIid\fR, -or zero if it is not available. -.PP -The \fBtgetnum\fR routine gets the numeric entry for \fIid\fR, -or \-1 if it is not available. -.PP -The \fBtgetstr\fR routine returns the string entry for \fIid\fR, -or zero if it is not available. -Use \fBtputs\fR to output the returned string. -The return value will also be copied to the buffer pointed to by \fIarea\fR, -and the \fIarea\fR value will be updated to point past the null ending -this value. -.PP -Only the first two characters of the \fBid\fR parameter of -\fBtgetflag\fR, -\fBtgetnum\fR and -\fBtgetstr\fR are compared in lookups. -.PP -The \fBtgoto\fR routine instantiates the parameters into the given capability. -The output from this routine is to be passed to \fBtputs\fR. -.PP -The \fBtputs\fR routine is described on the \fBcurs_terminfo\fR(3X) manual -page. It can retrieve capabilities by either termcap or terminfo name. -.PP -The variables -\fBPC\fR, -\fBUP\fR and -\fBBC\fR -are set by \fBtgetent\fR to the terminfo entry's data for -\fBpad_char\fR, -\fBcursor_up\fR and -\fBbackspace_if_not_bs\fR, -respectively. -\fBUP\fR is not used by ncurses. -\fBPC\fR is used in the \fBtdelay_output\fR function. -\fBBC\fR is used in the \fBtgoto\fR emulation. -The variable \fBospeed\fR is set by ncurses in a system-specific coding -to reflect the terminal speed. -. -.SH RETURN VALUE -Except where explicitly noted, -routines that return an integer return \fBERR\fR upon failure and \fBOK\fR -(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful -completion. -.PP -Routines that return pointers return \fBNULL\fR on error. -.SH BUGS -If you call \fBtgetstr\fR to fetch \fBca\fR or any other parameterized string, -be aware that it will be returned in terminfo notation, not the older and -not-quite-compatible termcap notation. This will not cause problems if all -you do with it is call \fBtgoto\fR or \fBtparm\fR, which both expand -terminfo-style strings as terminfo. -(The \fBtgoto\fR function, if configured to support termcap, will check -if the string is indeed terminfo-style by looking for "%p" parameters or -"$<..>" delays, and invoke a termcap-style parser if the string does not -appear to be terminfo). -.PP -Because terminfo conventions for representing padding in string capabilities -differ from termcap's, \fBtputs("50");\fR will put out a literal "50" rather -than busy-waiting for 50 milliseconds. Cope with it. -.PP -Note that termcap has nothing analogous to terminfo's \fBsgr\fR string. -One consequence of this is that termcap applications assume \fRme\fR -(terminfo \fBsgr0\fR) does not reset the alternate character set. -This implementation checks for, and modifies the data shown to the -termcap interface to accommodate termcap's limitation in this respect. -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. However, they -are marked TO BE WITHDRAWN and may be removed in future versions. -.PP -Neither the XSI Curses standard nor the SVr4 man pages documented the return -values of \fBtgetent\fR correctly, though all three were in fact returned ever -since SVr1. -In particular, an omission in the XSI Curses documentation has been -misinterpreted to mean that \fBtgetent\fR returns \fBOK\fR or \fBERR\fR. -Because the purpose of these functions is to provide compatibility with -the \fItermcap\fR library, that is a defect in XCurses, Issue 4, Version 2 -rather than in ncurses. -.PP -External variables are provided for support of certain termcap applications. -However, termcap applications' use of those variables is poorly documented, -e.g., not distinguishing between input and output. -In particular, some applications are reported to declare and/or -modify \fBospeed\fR. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBterminfo\fR(\*n), -\fBterm_variables\fR(3X), -\fBputc\fR(3). diff --git a/deps/ncurses-5.9/man/curs_terminfo.3x b/deps/ncurses-5.9/man/curs_terminfo.3x deleted file mode 100644 index 0e95d1c..0000000 --- a/deps/ncurses-5.9/man/curs_terminfo.3x +++ /dev/null @@ -1,359 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1999-2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_terminfo.3x,v 1.35 2010/12/04 18:38:55 tom Exp $ -.TH curs_terminfo 3X "" -.ds n 5 -.na -.hy 0 -.SH NAME -\fBdel_curterm\fR, -\fBmvcur\fR, -\fBputp\fR, -\fBrestartterm\fR, -\fBset_curterm\fR, -\fBsetterm\fR, -\fBsetupterm\fR, -\fBtigetflag\fR, -\fBtigetnum\fR, -\fBtigetstr\fR, -\fBtiparm\fR, -\fBtparm\fR, -\fBtputs\fR, -\fBvid_attr\fR, -\fBvid_puts\fR, -\fBvidattr\fR, -\fBvidputs\fR \- \fBcurses\fR interfaces to terminfo database -.ad -.hy -.SH SYNOPSIS -.nf -\fB#include \fR -.br -\fB#include \fR -.PP -\fBint setupterm(char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR -.br -\fBint setterm(char *\fR\fIterm\fR\fB);\fR -.br -\fBTERMINAL *set_curterm(TERMINAL *\fR\fInterm\fR\fB);\fR -.br -\fBint del_curterm(TERMINAL *\fR\fIoterm\fR\fB);\fR -.br -\fBint restartterm(char *\fR\fIterm\fR\fB, int \fR\fIfildes\fR\fB, int *\fR\fIerrret\fR\fB);\fR -.br -\fBchar *tparm(char *\fR\fIstr\fR\fB, ...);\fR -.br -\fBint tputs(const char *\fR\fIstr\fR\fB, int \fR\fIaffcnt\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR -.br -\fBint putp(const char *\fR\fIstr\fR\fB);\fR -.br -\fBint vidputs(chtype \fR\fIattrs\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR -.br -\fBint vidattr(chtype \fR\fIattrs\fR\fB);\fR -.br -\fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(char));\fR -.br -\fBint vid_attr(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB);\fR -.br -\fBint mvcur(int \fR\fIoldrow\fR\fB, int \fR\fIoldcol\fR\fB, int \fR\fInewrow\fR, int \fR\fInewcol\fR\fB);\fR -.br -\fBint tigetflag(char *\fR\fIcapname\fR\fB);\fR -.br -\fBint tigetnum(char *\fR\fIcapname\fR\fB);\fR -.br -\fBchar *tigetstr(char *\fR\fIcapname\fR\fB);\fR -.br -\fBchar *tiparm(const char *\fR\fIstr\fR\fB, ...);\fR -.br -.fi -.SH DESCRIPTION -These low-level routines must be called by programs that have to deal -directly with the \fBterminfo\fR database to handle certain terminal -capabilities, such as programming function keys. For all other -functionality, \fBcurses\fR routines are more suitable and their use is -recommended. -.PP -Initially, \fBsetupterm\fR should be called. Note that -\fBsetupterm\fR is automatically called by \fBinitscr\fR and -\fBnewterm\fR. This defines the set of terminal-dependent variables -[listed in \fBterminfo\fR(\*n)]. -The \fBterminfo\fR variables -\fBlines\fR and \fBcolumns\fR are initialized by \fBsetupterm\fR as -follows: -.RS -.PP -If \fBuse_env(FALSE)\fR has been called, values for -\fBlines\fR and \fBcolumns\fR specified in \fBterminfo\fR are used. -.PP -Otherwise, if the environment variables \fBLINES\fR and \fBCOLUMNS\fR -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 \fBlines\fR and \fBcolumns\fR specified in the -\fBterminfo\fR database are used. -.RE -.PP -The header files \fBcurses.h\fR and \fBterm.h\fR should be included (in this -order) to get the definitions for these strings, numbers, and flags. -Parameterized strings should be passed through \fBtparm\fR to instantiate them. -All \fBterminfo\fR strings [including the output of \fBtparm\fR] should be printed -with \fBtputs\fR or \fBputp\fR. Call the \fBreset_shell_mode\fR to restore the -tty modes before exiting [see \fBcurs_kernel\fR(3X)]. Programs which use -cursor addressing should output \fBenter_ca_mode\fR upon startup and should -output \fBexit_ca_mode\fR before exiting. Programs desiring shell escapes -should call -.PP -\fBreset_shell_mode\fR and output \fBexit_ca_mode\fR before the shell -is called and should output \fBenter_ca_mode\fR and call -\fBreset_prog_mode\fR after returning from the shell. -.PP -The \fBsetupterm\fR routine reads in the \fBterminfo\fR database, -initializing the \fBterminfo\fR structures, but does not set up the -output virtualization structures used by \fBcurses\fR. The terminal -type is the character string \fIterm\fR; if \fIterm\fR is null, the -environment variable \fBTERM\fR is used. -All output is to file descriptor \fBfildes\fR which is initialized for output. -If \fIerrret\fR is not null, -then \fBsetupterm\fR returns \fBOK\fR or -\fBERR\fR and stores a status value in the integer pointed to by -\fIerrret\fR. -A return value of \fBOK\fR combined with status of \fB1\fR in \fIerrret\fR -is normal. -If \fBERR\fR is returned, examine \fIerrret\fR: -.RS -.TP 5 -.B 1 -means that the terminal is hardcopy, cannot be used for curses applications. -.TP 5 -.B 0 -means that the terminal could not be found, -or that it is a generic type, -having too little information for curses applications to run. -.TP 5 -.B \-1 -means that the \fBterminfo\fR database could not be found. -.RE -.PP -If \fIerrret\fR is -null, \fBsetupterm\fR prints an error message upon finding an error -and exits. Thus, the simplest call is: -.sp - \fBsetupterm((char *)0, 1, (int *)0);\fR, -.sp -which uses all the defaults and sends the output to \fBstdout\fR. -.PP -The \fBsetterm\fR routine is being replaced by \fBsetupterm\fR. The call: -.sp - \fBsetupterm(\fR\fIterm\fR\fB, 1, (int *)0)\fR -.sp -provides the same functionality as \fBsetterm(\fR\fIterm\fR\fB)\fR. -The \fBsetterm\fR routine is included here for BSD compatibility, and -is not recommended for new programs. -.PP -The \fBset_curterm\fR routine sets the variable \fBcur_term\fR to -\fInterm\fR, and makes all of the \fBterminfo\fR boolean, numeric, and -string variables use the values from \fInterm\fR. It returns the old value -of \fBcur_term\fR. -.PP -The \fBdel_curterm\fR routine frees the space pointed to by -\fIoterm\fR and makes it available for further use. If \fIoterm\fR is -the same as \fBcur_term\fR, references to any of the \fBterminfo\fR -boolean, numeric, and string variables thereafter may refer to invalid -memory locations until another \fBsetupterm\fR has been called. -.PP -The \fBrestartterm\fR routine is similar to \fBsetupterm\fR and \fBinitscr\fR, -except that it is called after restoring memory to a previous state (for -example, when reloading a game saved as a core image dump). It 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. Accordingly, -it saves various tty state bits, calls \fBsetupterm\fP, -and then restores the bits. -.PP -The \fBtparm\fR routine instantiates the string \fIstr\fR with -parameters \fIpi\fR. A pointer is returned to the result of \fIstr\fR -with the parameters applied. -.PP -\fBtiparm\fP is a newer form of \fBtparm\fP which uses \fI\fP -rather than a fixed-parameter list. -Its numeric parameters are integers (int) rather than longs. -.PP -The \fBtputs\fR routine applies padding information to the string -\fIstr\fR and outputs it. The \fIstr\fR must be a terminfo string -variable or the return value from \fBtparm\fR, \fBtgetstr\fR, or -\fBtgoto\fR. \fIaffcnt\fR is the number of lines affected, or 1 if -not applicable. \fIputc\fR is a \fBputchar\fR-like routine to which -the characters are passed, one at a time. -.PP -The \fBputp\fR routine calls \fBtputs(\fR\fIstr\fR\fB, 1, putchar)\fR. -Note that the output of \fBputp\fR always goes to \fBstdout\fR, not to -the \fIfildes\fR specified in \fBsetupterm\fR. -.PP -The \fBvidputs\fR routine displays the string on the terminal in the -video attribute mode \fIattrs\fR, which is any combination of the -attributes listed in \fBcurses\fR(3X). The characters are passed to -the \fBputchar\fR-like routine \fIputc\fR. -.PP -The \fBvidattr\fR routine is like the \fBvidputs\fR routine, except -that it outputs through \fBputchar\fR. -.PP -The \fBvid_attr\fR and \fBvid_puts\fR routines correspond to vidattr and vidputs, -respectively. -They use a set of arguments for representing the video attributes plus color, -i.e., -one of type attr_t for the attributes and one of short for -the color_pair number. -The \fBvid_attr\fR and \fBvid_puts\fR routines -are designed to use the attribute constants with the \fIWA_\fR prefix. -The opts argument is reserved for future use. -Currently, applications must provide a null pointer for that argument. -.PP -The \fBmvcur\fR routine provides low-level cursor motion. It takes -effect immediately (rather than at the next refresh). -.PP -The \fBtigetflag\fR, \fBtigetnum\fR and \fBtigetstr\fR routines return -the value of the capability corresponding to the \fBterminfo\fR -\fIcapname\fR passed to them, such as \fBxenl\fR. -.PP -The \fBtigetflag\fR routine returns the value \fB\-1\fR if -\fIcapname\fR is not a boolean capability, -or \fB0\fR if it is canceled or absent from the terminal description. -.PP -The \fBtigetnum\fR routine returns the value \fB\-2\fR if -\fIcapname\fR is not a numeric capability, -or \fB\-1\fR if it is canceled or absent from the terminal description. -.PP -The \fBtigetstr\fR routine returns the value \fB(char *)\-1\fR -if \fIcapname\fR is not a string capability, -or \fB0\fR if it is canceled or absent from the terminal description. -.PP -The \fIcapname\fR for each capability is given in the table column entitled -\fIcapname\fR code in the capabilities section of \fBterminfo\fR(\*n). -.sp -.RS -\fBchar *boolnames[]\fR, \fB*boolcodes[]\fR, \fB*boolfnames[]\fR -.sp -\fBchar *numnames[]\fR, \fB*numcodes[]\fR, \fB*numfnames[]\fR -.sp -\fBchar *strnames[]\fR, \fB*strcodes[]\fR, \fB*strfnames[]\fR -.RE -.PP -These null-terminated arrays contain the \fIcapnames\fR, the -\fBtermcap\fR codes, and the full C names, for each of the -\fBterminfo\fR variables. -.SH RETURN VALUE -Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR -(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful -completion, unless otherwise noted in the preceding routine descriptions. -.PP -Routines that return pointers always return \fBNULL\fR on error. -.PP -X/Open defines no error conditions. -In this implementation -.RS -.TP 5 -\fBdel_curterm\fP -returns an error -if its terminal parameter is null. -.TP 5 -\fBputp\fP -calls \fBtputs\fP, returning the same error-codes. -.TP 5 -\fBrestartterm\fP -returns an error -if the associated call to \fBsetupterm\fP returns an error. -.TP 5 -\fBsetupterm\fP -returns an error -if it cannot allocate enough memory, or -create the initial windows (stdscr, curscr, newscr). -Other error conditions are documented above. -.TP 5 -\fBtputs\fP -returns an error if the string parameter is null. -It does not detect I/O errors: -X/Open states that \fBtputs\fP ignores the return value -of the output function \fIputc\fP. -.RE -.SH NOTES -The \fBsetupterm\fR routine should be used in place of \fBsetterm\fR. -It may be useful when you want to test for terminal capabilities without -committing to the allocation of storage involved in \fBinitscr\fR. -.PP -Note that \fBvidattr\fR and \fBvidputs\fR may be macros. -.SH PORTABILITY -The function \fBsetterm\fR is not described by X/Open and must -be considered non-portable. All other functions are as described by X/Open. -.PP -\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP. -This is not part of X/Open Curses, but is assumed by some applications. -.PP -In System V Release 4, \fBset_curterm\fR has an \fBint\fR return type and -returns \fBOK\fR or \fBERR\fR. We have chosen to implement the X/Open Curses -semantics. -.PP -In System V Release 4, the third argument of \fBtputs\fR has the type -\fBint (*putc)(char)\fR. -.PP -At least one implementation of X/Open Curses (Solaris) returns a value -other than OK/ERR from \fBtputs\fP. -That returns the length of the string, and does no error-checking. -.PP -X/Open Curses prototypes \fBtparm\fR with a fixed number of parameters, -rather than a variable argument list. -This implementation uses a variable argument list, but can be -configured to use the fixed-parameter list. -Portable applications should provide 9 parameters after the format; -zeroes are fine for this purpose. -.PP -In response to comments by Thomas E. Dickey, -X/Open Curses Issue 7 proposed the \fBtiparam\fP function in mid-2009. -.PP -X/Open notes that after calling \fBmvcur\fR, the curses state may not match the -actual terminal state, and that an application should touch and refresh -the window before resuming normal curses calls. -Both ncurses and System V Release 4 curses implement \fBmvcur\fR using -the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR. -So though it is documented as a terminfo function, -\fBmvcur\fR is really a curses function which is not well specified. -.PP -X/Open states that the old location must be given for \fBmvcur\fP. -This implementation allows the caller to use \-1's for the old ordinates. -In that case, the old location is unknown. -.PP -Extended terminal capability names, e.g., as defined by \fBtic\ \-x\fP, -are not stored in the arrays described in this section. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_initscr\fR(3X), -\fBcurs_kernel\fR(3X), -\fBcurs_termcap\fR(3X), -\fBcurs_variables\fR(3X), -\fBterm_variables\fR(3X), -\fBputc\fR(3), -\fBterminfo\fR(\*n) diff --git a/deps/ncurses-5.9/man/curs_touch.3x b/deps/ncurses-5.9/man/curs_touch.3x deleted file mode 100644 index 9fa6d37..0000000 --- a/deps/ncurses-5.9/man/curs_touch.3x +++ /dev/null @@ -1,112 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_touch.3x,v 1.14 2010/12/04 18:38:55 tom Exp $ -.TH curs_touch 3X "" -.na -.hy 0 -.SH NAME -\fBtouchwin\fR, -\fBtouchline\fR, -\fBuntouchwin\fR, -\fBwtouchln\fR, -\fBis_linetouched\fR, -\fBis_wintouched\fR \- \fBcurses\fR refresh control routines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.br -\fBint touchwin(WINDOW *win);\fR -.br -\fBint touchline(WINDOW *win, int start, int count);\fR -.br -\fBint untouchwin(WINDOW *win);\fR -.br -\fBint wtouchln(WINDOW *win, int y, int n, int changed);\fR -.br -\fBbool is_linetouched(WINDOW *win, int line);\fR -.br -\fBbool is_wintouched(WINDOW *win);\fR -.br -.SH DESCRIPTION -The \fBtouchwin\fR and \fBtouchline\fR routines throw away all -optimization information about which parts of the window have been -touched, by pretending that the entire window has been drawn on. This -is sometimes necessary when using overlapping windows, since a change -to one window affects the other window, but the records of which lines -have been changed in the other window do not reflect the change. The -routine \fBtouchline\fR only pretends that \fIcount\fR lines have been -changed, beginning with line \fIstart\fR. -.PP -The \fBuntouchwin\fR routine marks all lines in the window as unchanged since -the last call to \fBwrefresh\fR. -.PP -The \fBwtouchln\fR routine makes \fIn\fR lines in the window, starting -at line \fIy\fR, look as if they have (\fIchanged\fR\fB=1\fR) or have -not (\fIchanged\fR\fB=0\fR) been changed since the last call to -\fBwrefresh\fR. -.PP -The \fBis_linetouched\fR and \fBis_wintouched\fR routines return -\fBTRUE\fR if the specified line/window was modified since the last -call to \fBwrefresh\fR; otherwise they return \fBFALSE\fR. In -addition, \fBis_linetouched\fR returns \fBERR\fR if \fIline\fR is not -valid for the given window. -.SH RETURN VALUE -All routines return the integer \fBERR\fR upon failure and an integer value -other than \fBERR\fR upon successful completion, unless otherwise noted in the -preceding routine descriptions. -.PP -X/Open does not define any error conditions. -In this implementation -.RS -.TP 5 -\fBis_linetouched\fP -returns an error -if the window pointer is null, or -if the line number is outside the window. -Note that ERR is distinct from TRUE and FALSE, which are the normal return values of this function. -.TP 5 -\fBwtouchln\fP -returns an error -if the window pointer is null, or -if the line number is outside the window. -.RE -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. -.PP -Some historic curses implementations had, as an undocumented feature, the -ability to do the equivalent of \fBclearok(..., 1)\fR by saying -\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR. This will not work under -ncurses. -.SH NOTES -Note that all routines except \fBwtouchln\fR may be macros. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_refresh\fR(3X), -\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_trace.3x b/deps/ncurses-5.9/man/curs_trace.3x deleted file mode 100644 index ef78416..0000000 --- a/deps/ncurses-5.9/man/curs_trace.3x +++ /dev/null @@ -1,170 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2000-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_trace.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ -.TH curs_trace 3X "" -.na -.hy 0 -.SH NAME -\fB_tracef\fR, -\fB_tracedump\fR, -\fB_traceattr\fR, -\fB_traceattr2\fR, -\fB_nc_tracebits\fR, -\fB_tracecchar_t\fR, -\fB_tracecchar_t2\fR, -\fB_tracechar\fR, -\fB_tracechtype\fR, -\fB_tracechtype2\fR, -\fB_tracemouse\fR, -\fBtrace\fR \- \fBcurses\fR debugging routines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBvoid _tracef(const char *format, ...);\fR -.br -\fBvoid _tracedump(const char *label, WINDOW *win);\fR -.br -\fBchar *_traceattr(attr_t attr);\fR -.br -\fBchar *_traceattr2(int buffer, chtype ch);\fR -.br -\fBchar *_nc_tracebits(void);\fR -.br -\fBchar * _tracecchar_t(const cchar_t *string);\fR -.br -\fBchar * _tracecchar_t2(int buffer, const cchar_t *string);\fR -.br -\fBchar *_tracechar(int ch);\fR -.br -\fBchar *_tracechtype(chtype ch);\fR -.br -\fBchar *_tracechtype2(int buffer, chtype ch);\fR -.br -\fBchar *_tracemouse(const MEVENT *event);\fR -.br -\fBvoid trace(const unsigned int param);\fR -.SH DESCRIPTION -The \fBtrace\fR routines are used for debugging the ncurses libraries, -as well as applications which use the ncurses libraries. -These functions are normally available only with the debugging library -\fIlibncurses_g.a\fR, but may be compiled into any model (shared, static, -profile) by defining the symbol \fBTRACE\fR. -Additionally, some functions are only available with the wide-character -configuration of the libraries. -.PP -The principal parts of this interface are the \fBtrace\fR routine which -selectively enables different tracing features, and the \fB_tracef\fR -routine which writes formatted data to the \fItrace\fR file. -.PP -Calling \fBtrace\fR with a nonzero parameter opens the file \fBtrace\fR -in the current directory for output. The parameter is formed by OR'ing -values from the list of \fBTRACE_\fP\fIxxx\fR definitions in \fB\fR. -These include: -.TP 5 -TRACE_DISABLE -turn off tracing. -.TP 5 -TRACE_TIMES -trace user and system times of updates. -.TP 5 -TRACE_TPUTS -trace tputs calls. -.TP 5 -TRACE_UPDATE -trace update actions, old & new screens. -.TP 5 -TRACE_MOVE -trace cursor movement and scrolling. -.TP 5 -TRACE_CHARPUT -trace all character outputs. -.TP 5 -TRACE_ORDINARY -trace all update actions. -The old and new screen contents are written to the trace file -for each refresh. -.TP 5 -TRACE_CALLS -trace all curses calls. -The parameters for each call are traced, as well as return values. -.TP 5 -TRACE_VIRTPUT -trace virtual character puts, i.e., calls to \fBaddch\fR. -.TP 5 -TRACE_IEVENT -trace low-level input processing, including timeouts. -.TP 5 -TRACE_BITS -trace state of TTY control bits. -.TP 5 -TRACE_ICALLS -trace internal/nested calls. -.TP 5 -TRACE_CCALLS -trace per-character calls. -.TP 5 -TRACE_DATABASE -trace read/write of terminfo/termcap data. -.TP 5 -TRACE_ATTRS -trace changes to video attributes and colors. -.TP 5 -TRACE_MAXIMUM -maximum trace level, enables all of the separate trace features. -.PP -Some tracing features are enabled whenever the \fBtrace\fR parameter -is nonzero. Some features overlap. -The specific names are used as a guideline. -.PP -These functions check the \fBNCURSES_TRACE\fP environment variable, -to set the tracing feature as if \fBtrace\fP was called: -.RS -filter, -initscr, -new_prescr, -newterm, -nofilter, -ripoffline, -setupterm, -slk_init, -tgetent -.RE - -.SH RETURN VALUE -Routines which return a value are designed to be used as parameters -to the \fB_tracef\fR routine. -.SH PORTABILITY -These functions are not part of the XSI interface. -Some other curses implementations are known to -have similar, undocumented features, -but they are not compatible with ncurses. -.SH SEE ALSO -\fBcurses\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_util.3x b/deps/ncurses-5.9/man/curs_util.3x deleted file mode 100644 index fb912b6..0000000 --- a/deps/ncurses-5.9/man/curs_util.3x +++ /dev/null @@ -1,247 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_util.3x,v 1.32 2010/12/04 18:38:55 tom Exp $ -.TH curs_util 3X "" -.de bP -.IP \(bu 4 -.. -.na -.hy 0 -.SH NAME -\fBdelay_output\fR, -\fBfilter\fR, -\fBflushinp\fR, -\fBgetwin\fR, -\fBkey_name\fR, -\fBkeyname\fR, -\fBnofilter\fR, -\fBputwin\fR, -\fBunctrl\fR, -\fBuse_env\fR, -\fBwunctrl\fR \- miscellaneous \fBcurses\fR utility routines -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBchar *unctrl(chtype c);\fR -.br -\fBwchar_t *wunctrl(cchar_t *c);\fR -.br -\fBchar *keyname(int c);\fR -.br -\fBchar *key_name(wchar_t w);\fR -.br -\fBvoid filter(void);\fR -.br -\fBvoid nofilter(void);\fR -.br -\fBvoid use_env(bool f);\fR -.br -\fBint putwin(WINDOW *win, FILE *filep);\fR -.br -\fBWINDOW *getwin(FILE *filep);\fR -.br -\fBint delay_output(int ms);\fR -.br -\fBint flushinp(void);\fR -.br -.SH DESCRIPTION -The \fBunctrl\fR routine returns a character string which is a printable -representation of the character \fIc\fR, ignoring attributes. -Control characters are displayed in the \fB^\fR\fIX\fR notation. -Printing characters are displayed as is. -The corresponding \fBwunctrl\fR returns a printable representation of -a wide character. -.PP -The \fBkeyname\fR routine returns a character string corresponding to the key \fIc\fR: -.RS 3 -.bP -Printable characters are displayed as themselves, e.g., a one-character string containing the key. -.bP -Control characters are displayed in the \fB^\fR\fIX\fR notation. -.bP -DEL (character 127) is displayed as \fB^?\fP. -.bP -Values above 128 are either meta characters -(if the screen has not been initialized, -or if \fBmeta\fP has been called with a TRUE parameter), -shown in the \fBM\-\fR\fIX\fR notation, -or are displayed as themselves. -In the latter case, the values may not be printable; -this follows the X/Open specification. -.bP -Values above 256 may be the names of the names of function keys. -.bP -Otherwise (if there is no corresponding name) the function returns null, -to denote an error. -X/Open also lists an "UNKNOWN KEY" return value, which some implementations -return rather than null. -.RE -.LP -The corresponding \fBkey_name\fR returns a character string corresponding -to the wide-character value \fIw\fR. -The two functions do not return the same set of strings; -the latter returns null where the former would display a meta character. -.PP -The \fBfilter\fR routine, if used, must be called before \fBinitscr\fR or -\fBnewterm\fR are called. The effect is that, during those calls, \fBLINES\fR -is set to 1; the capabilities \fBclear\fR, \fBcup\fR, \fBcud\fR, \fBcud1\fR, -\fBcuu1\fR, \fBcuu\fR, \fBvpa\fR are disabled; and the \fBhome\fR string is -set to the value of \fBcr\fR. -.PP -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. -.PP -The \fBuse_env\fR routine, if used, is called before \fBinitscr\fR or -\fBnewterm\fR are called. When called with \fBFALSE\fR as an -argument, the values of \fBlines\fR and \fBcolumns\fR specified in the -\fIterminfo\fR database will be used, even if environment variables -\fBLINES\fR and \fBCOLUMNS\fR (used by default) are set, or if -\fBcurses\fR is running in a window (in which case default behavior -would be to use the window size if \fBLINES\fR and \fBCOLUMNS\fR are -not set). -Note that setting \fBLINES\fR or \fBCOLUMNS\fR overrides the -corresponding size which may be obtained from the operating system. -.PP -The \fBputwin\fR routine writes all data associated with window \fIwin\fR into -the file to which \fIfilep\fR points. This information can be later retrieved -using the \fBgetwin\fR function. -.PP -The \fBgetwin\fR routine reads window related data stored in the file by -\fBputwin\fR. The routine then creates and initializes a new window using that -data. It returns a pointer to the new window. -.PP -The \fBdelay_output\fR routine inserts an \fIms\fR millisecond pause -in output. This routine should not be used extensively because -padding characters are used rather than a CPU pause. -If no padding character is specified, this uses \fBnapms\fR to perform the delay. -.PP -The \fBflushinp\fR 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\fR, routines that return an integer return \fBERR\fR -upon failure and \fBOK\fR (SVr4 specifies only "an integer value other than -\fBERR\fR") upon successful completion. -.PP -Routines that return pointers return \fBNULL\fR on error. -.PP -X/Open does not define any error conditions. -In this implementation -.RS 3 -.TP 5 -\fBflushinp\fR -returns an error if the terminal was not initialized. -.TP 5 -\fBmeta\fR -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 -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. -It states that \fBunctrl\fR and \fBwunctrl\fR will return a null pointer if -unsuccessful, but does not define any error conditions. -This implementation checks for three cases: -.RS 3 -.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 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. -.IP -X/Open Curses does not document whether \fBunctrl\fP can be called before -initializing curses. -This implementation permits that, -and returns the ``~@'', etc., values in that case. -.bP -parameter values outside the 0 to 255 range. -\fBunctrl\fP returns a null pointer. -.RE -.PP -The SVr4 documentation describes the action of \fBfilter\fR only in the vaguest -terms. The description here is adapted from the XSI Curses standard (which -erroneously fails to describe the disabling of \fBcuu\fR). -.PP -The strings returned by \fBunctrl\fR in this implementation are determined -at compile time, -showing C1 controls from the upper-128 codes with a `~' prefix rather than `^'. -Other implementations have different conventions. -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 function allows the caller to -change the output of \fBunctrl\fP. -.PP -Likewise, the \fBmeta\fP 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 and \fBmeta\fP succeed only after -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. -.PP -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 -option of \fBtic\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. -The \fBuse_extended_names\fP function controls whether this data is -loaded when the terminal description is read by the library. -.PP -The \fBnofilter\fP routine is specific to ncurses. -It was not supported on Version 7, BSD or System V implementations. -It is recommended that any code depending on ncurses extensions -be conditioned using NCURSES_VERSION. -.SH SEE ALSO -\fBlegacy_coding\fR(3X), -\fBcurses\fR(3X), -\fBcurs_initscr\fR(3X), -\fBcurs_kernel\fR(3X), -\fBcurs_scr_dump\fR(3X), -\fBcurs_variables\fR(3X), -\fBlegacy_coding\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_variables.3x b/deps/ncurses-5.9/man/curs_variables.3x deleted file mode 100644 index 8cfee52..0000000 --- a/deps/ncurses-5.9/man/curs_variables.3x +++ /dev/null @@ -1,135 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_variables.3x,v 1.4 2010/12/04 18:38:55 tom Exp $ -.TH curs_variables 3X "" -.de bP -.IP \(bu 4 -.. -.ds n 5 -.na -.hy 0 -.SH NAME -\fBCOLORS\fR, -\fBCOLOR_PAIRS\fR, -\fBCOLS\fR, -\fBESCDELAY\fR, -\fBLINES\fR, -\fBTABSIZE\fR, -\fBcurscr\fR, -\fBnewscr\fR, -\fBstdscr\fR -\- \fBcurses\fR global variables -.ad -.hy -.SH SYNOPSIS -.nf -\fB#include \fR -.PP -\fBint COLOR_PAIRS;\fR -.br -\fBint COLORS;\fR -.br -\fBint COLS;\fR -.br -\fBint ESCDELAY;\fR -.br -\fBint LINES;\fR -.br -\fBint TABSIZE;\fR -.br -\fBWINDOW * curscr;\fR -.br -\fBWINDOW * newscr;\fR -.br -\fBWINDOW * stdscr;\fR -.fi -.SH DESCRIPTION -This page summarizes variables provided by the \fBcurses\fP library. -A more complete description is given in the \fBcurses\fP(3X) manual page. -.PP -Depending on the configuration, these may be actual variables, -or macros (see \fBcurs_threads\fR(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. -.SS COLOR_PAIRS -After initializing curses, this variable contains the number of color pairs -which the terminal can support. -Usually the number of color pairs will be the product \fBCOLORS\fP*\fBCOLORS\fP, -however this is not always true: -.bP -a few terminals use HLS colors, which do not follow this rule -.bP -terminals supporting a large number of colors are limited by the number -of color pairs that can be represented in a \fIsigned short\fP value. -.SS COLORS -After initializing curses, this variable contains the number of colors -which the terminal can support. -.SS COLS -After initializing curses, this variable contains the width of the screen, -i.e., the number of columns. -.SS ESCDELAY -This variable holds the number of milliseconds to wait after reading an -escape character, -to distinguish between an individual escape character entered on the -keyboard from escape sequences sent by cursor- and function-keys -(see curses(3X). -.SS LINES -After initializing curses, this variable contains the height of the screen, -i.e., the number of lines. -.SS TABSIZE -This variable holds the number of columns used by the \fIcurses\fP library -when converting a tab character to spaces as it adds the tab to a window -(see curs_addch(3X). -.SS The Current Screen -This implementation of curses uses a special window \fBcurscr\fP to -record its updates to the terminal screen. -.SS The New Screen -This implementation of curses uses a special window \fBnewscr\fP to -hold updates to the terminal screen before applying them to \fBcurscr\fP. -.SS The Standard Screen -Upon initializing curses, -a default window called \fBstdscr\fP, -which is the size of the terminal screen, is created. -Many curses functions use this window. -.SH NOTES -The curses library is initialized using either \fBinitscr\fR(3X), -or \fBnewterm\fR(3X). -.PP -If \fBcurses\fP is configured to use separate curses/terminfo libraries, -most of these variables reside in the curses library. -.SH PORTABILITY -ESCDELAY and TABSIZE are extensions, -not provided in most other implementations of curses. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_threads\fR(3X), -\fBterm_variables\fR(3X), -\fBterminfo\fR(3X), -\fBterminfo\fR(\*n). diff --git a/deps/ncurses-5.9/man/curs_window.3x b/deps/ncurses-5.9/man/curs_window.3x deleted file mode 100644 index 9ef41ff..0000000 --- a/deps/ncurses-5.9/man/curs_window.3x +++ /dev/null @@ -1,185 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: curs_window.3x,v 1.17 2010/12/04 18:38:55 tom Exp $ -.TH curs_window 3X "" -.na -.hy 0 -.SH NAME -\fBnewwin\fR, -\fBdelwin\fR, -\fBmvwin\fR, -\fBsubwin\fR, -\fBderwin\fR, -\fBmvderwin\fR, -\fBdupwin\fR, -\fBwsyncup\fR, -\fBsyncok\fR, -\fBwcursyncup\fR, -\fBwsyncdown\fR \- create \fBcurses\fR windows -.ad -.hy -.SH SYNOPSIS -\fB#include \fR -.sp -\fBWINDOW *newwin(int nlines, int ncols, int begin_y,\fR - \fBint begin_x);\fR -.br -\fBint delwin(WINDOW *win);\fR -.br -\fBint mvwin(WINDOW *win, int y, int x);\fR -.br -\fBWINDOW *subwin(WINDOW *orig, int nlines, int ncols,\fR - \fBint begin_y, int begin_x);\fR -.br -\fBWINDOW *derwin(WINDOW *orig, int nlines, int ncols,\fR - \fBint begin_y, int begin_x);\fR -.br -\fBint mvderwin(WINDOW *win, int par_y, int par_x);\fR -.br -\fBWINDOW *dupwin(WINDOW *win);\fR -.br -\fBvoid wsyncup(WINDOW *win);\fR -.br -\fBint syncok(WINDOW *win, bool bf);\fR -.br -\fBvoid wcursyncup(WINDOW *win);\fR -.br -\fBvoid wsyncdown(WINDOW *win);\fR -.br -.SH DESCRIPTION -Calling \fBnewwin\fR creates and returns a pointer to a new window with the -given number of lines and columns. The upper left-hand corner of the window is -at line \fIbegin\fR_\fIy\fR, column \fIbegin\fR_\fIx\fR. If either -\fInlines\fR or \fIncols\fR is zero, they default to \fBLINES \-\fR -\fIbegin\fR_\fIy\fR and \fBCOLS \-\fR \fIbegin\fR_\fIx\fR. A new full-screen -window is created by calling \fBnewwin(0,0,0,0)\fR. -.PP -Calling \fBdelwin\fR deletes the named window, freeing all memory -associated with it (it does not actually erase the window's screen -image). Subwindows must be deleted before the main window can be -deleted. -.PP -Calling \fBmvwin\fR moves the window so that the upper left-hand -corner is at position (\fIx\fR, \fIy\fR). If the move would cause the -window to be off the screen, it is an error and the window is not -moved. Moving subwindows is allowed, but should be avoided. -.PP -Calling \fBsubwin\fR creates and returns a pointer to a new window -with the given number of lines, \fInlines\fR, and columns, -\fIncols\fR. The window is at position (\fIbegin\fR_\fIy\fR, -\fIbegin\fR_\fIx\fR) on the screen. (This position is relative to the -screen, and not to the window \fIorig\fR.) The window is made in the -middle of the window \fIorig\fR, so that changes made to one window -will affect both windows. The subwindow shares memory with the window -\fIorig\fR. When using this routine, it is necessary to call -\fBtouchwin\fR or \fBtouchline\fR on \fIorig\fR before calling -\fBwrefresh\fR on the subwindow. -.PP -Calling \fBderwin\fR is the same as calling \fBsubwin,\fR except that -\fIbegin\fR_\fIy\fR and \fIbegin\fR_\fIx\fR are relative to the origin -of the window \fIorig\fR rather than the screen. There is no -difference between the subwindows and the derived windows. -.PP -Calling \fBmvderwin\fR moves a derived window (or subwindow) -inside its parent window. The screen-relative parameters of the -window are not changed. This routine is used to display different -parts of the parent window at the same physical position on the -screen. -.PP -Calling \fBdupwin\fR creates an exact duplicate of the window \fIwin\fR. -.PP -Calling \fBwsyncup\fR touches all locations in ancestors of \fIwin\fR that are -changed in \fIwin\fR. If \fBsyncok\fR is called with second argument -\fBTRUE\fR then \fBwsyncup\fR is called automatically whenever there is a -change in the window. -.PP -The \fBwsyncdown\fR routine touches each location in \fIwin\fR that has been -touched in any of its ancestor windows. This routine is called by -\fBwrefresh\fR, so it should almost never be necessary to call it manually. -.PP -The routine \fBwcursyncup\fR 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\fR upon failure and -\fBOK\fR (SVr4 only specifies "an integer value other than \fBERR\fR") upon -successful completion. -.PP -Routines that return pointers return \fBNULL\fR on error. -.PP -X/Open defines no error conditions. -In this implementation -.RS -.TP 5 -\fBdelwin\fR -returns an error if the window pointer is null, or -if the window 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 -\fBsyncok\fP -returns an error -if the window pointer is null. -.RE -.SH NOTES -If many small changes are made to the window, the \fBwsyncup\fR option could -degrade performance. -.PP -Note that \fBsyncok\fR may be a macro. -.SH BUGS -The subwindow functions (\fIsubwin\fR, \fIderwin\fR, \fImvderwin\fR, -\fBwsyncup\fR, \fBwsyncdown\fR, \fBwcursyncup\fR, \fBsyncok\fR) are flaky, -incompletely implemented, and not well tested. -.PP -The System V curses documentation is very unclear about what \fBwsyncup\fR -and \fBwsyncdown\fR actually do. It seems to imply that they are only -supposed to touch exactly those lines that are affected by ancestor changes. -The language here, and the behavior of the \fBcurses\fR implementation, -is patterned on the XPG4 curses standard. The weaker XPG4 spec may result -in slower updates. -.SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_refresh\fR(3X), -\fBcurs_touch\fR(3X), -\fBcurs_variables\fR(3X) diff --git a/deps/ncurses-5.9/man/form_driver.3x b/deps/ncurses-5.9/man/form_driver.3x deleted file mode 100644 index 67a986b..0000000 --- a/deps/ncurses-5.9/man/form_driver.3x +++ /dev/null @@ -1,331 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_driver.3x,v 1.22 2010/12/04 18:38:55 tom Exp $ -.TH form_driver 3X "" -.de bP -.IP \(bu 4 -.. -.SH NAME -\fBform_driver\fR \- command-processing loop of the form system -.SH SYNOPSIS -\fB#include \fR -.br -int form_driver(FORM *form, int c); -.br -.SH DESCRIPTION -Once a form has been posted (displayed), you should funnel input events to it -through \fBform_driver\fR. This routine has three major input cases: -.bP -The input is a form navigation request. -Navigation request codes are constants defined in \fB\fP, -which are distinct from the key- and character codes returned by \fBwgetch\fP. -.bP -The input is a printable character. -Printable characters (which must be positive, less than 256) are -checked according to the program's locale settings. -.bP -The input is the KEY_MOUSE special key associated with an mouse event. -.PP -The form driver requests are as follows: -.TP 5 -REQ_NEXT_PAGE -Move to the next page. -.TP 5 -REQ_PREV_PAGE -Move to the previous page. -.TP 5 -REQ_FIRST_PAGE -Move to the first page. -.TP 5 -REQ_LAST_PAGE -Move to the last field. -.sp -.TP 5 -REQ_NEXT_FIELD -Move to the next field. -.TP 5 -REQ_PREV_FIELD -Move to the previous field. -.TP 5 -REQ_FIRST_FIELD -Move to the first field. -.TP 5 -REQ_LAST_FIELD -Move to the last field. -.TP 5 -REQ_SNEXT_FIELD -Move to the sorted next field. -.TP 5 -REQ_SPREV_FIELD -Move to the sorted previous field. -.TP 5 -REQ_SFIRST_FIELD -Move to the sorted first field. -.TP 5 -REQ_SLAST_FIELD -Move to the sorted last field. -.TP 5 -REQ_LEFT_FIELD -Move left to a field. -.TP 5 -REQ_RIGHT_FIELD -Move right to a field. -.TP 5 -REQ_UP_FIELD -Move up to a field. -.TP 5 -REQ_DOWN_FIELD -Move down to a field. -.sp -.TP 5 -REQ_NEXT_CHAR -Move to the next char. -.TP 5 -REQ_PREV_CHAR -Move to the previous char. -.TP 5 -REQ_NEXT_LINE -Move to the next line. -.TP 5 -REQ_PREV_LINE -Move to the previous line. -.TP 5 -REQ_NEXT_WORD -Move to the next word. -.TP 5 -REQ_PREV_WORD -Move to the previous word. -.TP 5 -REQ_BEG_FIELD -Move to the beginning of the field. -.TP 5 -REQ_END_FIELD -Move to the end of the field. -.TP 5 -REQ_BEG_LINE -Move to the beginning of the line. -.TP 5 -REQ_END_LINE -Move to the end of the line. -.TP 5 -REQ_LEFT_CHAR -Move left in the field. -.TP 5 -REQ_RIGHT_CHAR -Move right in the field. -.TP 5 -REQ_UP_CHAR -Move up in the field. -.TP 5 -REQ_DOWN_CHAR -Move down in the field. -.sp -.TP 5 -REQ_NEW_LINE -Insert or overlay a new line. -.TP 5 -REQ_INS_CHAR -Insert a blank at the cursor. -.TP 5 -REQ_INS_LINE -Insert a blank line at the cursor. -.TP 5 -REQ_DEL_CHAR -Delete character at the cursor. -.TP 5 -REQ_DEL_PREV -Delete character before the cursor. -.TP 5 -REQ_DEL_LINE -Delete line at the cursor. -.TP 5 -REQ_DEL_WORD -Delete blank-delimited word at the cursor. -.TP 5 -REQ_CLR_EOL -Clear to end of line from cursor. -.TP 5 -REQ_CLR_EOF -Clear to end of field from cursor. -.TP 5 -REQ_CLR_FIELD -Clear the entire field. -.TP 5 -REQ_OVL_MODE -Enter overlay mode. -.TP 5 -REQ_INS_MODE -Enter insert mode. -.sp -.TP 5 -REQ_SCR_FLINE -Scroll the field forward a line. -.TP 5 -REQ_SCR_BLINE -Scroll the field backward a line. -.TP 5 -REQ_SCR_FPAGE -Scroll the field forward a page. -.TP 5 -REQ_SCR_BPAGE -Scroll the field backward a page. -.TP 5 -REQ_SCR_FHPAGE -Scroll the field forward half a page. -.TP 5 -REQ_SCR_BHPAGE -Scroll the field backward half a page. -.sp -.TP 5 -REQ_SCR_FCHAR -Scroll the field forward a character. -.TP 5 -REQ_SCR_BCHAR -Scroll the field backward a character. -.TP 5 -REQ_SCR_HFLINE -Horizontal scroll the field forward a line. -.TP 5 -REQ_SCR_HBLINE -Horizontal scroll the field backward a line. -.TP 5 -REQ_SCR_HFHALF -Horizontal scroll the field forward half a line. -.TP 5 -REQ_SCR_HBHALF -Horizontal scroll the field backward half a line. -.sp -.TP -REQ_VALIDATION -Validate field. -.TP -REQ_NEXT_CHOICE -Display next field choice. -.TP -REQ_PREV_CHOICE -Display previous field choice. -.PP -If the second argument is a printable character, the driver places it -in the current position in the current field. If it is one of the forms -requests listed above, that request is executed. -.SS MOUSE HANDLING -.PP -If the second argument is the KEY_MOUSE special key, the associated -mouse event is translated into one of the above pre-defined requests. -Currently only clicks in the user window (e.g., inside the form display -area or the decoration window) are handled. -.PP -If you click above the display region of the form: -.RS 3 -.TP -a REQ_PREV_FIELD is generated for a single click, -.TP -a REQ_PREV_PAGE is generated for a double-click and -.TP -a REQ_FIRST_FIELD is generated for a triple-click. -.RE -.PP -If you click below the display region of the form: -.RS 3 -.TP -a REQ_NEXT_FIELD is generated for a single click, -.TP -a REQ_NEXT_PAGE is generated for a double-click and -.TP -a REQ_LAST_FIELD is generated for a triple-click. -.RE -.PP -If you click at an field inside the display area of the form: -.RS 3 -.bP -the form cursor is positioned to that field. -.bP -If you double-click a field, -the form cursor is positioned to that field -and \fBE_UNKNOWN_COMMAND\fR is returned. -This return value makes sense, -because a double click usually means that an field-specific action should -be returned. -It is exactly the purpose of this return value to signal that an -application specific command should be executed. -.bP -If a translation -into a request was done, \fBform_driver\fR returns the result of this request. -.RE -.PP -If you clicked outside the user window or the mouse event could not be translated -into a form request an \fBE_REQUEST_DENIED\fR is returned. -.SS APPLICATION-DEFINED COMMANDS -.PP -If the second argument is neither printable nor one of the above -pre-defined form requests, the driver assumes it is an application-specific -command and returns \fBE_UNKNOWN_COMMAND\fR. Application-defined commands -should be defined relative to \fBMAX_COMMAND\fR, the maximum value of these -pre-defined requests. -.SH RETURN VALUE -\fBform_driver\fR returns one of the following error codes: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_BAD_STATE -Routine was called from an initialization or termination function. -.TP 5 -.B E_NOT_POSTED -The form has not been posted. -.TP 5 -.B E_INVALID_FIELD -Contents of field is invalid. -.TP 5 -.B E_REQUEST_DENIED -The form driver could not process the request. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.TP 5 -.B E_UNKNOWN_COMMAND -The form driver code saw an unknown request code. -. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBform\fR(3X), -\fBform_variables\fR(3X), -\fBgetch\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header files -\fB\fR. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_attributes.3x b/deps/ncurses-5.9/man/form_field_attributes.3x deleted file mode 100644 index da3ad79..0000000 --- a/deps/ncurses-5.9/man/form_field_attributes.3x +++ /dev/null @@ -1,86 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_field_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ -.TH form_field_attributes 3X "" -.SH NAME -\fBform_field_attributes\fR \- color and attribute control for form fields -.SH SYNOPSIS -\fB#include \fR -.br -int set_field_fore(FIELD *field, chtype attr); -.br -chtype field_fore(const FIELD *field); -.br -int set_field_back(FIELD *field, chtype attr); -.br -chtype field_back(const FIELD *field); -.br -int set_field_pad(FIELD *field, int pad); -.br -int field_pad(const FIELD *field); -.br -.SH DESCRIPTION -The function \fBset_field_fore\fR sets the foreground attribute of -\fIfield\fR. This is the highlight used to display the field contents. The -function \fBfield_fore\fR returns the foreground attribute. The default is -\fBA_STANDOUT\fR. -.PP -The function \fBset_field_back\fR sets the background attribute of -\fIform\fR. This is the highlight used to display the extent fields in the -form. The function \fBfield_back\fR returns the background attribute. The -default is \fBA_NORMAL\fR. -.PP -The function \fBset_field_pad\fR sets the character used to fill the field. -The function \fBfield_pad\fR returns the given form's pad character. The -default is a blank. -.SH RETURN VALUE -These routines return one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -. -.SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed -descriptions of the entry points. -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_info.3x b/deps/ncurses-5.9/man/form_field_info.3x deleted file mode 100644 index 6a1af6c..0000000 --- a/deps/ncurses-5.9/man/form_field_info.3x +++ /dev/null @@ -1,79 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_field_info.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ -.TH form_field_info 3X "" -.SH NAME -\fBform_field_info\fR \- retrieve field characteristics -.SH SYNOPSIS -\fB#include \fR -.br -int field_info(const FIELD *field, int *rows, int *cols, - int *frow, int *fcol, int *nrow, int *nbuf); -.br -int dynamic_field_info(const FIELD *field, int *rows, int *cols, int *max); -.br -.SH DESCRIPTION -The function \fBfield_info\fR returns the sizes and other attributes passed in -to the field at its creation time. The attributes are: height, width, row of -upper-left corner, column of upper-left corner, number off-screen rows, and -number of working buffers. -.PP -The function \fBdynamic_field_info\fR returns the actual size of the field, and -its maximum possible size. If the field has no size limit, the location -addressed by the third argument will be set to 0. -A field can be made dynamic -by turning off the \fBO_STATIC\fR option with \fBfield_opts_off\fR. -.SH RETURN VALUE -These routines return one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed -descriptions of the entry points. -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.PP -A null (zero pointer) is accepted for any of the return values, -to ignore that value. -Not all implementations allow this, e.g., Solaris 2.7 does not. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_opts.3x b/deps/ncurses-5.9/man/form_field_opts.3x deleted file mode 100644 index a33a041..0000000 --- a/deps/ncurses-5.9/man/form_field_opts.3x +++ /dev/null @@ -1,117 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_field_opts.3x,v 1.16 2010/12/04 18:41:07 tom Exp $ -.TH form_field_opts 3X "" -.SH NAME -\fBform_field_opts\fR \- set and get field options -.SH SYNOPSIS -\fB#include \fR -.br -int set_field_opts(FIELD *field, Field_Options opts); -.br -int field_opts_on(FIELD *field, Field_Options opts); -.br -int field_opts_off(FIELD *field, Field_Options opts); -.br -Field_Options field_opts(const FIELD *field); -.br -.SH DESCRIPTION -The function \fBset_field_opts\fR sets all the given field's option bits (field -option bits may be logically-OR'ed together). -.PP -The function \fBfield_opts_on\fR turns on the given option bits, and leaves -others alone. -.PP -The function \fBfield_opts_off\fR turns off the given option bits, and leaves -others alone. -.PP -The function \fBfield_opts\fR returns the field's current option bits. -.PP -The following options are defined (all are on by default): -.TP 5 -O_VISIBLE -The field is displayed. If this option is off, display of the field is -suppressed. -.TP 5 -O_ACTIVE -The field is visited during processing. If this option is off, the field will -not be reachable by navigation keys. Please notice that an invisible field -appears to be inactive also. -.TP 5 -O_PUBLIC -The field contents are displayed as data is entered. -.TP 5 -O_EDIT -The field can be edited. -.TP 5 -O_WRAP -Words that do not fit on a line are wrapped to the next line. Words are -blank-separated. -.TP 5 -O_BLANK -The field is cleared whenever a character is entered at the first position. -.TP 5 -O_AUTOSKIP -Skip to the next field when this one fills. -.TP 5 -O_NULLOK -Allow a blank field. -.TP 5 -O_STATIC -Field buffers are fixed to field's original size. -Turn this option off to create a dynamic field. -.TP 5 -O_PASSOK -Validate field only if modified by user. -.SH RETURN VALUE -Except for \fBfield_opts\fR, each routine returns one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_CURRENT -The field is the current field. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.SH SEE ALSO -\fBcurses\fR(3X), \fBform\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_validation.3x b/deps/ncurses-5.9/man/form_field_validation.3x deleted file mode 100644 index 3505fdb..0000000 --- a/deps/ncurses-5.9/man/form_field_validation.3x +++ /dev/null @@ -1,138 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_field_validation.3x,v 1.20 2010/12/04 18:38:55 tom Exp $ -.TH form_field_validation 3X "" -.SH NAME -\fBform_field_validation\fR \- data type validation for fields -.SH SYNOPSIS -\fB#include \fR -.br -int set_field_type(FIELD *field, FIELDTYPE *type, ...); -.br -FIELDTYPE *field_type(const FIELD *field); -.br -void *field_arg(const FIELD *field); -.sp -FIELDTYPE *TYPE_ALNUM; -.br -FIELDTYPE *TYPE_ALPHA; -.br -FIELDTYPE *TYPE_ENUM; -.br -FIELDTYPE *TYPE_INTEGER; -.br -FIELDTYPE *TYPE_NUMERIC; -.br -FIELDTYPE *TYPE_REGEXP; -.br -FIELDTYPE *TYPE_IPV4; -.br -.SH DESCRIPTION -The function \fBset_field_type\fR declares a data type for a given form field. -This is the type checked by validation functions. -The predefined types are as follows: -.TP 5 -TYPE_ALNUM -Alphanumeric data. Requires a third \fBint\fR argument, a minimum field width. -.TP 5 -TYPE_ALPHA -Character data. Requires a third \fBint\fR argument, a minimum field width. -.TP 5 -TYPE_ENUM -Accept one of a specified set of strings. Requires a third \fB(char **)\fR -argument pointing to a string list; a fourth \fBint\fR flag argument to enable -case-sensitivity; and a fifth \fBint\fR flag argument specifying whether a partial -match must be a unique one (if this flag is off, a prefix matches the first -of any set of more than one list elements with that prefix). Please notice -that the string list is copied. So you may use a list that lives in automatic variables on the stack. -.TP 5 -TYPE_INTEGER -Integer data, parsable to an integer by \fBatoi(3)\fR. Requires a third -\fBint\fR argument controlling the precision, a fourth \fBlong\fR argument -constraining minimum value, and a fifth \fBlong\fR constraining maximum value. -If the maximum value is less than or equal to the minimum value, the range is -simply ignored. On return the field buffer is formatted according to the -\fBprintf\fR format specification ".*ld", where the '*' is replaced by the -precision argument. -For details of the precision handling see \fBprintf's\fR man-page. -.TP 5 -TYPE_NUMERIC -Numeric data (may have a decimal-point part). Requires a third -\fBint\fR argument controlling the precision, a fourth \fBdouble\fR -argument constraining minimum value, and a fifth \fBdouble\fR constraining -maximum value. If your system supports locales, the decimal point character -to be used must be the one specified by your locale. -If the maximum value is less than or equal to the minimum value, the range is -simply ignored. On return the field buffer is formatted according to the -\fBprintf\fR format specification ".*f", where the '*' is replaced by the -precision argument. -For details of the precision handling see \fBprintf's\fR man-page. -.TP 5 -TYPE_REGEXP -Regular expression data. Requires a regular expression \fB(char *)\fR third argument; -the data is valid if the regular expression matches it. Regular expressions -are in the format of \fBregcomp\fR and \fBregexec\fR. Please notice -that the regular expression must match the whole field. If you have for -example an eight character wide field, a regular expression "^[0\-9]*$" always -means that you have to fill all eight positions with digits. If you want to -allow fewer digits, you may use for example "^[0\-9]* *$" which is good for -trailing spaces (up to an empty field), or "^ *[0\-9]* *$" which is good for -leading and trailing spaces around the digits. -.TP 5 -TYPE_IPV4 -An Internet Protocol Version 4 address. This requires no additional argument. It -is checked whether or not the buffer has the form a.b.c.d, where a,b,c and d are -numbers between 0 and 255. Trailing blanks in the buffer are ignored. The address -itself is not validated. Please note that this is an ncurses extension. This -field type may not be available in other curses implementations. -.PP -It is possible to set up new programmer-defined field types. See the -\fBform_fieldtype\fR(3X) manual page. -.SH RETURN VALUE -The functions \fBfield_type\fR and \fBfield_arg\fR return \fBNULL\fR on -error. The function \fBset_field_type\fR returns one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.SH SEE ALSO -\fBcurses\fR(3X), -\fBform\fR(3X), -\fBform_variables\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/form_fieldtype.3x b/deps/ncurses-5.9/man/form_fieldtype.3x deleted file mode 100644 index 028e9b0..0000000 --- a/deps/ncurses-5.9/man/form_fieldtype.3x +++ /dev/null @@ -1,142 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_fieldtype.3x,v 1.16 2010/12/04 18:40:45 tom Exp $ -.TH form_fieldtype 3X "" -.SH NAME -\fBform_fieldtype\fR \- define validation-field types -.SH SYNOPSIS -\fB#include \fR -.br -FIELDTYPE *new_fieldtype( - bool (* const field_check)(FIELD *, const void *), - bool (* const char_check)(int, const void *)); -.br -int free_fieldtype(FIELDTYPE *fieldtype); -.br -int set_fieldtype_arg( - FIELDTYPE *fieldtype, - void *(* const make_arg)(va_list *), - void *(* const copy_arg)(const void *), - void (* const free_arg)(void *)); -.br -int set_fieldtype_choice( - FIELDTYPE *fieldtype, - bool (* const next_choice)(FIELD *, const void *), - bool (* const prev_choice)(FIELD *, const void *)); -.br -FIELDTYPE *link_fieldtype(FIELDTYPE *type1, - FIELDTYPE *type2); -.br -.SH DESCRIPTION -The function \fBnew_fieldtype\fR creates a new field type usable for data -validation. You supply it with \fIfield_check\fR, a predicate to check the -validity of an entered data string whenever the user attempts to leave a field. -The (FIELD *) argument is passed in so the validation predicate can see the -field's buffer, sizes and other attributes; the second argument is an -argument-block structure, about which more below. -.PP -You also supply \fBnew_fieldtype\fR with \fIchar_check\fR, -a function to validate input characters as they are entered; it will be passed -the character to be checked and a pointer to an argument-block structure. -.PP -The function \fBfree_fieldtype\fR frees the space allocated for a given -validation type. -.PP -The function \fBset_fieldtype_arg\fR associates three storage-management functions -with a field type. -The \fImake_arg\fR function is automatically applied to the -list of arguments you give \fBset_field_type\fR when attaching validation -to a field; its job is to bundle these into an allocated argument-block -object which can later be passed to validation predicated. -The other two hook arguments should copy and free argument-block structures. -They will be used by the forms-driver code. -You must supply the \fImake_arg\fR function, -the other two are optional, you may supply NULL for them. -In this case it is assumed -that \fImake_arg\fR does not allocate memory but simply loads the -argument into a single scalar value. -.PP -The function \fBlink_fieldtype\fR creates -a new field type from the two given types. -They are connected by an logical 'OR'. -.PP -The form driver requests \fBREQ_NEXT_CHOICE\fR and \fBREQ_PREV_CHOICE\fR assume -that the possible values of a field form an ordered set, and provide the forms -user with a way to move through the set. -The \fBset_fieldtype_choice\fR -function allows forms programmers to define successor and predecessor functions -for the field type. -These functions take the field pointer and an -argument-block structure as arguments. -.SH RETURN VALUE -The pointer-valued routines return NULL on error. -They set errno according to their success: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred, e.g., malloc failure. -.PP -The integer-valued routines return one of the following codes on -error: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_CONNECTED -The field is already connected to a form. -.TP 5 -.B E_CURRENT -The field is the current field. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.SH SEE ALSO -\fBcurses\fR(3X), \fBform\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.PP -All of the \fB(char *)\fR arguments of these functions should actually be -\fB(void *)\fR. The type has been left uncorrected for strict compatibility -with System V. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/form_hook.3x b/deps/ncurses-5.9/man/form_hook.3x deleted file mode 100644 index 2943b88..0000000 --- a/deps/ncurses-5.9/man/form_hook.3x +++ /dev/null @@ -1,94 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ -.TH form_hook 3X "" -.SH NAME -\fBform_hook\fR \- set hooks for automatic invocation by applications -.SH SYNOPSIS -\fB#include \fR -.br -int set_field_init(FORM *form, Form_Hook func); -.br -Form_Hook field_init(const FORM *form); -.br -int set_field_term(FORM *form, Form_Hook func); -.br -Form_Hook field_term(const FORM *form); -.br -int set_form_init(FORM *form, Form_Hook func); -.br -Form_Hook form_init(const FORM *form); -.br -int set_form_term(FORM *form, Form_Hook func); -.br -Form_Hook form_term(const FORM *form); -.br -.SH DESCRIPTION -These functions make it possible to set hook functions to be called at various -points in the automatic processing of input event codes by \fBform_driver\fR. -.PP -The function \fBset_field_init\fR sets a hook to be called at form-post time -and each time the selected field changes (after the change). \fBfield_init\fR -returns the current field init hook, if any (\fBNULL\fR if there is no such -hook). -.PP -The function \fBset_field_term\fR sets a hook to be called at form-unpost time -and each time the selected field changes (before the change). \fBfield_term\fR -returns the current field term hook, if any (\fBNULL\fR if there is no such -hook). -.PP -The function \fBset_form_init\fR sets a hook to be called at form-post time and -just after a page change once it is posted. \fBform_init\fR returns the -current form init hook, if any (\fBNULL\fR if there is no such hook). -.PP -The function \fBset_form_term\fR sets a hook to be called at form-unpost time -and just before a page change once it is posted. \fBform_init\fR -returns the current form term hook, if any (\fBNULL\fR if there is no such -hook). -.SH RETURN VALUE -Routines that return pointers return \fBNULL\fR on error. Other routines -return one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.SH SEE ALSO -\fBcurses\fR(3X), \fBform\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/form_page.3x b/deps/ncurses-5.9/man/form_page.3x deleted file mode 100644 index 2211216..0000000 --- a/deps/ncurses-5.9/man/form_page.3x +++ /dev/null @@ -1,90 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: form_page.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ -.TH form_page 3X "" -.SH NAME -\fBform_page\fR \- set and get form page number -.SH SYNOPSIS -\fB#include \fR -.br -int set_current_field(FORM *form, FIELD *field); -.br -FIELD *current_field(const FORM *); -.br -int set_form_page(FORM *form, int n); -.br -int form_page(const FORM *form); -.br -int field_index(const FIELD *field); -.br -.SH DESCRIPTION -The function \fBset_current field\fR sets the current field of the given -form; \fBcurrent_field\fR returns the current field of the given form. -.PP -The function \fBset_form_page\fR sets the form's page number (goes to page -\fIn\fR of the form). -.PP -The function \fBform_page\fR returns the form's current page number. -.PP -The function \fBfield_index\fR returns the index of the field in the -field array of the form it is connected to. It returns \fBERR\fR if -the argument is the null pointer or the field is not connected. -.SH RETURN VALUE -Except for \fBform_page\fR, each routine returns one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_BAD_STATE -Routine was called from an initialization or termination function. -.TP 5 -.B E_INVALID_FIELD -Contents of a field are not valid. -.TP 5 -.B E_REQUEST_DENIED -The form driver could not process the request. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -. -.SH SEE ALSO -\fBcurses\fR(3X), \fBform\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V forms library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/infocmp.1m b/deps/ncurses-5.9/man/infocmp.1m deleted file mode 100644 index bfc3cc3..0000000 --- a/deps/ncurses-5.9/man/infocmp.1m +++ /dev/null @@ -1,431 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: infocmp.1m,v 1.46 2010/12/04 18:40:45 tom Exp $ -.TH @INFOCMP@ 1M "" -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -\fB@INFOCMP@\fR \- compare or print out \fIterminfo\fR descriptions -.SH SYNOPSIS -\fB@INFOCMP@\fR [\fB\-\ -1\ -C\ -E\ -F\ -G\ -I\ -L\ -T\ -U\ -V\ -c\ -d\ -e\ -g\ -i\ -l\ -n\ -p\ -q\ -r\ -t\ -u\ -x\ -\fR] -.br - [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-R \fR\fBsubset\fR] -.br - [\fB\-w\fR\ \fIwidth\fR] [\fB\-A\fR\ \fIdirectory\fR] [\fB\-B\fR\ \fIdirectory\fR] -.br - [\fItermname\fR...] -.SH DESCRIPTION -\fB@INFOCMP@\fR can be used to compare a binary \fBterminfo\fR entry with other -terminfo entries, rewrite a \fBterminfo\fR description to take advantage of the -\fBuse=\fR terminfo field, or print out a \fBterminfo\fR description from the -binary file (\fBterm\fR) 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. -.SS Default Options -If no options are specified and zero or one \fItermnames\fR are specified, the -\fB\-I\fR option will be assumed. If more than one \fItermname\fR is specified, -the \fB\-d\fR option will be assumed. -.SS Comparison Options [\-d] [\-c] [\-n] -\fB@INFOCMP@\fR compares the \fBterminfo\fR description of the first terminal -\fItermname\fR with each of the descriptions given by the entries for the other -terminal's \fItermnames\fR. If a capability is defined for only one of the -terminals, the value returned will depend on the type of the capability: -\fBF\fR for boolean variables, \fB\-1\fR for integer variables, and \fBNULL\fR -for string variables. -.PP -The \fB\-d\fR option produces a list of each capability that is different -between two entries. This option is useful to show the difference between two -entries, created by different people, for the same or similar terminals. -.PP -The \fB\-c\fR option produces a list of each capability that is common between -two entries. Capabilities that are not set are ignored. This option can be -used as a quick check to see if the \fB\-u\fR option is worth using. -.PP -The \fB\-n\fR option produces a list of each capability that is in neither -entry. If no \fItermnames\fR are given, the environment variable \fBTERM\fR -will be used for both of the \fItermnames\fR. This can be used as a quick -check to see if anything was left out of a description. -.SS Source Listing Options [\-I] [\-L] [\-C] [\-r] -The \fB\-I\fR, \fB\-L\fR, and \fB\-C\fR options will produce a source listing for -each terminal named. -. -.TS -center tab(/) ; -l l . -\fB\-I\fR/use the \fBterminfo\fR names -\fB\-L\fR/use the long C variable name listed in <\fBterm.h\fR> -\fB\-C\fR/use the \fBtermcap\fR names -\fB\-r\fR/when using \fB\-C\fR, put out all capabilities in \fBtermcap\fR form -.TE -.PP -If no \fItermnames\fR are given, the environment variable \fBTERM\fR will be -used for the terminal name. -.PP -The source produced by the \fB\-C\fR option may be used directly as a -\fBtermcap\fR entry, but not all parameterized strings can be changed to -the \fBtermcap\fR format. \fB@INFOCMP@\fR will attempt to convert most of the -parameterized information, and anything not converted will be plainly marked in -the output and commented out. These should be edited by hand. -.PP -All padding information for strings will be collected together and placed -at the beginning of the string where \fBtermcap\fR expects it. Mandatory -padding (padding information with a trailing '/') will become optional. -.PP -All \fBtermcap\fR variables no longer supported by \fBterminfo\fR, but which -are derivable from other \fBterminfo\fR variables, will be output. Not all -\fBterminfo\fR capabilities will be translated; only those variables which were -part of \fBtermcap\fR will normally be output. Specifying the \fB\-r\fR option -will take off this restriction, allowing all capabilities to be output in -\fItermcap\fR form. -.PP -Note that because padding is collected to the beginning of the capability, not -all capabilities are output. Mandatory padding is not supported. Because -\fBtermcap\fR strings are not as flexible, it is not always possible to convert -a \fBterminfo\fR string capability into an equivalent \fBtermcap\fR format. A -subsequent conversion of the \fBtermcap\fR file back into \fBterminfo\fR format -will not necessarily reproduce the original \fBterminfo\fR -source. -.PP -Some common \fBterminfo\fR parameter sequences, their \fBtermcap\fR -equivalents, and some terminal types which commonly have such sequences, are: -. -.TS -center tab(/) ; -l c l -l l l. -\fBterminfo/termcap\fR/Representative Terminals -= -\fB%p1%c/%.\fR/adm -\fB%p1%d/%d\fR/hp, ANSI standard, vt100 -\fB%p1%'x'%+%c/%+x\fR/concept -\fB%i/%i\fRq/ANSI standard, vt100 -\fB%p1%?%'x'%>%t%p1%'y'%+%;/%>xy\fR/concept -\fB%p2\fR is printed before \fB%p1/%r\fR/hp -.TE -.SS Use= Option [\-u] -The \fB\-u\fR option produces a \fBterminfo\fR source description of the first -terminal \fItermname\fR which is relative to the sum of the descriptions given -by the entries for the other terminals \fItermnames\fR. It does this by -analyzing the differences between the first \fItermname\fR and the other -\fItermnames\fR and producing a description with \fBuse=\fR fields for the -other terminals. In this manner, it is possible to retrofit generic terminfo -entries into a terminal's description. Or, if two similar terminals exist, but -were coded at different times or by different people so that each description -is a full description, using \fB@INFOCMP@\fR will show what can be done to change -one description to be relative to the other. -.PP -A capability will get printed with an at-sign (@) if it no longer exists in the -first \fItermname\fR, but one of the other \fItermname\fR entries contains a -value for it. A capability's value gets printed if the value in the first -\fItermname\fR is not found in any of the other \fItermname\fR entries, or if -the first of the other \fItermname\fR entries that has this capability gives a -different value for the capability than that in the first \fItermname\fR. -.PP -The order of the other \fItermname\fR entries is significant. Since the -terminfo compiler \fBtic\fR does a left-to-right scan of the capabilities, -specifying two \fBuse=\fR entries that contain differing entries for the same -capabilities will produce different results depending on the order that the -entries are given in. \fB@INFOCMP@\fR will flag any such inconsistencies between -the other \fItermname\fR entries as they are found. -.PP -Alternatively, specifying a capability \fIafter\fR a \fBuse=\fR entry that -contains that capability will cause the second specification to be ignored. -Using \fB@INFOCMP@\fR to recreate a description can be a useful check to make -sure that everything was specified correctly in the original source -description. -.PP -Another error that does not cause incorrect compiled files, but will slow down -the compilation time, is specifying extra \fBuse=\fR fields that are -superfluous. \fB@INFOCMP@\fR will flag any other \fItermname use=\fR fields that -were not needed. -.SS Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR] -The location of the compiled \fBterminfo\fR database is taken from the -environment variable \fBTERMINFO\fR . If the variable is not defined, or the -terminal is not found in that location, the system \fBterminfo\fR database, -in \fB@TERMINFO@\fR, will be used. The options \fB\-A\fR -and \fB\-B\fR may be used to override this location. The \fB\-A\fR option will -set \fBTERMINFO\fR for the first \fItermname\fR and the \fB\-B\fR option will -set \fBTERMINFO\fR for the other \fItermnames\fR. With this, it is possible to -compare descriptions for a terminal with the same name located in two different -databases. This is useful for comparing descriptions for the same terminal -created by different people. -.SS Other Options -.TP 5 -\fB\-1\fR -causes the fields to be printed out one to a line. Otherwise, -the fields will be printed several to a line to a maximum width -of 60 characters. -.TP -\fB\-a\fR -tells \fB@INFOCMP@\fP to retain commented-out capabilities rather than discarding -them. Capabilities are commented by prefixing them with a period. -.TP 5 -\fB\-E\fR -Dump the capabilities of the given terminal as tables, needed in -the C initializer for a -TERMTYPE structure (the terminal capability structure in the \fB\fR). -This option is useful for preparing versions of the curses library hardwired -for a given terminal type. -The tables are all declared static, and are named according to the type -and the name of the corresponding terminal entry. -.sp -Before ncurses 5.0, the split between the \fB\-e\fP and \fB\-E\fP -options was not needed; but support for extended names required making -the arrays of terminal capabilities separate from the TERMTYPE structure. -.TP 5 -\fB\-e\fR -Dump the capabilities of the given terminal as a C initializer for a -TERMTYPE structure (the terminal capability structure in the \fB\fR). -This option is useful for preparing versions of the curses library hardwired -for a given terminal type. -.TP 5 -\fB\-F\fR -compare terminfo files. This assumes that two following arguments are -filenames. The files are searched for pairwise matches between -entries, with two entries considered to match if any of their names do. -The report printed to standard output lists entries with no matches in -the other file, and entries with more than one match. For entries -with exactly one match it includes a difference report. Normally, -to reduce the volume of the report, use references are -not resolved before looking for differences, but resolution can be forced -by also specifying \fB\-r\fR. -.TP 5 -\fB\-f\fR -Display complex terminfo strings which contain if/then/else/endif expressions -indented for readability. -.TP 5 -\fB\-G\fR -Display constant literals in decimal form -rather than their character equivalents. -.TP 5 -\fB\-g\fR -Display constant character literals in quoted form -rather than their decimal equivalents. -.TP 5 -\fB\-i\fR -Analyze the initialization (\fBis1\fR, \fBis2\fR, \fBis3\fR), and reset -(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), strings in the entry. For each string, the -code tries to analyze it into actions in terms of the other capabilities in the -entry, certain X3.64/ISO 6429/ECMA\-48 capabilities, and certain DEC VT-series -private modes (the set of recognized special sequences has been selected for -completeness over the existing terminfo database). Each report line consists -of the capability name, followed by a colon and space, followed by a printable -expansion of the capability string with sections matching recognized actions -translated into {}-bracketed descriptions. Here is a list of the DEC/ANSI -special sequences recognized: -i. -.TS -center tab(/) ; -l l -l l. -Action/Meaning -= -RIS/full reset -SC/save cursor -RC/restore cursor -LL/home-down -RSR/reset scroll region -= -DECSTR/soft reset (VT320) -S7C1T/7-bit controls (VT220) -= -ISO DEC G0/enable DEC graphics for G0 -ISO UK G0/enable UK chars for G0 -ISO US G0/enable US chars for G0 -ISO DEC G1/enable DEC graphics for G1 -ISO UK G1/enable UK chars for G1 -ISO US G1/enable US chars for G1 -= -DECPAM/application keypad mode -DECPNM/normal keypad mode -DECANSI/enter ANSI mode -= -ECMA[+\-]AM/keyboard action mode -ECMA[+\-]IRM/insert replace mode -ECMA[+\-]SRM/send receive mode -ECMA[+\-]LNM/linefeed mode -= -DEC[+\-]CKM/application cursor keys -DEC[+\-]ANM/set VT52 mode -DEC[+\-]COLM/132-column mode -DEC[+\-]SCLM/smooth scroll -DEC[+\-]SCNM/reverse video mode -DEC[+\-]OM/origin mode -DEC[+\-]AWM/wraparound mode -DEC[+\-]ARM/auto-repeat mode -.TE -.sp -It also recognizes a SGR action corresponding to ANSI/ISO 6429/ECMA Set -Graphics Rendition, with the values NORMAL, BOLD, UNDERLINE, BLINK, and -REVERSE. All but NORMAL may be prefixed with `+' (turn on) or `\-' (turn off). -.PP -An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}). -.TP 5 -\fB\-l\fR -Set output format to terminfo. -.TP 5 -\fB\-p\fR -Ignore padding specifications when comparing strings. -.TP 5 -\fB\-q\fR -Make the comparison listing shorter by omitting subheadings, and using -"\-" for absent capabilities, "@" for canceled rather than "NULL". -.TP 5 -\fB\-R\fR\fIsubset\fR -Restrict output to a given subset. This option is for use with archaic -versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support -the full set of SVR4/XSI Curses terminfo; and variants such as AIX -that have their own extensions incompatible with SVr4/XSI. Available terminfo -subsets are "SVr1", "Ultrix", "HP", and "AIX"; see \fBterminfo\fR(\*n) for -details. You can also choose the subset "BSD" which selects only capabilities -with termcap equivalents recognized by 4.4BSD. -.TP -\fB\-s \fR\fI[d|i|l|c]\fR -The \fB\-s\fR option sorts the fields within each type according to the argument -below: -.br -.RS 5 -.TP 5 -\fBd\fR -leave fields in the order that they are stored in the \fIterminfo\fR database. -.TP 5 -\fBi\fR -sort by \fIterminfo\fR name. -.TP 5 -\fBl\fR -sort by the long C variable name. -.TP 5 -\fBc\fR -sort by the \fItermcap\fR name. -.RE -.IP -If the \fB\-s\fR option is not given, the fields printed out will be -sorted alphabetically by the \fBterminfo\fR name within each type, -except in the case of the \fB\-C\fR or the \fB\-L\fR options, which cause the -sorting to be done by the \fBtermcap\fR name or the long C variable -name, respectively. -.TP 5 -\fB\-T\fR -eliminates size-restrictions on the generated text. -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\fR -tells \fBtic\fP to discard commented-out capabilities. -Normally when translating from terminfo to termcap, -untranslatable capabilities are commented-out. -.TP 5 -\fB\-U\fR -tells \fB@INFOCMP@\fP to not post-process the data after parsing the source file. -This feature helps when comparing the actual contents of two source files, -since it excludes the inferences that \fB@INFOCMP@\fP makes to fill in missing -data. -.TP 5 -\fB\-V\fR -reports the version of ncurses which was used in this program, and exits. -.TP 5 -\fB\-v\fR \fIn\fR -prints out tracing information on standard error as the program runs. -Higher values of n induce greater verbosity. -.TP 5 -\fB\-w\fR \fIwidth\fR -changes the output to \fIwidth\fR characters. -.TP -\fB\-x\fR -print information for user-defined capabilities. -These are extensions to the terminfo repertoire which can be loaded -using the \fB\-x\fR option of \fBtic\fP. -.SH FILES -.TP 20 -\*d -Compiled terminal description database. -.SH EXTENSIONS -The -\fB\-E\fR, -\fB\-F\fR, -\fB\-G\fR, -\fB\-R\fR, -\fB\-T\fR, -\fB\-V\fR, -\fB\-a\fR, -\fB\-e\fR, -\fB\-f\fR, -\fB\-g\fR, -\fB\-i\fR, -\fB\-l\fR, -\fB\-p\fR, -\fB\-q\fR and -\fB\-t\fR -options are not supported in SVr4 curses. -.PP -The \fB\-r\fR 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\fR \fB\-RBSD\fR. -.SH BUGS -The \fB\-F\fR option of \fB@INFOCMP@\fR(1M) should be a \fB@TOE@\fR(1M) mode. -.SH SEE ALSO -\fB@CAPTOINFO@\fR(1M), -\fB@INFOTOCAP@\fR(1M), -\fB@TIC@\fR(1M), -\fB@TOE@\fR(1M), -\fBcurses\fR(3X), -\fBterminfo\fR(\*n). -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). -.SH AUTHOR -Eric S. Raymond -and -.br -Thomas E. Dickey diff --git a/deps/ncurses-5.9/man/menu_attributes.3x b/deps/ncurses-5.9/man/menu_attributes.3x deleted file mode 100644 index c33059b..0000000 --- a/deps/ncurses-5.9/man/menu_attributes.3x +++ /dev/null @@ -1,94 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: menu_attributes.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ -.TH menu_attributes 3X "" -.SH NAME -\fBmenu_attributes\fR \- color and attribute control for menus -.SH SYNOPSIS -\fB#include \fR -.br -int set_menu_fore(MENU *menu, chtype attr); -.br -chtype menu_fore(const MENU *menu); -.br -int set_menu_back(MENU *menu, chtype attr); -.br -chtype menu_back(const MENU *menu); -.br -int set_menu_grey(MENU *menu, chtype attr); -.br -chtype menu_grey(const MENU *menu); -.br -int set_menu_pad(MENU *menu, int pad); -.br -int menu_pad(const MENU *menu); -.br -.SH DESCRIPTION -The function \fBset_menu_fore\fR sets the foreground attribute of -\fImenu\fR. This is the highlight used for selected menu items. -\fBmenu_fore\fR returns the foreground attribute. The default -is \fBA_REVERSE\fR. -.PP -The function \fBset_menu_back\fR sets the background attribute of -\fImenu\fR. This is the highlight used for selectable (but not currently -selected) menu items. The function \fBmenu_back\fR returns the background -attribute. The default is \fBA_NORMAL\fR. -.PP -The function \fBset_menu_grey\fR sets the grey attribute of \fImenu\fR. This is -the highlight used for un-selectable menu items in menus that permit more than -one selection. The function \fBmenu_grey\fR returns the grey attribute. -The default is \fBA_UNDERLINE\fR. -.PP -The function \fBset_menu_pad\fR sets the character used to fill the space -between the name and description parts of a menu item. \fBmenu_pad\fR returns -the given menu's pad character. The default is a blank. -.SH RETURN VALUE -These routines return one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "menu_" for detailed -descriptions of the entry points. -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V menu library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_format.3x b/deps/ncurses-5.9/man/menu_format.3x deleted file mode 100644 index b9a572b..0000000 --- a/deps/ncurses-5.9/man/menu_format.3x +++ /dev/null @@ -1,81 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: menu_format.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ -.TH menu_format 3X "" -.SH NAME -\fBmenu_format\fR \- set and get menu sizes -.SH SYNOPSIS -\fB#include \fR -.br -int set_menu_format(MENU *menu, int rows, int cols); -.br -void menu_format(const MENU *menu, int *rows, int *cols); -.br -.SH DESCRIPTION -The function \fBset_menu_format\fR sets the maximum display size of the given -menu. If this size is too small to display all menu items, the menu will be -made scrollable. If this size is larger than the menus subwindow and the -subwindow is too small to display all menu items, \fBpost_menu()\fR will fail. -.PP -The default format is 16 rows, 1 column. Calling \fBset_menu_format\fR with a -null menu pointer will change this default. A zero row or column argument to -\fBset_menu_format\fR is interpreted as a request not to change the current -value. -.PP -The function \fBmenu_format\fR returns the maximum-size constraints for the -given menu into the storage addressed by \fBrows\fR and \fBcols\fR. -.SH RETURN VALUE -These routines returns one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_POSTED -The menu is already posted. -.TP 5 -.B E_NOT_CONNECTED -No items are connected to the menu. -.SH SEE ALSO -\fBcurses\fR(3X), \fBmenu\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V menu library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_hook.3x b/deps/ncurses-5.9/man/menu_hook.3x deleted file mode 100644 index 1fd74de..0000000 --- a/deps/ncurses-5.9/man/menu_hook.3x +++ /dev/null @@ -1,95 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: menu_hook.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ -.TH menu_hook 3X "" -.SH NAME -\fBmenu_hook\fR \- set hooks for automatic invocation by applications -.SH SYNOPSIS -\fB#include \fR -.br -int set_item_init(MENU *menu, Menu_Hook func); -.br -Menu_Hook item_init(const MENU *menu); -.br -int set_item_term(MENU *menu, Menu_Hook func); -.br -Menu_Hook item_term(const MENU *menu); -.br -int set_menu_init(MENU *menu, Menu_Hook func); -.br -Menu_Hook menu_init(const MENU *menu); -.br -int set_menu_term(MENU *menu, Menu_Hook func); -.br -Menu_Hook menu_term(const MENU *menu); -.br -.SH DESCRIPTION -These functions make it possible to set hook functions to be called at various -points in the automatic processing of input event codes by \fBmenu_driver\fR. -.PP -The function \fBset_item_init\fR sets a hook to be called at menu-post time and -each time the selected item changes (after the change). \fBitem_init\fR -returns the current item init hook, if any (\fBNULL\fR if there is no such -hook). -.PP -The function \fBset_item_term\fR sets a hook to be called at menu-unpost time -and each time the selected item changes (before the change). \fBitem_term\fR -returns the current item term hook, if any (\fBNULL\fR if there is no such -hook). -.PP -The function \fBset_menu_init\fR 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\fR -returns the current menu init hook, if any (\fBNULL\fR if there is no such -hook). -.PP -The function \fBset_menu_term\fR 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\fR returns the current menu term hook, if any (\fBNULL\fR if there -is no such hook). -.SH RETURN VALUE -Routines that return pointers return \fBNULL\fR on error. Other routines -return one of the following: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.SH SEE ALSO -\fBcurses\fR(3X), \fBmenu\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V menu library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_pattern.3x b/deps/ncurses-5.9/man/menu_pattern.3x deleted file mode 100644 index e63a9f7..0000000 --- a/deps/ncurses-5.9/man/menu_pattern.3x +++ /dev/null @@ -1,85 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: menu_pattern.3x,v 1.13 2010/12/04 18:40:45 tom Exp $ -.TH menu_pattern 3X "" -.SH NAME -\fBmenu_pattern\fR \- get and set a menu's pattern buffer -.SH SYNOPSIS -\fB#include \fR -.br -int set_menu_pattern(MENU *menu, const char *pattern); -.br -char *menu_pattern(const MENU *menu); -.br -.SH DESCRIPTION -Every menu has an associated pattern match buffer. As input events that are -printable characters come in, they are appended to this match buffer -and tested for a match, as described in \fBmenu_driver\fR(3X). -.PP -The function \fBset_menu_pattern\fR sets the pattern buffer for the given menu -and tries to find the first matching item. If it succeeds, that item becomes -current; if not, the current item does not change. -.PP -The function \fBmenu_pattern\fR returns the pattern buffer of the given -\fImenu\fR. -.SH RETURN VALUE -The function \fBmenu_pattern\fR returns a pointer, which is \fBNULL\fR if the \fImenu\fP parameter is \fBNULL\fP. -Otherwise, it is a pointer to a string which is empty if no pattern has been set. -It does not set errno. -.PP -The function \fBset_menu_pattern\fR may return the following error codes: -.TP 5 -.B E_OK -The routine succeeded. -.TP 5 -.B E_BAD_ARGUMENT -Routine detected an incorrect or out-of-range argument. -.TP 5 -.B E_BAD_STATE -Routine was called from an initialization or termination function. -.TP 5 -.B E_NOT_CONNECTED -No items are connected to menu. -.TP 5 -.B E_NO_MATCH -Character failed to match. -.TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.SH SEE ALSO -\fBcurses\fR(3X), \fBmenu\fR(3X). -.SH NOTES -The header file \fB\fR automatically includes the header file -\fB\fR. -.SH PORTABILITY -These routines emulate the System V menu library. They were not supported on -Version 7 or BSD versions. -.SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. diff --git a/deps/ncurses-5.9/man/ncurses.3x b/deps/ncurses-5.9/man/ncurses.3x deleted file mode 100644 index 4acfc05..0000000 --- a/deps/ncurses-5.9/man/ncurses.3x +++ /dev/null @@ -1,1194 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2010,2011 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. * -.\"*************************************************************************** -.\" -.\" $Id: ncurses.3x,v 1.103 2011/02/05 23:21:29 tom Exp $ -.hy 0 -.TH ncurses 3X "" -.de bP -.IP \(bu 4 -.. -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -\fBncurses\fR \- CRT screen handling and optimization package -.SH SYNOPSIS -\fB#include \fR -.br -.SH DESCRIPTION -The \fBncurses\fR library routines give the user a terminal-independent method -of updating character screens with reasonable optimization. -This implementation is ``new curses'' (ncurses) and -is the approved replacement for -4.4BSD classic curses, which has been discontinued. -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). -.PP -The \fBncurses\fR library emulates the curses library of -System V Release 4 UNIX, -and XPG4 (X/Open Portability Guide) curses (also known as XSI curses). -XSI stands for X/Open System Interfaces Extension. -The \fBncurses\fR library is freely redistributable in source form. -Differences from the SVr4 -curses are summarized under the \fBEXTENSIONS\fP and \fBPORTABILITY\fP sections below and -described in detail in the respective \fBEXTENSIONS\fP, \fBPORTABILITY\fP and \fBBUGS\fP sections -of individual man pages. -.PP -The \fBncurses\fR library also provides many useful extensions, -i.e., features which cannot be implemented by a simple add-on library -but which require access to the internals of the library. -.PP -A program using these routines must be linked with the \fB\-lncurses\fR option, -or (if it has been generated) with the debugging library \fB\-lncurses_g\fR. -(Your system integrator may also have installed these libraries under -the names \fB\-lcurses\fR and \fB\-lcurses_g\fR.) -The ncurses_g library generates trace logs (in a file called 'trace' in the -current directory) that describe curses actions. -See also the section on \fBALTERNATE CONFIGURATIONS\fP. -.PP -The \fBncurses\fR package supports: overall screen, window and pad -manipulation; output to windows and pads; reading terminal input; control over -terminal and \fBcurses\fR input and output options; environment query -routines; color manipulation; use of soft label keys; terminfo capabilities; -and access to low-level terminal-manipulation routines. -.PP -The library uses the locale which the calling program has initialized. -That is normally done with \fBsetlocale\fP: -.sp - \fBsetlocale(LC_ALL, "");\fP -.sp -If the locale is not initialized, -the library assumes that characters are printable as in ISO\-8859\-1, -to work with certain legacy programs. -You should initialize the locale and not rely on specific details of -the library when the locale has not been setup. -.PP -The function \fBinitscr\fR or \fBnewterm\fR -must be called to initialize the library -before any of the other routines that deal with windows -and screens are used. -The routine \fBendwin\fR must be called before exiting. -.PP -To get character-at-a-time input without echoing (most -interactive, screen oriented programs want this), the following -sequence should be used: -.sp - \fBinitscr(); cbreak(); noecho();\fR -.sp -Most programs would additionally use the sequence: -.sp - \fBnonl();\fR - \fBintrflush(stdscr, FALSE);\fR - \fBkeypad(stdscr, TRUE);\fR -.sp -Before a \fBcurses\fR program is run, the tab stops of the terminal -should be set and its initialization strings, if defined, must be output. -This can be done by executing the \fBtput init\fR command -after the shell environment variable \fBTERM\fR has been exported. -\fBtset(1)\fR is usually responsible for doing this. -[See \fBterminfo\fR(\*n) for further details.] -.PP -The \fBncurses\fR library permits manipulation of data structures, -called \fIwindows\fR, which can be thought of as two-dimensional -arrays of characters representing all or part of a CRT screen. -A default window called \fBstdscr\fR, which is the size of the terminal -screen, is supplied. -Others may be created with \fBnewwin\fR. -.PP -Note that \fBcurses\fR does not handle overlapping windows, that's done by -the \fBpanel\fR(3X) library. -This means that you can either use -\fBstdscr\fR or divide the screen into tiled windows and not using -\fBstdscr\fR at all. -Mixing the two will result in unpredictable, and undesired, effects. -.PP -Windows are referred to by variables declared as \fBWINDOW *\fR. -These data structures are manipulated with routines described here and -elsewhere in the \fBncurses\fR manual pages. -Among those, the most basic -routines are \fBmove\fR and \fBaddch\fR. -More general versions of -these routines are included with names beginning with \fBw\fR, -allowing the user to specify a window. -The routines not beginning -with \fBw\fR affect \fBstdscr\fR. -.PP -After using routines to manipulate a window, \fBrefresh\fR is called, -telling \fBcurses\fR to make the user's CRT screen look like -\fBstdscr\fR. -The characters in a window are actually of type -\fBchtype\fR, (character and attribute data) so that other information -about the character may also be stored with each character. -.PP -Special windows called \fIpads\fR may also be manipulated. -These are windows -which are not constrained to the size of the screen and whose contents need not -be completely displayed. -See \fBcurs_pad\fR(3X) for more information. -.PP -In addition to drawing characters on the screen, video 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. -Line drawing characters may be specified to be output. -On input, \fBcurses\fR is also able to translate arrow and function keys that -transmit escape sequences into single values. -The video attributes, line -drawing characters, and input values use names, defined in \fB\fR, -such as \fBA_REVERSE\fR, \fBACS_HLINE\fR, and \fBKEY_LEFT\fR. -.PP -If the environment variables \fBLINES\fR and \fBCOLUMNS\fR are set, or if the -program is executing in a window environment, line and column information in -the environment will override information read by \fIterminfo\fR. -This would affect a program running in an AT&T 630 layer, -for example, where the size of a -screen is changeable (see \fBENVIRONMENT\fR). -.PP -If the environment variable \fBTERMINFO\fR is defined, any program using -\fBcurses\fR checks for a local terminal definition before checking in the -standard place. -For example, if \fBTERM\fR is set to \fBatt4424\fR, then the -compiled terminal definition is found in -.sp - \fB\*d/a/att4424\fR. -.sp -(The \fBa\fR is copied from the first letter of \fBatt4424\fR to avoid -creation of huge directories.) However, if \fBTERMINFO\fR is set to -\fB$HOME/myterms\fR, \fBcurses\fR first checks -.sp - \fB$HOME/myterms/a/att4424\fR, -.sp -and if that fails, it then checks -.sp - \fB\*d/a/att4424\fR. -.sp -This is useful for developing experimental definitions or when write -permission in \fB\*d\fR is not available. -.PP -The integer variables \fBLINES\fR and \fBCOLS\fR are defined in -\fB\fR and will be filled in by \fBinitscr\fR with the size of the -screen. -The constants \fBTRUE\fR and \fBFALSE\fR have the values \fB1\fR and -\fB0\fR, respectively. -.PP -The \fBcurses\fR routines also define the \fBWINDOW *\fR variable \fBcurscr\fR -which is used for certain low-level operations like clearing and redrawing a -screen containing garbage. -The \fBcurscr\fR can be used in only a few routines. -.\" -.SS Routine and Argument Names -Many \fBcurses\fR routines have two or more versions. -The routines prefixed with \fBw\fR require a window argument. -The routines prefixed with \fBp\fR require a pad argument. -Those without a prefix generally use \fBstdscr\fR. -.PP -The routines prefixed with \fBmv\fR require a \fIy\fR and \fIx\fR -coordinate to move to before performing the appropriate action. -The \fBmv\fR routines imply a call to \fBmove\fR before the call to the -other routine. -The coordinate \fIy\fR always refers to the row (of -the window), and \fIx\fR always refers to the column. -The upper left-hand corner is always (0,0), not (1,1). -.PP -The routines prefixed with \fBmvw\fR take both a window argument and -\fIx\fR and \fIy\fR coordinates. -The window argument is always specified before the coordinates. -.PP -In each case, \fIwin\fR is the window affected, and \fIpad\fR is the -pad affected; \fIwin\fR and \fIpad\fR are always pointers to type -\fBWINDOW\fR. -.PP -Option setting routines require a Boolean flag \fIbf\fR with the value -\fBTRUE\fR or \fBFALSE\fR; \fIbf\fR is always of type \fBbool\fR. -Most of the data types used in the library routines, -such as \fBWINDOW\fR, \fBSCREEN\fR, \fBbool\fR, and \fBchtype\fR -are defined in \fB\fR. -Types used for the terminfo routines such as -\fBTERMINAL\fR are defined in \fB\fR. -.PP -This manual page describes functions which may appear in any configuration -of the library. -There are two common configurations of the library: -.RS -.TP 5 -ncurses -the "normal" library, which handles 8-bit characters. -The normal (8-bit) library stores characters combined with attributes -in \fBchtype\fP data. -.IP -Attributes alone (no corresponding character) may be stored in \fBchtype\fP -or the equivalent \fBattr_t\fP data. -In either case, the data is stored in something like an integer. -.IP -Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBchtype\fP. -.TP 5 -ncursesw -the so-called "wide" library, which handles multibyte characters -(see the section on \fBALTERNATE CONFIGURATIONS\fP). -The "wide" library includes all of the calls from the "normal" library. -It adds about one third more calls using data types which store -multibyte characters: -.RS -.TP 5 -.B cchar_t -corresponds to \fBchtype\fP. -However it is a structure, because more data is stored than can fit into -an integer. -The characters are large enough to require a full integer value \- and there -may be more than one character per cell. -The video attributes and color are stored in separate fields of the structure. -.IP -Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBcchar_t\fP. -.TP 5 -.B wchar_t -stores a "wide" character. -Like \fBchtype\fP, this may be an integer. -.TP 5 -.B wint_t -stores a \fBwchar_t\fP or \fBWEOF\fP \- not the same, though both may have -the same size. -.RE -.IP -The "wide" library provides new functions which are analogous to -functions in the "normal" library. -There is a naming convention which relates many of the normal/wide variants: -a "_w" is inserted into the name. -For example, \fBwaddch\fP becomes \fBwadd_wch\fP. -.RE -.PP -.\" -.SS Routine Name Index -The following table lists each \fBcurses\fR routine and the name of -the manual page on which it is described. -Routines flagged with `*' -are ncurses-specific, not described by XPG4 or present in SVr4. -.PP -.TS -center tab(/); -l l -l l . -\fBcurses\fR Routine Name/Manual Page Name -= -COLOR_PAIR/\fBcurs_color\fR(3X) -PAIR_NUMBER/\fBcurs_attr\fR(3X) -_nc_free_and_exit/\fBcurs_memleaks\fR(3X)* -_nc_freeall/\fBcurs_memleaks\fR(3X)* -_nc_tracebits/\fBcurs_trace\fR(3X)* -_traceattr/\fBcurs_trace\fR(3X)* -_traceattr2/\fBcurs_trace\fR(3X)* -_tracechar/\fBcurs_trace\fR(3X)* -_tracechtype/\fBcurs_trace\fR(3X)* -_tracechtype2/\fBcurs_trace\fR(3X)* -_tracedump/\fBcurs_trace\fR(3X)* -_tracef/\fBcurs_trace\fR(3X)* -_tracemouse/\fBcurs_trace\fR(3X)* -add_wch/\fBcurs_add_wch\fR(3X) -add_wchnstr/\fBcurs_add_wchstr\fR(3X) -add_wchstr/\fBcurs_add_wchstr\fR(3X) -addch/\fBcurs_addch\fR(3X) -addchnstr/\fBcurs_addchstr\fR(3X) -addchstr/\fBcurs_addchstr\fR(3X) -addnstr/\fBcurs_addstr\fR(3X) -addnwstr/\fBcurs_addwstr\fR(3X) -addstr/\fBcurs_addstr\fR(3X) -addwstr/\fBcurs_addwstr\fR(3X) -assume_default_colors/\fBdefault_colors\fR(3X)* -attr_get/\fBcurs_attr\fR(3X) -attr_off/\fBcurs_attr\fR(3X) -attr_on/\fBcurs_attr\fR(3X) -attr_set/\fBcurs_attr\fR(3X) -attroff/\fBcurs_attr\fR(3X) -attron/\fBcurs_attr\fR(3X) -attrset/\fBcurs_attr\fR(3X) -baudrate/\fBcurs_termattrs\fR(3X) -beep/\fBcurs_beep\fR(3X) -bkgd/\fBcurs_bkgd\fR(3X) -bkgdset/\fBcurs_bkgd\fR(3X) -bkgrnd/\fBcurs_bkgrnd\fR(3X) -bkgrndset/\fBcurs_bkgrnd\fR(3X) -border/\fBcurs_border\fR(3X) -border_set/\fBcurs_border_set\fR(3X) -box/\fBcurs_border\fR(3X) -box_set/\fBcurs_border_set\fR(3X) -can_change_color/\fBcurs_color\fR(3X) -cbreak/\fBcurs_inopts\fR(3X) -chgat/\fBcurs_attr\fR(3X) -clear/\fBcurs_clear\fR(3X) -clearok/\fBcurs_outopts\fR(3X) -clrtobot/\fBcurs_clear\fR(3X) -clrtoeol/\fBcurs_clear\fR(3X) -color_content/\fBcurs_color\fR(3X) -color_set/\fBcurs_attr\fR(3X) -copywin/\fBcurs_overlay\fR(3X) -curs_set/\fBcurs_kernel\fR(3X) -curses_version/\fBcurs_extend\fR(3X)* -def_prog_mode/\fBcurs_kernel\fR(3X) -def_shell_mode/\fBcurs_kernel\fR(3X) -define_key/\fBdefine_key\fR(3X)* -del_curterm/\fBcurs_terminfo\fR(3X) -delay_output/\fBcurs_util\fR(3X) -delch/\fBcurs_delch\fR(3X) -deleteln/\fBcurs_deleteln\fR(3X) -delscreen/\fBcurs_initscr\fR(3X) -delwin/\fBcurs_window\fR(3X) -derwin/\fBcurs_window\fR(3X) -doupdate/\fBcurs_refresh\fR(3X) -dupwin/\fBcurs_window\fR(3X) -echo/\fBcurs_inopts\fR(3X) -echo_wchar/\fBcurs_add_wch\fR(3X) -echochar/\fBcurs_addch\fR(3X) -endwin/\fBcurs_initscr\fR(3X) -erase/\fBcurs_clear\fR(3X) -erasechar/\fBcurs_termattrs\fR(3X) -erasewchar/\fBcurs_termattrs\fR(3X) -filter/\fBcurs_util\fR(3X) -flash/\fBcurs_beep\fR(3X) -flushinp/\fBcurs_util\fR(3X) -get_wch/\fBcurs_get_wch\fR(3X) -get_wstr/\fBcurs_get_wstr\fR(3X) -getattrs/\fBcurs_attr\fR(3X) -getbegx/\fBcurs_legacy\fR(3X)* -getbegy/\fBcurs_legacy\fR(3X)* -getbegyx/\fBcurs_getyx\fR(3X) -getbkgd/\fBcurs_bkgd\fR(3X) -getbkgrnd/\fBcurs_bkgrnd\fR(3X) -getcchar/\fBcurs_getcchar\fR(3X) -getch/\fBcurs_getch\fR(3X) -getcurx/\fBcurs_legacy\fR(3X)* -getcury/\fBcurs_legacy\fR(3X)* -getmaxx/\fBcurs_legacy\fR(3X)* -getmaxy/\fBcurs_legacy\fR(3X)* -getmaxyx/\fBcurs_getyx\fR(3X) -getmouse/\fBcurs_mouse\fR(3X)* -getn_wstr/\fBcurs_get_wstr\fR(3X) -getnstr/\fBcurs_getstr\fR(3X) -getparx/\fBcurs_legacy\fR(3X)* -getpary/\fBcurs_legacy\fR(3X)* -getparyx/\fBcurs_getyx\fR(3X) -getstr/\fBcurs_getstr\fR(3X) -getsyx/\fBcurs_kernel\fR(3X) -getwin/\fBcurs_util\fR(3X) -getyx/\fBcurs_getyx\fR(3X) -halfdelay/\fBcurs_inopts\fR(3X) -has_colors/\fBcurs_color\fR(3X) -has_ic/\fBcurs_termattrs\fR(3X) -has_il/\fBcurs_termattrs\fR(3X) -has_key/\fBcurs_getch\fR(3X)* -hline/\fBcurs_border\fR(3X) -hline_set/\fBcurs_border_set\fR(3X) -idcok/\fBcurs_outopts\fR(3X) -idlok/\fBcurs_outopts\fR(3X) -immedok/\fBcurs_outopts\fR(3X) -in_wch/\fBcurs_in_wch\fR(3X) -in_wchnstr/\fBcurs_in_wchstr\fR(3X) -in_wchstr/\fBcurs_in_wchstr\fR(3X) -inch/\fBcurs_inch\fR(3X) -inchnstr/\fBcurs_inchstr\fR(3X) -inchstr/\fBcurs_inchstr\fR(3X) -init_color/\fBcurs_color\fR(3X) -init_pair/\fBcurs_color\fR(3X) -initscr/\fBcurs_initscr\fR(3X) -innstr/\fBcurs_instr\fR(3X) -innwstr/\fBcurs_inwstr\fR(3X) -ins_nwstr/\fBcurs_ins_wstr\fR(3X) -ins_wch/\fBcurs_ins_wch\fR(3X) -ins_wstr/\fBcurs_ins_wstr\fR(3X) -insch/\fBcurs_insch\fR(3X) -insdelln/\fBcurs_deleteln\fR(3X) -insertln/\fBcurs_deleteln\fR(3X) -insnstr/\fBcurs_insstr\fR(3X) -insstr/\fBcurs_insstr\fR(3X) -instr/\fBcurs_instr\fR(3X) -intrflush/\fBcurs_inopts\fR(3X) -inwstr/\fBcurs_inwstr\fR(3X) -is_cleared/\fBcurs_opaque\fR(3X)* -is_idcok/\fBcurs_opaque\fR(3X)* -is_idlok/\fBcurs_opaque\fR(3X)* -is_immedok/\fBcurs_opaque\fR(3X)* -is_keypad/\fBcurs_opaque\fR(3X)* -is_leaveok/\fBcurs_opaque\fR(3X)* -is_linetouched/\fBcurs_touch\fR(3X) -is_nodelay/\fBcurs_opaque\fR(3X)* -is_notimeout/\fBcurs_opaque\fR(3X)* -is_scrollok/\fBcurs_opaque\fR(3X)* -is_syncok/\fBcurs_opaque\fR(3X)* -is_term_resized/\fBresizeterm\fR(3X)* -is_wintouched/\fBcurs_touch\fR(3X) -isendwin/\fBcurs_initscr\fR(3X) -key_defined/\fBkey_defined\fR(3X)* -key_name/\fBcurs_util\fR(3X) -keybound/\fBkeybound\fR(3X)* -keyname/\fBcurs_util\fR(3X) -keyok/\fBkeyok\fR(3X)* -keypad/\fBcurs_inopts\fR(3X) -killchar/\fBcurs_termattrs\fR(3X) -killwchar/\fBcurs_termattrs\fR(3X) -leaveok/\fBcurs_outopts\fR(3X) -longname/\fBcurs_termattrs\fR(3X) -mcprint/\fBcurs_print\fR(3X)* -meta/\fBcurs_inopts\fR(3X) -mouse_trafo/\fBcurs_mouse\fR(3X)* -mouseinterval/\fBcurs_mouse\fR(3X)* -mousemask/\fBcurs_mouse\fR(3X)* -move/\fBcurs_move\fR(3X) -mvadd_wch/\fBcurs_add_wch\fR(3X) -mvadd_wchnstr/\fBcurs_add_wchstr\fR(3X) -mvadd_wchstr/\fBcurs_add_wchstr\fR(3X) -mvaddch/\fBcurs_addch\fR(3X) -mvaddchnstr/\fBcurs_addchstr\fR(3X) -mvaddchstr/\fBcurs_addchstr\fR(3X) -mvaddnstr/\fBcurs_addstr\fR(3X) -mvaddnwstr/\fBcurs_addwstr\fR(3X) -mvaddstr/\fBcurs_addstr\fR(3X) -mvaddwstr/\fBcurs_addwstr\fR(3X) -mvchgat/\fBcurs_attr\fR(3X) -mvcur/\fBcurs_terminfo\fR(3X) -mvdelch/\fBcurs_delch\fR(3X) -mvderwin/\fBcurs_window\fR(3X) -mvget_wch/\fBcurs_get_wch\fR(3X) -mvget_wstr/\fBcurs_get_wstr\fR(3X) -mvgetch/\fBcurs_getch\fR(3X) -mvgetn_wstr/\fBcurs_get_wstr\fR(3X) -mvgetnstr/\fBcurs_getstr\fR(3X) -mvgetstr/\fBcurs_getstr\fR(3X) -mvhline/\fBcurs_border\fR(3X) -mvhline_set/\fBcurs_border_set\fR(3X) -mvin_wch/\fBcurs_in_wch\fR(3X) -mvin_wchnstr/\fBcurs_in_wchstr\fR(3X) -mvin_wchstr/\fBcurs_in_wchstr\fR(3X) -mvinch/\fBcurs_inch\fR(3X) -mvinchnstr/\fBcurs_inchstr\fR(3X) -mvinchstr/\fBcurs_inchstr\fR(3X) -mvinnstr/\fBcurs_instr\fR(3X) -mvinnwstr/\fBcurs_inwstr\fR(3X) -mvins_nwstr/\fBcurs_ins_wstr\fR(3X) -mvins_wch/\fBcurs_ins_wch\fR(3X) -mvins_wstr/\fBcurs_ins_wstr\fR(3X) -mvinsch/\fBcurs_insch\fR(3X) -mvinsnstr/\fBcurs_insstr\fR(3X) -mvinsstr/\fBcurs_insstr\fR(3X) -mvinstr/\fBcurs_instr\fR(3X) -mvinwstr/\fBcurs_inwstr\fR(3X) -mvprintw/\fBcurs_printw\fR(3X) -mvscanw/\fBcurs_scanw\fR(3X) -mvvline/\fBcurs_border\fR(3X) -mvvline_set/\fBcurs_border_set\fR(3X) -mvwadd_wch/\fBcurs_add_wch\fR(3X) -mvwadd_wchnstr/\fBcurs_add_wchstr\fR(3X) -mvwadd_wchstr/\fBcurs_add_wchstr\fR(3X) -mvwaddch/\fBcurs_addch\fR(3X) -mvwaddchnstr/\fBcurs_addchstr\fR(3X) -mvwaddchstr/\fBcurs_addchstr\fR(3X) -mvwaddnstr/\fBcurs_addstr\fR(3X) -mvwaddnwstr/\fBcurs_addwstr\fR(3X) -mvwaddstr/\fBcurs_addstr\fR(3X) -mvwaddwstr/\fBcurs_addwstr\fR(3X) -mvwchgat/\fBcurs_attr\fR(3X) -mvwdelch/\fBcurs_delch\fR(3X) -mvwget_wch/\fBcurs_get_wch\fR(3X) -mvwget_wstr/\fBcurs_get_wstr\fR(3X) -mvwgetch/\fBcurs_getch\fR(3X) -mvwgetn_wstr/\fBcurs_get_wstr\fR(3X) -mvwgetnstr/\fBcurs_getstr\fR(3X) -mvwgetstr/\fBcurs_getstr\fR(3X) -mvwhline/\fBcurs_border\fR(3X) -mvwhline_set/\fBcurs_border_set\fR(3X) -mvwin/\fBcurs_window\fR(3X) -mvwin_wch/\fBcurs_in_wch\fR(3X) -mvwin_wchnstr/\fBcurs_in_wchstr\fR(3X) -mvwin_wchstr/\fBcurs_in_wchstr\fR(3X) -mvwinch/\fBcurs_inch\fR(3X) -mvwinchnstr/\fBcurs_inchstr\fR(3X) -mvwinchstr/\fBcurs_inchstr\fR(3X) -mvwinnstr/\fBcurs_instr\fR(3X) -mvwinnwstr/\fBcurs_inwstr\fR(3X) -mvwins_nwstr/\fBcurs_ins_wstr\fR(3X) -mvwins_wch/\fBcurs_ins_wch\fR(3X) -mvwins_wstr/\fBcurs_ins_wstr\fR(3X) -mvwinsch/\fBcurs_insch\fR(3X) -mvwinsnstr/\fBcurs_insstr\fR(3X) -mvwinsstr/\fBcurs_insstr\fR(3X) -mvwinstr/\fBcurs_instr\fR(3X) -mvwinwstr/\fBcurs_inwstr\fR(3X) -mvwprintw/\fBcurs_printw\fR(3X) -mvwscanw/\fBcurs_scanw\fR(3X) -mvwvline/\fBcurs_border\fR(3X) -mvwvline_set/\fBcurs_border_set\fR(3X) -napms/\fBcurs_kernel\fR(3X) -newpad/\fBcurs_pad\fR(3X) -newterm/\fBcurs_initscr\fR(3X) -newwin/\fBcurs_window\fR(3X) -nl/\fBcurs_outopts\fR(3X) -nocbreak/\fBcurs_inopts\fR(3X) -nodelay/\fBcurs_inopts\fR(3X) -noecho/\fBcurs_inopts\fR(3X) -nofilter/\fBcurs_util\fR(3X)* -nonl/\fBcurs_outopts\fR(3X) -noqiflush/\fBcurs_inopts\fR(3X) -noraw/\fBcurs_inopts\fR(3X) -notimeout/\fBcurs_inopts\fR(3X) -overlay/\fBcurs_overlay\fR(3X) -overwrite/\fBcurs_overlay\fR(3X) -pair_content/\fBcurs_color\fR(3X) -pechochar/\fBcurs_pad\fR(3X) -pnoutrefresh/\fBcurs_pad\fR(3X) -prefresh/\fBcurs_pad\fR(3X) -printw/\fBcurs_printw\fR(3X) -putp/\fBcurs_terminfo\fR(3X) -putwin/\fBcurs_util\fR(3X) -qiflush/\fBcurs_inopts\fR(3X) -raw/\fBcurs_inopts\fR(3X) -redrawwin/\fBcurs_refresh\fR(3X) -refresh/\fBcurs_refresh\fR(3X) -reset_prog_mode/\fBcurs_kernel\fR(3X) -reset_shell_mode/\fBcurs_kernel\fR(3X) -resetty/\fBcurs_kernel\fR(3X) -resizeterm/\fBresizeterm\fR(3X)* -restartterm/\fBcurs_terminfo\fR(3X) -ripoffline/\fBcurs_kernel\fR(3X) -savetty/\fBcurs_kernel\fR(3X) -scanw/\fBcurs_scanw\fR(3X) -scr_dump/\fBcurs_scr_dump\fR(3X) -scr_init/\fBcurs_scr_dump\fR(3X) -scr_restore/\fBcurs_scr_dump\fR(3X) -scr_set/\fBcurs_scr_dump\fR(3X) -scrl/\fBcurs_scroll\fR(3X) -scroll/\fBcurs_scroll\fR(3X) -scrollok/\fBcurs_outopts\fR(3X) -set_curterm/\fBcurs_terminfo\fR(3X) -set_term/\fBcurs_initscr\fR(3X) -setcchar/\fBcurs_getcchar\fR(3X) -setscrreg/\fBcurs_outopts\fR(3X) -setsyx/\fBcurs_kernel\fR(3X) -setterm/\fBcurs_terminfo\fR(3X) -setupterm/\fBcurs_terminfo\fR(3X) -slk_attr/\fBcurs_slk\fR(3X)* -slk_attr_off/\fBcurs_slk\fR(3X) -slk_attr_on/\fBcurs_slk\fR(3X) -slk_attr_set/\fBcurs_slk\fR(3X) -slk_attroff/\fBcurs_slk\fR(3X) -slk_attron/\fBcurs_slk\fR(3X) -slk_attrset/\fBcurs_slk\fR(3X) -slk_clear/\fBcurs_slk\fR(3X) -slk_color/\fBcurs_slk\fR(3X) -slk_init/\fBcurs_slk\fR(3X) -slk_label/\fBcurs_slk\fR(3X) -slk_noutrefresh/\fBcurs_slk\fR(3X) -slk_refresh/\fBcurs_slk\fR(3X) -slk_restore/\fBcurs_slk\fR(3X) -slk_set/\fBcurs_slk\fR(3X) -slk_touch/\fBcurs_slk\fR(3X) -standend/\fBcurs_attr\fR(3X) -standout/\fBcurs_attr\fR(3X) -start_color/\fBcurs_color\fR(3X) -subpad/\fBcurs_pad\fR(3X) -subwin/\fBcurs_window\fR(3X) -syncok/\fBcurs_window\fR(3X) -term_attrs/\fBcurs_termattrs\fR(3X) -termattrs/\fBcurs_termattrs\fR(3X) -termname/\fBcurs_termattrs\fR(3X) -tgetent/\fBcurs_termcap\fR(3X) -tgetflag/\fBcurs_termcap\fR(3X) -tgetnum/\fBcurs_termcap\fR(3X) -tgetstr/\fBcurs_termcap\fR(3X) -tgoto/\fBcurs_termcap\fR(3X) -tigetflag/\fBcurs_terminfo\fR(3X) -tigetnum/\fBcurs_terminfo\fR(3X) -tigetstr/\fBcurs_terminfo\fR(3X) -timeout/\fBcurs_inopts\fR(3X) -touchline/\fBcurs_touch\fR(3X) -touchwin/\fBcurs_touch\fR(3X) -tparm/\fBcurs_terminfo\fR(3X) -tputs/\fBcurs_termcap\fR(3X) -tputs/\fBcurs_terminfo\fR(3X) -trace/\fBcurs_trace\fR(3X)* -typeahead/\fBcurs_inopts\fR(3X) -unctrl/\fBcurs_util\fR(3X) -unget_wch/\fBcurs_get_wch\fR(3X) -ungetch/\fBcurs_getch\fR(3X) -ungetmouse/\fBcurs_mouse\fR(3X)* -untouchwin/\fBcurs_touch\fR(3X) -use_default_colors/\fBdefault_colors\fR(3X)* -use_env/\fBcurs_util\fR(3X) -use_extended_names/\fBcurs_extend\fR(3X)* -use_legacy_coding/\fBlegacy_coding\fR(3X)* -vid_attr/\fBcurs_terminfo\fR(3X) -vid_puts/\fBcurs_terminfo\fR(3X) -vidattr/\fBcurs_terminfo\fR(3X) -vidputs/\fBcurs_terminfo\fR(3X) -vline/\fBcurs_border\fR(3X) -vline_set/\fBcurs_border_set\fR(3X) -vw_printw/\fBcurs_printw\fR(3X) -vw_scanw/\fBcurs_scanw\fR(3X) -vwprintw/\fBcurs_printw\fR(3X) -vwscanw/\fBcurs_scanw\fR(3X) -wadd_wch/\fBcurs_add_wch\fR(3X) -wadd_wchnstr/\fBcurs_add_wchstr\fR(3X) -wadd_wchstr/\fBcurs_add_wchstr\fR(3X) -waddch/\fBcurs_addch\fR(3X) -waddchnstr/\fBcurs_addchstr\fR(3X) -waddchstr/\fBcurs_addchstr\fR(3X) -waddnstr/\fBcurs_addstr\fR(3X) -waddnwstr/\fBcurs_addwstr\fR(3X) -waddstr/\fBcurs_addstr\fR(3X) -waddwstr/\fBcurs_addwstr\fR(3X) -wattr_get/\fBcurs_attr\fR(3X) -wattr_off/\fBcurs_attr\fR(3X) -wattr_on/\fBcurs_attr\fR(3X) -wattr_set/\fBcurs_attr\fR(3X) -wattroff/\fBcurs_attr\fR(3X) -wattron/\fBcurs_attr\fR(3X) -wattrset/\fBcurs_attr\fR(3X) -wbkgd/\fBcurs_bkgd\fR(3X) -wbkgdset/\fBcurs_bkgd\fR(3X) -wbkgrnd/\fBcurs_bkgrnd\fR(3X) -wbkgrndset/\fBcurs_bkgrnd\fR(3X) -wborder/\fBcurs_border\fR(3X) -wborder_set/\fBcurs_border_set\fR(3X) -wchgat/\fBcurs_attr\fR(3X) -wclear/\fBcurs_clear\fR(3X) -wclrtobot/\fBcurs_clear\fR(3X) -wclrtoeol/\fBcurs_clear\fR(3X) -wcolor_set/\fBcurs_attr\fR(3X) -wcursyncup/\fBcurs_window\fR(3X) -wdelch/\fBcurs_delch\fR(3X) -wdeleteln/\fBcurs_deleteln\fR(3X) -wecho_wchar/\fBcurs_add_wch\fR(3X) -wechochar/\fBcurs_addch\fR(3X) -wenclose/\fBcurs_mouse\fR(3X)* -werase/\fBcurs_clear\fR(3X) -wget_wch/\fBcurs_get_wch\fR(3X) -wget_wstr/\fBcurs_get_wstr\fR(3X) -wgetbkgrnd/\fBcurs_bkgrnd\fR(3X) -wgetch/\fBcurs_getch\fR(3X) -wgetn_wstr/\fBcurs_get_wstr\fR(3X) -wgetnstr/\fBcurs_getstr\fR(3X) -wgetstr/\fBcurs_getstr\fR(3X) -whline/\fBcurs_border\fR(3X) -whline_set/\fBcurs_border_set\fR(3X) -win_wch/\fBcurs_in_wch\fR(3X) -win_wchnstr/\fBcurs_in_wchstr\fR(3X) -win_wchstr/\fBcurs_in_wchstr\fR(3X) -winch/\fBcurs_inch\fR(3X) -winchnstr/\fBcurs_inchstr\fR(3X) -winchstr/\fBcurs_inchstr\fR(3X) -winnstr/\fBcurs_instr\fR(3X) -winnwstr/\fBcurs_inwstr\fR(3X) -wins_nwstr/\fBcurs_ins_wstr\fR(3X) -wins_wch/\fBcurs_ins_wch\fR(3X) -wins_wstr/\fBcurs_ins_wstr\fR(3X) -winsch/\fBcurs_insch\fR(3X) -winsdelln/\fBcurs_deleteln\fR(3X) -winsertln/\fBcurs_deleteln\fR(3X) -winsnstr/\fBcurs_insstr\fR(3X) -winsstr/\fBcurs_insstr\fR(3X) -winstr/\fBcurs_instr\fR(3X) -winwstr/\fBcurs_inwstr\fR(3X) -wmouse_trafo/\fBcurs_mouse\fR(3X)* -wmove/\fBcurs_move\fR(3X) -wnoutrefresh/\fBcurs_refresh\fR(3X) -wprintw/\fBcurs_printw\fR(3X) -wredrawln/\fBcurs_refresh\fR(3X) -wrefresh/\fBcurs_refresh\fR(3X) -wresize/\fBwresize\fR(3X)* -wscanw/\fBcurs_scanw\fR(3X) -wscrl/\fBcurs_scroll\fR(3X) -wsetscrreg/\fBcurs_outopts\fR(3X) -wstandend/\fBcurs_attr\fR(3X) -wstandout/\fBcurs_attr\fR(3X) -wsyncdown/\fBcurs_window\fR(3X) -wsyncup/\fBcurs_window\fR(3X) -wtimeout/\fBcurs_inopts\fR(3X) -wtouchln/\fBcurs_touch\fR(3X) -wunctrl/\fBcurs_util\fR(3X) -wvline/\fBcurs_border\fR(3X) -wvline_set/\fBcurs_border_set\fR(3X) -.TE -.SH RETURN VALUE -Routines that return an integer return \fBERR\fR upon failure and an -integer value other than \fBERR\fR upon successful completion, unless -otherwise noted in the routine descriptions. -.PP -All macros return the value of the \fBw\fR version, except \fBsetscrreg\fR, -\fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and \fBgetmaxyx\fR. -The return values of \fBsetscrreg\fR, \fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and -\fBgetmaxyx\fR are undefined (i.e., these should not be used as the -right-hand side of assignment statements). -.PP -Routines that return pointers return \fBNULL\fR on error. -.SH ENVIRONMENT -The following environment symbols are useful for customizing the -runtime behavior of the \fBncurses\fR library. -The most important ones have been already discussed in detail. -.TP 5 -BAUDRATE -The debugging library checks this environment symbol when the application -has redirected output to a file. -The symbol's numeric value is used for the baudrate. -If no value is found, \fBncurses\fR uses 9600. -This allows testers to construct repeatable test-cases -that take into account costs that depend on baudrate. -.TP 5 -CC -When set, change occurrences of the command_character -(i.e., the \fBcmdch\fP capability) -of the loaded terminfo entries to the value of this symbol. -Very few terminfo entries provide this feature. -.IP -Because this name is also used in development environments to represent -the C compiler's name, \fBncurses\fR ignores it if it does not happen to -be a single character. -.TP 5 -COLUMNS -Specify the width of the screen in characters. -Applications running in a windowing environment usually are able to -obtain the width of the window in which they are executing. -If neither the \fBCOLUMNS\fP value nor the terminal's screen size is available, -\fBncurses\fR uses the size which may be specified in the terminfo database -(i.e., the \fBcols\fR capability). -.IP -It is important that your application use a correct size for the screen. -This is not always possible because your application may be -running on a host which does not honor NAWS (Negotiations About Window -Size), or because you are temporarily running as another user. -However, setting \fBCOLUMNS\fP and/or \fBLINES\fP overrides the library's -use of the screen size obtained from the operating system. -.IP -Either \fBCOLUMNS\fP or \fBLINES\fP symbols may be specified independently. -This is mainly useful to circumvent legacy misfeatures of terminal descriptions, -e.g., xterm which commonly specifies a 65 line screen. -For best results, \fBlines\fR and \fBcols\fR should not be specified in -a terminal description for terminals which are run as emulations. -.IP -Use the \fBuse_env\fR function to disable all use of external environment -(including system calls) to determine the screen size. -.TP 5 -ESCDELAY -Specifies the total time, in milliseconds, for which ncurses will -await a character sequence, e.g., a function key. -The default value, 1000 milliseconds, is enough for most uses. -However, it is made a variable to accommodate unusual applications. -.IP -The most common instance where you may wish to change this value -is to work with slow hosts, e.g., running on a network. -If the host cannot read characters rapidly enough, it will have the same -effect as if the terminal did not send characters rapidly enough. -The library will still see a timeout. -.IP -Note that xterm mouse events are built up from character sequences -received from the xterm. -If your application makes heavy use of multiple-clicking, you may -wish to lengthen this default value because the timeout applies -to the composed multi-click event as well as the individual clicks. -.IP -In addition to the environment variable, -this implementation provides a global variable with the same name. -Portable applications should not rely upon the presence of ESCDELAY -in either form, -but setting the environment variable rather than the global variable -does not create problems when compiling an application. -.TP 5 -HOME -Tells \fBncurses\fR where your home directory is. -That is where it may read and write auxiliary terminal descriptions: -.IP -$HOME/.termcap -.br -$HOME/.terminfo -.TP 5 -LINES -Like COLUMNS, specify the height of the screen in characters. -See COLUMNS for a detailed description. -.TP 5 -MOUSE_BUTTONS_123 -This applies only to the OS/2 EMX port. -It specifies the order of buttons on the mouse. -OS/2 numbers a 3-button mouse inconsistently from other -platforms: -.sp -1 = left -.br -2 = right -.br -3 = middle. -.sp -This symbol lets you customize the mouse. -The symbol must be three numeric digits 1\-3 in any order, e.g., 123 or 321. -If it is not specified, \fBncurses\fR uses 132. -.TP 5 -NCURSES_ASSUMED_COLORS -Override the compiled-in assumption that the -terminal's default colors are white-on-black -(see \fBdefault_colors\fR(3X)). -You may set the foreground and background color values with this environment -variable by proving a 2-element list: foreground,background. -For example, to tell ncurses to not assume anything -about the colors, set this to "\-1,\-1". -To make it green-on-black, set it to "2,0". -Any positive value from zero to the terminfo \fBmax_colors\fR value is allowed. -.TP 5 -NCURSES_GPM_TERMS -This applies only to ncurses configured to use the GPM interface. -.IP -If present, -the environment variable is a list of one or more terminal names -against which the TERM environment variable is matched. -Setting it to an empty value disables the GPM interface; -using the built-in support for xterm, etc. -.IP -If the environment variable is absent, -ncurses will attempt to open GPM if TERM contains "linux". -.TP 5 -NCURSES_NO_HARD_TABS -\fBNcurses\fP may use tabs as part of the cursor movement optimization. -In some cases, -your terminal driver may not handle these properly. -Set this environment variable to disable the feature. -You can also adjust your \fBstty\fP settings to avoid the problem. -.TP 5 -NCURSES_NO_MAGIC_COOKIES -Some terminals use a magic-cookie feature which requires special handling -to make highlighting and other video attributes display properly. -You can suppress the highlighting entirely for these terminals by -setting this environment variable. -.TP 5 -NCURSES_NO_PADDING -Most of the terminal descriptions in the terminfo database are written -for real "hardware" terminals. -Many people use terminal emulators -which run in a windowing environment and use curses-based applications. -Terminal emulators can duplicate -all of the important aspects of a hardware terminal, but they do not -have the same limitations. -The chief limitation of a hardware terminal from the standpoint -of your application is the management of dataflow, i.e., timing. -Unless a hardware terminal is interfaced into a terminal concentrator -(which does flow control), -it (or your application) must manage dataflow, preventing overruns. -The cheapest solution (no hardware cost) -is for your program to do this by pausing after -operations that the terminal does slowly, such as clearing the display. -.IP -As a result, many terminal descriptions (including the vt100) -have delay times embedded. -You may wish to use these descriptions, -but not want to pay the performance penalty. -.IP -Set the NCURSES_NO_PADDING symbol to disable all but mandatory -padding. -Mandatory padding is used as a part of special control -sequences such as \fIflash\fR. -.TP 5 -NCURSES_NO_SETBUF -Normally \fBncurses\fR enables buffered output during terminal initialization. -This is done (as in SVr4 curses) for performance reasons. -For testing purposes, both of \fBncurses\fR and certain applications, -this feature is made optional. -Setting the NCURSES_NO_SETBUF variable -disables output buffering, leaving the output in the original (usually -line buffered) mode. -.TP 5 -NCURSES_NO_UTF8_ACS -During initialization, the \fBncurses\fR library -checks for special cases where VT100 line-drawing (and the corresponding -alternate character set capabilities) described in the terminfo are known -to be missing. -Specifically, when running in a UTF\-8 locale, -the Linux console emulator and the GNU screen program ignore these. -Ncurses checks the TERM environment variable for these. -For other special cases, you should set this environment variable. -Doing this tells ncurses to use Unicode values which correspond to -the VT100 line-drawing glyphs. -That works for the special cases cited, -and is likely to work for terminal emulators. -.IP -When setting this variable, you should set it to a nonzero value. -Setting it to zero (or to a nonnumber) -disables the special check for "linux" and "screen". -.IP -As an alternative to the environment variable, -ncurses checks for an extended terminfo capability \fBU8\fP. -This is a numeric capability which can be compiled using \fBtic\ \-x\fP. -For example -.RS 5 -.sp -.nf -# linux console, if patched to provide working -# VT100 shift-in/shift-out, with corresponding font. -linux-vt100|linux console with VT100 line-graphics, - U8#0, use=linux, -.sp -# uxterm with vt100Graphics resource set to false -xterm-utf8|xterm relying on UTF-8 line-graphics, - U8#1, use=xterm, -.fi -.RE -.IP -The name "U8" is chosen to be two characters, -to permit it to be used by applications that use ncurses' -termcap interface. -.TP 5 -NCURSES_TRACE -During initialization, the \fBncurses\fR debugging library -checks the NCURSES_TRACE symbol. -If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR -function, using that value as the argument. -.IP -The argument values, which are defined in \fBcurses.h\fR, provide several -types of information. -When running with traces enabled, your application will write the -file \fBtrace\fR to the current directory. -.TP 5 -TERM -Denotes your terminal type. -Each terminal type is distinct, though many are similar. -.TP 5 -TERMCAP -If the \fBncurses\fR library has been configured with \fItermcap\fR -support, \fBncurses\fR will check for a terminal's description in -termcap form if it is not available in the terminfo database. -.IP -The TERMCAP symbol contains either a terminal description (with -newlines stripped out), -or a file name telling where the information denoted by the TERM symbol exists. -In either case, setting it directs \fBncurses\fR to ignore -the usual place for this information, e.g., /etc/termcap. -.TP 5 -TERMINFO -Overrides the directory in which \fBncurses\fR searches for your terminal -description. -This is the simplest, but not the only way to change the list of directories. -The complete list of directories in order follows: -.RS -.bP -the last directory to which \fBncurses\fR wrote, if any, is searched first -.bP -the directory specified by the TERMINFO symbol -.bP -$HOME/.terminfo -.bP -directories listed in the TERMINFO_DIRS symbol -.bP -one or more directories whose names are configured and compiled into the -ncurses library, e.g., -@TERMINFO@ -.RE -.TP 5 -TERMINFO_DIRS -Specifies a list of directories to search for terminal descriptions. -The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX. -All of the terminal descriptions are in terminfo form, which makes -a subdirectory named for the first letter of the terminal names therein. -.TP 5 -TERMPATH -If TERMCAP does not hold a file name then \fBncurses\fR checks -the TERMPATH symbol. -This is a list of filenames separated by spaces or colons (i.e., ":") on Unix, semicolons on OS/2 EMX. -If the TERMPATH symbol is not set, \fBncurses\fR looks in the files -/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, in that order. -.PP -The library may be configured to disregard the following variables when the -current user is the superuser (root), or if the application uses setuid or -setgid permissions: -$TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME. -.SH ALTERNATE CONFIGURATIONS -Several different configurations are possible, -depending on the configure script options used when building \fBncurses\fP. -There are a few main options whose effects are visible to the applications -developer using \fBncurses\fP: -.TP 5 -\-\-disable\-overwrite -The standard include for \fBncurses\fP is as noted in \fBSYNOPSIS\fP: -.RS -.sp -\fB#include \fR -.RE -.IP -This option is used to avoid filename conflicts when \fBncurses\fP -is not the main implementation of curses of the computer. -If \fBncurses\fP is installed disabling overwrite, it puts its headers in -a subdirectory, e.g., -.RS -.sp -\fB#include \fR -.RE -.IP -It also omits a symbolic link which would allow you to use \fB\-lcurses\fP -to build executables. -.TP 5 -\-\-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 -.sp -\fB\-lncurses\fR -.RE -.IP -you link with -.RS -.sp -\fB\-lncursesw\fR -.RE -.IP -You must also define \fB_XOPEN_SOURCE_EXTENDED\fP when compiling for the -wide-character library to use the extended (wide-character) functions. -The \fBcurses.h\fP file which is installed for the wide-character -library is designed to be compatible with the normal library's header. -Only the size of the \fBWINDOW\fP structure differs, and very few -applications require more than a pointer to \fBWINDOW\fPs. -If the headers are installed allowing overwrite, -the wide-character library's headers should be installed last, -to allow applications to be built using either library -from the same set of headers. -.TP 5 -\-\-with\-shared -.TP -\-\-with\-normal -.TP -\-\-with\-debug -.TP -\-\-with\-profile -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. -.TP 5 -\-\-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. -.SH FILES -.TP 5 -@DATADIR@/tabset -directory containing initialization files for the terminal capability database -@TERMINFO@ -terminal capability database -.SH SEE ALSO -\fBterminfo\fR(\*n) and related pages whose names begin "curs_" for detailed routine -descriptions. -.br -\fBcurs_variables\fR(3X) -.SH EXTENSIONS -The \fBncurses\fR library can be compiled with an option (\fB\-DUSE_GETCAP\fR) -that falls back to the old-style /etc/termcap file if the terminal setup code -cannot find a terminfo entry corresponding to \fBTERM\fR. -Use of this feature -is not recommended, as it essentially includes an entire termcap compiler in -the \fBncurses\fR startup code, at significant cost in core and startup cycles. -.PP -The \fBncurses\fR library includes facilities for capturing mouse events on -certain terminals (including xterm). -See the \fBcurs_mouse\fR(3X) -manual page for details. -.PP -The \fBncurses\fR library includes facilities for responding to window -resizing events, e.g., when running in an xterm. -See the \fBresizeterm\fR(3X) -and \fBwresize\fR(3X) manual pages for details. -In addition, the library may be configured with a SIGWINCH handler. -.PP -The \fBncurses\fR library extends the fixed set of function key capabilities -of terminals by allowing the application designer to define additional -key sequences at runtime. -See the \fBdefine_key\fR(3X) -\fBkey_defined\fR(3X), -and \fBkeyok\fR(3X) manual pages for details. -.PP -The \fBncurses\fR library can exploit the capabilities of terminals which -implement the ISO\-6429 SGR 39 and SGR 49 controls, which allow an application -to reset the terminal to its original foreground and background colors. -From the users' perspective, the application is able to draw colored -text on a background whose color is set independently, providing better -control over color contrasts. -See the \fBdefault_colors\fR(3X) manual page for details. -.PP -The \fBncurses\fR library includes a function for directing application output -to a printer attached to the terminal device. -See the \fBcurs_print\fR(3X) manual page for details. -.SH PORTABILITY -The \fBncurses\fR library is intended to be BASE-level conformant with XSI -Curses. -The EXTENDED XSI Curses functionality -(including color support) is supported. -.PP -A small number of local differences (that is, individual differences between -the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR -sections of the library man pages. -.PP -This implementation also contains several extensions: -.bP -The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4. -See the \fBcurs_getch\fR(3X) manual page for details. -.bP -The routine \fBslk_attr\fR is not part of XPG4, nor is it present in SVr4. -See the \fBcurs_slk\fR(3X) manual page for details. -.bP -The routines \fBgetmouse\fR, \fBmousemask\fR, \fBungetmouse\fR, -\fBmouseinterval\fR, and \fBwenclose\fR relating to mouse interfacing are not -part of XPG4, nor are they present in SVr4. -See the \fBcurs_mouse\fR(3X) manual page for details. -.bP -The routine \fBmcprint\fR was not present in any previous curses implementation. -See the \fBcurs_print\fR(3X) manual page for details. -.bP -The routine \fBwresize\fR is not part of XPG4, nor is it present in SVr4. -See the \fBwresize\fR(3X) manual page for details. -.bP -The WINDOW structure's internal details can be hidden from application -programs. -See \fBcurs_opaque\fR(3X) for the discussion of \fBis_scrollok\fR, etc. -.bP -This implementation can be configured to provide rudimentary support -for multi-threaded applications. -See \fBcurs_threads\fR(3X) for details. -.bP -This implementation can also be configured to provide a set of functions which -improve the ability to manage multiple screens. -See \fBcurs_sp_funcs\fR(3X) for details. -.PP -In historic curses versions, delays embedded in the capabilities \fBcr\fR, -\fBind\fR, \fBcub1\fR, \fBff\fR and \fBtab\fR activated corresponding delay -bits in the UNIX tty driver. -In this implementation, all padding is done by sending NUL bytes. -This method is slightly more expensive, but narrows the interface -to the UNIX kernel significantly and increases the package's portability -correspondingly. -.SH NOTES -The header file \fB\fR automatically includes the header files -\fB\fR and \fB\fR. -.PP -If standard output from a \fBncurses\fR program is re-directed to something -which is not a tty, screen updates will be directed to standard error. -This was an undocumented feature of AT&T System V Release 3 curses. -.SH AUTHORS -Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. -Based on pcurses by Pavel Curtis. diff --git a/deps/ncurses-5.9/man/ncurses5-config.1 b/deps/ncurses-5.9/man/ncurses5-config.1 deleted file mode 100644 index a4da1bb..0000000 --- a/deps/ncurses-5.9/man/ncurses5-config.1 +++ /dev/null @@ -1,98 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: MKncu_config.in,v 1.3 2010/03/06 22:29:17 tom Exp $ -.TH ncurses5-config 1 "" -.SH NAME -ncurses5-config \- helper script for ncurses libraries -.SH SYNOPSIS -.B ncurses5-config -[\fIoptions\fR] -.SH DESCRIPTION -This is a shell script which simplifies configuring applications against -a particular set of ncurses libraries. -.SH OPTIONS -.TP -\fB\-\-prefix\fR -echos the package\-prefix of ncurses -.TP -\fB\-\-exec\-prefix\fR -echos the executable\-prefix of ncurses -.TP -\fB\-\-cflags\fR -echos the C compiler flags needed to compile with ncurses -.TP -\fB\-\-libs\fR -echos the libraries needed to link with ncurses -.TP -\fB\-\-version\fR -echos the release+patchdate version of ncurses -.TP -\fB\-\-abi\-version\fR -echos the ABI version of ncurses -.TP -\fB\-\-mouse\-version\fR -echos the mouse\-interface version of ncurses -.TP -\fB\-\-bindir\fR -echos the directory containing ncurses programs -.TP -\fB\-\-datadir\fR -echos the directory containing ncurses data -.TP -\fB\-\-includedir\fR -echos the directory containing ncurses header files -.TP -\fB\-\-libdir\fR -echos the directory containing ncurses libraries -.TP -\fB\-\-mandir\fR -echos the directory containing ncurses manpages -.TP -\fB\-\-terminfo\fR -echos the $TERMINFO terminfo database path, e.g., -.RS -/home/martino/avrdude-build-script/objdir/share/terminfo -.RE -.TP -\fB\-\-terminfo\-dirs\fR -echos the $TERMINFO_DIRS directory list, e.g., -.RS -/home/martino/avrdude-build-script/objdir/share/terminfo -.RE -.TP -\fB\-\-termpath\fR -echos the $TERMPATH termcap list, if support for termcap is configured. -.TP -\fB\-\-help\fR -prints this message -.SH "SEE ALSO" -\fBcurses\fR(3X) -.PP -This describes \fBncurses\fR -version 5.9 (patch 20110404). diff --git a/deps/ncurses-5.9/man/panel.3x b/deps/ncurses-5.9/man/panel.3x deleted file mode 100644 index 25e2348..0000000 --- a/deps/ncurses-5.9/man/panel.3x +++ /dev/null @@ -1,193 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: panel.3x,v 1.17 2010/10/02 23:22:44 tom Exp $ -.TH panel 3X "" -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -panel \- panel stack extension for curses -.SH SYNOPSIS -\fB#include \fR -.P -\fBcc [flags] sourcefiles \-lpanel \-lncurses\fR -.P -\fBPANEL *new_panel(WINDOW *win)\fR -.br -\fBint bottom_panel(PANEL *pan)\fR -.br -\fBint top_panel(PANEL *pan)\fR -.br -\fBint show_panel(PANEL *pan)\fR -.br -\fBvoid update_panels();\fR -.br -\fBint hide_panel(PANEL *pan)\fR -.br -\fBWINDOW *panel_window(const PANEL *pan)\fR -.br -\fBint replace_panel(PANEL *pan, WINDOW *window)\fR -.br -\fBint move_panel(PANEL *pan, int starty, int startx)\fR -.br -\fBint panel_hidden(const PANEL *pan)\fR -.br -\fBPANEL *panel_above(const PANEL *pan)\fR -.br -\fBPANEL *panel_below(const PANEL *pan)\fR -.br -\fBint set_panel_userptr(PANEL *pan, const void *ptr)\fR -.br -\fBconst void *panel_userptr(const PANEL *pan)\fR -.br -\fBint del_panel(PANEL *pan)\fR -.br -.SH DESCRIPTION -Panels are \fBcurses\fR(3X) windows with the added feature of -depth. Panel functions allow the use of stacked windows and ensure -the proper portions of each window and the curses \fBstdscr\fR window are -hidden or displayed when panels are added, moved, modified or removed. -The set of currently visible panels is the stack of panels. The -\fBstdscr\fR window is beneath all panels, and is not considered part -of the stack. -.P -A window is associated with every panel. The panel routines enable -you to create, move, hide, and show panels, as well as position a -panel at any desired location in the stack. -.P -Panel routines are a functional layer added to \fBcurses\fR(3X), make only -high-level curses calls, and work anywhere terminfo curses does. -.SH FUNCTIONS -.TP -.B new_panel(win) -allocates a \fBPANEL\fR structure, associates it with -\fBwin\fR, places the panel on the top of the stack (causes it -to be displayed above any other panel) and returns a -pointer to the new panel. -.TP -.B update_panels() -refreshes the virtual screen to reflect the relations between the -panels in the stack, but does not call doupdate() to refresh the -physical screen. -Use this function and not \fBwrefresh\fP or \fBwnoutrefresh\fP. -.B update_panels -may be called more than once before a call to -doupdate(), but doupdate() is the function responsible for updating -the physical screen. -.TP -.B del_panel(pan) -removes the given panel from the stack and deallocates the -\fBPANEL\fR structure (but not its associated window). -.TP -.B hide_panel(pan) -removes the given panel from the panel stack and thus hides it from -view. The \fBPANEL\fR structure is not lost, merely removed from the stack. -.TP -.B panel_hidden(pan) -returns TRUE if the panel is in the panel stack, -FALSE if it is not. -If the panel is a null pointer, return ERR. -.TP -.B show_panel(pan) -makes a hidden panel visible by placing it on top of the panels in the -panel stack. See COMPATIBILITY below. -.TP -.B top_panel(pan) -puts the given visible panel on top of all panels in the stack. See -COMPATIBILITY below. -.TP -.B bottom_panel(pan) -puts panel at the bottom of all panels. -.TP -.B move_panel(pan,starty,startx) -moves the given panel window so that its upper-left corner is at -\fBstarty\fR, \fBstartx\fR. It does not change the position of the -panel in the stack. Be sure to use this function, not \fBmvwin()\fR, -to move a panel window. -.TP -.B replace_panel(pan,window) -replaces the current window of panel with \fBwindow\fR (useful, for -example if you want to resize a panel; if you're using \fBncurses\fR, -you can call \fBreplace_panel\fR on the output of \fBwresize\fR(3X)). -It does not change the position of the panel in the stack. -.TP -.B panel_above(pan) -returns a pointer to the panel above pan. If the panel argument is -\fB(PANEL *)0\fR, it returns a pointer to the bottom panel in the stack. -.TP -.B panel_below(pan) -returns a pointer to the panel just below pan. If the panel argument -is \fB(PANEL *)0\fR, it returns a pointer to the top panel in the stack. -.TP -.B set_panel_userptr(pan,ptr) -sets the panel's user pointer. -.TP -.B panel_userptr(pan) -returns the user pointer for a given panel. -.TP -.B panel_window(pan) -returns a pointer to the window of the given panel. -.SH DIAGNOSTICS -Each routine that returns a pointer returns \fBNULL\fR if an error -occurs. Each routine that returns an int value returns \fBOK\fR if it -executes successfully and \fBERR\fR if not. -.SH COMPATIBILITY -Reasonable care has been taken to ensure compatibility -with the native panel facility introduced in SVr3.2 (inspection of -the SVr4 manual pages suggests the programming interface is unchanged). -The \fBPANEL\fR data structures are merely similar. The programmer -is cautioned not to directly use \fBPANEL\fR fields. -.P -The functions \fBshow_panel()\fR and \fBtop_panel()\fR are identical -in this implementation, and work equally well with displayed or hidden -panels. In the native System V implementation, \fBshow_panel()\fR is -intended for making a hidden panel visible (at the top of the stack) -and \fBtop_panel()\fR is intended for making an already-visible panel -move to the top of the stack. You are cautioned to use the correct -function to ensure compatibility with native panel libraries. -.SH NOTE -In your library list, libpanel.a should be before libncurses.a; that is, -you want to say `\-lpanel \-lncurses', not the other way around (which would -usually give a link-error). -.SH FILES -.P -panel.h -interface for the panels library -.P -libpanel.a -the panels library itself -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_variables\fR(3X), -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). -.SH AUTHOR -Originally written by Warren Tucker , -primarily to assist in porting u386mon to systems without a native -panels library. Repackaged for ncurses by Zeyd ben-Halim. diff --git a/deps/ncurses-5.9/man/resizeterm.3x b/deps/ncurses-5.9/man/resizeterm.3x deleted file mode 100644 index ddb47e7..0000000 --- a/deps/ncurses-5.9/man/resizeterm.3x +++ /dev/null @@ -1,95 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 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: Thomas E. Dickey 1996-2005 -.\" -.\" $Id: resizeterm.3x,v 1.14 2010/12/04 18:38:55 tom Exp $ -.TH resizeterm 3X "" -.SH NAME -\fBis_term_resized\fR, -\fBresize_term\fR, -\fBresizeterm\fR \- change the curses terminal size -.SH SYNOPSIS -\fB#include \fR -.sp -\fBbool is_term_resized(int lines, int columns);\fR -.br -\fBint resize_term(int lines, int columns);\fR -.br -\fBint resizeterm(int lines, int columns);\fR -.SH DESCRIPTION -This is an extension to the curses library. -It provides callers with a hook into the \fBncurses\fR data to resize windows, -primarily for use by programs running in an X Window terminal (e.g., xterm). -The function \fBresizeterm\fR resizes the standard and current windows -to the specified dimensions, and adjusts other bookkeeping data used by -the \fBncurses\fR library that record the window dimensions. -.LP -Most of the work is done by the inner function \fBresize_term\fR. -The outer function \fBresizeterm\fR adds bookkeeping for the SIGWINCH handler. -When resizing the windows, -\fBresize_term\fR blank-fills the areas that are extended. -The calling application should fill in these areas with appropriate data. -The \fBresize_term\fR function attempts to resize all windows. -However, due to the calling convention of pads, -it is not possible to resize these -without additional interaction with the application. -.LP -A support function \fBis_term_resized\fR is provided so that applications -can check if the \fBresize_term\fR function would modify the window structures. -It returns TRUE if the windows would be modified, and FALSE otherwise. -.SH RETURN VALUE -Except as notes, these function return -the integer \fBERR\fR upon failure and \fBOK\fR on success. -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 SIGWINCH), care should be taken to avoid invoking them in a -context where \fBmalloc\fR or \fBrealloc\fR may have been interrupted, -since it uses those functions. -.PP -If ncurses is configured to supply its own SIGWINCH handler, -the \fBresizeterm\fR function ungetch's a \fBKEY_RESIZE\fR which -will be read on the next call to \fBgetch\fR. -This is used to alert an application that the screen size has changed, -and that it should repaint special features such as pads that cannot -be done automatically. -.PP -If the environment variables \fBLINES\fP or \fBCOLUMNS\fP are set, -this overrides the library's use of the window size obtained from -the operating system. -Thus, even if a SIGWINCH is received, -no screen size change may be recorded. -In that case, no \fBKEY_RESIZE\fP is queued for the next call to \fBgetch\fP; -an \fBERR\fP will be returned instead. -.SH SEE ALSO -\fBcurs_variables\fR(3X), -\fBwresize\fR(3X). -.SH AUTHOR -Thomas Dickey (from an equivalent function written in 1988 for BSD curses). diff --git a/deps/ncurses-5.9/man/tabs.1 b/deps/ncurses-5.9/man/tabs.1 deleted file mode 100644 index c867db5..0000000 --- a/deps/ncurses-5.9/man/tabs.1 +++ /dev/null @@ -1,141 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2008-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: tabs.1,v 1.8 2010/12/04 18:40:45 tom Exp $ -.TH @TABS@ 1 "" -.ds n 5 -.SH NAME -\fBtabs\fR \- set tabs on a terminal -.SH SYNOPSIS -\fBtabs\fR [\fB\-v\fR[\fIn\fR]] [\fB\-ahuUV\fR] \fIfile...\fR -.br -.SH DESCRIPTION -.PP -The \fBtabs\fP program clears and sets tab-stops on the terminal. -This uses the terminfo \fIclear_all_tabs\fP and \fIset_tab\fP capabilities. -If either is absent, \fBtabs\fP is unable to clear/set tab-stops. -The terminal should be configured to use hard tabs, e.g., -.sp -.RS -stty tab0 -.RE -.SH OPTIONS -.SS General Options -.TP 5 -.BI \-T "name" -Tell \fBtabs\fP which terminal type to use. -If this option is not given, \fBtabs\fP will use the \fB$TERM\fP -environment variable. -If that is not set, it will use the \fIansi+tabs\fP entry. -.TP 5 -.B \-d -The debugging option shows a ruler line, followed by two data lines. -The first data line shows the expected tab-stops marked with asterisks. -The second data line shows the actual tab-stops, marked with asterisks. -.TP 5 -.B \-n -This option tells \fBtabs\fP to check the options and run any debugging -option, but not to modify the terminal settings. -.PP -The \fBtabs\fP program processes a single list of tab stops. -The last option to be processed which defines a list is the one that -determines the list to be processed. -.SS Implicit Lists -Use a single number as an option, e.g., "\fB\-5\fP" to set tabs at the given -interval (in this case 1, 6, 11, 16, 21, etc.). Tabs are repeated up to -the right margin of the screen. -.PP -Use "\fB\-0\fP" to clear all tabs. -.PP -Use "\fB\-8\fP" to set tabs to the standard interval. -.SS Explicit Lists -An explicit list can be defined after the options (this does not use a "\-"). -The values in the list must be in increasing numeric order, and greater than -zero. They are separated by a comma or a blank, for example, -.sp -.RS -tabs 1,6,11,16,21 -.br -tabs 1 6 11 16 21 -.RE -Use a '+' to treat a number as an increment relative to the previous value, -e.g., -.sp -.RS -tabs 1,+5,+5,+5,+5 -.RE -which is equivalent to the 1,6,11,16,21 example. -.SS Predefined Tab-Stops -X/Open defines several predefined lists of tab stops. -.TP 5 -.B \-a -Assembler, IBM S/370, first format -.TP 5 -.B \-a2 -Assembler, IBM S/370, second format -.TP 5 -.B \-c -COBOL, normal format -.TP 5 -.B \-c2 -COBOL compact format -.TP 5 -.B \-c3 -COBOL compact format extended -.TP 5 -.B \-f -FORTRAN -.TP 5 -.B \-p -PL/I -.TP 5 -.B \-s -SNOBOL -.TP 5 -.B \-u -UNIVAC 1100 Assembler -.SH PORTABILITY -.PP -X/Open describes a \fB+m\fP option, to set a terminal's left-margin. -Very few of the entries in the terminal database provide this capability. -.PP -The \fB\-d\fP (debug) and \fB\-n\fP (no-op) options are extensions not provided -by other implementations. -.PP -Documentation for other implementations states that there is a limit on the -number of tab stops. While some terminals may not accept an arbitrary number -of tab stops, this implementation will attempt to set tab stops up to the -right margin of the screen, if the given list happens to be that long. -.SH SEE ALSO -\fB@TSET@\fR(1), -\fB@INFOCMP@\fR(1M), -\fBcurses\fR(3X), -\fBterminfo\fR(\*n). -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/man/term.5 b/deps/ncurses-5.9/man/term.5 deleted file mode 100644 index a8055e9..0000000 --- a/deps/ncurses-5.9/man/term.5 +++ /dev/null @@ -1,277 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: term.5,v 1.21 2010/12/04 18:40:45 tom Exp $ -.TH term 5 -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -term \- format of compiled term file. -.SH SYNOPSIS -.B term -.SH DESCRIPTION -.SS STORAGE LOCATION -Compiled terminfo descriptions are placed under the directory \fB\*d\fP. -Two configurations are supported (when building the ncurses libraries): -.TP 5 -.B directory tree -A two-level scheme is used to avoid a linear search -of a huge \s-1UNIX\s+1 system directory: \fB\*d/c/name\fP where -.I name -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. -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, -and records containing only aliases pointing to the primary name. -.IP -If built to write hashed databases, -ncurses can still read terminfo databases organized as a directory tree, -but cannot write entries into the directory tree. -It can write (or rewrite) entries in the hashed database. -.IP -ncurses distinguishes the two cases in the TERMINFO and TERMINFO_DIRS -environment variable by assuming a directory tree for entries that -correspond to an existing directory, -and hashed database otherwise. -.SS 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 -or sign extension are made. -.PP -The compiled file is created with the -.B @TIC@ -program, and read by the routine -.IR setupterm . -The file is divided into six parts: -the header, -terminal names, -boolean flags, -numbers, -strings, -and -string table. -.PP -The header section begins the file. -This section contains six short integers in the format -described below. -These integers are -.RS 5 -.TP 5 -(1) the magic number (octal 0432); -.TP 5 -(2) the size, in bytes, of the names section; -.TP 5 -(3) the number of bytes in the boolean section; -.TP 5 -(4) the number of short integers in the numbers section; -.TP 5 -(5) the number of offsets (short integers) in the strings section; -.TP 5 -(6) the size, in bytes, of the string table. -.RE -.PP -Short integers are stored in 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.) -The value \-1 is represented by the two bytes 0377, 0377; other negative -values are illegal. This value generally -means that the corresponding capability is missing from this terminal. -Note that 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. -.PP -The terminal names section comes next. -It contains the first line of the terminfo description, -listing the various names for the terminal, -separated by the `|' character. -The section is terminated with an \s-1ASCII NUL\s+1 character. -.PP -The boolean flags have one byte for each flag. -This byte is either 0 or 1 as the flag is present or absent. -The capabilities are in the same order as the file . -.PP -Between the boolean section and the number section, -a null byte will be inserted, if necessary, -to ensure that the number section begins on an even byte (this is a -relic of the PDP\-11's word-addressed architecture, originally -designed in to avoid IOT traps induced by addressing a word on an -odd byte boundary). -All short integers are aligned on a short word boundary. -.PP -The numbers section is similar to the flags section. -Each capability takes up two bytes, -and is stored as a little-endian short integer. -If the value represented is \-1, the capability is taken to be missing. -.PP -The strings section is also similar. -Each capability is stored as a short integer, in the format above. -A value of \-1 means the capability is missing. -Otherwise, the value is taken as an offset from the beginning -of the string table. -Special characters in ^X or \ec notation are stored in their -interpreted form, not the printing representation. -Padding information $ and parameter information %x are -stored intact in uninterpreted form. -.PP -The final section is the string table. -It contains all the values of string capabilities referenced in -the string section. -Each string is null terminated. -.SS EXTENDED STORAGE FORMAT -The previous section describes the conventional terminfo 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. -.PP -The ncurses 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. -ncurses checks the size, and if it exceeds that due to the predefined data, -continues to parse according to its own scheme. -.PP -First, it reads the extended header (5 short integers): -.RS 5 -.TP 5 -(1) -count of extended boolean capabilities -.TP 5 -(2) -count of extended numeric capabilities -.TP 5 -(3) -count of extended string capabilities -.TP 5 -(4) -size of the extended string table in bytes. -.TP 5 -(5) -last offset of the extended string table in bytes. -.RE -.PP -Using the counts and sizes, ncurses allocates arrays and reads data -for the extended capabilties 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. -. -.SH PORTABILITY -Note that it is possible for -.I setupterm -to expect a different set of capabilities -than are actually present in the file. -Either the database may have been updated since -.I setupterm -has been recompiled -(resulting in extra unrecognized entries in the file) -or the program may have been recompiled more recently -than the database was updated -(resulting in missing entries). -The routine -.I 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. -.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 XSI Curses extensions. See \fBterminfo\fR(\*n) for detailed -discussion of terminfo source compatibility issues. -.SH EXAMPLE -As an example, here is a hex dump of the description for the Lear-Siegler -ADM\-3, a popular though rather stupid early terminal: -.nf -.sp -adm3a|lsi adm3a, - am, - cols#80, lines#24, - bel=^G, clear=\032$<1>, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - home=^^, ind=^J, -.sp -.ft CW -\s-20000 1a 01 10 00 02 00 03 00 82 00 31 00 61 64 6d 33 ........ ..1.adm3 -0010 61 7c 6c 73 69 20 61 64 6d 33 61 00 00 01 50 00 a|lsi ad m3a...P. -0020 ff ff 18 00 ff ff 00 00 02 00 ff ff ff ff 04 00 ........ ........ -0030 ff ff ff ff ff ff ff ff 0a 00 25 00 27 00 ff ff ........ ..%.'... -0040 29 00 ff ff ff ff 2b 00 ff ff 2d 00 ff ff ff ff ).....+. ..-..... -0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -00d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -00e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -00f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -0100 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -0110 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ -0120 ff ff ff ff ff ff 2f 00 07 00 0d 00 1a 24 3c 31 ....../. .....$<1 -0130 3e 00 1b 3d 25 70 31 25 7b 33 32 7d 25 2b 25 63 >..=%p1% {32}%+%c -0140 25 70 32 25 7b 33 32 7d 25 2b 25 63 00 0a 00 1e %p2%{32} %+%c.... -0150 00 08 00 0c 00 0b 00 0a 00 ........ .\s+2 -.ft R -.fi -.sp -.SH LIMITS -Some limitations: total compiled entries cannot exceed 4096 bytes. -The name field cannot exceed 128 bytes. -.SH FILES -\*d/*/* compiled terminal capability data base -.SH SEE ALSO -\fBcurses\fR(3X), \fBterminfo\fR(\*n). -.SH AUTHORS -Thomas E. Dickey -.br -extended terminfo format for ncurses 5.0 -.br -hashed database support for ncurses 5.6 -.sp -Eric S. Raymond diff --git a/deps/ncurses-5.9/man/term_variables.3x b/deps/ncurses-5.9/man/term_variables.3x deleted file mode 100644 index 58b7cfe..0000000 --- a/deps/ncurses-5.9/man/term_variables.3x +++ /dev/null @@ -1,153 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: term_variables.3x,v 1.2 2010/12/04 18:38:55 tom Exp $ -.TH term_variables 3X "" -.ds n 5 -.na -.hy 0 -.SH NAME -\fBSP\fP, -\fBacs_map\fP, -\fBboolcodes\fP, -\fBboolfnames\fP, -\fBboolnames\fP, -\fBcur_term\fP, -\fBnumcodes\fP, -\fBnumfnames\fP, -\fBnumnames\fP, -\fBstrcodes\fP, -\fBstrfnames\fP, -\fBstrnames\fP, -\fBttytype\fP -\- \fBcurses\fR terminfo global variables -.ad -.hy -.SH SYNOPSIS -.nf -\fB#include \fR -.br -\fB#include \fR -.PP -\fBchtype acs_map[];\fR -.br -\fBNCURSES_CONST char * const * boolcodes;\fR -.br -\fBNCURSES_CONST char * const * boolfnames;\fR -.br -\fBNCURSES_CONST char * const * boolnames;\fR -.br -\fBTERMINAL * cur_term;\fR -.br -\fBNCURSES_CONST char * const * numcodes;\fR -.br -\fBNCURSES_CONST char * const * numfnames;\fR -.br -\fBNCURSES_CONST char * const * numnames;\fR -.br -\fBNCURSES_CONST char * const * strcodes;\fR -.br -\fBNCURSES_CONST char * const * strfnames;\fR -.br -\fBNCURSES_CONST char * const * strnames;\fR -.br -\fBchar ttytype[];\fR -.br -.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. -.PP -Depending on the configuration, these may be actual variables, -or macros (see \fBcurs_threads\fR(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. -.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. -.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 . -.PP -The comparable data for the wide-character library is a private variable. -.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). -.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 to reuse in \fBset_term\fP. -.SS Terminfo Names -The \fBtic\fP(1) and \fBinfocmp\fP(1) programs use lookup tables for -the long and short names of terminfo capabilities, -as well as the corresponding names for termcap capabilities. -These are available to other applications, -though the hash-tables are not available. -.PP -The long terminfo capability names use a "l" (ell) in their names: -boolfnames -numfnames -strfnames -.PP -These are the short names for terminfo capabilities: -boolnames, -numnames, and -strnames. -.PP -These are the corresponding names used for termcap descriptions: -boolcodes, -numcodes, and -strcodes. -.SS Terminal Type -On initialization of the curses or terminfo interfaces, -\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP. -.SH NOTES -The low-level terminfo interface is initialized using \fBsetupterm\fR(3X). -The upper-level curses interface uses the low-level terminfo interface, -internally. -.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). -.PP -Other implementations may have comparable variables. -Some implementations provide the variables in their libraries, -but omit them from the header files. -.SH SEE ALSO -\fBcurses\fR(3X), -\fBcurs_terminfo\fR(3X), -\fBcurs_threads\fR(3X), -\fBterminfo\fR(3X), -\fBterminfo\fR(\*n). diff --git a/deps/ncurses-5.9/man/terminfo.5 b/deps/ncurses-5.9/man/terminfo.5 deleted file mode 100644 index bf233fe..0000000 --- a/deps/ncurses-5.9/man/terminfo.5 +++ /dev/null @@ -1,3332 +0,0 @@ -'\" t -.\" DO NOT EDIT THIS FILE BY HAND! -.\" It is generated from terminfo.head, Caps, 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. -.\"*************************************************************************** -.\" Copyright (c) 1998-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: terminfo.head,v 1.18 2010/07/31 16:08:48 tom Exp $ -.TH terminfo 5 "" "" "File Formats" -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -terminfo \- terminal capability data base -.SH SYNOPSIS -\*d/*/* -.SH DESCRIPTION -.I Terminfo -is a data base describing terminals, used by screen-oriented programs such as -\fBnvi\fR(1), -\fBrogue\fR(1) -and libraries such as -\fBcurses\fR(3X). -.I Terminfo -describes terminals by giving a set of capabilities which they -have, by specifying how to perform screen operations, and by -specifying padding requirements and initialization sequences. -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). -.PP -Entries in -.I terminfo -consist of a sequence of `,' separated fields (embedded commas may be -escaped with a backslash or notated as \\054). -White space after the `,' separator is ignored. -The first entry for each terminal gives the names which are known for the -terminal, separated by `|' characters. -The first name given is the most common abbreviation for the terminal, -the last name given should be a long name fully identifying the terminal, -and all others are understood as synonyms for the terminal name. -All names but the last should be in lower case and contain no blanks; -the last name may well contain upper case and blanks for readability. -.PP -Lines beginning with a `#' in the first column are treated as comments. -While comment lines are legal at any point, the output of \fB@CAPTOINFO@\fP -and \fB@INFOTOCAP@\fP (aliases for \fB@TIC@\fP) -will move comments so they occur only between entries. -.PP -Newlines and leading tabs may be used for formatting entries for readability. -These are removed from parsed entries. -The \fB@INFOCMP@\ \-f\fP option relies on this to format if-then-else expressions: -the result can be read by \fB@TIC@\fP. -.PP -Terminal names (except for the last, verbose entry) should -be chosen using the following conventions. -The particular piece of hardware making up the terminal should -have a root name, thus ``hp2621''. -This name should not contain hyphens. -Modes that the hardware can be in, or user preferences, should -be indicated by appending a hyphen and a mode suffix. -Thus, a vt100 in 132 column mode would be vt100\-w. -The following suffixes should be used where possible: -.PP -.TS -center ; -l c l -l l l. -\fBSuffix Meaning Example\fP -\-\fInn\fP Number of lines on the screen aaa\-60 -\-\fIn\fPp Number of pages of memory c100\-4p -\-am With automargins (usually the default) vt100\-am -\-m Mono mode; suppress color ansi\-m -\-mc Magic cookie; spaces when highlighting wy30\-mc -\-na No arrow keys (leave them in local) c100\-na -\-nam Without automatic margins vt100\-nam -\-nl No status line att4415\-nl -\-ns No status line hp2626\-ns -\-rv Reverse video c100\-rv -\-s Enable status line vt100\-s -\-vb Use visible bell instead of beep wy370\-vb -\-w Wide mode (> 80 columns, usually 132) vt100\-w -.TE -.PP -For more on terminal naming conventions, see the \fBterm(7)\fR manual page. -.SS Capabilities -.\" Head of terminfo man page ends here -.ps -1 -The following is a complete table of the capabilities included in a -terminfo description block and available to terminfo-using code. In each -line of the table, - -The \fBvariable\fR is the name by which the programmer (at the terminfo level) -accesses the capability. - -The \fBcapname\fR is the short name used in the text of the database, -and is used by a person updating the database. -Whenever possible, capnames are chosen to be the same as or similar to -the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses -identical or very similar names). Semantics are also intended to match -those of the specification. - -The termcap code is the old -.B termcap -capability name (some capabilities are new, and have names which termcap -did not originate). -.P -Capability names have no hard length limit, but an informal limit of 5 -characters has been adopted to keep them short and to allow the tabs in -the source file -.B Caps -to line up nicely. - -Finally, the description field attempts to convey the semantics of the -capability. You may find some codes in the description field: -.TP -(P) -indicates that padding may be specified -.TP -#[1-9] -in the description field indicates that the string is passed through tparm with -parms as given (#\fIi\fP). -.TP -(P*) -indicates that padding may vary in proportion to the number of -lines affected -.TP -(#\d\fIi\fP\u) -indicates the \fIi\fP\uth\d parameter. - -.PP -These are the boolean capabilities: - -.na -.TS H -center expand; -c l l c -c l l c -lw25 lw6 lw2 lw20. -\fBVariable Cap- TCap Description\fR -\fBBooleans name Code\fR -auto_left_margin bw bw T{ -cub1 wraps from column 0 to last column -T} -auto_right_margin am am T{ -terminal has automatic margins -T} -back_color_erase bce ut T{ -screen erased with background color -T} -can_change ccc cc T{ -terminal can re-define existing colors -T} -ceol_standout_glitch xhp xs T{ -standout not erased by overwriting (hp) -T} -col_addr_glitch xhpa YA T{ -only positive motion for hpa/mhpa caps -T} -cpi_changes_res cpix YF T{ -changing character pitch changes resolution -T} -cr_cancels_micro_mode crxm YB T{ -using cr turns off micro mode -T} -dest_tabs_magic_smso xt xt T{ -tabs destructive, magic so char (t1061) -T} -eat_newline_glitch xenl xn T{ -newline ignored after 80 cols (concept) -T} -erase_overstrike eo eo T{ -can erase overstrikes with a blank -T} -generic_type gn gn T{ -generic line type -T} -hard_copy hc hc T{ -hardcopy terminal -T} -hard_cursor chts HC T{ -cursor is hard to see -T} -has_meta_key km km T{ -Has a meta key (i.e., sets 8th-bit) -T} -has_print_wheel daisy YC T{ -printer needs operator to change character set -T} -has_status_line hs hs T{ -has extra status line -T} -hue_lightness_saturation hls hl T{ -terminal uses only HLS color notation (Tektronix) -T} -insert_null_glitch in in T{ -insert mode distinguishes nulls -T} -lpi_changes_res lpix YG T{ -changing line pitch changes resolution -T} -memory_above da da T{ -display may be retained above the screen -T} -memory_below db db T{ -display may be retained below the screen -T} -move_insert_mode mir mi T{ -safe to move while in insert mode -T} -move_standout_mode msgr ms T{ -safe to move while in standout mode -T} -needs_xon_xoff nxon nx T{ -padding will not work, xon/xoff required -T} -no_esc_ctlc xsb xb T{ -beehive (f1=escape, f2=ctrl C) -T} -no_pad_char npc NP T{ -pad character does not exist -T} -non_dest_scroll_region ndscr ND T{ -scrolling region is non-destructive -T} -non_rev_rmcup nrrmc NR T{ -smcup does not reverse rmcup -T} -over_strike os os T{ -terminal can overstrike -T} -prtr_silent mc5i 5i T{ -printer will not echo on screen -T} -row_addr_glitch xvpa YD T{ -only positive motion for vpa/mvpa caps -T} -semi_auto_right_margin sam YE T{ -printing in last column causes cr -T} -status_line_esc_ok eslok es T{ -escape can be used on the status line -T} -tilde_glitch hz hz T{ -cannot print ~'s (hazeltine) -T} -transparent_underline ul ul T{ -underline character overstrikes -T} -xon_xoff xon xo T{ -terminal uses xon/xoff handshaking -T} -.TE -.ad - -These are the numeric capabilities: - -.na -.TS H -center expand; -c l l c -c l l c -lw25 lw6 lw2 lw20. -\fBVariable Cap- TCap Description\fR -\fBNumeric name Code\fR -columns cols co T{ -number of columns in a line -T} -init_tabs it it T{ -tabs initially every # spaces -T} -label_height lh lh T{ -rows in each label -T} -label_width lw lw T{ -columns in each label -T} -lines lines li T{ -number of lines on screen or page -T} -lines_of_memory lm lm T{ -lines of memory if > line. 0 means varies -T} -magic_cookie_glitch xmc sg T{ -number of blank characters left by smso or rmso -T} -max_attributes ma ma T{ -maximum combined attributes terminal can handle -T} -max_colors colors Co T{ -maximum number of colors on screen -T} -max_pairs pairs pa T{ -maximum number of color-pairs on the screen -T} -maximum_windows wnum MW T{ -maximum number of defineable windows -T} -no_color_video ncv NC T{ -video attributes that cannot be used with colors -T} -num_labels nlab Nl T{ -number of labels on screen -T} -padding_baud_rate pb pb T{ -lowest baud rate where padding needed -T} -virtual_terminal vt vt T{ -virtual terminal number (CB/unix) -T} -width_status_line wsl ws T{ -number of columns in status line -T} -.TE -.ad - -The following numeric capabilities are present in the SVr4.0 term structure, -but are not yet documented in the man page. They came in with SVr4's -printer support. - -.na -.TS H -center expand; -c l l c -c l l c -lw25 lw6 lw2 lw20. -\fBVariable Cap- TCap Description\fR -\fBNumeric name Code\fR -bit_image_entwining bitwin Yo T{ -number of passes for each bit-image row -T} -bit_image_type bitype Yp T{ -type of bit-image device -T} -buffer_capacity bufsz Ya T{ -numbers of bytes buffered before printing -T} -buttons btns BT T{ -number of buttons on mouse -T} -dot_horz_spacing spinh Yc T{ -spacing of dots horizontally in dots per inch -T} -dot_vert_spacing spinv Yb T{ -spacing of pins vertically in pins per inch -T} -max_micro_address maddr Yd T{ -maximum value in micro_..._address -T} -max_micro_jump mjump Ye T{ -maximum value in parm_..._micro -T} -micro_col_size mcs Yf T{ -character step size when in micro mode -T} -micro_line_size mls Yg T{ -line step size when in micro mode -T} -number_of_pins npins Yh T{ -numbers of pins in print-head -T} -output_res_char orc Yi T{ -horizontal resolution in units per line -T} -output_res_horz_inch orhi Yk T{ -horizontal resolution in units per inch -T} -output_res_line orl Yj T{ -vertical resolution in units per line -T} -output_res_vert_inch orvi Yl T{ -vertical resolution in units per inch -T} -print_rate cps Ym T{ -print rate in characters per second -T} -wide_char_size widcs Yn T{ -character step size when in double wide mode -T} -.TE -.ad - -These are the string capabilities: - -.na -.TS H -center expand; -c l l c -c l l c -lw25 lw6 lw2 lw20. -\fBVariable Cap- TCap Description\fR -\fBString name Code\fR -acs_chars acsc ac T{ -graphics charset pairs, based on vt100 -T} -back_tab cbt bt T{ -back tab (P) -T} -bell bel bl T{ -audible signal (bell) (P) -T} -carriage_return cr cr T{ -carriage return (P*) (P*) -T} -change_char_pitch cpi ZA T{ -Change number of characters per inch to #1 -T} -change_line_pitch lpi ZB T{ -Change number of lines per inch to #1 -T} -change_res_horz chr ZC T{ -Change horizontal resolution to #1 -T} -change_res_vert cvr ZD T{ -Change vertical resolution to #1 -T} -change_scroll_region csr cs T{ -change region to line #1 to line #2 (P) -T} -char_padding rmp rP T{ -like ip but when in insert mode -T} -clear_all_tabs tbc ct T{ -clear all tab stops (P) -T} -clear_margins mgc MC T{ -clear right and left soft margins -T} -clear_screen clear cl T{ -clear screen and home cursor (P*) -T} -clr_bol el1 cb T{ -Clear to beginning of line -T} -clr_eol el ce T{ -clear to end of line (P) -T} -clr_eos ed cd T{ -clear to end of screen (P*) -T} -column_address hpa ch T{ -horizontal position #1, absolute (P) -T} -command_character cmdch CC T{ -terminal settable cmd character in prototype !? -T} -create_window cwin CW T{ -define a window #1 from #2,#3 to #4,#5 -T} -cursor_address cup cm T{ -move to row #1 columns #2 -T} -cursor_down cud1 do T{ -down one line -T} -cursor_home home ho T{ -home cursor (if no cup) -T} -cursor_invisible civis vi T{ -make cursor invisible -T} -cursor_left cub1 le T{ -move left one space -T} -cursor_mem_address mrcup CM T{ -memory relative cursor addressing, move to row #1 columns #2 -T} -cursor_normal cnorm ve T{ -make cursor appear normal (undo civis/cvvis) -T} -cursor_right cuf1 nd T{ -non-destructive space (move right one space) -T} -cursor_to_ll ll ll T{ -last line, first column (if no cup) -T} -cursor_up cuu1 up T{ -up one line -T} -cursor_visible cvvis vs T{ -make cursor very visible -T} -define_char defc ZE T{ -Define a character #1, #2 dots wide, descender #3 -T} -delete_character dch1 dc T{ -delete character (P*) -T} -delete_line dl1 dl T{ -delete line (P*) -T} -dial_phone dial DI T{ -dial number #1 -T} -dis_status_line dsl ds T{ -disable status line -T} -display_clock dclk DK T{ -display clock -T} -down_half_line hd hd T{ -half a line down -T} -ena_acs enacs eA T{ -enable alternate char set -T} -enter_alt_charset_mode smacs as T{ -start alternate character set (P) -T} -enter_am_mode smam SA T{ -turn on automatic margins -T} -enter_blink_mode blink mb T{ -turn on blinking -T} -enter_bold_mode bold md T{ -turn on bold (extra bright) mode -T} -enter_ca_mode smcup ti T{ -string to start programs using cup -T} -enter_delete_mode smdc dm T{ -enter delete mode -T} -enter_dim_mode dim mh T{ -turn on half-bright mode -T} -enter_doublewide_mode swidm ZF T{ -Enter double-wide mode -T} -enter_draft_quality sdrfq ZG T{ -Enter draft-quality mode -T} -enter_insert_mode smir im T{ -enter insert mode -T} -enter_italics_mode sitm ZH T{ -Enter italic mode -T} -enter_leftward_mode slm ZI T{ -Start leftward carriage motion -T} -enter_micro_mode smicm ZJ T{ -Start micro-motion mode -T} -enter_near_letter_quality snlq ZK T{ -Enter NLQ mode -T} -enter_normal_quality snrmq ZL T{ -Enter normal-quality mode -T} -enter_protected_mode prot mp T{ -turn on protected mode -T} -enter_reverse_mode rev mr T{ -turn on reverse video mode -T} -enter_secure_mode invis mk T{ -turn on blank mode (characters invisible) -T} -enter_shadow_mode sshm ZM T{ -Enter shadow-print mode -T} -enter_standout_mode smso so T{ -begin standout mode -T} -enter_subscript_mode ssubm ZN T{ -Enter subscript mode -T} -enter_superscript_mode ssupm ZO T{ -Enter superscript mode -T} -enter_underline_mode smul us T{ -begin underline mode -T} -enter_upward_mode sum ZP T{ -Start upward carriage motion -T} -enter_xon_mode smxon SX T{ -turn on xon/xoff handshaking -T} -erase_chars ech ec T{ -erase #1 characters (P) -T} -exit_alt_charset_mode rmacs ae T{ -end alternate character set (P) -T} -exit_am_mode rmam RA T{ -turn off automatic margins -T} -exit_attribute_mode sgr0 me T{ -turn off all attributes -T} -exit_ca_mode rmcup te T{ -strings to end programs using cup -T} -exit_delete_mode rmdc ed T{ -end delete mode -T} -exit_doublewide_mode rwidm ZQ T{ -End double-wide mode -T} -exit_insert_mode rmir ei T{ -exit insert mode -T} -exit_italics_mode ritm ZR T{ -End italic mode -T} -exit_leftward_mode rlm ZS T{ -End left-motion mode -T} -exit_micro_mode rmicm ZT T{ -End micro-motion mode -T} -exit_shadow_mode rshm ZU T{ -End shadow-print mode -T} -exit_standout_mode rmso se T{ -exit standout mode -T} -exit_subscript_mode rsubm ZV T{ -End subscript mode -T} -exit_superscript_mode rsupm ZW T{ -End superscript mode -T} -exit_underline_mode rmul ue T{ -exit underline mode -T} -exit_upward_mode rum ZX T{ -End reverse character motion -T} -exit_xon_mode rmxon RX T{ -turn off xon/xoff handshaking -T} -fixed_pause pause PA T{ -pause for 2-3 seconds -T} -flash_hook hook fh T{ -flash switch hook -T} -flash_screen flash vb T{ -visible bell (may not move cursor) -T} -form_feed ff ff T{ -hardcopy terminal page eject (P*) -T} -from_status_line fsl fs T{ -return from status line -T} -goto_window wingo WG T{ -go to window #1 -T} -hangup hup HU T{ -hang-up phone -T} -init_1string is1 i1 T{ -initialization string -T} -init_2string is2 is T{ -initialization string -T} -init_3string is3 i3 T{ -initialization string -T} -init_file if if T{ -name of initialization file -T} -init_prog iprog iP T{ -path name of program for initialization -T} -initialize_color initc Ic T{ -initialize color #1 to (#2,#3,#4) -T} -initialize_pair initp Ip T{ -Initialize color pair #1 to fg=(#2,#3,#4), bg=(#5,#6,#7) -T} -insert_character ich1 ic T{ -insert character (P) -T} -insert_line il1 al T{ -insert line (P*) -T} -insert_padding ip ip T{ -insert padding after inserted character -T} -key_a1 ka1 K1 T{ -upper left of keypad -T} -key_a3 ka3 K3 T{ -upper right of keypad -T} -key_b2 kb2 K2 T{ -center of keypad -T} -key_backspace kbs kb T{ -backspace key -T} -key_beg kbeg @1 T{ -begin key -T} -key_btab kcbt kB T{ -back-tab key -T} -key_c1 kc1 K4 T{ -lower left of keypad -T} -key_c3 kc3 K5 T{ -lower right of keypad -T} -key_cancel kcan @2 T{ -cancel key -T} -key_catab ktbc ka T{ -clear-all-tabs key -T} -key_clear kclr kC T{ -clear-screen or erase key -T} -key_close kclo @3 T{ -close key -T} -key_command kcmd @4 T{ -command key -T} -key_copy kcpy @5 T{ -copy key -T} -key_create kcrt @6 T{ -create key -T} -key_ctab kctab kt T{ -clear-tab key -T} -key_dc kdch1 kD T{ -delete-character key -T} -key_dl kdl1 kL T{ -delete-line key -T} -key_down kcud1 kd T{ -down-arrow key -T} -key_eic krmir kM T{ -sent by rmir or smir in insert mode -T} -key_end kend @7 T{ -end key -T} -key_enter kent @8 T{ -enter/send key -T} -key_eol kel kE T{ -clear-to-end-of-line key -T} -key_eos ked kS T{ -clear-to-end-of-screen key -T} -key_exit kext @9 T{ -exit key -T} -key_f0 kf0 k0 T{ -F0 function key -T} -key_f1 kf1 k1 T{ -F1 function key -T} -key_f10 kf10 k; T{ -F10 function key -T} -key_f11 kf11 F1 T{ -F11 function key -T} -key_f12 kf12 F2 T{ -F12 function key -T} -key_f13 kf13 F3 T{ -F13 function key -T} -key_f14 kf14 F4 T{ -F14 function key -T} -key_f15 kf15 F5 T{ -F15 function key -T} -key_f16 kf16 F6 T{ -F16 function key -T} -key_f17 kf17 F7 T{ -F17 function key -T} -key_f18 kf18 F8 T{ -F18 function key -T} -key_f19 kf19 F9 T{ -F19 function key -T} -key_f2 kf2 k2 T{ -F2 function key -T} -key_f20 kf20 FA T{ -F20 function key -T} -key_f21 kf21 FB T{ -F21 function key -T} -key_f22 kf22 FC T{ -F22 function key -T} -key_f23 kf23 FD T{ -F23 function key -T} -key_f24 kf24 FE T{ -F24 function key -T} -key_f25 kf25 FF T{ -F25 function key -T} -key_f26 kf26 FG T{ -F26 function key -T} -key_f27 kf27 FH T{ -F27 function key -T} -key_f28 kf28 FI T{ -F28 function key -T} -key_f29 kf29 FJ T{ -F29 function key -T} -key_f3 kf3 k3 T{ -F3 function key -T} -key_f30 kf30 FK T{ -F30 function key -T} -key_f31 kf31 FL T{ -F31 function key -T} -key_f32 kf32 FM T{ -F32 function key -T} -key_f33 kf33 FN T{ -F33 function key -T} -key_f34 kf34 FO T{ -F34 function key -T} -key_f35 kf35 FP T{ -F35 function key -T} -key_f36 kf36 FQ T{ -F36 function key -T} -key_f37 kf37 FR T{ -F37 function key -T} -key_f38 kf38 FS T{ -F38 function key -T} -key_f39 kf39 FT T{ -F39 function key -T} -key_f4 kf4 k4 T{ -F4 function key -T} -key_f40 kf40 FU T{ -F40 function key -T} -key_f41 kf41 FV T{ -F41 function key -T} -key_f42 kf42 FW T{ -F42 function key -T} -key_f43 kf43 FX T{ -F43 function key -T} -key_f44 kf44 FY T{ -F44 function key -T} -key_f45 kf45 FZ T{ -F45 function key -T} -key_f46 kf46 Fa T{ -F46 function key -T} -key_f47 kf47 Fb T{ -F47 function key -T} -key_f48 kf48 Fc T{ -F48 function key -T} -key_f49 kf49 Fd T{ -F49 function key -T} -key_f5 kf5 k5 T{ -F5 function key -T} -key_f50 kf50 Fe T{ -F50 function key -T} -key_f51 kf51 Ff T{ -F51 function key -T} -key_f52 kf52 Fg T{ -F52 function key -T} -key_f53 kf53 Fh T{ -F53 function key -T} -key_f54 kf54 Fi T{ -F54 function key -T} -key_f55 kf55 Fj T{ -F55 function key -T} -key_f56 kf56 Fk T{ -F56 function key -T} -key_f57 kf57 Fl T{ -F57 function key -T} -key_f58 kf58 Fm T{ -F58 function key -T} -key_f59 kf59 Fn T{ -F59 function key -T} -key_f6 kf6 k6 T{ -F6 function key -T} -key_f60 kf60 Fo T{ -F60 function key -T} -key_f61 kf61 Fp T{ -F61 function key -T} -key_f62 kf62 Fq T{ -F62 function key -T} -key_f63 kf63 Fr T{ -F63 function key -T} -key_f7 kf7 k7 T{ -F7 function key -T} -key_f8 kf8 k8 T{ -F8 function key -T} -key_f9 kf9 k9 T{ -F9 function key -T} -key_find kfnd @0 T{ -find key -T} -key_help khlp %1 T{ -help key -T} -key_home khome kh T{ -home key -T} -key_ic kich1 kI T{ -insert-character key -T} -key_il kil1 kA T{ -insert-line key -T} -key_left kcub1 kl T{ -left-arrow key -T} -key_ll kll kH T{ -lower-left key (home down) -T} -key_mark kmrk %2 T{ -mark key -T} -key_message kmsg %3 T{ -message key -T} -key_move kmov %4 T{ -move key -T} -key_next knxt %5 T{ -next key -T} -key_npage knp kN T{ -next-page key -T} -key_open kopn %6 T{ -open key -T} -key_options kopt %7 T{ -options key -T} -key_ppage kpp kP T{ -previous-page key -T} -key_previous kprv %8 T{ -previous key -T} -key_print kprt %9 T{ -print key -T} -key_redo krdo %0 T{ -redo key -T} -key_reference kref &1 T{ -reference key -T} -key_refresh krfr &2 T{ -refresh key -T} -key_replace krpl &3 T{ -replace key -T} -key_restart krst &4 T{ -restart key -T} -key_resume kres &5 T{ -resume key -T} -key_right kcuf1 kr T{ -right-arrow key -T} -key_save ksav &6 T{ -save key -T} -key_sbeg kBEG &9 T{ -shifted begin key -T} -key_scancel kCAN &0 T{ -shifted cancel key -T} -key_scommand kCMD *1 T{ -shifted command key -T} -key_scopy kCPY *2 T{ -shifted copy key -T} -key_screate kCRT *3 T{ -shifted create key -T} -key_sdc kDC *4 T{ -shifted delete-character key -T} -key_sdl kDL *5 T{ -shifted delete-line key -T} -key_select kslt *6 T{ -select key -T} -key_send kEND *7 T{ -shifted end key -T} -key_seol kEOL *8 T{ -shifted clear-to-end-of-line key -T} -key_sexit kEXT *9 T{ -shifted exit key -T} -key_sf kind kF T{ -scroll-forward key -T} -key_sfind kFND *0 T{ -shifted find key -T} -key_shelp kHLP #1 T{ -shifted help key -T} -key_shome kHOM #2 T{ -shifted home key -T} -key_sic kIC #3 T{ -shifted insert-character key -T} -key_sleft kLFT #4 T{ -shifted left-arrow key -T} -key_smessage kMSG %a T{ -shifted message key -T} -key_smove kMOV %b T{ -shifted move key -T} -key_snext kNXT %c T{ -shifted next key -T} -key_soptions kOPT %d T{ -shifted options key -T} -key_sprevious kPRV %e T{ -shifted previous key -T} -key_sprint kPRT %f T{ -shifted print key -T} -key_sr kri kR T{ -scroll-backward key -T} -key_sredo kRDO %g T{ -shifted redo key -T} -key_sreplace kRPL %h T{ -shifted replace key -T} -key_sright kRIT %i T{ -shifted right-arrow key -T} -key_srsume kRES %j T{ -shifted resume key -T} -key_ssave kSAV !1 T{ -shifted save key -T} -key_ssuspend kSPD !2 T{ -shifted suspend key -T} -key_stab khts kT T{ -set-tab key -T} -key_sundo kUND !3 T{ -shifted undo key -T} -key_suspend kspd &7 T{ -suspend key -T} -key_undo kund &8 T{ -undo key -T} -key_up kcuu1 ku T{ -up-arrow key -T} -keypad_local rmkx ke T{ -leave 'keyboard_transmit' mode -T} -keypad_xmit smkx ks T{ -enter 'keyboard_transmit' mode -T} -lab_f0 lf0 l0 T{ -label on function key f0 if not f0 -T} -lab_f1 lf1 l1 T{ -label on function key f1 if not f1 -T} -lab_f10 lf10 la T{ -label on function key f10 if not f10 -T} -lab_f2 lf2 l2 T{ -label on function key f2 if not f2 -T} -lab_f3 lf3 l3 T{ -label on function key f3 if not f3 -T} -lab_f4 lf4 l4 T{ -label on function key f4 if not f4 -T} -lab_f5 lf5 l5 T{ -label on function key f5 if not f5 -T} -lab_f6 lf6 l6 T{ -label on function key f6 if not f6 -T} -lab_f7 lf7 l7 T{ -label on function key f7 if not f7 -T} -lab_f8 lf8 l8 T{ -label on function key f8 if not f8 -T} -lab_f9 lf9 l9 T{ -label on function key f9 if not f9 -T} -label_format fln Lf T{ -label format -T} -label_off rmln LF T{ -turn off soft labels -T} -label_on smln LO T{ -turn on soft labels -T} -meta_off rmm mo T{ -turn off meta mode -T} -meta_on smm mm T{ -turn on meta mode (8th-bit on) -T} -micro_column_address mhpa ZY T{ -Like column_address in micro mode -T} -micro_down mcud1 ZZ T{ -Like cursor_down in micro mode -T} -micro_left mcub1 Za T{ -Like cursor_left in micro mode -T} -micro_right mcuf1 Zb T{ -Like cursor_right in micro mode -T} -micro_row_address mvpa Zc T{ -Like row_address #1 in micro mode -T} -micro_up mcuu1 Zd T{ -Like cursor_up in micro mode -T} -newline nel nw T{ -newline (behave like cr followed by lf) -T} -order_of_pins porder Ze T{ -Match software bits to print-head pins -T} -orig_colors oc oc T{ -Set all color pairs to the original ones -T} -orig_pair op op T{ -Set default pair to its original value -T} -pad_char pad pc T{ -padding char (instead of null) -T} -parm_dch dch DC T{ -delete #1 characters (P*) -T} -parm_delete_line dl DL T{ -delete #1 lines (P*) -T} -parm_down_cursor cud DO T{ -down #1 lines (P*) -T} -parm_down_micro mcud Zf T{ -Like parm_down_cursor in micro mode -T} -parm_ich ich IC T{ -insert #1 characters (P*) -T} -parm_index indn SF T{ -scroll forward #1 lines (P) -T} -parm_insert_line il AL T{ -insert #1 lines (P*) -T} -parm_left_cursor cub LE T{ -move #1 characters to the left (P) -T} -parm_left_micro mcub Zg T{ -Like parm_left_cursor in micro mode -T} -parm_right_cursor cuf RI T{ -move #1 characters to the right (P*) -T} -parm_right_micro mcuf Zh T{ -Like parm_right_cursor in micro mode -T} -parm_rindex rin SR T{ -scroll back #1 lines (P) -T} -parm_up_cursor cuu UP T{ -up #1 lines (P*) -T} -parm_up_micro mcuu Zi T{ -Like parm_up_cursor in micro mode -T} -pkey_key pfkey pk T{ -program function key #1 to type string #2 -T} -pkey_local pfloc pl T{ -program function key #1 to execute string #2 -T} -pkey_xmit pfx px T{ -program function key #1 to transmit string #2 -T} -plab_norm pln pn T{ -program label #1 to show string #2 -T} -print_screen mc0 ps T{ -print contents of screen -T} -prtr_non mc5p pO T{ -turn on printer for #1 bytes -T} -prtr_off mc4 pf T{ -turn off printer -T} -prtr_on mc5 po T{ -turn on printer -T} -pulse pulse PU T{ -select pulse dialing -T} -quick_dial qdial QD T{ -dial number #1 without checking -T} -remove_clock rmclk RC T{ -remove clock -T} -repeat_char rep rp T{ -repeat char #1 #2 times (P*) -T} -req_for_input rfi RF T{ -send next input char (for ptys) -T} -reset_1string rs1 r1 T{ -reset string -T} -reset_2string rs2 r2 T{ -reset string -T} -reset_3string rs3 r3 T{ -reset string -T} -reset_file rf rf T{ -name of reset file -T} -restore_cursor rc rc T{ -restore cursor to position of last save_cursor -T} -row_address vpa cv T{ -vertical position #1 absolute (P) -T} -save_cursor sc sc T{ -save current cursor position (P) -T} -scroll_forward ind sf T{ -scroll text up (P) -T} -scroll_reverse ri sr T{ -scroll text down (P) -T} -select_char_set scs Zj T{ -Select character set, #1 -T} -set_attributes sgr sa T{ -define video attributes #1-#9 (PG9) -T} -set_background setb Sb T{ -Set background color #1 -T} -set_bottom_margin smgb Zk T{ -Set bottom margin at current line -T} -set_bottom_margin_parm smgbp Zl T{ -Set bottom margin at line #1 or (if smgtp is not given) #2 lines from bottom -T} -set_clock sclk SC T{ -set clock, #1 hrs #2 mins #3 secs -T} -set_color_pair scp sp T{ -Set current color pair to #1 -T} -set_foreground setf Sf T{ -Set foreground color #1 -T} -set_left_margin smgl ML T{ -set left soft margin at current column. See smgl. (ML is not in BSD termcap). -T} -set_left_margin_parm smglp Zm T{ -Set left (right) margin at column #1 -T} -set_right_margin smgr MR T{ -set right soft margin at current column -T} -set_right_margin_parm smgrp Zn T{ -Set right margin at column #1 -T} -set_tab hts st T{ -set a tab in every row, current columns -T} -set_top_margin smgt Zo T{ -Set top margin at current line -T} -set_top_margin_parm smgtp Zp T{ -Set top (bottom) margin at row #1 -T} -set_window wind wi T{ -current window is lines #1-#2 cols #3-#4 -T} -start_bit_image sbim Zq T{ -Start printing bit image graphics -T} -start_char_set_def scsd Zr T{ -Start character set definition #1, with #2 characters in the set -T} -stop_bit_image rbim Zs T{ -Stop printing bit image graphics -T} -stop_char_set_def rcsd Zt T{ -End definition of character set #1 -T} -subscript_characters subcs Zu T{ -List of subscriptable characters -T} -superscript_characters supcs Zv T{ -List of superscriptable characters -T} -tab ht ta T{ -tab to next 8-space hardware tab stop -T} -these_cause_cr docr Zw T{ -Printing any of these characters causes CR -T} -to_status_line tsl ts T{ -move to status line, column #1 -T} -tone tone TO T{ -select touch tone dialing -T} -underline_char uc uc T{ -underline char and move past it -T} -up_half_line hu hu T{ -half a line up -T} -user0 u0 u0 T{ -User string #0 -T} -user1 u1 u1 T{ -User string #1 -T} -user2 u2 u2 T{ -User string #2 -T} -user3 u3 u3 T{ -User string #3 -T} -user4 u4 u4 T{ -User string #4 -T} -user5 u5 u5 T{ -User string #5 -T} -user6 u6 u6 T{ -User string #6 -T} -user7 u7 u7 T{ -User string #7 -T} -user8 u8 u8 T{ -User string #8 -T} -user9 u9 u9 T{ -User string #9 -T} -wait_tone wait WA T{ -wait for dial-tone -T} -xoff_character xoffc XF T{ -XOFF character -T} -xon_character xonc XN T{ -XON character -T} -zero_motion zerom Zx T{ -No motion for subsequent character -T} -.TE -.ad - -The following string capabilities are present in the SVr4.0 term structure, -but were originally not documented in the man page. - -.na -.TS H -center expand; -c l l c -c l l c -lw25 lw6 lw2 lw18. -\fBVariable Cap- TCap Description\fR -\fBString name Code\fR -alt_scancode_esc scesa S8 T{ -Alternate escape for scancode emulation -T} -bit_image_carriage_return bicr Yv T{ -Move to beginning of same row -T} -bit_image_newline binel Zz T{ -Move to next row of the bit image -T} -bit_image_repeat birep Xy T{ -Repeat bit image cell #1 #2 times -T} -char_set_names csnm Zy T{ -Produce #1'th item from list of character set names -T} -code_set_init csin ci T{ -Init sequence for multiple codesets -T} -color_names colornm Yw T{ -Give name for color #1 -T} -define_bit_image_region defbi Yx T{ -Define rectangualar bit image region -T} -device_type devt dv T{ -Indicate language/codeset support -T} -display_pc_char dispc S1 T{ -Display PC character #1 -T} -end_bit_image_region endbi Yy T{ -End a bit-image region -T} -enter_pc_charset_mode smpch S2 T{ -Enter PC character display mode -T} -enter_scancode_mode smsc S4 T{ -Enter PC scancode mode -T} -exit_pc_charset_mode rmpch S3 T{ -Exit PC character display mode -T} -exit_scancode_mode rmsc S5 T{ -Exit PC scancode mode -T} -get_mouse getm Gm T{ -Curses should get button events, parameter #1 not documented. -T} -key_mouse kmous Km T{ -Mouse event has occurred -T} -mouse_info minfo Mi T{ -Mouse status information -T} -pc_term_options pctrm S6 T{ -PC terminal options -T} -pkey_plab pfxl xl T{ -Program function key #1 to type string #2 and show string #3 -T} -req_mouse_pos reqmp RQ T{ -Request mouse position -T} -scancode_escape scesc S7 T{ -Escape for scancode emulation -T} -set0_des_seq s0ds s0 T{ -Shift to codeset 0 (EUC set 0, ASCII) -T} -set1_des_seq s1ds s1 T{ -Shift to codeset 1 -T} -set2_des_seq s2ds s2 T{ -Shift to codeset 2 -T} -set3_des_seq s3ds s3 T{ -Shift to codeset 3 -T} -set_a_background setab AB T{ -Set background color to #1, using ANSI escape -T} -set_a_foreground setaf AF T{ -Set foreground color to #1, using ANSI escape -T} -set_color_band setcolor Yz T{ -Change to ribbon color #1 -T} -set_lr_margin smglr ML T{ -Set both left and right margins to #1, #2. (ML is not in BSD termcap). -T} -set_page_length slines YZ T{ -Set page length to #1 lines -T} -set_tb_margin smgtb MT T{ -Sets both top and bottom margins to #1, #2 -T} -.TE -.ad - -.in .8i -The XSI Curses standard added these. They are some post-4.1 -versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x. -The \fBncurses\fR termcap names for them are invented; according to the -XSI Curses standard, they have no termcap names. If your compiled terminfo -entries use these, they may not be binary-compatible with System V terminfo -entries after SVr4.1; beware! - -.na -.TS H -center expand; -c l l c -c l l c -lw25 lw6 lw2 lw20. -\fBVariable Cap- TCap Description\fR -\fBString name Code\fR -enter_horizontal_hl_mode ehhlm Xh T{ -Enter horizontal highlight mode -T} -enter_left_hl_mode elhlm Xl T{ -Enter left highlight mode -T} -enter_low_hl_mode elohlm Xo T{ -Enter low highlight mode -T} -enter_right_hl_mode erhlm Xr T{ -Enter right highlight mode -T} -enter_top_hl_mode ethlm Xt T{ -Enter top highlight mode -T} -enter_vertical_hl_mode evhlm Xv T{ -Enter vertical highlight mode -T} -set_a_attributes sgr1 sA T{ -Define second set of video attributes #1-#6 -T} -set_pglen_inch slength sL T{ -YI Set page length to #1 hundredth of an inch -T} -.TE -.ad -.\" $Id: terminfo.tail,v 1.53 2010/12/04 18:38:55 tom Exp $ -.\" Beginning of terminfo.tail file -.\" This file is part of ncurses. -.\" See "terminfo.head" for copyright. -.ps +1 -. -.SS A Sample Entry -. -The following entry, describing an ANSI-standard terminal, is representative -of what a \fBterminfo\fR entry for a modern terminal typically looks like. -.PP -.nf -.in -2 -.ta .3i -.ft CW -\s-2ansi|ansi/pc-term compatible with color, - mc5i, - colors#8, ncv#3, pairs#64, - cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC, - cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM, - ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I, - ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS, .indn=\\E[%p1%dT, - kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B, - kcuf1=\\E[C, kcuu1=\\E[A, 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, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, - op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%\-%db, - rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, - s3ds=\\E+B, 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}%=%t3%e%p1%d%;m, - sgr=\\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m, - sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n, - u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%p1%dd,\s+2 -.in +2 -.fi -.ft R -.PP -Entries may continue onto multiple lines by placing white space at -the beginning of each line except the first. -Comments may be included on lines beginning with ``#''. -Capabilities in -.I terminfo -are of three types: -Boolean capabilities which indicate that the terminal has -some particular feature, numeric capabilities giving the size of the terminal -or the size of particular delays, and string -capabilities, which give a sequence which can be used to perform particular -terminal operations. -.PP -.SS Types of Capabilities -.PP -All capabilities have names. -For instance, the fact that -ANSI-standard terminals have -.I "automatic margins" -(i.e., an automatic return and line-feed -when the end of a line is reached) is indicated by the capability \fBam\fR. -Hence the description of ansi includes \fBam\fR. -Numeric capabilities are followed by the character `#' and then a positive value. -Thus \fBcols\fR, which indicates the number of columns the terminal has, -gives the value `80' for ansi. -Values for numeric capabilities may be specified in decimal, octal or hexadecimal, -using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF). -.PP -Finally, string valued capabilities, such as \fBel\fR (clear to end of line -sequence) are given by the two-character code, an `=', and then a string -ending at the next following `,'. -.PP -A number of escape sequences are provided in the string valued capabilities -for easy encoding of characters there. -Both \fB\eE\fR and \fB\ee\fR -map to an \s-1ESCAPE\s0 character, -\fB^x\fR maps to a control-x for any appropriate x, and the sequences -\fB\en \el \er \et \eb \ef \es\fR give -a newline, line-feed, return, tab, backspace, form-feed, and space. -Other escapes include \fB\e^\fR for \fB^\fR, -\fB\e\e\fR for \fB\e\fR, -\fB\e\fR, for comma, -\fB\e:\fR for \fB:\fR, -and \fB\e0\fR for null. -(\fB\e0\fR will produce \e200, which does not terminate a string but behaves -as a null character on most terminals, providing CS7 is specified. -See stty(1).) -Finally, characters may be given as three octal digits after a \fB\e\fR. -.PP -A delay in milliseconds may appear anywhere in a string capability, enclosed in -$<..> brackets, as in \fBel\fP=\eEK$<5>, and padding characters are supplied by -.I tputs -to provide this delay. -The delay must be a number with at most one decimal -place of precision; it may be followed by suffixes `*' or '/' or both. -A `*' -indicates that the padding required is proportional to the number of lines -affected by the operation, and the amount given is the per-affected-unit -padding required. -(In the case of insert character, the factor is still the -number of -.IR lines -affected.) Normally, padding is advisory if the device has the \fBxon\fR -capability; it is used for cost computation but does not trigger delays. -A `/' -suffix indicates that the padding is mandatory and forces a delay of the given -number of milliseconds even on devices for which \fBxon\fR is present to -indicate flow control. -.PP -Sometimes individual capabilities must be commented out. -To do this, put a period before the capability name. -For example, see the second -.B ind -in the example above. -.br -.ne 5 -.PP -.SS Fetching Compiled Descriptions -.PP -If the environment variable TERMINFO is set, it is interpreted as the pathname -of a directory containing the compiled description you are working on. -Only -that directory is searched. -.PP -If TERMINFO is not set, the \fBncurses\fR version of the terminfo reader code -will instead look in the directory \fB$HOME/.terminfo\fR -for a compiled description. -If it fails to find one there, and the environment variable TERMINFO_DIRS is -set, it will interpret the contents of that variable as a list of colon- -separated directories to be searched (an empty entry is interpreted as a -command to search \fI\*d\fR). -If no description is found in any of the -TERMINFO_DIRS directories, the fetch fails. -.PP -If neither TERMINFO nor TERMINFO_DIRS is set, the last place tried will be the -system terminfo directory, \fI\*d\fR. -.PP -(Neither the \fB$HOME/.terminfo\fR lookups nor TERMINFO_DIRS extensions are -supported under stock System V terminfo/curses.) -.PP -.SS Preparing Descriptions -.PP -We now outline how to prepare descriptions of terminals. -The most effective way to prepare a terminal description is by imitating -the description of a similar terminal in -.I terminfo -and to build up a description gradually, using partial descriptions -with -.I vi -or some other screen-oriented program to check that they are correct. -Be aware that a very unusual terminal may expose deficiencies in -the ability of the -.I terminfo -file to describe it -or bugs in the screen-handling code of the test program. -.PP -To get the padding for insert line right (if the terminal manufacturer -did not document it) a severe test is to edit a large file at 9600 baud, -delete 16 or so lines from the middle of the screen, then hit the `u' -key several times quickly. -If the terminal messes up, more padding is usually needed. -A similar test can be used for insert character. -.PP -.SS Basic Capabilities -.PP -The number of columns on each line for the terminal is given by the -\fBcols\fR numeric capability. -If the terminal is a \s-1CRT\s0, then the -number of lines on the screen is given by the \fBlines\fR capability. -If the terminal wraps around to the beginning of the next line when -it reaches the right margin, then it should have the \fBam\fR capability. -If the terminal can clear its screen, leaving the cursor in the home -position, then this is given by the \fBclear\fR string capability. -If the terminal overstrikes -(rather than clearing a position when a character is struck over) -then it should have the \fBos\fR capability. -If the terminal is a printing terminal, with no soft copy unit, -give it both -.B hc -and -.BR os . -.RB ( os -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 -.BR cr . -(Normally this will be carriage return, control M.) -If there is a code to produce an audible signal (bell, beep, etc) -give this as -.BR bel . -.PP -If there is a code to move the cursor one position to the left -(such as backspace) that capability should be given as -.BR cub1 . -Similarly, codes to move to the right, up, and down should be -given as -.BR cuf1 , -.BR cuu1 , -and -.BR cud1 . -These local cursor motions should not alter the text they pass over, -for example, you would not normally use `\fBcuf1\fP=\ ' because the -space would erase the character moved over. -.PP -A very important point here is that the local cursor motions encoded -in -.I terminfo -are undefined at the left and top edges of a \s-1CRT\s0 terminal. -Programs should never attempt to backspace around the left edge, -unless -.B bw -is given, -and never attempt to go up locally off the top. -In order to scroll text up, a program will go to the bottom left corner -of the screen and send the -.B ind -(index) string. -.PP -To scroll text down, a program goes to the top left corner -of the screen and sends the -.B ri -(reverse index) string. -The strings -.B ind -and -.B ri -are undefined when not on their respective corners of the screen. -.PP -Parameterized versions of the scrolling sequences are -.B indn -and -.B rin -which have the same semantics as -.B ind -and -.B ri -except that they take one parameter, and scroll that many lines. -They are also undefined except at the appropriate edge of the screen. -.PP -The \fBam\fR capability tells whether the cursor sticks at the right -edge of the screen when text is output, but this does not necessarily -apply to a -.B cuf1 -from the last column. -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. -If -.B bw -is not given, the effect is undefined. -This is useful for drawing a box around the edge of the screen, for example. -If the terminal has switch selectable automatic margins, -the -.I terminfo -file usually assumes that this is on; i.e., \fBam\fR. -If the terminal has a command which moves to the first column of the next -line, that command can be given as -.B nel -(newline). -It does not matter if the command clears the remainder of the current line, -so if the terminal has no -.B cr -and -.B lf -it may still be possible to craft a working -.B nel -out of one or both of them. -.PP -These capabilities suffice to describe hard-copy and \*(lqglass-tty\*(rq terminals. -Thus the model 33 teletype is described as -.PP -.DT -.nf -.ft CW -.\".in -2 -\s-133\||\|tty33\||\|tty\||\|model 33 teletype, - bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1 -.\".in +2 -.ft R -.PP -while the Lear Siegler \s-1ADM-3\s0 is described as -.PP -.DT -.nf -.ft CW -.\".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 -.ft R -.fi -.PP -.SS Parameterized Strings -.PP -Cursor addressing and other strings requiring parameters -in the terminal are described by a -parameterized string capability, with -.IR printf (3) -like escapes \fB%x\fR 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 -physical screen visible to the user, not to any unseen memory.) -If the terminal has memory relative cursor addressing, -that can be indicated by -.BR mrcup . -.PP -The parameter mechanism uses a stack and special \fB%\fP codes -to manipulate it. -Typically a sequence will push one of the -parameters onto the stack and then print it in some format. -Print (e.g., "%d") is a special case. -Other operations, including "%t" pop their operand from the stack. -It is noted that more complex operations are often necessary, -e.g., in the \fBsgr\fP string. -.PP -The \fB%\fR encodings have the following meanings: -.PP -.TP 5 -\s-1%% -outputs `%' -.TP -%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP -as in \fBprintf\fP, flags are [\-+#] and space. -Use a `:' to allow the next character to be a `\-' flag, -avoiding interpreting "%\-" as an operator. -.TP -%c -print pop() like %c in \fBprintf\fP -.TP -%s -print pop() like %s in \fBprintf\fP -.TP -%p[1\-9] -push \fIi\fP'th parameter -.TP -%P[a\-z] -set dynamic variable [a\-z] to pop() -.TP -%g[a\-z] -get dynamic variable [a\-z] and push it -.TP -%P[A\-Z] -set static variable [a\-z] to pop() -.TP -%g[A\-Z] -get static variable [a\-z] and push it -.IP -The terms "static" and "dynamic" are misleading. -Historically, these are simply two different sets of variables, -whose values are not reset between calls to \fBtparm\fP. -However, that fact is not documented in other implementations. -Relying on it will adversely impact portability to other implementations. -.TP -%'\fIc\fP' -char constant \fIc\fP -.TP -%{\fInn\fP} -integer constant \fInn\fP -.TP -%l -push strlen(pop) -.TP -%+ %\- %* %/ %m -arithmetic (%m is mod): push(pop() op pop()) -.TP -%& %| %^ -bit operations (AND, OR and exclusive-OR): push(pop() op pop()) -.TP -%= %> %< -logical operations: push(pop() op pop()) -.TP -%A, %O -logical AND and OR operations (for conditionals) -.TP -%! %~ -unary operations (logical and bit complement): push(op pop()) -.TP -%i -add 1 to first two parameters (for ANSI terminals) -.TP -%? \fIexpr\fP %t \fIthenpart\fP %e \fIelsepart\fP %; -This forms an if-then-else. -The %e \fIelsepart\fP is optional. -Usually the %? \fIexpr\fP part pushes a value onto the stack, -and %t pops it from the stack, testing if it is nonzero (true). -If it is zero (false), control passes to the %e (else) part. -.IP -It is possible to form else-if's a la Algol 68: -.RS -%? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %; -.RE -.IP -where c\di\u are conditions, b\di\u are bodies. -.IP -Use the \fB\-f\fP option of \fBtic\fP or \fB@INFOCMP@\fP to see -the structure of if-then-else's. -Some strings, e.g., \fBsgr\fP can be very complicated when written -on one line. -The \fB\-f\fP option splits the string into lines with the parts indented. -.PP -Binary operations are in postfix form with the operands in the usual order. -That is, to get x\-5 one would use "%gx%{5}%-". -%P and %g variables are -persistent across escape-string evaluations. -.PP -Consider the HP2645, which, to get to row 3 and column 12, needs -to be sent \eE&a12c03Y padded for 6 milliseconds. -Note that the order -of the rows and columns is inverted here, and that the row and column -are printed as two digits. -Thus its \fBcup\fR capability is \*(lqcup=6\eE&%p2%2dc%p1%2dY\*(rq. -.PP -The Microterm \s-1ACT-IV\s0 needs the current row and column sent -preceded by a \fB^T\fR, with the row and column simply encoded in binary, -\*(lqcup=^T%p1%c%p2%c\*(rq. -Terminals which use \*(lq%c\*(rq need to be able to -backspace the cursor (\fBcub1\fR), -and to move the cursor up one line on the screen (\fBcuu1\fR). -This is necessary because it is not always safe to transmit \fB\en\fR -\fB^D\fR and \fB\er\fR, as the system may change or discard them. -(The library routines dealing with terminfo set tty modes so that -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 \*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq. -After sending `\eE=', this pushes the first parameter, pushes the -ASCII value for a space (32), adds them (pushing the sum on the stack -in place of the two previous values) and outputs that value as a character. -Then the same is done for the second parameter. -More complex arithmetic is possible using the stack. -.PP -.SS Cursor Motions -.PP -If the terminal has a fast way to home the cursor -(to very upper left corner of screen) then this can be given as -\fBhome\fR; similarly a fast way of getting to the lower left-hand corner -can be given as \fBll\fR; this may involve going up with \fBcuu1\fR -from the home position, -but a program should never do this itself (unless \fBll\fR does) because it -can make no assumption about the effect of moving up from the home position. -Note that the home position is the same as addressing to (0,0): -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, -these can be given as single parameter capabilities -.B hpa -(horizontal position absolute) -and -.B vpa -(vertical position absolute). -Sometimes these are shorter than the more general two parameter -sequence (as with the hp2645) and can be used in preference to -.BR cup . -If there are parameterized local motions (e.g., move -.I n -spaces to the right) these can be given as -.BR cud , -.BR cub , -.BR cuf , -and -.BR cuu -with a single parameter indicating how many spaces to move. -These are primarily useful if the terminal does not have -.BR cup , -such as the \s-1TEKTRONIX\s+1 4025. -.PP -If the terminal needs to be in a special mode when running -a program that uses these capabilities, -the codes to enter and exit this mode can be given as \fBsmcup\fR and \fBrmcup\fR. -This arises, for example, from terminals like the Concept with more than -one page of memory. -If the terminal has only memory relative cursor addressing and not screen -relative cursor addressing, a one screen-sized window must be fixed into -the terminal for cursor addressing to work properly. -This is also used for the \s-1TEKTRONIX\s+1 4025, -where -.B smcup -sets the command character to be the one used by terminfo. -If the \fBsmcup\fP sequence will not restore the screen after an -\fBrmcup\fP sequence is output (to the state prior to outputting -\fBrmcup\fP), specify \fBnrrmc\fP. -.PP -.SS Area Clears -.PP -If the terminal can clear from the current position to the end of the -line, leaving the cursor where it is, this should be given as \fBel\fR. -If the terminal can clear from the beginning of the line to the current -position inclusive, leaving -the cursor where it is, this should be given as \fBel1\fP. -If the terminal can clear from the current position to the end of the -display, then this should be given as \fBed\fR. -\fBEd\fR is only defined from the first column of a line. -(Thus, it can be simulated by a request to delete a large number of lines, -if a true -.B ed -is not available.) -.PP -.SS Insert/delete line and vertical motions -.PP -If the terminal can open a new blank line before the line where the cursor -is, this should be given as \fBil1\fR; this is done only from the first -position of a line. -The cursor must then appear on the newly blank line. -If the terminal can delete the line which the cursor is on, then this -should be given as \fBdl1\fR; this is done only from the first position on -the line to be deleted. -Versions of -.B il1 -and -.B dl1 -which take a single parameter and insert or delete that many lines can -be given as -.B il -and -.BR dl . -.PP -If the terminal has a settable scrolling region (like the vt100) -the command to set this can be described with the -.B csr -capability, which takes two parameters: -the top and bottom lines of the scrolling region. -The cursor position is, alas, undefined after using this command. -.PP -It is possible to get the effect of insert or delete line using -.B csr -on a properly chosen region; the -.B sc -and -.B rc -(save and restore cursor) commands may be useful for ensuring that -your synthesized insert/delete string does not move the cursor. -(Note that the \fBncurses\fR(3X) library does this synthesis -automatically, so you need not compose insert/delete strings for -an entry with \fBcsr\fR). -.PP -Yet another way to construct insert and delete might be to use a combination of -index with the memory-lock feature found on some terminals (like the HP\-700/90 -series, which however also has insert/delete). -.PP -Inserting lines at the top or bottom of the screen can also be -done using -.B ri -or -.B ind -on many terminals without a true insert/delete line, -and is often faster even on terminals with those features. -.PP -The boolean \fBnon_dest_scroll_region\fR should be set if each scrolling -window is effectively a view port on a screen-sized canvas. -To test for -this capability, create a scrolling region in the middle of the screen, -write something to the bottom line, move the cursor to the top of the region, -and do \fBri\fR followed by \fBdl1\fR or \fBind\fR. -If the data scrolled -off the bottom of the region by the \fBri\fR re-appears, then scrolling -is non-destructive. -System V and XSI Curses expect that \fBind\fR, \fBri\fR, -\fBindn\fR, and \fBrin\fR will simulate destructive scrolling; their -documentation cautions you not to define \fBcsr\fR unless this is true. -This \fBcurses\fR implementation is more liberal and will do explicit erases -after scrolling if \fBndstr\fR is defined. -.PP -If the terminal has the ability to define a window as part of -memory, which all commands affect, -it should be given as the parameterized string -.BR wind . -The four parameters are the starting and ending lines in memory -and the starting and ending columns in memory, in that order. -.PP -If the terminal can retain display memory above, then the -\fBda\fR capability should be given; if display memory can be retained -below, then \fBdb\fR should be given. -These indicate -that deleting a line or scrolling may bring non-blank lines up from below -or that scrolling back with \fBri\fR may bring down non-blank lines. -.PP -.SS Insert/Delete Character -.PP -There are two basic kinds of intelligent terminals with respect to -insert/delete character which can be described using -.I terminfo. -The most common insert/delete character operations affect only the characters -on the current line and shift characters off the end of the line rigidly. -Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make -a distinction between typed and untyped blanks on the screen, shifting -upon an insert or delete only to an untyped blank on the screen which is -either eliminated, or expanded to two untyped blanks. -You can determine the -kind of terminal you have by clearing the screen and then typing -text separated by cursor motions. -Type \*(lqabc\ \ \ \ def\*(rq using local -cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq. -Then position the cursor before the \*(lqabc\*(rq and put the terminal in insert -mode. -If typing characters causes the rest of the line to shift -rigidly and characters to fall off the end, then your terminal does -not distinguish between blanks and untyped positions. -If the \*(lqabc\*(rq -shifts over to the \*(lqdef\*(rq which then move together around the end of the -current line and onto the next as you insert, you have the second type of -terminal, and should give the capability \fBin\fR, which stands for -\*(lqinsert null\*(rq. -While these are two logically separate attributes (one line versus multi-line -insert mode, and special treatment of untyped spaces) we have seen no -terminals whose insert mode cannot be described with the single attribute. -.PP -Terminfo can describe both terminals which have an insert mode, and terminals -which send a simple sequence to open a blank position on the current line. -Give as \fBsmir\fR the sequence to get into insert mode. -Give as \fBrmir\fR the sequence to leave insert mode. -Now give as \fBich1\fR any sequence needed to be sent just before sending -the character to be inserted. -Most terminals with a true insert mode -will not give \fBich1\fR; terminals which send a sequence to open a screen -position should give it here. -.PP -If your terminal has both, insert mode is usually preferable to \fBich1\fR. -Technically, you should not give both unless the terminal actually requires -both to be used in combination. -Accordingly, some non-curses applications get -confused if both are present; the symptom is doubled characters in an update -using insert. -This requirement is now rare; most \fBich\fR sequences do not -require previous smir, and most smir insert modes do not require \fBich1\fR -before each character. -Therefore, the new \fBcurses\fR actually assumes this -is the case and uses either \fBrmir\fR/\fBsmir\fR or \fBich\fR/\fBich1\fR as -appropriate (but not both). -If you have to write an entry to be used under -new curses for a terminal old enough to need both, include the -\fBrmir\fR/\fBsmir\fR sequences in \fBich1\fR. -.PP -If post insert padding is needed, give this as a number of milliseconds -in \fBip\fR (a string option). -Any other sequence which may need to be -sent after an insert of a single character may also be given in \fBip\fR. -If your terminal needs both to be placed into an `insert mode' and -a special code to precede each inserted character, then both -.BR smir / rmir -and -.B ich1 -can be given, and both will be used. -The -.B ich -capability, with one parameter, -.IR n , -will repeat the effects of -.B ich1 -.I n -times. -.PP -If padding is necessary between characters typed while not -in insert mode, give this as a number of milliseconds padding in \fBrmp\fP. -.PP -It is occasionally necessary to move around while in insert mode -to delete characters on the same line (e.g., if there is a tab after -the insertion position). -If your terminal allows motion while in -insert mode you can give the capability \fBmir\fR to speed up inserting -in this case. -Omitting \fBmir\fR will affect only speed. -Some terminals -(notably Datamedia's) must not have \fBmir\fR because of the way their -insert mode works. -.PP -Finally, you can specify -.B dch1 -to delete a single character, -.B dch -with one parameter, -.IR n , -to delete -.I n characters, -and delete mode by giving \fBsmdc\fR and \fBrmdc\fR -to enter and exit delete mode (any mode the terminal needs to be placed -in for -.B dch1 -to work). -.PP -A command to erase -.I n -characters (equivalent to outputting -.I n -blanks without moving the cursor) -can be given as -.B ech -with one parameter. -.PP -.SS "Highlighting, Underlining, and Visible Bells" -.PP -If your terminal has one or more kinds of display attributes, -these can be represented in a number of different ways. -You should choose one display form as -\f2standout mode\fR, -representing a good, high contrast, easy-on-the-eyes, -format for highlighting error messages and other attention getters. -(If you have a choice, reverse video plus half-bright is good, -or reverse video alone.) -The sequences to enter and exit standout mode -are given as \fBsmso\fR and \fBrmso\fR, respectively. -If the code to change into or out of standout -mode leaves one or even two blank spaces on the screen, -as the TVI 912 and Teleray 1061 do, -then \fBxmc\fR should be given to tell how many spaces are left. -.PP -Codes to begin underlining and end underlining can be given as \fBsmul\fR -and \fBrmul\fR respectively. -If the terminal has a code to underline the current character and move -the cursor one space to the right, -such as the Microterm Mime, -this can be given as \fBuc\fR. -.PP -Other capabilities to enter various highlighting modes include -.B blink -(blinking) -.B bold -(bold or extra bright) -.B dim -(dim or half-bright) -.B invis -(blanking or invisible text) -.B prot -(protected) -.B rev -(reverse video) -.B sgr0 -(turn off -.I all -attribute modes) -.B smacs -(enter alternate character set mode) -and -.B rmacs -(exit alternate character set mode). -Turning on any of these modes singly may or may not turn off other modes. -.PP -If there is a sequence to set arbitrary combinations of modes, -this should be given as -.B sgr -(set attributes), -taking 9 parameters. -Each parameter is either 0 or nonzero, as the corresponding attribute is on or off. -The 9 parameters are, in order: -standout, underline, reverse, blink, dim, bold, blank, protect, alternate -character set. -Not all modes need be supported by -.BR sgr , -only those for which corresponding separate attribute commands exist. -.PP -For example, the DEC vt220 supports most of the modes: -.PP -.TS -center; -l l l -l l l -lw18 lw14 lw18. -\fBtparm parameter attribute escape sequence\fP - -none none \\E[0m -p1 standout \\E[0;1;7m -p2 underline \\E[0;4m -p3 reverse \\E[0;7m -p4 blink \\E[0;5m -p5 dim not available -p6 bold \\E[0;1m -p7 invis \\E[0;8m -p8 protect not used -p9 altcharset ^O (off) ^N (on) -.TE -.PP -We begin each escape sequence by turning off any existing modes, since -there is no quick way to determine whether they are active. -Standout is set up to be the combination of reverse and bold. -The vt220 terminal has a protect mode, -though it is not commonly used in sgr -because it protects characters on the screen from the host's erasures. -The altcharset mode also is different in that it is either ^O or ^N, -depending on whether it is off or on. -If all modes are turned on, the resulting sequence is \\E[0;1;4;5;7;8m^N. -.PP -Some sequences are common to different modes. -For example, ;7 is output when either p1 or p3 is true, that is, if -either standout or reverse modes are turned on. -.PP -Writing out the above sequences, along with their dependencies yields -.PP -.TS -center; -l l l -l l l -lw18 lw14 lw18. -\fBsequence when to output terminfo translation\fP - -\\E[0 always \\E[0 -;1 if p1 or p6 %?%p1%p6%|%t;1%; -;4 if p2 %?%p2%|%t;4%; -;5 if p4 %?%p4%|%t;5%; -;7 if p1 or p3 %?%p1%p3%|%t;7%; -;8 if p7 %?%p7%|%t;8%; -m always m -^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%; -.TE -.PP -Putting this all together into the sgr sequence gives: -.PP -.nf - sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%; - %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;, -.fi -.PP -Remember that if you specify sgr, you must also specify sgr0. -Also, some implementations rely on sgr being given if sgr0 is, -Not all terminfo entries necessarily have an sgr string, however. -Many terminfo entries are derived from termcap entries -which have no sgr string. -The only drawback to adding an sgr string is that termcap also -assumes that sgr0 does not exit alternate character set mode. -.PP -Terminals with the ``magic cookie'' glitch -.RB ( xmc ) -deposit special ``cookies'' when they receive mode-setting sequences, -which affect the display algorithm rather than having extra bits for -each character. -Some terminals, such as the HP 2621, automatically leave standout -mode when they move to a new line or the cursor is addressed. -Programs using standout mode should exit standout mode before -moving the cursor or sending a newline, -unless the -.B msgr -capability, asserting that it is safe to move in standout mode, is present. -.PP -If the terminal has -a way of flashing the screen to indicate an error quietly (a bell replacement) -then this can be given as \fBflash\fR; it must not move the cursor. -.PP -If the cursor needs to be made more visible than normal when it is -not on the bottom line (to make, for example, a non-blinking underline into an -easier to find block or blinking underline) -give this sequence as -.BR cvvis . -If there is a way to make the cursor completely invisible, give that as -.BR civis . -The capability -.BR cnorm -should be given which undoes the effects of both of these modes. -.PP -If your terminal correctly generates underlined characters -(with no special codes needed) -even though it does not overstrike, -then you should give the capability \fBul\fR. -If a character overstriking another leaves both characters on the screen, -specify the capability \fBos\fP. -If overstrikes are erasable with a blank, -then this should be indicated by giving \fBeo\fR. -.PP -.SS Keypad and Function Keys -.PP -If the terminal has a keypad that transmits codes when the keys are pressed, -this information can be given. -Note that it is not possible to handle -terminals where the keypad only works in local (this applies, for example, -to the unshifted HP 2621 keys). -If the keypad can be set to transmit or not transmit, -give these codes as \fBsmkx\fR and \fBrmkx\fR. -Otherwise the keypad is assumed to always transmit. -The codes sent by the left arrow, right arrow, up arrow, down arrow, -and home keys can be given as -\fBkcub1, kcuf1, kcuu1, kcud1, \fRand\fB khome\fR respectively. -If there are function keys such as f0, f1, ..., f10, the codes they send -can be given as \fBkf0, kf1, ..., kf10\fR. -If these keys have labels other than the default f0 through f10, the labels -can be given as \fBlf0, lf1, ..., lf10\fR. -The codes transmitted by certain other special keys can be given: -.B kll -(home down), -.B kbs -(backspace), -.B ktbc -(clear all tabs), -.B kctab -(clear the tab stop in this column), -.B kclr -(clear screen or erase key), -.B kdch1 -(delete character), -.B kdl1 -(delete line), -.B krmir -(exit insert mode), -.B kel -(clear to end of line), -.B ked -(clear to end of screen), -.B kich1 -(insert character or enter insert mode), -.B kil1 -(insert line), -.B knp -(next page), -.B kpp -(previous page), -.B kind -(scroll forward/down), -.B kri -(scroll backward/up), -.B khts -(set a tab stop in this column). -In addition, if the keypad has a 3 by 3 array of keys including the four -arrow keys, the other five keys can be given as -.BR ka1 , -.BR ka3 , -.BR kb2 , -.BR kc1 , -and -.BR kc3 . -These keys are useful when the effects of a 3 by 3 directional pad are needed. -.PP -Strings to program function keys can be given as -.BR pfkey , -.BR pfloc , -and -.BR pfx . -A string to program screen labels should be specified as \fBpln\fP. -Each of these strings takes two parameters: the function key number to -program (from 0 to 10) and the string to program it with. -Function key numbers out of this range may program undefined keys in -a terminal dependent manner. -The difference between the capabilities is that -.B pfkey -causes pressing the given key to be the same as the user typing the -given string; -.B pfloc -causes the string to be executed by the terminal in local; and -.B pfx -causes the string to be transmitted to the computer. -.PP -The capabilities \fBnlab\fP, \fBlw\fP and \fBlh\fP -define the number of programmable -screen labels and their width and height. -If there are commands to turn the labels on and off, -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. -.PP -.SS Tabs and Initialization -.PP -If the terminal has hardware tabs, the command to advance to the next -tab stop can be given as -.B ht -(usually control I). -A ``back-tab'' command which moves leftward to the preceding tab stop can -be given as -.BR cbt . -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 -or -.B cbt -even if they are present, since the user may not have the tab stops -properly set. -If the terminal has hardware tabs which are initially set 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. -This is normally used by the -.IR tset -command to determine whether to set the mode for hardware tab expansion, -and whether to set the tab stops. -If the terminal has tab stops that can be saved in non-volatile memory, -the terminfo description can assume that they are properly set. -.PP -Other capabilities -include -.BR is1 , -.BR is2 , -and -.BR is3 , -initialization strings for the terminal, -.BR iprog , -the path name of a program to be run to initialize the terminal, -and \fBif\fR, the name of a file containing long initialization strings. -These strings are expected to set the terminal into modes consistent -with the rest of the terminfo description. -They are normally sent to the terminal, by the -.I init -option of the -.IR @TPUT@ -program, each time the user logs in. -They will be printed in the following order: -.RS -.TP -run the program -.BR iprog -.TP -output -.BR is1 -.BR is2 -.TP -set the margins using -.BR mgc , -.BR smgl -and -.BR smgr -.TP -set tabs using -.B tbc -and -.BR hts -.TP -print the file -.BR if -.TP -and finally -output -.BR is3 . -.RE -.PP -Most initialization is done with -.BR is2 . -Special terminal modes can be set up without duplicating strings -by putting the common sequences in -.B is2 -and special cases in -.B is1 -and -.BR is3 . -.PP -A set of sequences that does a harder reset from a totally unknown state -can be given as -.BR rs1 , -.BR rs2 , -.BR rf -and -.BR rs3 , -analogous to -.B is1 , -.B is2 , -.B if -and -.BR is3 -respectively. -These strings are output by the -.IR reset -program, which is used when the terminal gets into a wedged state. -Commands are normally placed in -.BR rs1 , -.BR rs2 -.B rs3 -and -.B rf -only if they produce annoying effects on the screen and are not -necessary when logging in. -For example, the command to set the vt100 into 80-column mode would -normally be part of -.BR is2 , -but it causes an annoying glitch of the screen and is not normally -needed since the terminal is usually already in 80 column mode. -.PP -The -.IR reset -program writes strings -including -.BR iprog , -etc., in the same order as the -.IR init -program, using -.BR rs1 , -etc., instead of -.BR is1 , -etc. -If any of -.BR rs1 , -.BR rs2 , -.BR rs3 , -or -.BR rf -reset capability strings are missing, the -.IR reset -program falls back upon the corresponding initialization capability string. -.PP -If there are commands to set and clear tab stops, they can be given as -.B tbc -(clear all tab stops) -and -.B hts -(set a tab stop in the current column of every row). -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 -or -.BR if . -.SS Delays and Padding -.PP -Many older and slower terminals do not support either XON/XOFF or DTR -handshaking, including hard copy terminals and some very archaic CRTs -(including, for example, DEC VT100s). -These may require padding characters -after certain cursor motions and screen changes. -.PP -If the terminal uses xon/xoff handshaking for flow control (that is, -it automatically emits ^S back to the host when its input buffers are -close to full), set -.BR xon . -This capability suppresses the emission of padding. -You can also set it -for memory-mapped console devices effectively that do not have a speed limit. -Padding information should still be included so that routines can -make better decisions about relative costs, but actual pad characters will -not be transmitted. -.PP -If \fBpb\fR (padding baud rate) is given, padding is suppressed at baud rates -below the value of \fBpb\fR. -If the entry has no padding baud rate, then -whether padding is emitted or not is completely controlled by \fBxon\fR. -.PP -If the terminal requires other than a null (zero) character as a pad, -then this can be given as \fBpad\fR. -Only the first character of the -.B pad -string is used. -.PP -.SS Status Lines -Some terminals have an extra `status line' which is not normally used by -software (and thus not counted in the terminal's \fBlines\fR capability). -.PP -The simplest case is a status line which is cursor-addressable but not -part of the main scrolling region on the screen; the Heathkit H19 has -a status line of this kind, as would a 24-line VT100 with a 23-line -scrolling region set up on initialization. -This situation is indicated -by the \fBhs\fR capability. -.PP -Some terminals with status lines need special sequences to access the -status line. -These may be expressed as a string with single parameter -\fBtsl\fR which takes the cursor to a given zero-origin column on the -status line. -The capability \fBfsl\fR must return to the main-screen -cursor positions before the last \fBtsl\fR. -You may need to embed the -string values of \fBsc\fR (save cursor) and \fBrc\fR (restore cursor) -in \fBtsl\fR and \fBfsl\fR to accomplish this. -.PP -The status line is normally assumed to be the same width as the width -of the terminal. -If this is untrue, you can specify it with the numeric -capability \fBwsl\fR. -.PP -A command to erase or blank the status line may be specified as \fBdsl\fR. -.PP -The boolean capability \fBeslok\fR specifies that escape sequences, tabs, -etc., work ordinarily in the status line. -.PP -The \fBncurses\fR implementation does not yet use any of these capabilities. -They are documented here in case they ever become important. -.PP -.SS Line Graphics -.PP -Many terminals have alternate character sets useful for forms-drawing. -Terminfo and \fBcurses\fR build in support for the drawing characters -supported by the VT100, with some characters from the AT&T 4410v1 added. -This alternate character set may be specified by the \fBacsc\fR capability. -.PP -.TS H -center expand; -l l l l -l l l l -lw25 lw10 lw6 lw6. -.\".TH -\fBGlyph ACS Ascii VT100\fR -\fBName Name Default Name\fR -UK pound sign ACS_STERLING f } -arrow pointing down ACS_DARROW v . -arrow pointing left ACS_LARROW < , -arrow pointing right ACS_RARROW > + -arrow pointing up ACS_UARROW ^ \- -board of squares ACS_BOARD # h -bullet ACS_BULLET o ~ -checker board (stipple) ACS_CKBOARD : a -degree symbol ACS_DEGREE \e f -diamond ACS_DIAMOND + ` -greater-than-or-equal-to ACS_GEQUAL > z -greek pi ACS_PI * { -horizontal line ACS_HLINE \- q -lantern symbol ACS_LANTERN # i -large plus or crossover ACS_PLUS + n -less-than-or-equal-to ACS_LEQUAL < y -lower left corner ACS_LLCORNER + m -lower right corner ACS_LRCORNER + j -not-equal ACS_NEQUAL ! | -plus/minus ACS_PLMINUS # g -scan line 1 ACS_S1 ~ o -scan line 3 ACS_S3 \- p -scan line 7 ACS_S7 \- r -scan line 9 ACS_S9 \&_ s -solid square block ACS_BLOCK # 0 -tee pointing down ACS_TTEE + w -tee pointing left ACS_RTEE + u -tee pointing right ACS_LTEE + t -tee pointing up ACS_BTEE + v -upper left corner ACS_ULCORNER + l -upper right corner ACS_URCORNER + k -vertical line ACS_VLINE | x -.TE -.PP -The best way to define a new device's graphics set is to add a column -to a copy of this table for your terminal, giving the character which -(when emitted between \fBsmacs\fR/\fBrmacs\fR switches) will be rendered -as the corresponding graphic. -Then read off the VT100/your terminal -character pairs right to left in sequence; these become the ACSC string. -.PP -.SS Color Handling -.PP -Most color terminals are either `Tektronix-like' or `HP-like'. -Tektronix-like -terminals have a predefined set of N colors (where N usually 8), and can set -character-cell foreground and background characters independently, mixing them -into N\ *\ N color-pairs. -On HP-like terminals, the use must set each color -pair up separately (foreground and background are not independently settable). -Up to M color-pairs may be set up from 2*M different colors. -ANSI-compatible -terminals are Tektronix-like. -.PP -Some basic color capabilities are independent of the color method. -The numeric -capabilities \fBcolors\fR and \fBpairs\fR specify the maximum numbers of colors -and color-pairs that can be displayed simultaneously. -The \fBop\fR (original -pair) string resets foreground and background colors to their default values -for the terminal. -The \fBoc\fR 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\fR. -.PP -To change the current foreground or background color on a Tektronix-type -terminal, use \fBsetaf\fR (set ANSI foreground) and \fBsetab\fR (set ANSI -background) or \fBsetf\fR (set foreground) and \fBsetb\fR (set background). -These take one parameter, the color number. -The SVr4 documentation describes -only \fBsetaf\fR/\fBsetab\fR; the XPG4 draft says that "If the terminal -supports ANSI escape sequences to set background and foreground, they should -be coded as \fBsetaf\fR and \fBsetab\fR, respectively. -If the terminal -supports other escape sequences to set background and foreground, they should -be coded as \fBsetf\fR and \fBsetb\fR, respectively. -The \fIvidputs()\fR -function and the refresh functions use \fBsetaf\fR and \fBsetab\fR if they are -defined." -.PP -The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a -single numeric argument each. -Argument values 0-7 of \fBsetaf\fR/\fBsetab\fR are portably defined as -follows (the middle column is the symbolic #define available in the header for -the \fBcurses\fR or \fBncurses\fR libraries). -The terminal hardware is free to -map these as it likes, but the RGB values indicate normal locations in color -space. -.PP -.TS H -center; -l c c c -l l n l. -\fBColor #define Value RGB\fR -black \fBCOLOR_BLACK\fR 0 0, 0, 0 -red \fBCOLOR_RED\ \fR 1 max,0,0 -green \fBCOLOR_GREEN\fR 2 0,max,0 -yellow \fBCOLOR_YELLOW\fR 3 max,max,0 -blue \fBCOLOR_BLUE\fR 4 0,0,max -magenta \fBCOLOR_MAGENTA\fR 5 max,0,max -cyan \fBCOLOR_CYAN\fR 6 0,max,max -white \fBCOLOR_WHITE\fR 7 max,max,max -.TE -.PP -The argument values of \fBsetf\fR/\fBsetb\fR historically correspond to -a different mapping, i.e., -.TS H -center; -l c c c -l l n l. -\fBColor #define Value RGB\fR -black \fBCOLOR_BLACK\fR 0 0, 0, 0 -blue \fBCOLOR_BLUE\fR 1 0,0,max -green \fBCOLOR_GREEN\fR 2 0,max,0 -cyan \fBCOLOR_CYAN\fR 3 0,max,max -red \fBCOLOR_RED\ \fR 4 max,0,0 -magenta \fBCOLOR_MAGENTA\fR 5 max,0,max -yellow \fBCOLOR_YELLOW\fR 6 max,max,0 -white \fBCOLOR_WHITE\fR 7 max,max,max -.TE -It is important to not confuse the two sets of color capabilities; -otherwise red/blue will be interchanged on the display. -.PP -On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set -which color pair is current. -.PP -On a Tektronix-like terminal, the capability \fBccc\fR may be present to -indicate that colors can be modified. -If so, the \fBinitc\fR capability will -take a color number (0 to \fBcolors\fR \- 1)and three more parameters which -describe the color. -These three parameters default to being interpreted as RGB -(Red, Green, Blue) values. -If the boolean capability \fBhls\fR is present, -they are instead as HLS (Hue, Lightness, Saturation) indices. -The ranges are -terminal-dependent. -.PP -On an HP-like terminal, \fBinitp\fR may give a capability for changing a -color-pair value. -It will take seven parameters; a color-pair number (0 to -\fBmax_pairs\fR \- 1), and two triples describing first background and then -foreground colors. -These parameters must be (Red, Green, Blue) or -(Hue, Lightness, Saturation) depending on \fBhls\fR. -.PP -On some color terminals, colors collide with highlights. -You can register -these collisions with the \fBncv\fR capability. -This is a bit-mask of -attributes not to be used when colors are enabled. -The correspondence with the -attributes understood by \fBcurses\fR is as follows: -.PP -.TS -center; -l c c -lw25 lw2 lw10. -\fBAttribute Bit Decimal\fR -A_STANDOUT 0 1 -A_UNDERLINE 1 2 -A_REVERSE 2 4 -A_BLINK 3 8 -A_DIM 4 16 -A_BOLD 5 32 -A_INVIS 6 64 -A_PROTECT 7 128 -A_ALTCHARSET 8 256 -.TE -.PP -For example, on many IBM PC consoles, the underline attribute collides with the -foreground color blue and is not available in color mode. -These should have -an \fBncv\fR capability of 2. -.PP -SVr4 curses does nothing with \fBncv\fR, ncurses recognizes it and optimizes -the output in favor of colors. -.PP -.SS Miscellaneous -If the terminal requires other than a null (zero) character as a pad, then this -can be given as pad. -Only the first character of the pad string is used. -If the terminal does not have a pad character, specify npc. -Note that ncurses implements the termcap-compatible \fBPC\fR variable; -though the application may set this value to something other than -a null, ncurses will test \fBnpc\fR first and use napms if the terminal -has no pad character. -.PP -If the terminal can move up or down half a line, -this can be indicated with -.B hu -(half-line up) -and -.B hd -(half-line down). -This is primarily useful for superscripts and subscripts on hard-copy terminals. -If a hard-copy terminal can eject to the next page (form feed), give this as -.B ff -(usually control L). -.PP -If there is a command to repeat a given character a given number of -times (to save time transmitting a large number of identical characters) -this can be indicated with the parameterized string -.BR rep . -The first parameter is the character to be repeated and the second -is the number of times to repeat it. -Thus, tparm(repeat_char, 'x', 10) is the same as `xxxxxxxxxx'. -.PP -If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025, -this can be indicated with -.BR cmdch . -A prototype command character is chosen which is used in all capabilities. -This character is given in the -.B cmdch -capability to identify it. -The following convention is supported on some UNIX systems: -The environment is to be searched for a -.B CC -variable, and if found, all -occurrences of the prototype character are replaced with the character -in the environment variable. -.PP -Terminal descriptions that do not represent a specific kind of known -terminal, such as -.IR switch , -.IR dialup , -.IR patch , -and -.IR network , -should include the -.B gn -(generic) capability so that programs can complain that they do not know -how to talk to the terminal. -(This capability does not apply to -.I virtual -terminal descriptions for which the escape sequences are known.) -.PP -If the terminal has a ``meta key'' which acts as a shift key, -setting the 8th bit of any character transmitted, this fact can -be indicated with -.BR km . -Otherwise, software will assume that the 8th bit is parity and it -will usually be cleared. -If strings exist to turn this ``meta mode'' on and off, they -can be given as -.B smm -and -.BR rmm . -.PP -If the terminal has more lines of memory than will fit on the screen -at once, the number of lines of memory can be indicated with -.BR lm . -A value of -.BR lm #0 -indicates that the number of lines is not fixed, -but that there is still more memory than fits on the screen. -.PP -If the terminal is one of those supported by the \s-1UNIX\s+1 virtual -terminal protocol, the terminal number can be given as -.BR vt . -.PP -Media copy -strings which control an auxiliary printer connected to the terminal -can be given as -.BR mc0 : -print the contents of the screen, -.BR mc4 : -turn off the printer, and -.BR mc5 : -turn on the printer. -When the printer is on, all text sent to the terminal will be sent -to the printer. -It is undefined whether the text is also displayed on the terminal screen -when the printer is on. -A variation -.B mc5p -takes one parameter, and leaves the printer on for as many characters -as the value of the parameter, then turns the printer off. -The parameter should not exceed 255. -All text, including -.BR mc4 , -is transparently passed to the printer while an -.B mc5p -is in effect. -.PP -.SS Glitches and Braindamage -.PP -Hazeltine terminals, which do not allow `~' characters to be displayed should -indicate \fBhz\fR. -.PP -Terminals which ignore a line-feed immediately after an \fBam\fR wrap, -such as the Concept and vt100, -should indicate \fBxenl\fR. -.PP -If -.B el -is required to get rid of standout -(instead of merely writing normal text on top of it), -\fBxhp\fP should be given. -.PP -Teleray terminals, where tabs turn all characters moved over to blanks, -should indicate \fBxt\fR (destructive tabs). -Note: the variable indicating this is now `dest_tabs_magic_smso'; in -older versions, it was teleray_glitch. -This glitch is also taken to mean that it is not possible to position -the cursor on top of a ``magic cookie'', -that to erase standout mode it is instead necessary to use -delete and insert line. -The ncurses implementation ignores this glitch. -.PP -The Beehive Superbee, which is unable to correctly transmit the escape -or control C characters, has -.BR xsb , -indicating that the f1 key is used for escape and f2 for control C. -(Only certain Superbees have this problem, depending on the ROM.) -Note that in older terminfo versions, this capability was called -`beehive_glitch'; it is now `no_esc_ctl_c'. -.PP -Other specific terminal problems may be corrected by adding more -capabilities of the form \fBx\fR\fIx\fR. -.PP -.SS Similar Terminals -.PP -If there are two very similar terminals, one (the variant) can be defined as -being just like the other (the base) with certain exceptions. -In the -definition of the variant, the string capability \fBuse\fR can be given with -the name of the base terminal. -The capabilities given before -.B use -override those in the base type named by -.BR use . -If there are multiple \fBuse\fR capabilities, they are merged in reverse order. -That is, the rightmost \fBuse\fR reference is processed first, then the one to -its left, and so forth. -Capabilities given explicitly in the entry override -those brought in by \fBuse\fR references. -.PP -A capability can be canceled by placing \fBxx@\fR to the left of the -use reference that imports it, where \fIxx\fP is the capability. -For example, the entry -.PP - 2621\-nl, smkx@, rmkx@, use=2621, -.PP -defines a 2621\-nl that does not have the \fBsmkx\fR or \fBrmkx\fR capabilities, -and hence does not turn on the function key labels when in visual mode. -This is useful for different modes for a terminal, or for different -user preferences. -.PP -.SS Pitfalls of Long Entries -.PP -Long terminfo entries are unlikely to be a problem; to date, no entry has even -approached terminfo's 4096-byte string-table maximum. -Unfortunately, the termcap -translations are much more strictly limited (to 1023 bytes), thus termcap translations -of long terminfo entries can cause problems. -.PP -The man pages for 4.3BSD and older versions of \fBtgetent()\fP instruct the user to -allocate a 1024-byte buffer for the termcap entry. -The entry gets null-terminated by -the termcap library, so that makes the maximum safe length for a termcap entry -1k\-1 (1023) bytes. -Depending on what the application and the termcap library -being used does, and where in the termcap file the terminal type that \fBtgetent()\fP -is searching for is, several bad things can happen. -.PP -Some termcap libraries print a warning message or exit if they find an -entry that's longer than 1023 bytes; others do not; others truncate the -entries to 1023 bytes. -Some application programs allocate more than -the recommended 1K for the termcap entry; others do not. -.PP -Each termcap entry has two important sizes associated with it: before -"tc" expansion, and after "tc" expansion. -"tc" is the capability that -tacks on another termcap entry to the end of the current one, to add -on its capabilities. -If a termcap entry does not use the "tc" -capability, then of course the two lengths are the same. -.PP -The "before tc expansion" length is the most important one, because it -affects more than just users of that particular terminal. -This is the -length of the entry as it exists in /etc/termcap, minus the -backslash-newline pairs, which \fBtgetent()\fP strips out while reading it. -Some termcap libraries strip off the final newline, too (GNU termcap does not). -Now suppose: -.TP 5 -* -a termcap entry before expansion is more than 1023 bytes long, -.TP 5 -* -and the application has only allocated a 1k buffer, -.TP 5 -* -and the termcap library (like the one in BSD/OS 1.1 and GNU) reads -the whole entry into the buffer, no matter what its length, to see -if it is the entry it wants, -.TP 5 -* -and \fBtgetent()\fP is searching for a terminal type that either is the -long entry, appears in the termcap file after the long entry, or -does not appear in the file at all (so that \fBtgetent()\fP has to search -the whole termcap file). -.PP -Then \fBtgetent()\fP will overwrite memory, perhaps its stack, and probably core dump -the program. -Programs like telnet are particularly vulnerable; modern telnets -pass along values like the terminal type automatically. -The results are almost -as undesirable with a termcap library, like SunOS 4.1.3 and Ultrix 4.4, that -prints warning messages when it reads an overly long termcap entry. -If a -termcap library truncates long entries, like OSF/1 3.0, it is immune to dying -here but will return incorrect data for the terminal. -.PP -The "after tc expansion" length will have a similar effect to the -above, but only for people who actually set TERM to that terminal -type, since \fBtgetent()\fP only does "tc" expansion once it is found the -terminal type it was looking for, not while searching. -.PP -In summary, a termcap entry that is longer than 1023 bytes can cause, -on various combinations of termcap libraries and applications, a core -dump, warnings, or incorrect operation. -If it is too long even before -"tc" expansion, it will have this effect even for users of some other -terminal types and users whose TERM variable does not have a termcap -entry. -.PP -When in \-C (translate to termcap) mode, the \fBncurses\fR implementation of -\fB@TIC@\fR(1M) issues warning messages when the pre-tc length of a termcap -translation is too long. -The \-c (check) option also checks resolved (after tc -expansion) lengths. -.SS Binary Compatibility -It is not wise to count on portability of binary terminfo entries between -commercial UNIX versions. -The problem is that there are at least two versions -of terminfo (under HP\-UX and AIX) 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 XSI Curses extensions. -.SH EXTENSIONS -Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, do not -interpret the %A and %O operators in parameter strings. -.PP -SVr4/XPG4 do not specify whether \fBmsgr\fR licenses movement while in -an alternate-character-set mode (such modes may, among other things, map -CR and NL to characters that do not trigger local motions). -The \fBncurses\fR implementation ignores \fBmsgr\fR in \fBALTCHARSET\fR -mode. -This raises the possibility that an XPG4 -implementation making the opposite interpretation may need terminfo -entries made for \fBncurses\fR to have \fBmsgr\fR turned off. -.PP -The \fBncurses\fR library handles insert-character and insert-character modes -in a slightly non-standard way to get better update efficiency. -See -the \fBInsert/Delete Character\fR subsection above. -.PP -The parameter substitutions for \fBset_clock\fR and \fBdisplay_clock\fR are -not documented in SVr4 or the XSI Curses standard. -They are deduced from the -documentation for the AT&T 505 terminal. -.PP -Be careful assigning the \fBkmous\fR capability. -The \fBncurses\fR wants to -interpret it as \fBKEY_MOUSE\fR, for use by terminals and emulators like xterm -that can return mouse-tracking information in the keyboard-input stream. -.PP -Different commercial ports of terminfo and curses support different subsets of -the XSI Curses standard and (in some cases) different extension sets. -Here -is a summary, accurate as of October 1995: -.PP -\fBSVR4, Solaris, ncurses\fR \-\- -These support all SVr4 capabilities. -.PP -\fBSGI\fR \-\- -Supports the SVr4 set, adds one undocumented extended string -capability (\fBset_pglen\fR). -.PP -\fBSVr1, Ultrix\fR \-\- -These support a restricted subset of terminfo capabilities. -The booleans -end with \fBxon_xoff\fR; the numerics with \fBwidth_status_line\fR; and the -strings with \fBprtr_non\fR. -.PP -\fBHP/UX\fR \-\- -Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fR, -\fBlabel_height\fR, \fBlabel_width\fR, plus function keys 11 through 63, plus -\fBplab_norm\fR, \fBlabel_on\fR, and \fBlabel_off\fR, plus some incompatible -extensions in the string table. -.PP -\fBAIX\fR \-\- -Supports the SVr1 subset, plus function keys 11 through 63, plus a number -of incompatible string table extensions. -.PP -\fBOSF\fR \-\- -Supports both the SVr4 set and the AIX extensions. -.SH FILES -.TP 25 -\*d/?/* -files containing terminal descriptions -.SH SEE ALSO -\fB@TIC@\fR(1M), -\fB@INFOCMP@\fR(1M), -\fBcurses\fR(3X), -\fBprintf\fR(3), -\fBterm\fR(\*n). -\fBterm_variables\fR(3X). -.SH AUTHORS -Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. -Based on pcurses by Pavel Curtis. diff --git a/deps/ncurses-5.9/man/terminfo.head b/deps/ncurses-5.9/man/terminfo.head deleted file mode 100644 index da8284c..0000000 --- a/deps/ncurses-5.9/man/terminfo.head +++ /dev/null @@ -1,107 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2009,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: terminfo.head,v 1.18 2010/07/31 16:08:48 tom Exp $ -.TH terminfo 5 "" "" "File Formats" -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -terminfo \- terminal capability data base -.SH SYNOPSIS -\*d/*/* -.SH DESCRIPTION -.I Terminfo -is a data base describing terminals, used by screen-oriented programs such as -\fBnvi\fR(1), -\fBrogue\fR(1) -and libraries such as -\fBcurses\fR(3X). -.I Terminfo -describes terminals by giving a set of capabilities which they -have, by specifying how to perform screen operations, and by -specifying padding requirements and initialization sequences. -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). -.PP -Entries in -.I terminfo -consist of a sequence of `,' separated fields (embedded commas may be -escaped with a backslash or notated as \\054). -White space after the `,' separator is ignored. -The first entry for each terminal gives the names which are known for the -terminal, separated by `|' characters. -The first name given is the most common abbreviation for the terminal, -the last name given should be a long name fully identifying the terminal, -and all others are understood as synonyms for the terminal name. -All names but the last should be in lower case and contain no blanks; -the last name may well contain upper case and blanks for readability. -.PP -Lines beginning with a `#' in the first column are treated as comments. -While comment lines are legal at any point, the output of \fB@CAPTOINFO@\fP -and \fB@INFOTOCAP@\fP (aliases for \fB@TIC@\fP) -will move comments so they occur only between entries. -.PP -Newlines and leading tabs may be used for formatting entries for readability. -These are removed from parsed entries. -The \fB@INFOCMP@\ \-f\fP option relies on this to format if-then-else expressions: -the result can be read by \fB@TIC@\fP. -.PP -Terminal names (except for the last, verbose entry) should -be chosen using the following conventions. -The particular piece of hardware making up the terminal should -have a root name, thus ``hp2621''. -This name should not contain hyphens. -Modes that the hardware can be in, or user preferences, should -be indicated by appending a hyphen and a mode suffix. -Thus, a vt100 in 132 column mode would be vt100\-w. -The following suffixes should be used where possible: -.PP -.TS -center ; -l c l -l l l. -\fBSuffix Meaning Example\fP -\-\fInn\fP Number of lines on the screen aaa\-60 -\-\fIn\fPp Number of pages of memory c100\-4p -\-am With automargins (usually the default) vt100\-am -\-m Mono mode; suppress color ansi\-m -\-mc Magic cookie; spaces when highlighting wy30\-mc -\-na No arrow keys (leave them in local) c100\-na -\-nam Without automatic margins vt100\-nam -\-nl No status line att4415\-nl -\-ns No status line hp2626\-ns -\-rv Reverse video c100\-rv -\-s Enable status line vt100\-s -\-vb Use visible bell instead of beep wy370\-vb -\-w Wide mode (> 80 columns, usually 132) vt100\-w -.TE -.PP -For more on terminal naming conventions, see the \fBterm(7)\fR manual page. -.SS Capabilities -.\" Head of terminfo man page ends here -.ps -1 diff --git a/deps/ncurses-5.9/man/terminfo.tail b/deps/ncurses-5.9/man/terminfo.tail deleted file mode 100644 index 4b56e91..0000000 --- a/deps/ncurses-5.9/man/terminfo.tail +++ /dev/null @@ -1,1698 +0,0 @@ -.\" $Id: terminfo.tail,v 1.53 2010/12/04 18:38:55 tom Exp $ -.\" Beginning of terminfo.tail file -.\" This file is part of ncurses. -.\" See "terminfo.head" for copyright. -.ps +1 -. -.SS A Sample Entry -. -The following entry, describing an ANSI-standard terminal, is representative -of what a \fBterminfo\fR entry for a modern terminal typically looks like. -.PP -.nf -.in -2 -.ta .3i -.ft CW -\s-2ansi|ansi/pc-term compatible with color, - mc5i, - colors#8, ncv#3, pairs#64, - cub=\\E[%p1%dD, cud=\\E[%p1%dB, cuf=\\E[%p1%dC, - cuu=\\E[%p1%dA, dch=\\E[%p1%dP, dl=\\E[%p1%dM, - ech=\\E[%p1%dX, el1=\\E[1K, hpa=\\E[%p1%dG, ht=\\E[I, - ich=\\E[%p1%d@, il=\\E[%p1%dL, indn=\\E[%p1%dS, .indn=\\E[%p1%dT, - kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, kcud1=\\E[B, - kcuf1=\\E[C, kcuu1=\\E[A, 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, mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, - op=\\E[37;40m, rep=%p1%c\\E[%p2%{1}%\-%db, - rin=\\E[%p1%dT, s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, - s3ds=\\E+B, 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}%=%t3%e%p1%d%;m, - sgr=\\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p8%t;11%;%?%p9%t;12%;m, - sgr0=\\E[0;10m, tbc=\\E[2g, u6=\\E[%d;%dR, u7=\\E[6n, - u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%p1%dd,\s+2 -.in +2 -.fi -.ft R -.PP -Entries may continue onto multiple lines by placing white space at -the beginning of each line except the first. -Comments may be included on lines beginning with ``#''. -Capabilities in -.I terminfo -are of three types: -Boolean capabilities which indicate that the terminal has -some particular feature, numeric capabilities giving the size of the terminal -or the size of particular delays, and string -capabilities, which give a sequence which can be used to perform particular -terminal operations. -.PP -.SS Types of Capabilities -.PP -All capabilities have names. -For instance, the fact that -ANSI-standard terminals have -.I "automatic margins" -(i.e., an automatic return and line-feed -when the end of a line is reached) is indicated by the capability \fBam\fR. -Hence the description of ansi includes \fBam\fR. -Numeric capabilities are followed by the character `#' and then a positive value. -Thus \fBcols\fR, which indicates the number of columns the terminal has, -gives the value `80' for ansi. -Values for numeric capabilities may be specified in decimal, octal or hexadecimal, -using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF). -.PP -Finally, string valued capabilities, such as \fBel\fR (clear to end of line -sequence) are given by the two-character code, an `=', and then a string -ending at the next following `,'. -.PP -A number of escape sequences are provided in the string valued capabilities -for easy encoding of characters there. -Both \fB\eE\fR and \fB\ee\fR -map to an \s-1ESCAPE\s0 character, -\fB^x\fR maps to a control-x for any appropriate x, and the sequences -\fB\en \el \er \et \eb \ef \es\fR give -a newline, line-feed, return, tab, backspace, form-feed, and space. -Other escapes include \fB\e^\fR for \fB^\fR, -\fB\e\e\fR for \fB\e\fR, -\fB\e\fR, for comma, -\fB\e:\fR for \fB:\fR, -and \fB\e0\fR for null. -(\fB\e0\fR will produce \e200, which does not terminate a string but behaves -as a null character on most terminals, providing CS7 is specified. -See stty(1).) -Finally, characters may be given as three octal digits after a \fB\e\fR. -.PP -A delay in milliseconds may appear anywhere in a string capability, enclosed in -$<..> brackets, as in \fBel\fP=\eEK$<5>, and padding characters are supplied by -.I tputs -to provide this delay. -The delay must be a number with at most one decimal -place of precision; it may be followed by suffixes `*' or '/' or both. -A `*' -indicates that the padding required is proportional to the number of lines -affected by the operation, and the amount given is the per-affected-unit -padding required. -(In the case of insert character, the factor is still the -number of -.IR lines -affected.) Normally, padding is advisory if the device has the \fBxon\fR -capability; it is used for cost computation but does not trigger delays. -A `/' -suffix indicates that the padding is mandatory and forces a delay of the given -number of milliseconds even on devices for which \fBxon\fR is present to -indicate flow control. -.PP -Sometimes individual capabilities must be commented out. -To do this, put a period before the capability name. -For example, see the second -.B ind -in the example above. -.br -.ne 5 -.PP -.SS Fetching Compiled Descriptions -.PP -If the environment variable TERMINFO is set, it is interpreted as the pathname -of a directory containing the compiled description you are working on. -Only -that directory is searched. -.PP -If TERMINFO is not set, the \fBncurses\fR version of the terminfo reader code -will instead look in the directory \fB$HOME/.terminfo\fR -for a compiled description. -If it fails to find one there, and the environment variable TERMINFO_DIRS is -set, it will interpret the contents of that variable as a list of colon- -separated directories to be searched (an empty entry is interpreted as a -command to search \fI\*d\fR). -If no description is found in any of the -TERMINFO_DIRS directories, the fetch fails. -.PP -If neither TERMINFO nor TERMINFO_DIRS is set, the last place tried will be the -system terminfo directory, \fI\*d\fR. -.PP -(Neither the \fB$HOME/.terminfo\fR lookups nor TERMINFO_DIRS extensions are -supported under stock System V terminfo/curses.) -.PP -.SS Preparing Descriptions -.PP -We now outline how to prepare descriptions of terminals. -The most effective way to prepare a terminal description is by imitating -the description of a similar terminal in -.I terminfo -and to build up a description gradually, using partial descriptions -with -.I vi -or some other screen-oriented program to check that they are correct. -Be aware that a very unusual terminal may expose deficiencies in -the ability of the -.I terminfo -file to describe it -or bugs in the screen-handling code of the test program. -.PP -To get the padding for insert line right (if the terminal manufacturer -did not document it) a severe test is to edit a large file at 9600 baud, -delete 16 or so lines from the middle of the screen, then hit the `u' -key several times quickly. -If the terminal messes up, more padding is usually needed. -A similar test can be used for insert character. -.PP -.SS Basic Capabilities -.PP -The number of columns on each line for the terminal is given by the -\fBcols\fR numeric capability. -If the terminal is a \s-1CRT\s0, then the -number of lines on the screen is given by the \fBlines\fR capability. -If the terminal wraps around to the beginning of the next line when -it reaches the right margin, then it should have the \fBam\fR capability. -If the terminal can clear its screen, leaving the cursor in the home -position, then this is given by the \fBclear\fR string capability. -If the terminal overstrikes -(rather than clearing a position when a character is struck over) -then it should have the \fBos\fR capability. -If the terminal is a printing terminal, with no soft copy unit, -give it both -.B hc -and -.BR os . -.RB ( os -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 -.BR cr . -(Normally this will be carriage return, control M.) -If there is a code to produce an audible signal (bell, beep, etc) -give this as -.BR bel . -.PP -If there is a code to move the cursor one position to the left -(such as backspace) that capability should be given as -.BR cub1 . -Similarly, codes to move to the right, up, and down should be -given as -.BR cuf1 , -.BR cuu1 , -and -.BR cud1 . -These local cursor motions should not alter the text they pass over, -for example, you would not normally use `\fBcuf1\fP=\ ' because the -space would erase the character moved over. -.PP -A very important point here is that the local cursor motions encoded -in -.I terminfo -are undefined at the left and top edges of a \s-1CRT\s0 terminal. -Programs should never attempt to backspace around the left edge, -unless -.B bw -is given, -and never attempt to go up locally off the top. -In order to scroll text up, a program will go to the bottom left corner -of the screen and send the -.B ind -(index) string. -.PP -To scroll text down, a program goes to the top left corner -of the screen and sends the -.B ri -(reverse index) string. -The strings -.B ind -and -.B ri -are undefined when not on their respective corners of the screen. -.PP -Parameterized versions of the scrolling sequences are -.B indn -and -.B rin -which have the same semantics as -.B ind -and -.B ri -except that they take one parameter, and scroll that many lines. -They are also undefined except at the appropriate edge of the screen. -.PP -The \fBam\fR capability tells whether the cursor sticks at the right -edge of the screen when text is output, but this does not necessarily -apply to a -.B cuf1 -from the last column. -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. -If -.B bw -is not given, the effect is undefined. -This is useful for drawing a box around the edge of the screen, for example. -If the terminal has switch selectable automatic margins, -the -.I terminfo -file usually assumes that this is on; i.e., \fBam\fR. -If the terminal has a command which moves to the first column of the next -line, that command can be given as -.B nel -(newline). -It does not matter if the command clears the remainder of the current line, -so if the terminal has no -.B cr -and -.B lf -it may still be possible to craft a working -.B nel -out of one or both of them. -.PP -These capabilities suffice to describe hard-copy and \*(lqglass-tty\*(rq terminals. -Thus the model 33 teletype is described as -.PP -.DT -.nf -.ft CW -.\".in -2 -\s-133\||\|tty33\||\|tty\||\|model 33 teletype, - bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1 -.\".in +2 -.ft R -.PP -while the Lear Siegler \s-1ADM-3\s0 is described as -.PP -.DT -.nf -.ft CW -.\".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 -.ft R -.fi -.PP -.SS Parameterized Strings -.PP -Cursor addressing and other strings requiring parameters -in the terminal are described by a -parameterized string capability, with -.IR printf (3) -like escapes \fB%x\fR 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 -physical screen visible to the user, not to any unseen memory.) -If the terminal has memory relative cursor addressing, -that can be indicated by -.BR mrcup . -.PP -The parameter mechanism uses a stack and special \fB%\fP codes -to manipulate it. -Typically a sequence will push one of the -parameters onto the stack and then print it in some format. -Print (e.g., "%d") is a special case. -Other operations, including "%t" pop their operand from the stack. -It is noted that more complex operations are often necessary, -e.g., in the \fBsgr\fP string. -.PP -The \fB%\fR encodings have the following meanings: -.PP -.TP 5 -\s-1%% -outputs `%' -.TP -%\fI[[\fP:\fI]flags][width[.precision]][\fPdoxXs\fI]\fP -as in \fBprintf\fP, flags are [\-+#] and space. -Use a `:' to allow the next character to be a `\-' flag, -avoiding interpreting "%\-" as an operator. -.TP -%c -print pop() like %c in \fBprintf\fP -.TP -%s -print pop() like %s in \fBprintf\fP -.TP -%p[1\-9] -push \fIi\fP'th parameter -.TP -%P[a\-z] -set dynamic variable [a\-z] to pop() -.TP -%g[a\-z] -get dynamic variable [a\-z] and push it -.TP -%P[A\-Z] -set static variable [a\-z] to pop() -.TP -%g[A\-Z] -get static variable [a\-z] and push it -.IP -The terms "static" and "dynamic" are misleading. -Historically, these are simply two different sets of variables, -whose values are not reset between calls to \fBtparm\fP. -However, that fact is not documented in other implementations. -Relying on it will adversely impact portability to other implementations. -.TP -%'\fIc\fP' -char constant \fIc\fP -.TP -%{\fInn\fP} -integer constant \fInn\fP -.TP -%l -push strlen(pop) -.TP -%+ %\- %* %/ %m -arithmetic (%m is mod): push(pop() op pop()) -.TP -%& %| %^ -bit operations (AND, OR and exclusive-OR): push(pop() op pop()) -.TP -%= %> %< -logical operations: push(pop() op pop()) -.TP -%A, %O -logical AND and OR operations (for conditionals) -.TP -%! %~ -unary operations (logical and bit complement): push(op pop()) -.TP -%i -add 1 to first two parameters (for ANSI terminals) -.TP -%? \fIexpr\fP %t \fIthenpart\fP %e \fIelsepart\fP %; -This forms an if-then-else. -The %e \fIelsepart\fP is optional. -Usually the %? \fIexpr\fP part pushes a value onto the stack, -and %t pops it from the stack, testing if it is nonzero (true). -If it is zero (false), control passes to the %e (else) part. -.IP -It is possible to form else-if's a la Algol 68: -.RS -%? c\d1\u %t b\d1\u %e c\d2\u %t b\d2\u %e c\d3\u %t b\d3\u %e c\d4\u %t b\d4\u %e %; -.RE -.IP -where c\di\u are conditions, b\di\u are bodies. -.IP -Use the \fB\-f\fP option of \fBtic\fP or \fB@INFOCMP@\fP to see -the structure of if-then-else's. -Some strings, e.g., \fBsgr\fP can be very complicated when written -on one line. -The \fB\-f\fP option splits the string into lines with the parts indented. -.PP -Binary operations are in postfix form with the operands in the usual order. -That is, to get x\-5 one would use "%gx%{5}%-". -%P and %g variables are -persistent across escape-string evaluations. -.PP -Consider the HP2645, which, to get to row 3 and column 12, needs -to be sent \eE&a12c03Y padded for 6 milliseconds. -Note that the order -of the rows and columns is inverted here, and that the row and column -are printed as two digits. -Thus its \fBcup\fR capability is \*(lqcup=6\eE&%p2%2dc%p1%2dY\*(rq. -.PP -The Microterm \s-1ACT-IV\s0 needs the current row and column sent -preceded by a \fB^T\fR, with the row and column simply encoded in binary, -\*(lqcup=^T%p1%c%p2%c\*(rq. -Terminals which use \*(lq%c\*(rq need to be able to -backspace the cursor (\fBcub1\fR), -and to move the cursor up one line on the screen (\fBcuu1\fR). -This is necessary because it is not always safe to transmit \fB\en\fR -\fB^D\fR and \fB\er\fR, as the system may change or discard them. -(The library routines dealing with terminfo set tty modes so that -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 \*(lqcup=\eE=%p1%' '%+%c%p2%' '%+%c\*(rq. -After sending `\eE=', this pushes the first parameter, pushes the -ASCII value for a space (32), adds them (pushing the sum on the stack -in place of the two previous values) and outputs that value as a character. -Then the same is done for the second parameter. -More complex arithmetic is possible using the stack. -.PP -.SS Cursor Motions -.PP -If the terminal has a fast way to home the cursor -(to very upper left corner of screen) then this can be given as -\fBhome\fR; similarly a fast way of getting to the lower left-hand corner -can be given as \fBll\fR; this may involve going up with \fBcuu1\fR -from the home position, -but a program should never do this itself (unless \fBll\fR does) because it -can make no assumption about the effect of moving up from the home position. -Note that the home position is the same as addressing to (0,0): -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, -these can be given as single parameter capabilities -.B hpa -(horizontal position absolute) -and -.B vpa -(vertical position absolute). -Sometimes these are shorter than the more general two parameter -sequence (as with the hp2645) and can be used in preference to -.BR cup . -If there are parameterized local motions (e.g., move -.I n -spaces to the right) these can be given as -.BR cud , -.BR cub , -.BR cuf , -and -.BR cuu -with a single parameter indicating how many spaces to move. -These are primarily useful if the terminal does not have -.BR cup , -such as the \s-1TEKTRONIX\s+1 4025. -.PP -If the terminal needs to be in a special mode when running -a program that uses these capabilities, -the codes to enter and exit this mode can be given as \fBsmcup\fR and \fBrmcup\fR. -This arises, for example, from terminals like the Concept with more than -one page of memory. -If the terminal has only memory relative cursor addressing and not screen -relative cursor addressing, a one screen-sized window must be fixed into -the terminal for cursor addressing to work properly. -This is also used for the \s-1TEKTRONIX\s+1 4025, -where -.B smcup -sets the command character to be the one used by terminfo. -If the \fBsmcup\fP sequence will not restore the screen after an -\fBrmcup\fP sequence is output (to the state prior to outputting -\fBrmcup\fP), specify \fBnrrmc\fP. -.PP -.SS Area Clears -.PP -If the terminal can clear from the current position to the end of the -line, leaving the cursor where it is, this should be given as \fBel\fR. -If the terminal can clear from the beginning of the line to the current -position inclusive, leaving -the cursor where it is, this should be given as \fBel1\fP. -If the terminal can clear from the current position to the end of the -display, then this should be given as \fBed\fR. -\fBEd\fR is only defined from the first column of a line. -(Thus, it can be simulated by a request to delete a large number of lines, -if a true -.B ed -is not available.) -.PP -.SS Insert/delete line and vertical motions -.PP -If the terminal can open a new blank line before the line where the cursor -is, this should be given as \fBil1\fR; this is done only from the first -position of a line. -The cursor must then appear on the newly blank line. -If the terminal can delete the line which the cursor is on, then this -should be given as \fBdl1\fR; this is done only from the first position on -the line to be deleted. -Versions of -.B il1 -and -.B dl1 -which take a single parameter and insert or delete that many lines can -be given as -.B il -and -.BR dl . -.PP -If the terminal has a settable scrolling region (like the vt100) -the command to set this can be described with the -.B csr -capability, which takes two parameters: -the top and bottom lines of the scrolling region. -The cursor position is, alas, undefined after using this command. -.PP -It is possible to get the effect of insert or delete line using -.B csr -on a properly chosen region; the -.B sc -and -.B rc -(save and restore cursor) commands may be useful for ensuring that -your synthesized insert/delete string does not move the cursor. -(Note that the \fBncurses\fR(3X) library does this synthesis -automatically, so you need not compose insert/delete strings for -an entry with \fBcsr\fR). -.PP -Yet another way to construct insert and delete might be to use a combination of -index with the memory-lock feature found on some terminals (like the HP\-700/90 -series, which however also has insert/delete). -.PP -Inserting lines at the top or bottom of the screen can also be -done using -.B ri -or -.B ind -on many terminals without a true insert/delete line, -and is often faster even on terminals with those features. -.PP -The boolean \fBnon_dest_scroll_region\fR should be set if each scrolling -window is effectively a view port on a screen-sized canvas. -To test for -this capability, create a scrolling region in the middle of the screen, -write something to the bottom line, move the cursor to the top of the region, -and do \fBri\fR followed by \fBdl1\fR or \fBind\fR. -If the data scrolled -off the bottom of the region by the \fBri\fR re-appears, then scrolling -is non-destructive. -System V and XSI Curses expect that \fBind\fR, \fBri\fR, -\fBindn\fR, and \fBrin\fR will simulate destructive scrolling; their -documentation cautions you not to define \fBcsr\fR unless this is true. -This \fBcurses\fR implementation is more liberal and will do explicit erases -after scrolling if \fBndstr\fR is defined. -.PP -If the terminal has the ability to define a window as part of -memory, which all commands affect, -it should be given as the parameterized string -.BR wind . -The four parameters are the starting and ending lines in memory -and the starting and ending columns in memory, in that order. -.PP -If the terminal can retain display memory above, then the -\fBda\fR capability should be given; if display memory can be retained -below, then \fBdb\fR should be given. -These indicate -that deleting a line or scrolling may bring non-blank lines up from below -or that scrolling back with \fBri\fR may bring down non-blank lines. -.PP -.SS Insert/Delete Character -.PP -There are two basic kinds of intelligent terminals with respect to -insert/delete character which can be described using -.I terminfo. -The most common insert/delete character operations affect only the characters -on the current line and shift characters off the end of the line rigidly. -Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make -a distinction between typed and untyped blanks on the screen, shifting -upon an insert or delete only to an untyped blank on the screen which is -either eliminated, or expanded to two untyped blanks. -You can determine the -kind of terminal you have by clearing the screen and then typing -text separated by cursor motions. -Type \*(lqabc\ \ \ \ def\*(rq using local -cursor motions (not spaces) between the \*(lqabc\*(rq and the \*(lqdef\*(rq. -Then position the cursor before the \*(lqabc\*(rq and put the terminal in insert -mode. -If typing characters causes the rest of the line to shift -rigidly and characters to fall off the end, then your terminal does -not distinguish between blanks and untyped positions. -If the \*(lqabc\*(rq -shifts over to the \*(lqdef\*(rq which then move together around the end of the -current line and onto the next as you insert, you have the second type of -terminal, and should give the capability \fBin\fR, which stands for -\*(lqinsert null\*(rq. -While these are two logically separate attributes (one line versus multi-line -insert mode, and special treatment of untyped spaces) we have seen no -terminals whose insert mode cannot be described with the single attribute. -.PP -Terminfo can describe both terminals which have an insert mode, and terminals -which send a simple sequence to open a blank position on the current line. -Give as \fBsmir\fR the sequence to get into insert mode. -Give as \fBrmir\fR the sequence to leave insert mode. -Now give as \fBich1\fR any sequence needed to be sent just before sending -the character to be inserted. -Most terminals with a true insert mode -will not give \fBich1\fR; terminals which send a sequence to open a screen -position should give it here. -.PP -If your terminal has both, insert mode is usually preferable to \fBich1\fR. -Technically, you should not give both unless the terminal actually requires -both to be used in combination. -Accordingly, some non-curses applications get -confused if both are present; the symptom is doubled characters in an update -using insert. -This requirement is now rare; most \fBich\fR sequences do not -require previous smir, and most smir insert modes do not require \fBich1\fR -before each character. -Therefore, the new \fBcurses\fR actually assumes this -is the case and uses either \fBrmir\fR/\fBsmir\fR or \fBich\fR/\fBich1\fR as -appropriate (but not both). -If you have to write an entry to be used under -new curses for a terminal old enough to need both, include the -\fBrmir\fR/\fBsmir\fR sequences in \fBich1\fR. -.PP -If post insert padding is needed, give this as a number of milliseconds -in \fBip\fR (a string option). -Any other sequence which may need to be -sent after an insert of a single character may also be given in \fBip\fR. -If your terminal needs both to be placed into an `insert mode' and -a special code to precede each inserted character, then both -.BR smir / rmir -and -.B ich1 -can be given, and both will be used. -The -.B ich -capability, with one parameter, -.IR n , -will repeat the effects of -.B ich1 -.I n -times. -.PP -If padding is necessary between characters typed while not -in insert mode, give this as a number of milliseconds padding in \fBrmp\fP. -.PP -It is occasionally necessary to move around while in insert mode -to delete characters on the same line (e.g., if there is a tab after -the insertion position). -If your terminal allows motion while in -insert mode you can give the capability \fBmir\fR to speed up inserting -in this case. -Omitting \fBmir\fR will affect only speed. -Some terminals -(notably Datamedia's) must not have \fBmir\fR because of the way their -insert mode works. -.PP -Finally, you can specify -.B dch1 -to delete a single character, -.B dch -with one parameter, -.IR n , -to delete -.I n characters, -and delete mode by giving \fBsmdc\fR and \fBrmdc\fR -to enter and exit delete mode (any mode the terminal needs to be placed -in for -.B dch1 -to work). -.PP -A command to erase -.I n -characters (equivalent to outputting -.I n -blanks without moving the cursor) -can be given as -.B ech -with one parameter. -.PP -.SS "Highlighting, Underlining, and Visible Bells" -.PP -If your terminal has one or more kinds of display attributes, -these can be represented in a number of different ways. -You should choose one display form as -\f2standout mode\fR, -representing a good, high contrast, easy-on-the-eyes, -format for highlighting error messages and other attention getters. -(If you have a choice, reverse video plus half-bright is good, -or reverse video alone.) -The sequences to enter and exit standout mode -are given as \fBsmso\fR and \fBrmso\fR, respectively. -If the code to change into or out of standout -mode leaves one or even two blank spaces on the screen, -as the TVI 912 and Teleray 1061 do, -then \fBxmc\fR should be given to tell how many spaces are left. -.PP -Codes to begin underlining and end underlining can be given as \fBsmul\fR -and \fBrmul\fR respectively. -If the terminal has a code to underline the current character and move -the cursor one space to the right, -such as the Microterm Mime, -this can be given as \fBuc\fR. -.PP -Other capabilities to enter various highlighting modes include -.B blink -(blinking) -.B bold -(bold or extra bright) -.B dim -(dim or half-bright) -.B invis -(blanking or invisible text) -.B prot -(protected) -.B rev -(reverse video) -.B sgr0 -(turn off -.I all -attribute modes) -.B smacs -(enter alternate character set mode) -and -.B rmacs -(exit alternate character set mode). -Turning on any of these modes singly may or may not turn off other modes. -.PP -If there is a sequence to set arbitrary combinations of modes, -this should be given as -.B sgr -(set attributes), -taking 9 parameters. -Each parameter is either 0 or nonzero, as the corresponding attribute is on or off. -The 9 parameters are, in order: -standout, underline, reverse, blink, dim, bold, blank, protect, alternate -character set. -Not all modes need be supported by -.BR sgr , -only those for which corresponding separate attribute commands exist. -.PP -For example, the DEC vt220 supports most of the modes: -.PP -.TS -center; -l l l -l l l -lw18 lw14 lw18. -\fBtparm parameter attribute escape sequence\fP - -none none \\E[0m -p1 standout \\E[0;1;7m -p2 underline \\E[0;4m -p3 reverse \\E[0;7m -p4 blink \\E[0;5m -p5 dim not available -p6 bold \\E[0;1m -p7 invis \\E[0;8m -p8 protect not used -p9 altcharset ^O (off) ^N (on) -.TE -.PP -We begin each escape sequence by turning off any existing modes, since -there is no quick way to determine whether they are active. -Standout is set up to be the combination of reverse and bold. -The vt220 terminal has a protect mode, -though it is not commonly used in sgr -because it protects characters on the screen from the host's erasures. -The altcharset mode also is different in that it is either ^O or ^N, -depending on whether it is off or on. -If all modes are turned on, the resulting sequence is \\E[0;1;4;5;7;8m^N. -.PP -Some sequences are common to different modes. -For example, ;7 is output when either p1 or p3 is true, that is, if -either standout or reverse modes are turned on. -.PP -Writing out the above sequences, along with their dependencies yields -.PP -.TS -center; -l l l -l l l -lw18 lw14 lw18. -\fBsequence when to output terminfo translation\fP - -\\E[0 always \\E[0 -;1 if p1 or p6 %?%p1%p6%|%t;1%; -;4 if p2 %?%p2%|%t;4%; -;5 if p4 %?%p4%|%t;5%; -;7 if p1 or p3 %?%p1%p3%|%t;7%; -;8 if p7 %?%p7%|%t;8%; -m always m -^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%; -.TE -.PP -Putting this all together into the sgr sequence gives: -.PP -.nf - sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%; - %?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;, -.fi -.PP -Remember that if you specify sgr, you must also specify sgr0. -Also, some implementations rely on sgr being given if sgr0 is, -Not all terminfo entries necessarily have an sgr string, however. -Many terminfo entries are derived from termcap entries -which have no sgr string. -The only drawback to adding an sgr string is that termcap also -assumes that sgr0 does not exit alternate character set mode. -.PP -Terminals with the ``magic cookie'' glitch -.RB ( xmc ) -deposit special ``cookies'' when they receive mode-setting sequences, -which affect the display algorithm rather than having extra bits for -each character. -Some terminals, such as the HP 2621, automatically leave standout -mode when they move to a new line or the cursor is addressed. -Programs using standout mode should exit standout mode before -moving the cursor or sending a newline, -unless the -.B msgr -capability, asserting that it is safe to move in standout mode, is present. -.PP -If the terminal has -a way of flashing the screen to indicate an error quietly (a bell replacement) -then this can be given as \fBflash\fR; it must not move the cursor. -.PP -If the cursor needs to be made more visible than normal when it is -not on the bottom line (to make, for example, a non-blinking underline into an -easier to find block or blinking underline) -give this sequence as -.BR cvvis . -If there is a way to make the cursor completely invisible, give that as -.BR civis . -The capability -.BR cnorm -should be given which undoes the effects of both of these modes. -.PP -If your terminal correctly generates underlined characters -(with no special codes needed) -even though it does not overstrike, -then you should give the capability \fBul\fR. -If a character overstriking another leaves both characters on the screen, -specify the capability \fBos\fP. -If overstrikes are erasable with a blank, -then this should be indicated by giving \fBeo\fR. -.PP -.SS Keypad and Function Keys -.PP -If the terminal has a keypad that transmits codes when the keys are pressed, -this information can be given. -Note that it is not possible to handle -terminals where the keypad only works in local (this applies, for example, -to the unshifted HP 2621 keys). -If the keypad can be set to transmit or not transmit, -give these codes as \fBsmkx\fR and \fBrmkx\fR. -Otherwise the keypad is assumed to always transmit. -The codes sent by the left arrow, right arrow, up arrow, down arrow, -and home keys can be given as -\fBkcub1, kcuf1, kcuu1, kcud1, \fRand\fB khome\fR respectively. -If there are function keys such as f0, f1, ..., f10, the codes they send -can be given as \fBkf0, kf1, ..., kf10\fR. -If these keys have labels other than the default f0 through f10, the labels -can be given as \fBlf0, lf1, ..., lf10\fR. -The codes transmitted by certain other special keys can be given: -.B kll -(home down), -.B kbs -(backspace), -.B ktbc -(clear all tabs), -.B kctab -(clear the tab stop in this column), -.B kclr -(clear screen or erase key), -.B kdch1 -(delete character), -.B kdl1 -(delete line), -.B krmir -(exit insert mode), -.B kel -(clear to end of line), -.B ked -(clear to end of screen), -.B kich1 -(insert character or enter insert mode), -.B kil1 -(insert line), -.B knp -(next page), -.B kpp -(previous page), -.B kind -(scroll forward/down), -.B kri -(scroll backward/up), -.B khts -(set a tab stop in this column). -In addition, if the keypad has a 3 by 3 array of keys including the four -arrow keys, the other five keys can be given as -.BR ka1 , -.BR ka3 , -.BR kb2 , -.BR kc1 , -and -.BR kc3 . -These keys are useful when the effects of a 3 by 3 directional pad are needed. -.PP -Strings to program function keys can be given as -.BR pfkey , -.BR pfloc , -and -.BR pfx . -A string to program screen labels should be specified as \fBpln\fP. -Each of these strings takes two parameters: the function key number to -program (from 0 to 10) and the string to program it with. -Function key numbers out of this range may program undefined keys in -a terminal dependent manner. -The difference between the capabilities is that -.B pfkey -causes pressing the given key to be the same as the user typing the -given string; -.B pfloc -causes the string to be executed by the terminal in local; and -.B pfx -causes the string to be transmitted to the computer. -.PP -The capabilities \fBnlab\fP, \fBlw\fP and \fBlh\fP -define the number of programmable -screen labels and their width and height. -If there are commands to turn the labels on and off, -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. -.PP -.SS Tabs and Initialization -.PP -If the terminal has hardware tabs, the command to advance to the next -tab stop can be given as -.B ht -(usually control I). -A ``back-tab'' command which moves leftward to the preceding tab stop can -be given as -.BR cbt . -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 -or -.B cbt -even if they are present, since the user may not have the tab stops -properly set. -If the terminal has hardware tabs which are initially set 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. -This is normally used by the -.IR tset -command to determine whether to set the mode for hardware tab expansion, -and whether to set the tab stops. -If the terminal has tab stops that can be saved in non-volatile memory, -the terminfo description can assume that they are properly set. -.PP -Other capabilities -include -.BR is1 , -.BR is2 , -and -.BR is3 , -initialization strings for the terminal, -.BR iprog , -the path name of a program to be run to initialize the terminal, -and \fBif\fR, the name of a file containing long initialization strings. -These strings are expected to set the terminal into modes consistent -with the rest of the terminfo description. -They are normally sent to the terminal, by the -.I init -option of the -.IR @TPUT@ -program, each time the user logs in. -They will be printed in the following order: -.RS -.TP -run the program -.BR iprog -.TP -output -.BR is1 -.BR is2 -.TP -set the margins using -.BR mgc , -.BR smgl -and -.BR smgr -.TP -set tabs using -.B tbc -and -.BR hts -.TP -print the file -.BR if -.TP -and finally -output -.BR is3 . -.RE -.PP -Most initialization is done with -.BR is2 . -Special terminal modes can be set up without duplicating strings -by putting the common sequences in -.B is2 -and special cases in -.B is1 -and -.BR is3 . -.PP -A set of sequences that does a harder reset from a totally unknown state -can be given as -.BR rs1 , -.BR rs2 , -.BR rf -and -.BR rs3 , -analogous to -.B is1 , -.B is2 , -.B if -and -.BR is3 -respectively. -These strings are output by the -.IR reset -program, which is used when the terminal gets into a wedged state. -Commands are normally placed in -.BR rs1 , -.BR rs2 -.B rs3 -and -.B rf -only if they produce annoying effects on the screen and are not -necessary when logging in. -For example, the command to set the vt100 into 80-column mode would -normally be part of -.BR is2 , -but it causes an annoying glitch of the screen and is not normally -needed since the terminal is usually already in 80 column mode. -.PP -The -.IR reset -program writes strings -including -.BR iprog , -etc., in the same order as the -.IR init -program, using -.BR rs1 , -etc., instead of -.BR is1 , -etc. -If any of -.BR rs1 , -.BR rs2 , -.BR rs3 , -or -.BR rf -reset capability strings are missing, the -.IR reset -program falls back upon the corresponding initialization capability string. -.PP -If there are commands to set and clear tab stops, they can be given as -.B tbc -(clear all tab stops) -and -.B hts -(set a tab stop in the current column of every row). -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 -or -.BR if . -.SS Delays and Padding -.PP -Many older and slower terminals do not support either XON/XOFF or DTR -handshaking, including hard copy terminals and some very archaic CRTs -(including, for example, DEC VT100s). -These may require padding characters -after certain cursor motions and screen changes. -.PP -If the terminal uses xon/xoff handshaking for flow control (that is, -it automatically emits ^S back to the host when its input buffers are -close to full), set -.BR xon . -This capability suppresses the emission of padding. -You can also set it -for memory-mapped console devices effectively that do not have a speed limit. -Padding information should still be included so that routines can -make better decisions about relative costs, but actual pad characters will -not be transmitted. -.PP -If \fBpb\fR (padding baud rate) is given, padding is suppressed at baud rates -below the value of \fBpb\fR. -If the entry has no padding baud rate, then -whether padding is emitted or not is completely controlled by \fBxon\fR. -.PP -If the terminal requires other than a null (zero) character as a pad, -then this can be given as \fBpad\fR. -Only the first character of the -.B pad -string is used. -.PP -.SS Status Lines -Some terminals have an extra `status line' which is not normally used by -software (and thus not counted in the terminal's \fBlines\fR capability). -.PP -The simplest case is a status line which is cursor-addressable but not -part of the main scrolling region on the screen; the Heathkit H19 has -a status line of this kind, as would a 24-line VT100 with a 23-line -scrolling region set up on initialization. -This situation is indicated -by the \fBhs\fR capability. -.PP -Some terminals with status lines need special sequences to access the -status line. -These may be expressed as a string with single parameter -\fBtsl\fR which takes the cursor to a given zero-origin column on the -status line. -The capability \fBfsl\fR must return to the main-screen -cursor positions before the last \fBtsl\fR. -You may need to embed the -string values of \fBsc\fR (save cursor) and \fBrc\fR (restore cursor) -in \fBtsl\fR and \fBfsl\fR to accomplish this. -.PP -The status line is normally assumed to be the same width as the width -of the terminal. -If this is untrue, you can specify it with the numeric -capability \fBwsl\fR. -.PP -A command to erase or blank the status line may be specified as \fBdsl\fR. -.PP -The boolean capability \fBeslok\fR specifies that escape sequences, tabs, -etc., work ordinarily in the status line. -.PP -The \fBncurses\fR implementation does not yet use any of these capabilities. -They are documented here in case they ever become important. -.PP -.SS Line Graphics -.PP -Many terminals have alternate character sets useful for forms-drawing. -Terminfo and \fBcurses\fR build in support for the drawing characters -supported by the VT100, with some characters from the AT&T 4410v1 added. -This alternate character set may be specified by the \fBacsc\fR capability. -.PP -.TS H -center expand; -l l l l -l l l l -lw25 lw10 lw6 lw6. -.\".TH -\fBGlyph ACS Ascii VT100\fR -\fBName Name Default Name\fR -UK pound sign ACS_STERLING f } -arrow pointing down ACS_DARROW v . -arrow pointing left ACS_LARROW < , -arrow pointing right ACS_RARROW > + -arrow pointing up ACS_UARROW ^ \- -board of squares ACS_BOARD # h -bullet ACS_BULLET o ~ -checker board (stipple) ACS_CKBOARD : a -degree symbol ACS_DEGREE \e f -diamond ACS_DIAMOND + ` -greater-than-or-equal-to ACS_GEQUAL > z -greek pi ACS_PI * { -horizontal line ACS_HLINE \- q -lantern symbol ACS_LANTERN # i -large plus or crossover ACS_PLUS + n -less-than-or-equal-to ACS_LEQUAL < y -lower left corner ACS_LLCORNER + m -lower right corner ACS_LRCORNER + j -not-equal ACS_NEQUAL ! | -plus/minus ACS_PLMINUS # g -scan line 1 ACS_S1 ~ o -scan line 3 ACS_S3 \- p -scan line 7 ACS_S7 \- r -scan line 9 ACS_S9 \&_ s -solid square block ACS_BLOCK # 0 -tee pointing down ACS_TTEE + w -tee pointing left ACS_RTEE + u -tee pointing right ACS_LTEE + t -tee pointing up ACS_BTEE + v -upper left corner ACS_ULCORNER + l -upper right corner ACS_URCORNER + k -vertical line ACS_VLINE | x -.TE -.PP -The best way to define a new device's graphics set is to add a column -to a copy of this table for your terminal, giving the character which -(when emitted between \fBsmacs\fR/\fBrmacs\fR switches) will be rendered -as the corresponding graphic. -Then read off the VT100/your terminal -character pairs right to left in sequence; these become the ACSC string. -.PP -.SS Color Handling -.PP -Most color terminals are either `Tektronix-like' or `HP-like'. -Tektronix-like -terminals have a predefined set of N colors (where N usually 8), and can set -character-cell foreground and background characters independently, mixing them -into N\ *\ N color-pairs. -On HP-like terminals, the use must set each color -pair up separately (foreground and background are not independently settable). -Up to M color-pairs may be set up from 2*M different colors. -ANSI-compatible -terminals are Tektronix-like. -.PP -Some basic color capabilities are independent of the color method. -The numeric -capabilities \fBcolors\fR and \fBpairs\fR specify the maximum numbers of colors -and color-pairs that can be displayed simultaneously. -The \fBop\fR (original -pair) string resets foreground and background colors to their default values -for the terminal. -The \fBoc\fR 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\fR. -.PP -To change the current foreground or background color on a Tektronix-type -terminal, use \fBsetaf\fR (set ANSI foreground) and \fBsetab\fR (set ANSI -background) or \fBsetf\fR (set foreground) and \fBsetb\fR (set background). -These take one parameter, the color number. -The SVr4 documentation describes -only \fBsetaf\fR/\fBsetab\fR; the XPG4 draft says that "If the terminal -supports ANSI escape sequences to set background and foreground, they should -be coded as \fBsetaf\fR and \fBsetab\fR, respectively. -If the terminal -supports other escape sequences to set background and foreground, they should -be coded as \fBsetf\fR and \fBsetb\fR, respectively. -The \fIvidputs()\fR -function and the refresh functions use \fBsetaf\fR and \fBsetab\fR if they are -defined." -.PP -The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a -single numeric argument each. -Argument values 0-7 of \fBsetaf\fR/\fBsetab\fR are portably defined as -follows (the middle column is the symbolic #define available in the header for -the \fBcurses\fR or \fBncurses\fR libraries). -The terminal hardware is free to -map these as it likes, but the RGB values indicate normal locations in color -space. -.PP -.TS H -center; -l c c c -l l n l. -\fBColor #define Value RGB\fR -black \fBCOLOR_BLACK\fR 0 0, 0, 0 -red \fBCOLOR_RED\ \fR 1 max,0,0 -green \fBCOLOR_GREEN\fR 2 0,max,0 -yellow \fBCOLOR_YELLOW\fR 3 max,max,0 -blue \fBCOLOR_BLUE\fR 4 0,0,max -magenta \fBCOLOR_MAGENTA\fR 5 max,0,max -cyan \fBCOLOR_CYAN\fR 6 0,max,max -white \fBCOLOR_WHITE\fR 7 max,max,max -.TE -.PP -The argument values of \fBsetf\fR/\fBsetb\fR historically correspond to -a different mapping, i.e., -.TS H -center; -l c c c -l l n l. -\fBColor #define Value RGB\fR -black \fBCOLOR_BLACK\fR 0 0, 0, 0 -blue \fBCOLOR_BLUE\fR 1 0,0,max -green \fBCOLOR_GREEN\fR 2 0,max,0 -cyan \fBCOLOR_CYAN\fR 3 0,max,max -red \fBCOLOR_RED\ \fR 4 max,0,0 -magenta \fBCOLOR_MAGENTA\fR 5 max,0,max -yellow \fBCOLOR_YELLOW\fR 6 max,max,0 -white \fBCOLOR_WHITE\fR 7 max,max,max -.TE -It is important to not confuse the two sets of color capabilities; -otherwise red/blue will be interchanged on the display. -.PP -On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set -which color pair is current. -.PP -On a Tektronix-like terminal, the capability \fBccc\fR may be present to -indicate that colors can be modified. -If so, the \fBinitc\fR capability will -take a color number (0 to \fBcolors\fR \- 1)and three more parameters which -describe the color. -These three parameters default to being interpreted as RGB -(Red, Green, Blue) values. -If the boolean capability \fBhls\fR is present, -they are instead as HLS (Hue, Lightness, Saturation) indices. -The ranges are -terminal-dependent. -.PP -On an HP-like terminal, \fBinitp\fR may give a capability for changing a -color-pair value. -It will take seven parameters; a color-pair number (0 to -\fBmax_pairs\fR \- 1), and two triples describing first background and then -foreground colors. -These parameters must be (Red, Green, Blue) or -(Hue, Lightness, Saturation) depending on \fBhls\fR. -.PP -On some color terminals, colors collide with highlights. -You can register -these collisions with the \fBncv\fR capability. -This is a bit-mask of -attributes not to be used when colors are enabled. -The correspondence with the -attributes understood by \fBcurses\fR is as follows: -.PP -.TS -center; -l c c -lw25 lw2 lw10. -\fBAttribute Bit Decimal\fR -A_STANDOUT 0 1 -A_UNDERLINE 1 2 -A_REVERSE 2 4 -A_BLINK 3 8 -A_DIM 4 16 -A_BOLD 5 32 -A_INVIS 6 64 -A_PROTECT 7 128 -A_ALTCHARSET 8 256 -.TE -.PP -For example, on many IBM PC consoles, the underline attribute collides with the -foreground color blue and is not available in color mode. -These should have -an \fBncv\fR capability of 2. -.PP -SVr4 curses does nothing with \fBncv\fR, ncurses recognizes it and optimizes -the output in favor of colors. -.PP -.SS Miscellaneous -If the terminal requires other than a null (zero) character as a pad, then this -can be given as pad. -Only the first character of the pad string is used. -If the terminal does not have a pad character, specify npc. -Note that ncurses implements the termcap-compatible \fBPC\fR variable; -though the application may set this value to something other than -a null, ncurses will test \fBnpc\fR first and use napms if the terminal -has no pad character. -.PP -If the terminal can move up or down half a line, -this can be indicated with -.B hu -(half-line up) -and -.B hd -(half-line down). -This is primarily useful for superscripts and subscripts on hard-copy terminals. -If a hard-copy terminal can eject to the next page (form feed), give this as -.B ff -(usually control L). -.PP -If there is a command to repeat a given character a given number of -times (to save time transmitting a large number of identical characters) -this can be indicated with the parameterized string -.BR rep . -The first parameter is the character to be repeated and the second -is the number of times to repeat it. -Thus, tparm(repeat_char, 'x', 10) is the same as `xxxxxxxxxx'. -.PP -If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025, -this can be indicated with -.BR cmdch . -A prototype command character is chosen which is used in all capabilities. -This character is given in the -.B cmdch -capability to identify it. -The following convention is supported on some UNIX systems: -The environment is to be searched for a -.B CC -variable, and if found, all -occurrences of the prototype character are replaced with the character -in the environment variable. -.PP -Terminal descriptions that do not represent a specific kind of known -terminal, such as -.IR switch , -.IR dialup , -.IR patch , -and -.IR network , -should include the -.B gn -(generic) capability so that programs can complain that they do not know -how to talk to the terminal. -(This capability does not apply to -.I virtual -terminal descriptions for which the escape sequences are known.) -.PP -If the terminal has a ``meta key'' which acts as a shift key, -setting the 8th bit of any character transmitted, this fact can -be indicated with -.BR km . -Otherwise, software will assume that the 8th bit is parity and it -will usually be cleared. -If strings exist to turn this ``meta mode'' on and off, they -can be given as -.B smm -and -.BR rmm . -.PP -If the terminal has more lines of memory than will fit on the screen -at once, the number of lines of memory can be indicated with -.BR lm . -A value of -.BR lm #0 -indicates that the number of lines is not fixed, -but that there is still more memory than fits on the screen. -.PP -If the terminal is one of those supported by the \s-1UNIX\s+1 virtual -terminal protocol, the terminal number can be given as -.BR vt . -.PP -Media copy -strings which control an auxiliary printer connected to the terminal -can be given as -.BR mc0 : -print the contents of the screen, -.BR mc4 : -turn off the printer, and -.BR mc5 : -turn on the printer. -When the printer is on, all text sent to the terminal will be sent -to the printer. -It is undefined whether the text is also displayed on the terminal screen -when the printer is on. -A variation -.B mc5p -takes one parameter, and leaves the printer on for as many characters -as the value of the parameter, then turns the printer off. -The parameter should not exceed 255. -All text, including -.BR mc4 , -is transparently passed to the printer while an -.B mc5p -is in effect. -.PP -.SS Glitches and Braindamage -.PP -Hazeltine terminals, which do not allow `~' characters to be displayed should -indicate \fBhz\fR. -.PP -Terminals which ignore a line-feed immediately after an \fBam\fR wrap, -such as the Concept and vt100, -should indicate \fBxenl\fR. -.PP -If -.B el -is required to get rid of standout -(instead of merely writing normal text on top of it), -\fBxhp\fP should be given. -.PP -Teleray terminals, where tabs turn all characters moved over to blanks, -should indicate \fBxt\fR (destructive tabs). -Note: the variable indicating this is now `dest_tabs_magic_smso'; in -older versions, it was teleray_glitch. -This glitch is also taken to mean that it is not possible to position -the cursor on top of a ``magic cookie'', -that to erase standout mode it is instead necessary to use -delete and insert line. -The ncurses implementation ignores this glitch. -.PP -The Beehive Superbee, which is unable to correctly transmit the escape -or control C characters, has -.BR xsb , -indicating that the f1 key is used for escape and f2 for control C. -(Only certain Superbees have this problem, depending on the ROM.) -Note that in older terminfo versions, this capability was called -`beehive_glitch'; it is now `no_esc_ctl_c'. -.PP -Other specific terminal problems may be corrected by adding more -capabilities of the form \fBx\fR\fIx\fR. -.PP -.SS Similar Terminals -.PP -If there are two very similar terminals, one (the variant) can be defined as -being just like the other (the base) with certain exceptions. -In the -definition of the variant, the string capability \fBuse\fR can be given with -the name of the base terminal. -The capabilities given before -.B use -override those in the base type named by -.BR use . -If there are multiple \fBuse\fR capabilities, they are merged in reverse order. -That is, the rightmost \fBuse\fR reference is processed first, then the one to -its left, and so forth. -Capabilities given explicitly in the entry override -those brought in by \fBuse\fR references. -.PP -A capability can be canceled by placing \fBxx@\fR to the left of the -use reference that imports it, where \fIxx\fP is the capability. -For example, the entry -.PP - 2621\-nl, smkx@, rmkx@, use=2621, -.PP -defines a 2621\-nl that does not have the \fBsmkx\fR or \fBrmkx\fR capabilities, -and hence does not turn on the function key labels when in visual mode. -This is useful for different modes for a terminal, or for different -user preferences. -.PP -.SS Pitfalls of Long Entries -.PP -Long terminfo entries are unlikely to be a problem; to date, no entry has even -approached terminfo's 4096-byte string-table maximum. -Unfortunately, the termcap -translations are much more strictly limited (to 1023 bytes), thus termcap translations -of long terminfo entries can cause problems. -.PP -The man pages for 4.3BSD and older versions of \fBtgetent()\fP instruct the user to -allocate a 1024-byte buffer for the termcap entry. -The entry gets null-terminated by -the termcap library, so that makes the maximum safe length for a termcap entry -1k\-1 (1023) bytes. -Depending on what the application and the termcap library -being used does, and where in the termcap file the terminal type that \fBtgetent()\fP -is searching for is, several bad things can happen. -.PP -Some termcap libraries print a warning message or exit if they find an -entry that's longer than 1023 bytes; others do not; others truncate the -entries to 1023 bytes. -Some application programs allocate more than -the recommended 1K for the termcap entry; others do not. -.PP -Each termcap entry has two important sizes associated with it: before -"tc" expansion, and after "tc" expansion. -"tc" is the capability that -tacks on another termcap entry to the end of the current one, to add -on its capabilities. -If a termcap entry does not use the "tc" -capability, then of course the two lengths are the same. -.PP -The "before tc expansion" length is the most important one, because it -affects more than just users of that particular terminal. -This is the -length of the entry as it exists in /etc/termcap, minus the -backslash-newline pairs, which \fBtgetent()\fP strips out while reading it. -Some termcap libraries strip off the final newline, too (GNU termcap does not). -Now suppose: -.TP 5 -* -a termcap entry before expansion is more than 1023 bytes long, -.TP 5 -* -and the application has only allocated a 1k buffer, -.TP 5 -* -and the termcap library (like the one in BSD/OS 1.1 and GNU) reads -the whole entry into the buffer, no matter what its length, to see -if it is the entry it wants, -.TP 5 -* -and \fBtgetent()\fP is searching for a terminal type that either is the -long entry, appears in the termcap file after the long entry, or -does not appear in the file at all (so that \fBtgetent()\fP has to search -the whole termcap file). -.PP -Then \fBtgetent()\fP will overwrite memory, perhaps its stack, and probably core dump -the program. -Programs like telnet are particularly vulnerable; modern telnets -pass along values like the terminal type automatically. -The results are almost -as undesirable with a termcap library, like SunOS 4.1.3 and Ultrix 4.4, that -prints warning messages when it reads an overly long termcap entry. -If a -termcap library truncates long entries, like OSF/1 3.0, it is immune to dying -here but will return incorrect data for the terminal. -.PP -The "after tc expansion" length will have a similar effect to the -above, but only for people who actually set TERM to that terminal -type, since \fBtgetent()\fP only does "tc" expansion once it is found the -terminal type it was looking for, not while searching. -.PP -In summary, a termcap entry that is longer than 1023 bytes can cause, -on various combinations of termcap libraries and applications, a core -dump, warnings, or incorrect operation. -If it is too long even before -"tc" expansion, it will have this effect even for users of some other -terminal types and users whose TERM variable does not have a termcap -entry. -.PP -When in \-C (translate to termcap) mode, the \fBncurses\fR implementation of -\fB@TIC@\fR(1M) issues warning messages when the pre-tc length of a termcap -translation is too long. -The \-c (check) option also checks resolved (after tc -expansion) lengths. -.SS Binary Compatibility -It is not wise to count on portability of binary terminfo entries between -commercial UNIX versions. -The problem is that there are at least two versions -of terminfo (under HP\-UX and AIX) 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 XSI Curses extensions. -.SH EXTENSIONS -Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, do not -interpret the %A and %O operators in parameter strings. -.PP -SVr4/XPG4 do not specify whether \fBmsgr\fR licenses movement while in -an alternate-character-set mode (such modes may, among other things, map -CR and NL to characters that do not trigger local motions). -The \fBncurses\fR implementation ignores \fBmsgr\fR in \fBALTCHARSET\fR -mode. -This raises the possibility that an XPG4 -implementation making the opposite interpretation may need terminfo -entries made for \fBncurses\fR to have \fBmsgr\fR turned off. -.PP -The \fBncurses\fR library handles insert-character and insert-character modes -in a slightly non-standard way to get better update efficiency. -See -the \fBInsert/Delete Character\fR subsection above. -.PP -The parameter substitutions for \fBset_clock\fR and \fBdisplay_clock\fR are -not documented in SVr4 or the XSI Curses standard. -They are deduced from the -documentation for the AT&T 505 terminal. -.PP -Be careful assigning the \fBkmous\fR capability. -The \fBncurses\fR wants to -interpret it as \fBKEY_MOUSE\fR, for use by terminals and emulators like xterm -that can return mouse-tracking information in the keyboard-input stream. -.PP -Different commercial ports of terminfo and curses support different subsets of -the XSI Curses standard and (in some cases) different extension sets. -Here -is a summary, accurate as of October 1995: -.PP -\fBSVR4, Solaris, ncurses\fR \-\- -These support all SVr4 capabilities. -.PP -\fBSGI\fR \-\- -Supports the SVr4 set, adds one undocumented extended string -capability (\fBset_pglen\fR). -.PP -\fBSVr1, Ultrix\fR \-\- -These support a restricted subset of terminfo capabilities. -The booleans -end with \fBxon_xoff\fR; the numerics with \fBwidth_status_line\fR; and the -strings with \fBprtr_non\fR. -.PP -\fBHP/UX\fR \-\- -Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fR, -\fBlabel_height\fR, \fBlabel_width\fR, plus function keys 11 through 63, plus -\fBplab_norm\fR, \fBlabel_on\fR, and \fBlabel_off\fR, plus some incompatible -extensions in the string table. -.PP -\fBAIX\fR \-\- -Supports the SVr1 subset, plus function keys 11 through 63, plus a number -of incompatible string table extensions. -.PP -\fBOSF\fR \-\- -Supports both the SVr4 set and the AIX extensions. -.SH FILES -.TP 25 -\*d/?/* -files containing terminal descriptions -.SH SEE ALSO -\fB@TIC@\fR(1M), -\fB@INFOCMP@\fR(1M), -\fBcurses\fR(3X), -\fBprintf\fR(3), -\fBterm\fR(\*n). -\fBterm_variables\fR(3X). -.SH AUTHORS -Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. -Based on pcurses by Pavel Curtis. diff --git a/deps/ncurses-5.9/man/tic.1m b/deps/ncurses-5.9/man/tic.1m deleted file mode 100644 index cf4147f..0000000 --- a/deps/ncurses-5.9/man/tic.1m +++ /dev/null @@ -1,351 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: tic.1m,v 1.47 2010/12/04 18:38:55 tom Exp $ -.TH @TIC@ 1M "" -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -\fBtic\fR \- the \fIterminfo\fR entry-description compiler -.SH SYNOPSIS -\fBtic\fR -[\fB\-\ -1\ -C\ -G\ -I\ -L\ -N\ -T\ -U\ -V\ -a\ -c\ -f\ -g\ -r\ -s\ -t\ -x\ -\fR] -[\fB\-e\fR \fInames\fR] -[\fB\-o\fR \fIdir\fR] -[\fB\-R\fR \fIsubset\fR] -[\fB\-v\fR[\fIn\fR]] -[\fB\-w\fR[\fIn\fR]] -\fIfile\fR -.br -.SH DESCRIPTION -The command \fBtic\fR translates a \fBterminfo\fR file from source -format into compiled format. -The compiled format is necessary for use with -the library routines in \fBncurses\fR(3X). -.PP -The results are normally placed in the system terminfo -directory \fB\*d\fR. -There are two ways to change this behavior. -.PP -First, you may override the system default by setting the variable -\fBTERMINFO\fR in your shell environment to a valid (existing) directory name. -.PP -Secondly, if \fBtic\fR cannot get access to \fI\*d\fR or your TERMINFO -directory, it looks for the directory \fI$HOME/.terminfo\fR; if that directory -exists, the entry is placed there. -.PP -Libraries that read terminfo entries are expected to check for a TERMINFO -directory first, look at \fI$HOME/.terminfo\fR if TERMINFO is not set, and -finally look in \fI\*d\fR. -.TP -\fB\-1\fR -restricts the output to a single column -.TP -\fB\-a\fR -tells \fBtic\fP to retain commented-out capabilities rather than discarding -them. -Capabilities are commented by prefixing them with a period. -This sets the \fB\-x\fR 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. -Otherwise these are ignored. -.TP -\fB\-C\fR -Force source translation to termcap format. -Note: this differs from the \fB\-C\fR -option of \fB@INFOCMP@\fR(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 -but commented out with two preceding dots. -.TP -\fB\-c\fR -tells \fBtic\fP to only check \fIfile\fR for errors, including syntax problems and -bad use links. -If you specify \fB\-C\fR (\fB\-I\fR) 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 (and a documented limit in terminfo), these entries may cause core -dumps. -.TP -\fB\-e \fR\fInames\fR -Limit writes and translations to the following comma-separated list of -terminals. -If any name or alias of a terminal matches one of the names in -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, this option may require \fB\-I\fR or \fB\-C\fR.) -.TP -\fB\-f\fR -Display complex terminfo strings which contain if/then/else/endif expressions -indented for readability. -.TP -\fB\-G\fR -Display constant literals in decimal form -rather than their character equivalents. -.TP -\fB\-g\fR -Display constant character literals in quoted form -rather than their decimal equivalents. -.TP -\fB\-I\fR -Force source translation to terminfo format. -.TP -\fB\-L\fR -Force source translation to terminfo format -using the long C variable names listed in <\fBterm.h\fR> -.TP -\fB\-N\fR -Disable smart defaults. -Normally, when translating from termcap to terminfo, the compiler makes -a number of assumptions about the defaults of string capabilities -\fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR, -\fBcursor_down\fR, \fBscroll_forward\fR, \fBtab\fR, \fBnewline\fR, -\fBkey_backspace\fR, \fBkey_left\fR, and \fBkey_down\fR, then attempts -to use obsolete termcap capabilities to deduce correct values. -It also -normally suppresses output of obsolete termcap capabilities such as \fBbs\fR. -This option forces a more literal translation that also preserves the -obsolete capabilities. -.TP -\fB\-o\fR\fIdir\fR -Write compiled entries to given directory. -Overrides the TERMINFO environment -variable. -.TP -\fB\-R\fR\fIsubset\fR -Restrict output to a given subset. -This option is for use with archaic -versions of terminfo like those on SVr1, Ultrix, or HP/UX that do not support -the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x -that have their own extensions incompatible with SVr4/XSI. -Available subsets -are "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see \fBterminfo\fR(\*n) for details. -.TP -\fB\-r\fR -Force entry resolution (so there are no remaining tc capabilities) even -when doing translation to termcap format. -This may be needed if you are -preparing a termcap file for a termcap library (such as GNU termcap through -version 1.3 or BSD termcap through 4.3BSD) that does not handle multiple -tc capabilities per entry. -.TP -\fB\-s\fR -Summarize the compile by showing the directory into which entries -are written, and the number of entries which are compiled. -.TP -\fB\-T\fR -eliminates size-restrictions on the generated text. -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\fR -tells \fBtic\fP to discard commented-out capabilities. -Normally when translating from terminfo to termcap, -untranslatable capabilities are commented-out. -.TP 5 -\fB\-U\fR -tells \fBtic\fP 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 -\fB\-V\fR -reports the version of ncurses which was used in this program, and exits. -.TP -\fB\-v\fR\fIn\fR -specifies that (verbose) output be written to standard error trace -information showing \fBtic\fR's progress. -The optional parameter \fIn\fR is a number from 1 to 10, inclusive, -indicating the desired level of detail of information. -If \fIn\fR is omitted, the default level is 1. -If \fIn\fR is specified and greater than 1, the level of -detail is increased. -.TP -\fB\-w\fR\fIn\fR -specifies the width of the output. -The parameter is optional. -If it is omitted, it defaults to 60. -.TP -\fB\-x\fR -Treat unknown capabilities as user-defined. -That is, if you supply a capability name which \fBtic\fP 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. -.TP -\fIfile\fR -contains one or more \fBterminfo\fR terminal descriptions in source -format [see \fBterminfo\fR(\*n)]. -Each description in the file -describes the capabilities of a particular terminal. -.PP -The debug flag levels are as follows: -.TP -1 -Names of files created and linked -.TP -2 -Information related to the ``use'' facility -.TP -3 -Statistics from the hashing algorithm -.TP -5 -String-table memory allocations -.TP -7 -Entries into the string-table -.TP -8 -List of tokens encountered by scanner -.TP -9 -All values computed in construction of the hash table -.LP -If the debug level \fIn\fR is not given, it is taken to be one. -.PP -All but one of the capabilities recognized by \fBtic\fR are documented -in \fBterminfo\fR(\*n). -The exception is the \fBuse\fR capability. -.PP -When a \fBuse\fR=\fIentry\fR\-\fIname\fR field is discovered in a -terminal entry currently being compiled, \fBtic\fR reads in the binary -from \fB\*d\fR to complete the entry. -(Entries created from -\fIfile\fR will be used first. -If the environment variable -\fBTERMINFO\fR is set, that directory is searched instead of -\fB\*d\fR.) \fBtic\fR duplicates the capabilities in -\fIentry\fR\-\fIname\fR for the current entry, with the exception of -those capabilities that explicitly are defined in the current entry. -.PP -When an entry, e.g., \fBentry_name_1\fR, contains a -\fBuse=\fR\fIentry\fR_\fIname\fR_\fI2\fR field, any canceled -capabilities in \fIentry\fR_\fIname\fR_\fI2\fR must also appear in -\fBentry_name_1\fR before \fBuse=\fR for these capabilities to be -canceled in \fBentry_name_1\fR. -.PP -If the environment variable \fBTERMINFO\fR is set, the compiled -results are placed there instead of \fB\*d\fR. -.PP -Total compiled entries cannot exceed 4096 bytes. -The name field cannot -exceed 512 bytes. -Terminal names exceeding the maximum alias length -(32 characters on systems with long filenames, 14 characters otherwise) -will be truncated to the maximum alias length and a warning message will be printed. -.SH COMPATIBILITY -There is some evidence that historic \fBtic\fR implementations treated -description fields with no whitespace in them as additional aliases or -short names. -This \fBtic\fR 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 stock SVr4 \fBtic\fR command, this implementation can actually -compile termcap sources. -In fact, entries in terminfo and termcap syntax can -be mixed in a single source file. -See \fBterminfo\fR(\*n) for the list of -termcap names taken to be equivalent to terminfo names. -.PP -The SVr4 manual pages are not clear on the resolution rules for \fBuse\fR -capabilities. -This implementation of \fBtic\fR will find \fBuse\fR targets anywhere -in the source file, or anywhere in the file tree rooted at \fBTERMINFO\fR (if -\fBTERMINFO\fR is defined), or in the user's \fI$HOME/.terminfo\fR directory -(if it exists), or (finally) anywhere in the system's file tree of -compiled entries. -.PP -The error messages from this \fBtic\fR have the same format as GNU C -error messages, and can be parsed by GNU Emacs's compile facility. -.PP -The -\fB\-C\fR, -\fB\-G\fR, -\fB\-I\fR, -\fB\-N\fR, -\fB\-R\fR, -\fB\-T\fR, -\fB\-V\fR, -\fB\-a\fR, -\fB\-e\fR, -\fB\-f\fR, -\fB\-g\fR, -\fB\-o\fR, -\fB\-r\fR, -\fB\-s\fR, -\fB\-t\fR and -\fB\-x\fR -options -are not supported under SVr4. -The SVr4 \fB\-c\fR mode does not report bad use links. -.PP -System V does not compile entries to or read entries from your -\fI$HOME/.terminfo\fR directory unless TERMINFO is explicitly set to it. -.SH FILES -.TP 5 -\fB\*d/?/*\fR -Compiled terminal description database. -.SH SEE ALSO -\fB@INFOCMP@\fR(1M), -\fB@CAPTOINFO@\fR(1M), -\fB@INFOTOCAP@\fR(1M), -\fB@TOE@\fR(1M), -\fBcurses\fR(3X), -\fBterminfo\fR(\*n). -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). -.SH AUTHOR -Eric S. Raymond -and -.br -Thomas E. Dickey diff --git a/deps/ncurses-5.9/man/toe.1m b/deps/ncurses-5.9/man/toe.1m deleted file mode 100644 index c8eb481..0000000 --- a/deps/ncurses-5.9/man/toe.1m +++ /dev/null @@ -1,101 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: toe.1m,v 1.23 2010/12/04 18:40:45 tom Exp $ -.TH @TOE@ 1M "" -.ds n 5 -.ds d @TERMINFO@ -.SH NAME -\fBtoe\fR \- table of (terminfo) entries -.SH SYNOPSIS -\fBtoe\fR [\fB\-v\fR[\fIn\fR]] [\fB\-ahuUV\fR] \fIfile...\fR -.br -.SH DESCRIPTION -.PP -With no options, -\fBtoe\fR lists all available terminal types by primary name -with descriptions. -File arguments specify the directories to be scanned; if no -such arguments are given, -your default terminfo directory is scanned. -If you also specify the \fB\-h\fR option, -a directory header will be issued as each -directory is entered. -.PP -There are other options intended for use by terminfo file maintainers: -.TP -\fB\-a\fR -report on all of the terminal databases which ncurses would search, -rather than only the first one that it finds. -.TP -\fB\-u\fR \fIfile\fR -says to write a report to the standard output, -listing dependencies in the given terminfo/termcap source file. -The report condenses the `use' relation: -each line consists of the primary name of a terminal that -has use capabilities, -followed by a colon, -followed by the -whitespace-separated primary names of all terminals which occur in those use -capabilities, -followed by a newline -.TP -\fB\-U\fR \fIfile\fR -says to write a report to the standard output, -listing reverse dependencies in the given terminfo/termcap source file. -The report reverses the `use' relation: -each line consists of the primary name of a -terminal that occurs in use capabilities, -followed by a colon, -followed by the -whitespace-separated primary names of all terminals which depend on it, -followed by a newline. -.TP -\fB\-v\fR\fIn\fR -specifies that (verbose) output be written to standard error, -showing \fBtoe\fR's progress. -The optional parameter \fIn\fR is a number from 1 to 10, -interpreted as for \fB@TIC@\fR(1M). -.TP -\fB\-V\fR -reports the version of ncurses which was used in this program, -and exits. -.SH FILES -.TP 5 -\fB\*d/?/*\fR -Compiled terminal description database. -.SH SEE ALSO -\fB@TIC@\fR(1M), -\fB@INFOCMP@\fR(1M), -\fB@CAPTOINFO@\fR(1M), -\fB@INFOTOCAP@\fR(1M), -\fBcurses\fR(3X), -\fBterminfo\fR(\*n). -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/man/tput.1 b/deps/ncurses-5.9/man/tput.1 deleted file mode 100644 index 665c711..0000000 --- a/deps/ncurses-5.9/man/tput.1 +++ /dev/null @@ -1,319 +0,0 @@ -'\" t -.\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: tput.1,v 1.29 2010/12/04 18:41:07 tom Exp $ -.TH @TPUT@ 1 "" -.ds d @TERMINFO@ -.ds n 1 -.SH NAME -\fB@TPUT@\fR, \fBreset\fR \- initialize a terminal or query terminfo database -.SH SYNOPSIS -\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fIcapname\fR [\fIparms\fR ... ] -.br -\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBinit\fR -.br -\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBreset\fR -.br -\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBlongname\fR -.br -\fB@TPUT@ \-S\fR \fB<<\fR -.br -\fB@TPUT@ \-V\fR -.br -.SH DESCRIPTION -The \fB@TPUT@\fR utility uses the \fBterminfo\fR database to make the -values of terminal-dependent capabilities and information available to -the shell (see \fBsh\fR(1)), to initialize or reset the terminal, or -return the long name of the requested terminal type. -The result depends upon the capability's type: -.RS -.TP 5 -string -\fB@TPUT@\fR writes the string to the standard output. -No trailing newline is supplied. -.TP -integer -\fB@TPUT@\fR writes the decimal value to the standard output, -with a trailing newline. -.TP -boolean -\fB@TPUT@\fR simply sets the exit code -(\fB0\fR for TRUE if the terminal has the capability, -\fB1\fR for FALSE if it does not), -and writes nothing to the standard output. -.RE -.PP -Before using a value returned on the standard output, -the application should test the exit code -(e.g., \fB$?\fR, see \fBsh\fR(1)) to be sure it is \fB0\fR. -(See the \fBEXIT CODES\fR and \fBDIAGNOSTICS\fR sections.) -For a complete list of capabilities -and the \fIcapname\fR associated with each, see \fBterminfo\fR(5). -.TP -\fB\-T\fR\fItype\fR -indicates the \fItype\fR of terminal. Normally this option is -unnecessary, because the default is taken from the environment -variable \fBTERM\fR. If \fB\-T\fR is specified, then the shell -variables \fBLINES\fR and \fBCOLUMNS\fR will be ignored,and the -operating system will not be queried for the actual screen size. -.TP -\fIcapname\fR -indicates the capability from the \fBterminfo\fR database. When -\fBtermcap\fR support is compiled in, the \fBtermcap\fR name for -the capability is also accepted. -.TP -\fIparms\fR -If the capability is a string that takes parameters, the arguments -\fIparms\fR will be instantiated into the string. -.IP -Most parameters are numbers. -Only a few terminfo capabilities require string parameters; -\fB@TPUT@\fR uses a table to decide which to pass as strings. -Normally \fB@TPUT@\fR uses \fBtparm\fR (3X) to perform the substitution. -If no parameters are given for the capability, -\fB@TPUT@\fR writes the string without performing the substitution. -.TP -\fB\-S\fR -allows more than one capability per invocation of \fB@TPUT@\fR. The -capabilities must be passed to \fB@TPUT@\fR from the standard input -instead of from the command line (see example). -Only one \fIcapname\fR is allowed per line. -The \fB\-S\fR option changes the -meaning of the \fB0\fR and \fB1\fR boolean and string exit codes (see the -EXIT CODES section). -.IP -Again, \fB@TPUT@\fR uses a table and the presence of parameters in its input -to decide whether to use \fBtparm\fR (3X), -and how to interpret the parameters. -.TP -\fB\-V\fR -reports the version of ncurses which was used in this program, and exits. -.TP -\fBinit\fR -If the \fBterminfo\fR database is present and an entry for the user's -terminal exists (see \fB\-T\fR\fItype\fR, above), the following will -occur: -.RS -.TP -(1) -if present, the terminal's initialization strings will be -output as detailed in the \fBterminfo\fR(5) section on -.IR "Tabs and Initialization" , -.TP -(2) -any delays (e.g., newline) specified in the entry will -be set in the tty driver, -.TP -(3) -tabs expansion will be turned on or off according to -the specification in the entry, and -.TP -(4) -if tabs are not expanded, -standard tabs will be set (every 8 spaces). -.RE -.IP -If an entry does not -contain the information needed for any of the four above activities, -that activity will silently be skipped. -.TP -\fBreset\fR -Instead of putting out initialization strings, the terminal's -reset strings will be output if present (\fBrs1\fR, \fBrs2\fR, \fBrs3\fR, \fBrf\fR). -If the reset strings are not present, but initialization -strings are, the initialization strings will be output. -Otherwise, \fBreset\fR acts identically to \fBinit\fR. -.TP -\fBlongname\fR -If the \fBterminfo\fR database is present and an entry for the -user's terminal exists (see \fB\-T\fR\fItype\fR above), then the long name -of the terminal will be put out. The long name is the last -name in the first line of the terminal's description in the -\fBterminfo\fR database [see \fBterm\fR(5)]. -.PP -If \fB@TPUT@\fR is invoked by a link named \fBreset\fR, this has the -same effect as \fB@TPUT@ reset\fR. -See \fBtset\fR for comparison, which has similar behavior. -.SH EXAMPLES -.TP 5 -\fB@TPUT@ init\fR -Initialize the terminal according to the type of -terminal in the environmental variable \fBTERM\fR. This -command should be included in everyone's .profile after -the environmental variable \fBTERM\fR has been exported, as -illustrated on the \fBprofile\fR(5) manual page. -.TP 5 -\fB@TPUT@ \-T5620 reset\fR -Reset an AT&T 5620 terminal, overriding the type of -terminal in the environmental variable \fBTERM\fR. -.TP 5 -\fB@TPUT@ cup 0 0\fR -Send the sequence to move the cursor to row \fB0\fR, column \fB0\fR -(the upper left corner of the screen, usually known as the "home" -cursor position). -.TP 5 -\fB@TPUT@ clear\fR -Echo the clear-screen sequence for the current terminal. -.TP 5 -\fB@TPUT@ cols\fR -Print the number of columns for the current terminal. -.TP 5 -\fB@TPUT@ \-T450 cols\fR -Print the number of columns for the 450 terminal. -.TP 5 -\fBbold=`@TPUT@ smso` offbold=`@TPUT@ rmso`\fR -Set the shell variables \fBbold\fR, to begin stand-out mode -sequence, and \fBoffbold\fR, to end standout mode sequence, -for the current terminal. This might be followed by a -prompt: \fBecho "${bold}Please type in your name: ${offbold}\\c"\fR -.TP 5 -\fB@TPUT@ hc\fR -Set exit code to indicate if the current terminal is a hard copy terminal. -.TP 5 -\fB@TPUT@ cup 23 4\fR -Send the sequence to move the cursor to row 23, column 4. -.TP 5 -\fB@TPUT@ cup\fR -Send the terminfo string for cursor-movement, with no parameters substituted. -.TP 5 -\fB@TPUT@ longname\fR -Print the long name from the \fBterminfo\fR database for the -type of terminal specified in the environmental -variable \fBTERM\fR. -.PP -.RS 5 -\fB@TPUT@ \-S < clear\fR -.br -\fB> cup 10 10\fR -.br -\fB> bold\fR -.br -\fB> !\fR -.RE -.TP 5 -\& -This example shows \fB@TPUT@\fR processing several capabilities in one invocation. -It clears the screen, -moves the cursor to position 10, 10 -and turns on bold (extra bright) mode. -The list is terminated by an exclamation mark (\fB!\fR) on a line by itself. -.SH FILES -.TP -\fB\*d\fR -compiled terminal description database -.TP -\fB@DATADIR@/tabset/*\fR -tab settings for some terminals, in a format -appropriate to be output to the terminal (escape -sequences that set margins and tabs); for more -information, see the "Tabs and Initialization" -section of \fBterminfo\fR(5) -.SH EXIT CODES -If the \fB\-S\fR option is used, -\fB@TPUT@\fR checks for errors from each line, -and if any errors are found, will set the exit code to 4 plus the -number of lines with errors. -If no errors are found, the exit code is \fB0\fR. -No indication of which line failed can be given so -exit code \fB1\fR will never appear. Exit codes \fB2\fR, \fB3\fR, and -\fB4\fR retain their usual interpretation. -If the \fB\-S\fR option is not used, -the exit code depends on the type of \fIcapname\fR: -.RS 5 -.TP -.I boolean -a value of \fB0\fR is set for TRUE and \fB1\fR for FALSE. -.TP -.I string -a value of \fB0\fR is set if the -\fIcapname\fR is defined for this terminal \fItype\fR (the value of -\fIcapname\fR is returned on standard output); -a value of \fB1\fR is set if \fIcapname\fR -is not defined for this terminal \fItype\fR -(nothing is written to standard output). -.TP -.I integer -a value of \fB0\fR is always set, -whether or not \fIcapname\fR is defined for this terminal \fItype\fR. -To determine if \fIcapname\fR is defined for this terminal \fItype\fR, -the user must test the value written to standard output. -A value of \fB\-1\fR -means that \fIcapname\fR is not defined for this terminal \fItype\fR. -.TP -.I other -\fBreset\fR or \fBinit\fR may fail to find their respective files. -In that case, the exit code is set to 4 + \fBerrno\fR. -.RE -.PP -Any other exit code indicates an error; see the DIAGNOSTICS section. -.SH DIAGNOSTICS -\fBtput\fR prints the following error messages and sets the corresponding exit -codes. -.PP -.ne 15 -.TS -l l. -exit code error message -= -\fB0\fR T{ -(\fIcapname\fR is a numeric variable that is not specified in the -\fBterminfo\fR(5) database for this terminal type, e.g. -\fB@TPUT@ \-T450 lines\fR and \fB@TPUT@ \-T2621 xmc\fR) -T} -\fB1\fR no error message is printed, see the \fBEXIT CODES\fR section. -\fB2\fR usage error -\fB3\fR unknown terminal \fItype\fR or no \fBterminfo\fR database -\fB4\fR unknown \fBterminfo\fR capability \fIcapname\fR -\fB>4\fR error occurred in \-S -= -.TE -.SH PORTABILITY -.PP -The \fBlongname\fR and \fB\-S\fR options, and the parameter-substitution -features used in the \fBcup\fR example, are not supported in BSD curses or in -AT&T/USL curses before SVr4. -.PP -X/Open documents only the operands for \fBclear\fP, \fBinit\fP and \fBreset\fP. -In this implementation, \fBclear\fP is part of the \fIcapname\fR support. -Other implementations of \fBtput\fP on -SVr4-based systems such as Solaris, IRIX64 and HPUX -as well as others such as AIX and Tru64 -provide support for \fIcapname\fR operands. -A few platforms such as FreeBSD and NetBSD recognize termcap names rather -than terminfo capability names in their respective \fBtput\fP commands. -.SH SEE ALSO -\fB@CLEAR@\fR(1), -\fBstty\fR(1), -\fBtabs\fR(\*n), -\fBterminfo\fR(5). -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/man/tset.1 b/deps/ncurses-5.9/man/tset.1 deleted file mode 100644 index 9743f5b..0000000 --- a/deps/ncurses-5.9/man/tset.1 +++ /dev/null @@ -1,283 +0,0 @@ -.\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 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. * -.\"*************************************************************************** -.\" -.\" $Id: tset.1,v 1.25 2010/12/04 18:38:55 tom Exp $ -.TH @TSET@ 1 "" -.SH NAME -\fBtset\fR, \fBreset\fR \- terminal initialization -.SH SYNOPSIS -\fBtset\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR] -.br -\fBreset\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR] -.SH DESCRIPTION -\&\fBTset\fR initializes terminals. -\fBTset\fR first determines the type of terminal that you are using. -This determination is done as follows, using the first terminal type found. -.PP -1. The \fBterminal\fR argument specified on the command line. -.PP -2. The value of the \fBTERM\fR environmental variable. -.PP -3. (BSD systems only.) The terminal type associated with the standard -error output device in the \fI/etc/ttys\fR file. -(On System\-V-like UNIXes and systems using that convention, -\fIgetty\fR does this job by setting -\fBTERM\fR according to the type passed to it by \fI/etc/inittab\fR.) -.PP -4. The default terminal type, ``unknown''. -.PP -If the terminal type was not specified on the command-line, the \fB\-m\fR -option mappings are then applied (see the section -.B TERMINAL TYPE MAPPING -for more information). -Then, if the terminal type begins with a question mark (``?''), the -user is prompted for confirmation of the terminal type. An empty -response confirms the type, or, another type can be entered to specify -a new type. Once the terminal type has been determined, the terminfo -entry for the terminal is retrieved. If no terminfo entry is found -for the type, the user is prompted for another terminal type. -.PP -Once the terminfo entry is retrieved, the window size, backspace, interrupt -and line kill characters (among many other things) are set and the terminal -and tab initialization strings are sent to the standard error output. -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 -standard error output. -Use the \fB\-c\fP or \fB\-w\fP option to select only the window sizing -versus the other initialization. -If neither option is given, both are assumed. -.PP -When invoked as \fBreset\fR, \fBtset\fR sets cooked and echo modes, -turns off cbreak and raw modes, turns on newline translation and -resets any unset special characters to their default values before -doing the terminal initialization described above. This is useful -after a program dies leaving a terminal in an abnormal state. Note, -you may have to type -.sp - \fBreset\fR -.sp -(the line-feed character is normally control-J) to get the terminal -to work, as carriage-return may no longer work in the abnormal state. -Also, the terminal will often not echo the command. -.PP -The options are as follows: -.TP 5 -.B \-c -Set control characters and modes. -.B \-e -Set the erase character to \fIch\fR. -.TP -.B \-I -Do not send the terminal or tab initialization strings to the terminal. -.TP -.B \-i -Set the interrupt character to \fIch\fR. -.TP -.B \-k -Set the line kill character to \fIch\fR. -.TP -.B \-m -Specify a mapping from a port type to a terminal. -See the section -.B TERMINAL TYPE MAPPING -for more information. -.TP -.B \-Q -Do not display any values for the erase, interrupt and line kill characters. -Normally \fBtset\fR displays the values for control characters which -differ from the system's default values. -.TP -.B \-q -The terminal type is displayed to the standard output, and the terminal is -not initialized in any way. The option `\-' by itself is equivalent but -archaic. -.TP -.B \-r -Print the terminal type to the standard error output. -.TP -.B \-s -Print the sequence of shell commands to initialize the environment variable -\fBTERM\fR to the standard output. -See the section -.B SETTING THE ENVIRONMENT -for details. -.TP -.B \-V -reports the version of ncurses which was used in this program, and exits. -.TP -.B \-w -Resize the window to match the size deduced via \fBsetupterm\fP. -Normally this has no effect, -unless \fBsetupterm\fP is not able to detect the window size. -.PP -The arguments for the \fB\-e\fR, \fB\-i\fR, and \fB\-k\fR -options may either be entered as actual characters or by using the `hat' -notation, i.e., control-h may be specified as ``^H'' or ``^h''. -. -.SH SETTING THE ENVIRONMENT -It is often desirable to enter the terminal type and information about -the terminal's capabilities into the shell's environment. -This is done using the \fB\-s\fR option. -.PP -When the \fB\-s\fR option is specified, the commands to enter the information -into the shell's environment are written to the standard output. If -the \fBSHELL\fR environmental variable ends in ``csh'', the commands -are for \fBcsh\fR, otherwise, they are for \fBsh\fR. -Note, the \fBcsh\fR commands set and unset the shell variable -\fBnoglob\fR, leaving it unset. The following line in the \fB.login\fR -or \fB.profile\fR files will initialize the environment correctly: -.sp - eval \`tset \-s options ... \` -. -.SH TERMINAL TYPE MAPPING -When the terminal is not hardwired into the system (or the current -system information is incorrect) the terminal type derived from the -\fI/etc/ttys\fR file or the \fBTERM\fR environmental variable is often -something generic like \fBnetwork\fR, \fBdialup\fR, or \fBunknown\fR. -When \fBtset\fR is used in a startup script it is often desirable to -provide information about the type of terminal used on such ports. -.PP -The purpose of the \fB\-m\fR option is to map -from some set of conditions to a terminal type, that is, to -tell \fBtset\fR -``If I'm on this port at a particular speed, guess that I'm on that -kind of terminal''. -.PP -The argument to the \fB\-m\fR option consists of an optional port type, an -optional operator, an optional baud rate specification, an optional -colon (``:'') character and a terminal type. The port type is a -string (delimited by either the operator or the colon character). The -operator may be any combination of ``>'', ``<'', ``@'', and ``!''; ``>'' -means greater than, ``<'' means less than, ``@'' means equal to -and ``!'' inverts the sense of the test. -The baud rate is specified as a number and is compared with the speed -of the standard error output (which should be the control terminal). -The terminal type is a string. -.PP -If the terminal type is not specified on the command line, the \fB\-m\fR -mappings are applied to the terminal type. If the port type and baud -rate match the mapping, the terminal type specified in the mapping -replaces the current type. If more than one mapping is specified, the -first applicable mapping is used. -.PP -For example, consider the following mapping: \fBdialup>9600:vt100\fR. -The port type is dialup , the operator is >, the baud rate -specification is 9600, and the terminal type is vt100. The result of -this mapping is to specify that if the terminal type is \fBdialup\fR, -and the baud rate is greater than 9600 baud, a terminal type of -\fBvt100\fR will be used. -.PP -If no baud rate is specified, the terminal type will match any baud rate. -If no port type is specified, the terminal type will match any port type. -For example, \fB\-m dialup:vt100 \-m :?xterm\fR -will cause any dialup port, regardless of baud rate, to match the terminal -type vt100, and any non-dialup port type to match the terminal type ?xterm. -Note, because of the leading question mark, the user will be -queried on a default port as to whether they are actually using an xterm -terminal. -.PP -No whitespace characters are permitted in the \fB\-m\fR option argument. -Also, to avoid problems with meta-characters, it is suggested that the -entire \fB\-m\fR option argument be placed within single quote characters, -and that \fBcsh\fR users insert a backslash character (``\e'') before -any exclamation marks (``!''). -.SH HISTORY -The \fBtset\fR command appeared in BSD 3.0. The \fBncurses\fR implementation -was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric -S. Raymond . -.SH COMPATIBILITY -The \fBtset\fR utility has been provided for backward-compatibility with BSD -environments (under most modern UNIXes, \fB/etc/inittab\fR and \fIgetty\fR(1) -can set \fBTERM\fR appropriately for each dial-up line; this obviates what was -\fBtset\fR's most important use). This implementation behaves like 4.4BSD -tset, with a few exceptions specified here. -.PP -The \fB\-S\fR option of BSD tset no longer works; it prints an error message to stderr -and dies. The \fB\-s\fR option only sets \fBTERM\fR, not \fBTERMCAP\fP. Both these -changes are because the \fBTERMCAP\fR variable is no longer supported under -terminfo-based \fBncurses\fR, which makes \fBtset \-S\fR useless (we made it die -noisily rather than silently induce lossage). -.PP -There was an undocumented 4.4BSD feature that invoking tset via a link named -`TSET` (or via any other name beginning with an upper-case letter) set the -terminal to use upper-case only. This feature has been omitted. -.PP -The \fB\-A\fR, \fB\-E\fR, \fB\-h\fR, \fB\-u\fR and \fB\-v\fR -options were deleted from the \fBtset\fR -utility in 4.4BSD. -None of them were documented in 4.3BSD and all are -of limited utility at best. -The \fB\-a\fR, \fB\-d\fR, and \fB\-p\fR options are similarly -not documented or useful, but were retained as they appear to be in -widespread use. It is strongly recommended that any usage of these -three options be changed to use the \fB\-m\fR option instead. The -\fB\-n\fP option remains, but has no effect. The \fB\-adnp\fR options are therefore -omitted from the usage summary above. -.PP -It is still permissible to specify the \fB\-e\fR, \fB\-i\fR, and \fB\-k\fR options without -arguments, although it is strongly recommended that such usage be fixed to -explicitly specify the character. -.PP -As of 4.4BSD, executing \fBtset\fR as \fBreset\fR no longer implies the \fB\-Q\fR -option. Also, the interaction between the \- option and the \fIterminal\fR -argument in some historic implementations of \fBtset\fR has been removed. -.SH ENVIRONMENT -The \fBtset\fR command uses these environment variables: -.TP 5 -SHELL -tells \fBtset\fP whether to initialize \fBTERM\fP using \fBsh\fP or -\fBcsh\fP syntax. -.TP 5 -TERM -Denotes your terminal type. -Each terminal type is distinct, though many are similar. -.TP 5 -TERMCAP -may denote the location of a termcap database. -If it is not an absolute pathname, e.g., begins with a `/', -\fBtset\fP removes the variable from the environment before looking -for the terminal description. -.SH FILES -.TP 5 -/etc/ttys -system port name to terminal type mapping database (BSD versions only). -.TP -@TERMINFO@ -terminal capability database -.SH SEE ALSO -csh(1), -sh(1), -stty(1), -curs_terminfo(3X), -tty(4), -terminfo(5), -ttys(5), -environ(7) -.PP -This describes \fBncurses\fR -version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/menu/Makefile b/deps/ncurses-5.9/menu/Makefile deleted file mode 100644 index c12a9f8..0000000 --- a/deps/ncurses-5.9/menu/Makefile +++ /dev/null @@ -1,447 +0,0 @@ -# $Id: Makefile.in,v 1.54 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for menu source code. -# -# This makes the following: -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - -THIS = Makefile - -x = -o = .o - -MODEL = normal -DESTDIR = -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -bindir = ${exec_prefix}/bin -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include/ncurses - -LIBTOOL = -LIBTOOL_CLEAN = -LIBTOOL_COMPILE = -LIBTOOL_LINK = ${CC} -LIBTOOL_INSTALL = -LIBTOOL_UNINSTALL = -LT_UNDEF = - -INSTALL = /bin/install -c -INSTALL_LIB = /bin/install -c -m 644 -INSTALL_PROG = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 - -AR = ar -ARFLAGS = -curv -AWK = gawk -LD = ld -LN_S = ln -s -f - -CTAGS = -ETAGS = - -CC = gcc -CPP = gcc -E -CFLAGS = -w -O2 -fPIC --param max-inline-insns-single=1200 - -CPPFLAGS = -I../ncurses -DHAVE_CONFIG_H -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) -g -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) -fPIC - -CFLAGS_DEFAULT = $(CFLAGS_NORMAL) - -LINK = $(LIBTOOL_LINK) -LDFLAGS = -s -fPIC -ldl - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses -ldl -ltinfo - -MK_SHARED_LIB = ${CC} ${CFLAGS} -shared -Wl,-soname,`basename $@ .${REL_VERSION}`.${ABI_VERSION},-stats,-lc -o $@ - -NCURSES_MAJOR = 5 -NCURSES_MINOR = 9 -REL_VERSION = 5.9 -ABI_VERSION = 5 - -RANLIB = ranlib - -LIBRARIES = ../lib/libmenu.a - -LINT = -LINT_OPTS = -LINT_LIBS = -lmenu -lncurses -ldl - -AUTO_SRC = \ - ../include/menu.h \ - ../include/eti.h \ - ../include/mf_common.h - -################################################################################ -all \ -libs \ -install :: $(AUTO_SRC) $(LIBRARIES) - -sources : $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -# make copies to simplify include-paths while still keeping menu's include -# file in this directory. -../include/menu.h : $(srcdir)/menu.h - -rm -f $@ - cp $(srcdir)/menu.h $@ -../include/eti.h : $(srcdir)/eti.h - -rm -f $@ - cp $(srcdir)/eti.h $@ -../include/mf_common.h : $(srcdir)/mf_common.h - -rm -f $@ - cp $(srcdir)/mf_common.h $@ - -HEADER_DEPS = \ - $(srcdir)/menu.priv.h \ - $(AUTO_SRC) \ - ../include/curses.h - -tags: - $(CTAGS) *.[ch] - -#TAGS: -# $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### - -# generated by mk-0th.awk -# libname: menu -# subsets: ticlib+termlib+ext_tinfo base+ext_funcs - -.SUFFIXES: .c .cc .h .i .ii -.c.i : - $(CPP) $(CPPFLAGS) $< >$@ -.cc.ii : - $(CPP) $(CPPFLAGS) $< >$@ -.h.i : - $(CPP) $(CPPFLAGS) $< >$@ - -C_SRC = \ - $(srcdir)/m_attribs.c \ - $(srcdir)/m_cursor.c \ - $(srcdir)/m_driver.c \ - $(srcdir)/m_format.c \ - $(srcdir)/m_global.c \ - $(srcdir)/m_hook.c \ - $(srcdir)/m_item_cur.c \ - $(srcdir)/m_item_nam.c \ - $(srcdir)/m_item_new.c \ - $(srcdir)/m_item_opt.c \ - $(srcdir)/m_item_top.c \ - $(srcdir)/m_item_use.c \ - $(srcdir)/m_item_val.c \ - $(srcdir)/m_item_vis.c \ - $(srcdir)/m_items.c \ - $(srcdir)/m_new.c \ - $(srcdir)/m_opts.c \ - $(srcdir)/m_pad.c \ - $(srcdir)/m_pattern.c \ - $(srcdir)/m_post.c \ - $(srcdir)/m_req_name.c \ - $(srcdir)/m_scale.c \ - $(srcdir)/m_spacing.c \ - $(srcdir)/m_sub.c \ - $(srcdir)/m_trace.c \ - $(srcdir)/m_userptr.c \ - $(srcdir)/m_win.c - -# Producing llib-lmenu is time-consuming, so there's no direct-dependency for -# it in the lintlib rule. We'll only remove in the cleanest setup. -clean :: - rm -f llib-lmenu.* - -realclean :: - rm -f llib-lmenu - -llib-lmenu : $(C_SRC) - cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@ - -lintlib : - sh $(srcdir)/../misc/makellib menu $(CPPFLAGS) -lint : - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS) - - - -# generated by mk-1st.awk (subset=base+ext_funcs) -# name: menu -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: base+ext_funcs -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h ./menu.priv.h -# host: x86_64-unknown-linux-gnu - -NORMAL_OBJS = \ - ../objects/m_attribs$o \ - ../objects/m_cursor$o \ - ../objects/m_driver$o \ - ../objects/m_format$o \ - ../objects/m_global$o \ - ../objects/m_hook$o \ - ../objects/m_item_cur$o \ - ../objects/m_item_nam$o \ - ../objects/m_item_new$o \ - ../objects/m_item_opt$o \ - ../objects/m_item_top$o \ - ../objects/m_item_use$o \ - ../objects/m_item_val$o \ - ../objects/m_item_vis$o \ - ../objects/m_items$o \ - ../objects/m_new$o \ - ../objects/m_opts$o \ - ../objects/m_pad$o \ - ../objects/m_pattern$o \ - ../objects/m_post$o \ - ../objects/m_req_name$o \ - ../objects/m_scale$o \ - ../objects/m_spacing$o \ - ../objects/m_sub$o \ - ../objects/m_userptr$o \ - ../objects/m_win$o - -$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./menu.priv.h - -../lib/libmenu.a : $(NORMAL_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -install \ -install.libs \ -install.menu :: $(DESTDIR)$(libdir) ../lib/libmenu.a - @echo installing ../lib/libmenu.a as $(DESTDIR)$(libdir)/libmenu.a - $(INSTALL_DATA) ../lib/libmenu.a $(DESTDIR)$(libdir)/libmenu.a - $(RANLIB) $(DESTDIR)$(libdir)/libmenu.a - -uninstall \ -uninstall.libs \ -uninstall.menu :: - @echo uninstalling $(DESTDIR)$(libdir)/libmenu.a - -@rm -f $(DESTDIR)$(libdir)/libmenu.a - -clean :: - -rm -f ../lib/libmenu.a - -rm -f ../lib/ - -rm -f ../lib/libmenu.a - -mostlyclean:: - -rm -f $(NORMAL_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: base+ext_funcs -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/m_attribs$o : $(srcdir)/m_attribs.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_attribs.c -o ../objects/m_attribs$o - -../objects/m_cursor$o : $(srcdir)/m_cursor.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_cursor.c -o ../objects/m_cursor$o - -../objects/m_driver$o : $(srcdir)/m_driver.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_driver.c -o ../objects/m_driver$o - -../objects/m_format$o : $(srcdir)/m_format.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_format.c -o ../objects/m_format$o - -../objects/m_global$o : $(srcdir)/m_global.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_global.c -o ../objects/m_global$o - -../objects/m_hook$o : $(srcdir)/m_hook.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_hook.c -o ../objects/m_hook$o - -../objects/m_item_cur$o : $(srcdir)/m_item_cur.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_cur.c -o ../objects/m_item_cur$o - -../objects/m_item_nam$o : $(srcdir)/m_item_nam.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_nam.c -o ../objects/m_item_nam$o - -../objects/m_item_new$o : $(srcdir)/m_item_new.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_new.c -o ../objects/m_item_new$o - -../objects/m_item_opt$o : $(srcdir)/m_item_opt.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_opt.c -o ../objects/m_item_opt$o - -../objects/m_item_top$o : $(srcdir)/m_item_top.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_top.c -o ../objects/m_item_top$o - -../objects/m_item_use$o : $(srcdir)/m_item_use.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_use.c -o ../objects/m_item_use$o - -../objects/m_item_val$o : $(srcdir)/m_item_val.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_val.c -o ../objects/m_item_val$o - -../objects/m_item_vis$o : $(srcdir)/m_item_vis.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_item_vis.c -o ../objects/m_item_vis$o - -../objects/m_items$o : $(srcdir)/m_items.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_items.c -o ../objects/m_items$o - -../objects/m_new$o : $(srcdir)/m_new.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_new.c -o ../objects/m_new$o - -../objects/m_opts$o : $(srcdir)/m_opts.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_opts.c -o ../objects/m_opts$o - -../objects/m_pad$o : $(srcdir)/m_pad.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_pad.c -o ../objects/m_pad$o - -../objects/m_pattern$o : $(srcdir)/m_pattern.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_pattern.c -o ../objects/m_pattern$o - -../objects/m_post$o : $(srcdir)/m_post.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_post.c -o ../objects/m_post$o - -../objects/m_req_name$o : $(srcdir)/m_req_name.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_req_name.c -o ../objects/m_req_name$o - -../objects/m_scale$o : $(srcdir)/m_scale.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_scale.c -o ../objects/m_scale$o - -../objects/m_spacing$o : $(srcdir)/m_spacing.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_spacing.c -o ../objects/m_spacing$o - -../objects/m_sub$o : $(srcdir)/m_sub.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_sub.c -o ../objects/m_sub$o - -../objects/m_userptr$o : $(srcdir)/m_userptr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_userptr.c -o ../objects/m_userptr$o - -../objects/m_win$o : $(srcdir)/m_win.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../menu/m_win.c -o ../objects/m_win$o - - -# generated by mk-hdr.awk -# subset: ticlib+termlib+ext_tinfo base+ext_funcs -# compat: yes - -${DESTDIR}${includedir} : - mkdir -p $@ - -install \ -install.libs \ -install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \ - $(srcdir)/eti.h \ - $(srcdir)/menu.h - @ (cd ${DESTDIR}${includedir} && rm -f eti.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/eti.h - @ (cd ${DESTDIR}${includedir} && rm -f menu.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/menu.h - -uninstall \ -uninstall.libs \ -uninstall.includes :: - -@ (cd ${DESTDIR}${includedir} && rm -f eti.h) - -@ (cd ${DESTDIR}${includedir} && rm -f menu.h) -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/deps/ncurses-5.9/menu/Makefile.in b/deps/ncurses-5.9/menu/Makefile.in deleted file mode 100644 index 253ff4f..0000000 --- a/deps/ncurses-5.9/menu/Makefile.in +++ /dev/null @@ -1,172 +0,0 @@ -# $Id: Makefile.in,v 1.54 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for menu source code. -# -# This makes the following: -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ - -LIBTOOL = @LIBTOOL@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ -LIBTOOL_INSTALL = @LIB_INSTALL@ -LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ -LT_UNDEF = @LT_UNDEF@ - -INSTALL = @INSTALL@ -INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ -INSTALL_PROG = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -AR = @AR@ -ARFLAGS = @ARFLAGS@ -AWK = @AWK@ -LD = @LD@ -LN_S = @LN_S@ - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -CC = @CC@ -CPP = @CPP@ -CFLAGS = @CFLAGS@ - -CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@ - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -LINK = $(LIBTOOL_LINK) -LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@ - -MK_SHARED_LIB = @MK_SHARED_LIB@ - -NCURSES_MAJOR = @NCURSES_MAJOR@ -NCURSES_MINOR = @NCURSES_MINOR@ -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ - -RANLIB = @LIB_PREP@ - -LIBRARIES = @LIBS_TO_MAKE@ - -LINT = @LINT@ -LINT_OPTS = @LINT_OPTS@ -LINT_LIBS = -lmenu -lncurses @LIBS@ - -AUTO_SRC = \ - ../include/menu.h \ - ../include/eti.h \ - ../include/mf_common.h - -################################################################################ -all \ -libs \ -install :: $(AUTO_SRC) $(LIBRARIES) - -sources : $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -# make copies to simplify include-paths while still keeping menu's include -# file in this directory. -../include/menu.h : $(srcdir)/menu.h - -rm -f $@ - cp $(srcdir)/menu.h $@ -../include/eti.h : $(srcdir)/eti.h - -rm -f $@ - cp $(srcdir)/eti.h $@ -../include/mf_common.h : $(srcdir)/mf_common.h - -rm -f $@ - cp $(srcdir)/mf_common.h $@ - -HEADER_DEPS = \ - $(srcdir)/menu.priv.h \ - $(AUTO_SRC) \ - ../include/curses.h - -tags: - $(CTAGS) *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/menu/READ.ME b/deps/ncurses-5.9/menu/READ.ME deleted file mode 100644 index 10ff5b0..0000000 --- a/deps/ncurses-5.9/menu/READ.ME +++ /dev/null @@ -1,42 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2003,2006 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. -- -------------------------------------------------------------------------------- --- $Id: READ.ME,v 1.9 2006/04/22 23:13:05 tom Exp $ -------------------------------------------------------------------------------- - -This is a clone of the menu library that is available with typical -System V curses implementations (ETI). - -It is modelled after the documentation that comes for this library with -a 386 based SVR4 implementation (ESIX). - -The development environment was and is an ELF based Linux system. - -For things that still need doing, see the TO-DO file in the top-level -directory. - -Juergen Pfeifer diff --git a/deps/ncurses-5.9/menu/eti.h b/deps/ncurses-5.9/menu/eti.h deleted file mode 100644 index baa6190..0000000 --- a/deps/ncurses-5.9/menu/eti.h +++ /dev/null @@ -1,54 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2002,2003 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: eti.h,v 1.8 2003/10/25 15:24:29 tom Exp $ */ - -#ifndef NCURSES_ETI_H_incl -#define NCURSES_ETI_H_incl 1 - -#define E_OK (0) -#define E_SYSTEM_ERROR (-1) -#define E_BAD_ARGUMENT (-2) -#define E_POSTED (-3) -#define E_CONNECTED (-4) -#define E_BAD_STATE (-5) -#define E_NO_ROOM (-6) -#define E_NOT_POSTED (-7) -#define E_UNKNOWN_COMMAND (-8) -#define E_NO_MATCH (-9) -#define E_NOT_SELECTABLE (-10) -#define E_NOT_CONNECTED (-11) -#define E_REQUEST_DENIED (-12) -#define E_INVALID_FIELD (-13) -#define E_CURRENT (-14) - -#endif diff --git a/deps/ncurses-5.9/menu/headers b/deps/ncurses-5.9/menu/headers deleted file mode 100644 index 18c20af..0000000 --- a/deps/ncurses-5.9/menu/headers +++ /dev/null @@ -1,33 +0,0 @@ -############################################################################## -# Copyright (c) 1998,2006 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: Thomas E. Dickey 1996 -# -$(srcdir)/eti.h -$(srcdir)/menu.h -# vile:makemode diff --git a/deps/ncurses-5.9/menu/menu.h b/deps/ncurses-5.9/menu/menu.h deleted file mode 100644 index 4eeac01..0000000 --- a/deps/ncurses-5.9/menu/menu.h +++ /dev/null @@ -1,260 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2007,2009 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: menu.h,v 1.20 2009/04/05 00:28:07 tom Exp $ */ - -#ifndef ETI_MENU -#define ETI_MENU - -#ifdef AMIGA -#define TEXT TEXT_ncurses -#endif - -#include -#include - -#ifdef __cplusplus -extern "C" { -#endif - -typedef int Menu_Options; -typedef int Item_Options; - -/* Menu options: */ -#define O_ONEVALUE (0x01) -#define O_SHOWDESC (0x02) -#define O_ROWMAJOR (0x04) -#define O_IGNORECASE (0x08) -#define O_SHOWMATCH (0x10) -#define O_NONCYCLIC (0x20) - -/* Item options: */ -#define O_SELECTABLE (0x01) - -typedef struct -{ - const char* str; - unsigned short length; -} TEXT; - -typedef struct tagITEM -{ - TEXT name; /* name of menu item */ - TEXT description; /* description of item, optional in display */ - struct tagMENU *imenu; /* Pointer to parent menu */ - void *userptr; /* Pointer to user defined per item data */ - Item_Options opt; /* Item options */ - short index; /* Item number if connected to a menu */ - short y; /* y and x location of item in menu */ - short x; - bool value; /* Selection value */ - - struct tagITEM *left; /* neighbor items */ - struct tagITEM *right; - struct tagITEM *up; - struct tagITEM *down; - -} ITEM; - -typedef void (*Menu_Hook)(struct tagMENU *); - -typedef struct tagMENU -{ - short height; /* Nr. of chars high */ - short width; /* Nr. of chars wide */ - short rows; /* Nr. of items high */ - short cols; /* Nr. of items wide */ - short frows; /* Nr. of formatted items high */ - short fcols; /* Nr. of formatted items wide */ - short arows; /* Nr. of items high (actual) */ - short namelen; /* Max. name length */ - short desclen; /* Max. description length */ - short marklen; /* Length of mark, if any */ - short itemlen; /* Length of one item */ - short spc_desc; /* Spacing for descriptor */ - short spc_cols; /* Spacing for columns */ - short spc_rows; /* Spacing for rows */ - char *pattern; /* Buffer to store match chars */ - short pindex; /* Index into pattern buffer */ - WINDOW *win; /* Window containing menu */ - WINDOW *sub; /* Subwindow for menu display */ - WINDOW *userwin; /* User's window */ - WINDOW *usersub; /* User's subwindow */ - ITEM **items; /* array of items */ - short nitems; /* Nr. of items in menu */ - ITEM *curitem; /* Current item */ - short toprow; /* Top row of menu */ - chtype fore; /* Selection attribute */ - chtype back; /* Nonselection attribute */ - chtype grey; /* Inactive attribute */ - unsigned char pad; /* Pad character */ - - Menu_Hook menuinit; /* User hooks */ - Menu_Hook menuterm; - Menu_Hook iteminit; - Menu_Hook itemterm; - - void *userptr; /* Pointer to menus user data */ - char *mark; /* Pointer to marker string */ - - Menu_Options opt; /* Menu options */ - unsigned short status; /* Internal state of menu */ - -} MENU; - - -/* Define keys */ - -#define REQ_LEFT_ITEM (KEY_MAX + 1) -#define REQ_RIGHT_ITEM (KEY_MAX + 2) -#define REQ_UP_ITEM (KEY_MAX + 3) -#define REQ_DOWN_ITEM (KEY_MAX + 4) -#define REQ_SCR_ULINE (KEY_MAX + 5) -#define REQ_SCR_DLINE (KEY_MAX + 6) -#define REQ_SCR_DPAGE (KEY_MAX + 7) -#define REQ_SCR_UPAGE (KEY_MAX + 8) -#define REQ_FIRST_ITEM (KEY_MAX + 9) -#define REQ_LAST_ITEM (KEY_MAX + 10) -#define REQ_NEXT_ITEM (KEY_MAX + 11) -#define REQ_PREV_ITEM (KEY_MAX + 12) -#define REQ_TOGGLE_ITEM (KEY_MAX + 13) -#define REQ_CLEAR_PATTERN (KEY_MAX + 14) -#define REQ_BACK_PATTERN (KEY_MAX + 15) -#define REQ_NEXT_MATCH (KEY_MAX + 16) -#define REQ_PREV_MATCH (KEY_MAX + 17) - -#define MIN_MENU_COMMAND (KEY_MAX + 1) -#define MAX_MENU_COMMAND (KEY_MAX + 17) - -/* - * Some AT&T code expects MAX_COMMAND to be out-of-band not - * just for menu commands but for forms ones as well. - */ -#if defined(MAX_COMMAND) -# if (MAX_MENU_COMMAND > MAX_COMMAND) -# error Something is wrong -- MAX_MENU_COMMAND is greater than MAX_COMMAND -# elif (MAX_COMMAND != (KEY_MAX + 128)) -# error Something is wrong -- MAX_COMMAND is already inconsistently defined. -# endif -#else -# define MAX_COMMAND (KEY_MAX + 128) -#endif - - -/* --------- prototypes for libmenu functions ----------------------------- */ - -extern NCURSES_EXPORT(ITEM **) menu_items (const MENU *); -extern NCURSES_EXPORT(ITEM *) current_item (const MENU *); -extern NCURSES_EXPORT(ITEM *) new_item (const char *,const char *); - -extern NCURSES_EXPORT(MENU *) new_menu (ITEM **); - -extern NCURSES_EXPORT(Item_Options) item_opts (const ITEM *); -extern NCURSES_EXPORT(Menu_Options) menu_opts (const MENU *); - -extern NCURSES_EXPORT(Menu_Hook) item_init (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) item_term (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) menu_init (const MENU *); -extern NCURSES_EXPORT(Menu_Hook) menu_term (const MENU *); - -extern NCURSES_EXPORT(WINDOW *) menu_sub (const MENU *); -extern NCURSES_EXPORT(WINDOW *) menu_win (const MENU *); - -extern NCURSES_EXPORT(const char *) item_description (const ITEM *); -extern NCURSES_EXPORT(const char *) item_name (const ITEM *); -extern NCURSES_EXPORT(const char *) menu_mark (const MENU *); -extern NCURSES_EXPORT(const char *) menu_request_name (int); - -extern NCURSES_EXPORT(char *) menu_pattern (const MENU *); - -extern NCURSES_EXPORT(void *) menu_userptr (const MENU *); -extern NCURSES_EXPORT(void *) item_userptr (const ITEM *); - -extern NCURSES_EXPORT(chtype) menu_back (const MENU *); -extern NCURSES_EXPORT(chtype) menu_fore (const MENU *); -extern NCURSES_EXPORT(chtype) menu_grey (const MENU *); - -extern NCURSES_EXPORT(int) free_item (ITEM *); -extern NCURSES_EXPORT(int) free_menu (MENU *); -extern NCURSES_EXPORT(int) item_count (const MENU *); -extern NCURSES_EXPORT(int) item_index (const ITEM *); -extern NCURSES_EXPORT(int) item_opts_off (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) item_opts_on (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) menu_driver (MENU *,int); -extern NCURSES_EXPORT(int) menu_opts_off (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) menu_opts_on (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) menu_pad (const MENU *); -extern NCURSES_EXPORT(int) pos_menu_cursor (const MENU *); -extern NCURSES_EXPORT(int) post_menu (MENU *); -extern NCURSES_EXPORT(int) scale_menu (const MENU *,int *,int *); -extern NCURSES_EXPORT(int) set_current_item (MENU *menu,ITEM *item); -extern NCURSES_EXPORT(int) set_item_init (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_item_opts (ITEM *,Item_Options); -extern NCURSES_EXPORT(int) set_item_term (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_item_userptr (ITEM *, void *); -extern NCURSES_EXPORT(int) set_item_value (ITEM *,bool); -extern NCURSES_EXPORT(int) set_menu_back (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_fore (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_format (MENU *,int,int); -extern NCURSES_EXPORT(int) set_menu_grey (MENU *,chtype); -extern NCURSES_EXPORT(int) set_menu_init (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_menu_items (MENU *,ITEM **); -extern NCURSES_EXPORT(int) set_menu_mark (MENU *, const char *); -extern NCURSES_EXPORT(int) set_menu_opts (MENU *,Menu_Options); -extern NCURSES_EXPORT(int) set_menu_pad (MENU *,int); -extern NCURSES_EXPORT(int) set_menu_pattern (MENU *,const char *); -extern NCURSES_EXPORT(int) set_menu_sub (MENU *,WINDOW *); -extern NCURSES_EXPORT(int) set_menu_term (MENU *, Menu_Hook); -extern NCURSES_EXPORT(int) set_menu_userptr (MENU *,void *); -extern NCURSES_EXPORT(int) set_menu_win (MENU *,WINDOW *); -extern NCURSES_EXPORT(int) set_top_row (MENU *,int); -extern NCURSES_EXPORT(int) top_row (const MENU *); -extern NCURSES_EXPORT(int) unpost_menu (MENU *); -extern NCURSES_EXPORT(int) menu_request_by_name (const char *); -extern NCURSES_EXPORT(int) set_menu_spacing (MENU *,int,int,int); -extern NCURSES_EXPORT(int) menu_spacing (const MENU *,int *,int *,int *); - - -extern NCURSES_EXPORT(bool) item_value (const ITEM *); -extern NCURSES_EXPORT(bool) item_visible (const ITEM *); - -extern NCURSES_EXPORT(void) menu_format (const MENU *,int *,int *); - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(MENU *) NCURSES_SP_NAME(new_menu) (SCREEN*, ITEM **); -#endif - -#ifdef __cplusplus - } -#endif - -#endif /* ETI_MENU */ diff --git a/deps/ncurses-5.9/menu/menu.priv.h b/deps/ncurses-5.9/menu/menu.priv.h deleted file mode 100644 index 99580a3..0000000 --- a/deps/ncurses-5.9/menu/menu.priv.h +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2005,2009 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: menu.priv.h,v 1.23 2009/02/28 21:02:57 juergen Exp $ */ - -/*************************************************************************** -* Module menu.priv.h * -* Top level private header file for all libnmenu modules * -***************************************************************************/ - -#ifndef MENU_PRIV_H_incl -#define MENU_PRIV_H_incl 1 - -#include "curses.priv.h" -#include "mf_common.h" -#include "menu.h" - -/* Backspace code */ -#define BS (8) - -extern NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item; -extern NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu; - -/* Normalize item to default if none was given */ -#define Normalize_Item( item ) ((item)=(item)?(item):&_nc_Default_Item) - -/* 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) - -/* Normalize menu window */ -#define Get_Menu_Window( menu ) \ - ((menu)->usersub ? (menu)->usersub : Get_Menu_UserWin(menu)) - -/* menu specific status flags */ -#define _LINK_NEEDED (0x04) -#define _MARK_ALLOCATED (0x08) - -#define ALL_MENU_OPTS ( \ - O_ONEVALUE | \ - O_SHOWDESC | \ - O_ROWMAJOR | \ - O_IGNORECASE | \ - O_SHOWMATCH | \ - O_NONCYCLIC ) - -#define ALL_ITEM_OPTS (O_SELECTABLE) - -/* Move to the window position of an item and draw it */ -#define Move_And_Post_Item(menu,item) \ - {wmove((menu)->win,(menu)->spc_rows*(item)->y,((menu)->itemlen+(menu)->spc_cols)*(item)->x);\ - _nc_Post_Item((menu),(item));} - -#define Move_To_Current_Item(menu,item) \ - if ( (item) != (menu)->curitem)\ - {\ - Move_And_Post_Item(menu,item);\ - Move_And_Post_Item(menu,(menu)->curitem);\ - } - -/* This macro ensures, that the item becomes visible, if possible with the - specified row as the top row of the window. If this is not possible, - the top row will be adjusted and the value is stored in the row argument. -*/ -#define Adjust_Current_Item(menu,row,item) \ - { if ((item)->y < row) \ - row = (item)->y;\ - if ( (item)->y >= (row + (menu)->arows) )\ - row = ( (item)->y < ((menu)->rows - row) ) ? \ - (item)->y : (menu)->rows - (menu)->arows;\ - _nc_New_TopRow_and_CurrentItem(menu,row,item); } - -/* Reset the match pattern buffer */ -#define Reset_Pattern(menu) \ - { (menu)->pindex = 0; \ - (menu)->pattern[0] = '\0'; } - -#define UChar(c) ((unsigned char)(c)) - -/* Internal functions. */ -extern NCURSES_EXPORT(void) _nc_Draw_Menu (const MENU *); -extern NCURSES_EXPORT(void) _nc_Show_Menu (const MENU *); -extern NCURSES_EXPORT(void) _nc_Calculate_Item_Length_and_Width (MENU *); -extern NCURSES_EXPORT(int) _nc_Calculate_Text_Width(const TEXT *); -extern NCURSES_EXPORT(void) _nc_Post_Item (const MENU *, const ITEM *); -extern NCURSES_EXPORT(bool) _nc_Connect_Items (MENU *, ITEM **); -extern NCURSES_EXPORT(void) _nc_Disconnect_Items (MENU *); -extern NCURSES_EXPORT(void) _nc_New_TopRow_and_CurrentItem (MENU *,int, ITEM *); -extern NCURSES_EXPORT(void) _nc_Link_Items (MENU *); -extern NCURSES_EXPORT(int) _nc_Match_Next_Character_In_Item_Name (MENU*,int,ITEM**); -extern NCURSES_EXPORT(int) _nc_menu_cursor_pos (const MENU* menu, const ITEM* item, - int* pY, int* pX); - -#ifdef TRACE - -#define returnItem(code) TRACE_RETURN(code,item) -#define returnItemPtr(code) TRACE_RETURN(code,item_ptr) -#define returnItemOpts(code) TRACE_RETURN(code,item_opts) -#define returnMenu(code) TRACE_RETURN(code,menu) -#define returnMenuHook(code) TRACE_RETURN(code,menu_hook) -#define returnMenuOpts(code) TRACE_RETURN(code,menu_opts) - -extern NCURSES_EXPORT(ITEM *) _nc_retrace_item (ITEM *); -extern NCURSES_EXPORT(ITEM **) _nc_retrace_item_ptr (ITEM **); -extern NCURSES_EXPORT(Item_Options) _nc_retrace_item_opts (Item_Options); -extern NCURSES_EXPORT(MENU *) _nc_retrace_menu (MENU *); -extern NCURSES_EXPORT(Menu_Hook) _nc_retrace_menu_hook (Menu_Hook); -extern NCURSES_EXPORT(Menu_Options) _nc_retrace_menu_opts (Menu_Options); - -#else /* !TRACE */ - -#define returnItem(code) return code -#define returnItemPtr(code) return code -#define returnItemOpts(code) return code -#define returnMenu(code) return code -#define returnMenuHook(code) return code -#define returnMenuOpts(code) return code - -#endif /* TRACE/!TRACE */ - -#endif /* MENU_PRIV_H_incl */ diff --git a/deps/ncurses-5.9/menu/mf_common.h b/deps/ncurses-5.9/menu/mf_common.h deleted file mode 100644 index 681672d..0000000 --- a/deps/ncurses-5.9/menu/mf_common.h +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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, 1995,1997 * - ****************************************************************************/ - -/* $Id: mf_common.h,v 0.22 2005/11/26 15:26:52 tom Exp $ */ - -/* Common internal header for menu and form library */ - -#ifndef MF_COMMON_H_incl -#define MF_COMMON_H_incl 1 - -#include -#include - -#include -#include -#include -#include -#include -#include - -#if DECL_ERRNO -extern int errno; -#endif - -/* in case of debug version we ignore the suppression of assertions */ -#ifdef TRACE -# ifdef NDEBUG -# undef NDEBUG -# endif -#endif - -#include - -#if USE_RCS_IDS -#define MODULE_ID(id) static const char Ident[] = id; -#else -#define MODULE_ID(id) /*nothing*/ -#endif - - -/* Maximum regular 8-bit character code */ -#define MAX_REGULAR_CHARACTER (0xff) - -#define SET_ERROR(code) (errno=(code)) -#define GET_ERROR() (errno) - -#ifdef TRACE -#define RETURN(code) returnCode( SET_ERROR(code) ) -#else -#define RETURN(code) return( SET_ERROR(code) ) -#endif - -/* The few common values in the status fields for menus and forms */ -#define _POSTED (0x01U) /* menu or form is posted */ -#define _IN_DRIVER (0x02U) /* menu or form is processing hook routine */ - -/* Call object hook */ -#define Call_Hook( object, handler ) \ - if ( (object) != 0 && ((object)->handler) != (void *) 0 )\ - {\ - (object)->status |= _IN_DRIVER;\ - (object)->handler(object);\ - (object)->status &= ~_IN_DRIVER;\ - } - -#endif /* MF_COMMON_H_incl */ diff --git a/deps/ncurses-5.9/menu/modules b/deps/ncurses-5.9/menu/modules deleted file mode 100644 index fac8fce..0000000 --- a/deps/ncurses-5.9/menu/modules +++ /dev/null @@ -1,63 +0,0 @@ -# $Id: modules,v 1.18 2010/01/23 16:36:23 tom Exp $ -############################################################################## -# Copyright (c) 1998-2006,2010 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: Thomas E. Dickey 1996-on -# - -@ base -# Library objects -m_attribs lib $(srcdir) $(HEADER_DEPS) -m_cursor lib $(srcdir) $(HEADER_DEPS) -m_driver lib $(srcdir) $(HEADER_DEPS) -m_format lib $(srcdir) $(HEADER_DEPS) -m_global lib $(srcdir) $(HEADER_DEPS) -m_hook lib $(srcdir) $(HEADER_DEPS) -m_item_cur lib $(srcdir) $(HEADER_DEPS) -m_item_nam lib $(srcdir) $(HEADER_DEPS) -m_item_new lib $(srcdir) $(HEADER_DEPS) -m_item_opt lib $(srcdir) $(HEADER_DEPS) -m_item_top lib $(srcdir) $(HEADER_DEPS) -m_item_use lib $(srcdir) $(HEADER_DEPS) -m_item_val lib $(srcdir) $(HEADER_DEPS) -m_item_vis lib $(srcdir) $(HEADER_DEPS) -m_items lib $(srcdir) $(HEADER_DEPS) -m_new lib $(srcdir) $(HEADER_DEPS) -m_opts lib $(srcdir) $(HEADER_DEPS) -m_pad lib $(srcdir) $(HEADER_DEPS) -m_pattern lib $(srcdir) $(HEADER_DEPS) -m_post lib $(srcdir) $(HEADER_DEPS) -m_req_name lib $(srcdir) $(HEADER_DEPS) -m_scale lib $(srcdir) $(HEADER_DEPS) -m_spacing lib $(srcdir) $(HEADER_DEPS) -m_sub lib $(srcdir) $(HEADER_DEPS) -m_trace lib $(srcdir) $(HEADER_DEPS) -m_userptr lib $(srcdir) $(HEADER_DEPS) -m_win lib $(srcdir) $(HEADER_DEPS) - -# vile:makemode diff --git a/deps/ncurses-5.9/misc/Makefile b/deps/ncurses-5.9/misc/Makefile deleted file mode 100644 index c82cae7..0000000 --- a/deps/ncurses-5.9/misc/Makefile +++ /dev/null @@ -1,164 +0,0 @@ -# $Id: Makefile.in,v 1.56 2011/02/21 01:09:31 tom Exp $ -############################################################################## -# Copyright (c) 1998-2010,2011 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses miscellany directory -# -# This makes/installs the terminfo database -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, -# and the programs with the configured default model. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES : - -SHELL = /bin/sh - -THIS = Makefile - -CF_MFLAGS = - - -DESTDIR = -top_srcdir = .. -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -bindir = ${exec_prefix}/bin -libdir = ${exec_prefix}/lib -datadir = ${prefix}/share - -tabsetdir = $(datadir)/tabset -ticdir = /home/martino/avrdude-build-script/objdir/share/terminfo -ticfile = $(ticdir).db -source = ${top_srcdir}/misc/terminfo.src - -INSTALL = /bin/install -c -INSTALL_PROGRAM = ${INSTALL} -INSTALL_SCRIPT = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 - -PKG_CONFIG_LIBDIR = /lib/pkgconfig - -################################################################################ -all : terminfo.tmp - -depend : - -sources :: terminfo.tmp - -install : install.data install.libs - -install.data : terminfo.tmp \ - $(DESTDIR)$(libdir) \ - $(DESTDIR)$(datadir) \ - $(DESTDIR)$(tabsetdir) - DESTDIR=${DESTDIR} \ - prefix=${prefix} \ - exec_prefix=${exec_prefix} \ - bindir=${bindir} \ - top_srcdir=${top_srcdir} \ - srcdir=${srcdir} \ - datadir=${datadir} \ - ticdir=${ticdir} \ - source=terminfo.tmp \ - cross_compiling=no \ - $(SHELL) ./run_tic.sh - @cd $(srcdir)/tabset && \ - $(SHELL) -c 'for i in * ; do \ - if test -f $$i ; then \ - echo installing $$i; \ - $(INSTALL_DATA) $$i $(DESTDIR)$(tabsetdir)/$$i; \ - fi; done' - -NCURSES_CONFIG = ncurses5-config - -install.libs :: $(DESTDIR)$(bindir) ncurses-config - $(INSTALL_SCRIPT) ncurses-config $(DESTDIR)$(bindir)/$(NCURSES_CONFIG) - -#install.libs :: pc-files $(DESTDIR)$(PKG_CONFIG_LIBDIR) -# $(SHELL) -c 'for name in *.pc; do $(INSTALL_DATA) $$name $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done' - -#sources :: pc-files -#pc-files : -# $(SHELL) ./gen-pkgconfig -# touch $@ - -terminfo.tmp : run_tic.sed $(source) - echo '** adjusting tabset paths' - sed -f run_tic.sed $(source) >terminfo.tmp - -run_tic.sed : - WHICH_XTERM=xterm-new \ - ticdir=${ticdir} \ - $(SHELL) $(srcdir)/gen_edit.sh >$@ - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) \ -$(DESTDIR)$(datadir) \ -$(DESTDIR)$(tabsetdir) \ -$(DESTDIR)$(PKG_CONFIG_LIBDIR) : - mkdir -p $@ - -uninstall : 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) - -uninstall.libs : - -rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG) -# $(SHELL) 'for name in *.pc; do rm -f $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done' - -tags : - -#TAGS : - -mostlyclean : - -rm -f terminfo.tmp - -rm -f run_tic.sed -# -rm -f *.pc pc-files - -rm -f core tags TAGS *~ *.bak *.ln *.atac trace - -clean :: mostlyclean - -distclean : clean -# -rm -f gen-pkgconfig - -rm -f Makefile run_tic.sh ncurses-config - -realclean : distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/misc/Makefile.in b/deps/ncurses-5.9/misc/Makefile.in deleted file mode 100644 index 93c9b3d..0000000 --- a/deps/ncurses-5.9/misc/Makefile.in +++ /dev/null @@ -1,164 +0,0 @@ -# $Id: Makefile.in,v 1.56 2011/02/21 01:09:31 tom Exp $ -############################################################################## -# Copyright (c) 1998-2010,2011 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses miscellany directory -# -# This makes/installs the terminfo database -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, -# and the programs with the configured default model. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES : - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -CF_MFLAGS = @cf_cv_makeflags@ -@SET_MAKE@ - -DESTDIR = @DESTDIR@ -top_srcdir = @top_srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -datadir = @datadir@ - -tabsetdir = $(datadir)/tabset -ticdir = @TERMINFO@ -ticfile = $(ticdir).db -source = @TERMINFO_SRC@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -INSTALL_DATA = @INSTALL_DATA@ - -PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ - -################################################################################ -all : terminfo.tmp - -depend : - -sources :: terminfo.tmp - -install : install.data install.libs - -install.data : terminfo.tmp \ - $(DESTDIR)$(libdir) \ - $(DESTDIR)$(datadir) \ - $(DESTDIR)$(tabsetdir) - DESTDIR=${DESTDIR} \ - prefix=${prefix} \ - exec_prefix=${exec_prefix} \ - bindir=${bindir} \ - top_srcdir=${top_srcdir} \ - srcdir=${srcdir} \ - datadir=${datadir} \ - ticdir=${ticdir} \ - source=terminfo.tmp \ - cross_compiling=@cross_compiling@ \ - $(SHELL) ./run_tic.sh - @cd $(srcdir)/tabset && \ - $(SHELL) -c 'for i in * ; do \ - if test -f $$i ; then \ - echo installing $$i; \ - $(INSTALL_DATA) $$i $(DESTDIR)$(tabsetdir)/$$i; \ - fi; done' - -NCURSES_CONFIG = ncurses@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config - -install.libs :: $(DESTDIR)$(bindir) ncurses-config - $(INSTALL_SCRIPT) ncurses-config $(DESTDIR)$(bindir)/$(NCURSES_CONFIG) - -@MAKE_PC_FILES@install.libs :: pc-files $(DESTDIR)$(PKG_CONFIG_LIBDIR) -@MAKE_PC_FILES@ $(SHELL) -c 'for name in *.pc; do $(INSTALL_DATA) $$name $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done' - -@MAKE_PC_FILES@sources :: pc-files -@MAKE_PC_FILES@pc-files : -@MAKE_PC_FILES@ $(SHELL) ./gen-pkgconfig -@MAKE_PC_FILES@ touch $@ - -terminfo.tmp : run_tic.sed $(source) - echo '** adjusting tabset paths' - sed -f run_tic.sed $(source) >terminfo.tmp - -run_tic.sed : - WHICH_XTERM=@WHICH_XTERM@ \ - ticdir=${ticdir} \ - $(SHELL) $(srcdir)/gen_edit.sh >$@ - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) \ -$(DESTDIR)$(datadir) \ -$(DESTDIR)$(tabsetdir) \ -$(DESTDIR)$(PKG_CONFIG_LIBDIR) : - mkdir -p $@ - -uninstall : 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) - -uninstall.libs : - -rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG) -@MAKE_PC_FILES@ $(SHELL) 'for name in *.pc; do rm -f $(DESTDIR)$(PKG_CONFIG_LIBDIR)/$$name; done' - -tags : - -@MAKE_UPPER_TAGS@TAGS : - -mostlyclean : - -rm -f terminfo.tmp - -rm -f run_tic.sed -@MAKE_PC_FILES@ -rm -f *.pc pc-files - -rm -f core tags TAGS *~ *.bak *.ln *.atac trace - -clean :: mostlyclean - -distclean : clean -@MAKE_PC_FILES@ -rm -f gen-pkgconfig - -rm -f Makefile run_tic.sh ncurses-config - -realclean : distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/misc/gen-pkgconfig.in b/deps/ncurses-5.9/misc/gen-pkgconfig.in deleted file mode 100644 index efd2910..0000000 --- a/deps/ncurses-5.9/misc/gen-pkgconfig.in +++ /dev/null @@ -1,139 +0,0 @@ -#!@SHELL@ -# $Id: gen-pkgconfig.in,v 1.8 2010/02/06 22:12:07 Miroslav.Lichvar Exp $ -############################################################################## -# Copyright (c) 2009,2010 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: Thomas E. Dickey, 2009 -# -# The complete configure script for ncurses is the ncurses5-config (or similar -# name, depending on the flavor, e.g., ncursesw5-config, ncurses6-config, etc). -# That provides more information than pkg-config, and is the portable and -# recommended solution. -# -# For each library, generate a ".pc" file which depends on the base ncurses -# library, except that the tinfo library does not depend on ncurses. -LIB_NAME=@LIB_NAME@ -TINFO_NAME=@TINFO_NAME@ -PANEL_NAME=panel # @PANEL_NAME@ -MENU_NAME=menu # @MENU_NAME@ -FORM_NAME=form # @FORM_NAME@ -CXX_NAME=ncurses++ # @CXX_NAME@ -DFT_DEP_SUFFIX=@DFT_DEP_SUFFIX@ -TINFO_ARG_SUFFIX=@TINFO_ARG_SUFFIX@ -CXX_LIB_SUFFIX=@CXX_LIB_SUFFIX@ - -prefix="@prefix@" -exec_prefix="@exec_prefix@" -includedir="@includedir@" -libdir="@libdir@" - -show_prefix='@prefix@' -show_exec_prefix='@exec_prefix@' -show_includedir='@includedir@' -show_libdir='@libdir@' - -MAIN_LIBRARY="${LIB_NAME}@DFT_ARG_SUFFIX@" -SUB_LIBRARY="${TINFO_ARG_SUFFIX}" -PANEL_LIBRARY="${PANEL_NAME}@DFT_ARG_SUFFIX@" -MENU_LIBRARY="${MENU_NAME}@DFT_ARG_SUFFIX@" -FORM_LIBRARY="${FORM_NAME}@DFT_ARG_SUFFIX@" - -SUB_LIBRARY_REQ=${SUB_LIBRARY} -if test $TINFO_NAME = $LIB_NAME ; then - SUB_LIBRARY_REQ= -fi - -for lib in ../lib/* -do - name=`basename $lib` - if test "$name" = "*" ; then - break - fi - - root=`basename $name "$DFT_DEP_SUFFIX"` - if test "$name" = "$root" ; then - root=`basename $name "$CXX_LIB_SUFFIX"` - if test "$name" = "$root" ; then - continue - fi - fi - - name=`echo "$name" | sed -e 's/^lib//' -e 's/\..*$//'` - - desc="ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" - if test $name = $MAIN_LIBRARY ; then - reqs=$SUB_LIBRARY_REQ - desc="$desc library" - elif test $name = $SUB_LIBRARY ; then - reqs= - desc="$desc terminal interface library" - elif expr $name : ".*${CXX_NAME}.*" >/dev/null ; then - reqs="$PANEL_LIBRARY $MENU_LIBRARY $FORM_LIBRARY $MAIN_LIBRARY $SUB_LIBRARY_REQ" - desc="$desc add-on library" - else - reqs="$MAIN_LIBRARY $SUB_LIBRARY_REQ" - desc="$desc add-on library" - fi - - if test "$includedir" = "/usr/include" ; then - cflags= - else - cflags="-I\${includedir}" - fi - - if test "$libdir" = "/usr/lib" ; then - libs= - else - libs="-L\${libdir}" - fi - libs="$libs -l$name" - - # add dependencies that pkg-config cannot guess about - if test -z "$reqs" ; then - libs="$libs @LIBS@" - fi - - echo "** creating ${name}.pc" - cat >${name}.pc < -if test xno = xno ; then - case $includedir in - $prefix/include/ncurses) - includedir=`echo "$includedir" | sed -e 's,/[^/]*$,,'` - ;; - esac -fi - -test $# = 0 && exec /bin/sh $0 --error - -while test $# -gt 0; do - case "$1" in - # basic configuration - --prefix) - echo "$prefix" - ;; - --exec-prefix) - echo "$exec_prefix" - ;; - # compile/link - --cflags) - INCS= - if test "xno" = xno ; then - INCS="$INCS -I${includedir}/${THIS}" - fi - if test "${includedir}" != /usr/include ; then - INCS="$INCS -I${includedir}" - fi - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - $INCS -ENDECHO - ;; - --libs) - if test tinfo = ncurses ; then - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - -L$libdir -l${THIS} -ldl -ENDECHO - else - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - -L$libdir -l${THIS} -l${TINFO_LIB} -ldl -ENDECHO - fi - ;; - # identification - --version) - echo "5.9.20110404" - ;; - --abi-version) - echo "5" - ;; - --mouse-version) - echo "1" - ;; - # locations - --bindir) - echo "${bindir}" - ;; - --datadir) - echo "${datadir}" - ;; - --includedir) - echo "${includedir}" - ;; - --libdir) - echo "${libdir}" - ;; - --mandir) - echo "${mandir}" - ;; - --terminfo) - echo "/home/martino/avrdude-build-script/objdir/share/terminfo" - ;; - --terminfo-dirs) - echo "/home/martino/avrdude-build-script/objdir/share/terminfo" - ;; - --termpath) - echo "/etc/termcap:/usr/share/misc/termcap" - ;; - # general info - --help) - cat <&2 - exit 1 - ;; - esac - shift -done -# vile:shmode diff --git a/deps/ncurses-5.9/misc/ncurses-config.in b/deps/ncurses-5.9/misc/ncurses-config.in deleted file mode 100644 index a9c0ac5..0000000 --- a/deps/ncurses-5.9/misc/ncurses-config.in +++ /dev/null @@ -1,166 +0,0 @@ -#!@SHELL@ -# $Id: ncurses-config.in,v 1.25 2011/03/19 22:43:38 tom Exp $ -############################################################################## -# Copyright (c) 2006-2010,2011 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: Thomas E. Dickey, 2006-on - -prefix="@prefix@" -exec_prefix="@exec_prefix@" - -bindir="@bindir@" -includedir="@includedir@" -libdir="@libdir@" -datadir="@datadir@" -mandir="@mandir@" - -THIS="@LIB_NAME@@DFT_ARG_SUFFIX@" -TINFO_LIB="@TINFO_ARG_SUFFIX@" - -LANG=C; export LANG -LANGUAGE=C; export LANGUAGE -LC_ALL=C; export LC_ALL -LC_CTYPE=C; export LC_CTYPE - -# with --disable-overwrite, we installed into a subdirectory, but transformed -# the headers to include like this: -# -if test x@WITH_OVERWRITE@ = xno ; then - case $includedir in - $prefix/include/ncurses@LIB_SUFFIX@) - includedir=`echo "$includedir" | sed -e 's,/[^/]*$,,'` - ;; - esac -fi - -test $# = 0 && exec @SHELL@ $0 --error - -while test $# -gt 0; do - case "$1" in - # basic configuration - --prefix) - echo "$prefix" - ;; - --exec-prefix) - echo "$exec_prefix" - ;; - # compile/link - --cflags) - INCS= - if test "x@WITH_OVERWRITE@" = xno ; then - INCS="$INCS -I${includedir}/${THIS}" - fi - if test "${includedir}" != /usr/include ; then - INCS="$INCS -I${includedir}" - fi - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - $INCS -ENDECHO - ;; - --libs) - if test @TINFO_NAME@ = @LIB_NAME@ ; then - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - -L$libdir @EXTRA_LDFLAGS@ -l${THIS} @LIBS@ -ENDECHO - else - sed -e 's,^[ ]*,,' -e 's, [ ]*, ,g' -e 's,[ ]*$,,' <<-ENDECHO - -L$libdir @EXTRA_LDFLAGS@ -l${THIS} -l${TINFO_LIB} @LIBS@ -ENDECHO - fi - ;; - # identification - --version) - echo "@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@" - ;; - --abi-version) - echo "@cf_cv_abi_version@" - ;; - --mouse-version) - echo "@NCURSES_MOUSE_VERSION@" - ;; - # locations - --bindir) - echo "${bindir}" - ;; - --datadir) - echo "${datadir}" - ;; - --includedir) - echo "${includedir}" - ;; - --libdir) - echo "${libdir}" - ;; - --mandir) - echo "${mandir}" - ;; - --terminfo) - echo "@TERMINFO@" - ;; - --terminfo-dirs) - echo "@TERMINFO_DIRS@" - ;; - --termpath) - echo "@TERMPATH@" - ;; - # general info - --help) - cat <&2 - exit 1 - ;; - esac - shift -done -# vile:shmode diff --git a/deps/ncurses-5.9/misc/run_tic.sed b/deps/ncurses-5.9/misc/run_tic.sed deleted file mode 100644 index bcdc01c..0000000 --- a/deps/ncurses-5.9/misc/run_tic.sed +++ /dev/null @@ -1,4 +0,0 @@ -s%/usr/share/tabset%/home/martino/avrdude-build-script/objdir/share/tabset%g -/^# This is xterm for ncurses/,/^$/{ - s/use=xterm-new,/use=xterm-new,/ -} diff --git a/deps/ncurses-5.9/misc/run_tic.sh b/deps/ncurses-5.9/misc/run_tic.sh deleted file mode 100644 index 1878d68..0000000 --- a/deps/ncurses-5.9/misc/run_tic.sh +++ /dev/null @@ -1,200 +0,0 @@ -#!/bin/sh -# $Id: run_tic.in,v 1.32 2011/02/23 23:30:15 tom Exp $ -############################################################################## -# Copyright (c) 1998-2010,2011 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: Thomas E. Dickey 1996-on -# -# This script is used to install terminfo.src using tic. We use a script -# because the path checking is too awkward to do in a makefile. -# -# Assumes: -# The leaf directory names (lib, tabset, terminfo) -# -echo '** Building terminfo database, please wait...' -# -# The script is designed to be run from the misc/Makefile as -# make install.data - -: ${suffix:=} -: ${DESTDIR:=} -: ${prefix:=/home/martino/avrdude-build-script/objdir} -: ${exec_prefix:=${prefix}} -: ${bindir:=${exec_prefix}/bin} -: ${top_srcdir:=..} -: ${srcdir:=.} -: ${datadir:=${prefix}/share} -: ${TIC_PATH:=/bin/tic} -: ${ticdir:=/home/martino/avrdude-build-script/objdir/share/terminfo} -: ${source:=${top_srcdir}/misc/terminfo.src} -: ${LN_S:="ln -s -f"} -: ${cross_compiling:=no} -: ${ext_funcs:=1} - -test -z "${DESTDIR}" && DESTDIR= - -# 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" -then - if test -f ../progs/tic$suffix - then - case "$PATH" in - \:*) - PATH="../progs:../lib:${DESTDIR}$bindir$PATH" - ;; - *) - PATH="../progs:../lib:${DESTDIR}$bindir:$PATH" - ;; - esac - export PATH - if test normal = shared - then - SHLIB="sh $srcdir/shlib" - TIC_PATH="$SHLIB tic" - else - TIC_PATH="tic" - fi - elif test "$TIC_PATH" = unknown - then - echo '? no tic program found' - exit 1 - fi -else - # Cross-compiling, so don't set PATH or run shlib. - SHLIB= - # reset $suffix, since it applies to the target, not the build platform. - suffix= -fi - - -# 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 -SHLIB_HOST=linux-gnu -export SHLIB_HOST - -# don't use user's TERMINFO variable -TERMINFO=${DESTDIR}$ticdir ; export 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%'` - -# Parent directory may not exist, which would confuse the install for hashed -# database. Fix. -PARENT=`echo "$TERMINFO" | sed -e 's%/[^/]*$%%'` -if test -n "$PARENT" -then - test -d $PARENT || mkdir -p $PARENT -fi - -# Remove the old terminfo stuff; we don't care if it existed before, and it -# 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. -( test -d "$TERMINFO" && cd $TERMINFO && rm -fr ? 2>/dev/null ) - -if test "$ext_funcs" = 1 ; then -cat </dev/null ) - if ( cd $TICDIR 2>/dev/null ) - then - cd $TICDIR - TICDIR=`pwd` - if test $TICDIR != $TERMINFO ; 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." - fi - else - cd ${DESTDIR}$prefix - # 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%^/%%'` - fi - if ( ln -s -f $RELATIVE $TICDIR ) - then - echo '** sym-linked '$TICDIR' for compatibility' - else - echo '** could not sym-link '$TICDIR' for compatibility' - fi - fi -fi -# vile:shmode diff --git a/deps/ncurses-5.9/misc/terminfo.src b/deps/ncurses-5.9/misc/terminfo.src deleted file mode 100644 index 04163e0..0000000 --- a/deps/ncurses-5.9/misc/terminfo.src +++ /dev/null @@ -1,22359 +0,0 @@ -######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE -# -# This version of terminfo.src is distributed with ncurses and is maintained -# by Thomas E. Dickey (TD). -# -# Report bugs and new terminal descriptions to -# bug-ncurses@gnu.org -# -# $Revision: 1.383 $ -# $Date: 2011/02/20 20:46:53 $ -# -# 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 -# stopped updates several years ago); we have decided to not change the header -# unless there is also a change in content. -# -# To further muddy the waters, it is noted that changes to this file as part of -# maintenance of ncurses (since 1996) are generally conceded to be copyright -# under the ncurses MIT-style license. That was the effect of the agreement -# which the principal authors of ncurses made in 1998. However, since much of -# the file itself is of unknown authorship (and the disclaimer below makes it -# obvious that Raymond cannot or will not convey rights over those parts), -# there is no explicit copyright notice on the file itself. -# -# It would also be a nuisance to split the file into unknown/known authorship -# and move pieces as they are maintained, since many of the maintenance changes -# have been small corrections to Raymond's translations to/from termcap format, -# correcting the data but not the accompanying annotations. -# -# In any case, note that almost half of this file is not data but annotations -# which reflect creative effort. Furthermore, the structure of entries to -# reuse common chunks also is creative (and subject to copyright). Finally, -# some portions of the data are derivative work under a compatible MIT-style -# license from xterm. -# -#------------------------------------------------------------------------------ -# Version 10.2.1 -# terminfo syntax -# -# Eric S. Raymond (current maintainer) -# John Kunze, Berkeley -# Craig Leres, Berkeley -# -# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu -# address is no longer valid. The latest version can always be found at -# . -# -# PURPOSE OF THIS FILE: -# -# This file describes the capabilities of various character-cell terminals, -# as needed by software such as screen-oriented editors. -# -# Other terminfo and termcap files exist, supported by various OS vendors -# or as relics of various older versions of UNIX. This one is the longest -# and most comprehensive one in existence. It subsumes not only the entirety -# of the historical 4.4BSD, GNU, System V and SCO termcap files and the BRL -# termcap file, but also large numbers of vendor-maintained termcap and -# terminfo entries more complete and carefully tested than those in historical -# termcap/terminfo versions. -# -# Pointers to related resources (including the ncurses distribution) may -# be found at . -# -# INTERNATIONALIZATION: -# -# This file uses only the US-ASCII character set (no ISO8859 characters). -# -# This file assumes a US-ASCII character set. If you need to fix this, start -# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers -# for your character set. \E(A and \E)A enables the British character set -# with the pound sign at position 2/3. -# -# In a Japanese-processing environment using EUC/Japanese or Shift-JIS, -# C1 characters are considered the first-byte set of the Japanese encodings, -# so \E)0 should be avoided in and initialization strings. -# -# FILE FORMAT: -# -# The version you are looking at may be in any of three formats: master -# (terminfo with OT capabilities), stock terminfo, or termcap. You can tell -# which by the format given in the header above. -# -# The master format is accepted and generated by the terminfo tools in the -# ncurses suite; it differs from stock (System V-compatible) terminfo only -# in that it admits a group of capabilities (prefixed `OT') equivalent to -# various obsolete termcap capabilities. You can, thus, convert from master -# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if -# you have ncurses `tic -I' is nicer (among other things, it automatically -# outputs entries in a canonical form). -# -# The termcap version is generated automatically from the master version -# using tic -C. This filtering leaves in the OT capabilities under their -# original termcap names. All translated entries fit within the 1023-byte -# string-table limit of archaic termcap libraries except where explicitly -# noted below. Note that the termcap translation assumes that your termcap -# library can handle multiple tc capabilities in an entry. 4.4BSD has this -# capability. Older versions of GNU termcap, through 1.3, do not. -# -# For details on these formats, see terminfo(5) in the ncurses distribution, -# and termcap(5) in the 4.4BSD Unix Programmer's Manual. Be aware that 4.4BSD -# curses has been declared obsolete by the caretakers of the 4.4BSD sources -# as of June 1995; they are encouraging everyone to migrate to ncurses. -# -# Note: unlike some other distributed terminfo files (Novell Unix & SCO's), -# no entry in this file has embedded comments. This is so source translation -# to termcap only has to carry over leading comments. Also, no name field -# contains embedded whitespace (such whitespace confuses rdist). -# -# Further note: older versions of this file were often installed with an editor -# script (reorder) that moved the most common terminal types to the front of -# the file. This should no longer be necessary, as the file is now ordered -# roughly by type frequency with ANSI/VT100 and other common types up front. -# -# Some information has been merged in from terminfo files distributed by -# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below). Much information -# comes from vendors who maintain official terminfos for their hardware -# (notably DEC and Wyse). -# -# A detailed change history is included at the end of this file. -# -# FILE ORGANIZATION: -# -# Comments in this file begin with # - they cannot appear in the middle -# of a terminfo/termcap entry (this feature had to be sacrificed in order -# to allow standard terminfo and termcap syntax to be generated cleanly from -# the master format). Individual capabilities are commented out by -# placing a period between the colon and the capability name. -# -# The file is divided up into major sections (headed by lines beginning with -# the string "########") and minor sections (beginning with "####"); do -# -# grep "^####" | more -# -# to see a listing of section headings. The intent of the divisions is -# (a) to make it easier to find things, and (b) to order the database so -# that important and frequently-encountered terminal types are near the -# front (so that you'll get reasonable search efficiency from a linear -# search of the termcap form even if you don't use reorder). Minor sections -# usually correspond to manufacturers or standard terminal classes. -# Parenthesized words following manufacturer names are type prefixes or -# product line names used by that manufacturers. -# -# HOW TO READ THE ENTRIES: -# -# The first name in an entry is the canonical name for the model or -# type, last entry is a verbose description. Others are mnemonic synonyms for -# the terminal. -# -# Terminal names look like - -# The part to the left of the dash, if a dash is present, describes the -# particular hardware of the terminal. The part to the right may be used -# for flags indicating special ROMs, extra memory, particular terminal modes, -# or user preferences. -# -# All names should be in lower case, for consistency in typing. -# -# The following are conventionally used suffixes: -# -2p Has two pages of memory. Likewise 4p, 8p, etc. -# -am Enable auto-margin. -# -m Monochrome. Suppress color support -# -mc Magic-cookie. Some terminals (notably older Wyses) can -# only support one attribute without magic-cookie lossage. -# Their base entry is usually paired with another that -# uses magic cookies to support multiple attributes. -# -nam No auto-margin - suppress capability -# -nl No labels - suppress soft labels -# -ns No status line - suppress status line -# -rv Terminal in reverse video mode (black on white) -# -s Enable status line. -# -vb Use visible bell () rather than . -# -w Wide - in 132 column mode. -# If a name has multiple suffixes and one is a line height, that one should -# go first. Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'. -# -# Entries with embedded plus signs are designed to be included through use/tc -# capabilities, not used as standalone entries. -# -# To avoid search clashes, some older all-numeric names for terminals have -# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621). -# All primary names of terminals now have alphanumeric prefixes. -# -# Comments marked "esr" are mostly results of applying the termcap-compiler -# code packaged with ncurses and contemplating the resulting error messages. -# In many cases, these indicated obvious fixes to syntax garbled by the -# composers. In a few cases, I was able to deduce corrected forms for garbled -# capabilities by looking at context. All the information in the original -# entries is preserved in the comments. -# -# In the comments, terminfo capability names are bracketed with <> (angle -# brackets). Termcap capability names are bracketed with :: (colons). -# -# INTERPRETATION OF USER CAPABILITIES -# -# The System V Release 4 and XPG4 terminfo format defines ten string -# capabilities for use by applications, .... In this file, we use -# certain of these capabilities to describe functions which are not covered -# by terminfo. The mapping is as follows: -# -# u9 terminal enquire string (equiv. to ANSI/ECMA-48 DA) -# u8 terminal answerback description -# u7 cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6) -# u6 cursor position report (equiv. to ANSI/ECMA-48 CPR) -# -# The terminal enquire string should elicit an answerback response -# from the terminal. Common values for will be ^E (on older ASCII -# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals). -# -# The cursor position request () string should elicit a cursor position -# report. A typical value (for VT100 terminals) is \E[6n. -# -# The terminal answerback description (u8) must consist of an expected -# answerback string. The string may contain the following scanf(3)-like -# escapes: -# -# %c Accept any character -# %[...] Accept any number of characters in the given set -# -# The cursor position report () string must contain two scanf(3)-style -# %d format elements. The first of these must correspond to the Y coordinate -# and the second to the %d. If the string contains the sequence %i, it is -# taken as an instruction to decrement each value after reading it (this is -# the inverse sense from the cup string). The typical CPR value is -# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals). -# -# These capabilities are used by tack(1m), the terminfo action checker -# (distributed with ncurses 5.0). -# -# TABSET FILES -# -# All the entries in this file have been edited to assume that the tabset -# files directory is /usr/share/tabset, in conformance with the File Hierarchy -# Standard for Linux and open-source BSD systems. Some vendors (notably Sun) -# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset. -# -# No curses package we know of actually uses these files. If their location -# is an issue, you will have to hand-patch the file locations before compiling -# this file. -# -# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL -# -# As the ANSI/ECMA-48 standard and variants take firmer hold, and as -# character-cell terminals are increasingly replaced by X displays, much of -# this file is becoming a historical document (this is part of the reason for -# the new organization, which puts ANSI types, xterm, Unix consoles, -# and vt100 up front in confidence that this will catch 95% of new hardware). -# -# For the terminal types still alive, I'd like to have manufacturer's -# contact data (Internet address and/or snail-mail + phone). -# -# I'm also interested in enriching the comments so that the latter portions of -# the file do in fact become a potted history of VDT technology as seen by -# UNIX hackers. Ideally, I'd like the headers for each manufacturer to -# include its live/dead/out-of-the-business status, and for as many -# terminal types as possible to be tagged with information like years -# of heaviest use, popularity, and interesting features. -# -# I'm especially interested in identifying the obscure entries listed under -# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal -# wisdom about them gets lost. If you know a lot about obscure old terminals, -# please go to the terminfo resource page, grab the UFO file (ufo.ti), and -# eyeball it for things you can identify and describe. -# -# If you have been around long enough to contribute, please read the file -# with this in mind and send me your annotations. -# -# COPYRIGHTS AND OTHER DELUSIONS -# -# The BSD ancestor of this file had a standard Regents of the University of -# California copyright with dates from 1980 to 1993. -# -# Some information has been merged in from a terminfo file SCO distributes. -# It has an obnoxious boilerplate copyright which I'm ignoring because they -# took so much of the content from the ancestral BSD versions of this file -# and didn't attribute it, thereby violating the BSD Regents' copyright. -# -# Not that anyone should care. However many valid functions copyrights may -# serve, putting one on a termcap/terminfo file with hundreds of anonymous -# contributors makes about as much sense as copyrighting a wall-full of -# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous. -# -# This file deliberately has no copyright. It belongs to no one and everyone. -# If you claim you own it, you will merely succeed in looking like a fool. -# Use it as you like. Use it at your own risk. Copy and redistribute freely. -# There are no guarantees anywhere. Svaha! -# - -######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES -# -# This section describes terminal classes and brands that are still -# quite common. -# - -#### Specials -# -# Special "terminals". These are used to label tty lines when you don't -# know what kind of terminal is on it. The characteristics of an unknown -# terminal are the lowest common denominator - they look about like a ti 700. -# - -dumb|80-column dumb tty, - am, - cols#80, - bel=^G, cr=^M, cud1=^J, ind=^J, -unknown|unknown terminal type, - gn, use=dumb, -lpr|printer|line printer, - OTbs, hc, os, - cols#132, lines#66, - bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ind=^J, -glasstty|classic glass tty interpreting ASCII control characters, - OTbs, am, - cols#80, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kcub1=^H, - kcud1=^J, nel=^M^J, .kbs=^H, - -vanilla|dumb tty, - OTbs, - bel=^G, cr=^M, cud1=^J, ind=^J, - -# This is almost the same as "dumb", but with no prespecified width. -# DEL and ^C are hardcoded to act as kill characters. -# ^D acts as a line break (just like newline). -# It also interprets -# \033];xxx\007 -# for compatibility with xterm -TD -9term|Plan9 terminal emulator for X, - am, - OTnl=^J, bel=^G, cud1=^J, - -#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities -# -# See the end-of-file comment for more on these. -# - -# ANSI capabilities are broken up into pieces, so that a terminal -# implementing some ANSI subset can use many of them. -ansi+local1, - cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A, -ansi+local, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, use=ansi+local1, -ansi+tabs, - cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[3g, -ansi+inittabs, - it#8, use=ansi+tabs, -ansi+erase, - clear=\E[H\E[J, ed=\E[J, el=\E[K, -ansi+rca, - hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd, -ansi+cup, - cup=\E[%i%p1%d;%p2%dH, home=\E[H, -ansi+rep, - rep=%p1%c\E[%p2%{1}%-%db, -ansi+idl1, - dl1=\E[M, il1=\E[L, -ansi+idl, - dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1, -ansi+idc, - dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@, rmir=\E6, smir=\E6, -ansi+arrows, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - khome=\E[H, -ansi+sgr|ansi graphic renditions, - blink=\E[5m, invis=\E[8m, rev=\E[7m, - sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, - sgr0=\E[0m, -ansi+sgrso|ansi standout only, - rmso=\E[m, smso=\E[7m, -ansi+sgrul|ansi underline only, - rmul=\E[m, smul=\E[4m, -ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim, - bold=\E[1m, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, -ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold, - dim=\E[2m, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;%?%p7%t8;%;m, - use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, -ansi+pp|ansi printer port, - mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, -ansi+csr|ansi scroll-region plus cursor save & restore, - csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7, - -# The IBM PC alternate character set. Plug this into any Intel console entry. -# We use \E[11m for rmacs rather than \E[12m so the string can use the -# ROM graphics for control characters such as the diamond, up- and down-arrow. -# This works with the System V, Linux, and BSDI consoles. It's a safe bet this -# will work with any Intel console, they all seem to have inherited \E[11m -# from the ANSI.SYS de-facto standard. -klone+acs|alternate character set for ansi.sys displays, - 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, - rmacs=\E[10m, smacs=\E[11m, - -# Highlight controls corresponding to the ANSI.SYS standard. Most -# console drivers for Intel boxes obey these. Makes the same assumption -# about \E[11m as klone+acs. True ANSI/ECMA-48 would have , -# , 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, - -# Most Intel boxes do not treat "invis" (invisible) text. -klone+sgr8|attribute control for ansi.sys displays, - invis=\E[8m, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - use=klone+sgr, - -# Highlight controls corresponding to the ANSI.SYS standard. *All* -# console drivers for Intel boxes obey these. Does not assume \E[11m will -# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS -# diamond and arrow characters under curses. -klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m), - blink=\E[5m, bold=\E[1m, invis=\E[8m, rev=\E[7m, 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%;%?%p7%t;8%;%?%p9%t;12%;m, - sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m, - use=klone+acs, - -# KOI8-R (RFC1489) acs (alternate character set) -# From: Qing Long , 24 Feb 1996. -klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset, - acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i\220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t\206u\207v\210w\211x\201y\230z\231{\267|\274}L~\225, - rmacs=\E[10m, smacs=\E[11m, - -# ANSI.SYS color control. The setab/setaf caps depend on the coincidence -# between SVr4/XPG4's color numbers and ANSI.SYS attributes. Here are longer -# but equivalent strings that don't rely on that coincidence: -# 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}%=%t3%e%p1%d%;m, -# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard. -# They match a subset of ECMA-48. -klone+color|color control for ansi.sys and ISO6429-compatible displays, - colors#8, ncv#3, pairs#64, - op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -# This is better than klone+color, it doesn't assume white-on-black as the -# default color pair, but many `ANSI' terminals don't grok the cap. -ecma+color|color control for ECMA-48-compatible terminals, - AX, - colors#8, ncv#3, pairs#64, - op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -# 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, - -# For comparison, here are all the capabilities implied by the Intel -# Binary Compatibility Standard (level 2) that fit within terminfo. -# For more detail on this rather pathetic standard, see the comments -# near the end of this file. -ibcs2|Intel Binary Compatibility Standard prescriptions, - cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cub1=\E[1D, - cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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@, il=\E[%p1%dL, - indn=\E[%p1%dS, rc=\E7, rin=\E[%p1%dT, rmam=\E[?7l, sc=\E7, - smam=\E[?7h, tbc=\E[g, vpa=\E[%i%p1%dd, - -#### ANSI/ECMA-48 terminals and terminal emulators -# -# See near the end of this file for details on ANSI conformance. -# Don't mess with these entries! Lots of other entries depend on them! -# -# This section lists entries in a least-capable to most-capable order. -# if you're in doubt about what `ANSI' matches yours, try them in that -# order and back off from the first that breaks. - -# ansi-mr is for ANSI terminals with ONLY relative cursor addressing -# and more than one page of memory. It uses local motions instead of -# direct cursor addressing, and makes almost no assumptions. It does -# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen. -ansi-mr|mem rel cup ansi, - am, xon, - cols#80, lines#24, use=vanilla, use=ansi+erase, - use=ansi+local1, - -# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but -# beware of screen size problems and memory relative cursor addressing. -ansi-mini|any ansi terminal with pessimistic assumptions, - am, xon, - cols#80, lines#24, use=vanilla, use=ansi+cup, - use=ansi+erase, - -# ansi-mtabs adds relative addressing and minimal tab support -ansi-mtabs|any ansi terminal with pessimistic assumptions, - it#8, - ht=^I, use=ansi+local1, use=ansi-mini, - -# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL -# -# The following is an entry for the full ANSI 3.64 (1977). It lacks -# padding, but most terminals using the standard are "fast" enough -# not to require any -- even at 9600 bps. If you encounter problems, -# try including the padding specifications. -# -# Note: the :as: and :ae: specifications are not implemented here, for -# the available termcap documentation does not make clear WHICH alternate -# character set to specify. ANSI 3.64 seems to make allowances for several. -# Please make the appropriate adjustments to fit your needs -- that is -# if you will be using alternate character sets. -# -# There are very few terminals running the full ANSI 3.64 standard, -# so I could only test this entry on one verified terminal (Visual 102). -# I would appreciate the results on other terminals sent to me. -# -# Please report comments, changes, and problems to: -# -# U.S. MAIL: Hugh Hansard -# Box: 22830 -# Emory University -# Atlanta, GA. 30322. -# -# USENET {akgua,msdc,sb1,sb6,gatech}!emory!mlhhh. -# -# (Added vt100 , to quiet a tic warning --esr) -ansi77|ansi 3.64 standard 1977 version, - OTbs, am, mir, - cols#80, it#8, lines#24, - bel=^G, clear=\E[;H\E[2J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, - kf2=\EOR, kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h, - smso=\E[7m, smul=\E[4m, - -# Procomm and some other ANSI emulations don't recognize all of the ANSI- -# standard capabilities. This entry deletes , , , , and -# / capabilities, forcing curses to use repetitions of , -# , and . Also deleted and , as QModem up to -# 5.03 doesn't recognize these. Finally, we delete and , which seem -# to confuse many emulators. On the other hand, we can count on these programs -# doing //. Older versions of this entry featured -# , but now seems to be more common under -# ANSI.SYS influence. -# From: Eric S. Raymond Oct 30 1995 -pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode), - OTbs, am, mir, msgr, - cols#80, it#8, lines#24, - bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=\E[D, - cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - hts=\EH, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[3g, - use=klone+sgr-dumb, -pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode), - lines#25, use=pcansi-m, -pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode), - lines#33, use=pcansi-m, -pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode), - lines#43, use=pcansi-m, -# The color versions. All PC emulators do color... -pcansi|ibm-pc terminal programs claiming to be ansi, - use=klone+color, use=pcansi-m, -pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines, - lines#25, use=pcansi, -pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines, - lines#33, use=pcansi, -pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines, - lines#43, use=pcansi, - -# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color. -# If you want pound signs rather than dollars, replace `B' with `A' -# in the , , , and capabilities. -# From: Eric S. Raymond Nov 6 1995 -ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes, - mc5i, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, 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, indn=\E[%p1%dS, kbs=^H, - kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, - rep=%p1%c\E[%p2%{1}%-%db, rin=\E[%p1%dT, s0ds=\E(B, - s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, tbc=\E[3g, - vpa=\E[%i%p1%dd, use=pcansi-m, - -ansi+enq|ncurses extension for ANSI ENQ, - u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c, - u9=\E[c, - -# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in -# standard terminfo. Assumes ANSI.SYS-compatible attributes and color. -# From: Eric S. Raymond Nov 6 1995 -ansi|ansi/pc-term compatible with color, - use=ansi+enq, use=ecma+color, use=klone+sgr8, use=ansi-m, - -# ansi-generic is a vanilla ANSI terminal. This is assumed to implement -# all the normal ANSI stuff with no extensions. It assumes -# insert/delete line/char is there, so it won't work with -# vt100 clones. It assumes video attributes for bold, blink, -# underline, and reverse, which won't matter much if the terminal -# can't do some of those. Padding is assumed to be zero, which -# shouldn't hurt since xon/xoff is assumed. -ansi-generic|generic ansi standard terminal, - am, xon, - cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup, - use=ansi+rca, use=ansi+erase, use=ansi+tabs, - use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep, - use=ansi+sgrbold, use=ansi+arrows, - -#### DOS ANSI.SYS variants -# -# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS -# documentation (except for the keyboard key reassignment feature, which -# doesn't fit the model well). The klone+acs sequences were valid -# though undocumented. The capability is untested but should work for -# keys F1-F10 (%p1 values outside this range will yield unpredictable results). -# From: Eric S. Raymond Nov 7 1995 -ansi.sys-old|ANSI.SYS under PC-DOS 2.1, - OTbs, am, mir, msgr, xon, - cols#80, lines#25, - clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H, - is2=\E[m\E[?7h, kcub1=^H, kcud1=^J, 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, u6=\E[%i%d;%dR, - u7=\E[6n, use=klone+color, use=klone+sgr8, - -# Keypad: Home=\0G Up=\0H PrPag=\0I -# ka1,kh kcuu1 kpp,ka3 -# -# Left=\0K 5=\0L Right=\0M -# kcub1 kb2 kcuf1 -# -# End=\0O Down=\0P NxPag=\0Q -# kc1,kend kcud1 kc3,knp -# -# Ins=\0R Del=\0S -# kich1 kdch1 -# -# On keyboard with 12 function keys, -# shifted f-keys: F13-F24 -# control f-keys: F25-F36 -# alt f-keys: F37-F48 -# The shift/control/alt keys do not modify each other, but alt overrides both, -# and control overrides shift. -# -# capability for F1-F48 -TD -ansi.sys|ANSI.SYS 3.1 and later versions, - el=\E[K, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q, - kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, - kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205, - kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W, - kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\, - kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_, - kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d, - kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212, - kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l, - kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q, - kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, - kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I, - pfkey=\E[0;%?%p1%{11}%<%t%'\:'%e%?%p1%{13}%<%t%'z'%e%?%p1%{23}%<%t%'G'%e%?%p1%{25}%<%t%'p'%e%?%p1%'#'%<%t%'E'%e%?%p1%'%'%<%t%'f'%e%?%p1%'/'%<%t%'C'%e%{92}%;%;%;%;%;%;%;%p1%+%d;%p2"%s"p, - use=ansi.sys-old, - -# -# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS. -# This should only be used when the terminal emulator cannot redefine the keys. -# Since redefining keys with ansi.sys also affects PC-DOS programs, the key -# definitions must be restored. If the terminal emulator is quit while in vi -# or others using /, the keypad will not be defined as per PC-DOS. -# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix -# (^U and ^D are already defined for tn3270). The ESC is safe for vi but it -# does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab. -# Note that is always BS, because PC-dos can tolerate this change. -# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi. -# Consequently the End keypad key could not be set (it is relatively safe and -# actually useful because it sends ^@ O, which beeps and opens a line above). -ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi, - is2=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p, - rmkx=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p, - smkx=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p, - use=ansi.sys, -# -# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer. -nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS, - dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L, - is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n, - use=ansi.sys, -# -# See ansi.sysk and nansi.sys above. -nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi, - dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L, - is2=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p, - use=ansi.sysk, - -#### ANSI console types -# - -############################################################################# -# -# Atari ST terminals. -# From Guido Flohr . -# -tw52|tw52-color|Toswin window manager with color, - bce, - colors#16, pairs#256, - oc=\Eb?\Ec0, op=\Eb?\Ec0, - setab=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - setaf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - setb=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - setf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - use=tw52-m, -tw52-m|Toswin window manager monochrome, - ul, - ma#999, - bold=\Eya, dch1=\Ea, dim=\EyB, - is2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, rev=\EyP, rmso=\EzQ, - rmul=\EzH, rs2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, sgr0=\Ez_, - smso=\EyQ, smul=\EyH, use=at-m, -tt52|Atari TT medium and high resolution, - lines#30, use=at-color, -st52-color|at-color|atari-color|atari_st-color|Atari ST with color, - bce, - colors#16, pairs#256, - is2=\Ev\Eq\Ee\Eb1\Ec0, rs2=\Ev\Eq\Ee\Eb1\Ec0, - setab=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - setaf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - setb=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - setf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - use=st52, -st52|st52-m|at|at-m|atari|atari-m|atari_st|atarist-m|Atari ST, - am, eo, mir, npc, - cols#80, it#8, lines#24, - bel=^G, civis=\Ef, clear=\EE, cnorm=\Ee, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, el1=\Eo, home=\EH, ht=^I, - il1=\EL, ind=^J, is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\177, - kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es, - kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EQ, - kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV, kf8=\EW, - kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb, kpp=\Ea, - kund=\EK, nel=^M^J, rc=\Ek, rev=\Ep, ri=\EI, rmso=\Eq, - rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq, smso=\Ep, -tw100|toswin vt100 window mgr, - eo, mir, msgr, xon, - colors#8, cols#80, it#8, lines#24, pairs#64, vt#3, - acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\Ef, - clear=\E[2J\E[H, cnorm=\Ee, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB, - cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, 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=^J, is2=\E<\E)0, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\177, - 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, 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, rc=\E8, 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>, - sc=\E7, - 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'%=%t3%e7%;m, - setf=\E[3%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'%=%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, -# The entries for stv52 and stv52pc probably need a revision. -stv52|MiNT virtual console, - am, msgr, - cols#80, it#8, lines#30, - bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, - cnorm=\E. \Ee, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.", - dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, - ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\177, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, - kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, - kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, - kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, - kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, - op=\Eb@\EcO, rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, - rmso=\Eq, rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, - smcup=\Ev\Ee\Ez_, smso=\Ep, smul=\EyH, -stv52pc|MiNT virtual console with PC charset, - am, msgr, - cols#80, it#8, lines#30, - acsc=+\257\,\256-\^.v0\333I\374`\177a\260f\370g\361h\261j\331k\277l\332m\300n\305o\377p-q\304r-s_t+u+v+w+x\263y\363z\362{\343|\366}\234~\371, - bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, - cnorm=\E. \Ee, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.", - dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, - ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\177, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, - kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, - kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, - kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, - kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, - rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, rmso=\Eq, - rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_, - smso=\Ep, smul=\EyH, - -#### Atari ST -# - -# From: Simson L. Garfinkel -atari-old|atari st, - OTbs, am, - cols#80, it#8, lines#25, - clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, - ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep, -# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode -# From: Paul M. Aoki -uniterm|uniterm49|UniTerm VT220 emulator with 49 lines, - lines#49, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H, - use=vt220, -# MiNT VT52 emulation. 80 columns, 25 rows. -# MiNT is Now TOS, the operating system which comes with all Ataris now -# (mainly Atari Falcon). This termcap is for the VT52 emulation you get -# under tcsh/zsh/bash/sh/ksh/ash/csh when you run MiNT in `console' mode -# From: Per Persson , 27 Feb 1996 -st52-old|Atari ST with VT52 emulation, - am, km, - cols#80, lines#25, - bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, - ind=^J, ka1=\E#7, ka3=\E#5, kb2=\E#9, kbs=^H, kc1=\E#1, - kc3=\E#3, kclr=\E#7, kcub1=\E#K, kcud1=\E#P, kcuf1=\E#M, - kcuu1=\E#H, kf0=\E#D, kf1=\E#;, kf2=\E#<, kf3=\E#=, kf4=\E#>, - kf5=\E#?, kf6=\E#@, kf7=\E#A, kf8=\E#B, kf9=\E#C, khome=\E#G, - kil1=\E#R, kind=\E#2, kri=\E#8, lf0=f10, nel=^M^J, rc=\Ek, - ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq, - smcup=\Ee, smso=\Ep, - -#### BeOS -# -# BeOS entry for Terminal program Seems to be almost ANSI -beterm|BeOS Terminal, - am, eo, mir, msgr, xenl, xon, - colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64, - bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, - kend=\E[4~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, - nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l, - rmkx=\E[?4l, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm, - sgr0=\E[0;10m, smir=\E[4h, smkx=\E[?4h, smso=\E[7m, - smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, - vpa=\E[%i%p1%dd, - -#### Linux consoles -# - -# This entry is good for the 1.2.13 or later version of the Linux console. -# -# *************************************************************************** -# * * -# * WARNING: * -# * Linuxes come with a default keyboard mapping kcbt=^I. This entry, in * -# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab * -# * character. Here are the keymap replacement lines that will set this up: * -# * * -# keycode 15 = Tab Tab -# alt keycode 15 = Meta_Tab -# shift keycode 15 = F26 -# string F26 ="\033[Z" -# * * -# * This has to use a key slot which is unfortunate (any unused one will * -# * do, F26 is the higher-numbered one). The change ought to be built * -# * into the kernel tables. * -# * * -# *************************************************************************** -# -# All linux kernels since 1.2.13 (at least) set the screen size -# themselves; this entry assumes that capability. -# -linux-basic|linux console, - am, bce, eo, mir, msgr, xenl, xon, - it#8, ncv#18, U8#1, - 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, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kb2=\E[G, kbs=\177, - kcbt=\E[Z, 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[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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kspd=^Z, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, - rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, 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;11%;m, - smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g, - vpa=\E[%i%p1%dd, use=vt102+enq, use=klone+sgr, - use=ecma+color, - -linux-m|Linux console no color, - colors@, pairs@, - setab@, setaf@, setb@, setf@, use=linux, - -# The 1.3.x kernels add color-change capabilities; if yours doesn't have this -# and it matters, turn off . The %02x escape used to implement this is -# not supposedly back-portable to older SV curses (although it has worked fine -# on Solaris for several years) and not supported in ncurses versions before -# 1.9.9. -linux-c-nc|linux console with color-change, - ccc, - initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x, - oc=\E]R, use=linux-basic, -# From: Dennis Henriksen , 9 July 1996 -linux-c|linux console 1.3.6+ for older ncurses, - ccc, - initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p3%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p4%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;, - oc=\E]R, use=linux-basic, - -# The 2.2.x kernels add a private mode that sets the cursor type; use that to -# get a block cursor for cvvis. -# reported by Frank Heckenbach . -linux|linux console, - civis=\E[?25l\E[?1c, cnorm=\E[?25h\E[?0c, - cvvis=\E[?25h\E[?8c, use=linux-c-nc, - -# Subject: linux 2.6.26 vt back_color_erase -# Changes to the Linux console driver broke bce model as reported in -# https://bugzilla.novell.com/show_bug.cgi?id=418613 -# apparently from -# http://lkml.org/lkml/2008/4/26/305 -# http://groups.google.com/group/fa.linux.kernel/browse_thread/thread/87f98338f0d636bb/aa96e8b86cee0d1e?lnk=st&q=#aa96e8b86cee0d1e -linux2.6.26|linux console w/o bce, - bce@, use=linux, - -# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file -linux-nic|linux with ich/ich1 suppressed for non-curses programs, - ich@, ich1@, use=linux, - -# This assumes you have used setfont(8) to load one of the Linux koi8-r fonts. -# acsc entry from Pavel Roskin" , 29 Sep 1997. -linux-koi8|linux with koi8 alternate character set, - acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224, - use=linux, use=klone+koi8acs, - -# Another entry for KOI8-r with Qing Long's acsc. -# (which one better complies with the standard?) -linux-koi8r|linux with koi8-r alternate character set, - use=linux, use=klone+koi8acs, - -# Entry for the latin1 and latin2 fonts -linux-lat|linux with latin1 or latin2 alternate character set, - acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i\316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u\215v\301w\302x\205y\363z\362{\343|\330}\234~\376, - use=linux, - -# This uses graphics from VT codeset instead of from cp437. -# reason: cp437 (aka "straight to font") is not functional under luit. -# from: Andrey V Lukyanov . -linux-vt|linux console using VT codes for graphics, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~, - rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0, - smpch@, use=linux, - -# This is based on the Linux console (relies on the console to perform some -# 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,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|jfbterm|Kanji ON Linux console, - ccc@, hs, - civis@, cnorm@, cvvis@, dsl=\E[?H, flash@, fsl=\E[?F, initc@, - initp@, kcbt@, oc@, op=\E[37;40m, rs1=\Ec, tsl=\E[?T, - use=linux, - -# 16-color linux console entry; this works with a 256-character -# console font but bright background colors turn into dim ones when -# you use a 512-character console font. This uses bold for bright -# foreground colors and blink for bright background colors. -linux-16color|linux console with 16 colors, - colors#16, ncv#54, pairs#256, - setab=\E[4%p1%{8}%m%d%?%p1%{8}%>%t;5%e%p1%{8}%=%t;2%e;25%;m, - setaf=\E[3%p1%{8}%m%d%?%p1%{8}%>%t;1%e%p1%{8}%=%t;2%e;21%;m, - use=linux, - -# bterm (bogl 0.1.18) -# Implementation is in bogl-term.c -# Key capabilities from linux terminfo entry -# -# Notes: -# bterm only supports acs using wide-characters, has case for these: qjxamlkut -# bterm does not support sgr, since it only processes one parameter -TD -bterm|bogl virtual terminal, - am, bce, - colors#8, cols#80, lines#24, pairs#64, - acsc=aajjkkllmmqqttuuxx, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, cub1=^H, cud1=^J, - cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ind=^J, - kb2=\E[G, kbs=\177, kcbt=\E[Z, 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[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~, kich1=\E[2~, - kmous=\E[M, knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, - op=\E49;39m, rev=\E[7m, ri=\EM, rmacs=^O, rmso=\E[27m, - rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr0=\E[0m, smacs=^N, smso=\E[7m, smul=\E[4m, - -#### Mach -# - -# From: Matthew Vernon -mach|Mach Console, - am, km, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, - kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, 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, -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, - -# From: Marcus Brinkmann -# http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/ -# -# Comments in the original are summarized here: -# -# hurd uses 8-bit characters (km). -# -# Although it doesn't do XON/XOFF, we don't want padding characters (xon). -# -# Regarding compatibility to vt100: hurd doesn't specify , as we don't -# have the eat_newline_glitch. It doesn't support setting or removing tab -# stops (hts/tbc). -# -# hurd uses ^H instead of \E[D for cub1, as only ^H implements and it is -# one byte instead three. -# -# is not included because hurd has insert mode. -# -# hurd doesn't use ^J for scrolling, because this could put things into the -# scrollback buffer. -# -# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode. -# This is a GNU extension. -# -# The original has commented-out ncv, but is restored here. -# -# Reading the source, RIS resets cnorm, but not xmous. -hurd|The GNU Hurd console server, - am, bce, bw, eo, km, mir, msgr, xon, - colors#8, it#8, ncv#18, pairs#64, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\Ec, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[34l, dch=\E[%p1%dP, - dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\Eg, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS, - invis=\E[8m, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, - kend=\E[4~, 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kspd=^Z, nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\E[T, - rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E[10m, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7, - 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%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - sgr0=\E[0m, sitm=\E[3m, smacs=\E[11m, smir=\E[4h, - smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l, - gsbom=\E[>1h, - -#### OSF Unix -# - -# OSF/1 1.1 Snapshot 2 -pmcons|pmconsole|PMAX console, - am, - cols#128, lines#57, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ht=^I, - ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - -# SCO console and SOS-Syscons console for 386bsd -# (scoansi: had unknown capabilities -# :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\ -# :GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C: -# :G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\ -# :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\ -# :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\ -# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based -# on the =\E[12m -- esr) -# -# 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: -# F13-F24 are shifted F1-F12 -# F25-F36 are control F1-F12 -# F37-F48 are shift+control F1-F12 -# -# hpa/vpa work in the console, but not in scoterm: -# hpa=\E[%p1%dG, -# vpa=\E[%p1%dd, -# -# SCO's terminfo uses -# kLFT=\E[d, -# kRIT=\E[c, -# which do not work (console or scoterm). -# -# Console documents only 3 attributes can be set with SGR (so we don't use sgr). -scoansi-old|SCO Extended ANSI standard crt (5.0.5), - OTbs, am, bce, eo, xon, - colors#8, cols#80, it#8, lines#25, pairs#64, - acsc=+/\,.-\230.\2310[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3yszr{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, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[=0;12C, dch=\E[%p1%dP, - dch1=\E[P, dispc=\E[=%p1%dg, dl=\E[%p1%dM, dl1=\E[M, - 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[@, il=\E[%p1%dL, il1=\E[L, - ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbeg=\E[E, kbs=^H, - kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, 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, khome=\E[H, - kich1=\E[L, knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8, - rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, - rmam=\E[?7l, rmso=\E[m, rmul=\E[m, 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, -scoansi-new|SCO Extended ANSI standard crt (5.0.6), - km, - civis=\E[=0c, cnorm=\E[=1c, csr=\E[%i%p1%d;%p2%dr, - cvvis=\E[=2c, mgc=\E[=r, oc=\E[51m, op=\E[50m, - rep=\E[%p1%d;%p2%db, rmm=\E[=11L, - sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, - smgb=\E[=1;0m, smgbp=\E[=1;%i%p1%dm, - smglp=\E[=2;%i%p1%dm, smgr=\E[=3;0m, - smgrp=\E[=3;%i%p1%dm, smgt=\E[=0;0m, - smgtp=\E[=0;%i%p1%dm, smm=\E[=10L, - wind=\E[%i%p1%d;%p2%d;%i%p3%d;%p4%dr, - use=scoansi-old, -# make this easy to change... -scoansi|SCO Extended ANSI standard crt, - use=scoansi-old, - -# This actually describes the generic SVr4 display driver for Intel boxes. -# The isn't documented and therefore may not be reliable. -# From: Eric Raymond Mon Nov 27 19:00:53 EST 1995 -att6386|at386|386at|AT&T WGS 6386 console, - am, bw, eo, xon, - cols#80, it#8, lines#25, - acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C, - clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, 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, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S, - indn=\E[%p1%dS, invis=\E[9m, is2=\E[0;10;39m, kbs=^H, - kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, kich1=\E[@, - knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S, rc=\E8, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m, - 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, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, vpa=\E[%i%p1%dd, use=klone+color, -# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr) -pc6300plus|AT&T 6300 plus, - OTbs, am, xon, - cols#80, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[=C, - clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, - dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K, - home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=^J, - 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=^M^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, - -# From: Benjamin C. W. Sittler -# -# I have a UNIX PC which I use as a terminal attached to my Linux PC. -# Unfortunately, the UNIX PC terminfo entry that comes with ncurses -# is broken. All the special key sequences are broken, making it unusable -# with Emacs. The problem stems from the following: -# -# The UNIX PC has a plethora of keys (103 of them, and there's no numeric -# keypad!), loadable fonts, and strange highlighting modes ("dithered" -# half-intensity, "smeared" bold, and real strike-out, for example.) It also -# uses resizable terminal windows, but the bundled terminal program always -# uses an 80x24 window (and doesn't support seem to support a 132-column -# mode.) -# -# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a -# library which was a superset of SVr3.5 curses (called tam, for "terminal -# access method".) tam includes support for real, overlapping windows, -# onscreen function key labels, and bitmap graphics. But since the primary -# user interface on the UNIX PC was a GUI program (ua, for "user -# assistant",) and remote administration was considered important for the -# machine, tam also supported VT100-compatible terminals attached to the -# serial port or used across the StarLan network. To simulate the extra keys -# not present on a VT100, users could press ESC and a two-letter sequence, -# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences, -# however, were not the same as those sent by the actual Undo key. The -# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example. -# (If you're interested in adding some of the tam calls to ncurses, btw, I -# have the full documentation and several programs which use tam. It also -# used an extended terminfo format to describe key sequences, special -# highlighting modes, etc.) -# -# KEYS: This means that ncurses would quite painful on the UNIX PC, since -# there are two sequences for every key-modifier combination (local keyboard -# sequence and remote "VT100" sequence.) But I doubt many people are trying -# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the -# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume) -# seem to have been built from the manual describing the VT100 sequences. -# This means it doesn't work for a real live UNIX PC. -# -# FONTS: The UNIX PC also has a strange interpretation of "alternate -# character set". Rather than the VT100 graphics you might expect, it allows -# up to 8 custom fonts to be loaded at any given time. This means that -# 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: -# -# SGR10 - Select font 0 - ESC [ 10 m or SO -# SGR11 - Select font 1 - ESC [ 11 m or SI -# SGR12 - Select font 2 - ESC [ 12 m -# ... (etc.) -# SGR17 - Select font 7 - ESC [ 17 m -# -# Graphics for line drawing are not reliably found at *any* character -# location because the UNIX PC has dynamically reloadable fonts. I use font -# 0 for regular text and font 1 for italics, but this is by no means -# universal. So ASCII line drawing is in order if smacs/rmacs are enabled. -# -# MISC: The cursor visible/cursor invisible sequences were swapped in the -# distributed terminfo. -# -# To ameliorate these problems (and fix a few highlighting bugs) I rewrote -# the UNIX PC terminfo entry. The modified version works great with Lynx, -# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC -# attached by serial cable. In Emacs, even the Undo key works, and many -# applications can now use the F1-F8 keys. -# -# esr's notes: -# Terminfo entry for the AT&T Unix PC 7300 -# from escape(7) in Unix PC 7300 Manual. -# Somewhat similar to a vt100-am (but different enough -# to redo this from scratch.) -# -# /*************************************************************** -# * -# * FONT LOADING PROGRAM FOR THE UNIX PC -# * -# * This routine loads a font defined in the file ALTFONT -# * into font memory slot #1. Once the font has been loaded, -# * it can be used as an alternative character set. -# * -# * The call to ioctl with the argument WIOCLFONT is the key -# * to this routine. For more information, see window(7) in -# * the PC 7300 documentation. -# ***************************************************************/ -# #include /* needed for strcpy call */ -# #include /* needed for ioctl call */ -# #define FNSIZE 60 /* font name size */ -# #define ALTFONT "/usr/lib/wfont/special.8.ft" /* font file */ -# /* -# * The file /usr/lib/wfont/special.8.ft comes with the -# * standard PC software. It defines a graphics character set -# * similar to that of the Teletype 5425 terminal. To view -# * this or other fonts in /usr/lib/wfont, use the command -# * cfont . For further information on fonts see -# * cfont(1) in the PC 7300 documentation. -# */ -# -# struct altfdata /* structure for alt font data */ -# { -# short altf_slot; /* memory slot number */ -# char altf_name[FNSIZE]; /* font name (file name) */ -# }; -# ldfont() -# { -# int wd; /* window in which altfont will be */ -# struct altfdata altf; -# altf.altf_slot=1; -# strcpy(altf.altf_name,ALTFONT); -# for (wd =1; wd < 12; wd++) { -# ioctl(wd, WIOCLFONT,&altf); -# } -# } -# -# (att7300: added /// from the BSDI entry, -# they're confirmed by the man page for the System V display---esr) -# -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=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, - ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, 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, kbs=^H, kcan=\EOw, kcbt=\E[Z, - kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, 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, - -# Sent by Stefan Stapelberg , 24 Feb 1997, this is -# from SGI's terminfo database. SGI's entry shows F9-F12 with the codes -# for the application keypad mode. We have added iris-ansi-ap rather than -# change the original to keypad mode. -# -# (iris-ansi: added rmam/smam based on init string -- esr) -# -# This entry, and those derived from it, is used in xwsh (also known as -# winterm). Some capabilities that do not fit into the terminfo model -# include the shift- and control-functionkeys: -# -# F1-F12 generate different codes when shift or control modifiers are used. -# For example: -# F1 \E[001q -# shift F1 \E[013q -# control-F1 \E[025q -# -# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e., -# \EOP to \EOS. The shifted and control modifiers still do the same thing. -# -# The cursor keys also have different codes: -# control-up \E[162q -# control-down \E[165q -# control-left \E[159q -# control-right \E[168q -# -# shift-up \E[161q -# shift-down \E[164q -# shift-left \E[158q -# shift-right \E[167q -# -# control-tab \[072q -# -iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100), - am, - 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=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, - kend=\E[146q, kent=^M, kf1=\E[001q, kf10=\E[010q, - kf11=\E[011q, kf12=\E[012q, kf2=\E[002q, kf3=\E[003q, - kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, - kf8=\E[008q, kf9=\E[009q, khome=\E[H, 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, -iris-ansi-ap|IRIS ANSI in application-keypad mode, - is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q, - kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi, - -# 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@, rc=\E8, ritm=\E[23m, - rmul=\E[24m, rs1=\Ec, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sitm=\E[3m, use=vt100+enq, use=klone+color, - use=iris-ansi-ap, - -# The following is a version of the ibm-pc entry distributed with PC/IX, -# (Interactive Systems' System 3 for the Big Blue), modified by Richard -# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original, -# (the former is untrue, and the latter failed under UCB/man); standout and -# underline modes have been added. Note: this entry describes the "native" -# capabilities of the PC monochrome display, without ANY emulation; most -# communications packages (but NOT PC/IX connect) do some kind of emulation. -pcix|PC/IX console, - am, bw, eo, - cols#80, lines#24, - clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K, - home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, - -# (ibmpcx: this entry used to be known as ibmx. -# It formerly included the following extension capabilities: -# :GC=b:GL=v:GR=t:RT=^J:\ -# :GH=\E[196g:GV=\E[179g:\ -# :GU=\E[193g:GD=\E[194g:\ -# :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\ -# :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\ -# :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\ -# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate -# ":kh=\E[Y:". Added IBM-PC forms characters and highlights, they match -# what was there before. -- esr) -ibmpcx|xenix|ibmx|IBM PC xenix console display, - OTbs, am, msgr, - cols#80, lines#25, - clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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=klone+acs, use=klone+sgr8, - -#### QNX -# - -# QNX 4.0 Console -# Michael's original version of this entry had , , -# ; this was so terminfo applications could write the lower -# right corner without triggering a scroll. The ncurses terminfo library can -# handle this case with the capability, and prefers for better -# optimization. Bug: The capability resets attributes. -# From: Michael Hunter 30 Jul 1996 -# (removed: ) -qnx|qnx4|qnx console, - daisy, km, mir, msgr, xhpa, xt, - colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8, - acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t\303u\264v\301w\302x\263, - bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ, - cnorm=\Ey1, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2, - dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee, - il1=\EE, ind=^J, kBEG=\377\356, kCAN=\377\263, - kCMD=\377\267, kCPY=\377\363, kCRT=\377\364, - kDL=\377\366, kEND=\377\301, kEOL=\377\311, - kEXT=\377\367, kFND=\377\370, kHLP=\377\371, - kHOM=\377\260, kIC=\377\340, kLFT=\377\264, - kMOV=\377\306, kMSG=\377\304, kNXT=\377\272, - kOPT=\377\372, kPRT=\377\275, kPRV=\377\262, - kRDO=\377\315, kRES=\377\374, kRIT=\377\266, - kRPL=\377\373, kSAV=\377\307, kSPD=\377\303, - kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0, - kclo=\377\343, kclr=\377\341, kcmd=\377\245, - kcpy=\377\265, kcrt=\377\305, kctab=\377\237, - kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246, - kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274, - ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320, - kext=\377\270, kf1=\377\201, kf10=\377\212, - kf11=\377\256, kf12=\377\257, kf13=\377\213, - kf14=\377\214, kf15=\377\215, kf16=\377\216, - kf17=\377\217, kf18=\377\220, kf19=\377\221, - kf2=\377\202, kf20=\377\222, kf21=\377\223, - kf22=\377\224, kf23=\377\333, kf24=\377\334, - kf25=\377\225, kf26=\377\226, kf27=\377\227, - kf28=\377\230, kf29=\377\231, kf3=\377\203, - kf30=\377\232, kf31=\377\233, kf32=\377\234, - kf33=\377\235, kf34=\377\236, kf35=\377\276, - kf36=\377\277, kf37=\377\321, kf38=\377\322, - kf39=\377\323, kf4=\377\204, kf40=\377\324, - kf41=\377\325, kf42=\377\326, kf43=\377\327, - kf44=\377\330, kf45=\377\331, kf46=\377\332, - kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206, - kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346, - khlp=\377\350, khome=\377\240, khts=\377\342, - kich1=\377\253, kil1=\377\273, kind=\377\261, - kmov=\377\351, kmrk=\377\355, kmsg=\377\345, - knp=\377\252, knxt=\377\312, kopn=\377\357, - kopt=\377\353, kpp=\377\242, kprt=\377\255, - kprv=\377\302, krdo=\377\336, kref=\377\354, - kres=\377\360, krfr=\377\347, kri=\377\271, - krmir=\377\313, krpl=\377\362, krst=\377\352, - ksav=\377\361, kslt=\377\247, kspd=\377\335, - ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER, - rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER, - rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d, - setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei, - smso=\E(, smul=\E[, -# -# -qnxt|qnxt4|QNX4 terminal, - crxm, use=qnx4, -# -qnxm|QNX4 with mouse events, - maddr#1, - chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h, - mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l, - mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l, - smicm=\E/>2h, use=qnx4, -# -qnxw|QNX4 windows, - xvpa, use=qnxm, -# -# Monochrome QNX4 terminal or console. Setting this terminal type will -# allow an application running on a color console to behave as if it -# were a monochrome terminal. Output will be through stdout instead of -# console writes because the term routines will recognize that the -# terminal name starts with 'qnxt'. -# -qnxtmono|Monochrome QNX4 terminal or console, - colors@, pairs@, - scp@, use=qnx4, - -# From: Federico Bianchi , 1 Jul 1998 -# (esr: commented out and to avoid warnings.) -# (TD: derive from original qnx4 entry) -qnxt2|qnx 2.15 serial terminal, - am, - civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@, - rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4, - -# QNX ANSI terminal definition -qansi-g|QNX ANSI, - am, eslok, hs, xon, - colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80, - acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l, - fsl=\E[?6h\E8, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, - ind=\E[S, indn=\E[%p1%dS, invis=\E[9m, - is2=\E>\E[?1l\E[?7h\E[0;10;39;49m, is3=\E(B\E)0, - kBEG=\ENn, kCAN=\E[s, kCMD=\E[t, kCPY=\ENs, kCRT=\ENt, - kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kHOM=\E[h, - kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c, - kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa, - kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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~, - 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, - khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a, - kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo, - kopt=\ENk, 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, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\E[T, - rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmso=\E[27m, - rmul=\E[24m, 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}%=%t3%e%p1%d%;m, - 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%;%?%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, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, - tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, -# -qansi|QNX ansi with console writes, - daisy, xhpa, use=qansi-g, -# -qansi-t|QNX ansi without console writes, - crxm, use=qansi, -# -qansi-m|QNX ansi with mouse, - maddr#1, - chr=\E[, cvr=\E], is1=\E[0t, mcub=\E[>1h, mcub1=\E[>7h, - mcud=\E[>1h, mcud1=\E[>1l\E[>9h, mcuf=\E[>1h\E[>9l, - mcuf1=\E[>7l, mcuu=\E[>6h, mcuu1=\E[>6l, rmicm=\E[>2l, - smicm=\E[>2h, use=qansi, -# -qansi-w|QNX ansi for windows, - xvpa, use=qansi-m, - -#### NetBSD consoles -# -# pcvt termcap database entries (corresponding to release 3.31) -# Author's last edit-date: [Fri Sep 15 20:29:10 1995] -# -# (For the terminfo master file, I translated these into terminfo syntax. -# Then I dropped all the pseudo-HP entries. we don't want and can't use -# the :Xs: flag. Then I split :is: into a size-independent and a -# size-dependent . Finally, I added / -- esr) - -# NOTE: has been taken out of this entry. for reference, it should -# be . For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below. -# (esr: added and to resolve NetBSD Problem Report #4583) -pcvtXX|pcvt vt200 emulator (DEC VT220), - am, km, mir, msgr, xenl, - it#8, vt#3, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, 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@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS, - is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=\177, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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, rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, - ri=\EM, rin=\E[%p1%dT, 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, sc=\E7, - 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, - -# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor) -# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and -# 50 lines entries; 80 columns -pcvt25|dec vt220 emulation with 25 lines, - cols#80, lines#25, - is2=\E[1;25r\E[25;1H, use=pcvtXX, -pcvt28|dec vt220 emulation with 28 lines, - cols#80, lines#28, - is2=\E[1;28r\E[28;1H, use=pcvtXX, -pcvt35|dec vt220 emulation with 35 lines, - cols#80, lines#35, - is2=\E[1;35r\E[35;1H, use=pcvtXX, -pcvt40|dec vt220 emulation with 40 lines, - cols#80, lines#40, - is2=\E[1;40r\E[40;1H, use=pcvtXX, -pcvt43|dec vt220 emulation with 43 lines, - cols#80, lines#43, - is2=\E[1;43r\E[43;1H, use=pcvtXX, -pcvt50|dec vt220 emulation with 50 lines, - cols#80, lines#50, - is2=\E[1;50r\E[50;1H, use=pcvtXX, - -# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor) -# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and -# 50 lines entries; 132 columns -pcvt25w|dec vt220 emulation with 25 lines and 132 cols, - cols#132, lines#25, - is2=\E[1;25r\E[25;1H, use=pcvtXX, -pcvt28w|dec vt220 emulation with 28 lines and 132 cols, - cols#132, lines#28, - is2=\E[1;28r\E[28;1H, use=pcvtXX, -pcvt35w|dec vt220 emulation with 35 lines and 132 cols, - cols#132, lines#35, - is2=\E[1;35r\E[35;1H, use=pcvtXX, -pcvt40w|dec vt220 emulation with 40 lines and 132 cols, - cols#132, lines#40, - is2=\E[1;40r\E[40;1H, use=pcvtXX, -pcvt43w|dec vt220 emulation with 43 lines and 132 cols, - cols#132, lines#43, - is2=\E[1;43r\E[43;1H, use=pcvtXX, -pcvt50w|dec vt220 emulation with 50 lines and 132 cols, - cols#132, lines#50, - is2=\E[1;50r\E[50;1H, use=pcvtXX, - -# 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, - -# Terminfo entries to enable the use of the ncurses library in colour on a -# NetBSD-arm32 console (only tested on a RiscPC). -# Created by Dave Millen 22.07.98 -# modified codes for setf/setb to setaf/setab, then to klone+color, corrected -# typo in invis - TD -arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480), - am, bce, msgr, xenl, xon, - cols#80, it#8, lines#30, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, - enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, - invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H, - kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x, - kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v, - kf8=\E[l, kf9=\E[w, rc=\E8, 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, - sc=\E7, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<2>, - sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, - smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ecma+sgr, - use=klone+color, - -arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768), - cols#132, lines#50, use=arm100, - -# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine -# manufactured by Sharp for the Japenese market. -# From Minoura Makoto , 12 May 1996 -x68k|x68k-ite|NetBSD/x68k ITE, - cols#96, lines#32, - kclr=\E[9~, khlp=\E[28~, use=vt220, - -# : -# Entry for the DNARD OpenFirmware console, close to ANSI but not quite. -# -# (still unfinished, but good enough so far.) -ofcons|DNARD OpenFirmware console, - bw, - cols#80, lines#30, - bel=^G, blink=\2337;2m, bold=\2331m, clear=^L, cr=^M, - cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B, - cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, - cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P, - dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K, - flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL, - il1=\233L, ind=^J, invis=\2338m, kbs=^H, kcub1=\233D, - kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P, - kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W, - kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r, - kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m, - rmso=\2330m, rmul=\2330m, - sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, - sgr0=\2330m, - -# NetBSD "wscons" emulator in vt220 mode. -# This entry is based on the NetBSD termcap entry, correcting the ncv value. -# The emulator renders underlined text in red. Colors are otherwise usable. -# -# Testing the emulator and reading the source code (NetBSD 2.0), it appears -# that "vt220" is inaccurate. There are a few vt220-features, but most of the -# vt220 screens in vttest do not work with this emulator. For instance, it -# identifies itself (primary DA response) as a vt220 with selective erase. But -# the selective erase feature does not work. The secondary response is copied -# from Kermit's emulation of vt220, does not correspond to actual vt220. At -# the level of detail in a termcap, it is a passable emulator, since ECH does -# work. Don't use it on a VMS system -TD -wsvt25|NetBSD wscons in 25 line DEC VT220 mode, - bce, msgr, - colors#8, cols#80, it#8, lines#25, ncv#2, pairs#64, - is2=\E[r\E[25;1H, 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~, khome=\E[7~, op=\E[m, rs1=\Ec, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=vt220, - -wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta, - km, use=wsvt25, - -# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and -# DECstation/pmax. -rcons|BSD rasterconsole, - use=sun-il, -# Color version of above. Color currently only provided by NetBSD. -rcons-color|BSD rasterconsole with ANSI color, - bce, - colors#8, pairs#64, - op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=rcons, - -# mgterm -- MGL/MGL2, MobileGear Graphic Library -# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k} -# -- the setf/setb are probably incorrect, more likely setaf/setab -TD -# -- compare with cons25w -mgterm, - 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, clear=\E[H\E[J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, 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, khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I, - nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, - rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, setb=\E[4%p1%dm, - setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, - -#### FreeBSD console entries -# -# From: Andrey Chernov 29 Mar 1996 -# Andrey Chernov maintains the FreeBSD termcap distributions. -# -# Note: Users of FreeBSD 2.1.0 and older versions must either upgrade -# or comment out the :cb: capability in the console entry. -# -# Alexander Lukyanov reports: -# I have seen FreeBSD-2.1.5R... The old el1 bug changed, but it is still there. -# Now el1 clears not only to the line beginning, but also a large chunk -# of previous line. But there is another bug - ech does not work at all. -# - -# for syscons -# common entry without semigraphics -# Bug: The capability resets attributes. -# Bug? The ech and el1 attributes appear to move the cursor in some cases; for -# instance el1 does if the cursor is moved to the right margin first. Removed -# by T.Dickey 97/5/3 (ech=\E[%p1%dX, el1=\E[1K) -# -# Setting colors turns off reverse; we cannot guarantee order, so use ncv. -# Note that this disables standout with color. -# -# The emulator sends difference strings based on shift- and control-keys, -# like scoansi: -# F13-F24 are shifted F1-F12 -# F25-F36 are control F1-F12 -# F37-F48 are shift+control F1-F12 -cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode), - am, bce, bw, eo, msgr, npc, - colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, - cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, 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, khome=\E[H, kich1=\E[L, - knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - 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, -cons25|ansis|ansi80x25|freebsd console (25-line ansi mode), - acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371, - use=cons25w, -cons25-debian|freebsd console with debian backspace (25-line ansi mode), - kbs=\177, 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, -cons30|ansi80x30|freebsd console (30-line ansi mode), - lines#30, use=cons25, -cons30-m|ansi80x30-mono|freebsd console (30-line mono ansi mode), - lines#30, use=cons25-m, -cons43|ansi80x43|freebsd console (43-line ansi mode), - lines#43, use=cons25, -cons43-m|ansi80x43-mono|freebsd console (43-line mono ansi mode), - lines#43, use=cons25-m, -cons50|ansil|ansi80x50|freebsd console (50-line ansi mode), - lines#50, use=cons25, -cons50-m|ansil-mono|ansi80x50-mono|freebsd console (50-line mono ansi mode), - lines#50, use=cons25-m, -cons60|ansi80x60|freebsd console (60-line ansi mode), - lines#60, use=cons25, -cons60-m|ansi80x60-mono|freebsd console (60-line mono ansi mode), - lines#60, use=cons25-m, -cons25r|pc3r|ibmpc3r|cons25-koi8-r|freebsd console w/koi8-r cyrillic, - acsc=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m\204n\212q\0t\206u\207v\211w\210x\201y\230z\231~\225, - 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@, - 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, -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), - lines#50, use=cons25r-m, -cons60r|cons60-koi8r|freebsd console w/koi8-r cyrillic (60 lines), - lines#60, use=cons25r, -cons60r-m|cons60-koi8r-m|freebsd console w/koi8-r cyrillic (60-line mono), - lines#60, use=cons25r-m, -# ISO 8859-1 FreeBSD console -cons25l1|cons25-iso8859|freebsd console w/iso 8859-1 chars, - acsc=+\253\,\273-\030.\031`\201a\202f\207g\210i\247j\213k\214l\215m\216n\217o\220p\221q\222r\223s\224t\225u\226v\227w\230x\231y\232z\233~\237, - 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, -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), - lines#50, use=cons25l1-m, -cons60l1|cons60-iso|freebsd console w/iso 8859-1 chars (60 lines), - lines#60, use=cons25l1, -cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono), - lines#60, use=cons25l1-m, - -#### 386BSD and BSD/OS Consoles -# - -# This was the original 386BSD console entry (I think). -# Some places it's named oldpc3|oldibmpc3. -# From: Alex R.N. Wetmore -origpc3|origibmpc3|IBM PC 386BSD Console, - OTbs, am, bw, eo, xon, - cols#80, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bold=\E[7m, clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K, - home=\E[H, ind=\E[S, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x, - rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x, - smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x, - -# description of BSD/386 console emulator in version 1.0 (supplied by BSDI) -oldpc3|oldibmpc3|old IBM PC BSD/386 Console, - OTbs, km, - lines#25, - bel=^G, bold=\E[=15F, cr=^M, cud1=^J, dim=\E[=8F, dl1=\E[M, - ht=^I, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F, - knp=\E[G, kpp=\E[I, nel=^M^J, sgr0=\E[=R, - -# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1 -# Note, the emulator supports many of the additional console features -# listed in the iBCS2 (e.g. character-set selection) though not all -# are described here. This entry really ought to be upgraded. -# Also note, the console will also work with fewer lines after doing -# "stty rows NN", e.g. to use 24 lines. -# (Color support from Kevin Rosenberg , 2 May 1996) -# Bug: The capability resets attributes. -bsdos-pc|IBM PC BSD/OS Console, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - use=bsdos-pc-nobold, - -bsdos-pc-nobold|BSD/OS PC console w/o bold, - use=klone+color, use=bsdos-pc-m, - -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=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, - kll=\E[F, knp=\E[G, kpp=\E[I, nel=^M^J, 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=klone+sgr8, - -# Old names for BSD/OS PC console used in releases before 4.1. -pc3|BSD/OS on the PC Console, - use=bsdos-pc-nobold, -ibmpc3|pc3-bold|BSD/OS on the PC Console with bold instead of underline, - use=bsdos-pc, - -# BSD/OS on the SPARC -bsdos-sparc|Sun SPARC BSD/OS Console, - use=sun, - -# BSD/OS on the PowerPC -bsdos-ppc|PowerPC BSD/OS Console, - use=bsdos-pc, - -#### DEC VT52 -# (// capabilities aren't in DEC's official entry -- esr) -# -# Actually (TD pointed this out at the time the acsc string was added): -# vt52 shouldn't define full acsc since most of the cells don't match. -# see vt100 manual page A-31. This is the list that does match: -# f degree -# g plus/minus -# h right-arrow -# k down-arrow -# m scan-1 -# o scan-3 -# q scan-5 -# s scan-7 -# The line-drawing happens to work in several terminal emulators, but should -# not be used as a guide to the capabilities of the vt52. Note in particular -# that vt52 does not support line-drawing characters (the scan-X values refer -# to a crude plotting feature) -TD -vt52|dec vt52, - OTbs, - cols#80, it#8, lines#24, - acsc=+h.k0affggolpnqprrss, bel=^G, clear=\EH\EJ, cr=^M, - cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF, - -#### DEC VT100 and compatibles -# -# DEC terminals from the vt100 forward are collected here. Older DEC terminals -# and micro consoles can be found in the `obsolete' section. More details on -# the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be -# found near the end of this file. -# -# Except where noted, these entries are DEC's official terminfos. -# Contact Bill Hedberg of Terminal Support -# Engineering for more information. Updated terminfos and termcaps -# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps. -# -# In October 1995 DEC sold its terminals business, including the VT and Dorio -# line and trademark, to SunRiver Data Systems. SunRiver has since changed -# its name to Boundless Technologies; see http://www.boundless.com. -# - -# NOTE: Any VT100 emulation, whether in hardware or software, almost -# certainly includes what DEC called the `Level 1 editing extension' codes; -# only the very oldest VT100s lacked these and there probably aren't any of -# those left alive. To capture these, use one of the VT102 entries. -# -# Note that the glitch in vt100 is not quite the same as on the Concept, -# since the cursor is left in a different position while in the -# weird state (concept at beginning of next line, vt100 at end -# of this line) so all versions of vi before 3.7 don't handle -# right on vt100. The correct way to handle is when -# you output the char in column 80, immediately output CR LF -# and then assume you are in column 1 of the next line. If -# is on, am should be on too. -# -# I assume you have smooth scroll off or are at a slow enough baud -# rate that it doesn't matter (1200? or less). Also this assumes -# that you set auto-nl to "on", if you set it off use vt100-nam -# below. -# -# The padding requirements listed here are guesses. It is strongly -# recommended that xon/xoff be enabled, as this is assumed here. -# -# The vt100 uses and rather than // because the -# tab settings are in non-volatile memory and don't need to be -# reset upon login. Also setting the number of columns glitches -# the screen annoyingly. You can type "reset" to get them set. -# -# The VT100 series terminals have cursor ("arrows") keys which can operate -# in two different modes: Cursor Mode and Application Mode. Cursor Mode -# is the reset state, and is assumed to be the normal state. Application -# Mode is the "set" state. In Cursor Mode, the cursor keys transmit -# "Esc [ {code}" sequences, conforming to ANSI standards. In Application -# Mode, the cursor keys transmit "Esc O " sequences. Application Mode -# was provided primarily as an aid to the porting of VT52 applications. It is -# assumed that the cursor keys are normally in Cursor Mode, and expected that -# applications such as vi will always transmit the string. Therefore, -# the definitions for the cursor keys are made to match what the terminal -# transmits after the string is transmitted. If the string -# is a null string or is not defined, then cursor keys are assumed to be in -# "Cursor Mode", and the cursor keys definitions should match that assumption, -# else the application may fail. It is also expected that applications will -# always transmit the string to the terminal before they exit. -# -# The VT100 series terminals have an auxiliary keypad, commonly referred to as -# the "Numeric Keypad", because it is a cluster of numeric and function keys. -# The Numeric Keypad which can operate in two different modes: Numeric Mode and -# Application Mode. Numeric Mode is the reset state, and is assumed to be -# the normal state. Application Mode is the "set" state. In Numeric Mode, -# the numeric and punctuation keys transmit ASCII 7-bit characters, and the -# Enter key transmits the same as the Return key (Note: the Return key -# can be configured to send either LF (\015) or CR LF). In Application Mode, -# all the keypad keys transmit "Esc O {code}" sequences. The PF1 - PF4 keys -# always send the same "Esc O {code}" sequences. It is assumed that the keypad -# is normally in Numeric Mode. If an application requires that the keypad be -# in Application Mode then it is expected that the user, or the application, -# will set the TERM environment variable to point to a terminfo entry which has -# defined the string to include the codes that switch the keypad into -# Application Mode, and the terminfo entry will also define function key -# fields to match the Application Mode control codes. If the string -# is a null string or is not defined, then the keypad is assumed to be in -# Numeric Mode. If the string switches the keypad into Application -# Mode, it is expected that the string will contain the control codes -# necessary to reset the keypad to "Normal" mode, and it is also expected that -# applications which transmit the string will also always transmit the -# string to the terminal before they exit. -# -# Here's a diagram of the VT100 keypad keys with their bindings. -# The top line is the name of the key (some DEC keyboards have the keys -# labelled somewhat differently, like GOLD instead of PF1, but this is -# the most "official" name). The second line is the escape sequence it -# generates in Application Keypad mode (where "$" means the ESC -# character). The third line contains two items, first the mapping of -# the key in terminfo, and then in termcap. -# _______________________________________ -# | PF1 | PF2 | PF3 | PF4 | -# | $OP | $OQ | $OR | $OS | -# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_| -# | 7 8 9 - | -# | $Ow | $Ox | $Oy | $Om | -# |_kf9__k9_|_kf10_k;_|_kf0__k0_|_________| -# | 4 | 5 | 6 | , | -# | $Ot | $Ou | $Ov | $Ol | -# |_kf5__k5_|_kf6__k6_|_kf7__k7_|_kf8__k8_| -# | 1 | 2 | 3 | | -# | $Oq | $Or | $Os | enter | -# |_ka1__K1_|_kb2__K2_|_ka3__K3_| $OM | -# | 0 | . | | -# | $Op | $On | | -# |___kc1_______K4____|_kc3__K5_|_kent_@8_| -# -# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the -# terminfo guidelines. That is a compromise used to assign the remaining -# keys on the keypad to kf5-kf0, used on older systems with legacy termcap -# support: -vt100+keypad|dec vt100 numeric keypad no fkeys, - ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn, -vt100+pfkeys|dec vt100 numeric keypad, - kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - use=vt100+keypad, -vt100+fnkeys|dec vt100 numeric keypad, - kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, - kf9=\EOw, use=vt100+pfkeys, -# -# A better adaptation to modern keyboards such as the PC's, which have a dozen -# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to -# use the 5-key arrangement to model the arrow keys as suggested in the -# terminfo guidelines: -# _______________________________________ -# | PF1 | PF2 | PF3 | PF4 | -# | $OP | $OQ | $OR | $OS | -# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_| -# | 7 8 9 - | -# | $Ow | $Ox | $Oy | $Om | -# |_ka1__K1_|_________|_ka3__K3_|_________| -# | 4 | 5 | 6 | , | -# | $Ot | $Ou | $Ov | $Ol | -# |_________|_kb2__K2_|_________|_________| -# | 1 | 2 | 3 | | -# | $Oq | $Or | $Os | enter | -# |_kc1__K4_|_________|_kc3__K5_| $OM | -# | 0 | . | | -# | $Op | $On | | -# |___________________|_________|_kent_@8_| -# -vt220+keypad|dec vt220 numeric keypad, - ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ka2=\EOx, kb1=\EOt, - kb3=\EOv, kc2=\EOr, -# -vt100+enq|ncurses extension for vt100-style ENQ, - u8=\E[?1;2c, use=ansi+enq, -vt102+enq|ncurses extension for vt102-style ENQ, - u8=\E[?6c, use=ansi+enq, -# -# And here, for those of you with orphaned VT100s lacking documentation, is -# a description of the soft switches invoked when you do `Set Up'. -# -# Scroll 0-Jump Shifted 3 0-# -# | 1-Smooth | 1-British pound sign -# | Autorepeat 0-Off | Wrap Around 0-Off -# | | 1-On | | 1-On -# | | Screen 0-Dark Bkg | | New Line 0-Off -# | | | 1-Light Bkg | | | 1-On -# | | | Cursor 0-Underline | | | Interlace 0-Off -# | | | | 1-Block | | | | 1-On -# | | | | | | | | -# 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 <--Standard Settings -# | | | | | | | | -# | | | Auto XON/XOFF 0-Off | | | Power 0-60 Hz -# | | | 1-On | | | 1-50 Hz -# | | Ansi/VT52 0-VT52 | | Bits Per Char. 0-7 Bits -# | | 1-ANSI | | 1-8 Bits -# | Keyclick 0-Off | Parity 0-Off -# | 1-On | 1-On -# Margin Bell 0-Off Parity Sense 0-Odd -# 1-On 1-Even -# -# The following SET-UP modes are assumed for normal operation: -# ANSI_MODE AUTO_XON/XOFF_ON NEWLINE_OFF 80_COLUMNS -# WRAP_AROUND_ON JUMP_SCROLL_OFF -# Other SET-UP modes may be set for operator convenience or communication -# requirements; I recommend -# AUTOREPEAT_ON BLOCK_CURSOR MARGIN_BELL_OFF SHIFTED_3_# -# Unless you have a graphics add-on such as Digital Engineering's VT640 -# (and even then, whenever it can be arranged!) you should set -# INTERLACE_OFF -# -# (vt100: I added / based on the init string, also . -- esr) -vt100|vt100-am|dec vt100 (w/advanced video), - OTbs, am, mc5i, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, - enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, lf1=pf1, - lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, - rc=\E8, 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, sc=\E7, - 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[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, - use=vt100+fnkeys, -vt100nam|vt100-nam|vt100 no automargins, - am@, xenl@, use=vt100-am, -vt100-vb|dec vt100 (w/advanced video) & no beep, - bel@, flash=\E[?5h\E[?5l, use=vt100, - -# Ordinary vt100 in 132 column ("wide") mode. -vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video), - cols#132, lines#24, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-am, -vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video no automargin), - cols#132, lines#14, vt@, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-nam, - -# 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, -vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option), - cols#132, lines#14, use=vt100-nav, - -# vt100 with one of the 24 lines used as a status line. -# We put the status line on the top. -vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline, - eslok, hs, - lines#23, - clear=\E[2;1H\E[J$<50>, csr=\E[%i%i%p1%d;%p2%dr, - cup=\E[%i%p1%{1}%+%d;%p2%dH$<5>, dsl=\E7\E[1;24r\E8, - fsl=\E8, home=\E[2;1H, is2=\E7\E[2;24r\E8, - tsl=\E7\E[1;%p1%dH\E[1K, use=vt100-am, - -# Status line at bottom. -# Clearing the screen will clobber status line. -vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline, - eslok, hs, - lines#23, - dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H, - tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am, - -# Most of the `vt100' emulators out there actually emulate a vt102 -# 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, - use=vt100, -vt102-w|dec vt102 in wide mode, - cols#132, - rs3=\E[?3h, use=vt102, - -# Many brain-dead PC comm programs that pretend to be `vt100-compatible' -# fail to interpret the ^O and ^N escapes properly. Symptom: the -# string in the canonical vt100 entry above leaves the screen littered -# with little snowflake or star characters (IBM PC ROM character \017 = ^O) -# after highlight turnoffs. This entry should fix that, and even leave -# ACS support working, at the cost of making multiple-highlight changes -# slightly more expensive. -# From: Eric S. Raymond July 22 1995 -vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes), - sgr@, sgr0=\E[m, use=vt102, - -# VT125 Graphics CRT. Clear screen also erases graphics -# Some vt125's came configured with vt102 support. -vt125|vt125 graphics terminal, - mir, - clear=\E[H\E[2J\EPpS(E)\E\\$<50>, use=vt100, - -# This isn't a DEC entry, it came from University of Wisconsin. -# (vt131: I added / based on the init string, also -- esr) -vt131|dec vt131, - OTbs, am, xenl, - cols#80, it#8, lines#24, vt#3, - bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, 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=^M^J, rc=\E8, 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, sc=\E7, - sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=, - smso=\E[7m$<2/>, smul=\E[4m$<2/>, - -# vt132 - like vt100 but slower and has ins/del line and such. -# I'm told that / are backwards in the terminal from the -# manual and from the ANSI standard, this describes the actual -# terminal. I've never actually used a vt132 myself, so this -# is untested. -# -vt132|DEC vt132, - xenl, - dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, - ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100, - -# This vt220 description maps F5--F9 to the second block of function keys -# at the top of the keyboard. The "DO" key is used as F10 to avoid conflict -# with the key marked (ESC) on the vt220. See vt220d for an alternate mapping. -# PF1--PF4 are used as F1--F4. -# -vt220-old|vt200-old|DEC VT220 in vt100 emulation mode, - OTbs, OTpt, am, mir, xenl, xon, - cols#80, lines#24, vt#3, - OTnl=^J, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l, - clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>, - is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, 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~, knp=\E[6~, kpp=\E[5~, rc=\E8, - 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, sc=\E7, - 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, - -# A much better description of the VT200/220; used to be vt220-8 -# changed rmacs/smacs from shift-in/shift-out to vt200-old's explicit G0/G1 -# designation to accommodate bug in pcvt -TD -vt220|vt200|dec vt220, - OTbs, am, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, if=/usr/share/tabset/vt100, - il=\E[%p1%dL, il1=\E[L, ind=\ED, - is2=\E[?7h\E[>\E[?1h\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~, kfnd=\E[1~, khlp=\E[28~, - kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[i, mc4=\E[4i, - mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m, - rmul=\E[24m, rs1=\E[?3l, sc=\E7, - 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, -vt220-w|vt200-w|DEC vt220 in wide mode, - cols#132, - rs3=\E[?3h, use=vt220, -vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode, - OTbs, am, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=^M, - csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H, - cud=\233%p1%dB, cud1=^J, cuf=\233%p1%dC, cuf1=\233C, - cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A, - dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, - ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0, - flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH, - ich=\233%p1%d@, if=/usr/share/tabset/vt100, - il=\233%p1%dL, il1=\233L, ind=\ED, - is2=\233?7h\233>\233?1h\E F\233?4l, kbs=^H, - kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, - 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, - 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, - -# vt220d: -# This vt220 description regards F6--F10 as the second block of function keys -# at the top of the keyboard. This mapping follows the description given -# in the VT220 Programmer Reference Manual and agrees with the labeling -# on some terminals that emulate the vt220. There is no support for an F5. -# 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, - -vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins, - am@, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220, - -# vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko -# (not an official DEC entry!) -# The problem with real vt220 terminals is they don't send escapes when in -# in vt220 mode. This can be gotten around two ways. 1> don't send -# escapes or 2> put the vt220 into vt100 mode and use all the nifty -# features of vt100 advanced video which it then has. -# -# This entry takes the view of putting a vt220 into vt100 mode so -# you can use the escape key in emacs and everything else which needs it. -# -# You probably don't want to use this on a VMS machine since VMS will think -# it has a vt220 and will get fouled up coming out of emacs -# -# From: Alexander Latzko , 30 Dec 1996 -# (Added vt100 , to quiet a tic warning -- esr) -vt200-js|vt220-js|dec vt200 series with jump scroll, - am, - cols#80, - bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, - ht=^I, il1=\E[L, ind=\ED, - is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1l\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=^M\ED, rc=\E8, - rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m, - rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=, - smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m, - -# This was DEC's vt320. Use the purpose-built one below instead -#vt320|DEC VT320 in vt100 emulation mode, -# use=vt220, - -# Use v320n for SCO's LYRIX. Otherwise, use Adam Thompson's vt320-nam. -# -vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode, - am@, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220, - -# These entries are not DEC's official ones, they were purpose-built for the -# VT320. Here are the designer's notes: -# is end on a PC kbd. Actually 'select' on a VT. Mapped to -# 'Erase to End of Field'... since nothing seems to use 'end' anyways... -# khome is Home on a PC kbd. Actually 'FIND' on a VT. -# Things that use usually use tab anyways... and things that don't use -# tab usually use instead... -# kprv is same as tab - Backtab is useless... -# I left out because of its RIDICULOUS complexity, -# and the resulting fact that it causes the termcap translation of the entry -# to SMASH the 1k-barrier... -# From: Adam Thompson Sept 10 1995 -# (vt320: uncommented --esr) -vt320|vt300|dec vt320 7 bit terminal, - am, eslok, hs, mir, msgr, xenl, - cols#80, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$}, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, - il1=\E[L, ind=\ED, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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~, mc0=\E[i, mc4=\E[?4i, - mc5=\E[?5i, nel=\EE, rc=\E8, 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, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - sc=\E7, - 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[1$}\E[H\E[K, use=vt220+keypad, -vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy, - am@, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - use=vt320, -# We have to init 132-col mode, not 80-col mode. -vt320-w|vt300-w|dec vt320 wide 7 bit terminal, - cols#132, wsl#132, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - use=vt320, -vt320-w-nam|vt300-w-nam|dec vt320 wide 7 bit terminal with no am, - am@, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - use=vt320-w, - -# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals -# which are pretty much a superset of the VT320. They have the -# host writable status line, yet another different DRCS matrix size, -# and such, but they add the DEC Technical character set, Multiple text -# pages, selectable length pages, and the like. The difference between -# the vt330 and vt340 is that the latter has only 2 planes and a monochrome -# monitor, the former has 4 planes and a color monitor. These terminals -# support VT131 and ANSI block mode, but as with much of these things, -# termcap/terminfo doesn't deal with these features. -# -# Note that this entry is are set up in what was the standard way for GNU -# Emacs v18 terminal modes to deal with the cursor keys in that the arrow -# keys were switched into application mode at the same time the numeric pad -# is switched into application mode. This changes the definitions of the -# arrow keys. Emacs v19 is smarter and mines its keys directly out of -# your termcap or terminfo entry, -# -# From: Daniel Glasser , 13 Oct 1993 -# (vt340: string capability "sb=\E[M" corrected to "sr"; -# also, added / based on the init string -- esr) -vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J, - cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, dsl=\E[2$~\r\E[1$}\E[K\E[$}, - ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$}, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, - il1=\E[L, ind=\ED, - is2=\E<\E F\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=^M\ED, rc=\E8, 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, sc=\E7, - 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, - -# DEC doesn't supply a vt400 description, so we add Daniel Glasser's -# (originally written with vt420 as its primary name, and usable for it). -# -# VT400/420 -- This terminal is a superset of the vt320. It adds the multiple -# text pages and long text pages with selectable length of the vt340, along -# with left and right margins, rectangular area text copy, fill, and erase -# operations, selected region character attribute change operations, -# page memory and rectangle checksums, insert/delete column, reception -# macros, and other features too numerous to remember right now. TERMCAP -# can only take advantage of a few of these added features. -# -# Note that this entry is are set up in what was the standard way for GNU -# Emacs v18 terminal modes to deal with the cursor keys in that the arrow -# keys were switched into application mode at the same time the numeric pad -# is switched into application mode. This changes the definitions of the -# arrow keys. Emacs v19 is smarter and mines its keys directly out of -# your termcap entry, -# -# From: Daniel Glasser , 13 Oct 1993 -# (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:"; -# also, added / based on the init string -- esr) -vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J$<10/>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>, - el=\E[K$<4/>, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$}, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, - is2=\E<\E F\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=^M\ED, rc=\E8, 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<\E[?3l\E[!p\E[?7h, sc=\E7, - 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, - -# (vt420: I removed , it collided with . I also restored -# a missing -- esr) -vt420|DEC VT420, - am, mir, xenl, xon, - cols#80, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/usr/share/tabset/vt300, il1=\E[L, 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, rc=\E8, 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[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7, - 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, - smkx=\E=, smso=\E[7m, smul=\E[4m, - -# 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 -# straightforward (keys 1-5 are not defined on real terminals, though some -# emulators define these): -# -# if (key < 16) then value = key; -# else if (key < 21) then value = key + 1; -# else if (key < 25) then value = key + 2; -# else if (key < 27) then value = key + 3; -# else if (key < 30) then value = key + 4; -# else value = key + 5; -# -# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT". -# There's no provision in terminfo for emitting a string in this format, so the -# application has to know it. -# -vt420pc|DEC VT420 w/PC keyboard, - kdch1=\177, kend=\E[4~, kf1=\E[11~, 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~, 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, - 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, - -vt420pcdos|DEC VT420 w/PC for DOS Merge, - lines#25, - dispc=%?%p1%{19}%=%t\E\023\021%e%p1%{32}%<%t\E%p1%c%e%p1%{127}%=%t\E\177%e%p1%c%;, - pctrm@, - rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr@, - 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=\177, 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, - use=vt420, - -vt510|DEC VT510, - use=vt420, -vt510pc|DEC VT510 w/PC keyboard, - use=vt420pc, -vt510pcdos|DEC VT510 w/PC for DOS Merge, - use=vt420pcdos, - -# VT520/VT525 -# -# The VT520 is a monochrome text terminal capable of managing up to -# four independent sessions in the terminal. It has multiple ANSI -# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console) -# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950, -# 925 910+, ADDS A2). This terminfo data is for the ANSI emulations only. -# -# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or -# [Alt]/[Print Screen] depending upon which keyboard and which -# terminal mode is being used. If Set-Up has been disabled or -# assigned to an unknown key, Set-Up may be entered by pressing -# [F3] as the first key after power up, regardless of keyboard type. -# (vt520: I added / based on the init string, also -- esr) -vt520|DEC VT520, - am, mir, xenl, xon, - cols#80, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/usr/share/tabset/vt300, il1=\E[L, 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, - 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\\, - rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300, - ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, - rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7, - 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, - -# (vt525: I added / based on the init string; -# removed =\E[m, =\E[m, added -- esr) -vt525|DEC VT525, - am, mir, xenl, xon, - cols#80, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/usr/share/tabset/vt300, il1=\E[L, 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, - 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\\, - rc=\E8, rev=\E[7m$<2>, rf=/usr/share/tabset/vt300, - ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, - rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7, - 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, - -#### VT100 emulations -# - -# John Hawkinson tells us that the EWAN telnet for Windows -# (the best Windows telnet as of September 1995) presents the name `dec-vt100' -# to telnetd. Michael Deutschmann informs us -# that this works best with a stock vt100 entry. -dec-vt100|EWAN telnet's vt100 emulation, - use=vt100, - -# From: Adrian Garside <94ajg2@eng.cam.ac.uk>, 19 Nov 1996 -dec-vt220|DOS tnvt200 terminal emulator, - am@, use=vt220, - -# Zstem340 is an (IMHO) excellent VT emulator for PC's. I recommend it to -# anyone who needs PC VT340 emulation. (or anything below that level, for -# that matter -- DEC's ALL-in-1 seems happy with it, as does INFOPLUS's -# RDBM systems, it includes ReGIS and SiXel support! I'm impressed... -# I can send the address if requested. -# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr) -# From: Adam Thompson Sept 10 1995 -z340|zstem vt340 terminal emulator 132col 42line, - lines#42, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, - use=vt320-w, -z340-nam|zstem vt340 terminal emulator 132col 42line (no automatic margins), - am@, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, - use=z340, - -# CRT is shareware. It implements some xterm features, including mouse. -crt|crt-vt220|CRT 2.3 emulating VT220, - bce, msgr, - ncv@, - hts=\EH, use=vt100+enq, use=vt220, use=ecma+color, - -# PuTTY 0.55 (released 3 August 2004) -# http://www.chiark.greenend.org.uk/~sgtatham/putty/ -# -# Comparing with 0.51, vttest is much better (only a few problems with the -# cursor position reports and wrapping). -# -# PuTTY 0.51 (released 14 December 2000) -# -# This emulates vt100 + vt52 (plus a few vt220 features: ech, SRM, DECTCEM, as -# well as SCO and Atari, color palettes from Linux console). Reading the code, -# it is intended to be VT102 plus selected features. By default, it sets $TERM -# to xterm, which is incorrect, since several features are misimplemented: -# -# Alt+key always sends ESC+key, so 'km' capability is removed. -# -# Control responses, wrapping and tabs are buggy, failing a couple of -# screens in vttest. -# -# xterm mouse support is not implemented (unrelease version may). -# -# Several features such as backspace/delete are optional; this entry documents -# the default behavior -TD - -putty|PuTTY terminal emulator, - am, bce, bw, ccc, hs, mir, msgr, xenl, xon, XT, - colors#8, it#8, ncv#22, pairs#64, U8#1, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;, - dl=\E[%p1%dM, dl1=\E[M, dsl=\E]0;\007, ech=\E[%p1%dX, - ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, hpa=\E[%i%p1%dG, - ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, - indn=\E[%p1%dS, - 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, - kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, - 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[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kspd=^Z, nel=^M^J, oc=\E]R, op=\E[39;49m, rc=\E8, rev=\E[7m, - ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, - rmcup=\E[2J\E[?47l, rmir=\E[4l, rmpch=\E[10m, - rmso=\E[27m, rmul=\E[24m, - rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l, - s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7, - 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, smacs=^N, smam=\E[?7h, smcup=\E[?47h, - smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E]0;, vpa=\E[%i%p1%dd, use=vt102+enq, -vt100-putty|Reset PuTTY to pure vt100, - rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p, - use=vt100, -# palette is hardcoded... -putty-256color|PuTTY 0.58 with xterm 256-colors, - initc@, use=xterm+256color, use=putty, - -# One of the keyboard selections is "VT100+". -# pterm (the X11 port) uses shifted F1-F10 as F11-F20 -putty-vt100|VT100+ keyboard layout, - 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, - -# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by -# T. Teranishi dated Mar 10, 1998. It is a free software terminal emulator -# (communication program) which supports: -# -# - Serial port connections. -# - TCP/IP (telnet) connections. -# - VT100 emulation, and selected VT200/300 emulation. -# - TEK4010 emulation. -# - File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and -# Quick-VAN). -# - Scripts using the "Tera Term Language". -# - Japanese and Russian character sets. -# -# The program does not come with terminfo or termcap entries. However, the -# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no -# vt52 or doublesize character support; blinking is done with color). Besides -# the HPA, VPA extensions it also implements CPL and CNL. -# -# All of the function keys can be remapped. This description shows the default -# mapping, as installed. Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys -# are supported. F13-F20 are obtained by shifting F3-F10. The editing keypad -# is laid out like vt220, rather than the face codes on the PC keyboard, i.e, -# kfnd Insert -# kslt Delete -# kich1 Home -# kdch1 PageUp -# kpp End -# knp PageDown -# -# ANSI colors are implemented, but cannot be combined with video attributes -# except for reverse. -# -# No fonts are supplied with the program, so the acsc string is chosen to -# correspond with the default Microsoft terminal font. -# -# Tera Term recognizes some xterm sequences, including those for setting and -# retrieving the window title, and for setting the window size (i.e., using -# "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, - km, xon@, - 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\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J, - cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG, - il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kslt=\E[4~, 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=vt100+enq, - use=klone+color, use=vt100, - -# Version 4.59 has regular vt100 line-drawing (so it is no longer necessary -# to choose a Windows OEM font). -# -# Testing with tack: -# - it does not have xenl (suppress that) -# - underline seems to work with color (modify ncv). -# Testing with vttest: -# - wrapping differs from vt100 (menu 1). -# - it recognizes xterm's X10 and normal mouse tracking, but none of the -# other flavors. -# - it recognizes the dtterm window controls for reporting size in -# characters and pixels. -# - it passes SIGWINCH. -teraterm4.59|Tera Term Pro, - bce, xenl@, - ncv#41, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - kmous=\E[M, use=teraterm2.3, - -teraterm|Tera Term, - use=teraterm4.59, - -# Tested with WinNT 4.0, the telnet application assumes the screensize is -# 25x80. This entry uses the 'Terminal' font, to get line-drawing characters. -# -# Other notes: -# a) Fails tack's cup (cursor-addressing) test, though cup works well enough -# for casual (occasional) use. Also fails several of the vttest screens, -# but that is not unusual for vt100 "emulators". -# b) Does not implement vt100 keypad -# c) Recognizes a subset of vt52 controls. -ms-vt100|MS telnet imitating dec vt100, - lines#25, - 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, - ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@, - kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, use=vt102+enq, use=vt100, - -# Tested with Windows 2000, the telnet application runs in a console window, -# also using 'Terminal' font. -# -# Other notes: -# a) This version has no function keys or numeric keypad. Unlike the older -# version, the numeric keypad is entirely ignored. -# b) The program sets $TERM to "ansi", which of course is inaccurate. -ms-vt100-color|vtnt|windows 2000 ansi (sic), - bce, - dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color, - use=ms-vt100, - -# Based on comments from Federico Bianchi: -# -# vt100+ is basically a VT102-noSGR with ANSI.SYS colors and a different -# scheme for PF keys. -# -# and PuTTY wishlist: -# -# The modifiers are represented as the codes listed above, prefixed to -# the normal sequences. If the modifier is pressed alone, its sequence -# is transmitted twice in succession. If multiple modifiers apply, -# they're transmitted in the order shift, control, alt. -# -# Shift \E^S -# Alt \E^A, -# Ctrl \E^C, -ms-vt100+|vt100+|windows XP vt100+ (sic), - kdch1=\E-, kend=\Ek, kf1=\E1, kf10=\E0, kf11=\E!, kf12=\E@, - kf13=\E\023\E1, kf14=\E\023\E2, kf15=\E\023\E3, - kf16=\E\023\E4, kf17=\E\023\E5, kf18=\E\023\E6, - kf19=\E\023\E7, kf2=\E2, kf20=\E\023\E8, kf21=\E\023\E9, - kf22=\E\023\E0, kf23=\E\023\E!, kf24=\E\023\E@, - kf25=\E\003\E1, kf26=\E\003\E2, kf27=\E\003\E3, - kf28=\E\003\E4, kf29=\E\003\E5, kf3=\E3, kf30=\E\003\E6, - kf31=\E\003\E7, kf32=\E\003\E8, kf33=\E\003\E9, - kf34=\E\003\E0, kf35=\E\003\E!, kf36=\E\003\E@, - kf37=\E\001\E1, kf38=\E\001\E2, kf39=\E\001\E3, kf4=\E4, - kf40=\E\001\E4, kf41=\E\001\E5, kf42=\E\001\E6, - kf43=\E\001\E7, kf44=\E\001\E8, kf45=\E\001\E9, - kf46=\E\001\E0, kf47=\E\001\E!, kf48=\E\001\E@, kf5=\E5, - kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, khome=\Eh, kich1=\E+, - knp=\E/, kpp=\E?, use=ms-vt100-color, - -ms-vt-utf8|vt-utf8|UTF-8 flavor of vt100+, - use=ms-vt100+, - -# expect-5.44.1.15/example/tkterm -# a minimal subset of a vt100 (compare with "news-unk). -# -# 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=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%p1%d;%p2%dH, cuu1=\E[A, ind=^J, 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, - -#### X terminal emulators -# -# You can add the following line to your .Xdefaults to change the terminal type -# set by the xterms you start up to my-xterm: -# -# *termName: my-xterm -# -# System administrators can change the default entry for xterm instances -# by adding a similar line to /usr/X11/lib/X11/app-defaults/XTerm. In either -# case, xterm will detect and reject an invalid terminal type, falling back -# to the default of xterm. -# - -# X10/6.6 11/7/86, minus alternate screen, plus (csr) -# (xterm: ":MT:" changed to ":km:"; added / based on init string; -# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E) -# as these seem not to work -- esr) -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=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, - il1=\E[L, ind=^J, 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, -# Compatible with the R5 xterm -# (from the XFree86 3.2 distribution, removed) -# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD -# corrected typos in rs2 string - TD -# added u6-u9 -TD -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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, - kdl1=\E[31~, kel=\E[8~, kend=\E[4~, 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~, kich1=\E[2~, - kil1=\E[30~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, - rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, - rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H, - sc=\E7, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=vt100+enq, -# Compatible with the R6 xterm -# (from XFree86 3.2 distribution, and added, removed) -# added khome/kend, hts based on the R6 xterm code - TD -# (khome/kend do not actually work in X11R5 or X11R6, but many people use this -# for compatibility with other emulators). -xterm-r6|xterm-old|xterm X11R6 version, - OTbs, am, km, mir, msgr, xenl, - cols#80, it#8, lines#24, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, - il1=\E[L, ind=^J, - is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kdch1=\E[3~, 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7, - sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - use=vt100+enq, -# This is the base xterm entry for the xterm supplied with XFree86 3.2 & up. -# The name has been changed and some aliases have been removed. -xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System), - OTbs, am, bce, km, mir, msgr, xenl, - cols#80, it#8, lines#24, ncv@, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - 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, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, - is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, - kbeg=\EOE, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kdch1=\177, 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~, khome=\EOH, kich1=\E[2~, - kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, meml=\El, - memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, - rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[27m, rmul=\E[24m, rs1=^O, - rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7, - 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}%=%t3%e%p1%d%;m, - 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, smcup=\E7\E[?47h, - smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq, - use=ecma+color, use=vt220+keypad, - -# 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, - -# This version was released in XFree86 3.3.3 (November 1998). -# Besides providing printer support, it exploits a new feature that allows -# xterm to use terminfo-based descriptions with the titeInhibit resource. -# -- the distribution contained incorrect khome/kend values -TD -xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System), - mc5i, - blink=\E[5m, ich1@, invis=\E[8m, - is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, rmcup=\E[?1047l\E[?1048l, - rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - smcup=\E[?1048h\E[?1047h, use=xterm-xf86-v33, - -# This version was released in XFree86 4.0. -xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System), - npc, - kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~, - kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@, - ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF, - 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~, 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~, khome=\EOH, rmcup=\E[?1049l, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, - smcup=\E[?1049h, use=xterm-xf86-v333, - -# This version was released in XFree86 4.3. -xterm-xf86-v43|xterm terminal emulator (XFree86 4.3 Window System), - 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, - kbeg@, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - use=xterm-xf86-v40, - -# This version was released in XFree86 4.4. -xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System), - cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, indn=\E[%p1%dS, - rin=\E[%p1%dT, use=xterm-xf86-v43, - -xterm-xfree86|xterm terminal emulator (XFree86), - use=xterm-xf86-v44, - -# This version reflects the current xterm features. -xterm-new|modern xterm terminal emulator, - npc, - indn=\E[%p1%dS, kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, - kIC=\E[2;2~, kNXT=\E[6;2~, kPRV=\E[5;2~, kb2=\EOE, - kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kend=\EOF, kent=\EOM, khome=\EOH, kich1=\E[2~, kmous=\E[M, - knp=\E[6~, kpp=\E[5~, rin=\E[%p1%dT, use=xterm+pcfkeys, - use=xterm-basic, -# -# This fragment describes as much of XFree86 xterm's "pc-style" function -# keys as will fit into terminfo's 60 function keys. -# From ctlseqs.ms: -# Code Modifiers -# --------------------------------- -# 2 Shift -# 3 Alt -# 4 Shift + Alt -# 5 Control -# 6 Shift + Control -# 7 Alt + Control -# 8 Shift + Alt + Control -# --------------------------------- -# The meta key may also be used as a modifier in this scheme, adding another -# bit to the parameter. -xterm+pcfkeys|fragment for PC-style fkeys, - use=xterm+app, use=xterm+pcf2, use=xterm+pcc2, - use=xterm+pce2, -# -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+app|fragment with cursor keys in application mode, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF, - khome=\EOH, -# -# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27) -# and revised in patch #167 (2002/8/24). Some other terminal emulators copied -# the earlier scheme, as noted in the "use=" clauses in this file. -# -# The original assignments from patch #94 for cursor-keys had some technical -# issues: -# -# A parameter for a function-key to represent a modifier is just more -# bits. But for a cursor-key it may change the behavior of the -# application. For instance, emacs decodes the first parameter of a -# cursor-key as a repeat count. -# -# A parameterized string should (really) not begin with SS3 (\EO). -# Rather, CSI (\E[) should be used. -# -# For these reasons, the original assignments were deprecated. For -# compatibility reasons, they are still available as a setting of xterm's -# modifyCursorKeys resource. These fragments list the modified cursor-keys -# that might apply to xterm+pcfkeys with different values of that resource. -xterm+pcc3|fragment with modifyCursorKeys:3, - kLFT=\E[>1;2D, kRIT=\E[>1;2C, kind=\E[>1;2B, - kri=\E[>1;2A, kDN=\E[>1;2B, kDN3=\E[>1;3B, kDN4=\E[>1;4B, - kDN5=\E[>1;5B, kDN6=\E[>1;6B, kDN7=\E[>1;7B, - 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, kUP3=\E[>1;3A, - kUP4=\E[>1;4A, kUP5=\E[>1;5A, kUP6=\E[>1;6A, - kUP7=\E[>1;7A, - -xterm+pcc2|fragment with modifyCursorKeys:2, - kLFT=\E[1;2D, kRIT=\E[1;2C, kind=\E[1;2B, kri=\E[1;2A, - kDN=\E[1;2B, kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B, - kDN6=\E[1;6B, kDN7=\E[1;7B, 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, kUP3=\E[1;3A, - kUP4=\E[1;4A, kUP5=\E[1;5A, kUP6=\E[1;6A, kUP7=\E[1;7A, - -xterm+pcc1|fragment with modifyCursorKeys:1, - kLFT=\E[2D, kRIT=\E[2C, kind=\E[2B, kri=\E[2A, kDN=\E[2B, - kDN3=\E[3B, kDN4=\E[4B, kDN5=\E[5B, kDN6=\E[6B, kDN7=\E[7B, - kLFT3=\E[3D, kLFT4=\E[4D, kLFT5=\E[5D, kLFT6=\E[6D, - kLFT7=\E[7D, kRIT3=\E[3C, kRIT4=\E[4C, kRIT5=\E[5C, - kRIT6=\E[6C, kRIT7=\E[7C, kUP=\E[2A, kUP3=\E[3A, - kUP4=\E[4A, kUP5=\E[5A, kUP6=\E[6A, kUP7=\E[7A, - -xterm+pcc0|fragment with modifyCursorKeys:0, - kLFT=\EO2D, kRIT=\EO2C, kind=\EO2B, kri=\EO2A, kDN=\EO2B, - kDN3=\EO3B, kDN4=\EO4B, kDN5=\EO5B, kDN6=\EO6B, kDN7=\EO7B, - kLFT3=\EO3D, kLFT4=\EO4D, kLFT5=\EO5D, kLFT6=\EO6D, - kLFT7=\EO7D, kRIT3=\EO3C, kRIT4=\EO4C, kRIT5=\EO5C, - kRIT6=\EO6C, kRIT7=\EO7C, kUP=\EO2A, kUP3=\EO3A, - kUP4=\EO4A, kUP5=\EO5A, kUP6=\EO6A, kUP7=\EO7A, - -# -# Here are corresponding fragments from xterm patch #216: -# -xterm+pcf0|fragment with modifyFunctionKeys:0, - kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S, - 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=\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, - kf5=\E[15~, 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~, kf6=\E[17~, kf60=\E[24;3~, kf61=\EO4P, - kf62=\EO4Q, kf63=\EO4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, -# -xterm+pcf2|fragment with modifyFunctionKeys:2, - kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - 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~, 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, kf5=\E[15~, 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~, kf6=\E[17~, kf60=\E[24;3~, - kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, -# -# Chunks from xterm #230: -xterm+pce2|fragment with modifyCursorKeys:2, - kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, - kNXT=\E[6;2~, kPRV=\E[5;2~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kDC3=\E[3;3~, kDC4=\E[3;4~, kDC5=\E[3;5~, - kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F, kEND4=\E[1;4F, - kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F, - kHOM3=\E[1;3H, kHOM4=\E[1;4H, kHOM5=\E[1;5H, - kHOM6=\E[1;6H, kHOM7=\E[1;7H, kIC3=\E[2;3~, kIC4=\E[2;4~, - kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kNXT3=\E[6;3~, - kNXT4=\E[6;4~, kNXT5=\E[6;5~, kNXT6=\E[6;6~, - kNXT7=\E[6;7~, kPRV3=\E[5;3~, kPRV4=\E[5;4~, - kPRV5=\E[5;5~, kPRV6=\E[5;6~, kPRV7=\E[5;7~, - use=xterm+edit, - -xterm+edit|fragment for 6-key editing-keypad, - kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - use=xterm+pc+edit, - -xterm+pc+edit|fragment for pc-style editing keypad, - kend=\E[4~, khome=\E[1~, - -xterm+vt+edit|fragment for vt220-style editing keypad, - kfnd=\E[1~, kslt=\E[4~, - -# -# Those chunks use the new-style (the xterm oldFunctionKeys resource is false). -# Alternatively, the same scheme with old-style function keys as in xterm-r6 -# is shown here (because that is used in mrxvt and mlterm): -xterm+r6f2|xterm with oldFunctionKeys and modifyFunctionKeys:2, - kf1=\E[11~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~, - kf16=\E[14;2~, kf2=\E[12~, kf25=\E[11;5~, kf26=\E[12;5~, - kf27=\E[13;5~, kf28=\E[14;5~, kf3=\E[13~, kf37=\E[11;6~, - kf38=\E[12;6~, kf39=\E[13;6~, kf4=\E[14~, kf40=\E[14;6~, - kf49=\E[11;3~, kf50=\E[12;3~, kf51=\E[13;3~, - kf52=\E[14;3~, kf61=\E[11;4~, kf62=\E[12;4~, - kf63=\E[13;4~, use=xterm+pcf2, -# -# This chunk is used for building the VT220/Sun/PC keyboard variants. -xterm-basic|modern xterm terminal emulator - common, - OTbs, am, bce, km, mc5i, mir, msgr, xenl, AX, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, 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, - ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, - ind=^J, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^H, - kmous=\E[M, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El, - memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l, - rmkx=\E[?1l\E>, rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m, - rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7, - 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}%=%t3%e%p1%d%;m, - 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, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h, - smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq, - -# From: David J. MacKenzie , 14 Nov 1997 -# In retrospect, something like xterm-r6 was intended here -TD -xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1, - rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33, - -# 16-colors is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey) -# If configured to support 88- or 256-colors (which is fairly common in 2009), -# xterm also recognizes the control sequences for initc -TD -xterm-16color|xterm with 16 colors like aixterm, - ccc, - initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, - use=ibm+16color, use=xterm-new, - -# 256-colors is a compile-time feature of XFree86 xterm beginning with -# patch #111 (1999/7/10) -TD -xterm+256color|xterm 256-color feature, - ccc, - colors#256, pairs#32767, - initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, - 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, - setb@, setf@, - -# 88-colors is a compile-time feature of XFree86 xterm beginning with -# patch #115 (1999/9/18) -TD -# -# Note that the escape sequences used are the same as for 256-colors - xterm -# has a different table of default color resource values. If built for -# 256-colors, it can still handle an 88-color palette by using the initc -# capability. -# -# At this time (2007/7/14), except for rxvt 2.7.x, none of the other terminals -# which support the xterm+256color feature support the associated initc -# capability. So it is cancelled in the entries which use this and/or the -# xterm+256color block. -# -# The default color palette for the 256- and 88-colors are different. A -# given executable will have one palette (perhaps compiled-in). If the program -# supports xterm's control sequence, it can be programmed using initc. -xterm+88color|xterm 88-color feature, - colors#88, pairs#7744, use=xterm+256color, - -# These variants of XFree86 3.9.16 xterm are built as a configure option. -xterm-256color|xterm with 256 colors, - use=xterm+256color, use=xterm-new, -xterm-88color|xterm with 88 colors, - use=xterm+88color, use=xterm-256color, - -# These two are used to demonstrate the any-event mouse support, i.e., by -# using an extended name "XM" which tells ncurses to put the terminal into -# a special mode when initializing the xterm mouse. -xterm-1002|testing xterm-mouse, - XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-new, -xterm-1003|testing xterm-mouse, - XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-new, - -# This is another variant, for XFree86 4.0 xterm (T.Dickey) -# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color. -# To use it, your decTerminalID resource must be set to 200 or above. -# -# HTS \E H \210 -# RI \E M \215 -# SS3 \E O \217 -# CSI \E [ \233 -# -xterm-8bit|xterm terminal emulator 8-bit controls (X Window System), - OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, AX, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z, - civis=\233?25l, clear=\233H\2332J, - cnorm=\233?25l\233?25h, cr=^M, csr=\233%i%p1%d;%p2%dr, - cub=\233%p1%dD, cub1=^H, cud=\233%p1%dB, cud1=^J, - cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, - cuu=\233%p1%dA, cuu1=\233A, cvvis=\233?12;25h, - dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, - ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, - flash=\233?5h$<100/>\233?5l, home=\233H, - hpa=\233%i%p1%dG, ht=^I, hts=\210, ich=\233%p1%d@, - il=\233%p1%dL, il1=\233L, ind=^J, invis=\2338m, - is2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8, - ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kbs=^H, - kc1=\217q, kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B, - kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~, - kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~, - kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, - kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, - kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~, - kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~, - kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M, - knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i, - meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m, - ri=\215, rmacs=\E(B, rmam=\233?7l, rmcup=\233?1049l, - rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, - rs1=\Ec, - rs2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8, - sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm, - setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, - setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, - sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;, - sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, - smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=, - smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR, - u7=\E[6n, u8=\233[?1;2c, u9=\E[c, vpa=\233%i%p1%dd, - -xterm-hp|xterm with hpterm function keys, - kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kdch1=\EP, kend=\EF, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, - kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, kich1=\EQ, - knp=\ES, kpp=\ET, use=xterm-basic, - -xterm-sco|xterm with SCO function keys, - kbeg=\E[E, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, 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, khome=\E[H, - kich1=\E[L, kmous=\E[>M, knp=\E[G, kpp=\E[I, - use=xterm-basic, - -# The xterm-new description has all of the features, but is not completely -# compatible with vt220. If you are using a Sun or PC keyboard, set the -# sunKeyboard resource to true: -# + maps the editing keypad -# + interprets control-function-key as a second array of keys, so a -# 12-fkey keyboard can support vt220's 20-fkeys. -# + maps numeric keypad "+" to ",". -# + uses DEC-style control sequences for the application keypad. -# -xterm-vt220|xterm emulating vt220, - kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - use=xterm+app, use=xterm+edit, use=xterm-basic, - use=vt220+keypad, - -xterm-vt52|xterm emulating dec vt52, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK, - home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF, - -xterm-noapp|xterm with cursor keys in normal mode, - rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp, - use=xterm, - -xterm-24|vs100|xterms|xterm terminal emulator (X Window System), - lines#24, use=xterm-old, - -# This is xterm for ncurses. -xterm|xterm terminal emulator (X Window System), - use=xterm-new, - -# This entry assumes that xterm's handling of VT100 SI/SO is disabled by -# setting the vt100Graphics resource to false. -xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode, - U8#1, use=xterm, - -# These entries allow access to the X titlebar and icon name as a status line. -# Note that twm (and possibly window managers descended from it such as tvtwm, -# ctwm, and vtwm) track windows by icon-name; thus, you don't want to mess -# with it. -xterm+sl|access X title line and icon name, - hs, - wsl#40, - dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm, -xterm+sl-twm|access X title line (pacify twm-descended window managers), - hs, - wsl#40, - dsl=\E]2;\007, fsl=^G, tsl=\E]2;, use=xterm, - -# -# The following xterm variants don't depend on your base version -# -# xterm with bold instead of underline -xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold, - smso=\E[7m, smul=\E[1m, use=xterm-old, -# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr) -# (kterm should not invoke DEC Graphics as the alternate character set -# -- Kenji Rikitake) -# (proper setting of enacs, smacs, rmacs makes kterm to use DEC Graphics -# -- MATSUMOTO Shoji) -# kterm implements acsc via built-in table of X Drawable's -kterm|kterm kanji terminal emulator (X window system), - eslok, hs, XT, - ncv@, - acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~, - csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F, - kmous=\E[M, rc=\E8, rmacs=\E(B, rmam=\E[?7l, sc=\E7, - 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, - tsl=\E[?E\E[?%i%p1%dT, use=xterm-r6, use=ecma+color, -kterm-color|kterm-co|kterm with ANSI colors, - ncv@, use=kterm, use=ecma+color, -# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file -xterm-nic|xterm with ich/ich1 suppressed for non-curses programs, - ich@, ich1@, use=xterm, -# From: Mark Sheppard , 4 May 1996 -xterm1|xterm terminal emulator ignoring the alternate screen buffer, - rmcup@, smcup@, use=xterm, - -# This describes the capabilities of color_xterm, an xterm variant from -# before ECMA-64 color support was folded into the main-line xterm release. -# This entry is straight from color_xterm's maintainer. -# From: Jacob Mandelson , 09 Nov 1996 -# The README's with the distribution also say that it supports SGR 21, 24, 25 -# and 27, but they are not present in the terminfo or termcap. -color_xterm|cx|cx100|color_xterm color terminal emulator for X, - OTbs, am, km, mir, msgr, xenl, XT, - cols#80, it#8, lines#65, ncv@, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, - is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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~, khome=\E[7~, kich1=\E[2~, - kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, - rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<, - sc=\E7, - 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=ecma+color, use=vt220+keypad, - -# The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of -# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support -# SGR 39 or 49. SGR 0 does reset colors (along with everything else). This -# description is "compatible" with color_xterm, rxvt and XFree86 xterm, except -# that each of those implements the home, end, delete keys differently. -# -# Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce -# colors; note that this is not compatible with the 5.2 version. -# csw (2002-05-15): make xterm-color primary instead of nxterm, to -# match XFree86's xterm.terminfo usage and prevent circular links -xterm-color|nxterm|generic color xterm, - ncv@, - op=\E[m, use=xterm-r6, use=klone+color, - -# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0 -gnome-rh62|Gnome terminal, - bce, - kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - use=xterm-color, - -# GNOME Terminal 1.4.0.4 (Redhat 7.2) -# -# This implements a subset of vt102 with a random selection of features from -# other terminals such as color and function-keys. -# -# shift-f1 to shift-f10 are f11 to f20 -# -# NumLock changes the application keypad to approximate vt100 keypad, except -# that there is no escape sequence matching comma (,). -# -# Other defects observed: -# vt100 LNM mode is not implemented. -# vt100 80/132 column mode is not implemented. -# vt100 DECALN is not implemented. -# vt100 DECSCNM mode is not implemented, so flash does not work. -# vt100 TBC (tab reset) is not implemented. -# xterm alternate screen controls do not restore cursor position properly -# it hangs in tack after running function-keys test. -gnome-rh72|GNOME Terminal, - bce, km@, - civis=\E[?25l, cnorm=\E[?25h, kdch1=\E[3~, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, 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=xterm-color, - -# GNOME Terminal 2.0.1 (Redhat 8.0) -# -# Documentation now claims it implements vt220 (which is demonstrably false). -# However, it does implement ECH, which is a vt220 feature. And there are -# workable vt100 LNM, DECALN, DECSNM modes, making it possible to display -# more of its bugs using vttest. -# -# However, note that bce and msgr are broken in this release. Tabs (tbc and -# hts) are broken as well. Sometimes flash (as in xterm-new) works. -# -# kf1 and kf10 are not tested since they're assigned (hardcoded?) to menu -# operations. Shift-tab generates a distinct sequence so it can be argued -# that it implements kcbt. -gnome-rh80|GNOME Terminal, - bce@, msgr@, - ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=\177, - kcbt=\E^I, op=\E[39;49m, use=gnome-rh72, - -# GNOME Terminal 2.2.1 (Redhat 9.0) -# -# bce and msgr are repaired. -gnome-rh90|GNOME Terminal, - bce, msgr, - hpa=\E[%i%p1%dG, kDC=\E[3;2~, kLFT=\EO2D, kRIT=\EO2C, - kb2=\E[E, kcbt=\E[Z, kend=\EOF, khome=\EOH, tbc=\E[3g, - vpa=\E[%i%p1%dd, 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. -gnome-fc5|GNOME Terminal, - rs1=\Ec, - rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h, - use=ansi+enq, use=xterm+pcc0, use=gnome-rh90, - -# GNOME Terminal 2.18.1 (2007 snapshot) -# -# For any "recent" version of gnome-terminal, it is futile to attempt to -# support modifiers on cursor- and keypad keys because the program usually -# is hardcoded to set $TERM to "xterm", and on startup, it builds a subset -# of the keys (which more/less correspond to the termcap values), and will -# interpret those according to the $TERM value, but others not in the -# terminfo according to some constantly changing set of hacker guidelines -TD -vte-2007|VTE in GNOME Terminal snapshot 2.18.1, - use=xterm+pcc2, use=gnome-fc5, -gnome-2007|GNOME Terminal snapshot 2.18.1, - use=vte-2007, - -# GNOME Terminal 2.22.3 (2008 snapshot) -# -# In vttest, it claims to be a vt220 with national replacement character-sets, -# but aside from the identifier string, implements only a small fraction of -# vt220's behavior, which will make it less usable on a VMS system (unclear -# what the intent of the developer is, since the NRC feature exposed in vttest -# by this change does not work). -vte-2008|VTE in GNOME Terminal snapshot 2.22.3, - use=vte+pcfkeys, use=vte-2007, -gnome-2008|GNOME Terminal snapshot 2.22.3, - use=vte-2008, - -# GNOME terminal may automatically use the contents of the "xterm" terminfo to -# supply key information which is not built into the program. With 2.22.3, -# this list is built into the program (which addresses the inadvertant use of -# random terminfo data, though using a set of values which does not correspond -# to any that xterm produces - still not solving the problem that GNOME -# terminal hardcodes the $TERM variable as "xterm"). -# -# terminfo modifier code keys -# kf13-kf24 shift 2 F1 to F12 -# kf25-kf36 control 5 F1 to F12 -# kf37-kf48 shift/control 6 F1 to F12 -# kf49-kf60 alt 3 F1 to F12 -# kf61-kf63 shift-alt 4 F1 to F3 -# -# The parameters with \EO (SS3) are technically an error, since SS3 should have -# no parameters. This appears to be rote copying based on xterm+pcc0. -vte+pcfkeys|VTE's variation on xterm+pcfkeys, - kf1=\EOP, kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R, - kf16=\EO1;2S, kf2=\EOQ, kf25=\EO1;5P, kf26=\EO1;5Q, - kf27=\EO1;5R, kf28=\EO1;5S, kf3=\EOR, kf37=\EO1;6P, - kf38=\EO1;6Q, kf39=\EO1;6R, kf4=\EOS, kf40=\EO1;6S, - kf49=\EO1;3P, kf50=\EO1;3Q, kf51=\EO1;3R, kf52=\EO1;3S, - kf61=\EO1;4P, kf62=\EO1;4Q, kf63=\EO1;4R, - use=xterm+pcfkeys, -gnome+pcfkeys|VTE's variation on xterm+pcfkeys, - use=vte+pcfkeys, - -vte|VTE aka GNOME Terminal, - use=vte-2008, -gnome|GNOME Terminal, - use=vte, - -# palette is hardcoded... -vte-256color|VTE with xterm 256-colors, - initc@, use=xterm+256color, use=vte, -gnome-256color|GNOME Terminal with xterm 256-colors, - use=vte-256color, - -# XFCE Terminal 0.2.5.4beta2 -# -# This is based on some of the same source code, e.g., the VTE library, as -# gnome-terminal, but has fewer features, fails more screens in vttest. -# Since most of the terminfo-related behavior is due to the VTE library, -# the terminfo is the same as gnome-terminal. -xfce|Xfce Terminal, - use=vte, - -# Multi-Gnome-Terminal 1.6.2 -# -# This does not use VTE, and does have different behavior (compare xfce and -# gnome). -mgt|Multi GNOME Terminal, - indn=\E[%p1%dS, rin=\E[%p1%dT, use=xterm-xf86-v333, - -# This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce -# or not is debatable). -kvt|KDE terminal, - bce, km@, - kdch1=\177, kend=\E[F, khome=\E[H, use=xterm-color, - -# Konsole 1.0.1 -# (formerly known as kvt) -# -# This program hardcodes $TERM to 'xterm', which is not accurate. However, to -# simplify this entry (and point out why konsole isn't xterm), we base this on -# xterm-r6. The default keyboard appears to be 'linux'. -# -# Notes: -# a) konsole implements several features from XFree86 xterm, though none of -# that is documented - except of course in its source code - apparently -# because its implementors are unaccustomed to reading documentation - as -# evidenced by the sparse and poorly edited documentation distributed with -# konsole. Some features such as the 1049 private mode are recognized but -# incorrectly implemented as a duplicate of the 47 private mode. -# b) even with the "vt100 (historical)" keyboard setting, the numeric keypad -# sends PC-style escapes rather than vt100. -# c) fails vttest menu 3 (Test of character sets) because it does not properly -# parse some control sequences. Also fails vttest Primary Device Attributes -# by sending a bogus code (in the source it says it's supposed to be a -# vt220, which is doubly incorrect because it does not implement vt220 -# control sequences except for a few special cases). Treat it as a -# mildly-broken vt102. -# -# Update for konsole 1.3.2: -# The 1049 private mode works (but see the other xterm screens in vttest). -# Primary Device Attributes now returns the code for a vt100 with advanced -# video option. Perhaps that's intended to be a "mildly-broken vt102". -# -# Updated for konsole 1.6.4: -# add konsole-solaris -# -# Updated for konsole 1.6.6: -# add control-key modifiers for function-keys, etc. -# -# vttest menu 1 shows that both konsole and gnome terminal do wrapping -# different from xterm (and vt100's). They have the same behavior in this -# detail, but it is unclear which copies the other. -konsole-base|KDE console window, - bce, km@, npc, XT, - ncv@, - bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h, - ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, - hpa=\E[%i%p1%dG, indn=\E[%p1%dS, kbs=\177, kdch1@, - 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@, rin=\E[%p1%dT, rmam=\E[?7l, - rmso=\E[27m, rmul=\E[24m, - 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%;m%?%p9%t\016%e\017%;, - sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd, - use=ecma+color, use=xterm-r6, -konsole-linux|KDE console window with linux keyboard, - kdch1=\E[3~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, - kf2=\E[[B, kf20@, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - use=konsole-base, -konsole-solaris|KDE console window with Solaris keyboard, - kbs=^H, kend=\E[4~, khome=\E[1~, use=konsole-vt100, -# KDE's "XFree86 3.x.x" keyboard is based on reading the xterm terminfo rather -# than testing the code. -konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm, - kend=\E[4~, khome=\E[1~, use=konsole-vt100, -# The value for kbs reflects local customization rather than the settings used -# for XFree86 xterm. -konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm, - kend=\EOF, khome=\EOH, use=konsole+pcfkeys, - use=konsole-vt100, -# Konsole does not implement shifted cursor-keys. -konsole+pcfkeys|konsole subset of xterm+pcfkeys, - kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2, - use=xterm+pcf0, -# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but -# it is still useful for deriving the other entries. -konsole-vt100|KDE console window with vt100 (sic) keyboard, - kbs=\177, kdch1=\E[3~, 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, -konsole-vt420pc|KDE console window with vt420 pc keyboard, - kbs=^H, kdch1=\177, use=konsole-vt100, -konsole-16color|klone of xterm-16color, - ncv#32, use=ibm+16color, use=konsole, -# make a default entry for konsole -konsole|KDE console window, - use=konsole-xf4x, - -# palette is hardcoded... -konsole-256color|KDE console window with xterm 256-colors, - initc@, use=xterm+256color, use=konsole, - -# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD -# -# It is nominally a vt102 emulator, with features borrowed from rxvt and -# xterm. -# -# The function keys are numbered based on shift/control/alt modifiers, except -# that the control-modifier itself is used to spawn a new copy of mlterm (the -# "-P" option). So control/F1 to control/F12 may not be usable, depending on -# how it is configured. -# -# kf1 to kf12 \E[11~ to \E[24~ -# shift kf1 to kf12 \E[11;2~ to \E[24;2~ -# alt kf1 to kf12 \E[11;3~ to \E[24;3~ -# shift/alt kf1 to kf12 \E[11;4~ to \E[24;4~ -# control kf1 to kf12 \E[11;5~ to \E[24;5~ (maybe) -# control/shift kf1 to kf12 \E[11;6~ to \E[24;6~ -# control/alt kf1 to kf12 \E[11;7~ to \E[24;7~ -# control/shift/alt kf1 to kf12 \E[11;8~ to \E[24;8~ -# -mlterm|multi lingual terminal emulator, - am, eslok, km, mc5i, mir, msgr, npc, xenl, XT, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, - is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, - kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kent=\EOM, kfnd=\E[1~, - khome=\EOH, kich1=\E[2~, kind=\EO1;2B, kmous=\E[M, - knp=\E[6~, kpp=\E[5~, kri=\EO1;2A, kslt=\E[4~, mc0=\E[i, - nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, - rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l, - sc=\E7, 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, smcup=\E[?1049h, - smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, - vpa=\E[%i%p1%dd, use=mlterm+pcfkeys, 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 -# (when available), it could use the extended names introduced for xterm. -mlterm+pcfkeys|fragment for PC-style fkeys, - kLFT=\EO1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\EO1;2C, - kDN=\EO1;2B, kDN3=\EO1;3B, kDN4=\EO1;4B, kDN5=\EO1;5B, - kDN6=\EO1;6B, kDN7=\EO1;7B, kIC5=\E[2;5~, kIC6=\E[2;6~, - kLFT3=\EO1;3D, kLFT4=\EO1;4D, kLFT5=\EO1;5D, - kLFT6=\EO1;6D, kLFT7=\EO1;7D, kNXT5=\E[6;5~, - kNXT6=\E[6;6~, kPRV5=\E[5;5~, kPRV6=\E[5;6~, - kRIT3=\EO1;3C, kRIT4=\EO1;4C, kRIT5=\EO1;5C, - kRIT6=\EO1;6C, kRIT7=\EO1;7C, kUP=\EO1;2A, kUP3=\EO1;3A, - kUP4=\EO1;4A, kUP5=\EO1;5A, kUP6=\EO1;6A, kUP7=\EO1;7A, - -mlterm-256color|mlterm 3.0 with xterm 256-colors, - use=xterm+256color, use=rxvt, - -# From: Thomas Dickey 04 Oct 1997 -# Updated: Oezguer Kesim 02 Nov 1997 -# Notes: -# rxvt 2.21b uses -# smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O, -# but some applications don't work with that. -# It also has an AIX extension -# box2=lqkxjmwuvtn, -# and -# ech=\E[%p1%dX, -# but the latter does not work correctly. -# -# The distributed terminfo says it implements hpa and vpa, but they are not -# implemented correctly, using relative rather than absolute positioning. -# -# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM. -# Since rxvt is not really compatible with xterm, it should be configured as -# "rxvt" or "rxvt-color". -# -# removed dch/dch1 because they are inconsistent with bce/ech -TD -# remove km as per tack test -TD -rxvt-basic|rxvt terminal base (X Window System), - OTbs, am, bce, eo, mir, msgr, xenl, xon, XT, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H, ht=^I, - hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, - ind=^J, 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=^H, - kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, 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, - s0ds=\E(B, s1ds=\E(0, sc=\E7, - 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, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, - smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt100+enq, - use=rxvt+pcfkeys, use=vt220+keypad, -# Key Codes from rxvt reference: -# -# Note: Shift + F1-F10 generates F11-F20 -# -# For the keypad, use Shift to temporarily override Application-Keypad -# setting use Num_Lock to toggle Application-Keypad setting if Num_Lock -# is off, escape sequences toggle Application-Keypad setting. -# Also note that values of Home, End, Delete may have been compiled -# differently on your system. -# -# Normal Shift Control Ctrl+Shift -# Tab ^I ESC [ Z ^I ESC [ Z -# BackSpace ^H ^? ^? ^? -# Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @ -# Insert ESC [ 2 ~ paste ESC [ 2 ^ ESC [ 2 @ -# Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ -# Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @ -# Prior ESC [ 5 ~ scroll-up ESC [ 5 ^ ESC [ 5 @ -# Next ESC [ 6 ~ scroll-down ESC [ 6 ^ ESC [ 6 @ -# Home ESC [ 7 ~ ESC [ 7 $ ESC [ 7 ^ ESC [ 7 @ -# End ESC [ 8 ~ ESC [ 8 $ ESC [ 8 ^ ESC [ 8 @ -# Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ -# F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^ -# F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^ -# F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^ -# F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^ -# F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^ -# F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^ -# F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^ -# F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^ -# F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^ -# F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^ -# F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @ -# F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @ -# F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @ -# F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @ -# F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @ -# F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @ -# F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @ -# F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @ -# F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @ -# F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @ -# -# Application -# Up ESC [ A ESC [ a ESC O a ESC O A -# Down ESC [ B ESC [ b ESC O b ESC O B -# Right ESC [ C ESC [ c ESC O c ESC O C -# Left ESC [ D ESC [ d ESC O d ESC O D -# KP_Enter ^M ESC O M -# KP_F1 ESC O P ESC O P -# KP_F2 ESC O Q ESC O Q -# KP_F3 ESC O R ESC O R -# KP_F4 ESC O S ESC O S -# XK_KP_Multiply * ESC O j -# XK_KP_Add + ESC O k -# XK_KP_Separator , ESC O l -# XK_KP_Subtract - ESC O m -# XK_KP_Decimal . ESC O n -# XK_KP_Divide / ESC O o -# XK_KP_0 0 ESC O p -# XK_KP_1 1 ESC O q -# XK_KP_2 2 ESC O r -# XK_KP_3 3 ESC O s -# XK_KP_4 4 ESC O t -# XK_KP_5 5 ESC O u -# XK_KP_6 6 ESC O v -# XK_KP_7 7 ESC O w -# XK_KP_8 8 ESC O x -# XK_KP_9 9 ESC O y -# -# The source-code for rxvt actually defines mappings for F21-F35, using -# "ESC [ 35 ~" to "ESC [ 49 ~". Keyboards with more than 12 function keys -# are rare, so this entry uses the shift- and control-modifiers as in -# xterm+pcfkeys to define keys past F12. -# -# kIC is normally not used, since rxvt performs a paste for that (shifted -# insert), unless private mode 35 is set. -# -# kDN, kDN5, kDN6, etc are extensions based on the names from xterm+pcfkeys -TD -# Removed kDN6, etc (control+shift) since rxvt does not implement this -TD -rxvt+pcfkeys|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, kdch1=\E[3~, kel=\E[8\^, - kend=\E[8~, 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$, - kf23=\E[11\^, kf24=\E[12\^, kf25=\E[13\^, kf26=\E[14\^, - kf27=\E[15\^, kf28=\E[17\^, kf29=\E[18\^, kf3=\E[13~, - kf30=\E[19\^, kf31=\E[20\^, kf32=\E[21\^, kf33=\E[23\^, - kf34=\E[24\^, kf35=\E[25\^, kf36=\E[26\^, kf37=\E[28\^, - kf38=\E[29\^, kf39=\E[31\^, kf4=\E[14~, kf40=\E[32\^, - kf41=\E[33\^, kf42=\E[34\^, kf43=\E[23@, kf44=\E[24@, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - kfnd=\E[1~, khome=\E[7~, kich1=\E[2~, kind=\E[a, knp=\E[6~, - kpp=\E[5~, kri=\E[b, kslt=\E[4~, kDC5=\E[3\^, kDC6=\E[3@, - kDN=\E[b, kDN5=\EOb, kEND5=\E[8\^, kEND6=\E[8@, - 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, - -rxvt|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, -rxvt-color|rxvt terminal emulator (X Window System), - use=rxvt, -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, - use=xterm+88color, use=rxvt, -rxvt-xpm|rxvt terminal emulator (X Window System), - use=rxvt, -rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin, - acsc=+\257\,\256-\^0\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, - use=rxvt, -rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin, - acsc=+\257\,\256-\^0\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~\376, - use=rxvt-cygwin, - -# This variant is supposed to work with rxvt 2.7.7 when compiled with -# NO_BRIGHTCOLOR defined. rxvt needs more work... -rxvt-16color|xterm with 16 colors like aixterm, - ncv#32, use=ibm+16color, use=rxvt, - -# mrxvt 0.5.4 -# -# mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which -# makes its function-keys different from other flavors of rxvt -TD -mrxvt|multitabbed rxvt, - XT, - kEND=\E[8;2~, kHOM=\E[7;2~, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kend=\E[8~, khome=\E[7~, - kEND3=\E[8;3~, kEND4=\E[8;4~, kEND5=\E[8;5~, - kEND6=\E[8;6~, kEND7=\E[8;7~, kHOM3=\E[7;3~, - kHOM4=\E[7;4~, kHOM5=\E[7;5~, kHOM6=\E[7;6~, - kHOM7=\E[7;7~, use=xterm+r6f2, use=xterm+pcfkeys, - use=rxvt, - -mrxvt-256color|multitabbed rxvt with 256 colors, - use=xterm+256color, use=mrxvt, - -# From: Michael Jennings -# -# Eterm 0.9.3 -# -# removed kf0 which conflicts with kf10 -TD -# remove cvvis which conflicts with cnorm -TD -# Eterm does not implement control/shift cursor keys such as kDN6, or kPRV/kNXT -# but does otherwise follow the rxvt+pcfkeys model -TD -# remove nonworking flash -TD -# remove km as per tack test -TD -Eterm|Eterm-color|Eterm with xterm-style color support (X Window System), - am, bce, bw, eo, mc5i, mir, msgr, xenl, xon, XT, - btns#5, cols#80, it#8, lines#24, lm#0, ncv@, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - 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, kbs=^H, - kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, - mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, 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, - sc=\E7, - 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, smcup=\E7\E[?47h, - smir=\E[4h, smkx=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%i%p1%dd, use=vt100+enq, use=rxvt+pcfkeys, - use=ecma+color, - -Eterm-256color|Eterm with xterm 256-colors, - use=xterm+256color, use=Eterm, - -Eterm-88color|Eterm with 88 colors, - use=xterm+88color, use=Eterm, - -# Based on rxvt 2.4.8, it has a few differences in key bindings -aterm|AfterStep terminal, - XT, - kbs=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt, - -# xiterm 0.5-5.2 -# This is not based on xterm's source... -# vttest shows several problems with keyboard, cursor-movements. -# see also http://invisible-island.net/xterm/xterm.faq.html#bug_xiterm -xiterm|internationalized terminal emulator for X, - km@, - kbs=\177, kdch1=\E[3~, use=klone+color, use=xterm-r6, - -# These (xtermc and xtermm) are distributed with Solaris. They refer to a -# variant of xterm which is apparently no longer supported, but are interesting -# because they illustrate SVr4 curses mouse controls - T.Dickey -xtermm|xterm terminal emulator (monocrome), - OTbs, am, km, mir, msgr, xenl, - btns#3, cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy, - kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU, - kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_, - knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM, - rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m, - rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - 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, smcup=\E@0\E[?4s\E[?4h\E@1, - smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys, - -xtermc|xterm terminal emulator (color), - colors#8, ncv#7, pairs#64, - op=\E[100m, 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}%=%t3%e%p1%d%;m, - use=xtermm, - -# From: David J. MacKenzie 20 Apr 1995 -# Here's a termcap entry I've been using for xterm_color, which comes -# with BSD/OS 2.0, and the X11R6 contrib tape too I think. Besides the -# color stuff, I also have a status line defined as the window manager -# title bar. [I have translated it to terminfo -- ESR] -xterm-pcolor|xterm with color used for highlights and status line, - bold=\E[1m\E[43m, rev=\E[7m\E[34m, smso=\E[7m\E[31m, - smul=\E[4m\E[42m, use=xterm+sl, use=xterm-r6, - -# HP ships this (HPUX 9 and 10), except for the pb#9600 which was merged in -# from BSD termcap. (hpterm: added empty , we have no idea what ACS -# chars look like --esr) -hpterm|X-hpterm|hp X11 terminal emulator, - am, da, db, mir, xhp, - cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, pb#9600, xmc#0, - acsc=, bel=^G, bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, - cub1=^H, cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, - cuu1=\EA, dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK, - hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=^J, kbs=^H, - kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep, - kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, - khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF, - knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, meml=\El, - memu=\Em, pfkey=\E&f%p1%dk%p2%l%dL%p2%s, - pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, - pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, - pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET, - rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, - rmul=\E&d@, - sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, - sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB, - smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, -# HPUX 11 provides a color version. -hpterm-color|HP X11 terminal emulator with color, - ccc, - colors#64, pairs#8, - home=\E&a0y0C, - initp=\E&v%p2%da%p3%db%p4%dc%p5%dx%p6%dy%p7%dz%p1%dI, - op=\E&v0S, scp=\E&v%p1%dS, use=hpterm, - -# This entry describes an xterm with Sun-style function keys enabled -# via the X resource setting "xterm*sunFunctionKeys:true" -# To understand / note that L1,L2 and F11,F12 are the same. -# The ... keys are L3-L10. We don't set -# because we want it to be seen as . -# The ... keys are R1-R15. We treat some of these in accordance -# with their Sun keyboard labels instead. -# From: Simon J. Gerraty 10 Jan 1996 -xterm-sun|xterm with sunFunctionKeys true, - kb2=\E[218z, kcpy=\E[197z, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3z, kend=\E[220z, - kent=\EOM, kf1=\E[224z, kf10=\E[233z, kf11=\E[192z, - kf12=\E[193z, kf13=\E[194z, kf14=\E[195z, kf15=\E[196z, - kf17=\E[198z, kf18=\E[199z, kf19=\E[200z, kf2=\E[225z, - kf20=\E[201z, kf3=\E[226z, kf31=\E[208z, kf32=\E[209z, - kf33=\E[210z, kf34=\E[211z, kf35=\E[212z, kf36=\E[213z, - kf38=\E[215z, kf4=\E[227z, kf40=\E[217z, kf42=\E[219z, - kf44=\E[221z, kf45=\E[222z, kf46=\E[234z, kf47=\E[235z, - kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, - kf9=\E[232z, kfnd=\E[200z, khlp=\E[196z, khome=\E[214z, - kich1=\E[2z, knp=\E[222z, kpp=\E[216z, kund=\E[195z, - use=xterm-basic, -xterms-sun|small (80x24) xterm with sunFunctionKeys true, - cols#80, lines#24, use=xterm-sun, - -# This is for the extensible terminal emulator on the X11R6 contrib tape. -# It corresponds to emu's internal emulation: -# emu -term emu -# emu's default sets TERM to "xterm", but that doesn't work well -TD -# fixes: remove bogus rmacs/smacs, change oc to op, add bce, am -TD -# fixes: add civis, cnorm, sgr -TD -emu|emu native mode, - am, bce, mir, msgr, xon, - colors#15, cols#80, it#8, lines#24, pairs#64, vt#200, - acsc=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s\224t\225u\226v\227w\230x\231~\244, - bel=^G, blink=\EW, bold=\EU, civis=\EZ, clear=\EP\EE0;0;, - cnorm=\Ea, cr=^M, csr=\Ek%p1%d;%p2%d;, cub=\Eq-%p1%d;, - cub1=^H, cud=\Ep%p1%d;, cud1=\EB, cuf=\Eq%p1%d;, cuf1=\EC, - cup=\EE%p1%d;%p2%d;, cuu=\Ep-%p1%d;, cuu1=\EA, - dch=\EI%p1%d;, dch1=\EI1;, dl=\ER%p1%d;, dl1=\ER1;, - ech=\Ej%p1%d;, ed=\EN, el=\EK, el1=\EL, home=\EE0;0;, ht=^I, - hts=\Eh, il=\EQ%p1%d;, il1=\EQ1;, ind=\EG, - is2=\ES\Er0;\Es0;, kbs=^H, kcub1=\EC, kcud1=\EB, kcuf1=\ED, - kcuu1=\EA, kdch1=\177, kent=^M, kf0=\EF00, kf1=\EF01, - kf10=\EF10, kf11=\EF11, kf12=\EF12, kf13=\EF13, kf14=\EF14, - kf15=\EF15, kf16=\EF16, kf17=\EF17, kf18=\EF18, kf19=\EF19, - kf2=\EF02, kf20=\EF20, kf3=\EF03, kf4=\EF04, kf5=\EF05, - kf6=\EF06, kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind, - kich1=\Eins, knp=\Enext, kpp=\Eprior, kslt=\Esel, - op=\Es0;\Er0;, rev=\ET, ri=\EF, rmir=\EX, rmso=\ES, rmul=\ES, - rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;, - setaf=\Er%i%p1%d;, - sgr=\ES%?%p1%t\ET%;%?%p2%t\EV%;%?%p3%t\ET%;%?%p4%t\EW%;%?%p6%t\EU%;, - sgr0=\ES, smir=\EY, smso=\ET, smul=\EV, tbc=\Ej, - -# vt220 Terminfo entry for the Emu emulation, corresponds to -# emu -term vt220 -# with NumLock set (to make the keypad transmit kf0-kf9). -# fixes: add am, xenl, corrected sgr0 -TD -emu-220|Emu-220 (vt200-7bit mode), - am, xenl, xon, - cols#80, it#8, lines#24, vt#200, - acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[0;5m, bold=\E[0;1m, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D, - cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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, 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, - kcuu1=\E[A, kdch1=\E[3~, kent=\EOM, kf0=\EOp, kf1=\EOq, - kf10=\EOl, kf11=\EOm, kf12=\EOn, kf13=\EOP, kf14=\EOQ, - kf15=\EOR, kf16=\EOS, kf2=\EOr, kf26=\E[17~, kf27=\E[18~, - kf28=\E[19~, kf29=\E[20~, kf3=\EOs, kf30=\E[21~, - kf34=\E[26~, kf37=\E[31~, kf38=\E[32~, kf39=\E[33~, - kf4=\EOt, kf40=\E[34~, kf5=\EOu, kf6=\EOv, kf7=\EOw, - kf8=\EOx, kf9=\EOy, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, kslt=\E[4~, rc=\E8, rev=\E[0;7m, - ri=\EM, rmacs=^O, rmcup=\E>, rmkx=\E>, rmso=\E[m, rmul=\E[m, - rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h, sc=\E7, - sgr=\E[0%?%p1%t;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, smacs=^N, smcup=\E[?1l\E=, smkx=\E=, - smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, -# A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI, -# print interface, ANSI X3.64 colour escape sequences, etc. Newsgroup postings -# indicate that it emulates more than one terminal, but incompletely. -# -# This is adapted from a FreeBSD bug-report by Daniel Rudy -# It is based on vt102's entry, with some subtle differences, but also -# has status line -# supports ANSI colors (except for 'op' string) -# apparently implements alternate screen like xterm -# does not use padding, of course. -mvterm|vv100|SwitchTerm aka mvTERM, - am, eslok, hs, km, mir, msgr, xenl, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[?E, ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, - fsl=\E[?F, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOy, - kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, - op=\E[100m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E[2J\E[?47l\E8, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, - rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H, - sc=\E7, 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, smacs=^N, smcup=\E7\E[?47h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys, - -### MTERM -# -# This application is available by email from . -# -# "mterm -type ansi" sets $TERM to "ansi" -mterm-ansi|ANSI emulation, - am, bw, mir, msgr, - it#8, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, - il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS, - invis=\E[8m, is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmso=\E[27m, - rmul=\E[24m, - 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, smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, - vpa=\E[%i%p1%dd, -# mterm normally sets $TERM to "mterm" -mterm|mouse-sun|Der Mouse term, - am, bw, mir, - it#8, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^N, cuf1=^S, - cup=\006%p1%d.%p2%d., cuu1=^X, dch1=^Y, dl1=^K, ed=^B, el=^C, - home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=^M^U, ri=^W, - rmir=^O, rmso=^T, smir=^Q, smso=^V, -# "mterm -type decansi" sets $TERM to "decansi" -# -# note: kdch1, kfnd, kslt are in the source code, but do not work -TD -decansi|ANSI emulation with DEC compatibility hacks, - am, mir, msgr, xenl, - colors#8, it#8, pairs#64, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL, - il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, - is2=\E)0\E[r\017, kbs=^H, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kslt=\E[4~, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, sc=\E7, - 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, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR, - u7=\E[6n, vpa=\E[%i%p1%dd, - -#### VWM -# -# vwmterm is a terminal emulator written for the VWM console window manager -# -vwmterm|(vwm term), - am, bce, ccc, mir, msgr, npc, xenl, xon, - colors#8, pairs#64, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[?25h, dim=\E[2m, ed=\E[J, el=\E[K, - home=\E[H, il1=\E[L, ind=^J, invis=\E[8m, 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~, rev=\E[7m, rmacs=\E[10m, - rmam=\E[?7l, rmcup=\E[?1049l, rs1=\E[H\E[J\E[m\Ec, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h, - smcup=\E[?1049h, smso=\E[3m, smul=\E[4m, - -#### MGR -# -# MGR is a Bell Labs window system lighter-weight than X. -# These entries describe MGR's xterm-equivalent. -# They are courtesy of Vincent Broman 14 Jan 1997 -# - -mgr|Bellcore MGR (non X) window system terminal emulation, - am, km, - bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=^M, - csr=\E%p1%d;%p2%dt, cub1=^H, cud1=\Ef, cuf1=\Er, - cup=\E%p2%d;%p1%dM, cuu1=\Eu, cvvis=\E0h, - dch=\E%p1%dE$<5>, dch1=\EE, dl=\E%p1%dd$<3*>, - dl1=\Ed$<3>, ed=\EC, el=\Ec, hd=\E1;2f, ht=^I, hu=\E1;2u, - ich=\E%p1%dA$<5>, ich1=\EA, il=\E%p1%da$<3*>, - il1=\Ea$<3>, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, nel=^M^J, rev=\E1n, rmam=\E5S, - rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n, - smul=\E4n, -mgr-sun|Mgr window with Sun keyboard, - ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z, - kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z, - kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, - kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, - kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, - kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z, - 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, - -######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS -# - -# Columbus UNIX virtual terminal. This terminal also appears in -# UNIX 4.0 and successors as line discipline 1 (?), but is -# undocumented and does not really work quite right. -cbunix|cb unix virtual terminal, - OTbs, am, da, db, - cols#80, lines#24, lm#0, - bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL, - el=\EK, ich1=\EO, il1=\EP, ind=^J, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A, - smso=\Ea^D, smul=\Ea^A, -# (vremote: removed obsolete ":nl@:" -- esr) -vremote|virtual remote terminal, - am@, - cols#79, use=cbunix, - -pty|4bsd pseudo teletype, - cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!, - smso=\Ea$, smul=\Ea!, use=cbunix, - -# The codes supported by the term.el terminal emulation in GNU Emacs 19.30 -eterm|gnu emacs term.el terminal emulation, - am, mir, xenl, - cols#80, lines#24, - bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m, - rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m, - smul=\E[4m, - -# 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, - am, mir, msgr, xenl, - colors#8, cols#80, lines#24, pairs#64, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kbs=\177, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kdch1=\E[3~, kend=\E[4~, khome=\E[1~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, op=\E[39;49m, rc=\E8, rev=\E[7m, - ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, - sc=\E7, 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, smir=\E[4h, smso=\E[7m, smul=\E[4m, - u6=\E[%i%d;%dR, u7=\E[6n, - -# Entries for use by the `screen' program by Juergen Weigert, -# Michael Schroeder, Oliver Laumann. The screen and -# screen-w entries came with version 3.7.1. The screen2 and screen3 entries -# come from University of Wisconsin and may be older. -# (screen: added on ANSI model -- esr) -# -# 'screen' defines extensions to termcap. Some are used in its terminal -# description: -# G0 (bool) Terminal can deal with ISO 2022 font selection sequences. -# AX (bool) Does understand ANSI set default fg/bg color -# (\E[39m / \E[49m). -# S0 (str) Switch charset 'G0' to the specified charset. -# E0 (str) Switch charset 'G0' back to standard charset. -# -# tested with screen 3.09.08 -screen|VT 100/ANSI X3.64 virtual terminal, - OTbs, OTpt, am, km, mir, msgr, xenl, G0, - colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, - cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcbt=\E[Z, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, - rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g, E0=\E(B, - S0=\E(%p1%c, use=ecma+color, -# The bce and status-line entries are from screen 3.9.13 (and require some -# changes to .screenrc). -screen-bce|VT 100/ANSI X3.64 virtual terminal with bce, - bce, - ech@, use=screen, -screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line, - dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen, - -# ====================================================================== -# Entries for GNU Screen with 16 colors. -# Those variations permit to benefit from 16 colors palette, and from -# bold font and blink attribute separated from bright colors. But they -# are less portable than the generic "screen" 8 color entries: Their -# usage makes real sense only if the terminals you attach and reattach -# do all support 16 color palette. - -screen-16color|GNU Screen with 16 colors, - use=ibm+16color, use=screen, - -screen-16color-s|GNU Screen with 16 colors and status line, - use=ibm+16color, use=screen-s, - -screen-16color-bce|GNU Screen with 16 colors and BCE, - use=ibm+16color, use=screen-bce, - -screen-16color-bce-s|GNU Screen with 16 colors, BCE, and status line, - bce, use=ibm+16color, use=screen-s, - -# ====================================================================== -# Entries for GNU Screen 4.02 with --enable-colors256. - -screen-256color|GNU Screen with 256 colors, - ccc@, - initc@, use=xterm+256color, use=screen, - -screen-256color-s|GNU Screen with 256 colors and status line, - ccc@, - initc@, use=xterm+256color, use=screen-s, - -screen-256color-bce|GNU Screen with 256 colors and BCE, - ccc@, - initc@, use=xterm+256color, use=screen-bce, - -screen-256color-bce-s|GNU Screen with 256 colors, BCE, and status line, - bce, ccc@, - initc@, use=xterm+256color, use=screen-s, - -# ====================================================================== - -# Read the fine manpage: -# When screen tries to figure out a terminal name for -# itself, it first looks for an entry named "screen.", -# where is the contents of your $TERM variable. If -# no such entry exists, screen tries "screen" (or "screen-w" -# 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 -# and some keys from "screen." 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@, -# -# Here are a few customized entries which are useful -TD -# -# Notes: -# (a) screen does not support invis. -# (b) screen's implementation of bw is incorrect according to tack. -# (c) screen appears to hardcode the strings for khome/kend, making it -# necessary to override the "use=" clause's values (screen+fkeys). -# (d) screen sets $TERMCAP to a termcap-formatted copy of the 'screen' entry, -# which is NOT the same as the terminfo screen.. -# (e) when screen finds one of these customized entries, it sets $TERM to -# match. Hence, no "screen.xterm" entry is provided, since that would -# create heartburn for people running remote xterm's. -# -# xterm (-xfree86 or -r6) does not normally support kIC, kNXT and kPRV -# since the default translations override the built-in keycode -# translation. They are suppressed here to show what is tested by tack. -screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm, - bce@, bw, - invis@, kIC@, kNXT@, kPRV@, meml@, memu@, - sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m, - use=screen+fkeys, use=xterm-new, -# xterm-r6 does not really support khome/kend unless it is propped up by -# the translations resource. -screen.xterm-r6|screen customized for X11R6 xterm, - bw, use=screen+fkeys, use=xterm-r6, -# Color applications running in screen and TeraTerm do not play well together -# on Solaris because Sun's curses implementation gets confused. -screen.teraterm|disable ncv in teraterm, - ncv#127, - 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, - use=screen+fkeys, use=screen, -# Other terminals -screen.rxvt|screen in rxvt, - bw, XT, - cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, use=screen+fkeys, use=vt100+enq, - use=rxvt+pcfkeys, use=vt220+keypad, use=screen, -screen.Eterm|screen in Eterm, - use=screen+fkeys, use=Eterm, -screen.mrxvt|screen in mrxvt, - use=screen+fkeys, use=mrxvt, -screen.vte|screen in any VTE-based terminal, - use=screen+fkeys, use=vte, -screen.gnome|screen in GNOME Terminal, - use=screen+fkeys, use=gnome, -screen.konsole|screen in KDE console window, - use=screen+fkeys, use=konsole, -# fix the backspace key -screen.linux|screen in linux console, - bw, - kbs=\177, kcbt@, use=screen+fkeys, use=screen, -screen.mlterm|screen in mlterm, - use=screen+fkeys, use=mlterm, - -# The default "screen" entry is reasonably portable, but not optimal for the -# most widely-used terminal emulators. The "bce" capability is supported in -# screen since 3.9.13, and when used, will require fewer characters to be sent -# to the terminal for updates. -# -# If you are using only terminals which support bce, then you can use this -# feature in your screen configuration. -# -# Adding these lines to your ".screenrc" file will allow using these customized -# entries: -# term screen-bce -# bce on -# defbce on -screen-bce.xterm-new|screen optimized for modern xterm, - bce, - ech@, use=screen.xterm-new, -screen-bce.rxvt|screen optimized for rxvt, - bce, - ech@, use=screen.rxvt, -screen-bce.Eterm|screen optimized for Eterm, - bce, - ech@, use=screen.Eterm, -screen-bce.mrxvt|screen optimized for mrxvt, - bce, - ech@, use=screen.mrxvt, -screen-bce.gnome|screen optimized for GNOME-Terminal, - bce, - ech@, use=screen.gnome, -screen-bce.konsole|screen optimized for KDE console window, - bce, - ech@, use=screen.konsole, -screen-bce.linux|screen optimized for linux console, - bce, - ech@, use=screen.linux, -screen-bce.mlterm|screen optimized for mlterm, - bce, - ech@, use=screen.mlterm, - -screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols, - cols#132, use=screen, - -screen2|old VT 100/ANSI X3.64 virtual terminal, - cols#80, it#8, lines#24, - cbt=\E[Z, clear=\E[2J\E[H, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL, - il1=\E[L, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, - kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, - nel=^M^J, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m, - rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h, - smso=\E[3m, smul=\E[4m, tbc=\E[3g, -# (screen3: removed unknown ":xv:LP:G0:" -- esr) -screen3|older VT 100/ANSI X3.64 virtual terminal, - km, mir, msgr, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, - rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs1=\Ec, - sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m, - smul=\E[4m, tbc=\E[3g, - -# Francesco Potorti : -# NCSA telnet is one of the most used telnet clients for the Macintosh. It has -# been maintained until recently by the National Center for Supercomputer -# Applications, and it is feature rich, stable and free. It can be downloaded -# from www.ncsa.edu. This terminfo description file is based on xterm-vt220, -# xterm+sl, and the docs at NCSA. It works well. -# -# NCSA Telnet 2.6 for Macintosh in vt220 8-bit emulation mode -# The terminal options should be set as follows: -# Xterm sequences ON -# use VT wrap mode ON -# use Emacs arrow keys OFF -# CTRL-COMND is Emacs meta ON -# 8 bit mode ON -# answerback string: "ncsa-vt220-8" -# setup keys: all disabled -# -# Application mode is not used. -# -# Other special mappings: -# Apple VT220 -# HELP Find -# HOME Insert here -# PAGEUP Remove -# DEL Select -# END Prev Screen -# PAGEDOWN Next Screen -# -# Though it supports ANSI color, NCSA Telnet uses color to represent blinking -# text. -# -# The status-line manipulation is a mapping of the xterm-compatible control -# sequences for setting the window-title. So you must use tsl and fsl in -# pairs, since the latter ends the string that is loaded to the window-title. -ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, - am, hs, km, mir, msgr, xenl, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, if=/usr/share/tabset/vt100, - il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>, - is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~, - kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~, - kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, - 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, - rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM, - rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, - rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7, - 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, smacs=\E(0, smam=\E[?7h, smcup=\E7, - smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E]0;, - u8=\E[?62;1;6c, use=ansi+enq, -ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, - use=ncsa-m, use=klone+color, -ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, - hs@, - dsl@, fsl@, tsl@, use=ncsa, -ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, - hs@, - dsl@, fsl@, tsl@, use=ncsa-m, -# alternate -TD: -# The documented function-key mapping refers to the Apple Extended Keyboard -# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6). We use the VT220-style -# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on -# 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, - -#### Pilot Pro Palm-Top -# -# Termcap for Top Gun Telnet and SSH on the Palm Pilot. -# http://www.ai/~iang/TGssh/ -pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional, - OTbs, am, xenl, - cols#39, lines#16, - bel=^G, clear=\Ec, cr=^M, cub1=^H, cud1=^J, - cup=\Em%p1%{32}%+%c%p2%{32}%+%c, home=\Em\s\s, ht=^I, - ind=^J, kbs=^H, kcub1=^H, kcud1=^J, knp=^L, kpp=^K, nel=\Em~\s, - rmso=\EB, smso=\Eb, - -# From: Federico Bianchi -# These entries are for the Embeddable Linux Kernel System (ELKS) -# project - an heavily stripped down Linux to be run on 16 bit -# boxes or, eventually, to be used in embedded systems - and have been -# adapted from the stock ELKS termcap. The project itself looks stalled, -# and the latest improvements I know of date back to March 2000. -# -# To cope with the ELKS dumb console I added an "elks-glasstty" entry; -# as an added bonus, this deals with all the capabilities common to -# both VT52 and ANSI (or, eventually, "special") modes. - -elks-glasstty|ELKS glass-TTY capabilities, - OTbs, am, - cols#80, it#8, lines#25, - bel=^G, cr=^M, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, - -elks-vt52|ELKS vt52 console, - clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\EK, - home=\EH, use=elks-glasstty, - -elks-ansi|ELKS ANSI console, - clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - rmso=\E[m, smso=\E[7m, 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. - -elks|default ELKS console, - use=elks-vt52, - -# Project SIBO (for Psion 3 palmtops) console is identical to the ELKS -# one but in screen size - -sibo|ELKS SIBO console, - cols#61, it#8, lines#20, use=elks-vt52, - -######## COMMERCIAL WORKSTATION CONSOLES -# - -#### Alpha consoles -# - -# This is from the OSF/1 Release 1.0 termcap file -pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation, - am, xon, - cols#80, lines#25, - bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=^J, 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, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - nel=^M^J, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m, - -#### Sun consoles -# - -# :is1: resets scrolling region in case a previous user had used "tset vt100" -oldsun|Sun Microsystems Workstation console, - OTbs, am, km, mir, msgr, - cols#80, it#8, lines#34, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - 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, -# From: Alexander Lukyanov , 14 Nov 1995 -# capability later corrected by J.T. Conklin -# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998) -sun-il|Sun Microsystems console with working insert-line, - am, km, msgr, - cols#80, lines#34, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kdch1=\177, kend=\E[220z, kf1=\E[224z, - kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, kf2=\E[225z, - kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, kf6=\E[229z, - kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, khome=\E[214z, - 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, -# On some versions of CGSIX framebuffer firmware (SparcStation 5), / -# flake out on the last line. Unfortunately, without them the terminal has no -# way to scroll. -sun-cgsix|sun-ss5|Sun SparcStation 5 console, - il@, il1@, use=sun-il, -# If you are using an SS5, change the sun definition to use sun-ss5. -sun|sun1|sun2|Sun Microsystems Inc. workstation console, - use=sun-il, - -# From: Tue Sep 24 13:14:44 1985 -sun-s|Sun Microsystems Workstation window with status line, - hs, - dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun, -sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs, - hs, - dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e, -sun-48|Sun 48-line window, - cols#80, lines#48, use=sun, -sun-34|Sun 34-line window, - cols#80, lines#34, use=sun, -sun-24|Sun 24-line window, - cols#80, lines#24, use=sun, -sun-17|Sun 17-line window, - cols#80, lines#17, use=sun, -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=^M, use=sun, -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, - lines#35, - rmcup=\E[>4h, smcup=\E[>4l, use=sun, -sun-type4|Sun Workstation console with type 4 keyboard, - kcub1=\E[217z, kcud1=\E[221z, kcuf1=\E[219z, - 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 -# 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. -# 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. -# -# Since the documentation and terminfo do not agree, see also current code at -# http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/tem_safe.c -# -# That (actually a different driver which "supports" sun-color) also supports -# these features: -# vpa=\E[%i%p1%dd -# hpa=\E[%i%p1%d` -# cbt=\E[Z -# dim=\E[2m -# blink=\E[5m -# It supports bold, but not underline -TD (2009-09-19) -sun-color|Sun Microsystems Workstation console with color support (IA systems), - colors#8, ncv#3, pairs#64, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, home=\E[H, op=\E[0m, 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}%=%t3%e%p1%d%;m, - use=sun, - -#### Iris consoles -# - -# (wsiris: this had extension capabilities -# :HS=\E7F2:HE=\E7F7:\ -# :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite: -# See the note on Iris extensions near the end of this file. -# Finally, removed suboptimal =\EH\EJ and added & -# from BRL -- esr) -wsiris|iris40|iris emulating a 40 line visual 50 (approximately), - OTbs, OTnc, OTpt, am, - OTkn#3, cols#80, it#8, lines#40, - OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK, - flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL, - ind=^J, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, - kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI, - rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P, - smul=\E7R2\E9P, - -#### NeWS consoles -# -# Console terminal windows under the NeWS (Sun's Display Postscript windowing -# environment). Note: these have nothing to do with Sony's News workstation -# line. -# - -# Entry for NeWS's psterm from Eric Messick & Hugh Daniel -# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr) -psterm|psterm-basic|NeWS psterm-80x34, - OTbs, am, hs, km, ul, - cols#80, it#8, lines#34, - blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;, - cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY, - dch1=\EF, dl1=\EK, ed=\EB, el=\EC, flash=\EZ, fsl=\ENl, - home=\ER, ht=^I, il1=\EA, ind=\EW, is1=\EN*, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ll=\EU, rc=^\, rev=\EOr, - ri=\EX, rmcup=\ENt, rmir=\ENi, rmso=\ENo, rmul=\ENu, sc=^], - sgr0=\EN*, smcup=\EOt, smir=\EOi, smso=\EOo, smul=\EOu, - tsl=\EOl, -psterm-96x48|NeWS psterm 96x48, - cols#96, lines#48, use=psterm, -psterm-90x28|NeWS psterm 90x28, - cols#90, lines#28, use=psterm, -psterm-80x24|NeWS psterm 80x24, - cols#80, lines#24, use=psterm, -# This is a faster termcap for psterm. Warning: if you use this termcap, -# some control characters you type will do strange things to the screen. -# (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr) -psterm-fast|NeWS psterm fast version (flaky ctrl chars), - OTbs, am, hs, km, ul, - cols#80, it#8, lines#34, - blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;, - cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y, - dch1=^F, dl1=^K, ed=^B, el=^C, flash=^Z, fsl=^Nl, home=^R, ht=^I, - il1=^A, ind=^W, is1=^N*, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, ll=^U, rc=^\, rev=^Or, ri=^X, rmcup=^Nt, rmir=^Ni, - rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi, - smso=^Oo, smul=^Ou, tsl=^Ol, - -#### NeXT consoles -# -# Use `glasstty' for the Workspace application -# - -# From: Dave Wetzel 22 Dec 1995 -next|NeXT console, - am, xt, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, - rmso=\E[4;1m, sgr0=\E[m, smso=\E[4;2m, -nextshell|NeXT Shell application, - am, - cols#80, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, - -#### Sony NEWS workstations -# - -# (news-unk: this had :KB=news: -- esr) -news-unk|SONY NEWS vt100 emulator common entry, - OTbs, OTpt, am, xenl, - cols#80, - OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, - if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L, - is2=\E[?7h\E[?1l\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, rc=\E8, rev=\E[7m, ri=\EM, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7, - sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, -# -# (news-29: this had :TY=ascii: --esr) -news-29, - lines#29, use=news-unk, -# (news-29-euc: this had :TY=euc: --esr) -news-29-euc, - use=news-29, -# (news-29-sjis: this had :TY=sjis: --esr) -news-29-sjis, - use=news-29, -# -# (news-33: this had :TY=ascii: --esr) -news-33, - lines#33, use=news-unk, -# (news-33-euc: this had :TY=euc: --esr) -news-33-euc, - use=news-33, -# (news-33-sjis: this had :TY=sjis: --esr) -news-33-sjis, - use=news-33, -# -# (news-42: this had :TY=ascii: --esr) -news-42, - lines#42, use=news-unk, -# (news-42-euc: this had :TY=euc: --esr) -news-42-euc, - use=news-42, -# (news-42-sjis: this had :TY=sjis: --esr) -news-42-sjis, - use=news-42, -# -# NEWS-OS old termcap entry -# -# (news-old-unk: this had :KB=news:TY=sjis: --esr) -news-old-unk|SONY NEWS vt100 emulator common entry, - OTbs, OTpt, am, xenl, - cols#80, vt#3, - OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, -# -# (nwp512: this had :DE=^H:, which I think means --esr) -nwp512|news|nwp514|news40|vt100-bm|old sony vt100 emulator 40 lines, - OTbs, - lines#40, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, - use=news-old-unk, -# -# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr) -nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line, - lines#42, - is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8, - use=news-old-unk, -# -# (nwp-512-o: this had :KB=nwp410:DE=^H: I interpret the latter as . --esr) -nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|sony vt100 emulator 40 lines, - OTbs, - lines#40, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, - use=news-old-unk, -# -# (nwp513: this had :DE=^H: and the alias vt100-bm --esr) -nwp513|nwp518|nwe501|newscbm|news31|sony vt100 emulator 33 lines, - OTbs, - lines#31, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, - use=news-old-unk, -# -# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as ; --esr) -# also the alias vt100-bm. -nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old sony vt100 emulator 33 lines, - OTbs, - lines#33, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8, - use=news-old-unk, -# -# (nwp513-o: had :DE=^H:, I think that's ; also the alias vt100-bm --esr) -nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old sony vt100 emulator 33 lines, - OTbs, - lines#31, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, - use=news-old-unk, -# -# (news28: this had :DE=^H:, I think that's , and :KB=nws1200: --esr) -news28|sony vt100 emulator 28 lines, - OTbs, - lines#28, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8, - use=news-old-unk, -# -# (news29: this had :TY=ascii:KB=nws1200:\ --esr) -news29|news28-a|sony vt100 emulator 29 lines, - lines#29, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8, - use=news-old-unk, -# -# (news511: this had :TY=sjis: --esr) -nwp511|nwp-511|nwp-511 vt100, - OTbs, OTpt, am, xenl, - cols#80, lines#24, - clear=\E[;H\E[2J$<20/>, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M, - 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/>, - rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h, - smso=\E[7m$<2/>, smul=\E[4m$<2/>, -# (news517: this had :TY=sjis:. --esr) -nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows, - eslok, hs, - cols#80, lines#30, - OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$}, - is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - tsl=\E[1$}\E[;%df, use=vt200, -# (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$}, - 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=vt200, - -#### Common Desktop Environment -# - -# This ships with Sun's CDE in Solaris 2.5 -# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov -dtterm|CDE desktop terminal, - am, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, lm#0, ncv@, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H, - ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, - ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[3~, 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~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m, - sc=\E7, - 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=ecma+color, - -#### Non-Unix Consoles -# - -### EMX termcap.dat compatibility modes -# -# Also (possibly only EMX, so we don't put it in ansi.sys, etc): set the -# no_color_video to inform the application that standout(1), underline(2) -# reverse(4) and invisible(64) don't work with color. -emx-base|DOS special keys, - bce, bw, - it#8, ncv#71, - bel=^G, use=ansi.sys, - -# Except for the "-emx" suffixes, these are as distributed with EMX 0.9b, -# a Unix-style environment used on OS/2. (Note that the suffix makes some -# names longer than 14 characters, the nominal maximum). -# -# Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs. -ansi-emx|ANSI.SYS color, - am, bce, eo, mir, msgr, xon, - colors#8, cols#80, it#8, lines#25, pairs#64, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[1;33;44m\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, - cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch=\E[%p1%dp, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=^J, - kb2=\E[G, kbs=^H, kf0=\0D, kll=\0O, kspd=^Z, nel=^M^J, - rev=\E[5;37;41m, rmir=\E[4l, rmpch=\E[10m, - rmso=\E[0;44m\E[1;33m, rmul=\E[0;44m\E[1;33m, rs1=\Ec, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr0=\E[0m\E[1;33;44m, smir=\E[4h, smpch=\E[11m, - smso=\E[0;31;47m, smul=\E[1;31;44m, tbc=\E[3g, u8=\E[?6c, - u9=\E[c, use=emx-base, -# nice colors for Emacs (white on blue, mode line white on cyan) -ansi-color-2-emx|ANSI.SYS color 2, - clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m, - rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec, - setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m, - smul=\E[1;36;44m, use=ansi-emx, -# nice colors for Emacs (white on black, mode line black on cyan) -ansi-color-3-emx|ANSI.SYS color 3, - clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m, - rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec, - setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m, - smul=\E[0;36;40m, use=ansi-emx, -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>, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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=^M^J, rev=\E[7m, - sgr0=\E[0m, - -# Use this for cygwin32 (tested with beta 19.1) -# underline is colored bright magenta -# shifted kf1-kf12 are kf11-kf22 -cygwinB19|ansi emulation for cygwin32, - 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmam@, smam@, - use=ansi.sys, - -# Use this for cygwin (tested with version 1.1.0). -# I've combined pcansi and linux. Some values of course were different and -# I've indicated which of these were and which I used. -# Cheers, earnie_boyd@yahoo.com -# several changes based on running with tack and comparing with older entry -TD -# more changes from csw: -# add cbt [backtab] -# remove eo [erase overstrike with blank] -# change clear was \E[H\E[J now \E[2J (faster?) -# remove cols -# remove lines -# remove ncv#3 [colors collide with highlights, bitmask] not applicable -# to MSDOS box? -# add cub [cursor back param] -# add cuf [cursor forward param] -# add cuu [cursor up param] -# add cud [cursor down param] -# add hs [has status line] -# add fsl [return from status line] -# add tsl [go to status line] -# add smacs [Start alt charset] (not sure if this works) -# add rmacs [End alt charset] (ditto) -# add smcup [enter_ca_mode] (save console; thanks Corinna) -# add rmcup [exit_ca_mode] (restore console; thanks Corinna) -# add kb2 [center of keypad] -# add u8 [user string 8] \E[?6c -# add el [clear to end of line] \E[K -# Notes: -# cnorm [make cursor normal] not implemented -# flash [flash] not implemented -# blink [blink] not implemented very usefully in cygwin? \E[5m -# dim [dim] not implemented very usefully in cygwin? \E[2m -# cub1 [cursor back 1] typically \E[D, but ^H is faster? -# kNXT [shifted next key] not implemented -# kPRV [shifted prev key] not implemented -# khome [home key] really is \E[1~ NOT \E[H -# tbc [clear tab stops] not implemented -# xenl [newline ignnored after 80 cols] messes up last line? Ehud Karni -# smpch [Start PC charset] is \E[11m, same as smacs -# rmpch [End PC charset] is \E[10m, same as rmacs -# mir [move in insert mode] fails in tack? -# bce [back color erase] causes problems with change background color? -# cvvis [make cursor very visible] causes a stackdump when testing with -# testcurs using the output option? \E[?25h\E[?8c -# civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c -# ech [erase characters param] broken \E[%p1%dX -# kcbt [back-tab key] not implemented in cygwin? \E[Z -# -# 2005/11/12 -TD -# Remove cbt since it does not work in current cygwin -# Add 'mir' and 'in' flags based on tack -cygwin|ansi emulation for Cygwin, - am, hs, mir, msgr, xon, - 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, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, - kbs=^H, 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, - nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, - 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, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h, - smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, - vpa=\E[%i%p1%dd, use=vt102+enq, - -# I've supplied this so that you can help test new values and add other -# features. Cheers, earnie_boyd@yahoo.com. -# -# Some features are from pcansi. The op value is from linux. Function-keys -# are from linux. These have been tested not to cause problems. xenl was in -# this list, but DOES cause problems so it has been removed -cygwinDBG|Debug Version for Cygwin, - am, eo, mir, msgr, xon, - colors#8, cols#80, it#8, lines#24, ncv#3, 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, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, invis=\E[8m, kNXT=\E[6$, kPRV=\E[5$, - kb2=\E[G, kbs=^H, kcbt=\E[Z, 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[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~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, - rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, 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%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, - sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt102+enq, - -# Key definitions: -# The encodings for unshifted arrow keys, F1-F12, Home, Insert, etc. match the -# encodings used by other x86 environments. All others are invented for DJGPP. -# Oddly enough, while several combinations of modifiers are tabulated, there is -# none for shifted cursor keys. -# -# F1 \E[[A -# F2 \E[[B -# F3 \E[[C -# F4 \E[[D -# F5 \E[[E -# F6 \E[17~ -# F7 \E[18~ -# F8 \E[19~ -# F9 \E[20~ -# F10 \E[21~ -# F11 \E[23~ -# F12 \E[24~ -# -# Delete \E[3~ -# Down Arrow \E[B -# End \E[4~ -# Home \E[1~ -# Insert \E[2~ -# Left Arrow \E[D -# Page Down \E[6~ -# Page Up \E[5~ -# Right Arrow \E[C -# Up Arrow \E[A -# -# Shift-F1 \E[25~ -# Shift-F2 \E[26~ -# Shift-F3 \E[27~ -# Shift-F4 \E[28~ -# Shift-F5 \E[29~ -# Shift-F6 \E[30~ -# Shift-F7 \E[31~ -# Shift-F8 \E[32~ -# Shift-F9 \E[33~ -# Shift-F10 \E[34~ -# Shift-F11 \E[35~ -# Shift-F12 \E[36~ -# -# Ctrl-F1 \E[47~ -# Ctrl-F2 \E[48~ -# Ctrl-F3 \E[49~ -# Ctrl-F4 \E[50~ -# Ctrl-F5 \E[51~ -# Ctrl-F6 \E[52~ -# Ctrl-F7 \E[53~ -# Ctrl-F8 \E[54~ -# Ctrl-F9 \E[55~ -# Ctrl-F10 \E[56~ -# Ctrl-F11 \E[57~ -# Ctrl-F12 \E[58~ -# -# Ctrl-Delete \E[43~ -# Ctrl-Down Arrow \E[38~ -# Ctrl-End \E[44~ -# Ctrl-Home \E[41~ -# Ctrl-Insert \E[42~ -# Ctrl-Left Arrow \E[39~ -# Ctrl-Page Down \E[46~ -# Ctrl-Page Up \E[45~ -# Ctrl-Right Arrow \E[40~ -# Ctrl-Up Arrow \E[37~ -# -# Alt-F1 \E[59~ -# Alt-F2 \E[60~ -# Alt-F3 \E[61~ -# Alt-F4 \E[62~ -# Alt-F5 \E[63~ -# Alt-F6 \E[64~ -# Alt-F7 \E[65~ -# Alt-F8 \E[66~ -# Alt-F9 \E[67~ -# Alt-F10 \E[68~ -# Alt-F11 \E[79~ -# Alt-F12 \E[80~ -# -# Alt-Delete \E[65~ -# Alt-Down Arrow \E[60~ -# Alt-End \E[66~ -# Alt-Home \E[41~ -# Alt-Insert \E[64~ -# Alt-Left Arrow \E[61~ -# Alt-Page Down \E[68~ -# Alt-Page Up \E[67~ -# Alt-Right Arrow \E[62~ -# Alt-Up Arrow \E[59~ -# -# Also: -# 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~ -djgpp|ansi emulation for DJGPP alpha, - 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, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v, - clear=\E[H\E[J, cnorm=\E[v, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, invis=\E[8m, kbs=^H, 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, nel=^M^J, - op=\E[37;40m, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, - 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, - -djgpp203|Entry for DJGPP 2.03, - OTbs, am, - cols#80, it#8, lines#25, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, - -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=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[3~, 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~, kich1=\E[2~, - kll=\E[4~, knp=\E[6~, kpp=\E[5~, nel=^M^J, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, smul=\E[4m, - -# This is tested using U/Win's telnet. Scrolling is omitted because it is -# buggy. Another odd bug appears when displaying "~" in alternate character -# set (the emulator spits out error messages). Compare with att6386 -TD -uwin|U/Win 3.2 console, - am, eo, in, msgr, xenl, xon, - colors#8, it#8, ncv#58, pairs#64, - 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, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, cud1=^J, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, - ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, ich1=\E[@, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, 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, - khome=\E[H, kich1=\E[@, nel=^M^J, op=\E[39;49m, rc=\E8, - rev=\E[7m, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m, - rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m, - smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, - -# This entry fits the Windows NT console when the _POSIX_TERM environment -# variable is set to 'on'. While the Windows NT POSIX console is seldom used, -# the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP -# stack and the Win32 (i.e., Windows 95 and Windows NT 3.1 or later) operating -# systems is not, and (surprise!) they match very well. -# -# See: MS Knowledge Base item Q108581, dated 13-MAY-1997, titled "Setting Up -# VI POSIX Editor for Windows NT 3.1". True to Microsoft form, not only -# are the installation instructions a pile of mind-numbing bureaucratese, -# but the termcap entry is actually broken and unusable as given; the :do: -# capability is misspelled "d". -# -# To use this, you need to a bunch of environment variables: -# -# SET _POSIX_TERM=on -# SET TERM=ansi -# SET TERMCAP=location of termcap file in POSIX file format -# which is case-sensitive. -# e.g. SET TERMCAP=//D/RESKIT35/posix/termcap -# SET TMP=//C/TEMP -# -# Important note: setting the TMP environment variable in POSIX style renders -# it incompatible with a lot of other applications, including Visual C++. So -# you should have a separate command window just for vi. All the other -# variables may be permanently set in the Control Panel\System applet. -# -# You can find out more about the restrictions of this facility at -# . -# -# From: Federico Bianchi , 15 Jan 1997 -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=^M, cub1=^H, cud1=^J, 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, -# From: jew@venus.sunquest.com -# Date: 19 Feb 93 23:41:07 GMT -# Here's a combination of ansi and vt100 termcap -# entries that works nearly perfectly for me -# (Gateway 2000 Handbook and Microsoft Works 3.0): -pcmw|PC running Microsoft Works, - am, xenl, - cols#80, it#8, lines#24, vt#3, - bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, - 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$<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/lib/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/>, - -# From: Federico Bianchi -# This is the entry for the OpenNT terminal. -# The ntconsole name is for backward compatability. -# This is for OpenNT 2.0 and later. -# Later OpenNT was renamed to Interix. -# -# Presently it is distributed by Microsoft as Services For Unix (SFU). -# The 3.5 beta contains ncurses 4.2 (that is header files and executables, -# the documentation dates from 1.9.9e) -TD - -interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color, - am, bw, msgr, - colors#8, cols#80, lines#25, ncv#3, 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, clear=\E[2J, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[M, 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, kf61=\EF+, kf62=\EF-, - kf63=\EF\014 kf64=\EF$, kf7=\EF7, kf8=\EF8, kf9=\EF9, - kich1=\E[L, kll=\E[U, knp=\E[T, kpp=\E[S, ll=\E[U, nel=^M^J, - op=\E[m, rc=\E[u, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, - rmcup=\E[2b\E[u\r\E[K, rmso=\E[m, rmul=\E[m, rs1=\Ec, - sc=\E[s, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - setb=\E[%p1%{40}%+%dm, setf=\E[%p1%{30}%+%dm, - sgr0=\E[0m, smcup=\E[s\E[1b, smso=\E[7m, smul=\E[4m, - -opennt-35|ntconsole-35|OpenNT-term35 compatible with color, - lines#35, use=opennt, - -opennt-50|ntconsole-50|OpenNT-term50 compatible with color, - lines#50, use=opennt, - -opennt-60|ntconsole-60|OpenNT-term60 compatible with color, - lines#60, use=opennt, - -opennt-100|ntconsole-100|OpenNT-term100 compatible with color, - lines#100, use=opennt, - -# OpenNT wide terminals -opennt-w|opennt-25-w|ntconsole-w|ntconsole-25-w|OpenNT-term-w compat with color, - cols#125, use=opennt, - -opennt-35-w|ntconsole-35-w|OpenNT-term35-w compatible with color, - lines#35, use=opennt-w, - -opennt-50-w|ntconsole-50-w|OpenNT-term50-w compatible with color, - lines#50, use=opennt-w, - -opennt-60-w|ntconsole-60-w|OpenNT-term60-w compatible with color, - lines#60, use=opennt-w, - -opennt-w-vt|opennt-25-w-vt|ntconsole-w-vt|ntconsole-25-w-vt|OpenNT-term-w-vt compat with color, - cols#132, use=opennt, - -# OpenNT terminals with no smcup/rmcup (names match termcap entries) -interix-nti|opennt-nti|opennt-25-nti|ntconsole-25-nti|OpenNT-nti compatible with color, - rmcup@, smcup@, use=opennt, - -opennt-35-nti|ntconsole-35-nti|OpenNT-term35-nti compatible with color, - lines#35, use=opennt-nti, - -opennt-50-nti|ntconsole-50-nti|OpenNT-term50-nti compatible with color, - lines#50, use=opennt-nti, - -opennt-60-nti|ntconsole-60-nti|OpenNT-term60-nti compatible with color, - lines#60, use=opennt-nti, - -opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color, - lines#100, use=opennt-nti, - -######## COMMON TERMINAL TYPES -# -# This section describes terminal classes and maker brands that are still -# quite common, but have proprietary command sets not blessed by ANSI. -# - -#### Altos -# -# Altos made a moderately successful line of UNIX boxes. In 1990 they were -# bought out by Acer, a major Taiwanese manufacturer of PC-clones. -# Acer has a web site at http://www.acer.com. -# -# Altos descriptions from Ted Mittelstaedt 4 Sep 1993 -# His comments suggest they were shipped with the system. -# - -# (altos2: had extension capabilities -# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ -# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ -# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ -# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: -# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\ -# :YU=^AQ\r:YD=^AR\r:YR=^AS\r:YL=^AT\r:\ -# :HL=^AP\r:SP=\E[i:\ -# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\ -# :LO=\E[0q:LC=\E[5q:LL=\E[6q:\ -# Comparison with the k* capabilities makes it obvious that the c* things are -# shift keys. I have renamed them to keys 32 and up accordingly. Also, -# :sr: was given as a boolean-- esr) -altos2|alt2|altos-2|altos II, - cols#80, it#8, lines#24, xmc#0, - clear=\E[H\E[2J, cr=^M, 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=^J, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r, - kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r, - kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r, - kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r, - 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=^M^J, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smam=\E[?7h, smso=\E[7m, smul=\E[4m, -# (altos3: had extension capabilities -# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ -# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ -# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ -# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: -# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\ -# :HL=^AP\r:SP=\E[i:\ -# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\ -altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V, - blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2, -altos4|alt4|altos-4|altos IV, - use=wy50, -# (altos7: had extension capabilities: -# :GG#0:GI=\EH8:GF=\EH7:\ -# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ -# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ -# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ -# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: -# Comparison with the k* capabilities makes it obvious that the c* things are -# shift keys. I have renamed them to keys 32 and up accordingly. I have -# also made this entry relative to adm12 in order to give it an . The -# imported by use=adm+sgr may work, let me know. -- esr) -altos7|alt7|altos VII, - am, mir, - cols#80, lines#24, xmc#0, - acsc=j5k3l2m1n8q\:t4u9v=w0x6, blink=\EG2, bold=\EGt, - clear=\E+^^, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dim=\EGp, dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, il1=\EE, - ind=^J, invis=\EG1, - is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2, kDL=^Am\r, - kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=^AM\r, kel=^AN\r, - kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r, - kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r, - 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=^^, kil1=^AJ\r, kind=^AO\r, - knp=\EK, kpp=\EJ, mc4=\EJ, mc5=\Ed#, nel=^M^J, ri=\Ej, - rmir=\Er, smir=\Eq, use=adm+sgr, -altos7pc|alt7pc|altos PC VII, - kend=\ET, use=altos7, - -#### Hewlett-Packard (hp) -# -# Hewlett-Packard -# 8000 Foothills Blvd -# Roseville, CA 95747 -# Vox: 1-(916)-785-4363 (Technical response line for VDTs) -# 1-(800)-633-3600 (General customer support) -# -# -# As of March 1998, HP no longer has any terminals in production. -# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being -# supported (they still have parts). So are the 2392a and 2394a. -# See the WORKSTATION CONSOLES section for the 700s. -# - -# Generic HP terminal - this should (hopefully) work on any HP terminal. -hpgeneric|hp|hewlett-packard generic terminal, - OTbs, OTpt, am, da, db, mir, xhp, - cols#80, lines#24, lm#0, vt#6, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM, - ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, - ind=^J, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3, - vpa=\E&a%p1%dY, - -hp110|hewlett-packard model 110 portable, - lines#16, use=hpgeneric, - -hp+pfk+cr|hp function keys with CR, - kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, - kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, - -hp+pfk-cr|hp function keys w/o CR, - kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, - kf8=\Ew, - -# The hp2621s use the same keys for the arrows and function keys, -# but not separate escape sequences. These definitions allow the -# user to use those keys as arrow keys rather than as function -# keys. -hp+pfk+arrows|hp alternate arrow definitions, - kcub1=\Eu\r, kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1@, - kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, khome=\Ep\r, kind=\Er\r, - kll=\Eq\r, kri=\Es\r, - -hp+arrows|hp arrow definitions, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, - kind=\ES, kll=\EF, kri=\ET, - -# Generic stuff from the HP 262x series -# -hp262x|HP 262x terminals, - xhp, - blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES, - invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, - kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET, - krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, - sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%c, - sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, - -# Note: no on HPs since that homes to top of memory, not screen. -# 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 , and even then the user has to hold down shift! -# 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. -# -# Note: there are newer ROMs for 2621's that allow you to set -# strap A so the regular arrow keys xmit \EA, etc, as with the -# 2645. However, even with this strap set, the terminal stops -# xmitting if you reset it, until you unset and reset the strap! -# Since there is no way to set/unset the strap with an escape -# sequence, we don't use it in the default. -# If you like, you can use 2621-ba (brain-damaged arrow keys). -hp2621-ba|2621 w/new rom and strap A set, - rmkx@, smkx@, use=hp+arrows, use=hp2621, - -# hp2621 with function labels. Most of the time they are off, -# but inside vi, the function key labels appear. You have to -# hold down shift to get them to xmit. -hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels, - is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl, -hp2621-fl|hp 2621, - xhp@, xon, - pb#19200, - cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>, - ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD, - use=hp+pfk+cr, use=hpgeneric, - -# To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p -hp2621p|hp 2621 with printer, - mc4=\E&p13C, mc5=\E&p11C, use=hp2621, - -hp2621p-a|hp2621p with fn as arrows, - use=hp+pfk+arrows, use=hp2621p, - -# hp2621 with k45 keyboard -hp2621-k45|hp2621k45|k45|hp 2621 with 45 keyboard, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621, - -# 2621 using all 48 lines of memory, only 24 visible at any time. -hp2621-48|48 line 2621, - lines#48, - cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR, - use=hp2621, - -# 2621 with no labels ever. Also prevents vi delays on escape. -hp2621-nl|hp 2621 with no labels, - kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@, - use=hp2621-fl, - -# Needed for UCB ARPAVAX console, since lsi-11 expands tabs -# (wrong). -# -hp2621-nt|hp 2621 w/no tabs, - ht@, use=hp2621, - -# Hp 2624 B with 4 or 10 pages of memory. -# -# Some assumptions are made with this entry. These settings are -# NOT set up by the initialization strings. -# -# Port Configuration -# RecvPace=Xon/Xoff -# XmitPace=Xon/Xoff -# StripNulDel=Yes -# -# Terminal Configuration -# InhHndShk=Yes -# InhDC2=Yes -# XmitFnctn(A)=No -# InhEolWrp=No -# -# Note: the 2624 DOES have a true , believe it or not! -# -# The 2624 has an "error line" to which messages can be sent. -# This is CLOSE to what is expected for a "status line". However, -# after a message is sent to the "error line", the next carriage -# return is EATEN and the "error line" is turned back off again! -# So I guess we can't define , , , , , . -# -# This entry supports emacs (and any other program that uses raw -# mode) at 4800 baud and less. I couldn't get the padding right -# for 9600. -# -# (hp2624: replaced NUL sequences in flash with mandatory pauses -- esr) -hp2624|hp2624a|hp2624b|hp2624b-4p|Hewlett Packard 2624 B, - da, db, - lm#96, - flash=\E&w13F$<66/>\E&w12F$<66/>\E&w13F$<66/>\E&w12F, - use=hp+labels, use=scrhp, - -# This hp2626 entry does not use any of the fancy windowing stuff -# of the 2626. -# -# Indeed, terminfo does not yet handle such stuff. Since changing -# any window clears memory, it is probably not possible to use -# this for screen opt. -# -# ed is incredibly slow most of the time - I am guessing at the -# exact padding. Since the terminal uses xoff/xon this is intended -# only for cost computation, so that the terminal will prefer el -# or even dl1 which is probably faster! -# -# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only -# extra slow on the last line of the window. -# -# The padding probably should be changed. -# -hp2626|hp2626a|hp2626p|hp 2626, - da, db, - lm#0, pb#19200, - ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>, - is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk+cr, - use=hp+labels, use=scrhp, - -# This entry is for sysline. It allocates a 23 line window with -# a 115 line workspace for regular use, and a 1 line window for -# the status line. -# -# This assumes port 2 is being used. -# Turn off horizontal line, Create ws #1 with 115 lines, -# Create ws #2 with 1 line, Create window #1 lines 1-23, -# Create window #2 lines 24-24, Attach cursor to workspace #1. -# Note that this clears the tabs so it must be done by tset before -# it sets the tabs. -# -hp2626-s|hp 2626 using only 23 lines, - eslok, hs, - lines#23, - fsl=\E&d@\E&w7f2p1I\E&w4f1I, - is1=\E&q3t0{0H \E&w0f115n1I \E&w0f1n2I \E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r, - tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626, -# Force terminal back to 24 lines after being 23. -hp2626-ns|hp 2626 using all 24 lines, - is1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r, - use=hp2626, -# Various entries useful for small windows on 2626. -hp2626-12|hewlett-packard 2626 12 lines, - lines#12, use=hp2626, -hp2626-12x40|hewlett-packard 2626 12 lines 40 columns, - cols#40, lines#12, use=hp2626, -hp2626-x40|hewlett-packard 2626 40 columns, - cols#40, use=hp2626, -hp2626-12-s|hewlett-packard 2626 11 lines plus status, - lines#11, use=hp2626-s, - -# -# hp2627 color tubes from University of Wisconsin -# -hp2627a-rev|hp 2627 with reverse video colors, - cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3\r, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmul=\E&v0S\E&d@, - smul=\E&dD\E&v1S, use=hp2621-nl, -hp2627a|hp 2627 color terminal with no labels, - cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmso=\E&v0S, - rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S, - use=hp2621-nl, -hp2627c|hp 2627 color (cyan) terminal with no labels, - cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, use=hp2627a, - -# hp2640a doesn't have the Y cursor addressing feature, and C is -# memory relative instead of screen relative, as we need. -# -hp2640a|hp 2640a, - cup@, rmkx@, smkx@, use=hp2645, - -hp2640b|hp2644a|hp 264x series, - rmkx@, smkx@, use=hp2645, - -# (hp2641a: removed unknown :gu: -- esr) -hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry, - am, da, db, mir, xhp, - cols#80, lines#24, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM, - ed=\EJ, el=\EK, hpa=\E&a%p1%2dC, ht=^I, - if=/usr/share/tabset/std, il1=\EL, ind=^J, - is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, - rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB, - vpa=\E&a%p1%2dY, - -# This terminal should be used at 4800 baud or less. It needs padding for -# plain characters at 9600, I guessed at an appropriate cr delay. It really -# wants ^E/^F handshaking, but that doesn't work well even if you write -# software to support it. -hp2645|hp45|HP 2645 series, - pb#9600, - blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, - kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB, - rmkx=\E&s0A, - sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c, - sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric, -# You should use this terminal at 4800 baud or less. -hp2648|hp2648a|HP 2648a graphics terminal, - clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>, - dch1=\EP$<7>, ip=$<5>, use=hp2645, - -# The HP 150 terminal is a fairly vanilla HP terminal, with the -# clreol standout problem. It also has graphics capabilities and -# a touch screen, which we don't describe here. -hp150|hewlett packard Model 150, - OTbs, use=hp2622, - -# HP 2382a terminals, "the little ones." They don't have any -# alternate character set support and sending out ^N/^O will -# leave the screen blank. -hp2382a|hp2382|hewlett packard 2382a, - da, db, - lh#1, lm#48, - acsc@, - pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s, - rmacs@, - sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c, - sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp, - -hp2621-a|hp2621a-a|hp2621 with fn as arrows, - use=hp+pfk+arrows, use=hp2621-fl, - -# newer hewlett packard terminals - -newhpkeyboard|generic entry for HP extended keyboard, - kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, - kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV, - kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A, - use=hp+pfk-cr, - -newhp|generic entry for new hewlett packard terminals, - am, bw, mir, xhp, xon, - cols#80, lines#24, pb#4800, - acsc=2[3@4>5I9(\:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X\:Y+Z*dHjGkTlRmFn/q\,t5u6v8w7x., - bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=^M, cub1=^H, - cud1=^J, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH, - dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=^J, - invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=^M^J, - pfkey=\E&f0a%p1%dk0d%p2%l%dL%p2%s, - pfloc=\E&f1a%p1%dk0d%p2%l%dL%p2%s, - pfx=\E&f2a%p1%dk0d%p2%l%dL%p2%s, rev=\E&dB, ri=\ET, - rmacs=^O, rmir=\ER, rmso=\E&d@, rmul=\E&d@, rs1=\Eg, - sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c%?%p9%t\016%e\017%;, - sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD, - tbc=\E3, use=newhpkeyboard, - -memhp|memory relative addressing for new HP ttys, - vt#6, - clear=\EH\EJ$<40>, cub=\E&a-%p1%dC, cud=\E&a+%p1%dR, - cuf=\E&a+%p1%dC, cup=\E&a%p1%dr%p2%dC, cuu=\E&a-%p1%dR, - home=\EH, hpa=\E&a%p1%dC, ll=\E&a23R\r, - mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dR, use=newhp, - -scrhp|screen relative addressing for new HP ttys, - clear=\E&a0c0Y\EJ$<40>, cub=\E&a-%p1%dC, - cud=\E&a+%p1%dR, cuf=\E&a+%p1%dC, - cup=\E&a%p1%dy%p2%dC$<10>, cuu=\E&a-%p1%dR, - home=\E&a0y0C, hpa=\E&a%p1%dC, ll=\E&a0y0C\EA, - mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dY, use=newhp, - -# (hp+labels: added label values from a BRL termcap -- esr) -hp+labels|"standard" label info for new HP ttys, - lh#2, lw#8, nlab#8, - lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, - pln=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s, - rmln=\E&j@, smln=\E&jB, - -hp+printer|"standard" printer info for HP ttys, - ff=\E&p4u0C, mc0=\EH\E&p4dF, mc4=\E&p13C, mc5=\E&p11C, - - -# The new hp2621b is kind of a cross between the old 2621 and the -# new 262x series of machines. It has dip-switched options. -# The firmware has a bug in it such that if you give it a null -# length label, the following character is eaten! -hp2621b|hp 2621b with old style keyboard, - lh#1, lm#48, lw#8, nlab#8, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, - kind=\ET, kll=\EF, kri=\ES, - pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%{111}%p1%+%c\r, - smln=\E&jB, use=hp2621, - -hp2621b-p|hp 2621b with printer, - use=hp+printer, use=hp2621b, - -# hp2621b - new 2621b with new extended keyboard -# these are closer to the new 26xx series than the other 2621b -hp2621b-kx|hp 2621b with extended keyboard, - use=newhpkeyboard, use=hp2621b, - -hp2621b-kx-p|hp 2621b with new keyboard & printer, - use=hp+printer, use=hp2621b-kx, - -# Some assumptions are made in the following entries. -# These settings are NOT set up by the initialization strings. -# -# Port Configuration -# RecvPace=Xon/Xoff XmitPace=Xon/Xoff StripNulDel=Yes -# -# Terminal Configuration -# InhHndShk(G)=Yes InhDC2(H)=Yes -# XmitFnctn(A)=No InhEolWrp=No -# -# -# Hp 2622a & hp2623a display and graphics terminals -# -hp2622|hp2622a|hp 2622, - da, db, - lm#0, pb#19200, - is2=\E&dj@\r, use=hp+pfk+cr, use=hp+labels, use=scrhp, - -# The 2623 is a 2622 with extra graphics hardware. -hp2623|hp2623a|hp 2623, - use=hp2622, - -hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer, - use=hp+printer, use=hp2624, - -# The hewlett packard B can have an optional extra 6 pages of memory. -hp2624-10p|hp2624a-10p|hp2624b-10p|hewlett packard 2624 B w/ 10 pages of memory, - lm#240, use=hp2624, - -hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer, - lm#240, use=hp2624b-p, - -# Color manipulations for HP terminals -hp+color|hp with colors, - ccc, - colors#16, ncv#17, pairs#7, - initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.%p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1%e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=%t1%e.%p7%d%;z%p1%dI, - oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5I\E&v1b1c6I\E&v1x1y7I, - op=\E&v0S, scp=\E&v%p1%dS, - -# sets the screen to be 80 columns wide -hp2397a|hp2397|hewlett packard 2397A color terminal, - is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color, - -# HP 700/44 Setup parameters: -# Terminal Mode HP-PCterm -# Inhibit Auto Wrap NO -# Status Line Host Writable -# PC Character Set YES -# Twenty-Five Line Mode YES -# XON/XOFF @128 or 64 (sc) -# Keycode Mode NO or YES (sc) -# Backspace Key BS or BS/DEL -# -# sets pcterm; autowrap; 25 lines; pc char set; prog DEL key; -# \E\\? does not turn off keycode mode -# sets alternate start/stop; keycode on -hpansi|hp700|hewlett packard 700/44 in HP-PCterm mode, - am, eo, xenl, xon, - cols#80, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[2J\E[H, - cnorm=\E[?25h, cr=^M, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, - ind=^J, - is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\, - kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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, -# -# (hp2392: copied here from hpex -- esr) -hp2392|239x series, - cols#80, - cbt=\Ei, cup=\E&a%p1%dy%p2%dC, kf1=\Ep\r, kf2=\Eq\r, - kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, - kf8=\Ew\r, khome=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV, - rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY, - use=hpsub, - -hpsub|hp terminals -- capability subset, - am, da, db, mir, xhp, xon, - lines#24, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, - ht=^I, if=/usr/share/tabset/stdcrt, il1=\EL, ind=^J, - is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@, - sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, - -# hpex: -# May be used for most 24 x 80 hp terminals, -# but has no padding added, so may allow runover in some terminals at high -# baud rates. Will not work for hp2640a or hp2640b terminals, hp98x6 and -# hp98x5 terminal emulators or hp98x6 consoles. -# Adds xy-cursor addressing, vertical cursor addressing, home, -# last line, and underline capabilities. -# -# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:", -# moved here from hpsub -- esr) -hpex|hp extended capabilites, - cr=^M, cud1=^J, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=^J, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, rmir=\ER, rmul=\E&d@, smir=\EQ, - smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub, - -# From: Ville Sulko , 05 Aug 1996 -hp2|hpex2|hewlett-packard extended capabilities newer version, - am, da, db, mir, xhp, - cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, xmc#0, - bel=^G, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, - il1=\EL, ind=^J, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, - kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ, - kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET, - krmir=\ER, ktbc=\E3, meml=\El, memu=\Em, - pfkey=\E&f%p1%dk%p2%l%dL%p2%s, - pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, - pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, - pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rmir=\ER, rmkx=\E&s0A, - rmln=\E&j@, rmso=\E&d@, rmul=\E&d@, - sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, - sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smln=\E&jB, smso=\E&dB, - smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, - -# HP 236 console -# From: -hp236|hp236 internal terminal emulator, - OTbs, am, - cols#80, lines#24, - clear=\EF, cnorm=\EDE, cub1=^H, - cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB, - dch1=\EJ, dl1=\EH, el=\EK, ich1=\EI, il1=\EG, rmso=\ECI, - sgr0=\ECI, smso=\EBI, - -# This works on a hp300 console running Utah 4.3 BSD -# From: Craig Leres -hp300h|HP Catseye console, - OTbs, am, da, db, mir, xhp, - cols#128, lines#51, lm#0, xmc#0, - bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, - if=/usr/share/tabset/stdcrt, il1=\EL, ind=^J, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, - rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, - smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3, - vpa=\E&a%p1%dY, -# From: Greg Couch -hp9837|hp98720|hp98721|HP 9000/300 workstations, - OTbs, am, da, db, mir, xhp, - cols#128, it#8, lines#46, lm#0, - bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, - il1=\EL, ind=^J, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU, - kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@, - sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD, - tbc=\E3, vpa=\E&a%p1%dY, -# HP 9845 desktop computer from BRL -# (hp9845: removed unknown capability :gu: -- esr) -hp9845|HP 9845, - OTbs, am, da, db, eo, mir, xhp, - cols#80, lines#21, - OTbc=\ED, clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM, - ed=\EJ, el=\EK, if=/usr/share/tabset/std, il1=\EL, - rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB, -# From: Charles A. Finnell of MITRE , developed 07SEP90 -# (hp98550: replaced /usr/share/tabset/9837 with std because ,; -# added empty to avoid warnings re / --esr) -hp98550|hp98550a|HP 9000 Series 300 color console, - OTbs, am, da, db, mir, xhp, - cols#128, it#8, lines#49, lm#0, - acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR, - clear=\EH\EJ, cnorm=\E*dQ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, - if=/usr/share/tabset/std, il1=\EL, ind=^J, invis=\E&ds, - kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep, - kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, - khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF, - knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, rev=\E&dJ, - rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smso=\E&dJ, - smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, -# From: Victor Duchovni -# (hp700-wy: removed obsolete ":nl=^J:"; -# replaced /usr/share/tabset/hp700-wy with std because , -- esr) -hp700-wy|HP700/41 emulating wyse30, - OTbs, am, bw, mir, msgr, - cols#80, it#8, lines#24, xmc#1, - cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET$<10/>, home=^^, ht=^I, hts=\E1, - if=/usr/share/tabset/stdcrt, il1=\EE$<0.7*/>, - is1=\E~"\EC\Er\E(\EG0\003\E`9\E`1, kbs=\177, kcbt=\EI, - kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, ked=\EY, - kel=\ET, khome=^^, khts=\EI, kich1=\Eq, krmir=\Er, ll=^^^K, - ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>, - sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>, - smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c, -hp70092|hp70092a|hp70092A|HP 700/92, - am, da, db, xhp, - cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, - acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA, - bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, - cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, - dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I, - hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, - kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ, - kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET, - krmir=\ER, ktbc=\E3, rev=\E&dB, ri=\ET, rmacs=^O, rmir=\ER, - rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB, - smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, - -bobcat|sbobcat|HP 9000 model 300 console, - am, da, db, mir, xhp, - cols#128, it#8, lines#47, xmc#0, - cbt=\Ei, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\E&a%p1%dy%p2%dC$<6/>, cuu1=\EA, dch1=\EP, - dl1=\EM$<10*/>, ed=\EJ, el=\EK, hpa=\E&a%p1%dC$<6/>, ht=^I, - il1=\EL$<10*/>, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=^M^J, rmir=\ER, - rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ, - smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>, -gator-t|HP 9000 model 237 emulating extra-tall AAA, - lines#94, use=gator, -gator|HP 9000 model 237 emulating AAA, - bw, km, mir, ul, - cols#128, it#8, lines#47, - bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, - 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, ed=\E[J, el=\E[K, home=\E[H, 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=^J, nel=^M^J, - 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, -gator-52|HP 9000 model 237 emulating VT52, - cols#128, lines#47, use=vt52, -gator-52t|HP 9000 model 237 emulating extra-tall VT52, - lines#94, use=gator-52, - -#### Honeywell-Bull -# -# From: Michael Haardt 11 Jan 93 -# - -# Honeywell Bull terminal. Its cursor and function keys send single -# control characters and it has standout/underline glitch. Most programs -# do not like these features/bugs. Visual bell is realized by flashing the -# "keyboard locked" LED. -dku7003-dumb|Honeywell Bull DKU 7003 dumb mode, - cols#80, lines#25, - clear=^]^_, cr=^M, cub1=^Y, cud1=^K, cuf1=^X, - cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, ed=^_, el=\E[K, - flash=\E[2h\E[2l, home=^], ht=^I, ind=^J, kbs=^H, kcub1=^Y, - kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=^M^J, -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, - -#### Lear-Siegler (adm) -# -# These guys are long since out of the terminals business, but -# in 1995 many current terminals still have an adm type as one of their -# emulations (usually their stupidest, and usually labeled adm3, though -# these `adm3' emulations normally have adm3a+ capabilities). -# -# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a -# `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator') -# was being held to ground would trigger a send of the top line on the screen. -# A quick fix might be to drop back to a cheesy 4-wire cable with pin 22 -# hanging in the air. (Thanks to Eric Fischer, , -# for clearing up this point.) - -adm1a|adm1|lsi adm1a, - am, - cols#80, lines#24, - bel=^G, clear=\E;$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^, - ind=^J, -adm2|lsi adm2, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=^J, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, -# (adm3: removed obsolete ":ma=^K^P:" -- esr) -adm3|lsi adm3, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, ind=^J, -# The following ADM-3A switch settings are assumed for normal operation: -# SPACE U/L_DISP CLR_SCRN 24_LINE -# CUR_CTL LC_EN AUTO_NL FDX -# Other switches may be set for operator convenience or communication -# requirements. I recommend -# DISABLE_KB_LOCK LOCAL_OFF 103 202_OFF -# ETX_OFF EOT_OFF -# Most of these terminals required an option ROM to support lower case display. -# Open the case and look at the motherboard; if you see an open 24-pin DIP -# socket, you may be out of luck. -# -# (adm3a: some capabilities merged in from BRl entry -- esr) -adm3a|lsi adm3a, - OTbs, am, - cols#80, lines#24, - OTma=^K^P, OTnl=^J, bel=^G, clear=\032$<1/>, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, rs2=^N, -adm3a+|adm3a plus, - kbs=^H, use=adm3a, -# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr) -adm5|lsi adm5, - xmc#1, - bel=^G, cr=^M, cud1=^J, ed=\EY, el=\ET, kbs=^H, khome=^^, - rmso=\EG, smso=\EG, use=adm3a+, -# A lot of terminals other than adm11s use these. Wherever you see -# use=adm+sgr with some of its capabilities disabled, try the -# disabled ones. They may well work but not have been documented or -# expressed in the using entry. We'd like to cook up an but the -# / sequences of the using entries vary too much. -adm+sgr|adm style highlight capabilities, - invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0, - smso=\EG4, smul=\EG8, -# LSI ADM-11 from George William Hartwig, Jr. via BRL -# Status line additions from Stephen J. Muir -# from . could also -# be ^Z, according to his entry. -# (adm11: =\EG4 was obviously erroneous because it also said -# =\EG4. Looking at other ADMs confirms this -- esr) -adm11|LSI ADM-11, - OTbs, am, hs, - OTkn#8, cols#80, lines#24, - OTnl=^J, bel=^G, blink=\EG2, clear=\E*, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, khome=^^, nel=^M^J, tsl=\EF\E), - use=adm+sgr, -# From: Andrew Scott Beals -# Corrected by Olaf Siebert , 11 May 1995 -# Supervisor mode info by Ari Wuolle, , 27 Aug 1996 -# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :". This formerly had -# =\Eq but that looked wrong; this is from Dave Yost -# via BRL. That entry asserted , but I've left that out because -# neither earlier nor later ADMSs have it -- esr) -# -# You will need to get into the supervisor setup before you can set -# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should -# see a lot more setup options. -# -# While in supervisor setup you can also use following codes: -# -# Ctrl-P Personality character selections (configure for example what -# arrow keys send, if I recall correctly) -# Ctrl-T tabs 1-80 use left&right to move and up to set and -# Ctrl-V tabs 81-158 down to clear tab. Shift-Ctrl-M sets right margin at cursor -# Ctrl-B Binary setup (probably not needed. I think that everything can -# be set using normal setup) -# Ctrl-A Answerback mode (enter answerback message) -# Ctrl-U User friendly mode (normal setup) -# Ctrl-D Defaults entire setup and function keys from EPROM tables -# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds. -# Ctrl-R Reads both setup and functions keys from NVM. -# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status -# -# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to -# RTS/CTS used nowadays with virtually every modem and computer. 19200 -# bps works fine with hardware flow control. -# -# The following null-modem cable should fix this and enable you to use -# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also -# set ADM-12+ for DTR handshaking from supervisor setup. -# -# PC Serial ADM-12+ -# -------- ------- -# 2 - 3 -# 3 - 2 -# 4 - 5 -# 5 - 20 -# 6,8 - 4 -# 7 - 7 -# 20 - 6,8 -# -adm12|lsi adm12, - OTbs, OTpt, am, mir, - OTug#1, cols#80, it#8, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, - is2=\E0 \E1 \E1 \E1 \E1 \E1 \E1 \E1 \E1, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, - kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, - kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, smir=\Eq, tbc=\E0, - use=adm+sgr, -# (adm20: removed obsolete ":kn#7:" -- esr) -adm20|lear siegler adm20, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cuf1=^L, - cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, ich1=\EQ, il1=\EE, - kf1=^A, kf2=^B, kf3=^W, kf4=^D, kf5=^E, kf6=^X, kf7=^Z, rmso=\E(, - sgr0=\E(, smso=\E), -adm21|lear siegler adm21, - xmc#1, - bel=^G, cr=^M, cud1=^J, dch1=\EW, dl1=30*\ER, ed=\EY, el=\ET, - ich1=\EQ, il1=30*\EE, ind=^J, invis@, kbs=^H, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, use=adm+sgr, - use=adm3a, -# (adm22: ":em=:" was an obvious typo for ":ei=:"; also, -# removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :"; -# removed bogus-looking \200 from before . -- esr) -adm22|lsi adm22, - OTbs, am, - cols#80, lines#24, - bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, home=^^, ht=\Ei, ich1=\EQ, il1=\EE, - is2=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0\0\0\0\0, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, khome=^^, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, - lf6=F6, lf7=F7, rmso=\E(, sgr0=\E(, smso=\E), -# ADM 31 DIP Switches -# -# This information comes from two versions of the manual for the -# Lear-Siegler ADM 31. -# -# Main board: -# rear of case -# +-||||-------------------------------------+ -# + S1S2 ||S + -# + ||3 + -# + + -# + ||S + -# + ||4 + -# + + -# + + -# + + -# + + -# + + -# +-+ +-+ -# + + -# + S5 S6 S7 + -# + == == == + -# +----------------------------------------------+ -# front of case (keyboard) -# -# S1 - Data Rate - Modem -# S2 - Data Rate - Printer -# ------------------------ -# Data Rate Setting -# ------------------- -# 50 0 0 0 0 -# 75 1 0 0 0 -# 110 0 1 0 0 -# 134.5 1 1 0 0 -# 150 0 0 1 0 -# 300 1 0 1 0 -# 600 0 1 1 0 -# 1200 1 1 1 0 -# 1800 0 0 0 1 -# 2000 1 0 0 1 -# 2400 0 1 0 1 -# 3600 1 1 0 1 -# 4800 0 0 1 1 -# 7200 1 0 1 1 -# 9600 0 1 1 1 -# x 1 1 1 1 -# -# S3 - Interface/Printer/Attributes -# --------------------------------- -# Printer Busy Control -# sw1 sw2 sw3 -# --------------- -# off off off Busy not active, CD disabled -# off off on Busy not active, CD enabled -# off on off Busy active on J5-20, CD disabled -# on off off Busy active on J5-19, CD disabled - Factory Set. -# on off on Busy active on J5-19, CD enabled -# -# sw4 Used in conjuction with S4 for comm interface control - Fact 0 -# -# sw5 Secondary Channel Control (Hardware implementation only) - Fact 0 -# -# sw6 ON enables printer BUSY active LOW - Factory Setting -# OFF enables printer BUSY active HIGH - If set to this, ADM31 senses -# -# sw7 ON - steady cursor - Factory Setting -# OFF - blinking cursor -# -# sw8 ON causes selected attribute character to be displayed -# OFF causes SPACE to be displayed instead - Factory Setting -# -# S4 - Interface -# -------------- -# Modem Interface -# S3 S4 S4 S4 S4 -# sw4 sw1 sw2 sw3 sw4 -# --------------------------- -# OFF ON OFF ON OFF Enable RS-232C interface, Direct Connect and -# Current Loop disabled - Factory Setting -# ON ON OFF ON OFF Enable Current Loop interface, Direct Connect -# disabled -# OFF OFF ON OFF ON Enable Direct Connect interface, RS-232C and -# Current Loop Disabled -# -# sw5 ON disables dot stretching mode - Factory Setting -# OFF enables dot stretching mode -# sw6 ON enables blanking function -# OFF enables underline function - Factory Setting -# sw7 ON causes NULLS to be displayed as NULLS -# OFF causes NULLS to be displayed as SPACES - Factory Setting -# -# S5 - Word Structure -# ------------------- -# sw1 ON enables BREAK key - Factory Setting -# OFF disables BREAK key -# sw2 ON selects 50Hz monitor refresh rate -# OFF selects 60Hz monitor refresh rate - Factory Setting -# -# Modem Port Selection -# sw3 sw4 sw5 -# --------------- -# ON ON ON Selects 7 DATA bits, even parity, 2 STOP bits -# OFF ON ON Selects 7 DATA bits, odd parity, 2 STOP bits -# ON OFF ON Selects 7 DATA bits, even parity, 1 STOP bit - Factory Set. -# OFF OFF ON Selects 7 DATA bits, odd parity, 1 STOP bit -# ON ON OFF Selects 8 DATA bits, no parity, 2 STOP bits -# OFF ON OFF Selects 8 DATA bits, no parity, 1 STOP bit -# ON OFF OFF Selects 8 DATA bits, even parity, 1 STOP bit -# OFF OFF OFF Selects 8 DATA bits, odd parity, 1 STOP bit -# -# sw6 ON sends bit 8 a 1 (mark) -# OFF sends bit 8 as 0 (space) - Factory Setting -# sw7 ON selects Block Mode -# OFF selects Conversation Mode - Factory Setting -# sw8 ON selects Full Duplex operation -# OFF selects Half Duplex operation - Factory Setting -# -# S6 - Printer -# ------------ -# sw1, sw2, sw6, sw7 Reserved - Factory 0 -# -# Printer Port Selection -# same as Modem above, bit 8 (when 8 DATA bits) is always = 0 -# -# sw8 ON enables Printer Port -# OFF disables Printer Port - Factory Setting -# -# S7 - Polling Address -# -------------------- -# sw1-7 Establish ASCII character which designates terminal polling address -# ON = logic 0 -# OFF = logic 1 - Factory Setting -# sw8 ON enables Polling Option -# OFF disables Polling Option - Factory Setting -# -# -# On some older adm31s, S4 does not exist, and S5-sw6 is not defined. -# -# This adm31 entry uses underline as the standout mode. -# If the adm31 gives you trouble with standout mode, check the DIP switch in -# position 6, bank @c11, 25% from back end of the circuit board. Should be -# OFF. If there is no such switch, you have an old adm31 and must use oadm31. -# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr) -adm31|lsi adm31 with sw6 set for underline mode, - OTbs, am, mir, - cols#80, lines#24, - bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=^J, is2=\Eu\E0, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, - kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, - kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, rmso=\EG0, - rmul=\EG0, sgr0=\EG0, smir=\Eq, smso=\EG1, smul=\EG1, -adm31-old|o31|old adm31, - rmul@, smso=\EG4, smul@, use=adm31, -# LSI ADM-36 from Col. George L. Sicherman via BRL -adm36|LSI ADM36, - OTbs, OTpt, - OTkn#4, - if=/usr/share/tabset/vt100, - is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l, - use=vt100, -# (adm42: removed obsolete ":ma=^K^P:" -- esr) -adm42|lsi adm42, - OTbs, am, - cols#80, lines#24, - bel=^G, cbt=\EI, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I, - il1=\EE$<270>, ind=^J, invis@, ip=$<6*>, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, khome=^^, pad=\177, rmir=\Er, rmul@, - smir=\Eq, smul@, use=adm+sgr, -# The following termcap for the Lear Siegler ADM-42 leaves the -# "system line" at the bottom of the screen blank (for those who -# find it distracting otherwise) -adm42-ns|lsi adm-42 with no system line, - cbt=\EI\EF \011, clear=\E;\EF \011, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011, - dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011, - el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011, - smir=\Eq\EF \011, use=adm42, -# ADM 1178 terminal -- rather like an ADM-42. Manual is dated March 1 1985. -# The insert mode of this terminal is commented out because it's broken for our -# purposes in that it will shift the position of every character on the page, -# not just the cursor line! -# From: Michael Driscoll 10 July 1996 -adm1178|1178|lsi adm1178, - am, - cols#80, lines#24, xmc#1, - bel=^G, bold=\E(, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, - home=^^, ht=^I, il1=\EE, ind=^J, ip=$<6*/>, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, pad=\177, rev=\EG4, rmso=\EG0, rmul=\EG0, - sgr0=\E), smso=\EG4, smul=\EG1, - -#### Prime -# -# Yes, Prime made terminals. These entries were posted by Kevin J. Cummings -# on 14 Dec 1992 and lightly edited by esr. -# Prime merged with ComputerVision in the late 1980s; you can reach them at: -# -# ComputerVision Services -# 500 Old Connecticut Path -# Framingham, Mass. -# - -# Standout mode is dim reverse-video. -pt100|pt200|wren|fenix|prime pt100/pt200, - am, bw, mir, msgr, - cols#80, it#8, lines#24, - cbt=\E[Z, clear=\E?, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA, - cuu1=\EM, 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=^J, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=^M^J, - rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, - smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q, - smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m, -pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode, - cols#132, - cup=\E[%i%p1%d;%p2%dH, use=pt100, -pt250|Prime PT250, - rmso@, smso@, use=pt100, -pt250w|Prime PT250 in 132-column mode, - rmso@, smso@, use=pt100w, - -#### Qume (qvt) -# -# Qume, Inc. -# 3475-A North 1st Street -# San Jose CA 95134 -# Vox: (800)-457-4447 -# Fax: (408)-473-1510 -# Net: josed@techsupp.wyse.com (Jose D'Oliveira) -# -# Qume was bought by Wyse, but still (as of early 1995) has its own support -# group and production division. -# -# Discontinued Qume models: -# -# The qvt101 and qvt102 listed here are long obsolete; so is the qvt101+ -# built to replace them, and a qvt119+ which was a 101+ with available wide -# mode (132 columns). There was a qvt103 which added vt100/vt131 emulations -# and an ANSI-compatible qvt203 that replaced it. Qume started producing -# ANSI-compatible terminals with the qvt323 and qvt61. -# -# Current Qume models (as of February 1995): -# -# All current Qume terminals have ANSI-compatible operation modes. -# Qume is still producing the qvt62, which features emulations for other -# popular lines such as ADDS, and dual-host capabilities. The qvt82 is -# designed for use as a SCO ANSI terminal. The qvt70 is a color terminal -# with many emulations including Wyse370, Wyse 325, etc. Their newest -# model is the qvt520, which is vt420-compatible. -# -# There are some ancient printing Qume terminals under `Daisy Wheel Printers' -# -# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its -# setup mode. Shift-s should be a configuration save to NVRAM. - -qvt101|qvt108|qume qvt 101 and QVT 108, - xmc#1, use=qvt101+, - -# This used to have but no or . The BSD termcap -# file had . I've done the safe thing and yanked -# both. The is from BSD, which also claimed bold=\E( and dim=\E). -# What seems to be going on here is that this entry was designed so that -# the normal highlight is bold and standout is dim plus something else -# (reverse-video maybe? But then, are there two sequences?) -qvt101+|qvt101p|qume qvt 101 PLUS product, - am, bw, hs, ul, - cols#80, lines#24, xmc#0, - bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\EY, el=\ET, - flash=\Eb$<200>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE, ind=^J, invis@, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdl1=\ER, ked=\EY, kel=\ET, - kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, - kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, - khome=^^, kich1=\EQ, kil1=\EE, mc4=\EA, mc5=\E@, rmso=\E(, - smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, -qvt102|qume qvt 102, - cnorm=\E., use=qvt101, -# (qvt103: added / based on init string -- esr) -qvt103|qume qvt 103, - am, xenl, xon, - cols#80, it#8, lines#24, vt#3, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - hts=\EH, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, - 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, sc=\E7, - 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, -qvt103-w|qume qvt103 132 cols, - cols#132, lines#24, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103, -qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals, - am, hs, mir, msgr, - cols#80, lines#24, xmc#0, - bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, - el=\Et, flash=\En0$<200>\En1, fsl=^M, home=^^, ht=^I, - hts=\E1, il1=\EE, ind=^J, is2=\EDF\EC\EG0\Er\E(\E%EX, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8, - tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, -qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines, - lines#25, use=qvt119+, -qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode, - cols#132, - is2=\EDF\EC\EG0\Er\E(\E%\EX\En4, use=qvt119+, -qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25, - lines#25, use=qvt119+, -qvt203|qvt203+|qume qvt 203 Plus, - dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, - ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~, - kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, - kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103, -qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video), - cols#132, lines#24, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203, -# -# Since a command is present for enabling 25 data lines, -# a specific terminfo entry may be generated for the 203. -# If one is desired for the QVT 119 PLUS then 25 lines must -# be selected in the status line (setup line 9). -# -qvt203-25|QVT 203 PLUS with 25 by 80 column mode, - cols#80, lines#25, - is2=\E[=40h\E[?3l, use=qvt203, -qvt203-25-w|QVT 203 PLUS with 25 by 132 columns, - cols#132, lines#25, - rs2=\E[?3h\E[=40h, use=qvt203, - -#### Televideo (tvi) -# -# TeleVideo -# 550 East Brokaw Road -# PO Box 49048 95161 -# San Jose CA 95112 -# Vox: (408)-954-8333 -# Fax: (408)-954-0623 -# -# -# These require incredible amounts of padding. -# -# All of these terminals (912 to 970 and the tvipt) are discontinued. Newer -# Televideo terminals are ANSI and PC-ANSI compatible. - -tvi803|televideo 803, - clear=\E*$<10>, use=tvi950, - -# Vanilla tvi910 -- W. Gish 10/29/86 -# Switch settings are: -# -# S1 1 2 3 4 -# D D D D 9600 -# D D D U 50 -# D D U D 75 -# D D U U 110 -# D U D D 135 -# D U D U 150 -# D U U D 300 -# D U U U 600 -# U D D D 1200 -# U D D U 1800 -# U D U D 2400 -# U D U U 3600 -# U U D D 4800 -# U U D U 7200 -# U U U D 9600 -# U U U U 19200 -# -# S1 5 6 7 8 -# U D X D 7N1 (data bits, parity, stop bits) (X means ignored) -# U D X U 7N2 -# U U D D 7O1 -# U U D U 7O2 -# U U U D 7E1 -# U U U U 7E2 -# D D X D 8N1 -# D D X U 8N2 -# D U D D 8O1 -# D U U U 8E2 -# -# S1 9 Autowrap -# U on -# D off -# -# S1 10 CR/LF -# U do CR/LF when CR received -# D do CR when CR received -# -# S2 1 Mode -# U block -# D conversational -# -# S2 2 Duplex -# U half -# D full -# -# S2 3 Hertz -# U 50 -# D 60 -# -# S2 4 Edit mode -# U local -# D duplex -# -# S2 5 Cursor type -# U underline -# D block -# -# S2 6 Cursor down key -# U send ^J -# D send ^V -# -# S2 7 Screen colour -# U green on black -# D black on green -# -# S2 8 DSR status (pin 6) -# U disconnected -# D connected -# -# S2 9 DCD status (pin 8) -# U disconnected -# D duplex -# -# S2 10 DTR status (pin 20) -# U disconnected -# D duplex -# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added , , , -# , , , , from SCO entry -- esr) -tvi910|televideo model 910, - OTbs, am, msgr, - cols#80, it#8, lines#24, xmc#1, - bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET, - home=\E=\001\001, hpa=\E]%p1%{32}%+%c, ht=^I, - if=/usr/share/tabset/stdcrt, ind=^J, invis@, kbs=^H, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r, kf1=^A@\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - vpa=\E[%p1%{32}%+%c, use=adm+sgr, -# From: Alan R. Rogers -# as subsequently hacked over by someone at SCO -# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr) -# -# Here are the 910+'s DIP switches (U = up, D = down, X = don't care): -# -# S1 1 2 3 4: -# D D D D 9600 D D D U 50 D D U D 75 D D U U 110 -# D U D D 135 D U D U 150 D U U D 300 D U U U 600 -# U D D D 1200 U D D U 1800 U D U D 2400 U D U U 3600 -# U U D D 4800 U U D U 7200 U U U D 9600 U U U U 19200 -# -# S1 5 6 7 8: -# U D X D 7N1 U D X U 7N2 U U D D 7O1 U U D U 7O2 -# U U U D 7E1 U U U U 7E2 D D X D 8N1 D D X U 8N2 -# D U D D 8O1 D U U U 8E2 -# -# S1 9 Autowrap (U = on, D = off) -# S1 10 CR/LF (U = CR/LF on CR received, D = CR on CR received) -# S2 1 Mode (U = block, D = conversational) -# S2 2 Duplex (U = half, D = full) -# S2 3 Hertz (U = 50, D = 60) -# S2 4 Edit mode (U = local, D = duplex) -# S2 5 Cursor type (U = underline, D = block) -# S2 6 Cursor down key (U = send ^J, D = send ^V) -# S2 7 Screen colour (U = green on black, D = black on green) -# S2 8 DSR status (pin 6) (U = disconnected, D = connected) -# S2 9 DCD status (pin 8) (U = disconnected, D = connected) -# S2 10 DTR status (pin 20) (U = disconnected, D = connected) -# -tvi910+|televideo 910+, - dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>, - kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, - kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, - ll=\E=7\s, use=tvi910, - -# (tvi912: removed obsolete ":ma=^K^P^L :", added and -# from BRL entry -- esr) -tvi912|tvi914|tvi920|old televideo 912/914/920, - OTbs, OTpt, am, msgr, - cols#80, it#8, lines#24, xmc#1, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER$<33*>, ed=\Ey, el=\ET, flash=\Eb$<50/>\Ed, home=^^, - ht=^I, hts=\E1, ich1=\EQ, if=/usr/share/tabset/stdcrt, - il1=\EE$<33*>, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, - kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, - kf9=^AH\r, khome=^^, rmso=\Ek, rmul=\Em, smso=\Ej, smul=\El, - tbc=\E3, -# We got some new tvi912c terminals that act really weird on the regular -# termcap, so one of our gurus worked this up. Seems that cursor -# addressing is broken. -tvi912cc|tvi912 at cowell college, - cup@, use=tvi912c, - -# tvi{912,920}[bc] - TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C -# From: Benjamin C. W. Sittler -# -# Someone has put a scanned copy of the manual online at: -# http://vt100.net/televideo/912b-om/ -# -# These terminals were produced ca. 1979, and had a 12" monochrome -# screen, supported 75-9600 baud (no handshaking), monochrome, 7-bit -# ASCII, and were generally similar to adm3a but with attributes -# (including some with magic cookies), fancy half-duplex mode, and -# different bugs. -# -# Some operations reqire truly incredible amounts of padding. The -# insert_line () and delete_line () operations in particular -# are so slow as to be nearly unusable. -# -# There may or may not have been a separate, earlier series of 912/920 -# terminals (without the "B" and "C" suffix); I have never seen one, -# and the manual only describes the "B" and "C" series. The 912 and 920 -# are quite distinct from the 914 and 924, which were much nicer non- -# magic-cookie terminals similar to the 950. -# -# This is a new description for the following TeleVideo terminals, -# distinguished chiefly by their keyboards: -# -# TVI-912B - very odd layout, no function keys (84 keys) -# TVI-920B - typewriter layout, no function keys (103 keys) -# TVI-912C - very odd layout, function keys F1-F11 (82 keys) -# TVI-920C - typewriter layout, function keys F1-F11 (101 keys) -# -# To choose a setting for the TERM variable, start with the model: -# -# Model || base name -# ----------||----------- -# TVI-912B || tvi912b -# TVI-912C || tvi912c -# TVI-920B || tvi920b -# TVI-920C || tvi920c -# -# Then add a suffix from the following table describing installed options -# and how you'd like to use the terminal: -# -# Use Video | Second | Visual | Magic | Page || feature -# Attributes | Page | Bell | Cookies | Print || suffix -# ------------|--------|--------|---------|-------||--------- -# No | No | N/A | N/A | No || -unk -# No | No | N/A | N/A | Yes || -p -# No | Yes | No | N/A | No || -2p-unk -# No | Yes | No | N/A | Yes || -2p-p -# No | Yes | Yes | N/A | No || -vb-unk -# No | Yes | Yes | N/A | Yes || -vb-p -# Yes | No | N/A | No | N/A || -# Yes | No | N/A | Yes | N/A || -mc -# Yes | Yes | No | No | N/A || -2p -# Yes | Yes | No | Yes | N/A || -2p-mc -# Yes | Yes | Yes | No | N/A || -vb -# Yes | Yes | Yes | Yes | N/A || -vb-mc -# -# So e.g. a model 920 C with second page memory option, visual bell -# and no magic cookies would be tvi920c-vb; a model 912 B without the -# second page memory option and using magic cookies would be -# tvi912b-mc -# -# PADDING -# -# At 9600 baud, the terminal is prone to overflow its input buffer -# during complex operations (insert/delete -# character/line/screen/page), and it does not signal this over the -# RS232 cable. The typical symptom of an overrun is that the terminal -# starts beeping, and output becomes garbled. -# -# The padding delays in this terminfo were derived using tack(1) -# running on a Linux box connected to a TVI-920C with a later-model -# (A49C1-style) ROM running at 9600 baud, so your mileage may -# vary. The numbers below seem to give the terminal enough time so -# that it doesn't overflow its input buffer and start losing -# characters. -# -# KEYS -# -# If you want to use the FUNCT key on a tvi912[bc], use the -# corresponding tvi920[bc] terminfo with FUNCT + ... equivalents from -# the following table (these also work on the 920 series): -# -# Unshifted Function Keys: -# -# Key | capname|| Equivalent -# -----|--------||------------ -# F1 | || FUNCT + @ -# F2 | || FUNCT + A -# F3 | || FUNCT + B -# F4 | || FUNCT + C -# F5 | || FUNCT + D -# F6 | || FUNCT + E -# F7 | || FUNCT + F -# F8 | || FUNCT + G -# F9 | || FUNCT + H -# F10 | || FUNCT + I -# F11 | || FUNCT + J -# -# Shifted Function Keys: -# -# SHIFT + Key | capname|| Equivalent -# -------------|--------||------------ -# SHIFT + F1 | || FUNCT + ` -# SHIFT + F2 | || FUNCT + a -# SHIFT + F3 | || FUNCT + b -# SHIFT + F4 | || FUNCT + c -# SHIFT + F5 | || FUNCT + d -# SHIFT + F6 | || FUNCT + e -# SHIFT + F7 | || FUNCT + f -# SHIFT + F8 | || FUNCT + g -# SHIFT + F9 | || FUNCT + h -# SHIFT + F10 | || FUNCT + i -# SHIFT + F11 | || FUNCT + j -# -# PORTS AND SWITCH SETTINGS -# -# Here are the switch settings for the TVI-912B/TVI-920B and -# TVI-912C/TVI-920C: -# -# S1 (Line), and S3 (Printer) baud rates -- put one, and only one, switch down: -# 2: 9600 3: 4800 4: 2400 5: 1200 -# 6: 600 7: 300 8: 150 9: 75 -# 10: 110 -# -# S2 UART/Terminal options: -# Up Down -# 1: Not used Not allowed -# 2: Alternate character set Standard character set -# 3: Full duplex Half duplex -# 4: 50 Hz refresh 60 Hz refresh -# 5: No parity Send parity -# 6: 2 stop bits 1 stop bit -# 7: 8 data bits 7 data bits -# 8: Not used Not allowed on Rev E or lower -# 9: Even parity Odd parity -# 10: Steady cursor Blinking cursor -# (On Rev E or lower, use W25 instead of switch 10.) -# -# S5 UART/Terminal options: -# Open Closed -# 1: P3-6 Not connected DSR received on P3-6 -# 2: P3-8 Not connected DCD received on P3-8 -# -# 3 Open, 4 Open: P3-20 Not connected -# 3 Open, 4 Closed: DTR on when terminal is on -# 3 Closed, 4 Open: DTR is connected to RTS -# 3 Closed, 4 Closed: Not allowed -# -# 5 Closed: HDX printer (hardware control) Rev. K with extension port off, -# all data transmitted out of the modem port (P3) will also be -# transmitted out of the printer port (P4). -# -# 6 Open, 7 Open: Not allowed -# 6 Open, 7 Closed: 20ma current loop input -# 6 Closed, 7 Open: RS232 input -# 6 Closed, 7 Closed: Not allowed -# -# Jumper options: -# If the jumper is installed, the effect will occur (the next time the terminal -# is switched on). -# -# S4/W31: Enables automatic LF upon receipt of CR from -# remote or keyboard. -# S4/W32: Enables transmission of EOT at the end of Send. If not -# installed, a carriage return is sent. -# S4/W33: Disables automatic carriage return in column 80. -# S4/W34: Selects Page Print Mode as initial condition. If not -# installed, Extension Mode is selected. -# -# NON-STANDARD CAPABILITIES -# -# Sending or returns a cursor position report in the format -# YX\r, where Y and X are as in . This format is described in -# and , but it's not clear how one should write an -# appropriate scanf string, since we need to subtract %' ' from the -# character after reading it. The capability is used by tack(1) -# to synchronize during padding tests, and seems to work for that -# purpose. -# -# This description also includes the obsolete termcap capabilities -# has_hardware_tabs () and backspaces_with_bs (). -# -# FEATURES NOT YET DESCRIBED IN THIS TERMINFO -# -# The FUNCT modifier actually works with every normal key by sending -# ^AX\r, where X is the sequence normally sent by that key. This is a -# sort of meta key not currently describable in terminfo. -# -# There are quite a few other keys (especially on the 920 models,) but -# they are for the most part only useful in block mode. -# -# These terminals have lots of forms manipulation features, mainly -# useful in block mode, including "clear X to nulls" (vs. "clear X to -# spaces"; nulls are sentinels for "send X" operations); "send X" -# operations for uploading all or part of the screen; and block-mode -# editing keys (they don't send escape sequences, but manipulate video -# memory directly). Block mode is used for local editing, and protect -# mode (in conjunction with the "write protect" attribute, -# a.k.a. half-intensity outside of protect mode) is used to control -# which parts of the screen are edited/sent/printed (by ). -# -# There are at least two major families of ROM, "early" and -# A49B1/A49C1; the major difference seems to be that the latter ROMs -# support a few extra escape sequences for manipulating the off-screen -# memory page, and for sending whole pages back to the host (mainly -# useful in block mode.) The descriptions in this file don't use any -# of those sequences: set cursor position including page (\E-PYX, -# where P is \s for page 0 and ! for page 1 [actually only the LSB of -# P is taken into account, so e.g. 0 and 1 work too,] and Y and X are -# as in ); read cursor position (\E/), which is analogous to -# and returns PYX\r, where P is \s for page 0 or ! for page 1, and YX -# are as in , and some "send page" features mainly useful for -# forms manipulation. -# -# The keyboard enable (\E") and disable (\E#) sequences are unused, -# except that a terminal reset () enables the keyboard. -# -# Auto-flip mode (\Ev) is likely faster than the scrolling mode (\Ew) -# enabled in , but auto-flip is very jarring so we don't use it. -# -# BUGS -# -# At least up to the A49B1 and A49C1 ROMs, there are no \Eb and \Ed -# sequences (I infer that in some TeleVideo terminal they may invert -# and uninvert the display) so the sequence given here is a -# cheesy page-flip instead. -# -# The back_tab () sequence (\EI) doesn't work according to -# tack(1), so it is not included in the descriptions below. -# -# It's not clear whether auto_left_margin () flag should be set -# for these terminals; tack says yes, so it is set here, but this -# differs from other descriptions I've seen. -# -# Extension print mode () echoes all characters to the printer -# port [in addition to displaying them] except for the page print mode -# sequence (); this is a slight violation of the terminfo -# definition for but I don't expect it to cause problems. We -# reset to page print mode in since it may have been enabled -# accidentally. -# -# The descriptions with plus signs (+) are building blocks. - -tvi912b-unk|tvi912c-unk|TeleVideo TVI-912B or TVI-912C (no attributes), - OTbs, OTpt, am, bw, - cols#80, it#8, lines#24, - bel=^G, clear=\032$<50>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%' '%+%c%p2%' '%+%c, cuu1=^K, dch1=\EW$<30>, - dl1=\ER$<1*>$<100>, ed=\Ey$<2*>$<10>, el=\ET$<15>, - home=^^, ht=^I, hts=\E1, ich1=\EQ$<30>, - if=/usr/share/tabset/stdcrt, il1=\EE$<1*>$<100>, - ind=\n$<10>, is2=\Ew\EA\E'\E"\E(, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, kdch1=\177, kent=^M, khome=^^, mc4=\EA, - mc5=\E@, rs1=\Ek\010\Em\010\Eq\032, tbc=\E3, u6=%c%c\r, - u7=\E?, u8=%c%c\r, u9=\E?, - -# This isn't included in the basic capabilities because it is -# typically unusable in combination with the full range of video -# attributes, since the magic cookie attributes turn into ASCII -# control characters, and the half-intensity ("protected") attribute -# converts all affected characters to spaces. - -tvi912b+printer|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C page print support, - mc0=\EP, - -# This uses half-intensity mode () for standout (), and -# exposes no other attributes (half-intensity is the only attribute -# that does not generate a magic cookie.) - -tvi912b+dim|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C half-intensity attribute support, - msgr, - dim=\E), rmso=\E(, sgr=\E%?%p1%p5%|%t)%e(%;, sgr0=\E(, - smso=\E), - -# Full magic-cookie attribute support, with half-intensity reverse -# video for standout. Note that we add a space in the sequence -# to give a consistent magic-cookie count. Also note that uses -# backspacing (in the TVI-supported order) to apply all requested -# attributes with only a single magic cookie. - -tvi912b+mc|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C full magic-cookie attribute support, - xmc#1, - blink=\E\^, dim=\E)\s, invis=\E_, rev=\Ej, rmso=\E(\Ek, - rmul=\Em, - sgr=\E%?%p1%p5%|%t)%e(%; \010\E%?%p1%p3%|%tj%ek%;\010\E%?%p2%tl%em%;\010\E%?%p7%t_%e%?%p4%t\^%eq%;%;, - sgr0=\E(\Ek\010\Em\010\Eq, smso=\E)\Ej, smul=\El, - -# This uses the second page memory option to save & restore screen -# contents. If your terminal is missing the option, this description -# should still work, but that has not been tested. - -tvi912b+2p|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option support, - flash=\EK$<100>\EK, rmcup=\032$<50>\EK\E=7\s, - smcup=\EK\032$<50>\E(\Ek\010\Em\010\Eq\032$<50>, - -# This simulates flashing by briefly toggling to the other page -# (kludge!) - -tvi912b+vb|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option "visible bell" support, - bel=\EK$<100>\EK, use=tvi912b+2p, - -# Function keys ( .. are shifted .. ) - -tvi920b+fn|TeleVideo TVI-920B and TVI-920C function key support, - kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^A`\r, kf13=^Aa\r, - kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, kf17=^Ae\r, kf18=^Af\r, - kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, kf21=^Ai\r, kf22=^Aj\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, - -# Combinations of the basic building blocks - -tvi912b-2p-unk|tvi912c-2p-unk|tvi912b-unk-2p|tvi912c-unk-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes), - use=tvi912b+2p, use=tvi912b-unk, - -tvi912b-vb-unk|tvi912c-vb-unk|tvi912b-unk-vb|tvi912c-unk-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes), - use=tvi912b+vb, use=tvi912b-unk, - -tvi912b-p|tvi912c-p|TeleVideo TVI-912B or TVI-912C (no attributes; page print), - use=tvi912b+printer, use=tvi912b-unk, - -tvi912b-2p-p|tvi912c-2p-p|tvi912b-p-2p|tvi912c-p-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes; page print), - use=tvi912b+2p, use=tvi912b+printer, use=tvi912b-unk, - -tvi912b-vb-p|tvi912c-vb-p|tvi912b-p-vb|tvi912c-p-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes; page print), - use=tvi912b+vb, use=tvi912b+printer, use=tvi912b-unk, - -tvi912b-2p|tvi912c-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; half-intensity attribute), - use=tvi912b+2p, use=tvi912b+dim, use=tvi912b-unk, - -tvi912b-2p-mc|tvi912c-2p-mc|tvi912b-mc-2p|tvi912c-mc-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; magic cookies), - use=tvi912b+2p, use=tvi912b+mc, use=tvi912b-unk, - -tvi912b-vb|tvi912c-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; half-intensity attribute), - use=tvi912b+vb, use=tvi912b+dim, use=tvi912b-unk, - -tvi912b-vb-mc|tvi912c-vb-mc|tvi912b-mc-vb|tvi912c-mc-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; magic cookies), - use=tvi912b+vb, use=tvi912b+mc, use=tvi912b-unk, - -tvi912b|tvi912c|TeleVideo TVI-912B or TVI-912C (half-intensity attribute), - use=tvi912b+dim, use=tvi912b-unk, - -tvi912b-mc|tvi912c-mc|TeleVideo TVI-912B or TVI-912C (magic cookies), - use=tvi912b+mc, use=tvi912b-unk, - -tvi920b-unk|tvi920c-unk|TeleVideo TVI-920B or TVI-920C (no attributes), - use=tvi920b+fn, use=tvi912b-unk, - -tvi920b-2p-unk|tvi920c-2p-unk|tvi920b-unk-2p|tvi920c-unk-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b-unk, - -tvi920b-vb-unk|tvi920c-vb-unk|tvi920b-unk-vb|tvi920c-unk-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b-unk, - -tvi920b-p|tvi920c-p|TeleVideo TVI-920B or TVI-920C (no attributes; page print), - use=tvi920b+fn, use=tvi912b+printer, use=tvi912b-unk, - -tvi920b-2p-p|tvi920c-2p-p|tvi920b-p-2p|tvi920c-p-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes; page print), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+printer, - use=tvi912b-unk, - -tvi920b-vb-p|tvi920c-vb-p|tvi920b-p-vb|tvi920c-p-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes; page print), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+printer, - use=tvi912b-unk, - -tvi920b-2p|tvi920c-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; half-intensity attribute), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+dim, - use=tvi912b-unk, - -tvi920b-2p-mc|tvi920c-2p-mc|tvi920b-mc-2p|tvi920c-mc-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; magic cookies), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+mc, - use=tvi912b-unk, - -tvi920b-vb|tvi920c-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; half-intensity attribute), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+dim, - use=tvi912b-unk, - -tvi920b-vb-mc|tvi920c-vb-mc|tvi920b-mc-vb|tvi920c-mc-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; magic cookies), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+mc, - use=tvi912b-unk, - -tvi920b|tvi920c|TeleVideo TVI-920B or TVI-920C (half-intensity attribute), - use=tvi920b+fn, use=tvi912b+dim, use=tvi912b-unk, - -tvi920b-mc|tvi920c-mc|TeleVideo TVI-920B or TVI-920C (magic cookies), - use=tvi920b+fn, use=tvi912b+mc, use=tvi912b-unk, - -# Televideo 921 and variants -# From: Tim Theisen 22 Sept 1995 -# (tvi921: removed :ko=bt: before translation, I see no backtab cap; -# also added empty to suppress tic warning -- esr) -tvi921|televideo model 921 with sysline same as page & real vi function, - OTbs, OTpt, am, hs, xenl, xhp, - cols#80, lines#24, xmc#0, - acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K, - cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY, - el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ, - if=/usr/share/tabset/stdcrt, il1=\EE, ind=^J, invis@, - is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H, - kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>, - ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=^M^J, rmacs=\E%%, - rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr, -# without the beeper -# (tvi92B: removed :ko=bt: before translation, I see no backtab cap; -# also added empty to suppress tic warning -- esr) -tvi92B|televideo model 921 with sysline same as page & real vi function & no beeper, - am, hs, xenl, xhp, - cols#80, lines#24, xmc#0, - acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K, - cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY, - el=\ET, flash=\Eb$<200/>\Ed, fsl=\Eg, home=^^, ht=^I, - ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=^J, - invis@, is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, - kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, - kdl1=\ER$<1*/>, ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, - nel=^M^J, rmacs=\E%%, smacs=\E$, tsl=\Ef\EG0, use=adm+sgr, -# (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr) -tvi92D|tvi92B with DTR instead of XON/XOFF & better padding, - dl1=\ER$<2*/>, il1=\EE$<2*/>, - is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>, - kil1=\EE$<2*/>, use=tvi92B, - -# (tvi924: This used to have , . I put the new strings -# in from a BSD termcap file because it looks like they do something the -# old ones skip -- esr) -tvi924|televideo tvi924, - am, bw, hs, in, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, xmc#0, - bel=^G, blink=\EG2, cbt=\EI, civis=\E.0, clear=\E*0, - cnorm=\E.3, cr=^M, csr=\E_%p1%{32}%+%c%p2%{32}%+%c, - cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\E.1, - dch1=\EW, dl1=\ER, dsl=\Es0\Ef\031, ed=\Ey, el=\Et, - flash=\Eb$<200>\Ed, fsl=\031\Es1, home=^^, ht=^I, hts=\E1, - ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=^J, - invis@, is1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0, - kbs=^H, kclr=\E*0, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, - kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A@\r, kf1=^AA\r, - kf10=^AJ\r, kf11=^AK\r, kf12=^AL\r, kf13=^AM\r, kf14=^AN\r, - kf15=^AO\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, kf5=^AE\r, - kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^, - kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4, - lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, - pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef, - use=adm+sgr, - -# TVI925 DIP switches. In each of these, D = Down and U = Up, -# -# Here are the settings for the external (baud) switches (S1): -# -# Position Baud -# 7 8 9 10 [Printer] -# 1 2 3 4 [Main RS232] -# ----------------------------------------------------- -# D D D D 9600 -# D D D U 50 -# D D U D 75 -# D D U U 110 -# D U D D 135 -# D U D U 150 -# D U U D 300 -# D U U U 600 -# U D D D 1200 -# U D D U 1800 -# U D U D 2400 -# U D U U 3600 -# U U D D 4800 -# U U D U 7200 -# U U U D 9600 -# U U U U 19200 -# -# -# Settings for word length and stop-bits (S1) -# -# Position Description -# 5 6 -# --------------------------- -# U - 7-bit word -# D - 8-bit word -# - U 2 stop bits -# - D 1 stop bit -# -# -# S2 (external) settings -# -# Position Up Dn Description -# -------------------------------------------- -# 1 X Local edit -# X Duplex edit (transmit editing keys) -# -------------------------------------------- -# 2 X 912/920 emulation -# X 925 -# -------------------------------------------- -# 3 X -# 4 X No parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Odd parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Even parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Mark parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Space parity -# 5 X -# -------------------------------------------- -# 6 X White on black display -# X Black on white display -# -------------------------------------------- -# 7 X Half Duplex -# 8 X -# -------------------------------------------- -# 7 X Full Duplex -# 8 X -# -------------------------------------------- -# 7 X Block mode -# 8 X -# -------------------------------------------- -# 9 X 50 Hz -# X 60 Hz -# -------------------------------------------- -# 10 X CR/LF (Auto LF) -# X CR only -# -# S3 (internal switch) settings: -# -# Position Up Dn Description -# -------------------------------------------- -# 1 X Keyclick off -# X Keyclick on -# -------------------------------------------- -# 2 X English -# 3 X -# -------------------------------------------- -# 2 X German -# 3 X -# -------------------------------------------- -# 2 X French -# 3 X -# -------------------------------------------- -# 2 X Spanish -# 3 X -# -------------------------------------------- -# 4 X Blinking block cursor -# 5 X -# -------------------------------------------- -# 4 X Blinking underline cursor -# 5 X -# -------------------------------------------- -# 4 X Steady block cursor -# 5 X -# -------------------------------------------- -# 4 X Steady underline cursor -# 5 X -# -------------------------------------------- -# 6 X Screen blanking timer (ON) -# X Screen blanking timer (OFF) -# -------------------------------------------- -# 7 X Page attributes -# X Line attributes -# -------------------------------------------- -# 8 X DCD disconnected -# X DCD connected -# -------------------------------------------- -# 9 X DSR disconnected -# X DSR connected -# -------------------------------------------- -# 10 X DTR Disconnected -# X DTR connected -# -------------------------------------------- -# -# (tvi925: BSD has . I got and from there -- esr) -tvi925|televideo 925, - OTbs, am, bw, hs, ul, - cols#80, lines#24, xmc#1, - bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eh, ed=\EY, el=\ET, - flash=\Eb$<200>\Ed, fsl=^M\Eg, home=^^, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE, ind=^J, invis@, is2=\El\E", kbs=^H, kclr=^Z, - kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, - ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, - kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, - kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3, - tsl=\Eh\Ef, use=adm+sgr, -# TeleVideo 925 from Mitch Bradley via BRL -# to avoid "magic cookie" standout glitch: -tvi925-hi|TeleVideo Model 925 with half intensity standout mode, - xmc@, - kbs=^H, kcub1=^H, kcud1=^J, rmso=\E(, smso=\E), use=tvi925, - -# From: Todd Litwin 28 May 1993 -# Originally Tim Curry, Univ. of Central Fla., 5/21/82 -# for additional capabilities, -# The following tvi descriptions from B:pjphar and virus!mike -# is for all 950s. It sets the following attributes: -# full duplex (\EDF) write protect off (\E() -# conversation mode (\EC) graphics mode off (\E%) -# white on black (\Ed) auto page flip off (\Ew) -# turn off status line (\Eg) clear status line (\Ef\r) -# normal video (\E0) monitor mode off (\EX or \Eu) -# edit mode (\Er) load blank char to space (\Ee\040) -# line edit mode (\EO) enable buffer control (^O) -# protect mode off (\E\047) duplex edit keys (\El) -# program unshifted send key to send line all (\E016) -# program shifted send key to send line unprotected (\E004) -# set the following to nulls: -# field delimiter (\Ex0\200\200) -# line delimiter (\Ex1\200\200) -# start-protected field delimiter (\Ex2\200\200) -# end-protected field delimiter (\Ex3\200\200) -# set end of text delimiter to carriage return/null (\Ex4\r\200) -# -# TVI 950 Switch Setting Reference Charts -# -# TABLE 1: -# -# S1 1 2 3 4 5 6 7 8 9 10 -# +-----------------------+-----+-----+-----------------------+ -# | Computer Baud Rate |Data |Stop | Printer Baud Rate | -# | |Bits |Bits | | -# +------+-----------------------+-----+-----+-----------------------+ -# | Up | See | 7 | 2 | See | -# +------+-----------------------+-----+-----+-----------------------+ -# | Down | TABLE 2 | 8 | 1 | TABLE 2 | -# +------+-----------------------+-----+-----+-----------------------+ -# -# -# S2 1 2 3 4 5 6 7 8 9 10 -# +-----+-----+-----------------+-----+-----------+-----+-----+ -# |Edit |Cursr| Parity |Video|Transmiss'n| Hz |Click| -# +------+-----+-----+-----------------+-----+-----------+-----+-----+ -# | Up | Dplx|Blink| See |GonBk| See | 60 | Off | -# +------+-----+-----+-----------------+-----+-----------+-----+-----+ -# | Down |Local|St'dy| TABLE 3 |BkonG| CHART | 50 | On | -# +------+-----+-----+-----------------+-----+-----------+-----+-----+ -# -# TABLE 2: -# -# +-----------+-----+-----+-----+-----+-----------+ -# | Display | 1 | 2 | 3 | 4 | Baud | -# +-----------+-----+-----+-----+-----+ | -# | Printer | 7 | 8 | 9 | 10 | Rate | -# +-----------+-----+-----+-----+-----+-----------+ -# | D | D | D | D | 9600 | -# | U | D | D | D | 50 | -# | D | U | D | D | 75 | -# | U | U | D | D | 110 | -# | D | D | U | D | 135 | -# | U | D | U | D | 150 | -# | D | U | U | D | 300 | -# | U | U | U | D | 600 | -# | D | D | D | U | 1200 | -# | U | D | D | U | 1800 | -# | D | U | D | U | 2400 | -# | U | U | D | U | 3600 | -# | D | D | U | U | 4800 | -# | U | D | U | U | 7200 | -# | D | U | U | U | 9600 | -# | U | U | U | U | 19200 | -# +-----+-----+-----+-----+-----------+ -# -# TABLE 3: -# +-----+-----+-----+-----------+ -# | 3 | 4 | 5 | Parity | -# +-----+-----+-----+-----------+ -# | X | X | D | None | -# | D | D | U | Odd | -# | D | U | U | Even | -# | U | D | U | Mark | -# | U | U | U | Space | -# +-----+-----+-----+-----------+ -# X = don't care -# -# CHART: -# +-----+-----+-----------------+ -# | 7 | 8 | Communication | -# +-----+-----+-----------------+ -# | D | D | Half Duplex | -# | D | U | Full Duplex | -# | U | D | Block | -# | U | U | Local | -# +-----+-----+-----------------+ -# -# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:". -# I also inserted and ; the :ko: string indicated that -# should be present and all tvi native modes use the same string for this. -# Finally, note that BSD has cud1=^V. -- esr) -tvi950|televideo 950, - OTbs, am, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, xmc#1, - acsc=b\011c\014d\re\ni\013, bel=^G, cbt=\EI, clear=\E*, - cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, el=\Et, flash=\Eb$<200/>\Ed, - fsl=^M, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=^J, - invis@, - is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\Ef\r, - kbs=^H, kcbt=\EI, kclr=\E*, kcub1=^H, kcud1=^V, kcuf1=^L, - kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A0\r, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, ri=\Ej, rmacs=^X, - rmir=\Er, smacs=^U, smir=\Eq, tbc=\E3, tsl=\Eg\Ef, - use=adm+sgr, -# -# is for 950 with two pages adds the following: -# set 48 line page (\E\\2) -# place cursor at page 0, line 24, column 1 (\E-07 ) -# set local (no send) edit keys (\Ek) -# -# two page 950 adds the following: -# when entering ex, set 24 line page (\E\\1) -# when exiting ex, reset 48 line page (\E\\2) -# place cursor at 0,24,1 (\E-07 ) -# set duplex (send) edit keys (\El) when entering vi -# set local (no send) edit keys (\Ek) when exiting vi -# -tvi950-2p|televideo950 w/2 pages, - is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07 \011, - rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, -# -# is for 950 with four pages adds the following: -# set 96 line page (\E\\3) -# place cursor at page 0, line 24, column 1 (\E-07 ) -# -# four page 950 adds the following: -# when entering ex, set 24 line page (\E\\1) -# when exiting ex, reset 96 line page (\E\\3) -# place cursor at 0,24,1 (\E-07 ) -# -tvi950-4p|televideo950 w/4 pages, - is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07 \011, - rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, -# -# for reverse video 950 changes the following: -# set reverse video (\Ed) -# -# set vb accordingly (\Ed ...delay... \Eb) -# -tvi950-rv|televideo950 rev video, - flash=\Ed$<200/>\Eb, - is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0, - use=tvi950, - -# tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv -tvi950-rv-2p|televideo950 rev video w/2 pages, - flash=\Ed$<200/>\Eb, - is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07\s, - rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, - -# tvi950-rv uses the appropriate entries from 950-4p and 950-rv -tvi950-rv-4p|televideo950 rev video w/4 pages, - flash=\Ed$<200/>\Eb, - is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07\s, - rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, -# From: Andreas Stolcke -# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H"; -# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in -# the :rs: string, inserted the implied by the termcap :ko: string. Note -# the :ko: string had :cl: in it, which means that one of the original -# , had to be wrong; set because that's what -# the 950 has. Finally, corrected the string to match the 950 and what -# ko implies -- esr) -# If the BSD termcap file was right, would -# also work. -tvi955|televideo 955, - OTbs, mc5i, msgr@, - it#8, xmc@, - acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2, - civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH, - cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1, - is2=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El, kctab=\E2, khts=\E1, - knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%%, - rmam=\E[=7l, rmxon=^N, - rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\0\E0p\E4\0\Ef\r, - sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O, - use=tvi950, -tvi955-w|955-w|televideo955 w/132 cols, - cols#132, - is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955, -# use half-intensity as normal mode, full intensity as -tvi955-hb|955-hb|televideo955 half-bright, - bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El, - sgr0=\EG0\E[=5h, use=tvi955, -# From: Humberto Appleton , 880521 UT Austin -# (tvi970: removed ":sg#0:"; removed =\E[m, =\E[m; -# added ////// from BRL. -# According to BRL we could have =\E>, =\E= but I'm not sure what -# it does to the function keys. I deduced /. -# also added empty to suppress tic warning, -- esr) -tvi970|televideo 970, - OTbs, OTpt, am, da, db, mir, msgr, - 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, - is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, 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, -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, - use=tvi970, -tvi970-2p|televideo 970 with using 2 pages of memory, - rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q, - use=tvi970, -# Works with vi and rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 chars -# per line (rather than 40), Esc K chooses the normal character set. Not sure -# padding is needed, but adapted from the tvi920c termcap. The and -# strings are klutzy, but at least use no screen space. -# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:". I wish we knew , -# its absence means =\Ev isn't safe to use. -- esr) -# From: Gene Rochlin 9/19/84. -# The ////, and caps are from BRL, which says: -# F1 and F2 should be programmed as ^A and ^B; required for UNIFY. -tvipt|televideo personal terminal, - OTbs, am, - cols#80, lines#24, - cbt=\EI, clear=^Z, cub1=^H, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>, - ed=\EY, el=\ET, home=^^, if=/usr/share/tabset/stdcrt, - il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, kf0=^A, kf1=^B, khome=^^, mc4=^T, mc5=^R, - rmso=\EF, rmul=\EF, smso=\EG1@A\EH, smul=\EG1B@\EH, -# From: Nathan Peterson , 03 Sep 1996 -tvi9065|televideo 9065, - am, bw, chts, hs, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lh#1, lines#25, lm#0, lw#9, ma#4, nlab#8, vt#0, - wnum#0, wsl#30, - acsc='r0_jhkglfmeniopqksqtmulvownxj, bel=^G, - blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z, - cnorm=\E.3, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA, - cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp, - dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY, - el=\ET, flash=\Eb$<15>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1, - ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt, - il=\E[%p1%dL, il1=\EE, ind=^J, indn=\E[%p1%dS, invis=\EG1, - ip=$<3>, - is1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er, - is2=\EF2\EG0\E\\L, is3=\E<\E[=4l\E[=8h, kHOM=\E\s\s\s, - kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, - kdch1=\EW, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, ll=\E[25;1H, - mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=^M^J, - pfkey=\E|%p1%{48}%+%c3%p2%s\031, - pfloc=\E|%p1%{48}%+%c2%p2%s\031, - pfx=\E|%p1%{48}%+%c1%p2%s\031, - pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&, - rep=\E[%p2%db%p1%c, rev=\EG4, - rf=/usr/share/tabset/stdcrt, ri=\Ej, rin=\E[%p1%dT, - rmacs=\E%%, rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H, - rmdc=\0, rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0, - rmxon=^N, rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l, - rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=13.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[=21l\E[=23l\E[=3l\E_40\E_50\En\Ew\Ee \Ex0\0\0\Ex1\0\0\Ex2\0\0\Ex3\0\0\Ex4\0\0\E1, - rs3=\E[=19h\E.3\E9\E0O\0\0\0\0\0\E0o\0\0\0\0\0\E0J\177\0\0\0\0, - sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%;%?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p9%t\E$%e\E%%%;, - sgr0=\EG0, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er, - smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O, - tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, - -#### Visual (vi) -# -# In September 1993, Visual Technology of Westboro, Massachusetts, -# merged with White Pine Software of Nashua, New Hampshire. -# -# White Pine Software may be contacted at +1 603/886-9050. -# Or visit White Pine on the World Wide Web at URL http://www.wpine.com. -# - -# Visual 50 from Beau Shekita, BTL-Whippany -# Recently I hacked together the following termcap for Visual -# Technology's Visual 50 terminal. It's a slight modification of -# the vt52 termcap. -# It's intended to run when the Visual 50 is in vt52 emulation mode -# (I know what you're thinking; if it's emulating a vt52, then why -# another termcap? Well, it turns out that the Visual 50 can handle -# and db(?) among other things, which the vt52 can't) -# The termcap works OK for the most part. The only problem is on -# character inserts. The whole line gets painfully redrawn for each -# character typed. Any suggestions? -# Beau's entry is combined with the vi50 entry from University of Wisconsin. -# Note especially the function. - are really l4-l6 in -# disguise; - are really l1-l3. -vi50|visual 50, - OTbs, OTpt, am, da, db, msgr, - cols#80, it#8, lines#24, - OTnl=^J, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=^M, cub1=^H, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH, - ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV, - kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH, - nel=^M^J, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES, -# this one was BSD & SCO's vi50 -vi50adm|visual 50 in adm3a mode, - am, msgr, - cols#80, it#8, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM, - ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=^J, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, - rmso=\ET, smso=\EU, -# From: Jeff Siegal -vi55|Visual 55, - OTbs, am, mir, msgr, - cols#80, it#8, lines#24, - clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H, - cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, - il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EI, rmir=\Eb, rmso=\ET, - smir=\Ea, smso=\EU, - -# Visual 200 from BRL -# The following switch settings are assumed for normal operation: -# FULL_DUPLEX SCROLL CR -# AUTO_NEW_LINE_ON VISUAL_200_EMULATION_MODE -# Other switches may be set for operator convenience or communication -# requirements. -# Character insertion is kludged in order to get around the "beep" misfeature. -# (This cap is commented out because / is more efficient -- esr) -# Supposedly "4*" delays should be used for , , , , -# and strings, but we seem to get along fine without them. -vi200|visual 200, - OTbs, OTpt, am, mir, msgr, - OTkn#10, cols#80, it#8, lines#24, - acsc=, bel=^G, cbt=\Ez, clear=\Ev, cnorm=\Ec, cr=^M, cub1=^H, - cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, cvvis=\Ed, dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey, - el=\Ex, home=\EH, ht=^I, hts=\E1, il1=\EL, ind=^J, invis=\Ea, - kbs=^H, kclr=\Ev, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p, - kf1=\E?q, kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, - kf7=\E?w, kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei, - kil1=\EL, krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI, - rmacs=\EG, rmkx=\E>, rmso=\E3, - rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX, sgr0=\E3\Eb, smacs=\EF, - smkx=\E=, smso=\E4, tbc=\Eg, -# The older Visuals didn't come with function keys. This entry uses -# and so that the keypad keys can be used as function keys. -# If your version of vi doesn't support function keys you may want -# to use vi200-f. -vi200-f|visual 200 no function keys, - is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, kf0=\E?p, kf1=\E?q, - kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w, - kf8=\E?x, kf9=\E?y, rmkx=\E>, rmso@, smkx=\E=, smso@, - use=vi200, -vi200-rv|visual 200 reverse video, - cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200, - -# the function keys are programmable but we don't reprogram them to their -# default values with because programming them is very verbose. maybe -# an initialization file should be made for the 300 and they could be stuck -# in it. -# (vi300: added / based on init string -- esr) -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=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - il1=\E[L, ind=^J, - 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, -# some of the vi300s have older firmware that has the command -# sequence for setting editing extent reversed. -vi300-old|visual 300 with old firmware (set edit extent reversed), - is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s, - use=vi300, - -# Visual 500 prototype entry from University of Wisconsin. -# The best place to look for the escape sequences is page A1-1 of the -# Visual 500 manual. The initialization sequence given here may be -# overkill, but it does leave out some of the initializations which can -# be done with the menus in set-up mode. -# The :xp: line below is so that emacs can understand the padding requirements -# of this slow terminal. :xp: is 10 time the padding factor. -# (vi500: removed unknown :xp#4: termcap; -# also added empty to suppress tic warning -- esr) -vi500|visual 500, - am, mir, msgr, - cols#80, it#8, lines#33, - acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=^M, - csr=\E(%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - dch1=\EO$<3*/>, dl1=\EM$<3*/>, ed=\Ey$<3*/>, - el=\Ex$<16/>, home=\EH, ht=\011$<8/>, il1=\EL\Ex$<3*/>, - ind=^J, - is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - khome=\EH, nel=^M^J, rmacs=^O, rmir=\Ej, rmso=\E^G, - rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D, - -# The visual 550 is a visual 300 with tektronix graphics, -# and with 33 lines. clear screen is modified here to -# also clear the graphics. -vi550|visual 550 ansi x3.64, - lines#33, - clear=\030\E[H\E[2J, use=vi300, - -vi603|visual603|visual 603, - hs, mir, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, - csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, il1=\E[L, - 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, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=\EP2~, - use=vt100, - -#### Wyse (wy) -# -# Wyse Technology -# 3471 North First Street -# San Jose, CA 95134 -# Vox: (408)-473-1200 -# Fax: (408) 473-1222 -# Web: http://www.wyse.com -# -# Wyse sales can be reached by phone at 1-800-GET-WYSE. Tech support is at -# (800)-800-WYSE (option 5 gets you a human). There's a Web page at the -# obvious address, . They keep terminfo entries at -# . -# -# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995. -# They now own the Qume and Amdek brands, too. So these are the people to -# talk with about all Link, Qume, and Amdek terminals. -# -# These entries include a few small fixes. -# I canceled the bel capacities in the vb entries. -# I made two trivial syntax fixes in the wyse30 entry. -# I made some entries relative to adm+sgr. -# -# -# Note: The wyse75, wyse85, and wyse99 have been discontinued. - -# Although the Wyse 30 can support more than one attribute -# it requires magic cookies to do so. Many applications do not -# function well with magic cookies. The following terminfo uses -# the protect mode to support one attribute (dim) without cookies. -# If more than one attribute is needed then the wy30-mc terminfo -# should be used. -# -wy30|wyse30|Wyse 30, - am, bw, hs, mc5i, mir, msgr, xon, - cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI, - civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dch1=\EW$<10>, dim=\E`7\E), dl1=\ER$<1>, - dsl=\EF\r, ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9, - fsl=^M, home=^^, ht=\011$<1>, hts=\E1, il1=\EE$<2>, - ind=\n$<2>, ip=$<2>, is2=\E'\E(\E\^3\E`9\016\024, - kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, krpl=\Er, ll=^^^K, mc0=\EP, mc4=^T, - mc5=^X, nel=^M^J, pfx=\Ez%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>, - rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, - sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, - smso=\E`7\E), tbc=\E0, tsl=\EF, -# -# This terminal description uses the non-hidden attribute mode -# (with magic cookie). -# -# (wy30-mc: added to suppress tic warning --esr) -wy30-mc|wyse30-mc|wyse 30 with magic cookies, - msgr@, - ma@, xmc#1, - blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003, - rmcup=\EG0, rmso=\EG0, - sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, - smso=\EG4, use=wy30, use=adm+sgr, -# The mandatory pause used by does not work with -# older versions of terminfo. If you see this effect then -# unset xon and delete the / from the delay. -# i.e. change $<100/> to $<100> -wy30-vb|wyse30-vb|wyse 30 visible bell, - bel@, use=wy30, -# -# The Wyse 50 can support one attribute (e.g. Dim, Inverse, -# Normal) without magic cookies by using the protect mode. -# The following description uses this feature, but when more -# than one attribute is put on the screen at once, all attributes -# will be changed to be the same as the last attribute given. -# The Wyse 50 can support more attributes when used with magic -# cookies. The wy50-mc terminal description uses magic cookies -# to correctly handle multiple attributes on a screen. -# -wy50|wyse50|Wyse 50, - am, bw, hs, mc5i, mir, msgr, xon, - cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI, - civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dch1=\EW$<1>, dim=\E`7\E), dl1=\ER, dsl=\EF\r, - ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M, - home=^^, ht=^I, hts=\E1, il1=\EE, ind=\n$<2>, ip=$<1>, - is1=\E`\:\E`9$<30>, is2=\016\024\E'\E(, kHOM=\E{, kbs=^H, - kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, - kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, - kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, - ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, - pfx=\Ez%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E), - ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, - sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, - smso=\E`6\E), tbc=\E0, tsl=\EF, -# -# This terminal description uses the non-hidden attribute mode -# (with magic cookie). -# -# The mandatory pause used by flash does not work with some -# older versions of terminfo. If you see this effect then -# unset and delete the / from the delay. -# i.e. change $<100/> to $<100> -# (wy50-mc: added to suppress tic warning --esr) -wy50-mc|wyse50-mc|wyse 50 with magic cookies, - msgr@, - ma@, xmc#1, - blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4, - rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0, - sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, - smso=\EGt, use=wy50, use=adm+sgr, -wy50-vb|wyse50-vb|wyse 50 visible bell, - bel@, use=wy50, -wy50-w|wyse50-w|wyse 50 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, - use=wy50, -wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell, - bel@, use=wy50-w, - -# -# The Wyse 350 is a Wyse 50 with color. -# Unfortunately this means that it has magic cookies. -# The color attributes are designed to overlap the reverse, dim and -# underline attributes. This is nice for monochrome applications -# because you can make underline stuff green (or any other color) -# but for true color applications it's not so hot because you cannot -# mix color with reverse, dim or underline. -# To further complicate things one of the attributes must be -# black (either the foreground or the background). In reverse video -# the background changes color with black letters. In normal video -# the foreground changes colors on a black background. -# This terminfo uses some of the more advanced features of curses -# to display both color and blink. In the final analysis I am not -# sure that the wy350 runs better with this terminfo than it does -# with the wy50 terminfo (with user adjusted colors). -# -# The mandatory pause used by flash does not work with -# older versions of terminfo. If you see this effect then -# unset xon and delete the / from the delay. -# i.e. change $<100/> to $<100> -# -# Bug: The capability resets attributes. -wy350|wyse350|Wyse 350, - am, bw, hs, mc5i, mir, xon, - colors#8, cols#80, lh#1, lines#24, lw#8, ncv#55, nlab#8, pairs#8, - wsl#45, xmc#1, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, - cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<1>, - dim=\EGp, dl1=\ER, dsl=\EF\r, ed=\EY$<20>, el=\ET, - flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1, - il1=\EE, ind=\n$<2>, ip=$<1>, is1=\E`\:\E`9$<30>, - is2=\016\024\E'\E(, is3=\E%?, kHOM=\E{, kbs=^H, kcbt=\EI, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, - ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, - kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, - ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, oc=\E%?, op=\EG0, - pfx=\Ez%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\EG0\E), ri=\Ej, - rmacs=\EG0\EH\003, rmir=\Er, rmln=\EA11, setb=, - setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e%p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e%p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%{48}%+%c, - sgr=%{0}%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;%PA\EG%?%gC%t%gC%e%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p5%t%{64}%|%;%;%gA%+%{48}%+%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\EG0\E(\EH\003%{0}%PA%{0}%PC, smacs=\EG0\EH\002, - smir=\Eq, smln=\EA10, tbc=\E0, tsl=\EF, use=adm+sgr, -wy350-vb|wyse350-vb|wyse 350 visible bell, - bel@, use=wy350, -wy350-w|wyse350-w|wyse 350 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, - use=wy350, -wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell, - bel@, use=wy350-w, -# -# This terminfo description is untested. -# The wyse100 emulates an adm31, so the adm31 entry should work. -# -wy100|wyse 100, - hs, mir, - cols#80, lines#24, xmc#1, - bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, dsl=\EA31, ed=\EY, el=\ET, fsl=^M, il1=\EE, ind=^J, - invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, - kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=\E{, - rmir=\Er, smir=\Eq, tsl=\EF, use=adm+sgr, -# -# The Wyse 120/150 has most of the features of the Wyse 60. -# This terminal does not need padding up to 9600 baud! -# should be set but the clear screen fails when in -# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear -# then set . -# -wy120|wyse120|wy150|wyse150|Wyse 120/150, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>, - dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>, - flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=\011$<1>, - hts=\E1, il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1, - is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, - mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, - rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11, - rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>, - rs3=\EwG\Ee($<100>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, - tbc=\E0, tsl=\EF, use=adm+sgr, -# -wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>, - rs2=\E`;$<70>, use=wy120, -# -wy120-25|wyse120-25|wy150-25|wyse150-25|wyse 120/150 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy120, -# -wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy120-w, -# -wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell, - bel@, use=wy120, -# -wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell, - bel@, use=wy120-w, -# -# The Wyse 60 is like the Wyse 50 but with more padding. -# The reset strings are slow and the pad times very depending -# on other parameters such as font loading. I have tried -# to follow the following outline: -# -# -> set personality -# -> set number of columns -# -> set number of lines -# -> select the proper font -# -> do the initialization -# -> set up display memory (2 pages) -# -# The Wyse 60's that have vt100 emulation are slower than the -# older Wyse 60's. This change happened mid-1987. -# The capabilities effected are -# -# The meta key is only half right. This terminal will return the -# high order bit set when you hit CTRL-function_key -# -# It may be useful to assign two function keys with the -# values \E=(\s look at old data in page 1 -# \E=W, look at bottom of page 1 -# where \s is a space ( ). -# -# Note: -# The Wyse 60 runs faster when the XON/XOFF -# handshake is turned off. -# -# (wy60: we use \E{ rather than ^^ for home (both are documented) to avoid -# a bug reported by Robert Dunn, -- esr) -wy60|wyse60|Wyse 60, - am, bw, hs, km, mc5i, mir, msgr, - cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<100>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW$<11>, dclk=\E`b, dim=\EGp, dl1=\ER$<5>, dsl=\EF\r, - ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M, - home=\E{, ht=\011$<1>, hts=\E1, il1=\EE$<4>, ind=\n$<5>, - ip=$<3>, is1=\EcB0\EcC1, - is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, - mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, - rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er, - rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>, - rs2=\EeG$<150>, rs3=\EwG\Ee($<200>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, - tbc=\E0, tsl=\EF, use=adm+sgr, -# -wy60-w|wyse60-w|wyse 60 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<16>, ip=$<5>, - rs2=\EeF$<150>\E`;$<150>, use=wy60, -# -wy60-25|wyse60-25|wyse 60 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy60, -wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy60-w, -# -wy60-42|wyse60-42|wyse 60 80-column 42-lines, - lines#42, - clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>, - dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>, - ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>, - ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60, -wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines, - cols#132, lw#7, nlab#16, wsl#97, - clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>, - dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>, - nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42, -# -wy60-43|wyse60-43|wyse 60 80-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy60-42, -wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy60-42-w, -# -wy60-vb|wyse60-vb|Wyse 60 visible bell, - bel@, use=wy60, -wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell, - bel@, use=wy60-w, - -# The Wyse-99GT looks at lot like the Wyse 60 except that it -# does not have the 42/43 line mode. In the Wyse-60 the "lines" -# setup parameter controls the number of lines on the screen. -# For the Wyse 99GT the "lines" setup parameter controls the -# number of lines in a page. The screen can display 25 lines max. -# The Wyse-99GT also has personalities for the VT220 and -# Tektronix 4014. But this has no bearing on the native mode. -# -# (msgr) should be set but the clear screen fails when in -# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear -# then set msgr, else use msgr@. -# -# u0 -> enter Tektronix mode -# u1 -> exit Tektronix mode -# -wy99gt|wyse99gt|Wyse 99gt, - msgr@, - clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>, - el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>, - il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@, - ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`\:$<150>, smcup=\Ew1, - u0=\E~>\E8, u1=\E[42h, use=wy60, -# -wy99gt-w|wyse99gt-w|wyse 99gt 132-column, - cols#132, lw#7, nlab#16, wsl#97, - clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>, - dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>, - use=wy99gt, -# -wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs2=\E`\:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt, -# -wy99gt-25-w|wyse99gt-25-w|wyse 99gt 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs2=\E`;$<150>, use=wy99gt-w, -# -wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell, - bel@, use=wy99gt, -# -wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell, - bel@, use=wy99gt-w, - -# Can't set tabs! Other bugs (ANSI mode only): -# - can't redefine function keys (anyway, key redefinition in ANSI mode -# is too much complex to be described); -# - meta key can't be described (the terminal forgets it when reset); -# The xon-xoff handshaking can't be disabled while in ansi personality, so -# emacs can't work at speed greater than 9600 baud. No padding is needed at -# this speed. -# dch1 has been commented out because it causes annoying glittering when -# vi deletes one character at the beginning of a line with tabs in it. -# dch makes sysgen(1M) have a horrible behaviour when deleting -# a screen and makes screen(1) behave badly, so it is disabled too. The nice -# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are -# not, so smir and rmir are commented out as well. -# From: Francesco Potorti` , 24 Aug 1998 -wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard), - am, km, mc5i, mir, msgr, xenl, - cols#80, it#8, lines#25, vt#3, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, 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, dl=\E[%p1%dM, dl1=\E[M, - 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@, il=\E[%p1%dL, - il1=\E[L, ind=\n$<1>, invis=\E[8m, - 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, - 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, - mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8, - rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m, - 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, - sc=\E7, - 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, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, - -# This is the american terminal. Here tabs work fine. -# From: Francesco Potorti` , 24 Aug 1998 -wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard), - hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, use=wy99-ansi, - -# This terminal (firmware version 02) has a lot of bugs: -# - can't set tabs; -# - other bugs in ANSI modes (see above). -# This description disables handshaking when using cup. This is because -# GNU emacs doesn't like Xon-Xoff handshaking. This means the terminal -# cannot be used at speeds greater than 9600 baud, because at greater -# speeds handshaking is needed even for character sending. If you use -# DTR handshaking, you can use even greater speeds. -# From: Francesco Potorti` , 24 Aug 1998 -wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard), - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, it#8, lines#25, wsl#46, - acsc='x+y.w_vi~j(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G, - blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032, - cnorm=\E`4\E`1, cr=^M, cub1=^H, cud1=\Ej, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r, - ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>, - flash=\E\^1$<30/>\E\^0, fsl=^M, home=^^, ht=^I, il1=\EE, - ind=^J, invis=\EG3, - is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024, - ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r, - kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r, - kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#, - nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed., - rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30, - rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024, - sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t%{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?%p9%t\EcE%e\EcD%;, - sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30, - smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF, - -# This is the american terminal. Here tabs work. -# From: Francesco Potorti` , 24 Aug 1998 -wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard), - hts=\E1, tbc=\E0, use=wy99f, - -# -# The Wyse 160 is combination of the WY-60 and the WY-99gt. -# The reset strings are slow and the pad times very depending -# on other parameters such as font loading. I have tried -# to follow the following outline: -# -# -> set personality -# -> set number of columns -# -> set number of lines -# -> select the proper font -# -> do the initialization -# -> set up display memory (2 pages) -# -# The display memory may be used for either text or graphics. -# When "Display Memory = Shared" the terminal will have more pages -# but garbage may be left on the screen when you switch from -# graphics to text. If "Display Memory = Unshared" then the -# text area will be only one page long. -# -# (wy160: we use \E{ rather than ^^ for home (both are documented) to avoid -# a bug reported by Robert Dunn, -- esr) -wy160|wyse160|Wyse 160, - am, bw, hs, km, mc5i, mir, msgr, - cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<30>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<5>, - dclk=\E`b, dim=\EGp, dl1=\ER$<1>, dsl=\EF\r, ed=\EY$<30>, - el=\ET$<5>, flash=\E`8$<100/>\E`9, fsl=^M, home=\E{, ht=^I, - hts=\E1, il1=\EE$<1>, ind=\n$<1>, ip=$<2>, is1=\EcB0\EcC1, - is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, - mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>, - rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er, - rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>, - rs2=\E`\:$<100>, rs3=\EwG\Ee($<140>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, - tbc=\E0, tsl=\EF, use=adm+sgr, -# -wy160-w|wyse160-w|wyse 160 132-column, - cols#132, lw#7, nlab#16, wsl#90, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<9>, - rs2=\EeF$<150>\E`;$<150>, use=wy160, -# -wy160-25|wyse160-25|wyse 160 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy160, -wy160-25-w|wyse160-25-w|wyse 160 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy160-w, -# -wy160-42|wyse160-42|wyse 160 80-column 42-lines, - lines#42, - clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>, - ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>, - rs3=\Ee*$<150>, use=wy160, -wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines, - cols#132, lw#7, nlab#16, wsl#90, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>, - rs2=\EeF$<150>\E`;$<150>, use=wy160-42, -# -wy160-43|wyse160-43|wyse 160 80-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy160-42, -wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy160-42-w, -# -wy160-vb|wyse160-vb|Wyse 160 visible bell, - bel@, use=wy160, -wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell, - bel@, use=wy160-w, -# -# The Wyse 75 is a vt100 lookalike without advanced video. -# -# The Wyse 75 can support one attribute (e.g. Dim, Inverse, -# Underline) without magic cookies. The following description -# uses this capability, but when more than one attribute is -# put on the screen at once, all attributes will be changed -# to be the same as the last attribute given. -# The Wyse 75 can support more attributes when used with magic -# cookies. The wy75-mc terminal description uses magic cookies -# to correctly handle multiple attributes on a screen. -# -wy75|wyse75|wyse 75, - am, hs, mc5i, mir, msgr, xenl, xon, - cols#80, lines#24, ma#1, pb#1201, wsl#78, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J$<30>, - cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr$<2>, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, 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\,\E[30l$<250>, fsl=^A, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - 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, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~, - kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i, - mc5=\E[5i, 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, - tbc=\E[3g, tsl=\E[>\,\001, use=vt220+keypad, -# -# This terminal description uses the non-hidden attribute mode -# (with magic cookie). -# -wy75-mc|wyse75-mc|wyse 75 with magic cookies, - msgr@, - ma@, xmc#1, - blink=\E[2p, dim=\E[1p, invis=\E[4p, is3=\E[m\E[p, - rev=\E[16p, rmacs=\E[0p\017, rmso=\E[0p, rmul=\E[0p, - sgr=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9%t\016%e\017%;, - sgr0=\E[0p\017, smacs=\E[0p\016, smso=\E[17p, smul=\E[8p, - use=wy75, -wy75-vb|wyse75-vb|wyse 75 with visible bell, - pb@, - bel@, use=wy75, -wy75-w|wyse75-w|wyse 75 in 132 column mode, - cols#132, wsl#130, - rs2=\E[35h\E[?3h$<80>, use=wy75, -wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns, - pb@, - bel@, use=wy75-w, -# -# Wyse 85 emulating a vt220 7 bit mode. -# 24 line screen with status line. -# -# The vt220 mode permits more function keys but it wipes out -# the escape key. I strongly recommend that be set to -# escape (esc). -# The terminal may have to be set for 8 data bits and 2 stop -# bits for the arrow keys to work. -# The Wyse 85 runs faster with XON/XOFF enabled. Also the -# and work best when XON/XOFF is set. and -# leave trash on the screen when used without XON/XOFF. -# -wy85|wyse85|wyse 85, - am, hs, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m, - dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l, - ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K, - enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>, - fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH, - ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>, - ind=\n$<3>, invis=\E[8m, 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, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, - mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>, - 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$<70>, - rs3=\E[?5l, 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, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+keypad, -# -# Wyse 85 with visual bell. -wy85-vb|wyse85-vb|wyse 85 with visible bell, - bel@, flash=\E[30h\E\,\E[30l$<300>, use=wy85, -# -# Wyse 85 in 132-column mode. -wy85-w|wyse85-w|wyse 85 in 132-column mode, - cols#132, wsl#132, - rs2=\E[35h\E[?3h$<70>, use=wy85, -# -# Wyse 85 in 132-column mode with visual bell. -wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns, - bel@, use=wy85-w, - -# From: Kevin Turner , 12 Jul 1998 -# This copes with an apparent firmware bug in the wy85. He writes: -# "What I did was change leave the terminal cursor keys set to Normal -# (instead of application), and change \E[ to \233 for all the keys in -# terminfo. At one point, I found some reference indicating that this -# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just -# me), but I can't find that and the server under my bookmark to "Wyse -# Technical" isn't responding. So there's the question of wether the wy85 -# terminfo should reflect the manufactuer's intended behaviour of the terminal -# or the actual." -wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode, - am, hs, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m, - dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l, - ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K, - enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>, - fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH, - ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>, - ind=\n$<3>, invis=\E[8m, 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, ka1=\EOw, ka3=\EOy, kb2=\EOu, - kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B, - kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM, - kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~, - kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~, - 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=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~, - kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, - mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>, - 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$<70>, - rs3=\E[?5l, 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, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[40h\E7\E[25;%i%p1%dH, -# -# Wyse 185 emulating a vt320 7 bit mode. -# -# This terminal always displays 25 lines. These lines may be used -# as 24 data lines and a terminal status line (top or bottom) or -# 25 data lines. The 48 and 50 line modes change the page size -# and not the number of lines on the screen. -# -# The Compose Character key can be used as a meta key if changed -# by set-up. -# -wy185|wyse185|wyse 185, - am, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - 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>, - dsl=\E7\E[99;0H\E[K\E8, ech=\E[%p1%dX, ed=\E[J$<40>, - el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[30h\E\,\E[30l$<100>, fsl=\E[1;24r\E8, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, hts=\EH, - ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>, - ind=\n$<2>, invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, - kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, - lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, - ri=\EM$<2>, rmacs=^O, 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, - 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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd, - use=vt220+keypad, -# -# Wyse 185 with 24 data lines and top status (terminal status) -wy185-24|wyse185-24|wyse 185 with 24 data lines, - hs@, - dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, - use=wy185, -# -# Wyse 185 with visual bell. -wy185-vb|wyse185-vb|wyse 185+flash, - bel@, use=wy185, -# -# Wyse 185 in 132-column mode. -wy185-w|wyse185-w|wyse 185 in 132-column mode, - cols#132, wsl#132, - dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, - ip=$<7>, rs2=\E[35h\E[?3h, use=wy185, -# -# Wyse 185 in 132-column mode with visual bell. -wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols, - bel@, use=wy185-w, - -# wy325 terminfo entries -# Done by Joe H. Davis 3-9-92 - -# lines 25 columns 80 -# -wy325|wyse325|Wyse epc, - am, bw, hs, mc5i, mir, - cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>, - dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>, - flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1, - il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1, - is2=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, - mc0=\EP, mc4=^T, mc5=\Ed#, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, - rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11, - rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>, - rs3=\EwG\Ee($<100>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, tbc=\E0, - tsl=\EF, use=adm+sgr, - -# -# lines 24 columns 80 vb -# -wy325-vb|wyse325-vb|wyse-325 with visual bell, - bel@, use=wy325, - -# -# lines 24 columns 132 -# -wy325-w|wyse325-w|wy325w-24|wyse-325 in wide mode, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>, - rs2=\E`;$<70>, use=wy325, -# -# lines 25 columns 80 -# -wy325-25|wyse325-25|wy325-80|wyse-325|wyse-325 25 lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325, -# -# lines 25 columns 132 -# -wy325-25w|wyse325-25w|wy325 132 columns, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, -# -# lines 25 columns 132 vb -# -wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video, - bel@, use=wy325-w, - -# -# lines 42 columns 80 -# -wy325-42|wyse325-42|wyse-325 42 lines, - lh@, lines#42, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325, -# -# lines 42 columns 132 -# -wy325-42w|wyse325-42w|wyse-325 42 lines wide mode, - lh@, lines#42, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, -# -# lines 42 columns 132 vb -# -wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell, - bel@, use=wy325-w, -# -# lines 43 columns 80 -# -wy325-43|wyse325-43|wyse-325 43 lines, - lh@, lines#43, lw@, nlab@, - pln@, use=wy325, -# -# lines 43 columns 132 -# -wy325-43w|wyse325-43w|wyse-325 43 lines wide mode, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, -# -# lines 43 columns 132 vb -# -wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell, - bel@, use=wy325-w, - -# Wyse 370 -- 24 line screen with status line. -# -# The terminal may have to be set for 8 data bits and 2 stop -# bits for the arrow keys to work. -# -# If you change keyboards the terminal will send different -# escape sequences. -# The following definition is for the basic terminal without -# function keys. -# -# -> enter Tektronix 4010/4014 mode -# -> exit Tektronix 4010/4014 mode -# -> enter ASCII mode (from any ANSI mode) -# -> exit ASCII mode (goto native ANSI mode) -# -> enter Tek 4207 ANSI mode (from any ANSI mode) -# -> exit Tek 4207 mode (goto native ANSI mode) -# -# Bug: The capability resets attributes. -wy370-nk|wyse 370 without function keys, - am, ccc, hs, mc5i, mir, msgr, xenl, xon, - colors#64, cols#80, it#8, lines#24, ncv#48, pairs#64, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A, - 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, ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>, - el=\E[K$<10>, el1=\E[1K$<12>, enacs=\E)0, - flash=\E[30h\E\,\E[30l$<300>, fsl=\E[1;24r\E8, - home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>, hts=\EH, - ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>, - ind=\n$<2>, - initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e%p2%{750}%<%t%{32}%e%{48}%;%?%p3%{250}%<%t%{0}%e%p3%{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250}%<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%;%{1}%+%+%+%dw, - invis=\E[8m, ip=$<1>, is1=\E[90;1"p\E[?5W$<6>, - is2=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h, - is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i, mc4=\E[4i, - mc5=\E[5i, - 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, rc=\E8, rev=\E[7m, 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, sc=\E7, 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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, 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, -# -# 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, - kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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~, khome=\E[H, kich1=\EOP, kil1=\EOP, - knp=\E[U, kpp=\E[V, use=wy370-nk, -# -# Function key set for the VT-320 (and wy85) compatible keyboard -# -wy370-105k|Wyse 370 with 105 key keyboard, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, - use=wy370-nk, use=vt220+keypad, -# -# Function key set for the PC compatible keyboard -# -wy370-EPC|Wyse 370 with 102 key keyboard, - kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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~, - khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk, -# -# Wyse 370 with visual bell. -wy370-vb|Wyse 370 with visible bell, - bel@, use=wy370, -# -# Wyse 370 in 132-column mode. -wy370-w|Wyse 370 in 132-column mode, - cols#132, wsl#132, - rs2=\E[35h\E[?3h$<70>, use=wy370, -# -# Wyse 370 in 132-column mode with visual bell. -wy370-wvb|Wyse 370 with visible bell 132-columns, - flash=\E[30h\E\,\E[30l$<300>, use=wy370-w, -wy370-rv|Wyse 370 reverse video, - rs3=\E[32h\E[?5h, use=wy370, -# -# Wyse 99gt Tektronix 4010/4014 emulator, -# -wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator, - am, os, - cols#74, lines#35, - bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, - cup=\035%{3040}%{89}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037, - cuu1=^K, ff=^L, - hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037, - home=^]7`x @\037, - hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037, - is2=\E8, nel=^M^J, u0=\E~>\E8, u1=\E[42h, -# -# Wyse 160 Tektronix 4010/4014 emulator, -# -wy160-tek|Wyse 160 Tektronix 4010/4014 emulator, - cup=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037, - home=^]8`g @\037, use=wy99gt-tek, -# -# Wyse 370 Tektronix 4010/4014 emulator, -# -wy370-tek|Wyse 370 Tektronix 4010/4014 emulator, - am, os, - cols#80, lines#36, - bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, - cup=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/%Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32}%/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037, - cuu1=^K, ff=^L, - hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037, - home=^]8g @\037, - hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037, - is2=\E8, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^I, kcuu1=^K, - nel=^M^J, u0=\E[?38h\E8, u1=\E[?38l\E)0, - -# Vendor-supplied Wyse entries end here. - -# -#TITLE: TERMINFO ENTRY WY520 -#DATE: 8/5/93 -# The WY520 terminfo is based on the WY285 entry published on the WYSE -# BBS with the addition of more function keys and special keys. -# -# rs1 -> set personality -# rs2 -> set number of columns -# rs3 -> set number of lines -# is1 -> select the proper font -# is2 -> do the initialization -# is3 -> If this string is empty then rs3 gets sent. -# -# Wyse 520 emulating a vt420 7 bit mode with default ANSI keyboard -# - The BS key is programmed to generate BS in smcup since -# is2 doesn't seem to work. -# - Remove and shift/Remove: delete a character -# - Insert : enter insert mode -# - Find : delete to end of file -# - Select : clear a line -# - F11, F12, F13: send default sequences (not ESC, BS, LF) -# - F14 : Home key -# - Bottom status line (host writable line) is used. -# - smkx,rmkx are removed because this would put the numeric -# keypad in Dec application mode which doesn't seem to work -# with SCO applications. -# -wy520|wyse520|wyse 520, - am, hs, km, mc5i, mir, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - 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`, ht=^I, - hts=\EH, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, - il1=\E[L$<3>, ind=\n$<2>, invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, ked=\E[1~, - kel=\E[4~, kent=\EOM, 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~, - kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, - lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, - rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, - rmcup=\E[ R, rmir=\E[4l, rmso=\E[m, 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, - 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, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`, - vpa=\E[%i%p1%dd, use=vt220+keypad, -# -# Wyse 520 with 24 data lines and status (terminal status) -wy520-24|wyse520-24|wyse 520 with 24 data lines, - hs@, - dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, - use=wy520, -# -# Wyse 520 with visual bell. -wy520-vb|wyse520-vb|wyse 520 with visible bell, - flash=\E[30h\E\,\E[30l$<100>, use=wy520, -# -# Wyse 520 in 132-column mode. -wy520-w|wyse520-w|wyse 520 in 132-column mode, - cols#132, wsl#132, - dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, - ip=$<7>, rs2=\E[35h\E[?3h, use=wy520, -# -# Wyse 520 in 132-column mode with visual bell. -wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns, - flash=\E[30h\E\,\E[30l$<100>, use=wy520-w, -# -# -# Wyse 520 emulating a vt420 7 bit mode. -# The DEL key is programmed to generate BS in is2. -# With EPC keyboard. -# - 'End' key will clear till end of line on EPC keyboard -# - Shift/End : ignored. -# - Insert : enter insert mode. -# - Delete : delete a character (have to change interrupt character -# 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=\177, 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, -# -# Wyse 520 with 24 data lines and status (terminal status) -# with EPC keyboard. -wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard, - hs@, - dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, - use=wy520-epc, -# -# Wyse 520 with visual bell. -wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell and EPC keyboard, - flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc, -# -# Wyse 520 in 132-column mode. -wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard, - cols#132, wsl#132, - dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, - ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc, -# -# Wyse 520 in 132-column mode with visual bell. -wy520-epc-wvb|wyse520-p-wvb|wyse 520 with visible bell 132-columns and EPC keyboard, - flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc-w, -# -# Wyse 520 in 80-column, 36 lines -wy520-36|wyse520-36|wyse 520 with 36 data lines, - hs@, - lines#36, - dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, - use=wy520, -# -# Wyse 520 in 80-column, 48 lines -wy520-48|wyse520-48|wyse 520 with 48 data lines, - hs@, - lines#48, - dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, - use=wy520, -# -# Wyse 520 in 132-column, 36 lines -wy520-36w|wyse520-36w|wyse 520 with 132 columns and 36 data lines, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, - use=wy520-36, -# -# Wyse 520 in 132-column, 48 lines -wy520-48w|wyse520-48w|wyse 520 with 48 data lines, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, - use=wy520-48, -# -# -# Wyse 520 in 80-column, 36 lines with EPC keyboard -wy520-36pc|wyse520-36pc|wyse 520 with 36 data lines and EPC keyboard, - hs@, - lines#36, - dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, - use=wy520-epc, -# -# Wyse 520 in 80-column, 48 lines with EPC keyboard -wy520-48pc|wyse520-48pc|wyse 520 with 48 data lines and EPC keyboard, - hs@, - lines#48, - dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, - use=wy520-epc, -# -# Wyse 520 in 132-column, 36 lines with EPC keyboard -wy520-36wpc|wyse520-36wpc|wyse 520 with 36 data lines and EPC keyboard, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, - use=wy520-36pc, -# -# Wyse 520 in 132-column, 48 lines with EPC keyboard -wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, - use=wy520-48pc, - -# From: John Gilmore -# (wyse-vp: removed , there's no such -# file and we don't know what is -- esr) -wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW, - dl1=\El, ed=\Ek, el=\EK, home=^A, ht=^I, il1=\EM, ind=^J, - is2=\E`\:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=^J, kcuf1=^F, - kcuu1=^Z, khome=^A, ll=^A^Z, nel=^M^J, rmir=\Er, rmso=^O, - rmul=^O, rs1=\E`\:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N, - smul=^N, - -wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad, - is2=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=, - kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - khome=\EOH, rmkx=\E[?1l\E>$<10/>, smkx=\E[?1h\E=$<10/>, - use=wy75, - -# From: Eric Freudenthal -wy100q|Wyse 100 for Quotron, - OTbs, - cols#80, lines#24, xmc#1, - cbt=\EI, clear=^Z, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@, - is2=\E`\:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr, - -#### Kermit terminal emulations -# -# Obsolete Kermit versions may be listed in the section describing obsolete -# non-ANSI terminal emulators later in the file. -# - -# KERMIT standard all versions. -# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. -# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr) -# From: greg small 9-25-84 -kermit|standard kermit, - OTbs, - cols#80, lines#24, - clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, is2=K0 Standard Kermit 9-25-84\n, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, -kermit-am|standard kermit plus auto-margin, - am, - is2=K1 Standard Kermit plus Automatic Margins\n, - use=kermit, -# IBMPC Kermit 1.2. -# Bugs: , : do not work except at beginning of line! does -# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of -# line). -# From: greg small 8-30-84 -pckermit|pckermit12|UCB IBMPC Kermit 1.2, - am, - lines#25, - clear=\EH\EJ, ed@, el@, - is2=K2 UCB IBMPC Kermit 1.2 8-30-84\n, use=kermit, -# IBMPC Kermit 1.20 -# Cannot use line 25, now acts funny like ansi special scrolling region. -# Initialization must escape from that region by cursor position to line 24. -# Cannot use character insert because 1.20 goes crazy if insert at col 80. -# Does not use :am: because autowrap is lost when kermit dropped and restarted. -# From: greg small 12-19-84 -pckermit120|UCB IBMPC Kermit 1.20, - it#8, lines#24, - cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I, - il1=\EL, - is2=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20 12-19-84\n, - rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit, -# MS-DOS Kermit 2.27 for the IBMPC -# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. -# Cannot use line 25, now acts funny like ansi special scrolling region. -# Initialization must escape from that region by cursor position to line 24. -# Does not use am: because autowrap is lost when kermit dropped and restarted. -# Reverse video for standout like H19. -# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr) -# From: greg small 3-17-85 -msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC, - OTbs, am@, - cols#80, it#8, lines#24, - clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - cvvis=\EO\Eq\EG\EwK4, dch1=\EN, dl1=\EM, ed=\EJ, el=\EK, - home=\EH, ht=^I, il1=\EL, - is2=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rc=\Ek, - rmir=\EO, rmso=\Eq, sc=\Ej, smir=\E@, smso=\Ep, -# MS-DOS Kermit 2.27 with automatic margins -# From: greg small 3-17-85 -msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins, - am, - cvvis=\EO\Eq\EG\EvK5, - is2=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n, - use=msk227, -# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC -# Automatic margins now default. Use ansi for highlights. -# Define function keys. -# (msk22714: removed obsolete ":kn#10:" -- esr) -# From: greg small 3-17-85 -msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC, - am, - bold=\E[1m, cvvis=\EO\Eq\EG\EvK6, - is2=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-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, -# 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. -# (vt320-k3: I added / based on the init string -- esr) -vt320-k3|MS-Kermit 3.00's vt320 emulation, - am, eslok, hs, km, mir, msgr, xenl, - cols#80, it#8, lines#49, pb#9600, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cmdch=\E, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l, - fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, - is2=\E>\E F\E[?1l\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, 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=^M^J, rc=\E8, - 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 F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E[4i\E[?4i\E[m\E[r\E[2$~, - sc=\E7, 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, -# From: Joseph Gil 13 Dec 1991 -# ACS capabilities from Philippe De Muyter 30 May 1996 -# (I removed a bogus boolean :mo: and added , , -- esr) -vt320-k311|dec vt320 series as defined by kermit 3.11, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[;H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K, - flash=\E[?5h\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, il=\E[%p1%dL, 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=^M\ED, rc=\E8, 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, sc=\E7, 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, - -######## NON-ANSI TERMINAL EMULATIONS -# - -#### Avatar -# -# These entries attempt to describe Avatar, a terminal emulation used with -# MS-DOS bulletin-board systems. It was designed to give ANSI-like -# capabilities, but with cheaper (shorter) control sequences. Messy design, -# excessively dependent on PC idiosyncracies, but apparently rather popular -# in the BBS world. -# -# No color support. Avatar doesn't fit either of the Tektronix or HP color -# models that terminfo knows about. An Avatar color attribute is the -# low 7 bits of the IBM-PC display-memory attribute. Bletch. -# -# I wrote these entries while looking at the Avatar spec. I don't have -# the facilities to test them. Let me know if they work, or don't. -# -# Avatar escapes not used by these entries (because maybe you're smarter -# and more motivated than I am and can figure out how to wrap terminfo -# around some of them, and because they are weird enough to be funny): -# level 0: -# ^L -- clear window/reset current attribute to default -# ^V^A%p1%c -- set current color attribute, parameter decodes as follows: -# -# bit: 6 5 4 3 2 1 0 -# | | | | | -# +---+---+ | +---+---+ -# | | | -# | | foreground color -# | foreground intensity -# background color -# level 0+: -# ^V^J%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) up by p1 lines -# ^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 ^Y [...] -- repeat pattern. specifies the number of bytes -# in the pattern, the number of times the pattern -# should be repeated. If either value is 0, no-op. -# The pattern can contain Avatar console codes, -# including other ^V ^Y patterns. -# level 1: -# ^V^O -- clockwise mode on; turn print direction right each time you -# hit a window edge (yes, really). Turned off by CR -# ^V^P -- no-op -# ^V^Q%c -- query the driver -# ^V^R -- driver reset -# ^V^S -- Sound tone (PC-specific) -# ^V^T -- change highlight at current cursor poition to %c -# ^V^U%p1%c%p2%c -- highlight window with attribute -# ^V^V%p1%c%p2%c%p3%c%p4%c%p5%c -# -- define window -# -# From: Eric S. Raymond 1 Nov 1995 -# (The ///// capabilities exist only to -# tell ncurses that the corresponding highlights exist; it should use , -# which is the only method that will actually work for multiple highlights.) -# -# Update by TD - 2004: half of this was inconsistent. Found documentation -# and repaired most of the damage. sgr0 is probably incorrect, but the -# available documentation gives no clues for a workable string. -avatar0|avatar terminal emulator level 0, - am, bce, msgr, - cols#80, it#8, lines#25, - blink=^V^B, bold=^V^A^P, cr=^M, cub1=^V^E, cud1=^V^D, - cuf1=^V^F, cup=\026\010%p1%c%p2%c, cuu1=^V^C, el=^V^G, - ind=^J, invis=^V^A\0, rep=\031%p1%c%p2%c, rev=^V^Ap, - rmacs@, rs2=^L, - sgr=%?%p1%p2%|%p3%|%p6%|%p7%|%t\026\001%?%p7%t%{128}%e%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p6%t%{16}%|%;%;%c%;%?%p4%t\026\002%;, - sgr0=^V^A^G, smacs@, smso=^V^Ap, smul=^V^A^A, - use=klone+acs, -# From: Eric S. Raymond 1 Nov 1995 -avatar0+|avatar terminal emulator level 0+, - dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0, -# From: Eric S. Raymond 1 Nov 1995 -avatar|avatar1|avatar terminal emulator level 1, - civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+, - rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+, - -#### RBcomm -# -# RBComm is a lean and mean terminal emulator written by the Interrupt List -# maintainer, Ralf Brown. It was fairly popular in the late DOS years (early -# '90s), especially in the BBS world, and still has some loyal users due to -# its very small memory footprint and to a cute macro language. -rbcomm|IBM PC with RBcomm and EMACS keybindings, - am, bw, mir, msgr, xenl, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=^L, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^C, cuf1=^B, - cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W, - dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I, - il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m, - is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H, - kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=^M\ED, - rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=, - rmir=^], rmkx=\E>, rmso=^U, rmul=^U, - rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m, - smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T, -rbcomm-nam|IBM PC with RBcomm without autowrap, - am@, - bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm, -rbcomm-w|IBM PC with RBcomm in 132 column mode, - cols#132, - bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm, - -######## LCD DISPLAYS -# - -#### Matrix Orbital -# from: Eric Z. Ayers (eric@ale.org) -# -# Matrix Orbital 20x4 LCD display -# Command Character is 0xFE (decimal 254, octal 376) -# -# On this device, cursor addressability isn't possible. The LCD expects: -# 0xfe G -# for cup: %p1 == row and %p2 is column -# -# 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"'. -# -# Alas, there is no cursor upline capability on this display. -# -# These entries add some 'sanity stuff' to the clear function. That is, it -# does a 'clear' and also turns OFF auto scroll, turns ON Auto Line Wrapping, -# and turns off the cursor blinking and stuff like that. -# -# NOTE: calling 'beep' turns on the backlight (bell) -# NOTE: calling 'flash' turns it on and back off (visual bell) -# -MtxOrb|Generic Matrix Orbital LCD display, - bel=\376B^A, clear=\376X\376C\376R\376K\376T, - cnorm=\376K\376T, cub1=\376L, cuf1=\376M, - flash=\376B\001$<200>\376F, home=\376H, -MtxOrb204|20x4 Matrix Orbital LCD display, - cols#20, lines#4, use=MtxOrb, -MtxOrb162|16x2 Matrix Orbital LCD display, - cols#16, lines#2, use=MtxOrb, -# The end - -######## OLDER TERMINAL TYPES -# -# This section is devoted to older commercial terminal brands that are now -# discontinued, but known to be still in use or represented by emulations. -# - -#### AT&T (att, tty) -# -# This section also includes Teletype-branded VDTs. -# -# The AT&T/Teletype terminals group was sold to SunRiver Data Systems (now -# Boundless Technologies); for details, see the header comment on the ADDS -# section. -# -# These are AT&T's official terminfo entries. All-caps aliases have been -# removed. -# -att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode, - am, eo, mir, msgr, xon, - cols#80, it#8, lines#24, - bel=^G, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcbt=\E[Z, kclr=\E[J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, - 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, -att2350|AT&T 2350 Video Information Terminal 80 column mode, - mc0@, mc4@, mc5@, use=att2300, - -# Must setup RETURN KEY - CR, REC'VD LF - INDEX. -# Seems upward compatible with vt100, plus ins/del line/char. -# On sgr, the protection parameter is ignored. -# No check is made to make sure that only 3 parameters are output. -# standout= reverse + half-intensity = 3 | 5. -# bold= reverse + underline = 2 | 3. -# note that half-bright blinking doesn't look different from normal blinking. -# NOTE:you must program the function keys first, label second! -# (att4410: a BSD entry has been seen with the following capabilities: -# , , , , , -# , , , -- esr) -att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1, - am, hs, mir, msgr, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dim=\E[2m, - dl1=\E[M, ed=\E[J, el=\E[K, fsl=\E8, home=\E[H, ht=^I, - ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, is1=\E[?3l\E)0, - is3=\E[1;03q f1 \EOP\E[2;03q f2 \EOQ\E[3;03q f3 \EOR\E[4;03q f4 \EOS\E[5;03q f5 \EOT\E[6;03q f6 \EOU\E[7;03q f7 \EOV\E[8;03q f8 \EOW, - kbs=^H, kclr=\E[2J, 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, khome=\E[H, kll=\E[24;1H, - ll=\E[24H, nel=^M^J, - pfx=\E[%p1%1d;%p2%l%2.2dq f%p1%1d %p2%s, - pln=\E[%p1%d;00q%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=^O, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, - sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m, - tsl=\E7\E[25;%p1%{1}%+%dH, - -att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1, - cols#132, wsl#132, - is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1, - -att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2, - OTbs, - pfx=\E[%p1%d;%p2%l%02dq f%p1%d %p2%s, - use=att5410v1, - -att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode, - cols#132, wsl#132, - is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att4410, - -# 5410 in terms of a vt100 -# (v5410: added / based on init string -- esr) -v5410|att5410 in terms of a vt100, - am, mir, msgr, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, 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=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, rc=\E8, 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, - sc=\E7, - 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=vt100+fnkeys, - -# -# Teletype Model 5420 -- A souped up 5410, with multiple windows, -# even! the 5420 has three modes: scroll, window or page mode -# this terminfo should work in scroll or window mode, but doesn't -# take advantage of any of the differences between them. -# -# Has memory below (2 lines!) -# 3 pages of memory (plus some spare) -# The 5410 sequences for , , ,

, , , , -# , would work for these, but these work in both scroll and window -# mode... Unset insert character so insert mode works -# sets 80 column mode, -# escape sequence: -# 1) turn off all fonts -# 2) function keys off, keyboard lock off, control display off, -# insert mode off, erasure mode off, -# 3) full duplex, monitor mode off, send graphics off, nl on lf off -# 4) reset origin mode -# 5) set line wraparound -# 6) exit erasure mode, positional attribute mode, and erasure extent mode -# 7) clear margins -# 8) program ENTER to transmit ^J, -# We use \212 to program the ^J because a bare ^J will get translated by -# UNIX into a CR/LF. The enter key is needed for AT&T uOMS. -# 1 2 3 4 5 6 7 8 -# set screen color to black, -# No representation in terminfo for the delete word key: kdw1=\Ed -# Key capabilities assume the power-up send sequence... -# This is not strictly necessary, but it helps maximize -# memory usefulness: , -# Alternate sgr0: , -# Alternate sgr: , -# smkx programs the SYS PF keys to send a set sequence. -# It also sets up labels f1, f2, ..., f8, and sends edit keys. -# This string causes them to send the strings - -# when pressed in SYS PF mode. -# (att4415: I added / based on the init string -- esr) -att4415|tty5420|att5420|AT&T 4415/5420 80 cols, - OTbs, db, mir, xon, - lh#2, lm#78, lw#8, nlab#8, wsl#55, - cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD, - cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx, - cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP, - dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD, - flash=\E[?5h$<200>\E[?5l, home=\E[x, - hpa=\E[%p1%{1}%+%dG, hts=\EH, ich=\E[%p1%d@, ich1@, - il=\E[%p1%dL, indn=\E[%p1%dE, is1=\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[21;1j\212, - is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M, - kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, kf2=\EOd, - kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, - kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U, - kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, - lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?2i, mc4=\E[?9i, - mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt, - pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, - rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[19;0j\E[21;1j\212, rmln=\E|, - 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%;, - sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, - smkx=\E[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g, - tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, - use=att4410, - -att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols, - cols#132, lm#54, wsl#97, - is1=\E[?3h$<100>, use=att4415, - -att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv, - flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415, - -att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv, - cols#132, lm#54, wsl#97, - flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h, - use=att4415, - -# Note that this mode permits programming USER PF KEYS and labels -# However, when you program user pf labels you have to reselect -# user pf keys to make them appear! -att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, - pfx=\E[%p1%d;%p2%l%02d;0;1q F%p1%d %p2%s, - pln=\E[%p1%d;0;0;1q%p2%:-16.16s, - -att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415, - -att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415-rv, - -att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415-w, - -att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415-w-rv, - -att5420_2|AT&T 5420 model 2 80 cols, - am, db, hs, mir, msgr, xon, - cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j, - cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A, - cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, 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, ht=^I, hts=\EH, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - indn=\E[%p1%dE, invis=\E[8m, - 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, - kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, - kel=\E[2K, kend=\Ez, kent=^J, kf1=\EOc, kf2=\EOd, kf3=\EOe, - kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, khome=\E[H, - kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U, - kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, - lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?;2i, mc4=\E[4i, - mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=^M^J, - pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s\E~, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j, - rmln=\E|, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, - sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smkx=\E[19;1j, smln=\E~, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, -att5420_2-w|AT&T 5420 model 2 in 132 column mode, - cols#132, - is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\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, - use=att5420_2, - -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=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, - ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=^J, - 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, kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I, - kf15=\E[J, 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, -att4418-w|att5418-w|AT&T 5418 132 cols, - cols#132, - is1=\E[?3h, use=att5418, - -att4420|tty4420|teletype 4420, - OTbs, da, db, eo, msgr, ul, xon, - cols#80, lines#24, lm#72, - bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s, - kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH, - kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET, - lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~, - rmul=\EZ, smdc@, smso=\E}, smul=\E\\, - -# The following is a terminfo entry for the Teletype 4424 -# asynchronous keyboard-display terminal. It supports -# the vi editor. The terminal must be set up as follows, -# -# HIGHLIGHT DEFINITION 3-TONE -# DISPLAY FUNCTION GROUP III -# -# The second entry below provides limited (a la adm3a) -# operation under GROUP II. -# -# This must be used with DISPLAY FUNCTION GROUP I or III -# and HIGHLIGHT DEFINITION 3-TONE -# The terminal has either bold or blink, depending on options -# -# (att4424: commented out =\E[1m, we don't need bright locked on -- esr) -att4424|tty4424|teletype 4424, - OTbs, am, xon, - cols#80, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\EB, cuf=\E[%p1%dC, cuf1=\EC, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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=^J, is2=\E[20l\E[?7h, - kbs=^H, kclr=\EJ, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - khome=\E[H, nel=\EE, rev=\E}, ri=\ET, rmacs=\E(B, rmso=\E~, - rmul=\EZ, - sgr=\E[%?%p1%t7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p6%p4%|%t;5%;%?%p5%t;0%;m, - sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\, - tbc=\EF, - -att4424-1|tty4424-1|teletype 4424 in display function group I, - kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@, - use=att4424, - -# This entry is not one of AT&T's official ones, it was translated from the -# 4.4BSD termcap file. The highlight strings are different from att4424. -# I have no idea why this is -- older firmware version, maybe? -# The following two lines are the comment originally attached to the entry: -# This entry appears to avoid the top line - I have no idea why. -# From: jwb Wed Mar 31 13:25:09 1982 remote from ihuxp -att4424m|tty4424m|teletype 4424M, - am, da, db, mir, - cols#80, it#8, lines#23, - bel=^G, clear=\E[2;H\E[J, cr=^M, cub1=^H, cud1=^J, 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=^J, ip=$<2/>, - is2=\E[m\E[2;24r, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, khome=\E[H, nel=^M^J, ri=\ET, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smso=\E[7m, smul=\E[4m, - -# The Teletype 5425 is really version 2 of the Teletype 5420. It -# is quite similar, except for some minor differences. No page -# mode, for example, so all of the sequences used above have -# to change back to what's being used for the 5410. Many of the -# option settings have changed their numbering as well. -# -# This has been tested on a preliminary model. -# -# (att5425: added / based on the init string -- esr) -att5425|tty5425|att4425|AT&T 4425/5425, - am, da, db, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - clear=\E[H\E[J, cnorm=\E[12;0j, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[J, - el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, - hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dE, - invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kclr=\E[J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, - kdl1=\E[M, kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, - kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, - kf8=\EOj, khome=\E[H, kich1=\E[4h, kil1=\E[L, kind=\E[T, - kri=\E[S, ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i, - nel=^M^J, - pfx=\E[%p1%d;%p2%l%02dq F%p1%1d %p2%s, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmam=\E[?7l, - rmir=\E[4l, rmkx=\E[21;0j\E[25;1j\212, rmln=\E|, - rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH, - vpa=\E[%p1%{1}%+%dd, - -att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels, - smkx=\E[21;1j\E[25;4j\Eent, use=att4425, - -att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode, - cols#132, lm#54, wsl#97, - is1=\E[?3h$<100>, use=tty5425, - -# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:. -# I also added / -- esr) -att4426|tty4426|teletype 4426S, - am, da, db, xon, - 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=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EP, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H, - hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^, - il=\E[%p1%dL, il1=\EL, ind=^J, indn=\E[%p1%dS, - is1=\Ec\E[?7h, is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, - kclr=\E[2J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - 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=^M^J, rc=\E8, rev=\E[7m, ri=\ET, rin=\E[%p1%dT, - 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, - -# Terminfo entry for the AT&T 510 A Personal Terminal -# Function keys 9 - 16 are available only after the -# screen labeled (soft keys/action blocks) are labeled. Function key -# 9 corresponds to the leftmost touch target on the screen, -# function key 16 corresponds to the rightmost. -# -# This entry is based on one done by Ernie Rice at Summit, NJ and -# changed by Anne Gallup, Skokie, IL, ttrdc!anne -att510a|bct510a|AT&T 510A Personal Terminal, - am, mir, msgr, xenl, xon, - cols#80, lh#2, lines#24, lw#7, nlab#8, - acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, - dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, - el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, ht=^I, - hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, 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, 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, - 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, - 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, tbc=\E[3g, - -# Terminfo entry for the AT&T 510 D Personal Terminal -# Function keys 9 through 16 are accessed by bringing up the -# system blocks. -# Function key 9 corresponds to the leftmost touch target on the screen, -# function key 16 corresponds to the rightmost. -# -# There are problems with soft key labeling. These are due to -# strangenesses in the native terminal that are impossible to -# describe in a terminfo. -att510d|bct510d|AT&T 510D Personal Terminal, - am, da, db, mir, msgr, xenl, xon, - cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8, - acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, - el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, - hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, - invis=\E[8m, 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, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|, - rmln=\E<, rmso=\E[m, rmul=\E[m, 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?, smso=\E[7m, smul=\E[4m, - smxon=\E[29;0|, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, - -# (att500: I merged this with the att513 entry, att500 just used att513 -- esr) -att500|att513|AT&T 513 using page mode, - am, chts, mir, msgr, xenl, xon, - cols#80, lh#2, lines#24, lw#8, nlab#8, - acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - clear=\E[H\E[J, cnorm=\E[11;0|, cr=^M, - csr=%i\E[%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[11;1|, dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)1, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, - hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, - indn=\E[%p1%dE, invis=\E[8m, - 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, - kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK, - kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ, - kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY, - kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw, - kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, - kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent, - kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm, - khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi, - kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, - kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, - kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB, - ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, ll=\E#2, - mc0=\E[?98l\E[0i, mc4=\E[?98l\E[?8i, mc5=\E[?98l\E[?4i, - nel=\EE, - pfkey=\E[%p1%d;%p2%l%d;3;0p F%p1%d %p2%s, - pfloc=\E[%p1%d;%p2%l%d;2;0p F%p1%d %p2%s, - pfx=\E[%p1%d;%p2%l%d;1;0p F%p1%d %p2%s, - pln=\E[%p1%dp%p2%:-16s, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, - rin=\E[%p1%dF, rmacs=^O, rmir=\E[4l, - rmkx=\E[19;0|\E[21;1|\212, rmln=\E<, rmso=\E[m, - rmul=\E[m, - rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|\E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l, - rs2=\E[5;0|, sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smir=\E[4h, - smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, - -# 01-07-88 -# printer must be set to EMUL ANSI to accept ESC codes -# stops at top margin -# sets cpi 10,lpi 6,form 66,left 1,right 132,top 1,bottom 66,font -# and alt font ascii,wrap on,tabs cleared -# disables newline on LF,Emphasized off -# The capability sets form length -att5310|att5320|AT&T Model 53210 or 5320 matrix printer, - xhpa, xvpa, - bufsz#8192, cols#132, cps#120, it#8, lines#66, orc#10, - orhi#100, orl#12, orvi#72, - cpi=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w%e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O%t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t\E[8w%;, - cr=^M, - csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfinnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1%{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench%e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1%{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%{12}%=%tsecurity%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmosaic%;, - cud=\E[%p1%de, cud1=^J, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM, - ff=^L, hpa=\E[%p1%d`, ht=^I, is1=\Ec, is2=\E[20l\r, - lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e%p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;, - rshm=\E[m, - scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1%{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}%=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t\E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t\E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t\E(}%;, - smgbp=\E[;%p1%dr, smglp=\E[%{1}%p1%+%ds, - smgrp=\E[;%{1}%p1%+%ds, smgtp=\E[%p1%dr, sshm=\E[5m, - u0=\E[%p1%dt, vpa=\E[%p1%dd, - -# Teletype 5620, firmware version 1.1 (8;7;3) or earlier from BRL -# The following SET-UP modes are assumed for normal operation: -# CR_DEF=CR NL_DEF=INDEX DUPLEX=FULL -# Other SET-UP modes may be set for operator convenience or communication -# requirements. This termcap description is for the Resident Terminal Mode. -# No delays specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# The BRL entry also said: UNSAFE :ll=\E[70H: -att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs, - am, xon, - cols#88, it#8, lines#70, vt#3, - bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, indn=\E[%p1%dS, kbs=^H, kclr=\E[2J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - kll=\E[70;1H, nel=^M^J, rc=\E8, ri=\E[T, rin=\E[%p1%dT, - rs1=\Ec, sc=\E7, - -# 5620 terminfo (2.0 or later ROMS with char attributes) -# The following SET-UP modes are assumed for normal operation: -# DUPLEX=FULL GEN_FLOW=ON NEWLINE=INDEX RETURN=CR -# Other SET-UP modes may be set for operator convenience or communication -# requirements. This termcap description is for Resident Terminal Mode. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# assumptions: (scroll forward one line) is only done at screen bottom -# Be aware that older versions of the dmd have a firmware bug that affects -# parameter defaulting; for this terminal, the 0 in \E[0m is not optional. -# is from an otherwise inferior BRL for this terminal. That entry -# also has =\E[70H commented out and marked unsafe. -# For more, see the 5620 FAQ maintained by David Breneman . -att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns, - OTbs, am, msgr, npc, xon, - cols#88, it#8, lines#70, - bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=^M, cub1=^H, - cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=^J, - pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T, - rin=\E[%p1%dT, rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7, - sgr0=\E[0m, smso=\E[7m, smul=\E[4m, -att5620-24|tty5620-24|dmd-24|teletype dmd 5620 in a 24x80 layer, - lines#24, use=att5620, -att5620-34|tty5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer, - lines#34, use=att5620, -# 5620 layer running the "S" system's downloaded graphics handler: -att5620-s|tty5620-s|layer|vitty|5620 S layer, - OTbs, OTpt, am, - cols#80, it#8, lines#72, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED, - el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=^J, kbs=^H, kclr=\E[2J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - kll=\E[70;1H, - -# Entries for thru refer to the shifted system pf keys. -# -# Entries for thru refer to the alternate keypad mode -# keys: = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER -att605|AT&T 605 80 column 102key keyboard, - am, eo, xon, - cols#80, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, fsl=\E8, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il1=\E[L, ind=^J, invis=\E[8m, - is1=\E[8;0|\E[?\E[13;20l\E[?\E[12h, is2=\E[m\017, - kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z, kclr=\E[2J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, - kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq, - kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, - kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, - kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, - kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, - kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, - kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, - kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, - kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, - kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@, - kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H, - mc4=\E[?4i, 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, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m, - rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016, - smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m, - tsl=\E7\E[25;%i%p1%dx, -att605-pc|ATT 605 in pc term mode, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - cbt=\E[Z, cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A, - dch1=\E[P, dl1=\E[M, ich1=\E[@, il1=\E[L, kcbt=\E[Z, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, - kdl1=\E[M, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N, - kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, - kf9=\E[U, khome=\E[H, kich1=\E[@, knp=\E[G, kpp=\E[I, - rmsc=400\E[50;0|, smsc=250\E[?11l\E[50;1|, xoffc=g, - xonc=e, use=att605, -att605-w|AT&T 605-w 132 column 102 key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0, - use=att605, -# (att610: I added / based on the init string. I also -# added and because the BSD file says the att615s have them, -# and the 615 is like a 610 with a big keyboard, and most of their other -# smart terminals support the same sequence -- esr) -att610|AT&T 610; 80 column; 98key keyboard, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, - indn=\E[%p1%dS, invis=\E[8m, - is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0, - is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H, - kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, - kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, - kind=\E[S, kri=\E[T, ll=\E[24H, mc4=\E[?4i, 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, - ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, - rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7, - 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[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx, -att610-w|AT&T 610; 132 column; 98key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att610, - -att610-103k|AT&T 610; 80 column; 103key keyboard, - kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, - kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, - kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, - kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, - kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, - kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, - kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M, - kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf9@, kfnd=\EOx, - khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, kmsg=\EOl, - knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V, - kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq, - krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo, - kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610, -att610-103k-w|AT&T 610; 132 column; 103key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att610-103k, -att615|AT&T 615; 80 column; 98key keyboard, - kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, - kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, - kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS, - kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, - kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, - kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, - kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610, -att615-w|AT&T 615; 132 column; 98key keyboard, - kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, - kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, - kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS, - kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, - kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, - kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, - kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w, -att615-103k|AT&T 615; 80 column; 103key keyboard, - kLFT=\E[ A, kRIT=\E[ @, use=att610-103k, -att615-103k-w|AT&T 615; 132 column; 103key keyboard, - kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w, -# (att620: I added / based on the init string and -# / from a BSD termcap -- esr) -att620|AT&T 620; 80 column; 98key keyboard, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, - indn=\E[%p1%dS, invis=\E[8m, - is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h, - is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, - kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, - kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE, - kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI, - kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, - kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ, - kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy, - kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf, - kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp, - kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, - kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H, - mc4=\E[?4i, 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, - ri=\EM, rin=\E[%p1%dT, rmacs=\E(B\017, rmam=\E[?7l, - rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m, - rs2=\Ec\E[?3l, sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h, - smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m, - tsl=\E7\E[25;%i%p1%dx, -att620-w|AT&T 620; 132 column; 98key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att620, -att620-103k|AT&T 620; 80 column; 103key keyboard, - kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, - kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, - kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, - kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, - kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, - kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, - kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M, - kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@, - kf18@, kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, kf25@, kf26@, kf27@, - kf28@, kf29@, kf30@, kf31@, kf32@, kf33@, kf34@, kf35@, kf36@, kf37@, - kf38@, kf39@, kf40@, kf41@, kf42@, kf43@, kf44@, kf45@, kf46@, kf9@, - kfnd=\EOx, khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, - kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, - kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, - kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, - ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620, - -att620-103k-w|AT&T 620; 132 column; 103key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att620-103k, - -# AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal -# The following SETUP modes are assumed for normal operation: -# Local_Echo=Off Gen_Flow=On Return=CR Received_Newline=LF -# Font_Size=Large Non-Layers_Window_Cols=80 -# Non-Layers_Window_Rows=60 -# Other SETUP modes may be set for operator convenience or communication -# requirements. Some capabilities assume a printer attached to the Aux EIA -# port. This termcap description is for the Fixed Non-Layers Window. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# (att630: added , and from a BSD termcap file -- esr) -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, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS, is2=\E[m, - kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kent=^M, - 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, khome=\E[H, kich1=\E[@, kil1=\E[L, mc4=\E[?4i, - mc5=\E[?5i, nel=^M^J, pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmir=\E[4l, rmso=\E[m, - rmul=\E[m, rs2=\Ec, sc=\E7, - sgr=\E[0%?%p2%t;4%;%?%p1%p3%|%p4%|%p5%|%t;7%;m, - sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m, -att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines, - lines#24, use=att630, - -# This is the att700 entry for 700 native emulation of the AT&T 700 -# terminal. Comments are relative to changes from the 605V2 entry and -# att730 on which the entry is based. Comments show the terminfo -# capability name, termcap name, and description. -# -# Here is what's going onm in the init string: -# ESC [ 50;4| set 700 native mode (really is 605) -# x ESC [ 56;ps| set lines to 24: ps=0; 40: ps=1 (plus status line) -# ESC [ 53;0| set GenFlow to Xon/Xoff -# ESC [ 8 ;0| set CR on NL -# x ESC [ ? 3 l/h set workspace: 80 col(l); 132 col(h) -# ESC [ ? 4 l jump scroll -# ESC [ ? 5 l/h video: normal (l); reverse (h) -# ESC [ ?13 l Labels on -# ESC [ ?15 l parity check = no -# ESC [ 13 l monitor mode off -# ESC [ 20 l LF on NL (not CRLF on NL) -# ESC [ ? 7 h autowrap on -# ESC [ 12 h local echo off -# ESC ( B GO = ASCII -# ESC ) 0 G1 = Special Char & Line Drawing -# ESC [ ? 31 l Set 7 bit controls -# -# Note: Most terminals, especially the 600 family use Reverse Video for -# standout mode. DEC also uses reverse video. The VT100 uses bold in addition -# Assume we should stay with reverse video for 70.. However, the 605V2 exits -# standout mode with \E[m (all normal attributes). The 730 entry simply -# exits reverse video which would leave other current attributes intact. It -# was assumed the 730 entry to be more correct so rmso has changed. The -# 605V2 has no sequences to turn individual attributes off, thus its setting -# and the rmso/smso settings from the 730. -# -# Note: For the same reason as above in rmso I changed exit under-score mode -# to specifically turn off underscore, rather than return to all normal -# attributes -# -# Note: The following pkey_xmit is taken from the 605V2 which contained the -# capability as pfxl. It was changed here to pfx since pfxl -# will only compile successfully with Unix 4.0 tic. Also note that pfx only -# allows strings to be parameters and label values must be programmed as -# constant strings. Supposedly the pfxl of Version 4.0 allows both labels -# and strings to be parameters. The 605V2 pfx entry should be examined later -# in this regard. For reference the 730 pfxl entry is shown here for comparison -# 730 pfx entry: -# pfxl=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq\s\s\s -# SYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s, -# -# (for 4.0 tic) -# pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, -# -# (for <4.0 tic) -# pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, -# -# From the AT&T 705 Multi-tasking terminal user's guide Page 8-8,8-9 -# -# Port1 Interface -# -# modular 10 pin Connector -# Left side Right side -# Pin 1 2 3 4 5 6 7 8 9 10 -# -# Key (notch) at bottom -# -# Pin 1 DSR -# 3 DCD -# 4 DTR -# 5 Sig Ground -# 6 RD -# 7 SD -# 8 CTS -# 9 RTS -# 10 Frame Ground -# -# The manual is 189 pages and is loaded with details about the escape codes, -# etc..... Available from AT&T CIC 800-432-6600... -# ask for Document number 999-300-660.. -# -att700|AT&T 700 24x80 column display w/102key keyboard, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4, - fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m, - 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[ @, kbs=^H, kcbt=\E[Z, - kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, - kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, - kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, - kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, - kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq, - kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu, - kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu, - kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, - kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, - kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H, - mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE, - pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, 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|, sc=\E7, - 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, smso=\E[7m, - smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g, - tsl=\E7\E[99;%i%p1%dx, - -# This entry was modified 3/13/90 by JWE. -# fixes include additions of , correcting , and modification -# of . (See comments below) -# att730 has status line of 80 chars -# These were commented out: , , -# the and up keys are used for shifted system Fkeys -# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is -# currently the same as (unshifted HOME or \E[H). On the 102, 102+1 -# and 122 key keyboards, the 730's translation is \E[2J. For consistency -# has been commented out. The user can uncomment if using the -# 102, 102+1, or 122 key keyboards -# kHOM=\E[2J, -# (att730: I added / based on the init string -- esr) -att730|AT&T 730 windowing terminal, - am, da, db, eslok, hs, mir, msgr, npc, xenl, xon, - cols#80, it#8, lh#2, lines#60, lm#0, lw#8, nlab#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8, - home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, - ind=\ED, invis=\E[8m, - is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B, - is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H, - kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, - kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw, - kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{, - kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD, - kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH, - kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ, - kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf, - kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ, - kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, - kich1=\E[@, kil1=\E[L, kind=\E[S, kri=\E[T, - mc0=\E[?19h\E[0i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE, - pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq SYS F%p1%:-2d %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, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, 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, sc=\E7, - 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, smso=\E[7m, smul=\E[4m, smxon=\E[?21h, - swidm=\E#6, tsl=\E7\E[;%i%p1%dx, -att730-41|730MTG-41|AT&T 730-41 windowing terminal Version, - lines#41, use=att730, -att730-24|730MTG-24|AT&T 730-24 windowing terminal Version, - lines#24, use=att730, -att730r|730MTGr|AT&T 730 rev video windowing terminal Version, - flash=\E[?5l$<200>\E[?5h, - is1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B, - use=att730, -att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version, - lines#41, use=att730r, -att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version, - lines#24, use=att730r, - -# The following represents the screen layout along with the associated -# bezel buttons for the 5430/pt505 terminal. The "kf" designations do -# not appear on the screen but are shown to reference the bezel buttons. -# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate -# position relative to the screen. -# -# -# -# +----------------------------------------------------------------+ -# | | -# XXXX | kf0 kf24 | XXXX -# | | -# | | -# XXXX | kf1 kf23 | XXXX -# | | -# | | -# XXXX | kf2 kf22 | XXXX -# | | -# | | -# XXXX | kf3 kf21 | XXXX -# | | -# | | -# XXXX | kf4 kf20 | XXXX -# | | -# | | -# XXXX | kf5 kf19 | XXXX -# | | -# | | -# XXXX | kf6 kf18 | XXXX -# | | -# | | -# XXXX | | XXXX -# | | -# | | -# +----------------------------------------------------------------+ -# -# XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -# -# Note: XXXX represents the screen buttons -# CMD REDRAW -# -# MAIL -# -# version 1 note: -# The character string sent by key 'kf26' may be user programmable -# to send either \E[16s, or \E[26s. -# The character string sent by key 'krfr' may be user programmable -# to send either \E[17s, or \E[27s. -# -# Depression of the "CMD" key sends \E! (kcmd) -# Depression of the "MAIL" key sends \E[26s (kf26) -# "REDRAW" same as "REFRESH" (krfr) -# -# "kf" functions adds carriage return to output string if terminal is in -# 'new line' mode. -# -# The following are functions not covered in the table above: -# -# Set keyboard character (SKC): \EPn1;Pn2w -# Pn1= 0 Back Space key -# Pn1= 1 Break key -# Pn2= Program char (hex) -# -# Screen Definition (SDF): \E[Pn1;Pn2;Pn3;Pn4;Pn5t -# Pn1= Window number (1-39) -# Pn2-Pn5= Y;X;Y;X coordinates -# -# Screen Selection (SSL): \E[Pnu -# Pn= Window number -# -# Set Terminal Modes (SM): \E[Pnh -# Pn= 3 Graphics mode -# Pn= > Cursor blink -# Pn= < Enter new line mode -# Pn= = Enter reverse insert/replace mode -# Pn= ? Enter no scroll mode -# -# Reset Terminal Mode (RM): \E[Pnl -# Pn= 3 Exit graphics mode -# Pn= > Exit cursor blink -# Pn= < Exit new line mode -# Pn= = Exit reverse insert/replace mode -# Pn= ? Exit no scroll mode -# -# Screen Status Report (SSR): \E[Pnp -# Pn= 0 Request current window number -# Pn= 1 Request current window dimensions -# -# Device Status Report (DSR): \E[6n Request cursor position -# -# Call Status Report (CSR): \E[Pnv -# Pn= 0 Call failed -# Pn= 1 Call successful -# -# Transparent Button String (TBS): \E[Pn1;Pn2;Pn3;{string -# Pn1= Button number to be loaded -# Pn2= Character count of "string" -# Pn3= Key mode being loaded: -# 0= Unshifted -# 1= Shifted -# 2= Control -# String= Text string (15 chars max) -# -# Screen Number Report (SNR): \E[Pnp -# Pn= Screen number -# -# Screen Dimension Report (SDR): \E[Pn1;Pn2r -# Pn1= Number of rows available in window -# Pn2= Number of columns available in window -# -# Cursor Position Report (CPR): \E[Pn1;Pn2R -# Pn1= "Y" Position of cursor -# Pn2= "X" Position of cursor -# -# Request Answer Back (RAB): \E[c -# -# Answer Back Response (ABR): \E[?;*;30;VSV -# *= 0 No printer available -# *= 2 Printer available -# V= Software version number -# SV= Software sub version number -# (printer-available field not documented in v1) -# -# Screen Alignment Aid: \En -# -# Bell (lower pitch): \E[x -# -# Dial Phone Number: \EPdstring\ -# string= Phone number to be dialed -# -# Set Phone Labels: \EPpstring\ -# string= Label for phone buttons -# -# Set Clock: \EPchour;minute;second\ -# -# Position Clock: \EPsY;X\ -# Y= "Y" coordinate -# X= "X" coordinate -# -# Delete Clock: \Epr\ -# -# Programming The Function Buttons: \EPfPn;string\ -# Pn= Button number (00-06, 18-24) -# (kf00-kf06, kf18-kf24) -# string= Text to sent on button depression -# -# The following in version 2 only: -# -# Request For Local Directory Data: \EPp12;\ -# -# Local Directory Data to host: \EPp11;LOCAL...DIRECTORY...DATA\ -# -# Request for Local Directory Data in print format: \EPp13;\ -# -# Enable 'Prt on Line' mode: \022 (DC2) -# -# Disable 'Prt on Line' mode: \024 (DC4) -# - -# 05-Aug-86: -# The following Terminfo entry describes functions which are supported by -# the AT&T 5430/pt505 terminal software version 2 and later. -att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal, - am, xon, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, - cnorm=\E[>l, cr=^M, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[>h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E[2K, home=\E[H, ht=^I, - il=\E[%p1%dL, il1=\E[L, ind=^J, - is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[l\E[=l\E[?l, - kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s, - kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s, - kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s, - 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, - -# The following Terminfo entry describes functions which are supported by -# the AT&T 5430/pt505 terminal software version 1. -att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines, - lines#24, - mc4@, mc5@, rc@, rmam@, sc@, smam@, use=att505, -tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines, - lines#22, use=att505, -# -#### ------------------ TERMINFO FILE CAN BE SPLIT HERE --------------------- -# This cut mark helps make life less painful for people running ncurses tic -# on machines with relatively little RAM. The file can be broken in half here -# cleanly and compiled in sections -- no `use' references cross this cut -# going forward. -# - -#### Ampex (Dialogue) -# -# Yes, these are the same people who are better-known for making audio- and -# videotape. I'm told they are located in Redwood City, CA. -# - -# From: Fri Sep 11 22:38:32 1981 -# (ampex80: some capabilities merged in from SCO's entry -- esr) -ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80, - OTbs, am, bw, ul, - cols#80, it#8, lines#24, - bel=^G, cbt=\EI, clear=\E*$<75>, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER$<5*>, ed=\Ey, el=\Et, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE$<5*>, ind=^J, is2=\EA, rmso=\Ek, rmul=\Em, - smso=\Ej, smul=\El, tbc=\E3, -# This entry was from somebody anonymous, Tue Aug 9 20:11:37 1983, who wrote: -ampex175|ampex d175, - am, - cols#80, lines#24, - bel=^G, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, home=^^, ich1=\EQ, il1=\EE, ind=^J, - is2=\EX\EA\EF, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, - kdch1=\EW, kdl1=\ER, khome=^^, kich1=\EQ, kil1=\EE, ll=^^^K, - rmcup=\EF, rmso=\Ek, rmul=\Em, smcup=\EN, smso=\Ej, smul=\El, -# No backspace key in the main QWERTY cluster. Fortunately, it has a -# NEWLINE/PAGE key just above RETURN that sends a strange single-character -# code. Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS -# mode), this key can be used as the erase key; I find I like this. Because -# some people and some systems may not, there is another termcap ("ampex175") -# that suppresses this little eccentricity by omitting the relevant capability. -ampex175-b|ampex d175 using left arrow for erase, - kbs=^_, use=ampex175, -# From: Richard Bascove -# (ampex210: removed obsolete ":kn#10:" -- esr) -ampex210|a210|ampex a210, - OTbs, am, hs, xenl, - cols#80, it#8, lines#24, xmc#1, - cbt=\EI, clear=\E*, cub1=^H, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, flash=\EU\EX\EU\EX\EU\EX\EU\EX, - fsl=\E.2, home=^^, ht=^I, ich1=\EQ, - if=/usr/share/tabset/std, il1=\EE, invis@, - is2=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En, kcub1=^H, - kcud1=^V, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, - kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, - kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, khome=^^, - tsl=\E.0\Eg\E}\Ef, use=adm+sgr, -# (ampex219: I added / based on the init string, added -# from ampex219w, added =\E[?3l, irresistibly suggested by , -# and moved the padding to be *after* the caps -- esr) -ampex219|ampex-219|amp219|Ampex with Automargins, - hs, xenl, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, cbt=\E[Z, - clear=\E[H\E[2J$<50>, cnorm=\E[?3l, cr=^M, - csr=%i\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, - cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>, - cuu1=\E[A$<2>, cvvis=\E[?3h, dim=\E[1m, ed=\E[J$<50>, - el=\E[K$<3>, home=\E[H, ht=^I, ind=^J, - is2=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~, - kf1=\E[7~, kf2=\E[8~, kf3=\E[9~, kf4=\E[10~, kf5=\E[11~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H, - rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>, - rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h, - smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>, -ampex219w|ampex-219w|amp219w|Ampex 132 cols, - cols#132, lines#24, - bel=^G, cr=^M, cud1=^J, ind=^J, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219, -# (ampex232: removed , no file and no --esr) -ampex232|ampex-232|Ampex Model 232, - am, - cols#80, lines#24, xmc#1, - cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET, - flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>, - invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L, - kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, - kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, - kf9=^AI\r, khome=^^, use=adm+sgr, -# (ampex: removed , no file and no -- esr) -ampex232w|Ampex Model 232 / 132 columns, - cols#132, lines#24, - is2=\E\034Eg\El, use=ampex232, - -#### Ann Arbor (aa) -# -# Ann Arbor made dream terminals for hackers -- large screen sizes and huge -# numbers of function keys. At least some used monitors in portrait mode, -# allowing up to 76-character screen heights! They were reachable at: -# -# Ann Arbor Terminals -# 6175 Jackson Road -# Ann Arbor, MI 48103 -# (313)-663-8000 -# -# But in 1996 the phone number reaches some kitschy retail shop, and Ann Arbor -# can't be found on the Web; I fear they're long dead. R.I.P. -# - - -# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs. -# Highly modified 6/22 by Mike O'Brien. -# split out into several for the various screen sizes by dave-yost@rand -# Modifications made 3/82 by Mark Horton -# Modified by Tom Quarles at UCB for greater efficiency and more diversity -# status line moved to top of screen, removed 5/82 -# Some unknown person at SCO then hacked the init strings to make them more -# efficient. -# -# assumes the following setup: -# A menu: 0000 1010 0001 0000 -# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 -# C menu: 56 66 0 0 9600 0110 1100 -# D menu: 0110 1001 1 0 -# -# Briefly, the settings are for the following modes: -# (values are for bit set/clear with * indicating our preference -# and the value used to test these termcaps) -# Note that many of these settings are irrelevent to the terminfo -# and are just set to the default mode of the terminal as shipped -# by the factory. -# -# A menu: 0000 1010 0001 0000 -# Block/underline cursor* -# blinking/nonblinking cursor* -# key click/no key click* -# bell/no bell at column 72* -# -# key pad is cursor control*/key pad is numeric -# return and line feed/return for key * -# repeat after .5 sec*/no repeat -# repeat at 25/15 chars per sec. * -# -# hold data until pause pressed/process data unless pause pressed* -# slow scroll/no slow scroll* -# Hold in area/don't hold in area* -# functions keys have default*/function keys disabled on powerup -# -# show/don't show position of cursor during page transmit* -# unused -# unused -# unused -# -# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 -# Baud rate (9600*) -# -# 2 bits of parity - 00=odd,01=even*,10=space,11=mark -# 1 stop bit*/2 stop bits -# parity error detection off*/on -# -# keyboard local/on line* -# half/full duplex* -# disable/do not disable keyboard after data transmission* -# -# transmit entire page/stop transmission at cursor* -# transfer/do not transfer protected characters* -# transmit all characters/transmit only selected characters* -# transmit all selected areas/transmit only 1 selected area* -# -# transmit/do not transmit line separators to host* -# transmit/do not transmit page tab stops tabs to host* -# transmit/do not transmit column tab stop tabs to host* -# transmit/do not transmit graphics control (underline,inverse..)* -# -# enable*/disable auto XON/XOFF control -# require/do not require receipt of a DC1 from host after each LF* -# pause key acts as a meta key/pause key is pause* -# unused -# -# unused -# unused -# unused -# unused -# -# XON character (17*) -# XOFF character (19*) -# -# C menu: 56 66 0 0 9600 0110 1100 -# number of lines to print data on (printer) (56*) -# -# number of lines on a sheet of paper (printer) (66*) -# -# left margin (printer) (0*) -# -# number of pad chars on new line to printer (0*) -# -# printer baud rate (9600*) -# -# printer parity: 00=odd,01=even*,10=space,11=mark -# printer stop bits: 2*/1 -# print/do not print guarded areas* -# -# new line is: 01=LF,10=CR,11=CRLF* -# unused -# unused -# -# D menu: 0110 1001 1 0 -# LF is newline/LF is down one line, same column* -# wrap to preceding line if move left from col 1*/don't wrap -# wrap to next line if move right from col 80*/don't wrap -# backspace is/is not destructive* -# -# display*/ignore DEL character -# display will not/will scroll* -# page/column tab stops* -# erase everything*/erase unprotected only -# -# editing extent: 0=display,1=line*,2=field,3=area -# -# unused -# - -annarbor4080|aa4080|ann arbor 4080, - OTbs, am, - cols#80, lines#40, - bel=^G, clear=\014$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=^_, - cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%{64}%+%c, - cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=^J, kbs=^^, kcub1=^H, - kcud1=^J, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P, - -# Strange Ann Arbor terminal from BRL -aas1901|Ann Arbor K4080 w/S1901 mod, - am, - cols#80, lines#40, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^N, - home=^K, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, ll=^O\0c, - nel=^M^J, - -# If you're using the GNU termcap library, add -# :cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp: -# to these capabilities. This is the nonstandard GNU termcap scrolling -# capability, arguments are: -# 1. Total number of lines on the screen. -# 2. Number of lines above desired scroll region. -# 3. Number of lines below (outside of) desired scroll region. -# 4. Total number of lines on the screen, the same as the first parameter. -# The generic Ann Arbor entry is the only one that uses this. -aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly), - OTbs, am, km, mc5i, mir, xon, - cols#80, it#8, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - clear=\E[H\E[J$<156>, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, - hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL, - il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8, - is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kbs=^H, kcbt=\E[Z, - kclr=\E[J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[P, kdl1=\E[M, kf1=\EOA, kf10=\EOJ, kf11=\EOK, - kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP, - kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT, - kf21=\EOU, kf22=\EOV, kf23=\EOW, kf24=\EOX, kf3=\EOC, - kf4=\EOD, kf5=\EOE, kf6=\EOF, kf7=\EOG, kf8=\EOH, kf9=\EOI, - khome=\E[H, kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i, - mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, - rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E\\, - rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, - sgr0=\E[m, - smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\, - smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%p1%{1}%+%dd, - -aaa+rv|ann arbor ambassador in reverse video, - blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m, - is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m, - rs1=\E[H\E[7m\E[J$<156>, - sgr=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m, -# Ambassador with the DEC option, for partial vt100 compatibility. -aaa+dec|ann arbor ambassador in dec vt100 mode, - acsc=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}, - csr=\E[%i%p1%d;%p2%dr, enacs=\E(0, rmacs=^N, - sgr=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;, - smacs=^O, -aaa-18|ann arbor ambassador/18 lines, - lines#18, - is2=\E7\E[60;0;0;18p\E8, - rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p, - use=aaa+unk, -aaa-18-rv|ann arbor ambassador/18 lines+reverse video, - use=aaa+rv, use=aaa-18, -aaa-20|ann arbor ambassador/20 lines, - lines#20, - is2=\E7\E[60;0;0;20p\E8, - rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p, - use=aaa+unk, -aaa-22|ann arbor ambassador/22 lines, - lines#22, - is2=\E7\E[60;0;0;22p\E8, - rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p, - use=aaa+unk, -aaa-24|ann arbor ambassador/24 lines, - lines#24, - is2=\E7\E[60;0;0;24p\E8, - rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p, - use=aaa+unk, -aaa-24-rv|ann arbor ambassador/24 lines+reverse video, - use=aaa+rv, use=aaa-24, -aaa-26|ann arbor ambassador/26 lines, - lines#26, - is2=\E7\E[60;0;0;26p\E8, - rmcup=\E[60;0;0;26p\E[26;1H\E[K, - smcup=\E[H\E[J$<156>\E[26;0;0;26p, use=aaa+unk, -aaa-28|ann arbor ambassador/28 lines, - lines#28, - is2=\E7\E[60;0;0;28p\E8, - 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, - 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, -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, - rmcup=\E[60;1;0;30p\E[59;1H\E[K, - smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s, -aaa-s-rv-ctxt|aaa-30-s-rv-ct|ann arbor ambassador/30 lines+status+save context+reverse video, - rmcup=\E[60;1;0;30p\E[59;1H\E[K, - smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s-rv, -aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines, - lines#30, - is2=\E7\E[60;0;0;30p\E8, - rmcup=\E[60;0;0;30p\E[30;1H\E[K, - smcup=\E[H\E[J$<156>\E[30;0;0;30p, use=aaa+unk, -aaa-30-rv|aaa-rv|ann arbor ambassador/30 lines in reverse video, - use=aaa+rv, use=aaa-30, -aaa-30-ctxt|aaa-ctxt|ann arbor ambassador/30 lines; saving context, - rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p, - use=aaa-30, -aaa-30-rv-ctxt|aaa-rv-ctxt|ann arbor ambassador/30 lines reverse video; saving context, - rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p, - use=aaa+rv, use=aaa-30, -aaa-36|ann arbor ambassador/36 lines, - lines#36, - is2=\E7\E[60;0;0;36p\E8, - rmcup=\E[60;0;0;36p\E[36;1H\E[K, - smcup=\E[H\E[J$<156>\E[36;0;0;36p, use=aaa+unk, -aaa-36-rv|ann arbor ambassador/36 lines+reverse video, - use=aaa+rv, use=aaa-36, -aaa-40|ann arbor ambassador/40 lines, - lines#40, - is2=\E7\E[60;0;0;40p\E8, - rmcup=\E[60;0;0;40p\E[40;1H\E[K, - smcup=\E[H\E[J$<156>\E[40;0;0;40p, use=aaa+unk, -aaa-40-rv|ann arbor ambassador/40 lines+reverse video, - use=aaa+rv, use=aaa-40, -aaa-48|ann arbor ambassador/48 lines, - lines#48, - is2=\E7\E[60;0;0;48p\E8, - rmcup=\E[60;0;0;48p\E[48;1H\E[K, - smcup=\E[H\E[J$<156>\E[48;0;0;48p, use=aaa+unk, -aaa-48-rv|ann arbor ambassador/48 lines+reverse video, - use=aaa+rv, use=aaa-48, -aaa-60-s|ann arbor ambassador/59 lines+status, - eslok, hs, - lines#59, - dsl=\E7\E[60;0;0;60p\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;60p\E8, - tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk, -aaa-60-s-rv|ann arbor ambassador/59 lines+status+reverse video, - use=aaa+rv, use=aaa-60-s, -aaa-60-dec-rv|ann arbor ambassador/dec mode+59 lines+status+rev video, - use=aaa+dec, use=aaa+rv, use=aaa-60-s, -aaa-60|ann arbor ambassador/60 lines, - lines#60, - is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8, - use=aaa+unk, -aaa-60-rv|ann arbor ambassador/60 lines+reverse video, - use=aaa+rv, use=aaa-60, -aaa-db|ann arbor ambassador 30/destructive backspace, - OTbs@, - cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30, - -guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols, - lines#33, - flash=\E[>59h$<100>\E[>59l, - is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l, - rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk, -guru+rv|guru changes for reverse video, - flash=\E[>59l$<100>\E[>59h, is3=\E[>59h, -guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video, - use=guru+rv, use=guru-33, -guru+s|guru status line, - eslok, hs, - dsl=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K, fsl=\E[>51l, - rmcup=\E[255;1p\E[255;1H\E[K, smcup=, - tsl=\E[>51h\E[1;%p1%dH\E[2K, -guru-nctxt|guru with no saved context, - smcup=\E[H\E[J$<156>\E[33p\E[255;1H\E[K, use=guru, -guru-s|guru-33-s|ann arbor guru/33 lines+status, - lines#32, - is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J, - smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-24|ann arbor guru 24 lines, - cols#80, lines#24, - is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p, - use=guru+unk, -guru-44|ann arbor guru 44 lines, - cols#97, lines#44, - is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p, - use=guru+unk, -guru-44-s|ann arbor guru/44 lines+status, - lines#43, - is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J, - smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-76|guru with 76 lines by 89 cols, - cols#89, lines#76, - is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p, - use=guru+unk, -guru-76-s|ann arbor guru/76 lines+status, - cols#89, lines#75, - is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J, - smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-76-lp|guru-lp|guru with page bigger than line printer, - cols#134, lines#76, - is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p, - use=guru+unk, -guru-76-w|guru 76 lines by 178 cols, - cols#178, lines#76, - is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p, - use=guru+unk, -guru-76-w-s|ann arbor guru/76 lines+status+wide, - cols#178, lines#75, - is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J, - smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-76-wm|guru 76 lines by 178 cols with 255 cols memory, - cols#178, lines#76, - is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p, - use=guru+unk, -aaa-rv-unk|ann arbor unknown type, - lh#0, lw#0, nlab#0, - blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m, - is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m, - rs1=\E[H\E[7m\E[J, - sgr=\E[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - sgr0=\E[7m, smso=\E[m, smul=\E[4;7m, - -#### Applied Digital Data Systems (adds) -# -# ADDS itself is long gone. ADDS was bought by NCR, and the same group made -# ADDS and NCR terminals. When AT&T and NCR merged, the engineering for -# terminals was merged again. Then AT&T sold the terminal business to -# SunRiver, which later changed its name to Boundless Technologies. The -# engineers from Teletype, AT&T terminals, ADDS, and NCR (who are still there -# as of early 1995) are at: -# -# Boundless Technologies -# 100 Marcus Boulevard -# Hauppauge, NY 11788-3762 -# Vox: (800)-231-5445 -# Fax: (516)-342-7378 -# Web: http://boundless.com -# -# Their voice mail used to describe the place as "SunRiver (formerly ADDS)". -# In 1995 Boundless acquired DEC's terminals business. -# - -# Regent: lowest common denominator, works on all regents. -# (regent: renamed ":bc:" to ":le:" -- esr) -regent|Adds Regent Series, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F, cuu1=^Z, - home=\EY\s\s, ind=^J, ll=^A, -# Regent 100 has a bug where if computer sends escape when user is holding -# down shift key it gets confused, so we avoid escape. -regent100|Adds Regent 100, - xmc#1, - bel=^G, - cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, - kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, - kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, - lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, - sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent, -regent20|Adds Regent 20, - bel=^G, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, ed=\Ek, el=\EK, - use=regent, -regent25|Adds Regent 25, - bel=^G, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, khome=^A, - use=regent20, -regent40|Adds Regent 40, - xmc#1, - bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf0=^B1\r, kf1=^B2\r, - kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r, - kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, - lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P, - smul=\E0`, use=regent25, -regent40+|Adds Regent 40+, - is2=\EB, use=regent40, -regent60|regent200|Adds Regent 60, - dch1=\EE, is2=\EV\EB, kdch1=\EE, kich1=\EF, krmir=\EF, - rmir=\EF, rmso=\ER\E0@\EV, smir=\EF, smso=\ER\E0P\EV, - use=regent40+, -# From: Thu Jul 9 09:27:33 1981 -# (viewpoint: added , function key, and capabilities -- esr) -viewpoint|addsviewpoint|adds viewpoint, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cnorm=\017\E0`, cr=^M, cub1=^H, cud1=^J, - cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, - cvvis=\017\E0P, dl1=\El, ed=\Ek$<16.1*>, el=\EK$<16>, - ind=^J, is2=\017\E0`, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, - kf0=^B1, kf2=^B2, kf3=^B!, kf4=^B", kf5=^B#, khome=^A, ll=^A, - rmso=^O, rmul=^O, sgr0=^O, smso=^N, smul=^N, -# Some viewpoints have bad ROMs that foo up on ^O -screwpoint|adds viewpoint with ^O bug, - cvvis@, rmso@, rmul@, smso@, smul@, use=viewpoint, - -# From: Jay S. Rouman 5 Jul 92 -# The /// strings were added by ESR from specs. -# Theory; the vp3a+ wants \E0%c to set highlights, where normal=01000000, -# underline=01100000, rev=01010000, blink=01000010,dim=01000001, -# invis=01000100 and %c is the logical or of desired attributes. -# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(. -# -# Update by TD - 2004: -# Adapted from -# http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt -# -# COMMANDS ASCII CODE -# -# Address, Absolute ESC,=,row,column -# Beep BEL -# Aux Port Enable ESC,@ -# Aux Port Disable ESC,A -# Backspace BS -# Cursor back BS -# Cursor down LF -# Cursor forward FF -# Cursor home RS -# Cursor up VT -# Cursor supress ETB -# Cursor enable CAN -# Erase to end of line ESC,T -# Erase to end of page ESC,Y -# Erase screen SUB -# Keyboard lock SI -# Keyboard unlock SO -# Read current cursor position ESC,? -# Set Attribute ESC,0,x (see below for values of x) -# Tag bit reset ESC,( -# Tag bit set ESC,) -# Transparent Print on ESC,3 -# Transparent Print off ESC,4 -# -# -# ATTRIBUTES -# -# Normal @ 0100 -# Half Intensity A 0101 -# Blinking B 0102 -# Half Intensity Blinking C 0103 -# Reverse Video P 0120 -# Reverse Video Half Intensity Q 0121 -# Reverse Video Blinking R 0122 -# Reverse Video Half Intensity -# Blinking S 0123 -# Underlined ` 0140 -# Underlined Half Intensity a 0141 -# Underlined Blinking b 0142 -# Underlined Half Intensity -# Blinking c 0143 -# Video suppress D 0104 -vp3a+|viewpoint3a+|adds viewpoint 3a+, - am, bw, - cols#80, it#8, lines#24, - blink=\E0B\E), civis=^W, clear=\E*$<80>, cnorm=^X, cr=^M, - cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dim=\E0A\E), - ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=^J, invis=\E0D\E), - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, - nel=^M^J, rev=\E0P\E), rmso=\E(, - sgr=%?%p1%p2%|%p3%|%p4%|%p5%|%p7%|%t\E0%{64}%?%p1%t%{17}%|%;%?%p2%t%{32}%|%;%?%p3%t%{16}%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%c%?%p7%tD%;\E)%e\E(%;, - sgr0=\E(, smso=\E0Q\E), smul=\E0`\E), -vp60|viewpoint60|addsvp60|adds viewpoint60, - use=regent40, -# -# adds viewpoint 90 - from cornell -# Note: emacs sends ei occasionally to insure the terminal is out of -# insert mode. This unfortunately puts the viewpoint90 IN insert -# mode. A hack to get around this is . (Also, -# - :ei=:im=: must be present in the termcap translation.) -# - indicates glitch that attributes stick to location -# - means it's safe to move in standout mode -# - : clears screen and visual attributes without affecting -# the status line -# Function key and label capabilities merged in from SCO. -vp90|viewpoint90|adds viewpoint 90, - OTbs, bw, msgr, xhp, - cols#80, lines#24, - clear=\EG\Ek, cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE, - dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I, - ich1=\EF \EF\025, ind=^J, kbs=^H, kcub1=^U, kcud1=^J, - kcuf1=^F, kcuu1=^Z, kf0=^B1\r, kf1=^B2\r, kf10=^B;\r, - kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r, - kf7=^B8\r, kf8=^B9\r, kf9=^B\:\r, khome=^A, lf0=F1, lf1=F2, - lf10=F11, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, - lf9=F10, ll=^A, rmso=\ER\E0@\EV, rmul=\ER\E0@\EV, - sgr0=\ER\E0@\EV, smso=\ER\E0Q\EV, smul=\ER\E0`\EV, -# Note: if return acts weird on a980, check internal switch #2 -# on the top chip on the CONTROL pc board. -adds980|a980|adds consul 980, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J, - cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d, - dl1=\E\017$<13>, il1=\E\016$<13>, ind=^J, kf0=\E0, kf1=\E1, - kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, - kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N, - -#### C. Itoh Electronics -# -# As of 1995 these people no longer make terminals (they're still in the -# printer business). Their terminals were all clones of the DEC VT series. -# They're located in Orange County, CA. -# - -# CIT 80 - vt-52 emulator, the termcap has been modified to remove -# the delay times and do an auto tab set rather than the indirect -# file used in vt100. -cit80|cit-80|citoh 80, - OTbs, am, - cols#80, lines#24, - clear=\E[H\EJ, cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L, - ind=^J, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=, -# From: Tim Wood Fri Sep 27 09:39:12 PDT 1985 -# (cit101: added / based on init string, merged this with c101 -- esr) -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, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - 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, - 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, -# CIE Terminals CIT-101e from Geoff Kuenning via BRL -# The following termcap entry was created from the Callan cd100 entry. The -# last two lines (with the capabilities in caps) are used by RM-cobol to allow -# full selection of combinations of reverse video, underline, and blink. -# (cit101e: removed unknown :f0=\EOp:f1=\EOq:f2=\EOr:f3=\EOs:f4=\EOt:f5=\EOu:\ -# f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\ -# :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr) -cit101e|C. Itoh CIT-101e, - OTbs, OTpt, am, mir, msgr, - cols#80, it#8, lines#24, - acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr, - cub1=\E[D, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, - cuu1=\E[A, cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, 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, 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, -# From: David S. Lawyer, June 1997: -# The CIT 101-e was made in Japan in 1983-4 and imported by CIE -# Terminals in Irvine, CA. It was part of CITOH Electronics. In the -# late 1980's CIT Terminals went out of business. -# There is no need to use the initialization string is=... (by invoking -# tset or setterm etc.) provided that the terminal has been manually set -# up (and the setup saved with ^S) to be compatible with this termcap. To be -# compatible it should be in ANSI mode (not VT52). A set-up that -# works is to set all the manually setable stuff to factory defaults -# by pressing ^D in set-up mode. Then increse the brighness with the -# up-arrow key since the factory default will likely be dim on an old -# terminal. Then change any options you want (provided that they are -# compatible with the termcap). For my terminal I set: Screen -# Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver: -# on. I also set up mine for parity (but you may not need it). Then -# save the setup with ^S. -# (cit101e-rv: added empty to suppress a tic warning. --esr) -cit101e-rv|Citoh CIT-101e (sets reverse video), - am, eo, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, - OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[3;5v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l\E[?5h$<200/>, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, - 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=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmcup=, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g, sc=\E7, - sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, - u7=\E[6n, u8=\E[?6c, u9=\E[c, -cit101e-n|CIT-101e w/o am, - am@, - cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, - use=cit101e, -cit101e-132|CIT-101e with 132 cols, - cols#132, - kbs=^H, kcub1=^H, kcud1=^J, use=cit101e, -cit101e-n132|CIT-101e with 132 cols w/o am, - am@, - cols#132, - cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, - use=cit101e, -# CIE Terminals CIT-500 from BRL -# The following SET-UP modes are assumed for normal operation: -# GENERATE_XON/XOFF:YES DUPLEX:FULL NEWLINE:OFF -# AUTOWRAP:ON MODE:ANSI SCREEN_LENGTH:64_LINES -# DSPLY_CNTRL_CODES?NO PAGE_WIDTH:80 EDIT_MODE:OFF -# Other SET-UP modes may be set for operator convenience or communication -# requirements. -# Hardware tabs are assumed to be set every 8 columns; they can be set up -# by the "reset", "tset", or "tabs" utilities. No delays are specified; use -# "stty ixon -ixany" to enable DC3/DC1 flow control! -# (cit500: I added / based on the init string -- esr) -cit500|CIE Terminals CIT-500, - OTbs, OTpt, mir, msgr, xon, - OTkn#10, cols#80, it#8, lines#64, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ed=\EJ, el=\EK, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, - il1=\E[L, ind=^J, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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, rc=\E8, rev=\E[7m, - ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, - rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>, - sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - -# C. Itoh printers begin here -citoh|ci8510|8510|c.itoh 8510a, - cols#80, it#8, - bold=\E!, cub1@, - is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073., - rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY, - smul=\EX, use=lpr, -citoh-pica|citoh in pica, - is1=\EN, use=citoh, -citoh-elite|citoh in elite, - cols#96, - is1=\EE, - is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089., - use=citoh, -citoh-comp|citoh in compressed, - cols#136, - is1=\EQ, - is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129., - use=citoh, -# citoh has infinite cols because we don't want lp ever inserting \n\t**. -citoh-prop|citoh-ps|ips|citoh in proportional spacing mode, - cols#32767, - is1=\EP, use=citoh, -citoh-6lpi|citoh in 6 lines per inch mode, - is3=\EA, use=citoh, -citoh-8lpi|citoh in 8 lines per inch mode, - lines#88, - is3=\EB, use=citoh, - -#### Control Data (cdc) -# - -cdc456|cdc 456 terminal, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X, - el=^V, home=^Y, il1=\EL, ind=^J, - -# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick) -cdc721|CDC Viking, - OTbs, am, - cols#80, lines#24, - clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, - cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I, - kcuu1=^W, khome=^Y, -cdc721ll|CDC Vikingll, - OTbs, am, - cols#132, lines#24, - clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, - cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I, - kcuu1=^W, khome=^Y, -# (cdc752: the BRL entry had :ll=\E1 ^Z: commented out -cdc752|CDC 752, - OTbs, am, bw, xhp, - cols#80, lines#24, - bel=^G, clear=\030\E1\s\s, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V, - home=\E1\s\s, ind=^J, ll=^Y, rs1=\E1 \030\002\003\017, -# CDC 756 -# The following switch/key settings are assumed for normal operation: -# 96 chars SCROLL FULL duplex not BLOCK -# Other switches may be set according to communication requirements. -# Insert/delete-character cannot be used, as the whole display is affected. -# "so" & "se" are commented out until jove handles "sg" correctly. -cdc756|CDC 756, - OTbs, am, bw, - OTkn#10, cols#80, lines#24, - bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, - dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=^J, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z, kdch1=\EI, - kdl1=\EL, ked=^X, kel=^V, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, - kf4=\EE, kf5=\EF, kf6=\EG, kf7=\EH, kf8=\Ea, kf9=\Eb, khome=^Y, - khts=^O, kich1=\EK, kil1=\EL, lf0=F1, lf1=F2, lf2=F3, lf3=F4, - lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, ll=^Y^Z, - rs1=\031\030\002\003\017, -# -# CDC 721 from Robert Viduya, Ga. Tech. via BRL. -# -# Part of the long initialization string defines the "DOWN" key to the left -# 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 -# cursor. Termcap doesn't have the capability (as far as I could tell) to -# handle the 721 in 132 column mode. -# -# (cdc721: changed :ri: to :sr: -- esr) -cdc721-esc|Control Data 721, - OTbs, OTpt, am, bw, msgr, xon, - OTkn#10, cols#80, it#8, lines#30, - bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z, - cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W, - dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW, - ich1=^^O, il1=^^R, ind=\036W =\036U, invis=^^^R[, - is2=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036\022J\036\022L\036\022N\036\022P\036\022Q\036\022\036\022\^\036\022b\036\022i\036W =\036\022Z\036\011C1-` `!k/o, - kbs=^H, kcub1=^H, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^q, - kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, kf6=^^w, kf7=^^x, - kf8=^^y, kf9=^^z, khome=^Y, ll=^B =, rev=^^D, - ri=\036W =\036V, rmir=, rmkx=^^^Rl, rmso=^^E, rmul=^], - sgr0=\017\025\035\036E\036\022\\, smir=, smkx=^^^Rk, - smso=^^D, smul=^\, tbc=^^^RY, - -#### Getronics -# -# Getronics is a Dutch electronics company that at one time was called -# `Geveke' and made async terminals; but (according to the company itself!) -# they've lost all their documentation on the command set. The hardware -# documentation suggests the terminals were actually manufactured by a -# Taiwanese electronics company named Cal-Comp. There are known -# to have been at least two models, the 33 and the 50. -# - -# The 50 seems to be a top end vt220 clone, with the addition of a higher -# screen resolution, a larger screen, at least 1 page of memory above and -# below the screen, apparently pages of memory right and left of the screen -# which can be panned, and about 75 function keys (15 function keys x normal, -# shift, control, func A, func B). It also has more setup possibilities than -# the vt220. The monitor case is dated November 1978 and the keyboard case is -# May 1982. -# -# The vt100 emulation works as is. The entry below describes the rather -# non-conformant (but more featureful) ANSI mode. -# -# From: Stephen Peterson , 27 May 1995 -visa50|geveke visa 50 terminal in ansi 80 character mode, - bw, mir, msgr, - 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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, 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, kbs=^H, kc1=\EOR, kc3=\EOS, - kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, - kdl1=\EOS, kf0=\E010, kf1=\E001, kf10=\E011, kf2=\E002, - kf3=\E003, kf4=\E004, kf5=\E005, kf6=\E006, kf7=\E007, - kf8=\E008, kf9=\E009, khome=\E[f, lf2=A delete char, - lf3=A insert line, lf4=A delete line, lf5=A clear, - lf6=A ce of/cf gn, lf7=A print, lf8=A on-line, - lf9=A funcl0=A send, nel=^M^J, rev=\E[7m, rmacs=\E[3l, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m, - rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h, - smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%i%p1%dd, - -#### Human Designed Systems (Concept) -# -# Human Designed Systems -# 400 Fehley Drive -# King of Prussia, PA 19406 -# Vox: (610)-277-8300 -# Fax: (610)-275-5739 -# Net: support@hds.com -# -# John Martin is their termcap expert. They're mostly out of -# the character-terminal business now (1995) and making X terminals. In -# particular, the whole `Concept' line described here was discontinued long -# ago. -# - -# From: Sat Jun 27 07:41:20 1981 -# Extensive changes to c108 by arpavax:eric Feb 1982 -# Some unknown person at SCO then translated it to terminfo. -# -# There seem to be a number of different versions of the C108 PROMS -# (with bug fixes in its Z-80 program). -# -# The first one that we had would lock out the keyboard of you -# sent lots of short lines (like /usr/dict/words) at 9600 baud. -# Try that on your C108 and see if it sends a ^S when you type it. -# If so, you have an old version of the PROMs. -# -# You should configure the C108 to send ^S/^Q before running this. -# It is much faster (at 9600 baud) than the c100 because the delays -# are not fixed. -# new status line display entries for c108-8p: -# - init str #3 - setup term for status display - -# set programmer mode, select window 2, define window at last -# line of memory, set bkgnd stat mesg there, select window 0. -# -# - to status line - select window 2, home cursor, erase to -# end-of-window, 1/2 bright on, goto(line#0, col#?) -# -# - from status line - 1/2 bright off, select window 0 -# -# - disable status display - set bkgnd status mesg with -# illegal window # -# -# There are probably more function keys that should be added but -# I don't know what they are. -# -# No delays needed on c108 because of ^S/^Q handshaking -# -c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages, - is3=\EU\E z"\Ev\001\177 !p\E ;"\E z \Ev \001\177p\Ep\n, - rmcup=\Ev \001\177p\Ep\r\n, use=c108-4p, -c108-4p|concept108-4p|concept 108 w/4 pages, - OTbs, eslok, hs, xon, - pb@, - acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=^M, - cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}%>%t\001%{96}%-%;%{32}%+%c, - cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s, - ind=^J, is1=\EK\E!\E F, - is3=\EU\E z"\Ev\177 !p\E ;"\E z \Ev \001 p\Ep\n, - rmacs=\Ej\s, rmcup=\Ev \001 p\Ep\r\n, smacs=\Ej!, - smcup=\EU\Ev 8p\Ep\r\E\025, - tsl=\E z"\E?\E\005\EE\Ea %+\s, use=c100, -c108-rv|c108-rv-8p|concept 108 w/8 pages in reverse video, - rmcup=\Ev \002 p\Ep\r\n, smcup=\EU\Ev 8p\Ep\r, - use=c108-rv-4p, -c108-rv-4p|concept108rv4p|concept 108 w/4 pages in reverse video, - flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, smso=\EE, - use=c108-4p, -c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mode, - cols#132, - is1=\E F\E", rmcup=\Ev ^A0\001D\Ep\r\n, - smcup=\EU\Ev 8\001D\Ep\r, use=c108-8p, - -# Concept 100: -# These have only window relative cursor addressing, not screen -# relative. To get it to work right here, smcup/rmcup (which -# were invented for the concept) lock you into a one page -# window for screen style programs. -# -# To get out of the one page window, we use a clever trick: -# we set the window size to zero ("\Ev " in rmcup) which the -# terminal recognizes as an error and resets the window to all -# of memory. -# -# This trick works on c100 but does not on c108, sigh. -# -# Some tty drivers use cr3 for concept, others use nl3, hence -# the delays on cr and ind below. This padding is only needed at -# 9600 baud and up. One or the other is commented out depending on -# local conventions. -# -# 2 ms padding on isn't always enough. 6 works fine. Maybe -# less than 6 but more than 2 will work. -# -# Note: can't use function keys f7-f10 because they are -# indistinguishable from arrow keys (!), also, del char and -# clear eol use xon/xoff so they probably won't work very well. -# -# Also note that we don't define insrt/del char/delline/eop/send -# because they don't transmit unless we reset them - I figured -# it was a bad idea to clobber their definitions. -# -# The sequence changes the escape character to ^^ so that -# escapes will be passed through to the printer. Only trouble -# is that ^^ won't be - ^^ was chosen to be unlikely. -# Unfortunately, if you're sending raster bits through to be -# plotted, any character you choose will be likely, so we lose. -# -# \EQ"\EY(^W (send anything from printer to host, for xon/xoff) -# cannot be # in is2 because it will hang a c100 with no printer -# if sent twice. -c100|concept100|concept|c104|c100-4p|hds concept 100, - OTbs, am, eo, mir, ul, xenl, - cols#80, lines#24, pb#9600, vt#8, - bel=^G, blink=\EC, clear=\E?\E\005$<2*>, cr=$<9>\r, - cub1=^H, cud1=^J, cuf1=\E=, - cup=\Ea%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E;, - dch1=\E\021$<16*>, dim=\EE, dl1=\E\002$<3*>, - ed=\E\005$<16*>, el=\E\025$<16>, flash=\Ek$<200>\EK, - ht=\011$<8>, il1=\E\022$<3*>, ind=^J, invis=\EH, ip=$<16*>, - is1=\EK, - is2=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo!\0\E\007!\E\010A@ \E4#\:"\E\:a\E4#;"\E\:b\E4#<"\E\:c, - is3=\Ev $<6>\Ep\n, kbs=^H, kcbt=\E', kctab=\E_, - kcub1=\E>, kcud1=\E<, kcuf1=\E=, kcuu1=\E;, kdch1=\E^Q, - kdl1=\E^B, ked=\E^C, kel=\E^S, kf1=\E5, kf2=\E6, kf3=\E7, - kf4=\E8, kf5=\E9, kf6=\E\:a, kf7=\E\:b, kf8=\E\:c, khome=\E?, - khts=\E], kich1=\E^P, kil1=\E^R, kind=\E[, knp=\E-, kpp=\E., - kri=\E\\, krmir=\E\0, mc4=\036o \E\EQ!\EYP\027, - mc5=\EQ"\EY(\027\EYD\Eo \036, prot=\EI, - rep=\Er%p1%c%p2%{32}%+%c$<.2*>, rev=\ED, - rmcup=\Ev $<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex, - rmso=\Ed, rmul=\Eg, sgr0=\EN@, - smcup=\EU\Ev 8p\Ep\r\E\025$<16>, smir=\E^P, smkx=\EX, - smso=\ED, smul=\EG, -c100-rv|c100-rv-4p|concept100-rv|c100 rev video, - cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, - smso=\EE, use=c100, -oc100|oconcept|c100-1p|old 1 page concept 100, - in, - is3@, use=c100, - -# From: Walter Skorski , 16-oct-1996. -# Lots of notes, originally inline, but ncurses doesn't grok that. -# -# am: not available in power on mode, but turned on with \E[=107;207h in -# is2=. Also, \E=124l in is2= could have been used to prevent needing -# to specify xenl:, but that would have rendered the last space on the -# last line useless. -# bw: Not available in power on mode, but turned on with \E[=107;207h in -# is2=. -# clear: Could be done with \E[2J alone, except that vi (and probably most -# other programs) assume that this also homes the cursor. -# dsl: Go to window 2, go to the beginning of the line, use a line feed to -# scroll the window, and go back to window 1. -# is2: the string may cause a warning to be issued by tic that it -# found a very long line and that it suspects that a comma is missing -# somewhere. This warning can be ignored (unless it comes up more than -# once). The initialization string contains the following commands: -# -# [Setup mode items changed from factory defaults:] -# \E)0 set alternate character set to -# graphics -# ^O set character set to default -# [In case it wasn't] -# \E[m turn off all attributes -# [In case they weren't off] -# \E[=107; cursor wrap and -# 207h character wrap on -# \E[90;3u set Fkey definitions to "transmit" -# defaults -# \E[92;3u set cursor key definitions to -# "transmit" defaults -# \E[43;1u set shift F13 to transmit... -# \177\E$P\177 -# \E[44;1u set shift F14 to transmit... -# \177\E$Q\177 -# \E[45;1u set shift F15 to transmit... -# \177\E$R\177 -# \E[46;1u set shift F16 to transmit... -# \177\E$S\177 -# \E[200;1u set shift up to transmit... -# \177\E$A\177 -# \E[201;1u set shift down to transmit... -# \177\E$B\177 -# \E[202;1u set shift right to transmit... -# \177\E$C\177 -# \E[203;1u set shift left to transmit... -# \177\E$D\177 -# \E[204;1u set shift home to transmit... -# \177\E$H\177 -# \E[212;1u set backtab to transmit... -# \177\E$I\177 -# \E[213;1u set shift backspace to transmit... -# \177\E$^H\177 -# \E[214;1u set shift del to transmit... -# "\E$\177" -# [Necessary items not mentioned in setup mode:] -# \E[2!w move to window 2 -# \E[25;25w define window as line 25 of memory -# \E[!w move to window 1 -# \E[2*w show current line of window 2 as -# status line -# \E[2+x set meta key to use high bit -# \E[;3+} move underline to bottom of character -# -# All Fkeys are set to their default transmit definitions with \E[90;3u -# in is2=. IMPORTANT: to use this terminal definition, the "quit" stty -# setting MUST be redefined or deactivated, because the default is -# contained in almost all of this terminal's Fkey strings! If for some -# reason "quit" cannot be altered, the Fkeys can, but it would be -# necessary to change ^| to ^] in all of these definitions, and add -# \E[2;029!t to is2. -# lines: is set to 24 because this terminal refuses to treat the 25th -# line normally. -# ll: Not available in power on mode, but turned on with \E[=107;207h in -# is2=. -# lm: Pointless, given that this definition locks a single screen of -# memory into view, but what the hey... -# rmso: Could use \E[1;7!{ to turn off only bold and reverse (leaving any -# other attributes alone), but some programs expect this to turn off -# everything. -# rmul: Could use \E[4!{ to turn off only underline (leaving any other -# attributes alone), but some programs expect this to turn off -# everything. -# sgr: Attributes are set on this terminal with the string \E[ followed by -# a list of attribute code numbers (in decimal, separated by -# semicolons), followed by the character m. The attribute code -# numbers are: -# 1 for bold; -# 2 for dim (which is ignored in power on mode); -# 4 for underline; -# 5 for blinking; -# 7 for inverse; -# 8 for not displayable; and -# =99 for protected (except that there are strange side -# effects to protected characters which make them inadvisable). -# The mapping of terminfo parameters to attributes is as follows: -# %p1 (standout) = bold and inverse together; -# %p2 (underline) = underline; -# %p3 (reverse) = inverse; -# %p4 (blink) = blinking; -# %p5 (dim) is ignored; -# %p6 (bold) = bold; -# %p7 (invisible) = not displayable; -# %p8 (protected) is ignored; and -# %p9 (alt char set) = alt char set. -# The code to do this is: -# \E[0 OUTPUT \E[0 -# %?%p1%p6%O IF (standout; bold) OR -# %t;1 THEN OUTPUT ;1 -# %; ENDIF -# %?%p2 IF underline -# %t;4 THEN OUTPUT ;4 -# %; ENDIF -# %?%p4 IF blink -# %t;5 THEN OUTPUT ;5 -# %; ENDIF -# %?%p1%p3%O IF (standout; reverse) OR -# %t;7 THEN OUTPUT ;7 -# %; ENDIF -# %?%p7 IF invisible -# %t;8 THEN OUTPUT ;8 -# %; ENDIF -# m OUTPUT m -# %?%p9 IF altcharset -# %t^N THEN OUTPUT ^N -# %e^O ELSE OUTPUT ^O -# %; ENDIF -# sgr0: Everything is turned off (including alternate character set), since -# there is no way of knowing what it is that the program wants turned -# off. -# smul: The "underline" attribute is reconfigurable to an overline or -# strikethru, or (as done with \E[;3+} in is2=), to a line at the true -# bottom of the character cell. This was done to allow for more readable -# underlined characters, and to be able to distinguish between an -# underlined space, an underscore, and an underlined underscore. -# xenl: Terminal can be configured to not need this, but this "glitch" -# behavior is actually preferable with autowrap terminals. -# -# Parameters kf31= thru kf53= actually contain the strings sent by the shifted -# Fkeys. There are no parameters for shifted Fkeys in terminfo. The is2 -# string modifies the 'O' in kf43 to kf46 to a '$'. -# -# kcbt was originally ^I but redefined in is2=. -# kHOM was \E[H originally but redefined in is2=, as were a number of -# other keys. -# kDC was originally \177 but redefined in is2=. -# -# kbs: Shift was also ^H originally but redefined as \E$^H in is2=. -# tsl: Go to window 2, then do an hpa=. -# -#------- flash=\E[8;3!}^G\E[3;3!} -#------- flash=\E[?5h$<100>\E[?5l -# There are two ways to flash the screen, both of which have their drawbacks. -# The first is to set the bell mode to video, transmit a bell character, and -# set the bell mode back - but to what? There is no way of knowing what the -# user's old bell setting was before we messed with it. Worse, the command to -# set the bell mode also sets the key click volume, and there is no way to say -# "leave that alone", or to know what it's set to, either. -# The second way to do a flash is to set the screen to inverse video, pad for a -# tenth of a second, and set it back - but like before, there's no way to know -# that the screen wasn't ALREADY in inverse video, or that the user may prefer -# it that way. The point is moot anyway, since vi (and probably other -# programs) assume that by defining flash=, you want the computer to use it -# INSTEAD of bel=, rather than as a secondary type of signal. -# -#------- cvvis=\E[+{ -# The is the power on setting, which is also as visible as the cursor -# gets. -#------- wind=\E[%i%p1%d;%p2%d;%p3%{1}%+%d;%p4%{1}%+%dw -# Windowing is possible, but not defined here because it is also used to -# emulate status line functions. Allowing a program to set a window could -# clobber the status line or render it unusable. There is additional memory, -# but screen scroll functions are destructive and do not make use of it. -# -#------- dim= Not available in power on mode. -# You have a choice of defining low intensity characters as "half bright" and -# high intensity as "normal", or defining low as "normal" and high as "bold". -# No matter which you choose, only one of either "half bright" or "bold" is -# available at any time, so taking the time to override the default is -# pointless. -# -#------- prot=\E[=0;99m -# Not defined, because it appears to have some strange side effects. -#------- pfkey=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%; -#------- pfloc=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%; -#------- pfx=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%d;1u\177%p2%s\177%; -# Available, but making them available to programs is inadvisable. -# The code to do this is: -# %?%p1%{24}%< IF ((key; 24) <; -# %p1%{30}%> ((key; 30) >; -# %p1%{54}%< (key; 54) < -# %A ) AND -# %O ) OR -# [that is, "IF key < 24 OR (key > 30 AND key < 54)",] -# %t\E[ THEN OUTPUT \E[ -# %p1%d OUTPUT (key) as decimal -# [next line applies to pfx only] -# ;1 OUTPUT ;1 -# u OUTPUT u -# \177 OUTPUT \177 -# %p2%s OUTPUT (string) as string -# \177 OUTPUT \177 -# [DEL chosen as delimiter, but could be any character] -# [implied: ELSE do nothing] -# %; ENDIF -# -#------- rs2= -# Not defined since anything it might do could be done faster and easier with -# either Meta-Shift-Reset or the main power switch. -# -#------- smkx=\E[1!z -#------- rmkx=\E[!z -# These sequences apply to the cursor and setup keys only, not to the -# numeric keypad. But it doesn't matter anyway, since making these -# available to programs is inadvisable. -# For the key definitions below, all sequences beginning with \E$ are -# custom and programmed into the terminal via is2. \E$ also has no -# meaning to any other terminal. -# -#------- cmdch=\E[;%p1%d!t -# Available, but making it available to programs is inadvisable. -#------- smxon=\E[1*q -# Available, but making it available to programs is inadvisable. -# Terminal will send XON/XOFF on buffer overflow. -#------- rmxon=\E[*q -# Available, but making it available to programs is inadvisable. -# Terminal will not notify on buffer overflow. -#------- smm=\E[2+x -#------- rmm=\E[+x -# Available, but making them available to programs is inadvisable. -# -# Printing: -# It's not made clear in the manuals, but based on other ansi/vt type -# terminals, it's a good guess that this terminal is capable of both -# "transparent print" (which doesn't copy data to the screen, and -# therefore needs mc5i: specified to say so) and "auxilliary print" -# (which does duplicate printed data on the screen, in which case mc4= -# and mc5= should use the \E[?4i and \E[?5i strings instead). - -hds200|Human Designed Systems HDS200, - am, bw, eslok, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, lm#0, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{, - clear=\E[H\E[J, cnorm=\E[+{, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K, - fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, 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\E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177\E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+}, - kDC=\E$\177, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H, - kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, kent=^M, kf1=^\001\r, kf10=^\010\r, - kf11=^\011\r, kf12=^\012\r, kf13=\EOP, kf14=\EOQ, - kf15=\EOR, kf16=\EOS, kf17=^\017\r, kf18=^\018\r, - kf19=^\019\r, kf2=^\002\r, kf20=^\020\r, kf21=^\021\r, - kf22=^\022\r, kf23=^\023\r, kf3=^\003\r, kf31=^\031\r, - kf32=^\032\r, kf33=^\033\r, kf34=^\034\r, kf35=^\035\r, - kf36=^\036\r, kf37=^\037\r, kf38=^\038\r, kf39=^\039\r, - kf4=^\004\r, kf40=^\040\r, kf41=^\041\r, kf42=^\042\r, - kf43=\E$P, kf44=\E$Q, kf45=\E$R, kf46=\E$S, kf47=^\047\r, - kf48=^\048\r, kf49=^\049\r, kf5=^\005\r, kf50=^\050\r, - kf51=^\051\r, kf52=^\052\r, kf53=^\053\r, kf6=^\006\r, - kf7=^\007\r, kf8=^\008\r, kf9=^\009\r, khome=\E[H, - kind=\E[T, knp=\E[U, kpp=\E[V, kri=\E[S, ll=\E[H\E[A, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\E[E, rc=\E8, - rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017, - rmul=\E[m\017, sc=\E7, - 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, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG, - vpa=\E[%i%p1%dd, - -# through included to specify padding needed in raw mode. -# (avt-ns: added empty to suppress a tic warning --esr) -avt-ns|concept avt no status line, - OTbs, am, eo, mir, ul, xenl, xon, - cols#80, it#8, lines#24, lm#192, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[=119h, dch1=\E[P, 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>, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>, - invis=\E[8m, 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, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E^B\r, ked=\E^D\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, khome=\E[H, kich1=\E^A\r, kil1=\E^C\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, rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, - ri=\EM$<4>, rmacs=\016$<1>, rmcup=\E[w\E2\r\n, - rmir=\E[4l, rmkx=\E[!z\E[0;2u, rmso=\E[7!{, rmul=\E[4!{, - sc=\E7, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, - sgr0=\E[m, smacs=\017$<1>, smcup=\E[=4l\E[1;24w\E2\r, - smir=\E[4h, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, -avt-rv-ns|concept avt in reverse video mode/no status line, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, - use=avt-ns, -avt-w-ns|concept avt in 132 column mode/no status line, - is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, - use=avt-ns, -avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, - smcup=\E[H\E[1;24;1;132w, use=avt-ns, - -# Concept AVT with status line. We get the status line using the -# "Background status line" feature of the terminal. We swipe the -# first line of memory in window 2 for the status line, keeping -# 191 lines of memory and 24 screen lines for regular use. -# The first line is used instead of the last so that this works -# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this -# assumes an 8 page AVT but lm isn't currently used anywhere.) -# -avt+s|concept avt status line changes, - eslok, hs, - lm#191, - dsl=\E[0*w, fsl=\E[1;1!w, - is3=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n, - rmcup=\E[2w\E2\r\n, smcup=\E[2;25w\E2\r, - tsl=\E[2;1!w\E[;%p1%dH\E[2K, -avt|avt-s|concept-avt|avt w/80 columns, - use=avt+s, use=avt-ns, -avt-rv|avt-rv-s|avt reverse video w/sl, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, - use=avt+s, use=avt-ns, -avt-w|avt-w-s|concept avt 132 cols+status, - is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, - use=avt+s, use=avt-ns, -avt-w-rv|avt-w-rv-s|avt wide+status+rv, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, - smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns, - -#### Contel Business Systems. -# - -# Contel c300 and c320 terminals. -contel300|contel320|c300|Contel Business Systems C-300 or C-320, - am, in, xon, - cols#80, lines#24, xmc#1, - bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>, - el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH, - hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>, - kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD, - kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA, - rmso=\E!\0, sgr0=\E!\0, smso=\E!\r, tbc=\E3, -# Contel c301 and c321 terminals. -contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321, - flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>, - use=contel300, - -#### Data General (dg) -# -# According to James Carlson writing in January 1995, -# the terminals group at Data General was shut down in 1991; all these -# terminals have thus been discontinued. -# -# DG terminals have function keys that respond to the SHIFT and CTRL keys, -# e.g., SHIFT-F1 generates a different code from F1. To number the keys -# sequentially, first the unmodified key codes are listed as F1 through F15. -# Then their SHIFT versions are listed as F16 through F30, their CTRL versions -# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as -# F46 through F60. This is done in the private "includes" below whose names -# start with "dgkeys+". -# -# DG terminals generally support 8 bit characters. For each of these terminals -# two descriptions are supplied: -# 1) A default description for 8 bits/character communications, which -# uses the default DG international character set and keyboard codes. -# 2) A description with suffix "-7b" for 7 bits/character communications. -# This description must use the NON-DEFAULT native keyboard language. - -# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33), -# Ctrl/Shift fdkeys (kf34-kf44). - -dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys, - ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z, - kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C, - kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z, - kf11=\233011z, kf12=\233012z, kf13=\233013z, - kf14=\233014z, kf15=\233000z, kf16=\233101z, - kf17=\233102z, kf18=\233103z, kf19=\233104z, - kf2=\233002z, kf20=\233105z, kf21=\233106z, - kf22=\233107z, kf23=\233108z, kf24=\233109z, - kf25=\233110z, kf26=\233111z, kf27=\233112z, - kf28=\233113z, kf29=\233114z, kf3=\233003z, - kf30=\233100z, kf31=\233201z, kf32=\233202z, - kf33=\233203z, kf34=\233204z, kf35=\233205z, - kf36=\233206z, kf37=\233207z, kf38=\233208z, - kf39=\233209z, kf4=\233004z, kf40=\233210z, - kf41=\233211z, kf42=\233212z, kf43=\233213z, - kf44=\233214z, kf45=\233200z, kf46=\233301z, - kf47=\233302z, kf48=\233303z, kf49=\233304z, - kf5=\233005z, kf50=\233305z, kf51=\233306z, - kf52=\233307z, kf53=\233308z, kf54=\233309z, - kf55=\233310z, kf56=\233311z, kf57=\233312z, - kf58=\233313z, kf59=\233314z, kf6=\233006z, - kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z, - khome=\233H, kprt=\233i, - -dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys, - ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z, - kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z, - kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z, - kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z, - kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z, - kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z, - kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z, - kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z, - kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z, - kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z, - kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z, - kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z, - kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z, - kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z, - kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z, - kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z, - kf9=\E[009z, khome=\E[H, kprt=\E[i, - -dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys, - kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K, - kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c, - kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r, - kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3, - kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8, - kf31=^^9, kf32=^^\:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#, - kf37=^^$, kf38=^^%%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(, - kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w, - kf8=^^x, kf9=^^y, khome=^H, - -dgkeys+15|Private entry describing 15 DG mode special keys, - kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^, - kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^}, - kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d, - kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i, - kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s, - kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5, - kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^\:, - kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!, - kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%%, kf51=^^&, - kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,, - kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x, - kf9=^^y, - -# Data General color terminals use the "Tektronix" color model. The total -# number of colors varies with the terminal model, as does support for -# attributes used in conjunction with color. - -# Removed u7, u8 definitions since they conflict with tack: -# Preserve user-defined colors in at least some cases. -# u7=^^Fh, -# Default is ACM mode. -# u8=^^F}20^^Fi^^F}21, -# -dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode, - bce, - colors#16, ncv#53, pairs#256, - op=\036Ad\036Bd, - setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c, - -dg+fixed|Fixed color info for DG D430C terminals in DG mode, - use=dgunix+fixed, - -# Video attributes are coordinated using static variables set by "sgr", then -# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings. -# (D=dim, U=underline, B=blink, R=reverse.) -dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode, - bce, - colors#8, ncv#16, pairs#64, - op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m, - setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - -dg+color|Color info for Data General D470C terminals in ANSI mode, - colors#16, ncv#53, pairs#256, - setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - 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, - -dgmode+color|Color info for Data General D470C terminals in DG mode, - colors#16, pairs#256, - setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - 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}%*%{1000}%/%02X, - oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00, - op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D, - scp=\036RG2%p1%02X, - -# Colors are in the order: normal, reverse, dim, dim + reverse. -dg+ccc|Configurable color info for DG D430C terminals in DG mode, - bce, ccc, - colors#52, ncv#53, pairs#26, - initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c, - oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00, - op=\036RF4831\:\036RF2>31;\036RF1=31<\036RF3?31=, - scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c, - -# The generic DG terminal type (an 8-bit-clean subset of the 6053) -# Initialization string 1 sets: -# ^R - vertical scrolling enabled -# ^C - blinking enabled -dg-generic|Generic Data General terminal in DG mode, - am, bw, msgr, xon, - cols#80, lines#24, - bel=^G, blink=^N, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, - cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C, - mc0=^Q, nel=^J, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\, - smul=^T, use=dgkeys+11, - -# According to the 4.4BSD termcap file, the dg200 should be the -# termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap -# notation that's "^P%r%+\200%+\200"). Those \200s are suspicious, -# maybe they were originally nuls (which would fit). - -dg200|data general dasher 200, - OTbs, am, bw, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, - cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=^J, - kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^z, kf1=^^q, - kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v, kf7=^^w, kf8=^^x, - kf9=^^y, khome=^H, lf0=f10, nel=^J, rmso=^^E, rmul=^U, - smso=^^D, smul=^T, - -# Data General 210/211 (and 410?) from Lee Pearson (umich!lp) via BRL -dg210|dg-ansi|Data General 210/211, - am, - cols#80, lines#24, - OTnl=\E[B, clear=\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, -# From: Peter N. Wan -# courtesy of Carlos Rucalde of Vantage Software, Inc. -# (dg211: this had ., which was an ancient termcap hangover. -# I suspect the d200 function keys actually work on the dg211, check it out.) -dg211|Data General d211, - cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@, - kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=^M^Z, rmcup=^L, - rmso=\036E$<\0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200, - -# dg450 from Cornell (not official) -dg450|dg6134|data general 6134, - cub1@, cuf1=^X, use=dg200, - -# Not official... -# Note: lesser Dasher terminals will not work with vi because vi insists upon -# having a command to move straight down from any position on the bottom line -# and scroll the screen up, or a direct vertical scroll command. The 460 and -# above have both, the D210/211, for instance, has neither. We must use ANSI -# mode rather than DG mode because standard UNIX tty drivers assume that ^H is -# backspace on all terminals. This is not so in DG mode. -# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the -# grounds that there is no matching ":ml:" -# fixed garbled ":k9=\E[00\:z:" capability -- esr) -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, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, 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, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3, - lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m, - ri=\E[T, rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, -# From: Wayne Throop (not official) -# Data General 605x -# Ought to work for a Model 6242, Type D210 as well as a 605x. -# Note that the cursor-down key transmits ^Z. Job control users, beware! -# This also matches a posted description of something called a `Dasher 100' -# so there's a dg100 alias here. -# (dg6053: the 4.4BSD file had , , . -- esr) -dg6053-old|dg100|data general 6053, - OTbs, am, bw, ul, - cols#80, lines#24, - OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z, - cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K, - home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X, - kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, - kf6=^^w, kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L, - rmso=\0^^E, rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D, - smul=^T, - -# (Some performance can be gained over the generic DG terminal type) -dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053, - xon@, - home=^P\0\0, ll=^P\0^W, use=dg-generic, - -# Like 6053, but adds reverse video and more keypad and function keys. -d200|d200-dg|Data General DASHER D200, - bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^], - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;, - sgr0=\017\025\035\036E, smso=^^D^\, use=dgkeys+15, - use=dg6053, - -# DASHER D210 series terminals in ANSI mode. -# Reverse video, no insert/delete character/line, 7 bits/character only. -# -# Initialization string 1 sets: -# <0 - scrolling enabled -# <1 - blink enabled -# <4 - print characters regardless of attributes -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=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l, - ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, - sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m, - sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b, - -# DASHER D210 series terminals in DG mode. -# Like D200, but adds clear to end-of-screen and needs XON/XOFF. -d210-dg|d214-dg|Data General DASHER D210 series in DG mode, - xon, - ed=^^FF, use=d200-dg, - -# DASHER D211 series terminals in ANSI mode. -# Like the D210, but with 8-bit characters and local printer support. -# -# Initialization string 2 sets: -# \E[2;1;1;1v -# 2;1 - 8 bit operations -# 1;1 - 8 bit (international) keyboard language -# \E(B - default primary character set (U.S. ASCII) -# \E)4 - default secondary character set (international) -# ^O - primary character set -# -d211|d215|Data General DASHER D211 series, - km, - is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b, - use=d210, - -# Initialization string 2 sets: -# \E[2;0;1;0v -# 2;0 - 7 bit operations -# 1;0 - 7 bit (native) keyboard language -# \E(0 - default character set (the keyboard native language) -# ^O - primary character set -d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode, - km@, - is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211, - -# Like the D210 series, but adds support for 8-bit characters. -# -# Reset string 2 sets: -# ^^N - secondary character set -# ^^FS0> - 8 bit international character set -# ^^O - primary character set -# ^^FS00 - default character set (matching the native keyboard language) -# -d211-dg|d215-dg|Data General DASHER D211 series in DG mode, - km, - rs2=\036N\036FS0>\036O\036FS00, use=d210-dg, - -d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode, - use=d211-dg, - -# Enhanced DG mode with changes to be more UNIX compatible. -d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode, - mc5i, - it#8, - acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI, - clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA, - el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J, - is1=\022\003\036P@1, is3=\036Fz0, kHOM=^^Pf, kLFT=^^Pd, - kPRT=^^P1, kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB, - kcuf1=^^PC, kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0, - mc0=\036F?9, mc4=^^Fa, mc5=^^F`, rmacs=\036FS00, - rs2=\036N\036FS0E\036O\036FS00, - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;, - sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11, - vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg, -d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines, - lines#25, - is3=\036Fz2, use=d216+, - -d217-unix|Data General DASHER D217 in DG-UNIX mode, - use=d216-unix, -d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines, - use=d216-unix-25, - -# DASHER D220 color terminal in ANSI mode. -# Like the D470C but with fewer colors and screen editing features. -# -# Initialization string 1 sets: -# \E[<0;<1;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <4 - print characters regardless of attributes -# \E[m - all attributes off -# Reset string 1 sets: -# \Ec - initial mode defaults (RIS) -# -d220|Data General DASHER D220, - mc5i@, - dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, - use=dg+color8, use=d470c, - -d220-7b|Data General DASHER D220 in 7 bit mode, - mc5i@, - dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, - use=dg+color8, use=d470c-7b, - -# Initialization string 3 sets: -# - default cursor (solid rectangle) -# Reset string 2 sets: -# ^^N - secondary character set -# ^^FS0> - 8 bit international character set -# ^^O - primary character set -# ^^FS00 - default character set (matching the native keyboard language) -# -d220-dg|Data General DASHER D220 color terminal in DG mode, - mc5i@, - dl1@, home@, il1@, is2@, is3=\036FQ2, ll@, mc4@, mc5@, rs1@, - rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8, - use=d470c-dg, - -# DASHER D230C color terminal in ANSI mode. -# Like the D220 but with minor ANSI compatibility improvements. -# -d230c|d230|Data General DASHER D230C, - blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=^M^J, - rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m, - sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;, - sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m, - smul=\E[4;50m, use=dgkeys+7b, use=d220, - -d230c-dg|d230-dg|Data General DASHER D230C in DG mode, - use=d220-dg, - -# DASHER D400/D450 series terminals. -# These add intelligent features like insert/delete to the D200 series. -# -# Initialization string 2 sets: -# ^^FQ2 - default cursor (solid rectangle) -# ^^FW - character protection disabled -# ^^FJ - normal (80 column) mode -# ^^F\^ - horizontal scrolling enabled (for alignment) -# ^^FX004? - margins at columns 0 and 79 -# ^^F] - horizontal scrolling disabled -# ^^O - primary character set -# ^^FS00 - default character set (the keyboard native language) -# - (should reset scrolling regions, but that glitches the screen) -# Reset string 1 sets: -# ^^FA - all terminal defaults except scroll rate -# Reset string 2 sets: -# ^^F] - horizontal scrolling disabled -# ^^FT0 - jump scrolling -# -d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series, - mc5i, - acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\036FQ0, - cnorm=\036FQ2, dch1=^^K, dl1=^^FI, - enacs=\036N\036FS11\036O, home=^^FG, hpa=\020%p1%c\177, - ich1=^^J, il1=^^FH, - is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O\036FS00, - ll=\036FG\027, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O, - rs1=^^FA, rs2=\036F]\036FT0, - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;, - sgr0=\017\025\035\036E\036O, smacs=^^N, - vpa=\020\177%p1%c, use=d210-dg, - -# DASHER D410/D460 series terminals in ANSI mode. -# These add a large number of intelligent terminal features. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[5;0v - normal (80 column) mode -# \E[1;1;80w - margins at columns 1 and 80 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -# Initialization string 2 sets: -# \E[3;2;2;1;1;1v -# 3;2 - default cursor (solid rectangle) -# 2;1 - 8 bit operations -# 1;1 - international keyboard language -# \E(B - default primary character set (U.S. ASCII) -# \E)4 - default secondary character set (international) -# ^O - primary character set -# -# Reset string 1 sets: -# \Ec - initial mode defaults (RIS) -# \E[<2h - horizontal scrolling disabled -# -# Reset string 2 sets: -# \E[4;0;2;1;1;1v -# 4;0 - jump scrolling -# 2;1 - 8 bit operations -# 1;1 - 8 bit (international) keyboard language -# \E(B - default primary character set (U.S. ASCII) -# \E)4 - default secondary character set (international) -# -d410|d411|d460|d461|Data General DASHER D410/D460 series, - mc5i, - acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v, - cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, - is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h, - is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i, - ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h, - rs2=\E[4;0;2;1;1;1v\E(B\E)4, - sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;, - sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211, - -# Initialization string 2 sets: -# \E[3;2;2;0;1;0v -# 3;2 - default cursor (solid rectangle) -# 2;0 - 7 bit operations -# 1;0 - 7 bit (native) keyboard language -# \E(0 - default character set (the keyboard native language) -# ^O - primary character set -# -# Reset string 2 sets: -# \E[4;0;2;0;1;0v -# 4;0 - jump scrolling -# 2;0 - 7 bit operations -# 1;0 - 7 bit (native) keyboard language -# \E(0 - default character set (the keyboard native language) -# -d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode, - km@, - enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O, - rs2=\E[4;0;2;0;1;0v\E(0, - sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410, - -d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode, - km, - enacs@, rmacs=\036FS00, - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;, - sgr0=\017\025\035\036E\036FS00, smacs=\036FS11, - use=d400-dg, - -# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[5;1v - compressed (135 column) mode -# \E[1;1;126 - margins at columns 1 and 126 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -# Reset string 1 sets: -# \Ec - initial mode defaults (RIS) -# \E[5;1v - compressed (135 column) mode -# \E[1;1;126w - margins at columns 1 and 126 -# \E[<2h - horizontal scrolling disabled -# -d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode, - cols#126, - is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, - rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410, - -d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode, - cols#126, - is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, - rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410-7b, - -d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode, - use=d410-dg, - -# These add intelligent features like scrolling regions. -d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode, - civis=\036FQ0, clear=^^FE, cnorm=\036FQ5, - cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI, - home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH, - is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O\036FS00, - ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I, - rs1=\036FA\036FT0, rs2=\036P@1, sc=\036F}10, - vpa=\036FPFF%p1%2.2X, - wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X, - use=d216+, -d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode, - cols#132, - is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O\036FS00, - rs2=\036P@1\036FK\036FX0083, - wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2%>%t001%;\036FX%p3%2.2X%p4%2.2X, - use=d412-unix, -d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines, - lines#25, - is3=\036Fz2, - wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X, - use=d462+, -d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line, - eslok, hs, - clear=\036FG\036PH, fsl=\036F}01\022, - is3=\036Fz2\036F}00\036FB180000\036F}01, ll@, - tsl=\036F}00\036FP%p1%2.2X18\036PG, - wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X, - use=d462+, - -# Relative cursor motions are confined to the current window, -# which is not what the scrolling region specification expects. -# Thus, relative vertical cursor positioning must be deleted. -d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region, - csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;, - cud1@, cuu1@, ll@, use=d462+, - -d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode, - use=d412-unix, -d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode, - use=d412-unix-w, -d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines, - use=d412-unix-25, -d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line, - use=d412-unix-s, -d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region, - use=d412-unix-sr, - -d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode, - use=d413-unix, -d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode, - use=d413-unix-w, -d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines, - use=d413-unix-25, -d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line, - use=d413-unix-s, -d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region, - use=d413-unix-sr, - -d430c-dg|d430-dg|Data General D430C in DG mode, - use=d413-dg, use=dg+fixed, -d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors, - use=d413-dg, use=dg+ccc, - -d430c-unix|d430-unix|Data General D430C in DG-UNIX mode, - use=d413-unix, use=dgunix+fixed, -d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode, - use=d413-unix-w, use=dgunix+fixed, -d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines, - use=d413-unix-25, use=dgunix+fixed, -d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line, - use=d413-unix-s, use=dgunix+fixed, -d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region, - use=d413-unix-sr, use=dgunix+fixed, -d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors, - use=d413-unix, use=dgunix+ccc, -d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors, - use=d413-unix-w, use=dgunix+ccc, -d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors, - use=d413-unix-25, use=dgunix+ccc, -d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors, - use=d413-unix-s, use=dgunix+ccc, -d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors, - use=d413-unix-sr, use=dgunix+ccc, - -# DASHER D470C color terminal in ANSI mode. -# Like the D460 but with 16 colors and without a compressed mode. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[1;1;80w - margins at columns 1 and 80 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -d470c|d470|Data General DASHER D470C, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, - sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;, - use=dg+color, use=d460, - -d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, - sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm%?%p9%t\016%e\017%;, - use=dg+color, use=d460-7b, - -# Initialization string 2 sets: -# ^^FQ2 - default cursor (solid rectangle) -# ^^FW - character protection disabled -# ^^F\^ - horizontal scrolling enabled (for alignment) -# ^^FX004? - margins at columns 0 and 79 -# ^^F] - horizontal scrolling disabled -# ^^O - primary character set -# ^^FS00 - default character set (the keyboard native language) -# - (should reset scrolling regions, but that glitches the screen) -# -d470c-dg|d470-dg|Data General DASHER D470C in DG mode, - is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O\036FS00, - use=dgmode+color, use=d460-dg, - -# DASHER D555 terminal in ANSI mode. -# Like a D411, but has an integrated phone. -d555|Data General DASHER D555, - use=d411, -d555-7b|Data General DASHER D555 in 7-bit mode, - use=d411-7b, -d555-w|Data General DASHER D555 in wide mode, - use=d411-w, -d555-7b-w|Data General DASHER D555 in wide 7-bit mode, - use=d411-7b-w, -d555-dg|Data General DASHER D555 series in DG mode, - use=d411-dg, - -# DASHER D577 terminal in ANSI mode. -# Like a D411, but acts as a keyboard for serial printers ("KSR" modes). -d577|Data General DASHER D577, - use=d411, -d577-7b|Data General DASHER D577 in 7-bit mode, - use=d411-7b, -d577-w|Data General DASHER D577 in wide mode, - use=d411-w, -d577-7b-w|Data General DASHER D577 in wide 7-bit mode, - use=d411-7b-w, - -d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode, - use=d411-dg, - -# DASHER D578 terminal. -# Like a D577, but without compressed mode; like a D470C in this respect. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[1;1;80w - margins at columns 1 and 80 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -d578|Data General DASHER D578, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577, -d578-7b|Data General DASHER D578 in 7-bit mode, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577-7b, - -#### Datamedia (dm) -# -# Datamedia was headquartered in Nashua, New Hampshire until it went -# out of business in 1993, but the ID plates on the terminals referred -# to the factory in Pennsauken, NJ. The factory was sold to a PCB board -# manufacturer which threw out all information about the terminals. -# - -cs10|colorscan|Datamedia Color Scan 10, - msgr, - cols#80, lines#24, - bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ed=\E[J, el=\E[K, - ind=^J, 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, -cs10-w|Datamedia Color Scan 10 with 132 columns, - cols#132, - cup=\E[%i%p1%02d;%p2%03dH, use=cs10, - -# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr) -dm1520|dm1521|datamedia 1520, - OTbs, am, xenl, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ht=^I, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_, - khome=^Y, -# dm2500: this terminal has both and . Applications using -# termcap/terminfo directly (rather than through ncurses) might be confused. -dm2500|datamedia2500|datamedia 2500, - OTbs, OTnc, - cols#80, lines#24, - bel=^G, clear=^^^^\177, cub1=^H, cud1=^J, cuf1=^\, - cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z, - dch1=\020\010\030\035$<10*>, - dl1=\020\032\030\035$<10*>, el=^W, home=^B, - ich1=\020\034\030\035$<10*>, - il1=\020\n\030\035\030\035$<15>, ind=^J, pad=\377, - rmdc=^X^], rmir=\377\377\030\035$<10>, rmso=^X^], - smdc=^P, smir=^P, smso=^N, -# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82) -# also, has a meta-key. -# From: -# (dmchat: ":MT:" changed to ":km:" -- esr) -dmchat|dmchat version of datamedia 2500, - km, - dl1=\020\032\030\035$<2/>, - il1=\020\n\030\035\030\035$<1*/>, use=dm2500, -# (dm3025: ":MT:" changed to ":km:" -- esr) -dm3025|datamedia 3025a, - OTbs, km, - cols#80, it#8, lines#24, - bel=^G, clear=\EM$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, - dch1=\010$<6>, dl1=\EP\EA\EQ$<130>, ed=\EJ$<2>, el=\EK, - home=\EH, ht=^I, il1=\EP\n\EQ$<130>, ind=^J, ip=$<6>, - is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP, - smir=\EP, smso=\EO1, -dm3045|datamedia 3045a, - OTbs, am, eo, km@, ul, xenl, - dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA, - kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, - kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r, - khome=\EH, pad=\177, rmdc@, rmir=\EP, rmso@, smdc@, smso@, - use=dm3025, -# Datamedia DT80 soft switches: -# 1 0=Jump 1=Smooth -# Autorepeat 0=off 1=on -# Screen 0=Dark 1=light -# Cursor 0=u/l 1=block -# -# 2 Margin Bell 0=off 1=on -# Keyclick 0=off 1=on -# Ansi/VT52 0=VT52 1=Ansi -# Xon/Xoff 0=Off 1=On -# -# 3 Shift3 0=Hash 1=UK Pound -# Wrap 0=Off 1=On -# Newline 0=Off 1=On -# Interlace 0=Off 1=On -# -# 4 Parity 0=Odd 1=Even -# Parity 0=Off 1=On -# Bits/Char 0=7 1=8 -# Power 0=60Hz 1=50Hz -# -# 5 Line Interface 0=EIA 1=Loop -# Aux Interface 0=EIA 1=Loop -# Local Copy 0=Off 1=On -# Spare -# -# 6 Aux Parity 0=Odd 1=Even -# Aux Parity 0=Off 1=On -# Aux Bits/Char 0=7 1=8 -# CRT Saver 0=Off 1=On -# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding. -dm80|dmdt80|dt80|datamedia dt80/1, - clear=\E[2J\E[H, cud1=^J, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K, - home=\E[H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, ri=\EM, - rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, - use=vt100, -# 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 -# reverse video. -dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode, - cols#132, - clear=\E[H\E[2J$<50/>, cud1=^J, - cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>, - ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80, -# From: Adam Thompson Sept 10 1995 -dt80-sas|Datamedia DT803/DTX for SAS usage, - am, bw, - cols#80, lines#24, - acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, - bel=^G, clear=^L, cr=^M, - csr=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2, - cub1=^H, cud1=\EB, cuf1=^\, - cup=\E=%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, dl1=\EM, ed=^K, - el=^], ff=^L, home=^Y, ht=^I, hts=\E'1, il1=\EL, ind=\EB, - is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=^J, - kcuf1=^\, kcuu1=^_, ked=^K, kel=^], khome=^Y, mc4=^O, mc5=^N, - rev=\E$2\004, ri=\EI, rmacs=\EG, rmso=^X, sgr0=^X, smacs=\EF, - smso=\E$2\004, tbc=\E'0, - -# Datamedia Excel 62, 64 from Gould/SEL UTX/32 via BRL -# These aren't end-all Excel termcaps; but do insert/delete char/line -# and name some of the extra function keys. (Mike Feldman ccvaxa!feldman) -# The naming convention has been bent somewhat, with the use of E? (where -# E is for 'Excel') as # a name. This was done to distinguish the entries -# from the other Datamedias in use here, and yet to associate a model of -# the Excel terminals with the regular datamedia terminals that share -# major characteristics. -excel62|excel64|datamedia Excel 62, - dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv, - kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h, - use=dt80, -excel62-w|excel64-w|datamedia Excel 62 in 132 char mode, - dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv, - kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h, - use=dt80w, -excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode, - dch1=\E[P, flash=\E[?5l\E[?5h, kbs=^H, kcub1=^H, kcud1=^J, - kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, - smir=\E[4h, use=dt80, - -#### Falco -# -# Falco Data Products -# 440 Potrero Avenue -# Sunnyvale, CA 940864-196 -# Vox: (800)-325-2648 -# Fax: (408)-745-7860 -# Net: techsup@charm.sys.falco.com -# -# Current Falco models as of 1995 are generally ANSI-compatible and support -# emulations of DEC VT-series, Wyse, and Televideo types. -# - -# Test version for Falco ts-1. See for info -# This terminal was released around 1983 and was discontinued long ago. -# The standout and underline highlights are the same. -falco|ts1|ts-1|falco ts-1, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET\EG0\010, home=^^, ht=^I, il1=\EE, - ind=^J, is2=\Eu\E3, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, - kf0=^A0\r, rmir=\Er, rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, - smir=\Eq, smso=\Eg1, smul=\Eg1, -falco-p|ts1p|ts-1p|falco ts-1 with paging option, - OTbs, am, da, db, mir, msgr, ul, - cols#80, it#8, lines#24, - bel=^G, cbt=\EI, clear=\E*, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A, - dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I, - il1=\EE, ind=^J, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er, - rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq, - smso=\Eg4, smul=\Eg1, -# (ts100: I added / based on the init string -- esr) -ts100|ts100-sp|falco ts100-sp, - am, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, 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~Q, il1=\E~E, ind=^J, is1=\E~)\E~ea, - kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - rc=\E8, 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, sc=\E7, - 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=vt100+fnkeys, -ts100-ctxt|falco ts-100 saving context, - rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100, - -#### Florida Computer Graphics -# - -# Florida Computer Graphics Beacon System, using terminal emulator program -# "host.com", as provided by FCG. This description is for an early release -# of the "host" program. Known bug: clears the whole screen, so it's -# commented out. - -# From: David Bryant 1/7/83 -beacon|FCG Beacon System, - am, da, db, - cols#80, lines#32, - bel=\ESTART\r\E37\r\EEND\r$<1>, - blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=^M, - cub1=^H, cud1=^J, cuf1=\EV, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=\EU, - dch1=\EW, dl1=\ER, el=\ET, home=\EH$<10>, ich1=\EQ, il1=\EE, - ind=^J, rev=\ESTART\r\E59\,1\r\EEND\r, rmcup=, - rmso=\ESTART\r\E70\,0\r\EEND\r$<20>, - rmul=\ESTART\r\E60\,0\r\EEND\r, - sgr0=\ESTART\r\E78\r\E70\,0\r\EEND\r$<20>, - smcup=\ESTART\r\E2\,0\r\E12\r\EEND\r$<10>, - smso=\ESTART\r\E70\,6\r\EEND\r$<20>, - smul=\ESTART\r\E60\,1\r\EEND\r, - -#### Fluke -# - -# The f1720a differences from ANSI: no auto margin, destructive -# tabs, # of lines, funny highlighting and underlining -f1720|f1720a|fluke 1720A, - xt, - cols#80, lines#16, xmc#1, - bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, - -#### Liberty Electronics (Freedom) -# -# Liberty Electronics -# 48089 Fremont Blvd -# Fremont CA 94538 -# Vox: (510)-623-6000 -# Fax: (510)-623-7021 - -# From: -# (f100: added empty to suppress a tic warning; -# made this relative to adm+sgr -- note that isn't -# known to work for f100 but does on the f110. --esr) -f100|freedom|freedom100|freedom model 100, - OTbs, am, bw, hs, mir, msgr, xon, - cols#80, lines#24, - acsc=, bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER$<11.5*>, dsl=\Eg\Ef\r, ed=\EY, el=\ET, - flash=\Eb$<200>\Ed, fsl=^M, home=^^, hpa=\E]%p1%{32}%+%c, - ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=^J, ip=$<6>, - is2=\Eg\Ef\r\Ed, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, - kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er, - smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef, - vpa=\E[%p1%{32}%+%c, use=adm+sgr, -f100-rv|freedom-rv|freedom 100 in reverse video, - flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100, -# The f110 and f200 have problems with vi(1). They use the ^V -# 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!!! -# -# f110/f200 users will have to decide whether -# to lose the down cursor key or the quoting capability. We will opt -# initially for leaving the quoting capability out, since use of VI -# is not generally applicable to most interactive applications -# (f110: added , & from f100 -- esr) -f110|freedom110|Liberty Freedom 110, - bw@, eslok, - it#8, wsl#80, - blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V, - dim=\EG@, dl1=\ER, dsl=\Ef\r, flash=\Eb$<200/>\Ed, il1=\EE, - ip@, is2@, kclr=^^, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, - kf0=^AI\r, kf10@, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, - ri=\EJ, rmacs=\E%%, rmir=\Er\EO, smacs=\E$, smir=\EO\Eq, - smso=\EG<, tsl=\Ef, use=f100, -f110-14|Liberty Freedom 110 14inch, - dch1@, use=f110, -f110-w|Liberty Freedom 110 - 132 cols, - cols#132, use=f110, -f110-14w|Liberty Freedom 110 14in/132 cols, - cols#132, - dch1@, use=f110, -# (f200: added to suppress tic warnings re / --esr) -f200|freedom200|Liberty Freedom 200, - OTbs, am, eslok, hs, mir, msgr, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=, bel=^G, blink=\EG2, bold=\EG0, cbt=\EI, civis=\E.0, - clear=^Z, cnorm=\E.1, cr=^M, - csr=\Em0%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, - flash=\Eo$<200/>\En, fsl=^M, home=^^, - hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=^J, kbs=^H, - kclr=^^, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, - kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, - ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<, - tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr, -f200-w|Liberty Freedom 200 - 132 cols, - cols#132, use=f200, -# The f200 has the ability to reprogram the down cursor key. The key is -# reprogrammed to ^J (linefeed). This value is remembered in non-volatile RAM, -# so powering the terminal off and on will not cause the change to be lost. -f200vi|Liberty Freedom 200 for vi, - flash=\Eb$<200/>\Ed, kcud1=^J, use=f200, -f200vi-w|Liberty Freedom 200 - 132 cols for vi, - cols#132, use=f200vi, - -#### GraphOn (go) -# -# Graphon Corporation -# 544 Division Street -# Campbell, CA 95008 -# Vox: (408)-370-4080 -# Fax: (408)-370-5047 -# Net: troy@graphon.com (Troy Morrison) -# -# -# The go140 and go225 have been discontinued. GraphOn now makes X terminals, -# including one odd hybrid that starts out life on power-up as a character -# terminal, than can be switched to X graphics mode (driven over the serial -# line) by an escape sequence. No info on this beast yet. -# (go140: I added / based on the init string -- esr) -go140|graphon go-140, - OTbs, - cols#80, it#8, lines#24, - clear=\E[H\E[2J$<10/>, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J$<10/>, el=\E[K, ht=^I, - if=/usr/share/tabset/vt100, il1=\E[L, - 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, -go140w|graphon go-140 in 132 column mode, - am, - cols#132, - is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q, - use=go140, -# Hacked up vt200 termcap to handle GO-225/VT220 -# From: -# (go225: I added / based on the init string -- esr) -go225|go-225|Graphon 225, - OTbs, am, mir, xenl, - cols#80, it#8, lines#25, vt#3, - blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\ED, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, 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, - sc=\E7, 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, - -#### Harris (Beehive) -# -# Bletch. These guys shared the Terminal Brain Damage laurels with Hazeltine. -# Their terminal group is ancient history now (1995) though the parent -# company is still in business. -# - -# Beehive documentation is undated and marked Preliminary and has no figures -# so we must have early Superbee2 (Model 600, according to phone conversation -# with mfr.). It has proved reliable except for some missing padding -# (notably after \EK and at bottom of screen). -# -# The key idea is that AEP mode is poison for & that US's in -# the local memory should be avoided like the plague. That means -# that the 2048 character local buffer is used as 25 lines of 80 -# characters, period. No scrolling local memory, folks. It also -# appears that we cannot use naked INS LINE feature since it uses -# US. The sbi fakes with an 80-space insert that may be too -# slow at low speeds; also spaces get converted to \040 which is -# too long for some programs (not vi). DEL LINE is ok but slow. -# -# The string is designed for last line of screen ONLY; cup to -# 25th line corrects the motion inherent in scrolling to Page 1. -# -# There is one understood bug. It is that the screen appears to -# pop to a new (blank) page after a , or leave a half-line -# ellipsis to a quad that is the extra 48 memory locations. The -# data received is dumped into memory but not displayed. Not to -# worry if is being used; the lines not displayed will be, -# whenever the cursor is moved up there. Since is addressed -# relative to MEMORY of window, nothing is lost; but beware of -# relative cursor motion (,,,). Recommended, -# therefore, is setenv MORE -c . -# -# WARNING: Not all features tested. -# -# Timings are assembled from 3 sources. Some timings may reflect -# SB2/Model 300 that were used if more conservative. -# Tested on a Model 600 at 1200 and 9600 bd. -# -# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly -# placed on the keyboard and useless because of AEP, is made -# into a backspace key. In use ESC must be pressed twice (to send) -# and sending ^C must be prefixed by ESC to avoid that weird -# transmit mode associated with ENTER key. -# -# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across -# the screen, then it has dropped into ENTER mode; hit -# RESET--ONLINE--!tset. -# -# As delivered this machine has a FATAL feature that will throw -# it into that strange transmit state (SPOW) if the space bar is -# hit after a CR is received, but before receiving a LF (or a -# few others). -# -# The circuits MUST be modified to eliminate the SPOW latch. -# This is done by strapping on chip A46 of the I/O board; cut -# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that -# chip. This mod has been checked out on a Mod 600 of Superbee II. -# With this modification absurdly high timings on cr are -# unnecessary. -# -# NOTE WELL that the rear panel switch should be set to CR/LF, -# not AEP! -# -sb1|beehive superbee, - OTbs, am, bw, da, db, mir, ul, xsb, - cols#80, lines#25, xmc#1, - bel=^G, cbt=\E`$<650>, clear=\EH$<1>\EJ$<3>, cr=$<1>\r, - cub1=^H, cud1=^J, cuf1=\EC$<3>, cup=\EF%p2%03d%p1%03d, - cuu1=\EA$<3>, dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, - el=\EK$<3>, home=\EH$<1>, ht=^I, hts=\E1, - il1=\EN\EL$<3>\EQ \EP$<3> \EO\ER\EA$<3>, - ind=^J, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdl1=\EM, ked=\EJ, kel=\EK, - kf0=\E2, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, - kf7=\Ev, kf8=\Ew, kf9=\E1, khome=\EH, kich1=\EQ\EO, - krmir=\ER, lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER, - rmso=\E_3, rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO, - smso=\E_1, smul=\E_0, tbc=\E3, -sbi|superbee|beehive superbee at Indiana U., - xsb, - cr=\r$<1>, il1=1\EN\EL$<9>\EQ \EP$<9> \EO\ER\EA, - use=sb1, -# Alternate (older) description of Superbee - f1=escape, f2=^C. -# Note: there are at least 3 kinds of superbees in the world. The sb1 -# holds onto escapes and botches ^C's. The sb2 is the best of the 3. -# The sb3 puts garbage on the bottom of the screen when you scroll with -# the switch in the back set to CRLF instead of AEP. This description -# is tested on the sb2 but should work on all with either switch setting. -# The f1/f2 business is for the sb1 and the can be taken out for -# the other two if you want to try to hit that tiny escape key. -# This description is tricky: being able to use cup depends on there being -# 2048 bytes of memory and the hairy string. -superbee-xsb|beehive super bee, - am, da, db, xsb, - cols#80, it#8, lines#25, - clear=\EH\EJ$<3>, cnorm=^J, cr=\r$<1000>, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EF%p2%3d%p1%3d, cuu1=\EA$<3>, - dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, el=\EK$<3>, - home=\EH, ht=^I, hts=\E1, - ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ep, kf2=\Eq, - kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, - khome=\EH, rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3, -# This loses on lines > 80 chars long, use at your own risk -superbeeic|super bee with insert char, - ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb, -sb2|sb3|fixed superbee, - xsb@, use=superbee, - -#### Beehive Medical Electronics -# -# Steve Seymour writes (Wed, 03 Feb 1999): -# Regarding your question though; Beehive terminals weren't made by Harris. -# They were made by Beehive Medical Electronics in Utah. They went out of -# business in the early '80s. -# -# (OK, then, I don't know why a couple of these say "harris beehive".) -# - -# Reports are that most of these Beehive entries (except superbee) have not -# been tested and do not work right. is a trouble spot. Be warned. - -# (bee: was empty, which is obviously bogus -- esr) -beehive|bee|harris beehive, - OTbs, am, mir, - cols#80, lines#24, - cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>, - kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL, - krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@, - smir=\EQ, smso=\EdP, smul=\Ed`, -# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs. -# good grief - does this entry make :sg:/:ug: when it doesn't have to? -# look at those spaces in /. Seems strange to me... -# (beehive: removed, no such file. If you -# really care, cook up one using ^F -- esr) -beehive3|bh3m|beehiveIIIm|harris beehive 3m, - OTbs, am, - cols#80, it#8, lines#20, - bel=^G, clear=^E^R, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cuu1=^K, - dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F, - il1=\023$<160>, ind=^J, ll=^E^K, rmso=\s^_, smso=^]\s, -beehive4|bh4|beehive 4, - am, - cols#80, lines#24, - bel=^G, clear=\EE, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC, - cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=^J, -# There was an early Australian kit-built computer called a "Microbee". -# It's not clear whether this is for one of those or for a relative -# of the Beehive. -microb|microbee|micro bee series, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, ht=^I, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, - kf6=\Eu, kf7=\Ev, kf8=\Ew, kf9=\Ex, khome=\EH, rmso=\Ed@, - rmul=\Ed@, sgr0=\Ed@, smso=\s\EdP, smul=\Ed`, - -# 8675, 8686, and bee from Cyrus Rahman -# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr) -ha8675|harris 8675, - is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU, kf1=^F, - kf10=\Ed, kf11=^W, kf12=\ER, kf13=\EE, kf14=\EI, kf15=\Ei, - kf16=\Eg, kf2=^P, kf3=^N, kf4=^V, kf5=^J, kf6=^T, kf7=^H, - kf8=\177, kf9=\Ee, use=bee, -# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation -# in :is: -- esr) -ha8686|harris 8686, - is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8FB5021B7283#, - kf1=\002\Ep\003, kf10=\Ej, kf11=\EW, kf12=\002\E{\003, - kf13=\002\E|\003, kf14=\002\E}\003, kf15=\002\E~\003, - kf16=\002\E\177\003, kf2=\002\Eq\003, kf3=\002\Er\003, - kf4=\002\Es\003, kf5=\E3, kf6=\EI, kf7=\ER, kf8=\EJ, kf9=\E(, - use=bee, - -#### Hazeltine -# -# Hazeltine appears to be out of the terminal business as of 1995. These -# guys were co-owners of the Terminal Brain Damage Hall Of Fame along with -# Harris. They have a hazeltine.com domain (but no web page there ) and can -# be reached at: -# -# Hazeltine -# 450 East Pulaski Road -# Greenlawn, New York 11740 -# -# As late as 1993, manuals for the terminal product line could still be -# purchased from: -# -# TRW Customer Service Division -# 15 Law Drive -# P.O. Box 2076 -# Fairfield, NJ 07007-2078 -# -# They're now (1998) a subsidiary of General Electric, operating under the -# marque "GEC-Marconi Hazeltine" and doing military avionics. Web page -# at . -# - -# Since is blank, when you want to erase something you -# are out of luck. You will have to do ^L's a lot to -# redraw the screen. h1000 is untested. It doesn't work in -# vi - this terminal is too dumb for even vi. (The code is -# there but it isn't debugged for this case.) -hz1000|hazeltine 1000, - OTbs, - cols#80, lines#12, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K, - ind=^J, -# From: Thu Aug 20 09:09:18 1981 -hz1420|hazeltine 1420, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=^J, cuf1=^P, - cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S, - ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=^J, rmso=\E^Y, - smso=\E^_, -# New "safe" cursor movement (11/87) from . Prevents -# freakout with out-of-range args and tn3270. No hz since it needs to -# receive tildes. -hz1500|hazeltine 1500, - OTbs, am, hz, - cols#80, lines#24, - bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, - cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c, - cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R, - il1=~\032$<40>, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^P, - kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_, -# h1510 assumed to be in sane escape mode. Else use h1500. -# (h1510: early versions of this entry apparently had ", -# , but these caps were commented out in 8.3; also, -# removed incorrect and overridden ":do=^J:" -- esr) -hz1510|hazeltine 1510, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, cuf1=^P, - cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X, - el=\E^O, il1=\E^Z, ind=^J, -# Hazeltine 1520 -# The following switch settings are assumed for normal operation: -# FULL CR U/L_CASE ESCAPE -# FORMAT_OFF EOM_A_OFF EOM_B_OFF WRAPAROUND_ON -# Other switches may be set for operator convenience or communication -# requirements. -hz1520|Hazeltine 1520, - OTbs, am, bw, msgr, - cols#80, lines#24, - bel=^G, bold=\E^_, clear=\E^\, cr=^M, cub1=^H, cud1=^J, - cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, - ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, kbs=^H, - kclr=\E^\, kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, - kdl1=\E^S, ked=\E^X, kel=\E^O, khome=\E^R, kil1=\E^Z, - rmso=\E^Y, rs1=\E$\E\005\E?\E\031, sgr0=\E^Y, smso=\E^_, -# This version works with the escape switch off -# (h1520: removed incorrect and overridden ":do=^J:" -- esr) -hz1520-noesc|hazeltine 1520, - am, hz, - cols#80, lines#24, - bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, - cup=~\021%p2%c%p1%c$<1>, cuu1=~^L, dl1=~^S, ed=~^X, el=~^O, - home=~^R, il1=~^Z, ind=^J, rmso=~^Y, smso=~^_, -# Note: the h1552 appears to be the first Hazeltine terminal which -# is not braindamaged. It has tildes and backprimes and everything! -# Be sure the auto lf/cr switch is set to cr. -hz1552|hazeltine 1552, - OTbs, - cud1=^J, dl1=\EO, il1=\EE, kf1=\EP, kf2=\EQ, kf3=\ER, lf1=blue, - lf2=red, lf3=green, use=vt52, -hz1552-rv|hazeltine 1552 reverse video, - cud1=^J, rmso=\ET, smso=\ES, use=hz1552, -# Note: h2000 won't work well because of a clash between upper case and ~'s. -hz2000|hazeltine 2000, - OTbs, OTnc, am, - cols#74, lines#27, - bel=^G, clear=~\034$<6>, cub1=^H, cud1=^J, - cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R, - il1=~\032$<6>, ind=^J, pad=\177, -# Date: Fri Jul 23 10:27:53 1982. Some unknown person wrote: -# I tested this termcap entry for the Hazeltine Esprit with vi. It seems -# to work ok. There is one problem though if one types a lot of garbage -# characters very fast vi seems not able to keep up and hangs while trying -# to insert. That's in insert mode while trying to insert in the middle of -# a line. It might be because the Esprit doesn't have insert char and delete -# char as a built in function. Vi has to delete to end of line and then -# redraw the rest of the line. -esprit|Hazeltine Esprit I, - OTbs, am, bw, - cols#80, lines#24, - bel=^G, cbt=\E^T, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, - cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, - ed=\E^W, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, is2=\E?, kbs=^H, - kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0^J, - kf1=^B1^J, kf2=^B2^J, kf3=^B3^J, kf4=^B4^J, kf5=^B5^J, - kf6=^B6^J, kf7=^B7^J, kf8=^B8^J, kf9=^B9^J, khome=\E^R, - lf0=0, lf1=1, lf2=2, lf3=3, lf4=4, lf5=5, lf6=6, lf7=7, lf8=8, lf9=9, - rmkx=\E>, rmso=\E^Y, smkx=\E<, smso=\E^_, -esprit-am|hazeltine esprit auto-margin, - am, use=esprit, -# Hazeltine Modular-1 from Cliff Shackelton via BRL -# Vi it seems always wants to send a control J for "do" and it turned out -# that the terminal would work somewhat if the auto LF/CR was turned off. -# (hmod1: removed :dn=~^K: -- esr) -hmod1|Hazeltine Modular 1, - OTbs, am, hz, - cols#80, lines#24, - bel=^G, cbt=~^T, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, - cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z, - ind=^J, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R, - rc=~^Q, rmso=~^Y, sc=~^E, sgr0=~^Y, smso=~^_, -# -# Hazeltine Executive 80 Model 30 (1554?) -# from Will Martin via BRL -# Like VT100, except for different "am" behavior. -hazel|exec80|h80|he80|Hazeltine Executive 80, - OTbs, OTpt, am, - cols#80, it#8, lines#24, vt#3, - OTnl=^J, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, 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, rc=\E8, 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, sc=\E7, - sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>, - smul=\E[4m$<2/>, - -#### IBM -# - -ibm327x|line mode IBM 3270 style, - gn, - clear=^M^J, el=^M, home=^M, - -ibm3101|i3101|IBM 3101-10, - OTbs, am, xon, - cols#80, lines#24, - bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH, -ibm3151|IBM 3151 display, - is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B, - sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;, - sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162, -# From: Mark Easter 29 Oct 1992 -# removed kend, knp, kpp -TD -ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display, - OTbs, am, mir, msgr, - cols#80, it#8, lines#24, - acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x\370, - bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, ind=^J, - invis=\E4P, kbs=^H, kcbt=\E2, kclr=\EL\r, kctab=\E1, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EQ, - kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r, kf10=\Ej\r, - kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r, kf14=\E!b\r, - kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r, kf18=\E!f\r, - kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r, kf21=\E!i\r, - kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r, kf3=\Ec\r, - kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r, kf8=\Eh\r, - kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010, kil1=\EN, - ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A, rmcup=\E>A, - rmso=\E4@, rmul=\E4@, - sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E<@%;, - sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B, - -ibm3161-C|IBM 3161-C NLS terminal using cartridge, - rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, use=ibm3161, -ibm3162|IBM 3162 display, - blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a, - rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a, - use=ibm3161-C, - -# This really should not use setab/setaf, but it is clear that the -# original terminfo does not toggle red/blue colors as in setb/setf. -ibm3164|i3164|IBM 3164, - msgr, - colors#8, pairs#64, - op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A, - setab=\E4 %p1%{64}%+%c, - setaf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@, - smcup=\E!9/N\E>B, use=ibm3161, - -ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display, - am, bw, msgr, xon, - cols#80, it#8, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, - hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z, - kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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, khome=\E[H, kich1=\E[139q, kil1=\E[140q, - kind=\E[151q, knp=\E[154q, kpp=\E[150q, kri=\E[155q, - krmir=\E[4l, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, rs2=\Ec, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m, - sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m, - -ibmaed|IBM Experimental display, - OTbs, am, eo, msgr, - cols#80, it#8, lines#52, - clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP, - il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - rmso=\E0, sgr0=\E0, smso=\E0, -ibm-apl|apl|IBM apl terminal simulator, - lines#25, use=dm1520, -# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'. -# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr) -ibmmono|IBM workstation monochrome, - eslok, hs, - bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL, - invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET, - kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY, - khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG, - lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew, - sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo, - use=ibm3101, -ibmega|IBM Enhanced Color Display, - cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, use=ibmmono, -# This color scheme is assumed in some recent IBM terminal descriptions -# (green on black, emulated on a 16-color terminal). -ibm+color|IBM color definitions, - colors#8, ncv#3, pairs#64, - op=\E[32m\E[40m, - setb=\E[%?%p1%{0}%=%t40m%e%p1%{1}%=%t41m%e%p1%{2}%=%t42m%e%p1%{3}%=%t43m%e%p1%{4}%=%t44m%e%p1%{5}%=%t45m%e%p1%{6}%=%t46m%e%p1%{7}%=%t107m%;, - setf=\E[%?%p1%{0}%=%t30m%e%p1%{1}%=%t31m%e%p1%{2}%=%t32m%e%p1%{3}%=%t33m%e%p1%{4}%=%t34m%e%p1%{5}%=%t35m%e%p1%{6}%=%t36m%e%p1%{7}%=%t97m%;, -ibm+16color|IBM aixterm color definitions, - colors#16, pairs#256, - setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm, - setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm, - setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, - setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, -ibm5154|IBM 5154 Color display, - colors#8, ncv@, pairs#64, - bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, - use=ibm+color, -ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline, - rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;, - use=ibmmono, -ibmvga-c|IBM VGA display color termcap, - cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, use=ibmega-c, -ibmvga|IBM VGA display, - cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, use=ibmega, -# ibmapa* and ibmmono entries come from ACIS 4.3 distribution -rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display, - lines#32, - dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono, -ibm6155|IBM 6155 Black & White display, - blink@, bold@, use=ibm5151, -# Advanced Monochrome (6153) and Color (6154) Graphics Display: -ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display, - lines#31, - dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono, -ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display, - lines#31, - dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, - use=ibmega-c, -ibm6154|IBM 6154 Color displays, - blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m, - sgr0=\E[0;10m, use=ibm5154, -ibm6153|IBM 6153 Black & White display, - blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m, - sgr0=\E[0;10m, use=ibm5151, -ibm6153-90|IBM 6153 Black & White display, - cols#90, lines#36, - blink@, bold@, use=ibm5151, -ibm6153-40|IBM 6153 Black & White display, - cols#40, lines#12, use=ibm6153-90, -ibm8512|ibm8513|IBM color VGA Terminal, - am, mir, msgr, - cols#80, it#8, lines#25, - acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m, - clear=\E[H\E[J, cub1=\E[D, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL, - il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A, - kf0=\E[010q, 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, khome=\E[H, rc=\E[u, rev=\E[7m, - rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, - rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m, - smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb, - smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m, - use=ibm8503, -hft-c|HFT with Color, - colors#8, pairs#64, - acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B, - use=ibm5151, use=ibm+color, -hft-c-old|HFT with Color PC850, - colors#8, pairs#64, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, - use=ibm+color, -hft-old|AIWS High Function Terminal, - am, xon, - cols#80, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, - ht=^I, ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, 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=ibm+color, -ibm-system1|system1|ibm system/1 computer, - am, xt, - cols#80, lines#24, - bel=^G, clear=^Z, cub1=^H, cuf1=^\, - cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K, - ind=^J, -# lft-pc850 : IBM Low Function Terminal Device -# lft "supports" underline, bold, and blink in the sense that the lft code -# sets all the right bits. HOWEVER, depending upon the adapter, these -# attributes may or may not be supported by the device driver. -lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device, - am, bw, msgr, xon, - cols#80, it#8, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K, - home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL, - il1=\E[L, ind=\ED, indn=\E[%p1%dS, invis=\E[8m, is2=\Ec, - kbs=^H, kcbt=\E[Z, kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, kich1=\E[139q, - kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q, - kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\EL, rin=\E[%p1%dT, - rmacs=\E(B, rmir=\E[4l, rmso=\E[0m, rmul=\E[0m, rs2=\Ec, - 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%;, - sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, -ibm5081|hft|IBM Megapel Color display, - acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B, - s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154, -ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display, - eslok, hs, - lines#33, - dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo, - use=ibmega-c, -ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display, - use=hft-c, -ibm8514|IBM 8514/a color VGA display, - eslok, hs, - dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft, -ibm8514-c|IBM 8514 color display with standout and underline, - eslok, hs, - lines#41, - cr=^M, cud1=^J, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=^J, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, tsl=\Ej\EYI%+ \Eo, - use=ibmega-c, - -# -# AIX entries. IBM ships these with AIX 3.2.5. -# -- added rc, sc based on manpage -TD -# Note that we could use ibm+16color, but that is not how IBM defines this one. -aixterm|IBM Aixterm Terminal Emulator, - eslok, hs, - acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, - fsl=\E[?F, rc=\E8, ri@, s0ds=\E(B, s1ds=\E(0, sc=\E7, - 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%;, - sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6154, -aixterm-m|IBM AIXterm Monochrome Terminal Emulator, - eslok, hs, - acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, - fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153, -aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator, - eslok, hs, - bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - tsl=\E[?%p1%dT, use=ibm6153, -jaixterm|IBM Kanji Aixterm Terminal Eemulator, - acsc@, use=aixterm, -jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator, - acsc@, use=aixterm-m, - -# This flavor is adapted from xterm, in turn from aixterm documentation -TD -aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors, - use=ibm+16color, use=aixterm, - -#### Infoton/General Terminal Corp. -# - -# gt100 sounds like something DEC would come out with. Let's hope they don't. -i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100), - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM, - ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL, - ind=^J, rmso=\Ea, smso=\Eb, -i400|infoton 400, - OTbs, am, - cols#80, lines#25, - bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, 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=^J, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q, -# (addrinfo: removed obsolete ":bc=^Z:" -- esr) -addrinfo, - am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, - cup=\037%p1%c%p2%c, cuu1=^\, ed=^K, home=^H, ind=^J, ll=^H^\, -# (infoton: used to have the no-ops , , -- esr) -infoton, - am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, cuu1=^\, - ed=^K, ind=^J, ll=^H^\, - -# The ICL6402 was actually the Kokusai Display System 6402. -# The 6404 was the KDS7372 (color version of the 6402). -# -# ICL6404 control codes follow: -# -#code function -#~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#ctrl-A set SOM position at cursor position -#ctrl-G Bell -#ctrl-H Backspace -#ctrl-I Horiz tab -#ctrl-J Linefeed -#ctrl-K Cursor up -#ctrl-L Cursor right -#ctrl-M Carriage return -#ctrl-N Disable xon/xoff to host -#ctrl-O Enable xon/xoff to host -#ctrl-R Enable bidirectional mode -#ctrl-T Disable bidirectional mode -#ctrl-V Cursor down -#ctrl-Z Clear unprotected data to insert char -#ctrl-^ Cursor home -#ctrl-_ Newline -# -#ESC lead-in char for multiple character command -# -#ESC space R execute power on sequence -#ESC ! p1 p2 define scroll region: -# p1 = scroll top line: 20h - 37h -# p1 = scroll bottom line: 20h - 37h -#ESC " unlock keyboard -#ESC # lock keyboard -#ESC $ Semi-graphics mode on -#ESC % Semi-graphics mode off -#ESC & protect mode on -#ESC ' protect mode off -#ESC ( write protect mode off (full intensity) -#ESC ) write protect mode on (half intensity) -# -#ESC * clear screen -#ESC + clear unprotected data to insert char -#ESC , clear unprotected data to half intensity spaces -#ESC - p1 p2 p3 p4 address cursor to page, row, column: -# p1 = page number 0 - 3 -# p2 = row 20h - 7fh -# p3 = column (lo) 20h - 7fh -# p4 = column (hi) 20h - 21h (only 132 col) -#ESC . p1 set cursor style: -# p1 = 0 invisible cursor -# p1 = 1 block blinking cursor -# p1 = 2 block steady cursor -# p1 = 3 underline blinking cursor -# p1 = 4 underline steady cursor -#ESC / transmit cursor location (page, row, column) -#ESC 0 p1 p2 p3 p4 program edit key: -# p1 = edit key code: '@'-'S', '`'-'s' -# p2 p3 p4 = program data (3 bytes) -# -#ESC 1 set tab -#ESC 2 clear tab at cursor -#ESC 3 clear all tabs -#ESC 4 send unprotect line to cursor -#ESC 5 send unprotect page to cursor -#ESC 6 send line to cursor -#ESC 7 send page to cursor -#ESC 8 n set scroll mode: -# n = 0 set jump scroll -# n = 1 set smooth scroll -#ESC 9 n control display: -# n = 0 display off -# n = 1 display on -#ESC : clear unprotected data to null -#ESC ; clear unprotected data to insert char -# -#ESC < keyclick on -#ESC = p1 p2 address cursor to row, column -# p1 = row 20h - 7fh -# p2 = column (lo) 20h - 7fh -# p3 = column (hi) 20h - 21h (only 132 col) -#ESC > keyclick off -#ESC ? transmit cursor location (row, column) -# -#ESC @ copy print mode on -#ESC A copy print mode off -#ESC B block mode on -#ESC C block mode off (conversation mode) -#ESC D F set full duplex -#ESC D H set half duplex -#ESC E line insert -#ESC F p1 p2 set page colour (p1 = f/grnd, p2 = b/grnd) -# 0 = black, 1 = red, 2 = green, 3 = yellow -# 4 = blue, 5 = magenta, 6 = cyan, 7 = white -#ESC G n set serial field attribute (n = 30h - 3Fh) -#ESC H n full graphics mode: -# n = 0 exit full graphics mode -# n = 1 enter full graphics mode -#ESC I back tab -#ESC J back page -#ESC K forward page -# -#ESC L unformatted page print -#ESC M L move window left (132 col mode only) -#ESC M R move window right (132 col mode only) -#ESC N set page edit (clear line edit) -#ESC O set line edit (clear page edit) -#ESC P formatted page print -#ESC Q character insert -#ESC R line delete -#ESC S send message unprotected only -#ESC T erase line to insert char -#ESC U set monitor mode (see ESC X, ESC u) -# -#ESC V n select video attribute mode: -# n = 0 serial field attribute mode -# n = 1 parallel character attribute mode -#ESC V 2 n define line attribute: -# n = 0 single width single height -# n = 1 single width double height -# n = 2 double width single height -# n = 3 double width double height -#ESC V 3 n select character font: -# n = 0 system font -# n = 1 user defined font -#ESC V 4 n select screen mode: -# n = 0 page screen mode -# n = 1 virtual screen mode -#ESC V 5 n control mouse mode: -# n = 0 disable mouse -# n = 1 enable sample mode -# n = 2 send mouse information -# n = 3 enable request mode -#ESC W character delete -#ESC X clear monitor mode (see ESC U, ESC u) -#ESC Y erase page to insert char -# -#ESC Z n send user/status line: -# n = 0 send user line -# n = 1 send status line -# n = 2 send terminal ID -#ESC [ p1 p2 p3 set character attribute (parallel char mode): -# p1: 0 = normal -# 1 = blank -# 2 = blink -# 3 = blink blank (= blank) -# 4 = reverse -# 5 = reverse blank -# 6 = reverse blink -# 7 = reverse blink blank (= reverse blank) -# 8 = underline -# 9 = underline blank -# : = underline blink -# ; = underline blink blank -# < = reverse underline -# = = reverse underline blank -# > = reverse underline blink -# ? = reverse underline blink blank -# p2, p3: f/grnd, b/grnd colour -# (see ESC F for colours) -# use ZZ for mono, eg. -# ESC [ 0 Z Z for normal -# ESC [ 4 Z Z for inverse etc. -# -#ESC \ n set page size: -# n = 1 24 lines/page -# n = 2 48 lines/page -# n = 3 72 lines/page -# n = 4 96 lines/page -#ESC ] n set Wordstar mode: -# n = 0 normal (KDS7372) mode -# n = 1 Wordstar mode -# -#ESC b set foreground colour screen -# -#ESC c n enter self-test mode: -# n = 0 exit self test mode -# n = 1 ROM test -# n = 2 RAM test -# n = 3 NVRAM test -# n = 4 screen display test -# n = 5 main/printer port test -# n = 6 mouse port test -# n = 7 graphics board test -# n = 8 graphics memory test -# n = 9 display all 'E' -# n = : display all 'H' -#ESC d set background colour screen -# -#ESC e n program insert char (n = insert char) -#ESC f text CR load user status line with 'text' -# -#ESC g display user status line on 25th line -#ESC h display system status line on 25th line -#ESC i tab -#ESC j reverse linefeed -#ESC k n duplex/local edit mode: -# n = 0 duplex edit mode -# n = 1 local edit mode -#ESC l n select virtual screen: -# n = 0 screen 1 -# n = 1 screen 2 -#ESC m save current config to NVRAM -#ESC n p1 select display screen: -# p1 = 0 screen 1 -# p1 = 1 screen 2 -# p1 = 2 screen 3 -# p1 = 3 screen 4 -#ESC o p1 p2 set characters/line and attribute: -# p1 = 0 80 chars/line -# -#ESC o p1 p2 set characters/line and attribute: -# p1 = 0 80 chars/line -# p1 = 1 132 chars/line -# p2 = 0 single width single height -# p2 = 1 single width double height -# p2 = 2 double width single height -# p2 = 3 double width double height -# -#ESC q insert mode on -#ESC r edit mode on -#ESC s send message all -#ESC t erase line to null -#ESC u clear monitor mode (see ESC U, ESC X) -#ESC v autopage mode on -#ESC w autopage mode off -#ESC x p1 p2 p3 define delimiter code... -#ESC y erase page to null -# -#ESC z 2 p1 p2 p3 p4 draw quadrangle: -# p1 = starting row -# p2 = starting column -# p3 = end row -# p4 = end column -# -#ESC { p1 p2 p3 p4 configure main port -# (baud, stop bits, parity, word length) -# -#ESC | p1 p2 text Ctrl-Y program function key with 'text': -# p1 = function key code: -# '1' - ';' normal f1- f11 -# '<' - 'F' shifted f1 - f11 -# p2 = program mode: -# 1 = FDX -# 2 = LOC -# 3 = HDX -# Ctrl-Y = terminator -# (use Ctrl-P to escape ^P, ^Y ) -# -#ESC } p1 p2 p3 p4 configure printer port -# (baud, stop bits, parity, word length) -#ESC ~ send system status -# -# Codes and info from Peter Disdale 12 May 1997 -# -# Entry is by esr going solely on above information and is UNTESTED. -# This actually looks a lot like a Televideo 9xx. -# This entry uses page 0 and is monochrome; I'm not brave enough to try -# to make color work without a test terminal. The capability is a guess. -# The initialization string sets conversation mode, blinking underline cursor, -# full duplex, parallel attribute mode, display user status line, white -# foreground, black background, normal highlight. -# -icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372, - OTbs, am, hs, - cols#80, lines#24, - bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*, - cnorm=\E.3, cr=^M, - csr=\E!%+%p1%{32}%+%p2%{32} cud1=\026, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{80}%m%{32}%+%c%p2%{80}%>%{32}%+%c, - cuu1=^K, cvvis=\E.1, dch1=\EW, dl1=\ER, home=^^, ht=^I, - hts=\E1, il1=\EE, invis=\E[1ZZ, - is1=\EC\E.3\EDF\EV1\Eg\E[0ZZ, nel=^_, rev=\E[4ZZ, - rmir=\Er, rmso=\E[%gh%{4}%^%Ph%gh%dZZ, - rmul=\E[%gh%{8}%^%Ph%gh%dZZ, rs2=\Eo1, - sgr=\E[%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ, - sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3, -icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols, - rs2=\Eo1, use=icl6404, - -#### Interactive Systems Corp -# -# ISC used to sell OEMed and customized hardware to support ISC UNIX. -# ISC UNIX still exists in 1995, but ISC itself is no more; they got -# bought out by Sun. -# - -# From: Wed Sep 16 08:06:44 1981 -# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the -# ":le=^_:" later overridden -- esr) -intext|Interactive Systems Corporation modified owl 1200, - OTbs, am, - cols#80, it#8, lines#24, xmc#1, - bel=^G, cbt=^Y, clear=\014$<132>, cr=^M, cub1=^H, cud1=^J, - cuf1=^^, cup=\017%p1%{32}%+%c%p2%{32}%+%c, cuu1=^\, - dch1=\022$<5.5*>, dl1=\021$<5.5*>, ed=\026J$<5.5*>, - el=^Kp^R, ht=^I, il1=\020$<5.5*>, ind=^J, ip=$<5.5*>, kbs=^H, - kcub1=^_, kcud1=^J, kcuf1=^^, kcuu1=^\, kf0=^VJ\r, kf1=^VA\r, - kf2=^VB\r, kf3=^VC\r, kf4=^VD\r, kf5=^VE\r, kf6=^VF\r, - kf7=^VG\r, kf8=^VH\r, kf9=^VI\r, khome=^Z, rmir=^V<, - rmkx=^V9, rmso=^V#\s, smir=^V;, smkx=\036\:\264\026%%, - smso=^V$\,, -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=^M, cub1=\E[D, - cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[P, dl1=\E[M, 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, - 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, - -#### Kimtron (abm, kt) -# -# Kimtron seems to be history, but as March 1998 these people are still -# offering repair services for Kimtron equipment: -# -# Com/Pair Monitor Service -# 1105 N. Cliff Ave. -# Sioux Falls, South Dakota 57103 -# -# WATS voice: 1-800/398-4946 -# POTS fax: +1 605/338-8709 -# POTS voice: +1 605/338-9650 -# Email: -# Internet/Web: -# -# Kimtron entries include (undocumented) codes for: enter dim mode, -# enter bold mode, enter reverse mode, turn off all attributes. -# - -# Kimtron ABM 85 added by Dual Systems -# (abm85: removed duplicated ":kd=^J:" -- esr) -abm85|Kimtron ABM 85, - OTbs, am, bw, msgr, - cols#80, it#8, lines#24, xmc#1, - cbt=\EI, clear=\E*, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, ht=^I, - if=/usr/share/tabset/stdcrt, il1=\EE, - is2=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq, kbs=^H, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rmir=\Er, rmso=\Ek, - rmul=\Em, smir=\EQ, smso=\Ej, smul=\El, -# Kimtron ABM 85H added by Dual Systems. -# Some notes about the abm85h entries: -# 1) there are several firmware revs of 85H in the world. Use abm85h-old for -# firmware revs prior to SP51 -# 2) Make sure to use abm85h entry if the terminal is in 85h mode and the -# abm85e entry if it is in tvi920 emulation mode. They are incompatible -# in some places and NOT software settable i.e., can't fix it) -# 3) In 85h mode, the arrow keys and special functions transmit when -# the terminal is in dup-edit, and work only locally in local-edit. -# Vi won't swallow `del char' for instance, but turns on -# dup-edit anyway so that the arrow keys will work right. If the -# arrow keys don't work the way you like, change , , and -# . Note that 920E mode does not have software commands to toggle -# between dup and local edit, so you get whatever was set last on the -# terminal. -# 4) attribute is nice, but seems too slow to work correctly -# (\Eb\Ed) -# 5) Make sure `hidden' attributes are selected. If `embedded' attributes -# are selected, the entry should be removed. -# 6) auto new-line should be on (selectable from setup mode only) -# -# From: Erik Fair Sun Oct 27 07:21:05 1985 -abm85h|Kimtron ABM 85H native mode, - hs, - xmc@, - bel=^G, cnorm=\E.4, cvvis=\E.2, dim=\E), dsl=\Ee, flash@, - fsl=^M, invis@, - is2=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\EG0\Ed\E.4\El, - kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr, - use=abm85, -abm85e|Kimtron ABM 85H in 920E mode, - xmc@, - bel=^G, dim=\E), flash@, - is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em, - rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, -abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev., - xmc@, - bel=^G, dim=\E), - is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF, - rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, -# From: -# (kt7: removed obsolete :ma=^V^J^L :" -- esr) -kt7|kimtron model kt-7, - OTbs, am, - cols#80, it#8, lines#24, - cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ, - if=/usr/share/tabset/stdcrt, il1=\EE, invis@, is2=\El\E", - kbs=^H, kcbt=\EI, kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, - kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr, -# Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the -# other kt7 entry and the adjacent key capabilities). Removed EE which is -# identical to :mh:. Removed :ES=\EGD: which is some kind of highlight -# but we can't figure out what. -kt7ix|kimtron model kt-7 or 70 in IX mode, - am, bw, - cols#80, it#8, lines#25, - acsc=jYk?lZm@nEqDt4uCvAwBx3, bel=^G, blink=\EG2, cbt=\EI, - civis=\E.0, clear=\E*, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=^M, - home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=^J, - is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER, - ked=\EY, kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, knp=\EJ, - nel=^M^J, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0, - sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef, - -#### Microdata/MDIS -# -# This was a line of terminals made by McDonnell-Douglas Information Systems. -# These entries come direct from MDIS documentation. I have edited them only -# to move primary names of the form p[0-9] * to aliases, and to comment out -# / in a couple of entries without strings. I have -# also removed the change history; the last version indicates this is -# version 4.3 by A.Barkus, September 1990 (earliest entry is October 1989). -# - -# McDonnell Information Systems Terminal Family History -# ========================================= -# -# Prism-1, Prism-2 and P99: -# Ancient Microdata and CMC terminals, vaguely like Adds Regent 25. -# -# Prism-4 and Prism-5: -# Slightly less ancient range of Microdata terminals. Follow-on from -# Prism-2, but with many enhancements. P5 has eight display pages. -# -# Prism-6: -# A special terminal for use with library systems, primarily in Germany. -# Limited numbers. Similar functionality to P5 (except attributes?). -# -# Prism-7, Prism-8 and Prism-9: -# More recent range of MDIS terminals, in which P7 and P8 -# replace the P4 & P5, with added functionality, and P9 is the flagship. -# The P9 has two emulation modes - P8 and ANSI - and includes a -# large number of the DEC VT220 control sequences. Both -# P8 and P9 support 80c/24ln/8pg and 132cl/24li/4pg formats. -# -# Prism-12 and Prism-14: -# Latest range, functionally very similar to the P9. The P14 has a -# black-on-white overscanning screen. -# -# The terminfo definitions given here are: -# -# p2 - Prism-2 (or Prism-1 or P99). -# -# p4 - Prism-4 (and older P7s & P8s). -# p5 - Prism-5 (or Prism-6). -# -# p7 - Prism-7. -# p8 - Prism-8 (in national or multinational mode). -# p8-w - 132 column version of p8. -# p9 - Prism-9 in ANSI mode. -# p9-w - 132 column version of p9. -# p9-8 - Prism-9 in Prism-8 emulation mode. -# p9-8-w - As p9-8, but with 132 columns. -# -# p12 - Prism-12 in ANSI mode. -# p12-w - 132 column version of p12. -# p12-m - Prism-12 in MDC emulation mode. -# p12-m-w - As p12-m, but with 132 columns. -# p14 - Prism-14 in ANSI mode. -# p14-w - 132 column version of p14. -# p14-m - Prism-14 in MDC emulation mode. -# p14-m-w - As p14-m, but with 132 columns. -# -# p2: Prism-2 -# ----------- -# -# Includes Prism-1 and basic P99 without SP or MP loaded. -# The simplest form of Prism-type terminal. -# Basic cursor movement and clearing operations only. -# No video attributes. -# Notes: -# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next -# value up, followed by backspace. -# -prism2|MDC Prism-2, - am, bw, msgr, - cols#80, lines#24, - bel=^G, clear=\014$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - cuu1=^Z, ed=\EJ, el=\EK, home=^A, - hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - ind=^J, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c, - -# p4: Prism-4 -# ----------- -# -# Includes early versions of P7 & P8. -# Basic family definition for most Prisms (except P2 and P9 ANSI). -# Notes: -# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next -# value up, followed by backspace. -# Cursor key definitions removed because they interfere with vi and csh keys. -# -prism4|p4|P4|MDC Prism-4, - am, bw, hs, mc5i, msgr, - cols#80, lines#24, wsl#72, xmc#1, - bel=^G, blink=^CB, civis=^]\344, clear=\014$<20>, - cnorm=^]\342, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK, - fsl=^]\345, home=^A, - hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - ind=^J, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER, - rev=^CD, rmso=^C\s, rmul=^C\s, - sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;, - sgr0=^C\s, smso=^CD, smul=^CP, tsl=^]\343, - vpa=\013%p1%{32}%+%c, - -# p5: Prism-5 -# ----------- -# -# Same definition as p4. Includes Prism-6 (not tested!). -# Does not use any multi-page features. -# -prism5|p5|P5|MDC Prism-5, - use=p4, - -# p7: Prism-7 -# ----------- -# -# Similar definition to p4. Uses ANSI cursor motion to avoid network problems. -# Notes: -# Use p4 for very early models of P7. -# Rev-index removed; can't send nulls to terminal in 8-bit modes. -# -prism7|p7|P7|MDC Prism-7, - cup=\E[%i%p1%d;%p2%dH, hpa@, vpa@, use=p4, - -# p8: Prism-8 -# ----------- -# -# Similar definition to p7. Uses ANSI cursor motion to avoid network problems. -# Supports national and multinational character sets. -# Notes: -# Alternate char set operations only work in multinational mode. -# Use p4 for very early models of P8. -# Rev-index removed; can't send nulls to terminal in 8-bit modes. -# (esr: commented out / because there's no ) -# -prism8|p8|P8|MDC Prism-8, - cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h, - vpa=\E[%i%p1%dd, use=p4, - -# p8-w: Prism-8 in 132 column mode -# -------------------------------- -# -# 'Wide' version of p8. -# Notes: -# Rev-index removed; can't send nulls to terminal in 8-bit modes. -# -prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode, - cols#132, - is2=\E[<12h\E[<14h, use=p8, - -# p9: Prism-9 in ANSI mode -# ------------------------- -# -# The "flagship" model of this generation of terminals. -# ANSI X3.64 (ISO 6429) standard sequences, plus many DEC VT220 ones. -# Notes: -# Tabs only reset by "reset". Otherwise assumes default (8 cols). -# Fixes to deal with terminal firmware bugs: -# . 'ri' uses insert-line since rev index doesn't always -# . 'sgr0' has extra '0' since esc[m fails -# . 'fsl' & 'dsl' use illegal char since cr is actioned wrong on line 25 -# Not covered in the current definition: -# . Labels -# . Programming Fn keys -# . Graphic characters (defaults correctly to vt100) -# . Padding values (sets xon) -# (esr: commented out / because there's no ) -# -prism9|p9|P9|MDC Prism-9 in ANSII mode, - am, bw, hs, mc5i, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#72, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l, - clear=^L, cnorm=\E[<4h, cr=^M, csr=\E[%i%p1%d;%p2%d%%v, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, dsl=\E[%}\024, ech=\E[%p1%dX, - ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`, - ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, - is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, 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~, 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[H, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=^M^J, - 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, - rs2=\E[&p\E[<12l\E F\E[3g\E[9;17;25;33;41;49;57;65;73 N, - sc=\E[%y, - sgr=\E[%{0}%?%p1%p3%|%t%{7}%+%;%?%p2%t%{2}%+%;%?%p4%t%{5}%+%;%?%p6%t%{1}%+%;m%?%p8%t\E[%{32}%+%d%%{%;%?%p9%t\016%e\017%;, - sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd, - -# p9-w: Prism-9 in 132 column mode -# -------------------------------- -# -# 'Wide' version of p9. -# -prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode, - cols#132, - is2=\E[&p\E[<12l\E F\E[<14h, - rs2=\E[&p\E[<12l\E F\E[<14h, use=p9, - -# p9-8: Prism-9 in P8 mode -# ------------------------ -# -# P9 terminal in P8 emulation mode. -# Similar to p8 definition. -# Insertion and deletion operations possible. -# -prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8, - -# p9-8-w: Prism-9 in P8 and 132 column modes -# ------------------------------------------ -# -# P9 terminal in P8 emulation mode and 132 column mode. -# -prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w, - -# p12: Prism-12 in ANSI mode -# --------------------------- -# -# See p9 definition. -# -prism12|p12|P12|MDC Prism-12 in ANSI mode, - use=p9, - -# p12-w: Prism-12 in 132 column mode -# ---------------------------------- -# -# 'Wide' version of p12. -# -prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode, - use=p9-w, - -# p12-m: Prism-12 in MDC emulation mode -# ------------------------------------- -# -# P12 terminal in MDC emulation mode. -# Similar to p8 definition. -# Insertion and deletion operations possible. -# -prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode, - use=p9-8, - -# p12-m-w: Prism-12 in MDC emulation and 132 column modes -# ------------------------------------------------------- -# -# P12 terminal in MDC emulation mode and 132 column mode. -# -prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode, - use=p9-8-w, - -# p14: Prism-14 in ANSII mode -# --------------------------- -# -# See p9 definition. -# -prism14|p14|P14|MDC Prism-14 in ANSII mode, - use=p9, - -# p14-w: Prism-14 in 132 column mode -# ---------------------------------- -# -# 'Wide' version of p14. -# -prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode, - use=p9-w, - -# p14-m: Prism-14 in MDC emulation mode -# ------------------------------------- -# -# P14 terminal in MDC emulation mode. -# Similar to p8 definition. -# Insertion and deletion operations possible. -# -prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode, - use=p9-8, - -# p14-m-w: Prism-14 in MDC emulation and 132 column modes -# ------------------------------------------------------- -# -# P14 terminal in MDC emulation mode and 132 column mode. -# -prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode, - use=p9-8-w, - -# End of McDonnell Information Systems Prism definitions - -# These things were popular in the Pick database community at one time -# From: George Land 24 Sep 1996 -p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition, - am, bw, hs, mir, - cols#80, lines#24, ma#1, wsl#78, xmc#1, - bel=^G, blink=^CB, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F, - cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, dch1=\s^H, dim=^CA, dl1=^P, - ed=\EJ, el=\EK, home=^A, ind=^J, invis=^CH, kbs=^H, kcub1=^U, - kcud1=^J, kcuf1=^F, kcuu1=^Z, kdch1=\s^H, kdl1=^P, ked=\EJ, - kel=\EK, kf1=^A@\r, kf10=^AI\r, kf12=^AJ\r, kf13=^AK\r, - kf14=^AL\r, kf15=^AM\r, kf16=^AN\r, kf17=^AO\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^A, lf1=F1, lf10=F10, lf2=F2, - lf3=F3, lf4=F4, lf5=F5, lf6=F6, lf7=F7, lf8=F8, lf9=F9, nel=^J^M, - pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE, - smul=^C0, - -#### Microterm (act, mime) -# -# The mime1 entries refer to the Microterm Mime I or Mime II. -# The default mime is assumed to be in enhanced act iv mode. -# - -# New "safe" cursor movement (5/87) from . Prevents -# freakout with out-of-range args on Sytek multiplexors. No and -# since it gets confused and it's too dim anyway. No -# since Sytek insists ^S means xoff. -# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr) -act4|microterm|microterm act iv, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\014$<12/>, cr=^M, cub1=^H, cud1=^K, cuf1=^X, - cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c, - cuu1=^Z, dch1=\004$<.1*/>, dl1=\027$<2.3*/>, - ed=\037$<2.2*/>, el=\036$<.1*/>, home=^], - il1=\001<2.3*/>, ind=^J, kcub1=^H, kcud1=^K, kcuf1=^X, - kcuu1=^Z, -# The padding on :sr: and :ta: for act5 and mime is a guess and not final. -# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)... -# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr) -act5|microterm5|microterm act v, - kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA, - use=act4, -# Mimes using brightness for standout. Half bright is really dim unless -# you turn up the brightness so far that lines show up on the screen. -mime-fb|full bright mime1, - is2=^S\E, rmso=^S, smso=^Y, use=mime, -mime-hb|half bright mime1, - is2=^Y\E, rmso=^Y, smso=^S, use=mime, -# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode -# the more plausible ":do=^J:" -- esr) -# uc was at one time disabled to get around a curses bug, be wary of it -mime|mime1|mime2|mimei|mimeii|microterm mime1, - OTbs, am, - cols#80, it#8, lines#24, vt#9, - bel=^G, clear=^]^C, cr=^M, cub1=^H, cud1=^J, cuf1=^X, - cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c, - cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>, - il1=\001$<80>, ind=^J, is2=^S\E^Q, kcub1=^H, kcud1=^K, - kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U, -# These termcaps (for mime2a) put the terminal in low intensity mode -# since high intensity mode is so obnoxious. -mime2a-s|microterm mime2a (emulating an enhanced soroc iq120), - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EI, dch1=\ED, - dl1=\027$<20*>, ed=\EJ$<20*>, el=\EK, home=^^, - il1=\001$<20*>, ind=^J, ip=$<2>, is2=\E), kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, ri=\EI, rmir=^Z, rmso=\E;, rmul=\E7, - smir=\EE, smso=\E\:, smul=\E6, -# This is the preferred mode (but ^X can't be used as a kill character) -mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52), - OTbs, - cols#80, it#8, lines#24, - bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N, - dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I, - il1=\001$<20*>, ind=^J, ip=$<2>, is2=^Y, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9, - rmul=\E5, smir=^O, smso=\E8, smul=\E4, -# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr) -mime3a|mime1 emulating 3a, - am@, - kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a, -mime3ax|mime-3ax|mime1 emulating enhanced 3a, - it#8, - dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>, - use=mime3a, -# Wed Mar 9 18:53:21 1983 -# We run our terminals at 2400 baud, so there might be some timing problems at -# higher speeds. The major improvements in this model are the terminal now -# scrolls down and insert mode works without redrawing the rest of the line -# to the right of the cursor. This is done with a bit of a kludge using the -# exit graphics mode to get out of insert, but it does not appear to hurt -# anything when using vi at least. If you have some users using act4s with -# programs that use curses and graphics mode this could be a problem. -mime314|mm314|mime 314, - am, - cols#80, lines#24, - clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z, - dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H, - kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S, -# Microterm mime 340 from University of Wisconsin -mm340|mime340|mime 340, - cols#80, lines#24, - clear=\032$<12/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\E#$<2.1*/>, dl1=\EV$<49.6/>, ed=\037$<2*/>, - el=\EL$<2.1/>, ht=^I, il1=\EU$<46/>, ind=^J, is2=\E\,, - kbs=^H, kcub1=^H, kcud1=^J, kcuu1=^K, nel=^M^J, -# This came from University of Wisconsin marked "astro termcap for jooss". -# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:"; -# also added / based on the init string -- esr) -mt4520-rv|micro-term 4520 reverse video, - am, hs, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h, - fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, - ll=\E[24;1H, nel=\EE, rc=\E8, rf=/usr/share/tabset/vt100, - ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m, - rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J, - sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, - tbc=\E[g, tsl=\E[25;1H, - -# Fri Aug 5 08:11:57 1983 -# This entry works for the ergo 4000 with the following setups: -# ansi,wraparound,newline disabled, xon/xoff disabled in both -# setup a & c. -# -# WARNING!!! There are multiple versions of ERGO 4000 microcode -# Be advised that very early versions DO NOT WORK RIGHT !! -# Microterm does have a ROM exchange program- use it or lose big -# (ergo400: added / based on the init string -- esr) -ergo4000|microterm ergo 4000, - da, db, msgr, - cols#80, lines#66, - bel=^G, clear=\E[H\E[2J$<80>, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[1P$<80>, dl1=\E[1M$<5*>, 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>, - smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>, - smso=\E[7m$<20>, - -#### NCR -# -# NCR's terminal group was merged with AT&T's when AT&T bought the company. -# For what happened to that group, see the ADDS section. -# -# There is an NCR4103 terminal that's just a re-badged Wyse-50. -# - -# The following vendor-supplied termcaps were captured from the Boundless -# Technologies site, 8 March 1998. I removed all-upper-case names that were -# identical, except for case, to lower-case ones. I also uncommented the acsc -# capabilities.X -# -# The Intecolor emulation of the NCR 2900/260C color terminal is basically a -# DEC vt200/300 with color capabilities added. -ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300an, -# The Intecolor emulation of the NCR 2900/260C color terminal is basically a -# DEC vt200/300 with color capabilities added. -ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300wan, -# The Intecolor emulation of the NCR 2900/260C color terminal is basically a -# DEC vt200/300 with color capabilities added. -ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300pp, -# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a -# DEC vt200/300 with color capabilities added. -ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300wpp, -# This definition for ViewPoint supports several attributes. This means -# that it has magic cookies (extra spaces where the attributes begin). -# Some applications do not function well with magic cookies. The System -# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. -# If supporting various attributes is not vital, 'xmc#1' and the extra -# attributes can be removed. -# Mapping to ASCII character set ('acsc' capability) can also be -# restored if needed. -ncr260vppp|NCR 2900_260 viewpoint, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, lines#24, nlab#32, xmc#1, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5, - cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>, - dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>, - el=\EK$<2>, fsl=^M, home=\036$<2>, ht=^I, hts=\E1, - il1=\EM$<2>, ind=\n$<2>, invis=\EG1, - is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ, - kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=^J, kcuf1=^F, - kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B\:\r, - kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r, - kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r, - kf20=^B$\r, kf21=\002%^M, kf22=^B&\r, kf23=^B'\r, - kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r, - kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r, - kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r, - kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ, - kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R, - mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>, - nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003, - rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq, - smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF, -ncr260vpwpp|NCR 2900_260 viewpoint wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - use=ncr260vppp, -ncr260vt100an|NCR 2900_260 vt100 with ansi kybd, - am, hs, mir, msgr, xenl, xon, - cols#80, lines#24, nlab#32, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>, - cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, - cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, - cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, - dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, - ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>, - fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I, - hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, - il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>, - invis=\E[8m, - 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, - kdch1=\E[3~, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>, - rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>, - sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+keypad, -ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt100an, -ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd, - is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, - kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, - rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - smkx=\E=, use=ncr260vt100an, -ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt100pp, -ncr260vt200an|NCR 2900_260 vt200 with ansi kybd, - am, hs, mir, msgr, xenl, xon, - cols#80, lines#24, nlab#32, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, - csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>, - cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, - cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, - cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, - dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, - ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, - fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, - ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, - ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, - 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, - kdch1=\E[3~, 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~, - kf2=\EOQ, 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~, kf3=\EOR, kf30=\E[5~, - kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, - kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, - kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, - ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, - use=vt220+keypad, -ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, - use=ncr260vt200an, -ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd, - ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, - kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, - use=ncr260vt200an, -ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+ kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt200pp, -ncr260vt300an|NCR 2900_260 vt300 with ansi kybd, - am, hs, mir, msgr, xenl, xon, - cols#80, lines#24, nlab#32, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, - csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>, - cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, - cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, - cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, - dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, - ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, - fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, - ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, - ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, - 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, - khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - krdo=\E[29~, kslt=\E[4~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, - nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, - rmul=\E[24m, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, - use=vt220+keypad, -ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>, - use=ncr260vt300an, -ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd, - ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, - kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, - use=ncr260vt300an, -NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt300pp, -# This terminfo file contains color capabilities for the Wyse325 emulation of -# the NCR 2900/260C color terminal. Because of the structure of the command -# (escape sequence) used to set color attributes, one of the fore/background -# colors must be preset to a given value. I have set the background color to -# black. The user can change this setup by altering the last section of the -# 'setf' definition. The escape sequence to set color attributes is -# ESC d y 1 -# In addition, the background color can be changed through the desk accessories. -# The capablitiy 'op' sets colors to green on black (default combination). -# -# NOTE: The NCR Unix System Administrator's Shell will not function properly -# if the 'pairs' capability is defined. Un-Comment the 'pairs' -# capability and recompile if you wish to have it included. -# -ncr260wy325pp|NCR 2900_260 wyse 325, - am, bw, hs, km, mc5i, mir, msgr, xon, - colors#16, cols#80, lines#24, ncv#33, nlab#32, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M, - cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, - ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<5>, ht=^I, - hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, - 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=^J, 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, - 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, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - setb=\s, - setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%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, - tsl=\EF, -ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - use=ncr260wy325pp, -# This definition for Wyse 350 supports several attributes. This means -# that it has magic cookies (extra spaces where the attributes begin). -# Some applications do not function well with magic cookies. The System -# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. -# If supporting various attributes is not vital, 'xmc#1' and the extra -# attributes can be removed. -# Mapping to ASCII character set ('acsc' capability) can also be -# restored if needed. -# In addition, color capabilities have been added to this file. The drawback, -# however, is that the background color has to be black. The foreground colors -# are numbered 0 through 15. -# -# NOTE: The NCR Unix System Administrator's Shell does not function properly -# with the 'pairs' capability defined as below. If you wish to -# have it included, Un-comment it and recompile (using 'tic'). -# -ncr260wy350pp|NCR 2900_260 wyse 350, - am, bw, hs, km, mc5i, mir, msgr, xon, - colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, - cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, - ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I, - hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, - 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{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H, - kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, 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$<10>, mc4=^T, mc5=^R, - mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>, - nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0, - rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - setb=\s, - setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>, - sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/, - smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0, - tsl=\EF, -ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - use=ncr260wy350pp, -# This definition for Wyse 50+ supports several attributes. This means -# that it has magic cookies (extra spaces where the attributes begin). -# Some applications do not function well with magic cookies. The System -# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. -# If supporting various attributes is not vital, 'xmc#1' and the extra -# attributes can be removed. -# Mapping to ASCII character set ('acsc' capability) can also be -# restored if needed. -# (ncr260wy50+pp: originally contained commented-out -# , as well as the commented-out one there -- esr) -ncr260wy50+pp|NCR 2900_260 wyse 50+, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, lines#24, nlab#32, xmc#1, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, - cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, - cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, - ed=\EY$<5>, el=\ET$<5>, fsl=^M, home=\036$<10>, - ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>, - invis=\EG1, - is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H, - kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, 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$<10>, 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^C, rmam=\Ed., - rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq, - smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF, -ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - use=ncr260wy50+pp, -ncr260wy60pp|NCR 2900_260 wyse 60, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, lines#24, nlab#32, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, - cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, - ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<25>, - ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>, - invis=\EG1, - is2=\Ee6\E~4$<100>\E+\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$<15>, kcub1=^H, kcud1=^J, 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, - mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>, - nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed., - rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/, - smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>, - tsl=\EF, -ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - use=ncr260wy60pp, -ncr160vppp|NCR 2900_160 viewpoint, - use=ncr260vppp, -ncr160vpwpp|NCR 2900_160 viewpoint wide mode, - use=ncr260vpwpp, -ncr160vt100an|NCR 2900_160 vt100 with ansi kybd, - use=ncr260vt100an, -ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd, - use=ncr260vt100pp, -ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd, - use=ncr260vt100wan, -ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+ kybd, - use=ncr260vt100wpp, -ncr160vt200an|NCR 2900_160 vt200 with ansi kybd, - use=ncr260vt200an, -ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd, - use=ncr260vt200pp, -ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd, - use=ncr260vt200wan, -ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+ kybd, - use=ncr260vt200wpp, -ncr160vt300an|NCR 2900_160 vt300 with ansi kybd, - use=ncr260vt300an, -ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd, - use=ncr260vt300pp, -ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd, - use=ncr260vt300wan, -ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+ kybd, - use=ncr260vt300wpp, -ncr160wy50+pp|NCR 2900_160 wyse 50+, - use=ncr260wy50+pp, -ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode, - use=ncr260wy50+wpp, -ncr160wy60pp|NCR 2900_160 wyse 60, - use=ncr260wy60pp, -ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode, - use=ncr260wy60wpp, -ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal, - am, hs, mc5i, mir, msgr, xon, - cols#80, it#8, lines#24, nlab#32, - acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~, - bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>, - clear=\E[2J\E[1;1H$<300>, cr=^M, - csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>, - cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>, - cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>, - cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>, - dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>, - ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>, - enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>, - ht=^I, hts=\EH, 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, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, 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>, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>, - 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>, -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>, - rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>, - use=ncrvt100an, -# -# Vendor-supplied NCR termcaps end here - -# NCR7900 DIP switches: -# -# Switch A: -# 1-4 - Baud Rate -# 5 - Parity (Odd/Even) -# 6 - Don't Send or Do Send Spaces -# 7 - Parity Enable -# 8 - Stop Bits (One/Two) -# -# Switch B: -# 1 - Upper/Lower Shift -# 2 - Typewriter Shift -# 3 - Half Duplex / Full Duplex -# 4 - Light/Dark Background -# 5-6 - Carriage Return Without / With Line Feed -# 7 - Extended Mode -# 8 - Suppress Keyboard Display -# -# Switch C: -# 1 - End of line entry disabled/enabled -# 2 - Conversational mode / (Local?) Mode -# 3 - Control characters displayed / not displayed -# 4 - (2-wire?) / 4-wire communications -# 5 - RTS on and off for each character -# 6 - (50Hz?) / 60 Hz -# 7 - Exit after level zero diagnostics -# 8 - RS-232 interface -# -# Switch D: -# 1 - Reverse Channel (yes / no) -# 2 - Manual answer (no / yes) -# 3-4 - Cursor appearance -# 5 - Communication Rate -# 6 - Enable / Disable EXT turnoff -# 7 - Enable / Disable CR turnoff -# 8 - Enable / Disable backspace -# -# Since each attribute parameter is 0 or 1, we shift each attribute (standout, -# reverse, blink, dim, and underline) the appropriate number of bits (by -# multiplying the 0 or 1 by a correct factor to shift) so the bias character, -# '@' is (effectively) "or"ed with each attribute to generate the proper third -# character in the 0 sequence. The string implements the following -# equation: -# -# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17)) => -# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17)) -# -# Where: P1 <==> Standout attribute parameter -# P2 <==> Underline attribute parameter -# P3 <==> Reverse attribute parameter -# P4 <==> Blink attribute parameter -# P5 <==> Dim attribute parameter -# From , init string hacked by SCO. -ncr7900i|ncr7900|ncr 7900 model 1, - am, bw, ul, - cols#80, lines#24, xmc#1, - bel=^G, blink=\E0B, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=^J, - is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=^J, kcuf1=^F, - kcuu1=^Z, khome=^A, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=\E0@, - rmul=\E0@, - sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c, - sgr0=\E0@, smso=\E0Q, smul=\E0`, -ncr7900iv|ncr 7900 model 4, - am, bw, eslok, hs, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, - cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1, - fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=^J, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET, - kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, - khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J, - tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo, -# Warning: This terminal will lock out the keyboard when it receives a CTRL-D. -# The user can enter a CTRL-B to get out of this locked state. -# In , we want to output the character given by the formula: -# ((col / 10) * 16) + (col % 10) where "col" is "p1" -ncr7901|ncr 7901 model, - am, bw, ul, - cols#80, lines#24, - bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=^M, - cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dim=\E0A, - ed=\Ek, el=\EK, - hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=^J, - is2=\E4^O, kclr=^L, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, - khome=^H, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=^O, rmul=^O, - sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016, - sgr0=^O, smso=\E0Q\016, smul=\E0`\016, - vpa=\013%p1%{64}%+%c, - -# Newbury Data Recording Limited (Newbury Data) -# -# Have been manufacturing and reselling various peripherals for a long time -# They don't make terminals anymore, but are still in business (in 2007). -# Their e-mail address is at ndsales@newburydata.co.uk -# and their post address is: -# -# Newbury Data Recording Ltd, -# Premier Park, Road One, -# Winsford, Cheshire, CW7 3PT -# -# Their technical support is still good, they sent me for free a printed copy -# of the 9500 user manual and I got it just 1 week after I first contacted them -# (in 2005)! - -# NDR 9500 -# Manufactured in the early/mid eighties, behaves almost the same as a -# Televideo 950. Take a 950, change its cabinet for a more 80s-ish one (but -# keep the same keyboard layout), add an optional 25-line mode, replace the DIP -# switches with a menu and remove the "lock line" feature (ESC ! 1 and ESC ! -# 2), here is the NDR 9500. Even the line-lock, albeit disabled, is -# recognized: if you type in "ESC !", the next (third) character is not -# echoed, showing that the terminal was actually waiting for a parameter! -ndr9500|nd9500|Newbury Data 9500, - am, bw, hs, mc5i, mir, msgr, ul, xon, - cols#80, lines#24, wsl#79, - acsc=jDkClBmAnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, civis=\E.0, - clear=\E;, cnorm=\E.1, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dim=\E), dl1=\ER, dsl=\Eh, ed=\EY, el=\ET, - flash=\Eb$<50/>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE, ind=^J, is2=\Ew\E'\EDF\El\Er\EO, - kDC=\Er, kDL=\EO, kEOL=\Et, kIC=\Eq, kcbt=\EI, kclr=^Z, - kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, - ked=\EY, kel=\ET, kent=^M, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^A`\r, kf13=^Aa\r, kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, - kf17=^Ae\r, kf18=^Af\r, kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, - kf21=^Ai\r, kf22=^Aj\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, kprt=\EP, mc4=\Ea, mc5=\E`, nel=^_, - pfloc=\E|%{48}%p1%+%c2%p2\031, - pfx=\E|%{48}%p1%+%c1%p2\031, prot=\E), ri=\Ej, - rmacs=\E%%, rmir=\Er, rmso=\E(, rmxon=^N, - sgr=\E%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;, - sgr0=\EG0\E%%\E(, smacs=\E$, smir=\Eq, smso=\E), smxon=^O, - tbc=\E3, tsl=\Eg\Ef\011%p1%{32}%+%c, .kbs=^H, - -ndr9500-nl|NDR 9500 with no status line, - hs@, - wsl@, - dsl@, fsl@, tsl@, use=ndr9500, - -ndr9500-25|NDR 9500 with 25th line enabled, - lines#25, use=ndr9500, - -ndr9500-25-nl|NDR 9500 with 25 lines and no status line, - lines#25, use=ndr9500-nl, - -ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisible and blink), - msgr@, - xmc#1, - blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, - sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}%+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c, - sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500, - -ndr9500-25-mc|NDR 500 with 25 lines and magic cookies, - lines#25, use=ndr9500-mc, - -ndr9500-mc-nl|NDR 9500 with magic cookies and no status line, - hs@, - wsl@, - dsl@, fsl@, tsl@, use=ndr9500-mc, - -ndr9500-25-mc-nl|NDR 9500 with 25 lines and magic cookies and no status line, - lines#25, use=ndr9500-mc-nl, - -#### Perkin-Elmer (Owl) -# -# These are official terminfo entries from within Perkin-Elmer. -# - -bantam|pe550|pe6100|perkin elmer 550, - OTbs, - cols#80, lines#24, - bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA, -fox|pe1100|perkin elmer 1100, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003, - home=\EH, hts=\E1, ind=^J, ll=\EH\EA, tbc=\E3, -owl|pe1200|perkin elmer 1200, - OTbs, am, in, - cols#80, lines#24, - bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>, - el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH, - hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>, - kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD, - kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA, - rmso=\E!\0, sgr0=\E!\0, smso=\E!^H, tbc=\E3, -pe1251|pe6300|pe6312|perkin elmer 1251, - am, - cols#80, it#8, lines#24, pb#300, vt#8, xmc#1, - bel=^G, clear=\EK$<332>, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=^J, - kf0=\ERA, kf1=\ERB, kf10=\ERK, kf2=\ERC, kf3=\ERD, kf4=\ERE, - kf5=\ERF, kf6=\ERG, kf7=\ERH, kf8=\ERI, kf9=\ERJ, tbc=\E3, -# (pe7000m: this had -# rmul=\E!\0, smul=\E!\040, -# which is probably wrong, it collides with kf0 -pe7000m|perkin elmer 7000 series monochrome monitor, - am, - cols#80, lines#24, - bel=^G, cbt=\E!Y, clear=\EK, cr=^M, cub1=\ED, cud1=\EB, - cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - ed=\EJ, el=\EI, home=\EH, ind=^J, - is1=\E!\0\EW 7o\Egf\ES7\s, kbs=^H, kcub1=\E!V, - kcud1=\E!U, kcuf1=\E!W, kcuu1=\E!T, kf0=\E!\0, kf1=\E!^A, - kf10=\E!^J, kf2=\E!^B, kf3=\E!^C, kf4=\E!^D, kf5=\E!^E, - kf6=\E!^F, kf7=\E!^G, kf8=\E!^H, kf9=\E!^I, khome=\E!S, - ll=\ES7\s, ri=\ER, -pe7000c|perkin elmer 7000 series colour monitor, - is1=\E!\0\EW 7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0, - rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m, - -#### Sperry Univac -# -# Sperry Univac has merged with Burroughs to form Unisys. -# - -# This entry is for the Sperry UTS30 terminal running the TTY -# utility under control of CP/M Plus 1R1. The functionality -# provided is comparable to the DEC vt100. -# (uts30: I added / based on the init string -- esr) -uts30|sperry uts30 with cp/m@1R1, - am, bw, hs, - cols#80, lines#24, wsl#40, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\ER, clear=^L, - cnorm=\ES, cr=^M, csr=\EU%p1%{32}%+%c%p2%{32}%+%c, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EM, - dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=^M, home=\E[H, - ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN, - ind=^J, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H, - rc=\EX, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EI, - rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m, - rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m, - smul=\E[4m, tsl=\E], uc=\EPB, - -#### Tandem -# -# Tandem builds these things for use with its line of fault-tolerant -# transaction-processing computers. They aren't generally available -# on the merchant market, and so are fairly uncommon. -# - -tandem6510|adm3a repackaged by Tandem, - use=adm3a, - -# A funny series of terminal that TANDEM uses. The actual model numbers -# have a fourth digit after 653 that designates minor variants. These are -# natively block-mode and rather ugly, but they have a character mode which -# this doubtless(?) exploits. There is a 6520 that is slightly dumber. -# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also, -# removed , no such file -- esr) -tandem653|t653x|Tandem 653x multipage terminal, - OTbs, am, da, db, hs, - cols#80, lines#24, wsl#64, xmc#1, - clear=\EI, cub1=^H, cud1=^J, cuf1=\EC, - cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r, - ed=\EJ, el=\EK, fsl=^M, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s, - rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo, - -#### Tandy/Radio Shack -# -# Tandy has a line of VDTs distinct from its microcomputers. -# - -dmterm|deskmate terminal, - am, bw, - cols#80, lines#24, - bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=^M, cub1=^H, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I, - ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4, - kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0, - khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, - lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@, - use=adm+sgr, -dt100|dt-100|Tandy DT-100 terminal, - xon, - cols#80, lines#24, xmc#1, - acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, - il1=\E[L, ind=^J, 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, -dt100w|dt-100w|Tandy DT-100 terminal (wide mode), - cols#132, use=dt100, -dt110|Tandy DT-110 emulating ansi, - xon, - cols#80, lines#24, - acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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=^J, 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, -pt210|TRS-80 PT-210 printing terminal, - hc, os, - cols#80, - bel=^G, cr=^M, cud1=^J, ind=^J, - -#### Tektronix (tek) -# -# Tektronix tubes are graphics terminals. Most of them use modified -# oscilloscope technology incorporating a long-persistence green phosphor, -# and support vector graphics on a main screen with an attached "dialogue -# area" for interactive text. -# - -tek|tek4012|tektronix 4012, - OTbs, os, - cols#75, lines#35, - bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J, - ff=\014$<1000>, is2=\E^O, -# (tek4013: added to suppress tic warnings re / --esr) -tek4013|tektronix 4013, - acsc=, rmacs=\E^O, smacs=\E^N, use=tek4012, -tek4014|tektronix 4014, - cols#81, lines#38, - is2=\E\017\E9, use=tek4012, -# (tek4015: added to suppress tic warnings re / --esr) -tek4015|tektronix 4015, - acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014, -tek4014-sm|tektronix 4014 in small font, - cols#121, lines#58, - is2=\E\017\E\:, use=tek4014, -# (tek4015-sm: added to suppress tic warnings re / --esr) -tek4015-sm|tektronix 4015 in small font, - acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014-sm, -# Tektronix 4023 from Andrew Klossner -# -# You need to have "stty nl2" in effect. Some versions of tset(1) know -# how to set it for you. -# -# It's got the Magic Cookie problem around stand-out mode. If you can't -# live with Magic Cookie, remove the :so: and :se: fields and do without -# reverse video. If you like reverse video stand-out mode but don't want -# it to flash, change the letter 'H' to 'P' in the :so: field. -tek4023|tektronix 4023, - OTbs, am, - OTdN#4, cols#80, lines#24, vt#4, xmc#1, - OTnl=^J, bel=^G, clear=\E\014$<4/>, cr=^M, cub1=^H, cud1=^J, - cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, - rmso=^_@, smso=^_P, -# It is recommended that you run the 4025 at 4800 baud or less; -# various bugs in the terminal appear at 9600. It wedges at the -# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed -# on keyboard don't work. You have to hit BREAK twice to get -# one break at any speed - this is a documented feature. -# Can't use cursor motion because it's memory relative, and -# because it only works in the workspace, not the monitor. -# Same for home. Likewise, standout only works in the workspace. -# -# was commented out since vi and rogue seem to work better -# simulating it with lots of spaces! -# -# and had 145ms of padding, but that slowed down vi's ^U -# and didn't seem necessary. -# -tek4024|tek4025|tek4027|tektronix 4024/4025/4027, - OTbs, am, da, db, - cols#80, it#8, lines#34, lm#0, - bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=^M, - cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r, - cud1=^F^J, cuf=\037rig %p1%d\r, cuf1=\037rig\r, - cuu=\037up %p1%d\r, cuu1=^K, dch1=\037dch\r, - dl=\037dli %p1%d\r\006, dl1=\037dli\r\006, - ed=\037dli 50\r, ht=^I, ich1=\037ich\r \010, - il=\037up\r\037ili %p1%d\r, il1=\037up\r\037ili\r, - ind=^F^J, - is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r, - rmkx=\037lea p2\r\037lea p4\r\037lea p6\r\037lea p8\r\037lea f5\r, - smkx=\037lea p4 /h/\r\037lea p8 /k/\r\037lea p6 / /\r\037lea p2 /j/\r\037lea f5 /H/\r, -tek4025-17|tek 4025 17 line window, - lines#17, use=tek4025, -tek4025-17-ws|tek 4025 17 line window in workspace, - is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r\037wor 17\r\037mon 17\r, - rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r, - smso=\037att e\r, use=tek4025-17, -tek4025-ex|tek4027-ex|tek 4025/4027 w/!, - is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r, - rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025, -# Tektronix 4025a -# From: Doug Gwyn -# The following status modes are assumed for normal operation (replace the -# initial "!" by whatever the current command character is): -# !COM 29 # NOTE: changes command character to GS (^]) -# ^]DUP -# ^]ECH R -# ^]EOL -# ^]RSS T -# ^]SNO N -# ^]STO 9 17 25 33 41 49 57 65 73 -# Other modes may be set according to communication requirements. -# If the command character is inadvertently changed, termcap can't restore it. -# Insert-character cannot be made to work on both top and bottom rows. -# Clear-to-end-of-display emulation via !DLI 988 is too grotty to use, alas. -# There also seems to be a problem with vertical motion, perhaps involving -# delete/insert-line, following a typed carriage return. This terminal sucks. -# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't -# work any more. -- esr) -tek4025a|Tektronix 4025A, - OTbs, OTpt, am, bw, da, db, xon, - cols#80, it#8, lines#34, - bel=^G, cbt=\035bac;, clear=\035era;\n\035rup;, cmdch=^], - cr=^M, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;, - cud1=^J, cuf=\035rig %p1%d;, cuf1=\035rig;, - cuu=\035up %p1%d;, cuu1=^K, dch=\035dch %p1%d;, - dch1=\035dch;, dl=\035dli %p1%d;, dl1=\035dli;, - el=\035dch 80;, hpa=\r\035rig %p1%d;, ht=^I, - il1=\013\035ili;, ind=^J, indn=\035dow %p1%d;, - rs2=!com 29\035del 0\035rss t\035buf\035buf n\035cle\035dis\035dup\035ech r\035eol\035era g\035for n\035pad 203\035pad 209\035sno n\035sto 9 17 25 33 41 49 57 65 73\035wor 0;, - tbc=\035sto;, -# From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981 -# Here's the command file that I use to get rogue to work on the 4025. -# It should work with any program using the old curses (e.g. it better -# not try to scroll, or cursor addressing won't work. Also, you can't -# see the cursor.) -# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh) -tek4025-cr|tek 4025 for curses and rogue, - OTbs, am, - cols#80, it#8, lines#33, - clear=\037era;, cub1=^H, cud1=^F^J, cuf1=\037rig;, - cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F^J, - is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r, - rmcup=\037wor 0, smcup=\037wor 33h, -# next two lines commented out since curses only allows 128 chars, sigh. -# :ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\ -# :te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0: -tek4025ex|4025ex|4027ex|tek 4025 w/!, - is2=\037com 33\r\n!sto 9\,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, - acsc=, bel=^G, blink=\E[=3;<7m, bold=\E[=7;<4m, cbt=\E[Z, - clear=\E[2J\E[H, cr=^M, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[1A, dch1=\E[1P, - dim=\E[=1;<6m, dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - il1=\E[1L, ind=\E[S, invis=\E[=6;<5, is1=\E%!1\E[m, - is2=\E%!1\E[?6141\E[m, kbs=^H, kcub1=\E[1D, kcud1=\E[1B, - kcuf1=\E[1C, kcuu1=\E[1A, rev=\E[=1;<3m, ri=\E[T, - rmacs=\E[m, rmcup=, rmir=\E[4l, rmso=\E[=0;<1m, - rmul=\E[=0;<1m, sgr0=\E[=0;<1m, smacs=\E[1m, - smcup=\E%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m, - smul=\E[=5;<2m, tbc=\E[1g, - -# (tek4105-30: I added / based on the init string -- esr) -tek4105-30|4015 emulating 30 line vt100, - am, mir, msgr, xenl, xon, - cols#80, it#8, lines#30, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, - enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, - 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, sc=\E7, - 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=vt100+fnkeys, - -# Tektronix 4105 from BRL -# The following setup modes are assumed for normal operation: -# CODE ansi CRLF no DABUFFER 141 -# DAENABLE yes DALINES 30 DAMODE replace -# DAVISIBILITY yes ECHO no EDITMARGINS 1 30 -# FLAGGING input INSERTREPLACE replace LFCR no -# ORIGINMODE relative PROMPTMODE no SELECTCHARSET G0 B -# SELECTCHARSET G1 0 TABS -2 -# Other setup modes may be set for operator convenience or communication -# requirements; I recommend -# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes -# BYPASSCANCEL CURSORKEYMODE no DAINDEX 1 0 0 -# EOFSTRING '' EOLSTRING EOMCHARS -# GAMODE overstrike GCURSOR 0 100 0 GSPEED 10 1 -# IGNOREDEL no KEYEXCHAR
NVDEFINE -53 "" -# PROMPTSTRING '' QUEUESIZE 2460 WINDOW 0 0 4095 3132 -# XMTDELAY 0 -# and factory color maps. After setting these modes, save them with NVSAVE. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# "IC" cannot be used in combination with "im" & "ei". -# "tek4105a" is just a guess: -tek4105a|Tektronix 4105, - OTbs, OTpt, msgr, xon, - OTkn#8, cols#80, it#8, lines#30, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J, - cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, 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, rc=\E8, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - 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>, - sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - -# -# Tektronix 4106/4107/4109 from BRL -# The following setup modes are assumed for normal operation: -# CODE ansi COLUMNMODE 80 CRLF no -# DABUFFER 141 DAENABLE yes DALINES 32 -# DAMODE replace DAVISIBILITY yes ECHO no -# EDITMARGINS 1 32 FLAGGING input INSERTREPLACE replace -# LFCR no LOCKKEYBOARD no ORIGINMODE relative -# PROMPTMODE no SELECTCHARSET G0 B SELECTCHARSET G1 0 -# TABS -2 -# Other setup modes may be set for operator convenience or communication -# requirements; I recommend -# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes -# BYPASSCANCEL CURSORKEYMODE no DAINDEX 1 0 0 -# EOFSTRING '' EOLSTRING EOMCHARS -# GAMODE overstrike GCURSOR 0 100 0 GSPEED 9 3 -# IGNOREDEL no KEYEXCHAR
NVDEFINE -53 "" -# PROMPTSTRING '' QUEUESIZE 2620 WINDOW 0 0 4095 3132 -# XMTDELAY 0 -# and factory color maps. After setting these modes, save them with NVSAVE. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# "IC" cannot be used in combination with "im" & "ei". -tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109, - msgr, xon, - cols#80, it#8, lines#32, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J, - cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, 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, rc=\E8, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\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>, - sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g, - -# Tektronix 4107/4109 interpret 4 modes using "\E%!" followed by a code: -# 0 selects Tek mode, i.e., \E%!0 -# 1 selects ANSI mode -# 2 selects ANSI edit-mode -# 3 selects VT52 mode -# -# One odd thing about the description (which has been unchanged since the 90s) -# is that the cursor addressing is using VT52 mode, and a few others use the -# VT52's non-CSI versions of ANSI, e.g., \EJ. -tek4107|tek4109|tektronix terminals 4107 4109, - OTbs, am, mir, msgr, ul, xenl, xt, - cols#79, it#8, lines#29, - bel=^G, blink=\E%!1\E[5m$<2>\E%!0, - bold=\E%!1\E[1m$<2>\E%!0, clear=\ELZ, cnorm=\E%!0, cr=^M, - cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E%!3, - dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=^J, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - rev=\E%!1\E[7m$<2>\E%!0, ri=\EI, - rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0, - sgr=\E%%!1\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>\E%%!0, - sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0, - smul=\E%!1\E[4m$<2>\E%!0, -# Tektronix 4207 with sysline. In the ancestral termcap file this was 4107-s; -# see the note attached to tek4207. -tek4207-s|Tektronix 4207 with sysline but no memory, - eslok, hs, - dsl=\E7\E[?6l\E[2K\E[?6h\E8, fsl=\E[?6h\E8, - is1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J, - is2=\E7\E[?6l\E[2K\E[?6h\E8, - tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107, - -# The 4110 series may be a wonderful graphics series, but they make the 4025 -# look good for screen editing. In the dialog area, you can't move the cursor -# off the bottom line. Out of the dialog area, ^K moves it up, but there -# is no way to scroll. -# -# Note that there is a floppy for free from Tek that makes the -# 4112 emulate the vt52 (use the vt52 termcap). There is also -# an expected enhancement that will use ANSI standard sequences. -# -# 4112 in non-dialog area pretending to scroll. It really wraps -# but vi is said to work (more or less) in this mode. -# -# 'vi' works reasonably well with this entry. -# -otek4112|o4112-nd|otek4113|otek4114|old tektronix 4110 series, - am, - cols#80, lines#34, - bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ind=^J, - rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0, -# The 4112 with the ANSI compatibility enhancement -tek4112|tek4114|tektronix 4110 series, - OTbs, am, db, - 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, -tek4112-nd|4112 not in dialog area, - OTns, - cuu1=^K, use=tek4112, -tek4112-5|4112 in 5 line dialog area, - lines#5, use=tek4112, -# (tek4113: this used to have "", someone's mistake; -# removed ", ", which had been commented out in 8.3. -# Note, the !0 and !1 sequences in /// were -# previously \0410 and \0411 sequences...I don't *think* they were supposed -# to be 4-digit octal -- esr) -tek4113|tektronix 4113 color graphics with 5 line dialog area, - OTbs, am, da, eo, - cols#80, lines#5, - clear=\ELZ, cub1=^H, cud1=^J, cuf1=\ELM1 \ELM0, - flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0, - is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0, -tek4113-34|tektronix 4113 color graphics with 34 line dialog area, - lines#34, - is2=\EKA1\ELLB2\ELV0\ELV1, use=tek4113, -# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not -# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up . -# :vb: needs enough delay to let you see the background color being toggled. -tek4113-nd|tektronix 4113 color graphics with no dialog area, - OTbs, am, eo, - cols#80, it#8, lines#34, - clear=\E^L, cub1=^H, cud1=^J, cuf1=^I, cuu1=^K, - cvvis=\ELZ\EKA0, - flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0, - home=\ELF7l\177 @, ht=^I, is2=\ELZ\EKA0\ELF7l\177 @, - ll=\ELF hl @, rmso=\EMT1, smso=\EMT2, uc=\010\EMG1_\EMG0, -# This entry is from Tek. Inc. (Brian Biehl) -# (tek4115: :bc: renamed to :le:, / added based on init string -- esr) -otek4115|Tektronix 4115, - OTbs, am, da, db, eo, - cols#80, it#8, lines#34, - cbt=\E[Z, clear=\E[H\E[2J, - cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - 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, - 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, -tek4115|newer tektronix 4115 entry with more ANSI capabilities, - am, xon, - cols#80, lines#34, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rmam=\E[?7l, - rmso=\E[m, rmul=\E[m, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%p1%{1}%+%dd, -# The tek4125 emulates a vt100 incorrectly - the scrolling region -# command is ignored. The following entry replaces with the needed -# , , and ; removes some cursor pad commands that the tek4125 -# chokes on; and adds a lot of initialization for the tek dialog area. -# Note that this entry uses all 34 lines and sets the cursor color to green. -# Steve Jacobson 8/85 -# (tek4125: there were two "\!"s in the is that I replaced with "\E!"; -# commented out, =\E1 because there's no -- esr) -tek4125|tektronix 4125, - lines#34, - csr@, dl1=\E[1M, il1=\E[1L, - is2=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - rc@, sc@, smkx=\E=, use=vt100, - -# From: -# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO -# supplied another, less capable 4107 entry. So we'll use that for 4107 and -# note that if jcoker wasn't confused you may be able to use this one. -# I merged in ,,,, from a BRL entry -- esr) -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=^J, 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, - is2=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\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, - -# From: Thu Oct 31 12:54:27 1985 -# (tek4404: There was a "\!" in that I replaced with "\E!". -# Tab had been given as \E2I,that must be the tab-set capability -- esr) -tek4404|tektronix 4404, - OTbs, - cols#80, it#8, lines#32, - blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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, rc=\E8, - rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l, - rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, 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, -# Some unknown person wrote: -# I added the is string - straight Unix has ESC ; in the login -# string which sets a ct8500 into monitor mode (aka 4025 snoopy -# mode). The is string here cleans up a few things (but not -# everything). -ct8500|tektronix ct8500, - am, bw, da, db, - cols#80, lines#25, - bel=^G, cbt=\E^I, clear=\E^E, cr=^M, cub1=^H, cud1=^J, - cuf1=\ES, cup=\E|%p1%{32}%+%c%p2%{32}%+%c, cuu1=\ER, - dch1=\E^], dl1=\E^M, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\, - il1=\E^L, ind=^J, is2=\037\EZ\Ek, ri=\E^A, rmso=\E\s, - rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!, - -# Tektronix 4205 terminal. -# -# am is not defined because the wrap around occurs not when the char. -# is placed in the 80'th column, but when we are attempting to type -# the 81'st character on the line. (esr: hmm, this is like the vt100 -# version of xenl, perhaps am + xenl would work!) -# -# Bold, dim, and standout are simulated by colors and thus not allowed -# with colors. The tektronix color table is mapped into the RGB color -# table by setf/setb. All colors are reset to factory specifications by oc. -# The cap uses RGB notation to define colors. for arguments 1-3 the -# interval (0-1000) is broken into 8 smaller sub-intervals (125). Each sub- -# interval then maps into pre-defined value. -tek4205|tektronix 4205, - ccc, mir, msgr, - 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=^M, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch1=\E[1P, dim=\E[=1;<6m, 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, - 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}%<%tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE1%e%p2%{875}%<%tE\:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<%tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE\:%eF4%;%?%p4%{125}%<%t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%tC8%e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE\:%eF4%;\E%%!1, - invis=\E[=6;<5, is1=\E%!0\ETM1\E%!1\E[m, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOA, - kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EP, kf5=\EQ, kf6=\ER, - kf7=\ES, - oc=\E%!0\ETFB000001F4F4F42F40030F404A4C because of a bug in old vi (if stty says you have -# a "newline" style terminal (-crmode) vi figures all it needs is nl -# to get crlf, even if is not ^M.) -# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr) -tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2, - OTbs, xon, - cols#80, lines#24, - clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB, - cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>, - ed=\EJ$<75>, home=\EH$<10>, ht=\E@$<10>, hts=\E1, - ich1=\E\^$<50>, il1=\EL$<50>, ind=\ES$<20>, kbs=^], - kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4, - rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>, -tty43|model 43 teletype, - OTbs, am, hc, os, xon, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H, - -#### Tymshare -# - -# You can add to put this 40-column mode, though I can't -# for the life of me think why anyone would want to. -scanset|sc410|sc415|Tymshare Scan Set, - am, bw, msgr, - cols#80, lines#24, - acsc=j%k4l, sc=^B, smacs=^N, - -#### Volker-Craig (vc) -# -# If you saw a Byte Magazine cover with a terminal on it during the early -# 1980s, it was probably one of these. Carl Helmers liked them because -# they could crank 19.2 and were cheap (that is, he liked them until he tried -# to program one...) -# - -# Missing in vc303a and vc303 descriptions: they scroll 2 lines at a time -# every other linefeed. -vc303|vc103|vc203|volker-craig 303, - OTbs, OTns, am, - cols#80, lines#24, - bel=^G, clear=\014$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^I, - cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=^J, kcuf1=^I, - kcuu1=^N, ll=\017$<1>W, -vc303a|vc403a|volker-craig 303a, - clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>, - home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303, -# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr) -vc404|volker-craig 404, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\030$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, - ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=^J, - kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z, -vc404-s|volker-craig 404 w/standout mode, - cud1=^J, rmso=^O, smso=^N, use=vc404, -# From: -# (vc414: merged in cup/dl1/home from an old vc414h-noxon) -vc414|vc414h|Volker-Craig 414H in sane escape mode., - OTbs, am, - cols#80, lines#24, - clear=\E\034$<40>, cud1=\E^K, cuf1=^P, - cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3, - dl1=\E\023$<40>, ed=\E^X, el=\E\017$<10/>, home=\E^R, - ich1=\E\:, il1=\E\032$<40>, kcub1=^H, kcud1=\E^K, kcuf1=^P, - kcuu1=\E^L, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, kf4=\EE, - kf5=\EF, kf6=\EG, kf7=\EH, khome=\E^R, lf0=PF1, lf1=PF2, - lf2=PF3, lf3=PF4, lf4=PF5, lf5=PF6, lf6=PF7, lf7=PF8, - rmso=\E^_, smso=\E^Y, -vc415|volker-craig 415, - clear=^L, use=vc404, - -######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS -# - -#### IBM PC and clones -# - -# The pcplot IBM-PC terminal emulation program is really messed up. It is -# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly, -# doesn't support scrolling regions, ignores add line commands, and ignores -# delete line commands. Consequently, the resulting behavior looks like a -# crude adm3a-type terminal. -# Steve Jacobson 8/85 -pcplot|pc-plot terminal emulation program, - xenl@, - csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100, -# KayPro II from Richard G Turner -# I've found that my KayPro II, running MDM730, continues to emulate an -# ADM-3A terminal, just like I was running TERM.COM. On our 4.2 UNIX -# system the following termcap entry works well: -# I have noticed a couple of minor glitches, but nothing I can't work -# around. (I added two capabilities from the BRL entry -- esr) -kaypro|kaypro2|kaypro II, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\032$<1/>, cr=^M, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W, - el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, kcuf1=^L, kcuu1=^K, - -# From IBM, Thu May 5 19:35:27 1983 -# (ibmpc: commented out =\200R because we don't know -- esr) -ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS), - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L^K, cr=^M^^, cub1=^], cud1=^J, cuf1=^\, - cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_, - -ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX, - OTbs, am, bw, eo, hs, km, msgr, ul, - cols#80, it#8, lines#24, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, 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, kbs=^H, - kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241, - kf3=\242, kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247, - kf9=\250, khome=\E[H, kich1=\E[^H, knp=\E[U, kpp=\E[V, - ll=\E[24;1H, nel=^M, rev=\E[7m, ri=\E[T\E[A, - rin=\E[%p1%dT\E[%p1%dA, rmso=\E[m, rmul=\E[m, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - sgr0=\E[m, smso=\E[7m, smul=\E[4m, - -#### Apple II -# -# Apple II firmware console first, then various 80-column cards and -# terminal emulators. For two cents I'd toss all these in the UFO file -# along with the 40-column apple entries. -# - -# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL -# 'it#8' tells UNIX that you have tabs every 8 columns. This is a -# function of TIC, not the firmware. -# The clear key on a IIgs will do something like clear-screen, -# depending on what you're in. -appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface, - OTbs, am, bw, eo, msgr, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ht=^I, ind=^W, kbs=^H, kclr=^X, kcub1=^H, kcud1=^J, - kcuf1=^U, kcuu1=^K, kdch1=\177, nel=^M^W, ri=^V, rmso=^N, - smso=^O, -# Apple //e with 80-column card, entry from BRL -# The modem interface is permitted to discard LF (maybe DC1), otherwise -# passing characters to the 80-column firmware via COUT (PR#3 assumed). -# Auto-wrap does not work right due to newline scrolling delay, which also -# requires that you set "stty cr2". -# Note: Cursor addressing is only available via the Pascal V1.1 entry, -# not via the BASIC PR#3 hook. All this nonsense can be avoided only by -# using a terminal emulation program instead of the built-in firmware. -apple2e|Apple //e, - bw, msgr, - cols#80, lines#24, - bel=^G, clear=\014$<100/>, cub1=^H, cud1=^J, cuu1=^_, - ed=\013$<4*/>, el=\035$<4/>, home=^Y, ht=^I, ind=^W, - is2=^R^N, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^K, - nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N, - smso=^O, -# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro -# 4.20, with incoming and outgoing terminals both on 0, emulation On. -apple2e-p|Apple //e via Pascal, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H, - kcud1=^J, use=apple2e, -# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL -# Enable DC3/DC1 flow control with "stty ixon -ixany". -apple-ae|ASCII Express, - OTbs, am, bw, msgr, nxon, xon, - cols#80, it#8, lines#24, - bel=\007$<500/>, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=^J, - kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N, - smso=^O, -appleII|apple ii plus, - OTbs, am, - cols#80, it#8, lines#24, - clear=^L, cnorm=^TC2, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, cvvis=^TC6, - ed=^K, el=^], flash=\024G1$<200/>\024T1, home=\E^Y, ht=^I, - is2=\024T1\016, kcud1=^J, kcuf1=^U, rmso=^N, sgr0=^N, - smso=^O, -# Originally by Gary Ford 21NOV83 -# From: Fri Oct 11 21:27:00 1985 -apple-80|apple II with smarterm 80 col, - OTbs, am, bw, - cols#80, lines#24, - cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=^J, - cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, - ed=\013$<10*/>, el=\035$<10/>, home=^Y, -apple-soroc|apple emulating soroc 120, - am, - cols#80, lines#24, - bel=^G, clear=\E*$<300>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET, - home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, -# From Peter Harrison, Computer Graphics Lab, San Francisco -# ucbvax!ucsfmis!harrison .....uucp -# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA -# "These two work. If you don't have the inverse video chip for the -# Apple with videx then remove the :so: and :se: fields." -# (apple-videx: this used to be called DaleApple -- esr) -apple-videx|Apple with videx videoterm 80 column board with inverse video, - OTbs, am, xenl, - cols#80, it#8, lines#24, - clear=\014$<300/>, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ht=^I, kcub1=^H, kcud1=^J, kcuf1=^U, khome=^Y, - rmso=^Z2, sgr0=^Z2, smso=^Z3, -# My system [for reference] : Apple ][+, 64K, Ultraterm display card, -# Apple Cat ][ 212 modem, + more all -# controlled by ASCII Express: Pro. -# From Dave Shaver -apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell, - OTbs, am, eo, xt, - cols#80, lines#24, - acsc=, clear=^L, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - flash=^W35^W06, home=^Y, - is2=^V4^W06\017\rVisible Bell Installed.\016\r\n, - rmso=^N, smso=^O, -apple-uterm|Ultraterm for Apple micros, - OTbs, am, eo, xt, - cols#80, lines#24, - acsc=, clear=^L, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, is2=^V4^W06\016, rmso=^N, smso=^O, -# from trwrba!bwong (Bradley W. Wong): -# -# This entry assumes that you are using an apple with the UCSD Pascal -# language card. SYSTEM.MISCINFO is assumed to be the same as that -# supplied with the standard apple except that screenwidth should be set -# using SETUP to 80 columns. Note that the right arrow is not mapped in -# this termcap entry. This is because that key, on the Apple, transmits -# a ^U and would thus preempt the more useful "up" function of vi. -# -# HMH 2/23/81 -apple80p|80-column apple with Pascal card, - am, bw, - cols#80, lines#24, - clear=^Y^L, cuf1=^\\:, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, kcub1=^H, -# -# Apple II+ equipped with Videx 80 column card -# -# Terminfo from ihnp4!ihu1g!djc1 (Dave Christensen) via BRL; -# manually converted by D A Gwyn -# -# DO NOT use any terminal emulation with this data base, it works directly -# with the Videx card. This has been tested with vi 1200 baud and works fine. -# -# This works great for vi, except I've noticed in pre-R2, ^U will scroll back -# 1 screen, while in R2 ^U doesn't. -# For inverse alternate character set add: -# =^O:=^N: -# (apple-v: added it#8 -- esr) -apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520), - am, xenl, - cols#80, it#8, lines#24, - bel=\007$<100/>, clear=\014$<16*/>, cr=^M, cub1=^H, - cud1=^J, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, - cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>, - ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_, - khome=^Y, rmso=^Z2, smso=^Z3, -apple-videx3|vapple|Apple II with 80 col card, - OTbs, am, - cols#80, lines#24, - clear=\Ev, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\Ex, - home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!, kf5=\E", kf6=\E#, - kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH, -#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL -aepro|Apple II+ running ASCII Express Pro--vt52, - OTbs, - cols#80, lines#24, - clear=\014$<300/>, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, -# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory -apple-vm80|ap-vm80|apple with viewmax-80, - OTbs, - cols#80, lines#24, - clear=\014$<300/>, cuf1=^\\:, - cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_, - ed=\013$<300/>, el=^], home=\031$<200/>, - -#### Apple Lisa & Macintosh -# - -# (lisa: changed to -- esr) -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, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, -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, - -# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL; -# revised by Ferd Brundick -# -# These entries assume that the 'Auto Wraparound' is enabled. -# Xon-Xoff flow control should also be enabled. -# -# The vt100 uses :rs2: and :rf: rather than :is2:/:tbc:/:hts: because the tab -# settings are in non-volatile memory and don't need to be reset upon login. -# Also setting the number of columns glitches the screen annoyingly. -# You can type "reset" to get them set. -# -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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=^J, 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, rc=\E8, - rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r, - sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, -# Lisaterm in 132 column ("wide") mode. -lisaterm-w|Apple Lisa with Lisaterm in 132 column mode, - cols#132, - kbs=^H, kcub1=^H, kcud1=^J, use=lisaterm, -# Although MacTerminal has insert/delete line, it is commented out here -# since it is much faster and cleaner to use the "lock scrolling region" -# method of inserting and deleting lines due to the MacTerminal implementation. -# Also, the "Insert/delete ch" strings have an extra character appended to them -# due to a bug in MacTerminal V1.1. Blink is disabled since it is not -# supported by MacTerminal. -mac|macintosh|Macintosh with MacTerminal, - xenl, - OTdN#30, - blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa, -# Lisaterm in 132 column ("wide") mode. -mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode, - cols#132, use=mac, - -# nsterm*|Apple_Terminal - AppKit Terminal.app -# -# Terminal.app is a Terminal emulator bundled with NeXT's NeXTStep and -# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X -# Server and Mac OS X operating systems. There is also a -# "terminal.app" in GNUStep, but I believe it to be an unrelated -# codebase and I have not attempted to describe it here. -# -# For NeXTStep, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you -# are pretty much on your own. Use "nsterm-7-m" and hope for the best. -# You might also try "nsterm-7" and "nsterm-old" if you suspect your -# version supports color. -# -# To determine the version of Terminal.app you're using by running: -# -# echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION" -# -# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm") -# -# For Apple_Terminal v71+/v100+, use "nsterm-bce". -# -# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s". -# -# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s". -# -# For all earlier versions (Apple_Terminal), try "nsterm-7-m" -# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s" -# might work too, but really you're on your own here since these -# systems are very obsolete and I can't test them. I do welcome -# patches, though :). - -# Other Terminals: -# -# For GNUstep_Terminal, you're probably best off using "linux" or -# writing your own terminfo. - -# For MacTelnet, you're on your own. It's a different codebase, and -# seems to be somewhere between "vt102", "ncsa" and "xterm-color". - -# For iTerm.app, see "iterm". - -# -# The AppKit Terminal.app descriptions all have names beginning with -# "nsterm". Note that the statusline (-s) versions use the window -# titlebar as a phony status line, and may produce warnings during -# compilation as a result ("tsl uses 0 parameters, expected 1".) -# Ignore these warnings, or even ignore these entries entirely. Apps -# which need to position the cursor or do other fancy stuff inside the -# status line won't work with these entries. They're primarily useful -# for programs like Pine which provide simple notifications in the -# status line. Please note that non-ASCII characters don't work right -# in the status line, since Terminal.app incorrectly interprets their -# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X -# versions) or only accepts status lines consisting entirely of -# characters from the first 256 Unicode positions (including C1 but -# not C0 or DEL.) -# -# The Mythology* of AppKit Terminal.app: -# -# In the days of NeXTSTep 0.x and 1.x there were two incompatible -# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a -# shareware replacement for Terminal called "Stuart" which NeXT bought -# and used as the basis for the Terminal.app in NeXTstep 2+, -# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I -# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or -# capabilities for the early versions, but I believe that the -# TERM_PROGRAM_VERSION may have been reset at some point. -# -# The early versions were tailored to the NeXT character set. Sometime -# after the Apple aquisition the encoding was swiched to MacRoman -# (initally with serious altcharset bugs due to incomplete conversion -# of the old NeXT code,) and then later to UTF-8. Alos sometime during -# or just prior to the early days of Mac OS X, the Terminal grew ANSI -# 8-color support (initially buggy when combined with attributes, but -# that was later fixed.) More recently, around Mac OS X version 10.3 -# or so (Terminal.app v100+) xterm-like 16-color support was added. In -# some versions (for instance 133-1 which shipped with Mac OS X -# version 10.4) this suffered from the bug, but that seems to -# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+). -# -# In the early days of Mac OS X the terminal was fairly buggy and -# would routinely crash under load. Many of these bugs seem to have -# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but -# some may still remain. This change seems to correspond to -# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as -# it did previously. -# -# * This may correspond with what actually happened, but I don't -# know. It is based on guesswork, hearsay, private correspondence, -# 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 -# -# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia -# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep -# -# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to -# "nsterm" to comply with the name length and case conventions and -# limitations of various software packages [notably Solaris terminfo -# and UNIX.] A single Apple_Terminal alias is retained for -# backwards-compatbility. -# -# * Added function key support (F1-F4). These only work in Terminal.app -# version 51, hopefully the capabilities won't cause problems for people -# using version 41. -# -# * Added "full color" (-c) entries which support the 16-color mode in -# version 51. -# -# * By default, version 51 uses UTF-8 encoding with broken altcharset -# support, so "ASCII" (-7) entries without altcharset support were -# added. - -# nsterm - AppKit Terminal.app -# -# Apple's Mac OS X includes a Terminal.app derived from the old NeXT -# Terminal.app. It is a partial VT100 emulation with some xterm-like -# extensions. This terminfo was written to describe versions 41 -# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X -# version 10.1) of Terminal.app. -# -# Terminal.app runs under the Mac OS X Quartz windowing system (and -# other AppKit-supported windowing systems.) On the Mac OS X machine I -# use, the executable for Terminal.app is: -# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -# -# If you're looking for a description of the full-screen system -# console which runs under Apple's Darwin operating system on PowerPC -# platforms, see the "xnuppc" entry instead. -# -# There were no function keys in version 41. In version 51, there are -# four working function keys (F1, F2, F3 and F4.) The function keys -# are included in all of these entries. -# -# It does not support mouse pointer position reporting. Under some -# circumstances the cursor can be positioned using option-click; this -# works by comparing the cursor position and the selected position, -# and simulating enough cursor-key presses to move the cursor to the -# selected position. This technique fails in all but the simplest -# applications. -# -# It provides partial ANSI color support (background colors interacted -# badly with bold in version 41, though, as reflected in :ncv:.) The -# monochrome (-m) entries are useful if you've disabled color support -# or use a monochrome monitor. The full color (-c) entries are useful -# in version 51, which doesn't exhibit the background color bug. They -# also enable an xterm-compatible 16-color mode. -# -# The configurable titlebar is set using xterm-compatible sequences; -# it is used as a status bar in the statusline (-s) entries. Its width -# depends on font sizes and window sizes, but 50 characters seems to -# be the default for an 80x24 window. -# -# The MacRoman character encoding is used for some of the alternate -# characters in the "MacRoman" entries; the "ASCII" (-7) entries -# disable alternate character set support entirely, and the "VT100" -# (-acs) entries rely instead on Terminal.app's own buggy VT100 -# graphics emulation, which seems to think the character encoding is -# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries -# are useful in Terminal.app version 51, which supports UTF-8 and -# other ASCII-compatible character encodings but does not correctly -# implement VT100 graphics; once VT100 graphics are correctly -# implemented in Terminal.app, the "VT100" (-acs) entries should be -# usable in any ASCII-compatible character encoding [except perhaps -# in UTF-8, where some experts argue for disallowing alternate -# characters entirely.] -# -# Terminal.app reports "vt100" as the terminal type, but exports -# several environment variables which may aid detection in a shell -# profile (i.e. .profile or .login): -# -# TERM=vt100 -# TERM_PROGRAM=Apple_Terminal -# TERM_PROGRAM_VERSION=41 # in Terminal.app version 41 -# TERM_PROGRAM_VERSION=51 # in Terminal.app version 51 -# -# For example, the following Bourne shell script would detect the -# correct terminal type: -# -# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ] -# then -# export TERM -# if [ :"$TERM_PROGRAM_VERSION" = :41 ] -# then -# TERM="nsterm-old" -# else -# TERM="nsterm-c-7" -# fi -# fi -# -# In a C shell derivative, this would be accomplished by: -# -# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then -# if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then -# if ( :"$TERM_PROGRAM_VERSION" == :41 ) then -# setenv TERM "nsterm-old" -# else -# setenv TERM "nsterm-c-7" -# endif -# endif -# endif - -# The '+' entries are building blocks -nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset, - am, bw, msgr, xenl, xon, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, - invis=\E[8m, kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, - sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys, - -nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - enacs=\E(B\E)0, rmacs=^O, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, use=nsterm+7, - -nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset, - acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245, - enacs=\E(B\E)0, rmacs=^O, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, use=nsterm+7, - -nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support, - hs, - wsl#50, - dsl=\E]2;\007, fsl=^G, tsl=\E]2;, - -nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors), - op=\E[0m, use=ibm+16color, - -nsterm+c41|AppKit Terminal.app v41 color support, - colors#8, ncv#37, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -# These are different combinations of the building blocks - -# ASCII charset (-7) -nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome), - use=nsterm+7, - -nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline), - use=nsterm+s, use=nsterm+7, - -nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color), - use=nsterm+c41, use=nsterm+7, - -nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color), - use=nsterm+c, use=nsterm+7, - -nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline), - use=nsterm+s, use=nsterm+c41, use=nsterm+7, - -nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline), - use=nsterm+s, use=nsterm+c, use=nsterm+7, - -# VT100 alternate-charset (-acs) -nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome), - use=nsterm+acs, - -nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline), - use=nsterm+s, use=nsterm+acs, - -nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color), - use=nsterm+c41, use=nsterm+acs, - -nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color), - use=nsterm+c, use=nsterm+acs, - -nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline), - use=nsterm+s, use=nsterm+c41, use=nsterm+acs, - -nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline), - use=nsterm+s, use=nsterm+c, use=nsterm+acs, - -# MacRoman charset -nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome), - use=nsterm+mac, - -nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline), - use=nsterm+s, use=nsterm+mac, - -nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color), - use=nsterm+c41, use=nsterm+mac, - -nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color), - use=nsterm+c, use=nsterm+mac, - -nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline), - use=nsterm+s, use=nsterm+c41, use=nsterm+mac, - -nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline), - use=nsterm+s, use=nsterm+c, use=nsterm+mac, - -# In Mac OS X version 10.5 the format of the preferences has changed -# and a new, more complex technique is needed, e.g., -# -# python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass( -# "NSUserDefaults");ud=NSUserDefaults.alloc(); -# ud.init();prefs=ud.persistentDomainForName_( -# "com.apple.Terminal");prefs["Window Settings"][ -# prefs["Default Window Settings"]]["TerminalType" -# ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs, -# "com.apple.Terminal")' nsterm-16color -# -# and it is still not settable from the preferences dialog. This is -# tracked under rdar://problem/7365108 and rdar://problem/7365134 -# in Apple's bug reporter. -nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5, - bw@, mir, npc, - civis=\E[?25l, cnorm=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, - flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG, - ich=\E[%p1%d@, ich1=\E[@, 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~, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, - smcup=\E7\E[?47h, smir=\E[4h, vpa=\E[%i%p1%dd, - 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 bug. The newer version 240.2 in Mac OS X -# version 10.5 does not. -# -# This entry is based on newsgroup comments by Alain Bench, Christian Ebert, -# and D P Schreber comparing to nsterm-c-s-acs. -# -# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM -# can be set in Terminal.app, e.g., -# -# defaults write com.apple.Terminal TermCapString nsterm-bce -# -# and that it is not set in Terminal's preferences dialog. -nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce), - bce, bw, use=nsterm-16color, - -# This is an alias which should always point to the "current" version -nsterm|Apple_Terminal|AppKit Terminal.app, - use=nsterm-16color, - -# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and -# more featureful) terminal emulator for Mac OS X. It is similar -# enough in capabilities to nsterm-16color that I have derived this -# description from that one, but as far as I know they share no code. -# Many of the features are user-configurable, but I attempt only to -# describe the default configuration. -# -# NOTE: When tack tests (csr) + (nel) iTerm.app crashes, so (csr) is -# disabled. -iTerm.app|iTerm.app terminal emulator for Mac OS X, - bce, bw@, ccc@, - csr@, initc@, kend=\EOF, khome=\EOH, use=xterm+256color, - use=nsterm-16color, - -# xnuppc - Darwin PowerPC Console (a.k.a. "darwin") -# -# On PowerPC platforms, Apple's Darwin operating system uses a -# full-screen system console derived from a NetBSD framebuffer -# console. It is an ANSI-style terminal, and is not really VT-100 -# compatible. -# -# Under Mac OS X, this is the system console driver used while in -# single-user mode [reachable by holding down Command-S during the -# boot process] and when logged in using console mode [reachable by -# typing ">console" at the graphical login prompt.] -# -# If you're looking for a description of the Terminal.app terminal -# emulator which runs under the Mac OS X Quartz windowing system (and -# other AppKit-supported windowing systems,) see the "nsterm" -# entry instead. -# -# NOTE: Under Mac OS X version 10.1, the default login window does not -# prompt for user name, instead requiring an icon to be selected from -# a list of known users. Since the special ">console" login is not in -# this list, you must make one of two changes in the Login Window -# panel of the Login section of System Prefs to make the special -# ">console" login accessible. The first option is to enable 'Show -# "Other User" in list for network users', which will add a special -# "Other..." icon to the graphical login panel. Selecting "Other..." -# will present the regular graphical login prompt. The second option -# is to change the 'Display Login Window as:' setting to 'Name and -# password entry fields', which replaces the login panel with a -# graphical login prompt. -# -# There are no function keys, at least not in Darwin 1.3. -# -# It has no mouse support. -# -# It has full ANSI color support, and color combines correctly with -# all three supported attributes: bold, inverse-video and underline. -# However, bold colored text is almost unreadable (bolding is -# accomplished using shifting and or-ing, and looks smeared) so bold -# has been excluded from the list of color-compatible attributes -# [using (ncv)]. The monochrome entry (-m) is useful if you use a -# monochrome monitor. -# -# There is one serious bug with this terminal emulation's color -# support: repositioning the cursor onto a cell with non-matching -# colors obliterates that cell's contents, replacing it with a blank -# and displaying a colored cursor in the "current" colors. There is -# no complete workaround at present [other than using the monochrome -# (-m) entries,] but removing the (msgr) capability seemed to help. -# -# The "standout" chosen was simple reverse-video, although a colorful -# standout might be more aesthetically pleasing. Similarly, the bold -# chosen is the terminal's own smeared bold, although a simple -# color-change might be more readable. The color-bold (-b) entries -# uses magenta colored text for bolding instead. The fancy color (-f -# and -f2) entries use color for bold, standout and underlined text -# (underlined text is still underlined, though.) -# -# Apparently the terminal emulator does support a VT-100-style -# alternate character set, but all the alternate character set -# positions have been left blank in the font. For this reason, no -# alternate character set capabilities have been included in this -# description. The console driver appears to be ASCII-only, so (enacs) -# has been excluded [although the VT-100 sequence does work.] -# -# The default Mac OS X and Darwin installation reports "vt100" as the -# terminal type, and exports no helpful environment variables. To fix -# this, change the "console" entry in /etc/ttys from "vt100" to -# "xnuppc-WxH", where W and H are the character dimensions of your -# console (see below.) -# -# The font used by the terminal emulator is apparently one originally -# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This -# file includes descriptions for the following geometries: -# -# Pixels Characters Entry Name (append -m for monochrome) -# ------------------------------------------------------------------- -# 640x400 80x25 xnuppc-80x25 -# 640x480 80x30 xnuppc-80x30 -# 720x480 90x30 xnuppc-90x30 -# 800x600 100x37 xnuppc-100x37 -# 896x600 112x37 xnuppc-112x37 -# 1024x640 128x40 xnuppc-128x40 -# 1024x768 128x48 xnuppc-128x48 -# 1152x768 144x48 xnuppc-144x48 -# 1280x1024 160x64 xnuppc-160x64 -# 1600x1024 200x64 xnuppc-200x64 -# 1600x1200 200x75 xnuppc-200x75 -# 2048x1536 256x96 xnuppc-256x96 -# -# The basic "xnuppc" entry includes no size information, and the -# emulator includes no reporting capability, so you'll be at the mercy -# of the TTY device (which reports incorrectly on my hardware.) The -# color-bold entries do not include size information. - -# The '+' entries are building blocks -xnuppc+basic|Darwin PowerPC Console basic capabilities, - am, bce, mir, xenl, - it#8, - bold=\E[1m, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, - rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, - sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=vt100+keypad, - -xnuppc+c|Darwin PowerPC Console ANSI color support, - colors#8, ncv#32, pairs#64, - op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -xnuppc+b|Darwin PowerPC Console color-bold support, - ncv#32, - bold=\E[35m, - sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, - use=xnuppc+basic, - -xnuppc+f|Darwin PowerPC Console fancy color support, - ncv#35, - sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;m, - smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b, - -xnuppc+f2|Darwin PowerPC Console alternate fancy color support, - ncv#35, - bold=\E[33m, - sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m, - smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic, - -# Building blocks for specific screen sizes -xnuppc+80x25|Darwin PowerPC Console 80x25 support (640x400 pixels), - cols#80, lines#25, - -xnuppc+80x30|Darwin PowerPC Console 80x30 support (640x480 pixels), - cols#80, lines#30, - -xnuppc+90x30|Darwin PowerPC Console 90x30 support (720x480 pixels), - cols#90, lines#30, - -xnuppc+100x37|Darwin PowerPC Console 100x37 support (800x600 pixels), - cols#100, lines#37, - -xnuppc+112x37|Darwin PowerPC Console 112x37 support (896x600 pixels), - cols#112, lines#37, - -xnuppc+128x40|Darwin PowerPC Console 128x40 support (1024x640 pixels), - cols#128, lines#40, - -xnuppc+128x48|Darwin PowerPC Console 128x48 support (1024x768 pixels), - cols#128, lines#48, - -xnuppc+144x48|Darwin PowerPC Console 144x48 support (1152x768 pixels), - cols#144, lines#48, - -xnuppc+160x64|Darwin PowerPC Console 160x64 support (1280x1024 pixels), - cols#160, lines#64, - -xnuppc+200x64|Darwin PowerPC Console 200x64 support (1600x1024 pixels), - cols#200, lines#64, - -xnuppc+200x75|Darwin PowerPC Console 200x75 support (1600x1200 pixels), - cols#200, lines#75, - -xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels), - cols#256, lines#96, - -# These are different combinations of the building blocks - -xnuppc-m|darwin-m|Darwin PowerPC Console (monochrome), - use=xnuppc+basic, - -xnuppc|darwin|Darwin PowerPC Console (color), - use=xnuppc+c, use=xnuppc+basic, - -xnuppc-m-b|darwin-m-b|Darwin PowerPC Console (monochrome w/color-bold), - use=xnuppc+b, - -xnuppc-b|darwin-b|Darwin PowerPC Console (color w/color-bold), - use=xnuppc+b, use=xnuppc+c, - -xnuppc-m-f|darwin-m-f|Darwin PowerPC Console (fancy monochrome), - use=xnuppc+f, - -xnuppc-f|darwin-f|Darwin PowerPC Console (fancy color), - use=xnuppc+f, use=xnuppc+c, - -xnuppc-m-f2|darwin-m-f2|Darwin PowerPC Console (alternate fancy monochrome), - use=xnuppc+f2, - -xnuppc-f2|darwin-f2|Darwin PowerPC Console (alternate fancy color), - use=xnuppc+f2, use=xnuppc+c, - -# Combinations for specific screen sizes -xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC Console (monochrome) 80x25, - use=xnuppc+80x25, use=xnuppc+basic, - -xnuppc-80x25|darwin-80x25|Darwin PowerPC Console (color) 80x25, - use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic, - -xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC Console (monochrome) 80x30, - use=xnuppc+80x30, use=xnuppc+basic, - -xnuppc-80x30|darwin-80x30|Darwin PowerPC Console (color) 80x30, - use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic, - -xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC Console (monochrome) 90x30, - use=xnuppc+90x30, use=xnuppc+basic, - -xnuppc-90x30|darwin-90x30|Darwin PowerPC Console (color) 90x30, - use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic, - -xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC Console (monochrome) 100x37, - use=xnuppc+100x37, use=xnuppc+basic, - -xnuppc-100x37|darwin-100x37|Darwin PowerPC Console (color) 100x37, - use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic, - -xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC Console (monochrome) 112x37, - use=xnuppc+112x37, use=xnuppc+basic, - -xnuppc-112x37|darwin-112x37|Darwin PowerPC Console (color) 112x37, - use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic, - -xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC Console (monochrome) 128x40, - use=xnuppc+128x40, use=xnuppc+basic, - -xnuppc-128x40|darwin-128x40|Darwin PowerPC Console (color) 128x40, - use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic, - -xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC Console (monochrome) 128x48, - use=xnuppc+128x48, use=xnuppc+basic, - -xnuppc-128x48|darwin-128x48|Darwin PowerPC Console (color) 128x48, - use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic, - -xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC Console (monochrome) 144x48, - use=xnuppc+144x48, use=xnuppc+basic, - -xnuppc-144x48|darwin-144x48|Darwin PowerPC Console (color) 144x48, - use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic, - -xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC Console (monochrome) 160x64, - use=xnuppc+160x64, use=xnuppc+basic, - -xnuppc-160x64|darwin-160x64|Darwin PowerPC Console (color) 160x64, - use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic, - -xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC Console (monochrome) 200x64, - use=xnuppc+200x64, use=xnuppc+basic, - -xnuppc-200x64|darwin-200x64|Darwin PowerPC Console (color) 200x64, - use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic, - -xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC Console (monochrome) 200x75, - use=xnuppc+200x75, use=xnuppc+basic, - -xnuppc-200x75|darwin-200x75|Darwin PowerPC Console (color) 200x75, - use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic, - -xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC Console (monochrome) 256x96, - use=xnuppc+256x96, use=xnuppc+basic, - -xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96, - use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic, - -#### Radio Shack/Tandy -# - -# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7". -# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr) -# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90 -coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, blink=^_", bold=\E\:^A, civis=^E\s, - clear=\014$<5*/>, cnorm=^E!, cub1=^H, cud1=^J, cuf1=^F, - cup=\002%p2%{32}%+%c%p1%{32}%+%c$<2/>, cuu1=^I, - dl1=^_1, ed=^K, el=^D, home=^A, il1=^_0, kcub1=^H, kcud1=^J, - kcuf1=^I, kcuu1=^L, rev=^_\s, rmso=^_!, rmul=^_#, - sgr0=\037!\E\:\0, smso=^_\s, smul=^_", -# (trs2: removed obsolete ":nl=^_:" -- esr) -trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M, - OTbs, am, msgr, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^_, cuf1=^], - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, dl1=^K, ed=^B, - el=^A, home=^F, ht=^I, il1=^D, ind=^J, kbs=^H, kcub1=^\, - kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N, -# From: Kevin Braunsdorf -# (This had extension capabilities -# :BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\ -# :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@: -# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr) -trs16|trs-80 model 16 console, - OTbs, am, - cols#80, it#8, lines#24, - acsc=jak`l_mbquvewcxs, bel=^G, civis=\ERc, clear=^L, - cnorm=\ERC, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL, - ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S, - khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, - lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@, - smacs=\ERG, smso=\ERD, - -#### Commodore Business Machines -# -# Formerly located in West Chester, PA; went spectacularly bust in 1994 -# after years of shaky engineering and egregious mismanagement. Made one -# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64, -# C-128, VIC-20). The C-64 is said to have been the most popular machine -# ever (most units sold); they can still be found gathering dust in closets -# everywhere. -# - -# From: Kent Polk , 30 May 90 -# Added a few more entries, converted caret-type control sequence (^x) entries -# to '\0xx' entries since a couple of people mentioned losing '^x' sequences. -# Corrections by Ty Sarna , Sat Feb 28 18:55:15 1998 -# -# :as:, :ae: Support for alternate character sets. -# :ve=\E[\040p:vi=\E[\060\040p: cursor visible/invisible. -# :xn: vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept) -# This one appears to fix a problem I always had with a line ending -# at 'width+1' (I think) followed by a blank line in vi. The blank -# line tended to disappear and reappear depending on how the screen -# was refreshed. Note that this is probably needed only if you use -# something like a Dnet Fterm with the window sized to some peculiar -# dimension larger than 80 columns. -# :k0=\E9~: map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;' -# (amiga: removed obsolete :kn#10:, -# also added empty to suppress a warning --esr) -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, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, 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, rin=\E[%p1%dT, rmacs=^O, rmso=\E[m, rmul=\E[m, - rs1=\Ec, sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m, - -# From: Hans Verkuil , 4 Dec 1995 -# (amiga: added empty to suppress a warning. -# I'm told this entry screws up badly with AS225, the Amiga -# TCP/IP package once from Commodore, and now sold by InterWorks.--esr) -amiga-h|Hans Verkuil's Amiga ANSI, - OTbs, bw, msgr, - cols#80, lines#24, - acsc=, bel=^G, blink=\2337;2m, bold=\2331m, cbt=\233Z, - civis=\2330 p, clear=\233H\233J, cnorm=\233 p, cr=^M, - cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B, - cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, - cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P, - dim=\2332m, ech=\233%p1%dP, ed=\233J, el=\233K, flash=^G, - home=\233H, ht=^I, ich=\233%p1%d@, ich1=\233@, ind=\233S, - indn=\233%p1%dS, invis=\2338m, is2=\23320l, kbs=^H, - kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, - kdch1=\177, kf0=\2339~, kf1=\2330~, kf2=\2331~, kf3=\2332~, - kf4=\2333~, kf5=\2334~, kf6=\2335~, kf7=\2336~, kf8=\2337~, - kf9=\2338~, nel=\233B\r, rev=\2337m, ri=\233T, - rin=\233%p1%dT, rmacs=^O, rmcup=\233?7h, rmso=\2330m, - rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l, - smso=\2337m, smul=\2334m, - -# From: Henning 'Faroul' Peters , 25 Sep 1999 -# -# Pavel Fedin added -# Home Shift+Left -# End Shift+Right -# PgUp Shift+Up -# PgDn Shift+Down -amiga-8bit|Amiga ANSI using 8-bit controls, - acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L, - ind=\204, indn@, kend=\233 @, khome=\233 A, knp=\233S, - kpp=\233T, ri=\215, rin@, use=amiga-h, - -# From: Ruediger Kuhlmann , 18 Jul 2000 -# requires use of appropriate preferences settings. -amiga-vnc|Amiga using VNC console (black on light gray), - am, da, db, msgr, ndscr, - btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#256, - bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p, - clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED, - indn=\E[%p1%dS, invis=\E8m, - is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h, - kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kdch1=\177, 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~, 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, rin=\E[%p1%dT, rmcup=\E[?7h\E[r\E[J, - rmkx=\E[?1l, rmso=\E[21m, rmul=\E[24m, 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, - -# MorphOS on Genesi Pegasos -# By Pavel Fedin -morphos, - acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L, - ind=\204, indn@, kend=\23345~, kf11=\23320~, kf12=\23321~, - khome=\23344~, kich1=\23340~, knp=\23342~, kpp=\23341~, - ri=\215, rin@, use=amiga-h, - -# Commodore B-128 microcomputer from Doug Tyrol -# I'm trying to write a termcap for a commodore b-128, and I'm -# having a little trouble. I've had to map most of my control characters -# to something that unix will accept (my delete-char is a ctrl-t, etc), -# and create some functions (like cm), but thats life. -# The problem is with the arrow keys - right, and up work fine, but -# left deletes the previous character and down I just can't figure out. -# Jove knows what I want, but I don't know what it's sending to me (it -# isn't thats bound to next-line in jove). -# Anybody got any ideas? Here's my termcap. -# DAG -- I changed his "^n" entries to "\n"; see if that works. -# -commodore|b-128|Commodore B-128 micro, - am, bw, - OTdN#20, cols#80, lines#24, pb#150, - OTbc=^H, OTnl=^M, clear=\E\006$<10/>, cr=^M, cud1=^J, - cuf1=^F, cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P, - dch1=\177$<10*/>, dl1=\Ed$<10*/>, el=\Eq$<10/>, - home=\E^E, ht=\011$<5/>, ich1=\E\n$<5/>, il1=\Ei$<10/>, - kcub1=^B, kcud1=^J, kcuf1=^F, kcuu1=^P, khome=\E^E, rmir=, - smir=, - -#### North Star -# -# North Star Advantage from Lt. Fickie via BRL -northstar|North Star Advantage, - OTbs, - cols#80, lines#24, - clear=\004$<200/>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>, - el=\016$<200/>, home=\034\032$<200/>, - -#### Osborne -# -# Thu Jul 7 03:55:16 1983 -# -# As an aside, be careful; it may sound like an anomaly on the -# Osborne, but with the 80-column upgrade, it's too easy to -# enter lines >80 columns! -# -# I've already had several comments... -# The Osborne-1 with the 80-col option is capable of being -# 52, 80, or 104 characters wide; default to 80 for compatibility -# with most systems. -# -# The tab is destructive on the Ozzie; make sure to 'stty -tabs'. -osborne-w|osborne1-w|osborne I in 104-column mode, - msgr, ul, xt, - cols#104, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=^J, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, rmso=\E(, rmul=\Em, smso=\E), smul=\El, -# Osborne I from ptsfa!rhc (Robert Cohen) via BRL -osborne|osborne1|osborne I in 80-column mode, - OTbs, am, mir, msgr, ul, xhp, - OTdB#4, cols#80, lines#24, - clear=^Z, cub1=\010$<4>, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW$<4/>, dl1=\ER, el=\ET, il1=\EE, is2=^Z, kbs=^H, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E), - rmul=\Em, smir=\EQ, smso=\E(, smul=\El, -# -# Osborne Executive definition from BRL -# Similar to tvi920 -# Added by David Milligan and Tom Smith (SMU) -osexec|Osborne executive, - OTbs, am, - OTug#1, cols#80, lines#24, xmc#1, - OTnl=^J, bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, - is2=\Eq\Ek\Em\EA\Ex0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, - kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, - kf9=^AI\r, rmir=, rmso=\Ek, rmul=\Em, smir=, smso=\Ej, - smul=\El, tbc=\E3, - -#### Console types for obsolete UNIX clones -# -# Coherent, Minix, Venix, and several lesser-known kin were OSs for 8088 -# machines that tried to emulate the UNIX look'n'feel. Coherent and Venix -# were commercial, Minix an educational tool sold in conjunction with a book. -# Memory-segmentation limits and a strong tendency to look like V7 long after -# it was obsolete made all three pretty lame. Venix croaked early. Coherent -# and Minix were ported to 32-bit Intel boxes, only to be run over by a -# steamroller named `Linux' (which, to be fair, traces some lineage to Minix). -# Coherent's vendor, the Mark Williams Company, went belly-up in 1994. There -# are also, I'm told, Minix ports that ran on Amiga and Atari machines and -# even as single processes under SunOS and the Macintosh OS. -# - -# See -# http://www.minix3.org/manpages/man4/console.4.html -minix|minix console (v3), - use=ecma+color, use=minix-1.7, - -# See -# http://www.minix-vmd.org/pub/Minix-vmd/1.7.0/wwwman/man4/console.4.html -# This is the entry provided with minix 1.7.4, with bogus :ri: removed. -minix-1.7|minix console (v1.7), - am, xenl, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, el1=\E[2K, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf0=\E[Y, kf1=\E[V, kf2=\E[U, - kf3=\E[T, kf4=\E[S, kf5=\E[G, khome=\E[H, lf0=End, lf1=PgUp, - lf2=PgDn, lf3=Num +, lf4=Num -, lf5=Num 5, nel=^M^J, - rev=\E[7m, ri=\EM, rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m, - smso=\E[7m, smul=\E[4m, -# Corrected Jan 14, 1997 by Vincent Broman -minix-old|minix-1.5|minix console (v1.5), - xon, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G, - khome=\E[H, nel=^M^J, rev=\E[7m, ri=\EM, rmso=\E[0m, - rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m, -# The linewrap option can be specified by editing /usr/include/minix/config.h -# before recompiling the minix 1.5 kernel. -minix-old-am|minix console with linewrap, - am, use=minix-old, - -pc-minix|minix console on an Intel box, - use=klone+acs, use=minix, - -# According to the Coherent 2.3 manual, the PC console is similar -# to a z19. The differences seem to be (1) 25 lines, (2) no status -# line, (3) standout is broken, (4) ins/del line is broken, (5) -# has blinking and bold. -pc-coherent|pcz19|coherent|IBM PC console running Coherent, - am, mir, - cols#80, it#8, lines#25, - bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EN, - ed=\EJ, el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO, - rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep, - -# According to the Venix 1.1 manual, the PC console is similar -# to a DEC vt52. Differences seem to be (1) arrow keys send -# different strings, (2) enhanced standout, (3) added insert/delete line. -# Note in particular that it doesn't have automatic margins. -# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they -# not described here because this derives from an old termcap entry. -pc-venix|venix|IBM PC console running Venix, - cols#80, it#8, lines#25, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, - ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\EK, - kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI, - -#### Miscellaneous microcomputer consoles -# -# If you know anything more about any of these, please tell me. -# - -# The MAI Basic Four computer was obsolete at the end of the 1980s. -# It may be used as a terminal by putting it in "line" mode as seen on -# one of the status lines. -# Initialization is similar to CIT80. will set ANSI mode for you. -# Hardware tabs set by at 8-spacing. Auto line wrap causes glitches so -# wrap mode is reset by . Using =\E[S caused errors so I -# used \ED instead. -# From: bf347@lafn.org (David Lawyer), 28 Jun 1997 -mai|basic4|MAI Basic Four in ansi mode, - am, da, db, mir, msgr, - cols#82, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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, - 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=^M\ED, rc=\E8, rev=\E[7m, ri=\E[T, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, - smir=\E[4h, smso=\E[7m, smul=\E[4m, -# basis from Peter Harrison, Computer Graphics Lab, San Francisco -# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA -# -# On Sat, 7 Aug 1999, Torsten Jerzembeck wrote: -# The Basis 108 was a Apple II clone, manufactured by the "Basis -# Mikrocomputer GmbH" in Munster, Germany (the company still exists today, -# about 1,5 km from where I live, but doesn't build own computers any -# more). A Basis 108 featured a really heavy (cast aluminium?) case, was -# equipped with one or two 5.25" disk drives, had a monochrome and colour -# video output for a TV set or a dedicated monitor and several slots for -# Apple II cards. Basis 108 were quite popular at german schools before -# the advent of the IBM PC. They run, for example, the UCSD Pascal -# development system (which I used even in 1993 to program the steering -# and data recording for our school's experimental solar panel :), Apple DOS -# or CP/M. -# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr) -basis|BASIS108 computer with terminal translation table active, - clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E), - smso=\E(, use=adm3a, -# luna's BMC terminal emulator -luna|luna68k|LUNA68K Bitmap console, - cols#88, lines#46, use=ansi-mini, -megatek|pegasus workstation terminal emulator, - am, os, - cols#83, lines#60, -# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived -# interface (pre-Macintosh by several years) that went nowhere. -xerox820|x820|Xerox 820, - am, - cols#80, lines#24, - bel=^G, clear=1^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X, - home=^^, ind=^J, - -#### Videotex and teletext -# - -# \E\:1} switch to te'le'informatique mode (ascii terminal/ISO 6429) -# \E[?3l 80 columns -# \E[?4l scrolling on -# \E[12h local echo off -# \Ec reset: G0 U.S. charset (to get #,@,{,},...), 80 cols, clear screen -# \E)0 G1 DEC set (line graphics) -# -# From: Igor Tamitegama , 18 Jan 1997 -m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique, - OTbs, eslok, hs, xenl, - cols#80, it#8, lines#24, wsl#72, xmc#0, - acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J, - cnorm=\E[<1l, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=^J, - home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, ip=$<7/>, - is1=\E\:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0, - is3=\E[?3l kbs=\010, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, - kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H, - mc0=\E[i, nel=^M^J, rc=\E8, 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, sc=\E7, sgr0=\E[m, - smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A, - u6=\E[%i%d;%dR, u7=\E[6n, - -# From: Alexandre Montaron , 18 Jun 1998 -# -minitel1|minitel 1, - am, bw, eslok, hs, hz, msgr, - colors#8, cols#40, lines#24, pairs#8, - acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L, - cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I, - cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X, - enacs=^Y, fsl=^J, home=^^, ind=^J, - is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG, - rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\, - setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;, - sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;, - sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c, -# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON. -minitel1b|minitel 1-bistandard (in 40cols mode), - mir, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L, - is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, - kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l, - smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1, -# posait des problemes (logout en sortant de vi). -minitel1b-80|minitel 1-bistandard (standard teleinformatique), - am@, bw@, hz@, - colors@, cols#80, it#8, pairs@, - blink=\E[5m, bold=\E[1m, civis=\037@A\024\n, - clear=\E[H\E[2J, cnorm=\037@A\021\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=\ED, is1@, is2@, kent=\EOM, kf0=\EOp, kf1=\EOq, - kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw, - kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m, - ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, - sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b, - -######## OBSOLETE VDT TYPES -# -# These terminals are *long* dead -- these entries are retained for -# historical interest only. - -#### Amtek Business Machines -# - -# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y", -# but these caps were commented out in 8.3; also, removed overridden -# ":do=^J:" -- esr) -abm80|amtek business machines 80, - OTbs, am, bw, - cols#80, lines#24, - cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P, - cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L, - dl1=\E^S, ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, - -#### Bell Labs blit terminals -# -# These were AT&T's official entries. The 5620 FAQ maintained by -# David Breneman has this to say: -# -# Actually, in the beginning was the Jerq, and the Jerq was white with a -# green face, and Locanthi and Pike looked upon the Jerq and said the Jerq -# was good. But lo, upon the horizon loomed a mighty management-type person -# (known now only by the initials VP) who said, the mighty Jerq must stay -# alone, and could not go forth into the world. So Locanthi and Pike put the -# Jerq to sleep, cloned its parts, and the Blit was brought forth unto the -# world. And the Jerq lived the rest of its days in research, but never -# strayed from those paths. -# -# In all seriousness, the Blit was originally known as the Jerq, but when -# it started to be shown outside of the halls of the Bell Labs Research -# organization, the management powers that be decided that the name could -# not remain. So it was renamed to be Blit. This was in late 1981. -# -# (The AT&T 5620 was the commercialized Blit. Its successors were the 630, -# 730, and 730+.) -# - -blit|jerq|blit running teletype rom, - am, eo, ul, xon, - cols#87, it#8, lines#72, - bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, - dch=\Ee%p1%{32}%+%c, dch1=\Ee!, dl=\EE%p1%{32}%+%c, - dl1=\EE!, el=\EK, ht=^I, ich=\Ef%p1%{32}%+%c, ich1=\Ef!, - il=\EF%p1%{32}%+%c, il1=\EF!, ind=^J, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez, - -# (cbblit: here's a BSD termcap that says -- esr) -cbblit|fixterm|blit running columbus code, - cols#88, - ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d, - rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!, - smul=\EU", use=blit, - -oblit|ojerq|first version of blit rom, - am, da, db, eo, mir, ul, xon, - cols#88, it#8, lines#72, - bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\EO, - dl=\Ee%p1%{32}%+%c, dl1=\EE, ed=\EJ, el=\EK, flash=\E^G, - ht=^I, il=\Ef%p1%{32}%+%c, il1=\EF, ind=^J, kbs=^H, rmir=\ER, - smir=\EQ, - -#### Bolt, Beranek & Newman (bbn) -# -# The BitGraph was a product of the now-defunct BBN Computer Corporation. -# The parent company, best known as the architects of the Internet, is -# still around. -# -# Jeff DelPapa writes: -# The bitgraph was a large white box that contained a monochrome bitmap -# display, and a 68000 to run it. You could download code and run it on -# the cpu, it had 128kb (I think) of memory. I used one in the late -# 70's, sure beat a vt100. It had one strange feature tho -- it used -# the cpu to bitblt pixels to scroll, it took longer than the refresh -# rate, and looked like a rubber sheet stretching, then snapping -# upwards. It had everything the early mac had, except a floppy drive a -# small screen (it had a 17" crisp beauty) and a real OS. They (Bolt -# Beranek and Neuman) sold at most a few hundred of them to the real -# world. DOD may have bought more... -# - -# Entries for the BitGraph terminals. The problem -# with scrolling in vi can only be fixed by getting BBN to put -# smarter scroll logic in the terminal or changing vi or padding -# scrolls with about 500 ms delay. -# -# I always thought the problem was related to the terminal -# counting newlines in its input buffer before scrolling and -# then moving the screen that much. Then vi comes along and -# paints lines in on the bottom line of the screen, so you get -# this big white gap. - -bitgraph|bg2.0nv|bg3.10nv|bbn bitgraph 2.0 or later (normal video), - flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, - use=bg2.0, -bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video), - flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, - use=bg2.0, -bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init), - OTbs, xenl, - cols#85, lines#64, - bel=^G, clear=\E[H\E[J$<150>, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7, - sgr0=\E[m, smkx=\E=, smso=\E[7m, - -bg1.25rv|bbn bitgraph 1.25 (reverse video), - flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, - use=bg1.25, -bg1.25nv|bbn bitgraph 1.25 (normal video), - flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, - use=bg1.25, -# (bg1.25: I added / based on the init string -- esr) -bg1.25|bbn bitgraph 1.25, - cols#85, lines#64, - bel=^G, clear=\E[H\E[J$<150>, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, - dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I, - il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, 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, - -#### Bull (bq, dku, vip) -# -# (Adapted for terminfo; AIX extension capabilities translated -- esr) - -#============================================# -# BULL QUESTAR 210 `SDP' terminals emulation # -#============================================# -# -# Description written by R.K.Saunders (Bull Transac) -# -# Modifications written by F. Girard (Bull MTS) -# 19-05-87 V02.00.01 -# 17-12-87 V02.00.02 -# 15-09-89 V02.00.05 -# -# Typical technical selections F1 (modes SDP/ROLL): -# ------------------------------------------------------- -# | 01 02 03 04 05 06 07 08 09 10 | -# | 1010 0011 1010 0110 0110 0001 0100 0000 0000 0000 | -# | | -# | 11 12 13 14 15 16 17 18 19 20 | -# | 0000 0110 100? 0000 0000 0000 0001 0000 0000 0001 | -# | | -# | 21 22 23 24 25 26 27 28 29 30 | -# | 0011 0000 0001 1000 0000 0000 0000 0000 0000 0000 | -# | | -# | 31 32 33 34 35 36 37 38 39 40 | -# | 1010 0011 0000 0000 0000 0000 0000 0000 0000 0000 | -# ------------------------------------------------------- -# Typical firmware identification F5 "etat 6": -# P287.02.04b (AZERTY) -# P297.11.04 (24-pin: 2732) or P798.11.04 (28-pin: 2764) -# P298.03.03 (monochrome) or P374.03.02 (colour) -# -# SM SDP mode (VIP command): ^[[?=h -# RIS (erases screen): ^[c -# DMI disable keyboard: ^[` -# SM double rendition mode: ^[[?>h -# RM solicited status mode: ^[[5l -# RM character mode: ^[[>l -# RM echoplex mode: ^[[12l -# RM column tab mode: ^[[18l -# RM forbid SS2 keyboard mode: ^[[?h\EPY99\:98\E\\, - is2=\E[5;>;12;18;?h\EPY99\:98\E\\, - smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, - tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m, -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, - use=tws-generic, -tws2103|xdku|BULL Questar tws2103, - ht=^I, use=tws-generic, -tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA, - ht=^I, use=tws2102-sna, -dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6), - clear=\E[2J\E[H, cup@, dl@, dl1@, - dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m, - il@, il1@, tsl=\EPY99\:98\E\\\E[0;98v\E[H\E[2;7m, - use=tws-generic, -dku7202|BULL Questar 200 DKU7202 (colour/character attributes), - blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb, - smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic, - -#=========================================================# -# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation # -#=========================================================# -# -# Description written by J. Staerck (BULL SA) -# Copyright (c) 1989 BULL SA -#--------------------------------------------------------------------------- -# This entry is used for terminals with vt320 emulation mode -# and following set-up : -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 7 bit Control Characters, -# 80 columns screen. -# Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300) -# They are used in string capabilities with vt220-320 emulation mode. -# In the following DEC definitions, two kinds of terminfo databases are -# provided : -# 1. the first with Command Sequence Introducer starting with escape -# sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode. -# 2. the second with Command Sequence Introducer starting with escape -# sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B. -# Soft Terminal Reset esc [ ! p -# RIS (erases screen): esc c -# DECKPNM numeric keypad mode: esc > -# DECKPAM applic. keypad mode: esc = -# DECSTBM Scrolling region: esc [ r -# SCS select G0 = US: esc ( B -# SCS select G1 = line-graphic: esc ) 0 -# Select 7-bit C1 controls: esc sp F -# Select 8-bit C1 controls: esc sp G -# Select cursor home: esc [ H -# Select erase screen: esc [ J -# SM KAM lock keyboard: esc [ 2 h -# RM KAM unlock keyboard: esc [ 2 l -# SM SRM local echo off: esc [ 1 2 h -# RM SRM local echo on: esc [ 1 2 l -# SM LNM New line : esc [ 2 0 h -# RM LNM return = CR only: esc [ 2 0 l -# SM DECCKM cursor keys mode: esc [ ? 1 h -# RM DECCKM appli. keys mode: esc [ ? 1 l -# SM DECANM ANSI mode on: esc [ ? 2 h -# RM DECANM ANSI mode off: esc [ ? 2 l -# SM DECCOLM 132-column screen: esc [ ? 3 h -# RM DECCOLM 80-column screen: esc [ ? 3 l -# SM DECSCLM Smooth scroll: esc [ ? 4 h -# RM DECSCLM Jump scroll: esc [ ? 4 l -# SM DECSCNM screen light backgr. esc [ ? 5 h -# RM DECSCNM screen dark backgr. esc [ ? 5 l -# SM DECOM move within margins: esc [ ? 6 h -# RM DECOM move outside margins: esc [ ? 6 l -# SM DECAWM auto right margin: esc [ ? 7 h -# RM DECAWM auto right margin: esc [ ? 7 l -# SM DECARM auto repeat: esc [ ? 8 h -# RM DECARM auto repeat: esc [ ? 8 l -# DECSASD Select active main: esc [ 0 $ } -# DECSASD Select active status: esc [ 1 $ } -# DECSSDT Select status none: esc [ 0 $ ~ -# DECSSDT Select status indic.: esc [ 1 $ ~ -# DECSSDT Select status host-wr: esc [ 2 $ ~ -# SM DECTCEM Visible cursor: esc [ ? 2 5 h -# RM DECTCEM Invisible cursor: esc [ ? 2 5 l -# SM DECNCRM 7 bits NCR set: esc [ ? 4 2 h -# RM DECNCRM Multi or ISO latin: esc [ ? 4 2 l -# SM DECNKM numeric keypad mode: esc [ ? 6 6 h -# RM DECNKM numeric keypad appl.: esc [ ? 6 6 l -# SM DECKBUM clavier informatique esc [ ? 6 8 h -# RM DECKBUM clavier bureautique: esc [ ? 6 8 l -# DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 " p -# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 0 " p -# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 2 " p -# DECSCL vt300 mode 7-bit ctrl: esc [ 6 3 ; 1 " p -# Char. and Line attributes: esc [ Ps ... Ps m -# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse -# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off -# - -# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310 -bq300|Bull vt320 ISO Latin 1 80 columns terminal, - am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I, - hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, - is1=\E[63;1"p\E[2h, - is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy, - kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, kfnd=\E[1~, - khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - krdo=\E[29~, kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, 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, sc=\E7, - 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, tbc=\E[3g, tsl=\E[1$}\E[2$~, -bq300-rv|Bull vt320 reverse 80 columns, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - use=bq300, -bq300-w|Bull vt320 132 columns, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300, -bq300-w-rv|Bull vt320 reverse mode 132 columns, - cols#132, wsl#132, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300, - -# This entry is used for terminals with vt320 emulation mode -# and following set-up : -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 8 bit Control Characters, (CSI coded as x9B for ESC [) -# 80 columns screen. -# Soft Terminal Reset csi ! p -# RIS (erases screen): esc c -# DECKPNM numeric keypad mode: esc > -# DECKPAM applic. keypad mode: esc = -# DECSTBM Scrolling region: esc [ r -# SCS select G0 = US: esc ( B -# SCS select G1 = line-graphic: esc ) 0 -# Select 7-bit C1 controls: esc sp F -# Select 8-bit C1 controls: esc sp G -# Select cursor home: csi H -# Select erase screen: csi J -# SM KAM lock keyboard: csi 2 h -# RM KAM unlock keyboard: csi 2 l -# SM SRM local echo off: csi 1 2 h -# RM SRM local echo on: csi 1 2 l -# SM LNM New line : csi 2 0 h -# RM LNM return = CR only: csi 2 0 l -# SM DECCKM cursor keys mode: csi ? 1 h -# RM DECCKM appli. keys mode: csi ? 1 l -# SM DECANM ANSI mode on: csi ? 2 h -# RM DECANM ANSI mode off: csi ? 2 l -# SM DECCOLM 132-column screen: csi ? 3 h -# RM DECCOLM 80-column screen: csi ? 3 l -# SM DECSCLM Smooth scroll: csi ? 4 h -# RM DECSCLM Jump scroll: csi ? 4 l -# SM DECSCNM screen light backgr. csi ? 5 h -# RM DECSCNM screen dark backgr. csi ? 5 l -# SM DECOM move within margins: csi ? 6 h -# RM DECOM move outside margins: csi ? 6 l -# SM DECAWM auto right margin: csi ? 7 h -# RM DECAWM auto right margin: csi ? 7 l -# SM DECARM auto repeat: csi ? 8 h -# RM DECARM auto repeat: csi ? 8 l -# DECSASD Select active main: csi 0 $ } -# DECSASD Select active status: csi 1 $ } -# DECSSDT Select status none: csi 0 $ ~ -# DECSSDT Select status indic.: csi 1 $ ~ -# DECSSDT Select status host-wr: csi 2 $ ~ -# SM DECTCEM Visible cursor: csi ? 2 5 h -# RM DECTCEM Invisible cursor: csi ? 2 5 l -# SM DECNCRM 7 bits NCR set: csi ? 4 2 h -# RM DECNCRM Multi or ISO latin: csi ? 4 2 l -# DECSCL vt300 mode 8-bit ctrl: csi 6 3 " p -# or DECSCL vt300 mode 8-bit ctrl: csi 6 3 ; 0 " p -# DECSCL vt300 mode 7-bit ctrl: csi 6 3 ; 1 " p -# Char. and Line attributes: csi Ps ... Ps m -# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse -# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off -# (bq300-8: ,,,,, to get under 1024 --esr) -bq300-8|Bull vt320 full 8 bits 80 columns, - am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\2335m, bold=\2331m, civis=\233?25l, - clear=\233H\233J, cnorm=\233?25h, cr=^M, - csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=\2331D, - cud=\233%p1%dB, cud1=\2331B, cuf=\233%p1%dC, cuf1=\2331C, - cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\2331A, - dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, - dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J, - el=\233K, el1=\2331K, enacs=\E(B\E)0, - flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H, - ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, ind=\ED, - is1=\E[63;2"p\E[2h, - is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w, - ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s, - kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, - kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~, - kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, - kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, - kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~, - kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~, - khlp=\23328~, 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=^O, rmam=\233?7l, rmcup=\233?7h, - rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, - rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7, - sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;, - sgr0=\2330m\E(B, smacs=^N, smam=\233?7h, - smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m, - smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~, -bq300-8rv|Bull vt320 8-bit reverse mode 80 columns, - flash=\233?5l$<50>\233?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - use=bq300-8, -bq300-8w|Bull vt320 8-bit 132 columns, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\233?3h, use=bq300-8, -bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns, - cols#132, wsl#132, - flash=\233?5l$<50>\233?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\233?3h, use=bq300-8, - -# This entry is used for terminals with vt320 emulation mode -# a 102 keys keyboard (PC scancode !) and following set-up : -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 7 bit Control Characters, -# 80 columns screen. -bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns, - kbs=^H, kdch1=\E[3~, kend=\E[4~, kf1=\E[17~, kf10=\E[28~, - kf11=\E[29~, kf12=\E[31~, kf13@, kf14@, kf15@, kf16@, kf17@, - kf18@, kf19@, kf2=\E[18~, kf20@, kf3=\E[19~, kf4=\E[20~, - kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, - kfnd@, khlp@, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - krdo@, kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300, -bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - use=bq300-pc, -bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-pc, -bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns, - cols#132, wsl#132, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-pc, -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 8 bit Control Characters, -# 80 columns screen. -bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns, - kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~, - kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@, - kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@, - kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, - kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@, - khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@, - kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8, -bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - use=bq300-8-pc, -bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-8-pc, -bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns, - cols#132, wsl#132, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-8-pc, - -#======================================================# -# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation # -#======================================================# - -# normal mode, 8 bits, 80 columns terminal. -# RES reset : ^[e -# RIS reset initial state: ^[c -# BLE bell enable ^[h -# BLD bell disable ^[g -# CAMS char. attr. mode set ^[[D -# CAMR char. attr. mode reset ^[[G -# CLR clear ^[` -# KBU keyboard unlock (set) ^[[W -# KBL keyboard lock (reset) ^[[X -# CM character mode (async.) ^[k -# NEP non echoplex mode (by host) ^[l -# EP echoplex mode (by host) ^[m -# IM insert mode set ^[[I -# IM insert mode reset ^[[J -# RMS roll mode set ^[r -# RMR roll mode reset ^[q -# SM78 set mode vip7800 ^[[1q -# SD scroll up (72 lines) ^[[0s -# SD scroll down (72 lines) ^[[1s -# RBM block mode reset ^[[E -# SLS status line set ^[w -# SLR status line reset ^[v -# SLL status line lock ^[O -# LGS Line-graphic mode set ^[G -# LGR Line-graphic mode reset ^[F -# TBC tab clear (at cursor pos.) ^[[g -# TBI tab initialize ^[[N -# TBS tab set (at cursor pos.) ^[p -# PDS print data space ^[[0p -# PHD print host data ^[[3p -# PDT print data terminator ^[[

u -# SSP0 partition 0 set ^[[00u -# SSP1 partition n format 1 ^[[PnPnSTRINGu -# SSP2 partition n format 2 ^[[PnPnSTRINGu -# SSP3 partition n format 3 ^[[PnPnu -# ATR attribute (visual) -# blink : ^[sB -# dim : ^[sL -# hide (blank) : ^[sH -# restore : ^[sR -# inverse video : ^[sI -# prot. : ^[sP -# underline : ^[s_ -# reset : ^{ -# -# This covers the vip7800 and BQ3155-vip7800 -vip|Bull Questar 3155-7800, - am, eslok, hs, km, mc5i, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#80, - acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB, - cbt=\E[Z, clear=\E`, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL, - dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK, - flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I, - hts=\Ep, ich1=\E[I, ind=^J, invis=\EsH, - is2=\E[00u\E[<>001001024080024080u\E[01u, - is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H, - kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ, - kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@, - kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1, - kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?, - kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_, - kf4=\E8, kf5=\E\:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER, - khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s, - kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1, - lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[, rmacs=\EF, rmir=\E[J, rmso=\EsR, - rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG, - sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI, - smul=\Es_, tbc=\E[N, tsl=\Ew, -# normal screen, 8 bits, 132 columns terminal. -vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide, - cols#132, wsl#132, - is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip, -vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines, - lines#72, - is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip, -vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines, - cols#132, lines#72, wsl#132, - is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip, - -#### Chromatics -# - -# I have put the long strings in /. Ti sets up a window -# that is smaller than the screen, and puts up a warning message -# outside the window. Te erases the warning message, puts the -# window back to be the whole screen, and puts the cursor at just -# below the small window. I defined and to really turn -# the cursor on and off, but I have taken this out since I don't -# like the cursor being turned off when vi exits. -cg7900|chromatics|chromatics 7900, - am, - cols#80, lines#40, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^], - cup=\001M%p2%d\,%p1%d\,, cuu1=^K, dch1=^A<1, dl1=^A<2, - ed=^Al, el=^A`, home=^\, ich1=^A>1, il1=^A>2, ind=^J, ll=^A|, - rmcup=\001W0\,40\,85\,48\,\014\001W0\,0\,85\,48\,\001M0\,40\,, - rmso=\001C1\,\001c2\,, - smcup=\001P0\001O1\001R1\001C4\,\001c0\,\014\001M0\,42\,WARNING DOUBLE ENTER ESCAPE and \025\001C1\,\001c2\,\001W0\,0\,79\,39\,, - smso=\001C4\,\001c7\,, uc=\001\001_\001\0, - -#### Computer Automation -# - -ca22851|computer automation 22851, - am, - cols#80, lines#24, - bel=^G, clear=\014$<8>, cr=^M, cub1=^U, cud1=^J, cuf1=^I, - cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=^J, - kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^, - -#### Cybernex -# - -# This entry has correct padding and the undocumented "ri" capability -cyb83|xl83|cybernex xl-83, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\014$<62>, cr=^M, cub1=^H, cud1=^J, cuf1=^I, - cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N, - ed=\020$<62>, el=\017$<3>, home=^K, ind=^J, kcub1=^H, - kcud1=^J, kcuf1=^I, kcuu1=^N, ri=^N, -# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr) -cyb110|mdl110|cybernex mdl-110, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\030$<70>, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, - dch1=\016A\036$<3.5>, dl1=\016A\016\036$<40>, - ed=\016@\026$<6>, el=\016@\026$<145>, home=^Y, - ht=\011$<43>, ich1=\016A\035$<3.5>, - il1=\016A\016\035$<65>, ind=^J, rmso=^NG, smso=^NF, - -#### Datapoint -# -# Datapoint is gone. They used to be headquartered in Texas. -# They created ARCnet, an Ethernet competitor that flourished for a while -# in the early 1980s before 3COM got wise and cut its prices. The service -# side of Datapoint still lives (1995) in the form of Intelogic Trace. -# - -dp3360|datapoint|datapoint 3360, - OTbs, am, - cols#82, lines#25, - bel=^G, clear=^]^_, cr=^M, cub1=^H, cud1=^J, cuf1=^X, cuu1=^Z, - ed=^_, el=^^, home=^], ind=^J, - -# From: Jan Willem Stumpel , 11 May 1997 -# The Datapoint 8242 Workstation was sold at least between 1985 -# and 1989. To make the terminal work with this entry, press -# CONTROL-INT-INT to take the terminal off-line, and type (opt). -# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO -# CR/LF off. Use control-shift-[] as escape key, control-I as tab, -# shift-F1 to shift-F5 as F6 to F10 (unshifted F1 to F5 are in -# fact unusable because the strings sent by the terminal conflict -# with other keys). -# The terminal is capable of displaying "box draw" characters. -# For each graphic character you must send 2 ESC's (\E\E) followed -# by a control character as follows: -# character meaning -# ========= ======= -# ctrl-E top tee -# ctrl-F right tee -# ctrl-G bottom tee -# ctrl-H left tee -# ctrl-I cross -# ctrl-J top left corner -# ctrl-K top right corner -# ctrl-L bottom left corner -# ctrl-M bottom right corner -# ctrl-N horizontal line -# ctrl-O vertical line -# Unfortunately this cannot be fitted into the termcap/terminfo -# description scheme. -dp8242|datapoint 8242, - msgr, - cols#80, lines#25, - bel=^G, civis=^Y, clear=\025\E\004\027\030, cnorm=^X, - cr=^M, cub1=^H, cud1=^J, - cup=\011%p2%'\0'%+%c%p1%'\0'%+%c, dl1=\E^Z, ed=^W, el=^V, - home=^U, ht=^I, il1=\E^T, ind=^C, - is1=\E\014\E\016\0\230\0\317\025\027\030\E\004, - kbs=^H, kcub1=^D, kcud1=^B, kcuf1=^F, kcuu1=^E, kf1=^G\Ee, - kf10=\EK\Ea, kf2=^I\Ed, kf3=^J\Ec, kf4=^J\Eb, kf5=^S\Ea, - kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=^M^J, - rep=\E\023%p1%c%p2%c, ri=^K, rmso=\E^D, rmul=\E^D, - rs1=\E\014\E\016\0\230\0\317\025\027\030\E\004, - smso=\E^E, smul=\E^F, - wind=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%'\0'%+%c\025, - -#### DEC terminals (Obsolete types: DECwriter and vt40/42/50) -# -# These entries are DEC's official terminfos for its older terminals. -# Contact Bill Hedberg of Terminal Support -# Engineering for more information. Updated terminfos and termcaps -# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps. -# - -gt40|dec gt40, - OTbs, os, - cols#72, lines#30, - bel=^G, cr=^M, cub1=^H, cud1=^J, -gt42|dec gt42, - OTbs, os, - cols#72, lines#40, - bel=^G, cr=^M, cub1=^H, cud1=^J, -vt50|dec vt50, - OTbs, - cols#80, lines#12, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=^J, -vt50h|dec vt50h, - OTbs, - cols#80, lines#12, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, ht=^I, ind=^J, ri=\EI, -# (vt61: there's a BSD termcap that claims , ) -vt61|vt-61|vt61.5|dec vt61, - cols#80, lines#24, - bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=^J, - cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, - cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I, - ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - ri=\E$<20>I, - -# The gigi does standout with red! -# (gigi: I added / based on the init string, corrected cub1 -- esr) -gigi|vk100|dec gigi graphics terminal, - OTbs, am, xenl, - cols#84, lines#24, - bel=^G, clear=\E[H\E[2J, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J, - el=\E[K, ht=^I, ind=^J, - 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, - -# 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, -# grossly-overpriced failure (among other things, DEC's OS didn't include -# a format program, so you had to buy pre-formatted floppies from DEC at -# a hefty premium!). -pro350|decpro|dec pro console, - OTbs, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI, - kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG, - rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D, - -dw1|decwriter I, - OTbs, hc, os, - cols#72, - bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, -dw2|decwriter|dw|decwriter II, - OTbs, hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H, -# \E(B Use U.S. character set (otherwise # => british pound !) -# \E[20l Disable "linefeed newline" mode (else puts \r after \n,\f,\v) -# \E[w 10 char/in pitch -# \E[1;132 full width horizontal margins -# \E[2g clear all tab stops -# \E[z 6 lines/in -# \E[66t 66 lines/page (for \f) -# \E[1;66r full vertical page can be printed -# \E[4g clear vertical tab stops -# \E> disable alternate keypad mode (so it transmits numbers!) -# \E[%i%p1%du set tab stop at column %d (origin == 1) -# (Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is -# a tab stop) -# -# The dw3 does standout with wide characters. -# -dw3|la120|decwriter III, - OTbs, hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, - is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>, - is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r, - kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w, -dw4|decwriter IV, - OTbs, am, hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, is2=\Ec, kbs=^H, - kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, - -# These aren't official -ln03|dec ln03 laser printer, - hc, - cols#80, lines#66, - bel=^G, cr=^M, cud1=^J, hd=\EK, ht=^I, hu=\EL, ind=^J, nel=^M^J, - rmso=\E[22m, rmul=\E[24m, sgr0=\E[m, smso=\E[1m, - smul=\E[4m, -ln03-w|dec ln03 laser printer 132 cols, - cols#132, - bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, use=ln03, - -#### Delta Data (dd) -# - -# Untested. The cup sequence is hairy enough that it probably needs work. -# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'. -# There are BSD-derived termcap entries floating around for this puppy -# that are *certainly* wrong. -delta|dd5000|delta data 5000, - OTbs, am, - cols#80, lines#27, - bel=^G, clear=^NR, cub1=^H, cud1=^J, cuf1=^Y, - cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%-%{57}%+%c, - cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=^J, - -#### Digital Data Research (ddr) -# - -# (ddr: I added / based on the init string -- esr) -ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator, - OTbs, am, xenl, - cols#80, it#8, lines#24, vt#3, - blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H, - cud1=^J, 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, 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, rc=\E8, 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/>, - rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m$<2/>, - -#### Evans & Sutherland -# - -# Jon Leech tells us: -# The ps300 was the Evans & Sutherland Picture System 300, a high -# performance 3D vector graphics system with a bunch of specialized hardware. -# Approximate date of release was 1982 (early 80s, anyway), and it had several -# evolutions including (limited) color versions such as the PS330C. PS300s -# were effectively obsolete by the late 80s, replaced by raster graphics -# systems, although specialized applications like molecular modelling -# hung onto them for a while longer. AFAIK all E&S vector graphics systems -# are out of production, though of course E&S is very much alive (in 1996). -# (ps300: changed ":pt@:" to "it@" -- esr) -# -ps300|Picture System 300, - xt, - it@, - rmso@, rmul@, smso@, smul@, use=vt100, - -#### General Electric (ge) -# - -terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200, - OTbs, hc, os, - cols#120, - bel=^G, cr=^M, cud1=^J, ind=^J, - -#### Heathkit/Zenith -# - -# Here is a description of the H19 DIP switches: -# -# S401 -# 0-3 = baud rate as follows: -# -# 3 2 1 0 -# --- --- --- --- -# 0 0 1 1 300 baud -# 0 1 0 1 1200 baud -# 1 0 0 0 2400 baud -# 1 0 1 0 4800 baud -# 1 1 0 0 9600 baud -# 1 1 0 1 19.2K baud -# -# 4 = parity (0 = no parity) -# 5 = even parity (0 = odd parity) -# 6 = stick parity (0 = normal parity) -# 7 = full duplex (0 = half duplex) -# -# S402 -# 0 = block cursor (0 = underscore cursor) -# 1 = no key click (0 = keyclick) -# 2 = wrap at end of line (0 = no wrap) -# 3 = auto LF on CR (0 = no LF on CR) -# 4 = auto CR on LF (0 = no CR on LF) -# 5 = ANSI mode (0 = VT52 mode) -# 6 = keypad shifted (0 = keypad unshifted) -# 7 = 50Hz refresh (1 = 60Hz refresh) -# -# Factory Default settings are as follows: -# 7 6 5 4 3 2 1 0 -# S401 1 0 0 0 1 1 0 0 -# S402 0 0 0 0 0 0 0 0 -# (h19: I added / based on the init string; -# also added empty to suppress a tic warning -- esr) -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=^M, 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=^J, - 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, -h19-bs|heathkit w/keypad shifted, - rmkx=\Eu, smkx=\Et, use=h19-b, -h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor, - rmkx=\Eu, smkx=\Et, use=h19-u, -# (h19: merged in from BSDI hp19-e entry>; -# also added empty to suppress a tic warning --esr) -# From: Tim Pierce , 23 Feb 1998 -# Tim tells us that: -# I have an old Zenith-19 terminal at home that still gets a lot of use. -# This terminal suffers from the same famous insert-mode padding lossage -# that has been acknowledged for the Z29 terminal. Emacs is nearly -# unusable on this box, since even a half-scroll up or down the window -# causes flaming terminal death. -# -# On the Z19, the only way I have found around this problem is to remove -# the :al: and :dl: entries entirely. No amount of extra padding will -# help (I have tried up to 20000). Removing and -# makes Emacs a little slower, but it remains in the land of the living. -# Big win. -h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19, - OTbs, am, eslok, hs, mir, msgr, - cols#80, it#8, lines#24, - acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, bel=^G, - clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ex4, - dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=^J, - ip=<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, - kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red, - lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF, - smir=\E@, smso=\Ep, tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo, -h19-u|heathkit with underscore cursor, - cnorm@, cvvis@, use=h19-b, -h19-g|h19g|heathkit w/block cursor, - cnorm=\Ex4, cvvis@, use=h19-b, -alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19, - lines#60, - dl1=\EM, il1=\EL, use=h19, - -# The major problem with the Z29 is that it requires more padding than the Z19. -# -# The problem with declaring an H19 to be synonymous with a Z29 is that -# it needs more padding. It especially loses if a program attempts -# to put the Z29 into insert mode and insert text at 9600 baud. It -# even loses worse if the program attempts to insert tabs at 9600 -# baud. Adding padding to text that is inserted loses because in -# order to make the Z29 not die, one must add so much padding that -# whenever the program tries to use insert mode, the effective -# rate is about 110 baud. -# -# What program would want to put the terminal into insert mode -# and shove stuff at it at 9600 baud you ask? -# -# Emacs. Emacs seems to want to do the mathematically optimal -# thing in doing a redisplay rather than the practical thing. -# When it is about to output a line on top of a line that is -# already on the screen, instead of just killing to the end of -# the line and outputting the new line, it compares the old line -# and the new line and if there are any similarities, it -# constructs the new line by deleting the text on the old line -# on the terminal that is already there and then inserting new -# text into the line to transform it into the new line that is -# to be displayed. The Z29 does not react kindly to this. -# -# But don't cry for too long.... There is a solution. You can make -# a termcap entry for the Z29 that says the Z29 has no insert mode. -# Then Emacs cannot use it. "Oh, no, but now inserting into a -# line will be really slow", you say. Well there is a sort of a -# solution to that too. There is an insert character option on -# the Z29 that will insert one character. Unfortunately, it -# involves putting the terminal into ansi mode, inserting the -# character, and changing it back to H19 mode. All this takes 12 -# characters. Pretty expensive to insert one character, but it -# works. Either Emacs doesn't try to use its inserting hack when -# it's only given an insert character ability or the Z29 doesn't -# require padding with this (the former is probably more likely, -# but I haven't checked it out). -# (z29: added empty to suppress a tic warning, merged in -# status line capabilities from BRL entry --esr) -z29|zenith29|z29b|zenith z29b, - OTbs, OTpt, am, eslok, hs, mir, msgr, - OTkn#10, cols#80, lines#24, - OTbc=\ED, acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4, - cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E$<1>A, - cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1, - ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I, - ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>, - is2=\E<\E[?2h\Ev, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, - kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, - lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq, - rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8, - tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, -# z29 in ansi mode. Assumes that the cursor is in the correct state, and that -# the world is stable. causes the terminal to be reset to the state -# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore -# cursor, bc -> block cursor. -# From: Mike Meyers -# (z29a: replaced nonexistent befause -# looks vt100-compatible -- esr) -z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode, - OTbs, OTpt, am, eslok, hs, mir, msgr, - OTkn#10, cols#80, it#8, lines#24, - OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM, - 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, il=\E[%p1%dL, - ind=\ED, kbs=^H, kclr=\E[J, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, 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=^M\ED, rc=\E[r, rev=\E[7m, ri=\EM, rmcup=\E[?7h, - rmso=\E[m, rmul=\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, -z29a-kc-uc|h29a-kc-uc|z29 ansi mode with keyckick 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[11m, - use=z29a, -z29a-nkc-bc|h29a-nkc-bc|z29 ansi mode with block cursor and no keyclick, - rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m, - use=z29a, -z29a-nkc-uc|h29a-nkc-uc|z29 ansi mode with underscore cursor and no keyclick, - rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m, - use=z29a, -# From: Jeff Bartig 31 Mar 1995 -z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode, - am, eslok, hs, mc5i, mir, msgr, xon, - cols#80, lines#24, - 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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - 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, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[1L, - ind=^J, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw, - ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS, - kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, - kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H, - mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, 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, tbc=\E[3g, - tsl=\E[s\E[>1h\E[25;%i%p1%dH, - -# From: Brad Brahms -z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor, - cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw, -# (z100bw: removed obsolete ":kn#10:", added empty -- esr) -z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc, - OTbs, OTpt, mir, msgr, - OTkn#10, cols#80, it#8, lines#24, - acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, - clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, cuu1=\EA, - cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, ed=\EJ, el=\EK, - home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES, kf2=\ET, kf3=\EU, - kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EOI, - khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF, - smir=\E@, smso=\Ep, -p19|h19-b with il1/dl1, - dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b, -# From: -# (ztx: removed duplicate :sr: -- esr) -ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11, - OTbs, am, eslok, hs, - cols#80, it#8, lines#24, - clear=\EE, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, - dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, - il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES, - kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER, - ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2, - tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, - -#### IMS International (ims) -# -# There was a company called IMS International located in Carson City, -# Nevada, that flourished from the mid-70s to mid-80s. They made S-100 -# bus/Z80 hardware and a line of terminals called Ultimas. -# - -# From: Erik Fair Sun Oct 27 07:21:05 1985 -ims950-b|bare ims950 no init string, - is2@, use=ims950, -# (ims950: removed obsolete ":ko@:" -- esr) -ims950|ims televideo 950 emulation, - xenl@, - flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, - kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950, -# (ims950-rv: removed obsolete ":ko@:" -- esr) -ims950-rv|ims tvi950 rev video, - xenl@, - flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, - kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv, -ims-ansi|ultima2|ultimaII|IMS Ultima II, - OTbs, am, - cols#80, it#8, lines#24, - clear=\E[H\E[2J, cub1=^H, cud1=\ED, cuf1=\EC, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K, - ht=^I, if=/usr/share/tabset/vt100, - is2=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, ri=\EM, - rmso=\E[m\E[1m, rmul=\E[m\E[1m, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, - -#### Intertec Data Systems -# -# I think this company is long dead as of 1995. They made an early CP/M -# micro called the "Intertec Superbrain" that was moderately popular, -# then sank out of sight. -# - -superbrain|intertec superbrain, - OTbs, am, bw, - cols#80, lines#24, - OTbc=^U, bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J, - cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K, - ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=^J, kcub1=^U, - kcud1=^J, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L, -# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>, -# rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM, -# and the reverse is actually true. Try it. -- esr) -intertube|intertec|Intertec InterTube, - OTbs, am, - cols#80, lines#25, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A, - ind=^J, rmso=\E0@, smso=\E0P, -# The intertube 2 has the "full duplex" problem like the tek 4025: if you -# are typing and a command comes in, the keystrokes you type get interspersed -# with the command and it messes up -intertube2|intertec data systems intertube 2, - OTbs, - cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, - el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, - ll=^K^X\r, vpa=\013%p1%c, use=intertube, - -#### Ithaca Intersystems -# -# This company made S100-bus personal computers long ago in the pre-IBM-PC -# past. They used to be reachable at: -# -# Ithaca Intersystems -# 1650 Hanshaw Road -# Ithaca, New York 14850 -# -# However, the outfit went bankrupt years ago. -# - -# The Graphos III was a color graphics terminal from Ithaca Intersystems. -# These entries were written (originally in termcap syntax) by Brian Yandell -# and Mike Meyer at the -# University of Wisconsin. - -# (graphos: removed obsolete and syntactically incorrect :kn=4:, -# removed and -# no such file & no -- esr) -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=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, - il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, rmdc=\E[4l, - rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h, - smir=\E[4h, smso=\E[7m, -graphos-30|graphos III with 30 lines, - lines#30, - cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos, - -#### Modgraph -# -# These people used to be reachable at: -# -# Modgraph, Inc -# 1393 Main Street, -# Waltham, MA 02154 -# Vox: (617)-890-5796. -# -# However, if you call that number today you'll get an insurance company. -# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated -# 26 Feb 1997 that says: -# -# Modgraph GX-1000, replaced by GX-2000. Both are out of production, have been -# for ~7 years. Modgraph still in business. Products are rugged laptop and -# portable PC's and specialized CRT and LCD monitors (rugged, rack-mount -# panel-mount etc). I can be emailed at sonfour@aol.com -# -# Peter D. Smith notes that his modgraph manual was -# dated 1984. According to the manual, it featured Tek 4010/4014 -# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard. -# - -modgraph|mod24|modgraph terminal emulating vt100, - xenl@, - cols#80, lines#24, - cvvis=\E\^9;0s\E\^7;1s, - is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s, - rf@, ri=\EM\E[K$<5/>, use=vt100, -# The GX-1000 manual is dated 1984. This looks rather like a VT-52. -modgraph2|modgraph gx-1000 80x24 with keypad not enabled, - am, da, db, - cols#80, it#8, lines#24, - clear=\EH\EJ$<50/>, cub1=^H, cud1=\EB$<2/>, - cuf1=\EC$<2/>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5/>, - cuu1=\EA$<2/>, ed=\EJ$<50/>, el=\EK$<3/>, ht=^I, - is2=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;1s\E\^9;1s\E\^27;1, - ri=\EI$<5/>, -# -# Modgraph from Nancy L. Cider -# BUG NOTE from Barbara E. Ringers : -# If we set TERM=vt100, and set the Modgraph screen to 24 lines, setting a -# mark and using delete-to-killbuffer work correctly. However, we would -# like normal mode of operation to be using a Modgraph with 48 line setting. -# If we set TERM=mod (which is a valid entry in termcap with 48 lines) -# the setting mark and delete-to-killbuffer results in the deletion of only -# the line the mark is set on. -# We've discovered that the delete-to-killbuffer works correctly -# with TERM=mod and screen set to 80x48 but it's not obvious. Only -# the first line disappears but a ctrl-l shows that it did work -# correctly. -modgraph48|mod|Modgraph w/48 lines, - OTbs, OTpt, am, xenl, - cols#80, it#8, lines#48, vt#3, - OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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, rc=\E8, rev=\E[7m, - ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, - smso=\E[7m, smul=\E[4m, - -#### Morrow Designs -# -# This was George Morrow's company. They started in the late 1970s making -# S100-bus machines. They used to be reachable at: -# -# Morrow -# 600 McCormick St. -# San Leandro, CA 94577 -# -# but they're long gone now (1995). -# - -# The mt70 terminal was shipped with the Morrow MD-3 microcomputer. -# Jeff's specimen was dated June 1984. -# From: Jeff Wieland 24 Feb 1995 -mt70|mt-70|Morrow MD-70; native Morrow mode, - am, mir, msgr, xon, - cols#80, it#8, lines#24, - acsc=+z\,{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI, bel=^G, - cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1>, - cuu1=^K, dch1=\EW, dim=\EG2, dl1=\ER, ed=\EY, el=\ET$<10>, - flash=\EK1$<200>\EK0, home=^^, ht=^I, ich1=\EQ, il1=\EE, - ind=^J, invis@, is1=\E"2\EG0\E], kbs=^H, kcbt=^A^Z\r, - kclr=^An\r, kcub1=^AL\r, kcud1=^AK\r, kcuf1=^AM\r, - kcuu1=^AJ\r, kdch1=\177, kf1=^A@\r, kf10=^AI\r, kf11=^A`\r, - kf12=^Aa\r, kf13=^Ab\r, kf14=^Ac\r, kf15=^Ad\r, kf16=^Ae\r, - kf17=^Af\r, kf18=^Ag\r, kf19=^Ah\r, kf2=^AA\r, kf20=^Ai\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_, - rmacs=\E%%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E], - smul=\EG1, tbc=\E0, use=adm+sgr, - -#### Motorola -# - -# Motorola EXORterm 155 from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL -# (Seth H Zirin) -ex155|Motorola Exorterm 155, - OTbs, am, bw, - OTkn#5, OTug#1, cols#80, lines#24, - cbt=\E[, clear=\EX, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\ET, - el=\EU, home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@, - rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED, - -#### Omron -# -# This company is still around in 1995, manufacturing point-of-sale systems. - -omron|Omron 8025AG, - OTbs, am, da, db, - cols#80, lines#24, - bel=^G, clear=\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, cuu1=\EA, - cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH, - il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef, - -#### Ramtek -# -# Ramtek was a vendor of high-end graphics terminals around 1979-1983; they -# were competition for things like the Tektronics 4025. -# - -# Ramtek 6221 from BRL, probably by Doug Gwyn -# The following SET-UP modes are assumed for normal operation: -# UNDERLINE_CURSOR ANSI_MODE AUTO_XON/XOFF_ON -# NEWLINE_OFF 80_COLUMNS -# Other SET-UP modes may be set for operator convenience or communication -# requirements; I recommend -# SMOOTH_SCROLL AUTO_REPEAT_ON 3_#_SHIFTED WRAP_AROUND_ON -# Hardware tabs are assumed to be every 8 columns; they can be set up by the -# "reset", "tset", or "tabs" utilities (use rt6221-w, 160 columns, for this). -# Note that the Control-E key is useless on this brain-damaged terminal. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -rt6221|Ramtek 6221 80x24, - OTbs, OTpt, msgr, xon, - OTkn#4, cols#80, it#8, lines#24, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l, - clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, - cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I, - hts=\EH, ind=^J, 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, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>, - rmso=\E[m, rmul=\E[m, - 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>, - sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, -# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)]. -rt6221-w|Ramtek 6221 160x48, - cols#160, lines#48, - ll=\E[48;1H, use=rt6221, - -#### RCA -# - -# RCA VP3301 or VP3501 -rca|rca vp3301/vp3501, - OTbs, - cols#40, lines#24, - clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1, - - -#### Selanar -# - -# Selanar HiREZ-100 from BRL, probably by Doug Gwyn -# The following SET-UP modes are assumed for normal operation: -# SET_DEFAULT_TABS 48_LINES 80_COLUMNS -# ONLINE ANSI CURSOR_VISIBLE -# VT102_AUTO_WRAP_ON VT102_NEWLINE_OFF VT102_MONITOR_MODE_OFF -# LOCAL_ECHO_OFF US_CHAR_SET WPS_TERMINAL_DISABLED -# CPU_AUTO_XON/XOFF_ENABLED PRINT_FULL_SCREEN -# For use with graphics software, all graphics modes should be set to factory -# default. Other SET-UP modes may be set for operator convenience or -# communication requirements. No delays are specified; use "stty ixon -ixany" -# to enable DC3/DC1 flow control! -# I commented out the scrolling capabilities since they are too slow. -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, clear=\E[H\E[J, - cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - hts=\EH, il=\E[%p1%dL, il1=\E[L, 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, mc4=\E[4i\E[?4i, - mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;19l\E[r\E[m\E(B\017\E)0\E>, - sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, -hirez100-w|Selanar HiREZ-100 in 132-column mode, - cols#132, use=hirez100, - -#### Signetics -# - -# From University of Wisconsin -vsc|Signetics Vsc Video driver by RMC, - am, msgr, - cols#80, it#8, lines#26, - clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rev=^_\s, - rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_", - -#### Soroc -# -# Alan Frisbie writes: -# -# As you may recall, the Soroc logo consisted of their name, -# with the letter "S" superimposed over an odd design. This -# consisted of a circle with a slightly smaller 15 degree (approx.) -# wedge with rounded corners inside it. The color was sort of -# a metallic gold/yellow. -# -# If I had been more of a beer drinker it might have been obvious -# to me, but it took a clue from their service department to make -# me exclaim, "Of course!" The circular object was the top of -# a beer can (the old removable pop-top style) and "Soroc" was an -# anagram for "Coors". -# -# I can just imagine the founders of the company sitting around -# one evening, tossing back a few and trying to decide what to -# call their new company and what to use for a logo. -# - -# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr) -soroc120|iq120|soroc|soroc iq120, - clear=\E*$<2>, cud1=^J, ed=\EY, el=\ET, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, use=adm3a, -soroc140|iq140|soroc iq140, - OTbs, am, mir, - cols#80, lines#24, - bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\Ew, - dl1=\Er$<.7*>, ed=\Ey, el=\Et, home=^^, il1=\Ee$<1*>, ind=^J, - kbs=^H, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A@\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^^, ll=^^^K, rmir=\E8, - rmso=\E\177, rmul=\E^A, smir=\E9, smso=\E\177, smul=\E^A, - -#### Southwest Technical Products -# -# These guys made an early personal micro called the M6800. -# The ct82 was probably its console terminal. -# - -# (swtp: removed obsolete ":bc=^D:" -- esr) -swtp|ct82|southwest technical products ct82, - am, - cols#82, lines#20, - bel=^G, clear=^L, cr=^M, cub1=^D, cud1=^J, cuf1=^S, - cup=\013%p2%c%p1%c, cuu1=^A, dch1=^\^H, dl1=^Z, ed=^V, el=^F, - home=^P, ich1=^\^X, il1=^\^Y, ind=^N, - is2=\034\022\036\023\036\004\035\027\011\023\036\035\036\017\035\027\022\011, - ll=^C, ri=^O, rmso=^^^F, smso=^^^V, - -#### Synertek -# -# Bob Manson writes (28 Apr 1995): -# -# Synertek used to make ICs, various 6502-based single-board process -# control and hobbyist computers, and assorted peripherals including a -# series of small inexpensive terminals (I think they were one of the -# first to have a "terminal-on-a-keyboard", where the terminal itself -# was only slightly larger than the keyboard). -# -# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40 -# was a 40x24 terminal that could connect to a standard TV through a -# video modulator. The KTM-2/80 was the 80-column version (the 2/40 -# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM). -# I have a KTM-2/80 still in working order. The KTM-2s had fully -# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program -# ROM and 2 ROMs as character generators. They were incredibly simple, -# and I've never had any problems with mine (witness the fact that mine -# was made in 1981 and is still working great... I've blown the video -# output transistor a couple of times, but it's a 2N2222 :-) -# -# The KTM-3 (which is what is listed in the terminfo file) was their -# attempt at putting a KTM-2 in a box (and some models came with a -# CRT). It wasn't much different from the KTM-2 hardware-wise, but the -# control and escape sequences are very different. The KTM-3 was always -# real broken, at least according to the folks I've talked to about it. -# -# The padding in the entry is probably off--these terminals were very -# slow (it takes like 100ms for the KTM-2 to clear the screen...) And -# anyone with any sanity replaced the ROMs with something that provided -# a reasonable subset of VT100 functionality, since the usual ROMs were -# obviously very primitive... oh, you could get an upgraded ROM from -# Synertek for some incredible amount of money, but what hacker with an -# EPROM burner would do that? :) -# -# Sorry I don't have any contact info; I believe they were located in -# Sunnyvale, and I'm fairly sure they are still manufacturing ICs -# (they've gone to ASICs and FPGAs), but I doubt they're in the computer -# business these days. -# - -# Tested, seems to work fine with vi. -synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal, - am, - cols#80, lines#24, - clear=^Z, cub1=^H, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK, - -#### Tab Office Products -# -# TAB Products Co. - Palo Alto, California -# Electronic Office Products, -# 1451 California Avenue 94304 -# -# I think they're out of business. -# - -# The tab 132 uses xon/xoff, so no padding needed. -# / have nothing to do with arrow keys. -# sets 80 col mode, normal video, autowrap on (for ). -# Seems to be no way to get rid of status line. -# The manual for this puppy was dated June 1981. It claims to be VT52- -# compatible but looks more vt100-like. -tab132|tab|tab132-15|tab 132/15, - da, db, - OTdN@, cols#80, lines#24, lm#96, - cud1=^J, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, - il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B, - kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@, use=vt100, -tab132-w|tab132 in wide mode, - cols#132, - is2=\E[?7h\E[?3h\E[?5l, use=tab132, -tab132-rv|tab132 in reverse-video mode, - is2=\E[?7h\E[?3l\E[?5h, use=tab132, -tab132-w-rv|tab132 in reverse-video/wide mode, - is2=\E[?7h\E[?3h\E[?5h, use=tab132-w, - - -#### Teleray -# -# Research Incorporated -# 6425 Flying Cloud Drive -# Eden Prairie, MN 55344 -# Vox: (612)-941-3300 -# -# The Teleray terminals were all discontinued in 1992-93. RI still services -# and repairs these beasts, but no longer manufactures them. The Teleray -# people believe that all the types listed below are very rare now (1995). -# There was a newer line of Telerays (Model 7, Model 20, Model 30, and -# Model 100) that were ANSI-compatible. -# -# Note two things called "teleray". Reorder should move the common one -# to the front if you have either. A dumb teleray with the cursor stuck -# on the bottom and no obvious model number is probably a 3700. -# - -t3700|dumb teleray 3700, - OTbs, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ind=^J, -t3800|teleray 3800 series, - OTbs, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK, - home=\EH, ht=^I, ind=^J, ll=\EY7\s, -t1061|teleray|teleray 1061, - OTbs, am, km, xhp, xt, - cols#80, it#8, lines#24, xmc#1, - bel=^G, clear=\014$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EM$<2*>, ed=\EJ$<1>, el=\EK, home=\EH, ht=^I, hts=\EF, - ich1=\EP, il1=\EL$<2*>, ind=^J, ip=$<0.4*>, - is2=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef, - kf1=^Z1, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7, - kf8=^Z8, rmso=\ER@, rmul=\ER@, smso=\s\ERD, smul=\ERH, - tbc=\EG, -t1061f|teleray 1061 with fast PROMs, - dl1=\EM, il1=\EL, ip@, use=t1061, -# "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, -# 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. -# Note: this is NOT the old termcap's "t1061f with fast proms." -# From: J. Lepreau Tue Feb 1 06:39:37 1983, Univ of Utah -# (t10: removed overridden ":so@:se@:us@:ue@:" -- esr) -t10|teleray 10 special, - OTbs, km, xhp, xt, - cols#80, it#8, lines#24, xmc#2, - clear=\Ej$<30/>, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL, - ind=\Eq, pad=\0, ri=\Ep, rmso=\ER@, rmul=\ER@, smso=\ERD, - smul=\ERH, -# teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and -# back/forth words. Put the function keys (f1-f10) where they can be -# found, and turn off the other magic keys along the top row, except -# for line/local. Do the magic appropriate to make the page shifts work. -# Also toggle ^S/^Q for those of us who use Emacs. -t16|teleray 16, - am, da, db, mir, xhp, xt, - cols#80, lines#24, - bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, ht=^I, il1=\E[L, - ind=^J, 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, - -#### Texas Instruments (ti) -# - -# The Silent 700 was so called because it was built around a quiet thermal -# printer. It was portable, equipped with an acoustic coupler, and pretty -# neat for its day. -ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800, - OTbs, hc, os, - cols#80, - bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J, - -# -# Texas Instruments 916 VDT 7 bit control mode -# -ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL, - da, db, in, msgr, - cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[2J$<6>, - cnorm=\E[?25h, cub=\E[%p1%dD, cud=\E[%p1%dB, - cuf=\E[%p1%dC, cup=\E[%p1%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - dch=\E[%p1%dP$<250>, dch1=\E[P, dl=\E[%p1%dM, - ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K, el1=\E[1K, - 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=^J, 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>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, - use=vt220, -# -# Texas Instruments 916 VDT 8 bit control mode -# -ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL, - kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C, - kcuu1=\233A, kdch1=\233P, kent=^J, kf1=\23317~, - kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~, - kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, - kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H, - kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916, -# -# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode -# -ti916-132|Texas Instruments 916 VDT vt220 132 column, - cols#132, use=ti916, -# -# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode -# -ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column, - cols#132, use=ti916-8, -ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL, - OTbs, am, xon, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M, - csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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~, - 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, -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, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M, - csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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=P$<\233>, kf1=P$<\217>, - kf2=Q$<\217>, kf3=R$<\217>, kf4=S$<\217>, 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, -ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode, - cols#132, use=ti924, -ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode, - cols#132, use=ti924-8, -ti931|Texas Instruments 931 VDT, - OTbs, am, xon, - cols#80, lines#24, - bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, - ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H, - is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3, - kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9, - kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@, - sgr0=\E4@, smso=\E4A, smul=\E4D, -ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL, - csr@, ind=\E[1S, ri=\E[1T, use=ti924, -# (ti926-8: I corrected this from the broken SCO entry -- esr) -ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL, - csr@, ind=\2331S, ri=\2331T, use=ti924-8, -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=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, 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, -# -# 928 VDT 7 bit control mode -# -ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL, - kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~, - kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, - kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, - kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, - kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi, -# -# 928 VDT 8 bit control mode -# -ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL, - kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~, - kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~, - kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~, - kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~, - kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S, - kpp=\233T, kprt=\23335~, use=ti_ansi, - -#### Zentec (zen) -# - -# (zen30: removed obsolete :ma=^L ^R^L^K^P:. This entry originally -# had just =\EG6 which I think means standout was supposed to be -# dim-reverse using ADM12-style attributes. ADM12 / and -# might work-- esr) -zen30|z30|zentec 30, - OTbs, am, mir, ul, - cols#80, lines#24, - bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^, - il1=\EE$<1.5*>, ind=^J, rmir=\Er, rmul@, smir=\Eq, smso=\EG6, - smul@, use=adm+sgr, -# (zen50: this had extension capabilities -# :BS=^U:CL=^V:CR=^B: -# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh, -# which were also in the original entry -- esr) -# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr) -zen50|z50|zentec zephyr, - OTbs, am, - cols#80, lines#24, xmc#1, - clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE, - invis@, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, - rmul@, smul@, use=adm+sgr, - -# CCI 4574 (Office Power) from Will Martin via BRL -cci|cci1|z8001|zen8001|CCI Custom Zentec 8001, - OTbs, am, bw, - cols#80, lines#24, - blink=\EM", clear=\EH\EJ, cnorm=\EP, - csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH, - invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R, - rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s, - smso=\EM$, smul=\EM0, - -######## OBSOLETE UNIX CONSOLES -# - -#### Apollo consoles -# -# Apollo got bought by Hewlett-Packard. The Apollo workstations are -# labeled HP700s now. -# - -# From: Gary Darland -apollo|apollo console, - OTbs, am, mir, - cols#88, lines#53, - clear=^L, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL, - ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED, - rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ, - smso=\ES, smul=\EU, vpa=\EO+\s, - -# We don't know whether or not the apollo guys replicated DEC's firmware bug -# in the VT132 that reversed /. To be on the safe side, disable -# both these capabilities. -apollo_15P|apollo 15 inch display, - rmir@, smir@, use=vt132, -apollo_19L|apollo 19 inch display, - rmir@, smir@, use=vt132, -apollo_color|apollo color display, - rmir@, smir@, use=vt132, - -#### Convergent Technology -# -# Burroughs bought Convergent shortly before it merged with Univac. -# CTOS is (I believe) dead. Probably the aws is too (this entry dates -# from 1991 or earlier). -# - -# Convergent AWS workstation from Gould/SEL UTX/32 via BRL -# (aws: removed unknown :dn=^K: -- esr) -aws|Convergent Technologies AWS workstation under UTX and Xenix, - am, - OTug#0, cols#80, lines#28, xmc#0, - OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=^J, acsc=, - clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, - dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c, - ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K, - kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF, - rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN, - vpa=\EV%p1%c, -awsc|Convergent Technologies AWS workstation under CTOS, - am, - OTug#0, cols#80, lines#24, xmc#0, - OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L, - cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF, - el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A, - rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE, - smul=\EAC, - -#### DEC consoles -# - -# The MicroVax console. Tim Theisen writes: -# The digital uVax II's had a graphic display called a qdss. It was -# supposed to be a high performance graphic accelerator, but it was -# late to market and barely appeared before faster dumb frame buffers -# appeared. I have only used this display while running X11. However, -# during bootup, it was in text mode, and probably had a terminal emulator -# within it. And that is what your termcap entry is for. In graphics -# mode the screen size is 1024x864 pixels. -qdss|qdcons|qdss glass tty, - OTbs, am, - cols#128, lines#57, - clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%c%p2%c, cuu1=^K, - -#### Fortune Systems consoles -# -# Fortune made a line of 68K-based UNIX boxes that were pretty nifty -# in their day; I (esr) used one myself for a year or so around 1984. -# They had no graphics, though, and couldn't compete against Suns and -# the like. R.I.P. -# - -# From: Robert Nathanson via tut Wed Oct 5, 1983 -# (This had extension capabilities -# :rv=\EH:re=\EI:rg=0:GG=0:\ -# :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\ -# :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:\ -# :PU=^An\r:PD=^Ao\r:PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F: -# It had both ":bs:" and ":bs=^H:"; I removed the latter. Also, it had -# ":sg=0:" and ":ug=0:"; evidently the composer was trying (unnecessarily) -# to force both magic cookie glitches off. Once upon a time, I -# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are -# function keys; thus the "Al" value for HM was certainly an error. I renamed -# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC. -# I think :rv: and :re: are start/end reverse video and :rg: is a nonexistent -# "reverse-video-glitch" capability; I have put :rv: and :re: in with standard -# names below. I've removed obsolete ":nl=5^J:" as there is a :do: -- esr) -fos|fortune|Fortune system, - OTbs, am, bw, - cols#80, lines#25, - acsc=j*k(l m"q&v%w#x-, bel=^G, blink=\EN, civis=\E], - clear=\014$<20>, cnorm=\E\\, cr=^M, cub1=^H, cud1=\n$<3>, - cup=\034C%p1%{32}%+%c%p2%{32}%+%c, cuu1=\013$<3>, - cvvis=\E\:, dch1=\034W$<5>, dl1=\034R$<15>, - ed=\034Y$<3*>, el=^\Z, home=\036$<10>, ht=^Z, - ich1=\034Q$<5>, il1=\034E$<15>, ind=^J, is2=^_.., kbs=^H, - kcub1=^Aw\r, kcud1=^Ay\r, kcuf1=^Az\r, kcuu1=^Ax\r, - kend=^Ak\r, kent=^Aq, kf1=^Aa\r, kf2=^Ab\r, kf3=^Ac\r, - kf4=^Ad\r, kf5=^Ae\r, kf6=^Af\r, kf7=^Ag\r, kf8=^Ah\r, - khome=^A?\r, knp=^Ao\r, kpp=^An\r, nel=^M^J, rev=\EH, - rmacs=^O, rmso=^\I`, rmul=^\IP, sgr0=\EI, smacs=\Eo, - smso=^\H`, smul=^\HP, - -#### Masscomp consoles -# -# Masscomp has gone out of business. Their product line was purchased by -# comany in Georgia (US) called "XS International", parts and service may -# still be available through them. -# - -# (masscomp: ":MT:" changed to ":km:"; -- esr) -masscomp|masscomp workstation console, - OTbs, km, mir, - cols#80, it#8, lines#24, - clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, -masscomp1|masscomp large screen version 1, - cols#104, lines#36, use=masscomp, -masscomp2|masscomp large screen version 2, - cols#64, lines#21, use=masscomp, - -######## OTHER OBSOLETE TYPES -# -# These terminals are *long* dead -- these entries are retained for -# historical interest only. -# - -#### Obsolete non-ANSI software emulations -# - -# CTRM terminal emulator -# 1. underlining is not allowed with colors: first, is is simulated by -# black on white, second, it disables background color manipulations. -# 2. BLINKING, REVERSE and BOLD are allowed with colors, -# so we have to save their status in the static registers A, B and H -# respectively, to be able to restore them when color changes -# (because any color change turns off ALL attributes) -# 3. and sequences alternate modes, -# rather than simply entering them. Thus we have to check the -# static register B and H to determine the status, before sending the -# escape sequence. -# 4. now must set the status of all 3 register (A,B,H) to zero -# and then reset colors -# 5. implementation of the protect mode would badly penalize the performance. -# we would have to use \E&bn sequence to turn off colors (as well as all -# other attributes), and keep the status of protect mode in yet another -# static variable. If someone really needs this mode, they would have to -# create another terminfo entry. -# 6. original color-pair is white on black. -# store the information about colors into static registers -# 7. set foreground color. it performs the following steps. -# 1) turn off all attributes -# 2) turn on the background and video attributes that have been turned -# on before (this information is stored in static registers X,Y,Z,A,B,H,D). -# 3) turn on foreground attributes -# 4) store information about foreground into U,V,W static registers -# 8. turn on background: similar to turn on foreground above -ctrm|C terminal emulator, - am, bce, xon, - colors#8, cols#80, lh#0, lines#24, lm#0, lw#0, ncv#2, nlab#0, - pairs#63, pb#19200, vt#6, - bel=^G, blink=\E&dA%{1}%PA, - bold=%?%gH%{0}%=%t\E&dH%{1}%PH%;, cbt=\Ei, - clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p2%dc%p1%dY, cuu1=\EA, dch1=\EP$<2>, dl1=\EM, - ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=\011$<2>, hts=\E1, - il1=\EL, ind=^J, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r, - kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1=\Ep\r, - kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, - kf7=\Ev\r, kf8=\Ew\r, khome=\Ep\r, - op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV%{1}%PU, - rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA, - setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t\E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb%{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1%{4}%&%t\E&br%{1}%e%{0}%;%PX, - setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t\E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB%{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1%{4}%&%t\E&bR%{1}%e%{0}%;%PU, - sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB%{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2%t\E&dD%;, - sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB, - smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, - -# gs6300 - can't use blue foreground, it clashes with underline; -# it's simulated with cyan -# Bug: The capability probably resets attributes. -# (gs6300: commented out (no ) --esr) -gs6300|emots|AT&T PC6300 with EMOTS terminal emulator, - am, bce, msgr, xon, - colors#8, cols#80, it#8, lines#24, pairs#63, - acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s, - kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s, - khome=\E[H, 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, - -# From: 29 Oct 85 05:40:18 GMT -# MS-Kermit with Heath-19 emulation mode enabled -# (h19k: changed ":pt@:" to ":it@" -h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin), - am@, da, db, xt, - it@, - ht@, use=h19-u, - -# Apple Macintosh with Versaterm, a terminal emulator distributed by Synergy -# Software (formerly Peripherals Computers & Supplies, Inc) of -# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376. They can -# also be reached at support@synergy.com. -versaterm|versaterm vt100 emulator for the macintosh, - am, xenl, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, cuf1=\E[C$<2/>, - cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>, - dch1=\E[1P$<7/>, dl1=\E[1M$<9/>, 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=^M^J, rc=\E8, 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>, - sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>, - smul=\E[4m$<2/>, - -# From: Rick Thomas -# (xtalk: I added / based on the init string. -xtalk|IBM PC with xtalk communication program (versions up to 3.4), - am, mir, msgr, xon, - cols#80, it#8, lines#24, vt#3, xmc#1, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, clear=\E[H\E[J$<50>, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>, - el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, - il1=\E[L$<99>, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, - rmkx=\E[?1l\E>, rmso=\E[m\s, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m, - smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s, - tbc=\E[3g, use=vt100+fnkeys, - -# The official PC terminal emulator program of the AT&T Product Centers. -# Note - insert mode commented out - doesn't seem to work on AT&T PC. -simterm|attpc running simterm, - am, - cols#80, lines#24, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\ER, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, ind=^J, rmcup=\EVE, - rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB, - -#### Daisy wheel printers -# -# This section collects Diablo, DTC, Xerox, Qume, and other daisy -# wheel terminals. These are now largely obsolete. -# - -# (diablo1620: removed , no such file -- esr) -diablo1620|diablo1720|diablo450|ipsi|diablo 1620, - hc, os, - cols#132, it#8, - cub1=^H, cud1=^J, cuu1=\E^J, hd=\ED, hpa=\E\011%i%p1%c, - ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2, -diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin, - cols#124, - is2=\r \E9, use=diablo1620, -# (diablo1640: removed , no such file -- esr) -diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|diablo 1640, - bel=^G, rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, - use=diablo1620, -# (diablo1640-lm: removed , no such -# file -- esr) -diablo1640-lm|diablo-lm|xerox-lm|diablo 1640 with indented left margin, - cols#124, - rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, use=diablo1620, -diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer, - use=diablo1640-lm, -# DTC 382 with VDU. Has no so we fake it with . Standout -# works but won't go away without dynamite . -# The terminal has tabs, but I'm getting tired of fighting the braindamage. -# If no tab is set or the terminal's in a bad mood, it glitches the screen -# around all of memory. Note that return puts a blank ("a return character") -# in the space the cursor was at, so we use ^P return (and thus ^P newline for -# newline). Note also that if you turn off :pt: and let Unix expand tabs, -# curses won't work (some old BSD versions) because it doesn't clear this bit, -# and cursor addressing sends a tab for row/column 9. What a losing terminal! -# I have been unable to get tabs set in all 96 lines - it always leaves at -# least one line with no tabs in it, and once you tab through that line, -# it completely weirds out. -# (dtc382: change to -- it just does a clear --esr) -dtc382|DTC 382, - am, da, db, xhp, - cols#80, lines#24, lm#96, - bel=^G, clear=\020\035$<20>, cnorm=^Pb, cr=^P^M, cub1=^H, - cuf1=^PR, cup=\020\021%p2%c%p1%c, cuu1=^P^L, cvvis=^PB, - dch1=^X, dl1=^P^S, ed=\020\025\020\023\020\023, el=^P^U, - home=^P^R, il1=^P^Z, ind=^J, pad=\177, rmcup=, rmir=^Pi, - rmul=^P \0, smcup=\020\035$<20>, smir=^PI, smul=^P ^P, -dtc300s|DTC 300s, - hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I, - hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3, -gsi|mystery gsi terminal, - hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH, - ind=^J, -aj830|aj832|aj|anderson jacobson, - hc, os, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8, - ind=^J, -# From: Chris Torek Thu, 7 Nov 85 18:21:58 EST -aj510|Anderson-Jacobson model 510, - am, mir, - cols#80, lines#24, - clear=^L, cub1=^H, cuf1=\EX, - cup=\E#%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EY, - dch1=.1*\E'D, dl1=\E&D$<2*/>, ed=\E'P, el=\E'L, ich1=, - il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ, - kcuf1=\EX, kcuu1=\EY, pad=\177, rmcup=\E"N, rmir=\E'J, - rmso=\E"I, rmul=\E"U, smcup=\E"N, smir=\E'I, smso=\E"I, - smul=\E"U, -# From: Thu Aug 20 09:09:18 1981 -# This is incomplete, but it's a start. -nec5520|nec|spinwriter|nec 5520, - hc, os, - cols#132, it#8, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E9, ff=^L, - hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=^J, - kbs=^H, tbc=\E3, -qume5|qume|Qume Sprint 5, - hc, os, - cols#80, it#8, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I, - hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3, -# I suspect the xerox 1720 is the same as the diablo 1620. -xerox1720|x1720|x1750|xerox 1720, - hc, os, - cols#132, it#8, - bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ht=^I, hts=\E1, ind=^J, - tbc=\E2, - -#### Miscellaneous obsolete terminals, manufacturers unknown -# -# If you have any information about these (like, a manufacturer's name, -# and a date on the serial-number plate) please send it! - -cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars, - OTbs, am, - cols#73, lines#36, - clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, -cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars, - OTbs, am, - cols#85, lines#39, - clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3, - kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7, - kf4=\E8, rmso=\Em^C, smso=\Em^L, -cops10|cops|cops-10|cops 10, - am, bw, - cols#80, lines#24, - bel=^G, clear=\030$<30/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^W, el=^V, - ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, - khome=^Y, -# (d132: removed duplicate :ic=\E5:, -# merged in capabilities from a BRL entry -- esr) -d132|datagraphix|datagraphix 132a, - da, db, in, - cols#80, lines#30, - bel=^G, clear=^L, cnorm=\Em\En, cr=^M, cub1=^H, cud1=^J, - cuf1=\EL, cup=\E8%i%p1%3d%p2%3d, cuu1=\EK, cvvis=\Ex, - dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=^J, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, ri=\Ew, -# The d800 was an early portable terminal from c.1984-85 that looked a lot -# like the original Compaq `lunchbox' portable (but no handle). It had a vt220 -# mode (which is what this entry looks like) and several other lesser-known -# emulations. -d800|Direct 800/A, - OTbs, am, da, db, msgr, xhp, - cols#80, it#8, lines#24, - acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, - bel=^G, clear=\E[1;1H\E[2J, cnorm=\E[>12h, cr=^M, cub1=^H, - cud1=^J, 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, -digilog|digilog 333, - OTbs, - cols#80, lines#16, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuf1=^I, cuu1=^O, el=^X, - home=^N, ind=^J, -# The DWK was a terminal manufactured in the Soviet Union c.1986 -dwk|dwk-vt|dwk terminal, - am, - cols#80, it#8, lines#24, - acsc=+\^\,Q-S.M0\177`+a\:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~_, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, - ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee, - kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5, - kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh, - kpp=\Eg, nel=^M^J, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX, - sgr0=\EX, smacs=\EF, smso=\ET, -env230|envision230|envision 230 graphics terminal, - xenl@, - mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, - sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>, - use=vt100, -# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic -# coupler attached, the whole rig fitting in a suitcase and more or less -# portable. Hot stuff for c.1977 :-) -- esr -ep48|ep4080|execuport 4080, - OTbs, am, os, - cols#80, - bel=^G, cr=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J, -ep40|ep4000|execuport 4000, - cols#136, use=ep4080, -# Adam Thompson tells us: -# Informer series - these are all portable units, resembling older -# automatic bread-baking machines. The terminal looks like a `clamshell' -# design, but isn't. The structure is similar to the Direct terminals, -# but only half the width. The entire unit is only about 10" wide. -# It features an 8" screen (6" or 7" if you have color!), and an 9"x6" -# keyboard. All the keys are crammed together, much like some laptop -# PCs today, but perhaps less well organized...all these units have a -# bewildering array of plugs on the back, including a built-in modem. -# The 305 was a color version of the 304; the 306 and 307 were mono and -# color terminals built for IBM bisync protocols. -# From: Paul Leondis -ifmr|Informer D304, - OTbs, am, - cols#80, lines#24, - clear=\EZ, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\, - ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK, - smso=\EJ, -# Entry largely based on wy60 and has the features of wy60ak. -opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys, - am, bw, hs, km, mir, msgr, ul, xon, - cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#80, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, cr=^M, - cub1=^H, cud1=^J, cuf1=^L, cup=\Ea%i%p1%dR%p2%dC, cuu1=^K, - dch1=\EW$<11>, dim=\EGp, dl1=\ER$<5>, dsl=\Ez(\r, - ed=\EY$<100>, el=\ET, fsl=^M, home=\036$<2>, ht=\011$<5>, - hts=\E1, if=/usr/share/tabset/std, il1=\EE$<4>, ind=^J, - ip=$<3>, - is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F\177\EA1*\EZH12, - kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, - kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, - mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, - rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11, - rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>, - rs3=\EwG\Ee($<150>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/, - smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177, - smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(, - uc=\EG8\EG0, use=adm+sgr, -teletec|Teletec Datascreen, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K, - home=^^, ind=^J, -# From: Mark Dornfeld -# This description is for the LANPAR Technologies VISION 3220 -# terminal from 1984/85. The function key definitions k0-k5 represent the -# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN, -# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys. -# -# Kenneth Randell writes on 31 Dec 1998: -# I had a couple of scopes (3221) like this once where I used to work, around -# the 1987 time frame if memory serves me correctly. These scopes were made -# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220 -# compatible. The 3220 was a plain text terminal like the VT-220, the 3221 -# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222 -# was like the VT-241 (color with Regis + Sixel Graphics). These terminals -# (3221) cost about $1500 each, and one was always broken -- had to be sent -# back to the shop for repairs. -# The only real advantage these scopes had over the VT-240's were: -# 1) They were faster in the Regis display, or at least the ones I did -# 2) They had a handy debugging feature where you could split-screen the -# scope, the graphics would appear on the top, and the REGIS commands would -# appear on the bottom. I don't remember the VT-240s being able to do that. -# I would swear that LANPAR Technologies was in MA someplace, but since I -# don't work at the same place anymore, and those terminals and manuals were -# long since junked, I cannot be any more sure than that. -# -# (v3220: removed obsolete ":kn#10:", -# I added / based on the init string -- esr) -v3220|LANPAR Vision II model 3220/3221/3222, - OTbs, am, mir, xenl, - cols#80, it#8, lines#24, - clear=\E[H\E[J, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, 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, -######## ICH/ICH1 VERSUS RMIR/SMIR -# -# Some non-curses applications get confused if both ich/ich1 and rmir/smir -# are present; the symptom is doubled characters in an update using insert. -# These applications are technically correct; in both 4.3BSD termcap and -# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir -# unless the terminal needs both. To my knowledge, no terminal still in this -# file requires both other than the very obsolete dm2500. -# -# For ncurses-based applications this is not a problem, as ncurses uses -# one or the other as appropriate but never mixes the two. Therefore we -# have not corrected entries like `linux' and `xterm' that specify both. -# If you see doubled characters from these, use the linux-nic and xterm-nic -# entries that suppress ich/ich1. And upgrade to ncurses! -# - -######## VT100/ANSI/ISO 6429/ECMA-48/PC-TERM TERMINAL STANDARDS -# -# ANSI X3.64 has been withdrawn and replaced by ECMA-48. The ISO 6429 and -# ECMA-48 standards are said to be almost identical, but are not the same -# as X3.64 (though for practical purposes they are close supersets of it). -# -# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch -# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for -# Coded Character Sets"), include your snail-mail address, and you should -# receive the document in due course. Don't expect an email acknowledgement. -# -# Related standards include "X3.4-1977: American National Standard Code for -# Information Interchange" (the ASCII standard) and "X3.41.1974: -# Code-Extension Techniques for Use with the 7-Bit Coded Character Set of -# American National Standard for Information Interchange." I believe (but -# am not certain) that these are effectively identical to ECMA-6 and ECMA-35 -# respectively. -# - -#### VT100/ANSI/ECMA-48 -# -# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals -# and ECMA-48 Control Functions for Coded Character Sets. -# -# Much of the content of this comment is adapted from a table prepared by -# Richard Shuford, based on a 1984 Byte article. Terminfo correspondences, -# discussion of some terminfo-related issues, and updates to capture ECMA-48 -# have been added. Control functions described in ECMA-48 only are tagged -# with * after their names. -# -# The table is a complete list of the defined ANSI X3.64/ECMA-48 control -# sequences. In the main table, \E stands for an escape (\033) character, -# SPC for space. Pn stands for a single numeric parameter to be inserted -# in decimal ASCII. Ps stands for a list of such parameters separated by -# semicolons. Parameter meanings for most parametrized sequences are -# decribed in the notes. -# -# Sequence Sequence Parameter or -# Mnemonic Name Sequence Value Mode terminfo -# ----------------------------------------------------------------------------- -# APC Applicatn Program Command \E _ - Delim - -# BEL Bell * ^G - - bel -# BPH Break Permitted Here * \E B - * - -# BS Backpace * ^H - EF - -# CAN Cancel * ^X - - - (A) -# CBT Cursor Backward Tab \E [ Pn Z 1 eF cbt -# CCH Cancel Previous Character \E T - - - -# CHA Cursor Horizntal Absolute \E [ Pn G 1 eF hpa (B) -# CHT Cursor Horizontal Tab \E [ Pn I 1 eF tab (C) -# CMD Coding Method Delimiter * \E -# CNL Cursor Next Line \E [ Pn E 1 eF nel (D) -# CPL Cursor Preceding Line \E [ Pn F 1 eF - -# CPR Cursor Position Report \E [ Pn ; Pn R 1, 1 - - (E) -# CSI Control Sequence Intro \E [ - Intro - -# CTC Cursor Tabulation Control \E [ Ps W 0 eF - (F) -# CUB Cursor Backward \E [ Pn D 1 eF cub -# CUD Cursor Down \E [ Pn B 1 eF cud -# CUF Cursor Forward \E [ Pn C 1 eF cuf -# CUP Cursor Position \E [ Pn ; Pn H 1, 1 eF cup (G) -# CUU Cursor Up \E [ Pn A 1 eF cuu -# CVT Cursor Vertical Tab \E [ Pn Y - eF - (H) -# DA Device Attributes \E [ Pn c 0 - - -# DAQ Define Area Qualification \E [ Ps o 0 - - -# DCH Delete Character \E [ Pn P 1 eF dch -# DCS Device Control String \E P - Delim - -# DL Delete Line \E [ Pn M 1 eF dl -# DLE Data Link Escape * ^P - - - -# DMI Disable Manual Input \E \ - Fs - -# DSR Device Status Report \E [ Ps n 0 - - (I) -# DTA Dimension Text Area * \E [ Pn ; Pn SPC T - PC - -# EA Erase in Area \E [ Ps O 0 eF - (J) -# ECH Erase Character \E [ Pn X 1 eF ech -# ED Erase in Display \E [ Ps J 0 eF ed (J) -# EF Erase in Field \E [ Ps N 0 eF - -# EL Erase in Line \E [ Ps K 0 eF el (J) -# EM End of Medium * ^Y - - - -# EMI Enable Manual Input \E b Fs - -# ENQ Enquire ^E - - - -# EOT End Of Transmission ^D - * - -# EPA End of Protected Area \E W - - - (K) -# ESA End of Selected Area \E G - - - -# ESC Escape ^[ - - - -# ETB End Transmission Block ^W - - - -# ETX End of Text ^C - - - -# FF Form Feed ^L - - - -# FNK Function Key * \E [ Pn SPC W - - - -# GCC Graphic Char Combination* \E [ Pn ; Pn SPC B - - - -# FNT Font Selection \E [ Pn ; Pn SPC D 0, 0 FE - -# GSM Graphic Size Modify \E [ Pn ; Pn SPC B 100, 100 FE - (L) -# GSS Graphic Size Selection \E [ Pn SPC C none FE - -# HPA Horz Position Absolute \E [ Pn ` 1 FE - (B) -# HPB Char Position Backward \E [ j 1 FE - -# HPR Horz Position Relative \E [ Pn a 1 FE - (M) -# HT Horizontal Tab * ^I - FE - (N) -# HTJ Horz Tab w/Justification \E I - FE - -# HTS Horizontal Tab Set \E H - FE hts -# HVP Horz & Vertical Position \E [ Pn ; Pn f 1, 1 FE - (G) -# ICH Insert Character \E [ Pn @ 1 eF ich -# IDCS ID Device Control String \E [ SPC O - * - -# IGS ID Graphic Subrepertoire \E [ SPC M - * - -# IL Insert Line \E [ Pn L 1 eF il -# IND Index \E D - FE - -# INT Interrupt \E a - Fs - -# JFY Justify \E [ Ps SPC F 0 FE - -# IS1 Info Separator #1 * ^_ - * - -# IS2 Info Separator #1 * ^^ - * - -# IS3 Info Separator #1 * ^] - * - -# IS4 Info Separator #1 * ^\ - * - -# LF Line Feed ^J - - - -# LS1R Locking Shift Right 1 * \E ~ - - - -# LS2 Locking Shift 2 * \E n - - - -# LS2R Locking Shift Right 2 * \E } - - - -# LS3 Locking Shift 3 * \E o - - - -# LS3R Locking Shift Right 3 * \E | - - - -# MC Media Copy \E [ Ps i 0 - - (S) -# MW Message Waiting \E U - - - -# NAK Negative Acknowledge * ^U - * - -# NBH No Break Here * \E C - - - -# NEL Next Line \E E - FE nel (D) -# NP Next Page \E [ Pn U 1 eF - -# NUL Null * ^@ - - - -# OSC Operating System Command \E ] - Delim - -# PEC Pres. Expand/Contract * \E Pn SPC Z 0 - - -# PFS Page Format Selection * \E Pn SPC J 0 - - -# PLD Partial Line Down \E K - FE - (T) -# PLU Partial Line Up \E L - FE - (U) -# PM Privacy Message \E ^ - Delim - -# PP Preceding Page \E [ Pn V 1 eF - -# PPA Page Position Absolute * \E [ Pn SPC P 1 FE - -# PPB Page Position Backward * \E [ Pn SPC R 1 FE - -# PPR Page Position Forward * \E [ Pn SPC Q 1 FE - -# PTX Parallel Texts * \E [ \ - - - -# PU1 Private Use 1 \E Q - - - -# PU2 Private Use 2 \E R - - - -# QUAD Typographic Quadding \E [ Ps SPC H 0 FE - -# REP Repeat Char or Control \E [ Pn b 1 - rep -# RI Reverse Index \E M - FE - (V) -# RIS Reset to Initial State \E c - Fs - -# RM Reset Mode * \E [ Ps l - - - (W) -# SACS Set Add. Char. Sep. * \E [ Pn SPC / 0 - - -# SAPV Sel. Alt. Present. Var. * \E [ Ps SPC ] 0 - - (X) -# SCI Single-Char Introducer \E Z - - - -# SCO Sel. Char. Orientation * \E [ Pn ; Pn SPC k - - - -# SCS Set Char. Spacing * \E [ Pn SPC g - - - -# SD Scroll Down \E [ Pn T 1 eF rin -# SDS Start Directed String * \E [ Pn ] 1 - - -# SEE Select Editing Extent \E [ Ps Q 0 - - (Y) -# SEF Sheet Eject & Feed * \E [ Ps ; Ps SPC Y 0,0 - - -# SGR Select Graphic Rendition \E [ Ps m 0 FE sgr (O) -# SHS Select Char. Spacing * \E [ Ps SPC K 0 - - -# SI Shift In ^O - - - (P) -# SIMD Sel. Imp. Move Direct. * \E [ Ps ^ - - - -# SL Scroll Left \E [ Pn SPC @ 1 eF - -# SLH Set Line Home * \E [ Pn SPC U - - - -# SLL Set Line Limit * \E [ Pn SPC V - - - -# SLS Set Line Spacing * \E [ Pn SPC h - - - -# SM Select Mode \E [ Ps h none - - (W) -# SO Shift Out ^N - - - (Q) -# SOH Start Of Heading * ^A - - - -# SOS Start of String * \E X - - - -# SPA Start of Protected Area \E V - - - (Z) -# SPD Select Pres. Direction * \E [ Ps ; Ps SPC S 0,0 - - -# SPH Set Page Home * \E [ Ps SPC G - - - -# SPI Spacing Increment \E [ Pn ; Pn SPC G none FE - -# SPL Set Page Limit * \E [ Ps SPC j - - - -# SPQR Set Pr. Qual. & Rapid. * \E [ Ps SPC X 0 - - -# SR Scroll Right \E [ Pn SPC A 1 eF - -# SRCS Set Reduced Char. Sep. * \E [ Pn SPC f 0 - - -# SRS Start Reversed String * \E [ Ps [ 0 - - -# SSA Start of Selected Area \E F - - - -# SSU Select Size Unit * \E [ Pn SPC I 0 - - -# SSW Set Space Width * \E [ Pn SPC [ none - - -# SS2 Single Shift 2 (G2 set) \E N - Intro - -# SS3 Single Shift 3 (G3 set) \E O - Intro - -# ST String Terminator \E \ - Delim - -# STAB Selective Tabulation * \E [ Pn SPC ^ - - - -# STS Set Transmit State \E S - - - -# STX Start pf Text * ^B - - - -# SU Scroll Up \E [ Pn S 1 eF indn -# SUB Substitute * ^Z - - - -# SVS Select Line Spacing * \E [ Pn SPC \ 1 - - -# SYN Synchronous Idle * ^F - - - -# TAC Tabul. Aligned Centered * \E [ Pn SPC b - - - -# TALE Tabul. Al. Leading Edge * \E [ Pn SPC a - - - -# TATE Tabul. Al. Trailing Edge* \E [ Pn SPC ` - - - -# TBC Tab Clear \E [ Ps g 0 FE tbc -# TCC Tabul. Centered on Char * \E [ Pn SPC c - - - -# TSR Tabulation Stop Remove * \E [ Pn SPC d - FE - -# TSS Thin Space Specification \E [ Pn SC E none FE - -# VPA Vert. Position Absolute \E [ Pn d 1 FE vpa -# VPB Line Position Backward * \E [ Pn k 1 FE - -# VPR Vert. Position Relative \E [ Pn e 1 FE - (R) -# VT Vertical Tabulation * ^K - FE - -# VTS Vertical Tabulation Set \E J - FE - -# -# --------------------------------------------------------------------------- -# -# Notes: -# -# Some control characters are listed in the ECMA-48 standard without -# being assigned functions relevant to terminal control there (they -# referred to other standards such as ISO 1745 or ECMA-35). They are listed -# here anyway for completeness. -# -# (A) ECMA-48 calls this "CancelCharacter" but retains the CCH abbreviation. -# -# (B) There seems to be some confusion abroad between CHA and HPA. Most -# `ANSI' terminals accept the CHA sequence, not the HPA. but terminfo calls -# the capability (hpa). ECMA-48 calls this "Cursor Character Absolute" but -# preserved the CHA abbreviation. -# -# (C) CHT corresponds to terminfo (tab). Usually it has the value ^I. -# Occasionally (as on, for example, certain HP terminals) this has the HTJ -# value. ECMA-48 calls this "Cursor Forward Tabulation" but preserved the -# CHT abbreviation. -# -# (D) terminfo (nel) is usually \r\n rather than ANSI \EE. -# -# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR -# abbreviation. -# -# (F) CTC parameter values: 0 = set char tab, 1 = set line tab, 2 = clear -# char tab, 3 = clear line tab, 4 = clear all char tabs on current line, -# 5 = clear all char tabs, 6 = clear all line tabs. -# -# (G) CUP and HVP are identical in effect. Some ANSI.SYS versions accept -# HVP, but always allow CUP as an alternate. ECMA-48 calls HVP "Character -# Position Absolute" but retains the HVP abbreviation. -# -# (H) ECMA calls this "Cursor Line Tabulation" but preserves the CVT -# abbreviation. -# -# (I) DSR parameter values: 0 = ready, 1 = busy, 2 = busy, will send DSR -# later, 3 = malfunction, 4 = malfunction, will send DSR later, 5 = request -# DSR, 6 = request CPR response. -# -# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters: 0 = clear to end, -# 1 = clear from beginning, 2 = clear. -# -# (K) ECMA calls this "End of Guarded Area" but preserves the EPA abbreviation. -# -# (L) The GSM parameters are vertical and horizontal parameters to scale by. -# -# (M) Some ANSI.SYS versions accept HPR, but more commonly `ANSI' terminals -# use CUF for this function and ignore HPR. ECMA-48 calls this "Character -# Position Relative" but retains the HPR abbreviation. -# -# (N) ECMA-48 calls this "Character Tabulation" but retains the HT -# abbreviation. -# -# (O) SGR parameter values: 0 = default mode (attributes off), 1 = bold, -# 2 = dim, 3 = italicized, 4 = underlined, 5 = slow blink, 6 = fast blink, -# 7 = reverse video, 8 = invisible, 9 = crossed-out (marked for deletion), -# 10 = primary font, 10 + n (n in 1..9) = nth alternative font, 20 = Fraktur, -# 21 = double underline, 22 = turn off 2, 23 = turn off 3, 24 = turn off 4, -# 25 = turn off 5, 26 = proportional spacing, 27 = turn off 7, 28 = turn off -# 8, 29 = turn off 9, 30 = black fg, 31 = red fg, 32 = green fg, 33 = yellow -# fg, 34 = blue fg, 35 = magenta fg, 36 = cyan fg, 37 = white fg, 38 = set -# fg color as in CCIT T.416, 39 = set default fg color, 40 = black bg -# 41 = red bg, 42 = green bg, 43 = yellow bg, 44 = blue bg, 45 = magenta bg, -# 46 = cyan bg, 47 = white bg, 48 = set bg color as in CCIT T.416, 39 = set -# default bg color, 50 = turn off 26, 51 = framed, 52 = encircled, 53 = -# overlined, 54 = turn off 51 & 52, 55 = not overlined, 56-59 = reserved, -# 61-65 = variable highlights for ideograms. -# -# (P) SI is also called LSO, Locking Shift Zero. -# -# (Q) SI is also called LS1, Locking Shift One. -# -# (R) Some ANSI.SYS versions accept VPR, but more commonly `ANSI' terminals -# use CUD for this function and ignore VPR. ECMA calls it `Line Position -# Absolute' but retains the VPA abbreviation. -# -# (S) MC parameters: 0 = start xfer to primary aux device, 1 = start xfer from -# primary aux device, 2 = start xfer to secondary aux device, 3 = start xfer -# from secondary aux device, 4 = stop relay to primary aux device, 5 = -# start relay to primary aux device, 6 = stop relay to secondary aux device, -# 7 = start relay to secondary aux device. -# -# (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD -# abbreviation. -# -# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLU -# abbreviation. -# -# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation. -# -# (W) RM/SM modes are as follows: 1 = Guarded Area Transfer Mode (GATM), -# 2 = Keyboard Action Mode (KAM), 3 = Control Representation Mode (CRM), -# 4 = Insertion Replacement Mode, 5 = Status Report Transfer Mode (SRTM), -# 6 = Erasure Mode (ERM), 7 = Line Editing Mode (LEM), 8 = Bi-Directional -# Support Mode (BDSM), 9 = Device Component Select Mode (DCSM), -# 10 = Character Editing Mode (HEM), 11 = Positioning Unit Mode (PUM), -# 12 = Send/Receive Mode, 13 = Format Effector Action Mode (FEAM), -# 14 = Format Effector Transfer Mode (FETM), 15 = Multiple Area Transfer -# Mode (MATM), 16 = Transfer Termination Mode, 17 = Selected Area Transfer -# Mode, 18 = Tabulation Stop Mode, 19 = Editing Boundary Mode, 20 = Line Feed -# New Line Mode (LF/NL), Graphic Rendition Combination Mode (GRCM), 22 = -# Zero Default Mode (ZDM). The EBM and LF/NL modes have actually been removed -# from ECMA-48's 5th edition but are listed here for reference. -# -# (X) Select Alternate Presentation Variants is used only for non-Latin -# alphabets. -# -# (Y) "Select Editing Extent" (SEE) was ANSI "Select Edit Extent Mode" (SEM). -# -# (Z) ECMA-48 calls this "Start of Guarded Area" but retains the SPA -# abbreviation. -# -# --------------------------------------------------------------------------- -# -# Abbreviations: -# -# Intro an Introducer of some kind of defined sequence; the normal 7-bit -# X3.64 Control Sequence Introducer is the two characters "Escape [" -# -# Delim a Delimiter -# -# x/y identifies a character by position in the ASCII table (column/row) -# -# eF editor function (see explanation) -# -# FE format effector (see explanation) -# -# F is a Final character in -# an Escape sequence (F from 3/0 to 7/14 in the ASCII table) -# a control sequence (F from 4/0 to 7/14) -# -# Gs is a graphic character appearing in strings (Gs ranges from -# 2/0 to 7/14) in the ASCII table -# -# Ce is a control represented as a single bit combination in the C1 set -# of controls in an 8-bit character set -# -# C0 the familiar set of 7-bit ASCII control characters -# -# C1 roughly, the set of control chars available only in 8-bit systems. -# This is too complicated to explain fully here, so read Jim Fleming's -# article in the February 1983 BYTE, especially pages 214 through 224. -# -# Fe is a Final character of a 2-character Escape sequence that has an -# equivalent representation in an 8-bit environment as a Ce-type -# (Fe ranges from 4/0 to 5/15) -# -# Fs is a Final character of a 2-character Escape sequence that is -# standardized internationally with identical representation in 7-bit -# and 8-bit environments and is independent of the currently -# designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14) -# -# I is an Intermediate character from 2/0 to 2/15 (inclusive) in the -# ASCII table -# -# P is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII -# table -# -# Pn is a numeric parameter in a control sequence, a string of zero or -# more characters ranging from 3/0 to 3/9 in the ASCII table -# -# Ps is a variable number of selective parameters in a control sequence -# with each selective parameter separated from the other by the code -# 3/11 (which usually represents a semicolon); Ps ranges from -# 3/0 to 3/9 and includes 3/11 -# -# * Not relevant to terminal control, listed for completeness only. -# -# Format Effectors versus Editor Functions -# -# A format effector specifies how following output is to be displayed. -# An editor function allows you to modify the display. Informally -# format effectors may be destructive; format effectors should not be. -# -# For instance, a format effector that moves the "active position" (the -# cursor or equivalent) one space to the left would be useful when you want to -# create an overstrike, a compound character made of two standard characters -# overlaid. Control-H, the Backspace character, is actually supposed to be a -# format effector, so you can do this. But many systems use it in a -# nonstandard fashion, as an editor function, deleting the character to the -# left of the cursor and moving the cursor left. When Control-H is assumed to -# be an editor function, you cannot predict whether its use will create an -# overstrike unless you also know whether the output device is in an "insert -# mode" or an "overwrite mode". When Control-H is used as a format effector, -# its effect can always be predicted. The familiar characters carriage -# return, linefeed, formfeed, etc., are defined as format effectors. -# -# NOTES ON THE DEC VT100 IMPLEMENTATION -# -# Control sequences implemented in the VT100 are as follows: -# -# CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND, -# LNM, NEL, RI, RIS, RM, SGR, SM, TBC -# -# plus several private DEC commands. -# -# Erasing parts of the display (EL and ED) in the VT100 is performed thus: -# -# Erase from cursor to end of line Esc [ 0 K or Esc [ K -# Erase from beginning of line to cursor Esc [ 1 K -# Erase line containing cursor Esc [ 2 K -# Erase from cursor to end of screen Esc [ 0 J or Esc [ J -# Erase from beginning of screen to cursor Esc [ 1 J -# Erase entire screen Esc [ 2 J -# -# Some brain-damaged terminal/emulators respond to Esc [ J as if it were -# Esc [ 2 J, but this is wrong; the default is 0. -# -# The VT100 responds to receiving the DA (Device Attributes) control -# -# Esc [ c (or Esc [ 0 c) -# -# by transmitting the sequence -# -# Esc [ ? l ; Ps c -# -# where Ps is a character that describes installed options. -# -# The VT100's cursor location can be read with the DSR (Device Status -# Report) control -# -# Esc [ 6 n -# -# The VT100 reports by transmitting the CPR sequence -# -# Esc [ Pl ; Pc R -# -# where Pl is the line number and Pc is the column number (in decimal). -# -# The specification for the DEC VT100 is document EK-VT100-UG-003. - -#### ANSI.SYS -# -# Here is a description of the color and attribute controls supported in the -# the ANSI.SYS driver under MS-DOS. Most console drivers and ANSI -# terminal emulators for Intel boxes obey these. They are a proper subset -# of the ECMA-48 escapes. -# -# 0 all attributes off -# 1 foreground bright -# 4 underscore on -# 5 blink on/background bright (not reliable with brown) -# 7 reverse-video -# 8 set blank (non-display) -# 10 set primary font -# 11 set first alternate font (on PCs, display ROM characters 1-31) -# 12 set second alternate font (on PCs, display IBM high-half chars) -# -# Color attribute sets -# 3n set foreground color / 0=black, 1=red, 2=green, 3=brown, -# 4n set background color \ 4=blue, 5=magenta, 6=cyan, 7=white -# Bright black becomes gray. Bright brown becomes yellow, -# These coincide with the prescriptions of the ISO 6429/ECMA-48 standard. -# -# * If the 5 attribute is on and you set a background color (40-47) it is -# supposed to enable bright background. -# -# * Many VGA cards (such as the Paradise and compatibles) do the wrong thing -# when you try to set a "bright brown" (yellow) background with attribute -# 5 (you get a blinking yellow foreground instead). A few displays -# (including the System V console) support an attribute 6 that undoes this -# braindamage (this is required by iBCS2). -# -# * Some older versions of ANSI.SYS have a bug that causes thems to require -# ESC [ Pn k as EL rather than the ANSI ESC [ Pn K. (This is not ECMA-48 -# compatible.) - -#### Intel Binary Compatibility Standard -# -# For comparison, here are the capabilities implied by the Intel Binary -# Compatibility Standard for UNIX systems (Intel order number 468366-001). -# These recommendations are optional. IBCS2 allows the leading escape to -# be either the 7-bit \E[ or 8-bit \0233 introducer, in accordance with -# the ANSI X.364/ISO 6429/ECMA-48 standard. Here are the iBCS2 capabilities -# (as described in figure 9-3 of the standard). Those expressed in the ibcs2 -# terminfo entry are followed with the corresponding capability in parens: -# -# CSI k disable (n=0) or enable (n=1) keyclick -# CSI 2h lock keyboard -# CSI 2i send screen as input -# CSI 2l unlock keyboard -# CSI 6m enable background color intensity -# CSI <0-2>c reserved -# CSI <0-59>m select graphic rendition -# CSI ;H (cup) cursor to line n and column m -# CSI ;f cursor to line n and column m -# CSI @ (ich) insert characters -# CSI A (cuu) cursor up n lines -# CSI B (cud) cursor down n lines -# CSI C (cuu) cursor right n characters -# CSI D (cud) cursor left n characters -# CSI E cursor down n lines and in first column -# CSI F cursor up n lines and in first column -# CSI G (hpa) position cursor at column n-1 -# CSI J (ed) erase in display -# CSI K (el) erase in line -# CSI L (il) insert line(s) -# CSI P (dch) delete characters -# CSI S (indn) scroll up n lines -# CSI T (rin) scroll down n lines -# CSI X (ech) erase characters -# CSI Z (cbt) back up n tab stops -# CSI ` cursor to column n on line -# CSI a (cuu) cursor right n characters -# CSI d (vpa) cursor to line n -# CSI e cursor down n lines and in first column -# CSI g (cbt) clear all tabs -# CSI z make virtual terminal n active -# CSI ?7h (smam) turn automargin on -# CSI ?7l (rmam) turn automargin off -# CSI s save cursor position -# CSI u restore cursor position to saved value -# CSI =A set overscan color -# CSI =F set normal foreground color -# CSI =G set normal background color -# CSI =H set reverse foreground color -# CSI =I set reverse foreground color -# CSI =J set graphic foreground color -# CSI =K set graphic foreground color -# CSI =g (dispc) display n from alternate graphics character set -# CSI =

;B set bell parameters -# CSI =;C set cursor parameters -# CSI =D enable/disable intensity of background color -# CSI =E set/clear blink vs. bold background -# CSI 7 (sc) (sc) save cursor position -# CSI 8 (rc) (rc) restore cursor position to saved value -# CSI H (hts) (hts) set tab stop -# CSI Q define function key string -# (string must begin and end with delimiter char) -# CSI c (clear) clear screen -# -# The lack of any specification for attributes in SGR (among other things) -# makes this a wretchedly weak standard. The table above is literally -# everything iBSC2 has to say about terminal escape sequences; there is -# no further discussion of their meaning or how to set the parameters -# in these sequences at all. -# - -######## NONSTANDARD CAPABILITY TRANSLATIONS USED IN THIS FILE -# -# The historical termcap file entries were written primarily in 4.4BSD termcap. -# The 4.4BSD termcap set was substantially larger than the original 4.1BSD set, -# with the extension names chosen for compatibility with the termcap names -# assigned in System V terminfo. There are some variant extension sets out -# there. We try to describe them here. -# -# XENIX extensions: -# -# The XENIX extensions include a set of function-key capabilities as follows: -# -# code XENIX variable name terminfo name name clashes? -# ---- ------------------- ------------- ----------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window create_window -# EN key_end kend -# HM key_home khome -# HP ?? -# LD key_delete_line kdl1 -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PD key_page_down knp -# PL ?? -# PN start_print mc5 -# PR ?? -# PS stop_print mc4 -# PU key_page_up kpp pulse -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# RT key_return kent -# UP key_up_arrow kcuu1 parm_up_cursor -# WL key_word_left -# WR key_word_right -# -# The XENIX extensions also include the following character-set and highlight -# capabilities: -# -# XENIX terminfo function -# ----- -------- ------------------------------ -# GS smacs start alternate character set -# GE rmacs end alternate character set -# GG :as:/:ae: glitch (analogous to :sg:/:ug:) -# bo blink begin blink (not used in /etc/termcap) -# be end blink (not used in /etc/termcap) -# bb blink glitch (not used in /etc/termcap) -# it dim begin dim (not used in /etc/termcap) -# ie end dim (not used in /etc/termcap) -# ig dim glitch (not used in /etc/termcap) -# -# Finally, XENIX also used the following forms-drawing capabilities: -# -# single double type ASCII approximation -# ------ ------ ------------- ------------------- -# GV Gv vertical line | -# GH Gv horizontal line - _ -# G1 G5 top right corner _ | -# G2 G6 top left corner | -# G3 G7 bottom left corner |_ -# G4 G8 bottom right corner _| -# GD Gd down-tick character T -# GL Gl left-tick character -| -# GR Gr right-tick character |- -# GC Gc middle intersection -|- -# GU Gu up-tick character _|_ -# -# These were invented to take advantage of the IBM PC ROM character set. One -# can compose an acsc string from the single-width characters as follows -# "j{G4}k{G1}l{G2}m{G3}q{GH}x{GV}t{GR}u{GL}v{GU}w{GD}n{GC}" -# When translating a termcap file, ncurses tic will do this automatically. -# The double forms characters don't fit the SVr4 terminfo model. -# -# AT&T Extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish that BO=:mr: (start reverse video), DS=:mh: -# (start dim), XS=:mk: (secure/invisible mode), EE=:me: (end highlights), -# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make -# cursor invisible), and CV=:ve: (make cursor normal). -# -# HP Extensions -# -# The HP library (as of mid-1995, their term.h file version 70.1) appears to -# have the System V capabilities up to SVr1 level. After that, it supports -# two nonstandard caps meml and memu corresponding to the old termcap :ml:, -# :mu: capabilities. After that, it supports caps plab_norm, label_on, -# label_off, and key_f11..key_f63 capabilities like SVr4's. This makes the -# HP binary format incompatible with SVr4's. -# -# IBM Extensions -# -# There is a set of nonstandard terminfos used by IBM's AIX operating system. -# The AIX terminfo library diverged from SVr1 terminfo, and replaces all -# capabilities following prtr_non with the following special capabilties: -# box[12], batt[12], colb[0123456789], colf[0123456789], f[01234567], kbtab, -# kdo, kcmd, kcpn, kend, khlp, knl, knpn, kppn, kppn, kquit, ksel, kscl, kscr, -# ktab, kmpf[123456789], apstr, ksf1..ksf10, kf11...kf63, kact, topl, btml, -# rvert, lvert. Some of these are identical to XPG4/SVr4 equivalents: -# kcmd, kend, khlp, and kf11...kf63. Two others (kbtab and ksel) can be -# renamed (to kcbt and kslt). The places in the box[12] capabilities -# correspond to acsc chars, here is the mapping: -# -# box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE -# box1[2] = ACS_URCORNER -# box1[3] = ACS_VLINE -# box1[4] = ACS_LRCORNER -# box1[5] = ACS_LLCORNER -# box1[6] = ACS_TTEE -# box1[7] = ACS_RTEE -# box1[8] = ACS_BTEE -# box1[9] = ACS_LTEE -# box1[10] = ACS_PLUS -# -# The box2 characters are the double-line versions of these forms graphics. -# The AIX binary terminfo format is incompatible with SVr4's. -# -# Iris console extensions: -# -# HS is half-intensity start; HE is half-intensity end -# CT is color terminal type (for Curses & rogue) -# CP is color change escape sequence -# CZ are color names (for Curses & rogue) -# -# The ncurses tic utility recognizes HS as an alias for mh . -# -# TC Extensions: -# -# There is a set of extended termcaps associated with something -# called the "Terminal Control" or TC package created by MainStream Systems, -# Winfield Kansas. This one also uses GS/GE for as/ae, and also uses -# CF for civis and CO for cvvis. Finally, they define a boolean :ct: -# that flags color terminals. -# -######## CHANGE HISTORY -# -# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94. -# Releases 9 and up are maintained by Eric S. Raymond as part of the ncurses -# project. -# -# This file contains all the capability information present in John Kunze's -# last version of the termcap master file, except as noted in the change -# comments at end of file. Some information about very ancient obsolete -# capabilities has been moved to comments. Some all-numeric names of older -# terminals have been retired. -# -# I changed :MT: to :km: (the 4.4BSD name) everywhere. I commented out some -# capabilities (EP, dF, dT, dV, kn, ma, ml, mu, xr, xx) that are no longer -# used by BSD curses. -# -# The 9.1.0 version of this file was translated from my lightly-edited copy of -# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for -# the purpose. Unless the ncurses tic implementation and the Lisp code were -# making perfectly synchronized mistakes which I then failed to catch by -# eyeball, the translation was correct and perfectly information-preserving. -# -# Major version number bumps correspond to major version changes in ncurses. -# -# Here is a log of the changes since then: -# -# 9.1.0 (Wed Feb 1 04:50:32 EST 1995): -# * First terminfo master translated from 8.3. -# 9.2.0 (Wed Feb 1 12:21:45 EST 1995): -# * Replaced Wyse entries with updated entries supplied by vendor. -# -# 9.3.0 (Mon Feb 6 19:14:40 EST 1995): -# * Added contact & status info from G. Clark Brown . -# 9.3.1 (Tue Feb 7 12:00:24 EST 1995): -# * Better XENIX keycap translation. Describe TC termcaps. -# * Contact and history info supplied by Qume. -# 9.3.2 (Sat Feb 11 23:40:02 EST 1995): -# * Raided the Shuford FTP site for recent termcaps/terminfos. -# * Added information on X3.64 and VT100 standard escape sequences. -# 9.3.3 (Mon Feb 13 12:26:15 EST 1995): -# * Added a correct X11R6 xterm entry. -# * Fixed terminfo translations of padding. -# 9.3.4 (Wed Feb 22 19:27:34 EST 1995): -# * Added correct acsc/smacs/rmacs strings for vt100 and xterm. -# * Added u6/u7/u8/u9 capabilities. -# * Added PCVT entry. -# 9.3.5 (Thu Feb 23 09:37:12 EST 1995): -# * Emacs uses :so:, not :mr:, for its mode line. Fix linux entry -# to use reverse-video standout so Emacs will look right. -# * Added el1 capability to ansi. -# * Added smacs/rmacs to ansi.sys. -# -# 9.4.0 (Sat Feb 25 16:43:25 EST 1995): -# * New mt70 entry. -# * Added COPYRIGHTS AND OTHER DELUSIONS. -# * Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics -# smartvid & smarterm, ampex 175 & 219 & 232, -# env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20, -# ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2, -# screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan, -# adm36, mime314, ergo4000, ca22851. Replaced att7300, esprit, dd5500. -# * Replaced the Perkin-Elmer entries with vendor's official ones. -# * Restored the old minimal-ansi entry, luna needs it. -# * Fixed some incorrect ip and proportional-padding translations. -# 9.4.1 (Mon Feb 27 14:18:33 EST 1995): -# * Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly. -# * Make the xterm entry 65 lines again; create xterm25 and xterm24 -# to force a particular height. -# * Added beehive4 and reorganized other Harris entries. -# 9.4.2 (Thu Mar 9 01:45:44 EST 1995): -# * Merged in DEC's official entries for its terminals. The only old -# entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo). -# * Replaced the translated BBN Bitgraph entries with purpose-built -# ones from AT&T's SVr3. -# * Replaced the AT&T entries with AT&T's official terminfos. -# * Added teleray 16, vc415, cops10. -# * Merged in many individual capabilities from SCO terminfo files. -# 9.4.3 (Mon Mar 13 02:37:53 EST 1995): -# * Typo fixes. -# * Change linux entry so A_PROTECT enables IBM-PC ROM characters. -# 9.4.4 (Mon Mar 27 12:32:35 EST 1995): -# * Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803, -# pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21, -# simterm, citoh and variants. -# * Replaced sol entry with sol1 and sol2. -# * Replaced Qume QVT and Freedom-series entries with purpose-built -# terminfo entries. -# * Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek -# and dg200 entries using caps from from SCO. -# * Added the usual set of function-key mappings to ANSI entry. -# * Corrected xterm's function-key capabilities. -# 9.4.5 (Tue Mar 28 14:27:49 EST 1995): -# * Fix in xterm entry, cub and cud are not reliable under X11R6. -# 9.4.6 (Thu Mar 30 14:52:15 EST 1995): -# * Fix in xterm entry, get the arrow keys right. -# * Change some \0 escapes to \200. -# 9.4.7 (Tue Apr 4 11:27:11 EDT 1995) -# * Added apple (Videx card), adm1a, oadm31. -# * Fixed malformed ampex csr. -# * Fixed act4, cyb110; they had old-style prefix padding left in. -# * Changed mandatory to advisory padding in many entries. -# * Replaced HP entries up to hpsub with purpose-built ones. -# * Blank rmir/smir/rmdc/smdc capabilities removed. -# * Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924. -# 9.4.8 (Fri Apr 7 09:36:34 EDT 199): -# * Replaced the Ann Arbor entries with SCO's, the init strings are -# more efficient (but the entries otherwise identical). -# * Added dg211 from Shuford archive. -# * Added synertek, apple-soroc, ibmpc, pc-venix, pc-coherent, xtalk, -# adm42-nl, pc52, gs6300, xerox820, uts30. -# * Pull SCO's padding into vi200 entry. -# * Improved capabilities for tvi4107 and other Televideo and Viewpoint -# entries merged in from SCO's descriptions. -# * Fixed old-style prefix padding on zen50, h1500. -# * Moved old superbee entry to superbee-xsb, pulled in new superbee -# entry from SCO's description. -# * Reorganized the special entries. -# * Added lm#0 to cbunix and virtual entries. -# -# 9.5.0 (Mon Apr 10 11:30:00 EDT 1995): -# * Restored cdc456tst. -# * Fixed sb1 entry, SCO erroneously left out the xsb glitch. -# * Added megatek, beacon, microkit. -# * Freeze for ncurses-1.9 release. -# 9.5.1 (Fri Apr 21 12:46:42 EDT 1995): -# * Added historical data for TAB. -# * Comment fixes from David MacKenzie. -# * Added the new BSDI pc3 entry. -# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995) -# * A change in the tic -C logic now ensures that all entries in -# the termcap translation will fit in < 1024 bytes. -# * Added `bobcat' and `gator' HP consoles and the Nu machine entries -# from GNU termcap file. This merges in all their local information. -# 9.5.3 (Tue Apr 25 22:28:13 EDT 1995) -# * Changed tic -C logic to dump all capabilities used by GNU termcap. -# * Added warnings about entries with long translations (restoring -# all the GNU termcaps pushes a few over the edge). -# 9.5.4 (Wed Apr 26 15:35:09 EDT 1995) -# * Yet another tic change, and a couple of entry tweaks, to reduce the -# number of long (> 1024) termcap translations back to 0. -# -# 9.6.0 (Mon May 1 10:35:54 EDT 1995) -# * Added kf13-kf20 to Linux entry. -# * Regularize Prime terminal names. -# * Historical data on Synertek. -# * Freeze for ncurses-1.9.1. -# 9.6.1 (Sat May 6 02:00:52 EDT 1995): -# * Added true xterm-color entry, renamed djm's pseudo-color entry. -# * Eliminate whitespace in short name fields, this tanks some scripts. -# * Name field changes to shorten some long entries. -# * Termcap translation now automatically generates empty rmir/smir -# when ich1/ich is present (copes with an ancient vi bug). -# * Added `screen' entries from FSF's screen-3.6.2. -# * Added linux-nic and xterm-nic entries. -# 9.6.2 (Sat May 6 17:00:55 EDT 1995): -# * Change linux entry to use smacs=\E[11m and have an explicit acsc, -# eliminating some special-case code in ncurses. -# -# 9.7.0 (Tue May 9 18:03:12 EDT 1995): -# * Added vt320-k3, rsvidtx from the Emacs termcap.dat file. I think -# that captures everything unique from it. -# * Added reorder script generator. -# * Freeze for ncurses 1.9.2 release. -# 9.7.1 (Thu Jun 29 09:35:22 EDT 1995): -# * Added Sean Farley's kspd, flash, rs1 capabilities for linux. -# * Added Olaf Siebert's corrections for adm12. -# * ansi-pc-color now includes the colors and pairs caps, so that -# entries which use it will inherit them automatically. -# * The linux entry can now recognize the center (keypad 5) key. -# * Removed some junk that found its way into Linux acsc. -# -# 9.8.0 (Fri Jul 7 04:46:57 EDT 1995): -# * Add 50% cut mark as a desperate hack to reduce tic's core usage. -# * xterm doesn't try to use application keypad mode any more. -# * Freeze for ncurses-1.9.3 release. -# 9.8.1 (Thu Jul 19 17:02:12 EDT 1995): -# * Added corrected sun entry from vendor. -# * Added csr capability to linux entry. -# * Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG. -# * Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators. -# * Some commented-out caps in long entries come back in, my code -# for computing string-table lengths had a bug in it. -# * pcansi series modified to fit comm-program reality better. -# 9.8.2 (Sat Sep 9 23:35:00 EDT 1995): -# * BSD/OS actually ships the ibmpc3 bold entry as its console. -# * Correct some bad aliases in the pcansi series -# * Added entry for QNX console. -# * Clean up duplicate long names for use with 4.4 library. -# * Change vt100 standout to be normal reverse vide, not bright reverse; -# this makes the Emacs status line look better. -# 9.8.3 (Sun Sep 10 13:07:34 EDT 1995): -# * Added Adam Thompson's VT320 entries, also his dtx-sas and z340. -# * Minor surgery, mostly on name strings, to shorten termcap version. -# -# 9.9.0 (Sat Sep 16 23:03:48 EDT 1995): -# * Added dec-vt100 for use with the EWAN emulator. -# * Added kmous to xterm for use with xterm's mouse-tracking facility. -# * Freeze for 1.9.5 alpha release. -# 9.9.1 (Wed Sep 20 13:46:09 EDT 1995): -# * Changed xterm lines to 24, the X11R6 default. -# 9.9.2 (Sat Sep 23 21:29:21 EDT 1995): -# * Added 7 newly discovered, undocumented acsc characters to linux -# entry (the pryz{|} characters). -# * ncurses no longer steals A_PROTECT. Simplify linux sgr accordingly. -# * Correct two typos in the xterm entries introduced in 9.9.1. -# * I finally figured out how to translate ko capabilities. Done. -# * Added tvi921 entries from Tim Theisen. -# * Cleanup: dgd211 -> dg211, adm42-nl -> adm42-nsl. -# * Removed mystery tec entry, it was neither interesting nor useful. -# * shortened altos3, qvt203, tvi910+, tvi92D, tvi921-g, tvi955, vi200-f, -# vi300-ss, att505-24, contel301, dm3045, f200vi, pe7000c, vc303a, -# trs200, wind26, wind40, wind50, cdc456tst, dku7003, f110, dg211, -# by making them relative to use capabilities -# * Added cuf1=^L to tvi925 from deleted variant tvi925a. -# * fixed cup in adm22 entry and parametrized strings in vt320-k3. -# * added it#8 to entries that used to have :pt: -- tvi912, vi200, -# ampex80, -# * Translate all home=\E[;H capabilities to home=\E[H, they're -# equivalent. -# * Translate \E[0m -> \E[m in [rs]mso, [rs]mul, and init strings of -# vt100 and ANSI-like terminals. -# 9.9.3 (Tue Sep 26 20:11:15 EDT 1995): -# * Added it#8 and ht=\t to *all* entries with :pt:; the ncurses tic -# does this now, too. -# * fviewpoint is gone, it duplicated screwpoint. -# * Added hp2627, graphos, graphos-30, hpex, ibmega, ibm8514, ibm8514-c, -# ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3, -# versaterm, vi500, vsc, vt131, vt340, vt400 entries from UW. -# The UW vi50 replaces the old one, which becomes vi50adm, -# * No more embedded commas in name fields. -# -# 9.10.0 (Wed Oct 4 15:39:37 EDT 1995): -# * XENIX forms characters in fos, trs16, scoansi become acsc strings, -# * Introduced klone+* entries for describing Intel-console behavior. -# * Linux kbs is default-mapped to delete for some brain-dead reason. -# * -nsl -> -ns. The -pp syntax is obsolete. -# * Eliminate [A-Z]* primaries in accordance with SVr4 terminfo docs. -# * Make xterm entry do application-keypad mode again. I got complaints -# that it was messing up someone's 3270 emulator. -# * Added some longname fields in order to avoid warning messages from -# older tic implementations. -# * According to ctlseqs.ms, xterm has a full vt100 graphics set. Use -# it! (This gives us pi, greater than, less than, and a few more.) -# * Freeze for ncurses-1.9.6 release. -# 9.10.1 (Sat Oct 21 22:18:09 EDT 1995): -# * Add xon to a number of console entries, they're memory-mapped and -# don't need padding. -# * Correct the use dependencies in the ansi series. -# * Hand-translate more XENIX capabilities. -# * Added hpterm entry for HP's X terminal emulator. -# * Added aixterm entries. -# * Shortened four names so everything fits in 14 chars. -# -# 9.11.0 (Thu Nov 2 17:29:35 EST 1995): -# * Added ibcs2 entry and info on iBCS2 standard. -# * Corrected hpa/vpa in linux entry. They still fail the worm test. -# * We can handle the HP meml/memu capability now. -# * Added smacs to klone entries, just as documentation. -# * Carrected ansi.sys and cit-500 entries. -# * Added z39, vt320-k311, v220c, and avatar entries. -# * Make pcansi use the ansi.sys invis capability. -# * Added DIP switch descriptions for vt100, adm31, tvi910, tvi920c, -# tvi925, tvi950, dt80, ncr7900i, h19. -# * X3.64 has been withdrawn, change some references. -# * Removed function keys from ansi-m entry. -# * Corrected ansi.sys entry. -# * Freeze for ncurses-1.9.7 release. -# 9.11.1 (Tue Nov 6 18:18:38 EST 1995): -# * Added rmam/smam capabilities to many entries based on init strings. -# * Added correct hpa/vpa to linux. -# * Reduced several entries relative to vt52. -# 9.11.2 (Tue Nov 7 00:21:06 EST 1995): -# * Exiled some utterly unidentifiable custom and homebrew types to the -# UFO file; also, obsolete small-screen hardware; also, entries which -# look flat-out incorrect, garbled, or redundant. These include the -# following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec, -# tec400, tec500, ubell, wind, wind16, wind40, wind50, plasma, agile, -# apple, bch, daleblit, nucterm, ttywilliams, nuterminal, nu24, bnu, -# fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55, -# yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2, -# vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200, -# trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40, -# att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w, -# tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na, -# c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na, -# regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb, -# vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam, -# vt510pc-nam, vt520nam, vt525nam, xterm25, xterm50, xterm65, xterms. -# * Corrected pcvt25h as suggested by Brian C. Grayson -# . -# 9.11.3 (Thu Nov 9 12:14:40 EST 1995): -# * Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H. -# * Added kent=\EOM to xterm entry. -# -# 9.11.4 (Fri Nov 10 08:31:35 EST 1995): -# * Corrected gigi entry. -# * Restored cuf/cud1 to xterm, their apparent bugginess was due to -# bad hpa/vpa capabilities. -# * Corrected flash strings to have a uniform delay of .2 sec. No -# more speed-dependent NUL-padding! -# * terminfo capabilities in comments bracketed with <>. -# 9.11.5 (Fri Nov 10 15:35:02 EST 1995): -# * Replaced pcvt with the 3.31 pcvt entries. -# * Freeze for 1.9.7a. -# 9.11.6 (Mon Nov 13 10:20:24 EST 1995): -# * Added emu entry from the X11R6 contrib tape sources. -# -# 9.12.0 (Wed Nov 29 04:22:25 EST 1995): -# * Improved iris-ansi and sun entries. -# * More flash string improvements. -# * Corrected wy160 & wy160 as suggested by Robert Dunn -# * Added dim to at386. -# * Reconciled pc3 and ibmpc3 with the BSDI termcap file. Keith says -# he's ready to start using the termcap generated from this one. -# * Added vt102-w, vt220-w, xterm-bold, wyse-vp, wy75ap, att4424m, -# ln03, lno3-w, h19-g, z29a*, qdss. Made vt200 an alias of vt220. -# * Improved hpterm, apollo consoles, fos, qvt101, tvi924. tvi925, -# att610, att620, att630, -# * Changed hazeltine name prefix from h to hz. -# * Sent t500 to the UFI file. -# * I think we've sucked all the juice out of BSDI's termcap file now. -# * Freeze for ncurses 1.9.8 release -# 9.12.1 (Thu Nov 30 03:14:06 EST 1995) -# * Unfreeze, linux kbs needed to be fixed. -# * Tim Theisen pinned down a bug in the DMD firmware. -# 9.12.2 (Thu Nov 30 19:08:55 EST 1995): -# * Fixes to ansi and klone capabilities (thank you, Aaron Ucko). -# (The broken ones had been shadowed by sgr.) -# 9.12.3 (Thu Dec 7 17:47:22 EST 1995): -# * Added documentation on ECMA-48 standard. -# * New Amiga entry. -# 9.12.4 (Thu Dec 14 04:16:39 EST 1995): -# * More ECMA-48 stuff -# * Corrected typo in minix entry, added pc-minix. -# * Corrected khome/kend in xterm (thank you again, Aaron Ucko). -# * Added rxvt entry. -# * Added 1.3.x color-change capabilities to linux entry. -# 9.12.5 (Tue Dec 19 00:22:10 EST 1995): -# * Corrected rxvt entry khome/kend. -# * Corrected linux color change capabilities. -# * NeXT entries from Dave Wetzel. -# * Cleaned up if and rf file names (all in /usr/share now). -# * Changed linux op capability to avoid screwing up a background color -# pair set by setterm. -# 9.12.6 (Wed Feb 7 16:14:35 EST 1996): -# * Added xterm-sun. -# 9.12.7 (Fri Feb 9 13:27:35 EST 1996): -# * Added visa50. -# -# 9.13.0 (Sun Mar 10 00:13:08 EST 1996): -# * Another sweep through the Shuford archive looking for new info. -# * Added dg100 alias to dg6053 based on a comp.terminals posting. -# * Added st52 from Per Persson. -# * Added eterm from the GNU Emacs 19.30 distribution. -# * Freeze for 1.9.9. -# 9.13.1 (Fri Mar 29 14:06:46 EST 1996): -# * FreeBSD console entries from Andrew Chernov. -# * Removed duplicate Atari st52 name. -# 9.13.2 (Tue May 7 16:10:06 EDT 1996) -# * xterm doesn't actually have ACS_BLOCK. -# * Change klone+color setf/setb to simpler forms that can be -# translated into termcap. -# * Added xterm1. -# * Removed mechanically-generated junk capabilities from cons* entries. -# * Added color support to bsdos. -# 9.13.3 (Thu May 9 10:35:51 EDT 1996): -# * Added Wyse 520 entries from Wm. Randolph Franklin . -# * Created ecma+color, linux can use it. Also added ech to linux. -# * Teach xterm about more keys. Add Thomas Dickey's 3.1.2E updates. -# * Add descriptions to FreeBSD console entries. Also shorten -# some aliases to <= 14 chars for portability. -# * Added x68k console -# * Added OTbs to several VT-series entries. -# 9.13.4 (Wed May 22 10:54:09 EDT 1996): -# * screen entry update for 3.7.1 from Michael Alan Dorman. -# 9.13.5 (Wed Jun 5 11:22:41 EDT 1996): -# * kterm correction due to Kenji Rikitake. -# * ACS correction in vt320-kll due to Phillippe De Muyter. -# 9.13.6 (Sun Jun 16 15:01:07 EDT 1996): -# * Sun console entry correction from J.T. Conklin. -# * Changed all DEC VT300 and up terminals to use VT300 tab set -# 9.13.7 (Mon Jul 8 20:14:32 EDT 1996): -# * Added smul to linux entry (we never noticed it was missing -# because of sgr!). -# * Added rmln to hp+labels (deduced from other HP entries). -# * Added vt100 acsc capability to vt220, vt340, vt400, d800, dt80-sas, -# pro350, att7300, 5420_2, att4418, att4424, att4426, att505, vt320-k3. -# * Corrected vt220 acsc. -# * The klone+sgr and klone+sgr-dumb entries now use klone+acs; -# this corresponds to reality and helps prevent some tic warnings. -# * Added sgr0 to c101, pcix, vt100-nav, screen2, oldsun, next, altos2, -# hpgeneric, hpansi, hpsub, hp236, hp700-wy, bobcat, dku7003, adm11, -# adm12, adm20, adm21, adm22, adm31, adm36, adm42, pt100, pt200, -# qvt101, tvi910, tvi921, tvi92B, tvi925, tvi950, tvi970, wy30-mc, -# wy50-mc, wy100, wyse-vp, ampex232, regent100, viewpoint, vp90, -# adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p, -# f1720a, go140, sb1, superbeeic, microb, ibm8512, kt7, ergo4000, -# owl, uts30, dmterm, dt100, dt100, dt110, appleII, apple-videx, -# lisa, trsII, atari, st52, pc-coherent, basis, m2-man, bg2.0, bg1.25, -# dw3, ln03, ims-ansi, graphos, t16, zen30, xtalk, simterm, d800, -# ifmr, v3220, wy100q, tandem653, ibmaed. -# * Added DWK terminal description. -# 9.13.8 (Wed Jul 10 11:45:21 EDT 1996): -# * Many entries now have highlights inherited from adm+sgr. -# * xterm entry now corresponds to XFree86 3.1.2E, with color. -# * xtitle and xtitle-twm enable access to the X status line. -# * Added linux-1.3.6 color palette caps in conventional format. -# * Added adm1178 terminal. -# * Move fos and apollo terminals to obsolete category. -# * Aha! The BRL terminals file told us what the Iris extensions mean. -# * Added, from the BRL termcap file: rt6221, rt6221-w, northstar, -# commodore, cdc721-esc, excel62, osexec. Replaced from the BRL file: -# cit500, adm11. -# 9.13.9 (Mon Jul 15 00:32:51 EDT 1996): -# * Added, from the BRL termcap file: cdc721, cdc721l, cdc752, cdc756, -# aws, awsc, zentec8001, modgraph48, rca vp3301/vp3501, ex155. -# * Corrected, from BRL termcap file: vi50. -# * Better rxvt entry & corrected xterm entries from Thomas Dickey. -# 9.13.10 (Mon Jul 15 12:20:13 EDT 1996): -# * Added from BRL: cit101e & variants, hmod1, vi200, ansi77, att5620-1, -# att5620-s, att5620-s, dg210, aas1901, hz1520, hp9845, osborne -# (old osborne moved to osborne-w), tvi970-vb, tvi970-2p, tvi925-hi, -# tek4105brl, tek4106brl, tek4107brl,tek4109brl, hazel, aepro, -# apple40p, apple80p, appleIIgs, apple2e, apple2e-p, apple-ae. -# * Paired-attribute fixes to various terminals. -# * Sun entry corrections from A. Lukyanov & Gert-Jan Vons. -# * xterm entry corrections from Thomas Dickey. -# 9.13.11 (Tue Jul 30 16:42:58 EDT 1996): -# * Added t916 entry, translated from a termcap in SCO's support area. -# * New qnx entry from Michael Hunter. -# 9.13.12 (Mon Aug 5 14:31:11 EDT 1996): -# * Added hpex2 from Ville Sulko. -# * Fixed a bug that ran the qnx and pcvtXX together. -# 9.13.13 (Fri Aug 9 01:16:17 EDT 1996): -# * Added dtterm entry from Solaris CDE. -# 9.13.14 (Tue Sep 10 15:31:56 EDT 1996): -# * corrected pairs#8 typo in dtterm entry. -# * added tvi9065. -# 9.13.15 (Sun Sep 15 02:47:05 EDT 1996): -# * updated xterm entry to cover 3.1.2E's new features. -# 9.13.16 (Tue Sep 24 12:47:43 EDT 1996): -# * Added new minix entry -# * Removed aliases of the form ^[0-9]* for obsolete terminals. -# * Commented out linux-old, nobody's using pre-1.2 kernels now. -# 9.13.17 (Fri Sep 27 13:25:38 EDT 1996): -# * Added Prism entries and kt7ix. -# * Caution notes about EWAN and tabset files. -# * Changed /usr/lib/tabset -> /usr/share/tabset. -# * Added acsc/rmacs/smacs to vt52. -# 9.13.18 (Mon Oct 28 13:24:59 EST 1996): -# * Merged in Thomas Dickey's reorganization of the xterm entries; -# added technical corrections to avoid warning messages. -# 9.13.19 (Sat Nov 16 16:05:49 EST 1996): -# * Added rmso=\E[27m in Linux entry. -# * Added koi8-r support for Linux console. -# * Replace xterm entries with canonical ones from XFree86 3.2. -# 9.13.20 (Sun Nov 17 23:02:51 EST 1996): -# * Added color_xterm from Jacob Mandelson -# 9.13.21 (Mon Nov 18 12:43:42 EST 1996): -# * Back off the xterm entry to use r6 as a base. -# 9.13.22 (Sat Nov 30 11:51:31 EST 1996): -# * Added dec-vt220 at Adrian Garside's request. -# -#-(original-changelog-1996/12/29-to-1998/02/28-by-TD)--------------------------- -# -# 10.1.0 (Sun Dec 29 02:36:31 EST 1996): withdrawn -# * Minor corrections to xterm entries. -# * Replaced EWAN telnet entry. -# * Dropped the reorder script generator. It was a fossil. -# 9.13.23 (Fri Feb 21 16:36:06 EST 1997): -# * Replaced minitel-2 entry. -# * Added MGR, ansi-nt. -# 9.13.24 (Sun Feb 23 20:55:23 EST 1997): -# * Thorsten Lockert added termcap `bs' to a lot of types, working from -# the 4.4BSD Lite2 file. -# -# 10.1.1 (Sat May 3 21:41:27 EDT 1997): -# * Use setaf/setab consistently with SVr4. -# * Remove ech, el1 from cons25w, they do not work in FreeBSD 2.1.5 -# 10.1.2 (Sat May 24 21:10:57 EDT 1997) -# * update xterm-xf86-v32 to match XFree86 3.2A (changes F1-F4) -# * add xterm-16color, for XFree86 3.3 -# 10.1.3 (Sat May 31 12:21:05 EDT 1997) -# * correct typo in emu -# * correct typo in vt102-w (Robert Wuest) -# * make new entry xterm-xf86-v33, restored xterm-xf86-v32. -# 10.1.4 (Sun Jun 15 08:29:05 EDT 1997) -# * remove ech capability from rxvt (it does the wrong thing) -# 10.1.5 (Sat Jun 28 21:34:36 EDT 1997) -# * remove spurious newlines from several entries (hp+color, wy50, -# wy350, wy370-nk, wy99gt-tek, wy370-tek, ibm3161, tek4205, ctrm, -# gs6300) -# 10.1.6 (Sat Jul 5 15:08:16 EDT 1997) -# * correct rmso capability of wy50-mc -# 10.1.7 (Sat Jul 12 20:05:55 EDT 1997) -# * add cbt to xterm-xf86-v32 -# * disentangle some entries from 'xterm', preferring xterm-r6 in case -# 'xterm' is derived from xterm-xf86-v32, which implements ech and -# other capabilities not in xterm-r6. -# * remove alternate character set from kterm entry. -# 10.1.8 (Sat Aug 2 18:43:18 EDT 1997) -# * correct acsc entries for ACS_LANTERN, which is 'i', not 'I'. -# 10.1.9 (Sat Aug 23 17:54:38 EDT 1997) -# * add xterm-8bit entry. -# 10.1.10 (Sat Oct 4 18:17:13 EDT 1997) -# * repair several places where early version of tic replaced \, with \\\, -# * make acsc entries canonical form (sorted, uniq). -# * modify acsc entries for linux, linux-koi8 -# * new rxvt entry, from corrected copy of distribution in rxvt 2.21b -# * add color, mouse support to kterm. -# 10.1.11 (Sat Oct 11 14:57:10 EDT 1997) -# * correct wy120 smxon/tbc capabilities which were stuck together. -# 10.1.12 (Sat Oct 18 17:38:41 EDT 1997) -# * add entry for xterm-xf86-v39t -# 10.1.13 (Sat Nov 8 13:43:33 EST 1997) -# * add u8,u9 to sun-il description -# 10.1.14 (Sat Nov 22 19:59:03 EST 1997) -# * add vt220-js, pilot, rbcomm, datapoint entries from esr's 27-jun-97 -# version. -# * add hds200 description (Walter Skorski) -# * add EMX 0.9b descriptions -# * correct rmso/smso capabilities in wy30-mc and wy50-mc (Daniel Weaver) -# * rename xhpterm back to hpterm. -# 10.1.15 (Sat Nov 29 19:21:59 EST 1997) -# * change initc in linux-c-nc to use 0..1000 range. -# 10.1.16 (Sat Dec 13 19:41:59 EST 1997) -# * remove hpa/vpa from rxvt, which implements them incorrectly. -# * add sgr0 for rxvt. -# * remove bogus smacs/rmacs from EMX descriptions. -# 10.1.17 (Sat Dec 20 17:54:10 EST 1997) -# * revised entry for att7300 -# 10.1.18 (Sat Jan 3 17:58:49 EST 1998) -# * use \0 rather than \200. -# * rename rxvt-color to rxvt to match rxvt 2.4.5 distribution. -# 10.1.19 (Sat Jan 17 14:24:57 EST 1998) -# * change xterm (xterm-xf86-v40), xterm-8bit rs1 to use hard reset. -# * rename xterm-xf86-v39t to xterm-xf86-v40 -# * remove bold/underline from sun console entries since they're not -# implemented. -# 10.1.20 (Sat Jan 24 11:02:51 EST 1998) -# * add beterm entry (Fred Fish) -# * add irix-color/xwsh entry. -# * turn ncv off for linux. -# 10.1.21 (Sat Jan 31 17:39:16 EST 1998) -# * set ncv for FreeBSD console (treat colors with reverse specially). -# * remove sgr string from qnx based on report by Xiaodan Tang -# 10.1.22 (Wed Feb 11 18:40:12 EST 1998) -# * remove spurious commas from descriptions -# * correct xterm-8bit to match XFree86 3.9Ad F1-F4. -# 10.1.23 (Sat Feb 28 17:48:38 EST 1998) -# * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc, -# apparently based on cp-866). -# -#-(replaced-changelog-1998/02/28-by-ESR)---------------------------------------- -# -# 9.13.23 (Fri Feb 21 16:36:06 EST 1997): -# * Replaced minitel-2 entry. -# * Added MGR, ansi-nt. -# * Minor corrections to xterm entries. -# * Replaced EWAN telnet entry. -# * Dropped the reorder script generator. It was a fossil. -# 9.13.24 (Sun Feb 23 20:55:23 EST 1997): -# * Thorsten Lockert added termcap `bs' to a lot of types, working from -# the 4.4BSD Lite2 file. -# 9.13.25 (Fri Jun 20 12:33:36 EDT 1997): -# * Added Datapoint 8242, pilot, ansi_psx, rbcomm, vt220js. -# * Updated iris-ansi; corrected vt102-w. -# * Switch base xterm entry to 3.3 level. -# 9.13.26 (Mon Jun 30 22:45:45 EDT 1997) -# * Added basic4. -# * Removed rmir/smir from tv92B. -# -# 10.2.0 (Sat Feb 28 12:47:36 EST 1998): -# * add hds200 description (Walter Skorski) -# * add beterm entry (Fred Fish) -# * add Thomas Dickey's xterm-xf86-v40, xterm-8bit, xterm-16color, -# iris-color entries. -# * add emx entries. -# * Replaced unixpc entry with Benjamin Sittler's corrected version. -# * Replaced xterm/rxvt/emu/syscons entries with Thomas Dickey's -# versions. -# * remove sgr string from qnx based on report by Xiaodan Tang -# * Added u8/u9, removed rmul/smul from sun-il. -# * 4.2 tic displays \0 rather than \200. -# * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc, -# apparently based on cp-866). -# * Merged in Pavel Roskin's acsc for linux-koi8 -# * Corrected some erroneous \\'s to \. -# * 4.2 ncurses has been changed to use setaf/setab, consistent w/SysV. -# * II -> ii in pcvtXX, screen, xterm. -# * Removed \n chars following ANSI escapes in sgr & friends. -# * Updated Wyse entries. -# * h19 corrections from Tim Pierce. -# * Noted that the dm2500 has both ich and smir. -# * added pccons for the Alpha under OSF/1. -# * Added Sony NEWS workstation entries and cit101e-rv. -# * Reverted `amiga'; to Kent Polk's version, as I'm told -# the Verkuil entry messes up with Amiga Telnet. -# 10.2.1 (Sun Mar 8 18:32:04 EST 1998): -# * Corrected attributions in 10.2.0 release notes. -# * Scanned the Shuford archive for new terminfos and information. -# * Removed sgr from qnx entry (Thomas Dickey). -# * Added entries for ICL and Kokusai Data Systems terminals. -# * Incorporated NCR terminfos from the Boundless Technology FTP site. -# * Incorporated att700 from the Boundless Technology FTP site. -# * Miscellaneous contact-address and Web-page updates. -# -#-(changelog-beginning-ncurses-4.2)--------------------------------------------- -# -# 1998/5/9 -# * add nxterm and xterm-color terminfo description (request by Cristian -# Gafton ). -# * modify rxvt terminfo description to clear alternate screen before -# switching back to normal screen, for compatibility with applications -# which use xterm (reported by Manoj Kasichainula ). -# * modify linux terminfo description to reset color palette (reported -# by Telford Tendys ). -# -# 1998/7/4 -# * merge changes from current XFree86 xterm terminfo descriptions. -# -# 1998/7/25 -# * Added minitel1 entries from Alexander Montaron. -# * Added qnxt2 from Federico Bianchi. -# * Added arm100 terminfo entries from Dave Millen. -# -# 1998/8/6 -# * Added ncsa telnet entries from Francesco Potorti -# -# 1998/8/15 -# * modify ncsa telnet entry to reflect color, other capabilities based on -# examination of the source code - T.Dickey. -# -# 1998/8/22 -# * Corrected some erroneous \\'s to \ (eterm, osborne) - TD. -# -# 1998/8/29 -# * Added Francesco Potorti's tuned Wyse 99 entries. -# * dtterm enacs correction from Alexander V. Lukyanov. -# * Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version. -# * correct a typo in icl6404 entry. -# * add xtermm and xtermc -# -# 1998/9/26 -# * format most %'char' sequences to %{number} -# * adapt IBM AIX 3.2.5 terminfo - T.Dickey -# * merge Data General terminfo from Hasufin - TD -# -# 1998/10/10 -# * update xterm-xfree86 to current (patch 84), for is2/rs2 changes - TD -# * correct initialization string in xterm-r5, add misc other features -# to correspond with xterm patch 84 - TD -# -# 1998/12/19 -# * update xterm-xfree86 to current (patch 90), smcur/rmcur changes - TD -# * add Mathew Vernon's mach console entries -# * corrections for ncsa function-keys (report by Larry Virden) -# -# 1998/12/19 -# * change linux to use ncv#2, since underline does not work with color - TD -# -# 1999/1/9 -# * add kbt to iris-ansi, document other shift/control functionkeys - TD -# * correct iris-ansi and iris-ansi-ap with respect to normal vs keypad -# application modes, change kent to use the correct keypad code - TD -# -# 1999/1/10 -# * add entry for Tera Term - TD -# -# 1999/1/23 -# * minor improvements for teraterm entry - TD -# * rename several entries used by BSDI: bsdos to bsdos-pc-nobold, -# and bsdos-bold to bsdos-pc (Jeffrey C Honig) -# -# 1999/2/20 -# * resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in -# xterm and ncsa entries by removing the unneeded ones. Note that -# some entries will return kend & khome versus kslt and kfnd, for -# PC-style keyboards versus strict vt220 compatiblity - TD -# -# 1999/3/13 -# * adjust xterm-xfree86 khome/kend to match default PC-style keyboard -# tables - TD -# * add 'crt' entry - TD -# * correct typos in 'linux-c' entry - TD -# -# 1999/3/14 -# * update entries for BSD/OS console to use klone+sgr and klone+color -# (Jeffrey C Honig) -# -# 1999/3/27 -# * adjust xterm-xfree86 miscellaneous keypad keys, as per patch #94 - TD. -# -# 1999/4/10 -# * add linux-lat, from RedHat patches to ncurses 4.2 -# -# 1999/4/17 -# * add complete set of default function-key definitions for scoansi - TD. -# -# 1999/7/3 -# * add cnorm, cvvis for Linux 2.2 kernels -# -# 1999/7/24 -# * add kmous to xterm-r5 -TD -# * correct entries xterm+sl and xterm+sl-twm, which were missing the -# parent "use" clause -TD -# -# 1999/7/31 -# * corrected cnorm, added el1 in 'screen' description -TD -# -# 1999/8/14 -# * add ms-vt100 -TD -# -# 1999/8/21 -# * corrections to beterm entry -TD -# -# 1999/8/28 -# * add cygwin entry -TD -# -# 1999/9/4 -# * minor corrections for beterm entry -TD -# -# 1999/9/18 -# * add acsc string to HP 70092 terminfo entry -Joerg Wunsch -# -# 1999/9/25 -# * add amiga-8bit entry -# * add console entries from NetBSD: ofcons, wsvt25, wsvt25m, rcons, -# rcons-color, based on -# ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/termcap/termcap.src -# * add alias for iris-ansi-net -# -# 1999/10/2 -# * corrected scoansi entry's acsc, some function keys, add color -TD -# -# 1999/10/23 -# * add cnorm, cvvis to cons25w, and modify ncv to add 'dim' -TD -# * reorder ncsa entries to make ncsa-vt220 use the alternate function -# key mapping, leaving Potorti's entries more like he named them -TD -# * remove enter/exit am-mode from cygwin -TD -# -# 1999/10/30 -# * correct typos in several entries (missing '[' from CSI): -# mgr-sun, ncsa-m, vt320-k3, att505, avt-ns, as well as smir/rmir -# strings for avt-ns -TD -# * add 'dim' to ncv mask for linux (report by Klaus Weide). -# -# 1999/11/27 -# * correct kf1-kf4 in xterm-r6 which were vt100-style PF1-PF4 -TD -# * add hts to xterm-r6, and u6-u9 to xterm-r5 -TD -# * add xterm-88color and xterm-256color -TD -# -# 1999/12/4 -# * add "obsolete" termcap strings -TD -# * add kvt and gnome entries -TD -# -# 1999/12/11 -# * correct cup string for regent100 -TD -# -# 2000/1/1 -# * update mach, add mach-color based on Debian diffs for ncurses 5.0 -TD -# * add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp -TD -# * change OTrs capabilities to rs2 -TD -# * add obsolete and extended capabilities to 'screen' -TD -# -# 2000/1/5 -# * remove kf0 from rxvt, vt520, vt525 and ibm5151 since it conflicts -# with kf10 -TD -# * updated xterm-xf86-v40, making kdch1 correspond to vt220 'Remove', -# and adding kcbt -TD -# -# 2000/1/12 -# * remove incorrect khome/kend from xterm-xf86-v333, which was based on -# nonstandard resource settings -TD -# -# 2000/2/26 -# * minor fixes for xterm-*, based on Debian #58530 -TD -# -# 2000/3/4 -# * add several terminal types from esr's "11.0", as well as comments. -# bq300*, dku7102-old, dku7202, hft, lft, pcmw, pmcons, tws*, vip*, -# vt220-8bit, vt220-old, wy85-8bit -# -# 2000/3/18 -# * add several terminal types from esr's "11.0.1" (ansi-*). -# * update OTxx capabilities for changes on 2000/3/4. -# * revert part of vt220 change (request by Todd C Miller for OpenBSD) -# -# 2000/3/26 -# * move screen's AX extension to ecma+color, modify several entries to -# use that, adjusting ncv as needed -TD -# -# 2000/4/8 -# * add bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig) -# * correct spelling error in entry name: bq300-rv was given as bg300-rv -# in esr's version. -# -# 2000/4/15 -# * add cud, ech, etc., to beterm based on feedback from Rico Tudor -TD -# * correct color definition for ibm3164, make minor changes to other -# IBM terminal definitions based on recent terminfo descriptions -TD -# -# 2000/4/22 -# * 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 -# -# 2000/5/13 -# * remove ncv from xterm-16color, xterm-256color -# -# 2000/6/10 -# * add kmous capability to linux to use Joerg Schoen's gpm patch. -# -# 2000/7/1 -# * add Eterm (Michael Jennings) -# -# 2000-07-18 -# * add amiga-vnc entry. -# -# 2000-08-12 -# * correct description of Top Gun Telnet. -# * add kterm-color -# -# 2000-08-26 -# * add qansi* entries from QNX ftp site. -# -# 2000-09-16 -# * add Matrix Orbital entries by Eric Z. Ayers). -# * add xterm-basic, xterm-sco entries, update related entries to XFree86 -# 4.0.1c -TD -# -# 2000-09-17 -# * add S0, E0 extensions to screen's entry -TD -# -# 2000-09-23 -# * several corrections based on tic's new parameter-checking code -TD -# * modify xterm-r6 and similar rs2 sequences which had \E7...\E8 -# bracketing sequences that reset video attributes (\E8 would restore -# them) -TD -# -# 2000-11-11 -# * rename cygwin to cygwinB19, adapt newer entry from Earnie Boyd -TD -# -# 2000-12-16 -# * improved scoansi, based on SCO man-page, and testing console, -# scoterm with tack -TD -# -# 2001-01-27 -# * modify kterm to use acsc via SCS controls. -# -# 2001-02-10 -# * screen 3.9.8 allows xterm mouse controls to pass-through -# -# 2001-03-11 -# * remove spurious "%|" from some xterm entries. -# -# 2001-03-31 -# * modify 'screen' khome/kend to match screen 3.09.08 -# * add examples of 'screen' customization (screen.xterm-xfree86, -# screen.xterm-r6, screen.teraterm) -TD -# -# 2001-04-14 -# * correct definitions of shifted editing keys for xterm-xfree86 -TD -# * add "Apple_Terminal" entries -Benjamin Sittler -# * remove time-delays from "Apple_Terminal" entries -TD -# * make sgr entries time-delays consistent with individual caps -TD -# -# 2001-05-05 -# * corrected/updated screen.xterm-xfree86 -# -# 2001-05-19 -# * ELKS descriptions, from Federico Bianchi -# * add u6 (CSR) to Eterm (Michael Jennings). -# -# 2001-07-21 -# * renamed "Apple_Terminal" entries to "nsterm" to work with Solaris's -# tic which handles names no longer than 14 characters. Add -# corresponding descriptions for the Darwin PowerPC console named -# "xnuppc" -Benjamin Sittler -# -# 2001-09-01 -# * change kbs in mach entries to ^? (Marcus Brinkmann). -# -# 2001-11-17 -# * add "putty" entry -TD -# * updated "Apple_Terminal" entries -Benjamin Sittler -# -# 2001-11-24 -# * add ms-vt100-color entry -TD -# * add "konsole" entries -TD -# -# 2001-12-08 -# * update gnome entry to Redhat 7.2 -TD -# -# 2002-05-25 -# * add kf13-kf48 strings to cons25w -TD -# * add pcvt25-color entry -TD -# * changed a few /usr/lib/tabset -> /usr/share/tabset. -# * improve some features of scoansi entry based on SCO's version -TD -# * add scoansi-new entry corresponding to OpenServer 5.0.6 -# -# 2002-06-15 -# * add kcbt to screen entry -TD -# -# 2002-06-22 -# * add rxvt-16color, ibm+16color, mvterm entries -TD -# -# 2002-09-28 -# * split out linux-basic entry, making linux-c inherit from that, and -# in turn linux (with cnorm, etc) inherit from linux-c-nc to reflect -# the history of this console type -TD -# * scaled the linux-c terminfo entry to match linux-c-nc, i.e., the -# r/g/b parameters of initc are in the range 0 to 1000 -TD -# -# 2002-10-05 -# * minor fix for scale-factor of linux-c and linux-c-nc -TD -# -# 2002-11-09 -# * split-out vt100+keypad and vt220+keypad, fix interchanged ka3/kb2 -# in the latter -TD -# -# 2002-11-16 -# * add entries for mterm (mterm, mterm-ansi, decansi) -TD -# * ncr260wy350pp has only 16 color pairs -TD -# * add sun-type4 from NetBSD -TD -# * update xterm-xfree86 to current (patch 170) -TD -# * add screen-bce, screen-s entries -TD -# * add xterm-1002, xterm-1003 entries -TD -# -# 2003-01-11 -# * update homepage for Top Gun Telnet/SSH -# -# 2003-01-25 -# * reduce duplication in emx entries, added emx-base -TD -# -# 2003-05-24 -# * corrected acs for screen.teraterm -TD -# * add tkterm entry -TD -# -# 2003-07-15 -# * cygwin changes from Charles Wilson: -# misc/terminfo.src (nxterm|xterm-color): make xterm-color -# primary instead of nxterm, to match XFree86's xterm.terminfo -# usage and to prevent circular links. -# (rxvt): add additional codes from rxvt.org. -# (rxvt-color): new alias -# (rxvt-xpm): new alias -# (rxvt-cygwin): like rxvt, but with special acsc codes. -# (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or -# with a "native" MSWin GUI. Each takes different acsc codes, -# which are both different from the "normal" rxvt's acsc. -# (cygwin): cygwin-in-cmd.exe window. Lots of fixes. -# (cygwinDBG): ditto. -# -# 2003-09-27 -# * update gnome terminal entries -TD -# -# 2003-10-04 -# * add entries for djgpp 2.03 and 2.04 -TD -# -# 2003-10-25 -# * add alias for vtnt -TD -# * update xterm-xfree86 for XFree86 4.4 -TD -# -# 2003-11-22 -# * add linux-vt (Andrey V Lukyanov) -# -# 2003-12-20 -# * add screen.linux -TD -# -# 2004-01-10 -# * revised/improved entries for tvi912b, tvi920b (Benjamin Sittler) -# -# 2004-01-17 -# * add OpenNT/Interix/SFU entries (Federico Bianchi) -# * add vt100+ and vt-utf8 entries -TD -# * add uwin entry -TD -# -# 2004-03-27 -# * add sgr strings to several common entries lacking them, e.g., -# screen, to make the entries more portable -TD -# * remove cvvis from rxvt entry, since it is the same as cnorm -TD -# * similar fixups for cvvis/cnorm various entries -TD -# -# 2004-05-22 -# * remove 'ncv' from xterm-256color (patch 188) -TD -# -# 2004-06-26 -# * add mlterm -TD -# * add xterm-xf86-v44 -TD -# * modify xterm-new aka xterm-xfree86 to accommodate luit, which relies -# on G1 being used via an ISO-2022 escape sequence (report by -# Juliusz Chroboczek) -TD -# * add 'hurd' entry -TD -# -# 2004-07-03 -# * make xterm-xf86-v43 derived from xterm-xf86-v40 rather than -# xterm-basic -TD -# * align with xterm #192's use of xterm-new -TD -# * update xterm-new and xterm-8bit for cvvis/cnorm strings -TD -# * make xterm-new the default "xterm" -TD -# -# 2004-07-10 -# * minor fixes for emu -TD -# * add emu-220 -# * add rmam/smam to linux (Trevor Van Bremen) -# * change wyse acsc strings to use 'i' map rather than 'I' -TD -# * fixes for avatar0 -TD -# * fixes for vp3a+ -TD -# -# 2004-07-17 -# * add xterm-pc-fkeys -TD -# * review/update gnome and gnome-rh90 entries (prompted by -# Redhat Bugzilla #122815) -TD -# * review/update konsole entries -TD -# * add sgr, correct sgr0 for kterm and mlterm -TD -# * correct tsl string in kterm -TD -# -# 2004-07-24 -# * make ncsa-m rmacs/smacs consistent with sgr -TD -# * add sgr, rc/sc and ech to syscons entries -TD -# * add function-keys to decansi -TD -# * add sgr to mterm-ansi -TD -# * add sgr, civis, cnorm to emu -TD -# * correct/simplify cup in addrinfo -TD -# * corrections for gnome and konsole entries -# (Redhat Bugzilla #122815) -Hans de Goede -# * modify DEC entries (vt220, etc), to add sgr string, and to use -# ISO-2022 strings for rmacs/smacs -TD -# -# 2004-07-31 -# * rename xterm-pc-fkeys to xterm+pcfkeys -TD -# -# 2004-08-07 -# * improved putty entry -Robert de Bath -# -# 2004-08-14 -# * remove dch/dch1 from rxvt because they are implemented inconsistently -# with the common usage of bce/ech -TD -# * remove khome from vt220 (vt220's have no home key) -TD -# * add rxvt+pcfkeys -TD -# -# 2004-08-21 -# * modify several entries to ensure xterm mouse and cursor visibility -# are reset in rs2 string: hurd, putty, gnome, konsole-base, mlterm, -# Eterm, screen. (The xterm entries are left alone - old ones for -# compatibility, and the new ones do not require this change) -TD -# -# 2004-08-28 -# * add morphos entry -Pavel Fedin -# * modify amiga-8bit to add khome/kend/knp/kpp -Pavel Fedin -# * corrected \E[5?l to \E[?5l in vt320 entries -TD -# -# 2004-11-20 -# * update wsvt25 entry -TD -# -# 2005-01-29 -# * update pairs for xterm-88color and xterm-256color to reflect the -# ncurses extended-color support -TD -# -# 2005-02-26 -# * modify sgr/sgr0 in xterm-new to improve tgetent's derived "me" -TD -# * add aixterm-16color to demonstrate 16-color capability -TD -# -# 2005-04-23 -# * add media-copy to vt100 -TD -# * corrected acsc string for vt52 -TD -# -# 2005-04-30 -# * add kUP, kDN (user-defined shifted up/down arrow) definitions for -# xterm-new -TD -# * add kUP5, kUP6, etc., for xterm-new and rxvt -TD -# -# 2005-05-07 -# * re-corrected acsc string for vt52 -TD -# -# 2005-05-28 -# * corrected sun-il sgr string which referred to bold and underline -TD -# * add sun-color entry -TD -# -# 2005-07-23 -# * modify sgr0 in several entries to reset alternate-charset as in the -# sgr string -TD -# * modify sgr string of prism9 to better match the individual -# attributes -TD -# -# 2005-10-15 -# * correct order of use= in rxvt-basic -TD -# -# 2005-10-26 -# * use kind/kri as shifted up/down cursor keys for xterm-new -TD -# -# 2005-11-12 -# * other minor fixes to cygwin based on tack -TD -# * correct smacs in cygwin (report by Baurzhan Ismagulov). -# -# 2006-02-18 -# * add nsterm-16color entry -TD -# * remove ncv flag from xterm-16color -TD -# * remove setf/setb from xterm-256color to match xterm #209 -TD -# * update mlterm entry to 2.9.2 -TD -# -# 2006-02-25 -# * fixes to make nsterm-16color match report -# by Christian Ebert -Alain Bench -# -# 2006-04-22 -# * add xterm+256color building block -TD -# * add gnome-256color, putty-256color, rxvt-256color -TD -# -# 2006-05-06 -# * add hpterm-color -TD -# -# 2006-06-24 -# * add xterm+pcc0, xterm+pcc1, xterm+pcc2, xterm+pcc3 -TD -# * add gnome-fc5 (prompted by GenToo #122566) -TD -# * remove obsolete/misleading comments about kcbt on Linux -Alain Bench -# * improve xterm-256color by combining the ibm+16color setaf/setab -# strings with SGR 48. The setf/setb strings also are cancelled here -# rather than omitted so derived entries will cancel those also -Alain -# Bench -# -# 2006-07-01 -# * add some notes regarding copyright to terminfo.src -TD -# * use rxvt+pcfkeys in Eterm -TD -# * remove km and flash from gnome, Eterm and rxvt since they do not work -# as one would expect (km sends ESC rather than setting the 8th bit -# of the key) -TD -# * add/use ansi+enq, vt100+enq and vt102+enq -TD -# * add konsole-solaris -TD -# -# 2006-07-22 -# * update xterm-sun and xterm-sco entries to match xterm #216 -TD -# * modify is2/rs2 strings for xterm-r6 as per fix in xterm #148 -TD -# * modify xterm-24 to inherit from "xterm" -TD -# * add xiterm entry -TD -# * add putty-vt100 entry -TD -# * corrected spelling of Michael A Dorman's name, prompted by -# http://www.advogato.org/person/mdorman/diary.html -TD -# -# 2006-08-05 -# * add xterm+pcf0, xterm+pcf2 from xterm #216 -TD -# * update xterm+pcfkeys to match xterm #216 -TD -# -# 2006-08-17 -# * make descriptions of xterm entries consistent with its terminfo -TD -# -# 2006-08-26 -# * add xfce, mgt -TD -# -# 2006-09-02 -# * correct acsc string in kterm -TD -# -# 2006-09-09 -# * add kon entry -TD -# * remove invis from linux and related entries, add klone+sgr8 for those -# that implement the feature (or have not been shown to lack it) -TD -# -# 2006-09-23 -# * add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD -# * minor improvements to rxvt+pcfkeys -TD -# -# 2006-09-30 -# * fix a few typos in if/then/else expressions -TD -# -# 2006-10-07 -# * add several GNU Screen variations with 16- and 256-colors, and -# status line (Alain Bench). -# -# 2007-03-03 -# * add Newbury Data entries (Jean-Charles Billaud). -# -# 2007-06-10 -# * corrected xterm+pcf2 modifiers for F1-F4, match xterm #226 -TD -# -# 2007-07-14 -# * restore section of pre-ncurses-4.2 changelog to fix attribution -TD -# * add konsole-256color entry -TD -# -# 2007-08-18 -# * add 9term entry (request by Juhapekka Tolvanen) -TD -# -# 2007-10-13 -# * correct kIC in rxvt+pcfkeys (prompted by Debian #446444) -TD -# * add shift-control- and control-modified keys for rxvt editing -# keypad -TD -# * update mlterm entry to 2.9.3 -TD -# * add mlterm+pcfkeys -TD -# -# 2007-10-20 -# * move kLFT, kRIT, kind and kri capabilities from xterm-new to -# xterm+pcc0, etc., to make the corresponding building blocks reflect -# xterm's capabilities -TD -# * add mrxvt entry -TD -# * add xterm+r6f2, use in mlterm and mrxvt entries -TD -# -# 2007-11-03 -# * correct acsc strings for h19 and z100 (Benjamin Sittler) -# -# 2007-11-11 -# * use xterm-xf86-v44 for "xterm-xfree86", reflecting changes to -# xterm starting with patch #216 -TD -# * make legacy xterm entries such as xterm-24 inherit from xterm-old, -# to match xterm #230 -TD -# * extend xterm+pccX entries to match xterm #230 -TD -# * add xterm+app, xterm+noapp, from xterm #230 -TD -# * add/use xterm+pce2 from xterm #230, in xterm+pcfkeys -TD -# -# 2008-04-19 -# * add screen.rxvt -TD -# -# 2008-04-28 -# * add screen+fkeys (prompted by Debian # 478094) -TD -# -# 2008-06-28 -# * add screen.mlterm -TD -# * improve mlterm and mlterm+pcfkeys -TD -# -# 2008-08-23 -# * add Eterm-256color, Eterm-88color -TD -# * add rxvt-88color -TD -# -# 2008-10-12 -# * add teraterm4.59 entry, use that as primary teraterm entry, rename -# original to teraterm2.3 -TD -# * update "gnome" to 2.22.3 -TD -# * update "konsole" to 1.6.6 -TD -# * add "aterm" -TD -# * add "linux2.6.26" -TD -# -# 2008-11-15 -# * change several \E[2g (clear tab at current column) to \E[3g -# (clear all tabs) to match definition for tbc capability -TD -# -# 2008-11-29 -# * add eterm-color -TD -# -# 2009-01-10 -# * add screen.Eterm -TD -# -# 2009-03-28 -# * correct typo in pfkey of ansi.sys-old -# (report by Kalle Olavi Niemitalo) -# * move function- and cursor-keys from emx-base to ansi.sys, and create -# a pfkey capability which handles F1-F48 -TD -# -# 2009-05-02 -# * add vwmterm entry (Bryan Christ) -# -# 2009-09-19 -# * change ncv and op capabilities in sun-color to match Sun's entry for -# this (report by Laszlo Peter) -# * improve interix smso by using reverse rather than bold (report by -# Kristof Zelechovski). -# -# 2009-10-03 -# * remove unnecessary kcan assignment to ^C from putty (Sven Joachim) -# * add linux-16color (Benjamin Sittler) -# * correct initc capability of linux-c-nc end-of-range (Benjamin Sittler) -# * similar change for dg+ccc and dgunix+ccc (Benjamin Sittler) -# * add ccc and initc capabilities to xterm-16color -TD -# -# 2009-10-31 -# * updated nsterm* entries (Benjamin Sittler, prompted by GenToo #206201) -# -# 2009-12-12 -# * updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta) -# -# 2009-12-12 -# * add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler) -# * rename minix to minix-1.7, add minix entry for Minux3 -TD -# -# 2009-12-26 -# * add bterm (bogl 0.1.18) -TD -# * minor fix to rxvt+pcfkeys -TD -# -# 2010-02-06 -# * update mrxvt to 0.5.4, add mrxvt-256color -TD -# -# 2010-02-13 -# * add several screen-bce.XXX entries -TD -# -# 2010-02-23 -# * modify screen-bce.XXX entries to exclude ech, since screen's color -# model does not clear with color for that feature -TD -# -# 2010-03-20 -# * rename atari and st52 to atari-old, st52-old, use newer entries from -# FreeMiNT by Guido Flohr (from patch/report by Alan Hourihane). -# -# 2010-06-12 -# * add mlterm+256color entry -TD -# -# 2010-07-17 -# * add hard-reset for rs2 to wsvt25 to help ensure that reset ends -# the alternate character set (patch by Nicholas Marriott) -# -# 2010-08-28 -# * improve acsc for vt52 (Benjamin Sittler) -# * modify nsterm entries for consistent sgr/sgr0 -TD -# * modify xnuppc entries for consistent sgr/sgr0 -TD -# * add invis to tek4115 sgr -TD -# -# 2010-09-11 -# * reformat acsc strings to canonical format -TD -# -# 2010-09-25 -# * add "XT" capability to entries for terminals that support both -# xterm-style mouse- and title-controls, for "screen" which -# special-cases TERM beginning with "xterm" or "rxvt" -TD -# -# 2010-10-02 -# * fill in no-parameter forms of cursor-movement where a parameterized -# form is available -TD -# * fill in missing cursor controls where the form of the controls is -# ANSI -TD -# * add parameterized cursor-controls to linux-basic (report by Dae) -TD -# -# 2010-10-09 -# * correct comparison used for setting 16-colors in linux-16color -# entry (Novell #644831) -TD -# * improve linux-16color entry, using "dim" for color-8 which makes it -# gray rather than black like color-0 -TD -# -# 2010-11-20 -# * make "vte" the principal entry defining "gnome", since GNOME terminal -# is merely one of several terminals whose behavior is provided by this -# library -TD -# -# 2010-11-27 -# * fix typo in rmso for tek4106 -Goran Weinholt -# -# 2010-12-11 -# * suppress ncv in screen entry, allowing underline -Alejandro R. Sedeno -# * also suppress ncv in konsole-base -TD -# -# 2011-02-05 -# * add U8 feature to denote entries for terminal emulators which do not -# support VT100 SI/SO when processing UTF-8 encoding -TD -# * add xterm-utf8 as a demo of the U8 feature -TD -# -# 2011-02-20 -# * add cons25-debian entry (Brian M Carlson, Debina #607662). -# -######## SHANTIH! SHANTIH! SHANTIH! diff --git a/deps/ncurses-5.9/misc/terminfo.tmp b/deps/ncurses-5.9/misc/terminfo.tmp deleted file mode 100644 index 05ce542..0000000 --- a/deps/ncurses-5.9/misc/terminfo.tmp +++ /dev/null @@ -1,22359 +0,0 @@ -######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE -# -# This version of terminfo.src is distributed with ncurses and is maintained -# by Thomas E. Dickey (TD). -# -# Report bugs and new terminal descriptions to -# bug-ncurses@gnu.org -# -# $Revision: 1.383 $ -# $Date: 2011/02/20 20:46:53 $ -# -# 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 -# stopped updates several years ago); we have decided to not change the header -# unless there is also a change in content. -# -# To further muddy the waters, it is noted that changes to this file as part of -# maintenance of ncurses (since 1996) are generally conceded to be copyright -# under the ncurses MIT-style license. That was the effect of the agreement -# which the principal authors of ncurses made in 1998. However, since much of -# the file itself is of unknown authorship (and the disclaimer below makes it -# obvious that Raymond cannot or will not convey rights over those parts), -# there is no explicit copyright notice on the file itself. -# -# It would also be a nuisance to split the file into unknown/known authorship -# and move pieces as they are maintained, since many of the maintenance changes -# have been small corrections to Raymond's translations to/from termcap format, -# correcting the data but not the accompanying annotations. -# -# In any case, note that almost half of this file is not data but annotations -# which reflect creative effort. Furthermore, the structure of entries to -# reuse common chunks also is creative (and subject to copyright). Finally, -# some portions of the data are derivative work under a compatible MIT-style -# license from xterm. -# -#------------------------------------------------------------------------------ -# Version 10.2.1 -# terminfo syntax -# -# Eric S. Raymond (current maintainer) -# John Kunze, Berkeley -# Craig Leres, Berkeley -# -# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu -# address is no longer valid. The latest version can always be found at -# . -# -# PURPOSE OF THIS FILE: -# -# This file describes the capabilities of various character-cell terminals, -# as needed by software such as screen-oriented editors. -# -# Other terminfo and termcap files exist, supported by various OS vendors -# or as relics of various older versions of UNIX. This one is the longest -# and most comprehensive one in existence. It subsumes not only the entirety -# of the historical 4.4BSD, GNU, System V and SCO termcap files and the BRL -# termcap file, but also large numbers of vendor-maintained termcap and -# terminfo entries more complete and carefully tested than those in historical -# termcap/terminfo versions. -# -# Pointers to related resources (including the ncurses distribution) may -# be found at . -# -# INTERNATIONALIZATION: -# -# This file uses only the US-ASCII character set (no ISO8859 characters). -# -# This file assumes a US-ASCII character set. If you need to fix this, start -# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers -# for your character set. \E(A and \E)A enables the British character set -# with the pound sign at position 2/3. -# -# In a Japanese-processing environment using EUC/Japanese or Shift-JIS, -# C1 characters are considered the first-byte set of the Japanese encodings, -# so \E)0 should be avoided in and initialization strings. -# -# FILE FORMAT: -# -# The version you are looking at may be in any of three formats: master -# (terminfo with OT capabilities), stock terminfo, or termcap. You can tell -# which by the format given in the header above. -# -# The master format is accepted and generated by the terminfo tools in the -# ncurses suite; it differs from stock (System V-compatible) terminfo only -# in that it admits a group of capabilities (prefixed `OT') equivalent to -# various obsolete termcap capabilities. You can, thus, convert from master -# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if -# you have ncurses `tic -I' is nicer (among other things, it automatically -# outputs entries in a canonical form). -# -# The termcap version is generated automatically from the master version -# using tic -C. This filtering leaves in the OT capabilities under their -# original termcap names. All translated entries fit within the 1023-byte -# string-table limit of archaic termcap libraries except where explicitly -# noted below. Note that the termcap translation assumes that your termcap -# library can handle multiple tc capabilities in an entry. 4.4BSD has this -# capability. Older versions of GNU termcap, through 1.3, do not. -# -# For details on these formats, see terminfo(5) in the ncurses distribution, -# and termcap(5) in the 4.4BSD Unix Programmer's Manual. Be aware that 4.4BSD -# curses has been declared obsolete by the caretakers of the 4.4BSD sources -# as of June 1995; they are encouraging everyone to migrate to ncurses. -# -# Note: unlike some other distributed terminfo files (Novell Unix & SCO's), -# no entry in this file has embedded comments. This is so source translation -# to termcap only has to carry over leading comments. Also, no name field -# contains embedded whitespace (such whitespace confuses rdist). -# -# Further note: older versions of this file were often installed with an editor -# script (reorder) that moved the most common terminal types to the front of -# the file. This should no longer be necessary, as the file is now ordered -# roughly by type frequency with ANSI/VT100 and other common types up front. -# -# Some information has been merged in from terminfo files distributed by -# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below). Much information -# comes from vendors who maintain official terminfos for their hardware -# (notably DEC and Wyse). -# -# A detailed change history is included at the end of this file. -# -# FILE ORGANIZATION: -# -# Comments in this file begin with # - they cannot appear in the middle -# of a terminfo/termcap entry (this feature had to be sacrificed in order -# to allow standard terminfo and termcap syntax to be generated cleanly from -# the master format). Individual capabilities are commented out by -# placing a period between the colon and the capability name. -# -# The file is divided up into major sections (headed by lines beginning with -# the string "########") and minor sections (beginning with "####"); do -# -# grep "^####" | more -# -# to see a listing of section headings. The intent of the divisions is -# (a) to make it easier to find things, and (b) to order the database so -# that important and frequently-encountered terminal types are near the -# front (so that you'll get reasonable search efficiency from a linear -# search of the termcap form even if you don't use reorder). Minor sections -# usually correspond to manufacturers or standard terminal classes. -# Parenthesized words following manufacturer names are type prefixes or -# product line names used by that manufacturers. -# -# HOW TO READ THE ENTRIES: -# -# The first name in an entry is the canonical name for the model or -# type, last entry is a verbose description. Others are mnemonic synonyms for -# the terminal. -# -# Terminal names look like - -# The part to the left of the dash, if a dash is present, describes the -# particular hardware of the terminal. The part to the right may be used -# for flags indicating special ROMs, extra memory, particular terminal modes, -# or user preferences. -# -# All names should be in lower case, for consistency in typing. -# -# The following are conventionally used suffixes: -# -2p Has two pages of memory. Likewise 4p, 8p, etc. -# -am Enable auto-margin. -# -m Monochrome. Suppress color support -# -mc Magic-cookie. Some terminals (notably older Wyses) can -# only support one attribute without magic-cookie lossage. -# Their base entry is usually paired with another that -# uses magic cookies to support multiple attributes. -# -nam No auto-margin - suppress capability -# -nl No labels - suppress soft labels -# -ns No status line - suppress status line -# -rv Terminal in reverse video mode (black on white) -# -s Enable status line. -# -vb Use visible bell () rather than . -# -w Wide - in 132 column mode. -# If a name has multiple suffixes and one is a line height, that one should -# go first. Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'. -# -# Entries with embedded plus signs are designed to be included through use/tc -# capabilities, not used as standalone entries. -# -# To avoid search clashes, some older all-numeric names for terminals have -# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621). -# All primary names of terminals now have alphanumeric prefixes. -# -# Comments marked "esr" are mostly results of applying the termcap-compiler -# code packaged with ncurses and contemplating the resulting error messages. -# In many cases, these indicated obvious fixes to syntax garbled by the -# composers. In a few cases, I was able to deduce corrected forms for garbled -# capabilities by looking at context. All the information in the original -# entries is preserved in the comments. -# -# In the comments, terminfo capability names are bracketed with <> (angle -# brackets). Termcap capability names are bracketed with :: (colons). -# -# INTERPRETATION OF USER CAPABILITIES -# -# The System V Release 4 and XPG4 terminfo format defines ten string -# capabilities for use by applications, .... In this file, we use -# certain of these capabilities to describe functions which are not covered -# by terminfo. The mapping is as follows: -# -# u9 terminal enquire string (equiv. to ANSI/ECMA-48 DA) -# u8 terminal answerback description -# u7 cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6) -# u6 cursor position report (equiv. to ANSI/ECMA-48 CPR) -# -# The terminal enquire string should elicit an answerback response -# from the terminal. Common values for will be ^E (on older ASCII -# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals). -# -# The cursor position request () string should elicit a cursor position -# report. A typical value (for VT100 terminals) is \E[6n. -# -# The terminal answerback description (u8) must consist of an expected -# answerback string. The string may contain the following scanf(3)-like -# escapes: -# -# %c Accept any character -# %[...] Accept any number of characters in the given set -# -# The cursor position report () string must contain two scanf(3)-style -# %d format elements. The first of these must correspond to the Y coordinate -# and the second to the %d. If the string contains the sequence %i, it is -# taken as an instruction to decrement each value after reading it (this is -# the inverse sense from the cup string). The typical CPR value is -# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals). -# -# These capabilities are used by tack(1m), the terminfo action checker -# (distributed with ncurses 5.0). -# -# TABSET FILES -# -# All the entries in this file have been edited to assume that the tabset -# files directory is /home/martino/avrdude-build-script/objdir/share/tabset, in conformance with the File Hierarchy -# Standard for Linux and open-source BSD systems. Some vendors (notably Sun) -# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset. -# -# No curses package we know of actually uses these files. If their location -# is an issue, you will have to hand-patch the file locations before compiling -# this file. -# -# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL -# -# As the ANSI/ECMA-48 standard and variants take firmer hold, and as -# character-cell terminals are increasingly replaced by X displays, much of -# this file is becoming a historical document (this is part of the reason for -# the new organization, which puts ANSI types, xterm, Unix consoles, -# and vt100 up front in confidence that this will catch 95% of new hardware). -# -# For the terminal types still alive, I'd like to have manufacturer's -# contact data (Internet address and/or snail-mail + phone). -# -# I'm also interested in enriching the comments so that the latter portions of -# the file do in fact become a potted history of VDT technology as seen by -# UNIX hackers. Ideally, I'd like the headers for each manufacturer to -# include its live/dead/out-of-the-business status, and for as many -# terminal types as possible to be tagged with information like years -# of heaviest use, popularity, and interesting features. -# -# I'm especially interested in identifying the obscure entries listed under -# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal -# wisdom about them gets lost. If you know a lot about obscure old terminals, -# please go to the terminfo resource page, grab the UFO file (ufo.ti), and -# eyeball it for things you can identify and describe. -# -# If you have been around long enough to contribute, please read the file -# with this in mind and send me your annotations. -# -# COPYRIGHTS AND OTHER DELUSIONS -# -# The BSD ancestor of this file had a standard Regents of the University of -# California copyright with dates from 1980 to 1993. -# -# Some information has been merged in from a terminfo file SCO distributes. -# It has an obnoxious boilerplate copyright which I'm ignoring because they -# took so much of the content from the ancestral BSD versions of this file -# and didn't attribute it, thereby violating the BSD Regents' copyright. -# -# Not that anyone should care. However many valid functions copyrights may -# serve, putting one on a termcap/terminfo file with hundreds of anonymous -# contributors makes about as much sense as copyrighting a wall-full of -# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous. -# -# This file deliberately has no copyright. It belongs to no one and everyone. -# If you claim you own it, you will merely succeed in looking like a fool. -# Use it as you like. Use it at your own risk. Copy and redistribute freely. -# There are no guarantees anywhere. Svaha! -# - -######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES -# -# This section describes terminal classes and brands that are still -# quite common. -# - -#### Specials -# -# Special "terminals". These are used to label tty lines when you don't -# know what kind of terminal is on it. The characteristics of an unknown -# terminal are the lowest common denominator - they look about like a ti 700. -# - -dumb|80-column dumb tty, - am, - cols#80, - bel=^G, cr=^M, cud1=^J, ind=^J, -unknown|unknown terminal type, - gn, use=dumb, -lpr|printer|line printer, - OTbs, hc, os, - cols#132, lines#66, - bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ind=^J, -glasstty|classic glass tty interpreting ASCII control characters, - OTbs, am, - cols#80, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ht=^I, kcub1=^H, - kcud1=^J, nel=^M^J, .kbs=^H, - -vanilla|dumb tty, - OTbs, - bel=^G, cr=^M, cud1=^J, ind=^J, - -# This is almost the same as "dumb", but with no prespecified width. -# DEL and ^C are hardcoded to act as kill characters. -# ^D acts as a line break (just like newline). -# It also interprets -# \033];xxx\007 -# for compatibility with xterm -TD -9term|Plan9 terminal emulator for X, - am, - OTnl=^J, bel=^G, cud1=^J, - -#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities -# -# See the end-of-file comment for more on these. -# - -# ANSI capabilities are broken up into pieces, so that a terminal -# implementing some ANSI subset can use many of them. -ansi+local1, - cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A, -ansi+local, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, use=ansi+local1, -ansi+tabs, - cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[3g, -ansi+inittabs, - it#8, use=ansi+tabs, -ansi+erase, - clear=\E[H\E[J, ed=\E[J, el=\E[K, -ansi+rca, - hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd, -ansi+cup, - cup=\E[%i%p1%d;%p2%dH, home=\E[H, -ansi+rep, - rep=%p1%c\E[%p2%{1}%-%db, -ansi+idl1, - dl1=\E[M, il1=\E[L, -ansi+idl, - dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1, -ansi+idc, - dch1=\E[P, ich=\E[%p1%d@, ich1=\E[@, rmir=\E6, smir=\E6, -ansi+arrows, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - khome=\E[H, -ansi+sgr|ansi graphic renditions, - blink=\E[5m, invis=\E[8m, rev=\E[7m, - sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, - sgr0=\E[0m, -ansi+sgrso|ansi standout only, - rmso=\E[m, smso=\E[7m, -ansi+sgrul|ansi underline only, - rmul=\E[m, smul=\E[4m, -ansi+sgrbold|ansi graphic renditions; assuming terminal has bold; not dim, - bold=\E[1m, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, -ansi+sgrdim|ansi graphic renditions; assuming terminal has dim; not bold, - dim=\E[2m, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2;%;%?%p7%t8;%;m, - use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, -ansi+pp|ansi printer port, - mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, -ansi+csr|ansi scroll-region plus cursor save & restore, - csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7, - -# The IBM PC alternate character set. Plug this into any Intel console entry. -# We use \E[11m for rmacs rather than \E[12m so the string can use the -# ROM graphics for control characters such as the diamond, up- and down-arrow. -# This works with the System V, Linux, and BSDI consoles. It's a safe bet this -# will work with any Intel console, they all seem to have inherited \E[11m -# from the ANSI.SYS de-facto standard. -klone+acs|alternate character set for ansi.sys displays, - 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, - rmacs=\E[10m, smacs=\E[11m, - -# Highlight controls corresponding to the ANSI.SYS standard. Most -# console drivers for Intel boxes obey these. Makes the same assumption -# about \E[11m as klone+acs. True ANSI/ECMA-48 would have , -# , 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, - -# Most Intel boxes do not treat "invis" (invisible) text. -klone+sgr8|attribute control for ansi.sys displays, - invis=\E[8m, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - use=klone+sgr, - -# Highlight controls corresponding to the ANSI.SYS standard. *All* -# console drivers for Intel boxes obey these. Does not assume \E[11m will -# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS -# diamond and arrow characters under curses. -klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m), - blink=\E[5m, bold=\E[1m, invis=\E[8m, rev=\E[7m, 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%;%?%p7%t;8%;%?%p9%t;12%;m, - sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m, - use=klone+acs, - -# KOI8-R (RFC1489) acs (alternate character set) -# From: Qing Long , 24 Feb 1996. -klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset, - acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i\220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t\206u\207v\210w\211x\201y\230z\231{\267|\274}L~\225, - rmacs=\E[10m, smacs=\E[11m, - -# ANSI.SYS color control. The setab/setaf caps depend on the coincidence -# between SVr4/XPG4's color numbers and ANSI.SYS attributes. Here are longer -# but equivalent strings that don't rely on that coincidence: -# 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}%=%t3%e%p1%d%;m, -# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard. -# They match a subset of ECMA-48. -klone+color|color control for ansi.sys and ISO6429-compatible displays, - colors#8, ncv#3, pairs#64, - op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -# This is better than klone+color, it doesn't assume white-on-black as the -# default color pair, but many `ANSI' terminals don't grok the cap. -ecma+color|color control for ECMA-48-compatible terminals, - AX, - colors#8, ncv#3, pairs#64, - op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -# 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, - -# For comparison, here are all the capabilities implied by the Intel -# Binary Compatibility Standard (level 2) that fit within terminfo. -# For more detail on this rather pathetic standard, see the comments -# near the end of this file. -ibcs2|Intel Binary Compatibility Standard prescriptions, - cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cub1=\E[1D, - cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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@, il=\E[%p1%dL, - indn=\E[%p1%dS, rc=\E7, rin=\E[%p1%dT, rmam=\E[?7l, sc=\E7, - smam=\E[?7h, tbc=\E[g, vpa=\E[%i%p1%dd, - -#### ANSI/ECMA-48 terminals and terminal emulators -# -# See near the end of this file for details on ANSI conformance. -# Don't mess with these entries! Lots of other entries depend on them! -# -# This section lists entries in a least-capable to most-capable order. -# if you're in doubt about what `ANSI' matches yours, try them in that -# order and back off from the first that breaks. - -# ansi-mr is for ANSI terminals with ONLY relative cursor addressing -# and more than one page of memory. It uses local motions instead of -# direct cursor addressing, and makes almost no assumptions. It does -# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen. -ansi-mr|mem rel cup ansi, - am, xon, - cols#80, lines#24, use=vanilla, use=ansi+erase, - use=ansi+local1, - -# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but -# beware of screen size problems and memory relative cursor addressing. -ansi-mini|any ansi terminal with pessimistic assumptions, - am, xon, - cols#80, lines#24, use=vanilla, use=ansi+cup, - use=ansi+erase, - -# ansi-mtabs adds relative addressing and minimal tab support -ansi-mtabs|any ansi terminal with pessimistic assumptions, - it#8, - ht=^I, use=ansi+local1, use=ansi-mini, - -# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL -# -# The following is an entry for the full ANSI 3.64 (1977). It lacks -# padding, but most terminals using the standard are "fast" enough -# not to require any -- even at 9600 bps. If you encounter problems, -# try including the padding specifications. -# -# Note: the :as: and :ae: specifications are not implemented here, for -# the available termcap documentation does not make clear WHICH alternate -# character set to specify. ANSI 3.64 seems to make allowances for several. -# Please make the appropriate adjustments to fit your needs -- that is -# if you will be using alternate character sets. -# -# There are very few terminals running the full ANSI 3.64 standard, -# so I could only test this entry on one verified terminal (Visual 102). -# I would appreciate the results on other terminals sent to me. -# -# Please report comments, changes, and problems to: -# -# U.S. MAIL: Hugh Hansard -# Box: 22830 -# Emory University -# Atlanta, GA. 30322. -# -# USENET {akgua,msdc,sb1,sb6,gatech}!emory!mlhhh. -# -# (Added vt100 , to quiet a tic warning --esr) -ansi77|ansi 3.64 standard 1977 version, - OTbs, am, mir, - cols#80, it#8, lines#24, - bel=^G, clear=\E[;H\E[2J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, - kf2=\EOR, kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h, - smso=\E[7m, smul=\E[4m, - -# Procomm and some other ANSI emulations don't recognize all of the ANSI- -# standard capabilities. This entry deletes , , , , and -# / capabilities, forcing curses to use repetitions of , -# , and . Also deleted and , as QModem up to -# 5.03 doesn't recognize these. Finally, we delete and , which seem -# to confuse many emulators. On the other hand, we can count on these programs -# doing //. Older versions of this entry featured -# , but now seems to be more common under -# ANSI.SYS influence. -# From: Eric S. Raymond Oct 30 1995 -pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode), - OTbs, am, mir, msgr, - cols#80, it#8, lines#24, - bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=\E[D, - cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - hts=\EH, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[3g, - use=klone+sgr-dumb, -pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode), - lines#25, use=pcansi-m, -pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode), - lines#33, use=pcansi-m, -pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode), - lines#43, use=pcansi-m, -# The color versions. All PC emulators do color... -pcansi|ibm-pc terminal programs claiming to be ansi, - use=klone+color, use=pcansi-m, -pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines, - lines#25, use=pcansi, -pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines, - lines#33, use=pcansi, -pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines, - lines#43, use=pcansi, - -# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color. -# If you want pound signs rather than dollars, replace `B' with `A' -# in the , , , and capabilities. -# From: Eric S. Raymond Nov 6 1995 -ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes, - mc5i, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, 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, indn=\E[%p1%dS, kbs=^H, - kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kich1=\E[L, mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, - rep=%p1%c\E[%p2%{1}%-%db, rin=\E[%p1%dT, s0ds=\E(B, - s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, tbc=\E[3g, - vpa=\E[%i%p1%dd, use=pcansi-m, - -ansi+enq|ncurses extension for ANSI ENQ, - u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c, - u9=\E[c, - -# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in -# standard terminfo. Assumes ANSI.SYS-compatible attributes and color. -# From: Eric S. Raymond Nov 6 1995 -ansi|ansi/pc-term compatible with color, - use=ansi+enq, use=ecma+color, use=klone+sgr8, use=ansi-m, - -# ansi-generic is a vanilla ANSI terminal. This is assumed to implement -# all the normal ANSI stuff with no extensions. It assumes -# insert/delete line/char is there, so it won't work with -# vt100 clones. It assumes video attributes for bold, blink, -# underline, and reverse, which won't matter much if the terminal -# can't do some of those. Padding is assumed to be zero, which -# shouldn't hurt since xon/xoff is assumed. -ansi-generic|generic ansi standard terminal, - am, xon, - cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup, - use=ansi+rca, use=ansi+erase, use=ansi+tabs, - use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep, - use=ansi+sgrbold, use=ansi+arrows, - -#### DOS ANSI.SYS variants -# -# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS -# documentation (except for the keyboard key reassignment feature, which -# doesn't fit the model well). The klone+acs sequences were valid -# though undocumented. The capability is untested but should work for -# keys F1-F10 (%p1 values outside this range will yield unpredictable results). -# From: Eric S. Raymond Nov 7 1995 -ansi.sys-old|ANSI.SYS under PC-DOS 2.1, - OTbs, am, mir, msgr, xon, - cols#80, lines#25, - clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[k, home=\E[H, - is2=\E[m\E[?7h, kcub1=^H, kcud1=^J, 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, u6=\E[%i%d;%dR, - u7=\E[6n, use=klone+color, use=klone+sgr8, - -# Keypad: Home=\0G Up=\0H PrPag=\0I -# ka1,kh kcuu1 kpp,ka3 -# -# Left=\0K 5=\0L Right=\0M -# kcub1 kb2 kcuf1 -# -# End=\0O Down=\0P NxPag=\0Q -# kc1,kend kcud1 kc3,knp -# -# Ins=\0R Del=\0S -# kich1 kdch1 -# -# On keyboard with 12 function keys, -# shifted f-keys: F13-F24 -# control f-keys: F25-F36 -# alt f-keys: F37-F48 -# The shift/control/alt keys do not modify each other, but alt overrides both, -# and control overrides shift. -# -# capability for F1-F48 -TD -ansi.sys|ANSI.SYS 3.1 and later versions, - el=\E[K, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q, - kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, - kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205, - kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W, - kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\, - kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_, - kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d, - kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212, - kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l, - kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q, - kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, - kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I, - pfkey=\E[0;%?%p1%{11}%<%t%'\:'%e%?%p1%{13}%<%t%'z'%e%?%p1%{23}%<%t%'G'%e%?%p1%{25}%<%t%'p'%e%?%p1%'#'%<%t%'E'%e%?%p1%'%'%<%t%'f'%e%?%p1%'/'%<%t%'C'%e%{92}%;%;%;%;%;%;%;%p1%+%d;%p2"%s"p, - use=ansi.sys-old, - -# -# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS. -# This should only be used when the terminal emulator cannot redefine the keys. -# Since redefining keys with ansi.sys also affects PC-DOS programs, the key -# definitions must be restored. If the terminal emulator is quit while in vi -# or others using /, the keypad will not be defined as per PC-DOS. -# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix -# (^U and ^D are already defined for tn3270). The ESC is safe for vi but it -# does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab. -# Note that is always BS, because PC-dos can tolerate this change. -# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi. -# Consequently the End keypad key could not be set (it is relatively safe and -# actually useful because it sends ^@ O, which beeps and opens a line above). -ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi, - is2=U2 PC-DOS 3.1 ANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p, - rmkx=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80;0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p, - smkx=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p\E[;81;27;4p\E[;82;27;27;105p\E[;83;127p, - use=ansi.sys, -# -# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer. -nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS, - dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L, - is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n, - use=ansi.sys, -# -# See ansi.sysk and nansi.sys above. -nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi, - dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L, - is2=U4 PC-DOS Public Domain NANSI.SYS with keypad redefined for vi 9-29-86\n\E[;75;8p, - use=ansi.sysk, - -#### ANSI console types -# - -############################################################################# -# -# Atari ST terminals. -# From Guido Flohr . -# -tw52|tw52-color|Toswin window manager with color, - bce, - colors#16, pairs#256, - oc=\Eb?\Ec0, op=\Eb?\Ec0, - setab=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - setaf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - setb=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - setf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1%{48}%+%c, - use=tw52-m, -tw52-m|Toswin window manager monochrome, - ul, - ma#999, - bold=\Eya, dch1=\Ea, dim=\EyB, - is2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, rev=\EyP, rmso=\EzQ, - rmul=\EzH, rs2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, sgr0=\Ez_, - smso=\EyQ, smul=\EyH, use=at-m, -tt52|Atari TT medium and high resolution, - lines#30, use=at-color, -st52-color|at-color|atari-color|atari_st-color|Atari ST with color, - bce, - colors#16, pairs#256, - is2=\Ev\Eq\Ee\Eb1\Ec0, rs2=\Ev\Eq\Ee\Eb1\Ec0, - setab=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - setaf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - setb=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - setf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3}%=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1%{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t\:%e%p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%=%t6%e?, - use=st52, -st52|st52-m|at|at-m|atari|atari-m|atari_st|atarist-m|Atari ST, - am, eo, mir, npc, - cols#80, it#8, lines#24, - bel=^G, civis=\Ef, clear=\EE, cnorm=\Ee, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, el1=\Eo, home=\EH, ht=^I, - il1=\EL, ind=^J, is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\177, - kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es, - kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EQ, - kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV, kf8=\EW, - kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb, kpp=\Ea, - kund=\EK, nel=^M^J, rc=\Ek, rev=\Ep, ri=\EI, rmso=\Eq, - rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq, smso=\Ep, -tw100|toswin vt100 window mgr, - eo, mir, msgr, xon, - colors#8, cols#80, it#8, lines#24, pairs#64, vt#3, - acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\Ef, - clear=\E[2J\E[H, cnorm=\Ee, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB, - cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, 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=^J, is2=\E<\E)0, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\177, - 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, 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, rc=\E8, 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>, - sc=\E7, - 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'%=%t3%e7%;m, - setf=\E[3%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'%=%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, -# The entries for stv52 and stv52pc probably need a revision. -stv52|MiNT virtual console, - am, msgr, - cols#80, it#8, lines#30, - bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, - cnorm=\E. \Ee, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.", - dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, - ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\177, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, - kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, - kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, - kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, - kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, - op=\Eb@\EcO, rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, - rmso=\Eq, rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, - smcup=\Ev\Ee\Ez_, smso=\Ep, smul=\EyH, -stv52pc|MiNT virtual console with PC charset, - am, msgr, - cols#80, it#8, lines#30, - acsc=+\257\,\256-\^.v0\333I\374`\177a\260f\370g\361h\261j\331k\277l\332m\300n\305o\377p-q\304r-s_t+u+v+w+x\263y\363z\362{\343|\366}\234~\371, - bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, - cnorm=\E. \Ee, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.", - dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, - ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\177, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, - kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, - kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, - kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, - kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, - rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, rmso=\Eq, - rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_, - smso=\Ep, smul=\EyH, - -#### Atari ST -# - -# From: Simson L. Garfinkel -atari-old|atari st, - OTbs, am, - cols#80, it#8, lines#25, - clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, - ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep, -# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode -# From: Paul M. Aoki -uniterm|uniterm49|UniTerm VT220 emulator with 49 lines, - lines#49, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H, - use=vt220, -# MiNT VT52 emulation. 80 columns, 25 rows. -# MiNT is Now TOS, the operating system which comes with all Ataris now -# (mainly Atari Falcon). This termcap is for the VT52 emulation you get -# under tcsh/zsh/bash/sh/ksh/ash/csh when you run MiNT in `console' mode -# From: Per Persson , 27 Feb 1996 -st52-old|Atari ST with VT52 emulation, - am, km, - cols#80, lines#25, - bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, - ind=^J, ka1=\E#7, ka3=\E#5, kb2=\E#9, kbs=^H, kc1=\E#1, - kc3=\E#3, kclr=\E#7, kcub1=\E#K, kcud1=\E#P, kcuf1=\E#M, - kcuu1=\E#H, kf0=\E#D, kf1=\E#;, kf2=\E#<, kf3=\E#=, kf4=\E#>, - kf5=\E#?, kf6=\E#@, kf7=\E#A, kf8=\E#B, kf9=\E#C, khome=\E#G, - kil1=\E#R, kind=\E#2, kri=\E#8, lf0=f10, nel=^M^J, rc=\Ek, - ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq, - smcup=\Ee, smso=\Ep, - -#### BeOS -# -# BeOS entry for Terminal program Seems to be almost ANSI -beterm|BeOS Terminal, - am, eo, mir, msgr, xenl, xon, - colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64, - bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, - kend=\E[4~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, - nel=^M^J, op=\E[m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l, - rmkx=\E[?4l, rmso=\E[m, rmul=\E[24m, rs1=\Ec, sc=\E7, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - setb=\E[%p1%{40}%+%cm, setf=\E[%p1%{30}%+%cm, - sgr0=\E[0;10m, smir=\E[4h, smkx=\E[?4h, smso=\E[7m, - smul=\E[4m, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, - vpa=\E[%i%p1%dd, - -#### Linux consoles -# - -# This entry is good for the 1.2.13 or later version of the Linux console. -# -# *************************************************************************** -# * * -# * WARNING: * -# * Linuxes come with a default keyboard mapping kcbt=^I. This entry, in * -# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab * -# * character. Here are the keymap replacement lines that will set this up: * -# * * -# keycode 15 = Tab Tab -# alt keycode 15 = Meta_Tab -# shift keycode 15 = F26 -# string F26 ="\033[Z" -# * * -# * This has to use a key slot which is unfortunate (any unused one will * -# * do, F26 is the higher-numbered one). The change ought to be built * -# * into the kernel tables. * -# * * -# *************************************************************************** -# -# All linux kernels since 1.2.13 (at least) set the screen size -# themselves; this entry assumes that capability. -# -linux-basic|linux console, - am, bce, eo, mir, msgr, xenl, xon, - it#8, ncv#18, U8#1, - 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, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, el1=\E[1K, flash=\E[?5h\E[?5l$<200/>, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kb2=\E[G, kbs=\177, - kcbt=\E[Z, 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[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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kspd=^Z, nel=^M^J, rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, - rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, 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;11%;m, - smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g, - vpa=\E[%i%p1%dd, use=vt102+enq, use=klone+sgr, - use=ecma+color, - -linux-m|Linux console no color, - colors@, pairs@, - setab@, setaf@, setb@, setf@, use=linux, - -# The 1.3.x kernels add color-change capabilities; if yours doesn't have this -# and it matters, turn off . The %02x escape used to implement this is -# not supposedly back-portable to older SV curses (although it has worked fine -# on Solaris for several years) and not supported in ncurses versions before -# 1.9.9. -linux-c-nc|linux console with color-change, - ccc, - initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x, - oc=\E]R, use=linux-basic, -# From: Dennis Henriksen , 9 July 1996 -linux-c|linux console 1.3.6+ for older ncurses, - ccc, - initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p3%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p4%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;, - oc=\E]R, use=linux-basic, - -# The 2.2.x kernels add a private mode that sets the cursor type; use that to -# get a block cursor for cvvis. -# reported by Frank Heckenbach . -linux|linux console, - civis=\E[?25l\E[?1c, cnorm=\E[?25h\E[?0c, - cvvis=\E[?25h\E[?8c, use=linux-c-nc, - -# Subject: linux 2.6.26 vt back_color_erase -# Changes to the Linux console driver broke bce model as reported in -# https://bugzilla.novell.com/show_bug.cgi?id=418613 -# apparently from -# http://lkml.org/lkml/2008/4/26/305 -# http://groups.google.com/group/fa.linux.kernel/browse_thread/thread/87f98338f0d636bb/aa96e8b86cee0d1e?lnk=st&q=#aa96e8b86cee0d1e -linux2.6.26|linux console w/o bce, - bce@, use=linux, - -# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file -linux-nic|linux with ich/ich1 suppressed for non-curses programs, - ich@, ich1@, use=linux, - -# This assumes you have used setfont(8) to load one of the Linux koi8-r fonts. -# acsc entry from Pavel Roskin" , 29 Sep 1997. -linux-koi8|linux with koi8 alternate character set, - acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i\276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v\211w\210x\201y\230z\231{\267|\274~\224, - use=linux, use=klone+koi8acs, - -# Another entry for KOI8-r with Qing Long's acsc. -# (which one better complies with the standard?) -linux-koi8r|linux with koi8-r alternate character set, - use=linux, use=klone+koi8acs, - -# Entry for the latin1 and latin2 fonts -linux-lat|linux with latin1 or latin2 alternate character set, - acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i\316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u\215v\301w\302x\205y\363z\362{\343|\330}\234~\376, - use=linux, - -# This uses graphics from VT codeset instead of from cp437. -# reason: cp437 (aka "straight to font") is not functional under luit. -# from: Andrey V Lukyanov . -linux-vt|linux console using VT codes for graphics, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~, - rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0, - smpch@, use=linux, - -# This is based on the Linux console (relies on the console to perform some -# 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,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|jfbterm|Kanji ON Linux console, - ccc@, hs, - civis@, cnorm@, cvvis@, dsl=\E[?H, flash@, fsl=\E[?F, initc@, - initp@, kcbt@, oc@, op=\E[37;40m, rs1=\Ec, tsl=\E[?T, - use=linux, - -# 16-color linux console entry; this works with a 256-character -# console font but bright background colors turn into dim ones when -# you use a 512-character console font. This uses bold for bright -# foreground colors and blink for bright background colors. -linux-16color|linux console with 16 colors, - colors#16, ncv#54, pairs#256, - setab=\E[4%p1%{8}%m%d%?%p1%{8}%>%t;5%e%p1%{8}%=%t;2%e;25%;m, - setaf=\E[3%p1%{8}%m%d%?%p1%{8}%>%t;1%e%p1%{8}%=%t;2%e;21%;m, - use=linux, - -# bterm (bogl 0.1.18) -# Implementation is in bogl-term.c -# Key capabilities from linux terminfo entry -# -# Notes: -# bterm only supports acs using wide-characters, has case for these: qjxamlkut -# bterm does not support sgr, since it only processes one parameter -TD -bterm|bogl virtual terminal, - am, bce, - colors#8, cols#80, lines#24, pairs#64, - acsc=aajjkkllmmqqttuuxx, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, cub1=^H, cud1=^J, - cup=\E[%i%p1%d;%p2%dH, ed=\E[J, el=\E[K, home=\E[H, ind=^J, - kb2=\E[G, kbs=\177, kcbt=\E[Z, 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[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~, kich1=\E[2~, - kmous=\E[M, knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, - op=\E49;39m, rev=\E[7m, ri=\EM, rmacs=^O, rmso=\E[27m, - rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr0=\E[0m, smacs=^N, smso=\E[7m, smul=\E[4m, - -#### Mach -# - -# From: Matthew Vernon -mach|Mach Console, - am, km, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, - kbs=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, 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, -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, - -# From: Marcus Brinkmann -# http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/hurd/hurd/console/ -# -# Comments in the original are summarized here: -# -# hurd uses 8-bit characters (km). -# -# Although it doesn't do XON/XOFF, we don't want padding characters (xon). -# -# Regarding compatibility to vt100: hurd doesn't specify , as we don't -# have the eat_newline_glitch. It doesn't support setting or removing tab -# stops (hts/tbc). -# -# hurd uses ^H instead of \E[D for cub1, as only ^H implements and it is -# one byte instead three. -# -# is not included because hurd has insert mode. -# -# hurd doesn't use ^J for scrolling, because this could put things into the -# scrollback buffer. -# -# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode. -# This is a GNU extension. -# -# The original has commented-out ncv, but is restored here. -# -# Reading the source, RIS resets cnorm, but not xmous. -hurd|The GNU Hurd console server, - am, bce, bw, eo, km, mir, msgr, xon, - colors#8, it#8, ncv#18, pairs#64, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\Ec, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[34l, dch=\E[%p1%dP, - dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, flash=\Eg, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS, - invis=\E[8m, kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, - kend=\E[4~, 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kspd=^Z, nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\E[T, - rin=\E[%p1%dT, ritm=\E[23m, rmacs=\E[10m, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7, - 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%;%?%p5%t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - sgr0=\E[0m, sitm=\E[3m, smacs=\E[11m, smir=\E[4h, - smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l, - gsbom=\E[>1h, - -#### OSF Unix -# - -# OSF/1 1.1 Snapshot 2 -pmcons|pmconsole|PMAX console, - am, - cols#128, lines#57, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ht=^I, - ind=^J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - -# SCO console and SOS-Syscons console for 386bsd -# (scoansi: had unknown capabilities -# :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\ -# :GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C: -# :G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\ -# :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\ -# :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\ -# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based -# on the =\E[12m -- esr) -# -# 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: -# F13-F24 are shifted F1-F12 -# F25-F36 are control F1-F12 -# F37-F48 are shift+control F1-F12 -# -# hpa/vpa work in the console, but not in scoterm: -# hpa=\E[%p1%dG, -# vpa=\E[%p1%dd, -# -# SCO's terminfo uses -# kLFT=\E[d, -# kRIT=\E[c, -# which do not work (console or scoterm). -# -# Console documents only 3 attributes can be set with SGR (so we don't use sgr). -scoansi-old|SCO Extended ANSI standard crt (5.0.5), - OTbs, am, bce, eo, xon, - colors#8, cols#80, it#8, lines#25, pairs#64, - acsc=+/\,.-\230.\2310[5566778899\:\:;;<<==>>FFGGHHIIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3yszr{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, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[=0;12C, dch=\E[%p1%dP, - dch1=\E[P, dispc=\E[=%p1%dg, dl=\E[%p1%dM, dl1=\E[M, - 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[@, il=\E[%p1%dL, il1=\E[L, - ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbeg=\E[E, kbs=^H, - kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, 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, khome=\E[H, - kich1=\E[L, knp=\E[G, kpp=\E[I, op=\E[0;37;40m, rc=\E8, - rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, - rmam=\E[?7l, rmso=\E[m, rmul=\E[m, 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, -scoansi-new|SCO Extended ANSI standard crt (5.0.6), - km, - civis=\E[=0c, cnorm=\E[=1c, csr=\E[%i%p1%d;%p2%dr, - cvvis=\E[=2c, mgc=\E[=r, oc=\E[51m, op=\E[50m, - rep=\E[%p1%d;%p2%db, rmm=\E[=11L, - sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, - smgb=\E[=1;0m, smgbp=\E[=1;%i%p1%dm, - smglp=\E[=2;%i%p1%dm, smgr=\E[=3;0m, - smgrp=\E[=3;%i%p1%dm, smgt=\E[=0;0m, - smgtp=\E[=0;%i%p1%dm, smm=\E[=10L, - wind=\E[%i%p1%d;%p2%d;%i%p3%d;%p4%dr, - use=scoansi-old, -# make this easy to change... -scoansi|SCO Extended ANSI standard crt, - use=scoansi-old, - -# This actually describes the generic SVr4 display driver for Intel boxes. -# The isn't documented and therefore may not be reliable. -# From: Eric Raymond Mon Nov 27 19:00:53 EST 1995 -att6386|at386|386at|AT&T WGS 6386 console, - am, bw, eo, xon, - cols#80, it#8, lines#25, - acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C, - clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, 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, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=\E[S, - indn=\E[%p1%dS, invis=\E[9m, is2=\E[0;10;39m, kbs=^H, - kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, kich1=\E[@, - knp=\E[U, kpp=\E[V, krmir=\E0, nel=\r\E[S, rc=\E8, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmacs=\E[10m, rmso=\E[m, rmul=\E[m, - 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, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, vpa=\E[%i%p1%dd, use=klone+color, -# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr) -pc6300plus|AT&T 6300 plus, - OTbs, am, xon, - cols#80, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[=C, - clear=\E[2J\E[H, cnorm=\E[=1C, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, - dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K, - home=\E[H, hts=\EH, ich1=\E[1@, il1=\E[1L, ind=^J, - 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=^M^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, - -# From: Benjamin C. W. Sittler -# -# I have a UNIX PC which I use as a terminal attached to my Linux PC. -# Unfortunately, the UNIX PC terminfo entry that comes with ncurses -# is broken. All the special key sequences are broken, making it unusable -# with Emacs. The problem stems from the following: -# -# The UNIX PC has a plethora of keys (103 of them, and there's no numeric -# keypad!), loadable fonts, and strange highlighting modes ("dithered" -# half-intensity, "smeared" bold, and real strike-out, for example.) It also -# uses resizable terminal windows, but the bundled terminal program always -# uses an 80x24 window (and doesn't support seem to support a 132-column -# mode.) -# -# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a -# library which was a superset of SVr3.5 curses (called tam, for "terminal -# access method".) tam includes support for real, overlapping windows, -# onscreen function key labels, and bitmap graphics. But since the primary -# user interface on the UNIX PC was a GUI program (ua, for "user -# assistant",) and remote administration was considered important for the -# machine, tam also supported VT100-compatible terminals attached to the -# serial port or used across the StarLan network. To simulate the extra keys -# not present on a VT100, users could press ESC and a two-letter sequence, -# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences, -# however, were not the same as those sent by the actual Undo key. The -# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example. -# (If you're interested in adding some of the tam calls to ncurses, btw, I -# have the full documentation and several programs which use tam. It also -# used an extended terminfo format to describe key sequences, special -# highlighting modes, etc.) -# -# KEYS: This means that ncurses would quite painful on the UNIX PC, since -# there are two sequences for every key-modifier combination (local keyboard -# sequence and remote "VT100" sequence.) But I doubt many people are trying -# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the -# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume) -# seem to have been built from the manual describing the VT100 sequences. -# This means it doesn't work for a real live UNIX PC. -# -# FONTS: The UNIX PC also has a strange interpretation of "alternate -# character set". Rather than the VT100 graphics you might expect, it allows -# up to 8 custom fonts to be loaded at any given time. This means that -# 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: -# -# SGR10 - Select font 0 - ESC [ 10 m or SO -# SGR11 - Select font 1 - ESC [ 11 m or SI -# SGR12 - Select font 2 - ESC [ 12 m -# ... (etc.) -# SGR17 - Select font 7 - ESC [ 17 m -# -# Graphics for line drawing are not reliably found at *any* character -# location because the UNIX PC has dynamically reloadable fonts. I use font -# 0 for regular text and font 1 for italics, but this is by no means -# universal. So ASCII line drawing is in order if smacs/rmacs are enabled. -# -# MISC: The cursor visible/cursor invisible sequences were swapped in the -# distributed terminfo. -# -# To ameliorate these problems (and fix a few highlighting bugs) I rewrote -# the UNIX PC terminfo entry. The modified version works great with Lynx, -# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC -# attached by serial cable. In Emacs, even the Undo key works, and many -# applications can now use the F1-F8 keys. -# -# esr's notes: -# Terminfo entry for the AT&T Unix PC 7300 -# from escape(7) in Unix PC 7300 Manual. -# Somewhat similar to a vt100-am (but different enough -# to redo this from scratch.) -# -# /*************************************************************** -# * -# * FONT LOADING PROGRAM FOR THE UNIX PC -# * -# * This routine loads a font defined in the file ALTFONT -# * into font memory slot #1. Once the font has been loaded, -# * it can be used as an alternative character set. -# * -# * The call to ioctl with the argument WIOCLFONT is the key -# * to this routine. For more information, see window(7) in -# * the PC 7300 documentation. -# ***************************************************************/ -# #include /* needed for strcpy call */ -# #include /* needed for ioctl call */ -# #define FNSIZE 60 /* font name size */ -# #define ALTFONT "/usr/lib/wfont/special.8.ft" /* font file */ -# /* -# * The file /usr/lib/wfont/special.8.ft comes with the -# * standard PC software. It defines a graphics character set -# * similar to that of the Teletype 5425 terminal. To view -# * this or other fonts in /usr/lib/wfont, use the command -# * cfont . For further information on fonts see -# * cfont(1) in the PC 7300 documentation. -# */ -# -# struct altfdata /* structure for alt font data */ -# { -# short altf_slot; /* memory slot number */ -# char altf_name[FNSIZE]; /* font name (file name) */ -# }; -# ldfont() -# { -# int wd; /* window in which altfont will be */ -# struct altfdata altf; -# altf.altf_slot=1; -# strcpy(altf.altf_name,ALTFONT); -# for (wd =1; wd < 12; wd++) { -# ioctl(wd, WIOCLFONT,&altf); -# } -# } -# -# (att7300: added /// from the BSDI entry, -# they're confirmed by the man page for the System V display---esr) -# -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=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, - ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, 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, kbs=^H, kcan=\EOw, kcbt=\E[Z, - kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, 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, - -# Sent by Stefan Stapelberg , 24 Feb 1997, this is -# from SGI's terminfo database. SGI's entry shows F9-F12 with the codes -# for the application keypad mode. We have added iris-ansi-ap rather than -# change the original to keypad mode. -# -# (iris-ansi: added rmam/smam based on init string -- esr) -# -# This entry, and those derived from it, is used in xwsh (also known as -# winterm). Some capabilities that do not fit into the terminfo model -# include the shift- and control-functionkeys: -# -# F1-F12 generate different codes when shift or control modifiers are used. -# For example: -# F1 \E[001q -# shift F1 \E[013q -# control-F1 \E[025q -# -# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e., -# \EOP to \EOS. The shifted and control modifiers still do the same thing. -# -# The cursor keys also have different codes: -# control-up \E[162q -# control-down \E[165q -# control-left \E[159q -# control-right \E[168q -# -# shift-up \E[161q -# shift-down \E[164q -# shift-left \E[158q -# shift-right \E[167q -# -# control-tab \[072q -# -iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100), - am, - 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=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, - kend=\E[146q, kent=^M, kf1=\E[001q, kf10=\E[010q, - kf11=\E[011q, kf12=\E[012q, kf2=\E[002q, kf3=\E[003q, - kf4=\E[004q, kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, - kf8=\E[008q, kf9=\E[009q, khome=\E[H, 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, -iris-ansi-ap|IRIS ANSI in application-keypad mode, - is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q, - kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi, - -# 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@, rc=\E8, ritm=\E[23m, - rmul=\E[24m, rs1=\Ec, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sitm=\E[3m, use=vt100+enq, use=klone+color, - use=iris-ansi-ap, - -# The following is a version of the ibm-pc entry distributed with PC/IX, -# (Interactive Systems' System 3 for the Big Blue), modified by Richard -# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original, -# (the former is untrue, and the latter failed under UCB/man); standout and -# underline modes have been added. Note: this entry describes the "native" -# capabilities of the PC monochrome display, without ANY emulation; most -# communications packages (but NOT PC/IX connect) do some kind of emulation. -pcix|PC/IX console, - am, bw, eo, - cols#80, lines#24, - clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K, - home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, - -# (ibmpcx: this entry used to be known as ibmx. -# It formerly included the following extension capabilities: -# :GC=b:GL=v:GR=t:RT=^J:\ -# :GH=\E[196g:GV=\E[179g:\ -# :GU=\E[193g:GD=\E[194g:\ -# :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\ -# :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\ -# :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\ -# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate -# ":kh=\E[Y:". Added IBM-PC forms characters and highlights, they match -# what was there before. -- esr) -ibmpcx|xenix|ibmx|IBM PC xenix console display, - OTbs, am, msgr, - cols#80, lines#25, - clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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=klone+acs, use=klone+sgr8, - -#### QNX -# - -# QNX 4.0 Console -# Michael's original version of this entry had , , -# ; this was so terminfo applications could write the lower -# right corner without triggering a scroll. The ncurses terminfo library can -# handle this case with the capability, and prefers for better -# optimization. Bug: The capability resets attributes. -# From: Michael Hunter 30 Jul 1996 -# (removed: ) -qnx|qnx4|qnx console, - daisy, km, mir, msgr, xhpa, xt, - colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8, - acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t\303u\264v\301w\302x\263, - bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ, - cnorm=\Ey1, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2, - dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee, - il1=\EE, ind=^J, kBEG=\377\356, kCAN=\377\263, - kCMD=\377\267, kCPY=\377\363, kCRT=\377\364, - kDL=\377\366, kEND=\377\301, kEOL=\377\311, - kEXT=\377\367, kFND=\377\370, kHLP=\377\371, - kHOM=\377\260, kIC=\377\340, kLFT=\377\264, - kMOV=\377\306, kMSG=\377\304, kNXT=\377\272, - kOPT=\377\372, kPRT=\377\275, kPRV=\377\262, - kRDO=\377\315, kRES=\377\374, kRIT=\377\266, - kRPL=\377\373, kSAV=\377\307, kSPD=\377\303, - kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0, - kclo=\377\343, kclr=\377\341, kcmd=\377\245, - kcpy=\377\265, kcrt=\377\305, kctab=\377\237, - kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246, - kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274, - ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320, - kext=\377\270, kf1=\377\201, kf10=\377\212, - kf11=\377\256, kf12=\377\257, kf13=\377\213, - kf14=\377\214, kf15=\377\215, kf16=\377\216, - kf17=\377\217, kf18=\377\220, kf19=\377\221, - kf2=\377\202, kf20=\377\222, kf21=\377\223, - kf22=\377\224, kf23=\377\333, kf24=\377\334, - kf25=\377\225, kf26=\377\226, kf27=\377\227, - kf28=\377\230, kf29=\377\231, kf3=\377\203, - kf30=\377\232, kf31=\377\233, kf32=\377\234, - kf33=\377\235, kf34=\377\236, kf35=\377\276, - kf36=\377\277, kf37=\377\321, kf38=\377\322, - kf39=\377\323, kf4=\377\204, kf40=\377\324, - kf41=\377\325, kf42=\377\326, kf43=\377\327, - kf44=\377\330, kf45=\377\331, kf46=\377\332, - kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206, - kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346, - khlp=\377\350, khome=\377\240, khts=\377\342, - kich1=\377\253, kil1=\377\273, kind=\377\261, - kmov=\377\351, kmrk=\377\355, kmsg=\377\345, - knp=\377\252, knxt=\377\312, kopn=\377\357, - kopt=\377\353, kpp=\377\242, kprt=\377\255, - kprv=\377\302, krdo=\377\336, kref=\377\354, - kres=\377\360, krfr=\377\347, kri=\377\271, - krmir=\377\313, krpl=\377\362, krst=\377\352, - ksav=\377\361, kslt=\377\247, kspd=\377\335, - ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER, - rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER, - rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d, - setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei, - smso=\E(, smul=\E[, -# -# -qnxt|qnxt4|QNX4 terminal, - crxm, use=qnx4, -# -qnxm|QNX4 with mouse events, - maddr#1, - chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h, - mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l, - mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l, - smicm=\E/>2h, use=qnx4, -# -qnxw|QNX4 windows, - xvpa, use=qnxm, -# -# Monochrome QNX4 terminal or console. Setting this terminal type will -# allow an application running on a color console to behave as if it -# were a monochrome terminal. Output will be through stdout instead of -# console writes because the term routines will recognize that the -# terminal name starts with 'qnxt'. -# -qnxtmono|Monochrome QNX4 terminal or console, - colors@, pairs@, - scp@, use=qnx4, - -# From: Federico Bianchi , 1 Jul 1998 -# (esr: commented out and to avoid warnings.) -# (TD: derive from original qnx4 entry) -qnxt2|qnx 2.15 serial terminal, - am, - civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@, - rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4, - -# QNX ANSI terminal definition -qansi-g|QNX ANSI, - am, eslok, hs, xon, - colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80, - acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l, - fsl=\E[?6h\E8, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, - ind=\E[S, indn=\E[%p1%dS, invis=\E[9m, - is2=\E>\E[?1l\E[?7h\E[0;10;39;49m, is3=\E(B\E)0, - kBEG=\ENn, kCAN=\E[s, kCMD=\E[t, kCPY=\ENs, kCRT=\ENt, - kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kHOM=\E[h, - kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c, - kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa, - kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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~, - 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, - khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a, - kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo, - kopt=\ENk, 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, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\E[T, - rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmso=\E[27m, - rmul=\E[24m, 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}%=%t3%e%p1%d%;m, - 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%;%?%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, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, - tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, -# -qansi|QNX ansi with console writes, - daisy, xhpa, use=qansi-g, -# -qansi-t|QNX ansi without console writes, - crxm, use=qansi, -# -qansi-m|QNX ansi with mouse, - maddr#1, - chr=\E[, cvr=\E], is1=\E[0t, mcub=\E[>1h, mcub1=\E[>7h, - mcud=\E[>1h, mcud1=\E[>1l\E[>9h, mcuf=\E[>1h\E[>9l, - mcuf1=\E[>7l, mcuu=\E[>6h, mcuu1=\E[>6l, rmicm=\E[>2l, - smicm=\E[>2h, use=qansi, -# -qansi-w|QNX ansi for windows, - xvpa, use=qansi-m, - -#### NetBSD consoles -# -# pcvt termcap database entries (corresponding to release 3.31) -# Author's last edit-date: [Fri Sep 15 20:29:10 1995] -# -# (For the terminfo master file, I translated these into terminfo syntax. -# Then I dropped all the pseudo-HP entries. we don't want and can't use -# the :Xs: flag. Then I split :is: into a size-independent and a -# size-dependent . Finally, I added / -- esr) - -# NOTE: has been taken out of this entry. for reference, it should -# be . For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below. -# (esr: added and to resolve NetBSD Problem Report #4583) -pcvtXX|pcvt vt200 emulator (DEC VT220), - am, km, mir, msgr, xenl, - it#8, vt#3, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, 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@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS, - is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=\177, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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, rc=\E8, rev=\E[7m, rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - ri=\EM, rin=\E[%p1%dT, 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, sc=\E7, - 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, - -# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor) -# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and -# 50 lines entries; 80 columns -pcvt25|dec vt220 emulation with 25 lines, - cols#80, lines#25, - is2=\E[1;25r\E[25;1H, use=pcvtXX, -pcvt28|dec vt220 emulation with 28 lines, - cols#80, lines#28, - is2=\E[1;28r\E[28;1H, use=pcvtXX, -pcvt35|dec vt220 emulation with 35 lines, - cols#80, lines#35, - is2=\E[1;35r\E[35;1H, use=pcvtXX, -pcvt40|dec vt220 emulation with 40 lines, - cols#80, lines#40, - is2=\E[1;40r\E[40;1H, use=pcvtXX, -pcvt43|dec vt220 emulation with 43 lines, - cols#80, lines#43, - is2=\E[1;43r\E[43;1H, use=pcvtXX, -pcvt50|dec vt220 emulation with 50 lines, - cols#80, lines#50, - is2=\E[1;50r\E[50;1H, use=pcvtXX, - -# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor) -# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and -# 50 lines entries; 132 columns -pcvt25w|dec vt220 emulation with 25 lines and 132 cols, - cols#132, lines#25, - is2=\E[1;25r\E[25;1H, use=pcvtXX, -pcvt28w|dec vt220 emulation with 28 lines and 132 cols, - cols#132, lines#28, - is2=\E[1;28r\E[28;1H, use=pcvtXX, -pcvt35w|dec vt220 emulation with 35 lines and 132 cols, - cols#132, lines#35, - is2=\E[1;35r\E[35;1H, use=pcvtXX, -pcvt40w|dec vt220 emulation with 40 lines and 132 cols, - cols#132, lines#40, - is2=\E[1;40r\E[40;1H, use=pcvtXX, -pcvt43w|dec vt220 emulation with 43 lines and 132 cols, - cols#132, lines#43, - is2=\E[1;43r\E[43;1H, use=pcvtXX, -pcvt50w|dec vt220 emulation with 50 lines and 132 cols, - cols#132, lines#50, - is2=\E[1;50r\E[50;1H, use=pcvtXX, - -# 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, - -# Terminfo entries to enable the use of the ncurses library in colour on a -# NetBSD-arm32 console (only tested on a RiscPC). -# Created by Dave Millen 22.07.98 -# modified codes for setf/setb to setaf/setab, then to klone+color, corrected -# typo in invis - TD -arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480), - am, bce, msgr, xenl, xon, - cols#80, it#8, lines#30, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, - enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, - invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H, - kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x, - kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v, - kf8=\E[l, kf9=\E[w, rc=\E8, 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, - sc=\E7, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<2>, - sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, - smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ecma+sgr, - use=klone+color, - -arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768), - cols#132, lines#50, use=arm100, - -# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine -# manufactured by Sharp for the Japenese market. -# From Minoura Makoto , 12 May 1996 -x68k|x68k-ite|NetBSD/x68k ITE, - cols#96, lines#32, - kclr=\E[9~, khlp=\E[28~, use=vt220, - -# : -# Entry for the DNARD OpenFirmware console, close to ANSI but not quite. -# -# (still unfinished, but good enough so far.) -ofcons|DNARD OpenFirmware console, - bw, - cols#80, lines#30, - bel=^G, blink=\2337;2m, bold=\2331m, clear=^L, cr=^M, - cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B, - cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, - cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P, - dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K, - flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL, - il1=\233L, ind=^J, invis=\2338m, kbs=^H, kcub1=\233D, - kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P, - kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W, - kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r, - kf9=\2330p, knp=\233/, kpp=\233?, nel=^M^J, rev=\2337m, - rmso=\2330m, rmul=\2330m, - sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, - sgr0=\2330m, - -# NetBSD "wscons" emulator in vt220 mode. -# This entry is based on the NetBSD termcap entry, correcting the ncv value. -# The emulator renders underlined text in red. Colors are otherwise usable. -# -# Testing the emulator and reading the source code (NetBSD 2.0), it appears -# that "vt220" is inaccurate. There are a few vt220-features, but most of the -# vt220 screens in vttest do not work with this emulator. For instance, it -# identifies itself (primary DA response) as a vt220 with selective erase. But -# the selective erase feature does not work. The secondary response is copied -# from Kermit's emulation of vt220, does not correspond to actual vt220. At -# the level of detail in a termcap, it is a passable emulator, since ECH does -# work. Don't use it on a VMS system -TD -wsvt25|NetBSD wscons in 25 line DEC VT220 mode, - bce, msgr, - colors#8, cols#80, it#8, lines#25, ncv#2, pairs#64, - is2=\E[r\E[25;1H, 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~, khome=\E[7~, op=\E[m, rs1=\Ec, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=vt220, - -wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta, - km, use=wsvt25, - -# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and -# DECstation/pmax. -rcons|BSD rasterconsole, - use=sun-il, -# Color version of above. Color currently only provided by NetBSD. -rcons-color|BSD rasterconsole with ANSI color, - bce, - colors#8, pairs#64, - op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=rcons, - -# mgterm -- MGL/MGL2, MobileGear Graphic Library -# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k} -# -- the setf/setb are probably incorrect, more likely setaf/setab -TD -# -- compare with cons25w -mgterm, - 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, clear=\E[H\E[J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, 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, khome=\E[H, kich1=\E[L, knp=\E[G, kpp=\E[I, - nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, - rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, setb=\E[4%p1%dm, - setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, vpa=\E[%i%p1%dd, - -#### FreeBSD console entries -# -# From: Andrey Chernov 29 Mar 1996 -# Andrey Chernov maintains the FreeBSD termcap distributions. -# -# Note: Users of FreeBSD 2.1.0 and older versions must either upgrade -# or comment out the :cb: capability in the console entry. -# -# Alexander Lukyanov reports: -# I have seen FreeBSD-2.1.5R... The old el1 bug changed, but it is still there. -# Now el1 clears not only to the line beginning, but also a large chunk -# of previous line. But there is another bug - ech does not work at all. -# - -# for syscons -# common entry without semigraphics -# Bug: The capability resets attributes. -# Bug? The ech and el1 attributes appear to move the cursor in some cases; for -# instance el1 does if the cursor is moved to the right margin first. Removed -# by T.Dickey 97/5/3 (ech=\E[%p1%dX, el1=\E[1K) -# -# Setting colors turns off reverse; we cannot guarantee order, so use ncv. -# Note that this disables standout with color. -# -# The emulator sends difference strings based on shift- and control-keys, -# like scoansi: -# F13-F24 are shifted F1-F12 -# F25-F36 are control F1-F12 -# F37-F48 are shift+control F1-F12 -cons25w|ansiw|ansi80x25-raw|freebsd console (25-line raw mode), - am, bce, bw, eo, msgr, npc, - colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cnorm=\E[=0C, cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, - cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kb2=\E[E, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, 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, khome=\E[H, kich1=\E[L, - knp=\E[G, kpp=\E[I, nel=\E[E, op=\E[x, rc=\E8, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, rs2=\E[x\E[m\Ec, sc=\E7, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - 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, -cons25|ansis|ansi80x25|freebsd console (25-line ansi mode), - acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~\371, - use=cons25w, -cons25-debian|freebsd console with debian backspace (25-line ansi mode), - kbs=\177, 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, -cons30|ansi80x30|freebsd console (30-line ansi mode), - lines#30, use=cons25, -cons30-m|ansi80x30-mono|freebsd console (30-line mono ansi mode), - lines#30, use=cons25-m, -cons43|ansi80x43|freebsd console (43-line ansi mode), - lines#43, use=cons25, -cons43-m|ansi80x43-mono|freebsd console (43-line mono ansi mode), - lines#43, use=cons25-m, -cons50|ansil|ansi80x50|freebsd console (50-line ansi mode), - lines#50, use=cons25, -cons50-m|ansil-mono|ansi80x50-mono|freebsd console (50-line mono ansi mode), - lines#50, use=cons25-m, -cons60|ansi80x60|freebsd console (60-line ansi mode), - lines#60, use=cons25, -cons60-m|ansi80x60-mono|freebsd console (60-line mono ansi mode), - lines#60, use=cons25-m, -cons25r|pc3r|ibmpc3r|cons25-koi8-r|freebsd console w/koi8-r cyrillic, - acsc=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m\204n\212q\0t\206u\207v\211w\210x\201y\230z\231~\225, - 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@, - 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, -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), - lines#50, use=cons25r-m, -cons60r|cons60-koi8r|freebsd console w/koi8-r cyrillic (60 lines), - lines#60, use=cons25r, -cons60r-m|cons60-koi8r-m|freebsd console w/koi8-r cyrillic (60-line mono), - lines#60, use=cons25r-m, -# ISO 8859-1 FreeBSD console -cons25l1|cons25-iso8859|freebsd console w/iso 8859-1 chars, - acsc=+\253\,\273-\030.\031`\201a\202f\207g\210i\247j\213k\214l\215m\216n\217o\220p\221q\222r\223s\224t\225u\226v\227w\230x\231y\232z\233~\237, - 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, -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), - lines#50, use=cons25l1-m, -cons60l1|cons60-iso|freebsd console w/iso 8859-1 chars (60 lines), - lines#60, use=cons25l1, -cons60l1-m|cons60-iso-m|freebsd console w/iso 8859-1 chars (60-line mono), - lines#60, use=cons25l1-m, - -#### 386BSD and BSD/OS Consoles -# - -# This was the original 386BSD console entry (I think). -# Some places it's named oldpc3|oldibmpc3. -# From: Alex R.N. Wetmore -origpc3|origibmpc3|IBM PC 386BSD Console, - OTbs, am, bw, eo, xon, - cols#80, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bold=\E[7m, clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K, - home=\E[H, ind=\E[S, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x, - rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x, - smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x, - -# description of BSD/386 console emulator in version 1.0 (supplied by BSDI) -oldpc3|oldibmpc3|old IBM PC BSD/386 Console, - OTbs, km, - lines#25, - bel=^G, bold=\E[=15F, cr=^M, cud1=^J, dim=\E[=8F, dl1=\E[M, - ht=^I, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F, - knp=\E[G, kpp=\E[I, nel=^M^J, sgr0=\E[=R, - -# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1 -# Note, the emulator supports many of the additional console features -# listed in the iBCS2 (e.g. character-set selection) though not all -# are described here. This entry really ought to be upgraded. -# Also note, the console will also work with fewer lines after doing -# "stty rows NN", e.g. to use 24 lines. -# (Color support from Kevin Rosenberg , 2 May 1996) -# Bug: The capability resets attributes. -bsdos-pc|IBM PC BSD/OS Console, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - use=bsdos-pc-nobold, - -bsdos-pc-nobold|BSD/OS PC console w/o bold, - use=klone+color, use=bsdos-pc-m, - -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=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, - kll=\E[F, knp=\E[G, kpp=\E[I, nel=^M^J, 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=klone+sgr8, - -# Old names for BSD/OS PC console used in releases before 4.1. -pc3|BSD/OS on the PC Console, - use=bsdos-pc-nobold, -ibmpc3|pc3-bold|BSD/OS on the PC Console with bold instead of underline, - use=bsdos-pc, - -# BSD/OS on the SPARC -bsdos-sparc|Sun SPARC BSD/OS Console, - use=sun, - -# BSD/OS on the PowerPC -bsdos-ppc|PowerPC BSD/OS Console, - use=bsdos-pc, - -#### DEC VT52 -# (// capabilities aren't in DEC's official entry -- esr) -# -# Actually (TD pointed this out at the time the acsc string was added): -# vt52 shouldn't define full acsc since most of the cells don't match. -# see vt100 manual page A-31. This is the list that does match: -# f degree -# g plus/minus -# h right-arrow -# k down-arrow -# m scan-1 -# o scan-3 -# q scan-5 -# s scan-7 -# The line-drawing happens to work in several terminal emulators, but should -# not be used as a guide to the capabilities of the vt52. Note in particular -# that vt52 does not support line-drawing characters (the scan-X values refer -# to a crude plotting feature) -TD -vt52|dec vt52, - OTbs, - cols#80, it#8, lines#24, - acsc=+h.k0affggolpnqprrss, bel=^G, clear=\EH\EJ, cr=^M, - cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF, - -#### DEC VT100 and compatibles -# -# DEC terminals from the vt100 forward are collected here. Older DEC terminals -# and micro consoles can be found in the `obsolete' section. More details on -# the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be -# found near the end of this file. -# -# Except where noted, these entries are DEC's official terminfos. -# Contact Bill Hedberg of Terminal Support -# Engineering for more information. Updated terminfos and termcaps -# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps. -# -# In October 1995 DEC sold its terminals business, including the VT and Dorio -# line and trademark, to SunRiver Data Systems. SunRiver has since changed -# its name to Boundless Technologies; see http://www.boundless.com. -# - -# NOTE: Any VT100 emulation, whether in hardware or software, almost -# certainly includes what DEC called the `Level 1 editing extension' codes; -# only the very oldest VT100s lacked these and there probably aren't any of -# those left alive. To capture these, use one of the VT102 entries. -# -# Note that the glitch in vt100 is not quite the same as on the Concept, -# since the cursor is left in a different position while in the -# weird state (concept at beginning of next line, vt100 at end -# of this line) so all versions of vi before 3.7 don't handle -# right on vt100. The correct way to handle is when -# you output the char in column 80, immediately output CR LF -# and then assume you are in column 1 of the next line. If -# is on, am should be on too. -# -# I assume you have smooth scroll off or are at a slow enough baud -# rate that it doesn't matter (1200? or less). Also this assumes -# that you set auto-nl to "on", if you set it off use vt100-nam -# below. -# -# The padding requirements listed here are guesses. It is strongly -# recommended that xon/xoff be enabled, as this is assumed here. -# -# The vt100 uses and rather than // because the -# tab settings are in non-volatile memory and don't need to be -# reset upon login. Also setting the number of columns glitches -# the screen annoyingly. You can type "reset" to get them set. -# -# The VT100 series terminals have cursor ("arrows") keys which can operate -# in two different modes: Cursor Mode and Application Mode. Cursor Mode -# is the reset state, and is assumed to be the normal state. Application -# Mode is the "set" state. In Cursor Mode, the cursor keys transmit -# "Esc [ {code}" sequences, conforming to ANSI standards. In Application -# Mode, the cursor keys transmit "Esc O " sequences. Application Mode -# was provided primarily as an aid to the porting of VT52 applications. It is -# assumed that the cursor keys are normally in Cursor Mode, and expected that -# applications such as vi will always transmit the string. Therefore, -# the definitions for the cursor keys are made to match what the terminal -# transmits after the string is transmitted. If the string -# is a null string or is not defined, then cursor keys are assumed to be in -# "Cursor Mode", and the cursor keys definitions should match that assumption, -# else the application may fail. It is also expected that applications will -# always transmit the string to the terminal before they exit. -# -# The VT100 series terminals have an auxiliary keypad, commonly referred to as -# the "Numeric Keypad", because it is a cluster of numeric and function keys. -# The Numeric Keypad which can operate in two different modes: Numeric Mode and -# Application Mode. Numeric Mode is the reset state, and is assumed to be -# the normal state. Application Mode is the "set" state. In Numeric Mode, -# the numeric and punctuation keys transmit ASCII 7-bit characters, and the -# Enter key transmits the same as the Return key (Note: the Return key -# can be configured to send either LF (\015) or CR LF). In Application Mode, -# all the keypad keys transmit "Esc O {code}" sequences. The PF1 - PF4 keys -# always send the same "Esc O {code}" sequences. It is assumed that the keypad -# is normally in Numeric Mode. If an application requires that the keypad be -# in Application Mode then it is expected that the user, or the application, -# will set the TERM environment variable to point to a terminfo entry which has -# defined the string to include the codes that switch the keypad into -# Application Mode, and the terminfo entry will also define function key -# fields to match the Application Mode control codes. If the string -# is a null string or is not defined, then the keypad is assumed to be in -# Numeric Mode. If the string switches the keypad into Application -# Mode, it is expected that the string will contain the control codes -# necessary to reset the keypad to "Normal" mode, and it is also expected that -# applications which transmit the string will also always transmit the -# string to the terminal before they exit. -# -# Here's a diagram of the VT100 keypad keys with their bindings. -# The top line is the name of the key (some DEC keyboards have the keys -# labelled somewhat differently, like GOLD instead of PF1, but this is -# the most "official" name). The second line is the escape sequence it -# generates in Application Keypad mode (where "$" means the ESC -# character). The third line contains two items, first the mapping of -# the key in terminfo, and then in termcap. -# _______________________________________ -# | PF1 | PF2 | PF3 | PF4 | -# | $OP | $OQ | $OR | $OS | -# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_| -# | 7 8 9 - | -# | $Ow | $Ox | $Oy | $Om | -# |_kf9__k9_|_kf10_k;_|_kf0__k0_|_________| -# | 4 | 5 | 6 | , | -# | $Ot | $Ou | $Ov | $Ol | -# |_kf5__k5_|_kf6__k6_|_kf7__k7_|_kf8__k8_| -# | 1 | 2 | 3 | | -# | $Oq | $Or | $Os | enter | -# |_ka1__K1_|_kb2__K2_|_ka3__K3_| $OM | -# | 0 | . | | -# | $Op | $On | | -# |___kc1_______K4____|_kc3__K5_|_kent_@8_| -# -# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the -# terminfo guidelines. That is a compromise used to assign the remaining -# keys on the keypad to kf5-kf0, used on older systems with legacy termcap -# support: -vt100+keypad|dec vt100 numeric keypad no fkeys, - ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn, -vt100+pfkeys|dec vt100 numeric keypad, - kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - use=vt100+keypad, -vt100+fnkeys|dec vt100 numeric keypad, - kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, - kf9=\EOw, use=vt100+pfkeys, -# -# A better adaptation to modern keyboards such as the PC's, which have a dozen -# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to -# use the 5-key arrangement to model the arrow keys as suggested in the -# terminfo guidelines: -# _______________________________________ -# | PF1 | PF2 | PF3 | PF4 | -# | $OP | $OQ | $OR | $OS | -# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_| -# | 7 8 9 - | -# | $Ow | $Ox | $Oy | $Om | -# |_ka1__K1_|_________|_ka3__K3_|_________| -# | 4 | 5 | 6 | , | -# | $Ot | $Ou | $Ov | $Ol | -# |_________|_kb2__K2_|_________|_________| -# | 1 | 2 | 3 | | -# | $Oq | $Or | $Os | enter | -# |_kc1__K4_|_________|_kc3__K5_| $OM | -# | 0 | . | | -# | $Op | $On | | -# |___________________|_________|_kent_@8_| -# -vt220+keypad|dec vt220 numeric keypad, - ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ka2=\EOx, kb1=\EOt, - kb3=\EOv, kc2=\EOr, -# -vt100+enq|ncurses extension for vt100-style ENQ, - u8=\E[?1;2c, use=ansi+enq, -vt102+enq|ncurses extension for vt102-style ENQ, - u8=\E[?6c, use=ansi+enq, -# -# And here, for those of you with orphaned VT100s lacking documentation, is -# a description of the soft switches invoked when you do `Set Up'. -# -# Scroll 0-Jump Shifted 3 0-# -# | 1-Smooth | 1-British pound sign -# | Autorepeat 0-Off | Wrap Around 0-Off -# | | 1-On | | 1-On -# | | Screen 0-Dark Bkg | | New Line 0-Off -# | | | 1-Light Bkg | | | 1-On -# | | | Cursor 0-Underline | | | Interlace 0-Off -# | | | | 1-Block | | | | 1-On -# | | | | | | | | -# 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 <--Standard Settings -# | | | | | | | | -# | | | Auto XON/XOFF 0-Off | | | Power 0-60 Hz -# | | | 1-On | | | 1-50 Hz -# | | Ansi/VT52 0-VT52 | | Bits Per Char. 0-7 Bits -# | | 1-ANSI | | 1-8 Bits -# | Keyclick 0-Off | Parity 0-Off -# | 1-On | 1-On -# Margin Bell 0-Off Parity Sense 0-Odd -# 1-On 1-Even -# -# The following SET-UP modes are assumed for normal operation: -# ANSI_MODE AUTO_XON/XOFF_ON NEWLINE_OFF 80_COLUMNS -# WRAP_AROUND_ON JUMP_SCROLL_OFF -# Other SET-UP modes may be set for operator convenience or communication -# requirements; I recommend -# AUTOREPEAT_ON BLOCK_CURSOR MARGIN_BELL_OFF SHIFTED_3_# -# Unless you have a graphics add-on such as Digital Engineering's VT640 -# (and even then, whenever it can be arranged!) you should set -# INTERLACE_OFF -# -# (vt100: I added / based on the init string, also . -- esr) -vt100|vt100-am|dec vt100 (w/advanced video), - OTbs, am, mc5i, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, - enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, lf1=pf1, - lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, - rc=\E8, 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, sc=\E7, - 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[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, - use=vt100+fnkeys, -vt100nam|vt100-nam|vt100 no automargins, - am@, xenl@, use=vt100-am, -vt100-vb|dec vt100 (w/advanced video) & no beep, - bel@, flash=\E[?5h\E[?5l, use=vt100, - -# Ordinary vt100 in 132 column ("wide") mode. -vt100-w|vt100-w-am|dec vt100 132 cols (w/advanced video), - cols#132, lines#24, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-am, -vt100-w-nam|vt100-nam-w|dec vt100 132 cols (w/advanced video no automargin), - cols#132, lines#14, vt@, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-nam, - -# 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, -vt100-nav-w|vt100-w-nav|dec vt100 132 cols 14 lines (no advanced video option), - cols#132, lines#14, use=vt100-nav, - -# vt100 with one of the 24 lines used as a status line. -# We put the status line on the top. -vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline, - eslok, hs, - lines#23, - clear=\E[2;1H\E[J$<50>, csr=\E[%i%i%p1%d;%p2%dr, - cup=\E[%i%p1%{1}%+%d;%p2%dH$<5>, dsl=\E7\E[1;24r\E8, - fsl=\E8, home=\E[2;1H, is2=\E7\E[2;24r\E8, - tsl=\E7\E[1;%p1%dH\E[1K, use=vt100-am, - -# Status line at bottom. -# Clearing the screen will clobber status line. -vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline, - eslok, hs, - lines#23, - dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H, - tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am, - -# Most of the `vt100' emulators out there actually emulate a vt102 -# 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, - use=vt100, -vt102-w|dec vt102 in wide mode, - cols#132, - rs3=\E[?3h, use=vt102, - -# Many brain-dead PC comm programs that pretend to be `vt100-compatible' -# fail to interpret the ^O and ^N escapes properly. Symptom: the -# string in the canonical vt100 entry above leaves the screen littered -# with little snowflake or star characters (IBM PC ROM character \017 = ^O) -# after highlight turnoffs. This entry should fix that, and even leave -# ACS support working, at the cost of making multiple-highlight changes -# slightly more expensive. -# From: Eric S. Raymond July 22 1995 -vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes), - sgr@, sgr0=\E[m, use=vt102, - -# VT125 Graphics CRT. Clear screen also erases graphics -# Some vt125's came configured with vt102 support. -vt125|vt125 graphics terminal, - mir, - clear=\E[H\E[2J\EPpS(E)\E\\$<50>, use=vt100, - -# This isn't a DEC entry, it came from University of Wisconsin. -# (vt131: I added / based on the init string, also -- esr) -vt131|dec vt131, - OTbs, am, xenl, - cols#80, it#8, lines#24, vt#3, - bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, 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=^M^J, rc=\E8, 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, sc=\E7, - sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=, - smso=\E[7m$<2/>, smul=\E[4m$<2/>, - -# vt132 - like vt100 but slower and has ins/del line and such. -# I'm told that / are backwards in the terminal from the -# manual and from the ANSI standard, this describes the actual -# terminal. I've never actually used a vt132 myself, so this -# is untested. -# -vt132|DEC vt132, - xenl, - dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, - ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100, - -# This vt220 description maps F5--F9 to the second block of function keys -# at the top of the keyboard. The "DO" key is used as F10 to avoid conflict -# with the key marked (ESC) on the vt220. See vt220d for an alternate mapping. -# PF1--PF4 are used as F1--F4. -# -vt220-old|vt200-old|DEC VT220 in vt100 emulation mode, - OTbs, OTpt, am, mir, xenl, xon, - cols#80, lines#24, vt#3, - OTnl=^J, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, civis=\E[?25l, - clear=\E[H\E[2J$<50>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>, - is2=\E[1;24r\E[24;1H, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, 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~, knp=\E[6~, kpp=\E[5~, rc=\E8, - rev=\E[7m$<2>, rf=/home/martino/avrdude-build-script/objdir/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, sc=\E7, - 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, - -# A much better description of the VT200/220; used to be vt220-8 -# changed rmacs/smacs from shift-in/shift-out to vt200-old's explicit G0/G1 -# designation to accommodate bug in pcvt -TD -vt220|vt200|dec vt220, - OTbs, am, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - il=\E[%p1%dL, il1=\E[L, ind=\ED, - is2=\E[?7h\E[>\E[?1h\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~, kfnd=\E[1~, khlp=\E[28~, - kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, mc0=\E[i, mc4=\E[4i, - mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, rmso=\E[27m, - rmul=\E[24m, rs1=\E[?3l, sc=\E7, - 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, -vt220-w|vt200-w|DEC vt220 in wide mode, - cols#132, - rs3=\E[?3h, use=vt220, -vt220-8bit|vt220-8|vt200-8bit|vt200-8|dec vt220/200 in 8-bit mode, - OTbs, am, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=^M, - csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H, - cud=\233%p1%dB, cud1=^J, cuf=\233%p1%dC, cuf1=\233C, - cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A, - dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, - ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0, - flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH, - ich=\233%p1%d@, if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - il=\233%p1%dL, il1=\233L, ind=\ED, - is2=\233?7h\233>\233?1h\E F\233?4l, kbs=^H, - kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, - 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, - 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, - -# vt220d: -# This vt220 description regards F6--F10 as the second block of function keys -# at the top of the keyboard. This mapping follows the description given -# in the VT220 Programmer Reference Manual and agrees with the labeling -# on some terminals that emulate the vt220. There is no support for an F5. -# 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, - -vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins, - am@, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220, - -# vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko -# (not an official DEC entry!) -# The problem with real vt220 terminals is they don't send escapes when in -# in vt220 mode. This can be gotten around two ways. 1> don't send -# escapes or 2> put the vt220 into vt100 mode and use all the nifty -# features of vt100 advanced video which it then has. -# -# This entry takes the view of putting a vt220 into vt100 mode so -# you can use the escape key in emacs and everything else which needs it. -# -# You probably don't want to use this on a VMS machine since VMS will think -# it has a vt220 and will get fouled up coming out of emacs -# -# From: Alexander Latzko , 30 Dec 1996 -# (Added vt100 , to quiet a tic warning -- esr) -vt200-js|vt220-js|dec vt200 series with jump scroll, - am, - cols#80, - bel=^G, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, - ht=^I, il1=\E[L, ind=\ED, - is2=\E[61"p\E[H\E[?3l\E[?4l\E[?1l\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=^M\ED, rc=\E8, - rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m, - rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=, - smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m, - -# This was DEC's vt320. Use the purpose-built one below instead -#vt320|DEC VT320 in vt100 emulation mode, -# use=vt220, - -# Use v320n for SCO's LYRIX. Otherwise, use Adam Thompson's vt320-nam. -# -vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode, - am@, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220, - -# These entries are not DEC's official ones, they were purpose-built for the -# VT320. Here are the designer's notes: -# is end on a PC kbd. Actually 'select' on a VT. Mapped to -# 'Erase to End of Field'... since nothing seems to use 'end' anyways... -# khome is Home on a PC kbd. Actually 'FIND' on a VT. -# Things that use usually use tab anyways... and things that don't use -# tab usually use instead... -# kprv is same as tab - Backtab is useless... -# I left out because of its RIDICULOUS complexity, -# and the resulting fact that it causes the termcap translation of the entry -# to SMASH the 1k-barrier... -# From: Adam Thompson Sept 10 1995 -# (vt320: uncommented --esr) -vt320|vt300|dec vt320 7 bit terminal, - am, eslok, hs, mir, msgr, xenl, - cols#80, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, fsl=\E[0$}, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, - il1=\E[L, ind=\ED, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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~, mc0=\E[i, mc4=\E[?4i, - mc5=\E[?5i, nel=\EE, rc=\E8, rev=\E[7m, - rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt300, ri=\EM, rmacs=\E(B, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - sc=\E7, - 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[1$}\E[H\E[K, use=vt220+keypad, -vt320-nam|vt300-nam|dec vt320 7 bit terminal with no am to make SAS happy, - am@, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - use=vt320, -# We have to init 132-col mode, not 80-col mode. -vt320-w|vt300-w|dec vt320 wide 7 bit terminal, - cols#132, wsl#132, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, - use=vt320, -vt320-w-nam|vt300-w-nam|dec vt320 wide 7 bit terminal with no am, - am@, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, - use=vt320-w, - -# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals -# which are pretty much a superset of the VT320. They have the -# host writable status line, yet another different DRCS matrix size, -# and such, but they add the DEC Technical character set, Multiple text -# pages, selectable length pages, and the like. The difference between -# the vt330 and vt340 is that the latter has only 2 planes and a monochrome -# monitor, the former has 4 planes and a color monitor. These terminals -# support VT131 and ANSI block mode, but as with much of these things, -# termcap/terminfo doesn't deal with these features. -# -# Note that this entry is are set up in what was the standard way for GNU -# Emacs v18 terminal modes to deal with the cursor keys in that the arrow -# keys were switched into application mode at the same time the numeric pad -# is switched into application mode. This changes the definitions of the -# arrow keys. Emacs v19 is smarter and mines its keys directly out of -# your termcap or terminfo entry, -# -# From: Daniel Glasser , 13 Oct 1993 -# (vt340: string capability "sb=\E[M" corrected to "sr"; -# also, added / based on the init string -- esr) -vt340|dec-vt340|vt330|dec-vt330|dec vt340 graphics terminal with 24 line page, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J, - cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, dsl=\E[2$~\r\E[1$}\E[K\E[$}, - ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$}, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, - il1=\E[L, ind=\ED, - is2=\E<\E F\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=^M\ED, rc=\E8, rev=\E[7m, - rf=/home/martino/avrdude-build-script/objdir/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, sc=\E7, - 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, - -# DEC doesn't supply a vt400 description, so we add Daniel Glasser's -# (originally written with vt420 as its primary name, and usable for it). -# -# VT400/420 -- This terminal is a superset of the vt320. It adds the multiple -# text pages and long text pages with selectable length of the vt340, along -# with left and right margins, rectangular area text copy, fill, and erase -# operations, selected region character attribute change operations, -# page memory and rectangle checksums, insert/delete column, reception -# macros, and other features too numerous to remember right now. TERMCAP -# can only take advantage of a few of these added features. -# -# Note that this entry is are set up in what was the standard way for GNU -# Emacs v18 terminal modes to deal with the cursor keys in that the arrow -# keys were switched into application mode at the same time the numeric pad -# is switched into application mode. This changes the definitions of the -# arrow keys. Emacs v19 is smarter and mines its keys directly out of -# your termcap entry, -# -# From: Daniel Glasser , 13 Oct 1993 -# (vt400: string capability ":sb=\E[M:" corrected to ":sr=\E[M:"; -# also, added / based on the init string -- esr) -vt400|vt400-24|dec-vt400|dec vt400 24x80 column autowrap, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J$<10/>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>, - el=\E[K$<4/>, flash=\E[?5h\E[?5l$<200/>, fsl=\E[$}, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, - is2=\E<\E F\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=^M\ED, rc=\E8, rev=\E[7m, - rf=/home/martino/avrdude-build-script/objdir/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<\E[?3l\E[!p\E[?7h, sc=\E7, - 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, - -# (vt420: I removed , it collided with . I also restored -# a missing -- esr) -vt420|DEC VT420, - am, mir, xenl, xon, - cols#80, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/vt300, il1=\E[L, 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, rc=\E8, rev=\E[7m$<2>, - rf=/home/martino/avrdude-build-script/objdir/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[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7, - 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, - smkx=\E=, smso=\E[7m, smul=\E[4m, - -# 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 -# straightforward (keys 1-5 are not defined on real terminals, though some -# emulators define these): -# -# if (key < 16) then value = key; -# else if (key < 21) then value = key + 1; -# else if (key < 25) then value = key + 2; -# else if (key < 27) then value = key + 3; -# else if (key < 30) then value = key + 4; -# else value = key + 5; -# -# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT". -# There's no provision in terminfo for emitting a string in this format, so the -# application has to know it. -# -vt420pc|DEC VT420 w/PC keyboard, - kdch1=\177, kend=\E[4~, kf1=\E[11~, 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~, 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, - 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, - -vt420pcdos|DEC VT420 w/PC for DOS Merge, - lines#25, - dispc=%?%p1%{19}%=%t\E\023\021%e%p1%{32}%<%t\E%p1%c%e%p1%{127}%=%t\E\177%e%p1%c%;, - pctrm@, - rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr@, - 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=\177, 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, - use=vt420, - -vt510|DEC VT510, - use=vt420, -vt510pc|DEC VT510 w/PC keyboard, - use=vt420pc, -vt510pcdos|DEC VT510 w/PC for DOS Merge, - use=vt420pcdos, - -# VT520/VT525 -# -# The VT520 is a monochrome text terminal capable of managing up to -# four independent sessions in the terminal. It has multiple ANSI -# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console) -# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950, -# 925 910+, ADDS A2). This terminfo data is for the ANSI emulations only. -# -# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or -# [Alt]/[Print Screen] depending upon which keyboard and which -# terminal mode is being used. If Set-Up has been disabled or -# assigned to an unknown key, Set-Up may be entered by pressing -# [F3] as the first key after power up, regardless of keyboard type. -# (vt520: I added / based on the init string, also -- esr) -vt520|DEC VT520, - am, mir, xenl, xon, - cols#80, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/vt300, il1=\E[L, 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, - 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\\, - rc=\E8, rev=\E[7m$<2>, rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt300, - ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, - rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7, - 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, - -# (vt525: I added / based on the init string; -# removed =\E[m, =\E[m, added -- esr) -vt525|DEC VT525, - am, mir, xenl, xon, - cols#80, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/vt300, il1=\E[L, 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, - 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\\, - rc=\E8, rev=\E[7m$<2>, rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt300, - ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, rmir=\E[4l, - rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - rmso=\E[m, rmul=\E[m, rs3=\E[?67h\E[64;1"p, sc=\E7, - 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, - -#### VT100 emulations -# - -# John Hawkinson tells us that the EWAN telnet for Windows -# (the best Windows telnet as of September 1995) presents the name `dec-vt100' -# to telnetd. Michael Deutschmann informs us -# that this works best with a stock vt100 entry. -dec-vt100|EWAN telnet's vt100 emulation, - use=vt100, - -# From: Adrian Garside <94ajg2@eng.cam.ac.uk>, 19 Nov 1996 -dec-vt220|DOS tnvt200 terminal emulator, - am@, use=vt220, - -# Zstem340 is an (IMHO) excellent VT emulator for PC's. I recommend it to -# anyone who needs PC VT340 emulation. (or anything below that level, for -# that matter -- DEC's ALL-in-1 seems happy with it, as does INFOPLUS's -# RDBM systems, it includes ReGIS and SiXel support! I'm impressed... -# I can send the address if requested. -# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr) -# From: Adam Thompson Sept 10 1995 -z340|zstem vt340 terminal emulator 132col 42line, - lines#42, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, - use=vt320-w, -z340-nam|zstem vt340 terminal emulator 132col 42line (no automatic margins), - am@, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, - use=z340, - -# CRT is shareware. It implements some xterm features, including mouse. -crt|crt-vt220|CRT 2.3 emulating VT220, - bce, msgr, - ncv@, - hts=\EH, use=vt100+enq, use=vt220, use=ecma+color, - -# PuTTY 0.55 (released 3 August 2004) -# http://www.chiark.greenend.org.uk/~sgtatham/putty/ -# -# Comparing with 0.51, vttest is much better (only a few problems with the -# cursor position reports and wrapping). -# -# PuTTY 0.51 (released 14 December 2000) -# -# This emulates vt100 + vt52 (plus a few vt220 features: ech, SRM, DECTCEM, as -# well as SCO and Atari, color palettes from Linux console). Reading the code, -# it is intended to be VT102 plus selected features. By default, it sets $TERM -# to xterm, which is incorrect, since several features are misimplemented: -# -# Alt+key always sends ESC+key, so 'km' capability is removed. -# -# Control responses, wrapping and tabs are buggy, failing a couple of -# screens in vttest. -# -# xterm mouse support is not implemented (unrelease version may). -# -# Several features such as backspace/delete are optional; this entry documents -# the default behavior -TD - -putty|PuTTY terminal emulator, - am, bce, bw, ccc, hs, mir, msgr, xenl, xon, XT, - colors#8, it#8, ncv#22, pairs#64, U8#1, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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\342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@%e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E%%G\340\202\242\E%%@%e%p1%c%;, - dl=\E[%p1%dM, dl1=\E[M, dsl=\E]0;\007, ech=\E[%p1%dX, - ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, hpa=\E[%i%p1%dG, - ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, - indn=\E[%p1%dS, - 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, - kb2=\E[G, kbs=\177, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[4~, - 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[1~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kspd=^Z, nel=^M^J, oc=\E]R, op=\E[39;49m, rc=\E8, rev=\E[7m, - ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, - rmcup=\E[2J\E[?47l, rmir=\E[4l, rmpch=\E[10m, - rmso=\E[27m, rmul=\E[24m, - rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l, - s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7, - 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, smacs=^N, smam=\E[?7h, smcup=\E[?47h, - smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E]0;, vpa=\E[%i%p1%dd, use=vt102+enq, -vt100-putty|Reset PuTTY to pure vt100, - rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p, - use=vt100, -# palette is hardcoded... -putty-256color|PuTTY 0.58 with xterm 256-colors, - initc@, use=xterm+256color, use=putty, - -# One of the keyboard selections is "VT100+". -# pterm (the X11 port) uses shifted F1-F10 as F11-F20 -putty-vt100|VT100+ keyboard layout, - 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, - -# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by -# T. Teranishi dated Mar 10, 1998. It is a free software terminal emulator -# (communication program) which supports: -# -# - Serial port connections. -# - TCP/IP (telnet) connections. -# - VT100 emulation, and selected VT200/300 emulation. -# - TEK4010 emulation. -# - File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and -# Quick-VAN). -# - Scripts using the "Tera Term Language". -# - Japanese and Russian character sets. -# -# The program does not come with terminfo or termcap entries. However, the -# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no -# vt52 or doublesize character support; blinking is done with color). Besides -# the HPA, VPA extensions it also implements CPL and CNL. -# -# All of the function keys can be remapped. This description shows the default -# mapping, as installed. Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys -# are supported. F13-F20 are obtained by shifting F3-F10. The editing keypad -# is laid out like vt220, rather than the face codes on the PC keyboard, i.e, -# kfnd Insert -# kslt Delete -# kich1 Home -# kdch1 PageUp -# kpp End -# knp PageDown -# -# ANSI colors are implemented, but cannot be combined with video attributes -# except for reverse. -# -# No fonts are supplied with the program, so the acsc string is chosen to -# correspond with the default Microsoft terminal font. -# -# Tera Term recognizes some xterm sequences, including those for setting and -# retrieving the window title, and for setting the window size (i.e., using -# "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, - km, xon@, - 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\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, clear=\E[H\E[J, - cnorm=\E[?25h, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h\E[?5l$<200/>, hpa=\E[%i%p1%dG, - il=\E[%p1%dL, il1=\E[L, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kslt=\E[4~, 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=vt100+enq, - use=klone+color, use=vt100, - -# Version 4.59 has regular vt100 line-drawing (so it is no longer necessary -# to choose a Windows OEM font). -# -# Testing with tack: -# - it does not have xenl (suppress that) -# - underline seems to work with color (modify ncv). -# Testing with vttest: -# - wrapping differs from vt100 (menu 1). -# - it recognizes xterm's X10 and normal mouse tracking, but none of the -# other flavors. -# - it recognizes the dtterm window controls for reporting size in -# characters and pixels. -# - it passes SIGWINCH. -teraterm4.59|Tera Term Pro, - bce, xenl@, - ncv#41, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - kmous=\E[M, use=teraterm2.3, - -teraterm|Tera Term, - use=teraterm4.59, - -# Tested with WinNT 4.0, the telnet application assumes the screensize is -# 25x80. This entry uses the 'Terminal' font, to get line-drawing characters. -# -# Other notes: -# a) Fails tack's cup (cursor-addressing) test, though cup works well enough -# for casual (occasional) use. Also fails several of the vttest screens, -# but that is not unusual for vt100 "emulators". -# b) Does not implement vt100 keypad -# c) Recognizes a subset of vt52 controls. -ms-vt100|MS telnet imitating dec vt100, - lines#25, - 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, - ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@, - kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, use=vt102+enq, use=vt100, - -# Tested with Windows 2000, the telnet application runs in a console window, -# also using 'Terminal' font. -# -# Other notes: -# a) This version has no function keys or numeric keypad. Unlike the older -# version, the numeric keypad is entirely ignored. -# b) The program sets $TERM to "ansi", which of course is inaccurate. -ms-vt100-color|vtnt|windows 2000 ansi (sic), - bce, - dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color, - use=ms-vt100, - -# Based on comments from Federico Bianchi: -# -# vt100+ is basically a VT102-noSGR with ANSI.SYS colors and a different -# scheme for PF keys. -# -# and PuTTY wishlist: -# -# The modifiers are represented as the codes listed above, prefixed to -# the normal sequences. If the modifier is pressed alone, its sequence -# is transmitted twice in succession. If multiple modifiers apply, -# they're transmitted in the order shift, control, alt. -# -# Shift \E^S -# Alt \E^A, -# Ctrl \E^C, -ms-vt100+|vt100+|windows XP vt100+ (sic), - kdch1=\E-, kend=\Ek, kf1=\E1, kf10=\E0, kf11=\E!, kf12=\E@, - kf13=\E\023\E1, kf14=\E\023\E2, kf15=\E\023\E3, - kf16=\E\023\E4, kf17=\E\023\E5, kf18=\E\023\E6, - kf19=\E\023\E7, kf2=\E2, kf20=\E\023\E8, kf21=\E\023\E9, - kf22=\E\023\E0, kf23=\E\023\E!, kf24=\E\023\E@, - kf25=\E\003\E1, kf26=\E\003\E2, kf27=\E\003\E3, - kf28=\E\003\E4, kf29=\E\003\E5, kf3=\E3, kf30=\E\003\E6, - kf31=\E\003\E7, kf32=\E\003\E8, kf33=\E\003\E9, - kf34=\E\003\E0, kf35=\E\003\E!, kf36=\E\003\E@, - kf37=\E\001\E1, kf38=\E\001\E2, kf39=\E\001\E3, kf4=\E4, - kf40=\E\001\E4, kf41=\E\001\E5, kf42=\E\001\E6, - kf43=\E\001\E7, kf44=\E\001\E8, kf45=\E\001\E9, - kf46=\E\001\E0, kf47=\E\001\E!, kf48=\E\001\E@, kf5=\E5, - kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, khome=\Eh, kich1=\E+, - knp=\E/, kpp=\E?, use=ms-vt100-color, - -ms-vt-utf8|vt-utf8|UTF-8 flavor of vt100+, - use=ms-vt100+, - -# expect-5.44.1.15/example/tkterm -# a minimal subset of a vt100 (compare with "news-unk). -# -# 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=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%p1%d;%p2%dH, cuu1=\E[A, ind=^J, 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, - -#### X terminal emulators -# -# You can add the following line to your .Xdefaults to change the terminal type -# set by the xterms you start up to my-xterm: -# -# *termName: my-xterm -# -# System administrators can change the default entry for xterm instances -# by adding a similar line to /usr/X11/lib/X11/app-defaults/XTerm. In either -# case, xterm will detect and reject an invalid terminal type, falling back -# to the default of xterm. -# - -# X10/6.6 11/7/86, minus alternate screen, plus (csr) -# (xterm: ":MT:" changed to ":km:"; added / based on init string; -# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E) -# as these seem not to work -- esr) -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=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, - il1=\E[L, ind=^J, 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, -# Compatible with the R5 xterm -# (from the XFree86 3.2 distribution, removed) -# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD -# corrected typos in rs2 string - TD -# added u6-u9 -TD -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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, - kdl1=\E[31~, kel=\E[8~, kend=\E[4~, 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~, kich1=\E[2~, - kil1=\E[30~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, - rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, - rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H, - sc=\E7, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=vt100+enq, -# Compatible with the R6 xterm -# (from XFree86 3.2 distribution, and added, removed) -# added khome/kend, hts based on the R6 xterm code - TD -# (khome/kend do not actually work in X11R5 or X11R6, but many people use this -# for compatibility with other emulators). -xterm-r6|xterm-old|xterm X11R6 version, - OTbs, am, km, mir, msgr, xenl, - cols#80, it#8, lines#24, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, - il1=\E[L, ind=^J, - is2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kdch1=\E[3~, 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7, - sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - use=vt100+enq, -# This is the base xterm entry for the xterm supplied with XFree86 3.2 & up. -# The name has been changed and some aliases have been removed. -xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System), - OTbs, am, bce, km, mir, msgr, xenl, - cols#80, it#8, lines#24, ncv@, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - 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, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, - is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, - kbeg=\EOE, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kdch1=\177, 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~, khome=\EOH, kich1=\E[2~, - kmous=\E[M, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, meml=\El, - memu=\Em, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, - rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[27m, rmul=\E[24m, rs1=^O, - rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, sc=\E7, - 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}%=%t3%e%p1%d%;m, - 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, smcup=\E7\E[?47h, - smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq, - use=ecma+color, use=vt220+keypad, - -# 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, - -# This version was released in XFree86 3.3.3 (November 1998). -# Besides providing printer support, it exploits a new feature that allows -# xterm to use terminfo-based descriptions with the titeInhibit resource. -# -- the distribution contained incorrect khome/kend values -TD -xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System), - mc5i, - blink=\E[5m, ich1@, invis=\E[8m, - is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, rmcup=\E[?1047l\E[?1048l, - rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - smcup=\E[?1048h\E[?1047h, use=xterm-xf86-v33, - -# This version was released in XFree86 4.0. -xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System), - npc, - kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~, - kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@, - ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF, - 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~, 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~, khome=\EOH, rmcup=\E[?1049l, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, - smcup=\E[?1049h, use=xterm-xf86-v333, - -# This version was released in XFree86 4.3. -xterm-xf86-v43|xterm terminal emulator (XFree86 4.3 Window System), - 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, - kbeg@, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - use=xterm-xf86-v40, - -# This version was released in XFree86 4.4. -xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System), - cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, indn=\E[%p1%dS, - rin=\E[%p1%dT, use=xterm-xf86-v43, - -xterm-xfree86|xterm terminal emulator (XFree86), - use=xterm-xf86-v44, - -# This version reflects the current xterm features. -xterm-new|modern xterm terminal emulator, - npc, - indn=\E[%p1%dS, kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, - kIC=\E[2;2~, kNXT=\E[6;2~, kPRV=\E[5;2~, kb2=\EOE, - kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kend=\EOF, kent=\EOM, khome=\EOH, kich1=\E[2~, kmous=\E[M, - knp=\E[6~, kpp=\E[5~, rin=\E[%p1%dT, use=xterm+pcfkeys, - use=xterm-basic, -# -# This fragment describes as much of XFree86 xterm's "pc-style" function -# keys as will fit into terminfo's 60 function keys. -# From ctlseqs.ms: -# Code Modifiers -# --------------------------------- -# 2 Shift -# 3 Alt -# 4 Shift + Alt -# 5 Control -# 6 Shift + Control -# 7 Alt + Control -# 8 Shift + Alt + Control -# --------------------------------- -# The meta key may also be used as a modifier in this scheme, adding another -# bit to the parameter. -xterm+pcfkeys|fragment for PC-style fkeys, - use=xterm+app, use=xterm+pcf2, use=xterm+pcc2, - use=xterm+pce2, -# -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+app|fragment with cursor keys in application mode, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF, - khome=\EOH, -# -# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27) -# and revised in patch #167 (2002/8/24). Some other terminal emulators copied -# the earlier scheme, as noted in the "use=" clauses in this file. -# -# The original assignments from patch #94 for cursor-keys had some technical -# issues: -# -# A parameter for a function-key to represent a modifier is just more -# bits. But for a cursor-key it may change the behavior of the -# application. For instance, emacs decodes the first parameter of a -# cursor-key as a repeat count. -# -# A parameterized string should (really) not begin with SS3 (\EO). -# Rather, CSI (\E[) should be used. -# -# For these reasons, the original assignments were deprecated. For -# compatibility reasons, they are still available as a setting of xterm's -# modifyCursorKeys resource. These fragments list the modified cursor-keys -# that might apply to xterm+pcfkeys with different values of that resource. -xterm+pcc3|fragment with modifyCursorKeys:3, - kLFT=\E[>1;2D, kRIT=\E[>1;2C, kind=\E[>1;2B, - kri=\E[>1;2A, kDN=\E[>1;2B, kDN3=\E[>1;3B, kDN4=\E[>1;4B, - kDN5=\E[>1;5B, kDN6=\E[>1;6B, kDN7=\E[>1;7B, - 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, kUP3=\E[>1;3A, - kUP4=\E[>1;4A, kUP5=\E[>1;5A, kUP6=\E[>1;6A, - kUP7=\E[>1;7A, - -xterm+pcc2|fragment with modifyCursorKeys:2, - kLFT=\E[1;2D, kRIT=\E[1;2C, kind=\E[1;2B, kri=\E[1;2A, - kDN=\E[1;2B, kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B, - kDN6=\E[1;6B, kDN7=\E[1;7B, 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, kUP3=\E[1;3A, - kUP4=\E[1;4A, kUP5=\E[1;5A, kUP6=\E[1;6A, kUP7=\E[1;7A, - -xterm+pcc1|fragment with modifyCursorKeys:1, - kLFT=\E[2D, kRIT=\E[2C, kind=\E[2B, kri=\E[2A, kDN=\E[2B, - kDN3=\E[3B, kDN4=\E[4B, kDN5=\E[5B, kDN6=\E[6B, kDN7=\E[7B, - kLFT3=\E[3D, kLFT4=\E[4D, kLFT5=\E[5D, kLFT6=\E[6D, - kLFT7=\E[7D, kRIT3=\E[3C, kRIT4=\E[4C, kRIT5=\E[5C, - kRIT6=\E[6C, kRIT7=\E[7C, kUP=\E[2A, kUP3=\E[3A, - kUP4=\E[4A, kUP5=\E[5A, kUP6=\E[6A, kUP7=\E[7A, - -xterm+pcc0|fragment with modifyCursorKeys:0, - kLFT=\EO2D, kRIT=\EO2C, kind=\EO2B, kri=\EO2A, kDN=\EO2B, - kDN3=\EO3B, kDN4=\EO4B, kDN5=\EO5B, kDN6=\EO6B, kDN7=\EO7B, - kLFT3=\EO3D, kLFT4=\EO4D, kLFT5=\EO5D, kLFT6=\EO6D, - kLFT7=\EO7D, kRIT3=\EO3C, kRIT4=\EO4C, kRIT5=\EO5C, - kRIT6=\EO6C, kRIT7=\EO7C, kUP=\EO2A, kUP3=\EO3A, - kUP4=\EO4A, kUP5=\EO5A, kUP6=\EO6A, kUP7=\EO7A, - -# -# Here are corresponding fragments from xterm patch #216: -# -xterm+pcf0|fragment with modifyFunctionKeys:0, - kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S, - 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=\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, - kf5=\E[15~, 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~, kf6=\E[17~, kf60=\E[24;3~, kf61=\EO4P, - kf62=\EO4Q, kf63=\EO4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, -# -xterm+pcf2|fragment with modifyFunctionKeys:2, - kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, - 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~, 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, kf5=\E[15~, 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~, kf6=\E[17~, kf60=\E[24;3~, - kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, -# -# Chunks from xterm #230: -xterm+pce2|fragment with modifyCursorKeys:2, - kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, - kNXT=\E[6;2~, kPRV=\E[5;2~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kDC3=\E[3;3~, kDC4=\E[3;4~, kDC5=\E[3;5~, - kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F, kEND4=\E[1;4F, - kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F, - kHOM3=\E[1;3H, kHOM4=\E[1;4H, kHOM5=\E[1;5H, - kHOM6=\E[1;6H, kHOM7=\E[1;7H, kIC3=\E[2;3~, kIC4=\E[2;4~, - kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kNXT3=\E[6;3~, - kNXT4=\E[6;4~, kNXT5=\E[6;5~, kNXT6=\E[6;6~, - kNXT7=\E[6;7~, kPRV3=\E[5;3~, kPRV4=\E[5;4~, - kPRV5=\E[5;5~, kPRV6=\E[5;6~, kPRV7=\E[5;7~, - use=xterm+edit, - -xterm+edit|fragment for 6-key editing-keypad, - kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - use=xterm+pc+edit, - -xterm+pc+edit|fragment for pc-style editing keypad, - kend=\E[4~, khome=\E[1~, - -xterm+vt+edit|fragment for vt220-style editing keypad, - kfnd=\E[1~, kslt=\E[4~, - -# -# Those chunks use the new-style (the xterm oldFunctionKeys resource is false). -# Alternatively, the same scheme with old-style function keys as in xterm-r6 -# is shown here (because that is used in mrxvt and mlterm): -xterm+r6f2|xterm with oldFunctionKeys and modifyFunctionKeys:2, - kf1=\E[11~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~, - kf16=\E[14;2~, kf2=\E[12~, kf25=\E[11;5~, kf26=\E[12;5~, - kf27=\E[13;5~, kf28=\E[14;5~, kf3=\E[13~, kf37=\E[11;6~, - kf38=\E[12;6~, kf39=\E[13;6~, kf4=\E[14~, kf40=\E[14;6~, - kf49=\E[11;3~, kf50=\E[12;3~, kf51=\E[13;3~, - kf52=\E[14;3~, kf61=\E[11;4~, kf62=\E[12;4~, - kf63=\E[13;4~, use=xterm+pcf2, -# -# This chunk is used for building the VT220/Sun/PC keyboard variants. -xterm-basic|modern xterm terminal emulator - common, - OTbs, am, bce, km, mc5i, mir, msgr, xenl, AX, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?12l\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, 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, - ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, - ind=^J, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^H, - kmous=\E[M, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, meml=\El, - memu=\Em, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l, rmir=\E[4l, - rmkx=\E[?1l\E>, rmm=\E[?1034l, rmso=\E[27m, rmul=\E[24m, - rs1=\Ec, rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7, - 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}%=%t3%e%p1%d%;m, - 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, smacs=\E(0, smam=\E[?7h, smcup=\E[?1049h, - smir=\E[4h, smkx=\E[?1h\E=, smm=\E[?1034h, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt100+enq, - -# From: David J. MacKenzie , 14 Nov 1997 -# In retrospect, something like xterm-r6 was intended here -TD -xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1, - rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33, - -# 16-colors is one of the variants of XFree86 3.3 xterm, updated for 4.0 (T.Dickey) -# If configured to support 88- or 256-colors (which is fairly common in 2009), -# xterm also recognizes the control sequences for initc -TD -xterm-16color|xterm with 16 colors like aixterm, - ccc, - initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, - use=ibm+16color, use=xterm-new, - -# 256-colors is a compile-time feature of XFree86 xterm beginning with -# patch #111 (1999/7/10) -TD -xterm+256color|xterm 256-color feature, - ccc, - colors#256, pairs#32767, - initc=\E]4;%p1%d;rgb\:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%*%{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, - 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, - setb@, setf@, - -# 88-colors is a compile-time feature of XFree86 xterm beginning with -# patch #115 (1999/9/18) -TD -# -# Note that the escape sequences used are the same as for 256-colors - xterm -# has a different table of default color resource values. If built for -# 256-colors, it can still handle an 88-color palette by using the initc -# capability. -# -# At this time (2007/7/14), except for rxvt 2.7.x, none of the other terminals -# which support the xterm+256color feature support the associated initc -# capability. So it is cancelled in the entries which use this and/or the -# xterm+256color block. -# -# The default color palette for the 256- and 88-colors are different. A -# given executable will have one palette (perhaps compiled-in). If the program -# supports xterm's control sequence, it can be programmed using initc. -xterm+88color|xterm 88-color feature, - colors#88, pairs#7744, use=xterm+256color, - -# These variants of XFree86 3.9.16 xterm are built as a configure option. -xterm-256color|xterm with 256 colors, - use=xterm+256color, use=xterm-new, -xterm-88color|xterm with 88 colors, - use=xterm+88color, use=xterm-256color, - -# These two are used to demonstrate the any-event mouse support, i.e., by -# using an extended name "XM" which tells ncurses to put the terminal into -# a special mode when initializing the xterm mouse. -xterm-1002|testing xterm-mouse, - XM=\E[?1002%?%p1%{1}%=%th%el%;, use=xterm-new, -xterm-1003|testing xterm-mouse, - XM=\E[?1003%?%p1%{1}%=%th%el%;, use=xterm-new, - -# This is another variant, for XFree86 4.0 xterm (T.Dickey) -# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color. -# To use it, your decTerminalID resource must be set to 200 or above. -# -# HTS \E H \210 -# RI \E M \215 -# SS3 \E O \217 -# CSI \E [ \233 -# -xterm-8bit|xterm terminal emulator 8-bit controls (X Window System), - OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, AX, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z, - civis=\233?25l, clear=\233H\2332J, - cnorm=\233?25l\233?25h, cr=^M, csr=\233%i%p1%d;%p2%dr, - cub=\233%p1%dD, cub1=^H, cud=\233%p1%dB, cud1=^J, - cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, - cuu=\233%p1%dA, cuu1=\233A, cvvis=\233?12;25h, - dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, - ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, - flash=\233?5h$<100/>\233?5l, home=\233H, - hpa=\233%i%p1%dG, ht=^I, hts=\210, ich=\233%p1%d@, - il=\233%p1%dL, il1=\233L, ind=^J, invis=\2338m, - is2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8, - ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kbs=^H, - kc1=\217q, kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B, - kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~, - kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~, - kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, - kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, - kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~, - kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~, - kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M, - knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i, - meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m, - ri=\215, rmacs=\E(B, rmam=\233?7l, rmcup=\233?1049l, - rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, - rs1=\Ec, - rs2=\E[62"p\E G\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r\E8, - sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm, - setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, - setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m, - sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;, - sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, - smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=, - smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR, - u7=\E[6n, u8=\233[?1;2c, u9=\E[c, vpa=\233%i%p1%dd, - -xterm-hp|xterm with hpterm function keys, - kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kdch1=\EP, kend=\EF, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, - kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, kich1=\EQ, - knp=\ES, kpp=\ET, use=xterm-basic, - -xterm-sco|xterm with SCO function keys, - kbeg=\E[E, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, 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, khome=\E[H, - kich1=\E[L, kmous=\E[>M, knp=\E[G, kpp=\E[I, - use=xterm-basic, - -# The xterm-new description has all of the features, but is not completely -# compatible with vt220. If you are using a Sun or PC keyboard, set the -# sunKeyboard resource to true: -# + maps the editing keypad -# + interprets control-function-key as a second array of keys, so a -# 12-fkey keyboard can support vt220's 20-fkeys. -# + maps numeric keypad "+" to ",". -# + uses DEC-style control sequences for the application keypad. -# -xterm-vt220|xterm emulating vt220, - kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - use=xterm+app, use=xterm+edit, use=xterm-basic, - use=vt220+keypad, - -xterm-vt52|xterm emulating dec vt52, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, clear=\EH\EJ, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK, - home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, nel=^M^J, ri=\EI, rmacs=\EG, smacs=\EF, - -xterm-noapp|xterm with cursor keys in normal mode, - rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp, - use=xterm, - -xterm-24|vs100|xterms|xterm terminal emulator (X Window System), - lines#24, use=xterm-old, - -# This is xterm for ncurses. -xterm|xterm terminal emulator (X Window System), - use=xterm-new, - -# This entry assumes that xterm's handling of VT100 SI/SO is disabled by -# setting the vt100Graphics resource to false. -xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode, - U8#1, use=xterm, - -# These entries allow access to the X titlebar and icon name as a status line. -# Note that twm (and possibly window managers descended from it such as tvtwm, -# ctwm, and vtwm) track windows by icon-name; thus, you don't want to mess -# with it. -xterm+sl|access X title line and icon name, - hs, - wsl#40, - dsl=\E]0;\007, fsl=^G, tsl=\E]0;, use=xterm, -xterm+sl-twm|access X title line (pacify twm-descended window managers), - hs, - wsl#40, - dsl=\E]2;\007, fsl=^G, tsl=\E]2;, use=xterm, - -# -# The following xterm variants don't depend on your base version -# -# xterm with bold instead of underline -xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold, - smso=\E[7m, smul=\E[1m, use=xterm-old, -# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr) -# (kterm should not invoke DEC Graphics as the alternate character set -# -- Kenji Rikitake) -# (proper setting of enacs, smacs, rmacs makes kterm to use DEC Graphics -# -- MATSUMOTO Shoji) -# kterm implements acsc via built-in table of X Drawable's -kterm|kterm kanji terminal emulator (X window system), - eslok, hs, XT, - ncv@, - acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~, - csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F, - kmous=\E[M, rc=\E8, rmacs=\E(B, rmam=\E[?7l, sc=\E7, - 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, - tsl=\E[?E\E[?%i%p1%dT, use=xterm-r6, use=ecma+color, -kterm-color|kterm-co|kterm with ANSI colors, - ncv@, use=kterm, use=ecma+color, -# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file -xterm-nic|xterm with ich/ich1 suppressed for non-curses programs, - ich@, ich1@, use=xterm, -# From: Mark Sheppard , 4 May 1996 -xterm1|xterm terminal emulator ignoring the alternate screen buffer, - rmcup@, smcup@, use=xterm, - -# This describes the capabilities of color_xterm, an xterm variant from -# before ECMA-64 color support was folded into the main-line xterm release. -# This entry is straight from color_xterm's maintainer. -# From: Jacob Mandelson , 09 Nov 1996 -# The README's with the distribution also say that it supports SGR 21, 24, 25 -# and 27, but they are not present in the terminfo or termcap. -color_xterm|cx|cx100|color_xterm color terminal emulator for X, - OTbs, am, km, mir, msgr, xenl, XT, - cols#80, it#8, lines#65, ncv@, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, - is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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~, khome=\E[7~, kich1=\E[2~, - kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, - rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<, - sc=\E7, - 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=ecma+color, use=vt220+keypad, - -# The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of -# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support -# SGR 39 or 49. SGR 0 does reset colors (along with everything else). This -# description is "compatible" with color_xterm, rxvt and XFree86 xterm, except -# that each of those implements the home, end, delete keys differently. -# -# Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce -# colors; note that this is not compatible with the 5.2 version. -# csw (2002-05-15): make xterm-color primary instead of nxterm, to -# match XFree86's xterm.terminfo usage and prevent circular links -xterm-color|nxterm|generic color xterm, - ncv@, - op=\E[m, use=xterm-r6, use=klone+color, - -# this describes the alpha-version of Gnome terminal shipped with Redhat 6.0 -gnome-rh62|Gnome terminal, - bce, - kdch1=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - use=xterm-color, - -# GNOME Terminal 1.4.0.4 (Redhat 7.2) -# -# This implements a subset of vt102 with a random selection of features from -# other terminals such as color and function-keys. -# -# shift-f1 to shift-f10 are f11 to f20 -# -# NumLock changes the application keypad to approximate vt100 keypad, except -# that there is no escape sequence matching comma (,). -# -# Other defects observed: -# vt100 LNM mode is not implemented. -# vt100 80/132 column mode is not implemented. -# vt100 DECALN is not implemented. -# vt100 DECSCNM mode is not implemented, so flash does not work. -# vt100 TBC (tab reset) is not implemented. -# xterm alternate screen controls do not restore cursor position properly -# it hangs in tack after running function-keys test. -gnome-rh72|GNOME Terminal, - bce, km@, - civis=\E[?25l, cnorm=\E[?25h, kdch1=\E[3~, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, 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=xterm-color, - -# GNOME Terminal 2.0.1 (Redhat 8.0) -# -# Documentation now claims it implements vt220 (which is demonstrably false). -# However, it does implement ECH, which is a vt220 feature. And there are -# workable vt100 LNM, DECALN, DECSNM modes, making it possible to display -# more of its bugs using vttest. -# -# However, note that bce and msgr are broken in this release. Tabs (tbc and -# hts) are broken as well. Sometimes flash (as in xterm-new) works. -# -# kf1 and kf10 are not tested since they're assigned (hardcoded?) to menu -# operations. Shift-tab generates a distinct sequence so it can be argued -# that it implements kcbt. -gnome-rh80|GNOME Terminal, - bce@, msgr@, - ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=\177, - kcbt=\E^I, op=\E[39;49m, use=gnome-rh72, - -# GNOME Terminal 2.2.1 (Redhat 9.0) -# -# bce and msgr are repaired. -gnome-rh90|GNOME Terminal, - bce, msgr, - hpa=\E[%i%p1%dG, kDC=\E[3;2~, kLFT=\EO2D, kRIT=\EO2C, - kb2=\E[E, kcbt=\E[Z, kend=\EOF, khome=\EOH, tbc=\E[3g, - vpa=\E[%i%p1%dd, 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. -gnome-fc5|GNOME Terminal, - rs1=\Ec, - rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l\E[?25h, - use=ansi+enq, use=xterm+pcc0, use=gnome-rh90, - -# GNOME Terminal 2.18.1 (2007 snapshot) -# -# For any "recent" version of gnome-terminal, it is futile to attempt to -# support modifiers on cursor- and keypad keys because the program usually -# is hardcoded to set $TERM to "xterm", and on startup, it builds a subset -# of the keys (which more/less correspond to the termcap values), and will -# interpret those according to the $TERM value, but others not in the -# terminfo according to some constantly changing set of hacker guidelines -TD -vte-2007|VTE in GNOME Terminal snapshot 2.18.1, - use=xterm+pcc2, use=gnome-fc5, -gnome-2007|GNOME Terminal snapshot 2.18.1, - use=vte-2007, - -# GNOME Terminal 2.22.3 (2008 snapshot) -# -# In vttest, it claims to be a vt220 with national replacement character-sets, -# but aside from the identifier string, implements only a small fraction of -# vt220's behavior, which will make it less usable on a VMS system (unclear -# what the intent of the developer is, since the NRC feature exposed in vttest -# by this change does not work). -vte-2008|VTE in GNOME Terminal snapshot 2.22.3, - use=vte+pcfkeys, use=vte-2007, -gnome-2008|GNOME Terminal snapshot 2.22.3, - use=vte-2008, - -# GNOME terminal may automatically use the contents of the "xterm" terminfo to -# supply key information which is not built into the program. With 2.22.3, -# this list is built into the program (which addresses the inadvertant use of -# random terminfo data, though using a set of values which does not correspond -# to any that xterm produces - still not solving the problem that GNOME -# terminal hardcodes the $TERM variable as "xterm"). -# -# terminfo modifier code keys -# kf13-kf24 shift 2 F1 to F12 -# kf25-kf36 control 5 F1 to F12 -# kf37-kf48 shift/control 6 F1 to F12 -# kf49-kf60 alt 3 F1 to F12 -# kf61-kf63 shift-alt 4 F1 to F3 -# -# The parameters with \EO (SS3) are technically an error, since SS3 should have -# no parameters. This appears to be rote copying based on xterm+pcc0. -vte+pcfkeys|VTE's variation on xterm+pcfkeys, - kf1=\EOP, kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R, - kf16=\EO1;2S, kf2=\EOQ, kf25=\EO1;5P, kf26=\EO1;5Q, - kf27=\EO1;5R, kf28=\EO1;5S, kf3=\EOR, kf37=\EO1;6P, - kf38=\EO1;6Q, kf39=\EO1;6R, kf4=\EOS, kf40=\EO1;6S, - kf49=\EO1;3P, kf50=\EO1;3Q, kf51=\EO1;3R, kf52=\EO1;3S, - kf61=\EO1;4P, kf62=\EO1;4Q, kf63=\EO1;4R, - use=xterm+pcfkeys, -gnome+pcfkeys|VTE's variation on xterm+pcfkeys, - use=vte+pcfkeys, - -vte|VTE aka GNOME Terminal, - use=vte-2008, -gnome|GNOME Terminal, - use=vte, - -# palette is hardcoded... -vte-256color|VTE with xterm 256-colors, - initc@, use=xterm+256color, use=vte, -gnome-256color|GNOME Terminal with xterm 256-colors, - use=vte-256color, - -# XFCE Terminal 0.2.5.4beta2 -# -# This is based on some of the same source code, e.g., the VTE library, as -# gnome-terminal, but has fewer features, fails more screens in vttest. -# Since most of the terminfo-related behavior is due to the VTE library, -# the terminfo is the same as gnome-terminal. -xfce|Xfce Terminal, - use=vte, - -# Multi-Gnome-Terminal 1.6.2 -# -# This does not use VTE, and does have different behavior (compare xfce and -# gnome). -mgt|Multi GNOME Terminal, - indn=\E[%p1%dS, rin=\E[%p1%dT, use=xterm-xf86-v333, - -# This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce -# or not is debatable). -kvt|KDE terminal, - bce, km@, - kdch1=\177, kend=\E[F, khome=\E[H, use=xterm-color, - -# Konsole 1.0.1 -# (formerly known as kvt) -# -# This program hardcodes $TERM to 'xterm', which is not accurate. However, to -# simplify this entry (and point out why konsole isn't xterm), we base this on -# xterm-r6. The default keyboard appears to be 'linux'. -# -# Notes: -# a) konsole implements several features from XFree86 xterm, though none of -# that is documented - except of course in its source code - apparently -# because its implementors are unaccustomed to reading documentation - as -# evidenced by the sparse and poorly edited documentation distributed with -# konsole. Some features such as the 1049 private mode are recognized but -# incorrectly implemented as a duplicate of the 47 private mode. -# b) even with the "vt100 (historical)" keyboard setting, the numeric keypad -# sends PC-style escapes rather than vt100. -# c) fails vttest menu 3 (Test of character sets) because it does not properly -# parse some control sequences. Also fails vttest Primary Device Attributes -# by sending a bogus code (in the source it says it's supposed to be a -# vt220, which is doubly incorrect because it does not implement vt220 -# control sequences except for a few special cases). Treat it as a -# mildly-broken vt102. -# -# Update for konsole 1.3.2: -# The 1049 private mode works (but see the other xterm screens in vttest). -# Primary Device Attributes now returns the code for a vt100 with advanced -# video option. Perhaps that's intended to be a "mildly-broken vt102". -# -# Updated for konsole 1.6.4: -# add konsole-solaris -# -# Updated for konsole 1.6.6: -# add control-key modifiers for function-keys, etc. -# -# vttest menu 1 shows that both konsole and gnome terminal do wrapping -# different from xterm (and vt100's). They have the same behavior in this -# detail, but it is unclear which copies the other. -konsole-base|KDE console window, - bce, km@, npc, XT, - ncv@, - bel@, blink=\E[5m, civis=\E[?25l, cnorm=\E[?25h, - ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, - hpa=\E[%i%p1%dG, indn=\E[%p1%dS, kbs=\177, kdch1@, - 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@, rin=\E[%p1%dT, rmam=\E[?7l, - rmso=\E[27m, rmul=\E[24m, - 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%;m%?%p9%t\016%e\017%;, - sgr0=\E[0m\017, smam=\E[?7h, vpa=\E[%i%p1%dd, - use=ecma+color, use=xterm-r6, -konsole-linux|KDE console window with linux keyboard, - kdch1=\E[3~, kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, - kf12=\E[24~, kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, - kf2=\E[[B, kf20@, kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - use=konsole-base, -konsole-solaris|KDE console window with Solaris keyboard, - kbs=^H, kend=\E[4~, khome=\E[1~, use=konsole-vt100, -# KDE's "XFree86 3.x.x" keyboard is based on reading the xterm terminfo rather -# than testing the code. -konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm, - kend=\E[4~, khome=\E[1~, use=konsole-vt100, -# The value for kbs reflects local customization rather than the settings used -# for XFree86 xterm. -konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm, - kend=\EOF, khome=\EOH, use=konsole+pcfkeys, - use=konsole-vt100, -# Konsole does not implement shifted cursor-keys. -konsole+pcfkeys|konsole subset of xterm+pcfkeys, - kLFT@, kRIT@, kcbt=\E[Z, kind@, kri@, kDN@, kUP@, use=xterm+pcc2, - use=xterm+pcf0, -# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but -# it is still useful for deriving the other entries. -konsole-vt100|KDE console window with vt100 (sic) keyboard, - kbs=\177, kdch1=\E[3~, 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, -konsole-vt420pc|KDE console window with vt420 pc keyboard, - kbs=^H, kdch1=\177, use=konsole-vt100, -konsole-16color|klone of xterm-16color, - ncv#32, use=ibm+16color, use=konsole, -# make a default entry for konsole -konsole|KDE console window, - use=konsole-xf4x, - -# palette is hardcoded... -konsole-256color|KDE console window with xterm 256-colors, - initc@, use=xterm+256color, use=konsole, - -# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD -# -# It is nominally a vt102 emulator, with features borrowed from rxvt and -# xterm. -# -# The function keys are numbered based on shift/control/alt modifiers, except -# that the control-modifier itself is used to spawn a new copy of mlterm (the -# "-P" option). So control/F1 to control/F12 may not be usable, depending on -# how it is configured. -# -# kf1 to kf12 \E[11~ to \E[24~ -# shift kf1 to kf12 \E[11;2~ to \E[24;2~ -# alt kf1 to kf12 \E[11;3~ to \E[24;3~ -# shift/alt kf1 to kf12 \E[11;4~ to \E[24;4~ -# control kf1 to kf12 \E[11;5~ to \E[24;5~ (maybe) -# control/shift kf1 to kf12 \E[11;6~ to \E[24;6~ -# control/alt kf1 to kf12 \E[11;7~ to \E[24;7~ -# control/shift/alt kf1 to kf12 \E[11;8~ to \E[24;8~ -# -mlterm|multi lingual terminal emulator, - am, eslok, km, mc5i, mir, msgr, npc, xenl, XT, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, - is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, - kbs=\177, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kent=\EOM, kfnd=\E[1~, - khome=\EOH, kich1=\E[2~, kind=\EO1;2B, kmous=\E[M, - knp=\E[6~, kpp=\E[5~, kri=\EO1;2A, kslt=\E[4~, mc0=\E[i, - nel=\EE, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=\E(B, rmam=\E[?7l, rmcup=\E[?1049l, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, - rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l, - sc=\E7, 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, smcup=\E[?1049h, - smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, - vpa=\E[%i%p1%dd, use=mlterm+pcfkeys, 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 -# (when available), it could use the extended names introduced for xterm. -mlterm+pcfkeys|fragment for PC-style fkeys, - kLFT=\EO1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\EO1;2C, - kDN=\EO1;2B, kDN3=\EO1;3B, kDN4=\EO1;4B, kDN5=\EO1;5B, - kDN6=\EO1;6B, kDN7=\EO1;7B, kIC5=\E[2;5~, kIC6=\E[2;6~, - kLFT3=\EO1;3D, kLFT4=\EO1;4D, kLFT5=\EO1;5D, - kLFT6=\EO1;6D, kLFT7=\EO1;7D, kNXT5=\E[6;5~, - kNXT6=\E[6;6~, kPRV5=\E[5;5~, kPRV6=\E[5;6~, - kRIT3=\EO1;3C, kRIT4=\EO1;4C, kRIT5=\EO1;5C, - kRIT6=\EO1;6C, kRIT7=\EO1;7C, kUP=\EO1;2A, kUP3=\EO1;3A, - kUP4=\EO1;4A, kUP5=\EO1;5A, kUP6=\EO1;6A, kUP7=\EO1;7A, - -mlterm-256color|mlterm 3.0 with xterm 256-colors, - use=xterm+256color, use=rxvt, - -# From: Thomas Dickey 04 Oct 1997 -# Updated: Oezguer Kesim 02 Nov 1997 -# Notes: -# rxvt 2.21b uses -# smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O, -# but some applications don't work with that. -# It also has an AIX extension -# box2=lqkxjmwuvtn, -# and -# ech=\E[%p1%dX, -# but the latter does not work correctly. -# -# The distributed terminfo says it implements hpa and vpa, but they are not -# implemented correctly, using relative rather than absolute positioning. -# -# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM. -# Since rxvt is not really compatible with xterm, it should be configured as -# "rxvt" or "rxvt-color". -# -# removed dch/dch1 because they are inconsistent with bce/ech -TD -# remove km as per tack test -TD -rxvt-basic|rxvt terminal base (X Window System), - OTbs, am, bce, eo, mir, msgr, xenl, xon, XT, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h\E[?5l, home=\E[H, ht=^I, - hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, - ind=^J, 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=^H, - kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, 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, - s0ds=\E(B, s1ds=\E(0, sc=\E7, - 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, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, - smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt100+enq, - use=rxvt+pcfkeys, use=vt220+keypad, -# Key Codes from rxvt reference: -# -# Note: Shift + F1-F10 generates F11-F20 -# -# For the keypad, use Shift to temporarily override Application-Keypad -# setting use Num_Lock to toggle Application-Keypad setting if Num_Lock -# is off, escape sequences toggle Application-Keypad setting. -# Also note that values of Home, End, Delete may have been compiled -# differently on your system. -# -# Normal Shift Control Ctrl+Shift -# Tab ^I ESC [ Z ^I ESC [ Z -# BackSpace ^H ^? ^? ^? -# Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @ -# Insert ESC [ 2 ~ paste ESC [ 2 ^ ESC [ 2 @ -# Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ -# Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @ -# Prior ESC [ 5 ~ scroll-up ESC [ 5 ^ ESC [ 5 @ -# Next ESC [ 6 ~ scroll-down ESC [ 6 ^ ESC [ 6 @ -# Home ESC [ 7 ~ ESC [ 7 $ ESC [ 7 ^ ESC [ 7 @ -# End ESC [ 8 ~ ESC [ 8 $ ESC [ 8 ^ ESC [ 8 @ -# Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ -# F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^ -# F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^ -# F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^ -# F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^ -# F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^ -# F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^ -# F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^ -# F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^ -# F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^ -# F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^ -# F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @ -# F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @ -# F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @ -# F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @ -# F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @ -# F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @ -# F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @ -# F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @ -# F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @ -# F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @ -# -# Application -# Up ESC [ A ESC [ a ESC O a ESC O A -# Down ESC [ B ESC [ b ESC O b ESC O B -# Right ESC [ C ESC [ c ESC O c ESC O C -# Left ESC [ D ESC [ d ESC O d ESC O D -# KP_Enter ^M ESC O M -# KP_F1 ESC O P ESC O P -# KP_F2 ESC O Q ESC O Q -# KP_F3 ESC O R ESC O R -# KP_F4 ESC O S ESC O S -# XK_KP_Multiply * ESC O j -# XK_KP_Add + ESC O k -# XK_KP_Separator , ESC O l -# XK_KP_Subtract - ESC O m -# XK_KP_Decimal . ESC O n -# XK_KP_Divide / ESC O o -# XK_KP_0 0 ESC O p -# XK_KP_1 1 ESC O q -# XK_KP_2 2 ESC O r -# XK_KP_3 3 ESC O s -# XK_KP_4 4 ESC O t -# XK_KP_5 5 ESC O u -# XK_KP_6 6 ESC O v -# XK_KP_7 7 ESC O w -# XK_KP_8 8 ESC O x -# XK_KP_9 9 ESC O y -# -# The source-code for rxvt actually defines mappings for F21-F35, using -# "ESC [ 35 ~" to "ESC [ 49 ~". Keyboards with more than 12 function keys -# are rare, so this entry uses the shift- and control-modifiers as in -# xterm+pcfkeys to define keys past F12. -# -# kIC is normally not used, since rxvt performs a paste for that (shifted -# insert), unless private mode 35 is set. -# -# kDN, kDN5, kDN6, etc are extensions based on the names from xterm+pcfkeys -TD -# Removed kDN6, etc (control+shift) since rxvt does not implement this -TD -rxvt+pcfkeys|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, kdch1=\E[3~, kel=\E[8\^, - kend=\E[8~, 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$, - kf23=\E[11\^, kf24=\E[12\^, kf25=\E[13\^, kf26=\E[14\^, - kf27=\E[15\^, kf28=\E[17\^, kf29=\E[18\^, kf3=\E[13~, - kf30=\E[19\^, kf31=\E[20\^, kf32=\E[21\^, kf33=\E[23\^, - kf34=\E[24\^, kf35=\E[25\^, kf36=\E[26\^, kf37=\E[28\^, - kf38=\E[29\^, kf39=\E[31\^, kf4=\E[14~, kf40=\E[32\^, - kf41=\E[33\^, kf42=\E[34\^, kf43=\E[23@, kf44=\E[24@, - kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, - kfnd=\E[1~, khome=\E[7~, kich1=\E[2~, kind=\E[a, knp=\E[6~, - kpp=\E[5~, kri=\E[b, kslt=\E[4~, kDC5=\E[3\^, kDC6=\E[3@, - kDN=\E[b, kDN5=\EOb, kEND5=\E[8\^, kEND6=\E[8@, - 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, - -rxvt|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, -rxvt-color|rxvt terminal emulator (X Window System), - use=rxvt, -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, - use=xterm+88color, use=rxvt, -rxvt-xpm|rxvt terminal emulator (X Window System), - use=rxvt, -rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin, - acsc=+\257\,\256-\^0\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, - use=rxvt, -rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin, - acsc=+\257\,\256-\^0\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~\376, - use=rxvt-cygwin, - -# This variant is supposed to work with rxvt 2.7.7 when compiled with -# NO_BRIGHTCOLOR defined. rxvt needs more work... -rxvt-16color|xterm with 16 colors like aixterm, - ncv#32, use=ibm+16color, use=rxvt, - -# mrxvt 0.5.4 -# -# mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which -# makes its function-keys different from other flavors of rxvt -TD -mrxvt|multitabbed rxvt, - XT, - kEND=\E[8;2~, kHOM=\E[7;2~, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kend=\E[8~, khome=\E[7~, - kEND3=\E[8;3~, kEND4=\E[8;4~, kEND5=\E[8;5~, - kEND6=\E[8;6~, kEND7=\E[8;7~, kHOM3=\E[7;3~, - kHOM4=\E[7;4~, kHOM5=\E[7;5~, kHOM6=\E[7;6~, - kHOM7=\E[7;7~, use=xterm+r6f2, use=xterm+pcfkeys, - use=rxvt, - -mrxvt-256color|multitabbed rxvt with 256 colors, - use=xterm+256color, use=mrxvt, - -# From: Michael Jennings -# -# Eterm 0.9.3 -# -# removed kf0 which conflicts with kf10 -TD -# remove cvvis which conflicts with cnorm -TD -# Eterm does not implement control/shift cursor keys such as kDN6, or kPRV/kNXT -# but does otherwise follow the rxvt+pcfkeys model -TD -# remove nonworking flash -TD -# remove km as per tack test -TD -Eterm|Eterm-color|Eterm with xterm-style color support (X Window System), - am, bce, bw, eo, mc5i, mir, msgr, xenl, xon, XT, - btns#5, cols#80, it#8, lines#24, lm#0, ncv@, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - 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, kbs=^H, - kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, - mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, 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, - sc=\E7, - 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, smcup=\E7\E[?47h, - smir=\E[4h, smkx=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%i%p1%dd, use=vt100+enq, use=rxvt+pcfkeys, - use=ecma+color, - -Eterm-256color|Eterm with xterm 256-colors, - use=xterm+256color, use=Eterm, - -Eterm-88color|Eterm with 88 colors, - use=xterm+88color, use=Eterm, - -# Based on rxvt 2.4.8, it has a few differences in key bindings -aterm|AfterStep terminal, - XT, - kbs=\177, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=rxvt, - -# xiterm 0.5-5.2 -# This is not based on xterm's source... -# vttest shows several problems with keyboard, cursor-movements. -# see also http://invisible-island.net/xterm/xterm.faq.html#bug_xiterm -xiterm|internationalized terminal emulator for X, - km@, - kbs=\177, kdch1=\E[3~, use=klone+color, use=xterm-r6, - -# These (xtermc and xtermm) are distributed with Solaris. They refer to a -# variant of xterm which is apparently no longer supported, but are interesting -# because they illustrate SVr4 curses mouse controls - T.Dickey -xtermm|xterm terminal emulator (monocrome), - OTbs, am, km, mir, msgr, xenl, - btns#3, cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy, - kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU, - kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_, - knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM, - rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m, - rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - 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, smcup=\E@0\E[?4s\E[?4h\E@1, - smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys, - -xtermc|xterm terminal emulator (color), - colors#8, ncv#7, pairs#64, - op=\E[100m, 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}%=%t3%e%p1%d%;m, - use=xtermm, - -# From: David J. MacKenzie 20 Apr 1995 -# Here's a termcap entry I've been using for xterm_color, which comes -# with BSD/OS 2.0, and the X11R6 contrib tape too I think. Besides the -# color stuff, I also have a status line defined as the window manager -# title bar. [I have translated it to terminfo -- ESR] -xterm-pcolor|xterm with color used for highlights and status line, - bold=\E[1m\E[43m, rev=\E[7m\E[34m, smso=\E[7m\E[31m, - smul=\E[4m\E[42m, use=xterm+sl, use=xterm-r6, - -# HP ships this (HPUX 9 and 10), except for the pb#9600 which was merged in -# from BSD termcap. (hpterm: added empty , we have no idea what ACS -# chars look like --esr) -hpterm|X-hpterm|hp X11 terminal emulator, - am, da, db, mir, xhp, - cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, pb#9600, xmc#0, - acsc=, bel=^G, bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, - cub1=^H, cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, - cuu1=\EA, dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK, - hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=^J, kbs=^H, - kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep, - kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, - khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF, - knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, meml=\El, - memu=\Em, pfkey=\E&f%p1%dk%p2%l%dL%p2%s, - pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, - pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, - pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET, - rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, - rmul=\E&d@, - sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, - sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB, - smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, -# HPUX 11 provides a color version. -hpterm-color|HP X11 terminal emulator with color, - ccc, - colors#64, pairs#8, - home=\E&a0y0C, - initp=\E&v%p2%da%p3%db%p4%dc%p5%dx%p6%dy%p7%dz%p1%dI, - op=\E&v0S, scp=\E&v%p1%dS, use=hpterm, - -# This entry describes an xterm with Sun-style function keys enabled -# via the X resource setting "xterm*sunFunctionKeys:true" -# To understand / note that L1,L2 and F11,F12 are the same. -# The ... keys are L3-L10. We don't set -# because we want it to be seen as . -# The ... keys are R1-R15. We treat some of these in accordance -# with their Sun keyboard labels instead. -# From: Simon J. Gerraty 10 Jan 1996 -xterm-sun|xterm with sunFunctionKeys true, - kb2=\E[218z, kcpy=\E[197z, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3z, kend=\E[220z, - kent=\EOM, kf1=\E[224z, kf10=\E[233z, kf11=\E[192z, - kf12=\E[193z, kf13=\E[194z, kf14=\E[195z, kf15=\E[196z, - kf17=\E[198z, kf18=\E[199z, kf19=\E[200z, kf2=\E[225z, - kf20=\E[201z, kf3=\E[226z, kf31=\E[208z, kf32=\E[209z, - kf33=\E[210z, kf34=\E[211z, kf35=\E[212z, kf36=\E[213z, - kf38=\E[215z, kf4=\E[227z, kf40=\E[217z, kf42=\E[219z, - kf44=\E[221z, kf45=\E[222z, kf46=\E[234z, kf47=\E[235z, - kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, - kf9=\E[232z, kfnd=\E[200z, khlp=\E[196z, khome=\E[214z, - kich1=\E[2z, knp=\E[222z, kpp=\E[216z, kund=\E[195z, - use=xterm-basic, -xterms-sun|small (80x24) xterm with sunFunctionKeys true, - cols#80, lines#24, use=xterm-sun, - -# This is for the extensible terminal emulator on the X11R6 contrib tape. -# It corresponds to emu's internal emulation: -# emu -term emu -# emu's default sets TERM to "xterm", but that doesn't work well -TD -# fixes: remove bogus rmacs/smacs, change oc to op, add bce, am -TD -# fixes: add civis, cnorm, sgr -TD -emu|emu native mode, - am, bce, mir, msgr, xon, - colors#15, cols#80, it#8, lines#24, pairs#64, vt#200, - acsc=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s\224t\225u\226v\227w\230x\231~\244, - bel=^G, blink=\EW, bold=\EU, civis=\EZ, clear=\EP\EE0;0;, - cnorm=\Ea, cr=^M, csr=\Ek%p1%d;%p2%d;, cub=\Eq-%p1%d;, - cub1=^H, cud=\Ep%p1%d;, cud1=\EB, cuf=\Eq%p1%d;, cuf1=\EC, - cup=\EE%p1%d;%p2%d;, cuu=\Ep-%p1%d;, cuu1=\EA, - dch=\EI%p1%d;, dch1=\EI1;, dl=\ER%p1%d;, dl1=\ER1;, - ech=\Ej%p1%d;, ed=\EN, el=\EK, el1=\EL, home=\EE0;0;, ht=^I, - hts=\Eh, il=\EQ%p1%d;, il1=\EQ1;, ind=\EG, - is2=\ES\Er0;\Es0;, kbs=^H, kcub1=\EC, kcud1=\EB, kcuf1=\ED, - kcuu1=\EA, kdch1=\177, kent=^M, kf0=\EF00, kf1=\EF01, - kf10=\EF10, kf11=\EF11, kf12=\EF12, kf13=\EF13, kf14=\EF14, - kf15=\EF15, kf16=\EF16, kf17=\EF17, kf18=\EF18, kf19=\EF19, - kf2=\EF02, kf20=\EF20, kf3=\EF03, kf4=\EF04, kf5=\EF05, - kf6=\EF06, kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind, - kich1=\Eins, knp=\Enext, kpp=\Eprior, kslt=\Esel, - op=\Es0;\Er0;, rev=\ET, ri=\EF, rmir=\EX, rmso=\ES, rmul=\ES, - rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;, - setaf=\Er%i%p1%d;, - sgr=\ES%?%p1%t\ET%;%?%p2%t\EV%;%?%p3%t\ET%;%?%p4%t\EW%;%?%p6%t\EU%;, - sgr0=\ES, smir=\EY, smso=\ET, smul=\EV, tbc=\Ej, - -# vt220 Terminfo entry for the Emu emulation, corresponds to -# emu -term vt220 -# with NumLock set (to make the keypad transmit kf0-kf9). -# fixes: add am, xenl, corrected sgr0 -TD -emu-220|Emu-220 (vt200-7bit mode), - am, xenl, xon, - cols#80, it#8, lines#24, vt#200, - acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[0;5m, bold=\E[0;1m, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D, - cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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, if=/home/martino/avrdude-build-script/objdir/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, - kcuu1=\E[A, kdch1=\E[3~, kent=\EOM, kf0=\EOp, kf1=\EOq, - kf10=\EOl, kf11=\EOm, kf12=\EOn, kf13=\EOP, kf14=\EOQ, - kf15=\EOR, kf16=\EOS, kf2=\EOr, kf26=\E[17~, kf27=\E[18~, - kf28=\E[19~, kf29=\E[20~, kf3=\EOs, kf30=\E[21~, - kf34=\E[26~, kf37=\E[31~, kf38=\E[32~, kf39=\E[33~, - kf4=\EOt, kf40=\E[34~, kf5=\EOu, kf6=\EOv, kf7=\EOw, - kf8=\EOx, kf9=\EOy, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, kslt=\E[4~, rc=\E8, rev=\E[0;7m, - ri=\EM, rmacs=^O, rmcup=\E>, rmkx=\E>, rmso=\E[m, rmul=\E[m, - rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h, sc=\E7, - sgr=\E[0%?%p1%t;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, smacs=^N, smcup=\E[?1l\E=, smkx=\E=, - smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, -# A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI, -# print interface, ANSI X3.64 colour escape sequences, etc. Newsgroup postings -# indicate that it emulates more than one terminal, but incompletely. -# -# This is adapted from a FreeBSD bug-report by Daniel Rudy -# It is based on vt102's entry, with some subtle differences, but also -# has status line -# supports ANSI colors (except for 'op' string) -# apparently implements alternate screen like xterm -# does not use padding, of course. -mvterm|vv100|SwitchTerm aka mvTERM, - am, eslok, hs, km, mir, msgr, xenl, - colors#8, cols#80, it#8, lines#24, pairs#64, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[?E, ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, - fsl=\E[?F, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOy, - kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, - op=\E[100m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E[2J\E[?47l\E8, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, - rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H, - sc=\E7, 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, smacs=^N, smcup=\E7\E[?47h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys, - -### MTERM -# -# This application is available by email from . -# -# "mterm -type ansi" sets $TERM to "ansi" -mterm-ansi|ANSI emulation, - am, bw, mir, msgr, - it#8, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, - il=\E[%p1%dL, il1=\E[L, ind=\E[S, indn=\E[%p1%dS, - invis=\E[8m, is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmso=\E[27m, - rmul=\E[24m, - 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, smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, - vpa=\E[%i%p1%dd, -# mterm normally sets $TERM to "mterm" -mterm|mouse-sun|Der Mouse term, - am, bw, mir, - it#8, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^N, cuf1=^S, - cup=\006%p1%d.%p2%d., cuu1=^X, dch1=^Y, dl1=^K, ed=^B, el=^C, - home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=^M^U, ri=^W, - rmir=^O, rmso=^T, smir=^Q, smso=^V, -# "mterm -type decansi" sets $TERM to "decansi" -# -# note: kdch1, kfnd, kslt are in the source code, but do not work -TD -decansi|ANSI emulation with DEC compatibility hacks, - am, mir, msgr, xenl, - colors#8, it#8, pairs#64, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL, - il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, - is2=\E)0\E[r\017, kbs=^H, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kslt=\E[4~, nel=\EE, op=\E[0m, rc=\E8, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, sc=\E7, - 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, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR, - u7=\E[6n, vpa=\E[%i%p1%dd, - -#### VWM -# -# vwmterm is a terminal emulator written for the VWM console window manager -# -vwmterm|(vwm term), - am, bce, ccc, mir, msgr, npc, xenl, xon, - colors#8, pairs#64, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[?25h, dim=\E[2m, ed=\E[J, el=\E[K, - home=\E[H, il1=\E[L, ind=^J, invis=\E[8m, 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~, rev=\E[7m, rmacs=\E[10m, - rmam=\E[?7l, rmcup=\E[?1049l, rs1=\E[H\E[J\E[m\Ec, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - sgr0=\E[0;10m, smacs=\E[11m, smam=\E[?7h, - smcup=\E[?1049h, smso=\E[3m, smul=\E[4m, - -#### MGR -# -# MGR is a Bell Labs window system lighter-weight than X. -# These entries describe MGR's xterm-equivalent. -# They are courtesy of Vincent Broman 14 Jan 1997 -# - -mgr|Bellcore MGR (non X) window system terminal emulation, - am, km, - bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=^M, - csr=\E%p1%d;%p2%dt, cub1=^H, cud1=\Ef, cuf1=\Er, - cup=\E%p2%d;%p1%dM, cuu1=\Eu, cvvis=\E0h, - dch=\E%p1%dE$<5>, dch1=\EE, dl=\E%p1%dd$<3*>, - dl1=\Ed$<3>, ed=\EC, el=\Ec, hd=\E1;2f, ht=^I, hu=\E1;2u, - ich=\E%p1%dA$<5>, ich1=\EA, il=\E%p1%da$<3*>, - il1=\Ea$<3>, ind=^J, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, nel=^M^J, rev=\E1n, rmam=\E5S, - rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n, - smul=\E4n, -mgr-sun|Mgr window with Sun keyboard, - ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z, - kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z, - kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, - kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, - kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, - kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z, - 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, - -######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS -# - -# Columbus UNIX virtual terminal. This terminal also appears in -# UNIX 4.0 and successors as line discipline 1 (?), but is -# undocumented and does not really work quite right. -cbunix|cb unix virtual terminal, - OTbs, am, da, db, - cols#80, lines#24, lm#0, - bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL, - el=\EK, ich1=\EO, il1=\EP, ind=^J, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A, - smso=\Ea^D, smul=\Ea^A, -# (vremote: removed obsolete ":nl@:" -- esr) -vremote|virtual remote terminal, - am@, - cols#79, use=cbunix, - -pty|4bsd pseudo teletype, - cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!, - smso=\Ea$, smul=\Ea!, use=cbunix, - -# The codes supported by the term.el terminal emulation in GNU Emacs 19.30 -eterm|gnu emacs term.el terminal emulation, - am, mir, xenl, - cols#80, lines#24, - bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, rev=\E[7m, - rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m, - smul=\E[4m, - -# 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, - am, mir, msgr, xenl, - colors#8, cols#80, lines#24, pairs#64, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kbs=\177, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kdch1=\E[3~, kend=\E[4~, khome=\E[1~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, op=\E[39;49m, rc=\E8, rev=\E[7m, - ri=\EM, rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, - sc=\E7, 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, smir=\E[4h, smso=\E[7m, smul=\E[4m, - u6=\E[%i%d;%dR, u7=\E[6n, - -# Entries for use by the `screen' program by Juergen Weigert, -# Michael Schroeder, Oliver Laumann. The screen and -# screen-w entries came with version 3.7.1. The screen2 and screen3 entries -# come from University of Wisconsin and may be older. -# (screen: added on ANSI model -- esr) -# -# 'screen' defines extensions to termcap. Some are used in its terminal -# description: -# G0 (bool) Terminal can deal with ISO 2022 font selection sequences. -# AX (bool) Does understand ANSI set default fg/bg color -# (\E[39m / \E[49m). -# S0 (str) Switch charset 'G0' to the specified charset. -# E0 (str) Switch charset 'G0' back to standard charset. -# -# tested with screen 3.09.08 -screen|VT 100/ANSI X3.64 virtual terminal, - OTbs, OTpt, am, km, mir, msgr, xenl, G0, - colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1, - acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, - cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\Eg, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcbt=\E[Z, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - 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~, kich1=\E[2~, kmous=\E[M, knp=\E[6~, kpp=\E[5~, - nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmcup=\E[?1049l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, - rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p1%t;3%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, smcup=\E[?1049h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[3m, smul=\E[4m, tbc=\E[3g, E0=\E(B, - S0=\E(%p1%c, use=ecma+color, -# The bce and status-line entries are from screen 3.9.13 (and require some -# changes to .screenrc). -screen-bce|VT 100/ANSI X3.64 virtual terminal with bce, - bce, - ech@, use=screen, -screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line, - dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen, - -# ====================================================================== -# Entries for GNU Screen with 16 colors. -# Those variations permit to benefit from 16 colors palette, and from -# bold font and blink attribute separated from bright colors. But they -# are less portable than the generic "screen" 8 color entries: Their -# usage makes real sense only if the terminals you attach and reattach -# do all support 16 color palette. - -screen-16color|GNU Screen with 16 colors, - use=ibm+16color, use=screen, - -screen-16color-s|GNU Screen with 16 colors and status line, - use=ibm+16color, use=screen-s, - -screen-16color-bce|GNU Screen with 16 colors and BCE, - use=ibm+16color, use=screen-bce, - -screen-16color-bce-s|GNU Screen with 16 colors, BCE, and status line, - bce, use=ibm+16color, use=screen-s, - -# ====================================================================== -# Entries for GNU Screen 4.02 with --enable-colors256. - -screen-256color|GNU Screen with 256 colors, - ccc@, - initc@, use=xterm+256color, use=screen, - -screen-256color-s|GNU Screen with 256 colors and status line, - ccc@, - initc@, use=xterm+256color, use=screen-s, - -screen-256color-bce|GNU Screen with 256 colors and BCE, - ccc@, - initc@, use=xterm+256color, use=screen-bce, - -screen-256color-bce-s|GNU Screen with 256 colors, BCE, and status line, - bce, ccc@, - initc@, use=xterm+256color, use=screen-s, - -# ====================================================================== - -# Read the fine manpage: -# When screen tries to figure out a terminal name for -# itself, it first looks for an entry named "screen.", -# where is the contents of your $TERM variable. If -# no such entry exists, screen tries "screen" (or "screen-w" -# 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 -# and some keys from "screen." 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@, -# -# Here are a few customized entries which are useful -TD -# -# Notes: -# (a) screen does not support invis. -# (b) screen's implementation of bw is incorrect according to tack. -# (c) screen appears to hardcode the strings for khome/kend, making it -# necessary to override the "use=" clause's values (screen+fkeys). -# (d) screen sets $TERMCAP to a termcap-formatted copy of the 'screen' entry, -# which is NOT the same as the terminfo screen.. -# (e) when screen finds one of these customized entries, it sets $TERM to -# match. Hence, no "screen.xterm" entry is provided, since that would -# create heartburn for people running remote xterm's. -# -# xterm (-xfree86 or -r6) does not normally support kIC, kNXT and kPRV -# since the default translations override the built-in keycode -# translation. They are suppressed here to show what is tested by tack. -screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm, - bce@, bw, - invis@, kIC@, kNXT@, kPRV@, meml@, memu@, - sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m, - use=screen+fkeys, use=xterm-new, -# xterm-r6 does not really support khome/kend unless it is propped up by -# the translations resource. -screen.xterm-r6|screen customized for X11R6 xterm, - bw, use=screen+fkeys, use=xterm-r6, -# Color applications running in screen and TeraTerm do not play well together -# on Solaris because Sun's curses implementation gets confused. -screen.teraterm|disable ncv in teraterm, - ncv#127, - 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, - use=screen+fkeys, use=screen, -# Other terminals -screen.rxvt|screen in rxvt, - bw, XT, - cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, use=screen+fkeys, use=vt100+enq, - use=rxvt+pcfkeys, use=vt220+keypad, use=screen, -screen.Eterm|screen in Eterm, - use=screen+fkeys, use=Eterm, -screen.mrxvt|screen in mrxvt, - use=screen+fkeys, use=mrxvt, -screen.vte|screen in any VTE-based terminal, - use=screen+fkeys, use=vte, -screen.gnome|screen in GNOME Terminal, - use=screen+fkeys, use=gnome, -screen.konsole|screen in KDE console window, - use=screen+fkeys, use=konsole, -# fix the backspace key -screen.linux|screen in linux console, - bw, - kbs=\177, kcbt@, use=screen+fkeys, use=screen, -screen.mlterm|screen in mlterm, - use=screen+fkeys, use=mlterm, - -# The default "screen" entry is reasonably portable, but not optimal for the -# most widely-used terminal emulators. The "bce" capability is supported in -# screen since 3.9.13, and when used, will require fewer characters to be sent -# to the terminal for updates. -# -# If you are using only terminals which support bce, then you can use this -# feature in your screen configuration. -# -# Adding these lines to your ".screenrc" file will allow using these customized -# entries: -# term screen-bce -# bce on -# defbce on -screen-bce.xterm-new|screen optimized for modern xterm, - bce, - ech@, use=screen.xterm-new, -screen-bce.rxvt|screen optimized for rxvt, - bce, - ech@, use=screen.rxvt, -screen-bce.Eterm|screen optimized for Eterm, - bce, - ech@, use=screen.Eterm, -screen-bce.mrxvt|screen optimized for mrxvt, - bce, - ech@, use=screen.mrxvt, -screen-bce.gnome|screen optimized for GNOME-Terminal, - bce, - ech@, use=screen.gnome, -screen-bce.konsole|screen optimized for KDE console window, - bce, - ech@, use=screen.konsole, -screen-bce.linux|screen optimized for linux console, - bce, - ech@, use=screen.linux, -screen-bce.mlterm|screen optimized for mlterm, - bce, - ech@, use=screen.mlterm, - -screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols, - cols#132, use=screen, - -screen2|old VT 100/ANSI X3.64 virtual terminal, - cols#80, it#8, lines#24, - cbt=\E[Z, clear=\E[2J\E[H, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL, - il1=\E[L, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, - kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, - nel=^M^J, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m, - rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h, - smso=\E[3m, smul=\E[4m, tbc=\E[3g, -# (screen3: removed unknown ":xv:LP:G0:" -- esr) -screen3|older VT 100/ANSI X3.64 virtual terminal, - km, mir, msgr, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, is2=\E)0, kbs=^H, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, - kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, - rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs1=\Ec, - sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m, - smul=\E[4m, tbc=\E[3g, - -# Francesco Potorti : -# NCSA telnet is one of the most used telnet clients for the Macintosh. It has -# been maintained until recently by the National Center for Supercomputer -# Applications, and it is feature rich, stable and free. It can be downloaded -# from www.ncsa.edu. This terminfo description file is based on xterm-vt220, -# xterm+sl, and the docs at NCSA. It works well. -# -# NCSA Telnet 2.6 for Macintosh in vt220 8-bit emulation mode -# The terminal options should be set as follows: -# Xterm sequences ON -# use VT wrap mode ON -# use Emacs arrow keys OFF -# CTRL-COMND is Emacs meta ON -# 8 bit mode ON -# answerback string: "ncsa-vt220-8" -# setup keys: all disabled -# -# Application mode is not used. -# -# Other special mappings: -# Apple VT220 -# HELP Find -# HOME Insert here -# PAGEUP Remove -# DEL Select -# END Prev Screen -# PAGEDOWN Next Screen -# -# Though it supports ANSI color, NCSA Telnet uses color to represent blinking -# text. -# -# The status-line manipulation is a mapping of the xterm-compatible control -# sequences for setting the window-title. So you must use tsl and fsl in -# pairs, since the latter ends the string that is loaded to the window-title. -ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, - am, hs, km, mir, msgr, xenl, - acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E]0;\007, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[?5h\E[?5l, fsl=^G, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>, - is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~, - kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~, - kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, - 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, - rc=\E8, rev=\E[7m, rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, ri=\EM, - rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l, - rmso=\E[27m, rmul=\E[24m, - rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7, - 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, smacs=\E(0, smam=\E[?7h, smcup=\E7, - smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, tsl=\E]0;, - u8=\E[?62;1;6c, use=ansi+enq, -ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, - use=ncsa-m, use=klone+color, -ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, - hs@, - dsl@, fsl@, tsl@, use=ncsa, -ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, - hs@, - dsl@, fsl@, tsl@, use=ncsa-m, -# alternate -TD: -# The documented function-key mapping refers to the Apple Extended Keyboard -# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6). We use the VT220-style -# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on -# 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, - -#### Pilot Pro Palm-Top -# -# Termcap for Top Gun Telnet and SSH on the Palm Pilot. -# http://www.ai/~iang/TGssh/ -pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional, - OTbs, am, xenl, - cols#39, lines#16, - bel=^G, clear=\Ec, cr=^M, cub1=^H, cud1=^J, - cup=\Em%p1%{32}%+%c%p2%{32}%+%c, home=\Em\s\s, ht=^I, - ind=^J, kbs=^H, kcub1=^H, kcud1=^J, knp=^L, kpp=^K, nel=\Em~\s, - rmso=\EB, smso=\Eb, - -# From: Federico Bianchi -# These entries are for the Embeddable Linux Kernel System (ELKS) -# project - an heavily stripped down Linux to be run on 16 bit -# boxes or, eventually, to be used in embedded systems - and have been -# adapted from the stock ELKS termcap. The project itself looks stalled, -# and the latest improvements I know of date back to March 2000. -# -# To cope with the ELKS dumb console I added an "elks-glasstty" entry; -# as an added bonus, this deals with all the capabilities common to -# both VT52 and ANSI (or, eventually, "special") modes. - -elks-glasstty|ELKS glass-TTY capabilities, - OTbs, am, - cols#80, it#8, lines#25, - bel=^G, cr=^M, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, - -elks-vt52|ELKS vt52 console, - clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\EK, - home=\EH, use=elks-glasstty, - -elks-ansi|ELKS ANSI console, - clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - rmso=\E[m, smso=\E[7m, 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. - -elks|default ELKS console, - use=elks-vt52, - -# Project SIBO (for Psion 3 palmtops) console is identical to the ELKS -# one but in screen size - -sibo|ELKS SIBO console, - cols#61, it#8, lines#20, use=elks-vt52, - -######## COMMERCIAL WORKSTATION CONSOLES -# - -#### Alpha consoles -# - -# This is from the OSF/1 Release 1.0 termcap file -pccons|pcconsole|ANSI (mostly) Alpha PC console terminal emulation, - am, xon, - cols#80, lines#25, - bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=^J, 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, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - nel=^M^J, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m, - -#### Sun consoles -# - -# :is1: resets scrolling region in case a previous user had used "tset vt100" -oldsun|Sun Microsystems Workstation console, - OTbs, am, km, mir, msgr, - cols#80, it#8, lines#34, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - 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, -# From: Alexander Lukyanov , 14 Nov 1995 -# capability later corrected by J.T. Conklin -# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998) -sun-il|Sun Microsystems console with working insert-line, - am, km, msgr, - cols#80, lines#34, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kdch1=\177, kend=\E[220z, kf1=\E[224z, - kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, kf2=\E[225z, - kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, kf6=\E[229z, - kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, khome=\E[214z, - 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, -# On some versions of CGSIX framebuffer firmware (SparcStation 5), / -# flake out on the last line. Unfortunately, without them the terminal has no -# way to scroll. -sun-cgsix|sun-ss5|Sun SparcStation 5 console, - il@, il1@, use=sun-il, -# If you are using an SS5, change the sun definition to use sun-ss5. -sun|sun1|sun2|Sun Microsystems Inc. workstation console, - use=sun-il, - -# From: Tue Sep 24 13:14:44 1985 -sun-s|Sun Microsystems Workstation window with status line, - hs, - dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun, -sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs, - hs, - dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e, -sun-48|Sun 48-line window, - cols#80, lines#48, use=sun, -sun-34|Sun 34-line window, - cols#80, lines#34, use=sun, -sun-24|Sun 24-line window, - cols#80, lines#24, use=sun, -sun-17|Sun 17-line window, - cols#80, lines#17, use=sun, -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=^M, use=sun, -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, - lines#35, - rmcup=\E[>4h, smcup=\E[>4l, use=sun, -sun-type4|Sun Workstation console with type 4 keyboard, - kcub1=\E[217z, kcud1=\E[221z, kcuf1=\E[219z, - 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 -# 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. -# 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. -# -# Since the documentation and terminfo do not agree, see also current code at -# http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/tem_safe.c -# -# That (actually a different driver which "supports" sun-color) also supports -# these features: -# vpa=\E[%i%p1%dd -# hpa=\E[%i%p1%d` -# cbt=\E[Z -# dim=\E[2m -# blink=\E[5m -# It supports bold, but not underline -TD (2009-09-19) -sun-color|Sun Microsystems Workstation console with color support (IA systems), - colors#8, ncv#3, pairs#64, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, home=\E[H, op=\E[0m, 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}%=%t3%e%p1%d%;m, - use=sun, - -#### Iris consoles -# - -# (wsiris: this had extension capabilities -# :HS=\E7F2:HE=\E7F7:\ -# :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite: -# See the note on Iris extensions near the end of this file. -# Finally, removed suboptimal =\EH\EJ and added & -# from BRL -- esr) -wsiris|iris40|iris emulating a 40 line visual 50 (approximately), - OTbs, OTnc, OTpt, am, - OTkn#3, cols#80, it#8, lines#40, - OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK, - flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL, - ind=^J, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, - kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI, - rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P, - smul=\E7R2\E9P, - -#### NeWS consoles -# -# Console terminal windows under the NeWS (Sun's Display Postscript windowing -# environment). Note: these have nothing to do with Sony's News workstation -# line. -# - -# Entry for NeWS's psterm from Eric Messick & Hugh Daniel -# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr) -psterm|psterm-basic|NeWS psterm-80x34, - OTbs, am, hs, km, ul, - cols#80, it#8, lines#34, - blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;, - cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY, - dch1=\EF, dl1=\EK, ed=\EB, el=\EC, flash=\EZ, fsl=\ENl, - home=\ER, ht=^I, il1=\EA, ind=\EW, is1=\EN*, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ll=\EU, rc=^\, rev=\EOr, - ri=\EX, rmcup=\ENt, rmir=\ENi, rmso=\ENo, rmul=\ENu, sc=^], - sgr0=\EN*, smcup=\EOt, smir=\EOi, smso=\EOo, smul=\EOu, - tsl=\EOl, -psterm-96x48|NeWS psterm 96x48, - cols#96, lines#48, use=psterm, -psterm-90x28|NeWS psterm 90x28, - cols#90, lines#28, use=psterm, -psterm-80x24|NeWS psterm 80x24, - cols#80, lines#24, use=psterm, -# This is a faster termcap for psterm. Warning: if you use this termcap, -# some control characters you type will do strange things to the screen. -# (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr) -psterm-fast|NeWS psterm fast version (flaky ctrl chars), - OTbs, am, hs, km, ul, - cols#80, it#8, lines#34, - blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;, - cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y, - dch1=^F, dl1=^K, ed=^B, el=^C, flash=^Z, fsl=^Nl, home=^R, ht=^I, - il1=^A, ind=^W, is1=^N*, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, ll=^U, rc=^\, rev=^Or, ri=^X, rmcup=^Nt, rmir=^Ni, - rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi, - smso=^Oo, smul=^Ou, tsl=^Ol, - -#### NeXT consoles -# -# Use `glasstty' for the Workspace application -# - -# From: Dave Wetzel 22 Dec 1995 -next|NeXT console, - am, xt, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, - rmso=\E[4;1m, sgr0=\E[m, smso=\E[4;2m, -nextshell|NeXT Shell application, - am, - cols#80, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, - -#### Sony NEWS workstations -# - -# (news-unk: this had :KB=news: -- esr) -news-unk|SONY NEWS vt100 emulator common entry, - OTbs, OTpt, am, xenl, - cols#80, - OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L, - is2=\E[?7h\E[?1l\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, rc=\E8, rev=\E[7m, ri=\EM, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7, - sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, -# -# (news-29: this had :TY=ascii: --esr) -news-29, - lines#29, use=news-unk, -# (news-29-euc: this had :TY=euc: --esr) -news-29-euc, - use=news-29, -# (news-29-sjis: this had :TY=sjis: --esr) -news-29-sjis, - use=news-29, -# -# (news-33: this had :TY=ascii: --esr) -news-33, - lines#33, use=news-unk, -# (news-33-euc: this had :TY=euc: --esr) -news-33-euc, - use=news-33, -# (news-33-sjis: this had :TY=sjis: --esr) -news-33-sjis, - use=news-33, -# -# (news-42: this had :TY=ascii: --esr) -news-42, - lines#42, use=news-unk, -# (news-42-euc: this had :TY=euc: --esr) -news-42-euc, - use=news-42, -# (news-42-sjis: this had :TY=sjis: --esr) -news-42-sjis, - use=news-42, -# -# NEWS-OS old termcap entry -# -# (news-old-unk: this had :KB=news:TY=sjis: --esr) -news-old-unk|SONY NEWS vt100 emulator common entry, - OTbs, OTpt, am, xenl, - cols#80, vt#3, - OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, rev=\E[7m, ri=\EM, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, -# -# (nwp512: this had :DE=^H:, which I think means --esr) -nwp512|news|nwp514|news40|vt100-bm|old sony vt100 emulator 40 lines, - OTbs, - lines#40, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, - use=news-old-unk, -# -# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr) -nwp512-a|nwp514-a|news-a|news42|news40-a|sony vt100 emulator 42 line, - lines#42, - is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8, - use=news-old-unk, -# -# (nwp-512-o: this had :KB=nwp410:DE=^H: I interpret the latter as . --esr) -nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|sony vt100 emulator 40 lines, - OTbs, - lines#40, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40r\E8, - use=news-old-unk, -# -# (nwp513: this had :DE=^H: and the alias vt100-bm --esr) -nwp513|nwp518|nwe501|newscbm|news31|sony vt100 emulator 33 lines, - OTbs, - lines#31, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, - use=news-old-unk, -# -# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as ; --esr) -# also the alias vt100-bm. -nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old sony vt100 emulator 33 lines, - OTbs, - lines#33, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33r\E8, - use=news-old-unk, -# -# (nwp513-o: had :DE=^H:, I think that's ; also the alias vt100-bm --esr) -nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old sony vt100 emulator 33 lines, - OTbs, - lines#31, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31r\E8, - use=news-old-unk, -# -# (news28: this had :DE=^H:, I think that's , and :KB=nws1200: --esr) -news28|sony vt100 emulator 28 lines, - OTbs, - lines#28, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28r\E8, - use=news-old-unk, -# -# (news29: this had :TY=ascii:KB=nws1200:\ --esr) -news29|news28-a|sony vt100 emulator 29 lines, - lines#29, - is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29r\E8, - use=news-old-unk, -# -# (news511: this had :TY=sjis: --esr) -nwp511|nwp-511|nwp-511 vt100, - OTbs, OTpt, am, xenl, - cols#80, lines#24, - clear=\E[;H\E[2J$<20/>, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M, - 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/>, - rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h, - smso=\E[7m$<2/>, smul=\E[4m$<2/>, -# (news517: this had :TY=sjis:. --esr) -nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows, - eslok, hs, - cols#80, lines#30, - OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$}, - is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - tsl=\E[1$}\E[;%df, use=vt200, -# (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$}, - 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=vt200, - -#### Common Desktop Environment -# - -# This ships with Sun's CDE in Solaris 2.5 -# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov -dtterm|CDE desktop terminal, - am, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, lm#0, ncv@, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H, - ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, - ind=\ED, invis=\E[8m, is2=\E F\E>\E[?1l\E[?7h\E[?45l, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[3~, 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~, khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, - rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m, - sc=\E7, - 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=ecma+color, - -#### Non-Unix Consoles -# - -### EMX termcap.dat compatibility modes -# -# Also (possibly only EMX, so we don't put it in ansi.sys, etc): set the -# no_color_video to inform the application that standout(1), underline(2) -# reverse(4) and invisible(64) don't work with color. -emx-base|DOS special keys, - bce, bw, - it#8, ncv#71, - bel=^G, use=ansi.sys, - -# Except for the "-emx" suffixes, these are as distributed with EMX 0.9b, -# a Unix-style environment used on OS/2. (Note that the suffix makes some -# names longer than 14 characters, the nominal maximum). -# -# Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs. -ansi-emx|ANSI.SYS color, - am, bce, eo, mir, msgr, xon, - colors#8, cols#80, it#8, lines#25, pairs#64, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[1;33;44m\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, - cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch=\E[%p1%dp, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, - home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, ind=^J, - kb2=\E[G, kbs=^H, kf0=\0D, kll=\0O, kspd=^Z, nel=^M^J, - rev=\E[5;37;41m, rmir=\E[4l, rmpch=\E[10m, - rmso=\E[0;44m\E[1;33m, rmul=\E[0;44m\E[1;33m, rs1=\Ec, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - sgr0=\E[0m\E[1;33;44m, smir=\E[4h, smpch=\E[11m, - smso=\E[0;31;47m, smul=\E[1;31;44m, tbc=\E[3g, u8=\E[?6c, - u9=\E[c, use=emx-base, -# nice colors for Emacs (white on blue, mode line white on cyan) -ansi-color-2-emx|ANSI.SYS color 2, - clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m, - rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec, - setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m, - smul=\E[1;36;44m, use=ansi-emx, -# nice colors for Emacs (white on black, mode line black on cyan) -ansi-color-3-emx|ANSI.SYS color 3, - clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m, - rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec, - setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m, - smul=\E[0;36;40m, use=ansi-emx, -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>, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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=^M^J, rev=\E[7m, - sgr0=\E[0m, - -# Use this for cygwin32 (tested with beta 19.1) -# underline is colored bright magenta -# shifted kf1-kf12 are kf11-kf22 -cygwinB19|ansi emulation for cygwin32, - 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, rmam@, smam@, - use=ansi.sys, - -# Use this for cygwin (tested with version 1.1.0). -# I've combined pcansi and linux. Some values of course were different and -# I've indicated which of these were and which I used. -# Cheers, earnie_boyd@yahoo.com -# several changes based on running with tack and comparing with older entry -TD -# more changes from csw: -# add cbt [backtab] -# remove eo [erase overstrike with blank] -# change clear was \E[H\E[J now \E[2J (faster?) -# remove cols -# remove lines -# remove ncv#3 [colors collide with highlights, bitmask] not applicable -# to MSDOS box? -# add cub [cursor back param] -# add cuf [cursor forward param] -# add cuu [cursor up param] -# add cud [cursor down param] -# add hs [has status line] -# add fsl [return from status line] -# add tsl [go to status line] -# add smacs [Start alt charset] (not sure if this works) -# add rmacs [End alt charset] (ditto) -# add smcup [enter_ca_mode] (save console; thanks Corinna) -# add rmcup [exit_ca_mode] (restore console; thanks Corinna) -# add kb2 [center of keypad] -# add u8 [user string 8] \E[?6c -# add el [clear to end of line] \E[K -# Notes: -# cnorm [make cursor normal] not implemented -# flash [flash] not implemented -# blink [blink] not implemented very usefully in cygwin? \E[5m -# dim [dim] not implemented very usefully in cygwin? \E[2m -# cub1 [cursor back 1] typically \E[D, but ^H is faster? -# kNXT [shifted next key] not implemented -# kPRV [shifted prev key] not implemented -# khome [home key] really is \E[1~ NOT \E[H -# tbc [clear tab stops] not implemented -# xenl [newline ignnored after 80 cols] messes up last line? Ehud Karni -# smpch [Start PC charset] is \E[11m, same as smacs -# rmpch [End PC charset] is \E[10m, same as rmacs -# mir [move in insert mode] fails in tack? -# bce [back color erase] causes problems with change background color? -# cvvis [make cursor very visible] causes a stackdump when testing with -# testcurs using the output option? \E[?25h\E[?8c -# civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c -# ech [erase characters param] broken \E[%p1%dX -# kcbt [back-tab key] not implemented in cygwin? \E[Z -# -# 2005/11/12 -TD -# Remove cbt since it does not work in current cygwin -# Add 'mir' and 'in' flags based on tack -cygwin|ansi emulation for Cygwin, - am, hs, mir, msgr, xon, - 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, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, invis=\E[8m, kb2=\E[G, - kbs=^H, 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kspd=^Z, - nel=^M^J, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=\E[10m, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, - 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, - sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, - sgr0=\E[0;10m, smacs=\E[11m, smcup=\E7\E[?47h, - smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, - vpa=\E[%i%p1%dd, use=vt102+enq, - -# I've supplied this so that you can help test new values and add other -# features. Cheers, earnie_boyd@yahoo.com. -# -# Some features are from pcansi. The op value is from linux. Function-keys -# are from linux. These have been tested not to cause problems. xenl was in -# this list, but DOES cause problems so it has been removed -cygwinDBG|Debug Version for Cygwin, - am, eo, mir, msgr, xon, - colors#8, cols#80, it#8, lines#24, ncv#3, 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, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cnorm=\E[?25h, cr=^M, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h\E[?5l$<200/>, home=\E[H, hpa=\E[%i%p1%dG, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, invis=\E[8m, kNXT=\E[6$, kPRV=\E[5$, - kb2=\E[G, kbs=^H, kcbt=\E[Z, 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[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~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, kspd=^Z, nel=^M^J, op=\E[39;49m, - rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, 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%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, - sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt102+enq, - -# Key definitions: -# The encodings for unshifted arrow keys, F1-F12, Home, Insert, etc. match the -# encodings used by other x86 environments. All others are invented for DJGPP. -# Oddly enough, while several combinations of modifiers are tabulated, there is -# none for shifted cursor keys. -# -# F1 \E[[A -# F2 \E[[B -# F3 \E[[C -# F4 \E[[D -# F5 \E[[E -# F6 \E[17~ -# F7 \E[18~ -# F8 \E[19~ -# F9 \E[20~ -# F10 \E[21~ -# F11 \E[23~ -# F12 \E[24~ -# -# Delete \E[3~ -# Down Arrow \E[B -# End \E[4~ -# Home \E[1~ -# Insert \E[2~ -# Left Arrow \E[D -# Page Down \E[6~ -# Page Up \E[5~ -# Right Arrow \E[C -# Up Arrow \E[A -# -# Shift-F1 \E[25~ -# Shift-F2 \E[26~ -# Shift-F3 \E[27~ -# Shift-F4 \E[28~ -# Shift-F5 \E[29~ -# Shift-F6 \E[30~ -# Shift-F7 \E[31~ -# Shift-F8 \E[32~ -# Shift-F9 \E[33~ -# Shift-F10 \E[34~ -# Shift-F11 \E[35~ -# Shift-F12 \E[36~ -# -# Ctrl-F1 \E[47~ -# Ctrl-F2 \E[48~ -# Ctrl-F3 \E[49~ -# Ctrl-F4 \E[50~ -# Ctrl-F5 \E[51~ -# Ctrl-F6 \E[52~ -# Ctrl-F7 \E[53~ -# Ctrl-F8 \E[54~ -# Ctrl-F9 \E[55~ -# Ctrl-F10 \E[56~ -# Ctrl-F11 \E[57~ -# Ctrl-F12 \E[58~ -# -# Ctrl-Delete \E[43~ -# Ctrl-Down Arrow \E[38~ -# Ctrl-End \E[44~ -# Ctrl-Home \E[41~ -# Ctrl-Insert \E[42~ -# Ctrl-Left Arrow \E[39~ -# Ctrl-Page Down \E[46~ -# Ctrl-Page Up \E[45~ -# Ctrl-Right Arrow \E[40~ -# Ctrl-Up Arrow \E[37~ -# -# Alt-F1 \E[59~ -# Alt-F2 \E[60~ -# Alt-F3 \E[61~ -# Alt-F4 \E[62~ -# Alt-F5 \E[63~ -# Alt-F6 \E[64~ -# Alt-F7 \E[65~ -# Alt-F8 \E[66~ -# Alt-F9 \E[67~ -# Alt-F10 \E[68~ -# Alt-F11 \E[79~ -# Alt-F12 \E[80~ -# -# Alt-Delete \E[65~ -# Alt-Down Arrow \E[60~ -# Alt-End \E[66~ -# Alt-Home \E[41~ -# Alt-Insert \E[64~ -# Alt-Left Arrow \E[61~ -# Alt-Page Down \E[68~ -# Alt-Page Up \E[67~ -# Alt-Right Arrow \E[62~ -# Alt-Up Arrow \E[59~ -# -# Also: -# 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~ -djgpp|ansi emulation for DJGPP alpha, - 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, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v, - clear=\E[H\E[J, cnorm=\E[v, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, invis=\E[8m, kbs=^H, 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[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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, nel=^M^J, - op=\E[37;40m, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, - 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, - -djgpp203|Entry for DJGPP 2.03, - OTbs, am, - cols#80, it#8, lines#25, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, - -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=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=\E[S, indn=\E[%p1%dS, invis=\E[8m, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[3~, 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~, kich1=\E[2~, - kll=\E[4~, knp=\E[6~, kpp=\E[5~, nel=^M^J, rev=\E[7m, - ri=\E[T, rin=\E[%p1%dT, rmso=\E[m, setab=\E[4%p1%dm, - setaf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, smul=\E[4m, - -# This is tested using U/Win's telnet. Scrolling is omitted because it is -# buggy. Another odd bug appears when displaying "~" in alternate character -# set (the emulator spits out error messages). Compare with att6386 -TD -uwin|U/Win 3.2 console, - am, eo, in, msgr, xenl, xon, - colors#8, it#8, ncv#58, pairs#64, - 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, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, cub1=^H, cud1=^J, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, - ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, ich1=\E[@, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, 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, - khome=\E[H, kich1=\E[@, nel=^M^J, op=\E[39;49m, rc=\E8, - rev=\E[7m, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m, - rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m, - smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, - -# This entry fits the Windows NT console when the _POSIX_TERM environment -# variable is set to 'on'. While the Windows NT POSIX console is seldom used, -# the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP -# stack and the Win32 (i.e., Windows 95 and Windows NT 3.1 or later) operating -# systems is not, and (surprise!) they match very well. -# -# See: MS Knowledge Base item Q108581, dated 13-MAY-1997, titled "Setting Up -# VI POSIX Editor for Windows NT 3.1". True to Microsoft form, not only -# are the installation instructions a pile of mind-numbing bureaucratese, -# but the termcap entry is actually broken and unusable as given; the :do: -# capability is misspelled "d". -# -# To use this, you need to a bunch of environment variables: -# -# SET _POSIX_TERM=on -# SET TERM=ansi -# SET TERMCAP=location of termcap file in POSIX file format -# which is case-sensitive. -# e.g. SET TERMCAP=//D/RESKIT35/posix/termcap -# SET TMP=//C/TEMP -# -# Important note: setting the TMP environment variable in POSIX style renders -# it incompatible with a lot of other applications, including Visual C++. So -# you should have a separate command window just for vi. All the other -# variables may be permanently set in the Control Panel\System applet. -# -# You can find out more about the restrictions of this facility at -# . -# -# From: Federico Bianchi , 15 Jan 1997 -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=^M, cub1=^H, cud1=^J, 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, -# From: jew@venus.sunquest.com -# Date: 19 Feb 93 23:41:07 GMT -# Here's a combination of ansi and vt100 termcap -# entries that works nearly perfectly for me -# (Gateway 2000 Handbook and Microsoft Works 3.0): -pcmw|PC running Microsoft Works, - am, xenl, - cols#80, it#8, lines#24, vt#3, - bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, - 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$<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/lib/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/>, - -# From: Federico Bianchi -# This is the entry for the OpenNT terminal. -# The ntconsole name is for backward compatability. -# This is for OpenNT 2.0 and later. -# Later OpenNT was renamed to Interix. -# -# Presently it is distributed by Microsoft as Services For Unix (SFU). -# The 3.5 beta contains ncurses 4.2 (that is header files and executables, -# the documentation dates from 1.9.9e) -TD - -interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color, - am, bw, msgr, - colors#8, cols#80, lines#25, ncv#3, 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, clear=\E[2J, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[M, 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, kf61=\EF+, kf62=\EF-, - kf63=\EF\014 kf64=\EF$, kf7=\EF7, kf8=\EF8, kf9=\EF9, - kich1=\E[L, kll=\E[U, knp=\E[T, kpp=\E[S, ll=\E[U, nel=^M^J, - op=\E[m, rc=\E[u, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, - rmcup=\E[2b\E[u\r\E[K, rmso=\E[m, rmul=\E[m, rs1=\Ec, - sc=\E[s, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - setb=\E[%p1%{40}%+%dm, setf=\E[%p1%{30}%+%dm, - sgr0=\E[0m, smcup=\E[s\E[1b, smso=\E[7m, smul=\E[4m, - -opennt-35|ntconsole-35|OpenNT-term35 compatible with color, - lines#35, use=opennt, - -opennt-50|ntconsole-50|OpenNT-term50 compatible with color, - lines#50, use=opennt, - -opennt-60|ntconsole-60|OpenNT-term60 compatible with color, - lines#60, use=opennt, - -opennt-100|ntconsole-100|OpenNT-term100 compatible with color, - lines#100, use=opennt, - -# OpenNT wide terminals -opennt-w|opennt-25-w|ntconsole-w|ntconsole-25-w|OpenNT-term-w compat with color, - cols#125, use=opennt, - -opennt-35-w|ntconsole-35-w|OpenNT-term35-w compatible with color, - lines#35, use=opennt-w, - -opennt-50-w|ntconsole-50-w|OpenNT-term50-w compatible with color, - lines#50, use=opennt-w, - -opennt-60-w|ntconsole-60-w|OpenNT-term60-w compatible with color, - lines#60, use=opennt-w, - -opennt-w-vt|opennt-25-w-vt|ntconsole-w-vt|ntconsole-25-w-vt|OpenNT-term-w-vt compat with color, - cols#132, use=opennt, - -# OpenNT terminals with no smcup/rmcup (names match termcap entries) -interix-nti|opennt-nti|opennt-25-nti|ntconsole-25-nti|OpenNT-nti compatible with color, - rmcup@, smcup@, use=opennt, - -opennt-35-nti|ntconsole-35-nti|OpenNT-term35-nti compatible with color, - lines#35, use=opennt-nti, - -opennt-50-nti|ntconsole-50-nti|OpenNT-term50-nti compatible with color, - lines#50, use=opennt-nti, - -opennt-60-nti|ntconsole-60-nti|OpenNT-term60-nti compatible with color, - lines#60, use=opennt-nti, - -opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color, - lines#100, use=opennt-nti, - -######## COMMON TERMINAL TYPES -# -# This section describes terminal classes and maker brands that are still -# quite common, but have proprietary command sets not blessed by ANSI. -# - -#### Altos -# -# Altos made a moderately successful line of UNIX boxes. In 1990 they were -# bought out by Acer, a major Taiwanese manufacturer of PC-clones. -# Acer has a web site at http://www.acer.com. -# -# Altos descriptions from Ted Mittelstaedt 4 Sep 1993 -# His comments suggest they were shipped with the system. -# - -# (altos2: had extension capabilities -# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ -# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ -# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ -# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: -# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\ -# :YU=^AQ\r:YD=^AR\r:YR=^AS\r:YL=^AT\r:\ -# :HL=^AP\r:SP=\E[i:\ -# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\ -# :LO=\E[0q:LC=\E[5q:LL=\E[6q:\ -# Comparison with the k* capabilities makes it obvious that the c* things are -# shift keys. I have renamed them to keys 32 and up accordingly. Also, -# :sr: was given as a boolean-- esr) -altos2|alt2|altos-2|altos II, - cols#80, it#8, lines#24, xmc#0, - clear=\E[H\E[2J, cr=^M, 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=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, il1=\E[L, ind=^J, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r, - kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r, - kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r, - kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r, - 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=^M^J, rmam=\E[?7l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, - smam=\E[?7h, smso=\E[7m, smul=\E[4m, -# (altos3: had extension capabilities -# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ -# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ -# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ -# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: -# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\ -# :HL=^AP\r:SP=\E[i:\ -# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\ -altos3|altos5|alt3|alt5|altos-3|altos-5|altos III or V, - blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2, -altos4|alt4|altos-4|altos IV, - use=wy50, -# (altos7: had extension capabilities: -# :GG#0:GI=\EH8:GF=\EH7:\ -# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ -# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ -# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ -# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: -# Comparison with the k* capabilities makes it obvious that the c* things are -# shift keys. I have renamed them to keys 32 and up accordingly. I have -# also made this entry relative to adm12 in order to give it an . The -# imported by use=adm+sgr may work, let me know. -- esr) -altos7|alt7|altos VII, - am, mir, - cols#80, lines#24, xmc#0, - acsc=j5k3l2m1n8q\:t4u9v=w0x6, blink=\EG2, bold=\EGt, - clear=\E+^^, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dim=\EGp, dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, il1=\EE, - ind=^J, invis=\EG1, - is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2, kDL=^Am\r, - kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=^AM\r, kel=^AN\r, - kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r, - kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r, - 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=^^, kil1=^AJ\r, kind=^AO\r, - knp=\EK, kpp=\EJ, mc4=\EJ, mc5=\Ed#, nel=^M^J, ri=\Ej, - rmir=\Er, smir=\Eq, use=adm+sgr, -altos7pc|alt7pc|altos PC VII, - kend=\ET, use=altos7, - -#### Hewlett-Packard (hp) -# -# Hewlett-Packard -# 8000 Foothills Blvd -# Roseville, CA 95747 -# Vox: 1-(916)-785-4363 (Technical response line for VDTs) -# 1-(800)-633-3600 (General customer support) -# -# -# As of March 1998, HP no longer has any terminals in production. -# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being -# supported (they still have parts). So are the 2392a and 2394a. -# See the WORKSTATION CONSOLES section for the 700s. -# - -# Generic HP terminal - this should (hopefully) work on any HP terminal. -hpgeneric|hp|hewlett-packard generic terminal, - OTbs, OTpt, am, da, db, mir, xhp, - cols#80, lines#24, lm#0, vt#6, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM, - ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, - ind=^J, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3, - vpa=\E&a%p1%dY, - -hp110|hewlett-packard model 110 portable, - lines#16, use=hpgeneric, - -hp+pfk+cr|hp function keys with CR, - kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, - kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, - -hp+pfk-cr|hp function keys w/o CR, - kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, - kf8=\Ew, - -# The hp2621s use the same keys for the arrows and function keys, -# but not separate escape sequences. These definitions allow the -# user to use those keys as arrow keys rather than as function -# keys. -hp+pfk+arrows|hp alternate arrow definitions, - kcub1=\Eu\r, kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1@, - kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, khome=\Ep\r, kind=\Er\r, - kll=\Eq\r, kri=\Es\r, - -hp+arrows|hp arrow definitions, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, - kind=\ES, kll=\EF, kri=\ET, - -# Generic stuff from the HP 262x series -# -hp262x|HP 262x terminals, - xhp, - blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES, - invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, - kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET, - krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, - sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%c, - sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, - -# Note: no on HPs since that homes to top of memory, not screen. -# 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 , and even then the user has to hold down shift! -# 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. -# -# Note: there are newer ROMs for 2621's that allow you to set -# strap A so the regular arrow keys xmit \EA, etc, as with the -# 2645. However, even with this strap set, the terminal stops -# xmitting if you reset it, until you unset and reset the strap! -# Since there is no way to set/unset the strap with an escape -# sequence, we don't use it in the default. -# If you like, you can use 2621-ba (brain-damaged arrow keys). -hp2621-ba|2621 w/new rom and strap A set, - rmkx@, smkx@, use=hp+arrows, use=hp2621, - -# hp2621 with function labels. Most of the time they are off, -# but inside vi, the function key labels appear. You have to -# hold down shift to get them to xmit. -hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|hp 2621 w/labels, - is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl, -hp2621-fl|hp 2621, - xhp@, xon, - pb#19200, - cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>, - ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD, - use=hp+pfk+cr, use=hpgeneric, - -# To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p -hp2621p|hp 2621 with printer, - mc4=\E&p13C, mc5=\E&p11C, use=hp2621, - -hp2621p-a|hp2621p with fn as arrows, - use=hp+pfk+arrows, use=hp2621p, - -# hp2621 with k45 keyboard -hp2621-k45|hp2621k45|k45|hp 2621 with 45 keyboard, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621, - -# 2621 using all 48 lines of memory, only 24 visible at any time. -hp2621-48|48 line 2621, - lines#48, - cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR, - use=hp2621, - -# 2621 with no labels ever. Also prevents vi delays on escape. -hp2621-nl|hp 2621 with no labels, - kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@, - use=hp2621-fl, - -# Needed for UCB ARPAVAX console, since lsi-11 expands tabs -# (wrong). -# -hp2621-nt|hp 2621 w/no tabs, - ht@, use=hp2621, - -# Hp 2624 B with 4 or 10 pages of memory. -# -# Some assumptions are made with this entry. These settings are -# NOT set up by the initialization strings. -# -# Port Configuration -# RecvPace=Xon/Xoff -# XmitPace=Xon/Xoff -# StripNulDel=Yes -# -# Terminal Configuration -# InhHndShk=Yes -# InhDC2=Yes -# XmitFnctn(A)=No -# InhEolWrp=No -# -# Note: the 2624 DOES have a true , believe it or not! -# -# The 2624 has an "error line" to which messages can be sent. -# This is CLOSE to what is expected for a "status line". However, -# after a message is sent to the "error line", the next carriage -# return is EATEN and the "error line" is turned back off again! -# So I guess we can't define , , , , , . -# -# This entry supports emacs (and any other program that uses raw -# mode) at 4800 baud and less. I couldn't get the padding right -# for 9600. -# -# (hp2624: replaced NUL sequences in flash with mandatory pauses -- esr) -hp2624|hp2624a|hp2624b|hp2624b-4p|Hewlett Packard 2624 B, - da, db, - lm#96, - flash=\E&w13F$<66/>\E&w12F$<66/>\E&w13F$<66/>\E&w12F, - use=hp+labels, use=scrhp, - -# This hp2626 entry does not use any of the fancy windowing stuff -# of the 2626. -# -# Indeed, terminfo does not yet handle such stuff. Since changing -# any window clears memory, it is probably not possible to use -# this for screen opt. -# -# ed is incredibly slow most of the time - I am guessing at the -# exact padding. Since the terminal uses xoff/xon this is intended -# only for cost computation, so that the terminal will prefer el -# or even dl1 which is probably faster! -# -# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only -# extra slow on the last line of the window. -# -# The padding probably should be changed. -# -hp2626|hp2626a|hp2626p|hp 2626, - da, db, - lm#0, pb#19200, - ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>, - is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk+cr, - use=hp+labels, use=scrhp, - -# This entry is for sysline. It allocates a 23 line window with -# a 115 line workspace for regular use, and a 1 line window for -# the status line. -# -# This assumes port 2 is being used. -# Turn off horizontal line, Create ws #1 with 115 lines, -# Create ws #2 with 1 line, Create window #1 lines 1-23, -# Create window #2 lines 24-24, Attach cursor to workspace #1. -# Note that this clears the tabs so it must be done by tset before -# it sets the tabs. -# -hp2626-s|hp 2626 using only 23 lines, - eslok, hs, - lines#23, - fsl=\E&d@\E&w7f2p1I\E&w4f1I, - is1=\E&q3t0{0H \E&w0f115n1I \E&w0f1n2I \E&w2f1i0d0u22l0S \E&w2f2i0d23u23l0S \E&w7f2p1I \r, - tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626, -# Force terminal back to 24 lines after being 23. -hp2626-ns|hp 2626 using all 24 lines, - is1=\E&q3t0{0H \E&w0f118n1I \E&w0f1n2I \E&w2f1i0d0u23l0S \E&w3f2I \E&w7f2p1I \r, - use=hp2626, -# Various entries useful for small windows on 2626. -hp2626-12|hewlett-packard 2626 12 lines, - lines#12, use=hp2626, -hp2626-12x40|hewlett-packard 2626 12 lines 40 columns, - cols#40, lines#12, use=hp2626, -hp2626-x40|hewlett-packard 2626 40 columns, - cols#40, use=hp2626, -hp2626-12-s|hewlett-packard 2626 11 lines plus status, - lines#11, use=hp2626-s, - -# -# hp2627 color tubes from University of Wisconsin -# -hp2627a-rev|hp 2627 with reverse video colors, - cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3\r, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmul=\E&v0S\E&d@, - smul=\E&dD\E&v1S, use=hp2621-nl, -hp2627a|hp 2627 color terminal with no labels, - cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rmso=\E&v0S, - rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S, - use=hp2621-nl, -hp2627c|hp 2627 color (cyan) terminal with no labels, - cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, use=hp2627a, - -# hp2640a doesn't have the Y cursor addressing feature, and C is -# memory relative instead of screen relative, as we need. -# -hp2640a|hp 2640a, - cup@, rmkx@, smkx@, use=hp2645, - -hp2640b|hp2644a|hp 264x series, - rmkx@, smkx@, use=hp2645, - -# (hp2641a: removed unknown :gu: -- esr) -hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry, - am, da, db, mir, xhp, - cols#80, lines#24, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM, - ed=\EJ, el=\EK, hpa=\E&a%p1%2dC, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/std, il1=\EL, ind=^J, - is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, - rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB, - vpa=\E&a%p1%2dY, - -# This terminal should be used at 4800 baud or less. It needs padding for -# plain characters at 9600, I guessed at an appropriate cr delay. It really -# wants ^E/^F handshaking, but that doesn't work well even if you write -# software to support it. -hp2645|hp45|HP 2645 series, - pb#9600, - blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, - kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB, - rmkx=\E&s0A, - sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%|%;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c, - sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric, -# You should use this terminal at 4800 baud or less. -hp2648|hp2648a|HP 2648a graphics terminal, - clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>, - dch1=\EP$<7>, ip=$<5>, use=hp2645, - -# The HP 150 terminal is a fairly vanilla HP terminal, with the -# clreol standout problem. It also has graphics capabilities and -# a touch screen, which we don't describe here. -hp150|hewlett packard Model 150, - OTbs, use=hp2622, - -# HP 2382a terminals, "the little ones." They don't have any -# alternate character set support and sending out ^N/^O will -# leave the screen blank. -hp2382a|hp2382|hewlett packard 2382a, - da, db, - lh#1, lm#48, - acsc@, - pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s, - rmacs@, - sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c, - sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp, - -hp2621-a|hp2621a-a|hp2621 with fn as arrows, - use=hp+pfk+arrows, use=hp2621-fl, - -# newer hewlett packard terminals - -newhpkeyboard|generic entry for HP extended keyboard, - kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, - kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV, - kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A, - use=hp+pfk-cr, - -newhp|generic entry for new hewlett packard terminals, - am, bw, mir, xhp, xon, - cols#80, lines#24, pb#4800, - acsc=2[3@4>5I9(\:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X\:Y+Z*dHjGkTlRmFn/q\,t5u6v8w7x., - bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=^M, cub1=^H, - cud1=^J, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH, - dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=^J, - invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=^M^J, - pfkey=\E&f0a%p1%dk0d%p2%l%dL%p2%s, - pfloc=\E&f1a%p1%dk0d%p2%l%dL%p2%s, - pfx=\E&f2a%p1%dk0d%p2%l%dL%p2%s, rev=\E&dB, ri=\ET, - rmacs=^O, rmir=\ER, rmso=\E&d@, rmul=\E&d@, rs1=\Eg, - sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga%+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+%Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64}%+%e%{64}%;%;%c%?%p9%t\016%e\017%;, - sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD, - tbc=\E3, use=newhpkeyboard, - -memhp|memory relative addressing for new HP ttys, - vt#6, - clear=\EH\EJ$<40>, cub=\E&a-%p1%dC, cud=\E&a+%p1%dR, - cuf=\E&a+%p1%dC, cup=\E&a%p1%dr%p2%dC, cuu=\E&a-%p1%dR, - home=\EH, hpa=\E&a%p1%dC, ll=\E&a23R\r, - mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dR, use=newhp, - -scrhp|screen relative addressing for new HP ttys, - clear=\E&a0c0Y\EJ$<40>, cub=\E&a-%p1%dC, - cud=\E&a+%p1%dR, cuf=\E&a+%p1%dC, - cup=\E&a%p1%dy%p2%dC$<10>, cuu=\E&a-%p1%dR, - home=\E&a0y0C, hpa=\E&a%p1%dC, ll=\E&a0y0C\EA, - mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dY, use=newhp, - -# (hp+labels: added label values from a BRL termcap -- esr) -hp+labels|"standard" label info for new HP ttys, - lh#2, lw#8, nlab#8, - lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, - pln=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t %;%p2%s, - rmln=\E&j@, smln=\E&jB, - -hp+printer|"standard" printer info for HP ttys, - ff=\E&p4u0C, mc0=\EH\E&p4dF, mc4=\E&p13C, mc5=\E&p11C, - - -# The new hp2621b is kind of a cross between the old 2621 and the -# new 262x series of machines. It has dip-switched options. -# The firmware has a bug in it such that if you give it a null -# length label, the following character is eaten! -hp2621b|hp 2621b with old style keyboard, - lh#1, lm#48, lw#8, nlab#8, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, - kind=\ET, kll=\EF, kri=\ES, - pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c%;%p2%s\E%{111}%p1%+%c\r, - smln=\E&jB, use=hp2621, - -hp2621b-p|hp 2621b with printer, - use=hp+printer, use=hp2621b, - -# hp2621b - new 2621b with new extended keyboard -# these are closer to the new 26xx series than the other 2621b -hp2621b-kx|hp 2621b with extended keyboard, - use=newhpkeyboard, use=hp2621b, - -hp2621b-kx-p|hp 2621b with new keyboard & printer, - use=hp+printer, use=hp2621b-kx, - -# Some assumptions are made in the following entries. -# These settings are NOT set up by the initialization strings. -# -# Port Configuration -# RecvPace=Xon/Xoff XmitPace=Xon/Xoff StripNulDel=Yes -# -# Terminal Configuration -# InhHndShk(G)=Yes InhDC2(H)=Yes -# XmitFnctn(A)=No InhEolWrp=No -# -# -# Hp 2622a & hp2623a display and graphics terminals -# -hp2622|hp2622a|hp 2622, - da, db, - lm#0, pb#19200, - is2=\E&dj@\r, use=hp+pfk+cr, use=hp+labels, use=scrhp, - -# The 2623 is a 2622 with extra graphics hardware. -hp2623|hp2623a|hp 2623, - use=hp2622, - -hp2624b-p|hp2624b-4p-p|hewlett packard 2624 B with printer, - use=hp+printer, use=hp2624, - -# The hewlett packard B can have an optional extra 6 pages of memory. -hp2624-10p|hp2624a-10p|hp2624b-10p|hewlett packard 2624 B w/ 10 pages of memory, - lm#240, use=hp2624, - -hp2624b-10p-p|hewlett packard 2624 B w/ extra memory & printer, - lm#240, use=hp2624b-p, - -# Color manipulations for HP terminals -hp+color|hp with colors, - ccc, - colors#16, ncv#17, pairs#7, - initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e.%p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1%e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%=%t1%e.%p7%d%;z%p1%dI, - oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5I\E&v1b1c6I\E&v1x1y7I, - op=\E&v0S, scp=\E&v%p1%dS, - -# sets the screen to be 80 columns wide -hp2397a|hp2397|hewlett packard 2397A color terminal, - is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color, - -# HP 700/44 Setup parameters: -# Terminal Mode HP-PCterm -# Inhibit Auto Wrap NO -# Status Line Host Writable -# PC Character Set YES -# Twenty-Five Line Mode YES -# XON/XOFF @128 or 64 (sc) -# Keycode Mode NO or YES (sc) -# Backspace Key BS or BS/DEL -# -# sets pcterm; autowrap; 25 lines; pc char set; prog DEL key; -# \E\\? does not turn off keycode mode -# sets alternate start/stop; keycode on -hpansi|hp700|hewlett packard 700/44 in HP-PCterm mode, - am, eo, xenl, xon, - cols#80, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[2J\E[H, - cnorm=\E[?25h, cr=^M, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, il1=\E[L, - ind=^J, - is2=\E[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\, - kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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, -# -# (hp2392: copied here from hpex -- esr) -hp2392|239x series, - cols#80, - cbt=\Ei, cup=\E&a%p1%dy%p2%dC, kf1=\Ep\r, kf2=\Eq\r, - kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, - kf8=\Ew\r, khome=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV, - rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY, - use=hpsub, - -hpsub|hp terminals -- capability subset, - am, da, db, mir, xhp, xon, - lines#24, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, - ht=^I, if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EL, ind=^J, - is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@, - sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, - -# hpex: -# May be used for most 24 x 80 hp terminals, -# but has no padding added, so may allow runover in some terminals at high -# baud rates. Will not work for hp2640a or hp2640b terminals, hp98x6 and -# hp98x5 terminal emulators or hp98x6 consoles. -# Adds xy-cursor addressing, vertical cursor addressing, home, -# last line, and underline capabilities. -# -# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:", -# moved here from hpsub -- esr) -hpex|hp extended capabilites, - cr=^M, cud1=^J, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=^J, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, rmir=\ER, rmul=\E&d@, smir=\EQ, - smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub, - -# From: Ville Sulko , 05 Aug 1996 -hp2|hpex2|hewlett-packard extended capabilities newer version, - am, da, db, mir, xhp, - cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, xmc#0, - bel=^G, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, - il1=\EL, ind=^J, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, - kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ, - kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET, - krmir=\ER, ktbc=\E3, meml=\El, memu=\Em, - pfkey=\E&f%p1%dk%p2%l%dL%p2%s, - pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, - pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, - pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rmir=\ER, rmkx=\E&s0A, - rmln=\E&j@, rmso=\E&d@, rmul=\E&d@, - sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+%p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, - sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smln=\E&jB, smso=\E&dB, - smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, - -# HP 236 console -# From: -hp236|hp236 internal terminal emulator, - OTbs, am, - cols#80, lines#24, - clear=\EF, cnorm=\EDE, cub1=^H, - cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB, - dch1=\EJ, dl1=\EH, el=\EK, ich1=\EI, il1=\EG, rmso=\ECI, - sgr0=\ECI, smso=\EBI, - -# This works on a hp300 console running Utah 4.3 BSD -# From: Craig Leres -hp300h|HP Catseye console, - OTbs, am, da, db, mir, xhp, - cols#128, lines#51, lm#0, xmc#0, - bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EL, ind=^J, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, - rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, - smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3, - vpa=\E&a%p1%dY, -# From: Greg Couch -hp9837|hp98720|hp98721|HP 9000/300 workstations, - OTbs, am, da, db, mir, xhp, - cols#128, it#8, lines#46, lm#0, - bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, - il1=\EL, ind=^J, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU, - kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@, - sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD, - tbc=\E3, vpa=\E&a%p1%dY, -# HP 9845 desktop computer from BRL -# (hp9845: removed unknown capability :gu: -- esr) -hp9845|HP 9845, - OTbs, am, da, db, eo, mir, xhp, - cols#80, lines#21, - OTbc=\ED, clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM, - ed=\EJ, el=\EK, if=/home/martino/avrdude-build-script/objdir/share/tabset/std, il1=\EL, - rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB, -# From: Charles A. Finnell of MITRE , developed 07SEP90 -# (hp98550: replaced /home/martino/avrdude-build-script/objdir/share/tabset/9837 with std because ,; -# added empty to avoid warnings re / --esr) -hp98550|hp98550a|HP 9000 Series 300 color console, - OTbs, am, da, db, mir, xhp, - cols#128, it#8, lines#49, lm#0, - acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR, - clear=\EH\EJ, cnorm=\E*dQ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH, - dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, - if=/home/martino/avrdude-build-script/objdir/share/tabset/std, il1=\EL, ind=^J, invis=\E&ds, - kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, kf1=\Ep, - kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, - khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, kind=\ES, kll=\EF, - knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, ktbc=\E3, rev=\E&dJ, - rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smso=\E&dJ, - smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, -# From: Victor Duchovni -# (hp700-wy: removed obsolete ":nl=^J:"; -# replaced /home/martino/avrdude-build-script/objdir/share/tabset/hp700-wy with std because , -- esr) -hp700-wy|HP700/41 emulating wyse30, - OTbs, am, bw, mir, msgr, - cols#80, it#8, lines#24, xmc#1, - cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET$<10/>, home=^^, ht=^I, hts=\E1, - if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EE$<0.7*/>, - is1=\E~"\EC\Er\E(\EG0\003\E`9\E`1, kbs=\177, kcbt=\EI, - kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, ked=\EY, - kel=\ET, khome=^^, khts=\EI, kich1=\Eq, krmir=\Er, ll=^^^K, - ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>, - sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>, - smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c, -hp70092|hp70092a|hp70092A|HP 700/92, - am, da, db, xhp, - cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, - acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA, - bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=^M, cub1=^H, - cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, - dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I, - hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, - ked=\EJ, kel=\EK, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, - kf6=\Eu, kf7=\Ev, kf8=\Ew, khome=\Eh, khts=\E1, kich1=\EQ, - kil1=\EL, kind=\ES, kll=\EF, knp=\EU, kpp=\EV, kri=\ET, - krmir=\ER, ktbc=\E3, rev=\E&dB, ri=\ET, rmacs=^O, rmir=\ER, - rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, rmul=\E&d@, - sgr0=\E&d@, smacs=^N, smir=\EQ, smkx=\E&s1A, smln=\E&jB, - smso=\E&dJ, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, - -bobcat|sbobcat|HP 9000 model 300 console, - am, da, db, mir, xhp, - cols#128, it#8, lines#47, xmc#0, - cbt=\Ei, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\E&a%p1%dy%p2%dC$<6/>, cuu1=\EA, dch1=\EP, - dl1=\EM$<10*/>, ed=\EJ, el=\EK, hpa=\E&a%p1%dC$<6/>, ht=^I, - il1=\EL$<10*/>, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=^M^J, rmir=\ER, - rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ, - smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>, -gator-t|HP 9000 model 237 emulating extra-tall AAA, - lines#94, use=gator, -gator|HP 9000 model 237 emulating AAA, - bw, km, mir, ul, - cols#128, it#8, lines#47, - bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, - 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, ed=\E[J, el=\E[K, home=\E[H, 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=^J, nel=^M^J, - 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, -gator-52|HP 9000 model 237 emulating VT52, - cols#128, lines#47, use=vt52, -gator-52t|HP 9000 model 237 emulating extra-tall VT52, - lines#94, use=gator-52, - -#### Honeywell-Bull -# -# From: Michael Haardt 11 Jan 93 -# - -# Honeywell Bull terminal. Its cursor and function keys send single -# control characters and it has standout/underline glitch. Most programs -# do not like these features/bugs. Visual bell is realized by flashing the -# "keyboard locked" LED. -dku7003-dumb|Honeywell Bull DKU 7003 dumb mode, - cols#80, lines#25, - clear=^]^_, cr=^M, cub1=^Y, cud1=^K, cuf1=^X, - cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, ed=^_, el=\E[K, - flash=\E[2h\E[2l, home=^], ht=^I, ind=^J, kbs=^H, kcub1=^Y, - kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=^M^J, -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, - -#### Lear-Siegler (adm) -# -# These guys are long since out of the terminals business, but -# in 1995 many current terminals still have an adm type as one of their -# emulations (usually their stupidest, and usually labeled adm3, though -# these `adm3' emulations normally have adm3a+ capabilities). -# -# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a -# `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator') -# was being held to ground would trigger a send of the top line on the screen. -# A quick fix might be to drop back to a cheesy 4-wire cable with pin 22 -# hanging in the air. (Thanks to Eric Fischer, , -# for clearing up this point.) - -adm1a|adm1|lsi adm1a, - am, - cols#80, lines#24, - bel=^G, clear=\E;$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^, - ind=^J, -adm2|lsi adm2, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=^J, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, -# (adm3: removed obsolete ":ma=^K^P:" -- esr) -adm3|lsi adm3, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, ind=^J, -# The following ADM-3A switch settings are assumed for normal operation: -# SPACE U/L_DISP CLR_SCRN 24_LINE -# CUR_CTL LC_EN AUTO_NL FDX -# Other switches may be set for operator convenience or communication -# requirements. I recommend -# DISABLE_KB_LOCK LOCAL_OFF 103 202_OFF -# ETX_OFF EOT_OFF -# Most of these terminals required an option ROM to support lower case display. -# Open the case and look at the motherboard; if you see an open 24-pin DIP -# socket, you may be out of luck. -# -# (adm3a: some capabilities merged in from BRl entry -- esr) -adm3a|lsi adm3a, - OTbs, am, - cols#80, lines#24, - OTma=^K^P, OTnl=^J, bel=^G, clear=\032$<1/>, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, rs2=^N, -adm3a+|adm3a plus, - kbs=^H, use=adm3a, -# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr) -adm5|lsi adm5, - xmc#1, - bel=^G, cr=^M, cud1=^J, ed=\EY, el=\ET, kbs=^H, khome=^^, - rmso=\EG, smso=\EG, use=adm3a+, -# A lot of terminals other than adm11s use these. Wherever you see -# use=adm+sgr with some of its capabilities disabled, try the -# disabled ones. They may well work but not have been documented or -# expressed in the using entry. We'd like to cook up an but the -# / sequences of the using entries vary too much. -adm+sgr|adm style highlight capabilities, - invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0, - smso=\EG4, smul=\EG8, -# LSI ADM-11 from George William Hartwig, Jr. via BRL -# Status line additions from Stephen J. Muir -# from . could also -# be ^Z, according to his entry. -# (adm11: =\EG4 was obviously erroneous because it also said -# =\EG4. Looking at other ADMs confirms this -- esr) -adm11|LSI ADM-11, - OTbs, am, hs, - OTkn#8, cols#80, lines#24, - OTnl=^J, bel=^G, blink=\EG2, clear=\E*, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, khome=^^, nel=^M^J, tsl=\EF\E), - use=adm+sgr, -# From: Andrew Scott Beals -# Corrected by Olaf Siebert , 11 May 1995 -# Supervisor mode info by Ari Wuolle, , 27 Aug 1996 -# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :". This formerly had -# =\Eq but that looked wrong; this is from Dave Yost -# via BRL. That entry asserted , but I've left that out because -# neither earlier nor later ADMSs have it -- esr) -# -# You will need to get into the supervisor setup before you can set -# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should -# see a lot more setup options. -# -# While in supervisor setup you can also use following codes: -# -# Ctrl-P Personality character selections (configure for example what -# arrow keys send, if I recall correctly) -# Ctrl-T tabs 1-80 use left&right to move and up to set and -# Ctrl-V tabs 81-158 down to clear tab. Shift-Ctrl-M sets right margin at cursor -# Ctrl-B Binary setup (probably not needed. I think that everything can -# be set using normal setup) -# Ctrl-A Answerback mode (enter answerback message) -# Ctrl-U User friendly mode (normal setup) -# Ctrl-D Defaults entire setup and function keys from EPROM tables -# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds. -# Ctrl-R Reads both setup and functions keys from NVM. -# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status -# -# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to -# RTS/CTS used nowadays with virtually every modem and computer. 19200 -# bps works fine with hardware flow control. -# -# The following null-modem cable should fix this and enable you to use -# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also -# set ADM-12+ for DTR handshaking from supervisor setup. -# -# PC Serial ADM-12+ -# -------- ------- -# 2 - 3 -# 3 - 2 -# 4 - 5 -# 5 - 20 -# 6,8 - 4 -# 7 - 7 -# 20 - 6,8 -# -adm12|lsi adm12, - OTbs, OTpt, am, mir, - OTug#1, cols#80, it#8, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, - is2=\E0 \E1 \E1 \E1 \E1 \E1 \E1 \E1 \E1, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, - kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, - kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, smir=\Eq, tbc=\E0, - use=adm+sgr, -# (adm20: removed obsolete ":kn#7:" -- esr) -adm20|lear siegler adm20, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cuf1=^L, - cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, ich1=\EQ, il1=\EE, - kf1=^A, kf2=^B, kf3=^W, kf4=^D, kf5=^E, kf6=^X, kf7=^Z, rmso=\E(, - sgr0=\E(, smso=\E), -adm21|lear siegler adm21, - xmc#1, - bel=^G, cr=^M, cud1=^J, dch1=\EW, dl1=30*\ER, ed=\EY, el=\ET, - ich1=\EQ, il1=30*\EE, ind=^J, invis@, kbs=^H, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, use=adm+sgr, - use=adm3a, -# (adm22: ":em=:" was an obvious typo for ":ei=:"; also, -# removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :"; -# removed bogus-looking \200 from before . -- esr) -adm22|lsi adm22, - OTbs, am, - cols#80, lines#24, - bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, home=^^, ht=\Ei, ich1=\EQ, il1=\EE, - is2=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0\0\0\0\0, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, khome=^^, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, - lf6=F6, lf7=F7, rmso=\E(, sgr0=\E(, smso=\E), -# ADM 31 DIP Switches -# -# This information comes from two versions of the manual for the -# Lear-Siegler ADM 31. -# -# Main board: -# rear of case -# +-||||-------------------------------------+ -# + S1S2 ||S + -# + ||3 + -# + + -# + ||S + -# + ||4 + -# + + -# + + -# + + -# + + -# + + -# +-+ +-+ -# + + -# + S5 S6 S7 + -# + == == == + -# +----------------------------------------------+ -# front of case (keyboard) -# -# S1 - Data Rate - Modem -# S2 - Data Rate - Printer -# ------------------------ -# Data Rate Setting -# ------------------- -# 50 0 0 0 0 -# 75 1 0 0 0 -# 110 0 1 0 0 -# 134.5 1 1 0 0 -# 150 0 0 1 0 -# 300 1 0 1 0 -# 600 0 1 1 0 -# 1200 1 1 1 0 -# 1800 0 0 0 1 -# 2000 1 0 0 1 -# 2400 0 1 0 1 -# 3600 1 1 0 1 -# 4800 0 0 1 1 -# 7200 1 0 1 1 -# 9600 0 1 1 1 -# x 1 1 1 1 -# -# S3 - Interface/Printer/Attributes -# --------------------------------- -# Printer Busy Control -# sw1 sw2 sw3 -# --------------- -# off off off Busy not active, CD disabled -# off off on Busy not active, CD enabled -# off on off Busy active on J5-20, CD disabled -# on off off Busy active on J5-19, CD disabled - Factory Set. -# on off on Busy active on J5-19, CD enabled -# -# sw4 Used in conjuction with S4 for comm interface control - Fact 0 -# -# sw5 Secondary Channel Control (Hardware implementation only) - Fact 0 -# -# sw6 ON enables printer BUSY active LOW - Factory Setting -# OFF enables printer BUSY active HIGH - If set to this, ADM31 senses -# -# sw7 ON - steady cursor - Factory Setting -# OFF - blinking cursor -# -# sw8 ON causes selected attribute character to be displayed -# OFF causes SPACE to be displayed instead - Factory Setting -# -# S4 - Interface -# -------------- -# Modem Interface -# S3 S4 S4 S4 S4 -# sw4 sw1 sw2 sw3 sw4 -# --------------------------- -# OFF ON OFF ON OFF Enable RS-232C interface, Direct Connect and -# Current Loop disabled - Factory Setting -# ON ON OFF ON OFF Enable Current Loop interface, Direct Connect -# disabled -# OFF OFF ON OFF ON Enable Direct Connect interface, RS-232C and -# Current Loop Disabled -# -# sw5 ON disables dot stretching mode - Factory Setting -# OFF enables dot stretching mode -# sw6 ON enables blanking function -# OFF enables underline function - Factory Setting -# sw7 ON causes NULLS to be displayed as NULLS -# OFF causes NULLS to be displayed as SPACES - Factory Setting -# -# S5 - Word Structure -# ------------------- -# sw1 ON enables BREAK key - Factory Setting -# OFF disables BREAK key -# sw2 ON selects 50Hz monitor refresh rate -# OFF selects 60Hz monitor refresh rate - Factory Setting -# -# Modem Port Selection -# sw3 sw4 sw5 -# --------------- -# ON ON ON Selects 7 DATA bits, even parity, 2 STOP bits -# OFF ON ON Selects 7 DATA bits, odd parity, 2 STOP bits -# ON OFF ON Selects 7 DATA bits, even parity, 1 STOP bit - Factory Set. -# OFF OFF ON Selects 7 DATA bits, odd parity, 1 STOP bit -# ON ON OFF Selects 8 DATA bits, no parity, 2 STOP bits -# OFF ON OFF Selects 8 DATA bits, no parity, 1 STOP bit -# ON OFF OFF Selects 8 DATA bits, even parity, 1 STOP bit -# OFF OFF OFF Selects 8 DATA bits, odd parity, 1 STOP bit -# -# sw6 ON sends bit 8 a 1 (mark) -# OFF sends bit 8 as 0 (space) - Factory Setting -# sw7 ON selects Block Mode -# OFF selects Conversation Mode - Factory Setting -# sw8 ON selects Full Duplex operation -# OFF selects Half Duplex operation - Factory Setting -# -# S6 - Printer -# ------------ -# sw1, sw2, sw6, sw7 Reserved - Factory 0 -# -# Printer Port Selection -# same as Modem above, bit 8 (when 8 DATA bits) is always = 0 -# -# sw8 ON enables Printer Port -# OFF disables Printer Port - Factory Setting -# -# S7 - Polling Address -# -------------------- -# sw1-7 Establish ASCII character which designates terminal polling address -# ON = logic 0 -# OFF = logic 1 - Factory Setting -# sw8 ON enables Polling Option -# OFF disables Polling Option - Factory Setting -# -# -# On some older adm31s, S4 does not exist, and S5-sw6 is not defined. -# -# This adm31 entry uses underline as the standout mode. -# If the adm31 gives you trouble with standout mode, check the DIP switch in -# position 6, bank @c11, 25% from back end of the circuit board. Should be -# OFF. If there is no such switch, you have an old adm31 and must use oadm31. -# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr) -adm31|lsi adm31 with sw6 set for underline mode, - OTbs, am, mir, - cols#80, lines#24, - bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=^J, is2=\Eu\E0, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, - kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, - kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, rmso=\EG0, - rmul=\EG0, sgr0=\EG0, smir=\Eq, smso=\EG1, smul=\EG1, -adm31-old|o31|old adm31, - rmul@, smso=\EG4, smul@, use=adm31, -# LSI ADM-36 from Col. George L. Sicherman via BRL -adm36|LSI ADM36, - OTbs, OTpt, - OTkn#4, - if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l, - use=vt100, -# (adm42: removed obsolete ":ma=^K^P:" -- esr) -adm42|lsi adm42, - OTbs, am, - cols#80, lines#24, - bel=^G, cbt=\EI, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I, - il1=\EE$<270>, ind=^J, invis@, ip=$<6*>, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, khome=^^, pad=\177, rmir=\Er, rmul@, - smir=\Eq, smul@, use=adm+sgr, -# The following termcap for the Lear Siegler ADM-42 leaves the -# "system line" at the bottom of the screen blank (for those who -# find it distracting otherwise) -adm42-ns|lsi adm-42 with no system line, - cbt=\EI\EF \011, clear=\E;\EF \011, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011, - dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011, - el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011, - smir=\Eq\EF \011, use=adm42, -# ADM 1178 terminal -- rather like an ADM-42. Manual is dated March 1 1985. -# The insert mode of this terminal is commented out because it's broken for our -# purposes in that it will shift the position of every character on the page, -# not just the cursor line! -# From: Michael Driscoll 10 July 1996 -adm1178|1178|lsi adm1178, - am, - cols#80, lines#24, xmc#1, - bel=^G, bold=\E(, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, - home=^^, ht=^I, il1=\EE, ind=^J, ip=$<6*/>, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, pad=\177, rev=\EG4, rmso=\EG0, rmul=\EG0, - sgr0=\E), smso=\EG4, smul=\EG1, - -#### Prime -# -# Yes, Prime made terminals. These entries were posted by Kevin J. Cummings -# on 14 Dec 1992 and lightly edited by esr. -# Prime merged with ComputerVision in the late 1980s; you can reach them at: -# -# ComputerVision Services -# 500 Old Connecticut Path -# Framingham, Mass. -# - -# Standout mode is dim reverse-video. -pt100|pt200|wren|fenix|prime pt100/pt200, - am, bw, mir, msgr, - cols#80, it#8, lines#24, - cbt=\E[Z, clear=\E?, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA, - cuu1=\EM, 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=^J, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=^M^J, - rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, - smcup=\E[>1l\E[>2l\E[>16l\E[4l\E[>9l\E[20l\E[>3l\E[>7h\E[>12l\E[1Q, - smir=\E[4h, smkx=\E[>13h, smso=\E[2;7m, smul=\E[4m, -pt100w|pt200w|wrenw|fenixw|prime pt100/pt200 in 132-column mode, - cols#132, - cup=\E[%i%p1%d;%p2%dH, use=pt100, -pt250|Prime PT250, - rmso@, smso@, use=pt100, -pt250w|Prime PT250 in 132-column mode, - rmso@, smso@, use=pt100w, - -#### Qume (qvt) -# -# Qume, Inc. -# 3475-A North 1st Street -# San Jose CA 95134 -# Vox: (800)-457-4447 -# Fax: (408)-473-1510 -# Net: josed@techsupp.wyse.com (Jose D'Oliveira) -# -# Qume was bought by Wyse, but still (as of early 1995) has its own support -# group and production division. -# -# Discontinued Qume models: -# -# The qvt101 and qvt102 listed here are long obsolete; so is the qvt101+ -# built to replace them, and a qvt119+ which was a 101+ with available wide -# mode (132 columns). There was a qvt103 which added vt100/vt131 emulations -# and an ANSI-compatible qvt203 that replaced it. Qume started producing -# ANSI-compatible terminals with the qvt323 and qvt61. -# -# Current Qume models (as of February 1995): -# -# All current Qume terminals have ANSI-compatible operation modes. -# Qume is still producing the qvt62, which features emulations for other -# popular lines such as ADDS, and dual-host capabilities. The qvt82 is -# designed for use as a SCO ANSI terminal. The qvt70 is a color terminal -# with many emulations including Wyse370, Wyse 325, etc. Their newest -# model is the qvt520, which is vt420-compatible. -# -# There are some ancient printing Qume terminals under `Daisy Wheel Printers' -# -# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its -# setup mode. Shift-s should be a configuration save to NVRAM. - -qvt101|qvt108|qume qvt 101 and QVT 108, - xmc#1, use=qvt101+, - -# This used to have but no or . The BSD termcap -# file had . I've done the safe thing and yanked -# both. The is from BSD, which also claimed bold=\E( and dim=\E). -# What seems to be going on here is that this entry was designed so that -# the normal highlight is bold and standout is dim plus something else -# (reverse-video maybe? But then, are there two sequences?) -qvt101+|qvt101p|qume qvt 101 PLUS product, - am, bw, hs, ul, - cols#80, lines#24, xmc#0, - bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\EY, el=\ET, - flash=\Eb$<200>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE, ind=^J, invis@, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdl1=\ER, ked=\EY, kel=\ET, - kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, - kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, - khome=^^, kich1=\EQ, kil1=\EE, mc4=\EA, mc5=\E@, rmso=\E(, - smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, -qvt102|qume qvt 102, - cnorm=\E., use=qvt101, -# (qvt103: added / based on init string -- esr) -qvt103|qume qvt 103, - am, xenl, xon, - cols#80, it#8, lines#24, vt#3, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[2J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, - hts=\EH, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, rc=\E8, - 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, sc=\E7, - 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, -qvt103-w|qume qvt103 132 cols, - cols#132, lines#24, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103, -qvt119+|qvt119p|qvt119|qume qvt 119 and 119PLUS terminals, - am, hs, mir, msgr, - cols#80, lines#24, xmc#0, - bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, - el=\Et, flash=\En0$<200>\En1, fsl=^M, home=^^, ht=^I, - hts=\E1, il1=\EE, ind=^J, is2=\EDF\EC\EG0\Er\E(\E%EX, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8, - tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, -qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines, - lines#25, use=qvt119+, -qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode, - cols#132, - is2=\EDF\EC\EG0\Er\E(\E%\EX\En4, use=qvt119+, -qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25, - lines#25, use=qvt119+, -qvt203|qvt203+|qume qvt 203 Plus, - dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, - ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~, - kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, - kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103, -qvt203-w|qvt203-w-am|qume qvt 203 PLUS in 132 cols (w/advanced video), - cols#132, lines#24, - rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203, -# -# Since a command is present for enabling 25 data lines, -# a specific terminfo entry may be generated for the 203. -# If one is desired for the QVT 119 PLUS then 25 lines must -# be selected in the status line (setup line 9). -# -qvt203-25|QVT 203 PLUS with 25 by 80 column mode, - cols#80, lines#25, - is2=\E[=40h\E[?3l, use=qvt203, -qvt203-25-w|QVT 203 PLUS with 25 by 132 columns, - cols#132, lines#25, - rs2=\E[?3h\E[=40h, use=qvt203, - -#### Televideo (tvi) -# -# TeleVideo -# 550 East Brokaw Road -# PO Box 49048 95161 -# San Jose CA 95112 -# Vox: (408)-954-8333 -# Fax: (408)-954-0623 -# -# -# These require incredible amounts of padding. -# -# All of these terminals (912 to 970 and the tvipt) are discontinued. Newer -# Televideo terminals are ANSI and PC-ANSI compatible. - -tvi803|televideo 803, - clear=\E*$<10>, use=tvi950, - -# Vanilla tvi910 -- W. Gish 10/29/86 -# Switch settings are: -# -# S1 1 2 3 4 -# D D D D 9600 -# D D D U 50 -# D D U D 75 -# D D U U 110 -# D U D D 135 -# D U D U 150 -# D U U D 300 -# D U U U 600 -# U D D D 1200 -# U D D U 1800 -# U D U D 2400 -# U D U U 3600 -# U U D D 4800 -# U U D U 7200 -# U U U D 9600 -# U U U U 19200 -# -# S1 5 6 7 8 -# U D X D 7N1 (data bits, parity, stop bits) (X means ignored) -# U D X U 7N2 -# U U D D 7O1 -# U U D U 7O2 -# U U U D 7E1 -# U U U U 7E2 -# D D X D 8N1 -# D D X U 8N2 -# D U D D 8O1 -# D U U U 8E2 -# -# S1 9 Autowrap -# U on -# D off -# -# S1 10 CR/LF -# U do CR/LF when CR received -# D do CR when CR received -# -# S2 1 Mode -# U block -# D conversational -# -# S2 2 Duplex -# U half -# D full -# -# S2 3 Hertz -# U 50 -# D 60 -# -# S2 4 Edit mode -# U local -# D duplex -# -# S2 5 Cursor type -# U underline -# D block -# -# S2 6 Cursor down key -# U send ^J -# D send ^V -# -# S2 7 Screen colour -# U green on black -# D black on green -# -# S2 8 DSR status (pin 6) -# U disconnected -# D connected -# -# S2 9 DCD status (pin 8) -# U disconnected -# D duplex -# -# S2 10 DTR status (pin 20) -# U disconnected -# D duplex -# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added , , , -# , , , , from SCO entry -- esr) -tvi910|televideo model 910, - OTbs, am, msgr, - cols#80, it#8, lines#24, xmc#1, - bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET, - home=\E=\001\001, hpa=\E]%p1%{32}%+%c, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, ind=^J, invis@, kbs=^H, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kf0=^AI\r, kf1=^A@\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - vpa=\E[%p1%{32}%+%c, use=adm+sgr, -# From: Alan R. Rogers -# as subsequently hacked over by someone at SCO -# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr) -# -# Here are the 910+'s DIP switches (U = up, D = down, X = don't care): -# -# S1 1 2 3 4: -# D D D D 9600 D D D U 50 D D U D 75 D D U U 110 -# D U D D 135 D U D U 150 D U U D 300 D U U U 600 -# U D D D 1200 U D D U 1800 U D U D 2400 U D U U 3600 -# U U D D 4800 U U D U 7200 U U U D 9600 U U U U 19200 -# -# S1 5 6 7 8: -# U D X D 7N1 U D X U 7N2 U U D D 7O1 U U D U 7O2 -# U U U D 7E1 U U U U 7E2 D D X D 8N1 D D X U 8N2 -# D U D D 8O1 D U U U 8E2 -# -# S1 9 Autowrap (U = on, D = off) -# S1 10 CR/LF (U = CR/LF on CR received, D = CR on CR received) -# S2 1 Mode (U = block, D = conversational) -# S2 2 Duplex (U = half, D = full) -# S2 3 Hertz (U = 50, D = 60) -# S2 4 Edit mode (U = local, D = duplex) -# S2 5 Cursor type (U = underline, D = block) -# S2 6 Cursor down key (U = send ^J, D = send ^V) -# S2 7 Screen colour (U = green on black, D = black on green) -# S2 8 DSR status (pin 6) (U = disconnected, D = connected) -# S2 9 DCD status (pin 8) (U = disconnected, D = connected) -# S2 10 DTR status (pin 20) (U = disconnected, D = connected) -# -tvi910+|televideo 910+, - dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>, - kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, - kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, - ll=\E=7\s, use=tvi910, - -# (tvi912: removed obsolete ":ma=^K^P^L :", added and -# from BRL entry -- esr) -tvi912|tvi914|tvi920|old televideo 912/914/920, - OTbs, OTpt, am, msgr, - cols#80, it#8, lines#24, xmc#1, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER$<33*>, ed=\Ey, el=\ET, flash=\Eb$<50/>\Ed, home=^^, - ht=^I, hts=\E1, ich1=\EQ, if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, - il1=\EE$<33*>, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, - kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, - kf9=^AH\r, khome=^^, rmso=\Ek, rmul=\Em, smso=\Ej, smul=\El, - tbc=\E3, -# We got some new tvi912c terminals that act really weird on the regular -# termcap, so one of our gurus worked this up. Seems that cursor -# addressing is broken. -tvi912cc|tvi912 at cowell college, - cup@, use=tvi912c, - -# tvi{912,920}[bc] - TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C -# From: Benjamin C. W. Sittler -# -# Someone has put a scanned copy of the manual online at: -# http://vt100.net/televideo/912b-om/ -# -# These terminals were produced ca. 1979, and had a 12" monochrome -# screen, supported 75-9600 baud (no handshaking), monochrome, 7-bit -# ASCII, and were generally similar to adm3a but with attributes -# (including some with magic cookies), fancy half-duplex mode, and -# different bugs. -# -# Some operations reqire truly incredible amounts of padding. The -# insert_line () and delete_line () operations in particular -# are so slow as to be nearly unusable. -# -# There may or may not have been a separate, earlier series of 912/920 -# terminals (without the "B" and "C" suffix); I have never seen one, -# and the manual only describes the "B" and "C" series. The 912 and 920 -# are quite distinct from the 914 and 924, which were much nicer non- -# magic-cookie terminals similar to the 950. -# -# This is a new description for the following TeleVideo terminals, -# distinguished chiefly by their keyboards: -# -# TVI-912B - very odd layout, no function keys (84 keys) -# TVI-920B - typewriter layout, no function keys (103 keys) -# TVI-912C - very odd layout, function keys F1-F11 (82 keys) -# TVI-920C - typewriter layout, function keys F1-F11 (101 keys) -# -# To choose a setting for the TERM variable, start with the model: -# -# Model || base name -# ----------||----------- -# TVI-912B || tvi912b -# TVI-912C || tvi912c -# TVI-920B || tvi920b -# TVI-920C || tvi920c -# -# Then add a suffix from the following table describing installed options -# and how you'd like to use the terminal: -# -# Use Video | Second | Visual | Magic | Page || feature -# Attributes | Page | Bell | Cookies | Print || suffix -# ------------|--------|--------|---------|-------||--------- -# No | No | N/A | N/A | No || -unk -# No | No | N/A | N/A | Yes || -p -# No | Yes | No | N/A | No || -2p-unk -# No | Yes | No | N/A | Yes || -2p-p -# No | Yes | Yes | N/A | No || -vb-unk -# No | Yes | Yes | N/A | Yes || -vb-p -# Yes | No | N/A | No | N/A || -# Yes | No | N/A | Yes | N/A || -mc -# Yes | Yes | No | No | N/A || -2p -# Yes | Yes | No | Yes | N/A || -2p-mc -# Yes | Yes | Yes | No | N/A || -vb -# Yes | Yes | Yes | Yes | N/A || -vb-mc -# -# So e.g. a model 920 C with second page memory option, visual bell -# and no magic cookies would be tvi920c-vb; a model 912 B without the -# second page memory option and using magic cookies would be -# tvi912b-mc -# -# PADDING -# -# At 9600 baud, the terminal is prone to overflow its input buffer -# during complex operations (insert/delete -# character/line/screen/page), and it does not signal this over the -# RS232 cable. The typical symptom of an overrun is that the terminal -# starts beeping, and output becomes garbled. -# -# The padding delays in this terminfo were derived using tack(1) -# running on a Linux box connected to a TVI-920C with a later-model -# (A49C1-style) ROM running at 9600 baud, so your mileage may -# vary. The numbers below seem to give the terminal enough time so -# that it doesn't overflow its input buffer and start losing -# characters. -# -# KEYS -# -# If you want to use the FUNCT key on a tvi912[bc], use the -# corresponding tvi920[bc] terminfo with FUNCT + ... equivalents from -# the following table (these also work on the 920 series): -# -# Unshifted Function Keys: -# -# Key | capname|| Equivalent -# -----|--------||------------ -# F1 | || FUNCT + @ -# F2 | || FUNCT + A -# F3 | || FUNCT + B -# F4 | || FUNCT + C -# F5 | || FUNCT + D -# F6 | || FUNCT + E -# F7 | || FUNCT + F -# F8 | || FUNCT + G -# F9 | || FUNCT + H -# F10 | || FUNCT + I -# F11 | || FUNCT + J -# -# Shifted Function Keys: -# -# SHIFT + Key | capname|| Equivalent -# -------------|--------||------------ -# SHIFT + F1 | || FUNCT + ` -# SHIFT + F2 | || FUNCT + a -# SHIFT + F3 | || FUNCT + b -# SHIFT + F4 | || FUNCT + c -# SHIFT + F5 | || FUNCT + d -# SHIFT + F6 | || FUNCT + e -# SHIFT + F7 | || FUNCT + f -# SHIFT + F8 | || FUNCT + g -# SHIFT + F9 | || FUNCT + h -# SHIFT + F10 | || FUNCT + i -# SHIFT + F11 | || FUNCT + j -# -# PORTS AND SWITCH SETTINGS -# -# Here are the switch settings for the TVI-912B/TVI-920B and -# TVI-912C/TVI-920C: -# -# S1 (Line), and S3 (Printer) baud rates -- put one, and only one, switch down: -# 2: 9600 3: 4800 4: 2400 5: 1200 -# 6: 600 7: 300 8: 150 9: 75 -# 10: 110 -# -# S2 UART/Terminal options: -# Up Down -# 1: Not used Not allowed -# 2: Alternate character set Standard character set -# 3: Full duplex Half duplex -# 4: 50 Hz refresh 60 Hz refresh -# 5: No parity Send parity -# 6: 2 stop bits 1 stop bit -# 7: 8 data bits 7 data bits -# 8: Not used Not allowed on Rev E or lower -# 9: Even parity Odd parity -# 10: Steady cursor Blinking cursor -# (On Rev E or lower, use W25 instead of switch 10.) -# -# S5 UART/Terminal options: -# Open Closed -# 1: P3-6 Not connected DSR received on P3-6 -# 2: P3-8 Not connected DCD received on P3-8 -# -# 3 Open, 4 Open: P3-20 Not connected -# 3 Open, 4 Closed: DTR on when terminal is on -# 3 Closed, 4 Open: DTR is connected to RTS -# 3 Closed, 4 Closed: Not allowed -# -# 5 Closed: HDX printer (hardware control) Rev. K with extension port off, -# all data transmitted out of the modem port (P3) will also be -# transmitted out of the printer port (P4). -# -# 6 Open, 7 Open: Not allowed -# 6 Open, 7 Closed: 20ma current loop input -# 6 Closed, 7 Open: RS232 input -# 6 Closed, 7 Closed: Not allowed -# -# Jumper options: -# If the jumper is installed, the effect will occur (the next time the terminal -# is switched on). -# -# S4/W31: Enables automatic LF upon receipt of CR from -# remote or keyboard. -# S4/W32: Enables transmission of EOT at the end of Send. If not -# installed, a carriage return is sent. -# S4/W33: Disables automatic carriage return in column 80. -# S4/W34: Selects Page Print Mode as initial condition. If not -# installed, Extension Mode is selected. -# -# NON-STANDARD CAPABILITIES -# -# Sending or returns a cursor position report in the format -# YX\r, where Y and X are as in . This format is described in -# and , but it's not clear how one should write an -# appropriate scanf string, since we need to subtract %' ' from the -# character after reading it. The capability is used by tack(1) -# to synchronize during padding tests, and seems to work for that -# purpose. -# -# This description also includes the obsolete termcap capabilities -# has_hardware_tabs () and backspaces_with_bs (). -# -# FEATURES NOT YET DESCRIBED IN THIS TERMINFO -# -# The FUNCT modifier actually works with every normal key by sending -# ^AX\r, where X is the sequence normally sent by that key. This is a -# sort of meta key not currently describable in terminfo. -# -# There are quite a few other keys (especially on the 920 models,) but -# they are for the most part only useful in block mode. -# -# These terminals have lots of forms manipulation features, mainly -# useful in block mode, including "clear X to nulls" (vs. "clear X to -# spaces"; nulls are sentinels for "send X" operations); "send X" -# operations for uploading all or part of the screen; and block-mode -# editing keys (they don't send escape sequences, but manipulate video -# memory directly). Block mode is used for local editing, and protect -# mode (in conjunction with the "write protect" attribute, -# a.k.a. half-intensity outside of protect mode) is used to control -# which parts of the screen are edited/sent/printed (by ). -# -# There are at least two major families of ROM, "early" and -# A49B1/A49C1; the major difference seems to be that the latter ROMs -# support a few extra escape sequences for manipulating the off-screen -# memory page, and for sending whole pages back to the host (mainly -# useful in block mode.) The descriptions in this file don't use any -# of those sequences: set cursor position including page (\E-PYX, -# where P is \s for page 0 and ! for page 1 [actually only the LSB of -# P is taken into account, so e.g. 0 and 1 work too,] and Y and X are -# as in ); read cursor position (\E/), which is analogous to -# and returns PYX\r, where P is \s for page 0 or ! for page 1, and YX -# are as in , and some "send page" features mainly useful for -# forms manipulation. -# -# The keyboard enable (\E") and disable (\E#) sequences are unused, -# except that a terminal reset () enables the keyboard. -# -# Auto-flip mode (\Ev) is likely faster than the scrolling mode (\Ew) -# enabled in , but auto-flip is very jarring so we don't use it. -# -# BUGS -# -# At least up to the A49B1 and A49C1 ROMs, there are no \Eb and \Ed -# sequences (I infer that in some TeleVideo terminal they may invert -# and uninvert the display) so the sequence given here is a -# cheesy page-flip instead. -# -# The back_tab () sequence (\EI) doesn't work according to -# tack(1), so it is not included in the descriptions below. -# -# It's not clear whether auto_left_margin () flag should be set -# for these terminals; tack says yes, so it is set here, but this -# differs from other descriptions I've seen. -# -# Extension print mode () echoes all characters to the printer -# port [in addition to displaying them] except for the page print mode -# sequence (); this is a slight violation of the terminfo -# definition for but I don't expect it to cause problems. We -# reset to page print mode in since it may have been enabled -# accidentally. -# -# The descriptions with plus signs (+) are building blocks. - -tvi912b-unk|tvi912c-unk|TeleVideo TVI-912B or TVI-912C (no attributes), - OTbs, OTpt, am, bw, - cols#80, it#8, lines#24, - bel=^G, clear=\032$<50>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%' '%+%c%p2%' '%+%c, cuu1=^K, dch1=\EW$<30>, - dl1=\ER$<1*>$<100>, ed=\Ey$<2*>$<10>, el=\ET$<15>, - home=^^, ht=^I, hts=\E1, ich1=\EQ$<30>, - if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EE$<1*>$<100>, - ind=\n$<10>, is2=\Ew\EA\E'\E"\E(, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, kdch1=\177, kent=^M, khome=^^, mc4=\EA, - mc5=\E@, rs1=\Ek\010\Em\010\Eq\032, tbc=\E3, u6=%c%c\r, - u7=\E?, u8=%c%c\r, u9=\E?, - -# This isn't included in the basic capabilities because it is -# typically unusable in combination with the full range of video -# attributes, since the magic cookie attributes turn into ASCII -# control characters, and the half-intensity ("protected") attribute -# converts all affected characters to spaces. - -tvi912b+printer|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C page print support, - mc0=\EP, - -# This uses half-intensity mode () for standout (), and -# exposes no other attributes (half-intensity is the only attribute -# that does not generate a magic cookie.) - -tvi912b+dim|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C half-intensity attribute support, - msgr, - dim=\E), rmso=\E(, sgr=\E%?%p1%p5%|%t)%e(%;, sgr0=\E(, - smso=\E), - -# Full magic-cookie attribute support, with half-intensity reverse -# video for standout. Note that we add a space in the sequence -# to give a consistent magic-cookie count. Also note that uses -# backspacing (in the TVI-supported order) to apply all requested -# attributes with only a single magic cookie. - -tvi912b+mc|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C full magic-cookie attribute support, - xmc#1, - blink=\E\^, dim=\E)\s, invis=\E_, rev=\Ej, rmso=\E(\Ek, - rmul=\Em, - sgr=\E%?%p1%p5%|%t)%e(%; \010\E%?%p1%p3%|%tj%ek%;\010\E%?%p2%tl%em%;\010\E%?%p7%t_%e%?%p4%t\^%eq%;%;, - sgr0=\E(\Ek\010\Em\010\Eq, smso=\E)\Ej, smul=\El, - -# This uses the second page memory option to save & restore screen -# contents. If your terminal is missing the option, this description -# should still work, but that has not been tested. - -tvi912b+2p|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option support, - flash=\EK$<100>\EK, rmcup=\032$<50>\EK\E=7\s, - smcup=\EK\032$<50>\E(\Ek\010\Em\010\Eq\032$<50>, - -# This simulates flashing by briefly toggling to the other page -# (kludge!) - -tvi912b+vb|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option "visible bell" support, - bel=\EK$<100>\EK, use=tvi912b+2p, - -# Function keys ( .. are shifted .. ) - -tvi920b+fn|TeleVideo TVI-920B and TVI-920C function key support, - kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^A`\r, kf13=^Aa\r, - kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, kf17=^Ae\r, kf18=^Af\r, - kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, kf21=^Ai\r, kf22=^Aj\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, - -# Combinations of the basic building blocks - -tvi912b-2p-unk|tvi912c-2p-unk|tvi912b-unk-2p|tvi912c-unk-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes), - use=tvi912b+2p, use=tvi912b-unk, - -tvi912b-vb-unk|tvi912c-vb-unk|tvi912b-unk-vb|tvi912c-unk-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes), - use=tvi912b+vb, use=tvi912b-unk, - -tvi912b-p|tvi912c-p|TeleVideo TVI-912B or TVI-912C (no attributes; page print), - use=tvi912b+printer, use=tvi912b-unk, - -tvi912b-2p-p|tvi912c-2p-p|tvi912b-p-2p|tvi912c-p-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes; page print), - use=tvi912b+2p, use=tvi912b+printer, use=tvi912b-unk, - -tvi912b-vb-p|tvi912c-vb-p|tvi912b-p-vb|tvi912c-p-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes; page print), - use=tvi912b+vb, use=tvi912b+printer, use=tvi912b-unk, - -tvi912b-2p|tvi912c-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; half-intensity attribute), - use=tvi912b+2p, use=tvi912b+dim, use=tvi912b-unk, - -tvi912b-2p-mc|tvi912c-2p-mc|tvi912b-mc-2p|tvi912c-mc-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; magic cookies), - use=tvi912b+2p, use=tvi912b+mc, use=tvi912b-unk, - -tvi912b-vb|tvi912c-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; half-intensity attribute), - use=tvi912b+vb, use=tvi912b+dim, use=tvi912b-unk, - -tvi912b-vb-mc|tvi912c-vb-mc|tvi912b-mc-vb|tvi912c-mc-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; magic cookies), - use=tvi912b+vb, use=tvi912b+mc, use=tvi912b-unk, - -tvi912b|tvi912c|TeleVideo TVI-912B or TVI-912C (half-intensity attribute), - use=tvi912b+dim, use=tvi912b-unk, - -tvi912b-mc|tvi912c-mc|TeleVideo TVI-912B or TVI-912C (magic cookies), - use=tvi912b+mc, use=tvi912b-unk, - -tvi920b-unk|tvi920c-unk|TeleVideo TVI-920B or TVI-920C (no attributes), - use=tvi920b+fn, use=tvi912b-unk, - -tvi920b-2p-unk|tvi920c-2p-unk|tvi920b-unk-2p|tvi920c-unk-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b-unk, - -tvi920b-vb-unk|tvi920c-vb-unk|tvi920b-unk-vb|tvi920c-unk-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b-unk, - -tvi920b-p|tvi920c-p|TeleVideo TVI-920B or TVI-920C (no attributes; page print), - use=tvi920b+fn, use=tvi912b+printer, use=tvi912b-unk, - -tvi920b-2p-p|tvi920c-2p-p|tvi920b-p-2p|tvi920c-p-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes; page print), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+printer, - use=tvi912b-unk, - -tvi920b-vb-p|tvi920c-vb-p|tvi920b-p-vb|tvi920c-p-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes; page print), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+printer, - use=tvi912b-unk, - -tvi920b-2p|tvi920c-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; half-intensity attribute), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+dim, - use=tvi912b-unk, - -tvi920b-2p-mc|tvi920c-2p-mc|tvi920b-mc-2p|tvi920c-mc-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; magic cookies), - use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+mc, - use=tvi912b-unk, - -tvi920b-vb|tvi920c-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; half-intensity attribute), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+dim, - use=tvi912b-unk, - -tvi920b-vb-mc|tvi920c-vb-mc|tvi920b-mc-vb|tvi920c-mc-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; magic cookies), - use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+mc, - use=tvi912b-unk, - -tvi920b|tvi920c|TeleVideo TVI-920B or TVI-920C (half-intensity attribute), - use=tvi920b+fn, use=tvi912b+dim, use=tvi912b-unk, - -tvi920b-mc|tvi920c-mc|TeleVideo TVI-920B or TVI-920C (magic cookies), - use=tvi920b+fn, use=tvi912b+mc, use=tvi912b-unk, - -# Televideo 921 and variants -# From: Tim Theisen 22 Sept 1995 -# (tvi921: removed :ko=bt: before translation, I see no backtab cap; -# also added empty to suppress tic warning -- esr) -tvi921|televideo model 921 with sysline same as page & real vi function, - OTbs, OTpt, am, hs, xenl, xhp, - cols#80, lines#24, xmc#0, - acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K, - cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY, - el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ, - if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EE, ind=^J, invis@, - is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H, - kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>, - ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=^M^J, rmacs=\E%%, - rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr, -# without the beeper -# (tvi92B: removed :ko=bt: before translation, I see no backtab cap; -# also added empty to suppress tic warning -- esr) -tvi92B|televideo model 921 with sysline same as page & real vi function & no beeper, - am, hs, xenl, xhp, - cols#80, lines#24, xmc#0, - acsc=, clear=^Z, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K, - cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY, - el=\ET, flash=\Eb$<200/>\Ed, fsl=\Eg, home=^^, ht=^I, - ich1=\EQ, if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EE, ind=^J, - invis@, is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, - kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, - kdl1=\ER$<1*/>, ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, - nel=^M^J, rmacs=\E%%, smacs=\E$, tsl=\Ef\EG0, use=adm+sgr, -# (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr) -tvi92D|tvi92B with DTR instead of XON/XOFF & better padding, - dl1=\ER$<2*/>, il1=\EE$<2*/>, - is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>, - kil1=\EE$<2*/>, use=tvi92B, - -# (tvi924: This used to have , . I put the new strings -# in from a BSD termcap file because it looks like they do something the -# old ones skip -- esr) -tvi924|televideo tvi924, - am, bw, hs, in, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, xmc#0, - bel=^G, blink=\EG2, cbt=\EI, civis=\E.0, clear=\E*0, - cnorm=\E.3, cr=^M, csr=\E_%p1%{32}%+%c%p2%{32}%+%c, - cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\E.1, - dch1=\EW, dl1=\ER, dsl=\Es0\Ef\031, ed=\Ey, el=\Et, - flash=\Eb$<200>\Ed, fsl=\031\Es1, home=^^, ht=^I, hts=\E1, - ich1=\EQ, if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EE, ind=^J, - invis@, is1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0, - kbs=^H, kclr=\E*0, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, - kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A@\r, kf1=^AA\r, - kf10=^AJ\r, kf11=^AK\r, kf12=^AL\r, kf13=^AM\r, kf14=^AN\r, - kf15=^AO\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, kf5=^AE\r, - kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^, - kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4, - lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, - pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef, - use=adm+sgr, - -# TVI925 DIP switches. In each of these, D = Down and U = Up, -# -# Here are the settings for the external (baud) switches (S1): -# -# Position Baud -# 7 8 9 10 [Printer] -# 1 2 3 4 [Main RS232] -# ----------------------------------------------------- -# D D D D 9600 -# D D D U 50 -# D D U D 75 -# D D U U 110 -# D U D D 135 -# D U D U 150 -# D U U D 300 -# D U U U 600 -# U D D D 1200 -# U D D U 1800 -# U D U D 2400 -# U D U U 3600 -# U U D D 4800 -# U U D U 7200 -# U U U D 9600 -# U U U U 19200 -# -# -# Settings for word length and stop-bits (S1) -# -# Position Description -# 5 6 -# --------------------------- -# U - 7-bit word -# D - 8-bit word -# - U 2 stop bits -# - D 1 stop bit -# -# -# S2 (external) settings -# -# Position Up Dn Description -# -------------------------------------------- -# 1 X Local edit -# X Duplex edit (transmit editing keys) -# -------------------------------------------- -# 2 X 912/920 emulation -# X 925 -# -------------------------------------------- -# 3 X -# 4 X No parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Odd parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Even parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Mark parity -# 5 X -# -------------------------------------------- -# 3 X -# 4 X Space parity -# 5 X -# -------------------------------------------- -# 6 X White on black display -# X Black on white display -# -------------------------------------------- -# 7 X Half Duplex -# 8 X -# -------------------------------------------- -# 7 X Full Duplex -# 8 X -# -------------------------------------------- -# 7 X Block mode -# 8 X -# -------------------------------------------- -# 9 X 50 Hz -# X 60 Hz -# -------------------------------------------- -# 10 X CR/LF (Auto LF) -# X CR only -# -# S3 (internal switch) settings: -# -# Position Up Dn Description -# -------------------------------------------- -# 1 X Keyclick off -# X Keyclick on -# -------------------------------------------- -# 2 X English -# 3 X -# -------------------------------------------- -# 2 X German -# 3 X -# -------------------------------------------- -# 2 X French -# 3 X -# -------------------------------------------- -# 2 X Spanish -# 3 X -# -------------------------------------------- -# 4 X Blinking block cursor -# 5 X -# -------------------------------------------- -# 4 X Blinking underline cursor -# 5 X -# -------------------------------------------- -# 4 X Steady block cursor -# 5 X -# -------------------------------------------- -# 4 X Steady underline cursor -# 5 X -# -------------------------------------------- -# 6 X Screen blanking timer (ON) -# X Screen blanking timer (OFF) -# -------------------------------------------- -# 7 X Page attributes -# X Line attributes -# -------------------------------------------- -# 8 X DCD disconnected -# X DCD connected -# -------------------------------------------- -# 9 X DSR disconnected -# X DSR connected -# -------------------------------------------- -# 10 X DTR Disconnected -# X DTR connected -# -------------------------------------------- -# -# (tvi925: BSD has . I got and from there -- esr) -tvi925|televideo 925, - OTbs, am, bw, hs, ul, - cols#80, lines#24, xmc#1, - bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=^M, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eh, ed=\EY, el=\ET, - flash=\Eb$<200>\Ed, fsl=^M\Eg, home=^^, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE, ind=^J, invis@, is2=\El\E", kbs=^H, kclr=^Z, - kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, - ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, - kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, - kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3, - tsl=\Eh\Ef, use=adm+sgr, -# TeleVideo 925 from Mitch Bradley via BRL -# to avoid "magic cookie" standout glitch: -tvi925-hi|TeleVideo Model 925 with half intensity standout mode, - xmc@, - kbs=^H, kcub1=^H, kcud1=^J, rmso=\E(, smso=\E), use=tvi925, - -# From: Todd Litwin 28 May 1993 -# Originally Tim Curry, Univ. of Central Fla., 5/21/82 -# for additional capabilities, -# The following tvi descriptions from B:pjphar and virus!mike -# is for all 950s. It sets the following attributes: -# full duplex (\EDF) write protect off (\E() -# conversation mode (\EC) graphics mode off (\E%) -# white on black (\Ed) auto page flip off (\Ew) -# turn off status line (\Eg) clear status line (\Ef\r) -# normal video (\E0) monitor mode off (\EX or \Eu) -# edit mode (\Er) load blank char to space (\Ee\040) -# line edit mode (\EO) enable buffer control (^O) -# protect mode off (\E\047) duplex edit keys (\El) -# program unshifted send key to send line all (\E016) -# program shifted send key to send line unprotected (\E004) -# set the following to nulls: -# field delimiter (\Ex0\200\200) -# line delimiter (\Ex1\200\200) -# start-protected field delimiter (\Ex2\200\200) -# end-protected field delimiter (\Ex3\200\200) -# set end of text delimiter to carriage return/null (\Ex4\r\200) -# -# TVI 950 Switch Setting Reference Charts -# -# TABLE 1: -# -# S1 1 2 3 4 5 6 7 8 9 10 -# +-----------------------+-----+-----+-----------------------+ -# | Computer Baud Rate |Data |Stop | Printer Baud Rate | -# | |Bits |Bits | | -# +------+-----------------------+-----+-----+-----------------------+ -# | Up | See | 7 | 2 | See | -# +------+-----------------------+-----+-----+-----------------------+ -# | Down | TABLE 2 | 8 | 1 | TABLE 2 | -# +------+-----------------------+-----+-----+-----------------------+ -# -# -# S2 1 2 3 4 5 6 7 8 9 10 -# +-----+-----+-----------------+-----+-----------+-----+-----+ -# |Edit |Cursr| Parity |Video|Transmiss'n| Hz |Click| -# +------+-----+-----+-----------------+-----+-----------+-----+-----+ -# | Up | Dplx|Blink| See |GonBk| See | 60 | Off | -# +------+-----+-----+-----------------+-----+-----------+-----+-----+ -# | Down |Local|St'dy| TABLE 3 |BkonG| CHART | 50 | On | -# +------+-----+-----+-----------------+-----+-----------+-----+-----+ -# -# TABLE 2: -# -# +-----------+-----+-----+-----+-----+-----------+ -# | Display | 1 | 2 | 3 | 4 | Baud | -# +-----------+-----+-----+-----+-----+ | -# | Printer | 7 | 8 | 9 | 10 | Rate | -# +-----------+-----+-----+-----+-----+-----------+ -# | D | D | D | D | 9600 | -# | U | D | D | D | 50 | -# | D | U | D | D | 75 | -# | U | U | D | D | 110 | -# | D | D | U | D | 135 | -# | U | D | U | D | 150 | -# | D | U | U | D | 300 | -# | U | U | U | D | 600 | -# | D | D | D | U | 1200 | -# | U | D | D | U | 1800 | -# | D | U | D | U | 2400 | -# | U | U | D | U | 3600 | -# | D | D | U | U | 4800 | -# | U | D | U | U | 7200 | -# | D | U | U | U | 9600 | -# | U | U | U | U | 19200 | -# +-----+-----+-----+-----+-----------+ -# -# TABLE 3: -# +-----+-----+-----+-----------+ -# | 3 | 4 | 5 | Parity | -# +-----+-----+-----+-----------+ -# | X | X | D | None | -# | D | D | U | Odd | -# | D | U | U | Even | -# | U | D | U | Mark | -# | U | U | U | Space | -# +-----+-----+-----+-----------+ -# X = don't care -# -# CHART: -# +-----+-----+-----------------+ -# | 7 | 8 | Communication | -# +-----+-----+-----------------+ -# | D | D | Half Duplex | -# | D | U | Full Duplex | -# | U | D | Block | -# | U | U | Local | -# +-----+-----+-----------------+ -# -# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:". -# I also inserted and ; the :ko: string indicated that -# should be present and all tvi native modes use the same string for this. -# Finally, note that BSD has cud1=^V. -- esr) -tvi950|televideo 950, - OTbs, am, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, xmc#1, - acsc=b\011c\014d\re\ni\013, bel=^G, cbt=\EI, clear=\E*, - cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, el=\Et, flash=\Eb$<200/>\Ed, - fsl=^M, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=^J, - invis@, - is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\Ef\r, - kbs=^H, kcbt=\EI, kclr=\E*, kcub1=^H, kcud1=^V, kcuf1=^L, - kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A0\r, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, ri=\Ej, rmacs=^X, - rmir=\Er, smacs=^U, smir=\Eq, tbc=\E3, tsl=\Eg\Ef, - use=adm+sgr, -# -# is for 950 with two pages adds the following: -# set 48 line page (\E\\2) -# place cursor at page 0, line 24, column 1 (\E-07 ) -# set local (no send) edit keys (\Ek) -# -# two page 950 adds the following: -# when entering ex, set 24 line page (\E\\1) -# when exiting ex, reset 48 line page (\E\\2) -# place cursor at 0,24,1 (\E-07 ) -# set duplex (send) edit keys (\El) when entering vi -# set local (no send) edit keys (\Ek) when exiting vi -# -tvi950-2p|televideo950 w/2 pages, - is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07 \011, - rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, -# -# is for 950 with four pages adds the following: -# set 96 line page (\E\\3) -# place cursor at page 0, line 24, column 1 (\E-07 ) -# -# four page 950 adds the following: -# when entering ex, set 24 line page (\E\\1) -# when exiting ex, reset 96 line page (\E\\3) -# place cursor at 0,24,1 (\E-07 ) -# -tvi950-4p|televideo950 w/4 pages, - is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07 \011, - rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, -# -# for reverse video 950 changes the following: -# set reverse video (\Ed) -# -# set vb accordingly (\Ed ...delay... \Eb) -# -tvi950-rv|televideo950 rev video, - flash=\Ed$<200/>\Eb, - is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\El\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0, - use=tvi950, - -# tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv -tvi950-rv-2p|televideo950 rev video w/2 pages, - flash=\Ed$<200/>\Eb, - is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\2\E-07\s, - rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, - -# tvi950-rv uses the appropriate entries from 950-4p and 950-rv -tvi950-rv-4p|televideo950 rev video w/4 pages, - flash=\Ed$<200/>\Eb, - is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee \017\011\Ek\E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0\E\\3\E-07\s, - rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, - smkx=\El, use=tvi950, -# From: Andreas Stolcke -# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H"; -# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in -# the :rs: string, inserted the implied by the termcap :ko: string. Note -# the :ko: string had :cl: in it, which means that one of the original -# , had to be wrong; set because that's what -# the 950 has. Finally, corrected the string to match the 950 and what -# ko implies -- esr) -# If the BSD termcap file was right, would -# also work. -tvi955|televideo 955, - OTbs, mc5i, msgr@, - it#8, xmc@, - acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2, - civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH, - cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1, - is2=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El, kctab=\E2, khts=\E1, - knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%%, - rmam=\E[=7l, rmxon=^N, - rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee \017\E0P\E6\0\E0p\E4\0\Ef\r, - sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O, - use=tvi950, -tvi955-w|955-w|televideo955 w/132 cols, - cols#132, - is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955, -# use half-intensity as normal mode, full intensity as -tvi955-hb|955-hb|televideo955 half-bright, - bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El, - sgr0=\EG0\E[=5h, use=tvi955, -# From: Humberto Appleton , 880521 UT Austin -# (tvi970: removed ":sg#0:"; removed =\E[m, =\E[m; -# added ////// from BRL. -# According to BRL we could have =\E>, =\E= but I'm not sure what -# it does to the function keys. I deduced /. -# also added empty to suppress tic warning, -- esr) -tvi970|televideo 970, - OTbs, OTpt, am, da, db, mir, msgr, - 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, - is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, 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, -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, - use=tvi970, -tvi970-2p|televideo 970 with using 2 pages of memory, - rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q, - use=tvi970, -# Works with vi and rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 chars -# per line (rather than 40), Esc K chooses the normal character set. Not sure -# padding is needed, but adapted from the tvi920c termcap. The and -# strings are klutzy, but at least use no screen space. -# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:". I wish we knew , -# its absence means =\Ev isn't safe to use. -- esr) -# From: Gene Rochlin 9/19/84. -# The ////, and caps are from BRL, which says: -# F1 and F2 should be programmed as ^A and ^B; required for UNIFY. -tvipt|televideo personal terminal, - OTbs, am, - cols#80, lines#24, - cbt=\EI, clear=^Z, cub1=^H, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>, - ed=\EY, el=\ET, home=^^, if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, - il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, kf0=^A, kf1=^B, khome=^^, mc4=^T, mc5=^R, - rmso=\EF, rmul=\EF, smso=\EG1@A\EH, smul=\EG1B@\EH, -# From: Nathan Peterson , 03 Sep 1996 -tvi9065|televideo 9065, - am, bw, chts, hs, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lh#1, lines#25, lm#0, lw#9, ma#4, nlab#8, vt#0, - wnum#0, wsl#30, - acsc='r0_jhkglfmeniopqksqtmulvownxj, bel=^G, - blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z, - cnorm=\E.3, cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA, - cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp, - dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY, - el=\ET, flash=\Eb$<15>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1, - ich=\E[%p1%d@, if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, - il=\E[%p1%dL, il1=\EE, ind=^J, indn=\E[%p1%dS, invis=\EG1, - ip=$<3>, - is1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er, - is2=\EF2\EG0\E\\L, is3=\E<\E[=4l\E[=8h, kHOM=\E\s\s\s, - kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, - kdch1=\EW, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, ll=\E[25;1H, - mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=^M^J, - pfkey=\E|%p1%{48}%+%c3%p2%s\031, - pfloc=\E|%p1%{48}%+%c2%p2%s\031, - pfx=\E|%p1%{48}%+%c1%p2%s\031, - pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&, - rep=\E[%p2%db%p1%c, rev=\EG4, - rf=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, ri=\Ej, rin=\E[%p1%dT, - rmacs=\E%%, rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H, - rmdc=\0, rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0, - rmxon=^N, rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l, - rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=13.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[=21l\E[=23l\E[=3l\E_40\E_50\En\Ew\Ee \Ex0\0\0\Ex1\0\0\Ex2\0\0\Ex3\0\0\Ex4\0\0\E1, - rs3=\E[=19h\E.3\E9\E0O\0\0\0\0\0\E0o\0\0\0\0\0\E0J\177\0\0\0\0, - sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%;%?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p9%t\E$%e\E%%%;, - sgr0=\EG0, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er, - smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O, - tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, - -#### Visual (vi) -# -# In September 1993, Visual Technology of Westboro, Massachusetts, -# merged with White Pine Software of Nashua, New Hampshire. -# -# White Pine Software may be contacted at +1 603/886-9050. -# Or visit White Pine on the World Wide Web at URL http://www.wpine.com. -# - -# Visual 50 from Beau Shekita, BTL-Whippany -# Recently I hacked together the following termcap for Visual -# Technology's Visual 50 terminal. It's a slight modification of -# the vt52 termcap. -# It's intended to run when the Visual 50 is in vt52 emulation mode -# (I know what you're thinking; if it's emulating a vt52, then why -# another termcap? Well, it turns out that the Visual 50 can handle -# and db(?) among other things, which the vt52 can't) -# The termcap works OK for the most part. The only problem is on -# character inserts. The whole line gets painfully redrawn for each -# character typed. Any suggestions? -# Beau's entry is combined with the vi50 entry from University of Wisconsin. -# Note especially the function. - are really l4-l6 in -# disguise; - are really l1-l3. -vi50|visual 50, - OTbs, OTpt, am, da, db, msgr, - cols#80, it#8, lines#24, - OTnl=^J, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=^M, cub1=^H, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH, - ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV, - kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH, - nel=^M^J, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES, -# this one was BSD & SCO's vi50 -vi50adm|visual 50 in adm3a mode, - am, msgr, - cols#80, it#8, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM, - ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=^J, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, - rmso=\ET, smso=\EU, -# From: Jeff Siegal -vi55|Visual 55, - OTbs, am, mir, msgr, - cols#80, it#8, lines#24, - clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H, - cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, - il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EI, rmir=\Eb, rmso=\ET, - smir=\Ea, smso=\EU, - -# Visual 200 from BRL -# The following switch settings are assumed for normal operation: -# FULL_DUPLEX SCROLL CR -# AUTO_NEW_LINE_ON VISUAL_200_EMULATION_MODE -# Other switches may be set for operator convenience or communication -# requirements. -# Character insertion is kludged in order to get around the "beep" misfeature. -# (This cap is commented out because / is more efficient -- esr) -# Supposedly "4*" delays should be used for , , , , -# and strings, but we seem to get along fine without them. -vi200|visual 200, - OTbs, OTpt, am, mir, msgr, - OTkn#10, cols#80, it#8, lines#24, - acsc=, bel=^G, cbt=\Ez, clear=\Ev, cnorm=\Ec, cr=^M, cub1=^H, - cud1=^J, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, cvvis=\Ed, dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey, - el=\Ex, home=\EH, ht=^I, hts=\E1, il1=\EL, ind=^J, invis=\Ea, - kbs=^H, kclr=\Ev, kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p, - kf1=\E?q, kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, - kf7=\E?w, kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei, - kil1=\EL, krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI, - rmacs=\EG, rmkx=\E>, rmso=\E3, - rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX, sgr0=\E3\Eb, smacs=\EF, - smkx=\E=, smso=\E4, tbc=\Eg, -# The older Visuals didn't come with function keys. This entry uses -# and so that the keypad keys can be used as function keys. -# If your version of vi doesn't support function keys you may want -# to use vi200-f. -vi200-f|visual 200 no function keys, - is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, kf0=\E?p, kf1=\E?q, - kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w, - kf8=\E?x, kf9=\E?y, rmkx=\E>, rmso@, smkx=\E=, smso@, - use=vi200, -vi200-rv|visual 200 reverse video, - cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200, - -# the function keys are programmable but we don't reprogram them to their -# default values with because programming them is very verbose. maybe -# an initialization file should be made for the 300 and they could be stuck -# in it. -# (vi300: added / based on init string -- esr) -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=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - il1=\E[L, ind=^J, - 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, -# some of the vi300s have older firmware that has the command -# sequence for setting editing extent reversed. -vi300-old|visual 300 with old firmware (set edit extent reversed), - is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s, - use=vi300, - -# Visual 500 prototype entry from University of Wisconsin. -# The best place to look for the escape sequences is page A1-1 of the -# Visual 500 manual. The initialization sequence given here may be -# overkill, but it does leave out some of the initializations which can -# be done with the menus in set-up mode. -# The :xp: line below is so that emacs can understand the padding requirements -# of this slow terminal. :xp: is 10 time the padding factor. -# (vi500: removed unknown :xp#4: termcap; -# also added empty to suppress tic warning -- esr) -vi500|visual 500, - am, mir, msgr, - cols#80, it#8, lines#33, - acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=^M, - csr=\E(%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\EB, - cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - dch1=\EO$<3*/>, dl1=\EM$<3*/>, ed=\Ey$<3*/>, - el=\Ex$<16/>, home=\EH, ht=\011$<8/>, il1=\EL\Ex$<3*/>, - ind=^J, - is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - khome=\EH, nel=^M^J, rmacs=^O, rmir=\Ej, rmso=\E^G, - rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D, - -# The visual 550 is a visual 300 with tektronix graphics, -# and with 33 lines. clear screen is modified here to -# also clear the graphics. -vi550|visual 550 ansi x3.64, - lines#33, - clear=\030\E[H\E[2J, use=vi300, - -vi603|visual603|visual 603, - hs, mir, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, - csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, il1=\E[L, - 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, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=\EP2~, - use=vt100, - -#### Wyse (wy) -# -# Wyse Technology -# 3471 North First Street -# San Jose, CA 95134 -# Vox: (408)-473-1200 -# Fax: (408) 473-1222 -# Web: http://www.wyse.com -# -# Wyse sales can be reached by phone at 1-800-GET-WYSE. Tech support is at -# (800)-800-WYSE (option 5 gets you a human). There's a Web page at the -# obvious address, . They keep terminfo entries at -# . -# -# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995. -# They now own the Qume and Amdek brands, too. So these are the people to -# talk with about all Link, Qume, and Amdek terminals. -# -# These entries include a few small fixes. -# I canceled the bel capacities in the vb entries. -# I made two trivial syntax fixes in the wyse30 entry. -# I made some entries relative to adm+sgr. -# -# -# Note: The wyse75, wyse85, and wyse99 have been discontinued. - -# Although the Wyse 30 can support more than one attribute -# it requires magic cookies to do so. Many applications do not -# function well with magic cookies. The following terminfo uses -# the protect mode to support one attribute (dim) without cookies. -# If more than one attribute is needed then the wy30-mc terminfo -# should be used. -# -wy30|wyse30|Wyse 30, - am, bw, hs, mc5i, mir, msgr, xon, - cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI, - civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dch1=\EW$<10>, dim=\E`7\E), dl1=\ER$<1>, - dsl=\EF\r, ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9, - fsl=^M, home=^^, ht=\011$<1>, hts=\E1, il1=\EE$<2>, - ind=\n$<2>, ip=$<2>, is2=\E'\E(\E\^3\E`9\016\024, - kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, krpl=\Er, ll=^^^K, mc0=\EP, mc4=^T, - mc5=^X, nel=^M^J, pfx=\Ez%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>, - rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, - sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, - smso=\E`7\E), tbc=\E0, tsl=\EF, -# -# This terminal description uses the non-hidden attribute mode -# (with magic cookie). -# -# (wy30-mc: added to suppress tic warning --esr) -wy30-mc|wyse30-mc|wyse 30 with magic cookies, - msgr@, - ma@, xmc#1, - blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003, - rmcup=\EG0, rmso=\EG0, - sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, - smso=\EG4, use=wy30, use=adm+sgr, -# The mandatory pause used by does not work with -# older versions of terminfo. If you see this effect then -# unset xon and delete the / from the delay. -# i.e. change $<100/> to $<100> -wy30-vb|wyse30-vb|wyse 30 visible bell, - bel@, use=wy30, -# -# The Wyse 50 can support one attribute (e.g. Dim, Inverse, -# Normal) without magic cookies by using the protect mode. -# The following description uses this feature, but when more -# than one attribute is put on the screen at once, all attributes -# will be changed to be the same as the last attribute given. -# The Wyse 50 can support more attributes when used with magic -# cookies. The wy50-mc terminal description uses magic cookies -# to correctly handle multiple attributes on a screen. -# -wy50|wyse50|Wyse 50, - am, bw, hs, mc5i, mir, msgr, xon, - cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI, - civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dch1=\EW$<1>, dim=\E`7\E), dl1=\ER, dsl=\EF\r, - ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M, - home=^^, ht=^I, hts=\E1, il1=\EE, ind=\n$<2>, ip=$<1>, - is1=\E`\:\E`9$<30>, is2=\016\024\E'\E(, kHOM=\E{, kbs=^H, - kcbt=\EI, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, - kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, - kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, - ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, - pfx=\Ez%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E), - ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, - sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, - smso=\E`6\E), tbc=\E0, tsl=\EF, -# -# This terminal description uses the non-hidden attribute mode -# (with magic cookie). -# -# The mandatory pause used by flash does not work with some -# older versions of terminfo. If you see this effect then -# unset and delete the / from the delay. -# i.e. change $<100/> to $<100> -# (wy50-mc: added to suppress tic warning --esr) -wy50-mc|wyse50-mc|wyse 50 with magic cookies, - msgr@, - ma@, xmc#1, - blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4, - rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0, - sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, - smso=\EGt, use=wy50, use=adm+sgr, -wy50-vb|wyse50-vb|wyse 50 visible bell, - bel@, use=wy50, -wy50-w|wyse50-w|wyse 50 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, - use=wy50, -wy50-wvb|wyse50-wvb|wyse 50 132-column visible bell, - bel@, use=wy50-w, - -# -# The Wyse 350 is a Wyse 50 with color. -# Unfortunately this means that it has magic cookies. -# The color attributes are designed to overlap the reverse, dim and -# underline attributes. This is nice for monochrome applications -# because you can make underline stuff green (or any other color) -# but for true color applications it's not so hot because you cannot -# mix color with reverse, dim or underline. -# To further complicate things one of the attributes must be -# black (either the foreground or the background). In reverse video -# the background changes color with black letters. In normal video -# the foreground changes colors on a black background. -# This terminfo uses some of the more advanced features of curses -# to display both color and blink. In the final analysis I am not -# sure that the wy350 runs better with this terminfo than it does -# with the wy50 terminfo (with user adjusted colors). -# -# The mandatory pause used by flash does not work with -# older versions of terminfo. If you see this effect then -# unset xon and delete the / from the delay. -# i.e. change $<100/> to $<100> -# -# Bug: The capability resets attributes. -wy350|wyse350|Wyse 350, - am, bw, hs, mc5i, mir, xon, - colors#8, cols#80, lh#1, lines#24, lw#8, ncv#55, nlab#8, pairs#8, - wsl#45, xmc#1, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, - cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<1>, - dim=\EGp, dl1=\ER, dsl=\EF\r, ed=\EY$<20>, el=\ET, - flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1, - il1=\EE, ind=\n$<2>, ip=$<1>, is1=\E`\:\E`9$<30>, - is2=\016\024\E'\E(, is3=\E%?, kHOM=\E{, kbs=^H, kcbt=\EI, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, - ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, - kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, - ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=^M^J, oc=\E%?, op=\EG0, - pfx=\Ez%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\EG0\E), ri=\Ej, - rmacs=\EG0\EH\003, rmir=\Er, rmln=\EA11, setb=, - setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e%p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e%p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%{48}%+%c, - sgr=%{0}%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;%PA\EG%?%gC%t%gC%e%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p5%t%{64}%|%;%;%gA%+%{48}%+%c%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, - sgr0=\EG0\E(\EH\003%{0}%PA%{0}%PC, smacs=\EG0\EH\002, - smir=\Eq, smln=\EA10, tbc=\E0, tsl=\EF, use=adm+sgr, -wy350-vb|wyse350-vb|wyse 350 visible bell, - bel@, use=wy350, -wy350-w|wyse350-w|wyse 350 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, - use=wy350, -wy350-wvb|wyse350-wvb|wyse 350 132-column visible bell, - bel@, use=wy350-w, -# -# This terminfo description is untested. -# The wyse100 emulates an adm31, so the adm31 entry should work. -# -wy100|wyse 100, - hs, mir, - cols#80, lines#24, xmc#1, - bel=^G, clear=\E;, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, dsl=\EA31, ed=\EY, el=\ET, fsl=^M, il1=\EE, ind=^J, - invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, - kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=\E{, - rmir=\Er, smir=\Eq, tsl=\EF, use=adm+sgr, -# -# The Wyse 120/150 has most of the features of the Wyse 60. -# This terminal does not need padding up to 9600 baud! -# should be set but the clear screen fails when in -# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear -# then set . -# -wy120|wyse120|wy150|wyse150|Wyse 120/150, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>, - dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>, - flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=\011$<1>, - hts=\E1, il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1, - is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, - mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, - rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11, - rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>, - rs3=\EwG\Ee($<100>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, - tbc=\E0, tsl=\EF, use=adm+sgr, -# -wy120-w|wyse120-w|wy150-w|wyse150-w|wyse 120/150 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>, - rs2=\E`;$<70>, use=wy120, -# -wy120-25|wyse120-25|wy150-25|wyse150-25|wyse 120/150 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy120, -# -wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|wyse 120/150 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy120-w, -# -wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell, - bel@, use=wy120, -# -wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell, - bel@, use=wy120-w, -# -# The Wyse 60 is like the Wyse 50 but with more padding. -# The reset strings are slow and the pad times very depending -# on other parameters such as font loading. I have tried -# to follow the following outline: -# -# -> set personality -# -> set number of columns -# -> set number of lines -# -> select the proper font -# -> do the initialization -# -> set up display memory (2 pages) -# -# The Wyse 60's that have vt100 emulation are slower than the -# older Wyse 60's. This change happened mid-1987. -# The capabilities effected are -# -# The meta key is only half right. This terminal will return the -# high order bit set when you hit CTRL-function_key -# -# It may be useful to assign two function keys with the -# values \E=(\s look at old data in page 1 -# \E=W, look at bottom of page 1 -# where \s is a space ( ). -# -# Note: -# The Wyse 60 runs faster when the XON/XOFF -# handshake is turned off. -# -# (wy60: we use \E{ rather than ^^ for home (both are documented) to avoid -# a bug reported by Robert Dunn, -- esr) -wy60|wyse60|Wyse 60, - am, bw, hs, km, mc5i, mir, msgr, - cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<100>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW$<11>, dclk=\E`b, dim=\EGp, dl1=\ER$<5>, dsl=\EF\r, - ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, fsl=^M, - home=\E{, ht=\011$<1>, hts=\E1, il1=\EE$<4>, ind=\n$<5>, - ip=$<3>, is1=\EcB0\EcC1, - is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, - mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, - rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er, - rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>, - rs2=\EeG$<150>, rs3=\EwG\Ee($<200>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, - tbc=\E0, tsl=\EF, use=adm+sgr, -# -wy60-w|wyse60-w|wyse 60 132-column, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<16>, ip=$<5>, - rs2=\EeF$<150>\E`;$<150>, use=wy60, -# -wy60-25|wyse60-25|wyse 60 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy60, -wy60-25-w|wyse60-25-w|wyse 60 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy60-w, -# -wy60-42|wyse60-42|wyse 60 80-column 42-lines, - lines#42, - clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>, - dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>, - ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>, - ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60, -wy60-42-w|wyse60-42-w|wyse 60 132-column 42-lines, - cols#132, lw#7, nlab#16, wsl#97, - clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>, - dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>, - nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42, -# -wy60-43|wyse60-43|wyse 60 80-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy60-42, -wy60-43-w|wyse60-43-w|wyse 60 132-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy60-42-w, -# -wy60-vb|wyse60-vb|Wyse 60 visible bell, - bel@, use=wy60, -wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell, - bel@, use=wy60-w, - -# The Wyse-99GT looks at lot like the Wyse 60 except that it -# does not have the 42/43 line mode. In the Wyse-60 the "lines" -# setup parameter controls the number of lines on the screen. -# For the Wyse 99GT the "lines" setup parameter controls the -# number of lines in a page. The screen can display 25 lines max. -# The Wyse-99GT also has personalities for the VT220 and -# Tektronix 4014. But this has no bearing on the native mode. -# -# (msgr) should be set but the clear screen fails when in -# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear -# then set msgr, else use msgr@. -# -# u0 -> enter Tektronix mode -# u1 -> exit Tektronix mode -# -wy99gt|wyse99gt|Wyse 99gt, - msgr@, - clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>, - el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>, - il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@, - ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`\:$<150>, smcup=\Ew1, - u0=\E~>\E8, u1=\E[42h, use=wy60, -# -wy99gt-w|wyse99gt-w|wyse 99gt 132-column, - cols#132, lw#7, nlab#16, wsl#97, - clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>, - dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>, - use=wy99gt, -# -wy99gt-25|wyse99gt-25|wyse 99gt 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs2=\E`\:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt, -# -wy99gt-25-w|wyse99gt-25-w|wyse 99gt 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs2=\E`;$<150>, use=wy99gt-w, -# -wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell, - bel@, use=wy99gt, -# -wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell, - bel@, use=wy99gt-w, - -# Can't set tabs! Other bugs (ANSI mode only): -# - can't redefine function keys (anyway, key redefinition in ANSI mode -# is too much complex to be described); -# - meta key can't be described (the terminal forgets it when reset); -# The xon-xoff handshaking can't be disabled while in ansi personality, so -# emacs can't work at speed greater than 9600 baud. No padding is needed at -# this speed. -# dch1 has been commented out because it causes annoying glittering when -# vi deletes one character at the beginning of a line with tabs in it. -# dch makes sysgen(1M) have a horrible behaviour when deleting -# a screen and makes screen(1) behave badly, so it is disabled too. The nice -# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are -# not, so smir and rmir are commented out as well. -# From: Francesco Potorti` , 24 Aug 1998 -wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard), - am, km, mc5i, mir, msgr, xenl, - cols#80, it#8, lines#25, vt#3, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, 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, dl=\E[%p1%dM, dl1=\E[M, - 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@, il=\E[%p1%dL, - il1=\E[L, ind=\n$<1>, invis=\E[8m, - 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, - 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, - mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8, - rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m, - 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, - sc=\E7, - 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, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, - -# This is the american terminal. Here tabs work fine. -# From: Francesco Potorti` , 24 Aug 1998 -wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard), - hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, use=wy99-ansi, - -# This terminal (firmware version 02) has a lot of bugs: -# - can't set tabs; -# - other bugs in ANSI modes (see above). -# This description disables handshaking when using cup. This is because -# GNU emacs doesn't like Xon-Xoff handshaking. This means the terminal -# cannot be used at speeds greater than 9600 baud, because at greater -# speeds handshaking is needed even for character sending. If you use -# DTR handshaking, you can use even greater speeds. -# From: Francesco Potorti` , 24 Aug 1998 -wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard), - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, it#8, lines#25, wsl#46, - acsc='x+y.w_vi~j(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G, - blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032, - cnorm=\E`4\E`1, cr=^M, cub1=^H, cud1=\Ej, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r, - ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>, - flash=\E\^1$<30/>\E\^0, fsl=^M, home=^^, ht=^I, il1=\EE, - ind=^J, invis=\EG3, - is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\EcD\024, - ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r, - kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r, - kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#, - nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed., - rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30, - rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E\^0\E`1\E`4\Ee.\E`\:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024, - sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t%{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%?%p9%t\EcE%e\EcD%;, - sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30, - smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF, - -# This is the american terminal. Here tabs work. -# From: Francesco Potorti` , 24 Aug 1998 -wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard), - hts=\E1, tbc=\E0, use=wy99f, - -# -# The Wyse 160 is combination of the WY-60 and the WY-99gt. -# The reset strings are slow and the pad times very depending -# on other parameters such as font loading. I have tried -# to follow the following outline: -# -# -> set personality -# -> set number of columns -# -> set number of lines -# -> select the proper font -# -> do the initialization -# -> set up display memory (2 pages) -# -# The display memory may be used for either text or graphics. -# When "Display Memory = Shared" the terminal will have more pages -# but garbage may be left on the screen when you switch from -# graphics to text. If "Display Memory = Unshared" then the -# text area will be only one page long. -# -# (wy160: we use \E{ rather than ^^ for home (both are documented) to avoid -# a bug reported by Robert Dunn, -- esr) -wy160|wyse160|Wyse 160, - am, bw, hs, km, mc5i, mir, msgr, - cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<30>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<5>, - dclk=\E`b, dim=\EGp, dl1=\ER$<1>, dsl=\EF\r, ed=\EY$<30>, - el=\ET$<5>, flash=\E`8$<100/>\E`9, fsl=^M, home=\E{, ht=^I, - hts=\E1, il1=\EE$<1>, ind=\n$<1>, ip=$<2>, is1=\EcB0\EcC1, - is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, - mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>, - rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er, - rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>, - rs2=\E`\:$<100>, rs3=\EwG\Ee($<140>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, - tbc=\E0, tsl=\EF, use=adm+sgr, -# -wy160-w|wyse160-w|wyse 160 132-column, - cols#132, lw#7, nlab#16, wsl#90, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<9>, - rs2=\EeF$<150>\E`;$<150>, use=wy160, -# -wy160-25|wyse160-25|wyse 160 80-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy160, -wy160-25-w|wyse160-25-w|wyse 160 132-column 25-lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<200>, use=wy160-w, -# -wy160-42|wyse160-42|wyse 160 80-column 42-lines, - lines#42, - clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>, - ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>, - rs3=\Ee*$<150>, use=wy160, -wy160-42-w|wyse160-42-w|wyse 160 132-column 42-lines, - cols#132, lw#7, nlab#16, wsl#90, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>, - rs2=\EeF$<150>\E`;$<150>, use=wy160-42, -# -wy160-43|wyse160-43|wyse 160 80-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy160-42, -wy160-43-w|wyse160-43-w|wyse 160 132-column 43-lines, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\Ee+$<150>, use=wy160-42-w, -# -wy160-vb|wyse160-vb|Wyse 160 visible bell, - bel@, use=wy160, -wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell, - bel@, use=wy160-w, -# -# The Wyse 75 is a vt100 lookalike without advanced video. -# -# The Wyse 75 can support one attribute (e.g. Dim, Inverse, -# Underline) without magic cookies. The following description -# uses this capability, but when more than one attribute is -# put on the screen at once, all attributes will be changed -# to be the same as the last attribute given. -# The Wyse 75 can support more attributes when used with magic -# cookies. The wy75-mc terminal description uses magic cookies -# to correctly handle multiple attributes on a screen. -# -wy75|wyse75|wyse 75, - am, hs, mc5i, mir, msgr, xenl, xon, - cols#80, lines#24, ma#1, pb#1201, wsl#78, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[J$<30>, - cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr$<2>, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, 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\,\E[30l$<250>, fsl=^A, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - 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, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~, - kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i, - mc5=\E[5i, 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, - tbc=\E[3g, tsl=\E[>\,\001, use=vt220+keypad, -# -# This terminal description uses the non-hidden attribute mode -# (with magic cookie). -# -wy75-mc|wyse75-mc|wyse 75 with magic cookies, - msgr@, - ma@, xmc#1, - blink=\E[2p, dim=\E[1p, invis=\E[4p, is3=\E[m\E[p, - rev=\E[16p, rmacs=\E[0p\017, rmso=\E[0p, rmul=\E[0p, - sgr=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9%t\016%e\017%;, - sgr0=\E[0p\017, smacs=\E[0p\016, smso=\E[17p, smul=\E[8p, - use=wy75, -wy75-vb|wyse75-vb|wyse 75 with visible bell, - pb@, - bel@, use=wy75, -wy75-w|wyse75-w|wyse 75 in 132 column mode, - cols#132, wsl#130, - rs2=\E[35h\E[?3h$<80>, use=wy75, -wy75-wvb|wyse75-wvb|wyse 75 with visible bell 132 columns, - pb@, - bel@, use=wy75-w, -# -# Wyse 85 emulating a vt220 7 bit mode. -# 24 line screen with status line. -# -# The vt220 mode permits more function keys but it wipes out -# the escape key. I strongly recommend that be set to -# escape (esc). -# The terminal may have to be set for 8 data bits and 2 stop -# bits for the arrow keys to work. -# The Wyse 85 runs faster with XON/XOFF enabled. Also the -# and work best when XON/XOFF is set. and -# leave trash on the screen when used without XON/XOFF. -# -wy85|wyse85|wyse 85, - am, hs, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m, - dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l, - ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K, - enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>, - fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH, - ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>, - ind=\n$<3>, invis=\E[8m, 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, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, - mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>, - 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$<70>, - rs3=\E[?5l, 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, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+keypad, -# -# Wyse 85 with visual bell. -wy85-vb|wyse85-vb|wyse 85 with visible bell, - bel@, flash=\E[30h\E\,\E[30l$<300>, use=wy85, -# -# Wyse 85 in 132-column mode. -wy85-w|wyse85-w|wyse 85 in 132-column mode, - cols#132, wsl#132, - rs2=\E[35h\E[?3h$<70>, use=wy85, -# -# Wyse 85 in 132-column mode with visual bell. -wy85-wvb|wyse85-wvb|wyse 85 with visible bell 132-columns, - bel@, use=wy85-w, - -# From: Kevin Turner , 12 Jul 1998 -# This copes with an apparent firmware bug in the wy85. He writes: -# "What I did was change leave the terminal cursor keys set to Normal -# (instead of application), and change \E[ to \233 for all the keys in -# terminfo. At one point, I found some reference indicating that this -# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just -# me), but I can't find that and the server under my bookmark to "Wyse -# Technical" isn't responding. So there's the question of wether the wy85 -# terminfo should reflect the manufactuer's intended behaviour of the terminal -# or the actual." -wy85-8bit|wyse85-8bit|wyse 85 in 8-bit mode, - am, hs, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<110>, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP$<3*>, dch1=\E[P$<3>, dim=\E[2m, - dl=\E[%p1%dM$<3*>, dl1=\E[M$<3>, dsl=\E[40l, - ech=\E[%p1%dX, ed=\E[J$<110>, el=\E[K$<1>, el1=\E[1K, - enacs=\E)0, flash=\E[30h\E\,\E[30l$<300>, - fsl=\E[1;24r\E8, home=\E[H, ht=\011$<1>, hts=\EH, - ich=\E[%p1%d@$<4*>, il=\E[%p1%dL$<5*>, il1=\E[L$<5>, - ind=\n$<3>, invis=\E[8m, 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, ka1=\EOw, ka3=\EOy, kb2=\EOu, - kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B, - kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM, - kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~, - kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~, - 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=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~, - kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, - mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>, - 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$<70>, - rs3=\E[?5l, 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, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[40h\E7\E[25;%i%p1%dH, -# -# Wyse 185 emulating a vt320 7 bit mode. -# -# This terminal always displays 25 lines. These lines may be used -# as 24 data lines and a terminal status line (top or bottom) or -# 25 data lines. The 48 and 50 line modes change the page size -# and not the number of lines on the screen. -# -# The Compose Character key can be used as a meta key if changed -# by set-up. -# -wy185|wyse185|wyse 185, - am, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - 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>, - dsl=\E7\E[99;0H\E[K\E8, ech=\E[%p1%dX, ed=\E[J$<40>, - el=\E[K, el1=\E[1K, enacs=\E)0, - flash=\E[30h\E\,\E[30l$<100>, fsl=\E[1;24r\E8, - home=\E[H, hpa=\E[%i%p1%d`, ht=^I, hts=\EH, - ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>, - ind=\n$<2>, invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, - kfnd=\E[1~, khlp=\E[28~, khome=\E[26~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, - lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, - ri=\EM$<2>, rmacs=^O, 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, - 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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd, - use=vt220+keypad, -# -# Wyse 185 with 24 data lines and top status (terminal status) -wy185-24|wyse185-24|wyse 185 with 24 data lines, - hs@, - dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, - use=wy185, -# -# Wyse 185 with visual bell. -wy185-vb|wyse185-vb|wyse 185+flash, - bel@, use=wy185, -# -# Wyse 185 in 132-column mode. -wy185-w|wyse185-w|wyse 185 in 132-column mode, - cols#132, wsl#132, - dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, - ip=$<7>, rs2=\E[35h\E[?3h, use=wy185, -# -# Wyse 185 in 132-column mode with visual bell. -wy185-wvb|wyse185-wvb|wyse 185+flash+132 cols, - bel@, use=wy185-w, - -# wy325 terminfo entries -# Done by Joe H. Davis 3-9-92 - -# lines 25 columns 80 -# -wy325|wyse325|Wyse epc, - am, bw, hs, mc5i, mir, - cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45, - acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, - bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>, - cnorm=\E`1, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>, - dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>, - flash=\E`8$<100/>\E`9, fsl=^M, home=^^, ht=^I, hts=\E1, - il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1, - is2=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024\El, - is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, - kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, - kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, - kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, - mc0=\EP, mc4=^T, mc5=\Ed#, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, - rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11, - rs1=\E~!\E~4$<30>, rs2=\EeF\E`\:$<70>, - rs3=\EwG\Ee($<100>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, - smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, tbc=\E0, - tsl=\EF, use=adm+sgr, - -# -# lines 24 columns 80 vb -# -wy325-vb|wyse325-vb|wyse-325 with visual bell, - bel@, use=wy325, - -# -# lines 24 columns 132 -# -wy325-w|wyse325-w|wy325w-24|wyse-325 in wide mode, - cols#132, lw#7, nlab#16, wsl#97, - cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>, - rs2=\E`;$<70>, use=wy325, -# -# lines 25 columns 80 -# -wy325-25|wyse325-25|wy325-80|wyse-325|wyse-325 25 lines, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325, -# -# lines 25 columns 132 -# -wy325-25w|wyse325-25w|wy325 132 columns, - lh@, lines#25, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, -# -# lines 25 columns 132 vb -# -wy325-w-vb|wy325-wvb|wyse325-wvb|wyse-325 wide mode reverse video, - bel@, use=wy325-w, - -# -# lines 42 columns 80 -# -wy325-42|wyse325-42|wyse-325 42 lines, - lh@, lines#42, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325, -# -# lines 42 columns 132 -# -wy325-42w|wyse325-42w|wyse-325 42 lines wide mode, - lh@, lines#42, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, -# -# lines 42 columns 132 vb -# -wy325-42w-vb|wy325-42wvb|wyse-325 42 lines wide mode visual bell, - bel@, use=wy325-w, -# -# lines 43 columns 80 -# -wy325-43|wyse325-43|wyse-325 43 lines, - lh@, lines#43, lw@, nlab@, - pln@, use=wy325, -# -# lines 43 columns 132 -# -wy325-43w|wyse325-43w|wyse-325 43 lines wide mode, - lh@, lines#43, lw@, nlab@, - pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, -# -# lines 43 columns 132 vb -# -wy325-43w-vb|wy325-43wvb|wyse-325 43 lines wide mode visual bell, - bel@, use=wy325-w, - -# Wyse 370 -- 24 line screen with status line. -# -# The terminal may have to be set for 8 data bits and 2 stop -# bits for the arrow keys to work. -# -# If you change keyboards the terminal will send different -# escape sequences. -# The following definition is for the basic terminal without -# function keys. -# -# -> enter Tektronix 4010/4014 mode -# -> exit Tektronix 4010/4014 mode -# -> enter ASCII mode (from any ANSI mode) -# -> exit ASCII mode (goto native ANSI mode) -# -> enter Tek 4207 ANSI mode (from any ANSI mode) -# -> exit Tek 4207 mode (goto native ANSI mode) -# -# Bug: The capability resets attributes. -wy370-nk|wyse 370 without function keys, - am, ccc, hs, mc5i, mir, msgr, xenl, xon, - colors#64, cols#80, it#8, lines#24, ncv#48, pairs#64, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A, - 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, ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>, - el=\E[K$<10>, el1=\E[1K$<12>, enacs=\E)0, - flash=\E[30h\E\,\E[30l$<300>, fsl=\E[1;24r\E8, - home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>, hts=\EH, - ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>, - ind=\n$<2>, - initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e%p2%{750}%<%t%{32}%e%{48}%;%?%p3%{250}%<%t%{0}%e%p3%{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250}%<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%;%{1}%+%+%+%dw, - invis=\E[8m, ip=$<1>, is1=\E[90;1"p\E[?5W$<6>, - is2=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h, - is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i, mc4=\E[4i, - mc5=\E[5i, - 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, rc=\E8, rev=\E[7m, 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, sc=\E7, 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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, 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, -# -# 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, - kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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~, khome=\E[H, kich1=\EOP, kil1=\EOP, - knp=\E[U, kpp=\E[V, use=wy370-nk, -# -# Function key set for the VT-320 (and wy85) compatible keyboard -# -wy370-105k|Wyse 370 with 105 key keyboard, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, - kpp=\E[5~, kslt=\E[4~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, - use=wy370-nk, use=vt220+keypad, -# -# Function key set for the PC compatible keyboard -# -wy370-EPC|Wyse 370 with 102 key keyboard, - kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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~, - khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk, -# -# Wyse 370 with visual bell. -wy370-vb|Wyse 370 with visible bell, - bel@, use=wy370, -# -# Wyse 370 in 132-column mode. -wy370-w|Wyse 370 in 132-column mode, - cols#132, wsl#132, - rs2=\E[35h\E[?3h$<70>, use=wy370, -# -# Wyse 370 in 132-column mode with visual bell. -wy370-wvb|Wyse 370 with visible bell 132-columns, - flash=\E[30h\E\,\E[30l$<300>, use=wy370-w, -wy370-rv|Wyse 370 reverse video, - rs3=\E[32h\E[?5h, use=wy370, -# -# Wyse 99gt Tektronix 4010/4014 emulator, -# -wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator, - am, os, - cols#74, lines#35, - bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, - cup=\035%{3040}%{89}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037, - cuu1=^K, ff=^L, - hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037, - home=^]7`x @\037, - hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037, - is2=\E8, nel=^M^J, u0=\E~>\E8, u1=\E[42h, -# -# Wyse 160 Tektronix 4010/4014 emulator, -# -wy160-tek|Wyse 160 Tektronix 4010/4014 emulator, - cup=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31}%&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004}%/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/%{31}%&%{64}%+%c\037, - home=^]8`g @\037, use=wy99gt-tek, -# -# Wyse 370 Tektronix 4010/4014 emulator, -# -wy370-tek|Wyse 370 Tektronix 4010/4014 emulator, - am, os, - cols#80, lines#36, - bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, - cup=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/%Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32}%/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037, - cuu1=^K, ff=^L, - hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH\037, - home=^]8g @\037, - hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD\037, - is2=\E8, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^I, kcuu1=^K, - nel=^M^J, u0=\E[?38h\E8, u1=\E[?38l\E)0, - -# Vendor-supplied Wyse entries end here. - -# -#TITLE: TERMINFO ENTRY WY520 -#DATE: 8/5/93 -# The WY520 terminfo is based on the WY285 entry published on the WYSE -# BBS with the addition of more function keys and special keys. -# -# rs1 -> set personality -# rs2 -> set number of columns -# rs3 -> set number of lines -# is1 -> select the proper font -# is2 -> do the initialization -# is3 -> If this string is empty then rs3 gets sent. -# -# Wyse 520 emulating a vt420 7 bit mode with default ANSI keyboard -# - The BS key is programmed to generate BS in smcup since -# is2 doesn't seem to work. -# - Remove and shift/Remove: delete a character -# - Insert : enter insert mode -# - Find : delete to end of file -# - Select : clear a line -# - F11, F12, F13: send default sequences (not ESC, BS, LF) -# - F14 : Home key -# - Bottom status line (host writable line) is used. -# - smkx,rmkx are removed because this would put the numeric -# keypad in Dec application mode which doesn't seem to work -# with SCO applications. -# -wy520|wyse520|wyse 520, - am, hs, km, mc5i, mir, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - 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`, ht=^I, - hts=\EH, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, - il1=\E[L$<3>, ind=\n$<2>, invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, ked=\E[1~, - kel=\E[4~, kent=\EOM, 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~, - kich1=\E[2~, knp=\E[6~, kpp=\E[5~, kslt=\E[4~, lf1=PF1, - lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, - rc=\E8, rev=\E[7m, ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, - rmcup=\E[ R, rmir=\E[4l, rmso=\E[m, 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, - 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, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`, - vpa=\E[%i%p1%dd, use=vt220+keypad, -# -# Wyse 520 with 24 data lines and status (terminal status) -wy520-24|wyse520-24|wyse 520 with 24 data lines, - hs@, - dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, - use=wy520, -# -# Wyse 520 with visual bell. -wy520-vb|wyse520-vb|wyse 520 with visible bell, - flash=\E[30h\E\,\E[30l$<100>, use=wy520, -# -# Wyse 520 in 132-column mode. -wy520-w|wyse520-w|wyse 520 in 132-column mode, - cols#132, wsl#132, - dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, - ip=$<7>, rs2=\E[35h\E[?3h, use=wy520, -# -# Wyse 520 in 132-column mode with visual bell. -wy520-wvb|wyse520-wvb|wyse 520 with visible bell 132-columns, - flash=\E[30h\E\,\E[30l$<100>, use=wy520-w, -# -# -# Wyse 520 emulating a vt420 7 bit mode. -# The DEL key is programmed to generate BS in is2. -# With EPC keyboard. -# - 'End' key will clear till end of line on EPC keyboard -# - Shift/End : ignored. -# - Insert : enter insert mode. -# - Delete : delete a character (have to change interrupt character -# 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=\177, 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, -# -# Wyse 520 with 24 data lines and status (terminal status) -# with EPC keyboard. -wy520-epc-24|wyse520-pc-24|wyse 520 with 24 data lines and EPC keyboard, - hs@, - dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, - use=wy520-epc, -# -# Wyse 520 with visual bell. -wy520-epc-vb|wyse520-pc-vb|wyse 520 with visible bell and EPC keyboard, - flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc, -# -# Wyse 520 in 132-column mode. -wy520-epc-w|wyse520-epc-w|wyse 520 in 132-column mode with EPC keyboard, - cols#132, wsl#132, - dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, - ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc, -# -# Wyse 520 in 132-column mode with visual bell. -wy520-epc-wvb|wyse520-p-wvb|wyse 520 with visible bell 132-columns and EPC keyboard, - flash=\E[30h\E\,\E[30l$<100>, use=wy520-epc-w, -# -# Wyse 520 in 80-column, 36 lines -wy520-36|wyse520-36|wyse 520 with 36 data lines, - hs@, - lines#36, - dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, - use=wy520, -# -# Wyse 520 in 80-column, 48 lines -wy520-48|wyse520-48|wyse 520 with 48 data lines, - hs@, - lines#48, - dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, - use=wy520, -# -# Wyse 520 in 132-column, 36 lines -wy520-36w|wyse520-36w|wyse 520 with 132 columns and 36 data lines, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, - use=wy520-36, -# -# Wyse 520 in 132-column, 48 lines -wy520-48w|wyse520-48w|wyse 520 with 48 data lines, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, - use=wy520-48, -# -# -# Wyse 520 in 80-column, 36 lines with EPC keyboard -wy520-36pc|wyse520-36pc|wyse 520 with 36 data lines and EPC keyboard, - hs@, - lines#36, - dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, - use=wy520-epc, -# -# Wyse 520 in 80-column, 48 lines with EPC keyboard -wy520-48pc|wyse520-48pc|wyse 520 with 48 data lines and EPC keyboard, - hs@, - lines#48, - dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, - use=wy520-epc, -# -# Wyse 520 in 132-column, 36 lines with EPC keyboard -wy520-36wpc|wyse520-36wpc|wyse 520 with 36 data lines and EPC keyboard, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, - use=wy520-36pc, -# -# Wyse 520 in 132-column, 48 lines with EPC keyboard -wy520-48wpc|wyse520-48wpc|wyse 520 with 48 data lines and EPC keyboard, - cols#132, wsl#132, - rs2=\E[?3h, - rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, - use=wy520-48pc, - -# From: John Gilmore -# (wyse-vp: removed , there's no such -# file and we don't know what is -- esr) -wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW, - dl1=\El, ed=\Ek, el=\EK, home=^A, ht=^I, il1=\EM, ind=^J, - is2=\E`\:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=^J, kcuf1=^F, - kcuu1=^Z, khome=^A, ll=^A^Z, nel=^M^J, rmir=\Er, rmso=^O, - rmul=^O, rs1=\E`\:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N, - smul=^N, - -wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad, - is2=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=, - kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - khome=\EOH, rmkx=\E[?1l\E>$<10/>, smkx=\E[?1h\E=$<10/>, - use=wy75, - -# From: Eric Freudenthal -wy100q|Wyse 100 for Quotron, - OTbs, - cols#80, lines#24, xmc#1, - cbt=\EI, clear=^Z, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@, - is2=\E`\:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr, - -#### Kermit terminal emulations -# -# Obsolete Kermit versions may be listed in the section describing obsolete -# non-ANSI terminal emulators later in the file. -# - -# KERMIT standard all versions. -# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. -# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr) -# From: greg small 9-25-84 -kermit|standard kermit, - OTbs, - cols#80, lines#24, - clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, is2=K0 Standard Kermit 9-25-84\n, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, -kermit-am|standard kermit plus auto-margin, - am, - is2=K1 Standard Kermit plus Automatic Margins\n, - use=kermit, -# IBMPC Kermit 1.2. -# Bugs: , : do not work except at beginning of line! does -# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of -# line). -# From: greg small 8-30-84 -pckermit|pckermit12|UCB IBMPC Kermit 1.2, - am, - lines#25, - clear=\EH\EJ, ed@, el@, - is2=K2 UCB IBMPC Kermit 1.2 8-30-84\n, use=kermit, -# IBMPC Kermit 1.20 -# Cannot use line 25, now acts funny like ansi special scrolling region. -# Initialization must escape from that region by cursor position to line 24. -# Cannot use character insert because 1.20 goes crazy if insert at col 80. -# Does not use :am: because autowrap is lost when kermit dropped and restarted. -# From: greg small 12-19-84 -pckermit120|UCB IBMPC Kermit 1.20, - it#8, lines#24, - cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I, - il1=\EL, - is2=\EO\Eq\EJ\EY7 K3 UCB IBMPC Kermit 1.20 12-19-84\n, - rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit, -# MS-DOS Kermit 2.27 for the IBMPC -# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. -# Cannot use line 25, now acts funny like ansi special scrolling region. -# Initialization must escape from that region by cursor position to line 24. -# Does not use am: because autowrap is lost when kermit dropped and restarted. -# Reverse video for standout like H19. -# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr) -# From: greg small 3-17-85 -msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC, - OTbs, am@, - cols#80, it#8, lines#24, - clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - cvvis=\EO\Eq\EG\EwK4, dch1=\EN, dl1=\EM, ed=\EJ, el=\EK, - home=\EH, ht=^I, il1=\EL, - is2=\EO\Eq\EG\Ew\EJ\EY7 K4 MS Kermit 2.27 for the IBMPC 3-17-85\n, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rc=\Ek, - rmir=\EO, rmso=\Eq, sc=\Ej, smir=\E@, smso=\Ep, -# MS-DOS Kermit 2.27 with automatic margins -# From: greg small 3-17-85 -msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins, - am, - cvvis=\EO\Eq\EG\EvK5, - is2=\EO\Eq\EG\Ev\EJ\EY7 K5 MS Kermit 2.27 +automatic margins 3-17-85\n, - use=msk227, -# MS-DOS Kermit 2.27 UCB 227.14 for the IBM PC -# Automatic margins now default. Use ansi for highlights. -# Define function keys. -# (msk22714: removed obsolete ":kn#10:" -- esr) -# From: greg small 3-17-85 -msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC, - am, - bold=\E[1m, cvvis=\EO\Eq\EG\EvK6, - is2=\EO\Eq\EG\Ev\EJ\EY7 K6 MS Kermit 2.27 UCB 227.14 IBM PC 3-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, -# 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. -# (vt320-k3: I added / based on the init string -- esr) -vt320-k3|MS-Kermit 3.00's vt320 emulation, - am, eslok, hs, km, mir, msgr, xenl, - cols#80, it#8, lines#49, pb#9600, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cmdch=\E, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K, - flash=\E[?5h\E[?5l\E[?5h\E[?5l\E[?5h\E[?5l, - fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, - is2=\E>\E F\E[?1l\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, 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=^M^J, rc=\E8, - 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 F\E[4;20l\E[12h\E[?1;5;6;38;42l\E[?7;25h\E[4i\E[?4i\E[m\E[r\E[2$~, - sc=\E7, 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, -# From: Joseph Gil 13 Dec 1991 -# ACS capabilities from Philippe De Muyter 30 May 1996 -# (I removed a bogus boolean :mo: and added , , -- esr) -vt320-k311|dec vt320 series as defined by kermit 3.11, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[;H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K, - flash=\E[?5h\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, hts=\EH, - ich=\E[%p1%d@, il=\E[%p1%dL, 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=^M\ED, rc=\E8, rev=\E[7m, - rf=/home/martino/avrdude-build-script/objdir/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, sc=\E7, 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, - -######## NON-ANSI TERMINAL EMULATIONS -# - -#### Avatar -# -# These entries attempt to describe Avatar, a terminal emulation used with -# MS-DOS bulletin-board systems. It was designed to give ANSI-like -# capabilities, but with cheaper (shorter) control sequences. Messy design, -# excessively dependent on PC idiosyncracies, but apparently rather popular -# in the BBS world. -# -# No color support. Avatar doesn't fit either of the Tektronix or HP color -# models that terminfo knows about. An Avatar color attribute is the -# low 7 bits of the IBM-PC display-memory attribute. Bletch. -# -# I wrote these entries while looking at the Avatar spec. I don't have -# the facilities to test them. Let me know if they work, or don't. -# -# Avatar escapes not used by these entries (because maybe you're smarter -# and more motivated than I am and can figure out how to wrap terminfo -# around some of them, and because they are weird enough to be funny): -# level 0: -# ^L -- clear window/reset current attribute to default -# ^V^A%p1%c -- set current color attribute, parameter decodes as follows: -# -# bit: 6 5 4 3 2 1 0 -# | | | | | -# +---+---+ | +---+---+ -# | | | -# | | foreground color -# | foreground intensity -# background color -# level 0+: -# ^V^J%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) up by p1 lines -# ^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 ^Y [...] -- repeat pattern. specifies the number of bytes -# in the pattern, the number of times the pattern -# should be repeated. If either value is 0, no-op. -# The pattern can contain Avatar console codes, -# including other ^V ^Y patterns. -# level 1: -# ^V^O -- clockwise mode on; turn print direction right each time you -# hit a window edge (yes, really). Turned off by CR -# ^V^P -- no-op -# ^V^Q%c -- query the driver -# ^V^R -- driver reset -# ^V^S -- Sound tone (PC-specific) -# ^V^T -- change highlight at current cursor poition to %c -# ^V^U%p1%c%p2%c -- highlight window with attribute -# ^V^V%p1%c%p2%c%p3%c%p4%c%p5%c -# -- define window -# -# From: Eric S. Raymond 1 Nov 1995 -# (The ///// capabilities exist only to -# tell ncurses that the corresponding highlights exist; it should use , -# which is the only method that will actually work for multiple highlights.) -# -# Update by TD - 2004: half of this was inconsistent. Found documentation -# and repaired most of the damage. sgr0 is probably incorrect, but the -# available documentation gives no clues for a workable string. -avatar0|avatar terminal emulator level 0, - am, bce, msgr, - cols#80, it#8, lines#25, - blink=^V^B, bold=^V^A^P, cr=^M, cub1=^V^E, cud1=^V^D, - cuf1=^V^F, cup=\026\010%p1%c%p2%c, cuu1=^V^C, el=^V^G, - ind=^J, invis=^V^A\0, rep=\031%p1%c%p2%c, rev=^V^Ap, - rmacs@, rs2=^L, - sgr=%?%p1%p2%|%p3%|%p6%|%p7%|%t\026\001%?%p7%t%{128}%e%{0}%?%p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p6%t%{16}%|%;%;%c%;%?%p4%t\026\002%;, - sgr0=^V^A^G, smacs@, smso=^V^Ap, smul=^V^A^A, - use=klone+acs, -# From: Eric S. Raymond 1 Nov 1995 -avatar0+|avatar terminal emulator level 0+, - dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0, -# From: Eric S. Raymond 1 Nov 1995 -avatar|avatar1|avatar terminal emulator level 1, - civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+, - rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+, - -#### RBcomm -# -# RBComm is a lean and mean terminal emulator written by the Interrupt List -# maintainer, Ralf Brown. It was fairly popular in the late DOS years (early -# '90s), especially in the BBS world, and still has some loyal users due to -# its very small memory footprint and to a cute macro language. -rbcomm|IBM PC with RBcomm and EMACS keybindings, - am, bw, mir, msgr, xenl, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=^L, cnorm=\E[?25h, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^C, cuf1=^B, - cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W, - dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I, - il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m, - is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H, - kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=^M\ED, - rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=, - rmir=^], rmkx=\E>, rmso=^U, rmul=^U, - rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m, - smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T, -rbcomm-nam|IBM PC with RBcomm without autowrap, - am@, - bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm, -rbcomm-w|IBM PC with RBcomm in 132 column mode, - cols#132, - bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, - is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, use=rbcomm, - -######## LCD DISPLAYS -# - -#### Matrix Orbital -# from: Eric Z. Ayers (eric@ale.org) -# -# Matrix Orbital 20x4 LCD display -# Command Character is 0xFE (decimal 254, octal 376) -# -# On this device, cursor addressability isn't possible. The LCD expects: -# 0xfe G -# for cup: %p1 == row and %p2 is column -# -# 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"'. -# -# Alas, there is no cursor upline capability on this display. -# -# These entries add some 'sanity stuff' to the clear function. That is, it -# does a 'clear' and also turns OFF auto scroll, turns ON Auto Line Wrapping, -# and turns off the cursor blinking and stuff like that. -# -# NOTE: calling 'beep' turns on the backlight (bell) -# NOTE: calling 'flash' turns it on and back off (visual bell) -# -MtxOrb|Generic Matrix Orbital LCD display, - bel=\376B^A, clear=\376X\376C\376R\376K\376T, - cnorm=\376K\376T, cub1=\376L, cuf1=\376M, - flash=\376B\001$<200>\376F, home=\376H, -MtxOrb204|20x4 Matrix Orbital LCD display, - cols#20, lines#4, use=MtxOrb, -MtxOrb162|16x2 Matrix Orbital LCD display, - cols#16, lines#2, use=MtxOrb, -# The end - -######## OLDER TERMINAL TYPES -# -# This section is devoted to older commercial terminal brands that are now -# discontinued, but known to be still in use or represented by emulations. -# - -#### AT&T (att, tty) -# -# This section also includes Teletype-branded VDTs. -# -# The AT&T/Teletype terminals group was sold to SunRiver Data Systems (now -# Boundless Technologies); for details, see the header comment on the ADDS -# section. -# -# These are AT&T's official terminfo entries. All-caps aliases have been -# removed. -# -att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode, - am, eo, mir, msgr, xon, - cols#80, it#8, lines#24, - bel=^G, clear=\E[H\E[J, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, kbs=^H, kcbt=\E[Z, kclr=\E[J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, - 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, -att2350|AT&T 2350 Video Information Terminal 80 column mode, - mc0@, mc4@, mc5@, use=att2300, - -# Must setup RETURN KEY - CR, REC'VD LF - INDEX. -# Seems upward compatible with vt100, plus ins/del line/char. -# On sgr, the protection parameter is ignored. -# No check is made to make sure that only 3 parameters are output. -# standout= reverse + half-intensity = 3 | 5. -# bold= reverse + underline = 2 | 3. -# note that half-bright blinking doesn't look different from normal blinking. -# NOTE:you must program the function keys first, label second! -# (att4410: a BSD entry has been seen with the following capabilities: -# , , , , , -# , , , -- esr) -att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1, - am, hs, mir, msgr, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dim=\E[2m, - dl1=\E[M, ed=\E[J, el=\E[K, fsl=\E8, home=\E[H, ht=^I, - ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, is1=\E[?3l\E)0, - is3=\E[1;03q f1 \EOP\E[2;03q f2 \EOQ\E[3;03q f3 \EOR\E[4;03q f4 \EOS\E[5;03q f5 \EOT\E[6;03q f6 \EOU\E[7;03q f7 \EOV\E[8;03q f8 \EOW, - kbs=^H, kclr=\E[2J, 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, khome=\E[H, kll=\E[24;1H, - ll=\E[24H, nel=^M^J, - pfx=\E[%p1%1d;%p2%l%2.2dq f%p1%1d %p2%s, - pln=\E[%p1%d;00q%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM, - rmacs=^O, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, - sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smso=\E[7m, smul=\E[4m, - tsl=\E7\E[25;%p1%{1}%+%dH, - -att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1, - cols#132, wsl#132, - is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1, - -att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2, - OTbs, - pfx=\E[%p1%d;%p2%l%02dq f%p1%d %p2%s, - use=att5410v1, - -att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode, - cols#132, wsl#132, - is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att4410, - -# 5410 in terms of a vt100 -# (v5410: added / based on init string -- esr) -v5410|att5410 in terms of a vt100, - am, mir, msgr, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, 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=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, rc=\E8, 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, - sc=\E7, - 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=vt100+fnkeys, - -# -# Teletype Model 5420 -- A souped up 5410, with multiple windows, -# even! the 5420 has three modes: scroll, window or page mode -# this terminfo should work in scroll or window mode, but doesn't -# take advantage of any of the differences between them. -# -# Has memory below (2 lines!) -# 3 pages of memory (plus some spare) -# The 5410 sequences for , , ,

, , , , -# , would work for these, but these work in both scroll and window -# mode... Unset insert character so insert mode works -# sets 80 column mode, -# escape sequence: -# 1) turn off all fonts -# 2) function keys off, keyboard lock off, control display off, -# insert mode off, erasure mode off, -# 3) full duplex, monitor mode off, send graphics off, nl on lf off -# 4) reset origin mode -# 5) set line wraparound -# 6) exit erasure mode, positional attribute mode, and erasure extent mode -# 7) clear margins -# 8) program ENTER to transmit ^J, -# We use \212 to program the ^J because a bare ^J will get translated by -# UNIX into a CR/LF. The enter key is needed for AT&T uOMS. -# 1 2 3 4 5 6 7 8 -# set screen color to black, -# No representation in terminfo for the delete word key: kdw1=\Ed -# Key capabilities assume the power-up send sequence... -# This is not strictly necessary, but it helps maximize -# memory usefulness: , -# Alternate sgr0: , -# Alternate sgr: , -# smkx programs the SYS PF keys to send a set sequence. -# It also sets up labels f1, f2, ..., f8, and sends edit keys. -# This string causes them to send the strings - -# when pressed in SYS PF mode. -# (att4415: I added / based on the init string -- esr) -att4415|tty5420|att5420|AT&T 4415/5420 80 cols, - OTbs, db, mir, xon, - lh#2, lm#78, lw#8, nlab#8, wsl#55, - cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD, - cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx, - cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP, - dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD, - flash=\E[?5h$<200>\E[?5l, home=\E[x, - hpa=\E[%p1%{1}%+%dG, hts=\EH, ich=\E[%p1%d@, ich1@, - il=\E[%p1%dL, indn=\E[%p1%dE, is1=\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[21;1j\212, - is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M, - kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, kf2=\EOd, - kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, - kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U, - kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, - lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?2i, mc4=\E[?9i, - mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt, - pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, - rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[19;0j\E[21;1j\212, rmln=\E|, - 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%;, - sgr0=\E[m\017, smam=\E[?7h, smir=\E[4h, - smkx=\E[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g, - tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, - use=att4410, - -att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols, - cols#132, lm#54, wsl#97, - is1=\E[?3h$<100>, use=att4415, - -att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv, - flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415, - -att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv, - cols#132, lm#54, wsl#97, - flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h, - use=att4415, - -# Note that this mode permits programming USER PF KEYS and labels -# However, when you program user pf labels you have to reselect -# user pf keys to make them appear! -att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, - pfx=\E[%p1%d;%p2%l%02d;0;1q F%p1%d %p2%s, - pln=\E[%p1%d;0;0;1q%p2%:-16.16s, - -att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415, - -att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415-rv, - -att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415-w, - -att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels, - kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, - use=att4415-w-rv, - -att5420_2|AT&T 5420 model 2 80 cols, - am, db, hs, mir, msgr, xon, - cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j, - cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A, - cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, 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, ht=^I, hts=\EH, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - indn=\E[%p1%dE, invis=\E[8m, - 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, - kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, - kel=\E[2K, kend=\Ez, kent=^J, kf1=\EOc, kf2=\EOd, kf3=\EOe, - kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, khome=\E[H, - kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U, - kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, - lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?;2i, mc4=\E[4i, - mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=^M^J, - pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s\E~, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j, - rmln=\E|, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, - sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smkx=\E[19;1j, smln=\E~, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, - tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, -att5420_2-w|AT&T 5420 model 2 in 132 column mode, - cols#132, - is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\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, - use=att5420_2, - -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=^M, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, - ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, ind=^J, - 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, kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I, - kf15=\E[J, 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, -att4418-w|att5418-w|AT&T 5418 132 cols, - cols#132, - is1=\E[?3h, use=att5418, - -att4420|tty4420|teletype 4420, - OTbs, da, db, eo, msgr, ul, xon, - cols#80, lines#24, lm#72, - bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s, - kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH, - kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET, - lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~, - rmul=\EZ, smdc@, smso=\E}, smul=\E\\, - -# The following is a terminfo entry for the Teletype 4424 -# asynchronous keyboard-display terminal. It supports -# the vi editor. The terminal must be set up as follows, -# -# HIGHLIGHT DEFINITION 3-TONE -# DISPLAY FUNCTION GROUP III -# -# The second entry below provides limited (a la adm3a) -# operation under GROUP II. -# -# This must be used with DISPLAY FUNCTION GROUP I or III -# and HIGHLIGHT DEFINITION 3-TONE -# The terminal has either bold or blink, depending on options -# -# (att4424: commented out =\E[1m, we don't need bright locked on -- esr) -att4424|tty4424|teletype 4424, - OTbs, am, xon, - cols#80, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\EB, cuf=\E[%p1%dC, cuf1=\EC, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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=^J, is2=\E[20l\E[?7h, - kbs=^H, kclr=\EJ, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, - khome=\E[H, nel=\EE, rev=\E}, ri=\ET, rmacs=\E(B, rmso=\E~, - rmul=\EZ, - sgr=\E[%?%p1%t7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p6%p4%|%t;5%;%?%p5%t;0%;m, - sgr0=\EX\E~\EZ\E4\E(B, smacs=\E(0, smso=\E}, smul=\E\\, - tbc=\EF, - -att4424-1|tty4424-1|teletype 4424 in display function group I, - kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@, - use=att4424, - -# This entry is not one of AT&T's official ones, it was translated from the -# 4.4BSD termcap file. The highlight strings are different from att4424. -# I have no idea why this is -- older firmware version, maybe? -# The following two lines are the comment originally attached to the entry: -# This entry appears to avoid the top line - I have no idea why. -# From: jwb Wed Mar 31 13:25:09 1982 remote from ihuxp -att4424m|tty4424m|teletype 4424M, - am, da, db, mir, - cols#80, it#8, lines#23, - bel=^G, clear=\E[2;H\E[J, cr=^M, cub1=^H, cud1=^J, 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=^J, ip=$<2/>, - is2=\E[m\E[2;24r, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, khome=\E[H, nel=^M^J, ri=\ET, rmso=\E[m, rmul=\E[m, - sgr0=\E[m, smso=\E[7m, smul=\E[4m, - -# The Teletype 5425 is really version 2 of the Teletype 5420. It -# is quite similar, except for some minor differences. No page -# mode, for example, so all of the sequences used above have -# to change back to what's being used for the 5410. Many of the -# option settings have changed their numbering as well. -# -# This has been tested on a preliminary model. -# -# (att5425: added / based on the init string -- esr) -att5425|tty5425|att4425|AT&T 4425/5425, - am, da, db, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - clear=\E[H\E[J, cnorm=\E[12;0j, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[J, - el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, - hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dE, - invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kclr=\E[J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, - kdl1=\E[M, kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, - kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, - kf8=\EOj, khome=\E[H, kich1=\E[4h, kil1=\E[L, kind=\E[T, - kri=\E[S, ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i, - nel=^M^J, - pfx=\E[%p1%d;%p2%l%02dq F%p1%1d %p2%s, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmam=\E[?7l, - rmir=\E[4l, rmkx=\E[21;0j\E[25;1j\212, rmln=\E|, - rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH, - vpa=\E[%p1%{1}%+%dd, - -att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels, - smkx=\E[21;1j\E[25;4j\Eent, use=att4425, - -att5425-w|att4425-w|tty5425-w|teletype 4425/5425 in 132 column mode, - cols#132, lm#54, wsl#97, - is1=\E[?3h$<100>, use=tty5425, - -# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:. -# I also added / -- esr) -att4426|tty4426|teletype 4426S, - am, da, db, xon, - 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=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EP, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H, - hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^, - il=\E[%p1%dL, il1=\EL, ind=^J, indn=\E[%p1%dS, - is1=\Ec\E[?7h, is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, - kclr=\E[2J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - 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=^M^J, rc=\E8, rev=\E[7m, ri=\ET, rin=\E[%p1%dT, - 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, - -# Terminfo entry for the AT&T 510 A Personal Terminal -# Function keys 9 - 16 are available only after the -# screen labeled (soft keys/action blocks) are labeled. Function key -# 9 corresponds to the leftmost touch target on the screen, -# function key 16 corresponds to the rightmost. -# -# This entry is based on one done by Ernie Rice at Summit, NJ and -# changed by Anne Gallup, Skokie, IL, ttrdc!anne -att510a|bct510a|AT&T 510A Personal Terminal, - am, mir, msgr, xenl, xon, - cols#80, lh#2, lines#24, lw#7, nlab#8, - acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, - dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, - el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, ht=^I, - hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, 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, 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, - 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, - 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, tbc=\E[3g, - -# Terminfo entry for the AT&T 510 D Personal Terminal -# Function keys 9 through 16 are accessed by bringing up the -# system blocks. -# Function key 9 corresponds to the leftmost touch target on the screen, -# function key 16 corresponds to the rightmost. -# -# There are problems with soft key labeling. These are due to -# strangenesses in the native terminal that are impossible to -# describe in a terminfo. -att510d|bct510d|AT&T 510D Personal Terminal, - am, da, db, mir, msgr, xenl, xon, - cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8, - acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - clear=\E[H\E[J, cnorm=\E[11;3|, cr=^M, cub=\E[%p1%dD, - cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, - el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, - hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, - invis=\E[8m, 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, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|, - rmln=\E<, rmso=\E[m, rmul=\E[m, 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?, smso=\E[7m, smul=\E[4m, - smxon=\E[29;0|, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, - -# (att500: I merged this with the att513 entry, att500 just used att513 -- esr) -att500|att513|AT&T 513 using page mode, - am, chts, mir, msgr, xenl, xon, - cols#80, lh#2, lines#24, lw#8, nlab#8, - acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, - clear=\E[H\E[J, cnorm=\E[11;0|, cr=^M, - csr=%i\E[%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[11;1|, dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)1, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, - hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, - indn=\E[%p1%dE, invis=\E[8m, - 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, - kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK, - kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ, - kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY, - kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw, - kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, - kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent, - kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm, - khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi, - kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, - kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, - kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB, - ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, ll=\E#2, - mc0=\E[?98l\E[0i, mc4=\E[?98l\E[?8i, mc5=\E[?98l\E[?4i, - nel=\EE, - pfkey=\E[%p1%d;%p2%l%d;3;0p F%p1%d %p2%s, - pfloc=\E[%p1%d;%p2%l%d;2;0p F%p1%d %p2%s, - pfx=\E[%p1%d;%p2%l%d;1;0p F%p1%d %p2%s, - pln=\E[%p1%dp%p2%:-16s, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, ri=\EM, - rin=\E[%p1%dF, rmacs=^O, rmir=\E[4l, - rmkx=\E[19;0|\E[21;1|\212, rmln=\E<, rmso=\E[m, - rmul=\E[m, - rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0|\E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l, - rs2=\E[5;0|, sc=\E7, - 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%;, - sgr0=\E[m\017, smacs=^N, smir=\E[4h, - smkx=\E[19;1|\E[21;4|\Eent, smln=\E?, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, - -# 01-07-88 -# printer must be set to EMUL ANSI to accept ESC codes -# stops at top margin -# sets cpi 10,lpi 6,form 66,left 1,right 132,top 1,bottom 66,font -# and alt font ascii,wrap on,tabs cleared -# disables newline on LF,Emphasized off -# The capability sets form length -att5310|att5320|AT&T Model 53210 or 5320 matrix printer, - xhpa, xvpa, - bufsz#8192, cols#132, cps#120, it#8, lines#66, orc#10, - orhi#100, orl#12, orvi#72, - cpi=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w%e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O%t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t\E[8w%;, - cr=^M, - csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfinnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1%{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench%e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1%{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%{12}%=%tsecurity%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmosaic%;, - cud=\E[%p1%de, cud1=^J, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM, - ff=^L, hpa=\E[%p1%d`, ht=^I, is1=\Ec, is2=\E[20l\r, - lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e%p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;, - rshm=\E[m, - scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1%{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6}%=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t\E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t\E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t\E(}%;, - smgbp=\E[;%p1%dr, smglp=\E[%{1}%p1%+%ds, - smgrp=\E[;%{1}%p1%+%ds, smgtp=\E[%p1%dr, sshm=\E[5m, - u0=\E[%p1%dt, vpa=\E[%p1%dd, - -# Teletype 5620, firmware version 1.1 (8;7;3) or earlier from BRL -# The following SET-UP modes are assumed for normal operation: -# CR_DEF=CR NL_DEF=INDEX DUPLEX=FULL -# Other SET-UP modes may be set for operator convenience or communication -# requirements. This termcap description is for the Resident Terminal Mode. -# No delays specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# The BRL entry also said: UNSAFE :ll=\E[70H: -att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs, - am, xon, - cols#88, it#8, lines#70, vt#3, - bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, indn=\E[%p1%dS, kbs=^H, kclr=\E[2J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - kll=\E[70;1H, nel=^M^J, rc=\E8, ri=\E[T, rin=\E[%p1%dT, - rs1=\Ec, sc=\E7, - -# 5620 terminfo (2.0 or later ROMS with char attributes) -# The following SET-UP modes are assumed for normal operation: -# DUPLEX=FULL GEN_FLOW=ON NEWLINE=INDEX RETURN=CR -# Other SET-UP modes may be set for operator convenience or communication -# requirements. This termcap description is for Resident Terminal Mode. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# assumptions: (scroll forward one line) is only done at screen bottom -# Be aware that older versions of the dmd have a firmware bug that affects -# parameter defaulting; for this terminal, the 0 in \E[0m is not optional. -# is from an otherwise inferior BRL for this terminal. That entry -# also has =\E[70H commented out and marked unsafe. -# For more, see the 5620 FAQ maintained by David Breneman . -att5620|dmd|tty5620|ttydmd|5620|5620 terminal 88 columns, - OTbs, am, msgr, npc, xon, - cols#88, it#8, lines#70, - bel=^G, bold=\E[2m, clear=\E[H\E[J, cr=^M, cub1=^H, - cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=^J, - pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, rev=\E[7m, ri=\E[T, - rin=\E[%p1%dT, rmso=\E[0m, rmul=\E[0m, rs1=\Ec, sc=\E7, - sgr0=\E[0m, smso=\E[7m, smul=\E[4m, -att5620-24|tty5620-24|dmd-24|teletype dmd 5620 in a 24x80 layer, - lines#24, use=att5620, -att5620-34|tty5620-34|dmd-34|teletype dmd 5620 in a 34x80 layer, - lines#34, use=att5620, -# 5620 layer running the "S" system's downloaded graphics handler: -att5620-s|tty5620-s|layer|vitty|5620 S layer, - OTbs, OTpt, am, - cols#80, it#8, lines#72, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED, - el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=^J, kbs=^H, kclr=\E[2J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - kll=\E[70;1H, - -# Entries for thru refer to the shifted system pf keys. -# -# Entries for thru refer to the alternate keypad mode -# keys: = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER -att605|AT&T 605 80 column 102key keyboard, - am, eo, xon, - cols#80, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, - dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K, el1=\E[1K, fsl=\E8, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il1=\E[L, ind=^J, invis=\E[8m, - is1=\E[8;0|\E[?\E[13;20l\E[?\E[12h, is2=\E[m\017, - kLFT=\E[ A, kRIT=\E[ @, kbs=^H, kcbt=\E[Z, kclr=\E[2J, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, - kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq, - kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, - kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, - kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, - kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, - kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, - kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, - kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, - kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, - kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@, - kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H, - mc4=\E[?4i, 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, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m, - rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016, - smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m, - tsl=\E7\E[25;%i%p1%dx, -att605-pc|ATT 605 in pc term mode, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - cbt=\E[Z, cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A, - dch1=\E[P, dl1=\E[M, ich1=\E[@, il1=\E[L, kcbt=\E[Z, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, - kdl1=\E[M, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N, - kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, - kf9=\E[U, khome=\E[H, kich1=\E[@, knp=\E[G, kpp=\E[I, - rmsc=400\E[50;0|, smsc=250\E[?11l\E[50;1|, xoffc=g, - xonc=e, use=att605, -att605-w|AT&T 605-w 132 column 102 key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0, - use=att605, -# (att610: I added / based on the init string. I also -# added and because the BSD file says the att615s have them, -# and the 615 is like a 610 with a big keyboard, and most of their other -# smart terminals support the same sequence -- esr) -att610|AT&T 610; 80 column; 98key keyboard, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, - indn=\E[%p1%dS, invis=\E[8m, - is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0, - is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H, - kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, - kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, - kind=\E[S, kri=\E[T, ll=\E[24H, mc4=\E[?4i, 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, - ri=\EM, rin=\E[%p1%dT, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, - rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7, - 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[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx, -att610-w|AT&T 610; 132 column; 98key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att610, - -att610-103k|AT&T 610; 80 column; 103key keyboard, - kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, - kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, - kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, - kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, - kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, - kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, - kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M, - kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf9@, kfnd=\EOx, - khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, kmsg=\EOl, - knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V, - kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq, - krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo, - kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610, -att610-103k-w|AT&T 610; 132 column; 103key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att610-103k, -att615|AT&T 615; 80 column; 98key keyboard, - kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, - kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, - kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS, - kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, - kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, - kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, - kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610, -att615-w|AT&T 615; 132 column; 98key keyboard, - kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, - kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, - kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS, - kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, - kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, - kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, - kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w, -att615-103k|AT&T 615; 80 column; 103key keyboard, - kLFT=\E[ A, kRIT=\E[ @, use=att610-103k, -att615-103k-w|AT&T 615; 132 column; 103key keyboard, - kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w, -# (att620: I added / based on the init string and -# / from a BSD termcap -- esr) -att620|AT&T 620; 80 column; 98key keyboard, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, - indn=\E[%p1%dS, invis=\E[8m, - is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h, - is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, - kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, - kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE, - kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI, - kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, - kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ, - kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy, - kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf, - kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp, - kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, - kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H, - mc4=\E[?4i, 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, - ri=\EM, rin=\E[%p1%dT, rmacs=\E(B\017, rmam=\E[?7l, - rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m, - rs2=\Ec\E[?3l, sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h, - smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m, - tsl=\E7\E[25;%i%p1%dx, -att620-w|AT&T 620; 132 column; 98key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att620, -att620-103k|AT&T 620; 80 column; 103key keyboard, - kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, - kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, - kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, - kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, - kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, - kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, - kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=^M, - kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@, - kf18@, kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, kf25@, kf26@, kf27@, - kf28@, kf29@, kf30@, kf31@, kf32@, kf33@, kf34@, kf35@, kf36@, kf37@, - kf38@, kf39@, kf40@, kf41@, kf42@, kf43@, kf44@, kf45@, kf46@, kf9@, - kfnd=\EOx, khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, - kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, - kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, - kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, - ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620, - -att620-103k-w|AT&T 620; 132 column; 103key keyboard, - cols#132, wsl#132, - is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, - use=att620-103k, - -# AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal -# The following SETUP modes are assumed for normal operation: -# Local_Echo=Off Gen_Flow=On Return=CR Received_Newline=LF -# Font_Size=Large Non-Layers_Window_Cols=80 -# Non-Layers_Window_Rows=60 -# Other SETUP modes may be set for operator convenience or communication -# requirements. Some capabilities assume a printer attached to the Aux EIA -# port. This termcap description is for the Fixed Non-Layers Window. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# (att630: added , and from a BSD termcap file -- esr) -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, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, indn=\E[%p1%dS, is2=\E[m, - kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, kent=^M, - 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, khome=\E[H, kich1=\E[@, kil1=\E[L, mc4=\E[?4i, - mc5=\E[?5i, nel=^M^J, pfx=\E[%p1%d;%p2%l%dq%p2%s, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmir=\E[4l, rmso=\E[m, - rmul=\E[m, rs2=\Ec, sc=\E7, - sgr=\E[0%?%p2%t;4%;%?%p1%p3%|%p4%|%p5%|%t;7%;m, - sgr0=\E[m, smir=\E[4h, smso=\E[7m, smul=\E[4m, -att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines, - lines#24, use=att630, - -# This is the att700 entry for 700 native emulation of the AT&T 700 -# terminal. Comments are relative to changes from the 605V2 entry and -# att730 on which the entry is based. Comments show the terminfo -# capability name, termcap name, and description. -# -# Here is what's going onm in the init string: -# ESC [ 50;4| set 700 native mode (really is 605) -# x ESC [ 56;ps| set lines to 24: ps=0; 40: ps=1 (plus status line) -# ESC [ 53;0| set GenFlow to Xon/Xoff -# ESC [ 8 ;0| set CR on NL -# x ESC [ ? 3 l/h set workspace: 80 col(l); 132 col(h) -# ESC [ ? 4 l jump scroll -# ESC [ ? 5 l/h video: normal (l); reverse (h) -# ESC [ ?13 l Labels on -# ESC [ ?15 l parity check = no -# ESC [ 13 l monitor mode off -# ESC [ 20 l LF on NL (not CRLF on NL) -# ESC [ ? 7 h autowrap on -# ESC [ 12 h local echo off -# ESC ( B GO = ASCII -# ESC ) 0 G1 = Special Char & Line Drawing -# ESC [ ? 31 l Set 7 bit controls -# -# Note: Most terminals, especially the 600 family use Reverse Video for -# standout mode. DEC also uses reverse video. The VT100 uses bold in addition -# Assume we should stay with reverse video for 70.. However, the 605V2 exits -# standout mode with \E[m (all normal attributes). The 730 entry simply -# exits reverse video which would leave other current attributes intact. It -# was assumed the 730 entry to be more correct so rmso has changed. The -# 605V2 has no sequences to turn individual attributes off, thus its setting -# and the rmso/smso settings from the 730. -# -# Note: For the same reason as above in rmso I changed exit under-score mode -# to specifically turn off underscore, rather than return to all normal -# attributes -# -# Note: The following pkey_xmit is taken from the 605V2 which contained the -# capability as pfxl. It was changed here to pfx since pfxl -# will only compile successfully with Unix 4.0 tic. Also note that pfx only -# allows strings to be parameters and label values must be programmed as -# constant strings. Supposedly the pfxl of Version 4.0 allows both labels -# and strings to be parameters. The 605V2 pfx entry should be examined later -# in this regard. For reference the 730 pfxl entry is shown here for comparison -# 730 pfx entry: -# pfxl=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq\s\s\s -# SYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s, -# -# (for 4.0 tic) -# pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, -# -# (for <4.0 tic) -# pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, -# -# From the AT&T 705 Multi-tasking terminal user's guide Page 8-8,8-9 -# -# Port1 Interface -# -# modular 10 pin Connector -# Left side Right side -# Pin 1 2 3 4 5 6 7 8 9 10 -# -# Key (notch) at bottom -# -# Pin 1 DSR -# 3 DCD -# 4 DTR -# 5 Sig Ground -# 6 RD -# 7 SD -# 8 CTS -# 9 RTS -# 10 Frame Ground -# -# The manual is 189 pages and is loaded with details about the escape codes, -# etc..... Available from AT&T CIC 800-432-6600... -# ask for Document number 999-300-660.. -# -att700|AT&T 700 24x80 column display w/102key keyboard, - am, eslok, hs, mir, msgr, xenl, xon, - cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4, - fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m, - 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[ @, kbs=^H, kcbt=\E[Z, - kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, - kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, - kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, - kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, - kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq, - kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu, - kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu, - kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, - kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, - kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H, - mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE, - pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, - pln=\E[%p1%d;0;0;0q%p2%:-16.16s, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, 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|, sc=\E7, - 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, smso=\E[7m, - smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g, - tsl=\E7\E[99;%i%p1%dx, - -# This entry was modified 3/13/90 by JWE. -# fixes include additions of , correcting , and modification -# of . (See comments below) -# att730 has status line of 80 chars -# These were commented out: , , -# the and up keys are used for shifted system Fkeys -# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is -# currently the same as (unshifted HOME or \E[H). On the 102, 102+1 -# and 122 key keyboards, the 730's translation is \E[2J. For consistency -# has been commented out. The user can uncomment if using the -# 102, 102+1, or 122 key keyboards -# kHOM=\E[2J, -# (att730: I added / based on the init string -- esr) -att730|AT&T 730 windowing terminal, - am, da, db, eslok, hs, mir, msgr, npc, xenl, xon, - cols#80, it#8, lh#2, lines#60, lm#0, lw#8, nlab#24, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h\E[?12l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8, - home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, - ind=\ED, invis=\E[8m, - is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B, - is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H, - kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, - kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw, - kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{, - kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD, - kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH, - kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ, - kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf, - kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ, - kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg, - kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, - kich1=\E[@, kil1=\E[L, kind=\E[S, kri=\E[T, - mc0=\E[?19h\E[0i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE, - pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq SYS F%p1%:-2d %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, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, 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, sc=\E7, - 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, smso=\E[7m, smul=\E[4m, smxon=\E[?21h, - swidm=\E#6, tsl=\E7\E[;%i%p1%dx, -att730-41|730MTG-41|AT&T 730-41 windowing terminal Version, - lines#41, use=att730, -att730-24|730MTG-24|AT&T 730-24 windowing terminal Version, - lines#24, use=att730, -att730r|730MTGr|AT&T 730 rev video windowing terminal Version, - flash=\E[?5l$<200>\E[?5h, - is1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B, - use=att730, -att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version, - lines#41, use=att730r, -att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version, - lines#24, use=att730r, - -# The following represents the screen layout along with the associated -# bezel buttons for the 5430/pt505 terminal. The "kf" designations do -# not appear on the screen but are shown to reference the bezel buttons. -# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate -# position relative to the screen. -# -# -# -# +----------------------------------------------------------------+ -# | | -# XXXX | kf0 kf24 | XXXX -# | | -# | | -# XXXX | kf1 kf23 | XXXX -# | | -# | | -# XXXX | kf2 kf22 | XXXX -# | | -# | | -# XXXX | kf3 kf21 | XXXX -# | | -# | | -# XXXX | kf4 kf20 | XXXX -# | | -# | | -# XXXX | kf5 kf19 | XXXX -# | | -# | | -# XXXX | kf6 kf18 | XXXX -# | | -# | | -# XXXX | | XXXX -# | | -# | | -# +----------------------------------------------------------------+ -# -# XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX -# -# Note: XXXX represents the screen buttons -# CMD REDRAW -# -# MAIL -# -# version 1 note: -# The character string sent by key 'kf26' may be user programmable -# to send either \E[16s, or \E[26s. -# The character string sent by key 'krfr' may be user programmable -# to send either \E[17s, or \E[27s. -# -# Depression of the "CMD" key sends \E! (kcmd) -# Depression of the "MAIL" key sends \E[26s (kf26) -# "REDRAW" same as "REFRESH" (krfr) -# -# "kf" functions adds carriage return to output string if terminal is in -# 'new line' mode. -# -# The following are functions not covered in the table above: -# -# Set keyboard character (SKC): \EPn1;Pn2w -# Pn1= 0 Back Space key -# Pn1= 1 Break key -# Pn2= Program char (hex) -# -# Screen Definition (SDF): \E[Pn1;Pn2;Pn3;Pn4;Pn5t -# Pn1= Window number (1-39) -# Pn2-Pn5= Y;X;Y;X coordinates -# -# Screen Selection (SSL): \E[Pnu -# Pn= Window number -# -# Set Terminal Modes (SM): \E[Pnh -# Pn= 3 Graphics mode -# Pn= > Cursor blink -# Pn= < Enter new line mode -# Pn= = Enter reverse insert/replace mode -# Pn= ? Enter no scroll mode -# -# Reset Terminal Mode (RM): \E[Pnl -# Pn= 3 Exit graphics mode -# Pn= > Exit cursor blink -# Pn= < Exit new line mode -# Pn= = Exit reverse insert/replace mode -# Pn= ? Exit no scroll mode -# -# Screen Status Report (SSR): \E[Pnp -# Pn= 0 Request current window number -# Pn= 1 Request current window dimensions -# -# Device Status Report (DSR): \E[6n Request cursor position -# -# Call Status Report (CSR): \E[Pnv -# Pn= 0 Call failed -# Pn= 1 Call successful -# -# Transparent Button String (TBS): \E[Pn1;Pn2;Pn3;{string -# Pn1= Button number to be loaded -# Pn2= Character count of "string" -# Pn3= Key mode being loaded: -# 0= Unshifted -# 1= Shifted -# 2= Control -# String= Text string (15 chars max) -# -# Screen Number Report (SNR): \E[Pnp -# Pn= Screen number -# -# Screen Dimension Report (SDR): \E[Pn1;Pn2r -# Pn1= Number of rows available in window -# Pn2= Number of columns available in window -# -# Cursor Position Report (CPR): \E[Pn1;Pn2R -# Pn1= "Y" Position of cursor -# Pn2= "X" Position of cursor -# -# Request Answer Back (RAB): \E[c -# -# Answer Back Response (ABR): \E[?;*;30;VSV -# *= 0 No printer available -# *= 2 Printer available -# V= Software version number -# SV= Software sub version number -# (printer-available field not documented in v1) -# -# Screen Alignment Aid: \En -# -# Bell (lower pitch): \E[x -# -# Dial Phone Number: \EPdstring\ -# string= Phone number to be dialed -# -# Set Phone Labels: \EPpstring\ -# string= Label for phone buttons -# -# Set Clock: \EPchour;minute;second\ -# -# Position Clock: \EPsY;X\ -# Y= "Y" coordinate -# X= "X" coordinate -# -# Delete Clock: \Epr\ -# -# Programming The Function Buttons: \EPfPn;string\ -# Pn= Button number (00-06, 18-24) -# (kf00-kf06, kf18-kf24) -# string= Text to sent on button depression -# -# The following in version 2 only: -# -# Request For Local Directory Data: \EPp12;\ -# -# Local Directory Data to host: \EPp11;LOCAL...DIRECTORY...DATA\ -# -# Request for Local Directory Data in print format: \EPp13;\ -# -# Enable 'Prt on Line' mode: \022 (DC2) -# -# Disable 'Prt on Line' mode: \024 (DC4) -# - -# 05-Aug-86: -# The following Terminfo entry describes functions which are supported by -# the AT&T 5430/pt505 terminal software version 2 and later. -att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal, - am, xon, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, - cnorm=\E[>l, cr=^M, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[>h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E[2K, home=\E[H, ht=^I, - il=\E[%p1%dL, il1=\E[L, ind=^J, - is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[l\E[=l\E[?l, - kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s, - kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s, - kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s, - 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, - -# The following Terminfo entry describes functions which are supported by -# the AT&T 5430/pt505 terminal software version 1. -att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines, - lines#24, - mc4@, mc5@, rc@, rmam@, sc@, smam@, use=att505, -tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines, - lines#22, use=att505, -# -#### ------------------ TERMINFO FILE CAN BE SPLIT HERE --------------------- -# This cut mark helps make life less painful for people running ncurses tic -# on machines with relatively little RAM. The file can be broken in half here -# cleanly and compiled in sections -- no `use' references cross this cut -# going forward. -# - -#### Ampex (Dialogue) -# -# Yes, these are the same people who are better-known for making audio- and -# videotape. I'm told they are located in Redwood City, CA. -# - -# From: Fri Sep 11 22:38:32 1981 -# (ampex80: some capabilities merged in from SCO's entry -- esr) -ampex80|a80|d80|dialogue|dialogue80|ampex dialogue 80, - OTbs, am, bw, ul, - cols#80, it#8, lines#24, - bel=^G, cbt=\EI, clear=\E*$<75>, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER$<5*>, ed=\Ey, el=\Et, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE$<5*>, ind=^J, is2=\EA, rmso=\Ek, rmul=\Em, - smso=\Ej, smul=\El, tbc=\E3, -# This entry was from somebody anonymous, Tue Aug 9 20:11:37 1983, who wrote: -ampex175|ampex d175, - am, - cols#80, lines#24, - bel=^G, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, home=^^, ich1=\EQ, il1=\EE, ind=^J, - is2=\EX\EA\EF, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, - kdch1=\EW, kdl1=\ER, khome=^^, kich1=\EQ, kil1=\EE, ll=^^^K, - rmcup=\EF, rmso=\Ek, rmul=\Em, smcup=\EN, smso=\Ej, smul=\El, -# No backspace key in the main QWERTY cluster. Fortunately, it has a -# NEWLINE/PAGE key just above RETURN that sends a strange single-character -# code. Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS -# mode), this key can be used as the erase key; I find I like this. Because -# some people and some systems may not, there is another termcap ("ampex175") -# that suppresses this little eccentricity by omitting the relevant capability. -ampex175-b|ampex d175 using left arrow for erase, - kbs=^_, use=ampex175, -# From: Richard Bascove -# (ampex210: removed obsolete ":kn#10:" -- esr) -ampex210|a210|ampex a210, - OTbs, am, hs, xenl, - cols#80, it#8, lines#24, xmc#1, - cbt=\EI, clear=\E*, cub1=^H, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, flash=\EU\EX\EU\EX\EU\EX\EU\EX, - fsl=\E.2, home=^^, ht=^I, ich1=\EQ, - if=/home/martino/avrdude-build-script/objdir/share/tabset/std, il1=\EE, invis@, - is2=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En, kcub1=^H, - kcud1=^V, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, - kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, - kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, khome=^^, - tsl=\E.0\Eg\E}\Ef, use=adm+sgr, -# (ampex219: I added / based on the init string, added -# from ampex219w, added =\E[?3l, irresistibly suggested by , -# and moved the padding to be *after* the caps -- esr) -ampex219|ampex-219|amp219|Ampex with Automargins, - hs, xenl, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, cbt=\E[Z, - clear=\E[H\E[2J$<50>, cnorm=\E[?3l, cr=^M, - csr=%i\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, - cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>, - cuu1=\E[A$<2>, cvvis=\E[?3h, dim=\E[1m, ed=\E[J$<50>, - el=\E[K$<3>, home=\E[H, ht=^I, ind=^J, - is2=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~, - kf1=\E[7~, kf2=\E[8~, kf3=\E[9~, kf4=\E[10~, kf5=\E[11~, - kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H, - rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>, - rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h, - smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>, -ampex219w|ampex-219w|amp219w|Ampex 132 cols, - cols#132, lines#24, - bel=^G, cr=^M, cud1=^J, ind=^J, - is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219, -# (ampex232: removed , no file and no --esr) -ampex232|ampex-232|Ampex Model 232, - am, - cols#80, lines#24, xmc#1, - cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET, - flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>, - invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L, - kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, - kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, - kf9=^AI\r, khome=^^, use=adm+sgr, -# (ampex: removed , no file and no -- esr) -ampex232w|Ampex Model 232 / 132 columns, - cols#132, lines#24, - is2=\E\034Eg\El, use=ampex232, - -#### Ann Arbor (aa) -# -# Ann Arbor made dream terminals for hackers -- large screen sizes and huge -# numbers of function keys. At least some used monitors in portrait mode, -# allowing up to 76-character screen heights! They were reachable at: -# -# Ann Arbor Terminals -# 6175 Jackson Road -# Ann Arbor, MI 48103 -# (313)-663-8000 -# -# But in 1996 the phone number reaches some kitschy retail shop, and Ann Arbor -# can't be found on the Web; I fear they're long dead. R.I.P. -# - - -# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs. -# Highly modified 6/22 by Mike O'Brien. -# split out into several for the various screen sizes by dave-yost@rand -# Modifications made 3/82 by Mark Horton -# Modified by Tom Quarles at UCB for greater efficiency and more diversity -# status line moved to top of screen, removed 5/82 -# Some unknown person at SCO then hacked the init strings to make them more -# efficient. -# -# assumes the following setup: -# A menu: 0000 1010 0001 0000 -# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 -# C menu: 56 66 0 0 9600 0110 1100 -# D menu: 0110 1001 1 0 -# -# Briefly, the settings are for the following modes: -# (values are for bit set/clear with * indicating our preference -# and the value used to test these termcaps) -# Note that many of these settings are irrelevent to the terminfo -# and are just set to the default mode of the terminal as shipped -# by the factory. -# -# A menu: 0000 1010 0001 0000 -# Block/underline cursor* -# blinking/nonblinking cursor* -# key click/no key click* -# bell/no bell at column 72* -# -# key pad is cursor control*/key pad is numeric -# return and line feed/return for key * -# repeat after .5 sec*/no repeat -# repeat at 25/15 chars per sec. * -# -# hold data until pause pressed/process data unless pause pressed* -# slow scroll/no slow scroll* -# Hold in area/don't hold in area* -# functions keys have default*/function keys disabled on powerup -# -# show/don't show position of cursor during page transmit* -# unused -# unused -# unused -# -# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 -# Baud rate (9600*) -# -# 2 bits of parity - 00=odd,01=even*,10=space,11=mark -# 1 stop bit*/2 stop bits -# parity error detection off*/on -# -# keyboard local/on line* -# half/full duplex* -# disable/do not disable keyboard after data transmission* -# -# transmit entire page/stop transmission at cursor* -# transfer/do not transfer protected characters* -# transmit all characters/transmit only selected characters* -# transmit all selected areas/transmit only 1 selected area* -# -# transmit/do not transmit line separators to host* -# transmit/do not transmit page tab stops tabs to host* -# transmit/do not transmit column tab stop tabs to host* -# transmit/do not transmit graphics control (underline,inverse..)* -# -# enable*/disable auto XON/XOFF control -# require/do not require receipt of a DC1 from host after each LF* -# pause key acts as a meta key/pause key is pause* -# unused -# -# unused -# unused -# unused -# unused -# -# XON character (17*) -# XOFF character (19*) -# -# C menu: 56 66 0 0 9600 0110 1100 -# number of lines to print data on (printer) (56*) -# -# number of lines on a sheet of paper (printer) (66*) -# -# left margin (printer) (0*) -# -# number of pad chars on new line to printer (0*) -# -# printer baud rate (9600*) -# -# printer parity: 00=odd,01=even*,10=space,11=mark -# printer stop bits: 2*/1 -# print/do not print guarded areas* -# -# new line is: 01=LF,10=CR,11=CRLF* -# unused -# unused -# -# D menu: 0110 1001 1 0 -# LF is newline/LF is down one line, same column* -# wrap to preceding line if move left from col 1*/don't wrap -# wrap to next line if move right from col 80*/don't wrap -# backspace is/is not destructive* -# -# display*/ignore DEL character -# display will not/will scroll* -# page/column tab stops* -# erase everything*/erase unprotected only -# -# editing extent: 0=display,1=line*,2=field,3=area -# -# unused -# - -annarbor4080|aa4080|ann arbor 4080, - OTbs, am, - cols#80, lines#40, - bel=^G, clear=\014$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=^_, - cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t%{12}%+%;%{64}%+%c, - cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=^J, kbs=^^, kcub1=^H, - kcud1=^J, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P, - -# Strange Ann Arbor terminal from BRL -aas1901|Ann Arbor K4080 w/S1901 mod, - am, - cols#80, lines#40, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^N, - home=^K, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, ll=^O\0c, - nel=^M^J, - -# If you're using the GNU termcap library, add -# :cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp: -# to these capabilities. This is the nonstandard GNU termcap scrolling -# capability, arguments are: -# 1. Total number of lines on the screen. -# 2. Number of lines above desired scroll region. -# 3. Number of lines below (outside of) desired scroll region. -# 4. Total number of lines on the screen, the same as the first parameter. -# The generic Ann Arbor entry is the only one that uses this. -aaa+unk|aaa-unk|ann arbor ambassador (internal - don't use this directly), - OTbs, am, km, mc5i, mir, xon, - cols#80, it#8, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - clear=\E[H\E[J$<156>, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, - el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, - hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL, - il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8, - is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kbs=^H, kcbt=\E[Z, - kclr=\E[J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E[P, kdl1=\E[M, kf1=\EOA, kf10=\EOJ, kf11=\EOK, - kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP, - kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT, - kf21=\EOU, kf22=\EOV, kf23=\EOW, kf24=\EOX, kf3=\EOC, - kf4=\EOD, kf5=\EOE, kf6=\EOF, kf7=\EOG, kf8=\EOH, kf9=\EOI, - khome=\E[H, kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i, - mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, - rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E\\, - rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, - sgr0=\E[m, - smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E\\, - smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%p1%{1}%+%dd, - -aaa+rv|ann arbor ambassador in reverse video, - blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m, - is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m, - rs1=\E[H\E[7m\E[J$<156>, - sgr=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m, -# Ambassador with the DEC option, for partial vt100 compatibility. -aaa+dec|ann arbor ambassador in dec vt100 mode, - acsc=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}, - csr=\E[%i%p1%d;%p2%dr, enacs=\E(0, rmacs=^N, - sgr=\E[%?%p1%p3%|%!%t7;%;%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m%?%p9%t\017%e\016%;, - smacs=^O, -aaa-18|ann arbor ambassador/18 lines, - lines#18, - is2=\E7\E[60;0;0;18p\E8, - rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p, - use=aaa+unk, -aaa-18-rv|ann arbor ambassador/18 lines+reverse video, - use=aaa+rv, use=aaa-18, -aaa-20|ann arbor ambassador/20 lines, - lines#20, - is2=\E7\E[60;0;0;20p\E8, - rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p, - use=aaa+unk, -aaa-22|ann arbor ambassador/22 lines, - lines#22, - is2=\E7\E[60;0;0;22p\E8, - rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p, - use=aaa+unk, -aaa-24|ann arbor ambassador/24 lines, - lines#24, - is2=\E7\E[60;0;0;24p\E8, - rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p, - use=aaa+unk, -aaa-24-rv|ann arbor ambassador/24 lines+reverse video, - use=aaa+rv, use=aaa-24, -aaa-26|ann arbor ambassador/26 lines, - lines#26, - is2=\E7\E[60;0;0;26p\E8, - rmcup=\E[60;0;0;26p\E[26;1H\E[K, - smcup=\E[H\E[J$<156>\E[26;0;0;26p, use=aaa+unk, -aaa-28|ann arbor ambassador/28 lines, - lines#28, - is2=\E7\E[60;0;0;28p\E8, - 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, - 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, -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, - rmcup=\E[60;1;0;30p\E[59;1H\E[K, - smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s, -aaa-s-rv-ctxt|aaa-30-s-rv-ct|ann arbor ambassador/30 lines+status+save context+reverse video, - rmcup=\E[60;1;0;30p\E[59;1H\E[K, - smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s-rv, -aaa|aaa-30|ambas|ambassador|ann arbor ambassador/30 lines, - lines#30, - is2=\E7\E[60;0;0;30p\E8, - rmcup=\E[60;0;0;30p\E[30;1H\E[K, - smcup=\E[H\E[J$<156>\E[30;0;0;30p, use=aaa+unk, -aaa-30-rv|aaa-rv|ann arbor ambassador/30 lines in reverse video, - use=aaa+rv, use=aaa-30, -aaa-30-ctxt|aaa-ctxt|ann arbor ambassador/30 lines; saving context, - rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p, - use=aaa-30, -aaa-30-rv-ctxt|aaa-rv-ctxt|ann arbor ambassador/30 lines reverse video; saving context, - rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p, - use=aaa+rv, use=aaa-30, -aaa-36|ann arbor ambassador/36 lines, - lines#36, - is2=\E7\E[60;0;0;36p\E8, - rmcup=\E[60;0;0;36p\E[36;1H\E[K, - smcup=\E[H\E[J$<156>\E[36;0;0;36p, use=aaa+unk, -aaa-36-rv|ann arbor ambassador/36 lines+reverse video, - use=aaa+rv, use=aaa-36, -aaa-40|ann arbor ambassador/40 lines, - lines#40, - is2=\E7\E[60;0;0;40p\E8, - rmcup=\E[60;0;0;40p\E[40;1H\E[K, - smcup=\E[H\E[J$<156>\E[40;0;0;40p, use=aaa+unk, -aaa-40-rv|ann arbor ambassador/40 lines+reverse video, - use=aaa+rv, use=aaa-40, -aaa-48|ann arbor ambassador/48 lines, - lines#48, - is2=\E7\E[60;0;0;48p\E8, - rmcup=\E[60;0;0;48p\E[48;1H\E[K, - smcup=\E[H\E[J$<156>\E[48;0;0;48p, use=aaa+unk, -aaa-48-rv|ann arbor ambassador/48 lines+reverse video, - use=aaa+rv, use=aaa-48, -aaa-60-s|ann arbor ambassador/59 lines+status, - eslok, hs, - lines#59, - dsl=\E7\E[60;0;0;60p\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;60p\E8, - tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk, -aaa-60-s-rv|ann arbor ambassador/59 lines+status+reverse video, - use=aaa+rv, use=aaa-60-s, -aaa-60-dec-rv|ann arbor ambassador/dec mode+59 lines+status+rev video, - use=aaa+dec, use=aaa+rv, use=aaa-60-s, -aaa-60|ann arbor ambassador/60 lines, - lines#60, - is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8, - use=aaa+unk, -aaa-60-rv|ann arbor ambassador/60 lines+reverse video, - use=aaa+rv, use=aaa-60, -aaa-db|ann arbor ambassador 30/destructive backspace, - OTbs@, - cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30, - -guru|guru-33|guru+unk|ann arbor guru/33 lines 80 cols, - lines#33, - flash=\E[>59h$<100>\E[>59l, - is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l, - rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk, -guru+rv|guru changes for reverse video, - flash=\E[>59l$<100>\E[>59h, is3=\E[>59h, -guru-rv|guru-33-rv|ann arbor guru/33 lines+reverse video, - use=guru+rv, use=guru-33, -guru+s|guru status line, - eslok, hs, - dsl=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K, fsl=\E[>51l, - rmcup=\E[255;1p\E[255;1H\E[K, smcup=, - tsl=\E[>51h\E[1;%p1%dH\E[2K, -guru-nctxt|guru with no saved context, - smcup=\E[H\E[J$<156>\E[33p\E[255;1H\E[K, use=guru, -guru-s|guru-33-s|ann arbor guru/33 lines+status, - lines#32, - is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J, - smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-24|ann arbor guru 24 lines, - cols#80, lines#24, - is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p, - use=guru+unk, -guru-44|ann arbor guru 44 lines, - cols#97, lines#44, - is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p, - use=guru+unk, -guru-44-s|ann arbor guru/44 lines+status, - lines#43, - is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J, - smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-76|guru with 76 lines by 89 cols, - cols#89, lines#76, - is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p, - use=guru+unk, -guru-76-s|ann arbor guru/76 lines+status, - cols#89, lines#75, - is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J, - smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-76-lp|guru-lp|guru with page bigger than line printer, - cols#134, lines#76, - is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p, - use=guru+unk, -guru-76-w|guru 76 lines by 178 cols, - cols#178, lines#76, - is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p, - use=guru+unk, -guru-76-w-s|ann arbor guru/76 lines+status+wide, - cols#178, lines#75, - is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J, - smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, -guru-76-wm|guru 76 lines by 178 cols with 255 cols memory, - cols#178, lines#76, - is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p, - use=guru+unk, -aaa-rv-unk|ann arbor unknown type, - lh#0, lw#0, nlab#0, - blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m, - is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m, - rs1=\E[H\E[7m\E[J, - sgr=\E[%?%p1%!%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - sgr0=\E[7m, smso=\E[m, smul=\E[4;7m, - -#### Applied Digital Data Systems (adds) -# -# ADDS itself is long gone. ADDS was bought by NCR, and the same group made -# ADDS and NCR terminals. When AT&T and NCR merged, the engineering for -# terminals was merged again. Then AT&T sold the terminal business to -# SunRiver, which later changed its name to Boundless Technologies. The -# engineers from Teletype, AT&T terminals, ADDS, and NCR (who are still there -# as of early 1995) are at: -# -# Boundless Technologies -# 100 Marcus Boulevard -# Hauppauge, NY 11788-3762 -# Vox: (800)-231-5445 -# Fax: (516)-342-7378 -# Web: http://boundless.com -# -# Their voice mail used to describe the place as "SunRiver (formerly ADDS)". -# In 1995 Boundless acquired DEC's terminals business. -# - -# Regent: lowest common denominator, works on all regents. -# (regent: renamed ":bc:" to ":le:" -- esr) -regent|Adds Regent Series, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F, cuu1=^Z, - home=\EY\s\s, ind=^J, ll=^A, -# Regent 100 has a bug where if computer sends escape when user is holding -# down shift key it gets confused, so we avoid escape. -regent100|Adds Regent 100, - xmc#1, - bel=^G, - cup=\013%p1%' '%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, - kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, - kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, - lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, - sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent, -regent20|Adds Regent 20, - bel=^G, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, ed=\Ek, el=\EK, - use=regent, -regent25|Adds Regent 25, - bel=^G, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, khome=^A, - use=regent20, -regent40|Adds Regent 40, - xmc#1, - bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf0=^B1\r, kf1=^B2\r, - kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r, - kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, - lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P, - smul=\E0`, use=regent25, -regent40+|Adds Regent 40+, - is2=\EB, use=regent40, -regent60|regent200|Adds Regent 60, - dch1=\EE, is2=\EV\EB, kdch1=\EE, kich1=\EF, krmir=\EF, - rmir=\EF, rmso=\ER\E0@\EV, smir=\EF, smso=\ER\E0P\EV, - use=regent40+, -# From: Thu Jul 9 09:27:33 1981 -# (viewpoint: added , function key, and capabilities -- esr) -viewpoint|addsviewpoint|adds viewpoint, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cnorm=\017\E0`, cr=^M, cub1=^H, cud1=^J, - cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, - cvvis=\017\E0P, dl1=\El, ed=\Ek$<16.1*>, el=\EK$<16>, - ind=^J, is2=\017\E0`, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, - kf0=^B1, kf2=^B2, kf3=^B!, kf4=^B", kf5=^B#, khome=^A, ll=^A, - rmso=^O, rmul=^O, sgr0=^O, smso=^N, smul=^N, -# Some viewpoints have bad ROMs that foo up on ^O -screwpoint|adds viewpoint with ^O bug, - cvvis@, rmso@, rmul@, smso@, smul@, use=viewpoint, - -# From: Jay S. Rouman 5 Jul 92 -# The /// strings were added by ESR from specs. -# Theory; the vp3a+ wants \E0%c to set highlights, where normal=01000000, -# underline=01100000, rev=01010000, blink=01000010,dim=01000001, -# invis=01000100 and %c is the logical or of desired attributes. -# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(. -# -# Update by TD - 2004: -# Adapted from -# http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt -# -# COMMANDS ASCII CODE -# -# Address, Absolute ESC,=,row,column -# Beep BEL -# Aux Port Enable ESC,@ -# Aux Port Disable ESC,A -# Backspace BS -# Cursor back BS -# Cursor down LF -# Cursor forward FF -# Cursor home RS -# Cursor up VT -# Cursor supress ETB -# Cursor enable CAN -# Erase to end of line ESC,T -# Erase to end of page ESC,Y -# Erase screen SUB -# Keyboard lock SI -# Keyboard unlock SO -# Read current cursor position ESC,? -# Set Attribute ESC,0,x (see below for values of x) -# Tag bit reset ESC,( -# Tag bit set ESC,) -# Transparent Print on ESC,3 -# Transparent Print off ESC,4 -# -# -# ATTRIBUTES -# -# Normal @ 0100 -# Half Intensity A 0101 -# Blinking B 0102 -# Half Intensity Blinking C 0103 -# Reverse Video P 0120 -# Reverse Video Half Intensity Q 0121 -# Reverse Video Blinking R 0122 -# Reverse Video Half Intensity -# Blinking S 0123 -# Underlined ` 0140 -# Underlined Half Intensity a 0141 -# Underlined Blinking b 0142 -# Underlined Half Intensity -# Blinking c 0143 -# Video suppress D 0104 -vp3a+|viewpoint3a+|adds viewpoint 3a+, - am, bw, - cols#80, it#8, lines#24, - blink=\E0B\E), civis=^W, clear=\E*$<80>, cnorm=^X, cr=^M, - cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dim=\E0A\E), - ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=^J, invis=\E0D\E), - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, - nel=^M^J, rev=\E0P\E), rmso=\E(, - sgr=%?%p1%p2%|%p3%|%p4%|%p5%|%p7%|%t\E0%{64}%?%p1%t%{17}%|%;%?%p2%t%{32}%|%;%?%p3%t%{16}%|%;%?%p4%t%{2}%|%;%?%p5%t%{1}%|%;%c%?%p7%tD%;\E)%e\E(%;, - sgr0=\E(, smso=\E0Q\E), smul=\E0`\E), -vp60|viewpoint60|addsvp60|adds viewpoint60, - use=regent40, -# -# adds viewpoint 90 - from cornell -# Note: emacs sends ei occasionally to insure the terminal is out of -# insert mode. This unfortunately puts the viewpoint90 IN insert -# mode. A hack to get around this is . (Also, -# - :ei=:im=: must be present in the termcap translation.) -# - indicates glitch that attributes stick to location -# - means it's safe to move in standout mode -# - : clears screen and visual attributes without affecting -# the status line -# Function key and label capabilities merged in from SCO. -vp90|viewpoint90|adds viewpoint 90, - OTbs, bw, msgr, xhp, - cols#80, lines#24, - clear=\EG\Ek, cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE, - dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I, - ich1=\EF \EF\025, ind=^J, kbs=^H, kcub1=^U, kcud1=^J, - kcuf1=^F, kcuu1=^Z, kf0=^B1\r, kf1=^B2\r, kf10=^B;\r, - kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r, - kf7=^B8\r, kf8=^B9\r, kf9=^B\:\r, khome=^A, lf0=F1, lf1=F2, - lf10=F11, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, - lf9=F10, ll=^A, rmso=\ER\E0@\EV, rmul=\ER\E0@\EV, - sgr0=\ER\E0@\EV, smso=\ER\E0Q\EV, smul=\ER\E0`\EV, -# Note: if return acts weird on a980, check internal switch #2 -# on the top chip on the CONTROL pc board. -adds980|a980|adds consul 980, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\014$<1>\013@, cr=^M, cub1=^H, cud1=^J, - cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d, - dl1=\E\017$<13>, il1=\E\016$<13>, ind=^J, kf0=\E0, kf1=\E1, - kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, - kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N, - -#### C. Itoh Electronics -# -# As of 1995 these people no longer make terminals (they're still in the -# printer business). Their terminals were all clones of the DEC VT series. -# They're located in Orange County, CA. -# - -# CIT 80 - vt-52 emulator, the termcap has been modified to remove -# the delay times and do an auto tab set rather than the indirect -# file used in vt100. -cit80|cit-80|citoh 80, - OTbs, am, - cols#80, lines#24, - clear=\E[H\EJ, cr=^M, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L, - ind=^J, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=, -# From: Tim Wood Fri Sep 27 09:39:12 PDT 1985 -# (cit101: added / based on init string, merged this with c101 -- esr) -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, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - 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, - 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, -# CIE Terminals CIT-101e from Geoff Kuenning via BRL -# The following termcap entry was created from the Callan cd100 entry. The -# last two lines (with the capabilities in caps) are used by RM-cobol to allow -# full selection of combinations of reverse video, underline, and blink. -# (cit101e: removed unknown :f0=\EOp:f1=\EOq:f2=\EOr:f3=\EOs:f4=\EOt:f5=\EOu:\ -# f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\ -# :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr) -cit101e|C. Itoh CIT-101e, - OTbs, OTpt, am, mir, msgr, - cols#80, it#8, lines#24, - acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr, - cub1=\E[D, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, - cuu1=\E[A, cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, if=/home/martino/avrdude-build-script/objdir/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, 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, -# From: David S. Lawyer, June 1997: -# The CIT 101-e was made in Japan in 1983-4 and imported by CIE -# Terminals in Irvine, CA. It was part of CITOH Electronics. In the -# late 1980's CIT Terminals went out of business. -# There is no need to use the initialization string is=... (by invoking -# tset or setterm etc.) provided that the terminal has been manually set -# up (and the setup saved with ^S) to be compatible with this termcap. To be -# compatible it should be in ANSI mode (not VT52). A set-up that -# works is to set all the manually setable stuff to factory defaults -# by pressing ^D in set-up mode. Then increse the brighness with the -# up-arrow key since the factory default will likely be dim on an old -# terminal. Then change any options you want (provided that they are -# compatible with the termcap). For my terminal I set: Screen -# Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver: -# on. I also set up mine for parity (but you may not need it). Then -# save the setup with ^S. -# (cit101e-rv: added empty to suppress a tic warning. --esr) -cit101e-rv|Citoh CIT-101e (sets reverse video), - am, eo, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, - OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[3;5v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l\E[?5h$<200/>, - home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, - 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=\177, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, nel=\EE, rc=\E8, - rev=\E[7m, ri=\EM, rin=\E[%p1%dT, rmcup=, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, rs1=\Ec\E[?7h\E[>5g, sc=\E7, - sgr0=\E[m, smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h, - smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, - u7=\E[6n, u8=\E[?6c, u9=\E[c, -cit101e-n|CIT-101e w/o am, - am@, - cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, - use=cit101e, -cit101e-132|CIT-101e with 132 cols, - cols#132, - kbs=^H, kcub1=^H, kcud1=^J, use=cit101e, -cit101e-n132|CIT-101e with 132 cols w/o am, - am@, - cols#132, - cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=^J, - use=cit101e, -# CIE Terminals CIT-500 from BRL -# The following SET-UP modes are assumed for normal operation: -# GENERATE_XON/XOFF:YES DUPLEX:FULL NEWLINE:OFF -# AUTOWRAP:ON MODE:ANSI SCREEN_LENGTH:64_LINES -# DSPLY_CNTRL_CODES?NO PAGE_WIDTH:80 EDIT_MODE:OFF -# Other SET-UP modes may be set for operator convenience or communication -# requirements. -# Hardware tabs are assumed to be set every 8 columns; they can be set up -# by the "reset", "tset", or "tabs" utilities. No delays are specified; use -# "stty ixon -ixany" to enable DC3/DC1 flow control! -# (cit500: I added / based on the init string -- esr) -cit500|CIE Terminals CIT-500, - OTbs, OTpt, mir, msgr, xon, - OTkn#10, cols#80, it#8, lines#64, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ed=\EJ, el=\EK, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, - il1=\E[L, ind=^J, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD, - kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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, rc=\E8, rev=\E[7m, - ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, - rmso=\E[m, rmul=\E[m, - rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>, - sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - -# C. Itoh printers begin here -citoh|ci8510|8510|c.itoh 8510a, - cols#80, it#8, - bold=\E!, cub1@, - is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073., - rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY, - smul=\EX, use=lpr, -citoh-pica|citoh in pica, - is1=\EN, use=citoh, -citoh-elite|citoh in elite, - cols#96, - is1=\EE, - is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089., - use=citoh, -citoh-comp|citoh in compressed, - cols#136, - is1=\EQ, - is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089\,097\,105\,113\,121\,129., - use=citoh, -# citoh has infinite cols because we don't want lp ever inserting \n\t**. -citoh-prop|citoh-ps|ips|citoh in proportional spacing mode, - cols#32767, - is1=\EP, use=citoh, -citoh-6lpi|citoh in 6 lines per inch mode, - is3=\EA, use=citoh, -citoh-8lpi|citoh in 8 lines per inch mode, - lines#88, - is3=\EB, use=citoh, - -#### Control Data (cdc) -# - -cdc456|cdc 456 terminal, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X, - el=^V, home=^Y, il1=\EL, ind=^J, - -# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick) -cdc721|CDC Viking, - OTbs, am, - cols#80, lines#24, - clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, - cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I, - kcuu1=^W, khome=^Y, -cdc721ll|CDC Vikingll, - OTbs, am, - cols#132, lines#24, - clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, - cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=^J, kcuf1=^I, - kcuu1=^W, khome=^Y, -# (cdc752: the BRL entry had :ll=\E1 ^Z: commented out -cdc752|CDC 752, - OTbs, am, bw, xhp, - cols#80, lines#24, - bel=^G, clear=\030\E1\s\s, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V, - home=\E1\s\s, ind=^J, ll=^Y, rs1=\E1 \030\002\003\017, -# CDC 756 -# The following switch/key settings are assumed for normal operation: -# 96 chars SCROLL FULL duplex not BLOCK -# Other switches may be set according to communication requirements. -# Insert/delete-character cannot be used, as the whole display is affected. -# "so" & "se" are commented out until jove handles "sg" correctly. -cdc756|CDC 756, - OTbs, am, bw, - OTkn#10, cols#80, lines#24, - bel=^G, clear=^Y^X, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, - dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=^J, - kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z, kdch1=\EI, - kdl1=\EL, ked=^X, kel=^V, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, - kf4=\EE, kf5=\EF, kf6=\EG, kf7=\EH, kf8=\Ea, kf9=\Eb, khome=^Y, - khts=^O, kich1=\EK, kil1=\EL, lf0=F1, lf1=F2, lf2=F3, lf3=F4, - lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, ll=^Y^Z, - rs1=\031\030\002\003\017, -# -# CDC 721 from Robert Viduya, Ga. Tech. via BRL. -# -# Part of the long initialization string defines the "DOWN" key to the left -# 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 -# cursor. Termcap doesn't have the capability (as far as I could tell) to -# handle the 721 in 132 column mode. -# -# (cdc721: changed :ri: to :sr: -- esr) -cdc721-esc|Control Data 721, - OTbs, OTpt, am, bw, msgr, xon, - OTkn#10, cols#80, it#8, lines#30, - bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z, - cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W, - dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW, - ich1=^^O, il1=^^R, ind=\036W =\036U, invis=^^^R[, - is2=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036\022J\036\022L\036\022N\036\022P\036\022Q\036\022\036\022\^\036\022b\036\022i\036W =\036\022Z\036\011C1-` `!k/o, - kbs=^H, kcub1=^H, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^q, - kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, kf6=^^w, kf7=^^x, - kf8=^^y, kf9=^^z, khome=^Y, ll=^B =, rev=^^D, - ri=\036W =\036V, rmir=, rmkx=^^^Rl, rmso=^^E, rmul=^], - sgr0=\017\025\035\036E\036\022\\, smir=, smkx=^^^Rk, - smso=^^D, smul=^\, tbc=^^^RY, - -#### Getronics -# -# Getronics is a Dutch electronics company that at one time was called -# `Geveke' and made async terminals; but (according to the company itself!) -# they've lost all their documentation on the command set. The hardware -# documentation suggests the terminals were actually manufactured by a -# Taiwanese electronics company named Cal-Comp. There are known -# to have been at least two models, the 33 and the 50. -# - -# The 50 seems to be a top end vt220 clone, with the addition of a higher -# screen resolution, a larger screen, at least 1 page of memory above and -# below the screen, apparently pages of memory right and left of the screen -# which can be panned, and about 75 function keys (15 function keys x normal, -# shift, control, func A, func B). It also has more setup possibilities than -# the vt220. The monitor case is dated November 1978 and the keyboard case is -# May 1982. -# -# The vt100 emulation works as is. The entry below describes the rather -# non-conformant (but more featureful) ANSI mode. -# -# From: Stephen Peterson , 27 May 1995 -visa50|geveke visa 50 terminal in ansi 80 character mode, - bw, mir, msgr, - 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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h\E[?5l, home=\E[H, - hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, - il=\E[%p1%dL, il1=\E[L, ind=^J, 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, kbs=^H, kc1=\EOR, kc3=\EOS, - kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=\177, - kdl1=\EOS, kf0=\E010, kf1=\E001, kf10=\E011, kf2=\E002, - kf3=\E003, kf4=\E004, kf5=\E005, kf6=\E006, kf7=\E007, - kf8=\E008, kf9=\E009, khome=\E[f, lf2=A delete char, - lf3=A insert line, lf4=A delete line, lf5=A clear, - lf6=A ce of/cf gn, lf7=A print, lf8=A on-line, - lf9=A funcl0=A send, nel=^M^J, rev=\E[7m, rmacs=\E[3l, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m, - rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h, - smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%i%p1%dd, - -#### Human Designed Systems (Concept) -# -# Human Designed Systems -# 400 Fehley Drive -# King of Prussia, PA 19406 -# Vox: (610)-277-8300 -# Fax: (610)-275-5739 -# Net: support@hds.com -# -# John Martin is their termcap expert. They're mostly out of -# the character-terminal business now (1995) and making X terminals. In -# particular, the whole `Concept' line described here was discontinued long -# ago. -# - -# From: Sat Jun 27 07:41:20 1981 -# Extensive changes to c108 by arpavax:eric Feb 1982 -# Some unknown person at SCO then translated it to terminfo. -# -# There seem to be a number of different versions of the C108 PROMS -# (with bug fixes in its Z-80 program). -# -# The first one that we had would lock out the keyboard of you -# sent lots of short lines (like /usr/dict/words) at 9600 baud. -# Try that on your C108 and see if it sends a ^S when you type it. -# If so, you have an old version of the PROMs. -# -# You should configure the C108 to send ^S/^Q before running this. -# It is much faster (at 9600 baud) than the c100 because the delays -# are not fixed. -# new status line display entries for c108-8p: -# - init str #3 - setup term for status display - -# set programmer mode, select window 2, define window at last -# line of memory, set bkgnd stat mesg there, select window 0. -# -# - to status line - select window 2, home cursor, erase to -# end-of-window, 1/2 bright on, goto(line#0, col#?) -# -# - from status line - 1/2 bright off, select window 0 -# -# - disable status display - set bkgnd status mesg with -# illegal window # -# -# There are probably more function keys that should be added but -# I don't know what they are. -# -# No delays needed on c108 because of ^S/^Q handshaking -# -c108|concept108|c108-8p|concept108-8p|concept 108 w/8 pages, - is3=\EU\E z"\Ev\001\177 !p\E ;"\E z \Ev \001\177p\Ep\n, - rmcup=\Ev \001\177p\Ep\r\n, use=c108-4p, -c108-4p|concept108-4p|concept 108 w/4 pages, - OTbs, eslok, hs, xon, - pb@, - acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=^M, - cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95}%>%t\001%{96}%-%;%{32}%+%c, - cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s, - ind=^J, is1=\EK\E!\E F, - is3=\EU\E z"\Ev\177 !p\E ;"\E z \Ev \001 p\Ep\n, - rmacs=\Ej\s, rmcup=\Ev \001 p\Ep\r\n, smacs=\Ej!, - smcup=\EU\Ev 8p\Ep\r\E\025, - tsl=\E z"\E?\E\005\EE\Ea %+\s, use=c100, -c108-rv|c108-rv-8p|concept 108 w/8 pages in reverse video, - rmcup=\Ev \002 p\Ep\r\n, smcup=\EU\Ev 8p\Ep\r, - use=c108-rv-4p, -c108-rv-4p|concept108rv4p|concept 108 w/4 pages in reverse video, - flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, smso=\EE, - use=c108-4p, -c108-w|c108-w-8p|concept108-w-8|concept108-w8p|concept 108 w/8 pages in wide mode, - cols#132, - is1=\E F\E", rmcup=\Ev ^A0\001D\Ep\r\n, - smcup=\EU\Ev 8\001D\Ep\r, use=c108-8p, - -# Concept 100: -# These have only window relative cursor addressing, not screen -# relative. To get it to work right here, smcup/rmcup (which -# were invented for the concept) lock you into a one page -# window for screen style programs. -# -# To get out of the one page window, we use a clever trick: -# we set the window size to zero ("\Ev " in rmcup) which the -# terminal recognizes as an error and resets the window to all -# of memory. -# -# This trick works on c100 but does not on c108, sigh. -# -# Some tty drivers use cr3 for concept, others use nl3, hence -# the delays on cr and ind below. This padding is only needed at -# 9600 baud and up. One or the other is commented out depending on -# local conventions. -# -# 2 ms padding on isn't always enough. 6 works fine. Maybe -# less than 6 but more than 2 will work. -# -# Note: can't use function keys f7-f10 because they are -# indistinguishable from arrow keys (!), also, del char and -# clear eol use xon/xoff so they probably won't work very well. -# -# Also note that we don't define insrt/del char/delline/eop/send -# because they don't transmit unless we reset them - I figured -# it was a bad idea to clobber their definitions. -# -# The sequence changes the escape character to ^^ so that -# escapes will be passed through to the printer. Only trouble -# is that ^^ won't be - ^^ was chosen to be unlikely. -# Unfortunately, if you're sending raster bits through to be -# plotted, any character you choose will be likely, so we lose. -# -# \EQ"\EY(^W (send anything from printer to host, for xon/xoff) -# cannot be # in is2 because it will hang a c100 with no printer -# if sent twice. -c100|concept100|concept|c104|c100-4p|hds concept 100, - OTbs, am, eo, mir, ul, xenl, - cols#80, lines#24, pb#9600, vt#8, - bel=^G, blink=\EC, clear=\E?\E\005$<2*>, cr=$<9>\r, - cub1=^H, cud1=^J, cuf1=\E=, - cup=\Ea%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E;, - dch1=\E\021$<16*>, dim=\EE, dl1=\E\002$<3*>, - ed=\E\005$<16*>, el=\E\025$<16>, flash=\Ek$<200>\EK, - ht=\011$<8>, il1=\E\022$<3*>, ind=^J, invis=\EH, ip=$<16*>, - is1=\EK, - is2=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo!\0\E\007!\E\010A@ \E4#\:"\E\:a\E4#;"\E\:b\E4#<"\E\:c, - is3=\Ev $<6>\Ep\n, kbs=^H, kcbt=\E', kctab=\E_, - kcub1=\E>, kcud1=\E<, kcuf1=\E=, kcuu1=\E;, kdch1=\E^Q, - kdl1=\E^B, ked=\E^C, kel=\E^S, kf1=\E5, kf2=\E6, kf3=\E7, - kf4=\E8, kf5=\E9, kf6=\E\:a, kf7=\E\:b, kf8=\E\:c, khome=\E?, - khts=\E], kich1=\E^P, kil1=\E^R, kind=\E[, knp=\E-, kpp=\E., - kri=\E\\, krmir=\E\0, mc4=\036o \E\EQ!\EYP\027, - mc5=\EQ"\EY(\027\EYD\Eo \036, prot=\EI, - rep=\Er%p1%c%p2%{32}%+%c$<.2*>, rev=\ED, - rmcup=\Ev $<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex, - rmso=\Ed, rmul=\Eg, sgr0=\EN@, - smcup=\EU\Ev 8p\Ep\r\E\025$<16>, smir=\E^P, smkx=\EX, - smso=\ED, smul=\EG, -c100-rv|c100-rv-4p|concept100-rv|c100 rev video, - cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, - smso=\EE, use=c100, -oc100|oconcept|c100-1p|old 1 page concept 100, - in, - is3@, use=c100, - -# From: Walter Skorski , 16-oct-1996. -# Lots of notes, originally inline, but ncurses doesn't grok that. -# -# am: not available in power on mode, but turned on with \E[=107;207h in -# is2=. Also, \E=124l in is2= could have been used to prevent needing -# to specify xenl:, but that would have rendered the last space on the -# last line useless. -# bw: Not available in power on mode, but turned on with \E[=107;207h in -# is2=. -# clear: Could be done with \E[2J alone, except that vi (and probably most -# other programs) assume that this also homes the cursor. -# dsl: Go to window 2, go to the beginning of the line, use a line feed to -# scroll the window, and go back to window 1. -# is2: the string may cause a warning to be issued by tic that it -# found a very long line and that it suspects that a comma is missing -# somewhere. This warning can be ignored (unless it comes up more than -# once). The initialization string contains the following commands: -# -# [Setup mode items changed from factory defaults:] -# \E)0 set alternate character set to -# graphics -# ^O set character set to default -# [In case it wasn't] -# \E[m turn off all attributes -# [In case they weren't off] -# \E[=107; cursor wrap and -# 207h character wrap on -# \E[90;3u set Fkey definitions to "transmit" -# defaults -# \E[92;3u set cursor key definitions to -# "transmit" defaults -# \E[43;1u set shift F13 to transmit... -# \177\E$P\177 -# \E[44;1u set shift F14 to transmit... -# \177\E$Q\177 -# \E[45;1u set shift F15 to transmit... -# \177\E$R\177 -# \E[46;1u set shift F16 to transmit... -# \177\E$S\177 -# \E[200;1u set shift up to transmit... -# \177\E$A\177 -# \E[201;1u set shift down to transmit... -# \177\E$B\177 -# \E[202;1u set shift right to transmit... -# \177\E$C\177 -# \E[203;1u set shift left to transmit... -# \177\E$D\177 -# \E[204;1u set shift home to transmit... -# \177\E$H\177 -# \E[212;1u set backtab to transmit... -# \177\E$I\177 -# \E[213;1u set shift backspace to transmit... -# \177\E$^H\177 -# \E[214;1u set shift del to transmit... -# "\E$\177" -# [Necessary items not mentioned in setup mode:] -# \E[2!w move to window 2 -# \E[25;25w define window as line 25 of memory -# \E[!w move to window 1 -# \E[2*w show current line of window 2 as -# status line -# \E[2+x set meta key to use high bit -# \E[;3+} move underline to bottom of character -# -# All Fkeys are set to their default transmit definitions with \E[90;3u -# in is2=. IMPORTANT: to use this terminal definition, the "quit" stty -# setting MUST be redefined or deactivated, because the default is -# contained in almost all of this terminal's Fkey strings! If for some -# reason "quit" cannot be altered, the Fkeys can, but it would be -# necessary to change ^| to ^] in all of these definitions, and add -# \E[2;029!t to is2. -# lines: is set to 24 because this terminal refuses to treat the 25th -# line normally. -# ll: Not available in power on mode, but turned on with \E[=107;207h in -# is2=. -# lm: Pointless, given that this definition locks a single screen of -# memory into view, but what the hey... -# rmso: Could use \E[1;7!{ to turn off only bold and reverse (leaving any -# other attributes alone), but some programs expect this to turn off -# everything. -# rmul: Could use \E[4!{ to turn off only underline (leaving any other -# attributes alone), but some programs expect this to turn off -# everything. -# sgr: Attributes are set on this terminal with the string \E[ followed by -# a list of attribute code numbers (in decimal, separated by -# semicolons), followed by the character m. The attribute code -# numbers are: -# 1 for bold; -# 2 for dim (which is ignored in power on mode); -# 4 for underline; -# 5 for blinking; -# 7 for inverse; -# 8 for not displayable; and -# =99 for protected (except that there are strange side -# effects to protected characters which make them inadvisable). -# The mapping of terminfo parameters to attributes is as follows: -# %p1 (standout) = bold and inverse together; -# %p2 (underline) = underline; -# %p3 (reverse) = inverse; -# %p4 (blink) = blinking; -# %p5 (dim) is ignored; -# %p6 (bold) = bold; -# %p7 (invisible) = not displayable; -# %p8 (protected) is ignored; and -# %p9 (alt char set) = alt char set. -# The code to do this is: -# \E[0 OUTPUT \E[0 -# %?%p1%p6%O IF (standout; bold) OR -# %t;1 THEN OUTPUT ;1 -# %; ENDIF -# %?%p2 IF underline -# %t;4 THEN OUTPUT ;4 -# %; ENDIF -# %?%p4 IF blink -# %t;5 THEN OUTPUT ;5 -# %; ENDIF -# %?%p1%p3%O IF (standout; reverse) OR -# %t;7 THEN OUTPUT ;7 -# %; ENDIF -# %?%p7 IF invisible -# %t;8 THEN OUTPUT ;8 -# %; ENDIF -# m OUTPUT m -# %?%p9 IF altcharset -# %t^N THEN OUTPUT ^N -# %e^O ELSE OUTPUT ^O -# %; ENDIF -# sgr0: Everything is turned off (including alternate character set), since -# there is no way of knowing what it is that the program wants turned -# off. -# smul: The "underline" attribute is reconfigurable to an overline or -# strikethru, or (as done with \E[;3+} in is2=), to a line at the true -# bottom of the character cell. This was done to allow for more readable -# underlined characters, and to be able to distinguish between an -# underlined space, an underscore, and an underlined underscore. -# xenl: Terminal can be configured to not need this, but this "glitch" -# behavior is actually preferable with autowrap terminals. -# -# Parameters kf31= thru kf53= actually contain the strings sent by the shifted -# Fkeys. There are no parameters for shifted Fkeys in terminfo. The is2 -# string modifies the 'O' in kf43 to kf46 to a '$'. -# -# kcbt was originally ^I but redefined in is2=. -# kHOM was \E[H originally but redefined in is2=, as were a number of -# other keys. -# kDC was originally \177 but redefined in is2=. -# -# kbs: Shift was also ^H originally but redefined as \E$^H in is2=. -# tsl: Go to window 2, then do an hpa=. -# -#------- flash=\E[8;3!}^G\E[3;3!} -#------- flash=\E[?5h$<100>\E[?5l -# There are two ways to flash the screen, both of which have their drawbacks. -# The first is to set the bell mode to video, transmit a bell character, and -# set the bell mode back - but to what? There is no way of knowing what the -# user's old bell setting was before we messed with it. Worse, the command to -# set the bell mode also sets the key click volume, and there is no way to say -# "leave that alone", or to know what it's set to, either. -# The second way to do a flash is to set the screen to inverse video, pad for a -# tenth of a second, and set it back - but like before, there's no way to know -# that the screen wasn't ALREADY in inverse video, or that the user may prefer -# it that way. The point is moot anyway, since vi (and probably other -# programs) assume that by defining flash=, you want the computer to use it -# INSTEAD of bel=, rather than as a secondary type of signal. -# -#------- cvvis=\E[+{ -# The is the power on setting, which is also as visible as the cursor -# gets. -#------- wind=\E[%i%p1%d;%p2%d;%p3%{1}%+%d;%p4%{1}%+%dw -# Windowing is possible, but not defined here because it is also used to -# emulate status line functions. Allowing a program to set a window could -# clobber the status line or render it unusable. There is additional memory, -# but screen scroll functions are destructive and do not make use of it. -# -#------- dim= Not available in power on mode. -# You have a choice of defining low intensity characters as "half bright" and -# high intensity as "normal", or defining low as "normal" and high as "bold". -# No matter which you choose, only one of either "half bright" or "bold" is -# available at any time, so taking the time to override the default is -# pointless. -# -#------- prot=\E[=0;99m -# Not defined, because it appears to have some strange side effects. -#------- pfkey=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%; -#------- pfloc=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%; -#------- pfx=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%d;1u\177%p2%s\177%; -# Available, but making them available to programs is inadvisable. -# The code to do this is: -# %?%p1%{24}%< IF ((key; 24) <; -# %p1%{30}%> ((key; 30) >; -# %p1%{54}%< (key; 54) < -# %A ) AND -# %O ) OR -# [that is, "IF key < 24 OR (key > 30 AND key < 54)",] -# %t\E[ THEN OUTPUT \E[ -# %p1%d OUTPUT (key) as decimal -# [next line applies to pfx only] -# ;1 OUTPUT ;1 -# u OUTPUT u -# \177 OUTPUT \177 -# %p2%s OUTPUT (string) as string -# \177 OUTPUT \177 -# [DEL chosen as delimiter, but could be any character] -# [implied: ELSE do nothing] -# %; ENDIF -# -#------- rs2= -# Not defined since anything it might do could be done faster and easier with -# either Meta-Shift-Reset or the main power switch. -# -#------- smkx=\E[1!z -#------- rmkx=\E[!z -# These sequences apply to the cursor and setup keys only, not to the -# numeric keypad. But it doesn't matter anyway, since making these -# available to programs is inadvisable. -# For the key definitions below, all sequences beginning with \E$ are -# custom and programmed into the terminal via is2. \E$ also has no -# meaning to any other terminal. -# -#------- cmdch=\E[;%p1%d!t -# Available, but making it available to programs is inadvisable. -#------- smxon=\E[1*q -# Available, but making it available to programs is inadvisable. -# Terminal will send XON/XOFF on buffer overflow. -#------- rmxon=\E[*q -# Available, but making it available to programs is inadvisable. -# Terminal will not notify on buffer overflow. -#------- smm=\E[2+x -#------- rmm=\E[+x -# Available, but making them available to programs is inadvisable. -# -# Printing: -# It's not made clear in the manuals, but based on other ansi/vt type -# terminals, it's a good guess that this terminal is capable of both -# "transparent print" (which doesn't copy data to the screen, and -# therefore needs mc5i: specified to say so) and "auxilliary print" -# (which does duplicate printed data on the screen, in which case mc4= -# and mc5= should use the \E[?4i and \E[?5i strings instead). - -hds200|Human Designed Systems HDS200, - am, bw, eslok, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, lm#0, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{, - clear=\E[H\E[J, cnorm=\E[+{, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K, - fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, - ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, 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\E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177\E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+}, - kDC=\E$\177, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H, - kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, kent=^M, kf1=^\001\r, kf10=^\010\r, - kf11=^\011\r, kf12=^\012\r, kf13=\EOP, kf14=\EOQ, - kf15=\EOR, kf16=\EOS, kf17=^\017\r, kf18=^\018\r, - kf19=^\019\r, kf2=^\002\r, kf20=^\020\r, kf21=^\021\r, - kf22=^\022\r, kf23=^\023\r, kf3=^\003\r, kf31=^\031\r, - kf32=^\032\r, kf33=^\033\r, kf34=^\034\r, kf35=^\035\r, - kf36=^\036\r, kf37=^\037\r, kf38=^\038\r, kf39=^\039\r, - kf4=^\004\r, kf40=^\040\r, kf41=^\041\r, kf42=^\042\r, - kf43=\E$P, kf44=\E$Q, kf45=\E$R, kf46=\E$S, kf47=^\047\r, - kf48=^\048\r, kf49=^\049\r, kf5=^\005\r, kf50=^\050\r, - kf51=^\051\r, kf52=^\052\r, kf53=^\053\r, kf6=^\006\r, - kf7=^\007\r, kf8=^\008\r, kf9=^\009\r, khome=\E[H, - kind=\E[T, knp=\E[U, kpp=\E[V, kri=\E[S, ll=\E[H\E[A, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\E[E, rc=\E8, - rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017, - rmul=\E[m\017, sc=\E7, - 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, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG, - vpa=\E[%i%p1%dd, - -# through included to specify padding needed in raw mode. -# (avt-ns: added empty to suppress a tic warning --esr) -avt-ns|concept avt no status line, - OTbs, am, eo, mir, ul, xenl, xon, - cols#80, it#8, lines#24, lm#192, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[=119h, dch1=\E[P, 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>, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>, - invis=\E[8m, 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, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\E^B\r, ked=\E^D\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, khome=\E[H, kich1=\E^A\r, kil1=\E^C\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, rc=\E8, rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, - ri=\EM$<4>, rmacs=\016$<1>, rmcup=\E[w\E2\r\n, - rmir=\E[4l, rmkx=\E[!z\E[0;2u, rmso=\E[7!{, rmul=\E[4!{, - sc=\E7, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, - sgr0=\E[m, smacs=\017$<1>, smcup=\E[=4l\E[1;24w\E2\r, - smir=\E[4h, smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, -avt-rv-ns|concept avt in reverse video mode/no status line, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, - use=avt-ns, -avt-w-ns|concept avt in 132 column mode/no status line, - is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, - use=avt-ns, -avt-w-rv-ns|concept avt in 132 column mode/no status line/reverse video, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, - smcup=\E[H\E[1;24;1;132w, use=avt-ns, - -# Concept AVT with status line. We get the status line using the -# "Background status line" feature of the terminal. We swipe the -# first line of memory in window 2 for the status line, keeping -# 191 lines of memory and 24 screen lines for regular use. -# The first line is used instead of the last so that this works -# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this -# assumes an 8 page AVT but lm isn't currently used anywhere.) -# -avt+s|concept avt status line changes, - eslok, hs, - lm#191, - dsl=\E[0*w, fsl=\E[1;1!w, - is3=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n, - rmcup=\E[2w\E2\r\n, smcup=\E[2;25w\E2\r, - tsl=\E[2;1!w\E[;%p1%dH\E[2K, -avt|avt-s|concept-avt|avt w/80 columns, - use=avt+s, use=avt-ns, -avt-rv|avt-rv-s|avt reverse video w/sl, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, - use=avt+s, use=avt-ns, -avt-w|avt-w-s|concept avt 132 cols+status, - is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, - use=avt+s, use=avt-ns, -avt-w-rv|avt-w-rv-s|avt wide+status+rv, - flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, - smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns, - -#### Contel Business Systems. -# - -# Contel c300 and c320 terminals. -contel300|contel320|c300|Contel Business Systems C-300 or C-320, - am, in, xon, - cols#80, lines#24, xmc#1, - bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>, - el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH, - hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>, - kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD, - kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA, - rmso=\E!\0, sgr0=\E!\0, smso=\E!\r, tbc=\E3, -# Contel c301 and c321 terminals. -contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321, - flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>, - use=contel300, - -#### Data General (dg) -# -# According to James Carlson writing in January 1995, -# the terminals group at Data General was shut down in 1991; all these -# terminals have thus been discontinued. -# -# DG terminals have function keys that respond to the SHIFT and CTRL keys, -# e.g., SHIFT-F1 generates a different code from F1. To number the keys -# sequentially, first the unmodified key codes are listed as F1 through F15. -# Then their SHIFT versions are listed as F16 through F30, their CTRL versions -# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as -# F46 through F60. This is done in the private "includes" below whose names -# start with "dgkeys+". -# -# DG terminals generally support 8 bit characters. For each of these terminals -# two descriptions are supplied: -# 1) A default description for 8 bits/character communications, which -# uses the default DG international character set and keyboard codes. -# 2) A description with suffix "-7b" for 7 bits/character communications. -# This description must use the NON-DEFAULT native keyboard language. - -# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33), -# Ctrl/Shift fdkeys (kf34-kf44). - -dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys, - ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z, - kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C, - kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z, - kf11=\233011z, kf12=\233012z, kf13=\233013z, - kf14=\233014z, kf15=\233000z, kf16=\233101z, - kf17=\233102z, kf18=\233103z, kf19=\233104z, - kf2=\233002z, kf20=\233105z, kf21=\233106z, - kf22=\233107z, kf23=\233108z, kf24=\233109z, - kf25=\233110z, kf26=\233111z, kf27=\233112z, - kf28=\233113z, kf29=\233114z, kf3=\233003z, - kf30=\233100z, kf31=\233201z, kf32=\233202z, - kf33=\233203z, kf34=\233204z, kf35=\233205z, - kf36=\233206z, kf37=\233207z, kf38=\233208z, - kf39=\233209z, kf4=\233004z, kf40=\233210z, - kf41=\233211z, kf42=\233212z, kf43=\233213z, - kf44=\233214z, kf45=\233200z, kf46=\233301z, - kf47=\233302z, kf48=\233303z, kf49=\233304z, - kf5=\233005z, kf50=\233305z, kf51=\233306z, - kf52=\233307z, kf53=\233308z, kf54=\233309z, - kf55=\233310z, kf56=\233311z, kf57=\233312z, - kf58=\233313z, kf59=\233314z, kf6=\233006z, - kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z, - khome=\233H, kprt=\233i, - -dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys, - ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z, - kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z, - kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z, - kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z, - kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z, - kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z, - kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z, - kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z, - kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z, - kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z, - kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z, - kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z, - kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z, - kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z, - kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z, - kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z, - kf9=\E[009z, khome=\E[H, kprt=\E[i, - -dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys, - kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K, - kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c, - kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r, - kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3, - kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8, - kf31=^^9, kf32=^^\:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#, - kf37=^^$, kf38=^^%%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(, - kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w, - kf8=^^x, kf9=^^y, khome=^H, - -dgkeys+15|Private entry describing 15 DG mode special keys, - kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^, - kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^}, - kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d, - kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i, - kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s, - kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5, - kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^\:, - kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!, - kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%%, kf51=^^&, - kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,, - kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x, - kf9=^^y, - -# Data General color terminals use the "Tektronix" color model. The total -# number of colors varies with the terminal model, as does support for -# attributes used in conjunction with color. - -# Removed u7, u8 definitions since they conflict with tack: -# Preserve user-defined colors in at least some cases. -# u7=^^Fh, -# Default is ACM mode. -# u8=^^F}20^^Fi^^F}21, -# -dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode, - bce, - colors#16, ncv#53, pairs#256, - op=\036Ad\036Bd, - setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c, - -dg+fixed|Fixed color info for DG D430C terminals in DG mode, - use=dgunix+fixed, - -# Video attributes are coordinated using static variables set by "sgr", then -# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings. -# (D=dim, U=underline, B=blink, R=reverse.) -dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode, - bce, - colors#8, ncv#16, pairs#64, - op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m, - setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - -dg+color|Color info for Data General D470C terminals in ANSI mode, - colors#16, ncv#53, pairs#256, - setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, - 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, - -dgmode+color|Color info for Data General D470C terminals in DG mode, - colors#16, pairs#256, - setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%;%;%{48}%+%c, - 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}%*%{1000}%/%02X, - oc=\036RG01A00FF00000000\036RG01B00000000FF00\036RG01C007F00000000\036RG01D000000007F00, - op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D, - scp=\036RG2%p1%02X, - -# Colors are in the order: normal, reverse, dim, dim + reverse. -dg+ccc|Configurable color info for DG D430C terminals in DG mode, - bce, ccc, - colors#52, ncv#53, pairs#26, - initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p3%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p4%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p5%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p6%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c, - oc=\036RG01\:00??00000000\036RG01;00000000??00\036RG01<007?00000000\036RG01=000000007?00, - op=\036RF4831\:\036RF2>31;\036RF1=31<\036RF3?31=, - scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c, - -# The generic DG terminal type (an 8-bit-clean subset of the 6053) -# Initialization string 1 sets: -# ^R - vertical scrolling enabled -# ^C - blinking enabled -dg-generic|Generic Data General terminal in DG mode, - am, bw, msgr, xon, - cols#80, lines#24, - bel=^G, blink=^N, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, - cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=^J, is1=^R^C, - mc0=^Q, nel=^J, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\, - smul=^T, use=dgkeys+11, - -# According to the 4.4BSD termcap file, the dg200 should be the -# termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap -# notation that's "^P%r%+\200%+\200"). Those \200s are suspicious, -# maybe they were originally nuls (which would fit). - -dg200|data general dasher 200, - OTbs, am, bw, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^Y, cud1=^Z, cuf1=^X, - cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=^J, - kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^z, kf1=^^q, - kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v, kf7=^^w, kf8=^^x, - kf9=^^y, khome=^H, lf0=f10, nel=^J, rmso=^^E, rmul=^U, - smso=^^D, smul=^T, - -# Data General 210/211 (and 410?) from Lee Pearson (umich!lp) via BRL -dg210|dg-ansi|Data General 210/211, - am, - cols#80, lines#24, - OTnl=\E[B, clear=\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, -# From: Peter N. Wan -# courtesy of Carlos Rucalde of Vantage Software, Inc. -# (dg211: this had ., which was an ancient termcap hangover. -# I suspect the d200 function keys actually work on the dg211, check it out.) -dg211|Data General d211, - cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@, - kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=^M^Z, rmcup=^L, - rmso=\036E$<\0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200, - -# dg450 from Cornell (not official) -dg450|dg6134|data general 6134, - cub1@, cuf1=^X, use=dg200, - -# Not official... -# Note: lesser Dasher terminals will not work with vi because vi insists upon -# having a command to move straight down from any position on the bottom line -# and scroll the screen up, or a direct vertical scroll command. The 460 and -# above have both, the D210/211, for instance, has neither. We must use ANSI -# mode rather than DG mode because standard UNIX tty drivers assume that ^H is -# backspace on all terminals. This is not so in DG mode. -# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the -# grounds that there is no matching ":ml:" -# fixed garbled ":k9=\E[00\:z:" capability -- esr) -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, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, 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, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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[010z, khome=\E[H, lf0=f1, lf1=f2, lf2=f3, - lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, lf9=f10, rev=\E[7m, - ri=\E[T, rmso=\E[m, rmul=\E[05, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, -# From: Wayne Throop (not official) -# Data General 605x -# Ought to work for a Model 6242, Type D210 as well as a 605x. -# Note that the cursor-down key transmits ^Z. Job control users, beware! -# This also matches a posted description of something called a `Dasher 100' -# so there's a dg100 alias here. -# (dg6053: the 4.4BSD file had , , . -- esr) -dg6053-old|dg100|data general 6053, - OTbs, am, bw, ul, - cols#80, lines#24, - OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=^M, cub1=^Y, cud1=^Z, - cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K, - home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X, - kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, - kf6=^^w, kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L, - rmso=\0^^E, rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D, - smul=^T, - -# (Some performance can be gained over the generic DG terminal type) -dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053, - xon@, - home=^P\0\0, ll=^P\0^W, use=dg-generic, - -# Like 6053, but adds reverse video and more keypad and function keys. -d200|d200-dg|Data General DASHER D200, - bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^], - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;, - sgr0=\017\025\035\036E, smso=^^D^\, use=dgkeys+15, - use=dg6053, - -# DASHER D210 series terminals in ANSI mode. -# Reverse video, no insert/delete character/line, 7 bits/character only. -# -# Initialization string 1 sets: -# <0 - scrolling enabled -# <1 - blink enabled -# <4 - print characters regardless of attributes -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=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dim=\E[2m, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ind=^J, is1=\E[<0;<1;<4l, - ll=\E[H\E[A, nel=^J, rev=\E[7m, rmso=\E[m, rmul=\E[m, - sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m, - sgr0=\E[m, smso=\E[2;7m, smul=\E[4m, use=dgkeys+7b, - -# DASHER D210 series terminals in DG mode. -# Like D200, but adds clear to end-of-screen and needs XON/XOFF. -d210-dg|d214-dg|Data General DASHER D210 series in DG mode, - xon, - ed=^^FF, use=d200-dg, - -# DASHER D211 series terminals in ANSI mode. -# Like the D210, but with 8-bit characters and local printer support. -# -# Initialization string 2 sets: -# \E[2;1;1;1v -# 2;1 - 8 bit operations -# 1;1 - 8 bit (international) keyboard language -# \E(B - default primary character set (U.S. ASCII) -# \E)4 - default secondary character set (international) -# ^O - primary character set -# -d211|d215|Data General DASHER D211 series, - km, - is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b, - use=d210, - -# Initialization string 2 sets: -# \E[2;0;1;0v -# 2;0 - 7 bit operations -# 1;0 - 7 bit (native) keyboard language -# \E(0 - default character set (the keyboard native language) -# ^O - primary character set -d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode, - km@, - is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211, - -# Like the D210 series, but adds support for 8-bit characters. -# -# Reset string 2 sets: -# ^^N - secondary character set -# ^^FS0> - 8 bit international character set -# ^^O - primary character set -# ^^FS00 - default character set (matching the native keyboard language) -# -d211-dg|d215-dg|Data General DASHER D211 series in DG mode, - km, - rs2=\036N\036FS0>\036O\036FS00, use=d210-dg, - -d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode, - use=d211-dg, - -# Enhanced DG mode with changes to be more UNIX compatible. -d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode, - mc5i, - it#8, - acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI, - clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA, - el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=^J, - is1=\022\003\036P@1, is3=\036Fz0, kHOM=^^Pf, kLFT=^^Pd, - kPRT=^^P1, kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB, - kcuf1=^^PC, kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0, - mc0=\036F?9, mc4=^^Fa, mc5=^^F`, rmacs=\036FS00, - rs2=\036N\036FS0E\036O\036FS00, - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;\036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;, - sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11, - vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg, -d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines, - lines#25, - is3=\036Fz2, use=d216+, - -d217-unix|Data General DASHER D217 in DG-UNIX mode, - use=d216-unix, -d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines, - use=d216-unix-25, - -# DASHER D220 color terminal in ANSI mode. -# Like the D470C but with fewer colors and screen editing features. -# -# Initialization string 1 sets: -# \E[<0;<1;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <4 - print characters regardless of attributes -# \E[m - all attributes off -# Reset string 1 sets: -# \Ec - initial mode defaults (RIS) -# -d220|Data General DASHER D220, - mc5i@, - dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, - use=dg+color8, use=d470c, - -d220-7b|Data General DASHER D220 in 7 bit mode, - mc5i@, - dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, - use=dg+color8, use=d470c-7b, - -# Initialization string 3 sets: -# - default cursor (solid rectangle) -# Reset string 2 sets: -# ^^N - secondary character set -# ^^FS0> - 8 bit international character set -# ^^O - primary character set -# ^^FS00 - default character set (matching the native keyboard language) -# -d220-dg|Data General DASHER D220 color terminal in DG mode, - mc5i@, - dl1@, home@, il1@, is2@, is3=\036FQ2, ll@, mc4@, mc5@, rs1@, - rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8, - use=d470c-dg, - -# DASHER D230C color terminal in ANSI mode. -# Like the D220 but with minor ANSI compatibility improvements. -# -d230c|d230|Data General DASHER D230C, - blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=^M^J, - rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m, - sgr=\E[50%?%p1%p3%|%p6%|%t;7%{1}%e%{0}%;%PR%?%p4%t;5%{1}%e%{0}%;%PB%?%p2%p6%|%t;4%{1}%e%{0}%;%PU%?%p1%p5%|%t;2%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;, - sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m, - smul=\E[4;50m, use=dgkeys+7b, use=d220, - -d230c-dg|d230-dg|Data General DASHER D230C in DG mode, - use=d220-dg, - -# DASHER D400/D450 series terminals. -# These add intelligent features like insert/delete to the D200 series. -# -# Initialization string 2 sets: -# ^^FQ2 - default cursor (solid rectangle) -# ^^FW - character protection disabled -# ^^FJ - normal (80 column) mode -# ^^F\^ - horizontal scrolling enabled (for alignment) -# ^^FX004? - margins at columns 0 and 79 -# ^^F] - horizontal scrolling disabled -# ^^O - primary character set -# ^^FS00 - default character set (the keyboard native language) -# - (should reset scrolling regions, but that glitches the screen) -# Reset string 1 sets: -# ^^FA - all terminal defaults except scroll rate -# Reset string 2 sets: -# ^^F] - horizontal scrolling disabled -# ^^FT0 - jump scrolling -# -d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series, - mc5i, - acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\036FQ0, - cnorm=\036FQ2, dch1=^^K, dl1=^^FI, - enacs=\036N\036FS11\036O, home=^^FG, hpa=\020%p1%c\177, - ich1=^^J, il1=^^FH, - is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O\036FS00, - ll=\036FG\027, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O, - rs1=^^FA, rs2=\036F]\036FT0, - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;, - sgr0=\017\025\035\036E\036O, smacs=^^N, - vpa=\020\177%p1%c, use=d210-dg, - -# DASHER D410/D460 series terminals in ANSI mode. -# These add a large number of intelligent terminal features. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[5;0v - normal (80 column) mode -# \E[1;1;80w - margins at columns 1 and 80 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -# Initialization string 2 sets: -# \E[3;2;2;1;1;1v -# 3;2 - default cursor (solid rectangle) -# 2;1 - 8 bit operations -# 1;1 - international keyboard language -# \E(B - default primary character set (U.S. ASCII) -# \E)4 - default secondary character set (international) -# ^O - primary character set -# -# Reset string 1 sets: -# \Ec - initial mode defaults (RIS) -# \E[<2h - horizontal scrolling disabled -# -# Reset string 2 sets: -# \E[4;0;2;1;1;1v -# 4;0 - jump scrolling -# 2;1 - 8 bit operations -# 1;1 - 8 bit (international) keyboard language -# \E(B - default primary character set (U.S. ASCII) -# \E)4 - default secondary character set (international) -# -d410|d411|d460|d461|Data General DASHER D410/D460 series, - mc5i, - acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v, - cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, - is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h, - is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i, - ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h, - rs2=\E[4;0;2;1;1;1v\E(B\E)4, - sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m\E)%?%p9%t6\016%e4\017%;, - sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211, - -# Initialization string 2 sets: -# \E[3;2;2;0;1;0v -# 3;2 - default cursor (solid rectangle) -# 2;0 - 7 bit operations -# 1;0 - 7 bit (native) keyboard language -# \E(0 - default character set (the keyboard native language) -# ^O - primary character set -# -# Reset string 2 sets: -# \E[4;0;2;0;1;0v -# 4;0 - jump scrolling -# 2;0 - 7 bit operations -# 1;0 - 7 bit (native) keyboard language -# \E(0 - default character set (the keyboard native language) -# -d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode, - km@, - enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O, - rs2=\E[4;0;2;0;1;0v\E(0, - sgr=\E[%?%p1%p3%|%p6%|%t7;%;%?%p4%t5;%;%?%p2%p6%|%t4;%;%?%p1%p5%|%t2;%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410, - -d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode, - km, - enacs@, rmacs=\036FS00, - sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4%t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e00%;, - sgr0=\017\025\035\036E\036FS00, smacs=\036FS11, - use=d400-dg, - -# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[5;1v - compressed (135 column) mode -# \E[1;1;126 - margins at columns 1 and 126 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -# Reset string 1 sets: -# \Ec - initial mode defaults (RIS) -# \E[5;1v - compressed (135 column) mode -# \E[1;1;126w - margins at columns 1 and 126 -# \E[<2h - horizontal scrolling disabled -# -d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode, - cols#126, - is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, - rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410, - -d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode, - cols#126, - is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, - rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410-7b, - -d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode, - use=d410-dg, - -# These add intelligent features like scrolling regions. -d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode, - civis=\036FQ0, clear=^^FE, cnorm=\036FQ5, - cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI, - home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH, - is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O\036FS00, - ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I, - rs1=\036FA\036FT0, rs2=\036P@1, sc=\036F}10, - vpa=\036FPFF%p1%2.2X, - wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X, - use=d216+, -d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode, - cols#132, - is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O\036FS00, - rs2=\036P@1\036FK\036FX0083, - wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2%>%t001%;\036FX%p3%2.2X%p4%2.2X, - use=d412-unix, -d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines, - lines#25, - is3=\036Fz2, - wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2%>%t000%;\036FX%p3%2.2X%p4%2.2X, - use=d462+, -d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line, - eslok, hs, - clear=\036FG\036PH, fsl=\036F}01\022, - is3=\036Fz2\036F}00\036FB180000\036F}01, ll@, - tsl=\036F}00\036FP%p1%2.2X18\036PG, - wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X, - use=d462+, - -# Relative cursor motions are confined to the current window, -# which is not what the scrolling region specification expects. -# Thus, relative vertical cursor positioning must be deleted. -d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region, - csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%>%t000%;, - cud1@, cuu1@, ll@, use=d462+, - -d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode, - use=d412-unix, -d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode, - use=d412-unix-w, -d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines, - use=d412-unix-25, -d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line, - use=d412-unix-s, -d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region, - use=d412-unix-sr, - -d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode, - use=d413-unix, -d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode, - use=d413-unix-w, -d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines, - use=d413-unix-25, -d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line, - use=d413-unix-s, -d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region, - use=d413-unix-sr, - -d430c-dg|d430-dg|Data General D430C in DG mode, - use=d413-dg, use=dg+fixed, -d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors, - use=d413-dg, use=dg+ccc, - -d430c-unix|d430-unix|Data General D430C in DG-UNIX mode, - use=d413-unix, use=dgunix+fixed, -d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode, - use=d413-unix-w, use=dgunix+fixed, -d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines, - use=d413-unix-25, use=dgunix+fixed, -d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line, - use=d413-unix-s, use=dgunix+fixed, -d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region, - use=d413-unix-sr, use=dgunix+fixed, -d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors, - use=d413-unix, use=dgunix+ccc, -d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors, - use=d413-unix-w, use=dgunix+ccc, -d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors, - use=d413-unix-25, use=dgunix+ccc, -d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors, - use=d413-unix-s, use=dgunix+ccc, -d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors, - use=d413-unix-sr, use=dgunix+ccc, - -# DASHER D470C color terminal in ANSI mode. -# Like the D460 but with 16 colors and without a compressed mode. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[1;1;80w - margins at columns 1 and 80 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -d470c|d470|Data General DASHER D470C, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, - sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm\E)%?%p9%t6\016%e4\017%;, - use=dg+color, use=d460, - -d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, - sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0}%;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e%{0}%;%PDm%?%p9%t\016%e\017%;, - use=dg+color, use=d460-7b, - -# Initialization string 2 sets: -# ^^FQ2 - default cursor (solid rectangle) -# ^^FW - character protection disabled -# ^^F\^ - horizontal scrolling enabled (for alignment) -# ^^FX004? - margins at columns 0 and 79 -# ^^F] - horizontal scrolling disabled -# ^^O - primary character set -# ^^FS00 - default character set (the keyboard native language) -# - (should reset scrolling regions, but that glitches the screen) -# -d470c-dg|d470-dg|Data General DASHER D470C in DG mode, - is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O\036FS00, - use=dgmode+color, use=d460-dg, - -# DASHER D555 terminal in ANSI mode. -# Like a D411, but has an integrated phone. -d555|Data General DASHER D555, - use=d411, -d555-7b|Data General DASHER D555 in 7-bit mode, - use=d411-7b, -d555-w|Data General DASHER D555 in wide mode, - use=d411-w, -d555-7b-w|Data General DASHER D555 in wide 7-bit mode, - use=d411-7b-w, -d555-dg|Data General DASHER D555 series in DG mode, - use=d411-dg, - -# DASHER D577 terminal in ANSI mode. -# Like a D411, but acts as a keyboard for serial printers ("KSR" modes). -d577|Data General DASHER D577, - use=d411, -d577-7b|Data General DASHER D577 in 7-bit mode, - use=d411-7b, -d577-w|Data General DASHER D577 in wide mode, - use=d411-w, -d577-7b-w|Data General DASHER D577 in wide 7-bit mode, - use=d411-7b-w, - -d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode, - use=d411-dg, - -# DASHER D578 terminal. -# Like a D577, but without compressed mode; like a D470C in this respect. -# -# Initialization string 1 sets: -# \E[<0;<1;<2;<4l -# <0 - scrolling enabled -# <1 - blink enabled -# <2 - horizontal scrolling enabled (for alignment) -# <4 - print characters regardless of attributes -# \E[1;1;80w - margins at columns 1 and 80 -# \E[1;6;<2h -# 1 - print all characters even if protected -# 6 - character protection disabled -# <2 - horizontal scrolling disabled -# - (should reset scrolling regions, but that glitches the screen) -# -d578|Data General DASHER D578, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577, -d578-7b|Data General DASHER D578 in 7-bit mode, - is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577-7b, - -#### Datamedia (dm) -# -# Datamedia was headquartered in Nashua, New Hampshire until it went -# out of business in 1993, but the ID plates on the terminals referred -# to the factory in Pennsauken, NJ. The factory was sold to a PCB board -# manufacturer which threw out all information about the terminals. -# - -cs10|colorscan|Datamedia Color Scan 10, - msgr, - cols#80, lines#24, - bel=^G, clear=\E[H\E[J, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ed=\E[J, el=\E[K, - ind=^J, 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, -cs10-w|Datamedia Color Scan 10 with 132 columns, - cols#132, - cup=\E[%i%p1%02d;%p2%03dH, use=cs10, - -# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr) -dm1520|dm1521|datamedia 1520, - OTbs, am, xenl, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ht=^I, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_, - khome=^Y, -# dm2500: this terminal has both and . Applications using -# termcap/terminfo directly (rather than through ncurses) might be confused. -dm2500|datamedia2500|datamedia 2500, - OTbs, OTnc, - cols#80, lines#24, - bel=^G, clear=^^^^\177, cub1=^H, cud1=^J, cuf1=^\, - cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z, - dch1=\020\010\030\035$<10*>, - dl1=\020\032\030\035$<10*>, el=^W, home=^B, - ich1=\020\034\030\035$<10*>, - il1=\020\n\030\035\030\035$<15>, ind=^J, pad=\377, - rmdc=^X^], rmir=\377\377\030\035$<10>, rmso=^X^], - smdc=^P, smir=^P, smso=^N, -# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82) -# also, has a meta-key. -# From: -# (dmchat: ":MT:" changed to ":km:" -- esr) -dmchat|dmchat version of datamedia 2500, - km, - dl1=\020\032\030\035$<2/>, - il1=\020\n\030\035\030\035$<1*/>, use=dm2500, -# (dm3025: ":MT:" changed to ":km:" -- esr) -dm3025|datamedia 3025a, - OTbs, km, - cols#80, it#8, lines#24, - bel=^G, clear=\EM$<2>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, - dch1=\010$<6>, dl1=\EP\EA\EQ$<130>, ed=\EJ$<2>, el=\EK, - home=\EH, ht=^I, il1=\EP\n\EQ$<130>, ind=^J, ip=$<6>, - is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP, - smir=\EP, smso=\EO1, -dm3045|datamedia 3045a, - OTbs, am, eo, km@, ul, xenl, - dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA, - kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, - kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r, - khome=\EH, pad=\177, rmdc@, rmir=\EP, rmso@, smdc@, smso@, - use=dm3025, -# Datamedia DT80 soft switches: -# 1 0=Jump 1=Smooth -# Autorepeat 0=off 1=on -# Screen 0=Dark 1=light -# Cursor 0=u/l 1=block -# -# 2 Margin Bell 0=off 1=on -# Keyclick 0=off 1=on -# Ansi/VT52 0=VT52 1=Ansi -# Xon/Xoff 0=Off 1=On -# -# 3 Shift3 0=Hash 1=UK Pound -# Wrap 0=Off 1=On -# Newline 0=Off 1=On -# Interlace 0=Off 1=On -# -# 4 Parity 0=Odd 1=Even -# Parity 0=Off 1=On -# Bits/Char 0=7 1=8 -# Power 0=60Hz 1=50Hz -# -# 5 Line Interface 0=EIA 1=Loop -# Aux Interface 0=EIA 1=Loop -# Local Copy 0=Off 1=On -# Spare -# -# 6 Aux Parity 0=Odd 1=Even -# Aux Parity 0=Off 1=On -# Aux Bits/Char 0=7 1=8 -# CRT Saver 0=Off 1=On -# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding. -dm80|dmdt80|dt80|datamedia dt80/1, - clear=\E[2J\E[H, cud1=^J, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K, - home=\E[H, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, ri=\EM, - rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, smul=\E[4m, - use=vt100, -# 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 -# reverse video. -dm80w|dmdt80w|dt80w|datamedia dt80/1 in 132 char mode, - cols#132, - clear=\E[H\E[2J$<50/>, cud1=^J, - cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>, - ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80, -# From: Adam Thompson Sept 10 1995 -dt80-sas|Datamedia DT803/DTX for SAS usage, - am, bw, - cols#80, lines#24, - acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, - bel=^G, clear=^L, cr=^M, - csr=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2, - cub1=^H, cud1=\EB, cuf1=^\, - cup=\E=%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, dl1=\EM, ed=^K, - el=^], ff=^L, home=^Y, ht=^I, hts=\E'1, il1=\EL, ind=\EB, - is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=^J, - kcuf1=^\, kcuu1=^_, ked=^K, kel=^], khome=^Y, mc4=^O, mc5=^N, - rev=\E$2\004, ri=\EI, rmacs=\EG, rmso=^X, sgr0=^X, smacs=\EF, - smso=\E$2\004, tbc=\E'0, - -# Datamedia Excel 62, 64 from Gould/SEL UTX/32 via BRL -# These aren't end-all Excel termcaps; but do insert/delete char/line -# and name some of the extra function keys. (Mike Feldman ccvaxa!feldman) -# The naming convention has been bent somewhat, with the use of E? (where -# E is for 'Excel') as # a name. This was done to distinguish the entries -# from the other Datamedias in use here, and yet to associate a model of -# the Excel terminals with the regular datamedia terminals that share -# major characteristics. -excel62|excel64|datamedia Excel 62, - dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv, - kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h, - use=dt80, -excel62-w|excel64-w|datamedia Excel 62 in 132 char mode, - dch1=\E[P, kbs=^H, kcub1=^H, kcud1=^J, kf5=\EOu, kf6=\EOv, - kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h, - use=dt80w, -excel62-rv|excel64-rv|datamedia Excel 62 in reverse video mode, - dch1=\E[P, flash=\E[?5l\E[?5h, kbs=^H, kcub1=^H, kcud1=^J, - kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, - smir=\E[4h, use=dt80, - -#### Falco -# -# Falco Data Products -# 440 Potrero Avenue -# Sunnyvale, CA 940864-196 -# Vox: (800)-325-2648 -# Fax: (408)-745-7860 -# Net: techsup@charm.sys.falco.com -# -# Current Falco models as of 1995 are generally ANSI-compatible and support -# emulations of DEC VT-series, Wyse, and Televideo types. -# - -# Test version for Falco ts-1. See for info -# This terminal was released around 1983 and was discontinued long ago. -# The standout and underline highlights are the same. -falco|ts1|ts-1|falco ts-1, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET\EG0\010, home=^^, ht=^I, il1=\EE, - ind=^J, is2=\Eu\E3, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, - kf0=^A0\r, rmir=\Er, rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, - smir=\Eq, smso=\Eg1, smul=\Eg1, -falco-p|ts1p|ts-1p|falco ts-1 with paging option, - OTbs, am, da, db, mir, msgr, ul, - cols#80, it#8, lines#24, - bel=^G, cbt=\EI, clear=\E*, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A, - dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I, - il1=\EE, ind=^J, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er, - rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq, - smso=\Eg4, smul=\Eg1, -# (ts100: I added / based on the init string -- esr) -ts100|ts100-sp|falco ts100-sp, - am, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, 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~Q, il1=\E~E, ind=^J, is1=\E~)\E~ea, - kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - rc=\E8, 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, sc=\E7, - 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=vt100+fnkeys, -ts100-ctxt|falco ts-100 saving context, - rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100, - -#### Florida Computer Graphics -# - -# Florida Computer Graphics Beacon System, using terminal emulator program -# "host.com", as provided by FCG. This description is for an early release -# of the "host" program. Known bug: clears the whole screen, so it's -# commented out. - -# From: David Bryant 1/7/83 -beacon|FCG Beacon System, - am, da, db, - cols#80, lines#32, - bel=\ESTART\r\E37\r\EEND\r$<1>, - blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=^M, - cub1=^H, cud1=^J, cuf1=\EV, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=\EU, - dch1=\EW, dl1=\ER, el=\ET, home=\EH$<10>, ich1=\EQ, il1=\EE, - ind=^J, rev=\ESTART\r\E59\,1\r\EEND\r, rmcup=, - rmso=\ESTART\r\E70\,0\r\EEND\r$<20>, - rmul=\ESTART\r\E60\,0\r\EEND\r, - sgr0=\ESTART\r\E78\r\E70\,0\r\EEND\r$<20>, - smcup=\ESTART\r\E2\,0\r\E12\r\EEND\r$<10>, - smso=\ESTART\r\E70\,6\r\EEND\r$<20>, - smul=\ESTART\r\E60\,1\r\EEND\r, - -#### Fluke -# - -# The f1720a differences from ANSI: no auto margin, destructive -# tabs, # of lines, funny highlighting and underlining -f1720|f1720a|fluke 1720A, - xt, - cols#80, lines#16, xmc#1, - bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, - -#### Liberty Electronics (Freedom) -# -# Liberty Electronics -# 48089 Fremont Blvd -# Fremont CA 94538 -# Vox: (510)-623-6000 -# Fax: (510)-623-7021 - -# From: -# (f100: added empty to suppress a tic warning; -# made this relative to adm+sgr -- note that isn't -# known to work for f100 but does on the f110. --esr) -f100|freedom|freedom100|freedom model 100, - OTbs, am, bw, hs, mir, msgr, xon, - cols#80, lines#24, - acsc=, bel=^G, cbt=\EI, clear=^Z, cr=^M, cub1=^H, cud1=^J, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dl1=\ER$<11.5*>, dsl=\Eg\Ef\r, ed=\EY, el=\ET, - flash=\Eb$<200>\Ed, fsl=^M, home=^^, hpa=\E]%p1%{32}%+%c, - ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=^J, ip=$<6>, - is2=\Eg\Ef\r\Ed, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, - kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er, - smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef, - vpa=\E[%p1%{32}%+%c, use=adm+sgr, -f100-rv|freedom-rv|freedom 100 in reverse video, - flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100, -# The f110 and f200 have problems with vi(1). They use the ^V -# 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!!! -# -# f110/f200 users will have to decide whether -# to lose the down cursor key or the quoting capability. We will opt -# initially for leaving the quoting capability out, since use of VI -# is not generally applicable to most interactive applications -# (f110: added , & from f100 -- esr) -f110|freedom110|Liberty Freedom 110, - bw@, eslok, - it#8, wsl#80, - blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V, - dim=\EG@, dl1=\ER, dsl=\Ef\r, flash=\Eb$<200/>\Ed, il1=\EE, - ip@, is2@, kclr=^^, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, - kf0=^AI\r, kf10@, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, - ri=\EJ, rmacs=\E%%, rmir=\Er\EO, smacs=\E$, smir=\EO\Eq, - smso=\EG<, tsl=\Ef, use=f100, -f110-14|Liberty Freedom 110 14inch, - dch1@, use=f110, -f110-w|Liberty Freedom 110 - 132 cols, - cols#132, use=f110, -f110-14w|Liberty Freedom 110 14in/132 cols, - cols#132, - dch1@, use=f110, -# (f200: added to suppress tic warnings re / --esr) -f200|freedom200|Liberty Freedom 200, - OTbs, am, eslok, hs, mir, msgr, xon, - cols#80, it#8, lines#24, wsl#80, - acsc=, bel=^G, blink=\EG2, bold=\EG0, cbt=\EI, civis=\E.0, - clear=^Z, cnorm=\E.1, cr=^M, - csr=\Em0%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, - flash=\Eo$<200/>\En, fsl=^M, home=^^, - hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=^J, kbs=^H, - kclr=^^, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, - kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, - ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<, - tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr, -f200-w|Liberty Freedom 200 - 132 cols, - cols#132, use=f200, -# The f200 has the ability to reprogram the down cursor key. The key is -# reprogrammed to ^J (linefeed). This value is remembered in non-volatile RAM, -# so powering the terminal off and on will not cause the change to be lost. -f200vi|Liberty Freedom 200 for vi, - flash=\Eb$<200/>\Ed, kcud1=^J, use=f200, -f200vi-w|Liberty Freedom 200 - 132 cols for vi, - cols#132, use=f200vi, - -#### GraphOn (go) -# -# Graphon Corporation -# 544 Division Street -# Campbell, CA 95008 -# Vox: (408)-370-4080 -# Fax: (408)-370-5047 -# Net: troy@graphon.com (Troy Morrison) -# -# -# The go140 and go225 have been discontinued. GraphOn now makes X terminals, -# including one odd hybrid that starts out life on power-up as a character -# terminal, than can be switched to X graphics mode (driven over the serial -# line) by an escape sequence. No info on this beast yet. -# (go140: I added / based on the init string -- esr) -go140|graphon go-140, - OTbs, - cols#80, it#8, lines#24, - clear=\E[H\E[2J$<10/>, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J$<10/>, el=\E[K, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, il1=\E[L, - 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, -go140w|graphon go-140 in 132 column mode, - am, - cols#132, - is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q, - use=go140, -# Hacked up vt200 termcap to handle GO-225/VT220 -# From: -# (go225: I added / based on the init string -- esr) -go225|go-225|Graphon 225, - OTbs, am, mir, xenl, - cols#80, it#8, lines#25, vt#3, - blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\ED, - is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, - kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, rev=\E[7m, - rf=/home/martino/avrdude-build-script/objdir/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, - sc=\E7, 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, - -#### Harris (Beehive) -# -# Bletch. These guys shared the Terminal Brain Damage laurels with Hazeltine. -# Their terminal group is ancient history now (1995) though the parent -# company is still in business. -# - -# Beehive documentation is undated and marked Preliminary and has no figures -# so we must have early Superbee2 (Model 600, according to phone conversation -# with mfr.). It has proved reliable except for some missing padding -# (notably after \EK and at bottom of screen). -# -# The key idea is that AEP mode is poison for & that US's in -# the local memory should be avoided like the plague. That means -# that the 2048 character local buffer is used as 25 lines of 80 -# characters, period. No scrolling local memory, folks. It also -# appears that we cannot use naked INS LINE feature since it uses -# US. The sbi fakes with an 80-space insert that may be too -# slow at low speeds; also spaces get converted to \040 which is -# too long for some programs (not vi). DEL LINE is ok but slow. -# -# The string is designed for last line of screen ONLY; cup to -# 25th line corrects the motion inherent in scrolling to Page 1. -# -# There is one understood bug. It is that the screen appears to -# pop to a new (blank) page after a , or leave a half-line -# ellipsis to a quad that is the extra 48 memory locations. The -# data received is dumped into memory but not displayed. Not to -# worry if is being used; the lines not displayed will be, -# whenever the cursor is moved up there. Since is addressed -# relative to MEMORY of window, nothing is lost; but beware of -# relative cursor motion (,,,). Recommended, -# therefore, is setenv MORE -c . -# -# WARNING: Not all features tested. -# -# Timings are assembled from 3 sources. Some timings may reflect -# SB2/Model 300 that were used if more conservative. -# Tested on a Model 600 at 1200 and 9600 bd. -# -# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly -# placed on the keyboard and useless because of AEP, is made -# into a backspace key. In use ESC must be pressed twice (to send) -# and sending ^C must be prefixed by ESC to avoid that weird -# transmit mode associated with ENTER key. -# -# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across -# the screen, then it has dropped into ENTER mode; hit -# RESET--ONLINE--!tset. -# -# As delivered this machine has a FATAL feature that will throw -# it into that strange transmit state (SPOW) if the space bar is -# hit after a CR is received, but before receiving a LF (or a -# few others). -# -# The circuits MUST be modified to eliminate the SPOW latch. -# This is done by strapping on chip A46 of the I/O board; cut -# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that -# chip. This mod has been checked out on a Mod 600 of Superbee II. -# With this modification absurdly high timings on cr are -# unnecessary. -# -# NOTE WELL that the rear panel switch should be set to CR/LF, -# not AEP! -# -sb1|beehive superbee, - OTbs, am, bw, da, db, mir, ul, xsb, - cols#80, lines#25, xmc#1, - bel=^G, cbt=\E`$<650>, clear=\EH$<1>\EJ$<3>, cr=$<1>\r, - cub1=^H, cud1=^J, cuf1=\EC$<3>, cup=\EF%p2%03d%p1%03d, - cuu1=\EA$<3>, dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, - el=\EK$<3>, home=\EH$<1>, ht=^I, hts=\E1, - il1=\EN\EL$<3>\EQ \EP$<3> \EO\ER\EA$<3>, - ind=^J, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdl1=\EM, ked=\EJ, kel=\EK, - kf0=\E2, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, - kf7=\Ev, kf8=\Ew, kf9=\E1, khome=\EH, kich1=\EQ\EO, - krmir=\ER, lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER, - rmso=\E_3, rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO, - smso=\E_1, smul=\E_0, tbc=\E3, -sbi|superbee|beehive superbee at Indiana U., - xsb, - cr=\r$<1>, il1=1\EN\EL$<9>\EQ \EP$<9> \EO\ER\EA, - use=sb1, -# Alternate (older) description of Superbee - f1=escape, f2=^C. -# Note: there are at least 3 kinds of superbees in the world. The sb1 -# holds onto escapes and botches ^C's. The sb2 is the best of the 3. -# The sb3 puts garbage on the bottom of the screen when you scroll with -# the switch in the back set to CRLF instead of AEP. This description -# is tested on the sb2 but should work on all with either switch setting. -# The f1/f2 business is for the sb1 and the can be taken out for -# the other two if you want to try to hit that tiny escape key. -# This description is tricky: being able to use cup depends on there being -# 2048 bytes of memory and the hairy string. -superbee-xsb|beehive super bee, - am, da, db, xsb, - cols#80, it#8, lines#25, - clear=\EH\EJ$<3>, cnorm=^J, cr=\r$<1000>, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EF%p2%3d%p1%3d, cuu1=\EA$<3>, - dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, el=\EK$<3>, - home=\EH, ht=^I, hts=\E1, - ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ep, kf2=\Eq, - kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, kf8=\Ew, - khome=\EH, rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3, -# This loses on lines > 80 chars long, use at your own risk -superbeeic|super bee with insert char, - ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb, -sb2|sb3|fixed superbee, - xsb@, use=superbee, - -#### Beehive Medical Electronics -# -# Steve Seymour writes (Wed, 03 Feb 1999): -# Regarding your question though; Beehive terminals weren't made by Harris. -# They were made by Beehive Medical Electronics in Utah. They went out of -# business in the early '80s. -# -# (OK, then, I don't know why a couple of these say "harris beehive".) -# - -# Reports are that most of these Beehive entries (except superbee) have not -# been tested and do not work right. is a trouble spot. Be warned. - -# (bee: was empty, which is obviously bogus -- esr) -beehive|bee|harris beehive, - OTbs, am, mir, - cols#80, lines#24, - cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>, - kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL, - krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@, - smir=\EQ, smso=\EdP, smul=\Ed`, -# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs. -# good grief - does this entry make :sg:/:ug: when it doesn't have to? -# look at those spaces in /. Seems strange to me... -# (beehive: removed, no such file. If you -# really care, cook up one using ^F -- esr) -beehive3|bh3m|beehiveIIIm|harris beehive 3m, - OTbs, am, - cols#80, it#8, lines#20, - bel=^G, clear=^E^R, cr=^M, cub1=^H, cud1=^J, cuf1=^L, cuu1=^K, - dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F, - il1=\023$<160>, ind=^J, ll=^E^K, rmso=\s^_, smso=^]\s, -beehive4|bh4|beehive 4, - am, - cols#80, lines#24, - bel=^G, clear=\EE, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC, - cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=^J, -# There was an early Australian kit-built computer called a "Microbee". -# It's not clear whether this is for one of those or for a relative -# of the Beehive. -microb|microbee|micro bee series, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, ht=^I, ind=^J, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, - kf6=\Eu, kf7=\Ev, kf8=\Ew, kf9=\Ex, khome=\EH, rmso=\Ed@, - rmul=\Ed@, sgr0=\Ed@, smso=\s\EdP, smul=\Ed`, - -# 8675, 8686, and bee from Cyrus Rahman -# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr) -ha8675|harris 8675, - is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU, kf1=^F, - kf10=\Ed, kf11=^W, kf12=\ER, kf13=\EE, kf14=\EI, kf15=\Ei, - kf16=\Eg, kf2=^P, kf3=^N, kf4=^V, kf5=^J, kf6=^T, kf7=^H, - kf8=\177, kf9=\Ee, use=bee, -# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation -# in :is: -- esr) -ha8686|harris 8686, - is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83#\E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F75021B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8FB5021B7283#, - kf1=\002\Ep\003, kf10=\Ej, kf11=\EW, kf12=\002\E{\003, - kf13=\002\E|\003, kf14=\002\E}\003, kf15=\002\E~\003, - kf16=\002\E\177\003, kf2=\002\Eq\003, kf3=\002\Er\003, - kf4=\002\Es\003, kf5=\E3, kf6=\EI, kf7=\ER, kf8=\EJ, kf9=\E(, - use=bee, - -#### Hazeltine -# -# Hazeltine appears to be out of the terminal business as of 1995. These -# guys were co-owners of the Terminal Brain Damage Hall Of Fame along with -# Harris. They have a hazeltine.com domain (but no web page there ) and can -# be reached at: -# -# Hazeltine -# 450 East Pulaski Road -# Greenlawn, New York 11740 -# -# As late as 1993, manuals for the terminal product line could still be -# purchased from: -# -# TRW Customer Service Division -# 15 Law Drive -# P.O. Box 2076 -# Fairfield, NJ 07007-2078 -# -# They're now (1998) a subsidiary of General Electric, operating under the -# marque "GEC-Marconi Hazeltine" and doing military avionics. Web page -# at . -# - -# Since is blank, when you want to erase something you -# are out of luck. You will have to do ^L's a lot to -# redraw the screen. h1000 is untested. It doesn't work in -# vi - this terminal is too dumb for even vi. (The code is -# there but it isn't debugged for this case.) -hz1000|hazeltine 1000, - OTbs, - cols#80, lines#12, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\s, home=^K, - ind=^J, -# From: Thu Aug 20 09:09:18 1981 -hz1420|hazeltine 1420, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=^J, cuf1=^P, - cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S, - ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=^J, rmso=\E^Y, - smso=\E^_, -# New "safe" cursor movement (11/87) from . Prevents -# freakout with out-of-range args and tn3270. No hz since it needs to -# receive tildes. -hz1500|hazeltine 1500, - OTbs, am, hz, - cols#80, lines#24, - bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, - cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c, - cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R, - il1=~\032$<40>, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^P, - kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_, -# h1510 assumed to be in sane escape mode. Else use h1500. -# (h1510: early versions of this entry apparently had ", -# , but these caps were commented out in 8.3; also, -# removed incorrect and overridden ":do=^J:" -- esr) -hz1510|hazeltine 1510, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, cuf1=^P, - cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X, - el=\E^O, il1=\E^Z, ind=^J, -# Hazeltine 1520 -# The following switch settings are assumed for normal operation: -# FULL CR U/L_CASE ESCAPE -# FORMAT_OFF EOM_A_OFF EOM_B_OFF WRAPAROUND_ON -# Other switches may be set for operator convenience or communication -# requirements. -hz1520|Hazeltine 1520, - OTbs, am, bw, msgr, - cols#80, lines#24, - bel=^G, bold=\E^_, clear=\E^\, cr=^M, cub1=^H, cud1=^J, - cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, - ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, kbs=^H, - kclr=\E^\, kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, - kdl1=\E^S, ked=\E^X, kel=\E^O, khome=\E^R, kil1=\E^Z, - rmso=\E^Y, rs1=\E$\E\005\E?\E\031, sgr0=\E^Y, smso=\E^_, -# This version works with the escape switch off -# (h1520: removed incorrect and overridden ":do=^J:" -- esr) -hz1520-noesc|hazeltine 1520, - am, hz, - cols#80, lines#24, - bel=^G, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, - cup=~\021%p2%c%p1%c$<1>, cuu1=~^L, dl1=~^S, ed=~^X, el=~^O, - home=~^R, il1=~^Z, ind=^J, rmso=~^Y, smso=~^_, -# Note: the h1552 appears to be the first Hazeltine terminal which -# is not braindamaged. It has tildes and backprimes and everything! -# Be sure the auto lf/cr switch is set to cr. -hz1552|hazeltine 1552, - OTbs, - cud1=^J, dl1=\EO, il1=\EE, kf1=\EP, kf2=\EQ, kf3=\ER, lf1=blue, - lf2=red, lf3=green, use=vt52, -hz1552-rv|hazeltine 1552 reverse video, - cud1=^J, rmso=\ET, smso=\ES, use=hz1552, -# Note: h2000 won't work well because of a clash between upper case and ~'s. -hz2000|hazeltine 2000, - OTbs, OTnc, am, - cols#74, lines#27, - bel=^G, clear=~\034$<6>, cub1=^H, cud1=^J, - cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R, - il1=~\032$<6>, ind=^J, pad=\177, -# Date: Fri Jul 23 10:27:53 1982. Some unknown person wrote: -# I tested this termcap entry for the Hazeltine Esprit with vi. It seems -# to work ok. There is one problem though if one types a lot of garbage -# characters very fast vi seems not able to keep up and hangs while trying -# to insert. That's in insert mode while trying to insert in the middle of -# a line. It might be because the Esprit doesn't have insert char and delete -# char as a built in function. Vi has to delete to end of line and then -# redraw the rest of the line. -esprit|Hazeltine Esprit I, - OTbs, am, bw, - cols#80, lines#24, - bel=^G, cbt=\E^T, clear=\E^\, cr=^M, cub1=^H, cud1=\E^K, - cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, - ed=\E^W, el=\E^O, home=\E^R, il1=\E^Z, ind=^J, is2=\E?, kbs=^H, - kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0^J, - kf1=^B1^J, kf2=^B2^J, kf3=^B3^J, kf4=^B4^J, kf5=^B5^J, - kf6=^B6^J, kf7=^B7^J, kf8=^B8^J, kf9=^B9^J, khome=\E^R, - lf0=0, lf1=1, lf2=2, lf3=3, lf4=4, lf5=5, lf6=6, lf7=7, lf8=8, lf9=9, - rmkx=\E>, rmso=\E^Y, smkx=\E<, smso=\E^_, -esprit-am|hazeltine esprit auto-margin, - am, use=esprit, -# Hazeltine Modular-1 from Cliff Shackelton via BRL -# Vi it seems always wants to send a control J for "do" and it turned out -# that the terminal would work somewhat if the auto LF/CR was turned off. -# (hmod1: removed :dn=~^K: -- esr) -hmod1|Hazeltine Modular 1, - OTbs, am, hz, - cols#80, lines#24, - bel=^G, cbt=~^T, clear=~^\, cr=^M, cub1=^H, cud1=~^K, cuf1=^P, - cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z, - ind=^J, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R, - rc=~^Q, rmso=~^Y, sc=~^E, sgr0=~^Y, smso=~^_, -# -# Hazeltine Executive 80 Model 30 (1554?) -# from Will Martin via BRL -# Like VT100, except for different "am" behavior. -hazel|exec80|h80|he80|Hazeltine Executive 80, - OTbs, OTpt, am, - cols#80, it#8, lines#24, vt#3, - OTnl=^J, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, 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, rc=\E8, rev=\E[7m$<2/>, - rf=/home/martino/avrdude-build-script/objdir/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, sc=\E7, - sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>, - smul=\E[4m$<2/>, - -#### IBM -# - -ibm327x|line mode IBM 3270 style, - gn, - clear=^M^J, el=^M, home=^M, - -ibm3101|i3101|IBM 3101-10, - OTbs, am, xon, - cols#80, lines#24, - bel=^G, clear=\EK, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EI, home=\EH, hts=\E0, ind=^J, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, nel=^M^J, tbc=\EH, -ibm3151|IBM 3151 display, - is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B, - sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E>B%;, - sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162, -# From: Mark Easter 29 Oct 1992 -# removed kend, knp, kpp -TD -ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display, - OTbs, am, mir, msgr, - cols#80, it#8, lines#24, - acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x\370, - bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, ind=^J, - invis=\E4P, kbs=^H, kcbt=\E2, kclr=\EL\r, kctab=\E1, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EQ, - kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r, kf10=\Ej\r, - kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r, kf14=\E!b\r, - kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r, kf18=\E!f\r, - kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r, kf21=\E!i\r, - kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r, kf3=\Ec\r, - kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r, kf8=\Eh\r, - kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010, kil1=\EN, - ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A, rmcup=\E>A, - rmso=\E4@, rmul=\E4@, - sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%;%?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t%{80}%|%;%c%?%p9%t\E>A%e\E<@%;, - sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B, - -ibm3161-C|IBM 3161-C NLS terminal using cartridge, - rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, use=ibm3161, -ibm3162|IBM 3162 display, - blink=\E4$a, bold=\E4(a, il1=\EN, invis=\E40a, rev=\E4!a, - rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a, - use=ibm3161-C, - -# This really should not use setab/setaf, but it is clear that the -# original terminfo does not toggle red/blue colors as in setb/setf. -ibm3164|i3164|IBM 3164, - msgr, - colors#8, pairs#64, - op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A, - setab=\E4 %p1%{64}%+%c, - setaf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@, - smcup=\E!9/N\E>B, use=ibm3161, - -ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display, - am, bw, msgr, xon, - cols#80, it#8, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, - hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z, - kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, 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, khome=\E[H, kich1=\E[139q, kil1=\E[140q, - kind=\E[151q, knp=\E[154q, kpp=\E[150q, kri=\E[155q, - krmir=\E[4l, rev=\E[7m, ri=\E[T, rin=\E[%p1%dT, rmir=\E[4l, - rmso=\E[m, rmul=\E[m, rs2=\Ec, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;%?%p7%t;8%;m, - sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m, - -ibmaed|IBM Experimental display, - OTbs, am, eo, msgr, - cols#80, it#8, lines#52, - clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP, - il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - rmso=\E0, sgr0=\E0, smso=\E0, -ibm-apl|apl|IBM apl terminal simulator, - lines#25, use=dm1520, -# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'. -# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr) -ibmmono|IBM workstation monochrome, - eslok, hs, - bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL, - invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET, - kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY, - khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG, - lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew, - sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo, - use=ibm3101, -ibmega|IBM Enhanced Color Display, - cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, use=ibmmono, -# This color scheme is assumed in some recent IBM terminal descriptions -# (green on black, emulated on a 16-color terminal). -ibm+color|IBM color definitions, - colors#8, ncv#3, pairs#64, - op=\E[32m\E[40m, - setb=\E[%?%p1%{0}%=%t40m%e%p1%{1}%=%t41m%e%p1%{2}%=%t42m%e%p1%{3}%=%t43m%e%p1%{4}%=%t44m%e%p1%{5}%=%t45m%e%p1%{6}%=%t46m%e%p1%{7}%=%t107m%;, - setf=\E[%?%p1%{0}%=%t30m%e%p1%{1}%=%t31m%e%p1%{2}%=%t32m%e%p1%{3}%=%t33m%e%p1%{4}%=%t34m%e%p1%{5}%=%t35m%e%p1%{6}%=%t36m%e%p1%{7}%=%t97m%;, -ibm+16color|IBM aixterm color definitions, - colors#16, pairs#256, - setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm, - setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm, - setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, - setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e%ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, -ibm5154|IBM 5154 Color display, - colors#8, ncv@, pairs#64, - bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, - use=ibm+color, -ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline, - rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;, - use=ibmmono, -ibmvga-c|IBM VGA display color termcap, - cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, use=ibmega-c, -ibmvga|IBM VGA display, - cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, - nel=^M^J, use=ibmega, -# ibmapa* and ibmmono entries come from ACIS 4.3 distribution -rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display, - lines#32, - dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono, -ibm6155|IBM 6155 Black & White display, - blink@, bold@, use=ibm5151, -# Advanced Monochrome (6153) and Color (6154) Graphics Display: -ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display, - lines#31, - dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono, -ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display, - lines#31, - dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, - use=ibmega-c, -ibm6154|IBM 6154 Color displays, - blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m, - sgr0=\E[0;10m, use=ibm5154, -ibm6153|IBM 6153 Black & White display, - blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;12%;m, - sgr0=\E[0;10m, use=ibm5151, -ibm6153-90|IBM 6153 Black & White display, - cols#90, lines#36, - blink@, bold@, use=ibm5151, -ibm6153-40|IBM 6153 Black & White display, - cols#40, lines#12, use=ibm6153-90, -ibm8512|ibm8513|IBM color VGA Terminal, - am, mir, msgr, - cols#80, it#8, lines#25, - acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m, - clear=\E[H\E[J, cub1=\E[D, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL, - il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A, - kf0=\E[010q, 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, khome=\E[H, rc=\E[u, rev=\E[7m, - rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, - rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m, - smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb, - smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m, - use=ibm8503, -hft-c|HFT with Color, - colors#8, pairs#64, - acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B, - use=ibm5151, use=ibm+color, -hft-c-old|HFT with Color PC850, - colors#8, pairs#64, - setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, - use=ibm+color, -hft-old|AIWS High Function Terminal, - am, xon, - cols#80, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub1=^H, cud1=^J, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, - ht=^I, ich1=\E[@, il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - 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, khome=\E[H, 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=ibm+color, -ibm-system1|system1|ibm system/1 computer, - am, xt, - cols#80, lines#24, - bel=^G, clear=^Z, cub1=^H, cuf1=^\, - cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K, - ind=^J, -# lft-pc850 : IBM Low Function Terminal Device -# lft "supports" underline, bold, and blink in the sense that the lft code -# sets all the right bits. HOWEVER, depending upon the adapter, these -# attributes may or may not be supported by the device driver. -lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device, - am, bw, msgr, xon, - cols#80, it#8, lines#25, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K, - home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL, - il1=\E[L, ind=\ED, indn=\E[%p1%dS, invis=\E[8m, is2=\Ec, - kbs=^H, kcbt=\E[Z, kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, kich1=\E[139q, - kil1=\E[140q, kind=\E[151q, knp=\E[154q, kpp=\E[150q, - kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\EL, rin=\E[%p1%dT, - rmacs=\E(B, rmir=\E[4l, rmso=\E[0m, rmul=\E[0m, rs2=\Ec, - 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%;, - sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, -ibm5081|hft|IBM Megapel Color display, - acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B, - s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154, -ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display, - eslok, hs, - lines#33, - dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo, - use=ibmega-c, -ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display, - use=hft-c, -ibm8514|IBM 8514/a color VGA display, - eslok, hs, - dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft, -ibm8514-c|IBM 8514 color display with standout and underline, - eslok, hs, - lines#41, - cr=^M, cud1=^J, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=^J, - kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, tsl=\Ej\EYI%+ \Eo, - use=ibmega-c, - -# -# AIX entries. IBM ships these with AIX 3.2.5. -# -- added rc, sc based on manpage -TD -# Note that we could use ibm+16color, but that is not how IBM defines this one. -aixterm|IBM Aixterm Terminal Emulator, - eslok, hs, - acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, - fsl=\E[?F, rc=\E8, ri@, s0ds=\E(B, s1ds=\E(0, sc=\E7, - 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%;, - sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6154, -aixterm-m|IBM AIXterm Monochrome Terminal Emulator, - eslok, hs, - acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, - fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153, -aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator, - eslok, hs, - bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - tsl=\E[?%p1%dT, use=ibm6153, -jaixterm|IBM Kanji Aixterm Terminal Eemulator, - acsc@, use=aixterm, -jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator, - acsc@, use=aixterm-m, - -# This flavor is adapted from xterm, in turn from aixterm documentation -TD -aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors, - use=ibm+16color, use=aixterm, - -#### Infoton/General Terminal Corp. -# - -# gt100 sounds like something DEC would come out with. Let's hope they don't. -i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100), - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM, - ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL, - ind=^J, rmso=\Ea, smso=\Eb, -i400|infoton 400, - OTbs, am, - cols#80, lines#25, - bel=^G, clear=\E[2J, cr=^M, cub1=^H, cud1=^J, 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=^J, rmir=\E[4l\E[0Q, smir=\E[4h\E[2Q, -# (addrinfo: removed obsolete ":bc=^Z:" -- esr) -addrinfo, - am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, - cup=\037%p1%c%p2%c, cuu1=^\, ed=^K, home=^H, ind=^J, ll=^H^\, -# (infoton: used to have the no-ops , , -- esr) -infoton, - am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^Z, cud1=^J, cuf1=^Y, cuu1=^\, - ed=^K, ind=^J, ll=^H^\, - -# The ICL6402 was actually the Kokusai Display System 6402. -# The 6404 was the KDS7372 (color version of the 6402). -# -# ICL6404 control codes follow: -# -#code function -#~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -#ctrl-A set SOM position at cursor position -#ctrl-G Bell -#ctrl-H Backspace -#ctrl-I Horiz tab -#ctrl-J Linefeed -#ctrl-K Cursor up -#ctrl-L Cursor right -#ctrl-M Carriage return -#ctrl-N Disable xon/xoff to host -#ctrl-O Enable xon/xoff to host -#ctrl-R Enable bidirectional mode -#ctrl-T Disable bidirectional mode -#ctrl-V Cursor down -#ctrl-Z Clear unprotected data to insert char -#ctrl-^ Cursor home -#ctrl-_ Newline -# -#ESC lead-in char for multiple character command -# -#ESC space R execute power on sequence -#ESC ! p1 p2 define scroll region: -# p1 = scroll top line: 20h - 37h -# p1 = scroll bottom line: 20h - 37h -#ESC " unlock keyboard -#ESC # lock keyboard -#ESC $ Semi-graphics mode on -#ESC % Semi-graphics mode off -#ESC & protect mode on -#ESC ' protect mode off -#ESC ( write protect mode off (full intensity) -#ESC ) write protect mode on (half intensity) -# -#ESC * clear screen -#ESC + clear unprotected data to insert char -#ESC , clear unprotected data to half intensity spaces -#ESC - p1 p2 p3 p4 address cursor to page, row, column: -# p1 = page number 0 - 3 -# p2 = row 20h - 7fh -# p3 = column (lo) 20h - 7fh -# p4 = column (hi) 20h - 21h (only 132 col) -#ESC . p1 set cursor style: -# p1 = 0 invisible cursor -# p1 = 1 block blinking cursor -# p1 = 2 block steady cursor -# p1 = 3 underline blinking cursor -# p1 = 4 underline steady cursor -#ESC / transmit cursor location (page, row, column) -#ESC 0 p1 p2 p3 p4 program edit key: -# p1 = edit key code: '@'-'S', '`'-'s' -# p2 p3 p4 = program data (3 bytes) -# -#ESC 1 set tab -#ESC 2 clear tab at cursor -#ESC 3 clear all tabs -#ESC 4 send unprotect line to cursor -#ESC 5 send unprotect page to cursor -#ESC 6 send line to cursor -#ESC 7 send page to cursor -#ESC 8 n set scroll mode: -# n = 0 set jump scroll -# n = 1 set smooth scroll -#ESC 9 n control display: -# n = 0 display off -# n = 1 display on -#ESC : clear unprotected data to null -#ESC ; clear unprotected data to insert char -# -#ESC < keyclick on -#ESC = p1 p2 address cursor to row, column -# p1 = row 20h - 7fh -# p2 = column (lo) 20h - 7fh -# p3 = column (hi) 20h - 21h (only 132 col) -#ESC > keyclick off -#ESC ? transmit cursor location (row, column) -# -#ESC @ copy print mode on -#ESC A copy print mode off -#ESC B block mode on -#ESC C block mode off (conversation mode) -#ESC D F set full duplex -#ESC D H set half duplex -#ESC E line insert -#ESC F p1 p2 set page colour (p1 = f/grnd, p2 = b/grnd) -# 0 = black, 1 = red, 2 = green, 3 = yellow -# 4 = blue, 5 = magenta, 6 = cyan, 7 = white -#ESC G n set serial field attribute (n = 30h - 3Fh) -#ESC H n full graphics mode: -# n = 0 exit full graphics mode -# n = 1 enter full graphics mode -#ESC I back tab -#ESC J back page -#ESC K forward page -# -#ESC L unformatted page print -#ESC M L move window left (132 col mode only) -#ESC M R move window right (132 col mode only) -#ESC N set page edit (clear line edit) -#ESC O set line edit (clear page edit) -#ESC P formatted page print -#ESC Q character insert -#ESC R line delete -#ESC S send message unprotected only -#ESC T erase line to insert char -#ESC U set monitor mode (see ESC X, ESC u) -# -#ESC V n select video attribute mode: -# n = 0 serial field attribute mode -# n = 1 parallel character attribute mode -#ESC V 2 n define line attribute: -# n = 0 single width single height -# n = 1 single width double height -# n = 2 double width single height -# n = 3 double width double height -#ESC V 3 n select character font: -# n = 0 system font -# n = 1 user defined font -#ESC V 4 n select screen mode: -# n = 0 page screen mode -# n = 1 virtual screen mode -#ESC V 5 n control mouse mode: -# n = 0 disable mouse -# n = 1 enable sample mode -# n = 2 send mouse information -# n = 3 enable request mode -#ESC W character delete -#ESC X clear monitor mode (see ESC U, ESC u) -#ESC Y erase page to insert char -# -#ESC Z n send user/status line: -# n = 0 send user line -# n = 1 send status line -# n = 2 send terminal ID -#ESC [ p1 p2 p3 set character attribute (parallel char mode): -# p1: 0 = normal -# 1 = blank -# 2 = blink -# 3 = blink blank (= blank) -# 4 = reverse -# 5 = reverse blank -# 6 = reverse blink -# 7 = reverse blink blank (= reverse blank) -# 8 = underline -# 9 = underline blank -# : = underline blink -# ; = underline blink blank -# < = reverse underline -# = = reverse underline blank -# > = reverse underline blink -# ? = reverse underline blink blank -# p2, p3: f/grnd, b/grnd colour -# (see ESC F for colours) -# use ZZ for mono, eg. -# ESC [ 0 Z Z for normal -# ESC [ 4 Z Z for inverse etc. -# -#ESC \ n set page size: -# n = 1 24 lines/page -# n = 2 48 lines/page -# n = 3 72 lines/page -# n = 4 96 lines/page -#ESC ] n set Wordstar mode: -# n = 0 normal (KDS7372) mode -# n = 1 Wordstar mode -# -#ESC b set foreground colour screen -# -#ESC c n enter self-test mode: -# n = 0 exit self test mode -# n = 1 ROM test -# n = 2 RAM test -# n = 3 NVRAM test -# n = 4 screen display test -# n = 5 main/printer port test -# n = 6 mouse port test -# n = 7 graphics board test -# n = 8 graphics memory test -# n = 9 display all 'E' -# n = : display all 'H' -#ESC d set background colour screen -# -#ESC e n program insert char (n = insert char) -#ESC f text CR load user status line with 'text' -# -#ESC g display user status line on 25th line -#ESC h display system status line on 25th line -#ESC i tab -#ESC j reverse linefeed -#ESC k n duplex/local edit mode: -# n = 0 duplex edit mode -# n = 1 local edit mode -#ESC l n select virtual screen: -# n = 0 screen 1 -# n = 1 screen 2 -#ESC m save current config to NVRAM -#ESC n p1 select display screen: -# p1 = 0 screen 1 -# p1 = 1 screen 2 -# p1 = 2 screen 3 -# p1 = 3 screen 4 -#ESC o p1 p2 set characters/line and attribute: -# p1 = 0 80 chars/line -# -#ESC o p1 p2 set characters/line and attribute: -# p1 = 0 80 chars/line -# p1 = 1 132 chars/line -# p2 = 0 single width single height -# p2 = 1 single width double height -# p2 = 2 double width single height -# p2 = 3 double width double height -# -#ESC q insert mode on -#ESC r edit mode on -#ESC s send message all -#ESC t erase line to null -#ESC u clear monitor mode (see ESC U, ESC X) -#ESC v autopage mode on -#ESC w autopage mode off -#ESC x p1 p2 p3 define delimiter code... -#ESC y erase page to null -# -#ESC z 2 p1 p2 p3 p4 draw quadrangle: -# p1 = starting row -# p2 = starting column -# p3 = end row -# p4 = end column -# -#ESC { p1 p2 p3 p4 configure main port -# (baud, stop bits, parity, word length) -# -#ESC | p1 p2 text Ctrl-Y program function key with 'text': -# p1 = function key code: -# '1' - ';' normal f1- f11 -# '<' - 'F' shifted f1 - f11 -# p2 = program mode: -# 1 = FDX -# 2 = LOC -# 3 = HDX -# Ctrl-Y = terminator -# (use Ctrl-P to escape ^P, ^Y ) -# -#ESC } p1 p2 p3 p4 configure printer port -# (baud, stop bits, parity, word length) -#ESC ~ send system status -# -# Codes and info from Peter Disdale 12 May 1997 -# -# Entry is by esr going solely on above information and is UNTESTED. -# This actually looks a lot like a Televideo 9xx. -# This entry uses page 0 and is monochrome; I'm not brave enough to try -# to make color work without a test terminal. The capability is a guess. -# The initialization string sets conversation mode, blinking underline cursor, -# full duplex, parallel attribute mode, display user status line, white -# foreground, black background, normal highlight. -# -icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372, - OTbs, am, hs, - cols#80, lines#24, - bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*, - cnorm=\E.3, cr=^M, - csr=\E!%+%p1%{32}%+%p2%{32} cud1=\026, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{80}%m%{32}%+%c%p2%{80}%>%{32}%+%c, - cuu1=^K, cvvis=\E.1, dch1=\EW, dl1=\ER, home=^^, ht=^I, - hts=\E1, il1=\EE, invis=\E[1ZZ, - is1=\EC\E.3\EDF\EV1\Eg\E[0ZZ, nel=^_, rev=\E[4ZZ, - rmir=\Er, rmso=\E[%gh%{4}%^%Ph%gh%dZZ, - rmul=\E[%gh%{8}%^%Ph%gh%dZZ, rs2=\Eo1, - sgr=\E[%{0}%?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;ZZ, - sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3, -icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols, - rs2=\Eo1, use=icl6404, - -#### Interactive Systems Corp -# -# ISC used to sell OEMed and customized hardware to support ISC UNIX. -# ISC UNIX still exists in 1995, but ISC itself is no more; they got -# bought out by Sun. -# - -# From: Wed Sep 16 08:06:44 1981 -# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the -# ":le=^_:" later overridden -- esr) -intext|Interactive Systems Corporation modified owl 1200, - OTbs, am, - cols#80, it#8, lines#24, xmc#1, - bel=^G, cbt=^Y, clear=\014$<132>, cr=^M, cub1=^H, cud1=^J, - cuf1=^^, cup=\017%p1%{32}%+%c%p2%{32}%+%c, cuu1=^\, - dch1=\022$<5.5*>, dl1=\021$<5.5*>, ed=\026J$<5.5*>, - el=^Kp^R, ht=^I, il1=\020$<5.5*>, ind=^J, ip=$<5.5*>, kbs=^H, - kcub1=^_, kcud1=^J, kcuf1=^^, kcuu1=^\, kf0=^VJ\r, kf1=^VA\r, - kf2=^VB\r, kf3=^VC\r, kf4=^VD\r, kf5=^VE\r, kf6=^VF\r, - kf7=^VG\r, kf8=^VH\r, kf9=^VI\r, khome=^Z, rmir=^V<, - rmkx=^V9, rmso=^V#\s, smir=^V;, smkx=\036\:\264\026%%, - smso=^V$\,, -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=^M, cub1=\E[D, - cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[P, dl1=\E[M, 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, - 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, - -#### Kimtron (abm, kt) -# -# Kimtron seems to be history, but as March 1998 these people are still -# offering repair services for Kimtron equipment: -# -# Com/Pair Monitor Service -# 1105 N. Cliff Ave. -# Sioux Falls, South Dakota 57103 -# -# WATS voice: 1-800/398-4946 -# POTS fax: +1 605/338-8709 -# POTS voice: +1 605/338-9650 -# Email: -# Internet/Web: -# -# Kimtron entries include (undocumented) codes for: enter dim mode, -# enter bold mode, enter reverse mode, turn off all attributes. -# - -# Kimtron ABM 85 added by Dual Systems -# (abm85: removed duplicated ":kd=^J:" -- esr) -abm85|Kimtron ABM 85, - OTbs, am, bw, msgr, - cols#80, it#8, lines#24, xmc#1, - cbt=\EI, clear=\E*, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\Ey, el=\Et, ht=^I, - if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EE, - is2=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq, kbs=^H, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, rmir=\Er, rmso=\Ek, - rmul=\Em, smir=\EQ, smso=\Ej, smul=\El, -# Kimtron ABM 85H added by Dual Systems. -# Some notes about the abm85h entries: -# 1) there are several firmware revs of 85H in the world. Use abm85h-old for -# firmware revs prior to SP51 -# 2) Make sure to use abm85h entry if the terminal is in 85h mode and the -# abm85e entry if it is in tvi920 emulation mode. They are incompatible -# in some places and NOT software settable i.e., can't fix it) -# 3) In 85h mode, the arrow keys and special functions transmit when -# the terminal is in dup-edit, and work only locally in local-edit. -# Vi won't swallow `del char' for instance, but turns on -# dup-edit anyway so that the arrow keys will work right. If the -# arrow keys don't work the way you like, change , , and -# . Note that 920E mode does not have software commands to toggle -# between dup and local edit, so you get whatever was set last on the -# terminal. -# 4) attribute is nice, but seems too slow to work correctly -# (\Eb\Ed) -# 5) Make sure `hidden' attributes are selected. If `embedded' attributes -# are selected, the entry should be removed. -# 6) auto new-line should be on (selectable from setup mode only) -# -# From: Erik Fair Sun Oct 27 07:21:05 1985 -abm85h|Kimtron ABM 85H native mode, - hs, - xmc@, - bel=^G, cnorm=\E.4, cvvis=\E.2, dim=\E), dsl=\Ee, flash@, - fsl=^M, invis@, - is2=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\EG0\Ed\E.4\El, - kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr, - use=abm85, -abm85e|Kimtron ABM 85H in 920E mode, - xmc@, - bel=^G, dim=\E), flash@, - is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq\Em, - rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, -abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev., - xmc@, - bel=^G, dim=\E), - is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9\EF, - rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, -# From: -# (kt7: removed obsolete :ma=^V^J^L :" -- esr) -kt7|kimtron model kt-7, - OTbs, am, - cols#80, it#8, lines#24, - cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ, - if=/home/martino/avrdude-build-script/objdir/share/tabset/stdcrt, il1=\EE, invis@, is2=\El\E", - kbs=^H, kcbt=\EI, kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, - kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, - kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr, -# Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the -# other kt7 entry and the adjacent key capabilities). Removed EE which is -# identical to :mh:. Removed :ES=\EGD: which is some kind of highlight -# but we can't figure out what. -kt7ix|kimtron model kt-7 or 70 in IX mode, - am, bw, - cols#80, it#8, lines#25, - acsc=jYk?lZm@nEqDt4uCvAwBx3, bel=^G, blink=\EG2, cbt=\EI, - civis=\E.0, clear=\E*, cnorm=\E.3, cr=^M, cub1=^H, cud1=^V, - cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=^M, - home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=^J, - is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER, - ked=\EY, kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, knp=\EJ, - nel=^M^J, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0, - sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef, - -#### Microdata/MDIS -# -# This was a line of terminals made by McDonnell-Douglas Information Systems. -# These entries come direct from MDIS documentation. I have edited them only -# to move primary names of the form p[0-9] * to aliases, and to comment out -# / in a couple of entries without strings. I have -# also removed the change history; the last version indicates this is -# version 4.3 by A.Barkus, September 1990 (earliest entry is October 1989). -# - -# McDonnell Information Systems Terminal Family History -# ========================================= -# -# Prism-1, Prism-2 and P99: -# Ancient Microdata and CMC terminals, vaguely like Adds Regent 25. -# -# Prism-4 and Prism-5: -# Slightly less ancient range of Microdata terminals. Follow-on from -# Prism-2, but with many enhancements. P5 has eight display pages. -# -# Prism-6: -# A special terminal for use with library systems, primarily in Germany. -# Limited numbers. Similar functionality to P5 (except attributes?). -# -# Prism-7, Prism-8 and Prism-9: -# More recent range of MDIS terminals, in which P7 and P8 -# replace the P4 & P5, with added functionality, and P9 is the flagship. -# The P9 has two emulation modes - P8 and ANSI - and includes a -# large number of the DEC VT220 control sequences. Both -# P8 and P9 support 80c/24ln/8pg and 132cl/24li/4pg formats. -# -# Prism-12 and Prism-14: -# Latest range, functionally very similar to the P9. The P14 has a -# black-on-white overscanning screen. -# -# The terminfo definitions given here are: -# -# p2 - Prism-2 (or Prism-1 or P99). -# -# p4 - Prism-4 (and older P7s & P8s). -# p5 - Prism-5 (or Prism-6). -# -# p7 - Prism-7. -# p8 - Prism-8 (in national or multinational mode). -# p8-w - 132 column version of p8. -# p9 - Prism-9 in ANSI mode. -# p9-w - 132 column version of p9. -# p9-8 - Prism-9 in Prism-8 emulation mode. -# p9-8-w - As p9-8, but with 132 columns. -# -# p12 - Prism-12 in ANSI mode. -# p12-w - 132 column version of p12. -# p12-m - Prism-12 in MDC emulation mode. -# p12-m-w - As p12-m, but with 132 columns. -# p14 - Prism-14 in ANSI mode. -# p14-w - 132 column version of p14. -# p14-m - Prism-14 in MDC emulation mode. -# p14-m-w - As p14-m, but with 132 columns. -# -# p2: Prism-2 -# ----------- -# -# Includes Prism-1 and basic P99 without SP or MP loaded. -# The simplest form of Prism-type terminal. -# Basic cursor movement and clearing operations only. -# No video attributes. -# Notes: -# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next -# value up, followed by backspace. -# -prism2|MDC Prism-2, - am, bw, msgr, - cols#80, lines#24, - bel=^G, clear=\014$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - cuu1=^Z, ed=\EJ, el=\EK, home=^A, - hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - ind=^J, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c, - -# p4: Prism-4 -# ----------- -# -# Includes early versions of P7 & P8. -# Basic family definition for most Prisms (except P2 and P9 ANSI). -# Notes: -# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next -# value up, followed by backspace. -# Cursor key definitions removed because they interfere with vi and csh keys. -# -prism4|p4|P4|MDC Prism-4, - am, bw, hs, mc5i, msgr, - cols#80, lines#24, wsl#72, xmc#1, - bel=^G, blink=^CB, civis=^]\344, clear=\014$<20>, - cnorm=^]\342, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK, - fsl=^]\345, home=^A, - hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, - ind=^J, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER, - rev=^CD, rmso=^C\s, rmul=^C\s, - sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2}%+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;, - sgr0=^C\s, smso=^CD, smul=^CP, tsl=^]\343, - vpa=\013%p1%{32}%+%c, - -# p5: Prism-5 -# ----------- -# -# Same definition as p4. Includes Prism-6 (not tested!). -# Does not use any multi-page features. -# -prism5|p5|P5|MDC Prism-5, - use=p4, - -# p7: Prism-7 -# ----------- -# -# Similar definition to p4. Uses ANSI cursor motion to avoid network problems. -# Notes: -# Use p4 for very early models of P7. -# Rev-index removed; can't send nulls to terminal in 8-bit modes. -# -prism7|p7|P7|MDC Prism-7, - cup=\E[%i%p1%d;%p2%dH, hpa@, vpa@, use=p4, - -# p8: Prism-8 -# ----------- -# -# Similar definition to p7. Uses ANSI cursor motion to avoid network problems. -# Supports national and multinational character sets. -# Notes: -# Alternate char set operations only work in multinational mode. -# Use p4 for very early models of P8. -# Rev-index removed; can't send nulls to terminal in 8-bit modes. -# (esr: commented out / because there's no ) -# -prism8|p8|P8|MDC Prism-8, - cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h, - vpa=\E[%i%p1%dd, use=p4, - -# p8-w: Prism-8 in 132 column mode -# -------------------------------- -# -# 'Wide' version of p8. -# Notes: -# Rev-index removed; can't send nulls to terminal in 8-bit modes. -# -prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode, - cols#132, - is2=\E[<12h\E[<14h, use=p8, - -# p9: Prism-9 in ANSI mode -# ------------------------- -# -# The "flagship" model of this generation of terminals. -# ANSI X3.64 (ISO 6429) standard sequences, plus many DEC VT220 ones. -# Notes: -# Tabs only reset by "reset". Otherwise assumes default (8 cols). -# Fixes to deal with terminal firmware bugs: -# . 'ri' uses insert-line since rev index doesn't always -# . 'sgr0' has extra '0' since esc[m fails -# . 'fsl' & 'dsl' use illegal char since cr is actioned wrong on line 25 -# Not covered in the current definition: -# . Labels -# . Programming Fn keys -# . Graphic characters (defaults correctly to vt100) -# . Padding values (sets xon) -# (esr: commented out / because there's no ) -# -prism9|p9|P9|MDC Prism-9 in ANSII mode, - am, bw, hs, mc5i, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#72, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l, - clear=^L, cnorm=\E[<4h, cr=^M, csr=\E[%i%p1%d;%p2%d%%v, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, dsl=\E[%}\024, ech=\E[%p1%dX, - ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`, - ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, - is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, 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~, 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[H, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=^M^J, - 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, - rs2=\E[&p\E[<12l\E F\E[3g\E[9;17;25;33;41;49;57;65;73 N, - sc=\E[%y, - sgr=\E[%{0}%?%p1%p3%|%t%{7}%+%;%?%p2%t%{2}%+%;%?%p4%t%{5}%+%;%?%p6%t%{1}%+%;m%?%p8%t\E[%{32}%+%d%%{%;%?%p9%t\016%e\017%;, - sgr0=\E[0m\017, smir=\E[4h, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd, - -# p9-w: Prism-9 in 132 column mode -# -------------------------------- -# -# 'Wide' version of p9. -# -prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode, - cols#132, - is2=\E[&p\E[<12l\E F\E[<14h, - rs2=\E[&p\E[<12l\E F\E[<14h, use=p9, - -# p9-8: Prism-9 in P8 mode -# ------------------------ -# -# P9 terminal in P8 emulation mode. -# Similar to p8 definition. -# Insertion and deletion operations possible. -# -prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8, - -# p9-8-w: Prism-9 in P8 and 132 column modes -# ------------------------------------------ -# -# P9 terminal in P8 emulation mode and 132 column mode. -# -prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w, - -# p12: Prism-12 in ANSI mode -# --------------------------- -# -# See p9 definition. -# -prism12|p12|P12|MDC Prism-12 in ANSI mode, - use=p9, - -# p12-w: Prism-12 in 132 column mode -# ---------------------------------- -# -# 'Wide' version of p12. -# -prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode, - use=p9-w, - -# p12-m: Prism-12 in MDC emulation mode -# ------------------------------------- -# -# P12 terminal in MDC emulation mode. -# Similar to p8 definition. -# Insertion and deletion operations possible. -# -prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode, - use=p9-8, - -# p12-m-w: Prism-12 in MDC emulation and 132 column modes -# ------------------------------------------------------- -# -# P12 terminal in MDC emulation mode and 132 column mode. -# -prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode, - use=p9-8-w, - -# p14: Prism-14 in ANSII mode -# --------------------------- -# -# See p9 definition. -# -prism14|p14|P14|MDC Prism-14 in ANSII mode, - use=p9, - -# p14-w: Prism-14 in 132 column mode -# ---------------------------------- -# -# 'Wide' version of p14. -# -prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode, - use=p9-w, - -# p14-m: Prism-14 in MDC emulation mode -# ------------------------------------- -# -# P14 terminal in MDC emulation mode. -# Similar to p8 definition. -# Insertion and deletion operations possible. -# -prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode, - use=p9-8, - -# p14-m-w: Prism-14 in MDC emulation and 132 column modes -# ------------------------------------------------------- -# -# P14 terminal in MDC emulation mode and 132 column mode. -# -prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode, - use=p9-8-w, - -# End of McDonnell Information Systems Prism definitions - -# These things were popular in the Pick database community at one time -# From: George Land 24 Sep 1996 -p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition, - am, bw, hs, mir, - cols#80, lines#24, ma#1, wsl#78, xmc#1, - bel=^G, blink=^CB, clear=^L, cr=^M, cub1=^U, cud1=^J, cuf1=^F, - cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, dch1=\s^H, dim=^CA, dl1=^P, - ed=\EJ, el=\EK, home=^A, ind=^J, invis=^CH, kbs=^H, kcub1=^U, - kcud1=^J, kcuf1=^F, kcuu1=^Z, kdch1=\s^H, kdl1=^P, ked=\EJ, - kel=\EK, kf1=^A@\r, kf10=^AI\r, kf12=^AJ\r, kf13=^AK\r, - kf14=^AL\r, kf15=^AM\r, kf16=^AN\r, kf17=^AO\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^A, lf1=F1, lf10=F10, lf2=F2, - lf3=F3, lf4=F4, lf5=F5, lf6=F6, lf7=F7, lf8=F8, lf9=F9, nel=^J^M, - pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE, - smul=^C0, - -#### Microterm (act, mime) -# -# The mime1 entries refer to the Microterm Mime I or Mime II. -# The default mime is assumed to be in enhanced act iv mode. -# - -# New "safe" cursor movement (5/87) from . Prevents -# freakout with out-of-range args on Sytek multiplexors. No and -# since it gets confused and it's too dim anyway. No -# since Sytek insists ^S means xoff. -# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr) -act4|microterm|microterm act iv, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\014$<12/>, cr=^M, cub1=^H, cud1=^K, cuf1=^X, - cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c, - cuu1=^Z, dch1=\004$<.1*/>, dl1=\027$<2.3*/>, - ed=\037$<2.2*/>, el=\036$<.1*/>, home=^], - il1=\001<2.3*/>, ind=^J, kcub1=^H, kcud1=^K, kcuf1=^X, - kcuu1=^Z, -# The padding on :sr: and :ta: for act5 and mime is a guess and not final. -# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)... -# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr) -act5|microterm5|microterm act v, - kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA, - use=act4, -# Mimes using brightness for standout. Half bright is really dim unless -# you turn up the brightness so far that lines show up on the screen. -mime-fb|full bright mime1, - is2=^S\E, rmso=^S, smso=^Y, use=mime, -mime-hb|half bright mime1, - is2=^Y\E, rmso=^Y, smso=^S, use=mime, -# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode -# the more plausible ":do=^J:" -- esr) -# uc was at one time disabled to get around a curses bug, be wary of it -mime|mime1|mime2|mimei|mimeii|microterm mime1, - OTbs, am, - cols#80, it#8, lines#24, vt#9, - bel=^G, clear=^]^C, cr=^M, cub1=^H, cud1=^J, cuf1=^X, - cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c, - cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>, - il1=\001$<80>, ind=^J, is2=^S\E^Q, kcub1=^H, kcud1=^K, - kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U, -# These termcaps (for mime2a) put the terminal in low intensity mode -# since high intensity mode is so obnoxious. -mime2a-s|microterm mime2a (emulating an enhanced soroc iq120), - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EI, dch1=\ED, - dl1=\027$<20*>, ed=\EJ$<20*>, el=\EK, home=^^, - il1=\001$<20*>, ind=^J, ip=$<2>, is2=\E), kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, ri=\EI, rmir=^Z, rmso=\E;, rmul=\E7, - smir=\EE, smso=\E\:, smul=\E6, -# This is the preferred mode (but ^X can't be used as a kill character) -mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52), - OTbs, - cols#80, it#8, lines#24, - bel=^G, clear=\EL, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N, - dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I, - il1=\001$<20*>, ind=^J, ip=$<2>, is2=^Y, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9, - rmul=\E5, smir=^O, smso=\E8, smul=\E4, -# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr) -mime3a|mime1 emulating 3a, - am@, - kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a, -mime3ax|mime-3ax|mime1 emulating enhanced 3a, - it#8, - dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>, - use=mime3a, -# Wed Mar 9 18:53:21 1983 -# We run our terminals at 2400 baud, so there might be some timing problems at -# higher speeds. The major improvements in this model are the terminal now -# scrolls down and insert mode works without redrawing the rest of the line -# to the right of the cursor. This is done with a bit of a kludge using the -# exit graphics mode to get out of insert, but it does not appear to hurt -# anything when using vi at least. If you have some users using act4s with -# programs that use curses and graphics mode this could be a problem. -mime314|mm314|mime 314, - am, - cols#80, lines#24, - clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z, - dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H, - kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S, -# Microterm mime 340 from University of Wisconsin -mm340|mime340|mime 340, - cols#80, lines#24, - clear=\032$<12/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\E#$<2.1*/>, dl1=\EV$<49.6/>, ed=\037$<2*/>, - el=\EL$<2.1/>, ht=^I, il1=\EU$<46/>, ind=^J, is2=\E\,, - kbs=^H, kcub1=^H, kcud1=^J, kcuu1=^K, nel=^M^J, -# This came from University of Wisconsin marked "astro termcap for jooss". -# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:"; -# also added / based on the init string -- esr) -mt4520-rv|micro-term 4520 reverse video, - am, hs, msgr, xenl, xon, - cols#80, it#8, lines#24, wsl#80, - bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h, - fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, - ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, - ll=\E[24;1H, nel=\EE, rc=\E8, rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m, - rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J, - sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, - tbc=\E[g, tsl=\E[25;1H, - -# Fri Aug 5 08:11:57 1983 -# This entry works for the ergo 4000 with the following setups: -# ansi,wraparound,newline disabled, xon/xoff disabled in both -# setup a & c. -# -# WARNING!!! There are multiple versions of ERGO 4000 microcode -# Be advised that very early versions DO NOT WORK RIGHT !! -# Microterm does have a ROM exchange program- use it or lose big -# (ergo400: added / based on the init string -- esr) -ergo4000|microterm ergo 4000, - da, db, msgr, - cols#80, lines#66, - bel=^G, clear=\E[H\E[2J$<80>, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - dch1=\E[1P$<80>, dl1=\E[1M$<5*>, 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>, - smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>, - smso=\E[7m$<20>, - -#### NCR -# -# NCR's terminal group was merged with AT&T's when AT&T bought the company. -# For what happened to that group, see the ADDS section. -# -# There is an NCR4103 terminal that's just a re-badged Wyse-50. -# - -# The following vendor-supplied termcaps were captured from the Boundless -# Technologies site, 8 March 1998. I removed all-upper-case names that were -# identical, except for case, to lower-case ones. I also uncommented the acsc -# capabilities.X -# -# The Intecolor emulation of the NCR 2900/260C color terminal is basically a -# DEC vt200/300 with color capabilities added. -ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300an, -# The Intecolor emulation of the NCR 2900/260C color terminal is basically a -# DEC vt200/300 with color capabilities added. -ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300wan, -# The Intecolor emulation of the NCR 2900/260C color terminal is basically a -# DEC vt200/300 with color capabilities added. -ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300pp, -# The Intecolor emulation of the NCR 2900/260C color terminal is basicly a -# DEC vt200/300 with color capabilities added. -ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode, - colors#8, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - use=ncr260vt300wpp, -# This definition for ViewPoint supports several attributes. This means -# that it has magic cookies (extra spaces where the attributes begin). -# Some applications do not function well with magic cookies. The System -# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. -# If supporting various attributes is not vital, 'xmc#1' and the extra -# attributes can be removed. -# Mapping to ASCII character set ('acsc' capability) can also be -# restored if needed. -ncr260vppp|NCR 2900_260 viewpoint, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, lines#24, nlab#32, xmc#1, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5, - cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>, - dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>, - el=\EK$<2>, fsl=^M, home=\036$<2>, ht=^I, hts=\E1, - il1=\EM$<2>, ind=\n$<2>, invis=\EG1, - is2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ, - kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=^J, kcuf1=^F, - kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B\:\r, - kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r, - kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r, - kf20=^B$\r, kf21=\002%^M, kf22=^B&\r, kf23=^B'\r, - kf24=^B(\r, kf25=^B)\r, kf26=^B*\r, kf27=^B+\r, - kf28=^B\,\r, kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r, - kf32=^B0\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r, - kf8=^B8\r, kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ, - kprt=\EP, ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R, - mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>, - nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003, - rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\E~%$<100>\E+\E`\:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq, - smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF, -ncr260vpwpp|NCR 2900_260 viewpoint wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0\EcC1\Ee7$<100>, - use=ncr260vppp, -ncr260vt100an|NCR 2900_260 vt100 with ansi kybd, - am, hs, mir, msgr, xenl, xon, - cols#80, lines#24, nlab#32, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>, - cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, - cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, - cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, - dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, - ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>, - fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I, - hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, - il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>, - invis=\E[8m, - 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, - kdch1=\E[3~, kfnd=\E[1~, khlp=\E[28~, kich1=\E[2~, - knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, nel=\EE$<5>, - rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<20>, - sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g, - tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+keypad, -ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt100an, -ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd, - is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, - kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, - rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - smkx=\E=, use=ncr260vt100an, -ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt100pp, -ncr260vt200an|NCR 2900_260 vt200 with ansi kybd, - am, hs, mir, msgr, xenl, xon, - cols#80, lines#24, nlab#32, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, - csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>, - cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, - cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, - cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, - dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, - ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, - fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, - ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, - ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, - 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, - kdch1=\E[3~, 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~, - kf2=\EOQ, 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~, kf3=\EOR, kf30=\E[5~, - kf31=\E[6~, kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, - kf35=\E[10~, kf4=\EOS, kf5=\E[M, kf6=\E[17~, kf7=\E[18~, - kf8=\E[19~, kf9=\E[20~, kfnd=\E[1~, khlp=\E[28~, - kich1=\E[2~, knp=\E[6~, kpp=\E[5~, krdo=\E[29~, kslt=\E[4~, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, rev=\E[7m, - ri=\EM$<5>, rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, - rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, - use=vt220+keypad, -ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, - use=ncr260vt200an, -ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd, - ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, - kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, - use=ncr260vt200an, -ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+ kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt200pp, -ncr260vt300an|NCR 2900_260 vt300 with ansi kybd, - am, hs, mir, msgr, xenl, xon, - cols#80, lines#24, nlab#32, - acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[1;1H$<20>, cnorm=\E[?25h, cr=\r$<1>, - csr=\E[%i%p1%d;%p2%dr$<5>, cub=\E[%p1%dD$<5>, - cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, - cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, - cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, - cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, - dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, - ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, - fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, - ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, - ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, - 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, - kdch1=\E[3~, 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~, kfnd=\E[1~, - khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - krdo=\E[29~, kslt=\E[4~, mc0=\E[i, mc4=\E[4i, mc5=\E[5i, - nel=\EE, rc=\E8, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>, - rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, - rmul=\E[24m, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;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=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, - use=vt220+keypad, -ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H$<200>, - use=ncr260vt300an, -ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd, - ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, - kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, - use=ncr260vt300an, -NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd, - cols#132, - cup=\E[%i%p1%d;%p2%dH$<30>, - is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1H\E>$<200>, - use=ncr260vt300pp, -# This terminfo file contains color capabilities for the Wyse325 emulation of -# the NCR 2900/260C color terminal. Because of the structure of the command -# (escape sequence) used to set color attributes, one of the fore/background -# colors must be preset to a given value. I have set the background color to -# black. The user can change this setup by altering the last section of the -# 'setf' definition. The escape sequence to set color attributes is -# ESC d y 1 -# In addition, the background color can be changed through the desk accessories. -# The capablitiy 'op' sets colors to green on black (default combination). -# -# NOTE: The NCR Unix System Administrator's Shell will not function properly -# if the 'pairs' capability is defined. Un-Comment the 'pairs' -# capability and recompile if you wish to have it included. -# -ncr260wy325pp|NCR 2900_260 wyse 325, - am, bw, hs, km, mc5i, mir, msgr, xon, - colors#16, cols#80, lines#24, ncv#33, nlab#32, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=^M, - cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, - ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<5>, ht=^I, - hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, - 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=^J, 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, - 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, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - setb=\s, - setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57}%e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t%{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%=%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, - tsl=\EF, -ncr260wy325wpp|NCR 2900_260 wyse 325 wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - use=ncr260wy325pp, -# This definition for Wyse 350 supports several attributes. This means -# that it has magic cookies (extra spaces where the attributes begin). -# Some applications do not function well with magic cookies. The System -# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. -# If supporting various attributes is not vital, 'xmc#1' and the extra -# attributes can be removed. -# Mapping to ASCII character set ('acsc' capability) can also be -# restored if needed. -# In addition, color capabilities have been added to this file. The drawback, -# however, is that the background color has to be black. The foreground colors -# are numbered 0 through 15. -# -# NOTE: The NCR Unix System Administrator's Shell does not function properly -# with the 'pairs' capability defined as below. If you wish to -# have it included, Un-comment it and recompile (using 'tic'). -# -ncr260wy350pp|NCR 2900_260 wyse 350, - am, bw, hs, km, mc5i, mir, msgr, xon, - colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, - cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, - ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<10>, ht=^I, - hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, - 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{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H, - kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, 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$<10>, mc4=^T, mc5=^R, - mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>, - nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0, - rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - setb=\s, - setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51}%e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54}%e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97}%e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t%{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1%{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>, - sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/, - smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0, - tsl=\EF, -ncr260wy350wpp|NCR 2900_260 wyse 350 wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - use=ncr260wy350pp, -# This definition for Wyse 50+ supports several attributes. This means -# that it has magic cookies (extra spaces where the attributes begin). -# Some applications do not function well with magic cookies. The System -# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. -# If supporting various attributes is not vital, 'xmc#1' and the extra -# attributes can be removed. -# Mapping to ASCII character set ('acsc' capability) can also be -# restored if needed. -# (ncr260wy50+pp: originally contained commented-out -# , as well as the commented-out one there -- esr) -ncr260wy50+pp|NCR 2900_260 wyse 50+, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, lines#24, nlab#32, xmc#1, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, - cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=^M, - cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, - ed=\EY$<5>, el=\ET$<5>, fsl=^M, home=\036$<10>, - ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>, - invis=\EG1, - is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, kbs=^H, - kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, kcud1=^J, 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$<10>, 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^C, rmam=\Ed., - rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq, - smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF, -ncr260wy50+wpp|NCR 2900_260 wyse 50+ wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<200>, - use=ncr260wy50+pp, -ncr260wy60pp|NCR 2900_260 wyse 60, - am, bw, hs, km, mc5i, mir, msgr, xon, - cols#80, lines#24, nlab#32, - acsc=07a?h;j5k3l2m1n8q\:t4u9v=w0x6, bel=^G, blink=\EG2, - cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, - cr=^M, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, - cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, - ed=\Ey$<5>, el=\Et$<5>, fsl=^M, home=\036$<25>, - ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>, - invis=\EG1, - is2=\Ee6\E~4$<100>\E+\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$<15>, kcub1=^H, kcud1=^J, 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, - mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>, - nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed., - rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, - rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`\:\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/, - smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>, - tsl=\EF, -ncr260wy60wpp|NCR 2900_260 wyse 60 wide mode, - cols#132, - cup=\Ea%i%p1%dR%p2%dC$<30>, - is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9\Ee7$<100>, - use=ncr260wy60pp, -ncr160vppp|NCR 2900_160 viewpoint, - use=ncr260vppp, -ncr160vpwpp|NCR 2900_160 viewpoint wide mode, - use=ncr260vpwpp, -ncr160vt100an|NCR 2900_160 vt100 with ansi kybd, - use=ncr260vt100an, -ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd, - use=ncr260vt100pp, -ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd, - use=ncr260vt100wan, -ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+ kybd, - use=ncr260vt100wpp, -ncr160vt200an|NCR 2900_160 vt200 with ansi kybd, - use=ncr260vt200an, -ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd, - use=ncr260vt200pp, -ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd, - use=ncr260vt200wan, -ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+ kybd, - use=ncr260vt200wpp, -ncr160vt300an|NCR 2900_160 vt300 with ansi kybd, - use=ncr260vt300an, -ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd, - use=ncr260vt300pp, -ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd, - use=ncr260vt300wan, -ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+ kybd, - use=ncr260vt300wpp, -ncr160wy50+pp|NCR 2900_160 wyse 50+, - use=ncr260wy50+pp, -ncr160wy50+wpp|NCR 2900_160 wyse 50+ wide mode, - use=ncr260wy50+wpp, -ncr160wy60pp|NCR 2900_160 wyse 60, - use=ncr260wy60pp, -ncr160wy60wpp|NCR 2900_160 wyse 60 wide mode, - use=ncr260wy60wpp, -ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal, - am, hs, mc5i, mir, msgr, xon, - cols#80, it#8, lines#24, nlab#32, - acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~, - bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>, - clear=\E[2J\E[1;1H$<300>, cr=^M, - csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>, - cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>, - cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>, - cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>, - dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>, - ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>, - enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>, - ht=^I, hts=\EH, 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, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kent=^M, 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>, - 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, - sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%?%p9%t\016%e\017%;$<100>, - 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>, -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>, - rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B\E)0\E%/0n\E[P\031$<200>, - use=ncrvt100an, -# -# Vendor-supplied NCR termcaps end here - -# NCR7900 DIP switches: -# -# Switch A: -# 1-4 - Baud Rate -# 5 - Parity (Odd/Even) -# 6 - Don't Send or Do Send Spaces -# 7 - Parity Enable -# 8 - Stop Bits (One/Two) -# -# Switch B: -# 1 - Upper/Lower Shift -# 2 - Typewriter Shift -# 3 - Half Duplex / Full Duplex -# 4 - Light/Dark Background -# 5-6 - Carriage Return Without / With Line Feed -# 7 - Extended Mode -# 8 - Suppress Keyboard Display -# -# Switch C: -# 1 - End of line entry disabled/enabled -# 2 - Conversational mode / (Local?) Mode -# 3 - Control characters displayed / not displayed -# 4 - (2-wire?) / 4-wire communications -# 5 - RTS on and off for each character -# 6 - (50Hz?) / 60 Hz -# 7 - Exit after level zero diagnostics -# 8 - RS-232 interface -# -# Switch D: -# 1 - Reverse Channel (yes / no) -# 2 - Manual answer (no / yes) -# 3-4 - Cursor appearance -# 5 - Communication Rate -# 6 - Enable / Disable EXT turnoff -# 7 - Enable / Disable CR turnoff -# 8 - Enable / Disable backspace -# -# Since each attribute parameter is 0 or 1, we shift each attribute (standout, -# reverse, blink, dim, and underline) the appropriate number of bits (by -# multiplying the 0 or 1 by a correct factor to shift) so the bias character, -# '@' is (effectively) "or"ed with each attribute to generate the proper third -# character in the 0 sequence. The string implements the following -# equation: -# -# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17)) => -# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17)) -# -# Where: P1 <==> Standout attribute parameter -# P2 <==> Underline attribute parameter -# P3 <==> Reverse attribute parameter -# P4 <==> Blink attribute parameter -# P5 <==> Dim attribute parameter -# From , init string hacked by SCO. -ncr7900i|ncr7900|ncr 7900 model 1, - am, bw, ul, - cols#80, lines#24, xmc#1, - bel=^G, blink=\E0B, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=^J, - is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=^J, kcuf1=^F, - kcuu1=^Z, khome=^A, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=\E0@, - rmul=\E0@, - sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c, - sgr0=\E0@, smso=\E0Q, smul=\E0`, -ncr7900iv|ncr 7900 model 4, - am, bw, eslok, hs, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, - cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1, - fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=^J, kbs=^H, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET, - kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, - khome=\EH, lf6=blue, lf7=red, lf8=white, nel=^M^J, - tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo, -# Warning: This terminal will lock out the keyboard when it receives a CTRL-D. -# The user can enter a CTRL-B to get out of this locked state. -# In , we want to output the character given by the formula: -# ((col / 10) * 16) + (col % 10) where "col" is "p1" -ncr7901|ncr 7901 model, - am, bw, ul, - cols#80, lines#24, - bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=^M, - cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dim=\E0A, - ed=\Ek, el=\EK, - hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=^J, - is2=\E4^O, kclr=^L, kcub1=^U, kcud1=^J, kcuf1=^F, kcuu1=^Z, - khome=^H, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=^O, rmul=^O, - sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17}%*%+%c\016, - sgr0=^O, smso=\E0Q\016, smul=\E0`\016, - vpa=\013%p1%{64}%+%c, - -# Newbury Data Recording Limited (Newbury Data) -# -# Have been manufacturing and reselling various peripherals for a long time -# They don't make terminals anymore, but are still in business (in 2007). -# Their e-mail address is at ndsales@newburydata.co.uk -# and their post address is: -# -# Newbury Data Recording Ltd, -# Premier Park, Road One, -# Winsford, Cheshire, CW7 3PT -# -# Their technical support is still good, they sent me for free a printed copy -# of the 9500 user manual and I got it just 1 week after I first contacted them -# (in 2005)! - -# NDR 9500 -# Manufactured in the early/mid eighties, behaves almost the same as a -# Televideo 950. Take a 950, change its cabinet for a more 80s-ish one (but -# keep the same keyboard layout), add an optional 25-line mode, replace the DIP -# switches with a menu and remove the "lock line" feature (ESC ! 1 and ESC ! -# 2), here is the NDR 9500. Even the line-lock, albeit disabled, is -# recognized: if you type in "ESC !", the next (third) character is not -# echoed, showing that the terminal was actually waiting for a parameter! -ndr9500|nd9500|Newbury Data 9500, - am, bw, hs, mc5i, mir, msgr, ul, xon, - cols#80, lines#24, wsl#79, - acsc=jDkClBmAnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, civis=\E.0, - clear=\E;, cnorm=\E.1, cr=^M, cub1=^H, cud1=^V, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dim=\E), dl1=\ER, dsl=\Eh, ed=\EY, el=\ET, - flash=\Eb$<50/>\Ed, fsl=^M, home=^^, ht=^I, hts=\E1, - ich1=\EQ, il1=\EE, ind=^J, is2=\Ew\E'\EDF\El\Er\EO, - kDC=\Er, kDL=\EO, kEOL=\Et, kIC=\Eq, kcbt=\EI, kclr=^Z, - kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, - ked=\EY, kel=\ET, kent=^M, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, - kf12=^A`\r, kf13=^Aa\r, kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, - kf17=^Ae\r, kf18=^Af\r, kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, - kf21=^Ai\r, kf22=^Aj\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, kprt=\EP, mc4=\Ea, mc5=\E`, nel=^_, - pfloc=\E|%{48}%p1%+%c2%p2\031, - pfx=\E|%{48}%p1%+%c1%p2\031, prot=\E), ri=\Ej, - rmacs=\E%%, rmir=\Er, rmso=\E(, rmxon=^N, - sgr=\E%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;, - sgr0=\EG0\E%%\E(, smacs=\E$, smir=\Eq, smso=\E), smxon=^O, - tbc=\E3, tsl=\Eg\Ef\011%p1%{32}%+%c, .kbs=^H, - -ndr9500-nl|NDR 9500 with no status line, - hs@, - wsl@, - dsl@, fsl@, tsl@, use=ndr9500, - -ndr9500-25|NDR 9500 with 25th line enabled, - lines#25, use=ndr9500, - -ndr9500-25-nl|NDR 9500 with 25 lines and no status line, - lines#25, use=ndr9500-nl, - -ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisible and blink), - msgr@, - xmc#1, - blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, - sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1}%+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c, - sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500, - -ndr9500-25-mc|NDR 500 with 25 lines and magic cookies, - lines#25, use=ndr9500-mc, - -ndr9500-mc-nl|NDR 9500 with magic cookies and no status line, - hs@, - wsl@, - dsl@, fsl@, tsl@, use=ndr9500-mc, - -ndr9500-25-mc-nl|NDR 9500 with 25 lines and magic cookies and no status line, - lines#25, use=ndr9500-mc-nl, - -#### Perkin-Elmer (Owl) -# -# These are official terminfo entries from within Perkin-Elmer. -# - -bantam|pe550|pe6100|perkin elmer 550, - OTbs, - cols#80, lines#24, - bel=^G, clear=\EK$<20>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - el=\EI$<20>, home=\EH, ind=^J, ll=\EH\EA, -fox|pe1100|perkin elmer 1100, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003, - home=\EH, hts=\E1, ind=^J, ll=\EH\EA, tbc=\E3, -owl|pe1200|perkin elmer 1200, - OTbs, am, in, - cols#80, lines#24, - bel=^G, clear=\EH\EJ$<132>, cr=^M, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>, - el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH, - hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=^J, ip=$<5.5*>, - kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD, - kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA, - rmso=\E!\0, sgr0=\E!\0, smso=\E!^H, tbc=\E3, -pe1251|pe6300|pe6312|perkin elmer 1251, - am, - cols#80, it#8, lines#24, pb#300, vt#8, xmc#1, - bel=^G, clear=\EK$<332>, cr=^M, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, - ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=^J, - kf0=\ERA, kf1=\ERB, kf10=\ERK, kf2=\ERC, kf3=\ERD, kf4=\ERE, - kf5=\ERF, kf6=\ERG, kf7=\ERH, kf8=\ERI, kf9=\ERJ, tbc=\E3, -# (pe7000m: this had -# rmul=\E!\0, smul=\E!\040, -# which is probably wrong, it collides with kf0 -pe7000m|perkin elmer 7000 series monochrome monitor, - am, - cols#80, lines#24, - bel=^G, cbt=\E!Y, clear=\EK, cr=^M, cub1=\ED, cud1=\EB, - cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - ed=\EJ, el=\EI, home=\EH, ind=^J, - is1=\E!\0\EW 7o\Egf\ES7\s, kbs=^H, kcub1=\E!V, - kcud1=\E!U, kcuf1=\E!W, kcuu1=\E!T, kf0=\E!\0, kf1=\E!^A, - kf10=\E!^J, kf2=\E!^B, kf3=\E!^C, kf4=\E!^D, kf5=\E!^E, - kf6=\E!^F, kf7=\E!^G, kf8=\E!^H, kf9=\E!^I, khome=\E!S, - ll=\ES7\s, ri=\ER, -pe7000c|perkin elmer 7000 series colour monitor, - is1=\E!\0\EW 7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0, - rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m, - -#### Sperry Univac -# -# Sperry Univac has merged with Burroughs to form Unisys. -# - -# This entry is for the Sperry UTS30 terminal running the TTY -# utility under control of CP/M Plus 1R1. The functionality -# provided is comparable to the DEC vt100. -# (uts30: I added / based on the init string -- esr) -uts30|sperry uts30 with cp/m@1R1, - am, bw, hs, - cols#80, lines#24, wsl#40, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\ER, clear=^L, - cnorm=\ES, cr=^M, csr=\EU%p1%{32}%+%c%p2%{32}%+%c, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EM, - dl=\E[%p1%dM, dl1=\EL, ed=\E[J, el=\E[K, fsl=^M, home=\E[H, - ht=^I, ich=\E[%p1%d@, ich1=\EO, il=\E[%p1%dL, il1=\EN, - ind=^J, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H, - rc=\EX, rev=\E[7m, rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, ri=\EI, - rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m, - rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m, - smul=\E[4m, tsl=\E], uc=\EPB, - -#### Tandem -# -# Tandem builds these things for use with its line of fault-tolerant -# transaction-processing computers. They aren't generally available -# on the merchant market, and so are fairly uncommon. -# - -tandem6510|adm3a repackaged by Tandem, - use=adm3a, - -# A funny series of terminal that TANDEM uses. The actual model numbers -# have a fourth digit after 653 that designates minor variants. These are -# natively block-mode and rather ugly, but they have a character mode which -# this doubtless(?) exploits. There is a 6520 that is slightly dumber. -# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also, -# removed , no such file -- esr) -tandem653|t653x|Tandem 653x multipage terminal, - OTbs, am, da, db, hs, - cols#80, lines#24, wsl#64, xmc#1, - clear=\EI, cub1=^H, cud1=^J, cuf1=\EC, - cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r, - ed=\EJ, el=\EK, fsl=^M, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s, - rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo, - -#### Tandy/Radio Shack -# -# Tandy has a line of VDTs distinct from its microcomputers. -# - -dmterm|deskmate terminal, - am, bw, - cols#80, lines#24, - bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=^M, cub1=^H, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I, - ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4, - kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0, - khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, - lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@, - use=adm+sgr, -dt100|dt-100|Tandy DT-100 terminal, - xon, - cols#80, lines#24, xmc#1, - acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich1=\E[@, - il1=\E[L, ind=^J, 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, -dt100w|dt-100w|Tandy DT-100 terminal (wide mode), - cols#132, use=dt100, -dt110|Tandy DT-110 emulating ansi, - xon, - cols#80, lines#24, - acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, civis=\E[?25l, - clear=\E[H\E[2J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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=^J, 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, -pt210|TRS-80 PT-210 printing terminal, - hc, os, - cols#80, - bel=^G, cr=^M, cud1=^J, ind=^J, - -#### Tektronix (tek) -# -# Tektronix tubes are graphics terminals. Most of them use modified -# oscilloscope technology incorporating a long-persistence green phosphor, -# and support vector graphics on a main screen with an attached "dialogue -# area" for interactive text. -# - -tek|tek4012|tektronix 4012, - OTbs, os, - cols#75, lines#35, - bel=^G, clear=\E\014$<1000>, cr=^M, cub1=^H, cud1=^J, - ff=\014$<1000>, is2=\E^O, -# (tek4013: added to suppress tic warnings re / --esr) -tek4013|tektronix 4013, - acsc=, rmacs=\E^O, smacs=\E^N, use=tek4012, -tek4014|tektronix 4014, - cols#81, lines#38, - is2=\E\017\E9, use=tek4012, -# (tek4015: added to suppress tic warnings re / --esr) -tek4015|tektronix 4015, - acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014, -tek4014-sm|tektronix 4014 in small font, - cols#121, lines#58, - is2=\E\017\E\:, use=tek4014, -# (tek4015-sm: added to suppress tic warnings re / --esr) -tek4015-sm|tektronix 4015 in small font, - acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014-sm, -# Tektronix 4023 from Andrew Klossner -# -# You need to have "stty nl2" in effect. Some versions of tset(1) know -# how to set it for you. -# -# It's got the Magic Cookie problem around stand-out mode. If you can't -# live with Magic Cookie, remove the :so: and :se: fields and do without -# reverse video. If you like reverse video stand-out mode but don't want -# it to flash, change the letter 'H' to 'P' in the :so: field. -tek4023|tektronix 4023, - OTbs, am, - OTdN#4, cols#80, lines#24, vt#4, xmc#1, - OTnl=^J, bel=^G, clear=\E\014$<4/>, cr=^M, cub1=^H, cud1=^J, - cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, - rmso=^_@, smso=^_P, -# It is recommended that you run the 4025 at 4800 baud or less; -# various bugs in the terminal appear at 9600. It wedges at the -# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed -# on keyboard don't work. You have to hit BREAK twice to get -# one break at any speed - this is a documented feature. -# Can't use cursor motion because it's memory relative, and -# because it only works in the workspace, not the monitor. -# Same for home. Likewise, standout only works in the workspace. -# -# was commented out since vi and rogue seem to work better -# simulating it with lots of spaces! -# -# and had 145ms of padding, but that slowed down vi's ^U -# and didn't seem necessary. -# -tek4024|tek4025|tek4027|tektronix 4024/4025/4027, - OTbs, am, da, db, - cols#80, it#8, lines#34, lm#0, - bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=^M, - cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r, - cud1=^F^J, cuf=\037rig %p1%d\r, cuf1=\037rig\r, - cuu=\037up %p1%d\r, cuu1=^K, dch1=\037dch\r, - dl=\037dli %p1%d\r\006, dl1=\037dli\r\006, - ed=\037dli 50\r, ht=^I, ich1=\037ich\r \010, - il=\037up\r\037ili %p1%d\r, il1=\037up\r\037ili\r, - ind=^F^J, - is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r, - rmkx=\037lea p2\r\037lea p4\r\037lea p6\r\037lea p8\r\037lea f5\r, - smkx=\037lea p4 /h/\r\037lea p8 /k/\r\037lea p6 / /\r\037lea p2 /j/\r\037lea f5 /H/\r, -tek4025-17|tek 4025 17 line window, - lines#17, use=tek4025, -tek4025-17-ws|tek 4025 17 line window in workspace, - is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r\037wor 17\r\037mon 17\r, - rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r, - smso=\037att e\r, use=tek4025-17, -tek4025-ex|tek4027-ex|tek 4025/4027 w/!, - is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r, - rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025, -# Tektronix 4025a -# From: Doug Gwyn -# The following status modes are assumed for normal operation (replace the -# initial "!" by whatever the current command character is): -# !COM 29 # NOTE: changes command character to GS (^]) -# ^]DUP -# ^]ECH R -# ^]EOL -# ^]RSS T -# ^]SNO N -# ^]STO 9 17 25 33 41 49 57 65 73 -# Other modes may be set according to communication requirements. -# If the command character is inadvertently changed, termcap can't restore it. -# Insert-character cannot be made to work on both top and bottom rows. -# Clear-to-end-of-display emulation via !DLI 988 is too grotty to use, alas. -# There also seems to be a problem with vertical motion, perhaps involving -# delete/insert-line, following a typed carriage return. This terminal sucks. -# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't -# work any more. -- esr) -tek4025a|Tektronix 4025A, - OTbs, OTpt, am, bw, da, db, xon, - cols#80, it#8, lines#34, - bel=^G, cbt=\035bac;, clear=\035era;\n\035rup;, cmdch=^], - cr=^M, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;, - cud1=^J, cuf=\035rig %p1%d;, cuf1=\035rig;, - cuu=\035up %p1%d;, cuu1=^K, dch=\035dch %p1%d;, - dch1=\035dch;, dl=\035dli %p1%d;, dl1=\035dli;, - el=\035dch 80;, hpa=\r\035rig %p1%d;, ht=^I, - il1=\013\035ili;, ind=^J, indn=\035dow %p1%d;, - rs2=!com 29\035del 0\035rss t\035buf\035buf n\035cle\035dis\035dup\035ech r\035eol\035era g\035for n\035pad 203\035pad 209\035sno n\035sto 9 17 25 33 41 49 57 65 73\035wor 0;, - tbc=\035sto;, -# From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981 -# Here's the command file that I use to get rogue to work on the 4025. -# It should work with any program using the old curses (e.g. it better -# not try to scroll, or cursor addressing won't work. Also, you can't -# see the cursor.) -# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh) -tek4025-cr|tek 4025 for curses and rogue, - OTbs, am, - cols#80, it#8, lines#33, - clear=\037era;, cub1=^H, cud1=^F^J, cuf1=\037rig;, - cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F^J, - is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r, - rmcup=\037wor 0, smcup=\037wor 33h, -# next two lines commented out since curses only allows 128 chars, sigh. -# :ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\ -# :te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0: -tek4025ex|4025ex|4027ex|tek 4025 w/!, - is2=\037com 33\r\n!sto 9\,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, - acsc=, bel=^G, blink=\E[=3;<7m, bold=\E[=7;<4m, cbt=\E[Z, - clear=\E[2J\E[H, cr=^M, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[1A, dch1=\E[1P, - dim=\E[=1;<6m, dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - il1=\E[1L, ind=\E[S, invis=\E[=6;<5, is1=\E%!1\E[m, - is2=\E%!1\E[?6141\E[m, kbs=^H, kcub1=\E[1D, kcud1=\E[1B, - kcuf1=\E[1C, kcuu1=\E[1A, rev=\E[=1;<3m, ri=\E[T, - rmacs=\E[m, rmcup=, rmir=\E[4l, rmso=\E[=0;<1m, - rmul=\E[=0;<1m, sgr0=\E[=0;<1m, smacs=\E[1m, - smcup=\E%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m, - smul=\E[=5;<2m, tbc=\E[1g, - -# (tek4105-30: I added / based on the init string -- esr) -tek4105-30|4015 emulating 30 line vt100, - am, mir, msgr, xenl, xon, - cols#80, it#8, lines#30, vt#3, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, - clear=\E[H\E[J$<50>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, - enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=^H, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, - 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, sc=\E7, - 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=vt100+fnkeys, - -# Tektronix 4105 from BRL -# The following setup modes are assumed for normal operation: -# CODE ansi CRLF no DABUFFER 141 -# DAENABLE yes DALINES 30 DAMODE replace -# DAVISIBILITY yes ECHO no EDITMARGINS 1 30 -# FLAGGING input INSERTREPLACE replace LFCR no -# ORIGINMODE relative PROMPTMODE no SELECTCHARSET G0 B -# SELECTCHARSET G1 0 TABS -2 -# Other setup modes may be set for operator convenience or communication -# requirements; I recommend -# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes -# BYPASSCANCEL CURSORKEYMODE no DAINDEX 1 0 0 -# EOFSTRING '' EOLSTRING EOMCHARS -# GAMODE overstrike GCURSOR 0 100 0 GSPEED 10 1 -# IGNOREDEL no KEYEXCHAR
NVDEFINE -53 "" -# PROMPTSTRING '' QUEUESIZE 2460 WINDOW 0 0 4095 3132 -# XMTDELAY 0 -# and factory color maps. After setting these modes, save them with NVSAVE. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# "IC" cannot be used in combination with "im" & "ei". -# "tek4105a" is just a guess: -tek4105a|Tektronix 4105, - OTbs, OTpt, msgr, xon, - OTkn#8, cols#80, it#8, lines#30, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J, - cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, 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, rc=\E8, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - 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>, - sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - -# -# Tektronix 4106/4107/4109 from BRL -# The following setup modes are assumed for normal operation: -# CODE ansi COLUMNMODE 80 CRLF no -# DABUFFER 141 DAENABLE yes DALINES 32 -# DAMODE replace DAVISIBILITY yes ECHO no -# EDITMARGINS 1 32 FLAGGING input INSERTREPLACE replace -# LFCR no LOCKKEYBOARD no ORIGINMODE relative -# PROMPTMODE no SELECTCHARSET G0 B SELECTCHARSET G1 0 -# TABS -2 -# Other setup modes may be set for operator convenience or communication -# requirements; I recommend -# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes -# BYPASSCANCEL CURSORKEYMODE no DAINDEX 1 0 0 -# EOFSTRING '' EOLSTRING EOMCHARS -# GAMODE overstrike GCURSOR 0 100 0 GSPEED 9 3 -# IGNOREDEL no KEYEXCHAR
NVDEFINE -53 "" -# PROMPTSTRING '' QUEUESIZE 2620 WINDOW 0 0 4095 3132 -# XMTDELAY 0 -# and factory color maps. After setting these modes, save them with NVSAVE. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -# "IC" cannot be used in combination with "im" & "ei". -tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109, - msgr, xon, - cols#80, it#8, lines#32, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, - civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J, - cnorm=\E%!0\ETD10\E%!1, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, cvvis=\E%!0\ETD70\E%!1, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, - il=\E[%p1%dL, il1=\E[L, ind=^J, indn=\E[%p1%dS, 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, rc=\E8, rev=\E[7m, ri=\EM, - rin=\E[%p1%dT, rmacs=^O, rmcup=\E%!0\ELBH=\E%!1, - rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\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>, - sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, - smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g, - -# Tektronix 4107/4109 interpret 4 modes using "\E%!" followed by a code: -# 0 selects Tek mode, i.e., \E%!0 -# 1 selects ANSI mode -# 2 selects ANSI edit-mode -# 3 selects VT52 mode -# -# One odd thing about the description (which has been unchanged since the 90s) -# is that the cursor addressing is using VT52 mode, and a few others use the -# VT52's non-CSI versions of ANSI, e.g., \EJ. -tek4107|tek4109|tektronix terminals 4107 4109, - OTbs, am, mir, msgr, ul, xenl, xt, - cols#79, it#8, lines#29, - bel=^G, blink=\E%!1\E[5m$<2>\E%!0, - bold=\E%!1\E[1m$<2>\E%!0, clear=\ELZ, cnorm=\E%!0, cr=^M, - cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E%!3, - dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=^J, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - rev=\E%!1\E[7m$<2>\E%!0, ri=\EI, - rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0, - sgr=\E%%!1\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>\E%%!0, - sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0, - smul=\E%!1\E[4m$<2>\E%!0, -# Tektronix 4207 with sysline. In the ancestral termcap file this was 4107-s; -# see the note attached to tek4207. -tek4207-s|Tektronix 4207 with sysline but no memory, - eslok, hs, - dsl=\E7\E[?6l\E[2K\E[?6h\E8, fsl=\E[?6h\E8, - is1=\E%!1\E[2;32r\E[132D\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[J, - is2=\E7\E[?6l\E[2K\E[?6h\E8, - tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107, - -# The 4110 series may be a wonderful graphics series, but they make the 4025 -# look good for screen editing. In the dialog area, you can't move the cursor -# off the bottom line. Out of the dialog area, ^K moves it up, but there -# is no way to scroll. -# -# Note that there is a floppy for free from Tek that makes the -# 4112 emulate the vt52 (use the vt52 termcap). There is also -# an expected enhancement that will use ANSI standard sequences. -# -# 4112 in non-dialog area pretending to scroll. It really wraps -# but vi is said to work (more or less) in this mode. -# -# 'vi' works reasonably well with this entry. -# -otek4112|o4112-nd|otek4113|otek4114|old tektronix 4110 series, - am, - cols#80, lines#34, - bel=^G, clear=\E^L, cr=^M, cub1=^H, cud1=^J, cuu1=^K, ind=^J, - rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0, -# The 4112 with the ANSI compatibility enhancement -tek4112|tek4114|tektronix 4110 series, - OTbs, am, db, - 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, -tek4112-nd|4112 not in dialog area, - OTns, - cuu1=^K, use=tek4112, -tek4112-5|4112 in 5 line dialog area, - lines#5, use=tek4112, -# (tek4113: this used to have "", someone's mistake; -# removed ", ", which had been commented out in 8.3. -# Note, the !0 and !1 sequences in /// were -# previously \0410 and \0411 sequences...I don't *think* they were supposed -# to be 4-digit octal -- esr) -tek4113|tektronix 4113 color graphics with 5 line dialog area, - OTbs, am, da, eo, - cols#80, lines#5, - clear=\ELZ, cub1=^H, cud1=^J, cuf1=\ELM1 \ELM0, - flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0, - is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0, -tek4113-34|tektronix 4113 color graphics with 34 line dialog area, - lines#34, - is2=\EKA1\ELLB2\ELV0\ELV1, use=tek4113, -# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not -# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up . -# :vb: needs enough delay to let you see the background color being toggled. -tek4113-nd|tektronix 4113 color graphics with no dialog area, - OTbs, am, eo, - cols#80, it#8, lines#34, - clear=\E^L, cub1=^H, cud1=^J, cuf1=^I, cuu1=^K, - cvvis=\ELZ\EKA0, - flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERB0, - home=\ELF7l\177 @, ht=^I, is2=\ELZ\EKA0\ELF7l\177 @, - ll=\ELF hl @, rmso=\EMT1, smso=\EMT2, uc=\010\EMG1_\EMG0, -# This entry is from Tek. Inc. (Brian Biehl) -# (tek4115: :bc: renamed to :le:, / added based on init string -- esr) -otek4115|Tektronix 4115, - OTbs, am, da, db, eo, - cols#80, it#8, lines#34, - cbt=\E[Z, clear=\E[H\E[2J, - cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, - cvvis=\E%!0\ELBB2\E%!1, dch1=\E[P, dl1=\E[M, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - il1=\E[L, - 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, -tek4115|newer tektronix 4115 entry with more ANSI capabilities, - am, xon, - cols#80, lines#34, - bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, - cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG, - ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, invis=\E[8m, kbs=^H, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, - rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rmam=\E[?7l, - rmso=\E[m, rmul=\E[m, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;%?%p7%t8;%;m, - sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, - vpa=\E[%p1%{1}%+%dd, -# The tek4125 emulates a vt100 incorrectly - the scrolling region -# command is ignored. The following entry replaces with the needed -# , , and ; removes some cursor pad commands that the tek4125 -# chokes on; and adds a lot of initialization for the tek dialog area. -# Note that this entry uses all 34 lines and sets the cursor color to green. -# Steve Jacobson 8/85 -# (tek4125: there were two "\!"s in the is that I replaced with "\E!"; -# commented out, =\E1 because there's no -- esr) -tek4125|tektronix 4125, - lines#34, - csr@, dl1=\E[1M, il1=\E[1L, - is2=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2\ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - rc@, sc@, smkx=\E=, use=vt100, - -# From: -# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO -# supplied another, less capable 4107 entry. So we'll use that for 4107 and -# note that if jcoker wasn't confused you may be able to use this one. -# I merged in ,,,, from a BRL entry -- esr) -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=^J, 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, - is2=\E%!0\ELBP0\E%!1\E[H\E[2g\EH\E[8C\EH\E[8C\EH\E[8C\EH\E[8C\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, - -# From: Thu Oct 31 12:54:27 1985 -# (tek4404: There was a "\!" in that I replaced with "\E!". -# Tab had been given as \E2I,that must be the tab-set capability -- esr) -tek4404|tektronix 4404, - OTbs, - cols#80, it#8, lines#32, - blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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, rc=\E8, - rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l, - rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, 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, -# Some unknown person wrote: -# I added the is string - straight Unix has ESC ; in the login -# string which sets a ct8500 into monitor mode (aka 4025 snoopy -# mode). The is string here cleans up a few things (but not -# everything). -ct8500|tektronix ct8500, - am, bw, da, db, - cols#80, lines#25, - bel=^G, cbt=\E^I, clear=\E^E, cr=^M, cub1=^H, cud1=^J, - cuf1=\ES, cup=\E|%p1%{32}%+%c%p2%{32}%+%c, cuu1=\ER, - dch1=\E^], dl1=\E^M, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\, - il1=\E^L, ind=^J, is2=\037\EZ\Ek, ri=\E^A, rmso=\E\s, - rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!, - -# Tektronix 4205 terminal. -# -# am is not defined because the wrap around occurs not when the char. -# is placed in the 80'th column, but when we are attempting to type -# the 81'st character on the line. (esr: hmm, this is like the vt100 -# version of xenl, perhaps am + xenl would work!) -# -# Bold, dim, and standout are simulated by colors and thus not allowed -# with colors. The tektronix color table is mapped into the RGB color -# table by setf/setb. All colors are reset to factory specifications by oc. -# The cap uses RGB notation to define colors. for arguments 1-3 the -# interval (0-1000) is broken into 8 smaller sub-intervals (125). Each sub- -# interval then maps into pre-defined value. -tek4205|tektronix 4205, - ccc, mir, msgr, - 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=^M, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch1=\E[1P, dim=\E[=1;<6m, 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, - 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}%<%tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE1%e%p2%{875}%<%tE\:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%<%tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE\:%eF4%;%?%p4%{125}%<%t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%tC8%e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE\:%eF4%;\E%%!1, - invis=\E[=6;<5, is1=\E%!0\ETM1\E%!1\E[m, kbs=^H, - kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOA, - kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EP, kf5=\EQ, kf6=\ER, - kf7=\ES, - oc=\E%!0\ETFB000001F4F4F42F40030F404A4C because of a bug in old vi (if stty says you have -# a "newline" style terminal (-crmode) vi figures all it needs is nl -# to get crlf, even if is not ^M.) -# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr) -tty40|ds40|ds40-2|dataspeed40|teletype dataspeed 40/2, - OTbs, xon, - cols#80, lines#24, - clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB, - cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>, - ed=\EJ$<75>, home=\EH$<10>, ht=\E@$<10>, hts=\E1, - ich1=\E\^$<50>, il1=\EL$<50>, ind=\ES$<20>, kbs=^], - kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4, - rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>, -tty43|model 43 teletype, - OTbs, am, hc, os, xon, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H, - -#### Tymshare -# - -# You can add to put this 40-column mode, though I can't -# for the life of me think why anyone would want to. -scanset|sc410|sc415|Tymshare Scan Set, - am, bw, msgr, - cols#80, lines#24, - acsc=j%k4l, sc=^B, smacs=^N, - -#### Volker-Craig (vc) -# -# If you saw a Byte Magazine cover with a terminal on it during the early -# 1980s, it was probably one of these. Carl Helmers liked them because -# they could crank 19.2 and were cheap (that is, he liked them until he tried -# to program one...) -# - -# Missing in vc303a and vc303 descriptions: they scroll 2 lines at a time -# every other linefeed. -vc303|vc103|vc203|volker-craig 303, - OTbs, OTns, am, - cols#80, lines#24, - bel=^G, clear=\014$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^I, - cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=^J, kcuf1=^I, - kcuu1=^N, ll=\017$<1>W, -vc303a|vc403a|volker-craig 303a, - clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>, - home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303, -# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr) -vc404|volker-craig 404, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\030$<40>, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, - ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=^J, - kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^Z, -vc404-s|volker-craig 404 w/standout mode, - cud1=^J, rmso=^O, smso=^N, use=vc404, -# From: -# (vc414: merged in cup/dl1/home from an old vc414h-noxon) -vc414|vc414h|Volker-Craig 414H in sane escape mode., - OTbs, am, - cols#80, lines#24, - clear=\E\034$<40>, cud1=\E^K, cuf1=^P, - cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3, - dl1=\E\023$<40>, ed=\E^X, el=\E\017$<10/>, home=\E^R, - ich1=\E\:, il1=\E\032$<40>, kcub1=^H, kcud1=\E^K, kcuf1=^P, - kcuu1=\E^L, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, kf4=\EE, - kf5=\EF, kf6=\EG, kf7=\EH, khome=\E^R, lf0=PF1, lf1=PF2, - lf2=PF3, lf3=PF4, lf4=PF5, lf5=PF6, lf6=PF7, lf7=PF8, - rmso=\E^_, smso=\E^Y, -vc415|volker-craig 415, - clear=^L, use=vc404, - -######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS -# - -#### IBM PC and clones -# - -# The pcplot IBM-PC terminal emulation program is really messed up. It is -# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly, -# doesn't support scrolling regions, ignores add line commands, and ignores -# delete line commands. Consequently, the resulting behavior looks like a -# crude adm3a-type terminal. -# Steve Jacobson 8/85 -pcplot|pc-plot terminal emulation program, - xenl@, - csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100, -# KayPro II from Richard G Turner -# I've found that my KayPro II, running MDM730, continues to emulate an -# ADM-3A terminal, just like I was running TERM.COM. On our 4.2 UNIX -# system the following termcap entry works well: -# I have noticed a couple of minor glitches, but nothing I can't work -# around. (I added two capabilities from the BRL entry -- esr) -kaypro|kaypro2|kaypro II, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\032$<1/>, cr=^M, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W, - el=^X, home=^^, il1=\EE, ind=^J, kcud1=^J, kcuf1=^L, kcuu1=^K, - -# From IBM, Thu May 5 19:35:27 1983 -# (ibmpc: commented out =\200R because we don't know -- esr) -ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS), - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L^K, cr=^M^^, cub1=^], cud1=^J, cuf1=^\, - cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_, - -ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX, - OTbs, am, bw, eo, hs, km, msgr, ul, - cols#80, it#8, lines#24, - acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x\263, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=^M, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, 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, kbs=^H, - kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kdch1=\177, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241, - kf3=\242, kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247, - kf9=\250, khome=\E[H, kich1=\E[^H, knp=\E[U, kpp=\E[V, - ll=\E[24;1H, nel=^M, rev=\E[7m, ri=\E[T\E[A, - rin=\E[%p1%dT\E[%p1%dA, rmso=\E[m, rmul=\E[m, - sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m, - sgr0=\E[m, smso=\E[7m, smul=\E[4m, - -#### Apple II -# -# Apple II firmware console first, then various 80-column cards and -# terminal emulators. For two cents I'd toss all these in the UFO file -# along with the 40-column apple entries. -# - -# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL -# 'it#8' tells UNIX that you have tabs every 8 columns. This is a -# function of TIC, not the firmware. -# The clear key on a IIgs will do something like clear-screen, -# depending on what you're in. -appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface, - OTbs, am, bw, eo, msgr, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ht=^I, ind=^W, kbs=^H, kclr=^X, kcub1=^H, kcud1=^J, - kcuf1=^U, kcuu1=^K, kdch1=\177, nel=^M^W, ri=^V, rmso=^N, - smso=^O, -# Apple //e with 80-column card, entry from BRL -# The modem interface is permitted to discard LF (maybe DC1), otherwise -# passing characters to the 80-column firmware via COUT (PR#3 assumed). -# Auto-wrap does not work right due to newline scrolling delay, which also -# requires that you set "stty cr2". -# Note: Cursor addressing is only available via the Pascal V1.1 entry, -# not via the BASIC PR#3 hook. All this nonsense can be avoided only by -# using a terminal emulation program instead of the built-in firmware. -apple2e|Apple //e, - bw, msgr, - cols#80, lines#24, - bel=^G, clear=\014$<100/>, cub1=^H, cud1=^J, cuu1=^_, - ed=\013$<4*/>, el=\035$<4/>, home=^Y, ht=^I, ind=^W, - is2=^R^N, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^U, kcuu1=^K, - nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N, - smso=^O, -# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro -# 4.20, with incoming and outgoing terminals both on 0, emulation On. -apple2e-p|Apple //e via Pascal, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H, - kcud1=^J, use=apple2e, -# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL -# Enable DC3/DC1 flow control with "stty ixon -ixany". -apple-ae|ASCII Express, - OTbs, am, bw, msgr, nxon, xon, - cols#80, it#8, lines#24, - bel=\007$<500/>, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=^J, - kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N, - smso=^O, -appleII|apple ii plus, - OTbs, am, - cols#80, it#8, lines#24, - clear=^L, cnorm=^TC2, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, cvvis=^TC6, - ed=^K, el=^], flash=\024G1$<200/>\024T1, home=\E^Y, ht=^I, - is2=\024T1\016, kcud1=^J, kcuf1=^U, rmso=^N, sgr0=^N, - smso=^O, -# Originally by Gary Ford 21NOV83 -# From: Fri Oct 11 21:27:00 1985 -apple-80|apple II with smarterm 80 col, - OTbs, am, bw, - cols#80, lines#24, - cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=^J, - cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, - ed=\013$<10*/>, el=\035$<10/>, home=^Y, -apple-soroc|apple emulating soroc 120, - am, - cols#80, lines#24, - bel=^G, clear=\E*$<300>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET, - home=^^, ind=^J, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, -# From Peter Harrison, Computer Graphics Lab, San Francisco -# ucbvax!ucsfmis!harrison .....uucp -# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA -# "These two work. If you don't have the inverse video chip for the -# Apple with videx then remove the :so: and :se: fields." -# (apple-videx: this used to be called DaleApple -- esr) -apple-videx|Apple with videx videoterm 80 column board with inverse video, - OTbs, am, xenl, - cols#80, it#8, lines#24, - clear=\014$<300/>, cub1=^H, cud1=^J, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, ht=^I, kcub1=^H, kcud1=^J, kcuf1=^U, khome=^Y, - rmso=^Z2, sgr0=^Z2, smso=^Z3, -# My system [for reference] : Apple ][+, 64K, Ultraterm display card, -# Apple Cat ][ 212 modem, + more all -# controlled by ASCII Express: Pro. -# From Dave Shaver -apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell, - OTbs, am, eo, xt, - cols#80, lines#24, - acsc=, clear=^L, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - flash=^W35^W06, home=^Y, - is2=^V4^W06\017\rVisible Bell Installed.\016\r\n, - rmso=^N, smso=^O, -apple-uterm|Ultraterm for Apple micros, - OTbs, am, eo, xt, - cols#80, lines#24, - acsc=, clear=^L, cuf1=^\, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, is2=^V4^W06\016, rmso=^N, smso=^O, -# from trwrba!bwong (Bradley W. Wong): -# -# This entry assumes that you are using an apple with the UCSD Pascal -# language card. SYSTEM.MISCINFO is assumed to be the same as that -# supplied with the standard apple except that screenwidth should be set -# using SETUP to 80 columns. Note that the right arrow is not mapped in -# this termcap entry. This is because that key, on the Apple, transmits -# a ^U and would thus preempt the more useful "up" function of vi. -# -# HMH 2/23/81 -apple80p|80-column apple with Pascal card, - am, bw, - cols#80, lines#24, - clear=^Y^L, cuf1=^\\:, - cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], - home=^Y, kcub1=^H, -# -# Apple II+ equipped with Videx 80 column card -# -# Terminfo from ihnp4!ihu1g!djc1 (Dave Christensen) via BRL; -# manually converted by D A Gwyn -# -# DO NOT use any terminal emulation with this data base, it works directly -# with the Videx card. This has been tested with vi 1200 baud and works fine. -# -# This works great for vi, except I've noticed in pre-R2, ^U will scroll back -# 1 screen, while in R2 ^U doesn't. -# For inverse alternate character set add: -# =^O:=^N: -# (apple-v: added it#8 -- esr) -apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520), - am, xenl, - cols#80, it#8, lines#24, - bel=\007$<100/>, clear=\014$<16*/>, cr=^M, cub1=^H, - cud1=^J, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, - cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>, - ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^\, kcuu1=^_, - khome=^Y, rmso=^Z2, smso=^Z3, -apple-videx3|vapple|Apple II with 80 col card, - OTbs, am, - cols#80, lines#24, - clear=\Ev, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\Ex, - home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!, kf5=\E", kf6=\E#, - kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH, -#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL -aepro|Apple II+ running ASCII Express Pro--vt52, - OTbs, - cols#80, lines#24, - clear=\014$<300/>, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, -# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory -apple-vm80|ap-vm80|apple with viewmax-80, - OTbs, - cols#80, lines#24, - clear=\014$<300/>, cuf1=^\\:, - cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_, - ed=\013$<300/>, el=^], home=\031$<200/>, - -#### Apple Lisa & Macintosh -# - -# (lisa: changed to -- esr) -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, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, -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, - -# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL; -# revised by Ferd Brundick -# -# These entries assume that the 'Auto Wraparound' is enabled. -# Xon-Xoff flow control should also be enabled. -# -# The vt100 uses :rs2: and :rf: rather than :is2:/:tbc:/:hts: because the tab -# settings are in non-volatile memory and don't need to be reset upon login. -# Also setting the number of columns glitches the screen annoyingly. -# You can type "reset" to get them set. -# -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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J, - el=\E[K, home=\E[H, ht=^I, hts=\EH, ind=^J, 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, rc=\E8, - rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r, - sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, - tbc=\E[3g, -# Lisaterm in 132 column ("wide") mode. -lisaterm-w|Apple Lisa with Lisaterm in 132 column mode, - cols#132, - kbs=^H, kcub1=^H, kcud1=^J, use=lisaterm, -# Although MacTerminal has insert/delete line, it is commented out here -# since it is much faster and cleaner to use the "lock scrolling region" -# method of inserting and deleting lines due to the MacTerminal implementation. -# Also, the "Insert/delete ch" strings have an extra character appended to them -# due to a bug in MacTerminal V1.1. Blink is disabled since it is not -# supported by MacTerminal. -mac|macintosh|Macintosh with MacTerminal, - xenl, - OTdN#30, - blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa, -# Lisaterm in 132 column ("wide") mode. -mac-w|macterminal-w|Apple Macintosh with Macterminal in 132 column mode, - cols#132, use=mac, - -# nsterm*|Apple_Terminal - AppKit Terminal.app -# -# Terminal.app is a Terminal emulator bundled with NeXT's NeXTStep and -# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X -# Server and Mac OS X operating systems. There is also a -# "terminal.app" in GNUStep, but I believe it to be an unrelated -# codebase and I have not attempted to describe it here. -# -# For NeXTStep, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you -# are pretty much on your own. Use "nsterm-7-m" and hope for the best. -# You might also try "nsterm-7" and "nsterm-old" if you suspect your -# version supports color. -# -# To determine the version of Terminal.app you're using by running: -# -# echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION" -# -# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm") -# -# For Apple_Terminal v71+/v100+, use "nsterm-bce". -# -# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s". -# -# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s". -# -# For all earlier versions (Apple_Terminal), try "nsterm-7-m" -# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s" -# might work too, but really you're on your own here since these -# systems are very obsolete and I can't test them. I do welcome -# patches, though :). - -# Other Terminals: -# -# For GNUstep_Terminal, you're probably best off using "linux" or -# writing your own terminfo. - -# For MacTelnet, you're on your own. It's a different codebase, and -# seems to be somewhere between "vt102", "ncsa" and "xterm-color". - -# For iTerm.app, see "iterm". - -# -# The AppKit Terminal.app descriptions all have names beginning with -# "nsterm". Note that the statusline (-s) versions use the window -# titlebar as a phony status line, and may produce warnings during -# compilation as a result ("tsl uses 0 parameters, expected 1".) -# Ignore these warnings, or even ignore these entries entirely. Apps -# which need to position the cursor or do other fancy stuff inside the -# status line won't work with these entries. They're primarily useful -# for programs like Pine which provide simple notifications in the -# status line. Please note that non-ASCII characters don't work right -# in the status line, since Terminal.app incorrectly interprets their -# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X -# versions) or only accepts status lines consisting entirely of -# characters from the first 256 Unicode positions (including C1 but -# not C0 or DEL.) -# -# The Mythology* of AppKit Terminal.app: -# -# In the days of NeXTSTep 0.x and 1.x there were two incompatible -# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a -# shareware replacement for Terminal called "Stuart" which NeXT bought -# and used as the basis for the Terminal.app in NeXTstep 2+, -# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I -# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or -# capabilities for the early versions, but I believe that the -# TERM_PROGRAM_VERSION may have been reset at some point. -# -# The early versions were tailored to the NeXT character set. Sometime -# after the Apple aquisition the encoding was swiched to MacRoman -# (initally with serious altcharset bugs due to incomplete conversion -# of the old NeXT code,) and then later to UTF-8. Alos sometime during -# or just prior to the early days of Mac OS X, the Terminal grew ANSI -# 8-color support (initially buggy when combined with attributes, but -# that was later fixed.) More recently, around Mac OS X version 10.3 -# or so (Terminal.app v100+) xterm-like 16-color support was added. In -# some versions (for instance 133-1 which shipped with Mac OS X -# version 10.4) this suffered from the bug, but that seems to -# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+). -# -# In the early days of Mac OS X the terminal was fairly buggy and -# would routinely crash under load. Many of these bugs seem to have -# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but -# some may still remain. This change seems to correspond to -# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as -# it did previously. -# -# * This may correspond with what actually happened, but I don't -# know. It is based on guesswork, hearsay, private correspondence, -# 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 -# -# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia -# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep -# -# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to -# "nsterm" to comply with the name length and case conventions and -# limitations of various software packages [notably Solaris terminfo -# and UNIX.] A single Apple_Terminal alias is retained for -# backwards-compatbility. -# -# * Added function key support (F1-F4). These only work in Terminal.app -# version 51, hopefully the capabilities won't cause problems for people -# using version 41. -# -# * Added "full color" (-c) entries which support the 16-color mode in -# version 51. -# -# * By default, version 51 uses UTF-8 encoding with broken altcharset -# support, so "ASCII" (-7) entries without altcharset support were -# added. - -# nsterm - AppKit Terminal.app -# -# Apple's Mac OS X includes a Terminal.app derived from the old NeXT -# Terminal.app. It is a partial VT100 emulation with some xterm-like -# extensions. This terminfo was written to describe versions 41 -# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X -# version 10.1) of Terminal.app. -# -# Terminal.app runs under the Mac OS X Quartz windowing system (and -# other AppKit-supported windowing systems.) On the Mac OS X machine I -# use, the executable for Terminal.app is: -# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal -# -# If you're looking for a description of the full-screen system -# console which runs under Apple's Darwin operating system on PowerPC -# platforms, see the "xnuppc" entry instead. -# -# There were no function keys in version 41. In version 51, there are -# four working function keys (F1, F2, F3 and F4.) The function keys -# are included in all of these entries. -# -# It does not support mouse pointer position reporting. Under some -# circumstances the cursor can be positioned using option-click; this -# works by comparing the cursor position and the selected position, -# and simulating enough cursor-key presses to move the cursor to the -# selected position. This technique fails in all but the simplest -# applications. -# -# It provides partial ANSI color support (background colors interacted -# badly with bold in version 41, though, as reflected in :ncv:.) The -# monochrome (-m) entries are useful if you've disabled color support -# or use a monochrome monitor. The full color (-c) entries are useful -# in version 51, which doesn't exhibit the background color bug. They -# also enable an xterm-compatible 16-color mode. -# -# The configurable titlebar is set using xterm-compatible sequences; -# it is used as a status bar in the statusline (-s) entries. Its width -# depends on font sizes and window sizes, but 50 characters seems to -# be the default for an 80x24 window. -# -# The MacRoman character encoding is used for some of the alternate -# characters in the "MacRoman" entries; the "ASCII" (-7) entries -# disable alternate character set support entirely, and the "VT100" -# (-acs) entries rely instead on Terminal.app's own buggy VT100 -# graphics emulation, which seems to think the character encoding is -# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries -# are useful in Terminal.app version 51, which supports UTF-8 and -# other ASCII-compatible character encodings but does not correctly -# implement VT100 graphics; once VT100 graphics are correctly -# implemented in Terminal.app, the "VT100" (-acs) entries should be -# usable in any ASCII-compatible character encoding [except perhaps -# in UTF-8, where some experts argue for disallowing alternate -# characters entirely.] -# -# Terminal.app reports "vt100" as the terminal type, but exports -# several environment variables which may aid detection in a shell -# profile (i.e. .profile or .login): -# -# TERM=vt100 -# TERM_PROGRAM=Apple_Terminal -# TERM_PROGRAM_VERSION=41 # in Terminal.app version 41 -# TERM_PROGRAM_VERSION=51 # in Terminal.app version 51 -# -# For example, the following Bourne shell script would detect the -# correct terminal type: -# -# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ] -# then -# export TERM -# if [ :"$TERM_PROGRAM_VERSION" = :41 ] -# then -# TERM="nsterm-old" -# else -# TERM="nsterm-c-7" -# fi -# fi -# -# In a C shell derivative, this would be accomplished by: -# -# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then -# if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then -# if ( :"$TERM_PROGRAM_VERSION" == :41 ) then -# setenv TERM "nsterm-old" -# else -# setenv TERM "nsterm-c-7" -# endif -# endif -# endif - -# The '+' entries are building blocks -nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset, - am, bw, msgr, xenl, xon, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, - home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=^J, - invis=\E[8m, kbs=\177, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, - kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM, - rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, - sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys, - -nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - enacs=\E(B\E)0, rmacs=^O, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, use=nsterm+7, - -nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset, - acsc=+\335\,\334-\366.\3770#`\327a\:f\241g\261h#i\360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{\271|\255}\243~\245, - enacs=\E(B\E)0, rmacs=^O, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, - sgr0=\E[m\017, smacs=^N, use=nsterm+7, - -nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support, - hs, - wsl#50, - dsl=\E]2;\007, fsl=^G, tsl=\E]2;, - -nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors), - op=\E[0m, use=ibm+16color, - -nsterm+c41|AppKit Terminal.app v41 color support, - colors#8, ncv#37, pairs#64, - op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -# These are different combinations of the building blocks - -# ASCII charset (-7) -nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome), - use=nsterm+7, - -nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline), - use=nsterm+s, use=nsterm+7, - -nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color), - use=nsterm+c41, use=nsterm+7, - -nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color), - use=nsterm+c, use=nsterm+7, - -nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline), - use=nsterm+s, use=nsterm+c41, use=nsterm+7, - -nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline), - use=nsterm+s, use=nsterm+c, use=nsterm+7, - -# VT100 alternate-charset (-acs) -nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome), - use=nsterm+acs, - -nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline), - use=nsterm+s, use=nsterm+acs, - -nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color), - use=nsterm+c41, use=nsterm+acs, - -nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color), - use=nsterm+c, use=nsterm+acs, - -nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline), - use=nsterm+s, use=nsterm+c41, use=nsterm+acs, - -nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline), - use=nsterm+s, use=nsterm+c, use=nsterm+acs, - -# MacRoman charset -nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome), - use=nsterm+mac, - -nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline), - use=nsterm+s, use=nsterm+mac, - -nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color), - use=nsterm+c41, use=nsterm+mac, - -nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color), - use=nsterm+c, use=nsterm+mac, - -nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline), - use=nsterm+s, use=nsterm+c41, use=nsterm+mac, - -nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline), - use=nsterm+s, use=nsterm+c, use=nsterm+mac, - -# In Mac OS X version 10.5 the format of the preferences has changed -# and a new, more complex technique is needed, e.g., -# -# python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass( -# "NSUserDefaults");ud=NSUserDefaults.alloc(); -# ud.init();prefs=ud.persistentDomainForName_( -# "com.apple.Terminal");prefs["Window Settings"][ -# prefs["Default Window Settings"]]["TerminalType" -# ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs, -# "com.apple.Terminal")' nsterm-16color -# -# and it is still not settable from the preferences dialog. This is -# tracked under rdar://problem/7365108 and rdar://problem/7365134 -# in Apple's bug reporter. -nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5, - bw@, mir, npc, - civis=\E[?25l, cnorm=\E[?25h, dch=\E[%p1%dP, dch1=\E[P, - flash=\E[?5h$<200/>\E[?5l, hpa=\E[%i%p1%dG, - ich=\E[%p1%d@, ich1=\E[@, 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~, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, - smcup=\E7\E[?47h, smir=\E[4h, vpa=\E[%i%p1%dd, - 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 bug. The newer version 240.2 in Mac OS X -# version 10.5 does not. -# -# This entry is based on newsgroup comments by Alain Bench, Christian Ebert, -# and D P Schreber comparing to nsterm-c-s-acs. -# -# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM -# can be set in Terminal.app, e.g., -# -# defaults write com.apple.Terminal TermCapString nsterm-bce -# -# and that it is not set in Terminal's preferences dialog. -nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce), - bce, bw, use=nsterm-16color, - -# This is an alias which should always point to the "current" version -nsterm|Apple_Terminal|AppKit Terminal.app, - use=nsterm-16color, - -# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and -# more featureful) terminal emulator for Mac OS X. It is similar -# enough in capabilities to nsterm-16color that I have derived this -# description from that one, but as far as I know they share no code. -# Many of the features are user-configurable, but I attempt only to -# describe the default configuration. -# -# NOTE: When tack tests (csr) + (nel) iTerm.app crashes, so (csr) is -# disabled. -iTerm.app|iTerm.app terminal emulator for Mac OS X, - bce, bw@, ccc@, - csr@, initc@, kend=\EOF, khome=\EOH, use=xterm+256color, - use=nsterm-16color, - -# xnuppc - Darwin PowerPC Console (a.k.a. "darwin") -# -# On PowerPC platforms, Apple's Darwin operating system uses a -# full-screen system console derived from a NetBSD framebuffer -# console. It is an ANSI-style terminal, and is not really VT-100 -# compatible. -# -# Under Mac OS X, this is the system console driver used while in -# single-user mode [reachable by holding down Command-S during the -# boot process] and when logged in using console mode [reachable by -# typing ">console" at the graphical login prompt.] -# -# If you're looking for a description of the Terminal.app terminal -# emulator which runs under the Mac OS X Quartz windowing system (and -# other AppKit-supported windowing systems,) see the "nsterm" -# entry instead. -# -# NOTE: Under Mac OS X version 10.1, the default login window does not -# prompt for user name, instead requiring an icon to be selected from -# a list of known users. Since the special ">console" login is not in -# this list, you must make one of two changes in the Login Window -# panel of the Login section of System Prefs to make the special -# ">console" login accessible. The first option is to enable 'Show -# "Other User" in list for network users', which will add a special -# "Other..." icon to the graphical login panel. Selecting "Other..." -# will present the regular graphical login prompt. The second option -# is to change the 'Display Login Window as:' setting to 'Name and -# password entry fields', which replaces the login panel with a -# graphical login prompt. -# -# There are no function keys, at least not in Darwin 1.3. -# -# It has no mouse support. -# -# It has full ANSI color support, and color combines correctly with -# all three supported attributes: bold, inverse-video and underline. -# However, bold colored text is almost unreadable (bolding is -# accomplished using shifting and or-ing, and looks smeared) so bold -# has been excluded from the list of color-compatible attributes -# [using (ncv)]. The monochrome entry (-m) is useful if you use a -# monochrome monitor. -# -# There is one serious bug with this terminal emulation's color -# support: repositioning the cursor onto a cell with non-matching -# colors obliterates that cell's contents, replacing it with a blank -# and displaying a colored cursor in the "current" colors. There is -# no complete workaround at present [other than using the monochrome -# (-m) entries,] but removing the (msgr) capability seemed to help. -# -# The "standout" chosen was simple reverse-video, although a colorful -# standout might be more aesthetically pleasing. Similarly, the bold -# chosen is the terminal's own smeared bold, although a simple -# color-change might be more readable. The color-bold (-b) entries -# uses magenta colored text for bolding instead. The fancy color (-f -# and -f2) entries use color for bold, standout and underlined text -# (underlined text is still underlined, though.) -# -# Apparently the terminal emulator does support a VT-100-style -# alternate character set, but all the alternate character set -# positions have been left blank in the font. For this reason, no -# alternate character set capabilities have been included in this -# description. The console driver appears to be ASCII-only, so (enacs) -# has been excluded [although the VT-100 sequence does work.] -# -# The default Mac OS X and Darwin installation reports "vt100" as the -# terminal type, and exports no helpful environment variables. To fix -# this, change the "console" entry in /etc/ttys from "vt100" to -# "xnuppc-WxH", where W and H are the character dimensions of your -# console (see below.) -# -# The font used by the terminal emulator is apparently one originally -# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This -# file includes descriptions for the following geometries: -# -# Pixels Characters Entry Name (append -m for monochrome) -# ------------------------------------------------------------------- -# 640x400 80x25 xnuppc-80x25 -# 640x480 80x30 xnuppc-80x30 -# 720x480 90x30 xnuppc-90x30 -# 800x600 100x37 xnuppc-100x37 -# 896x600 112x37 xnuppc-112x37 -# 1024x640 128x40 xnuppc-128x40 -# 1024x768 128x48 xnuppc-128x48 -# 1152x768 144x48 xnuppc-144x48 -# 1280x1024 160x64 xnuppc-160x64 -# 1600x1024 200x64 xnuppc-200x64 -# 1600x1200 200x75 xnuppc-200x75 -# 2048x1536 256x96 xnuppc-256x96 -# -# The basic "xnuppc" entry includes no size information, and the -# emulator includes no reporting capability, so you'll be at the mercy -# of the TTY device (which reports incorrectly on my hardware.) The -# color-bold entries do not include size information. - -# The '+' entries are building blocks -xnuppc+basic|Darwin PowerPC Console basic capabilities, - am, bce, mir, xenl, - it#8, - bold=\E[1m, clear=\E[H\E[J, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K, - el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=^J, kbs=\177, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, - rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, - rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, - sc=\E7, - sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, - sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, use=vt100+keypad, - -xnuppc+c|Darwin PowerPC Console ANSI color support, - colors#8, ncv#32, pairs#64, - op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, - -xnuppc+b|Darwin PowerPC Console color-bold support, - ncv#32, - bold=\E[35m, - sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, - use=xnuppc+basic, - -xnuppc+f|Darwin PowerPC Console fancy color support, - ncv#35, - sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%;m, - smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b, - -xnuppc+f2|Darwin PowerPC Console alternate fancy color support, - ncv#35, - bold=\E[33m, - sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m, - smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic, - -# Building blocks for specific screen sizes -xnuppc+80x25|Darwin PowerPC Console 80x25 support (640x400 pixels), - cols#80, lines#25, - -xnuppc+80x30|Darwin PowerPC Console 80x30 support (640x480 pixels), - cols#80, lines#30, - -xnuppc+90x30|Darwin PowerPC Console 90x30 support (720x480 pixels), - cols#90, lines#30, - -xnuppc+100x37|Darwin PowerPC Console 100x37 support (800x600 pixels), - cols#100, lines#37, - -xnuppc+112x37|Darwin PowerPC Console 112x37 support (896x600 pixels), - cols#112, lines#37, - -xnuppc+128x40|Darwin PowerPC Console 128x40 support (1024x640 pixels), - cols#128, lines#40, - -xnuppc+128x48|Darwin PowerPC Console 128x48 support (1024x768 pixels), - cols#128, lines#48, - -xnuppc+144x48|Darwin PowerPC Console 144x48 support (1152x768 pixels), - cols#144, lines#48, - -xnuppc+160x64|Darwin PowerPC Console 160x64 support (1280x1024 pixels), - cols#160, lines#64, - -xnuppc+200x64|Darwin PowerPC Console 200x64 support (1600x1024 pixels), - cols#200, lines#64, - -xnuppc+200x75|Darwin PowerPC Console 200x75 support (1600x1200 pixels), - cols#200, lines#75, - -xnuppc+256x96|Darwin PowerPC Console 256x96 support (2048x1536 pixels), - cols#256, lines#96, - -# These are different combinations of the building blocks - -xnuppc-m|darwin-m|Darwin PowerPC Console (monochrome), - use=xnuppc+basic, - -xnuppc|darwin|Darwin PowerPC Console (color), - use=xnuppc+c, use=xnuppc+basic, - -xnuppc-m-b|darwin-m-b|Darwin PowerPC Console (monochrome w/color-bold), - use=xnuppc+b, - -xnuppc-b|darwin-b|Darwin PowerPC Console (color w/color-bold), - use=xnuppc+b, use=xnuppc+c, - -xnuppc-m-f|darwin-m-f|Darwin PowerPC Console (fancy monochrome), - use=xnuppc+f, - -xnuppc-f|darwin-f|Darwin PowerPC Console (fancy color), - use=xnuppc+f, use=xnuppc+c, - -xnuppc-m-f2|darwin-m-f2|Darwin PowerPC Console (alternate fancy monochrome), - use=xnuppc+f2, - -xnuppc-f2|darwin-f2|Darwin PowerPC Console (alternate fancy color), - use=xnuppc+f2, use=xnuppc+c, - -# Combinations for specific screen sizes -xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC Console (monochrome) 80x25, - use=xnuppc+80x25, use=xnuppc+basic, - -xnuppc-80x25|darwin-80x25|Darwin PowerPC Console (color) 80x25, - use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic, - -xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC Console (monochrome) 80x30, - use=xnuppc+80x30, use=xnuppc+basic, - -xnuppc-80x30|darwin-80x30|Darwin PowerPC Console (color) 80x30, - use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic, - -xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC Console (monochrome) 90x30, - use=xnuppc+90x30, use=xnuppc+basic, - -xnuppc-90x30|darwin-90x30|Darwin PowerPC Console (color) 90x30, - use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic, - -xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC Console (monochrome) 100x37, - use=xnuppc+100x37, use=xnuppc+basic, - -xnuppc-100x37|darwin-100x37|Darwin PowerPC Console (color) 100x37, - use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic, - -xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC Console (monochrome) 112x37, - use=xnuppc+112x37, use=xnuppc+basic, - -xnuppc-112x37|darwin-112x37|Darwin PowerPC Console (color) 112x37, - use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic, - -xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC Console (monochrome) 128x40, - use=xnuppc+128x40, use=xnuppc+basic, - -xnuppc-128x40|darwin-128x40|Darwin PowerPC Console (color) 128x40, - use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic, - -xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC Console (monochrome) 128x48, - use=xnuppc+128x48, use=xnuppc+basic, - -xnuppc-128x48|darwin-128x48|Darwin PowerPC Console (color) 128x48, - use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic, - -xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC Console (monochrome) 144x48, - use=xnuppc+144x48, use=xnuppc+basic, - -xnuppc-144x48|darwin-144x48|Darwin PowerPC Console (color) 144x48, - use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic, - -xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC Console (monochrome) 160x64, - use=xnuppc+160x64, use=xnuppc+basic, - -xnuppc-160x64|darwin-160x64|Darwin PowerPC Console (color) 160x64, - use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic, - -xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC Console (monochrome) 200x64, - use=xnuppc+200x64, use=xnuppc+basic, - -xnuppc-200x64|darwin-200x64|Darwin PowerPC Console (color) 200x64, - use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic, - -xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC Console (monochrome) 200x75, - use=xnuppc+200x75, use=xnuppc+basic, - -xnuppc-200x75|darwin-200x75|Darwin PowerPC Console (color) 200x75, - use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic, - -xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC Console (monochrome) 256x96, - use=xnuppc+256x96, use=xnuppc+basic, - -xnuppc-256x96|darwin-256x96|Darwin PowerPC Console (color) 256x96, - use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic, - -#### Radio Shack/Tandy -# - -# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7". -# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr) -# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90 -coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II, - OTbs, am, - cols#80, it#8, lines#24, - bel=^G, blink=^_", bold=\E\:^A, civis=^E\s, - clear=\014$<5*/>, cnorm=^E!, cub1=^H, cud1=^J, cuf1=^F, - cup=\002%p2%{32}%+%c%p1%{32}%+%c$<2/>, cuu1=^I, - dl1=^_1, ed=^K, el=^D, home=^A, il1=^_0, kcub1=^H, kcud1=^J, - kcuf1=^I, kcuu1=^L, rev=^_\s, rmso=^_!, rmul=^_#, - sgr0=\037!\E\:\0, smso=^_\s, smul=^_", -# (trs2: removed obsolete ":nl=^_:" -- esr) -trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M, - OTbs, am, msgr, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^_, cuf1=^], - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, dl1=^K, ed=^B, - el=^A, home=^F, ht=^I, il1=^D, ind=^J, kbs=^H, kcub1=^\, - kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N, -# From: Kevin Braunsdorf -# (This had extension capabilities -# :BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\ -# :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@: -# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr) -trs16|trs-80 model 16 console, - OTbs, am, - cols#80, it#8, lines#24, - acsc=jak`l_mbquvewcxs, bel=^G, civis=\ERc, clear=^L, - cnorm=\ERC, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL, - ind=^J, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S, - khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, - lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@, - smacs=\ERG, smso=\ERD, - -#### Commodore Business Machines -# -# Formerly located in West Chester, PA; went spectacularly bust in 1994 -# after years of shaky engineering and egregious mismanagement. Made one -# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64, -# C-128, VIC-20). The C-64 is said to have been the most popular machine -# ever (most units sold); they can still be found gathering dust in closets -# everywhere. -# - -# From: Kent Polk , 30 May 90 -# Added a few more entries, converted caret-type control sequence (^x) entries -# to '\0xx' entries since a couple of people mentioned losing '^x' sequences. -# Corrections by Ty Sarna , Sat Feb 28 18:55:15 1998 -# -# :as:, :ae: Support for alternate character sets. -# :ve=\E[\040p:vi=\E[\060\040p: cursor visible/invisible. -# :xn: vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept) -# This one appears to fix a problem I always had with a line ending -# at 'width+1' (I think) followed by a blank line in vi. The blank -# line tended to disappear and reappear depending on how the screen -# was refreshed. Note that this is probably needed only if you use -# something like a Dnet Fterm with the window sized to some peculiar -# dimension larger than 80 columns. -# :k0=\E9~: map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;' -# (amiga: removed obsolete :kn#10:, -# also added empty to suppress a warning --esr) -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, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD, - cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, - indn=\E[%p1%dS, 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, rin=\E[%p1%dT, rmacs=^O, rmso=\E[m, rmul=\E[m, - rs1=\Ec, sgr0=\E[m, smacs=^N, smso=\E[7m, smul=\E[4m, - -# From: Hans Verkuil , 4 Dec 1995 -# (amiga: added empty to suppress a warning. -# I'm told this entry screws up badly with AS225, the Amiga -# TCP/IP package once from Commodore, and now sold by InterWorks.--esr) -amiga-h|Hans Verkuil's Amiga ANSI, - OTbs, bw, msgr, - cols#80, lines#24, - acsc=, bel=^G, blink=\2337;2m, bold=\2331m, cbt=\233Z, - civis=\2330 p, clear=\233H\233J, cnorm=\233 p, cr=^M, - cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B, - cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, - cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P, - dim=\2332m, ech=\233%p1%dP, ed=\233J, el=\233K, flash=^G, - home=\233H, ht=^I, ich=\233%p1%d@, ich1=\233@, ind=\233S, - indn=\233%p1%dS, invis=\2338m, is2=\23320l, kbs=^H, - kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, - kdch1=\177, kf0=\2339~, kf1=\2330~, kf2=\2331~, kf3=\2332~, - kf4=\2333~, kf5=\2334~, kf6=\2335~, kf7=\2336~, kf8=\2337~, - kf9=\2338~, nel=\233B\r, rev=\2337m, ri=\233T, - rin=\233%p1%dT, rmacs=^O, rmcup=\233?7h, rmso=\2330m, - rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l, - smso=\2337m, smul=\2334m, - -# From: Henning 'Faroul' Peters , 25 Sep 1999 -# -# Pavel Fedin added -# Home Shift+Left -# End Shift+Right -# PgUp Shift+Up -# PgDn Shift+Down -amiga-8bit|Amiga ANSI using 8-bit controls, - acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L, - ind=\204, indn@, kend=\233 @, khome=\233 A, knp=\233S, - kpp=\233T, ri=\215, rin@, use=amiga-h, - -# From: Ruediger Kuhlmann , 18 Jul 2000 -# requires use of appropriate preferences settings. -amiga-vnc|Amiga using VNC console (black on light gray), - am, da, db, msgr, ndscr, - btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#256, - bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p, - clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\E[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, - dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED, - indn=\E[%p1%dS, invis=\E8m, - is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h, - kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, - kcuu1=\E[A, kdch1=\177, 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~, 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, rin=\E[%p1%dT, rmcup=\E[?7h\E[r\E[J, - rmkx=\E[?1l, rmso=\E[21m, rmul=\E[24m, 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, - -# MorphOS on Genesi Pegasos -# By Pavel Fedin -morphos, - acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L, - ind=\204, indn@, kend=\23345~, kf11=\23320~, kf12=\23321~, - khome=\23344~, kich1=\23340~, knp=\23342~, kpp=\23341~, - ri=\215, rin@, use=amiga-h, - -# Commodore B-128 microcomputer from Doug Tyrol -# I'm trying to write a termcap for a commodore b-128, and I'm -# having a little trouble. I've had to map most of my control characters -# to something that unix will accept (my delete-char is a ctrl-t, etc), -# and create some functions (like cm), but thats life. -# The problem is with the arrow keys - right, and up work fine, but -# left deletes the previous character and down I just can't figure out. -# Jove knows what I want, but I don't know what it's sending to me (it -# isn't thats bound to next-line in jove). -# Anybody got any ideas? Here's my termcap. -# DAG -- I changed his "^n" entries to "\n"; see if that works. -# -commodore|b-128|Commodore B-128 micro, - am, bw, - OTdN#20, cols#80, lines#24, pb#150, - OTbc=^H, OTnl=^M, clear=\E\006$<10/>, cr=^M, cud1=^J, - cuf1=^F, cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P, - dch1=\177$<10*/>, dl1=\Ed$<10*/>, el=\Eq$<10/>, - home=\E^E, ht=\011$<5/>, ich1=\E\n$<5/>, il1=\Ei$<10/>, - kcub1=^B, kcud1=^J, kcuf1=^F, kcuu1=^P, khome=\E^E, rmir=, - smir=, - -#### North Star -# -# North Star Advantage from Lt. Fickie via BRL -northstar|North Star Advantage, - OTbs, - cols#80, lines#24, - clear=\004$<200/>, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>, - el=\016$<200/>, home=\034\032$<200/>, - -#### Osborne -# -# Thu Jul 7 03:55:16 1983 -# -# As an aside, be careful; it may sound like an anomaly on the -# Osborne, but with the 80-column upgrade, it's too easy to -# enter lines >80 columns! -# -# I've already had several comments... -# The Osborne-1 with the 80-col option is capable of being -# 52, 80, or 104 characters wide; default to 80 for compatibility -# with most systems. -# -# The tab is destructive on the Ozzie; make sure to 'stty -tabs'. -osborne-w|osborne1-w|osborne I in 104-column mode, - msgr, ul, xt, - cols#104, lines#24, - bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=^J, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, rmso=\E(, rmul=\Em, smso=\E), smul=\El, -# Osborne I from ptsfa!rhc (Robert Cohen) via BRL -osborne|osborne1|osborne I in 80-column mode, - OTbs, am, mir, msgr, ul, xhp, - OTdB#4, cols#80, lines#24, - clear=^Z, cub1=\010$<4>, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, - dch1=\EW$<4/>, dl1=\ER, el=\ET, il1=\EE, is2=^Z, kbs=^H, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E), - rmul=\Em, smir=\EQ, smso=\E(, smul=\El, -# -# Osborne Executive definition from BRL -# Similar to tvi920 -# Added by David Milligan and Tom Smith (SMU) -osexec|Osborne executive, - OTbs, am, - OTug#1, cols#80, lines#24, xmc#1, - OTnl=^J, bel=^G, clear=^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, - is2=\Eq\Ek\Em\EA\Ex0, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, - kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, - kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, - kf9=^AI\r, rmir=, rmso=\Ek, rmul=\Em, smir=, smso=\Ej, - smul=\El, tbc=\E3, - -#### Console types for obsolete UNIX clones -# -# Coherent, Minix, Venix, and several lesser-known kin were OSs for 8088 -# machines that tried to emulate the UNIX look'n'feel. Coherent and Venix -# were commercial, Minix an educational tool sold in conjunction with a book. -# Memory-segmentation limits and a strong tendency to look like V7 long after -# it was obsolete made all three pretty lame. Venix croaked early. Coherent -# and Minix were ported to 32-bit Intel boxes, only to be run over by a -# steamroller named `Linux' (which, to be fair, traces some lineage to Minix). -# Coherent's vendor, the Mark Williams Company, went belly-up in 1994. There -# are also, I'm told, Minix ports that ran on Amiga and Atari machines and -# even as single processes under SunOS and the Macintosh OS. -# - -# See -# http://www.minix3.org/manpages/man4/console.4.html -minix|minix console (v3), - use=ecma+color, use=minix-1.7, - -# See -# http://www.minix-vmd.org/pub/Minix-vmd/1.7.0/wwwman/man4/console.4.html -# This is the entry provided with minix 1.7.4, with bogus :ri: removed. -minix-1.7|minix console (v1.7), - am, xenl, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, el1=\E[2K, - home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, - il1=\E[L, ind=^J, is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf0=\E[Y, kf1=\E[V, kf2=\E[U, - kf3=\E[T, kf4=\E[S, kf5=\E[G, khome=\E[H, lf0=End, lf1=PgUp, - lf2=PgDn, lf3=Num +, lf4=Num -, lf5=Num 5, nel=^M^J, - rev=\E[7m, ri=\EM, rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m, - smso=\E[7m, smul=\E[4m, -# Corrected Jan 14, 1997 by Vincent Broman -minix-old|minix-1.5|minix console (v1.5), - xon, - cols#80, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, - kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G, - khome=\E[H, nel=^M^J, rev=\E[7m, ri=\EM, rmso=\E[0m, - rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m, -# The linewrap option can be specified by editing /usr/include/minix/config.h -# before recompiling the minix 1.5 kernel. -minix-old-am|minix console with linewrap, - am, use=minix-old, - -pc-minix|minix console on an Intel box, - use=klone+acs, use=minix, - -# According to the Coherent 2.3 manual, the PC console is similar -# to a z19. The differences seem to be (1) 25 lines, (2) no status -# line, (3) standout is broken, (4) ins/del line is broken, (5) -# has blinking and bold. -pc-coherent|pcz19|coherent|IBM PC console running Coherent, - am, mir, - cols#80, it#8, lines#25, - bel=^G, clear=\EE, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EN, - ed=\EJ, el=\EK, home=\EH, ht=^I, ind=^J, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO, - rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep, - -# According to the Venix 1.1 manual, the PC console is similar -# to a DEC vt52. Differences seem to be (1) arrow keys send -# different strings, (2) enhanced standout, (3) added insert/delete line. -# Note in particular that it doesn't have automatic margins. -# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they -# not described here because this derives from an old termcap entry. -pc-venix|venix|IBM PC console running Venix, - cols#80, it#8, lines#25, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, - ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=^J, kbs=^H, kcub1=\EK, - kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI, - -#### Miscellaneous microcomputer consoles -# -# If you know anything more about any of these, please tell me. -# - -# The MAI Basic Four computer was obsolete at the end of the 1980s. -# It may be used as a terminal by putting it in "line" mode as seen on -# one of the status lines. -# Initialization is similar to CIT80. will set ANSI mode for you. -# Hardware tabs set by at 8-spacing. Auto line wrap causes glitches so -# wrap mode is reset by . Using =\E[S caused errors so I -# used \ED instead. -# From: bf347@lafn.org (David Lawyer), 28 Jun 1997 -mai|basic4|MAI Basic Four in ansi mode, - am, da, db, mir, msgr, - cols#82, it#8, lines#25, - bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, il1=\E[L, 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=^M\ED, rc=\E8, rev=\E[7m, ri=\E[T, - rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, - smir=\E[4h, smso=\E[7m, smul=\E[4m, -# basis from Peter Harrison, Computer Graphics Lab, San Francisco -# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA -# -# On Sat, 7 Aug 1999, Torsten Jerzembeck wrote: -# The Basis 108 was a Apple II clone, manufactured by the "Basis -# Mikrocomputer GmbH" in Munster, Germany (the company still exists today, -# about 1,5 km from where I live, but doesn't build own computers any -# more). A Basis 108 featured a really heavy (cast aluminium?) case, was -# equipped with one or two 5.25" disk drives, had a monochrome and colour -# video output for a TV set or a dedicated monitor and several slots for -# Apple II cards. Basis 108 were quite popular at german schools before -# the advent of the IBM PC. They run, for example, the UCSD Pascal -# development system (which I used even in 1993 to program the steering -# and data recording for our school's experimental solar panel :), Apple DOS -# or CP/M. -# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr) -basis|BASIS108 computer with terminal translation table active, - clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H, - kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E), - smso=\E(, use=adm3a, -# luna's BMC terminal emulator -luna|luna68k|LUNA68K Bitmap console, - cols#88, lines#46, use=ansi-mini, -megatek|pegasus workstation terminal emulator, - am, os, - cols#83, lines#60, -# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived -# interface (pre-Macintosh by several years) that went nowhere. -xerox820|x820|Xerox 820, - am, - cols#80, lines#24, - bel=^G, clear=1^Z, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X, - home=^^, ind=^J, - -#### Videotex and teletext -# - -# \E\:1} switch to te'le'informatique mode (ascii terminal/ISO 6429) -# \E[?3l 80 columns -# \E[?4l scrolling on -# \E[12h local echo off -# \Ec reset: G0 U.S. charset (to get #,@,{,},...), 80 cols, clear screen -# \E)0 G1 DEC set (line graphics) -# -# From: Igor Tamitegama , 18 Jan 1997 -m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique, - OTbs, eslok, hs, xenl, - cols#80, it#8, lines#24, wsl#72, xmc#0, - acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G, - blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J, - cnorm=\E[<1l, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=^J, - home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=^J, ip=$<7/>, - is1=\E\:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0, - is3=\E[?3l kbs=\010, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, - kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H, - mc0=\E[i, nel=^M^J, rc=\E8, 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, sc=\E7, sgr0=\E[m, - smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A, - u6=\E[%i%d;%dR, u7=\E[6n, - -# From: Alexandre Montaron , 18 Jun 1998 -# -minitel1|minitel 1, - am, bw, eslok, hs, hz, msgr, - colors#8, cols#40, lines#24, pairs#8, - acsc=+.\,\,./f0g1, bel=^G, blink=\EH, civis=^T, clear=^L, - cnorm=^Q, cr=^M, cub1=^H, cud1=^J, cuf1=^I, - cup=\037%p1%{65}%+%c%p2%{65}%+%c, cuu1=^K, el=^X, - enacs=^Y, fsl=^J, home=^^, ind=^J, - is2=\E;`ZQ\E\:iC\E\:iE\021, nel=^M^J, op=\EG, - rep=%p1%c\022%p2%{63}%+%c, rev=\E], ri=^K, rmso=\E\\, - setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%=%tC%e%p1%{64}%+%c%;, - sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;, - sgr0=\EI\E\\, smso=\E], tsl=\037@%p1%{65}%+%c, -# is2=Fnct TE, Fnct MR, Fnct CM et pour finir: curseur ON. -minitel1b|minitel 1-bistandard (in 40cols mode), - mir, - cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, - cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L, - is1=\E;iYA\E;jYC, kclr=\E[2J, kctab=^I, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, - kel=^X, khome=\E[H, kich1=\E[4h, kil1=\E[L, rmir=\E[4l, - smir=\E[4h, smkx=\E;iYA\E;jYC, use=minitel1, -# posait des problemes (logout en sortant de vi). -minitel1b-80|minitel 1-bistandard (standard teleinformatique), - am@, bw@, hz@, - colors@, cols#80, it#8, pairs@, - blink=\E[5m, bold=\E[1m, civis=\037@A\024\n, - clear=\E[H\E[2J, cnorm=\037@A\021\n, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=\ED, is1@, is2@, kent=\EOM, kf0=\EOp, kf1=\EOq, - kf2=\EOr, kf3=\EOs, kf4=\EOt, kf5=\EOu, kf6=\EOv, kf7=\EOw, - kf8=\EOx, kf9=\EOy, nel=\EE, op@, rc=\E8, rep@, rev=\E[7m, - ri=\EM, rmkx@, rmso=\E[27m, rmul=\E[24m, sc=\E7, setf@, - sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1;%;m, - sgr0=\E[m, smkx@, smso=\E[7m, smul=\E[4m, use=minitel1b, - -######## OBSOLETE VDT TYPES -# -# These terminals are *long* dead -- these entries are retained for -# historical interest only. - -#### Amtek Business Machines -# - -# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y", -# but these caps were commented out in 8.3; also, removed overridden -# ":do=^J:" -- esr) -abm80|amtek business machines 80, - OTbs, am, bw, - cols#80, lines#24, - cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P, - cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L, - dl1=\E^S, ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, - -#### Bell Labs blit terminals -# -# These were AT&T's official entries. The 5620 FAQ maintained by -# David Breneman has this to say: -# -# Actually, in the beginning was the Jerq, and the Jerq was white with a -# green face, and Locanthi and Pike looked upon the Jerq and said the Jerq -# was good. But lo, upon the horizon loomed a mighty management-type person -# (known now only by the initials VP) who said, the mighty Jerq must stay -# alone, and could not go forth into the world. So Locanthi and Pike put the -# Jerq to sleep, cloned its parts, and the Blit was brought forth unto the -# world. And the Jerq lived the rest of its days in research, but never -# strayed from those paths. -# -# In all seriousness, the Blit was originally known as the Jerq, but when -# it started to be shown outside of the halls of the Bell Labs Research -# organization, the management powers that be decided that the name could -# not remain. So it was renamed to be Blit. This was in late 1981. -# -# (The AT&T 5620 was the commercialized Blit. Its successors were the 630, -# 730, and 730+.) -# - -blit|jerq|blit running teletype rom, - am, eo, ul, xon, - cols#87, it#8, lines#72, - bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, - dch=\Ee%p1%{32}%+%c, dch1=\Ee!, dl=\EE%p1%{32}%+%c, - dl1=\EE!, el=\EK, ht=^I, ich=\Ef%p1%{32}%+%c, ich1=\Ef!, - il=\EF%p1%{32}%+%c, il1=\EF!, ind=^J, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez, - -# (cbblit: here's a BSD termcap that says -- esr) -cbblit|fixterm|blit running columbus code, - cols#88, - ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d, - rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!, - smul=\EU", use=blit, - -oblit|ojerq|first version of blit rom, - am, da, db, eo, mir, ul, xon, - cols#88, it#8, lines#72, - bel=^G, clear=^L, cr=^M, cub1=\ED, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\EO, - dl=\Ee%p1%{32}%+%c, dl1=\EE, ed=\EJ, el=\EK, flash=\E^G, - ht=^I, il=\Ef%p1%{32}%+%c, il1=\EF, ind=^J, kbs=^H, rmir=\ER, - smir=\EQ, - -#### Bolt, Beranek & Newman (bbn) -# -# The BitGraph was a product of the now-defunct BBN Computer Corporation. -# The parent company, best known as the architects of the Internet, is -# still around. -# -# Jeff DelPapa writes: -# The bitgraph was a large white box that contained a monochrome bitmap -# display, and a 68000 to run it. You could download code and run it on -# the cpu, it had 128kb (I think) of memory. I used one in the late -# 70's, sure beat a vt100. It had one strange feature tho -- it used -# the cpu to bitblt pixels to scroll, it took longer than the refresh -# rate, and looked like a rubber sheet stretching, then snapping -# upwards. It had everything the early mac had, except a floppy drive a -# small screen (it had a 17" crisp beauty) and a real OS. They (Bolt -# Beranek and Neuman) sold at most a few hundred of them to the real -# world. DOD may have bought more... -# - -# Entries for the BitGraph terminals. The problem -# with scrolling in vi can only be fixed by getting BBN to put -# smarter scroll logic in the terminal or changing vi or padding -# scrolls with about 500 ms delay. -# -# I always thought the problem was related to the terminal -# counting newlines in its input buffer before scrolling and -# then moving the screen that much. Then vi comes along and -# paints lines in on the bottom line of the screen, so you get -# this big white gap. - -bitgraph|bg2.0nv|bg3.10nv|bbn bitgraph 2.0 or later (normal video), - flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, - use=bg2.0, -bg2.0rv|bg3.10rv|bbn bitgraph 2.0 (reverse video), - flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, - use=bg2.0, -bg2.0|bg3.10|bbn bitgraph 2.0 or later (no init), - OTbs, xenl, - cols#85, lines#64, - bel=^G, clear=\E[H\E[J$<150>, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7, - sgr0=\E[m, smkx=\E=, smso=\E[7m, - -bg1.25rv|bbn bitgraph 1.25 (reverse video), - flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, - use=bg1.25, -bg1.25nv|bbn bitgraph 1.25 (normal video), - flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, - use=bg1.25, -# (bg1.25: I added / based on the init string -- esr) -bg1.25|bbn bitgraph 1.25, - cols#85, lines#64, - bel=^G, clear=\E[H\E[J$<150>, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, - dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I, - il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, 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, - -#### Bull (bq, dku, vip) -# -# (Adapted for terminfo; AIX extension capabilities translated -- esr) - -#============================================# -# BULL QUESTAR 210 `SDP' terminals emulation # -#============================================# -# -# Description written by R.K.Saunders (Bull Transac) -# -# Modifications written by F. Girard (Bull MTS) -# 19-05-87 V02.00.01 -# 17-12-87 V02.00.02 -# 15-09-89 V02.00.05 -# -# Typical technical selections F1 (modes SDP/ROLL): -# ------------------------------------------------------- -# | 01 02 03 04 05 06 07 08 09 10 | -# | 1010 0011 1010 0110 0110 0001 0100 0000 0000 0000 | -# | | -# | 11 12 13 14 15 16 17 18 19 20 | -# | 0000 0110 100? 0000 0000 0000 0001 0000 0000 0001 | -# | | -# | 21 22 23 24 25 26 27 28 29 30 | -# | 0011 0000 0001 1000 0000 0000 0000 0000 0000 0000 | -# | | -# | 31 32 33 34 35 36 37 38 39 40 | -# | 1010 0011 0000 0000 0000 0000 0000 0000 0000 0000 | -# ------------------------------------------------------- -# Typical firmware identification F5 "etat 6": -# P287.02.04b (AZERTY) -# P297.11.04 (24-pin: 2732) or P798.11.04 (28-pin: 2764) -# P298.03.03 (monochrome) or P374.03.02 (colour) -# -# SM SDP mode (VIP command): ^[[?=h -# RIS (erases screen): ^[c -# DMI disable keyboard: ^[` -# SM double rendition mode: ^[[?>h -# RM solicited status mode: ^[[5l -# RM character mode: ^[[>l -# RM echoplex mode: ^[[12l -# RM column tab mode: ^[[18l -# RM forbid SS2 keyboard mode: ^[[?h\EPY99\:98\E\\, - is2=\E[5;>;12;18;?h\EPY99\:98\E\\, - smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, - tsl=\EPY99\:98\E\\\E[0;98v\E[2;7m, -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, - use=tws-generic, -tws2103|xdku|BULL Questar tws2103, - ht=^I, use=tws-generic, -tws2103-sna|dku7103-sna|BULL Questar tws2103 for SNA, - ht=^I, use=tws2102-sna, -dku7102-old|BULL Questar 200 DKU7102 (microcode version < 6), - clear=\E[2J\E[H, cup@, dl@, dl1@, - dsl=\EPY99\:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m, - il@, il1@, tsl=\EPY99\:98\E\\\E[0;98v\E[H\E[2;7m, - use=tws-generic, -dku7202|BULL Questar 200 DKU7202 (colour/character attributes), - blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb, - smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic, - -#=========================================================# -# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation # -#=========================================================# -# -# Description written by J. Staerck (BULL SA) -# Copyright (c) 1989 BULL SA -#--------------------------------------------------------------------------- -# This entry is used for terminals with vt320 emulation mode -# and following set-up : -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 7 bit Control Characters, -# 80 columns screen. -# Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300) -# They are used in string capabilities with vt220-320 emulation mode. -# In the following DEC definitions, two kinds of terminfo databases are -# provided : -# 1. the first with Command Sequence Introducer starting with escape -# sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode. -# 2. the second with Command Sequence Introducer starting with escape -# sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B. -# Soft Terminal Reset esc [ ! p -# RIS (erases screen): esc c -# DECKPNM numeric keypad mode: esc > -# DECKPAM applic. keypad mode: esc = -# DECSTBM Scrolling region: esc [ r -# SCS select G0 = US: esc ( B -# SCS select G1 = line-graphic: esc ) 0 -# Select 7-bit C1 controls: esc sp F -# Select 8-bit C1 controls: esc sp G -# Select cursor home: esc [ H -# Select erase screen: esc [ J -# SM KAM lock keyboard: esc [ 2 h -# RM KAM unlock keyboard: esc [ 2 l -# SM SRM local echo off: esc [ 1 2 h -# RM SRM local echo on: esc [ 1 2 l -# SM LNM New line : esc [ 2 0 h -# RM LNM return = CR only: esc [ 2 0 l -# SM DECCKM cursor keys mode: esc [ ? 1 h -# RM DECCKM appli. keys mode: esc [ ? 1 l -# SM DECANM ANSI mode on: esc [ ? 2 h -# RM DECANM ANSI mode off: esc [ ? 2 l -# SM DECCOLM 132-column screen: esc [ ? 3 h -# RM DECCOLM 80-column screen: esc [ ? 3 l -# SM DECSCLM Smooth scroll: esc [ ? 4 h -# RM DECSCLM Jump scroll: esc [ ? 4 l -# SM DECSCNM screen light backgr. esc [ ? 5 h -# RM DECSCNM screen dark backgr. esc [ ? 5 l -# SM DECOM move within margins: esc [ ? 6 h -# RM DECOM move outside margins: esc [ ? 6 l -# SM DECAWM auto right margin: esc [ ? 7 h -# RM DECAWM auto right margin: esc [ ? 7 l -# SM DECARM auto repeat: esc [ ? 8 h -# RM DECARM auto repeat: esc [ ? 8 l -# DECSASD Select active main: esc [ 0 $ } -# DECSASD Select active status: esc [ 1 $ } -# DECSSDT Select status none: esc [ 0 $ ~ -# DECSSDT Select status indic.: esc [ 1 $ ~ -# DECSSDT Select status host-wr: esc [ 2 $ ~ -# SM DECTCEM Visible cursor: esc [ ? 2 5 h -# RM DECTCEM Invisible cursor: esc [ ? 2 5 l -# SM DECNCRM 7 bits NCR set: esc [ ? 4 2 h -# RM DECNCRM Multi or ISO latin: esc [ ? 4 2 l -# SM DECNKM numeric keypad mode: esc [ ? 6 6 h -# RM DECNKM numeric keypad appl.: esc [ ? 6 6 l -# SM DECKBUM clavier informatique esc [ ? 6 8 h -# RM DECKBUM clavier bureautique: esc [ ? 6 8 l -# DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 " p -# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 0 " p -# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 2 " p -# DECSCL vt300 mode 7-bit ctrl: esc [ 6 3 ; 1 " p -# Char. and Line attributes: esc [ Ps ... Ps m -# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse -# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off -# - -# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310 -bq300|Bull vt320 ISO Latin 1 80 columns terminal, - am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[H\E[J, cnorm=\E[?25h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, - dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J, - el=\E[K, el1=\E[1K, enacs=\E(B\E)0, - flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I, - hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, - is1=\E[63;1"p\E[2h, - is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - is3=\E[0$}\E[?25h\E[2l\E[H\E[J, ka1=\EOw, ka3=\EOy, - kb2=\EOu, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, 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~, kfnd=\E[1~, - khlp=\E[28~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - krdo=\E[29~, kslt=\E[4~, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, - mc0=\E[i, mc4=\E[4i, mc5=\E[5i, nel=\EE, rc=\E8, 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, sc=\E7, - 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, tbc=\E[3g, tsl=\E[1$}\E[2$~, -bq300-rv|Bull vt320 reverse 80 columns, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - use=bq300, -bq300-w|Bull vt320 132 columns, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300, -bq300-w-rv|Bull vt320 reverse mode 132 columns, - cols#132, wsl#132, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300, - -# This entry is used for terminals with vt320 emulation mode -# and following set-up : -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 8 bit Control Characters, (CSI coded as x9B for ESC [) -# 80 columns screen. -# Soft Terminal Reset csi ! p -# RIS (erases screen): esc c -# DECKPNM numeric keypad mode: esc > -# DECKPAM applic. keypad mode: esc = -# DECSTBM Scrolling region: esc [ r -# SCS select G0 = US: esc ( B -# SCS select G1 = line-graphic: esc ) 0 -# Select 7-bit C1 controls: esc sp F -# Select 8-bit C1 controls: esc sp G -# Select cursor home: csi H -# Select erase screen: csi J -# SM KAM lock keyboard: csi 2 h -# RM KAM unlock keyboard: csi 2 l -# SM SRM local echo off: csi 1 2 h -# RM SRM local echo on: csi 1 2 l -# SM LNM New line : csi 2 0 h -# RM LNM return = CR only: csi 2 0 l -# SM DECCKM cursor keys mode: csi ? 1 h -# RM DECCKM appli. keys mode: csi ? 1 l -# SM DECANM ANSI mode on: csi ? 2 h -# RM DECANM ANSI mode off: csi ? 2 l -# SM DECCOLM 132-column screen: csi ? 3 h -# RM DECCOLM 80-column screen: csi ? 3 l -# SM DECSCLM Smooth scroll: csi ? 4 h -# RM DECSCLM Jump scroll: csi ? 4 l -# SM DECSCNM screen light backgr. csi ? 5 h -# RM DECSCNM screen dark backgr. csi ? 5 l -# SM DECOM move within margins: csi ? 6 h -# RM DECOM move outside margins: csi ? 6 l -# SM DECAWM auto right margin: csi ? 7 h -# RM DECAWM auto right margin: csi ? 7 l -# SM DECARM auto repeat: csi ? 8 h -# RM DECARM auto repeat: csi ? 8 l -# DECSASD Select active main: csi 0 $ } -# DECSASD Select active status: csi 1 $ } -# DECSSDT Select status none: csi 0 $ ~ -# DECSSDT Select status indic.: csi 1 $ ~ -# DECSSDT Select status host-wr: csi 2 $ ~ -# SM DECTCEM Visible cursor: csi ? 2 5 h -# RM DECTCEM Invisible cursor: csi ? 2 5 l -# SM DECNCRM 7 bits NCR set: csi ? 4 2 h -# RM DECNCRM Multi or ISO latin: csi ? 4 2 l -# DECSCL vt300 mode 8-bit ctrl: csi 6 3 " p -# or DECSCL vt300 mode 8-bit ctrl: csi 6 3 ; 0 " p -# DECSCL vt300 mode 7-bit ctrl: csi 6 3 ; 1 " p -# Char. and Line attributes: csi Ps ... Ps m -# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse -# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off -# (bq300-8: ,,,,, to get under 1024 --esr) -bq300-8|Bull vt320 full 8 bits 80 columns, - am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#80, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\2335m, bold=\2331m, civis=\233?25l, - clear=\233H\233J, cnorm=\233?25h, cr=^M, - csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=\2331D, - cud=\233%p1%dB, cud1=\2331B, cuf=\233%p1%dC, cuf1=\2331C, - cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\2331A, - dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, - dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J, - el=\233K, el1=\2331K, enacs=\E(B\E)0, - flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H, - ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, ind=\ED, - is1=\E[63;2"p\E[2h, - is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w, - ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s, - kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, - kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~, - kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, - kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, - kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~, - kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~, - khlp=\23328~, 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=^O, rmam=\233?7l, rmcup=\233?7h, - rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, - rs1=\E[!p, rs2=\E[?3l, s0ds=\E(B, s1ds=\E(0, sc=\E7, - sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m%?%p9%t\E(0%e\E(B%;, - sgr0=\2330m\E(B, smacs=^N, smam=\233?7h, - smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m, - smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~, -bq300-8rv|Bull vt320 8-bit reverse mode 80 columns, - flash=\233?5l$<50>\233?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - use=bq300-8, -bq300-8w|Bull vt320 8-bit 132 columns, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\233?3h, use=bq300-8, -bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns, - cols#132, wsl#132, - flash=\233?5l$<50>\233?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\233?3h, use=bq300-8, - -# This entry is used for terminals with vt320 emulation mode -# a 102 keys keyboard (PC scancode !) and following set-up : -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 7 bit Control Characters, -# 80 columns screen. -bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns, - kbs=^H, kdch1=\E[3~, kend=\E[4~, kf1=\E[17~, kf10=\E[28~, - kf11=\E[29~, kf12=\E[31~, kf13@, kf14@, kf15@, kf16@, kf17@, - kf18@, kf19@, kf2=\E[18~, kf20@, kf3=\E[19~, kf4=\E[20~, - kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, - kfnd@, khlp@, khome=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, - krdo@, kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300, -bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - use=bq300-pc, -bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-pc, -bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns, - cols#132, wsl#132, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E F\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-pc, -# 8 bit ISO Latin Character Set (ISO 8859-1), -# 8 bit Control Characters, -# 80 columns screen. -bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns, - kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~, - kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@, - kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@, - kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, - kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@, - khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@, - kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8, -bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - use=bq300-8-pc, -bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns, - cols#132, wsl#132, - is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-8-pc, -bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns, - cols#132, wsl#132, - flash=\E[?5l$<50>\E[?5h, - is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E G\E[?42l\E[?4l, - rs2=\E[?3h, use=bq300-8-pc, - -#======================================================# -# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation # -#======================================================# - -# normal mode, 8 bits, 80 columns terminal. -# RES reset : ^[e -# RIS reset initial state: ^[c -# BLE bell enable ^[h -# BLD bell disable ^[g -# CAMS char. attr. mode set ^[[D -# CAMR char. attr. mode reset ^[[G -# CLR clear ^[` -# KBU keyboard unlock (set) ^[[W -# KBL keyboard lock (reset) ^[[X -# CM character mode (async.) ^[k -# NEP non echoplex mode (by host) ^[l -# EP echoplex mode (by host) ^[m -# IM insert mode set ^[[I -# IM insert mode reset ^[[J -# RMS roll mode set ^[r -# RMR roll mode reset ^[q -# SM78 set mode vip7800 ^[[1q -# SD scroll up (72 lines) ^[[0s -# SD scroll down (72 lines) ^[[1s -# RBM block mode reset ^[[E -# SLS status line set ^[w -# SLR status line reset ^[v -# SLL status line lock ^[O -# LGS Line-graphic mode set ^[G -# LGR Line-graphic mode reset ^[F -# TBC tab clear (at cursor pos.) ^[[g -# TBI tab initialize ^[[N -# TBS tab set (at cursor pos.) ^[p -# PDS print data space ^[[0p -# PHD print host data ^[[3p -# PDT print data terminator ^[[

u -# SSP0 partition 0 set ^[[00u -# SSP1 partition n format 1 ^[[PnPnSTRINGu -# SSP2 partition n format 2 ^[[PnPnSTRINGu -# SSP3 partition n format 3 ^[[PnPnu -# ATR attribute (visual) -# blink : ^[sB -# dim : ^[sL -# hide (blank) : ^[sH -# restore : ^[sR -# inverse video : ^[sI -# prot. : ^[sP -# underline : ^[s_ -# reset : ^{ -# -# This covers the vip7800 and BQ3155-vip7800 -vip|Bull Questar 3155-7800, - am, eslok, hs, km, mc5i, msgr, xenl, xon, - cols#80, it#8, lines#24, vt#3, wsl#80, - acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB, - cbt=\E[Z, clear=\E`, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL, - dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK, - flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I, - hts=\Ep, ich1=\E[I, ind=^J, invis=\EsH, - is2=\E[00u\E[<>001001024080024080u\E[01u, - is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H, - kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ, - kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@, - kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1, - kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?, - kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_, - kf4=\E8, kf5=\E\:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER, - khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s, - kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1, - lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[, rmacs=\EF, rmir=\E[J, rmso=\EsR, - rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG, - sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI, - smul=\Es_, tbc=\E[N, tsl=\Ew, -# normal screen, 8 bits, 132 columns terminal. -vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide, - cols#132, wsl#132, - is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip, -vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines, - lines#72, - is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip, -vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines, - cols#132, lines#72, wsl#132, - is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip, - -#### Chromatics -# - -# I have put the long strings in /. Ti sets up a window -# that is smaller than the screen, and puts up a warning message -# outside the window. Te erases the warning message, puts the -# window back to be the whole screen, and puts the cursor at just -# below the small window. I defined and to really turn -# the cursor on and off, but I have taken this out since I don't -# like the cursor being turned off when vi exits. -cg7900|chromatics|chromatics 7900, - am, - cols#80, lines#40, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^], - cup=\001M%p2%d\,%p1%d\,, cuu1=^K, dch1=^A<1, dl1=^A<2, - ed=^Al, el=^A`, home=^\, ich1=^A>1, il1=^A>2, ind=^J, ll=^A|, - rmcup=\001W0\,40\,85\,48\,\014\001W0\,0\,85\,48\,\001M0\,40\,, - rmso=\001C1\,\001c2\,, - smcup=\001P0\001O1\001R1\001C4\,\001c0\,\014\001M0\,42\,WARNING DOUBLE ENTER ESCAPE and \025\001C1\,\001c2\,\001W0\,0\,79\,39\,, - smso=\001C4\,\001c7\,, uc=\001\001_\001\0, - -#### Computer Automation -# - -ca22851|computer automation 22851, - am, - cols#80, lines#24, - bel=^G, clear=\014$<8>, cr=^M, cub1=^U, cud1=^J, cuf1=^I, - cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=^J, - kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^, - -#### Cybernex -# - -# This entry has correct padding and the undocumented "ri" capability -cyb83|xl83|cybernex xl-83, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\014$<62>, cr=^M, cub1=^H, cud1=^J, cuf1=^I, - cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N, - ed=\020$<62>, el=\017$<3>, home=^K, ind=^J, kcub1=^H, - kcud1=^J, kcuf1=^I, kcuu1=^N, ri=^N, -# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr) -cyb110|mdl110|cybernex mdl-110, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=\030$<70>, cr=^M, cub1=^H, cud1=^J, cuf1=^U, - cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, - dch1=\016A\036$<3.5>, dl1=\016A\016\036$<40>, - ed=\016@\026$<6>, el=\016@\026$<145>, home=^Y, - ht=\011$<43>, ich1=\016A\035$<3.5>, - il1=\016A\016\035$<65>, ind=^J, rmso=^NG, smso=^NF, - -#### Datapoint -# -# Datapoint is gone. They used to be headquartered in Texas. -# They created ARCnet, an Ethernet competitor that flourished for a while -# in the early 1980s before 3COM got wise and cut its prices. The service -# side of Datapoint still lives (1995) in the form of Intelogic Trace. -# - -dp3360|datapoint|datapoint 3360, - OTbs, am, - cols#82, lines#25, - bel=^G, clear=^]^_, cr=^M, cub1=^H, cud1=^J, cuf1=^X, cuu1=^Z, - ed=^_, el=^^, home=^], ind=^J, - -# From: Jan Willem Stumpel , 11 May 1997 -# The Datapoint 8242 Workstation was sold at least between 1985 -# and 1989. To make the terminal work with this entry, press -# CONTROL-INT-INT to take the terminal off-line, and type (opt). -# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO -# CR/LF off. Use control-shift-[] as escape key, control-I as tab, -# shift-F1 to shift-F5 as F6 to F10 (unshifted F1 to F5 are in -# fact unusable because the strings sent by the terminal conflict -# with other keys). -# The terminal is capable of displaying "box draw" characters. -# For each graphic character you must send 2 ESC's (\E\E) followed -# by a control character as follows: -# character meaning -# ========= ======= -# ctrl-E top tee -# ctrl-F right tee -# ctrl-G bottom tee -# ctrl-H left tee -# ctrl-I cross -# ctrl-J top left corner -# ctrl-K top right corner -# ctrl-L bottom left corner -# ctrl-M bottom right corner -# ctrl-N horizontal line -# ctrl-O vertical line -# Unfortunately this cannot be fitted into the termcap/terminfo -# description scheme. -dp8242|datapoint 8242, - msgr, - cols#80, lines#25, - bel=^G, civis=^Y, clear=\025\E\004\027\030, cnorm=^X, - cr=^M, cub1=^H, cud1=^J, - cup=\011%p2%'\0'%+%c%p1%'\0'%+%c, dl1=\E^Z, ed=^W, el=^V, - home=^U, ht=^I, il1=\E^T, ind=^C, - is1=\E\014\E\016\0\230\0\317\025\027\030\E\004, - kbs=^H, kcub1=^D, kcud1=^B, kcuf1=^F, kcuu1=^E, kf1=^G\Ee, - kf10=\EK\Ea, kf2=^I\Ed, kf3=^J\Ec, kf4=^J\Eb, kf5=^S\Ea, - kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=^M^J, - rep=\E\023%p1%c%p2%c, ri=^K, rmso=\E^D, rmul=\E^D, - rs1=\E\014\E\016\0\230\0\317\025\027\030\E\004, - smso=\E^E, smul=\E^F, - wind=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%'\0'%+%c\025, - -#### DEC terminals (Obsolete types: DECwriter and vt40/42/50) -# -# These entries are DEC's official terminfos for its older terminals. -# Contact Bill Hedberg of Terminal Support -# Engineering for more information. Updated terminfos and termcaps -# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps. -# - -gt40|dec gt40, - OTbs, os, - cols#72, lines#30, - bel=^G, cr=^M, cub1=^H, cud1=^J, -gt42|dec gt42, - OTbs, os, - cols#72, lines#40, - bel=^G, cr=^M, cub1=^H, cud1=^J, -vt50|dec vt50, - OTbs, - cols#80, lines#12, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=^J, -vt50h|dec vt50h, - OTbs, - cols#80, lines#12, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, ht=^I, ind=^J, ri=\EI, -# (vt61: there's a BSD termcap that claims , ) -vt61|vt-61|vt61.5|dec vt61, - cols#80, lines#24, - bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=^J, - cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, - cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I, - ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, - ri=\E$<20>I, - -# The gigi does standout with red! -# (gigi: I added / based on the init string, corrected cub1 -- esr) -gigi|vk100|dec gigi graphics terminal, - OTbs, am, xenl, - cols#84, lines#24, - bel=^G, clear=\E[H\E[2J, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, ed=\E[J, - el=\E[K, ht=^I, ind=^J, - 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, - -# 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, -# grossly-overpriced failure (among other things, DEC's OS didn't include -# a format program, so you had to buy pre-formatted floppies from DEC at -# a hefty premium!). -pro350|decpro|dec pro console, - OTbs, - cols#80, it#8, lines#24, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, - el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI, - kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG, - rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D, - -dw1|decwriter I, - OTbs, hc, os, - cols#72, - bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, -dw2|decwriter|dw|decwriter II, - OTbs, hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ind=^J, kbs=^H, -# \E(B Use U.S. character set (otherwise # => british pound !) -# \E[20l Disable "linefeed newline" mode (else puts \r after \n,\f,\v) -# \E[w 10 char/in pitch -# \E[1;132 full width horizontal margins -# \E[2g clear all tab stops -# \E[z 6 lines/in -# \E[66t 66 lines/page (for \f) -# \E[1;66r full vertical page can be printed -# \E[4g clear vertical tab stops -# \E> disable alternate keypad mode (so it transmits numbers!) -# \E[%i%p1%du set tab stop at column %d (origin == 1) -# (Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is -# a tab stop) -# -# The dw3 does standout with wide characters. -# -dw3|la120|decwriter III, - OTbs, hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, - is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>, - is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u\r, - kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w, -dw4|decwriter IV, - OTbs, am, hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, ht=^I, ind=^J, is2=\Ec, kbs=^H, - kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, - -# These aren't official -ln03|dec ln03 laser printer, - hc, - cols#80, lines#66, - bel=^G, cr=^M, cud1=^J, hd=\EK, ht=^I, hu=\EL, ind=^J, nel=^M^J, - rmso=\E[22m, rmul=\E[24m, sgr0=\E[m, smso=\E[1m, - smul=\E[4m, -ln03-w|dec ln03 laser printer 132 cols, - cols#132, - bel=^G, cr=^M, cud1=^J, ht=^I, ind=^J, kbs=^H, kcub1=^H, - kcud1=^J, nel=^M^J, use=ln03, - -#### Delta Data (dd) -# - -# Untested. The cup sequence is hairy enough that it probably needs work. -# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'. -# There are BSD-derived termcap entries floating around for this puppy -# that are *certainly* wrong. -delta|dd5000|delta data 5000, - OTbs, am, - cols#80, lines#27, - bel=^G, clear=^NR, cub1=^H, cud1=^J, cuf1=^Y, - cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%-%{57}%+%c, - cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=^J, - -#### Digital Data Research (ddr) -# - -# (ddr: I added / based on the init string -- esr) -ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator, - OTbs, am, xenl, - cols#80, it#8, lines#24, vt#3, - blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H, - cud1=^J, 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, 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, rc=\E8, rev=\E[7m$<2/>, - rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, ri=\EM$<5/>, rmam=\E[7l, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m$<2/>, - rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, - sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m$<2/>, - -#### Evans & Sutherland -# - -# Jon Leech tells us: -# The ps300 was the Evans & Sutherland Picture System 300, a high -# performance 3D vector graphics system with a bunch of specialized hardware. -# Approximate date of release was 1982 (early 80s, anyway), and it had several -# evolutions including (limited) color versions such as the PS330C. PS300s -# were effectively obsolete by the late 80s, replaced by raster graphics -# systems, although specialized applications like molecular modelling -# hung onto them for a while longer. AFAIK all E&S vector graphics systems -# are out of production, though of course E&S is very much alive (in 1996). -# (ps300: changed ":pt@:" to "it@" -- esr) -# -ps300|Picture System 300, - xt, - it@, - rmso@, rmul@, smso@, smul@, use=vt100, - -#### General Electric (ge) -# - -terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200, - OTbs, hc, os, - cols#120, - bel=^G, cr=^M, cud1=^J, ind=^J, - -#### Heathkit/Zenith -# - -# Here is a description of the H19 DIP switches: -# -# S401 -# 0-3 = baud rate as follows: -# -# 3 2 1 0 -# --- --- --- --- -# 0 0 1 1 300 baud -# 0 1 0 1 1200 baud -# 1 0 0 0 2400 baud -# 1 0 1 0 4800 baud -# 1 1 0 0 9600 baud -# 1 1 0 1 19.2K baud -# -# 4 = parity (0 = no parity) -# 5 = even parity (0 = odd parity) -# 6 = stick parity (0 = normal parity) -# 7 = full duplex (0 = half duplex) -# -# S402 -# 0 = block cursor (0 = underscore cursor) -# 1 = no key click (0 = keyclick) -# 2 = wrap at end of line (0 = no wrap) -# 3 = auto LF on CR (0 = no LF on CR) -# 4 = auto CR on LF (0 = no CR on LF) -# 5 = ANSI mode (0 = VT52 mode) -# 6 = keypad shifted (0 = keypad unshifted) -# 7 = 50Hz refresh (1 = 60Hz refresh) -# -# Factory Default settings are as follows: -# 7 6 5 4 3 2 1 0 -# S401 1 0 0 0 1 1 0 0 -# S402 0 0 0 0 0 0 0 0 -# (h19: I added / based on the init string; -# also added empty to suppress a tic warning -- esr) -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=^M, 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=^J, - 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, -h19-bs|heathkit w/keypad shifted, - rmkx=\Eu, smkx=\Et, use=h19-b, -h19-us|h19us|h19-smul|heathkit w/keypad shifted/underscore cursor, - rmkx=\Eu, smkx=\Et, use=h19-u, -# (h19: merged in from BSDI hp19-e entry>; -# also added empty to suppress a tic warning --esr) -# From: Tim Pierce , 23 Feb 1998 -# Tim tells us that: -# I have an old Zenith-19 terminal at home that still gets a lot of use. -# This terminal suffers from the same famous insert-mode padding lossage -# that has been acknowledged for the Z29 terminal. Emacs is nearly -# unusable on this box, since even a half-scroll up or down the window -# causes flaming terminal death. -# -# On the Z19, the only way I have found around this problem is to remove -# the :al: and :dl: entries entirely. No amount of extra padding will -# help (I have tried up to 20000). Removing and -# makes Emacs a little slower, but it remains in the land of the living. -# Big win. -h19|heath|h19-b|heathkit|heath-19|z19|zenith|heathkit h19, - OTbs, am, eslok, hs, mir, msgr, - cols#80, it#8, lines#24, - acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, bel=^G, - clear=\EE, cnorm=\Ey4, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ex4, - dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=^J, - ip=<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, - kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red, - lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF, - smir=\E@, smso=\Ep, tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo, -h19-u|heathkit with underscore cursor, - cnorm@, cvvis@, use=h19-b, -h19-g|h19g|heathkit w/block cursor, - cnorm=\Ex4, cvvis@, use=h19-b, -alto-h19|altoh19|altoheath|alto-heath|alto emulating heathkit h19, - lines#60, - dl1=\EM, il1=\EL, use=h19, - -# The major problem with the Z29 is that it requires more padding than the Z19. -# -# The problem with declaring an H19 to be synonymous with a Z29 is that -# it needs more padding. It especially loses if a program attempts -# to put the Z29 into insert mode and insert text at 9600 baud. It -# even loses worse if the program attempts to insert tabs at 9600 -# baud. Adding padding to text that is inserted loses because in -# order to make the Z29 not die, one must add so much padding that -# whenever the program tries to use insert mode, the effective -# rate is about 110 baud. -# -# What program would want to put the terminal into insert mode -# and shove stuff at it at 9600 baud you ask? -# -# Emacs. Emacs seems to want to do the mathematically optimal -# thing in doing a redisplay rather than the practical thing. -# When it is about to output a line on top of a line that is -# already on the screen, instead of just killing to the end of -# the line and outputting the new line, it compares the old line -# and the new line and if there are any similarities, it -# constructs the new line by deleting the text on the old line -# on the terminal that is already there and then inserting new -# text into the line to transform it into the new line that is -# to be displayed. The Z29 does not react kindly to this. -# -# But don't cry for too long.... There is a solution. You can make -# a termcap entry for the Z29 that says the Z29 has no insert mode. -# Then Emacs cannot use it. "Oh, no, but now inserting into a -# line will be really slow", you say. Well there is a sort of a -# solution to that too. There is an insert character option on -# the Z29 that will insert one character. Unfortunately, it -# involves putting the terminal into ansi mode, inserting the -# character, and changing it back to H19 mode. All this takes 12 -# characters. Pretty expensive to insert one character, but it -# works. Either Emacs doesn't try to use its inserting hack when -# it's only given an insert character ability or the Z29 doesn't -# require padding with this (the former is probably more likely, -# but I haven't checked it out). -# (z29: added empty to suppress a tic warning, merged in -# status line capabilities from BRL entry --esr) -z29|zenith29|z29b|zenith z29b, - OTbs, OTpt, am, eslok, hs, mir, msgr, - OTkn#10, cols#80, lines#24, - OTbc=\ED, acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4, - cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E$<1>A, - cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1, - ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I, - ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>, - is2=\E<\E[?2h\Ev, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, - kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, - lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq, - rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8, - tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, -# z29 in ansi mode. Assumes that the cursor is in the correct state, and that -# the world is stable. causes the terminal to be reset to the state -# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore -# cursor, bc -> block cursor. -# From: Mike Meyers -# (z29a: replaced nonexistent befause -# looks vt100-compatible -- esr) -z29a|z29a-kc-bc|h29a-kc-bc|heath/zenith 29 in ansi mode, - OTbs, OTpt, am, eslok, hs, mir, msgr, - OTkn#10, cols#80, it#8, lines#24, - OTbc=\ED, bel=^G, blink=\E[5m, bold=\E[2m, clear=\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM, - dsl=\E[>1l, ed=\E[J, el=\E[K, fsl=\E[u\E[>5l, home=\E[H, - ht=^I, hts=\EH, if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, il=\E[%p1%dL, - ind=\ED, kbs=^H, kclr=\E[J, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, 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=^M\ED, rc=\E[r, rev=\E[7m, ri=\EM, rmcup=\E[?7h, - rmso=\E[m, rmul=\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, -z29a-kc-uc|h29a-kc-uc|z29 ansi mode with keyckick 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[11m, - use=z29a, -z29a-nkc-bc|h29a-nkc-bc|z29 ansi mode with block cursor and no keyclick, - rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m\E[11m, - use=z29a, -z29a-nkc-uc|h29a-nkc-uc|z29 ansi mode with underscore cursor and no keyclick, - rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m\E[11m, - use=z29a, -# From: Jeff Bartig 31 Mar 1995 -z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode, - am, eslok, hs, mc5i, mir, msgr, xon, - cols#80, lines#24, - 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=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, - 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, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[1L, - ind=^J, is2=\E<\E[>1;3;5;6;7l\E[0m\E[2J, ka1=\EOw, - ka3=\EOu, kb2=\EOy, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS, - kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, - kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H, - mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, 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, tbc=\E[3g, - tsl=\E[s\E[>1h\E[25;%i%p1%dH, - -# From: Brad Brahms -z100|h100|z110|z-100|h-100|heath/zenith z-100 pc with color monitor, - cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw, -# (z100bw: removed obsolete ":kn#10:", added empty -- esr) -z100bw|h100bw|z110bw|z-100bw|h-100bw|heath/zenith z-100 pc, - OTbs, OTpt, mir, msgr, - OTkn#10, cols#80, it#8, lines#24, - acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, - clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, cuu1=\EA, - cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, ed=\EJ, el=\EK, - home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kcub1=\ED, kcud1=\EB, - kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES, kf2=\ET, kf3=\EU, - kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EOI, - khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF, - smir=\E@, smso=\Ep, -p19|h19-b with il1/dl1, - dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b, -# From: -# (ztx: removed duplicate :sr: -- esr) -ztx|ztx11|zt-1|htx11|ztx-1-a|ztx-10 or 11, - OTbs, am, eslok, hs, - cols#80, it#8, lines#24, - clear=\EE, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, - dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, - il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>, - kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES, - kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER, - ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2, - tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, - -#### IMS International (ims) -# -# There was a company called IMS International located in Carson City, -# Nevada, that flourished from the mid-70s to mid-80s. They made S-100 -# bus/Z80 hardware and a line of terminals called Ultimas. -# - -# From: Erik Fair Sun Oct 27 07:21:05 1985 -ims950-b|bare ims950 no init string, - is2@, use=ims950, -# (ims950: removed obsolete ":ko@:" -- esr) -ims950|ims televideo 950 emulation, - xenl@, - flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, - kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950, -# (ims950-rv: removed obsolete ":ko@:" -- esr) -ims950-rv|ims tvi950 rev video, - xenl@, - flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, - kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv, -ims-ansi|ultima2|ultimaII|IMS Ultima II, - OTbs, am, - cols#80, it#8, lines#24, - clear=\E[H\E[2J, cub1=^H, cud1=\ED, cuf1=\EC, - cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K, - ht=^I, if=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, - is2=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r, kcub1=\E[D, - kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, ri=\EM, - rmso=\E[m\E[1m, rmul=\E[m\E[1m, sgr0=\E[m, smso=\E[7m, - smul=\E[4m, - -#### Intertec Data Systems -# -# I think this company is long dead as of 1995. They made an early CP/M -# micro called the "Intertec Superbrain" that was moderately popular, -# then sank out of sight. -# - -superbrain|intertec superbrain, - OTbs, am, bw, - cols#80, lines#24, - OTbc=^U, bel=^G, clear=\014$<5*>, cr=^M, cub1=^H, cud1=^J, - cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K, - ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=^J, kcub1=^U, - kcud1=^J, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L, -# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>, -# rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM, -# and the reverse is actually true. Try it. -- esr) -intertube|intertec|Intertec InterTube, - OTbs, am, - cols#80, lines#25, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^F, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A, - ind=^J, rmso=\E0@, smso=\E0P, -# The intertube 2 has the "full duplex" problem like the tek 4025: if you -# are typing and a command comes in, the keystrokes you type get interspersed -# with the command and it messes up -intertube2|intertec data systems intertube 2, - OTbs, - cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, - el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, - ll=^K^X\r, vpa=\013%p1%c, use=intertube, - -#### Ithaca Intersystems -# -# This company made S100-bus personal computers long ago in the pre-IBM-PC -# past. They used to be reachable at: -# -# Ithaca Intersystems -# 1650 Hanshaw Road -# Ithaca, New York 14850 -# -# However, the outfit went bankrupt years ago. -# - -# The Graphos III was a color graphics terminal from Ithaca Intersystems. -# These entries were written (originally in termcap syntax) by Brian Yandell -# and Mike Meyer at the -# University of Wisconsin. - -# (graphos: removed obsolete and syntactically incorrect :kn=4:, -# removed and -# no such file & no -- esr) -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=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, - cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM, - dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, - il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, - kf4=\EOS, khome=\E[H, nel=^M\ED, rc=\E8, ri=\EM, rmdc=\E[4l, - rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h, - smir=\E[4h, smso=\E[7m, -graphos-30|graphos III with 30 lines, - lines#30, - cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos, - -#### Modgraph -# -# These people used to be reachable at: -# -# Modgraph, Inc -# 1393 Main Street, -# Waltham, MA 02154 -# Vox: (617)-890-5796. -# -# However, if you call that number today you'll get an insurance company. -# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated -# 26 Feb 1997 that says: -# -# Modgraph GX-1000, replaced by GX-2000. Both are out of production, have been -# for ~7 years. Modgraph still in business. Products are rugged laptop and -# portable PC's and specialized CRT and LCD monitors (rugged, rack-mount -# panel-mount etc). I can be emailed at sonfour@aol.com -# -# Peter D. Smith notes that his modgraph manual was -# dated 1984. According to the manual, it featured Tek 4010/4014 -# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard. -# - -modgraph|mod24|modgraph terminal emulating vt100, - xenl@, - cols#80, lines#24, - cvvis=\E\^9;0s\E\^7;1s, - is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s, - rf@, ri=\EM\E[K$<5/>, use=vt100, -# The GX-1000 manual is dated 1984. This looks rather like a VT-52. -modgraph2|modgraph gx-1000 80x24 with keypad not enabled, - am, da, db, - cols#80, it#8, lines#24, - clear=\EH\EJ$<50/>, cub1=^H, cud1=\EB$<2/>, - cuf1=\EC$<2/>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5/>, - cuu1=\EA$<2/>, ed=\EJ$<50/>, el=\EK$<3/>, ht=^I, - is2=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25;1s\E\^9;1s\E\^27;1, - ri=\EI$<5/>, -# -# Modgraph from Nancy L. Cider -# BUG NOTE from Barbara E. Ringers : -# If we set TERM=vt100, and set the Modgraph screen to 24 lines, setting a -# mark and using delete-to-killbuffer work correctly. However, we would -# like normal mode of operation to be using a Modgraph with 48 line setting. -# If we set TERM=mod (which is a valid entry in termcap with 48 lines) -# the setting mark and delete-to-killbuffer results in the deletion of only -# the line the mark is set on. -# We've discovered that the delete-to-killbuffer works correctly -# with TERM=mod and screen set to 80x48 but it's not obvious. Only -# the first line disappears but a ctrl-l shows that it did work -# correctly. -modgraph48|mod|Modgraph w/48 lines, - OTbs, OTpt, am, xenl, - cols#80, it#8, lines#48, vt#3, - OTnl=^J, bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[;H\E[2J, - cr=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^J, 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, rc=\E8, rev=\E[7m, - ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, - smso=\E[7m, smul=\E[4m, - -#### Morrow Designs -# -# This was George Morrow's company. They started in the late 1970s making -# S100-bus machines. They used to be reachable at: -# -# Morrow -# 600 McCormick St. -# San Leandro, CA 94577 -# -# but they're long gone now (1995). -# - -# The mt70 terminal was shipped with the Morrow MD-3 microcomputer. -# Jeff's specimen was dated June 1984. -# From: Jeff Wieland 24 Feb 1995 -mt70|mt-70|Morrow MD-70; native Morrow mode, - am, mir, msgr, xon, - cols#80, it#8, lines#24, - acsc=+z\,{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI, bel=^G, - cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=^M, cub1=^H, - cud1=^J, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1>, - cuu1=^K, dch1=\EW, dim=\EG2, dl1=\ER, ed=\EY, el=\ET$<10>, - flash=\EK1$<200>\EK0, home=^^, ht=^I, ich1=\EQ, il1=\EE, - ind=^J, invis@, is1=\E"2\EG0\E], kbs=^H, kcbt=^A^Z\r, - kclr=^An\r, kcub1=^AL\r, kcud1=^AK\r, kcuf1=^AM\r, - kcuu1=^AJ\r, kdch1=\177, kf1=^A@\r, kf10=^AI\r, kf11=^A`\r, - kf12=^Aa\r, kf13=^Ab\r, kf14=^Ac\r, kf15=^Ad\r, kf16=^Ae\r, - kf17=^Af\r, kf18=^Ag\r, kf19=^Ah\r, kf2=^AA\r, kf20=^Ai\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_, - rmacs=\E%%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E], - smul=\EG1, tbc=\E0, use=adm+sgr, - -#### Motorola -# - -# Motorola EXORterm 155 from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL -# (Seth H Zirin) -ex155|Motorola Exorterm 155, - OTbs, am, bw, - OTkn#5, OTug#1, cols#80, lines#24, - cbt=\E[, clear=\EX, cub1=\ED, cud1=\EB, cuf1=\EC, - cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\ET, - el=\EU, home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H, - kcud1=^J, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@, - rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED, - -#### Omron -# -# This company is still around in 1995, manufacturing point-of-sale systems. - -omron|Omron 8025AG, - OTbs, am, da, db, - cols#80, lines#24, - bel=^G, clear=\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, cuu1=\EA, - cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH, - il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef, - -#### Ramtek -# -# Ramtek was a vendor of high-end graphics terminals around 1979-1983; they -# were competition for things like the Tektronics 4025. -# - -# Ramtek 6221 from BRL, probably by Doug Gwyn -# The following SET-UP modes are assumed for normal operation: -# UNDERLINE_CURSOR ANSI_MODE AUTO_XON/XOFF_ON -# NEWLINE_OFF 80_COLUMNS -# Other SET-UP modes may be set for operator convenience or communication -# requirements; I recommend -# SMOOTH_SCROLL AUTO_REPEAT_ON 3_#_SHIFTED WRAP_AROUND_ON -# Hardware tabs are assumed to be every 8 columns; they can be set up by the -# "reset", "tset", or "tabs" utilities (use rt6221-w, 160 columns, for this). -# Note that the Control-E key is useless on this brain-damaged terminal. No -# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! -rt6221|Ramtek 6221 80x24, - OTbs, OTpt, msgr, xon, - OTkn#4, cols#80, it#8, lines#24, vt#3, - acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l, - clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=^M, - csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, - cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I, - hts=\EH, ind=^J, 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, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>, - rmso=\E[m, rmul=\E[m, - 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>, - sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, -# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)]. -rt6221-w|Ramtek 6221 160x48, - cols#160, lines#48, - ll=\E[48;1H, use=rt6221, - -#### RCA -# - -# RCA VP3301 or VP3501 -rca|rca vp3301/vp3501, - OTbs, - cols#40, lines#24, - clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1, - - -#### Selanar -# - -# Selanar HiREZ-100 from BRL, probably by Doug Gwyn -# The following SET-UP modes are assumed for normal operation: -# SET_DEFAULT_TABS 48_LINES 80_COLUMNS -# ONLINE ANSI CURSOR_VISIBLE -# VT102_AUTO_WRAP_ON VT102_NEWLINE_OFF VT102_MONITOR_MODE_OFF -# LOCAL_ECHO_OFF US_CHAR_SET WPS_TERMINAL_DISABLED -# CPU_AUTO_XON/XOFF_ENABLED PRINT_FULL_SCREEN -# For use with graphics software, all graphics modes should be set to factory -# default. Other SET-UP modes may be set for operator convenience or -# communication requirements. No delays are specified; use "stty ixon -ixany" -# to enable DC3/DC1 flow control! -# I commented out the scrolling capabilities since they are too slow. -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, clear=\E[H\E[J, - cr=^M, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\EM, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - hts=\EH, il=\E[%p1%dL, il1=\E[L, 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, mc4=\E[4i\E[?4i, - mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O, - rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, - rs1=\030\E2\E<\E[4i\E[?4i\E[12h\E[2;4;20l\E[?0;7h\E[?1;3;6;19l\E[r\E[m\E(B\017\E)0\E>, - sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E[?1h\E=, smso=\E[7m, - smul=\E[4m, tbc=\E[3g, -hirez100-w|Selanar HiREZ-100 in 132-column mode, - cols#132, use=hirez100, - -#### Signetics -# - -# From University of Wisconsin -vsc|Signetics Vsc Video driver by RMC, - am, msgr, - cols#80, it#8, lines#26, - clear=\E[;H\E[2J$<50/>, cr=^M, cub1=^H, cud1=^J, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, - ht=^I, ind=^J, kbs=^H, kcub1=^H, kcud1=^J, nel=^M^J, rev=^_\s, - rmso=^_!, rmul=^_#, sgr0=^_!, smso=^_\s, smul=^_", - -#### Soroc -# -# Alan Frisbie writes: -# -# As you may recall, the Soroc logo consisted of their name, -# with the letter "S" superimposed over an odd design. This -# consisted of a circle with a slightly smaller 15 degree (approx.) -# wedge with rounded corners inside it. The color was sort of -# a metallic gold/yellow. -# -# If I had been more of a beer drinker it might have been obvious -# to me, but it took a clue from their service department to make -# me exclaim, "Of course!" The circular object was the top of -# a beer can (the old removable pop-top style) and "Soroc" was an -# anagram for "Coors". -# -# I can just imagine the founders of the company sitting around -# one evening, tossing back a few and trying to decide what to -# call their new company and what to use for a logo. -# - -# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr) -soroc120|iq120|soroc|soroc iq120, - clear=\E*$<2>, cud1=^J, ed=\EY, el=\ET, kcub1=^H, kcud1=^J, - kcuf1=^L, kcuu1=^K, use=adm3a, -soroc140|iq140|soroc iq140, - OTbs, am, mir, - cols#80, lines#24, - bel=^G, cbt=\EI, clear=\E+, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\Ew, - dl1=\Er$<.7*>, ed=\Ey, el=\Et, home=^^, il1=\Ee$<1*>, ind=^J, - kbs=^H, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A@\r, kf2=^AA\r, - kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, - kf8=^AG\r, kf9=^AH\r, khome=^^, ll=^^^K, rmir=\E8, - rmso=\E\177, rmul=\E^A, smir=\E9, smso=\E\177, smul=\E^A, - -#### Southwest Technical Products -# -# These guys made an early personal micro called the M6800. -# The ct82 was probably its console terminal. -# - -# (swtp: removed obsolete ":bc=^D:" -- esr) -swtp|ct82|southwest technical products ct82, - am, - cols#82, lines#20, - bel=^G, clear=^L, cr=^M, cub1=^D, cud1=^J, cuf1=^S, - cup=\013%p2%c%p1%c, cuu1=^A, dch1=^\^H, dl1=^Z, ed=^V, el=^F, - home=^P, ich1=^\^X, il1=^\^Y, ind=^N, - is2=\034\022\036\023\036\004\035\027\011\023\036\035\036\017\035\027\022\011, - ll=^C, ri=^O, rmso=^^^F, smso=^^^V, - -#### Synertek -# -# Bob Manson writes (28 Apr 1995): -# -# Synertek used to make ICs, various 6502-based single-board process -# control and hobbyist computers, and assorted peripherals including a -# series of small inexpensive terminals (I think they were one of the -# first to have a "terminal-on-a-keyboard", where the terminal itself -# was only slightly larger than the keyboard). -# -# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40 -# was a 40x24 terminal that could connect to a standard TV through a -# video modulator. The KTM-2/80 was the 80-column version (the 2/40 -# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM). -# I have a KTM-2/80 still in working order. The KTM-2s had fully -# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program -# ROM and 2 ROMs as character generators. They were incredibly simple, -# and I've never had any problems with mine (witness the fact that mine -# was made in 1981 and is still working great... I've blown the video -# output transistor a couple of times, but it's a 2N2222 :-) -# -# The KTM-3 (which is what is listed in the terminfo file) was their -# attempt at putting a KTM-2 in a box (and some models came with a -# CRT). It wasn't much different from the KTM-2 hardware-wise, but the -# control and escape sequences are very different. The KTM-3 was always -# real broken, at least according to the folks I've talked to about it. -# -# The padding in the entry is probably off--these terminals were very -# slow (it takes like 100ms for the KTM-2 to clear the screen...) And -# anyone with any sanity replaced the ROMs with something that provided -# a reasonable subset of VT100 functionality, since the usual ROMs were -# obviously very primitive... oh, you could get an upgraded ROM from -# Synertek for some incredible amount of money, but what hacker with an -# EPROM burner would do that? :) -# -# Sorry I don't have any contact info; I believe they were located in -# Sunnyvale, and I'm fairly sure they are still manufacturing ICs -# (they've gone to ASICs and FPGAs), but I doubt they're in the computer -# business these days. -# - -# Tested, seems to work fine with vi. -synertek|ktm|synertek380|synertek ktm 3/80 tubeless terminal, - am, - cols#80, lines#24, - clear=^Z, cub1=^H, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK, - -#### Tab Office Products -# -# TAB Products Co. - Palo Alto, California -# Electronic Office Products, -# 1451 California Avenue 94304 -# -# I think they're out of business. -# - -# The tab 132 uses xon/xoff, so no padding needed. -# / have nothing to do with arrow keys. -# sets 80 col mode, normal video, autowrap on (for ). -# Seems to be no way to get rid of status line. -# The manual for this puppy was dated June 1981. It claims to be VT52- -# compatible but looks more vt100-like. -tab132|tab|tab132-15|tab 132/15, - da, db, - OTdN@, cols#80, lines#24, lm#96, - cud1=^J, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, - il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B, - kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@, use=vt100, -tab132-w|tab132 in wide mode, - cols#132, - is2=\E[?7h\E[?3h\E[?5l, use=tab132, -tab132-rv|tab132 in reverse-video mode, - is2=\E[?7h\E[?3l\E[?5h, use=tab132, -tab132-w-rv|tab132 in reverse-video/wide mode, - is2=\E[?7h\E[?3h\E[?5h, use=tab132-w, - - -#### Teleray -# -# Research Incorporated -# 6425 Flying Cloud Drive -# Eden Prairie, MN 55344 -# Vox: (612)-941-3300 -# -# The Teleray terminals were all discontinued in 1992-93. RI still services -# and repairs these beasts, but no longer manufactures them. The Teleray -# people believe that all the types listed below are very rare now (1995). -# There was a newer line of Telerays (Model 7, Model 20, Model 30, and -# Model 100) that were ANSI-compatible. -# -# Note two things called "teleray". Reorder should move the common one -# to the front if you have either. A dumb teleray with the cursor stuck -# on the bottom and no obvious model number is probably a 3700. -# - -t3700|dumb teleray 3700, - OTbs, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, ind=^J, -t3800|teleray 3800 series, - OTbs, - cols#80, it#8, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK, - home=\EH, ht=^I, ind=^J, ll=\EY7\s, -t1061|teleray|teleray 1061, - OTbs, am, km, xhp, xt, - cols#80, it#8, lines#24, xmc#1, - bel=^G, clear=\014$<1>, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EM$<2*>, ed=\EJ$<1>, el=\EK, home=\EH, ht=^I, hts=\EF, - ich1=\EP, il1=\EL$<2*>, ind=^J, ip=$<0.4*>, - is2=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5\EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef, - kf1=^Z1, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7, - kf8=^Z8, rmso=\ER@, rmul=\ER@, smso=\s\ERD, smul=\ERH, - tbc=\EG, -t1061f|teleray 1061 with fast PROMs, - dl1=\EM, il1=\EL, ip@, use=t1061, -# "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, -# 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. -# Note: this is NOT the old termcap's "t1061f with fast proms." -# From: J. Lepreau Tue Feb 1 06:39:37 1983, Univ of Utah -# (t10: removed overridden ":so@:se@:us@:ue@:" -- esr) -t10|teleray 10 special, - OTbs, km, xhp, xt, - cols#80, it#8, lines#24, xmc#2, - clear=\Ej$<30/>, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL, - ind=\Eq, pad=\0, ri=\Ep, rmso=\ER@, rmul=\ER@, smso=\ERD, - smul=\ERH, -# teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and -# back/forth words. Put the function keys (f1-f10) where they can be -# found, and turn off the other magic keys along the top row, except -# for line/local. Do the magic appropriate to make the page shifts work. -# Also toggle ^S/^Q for those of us who use Emacs. -t16|teleray 16, - am, da, db, mir, xhp, xt, - cols#80, lines#24, - bel=^G, clear=\E[H\E[2J, cr=^M, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, dch1=\E[P, - dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, ht=^I, il1=\E[L, - ind=^J, 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, - -#### Texas Instruments (ti) -# - -# The Silent 700 was so called because it was built around a quiet thermal -# printer. It was portable, equipped with an acoustic coupler, and pretty -# neat for its day. -ti700|ti733|ti735|ti745|ti800|ti silent 700/733/735/745 or omni 800, - OTbs, hc, os, - cols#80, - bel=^G, cr=\r$<162>, cub1=^H, cud1=^J, ind=^J, - -# -# Texas Instruments 916 VDT 7 bit control mode -# -ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL, - da, db, in, msgr, - cbt=\E[Z, civis=\E[?25l, clear=\E[H\E[2J$<6>, - cnorm=\E[?25h, cub=\E[%p1%dD, cud=\E[%p1%dB, - cuf=\E[%p1%dC, cup=\E[%p1%i%p1%d;%p2%dH, cuu=\E[%p1%dA, - dch=\E[%p1%dP$<250>, dch1=\E[P, dl=\E[%p1%dM, - ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K, el1=\E[1K, - 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=^J, 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>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, - use=vt220, -# -# Texas Instruments 916 VDT 8 bit control mode -# -ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL, - kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C, - kcuu1=\233A, kdch1=\233P, kent=^J, kf1=\23317~, - kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~, - kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, - kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H, - kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916, -# -# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode -# -ti916-132|Texas Instruments 916 VDT vt220 132 column, - cols#132, use=ti916, -# -# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode -# -ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column, - cols#132, use=ti916-8, -ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL, - OTbs, am, xon, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M, - csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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~, - 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, -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, civis=\E[?25l, - clear=\E[2J\E[H, cnorm=\E[?25h, cr=^M, - csr=%i\E[%p1%d;%p2%dr, cub1=\E[D, cud1=\E[B, cuf1=\E[C, - cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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=P$<\233>, kf1=P$<\217>, - kf2=Q$<\217>, kf3=R$<\217>, kf4=S$<\217>, 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, -ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode, - cols#132, use=ti924, -ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode, - cols#132, use=ti924-8, -ti931|Texas Instruments 931 VDT, - OTbs, am, xon, - cols#80, lines#24, - bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=^M, cub1=\ED, - cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, - cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, - ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H, - is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC, - kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3, - kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9, - kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@, - sgr0=\E4@, smso=\E4A, smul=\E4D, -ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL, - csr@, ind=\E[1S, ri=\E[1T, use=ti924, -# (ti926-8: I corrected this from the broken SCO entry -- esr) -ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL, - csr@, ind=\2331S, ri=\2331T, use=ti924-8, -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=^M, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, - cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, kbs=^H, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, 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, -# -# 928 VDT 7 bit control mode -# -ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL, - kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~, - kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, - kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, - kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, - kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi, -# -# 928 VDT 8 bit control mode -# -ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL, - kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~, - kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~, - kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~, - kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~, - kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S, - kpp=\233T, kprt=\23335~, use=ti_ansi, - -#### Zentec (zen) -# - -# (zen30: removed obsolete :ma=^L ^R^L^K^P:. This entry originally -# had just =\EG6 which I think means standout was supposed to be -# dim-reverse using ADM12-style attributes. ADM12 / and -# might work-- esr) -zen30|z30|zentec 30, - OTbs, am, mir, ul, - cols#80, lines#24, - bel=^G, clear=\E*, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, - dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^, - il1=\EE$<1.5*>, ind=^J, rmir=\Er, rmul@, smir=\Eq, smso=\EG6, - smul@, use=adm+sgr, -# (zen50: this had extension capabilities -# :BS=^U:CL=^V:CR=^B: -# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh, -# which were also in the original entry -- esr) -# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr) -zen50|z50|zentec zephyr, - OTbs, am, - cols#80, lines#24, xmc#1, - clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, - cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE, - invis@, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, khome=^^, - rmul@, smul@, use=adm+sgr, - -# CCI 4574 (Office Power) from Will Martin via BRL -cci|cci1|z8001|zen8001|CCI Custom Zentec 8001, - OTbs, am, bw, - cols#80, lines#24, - blink=\EM", clear=\EH\EJ, cnorm=\EP, - csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^J, - cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, - cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH, - invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED, - kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R, - rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s, - smso=\EM$, smul=\EM0, - -######## OBSOLETE UNIX CONSOLES -# - -#### Apollo consoles -# -# Apollo got bought by Hewlett-Packard. The Apollo workstations are -# labeled HP700s now. -# - -# From: Gary Darland -apollo|apollo console, - OTbs, am, mir, - cols#88, lines#53, - clear=^L, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL, - ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED, - rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ, - smso=\ES, smul=\EU, vpa=\EO+\s, - -# We don't know whether or not the apollo guys replicated DEC's firmware bug -# in the VT132 that reversed /. To be on the safe side, disable -# both these capabilities. -apollo_15P|apollo 15 inch display, - rmir@, smir@, use=vt132, -apollo_19L|apollo 19 inch display, - rmir@, smir@, use=vt132, -apollo_color|apollo color display, - rmir@, smir@, use=vt132, - -#### Convergent Technology -# -# Burroughs bought Convergent shortly before it merged with Univac. -# CTOS is (I believe) dead. Probably the aws is too (this entry dates -# from 1991 or earlier). -# - -# Convergent AWS workstation from Gould/SEL UTX/32 via BRL -# (aws: removed unknown :dn=^K: -- esr) -aws|Convergent Technologies AWS workstation under UTX and Xenix, - am, - OTug#0, cols#80, lines#28, xmc#0, - OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=^J, acsc=, - clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, - dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c, - ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K, - kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF, - rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN, - vpa=\EV%p1%c, -awsc|Convergent Technologies AWS workstation under CTOS, - am, - OTug#0, cols#80, lines#24, xmc#0, - OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L, - cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF, - el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A, - rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE, - smul=\EAC, - -#### DEC consoles -# - -# The MicroVax console. Tim Theisen writes: -# The digital uVax II's had a graphic display called a qdss. It was -# supposed to be a high performance graphic accelerator, but it was -# late to market and barely appeared before faster dumb frame buffers -# appeared. I have only used this display while running X11. However, -# during bootup, it was in text mode, and probably had a terminal emulator -# within it. And that is what your termcap entry is for. In graphics -# mode the screen size is 1024x864 pixels. -qdss|qdcons|qdss glass tty, - OTbs, am, - cols#128, lines#57, - clear=\032$<1/>, cub1=^H, cud1=^J, cuf1=^L, - cup=\E=%p1%c%p2%c, cuu1=^K, - -#### Fortune Systems consoles -# -# Fortune made a line of 68K-based UNIX boxes that were pretty nifty -# in their day; I (esr) used one myself for a year or so around 1984. -# They had no graphics, though, and couldn't compete against Suns and -# the like. R.I.P. -# - -# From: Robert Nathanson via tut Wed Oct 5, 1983 -# (This had extension capabilities -# :rv=\EH:re=\EI:rg=0:GG=0:\ -# :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\ -# :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:\ -# :PU=^An\r:PD=^Ao\r:PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F: -# It had both ":bs:" and ":bs=^H:"; I removed the latter. Also, it had -# ":sg=0:" and ":ug=0:"; evidently the composer was trying (unnecessarily) -# to force both magic cookie glitches off. Once upon a time, I -# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are -# function keys; thus the "Al" value for HM was certainly an error. I renamed -# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC. -# I think :rv: and :re: are start/end reverse video and :rg: is a nonexistent -# "reverse-video-glitch" capability; I have put :rv: and :re: in with standard -# names below. I've removed obsolete ":nl=5^J:" as there is a :do: -- esr) -fos|fortune|Fortune system, - OTbs, am, bw, - cols#80, lines#25, - acsc=j*k(l m"q&v%w#x-, bel=^G, blink=\EN, civis=\E], - clear=\014$<20>, cnorm=\E\\, cr=^M, cub1=^H, cud1=\n$<3>, - cup=\034C%p1%{32}%+%c%p2%{32}%+%c, cuu1=\013$<3>, - cvvis=\E\:, dch1=\034W$<5>, dl1=\034R$<15>, - ed=\034Y$<3*>, el=^\Z, home=\036$<10>, ht=^Z, - ich1=\034Q$<5>, il1=\034E$<15>, ind=^J, is2=^_.., kbs=^H, - kcub1=^Aw\r, kcud1=^Ay\r, kcuf1=^Az\r, kcuu1=^Ax\r, - kend=^Ak\r, kent=^Aq, kf1=^Aa\r, kf2=^Ab\r, kf3=^Ac\r, - kf4=^Ad\r, kf5=^Ae\r, kf6=^Af\r, kf7=^Ag\r, kf8=^Ah\r, - khome=^A?\r, knp=^Ao\r, kpp=^An\r, nel=^M^J, rev=\EH, - rmacs=^O, rmso=^\I`, rmul=^\IP, sgr0=\EI, smacs=\Eo, - smso=^\H`, smul=^\HP, - -#### Masscomp consoles -# -# Masscomp has gone out of business. Their product line was purchased by -# comany in Georgia (US) called "XS International", parts and service may -# still be available through them. -# - -# (masscomp: ":MT:" changed to ":km:"; -- esr) -masscomp|masscomp workstation console, - OTbs, km, mir, - cols#80, it#8, lines#24, - clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, -masscomp1|masscomp large screen version 1, - cols#104, lines#36, use=masscomp, -masscomp2|masscomp large screen version 2, - cols#64, lines#21, use=masscomp, - -######## OTHER OBSOLETE TYPES -# -# These terminals are *long* dead -- these entries are retained for -# historical interest only. -# - -#### Obsolete non-ANSI software emulations -# - -# CTRM terminal emulator -# 1. underlining is not allowed with colors: first, is is simulated by -# black on white, second, it disables background color manipulations. -# 2. BLINKING, REVERSE and BOLD are allowed with colors, -# so we have to save their status in the static registers A, B and H -# respectively, to be able to restore them when color changes -# (because any color change turns off ALL attributes) -# 3. and sequences alternate modes, -# rather than simply entering them. Thus we have to check the -# static register B and H to determine the status, before sending the -# escape sequence. -# 4. now must set the status of all 3 register (A,B,H) to zero -# and then reset colors -# 5. implementation of the protect mode would badly penalize the performance. -# we would have to use \E&bn sequence to turn off colors (as well as all -# other attributes), and keep the status of protect mode in yet another -# static variable. If someone really needs this mode, they would have to -# create another terminfo entry. -# 6. original color-pair is white on black. -# store the information about colors into static registers -# 7. set foreground color. it performs the following steps. -# 1) turn off all attributes -# 2) turn on the background and video attributes that have been turned -# on before (this information is stored in static registers X,Y,Z,A,B,H,D). -# 3) turn on foreground attributes -# 4) store information about foreground into U,V,W static registers -# 8. turn on background: similar to turn on foreground above -ctrm|C terminal emulator, - am, bce, xon, - colors#8, cols#80, lh#0, lines#24, lm#0, lw#0, ncv#2, nlab#0, - pairs#63, pb#19200, vt#6, - bel=^G, blink=\E&dA%{1}%PA, - bold=%?%gH%{0}%=%t\E&dH%{1}%PH%;, cbt=\Ei, - clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\E&a%p2%dc%p1%dY, cuu1=\EA, dch1=\EP$<2>, dl1=\EM, - ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=\011$<2>, hts=\E1, - il1=\EL, ind=^J, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r, - kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1=\Ep\r, - kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, - kf7=\Ev\r, kf8=\Ew\r, khome=\Ep\r, - op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV%{1}%PU, - rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA, - setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t\E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb%{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1%{4}%&%t\E&br%{1}%e%{0}%;%PX, - setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t\E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB%{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1%{4}%&%t\E&bR%{1}%e%{0}%;%PU, - sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB%{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2%t\E&dD%;, - sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB, - smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, - -# gs6300 - can't use blue foreground, it clashes with underline; -# it's simulated with cyan -# Bug: The capability probably resets attributes. -# (gs6300: commented out (no ) --esr) -gs6300|emots|AT&T PC6300 with EMOTS terminal emulator, - am, bce, msgr, xon, - colors#8, cols#80, it#8, lines#24, pairs#63, - acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=^M, - cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=^J, - cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, - cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, - dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, - ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=^J, - is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s, - kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s, - khome=\E[H, 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, - -# From: 29 Oct 85 05:40:18 GMT -# MS-Kermit with Heath-19 emulation mode enabled -# (h19k: changed ":pt@:" to ":it@" -h19k|h19kermit|heathkit emulation provided by Kermit (no auto margin), - am@, da, db, xt, - it@, - ht@, use=h19-u, - -# Apple Macintosh with Versaterm, a terminal emulator distributed by Synergy -# Software (formerly Peripherals Computers & Supplies, Inc) of -# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376. They can -# also be reached at support@synergy.com. -versaterm|versaterm vt100 emulator for the macintosh, - am, xenl, - cols#80, it#8, lines#24, - bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, - clear=\E[;H\E[2J$<50/>, cr=^M, csr=\E[%i%p1%d;%p2%dr, - cub1=^H, cud1=^J, cuf1=\E[C$<2/>, - cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>, - dch1=\E[1P$<7/>, dl1=\E[1M$<9/>, 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=^M^J, rc=\E8, rev=\E[7m$<2/>, - rf=/home/martino/avrdude-build-script/objdir/share/tabset/vt100, ri=\EM$<5/>, - rmkx=\E>\E[?1l, rmso=\E[m$<2/>, rmul=\E[m$<2/>, rs1=\E>, - sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>, - smul=\E[4m$<2/>, - -# From: Rick Thomas -# (xtalk: I added / based on the init string. -xtalk|IBM PC with xtalk communication program (versions up to 3.4), - am, mir, msgr, xon, - cols#80, it#8, lines#24, vt#3, xmc#1, - acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, - bel=^G, clear=\E[H\E[J$<50>, cr=^M, cub=\E[%p1%dD, cub1=^H, - cud=\E[%p1%dB, cud1=^J, cuf=\E[%p1%dC, cuf1=\E[C$<2>, - cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, - cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>, - el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, - il1=\E[L$<99>, ind=^J, kbs=^H, kcub1=\EOD, kcud1=\EOB, - kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, - rmkx=\E[?1l\E>, rmso=\E[m\s, - rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m, - smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s, - tbc=\E[3g, use=vt100+fnkeys, - -# The official PC terminal emulator program of the AT&T Product Centers. -# Note - insert mode commented out - doesn't seem to work on AT&T PC. -simterm|attpc running simterm, - am, - cols#80, lines#24, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=\EB, cuf1=\EC, - cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\ER, - dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, ind=^J, rmcup=\EVE, - rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB, - -#### Daisy wheel printers -# -# This section collects Diablo, DTC, Xerox, Qume, and other daisy -# wheel terminals. These are now largely obsolete. -# - -# (diablo1620: removed , no such file -- esr) -diablo1620|diablo1720|diablo450|ipsi|diablo 1620, - hc, os, - cols#132, it#8, - cub1=^H, cud1=^J, cuu1=\E^J, hd=\ED, hpa=\E\011%i%p1%c, - ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2, -diablo1620-m8|diablo1640-m8|diablo 1620 w/8 column left margin, - cols#124, - is2=\r \E9, use=diablo1620, -# (diablo1640: removed , no such file -- esr) -diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|diablo 1640, - bel=^G, rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, - use=diablo1620, -# (diablo1640-lm: removed , no such -# file -- esr) -diablo1640-lm|diablo-lm|xerox-lm|diablo 1640 with indented left margin, - cols#124, - rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, use=diablo1620, -diablo1740-lm|630-lm|1730-lm|x1700-lm|diablo 1740 printer, - use=diablo1640-lm, -# DTC 382 with VDU. Has no so we fake it with . Standout -# works but won't go away without dynamite . -# The terminal has tabs, but I'm getting tired of fighting the braindamage. -# If no tab is set or the terminal's in a bad mood, it glitches the screen -# around all of memory. Note that return puts a blank ("a return character") -# in the space the cursor was at, so we use ^P return (and thus ^P newline for -# newline). Note also that if you turn off :pt: and let Unix expand tabs, -# curses won't work (some old BSD versions) because it doesn't clear this bit, -# and cursor addressing sends a tab for row/column 9. What a losing terminal! -# I have been unable to get tabs set in all 96 lines - it always leaves at -# least one line with no tabs in it, and once you tab through that line, -# it completely weirds out. -# (dtc382: change to -- it just does a clear --esr) -dtc382|DTC 382, - am, da, db, xhp, - cols#80, lines#24, lm#96, - bel=^G, clear=\020\035$<20>, cnorm=^Pb, cr=^P^M, cub1=^H, - cuf1=^PR, cup=\020\021%p2%c%p1%c, cuu1=^P^L, cvvis=^PB, - dch1=^X, dl1=^P^S, ed=\020\025\020\023\020\023, el=^P^U, - home=^P^R, il1=^P^Z, ind=^J, pad=\177, rmcup=, rmir=^Pi, - rmul=^P \0, smcup=\020\035$<20>, smir=^PI, smul=^P ^P, -dtc300s|DTC 300s, - hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I, - hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3, -gsi|mystery gsi terminal, - hc, os, - cols#132, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH, - ind=^J, -aj830|aj832|aj|anderson jacobson, - hc, os, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E7, hd=\E9, hu=\E8, - ind=^J, -# From: Chris Torek Thu, 7 Nov 85 18:21:58 EST -aj510|Anderson-Jacobson model 510, - am, mir, - cols#80, lines#24, - clear=^L, cub1=^H, cuf1=\EX, - cup=\E#%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EY, - dch1=.1*\E'D, dl1=\E&D$<2*/>, ed=\E'P, el=\E'L, ich1=, - il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ, - kcuf1=\EX, kcuu1=\EY, pad=\177, rmcup=\E"N, rmir=\E'J, - rmso=\E"I, rmul=\E"U, smcup=\E"N, smir=\E'I, smso=\E"I, - smul=\E"U, -# From: Thu Aug 20 09:09:18 1981 -# This is incomplete, but it's a start. -nec5520|nec|spinwriter|nec 5520, - hc, os, - cols#132, it#8, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=\E9, ff=^L, - hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=^J, - kbs=^H, tbc=\E3, -qume5|qume|Qume Sprint 5, - hc, os, - cols#80, it#8, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuu1=^Z, ff=^L, hd=\Eh, ht=^I, - hts=\E1, hu=\EH, ind=^J, kbs=^H, tbc=\E3, -# I suspect the xerox 1720 is the same as the diablo 1620. -xerox1720|x1720|x1750|xerox 1720, - hc, os, - cols#132, it#8, - bel=^G, cr=^M, cub1=^H, cud1=^J, ff=^L, ht=^I, hts=\E1, ind=^J, - tbc=\E2, - -#### Miscellaneous obsolete terminals, manufacturers unknown -# -# If you have any information about these (like, a manufacturer's name, -# and a date on the serial-number plate) please send it! - -cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars, - OTbs, am, - cols#73, lines#36, - clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, -cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars, - OTbs, am, - cols#85, lines#39, - clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3, - kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7, - kf4=\E8, rmso=\Em^C, smso=\Em^L, -cops10|cops|cops-10|cops 10, - am, bw, - cols#80, lines#24, - bel=^G, clear=\030$<30/>, cr=^M, cub1=^H, cud1=^J, cuf1=^L, - cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^W, el=^V, - ind=^J, kbs=^H, kcub1=^H, kcud1=^J, kcuf1=^L, kcuu1=^K, - khome=^Y, -# (d132: removed duplicate :ic=\E5:, -# merged in capabilities from a BRL entry -- esr) -d132|datagraphix|datagraphix 132a, - da, db, in, - cols#80, lines#30, - bel=^G, clear=^L, cnorm=\Em\En, cr=^M, cub1=^H, cud1=^J, - cuf1=\EL, cup=\E8%i%p1%3d%p2%3d, cuu1=\EK, cvvis=\Ex, - dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=^J, kbs=^H, - kcub1=^H, kcud1=^J, nel=^M^J, ri=\Ew, -# The d800 was an early portable terminal from c.1984-85 that looked a lot -# like the original Compaq `lunchbox' portable (but no handle). It had a vt220 -# mode (which is what this entry looks like) and several other lesser-known -# emulations. -d800|Direct 800/A, - OTbs, am, da, db, msgr, xhp, - cols#80, it#8, lines#24, - acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, - bel=^G, clear=\E[1;1H\E[2J, cnorm=\E[>12h, cr=^M, cub1=^H, - cud1=^J, 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, -digilog|digilog 333, - OTbs, - cols#80, lines#16, - bel=^G, cr=^M, cub1=^H, cud1=^J, cuf1=^I, cuu1=^O, el=^X, - home=^N, ind=^J, -# The DWK was a terminal manufactured in the Soviet Union c.1986 -dwk|dwk-vt|dwk terminal, - am, - cols#80, it#8, lines#24, - acsc=+\^\,Q-S.M0\177`+a\:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~_, - bel=^G, clear=\EH\EJ, cr=^M, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, - ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=^J, kbs=\177, - kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee, - kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5, - kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh, - kpp=\Eg, nel=^M^J, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX, - sgr0=\EX, smacs=\EF, smso=\ET, -env230|envision230|envision 230 graphics terminal, - xenl@, - mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, - sgr=\E[%?%p1%t;1%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1%;m$<2>, - use=vt100, -# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic -# coupler attached, the whole rig fitting in a suitcase and more or less -# portable. Hot stuff for c.1977 :-) -- esr -ep48|ep4080|execuport 4080, - OTbs, am, os, - cols#80, - bel=^G, cr=^M, cub1=^H, cud1=^J, hd=^\, hu=^^, ind=^J, -ep40|ep4000|execuport 4000, - cols#136, use=ep4080, -# Adam Thompson tells us: -# Informer series - these are all portable units, resembling older -# automatic bread-baking machines. The terminal looks like a `clamshell' -# design, but isn't. The structure is similar to the Direct terminals, -# but only half the width. The entire unit is only about 10" wide. -# It features an 8" screen (6" or 7" if you have color!), and an 9"x6" -# keyboard. All the keys are crammed together, much like some laptop -# PCs today, but perhaps less well organized...all these units have a -# bewildering array of plugs on the back, including a built-in modem. -# The 305 was a color version of the 304; the 306 and 307 were mono and -# color terminals built for IBM bisync protocols. -# From: Paul Leondis -ifmr|Informer D304, - OTbs, am, - cols#80, lines#24, - clear=\EZ, cub1=^H, cud1=^J, cuf1=\EC, - cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\, - ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK, - smso=\EJ, -# Entry largely based on wy60 and has the features of wy60ak. -opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys, - am, bw, hs, km, mir, msgr, ul, xon, - cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#80, - acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, - cbt=\EI, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, cr=^M, - cub1=^H, cud1=^J, cuf1=^L, cup=\Ea%i%p1%dR%p2%dC, cuu1=^K, - dch1=\EW$<11>, dim=\EGp, dl1=\ER$<5>, dsl=\Ez(\r, - ed=\EY$<100>, el=\ET, fsl=^M, home=\036$<2>, ht=\011$<5>, - hts=\E1, if=/home/martino/avrdude-build-script/objdir/share/tabset/std, il1=\EE$<4>, ind=^J, - ip=$<3>, - is2=\E`\:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F\177\EA1*\EZH12, - kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B, - kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY, - kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r, - kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, - kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, - kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, - kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, - mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>, - pfloc=\EZ2%p1%{63}%+%c%p2%s\177, - pfx=\EZ1%p1%{63}%+%c%p2%s\177, - pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, - rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11, - rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>, - rs3=\EwG\Ee($<150>, - sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c, - sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/, - smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177, - smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(, - uc=\EG8\EG0, use=adm+sgr, -teletec|Teletec Datascreen, - OTbs, am, - cols#80, lines#24, - bel=^G, clear=^L, cr=^M, cub1=^H, cud1=^J, cuf1=^_, cuu1=^K, - home=^^, ind=^J, -# From: Mark Dornfeld -# This description is for the LANPAR Technologies VISION 3220 -# terminal from 1984/85. The function key definitions k0-k5 represent the -# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN, -# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys. -# -# Kenneth Randell writes on 31 Dec 1998: -# I had a couple of scopes (3221) like this once where I used to work, around -# the 1987 time frame if memory serves me correctly. These scopes were made -# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220 -# compatible. The 3220 was a plain text terminal like the VT-220, the 3221 -# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222 -# was like the VT-241 (color with Regis + Sixel Graphics). These terminals -# (3221) cost about $1500 each, and one was always broken -- had to be sent -# back to the shop for repairs. -# The only real advantage these scopes had over the VT-240's were: -# 1) They were faster in the Regis display, or at least the ones I did -# 2) They had a handy debugging feature where you could split-screen the -# scope, the graphics would appear on the top, and the REGIS commands would -# appear on the bottom. I don't remember the VT-240s being able to do that. -# I would swear that LANPAR Technologies was in MA someplace, but since I -# don't work at the same place anymore, and those terminals and manuals were -# long since junked, I cannot be any more sure than that. -# -# (v3220: removed obsolete ":kn#10:", -# I added / based on the init string -- esr) -v3220|LANPAR Vision II model 3220/3221/3222, - OTbs, am, mir, xenl, - cols#80, it#8, lines#24, - clear=\E[H\E[J, cub1=^H, cud1=\E[B, cuf1=\E[C, - cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, - ed=\E[J, el=\E[K, 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, -######## ICH/ICH1 VERSUS RMIR/SMIR -# -# Some non-curses applications get confused if both ich/ich1 and rmir/smir -# are present; the symptom is doubled characters in an update using insert. -# These applications are technically correct; in both 4.3BSD termcap and -# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir -# unless the terminal needs both. To my knowledge, no terminal still in this -# file requires both other than the very obsolete dm2500. -# -# For ncurses-based applications this is not a problem, as ncurses uses -# one or the other as appropriate but never mixes the two. Therefore we -# have not corrected entries like `linux' and `xterm' that specify both. -# If you see doubled characters from these, use the linux-nic and xterm-nic -# entries that suppress ich/ich1. And upgrade to ncurses! -# - -######## VT100/ANSI/ISO 6429/ECMA-48/PC-TERM TERMINAL STANDARDS -# -# ANSI X3.64 has been withdrawn and replaced by ECMA-48. The ISO 6429 and -# ECMA-48 standards are said to be almost identical, but are not the same -# as X3.64 (though for practical purposes they are close supersets of it). -# -# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch -# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for -# Coded Character Sets"), include your snail-mail address, and you should -# receive the document in due course. Don't expect an email acknowledgement. -# -# Related standards include "X3.4-1977: American National Standard Code for -# Information Interchange" (the ASCII standard) and "X3.41.1974: -# Code-Extension Techniques for Use with the 7-Bit Coded Character Set of -# American National Standard for Information Interchange." I believe (but -# am not certain) that these are effectively identical to ECMA-6 and ECMA-35 -# respectively. -# - -#### VT100/ANSI/ECMA-48 -# -# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals -# and ECMA-48 Control Functions for Coded Character Sets. -# -# Much of the content of this comment is adapted from a table prepared by -# Richard Shuford, based on a 1984 Byte article. Terminfo correspondences, -# discussion of some terminfo-related issues, and updates to capture ECMA-48 -# have been added. Control functions described in ECMA-48 only are tagged -# with * after their names. -# -# The table is a complete list of the defined ANSI X3.64/ECMA-48 control -# sequences. In the main table, \E stands for an escape (\033) character, -# SPC for space. Pn stands for a single numeric parameter to be inserted -# in decimal ASCII. Ps stands for a list of such parameters separated by -# semicolons. Parameter meanings for most parametrized sequences are -# decribed in the notes. -# -# Sequence Sequence Parameter or -# Mnemonic Name Sequence Value Mode terminfo -# ----------------------------------------------------------------------------- -# APC Applicatn Program Command \E _ - Delim - -# BEL Bell * ^G - - bel -# BPH Break Permitted Here * \E B - * - -# BS Backpace * ^H - EF - -# CAN Cancel * ^X - - - (A) -# CBT Cursor Backward Tab \E [ Pn Z 1 eF cbt -# CCH Cancel Previous Character \E T - - - -# CHA Cursor Horizntal Absolute \E [ Pn G 1 eF hpa (B) -# CHT Cursor Horizontal Tab \E [ Pn I 1 eF tab (C) -# CMD Coding Method Delimiter * \E -# CNL Cursor Next Line \E [ Pn E 1 eF nel (D) -# CPL Cursor Preceding Line \E [ Pn F 1 eF - -# CPR Cursor Position Report \E [ Pn ; Pn R 1, 1 - - (E) -# CSI Control Sequence Intro \E [ - Intro - -# CTC Cursor Tabulation Control \E [ Ps W 0 eF - (F) -# CUB Cursor Backward \E [ Pn D 1 eF cub -# CUD Cursor Down \E [ Pn B 1 eF cud -# CUF Cursor Forward \E [ Pn C 1 eF cuf -# CUP Cursor Position \E [ Pn ; Pn H 1, 1 eF cup (G) -# CUU Cursor Up \E [ Pn A 1 eF cuu -# CVT Cursor Vertical Tab \E [ Pn Y - eF - (H) -# DA Device Attributes \E [ Pn c 0 - - -# DAQ Define Area Qualification \E [ Ps o 0 - - -# DCH Delete Character \E [ Pn P 1 eF dch -# DCS Device Control String \E P - Delim - -# DL Delete Line \E [ Pn M 1 eF dl -# DLE Data Link Escape * ^P - - - -# DMI Disable Manual Input \E \ - Fs - -# DSR Device Status Report \E [ Ps n 0 - - (I) -# DTA Dimension Text Area * \E [ Pn ; Pn SPC T - PC - -# EA Erase in Area \E [ Ps O 0 eF - (J) -# ECH Erase Character \E [ Pn X 1 eF ech -# ED Erase in Display \E [ Ps J 0 eF ed (J) -# EF Erase in Field \E [ Ps N 0 eF - -# EL Erase in Line \E [ Ps K 0 eF el (J) -# EM End of Medium * ^Y - - - -# EMI Enable Manual Input \E b Fs - -# ENQ Enquire ^E - - - -# EOT End Of Transmission ^D - * - -# EPA End of Protected Area \E W - - - (K) -# ESA End of Selected Area \E G - - - -# ESC Escape ^[ - - - -# ETB End Transmission Block ^W - - - -# ETX End of Text ^C - - - -# FF Form Feed ^L - - - -# FNK Function Key * \E [ Pn SPC W - - - -# GCC Graphic Char Combination* \E [ Pn ; Pn SPC B - - - -# FNT Font Selection \E [ Pn ; Pn SPC D 0, 0 FE - -# GSM Graphic Size Modify \E [ Pn ; Pn SPC B 100, 100 FE - (L) -# GSS Graphic Size Selection \E [ Pn SPC C none FE - -# HPA Horz Position Absolute \E [ Pn ` 1 FE - (B) -# HPB Char Position Backward \E [ j 1 FE - -# HPR Horz Position Relative \E [ Pn a 1 FE - (M) -# HT Horizontal Tab * ^I - FE - (N) -# HTJ Horz Tab w/Justification \E I - FE - -# HTS Horizontal Tab Set \E H - FE hts -# HVP Horz & Vertical Position \E [ Pn ; Pn f 1, 1 FE - (G) -# ICH Insert Character \E [ Pn @ 1 eF ich -# IDCS ID Device Control String \E [ SPC O - * - -# IGS ID Graphic Subrepertoire \E [ SPC M - * - -# IL Insert Line \E [ Pn L 1 eF il -# IND Index \E D - FE - -# INT Interrupt \E a - Fs - -# JFY Justify \E [ Ps SPC F 0 FE - -# IS1 Info Separator #1 * ^_ - * - -# IS2 Info Separator #1 * ^^ - * - -# IS3 Info Separator #1 * ^] - * - -# IS4 Info Separator #1 * ^\ - * - -# LF Line Feed ^J - - - -# LS1R Locking Shift Right 1 * \E ~ - - - -# LS2 Locking Shift 2 * \E n - - - -# LS2R Locking Shift Right 2 * \E } - - - -# LS3 Locking Shift 3 * \E o - - - -# LS3R Locking Shift Right 3 * \E | - - - -# MC Media Copy \E [ Ps i 0 - - (S) -# MW Message Waiting \E U - - - -# NAK Negative Acknowledge * ^U - * - -# NBH No Break Here * \E C - - - -# NEL Next Line \E E - FE nel (D) -# NP Next Page \E [ Pn U 1 eF - -# NUL Null * ^@ - - - -# OSC Operating System Command \E ] - Delim - -# PEC Pres. Expand/Contract * \E Pn SPC Z 0 - - -# PFS Page Format Selection * \E Pn SPC J 0 - - -# PLD Partial Line Down \E K - FE - (T) -# PLU Partial Line Up \E L - FE - (U) -# PM Privacy Message \E ^ - Delim - -# PP Preceding Page \E [ Pn V 1 eF - -# PPA Page Position Absolute * \E [ Pn SPC P 1 FE - -# PPB Page Position Backward * \E [ Pn SPC R 1 FE - -# PPR Page Position Forward * \E [ Pn SPC Q 1 FE - -# PTX Parallel Texts * \E [ \ - - - -# PU1 Private Use 1 \E Q - - - -# PU2 Private Use 2 \E R - - - -# QUAD Typographic Quadding \E [ Ps SPC H 0 FE - -# REP Repeat Char or Control \E [ Pn b 1 - rep -# RI Reverse Index \E M - FE - (V) -# RIS Reset to Initial State \E c - Fs - -# RM Reset Mode * \E [ Ps l - - - (W) -# SACS Set Add. Char. Sep. * \E [ Pn SPC / 0 - - -# SAPV Sel. Alt. Present. Var. * \E [ Ps SPC ] 0 - - (X) -# SCI Single-Char Introducer \E Z - - - -# SCO Sel. Char. Orientation * \E [ Pn ; Pn SPC k - - - -# SCS Set Char. Spacing * \E [ Pn SPC g - - - -# SD Scroll Down \E [ Pn T 1 eF rin -# SDS Start Directed String * \E [ Pn ] 1 - - -# SEE Select Editing Extent \E [ Ps Q 0 - - (Y) -# SEF Sheet Eject & Feed * \E [ Ps ; Ps SPC Y 0,0 - - -# SGR Select Graphic Rendition \E [ Ps m 0 FE sgr (O) -# SHS Select Char. Spacing * \E [ Ps SPC K 0 - - -# SI Shift In ^O - - - (P) -# SIMD Sel. Imp. Move Direct. * \E [ Ps ^ - - - -# SL Scroll Left \E [ Pn SPC @ 1 eF - -# SLH Set Line Home * \E [ Pn SPC U - - - -# SLL Set Line Limit * \E [ Pn SPC V - - - -# SLS Set Line Spacing * \E [ Pn SPC h - - - -# SM Select Mode \E [ Ps h none - - (W) -# SO Shift Out ^N - - - (Q) -# SOH Start Of Heading * ^A - - - -# SOS Start of String * \E X - - - -# SPA Start of Protected Area \E V - - - (Z) -# SPD Select Pres. Direction * \E [ Ps ; Ps SPC S 0,0 - - -# SPH Set Page Home * \E [ Ps SPC G - - - -# SPI Spacing Increment \E [ Pn ; Pn SPC G none FE - -# SPL Set Page Limit * \E [ Ps SPC j - - - -# SPQR Set Pr. Qual. & Rapid. * \E [ Ps SPC X 0 - - -# SR Scroll Right \E [ Pn SPC A 1 eF - -# SRCS Set Reduced Char. Sep. * \E [ Pn SPC f 0 - - -# SRS Start Reversed String * \E [ Ps [ 0 - - -# SSA Start of Selected Area \E F - - - -# SSU Select Size Unit * \E [ Pn SPC I 0 - - -# SSW Set Space Width * \E [ Pn SPC [ none - - -# SS2 Single Shift 2 (G2 set) \E N - Intro - -# SS3 Single Shift 3 (G3 set) \E O - Intro - -# ST String Terminator \E \ - Delim - -# STAB Selective Tabulation * \E [ Pn SPC ^ - - - -# STS Set Transmit State \E S - - - -# STX Start pf Text * ^B - - - -# SU Scroll Up \E [ Pn S 1 eF indn -# SUB Substitute * ^Z - - - -# SVS Select Line Spacing * \E [ Pn SPC \ 1 - - -# SYN Synchronous Idle * ^F - - - -# TAC Tabul. Aligned Centered * \E [ Pn SPC b - - - -# TALE Tabul. Al. Leading Edge * \E [ Pn SPC a - - - -# TATE Tabul. Al. Trailing Edge* \E [ Pn SPC ` - - - -# TBC Tab Clear \E [ Ps g 0 FE tbc -# TCC Tabul. Centered on Char * \E [ Pn SPC c - - - -# TSR Tabulation Stop Remove * \E [ Pn SPC d - FE - -# TSS Thin Space Specification \E [ Pn SC E none FE - -# VPA Vert. Position Absolute \E [ Pn d 1 FE vpa -# VPB Line Position Backward * \E [ Pn k 1 FE - -# VPR Vert. Position Relative \E [ Pn e 1 FE - (R) -# VT Vertical Tabulation * ^K - FE - -# VTS Vertical Tabulation Set \E J - FE - -# -# --------------------------------------------------------------------------- -# -# Notes: -# -# Some control characters are listed in the ECMA-48 standard without -# being assigned functions relevant to terminal control there (they -# referred to other standards such as ISO 1745 or ECMA-35). They are listed -# here anyway for completeness. -# -# (A) ECMA-48 calls this "CancelCharacter" but retains the CCH abbreviation. -# -# (B) There seems to be some confusion abroad between CHA and HPA. Most -# `ANSI' terminals accept the CHA sequence, not the HPA. but terminfo calls -# the capability (hpa). ECMA-48 calls this "Cursor Character Absolute" but -# preserved the CHA abbreviation. -# -# (C) CHT corresponds to terminfo (tab). Usually it has the value ^I. -# Occasionally (as on, for example, certain HP terminals) this has the HTJ -# value. ECMA-48 calls this "Cursor Forward Tabulation" but preserved the -# CHT abbreviation. -# -# (D) terminfo (nel) is usually \r\n rather than ANSI \EE. -# -# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR -# abbreviation. -# -# (F) CTC parameter values: 0 = set char tab, 1 = set line tab, 2 = clear -# char tab, 3 = clear line tab, 4 = clear all char tabs on current line, -# 5 = clear all char tabs, 6 = clear all line tabs. -# -# (G) CUP and HVP are identical in effect. Some ANSI.SYS versions accept -# HVP, but always allow CUP as an alternate. ECMA-48 calls HVP "Character -# Position Absolute" but retains the HVP abbreviation. -# -# (H) ECMA calls this "Cursor Line Tabulation" but preserves the CVT -# abbreviation. -# -# (I) DSR parameter values: 0 = ready, 1 = busy, 2 = busy, will send DSR -# later, 3 = malfunction, 4 = malfunction, will send DSR later, 5 = request -# DSR, 6 = request CPR response. -# -# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters: 0 = clear to end, -# 1 = clear from beginning, 2 = clear. -# -# (K) ECMA calls this "End of Guarded Area" but preserves the EPA abbreviation. -# -# (L) The GSM parameters are vertical and horizontal parameters to scale by. -# -# (M) Some ANSI.SYS versions accept HPR, but more commonly `ANSI' terminals -# use CUF for this function and ignore HPR. ECMA-48 calls this "Character -# Position Relative" but retains the HPR abbreviation. -# -# (N) ECMA-48 calls this "Character Tabulation" but retains the HT -# abbreviation. -# -# (O) SGR parameter values: 0 = default mode (attributes off), 1 = bold, -# 2 = dim, 3 = italicized, 4 = underlined, 5 = slow blink, 6 = fast blink, -# 7 = reverse video, 8 = invisible, 9 = crossed-out (marked for deletion), -# 10 = primary font, 10 + n (n in 1..9) = nth alternative font, 20 = Fraktur, -# 21 = double underline, 22 = turn off 2, 23 = turn off 3, 24 = turn off 4, -# 25 = turn off 5, 26 = proportional spacing, 27 = turn off 7, 28 = turn off -# 8, 29 = turn off 9, 30 = black fg, 31 = red fg, 32 = green fg, 33 = yellow -# fg, 34 = blue fg, 35 = magenta fg, 36 = cyan fg, 37 = white fg, 38 = set -# fg color as in CCIT T.416, 39 = set default fg color, 40 = black bg -# 41 = red bg, 42 = green bg, 43 = yellow bg, 44 = blue bg, 45 = magenta bg, -# 46 = cyan bg, 47 = white bg, 48 = set bg color as in CCIT T.416, 39 = set -# default bg color, 50 = turn off 26, 51 = framed, 52 = encircled, 53 = -# overlined, 54 = turn off 51 & 52, 55 = not overlined, 56-59 = reserved, -# 61-65 = variable highlights for ideograms. -# -# (P) SI is also called LSO, Locking Shift Zero. -# -# (Q) SI is also called LS1, Locking Shift One. -# -# (R) Some ANSI.SYS versions accept VPR, but more commonly `ANSI' terminals -# use CUD for this function and ignore VPR. ECMA calls it `Line Position -# Absolute' but retains the VPA abbreviation. -# -# (S) MC parameters: 0 = start xfer to primary aux device, 1 = start xfer from -# primary aux device, 2 = start xfer to secondary aux device, 3 = start xfer -# from secondary aux device, 4 = stop relay to primary aux device, 5 = -# start relay to primary aux device, 6 = stop relay to secondary aux device, -# 7 = start relay to secondary aux device. -# -# (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD -# abbreviation. -# -# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLU -# abbreviation. -# -# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation. -# -# (W) RM/SM modes are as follows: 1 = Guarded Area Transfer Mode (GATM), -# 2 = Keyboard Action Mode (KAM), 3 = Control Representation Mode (CRM), -# 4 = Insertion Replacement Mode, 5 = Status Report Transfer Mode (SRTM), -# 6 = Erasure Mode (ERM), 7 = Line Editing Mode (LEM), 8 = Bi-Directional -# Support Mode (BDSM), 9 = Device Component Select Mode (DCSM), -# 10 = Character Editing Mode (HEM), 11 = Positioning Unit Mode (PUM), -# 12 = Send/Receive Mode, 13 = Format Effector Action Mode (FEAM), -# 14 = Format Effector Transfer Mode (FETM), 15 = Multiple Area Transfer -# Mode (MATM), 16 = Transfer Termination Mode, 17 = Selected Area Transfer -# Mode, 18 = Tabulation Stop Mode, 19 = Editing Boundary Mode, 20 = Line Feed -# New Line Mode (LF/NL), Graphic Rendition Combination Mode (GRCM), 22 = -# Zero Default Mode (ZDM). The EBM and LF/NL modes have actually been removed -# from ECMA-48's 5th edition but are listed here for reference. -# -# (X) Select Alternate Presentation Variants is used only for non-Latin -# alphabets. -# -# (Y) "Select Editing Extent" (SEE) was ANSI "Select Edit Extent Mode" (SEM). -# -# (Z) ECMA-48 calls this "Start of Guarded Area" but retains the SPA -# abbreviation. -# -# --------------------------------------------------------------------------- -# -# Abbreviations: -# -# Intro an Introducer of some kind of defined sequence; the normal 7-bit -# X3.64 Control Sequence Introducer is the two characters "Escape [" -# -# Delim a Delimiter -# -# x/y identifies a character by position in the ASCII table (column/row) -# -# eF editor function (see explanation) -# -# FE format effector (see explanation) -# -# F is a Final character in -# an Escape sequence (F from 3/0 to 7/14 in the ASCII table) -# a control sequence (F from 4/0 to 7/14) -# -# Gs is a graphic character appearing in strings (Gs ranges from -# 2/0 to 7/14) in the ASCII table -# -# Ce is a control represented as a single bit combination in the C1 set -# of controls in an 8-bit character set -# -# C0 the familiar set of 7-bit ASCII control characters -# -# C1 roughly, the set of control chars available only in 8-bit systems. -# This is too complicated to explain fully here, so read Jim Fleming's -# article in the February 1983 BYTE, especially pages 214 through 224. -# -# Fe is a Final character of a 2-character Escape sequence that has an -# equivalent representation in an 8-bit environment as a Ce-type -# (Fe ranges from 4/0 to 5/15) -# -# Fs is a Final character of a 2-character Escape sequence that is -# standardized internationally with identical representation in 7-bit -# and 8-bit environments and is independent of the currently -# designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14) -# -# I is an Intermediate character from 2/0 to 2/15 (inclusive) in the -# ASCII table -# -# P is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII -# table -# -# Pn is a numeric parameter in a control sequence, a string of zero or -# more characters ranging from 3/0 to 3/9 in the ASCII table -# -# Ps is a variable number of selective parameters in a control sequence -# with each selective parameter separated from the other by the code -# 3/11 (which usually represents a semicolon); Ps ranges from -# 3/0 to 3/9 and includes 3/11 -# -# * Not relevant to terminal control, listed for completeness only. -# -# Format Effectors versus Editor Functions -# -# A format effector specifies how following output is to be displayed. -# An editor function allows you to modify the display. Informally -# format effectors may be destructive; format effectors should not be. -# -# For instance, a format effector that moves the "active position" (the -# cursor or equivalent) one space to the left would be useful when you want to -# create an overstrike, a compound character made of two standard characters -# overlaid. Control-H, the Backspace character, is actually supposed to be a -# format effector, so you can do this. But many systems use it in a -# nonstandard fashion, as an editor function, deleting the character to the -# left of the cursor and moving the cursor left. When Control-H is assumed to -# be an editor function, you cannot predict whether its use will create an -# overstrike unless you also know whether the output device is in an "insert -# mode" or an "overwrite mode". When Control-H is used as a format effector, -# its effect can always be predicted. The familiar characters carriage -# return, linefeed, formfeed, etc., are defined as format effectors. -# -# NOTES ON THE DEC VT100 IMPLEMENTATION -# -# Control sequences implemented in the VT100 are as follows: -# -# CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND, -# LNM, NEL, RI, RIS, RM, SGR, SM, TBC -# -# plus several private DEC commands. -# -# Erasing parts of the display (EL and ED) in the VT100 is performed thus: -# -# Erase from cursor to end of line Esc [ 0 K or Esc [ K -# Erase from beginning of line to cursor Esc [ 1 K -# Erase line containing cursor Esc [ 2 K -# Erase from cursor to end of screen Esc [ 0 J or Esc [ J -# Erase from beginning of screen to cursor Esc [ 1 J -# Erase entire screen Esc [ 2 J -# -# Some brain-damaged terminal/emulators respond to Esc [ J as if it were -# Esc [ 2 J, but this is wrong; the default is 0. -# -# The VT100 responds to receiving the DA (Device Attributes) control -# -# Esc [ c (or Esc [ 0 c) -# -# by transmitting the sequence -# -# Esc [ ? l ; Ps c -# -# where Ps is a character that describes installed options. -# -# The VT100's cursor location can be read with the DSR (Device Status -# Report) control -# -# Esc [ 6 n -# -# The VT100 reports by transmitting the CPR sequence -# -# Esc [ Pl ; Pc R -# -# where Pl is the line number and Pc is the column number (in decimal). -# -# The specification for the DEC VT100 is document EK-VT100-UG-003. - -#### ANSI.SYS -# -# Here is a description of the color and attribute controls supported in the -# the ANSI.SYS driver under MS-DOS. Most console drivers and ANSI -# terminal emulators for Intel boxes obey these. They are a proper subset -# of the ECMA-48 escapes. -# -# 0 all attributes off -# 1 foreground bright -# 4 underscore on -# 5 blink on/background bright (not reliable with brown) -# 7 reverse-video -# 8 set blank (non-display) -# 10 set primary font -# 11 set first alternate font (on PCs, display ROM characters 1-31) -# 12 set second alternate font (on PCs, display IBM high-half chars) -# -# Color attribute sets -# 3n set foreground color / 0=black, 1=red, 2=green, 3=brown, -# 4n set background color \ 4=blue, 5=magenta, 6=cyan, 7=white -# Bright black becomes gray. Bright brown becomes yellow, -# These coincide with the prescriptions of the ISO 6429/ECMA-48 standard. -# -# * If the 5 attribute is on and you set a background color (40-47) it is -# supposed to enable bright background. -# -# * Many VGA cards (such as the Paradise and compatibles) do the wrong thing -# when you try to set a "bright brown" (yellow) background with attribute -# 5 (you get a blinking yellow foreground instead). A few displays -# (including the System V console) support an attribute 6 that undoes this -# braindamage (this is required by iBCS2). -# -# * Some older versions of ANSI.SYS have a bug that causes thems to require -# ESC [ Pn k as EL rather than the ANSI ESC [ Pn K. (This is not ECMA-48 -# compatible.) - -#### Intel Binary Compatibility Standard -# -# For comparison, here are the capabilities implied by the Intel Binary -# Compatibility Standard for UNIX systems (Intel order number 468366-001). -# These recommendations are optional. IBCS2 allows the leading escape to -# be either the 7-bit \E[ or 8-bit \0233 introducer, in accordance with -# the ANSI X.364/ISO 6429/ECMA-48 standard. Here are the iBCS2 capabilities -# (as described in figure 9-3 of the standard). Those expressed in the ibcs2 -# terminfo entry are followed with the corresponding capability in parens: -# -# CSI k disable (n=0) or enable (n=1) keyclick -# CSI 2h lock keyboard -# CSI 2i send screen as input -# CSI 2l unlock keyboard -# CSI 6m enable background color intensity -# CSI <0-2>c reserved -# CSI <0-59>m select graphic rendition -# CSI ;H (cup) cursor to line n and column m -# CSI ;f cursor to line n and column m -# CSI @ (ich) insert characters -# CSI A (cuu) cursor up n lines -# CSI B (cud) cursor down n lines -# CSI C (cuu) cursor right n characters -# CSI D (cud) cursor left n characters -# CSI E cursor down n lines and in first column -# CSI F cursor up n lines and in first column -# CSI G (hpa) position cursor at column n-1 -# CSI J (ed) erase in display -# CSI K (el) erase in line -# CSI L (il) insert line(s) -# CSI P (dch) delete characters -# CSI S (indn) scroll up n lines -# CSI T (rin) scroll down n lines -# CSI X (ech) erase characters -# CSI Z (cbt) back up n tab stops -# CSI ` cursor to column n on line -# CSI a (cuu) cursor right n characters -# CSI d (vpa) cursor to line n -# CSI e cursor down n lines and in first column -# CSI g (cbt) clear all tabs -# CSI z make virtual terminal n active -# CSI ?7h (smam) turn automargin on -# CSI ?7l (rmam) turn automargin off -# CSI s save cursor position -# CSI u restore cursor position to saved value -# CSI =A set overscan color -# CSI =F set normal foreground color -# CSI =G set normal background color -# CSI =H set reverse foreground color -# CSI =I set reverse foreground color -# CSI =J set graphic foreground color -# CSI =K set graphic foreground color -# CSI =g (dispc) display n from alternate graphics character set -# CSI =

;B set bell parameters -# CSI =;C set cursor parameters -# CSI =D enable/disable intensity of background color -# CSI =E set/clear blink vs. bold background -# CSI 7 (sc) (sc) save cursor position -# CSI 8 (rc) (rc) restore cursor position to saved value -# CSI H (hts) (hts) set tab stop -# CSI Q define function key string -# (string must begin and end with delimiter char) -# CSI c (clear) clear screen -# -# The lack of any specification for attributes in SGR (among other things) -# makes this a wretchedly weak standard. The table above is literally -# everything iBSC2 has to say about terminal escape sequences; there is -# no further discussion of their meaning or how to set the parameters -# in these sequences at all. -# - -######## NONSTANDARD CAPABILITY TRANSLATIONS USED IN THIS FILE -# -# The historical termcap file entries were written primarily in 4.4BSD termcap. -# The 4.4BSD termcap set was substantially larger than the original 4.1BSD set, -# with the extension names chosen for compatibility with the termcap names -# assigned in System V terminfo. There are some variant extension sets out -# there. We try to describe them here. -# -# XENIX extensions: -# -# The XENIX extensions include a set of function-key capabilities as follows: -# -# code XENIX variable name terminfo name name clashes? -# ---- ------------------- ------------- ----------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window create_window -# EN key_end kend -# HM key_home khome -# HP ?? -# LD key_delete_line kdl1 -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PD key_page_down knp -# PL ?? -# PN start_print mc5 -# PR ?? -# PS stop_print mc4 -# PU key_page_up kpp pulse -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# RT key_return kent -# UP key_up_arrow kcuu1 parm_up_cursor -# WL key_word_left -# WR key_word_right -# -# The XENIX extensions also include the following character-set and highlight -# capabilities: -# -# XENIX terminfo function -# ----- -------- ------------------------------ -# GS smacs start alternate character set -# GE rmacs end alternate character set -# GG :as:/:ae: glitch (analogous to :sg:/:ug:) -# bo blink begin blink (not used in /etc/termcap) -# be end blink (not used in /etc/termcap) -# bb blink glitch (not used in /etc/termcap) -# it dim begin dim (not used in /etc/termcap) -# ie end dim (not used in /etc/termcap) -# ig dim glitch (not used in /etc/termcap) -# -# Finally, XENIX also used the following forms-drawing capabilities: -# -# single double type ASCII approximation -# ------ ------ ------------- ------------------- -# GV Gv vertical line | -# GH Gv horizontal line - _ -# G1 G5 top right corner _ | -# G2 G6 top left corner | -# G3 G7 bottom left corner |_ -# G4 G8 bottom right corner _| -# GD Gd down-tick character T -# GL Gl left-tick character -| -# GR Gr right-tick character |- -# GC Gc middle intersection -|- -# GU Gu up-tick character _|_ -# -# These were invented to take advantage of the IBM PC ROM character set. One -# can compose an acsc string from the single-width characters as follows -# "j{G4}k{G1}l{G2}m{G3}q{GH}x{GV}t{GR}u{GL}v{GU}w{GD}n{GC}" -# When translating a termcap file, ncurses tic will do this automatically. -# The double forms characters don't fit the SVr4 terminfo model. -# -# AT&T Extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish that BO=:mr: (start reverse video), DS=:mh: -# (start dim), XS=:mk: (secure/invisible mode), EE=:me: (end highlights), -# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make -# cursor invisible), and CV=:ve: (make cursor normal). -# -# HP Extensions -# -# The HP library (as of mid-1995, their term.h file version 70.1) appears to -# have the System V capabilities up to SVr1 level. After that, it supports -# two nonstandard caps meml and memu corresponding to the old termcap :ml:, -# :mu: capabilities. After that, it supports caps plab_norm, label_on, -# label_off, and key_f11..key_f63 capabilities like SVr4's. This makes the -# HP binary format incompatible with SVr4's. -# -# IBM Extensions -# -# There is a set of nonstandard terminfos used by IBM's AIX operating system. -# The AIX terminfo library diverged from SVr1 terminfo, and replaces all -# capabilities following prtr_non with the following special capabilties: -# box[12], batt[12], colb[0123456789], colf[0123456789], f[01234567], kbtab, -# kdo, kcmd, kcpn, kend, khlp, knl, knpn, kppn, kppn, kquit, ksel, kscl, kscr, -# ktab, kmpf[123456789], apstr, ksf1..ksf10, kf11...kf63, kact, topl, btml, -# rvert, lvert. Some of these are identical to XPG4/SVr4 equivalents: -# kcmd, kend, khlp, and kf11...kf63. Two others (kbtab and ksel) can be -# renamed (to kcbt and kslt). The places in the box[12] capabilities -# correspond to acsc chars, here is the mapping: -# -# box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE -# box1[2] = ACS_URCORNER -# box1[3] = ACS_VLINE -# box1[4] = ACS_LRCORNER -# box1[5] = ACS_LLCORNER -# box1[6] = ACS_TTEE -# box1[7] = ACS_RTEE -# box1[8] = ACS_BTEE -# box1[9] = ACS_LTEE -# box1[10] = ACS_PLUS -# -# The box2 characters are the double-line versions of these forms graphics. -# The AIX binary terminfo format is incompatible with SVr4's. -# -# Iris console extensions: -# -# HS is half-intensity start; HE is half-intensity end -# CT is color terminal type (for Curses & rogue) -# CP is color change escape sequence -# CZ are color names (for Curses & rogue) -# -# The ncurses tic utility recognizes HS as an alias for mh . -# -# TC Extensions: -# -# There is a set of extended termcaps associated with something -# called the "Terminal Control" or TC package created by MainStream Systems, -# Winfield Kansas. This one also uses GS/GE for as/ae, and also uses -# CF for civis and CO for cvvis. Finally, they define a boolean :ct: -# that flags color terminals. -# -######## CHANGE HISTORY -# -# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94. -# Releases 9 and up are maintained by Eric S. Raymond as part of the ncurses -# project. -# -# This file contains all the capability information present in John Kunze's -# last version of the termcap master file, except as noted in the change -# comments at end of file. Some information about very ancient obsolete -# capabilities has been moved to comments. Some all-numeric names of older -# terminals have been retired. -# -# I changed :MT: to :km: (the 4.4BSD name) everywhere. I commented out some -# capabilities (EP, dF, dT, dV, kn, ma, ml, mu, xr, xx) that are no longer -# used by BSD curses. -# -# The 9.1.0 version of this file was translated from my lightly-edited copy of -# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for -# the purpose. Unless the ncurses tic implementation and the Lisp code were -# making perfectly synchronized mistakes which I then failed to catch by -# eyeball, the translation was correct and perfectly information-preserving. -# -# Major version number bumps correspond to major version changes in ncurses. -# -# Here is a log of the changes since then: -# -# 9.1.0 (Wed Feb 1 04:50:32 EST 1995): -# * First terminfo master translated from 8.3. -# 9.2.0 (Wed Feb 1 12:21:45 EST 1995): -# * Replaced Wyse entries with updated entries supplied by vendor. -# -# 9.3.0 (Mon Feb 6 19:14:40 EST 1995): -# * Added contact & status info from G. Clark Brown . -# 9.3.1 (Tue Feb 7 12:00:24 EST 1995): -# * Better XENIX keycap translation. Describe TC termcaps. -# * Contact and history info supplied by Qume. -# 9.3.2 (Sat Feb 11 23:40:02 EST 1995): -# * Raided the Shuford FTP site for recent termcaps/terminfos. -# * Added information on X3.64 and VT100 standard escape sequences. -# 9.3.3 (Mon Feb 13 12:26:15 EST 1995): -# * Added a correct X11R6 xterm entry. -# * Fixed terminfo translations of padding. -# 9.3.4 (Wed Feb 22 19:27:34 EST 1995): -# * Added correct acsc/smacs/rmacs strings for vt100 and xterm. -# * Added u6/u7/u8/u9 capabilities. -# * Added PCVT entry. -# 9.3.5 (Thu Feb 23 09:37:12 EST 1995): -# * Emacs uses :so:, not :mr:, for its mode line. Fix linux entry -# to use reverse-video standout so Emacs will look right. -# * Added el1 capability to ansi. -# * Added smacs/rmacs to ansi.sys. -# -# 9.4.0 (Sat Feb 25 16:43:25 EST 1995): -# * New mt70 entry. -# * Added COPYRIGHTS AND OTHER DELUSIONS. -# * Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics -# smartvid & smarterm, ampex 175 & 219 & 232, -# env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20, -# ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2, -# screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan, -# adm36, mime314, ergo4000, ca22851. Replaced att7300, esprit, dd5500. -# * Replaced the Perkin-Elmer entries with vendor's official ones. -# * Restored the old minimal-ansi entry, luna needs it. -# * Fixed some incorrect ip and proportional-padding translations. -# 9.4.1 (Mon Feb 27 14:18:33 EST 1995): -# * Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly. -# * Make the xterm entry 65 lines again; create xterm25 and xterm24 -# to force a particular height. -# * Added beehive4 and reorganized other Harris entries. -# 9.4.2 (Thu Mar 9 01:45:44 EST 1995): -# * Merged in DEC's official entries for its terminals. The only old -# entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo). -# * Replaced the translated BBN Bitgraph entries with purpose-built -# ones from AT&T's SVr3. -# * Replaced the AT&T entries with AT&T's official terminfos. -# * Added teleray 16, vc415, cops10. -# * Merged in many individual capabilities from SCO terminfo files. -# 9.4.3 (Mon Mar 13 02:37:53 EST 1995): -# * Typo fixes. -# * Change linux entry so A_PROTECT enables IBM-PC ROM characters. -# 9.4.4 (Mon Mar 27 12:32:35 EST 1995): -# * Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803, -# pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21, -# simterm, citoh and variants. -# * Replaced sol entry with sol1 and sol2. -# * Replaced Qume QVT and Freedom-series entries with purpose-built -# terminfo entries. -# * Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek -# and dg200 entries using caps from from SCO. -# * Added the usual set of function-key mappings to ANSI entry. -# * Corrected xterm's function-key capabilities. -# 9.4.5 (Tue Mar 28 14:27:49 EST 1995): -# * Fix in xterm entry, cub and cud are not reliable under X11R6. -# 9.4.6 (Thu Mar 30 14:52:15 EST 1995): -# * Fix in xterm entry, get the arrow keys right. -# * Change some \0 escapes to \200. -# 9.4.7 (Tue Apr 4 11:27:11 EDT 1995) -# * Added apple (Videx card), adm1a, oadm31. -# * Fixed malformed ampex csr. -# * Fixed act4, cyb110; they had old-style prefix padding left in. -# * Changed mandatory to advisory padding in many entries. -# * Replaced HP entries up to hpsub with purpose-built ones. -# * Blank rmir/smir/rmdc/smdc capabilities removed. -# * Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924. -# 9.4.8 (Fri Apr 7 09:36:34 EDT 199): -# * Replaced the Ann Arbor entries with SCO's, the init strings are -# more efficient (but the entries otherwise identical). -# * Added dg211 from Shuford archive. -# * Added synertek, apple-soroc, ibmpc, pc-venix, pc-coherent, xtalk, -# adm42-nl, pc52, gs6300, xerox820, uts30. -# * Pull SCO's padding into vi200 entry. -# * Improved capabilities for tvi4107 and other Televideo and Viewpoint -# entries merged in from SCO's descriptions. -# * Fixed old-style prefix padding on zen50, h1500. -# * Moved old superbee entry to superbee-xsb, pulled in new superbee -# entry from SCO's description. -# * Reorganized the special entries. -# * Added lm#0 to cbunix and virtual entries. -# -# 9.5.0 (Mon Apr 10 11:30:00 EDT 1995): -# * Restored cdc456tst. -# * Fixed sb1 entry, SCO erroneously left out the xsb glitch. -# * Added megatek, beacon, microkit. -# * Freeze for ncurses-1.9 release. -# 9.5.1 (Fri Apr 21 12:46:42 EDT 1995): -# * Added historical data for TAB. -# * Comment fixes from David MacKenzie. -# * Added the new BSDI pc3 entry. -# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995) -# * A change in the tic -C logic now ensures that all entries in -# the termcap translation will fit in < 1024 bytes. -# * Added `bobcat' and `gator' HP consoles and the Nu machine entries -# from GNU termcap file. This merges in all their local information. -# 9.5.3 (Tue Apr 25 22:28:13 EDT 1995) -# * Changed tic -C logic to dump all capabilities used by GNU termcap. -# * Added warnings about entries with long translations (restoring -# all the GNU termcaps pushes a few over the edge). -# 9.5.4 (Wed Apr 26 15:35:09 EDT 1995) -# * Yet another tic change, and a couple of entry tweaks, to reduce the -# number of long (> 1024) termcap translations back to 0. -# -# 9.6.0 (Mon May 1 10:35:54 EDT 1995) -# * Added kf13-kf20 to Linux entry. -# * Regularize Prime terminal names. -# * Historical data on Synertek. -# * Freeze for ncurses-1.9.1. -# 9.6.1 (Sat May 6 02:00:52 EDT 1995): -# * Added true xterm-color entry, renamed djm's pseudo-color entry. -# * Eliminate whitespace in short name fields, this tanks some scripts. -# * Name field changes to shorten some long entries. -# * Termcap translation now automatically generates empty rmir/smir -# when ich1/ich is present (copes with an ancient vi bug). -# * Added `screen' entries from FSF's screen-3.6.2. -# * Added linux-nic and xterm-nic entries. -# 9.6.2 (Sat May 6 17:00:55 EDT 1995): -# * Change linux entry to use smacs=\E[11m and have an explicit acsc, -# eliminating some special-case code in ncurses. -# -# 9.7.0 (Tue May 9 18:03:12 EDT 1995): -# * Added vt320-k3, rsvidtx from the Emacs termcap.dat file. I think -# that captures everything unique from it. -# * Added reorder script generator. -# * Freeze for ncurses 1.9.2 release. -# 9.7.1 (Thu Jun 29 09:35:22 EDT 1995): -# * Added Sean Farley's kspd, flash, rs1 capabilities for linux. -# * Added Olaf Siebert's corrections for adm12. -# * ansi-pc-color now includes the colors and pairs caps, so that -# entries which use it will inherit them automatically. -# * The linux entry can now recognize the center (keypad 5) key. -# * Removed some junk that found its way into Linux acsc. -# -# 9.8.0 (Fri Jul 7 04:46:57 EDT 1995): -# * Add 50% cut mark as a desperate hack to reduce tic's core usage. -# * xterm doesn't try to use application keypad mode any more. -# * Freeze for ncurses-1.9.3 release. -# 9.8.1 (Thu Jul 19 17:02:12 EDT 1995): -# * Added corrected sun entry from vendor. -# * Added csr capability to linux entry. -# * Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG. -# * Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators. -# * Some commented-out caps in long entries come back in, my code -# for computing string-table lengths had a bug in it. -# * pcansi series modified to fit comm-program reality better. -# 9.8.2 (Sat Sep 9 23:35:00 EDT 1995): -# * BSD/OS actually ships the ibmpc3 bold entry as its console. -# * Correct some bad aliases in the pcansi series -# * Added entry for QNX console. -# * Clean up duplicate long names for use with 4.4 library. -# * Change vt100 standout to be normal reverse vide, not bright reverse; -# this makes the Emacs status line look better. -# 9.8.3 (Sun Sep 10 13:07:34 EDT 1995): -# * Added Adam Thompson's VT320 entries, also his dtx-sas and z340. -# * Minor surgery, mostly on name strings, to shorten termcap version. -# -# 9.9.0 (Sat Sep 16 23:03:48 EDT 1995): -# * Added dec-vt100 for use with the EWAN emulator. -# * Added kmous to xterm for use with xterm's mouse-tracking facility. -# * Freeze for 1.9.5 alpha release. -# 9.9.1 (Wed Sep 20 13:46:09 EDT 1995): -# * Changed xterm lines to 24, the X11R6 default. -# 9.9.2 (Sat Sep 23 21:29:21 EDT 1995): -# * Added 7 newly discovered, undocumented acsc characters to linux -# entry (the pryz{|} characters). -# * ncurses no longer steals A_PROTECT. Simplify linux sgr accordingly. -# * Correct two typos in the xterm entries introduced in 9.9.1. -# * I finally figured out how to translate ko capabilities. Done. -# * Added tvi921 entries from Tim Theisen. -# * Cleanup: dgd211 -> dg211, adm42-nl -> adm42-nsl. -# * Removed mystery tec entry, it was neither interesting nor useful. -# * shortened altos3, qvt203, tvi910+, tvi92D, tvi921-g, tvi955, vi200-f, -# vi300-ss, att505-24, contel301, dm3045, f200vi, pe7000c, vc303a, -# trs200, wind26, wind40, wind50, cdc456tst, dku7003, f110, dg211, -# by making them relative to use capabilities -# * Added cuf1=^L to tvi925 from deleted variant tvi925a. -# * fixed cup in adm22 entry and parametrized strings in vt320-k3. -# * added it#8 to entries that used to have :pt: -- tvi912, vi200, -# ampex80, -# * Translate all home=\E[;H capabilities to home=\E[H, they're -# equivalent. -# * Translate \E[0m -> \E[m in [rs]mso, [rs]mul, and init strings of -# vt100 and ANSI-like terminals. -# 9.9.3 (Tue Sep 26 20:11:15 EDT 1995): -# * Added it#8 and ht=\t to *all* entries with :pt:; the ncurses tic -# does this now, too. -# * fviewpoint is gone, it duplicated screwpoint. -# * Added hp2627, graphos, graphos-30, hpex, ibmega, ibm8514, ibm8514-c, -# ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3, -# versaterm, vi500, vsc, vt131, vt340, vt400 entries from UW. -# The UW vi50 replaces the old one, which becomes vi50adm, -# * No more embedded commas in name fields. -# -# 9.10.0 (Wed Oct 4 15:39:37 EDT 1995): -# * XENIX forms characters in fos, trs16, scoansi become acsc strings, -# * Introduced klone+* entries for describing Intel-console behavior. -# * Linux kbs is default-mapped to delete for some brain-dead reason. -# * -nsl -> -ns. The -pp syntax is obsolete. -# * Eliminate [A-Z]* primaries in accordance with SVr4 terminfo docs. -# * Make xterm entry do application-keypad mode again. I got complaints -# that it was messing up someone's 3270 emulator. -# * Added some longname fields in order to avoid warning messages from -# older tic implementations. -# * According to ctlseqs.ms, xterm has a full vt100 graphics set. Use -# it! (This gives us pi, greater than, less than, and a few more.) -# * Freeze for ncurses-1.9.6 release. -# 9.10.1 (Sat Oct 21 22:18:09 EDT 1995): -# * Add xon to a number of console entries, they're memory-mapped and -# don't need padding. -# * Correct the use dependencies in the ansi series. -# * Hand-translate more XENIX capabilities. -# * Added hpterm entry for HP's X terminal emulator. -# * Added aixterm entries. -# * Shortened four names so everything fits in 14 chars. -# -# 9.11.0 (Thu Nov 2 17:29:35 EST 1995): -# * Added ibcs2 entry and info on iBCS2 standard. -# * Corrected hpa/vpa in linux entry. They still fail the worm test. -# * We can handle the HP meml/memu capability now. -# * Added smacs to klone entries, just as documentation. -# * Carrected ansi.sys and cit-500 entries. -# * Added z39, vt320-k311, v220c, and avatar entries. -# * Make pcansi use the ansi.sys invis capability. -# * Added DIP switch descriptions for vt100, adm31, tvi910, tvi920c, -# tvi925, tvi950, dt80, ncr7900i, h19. -# * X3.64 has been withdrawn, change some references. -# * Removed function keys from ansi-m entry. -# * Corrected ansi.sys entry. -# * Freeze for ncurses-1.9.7 release. -# 9.11.1 (Tue Nov 6 18:18:38 EST 1995): -# * Added rmam/smam capabilities to many entries based on init strings. -# * Added correct hpa/vpa to linux. -# * Reduced several entries relative to vt52. -# 9.11.2 (Tue Nov 7 00:21:06 EST 1995): -# * Exiled some utterly unidentifiable custom and homebrew types to the -# UFO file; also, obsolete small-screen hardware; also, entries which -# look flat-out incorrect, garbled, or redundant. These include the -# following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec, -# tec400, tec500, ubell, wind, wind16, wind40, wind50, plasma, agile, -# apple, bch, daleblit, nucterm, ttywilliams, nuterminal, nu24, bnu, -# fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55, -# yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2, -# vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200, -# trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40, -# att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w, -# tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na, -# c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na, -# regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb, -# vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam, -# vt510pc-nam, vt520nam, vt525nam, xterm25, xterm50, xterm65, xterms. -# * Corrected pcvt25h as suggested by Brian C. Grayson -# . -# 9.11.3 (Thu Nov 9 12:14:40 EST 1995): -# * Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H. -# * Added kent=\EOM to xterm entry. -# -# 9.11.4 (Fri Nov 10 08:31:35 EST 1995): -# * Corrected gigi entry. -# * Restored cuf/cud1 to xterm, their apparent bugginess was due to -# bad hpa/vpa capabilities. -# * Corrected flash strings to have a uniform delay of .2 sec. No -# more speed-dependent NUL-padding! -# * terminfo capabilities in comments bracketed with <>. -# 9.11.5 (Fri Nov 10 15:35:02 EST 1995): -# * Replaced pcvt with the 3.31 pcvt entries. -# * Freeze for 1.9.7a. -# 9.11.6 (Mon Nov 13 10:20:24 EST 1995): -# * Added emu entry from the X11R6 contrib tape sources. -# -# 9.12.0 (Wed Nov 29 04:22:25 EST 1995): -# * Improved iris-ansi and sun entries. -# * More flash string improvements. -# * Corrected wy160 & wy160 as suggested by Robert Dunn -# * Added dim to at386. -# * Reconciled pc3 and ibmpc3 with the BSDI termcap file. Keith says -# he's ready to start using the termcap generated from this one. -# * Added vt102-w, vt220-w, xterm-bold, wyse-vp, wy75ap, att4424m, -# ln03, lno3-w, h19-g, z29a*, qdss. Made vt200 an alias of vt220. -# * Improved hpterm, apollo consoles, fos, qvt101, tvi924. tvi925, -# att610, att620, att630, -# * Changed hazeltine name prefix from h to hz. -# * Sent t500 to the UFI file. -# * I think we've sucked all the juice out of BSDI's termcap file now. -# * Freeze for ncurses 1.9.8 release -# 9.12.1 (Thu Nov 30 03:14:06 EST 1995) -# * Unfreeze, linux kbs needed to be fixed. -# * Tim Theisen pinned down a bug in the DMD firmware. -# 9.12.2 (Thu Nov 30 19:08:55 EST 1995): -# * Fixes to ansi and klone capabilities (thank you, Aaron Ucko). -# (The broken ones had been shadowed by sgr.) -# 9.12.3 (Thu Dec 7 17:47:22 EST 1995): -# * Added documentation on ECMA-48 standard. -# * New Amiga entry. -# 9.12.4 (Thu Dec 14 04:16:39 EST 1995): -# * More ECMA-48 stuff -# * Corrected typo in minix entry, added pc-minix. -# * Corrected khome/kend in xterm (thank you again, Aaron Ucko). -# * Added rxvt entry. -# * Added 1.3.x color-change capabilities to linux entry. -# 9.12.5 (Tue Dec 19 00:22:10 EST 1995): -# * Corrected rxvt entry khome/kend. -# * Corrected linux color change capabilities. -# * NeXT entries from Dave Wetzel. -# * Cleaned up if and rf file names (all in /usr/share now). -# * Changed linux op capability to avoid screwing up a background color -# pair set by setterm. -# 9.12.6 (Wed Feb 7 16:14:35 EST 1996): -# * Added xterm-sun. -# 9.12.7 (Fri Feb 9 13:27:35 EST 1996): -# * Added visa50. -# -# 9.13.0 (Sun Mar 10 00:13:08 EST 1996): -# * Another sweep through the Shuford archive looking for new info. -# * Added dg100 alias to dg6053 based on a comp.terminals posting. -# * Added st52 from Per Persson. -# * Added eterm from the GNU Emacs 19.30 distribution. -# * Freeze for 1.9.9. -# 9.13.1 (Fri Mar 29 14:06:46 EST 1996): -# * FreeBSD console entries from Andrew Chernov. -# * Removed duplicate Atari st52 name. -# 9.13.2 (Tue May 7 16:10:06 EDT 1996) -# * xterm doesn't actually have ACS_BLOCK. -# * Change klone+color setf/setb to simpler forms that can be -# translated into termcap. -# * Added xterm1. -# * Removed mechanically-generated junk capabilities from cons* entries. -# * Added color support to bsdos. -# 9.13.3 (Thu May 9 10:35:51 EDT 1996): -# * Added Wyse 520 entries from Wm. Randolph Franklin . -# * Created ecma+color, linux can use it. Also added ech to linux. -# * Teach xterm about more keys. Add Thomas Dickey's 3.1.2E updates. -# * Add descriptions to FreeBSD console entries. Also shorten -# some aliases to <= 14 chars for portability. -# * Added x68k console -# * Added OTbs to several VT-series entries. -# 9.13.4 (Wed May 22 10:54:09 EDT 1996): -# * screen entry update for 3.7.1 from Michael Alan Dorman. -# 9.13.5 (Wed Jun 5 11:22:41 EDT 1996): -# * kterm correction due to Kenji Rikitake. -# * ACS correction in vt320-kll due to Phillippe De Muyter. -# 9.13.6 (Sun Jun 16 15:01:07 EDT 1996): -# * Sun console entry correction from J.T. Conklin. -# * Changed all DEC VT300 and up terminals to use VT300 tab set -# 9.13.7 (Mon Jul 8 20:14:32 EDT 1996): -# * Added smul to linux entry (we never noticed it was missing -# because of sgr!). -# * Added rmln to hp+labels (deduced from other HP entries). -# * Added vt100 acsc capability to vt220, vt340, vt400, d800, dt80-sas, -# pro350, att7300, 5420_2, att4418, att4424, att4426, att505, vt320-k3. -# * Corrected vt220 acsc. -# * The klone+sgr and klone+sgr-dumb entries now use klone+acs; -# this corresponds to reality and helps prevent some tic warnings. -# * Added sgr0 to c101, pcix, vt100-nav, screen2, oldsun, next, altos2, -# hpgeneric, hpansi, hpsub, hp236, hp700-wy, bobcat, dku7003, adm11, -# adm12, adm20, adm21, adm22, adm31, adm36, adm42, pt100, pt200, -# qvt101, tvi910, tvi921, tvi92B, tvi925, tvi950, tvi970, wy30-mc, -# wy50-mc, wy100, wyse-vp, ampex232, regent100, viewpoint, vp90, -# adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p, -# f1720a, go140, sb1, superbeeic, microb, ibm8512, kt7, ergo4000, -# owl, uts30, dmterm, dt100, dt100, dt110, appleII, apple-videx, -# lisa, trsII, atari, st52, pc-coherent, basis, m2-man, bg2.0, bg1.25, -# dw3, ln03, ims-ansi, graphos, t16, zen30, xtalk, simterm, d800, -# ifmr, v3220, wy100q, tandem653, ibmaed. -# * Added DWK terminal description. -# 9.13.8 (Wed Jul 10 11:45:21 EDT 1996): -# * Many entries now have highlights inherited from adm+sgr. -# * xterm entry now corresponds to XFree86 3.1.2E, with color. -# * xtitle and xtitle-twm enable access to the X status line. -# * Added linux-1.3.6 color palette caps in conventional format. -# * Added adm1178 terminal. -# * Move fos and apollo terminals to obsolete category. -# * Aha! The BRL terminals file told us what the Iris extensions mean. -# * Added, from the BRL termcap file: rt6221, rt6221-w, northstar, -# commodore, cdc721-esc, excel62, osexec. Replaced from the BRL file: -# cit500, adm11. -# 9.13.9 (Mon Jul 15 00:32:51 EDT 1996): -# * Added, from the BRL termcap file: cdc721, cdc721l, cdc752, cdc756, -# aws, awsc, zentec8001, modgraph48, rca vp3301/vp3501, ex155. -# * Corrected, from BRL termcap file: vi50. -# * Better rxvt entry & corrected xterm entries from Thomas Dickey. -# 9.13.10 (Mon Jul 15 12:20:13 EDT 1996): -# * Added from BRL: cit101e & variants, hmod1, vi200, ansi77, att5620-1, -# att5620-s, att5620-s, dg210, aas1901, hz1520, hp9845, osborne -# (old osborne moved to osborne-w), tvi970-vb, tvi970-2p, tvi925-hi, -# tek4105brl, tek4106brl, tek4107brl,tek4109brl, hazel, aepro, -# apple40p, apple80p, appleIIgs, apple2e, apple2e-p, apple-ae. -# * Paired-attribute fixes to various terminals. -# * Sun entry corrections from A. Lukyanov & Gert-Jan Vons. -# * xterm entry corrections from Thomas Dickey. -# 9.13.11 (Tue Jul 30 16:42:58 EDT 1996): -# * Added t916 entry, translated from a termcap in SCO's support area. -# * New qnx entry from Michael Hunter. -# 9.13.12 (Mon Aug 5 14:31:11 EDT 1996): -# * Added hpex2 from Ville Sulko. -# * Fixed a bug that ran the qnx and pcvtXX together. -# 9.13.13 (Fri Aug 9 01:16:17 EDT 1996): -# * Added dtterm entry from Solaris CDE. -# 9.13.14 (Tue Sep 10 15:31:56 EDT 1996): -# * corrected pairs#8 typo in dtterm entry. -# * added tvi9065. -# 9.13.15 (Sun Sep 15 02:47:05 EDT 1996): -# * updated xterm entry to cover 3.1.2E's new features. -# 9.13.16 (Tue Sep 24 12:47:43 EDT 1996): -# * Added new minix entry -# * Removed aliases of the form ^[0-9]* for obsolete terminals. -# * Commented out linux-old, nobody's using pre-1.2 kernels now. -# 9.13.17 (Fri Sep 27 13:25:38 EDT 1996): -# * Added Prism entries and kt7ix. -# * Caution notes about EWAN and tabset files. -# * Changed /usr/lib/tabset -> /home/martino/avrdude-build-script/objdir/share/tabset. -# * Added acsc/rmacs/smacs to vt52. -# 9.13.18 (Mon Oct 28 13:24:59 EST 1996): -# * Merged in Thomas Dickey's reorganization of the xterm entries; -# added technical corrections to avoid warning messages. -# 9.13.19 (Sat Nov 16 16:05:49 EST 1996): -# * Added rmso=\E[27m in Linux entry. -# * Added koi8-r support for Linux console. -# * Replace xterm entries with canonical ones from XFree86 3.2. -# 9.13.20 (Sun Nov 17 23:02:51 EST 1996): -# * Added color_xterm from Jacob Mandelson -# 9.13.21 (Mon Nov 18 12:43:42 EST 1996): -# * Back off the xterm entry to use r6 as a base. -# 9.13.22 (Sat Nov 30 11:51:31 EST 1996): -# * Added dec-vt220 at Adrian Garside's request. -# -#-(original-changelog-1996/12/29-to-1998/02/28-by-TD)--------------------------- -# -# 10.1.0 (Sun Dec 29 02:36:31 EST 1996): withdrawn -# * Minor corrections to xterm entries. -# * Replaced EWAN telnet entry. -# * Dropped the reorder script generator. It was a fossil. -# 9.13.23 (Fri Feb 21 16:36:06 EST 1997): -# * Replaced minitel-2 entry. -# * Added MGR, ansi-nt. -# 9.13.24 (Sun Feb 23 20:55:23 EST 1997): -# * Thorsten Lockert added termcap `bs' to a lot of types, working from -# the 4.4BSD Lite2 file. -# -# 10.1.1 (Sat May 3 21:41:27 EDT 1997): -# * Use setaf/setab consistently with SVr4. -# * Remove ech, el1 from cons25w, they do not work in FreeBSD 2.1.5 -# 10.1.2 (Sat May 24 21:10:57 EDT 1997) -# * update xterm-xf86-v32 to match XFree86 3.2A (changes F1-F4) -# * add xterm-16color, for XFree86 3.3 -# 10.1.3 (Sat May 31 12:21:05 EDT 1997) -# * correct typo in emu -# * correct typo in vt102-w (Robert Wuest) -# * make new entry xterm-xf86-v33, restored xterm-xf86-v32. -# 10.1.4 (Sun Jun 15 08:29:05 EDT 1997) -# * remove ech capability from rxvt (it does the wrong thing) -# 10.1.5 (Sat Jun 28 21:34:36 EDT 1997) -# * remove spurious newlines from several entries (hp+color, wy50, -# wy350, wy370-nk, wy99gt-tek, wy370-tek, ibm3161, tek4205, ctrm, -# gs6300) -# 10.1.6 (Sat Jul 5 15:08:16 EDT 1997) -# * correct rmso capability of wy50-mc -# 10.1.7 (Sat Jul 12 20:05:55 EDT 1997) -# * add cbt to xterm-xf86-v32 -# * disentangle some entries from 'xterm', preferring xterm-r6 in case -# 'xterm' is derived from xterm-xf86-v32, which implements ech and -# other capabilities not in xterm-r6. -# * remove alternate character set from kterm entry. -# 10.1.8 (Sat Aug 2 18:43:18 EDT 1997) -# * correct acsc entries for ACS_LANTERN, which is 'i', not 'I'. -# 10.1.9 (Sat Aug 23 17:54:38 EDT 1997) -# * add xterm-8bit entry. -# 10.1.10 (Sat Oct 4 18:17:13 EDT 1997) -# * repair several places where early version of tic replaced \, with \\\, -# * make acsc entries canonical form (sorted, uniq). -# * modify acsc entries for linux, linux-koi8 -# * new rxvt entry, from corrected copy of distribution in rxvt 2.21b -# * add color, mouse support to kterm. -# 10.1.11 (Sat Oct 11 14:57:10 EDT 1997) -# * correct wy120 smxon/tbc capabilities which were stuck together. -# 10.1.12 (Sat Oct 18 17:38:41 EDT 1997) -# * add entry for xterm-xf86-v39t -# 10.1.13 (Sat Nov 8 13:43:33 EST 1997) -# * add u8,u9 to sun-il description -# 10.1.14 (Sat Nov 22 19:59:03 EST 1997) -# * add vt220-js, pilot, rbcomm, datapoint entries from esr's 27-jun-97 -# version. -# * add hds200 description (Walter Skorski) -# * add EMX 0.9b descriptions -# * correct rmso/smso capabilities in wy30-mc and wy50-mc (Daniel Weaver) -# * rename xhpterm back to hpterm. -# 10.1.15 (Sat Nov 29 19:21:59 EST 1997) -# * change initc in linux-c-nc to use 0..1000 range. -# 10.1.16 (Sat Dec 13 19:41:59 EST 1997) -# * remove hpa/vpa from rxvt, which implements them incorrectly. -# * add sgr0 for rxvt. -# * remove bogus smacs/rmacs from EMX descriptions. -# 10.1.17 (Sat Dec 20 17:54:10 EST 1997) -# * revised entry for att7300 -# 10.1.18 (Sat Jan 3 17:58:49 EST 1998) -# * use \0 rather than \200. -# * rename rxvt-color to rxvt to match rxvt 2.4.5 distribution. -# 10.1.19 (Sat Jan 17 14:24:57 EST 1998) -# * change xterm (xterm-xf86-v40), xterm-8bit rs1 to use hard reset. -# * rename xterm-xf86-v39t to xterm-xf86-v40 -# * remove bold/underline from sun console entries since they're not -# implemented. -# 10.1.20 (Sat Jan 24 11:02:51 EST 1998) -# * add beterm entry (Fred Fish) -# * add irix-color/xwsh entry. -# * turn ncv off for linux. -# 10.1.21 (Sat Jan 31 17:39:16 EST 1998) -# * set ncv for FreeBSD console (treat colors with reverse specially). -# * remove sgr string from qnx based on report by Xiaodan Tang -# 10.1.22 (Wed Feb 11 18:40:12 EST 1998) -# * remove spurious commas from descriptions -# * correct xterm-8bit to match XFree86 3.9Ad F1-F4. -# 10.1.23 (Sat Feb 28 17:48:38 EST 1998) -# * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc, -# apparently based on cp-866). -# -#-(replaced-changelog-1998/02/28-by-ESR)---------------------------------------- -# -# 9.13.23 (Fri Feb 21 16:36:06 EST 1997): -# * Replaced minitel-2 entry. -# * Added MGR, ansi-nt. -# * Minor corrections to xterm entries. -# * Replaced EWAN telnet entry. -# * Dropped the reorder script generator. It was a fossil. -# 9.13.24 (Sun Feb 23 20:55:23 EST 1997): -# * Thorsten Lockert added termcap `bs' to a lot of types, working from -# the 4.4BSD Lite2 file. -# 9.13.25 (Fri Jun 20 12:33:36 EDT 1997): -# * Added Datapoint 8242, pilot, ansi_psx, rbcomm, vt220js. -# * Updated iris-ansi; corrected vt102-w. -# * Switch base xterm entry to 3.3 level. -# 9.13.26 (Mon Jun 30 22:45:45 EDT 1997) -# * Added basic4. -# * Removed rmir/smir from tv92B. -# -# 10.2.0 (Sat Feb 28 12:47:36 EST 1998): -# * add hds200 description (Walter Skorski) -# * add beterm entry (Fred Fish) -# * add Thomas Dickey's xterm-xf86-v40, xterm-8bit, xterm-16color, -# iris-color entries. -# * add emx entries. -# * Replaced unixpc entry with Benjamin Sittler's corrected version. -# * Replaced xterm/rxvt/emu/syscons entries with Thomas Dickey's -# versions. -# * remove sgr string from qnx based on report by Xiaodan Tang -# * Added u8/u9, removed rmul/smul from sun-il. -# * 4.2 tic displays \0 rather than \200. -# * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc, -# apparently based on cp-866). -# * Merged in Pavel Roskin's acsc for linux-koi8 -# * Corrected some erroneous \\'s to \. -# * 4.2 ncurses has been changed to use setaf/setab, consistent w/SysV. -# * II -> ii in pcvtXX, screen, xterm. -# * Removed \n chars following ANSI escapes in sgr & friends. -# * Updated Wyse entries. -# * h19 corrections from Tim Pierce. -# * Noted that the dm2500 has both ich and smir. -# * added pccons for the Alpha under OSF/1. -# * Added Sony NEWS workstation entries and cit101e-rv. -# * Reverted `amiga'; to Kent Polk's version, as I'm told -# the Verkuil entry messes up with Amiga Telnet. -# 10.2.1 (Sun Mar 8 18:32:04 EST 1998): -# * Corrected attributions in 10.2.0 release notes. -# * Scanned the Shuford archive for new terminfos and information. -# * Removed sgr from qnx entry (Thomas Dickey). -# * Added entries for ICL and Kokusai Data Systems terminals. -# * Incorporated NCR terminfos from the Boundless Technology FTP site. -# * Incorporated att700 from the Boundless Technology FTP site. -# * Miscellaneous contact-address and Web-page updates. -# -#-(changelog-beginning-ncurses-4.2)--------------------------------------------- -# -# 1998/5/9 -# * add nxterm and xterm-color terminfo description (request by Cristian -# Gafton ). -# * modify rxvt terminfo description to clear alternate screen before -# switching back to normal screen, for compatibility with applications -# which use xterm (reported by Manoj Kasichainula ). -# * modify linux terminfo description to reset color palette (reported -# by Telford Tendys ). -# -# 1998/7/4 -# * merge changes from current XFree86 xterm terminfo descriptions. -# -# 1998/7/25 -# * Added minitel1 entries from Alexander Montaron. -# * Added qnxt2 from Federico Bianchi. -# * Added arm100 terminfo entries from Dave Millen. -# -# 1998/8/6 -# * Added ncsa telnet entries from Francesco Potorti -# -# 1998/8/15 -# * modify ncsa telnet entry to reflect color, other capabilities based on -# examination of the source code - T.Dickey. -# -# 1998/8/22 -# * Corrected some erroneous \\'s to \ (eterm, osborne) - TD. -# -# 1998/8/29 -# * Added Francesco Potorti's tuned Wyse 99 entries. -# * dtterm enacs correction from Alexander V. Lukyanov. -# * Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version. -# * correct a typo in icl6404 entry. -# * add xtermm and xtermc -# -# 1998/9/26 -# * format most %'char' sequences to %{number} -# * adapt IBM AIX 3.2.5 terminfo - T.Dickey -# * merge Data General terminfo from Hasufin - TD -# -# 1998/10/10 -# * update xterm-xfree86 to current (patch 84), for is2/rs2 changes - TD -# * correct initialization string in xterm-r5, add misc other features -# to correspond with xterm patch 84 - TD -# -# 1998/12/19 -# * update xterm-xfree86 to current (patch 90), smcur/rmcur changes - TD -# * add Mathew Vernon's mach console entries -# * corrections for ncsa function-keys (report by Larry Virden) -# -# 1998/12/19 -# * change linux to use ncv#2, since underline does not work with color - TD -# -# 1999/1/9 -# * add kbt to iris-ansi, document other shift/control functionkeys - TD -# * correct iris-ansi and iris-ansi-ap with respect to normal vs keypad -# application modes, change kent to use the correct keypad code - TD -# -# 1999/1/10 -# * add entry for Tera Term - TD -# -# 1999/1/23 -# * minor improvements for teraterm entry - TD -# * rename several entries used by BSDI: bsdos to bsdos-pc-nobold, -# and bsdos-bold to bsdos-pc (Jeffrey C Honig) -# -# 1999/2/20 -# * resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in -# xterm and ncsa entries by removing the unneeded ones. Note that -# some entries will return kend & khome versus kslt and kfnd, for -# PC-style keyboards versus strict vt220 compatiblity - TD -# -# 1999/3/13 -# * adjust xterm-xfree86 khome/kend to match default PC-style keyboard -# tables - TD -# * add 'crt' entry - TD -# * correct typos in 'linux-c' entry - TD -# -# 1999/3/14 -# * update entries for BSD/OS console to use klone+sgr and klone+color -# (Jeffrey C Honig) -# -# 1999/3/27 -# * adjust xterm-xfree86 miscellaneous keypad keys, as per patch #94 - TD. -# -# 1999/4/10 -# * add linux-lat, from RedHat patches to ncurses 4.2 -# -# 1999/4/17 -# * add complete set of default function-key definitions for scoansi - TD. -# -# 1999/7/3 -# * add cnorm, cvvis for Linux 2.2 kernels -# -# 1999/7/24 -# * add kmous to xterm-r5 -TD -# * correct entries xterm+sl and xterm+sl-twm, which were missing the -# parent "use" clause -TD -# -# 1999/7/31 -# * corrected cnorm, added el1 in 'screen' description -TD -# -# 1999/8/14 -# * add ms-vt100 -TD -# -# 1999/8/21 -# * corrections to beterm entry -TD -# -# 1999/8/28 -# * add cygwin entry -TD -# -# 1999/9/4 -# * minor corrections for beterm entry -TD -# -# 1999/9/18 -# * add acsc string to HP 70092 terminfo entry -Joerg Wunsch -# -# 1999/9/25 -# * add amiga-8bit entry -# * add console entries from NetBSD: ofcons, wsvt25, wsvt25m, rcons, -# rcons-color, based on -# ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/termcap/termcap.src -# * add alias for iris-ansi-net -# -# 1999/10/2 -# * corrected scoansi entry's acsc, some function keys, add color -TD -# -# 1999/10/23 -# * add cnorm, cvvis to cons25w, and modify ncv to add 'dim' -TD -# * reorder ncsa entries to make ncsa-vt220 use the alternate function -# key mapping, leaving Potorti's entries more like he named them -TD -# * remove enter/exit am-mode from cygwin -TD -# -# 1999/10/30 -# * correct typos in several entries (missing '[' from CSI): -# mgr-sun, ncsa-m, vt320-k3, att505, avt-ns, as well as smir/rmir -# strings for avt-ns -TD -# * add 'dim' to ncv mask for linux (report by Klaus Weide). -# -# 1999/11/27 -# * correct kf1-kf4 in xterm-r6 which were vt100-style PF1-PF4 -TD -# * add hts to xterm-r6, and u6-u9 to xterm-r5 -TD -# * add xterm-88color and xterm-256color -TD -# -# 1999/12/4 -# * add "obsolete" termcap strings -TD -# * add kvt and gnome entries -TD -# -# 1999/12/11 -# * correct cup string for regent100 -TD -# -# 2000/1/1 -# * update mach, add mach-color based on Debian diffs for ncurses 5.0 -TD -# * add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp -TD -# * change OTrs capabilities to rs2 -TD -# * add obsolete and extended capabilities to 'screen' -TD -# -# 2000/1/5 -# * remove kf0 from rxvt, vt520, vt525 and ibm5151 since it conflicts -# with kf10 -TD -# * updated xterm-xf86-v40, making kdch1 correspond to vt220 'Remove', -# and adding kcbt -TD -# -# 2000/1/12 -# * remove incorrect khome/kend from xterm-xf86-v333, which was based on -# nonstandard resource settings -TD -# -# 2000/2/26 -# * minor fixes for xterm-*, based on Debian #58530 -TD -# -# 2000/3/4 -# * add several terminal types from esr's "11.0", as well as comments. -# bq300*, dku7102-old, dku7202, hft, lft, pcmw, pmcons, tws*, vip*, -# vt220-8bit, vt220-old, wy85-8bit -# -# 2000/3/18 -# * add several terminal types from esr's "11.0.1" (ansi-*). -# * update OTxx capabilities for changes on 2000/3/4. -# * revert part of vt220 change (request by Todd C Miller for OpenBSD) -# -# 2000/3/26 -# * move screen's AX extension to ecma+color, modify several entries to -# use that, adjusting ncv as needed -TD -# -# 2000/4/8 -# * add bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig) -# * correct spelling error in entry name: bq300-rv was given as bg300-rv -# in esr's version. -# -# 2000/4/15 -# * add cud, ech, etc., to beterm based on feedback from Rico Tudor -TD -# * correct color definition for ibm3164, make minor changes to other -# IBM terminal definitions based on recent terminfo descriptions -TD -# -# 2000/4/22 -# * 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 -# -# 2000/5/13 -# * remove ncv from xterm-16color, xterm-256color -# -# 2000/6/10 -# * add kmous capability to linux to use Joerg Schoen's gpm patch. -# -# 2000/7/1 -# * add Eterm (Michael Jennings) -# -# 2000-07-18 -# * add amiga-vnc entry. -# -# 2000-08-12 -# * correct description of Top Gun Telnet. -# * add kterm-color -# -# 2000-08-26 -# * add qansi* entries from QNX ftp site. -# -# 2000-09-16 -# * add Matrix Orbital entries by Eric Z. Ayers). -# * add xterm-basic, xterm-sco entries, update related entries to XFree86 -# 4.0.1c -TD -# -# 2000-09-17 -# * add S0, E0 extensions to screen's entry -TD -# -# 2000-09-23 -# * several corrections based on tic's new parameter-checking code -TD -# * modify xterm-r6 and similar rs2 sequences which had \E7...\E8 -# bracketing sequences that reset video attributes (\E8 would restore -# them) -TD -# -# 2000-11-11 -# * rename cygwin to cygwinB19, adapt newer entry from Earnie Boyd -TD -# -# 2000-12-16 -# * improved scoansi, based on SCO man-page, and testing console, -# scoterm with tack -TD -# -# 2001-01-27 -# * modify kterm to use acsc via SCS controls. -# -# 2001-02-10 -# * screen 3.9.8 allows xterm mouse controls to pass-through -# -# 2001-03-11 -# * remove spurious "%|" from some xterm entries. -# -# 2001-03-31 -# * modify 'screen' khome/kend to match screen 3.09.08 -# * add examples of 'screen' customization (screen.xterm-xfree86, -# screen.xterm-r6, screen.teraterm) -TD -# -# 2001-04-14 -# * correct definitions of shifted editing keys for xterm-xfree86 -TD -# * add "Apple_Terminal" entries -Benjamin Sittler -# * remove time-delays from "Apple_Terminal" entries -TD -# * make sgr entries time-delays consistent with individual caps -TD -# -# 2001-05-05 -# * corrected/updated screen.xterm-xfree86 -# -# 2001-05-19 -# * ELKS descriptions, from Federico Bianchi -# * add u6 (CSR) to Eterm (Michael Jennings). -# -# 2001-07-21 -# * renamed "Apple_Terminal" entries to "nsterm" to work with Solaris's -# tic which handles names no longer than 14 characters. Add -# corresponding descriptions for the Darwin PowerPC console named -# "xnuppc" -Benjamin Sittler -# -# 2001-09-01 -# * change kbs in mach entries to ^? (Marcus Brinkmann). -# -# 2001-11-17 -# * add "putty" entry -TD -# * updated "Apple_Terminal" entries -Benjamin Sittler -# -# 2001-11-24 -# * add ms-vt100-color entry -TD -# * add "konsole" entries -TD -# -# 2001-12-08 -# * update gnome entry to Redhat 7.2 -TD -# -# 2002-05-25 -# * add kf13-kf48 strings to cons25w -TD -# * add pcvt25-color entry -TD -# * changed a few /usr/lib/tabset -> /home/martino/avrdude-build-script/objdir/share/tabset. -# * improve some features of scoansi entry based on SCO's version -TD -# * add scoansi-new entry corresponding to OpenServer 5.0.6 -# -# 2002-06-15 -# * add kcbt to screen entry -TD -# -# 2002-06-22 -# * add rxvt-16color, ibm+16color, mvterm entries -TD -# -# 2002-09-28 -# * split out linux-basic entry, making linux-c inherit from that, and -# in turn linux (with cnorm, etc) inherit from linux-c-nc to reflect -# the history of this console type -TD -# * scaled the linux-c terminfo entry to match linux-c-nc, i.e., the -# r/g/b parameters of initc are in the range 0 to 1000 -TD -# -# 2002-10-05 -# * minor fix for scale-factor of linux-c and linux-c-nc -TD -# -# 2002-11-09 -# * split-out vt100+keypad and vt220+keypad, fix interchanged ka3/kb2 -# in the latter -TD -# -# 2002-11-16 -# * add entries for mterm (mterm, mterm-ansi, decansi) -TD -# * ncr260wy350pp has only 16 color pairs -TD -# * add sun-type4 from NetBSD -TD -# * update xterm-xfree86 to current (patch 170) -TD -# * add screen-bce, screen-s entries -TD -# * add xterm-1002, xterm-1003 entries -TD -# -# 2003-01-11 -# * update homepage for Top Gun Telnet/SSH -# -# 2003-01-25 -# * reduce duplication in emx entries, added emx-base -TD -# -# 2003-05-24 -# * corrected acs for screen.teraterm -TD -# * add tkterm entry -TD -# -# 2003-07-15 -# * cygwin changes from Charles Wilson: -# misc/terminfo.src (nxterm|xterm-color): make xterm-color -# primary instead of nxterm, to match XFree86's xterm.terminfo -# usage and to prevent circular links. -# (rxvt): add additional codes from rxvt.org. -# (rxvt-color): new alias -# (rxvt-xpm): new alias -# (rxvt-cygwin): like rxvt, but with special acsc codes. -# (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or -# with a "native" MSWin GUI. Each takes different acsc codes, -# which are both different from the "normal" rxvt's acsc. -# (cygwin): cygwin-in-cmd.exe window. Lots of fixes. -# (cygwinDBG): ditto. -# -# 2003-09-27 -# * update gnome terminal entries -TD -# -# 2003-10-04 -# * add entries for djgpp 2.03 and 2.04 -TD -# -# 2003-10-25 -# * add alias for vtnt -TD -# * update xterm-xfree86 for XFree86 4.4 -TD -# -# 2003-11-22 -# * add linux-vt (Andrey V Lukyanov) -# -# 2003-12-20 -# * add screen.linux -TD -# -# 2004-01-10 -# * revised/improved entries for tvi912b, tvi920b (Benjamin Sittler) -# -# 2004-01-17 -# * add OpenNT/Interix/SFU entries (Federico Bianchi) -# * add vt100+ and vt-utf8 entries -TD -# * add uwin entry -TD -# -# 2004-03-27 -# * add sgr strings to several common entries lacking them, e.g., -# screen, to make the entries more portable -TD -# * remove cvvis from rxvt entry, since it is the same as cnorm -TD -# * similar fixups for cvvis/cnorm various entries -TD -# -# 2004-05-22 -# * remove 'ncv' from xterm-256color (patch 188) -TD -# -# 2004-06-26 -# * add mlterm -TD -# * add xterm-xf86-v44 -TD -# * modify xterm-new aka xterm-xfree86 to accommodate luit, which relies -# on G1 being used via an ISO-2022 escape sequence (report by -# Juliusz Chroboczek) -TD -# * add 'hurd' entry -TD -# -# 2004-07-03 -# * make xterm-xf86-v43 derived from xterm-xf86-v40 rather than -# xterm-basic -TD -# * align with xterm #192's use of xterm-new -TD -# * update xterm-new and xterm-8bit for cvvis/cnorm strings -TD -# * make xterm-new the default "xterm" -TD -# -# 2004-07-10 -# * minor fixes for emu -TD -# * add emu-220 -# * add rmam/smam to linux (Trevor Van Bremen) -# * change wyse acsc strings to use 'i' map rather than 'I' -TD -# * fixes for avatar0 -TD -# * fixes for vp3a+ -TD -# -# 2004-07-17 -# * add xterm-pc-fkeys -TD -# * review/update gnome and gnome-rh90 entries (prompted by -# Redhat Bugzilla #122815) -TD -# * review/update konsole entries -TD -# * add sgr, correct sgr0 for kterm and mlterm -TD -# * correct tsl string in kterm -TD -# -# 2004-07-24 -# * make ncsa-m rmacs/smacs consistent with sgr -TD -# * add sgr, rc/sc and ech to syscons entries -TD -# * add function-keys to decansi -TD -# * add sgr to mterm-ansi -TD -# * add sgr, civis, cnorm to emu -TD -# * correct/simplify cup in addrinfo -TD -# * corrections for gnome and konsole entries -# (Redhat Bugzilla #122815) -Hans de Goede -# * modify DEC entries (vt220, etc), to add sgr string, and to use -# ISO-2022 strings for rmacs/smacs -TD -# -# 2004-07-31 -# * rename xterm-pc-fkeys to xterm+pcfkeys -TD -# -# 2004-08-07 -# * improved putty entry -Robert de Bath -# -# 2004-08-14 -# * remove dch/dch1 from rxvt because they are implemented inconsistently -# with the common usage of bce/ech -TD -# * remove khome from vt220 (vt220's have no home key) -TD -# * add rxvt+pcfkeys -TD -# -# 2004-08-21 -# * modify several entries to ensure xterm mouse and cursor visibility -# are reset in rs2 string: hurd, putty, gnome, konsole-base, mlterm, -# Eterm, screen. (The xterm entries are left alone - old ones for -# compatibility, and the new ones do not require this change) -TD -# -# 2004-08-28 -# * add morphos entry -Pavel Fedin -# * modify amiga-8bit to add khome/kend/knp/kpp -Pavel Fedin -# * corrected \E[5?l to \E[?5l in vt320 entries -TD -# -# 2004-11-20 -# * update wsvt25 entry -TD -# -# 2005-01-29 -# * update pairs for xterm-88color and xterm-256color to reflect the -# ncurses extended-color support -TD -# -# 2005-02-26 -# * modify sgr/sgr0 in xterm-new to improve tgetent's derived "me" -TD -# * add aixterm-16color to demonstrate 16-color capability -TD -# -# 2005-04-23 -# * add media-copy to vt100 -TD -# * corrected acsc string for vt52 -TD -# -# 2005-04-30 -# * add kUP, kDN (user-defined shifted up/down arrow) definitions for -# xterm-new -TD -# * add kUP5, kUP6, etc., for xterm-new and rxvt -TD -# -# 2005-05-07 -# * re-corrected acsc string for vt52 -TD -# -# 2005-05-28 -# * corrected sun-il sgr string which referred to bold and underline -TD -# * add sun-color entry -TD -# -# 2005-07-23 -# * modify sgr0 in several entries to reset alternate-charset as in the -# sgr string -TD -# * modify sgr string of prism9 to better match the individual -# attributes -TD -# -# 2005-10-15 -# * correct order of use= in rxvt-basic -TD -# -# 2005-10-26 -# * use kind/kri as shifted up/down cursor keys for xterm-new -TD -# -# 2005-11-12 -# * other minor fixes to cygwin based on tack -TD -# * correct smacs in cygwin (report by Baurzhan Ismagulov). -# -# 2006-02-18 -# * add nsterm-16color entry -TD -# * remove ncv flag from xterm-16color -TD -# * remove setf/setb from xterm-256color to match xterm #209 -TD -# * update mlterm entry to 2.9.2 -TD -# -# 2006-02-25 -# * fixes to make nsterm-16color match report -# by Christian Ebert -Alain Bench -# -# 2006-04-22 -# * add xterm+256color building block -TD -# * add gnome-256color, putty-256color, rxvt-256color -TD -# -# 2006-05-06 -# * add hpterm-color -TD -# -# 2006-06-24 -# * add xterm+pcc0, xterm+pcc1, xterm+pcc2, xterm+pcc3 -TD -# * add gnome-fc5 (prompted by GenToo #122566) -TD -# * remove obsolete/misleading comments about kcbt on Linux -Alain Bench -# * improve xterm-256color by combining the ibm+16color setaf/setab -# strings with SGR 48. The setf/setb strings also are cancelled here -# rather than omitted so derived entries will cancel those also -Alain -# Bench -# -# 2006-07-01 -# * add some notes regarding copyright to terminfo.src -TD -# * use rxvt+pcfkeys in Eterm -TD -# * remove km and flash from gnome, Eterm and rxvt since they do not work -# as one would expect (km sends ESC rather than setting the 8th bit -# of the key) -TD -# * add/use ansi+enq, vt100+enq and vt102+enq -TD -# * add konsole-solaris -TD -# -# 2006-07-22 -# * update xterm-sun and xterm-sco entries to match xterm #216 -TD -# * modify is2/rs2 strings for xterm-r6 as per fix in xterm #148 -TD -# * modify xterm-24 to inherit from "xterm" -TD -# * add xiterm entry -TD -# * add putty-vt100 entry -TD -# * corrected spelling of Michael A Dorman's name, prompted by -# http://www.advogato.org/person/mdorman/diary.html -TD -# -# 2006-08-05 -# * add xterm+pcf0, xterm+pcf2 from xterm #216 -TD -# * update xterm+pcfkeys to match xterm #216 -TD -# -# 2006-08-17 -# * make descriptions of xterm entries consistent with its terminfo -TD -# -# 2006-08-26 -# * add xfce, mgt -TD -# -# 2006-09-02 -# * correct acsc string in kterm -TD -# -# 2006-09-09 -# * add kon entry -TD -# * remove invis from linux and related entries, add klone+sgr8 for those -# that implement the feature (or have not been shown to lack it) -TD -# -# 2006-09-23 -# * add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD -# * minor improvements to rxvt+pcfkeys -TD -# -# 2006-09-30 -# * fix a few typos in if/then/else expressions -TD -# -# 2006-10-07 -# * add several GNU Screen variations with 16- and 256-colors, and -# status line (Alain Bench). -# -# 2007-03-03 -# * add Newbury Data entries (Jean-Charles Billaud). -# -# 2007-06-10 -# * corrected xterm+pcf2 modifiers for F1-F4, match xterm #226 -TD -# -# 2007-07-14 -# * restore section of pre-ncurses-4.2 changelog to fix attribution -TD -# * add konsole-256color entry -TD -# -# 2007-08-18 -# * add 9term entry (request by Juhapekka Tolvanen) -TD -# -# 2007-10-13 -# * correct kIC in rxvt+pcfkeys (prompted by Debian #446444) -TD -# * add shift-control- and control-modified keys for rxvt editing -# keypad -TD -# * update mlterm entry to 2.9.3 -TD -# * add mlterm+pcfkeys -TD -# -# 2007-10-20 -# * move kLFT, kRIT, kind and kri capabilities from xterm-new to -# xterm+pcc0, etc., to make the corresponding building blocks reflect -# xterm's capabilities -TD -# * add mrxvt entry -TD -# * add xterm+r6f2, use in mlterm and mrxvt entries -TD -# -# 2007-11-03 -# * correct acsc strings for h19 and z100 (Benjamin Sittler) -# -# 2007-11-11 -# * use xterm-xf86-v44 for "xterm-xfree86", reflecting changes to -# xterm starting with patch #216 -TD -# * make legacy xterm entries such as xterm-24 inherit from xterm-old, -# to match xterm #230 -TD -# * extend xterm+pccX entries to match xterm #230 -TD -# * add xterm+app, xterm+noapp, from xterm #230 -TD -# * add/use xterm+pce2 from xterm #230, in xterm+pcfkeys -TD -# -# 2008-04-19 -# * add screen.rxvt -TD -# -# 2008-04-28 -# * add screen+fkeys (prompted by Debian # 478094) -TD -# -# 2008-06-28 -# * add screen.mlterm -TD -# * improve mlterm and mlterm+pcfkeys -TD -# -# 2008-08-23 -# * add Eterm-256color, Eterm-88color -TD -# * add rxvt-88color -TD -# -# 2008-10-12 -# * add teraterm4.59 entry, use that as primary teraterm entry, rename -# original to teraterm2.3 -TD -# * update "gnome" to 2.22.3 -TD -# * update "konsole" to 1.6.6 -TD -# * add "aterm" -TD -# * add "linux2.6.26" -TD -# -# 2008-11-15 -# * change several \E[2g (clear tab at current column) to \E[3g -# (clear all tabs) to match definition for tbc capability -TD -# -# 2008-11-29 -# * add eterm-color -TD -# -# 2009-01-10 -# * add screen.Eterm -TD -# -# 2009-03-28 -# * correct typo in pfkey of ansi.sys-old -# (report by Kalle Olavi Niemitalo) -# * move function- and cursor-keys from emx-base to ansi.sys, and create -# a pfkey capability which handles F1-F48 -TD -# -# 2009-05-02 -# * add vwmterm entry (Bryan Christ) -# -# 2009-09-19 -# * change ncv and op capabilities in sun-color to match Sun's entry for -# this (report by Laszlo Peter) -# * improve interix smso by using reverse rather than bold (report by -# Kristof Zelechovski). -# -# 2009-10-03 -# * remove unnecessary kcan assignment to ^C from putty (Sven Joachim) -# * add linux-16color (Benjamin Sittler) -# * correct initc capability of linux-c-nc end-of-range (Benjamin Sittler) -# * similar change for dg+ccc and dgunix+ccc (Benjamin Sittler) -# * add ccc and initc capabilities to xterm-16color -TD -# -# 2009-10-31 -# * updated nsterm* entries (Benjamin Sittler, prompted by GenToo #206201) -# -# 2009-12-12 -# * updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta) -# -# 2009-12-12 -# * add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler) -# * rename minix to minix-1.7, add minix entry for Minux3 -TD -# -# 2009-12-26 -# * add bterm (bogl 0.1.18) -TD -# * minor fix to rxvt+pcfkeys -TD -# -# 2010-02-06 -# * update mrxvt to 0.5.4, add mrxvt-256color -TD -# -# 2010-02-13 -# * add several screen-bce.XXX entries -TD -# -# 2010-02-23 -# * modify screen-bce.XXX entries to exclude ech, since screen's color -# model does not clear with color for that feature -TD -# -# 2010-03-20 -# * rename atari and st52 to atari-old, st52-old, use newer entries from -# FreeMiNT by Guido Flohr (from patch/report by Alan Hourihane). -# -# 2010-06-12 -# * add mlterm+256color entry -TD -# -# 2010-07-17 -# * add hard-reset for rs2 to wsvt25 to help ensure that reset ends -# the alternate character set (patch by Nicholas Marriott) -# -# 2010-08-28 -# * improve acsc for vt52 (Benjamin Sittler) -# * modify nsterm entries for consistent sgr/sgr0 -TD -# * modify xnuppc entries for consistent sgr/sgr0 -TD -# * add invis to tek4115 sgr -TD -# -# 2010-09-11 -# * reformat acsc strings to canonical format -TD -# -# 2010-09-25 -# * add "XT" capability to entries for terminals that support both -# xterm-style mouse- and title-controls, for "screen" which -# special-cases TERM beginning with "xterm" or "rxvt" -TD -# -# 2010-10-02 -# * fill in no-parameter forms of cursor-movement where a parameterized -# form is available -TD -# * fill in missing cursor controls where the form of the controls is -# ANSI -TD -# * add parameterized cursor-controls to linux-basic (report by Dae) -TD -# -# 2010-10-09 -# * correct comparison used for setting 16-colors in linux-16color -# entry (Novell #644831) -TD -# * improve linux-16color entry, using "dim" for color-8 which makes it -# gray rather than black like color-0 -TD -# -# 2010-11-20 -# * make "vte" the principal entry defining "gnome", since GNOME terminal -# is merely one of several terminals whose behavior is provided by this -# library -TD -# -# 2010-11-27 -# * fix typo in rmso for tek4106 -Goran Weinholt -# -# 2010-12-11 -# * suppress ncv in screen entry, allowing underline -Alejandro R. Sedeno -# * also suppress ncv in konsole-base -TD -# -# 2011-02-05 -# * add U8 feature to denote entries for terminal emulators which do not -# support VT100 SI/SO when processing UTF-8 encoding -TD -# * add xterm-utf8 as a demo of the U8 feature -TD -# -# 2011-02-20 -# * add cons25-debian entry (Brian M Carlson, Debina #607662). -# -######## SHANTIH! SHANTIH! SHANTIH! diff --git a/deps/ncurses-5.9/mk-0th.awk b/deps/ncurses-5.9/mk-0th.awk deleted file mode 100644 index 5a0bf45..0000000 --- a/deps/ncurses-5.9/mk-0th.awk +++ /dev/null @@ -1,117 +0,0 @@ -# $Id: mk-0th.awk,v 1.18 2010/01/09 21:45:41 tom Exp $ -############################################################################## -# Copyright (c) 1998-2005,2010 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: Thomas E. Dickey 1996-on -# -# Generate list of sources for a library, together with lint/lintlib rules -# -# Variables: -# libname (library name, e.g., "ncurses", "panel", "forms", "menus") -# subsets (is used here to decide if wide-character code is used) -# -BEGIN { - which = libname; - using = 0; - found = 0; - } - /^@/ { - which = $0; - } - !/^[@#]/ { - if (using == 0) - { - print "" - print "# generated by mk-0th.awk" - printf "# libname: %s\n", libname - printf "# subsets: %s\n", subsets - print "" - print ".SUFFIXES: .c .cc .h .i .ii" - print ".c.i :" - printf "\t$(CPP) $(CPPFLAGS) $< >$@\n" - print ".cc.ii :" - printf "\t$(CPP) $(CPPFLAGS) $< >$@\n" - print ".h.i :" - printf "\t$(CPP) $(CPPFLAGS) $< >$@\n" - print "" - using = 1; - } - if (which ~ /port_/ ) - { - # skip win32 source - } - else if ( $0 != "" && $1 != "link_test" ) - { - if ( found == 0 ) - { - if ( subsets ~ /widechar/ ) - widechar = 1; - else - widechar = 0; - printf "C_SRC =" - if ( $2 == "lib" ) - found = 1 - else - found = 2 - } - if ( libname == "c++" || libname == "c++w" ) { - printf " \\\n\t%s/%s.cc", $3, $1 - } else if ( widechar == 1 || $3 != "$(wide)" ) { - printf " \\\n\t%s/%s.c", $3, $1 - } - } - } -END { - print "" - if ( found == 1 ) - { - print "" - printf "# Producing llib-l%s is time-consuming, so there's no direct-dependency for\n", libname - print "# it in the lintlib rule. We'll only remove in the cleanest setup." - print "clean ::" - printf "\trm -f llib-l%s.*\n", libname - print "" - print "realclean ::" - printf "\trm -f llib-l%s\n", libname - print "" - printf "llib-l%s : $(C_SRC)\n", libname - printf "\tcproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@\n" - print "" - print "lintlib :" - printf "\tsh $(srcdir)/../misc/makellib %s $(CPPFLAGS)", libname - print "" - print "lint :" - print "\t$(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS)" - } - else - { - print "" - print "lintlib :" - print "\t@echo no action needed" - } - } diff --git a/deps/ncurses-5.9/mk-1st.awk b/deps/ncurses-5.9/mk-1st.awk deleted file mode 100644 index 36c9eb3..0000000 --- a/deps/ncurses-5.9/mk-1st.awk +++ /dev/null @@ -1,491 +0,0 @@ -# $Id: mk-1st.awk,v 1.85 2010/08/07 20:42:30 Gabriele.Balducci Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey -# -# Generate list of objects for a given model library -# Variables: -# name (library name, e.g., "ncurses", "panel", "forms", "menus") -# traces ("all" or "DEBUG", to control whether tracing is compiled in) -# MODEL (e.g., "DEBUG", uppercase; toupper is not portable) -# 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) -# subset ("none", "base", "base+ext_funcs" or "termlib", etc.) -# ShlibVer ("rel", "abi" or "auto", to augment DoLinks variable) -# 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) -# ReLink ("yes", or "no", flag to rebuild shared libs on install) -# 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) -# 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") -# -# 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() { - return ( subset ~ /^ticlib$/ ); - } -function is_termlib() { - return ( subset ~ /^(ticlib\+)?termlib((\+[^+ ]+)*\+[a-z_]+_tinfo)?$/ ); - } -# see lib_name -function lib_name_of(a_name) { - return sprintf("%s%s%s", prefix, a_name, suffix) - } -# see imp_name -function imp_name_of(a_name) { - if (ShlibVerInfix == "cygdll") { - result = sprintf("%s%s%s.a", prefix, a_name, suffix); - } else { - result = ""; - } - return result; - } -# see abi_name -function abi_name_of(a_name) { - if (ShlibVerInfix == "cygdll") { - result = sprintf("%s%s$(ABI_VERSION)%s", "cyg", a_name, suffix); - } else if (ShlibVerInfix == "yes") { - result = sprintf("%s%s.$(ABI_VERSION)%s", prefix, a_name, suffix); - } else { - result = sprintf("%s.$(ABI_VERSION)", lib_name_of(a_name)); - } - return result; - } -# see rel_name -function rel_name_of(a_name) { - if (ShlibVerInfix == "cygdll") { - result = sprintf("%s%s$(REL_VERSION)%s", "cyg", a_name, suffix); - } else if (ShlibVerInfix == "yes") { - result = sprintf("%s%s.$(REL_VERSION)%s", prefix, a_name, suffix); - } else { - result = sprintf("%s.$(REL_VERSION)", lib_name_of(a_name)); - } - return result; - } -# see end_name -function end_name_of(a_name) { - if ( MODEL != "SHARED" ) { - result = lib_name_of(a_name); - } else if ( DoLinks == "reverse") { - result = lib_name_of(a_name); - } else { - if ( ShlibVer == "rel" ) { - result = rel_name_of(a_name); - } else if ( ShlibVer == "abi" || ShlibVer == "cygdll" ) { - result = abi_name_of(a_name); - } else { - result = lib_name_of(a_name); - } - } - return result - } -function symlink(src,dst) { - if ( src != dst ) { - if ( SymLink !~ /.*-f.*/ ) { - printf "rm -f %s; ", dst - } - printf "$(LN_S) %s %s; ", src, dst - } - } -function rmlink(directory, dst) { - printf "\t-rm -f %s/%s\n", directory, dst - } -function removelinks(directory) { - rmlink(directory, end_name); - if ( DoLinks == "reverse" ) { - if ( ShlibVer == "rel" ) { - rmlink(directory, abi_name); - rmlink(directory, rel_name); - } else if ( ShlibVer == "abi" ) { - rmlink(directory, abi_name); - } - } else { - if ( ShlibVer == "rel" ) { - rmlink(directory, abi_name); - rmlink(directory, lib_name); - } else if ( ShlibVer == "abi" ) { - rmlink(directory, lib_name); - } - } - } -function make_shlib(objs, shlib_list) { - printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(%s) $(LDFLAGS)\n", objs, shlib_list - } -function sharedlinks(directory) { - if ( ShlibVer != "auto" && ShlibVer != "cygdll" ) { - printf "\tcd %s && (", directory - if ( DoLinks == "reverse" ) { - if ( ShlibVer == "rel" ) { - symlink(lib_name, abi_name); - symlink(abi_name, rel_name); - } else if ( ShlibVer == "abi" ) { - symlink(lib_name, abi_name); - } - } else { - if ( ShlibVer == "rel" ) { - symlink(rel_name, abi_name); - symlink(abi_name, lib_name); - } else if ( ShlibVer == "abi" ) { - symlink(abi_name, lib_name); - } - } - printf ")\n" - } - } -# termlib may be named explicitly via "--with-termlib=XXX", which overrides -# any suffix. Temporarily override "suffix" to account for this. -function termlib_end_of() { - termlib_save_suffix = suffix; - suffix = TermlibSuffix; - termlib_temp_result = end_name_of(TermlibRoot); - suffix = termlib_save_suffix; - return termlib_temp_result; -} -function shlib_build(directory) { - dst_libs = sprintf("%s/%s", directory, end_name); - printf "%s : \\\n", dst_libs - printf "\t\t%s \\\n", directory - if (subset ~ /^base/ || subset == "ticlib" ) { - save_suffix = suffix - sub(/^[^.]\./,".",suffix) - if (directory != "../lib") { - printf "\t\t%s/%s \\\n", "../lib", termlib_end_of(); - } - printf "\t\t%s/%s \\\n", directory, termlib_end_of(); - suffix = save_suffix - } - printf "\t\t$(%s_OBJS)\n", OBJS - printf "\t@echo linking $@\n" - if ( is_ticlib() ) { - make_shlib(OBJS, "TICS_LIST") - } else if ( is_termlib() ) { - make_shlib(OBJS, "TINFO_LIST") - } else { - make_shlib(OBJS, "SHLIB_LIST") - } - sharedlinks(directory) - } -function shlib_install(directory) { - src_lib1 = sprintf("../lib/%s", end_name); - dst_lib1 = sprintf("%s/%s", directory, end_name); - printf "%s : \\\n", dst_lib1 - printf "\t\t%s \\\n", directory - printf "\t\t%s\n", src_lib1 - printf "\t@echo installing $@\n" - printf "\t$(INSTALL_LIB) %s %s\n", src_lib1, dst_lib1; - sharedlinks(directory) - } -function install_dll(directory,filename) { - src_name = sprintf("../lib/%s", filename); - dst_name = sprintf("$(DESTDIR)%s/%s", directory, filename); - printf "\t@echo installing %s as %s\n", src_name, dst_name - if ( directory == "$(bindir)" ) { - program = "$(INSTALL) -m 755"; - } else { - program = "$(INSTALL_LIB)"; - } - printf "\t%s %s %s\n", program, src_name, dst_name - } -BEGIN { - found = 0 - using = 0 - } - /^@/ { - using = 0 - if (subset == "none") { - using = 1 - } else if (index(subset,$2) > 0) { - if (using == 0) { - if (found == 0) { - print "" - printf "# generated by mk-1st.awk (subset=%s)\n", subset - printf "# name: %s\n", name - printf "# traces: %s\n", traces - printf "# MODEL: %s\n", MODEL - printf "# model: %s\n", model - printf "# prefix: %s\n", prefix - printf "# suffix: %s\n", suffix - printf "# subset: %s\n", subset - printf "# ShlibVer: %s\n", ShlibVer - printf "# ShlibVerInfix: %s\n", ShlibVerInfix - printf "# SymLink: %s\n", SymLink - printf "# TermlibRoot: %s\n", TermlibRoot - printf "# TermlibSuffix: %s\n", TermlibSuffix - printf "# ReLink: %s\n", ReLink - printf "# DoLinks: %s\n", DoLinks - printf "# rmSoLocs: %s\n", rmSoLocs - printf "# ldconfig: %s\n", ldconfig - printf "# overwrite: %s\n", overwrite - printf "# depend: %s\n", depend - printf "# host: %s\n", host - print "" - } - using = 1 - } - if ( is_ticlib() ) { - OBJS = MODEL "_P" - } else if ( is_termlib() ) { - OBJS = MODEL "_T" - } else { - OBJS = MODEL - } - } - } - /^[@#]/ { - next - } - $1 ~ /trace/ { - if (traces != "all" && traces != MODEL && $1 != "lib_trace") - next - } - { - if (using \ - && ( $1 != "link_test" ) \ - && ( $2 == "lib" \ - || $2 == "progs" \ - || $2 == "c++" \ - || $2 == "tack" )) - { - if ( found == 0 ) - { - printf "%s_OBJS =", OBJS - if ( $2 == "lib" ) - found = 1 - else - found = 2 - } - printf " \\\n\t../%s/%s$o", model, $1 - } - } -END { - print "" - if ( found != 0 ) - { - printf "\n$(%s_OBJS) : %s\n", OBJS, depend - } - if ( found == 1 ) - { - print "" - lib_name = lib_name_of(name); - if ( MODEL == "SHARED" ) - { - abi_name = abi_name_of(name); - rel_name = rel_name_of(name); - imp_name = imp_name_of(name); - end_name = end_name_of(name); - - shlib_build("../lib") - - print "" - print "install \\" - print "install.libs \\" - - if ( ShlibVer == "cygdll" ) { - - dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)"; - printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs - install_dll("$(bindir)",end_name); - install_dll("$(libdir)",imp_name); - - } else { - - lib_dir = "$(DESTDIR)$(libdir)"; - printf "install.%s :: %s/%s\n", name, lib_dir, end_name - print "" - if ( ReLink == "yes" ) { - shlib_build(lib_dir) - } else { - shlib_install(lib_dir) - } - } - - if ( overwrite == "yes" && name == "ncurses" ) - { - if ( ShlibVer == "cygdll" ) { - ovr_name = sprintf("libcurses%s.a", suffix) - printf "\t@echo linking %s to %s\n", imp_name, ovr_name - printf "\tcd $(DESTDIR)$(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) && (" - symlink(end_name, ovr_name) - printf ")\n" - } - } - if ( ldconfig != "" && ldconfig != ":" ) { - printf "\t- test -z \"$(DESTDIR)\" && %s\n", ldconfig - } - print "" - print "uninstall \\" - print "uninstall.libs \\" - printf "uninstall.%s ::\n", name - if ( ShlibVer == "cygdll" ) { - - printf "\t@echo uninstalling $(DESTDIR)$(bindir)/%s\n", end_name - printf "\t-@rm -f $(DESTDIR)$(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 - - } else { - printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", end_name - removelinks("$(DESTDIR)$(libdir)") - if ( overwrite == "yes" && name == "ncurses" ) - { - if ( ShlibVer == "cygdll" ) { - ovr_name = sprintf("libcurses%s.a", suffix) - } else { - ovr_name = sprintf("libcurses%s", suffix) - } - printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", ovr_name - } - } - if ( rmSoLocs == "yes" ) { - print "" - print "mostlyclean \\" - print "clean ::" - printf "\t-@rm -f so_locations\n" - } - } - else if ( MODEL == "LIBTOOL" ) - { - if ( $2 == "c++" ) { - compile="CXX" - } else { - compile="CC" - } - end_name = lib_name; - printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS - if ( is_ticlib() ) { - printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(TICS_LIST)\n", compile, lib_name, OBJS, libtool_version - } else if ( is_termlib() ) { - printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(TINFO_LIST)\n", compile, lib_name, OBJS, libtool_version - } else { - printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) -o %s $(%s_OBJS:$o=.lo) -rpath $(DESTDIR)$(libdir) %s $(NCURSES_MAJOR):$(NCURSES_MINOR) $(LT_UNDEF) $(SHLIB_LIST)\n", compile, lib_name, OBJS, libtool_version - } - 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 "\tcd ../lib; $(LIBTOOL_INSTALL) $(INSTALL) %s $(DESTDIR)$(libdir)\n", lib_name - print "" - print "uninstall \\" - print "uninstall.libs \\" - printf "uninstall.%s ::\n", name - printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", lib_name - printf "\t-@$(LIBTOOL_UNINSTALL) rm -f $(DESTDIR)$(libdir)/%s\n", lib_name - } - else - { - end_name = lib_name; - printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS - printf "\t$(AR) $(ARFLAGS) $@ $?\n" - printf "\t$(RANLIB) $@\n" - if ( host == "vxworks" ) - { - printf "\t$(LD) $(LD_OPTS) $? -o $(@:.a=$o)\n" - } - 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 - 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) && " - symlink("libncurses.a", "libcurses.a") - printf ")\n" - } - printf "\t$(RANLIB) $(DESTDIR)$(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 - } - 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 - 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" - } - 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 - } - } - print "" - print "clean ::" - removelinks("../lib"); - print "" - print "mostlyclean::" - printf "\t-rm -f $(%s_OBJS)\n", OBJS - if ( MODEL == "LIBTOOL" ) { - printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS - } - } - else if ( found == 2 ) - { - print "" - print "mostlyclean::" - printf "\t-rm -f $(%s_OBJS)\n", OBJS - if ( MODEL == "LIBTOOL" ) { - printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS - } - print "" - print "clean ::" - printf "\t-rm -f $(%s_OBJS)\n", OBJS - if ( MODEL == "LIBTOOL" ) { - printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS - } - } - } -# vile:ts=4 sw=4 diff --git a/deps/ncurses-5.9/mk-dlls.sh.in b/deps/ncurses-5.9/mk-dlls.sh.in deleted file mode 100644 index 05c646a..0000000 --- a/deps/ncurses-5.9/mk-dlls.sh.in +++ /dev/null @@ -1,114 +0,0 @@ -#!/bin/sh -# $Id: mk-dlls.sh.in,v 1.3 2010/12/25 22:25:41 tom Exp $ -############################################################################## -# Copyright (c) 2008,2010 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 -# -# Build DLLs on MinGW -# -LC_ALL=C @CC@ -v 2>&1 | grep Target | grep mingw -if [ $? -eq 1 ]; then - echo "$0 requires a mingw environment" >&2 -else - mkdir "$TEMP/tmp-dll" - cat > "$TEMP/tmp-dll/arch.c" < -int main() -{ - printf("%d",8*sizeof(void*)); - return(0); -} -EOF - pushd "$TEMP/tmp-dll" - @CC@ -o arch arch.c - ARCH=`./arch` - cd .. - rm -rf tmp-dll - popd - echo $ARCH > mingw_arch - echo Building DLLs and Import Libraries for Win${ARCH} - - if [ -d lib ]; then - cf="-shared" - lf="--enable-auto-import" - pushd lib 2>&1 >/dev/null - for t in "" "t" - do - for m in "" "_g" - do - if [ -f libncurses${t}${m}.a ]; then - f=libncurses${t}${m}.a - g=ncurses${t}${m} - gi=libw${g}.dll.a - td=$TEMP/tmp-${g} - bd=`pwd` - rm -rf "${td}" - mkdir "${td}" - pushd "${td}" - ar x "${bd}/${f}" `ar t "${bd}/${f}"` - @CC@ $cf -o w${g}.dll -Wl,--out-implib,${gi} -Wl,--output-def,w${g}.def -Wl,$lf `ar t "${bd}/$f"` @LIBS@ - lib //NOLOGO /MACHINE:i386 /DEF:w${g}.def - rm -f `ar t "${bd}/$f"` - mv w${g}.dll "${bd}" - mv w${g}.lib "${bd}" - mv ${gi} "${bd}" - popd - rm -rf "${td}" - - for l in panel menu form - do - for f in lib${l}${t}${m}.a - do - g=${l}${t}${m} - td=$TEMP/tmp-${g} - gi2=libw${g}.dll.a - bd=`pwd` - rm -rf "${td}" - mkdir "${td}" - echo $g - pushd "${td}" - ar x "${bd}/$f" `ar t "${bd}/$f"` - @CC@ $cf -o w${g}.dll -Wl,--out-implib,${gi2} -Wl,--output-def,w${g}.def -Wl,$lf `ar t "${bd}/$f"` "${bd}/${gi}" @LIBS@ - lib //NOLOGO /MACHINE:i386 /DEF:w${g}.def - rm -f `ar t "${bd}/$f"` - mv w${g}.dll "${bd}" - mv w${g}.lib "${bd}" - mv ${gi2} "${bd}" - popd - rm -rf "${td}" - done - done - fi - done - done - popd - else - echo lib has not been built >&2 - fi -fi diff --git a/deps/ncurses-5.9/ncurses/Makefile b/deps/ncurses-5.9/ncurses/Makefile deleted file mode 100644 index 0ad19a4..0000000 --- a/deps/ncurses-5.9/ncurses/Makefile +++ /dev/null @@ -1,1415 +0,0 @@ -# $Id: Makefile.in,v 1.130 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses source code. -# -# This makes the following: -# programs -# includes -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, -# and the programs with the configured default model. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - -THIS = Makefile - -CF_MFLAGS = - - -x = -o = .o - -MODEL = normal -DESTDIR = -top_srcdir = .. -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -bindir = ${exec_prefix}/bin -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include/ncurses -datadir = ${prefix}/share - -LIBTOOL = -LIBTOOL_CLEAN = -LIBTOOL_COMPILE = -LIBTOOL_LINK = ${CC} -LIBTOOL_INSTALL = -LIBTOOL_UNINSTALL = -LT_UNDEF = - -INSTALL = /bin/install -c -INSTALL_LIB = /bin/install -c -m 644 -INSTALL_PROG = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 - -AR = ar -ARFLAGS = -curv -AWK = gawk -LD = ld -LN_S = ln -s -f - -CTAGS = -ETAGS = - -CC = gcc -CPP = gcc -E -CFLAGS = -w -O2 -fPIC --param max-inline-insns-single=1200 - -INCDIR = $(srcdir)/../include -CPPFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -BUILD_CPPFLAGS = -I../include -DUSE_BUILD_CC ${CPPFLAGS} -BUILD_CC = ${CC} -BUILD_CCFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) -I$(INCDIR) $(BUILD_CPPFLAGS) ${CFLAGS} -BUILD_LDFLAGS = ${LDFLAGS} -BUILD_LIBS = ${LIBS} - -# The executables built in this directory are used for generating source that -# is compiled into the build, or are test-programs that are not installed. - -BUILD_EXEEXT = $x -x = - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) -g -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) -fPIC - -CFLAGS_DEFAULT = $(CFLAGS_NORMAL) - -LINK = $(LIBTOOL) -LDFLAGS = -s -fPIC -ldl - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -ldl -ltinfo -TINFO_LIST = $(SHLIB_DIRS) -TICS_LIST = $(SHLIB_DIRS) -ltinfo - -MK_SHARED_LIB = ${CC} ${CFLAGS} -shared -Wl,-soname,`basename $@ .${REL_VERSION}`.${ABI_VERSION},-stats,-lc -o $@ - -NCURSES_MAJOR = 5 -NCURSES_MINOR = 9 -REL_VERSION = 5.9 -ABI_VERSION = 5 - -RANLIB = ranlib - -LIBRARIES = ../lib/libtinfo.a ../lib/libncurses.a - -LINT = -LINT_OPTS = -LINT_LIBS = -lncurses -ldl - -FALLBACK_LIST = - -USE_BIG_STRINGS = 1 -TERMINFO_CAPS = $(top_srcdir)/include/Caps - -TERMINFO = /home/martino/avrdude-build-script/objdir/share/terminfo -TERMINFO_SRC = ${top_srcdir}/misc/terminfo.src -TIC_PATH = /bin/tic - -AUTO_SRC = \ - ./codes.c \ - ./comp_captab.c \ - ./expanded.c \ - ./fallback.c \ - ./lib_gen.c \ - ./lib_keyname.c \ - ./link_test.c \ - ./names.c \ - ./unctrl.c \ - init_keytry.h \ - keys.list - -HEADER_DEPS = \ - $(srcdir)/curses.priv.h \ - ../include/ncurses_dll.h \ - ../include/ncurses_cfg.h \ - ../include/curses.h \ - $(INCDIR)/nc_panel.h \ - ../include/term.h \ - $(INCDIR)/term_entry.h \ - $(INCDIR)/nc_tparm.h \ - $(INCDIR)/nc_alloc.h \ - $(INCDIR)/nc_mingw.h - -TEST_DEPS = ../lib/libncurses.a -TEST_ARGS = -static -L../lib -lform -lmenu -lpanel -lncurses -ltinfo -dynamic -TEST_LDFLAGS = $(TEST_ARGS) -ldl -s -fPIC - -TEST_PROGS = \ - captoinfo$x \ - hardscroll$x \ - link_test$x \ - hashmap$x \ - lib_mvcur$x - -base = $(srcdir)/base -serial = $(srcdir)/tty -tinfo = $(srcdir)/tinfo -trace = $(srcdir)/trace -wide = $(srcdir)/widechar -win32con = $(srcdir)/win32con - -################################################################################ -all \ -libs :: $(AUTO_SRC) ../lib $(LIBRARIES) - -sources: $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -../lib : ; mkdir $@ - -./fallback.c : $(tinfo)/MKfallback.sh - sh -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@ - -./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h - sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@ - -init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list - ./make_keys$(BUILD_EXEEXT) keys.list > $@ - -keys.list : $(tinfo)/MKkeys_list.sh - AWK=$(AWK) sh $(tinfo)/MKkeys_list.sh $(TERMINFO_CAPS) | sort >$@ - -make_keys$(BUILD_EXEEXT) : \ - $(tinfo)/make_keys.c \ - names.c - $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS) - -make_hash$(BUILD_EXEEXT) : \ - $(tinfo)/make_hash.c \ - ../include/hashsize.h - $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS) - -./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh - sh -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@ - -./comp_captab.c: \ - make_hash$(BUILD_EXEEXT) \ - ../include/hashsize.h \ - $(tinfo)/MKcaptab.sh \ - $(tinfo)/MKcaptab.awk - sh -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(srcdir)/../include/Caps > $@ - -./lib_keyname.c: keys.list $(base)/MKkeyname.awk - $(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@ - -./codes.c: $(tinfo)/MKcodes.awk - $(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/Caps >$@ - -./names.c: $(tinfo)/MKnames.awk - $(AWK) -f $(tinfo)/MKnames.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/Caps >$@ - -./unctrl.c: $(base)/MKunctrl.awk - echo | $(AWK) -f $(base)/MKunctrl.awk bigstrings=$(USE_BIG_STRINGS) >$@ - -tags: - $(CTAGS) *.[ch] */*.[ch] - -#TAGS: -# $(ETAGS) *.[ch] */*.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -rm -f $(TEST_PROGS) - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -rm -f make_keys$(BUILD_EXEEXT) - -rm -f make_hash$(BUILD_EXEEXT) - -rm -rf .libs - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -# These rules are used to allow "make -n" to work on a clean directory-tree -../include/hashsize.h \ -../include/parametrized.h \ -../include/term.h : - cd ../include; $(MAKE) $(CF_MFLAGS) - -# These rules build test-programs for the modules that have test-drivers -test_progs : $(TEST_PROGS) - -./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h - sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@ - -captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS) - $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS) - -hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS) - $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS) - -hashmap$x : $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_DEPS) - $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS) - -lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \ - ../objects/dump_entry$o - $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../objects/dump_entry$o $(TEST_LDFLAGS) - -link_test$x : ./link_test.c $(TEST_DEPS) \ - ../objects/link_test$o - $(CC) -o $@ $(CFLAGS_DEFAULT) ../objects/link_test$o $(TEST_LDFLAGS) - -../objects/dump_entry$o: - cd ../progs && $(MAKE) ../objects/dump_entry$o - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### - -# generated by mk-0th.awk -# libname: ncurses -# subsets: ticlib+termlib+ext_tinfo base+ext_funcs - -.SUFFIXES: .c .cc .h .i .ii -.c.i : - $(CPP) $(CPPFLAGS) $< >$@ -.cc.ii : - $(CPP) $(CPPFLAGS) $< >$@ -.h.i : - $(CPP) $(CPPFLAGS) $< >$@ - -C_SRC = \ - $(serial)/hardscroll.c \ - $(serial)/hashmap.c \ - $(base)/lib_addch.c \ - $(base)/lib_addstr.c \ - $(base)/lib_beep.c \ - $(base)/lib_bkgd.c \ - $(base)/lib_box.c \ - $(base)/lib_chgat.c \ - $(base)/lib_clear.c \ - $(base)/lib_clearok.c \ - $(base)/lib_clrbot.c \ - $(base)/lib_clreol.c \ - $(base)/lib_color.c \ - $(base)/lib_colorset.c \ - $(base)/lib_delch.c \ - $(base)/lib_delwin.c \ - $(base)/lib_echo.c \ - $(base)/lib_endwin.c \ - $(base)/lib_erase.c \ - $(base)/lib_flash.c \ - ./lib_gen.c \ - $(base)/lib_getch.c \ - $(base)/lib_getstr.c \ - $(base)/lib_hline.c \ - $(base)/lib_immedok.c \ - $(base)/lib_inchstr.c \ - $(base)/lib_initscr.c \ - $(base)/lib_insch.c \ - $(base)/lib_insdel.c \ - $(base)/lib_insnstr.c \ - $(base)/lib_instr.c \ - $(base)/lib_isendwin.c \ - $(base)/lib_leaveok.c \ - $(base)/lib_mouse.c \ - $(base)/lib_move.c \ - $(serial)/lib_mvcur.c \ - $(base)/lib_mvwin.c \ - $(base)/lib_newterm.c \ - $(base)/lib_newwin.c \ - $(base)/lib_nl.c \ - $(base)/lib_overlay.c \ - $(base)/lib_pad.c \ - $(base)/lib_printw.c \ - $(base)/lib_redrawln.c \ - $(base)/lib_refresh.c \ - $(base)/lib_restart.c \ - $(base)/lib_scanw.c \ - $(base)/lib_screen.c \ - $(base)/lib_scroll.c \ - $(base)/lib_scrollok.c \ - $(base)/lib_scrreg.c \ - $(base)/lib_set_term.c \ - $(base)/lib_slk.c \ - $(base)/lib_slkatr_set.c \ - $(base)/lib_slkatrof.c \ - $(base)/lib_slkatron.c \ - $(base)/lib_slkatrset.c \ - $(base)/lib_slkattr.c \ - $(base)/lib_slkclear.c \ - $(base)/lib_slkcolor.c \ - $(base)/lib_slkinit.c \ - $(base)/lib_slklab.c \ - $(base)/lib_slkrefr.c \ - $(base)/lib_slkset.c \ - $(base)/lib_slktouch.c \ - $(base)/lib_touch.c \ - $(trace)/lib_tracedmp.c \ - $(trace)/lib_tracemse.c \ - $(serial)/lib_tstp.c \ - $(base)/lib_ungetch.c \ - $(serial)/lib_vidattr.c \ - $(base)/lib_vline.c \ - $(base)/lib_wattroff.c \ - $(base)/lib_wattron.c \ - $(base)/lib_winch.c \ - $(base)/lib_window.c \ - $(base)/nc_panel.c \ - $(base)/safe_sprintf.c \ - $(serial)/tty_update.c \ - $(trace)/varargs.c \ - $(base)/memmove.c \ - $(base)/vsscanf.c \ - $(base)/lib_freeall.c \ - ./expanded.c \ - $(base)/legacy_coding.c \ - $(base)/lib_dft_fgbg.c \ - $(tinfo)/lib_print.c \ - $(base)/resizeterm.c \ - $(trace)/trace_xnames.c \ - $(tinfo)/use_screen.c \ - $(base)/use_window.c \ - $(base)/wresize.c \ - $(tinfo)/access.c \ - $(tinfo)/add_tries.c \ - $(tinfo)/alloc_ttype.c \ - ./codes.c \ - ./comp_captab.c \ - $(tinfo)/comp_error.c \ - $(tinfo)/comp_hash.c \ - $(tinfo)/db_iterator.c \ - $(tinfo)/doalloc.c \ - $(tinfo)/entries.c \ - ./fallback.c \ - $(tinfo)/free_ttype.c \ - $(tinfo)/getenv_num.c \ - $(tinfo)/home_terminfo.c \ - $(tinfo)/init_keytry.c \ - $(tinfo)/lib_acs.c \ - $(tinfo)/lib_baudrate.c \ - $(tinfo)/lib_cur_term.c \ - $(tinfo)/lib_data.c \ - $(tinfo)/lib_has_cap.c \ - $(tinfo)/lib_kernel.c \ - ./lib_keyname.c \ - $(tinfo)/lib_longname.c \ - $(tinfo)/lib_napms.c \ - $(tinfo)/lib_options.c \ - $(tinfo)/lib_raw.c \ - $(tinfo)/lib_setup.c \ - $(tinfo)/lib_termcap.c \ - $(tinfo)/lib_termname.c \ - $(tinfo)/lib_tgoto.c \ - $(tinfo)/lib_ti.c \ - $(tinfo)/lib_tparm.c \ - $(tinfo)/lib_tputs.c \ - $(trace)/lib_trace.c \ - $(trace)/lib_traceatr.c \ - $(trace)/lib_tracebits.c \ - $(trace)/lib_tracechr.c \ - $(tinfo)/lib_ttyflags.c \ - $(serial)/lib_twait.c \ - $(tinfo)/name_match.c \ - ./names.c \ - $(tinfo)/read_entry.c \ - $(tinfo)/read_termcap.c \ - $(tinfo)/setbuf.c \ - $(tinfo)/strings.c \ - $(trace)/trace_buf.c \ - $(trace)/trace_tries.c \ - $(base)/tries.c \ - $(tinfo)/trim_sgr0.c \ - ./unctrl.c \ - $(trace)/visbuf.c \ - $(tinfo)/alloc_entry.c \ - $(tinfo)/captoinfo.c \ - $(tinfo)/comp_expand.c \ - $(tinfo)/comp_parse.c \ - $(tinfo)/comp_scan.c \ - $(tinfo)/parse_entry.c \ - $(tinfo)/write_entry.c \ - $(base)/define_key.c \ - $(tinfo)/hashed_db.c \ - $(base)/key_defined.c \ - $(base)/keybound.c \ - $(base)/keyok.c \ - $(base)/version.c - -# Producing llib-lncurses is time-consuming, so there's no direct-dependency for -# it in the lintlib rule. We'll only remove in the cleanest setup. -clean :: - rm -f llib-lncurses.* - -realclean :: - rm -f llib-lncurses - -llib-lncurses : $(C_SRC) - cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@ - -lintlib : - sh $(srcdir)/../misc/makellib ncurses $(CPPFLAGS) -lint : - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS) - -# generated by mk-1st.awk (subset=ticlib+termlib+ext_tinfo) -# name: tinfo -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: ticlib+termlib+ext_tinfo -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h ./curses.priv.h -# host: x86_64-unknown-linux-gnu - -NORMAL_T_OBJS = \ - ../objects/access$o \ - ../objects/add_tries$o \ - ../objects/alloc_ttype$o \ - ../objects/codes$o \ - ../objects/comp_captab$o \ - ../objects/comp_error$o \ - ../objects/comp_hash$o \ - ../objects/db_iterator$o \ - ../objects/doalloc$o \ - ../objects/entries$o \ - ../objects/fallback$o \ - ../objects/free_ttype$o \ - ../objects/getenv_num$o \ - ../objects/home_terminfo$o \ - ../objects/init_keytry$o \ - ../objects/lib_acs$o \ - ../objects/lib_baudrate$o \ - ../objects/lib_cur_term$o \ - ../objects/lib_data$o \ - ../objects/lib_has_cap$o \ - ../objects/lib_kernel$o \ - ../objects/lib_keyname$o \ - ../objects/lib_longname$o \ - ../objects/lib_napms$o \ - ../objects/lib_options$o \ - ../objects/lib_raw$o \ - ../objects/lib_setup$o \ - ../objects/lib_termcap$o \ - ../objects/lib_termname$o \ - ../objects/lib_tgoto$o \ - ../objects/lib_ti$o \ - ../objects/lib_tparm$o \ - ../objects/lib_tputs$o \ - ../objects/lib_trace$o \ - ../objects/lib_ttyflags$o \ - ../objects/lib_twait$o \ - ../objects/name_match$o \ - ../objects/names$o \ - ../objects/read_entry$o \ - ../objects/read_termcap$o \ - ../objects/setbuf$o \ - ../objects/strings$o \ - ../objects/tries$o \ - ../objects/trim_sgr0$o \ - ../objects/unctrl$o \ - ../objects/visbuf$o \ - ../objects/alloc_entry$o \ - ../objects/captoinfo$o \ - ../objects/comp_expand$o \ - ../objects/comp_parse$o \ - ../objects/comp_scan$o \ - ../objects/parse_entry$o \ - ../objects/write_entry$o \ - ../objects/define_key$o \ - ../objects/hashed_db$o \ - ../objects/key_defined$o \ - ../objects/keybound$o \ - ../objects/keyok$o \ - ../objects/version$o - -$(NORMAL_T_OBJS) : ../include/ncurses_cfg.h ./curses.priv.h - -../lib/libtinfo.a : $(NORMAL_T_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -install \ -install.libs \ -install.tinfo :: $(DESTDIR)$(libdir) ../lib/libtinfo.a - @echo installing ../lib/libtinfo.a as $(DESTDIR)$(libdir)/libtinfo.a - $(INSTALL_DATA) ../lib/libtinfo.a $(DESTDIR)$(libdir)/libtinfo.a - $(RANLIB) $(DESTDIR)$(libdir)/libtinfo.a - -uninstall \ -uninstall.libs \ -uninstall.tinfo :: - @echo uninstalling $(DESTDIR)$(libdir)/libtinfo.a - -@rm -f $(DESTDIR)$(libdir)/libtinfo.a - -clean :: - -rm -f ../lib/libtinfo.a - -rm -f ../lib/ - -rm -f ../lib/libtinfo.a - -mostlyclean:: - -rm -f $(NORMAL_T_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: ticlib+termlib+ext_tinfo -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/access$o : $(tinfo)/access.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/access.c -o ../objects/access$o - -../objects/add_tries$o : $(tinfo)/add_tries.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/add_tries.c -o ../objects/add_tries$o - -../objects/alloc_ttype$o : $(tinfo)/alloc_ttype.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/alloc_ttype.c -o ../objects/alloc_ttype$o - -../objects/codes$o : ./codes.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/codes.c -o ../objects/codes$o - -../objects/comp_captab$o : ./comp_captab.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - ../include/hashsize.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/comp_captab.c -o ../objects/comp_captab$o - -../objects/comp_error$o : $(tinfo)/comp_error.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/comp_error.c -o ../objects/comp_error$o - -../objects/comp_hash$o : $(tinfo)/comp_hash.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - ../include/hashsize.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/comp_hash.c -o ../objects/comp_hash$o - -../objects/db_iterator$o : $(tinfo)/db_iterator.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/db_iterator.c -o ../objects/db_iterator$o - -../objects/doalloc$o : $(tinfo)/doalloc.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/doalloc.c -o ../objects/doalloc$o - -../objects/entries$o : $(tinfo)/entries.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/entries.c -o ../objects/entries$o - -../objects/fallback$o : ./fallback.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/fallback.c -o ../objects/fallback$o - -../objects/free_ttype$o : $(tinfo)/free_ttype.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/free_ttype.c -o ../objects/free_ttype$o - -../objects/getenv_num$o : $(tinfo)/getenv_num.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/getenv_num.c -o ../objects/getenv_num$o - -../objects/home_terminfo$o : $(tinfo)/home_terminfo.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/home_terminfo.c -o ../objects/home_terminfo$o - -../objects/init_keytry$o : $(tinfo)/init_keytry.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - init_keytry.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/init_keytry.c -o ../objects/init_keytry$o - -../objects/lib_acs$o : $(tinfo)/lib_acs.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_acs.c -o ../objects/lib_acs$o - -../objects/lib_baudrate$o : $(tinfo)/lib_baudrate.c \ - $(HEADER_DEPS) \ - ../include/termcap.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_baudrate.c -o ../objects/lib_baudrate$o - -../objects/lib_cur_term$o : $(tinfo)/lib_cur_term.c \ - $(HEADER_DEPS) \ - ../include/termcap.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_cur_term.c -o ../objects/lib_cur_term$o - -../objects/lib_data$o : $(tinfo)/lib_data.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_data.c -o ../objects/lib_data$o - -../objects/lib_has_cap$o : $(tinfo)/lib_has_cap.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_has_cap.c -o ../objects/lib_has_cap$o - -../objects/lib_kernel$o : $(tinfo)/lib_kernel.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_kernel.c -o ../objects/lib_kernel$o - -../objects/lib_keyname$o : ./lib_keyname.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/lib_keyname.c -o ../objects/lib_keyname$o - -../objects/lib_longname$o : $(tinfo)/lib_longname.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_longname.c -o ../objects/lib_longname$o - -../objects/lib_napms$o : $(tinfo)/lib_napms.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_napms.c -o ../objects/lib_napms$o - -../objects/lib_options$o : $(tinfo)/lib_options.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_options.c -o ../objects/lib_options$o - -../objects/lib_raw$o : $(tinfo)/lib_raw.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_raw.c -o ../objects/lib_raw$o - -../objects/lib_setup$o : $(tinfo)/lib_setup.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_setup.c -o ../objects/lib_setup$o - -../objects/lib_termcap$o : $(tinfo)/lib_termcap.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - ../include/termcap.h \ - $(INCDIR)/capdefaults.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_termcap.c -o ../objects/lib_termcap$o - -../objects/lib_termname$o : $(tinfo)/lib_termname.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_termname.c -o ../objects/lib_termname$o - -../objects/lib_tgoto$o : $(tinfo)/lib_tgoto.c \ - $(HEADER_DEPS) \ - ../include/termcap.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_tgoto.c -o ../objects/lib_tgoto$o - -../objects/lib_ti$o : $(tinfo)/lib_ti.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_ti.c -o ../objects/lib_ti$o - -../objects/lib_tparm$o : $(tinfo)/lib_tparm.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_tparm.c -o ../objects/lib_tparm$o - -../objects/lib_tputs$o : $(tinfo)/lib_tputs.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - ../include/termcap.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_tputs.c -o ../objects/lib_tputs$o - -../objects/lib_trace$o : $(trace)/lib_trace.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(trace)/lib_trace.c -o ../objects/lib_trace$o - -../objects/lib_ttyflags$o : $(tinfo)/lib_ttyflags.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/lib_ttyflags.c -o ../objects/lib_ttyflags$o - -../objects/lib_twait$o : $(serial)/lib_twait.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(serial)/lib_twait.c -o ../objects/lib_twait$o - -../objects/name_match$o : $(tinfo)/name_match.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/name_match.c -o ../objects/name_match$o - -../objects/names$o : ./names.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/names.c -o ../objects/names$o - -../objects/read_entry$o : $(tinfo)/read_entry.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - $(INCDIR)/hashed_db.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/read_entry.c -o ../objects/read_entry$o - -../objects/read_termcap$o : $(tinfo)/read_termcap.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/read_termcap.c -o ../objects/read_termcap$o - -../objects/setbuf$o : $(tinfo)/setbuf.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/setbuf.c -o ../objects/setbuf$o - -../objects/strings$o : $(tinfo)/strings.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/strings.c -o ../objects/strings$o - -../objects/tries$o : $(base)/tries.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(base)/tries.c -o ../objects/tries$o - -../objects/trim_sgr0$o : $(tinfo)/trim_sgr0.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/trim_sgr0.c -o ../objects/trim_sgr0$o - -../objects/unctrl$o : ./unctrl.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/unctrl.c -o ../objects/unctrl$o - -../objects/visbuf$o : $(trace)/visbuf.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(trace)/visbuf.c -o ../objects/visbuf$o - -../objects/alloc_entry$o : $(tinfo)/alloc_entry.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/alloc_entry.c -o ../objects/alloc_entry$o - -../objects/captoinfo$o : $(tinfo)/captoinfo.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/captoinfo.c -o ../objects/captoinfo$o - -../objects/comp_expand$o : $(tinfo)/comp_expand.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/comp_expand.c -o ../objects/comp_expand$o - -../objects/comp_parse$o : $(tinfo)/comp_parse.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/comp_parse.c -o ../objects/comp_parse$o - -../objects/comp_scan$o : $(tinfo)/comp_scan.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/comp_scan.c -o ../objects/comp_scan$o - -../objects/parse_entry$o : $(tinfo)/parse_entry.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - ../include/parametrized.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/parse_entry.c -o ../objects/parse_entry$o - -../objects/write_entry$o : $(tinfo)/write_entry.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - $(INCDIR)/hashed_db.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/write_entry.c -o ../objects/write_entry$o - -../objects/define_key$o : $(base)/define_key.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(base)/define_key.c -o ../objects/define_key$o - -../objects/hashed_db$o : $(tinfo)/hashed_db.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - $(INCDIR)/hashed_db.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(tinfo)/hashed_db.c -o ../objects/hashed_db$o - -../objects/key_defined$o : $(base)/key_defined.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(base)/key_defined.c -o ../objects/key_defined$o - -../objects/keybound$o : $(base)/keybound.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(base)/keybound.c -o ../objects/keybound$o - -../objects/keyok$o : $(base)/keyok.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(base)/keyok.c -o ../objects/keyok$o - -../objects/version$o : $(base)/version.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -DUSE_TERMLIB -c ../ncurses/$(base)/version.c -o ../objects/version$o - - -# generated by mk-1st.awk (subset=base+ext_funcs) -# name: ncurses -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: base+ext_funcs -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h ./curses.priv.h -# host: x86_64-unknown-linux-gnu - -NORMAL_OBJS = \ - ../objects/hardscroll$o \ - ../objects/hashmap$o \ - ../objects/lib_addch$o \ - ../objects/lib_addstr$o \ - ../objects/lib_beep$o \ - ../objects/lib_bkgd$o \ - ../objects/lib_box$o \ - ../objects/lib_chgat$o \ - ../objects/lib_clear$o \ - ../objects/lib_clearok$o \ - ../objects/lib_clrbot$o \ - ../objects/lib_clreol$o \ - ../objects/lib_color$o \ - ../objects/lib_colorset$o \ - ../objects/lib_delch$o \ - ../objects/lib_delwin$o \ - ../objects/lib_echo$o \ - ../objects/lib_endwin$o \ - ../objects/lib_erase$o \ - ../objects/lib_flash$o \ - ../objects/lib_gen$o \ - ../objects/lib_getch$o \ - ../objects/lib_getstr$o \ - ../objects/lib_hline$o \ - ../objects/lib_immedok$o \ - ../objects/lib_inchstr$o \ - ../objects/lib_initscr$o \ - ../objects/lib_insch$o \ - ../objects/lib_insdel$o \ - ../objects/lib_insnstr$o \ - ../objects/lib_instr$o \ - ../objects/lib_isendwin$o \ - ../objects/lib_leaveok$o \ - ../objects/lib_mouse$o \ - ../objects/lib_move$o \ - ../objects/lib_mvcur$o \ - ../objects/lib_mvwin$o \ - ../objects/lib_newterm$o \ - ../objects/lib_newwin$o \ - ../objects/lib_nl$o \ - ../objects/lib_overlay$o \ - ../objects/lib_pad$o \ - ../objects/lib_printw$o \ - ../objects/lib_redrawln$o \ - ../objects/lib_refresh$o \ - ../objects/lib_restart$o \ - ../objects/lib_scanw$o \ - ../objects/lib_screen$o \ - ../objects/lib_scroll$o \ - ../objects/lib_scrollok$o \ - ../objects/lib_scrreg$o \ - ../objects/lib_set_term$o \ - ../objects/lib_slk$o \ - ../objects/lib_slkatr_set$o \ - ../objects/lib_slkatrof$o \ - ../objects/lib_slkatron$o \ - ../objects/lib_slkatrset$o \ - ../objects/lib_slkattr$o \ - ../objects/lib_slkclear$o \ - ../objects/lib_slkcolor$o \ - ../objects/lib_slkinit$o \ - ../objects/lib_slklab$o \ - ../objects/lib_slkrefr$o \ - ../objects/lib_slkset$o \ - ../objects/lib_slktouch$o \ - ../objects/lib_touch$o \ - ../objects/lib_tstp$o \ - ../objects/lib_ungetch$o \ - ../objects/lib_vidattr$o \ - ../objects/lib_vline$o \ - ../objects/lib_wattroff$o \ - ../objects/lib_wattron$o \ - ../objects/lib_winch$o \ - ../objects/lib_window$o \ - ../objects/nc_panel$o \ - ../objects/safe_sprintf$o \ - ../objects/tty_update$o \ - ../objects/varargs$o \ - ../objects/memmove$o \ - ../objects/vsscanf$o \ - ../objects/lib_freeall$o \ - ../objects/expanded$o \ - ../objects/legacy_coding$o \ - ../objects/lib_dft_fgbg$o \ - ../objects/lib_print$o \ - ../objects/resizeterm$o \ - ../objects/use_screen$o \ - ../objects/use_window$o \ - ../objects/wresize$o - -$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./curses.priv.h - -../lib/libncurses.a : $(NORMAL_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -install \ -install.libs \ -install.ncurses :: $(DESTDIR)$(libdir) ../lib/libncurses.a - @echo installing ../lib/libncurses.a as $(DESTDIR)$(libdir)/libncurses.a - $(INSTALL_DATA) ../lib/libncurses.a $(DESTDIR)$(libdir)/libncurses.a - $(RANLIB) $(DESTDIR)$(libdir)/libncurses.a - -uninstall \ -uninstall.libs \ -uninstall.ncurses :: - @echo uninstalling $(DESTDIR)$(libdir)/libncurses.a - -@rm -f $(DESTDIR)$(libdir)/libncurses.a - -clean :: - -rm -f ../lib/libncurses.a - -rm -f ../lib/ - -rm -f ../lib/libncurses.a - -mostlyclean:: - -rm -f $(NORMAL_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: base+ext_funcs -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/hardscroll$o : $(serial)/hardscroll.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/hardscroll.c -o ../objects/hardscroll$o - -../objects/hashmap$o : $(serial)/hashmap.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/hashmap.c -o ../objects/hashmap$o - -../objects/lib_addch$o : $(base)/lib_addch.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_addch.c -o ../objects/lib_addch$o - -../objects/lib_addstr$o : $(base)/lib_addstr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_addstr.c -o ../objects/lib_addstr$o - -../objects/lib_beep$o : $(base)/lib_beep.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_beep.c -o ../objects/lib_beep$o - -../objects/lib_bkgd$o : $(base)/lib_bkgd.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_bkgd.c -o ../objects/lib_bkgd$o - -../objects/lib_box$o : $(base)/lib_box.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_box.c -o ../objects/lib_box$o - -../objects/lib_chgat$o : $(base)/lib_chgat.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_chgat.c -o ../objects/lib_chgat$o - -../objects/lib_clear$o : $(base)/lib_clear.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clear.c -o ../objects/lib_clear$o - -../objects/lib_clearok$o : $(base)/lib_clearok.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clearok.c -o ../objects/lib_clearok$o - -../objects/lib_clrbot$o : $(base)/lib_clrbot.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clrbot.c -o ../objects/lib_clrbot$o - -../objects/lib_clreol$o : $(base)/lib_clreol.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_clreol.c -o ../objects/lib_clreol$o - -../objects/lib_color$o : $(base)/lib_color.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_color.c -o ../objects/lib_color$o - -../objects/lib_colorset$o : $(base)/lib_colorset.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_colorset.c -o ../objects/lib_colorset$o - -../objects/lib_delch$o : $(base)/lib_delch.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_delch.c -o ../objects/lib_delch$o - -../objects/lib_delwin$o : $(base)/lib_delwin.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_delwin.c -o ../objects/lib_delwin$o - -../objects/lib_echo$o : $(base)/lib_echo.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_echo.c -o ../objects/lib_echo$o - -../objects/lib_endwin$o : $(base)/lib_endwin.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_endwin.c -o ../objects/lib_endwin$o - -../objects/lib_erase$o : $(base)/lib_erase.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_erase.c -o ../objects/lib_erase$o - -../objects/lib_flash$o : $(base)/lib_flash.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_flash.c -o ../objects/lib_flash$o - -../objects/lib_gen$o : ./lib_gen.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/lib_gen.c -o ../objects/lib_gen$o - -../objects/lib_getch$o : $(base)/lib_getch.c \ - $(HEADER_DEPS) \ - $(srcdir)/fifo_defs.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_getch.c -o ../objects/lib_getch$o - -../objects/lib_getstr$o : $(base)/lib_getstr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_getstr.c -o ../objects/lib_getstr$o - -../objects/lib_hline$o : $(base)/lib_hline.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_hline.c -o ../objects/lib_hline$o - -../objects/lib_immedok$o : $(base)/lib_immedok.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_immedok.c -o ../objects/lib_immedok$o - -../objects/lib_inchstr$o : $(base)/lib_inchstr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_inchstr.c -o ../objects/lib_inchstr$o - -../objects/lib_initscr$o : $(base)/lib_initscr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_initscr.c -o ../objects/lib_initscr$o - -../objects/lib_insch$o : $(base)/lib_insch.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insch.c -o ../objects/lib_insch$o - -../objects/lib_insdel$o : $(base)/lib_insdel.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insdel.c -o ../objects/lib_insdel$o - -../objects/lib_insnstr$o : $(base)/lib_insnstr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_insnstr.c -o ../objects/lib_insnstr$o - -../objects/lib_instr$o : $(base)/lib_instr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_instr.c -o ../objects/lib_instr$o - -../objects/lib_isendwin$o : $(base)/lib_isendwin.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_isendwin.c -o ../objects/lib_isendwin$o - -../objects/lib_leaveok$o : $(base)/lib_leaveok.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_leaveok.c -o ../objects/lib_leaveok$o - -../objects/lib_mouse$o : $(base)/lib_mouse.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_mouse.c -o ../objects/lib_mouse$o - -../objects/lib_move$o : $(base)/lib_move.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_move.c -o ../objects/lib_move$o - -../objects/lib_mvcur$o : $(serial)/lib_mvcur.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h \ - $(srcdir)/../progs/dump_entry.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_mvcur.c -o ../objects/lib_mvcur$o - -../objects/lib_mvwin$o : $(base)/lib_mvwin.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_mvwin.c -o ../objects/lib_mvwin$o - -../objects/lib_newterm$o : $(base)/lib_newterm.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_newterm.c -o ../objects/lib_newterm$o - -../objects/lib_newwin$o : $(base)/lib_newwin.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_newwin.c -o ../objects/lib_newwin$o - -../objects/lib_nl$o : $(base)/lib_nl.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_nl.c -o ../objects/lib_nl$o - -../objects/lib_overlay$o : $(base)/lib_overlay.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_overlay.c -o ../objects/lib_overlay$o - -../objects/lib_pad$o : $(base)/lib_pad.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_pad.c -o ../objects/lib_pad$o - -../objects/lib_printw$o : $(base)/lib_printw.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_printw.c -o ../objects/lib_printw$o - -../objects/lib_redrawln$o : $(base)/lib_redrawln.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_redrawln.c -o ../objects/lib_redrawln$o - -../objects/lib_refresh$o : $(base)/lib_refresh.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_refresh.c -o ../objects/lib_refresh$o - -../objects/lib_restart$o : $(base)/lib_restart.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_restart.c -o ../objects/lib_restart$o - -../objects/lib_scanw$o : $(base)/lib_scanw.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scanw.c -o ../objects/lib_scanw$o - -../objects/lib_screen$o : $(base)/lib_screen.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_screen.c -o ../objects/lib_screen$o - -../objects/lib_scroll$o : $(base)/lib_scroll.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scroll.c -o ../objects/lib_scroll$o - -../objects/lib_scrollok$o : $(base)/lib_scrollok.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scrollok.c -o ../objects/lib_scrollok$o - -../objects/lib_scrreg$o : $(base)/lib_scrreg.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_scrreg.c -o ../objects/lib_scrreg$o - -../objects/lib_set_term$o : $(base)/lib_set_term.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_set_term.c -o ../objects/lib_set_term$o - -../objects/lib_slk$o : $(base)/lib_slk.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slk.c -o ../objects/lib_slk$o - -../objects/lib_slkatr_set$o : $(base)/lib_slkatr_set.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatr_set.c -o ../objects/lib_slkatr_set$o - -../objects/lib_slkatrof$o : $(base)/lib_slkatrof.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatrof.c -o ../objects/lib_slkatrof$o - -../objects/lib_slkatron$o : $(base)/lib_slkatron.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatron.c -o ../objects/lib_slkatron$o - -../objects/lib_slkatrset$o : $(base)/lib_slkatrset.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkatrset.c -o ../objects/lib_slkatrset$o - -../objects/lib_slkattr$o : $(base)/lib_slkattr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkattr.c -o ../objects/lib_slkattr$o - -../objects/lib_slkclear$o : $(base)/lib_slkclear.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkclear.c -o ../objects/lib_slkclear$o - -../objects/lib_slkcolor$o : $(base)/lib_slkcolor.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkcolor.c -o ../objects/lib_slkcolor$o - -../objects/lib_slkinit$o : $(base)/lib_slkinit.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkinit.c -o ../objects/lib_slkinit$o - -../objects/lib_slklab$o : $(base)/lib_slklab.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slklab.c -o ../objects/lib_slklab$o - -../objects/lib_slkrefr$o : $(base)/lib_slkrefr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkrefr.c -o ../objects/lib_slkrefr$o - -../objects/lib_slkset$o : $(base)/lib_slkset.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slkset.c -o ../objects/lib_slkset$o - -../objects/lib_slktouch$o : $(base)/lib_slktouch.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_slktouch.c -o ../objects/lib_slktouch$o - -../objects/lib_touch$o : $(base)/lib_touch.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_touch.c -o ../objects/lib_touch$o - -../objects/lib_tstp$o : $(serial)/lib_tstp.c \ - $(HEADER_DEPS) \ - $(srcdir)/SigAction.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_tstp.c -o ../objects/lib_tstp$o - -../objects/lib_ungetch$o : $(base)/lib_ungetch.c \ - $(HEADER_DEPS) \ - $(srcdir)/fifo_defs.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_ungetch.c -o ../objects/lib_ungetch$o - -../objects/lib_vidattr$o : $(serial)/lib_vidattr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/lib_vidattr.c -o ../objects/lib_vidattr$o - -../objects/lib_vline$o : $(base)/lib_vline.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_vline.c -o ../objects/lib_vline$o - -../objects/lib_wattroff$o : $(base)/lib_wattroff.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_wattroff.c -o ../objects/lib_wattroff$o - -../objects/lib_wattron$o : $(base)/lib_wattron.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_wattron.c -o ../objects/lib_wattron$o - -../objects/lib_winch$o : $(base)/lib_winch.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_winch.c -o ../objects/lib_winch$o - -../objects/lib_window$o : $(base)/lib_window.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_window.c -o ../objects/lib_window$o - -../objects/link_test$o : ./link_test.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/link_test.c -o ../objects/link_test$o - -../objects/nc_panel$o : $(base)/nc_panel.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/nc_panel.c -o ../objects/nc_panel$o - -../objects/safe_sprintf$o : $(base)/safe_sprintf.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/safe_sprintf.c -o ../objects/safe_sprintf$o - -../objects/tty_update$o : $(serial)/tty_update.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(serial)/tty_update.c -o ../objects/tty_update$o - -../objects/varargs$o : $(trace)/varargs.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(trace)/varargs.c -o ../objects/varargs$o - -../objects/memmove$o : $(base)/memmove.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/memmove.c -o ../objects/memmove$o - -../objects/vsscanf$o : $(base)/vsscanf.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/vsscanf.c -o ../objects/vsscanf$o - -../objects/lib_freeall$o : $(base)/lib_freeall.c \ - $(HEADER_DEPS) \ - $(INCDIR)/tic.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_freeall.c -o ../objects/lib_freeall$o - -../objects/expanded$o : ./expanded.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/expanded.c -o ../objects/expanded$o - -../objects/legacy_coding$o : $(base)/legacy_coding.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/legacy_coding.c -o ../objects/legacy_coding$o - -../objects/lib_dft_fgbg$o : $(base)/lib_dft_fgbg.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/lib_dft_fgbg.c -o ../objects/lib_dft_fgbg$o - -../objects/lib_print$o : $(tinfo)/lib_print.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/lib_print.c -o ../objects/lib_print$o - -../objects/resizeterm$o : $(base)/resizeterm.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/resizeterm.c -o ../objects/resizeterm$o - -../objects/use_screen$o : $(tinfo)/use_screen.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(tinfo)/use_screen.c -o ../objects/use_screen$o - -../objects/use_window$o : $(base)/use_window.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/use_window.c -o ../objects/use_window$o - -../objects/wresize$o : $(base)/wresize.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../ncurses/$(base)/wresize.c -o ../objects/wresize$o - -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/deps/ncurses-5.9/ncurses/Makefile.in b/deps/ncurses-5.9/ncurses/Makefile.in deleted file mode 100644 index 45a26b9..0000000 --- a/deps/ncurses-5.9/ncurses/Makefile.in +++ /dev/null @@ -1,306 +0,0 @@ -# $Id: Makefile.in,v 1.130 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses source code. -# -# This makes the following: -# programs -# includes -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, -# and the programs with the configured default model. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -CF_MFLAGS = @cf_cv_makeflags@ -@SET_MAKE@ - -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ -top_srcdir = @top_srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -datadir = @datadir@ - -LIBTOOL = @LIBTOOL@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ -LIBTOOL_INSTALL = @LIB_INSTALL@ -LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ -LT_UNDEF = @LT_UNDEF@ - -INSTALL = @INSTALL@ -INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ -INSTALL_PROG = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -AR = @AR@ -ARFLAGS = @ARFLAGS@ -AWK = @AWK@ -LD = @LD@ -LN_S = @LN_S@ - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -CC = @CC@ -CPP = @CPP@ -CFLAGS = @CFLAGS@ - -INCDIR = $(srcdir)/../include -CPPFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) @CPPFLAGS@ - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -BUILD_CPPFLAGS = -I../include -DUSE_BUILD_CC @BUILD_CPPFLAGS@ -BUILD_CC = @BUILD_CC@ -BUILD_CCFLAGS = -DHAVE_CONFIG_H -I../ncurses -I$(srcdir) -I$(INCDIR) $(BUILD_CPPFLAGS) @BUILD_CFLAGS@ -BUILD_LDFLAGS = @BUILD_LDFLAGS@ -BUILD_LIBS = @BUILD_LIBS@ - -# The executables built in this directory are used for generating source that -# is compiled into the build, or are test-programs that are not installed. - -BUILD_EXEEXT = @BUILD_EXEEXT@ -x = @PROG_EXT@ - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -LINK = $(LIBTOOL) -LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) @SHLIB_LIST@ -TINFO_LIST = $(SHLIB_DIRS) @TINFO_LIST@ -TICS_LIST = $(SHLIB_DIRS) @TICS_LIST@ - -MK_SHARED_LIB = @MK_SHARED_LIB@ - -NCURSES_MAJOR = @NCURSES_MAJOR@ -NCURSES_MINOR = @NCURSES_MINOR@ -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ - -RANLIB = @LIB_PREP@ - -LIBRARIES = @LIBS_TO_MAKE@ - -LINT = @LINT@ -LINT_OPTS = @LINT_OPTS@ -LINT_LIBS = -lncurses @LIBS@ - -FALLBACK_LIST = @FALLBACK_LIST@ - -USE_BIG_STRINGS = @USE_BIG_STRINGS@ -TERMINFO_CAPS = $(top_srcdir)/include/@TERMINFO_CAPS@ - -TERMINFO = @TERMINFO@ -TERMINFO_SRC = @TERMINFO_SRC@ -TIC_PATH = @TIC_PATH@ - -AUTO_SRC = \ - ./codes.c \ - ./comp_captab.c \ - ./expanded.c \ - ./fallback.c \ - ./lib_gen.c \ - ./lib_keyname.c \ - ./link_test.c \ - ./names.c \ - ./unctrl.c \ - init_keytry.h \ - keys.list - -HEADER_DEPS = \ - $(srcdir)/curses.priv.h \ - ../include/ncurses_dll.h \ - ../include/ncurses_cfg.h \ - ../include/curses.h \ - $(INCDIR)/nc_panel.h \ - ../include/term.h \ - $(INCDIR)/term_entry.h \ - $(INCDIR)/nc_tparm.h \ - $(INCDIR)/nc_alloc.h \ - $(INCDIR)/nc_mingw.h - -TEST_DEPS = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@ -TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@ -TEST_LDFLAGS = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@ - -TEST_PROGS = \ - captoinfo$x \ - hardscroll$x \ - link_test$x \ - hashmap$x \ - lib_mvcur$x - -base = $(srcdir)/base -serial = $(srcdir)/tty -tinfo = $(srcdir)/tinfo -trace = $(srcdir)/trace -wide = $(srcdir)/widechar -win32con = $(srcdir)/win32con - -################################################################################ -all \ -libs :: $(AUTO_SRC) ../lib $(LIBRARIES) - -sources: $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -../lib : ; mkdir $@ - -./fallback.c : $(tinfo)/MKfallback.sh - sh -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) $(TIC_PATH) $(FALLBACK_LIST) >$@ - -./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h - sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@ - -init_keytry.h: make_keys$(BUILD_EXEEXT) keys.list - ./make_keys$(BUILD_EXEEXT) keys.list > $@ - -keys.list : $(tinfo)/MKkeys_list.sh - AWK=$(AWK) sh $(tinfo)/MKkeys_list.sh $(TERMINFO_CAPS) | sort >$@ - -make_keys$(BUILD_EXEEXT) : \ - $(tinfo)/make_keys.c \ - names.c - $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS) - -make_hash$(BUILD_EXEEXT) : \ - $(tinfo)/make_hash.c \ - ../include/hashsize.h - $(BUILD_CC) -o $@ $(BUILD_CCFLAGS) $(tinfo)/make_hash.c $(BUILD_LDFLAGS) $(BUILD_LIBS) - -./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh - sh -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@ - -./comp_captab.c: \ - make_hash$(BUILD_EXEEXT) \ - ../include/hashsize.h \ - $(tinfo)/MKcaptab.sh \ - $(tinfo)/MKcaptab.awk - sh -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(srcdir)/../include/@TERMINFO_CAPS@ > $@ - -./lib_keyname.c: keys.list $(base)/MKkeyname.awk - $(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@ - -./codes.c: $(tinfo)/MKcodes.awk - $(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/@TERMINFO_CAPS@ >$@ - -./names.c: $(tinfo)/MKnames.awk - $(AWK) -f $(tinfo)/MKnames.awk bigstrings=$(USE_BIG_STRINGS) $(srcdir)/../include/@TERMINFO_CAPS@ >$@ - -./unctrl.c: $(base)/MKunctrl.awk - echo | $(AWK) -f $(base)/MKunctrl.awk bigstrings=$(USE_BIG_STRINGS) >$@ - -tags: - $(CTAGS) *.[ch] */*.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] */*.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -rm -f $(TEST_PROGS) - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -rm -f make_keys$(BUILD_EXEEXT) - -rm -f make_hash$(BUILD_EXEEXT) - -rm -rf .libs - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -# These rules are used to allow "make -n" to work on a clean directory-tree -../include/hashsize.h \ -../include/parametrized.h \ -../include/term.h : - cd ../include; $(MAKE) $(CF_MFLAGS) - -# These rules build test-programs for the modules that have test-drivers -test_progs : $(TEST_PROGS) - -./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h - sh -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@ - -captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS) - @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS) - -hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS) - @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS) - -hashmap$x : $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_DEPS) - @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS) - -lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \ - ../@DFT_OBJ_SUBDIR@/dump_entry$o - @ECHO_LINK@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry$o $(TEST_LDFLAGS) - -link_test$x : ./link_test.c $(TEST_DEPS) \ - ../@DFT_OBJ_SUBDIR@/link_test$o - @ECHO_LINK@ $(CC) -o $@ $(CFLAGS_DEFAULT) ../@DFT_OBJ_SUBDIR@/link_test$o $(TEST_LDFLAGS) - -../@DFT_OBJ_SUBDIR@/dump_entry$o: - cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry$o - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/ncurses/README b/deps/ncurses-5.9/ncurses/README deleted file mode 100644 index cbde335..0000000 --- a/deps/ncurses-5.9/ncurses/README +++ /dev/null @@ -1,50 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2006,2009 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. -- -------------------------------------------------------------------------------- --- $Id: README,v 1.10 2009/06/27 14:44:30 tom Exp $ -------------------------------------------------------------------------------- -For discussion of the package internals, see hackguide.html in the doc/html -directory. - -------------------------------------------------------------------------------- -The llib-lXXXX files could be used as lint-library sources (and were, at one -time). However, they are actually used as a documentation aid to keep track -of changes to the public/private interfaces in ncurses. Most of the text in -these files is generated using cproto; some manual cleanup and adjustment of -types (to reflect #define's in curses.h) is needed. The functions listed in -the llib-lXXXX files do not correspond to the default configure options; some -additional ones are added to include "all" of the entrypoints for each of the -major configurations (normal, wide-character, threaded): - - --disable-macros - --disable-root-environ - --enable-expanded - --enable-getcap - --enable-getcap-cache - --enable-sp-funcs - --enable-termcap - --with-develop diff --git a/deps/ncurses-5.9/ncurses/base/README b/deps/ncurses-5.9/ncurses/base/README deleted file mode 100644 index 4677e42..0000000 --- a/deps/ncurses-5.9/ncurses/base/README +++ /dev/null @@ -1,35 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998,2006 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. -- -------------------------------------------------------------------------------- --- $Id: README,v 1.2 2006/04/22 22:19:37 tom Exp $ -------------------------------------------------------------------------------- - -The functions in this directory are the generic (not device-specific) modules -of ncurses. - -As a rule, these modules should not depend directly on term.h references and -associated terminfo function and variables. diff --git a/deps/ncurses-5.9/ncurses/base/keyok.c b/deps/ncurses-5.9/ncurses/base/keyok.c deleted file mode 100644 index 0eacf49..0000000 --- a/deps/ncurses-5.9/ncurses/base/keyok.c +++ /dev/null @@ -1,93 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2009 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: Thomas E. Dickey 1997-on * - * and: Juergen Pfeifer 2009 * - ****************************************************************************/ - -#include - -MODULE_ID("$Id: keyok.c,v 1.10 2009/10/24 22:15:47 tom Exp $") - -/* - * Enable (or disable) ncurses' interpretation of a keycode by adding (or - * removing) the corresponding 'tries' entry. - * - * Do this by storing a second tree of tries, which records the disabled keys. - * The simplest way to copy is to make a function that returns the string (with - * nulls set to 0200), then use that to reinsert the string into the - * corresponding tree. - */ - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(keyok) (NCURSES_SP_DCLx int c, bool flag) -{ - int code = ERR; - - T((T_CALLED("keyok(%p, %d,%d)"), (void *) SP_PARM, c, flag)); -#ifdef USE_TERM_DRIVER - code = CallDriver_2(sp, kyOk, c, flag); -#else - T((T_CALLED("keyok(%d,%d)"), c, flag)); - if (c >= 0) { - int count = 0; - char *s; - unsigned ch = (unsigned) c; - - if (flag) { - while ((s = _nc_expand_try(SP_PARM->_key_ok, ch, &count, 0)) != 0 - && _nc_remove_key(&(SP_PARM->_key_ok), ch)) { - code = _nc_add_to_try(&(SP_PARM->_keytry), s, ch); - free(s); - count = 0; - if (code != OK) - break; - } - } else { - while ((s = _nc_expand_try(SP_PARM->_keytry, ch, &count, 0)) != 0 - && _nc_remove_key(&(SP_PARM->_keytry), ch)) { - code = _nc_add_to_try(&(SP_PARM->_key_ok), s, ch); - free(s); - count = 0; - if (code != OK) - break; - } - } - } -#endif - returnCode(code); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -keyok(int c, bool flag) -{ - return NCURSES_SP_NAME(keyok) (CURRENT_SCREEN, c, flag); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_bkgd.c b/deps/ncurses-5.9/ncurses/base/lib_bkgd.c deleted file mode 100644 index 0396ba8..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_bkgd.c +++ /dev/null @@ -1,156 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Juergen Pfeifer 1997 * - * and: Sven Verdoolaege 2000 * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -#include - -MODULE_ID("$Id: lib_bkgd.c,v 1.43 2011/01/22 19:47:37 tom Exp $") - -/* - * Set the window's background information. - */ -#if USE_WIDEC_SUPPORT -NCURSES_EXPORT(void) -#else -static NCURSES_INLINE void -#endif -wbkgrndset(WINDOW *win, const ARG_CH_T ch) -{ - T((T_CALLED("wbkgdset(%p,%s)"), (void *) win, _tracech_t(ch))); - - if (win) { - attr_t off = AttrOf(win->_nc_bkgd); - attr_t on = AttrOf(CHDEREF(ch)); - - toggle_attr_off(WINDOW_ATTRS(win), off); - toggle_attr_on(WINDOW_ATTRS(win), on); - -#if NCURSES_EXT_COLORS - { - int pair; - - if ((pair = GetPair(win->_nc_bkgd)) != 0) - SET_WINDOW_PAIR(win, 0); - if ((pair = GetPair(CHDEREF(ch))) != 0) - SET_WINDOW_PAIR(win, pair); - } -#endif - - if (CharOf(CHDEREF(ch)) == L('\0')) { - SetChar(win->_nc_bkgd, BLANK_TEXT, AttrOf(CHDEREF(ch))); - if_EXT_COLORS(SetPair(win->_nc_bkgd, GetPair(CHDEREF(ch)))); - } else { - win->_nc_bkgd = CHDEREF(ch); - } -#if USE_WIDEC_SUPPORT - /* - * If we're compiled for wide-character support, _bkgrnd is the - * preferred location for the background information since it stores - * more than _bkgd. Update _bkgd each time we modify _bkgrnd, so the - * macro getbkgd() will work. - */ - { - cchar_t wch; - int tmp; - - (void) wgetbkgrnd(win, &wch); - tmp = _nc_to_char((wint_t) CharOf(wch)); - - win->_bkgd = (((tmp == EOF) ? ' ' : (chtype) tmp) - | (AttrOf(wch) & ALL_BUT_COLOR) - | (chtype) ColorPair(GET_WINDOW_PAIR(win))); - } -#endif - } - returnVoid; -} - -NCURSES_EXPORT(void) -wbkgdset(WINDOW *win, chtype ch) -{ - NCURSES_CH_T wch; - SetChar2(wch, ch); - wbkgrndset(win, CHREF(wch)); -} - -/* - * Set the window's background information and apply it to each cell. - */ -#if USE_WIDEC_SUPPORT -NCURSES_EXPORT(int) -#else -static NCURSES_INLINE int -#undef wbkgrnd -#endif -wbkgrnd(WINDOW *win, const ARG_CH_T ch) -{ - int code = ERR; - int x, y; - NCURSES_CH_T new_bkgd = CHDEREF(ch); - - T((T_CALLED("wbkgd(%p,%s)"), (void *) win, _tracech_t(ch))); - - if (win) { - NCURSES_CH_T old_bkgrnd; - wgetbkgrnd(win, &old_bkgrnd); - - (void) wbkgrndset(win, CHREF(new_bkgd)); - (void) wattrset(win, AttrOf(win->_nc_bkgd)); - - for (y = 0; y <= win->_maxy; y++) { - for (x = 0; x <= win->_maxx; x++) { - if (CharEq(win->_line[y].text[x], old_bkgrnd)) { - win->_line[y].text[x] = win->_nc_bkgd; - } else { - NCURSES_CH_T wch = win->_line[y].text[x]; - RemAttr(wch, (~(A_ALTCHARSET | A_CHARTEXT))); - win->_line[y].text[x] = _nc_render(win, wch); - } - } - } - touchwin(win); - _nc_synchook(win); - code = OK; - } - returnCode(code); -} - -NCURSES_EXPORT(int) -wbkgd(WINDOW *win, chtype ch) -{ - NCURSES_CH_T wch; - SetChar2(wch, ch); - return wbkgrnd(win, CHREF(wch)); -} diff --git a/deps/ncurses-5.9/ncurses/base/lib_color.c b/deps/ncurses-5.9/ncurses/base/lib_color.c deleted file mode 100644 index a5c181c..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_color.c +++ /dev/null @@ -1,859 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - * and: Juergen Pfeifer 2009 * - ****************************************************************************/ - -/* lib_color.c - * - * Handles color emulation of SYS V curses - */ - -#include -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -MODULE_ID("$Id: lib_color.c,v 1.98 2010/04/24 22:57:53 tom Exp $") - -#ifdef USE_TERM_DRIVER -#define CanChange InfoOf(SP_PARM).canchange -#define DefaultPalette InfoOf(SP_PARM).defaultPalette -#define HasColor InfoOf(SP_PARM).hascolor -#define InitColor InfoOf(SP_PARM).initcolor -#define MaxColors InfoOf(SP_PARM).maxcolors -#define MaxPairs InfoOf(SP_PARM).maxpairs -#define UseHlsPalette (DefaultPalette == _nc_hls_palette) -#else -#define CanChange can_change -#define DefaultPalette (hue_lightness_saturation ? hls_palette : cga_palette) -#define HasColor has_color -#define InitColor initialize_color -#define MaxColors max_colors -#define MaxPairs max_pairs -#define UseHlsPalette (hue_lightness_saturation) -#endif - -#ifndef 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 - * set_term()'s screen-switching logic. - */ -#if USE_REENTRANT -NCURSES_EXPORT(int) -NCURSES_PUBLIC_VAR(COLOR_PAIRS) (void) -{ - return SP ? SP->_pair_count : -1; -} -NCURSES_EXPORT(int) -NCURSES_PUBLIC_VAR(COLORS) (void) -{ - return SP ? SP->_color_count : -1; -} -#else -NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0; -NCURSES_EXPORT_VAR(int) COLORS = 0; -#endif -#endif /* !USE_TERM_DRIVER */ - -#define DATA(r,g,b) {r,g,b, 0,0,0, 0} - -#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts)) - -#define MAX_PALETTE 8 - -#define OkColorHi(n) (((n) < COLORS) && ((n) < maxcolors)) -#define InPalette(n) ((n) >= 0 && (n) < MAX_PALETTE) - -/* - * Given a RGB range of 0..1000, we'll normally set the individual values - * to about 2/3 of the maximum, leaving full-range for bold/bright colors. - */ -#define RGB_ON 680 -#define RGB_OFF 0 -/* *INDENT-OFF* */ -static const color_t cga_palette[] = -{ - /* R G B */ - DATA(RGB_OFF, RGB_OFF, RGB_OFF), /* COLOR_BLACK */ - DATA(RGB_ON, RGB_OFF, RGB_OFF), /* COLOR_RED */ - DATA(RGB_OFF, RGB_ON, RGB_OFF), /* COLOR_GREEN */ - DATA(RGB_ON, RGB_ON, RGB_OFF), /* COLOR_YELLOW */ - DATA(RGB_OFF, RGB_OFF, RGB_ON), /* COLOR_BLUE */ - DATA(RGB_ON, RGB_OFF, RGB_ON), /* COLOR_MAGENTA */ - DATA(RGB_OFF, RGB_ON, RGB_ON), /* COLOR_CYAN */ - DATA(RGB_ON, RGB_ON, RGB_ON), /* COLOR_WHITE */ -}; - -static const color_t hls_palette[] = -{ - /* H L S */ - DATA( 0, 0, 0), /* COLOR_BLACK */ - DATA( 120, 50, 100), /* COLOR_RED */ - DATA( 240, 50, 100), /* COLOR_GREEN */ - DATA( 180, 50, 100), /* COLOR_YELLOW */ - DATA( 330, 50, 100), /* COLOR_BLUE */ - DATA( 60, 50, 100), /* COLOR_MAGENTA */ - DATA( 300, 50, 100), /* COLOR_CYAN */ - DATA( 0, 50, 100), /* COLOR_WHITE */ -}; - -#ifdef 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 - -/* *INDENT-ON* */ - -/* - * Ensure that we use color pairs only when colors have been started, and also - * that the index is within the limits of the table which we allocated. - */ -#define ValidPair(pair) \ - ((SP_PARM != 0) && (pair >= 0) && (pair < SP_PARM->_pair_limit) && SP_PARM->_coloron) - -#if NCURSES_EXT_FUNCS -/* - * These are called from _nc_do_color(), which in turn is called from - * vidattr - so we have to assume that sp may be null. - */ -static int -default_fg(NCURSES_SP_DCL0) -{ - return (SP_PARM != 0) ? SP_PARM->_default_fg : COLOR_WHITE; -} - -static int -default_bg(NCURSES_SP_DCL0) -{ - return SP_PARM != 0 ? SP_PARM->_default_bg : COLOR_BLACK; -} -#else -#define default_fg(sp) COLOR_WHITE -#define default_bg(sp) COLOR_BLACK -#endif - -#ifndef 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 - * also used in the FreeBSD syscons. - */ -static int -toggled_colors(int c) -{ - if (c < 16) { - static const int table[] = - {0, 4, 2, 6, 1, 5, 3, 7, - 8, 12, 10, 14, 9, 13, 11, 15}; - c = table[c]; - } - return c; -} -#endif - -static void -set_background_color(NCURSES_SP_DCLx int bg, NCURSES_SP_OUTC outc) -{ -#ifdef USE_TERM_DRIVER - CallDriver_3(SP_PARM, color, FALSE, bg, outc); -#else - if (set_a_background) { - TPUTS_TRACE("set_a_background"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_a_background, bg), - 1, outc); - } else { - TPUTS_TRACE("set_background"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_background, toggled_colors(bg)), - 1, outc); - } -#endif -} - -static void -set_foreground_color(NCURSES_SP_DCLx int fg, NCURSES_SP_OUTC outc) -{ -#ifdef USE_TERM_DRIVER - CallDriver_3(SP_PARM, color, TRUE, fg, outc); -#else - if (set_a_foreground) { - TPUTS_TRACE("set_a_foreground"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_a_foreground, fg), - 1, outc); - } else { - TPUTS_TRACE("set_foreground"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_foreground, toggled_colors(fg)), - 1, outc); - } -#endif -} - -static void -init_color_table(NCURSES_SP_DCL0) -{ - const color_t *tp = DefaultPalette; - int n; - - assert(tp != 0); - - for (n = 0; n < COLORS; n++) { - if (InPalette(n)) { - SP_PARM->_color_table[n] = tp[n]; - } else { - SP_PARM->_color_table[n] = tp[n % MAX_PALETTE]; - if (UseHlsPalette) { - SP_PARM->_color_table[n].green = 100; - } else { - if (SP_PARM->_color_table[n].red) - SP_PARM->_color_table[n].red = 1000; - if (SP_PARM->_color_table[n].green) - SP_PARM->_color_table[n].green = 1000; - if (SP_PARM->_color_table[n].blue) - SP_PARM->_color_table[n].blue = 1000; - } - } - } -} - -/* - * Reset the color pair, e.g., to whatever color pair 0 is. - */ -static bool -reset_color_pair(NCURSES_SP_DCL0) -{ -#ifdef USE_TERM_DRIVER - return CallDriver(SP_PARM, rescol); -#else - bool result = FALSE; - - (void) SP_PARM; - if (orig_pair != 0) { - TPUTS_TRACE("orig_pair"); - putp(orig_pair); - result = TRUE; - } - return result; -#endif -} - -/* - * Reset color pairs and definitions. Actually we do both more to accommodate - * badly-written terminal descriptions than for the relatively rare case where - * someone has changed the color definitions. - */ -NCURSES_EXPORT(bool) -NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0) -{ - int result = FALSE; - - T((T_CALLED("_nc_reset_colors(%p)"), (void *) SP_PARM)); - if (SP_PARM->_color_defs > 0) - SP_PARM->_color_defs = -(SP_PARM->_color_defs); - if (reset_color_pair(NCURSES_SP_ARG)) - result = TRUE; - -#ifdef USE_TERM_DRIVER - result = CallDriver(SP_PARM, rescolors); -#else - if (orig_colors != 0) { - TPUTS_TRACE("orig_colors"); - putp(orig_colors); - result = TRUE; - } -#endif - returnBool(result); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(bool) -_nc_reset_colors(void) -{ - return NCURSES_SP_NAME(_nc_reset_colors) (CURRENT_SCREEN); -} -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0) -{ - int result = ERR; - int maxpairs = 0, maxcolors = 0; - - T((T_CALLED("start_color(%p)"), (void *) SP_PARM)); - - if (SP_PARM == 0) { - result = ERR; - } else if (SP_PARM->_coloron) { - result = OK; - } else { - maxpairs = MaxPairs; - maxcolors = MaxColors; - if (reset_color_pair(NCURSES_SP_ARG) != TRUE) { - set_foreground_color(NCURSES_SP_ARGx - default_fg(NCURSES_SP_ARG), - NCURSES_SP_NAME(_nc_outch)); - set_background_color(NCURSES_SP_ARGx - default_bg(NCURSES_SP_ARG), - NCURSES_SP_NAME(_nc_outch)); - } - - if (maxpairs > 0 && maxcolors > 0) { - SP_PARM->_pair_limit = maxpairs; - -#if NCURSES_EXT_FUNCS - /* - * 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)); -#endif - SP_PARM->_pair_count = maxpairs; - SP_PARM->_color_count = maxcolors; -#if !USE_REENTRANT - COLOR_PAIRS = maxpairs; - COLORS = maxcolors; -#endif - - SP_PARM->_color_pairs = TYPE_CALLOC(colorpair_t, SP_PARM->_pair_limit); - if (SP_PARM->_color_pairs != 0) { - SP_PARM->_color_table = TYPE_CALLOC(color_t, maxcolors); - if (SP_PARM->_color_table != 0) { - SP_PARM->_color_pairs[0] = PAIR_OF(default_fg(NCURSES_SP_ARG), - default_bg(NCURSES_SP_ARG)); - init_color_table(NCURSES_SP_ARG); - - T(("started color: COLORS = %d, COLOR_PAIRS = %d", - COLORS, COLOR_PAIRS)); - - SP_PARM->_coloron = 1; - result = OK; - } else if (SP_PARM->_color_pairs != 0) { - FreeAndNull(SP_PARM->_color_pairs); - } - } - } else { - result = OK; - } - } - returnCode(result); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -start_color(void) -{ - return NCURSES_SP_NAME(start_color) (CURRENT_SCREEN); -} -#endif - -/* This function was originally written by Daniel Weaver */ -static void -rgb2hls(short r, short g, short b, short *h, short *l, short *s) -/* convert RGB to HLS system */ -{ - short min, max, t; - - if ((min = g < r ? g : r) > b) - min = b; - if ((max = g > r ? g : r) < b) - max = b; - - /* calculate lightness */ - *l = (short) ((min + max) / 20); - - if (min == max) { /* black, white and all shades of gray */ - *h = 0; - *s = 0; - return; - } - - /* calculate saturation */ - if (*l < 50) - *s = (short) (((max - min) * 100) / (max + min)); - else - *s = (short) (((max - min) * 100) / (2000 - max - min)); - - /* calculate hue */ - if (r == max) - t = (short) (120 + ((g - b) * 60) / (max - min)); - else if (g == max) - t = (short) (240 + ((b - r) * 60) / (max - min)); - else - t = (short) (360 + ((r - g) * 60) / (max - min)); - - *h = t % 360; -} - -/* - * Extension (1997/1/18) - Allow negative f/b values to set default color - * values. - */ -NCURSES_EXPORT(int) -NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx short pair, short f, short b) -{ - colorpair_t result; - colorpair_t previous; - int maxcolors; - - T((T_CALLED("init_pair(%p,%d,%d,%d)"), (void *) SP_PARM, pair, f, b)); - - if (!ValidPair(pair)) - returnCode(ERR); - - maxcolors = MaxColors; - - previous = SP_PARM->_color_pairs[pair]; -#if NCURSES_EXT_FUNCS - if (SP_PARM->_default_color) { - bool isDefault = FALSE; - bool wasDefault = FALSE; - int default_pairs = SP_PARM->_default_pairs; - - /* - * Map caller's color number, e.g., -1, 0, 1, .., 7, etc., into - * internal unsigned values which we will store in the _color_pairs[] - * table. - */ - if (isDefaultColor(f)) { - f = COLOR_DEFAULT; - isDefault = TRUE; - } else if (!OkColorHi(f)) { - returnCode(ERR); - } - - if (isDefaultColor(b)) { - b = COLOR_DEFAULT; - isDefault = TRUE; - } else if (!OkColorHi(b)) { - returnCode(ERR); - } - - /* - * Check if the table entry that we are going to init/update used - * default colors. - */ - if ((FORE_OF(previous) == COLOR_DEFAULT) - || (BACK_OF(previous) == COLOR_DEFAULT)) - wasDefault = TRUE; - - /* - * Keep track of the number of entries in the color pair table which - * used a default color. - */ - if (isDefault && !wasDefault) { - ++default_pairs; - } else if (wasDefault && !isDefault) { - --default_pairs; - } - - /* - * As an extension, ncurses allows the pair number to exceed the - * terminal's color_pairs value for pairs using a default color. - * - * Note that updating a pair which used a default color with one - * that does not will decrement the count - and possibly interfere - * with sequentially adding new pairs. - */ - if (pair > (SP_PARM->_pair_count + default_pairs)) { - returnCode(ERR); - } - SP_PARM->_default_pairs = default_pairs; - } else -#endif - { - if ((f < 0) || !OkColorHi(f) - || (b < 0) || !OkColorHi(b) - || (pair < 1)) - returnCode(ERR); - } - - /* - * When a pair's content is changed, replace its colors (if pair was - * initialized before a screen update is performed replacing original - * pair colors with the new ones). - */ - result = PAIR_OF(f, b); - if (previous != 0 - && previous != result) { - int y, x; - - for (y = 0; y <= CurScreen(SP_PARM)->_maxy; y++) { - struct ldat *ptr = &(CurScreen(SP_PARM)->_line[y]); - bool changed = FALSE; - for (x = 0; x <= CurScreen(SP_PARM)->_maxx; x++) { - if (GetPair(ptr->text[x]) == pair) { - /* Set the old cell to zero to ensure it will be - updated on the next doupdate() */ - SetChar(ptr->text[x], 0, 0); - CHANGED_CELL(ptr, x); - changed = TRUE; - } - } - if (changed) - NCURSES_SP_NAME(_nc_make_oldhash) (NCURSES_SP_ARGx y); - } - } - - SP_PARM->_color_pairs[pair] = result; - if (GET_SCREEN_PAIR(SP_PARM) == pair) - SET_SCREEN_PAIR(SP_PARM, (chtype) (~0)); /* force attribute update */ - -#ifdef USE_TERM_DRIVER - CallDriver_3(SP_PARM, initpair, pair, f, b); -#else - if (initialize_pair && InPalette(f) && InPalette(b)) { - const color_t *tp = DefaultPalette; - - TR(TRACE_ATTRS, - ("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)", - pair, - tp[f].red, tp[f].green, tp[f].blue, - tp[b].red, tp[b].green, tp[b].blue)); - - TPUTS_TRACE("initialize_pair"); - putp(TPARM_7(initialize_pair, - pair, - tp[f].red, tp[f].green, tp[f].blue, - tp[b].red, tp[b].green, tp[b].blue)); - } -#endif - - returnCode(OK); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -init_pair(short pair, short f, short b) -{ - return NCURSES_SP_NAME(init_pair) (CURRENT_SCREEN, pair, f, b); -} -#endif - -#define okRGB(n) ((n) >= 0 && (n) <= 1000) - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx - short color, short r, short g, short b) -{ - int result = ERR; - int maxcolors; - - T((T_CALLED("init_color(%p,%d,%d,%d,%d)"), - (void *) SP_PARM, - color, - r, g, b)); - - if (SP_PARM == 0) - returnCode(result); - - maxcolors = MaxColors; - - if (InitColor - && SP_PARM->_coloron - && (color >= 0 && OkColorHi(color)) - && (okRGB(r) && okRGB(g) && okRGB(b))) { - - SP_PARM->_color_table[color].init = 1; - SP_PARM->_color_table[color].r = r; - SP_PARM->_color_table[color].g = g; - SP_PARM->_color_table[color].b = b; - - if (UseHlsPalette) { - rgb2hls(r, g, b, - &SP_PARM->_color_table[color].red, - &SP_PARM->_color_table[color].green, - &SP_PARM->_color_table[color].blue); - } else { - SP_PARM->_color_table[color].red = r; - SP_PARM->_color_table[color].green = g; - SP_PARM->_color_table[color].blue = b; - } - -#ifdef USE_TERM_DRIVER - CallDriver_4(SP_PARM, initcolor, color, r, g, b); -#else - TPUTS_TRACE("initialize_color"); - putp(TPARM_4(initialize_color, color, r, g, b)); -#endif - SP_PARM->_color_defs = max(color + 1, SP_PARM->_color_defs); - - result = OK; - } - returnCode(result); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -init_color(short color, short r, short g, short b) -{ - return NCURSES_SP_NAME(init_color) (CURRENT_SCREEN, color, r, g, b); -} -#endif - -NCURSES_EXPORT(bool) -NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL) -{ - T((T_CALLED("can_change_color(%p)"), (void *) SP_PARM)); - returnCode((CanChange != 0) ? TRUE : FALSE); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(bool) -can_change_color(void) -{ - return NCURSES_SP_NAME(can_change_color) (CURRENT_SCREEN); -} -#endif - -NCURSES_EXPORT(bool) -NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0) -{ - int code; - - (void) SP_PARM; - T((T_CALLED("has_colors()"))); -#ifdef USE_TERM_DRIVER - code = HasColor; -#else - code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs) - && (((set_foreground != NULL) - && (set_background != NULL)) - || ((set_a_foreground != NULL) - && (set_a_background != NULL)) - || set_color_pair)) ? TRUE : FALSE); -#endif - returnCode(code); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(bool) -has_colors(void) -{ - return NCURSES_SP_NAME(has_colors) (CURRENT_SCREEN); -} -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx - short color, short *r, short *g, short *b) -{ - int result = ERR; - int maxcolors; - - T((T_CALLED("color_content(%p,%d,%p,%p,%p)"), - (void *) SP_PARM, - color, - (void *) r, - (void *) g, - (void *) b)); - - if (SP_PARM == 0) - returnCode(result); - - maxcolors = MaxColors; - - if (color < 0 || !OkColorHi(color) || !SP_PARM->_coloron) { - result = ERR; - } else { - NCURSES_COLOR_T c_r = SP_PARM->_color_table[color].red; - NCURSES_COLOR_T c_g = SP_PARM->_color_table[color].green; - NCURSES_COLOR_T c_b = SP_PARM->_color_table[color].blue; - - if (r) - *r = c_r; - if (g) - *g = c_g; - if (b) - *b = c_b; - - TR(TRACE_ATTRS, ("...color_content(%d,%d,%d,%d)", - color, c_r, c_g, c_b)); - result = OK; - } - returnCode(result); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -color_content(short color, short *r, short *g, short *b) -{ - return NCURSES_SP_NAME(color_content) (CURRENT_SCREEN, color, r, g, b); -} -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx - short pair, short *f, short *b) -{ - int result; - - T((T_CALLED("pair_content(%p,%d,%p,%p)"), - (void *) SP_PARM, - pair, - (void *) f, - (void *) b)); - - if (!ValidPair(pair)) { - result = ERR; - } else { - NCURSES_COLOR_T fg = FORE_OF(SP_PARM->_color_pairs[pair]); - NCURSES_COLOR_T bg = BACK_OF(SP_PARM->_color_pairs[pair]); - -#if NCURSES_EXT_FUNCS - if (fg == COLOR_DEFAULT) - fg = -1; - if (bg == COLOR_DEFAULT) - bg = -1; -#endif - - if (f) - *f = fg; - if (b) - *b = bg; - - TR(TRACE_ATTRS, ("...pair_content(%p,%d,%d,%d)", - (void *) SP_PARM, - pair, - fg, bg)); - result = OK; - } - returnCode(result); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -pair_content(short pair, short *f, short *b) -{ - return NCURSES_SP_NAME(pair_content) (CURRENT_SCREEN, pair, f, b); -} -#endif - -NCURSES_EXPORT(void) -NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx - short old_pair, - short pair, - bool reverse, - NCURSES_SP_OUTC outc) -{ -#ifdef USE_TERM_DRIVER - CallDriver_4(SP_PARM, docolor, old_pair, pair, reverse, outc); -#else - NCURSES_COLOR_T fg = COLOR_DEFAULT; - NCURSES_COLOR_T bg = COLOR_DEFAULT; - NCURSES_COLOR_T old_fg, old_bg; - - if (!ValidPair(pair)) { - return; - } else if (pair != 0) { - if (set_color_pair) { - TPUTS_TRACE("set_color_pair"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_color_pair, pair), - 1, outc); - return; - } else if (SP_PARM != 0) { - pair_content((short) pair, &fg, &bg); - } - } - - if (old_pair >= 0 - && SP_PARM != 0 - && pair_content(old_pair, &old_fg, &old_bg) != ERR) { - if ((isDefaultColor(fg) && !isDefaultColor(old_fg)) - || (isDefaultColor(bg) && !isDefaultColor(old_bg))) { -#if NCURSES_EXT_FUNCS - /* - * A minor optimization - but extension. If "AX" is specified in - * the terminal description, treat it as screen's indicator of ECMA - * SGR 39 and SGR 49, and assume the two sequences are independent. - */ - if (SP_PARM->_has_sgr_39_49 - && isDefaultColor(old_bg) - && !isDefaultColor(old_fg)) { - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[39m", 1, outc); - } else if (SP_PARM->_has_sgr_39_49 - && isDefaultColor(old_fg) - && !isDefaultColor(old_bg)) { - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[49m", 1, outc); - } else -#endif - reset_color_pair(NCURSES_SP_ARG); - } - } else { - reset_color_pair(NCURSES_SP_ARG); - if (old_pair < 0) - return; - } - -#if NCURSES_EXT_FUNCS - if (isDefaultColor(fg)) - fg = (short) default_fg(NCURSES_SP_ARG); - if (isDefaultColor(bg)) - bg = (short) default_bg(NCURSES_SP_ARG); -#endif - - if (reverse) { - NCURSES_COLOR_T xx = fg; - fg = bg; - bg = xx; - } - - TR(TRACE_ATTRS, ("setting colors: pair = %d, fg = %d, bg = %d", pair, - fg, bg)); - - if (!isDefaultColor(fg)) { - set_foreground_color(NCURSES_SP_ARGx fg, outc); - } - if (!isDefaultColor(bg)) { - set_background_color(NCURSES_SP_ARGx bg, outc); - } -#endif -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(void) -_nc_do_color(short old_pair, short pair, bool reverse, NCURSES_OUTC outc) -{ - SetSafeOutcWrapper(outc); - NCURSES_SP_NAME(_nc_do_color) (CURRENT_SCREEN, - old_pair, - pair, - reverse, - _nc_outc_wrapper); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_insnstr.c b/deps/ncurses-5.9/ncurses/base/lib_insnstr.c deleted file mode 100644 index ce03e64..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_insnstr.c +++ /dev/null @@ -1,70 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2004,2009 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: Thomas E. Dickey * - ****************************************************************************/ - -/* -** lib_insnstr.c -** -** The routine winsnstr(). -** -*/ - -#include -#include - -MODULE_ID("$Id: lib_insnstr.c,v 1.3 2009/10/24 22:04:35 tom Exp $") - -NCURSES_EXPORT(int) -winsnstr(WINDOW *win, const char *s, int n) -{ - int code = ERR; - NCURSES_SIZE_T oy; - NCURSES_SIZE_T ox; - const unsigned char *str = (const unsigned char *) s; - const unsigned char *cp; - - T((T_CALLED("winsnstr(%p,%s,%d)"), (void *) win, _nc_visbufn(s, n), n)); - - if (win != 0 && str != 0) { - SCREEN *sp = _nc_screen_of(win); - - oy = win->_cury; - ox = win->_curx; - for (cp = str; *cp && (n <= 0 || (cp - str) < n); cp++) { - _nc_insert_ch(sp, win, (chtype) UChar(*cp)); - } - win->_curx = ox; - win->_cury = oy; - _nc_synchook(win); - code = OK; - } - returnCode(code); -} diff --git a/deps/ncurses-5.9/ncurses/base/lib_mouse.c b/deps/ncurses-5.9/ncurses/base/lib_mouse.c deleted file mode 100644 index dac0395..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_mouse.c +++ /dev/null @@ -1,1564 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - * and: Juergen Pfeifer 2008 * - ****************************************************************************/ - -/* - * This module is intended to encapsulate ncurses's interface to pointing - * devices. - * - * The primary method used is xterm's internal mouse-tracking facility. - * Additional methods depend on the platform: - * Alessandro Rubini's GPM server (Linux) - * sysmouse (FreeBSD) - * special-purpose mouse interface for OS/2 EMX. - * - * Notes for implementors 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 - * and filters events. The mediating data structure is a circular queue of - * MEVENT structures. - * - * 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) _nc_mouse_event() detects a series of incoming mouse reports - * and queues them, or (b) code in lib_getch.c detects the kmous prefix in - * the keyboard input stream and calls _nc_mouse_inline to queue up a series - * of adjacent mouse reports. - * - * In either case, _nc_mouse_parse() should be called after the series is - * accepted to parse the digested mouse reports (low-level MEVENTs) into - * a gesture (a high-level or composite MEVENT). - * - * Don't be too shy about adding new event types or modifiers, if you can find - * room for them in the 32-bit mask. The API is written so that users get - * feedback on which theoretical event types they won't see when they call - * mousemask. There's one bit per button (the RESERVED_EVENT bit) not being - * used yet, and a couple of bits open at the high end. - */ - -#ifdef __EMX__ -# include -# define INCL_DOS -# define INCL_VIO -# define INCL_KBD -# define INCL_MOU -# define INCL_DOSPROCESS -# include /* Need to include before the others */ -#endif - -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -MODULE_ID("$Id: lib_mouse.c,v 1.121 2011/01/22 19:47:47 tom Exp $") - -#include - -#if USE_GPM_SUPPORT -#include /* defines KG_* macros */ - -#ifdef HAVE_LIBDL -/* use dynamic loader to avoid linkage dependency */ -#include - -#ifdef RTLD_NOW -#define my_RTLD RTLD_NOW -#else -#ifdef RTLD_LAZY -#define my_RTLD RTLD_LAZY -#else -make an error -#endif -#endif /* RTLD_NOW */ -#endif /* HAVE_LIBDL */ - -#endif /* USE_GPM_SUPPORT */ - -#if USE_SYSMOUSE -#undef buttons /* symbol conflict in consio.h */ -#undef mouse_info /* symbol conflict in consio.h */ -#include -#if (__FreeBSD_version >= 400017) -#include -#include -#else -#include -#endif -#endif /* use_SYSMOUSE */ - -#define MY_TRACE TRACE_ICALLS|TRACE_IEVENT - -#define MASK_RELEASE(x) (mmask_t) NCURSES_MOUSE_MASK(x, 001) -#define MASK_PRESS(x) (mmask_t) NCURSES_MOUSE_MASK(x, 002) -#define MASK_CLICK(x) (mmask_t) NCURSES_MOUSE_MASK(x, 004) -#define MASK_DOUBLE_CLICK(x) (mmask_t) NCURSES_MOUSE_MASK(x, 010) -#define MASK_TRIPLE_CLICK(x) (mmask_t) NCURSES_MOUSE_MASK(x, 020) -#define MASK_RESERVED_EVENT(x) (mmask_t) NCURSES_MOUSE_MASK(x, 040) - -#if NCURSES_MOUSE_VERSION == 1 -#define BUTTON_CLICKED (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED | BUTTON4_CLICKED) -#define BUTTON_PRESSED (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED | BUTTON4_PRESSED) -#define BUTTON_RELEASED (BUTTON1_RELEASED | BUTTON2_RELEASED | BUTTON3_RELEASED | BUTTON4_RELEASED) -#define BUTTON_DOUBLE_CLICKED (BUTTON1_DOUBLE_CLICKED | BUTTON2_DOUBLE_CLICKED | BUTTON3_DOUBLE_CLICKED | BUTTON4_DOUBLE_CLICKED) -#define BUTTON_TRIPLE_CLICKED (BUTTON1_TRIPLE_CLICKED | BUTTON2_TRIPLE_CLICKED | BUTTON3_TRIPLE_CLICKED | BUTTON4_TRIPLE_CLICKED) -#define MAX_BUTTONS 4 -#else -#define BUTTON_CLICKED (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED | BUTTON4_CLICKED | BUTTON5_CLICKED) -#define BUTTON_PRESSED (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED | BUTTON4_PRESSED | BUTTON5_PRESSED) -#define BUTTON_RELEASED (BUTTON1_RELEASED | BUTTON2_RELEASED | BUTTON3_RELEASED | BUTTON4_RELEASED | BUTTON5_RELEASED) -#define BUTTON_DOUBLE_CLICKED (BUTTON1_DOUBLE_CLICKED | BUTTON2_DOUBLE_CLICKED | BUTTON3_DOUBLE_CLICKED | BUTTON4_DOUBLE_CLICKED | BUTTON5_DOUBLE_CLICKED) -#define BUTTON_TRIPLE_CLICKED (BUTTON1_TRIPLE_CLICKED | BUTTON2_TRIPLE_CLICKED | BUTTON3_TRIPLE_CLICKED | BUTTON4_TRIPLE_CLICKED | BUTTON5_TRIPLE_CLICKED) -#define MAX_BUTTONS 5 -#endif - -#define INVALID_EVENT -1 -#define NORMAL_EVENT 0 - -#if USE_GPM_SUPPORT - -#ifndef LIBGPM_SONAME -#define LIBGPM_SONAME "libgpm.so" -#endif - -#define GET_DLSYM(name) (my_##name = (TYPE_##name) dlsym(sp->_dlopen_gpm, #name)) - -#endif /* USE_GPM_SUPPORT */ - -static bool _nc_mouse_parse(SCREEN *, int); -static void _nc_mouse_resume(SCREEN *); -static void _nc_mouse_wrap(SCREEN *); - -/* maintain a circular list of mouse events */ - -#define FirstEV(sp) ((sp)->_mouse_events) -#define LastEV(sp) ((sp)->_mouse_events + EV_MAX - 1) - -#undef NEXT -#define NEXT(ep) ((ep >= LastEV(SP_PARM)) \ - ? FirstEV(SP_PARM) \ - : ep + 1) - -#undef PREV -#define PREV(ep) ((ep <= FirstEV(SP_PARM)) \ - ? LastEV(SP_PARM) \ - : ep - 1) - -#define IndexEV(sp, ep) (ep - FirstEV(sp)) - -#define RunParams(sp, eventp, runp) \ - (long) IndexEV(sp, runp), \ - (long) (IndexEV(sp, eventp) + (EV_MAX - 1)) % EV_MAX - -#ifdef TRACE -static void -_trace_slot(SCREEN *sp, const char *tag) -{ - MEVENT *ep; - - _tracef("%s", tag); - - for (ep = FirstEV(sp); ep <= LastEV(sp); ep++) - _tracef("mouse event queue slot %ld = %s", - (long) IndexEV(sp, ep), - _nc_tracemouse(sp, ep)); -} -#endif - -#if USE_EMX_MOUSE - -# define TOP_ROW 0 -# define LEFT_COL 0 - -# define M_FD(sp) sp->_mouse_fd - -static void -write_event(SCREEN *sp, int down, int button, int x, int y) -{ - char buf[6]; - unsigned long ignore; - - strncpy(buf, key_mouse, 3); /* should be "\033[M" */ - buf[3] = ' ' + (button - 1) + (down ? 0 : 0x40); - buf[4] = ' ' + x - LEFT_COL + 1; - buf[5] = ' ' + y - TOP_ROW + 1; - DosWrite(sp->_emxmouse_wfd, buf, 6, &ignore); -} - -static void -mouse_server(unsigned long param) -{ - SCREEN *sp = (SCREEN *) param; - unsigned short fWait = MOU_WAIT; - /* NOPTRRECT mourt = { 0,0,24,79 }; */ - MOUEVENTINFO mouev; - HMOU hmou; - unsigned short mask = MOUSE_BN1_DOWN | MOUSE_BN2_DOWN | MOUSE_BN3_DOWN; - int nbuttons = 3; - int oldstate = 0; - char err[80]; - unsigned long rc; - - /* open the handle for the mouse */ - if (MouOpen(NULL, &hmou) == 0) { - rc = MouSetEventMask(&mask, hmou); - if (rc) { /* retry with 2 buttons */ - mask = MOUSE_BN1_DOWN | MOUSE_BN2_DOWN; - rc = MouSetEventMask(&mask, hmou); - nbuttons = 2; - } - if (rc == 0 && MouDrawPtr(hmou) == 0) { - for (;;) { - /* sit and wait on the event queue */ - rc = MouReadEventQue(&mouev, &fWait, hmou); - if (rc) { - sprintf(err, "Error reading mouse queue, rc=%lu.\r\n", rc); - break; - } - if (!sp->_emxmouse_activated) - goto finish; - - /* - * OS/2 numbers a 3-button mouse inconsistently from other - * platforms: - * 1 = left - * 2 = right - * 3 = middle. - */ - if ((mouev.fs ^ oldstate) & MOUSE_BN1_DOWN) - write_event(sp, mouev.fs & MOUSE_BN1_DOWN, - sp->_emxmouse_buttons[1], mouev.col, mouev.row); - if ((mouev.fs ^ oldstate) & MOUSE_BN2_DOWN) - write_event(sp, mouev.fs & MOUSE_BN2_DOWN, - sp->_emxmouse_buttons[3], mouev.col, mouev.row); - if ((mouev.fs ^ oldstate) & MOUSE_BN3_DOWN) - write_event(sp, mouev.fs & MOUSE_BN3_DOWN, - sp->_emxmouse_buttons[2], mouev.col, mouev.row); - - finish: - oldstate = mouev.fs; - } - } else - sprintf(err, "Error setting event mask, buttons=%d, rc=%lu.\r\n", - nbuttons, rc); - - DosWrite(2, err, strlen(err), &rc); - MouClose(hmou); - } - DosExit(EXIT_THREAD, 0L); -} - -#endif /* USE_EMX_MOUSE */ - -#if USE_SYSMOUSE -static void -sysmouse_server(SCREEN *sp) -{ - struct mouse_info the_mouse; - MEVENT *work; - - the_mouse.operation = MOUSE_GETINFO; - if (sp != 0 - && sp->_mouse_fd >= 0 - && sp->_sysmouse_tail < FIFO_SIZE - && ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) { - - if (sp->_sysmouse_head > sp->_sysmouse_tail) { - sp->_sysmouse_tail = 0; - sp->_sysmouse_head = 0; - } - work = &(sp->_sysmouse_fifo[sp->_sysmouse_tail]); - memset(work, 0, sizeof(*work)); - work->id = NORMAL_EVENT; /* there's only one mouse... */ - - sp->_sysmouse_old_buttons = sp->_sysmouse_new_buttons; - sp->_sysmouse_new_buttons = the_mouse.u.data.buttons & 0x7; - - if (sp->_sysmouse_new_buttons) { - if (sp->_sysmouse_new_buttons & 1) - work->bstate |= BUTTON1_PRESSED; - if (sp->_sysmouse_new_buttons & 2) - work->bstate |= BUTTON2_PRESSED; - if (sp->_sysmouse_new_buttons & 4) - work->bstate |= BUTTON3_PRESSED; - } else { - if (sp->_sysmouse_old_buttons & 1) - work->bstate |= BUTTON1_RELEASED; - if (sp->_sysmouse_old_buttons & 2) - work->bstate |= BUTTON2_RELEASED; - if (sp->_sysmouse_old_buttons & 4) - work->bstate |= BUTTON3_RELEASED; - } - - /* for cosmetic bug in syscons.c on FreeBSD 3.[34] */ - the_mouse.operation = MOUSE_HIDE; - ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse); - the_mouse.operation = MOUSE_SHOW; - ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse); - - /* - * We're only interested if the button is pressed or released. - * FIXME: implement continuous event-tracking. - */ - if (sp->_sysmouse_new_buttons != sp->_sysmouse_old_buttons) { - sp->_sysmouse_tail += 1; - } - work->x = the_mouse.u.data.x / sp->_sysmouse_char_width; - work->y = the_mouse.u.data.y / sp->_sysmouse_char_height; - } -} - -static void -handle_sysmouse(int sig GCC_UNUSED) -{ - sysmouse_server(CURRENT_SCREEN); -} -#endif /* USE_SYSMOUSE */ - -#ifndef USE_TERM_DRIVER -#define xterm_kmous "\033[M" - -static void -init_xterm_mouse(SCREEN *sp) -{ - sp->_mouse_type = M_XTERM; - sp->_mouse_xtermcap = tigetstr("XM"); - if (!VALID_STRING(sp->_mouse_xtermcap)) - sp->_mouse_xtermcap = "\033[?1000%?%p1%{1}%=%th%el%;"; -} -#endif - -static void -enable_xterm_mouse(SCREEN *sp, int enable) -{ -#if USE_EMX_MOUSE - sp->_emxmouse_activated = enable; -#else - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "xterm-mouse", - TPARM_1(sp->_mouse_xtermcap, enable)); -#endif - sp->_mouse_active = enable; -} - -#if USE_GPM_SUPPORT -static bool -allow_gpm_mouse(void) -{ - bool result = FALSE; - - /* GPM does printf's without checking if stdout is a terminal */ - if (isatty(fileno(stdout))) { - char *list = getenv("NCURSES_GPM_TERMS"); - char *env = getenv("TERM"); - if (list != 0) { - if (env != 0) { - result = _nc_name_match(list, env, "|:"); - } - } else { - /* GPM checks the beginning of the $TERM variable to decide if it - * should pass xterm events through. There is no real advantage in - * allowing GPM to do this. Recent versions relax that check, and - * pretend that GPM can work with any terminal having the kmous - * capability. Perhaps that works for someone. If so, they can - * set the environment variable (above). - */ - if (env != 0 && strstr(env, "linux") != 0) { - result = TRUE; - } - } - } - return result; -} - -#ifdef HAVE_LIBDL -static void -unload_gpm_library(SCREEN *sp) -{ - if (sp->_dlopen_gpm != 0) { - T(("unload GPM library")); - sp->_mouse_gpm_loaded = FALSE; - sp->_mouse_fd = -1; - dlclose(sp->_dlopen_gpm); - sp->_dlopen_gpm = 0; - } -} - -static void -load_gpm_library(SCREEN *sp) -{ - sp->_mouse_gpm_found = FALSE; - if ((sp->_dlopen_gpm = dlopen(LIBGPM_SONAME, my_RTLD)) != 0) { - if (GET_DLSYM(gpm_fd) == 0 || - GET_DLSYM(Gpm_Open) == 0 || - GET_DLSYM(Gpm_Close) == 0 || - GET_DLSYM(Gpm_GetEvent) == 0) { - T(("GPM initialization failed: %s", dlerror())); - unload_gpm_library(sp); - } else { - sp->_mouse_gpm_found = TRUE; - sp->_mouse_gpm_loaded = TRUE; - } - } -} -#endif - -static bool -enable_gpm_mouse(SCREEN *sp, bool enable) -{ - bool result; - - T((T_CALLED("enable_gpm_mouse(%d)"), enable)); - - if (enable && !sp->_mouse_active) { -#ifdef HAVE_LIBDL - if (sp->_mouse_gpm_found && !sp->_mouse_gpm_loaded) { - load_gpm_library(sp); - } -#endif - if (sp->_mouse_gpm_loaded) { - int code; - - /* GPM: initialize connection to gpm server */ - sp->_mouse_gpm_connect.eventMask = GPM_DOWN | GPM_UP; - sp->_mouse_gpm_connect.defaultMask = - (unsigned short) (~(sp->_mouse_gpm_connect.eventMask | GPM_HARD)); - sp->_mouse_gpm_connect.minMod = 0; - sp->_mouse_gpm_connect.maxMod = - (unsigned short) (~((1 << KG_SHIFT) | - (1 << KG_SHIFTL) | - (1 << KG_SHIFTR))); - /* - * Note: GPM hardcodes \E[?1001s and \E[?1000h during its open. - * The former is recognized by wscons (SunOS), and the latter by - * xterm. Those will not show up in ncurses' traces. - */ - code = my_Gpm_Open(&sp->_mouse_gpm_connect, 0); - result = (code >= 0); - - /* - * GPM can return a -2 if it is trying to do something with xterm. - * Ignore that, since it conflicts with our use of stdin. - */ - if (code == -2) { - my_Gpm_Close(); - } - } else { - result = FALSE; - } - sp->_mouse_active = result; - T(("GPM open %s", result ? "succeeded" : "failed")); - } else { - if (!enable && sp->_mouse_active) { - /* GPM: close connection to gpm server */ - my_Gpm_Close(); - sp->_mouse_active = FALSE; - T(("GPM closed")); - } - result = enable; - } -#ifdef HAVE_LIBDL - if (!result) { - unload_gpm_library(sp); - } -#endif - returnBool(result); -} -#endif /* USE_GPM_SUPPORT */ - -static void -initialize_mousetype(SCREEN *sp) -{ - T((T_CALLED("initialize_mousetype()"))); - - /* Try gpm first, because gpm may be configured to run in xterm */ -#if USE_GPM_SUPPORT - if (allow_gpm_mouse()) { - if (!sp->_mouse_gpm_loaded) { -#ifdef HAVE_LIBDL - load_gpm_library(sp); -#else /* !HAVE_LIBDL */ - sp->_mouse_gpm_found = TRUE; - sp->_mouse_gpm_loaded = TRUE; -#endif - } - - /* - * The gpm_fd file-descriptor may be negative (xterm). So we have to - * maintain our notion of whether the mouse connection is active - * without testing the file-descriptor. - */ - if (sp->_mouse_gpm_found && enable_gpm_mouse(sp, TRUE)) { - sp->_mouse_type = M_GPM; - sp->_mouse_fd = *(my_gpm_fd); - T(("GPM mouse_fd %d", sp->_mouse_fd)); - returnVoid; - } - } -#endif /* USE_GPM_SUPPORT */ - - /* OS/2 VIO */ -#if USE_EMX_MOUSE - if (!sp->_emxmouse_thread - && strstr(TerminalOf(sp)->type.term_names, "xterm") == 0 - && key_mouse) { - int handles[2]; - - if (pipe(handles) < 0) { - perror("mouse pipe error"); - returnVoid; - } else { - int rc; - - if (!sp->_emxmouse_buttons[0]) { - char *s = getenv("MOUSE_BUTTONS_123"); - - sp->_emxmouse_buttons[0] = 1; - if (s && strlen(s) >= 3) { - sp->_emxmouse_buttons[1] = s[0] - '0'; - sp->_emxmouse_buttons[2] = s[1] - '0'; - sp->_emxmouse_buttons[3] = s[2] - '0'; - } else { - sp->_emxmouse_buttons[1] = 1; - sp->_emxmouse_buttons[2] = 3; - sp->_emxmouse_buttons[3] = 2; - } - } - sp->_emxmouse_wfd = handles[1]; - M_FD(sp) = handles[0]; - /* Needed? */ - setmode(handles[0], O_BINARY); - setmode(handles[1], O_BINARY); - /* Do not use CRT functions, we may single-threaded. */ - rc = DosCreateThread((unsigned long *) &sp->_emxmouse_thread, - mouse_server, (long) sp, 0, 8192); - if (rc) { - printf("mouse thread error %d=%#x", rc, rc); - } else { - sp->_mouse_type = M_XTERM; - } - returnVoid; - } - } -#endif /* USE_EMX_MOUSE */ - -#if USE_SYSMOUSE - { - struct mouse_info the_mouse; - char *the_device = 0; - - if (isatty(sp->_ifd)) - the_device = ttyname(sp->_ifd); - if (the_device == 0) - the_device = "/dev/tty"; - - sp->_mouse_fd = open(the_device, O_RDWR); - - if (sp->_mouse_fd >= 0) { - /* - * sysmouse does not have a usable user interface for obtaining - * mouse events. The logical way to proceed (reading data on a - * stream) only works if one opens the device as root. Even in - * that mode, careful examination shows we lose events - * occasionally. The interface provided for user programs is to - * establish a signal handler. really. - * - * Take over SIGUSR2 for this purpose since SIGUSR1 is more - * likely to be used by an application. getch() will have to - * handle the misleading EINTR's. - */ - signal(SIGUSR2, SIG_IGN); - the_mouse.operation = MOUSE_MODE; - the_mouse.u.mode.mode = 0; - the_mouse.u.mode.signal = SIGUSR2; - if (ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) { - signal(SIGUSR2, handle_sysmouse); - the_mouse.operation = MOUSE_SHOW; - ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse); - -#if defined(FBIO_MODEINFO) || defined(CONS_MODEINFO) /* FreeBSD > 2.x */ - { -#ifndef FBIO_GETMODE /* FreeBSD 3.x */ -#define FBIO_GETMODE CONS_GET -#define FBIO_MODEINFO CONS_MODEINFO -#endif /* FBIO_GETMODE */ - video_info_t the_video; - - if (ioctl(sp->_mouse_fd, - FBIO_GETMODE, - &the_video.vi_mode) != -1 - && ioctl(sp->_mouse_fd, - FBIO_MODEINFO, - &the_video) != -1) { - sp->_sysmouse_char_width = the_video.vi_cwidth; - sp->_sysmouse_char_height = the_video.vi_cheight; - } - } -#endif /* defined(FBIO_MODEINFO) || defined(CONS_MODEINFO) */ - - if (sp->_sysmouse_char_width <= 0) - sp->_sysmouse_char_width = 8; - if (sp->_sysmouse_char_height <= 0) - sp->_sysmouse_char_height = 16; - sp->_mouse_type = M_SYSMOUSE; - returnVoid; - } - } - } -#endif /* USE_SYSMOUSE */ - -#ifdef USE_TERM_DRIVER - CallDriver(sp, initmouse); -#else - /* we know how to recognize mouse events under "xterm" */ - if (key_mouse != 0) { - if (!strcmp(key_mouse, xterm_kmous) - || strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) { - init_xterm_mouse(sp); - } - } else if (strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) { - if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK) - init_xterm_mouse(sp); - } -#endif - - returnVoid; -} - -static bool -_nc_mouse_init(SCREEN *sp) -/* initialize the mouse */ -{ - bool result = FALSE; - int i; - - if (sp != 0) { - if (!sp->_mouse_initialized) { - sp->_mouse_initialized = TRUE; - - TR(MY_TRACE, ("_nc_mouse_init() called")); - - sp->_mouse_eventp = FirstEV(sp); - for (i = 0; i < EV_MAX; i++) - sp->_mouse_events[i].id = INVALID_EVENT; - - initialize_mousetype(sp); - - T(("_nc_mouse_init() set mousetype to %d", sp->_mouse_type)); - } - result = sp->_mouse_initialized; - } - return result; -} - -/* - * Query to see if there is a pending mouse event. This is called from - * fifo_push() in lib_getch.c - */ -static bool -_nc_mouse_event(SCREEN *sp) -{ - MEVENT *eventp = sp->_mouse_eventp; - bool result = FALSE; - - (void) eventp; - - switch (sp->_mouse_type) { - case M_XTERM: - /* xterm: never have to query, mouse events are in the keyboard stream */ -#if USE_EMX_MOUSE - { - char kbuf[3]; - - int i, res = read(M_FD(sp), &kbuf, 3); /* Eat the prefix */ - if (res != 3) - printf("Got %d chars instead of 3 for prefix.\n", res); - for (i = 0; i < res; i++) { - if (kbuf[i] != key_mouse[i]) - printf("Got char %d instead of %d for prefix.\n", - (int) kbuf[i], (int) key_mouse[i]); - } - result = TRUE; - } -#endif /* USE_EMX_MOUSE */ - break; - -#if USE_GPM_SUPPORT - case M_GPM: - if (sp->_mouse_fd >= 0) { - /* query server for event, return TRUE if we find one */ - Gpm_Event ev; - - switch (my_Gpm_GetEvent(&ev)) { - case 0: - /* Connection closed, drop the mouse. */ - sp->_mouse_fd = -1; - break; - case 1: - /* there's only one mouse... */ - eventp->id = NORMAL_EVENT; - - eventp->bstate = 0; - switch (ev.type & 0x0f) { - case (GPM_DOWN): - if (ev.buttons & GPM_B_LEFT) - eventp->bstate |= BUTTON1_PRESSED; - if (ev.buttons & GPM_B_MIDDLE) - eventp->bstate |= BUTTON2_PRESSED; - if (ev.buttons & GPM_B_RIGHT) - eventp->bstate |= BUTTON3_PRESSED; - break; - case (GPM_UP): - if (ev.buttons & GPM_B_LEFT) - eventp->bstate |= BUTTON1_RELEASED; - if (ev.buttons & GPM_B_MIDDLE) - eventp->bstate |= BUTTON2_RELEASED; - if (ev.buttons & GPM_B_RIGHT) - eventp->bstate |= BUTTON3_RELEASED; - break; - default: - break; - } - - eventp->x = ev.x - 1; - eventp->y = ev.y - 1; - eventp->z = 0; - - /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = NEXT(eventp); - result = TRUE; - break; - } - } - break; -#endif - -#if USE_SYSMOUSE - case M_SYSMOUSE: - if (sp->_sysmouse_head < sp->_sysmouse_tail) { - *eventp = sp->_sysmouse_fifo[sp->_sysmouse_head]; - - /* - * Point the fifo-head to the next possible location. If there - * are none, reset the indices. This may be interrupted by the - * signal handler, doing essentially the same reset. - */ - sp->_sysmouse_head += 1; - if (sp->_sysmouse_head == sp->_sysmouse_tail) { - sp->_sysmouse_tail = 0; - sp->_sysmouse_head = 0; - } - - /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = eventp = NEXT(eventp); - result = TRUE; - } - break; -#endif /* USE_SYSMOUSE */ - -#ifdef 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]; - - /* - * Point the fifo-head to the next possible location. If there - * are none, reset the indices. - */ - sp->_drv_mouse_head += 1; - if (sp->_drv_mouse_head == sp->_drv_mouse_tail) { - sp->_drv_mouse_tail = 0; - sp->_drv_mouse_head = 0; - } - - /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = eventp = NEXT(eventp); - result = TRUE; - } - break; -#endif - - case M_NONE: - break; - } - - return result; /* true if we found an event */ -} - -static bool -_nc_mouse_inline(SCREEN *sp) -/* mouse report received in the keyboard stream -- parse its info */ -{ - int b; - bool result = FALSE; - MEVENT *eventp = sp->_mouse_eventp; - - TR(MY_TRACE, ("_nc_mouse_inline() called")); - - if (sp->_mouse_type == M_XTERM) { - unsigned char kbuf[4]; - mmask_t prev; - size_t grabbed; - int res; - - /* This code requires that your xterm entry contain the kmous - * capability and that it be set to the \E[M documented in the - * Xterm Control Sequences reference. This is how we - * arrange for mouse events to be reported via a KEY_MOUSE - * return value from wgetch(). After this value is received, - * _nc_mouse_inline() gets called and is immediately - * responsible for parsing the mouse status information - * following the prefix. - * - * The following quotes from the ctrlseqs.ms document in the - * X distribution, describing the X mouse tracking feature: - * - * Parameters for all mouse tracking escape sequences - * generated by xterm encode numeric parameters in a single - * character as value+040. For example, ! is 1. - * - * On button press or release, xterm sends ESC [ M CbCxCy. - * The low two bits of Cb encode button information: 0=MB1 - * pressed, 1=MB2 pressed, 2=MB3 pressed, 3=release. The - * upper bits encode what modifiers were down when the - * button was pressed and are added together. 4=Shift, - * 8=Meta, 16=Control. Cx and Cy are the x and y coordinates - * of the mouse event. The upper left corner is (1,1). - * - * (End quote) By the time we get here, we've eaten the - * key prefix. FYI, the loop below is necessary because - * mouse click info isn't guaranteed to present as a - * single clist item. - * - * Wheel mice may return buttons 4 and 5 when the wheel is turned. - * We encode those as button presses. - */ -# if USE_PTHREADS_EINTR -# if USE_WEAK_SYMBOLS - if ((pthread_self) && (pthread_kill) && (pthread_equal)) -# endif - _nc_globals.read_thread = pthread_self(); -# endif - for (grabbed = 0; grabbed < 3; grabbed += (size_t) res) { - - /* For VIO mouse we add extra bit 64 to disambiguate button-up. */ -#if USE_EMX_MOUSE - res = (int) read(M_FD(sp) >= 0 ? M_FD(sp) : sp->_ifd, &kbuf, 3); -#else - res = (int) read(sp->_ifd, kbuf + grabbed, 3 - grabbed); -#endif - if (res == -1) - break; - } -#if USE_PTHREADS_EINTR - _nc_globals.read_thread = 0; -#endif - kbuf[3] = '\0'; - - TR(TRACE_IEVENT, - ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf)); - - /* there's only one mouse... */ - eventp->id = NORMAL_EVENT; - - /* processing code goes here */ - eventp->bstate = 0; - prev = PREV(eventp)->bstate; - -#if USE_EMX_MOUSE -#define PRESS_POSITION(n) \ - eventp->bstate = MASK_PRESS(n); \ - if (kbuf[0] & 0x40) \ - eventp->bstate = MASK_RELEASE(n) -#else -#define PRESS_POSITION(n) \ - eventp->bstate = (mmask_t) (prev & MASK_PRESS(n) \ - ? REPORT_MOUSE_POSITION \ - : MASK_PRESS(n)) -#endif - - switch (kbuf[0] & 0x3) { - case 0x0: - if (kbuf[0] & 64) - eventp->bstate = MASK_PRESS(4); - else - PRESS_POSITION(1); - break; - - case 0x1: -#if NCURSES_MOUSE_VERSION == 2 - if (kbuf[0] & 64) - eventp->bstate = MASK_PRESS(5); - else -#endif - PRESS_POSITION(2); - break; - - case 0x2: - PRESS_POSITION(3); - break; - - case 0x3: - /* - * Release events aren't reported for individual buttons, just for - * the button set as a whole. However, because there are normally - * no mouse events under xterm that intervene between press and - * release, we can infer the button actually released by looking at - * the previous event. - */ - if (prev & (BUTTON_PRESSED | BUTTON_RELEASED)) { - eventp->bstate = BUTTON_RELEASED; - for (b = 1; b <= MAX_BUTTONS; ++b) { - if (!(prev & MASK_PRESS(b))) - eventp->bstate &= ~MASK_RELEASE(b); - } - } else { - /* - * XFree86 xterm will return a stream of release-events to - * let the application know where the mouse is going, if the - * private mode 1002 or 1003 is enabled. - */ - eventp->bstate = REPORT_MOUSE_POSITION; - } - break; - } - result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE; - - if (kbuf[0] & 4) { - eventp->bstate |= BUTTON_SHIFT; - } - if (kbuf[0] & 8) { - eventp->bstate |= BUTTON_ALT; - } - if (kbuf[0] & 16) { - eventp->bstate |= BUTTON_CTRL; - } - - eventp->x = (kbuf[1] - ' ') - 1; - eventp->y = (kbuf[2] - ' ') - 1; - TR(MY_TRACE, - ("_nc_mouse_inline: primitive mouse-event %s has slot %ld", - _nc_tracemouse(sp, eventp), - (long) IndexEV(sp, eventp))); - - /* bump the next-free pointer into the circular list */ - sp->_mouse_eventp = NEXT(eventp); -#if 0 /* this return would be needed for QNX's mods to lib_getch.c */ - return (TRUE); -#endif - } - - return (result); -} - -static void -mouse_activate(SCREEN *sp, bool on) -{ - if (!on && !sp->_mouse_initialized) - return; - - if (!_nc_mouse_init(sp)) - return; - - if (on) { - - switch (sp->_mouse_type) { - case M_XTERM: -#if NCURSES_EXT_FUNCS - NCURSES_SP_NAME(keyok) (NCURSES_SP_ARGx KEY_MOUSE, on); -#endif - TPUTS_TRACE("xterm mouse initialization"); - enable_xterm_mouse(sp, 1); - break; -#if USE_GPM_SUPPORT - case M_GPM: - if (enable_gpm_mouse(sp, TRUE)) { - sp->_mouse_fd = *(my_gpm_fd); - T(("GPM mouse_fd %d", sp->_mouse_fd)); - } - break; -#endif -#if USE_SYSMOUSE - case M_SYSMOUSE: - signal(SIGUSR2, handle_sysmouse); - sp->_mouse_active = TRUE; - break; -#endif -#ifdef USE_TERM_DRIVER - case M_TERM_DRIVER: - sp->_mouse_active = TRUE; - break; -#endif - case M_NONE: - return; - } - /* Make runtime binding to cut down on object size of applications that - * do not use the mouse (e.g., 'clear'). - */ - sp->_mouse_event = _nc_mouse_event; - sp->_mouse_inline = _nc_mouse_inline; - sp->_mouse_parse = _nc_mouse_parse; - sp->_mouse_resume = _nc_mouse_resume; - sp->_mouse_wrap = _nc_mouse_wrap; - } else { - - switch (sp->_mouse_type) { - case M_XTERM: - TPUTS_TRACE("xterm mouse deinitialization"); - enable_xterm_mouse(sp, 0); - break; -#if USE_GPM_SUPPORT - case M_GPM: - enable_gpm_mouse(sp, FALSE); - break; -#endif -#if USE_SYSMOUSE - case M_SYSMOUSE: - signal(SIGUSR2, SIG_IGN); - sp->_mouse_active = FALSE; - break; -#endif -#ifdef USE_TERM_DRIVER - case M_TERM_DRIVER: - sp->_mouse_active = FALSE; - break; -#endif - case M_NONE: - return; - } - } - NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); -} - -/************************************************************************** - * - * Device-independent code - * - **************************************************************************/ - -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 *ep, *runp, *next, *prev = PREV(eventp); - int n; - int b; - bool merge; - - TR(MY_TRACE, ("_nc_mouse_parse(%d) called", runcount)); - - /* - * When we enter this routine, the event list next-free pointer - * points just past a run of mouse events that we know were separated - * in time by less than the critical click interval. The job of this - * routine is to collapse this run into a single higher-level event - * or gesture. - * - * We accomplish this in two passes. The first pass merges press/release - * pairs into click events. The second merges runs of click events into - * double or triple-click events. - * - * It's possible that the run may not resolve to a single event (for - * example, if the user quadruple-clicks). If so, leading events - * in the run are ignored. - * - * Note that this routine is independent of the format of the specific - * format of the pointing-device's reports. We can use it to parse - * gestures on anything that reports press/release events on a per- - * button basis, as long as the device-dependent mouse code puts stuff - * on the queue in MEVENT format. - */ - if (runcount == 1) { - TR(MY_TRACE, - ("_nc_mouse_parse: returning simple mouse event %s at slot %ld", - _nc_tracemouse(sp, prev), - (long) IndexEV(sp, prev))); - return (prev->id >= NORMAL_EVENT) - ? ((prev->bstate & sp->_mouse_mask) ? TRUE : FALSE) - : FALSE; - } - - /* find the start of the run */ - runp = eventp; - for (n = runcount; n > 0; n--) { - runp = PREV(runp); - } - -#ifdef TRACE - if (USE_TRACEF(TRACE_IEVENT)) { - _trace_slot(sp, "before mouse press/release merge:"); - _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d", - RunParams(sp, eventp, runp), - runcount); - _nc_unlock_global(tracef); - } -#endif /* TRACE */ - - /* first pass; merge press/release pairs */ - do { - merge = FALSE; - for (ep = runp; (next = NEXT(ep)) != eventp; ep = next) { - -#define MASK_CHANGED(x) (!(ep->bstate & MASK_PRESS(x)) \ - == !(next->bstate & MASK_RELEASE(x))) - - if (ep->x == next->x && ep->y == next->y - && (ep->bstate & BUTTON_PRESSED) - && MASK_CHANGED(1) - && MASK_CHANGED(2) - && MASK_CHANGED(3) - && MASK_CHANGED(4) -#if NCURSES_MOUSE_VERSION == 2 - && MASK_CHANGED(5) -#endif - ) { - for (b = 1; b <= MAX_BUTTONS; ++b) { - if ((sp->_mouse_mask & MASK_CLICK(b)) - && (ep->bstate & MASK_PRESS(b))) { - ep->bstate &= ~MASK_PRESS(b); - ep->bstate |= MASK_CLICK(b); - merge = TRUE; - } - } - if (merge) - next->id = INVALID_EVENT; - } - } - } while - (merge); - -#ifdef TRACE - if (USE_TRACEF(TRACE_IEVENT)) { - _trace_slot(sp, "before mouse click merge:"); - _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d", - RunParams(sp, eventp, runp), - runcount); - _nc_unlock_global(tracef); - } -#endif /* TRACE */ - - /* - * Second pass; merge click runs. At this point, click events are - * each followed by one invalid event. We merge click events - * forward in the queue. - * - * NOTE: There is a problem with this design! If the application - * allows enough click events to pile up in the circular queue so - * they wrap around, it will cheerfully merge the newest forward - * into the oldest, creating a bogus doubleclick and confusing - * the queue-traversal logic rather badly. Generally this won't - * happen, because calling getmouse() marks old events invalid and - * ineligible for merges. The true solution to this problem would - * be to timestamp each MEVENT and perform the obvious sanity check, - * but the timer element would have to have sub-second resolution, - * which would get us into portability trouble. - */ - do { - MEVENT *follower; - - merge = FALSE; - for (ep = runp; (next = NEXT(ep)) != eventp; ep = next) - if (ep->id != INVALID_EVENT) { - if (next->id != INVALID_EVENT) - continue; - follower = NEXT(next); - if (follower->id == INVALID_EVENT) - continue; - - /* merge click events forward */ - if ((ep->bstate & BUTTON_CLICKED) - && (follower->bstate & BUTTON_CLICKED)) { - for (b = 1; b <= MAX_BUTTONS; ++b) { - if ((sp->_mouse_mask & MASK_DOUBLE_CLICK(b)) - && (follower->bstate & MASK_CLICK(b))) { - follower->bstate &= ~MASK_CLICK(b); - follower->bstate |= MASK_DOUBLE_CLICK(b); - merge = TRUE; - } - } - if (merge) - ep->id = INVALID_EVENT; - } - - /* merge double-click events forward */ - if ((ep->bstate & BUTTON_DOUBLE_CLICKED) - && (follower->bstate & BUTTON_CLICKED)) { - for (b = 1; b <= MAX_BUTTONS; ++b) { - if ((sp->_mouse_mask & MASK_TRIPLE_CLICK(b)) - && (follower->bstate & MASK_CLICK(b))) { - follower->bstate &= ~MASK_CLICK(b); - follower->bstate |= MASK_TRIPLE_CLICK(b); - merge = TRUE; - } - } - if (merge) - ep->id = INVALID_EVENT; - } - } - } while - (merge); - -#ifdef TRACE - if (USE_TRACEF(TRACE_IEVENT)) { - _trace_slot(sp, "before mouse event queue compaction:"); - _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d", - RunParams(sp, eventp, runp), - runcount); - _nc_unlock_global(tracef); - } -#endif /* TRACE */ - - /* - * Now try to throw away trailing events flagged invalid, or that - * don't match the current event mask. - */ - for (; runcount; prev = PREV(eventp), runcount--) - if (prev->id == INVALID_EVENT || !(prev->bstate & sp->_mouse_mask)) { - sp->_mouse_eventp = eventp = prev; - } -#ifdef TRACE - if (USE_TRACEF(TRACE_IEVENT)) { - _trace_slot(sp, "after mouse event queue compaction:"); - _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d", - RunParams(sp, eventp, runp), - runcount); - _nc_unlock_global(tracef); - } - for (ep = runp; ep != eventp; ep = NEXT(ep)) - if (ep->id != INVALID_EVENT) - TR(MY_TRACE, - ("_nc_mouse_parse: returning composite mouse event %s at slot %ld", - _nc_tracemouse(sp, ep), - (long) IndexEV(sp, ep))); -#endif /* TRACE */ - - /* after all this, do we have a valid event? */ - return (PREV(eventp)->id != INVALID_EVENT); -} - -static void -_nc_mouse_wrap(SCREEN *sp) -/* release mouse -- called by endwin() before shellout/exit */ -{ - TR(MY_TRACE, ("_nc_mouse_wrap() called")); - - switch (sp->_mouse_type) { - case M_XTERM: - if (sp->_mouse_mask) - mouse_activate(sp, FALSE); - break; -#if USE_GPM_SUPPORT - /* GPM: pass all mouse events to next client */ - case M_GPM: - if (sp->_mouse_mask) - mouse_activate(sp, FALSE); - break; -#endif -#if USE_SYSMOUSE - case M_SYSMOUSE: - mouse_activate(sp, FALSE); - break; -#endif -#ifdef USE_TERM_DRIVER - case M_TERM_DRIVER: - mouse_activate(sp, FALSE); - break; -#endif - case M_NONE: - break; - } -} - -static void -_nc_mouse_resume(SCREEN *sp) -/* re-connect to mouse -- called by doupdate() after shellout */ -{ - TR(MY_TRACE, ("_nc_mouse_resume() called")); - - switch (sp->_mouse_type) { - case M_XTERM: - /* xterm: re-enable reporting */ - if (sp->_mouse_mask) - mouse_activate(sp, TRUE); - break; - -#if USE_GPM_SUPPORT - case M_GPM: - /* GPM: reclaim our event set */ - if (sp->_mouse_mask) - mouse_activate(sp, TRUE); - break; -#endif - -#if USE_SYSMOUSE - case M_SYSMOUSE: - mouse_activate(sp, TRUE); - break; -#endif - -#ifdef USE_TERM_DRIVER - case M_TERM_DRIVER: - mouse_activate(sp, TRUE); - break; -#endif - - case M_NONE: - break; - } -} - -/************************************************************************** - * - * Mouse interface entry points for the API - * - **************************************************************************/ - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(getmouse) (NCURSES_SP_DCLx MEVENT * aevent) -{ - int result = ERR; - - T((T_CALLED("getmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent)); - - if ((aevent != 0) && (SP_PARM != 0) && (SP_PARM->_mouse_type != M_NONE)) { - MEVENT *eventp = SP_PARM->_mouse_eventp; - /* compute the current-event pointer */ - MEVENT *prev = PREV(eventp); - - if (prev->id != INVALID_EVENT) { - /* copy the event we find there */ - *aevent = *prev; - - TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %ld", - _nc_tracemouse(SP_PARM, prev), - (long) IndexEV(SP_PARM, prev))); - - prev->id = INVALID_EVENT; /* so the queue slot becomes free */ - SP_PARM->_mouse_eventp = PREV(prev); - result = OK; - } - } - returnCode(result); -} - -#if NCURSES_SP_FUNCS -/* grab a copy of the current mouse event */ -NCURSES_EXPORT(int) -getmouse(MEVENT * aevent) -{ - return NCURSES_SP_NAME(getmouse) (CURRENT_SCREEN, aevent); -} -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(ungetmouse) (NCURSES_SP_DCLx MEVENT * aevent) -{ - int result = ERR; - - T((T_CALLED("ungetmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent)); - - if (aevent != 0 && SP_PARM != 0) { - MEVENT *eventp = SP_PARM->_mouse_eventp; - - /* 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); - - /* push back the notification event on the keyboard queue */ - result = NCURSES_SP_NAME(ungetch) (NCURSES_SP_ARGx KEY_MOUSE); - } - returnCode(result); -} - -#if NCURSES_SP_FUNCS -/* enqueue a synthesized mouse event to be seen by the next wgetch() */ -NCURSES_EXPORT(int) -ungetmouse(MEVENT * aevent) -{ - return NCURSES_SP_NAME(ungetmouse) (CURRENT_SCREEN, aevent); -} -#endif - -NCURSES_EXPORT(mmask_t) -NCURSES_SP_NAME(mousemask) (NCURSES_SP_DCLx mmask_t newmask, mmask_t * oldmask) -/* set the mouse event mask */ -{ - mmask_t result = 0; - - T((T_CALLED("mousemask(%p,%#lx,%p)"), - (void *) SP_PARM, - (unsigned long) newmask, - (void *) oldmask)); - - if (SP_PARM != 0) { - if (oldmask) - *oldmask = SP_PARM->_mouse_mask; - - if (newmask || SP_PARM->_mouse_initialized) { - _nc_mouse_init(SP_PARM); - if (SP_PARM->_mouse_type != M_NONE) { - result = newmask & - (REPORT_MOUSE_POSITION - | BUTTON_ALT - | BUTTON_CTRL - | BUTTON_SHIFT - | BUTTON_PRESSED - | BUTTON_RELEASED - | BUTTON_CLICKED - | BUTTON_DOUBLE_CLICKED - | BUTTON_TRIPLE_CLICKED); - - mouse_activate(SP_PARM, (bool) (result != 0)); - - SP_PARM->_mouse_mask = result; - } - } - } - returnMMask(result); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(mmask_t) -mousemask(mmask_t newmask, mmask_t * oldmask) -{ - return NCURSES_SP_NAME(mousemask) (CURRENT_SCREEN, newmask, oldmask); -} -#endif - -NCURSES_EXPORT(bool) -wenclose(const WINDOW *win, int y, int x) -/* check to see if given window encloses given screen location */ -{ - bool result = FALSE; - - T((T_CALLED("wenclose(%p,%d,%d)"), (const void *) win, y, x)); - - if (win != 0) { - y -= win->_yoffset; - result = ((win->_begy <= y && - win->_begx <= x && - (win->_begx + win->_maxx) >= x && - (win->_begy + win->_maxy) >= y) ? TRUE : FALSE); - } - returnBool(result); -} - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(mouseinterval) (NCURSES_SP_DCLx int maxclick) -/* set the maximum mouse interval within which to recognize a click */ -{ - int oldval; - - T((T_CALLED("mouseinterval(%p,%d)"), (void *) SP_PARM, maxclick)); - - if (SP_PARM != 0) { - oldval = SP_PARM->_maxclick; - if (maxclick >= 0) - SP_PARM->_maxclick = maxclick; - } else { - oldval = DEFAULT_MAXCLICK; - } - - returnCode(oldval); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -mouseinterval(int maxclick) -{ - return NCURSES_SP_NAME(mouseinterval) (CURRENT_SCREEN, maxclick); -} -#endif - -/* This may be used by other routines to ask for the existence of mouse - support */ -NCURSES_EXPORT(bool) -_nc_has_mouse(SCREEN *sp) -{ - return (((0 == sp) || (sp->_mouse_type == M_NONE)) ? FALSE : TRUE); -} - -NCURSES_EXPORT(bool) -NCURSES_SP_NAME(has_mouse) (NCURSES_SP_DCL0) -{ - return _nc_has_mouse(SP_PARM); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(bool) -has_mouse(void) -{ - return _nc_has_mouse(CURRENT_SCREEN); -} -#endif - -NCURSES_EXPORT(bool) -wmouse_trafo(const WINDOW *win, int *pY, int *pX, bool to_screen) -{ - bool result = FALSE; - - T((T_CALLED("wmouse_trafo(%p,%p,%p,%d)"), - (const void *) win, - (void *) pY, - (void *) pX, - to_screen)); - - if (win && pY && pX) { - int y = *pY; - int x = *pX; - - if (to_screen) { - y += win->_begy + win->_yoffset; - x += win->_begx; - if (wenclose(win, y, x)) - result = TRUE; - } else { - if (wenclose(win, y, x)) { - y -= (win->_begy + win->_yoffset); - x -= win->_begx; - result = TRUE; - } - } - if (result) { - *pX = x; - *pY = y; - } - } - returnBool(result); -} diff --git a/deps/ncurses-5.9/ncurses/base/lib_printw.c b/deps/ncurses-5.9/ncurses/base/lib_printw.c deleted file mode 100644 index 963181d..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_printw.c +++ /dev/null @@ -1,142 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2005,2009 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: Thomas E. Dickey 1997 * - ****************************************************************************/ - -/* -** lib_printw.c -** -** The routines printw(), wprintw() and friends. -** -*/ - -#include - -MODULE_ID("$Id: lib_printw.c,v 1.20 2009/10/24 22:07:03 tom Exp $") - -NCURSES_EXPORT(int) -printw(const char *fmt,...) -{ - va_list argp; - int code; - -#ifdef TRACE - va_start(argp, fmt); - T((T_CALLED("printw(%s%s)"), - _nc_visbuf(fmt), _nc_varargs(fmt, argp))); - va_end(argp); -#endif - - va_start(argp, fmt); - code = vwprintw(stdscr, fmt, argp); - va_end(argp); - - returnCode(code); -} - -NCURSES_EXPORT(int) -wprintw(WINDOW *win, const char *fmt,...) -{ - va_list argp; - int code; - -#ifdef TRACE - va_start(argp, fmt); - T((T_CALLED("wprintw(%p,%s%s)"), - (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argp))); - va_end(argp); -#endif - - va_start(argp, fmt); - code = vwprintw(win, fmt, argp); - va_end(argp); - - returnCode(code); -} - -NCURSES_EXPORT(int) -mvprintw(int y, int x, const char *fmt,...) -{ - va_list argp; - int code; - -#ifdef TRACE - va_start(argp, fmt); - T((T_CALLED("mvprintw(%d,%d,%s%s)"), - y, x, _nc_visbuf(fmt), _nc_varargs(fmt, argp))); - va_end(argp); -#endif - - if ((code = move(y, x)) != ERR) { - va_start(argp, fmt); - code = vwprintw(stdscr, fmt, argp); - va_end(argp); - } - returnCode(code); -} - -NCURSES_EXPORT(int) -mvwprintw(WINDOW *win, int y, int x, const char *fmt,...) -{ - va_list argp; - int code; - -#ifdef TRACE - va_start(argp, fmt); - T((T_CALLED("mvwprintw(%d,%d,%p,%s%s)"), - y, x, (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argp))); - va_end(argp); -#endif - - if ((code = wmove(win, y, x)) != ERR) { - va_start(argp, fmt); - code = vwprintw(win, fmt, argp); - va_end(argp); - } - returnCode(code); -} - -NCURSES_EXPORT(int) -vwprintw(WINDOW *win, const char *fmt, va_list argp) -{ - char *buf; - int code = ERR; -#if NCURSES_SP_FUNCS - SCREEN *sp = _nc_screen_of(win); -#endif - - 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) { - code = waddstr(win, buf); - } - returnCode(code); -} diff --git a/deps/ncurses-5.9/ncurses/base/lib_scanw.c b/deps/ncurses-5.9/ncurses/base/lib_scanw.c deleted file mode 100644 index a8621e6..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_scanw.c +++ /dev/null @@ -1,106 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2001,2009 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - ****************************************************************************/ - -/* -** lib_scanw.c -** -** The routines scanw(), wscanw() and friends. -** -*/ - -#include - -MODULE_ID("$Id: lib_scanw.c,v 1.12 2009/10/24 22:35:14 tom Exp $") - -NCURSES_EXPORT(int) -vwscanw(WINDOW *win, NCURSES_CONST char *fmt, va_list argp) -{ - char buf[BUFSIZ]; - - if (wgetnstr(win, buf, sizeof(buf) - 1) == ERR) - return (ERR); - - return (vsscanf(buf, fmt, argp)); -} - -NCURSES_EXPORT(int) -scanw(NCURSES_CONST char *fmt,...) -{ - int code; - va_list ap; - - T(("scanw(\"%s\",...) called", fmt)); - - va_start(ap, fmt); - code = vwscanw(stdscr, fmt, ap); - va_end(ap); - return (code); -} - -NCURSES_EXPORT(int) -wscanw(WINDOW *win, NCURSES_CONST char *fmt,...) -{ - int code; - va_list ap; - - T(("wscanw(%p,\"%s\",...) called", (void *) win, fmt)); - - va_start(ap, fmt); - code = vwscanw(win, fmt, ap); - va_end(ap); - return (code); -} - -NCURSES_EXPORT(int) -mvscanw(int y, int x, NCURSES_CONST char *fmt,...) -{ - int code; - va_list ap; - - va_start(ap, fmt); - code = (move(y, x) == OK) ? vwscanw(stdscr, fmt, ap) : ERR; - va_end(ap); - return (code); -} - -NCURSES_EXPORT(int) -mvwscanw(WINDOW *win, int y, int x, NCURSES_CONST char *fmt,...) -{ - int code; - va_list ap; - - va_start(ap, fmt); - code = (wmove(win, y, x) == OK) ? vwscanw(win, fmt, ap) : ERR; - va_end(ap); - return (code); -} diff --git a/deps/ncurses-5.9/ncurses/base/lib_screen.c b/deps/ncurses-5.9/ncurses/base/lib_screen.c deleted file mode 100644 index 27212b7..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_screen.c +++ /dev/null @@ -1,266 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2009 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996 on * - * and: Juergen Pfeifer 2009 * - ****************************************************************************/ - -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -MODULE_ID("$Id: lib_screen.c,v 1.38 2009/10/24 22:08:55 tom Exp $") - -#define MAX_SIZE 0x3fff /* 16k is big enough for a window or pad */ - -NCURSES_EXPORT(WINDOW *) -NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) -{ - WINDOW tmp, *nwin; - int n; - - T((T_CALLED("getwin(%p)"), (void *) filep)); - - clearerr(filep); - if (fread(&tmp, 1, sizeof(WINDOW), filep) < sizeof(WINDOW) - || ferror(filep) - || tmp._maxy == 0 - || tmp._maxy > MAX_SIZE - || tmp._maxx == 0 - || tmp._maxx > MAX_SIZE) { - returnWin(0); - } - - if (tmp._flags & _ISPAD) { - nwin = NCURSES_SP_NAME(newpad) (NCURSES_SP_ARGx - tmp._maxy + 1, - tmp._maxx + 1); - } else { - nwin = NCURSES_SP_NAME(newwin) (NCURSES_SP_ARGx - tmp._maxy + 1, - tmp._maxx + 1, 0, 0); - } - - /* - * We deliberately do not restore the _parx, _pary, or _parent - * fields, because the window hierarchy within which they - * made sense is probably gone. - */ - if (nwin != 0) { - size_t linesize = sizeof(NCURSES_CH_T) * (size_t) (tmp._maxx + 1); - - nwin->_curx = tmp._curx; - nwin->_cury = tmp._cury; - nwin->_maxy = tmp._maxy; - nwin->_maxx = tmp._maxx; - nwin->_begy = tmp._begy; - nwin->_begx = tmp._begx; - nwin->_yoffset = tmp._yoffset; - nwin->_flags = tmp._flags & ~(_SUBWIN); - - WINDOW_ATTRS(nwin) = WINDOW_ATTRS(&tmp); - nwin->_nc_bkgd = tmp._nc_bkgd; - - nwin->_notimeout = tmp._notimeout; - nwin->_clear = tmp._clear; - nwin->_leaveok = tmp._leaveok; - nwin->_idlok = tmp._idlok; - nwin->_idcok = tmp._idcok; - nwin->_immed = tmp._immed; - nwin->_scroll = tmp._scroll; - nwin->_sync = tmp._sync; - nwin->_use_keypad = tmp._use_keypad; - nwin->_delay = tmp._delay; - - nwin->_regtop = tmp._regtop; - nwin->_regbottom = tmp._regbottom; - - if (tmp._flags & _ISPAD) - nwin->_pad = tmp._pad; - - for (n = 0; n <= nwin->_maxy; n++) { - clearerr(filep); - if (fread(nwin->_line[n].text, 1, linesize, filep) < linesize - || ferror(filep)) { - delwin(nwin); - returnWin(0); - } - } - touchwin(nwin); - } - returnWin(nwin); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(WINDOW *) -getwin(FILE *filep) -{ - return NCURSES_SP_NAME(getwin) (CURRENT_SCREEN, filep); -} -#endif - -NCURSES_EXPORT(int) -putwin(WINDOW *win, FILE *filep) -{ - int code = ERR; - int n; - - T((T_CALLED("putwin(%p,%p)"), (void *) win, (void *) filep)); - - if (win != 0) { - size_t len = (size_t) (win->_maxx + 1); - - clearerr(filep); - if (fwrite(win, sizeof(WINDOW), 1, filep) != 1 - || ferror(filep)) - returnCode(code); - - for (n = 0; n <= win->_maxy; n++) { - if (fwrite(win->_line[n].text, - sizeof(NCURSES_CH_T), len, filep) != len - || ferror(filep)) { - returnCode(code); - } - } - code = OK; - } - returnCode(code); -} - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(scr_restore) (NCURSES_SP_DCLx const char *file) -{ - FILE *fp = 0; - - T((T_CALLED("scr_restore(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file))); - - if (_nc_access(file, R_OK) < 0 - || (fp = fopen(file, "rb")) == 0) { - returnCode(ERR); - } else { - delwin(NewScreen(SP_PARM)); - NewScreen(SP_PARM) = getwin(fp); -#if !USE_REENTRANT - newscr = NewScreen(SP_PARM); -#endif - (void) fclose(fp); - returnCode(OK); - } -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -scr_restore(const char *file) -{ - return NCURSES_SP_NAME(scr_restore) (CURRENT_SCREEN, file); -} -#endif - -NCURSES_EXPORT(int) -scr_dump(const char *file) -{ - FILE *fp = 0; - - T((T_CALLED("scr_dump(%s)"), _nc_visbuf(file))); - - if (_nc_access(file, W_OK) < 0 - || (fp = fopen(file, "wb")) == 0) { - returnCode(ERR); - } else { - (void) putwin(newscr, fp); - (void) fclose(fp); - returnCode(OK); - } -} - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(scr_init) (NCURSES_SP_DCLx const char *file) -{ - FILE *fp = 0; - int code = ERR; - - T((T_CALLED("scr_init(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file))); - - if (SP_PARM != 0 && -#ifdef USE_TERM_DRIVER - InfoOf(SP_PARM).caninit -#else - !(exit_ca_mode && non_rev_rmcup) -#endif - ) { - if (_nc_access(file, R_OK) >= 0 - && (fp = fopen(file, "rb")) != 0) { - delwin(CurScreen(SP_PARM)); - CurScreen(SP_PARM) = getwin(fp); -#if !USE_REENTRANT - curscr = CurScreen(SP_PARM); -#endif - (void) fclose(fp); - code = OK; - } - } - returnCode(code); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -scr_init(const char *file) -{ - return NCURSES_SP_NAME(scr_init) (CURRENT_SCREEN, file); -} -#endif - -NCURSES_EXPORT(int) -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) == ERR) { - returnCode(ERR); - } else { - delwin(NewScreen(SP_PARM)); - NewScreen(SP_PARM) = dupwin(curscr); -#if !USE_REENTRANT - newscr = NewScreen(SP_PARM); -#endif - returnCode(OK); - } -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -scr_set(const char *file) -{ - return NCURSES_SP_NAME(scr_set) (CURRENT_SCREEN, file); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkcolor.c b/deps/ncurses-5.9/ncurses/base/lib_slkcolor.c deleted file mode 100644 index c1211bc..0000000 --- a/deps/ncurses-5.9/ncurses/base/lib_slkcolor.c +++ /dev/null @@ -1,68 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2005,2009 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, 1998,2009 * - * and: Thomas E. Dickey 2005-on * - ****************************************************************************/ - -/* - * lib_slkcolor.c - * Soft key routines. - * Set the label's color - */ -#include - -MODULE_ID("$Id: lib_slkcolor.c,v 1.16 2009/10/24 22:12:21 tom Exp $") - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(slk_color) (NCURSES_SP_DCLx short color_pair_number) -{ - int code = ERR; - - T((T_CALLED("slk_color(%p,%d)"), (void *) SP_PARM, color_pair_number)); - - if (SP_PARM != 0 - && SP_PARM->_slk != 0 - && color_pair_number >= 0 - && color_pair_number < SP_PARM->_pair_limit) { - TR(TRACE_ATTRS, ("... current is %s", _tracech_t(CHREF(SP_PARM->_slk->attr)))); - SetPair(SP_PARM->_slk->attr, color_pair_number); - TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP_PARM->_slk->attr)))); - code = OK; - } - returnCode(code); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -slk_color(short color_pair_number) -{ - return NCURSES_SP_NAME(slk_color) (CURRENT_SCREEN, color_pair_number); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/base/memmove.c b/deps/ncurses-5.9/ncurses/base/memmove.c deleted file mode 100644 index 093ad72..0000000 --- a/deps/ncurses-5.9/ncurses/base/memmove.c +++ /dev/null @@ -1,69 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2000,2007 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. * - ****************************************************************************/ - -#include - -MODULE_ID("$Id: memmove.c,v 1.5 2007/08/11 17:12:43 tom Exp $") - -/**************************************************************************** - * Author: Thomas E. Dickey 1998 * - ****************************************************************************/ - -#if USE_MY_MEMMOVE -#define DST ((char *)s1) -#define SRC ((const char *)s2) -NCURSES_EXPORT(void *) -_nc_memmove(void *s1, const void *s2, size_t n) -{ - if (n != 0) { - if ((DST + n > SRC) && (SRC + n > DST)) { - static char *bfr; - static size_t length; - register size_t j; - if (length < n) { - length = (n * 3) / 2; - bfr = typeRealloc(char, length, bfr); - } - for (j = 0; j < n; j++) - bfr[j] = SRC[j]; - s2 = bfr; - } - while (n-- != 0) - DST[n] = SRC[n]; - } - return s1; -} -#else -extern -NCURSES_EXPORT(void) -_nc_memmove(void); /* quiet's gcc warning */ -NCURSES_EXPORT(void) -_nc_memmove(void) -{ -} /* nonempty for strict ANSI compilers */ -#endif /* USE_MY_MEMMOVE */ diff --git a/deps/ncurses-5.9/ncurses/codes.c b/deps/ncurses-5.9/ncurses/codes.c deleted file mode 100644 index beb78d7..0000000 --- a/deps/ncurses-5.9/ncurses/codes.c +++ /dev/null @@ -1,675 +0,0 @@ -/* This file was generated by MKcodes.awk */ - -#include - -#define IT NCURSES_CONST char * const - - -#if BROKEN_LINKER || USE_REENTRANT - -static const char _nc_code_blob[] = -"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" "in\0" \ -"da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" "xo\0" "nx\0" \ -"5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" "YA\0" "YB\0" "YC\0" \ -"YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" "lm\0" "sg\0" "pb\0" "vt\0" \ -"ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" "Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" \ -"Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" "Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" \ -"Yn\0" "BT\0" "Yo\0" "Yp\0" "bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" \ -"cd\0" "ch\0" "CC\0" "cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" \ -"ll\0" "up\0" "vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" \ -"dm\0" "mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \ -"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" "i3\0" \ -"if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" "kL\0" "kd\0" \ -"kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" "k4\0" "k5\0" "k6\0" \ -"k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" "kH\0" "kN\0" "kP\0" "kr\0" \ -"kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" "l0\0" "l1\0" "la\0" "l2\0" "l3\0" \ -"l4\0" "l5\0" "l6\0" "l7\0" "l8\0" "l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" \ -"DL\0" "DO\0" "IC\0" "SF\0" "AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" \ -"px\0" "ps\0" "pf\0" "po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" \ -"sc\0" "sf\0" "sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" \ -"K1\0" "K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \ -"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" "@3\0" \ -"@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" "%3\0" "%4\0" \ -"%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" "&3\0" "&4\0" "&5\0" \ -"&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" "*3\0" "*4\0" "*5\0" "*6\0" \ -"*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" "#3\0" "#4\0" "%a\0" "%b\0" "%c\0" \ -"%d\0" "%e\0" "%f\0" "%g\0" "%h\0" "%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" \ -"F1\0" "F2\0" "F3\0" "F4\0" "F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" \ -"FC\0" "FD\0" "FE\0" "FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" \ -"FN\0" "FO\0" "FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" \ -"FY\0" "FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \ -"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" "MC\0" \ -"ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" "DI\0" "QD\0" \ -"TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" "u3\0" "u4\0" "u5\0" \ -"u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" "Ip\0" "sp\0" "Sf\0" "Sb\0" \ -"ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" "ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" \ -"ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" "ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" \ -"ZW\0" "ZX\0" "ZY\0" "ZZ\0" "Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" \ -"Zh\0" "Zi\0" "Zj\0" "Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" \ -"Zs\0" "Zt\0" "Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" \ -"AF\0" "AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \ -"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" "S3\0" \ -"S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" "Xt\0" "Xv\0" \ -"sA\0" "sL\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" "dC\0" "dN\0" "nl\0" \ -"bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" "ma\0" "pt\0" "xr\0" "G2\0" \ -"G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" "GD\0" "GH\0" "GV\0" "GC\0" "ml\0" \ -"mu\0" "bx\0" ; -static const short _nc_offset_boolcodes[] = { -0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30, 33, 36, 39, 42, -45, 48, 51, 54, 57, 60, 63, 66, 69, 72, 75, 78, 81, 84, 87, -90, 93, 96, 99, 102, 105, 108, 1401, 1404, 1407, 1422, 1425, 1443, 1446, }; - -static NCURSES_CONST char ** ptr_boolcodes = 0; - -static const short _nc_offset_numcodes[] = { -111, 114, 117, 120, 123, 126, -129, 132, 135, 138, 141, 144, 147, 150, 153, 156, 159, 162, -165, 168, 171, 174, 177, 180, 183, 186, 189, 192, 195, 198, -201, 204, 207, 1398, 1410, 1413, 1428, 1431, 1434, }; - -static NCURSES_CONST char ** ptr_numcodes = 0; - -static const short _nc_offset_strcodes[] = { -210, 213, 216, 219, 222, 225, 228, 231, 234, -237, 240, 243, 246, 249, 252, 255, 258, 261, 264, 267, 270, -273, 276, 279, 282, 285, 288, 291, 294, 297, 300, 303, 306, -309, 312, 315, 318, 321, 324, 327, 330, 333, 336, 339, 342, -345, 348, 351, 354, 357, 360, 363, 366, 369, 372, 375, 378, -381, 384, 387, 390, 393, 396, 399, 402, 405, 408, 411, 414, -417, 420, 423, 426, 429, 432, 435, 438, 441, 444, 447, 450, -453, 456, 459, 462, 465, 468, 471, 474, 477, 480, 483, 486, -489, 492, 495, 498, 501, 504, 507, 510, 513, 516, 519, 522, -525, 528, 531, 534, 537, 540, 543, 546, 549, 552, 555, 558, -561, 564, 567, 570, 573, 576, 579, 582, 585, 588, 591, 594, -597, 600, 603, 606, 609, 612, 615, 618, 621, 624, 627, 630, -633, 636, 639, 642, 645, 648, 651, 654, 657, 660, 663, 666, -669, 672, 675, 678, 681, 684, 687, 690, 693, 696, 699, 702, -705, 708, 711, 714, 717, 720, 723, 726, 729, 732, 735, 738, -741, 744, 747, 750, 753, 756, 759, 762, 765, 768, 771, 774, -777, 780, 783, 786, 789, 792, 795, 798, 801, 804, 807, 810, -813, 816, 819, 822, 825, 828, 831, 834, 837, 840, 843, 846, -849, 852, 855, 858, 861, 864, 867, 870, 873, 876, 879, 882, -885, 888, 891, 894, 897, 900, 903, 906, 909, 912, 915, 918, -921, 924, 927, 930, 933, 936, 939, 942, 945, 948, 951, 954, -957, 960, 963, 966, 969, 972, 975, 978, 981, 984, 987, 990, -993, 996, 999, 1002, 1005, 1008, 1011, 1014, 1017, 1020, 1023, -1026, 1029, 1032, 1035, 1038, 1041, 1044, 1047, 1050, 1053, 1056, -1059, 1062, 1065, 1068, 1071, 1074, 1077, 1080, 1083, 1086, 1089, -1092, 1095, 1098, 1101, 1104, 1107, 1110, 1113, 1116, 1119, 1122, -1125, 1128, 1131, 1134, 1137, 1140, 1143, 1146, 1149, 1152, 1155, -1158, 1161, 1164, 1167, 1170, 1173, 1176, 1179, 1182, 1185, 1188, -1191, 1194, 1197, 1200, 1203, 1206, 1209, 1212, 1215, 1218, 1221, -1224, 1227, 1230, 1233, 1236, 1239, 1242, 1245, 1248, 1251, 1254, -1257, 1260, 1263, 1266, 1269, 1272, 1275, 1278, 1281, 1284, 1287, -1290, 1293, 1296, 1299, 1302, 1305, 1308, 1311, 1314, 1317, 1320, -1323, 1326, 1329, 1332, 1335, 1338, 1341, 1344, 1347, 1350, 1353, -1356, 1359, 1362, 1365, 1368, 1371, 1374, 1377, 1380, 1383, 1386, -1389, 1392, 1395, 1416, 1419, -1437, 1440, 1449, 1452, -1455, 1458, 1461, 1464, 1467, 1470, 1473, 1476, 1479, 1482, 1485, -1488, }; - -static NCURSES_CONST char ** ptr_strcodes = 0; - - -static IT * -alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size) -{ - if (*value == 0) { - if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) { - unsigned n; - for (n = 0; n < size; ++n) { - (*value)[n] = (NCURSES_CONST char *) _nc_code_blob + offsets[n]; - } - } - } - return *value; -} - -#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API NCURSES_PUBLIC_VAR(it)(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); } - -/* remove public definition which conflicts with FIX() */ -#undef boolcodes -#undef numcodes -#undef strcodes - -/* add local definition */ -FIX(boolcodes) -FIX(numcodes) -FIX(strcodes) - -/* restore the public definition */ - -#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); } -#define boolcodes NCURSES_PUBLIC_VAR(boolcodes()) -#define numcodes NCURSES_PUBLIC_VAR(numcodes()) -#define strcodes NCURSES_PUBLIC_VAR(strcodes()) - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_codes_leaks(void) -{ -FREE_FIX(boolcodes) -FREE_FIX(numcodes) -FREE_FIX(strcodes) -} -#endif - -#else - -#define DCL(it) NCURSES_EXPORT_VAR(IT) it[] - -DCL(boolcodes) = { - "bw", - "am", - "xb", - "xs", - "xn", - "eo", - "gn", - "hc", - "km", - "hs", - "in", - "da", - "db", - "mi", - "ms", - "os", - "es", - "xt", - "hz", - "ul", - "xo", - "nx", - "5i", - "HC", - "NR", - "NP", - "ND", - "cc", - "ut", - "hl", - "YA", - "YB", - "YC", - "YD", - "YE", - "YF", - "YG", - "bs", - "ns", - "nc", - "MT", - "NL", - "pt", - "xr", - - (NCURSES_CONST char *)0, -}; - -DCL(numcodes) = { - "co", - "it", - "li", - "lm", - "sg", - "pb", - "vt", - "ws", - "Nl", - "lh", - "lw", - "ma", - "MW", - "Co", - "pa", - "NC", - "Ya", - "Yb", - "Yc", - "Yd", - "Ye", - "Yf", - "Yg", - "Yh", - "Yi", - "Yj", - "Yk", - "Yl", - "Ym", - "Yn", - "BT", - "Yo", - "Yp", - "ug", - "dC", - "dN", - "dB", - "dT", - "kn", - - (NCURSES_CONST char *)0, -}; - -DCL(strcodes) = { - "bt", - "bl", - "cr", - "cs", - "ct", - "cl", - "ce", - "cd", - "ch", - "CC", - "cm", - "do", - "ho", - "vi", - "le", - "CM", - "ve", - "nd", - "ll", - "up", - "vs", - "dc", - "dl", - "ds", - "hd", - "as", - "mb", - "md", - "ti", - "dm", - "mh", - "im", - "mk", - "mp", - "mr", - "so", - "us", - "ec", - "ae", - "me", - "te", - "ed", - "ei", - "se", - "ue", - "vb", - "ff", - "fs", - "i1", - "is", - "i3", - "if", - "ic", - "al", - "ip", - "kb", - "ka", - "kC", - "kt", - "kD", - "kL", - "kd", - "kM", - "kE", - "kS", - "k0", - "k1", - "k;", - "k2", - "k3", - "k4", - "k5", - "k6", - "k7", - "k8", - "k9", - "kh", - "kI", - "kA", - "kl", - "kH", - "kN", - "kP", - "kr", - "kF", - "kR", - "kT", - "ku", - "ke", - "ks", - "l0", - "l1", - "la", - "l2", - "l3", - "l4", - "l5", - "l6", - "l7", - "l8", - "l9", - "mo", - "mm", - "nw", - "pc", - "DC", - "DL", - "DO", - "IC", - "SF", - "AL", - "LE", - "RI", - "SR", - "UP", - "pk", - "pl", - "px", - "ps", - "pf", - "po", - "rp", - "r1", - "r2", - "r3", - "rf", - "rc", - "cv", - "sc", - "sf", - "sr", - "sa", - "st", - "wi", - "ta", - "ts", - "uc", - "hu", - "iP", - "K1", - "K3", - "K2", - "K4", - "K5", - "pO", - "rP", - "ac", - "pn", - "kB", - "SX", - "RX", - "SA", - "RA", - "XN", - "XF", - "eA", - "LO", - "LF", - "@1", - "@2", - "@3", - "@4", - "@5", - "@6", - "@7", - "@8", - "@9", - "@0", - "%1", - "%2", - "%3", - "%4", - "%5", - "%6", - "%7", - "%8", - "%9", - "%0", - "&1", - "&2", - "&3", - "&4", - "&5", - "&6", - "&7", - "&8", - "&9", - "&0", - "*1", - "*2", - "*3", - "*4", - "*5", - "*6", - "*7", - "*8", - "*9", - "*0", - "#1", - "#2", - "#3", - "#4", - "%a", - "%b", - "%c", - "%d", - "%e", - "%f", - "%g", - "%h", - "%i", - "%j", - "!1", - "!2", - "!3", - "RF", - "F1", - "F2", - "F3", - "F4", - "F5", - "F6", - "F7", - "F8", - "F9", - "FA", - "FB", - "FC", - "FD", - "FE", - "FF", - "FG", - "FH", - "FI", - "FJ", - "FK", - "FL", - "FM", - "FN", - "FO", - "FP", - "FQ", - "FR", - "FS", - "FT", - "FU", - "FV", - "FW", - "FX", - "FY", - "FZ", - "Fa", - "Fb", - "Fc", - "Fd", - "Fe", - "Ff", - "Fg", - "Fh", - "Fi", - "Fj", - "Fk", - "Fl", - "Fm", - "Fn", - "Fo", - "Fp", - "Fq", - "Fr", - "cb", - "MC", - "ML", - "MR", - "Lf", - "SC", - "DK", - "RC", - "CW", - "WG", - "HU", - "DI", - "QD", - "TO", - "PU", - "fh", - "PA", - "WA", - "u0", - "u1", - "u2", - "u3", - "u4", - "u5", - "u6", - "u7", - "u8", - "u9", - "op", - "oc", - "Ic", - "Ip", - "sp", - "Sf", - "Sb", - "ZA", - "ZB", - "ZC", - "ZD", - "ZE", - "ZF", - "ZG", - "ZH", - "ZI", - "ZJ", - "ZK", - "ZL", - "ZM", - "ZN", - "ZO", - "ZP", - "ZQ", - "ZR", - "ZS", - "ZT", - "ZU", - "ZV", - "ZW", - "ZX", - "ZY", - "ZZ", - "Za", - "Zb", - "Zc", - "Zd", - "Ze", - "Zf", - "Zg", - "Zh", - "Zi", - "Zj", - "Zk", - "Zl", - "Zm", - "Zn", - "Zo", - "Zp", - "Zq", - "Zr", - "Zs", - "Zt", - "Zu", - "Zv", - "Zw", - "Zx", - "Zy", - "Km", - "Mi", - "RQ", - "Gm", - "AF", - "AB", - "xl", - "dv", - "ci", - "s0", - "s1", - "s2", - "s3", - "ML", - "MT", - "Xy", - "Zz", - "Yv", - "Yw", - "Yx", - "Yy", - "Yz", - "YZ", - "S1", - "S2", - "S3", - "S4", - "S5", - "S6", - "S7", - "S8", - "Xh", - "Xl", - "Xo", - "Xr", - "Xt", - "Xv", - "sA", - "sL", - "i2", - "rs", - "nl", - "bc", - "ko", - "ma", - "G2", - "G3", - "G1", - "G4", - "GR", - "GL", - "GU", - "GD", - "GH", - "GV", - "GC", - "ml", - "mu", - "bx", - - (NCURSES_CONST char *)0, -}; - - -#endif /* BROKEN_LINKER */ diff --git a/deps/ncurses-5.9/ncurses/comp_captab.c b/deps/ncurses-5.9/ncurses/comp_captab.c deleted file mode 100644 index cce21fe..0000000 --- a/deps/ncurses-5.9/ncurses/comp_captab.c +++ /dev/null @@ -1,3416 +0,0 @@ -/* - * generated by ./tinfo/MKcaptab.sh - */ - -/* - * comp_captab.c -- The names of the capabilities indexed via a hash - * table for the compiler. - * - */ - -#include -#include -#include - -/* 147 collisions out of 497 entries */ -static const char info_names_text[] = \ -"bw\0" "am\0" "xsb\0" "xhp\0" "xenl\0" "eo\0" "gn\0" "hc\0" "km\0" \ -"hs\0" "in\0" "da\0" "db\0" "mir\0" "msgr\0" "os\0" "eslok\0" "xt\0" \ -"hz\0" "ul\0" "xon\0" "nxon\0" "mc5i\0" "chts\0" "nrrmc\0" "npc\0" \ -"ndscr\0" "ccc\0" "bce\0" "hls\0" "xhpa\0" "crxm\0" "daisy\0" "xvpa\0" \ -"sam\0" "cpix\0" "lpix\0" "cols\0" "it\0" "lines\0" "lm\0" "xmc\0" \ -"pb\0" "vt\0" "wsl\0" "nlab\0" "lh\0" "lw\0" "ma\0" "wnum\0" "colors\0" \ -"pairs\0" "ncv\0" "bufsz\0" "spinv\0" "spinh\0" "maddr\0" "mjump\0" \ -"mcs\0" "mls\0" "npins\0" "orc\0" "orl\0" "orhi\0" "orvi\0" "cps\0" \ -"widcs\0" "btns\0" "bitwin\0" "bitype\0" "cbt\0" "bel\0" "cr\0" "csr\0" \ -"tbc\0" "clear\0" "el\0" "ed\0" "hpa\0" "cmdch\0" "cup\0" "cud1\0" \ -"home\0" "civis\0" "cub1\0" "mrcup\0" "cnorm\0" "cuf1\0" "ll\0" \ -"cuu1\0" "cvvis\0" "dch1\0" "dl1\0" "dsl\0" "hd\0" "smacs\0" "blink\0" \ -"bold\0" "smcup\0" "smdc\0" "dim\0" "smir\0" "invis\0" "prot\0" "rev\0" \ -"smso\0" "smul\0" "ech\0" "rmacs\0" "sgr0\0" "rmcup\0" "rmdc\0" \ -"rmir\0" "rmso\0" "rmul\0" "flash\0" "ff\0" "fsl\0" "is1\0" "is2\0" \ -"is3\0" "if\0" "ich1\0" "il1\0" "ip\0" "kbs\0" "ktbc\0" "kclr\0" \ -"kctab\0" "kdch1\0" "kdl1\0" "kcud1\0" "krmir\0" "kel\0" "ked\0" \ -"kf0\0" "kf1\0" "kf10\0" "kf2\0" "kf3\0" "kf4\0" "kf5\0" "kf6\0" \ -"kf7\0" "kf8\0" "kf9\0" "khome\0" "kich1\0" "kil1\0" "kcub1\0" "kll\0" \ -"knp\0" "kpp\0" "kcuf1\0" "kind\0" "kri\0" "khts\0" "kcuu1\0" "rmkx\0" \ -"smkx\0" "lf0\0" "lf1\0" "lf10\0" "lf2\0" "lf3\0" "lf4\0" "lf5\0" \ -"lf6\0" "lf7\0" "lf8\0" "lf9\0" "rmm\0" "smm\0" "nel\0" "pad\0" "dch\0" \ -"dl\0" "cud\0" "ich\0" "indn\0" "il\0" "cub\0" "cuf\0" "rin\0" "cuu\0" \ -"pfkey\0" "pfloc\0" "pfx\0" "mc0\0" "mc4\0" "mc5\0" "rep\0" "rs1\0" \ -"rs2\0" "rs3\0" "rf\0" "rc\0" "vpa\0" "sc\0" "ind\0" "ri\0" "sgr\0" \ -"hts\0" "wind\0" "ht\0" "tsl\0" "uc\0" "hu\0" "iprog\0" "ka1\0" "ka3\0" \ -"kb2\0" "kc1\0" "kc3\0" "mc5p\0" "rmp\0" "acsc\0" "pln\0" "kcbt\0" \ -"smxon\0" "rmxon\0" "smam\0" "rmam\0" "xonc\0" "xoffc\0" "enacs\0" \ -"smln\0" "rmln\0" "kbeg\0" "kcan\0" "kclo\0" "kcmd\0" "kcpy\0" "kcrt\0" \ -"kend\0" "kent\0" "kext\0" "kfnd\0" "khlp\0" "kmrk\0" "kmsg\0" "kmov\0" \ -"knxt\0" "kopn\0" "kopt\0" "kprv\0" "kprt\0" "krdo\0" "kref\0" "krfr\0" \ -"krpl\0" "krst\0" "kres\0" "ksav\0" "kspd\0" "kund\0" "kBEG\0" "kCAN\0" \ -"kCMD\0" "kCPY\0" "kCRT\0" "kDC\0" "kDL\0" "kslt\0" "kEND\0" "kEOL\0" \ -"kEXT\0" "kFND\0" "kHLP\0" "kHOM\0" "kIC\0" "kLFT\0" "kMSG\0" "kMOV\0" \ -"kNXT\0" "kOPT\0" "kPRV\0" "kPRT\0" "kRDO\0" "kRPL\0" "kRIT\0" "kRES\0" \ -"kSAV\0" "kSPD\0" "kUND\0" "rfi\0" "kf11\0" "kf12\0" "kf13\0" "kf14\0" \ -"kf15\0" "kf16\0" "kf17\0" "kf18\0" "kf19\0" "kf20\0" "kf21\0" "kf22\0" \ -"kf23\0" "kf24\0" "kf25\0" "kf26\0" "kf27\0" "kf28\0" "kf29\0" "kf30\0" \ -"kf31\0" "kf32\0" "kf33\0" "kf34\0" "kf35\0" "kf36\0" "kf37\0" "kf38\0" \ -"kf39\0" "kf40\0" "kf41\0" "kf42\0" "kf43\0" "kf44\0" "kf45\0" "kf46\0" \ -"kf47\0" "kf48\0" "kf49\0" "kf50\0" "kf51\0" "kf52\0" "kf53\0" "kf54\0" \ -"kf55\0" "kf56\0" "kf57\0" "kf58\0" "kf59\0" "kf60\0" "kf61\0" "kf62\0" \ -"kf63\0" "el1\0" "mgc\0" "smgl\0" "smgr\0" "fln\0" "sclk\0" "dclk\0" \ -"rmclk\0" "cwin\0" "wingo\0" "hup\0" "dial\0" "qdial\0" "tone\0" \ -"pulse\0" "hook\0" "pause\0" "wait\0" "u0\0" "u1\0" "u2\0" "u3\0" \ -"u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "initc\0" \ -"initp\0" "scp\0" "setf\0" "setb\0" "cpi\0" "lpi\0" "chr\0" "cvr\0" \ -"defc\0" "swidm\0" "sdrfq\0" "sitm\0" "slm\0" "smicm\0" "snlq\0" \ -"snrmq\0" "sshm\0" "ssubm\0" "ssupm\0" "sum\0" "rwidm\0" "ritm\0" \ -"rlm\0" "rmicm\0" "rshm\0" "rsubm\0" "rsupm\0" "rum\0" "mhpa\0" \ -"mcud1\0" "mcub1\0" "mcuf1\0" "mvpa\0" "mcuu1\0" "porder\0" "mcud\0" \ -"mcub\0" "mcuf\0" "mcuu\0" "scs\0" "smgb\0" "smgbp\0" "smglp\0" \ -"smgrp\0" "smgt\0" "smgtp\0" "sbim\0" "scsd\0" "rbim\0" "rcsd\0" \ -"subcs\0" "supcs\0" "docr\0" "zerom\0" "csnm\0" "kmous\0" "minfo\0" \ -"reqmp\0" "getm\0" "setaf\0" "setab\0" "pfxl\0" "devt\0" "csin\0" \ -"s0ds\0" "s1ds\0" "s2ds\0" "s3ds\0" "smglr\0" "smgtb\0" "birep\0" \ -"binel\0" "bicr\0" "colornm\0" "defbi\0" "endbi\0" "setcolor\0" \ -"slines\0" "dispc\0" "smpch\0" "rmpch\0" "smsc\0" "rmsc\0" "pctrm\0" \ -"scesc\0" "scesa\0" "ehhlm\0" "elhlm\0" "elohlm\0" "erhlm\0" "ethlm\0" \ -"evhlm\0" "sgr1\0" "slength\0" "OTi2\0" "OTrs\0" "OTug\0" "OTbs\0" \ -"OTns\0" "OTnc\0" "OTdC\0" "OTdN\0" "OTnl\0" "OTbc\0" "OTMT\0" "OTNL\0" \ -"OTdB\0" "OTdT\0" "OTkn\0" "OTko\0" "OTma\0" "OTpt\0" "OTxr\0" "OTG2\0" \ -"OTG3\0" "OTG1\0" "OTG4\0" "OTGR\0" "OTGL\0" "OTGU\0" "OTGD\0" "OTGH\0" \ -"OTGV\0" "OTGC\0" "meml\0" "memu\0" "box1\0" ; - -static name_table_data const info_names_data[] = -{ - { 0, BOOLEAN, 0, -1 }, - { 3, BOOLEAN, 1, -1 }, - { 6, BOOLEAN, 2, -1 }, - { 10, BOOLEAN, 3, -1 }, - { 14, BOOLEAN, 4, -1 }, - { 19, BOOLEAN, 5, -1 }, - { 22, BOOLEAN, 6, -1 }, - { 25, BOOLEAN, 7, -1 }, - { 28, BOOLEAN, 8, -1 }, - { 31, BOOLEAN, 9, -1 }, - { 34, BOOLEAN, 10, -1 }, - { 37, BOOLEAN, 11, -1 }, - { 40, BOOLEAN, 12, -1 }, - { 43, BOOLEAN, 13, -1 }, - { 47, BOOLEAN, 14, -1 }, - { 52, BOOLEAN, 15, -1 }, - { 55, BOOLEAN, 16, -1 }, - { 61, BOOLEAN, 17, -1 }, - { 64, BOOLEAN, 18, -1 }, - { 67, BOOLEAN, 19, -1 }, - { 70, BOOLEAN, 20, -1 }, - { 74, BOOLEAN, 21, -1 }, - { 79, BOOLEAN, 22, -1 }, - { 84, BOOLEAN, 23, -1 }, - { 89, BOOLEAN, 24, -1 }, - { 95, BOOLEAN, 25, -1 }, - { 99, BOOLEAN, 26, -1 }, - { 105, BOOLEAN, 27, -1 }, - { 109, BOOLEAN, 28, -1 }, - { 113, BOOLEAN, 29, -1 }, - { 117, BOOLEAN, 30, -1 }, - { 122, BOOLEAN, 31, -1 }, - { 127, BOOLEAN, 32, -1 }, - { 133, BOOLEAN, 33, -1 }, - { 138, BOOLEAN, 34, -1 }, - { 142, BOOLEAN, 35, -1 }, - { 147, BOOLEAN, 36, -1 }, - { 152, NUMBER, 0, -1 }, - { 157, NUMBER, 1, -1 }, - { 160, NUMBER, 2, 6 }, - { 166, NUMBER, 3, -1 }, - { 169, NUMBER, 4, -1 }, - { 173, NUMBER, 5, -1 }, - { 176, NUMBER, 6, -1 }, - { 179, NUMBER, 7, -1 }, - { 183, NUMBER, 8, -1 }, - { 188, NUMBER, 9, -1 }, - { 191, NUMBER, 10, -1 }, - { 194, NUMBER, 11, -1 }, - { 197, NUMBER, 12, -1 }, - { 202, NUMBER, 13, -1 }, - { 209, NUMBER, 14, -1 }, - { 215, NUMBER, 15, -1 }, - { 219, NUMBER, 16, 46 }, - { 225, NUMBER, 17, -1 }, - { 231, NUMBER, 18, -1 }, - { 237, NUMBER, 19, -1 }, - { 243, NUMBER, 20, -1 }, - { 249, NUMBER, 21, -1 }, - { 253, NUMBER, 22, -1 }, - { 257, NUMBER, 23, -1 }, - { 263, NUMBER, 24, -1 }, - { 267, NUMBER, 25, -1 }, - { 271, NUMBER, 26, -1 }, - { 276, NUMBER, 27, -1 }, - { 281, NUMBER, 28, -1 }, - { 285, NUMBER, 29, -1 }, - { 291, NUMBER, 30, -1 }, - { 296, NUMBER, 31, -1 }, - { 303, NUMBER, 32, 68 }, - { 310, STRING, 0, -1 }, - { 314, STRING, 1, -1 }, - { 318, STRING, 2, -1 }, - { 321, STRING, 3, -1 }, - { 325, STRING, 4, -1 }, - { 329, STRING, 5, -1 }, - { 335, STRING, 6, -1 }, - { 338, STRING, 7, -1 }, - { 341, STRING, 8, -1 }, - { 345, STRING, 9, -1 }, - { 351, STRING, 10, 73 }, - { 355, STRING, 11, -1 }, - { 360, STRING, 12, -1 }, - { 365, STRING, 13, -1 }, - { 371, STRING, 14, -1 }, - { 376, STRING, 15, -1 }, - { 382, STRING, 16, -1 }, - { 388, STRING, 17, -1 }, - { 393, STRING, 18, -1 }, - { 396, STRING, 19, -1 }, - { 401, STRING, 20, -1 }, - { 407, STRING, 21, -1 }, - { 412, STRING, 22, -1 }, - { 416, STRING, 23, -1 }, - { 420, STRING, 24, -1 }, - { 423, STRING, 25, -1 }, - { 429, STRING, 26, -1 }, - { 435, STRING, 27, -1 }, - { 440, STRING, 28, -1 }, - { 446, STRING, 29, -1 }, - { 451, STRING, 30, -1 }, - { 455, STRING, 31, -1 }, - { 460, STRING, 32, -1 }, - { 466, STRING, 33, -1 }, - { 471, STRING, 34, -1 }, - { 475, STRING, 35, -1 }, - { 480, STRING, 36, -1 }, - { 485, STRING, 37, -1 }, - { 489, STRING, 38, -1 }, - { 495, STRING, 39, -1 }, - { 500, STRING, 40, -1 }, - { 506, STRING, 41, -1 }, - { 511, STRING, 42, -1 }, - { 516, STRING, 43, -1 }, - { 521, STRING, 44, -1 }, - { 526, STRING, 45, -1 }, - { 532, STRING, 46, -1 }, - { 535, STRING, 47, -1 }, - { 539, STRING, 48, -1 }, - { 543, STRING, 49, 59 }, - { 547, STRING, 50, 76 }, - { 551, STRING, 51, -1 }, - { 554, STRING, 52, 20 }, - { 559, STRING, 53, -1 }, - { 563, STRING, 54, -1 }, - { 566, STRING, 55, -1 }, - { 570, STRING, 56, -1 }, - { 575, STRING, 57, 98 }, - { 580, STRING, 58, -1 }, - { 586, STRING, 59, -1 }, - { 592, STRING, 60, -1 }, - { 597, STRING, 61, -1 }, - { 603, STRING, 62, -1 }, - { 609, STRING, 63, -1 }, - { 613, STRING, 64, -1 }, - { 617, STRING, 65, -1 }, - { 621, STRING, 66, -1 }, - { 625, STRING, 67, -1 }, - { 630, STRING, 68, -1 }, - { 634, STRING, 69, -1 }, - { 638, STRING, 70, -1 }, - { 642, STRING, 71, 61 }, - { 646, STRING, 72, -1 }, - { 650, STRING, 73, -1 }, - { 654, STRING, 74, -1 }, - { 658, STRING, 75, -1 }, - { 662, STRING, 76, -1 }, - { 668, STRING, 77, -1 }, - { 674, STRING, 78, -1 }, - { 679, STRING, 79, -1 }, - { 685, STRING, 80, -1 }, - { 689, STRING, 81, -1 }, - { 693, STRING, 82, -1 }, - { 697, STRING, 83, -1 }, - { 703, STRING, 84, 55 }, - { 708, STRING, 85, 105 }, - { 712, STRING, 86, -1 }, - { 717, STRING, 87, 81 }, - { 723, STRING, 88, -1 }, - { 728, STRING, 89, -1 }, - { 733, STRING, 90, -1 }, - { 737, STRING, 91, -1 }, - { 741, STRING, 92, -1 }, - { 746, STRING, 93, -1 }, - { 750, STRING, 94, 33 }, - { 754, STRING, 95, -1 }, - { 758, STRING, 96, -1 }, - { 762, STRING, 97, -1 }, - { 766, STRING, 98, 7 }, - { 770, STRING, 99, 94 }, - { 774, STRING, 100, -1 }, - { 778, STRING, 101, 131 }, - { 782, STRING, 102, -1 }, - { 786, STRING, 103, -1 }, - { 790, STRING, 104, 30 }, - { 794, STRING, 105, -1 }, - { 798, STRING, 106, -1 }, - { 801, STRING, 107, -1 }, - { 805, STRING, 108, -1 }, - { 809, STRING, 109, -1 }, - { 814, STRING, 110, -1 }, - { 817, STRING, 111, -1 }, - { 821, STRING, 112, 156 }, - { 825, STRING, 113, -1 }, - { 829, STRING, 114, -1 }, - { 833, STRING, 115, 51 }, - { 839, STRING, 116, -1 }, - { 845, STRING, 117, -1 }, - { 849, STRING, 118, -1 }, - { 853, STRING, 119, -1 }, - { 857, STRING, 120, -1 }, - { 861, STRING, 121, -1 }, - { 865, STRING, 122, -1 }, - { 869, STRING, 123, -1 }, - { 873, STRING, 124, 126 }, - { 877, STRING, 125, -1 }, - { 880, STRING, 126, -1 }, - { 883, STRING, 127, -1 }, - { 887, STRING, 128, -1 }, - { 890, STRING, 129, -1 }, - { 894, STRING, 130, -1 }, - { 897, STRING, 131, -1 }, - { 901, STRING, 132, -1 }, - { 905, STRING, 133, -1 }, - { 910, STRING, 134, -1 }, - { 913, STRING, 135, -1 }, - { 917, STRING, 136, 23 }, - { 920, STRING, 137, -1 }, - { 923, STRING, 138, -1 }, - { 929, STRING, 139, -1 }, - { 933, STRING, 140, -1 }, - { 937, STRING, 141, 210 }, - { 941, STRING, 142, 211 }, - { 945, STRING, 143, 135 }, - { 949, STRING, 144, -1 }, - { 954, STRING, 145, -1 }, - { 958, STRING, 146, 176 }, - { 963, STRING, 147, -1 }, - { 967, STRING, 148, 194 }, - { 972, STRING, 149, -1 }, - { 978, STRING, 150, -1 }, - { 984, STRING, 151, 137 }, - { 989, STRING, 152, -1 }, - { 994, STRING, 153, -1 }, - { 999, STRING, 154, -1 }, - { 1005, STRING, 155, -1 }, - { 1011, STRING, 156, -1 }, - { 1016, STRING, 157, -1 }, - { 1021, STRING, 158, -1 }, - { 1026, STRING, 159, -1 }, - { 1031, STRING, 160, -1 }, - { 1036, STRING, 161, -1 }, - { 1041, STRING, 162, -1 }, - { 1046, STRING, 163, 54 }, - { 1051, STRING, 164, 192 }, - { 1056, STRING, 165, -1 }, - { 1061, STRING, 166, -1 }, - { 1066, STRING, 167, 193 }, - { 1071, STRING, 168, -1 }, - { 1076, STRING, 169, 70 }, - { 1081, STRING, 170, 235 }, - { 1086, STRING, 171, -1 }, - { 1091, STRING, 172, -1 }, - { 1096, STRING, 173, 177 }, - { 1101, STRING, 174, -1 }, - { 1106, STRING, 175, -1 }, - { 1111, STRING, 176, -1 }, - { 1116, STRING, 177, -1 }, - { 1121, STRING, 178, -1 }, - { 1126, STRING, 179, 239 }, - { 1131, STRING, 180, 219 }, - { 1136, STRING, 181, 80 }, - { 1141, STRING, 182, 249 }, - { 1146, STRING, 183, 252 }, - { 1151, STRING, 184, 240 }, - { 1156, STRING, 185, 254 }, - { 1161, STRING, 186, -1 }, - { 1166, STRING, 187, -1 }, - { 1171, STRING, 188, 101 }, - { 1176, STRING, 189, -1 }, - { 1181, STRING, 190, -1 }, - { 1186, STRING, 191, -1 }, - { 1190, STRING, 192, -1 }, - { 1194, STRING, 193, 244 }, - { 1199, STRING, 194, -1 }, - { 1204, STRING, 195, 152 }, - { 1209, STRING, 196, -1 }, - { 1214, STRING, 197, 150 }, - { 1219, STRING, 198, -1 }, - { 1224, STRING, 199, 268 }, - { 1229, STRING, 200, -1 }, - { 1233, STRING, 201, 72 }, - { 1238, STRING, 202, -1 }, - { 1243, STRING, 203, -1 }, - { 1248, STRING, 204, -1 }, - { 1253, STRING, 205, -1 }, - { 1258, STRING, 206, -1 }, - { 1263, STRING, 207, 196 }, - { 1268, STRING, 208, -1 }, - { 1273, STRING, 209, -1 }, - { 1278, STRING, 210, -1 }, - { 1283, STRING, 211, -1 }, - { 1288, STRING, 212, 281 }, - { 1293, STRING, 213, 272 }, - { 1298, STRING, 214, 283 }, - { 1303, STRING, 215, -1 }, - { 1307, STRING, 216, -1 }, - { 1312, STRING, 217, 134 }, - { 1317, STRING, 218, -1 }, - { 1322, STRING, 219, -1 }, - { 1327, STRING, 220, -1 }, - { 1332, STRING, 221, 43 }, - { 1337, STRING, 222, 256 }, - { 1342, STRING, 223, -1 }, - { 1347, STRING, 224, -1 }, - { 1352, STRING, 225, 286 }, - { 1357, STRING, 226, 287 }, - { 1362, STRING, 227, 288 }, - { 1367, STRING, 228, 289 }, - { 1372, STRING, 229, 290 }, - { 1377, STRING, 230, 291 }, - { 1382, STRING, 231, 292 }, - { 1387, STRING, 232, 293 }, - { 1392, STRING, 233, 294 }, - { 1397, STRING, 234, 133 }, - { 1402, STRING, 235, 296 }, - { 1407, STRING, 236, 297 }, - { 1412, STRING, 237, 298 }, - { 1417, STRING, 238, 299 }, - { 1422, STRING, 239, 300 }, - { 1427, STRING, 240, 301 }, - { 1432, STRING, 241, 302 }, - { 1437, STRING, 242, 303 }, - { 1442, STRING, 243, 304 }, - { 1447, STRING, 244, 257 }, - { 1452, STRING, 245, 306 }, - { 1457, STRING, 246, 307 }, - { 1462, STRING, 247, 308 }, - { 1467, STRING, 248, 309 }, - { 1472, STRING, 249, 310 }, - { 1477, STRING, 250, 311 }, - { 1482, STRING, 251, 312 }, - { 1487, STRING, 252, 313 }, - { 1492, STRING, 253, 314 }, - { 1497, STRING, 254, 226 }, - { 1502, STRING, 255, 316 }, - { 1507, STRING, 256, 317 }, - { 1512, STRING, 257, 318 }, - { 1517, STRING, 258, 319 }, - { 1522, STRING, 259, 320 }, - { 1527, STRING, 260, 321 }, - { 1532, STRING, 261, 322 }, - { 1537, STRING, 262, 323 }, - { 1542, STRING, 263, 324 }, - { 1547, STRING, 264, 258 }, - { 1552, STRING, 265, 326 }, - { 1557, STRING, 266, 327 }, - { 1562, STRING, 267, 328 }, - { 1567, STRING, 268, 329 }, - { 1572, STRING, 269, -1 }, - { 1576, STRING, 270, -1 }, - { 1580, STRING, 271, 335 }, - { 1585, STRING, 272, 332 }, - { 1590, STRING, 273, -1 }, - { 1594, STRING, 274, -1 }, - { 1599, STRING, 275, -1 }, - { 1604, STRING, 276, -1 }, - { 1610, STRING, 277, 37 }, - { 1615, STRING, 278, -1 }, - { 1621, STRING, 279, -1 }, - { 1625, STRING, 280, -1 }, - { 1630, STRING, 281, -1 }, - { 1636, STRING, 282, -1 }, - { 1641, STRING, 283, -1 }, - { 1647, STRING, 284, -1 }, - { 1652, STRING, 285, 8 }, - { 1658, STRING, 286, 262 }, - { 1663, STRING, 287, -1 }, - { 1666, STRING, 288, -1 }, - { 1669, STRING, 289, -1 }, - { 1672, STRING, 290, -1 }, - { 1675, STRING, 291, -1 }, - { 1678, STRING, 292, -1 }, - { 1681, STRING, 293, -1 }, - { 1684, STRING, 294, -1 }, - { 1687, STRING, 295, -1 }, - { 1690, STRING, 296, -1 }, - { 1693, STRING, 297, -1 }, - { 1696, STRING, 298, -1 }, - { 1699, STRING, 299, -1 }, - { 1705, STRING, 300, -1 }, - { 1711, STRING, 301, -1 }, - { 1715, STRING, 302, 325 }, - { 1720, STRING, 303, 221 }, - { 1725, STRING, 304, 243 }, - { 1729, STRING, 305, -1 }, - { 1733, STRING, 306, 250 }, - { 1737, STRING, 307, -1 }, - { 1741, STRING, 308, 141 }, - { 1746, STRING, 309, 248 }, - { 1752, STRING, 310, 218 }, - { 1758, STRING, 311, -1 }, - { 1763, STRING, 312, 201 }, - { 1767, STRING, 313, 229 }, - { 1773, STRING, 314, 264 }, - { 1778, STRING, 315, 253 }, - { 1784, STRING, 316, 334 }, - { 1789, STRING, 317, -1 }, - { 1795, STRING, 318, 236 }, - { 1801, STRING, 319, 185 }, - { 1805, STRING, 320, -1 }, - { 1811, STRING, 321, -1 }, - { 1816, STRING, 322, -1 }, - { 1820, STRING, 323, -1 }, - { 1826, STRING, 324, 112 }, - { 1831, STRING, 325, -1 }, - { 1837, STRING, 326, -1 }, - { 1843, STRING, 327, -1 }, - { 1847, STRING, 328, -1 }, - { 1852, STRING, 329, -1 }, - { 1858, STRING, 330, -1 }, - { 1864, STRING, 331, 53 }, - { 1870, STRING, 332, -1 }, - { 1875, STRING, 333, 47 }, - { 1881, STRING, 334, 155 }, - { 1888, STRING, 335, -1 }, - { 1893, STRING, 336, -1 }, - { 1898, STRING, 337, -1 }, - { 1903, STRING, 338, -1 }, - { 1908, STRING, 339, -1 }, - { 1912, STRING, 340, -1 }, - { 1917, STRING, 341, 383 }, - { 1923, STRING, 342, -1 }, - { 1929, STRING, 343, -1 }, - { 1935, STRING, 344, 386 }, - { 1940, STRING, 345, 238 }, - { 1946, STRING, 346, -1 }, - { 1951, STRING, 347, 344 }, - { 1956, STRING, 348, 31 }, - { 1961, STRING, 349, -1 }, - { 1966, STRING, 350, 380 }, - { 1972, STRING, 351, 255 }, - { 1978, STRING, 352, -1 }, - { 1983, STRING, 353, -1 }, - { 1989, STRING, 354, 347 }, - { 1994, STRING, 355, -1 }, - { 2000, STRING, 356, -1 }, - { 2006, STRING, 357, -1 }, - { 2012, STRING, 358, 87 }, - { 2017, STRING, 359, -1 }, - { 2023, STRING, 360, -1 }, - { 2029, STRING, 361, -1 }, - { 2034, STRING, 362, -1 }, - { 2039, STRING, 363, -1 }, - { 2044, STRING, 364, -1 }, - { 2049, STRING, 365, 212 }, - { 2054, STRING, 366, 109 }, - { 2059, STRING, 367, 213 }, - { 2064, STRING, 368, 230 }, - { 2070, STRING, 369, -1 }, - { 2076, STRING, 370, -1 }, - { 2082, STRING, 371, -1 }, - { 2088, STRING, 372, -1 }, - { 2093, STRING, 373, -1 }, - { 2101, STRING, 374, -1 }, - { 2107, STRING, 375, -1 }, - { 2113, STRING, 376, -1 }, - { 2122, STRING, 377, 116 }, - { 2129, STRING, 378, -1 }, - { 2135, STRING, 379, 231 }, - { 2141, STRING, 380, -1 }, - { 2147, STRING, 381, 338 }, - { 2152, STRING, 382, -1 }, - { 2157, STRING, 383, -1 }, - { 2163, STRING, 384, 197 }, - { 2169, STRING, 385, 430 }, - { 2175, STRING, 386, -1 }, - { 2181, STRING, 387, -1 }, - { 2187, STRING, 388, -1 }, - { 2194, STRING, 389, -1 }, - { 2200, STRING, 390, -1 }, - { 2206, STRING, 391, -1 }, - { 2212, STRING, 392, 437 }, - { 2217, STRING, 393, -1 }, - { 2225, STRING, 394, -1 }, - { 2230, STRING, 395, -1 }, - { 2235, NUMBER, 33, -1 }, - { 2240, BOOLEAN, 37, -1 }, - { 2245, BOOLEAN, 38, -1 }, - { 2250, BOOLEAN, 39, -1 }, - { 2255, NUMBER, 34, -1 }, - { 2260, NUMBER, 35, -1 }, - { 2265, STRING, 396, -1 }, - { 2270, STRING, 397, 13 }, - { 2275, BOOLEAN, 40, -1 }, - { 2280, BOOLEAN, 41, 446 }, - { 2285, NUMBER, 36, -1 }, - { 2290, NUMBER, 37, -1 }, - { 2295, NUMBER, 38, -1 }, - { 2300, STRING, 398, 472 }, - { 2305, STRING, 399, -1 }, - { 2310, BOOLEAN, 42, -1 }, - { 2315, BOOLEAN, 43, -1 }, - { 2320, STRING, 400, -1 }, - { 2325, STRING, 401, -1 }, - { 2330, STRING, 402, -1 }, - { 2335, STRING, 403, -1 }, - { 2340, STRING, 404, -1 }, - { 2345, STRING, 405, -1 }, - { 2350, STRING, 406, -1 }, - { 2355, STRING, 407, -1 }, - { 2360, STRING, 408, 26 }, - { 2365, STRING, 409, 60 }, - { 2370, STRING, 410, 121 }, - { 2375, STRING, 411, 407 }, - { 2380, STRING, 412, 402 }, - { 2385, STRING, 413, -1 } -}; - -static struct name_table_entry *_nc_info_table = 0; - -static const HashValue _nc_info_hash_table[995] = -{ - -1, - -1, - -1, - -1, - -1, - -1, - 465, - -1, - -1, - -1, - -1, - -1, - 261, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 457, - -1, - -1, - 265, - 216, - 120, - -1, - -1, - -1, - 180, - -1, - -1, - 88, - -1, - 420, - -1, - 398, - -1, - 348, - -1, - -1, - 19, - -1, - -1, - -1, - 359, - -1, - 174, - -1, - 245, - -1, - 74, - -1, - -1, - -1, - -1, - -1, - 269, - -1, - 480, - -1, - -1, - -1, - 124, - -1, - -1, - -1, - 390, - 379, - 367, - -1, - -1, - 444, - -1, - -1, - -1, - 305, - -1, - -1, - 363, - -1, - -1, - 483, - 377, - -1, - -1, - -1, - -1, - 460, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 204, - 38, - -1, - 82, - -1, - 110, - 127, - -1, - -1, - 463, - -1, - -1, - -1, - -1, - 336, - -1, - 17, - 128, - 434, - -1, - 188, - 129, - -1, - 351, - -1, - -1, - 16, - -1, - -1, - 259, - -1, - -1, - -1, - -1, - -1, - 489, - -1, - 353, - -1, - 71, - 247, - -1, - -1, - -1, - -1, - 78, - -1, - -1, - 331, - -1, - -1, - 173, - 136, - 161, - 189, - -1, - -1, - -1, - -1, - 454, - -1, - -1, - -1, - -1, - 224, - 479, - -1, - -1, - -1, - -1, - -1, - 354, - -1, - -1, - 233, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 125, - 11, - -1, - -1, - 378, - 166, - -1, - 191, - -1, - -1, - 48, - 228, - -1, - 2, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 374, - -1, - 408, - -1, - -1, - -1, - -1, - -1, - -1, - 375, - -1, - 52, - 145, - 170, - -1, - 392, - 382, - -1, - 393, - 411, - -1, - -1, - -1, - 276, - -1, - -1, - 35, - -1, - -1, - -1, - -1, - -1, - -1, - 396, - 388, - 36, - -1, - -1, - 64, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 350, - -1, - -1, - 215, - 91, - -1, - -1, - 439, - -1, - 122, - -1, - 200, - -1, - 67, - -1, - 410, - -1, - -1, - 89, - -1, - -1, - -1, - -1, - -1, - 96, - 21, - -1, - 103, - 1, - -1, - -1, - 369, - -1, - -1, - 345, - -1, - -1, - -1, - 355, - 40, - -1, - 27, - -1, - 406, - -1, - -1, - -1, - 482, - 419, - 417, - -1, - -1, - 360, - 270, - -1, - -1, - 251, - -1, - -1, - -1, - -1, - 349, - -1, - -1, - 278, - -1, - 442, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 438, - -1, - 494, - -1, - -1, - -1, - -1, - -1, - 315, - -1, - 340, - 364, - 356, - -1, - 484, - -1, - -1, - -1, - -1, - 32, - -1, - -1, - -1, - 260, - -1, - -1, - -1, - -1, - 207, - 487, - 84, - 453, - -1, - -1, - 413, - -1, - -1, - -1, - -1, - -1, - 214, - -1, - 337, - 352, - 477, - -1, - 435, - 56, - -1, - -1, - 34, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 132, - -1, - 85, - 492, - 428, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 199, - -1, - 342, - -1, - -1, - -1, - 138, - 163, - 190, - 147, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 266, - -1, - -1, - 433, - -1, - -1, - 474, - -1, - -1, - -1, - -1, - 385, - 100, - -1, - -1, - -1, - 431, - -1, - 391, - 381, - 12, - 58, - -1, - 142, - 167, - -1, - -1, - 409, - -1, - -1, - -1, - -1, - 42, - 45, - 66, - -1, - -1, - 424, - -1, - -1, - -1, - -1, - -1, - -1, - 220, - 376, - -1, - -1, - 343, - -1, - -1, - -1, - 114, - 106, - -1, - -1, - 447, - -1, - 217, - 493, - 171, - 172, - 399, - 346, - -1, - -1, - -1, - -1, - 195, - -1, - -1, - -1, - -1, - -1, - 496, - -1, - -1, - -1, - -1, - 241, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 151, - -1, - 118, - -1, - 62, - 187, - -1, - -1, - -1, - -1, - -1, - 234, - -1, - 443, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 357, - -1, - -1, - -1, - 246, - -1, - -1, - -1, - 448, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 39, - -1, - 10, - 397, - 389, - -1, - -1, - 154, - -1, - -1, - -1, - 130, - -1, - 22, - 222, - 373, - 162, - -1, - 361, - 203, - -1, - -1, - 242, - -1, - -1, - -1, - -1, - 459, - -1, - -1, - 271, - -1, - 97, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 427, - -1, - 175, - 107, - -1, - -1, - -1, - 178, - 423, - 372, - 69, - -1, - 365, - -1, - 4, - 486, - 184, - -1, - -1, - -1, - -1, - 461, - -1, - -1, - 282, - -1, - -1, - -1, - -1, - -1, - 475, - -1, - -1, - -1, - 395, - 387, - -1, - -1, - 79, - 63, - -1, - -1, - 452, - 451, - -1, - 50, - -1, - 436, - -1, - -1, - 285, - -1, - -1, - 83, - 455, - -1, - -1, - -1, - 279, - 370, - -1, - -1, - -1, - 18, - -1, - -1, - -1, - -1, - -1, - 421, - -1, - 495, - -1, - -1, - -1, - -1, - 227, - 333, - -1, - -1, - 25, - 139, - 164, - -1, - -1, - 371, - -1, - -1, - 429, - -1, - -1, - -1, - 273, - -1, - 466, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 181, - -1, - -1, - 75, - -1, - 92, - 339, - -1, - 384, - -1, - 123, - -1, - 143, - 168, - -1, - 183, - 186, - -1, - 108, - 95, - 368, - -1, - -1, - 277, - 198, - -1, - 206, - 432, - -1, - 476, - -1, - 458, - -1, - -1, - 182, - -1, - 441, - -1, - -1, - -1, - 115, - 113, - 404, - -1, - 473, - -1, - -1, - -1, - 490, - 104, - -1, - -1, - 450, - 449, - -1, - -1, - -1, - 274, - -1, - 481, - 111, - 99, - -1, - -1, - -1, - -1, - -1, - -1, - 263, - 93, - -1, - 117, - -1, - 29, - -1, - -1, - -1, - -1, - 119, - -1, - -1, - 426, - 491, - -1, - -1, - 205, - -1, - 237, - 44, - -1, - -1, - -1, - -1, - -1, - 418, - 416, - -1, - -1, - 358, - -1, - -1, - -1, - 65, - -1, - 440, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 5, - -1, - -1, - -1, - 488, - -1, - -1, - -1, - 28, - 412, - -1, - 405, - -1, - -1, - -1, - -1, - -1, - 295, - -1, - 471, - 362, - -1, - -1, - 485, - -1, - -1, - -1, - -1, - -1, - 202, - -1, - -1, - 284, - -1, - 469, - -1, - -1, - 9, - 24, - -1, - -1, - 179, - -1, - -1, - 15, - -1, - -1, - 148, - -1, - -1, - -1, - 341, - -1, - -1, - 366, - 209, - 223, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 0, - -1, - 208, - 467, - -1, - 422, - -1, - 464, - 157, - -1, - 403, - -1, - 415, - -1, - -1, - -1, - -1, - 445, - -1, - -1, - 330, - -1, - -1, - -1, - 462, - 160, - -1, - -1, - -1, - -1, - 86, - -1, - -1, - 41, - -1, - 280, - -1, - 478, - -1, - -1, - 57, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 394, - 414, - -1, - -1, - -1, - 140, - 165, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 275, - 102, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 232, - -1, - 14, - -1, - -1, - 225, - -1, - -1, - 267, - -1, - 77, - -1, - 144, - 169, - -1, - 149, - -1, - 400, - -1, - -1, - -1, - 3, - -1, - -1, - -1, - 468, - 425, - -1, - -1, - 470, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 456, - -1, - 158, - 159, - -1, - -1, - 146, - 49, - -1, - -1, - 153, - -1, - 401, - 90, - 0 /* base-of-table */ -}; - -#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414) -#error --> term.h and comp_captab.c disagree about the <-- -#error --> numbers of booleans, numbers and/or strings <-- -#endif - -/* 103 collisions out of 497 entries */ -static const char cap_names_text[] = \ -"bw\0" "am\0" "xb\0" "xs\0" "xn\0" "eo\0" "gn\0" "hc\0" "km\0" "hs\0" \ -"in\0" "da\0" "db\0" "mi\0" "ms\0" "os\0" "es\0" "xt\0" "hz\0" "ul\0" \ -"xo\0" "nx\0" "5i\0" "HC\0" "NR\0" "NP\0" "ND\0" "cc\0" "ut\0" "hl\0" \ -"YA\0" "YB\0" "YC\0" "YD\0" "YE\0" "YF\0" "YG\0" "co\0" "it\0" "li\0" \ -"lm\0" "sg\0" "pb\0" "vt\0" "ws\0" "Nl\0" "lh\0" "lw\0" "ma\0" "MW\0" \ -"Co\0" "pa\0" "NC\0" "Ya\0" "Yb\0" "Yc\0" "Yd\0" "Ye\0" "Yf\0" "Yg\0" \ -"Yh\0" "Yi\0" "Yj\0" "Yk\0" "Yl\0" "Ym\0" "Yn\0" "BT\0" "Yo\0" "Yp\0" \ -"bt\0" "bl\0" "cr\0" "cs\0" "ct\0" "cl\0" "ce\0" "cd\0" "ch\0" "CC\0" \ -"cm\0" "do\0" "ho\0" "vi\0" "le\0" "CM\0" "ve\0" "nd\0" "ll\0" "up\0" \ -"vs\0" "dc\0" "dl\0" "ds\0" "hd\0" "as\0" "mb\0" "md\0" "ti\0" "dm\0" \ -"mh\0" "im\0" "mk\0" "mp\0" "mr\0" "so\0" "us\0" "ec\0" "ae\0" "me\0" \ -"te\0" "ed\0" "ei\0" "se\0" "ue\0" "vb\0" "ff\0" "fs\0" "i1\0" "is\0" \ -"i3\0" "if\0" "ic\0" "al\0" "ip\0" "kb\0" "ka\0" "kC\0" "kt\0" "kD\0" \ -"kL\0" "kd\0" "kM\0" "kE\0" "kS\0" "k0\0" "k1\0" "k;\0" "k2\0" "k3\0" \ -"k4\0" "k5\0" "k6\0" "k7\0" "k8\0" "k9\0" "kh\0" "kI\0" "kA\0" "kl\0" \ -"kH\0" "kN\0" "kP\0" "kr\0" "kF\0" "kR\0" "kT\0" "ku\0" "ke\0" "ks\0" \ -"l0\0" "l1\0" "la\0" "l2\0" "l3\0" "l4\0" "l5\0" "l6\0" "l7\0" "l8\0" \ -"l9\0" "mo\0" "mm\0" "nw\0" "pc\0" "DC\0" "DL\0" "DO\0" "IC\0" "SF\0" \ -"AL\0" "LE\0" "RI\0" "SR\0" "UP\0" "pk\0" "pl\0" "px\0" "ps\0" "pf\0" \ -"po\0" "rp\0" "r1\0" "r2\0" "r3\0" "rf\0" "rc\0" "cv\0" "sc\0" "sf\0" \ -"sr\0" "sa\0" "st\0" "wi\0" "ta\0" "ts\0" "uc\0" "hu\0" "iP\0" "K1\0" \ -"K3\0" "K2\0" "K4\0" "K5\0" "pO\0" "rP\0" "ac\0" "pn\0" "kB\0" "SX\0" \ -"RX\0" "SA\0" "RA\0" "XN\0" "XF\0" "eA\0" "LO\0" "LF\0" "@1\0" "@2\0" \ -"@3\0" "@4\0" "@5\0" "@6\0" "@7\0" "@8\0" "@9\0" "@0\0" "%1\0" "%2\0" \ -"%3\0" "%4\0" "%5\0" "%6\0" "%7\0" "%8\0" "%9\0" "%0\0" "&1\0" "&2\0" \ -"&3\0" "&4\0" "&5\0" "&6\0" "&7\0" "&8\0" "&9\0" "&0\0" "*1\0" "*2\0" \ -"*3\0" "*4\0" "*5\0" "*6\0" "*7\0" "*8\0" "*9\0" "*0\0" "#1\0" "#2\0" \ -"#3\0" "#4\0" "%a\0" "%b\0" "%c\0" "%d\0" "%e\0" "%f\0" "%g\0" "%h\0" \ -"%i\0" "%j\0" "!1\0" "!2\0" "!3\0" "RF\0" "F1\0" "F2\0" "F3\0" "F4\0" \ -"F5\0" "F6\0" "F7\0" "F8\0" "F9\0" "FA\0" "FB\0" "FC\0" "FD\0" "FE\0" \ -"FF\0" "FG\0" "FH\0" "FI\0" "FJ\0" "FK\0" "FL\0" "FM\0" "FN\0" "FO\0" \ -"FP\0" "FQ\0" "FR\0" "FS\0" "FT\0" "FU\0" "FV\0" "FW\0" "FX\0" "FY\0" \ -"FZ\0" "Fa\0" "Fb\0" "Fc\0" "Fd\0" "Fe\0" "Ff\0" "Fg\0" "Fh\0" "Fi\0" \ -"Fj\0" "Fk\0" "Fl\0" "Fm\0" "Fn\0" "Fo\0" "Fp\0" "Fq\0" "Fr\0" "cb\0" \ -"MC\0" "ML\0" "MR\0" "Lf\0" "SC\0" "DK\0" "RC\0" "CW\0" "WG\0" "HU\0" \ -"DI\0" "QD\0" "TO\0" "PU\0" "fh\0" "PA\0" "WA\0" "u0\0" "u1\0" "u2\0" \ -"u3\0" "u4\0" "u5\0" "u6\0" "u7\0" "u8\0" "u9\0" "op\0" "oc\0" "Ic\0" \ -"Ip\0" "sp\0" "Sf\0" "Sb\0" "ZA\0" "ZB\0" "ZC\0" "ZD\0" "ZE\0" "ZF\0" \ -"ZG\0" "ZH\0" "ZI\0" "ZJ\0" "ZK\0" "ZL\0" "ZM\0" "ZN\0" "ZO\0" "ZP\0" \ -"ZQ\0" "ZR\0" "ZS\0" "ZT\0" "ZU\0" "ZV\0" "ZW\0" "ZX\0" "ZY\0" "ZZ\0" \ -"Za\0" "Zb\0" "Zc\0" "Zd\0" "Ze\0" "Zf\0" "Zg\0" "Zh\0" "Zi\0" "Zj\0" \ -"Zk\0" "Zl\0" "Zm\0" "Zn\0" "Zo\0" "Zp\0" "Zq\0" "Zr\0" "Zs\0" "Zt\0" \ -"Zu\0" "Zv\0" "Zw\0" "Zx\0" "Zy\0" "Km\0" "Mi\0" "RQ\0" "Gm\0" "AF\0" \ -"AB\0" "xl\0" "dv\0" "ci\0" "s0\0" "s1\0" "s2\0" "s3\0" "ML\0" "MT\0" \ -"Xy\0" "Zz\0" "Yv\0" "Yw\0" "Yx\0" "Yy\0" "Yz\0" "YZ\0" "S1\0" "S2\0" \ -"S3\0" "S4\0" "S5\0" "S6\0" "S7\0" "S8\0" "Xh\0" "Xl\0" "Xo\0" "Xr\0" \ -"Xt\0" "Xv\0" "sA\0" "sL\0" "i2\0" "rs\0" "ug\0" "bs\0" "ns\0" "nc\0" \ -"dC\0" "dN\0" "nl\0" "bc\0" "MT\0" "NL\0" "dB\0" "dT\0" "kn\0" "ko\0" \ -"ma\0" "pt\0" "xr\0" "G2\0" "G3\0" "G1\0" "G4\0" "GR\0" "GL\0" "GU\0" \ -"GD\0" "GH\0" "GV\0" "GC\0" "ml\0" "mu\0" "bx\0" ; - -static name_table_data const cap_names_data[] = -{ - { 0, BOOLEAN, 0, -1 }, - { 3, BOOLEAN, 1, -1 }, - { 6, BOOLEAN, 2, -1 }, - { 9, BOOLEAN, 3, -1 }, - { 12, BOOLEAN, 4, -1 }, - { 15, BOOLEAN, 5, -1 }, - { 18, BOOLEAN, 6, -1 }, - { 21, BOOLEAN, 7, -1 }, - { 24, BOOLEAN, 8, -1 }, - { 27, BOOLEAN, 9, -1 }, - { 30, BOOLEAN, 10, -1 }, - { 33, BOOLEAN, 11, -1 }, - { 36, BOOLEAN, 12, -1 }, - { 39, BOOLEAN, 13, -1 }, - { 42, BOOLEAN, 14, -1 }, - { 45, BOOLEAN, 15, -1 }, - { 48, BOOLEAN, 16, -1 }, - { 51, BOOLEAN, 17, -1 }, - { 54, BOOLEAN, 18, -1 }, - { 57, BOOLEAN, 19, -1 }, - { 60, BOOLEAN, 20, -1 }, - { 63, BOOLEAN, 21, -1 }, - { 66, BOOLEAN, 22, -1 }, - { 69, BOOLEAN, 23, -1 }, - { 72, BOOLEAN, 24, 1 }, - { 75, BOOLEAN, 25, -1 }, - { 78, BOOLEAN, 26, -1 }, - { 81, BOOLEAN, 27, -1 }, - { 84, BOOLEAN, 28, -1 }, - { 87, BOOLEAN, 29, -1 }, - { 90, BOOLEAN, 30, -1 }, - { 93, BOOLEAN, 31, -1 }, - { 96, BOOLEAN, 32, -1 }, - { 99, BOOLEAN, 33, -1 }, - { 102, BOOLEAN, 34, -1 }, - { 105, BOOLEAN, 35, -1 }, - { 108, BOOLEAN, 36, -1 }, - { 111, NUMBER, 0, -1 }, - { 114, NUMBER, 1, -1 }, - { 117, NUMBER, 2, -1 }, - { 120, NUMBER, 3, -1 }, - { 123, NUMBER, 4, -1 }, - { 126, NUMBER, 5, -1 }, - { 129, NUMBER, 6, -1 }, - { 132, NUMBER, 7, -1 }, - { 135, NUMBER, 8, -1 }, - { 138, NUMBER, 9, -1 }, - { 141, NUMBER, 10, -1 }, - { 144, NUMBER, 11, -1 }, - { 147, NUMBER, 12, -1 }, - { 150, NUMBER, 13, -1 }, - { 153, NUMBER, 14, -1 }, - { 156, NUMBER, 15, -1 }, - { 159, NUMBER, 16, -1 }, - { 162, NUMBER, 17, -1 }, - { 165, NUMBER, 18, -1 }, - { 168, NUMBER, 19, -1 }, - { 171, NUMBER, 20, -1 }, - { 174, NUMBER, 21, -1 }, - { 177, NUMBER, 22, -1 }, - { 180, NUMBER, 23, -1 }, - { 183, NUMBER, 24, -1 }, - { 186, NUMBER, 25, -1 }, - { 189, NUMBER, 26, -1 }, - { 192, NUMBER, 27, -1 }, - { 195, NUMBER, 28, -1 }, - { 198, NUMBER, 29, -1 }, - { 201, NUMBER, 30, -1 }, - { 204, NUMBER, 31, -1 }, - { 207, NUMBER, 32, -1 }, - { 210, STRING, 0, -1 }, - { 213, STRING, 1, -1 }, - { 216, STRING, 2, -1 }, - { 219, STRING, 3, -1 }, - { 222, STRING, 4, -1 }, - { 225, STRING, 5, -1 }, - { 228, STRING, 6, -1 }, - { 231, STRING, 7, -1 }, - { 234, STRING, 8, -1 }, - { 237, STRING, 9, -1 }, - { 240, STRING, 10, -1 }, - { 243, STRING, 11, -1 }, - { 246, STRING, 12, -1 }, - { 249, STRING, 13, -1 }, - { 252, STRING, 14, -1 }, - { 255, STRING, 15, -1 }, - { 258, STRING, 16, -1 }, - { 261, STRING, 17, -1 }, - { 264, STRING, 18, -1 }, - { 267, STRING, 19, -1 }, - { 270, STRING, 20, -1 }, - { 273, STRING, 21, -1 }, - { 276, STRING, 22, -1 }, - { 279, STRING, 23, -1 }, - { 282, STRING, 24, -1 }, - { 285, STRING, 25, -1 }, - { 288, STRING, 26, -1 }, - { 291, STRING, 27, -1 }, - { 294, STRING, 28, -1 }, - { 297, STRING, 29, -1 }, - { 300, STRING, 30, -1 }, - { 303, STRING, 31, -1 }, - { 306, STRING, 32, -1 }, - { 309, STRING, 33, -1 }, - { 312, STRING, 34, -1 }, - { 315, STRING, 35, -1 }, - { 318, STRING, 36, -1 }, - { 321, STRING, 37, -1 }, - { 324, STRING, 38, -1 }, - { 327, STRING, 39, -1 }, - { 330, STRING, 40, -1 }, - { 333, STRING, 41, -1 }, - { 336, STRING, 42, -1 }, - { 339, STRING, 43, -1 }, - { 342, STRING, 44, -1 }, - { 345, STRING, 45, -1 }, - { 348, STRING, 46, -1 }, - { 351, STRING, 47, -1 }, - { 354, STRING, 48, 102 }, - { 357, STRING, 49, -1 }, - { 360, STRING, 50, -1 }, - { 363, STRING, 51, -1 }, - { 366, STRING, 52, -1 }, - { 369, STRING, 53, -1 }, - { 372, STRING, 54, -1 }, - { 375, STRING, 55, -1 }, - { 378, STRING, 56, -1 }, - { 381, STRING, 57, -1 }, - { 384, STRING, 58, -1 }, - { 387, STRING, 59, -1 }, - { 390, STRING, 60, -1 }, - { 393, STRING, 61, -1 }, - { 396, STRING, 62, -1 }, - { 399, STRING, 63, -1 }, - { 402, STRING, 64, -1 }, - { 405, STRING, 65, -1 }, - { 408, STRING, 66, -1 }, - { 411, STRING, 67, -1 }, - { 414, STRING, 68, -1 }, - { 417, STRING, 69, -1 }, - { 420, STRING, 70, -1 }, - { 423, STRING, 71, -1 }, - { 426, STRING, 72, -1 }, - { 429, STRING, 73, -1 }, - { 432, STRING, 74, -1 }, - { 435, STRING, 75, 15 }, - { 438, STRING, 76, -1 }, - { 441, STRING, 77, -1 }, - { 444, STRING, 78, -1 }, - { 447, STRING, 79, -1 }, - { 450, STRING, 80, -1 }, - { 453, STRING, 81, -1 }, - { 456, STRING, 82, -1 }, - { 459, STRING, 83, -1 }, - { 462, STRING, 84, -1 }, - { 465, STRING, 85, -1 }, - { 468, STRING, 86, -1 }, - { 471, STRING, 87, -1 }, - { 474, STRING, 88, -1 }, - { 477, STRING, 89, -1 }, - { 480, STRING, 90, -1 }, - { 483, STRING, 91, -1 }, - { 486, STRING, 92, 35 }, - { 489, STRING, 93, -1 }, - { 492, STRING, 94, -1 }, - { 495, STRING, 95, -1 }, - { 498, STRING, 96, -1 }, - { 501, STRING, 97, -1 }, - { 504, STRING, 98, -1 }, - { 507, STRING, 99, -1 }, - { 510, STRING, 100, -1 }, - { 513, STRING, 101, -1 }, - { 516, STRING, 102, 120 }, - { 519, STRING, 103, -1 }, - { 522, STRING, 104, -1 }, - { 525, STRING, 105, -1 }, - { 528, STRING, 106, -1 }, - { 531, STRING, 107, -1 }, - { 534, STRING, 108, -1 }, - { 537, STRING, 109, -1 }, - { 540, STRING, 110, -1 }, - { 543, STRING, 111, -1 }, - { 546, STRING, 112, 111 }, - { 549, STRING, 113, -1 }, - { 552, STRING, 114, -1 }, - { 555, STRING, 115, 161 }, - { 558, STRING, 116, 163 }, - { 561, STRING, 117, -1 }, - { 564, STRING, 118, 170 }, - { 567, STRING, 119, -1 }, - { 570, STRING, 120, 166 }, - { 573, STRING, 121, -1 }, - { 576, STRING, 122, -1 }, - { 579, STRING, 123, -1 }, - { 582, STRING, 124, -1 }, - { 585, STRING, 125, -1 }, - { 588, STRING, 126, -1 }, - { 591, STRING, 127, -1 }, - { 594, STRING, 128, -1 }, - { 597, STRING, 129, -1 }, - { 600, STRING, 130, -1 }, - { 603, STRING, 131, -1 }, - { 606, STRING, 132, -1 }, - { 609, STRING, 133, -1 }, - { 612, STRING, 134, -1 }, - { 615, STRING, 135, -1 }, - { 618, STRING, 136, -1 }, - { 621, STRING, 137, -1 }, - { 624, STRING, 138, -1 }, - { 627, STRING, 139, -1 }, - { 630, STRING, 140, -1 }, - { 633, STRING, 141, -1 }, - { 636, STRING, 142, -1 }, - { 639, STRING, 143, -1 }, - { 642, STRING, 144, -1 }, - { 645, STRING, 145, 37 }, - { 648, STRING, 146, -1 }, - { 651, STRING, 147, 165 }, - { 654, STRING, 148, -1 }, - { 657, STRING, 149, 117 }, - { 660, STRING, 150, 16 }, - { 663, STRING, 151, -1 }, - { 666, STRING, 152, -1 }, - { 669, STRING, 153, -1 }, - { 672, STRING, 154, 126 }, - { 675, STRING, 155, -1 }, - { 678, STRING, 156, -1 }, - { 681, STRING, 157, -1 }, - { 684, STRING, 158, -1 }, - { 687, STRING, 159, -1 }, - { 690, STRING, 160, -1 }, - { 693, STRING, 161, -1 }, - { 696, STRING, 162, -1 }, - { 699, STRING, 163, -1 }, - { 702, STRING, 164, 183 }, - { 705, STRING, 165, -1 }, - { 708, STRING, 166, -1 }, - { 711, STRING, 167, 116 }, - { 714, STRING, 168, -1 }, - { 717, STRING, 169, 97 }, - { 720, STRING, 170, 109 }, - { 723, STRING, 171, -1 }, - { 726, STRING, 172, -1 }, - { 729, STRING, 173, 100 }, - { 732, STRING, 174, 13 }, - { 735, STRING, 175, -1 }, - { 738, STRING, 176, 118 }, - { 741, STRING, 177, 96 }, - { 744, STRING, 178, -1 }, - { 747, STRING, 179, 87 }, - { 750, STRING, 180, -1 }, - { 753, STRING, 181, -1 }, - { 756, STRING, 182, -1 }, - { 759, STRING, 183, -1 }, - { 762, STRING, 184, -1 }, - { 765, STRING, 185, -1 }, - { 768, STRING, 186, -1 }, - { 771, STRING, 187, -1 }, - { 774, STRING, 188, 196 }, - { 777, STRING, 189, -1 }, - { 780, STRING, 190, -1 }, - { 783, STRING, 191, 195 }, - { 786, STRING, 192, -1 }, - { 789, STRING, 193, -1 }, - { 792, STRING, 194, -1 }, - { 795, STRING, 195, -1 }, - { 798, STRING, 196, -1 }, - { 801, STRING, 197, -1 }, - { 804, STRING, 198, -1 }, - { 807, STRING, 199, 131 }, - { 810, STRING, 200, 158 }, - { 813, STRING, 201, -1 }, - { 816, STRING, 202, -1 }, - { 819, STRING, 203, -1 }, - { 822, STRING, 204, -1 }, - { 825, STRING, 205, -1 }, - { 828, STRING, 206, -1 }, - { 831, STRING, 207, -1 }, - { 834, STRING, 208, -1 }, - { 837, STRING, 209, -1 }, - { 840, STRING, 210, -1 }, - { 843, STRING, 211, -1 }, - { 846, STRING, 212, 122 }, - { 849, STRING, 213, -1 }, - { 852, STRING, 214, -1 }, - { 855, STRING, 215, -1 }, - { 858, STRING, 216, -1 }, - { 861, STRING, 217, 46 }, - { 864, STRING, 218, 39 }, - { 867, STRING, 219, -1 }, - { 870, STRING, 220, -1 }, - { 873, STRING, 221, 88 }, - { 876, STRING, 222, 40 }, - { 879, STRING, 223, -1 }, - { 882, STRING, 224, -1 }, - { 885, STRING, 225, 47 }, - { 888, STRING, 226, -1 }, - { 891, STRING, 227, -1 }, - { 894, STRING, 228, -1 }, - { 897, STRING, 229, -1 }, - { 900, STRING, 230, 53 }, - { 903, STRING, 231, 54 }, - { 906, STRING, 232, 55 }, - { 909, STRING, 233, 56 }, - { 912, STRING, 234, 57 }, - { 915, STRING, 235, 58 }, - { 918, STRING, 236, 59 }, - { 921, STRING, 237, 60 }, - { 924, STRING, 238, 61 }, - { 927, STRING, 239, 62 }, - { 930, STRING, 240, 63 }, - { 933, STRING, 241, 64 }, - { 936, STRING, 242, 65 }, - { 939, STRING, 243, 66 }, - { 942, STRING, 244, 68 }, - { 945, STRING, 245, 69 }, - { 948, STRING, 246, -1 }, - { 951, STRING, 247, -1 }, - { 954, STRING, 248, -1 }, - { 957, STRING, 249, -1 }, - { 960, STRING, 250, -1 }, - { 963, STRING, 251, -1 }, - { 966, STRING, 252, -1 }, - { 969, STRING, 253, -1 }, - { 972, STRING, 254, -1 }, - { 975, STRING, 255, -1 }, - { 978, STRING, 256, -1 }, - { 981, STRING, 257, 7 }, - { 984, STRING, 258, 94 }, - { 987, STRING, 259, -1 }, - { 990, STRING, 260, -1 }, - { 993, STRING, 261, -1 }, - { 996, STRING, 262, -1 }, - { 999, STRING, 263, -1 }, - { 1002, STRING, 264, -1 }, - { 1005, STRING, 265, 184 }, - { 1008, STRING, 266, 29 }, - { 1011, STRING, 267, -1 }, - { 1014, STRING, 268, -1 }, - { 1017, STRING, 269, -1 }, - { 1020, STRING, 270, -1 }, - { 1023, STRING, 271, -1 }, - { 1026, STRING, 272, -1 }, - { 1029, STRING, 273, 257 }, - { 1032, STRING, 274, -1 }, - { 1035, STRING, 275, -1 }, - { 1038, STRING, 276, -1 }, - { 1041, STRING, 277, 4 }, - { 1044, STRING, 278, -1 }, - { 1047, STRING, 279, -1 }, - { 1050, STRING, 280, -1 }, - { 1053, STRING, 281, -1 }, - { 1056, STRING, 282, -1 }, - { 1059, STRING, 283, -1 }, - { 1062, STRING, 284, 229 }, - { 1065, STRING, 285, -1 }, - { 1068, STRING, 286, -1 }, - { 1071, STRING, 287, -1 }, - { 1074, STRING, 288, -1 }, - { 1077, STRING, 289, -1 }, - { 1080, STRING, 290, -1 }, - { 1083, STRING, 291, -1 }, - { 1086, STRING, 292, -1 }, - { 1089, STRING, 293, -1 }, - { 1092, STRING, 294, -1 }, - { 1095, STRING, 295, -1 }, - { 1098, STRING, 296, -1 }, - { 1101, STRING, 297, 142 }, - { 1104, STRING, 298, -1 }, - { 1107, STRING, 299, -1 }, - { 1110, STRING, 300, 149 }, - { 1113, STRING, 301, -1 }, - { 1116, STRING, 302, -1 }, - { 1119, STRING, 303, -1 }, - { 1122, STRING, 304, -1 }, - { 1125, STRING, 305, -1 }, - { 1128, STRING, 306, -1 }, - { 1131, STRING, 307, -1 }, - { 1134, STRING, 308, -1 }, - { 1137, STRING, 309, 48 }, - { 1140, STRING, 310, 247 }, - { 1143, STRING, 311, 238 }, - { 1146, STRING, 312, 239 }, - { 1149, STRING, 313, 240 }, - { 1152, STRING, 314, 241 }, - { 1155, STRING, 315, 242 }, - { 1158, STRING, 316, 243 }, - { 1161, STRING, 317, 244 }, - { 1164, STRING, 318, 245 }, - { 1167, STRING, 319, 246 }, - { 1170, STRING, 320, -1 }, - { 1173, STRING, 321, 172 }, - { 1176, STRING, 322, -1 }, - { 1179, STRING, 323, 171 }, - { 1182, STRING, 324, 103 }, - { 1185, STRING, 325, -1 }, - { 1188, STRING, 326, 104 }, - { 1191, STRING, 327, 14 }, - { 1194, STRING, 328, -1 }, - { 1197, STRING, 329, -1 }, - { 1200, STRING, 330, -1 }, - { 1203, STRING, 331, -1 }, - { 1206, STRING, 332, -1 }, - { 1209, STRING, 333, -1 }, - { 1212, STRING, 334, -1 }, - { 1215, STRING, 335, -1 }, - { 1218, STRING, 336, -1 }, - { 1221, STRING, 337, -1 }, - { 1224, STRING, 338, -1 }, - { 1227, STRING, 339, -1 }, - { 1230, STRING, 340, -1 }, - { 1233, STRING, 341, -1 }, - { 1236, STRING, 342, -1 }, - { 1239, STRING, 343, -1 }, - { 1242, STRING, 344, 208 }, - { 1245, STRING, 345, -1 }, - { 1248, STRING, 346, -1 }, - { 1251, STRING, 347, -1 }, - { 1254, STRING, 348, -1 }, - { 1257, STRING, 349, -1 }, - { 1260, STRING, 350, -1 }, - { 1263, STRING, 351, -1 }, - { 1266, STRING, 352, -1 }, - { 1269, STRING, 353, 272 }, - { 1272, STRING, 354, 273 }, - { 1275, STRING, 355, 387 }, - { 1278, STRING, 356, -1 }, - { 1281, STRING, 357, -1 }, - { 1284, STRING, 358, -1 }, - { 1287, STRING, 359, -1 }, - { 1290, STRING, 360, -1 }, - { 1293, STRING, 361, -1 }, - { 1296, STRING, 362, -1 }, - { 1299, STRING, 363, -1 }, - { 1302, STRING, 364, -1 }, - { 1305, STRING, 365, 67 }, - { 1308, STRING, 366, -1 }, - { 1311, STRING, 367, -1 }, - { 1314, STRING, 368, 341 }, - { 1317, STRING, 369, -1 }, - { 1320, STRING, 370, -1 }, - { 1323, STRING, 371, 274 }, - { 1326, STRING, 372, -1 }, - { 1329, STRING, 373, -1 }, - { 1332, STRING, 374, -1 }, - { 1335, STRING, 375, -1 }, - { 1338, STRING, 376, -1 }, - { 1341, STRING, 377, -1 }, - { 1344, STRING, 378, -1 }, - { 1347, STRING, 379, -1 }, - { 1350, STRING, 380, -1 }, - { 1353, STRING, 381, 357 }, - { 1356, STRING, 382, 358 }, - { 1359, STRING, 383, 359 }, - { 1362, STRING, 384, 360 }, - { 1365, STRING, 385, 361 }, - { 1368, STRING, 386, -1 }, - { 1371, STRING, 387, -1 }, - { 1374, STRING, 388, -1 }, - { 1377, STRING, 389, -1 }, - { 1380, STRING, 390, -1 }, - { 1383, STRING, 391, -1 }, - { 1386, STRING, 392, -1 }, - { 1389, STRING, 393, -1 }, - { 1392, STRING, 394, 390 }, - { 1395, STRING, 395, -1 }, - { 1398, NUMBER, 33, -1 }, - { 1401, BOOLEAN, 37, -1 }, - { 1404, BOOLEAN, 38, -1 }, - { 1407, BOOLEAN, 39, 248 }, - { 1410, NUMBER, 34, -1 }, - { 1413, NUMBER, 35, 203 }, - { 1416, STRING, 396, -1 }, - { 1419, STRING, 397, -1 }, - { 1422, BOOLEAN, 40, 439 }, - { 1425, BOOLEAN, 41, -1 }, - { 1428, NUMBER, 36, -1 }, - { 1431, NUMBER, 37, -1 }, - { 1434, NUMBER, 38, -1 }, - { 1437, STRING, 398, -1 }, - { 1440, STRING, 399, 379 }, - { 1443, BOOLEAN, 42, -1 }, - { 1446, BOOLEAN, 43, -1 }, - { 1449, STRING, 400, 386 }, - { 1452, STRING, 401, 425 }, - { 1455, STRING, 402, 385 }, - { 1458, STRING, 403, 388 }, - { 1461, STRING, 404, 412 }, - { 1464, STRING, 405, 406 }, - { 1467, STRING, 406, 415 }, - { 1470, STRING, 407, -1 }, - { 1473, STRING, 408, 402 }, - { 1476, STRING, 409, 416 }, - { 1479, STRING, 410, -1 }, - { 1482, STRING, 411, 464 }, - { 1485, STRING, 412, 399 }, - { 1488, STRING, 413, -1 } -}; - -static struct name_table_entry *_nc_cap_table = 0; - -static const HashValue _nc_cap_hash_table[995] = -{ - 253, - -1, - 45, - 211, - 263, - -1, - -1, - -1, - -1, - -1, - -1, - 449, - 457, - 311, - 411, - -1, - 132, - -1, - -1, - -1, - -1, - 123, - 71, - 75, - 92, - 427, - 233, - -1, - 336, - -1, - -1, - 370, - 291, - 494, - 472, - 138, - 186, - -1, - -1, - -1, - -1, - 19, - 193, - 436, - 431, - 453, - -1, - 315, - 489, - 349, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 353, - -1, - -1, - -1, - -1, - -1, - 124, - -1, - -1, - -1, - 394, - -1, - 367, - 167, - -1, - 191, - 371, - -1, - 89, - -1, - -1, - -1, - 363, - 460, - 319, - 419, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 70, - 74, - -1, - -1, - -1, - -1, - -1, - 38, - -1, - 128, - -1, - 398, - -1, - -1, - 481, - -1, - -1, - 202, - -1, - 28, - 43, - -1, - 17, - -1, - -1, - 444, - 423, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 496, - -1, - -1, - -1, - -1, - 430, - -1, - -1, - -1, - -1, - 296, - -1, - 21, - -1, - 187, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 321, - 276, - -1, - -1, - 31, - 375, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 429, - 476, - -1, - -1, - -1, - 300, - 400, - -1, - 218, - -1, - -1, - 227, - -1, - -1, - -1, - -1, - 11, - 285, - 179, - -1, - 325, - 280, - -1, - 224, - 162, - 480, - -1, - -1, - 51, - -1, - -1, - 201, - 204, - -1, - -1, - -1, - -1, - 22, - -1, - 304, - 404, - -1, - 154, - -1, - -1, - -1, - -1, - 108, - -1, - 76, - -1, - -1, - -1, - -1, - 329, - 284, - -1, - 270, - 84, - 383, - 250, - 426, - -1, - -1, - 260, - 113, - 110, - 114, - 86, - -1, - -1, - -1, - -1, - 308, - 408, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 433, - -1, - 112, - 230, - -1, - 333, - 428, - -1, - 223, - 288, - 484, - 254, - -1, - -1, - 210, - 264, - -1, - 98, - -1, - 83, - 471, - -1, - 450, - -1, - 312, - 487, - -1, - 151, - -1, - -1, - -1, - 342, - 24, - -1, - 80, - 99, - -1, - 234, - -1, - 337, - 101, - -1, - 8, - 292, - 391, - -1, - 139, - 164, - -1, - -1, - -1, - -1, - -1, - 194, - 437, - -1, - 454, - -1, - 316, - 492, - -1, - 155, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 395, - -1, - 143, - 168, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 364, - -1, - 320, - 420, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 207, - -1, - -1, - 157, - 447, - 495, - -1, - 137, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 440, - 445, - 424, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 79, - 175, - -1, - 297, - 493, - 23, - 178, - -1, - -1, - -1, - 340, - 52, - -1, - -1, - -1, - 346, - 344, - -1, - 322, - 277, - -1, - -1, - 32, - 376, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 373, - -1, - 470, - -1, - -1, - -1, - 301, - 401, - -1, - 127, - -1, - -1, - -1, - -1, - -1, - -1, - 339, - 12, - -1, - -1, - -1, - 326, - 281, - 348, - 125, - 36, - 380, - 343, - -1, - 42, - -1, - 267, - -1, - -1, - 372, - 115, - -1, - 2, - 345, - -1, - 305, - 405, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 237, - -1, - 330, - 121, - -1, - 271, - -1, - 384, - 251, - -1, - 189, - -1, - 261, - 199, - -1, - -1, - -1, - -1, - -1, - 177, - -1, - 309, - 409, - -1, - -1, - -1, - -1, - 226, - -1, - -1, - -1, - -1, - -1, - -1, - 231, - 352, - 334, - -1, - -1, - -1, - 289, - 486, - 255, - 135, - 160, - 212, - 265, - -1, - -1, - -1, - -1, - 434, - -1, - 451, - -1, - 313, - 413, - -1, - -1, - -1, - -1, - -1, - -1, - 214, - -1, - -1, - -1, - -1, - 235, - 6, - 338, - 10, - -1, - 478, - 293, - 392, - -1, - 140, - 217, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 347, - 455, - 459, - 317, - 417, - -1, - 134, - -1, - -1, - -1, - 49, - -1, - -1, - 72, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 153, - -1, - 396, - -1, - 144, - 169, - -1, - -1, - 200, - -1, - -1, - -1, - -1, - 482, - 365, - 461, - 442, - 421, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 197, - 432, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 446, - 441, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 18, - -1, - -1, - -1, - 298, - 490, - -1, - -1, - -1, - -1, - -1, - -1, - 26, - -1, - -1, - 351, - -1, - -1, - -1, - 323, - 278, - -1, - 369, - 33, - 377, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 302, - 491, - -1, - 129, - -1, - -1, - -1, - -1, - 216, - 473, - 27, - 91, - 107, - -1, - -1, - 327, - 282, - -1, - 268, - -1, - 381, - 469, - 368, - 174, - -1, - 258, - 198, - -1, - 206, - 180, - -1, - -1, - 176, - -1, - 306, - 488, - -1, - 150, - -1, - -1, - -1, - 438, - 475, - -1, - -1, - -1, - -1, - 228, - -1, - 331, - -1, - -1, - -1, - 286, - 485, - 252, - -1, - -1, - 209, - 262, - 41, - -1, - 466, - -1, - -1, - -1, - 448, - -1, - 310, - 410, - -1, - 130, - -1, - -1, - -1, - -1, - 25, - -1, - -1, - 463, - 50, - 232, - -1, - 335, - -1, - -1, - -1, - 290, - 389, - 256, - 136, - 185, - 213, - 266, - -1, - -1, - -1, - 192, - 435, - -1, - 452, - 458, - 314, - 414, - -1, - 152, - -1, - -1, - -1, - 474, - -1, - -1, - 215, - 81, - 5, - 236, - -1, - 82, - -1, - -1, - 479, - 294, - 393, - -1, - 141, - 190, - -1, - -1, - 105, - -1, - -1, - -1, - 477, - 20, - 362, - -1, - 318, - 418, - -1, - 156, - -1, - -1, - -1, - -1, - 95, - 467, - 73, - 93, - 220, - 219, - -1, - 9, - 119, - -1, - 159, - -1, - 397, - 468, - 145, - 188, - -1, - 465, - -1, - 205, - 106, - 90, - 44, - 3, - 366, - -1, - 443, - 422, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 0, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 295, - -1, - 173, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 355, - -1, - 222, - 221, - -1, - -1, - 275, - 356, - -1, - 30, - 374, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 225, - -1, - -1, - 299, - -1, - -1, - 148, - -1, - -1, - 181, - -1, - -1, - -1, - -1, - 462, - -1, - -1, - -1, - 324, - 279, - -1, - -1, - 34, - 378, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - -1, - 350, - -1, - 303, - 403, - -1, - 133, - -1, - -1, - -1, - -1, - -1, - -1, - 77, - -1, - 182, - -1, - -1, - 328, - 283, - -1, - 269, - -1, - 382, - 249, - -1, - -1, - -1, - 259, - -1, - -1, - -1, - -1, - -1, - 85, - -1, - 456, - 307, - 407, - -1, - 147, - -1, - -1, - -1, - -1, - -1, - -1, - 78, - -1, - -1, - 354, - -1, - 332, - -1, - -1, - 146, - 287, - 483, - 0 /* base-of-table */ -}; - -#if (BOOLCOUNT!=44)||(NUMCOUNT!=39)||(STRCOUNT!=414) -#error --> term.h and comp_captab.c disagree about the <-- -#error --> numbers of booleans, numbers and/or strings <-- -#endif - -/* generated by MKcaptab.awk capalias(1) */ - -static struct alias *_nc_capalias_table = 0; - -static const char capalias_text[] = "\ -sb\0sr\0BSD\0\ -BO\0mr\0AT&T\0\ -CI\0vi\0AT&T\0\ -CV\0ve\0AT&T\0\ -DS\0mh\0AT&T\0\ -FE\0LF\0AT&T\0\ -FL\0LO\0AT&T\0\ -XS\0mk\0AT&T\0\ -EE\0mh\0XENIX\0\ -GE\0ae\0XENIX\0\ -GS\0as\0XENIX\0\ -CF\0vi\0XENIX\0\ -CO\0ve\0XENIX\0\ -EN\0@7\0XENIX\0\ -HM\0kh\0XENIX\0\ -LD\0kL\0XENIX\0\ -PD\0kN\0XENIX\0\ -PN\0po\0XENIX\0\ -PS\0pf\0XENIX\0\ -PU\0kP\0XENIX\0\ -RT\0@8\0XENIX\0\ -UP\0ku\0XENIX\0\ -G6\0XENIX\0\ -G7\0XENIX\0\ -G5\0XENIX\0\ -G8\0XENIX\0\ -Gr\0XENIX\0\ -Gr\0XENIX\0\ -Gu\0XENIX\0\ -Gd\0XENIX\0\ -Gh\0XENIX\0\ -Gv\0XENIX\0\ -Gc\0XENIX\0\ -GG\0XENIX\0\ -kq\0%1\0IBM\0\ -HS\0mh\0IRIS\0\ -KA\0k;\0Tek\0\ -KB\0F1\0Tek\0\ -KC\0F2\0Tek\0\ -KD\0F3\0Tek\0\ -KE\0F4\0Tek\0\ -KF\0F5\0Tek\0\ -BC\0Sb\0Tek\0\ -FC\0Sf\0Tek\0\ -"; - -static const alias_table_data capalias_data[] = { - { 0, 3, 6}, /* scroll */ - { 10, 13, 16}, /* enter_reverse_mode */ - { 21, 24, 27}, /* cursor_invisible */ - { 32, 35, 38}, /* cursor_normal */ - { 43, 46, 49}, /* enter_dim_mode */ - { 54, 57, 60}, /* label_on */ - { 65, 68, 71}, /* label_off */ - { 76, 79, 82}, /* enter_secure_mode */ - { 87, 90, 93}, /* exit_attribute_mode */ - { 99, 102, 105}, /* exit_alt_charset_mode */ - { 111, 114, 117}, /* enter_alt_charset_mode */ - { 123, 126, 129}, /* cursor_invis */ - { 135, 138, 141}, /* cursor_normal */ - { 147, 150, 153}, /* key_end */ - { 159, 162, 165}, /* key_home */ - { 171, 174, 177}, /* key_dl */ - { 183, 186, 189}, /* key_npage */ - { 195, 198, 201}, /* prtr_off */ - { 207, 210, 213}, /* prtr_on */ - { 219, 222, 225}, /* key_ppage */ - { 231, 234, 237}, /* kent */ - { 243, 246, 249}, /* kcuu1 */ - { 255, -1, 258}, /* double-ACS_ULCORNER */ - { 264, -1, 267}, /* double-ACS_LLCORNER */ - { 273, -1, 276}, /* double-ACS_URCORNER */ - { 282, -1, 285}, /* double-ACS_LRCORNER */ - { 291, -1, 294}, /* double-ACS_LTEE */ - { 300, -1, 303}, /* double-ACS_RTEE */ - { 309, -1, 312}, /* double-ACS_BTEE */ - { 318, -1, 321}, /* double */ - { 327, -1, 330}, /* double-ACS_HLINE */ - { 336, -1, 339}, /* double-ACS_VLINE */ - { 345, -1, 348}, /* double-ACS_PLUS */ - { 354, -1, 357}, /* acs-glitch */ - { 363, 366, 369}, /* key_help */ - { 373, 376, 379}, /* enter_dim_mode */ - { 384, 387, 390}, /* key_f10 */ - { 394, 397, 400}, /* key_f11 */ - { 404, 407, 410}, /* key_f12 */ - { 414, 417, 420}, /* key_f13 */ - { 424, 427, 430}, /* key_f14 */ - { 434, 437, 440}, /* key_f15 */ - { 444, 447, 450}, /* set_background */ - { 454, 457, 460}, /* set_foreground */ -}; - -/* generated by MKcaptab.awk infoalias(1) */ - -static struct alias *_nc_infoalias_table = 0; - -static const char infoalias_text[] = "\ -font0\0s0ds\0IBM\0\ -font1\0s1ds\0IBM\0\ -font2\0s2ds\0IBM\0\ -font3\0s3ds\0IBM\0\ -kbtab\0kcbt\0IBM\0\ -ksel\0kslt\0IBM\0\ -"; - -static const alias_table_data infoalias_data[] = { - { 0, 6, 11}, /* set0_des_seq */ - { 15, 21, 26}, /* set1_des_seq */ - { 30, 36, 41}, /* set2_des_seq */ - { 45, 51, 56}, /* set3_des_seq */ - { 60, 66, 71}, /* key_backtab */ - { 75, 80, 85}, /* key_select */ -}; - - -#if 1 -static void -next_string(const char *strings, unsigned *offset) -{ - *offset += (unsigned) strlen(strings + *offset) + 1; -} - -static const struct name_table_entry * -_nc_build_names(struct name_table_entry **actual, - const name_table_data *source, - const char *strings) -{ - if (*actual == 0) { - *actual = typeCalloc(struct name_table_entry, CAPTABSIZE); - if (*actual != 0) { - unsigned n; - unsigned len = 0; - for (n = 0; n < CAPTABSIZE; ++n) { - (*actual)[n].nte_name = strings + len; - (*actual)[n].nte_type = source[n].nte_type; - (*actual)[n].nte_index = source[n].nte_index; - (*actual)[n].nte_link = source[n].nte_link; - next_string(strings, &len); - } - } - } - return *actual; -} - -#define add_alias(field) \ - if (source[n].field >= 0) { \ - (*actual)[n].field = strings + source[n].field; \ - } - -static const struct alias * -_nc_build_alias(struct alias **actual, - const alias_table_data *source, - const char *strings, - unsigned tablesize) -{ - if (*actual == 0) { - *actual = typeCalloc(struct alias, tablesize + 1); - if (*actual != 0) { - unsigned n; - for (n = 0; n < tablesize; ++n) { - add_alias(from); - add_alias(to); - add_alias(source); - } - } - } - return *actual; -} - -#define build_names(root) _nc_build_names(&_nc_##root##_table, \ - root##_names_data, \ - root##_names_text) -#define build_alias(root) _nc_build_alias(&_nc_##root##alias_table, \ - root##alias_data, \ - root##alias_text, \ - SIZEOF(root##alias_data)) -#else -#define build_names(root) _nc_ ## root ## _table -#define build_alias(root) _nc_ ## root ## alias_table -#endif - -NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool termcap) -{ - return termcap ? build_names(cap) : build_names(info) ; -} - -/* entrypoint used by tack (do not alter) */ -NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool termcap) -{ - return termcap ? _nc_cap_hash_table: _nc_info_hash_table ; -} - -NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool termcap) -{ - return termcap ? build_alias(cap) : build_alias(info) ; -} - -static HashValue -info_hash(const char *string) -{ - long sum = 0; - - DEBUG(9, ("hashing %s", string)); - while (*string) { - sum += (long) (*string + (*(string + 1) << 8)); - string++; - } - - DEBUG(9, ("sum is %ld", sum)); - return (HashValue) (sum % HASHTABSIZE); -} - -#define TCAP_LEN 2 /* only 1- or 2-character names are used */ - -static HashValue -tcap_hash(const char *string) -{ - char temp[TCAP_LEN + 1]; - int limit = 0; - - while (*string) { - temp[limit++] = *string++; - if (limit >= TCAP_LEN) - break; - } - temp[limit] = '\0'; - return info_hash(temp); -} - -static int -compare_tcap_names(const char *a, const char *b) -{ - return !strncmp(a, b, TCAP_LEN); -} - -static int -compare_info_names(const char *a, const char *b) -{ - return !strcmp(a, b); -} - -static const HashData hash_data[2] = { - { HASHTABSIZE, _nc_info_hash_table, info_hash, compare_info_names }, - { HASHTABSIZE, _nc_cap_hash_table, tcap_hash, compare_tcap_names } -}; - -NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool termcap) -{ - return &hash_data[(termcap != FALSE)]; -} - -#if NO_LEAKS -NCURSES_EXPORT(void) _nc_comp_captab_leaks(void) -{ -#if 1 - FreeIfNeeded(_nc_cap_table); - FreeIfNeeded(_nc_info_table); - FreeIfNeeded(_nc_capalias_table); - FreeIfNeeded(_nc_infoalias_table); -#endif -} -#endif /* NO_LEAKS */ diff --git a/deps/ncurses-5.9/ncurses/expanded.c b/deps/ncurses-5.9/ncurses/expanded.c deleted file mode 100644 index d8758e0..0000000 --- a/deps/ncurses-5.9/ncurses/expanded.c +++ /dev/null @@ -1,54 +0,0 @@ -/* generated by MKexpanded.sh */ -#define NEED_NCURSES_CH_T 1 -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -#if NCURSES_EXPANDED - void -_nc_toggle_attr_on (attr_t *S, attr_t at) -{ - { if (((int)((((unsigned long)(at) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))) > 0) { (*S) = ((*S) & ALL_BUT_COLOR) | (attr_t) (at); } else { (*S) |= (attr_t) (at); } ;}; -} - void -_nc_toggle_attr_off (attr_t *S, attr_t at) -{ - { if (((int)((((unsigned long)(at) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))) > 0) { (*S) &= ~(at|((((1U) << 8) - 1U) << ((0) + 8))); } else { (*S) &= ~(at); } ;}; -} - int -_nc_DelCharCost ( int count) -{ - return ((cur_term->type. Strings[105] != 0) ? SP->_dch_cost : ((cur_term->type. Strings[21] != 0) ? (SP->_dch1_cost * count) : 1000000)); -} - int -_nc_InsCharCost ( int count) -{ - return ((cur_term->type. Strings[108] != 0) ? SP->_ich_cost : ((cur_term->type. Strings[31] && cur_term->type. Strings[42]) ? SP->_smir_cost + SP->_rmir_cost + (SP->_ip_cost * count) : ((cur_term->type. Strings[52] != 0) ? ((SP->_ich1_cost + SP->_ip_cost) * count) : 1000000))); -} - void -_nc_UpdateAttrs ( chtype c) -{ - if (!((((*((SP)->_current_attr))) & (chtype)((~(1U - 1U)) << ((0) + 8))) == ((c) & (chtype)((~(1U - 1U)) << ((0) + 8))))) { vidattr(((c) & (chtype)((~(1U - 1U)) << ((0) + 8)))); }; -} -#if NCURSES_SP_FUNCS - int -_nc_DelCharCost (int count) -{ - return _nc_DelCharCost (SP, count); -} - int -_nc_InsCharCost (int count) -{ - return _nc_InsCharCost(SP, count); -} - void -_nc_UpdateAttrs (chtype c) -{ - _nc_UpdateAttrs(SP,c); -} -#endif -#else /* ! NCURSES_EXPANDED */ -NCURSES_EXPORT(void) _nc_expanded (void) { } -#endif /* NCURSES_EXPANDED */ diff --git a/deps/ncurses-5.9/ncurses/fallback.c b/deps/ncurses-5.9/ncurses/fallback.c deleted file mode 100644 index 71daf2c..0000000 --- a/deps/ncurses-5.9/ncurses/fallback.c +++ /dev/null @@ -1,11 +0,0 @@ -/* - * DO NOT EDIT THIS FILE BY HAND! It is generated by MKfallback.sh. - */ - -#include - -NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *name GCC_UNUSED) -{ - /* the fallback list is empty */ - return((TERMTYPE *)0); -} diff --git a/deps/ncurses-5.9/ncurses/fifo_defs.h b/deps/ncurses-5.9/ncurses/fifo_defs.h deleted file mode 100644 index fa9ae22..0000000 --- a/deps/ncurses-5.9/ncurses/fifo_defs.h +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2002,2008 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - ****************************************************************************/ - -/* - * Common macros for lib_getch.c, lib_ungetch.c - * - * $Id: fifo_defs.h,v 1.6 2008/06/28 15:52:32 tom Exp $ - */ - -#ifndef FIFO_DEFS_H -#define FIFO_DEFS_H 1 - -#define head sp->_fifohead -#define tail sp->_fifotail -/* peek points to next uninterpreted character */ -#define peek sp->_fifopeek - -#define h_inc() { head == FIFO_SIZE-1 ? head = 0 : head++; if (head == tail) head = -1, tail = 0;} -#define h_dec() { head == 0 ? head = FIFO_SIZE-1 : head--; if (head == tail) tail = -1;} -#define t_inc() { tail == FIFO_SIZE-1 ? tail = 0 : tail++; if (tail == head) tail = -1;} -#define t_dec() { tail == 0 ? tail = FIFO_SIZE-1 : tail--; if (head == tail) fifo_clear(sp);} -#define p_inc() { peek == FIFO_SIZE-1 ? peek = 0 : peek++;} - -#define cooked_key_in_fifo() ((head != -1) && (peek != head)) -#define raw_key_in_fifo() ((head != -1) && (peek != tail)) - -#undef HIDE_EINTR - -#endif /* FIFO_DEFS_H */ diff --git a/deps/ncurses-5.9/ncurses/init_keytry.h b/deps/ncurses-5.9/ncurses/init_keytry.h deleted file mode 100644 index c89150d..0000000 --- a/deps/ncurses-5.9/ncurses/init_keytry.h +++ /dev/null @@ -1,162 +0,0 @@ -#ifndef NCU_KEYS_H -#define NCU_KEYS_H 1 - -/* This file was generated by MAKE_KEYS */ - -#if BROKEN_LINKER -static -#endif -const struct tinfo_fkeys _nc_tinfo_fkeys[] = { - { 139, KEY_A1 }, /* key_a1 */ - { 140, KEY_A3 }, /* key_a3 */ - { 141, KEY_B2 }, /* key_b2 */ - { 55, KEY_BACKSPACE }, /* key_backspace */ - { 158, KEY_BEG }, /* key_beg */ - { 148, KEY_BTAB }, /* key_btab */ - { 142, KEY_C1 }, /* key_c1 */ - { 143, KEY_C3 }, /* key_c3 */ - { 159, KEY_CANCEL }, /* key_cancel */ - { 56, KEY_CATAB }, /* key_catab */ - { 57, KEY_CLEAR }, /* key_clear */ - { 160, KEY_CLOSE }, /* key_close */ - { 161, KEY_COMMAND }, /* key_command */ - { 162, KEY_COPY }, /* key_copy */ - { 163, KEY_CREATE }, /* key_create */ - { 58, KEY_CTAB }, /* key_ctab */ - { 59, KEY_DC }, /* key_dc */ - { 60, KEY_DL }, /* key_dl */ - { 61, KEY_DOWN }, /* key_down */ - { 62, KEY_EIC }, /* key_eic */ - { 164, KEY_END }, /* key_end */ - { 165, KEY_ENTER }, /* key_enter */ - { 63, KEY_EOL }, /* key_eol */ - { 64, KEY_EOS }, /* key_eos */ - { 166, KEY_EXIT }, /* key_exit */ - { 65, KEY_F(0) }, /* key_f0 */ - { 67, KEY_F(10) }, /* key_f10 */ - { 216, KEY_F(11) }, /* key_f11 */ - { 217, KEY_F(12) }, /* key_f12 */ - { 218, KEY_F(13) }, /* key_f13 */ - { 219, KEY_F(14) }, /* key_f14 */ - { 220, KEY_F(15) }, /* key_f15 */ - { 221, KEY_F(16) }, /* key_f16 */ - { 222, KEY_F(17) }, /* key_f17 */ - { 223, KEY_F(18) }, /* key_f18 */ - { 224, KEY_F(19) }, /* key_f19 */ - { 66, KEY_F(1) }, /* key_f1 */ - { 225, KEY_F(20) }, /* key_f20 */ - { 226, KEY_F(21) }, /* key_f21 */ - { 227, KEY_F(22) }, /* key_f22 */ - { 228, KEY_F(23) }, /* key_f23 */ - { 229, KEY_F(24) }, /* key_f24 */ - { 230, KEY_F(25) }, /* key_f25 */ - { 231, KEY_F(26) }, /* key_f26 */ - { 232, KEY_F(27) }, /* key_f27 */ - { 233, KEY_F(28) }, /* key_f28 */ - { 234, KEY_F(29) }, /* key_f29 */ - { 68, KEY_F(2) }, /* key_f2 */ - { 235, KEY_F(30) }, /* key_f30 */ - { 236, KEY_F(31) }, /* key_f31 */ - { 237, KEY_F(32) }, /* key_f32 */ - { 238, KEY_F(33) }, /* key_f33 */ - { 239, KEY_F(34) }, /* key_f34 */ - { 240, KEY_F(35) }, /* key_f35 */ - { 241, KEY_F(36) }, /* key_f36 */ - { 242, KEY_F(37) }, /* key_f37 */ - { 243, KEY_F(38) }, /* key_f38 */ - { 244, KEY_F(39) }, /* key_f39 */ - { 69, KEY_F(3) }, /* key_f3 */ - { 245, KEY_F(40) }, /* key_f40 */ - { 246, KEY_F(41) }, /* key_f41 */ - { 247, KEY_F(42) }, /* key_f42 */ - { 248, KEY_F(43) }, /* key_f43 */ - { 249, KEY_F(44) }, /* key_f44 */ - { 250, KEY_F(45) }, /* key_f45 */ - { 251, KEY_F(46) }, /* key_f46 */ - { 252, KEY_F(47) }, /* key_f47 */ - { 253, KEY_F(48) }, /* key_f48 */ - { 254, KEY_F(49) }, /* key_f49 */ - { 70, KEY_F(4) }, /* key_f4 */ - { 255, KEY_F(50) }, /* key_f50 */ - { 256, KEY_F(51) }, /* key_f51 */ - { 257, KEY_F(52) }, /* key_f52 */ - { 258, KEY_F(53) }, /* key_f53 */ - { 259, KEY_F(54) }, /* key_f54 */ - { 260, KEY_F(55) }, /* key_f55 */ - { 261, KEY_F(56) }, /* key_f56 */ - { 262, KEY_F(57) }, /* key_f57 */ - { 263, KEY_F(58) }, /* key_f58 */ - { 264, KEY_F(59) }, /* key_f59 */ - { 71, KEY_F(5) }, /* key_f5 */ - { 265, KEY_F(60) }, /* key_f60 */ - { 266, KEY_F(61) }, /* key_f61 */ - { 267, KEY_F(62) }, /* key_f62 */ - { 268, KEY_F(63) }, /* key_f63 */ - { 72, KEY_F(6) }, /* key_f6 */ - { 73, KEY_F(7) }, /* key_f7 */ - { 74, KEY_F(8) }, /* key_f8 */ - { 75, KEY_F(9) }, /* key_f9 */ - { 167, KEY_FIND }, /* key_find */ - { 168, KEY_HELP }, /* key_help */ - { 76, KEY_HOME }, /* key_home */ - { 77, KEY_IC }, /* key_ic */ - { 78, KEY_IL }, /* key_il */ - { 79, KEY_LEFT }, /* key_left */ - { 80, KEY_LL }, /* key_ll */ - { 169, KEY_MARK }, /* key_mark */ - { 170, KEY_MESSAGE }, /* key_message */ - { 355, KEY_MOUSE }, /* key_mouse */ - { 171, KEY_MOVE }, /* key_move */ - { 172, KEY_NEXT }, /* key_next */ - { 81, KEY_NPAGE }, /* key_npage */ - { 173, KEY_OPEN }, /* key_open */ - { 174, KEY_OPTIONS }, /* key_options */ - { 82, KEY_PPAGE }, /* key_ppage */ - { 175, KEY_PREVIOUS }, /* key_previous */ - { 176, KEY_PRINT }, /* key_print */ - { 177, KEY_REDO }, /* key_redo */ - { 178, KEY_REFERENCE }, /* key_reference */ - { 179, KEY_REFRESH }, /* key_refresh */ - { 180, KEY_REPLACE }, /* key_replace */ - { 181, KEY_RESTART }, /* key_restart */ - { 182, KEY_RESUME }, /* key_resume */ - { 83, KEY_RIGHT }, /* key_right */ - { 183, KEY_SAVE }, /* key_save */ - { 186, KEY_SBEG }, /* key_sbeg */ - { 187, KEY_SCANCEL }, /* key_scancel */ - { 188, KEY_SCOMMAND }, /* key_scommand */ - { 189, KEY_SCOPY }, /* key_scopy */ - { 190, KEY_SCREATE }, /* key_screate */ - { 191, KEY_SDC }, /* key_sdc */ - { 192, KEY_SDL }, /* key_sdl */ - { 193, KEY_SELECT }, /* key_select */ - { 194, KEY_SEND }, /* key_send */ - { 195, KEY_SEOL }, /* key_seol */ - { 196, KEY_SEXIT }, /* key_sexit */ - { 197, KEY_SFIND }, /* key_sfind */ - { 84, KEY_SF }, /* key_sf */ - { 198, KEY_SHELP }, /* key_shelp */ - { 199, KEY_SHOME }, /* key_shome */ - { 200, KEY_SIC }, /* key_sic */ - { 201, KEY_SLEFT }, /* key_sleft */ - { 202, KEY_SMESSAGE }, /* key_smessage */ - { 203, KEY_SMOVE }, /* key_smove */ - { 204, KEY_SNEXT }, /* key_snext */ - { 205, KEY_SOPTIONS }, /* key_soptions */ - { 206, KEY_SPREVIOUS }, /* key_sprevious */ - { 207, KEY_SPRINT }, /* key_sprint */ - { 208, KEY_SREDO }, /* key_sredo */ - { 209, KEY_SREPLACE }, /* key_sreplace */ - { 210, KEY_SRIGHT }, /* key_sright */ - { 85, KEY_SR }, /* key_sr */ - { 211, KEY_SRSUME }, /* key_srsume */ - { 212, KEY_SSAVE }, /* key_ssave */ - { 213, KEY_SSUSPEND }, /* key_ssuspend */ - { 86, KEY_STAB }, /* key_stab */ - { 214, KEY_SUNDO }, /* key_sundo */ - { 184, KEY_SUSPEND }, /* key_suspend */ - { 185, KEY_UNDO }, /* key_undo */ - { 87, KEY_UP }, /* key_up */ - { 0, 0} }; - -#endif /* NCU_KEYS_H */ diff --git a/deps/ncurses-5.9/ncurses/keys.list b/deps/ncurses-5.9/ncurses/keys.list deleted file mode 100644 index 1bca98f..0000000 --- a/deps/ncurses-5.9/ncurses/keys.list +++ /dev/null @@ -1,155 +0,0 @@ -KEY_A1 key_a1 -KEY_A3 key_a3 -KEY_B2 key_b2 -KEY_BACKSPACE key_backspace -KEY_BEG key_beg -KEY_BREAK -KEY_BTAB key_btab -KEY_C1 key_c1 -KEY_C3 key_c3 -KEY_CANCEL key_cancel -KEY_CATAB key_catab -KEY_CLEAR key_clear -KEY_CLOSE key_close -KEY_COMMAND key_command -KEY_COPY key_copy -KEY_CREATE key_create -KEY_CTAB key_ctab -KEY_DC key_dc -KEY_DL key_dl -KEY_DOWN key_down -KEY_EIC key_eic -KEY_END key_end -KEY_ENTER key_enter -KEY_EOL key_eol -KEY_EOS key_eos -KEY_EXIT key_exit -KEY_F(0) key_f0 -KEY_F(10) key_f10 -KEY_F(11) key_f11 -KEY_F(12) key_f12 -KEY_F(13) key_f13 -KEY_F(14) key_f14 -KEY_F(15) key_f15 -KEY_F(16) key_f16 -KEY_F(17) key_f17 -KEY_F(18) key_f18 -KEY_F(19) key_f19 -KEY_F(1) key_f1 -KEY_F(20) key_f20 -KEY_F(21) key_f21 -KEY_F(22) key_f22 -KEY_F(23) key_f23 -KEY_F(24) key_f24 -KEY_F(25) key_f25 -KEY_F(26) key_f26 -KEY_F(27) key_f27 -KEY_F(28) key_f28 -KEY_F(29) key_f29 -KEY_F(2) key_f2 -KEY_F(30) key_f30 -KEY_F(31) key_f31 -KEY_F(32) key_f32 -KEY_F(33) key_f33 -KEY_F(34) key_f34 -KEY_F(35) key_f35 -KEY_F(36) key_f36 -KEY_F(37) key_f37 -KEY_F(38) key_f38 -KEY_F(39) key_f39 -KEY_F(3) key_f3 -KEY_F(40) key_f40 -KEY_F(41) key_f41 -KEY_F(42) key_f42 -KEY_F(43) key_f43 -KEY_F(44) key_f44 -KEY_F(45) key_f45 -KEY_F(46) key_f46 -KEY_F(47) key_f47 -KEY_F(48) key_f48 -KEY_F(49) key_f49 -KEY_F(4) key_f4 -KEY_F(50) key_f50 -KEY_F(51) key_f51 -KEY_F(52) key_f52 -KEY_F(53) key_f53 -KEY_F(54) key_f54 -KEY_F(55) key_f55 -KEY_F(56) key_f56 -KEY_F(57) key_f57 -KEY_F(58) key_f58 -KEY_F(59) key_f59 -KEY_F(5) key_f5 -KEY_F(60) key_f60 -KEY_F(61) key_f61 -KEY_F(62) key_f62 -KEY_F(63) key_f63 -KEY_F(6) key_f6 -KEY_F(7) key_f7 -KEY_F(8) key_f8 -KEY_F(9) key_f9 -KEY_FIND key_find -KEY_HELP key_help -KEY_HOME key_home -KEY_IC key_ic -KEY_IL key_il -KEY_LEFT key_left -KEY_LL key_ll -KEY_MARK key_mark -KEY_MESSAGE key_message -KEY_MOUSE key_mouse -KEY_MOVE key_move -KEY_NEXT key_next -KEY_NPAGE key_npage -KEY_OPEN key_open -KEY_OPTIONS key_options -KEY_PPAGE key_ppage -KEY_PREVIOUS key_previous -KEY_PRINT key_print -KEY_REDO key_redo -KEY_REFERENCE key_reference -KEY_REFRESH key_refresh -KEY_REPLACE key_replace -KEY_RESET -KEY_RESIZE -KEY_RESTART key_restart -KEY_RESUME key_resume -KEY_RIGHT key_right -KEY_SAVE key_save -KEY_SBEG key_sbeg -KEY_SCANCEL key_scancel -KEY_SCOMMAND key_scommand -KEY_SCOPY key_scopy -KEY_SCREATE key_screate -KEY_SDC key_sdc -KEY_SDL key_sdl -KEY_SELECT key_select -KEY_SEND key_send -KEY_SEOL key_seol -KEY_SEXIT key_sexit -KEY_SFIND key_sfind -KEY_SF key_sf -KEY_SHELP key_shelp -KEY_SHOME key_shome -KEY_SIC key_sic -KEY_SLEFT key_sleft -KEY_SMESSAGE key_smessage -KEY_SMOVE key_smove -KEY_SNEXT key_snext -KEY_SOPTIONS key_soptions -KEY_SPREVIOUS key_sprevious -KEY_SPRINT key_sprint -KEY_SREDO key_sredo -KEY_SREPLACE key_sreplace -KEY_SRESET -KEY_SRIGHT key_sright -KEY_SR key_sr -KEY_SRSUME key_srsume -KEY_SSAVE key_ssave -KEY_SSUSPEND key_ssuspend -KEY_STAB key_stab -KEY_SUNDO key_sundo -KEY_SUSPEND key_suspend -KEY_UNDO key_undo -KEY_UP key_up -# These definitions were generated by ./tinfo/MKkeys_list.sh ../include/Caps diff --git a/deps/ncurses-5.9/ncurses/lib_gen.c b/deps/ncurses-5.9/ncurses/lib_gen.c deleted file mode 100644 index 3678fb0..0000000 --- a/deps/ncurses-5.9/ncurses/lib_gen.c +++ /dev/null @@ -1,583 +0,0 @@ -/* - * DO NOT EDIT THIS FILE BY HAND! - * It is generated by ./base/MKlib_gen.sh generated. - * - * This is a file of trivial functions generated from macro - * definitions in curses.h to satisfy the XSI Curses requirement - * that every macro also exist as a callable function. - * - * It will never be linked unless you call one of the entry - * points with its normal macro definition disabled. In that - * case, if you have no shared libraries, it will indirectly - * pull most of the rest of the library into your link image. - */ -#define NCURSES_ATTR_T int -#include - -#undef NCURSES_NOMACROS /* _this_ file uses macros */ - -#include - -#undef vw_scanw -#undef vwscanw - -#undef vw_printw -#undef vwprintw -NCURSES_EXPORT(int) (addch) (const chtype z) -{ - T((T_CALLED("addch(%s)"), _tracechtype2(0,z))); returnCode(waddch(stdscr,z)); -} -NCURSES_EXPORT(int) (addchnstr) (const chtype * a1, int z) -{ - T((T_CALLED("addchnstr(%p,%d)"), (const void *)a1, z)); returnCode(waddchnstr(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (addchstr) (const chtype * z) -{ - T((T_CALLED("addchstr(%p)"), (const void *)z)); returnCode(waddchnstr(stdscr,z,-1)); -} -NCURSES_EXPORT(int) (addnstr) (const char * a1, int z) -{ - T((T_CALLED("addnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(waddnstr(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (addstr) (const char * z) -{ - T((T_CALLED("addstr(%s)"), _nc_visbuf2(0,z))); returnCode(waddnstr(stdscr,z,-1)); -} -NCURSES_EXPORT(int) (attroff) (int z) -{ - T((T_CALLED("attroff(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_off(stdscr, (attr_t)(z), ((void *)0))); -} -NCURSES_EXPORT(int) (attron) (int z) -{ - T((T_CALLED("attron(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_on(stdscr, (attr_t)(z), ((void *)0))); -} -NCURSES_EXPORT(int) (attrset) (int z) -{ - T((T_CALLED("attrset(%s)"), _traceattr2(0,(chtype)z))); returnIntAttr((attr_t)((stdscr) ? ((stdscr)->_attrs = (attr_t)(z), (0)) : (-1))); -} -NCURSES_EXPORT(int) (attr_get) (attr_t * a1, short * a2, void * z) -{ - T((T_CALLED("attr_get(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((void)((a1) != (void *)0 && (*(a1) = (stdscr)->_attrs)), (void)((a2) != (void *)0 && (*(a2) = (short)((int)((((unsigned long)((stdscr)->_attrs) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))))), (0))); -} -NCURSES_EXPORT(int) (attr_off) (attr_t a1, void * z) -{ - T((T_CALLED("attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_off(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (attr_on) (attr_t a1, void * z) -{ - T((T_CALLED("attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_on(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (attr_set) (attr_t a1, short a2, void * z) -{ - T((T_CALLED("attr_set(%s,%d,%p)"), _traceattr2(0,a1), a2, (const void *)z)); returnCode(((stdscr)->_attrs = (((a1) & ~((((1U) << 8) - 1U) << ((0) + 8))) | (attr_t)((a2) << ((0) + 8))), (0))); -} -NCURSES_EXPORT(int) (bkgd) (chtype z) -{ - T((T_CALLED("bkgd(%s)"), _tracechtype2(0,z))); returnCode(wbkgd(stdscr,z)); -} -NCURSES_EXPORT(void) (bkgdset) (chtype z) -{ - T((T_CALLED("bkgdset(%s)"), _tracechtype2(0,z))); wbkgdset(stdscr,z); - returnVoid; -} -NCURSES_EXPORT(int) (border) (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z) -{ - T((T_CALLED("border(%s,%s,%s,%s,%s,%s,%s,%s)"), _tracechtype2(0,a1), _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,z))); returnCode(wborder(stdscr, a1, a2, a3, a4, a5, a6, a7, z)); -} -NCURSES_EXPORT(int) (box) (WINDOW * a1, chtype a2, chtype z) -{ - T((T_CALLED("box(%p,%s,%s)"), (const void *)a1, _tracechtype2(1,a2), _tracechtype2(2,z))); returnCode(wborder(a1, a2, a2, z, z, 0, 0, 0, 0)); -} -NCURSES_EXPORT(int) (chgat) (int a1, attr_t a2, short a3, const void * z) -{ - T((T_CALLED("chgat(%d,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, (const void *)z)); returnCode(wchgat(stdscr,a1,a2,a3,z)); -} -NCURSES_EXPORT(int) (clear) (void) -{ - T((T_CALLED("clear()"))); returnCode(wclear(stdscr)); -} -NCURSES_EXPORT(int) (clrtobot) (void) -{ - T((T_CALLED("clrtobot()"))); returnCode(wclrtobot(stdscr)); -} -NCURSES_EXPORT(int) (clrtoeol) (void) -{ - T((T_CALLED("clrtoeol()"))); returnCode(wclrtoeol(stdscr)); -} -NCURSES_EXPORT(int) (color_set) (short a1, void * z) -{ - T((T_CALLED("color_set(%d,%p)"), a1, (const void *)z)); returnCode(wcolor_set(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (COLOR_PAIR) (int z) -{ - T((T_CALLED("COLOR_PAIR(%d)"), z)); returnCode(((z) << ((0) + 8))); -} -NCURSES_EXPORT(int) (delch) (void) -{ - T((T_CALLED("delch()"))); returnCode(wdelch(stdscr)); -} -NCURSES_EXPORT(int) (deleteln) (void) -{ - T((T_CALLED("deleteln()"))); returnCode(winsdelln(stdscr,-1)); -} -NCURSES_EXPORT(int) (echochar) (const chtype z) -{ - T((T_CALLED("echochar(%s)"), _tracechtype2(0,z))); returnCode(wechochar(stdscr,z)); -} -NCURSES_EXPORT(int) (erase) (void) -{ - T((T_CALLED("erase()"))); returnCode(werase(stdscr)); -} -NCURSES_EXPORT(chtype) (getbkgd) (WINDOW * z) -{ - T((T_CALLED("getbkgd(%p)"), (const void *)z)); returnChtype(((z)->_bkgd)); -} -NCURSES_EXPORT(int) (getch) (void) -{ - T((T_CALLED("getch()"))); returnCode(wgetch(stdscr)); -} -NCURSES_EXPORT(int) (getnstr) (char * a1, int z) -{ - T((T_CALLED("getnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(wgetnstr(stdscr, a1, z)); -} -NCURSES_EXPORT(int) (getstr) (char * z) -{ - T((T_CALLED("getstr(%s)"), _nc_visbuf2(0,z))); returnCode(wgetnstr(stdscr, z, -1)); -} -NCURSES_EXPORT(int) (hline) (chtype a1, int z) -{ - T((T_CALLED("hline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(whline(stdscr, a1, z)); -} -NCURSES_EXPORT(chtype) (inch) (void) -{ - T((T_CALLED("inch()"))); returnChtype(winch(stdscr)); -} -NCURSES_EXPORT(int) (inchnstr) (chtype * a1, int z) -{ - T((T_CALLED("inchnstr(%p,%d)"), (const void *)a1, z)); returnCode(winchnstr(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (inchstr) (chtype * z) -{ - T((T_CALLED("inchstr(%p)"), (const void *)z)); returnCode(winchnstr(stdscr, z, -1)); -} -NCURSES_EXPORT(int) (innstr) (char * a1, int z) -{ - return winnstr(stdscr,a1,z) ; -} -NCURSES_EXPORT(int) (insch) (chtype z) -{ - T((T_CALLED("insch(%s)"), _tracechtype2(0,z))); returnCode(winsch(stdscr,z)); -} -NCURSES_EXPORT(int) (insdelln) (int z) -{ - T((T_CALLED("insdelln(%d)"), z)); returnCode(winsdelln(stdscr,z)); -} -NCURSES_EXPORT(int) (insertln) (void) -{ - T((T_CALLED("insertln()"))); returnCode(winsdelln(stdscr,1)); -} -NCURSES_EXPORT(int) (insnstr) (const char * a1, int z) -{ - T((T_CALLED("insnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(winsnstr(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (insstr) (const char * z) -{ - T((T_CALLED("insstr(%s)"), _nc_visbuf2(0,z))); returnCode(winsnstr(stdscr, z, -1)); -} -NCURSES_EXPORT(int) (instr) (char * z) -{ - T((T_CALLED("instr(%s)"), _nc_visbuf2(0,z))); returnCode(winnstr(stdscr, z, -1)); -} -NCURSES_EXPORT(int) (move) (int a1, int z) -{ - T((T_CALLED("move(%d,%d)"), a1, z)); returnCode(wmove(stdscr,a1,z)); -} -NCURSES_EXPORT(int) (mvaddch) (int a1, int a2, const chtype z) -{ - T((T_CALLED("mvaddch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddch(stdscr,z))); -} -NCURSES_EXPORT(int) (mvaddchnstr) (int a1, int a2, const chtype * a3, int z) -{ - T((T_CALLED("mvaddchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,a3,z))); -} -NCURSES_EXPORT(int) (mvaddchstr) (int a1, int a2, const chtype * z) -{ - T((T_CALLED("mvaddchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,z,-1))); -} -NCURSES_EXPORT(int) (mvaddnstr) (int a1, int a2, const char * a3, int z) -{ - T((T_CALLED("mvaddnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,a3,z))); -} -NCURSES_EXPORT(int) (mvaddstr) (int a1, int a2, const char * z) -{ - T((T_CALLED("mvaddstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,z,-1))); -} -NCURSES_EXPORT(int) (mvchgat) (int a1, int a2, int a3, attr_t a4, short a5, const void * z) -{ - T((T_CALLED("mvchgat(%d,%d,%d,%s,%d,%p)"), a1, a2, a3, _traceattr2(3,a4), a5, (const void *)z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wchgat(stdscr,a3,a4,a5,z))); -} -NCURSES_EXPORT(int) (mvdelch) (int a1, int z) -{ - T((T_CALLED("mvdelch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wdelch(stdscr))); -} -NCURSES_EXPORT(int) (mvgetch) (int a1, int z) -{ - T((T_CALLED("mvgetch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wgetch(stdscr))); -} -NCURSES_EXPORT(int) (mvgetnstr) (int a1, int a2, char * a3, int z) -{ - T((T_CALLED("mvgetnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr,a3,z))); -} -NCURSES_EXPORT(int) (mvgetstr) (int a1, int a2, char * z) -{ - T((T_CALLED("mvgetstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr, z, -1))); -} -NCURSES_EXPORT(int) (mvhline) (int a1, int a2, chtype a3, int z) -{ - T((T_CALLED("mvhline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : whline(stdscr,a3,z))); -} -NCURSES_EXPORT(chtype) (mvinch) (int a1, int z) -{ - T((T_CALLED("mvinch(%d,%d)"), a1, z)); returnChtype((wmove(stdscr,a1,z) == (-1) ? (chtype)((-1)) : winch(stdscr))); -} -NCURSES_EXPORT(int) (mvinchnstr) (int a1, int a2, chtype * a3, int z) -{ - T((T_CALLED("mvinchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr,a3,z))); -} -NCURSES_EXPORT(int) (mvinchstr) (int a1, int a2, chtype * z) -{ - T((T_CALLED("mvinchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr, z, -1))); -} -NCURSES_EXPORT(int) (mvinnstr) (int a1, int a2, char * a3, int z) -{ - return (wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr,a3,z)) ; -} -NCURSES_EXPORT(int) (mvinsch) (int a1, int a2, chtype z) -{ - T((T_CALLED("mvinsch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsch(stdscr,z))); -} -NCURSES_EXPORT(int) (mvinsnstr) (int a1, int a2, const char * a3, int z) -{ - T((T_CALLED("mvinsnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr,a3,z))); -} -NCURSES_EXPORT(int) (mvinsstr) (int a1, int a2, const char * z) -{ - T((T_CALLED("mvinsstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr, z, -1))); -} -NCURSES_EXPORT(int) (mvinstr) (int a1, int a2, char * z) -{ - T((T_CALLED("mvinstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr, z, -1))); -} -NCURSES_EXPORT(int) (mvvline) (int a1, int a2, chtype a3, int z) -{ - T((T_CALLED("mvvline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wvline(stdscr,a3,z))); -} -NCURSES_EXPORT(int) (mvwaddch) (WINDOW * a1, int a2, int a3, const chtype z) -{ - T((T_CALLED("mvwaddch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddch(a1,z))); -} -NCURSES_EXPORT(int) (mvwaddchnstr) (WINDOW * a1, int a2, int a3, const chtype * a4, int z) -{ - T((T_CALLED("mvwaddchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,a4,z))); -} -NCURSES_EXPORT(int) (mvwaddchstr) (WINDOW * a1, int a2, int a3, const chtype * z) -{ - T((T_CALLED("mvwaddchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,z,-1))); -} -NCURSES_EXPORT(int) (mvwaddnstr) (WINDOW * a1, int a2, int a3, const char * a4, int z) -{ - T((T_CALLED("mvwaddnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,a4,z))); -} -NCURSES_EXPORT(int) (mvwaddstr) (WINDOW * a1, int a2, int a3, const char * z) -{ - T((T_CALLED("mvwaddstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,z,-1))); -} -NCURSES_EXPORT(int) (mvwchgat) (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z) -{ - T((T_CALLED("mvwchgat(%p,%d,%d,%d,%s,%d,%p)"), (const void *)a1, a2, a3, a4, _traceattr2(4,a5), a6, (const void *)z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wchgat(a1,a4,a5,a6,z))); -} -NCURSES_EXPORT(int) (mvwdelch) (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwdelch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wdelch(a1))); -} -NCURSES_EXPORT(int) (mvwgetch) (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwgetch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wgetch(a1))); -} -NCURSES_EXPORT(int) (mvwgetnstr) (WINDOW * a1, int a2, int a3, char * a4, int z) -{ - T((T_CALLED("mvwgetnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1,a4,z))); -} -NCURSES_EXPORT(int) (mvwgetstr) (WINDOW * a1, int a2, int a3, char * z) -{ - T((T_CALLED("mvwgetstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1, z, -1))); -} -NCURSES_EXPORT(int) (mvwhline) (WINDOW * a1, int a2, int a3, chtype a4, int z) -{ - T((T_CALLED("mvwhline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : whline(a1,a4,z))); -} -NCURSES_EXPORT(chtype) (mvwinch) (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwinch(%p,%d,%d)"), (const void *)a1, a2, z)); returnChtype((wmove(a1,a2,z) == (-1) ? (chtype)((-1)) : winch(a1))); -} -NCURSES_EXPORT(int) (mvwinchnstr) (WINDOW * a1, int a2, int a3, chtype * a4, int z) -{ - T((T_CALLED("mvwinchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1,a4,z))); -} -NCURSES_EXPORT(int) (mvwinchstr) (WINDOW * a1, int a2, int a3, chtype * z) -{ - T((T_CALLED("mvwinchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1, z, -1))); -} -NCURSES_EXPORT(int) (mvwinnstr) (WINDOW * a1, int a2, int a3, char * a4, int z) -{ - return (wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1,a4,z)) ; -} -NCURSES_EXPORT(int) (mvwinsch) (WINDOW * a1, int a2, int a3, chtype z) -{ - T((T_CALLED("mvwinsch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsch(a1,z))); -} -NCURSES_EXPORT(int) (mvwinsnstr) (WINDOW * a1, int a2, int a3, const char * a4, int z) -{ - T((T_CALLED("mvwinsnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1,a4,z))); -} -NCURSES_EXPORT(int) (mvwinsstr) (WINDOW * a1, int a2, int a3, const char * z) -{ - T((T_CALLED("mvwinsstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1, z, -1))); -} -NCURSES_EXPORT(int) (mvwinstr) (WINDOW * a1, int a2, int a3, char * z) -{ - T((T_CALLED("mvwinstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1, z, -1))); -} -NCURSES_EXPORT(int) (mvwvline) (WINDOW * a1, int a2, int a3, chtype a4, int z) -{ - T((T_CALLED("mvwvline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wvline(a1,a4,z))); -} -NCURSES_EXPORT(int) (PAIR_NUMBER) (int z) -{ - T((T_CALLED("PAIR_NUMBER(%d)"), z)); returnCode(((int)((((unsigned long)(z) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8)))); -} -NCURSES_EXPORT(int) (redrawwin) (WINDOW * z) -{ - T((T_CALLED("redrawwin(%p)"), (const void *)z)); returnCode(wredrawln(z, 0, (z)->_maxy+1)); -} -NCURSES_EXPORT(int) (refresh) (void) -{ - T((T_CALLED("refresh()"))); returnCode(wrefresh(stdscr)); -} -NCURSES_EXPORT(int) (scrl) (int z) -{ - T((T_CALLED("scrl(%d)"), z)); returnCode(wscrl(stdscr,z)); -} -NCURSES_EXPORT(int) (scroll) (WINDOW * z) -{ - T((T_CALLED("scroll(%p)"), (const void *)z)); returnCode(wscrl(z,1)); -} -NCURSES_EXPORT(int) (setscrreg) (int a1, int z) -{ - T((T_CALLED("setscrreg(%d,%d)"), a1, z)); returnCode(wsetscrreg(stdscr,a1,z)); -} -#if USE_WIDEC_SUPPORT -NCURSES_EXPORT(int) (slk_attr_off) (const attr_t a1, void * z) -{ - T((T_CALLED("slk_attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attroff(a1))); -} -#endif -#if USE_WIDEC_SUPPORT -NCURSES_EXPORT(int) (slk_attr_on) (attr_t a1, void * z) -{ - T((T_CALLED("slk_attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attron(a1))); -} -#endif -NCURSES_EXPORT(int) (standout) (void) -{ - T((T_CALLED("standout()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)(((1U) << ((8) + 8))), (0)) : (-1)))); -} -NCURSES_EXPORT(int) (standend) (void) -{ - T((T_CALLED("standend()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1)))); -} -NCURSES_EXPORT(void) (timeout) (int z) -{ - T((T_CALLED("timeout(%d)"), z)); wtimeout(stdscr,z); - returnVoid; -} -NCURSES_EXPORT(int) (touchline) (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("touchline(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wtouchln((a1), a2, z, 1)); -} -NCURSES_EXPORT(int) (touchwin) (WINDOW * z) -{ - T((T_CALLED("touchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 1)); -} -NCURSES_EXPORT(int) (untouchwin) (WINDOW * z) -{ - T((T_CALLED("untouchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 0)); -} -NCURSES_EXPORT(int) (vline) (chtype a1, int z) -{ - T((T_CALLED("vline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(wvline(stdscr, a1, z)); -} -NCURSES_EXPORT(int) (vw_printw) (WINDOW * a1, const char * a2, va_list z) -{ - T((T_CALLED("vw_printw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z)); -} -NCURSES_EXPORT(int) (vw_scanw) (WINDOW * a1, char * a2, va_list z) -{ - T((T_CALLED("vw_scanw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z)); -} -NCURSES_EXPORT(int) (waddchstr) (WINDOW * a1, const chtype * z) -{ - T((T_CALLED("waddchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(waddchnstr(a1,z,-1)); -} -NCURSES_EXPORT(int) (waddstr) (WINDOW * a1, const char * z) -{ - T((T_CALLED("waddstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(waddnstr(a1,z,-1)); -} -NCURSES_EXPORT(int) (wattron) (WINDOW * a1, int z) -{ - T((T_CALLED("wattron(%p,%d)"), (const void *)a1, z)); returnCode(wattr_on(a1, (attr_t)(z), ((void *)0))); -} -NCURSES_EXPORT(int) (wattroff) (WINDOW * a1, int z) -{ - T((T_CALLED("wattroff(%p,%d)"), (const void *)a1, z)); returnCode(wattr_off(a1, (attr_t)(z), ((void *)0))); -} -NCURSES_EXPORT(int) (wattrset) (WINDOW * a1, int z) -{ - T((T_CALLED("wattrset(%p,%d)"), (const void *)a1, z)); returnIntAttr((attr_t)((a1) ? ((a1)->_attrs = (attr_t)(z), (0)) : (-1))); -} -NCURSES_EXPORT(int) (wattr_get) (WINDOW * a1, attr_t * a2, short * a3, void * z) -{ - T((T_CALLED("wattr_get(%p,%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)a3, (const void *)z)); returnCode(((void)((a2) != (void *)0 && (*(a2) = (a1)->_attrs)), (void)((a3) != (void *)0 && (*(a3) = (short)((int)((((unsigned long)((a1)->_attrs) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))))), (0))); -} -NCURSES_EXPORT(int) (wattr_set) (WINDOW * a1, attr_t a2, short a3, void * z) -{ - T((T_CALLED("wattr_set(%p,%s,%d,%p)"), (const void *)a1, _traceattr2(1,a2), a3, (const void *)z)); returnCode(((a1)->_attrs = (((a2) & ~((((1U) << 8) - 1U) << ((0) + 8))) | (attr_t)((a3) << ((0) + 8))), (0))); -} -NCURSES_EXPORT(int) (wdeleteln) (WINDOW * z) -{ - T((T_CALLED("wdeleteln(%p)"), (const void *)z)); returnCode(winsdelln(z,-1)); -} -NCURSES_EXPORT(int) (wgetstr) (WINDOW * a1, char * z) -{ - T((T_CALLED("wgetstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(wgetnstr(a1, z, -1)); -} -NCURSES_EXPORT(int) (winchstr) (WINDOW * a1, chtype * z) -{ - T((T_CALLED("winchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(winchnstr(a1, z, -1)); -} -NCURSES_EXPORT(int) (winsertln) (WINDOW * z) -{ - T((T_CALLED("winsertln(%p)"), (const void *)z)); returnCode(winsdelln(z,1)); -} -NCURSES_EXPORT(int) (winsstr) (WINDOW * a1, const char * z) -{ - T((T_CALLED("winsstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winsnstr(a1, z, -1)); -} -NCURSES_EXPORT(int) (winstr) (WINDOW * a1, char * z) -{ - T((T_CALLED("winstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winnstr(a1, z, -1)); -} -NCURSES_EXPORT(int) (wstandout) (WINDOW * z) -{ - T((T_CALLED("wstandout(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)(((1U) << ((8) + 8))), (0)) : (-1)))); -} -NCURSES_EXPORT(int) (wstandend) (WINDOW * z) -{ - T((T_CALLED("wstandend(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1)))); -} -NCURSES_EXPORT(int) (getattrs) (const WINDOW * z) -{ - T((T_CALLED("getattrs(%p)"), (const void *)z)); returnCode((int)((z) ? (z)->_attrs : (1U - 1U))); -} -NCURSES_EXPORT(int) (getcurx) (const WINDOW * z) -{ - T((T_CALLED("getcurx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_curx : (-1))); -} -NCURSES_EXPORT(int) (getcury) (const WINDOW * z) -{ - T((T_CALLED("getcury(%p)"), (const void *)z)); returnCode(((z) ? (z)->_cury : (-1))); -} -NCURSES_EXPORT(int) (getbegx) (const WINDOW * z) -{ - T((T_CALLED("getbegx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begx : (-1))); -} -NCURSES_EXPORT(int) (getbegy) (const WINDOW * z) -{ - T((T_CALLED("getbegy(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begy : (-1))); -} -NCURSES_EXPORT(int) (getmaxx) (const WINDOW * z) -{ - T((T_CALLED("getmaxx(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxx + 1) : (-1))); -} -NCURSES_EXPORT(int) (getmaxy) (const WINDOW * z) -{ - T((T_CALLED("getmaxy(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxy + 1) : (-1))); -} -NCURSES_EXPORT(int) (getparx) (const WINDOW * z) -{ - T((T_CALLED("getparx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_parx : (-1))); -} -NCURSES_EXPORT(int) (getpary) (const WINDOW * z) -{ - T((T_CALLED("getpary(%p)"), (const void *)z)); returnCode(((z) ? (z)->_pary : (-1))); -} -NCURSES_EXPORT(WINDOW *) (wgetparent) (const WINDOW * z) -{ - T((T_CALLED("wgetparent(%p)"), (const void *)z)); returnWin(((z) ? (z)->_parent : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_cleared) (const WINDOW * z) -{ - T((T_CALLED("is_cleared(%p)"), (const void *)z)); returnBool(((z) ? (z)->_clear : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_idcok) (const WINDOW * z) -{ - T((T_CALLED("is_idcok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idcok : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_idlok) (const WINDOW * z) -{ - T((T_CALLED("is_idlok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idlok : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_immedok) (const WINDOW * z) -{ - T((T_CALLED("is_immedok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_immed : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_keypad) (const WINDOW * z) -{ - T((T_CALLED("is_keypad(%p)"), (const void *)z)); returnBool(((z) ? (z)->_use_keypad : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_leaveok) (const WINDOW * z) -{ - T((T_CALLED("is_leaveok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_leaveok : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_nodelay) (const WINDOW * z) -{ - T((T_CALLED("is_nodelay(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_delay == 0) : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_notimeout) (const WINDOW * z) -{ - T((T_CALLED("is_notimeout(%p)"), (const void *)z)); returnBool(((z) ? (z)->_notimeout : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_pad) (const WINDOW * z) -{ - T((T_CALLED("is_pad(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x10) != 0 : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_scrollok) (const WINDOW * z) -{ - T((T_CALLED("is_scrollok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_scroll : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_subwin) (const WINDOW * z) -{ - T((T_CALLED("is_subwin(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x01) != 0 : 0)); -} -NCURSES_EXPORT(NCURSES_BOOL) (is_syncok) (const WINDOW * z) -{ - T((T_CALLED("is_syncok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_sync : 0)); -} -NCURSES_EXPORT(int) (wgetscrreg) (const WINDOW * a1, int * a2, int * z) -{ - T((T_CALLED("wgetscrreg(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((a1) ? (*(a2) = (a1)->_regtop, *(z) = (a1)->_regbottom, (0)) : (-1))); -} -NCURSES_EXPORT(NCURSES_BOOL) (mouse_trafo) (int * a1, int * a2, NCURSES_BOOL z) -{ - T((T_CALLED("mouse_trafo(%p,%p,%#lx)"), (const void *)a1, (const void *)a2, (long)z)); returnBool(wmouse_trafo(stdscr,a1,a2,z)); -} diff --git a/deps/ncurses-5.9/ncurses/lib_keyname.c b/deps/ncurses-5.9/ncurses/lib_keyname.c deleted file mode 100644 index c6ebc0a..0000000 --- a/deps/ncurses-5.9/ncurses/lib_keyname.c +++ /dev/null @@ -1,406 +0,0 @@ -/* generated by MKkeyname.awk */ - -#include -#include - -struct kn { short offset; int code; }; -static const struct kn _nc_key_names[] = { - { 0, KEY_A1 }, - { 7, KEY_A3 }, - { 14, KEY_B2 }, - { 21, KEY_BACKSPACE }, - { 35, KEY_BEG }, - { 43, KEY_BREAK }, - { 53, KEY_BTAB }, - { 62, KEY_C1 }, - { 69, KEY_C3 }, - { 76, KEY_CANCEL }, - { 87, KEY_CATAB }, - { 97, KEY_CLEAR }, - { 107, KEY_CLOSE }, - { 117, KEY_COMMAND }, - { 129, KEY_COPY }, - { 138, KEY_CREATE }, - { 149, KEY_CTAB }, - { 158, KEY_DC }, - { 165, KEY_DL }, - { 172, KEY_DOWN }, - { 181, KEY_EIC }, - { 189, KEY_END }, - { 197, KEY_ENTER }, - { 207, KEY_EOL }, - { 215, KEY_EOS }, - { 223, KEY_EXIT }, - { 232, KEY_F(0) }, - { 241, KEY_F(10) }, - { 251, KEY_F(11) }, - { 261, KEY_F(12) }, - { 271, KEY_F(13) }, - { 281, KEY_F(14) }, - { 291, KEY_F(15) }, - { 301, KEY_F(16) }, - { 311, KEY_F(17) }, - { 321, KEY_F(18) }, - { 331, KEY_F(19) }, - { 341, KEY_F(1) }, - { 350, KEY_F(20) }, - { 360, KEY_F(21) }, - { 370, KEY_F(22) }, - { 380, KEY_F(23) }, - { 390, KEY_F(24) }, - { 400, KEY_F(25) }, - { 410, KEY_F(26) }, - { 420, KEY_F(27) }, - { 430, KEY_F(28) }, - { 440, KEY_F(29) }, - { 450, KEY_F(2) }, - { 459, KEY_F(30) }, - { 469, KEY_F(31) }, - { 479, KEY_F(32) }, - { 489, KEY_F(33) }, - { 499, KEY_F(34) }, - { 509, KEY_F(35) }, - { 519, KEY_F(36) }, - { 529, KEY_F(37) }, - { 539, KEY_F(38) }, - { 549, KEY_F(39) }, - { 559, KEY_F(3) }, - { 568, KEY_F(40) }, - { 578, KEY_F(41) }, - { 588, KEY_F(42) }, - { 598, KEY_F(43) }, - { 608, KEY_F(44) }, - { 618, KEY_F(45) }, - { 628, KEY_F(46) }, - { 638, KEY_F(47) }, - { 648, KEY_F(48) }, - { 658, KEY_F(49) }, - { 668, KEY_F(4) }, - { 677, KEY_F(50) }, - { 687, KEY_F(51) }, - { 697, KEY_F(52) }, - { 707, KEY_F(53) }, - { 717, KEY_F(54) }, - { 727, KEY_F(55) }, - { 737, KEY_F(56) }, - { 747, KEY_F(57) }, - { 757, KEY_F(58) }, - { 767, KEY_F(59) }, - { 777, KEY_F(5) }, - { 786, KEY_F(60) }, - { 796, KEY_F(61) }, - { 806, KEY_F(62) }, - { 816, KEY_F(63) }, - { 826, KEY_F(6) }, - { 835, KEY_F(7) }, - { 844, KEY_F(8) }, - { 853, KEY_F(9) }, - { 862, KEY_FIND }, - { 871, KEY_HELP }, - { 880, KEY_HOME }, - { 889, KEY_IC }, - { 896, KEY_IL }, - { 903, KEY_LEFT }, - { 912, KEY_LL }, - { 919, KEY_MARK }, - { 928, KEY_MESSAGE }, - { 940, KEY_MOUSE }, - { 950, KEY_MOVE }, - { 959, KEY_NEXT }, - { 968, KEY_NPAGE }, - { 978, KEY_OPEN }, - { 987, KEY_OPTIONS }, - { 999, KEY_PPAGE }, - { 1009, KEY_PREVIOUS }, - { 1022, KEY_PRINT }, - { 1032, KEY_REDO }, - { 1041, KEY_REFERENCE }, - { 1055, KEY_REFRESH }, - { 1067, KEY_REPLACE }, - { 1079, KEY_RESET }, - { 1089, KEY_RESIZE }, - { 1100, KEY_RESTART }, - { 1112, KEY_RESUME }, - { 1123, KEY_RIGHT }, - { 1133, KEY_SAVE }, - { 1142, KEY_SBEG }, - { 1151, KEY_SCANCEL }, - { 1163, KEY_SCOMMAND }, - { 1176, KEY_SCOPY }, - { 1186, KEY_SCREATE }, - { 1198, KEY_SDC }, - { 1206, KEY_SDL }, - { 1214, KEY_SELECT }, - { 1225, KEY_SEND }, - { 1234, KEY_SEOL }, - { 1243, KEY_SEXIT }, - { 1253, KEY_SFIND }, - { 1263, KEY_SF }, - { 1270, KEY_SHELP }, - { 1280, KEY_SHOME }, - { 1290, KEY_SIC }, - { 1298, KEY_SLEFT }, - { 1308, KEY_SMESSAGE }, - { 1321, KEY_SMOVE }, - { 1331, KEY_SNEXT }, - { 1341, KEY_SOPTIONS }, - { 1354, KEY_SPREVIOUS }, - { 1368, KEY_SPRINT }, - { 1379, KEY_SREDO }, - { 1389, KEY_SREPLACE }, - { 1402, KEY_SRESET }, - { 1413, KEY_SRIGHT }, - { 1424, KEY_SR }, - { 1431, KEY_SRSUME }, - { 1442, KEY_SSAVE }, - { 1452, KEY_SSUSPEND }, - { 1465, KEY_STAB }, - { 1474, KEY_SUNDO }, - { 1484, KEY_SUSPEND }, - { 1496, KEY_UNDO }, - { 1505, KEY_UP }, - { -1, 0 }}; - -static const char key_names[] = - "KEY_A1\0" - "KEY_A3\0" - "KEY_B2\0" - "KEY_BACKSPACE\0" - "KEY_BEG\0" - "KEY_BREAK\0" - "KEY_BTAB\0" - "KEY_C1\0" - "KEY_C3\0" - "KEY_CANCEL\0" - "KEY_CATAB\0" - "KEY_CLEAR\0" - "KEY_CLOSE\0" - "KEY_COMMAND\0" - "KEY_COPY\0" - "KEY_CREATE\0" - "KEY_CTAB\0" - "KEY_DC\0" - "KEY_DL\0" - "KEY_DOWN\0" - "KEY_EIC\0" - "KEY_END\0" - "KEY_ENTER\0" - "KEY_EOL\0" - "KEY_EOS\0" - "KEY_EXIT\0" - "KEY_F(0)\0" - "KEY_F(10)\0" - "KEY_F(11)\0" - "KEY_F(12)\0" - "KEY_F(13)\0" - "KEY_F(14)\0" - "KEY_F(15)\0" - "KEY_F(16)\0" - "KEY_F(17)\0" - "KEY_F(18)\0" - "KEY_F(19)\0" - "KEY_F(1)\0" - "KEY_F(20)\0" - "KEY_F(21)\0" - "KEY_F(22)\0" - "KEY_F(23)\0" - "KEY_F(24)\0" - "KEY_F(25)\0" - "KEY_F(26)\0" - "KEY_F(27)\0" - "KEY_F(28)\0" - "KEY_F(29)\0" - "KEY_F(2)\0" - "KEY_F(30)\0" - "KEY_F(31)\0" - "KEY_F(32)\0" - "KEY_F(33)\0" - "KEY_F(34)\0" - "KEY_F(35)\0" - "KEY_F(36)\0" - "KEY_F(37)\0" - "KEY_F(38)\0" - "KEY_F(39)\0" - "KEY_F(3)\0" - "KEY_F(40)\0" - "KEY_F(41)\0" - "KEY_F(42)\0" - "KEY_F(43)\0" - "KEY_F(44)\0" - "KEY_F(45)\0" - "KEY_F(46)\0" - "KEY_F(47)\0" - "KEY_F(48)\0" - "KEY_F(49)\0" - "KEY_F(4)\0" - "KEY_F(50)\0" - "KEY_F(51)\0" - "KEY_F(52)\0" - "KEY_F(53)\0" - "KEY_F(54)\0" - "KEY_F(55)\0" - "KEY_F(56)\0" - "KEY_F(57)\0" - "KEY_F(58)\0" - "KEY_F(59)\0" - "KEY_F(5)\0" - "KEY_F(60)\0" - "KEY_F(61)\0" - "KEY_F(62)\0" - "KEY_F(63)\0" - "KEY_F(6)\0" - "KEY_F(7)\0" - "KEY_F(8)\0" - "KEY_F(9)\0" - "KEY_FIND\0" - "KEY_HELP\0" - "KEY_HOME\0" - "KEY_IC\0" - "KEY_IL\0" - "KEY_LEFT\0" - "KEY_LL\0" - "KEY_MARK\0" - "KEY_MESSAGE\0" - "KEY_MOUSE\0" - "KEY_MOVE\0" - "KEY_NEXT\0" - "KEY_NPAGE\0" - "KEY_OPEN\0" - "KEY_OPTIONS\0" - "KEY_PPAGE\0" - "KEY_PREVIOUS\0" - "KEY_PRINT\0" - "KEY_REDO\0" - "KEY_REFERENCE\0" - "KEY_REFRESH\0" - "KEY_REPLACE\0" - "KEY_RESET\0" - "KEY_RESIZE\0" - "KEY_RESTART\0" - "KEY_RESUME\0" - "KEY_RIGHT\0" - "KEY_SAVE\0" - "KEY_SBEG\0" - "KEY_SCANCEL\0" - "KEY_SCOMMAND\0" - "KEY_SCOPY\0" - "KEY_SCREATE\0" - "KEY_SDC\0" - "KEY_SDL\0" - "KEY_SELECT\0" - "KEY_SEND\0" - "KEY_SEOL\0" - "KEY_SEXIT\0" - "KEY_SFIND\0" - "KEY_SF\0" - "KEY_SHELP\0" - "KEY_SHOME\0" - "KEY_SIC\0" - "KEY_SLEFT\0" - "KEY_SMESSAGE\0" - "KEY_SMOVE\0" - "KEY_SNEXT\0" - "KEY_SOPTIONS\0" - "KEY_SPREVIOUS\0" - "KEY_SPRINT\0" - "KEY_SREDO\0" - "KEY_SREPLACE\0" - "KEY_SRESET\0" - "KEY_SRIGHT\0" - "KEY_SR\0" - "KEY_SRSUME\0" - "KEY_SSAVE\0" - "KEY_SSUSPEND\0" - "KEY_STAB\0" - "KEY_SUNDO\0" - "KEY_SUSPEND\0" - "KEY_UNDO\0" - "KEY_UP\0"; - -#define SIZEOF_TABLE 256 -#define MyTable _nc_globals.keyname_table - -NCURSES_EXPORT(NCURSES_CONST char *) -safe_keyname (SCREEN *sp, int c) -{ - int i; - char name[20]; - char *p; - NCURSES_CONST char *result = 0; - - if (c == -1) { - result = "-1"; - } else { - for (i = 0; _nc_key_names[i].offset != -1; i++) { - if (_nc_key_names[i].code == c) { - result = (NCURSES_CONST char *)key_names + _nc_key_names[i].offset; - break; - } - } - - if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) { - if (MyTable == 0) - MyTable = typeCalloc(char *, SIZEOF_TABLE); - if (MyTable != 0) { - if (MyTable[c] == 0) { - int cc = c; - p = name; - if (cc >= 128 && (sp == 0 || sp->_use_meta)) { - strcpy(p, "M-"); - p += 2; - cc -= 128; - } - if (cc < 32) - sprintf(p, "^%c", cc + '@'); - else if (cc == 127) - strcpy(p, "^?"); - else - sprintf(p, "%c", cc); - MyTable[c] = strdup(name); - } - result = MyTable[c]; - } -#if NCURSES_EXT_FUNCS && NCURSES_XNAMES - } else if (result == 0 && HasTerminal(sp)) { - int j, k; - char * bound; - TERMTYPE *tp = &(TerminalOf(sp)->type); - unsigned save_trace = _nc_tracing; - - _nc_tracing = 0; /* prevent recursion via keybound() */ - for (j = 0; (bound = NCURSES_SP_NAME(keybound)(NCURSES_SP_ARGx c, j)) != 0; ++j) { - for(k = STRCOUNT; k < (int) NUM_STRINGS(tp); k++) { - if (tp->Strings[k] != 0 && !strcmp(bound, tp->Strings[k])) { - result = ExtStrname(tp, k, strnames); - break; - } - } - free(bound); - if (result != 0) - break; - } - _nc_tracing = save_trace; -#endif - } - } - return result; -} - -NCURSES_EXPORT(NCURSES_CONST char *) -keyname (int c) -{ - return safe_keyname (CURRENT_SCREEN, c); -} - -#if NO_LEAKS -void _nc_keyname_leaks(void) -{ - int j; - if (MyTable != 0) { - for (j = 0; j < SIZEOF_TABLE; ++j) { - FreeIfNeeded(MyTable[j]); - } - FreeAndNull(MyTable); - } -} -#endif /* NO_LEAKS */ diff --git a/deps/ncurses-5.9/ncurses/link_test.c b/deps/ncurses-5.9/ncurses/link_test.c deleted file mode 100644 index cc03508..0000000 --- a/deps/ncurses-5.9/ncurses/link_test.c +++ /dev/null @@ -1,2069 +0,0 @@ -/* - * DO NOT EDIT THIS FILE BY HAND! - * It is generated by ./base/MKlib_gen.sh implemented. - */ -#define NCURSES_ATTR_T int -#include - -#undef NCURSES_NOMACROS /* _this_ file uses macros */ - -#include - -#undef vw_scanw -#undef vwscanw - -#undef vw_printw -#undef vwprintw -extern int call_addch (const chtype z); -int call_addch (const chtype z) -{ - T((T_CALLED("addch(%s)"), _tracechtype2(0,z))); returnCode(waddch(stdscr,z)); -} -extern int call_addchnstr (const chtype * a1, int z); -int call_addchnstr (const chtype * a1, int z) -{ - T((T_CALLED("addchnstr(%p,%d)"), (const void *)a1, z)); returnCode(waddchnstr(stdscr,a1,z)); -} -extern int call_addchstr (const chtype * z); -int call_addchstr (const chtype * z) -{ - T((T_CALLED("addchstr(%p)"), (const void *)z)); returnCode(waddchnstr(stdscr,z,-1)); -} -extern int call_addnstr (const char * a1, int z); -int call_addnstr (const char * a1, int z) -{ - T((T_CALLED("addnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(waddnstr(stdscr,a1,z)); -} -extern int call_addstr (const char * z); -int call_addstr (const char * z) -{ - T((T_CALLED("addstr(%s)"), _nc_visbuf2(0,z))); returnCode(waddnstr(stdscr,z,-1)); -} -extern int call_attroff (int z); -int call_attroff (int z) -{ - T((T_CALLED("attroff(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_off(stdscr, (attr_t)(z), ((void *)0))); -} -extern int call_attron (int z); -int call_attron (int z) -{ - T((T_CALLED("attron(%s)"), _traceattr2(0,(chtype)z))); returnCode(wattr_on(stdscr, (attr_t)(z), ((void *)0))); -} -extern int call_attrset (int z); -int call_attrset (int z) -{ - T((T_CALLED("attrset(%s)"), _traceattr2(0,(chtype)z))); returnIntAttr((attr_t)((stdscr) ? ((stdscr)->_attrs = (attr_t)(z), (0)) : (-1))); -} -extern int call_attr_get (attr_t * a1, short * a2, void * z); -int call_attr_get (attr_t * a1, short * a2, void * z) -{ - T((T_CALLED("attr_get(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((void)((a1) != (void *)0 && (*(a1) = (stdscr)->_attrs)), (void)((a2) != (void *)0 && (*(a2) = (short)((int)((((unsigned long)((stdscr)->_attrs) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))))), (0))); -} -extern int call_attr_off (attr_t a1, void * z); -int call_attr_off (attr_t a1, void * z) -{ - T((T_CALLED("attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_off(stdscr,a1,z)); -} -extern int call_attr_on (attr_t a1, void * z); -int call_attr_on (attr_t a1, void * z) -{ - T((T_CALLED("attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(wattr_on(stdscr,a1,z)); -} -extern int call_attr_set (attr_t a1, short a2, void * z); -int call_attr_set (attr_t a1, short a2, void * z) -{ - T((T_CALLED("attr_set(%s,%d,%p)"), _traceattr2(0,a1), a2, (const void *)z)); returnCode(((stdscr)->_attrs = (((a1) & ~((((1U) << 8) - 1U) << ((0) + 8))) | (attr_t)((a2) << ((0) + 8))), (0))); -} -extern int call_baudrate (void); -int call_baudrate (void) -{ - T((T_CALLED("baudrate()"))); returnCode(baudrate()); -} -extern int call_beep (void); -int call_beep (void) -{ - T((T_CALLED("beep()"))); returnCode(beep()); -} -extern int call_bkgd (chtype z); -int call_bkgd (chtype z) -{ - T((T_CALLED("bkgd(%s)"), _tracechtype2(0,z))); returnCode(wbkgd(stdscr,z)); -} -extern void call_bkgdset (chtype z); -void call_bkgdset (chtype z) -{ - T((T_CALLED("bkgdset(%s)"), _tracechtype2(0,z))); wbkgdset(stdscr,z); - returnVoid; -} -extern int call_border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z); -int call_border (chtype a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype z) -{ - T((T_CALLED("border(%s,%s,%s,%s,%s,%s,%s,%s)"), _tracechtype2(0,a1), _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,z))); returnCode(wborder(stdscr, a1, a2, a3, a4, a5, a6, a7, z)); -} -extern int call_box (WINDOW * a1, chtype a2, chtype z); -int call_box (WINDOW * a1, chtype a2, chtype z) -{ - T((T_CALLED("box(%p,%s,%s)"), (const void *)a1, _tracechtype2(1,a2), _tracechtype2(2,z))); returnCode(wborder(a1, a2, a2, z, z, 0, 0, 0, 0)); -} -extern NCURSES_BOOL call_can_change_color (void); -NCURSES_BOOL call_can_change_color (void) -{ - T((T_CALLED("can_change_color()"))); returnBool(can_change_color()); -} -extern int call_cbreak (void); -int call_cbreak (void) -{ - T((T_CALLED("cbreak()"))); returnCode(cbreak()); -} -extern int call_chgat (int a1, attr_t a2, short a3, const void * z); -int call_chgat (int a1, attr_t a2, short a3, const void * z) -{ - T((T_CALLED("chgat(%d,%s,%d,%p)"), a1, _traceattr2(1,a2), a3, (const void *)z)); returnCode(wchgat(stdscr,a1,a2,a3,z)); -} -extern int call_clear (void); -int call_clear (void) -{ - T((T_CALLED("clear()"))); returnCode(wclear(stdscr)); -} -extern int call_clearok (WINDOW * a1, NCURSES_BOOL z); -int call_clearok (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("clearok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(clearok(a1, z)); -} -extern int call_clrtobot (void); -int call_clrtobot (void) -{ - T((T_CALLED("clrtobot()"))); returnCode(wclrtobot(stdscr)); -} -extern int call_clrtoeol (void); -int call_clrtoeol (void) -{ - T((T_CALLED("clrtoeol()"))); returnCode(wclrtoeol(stdscr)); -} -extern int call_color_content (short a1, short * a2, short * a3, short * z); -int call_color_content (short a1, short * a2, short * a3, short * z) -{ - T((T_CALLED("color_content(%d,%p,%p,%p)"), a1, (const void *)a2, (const void *)a3, (const void *)z)); returnCode(color_content(a1, a2, a3, z)); -} -extern int call_color_set (short a1, void * z); -int call_color_set (short a1, void * z) -{ - T((T_CALLED("color_set(%d,%p)"), a1, (const void *)z)); returnCode(wcolor_set(stdscr,a1,z)); -} -extern int call_COLOR_PAIR (int z); -int call_COLOR_PAIR (int z) -{ - T((T_CALLED("COLOR_PAIR(%d)"), z)); returnCode(((z) << ((0) + 8))); -} -extern int call_copywin (const WINDOW * a1, WINDOW * a2, int a3, int a4, int a5, int a6, int a7, int a8, int z); -int call_copywin (const WINDOW * a1, WINDOW * a2, int a3, int a4, int a5, int a6, int a7, int a8, int z) -{ - T((T_CALLED("copywin(%p,%p,%d,%d,%d,%d,%d,%d,%d)"), (const void *)a1, (const void *)a2, a3, a4, a5, a6, a7, a8, z)); returnCode(copywin(a1, a2, a3, a4, a5, a6, a7, a8, z)); -} -extern int call_curs_set (int z); -int call_curs_set (int z) -{ - T((T_CALLED("curs_set(%d)"), z)); returnCode(curs_set(z)); -} -extern int call_def_prog_mode (void); -int call_def_prog_mode (void) -{ - T((T_CALLED("def_prog_mode()"))); returnCode(def_prog_mode()); -} -extern int call_def_shell_mode (void); -int call_def_shell_mode (void) -{ - T((T_CALLED("def_shell_mode()"))); returnCode(def_shell_mode()); -} -extern int call_delay_output (int z); -int call_delay_output (int z) -{ - T((T_CALLED("delay_output(%d)"), z)); returnCode(delay_output(z)); -} -extern int call_delch (void); -int call_delch (void) -{ - T((T_CALLED("delch()"))); returnCode(wdelch(stdscr)); -} -extern void call_delscreen (SCREEN * z); -void call_delscreen (SCREEN * z) -{ - T((T_CALLED("delscreen(%p)"), (const void *)z)); delscreen(z); - returnVoid; -} -extern int call_delwin (WINDOW * z); -int call_delwin (WINDOW * z) -{ - T((T_CALLED("delwin(%p)"), (const void *)z)); returnCode(delwin(z)); -} -extern int call_deleteln (void); -int call_deleteln (void) -{ - T((T_CALLED("deleteln()"))); returnCode(winsdelln(stdscr,-1)); -} -extern WINDOW * call_derwin (WINDOW * a1, int a2, int a3, int a4, int z); -WINDOW * call_derwin (WINDOW * a1, int a2, int a3, int a4, int z) -{ - T((T_CALLED("derwin(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(derwin(a1, a2, a3, a4, z)); -} -extern int call_doupdate (void); -int call_doupdate (void) -{ - T((T_CALLED("doupdate()"))); returnCode(doupdate()); -} -extern WINDOW * call_dupwin (WINDOW * z); -WINDOW * call_dupwin (WINDOW * z) -{ - T((T_CALLED("dupwin(%p)"), (const void *)z)); returnWin(dupwin(z)); -} -extern int call_echo (void); -int call_echo (void) -{ - T((T_CALLED("echo()"))); returnCode(echo()); -} -extern int call_echochar (const chtype z); -int call_echochar (const chtype z) -{ - T((T_CALLED("echochar(%s)"), _tracechtype2(0,z))); returnCode(wechochar(stdscr,z)); -} -extern int call_erase (void); -int call_erase (void) -{ - T((T_CALLED("erase()"))); returnCode(werase(stdscr)); -} -extern int call_endwin (void); -int call_endwin (void) -{ - T((T_CALLED("endwin()"))); returnCode(endwin()); -} -extern char call_erasechar (void); -char call_erasechar (void) -{ - T((T_CALLED("erasechar()"))); returnCode(erasechar()); -} -extern void call_filter (void); -void call_filter (void) -{ - T((T_CALLED("filter()"))); filter(); - returnVoid; -} -extern int call_flash (void); -int call_flash (void) -{ - T((T_CALLED("flash()"))); returnCode(flash()); -} -extern int call_flushinp (void); -int call_flushinp (void) -{ - T((T_CALLED("flushinp()"))); returnCode(flushinp()); -} -extern chtype call_getbkgd (WINDOW * z); -chtype call_getbkgd (WINDOW * z) -{ - T((T_CALLED("getbkgd(%p)"), (const void *)z)); returnChtype(((z)->_bkgd)); -} -extern int call_getch (void); -int call_getch (void) -{ - T((T_CALLED("getch()"))); returnCode(wgetch(stdscr)); -} -extern int call_getnstr (char * a1, int z); -int call_getnstr (char * a1, int z) -{ - T((T_CALLED("getnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(wgetnstr(stdscr, a1, z)); -} -extern int call_getstr (char * z); -int call_getstr (char * z) -{ - T((T_CALLED("getstr(%s)"), _nc_visbuf2(0,z))); returnCode(wgetnstr(stdscr, z, -1)); -} -extern WINDOW * call_getwin (FILE * z); -WINDOW * call_getwin (FILE * z) -{ - T((T_CALLED("getwin(%p)"), (const void *)z)); returnWin(getwin(z)); -} -extern int call_halfdelay (int z); -int call_halfdelay (int z) -{ - T((T_CALLED("halfdelay(%d)"), z)); returnCode(halfdelay(z)); -} -extern NCURSES_BOOL call_has_colors (void); -NCURSES_BOOL call_has_colors (void) -{ - T((T_CALLED("has_colors()"))); returnBool(has_colors()); -} -extern NCURSES_BOOL call_has_ic (void); -NCURSES_BOOL call_has_ic (void) -{ - T((T_CALLED("has_ic()"))); returnBool(has_ic()); -} -extern NCURSES_BOOL call_has_il (void); -NCURSES_BOOL call_has_il (void) -{ - T((T_CALLED("has_il()"))); returnBool(has_il()); -} -extern int call_hline (chtype a1, int z); -int call_hline (chtype a1, int z) -{ - T((T_CALLED("hline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(whline(stdscr, a1, z)); -} -extern void call_idcok (WINDOW * a1, NCURSES_BOOL z); -void call_idcok (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("idcok(%p,%#lx)"), (const void *)a1, (long)z)); idcok(a1, z); - returnVoid; -} -extern int call_idlok (WINDOW * a1, NCURSES_BOOL z); -int call_idlok (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("idlok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(idlok(a1, z)); -} -extern void call_immedok (WINDOW * a1, NCURSES_BOOL z); -void call_immedok (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("immedok(%p,%#lx)"), (const void *)a1, (long)z)); immedok(a1, z); - returnVoid; -} -extern chtype call_inch (void); -chtype call_inch (void) -{ - T((T_CALLED("inch()"))); returnChtype(winch(stdscr)); -} -extern int call_inchnstr (chtype * a1, int z); -int call_inchnstr (chtype * a1, int z) -{ - T((T_CALLED("inchnstr(%p,%d)"), (const void *)a1, z)); returnCode(winchnstr(stdscr,a1,z)); -} -extern int call_inchstr (chtype * z); -int call_inchstr (chtype * z) -{ - T((T_CALLED("inchstr(%p)"), (const void *)z)); returnCode(winchnstr(stdscr, z, -1)); -} -extern WINDOW * call_initscr (void); -WINDOW * call_initscr (void) -{ - T((T_CALLED("initscr()"))); returnWin(initscr()); -} -extern int call_init_color (short a1, short a2, short a3, short z); -int call_init_color (short a1, short a2, short a3, short z) -{ - T((T_CALLED("init_color(%d,%d,%d,%d)"), a1, a2, a3, z)); returnCode(init_color(a1, a2, a3, z)); -} -extern int call_init_pair (short a1, short a2, short z); -int call_init_pair (short a1, short a2, short z) -{ - T((T_CALLED("init_pair(%d,%d,%d)"), a1, a2, z)); returnCode(init_pair(a1, a2, z)); -} -extern int call_innstr (char * a1, int z); -int call_innstr (char * a1, int z) -{ - return winnstr(stdscr,a1,z) ; -} -extern int call_insch (chtype z); -int call_insch (chtype z) -{ - T((T_CALLED("insch(%s)"), _tracechtype2(0,z))); returnCode(winsch(stdscr,z)); -} -extern int call_insdelln (int z); -int call_insdelln (int z) -{ - T((T_CALLED("insdelln(%d)"), z)); returnCode(winsdelln(stdscr,z)); -} -extern int call_insertln (void); -int call_insertln (void) -{ - T((T_CALLED("insertln()"))); returnCode(winsdelln(stdscr,1)); -} -extern int call_insnstr (const char * a1, int z); -int call_insnstr (const char * a1, int z) -{ - T((T_CALLED("insnstr(%s,%d)"), _nc_visbuf2(0,a1), z)); returnCode(winsnstr(stdscr,a1,z)); -} -extern int call_insstr (const char * z); -int call_insstr (const char * z) -{ - T((T_CALLED("insstr(%s)"), _nc_visbuf2(0,z))); returnCode(winsnstr(stdscr, z, -1)); -} -extern int call_instr (char * z); -int call_instr (char * z) -{ - T((T_CALLED("instr(%s)"), _nc_visbuf2(0,z))); returnCode(winnstr(stdscr, z, -1)); -} -extern int call_intrflush (WINDOW * a1, NCURSES_BOOL z); -int call_intrflush (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("intrflush(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(intrflush(a1, z)); -} -extern NCURSES_BOOL call_isendwin (void); -NCURSES_BOOL call_isendwin (void) -{ - T((T_CALLED("isendwin()"))); returnBool(isendwin()); -} -extern NCURSES_BOOL call_is_linetouched (WINDOW * a1, int z); -NCURSES_BOOL call_is_linetouched (WINDOW * a1, int z) -{ - T((T_CALLED("is_linetouched(%p,%d)"), (const void *)a1, z)); returnBool(is_linetouched(a1, z)); -} -extern NCURSES_BOOL call_is_wintouched (WINDOW * z); -NCURSES_BOOL call_is_wintouched (WINDOW * z) -{ - T((T_CALLED("is_wintouched(%p)"), (const void *)z)); returnBool(is_wintouched(z)); -} -extern char * call_keyname (int z); -char * call_keyname (int z) -{ - T((T_CALLED("keyname(%d)"), z)); returnPtr(keyname(z)); -} -extern int call_keypad (WINDOW * a1, NCURSES_BOOL z); -int call_keypad (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("keypad(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(keypad(a1, z)); -} -extern char call_killchar (void); -char call_killchar (void) -{ - T((T_CALLED("killchar()"))); returnCode(killchar()); -} -extern int call_leaveok (WINDOW * a1, NCURSES_BOOL z); -int call_leaveok (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("leaveok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(leaveok(a1, z)); -} -extern char * call_longname (void); -char * call_longname (void) -{ - T((T_CALLED("longname()"))); returnPtr(longname()); -} -extern int call_meta (WINDOW * a1, NCURSES_BOOL z); -int call_meta (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("meta(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(meta(a1, z)); -} -extern int call_move (int a1, int z); -int call_move (int a1, int z) -{ - T((T_CALLED("move(%d,%d)"), a1, z)); returnCode(wmove(stdscr,a1,z)); -} -extern int call_mvaddch (int a1, int a2, const chtype z); -int call_mvaddch (int a1, int a2, const chtype z) -{ - T((T_CALLED("mvaddch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddch(stdscr,z))); -} -extern int call_mvaddchnstr (int a1, int a2, const chtype * a3, int z); -int call_mvaddchnstr (int a1, int a2, const chtype * a3, int z) -{ - T((T_CALLED("mvaddchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,a3,z))); -} -extern int call_mvaddchstr (int a1, int a2, const chtype * z); -int call_mvaddchstr (int a1, int a2, const chtype * z) -{ - T((T_CALLED("mvaddchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddchnstr(stdscr,z,-1))); -} -extern int call_mvaddnstr (int a1, int a2, const char * a3, int z); -int call_mvaddnstr (int a1, int a2, const char * a3, int z) -{ - T((T_CALLED("mvaddnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,a3,z))); -} -extern int call_mvaddstr (int a1, int a2, const char * z); -int call_mvaddstr (int a1, int a2, const char * z) -{ - T((T_CALLED("mvaddstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : waddnstr(stdscr,z,-1))); -} -extern int call_mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z); -int call_mvchgat (int a1, int a2, int a3, attr_t a4, short a5, const void * z) -{ - T((T_CALLED("mvchgat(%d,%d,%d,%s,%d,%p)"), a1, a2, a3, _traceattr2(3,a4), a5, (const void *)z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wchgat(stdscr,a3,a4,a5,z))); -} -extern int call_mvcur (int a1, int a2, int a3, int z); -int call_mvcur (int a1, int a2, int a3, int z) -{ - T((T_CALLED("mvcur(%d,%d,%d,%d)"), a1, a2, a3, z)); returnCode(mvcur(a1, a2, a3, z)); -} -extern int call_mvdelch (int a1, int z); -int call_mvdelch (int a1, int z) -{ - T((T_CALLED("mvdelch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wdelch(stdscr))); -} -extern int call_mvderwin (WINDOW * a1, int a2, int z); -int call_mvderwin (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvderwin(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(mvderwin(a1, a2, z)); -} -extern int call_mvgetch (int a1, int z); -int call_mvgetch (int a1, int z) -{ - T((T_CALLED("mvgetch(%d,%d)"), a1, z)); returnCode((wmove(stdscr,a1,z) == (-1) ? (-1) : wgetch(stdscr))); -} -extern int call_mvgetnstr (int a1, int a2, char * a3, int z); -int call_mvgetnstr (int a1, int a2, char * a3, int z) -{ - T((T_CALLED("mvgetnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr,a3,z))); -} -extern int call_mvgetstr (int a1, int a2, char * z); -int call_mvgetstr (int a1, int a2, char * z) -{ - T((T_CALLED("mvgetstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wgetnstr(stdscr, z, -1))); -} -extern int call_mvhline (int a1, int a2, chtype a3, int z); -int call_mvhline (int a1, int a2, chtype a3, int z) -{ - T((T_CALLED("mvhline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : whline(stdscr,a3,z))); -} -extern chtype call_mvinch (int a1, int z); -chtype call_mvinch (int a1, int z) -{ - T((T_CALLED("mvinch(%d,%d)"), a1, z)); returnChtype((wmove(stdscr,a1,z) == (-1) ? (chtype)((-1)) : winch(stdscr))); -} -extern int call_mvinchnstr (int a1, int a2, chtype * a3, int z); -int call_mvinchnstr (int a1, int a2, chtype * a3, int z) -{ - T((T_CALLED("mvinchnstr(%d,%d,%p,%d)"), a1, a2, (const void *)a3, z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr,a3,z))); -} -extern int call_mvinchstr (int a1, int a2, chtype * z); -int call_mvinchstr (int a1, int a2, chtype * z) -{ - T((T_CALLED("mvinchstr(%d,%d,%p)"), a1, a2, (const void *)z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winchnstr(stdscr, z, -1))); -} -extern int call_mvinnstr (int a1, int a2, char * a3, int z); -int call_mvinnstr (int a1, int a2, char * a3, int z) -{ - return (wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr,a3,z)) ; -} -extern int call_mvinsch (int a1, int a2, chtype z); -int call_mvinsch (int a1, int a2, chtype z) -{ - T((T_CALLED("mvinsch(%d,%d,%s)"), a1, a2, _tracechtype2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsch(stdscr,z))); -} -extern int call_mvinsnstr (int a1, int a2, const char * a3, int z); -int call_mvinsnstr (int a1, int a2, const char * a3, int z) -{ - T((T_CALLED("mvinsnstr(%d,%d,%s,%d)"), a1, a2, _nc_visbuf2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr,a3,z))); -} -extern int call_mvinsstr (int a1, int a2, const char * z); -int call_mvinsstr (int a1, int a2, const char * z) -{ - T((T_CALLED("mvinsstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winsnstr(stdscr, z, -1))); -} -extern int call_mvinstr (int a1, int a2, char * z); -int call_mvinstr (int a1, int a2, char * z) -{ - T((T_CALLED("mvinstr(%d,%d,%s)"), a1, a2, _nc_visbuf2(2,z))); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : winnstr(stdscr, z, -1))); -} -extern int call_mvvline (int a1, int a2, chtype a3, int z); -int call_mvvline (int a1, int a2, chtype a3, int z) -{ - T((T_CALLED("mvvline(%d,%d,%s,%d)"), a1, a2, _tracechtype2(2,a3), z)); returnCode((wmove(stdscr,a1,a2) == (-1) ? (-1) : wvline(stdscr,a3,z))); -} -extern int call_mvwaddch (WINDOW * a1, int a2, int a3, const chtype z); -int call_mvwaddch (WINDOW * a1, int a2, int a3, const chtype z) -{ - T((T_CALLED("mvwaddch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddch(a1,z))); -} -extern int call_mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z); -int call_mvwaddchnstr (WINDOW * a1, int a2, int a3, const chtype * a4, int z) -{ - T((T_CALLED("mvwaddchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,a4,z))); -} -extern int call_mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z); -int call_mvwaddchstr (WINDOW * a1, int a2, int a3, const chtype * z) -{ - T((T_CALLED("mvwaddchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddchnstr(a1,z,-1))); -} -extern int call_mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z); -int call_mvwaddnstr (WINDOW * a1, int a2, int a3, const char * a4, int z) -{ - T((T_CALLED("mvwaddnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,a4,z))); -} -extern int call_mvwaddstr (WINDOW * a1, int a2, int a3, const char * z); -int call_mvwaddstr (WINDOW * a1, int a2, int a3, const char * z) -{ - T((T_CALLED("mvwaddstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : waddnstr(a1,z,-1))); -} -extern int call_mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z); -int call_mvwchgat (WINDOW * a1, int a2, int a3, int a4, attr_t a5, short a6, const void * z) -{ - T((T_CALLED("mvwchgat(%p,%d,%d,%d,%s,%d,%p)"), (const void *)a1, a2, a3, a4, _traceattr2(4,a5), a6, (const void *)z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wchgat(a1,a4,a5,a6,z))); -} -extern int call_mvwdelch (WINDOW * a1, int a2, int z); -int call_mvwdelch (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwdelch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wdelch(a1))); -} -extern int call_mvwgetch (WINDOW * a1, int a2, int z); -int call_mvwgetch (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwgetch(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode((wmove(a1,a2,z) == (-1) ? (-1) : wgetch(a1))); -} -extern int call_mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z); -int call_mvwgetnstr (WINDOW * a1, int a2, int a3, char * a4, int z) -{ - T((T_CALLED("mvwgetnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1,a4,z))); -} -extern int call_mvwgetstr (WINDOW * a1, int a2, int a3, char * z); -int call_mvwgetstr (WINDOW * a1, int a2, int a3, char * z) -{ - T((T_CALLED("mvwgetstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wgetnstr(a1, z, -1))); -} -extern int call_mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z); -int call_mvwhline (WINDOW * a1, int a2, int a3, chtype a4, int z) -{ - T((T_CALLED("mvwhline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : whline(a1,a4,z))); -} -extern int call_mvwin (WINDOW * a1, int a2, int z); -int call_mvwin (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwin(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(mvwin(a1, a2, z)); -} -extern chtype call_mvwinch (WINDOW * a1, int a2, int z); -chtype call_mvwinch (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("mvwinch(%p,%d,%d)"), (const void *)a1, a2, z)); returnChtype((wmove(a1,a2,z) == (-1) ? (chtype)((-1)) : winch(a1))); -} -extern int call_mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z); -int call_mvwinchnstr (WINDOW * a1, int a2, int a3, chtype * a4, int z) -{ - T((T_CALLED("mvwinchnstr(%p,%d,%d,%p,%d)"), (const void *)a1, a2, a3, (const void *)a4, z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1,a4,z))); -} -extern int call_mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z); -int call_mvwinchstr (WINDOW * a1, int a2, int a3, chtype * z) -{ - T((T_CALLED("mvwinchstr(%p,%d,%d,%p)"), (const void *)a1, a2, a3, (const void *)z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winchnstr(a1, z, -1))); -} -extern int call_mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z); -int call_mvwinnstr (WINDOW * a1, int a2, int a3, char * a4, int z) -{ - return (wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1,a4,z)) ; -} -extern int call_mvwinsch (WINDOW * a1, int a2, int a3, chtype z); -int call_mvwinsch (WINDOW * a1, int a2, int a3, chtype z) -{ - T((T_CALLED("mvwinsch(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _tracechtype2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsch(a1,z))); -} -extern int call_mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z); -int call_mvwinsnstr (WINDOW * a1, int a2, int a3, const char * a4, int z) -{ - T((T_CALLED("mvwinsnstr(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _nc_visbuf2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1,a4,z))); -} -extern int call_mvwinsstr (WINDOW * a1, int a2, int a3, const char * z); -int call_mvwinsstr (WINDOW * a1, int a2, int a3, const char * z) -{ - T((T_CALLED("mvwinsstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winsnstr(a1, z, -1))); -} -extern int call_mvwinstr (WINDOW * a1, int a2, int a3, char * z); -int call_mvwinstr (WINDOW * a1, int a2, int a3, char * z) -{ - T((T_CALLED("mvwinstr(%p,%d,%d,%s)"), (const void *)a1, a2, a3, _nc_visbuf2(3,z))); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : winnstr(a1, z, -1))); -} -extern int call_mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z); -int call_mvwvline (WINDOW * a1, int a2, int a3, chtype a4, int z) -{ - T((T_CALLED("mvwvline(%p,%d,%d,%s,%d)"), (const void *)a1, a2, a3, _tracechtype2(3,a4), z)); returnCode((wmove(a1,a2,a3) == (-1) ? (-1) : wvline(a1,a4,z))); -} -extern int call_napms (int z); -int call_napms (int z) -{ - T((T_CALLED("napms(%d)"), z)); returnCode(napms(z)); -} -extern WINDOW * call_newpad (int a1, int z); -WINDOW * call_newpad (int a1, int z) -{ - T((T_CALLED("newpad(%d,%d)"), a1, z)); returnWin(newpad(a1, z)); -} -extern SCREEN * call_newterm (char * a1, FILE * a2, FILE * z); -SCREEN * call_newterm (char * a1, FILE * a2, FILE * z) -{ - T((T_CALLED("newterm(%s,%p,%p)"), _nc_visbuf2(0,a1), (const void *)a2, (const void *)z)); returnSP(newterm(a1, a2, z)); -} -extern WINDOW * call_newwin (int a1, int a2, int a3, int z); -WINDOW * call_newwin (int a1, int a2, int a3, int z) -{ - T((T_CALLED("newwin(%d,%d,%d,%d)"), a1, a2, a3, z)); returnWin(newwin(a1, a2, a3, z)); -} -extern int call_nl (void); -int call_nl (void) -{ - T((T_CALLED("nl()"))); returnCode(nl()); -} -extern int call_nocbreak (void); -int call_nocbreak (void) -{ - T((T_CALLED("nocbreak()"))); returnCode(nocbreak()); -} -extern int call_nodelay (WINDOW * a1, NCURSES_BOOL z); -int call_nodelay (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("nodelay(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(nodelay(a1, z)); -} -extern int call_noecho (void); -int call_noecho (void) -{ - T((T_CALLED("noecho()"))); returnCode(noecho()); -} -extern int call_nonl (void); -int call_nonl (void) -{ - T((T_CALLED("nonl()"))); returnCode(nonl()); -} -extern void call_noqiflush (void); -void call_noqiflush (void) -{ - T((T_CALLED("noqiflush()"))); noqiflush(); - returnVoid; -} -extern int call_noraw (void); -int call_noraw (void) -{ - T((T_CALLED("noraw()"))); returnCode(noraw()); -} -extern int call_notimeout (WINDOW * a1, NCURSES_BOOL z); -int call_notimeout (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("notimeout(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(notimeout(a1, z)); -} -extern int call_overlay (const WINDOW * a1, WINDOW * z); -int call_overlay (const WINDOW * a1, WINDOW * z) -{ - T((T_CALLED("overlay(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(overlay(a1, z)); -} -extern int call_overwrite (const WINDOW * a1, WINDOW * z); -int call_overwrite (const WINDOW * a1, WINDOW * z) -{ - T((T_CALLED("overwrite(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(overwrite(a1, z)); -} -extern int call_pair_content (short a1, short * a2, short * z); -int call_pair_content (short a1, short * a2, short * z) -{ - T((T_CALLED("pair_content(%d,%p,%p)"), a1, (const void *)a2, (const void *)z)); returnCode(pair_content(a1, a2, z)); -} -extern int call_PAIR_NUMBER (int z); -int call_PAIR_NUMBER (int z) -{ - T((T_CALLED("PAIR_NUMBER(%d)"), z)); returnCode(((int)((((unsigned long)(z) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8)))); -} -extern int call_pechochar (WINDOW * a1, const chtype z); -int call_pechochar (WINDOW * a1, const chtype z) -{ - T((T_CALLED("pechochar(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(pechochar(a1, z)); -} -extern int call_pnoutrefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z); -int call_pnoutrefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z) -{ - T((T_CALLED("pnoutrefresh(%p,%d,%d,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, a5, a6, z)); returnCode(pnoutrefresh(a1, a2, a3, a4, a5, a6, z)); -} -extern int call_prefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z); -int call_prefresh (WINDOW * a1, int a2, int a3, int a4, int a5, int a6, int z) -{ - T((T_CALLED("prefresh(%p,%d,%d,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, a5, a6, z)); returnCode(prefresh(a1, a2, a3, a4, a5, a6, z)); -} -extern int call_putwin (WINDOW * a1, FILE * z); -int call_putwin (WINDOW * a1, FILE * z) -{ - T((T_CALLED("putwin(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(putwin(a1, z)); -} -extern void call_qiflush (void); -void call_qiflush (void) -{ - T((T_CALLED("qiflush()"))); qiflush(); - returnVoid; -} -extern int call_raw (void); -int call_raw (void) -{ - T((T_CALLED("raw()"))); returnCode(raw()); -} -extern int call_redrawwin (WINDOW * z); -int call_redrawwin (WINDOW * z) -{ - T((T_CALLED("redrawwin(%p)"), (const void *)z)); returnCode(wredrawln(z, 0, (z)->_maxy+1)); -} -extern int call_refresh (void); -int call_refresh (void) -{ - T((T_CALLED("refresh()"))); returnCode(wrefresh(stdscr)); -} -extern int call_resetty (void); -int call_resetty (void) -{ - T((T_CALLED("resetty()"))); returnCode(resetty()); -} -extern int call_reset_prog_mode (void); -int call_reset_prog_mode (void) -{ - T((T_CALLED("reset_prog_mode()"))); returnCode(reset_prog_mode()); -} -extern int call_reset_shell_mode (void); -int call_reset_shell_mode (void) -{ - T((T_CALLED("reset_shell_mode()"))); returnCode(reset_shell_mode()); -} -extern int call_ripoffline (int a1, int(* z)(WINDOW * a2, int)); -int call_ripoffline (int a1, int(* z)(WINDOW * a2, int)) -{ - return ripoffline(a1, z) ; -} -extern int call_savetty (void); -int call_savetty (void) -{ - T((T_CALLED("savetty()"))); returnCode(savetty()); -} -extern int call_scr_dump (const char * z); -int call_scr_dump (const char * z) -{ - T((T_CALLED("scr_dump(%s)"), _nc_visbuf2(0,z))); returnCode(scr_dump(z)); -} -extern int call_scr_init (const char * z); -int call_scr_init (const char * z) -{ - T((T_CALLED("scr_init(%s)"), _nc_visbuf2(0,z))); returnCode(scr_init(z)); -} -extern int call_scrl (int z); -int call_scrl (int z) -{ - T((T_CALLED("scrl(%d)"), z)); returnCode(wscrl(stdscr,z)); -} -extern int call_scroll (WINDOW * z); -int call_scroll (WINDOW * z) -{ - T((T_CALLED("scroll(%p)"), (const void *)z)); returnCode(wscrl(z,1)); -} -extern int call_scrollok (WINDOW * a1, NCURSES_BOOL z); -int call_scrollok (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("scrollok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(scrollok(a1, z)); -} -extern int call_scr_restore (const char * z); -int call_scr_restore (const char * z) -{ - T((T_CALLED("scr_restore(%s)"), _nc_visbuf2(0,z))); returnCode(scr_restore(z)); -} -extern int call_scr_set (const char * z); -int call_scr_set (const char * z) -{ - T((T_CALLED("scr_set(%s)"), _nc_visbuf2(0,z))); returnCode(scr_set(z)); -} -extern int call_setscrreg (int a1, int z); -int call_setscrreg (int a1, int z) -{ - T((T_CALLED("setscrreg(%d,%d)"), a1, z)); returnCode(wsetscrreg(stdscr,a1,z)); -} -extern SCREEN * call_set_term (SCREEN * z); -SCREEN * call_set_term (SCREEN * z) -{ - T((T_CALLED("set_term(%p)"), (const void *)z)); returnSP(set_term(z)); -} -extern int call_slk_attroff (const chtype z); -int call_slk_attroff (const chtype z) -{ - T((T_CALLED("slk_attroff(%s)"), _tracechtype2(0,z))); returnCode(slk_attroff(z)); -} -#if USE_WIDEC_SUPPORT -extern int call_slk_attr_off (const attr_t a1, void * z); -int call_slk_attr_off (const attr_t a1, void * z) -{ - T((T_CALLED("slk_attr_off(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attroff(a1))); -} -#endif -extern int call_slk_attron (const chtype z); -int call_slk_attron (const chtype z) -{ - T((T_CALLED("slk_attron(%s)"), _tracechtype2(0,z))); returnCode(slk_attron(z)); -} -#if USE_WIDEC_SUPPORT -extern int call_slk_attr_on (attr_t a1, void * z); -int call_slk_attr_on (attr_t a1, void * z) -{ - T((T_CALLED("slk_attr_on(%s,%p)"), _traceattr2(0,a1), (const void *)z)); returnCode(((z) ? (-1) : slk_attron(a1))); -} -#endif -extern int call_slk_attrset (const chtype z); -int call_slk_attrset (const chtype z) -{ - T((T_CALLED("slk_attrset(%s)"), _tracechtype2(0,z))); returnCode(slk_attrset(z)); -} -extern attr_t call_slk_attr (void); -attr_t call_slk_attr (void) -{ - T((T_CALLED("slk_attr()"))); returnIntAttr((attr_t)slk_attr()); -} -extern int call_slk_attr_set (const attr_t a1, short a2, void * z); -int call_slk_attr_set (const attr_t a1, short a2, void * z) -{ - T((T_CALLED("slk_attr_set(%s,%d,%p)"), _traceattr2(0,a1), a2, (const void *)z)); returnCode(slk_attr_set(a1, a2, z)); -} -extern int call_slk_clear (void); -int call_slk_clear (void) -{ - T((T_CALLED("slk_clear()"))); returnCode(slk_clear()); -} -extern int call_slk_color (short z); -int call_slk_color (short z) -{ - T((T_CALLED("slk_color(%d)"), z)); returnCode(slk_color(z)); -} -extern int call_slk_init (int z); -int call_slk_init (int z) -{ - T((T_CALLED("slk_init(%d)"), z)); returnCode(slk_init(z)); -} -extern char * call_slk_label (int z); -char * call_slk_label (int z) -{ - T((T_CALLED("slk_label(%d)"), z)); returnPtr(slk_label(z)); -} -extern int call_slk_noutrefresh (void); -int call_slk_noutrefresh (void) -{ - T((T_CALLED("slk_noutrefresh()"))); returnCode(slk_noutrefresh()); -} -extern int call_slk_refresh (void); -int call_slk_refresh (void) -{ - T((T_CALLED("slk_refresh()"))); returnCode(slk_refresh()); -} -extern int call_slk_restore (void); -int call_slk_restore (void) -{ - T((T_CALLED("slk_restore()"))); returnCode(slk_restore()); -} -extern int call_slk_set (int a1, const char * a2, int z); -int call_slk_set (int a1, const char * a2, int z) -{ - T((T_CALLED("slk_set(%d,%s,%d)"), a1, _nc_visbuf2(1,a2), z)); returnCode(slk_set(a1, a2, z)); -} -extern int call_slk_touch (void); -int call_slk_touch (void) -{ - T((T_CALLED("slk_touch()"))); returnCode(slk_touch()); -} -extern int call_standout (void); -int call_standout (void) -{ - T((T_CALLED("standout()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)(((1U) << ((8) + 8))), (0)) : (-1)))); -} -extern int call_standend (void); -int call_standend (void) -{ - T((T_CALLED("standend()"))); returnIntAttr((attr_t)(((stdscr) ? ((stdscr)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1)))); -} -extern int call_start_color (void); -int call_start_color (void) -{ - T((T_CALLED("start_color()"))); returnCode(start_color()); -} -extern WINDOW * call_subpad (WINDOW * a1, int a2, int a3, int a4, int z); -WINDOW * call_subpad (WINDOW * a1, int a2, int a3, int a4, int z) -{ - T((T_CALLED("subpad(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(subpad(a1, a2, a3, a4, z)); -} -extern WINDOW * call_subwin (WINDOW * a1, int a2, int a3, int a4, int z); -WINDOW * call_subwin (WINDOW * a1, int a2, int a3, int a4, int z) -{ - T((T_CALLED("subwin(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(subwin(a1, a2, a3, a4, z)); -} -extern int call_syncok (WINDOW * a1, NCURSES_BOOL z); -int call_syncok (WINDOW * a1, NCURSES_BOOL z) -{ - T((T_CALLED("syncok(%p,%#lx)"), (const void *)a1, (long)z)); returnCode(syncok(a1, z)); -} -extern chtype call_termattrs (void); -chtype call_termattrs (void) -{ - T((T_CALLED("termattrs()"))); returnChtype(termattrs()); -} -extern char * call_termname (void); -char * call_termname (void) -{ - T((T_CALLED("termname()"))); returnPtr(termname()); -} -extern void call_timeout (int z); -void call_timeout (int z) -{ - T((T_CALLED("timeout(%d)"), z)); wtimeout(stdscr,z); - returnVoid; -} -extern int call_touchline (WINDOW * a1, int a2, int z); -int call_touchline (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("touchline(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wtouchln((a1), a2, z, 1)); -} -extern int call_touchwin (WINDOW * z); -int call_touchwin (WINDOW * z) -{ - T((T_CALLED("touchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 1)); -} -extern int call_typeahead (int z); -int call_typeahead (int z) -{ - T((T_CALLED("typeahead(%d)"), z)); returnCode(typeahead(z)); -} -extern int call_ungetch (int z); -int call_ungetch (int z) -{ - T((T_CALLED("ungetch(%d)"), z)); returnCode(ungetch(z)); -} -extern int call_untouchwin (WINDOW * z); -int call_untouchwin (WINDOW * z) -{ - T((T_CALLED("untouchwin(%p)"), (const void *)z)); returnCode(wtouchln((z), 0, ((z) ? ((z)->_maxy + 1) : (-1)), 0)); -} -extern void call_use_env (NCURSES_BOOL z); -void call_use_env (NCURSES_BOOL z) -{ - T((T_CALLED("use_env(%#lx)"), (long)z)); use_env(z); - returnVoid; -} -extern int call_vidattr (chtype z); -int call_vidattr (chtype z) -{ - T((T_CALLED("vidattr(%s)"), _tracechtype2(0,z))); returnCode(vidattr(z)); -} -extern int call_vidputs (chtype a1, NCURSES_OUTC z); -int call_vidputs (chtype a1, NCURSES_OUTC z) -{ - T((T_CALLED("vidputs(%s,%#lx)"), _tracechtype2(0,a1), (long)z)); returnCode(vidputs(a1, z)); -} -extern int call_vline (chtype a1, int z); -int call_vline (chtype a1, int z) -{ - T((T_CALLED("vline(%s,%d)"), _tracechtype2(0,a1), z)); returnCode(wvline(stdscr, a1, z)); -} -extern int call_vwprintw (WINDOW * a1, const char * a2, va_list z); -int call_vwprintw (WINDOW * a1, const char * a2, va_list z) -{ - T((T_CALLED("vwprintw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z)); -} -extern int call_vw_printw (WINDOW * a1, const char * a2, va_list z); -int call_vw_printw (WINDOW * a1, const char * a2, va_list z) -{ - T((T_CALLED("vw_printw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwprintw(a1, a2, z)); -} -extern int call_vwscanw (WINDOW * a1, char * a2, va_list z); -int call_vwscanw (WINDOW * a1, char * a2, va_list z) -{ - T((T_CALLED("vwscanw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z)); -} -extern int call_vw_scanw (WINDOW * a1, char * a2, va_list z); -int call_vw_scanw (WINDOW * a1, char * a2, va_list z) -{ - T((T_CALLED("vw_scanw(%p,%s,%s)"), (const void *)a1, _nc_visbuf2(1,a2), "va_list")); returnCode(vwscanw(a1, a2, z)); -} -extern int call_waddch (WINDOW * a1, const chtype z); -int call_waddch (WINDOW * a1, const chtype z) -{ - T((T_CALLED("waddch(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(waddch(a1, z)); -} -extern int call_waddchnstr (WINDOW * a1, const chtype * a2, int z); -int call_waddchnstr (WINDOW * a1, const chtype * a2, int z) -{ - T((T_CALLED("waddchnstr(%p,%p,%d)"), (const void *)a1, (const void *)a2, z)); returnCode(waddchnstr(a1, a2, z)); -} -extern int call_waddchstr (WINDOW * a1, const chtype * z); -int call_waddchstr (WINDOW * a1, const chtype * z) -{ - T((T_CALLED("waddchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(waddchnstr(a1,z,-1)); -} -extern int call_waddnstr (WINDOW * a1, const char * a2, int z); -int call_waddnstr (WINDOW * a1, const char * a2, int z) -{ - T((T_CALLED("waddnstr(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(waddnstr(a1, a2, z)); -} -extern int call_waddstr (WINDOW * a1, const char * z); -int call_waddstr (WINDOW * a1, const char * z) -{ - T((T_CALLED("waddstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(waddnstr(a1,z,-1)); -} -extern int call_wattron (WINDOW * a1, int z); -int call_wattron (WINDOW * a1, int z) -{ - T((T_CALLED("wattron(%p,%d)"), (const void *)a1, z)); returnCode(wattr_on(a1, (attr_t)(z), ((void *)0))); -} -extern int call_wattroff (WINDOW * a1, int z); -int call_wattroff (WINDOW * a1, int z) -{ - T((T_CALLED("wattroff(%p,%d)"), (const void *)a1, z)); returnCode(wattr_off(a1, (attr_t)(z), ((void *)0))); -} -extern int call_wattrset (WINDOW * a1, int z); -int call_wattrset (WINDOW * a1, int z) -{ - T((T_CALLED("wattrset(%p,%d)"), (const void *)a1, z)); returnIntAttr((attr_t)((a1) ? ((a1)->_attrs = (attr_t)(z), (0)) : (-1))); -} -extern int call_wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z); -int call_wattr_get (WINDOW * a1, attr_t * a2, short * a3, void * z) -{ - T((T_CALLED("wattr_get(%p,%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)a3, (const void *)z)); returnCode(((void)((a2) != (void *)0 && (*(a2) = (a1)->_attrs)), (void)((a3) != (void *)0 && (*(a3) = (short)((int)((((unsigned long)((a1)->_attrs) & ((((1U) << 8) - 1U) << ((0) + 8))) >> 8))))), (0))); -} -extern int call_wattr_on (WINDOW * a1, attr_t a2, void * z); -int call_wattr_on (WINDOW * a1, attr_t a2, void * z) -{ - T((T_CALLED("wattr_on(%p,%s,%p)"), (const void *)a1, _traceattr2(1,a2), (const void *)z)); returnCode(wattr_on(a1, a2, z)); -} -extern int call_wattr_off (WINDOW * a1, attr_t a2, void * z); -int call_wattr_off (WINDOW * a1, attr_t a2, void * z) -{ - T((T_CALLED("wattr_off(%p,%s,%p)"), (const void *)a1, _traceattr2(1,a2), (const void *)z)); returnCode(wattr_off(a1, a2, z)); -} -extern int call_wattr_set (WINDOW * a1, attr_t a2, short a3, void * z); -int call_wattr_set (WINDOW * a1, attr_t a2, short a3, void * z) -{ - T((T_CALLED("wattr_set(%p,%s,%d,%p)"), (const void *)a1, _traceattr2(1,a2), a3, (const void *)z)); returnCode(((a1)->_attrs = (((a2) & ~((((1U) << 8) - 1U) << ((0) + 8))) | (attr_t)((a3) << ((0) + 8))), (0))); -} -extern int call_wbkgd (WINDOW * a1, chtype z); -int call_wbkgd (WINDOW * a1, chtype z) -{ - T((T_CALLED("wbkgd(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(wbkgd(a1, z)); -} -extern void call_wbkgdset (WINDOW * a1, chtype z); -void call_wbkgdset (WINDOW * a1, chtype z) -{ - T((T_CALLED("wbkgdset(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); wbkgdset(a1, z); - returnVoid; -} -extern int call_wborder (WINDOW * a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype a8, chtype z); -int call_wborder (WINDOW * a1, chtype a2, chtype a3, chtype a4, chtype a5, chtype a6, chtype a7, chtype a8, chtype z) -{ - T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"), (const void *)a1, _tracechtype2(1,a2), _tracechtype2(2,a3), _tracechtype2(3,a4), _tracechtype2(4,a5), _tracechtype2(5,a6), _tracechtype2(6,a7), _tracechtype2(7,a8), _tracechtype2(8,z))); returnCode(wborder(a1, a2, a3, a4, a5, a6, a7, a8, z)); -} -extern int call_wchgat (WINDOW * a1, int a2, attr_t a3, short a4, const void * z); -int call_wchgat (WINDOW * a1, int a2, attr_t a3, short a4, const void * z) -{ - T((T_CALLED("wchgat(%p,%d,%s,%d,%p)"), (const void *)a1, a2, _traceattr2(2,a3), a4, (const void *)z)); returnCode(wchgat(a1, a2, a3, a4, z)); -} -extern int call_wclear (WINDOW * z); -int call_wclear (WINDOW * z) -{ - T((T_CALLED("wclear(%p)"), (const void *)z)); returnCode(wclear(z)); -} -extern int call_wclrtobot (WINDOW * z); -int call_wclrtobot (WINDOW * z) -{ - T((T_CALLED("wclrtobot(%p)"), (const void *)z)); returnCode(wclrtobot(z)); -} -extern int call_wclrtoeol (WINDOW * z); -int call_wclrtoeol (WINDOW * z) -{ - T((T_CALLED("wclrtoeol(%p)"), (const void *)z)); returnCode(wclrtoeol(z)); -} -extern int call_wcolor_set (WINDOW * a1, short a2, void * z); -int call_wcolor_set (WINDOW * a1, short a2, void * z) -{ - T((T_CALLED("wcolor_set(%p,%d,%p)"), (const void *)a1, a2, (const void *)z)); returnCode(wcolor_set(a1, a2, z)); -} -extern void call_wcursyncup (WINDOW * z); -void call_wcursyncup (WINDOW * z) -{ - T((T_CALLED("wcursyncup(%p)"), (const void *)z)); wcursyncup(z); - returnVoid; -} -extern int call_wdelch (WINDOW * z); -int call_wdelch (WINDOW * z) -{ - T((T_CALLED("wdelch(%p)"), (const void *)z)); returnCode(wdelch(z)); -} -extern int call_wdeleteln (WINDOW * z); -int call_wdeleteln (WINDOW * z) -{ - T((T_CALLED("wdeleteln(%p)"), (const void *)z)); returnCode(winsdelln(z,-1)); -} -extern int call_wechochar (WINDOW * a1, const chtype z); -int call_wechochar (WINDOW * a1, const chtype z) -{ - T((T_CALLED("wechochar(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(wechochar(a1, z)); -} -extern int call_werase (WINDOW * z); -int call_werase (WINDOW * z) -{ - T((T_CALLED("werase(%p)"), (const void *)z)); returnCode(werase(z)); -} -extern int call_wgetch (WINDOW * z); -int call_wgetch (WINDOW * z) -{ - T((T_CALLED("wgetch(%p)"), (const void *)z)); returnCode(wgetch(z)); -} -extern int call_wgetnstr (WINDOW * a1, char * a2, int z); -int call_wgetnstr (WINDOW * a1, char * a2, int z) -{ - T((T_CALLED("wgetnstr(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(wgetnstr(a1, a2, z)); -} -extern int call_wgetstr (WINDOW * a1, char * z); -int call_wgetstr (WINDOW * a1, char * z) -{ - T((T_CALLED("wgetstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(wgetnstr(a1, z, -1)); -} -extern int call_whline (WINDOW * a1, chtype a2, int z); -int call_whline (WINDOW * a1, chtype a2, int z) -{ - T((T_CALLED("whline(%p,%s,%d)"), (const void *)a1, _tracechtype2(1,a2), z)); returnCode(whline(a1, a2, z)); -} -extern chtype call_winch (WINDOW * z); -chtype call_winch (WINDOW * z) -{ - T((T_CALLED("winch(%p)"), (const void *)z)); returnChtype(winch(z)); -} -extern int call_winchnstr (WINDOW * a1, chtype * a2, int z); -int call_winchnstr (WINDOW * a1, chtype * a2, int z) -{ - T((T_CALLED("winchnstr(%p,%p,%d)"), (const void *)a1, (const void *)a2, z)); returnCode(winchnstr(a1, a2, z)); -} -extern int call_winchstr (WINDOW * a1, chtype * z); -int call_winchstr (WINDOW * a1, chtype * z) -{ - T((T_CALLED("winchstr(%p,%p)"), (const void *)a1, (const void *)z)); returnCode(winchnstr(a1, z, -1)); -} -extern int call_winnstr (WINDOW * a1, char * a2, int z); -int call_winnstr (WINDOW * a1, char * a2, int z) -{ - return winnstr(a1, a2, z) ; -} -extern int call_winsch (WINDOW * a1, chtype z); -int call_winsch (WINDOW * a1, chtype z) -{ - T((T_CALLED("winsch(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(winsch(a1, z)); -} -extern int call_winsdelln (WINDOW * a1, int z); -int call_winsdelln (WINDOW * a1, int z) -{ - T((T_CALLED("winsdelln(%p,%d)"), (const void *)a1, z)); returnCode(winsdelln(a1, z)); -} -extern int call_winsertln (WINDOW * z); -int call_winsertln (WINDOW * z) -{ - T((T_CALLED("winsertln(%p)"), (const void *)z)); returnCode(winsdelln(z,1)); -} -extern int call_winsnstr (WINDOW * a1, const char * a2, int z); -int call_winsnstr (WINDOW * a1, const char * a2, int z) -{ - T((T_CALLED("winsnstr(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(winsnstr(a1, a2, z)); -} -extern int call_winsstr (WINDOW * a1, const char * z); -int call_winsstr (WINDOW * a1, const char * z) -{ - T((T_CALLED("winsstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winsnstr(a1, z, -1)); -} -extern int call_winstr (WINDOW * a1, char * z); -int call_winstr (WINDOW * a1, char * z) -{ - T((T_CALLED("winstr(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(winnstr(a1, z, -1)); -} -extern int call_wmove (WINDOW * a1, int a2, int z); -int call_wmove (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("wmove(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wmove(a1, a2, z)); -} -extern int call_wnoutrefresh (WINDOW * z); -int call_wnoutrefresh (WINDOW * z) -{ - T((T_CALLED("wnoutrefresh(%p)"), (const void *)z)); returnCode(wnoutrefresh(z)); -} -extern int call_wredrawln (WINDOW * a1, int a2, int z); -int call_wredrawln (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("wredrawln(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wredrawln(a1, a2, z)); -} -extern int call_wrefresh (WINDOW * z); -int call_wrefresh (WINDOW * z) -{ - T((T_CALLED("wrefresh(%p)"), (const void *)z)); returnCode(wrefresh(z)); -} -extern int call_wscrl (WINDOW * a1, int z); -int call_wscrl (WINDOW * a1, int z) -{ - T((T_CALLED("wscrl(%p,%d)"), (const void *)a1, z)); returnCode(wscrl(a1, z)); -} -extern int call_wsetscrreg (WINDOW * a1, int a2, int z); -int call_wsetscrreg (WINDOW * a1, int a2, int z) -{ - T((T_CALLED("wsetscrreg(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(wsetscrreg(a1, a2, z)); -} -extern int call_wstandout (WINDOW * z); -int call_wstandout (WINDOW * z) -{ - T((T_CALLED("wstandout(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)(((1U) << ((8) + 8))), (0)) : (-1)))); -} -extern int call_wstandend (WINDOW * z); -int call_wstandend (WINDOW * z) -{ - T((T_CALLED("wstandend(%p)"), (const void *)z)); returnIntAttr((attr_t)(((z) ? ((z)->_attrs = (attr_t)((1U - 1U)), (0)) : (-1)))); -} -extern void call_wsyncdown (WINDOW * z); -void call_wsyncdown (WINDOW * z) -{ - T((T_CALLED("wsyncdown(%p)"), (const void *)z)); wsyncdown(z); - returnVoid; -} -extern void call_wsyncup (WINDOW * z); -void call_wsyncup (WINDOW * z) -{ - T((T_CALLED("wsyncup(%p)"), (const void *)z)); wsyncup(z); - returnVoid; -} -extern void call_wtimeout (WINDOW * a1, int z); -void call_wtimeout (WINDOW * a1, int z) -{ - T((T_CALLED("wtimeout(%p,%d)"), (const void *)a1, z)); wtimeout(a1, z); - returnVoid; -} -extern int call_wtouchln (WINDOW * a1, int a2, int a3, int z); -int call_wtouchln (WINDOW * a1, int a2, int a3, int z) -{ - T((T_CALLED("wtouchln(%p,%d,%d,%d)"), (const void *)a1, a2, a3, z)); returnCode(wtouchln(a1, a2, a3, z)); -} -extern int call_wvline (WINDOW * a1, chtype a2, int z); -int call_wvline (WINDOW * a1, chtype a2, int z) -{ - T((T_CALLED("wvline(%p,%s,%d)"), (const void *)a1, _tracechtype2(1,a2), z)); returnCode(wvline(a1, a2, z)); -} -extern int call_tigetflag (char * z); -int call_tigetflag (char * z) -{ - T((T_CALLED("tigetflag(%s)"), _nc_visbuf2(0,z))); returnCode(tigetflag(z)); -} -extern int call_tigetnum (char * z); -int call_tigetnum (char * z) -{ - T((T_CALLED("tigetnum(%s)"), _nc_visbuf2(0,z))); returnCode(tigetnum(z)); -} -extern char * call_tigetstr (char * z); -char * call_tigetstr (char * z) -{ - T((T_CALLED("tigetstr(%s)"), _nc_visbuf2(0,z))); returnPtr(tigetstr(z)); -} -extern int call_putp (const char * z); -int call_putp (const char * z) -{ - T((T_CALLED("putp(%s)"), _nc_visbuf2(0,z))); returnCode(putp(z)); -} -extern int call_getattrs (const WINDOW * z); -int call_getattrs (const WINDOW * z) -{ - T((T_CALLED("getattrs(%p)"), (const void *)z)); returnCode((int)((z) ? (z)->_attrs : (1U - 1U))); -} -extern int call_getcurx (const WINDOW * z); -int call_getcurx (const WINDOW * z) -{ - T((T_CALLED("getcurx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_curx : (-1))); -} -extern int call_getcury (const WINDOW * z); -int call_getcury (const WINDOW * z) -{ - T((T_CALLED("getcury(%p)"), (const void *)z)); returnCode(((z) ? (z)->_cury : (-1))); -} -extern int call_getbegx (const WINDOW * z); -int call_getbegx (const WINDOW * z) -{ - T((T_CALLED("getbegx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begx : (-1))); -} -extern int call_getbegy (const WINDOW * z); -int call_getbegy (const WINDOW * z) -{ - T((T_CALLED("getbegy(%p)"), (const void *)z)); returnCode(((z) ? (z)->_begy : (-1))); -} -extern int call_getmaxx (const WINDOW * z); -int call_getmaxx (const WINDOW * z) -{ - T((T_CALLED("getmaxx(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxx + 1) : (-1))); -} -extern int call_getmaxy (const WINDOW * z); -int call_getmaxy (const WINDOW * z) -{ - T((T_CALLED("getmaxy(%p)"), (const void *)z)); returnCode(((z) ? ((z)->_maxy + 1) : (-1))); -} -extern int call_getparx (const WINDOW * z); -int call_getparx (const WINDOW * z) -{ - T((T_CALLED("getparx(%p)"), (const void *)z)); returnCode(((z) ? (z)->_parx : (-1))); -} -extern int call_getpary (const WINDOW * z); -int call_getpary (const WINDOW * z) -{ - T((T_CALLED("getpary(%p)"), (const void *)z)); returnCode(((z) ? (z)->_pary : (-1))); -} -extern WINDOW * call_wgetparent (const WINDOW * z); -WINDOW * call_wgetparent (const WINDOW * z) -{ - T((T_CALLED("wgetparent(%p)"), (const void *)z)); returnWin(((z) ? (z)->_parent : 0)); -} -extern NCURSES_BOOL call_is_cleared (const WINDOW * z); -NCURSES_BOOL call_is_cleared (const WINDOW * z) -{ - T((T_CALLED("is_cleared(%p)"), (const void *)z)); returnBool(((z) ? (z)->_clear : 0)); -} -extern NCURSES_BOOL call_is_idcok (const WINDOW * z); -NCURSES_BOOL call_is_idcok (const WINDOW * z) -{ - T((T_CALLED("is_idcok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idcok : 0)); -} -extern NCURSES_BOOL call_is_idlok (const WINDOW * z); -NCURSES_BOOL call_is_idlok (const WINDOW * z) -{ - T((T_CALLED("is_idlok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_idlok : 0)); -} -extern NCURSES_BOOL call_is_immedok (const WINDOW * z); -NCURSES_BOOL call_is_immedok (const WINDOW * z) -{ - T((T_CALLED("is_immedok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_immed : 0)); -} -extern NCURSES_BOOL call_is_keypad (const WINDOW * z); -NCURSES_BOOL call_is_keypad (const WINDOW * z) -{ - T((T_CALLED("is_keypad(%p)"), (const void *)z)); returnBool(((z) ? (z)->_use_keypad : 0)); -} -extern NCURSES_BOOL call_is_leaveok (const WINDOW * z); -NCURSES_BOOL call_is_leaveok (const WINDOW * z) -{ - T((T_CALLED("is_leaveok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_leaveok : 0)); -} -extern NCURSES_BOOL call_is_nodelay (const WINDOW * z); -NCURSES_BOOL call_is_nodelay (const WINDOW * z) -{ - T((T_CALLED("is_nodelay(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_delay == 0) : 0)); -} -extern NCURSES_BOOL call_is_notimeout (const WINDOW * z); -NCURSES_BOOL call_is_notimeout (const WINDOW * z) -{ - T((T_CALLED("is_notimeout(%p)"), (const void *)z)); returnBool(((z) ? (z)->_notimeout : 0)); -} -extern NCURSES_BOOL call_is_pad (const WINDOW * z); -NCURSES_BOOL call_is_pad (const WINDOW * z) -{ - T((T_CALLED("is_pad(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x10) != 0 : 0)); -} -extern NCURSES_BOOL call_is_scrollok (const WINDOW * z); -NCURSES_BOOL call_is_scrollok (const WINDOW * z) -{ - T((T_CALLED("is_scrollok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_scroll : 0)); -} -extern NCURSES_BOOL call_is_subwin (const WINDOW * z); -NCURSES_BOOL call_is_subwin (const WINDOW * z) -{ - T((T_CALLED("is_subwin(%p)"), (const void *)z)); returnBool(((z) ? ((z)->_flags & 0x01) != 0 : 0)); -} -extern NCURSES_BOOL call_is_syncok (const WINDOW * z); -NCURSES_BOOL call_is_syncok (const WINDOW * z) -{ - T((T_CALLED("is_syncok(%p)"), (const void *)z)); returnBool(((z) ? (z)->_sync : 0)); -} -extern int call_wgetscrreg (const WINDOW * a1, int * a2, int * z); -int call_wgetscrreg (const WINDOW * a1, int * a2, int * z) -{ - T((T_CALLED("wgetscrreg(%p,%p,%p)"), (const void *)a1, (const void *)a2, (const void *)z)); returnCode(((a1) ? (*(a2) = (a1)->_regtop, *(z) = (a1)->_regbottom, (0)) : (-1))); -} -#if USE_SP_FUNC_SUPPORT -extern SCREEN * call_new_prescr (void); -SCREEN * call_new_prescr (void) -{ - T((T_CALLED("new_prescr()"))); returnSP(new_prescr()); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___baudrate (SCREEN * z); -int call_NCURSES_SP_NAME___baudrate (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(baudrate)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(baudrate)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___beep (SCREEN * z); -int call_NCURSES_SP_NAME___beep (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(beep)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(beep)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern NCURSES_BOOL call_NCURSES_SP_NAME___can_change_color (SCREEN * z); -NCURSES_BOOL call_NCURSES_SP_NAME___can_change_color (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(can_change_color)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(can_change_color)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___cbreak (SCREEN * z); -int call_NCURSES_SP_NAME___cbreak (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(cbreak)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(cbreak)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___curs_set (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___curs_set (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(curs_set)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(curs_set)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___color_content (SCREEN * a1, short a2, short * a3, short * a4, short * z); -int call_NCURSES_SP_NAME___color_content (SCREEN * a1, short a2, short * a3, short * a4, short * z) -{ - T((T_CALLED("NCURSES_SP_NAME(color_content)(%p,%d,%p,%p,%p)"), (const void *)a1, a2, (const void *)a3, (const void *)a4, (const void *)z)); returnCode(NCURSES_SP_NAME(color_content)(a1, a2, a3, a4, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___def_prog_mode (SCREEN * z); -int call_NCURSES_SP_NAME___def_prog_mode (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(def_prog_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(def_prog_mode)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___def_shell_mode (SCREEN * z); -int call_NCURSES_SP_NAME___def_shell_mode (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(def_shell_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(def_shell_mode)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___delay_output (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___delay_output (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(delay_output)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(delay_output)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___doupdate (SCREEN * z); -int call_NCURSES_SP_NAME___doupdate (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(doupdate)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(doupdate)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___echo (SCREEN * z); -int call_NCURSES_SP_NAME___echo (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(echo)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(echo)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___endwin (SCREEN * z); -int call_NCURSES_SP_NAME___endwin (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(endwin)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(endwin)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern char call_NCURSES_SP_NAME___erasechar (SCREEN * z); -char call_NCURSES_SP_NAME___erasechar (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(erasechar)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(erasechar)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern void call_NCURSES_SP_NAME___filter (SCREEN * z); -void call_NCURSES_SP_NAME___filter (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(filter)(%p)"), (const void *)z)); NCURSES_SP_NAME(filter)(z); - returnVoid; -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___flash (SCREEN * z); -int call_NCURSES_SP_NAME___flash (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(flash)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(flash)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___flushinp (SCREEN * z); -int call_NCURSES_SP_NAME___flushinp (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(flushinp)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(flushinp)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern WINDOW * call_NCURSES_SP_NAME___getwin (SCREEN * a1, FILE * z); -WINDOW * call_NCURSES_SP_NAME___getwin (SCREEN * a1, FILE * z) -{ - T((T_CALLED("NCURSES_SP_NAME(getwin)(%p,%p)"), (const void *)a1, (const void *)z)); returnWin(NCURSES_SP_NAME(getwin)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___halfdelay (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___halfdelay (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(halfdelay)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(halfdelay)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern NCURSES_BOOL call_NCURSES_SP_NAME___has_colors (SCREEN * z); -NCURSES_BOOL call_NCURSES_SP_NAME___has_colors (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(has_colors)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(has_colors)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern NCURSES_BOOL call_NCURSES_SP_NAME___has_ic (SCREEN * z); -NCURSES_BOOL call_NCURSES_SP_NAME___has_ic (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(has_ic)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(has_ic)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern NCURSES_BOOL call_NCURSES_SP_NAME___has_il (SCREEN * z); -NCURSES_BOOL call_NCURSES_SP_NAME___has_il (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(has_il)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(has_il)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___init_color (SCREEN * a1, short a2, short a3, short a4, short z); -int call_NCURSES_SP_NAME___init_color (SCREEN * a1, short a2, short a3, short a4, short z) -{ - T((T_CALLED("NCURSES_SP_NAME(init_color)(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnCode(NCURSES_SP_NAME(init_color)(a1, a2, a3, a4, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___init_pair (SCREEN * a1, short a2, short a3, short z); -int call_NCURSES_SP_NAME___init_pair (SCREEN * a1, short a2, short a3, short z) -{ - T((T_CALLED("NCURSES_SP_NAME(init_pair)(%p,%d,%d,%d)"), (const void *)a1, a2, a3, z)); returnCode(NCURSES_SP_NAME(init_pair)(a1, a2, a3, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___intrflush (SCREEN * a1, WINDOW * a2, NCURSES_BOOL z); -int call_NCURSES_SP_NAME___intrflush (SCREEN * a1, WINDOW * a2, NCURSES_BOOL z) -{ - T((T_CALLED("NCURSES_SP_NAME(intrflush)(%p,%p,%#lx)"), (const void *)a1, (const void *)a2, (long)z)); returnCode(NCURSES_SP_NAME(intrflush)(a1, a2, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern NCURSES_BOOL call_NCURSES_SP_NAME___isendwin (SCREEN * z); -NCURSES_BOOL call_NCURSES_SP_NAME___isendwin (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(isendwin)(%p)"), (const void *)z)); returnBool(NCURSES_SP_NAME(isendwin)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern char * call_NCURSES_SP_NAME___keyname (SCREEN * a1, int z); -char * call_NCURSES_SP_NAME___keyname (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(keyname)(%p,%d)"), (const void *)a1, z)); returnPtr(NCURSES_SP_NAME(keyname)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern char call_NCURSES_SP_NAME___killchar (SCREEN * z); -char call_NCURSES_SP_NAME___killchar (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(killchar)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(killchar)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern char * call_NCURSES_SP_NAME___longname (SCREEN * z); -char * call_NCURSES_SP_NAME___longname (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(longname)(%p)"), (const void *)z)); returnPtr(NCURSES_SP_NAME(longname)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___mvcur (SCREEN * a1, int a2, int a3, int a4, int z); -int call_NCURSES_SP_NAME___mvcur (SCREEN * a1, int a2, int a3, int a4, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(mvcur)(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnCode(NCURSES_SP_NAME(mvcur)(a1, a2, a3, a4, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___napms (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___napms (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(napms)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(napms)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern WINDOW * call_NCURSES_SP_NAME___newpad (SCREEN * a1, int a2, int z); -WINDOW * call_NCURSES_SP_NAME___newpad (SCREEN * a1, int a2, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(newpad)(%p,%d,%d)"), (const void *)a1, a2, z)); returnWin(NCURSES_SP_NAME(newpad)(a1, a2, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern SCREEN * call_NCURSES_SP_NAME___newterm (SCREEN * a1, char * a2, FILE * a3, FILE * z); -SCREEN * call_NCURSES_SP_NAME___newterm (SCREEN * a1, char * a2, FILE * a3, FILE * z) -{ - T((T_CALLED("NCURSES_SP_NAME(newterm)(%p,%s,%p,%p)"), (const void *)a1, _nc_visbuf2(1,a2), (const void *)a3, (const void *)z)); returnSP(NCURSES_SP_NAME(newterm)(a1, a2, a3, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern WINDOW * call_NCURSES_SP_NAME___newwin (SCREEN * a1, int a2, int a3, int a4, int z); -WINDOW * call_NCURSES_SP_NAME___newwin (SCREEN * a1, int a2, int a3, int a4, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(newwin)(%p,%d,%d,%d,%d)"), (const void *)a1, a2, a3, a4, z)); returnWin(NCURSES_SP_NAME(newwin)(a1, a2, a3, a4, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___nl (SCREEN * z); -int call_NCURSES_SP_NAME___nl (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(nl)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(nl)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___nocbreak (SCREEN * z); -int call_NCURSES_SP_NAME___nocbreak (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(nocbreak)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(nocbreak)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___noecho (SCREEN * z); -int call_NCURSES_SP_NAME___noecho (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(noecho)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(noecho)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___nonl (SCREEN * z); -int call_NCURSES_SP_NAME___nonl (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(nonl)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(nonl)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern void call_NCURSES_SP_NAME___noqiflush (SCREEN * z); -void call_NCURSES_SP_NAME___noqiflush (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(noqiflush)(%p)"), (const void *)z)); NCURSES_SP_NAME(noqiflush)(z); - returnVoid; -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___noraw (SCREEN * z); -int call_NCURSES_SP_NAME___noraw (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(noraw)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(noraw)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___pair_content (SCREEN * a1, short a2, short * a3, short * z); -int call_NCURSES_SP_NAME___pair_content (SCREEN * a1, short a2, short * a3, short * z) -{ - T((T_CALLED("NCURSES_SP_NAME(pair_content)(%p,%d,%p,%p)"), (const void *)a1, a2, (const void *)a3, (const void *)z)); returnCode(NCURSES_SP_NAME(pair_content)(a1, a2, a3, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern void call_NCURSES_SP_NAME___qiflush (SCREEN * z); -void call_NCURSES_SP_NAME___qiflush (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(qiflush)(%p)"), (const void *)z)); NCURSES_SP_NAME(qiflush)(z); - returnVoid; -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___raw (SCREEN * z); -int call_NCURSES_SP_NAME___raw (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(raw)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(raw)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___reset_prog_mode (SCREEN * z); -int call_NCURSES_SP_NAME___reset_prog_mode (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(reset_prog_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(reset_prog_mode)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___reset_shell_mode (SCREEN * z); -int call_NCURSES_SP_NAME___reset_shell_mode (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(reset_shell_mode)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(reset_shell_mode)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___resetty (SCREEN * z); -int call_NCURSES_SP_NAME___resetty (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(resetty)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(resetty)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___ripoffline (SCREEN * a1, int a2, int(* z)(WINDOW * a3, int)); -int call_NCURSES_SP_NAME___ripoffline (SCREEN * a1, int a2, int(* z)(WINDOW * a3, int)) -{ - return NCURSES_SP_NAME(ripoffline)(a1, a2, z) ; -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___savetty (SCREEN * z); -int call_NCURSES_SP_NAME___savetty (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(savetty)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(savetty)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___scr_init (SCREEN * a1, const char * z); -int call_NCURSES_SP_NAME___scr_init (SCREEN * a1, const char * z) -{ - T((T_CALLED("NCURSES_SP_NAME(scr_init)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(scr_init)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___scr_restore (SCREEN * a1, const char * z); -int call_NCURSES_SP_NAME___scr_restore (SCREEN * a1, const char * z) -{ - T((T_CALLED("NCURSES_SP_NAME(scr_restore)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(scr_restore)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___scr_set (SCREEN * a1, const char * z); -int call_NCURSES_SP_NAME___scr_set (SCREEN * a1, const char * z) -{ - T((T_CALLED("NCURSES_SP_NAME(scr_set)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(scr_set)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_attroff (SCREEN * a1, const chtype z); -int call_NCURSES_SP_NAME___slk_attroff (SCREEN * a1, const chtype z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_attroff)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(slk_attroff)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_attron (SCREEN * a1, const chtype z); -int call_NCURSES_SP_NAME___slk_attron (SCREEN * a1, const chtype z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_attron)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(slk_attron)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_attrset (SCREEN * a1, const chtype z); -int call_NCURSES_SP_NAME___slk_attrset (SCREEN * a1, const chtype z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_attrset)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(slk_attrset)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern attr_t call_NCURSES_SP_NAME___slk_attr (SCREEN * z); -attr_t call_NCURSES_SP_NAME___slk_attr (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_attr)(%p)"), (const void *)z)); returnIntAttr((attr_t)NCURSES_SP_NAME(slk_attr)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_attr_set (SCREEN * a1, const attr_t a2, short a3, void * z); -int call_NCURSES_SP_NAME___slk_attr_set (SCREEN * a1, const attr_t a2, short a3, void * z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_attr_set)(%p,%s,%d,%p)"), (const void *)a1, _traceattr2(1,a2), a3, (const void *)z)); returnCode(NCURSES_SP_NAME(slk_attr_set)(a1, a2, a3, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_clear (SCREEN * z); -int call_NCURSES_SP_NAME___slk_clear (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_clear)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_clear)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_color (SCREEN * a1, short z); -int call_NCURSES_SP_NAME___slk_color (SCREEN * a1, short z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_color)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(slk_color)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_init (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___slk_init (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_init)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(slk_init)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern char * call_NCURSES_SP_NAME___slk_label (SCREEN * a1, int z); -char * call_NCURSES_SP_NAME___slk_label (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_label)(%p,%d)"), (const void *)a1, z)); returnPtr(NCURSES_SP_NAME(slk_label)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_noutrefresh (SCREEN * z); -int call_NCURSES_SP_NAME___slk_noutrefresh (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_noutrefresh)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_noutrefresh)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_refresh (SCREEN * z); -int call_NCURSES_SP_NAME___slk_refresh (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_refresh)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_refresh)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_restore (SCREEN * z); -int call_NCURSES_SP_NAME___slk_restore (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_restore)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_restore)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_set (SCREEN * a1, int a2, const char * a3, int z); -int call_NCURSES_SP_NAME___slk_set (SCREEN * a1, int a2, const char * a3, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_set)(%p,%d,%s,%d)"), (const void *)a1, a2, _nc_visbuf2(2,a3), z)); returnCode(NCURSES_SP_NAME(slk_set)(a1, a2, a3, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___slk_touch (SCREEN * z); -int call_NCURSES_SP_NAME___slk_touch (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(slk_touch)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(slk_touch)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___start_color (SCREEN * z); -int call_NCURSES_SP_NAME___start_color (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(start_color)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(start_color)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern chtype call_NCURSES_SP_NAME___termattrs (SCREEN * z); -chtype call_NCURSES_SP_NAME___termattrs (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(termattrs)(%p)"), (const void *)z)); returnChtype(NCURSES_SP_NAME(termattrs)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern char * call_NCURSES_SP_NAME___termname (SCREEN * z); -char * call_NCURSES_SP_NAME___termname (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(termname)(%p)"), (const void *)z)); returnPtr(NCURSES_SP_NAME(termname)(z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___typeahead (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___typeahead (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(typeahead)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(typeahead)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___ungetch (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___ungetch (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(ungetch)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(ungetch)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern void call_NCURSES_SP_NAME___use_env (SCREEN * a1, NCURSES_BOOL z); -void call_NCURSES_SP_NAME___use_env (SCREEN * a1, NCURSES_BOOL z) -{ - T((T_CALLED("NCURSES_SP_NAME(use_env)(%p,%#lx)"), (const void *)a1, (long)z)); NCURSES_SP_NAME(use_env)(a1, z); - returnVoid; -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___vidattr (SCREEN * a1, chtype z); -int call_NCURSES_SP_NAME___vidattr (SCREEN * a1, chtype z) -{ - T((T_CALLED("NCURSES_SP_NAME(vidattr)(%p,%s)"), (const void *)a1, _tracechtype2(1,z))); returnCode(NCURSES_SP_NAME(vidattr)(a1, z)); -} -#endif -#if USE_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___vidputs (SCREEN * a1, chtype a2, NCURSES_OUTC z); -int call_NCURSES_SP_NAME___vidputs (SCREEN * a1, chtype a2, NCURSES_OUTC z) -{ - T((T_CALLED("NCURSES_SP_NAME(vidputs)(%p,%s,%#lx)"), (const void *)a1, _tracechtype2(1,a2), (long)z)); returnCode(NCURSES_SP_NAME(vidputs)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern char * call_NCURSES_SP_NAME___keybound (SCREEN * a1, int a2, int z); -char * call_NCURSES_SP_NAME___keybound (SCREEN * a1, int a2, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(keybound)(%p,%d,%d)"), (const void *)a1, a2, z)); returnPtr(NCURSES_SP_NAME(keybound)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___assume_default_colors (SCREEN * a1, int a2, int z); -int call_NCURSES_SP_NAME___assume_default_colors (SCREEN * a1, int a2, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(assume_default_colors)(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(NCURSES_SP_NAME(assume_default_colors)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___define_key (SCREEN * a1, const char * a2, int z); -int call_NCURSES_SP_NAME___define_key (SCREEN * a1, const char * a2, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(define_key)(%p,%s,%d)"), (const void *)a1, _nc_visbuf2(1,a2), z)); returnCode(NCURSES_SP_NAME(define_key)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___get_escdelay (SCREEN * z); -int call_NCURSES_SP_NAME___get_escdelay (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(get_escdelay)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(get_escdelay)(z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern NCURSES_BOOL call_NCURSES_SP_NAME___is_term_resized (SCREEN * a1, int a2, int z); -NCURSES_BOOL call_NCURSES_SP_NAME___is_term_resized (SCREEN * a1, int a2, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(is_term_resized)(%p,%d,%d)"), (const void *)a1, a2, z)); returnBool(NCURSES_SP_NAME(is_term_resized)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___key_defined (SCREEN * a1, const char * z); -int call_NCURSES_SP_NAME___key_defined (SCREEN * a1, const char * z) -{ - T((T_CALLED("NCURSES_SP_NAME(key_defined)(%p,%s)"), (const void *)a1, _nc_visbuf2(1,z))); returnCode(NCURSES_SP_NAME(key_defined)(a1, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___keyok (SCREEN * a1, int a2, NCURSES_BOOL z); -int call_NCURSES_SP_NAME___keyok (SCREEN * a1, int a2, NCURSES_BOOL z) -{ - T((T_CALLED("NCURSES_SP_NAME(keyok)(%p,%d,%#lx)"), (const void *)a1, a2, (long)z)); returnCode(NCURSES_SP_NAME(keyok)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern void call_NCURSES_SP_NAME___nofilter (SCREEN * z); -void call_NCURSES_SP_NAME___nofilter (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(nofilter)(%p)"), (const void *)z)); NCURSES_SP_NAME(nofilter)(z); - returnVoid; -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___resize_term (SCREEN * a1, int a2, int z); -int call_NCURSES_SP_NAME___resize_term (SCREEN * a1, int a2, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(resize_term)(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(NCURSES_SP_NAME(resize_term)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___resizeterm (SCREEN * a1, int a2, int z); -int call_NCURSES_SP_NAME___resizeterm (SCREEN * a1, int a2, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(resizeterm)(%p,%d,%d)"), (const void *)a1, a2, z)); returnCode(NCURSES_SP_NAME(resizeterm)(a1, a2, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___set_escdelay (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___set_escdelay (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(set_escdelay)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(set_escdelay)(a1, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___set_tabsize (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___set_tabsize (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(set_tabsize)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(set_tabsize)(a1, z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___use_default_colors (SCREEN * z); -int call_NCURSES_SP_NAME___use_default_colors (SCREEN * z) -{ - T((T_CALLED("NCURSES_SP_NAME(use_default_colors)(%p)"), (const void *)z)); returnCode(NCURSES_SP_NAME(use_default_colors)(z)); -} -#endif -#if USE_EXT_SP_FUNC_SUPPORT -extern int call_NCURSES_SP_NAME___use_legacy_coding (SCREEN * a1, int z); -int call_NCURSES_SP_NAME___use_legacy_coding (SCREEN * a1, int z) -{ - T((T_CALLED("NCURSES_SP_NAME(use_legacy_coding)(%p,%d)"), (const void *)a1, z)); returnCode(NCURSES_SP_NAME(use_legacy_coding)(a1, z)); -} -#endif -extern NCURSES_BOOL call_mouse_trafo (int * a1, int * a2, NCURSES_BOOL z); -NCURSES_BOOL call_mouse_trafo (int * a1, int * a2, NCURSES_BOOL z) -{ - T((T_CALLED("mouse_trafo(%p,%p,%#lx)"), (const void *)a1, (const void *)a2, (long)z)); returnBool(wmouse_trafo(stdscr,a1,a2,z)); -} -int main(void) { return 0; } diff --git a/deps/ncurses-5.9/ncurses/make_hash b/deps/ncurses-5.9/ncurses/make_hash deleted file mode 100755 index 4f79ac9..0000000 Binary files a/deps/ncurses-5.9/ncurses/make_hash and /dev/null differ diff --git a/deps/ncurses-5.9/ncurses/make_keys b/deps/ncurses-5.9/ncurses/make_keys deleted file mode 100755 index 585b54c..0000000 Binary files a/deps/ncurses-5.9/ncurses/make_keys and /dev/null differ diff --git a/deps/ncurses-5.9/ncurses/modules b/deps/ncurses-5.9/ncurses/modules deleted file mode 100644 index caf1799..0000000 --- a/deps/ncurses-5.9/ncurses/modules +++ /dev/null @@ -1,244 +0,0 @@ -# $Id: modules,v 1.117 2010/08/07 18:41:02 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# - -@ base -# Library objects -hardscroll lib $(serial) $(HEADER_DEPS) -hashmap lib $(serial) $(HEADER_DEPS) -lib_addch lib $(base) $(HEADER_DEPS) -lib_addstr lib $(base) $(HEADER_DEPS) -lib_beep lib $(base) $(HEADER_DEPS) -lib_bkgd lib $(base) $(HEADER_DEPS) -lib_box lib $(base) $(HEADER_DEPS) -lib_chgat lib $(base) $(HEADER_DEPS) -lib_clear lib $(base) $(HEADER_DEPS) -lib_clearok lib $(base) $(HEADER_DEPS) -lib_clrbot lib $(base) $(HEADER_DEPS) -lib_clreol lib $(base) $(HEADER_DEPS) -lib_color lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_colorset lib $(base) $(HEADER_DEPS) -lib_delch lib $(base) $(HEADER_DEPS) -lib_delwin lib $(base) $(HEADER_DEPS) -lib_echo lib $(base) $(HEADER_DEPS) -lib_endwin lib $(base) $(HEADER_DEPS) -lib_erase lib $(base) $(HEADER_DEPS) -lib_flash lib $(base) $(HEADER_DEPS) -lib_gen lib . $(HEADER_DEPS) -lib_getch lib $(base) $(HEADER_DEPS) $(srcdir)/fifo_defs.h -lib_getstr lib $(base) $(HEADER_DEPS) -lib_hline lib $(base) $(HEADER_DEPS) -lib_immedok lib $(base) $(HEADER_DEPS) -lib_inchstr lib $(base) $(HEADER_DEPS) -lib_initscr lib $(base) $(HEADER_DEPS) -lib_insch lib $(base) $(HEADER_DEPS) -lib_insdel lib $(base) $(HEADER_DEPS) -lib_insnstr lib $(base) $(HEADER_DEPS) -lib_instr lib $(base) $(HEADER_DEPS) -lib_isendwin lib $(base) $(HEADER_DEPS) -lib_leaveok lib $(base) $(HEADER_DEPS) -lib_mouse lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_move lib $(base) $(HEADER_DEPS) -lib_mvcur lib $(serial) $(HEADER_DEPS) $(INCDIR)/tic.h $(srcdir)/../progs/dump_entry.h -lib_mvwin lib $(base) $(HEADER_DEPS) -lib_newterm lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_newwin lib $(base) $(HEADER_DEPS) -lib_nl lib $(base) $(HEADER_DEPS) -lib_overlay lib $(base) $(HEADER_DEPS) -lib_pad lib $(base) $(HEADER_DEPS) -lib_printw lib $(base) $(HEADER_DEPS) -lib_redrawln lib $(base) $(HEADER_DEPS) -lib_refresh lib $(base) $(HEADER_DEPS) -lib_restart lib $(base) $(HEADER_DEPS) -lib_scanw lib $(base) $(HEADER_DEPS) -lib_screen lib $(base) $(HEADER_DEPS) -lib_scroll lib $(base) $(HEADER_DEPS) -lib_scrollok lib $(base) $(HEADER_DEPS) -lib_scrreg lib $(base) $(HEADER_DEPS) -lib_set_term lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_slk lib $(base) $(HEADER_DEPS) -lib_slkatr_set lib $(base) $(HEADER_DEPS) -lib_slkatrof lib $(base) $(HEADER_DEPS) -lib_slkatron lib $(base) $(HEADER_DEPS) -lib_slkatrset lib $(base) $(HEADER_DEPS) -lib_slkattr lib $(base) $(HEADER_DEPS) -lib_slkclear lib $(base) $(HEADER_DEPS) -lib_slkcolor lib $(base) $(HEADER_DEPS) -lib_slkinit lib $(base) $(HEADER_DEPS) -lib_slklab lib $(base) $(HEADER_DEPS) -lib_slkrefr lib $(base) $(HEADER_DEPS) -lib_slkset lib $(base) $(HEADER_DEPS) -lib_slktouch lib $(base) $(HEADER_DEPS) -lib_touch lib $(base) $(HEADER_DEPS) -lib_tracedmp lib $(trace) $(HEADER_DEPS) -lib_tracemse lib $(trace) $(HEADER_DEPS) -lib_tstp lib $(serial) $(HEADER_DEPS) $(srcdir)/SigAction.h -lib_ungetch lib $(base) $(HEADER_DEPS) $(srcdir)/fifo_defs.h -lib_vidattr lib $(serial) $(HEADER_DEPS) -lib_vline lib $(base) $(HEADER_DEPS) -lib_wattroff lib $(base) $(HEADER_DEPS) -lib_wattron lib $(base) $(HEADER_DEPS) -lib_winch lib $(base) $(HEADER_DEPS) -lib_window lib $(base) $(HEADER_DEPS) -link_test lib . $(HEADER_DEPS) -nc_panel lib $(base) $(HEADER_DEPS) -safe_sprintf lib $(base) $(HEADER_DEPS) -tty_update lib $(serial) $(HEADER_DEPS) -varargs lib $(trace) $(HEADER_DEPS) - -# Modules for porting -memmove lib $(base) $(HEADER_DEPS) -vsscanf lib $(base) $(HEADER_DEPS) - -# actually an extension, but with its own configure option (--disable-leaks) -lib_freeall lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h - -# XSI extensions to the base library (wide-character) -@ widechar -charable lib $(wide) $(HEADER_DEPS) -lib_add_wch lib $(wide) $(HEADER_DEPS) -lib_box_set lib $(wide) $(HEADER_DEPS) -lib_cchar lib $(wide) $(HEADER_DEPS) -lib_erasewchar lib $(wide) $(HEADER_DEPS) -lib_get_wch lib $(wide) $(HEADER_DEPS) -lib_get_wstr lib $(wide) $(HEADER_DEPS) -lib_hline_set lib $(wide) $(HEADER_DEPS) -lib_in_wch lib $(wide) $(HEADER_DEPS) -lib_in_wchnstr lib $(wide) $(HEADER_DEPS) -lib_ins_wch lib $(wide) $(HEADER_DEPS) -lib_inwstr lib $(wide) $(HEADER_DEPS) -lib_key_name lib $(wide) $(HEADER_DEPS) -lib_pecho_wchar lib $(wide) $(HEADER_DEPS) -lib_slk_wset lib $(wide) $(HEADER_DEPS) -lib_unget_wch lib $(wide) $(HEADER_DEPS) -lib_vid_attr lib $(wide) $(HEADER_DEPS) -lib_vline_set lib $(wide) $(HEADER_DEPS) -lib_wacs lib $(wide) $(HEADER_DEPS) -lib_wunctrl lib $(wide) $(HEADER_DEPS) - -# Extensions to the base library -@ ext_funcs -expanded lib . $(HEADER_DEPS) -legacy_coding lib $(base) $(HEADER_DEPS) -lib_dft_fgbg lib $(base) $(HEADER_DEPS) -lib_print lib $(tinfo) $(HEADER_DEPS) -resizeterm lib $(base) $(HEADER_DEPS) -trace_xnames lib $(trace) $(HEADER_DEPS) -use_screen lib $(tinfo) $(HEADER_DEPS) -use_window lib $(base) $(HEADER_DEPS) -wresize lib $(base) $(HEADER_DEPS) - -# Support for termcap (and tic, etc.), which can be a separate library -@ termlib -access lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -add_tries lib $(tinfo) $(HEADER_DEPS) -alloc_ttype lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -codes lib . $(HEADER_DEPS) -comp_captab lib . $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h -comp_error lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -comp_hash lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h -db_iterator lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -doalloc lib $(tinfo) $(HEADER_DEPS) -entries lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -fallback lib . $(HEADER_DEPS) -free_ttype lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -getenv_num lib $(tinfo) $(HEADER_DEPS) -home_terminfo lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -init_keytry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h init_keytry.h -lib_acs lib $(tinfo) $(HEADER_DEPS) -lib_baudrate lib $(tinfo) $(HEADER_DEPS) ../include/termcap.h -lib_cur_term lib $(tinfo) $(HEADER_DEPS) ../include/termcap.h -lib_data lib $(tinfo) $(HEADER_DEPS) -lib_has_cap lib $(tinfo) $(HEADER_DEPS) -lib_kernel lib $(tinfo) $(HEADER_DEPS) -lib_keyname lib . $(HEADER_DEPS) $(INCDIR)/tic.h -lib_longname lib $(tinfo) $(HEADER_DEPS) -lib_napms lib $(tinfo) $(HEADER_DEPS) -lib_options lib $(tinfo) $(HEADER_DEPS) -lib_raw lib $(tinfo) $(HEADER_DEPS) -lib_setup lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_termcap lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/termcap.h $(INCDIR)/capdefaults.c -lib_termname lib $(tinfo) $(HEADER_DEPS) -lib_tgoto lib $(tinfo) $(HEADER_DEPS) ../include/termcap.h -lib_ti lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_tparm lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_tputs lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/termcap.h -lib_trace lib $(trace) $(HEADER_DEPS) $(INCDIR)/tic.h -lib_traceatr lib $(trace) $(HEADER_DEPS) -lib_tracebits lib $(trace) $(HEADER_DEPS) -lib_tracechr lib $(trace) $(HEADER_DEPS) -lib_ttyflags lib $(tinfo) $(HEADER_DEPS) -lib_twait lib $(serial) $(HEADER_DEPS) -name_match lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -names lib . $(HEADER_DEPS) -read_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h $(INCDIR)/hashed_db.h -read_termcap lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -setbuf lib $(tinfo) $(HEADER_DEPS) -strings lib $(tinfo) $(HEADER_DEPS) -trace_buf lib $(trace) $(HEADER_DEPS) -trace_tries lib $(trace) $(HEADER_DEPS) -tries lib $(base) $(HEADER_DEPS) -trim_sgr0 lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -unctrl lib . $(HEADER_DEPS) -visbuf lib $(trace) $(HEADER_DEPS) $(INCDIR)/tic.h - -# Modules used only for tic, other programs using internal interfaces -@ ticlib -alloc_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -captoinfo lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -comp_expand lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -comp_parse lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -comp_scan lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h -parse_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/parametrized.h -write_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h $(INCDIR)/hashed_db.h - -# Extensions to the termlib library -@ ext_tinfo -define_key lib $(base) $(HEADER_DEPS) -hashed_db lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h $(INCDIR)/hashed_db.h -key_defined lib $(base) $(HEADER_DEPS) -keybound lib $(base) $(HEADER_DEPS) -keyok lib $(base) $(HEADER_DEPS) -version lib $(base) $(HEADER_DEPS) - -# Porting -@ port_drivers -lib_driver lib $(base) $(HEADER_DEPS) - -@ port_win32con -gettimeofday lib $(win32con) $(HEADER_DEPS) -wcwidth lib $(win32con) $(HEADER_DEPS) -win_driver lib $(win32con) $(HEADER_DEPS) - -@ port_tinfo -tinfo_driver lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h - -# vile:makemode diff --git a/deps/ncurses-5.9/ncurses/names.c b/deps/ncurses-5.9/ncurses/names.c deleted file mode 100644 index db93378..0000000 --- a/deps/ncurses-5.9/ncurses/names.c +++ /dev/null @@ -1,1379 +0,0 @@ -/* This file was generated by MKnames.awk */ - -#include - -#define IT NCURSES_CONST char * const - - -#if BROKEN_LINKER || USE_REENTRANT - -static const char _nc_name_blob[] = -"bw\0" "auto_left_margin\0" "am\0" "auto_right_margin\0" "xsb\0" "no_esc_ctlc\0" \ -"xhp\0" "ceol_standout_glitch\0" "xenl\0" "eat_newline_glitch\0" "eo\0" \ -"erase_overstrike\0" "gn\0" "generic_type\0" "hc\0" "hard_copy\0" "km\0" \ -"has_meta_key\0" "hs\0" "has_status_line\0" "in\0" "insert_null_glitch\0" \ -"da\0" "memory_above\0" "db\0" "memory_below\0" "mir\0" "move_insert_mode\0" \ -"msgr\0" "move_standout_mode\0" "os\0" "over_strike\0" "eslok\0" "status_line_esc_ok\0" \ -"xt\0" "dest_tabs_magic_smso\0" "hz\0" "tilde_glitch\0" "ul\0" "transparent_underline\0" \ -"xon\0" "xon_xoff\0" "nxon\0" "needs_xon_xoff\0" "mc5i\0" "prtr_silent\0" \ -"chts\0" "hard_cursor\0" "nrrmc\0" "non_rev_rmcup\0" "npc\0" "no_pad_char\0" \ -"ndscr\0" "non_dest_scroll_region\0" "ccc\0" "can_change\0" "bce\0" "back_color_erase\0" \ -"hls\0" "hue_lightness_saturation\0" "xhpa\0" "col_addr_glitch\0" "crxm\0" \ -"cr_cancels_micro_mode\0" "daisy\0" "has_print_wheel\0" "xvpa\0" "row_addr_glitch\0" \ -"sam\0" "semi_auto_right_margin\0" "cpix\0" "cpi_changes_res\0" "lpix\0" \ -"lpi_changes_res\0" "cols\0" "columns\0" "it\0" "init_tabs\0" "lines\0" \ -"lines\0" "lm\0" "lines_of_memory\0" "xmc\0" "magic_cookie_glitch\0" "pb\0" \ -"padding_baud_rate\0" "vt\0" "virtual_terminal\0" "wsl\0" "width_status_line\0" \ -"nlab\0" "num_labels\0" "lh\0" "label_height\0" "lw\0" "label_width\0" \ -"ma\0" "max_attributes\0" "wnum\0" "maximum_windows\0" "colors\0" "max_colors\0" \ -"pairs\0" "max_pairs\0" "ncv\0" "no_color_video\0" "bufsz\0" "buffer_capacity\0" \ -"spinv\0" "dot_vert_spacing\0" "spinh\0" "dot_horz_spacing\0" "maddr\0" \ -"max_micro_address\0" "mjump\0" "max_micro_jump\0" "mcs\0" "micro_col_size\0" \ -"mls\0" "micro_line_size\0" "npins\0" "number_of_pins\0" "orc\0" "output_res_char\0" \ -"orl\0" "output_res_line\0" "orhi\0" "output_res_horz_inch\0" "orvi\0" \ -"output_res_vert_inch\0" "cps\0" "print_rate\0" "widcs\0" "wide_char_size\0" \ -"btns\0" "buttons\0" "bitwin\0" "bit_image_entwining\0" "bitype\0" "bit_image_type\0" \ -"cbt\0" "back_tab\0" "bel\0" "bell\0" "cr\0" "carriage_return\0" "csr\0" \ -"change_scroll_region\0" "tbc\0" "clear_all_tabs\0" "clear\0" "clear_screen\0" \ -"el\0" "clr_eol\0" "ed\0" "clr_eos\0" "hpa\0" "column_address\0" "cmdch\0" \ -"command_character\0" "cup\0" "cursor_address\0" "cud1\0" "cursor_down\0" \ -"home\0" "cursor_home\0" "civis\0" "cursor_invisible\0" "cub1\0" "cursor_left\0" \ -"mrcup\0" "cursor_mem_address\0" "cnorm\0" "cursor_normal\0" "cuf1\0" "cursor_right\0" \ -"ll\0" "cursor_to_ll\0" "cuu1\0" "cursor_up\0" "cvvis\0" "cursor_visible\0" \ -"dch1\0" "delete_character\0" "dl1\0" "delete_line\0" "dsl\0" "dis_status_line\0" \ -"hd\0" "down_half_line\0" "smacs\0" "enter_alt_charset_mode\0" "blink\0" \ -"enter_blink_mode\0" "bold\0" "enter_bold_mode\0" "smcup\0" "enter_ca_mode\0" \ -"smdc\0" "enter_delete_mode\0" "dim\0" "enter_dim_mode\0" "smir\0" "enter_insert_mode\0" \ -"invis\0" "enter_secure_mode\0" "prot\0" "enter_protected_mode\0" "rev\0" \ -"enter_reverse_mode\0" "smso\0" "enter_standout_mode\0" "smul\0" "enter_underline_mode\0" \ -"ech\0" "erase_chars\0" "rmacs\0" "exit_alt_charset_mode\0" "sgr0\0" "exit_attribute_mode\0" \ -"rmcup\0" "exit_ca_mode\0" "rmdc\0" "exit_delete_mode\0" "rmir\0" "exit_insert_mode\0" \ -"rmso\0" "exit_standout_mode\0" "rmul\0" "exit_underline_mode\0" "flash\0" \ -"flash_screen\0" "ff\0" "form_feed\0" "fsl\0" "from_status_line\0" "is1\0" \ -"init_1string\0" "is2\0" "init_2string\0" "is3\0" "init_3string\0" "if\0" \ -"init_file\0" "ich1\0" "insert_character\0" "il1\0" "insert_line\0" "ip\0" \ -"insert_padding\0" "kbs\0" "key_backspace\0" "ktbc\0" "key_catab\0" "kclr\0" \ -"key_clear\0" "kctab\0" "key_ctab\0" "kdch1\0" "key_dc\0" "kdl1\0" "key_dl\0" \ -"kcud1\0" "key_down\0" "krmir\0" "key_eic\0" "kel\0" "key_eol\0" "ked\0" \ -"key_eos\0" "kf0\0" "key_f0\0" "kf1\0" "key_f1\0" "kf10\0" "key_f10\0" \ -"kf2\0" "key_f2\0" "kf3\0" "key_f3\0" "kf4\0" "key_f4\0" "kf5\0" "key_f5\0" \ -"kf6\0" "key_f6\0" "kf7\0" "key_f7\0" "kf8\0" "key_f8\0" "kf9\0" "key_f9\0" \ -"khome\0" "key_home\0" "kich1\0" "key_ic\0" "kil1\0" "key_il\0" "kcub1\0" \ -"key_left\0" "kll\0" "key_ll\0" "knp\0" "key_npage\0" "kpp\0" "key_ppage\0" \ -"kcuf1\0" "key_right\0" "kind\0" "key_sf\0" "kri\0" "key_sr\0" "khts\0" \ -"key_stab\0" "kcuu1\0" "key_up\0" "rmkx\0" "keypad_local\0" "smkx\0" "keypad_xmit\0" \ -"lf0\0" "lab_f0\0" "lf1\0" "lab_f1\0" "lf10\0" "lab_f10\0" "lf2\0" "lab_f2\0" \ -"lf3\0" "lab_f3\0" "lf4\0" "lab_f4\0" "lf5\0" "lab_f5\0" "lf6\0" "lab_f6\0" \ -"lf7\0" "lab_f7\0" "lf8\0" "lab_f8\0" "lf9\0" "lab_f9\0" "rmm\0" "meta_off\0" \ -"smm\0" "meta_on\0" "nel\0" "newline\0" "pad\0" "pad_char\0" "dch\0" "parm_dch\0" \ -"dl\0" "parm_delete_line\0" "cud\0" "parm_down_cursor\0" "ich\0" "parm_ich\0" \ -"indn\0" "parm_index\0" "il\0" "parm_insert_line\0" "cub\0" "parm_left_cursor\0" \ -"cuf\0" "parm_right_cursor\0" "rin\0" "parm_rindex\0" "cuu\0" "parm_up_cursor\0" \ -"pfkey\0" "pkey_key\0" "pfloc\0" "pkey_local\0" "pfx\0" "pkey_xmit\0" "mc0\0" \ -"print_screen\0" "mc4\0" "prtr_off\0" "mc5\0" "prtr_on\0" "rep\0" "repeat_char\0" \ -"rs1\0" "reset_1string\0" "rs2\0" "reset_2string\0" "rs3\0" "reset_3string\0" \ -"rf\0" "reset_file\0" "rc\0" "restore_cursor\0" "vpa\0" "row_address\0" \ -"sc\0" "save_cursor\0" "ind\0" "scroll_forward\0" "ri\0" "scroll_reverse\0" \ -"sgr\0" "set_attributes\0" "hts\0" "set_tab\0" "wind\0" "set_window\0" \ -"ht\0" "tab\0" "tsl\0" "to_status_line\0" "uc\0" "underline_char\0" "hu\0" \ -"up_half_line\0" "iprog\0" "init_prog\0" "ka1\0" "key_a1\0" "ka3\0" "key_a3\0" \ -"kb2\0" "key_b2\0" "kc1\0" "key_c1\0" "kc3\0" "key_c3\0" "mc5p\0" "prtr_non\0" \ -"rmp\0" "char_padding\0" "acsc\0" "acs_chars\0" "pln\0" "plab_norm\0" "kcbt\0" \ -"key_btab\0" "smxon\0" "enter_xon_mode\0" "rmxon\0" "exit_xon_mode\0" "smam\0" \ -"enter_am_mode\0" "rmam\0" "exit_am_mode\0" "xonc\0" "xon_character\0" \ -"xoffc\0" "xoff_character\0" "enacs\0" "ena_acs\0" "smln\0" "label_on\0" \ -"rmln\0" "label_off\0" "kbeg\0" "key_beg\0" "kcan\0" "key_cancel\0" "kclo\0" \ -"key_close\0" "kcmd\0" "key_command\0" "kcpy\0" "key_copy\0" "kcrt\0" "key_create\0" \ -"kend\0" "key_end\0" "kent\0" "key_enter\0" "kext\0" "key_exit\0" "kfnd\0" \ -"key_find\0" "khlp\0" "key_help\0" "kmrk\0" "key_mark\0" "kmsg\0" "key_message\0" \ -"kmov\0" "key_move\0" "knxt\0" "key_next\0" "kopn\0" "key_open\0" "kopt\0" \ -"key_options\0" "kprv\0" "key_previous\0" "kprt\0" "key_print\0" "krdo\0" \ -"key_redo\0" "kref\0" "key_reference\0" "krfr\0" "key_refresh\0" "krpl\0" \ -"key_replace\0" "krst\0" "key_restart\0" "kres\0" "key_resume\0" "ksav\0" \ -"key_save\0" "kspd\0" "key_suspend\0" "kund\0" "key_undo\0" "kBEG\0" "key_sbeg\0" \ -"kCAN\0" "key_scancel\0" "kCMD\0" "key_scommand\0" "kCPY\0" "key_scopy\0" \ -"kCRT\0" "key_screate\0" "kDC\0" "key_sdc\0" "kDL\0" "key_sdl\0" "kslt\0" \ -"key_select\0" "kEND\0" "key_send\0" "kEOL\0" "key_seol\0" "kEXT\0" "key_sexit\0" \ -"kFND\0" "key_sfind\0" "kHLP\0" "key_shelp\0" "kHOM\0" "key_shome\0" "kIC\0" \ -"key_sic\0" "kLFT\0" "key_sleft\0" "kMSG\0" "key_smessage\0" "kMOV\0" "key_smove\0" \ -"kNXT\0" "key_snext\0" "kOPT\0" "key_soptions\0" "kPRV\0" "key_sprevious\0" \ -"kPRT\0" "key_sprint\0" "kRDO\0" "key_sredo\0" "kRPL\0" "key_sreplace\0" \ -"kRIT\0" "key_sright\0" "kRES\0" "key_srsume\0" "kSAV\0" "key_ssave\0" \ -"kSPD\0" "key_ssuspend\0" "kUND\0" "key_sundo\0" "rfi\0" "req_for_input\0" \ -"kf11\0" "key_f11\0" "kf12\0" "key_f12\0" "kf13\0" "key_f13\0" "kf14\0" \ -"key_f14\0" "kf15\0" "key_f15\0" "kf16\0" "key_f16\0" "kf17\0" "key_f17\0" \ -"kf18\0" "key_f18\0" "kf19\0" "key_f19\0" "kf20\0" "key_f20\0" "kf21\0" \ -"key_f21\0" "kf22\0" "key_f22\0" "kf23\0" "key_f23\0" "kf24\0" "key_f24\0" \ -"kf25\0" "key_f25\0" "kf26\0" "key_f26\0" "kf27\0" "key_f27\0" "kf28\0" \ -"key_f28\0" "kf29\0" "key_f29\0" "kf30\0" "key_f30\0" "kf31\0" "key_f31\0" \ -"kf32\0" "key_f32\0" "kf33\0" "key_f33\0" "kf34\0" "key_f34\0" "kf35\0" \ -"key_f35\0" "kf36\0" "key_f36\0" "kf37\0" "key_f37\0" "kf38\0" "key_f38\0" \ -"kf39\0" "key_f39\0" "kf40\0" "key_f40\0" "kf41\0" "key_f41\0" "kf42\0" \ -"key_f42\0" "kf43\0" "key_f43\0" "kf44\0" "key_f44\0" "kf45\0" "key_f45\0" \ -"kf46\0" "key_f46\0" "kf47\0" "key_f47\0" "kf48\0" "key_f48\0" "kf49\0" \ -"key_f49\0" "kf50\0" "key_f50\0" "kf51\0" "key_f51\0" "kf52\0" "key_f52\0" \ -"kf53\0" "key_f53\0" "kf54\0" "key_f54\0" "kf55\0" "key_f55\0" "kf56\0" \ -"key_f56\0" "kf57\0" "key_f57\0" "kf58\0" "key_f58\0" "kf59\0" "key_f59\0" \ -"kf60\0" "key_f60\0" "kf61\0" "key_f61\0" "kf62\0" "key_f62\0" "kf63\0" \ -"key_f63\0" "el1\0" "clr_bol\0" "mgc\0" "clear_margins\0" "smgl\0" "set_left_margin\0" \ -"smgr\0" "set_right_margin\0" "fln\0" "label_format\0" "sclk\0" "set_clock\0" \ -"dclk\0" "display_clock\0" "rmclk\0" "remove_clock\0" "cwin\0" "create_window\0" \ -"wingo\0" "goto_window\0" "hup\0" "hangup\0" "dial\0" "dial_phone\0" "qdial\0" \ -"quick_dial\0" "tone\0" "tone\0" "pulse\0" "pulse\0" "hook\0" "flash_hook\0" \ -"pause\0" "fixed_pause\0" "wait\0" "wait_tone\0" "u0\0" "user0\0" "u1\0" \ -"user1\0" "u2\0" "user2\0" "u3\0" "user3\0" "u4\0" "user4\0" "u5\0" "user5\0" \ -"u6\0" "user6\0" "u7\0" "user7\0" "u8\0" "user8\0" "u9\0" "user9\0" "op\0" \ -"orig_pair\0" "oc\0" "orig_colors\0" "initc\0" "initialize_color\0" "initp\0" \ -"initialize_pair\0" "scp\0" "set_color_pair\0" "setf\0" "set_foreground\0" \ -"setb\0" "set_background\0" "cpi\0" "change_char_pitch\0" "lpi\0" "change_line_pitch\0" \ -"chr\0" "change_res_horz\0" "cvr\0" "change_res_vert\0" "defc\0" "define_char\0" \ -"swidm\0" "enter_doublewide_mode\0" "sdrfq\0" "enter_draft_quality\0" "sitm\0" \ -"enter_italics_mode\0" "slm\0" "enter_leftward_mode\0" "smicm\0" "enter_micro_mode\0" \ -"snlq\0" "enter_near_letter_quality\0" "snrmq\0" "enter_normal_quality\0" \ -"sshm\0" "enter_shadow_mode\0" "ssubm\0" "enter_subscript_mode\0" "ssupm\0" \ -"enter_superscript_mode\0" "sum\0" "enter_upward_mode\0" "rwidm\0" "exit_doublewide_mode\0" \ -"ritm\0" "exit_italics_mode\0" "rlm\0" "exit_leftward_mode\0" "rmicm\0" \ -"exit_micro_mode\0" "rshm\0" "exit_shadow_mode\0" "rsubm\0" "exit_subscript_mode\0" \ -"rsupm\0" "exit_superscript_mode\0" "rum\0" "exit_upward_mode\0" "mhpa\0" \ -"micro_column_address\0" "mcud1\0" "micro_down\0" "mcub1\0" "micro_left\0" \ -"mcuf1\0" "micro_right\0" "mvpa\0" "micro_row_address\0" "mcuu1\0" "micro_up\0" \ -"porder\0" "order_of_pins\0" "mcud\0" "parm_down_micro\0" "mcub\0" "parm_left_micro\0" \ -"mcuf\0" "parm_right_micro\0" "mcuu\0" "parm_up_micro\0" "scs\0" "select_char_set\0" \ -"smgb\0" "set_bottom_margin\0" "smgbp\0" "set_bottom_margin_parm\0" "smglp\0" \ -"set_left_margin_parm\0" "smgrp\0" "set_right_margin_parm\0" "smgt\0" "set_top_margin\0" \ -"smgtp\0" "set_top_margin_parm\0" "sbim\0" "start_bit_image\0" "scsd\0" \ -"start_char_set_def\0" "rbim\0" "stop_bit_image\0" "rcsd\0" "stop_char_set_def\0" \ -"subcs\0" "subscript_characters\0" "supcs\0" "superscript_characters\0" \ -"docr\0" "these_cause_cr\0" "zerom\0" "zero_motion\0" "csnm\0" "char_set_names\0" \ -"kmous\0" "key_mouse\0" "minfo\0" "mouse_info\0" "reqmp\0" "req_mouse_pos\0" \ -"getm\0" "get_mouse\0" "setaf\0" "set_a_foreground\0" "setab\0" "set_a_background\0" \ -"pfxl\0" "pkey_plab\0" "devt\0" "device_type\0" "csin\0" "code_set_init\0" \ -"s0ds\0" "set0_des_seq\0" "s1ds\0" "set1_des_seq\0" "s2ds\0" "set2_des_seq\0" \ -"s3ds\0" "set3_des_seq\0" "smglr\0" "set_lr_margin\0" "smgtb\0" "set_tb_margin\0" \ -"birep\0" "bit_image_repeat\0" "binel\0" "bit_image_newline\0" "bicr\0" \ -"bit_image_carriage_return\0" "colornm\0" "color_names\0" "defbi\0" "define_bit_image_region\0" \ -"endbi\0" "end_bit_image_region\0" "setcolor\0" "set_color_band\0" "slines\0" \ -"set_page_length\0" "dispc\0" "display_pc_char\0" "smpch\0" "enter_pc_charset_mode\0" \ -"rmpch\0" "exit_pc_charset_mode\0" "smsc\0" "enter_scancode_mode\0" "rmsc\0" \ -"exit_scancode_mode\0" "pctrm\0" "pc_term_options\0" "scesc\0" "scancode_escape\0" \ -"scesa\0" "alt_scancode_esc\0" "ehhlm\0" "enter_horizontal_hl_mode\0" "elhlm\0" \ -"enter_left_hl_mode\0" "elohlm\0" "enter_low_hl_mode\0" "erhlm\0" "enter_right_hl_mode\0" \ -"ethlm\0" "enter_top_hl_mode\0" "evhlm\0" "enter_vertical_hl_mode\0" "sgr1\0" \ -"set_a_attributes\0" "slength\0" "set_pglen_inch\0" "OTi2\0" "termcap_init2\0" \ -"OTrs\0" "termcap_reset\0" "OTug\0" "magic_cookie_glitch_ul\0" "OTbs\0" \ -"backspaces_with_bs\0" "OTns\0" "crt_no_scrolling\0" "OTnc\0" "no_correctly_working_cr\0" \ -"OTdC\0" "carriage_return_delay\0" "OTdN\0" "new_line_delay\0" "OTnl\0" \ -"linefeed_if_not_lf\0" "OTbc\0" "backspace_if_not_bs\0" "OTMT\0" "gnu_has_meta_key\0" \ -"OTNL\0" "linefeed_is_newline\0" "OTdB\0" "backspace_delay\0" "OTdT\0" \ -"horizontal_tab_delay\0" "OTkn\0" "number_of_function_keys\0" "OTko\0" \ -"other_non_function_keys\0" "OTma\0" "arrow_key_map\0" "OTpt\0" "has_hardware_tabs\0" \ -"OTxr\0" "return_does_clr_eol\0" "OTG2\0" "acs_ulcorner\0" "OTG3\0" "acs_llcorner\0" \ -"OTG1\0" "acs_urcorner\0" "OTG4\0" "acs_lrcorner\0" "OTGR\0" "acs_ltee\0" \ -"OTGL\0" "acs_rtee\0" "OTGU\0" "acs_btee\0" "OTGD\0" "acs_ttee\0" "OTGH\0" \ -"acs_hline\0" "OTGV\0" "acs_vline\0" "OTGC\0" "acs_plus\0" "meml\0" "memory_lock\0" \ -"memu\0" "memory_unlock\0" "box1\0" "box_chars_1\0" ; -static const short _nc_offset_boolfnames[] = { -3, 23, 45, 61, 87, 109, 129, -145, 158, 174, 193, 215, 231, -248, 270, 292, 310, 332, 356, -372, 398, 412, 432, 449, 467, -485, 503, 530, 545, 566, 596, -617, 645, 666, 686, 714, 735, -8193, 8217, 8239, 8364, 8386, 8535, 8558, }; - -static NCURSES_CONST char ** ptr_boolfnames = 0; - -static const short _nc_offset_boolnames[] = { -0, 20, 41, 57, 82, 106, 126, 142, 155, 171, 190, 212, 228, 244, 265, 289, 304, 329, 353, 369, 394, 407, 427, 444, 461, 481, 497, 526, 541, 562, 591, 612, 639, 661, 682, 709, 730, 8188, 8212, 8234, 8359, 8381, 8530, 8553, }; - -static NCURSES_CONST char ** ptr_boolnames = 0; - -static const short _nc_offset_numfnames[] = { -756, 767, 783, 792, 812, 835, -856, 877, 900, 914, 930, 945, -965, 988, 1005, 1019, 1040, 1062, 1085, 1108, 1132, 1151, 1170, -1192, 1211, 1231, 1252, 1278, 1303, 1320, 1340, 1355, 1382, 8165, -8268, 8295, 8411, 8432, -8458, }; - -static NCURSES_CONST char ** ptr_numfnames = 0; - -static const short _nc_offset_numnames[] = { -751, 764, 777, 789, 808, 832, 853, 873, 895, 911, 927, 942, 960, 981, 999, 1015, 1034, 1056, -1079, 1102, 1126, 1147, 1166, 1186, 1207, 1227, 1247, 1273, 1299, -1314, 1335, 1348, 1375, 8160, 8263, 8290, 8406, 8427, 8453, }; - -static NCURSES_CONST char ** ptr_numnames = 0; - -static const short _nc_offset_strfnames[] = { -1401, -1414, 1422, 1442, 1467, 1488, 1504, 1515, 1527, 1548, 1570, 1590, -1607, 1625, 1647, 1665, 1690, 1709, 1725, 1743, 1759, 1779, 1800, -1816, 1835, 1856, 1885, 1907, 1929, 1948, 1970, 1990, 2014, 2037, -2062, 2086, 2111, 2136, 2154, 2181, 2207, 2225, 2247, 2269, 2293, -2319, 2335, 2349, 2370, 2387, 2404, 2420, 2435, 2456, 2471, 2490, -2509, 2524, 2540, 2555, 2567, 2580, 2595, 2607, 2619, 2631, 2642, -2654, 2666, 2677, 2688, 2699, 2710, 2721, 2732, 2743, 2756, 2771, -2783, 2796, 2809, 2820, 2834, 2850, 2865, 2876, 2888, 2903, 2915, -2933, 2949, 2960, 2972, 2984, 2995, 3006, 3017, 3028, 3039, 3050, -3061, 3072, 3085, 3097, 3109, 3122, 3134, 3155, 3176, 3190, 3204, -3225, 3246, 3268, 3284, 3305, 3320, 3335, 3349, 3366, 3379, 3391, -3407, 3425, 3443, 3460, 3474, 3493, 3508, 3524, 3542, 3561, 3580, -3593, 3607, 3615, 3633, 3651, 3670, 3684, 3695, 3706, 3717, 3728, -3740, 3753, 3771, 3785, 3800, 3815, 3836, 3855, 3874, 3892, 3912, -3933, 3946, 3960, 3975, 3988, 4004, 4019, 4036, 4050, 4066, 4079, -4094, 4108, 4122, 4136, 4150, 4167, 4181, 4195, 4209, 4226, 4244, -4259, 4273, 4292, 4309, 4326, 4343, 4359, 4373, 4390, 4404, 4418, -4435, 4453, 4468, 4484, 4496, 4509, 4525, 4539, 4553, 4568, 4583, -4598, 4612, 4625, 4640, 4658, 4673, 4688, 4706, 4725, 4741, 4756, -4774, 4790, 4806, 4821, 4839, 4853, 4872, 4885, 4898, 4911, 4924, -4937, 4950, 4963, 4976, 4989, 5002, 5015, 5028, 5041, 5054, 5067, -5080, 5093, 5106, 5119, 5132, 5145, 5158, 5171, 5184, 5197, 5210, -5223, 5236, 5249, 5262, 5275, 5288, 5301, 5314, 5327, 5340, 5353, -5366, 5379, 5392, 5405, 5418, 5431, 5444, 5457, 5470, 5483, 5496, -5509, 5522, 5535, 5548, 5560, 5572, 5591, 5612, 5633, 5651, 5666, -5686, 5704, 5724, 5740, 5752, 5769, 5785, 5796, 5807, 5824, 5841, -5854, 5863, 5872, 5881, 5890, 5899, 5908, 5917, 5926, 5935, 5944, -5957, 5975, 5998, 6018, 6038, 6058, 6077, 6099, 6121, 6141, 6162, -6180, 6208, 6233, 6256, 6282, 6304, 6336, 6362, 6386, 6413, 6440, -6464, 6490, 6512, 6537, 6558, 6581, 6607, 6633, 6655, 6682, 6699, -6716, 6733, 6757, 6773, 6792, 6813, 6834, 6856, 6874, 6895, 6919, -6948, 6975, 7002, 7023, 7048, 7069, 7093, 7113, 7137, 7164, 7192, -7213, 7230, 7251, 7267, 7284, 7303, 7319, 7342, 7364, 7379, 7396, -7415, 7433, 7451, 7469, 7488, 7508, 7528, 7551, 7574, 7608, 7626, -7656, 7686, 7708, 7730, 7752, 7780, 7806, 7831, 7856, 7878, 7900, -7923, 7954, 7980, 8004, 8030, 8054, 8082, 8107, 8127, 8146, 8315, 8339, 8487, 8516, 8583, 8601, 8619, 8637, 8655, 8669, -8683, 8697, 8711, 8726, 8741, 8755, 8772, 8791, }; - -static NCURSES_CONST char ** ptr_strfnames = 0; - -static const short _nc_offset_strnames[] = { -1397, 1410, 1419, 1438, 1463, 1482, 1501, -1512, 1523, 1542, 1566, 1585, 1602, 1619, 1642, 1659, 1684, 1704, -1722, 1738, 1753, 1774, 1796, 1812, 1832, 1850, 1879, 1902, 1923, -1943, 1966, 1985, 2008, 2032, 2058, 2081, 2106, 2132, 2148, 2176, -2201, 2220, 2242, 2264, 2288, 2313, 2332, 2345, 2366, 2383, 2400, -2417, 2430, 2452, 2468, 2486, 2504, 2519, 2534, 2549, 2562, 2574, -2589, 2603, 2615, 2627, 2638, 2649, 2662, 2673, 2684, 2695, 2706, -2717, 2728, 2739, 2750, 2765, 2778, 2790, 2805, 2816, 2830, 2844, -2860, 2872, 2883, 2897, 2910, 2928, 2945, 2956, 2967, 2980, 2991, -3002, 3013, 3024, 3035, 3046, 3057, 3068, 3081, 3093, 3105, 3118, -3131, 3151, 3172, 3185, 3201, 3221, 3242, 3264, 3280, 3299, 3314, -3331, 3345, 3362, 3375, 3387, 3403, 3421, 3439, 3457, 3471, 3489, -3505, 3520, 3539, 3557, 3576, 3588, 3604, 3611, 3630, 3648, 3664, -3680, 3691, 3702, 3713, 3724, 3735, 3749, 3766, 3781, 3795, 3809, -3830, 3850, 3869, 3887, 3906, 3927, 3941, 3955, 3970, 3983, 3999, -4014, 4031, 4045, 4061, 4074, 4089, 4103, 4117, 4131, 4145, 4162, -4176, 4190, 4204, 4221, 4239, 4254, 4268, 4287, 4304, 4321, 4338, -4354, 4368, 4385, 4399, 4413, 4430, 4448, 4463, 4480, 4492, 4504, -4520, 4534, 4548, 4563, 4578, 4593, 4608, 4620, 4635, 4653, 4668, -4683, 4701, 4720, 4736, 4751, 4769, 4785, 4801, 4816, 4834, 4849, -4867, 4880, 4893, 4906, 4919, 4932, 4945, 4958, 4971, 4984, 4997, -5010, 5023, 5036, 5049, 5062, 5075, 5088, 5101, 5114, 5127, 5140, -5153, 5166, 5179, 5192, 5205, 5218, 5231, 5244, 5257, 5270, 5283, -5296, 5309, 5322, 5335, 5348, 5361, 5374, 5387, 5400, 5413, 5426, -5439, 5452, 5465, 5478, 5491, 5504, 5517, 5530, 5543, 5556, 5568, -5586, 5607, 5629, 5646, 5661, 5680, 5699, 5718, 5736, 5747, 5763, -5780, 5790, 5802, 5818, 5836, 5851, 5860, 5869, 5878, 5887, 5896, -5905, 5914, 5923, 5932, 5941, 5954, 5969, 5992, 6014, 6033, 6053, -6073, 6095, 6117, 6137, 6157, 6174, 6202, 6228, 6252, 6276, 6299, -6330, 6357, 6380, 6407, 6436, 6458, 6485, 6508, 6531, 6553, 6575, -6601, 6629, 6650, 6676, 6693, 6710, 6728, 6751, 6766, 6787, 6808, -6829, 6851, 6870, 6890, 6913, 6942, 6969, 6997, 7017, 7043, 7064, -7088, 7108, 7131, 7158, 7187, 7207, 7225, 7245, 7261, 7278, 7298, -7313, 7336, 7359, 7374, 7391, 7410, 7428, 7446, 7464, 7482, 7502, -7522, 7545, 7569, 7600, 7620, 7650, 7677, 7701, 7724, 7746, 7774, -7801, 7826, 7850, 7872, 7894, 7917, 7948, 7973, 7998, 8024, 8048, -8077, 8099, 8122, 8141, 8310, -8334, 8482, 8511, 8578, -8596, 8614, 8632, 8650, 8664, 8678, 8692, 8706, 8721, 8736, 8750, -8767, 8786, }; - -static NCURSES_CONST char ** ptr_strnames = 0; - - -static IT * -alloc_array(NCURSES_CONST char ***value, const short *offsets, unsigned size) -{ - if (*value == 0) { - if ((*value = typeCalloc(NCURSES_CONST char *, size + 1)) != 0) { - unsigned n; - for (n = 0; n < size; ++n) { - (*value)[n] = (NCURSES_CONST char *) _nc_name_blob + offsets[n]; - } - } - } - return *value; -} - -#define FIX(it) NCURSES_IMPEXP IT * NCURSES_API NCURSES_PUBLIC_VAR(it)(void) { return alloc_array(&ptr_##it, _nc_offset_##it, SIZEOF(_nc_offset_##it)); } - -/* remove public definition which conflicts with FIX() */ -#undef boolnames -#undef boolfnames -#undef numnames -#undef numfnames -#undef strnames -#undef strfnames - -/* add local definition */ -FIX(boolnames) -FIX(boolfnames) -FIX(numnames) -FIX(numfnames) -FIX(strnames) -FIX(strfnames) - -/* restore the public definition */ -#define boolnames NCURSES_PUBLIC_VAR(boolnames()) -#define boolfnames NCURSES_PUBLIC_VAR(boolfnames()) -#define numnames NCURSES_PUBLIC_VAR(numnames()) -#define numfnames NCURSES_PUBLIC_VAR(numfnames()) -#define strnames NCURSES_PUBLIC_VAR(strnames()) -#define strfnames NCURSES_PUBLIC_VAR(strfnames()) - -#define FREE_FIX(it) if (ptr_##it) { FreeAndNull(ptr_##it); } - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_names_leaks(void) -{ -FREE_FIX(boolnames) -FREE_FIX(boolfnames) -FREE_FIX(numnames) -FREE_FIX(numfnames) -FREE_FIX(strnames) -FREE_FIX(strfnames) -} -#endif - -#else - -#define DCL(it) NCURSES_EXPORT_VAR(IT) it[] - -DCL(boolnames) = { - "bw", - "am", - "xsb", - "xhp", - "xenl", - "eo", - "gn", - "hc", - "km", - "hs", - "in", - "da", - "db", - "mir", - "msgr", - "os", - "eslok", - "xt", - "hz", - "ul", - "xon", - "nxon", - "mc5i", - "chts", - "nrrmc", - "npc", - "ndscr", - "ccc", - "bce", - "hls", - "xhpa", - "crxm", - "daisy", - "xvpa", - "sam", - "cpix", - "lpix", - "OTbs", - "OTns", - "OTnc", - "OTMT", - "OTNL", - "OTpt", - "OTxr", - - (NCURSES_CONST char *)0, -}; - -DCL(boolfnames) = { - "auto_left_margin", - "auto_right_margin", - "no_esc_ctlc", - "ceol_standout_glitch", - "eat_newline_glitch", - "erase_overstrike", - "generic_type", - "hard_copy", - "has_meta_key", - "has_status_line", - "insert_null_glitch", - "memory_above", - "memory_below", - "move_insert_mode", - "move_standout_mode", - "over_strike", - "status_line_esc_ok", - "dest_tabs_magic_smso", - "tilde_glitch", - "transparent_underline", - "xon_xoff", - "needs_xon_xoff", - "prtr_silent", - "hard_cursor", - "non_rev_rmcup", - "no_pad_char", - "non_dest_scroll_region", - "can_change", - "back_color_erase", - "hue_lightness_saturation", - "col_addr_glitch", - "cr_cancels_micro_mode", - "has_print_wheel", - "row_addr_glitch", - "semi_auto_right_margin", - "cpi_changes_res", - "lpi_changes_res", - "backspaces_with_bs", - "crt_no_scrolling", - "no_correctly_working_cr", - "gnu_has_meta_key", - "linefeed_is_newline", - "has_hardware_tabs", - "return_does_clr_eol", - - (NCURSES_CONST char *)0, -}; - -DCL(numnames) = { - "cols", - "it", - "lines", - "lm", - "xmc", - "pb", - "vt", - "wsl", - "nlab", - "lh", - "lw", - "ma", - "wnum", - "colors", - "pairs", - "ncv", - "bufsz", - "spinv", - "spinh", - "maddr", - "mjump", - "mcs", - "mls", - "npins", - "orc", - "orl", - "orhi", - "orvi", - "cps", - "widcs", - "btns", - "bitwin", - "bitype", - "OTug", - "OTdC", - "OTdN", - "OTdB", - "OTdT", - "OTkn", - - (NCURSES_CONST char *)0, -}; - -DCL(numfnames) = { - "columns", - "init_tabs", - "lines", - "lines_of_memory", - "magic_cookie_glitch", - "padding_baud_rate", - "virtual_terminal", - "width_status_line", - "num_labels", - "label_height", - "label_width", - "max_attributes", - "maximum_windows", - "max_colors", - "max_pairs", - "no_color_video", - "buffer_capacity", - "dot_vert_spacing", - "dot_horz_spacing", - "max_micro_address", - "max_micro_jump", - "micro_col_size", - "micro_line_size", - "number_of_pins", - "output_res_char", - "output_res_line", - "output_res_horz_inch", - "output_res_vert_inch", - "print_rate", - "wide_char_size", - "buttons", - "bit_image_entwining", - "bit_image_type", - "magic_cookie_glitch_ul", - "carriage_return_delay", - "new_line_delay", - "backspace_delay", - "horizontal_tab_delay", - "number_of_function_keys", - - (NCURSES_CONST char *)0, -}; - -DCL(strnames) = { - "cbt", - "bel", - "cr", - "csr", - "tbc", - "clear", - "el", - "ed", - "hpa", - "cmdch", - "cup", - "cud1", - "home", - "civis", - "cub1", - "mrcup", - "cnorm", - "cuf1", - "ll", - "cuu1", - "cvvis", - "dch1", - "dl1", - "dsl", - "hd", - "smacs", - "blink", - "bold", - "smcup", - "smdc", - "dim", - "smir", - "invis", - "prot", - "rev", - "smso", - "smul", - "ech", - "rmacs", - "sgr0", - "rmcup", - "rmdc", - "rmir", - "rmso", - "rmul", - "flash", - "ff", - "fsl", - "is1", - "is2", - "is3", - "if", - "ich1", - "il1", - "ip", - "kbs", - "ktbc", - "kclr", - "kctab", - "kdch1", - "kdl1", - "kcud1", - "krmir", - "kel", - "ked", - "kf0", - "kf1", - "kf10", - "kf2", - "kf3", - "kf4", - "kf5", - "kf6", - "kf7", - "kf8", - "kf9", - "khome", - "kich1", - "kil1", - "kcub1", - "kll", - "knp", - "kpp", - "kcuf1", - "kind", - "kri", - "khts", - "kcuu1", - "rmkx", - "smkx", - "lf0", - "lf1", - "lf10", - "lf2", - "lf3", - "lf4", - "lf5", - "lf6", - "lf7", - "lf8", - "lf9", - "rmm", - "smm", - "nel", - "pad", - "dch", - "dl", - "cud", - "ich", - "indn", - "il", - "cub", - "cuf", - "rin", - "cuu", - "pfkey", - "pfloc", - "pfx", - "mc0", - "mc4", - "mc5", - "rep", - "rs1", - "rs2", - "rs3", - "rf", - "rc", - "vpa", - "sc", - "ind", - "ri", - "sgr", - "hts", - "wind", - "ht", - "tsl", - "uc", - "hu", - "iprog", - "ka1", - "ka3", - "kb2", - "kc1", - "kc3", - "mc5p", - "rmp", - "acsc", - "pln", - "kcbt", - "smxon", - "rmxon", - "smam", - "rmam", - "xonc", - "xoffc", - "enacs", - "smln", - "rmln", - "kbeg", - "kcan", - "kclo", - "kcmd", - "kcpy", - "kcrt", - "kend", - "kent", - "kext", - "kfnd", - "khlp", - "kmrk", - "kmsg", - "kmov", - "knxt", - "kopn", - "kopt", - "kprv", - "kprt", - "krdo", - "kref", - "krfr", - "krpl", - "krst", - "kres", - "ksav", - "kspd", - "kund", - "kBEG", - "kCAN", - "kCMD", - "kCPY", - "kCRT", - "kDC", - "kDL", - "kslt", - "kEND", - "kEOL", - "kEXT", - "kFND", - "kHLP", - "kHOM", - "kIC", - "kLFT", - "kMSG", - "kMOV", - "kNXT", - "kOPT", - "kPRV", - "kPRT", - "kRDO", - "kRPL", - "kRIT", - "kRES", - "kSAV", - "kSPD", - "kUND", - "rfi", - "kf11", - "kf12", - "kf13", - "kf14", - "kf15", - "kf16", - "kf17", - "kf18", - "kf19", - "kf20", - "kf21", - "kf22", - "kf23", - "kf24", - "kf25", - "kf26", - "kf27", - "kf28", - "kf29", - "kf30", - "kf31", - "kf32", - "kf33", - "kf34", - "kf35", - "kf36", - "kf37", - "kf38", - "kf39", - "kf40", - "kf41", - "kf42", - "kf43", - "kf44", - "kf45", - "kf46", - "kf47", - "kf48", - "kf49", - "kf50", - "kf51", - "kf52", - "kf53", - "kf54", - "kf55", - "kf56", - "kf57", - "kf58", - "kf59", - "kf60", - "kf61", - "kf62", - "kf63", - "el1", - "mgc", - "smgl", - "smgr", - "fln", - "sclk", - "dclk", - "rmclk", - "cwin", - "wingo", - "hup", - "dial", - "qdial", - "tone", - "pulse", - "hook", - "pause", - "wait", - "u0", - "u1", - "u2", - "u3", - "u4", - "u5", - "u6", - "u7", - "u8", - "u9", - "op", - "oc", - "initc", - "initp", - "scp", - "setf", - "setb", - "cpi", - "lpi", - "chr", - "cvr", - "defc", - "swidm", - "sdrfq", - "sitm", - "slm", - "smicm", - "snlq", - "snrmq", - "sshm", - "ssubm", - "ssupm", - "sum", - "rwidm", - "ritm", - "rlm", - "rmicm", - "rshm", - "rsubm", - "rsupm", - "rum", - "mhpa", - "mcud1", - "mcub1", - "mcuf1", - "mvpa", - "mcuu1", - "porder", - "mcud", - "mcub", - "mcuf", - "mcuu", - "scs", - "smgb", - "smgbp", - "smglp", - "smgrp", - "smgt", - "smgtp", - "sbim", - "scsd", - "rbim", - "rcsd", - "subcs", - "supcs", - "docr", - "zerom", - "csnm", - "kmous", - "minfo", - "reqmp", - "getm", - "setaf", - "setab", - "pfxl", - "devt", - "csin", - "s0ds", - "s1ds", - "s2ds", - "s3ds", - "smglr", - "smgtb", - "birep", - "binel", - "bicr", - "colornm", - "defbi", - "endbi", - "setcolor", - "slines", - "dispc", - "smpch", - "rmpch", - "smsc", - "rmsc", - "pctrm", - "scesc", - "scesa", - "ehhlm", - "elhlm", - "elohlm", - "erhlm", - "ethlm", - "evhlm", - "sgr1", - "slength", - "OTi2", - "OTrs", - "OTnl", - "OTbc", - "OTko", - "OTma", - "OTG2", - "OTG3", - "OTG1", - "OTG4", - "OTGR", - "OTGL", - "OTGU", - "OTGD", - "OTGH", - "OTGV", - "OTGC", - "meml", - "memu", - "box1", - - (NCURSES_CONST char *)0, -}; - -DCL(strfnames) = { - "back_tab", - "bell", - "carriage_return", - "change_scroll_region", - "clear_all_tabs", - "clear_screen", - "clr_eol", - "clr_eos", - "column_address", - "command_character", - "cursor_address", - "cursor_down", - "cursor_home", - "cursor_invisible", - "cursor_left", - "cursor_mem_address", - "cursor_normal", - "cursor_right", - "cursor_to_ll", - "cursor_up", - "cursor_visible", - "delete_character", - "delete_line", - "dis_status_line", - "down_half_line", - "enter_alt_charset_mode", - "enter_blink_mode", - "enter_bold_mode", - "enter_ca_mode", - "enter_delete_mode", - "enter_dim_mode", - "enter_insert_mode", - "enter_secure_mode", - "enter_protected_mode", - "enter_reverse_mode", - "enter_standout_mode", - "enter_underline_mode", - "erase_chars", - "exit_alt_charset_mode", - "exit_attribute_mode", - "exit_ca_mode", - "exit_delete_mode", - "exit_insert_mode", - "exit_standout_mode", - "exit_underline_mode", - "flash_screen", - "form_feed", - "from_status_line", - "init_1string", - "init_2string", - "init_3string", - "init_file", - "insert_character", - "insert_line", - "insert_padding", - "key_backspace", - "key_catab", - "key_clear", - "key_ctab", - "key_dc", - "key_dl", - "key_down", - "key_eic", - "key_eol", - "key_eos", - "key_f0", - "key_f1", - "key_f10", - "key_f2", - "key_f3", - "key_f4", - "key_f5", - "key_f6", - "key_f7", - "key_f8", - "key_f9", - "key_home", - "key_ic", - "key_il", - "key_left", - "key_ll", - "key_npage", - "key_ppage", - "key_right", - "key_sf", - "key_sr", - "key_stab", - "key_up", - "keypad_local", - "keypad_xmit", - "lab_f0", - "lab_f1", - "lab_f10", - "lab_f2", - "lab_f3", - "lab_f4", - "lab_f5", - "lab_f6", - "lab_f7", - "lab_f8", - "lab_f9", - "meta_off", - "meta_on", - "newline", - "pad_char", - "parm_dch", - "parm_delete_line", - "parm_down_cursor", - "parm_ich", - "parm_index", - "parm_insert_line", - "parm_left_cursor", - "parm_right_cursor", - "parm_rindex", - "parm_up_cursor", - "pkey_key", - "pkey_local", - "pkey_xmit", - "print_screen", - "prtr_off", - "prtr_on", - "repeat_char", - "reset_1string", - "reset_2string", - "reset_3string", - "reset_file", - "restore_cursor", - "row_address", - "save_cursor", - "scroll_forward", - "scroll_reverse", - "set_attributes", - "set_tab", - "set_window", - "tab", - "to_status_line", - "underline_char", - "up_half_line", - "init_prog", - "key_a1", - "key_a3", - "key_b2", - "key_c1", - "key_c3", - "prtr_non", - "char_padding", - "acs_chars", - "plab_norm", - "key_btab", - "enter_xon_mode", - "exit_xon_mode", - "enter_am_mode", - "exit_am_mode", - "xon_character", - "xoff_character", - "ena_acs", - "label_on", - "label_off", - "key_beg", - "key_cancel", - "key_close", - "key_command", - "key_copy", - "key_create", - "key_end", - "key_enter", - "key_exit", - "key_find", - "key_help", - "key_mark", - "key_message", - "key_move", - "key_next", - "key_open", - "key_options", - "key_previous", - "key_print", - "key_redo", - "key_reference", - "key_refresh", - "key_replace", - "key_restart", - "key_resume", - "key_save", - "key_suspend", - "key_undo", - "key_sbeg", - "key_scancel", - "key_scommand", - "key_scopy", - "key_screate", - "key_sdc", - "key_sdl", - "key_select", - "key_send", - "key_seol", - "key_sexit", - "key_sfind", - "key_shelp", - "key_shome", - "key_sic", - "key_sleft", - "key_smessage", - "key_smove", - "key_snext", - "key_soptions", - "key_sprevious", - "key_sprint", - "key_sredo", - "key_sreplace", - "key_sright", - "key_srsume", - "key_ssave", - "key_ssuspend", - "key_sundo", - "req_for_input", - "key_f11", - "key_f12", - "key_f13", - "key_f14", - "key_f15", - "key_f16", - "key_f17", - "key_f18", - "key_f19", - "key_f20", - "key_f21", - "key_f22", - "key_f23", - "key_f24", - "key_f25", - "key_f26", - "key_f27", - "key_f28", - "key_f29", - "key_f30", - "key_f31", - "key_f32", - "key_f33", - "key_f34", - "key_f35", - "key_f36", - "key_f37", - "key_f38", - "key_f39", - "key_f40", - "key_f41", - "key_f42", - "key_f43", - "key_f44", - "key_f45", - "key_f46", - "key_f47", - "key_f48", - "key_f49", - "key_f50", - "key_f51", - "key_f52", - "key_f53", - "key_f54", - "key_f55", - "key_f56", - "key_f57", - "key_f58", - "key_f59", - "key_f60", - "key_f61", - "key_f62", - "key_f63", - "clr_bol", - "clear_margins", - "set_left_margin", - "set_right_margin", - "label_format", - "set_clock", - "display_clock", - "remove_clock", - "create_window", - "goto_window", - "hangup", - "dial_phone", - "quick_dial", - "tone", - "pulse", - "flash_hook", - "fixed_pause", - "wait_tone", - "user0", - "user1", - "user2", - "user3", - "user4", - "user5", - "user6", - "user7", - "user8", - "user9", - "orig_pair", - "orig_colors", - "initialize_color", - "initialize_pair", - "set_color_pair", - "set_foreground", - "set_background", - "change_char_pitch", - "change_line_pitch", - "change_res_horz", - "change_res_vert", - "define_char", - "enter_doublewide_mode", - "enter_draft_quality", - "enter_italics_mode", - "enter_leftward_mode", - "enter_micro_mode", - "enter_near_letter_quality", - "enter_normal_quality", - "enter_shadow_mode", - "enter_subscript_mode", - "enter_superscript_mode", - "enter_upward_mode", - "exit_doublewide_mode", - "exit_italics_mode", - "exit_leftward_mode", - "exit_micro_mode", - "exit_shadow_mode", - "exit_subscript_mode", - "exit_superscript_mode", - "exit_upward_mode", - "micro_column_address", - "micro_down", - "micro_left", - "micro_right", - "micro_row_address", - "micro_up", - "order_of_pins", - "parm_down_micro", - "parm_left_micro", - "parm_right_micro", - "parm_up_micro", - "select_char_set", - "set_bottom_margin", - "set_bottom_margin_parm", - "set_left_margin_parm", - "set_right_margin_parm", - "set_top_margin", - "set_top_margin_parm", - "start_bit_image", - "start_char_set_def", - "stop_bit_image", - "stop_char_set_def", - "subscript_characters", - "superscript_characters", - "these_cause_cr", - "zero_motion", - "char_set_names", - "key_mouse", - "mouse_info", - "req_mouse_pos", - "get_mouse", - "set_a_foreground", - "set_a_background", - "pkey_plab", - "device_type", - "code_set_init", - "set0_des_seq", - "set1_des_seq", - "set2_des_seq", - "set3_des_seq", - "set_lr_margin", - "set_tb_margin", - "bit_image_repeat", - "bit_image_newline", - "bit_image_carriage_return", - "color_names", - "define_bit_image_region", - "end_bit_image_region", - "set_color_band", - "set_page_length", - "display_pc_char", - "enter_pc_charset_mode", - "exit_pc_charset_mode", - "enter_scancode_mode", - "exit_scancode_mode", - "pc_term_options", - "scancode_escape", - "alt_scancode_esc", - "enter_horizontal_hl_mode", - "enter_left_hl_mode", - "enter_low_hl_mode", - "enter_right_hl_mode", - "enter_top_hl_mode", - "enter_vertical_hl_mode", - "set_a_attributes", - "set_pglen_inch", - "termcap_init2", - "termcap_reset", - "linefeed_if_not_lf", - "backspace_if_not_bs", - "other_non_function_keys", - "arrow_key_map", - "acs_ulcorner", - "acs_llcorner", - "acs_urcorner", - "acs_lrcorner", - "acs_ltee", - "acs_rtee", - "acs_btee", - "acs_ttee", - "acs_hline", - "acs_vline", - "acs_plus", - "memory_lock", - "memory_unlock", - "box_chars_1", - - (NCURSES_CONST char *)0, -}; - - -#endif /* BROKEN_LINKER */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/MKfallback.sh b/deps/ncurses-5.9/ncurses/tinfo/MKfallback.sh deleted file mode 100755 index 11f1d2e..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/MKfallback.sh +++ /dev/null @@ -1,139 +0,0 @@ -#!/bin/sh -############################################################################## -# Copyright (c) 1998-2009,2010 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. # -############################################################################## -# $Id: MKfallback.sh,v 1.15 2010/08/07 20:32:34 tom Exp $ -# -# MKfallback.sh -- create fallback table for entry reads -# -# This script generates source code for a custom version of read_entry.c -# that (instead of reading capabilities for an argument terminal type -# from an on-disk terminfo tree) tries to match the type with one of a -# specified list of types generated in. -# - -terminfo_dir=$1 -shift - -terminfo_src=$1 -shift - -tic_path=$1 -shift - -case $tic_path in #(vi -/*) - tic_head=`echo "$tic_path" | sed -e 's,/[^/]*$,,'` - PATH=$tic_head:$PATH - export PATH - ;; -esac - -if test $# != 0 ; then - tmp_info=tmp_info - echo creating temporary terminfo directory... >&2 - - TERMINFO=`pwd`/$tmp_info - export TERMINFO - - TERMINFO_DIRS=$TERMINFO:$terminfo_dir - export TERMINFO_DIRS - - $tic_path -x $terminfo_src >&2 -else - tmp_info= -fi - -cat < - -EOF - -if [ "$*" ] -then - cat < - -/* fallback entries for: $* */ -EOF - for x in $* - do - echo "/* $x */" - infocmp -E $x - done - - cat <term_names, name, "|")) - return(tp); -EOF -else - echo " /* the fallback list is empty */"; -fi - -cat <&2 - rm -rf $tmp_info -fi diff --git a/deps/ncurses-5.9/ncurses/tinfo/README b/deps/ncurses-5.9/ncurses/tinfo/README deleted file mode 100644 index 14c4220..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/README +++ /dev/null @@ -1,36 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998,2006 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. -- -------------------------------------------------------------------------------- --- $Id: README,v 1.2 2006/04/22 22:19:37 tom Exp $ -------------------------------------------------------------------------------- - -The files in this directory (tinfo) are those that support the terminfo -database and interfaces for ncurses. The terminfo library can be built -separately, as a lower-level library for ncurses, but usually is bundled. - -In addition to the standard documented interfaces, ncurses uses internal -functions which reside in tinfo to satisfy linkage requirements. diff --git a/deps/ncurses-5.9/ncurses/tinfo/access.c b/deps/ncurses-5.9/ncurses/tinfo/access.c deleted file mode 100644 index 87c4f46..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/access.c +++ /dev/null @@ -1,175 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Thomas E. Dickey * - ****************************************************************************/ - -#include - -#include -#include - -#include - -MODULE_ID("$Id: access.c,v 1.16 2010/01/23 17:57:43 tom Exp $") - -#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c)) - -NCURSES_EXPORT(char *) -_nc_rootname(char *path) -{ - char *result = _nc_basename(path); -#if !MIXEDCASE_FILENAMES || defined(PROG_EXT) - static char *temp; - char *s; - - temp = strdup(result); - result = temp; -#if !MIXEDCASE_FILENAMES - for (s = result; *s != '\0'; ++s) { - *s = LOWERCASE(*s); - } -#endif -#if defined(PROG_EXT) - if ((s = strrchr(result, '.')) != 0) { - if (!strcmp(s, PROG_EXT)) - *s = '\0'; - } -#endif -#endif - return result; -} - -/* - * Check if a string appears to be an absolute pathname. - */ -NCURSES_EXPORT(bool) -_nc_is_abs_path(const char *path) -{ -#if defined(__EMX__) || defined(__DJGPP__) -#define is_pathname(s) ((((s) != 0) && ((s)[0] == '/')) \ - || (((s)[0] != 0) && ((s)[1] == ':'))) -#else -#define is_pathname(s) ((s) != 0 && (s)[0] == '/') -#endif - return is_pathname(path); -} - -/* - * Return index of the basename - */ -NCURSES_EXPORT(unsigned) -_nc_pathlast(const char *path) -{ - const char *test = strrchr(path, '/'); -#ifdef __EMX__ - if (test == 0) - test = strrchr(path, '\\'); -#endif - if (test == 0) - test = path; - else - test++; - return (unsigned) (test - path); -} - -NCURSES_EXPORT(char *) -_nc_basename(char *path) -{ - return path + _nc_pathlast(path); -} - -NCURSES_EXPORT(int) -_nc_access(const char *path, int mode) -{ - if (access(path, mode) < 0) { - if ((mode & W_OK) != 0 - && errno == ENOENT - && strlen(path) < PATH_MAX) { - char head[PATH_MAX]; - char *leaf = _nc_basename(strcpy(head, path)); - - if (leaf == 0) - leaf = head; - *leaf = '\0'; - if (head == leaf) - (void) strcpy(head, "."); - - return access(head, R_OK | W_OK | X_OK); - } - return -1; - } - return 0; -} - -NCURSES_EXPORT(bool) -_nc_is_dir_path(const char *path) -{ - bool result = FALSE; - struct stat sb; - - if (stat(path, &sb) == 0 - && (sb.st_mode & S_IFMT) == S_IFDIR) { - result = TRUE; - } - return result; -} - -NCURSES_EXPORT(bool) -_nc_is_file_path(const char *path) -{ - bool result = FALSE; - struct stat sb; - - if (stat(path, &sb) == 0 - && (sb.st_mode & S_IFMT) == S_IFREG) { - result = TRUE; - } - return result; -} - -#ifndef USE_ROOT_ENVIRON -/* - * Returns true if we allow application to use environment variables that are - * used for searching lists of directories, etc. - */ -NCURSES_EXPORT(int) -_nc_env_access(void) -{ -#if HAVE_ISSETUGID - if (issetugid()) - return FALSE; -#elif HAVE_GETEUID && HAVE_GETEGID - if (getuid() != geteuid() - || getgid() != getegid()) - return FALSE; -#endif - return getuid() != 0 && geteuid() != 0; /* ...finally, disallow root */ -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/alloc_ttype.c b/deps/ncurses-5.9/ncurses/tinfo/alloc_ttype.c deleted file mode 100644 index b02cb9c..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/alloc_ttype.c +++ /dev/null @@ -1,506 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1999-2009,2010 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: Thomas E. Dickey 1999-on * - ****************************************************************************/ - -/* - * align_ttype.c -- functions for TERMTYPE - * - * _nc_align_termtype() - * _nc_copy_termtype() - * - */ - -#include - -#include - -MODULE_ID("$Id: alloc_ttype.c,v 1.22 2010/12/19 00:24:09 tom Exp $") - -#if NCURSES_XNAMES -/* - * Merge the a/b lists into dst. Both a/b are sorted (see _nc_extend_names()), - * so we do not have to worry about order dependencies. - */ -static int -merge_names(char **dst, char **a, int na, char **b, int nb) -{ - int n = 0; - while (na > 0 && nb > 0) { - int cmp = strcmp(*a, *b); - if (cmp < 0) { - dst[n++] = *a++; - na--; - } else if (cmp > 0) { - dst[n++] = *b++; - nb--; - } else if (cmp == 0) { - dst[n++] = *a; - a++, b++; - na--, nb--; - } - } - while (na-- > 0) { - dst[n++] = *a++; - } - while (nb-- > 0) { - dst[n++] = *b++; - } - DEBUG(4, ("merge_names -> %d", n)); - return n; -} - -static bool -find_name(char **table, int length, char *name) -{ - while (length-- > 0) { - if (!strcmp(*table++, name)) { - DEBUG(4, ("found name '%s'", name)); - return TRUE; - } - } - DEBUG(4, ("did not find name '%s'", name)); - return FALSE; -} - -#define EXTEND_NUM(num, ext) \ - to->num = (unsigned short) (to->num + (ext - to->ext)) - -static void -realign_data(TERMTYPE *to, char **ext_Names, - int ext_Booleans, - int ext_Numbers, - int ext_Strings) -{ - int n, m, base; - int limit = (to->ext_Booleans + to->ext_Numbers + to->ext_Strings); - - if (to->ext_Booleans != ext_Booleans) { - EXTEND_NUM(num_Booleans, ext_Booleans); - to->Booleans = typeRealloc(NCURSES_SBOOL, to->num_Booleans, to->Booleans); - for (n = to->ext_Booleans - 1, - m = ext_Booleans - 1, - base = to->num_Booleans - (m + 1); m >= 0; m--) { - if (find_name(to->ext_Names, limit, ext_Names[m])) { - to->Booleans[base + m] = to->Booleans[base + n--]; - } else { - to->Booleans[base + m] = FALSE; - } - } - to->ext_Booleans = UShort(ext_Booleans); - } - if (to->ext_Numbers != ext_Numbers) { - EXTEND_NUM(num_Numbers, ext_Numbers); - to->Numbers = typeRealloc(short, to->num_Numbers, to->Numbers); - for (n = to->ext_Numbers - 1, - m = ext_Numbers - 1, - base = to->num_Numbers - (m + 1); m >= 0; m--) { - if (find_name(to->ext_Names, limit, ext_Names[m + ext_Booleans])) { - to->Numbers[base + m] = to->Numbers[base + n--]; - } else { - to->Numbers[base + m] = ABSENT_NUMERIC; - } - } - to->ext_Numbers = UShort(ext_Numbers); - } - if (to->ext_Strings != ext_Strings) { - EXTEND_NUM(num_Strings, ext_Strings); - to->Strings = typeRealloc(char *, to->num_Strings, to->Strings); - for (n = to->ext_Strings - 1, - m = ext_Strings - 1, - base = to->num_Strings - (m + 1); m >= 0; m--) { - if (find_name(to->ext_Names, limit, ext_Names[m + ext_Booleans + ext_Numbers])) { - to->Strings[base + m] = to->Strings[base + n--]; - } else { - to->Strings[base + m] = ABSENT_STRING; - } - } - to->ext_Strings = UShort(ext_Strings); - } -} - -/* - * Returns the first index in ext_Names[] for the given token-type - */ -static unsigned -_nc_first_ext_name(TERMTYPE *tp, int token_type) -{ - unsigned first; - - switch (token_type) { - case BOOLEAN: - first = 0; - break; - case NUMBER: - first = tp->ext_Booleans; - break; - case STRING: - first = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); - break; - default: - first = 0; - break; - } - return first; -} - -/* - * Returns the last index in ext_Names[] for the given token-type - */ -static unsigned -_nc_last_ext_name(TERMTYPE *tp, int token_type) -{ - unsigned last; - - switch (token_type) { - case BOOLEAN: - last = tp->ext_Booleans; - break; - case NUMBER: - last = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); - break; - default: - case STRING: - last = NUM_EXT_NAMES(tp); - break; - } - return last; -} - -/* - * Lookup an entry from extended-names, returning -1 if not found - */ -static int -_nc_find_ext_name(TERMTYPE *tp, char *name, int token_type) -{ - unsigned j; - unsigned first = _nc_first_ext_name(tp, token_type); - unsigned last = _nc_last_ext_name(tp, token_type); - - for (j = first; j < last; j++) { - if (!strcmp(name, tp->ext_Names[j])) { - return (int) j; - } - } - return -1; -} - -/* - * Translate an index into ext_Names[] into the corresponding index into data - * (e.g., Booleans[]). - */ -static int -_nc_ext_data_index(TERMTYPE *tp, int n, int token_type) -{ - switch (token_type) { - case BOOLEAN: - n += (tp->num_Booleans - tp->ext_Booleans); - break; - case NUMBER: - n += (tp->num_Numbers - tp->ext_Numbers) - - (tp->ext_Booleans); - break; - default: - case STRING: - n += (tp->num_Strings - tp->ext_Strings) - - (tp->ext_Booleans + tp->ext_Numbers); - } - return n; -} - -/* - * Adjust tables to remove (not free) an extended name and its corresponding - * data. - */ -static bool -_nc_del_ext_name(TERMTYPE *tp, char *name, int token_type) -{ - int j; - int first, last; - - if ((first = _nc_find_ext_name(tp, name, token_type)) >= 0) { - last = (int) NUM_EXT_NAMES(tp) - 1; - for (j = first; j < last; j++) { - tp->ext_Names[j] = tp->ext_Names[j + 1]; - } - first = _nc_ext_data_index(tp, first, token_type); - switch (token_type) { - case BOOLEAN: - last = tp->num_Booleans - 1; - for (j = first; j < last; j++) - tp->Booleans[j] = tp->Booleans[j + 1]; - tp->ext_Booleans--; - tp->num_Booleans--; - break; - case NUMBER: - last = tp->num_Numbers - 1; - for (j = first; j < last; j++) - tp->Numbers[j] = tp->Numbers[j + 1]; - tp->ext_Numbers--; - tp->num_Numbers--; - break; - case STRING: - last = tp->num_Strings - 1; - for (j = first; j < last; j++) - tp->Strings[j] = tp->Strings[j + 1]; - tp->ext_Strings--; - tp->num_Strings--; - break; - } - return TRUE; - } - return FALSE; -} - -/* - * Adjust tables to insert an extended name, making room for new data. The - * index into the corresponding data array is returned. - */ -static int -_nc_ins_ext_name(TERMTYPE *tp, char *name, int token_type) -{ - unsigned first = _nc_first_ext_name(tp, token_type); - unsigned last = _nc_last_ext_name(tp, token_type); - unsigned total = NUM_EXT_NAMES(tp) + 1; - unsigned j, k; - - for (j = first; j < last; j++) { - int cmp = strcmp(name, tp->ext_Names[j]); - if (cmp == 0) - /* already present */ - return _nc_ext_data_index(tp, (int) j, token_type); - if (cmp < 0) { - break; - } - } - - tp->ext_Names = typeRealloc(char *, total, tp->ext_Names); - for (k = total - 1; k > j; k--) - tp->ext_Names[k] = tp->ext_Names[k - 1]; - tp->ext_Names[j] = name; - j = (unsigned) _nc_ext_data_index(tp, (int) j, token_type); - - switch (token_type) { - case BOOLEAN: - tp->ext_Booleans++; - tp->num_Booleans++; - tp->Booleans = typeRealloc(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans); - for (k = (unsigned) (tp->num_Booleans - 1); k > j; k--) - tp->Booleans[k] = tp->Booleans[k - 1]; - break; - case NUMBER: - tp->ext_Numbers++; - tp->num_Numbers++; - tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers); - for (k = (unsigned) (tp->num_Numbers - 1); k > j; k--) - tp->Numbers[k] = tp->Numbers[k - 1]; - break; - case STRING: - tp->ext_Strings++; - tp->num_Strings++; - tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings); - for (k = (unsigned) (tp->num_Strings - 1); k > j; k--) - tp->Strings[k] = tp->Strings[k - 1]; - break; - } - return (int) j; -} - -/* - * Look for strings that are marked cancelled, which happen to be the same name - * as a boolean or number. We'll get this as a special case when we get a - * cancellation of a name that is inherited from another entry. - */ -static void -adjust_cancels(TERMTYPE *to, TERMTYPE *from) -{ - int first = to->ext_Booleans + to->ext_Numbers; - int last = first + to->ext_Strings; - int j, k; - - for (j = first; j < last;) { - char *name = to->ext_Names[j]; - int j_str = to->num_Strings - first - to->ext_Strings; - - if (to->Strings[j + j_str] == CANCELLED_STRING) { - if (_nc_find_ext_name(from, to->ext_Names[j], BOOLEAN) >= 0) { - if (_nc_del_ext_name(to, name, STRING) - || _nc_del_ext_name(to, name, NUMBER)) { - k = _nc_ins_ext_name(to, name, BOOLEAN); - to->Booleans[k] = FALSE; - } else { - j++; - } - } else if (_nc_find_ext_name(from, to->ext_Names[j], NUMBER) >= 0) { - if (_nc_del_ext_name(to, name, STRING) - || _nc_del_ext_name(to, name, BOOLEAN)) { - k = _nc_ins_ext_name(to, name, NUMBER); - to->Numbers[k] = CANCELLED_NUMERIC; - } else { - j++; - } - } else if (_nc_find_ext_name(from, to->ext_Names[j], STRING) >= 0) { - if (_nc_del_ext_name(to, name, NUMBER) - || _nc_del_ext_name(to, name, BOOLEAN)) { - k = _nc_ins_ext_name(to, name, STRING); - to->Strings[k] = CANCELLED_STRING; - } else { - j++; - } - } else { - j++; - } - } else { - j++; - } - } -} - -NCURSES_EXPORT(void) -_nc_align_termtype(TERMTYPE *to, TERMTYPE *from) -{ - int na = (int) NUM_EXT_NAMES(to); - int nb = (int) NUM_EXT_NAMES(from); - int n; - bool same; - char **ext_Names; - int ext_Booleans, ext_Numbers, ext_Strings; - bool used_ext_Names = FALSE; - - DEBUG(2, ("align_termtype to(%d:%s), from(%d:%s)", na, to->term_names, - nb, from->term_names)); - - if (na != 0 || nb != 0) { - if ((na == nb) /* check if the arrays are equivalent */ - &&(to->ext_Booleans == from->ext_Booleans) - && (to->ext_Numbers == from->ext_Numbers) - && (to->ext_Strings == from->ext_Strings)) { - for (n = 0, same = TRUE; n < na; n++) { - if (strcmp(to->ext_Names[n], from->ext_Names[n])) { - same = FALSE; - break; - } - } - if (same) - return; - } - /* - * This is where we pay for having a simple extension representation. - * Allocate a new ext_Names array and merge the two ext_Names arrays - * into it, updating to's counts for booleans, etc. Fortunately we do - * this only for the terminfo compiler (tic) and comparer (infocmp). - */ - ext_Names = typeMalloc(char *, (size_t)(na + nb)); - - if (to->ext_Strings && (from->ext_Booleans + from->ext_Numbers)) - adjust_cancels(to, from); - - if (from->ext_Strings && (to->ext_Booleans + to->ext_Numbers)) - adjust_cancels(from, to); - - ext_Booleans = merge_names(ext_Names, - to->ext_Names, - to->ext_Booleans, - from->ext_Names, - from->ext_Booleans); - ext_Numbers = merge_names(ext_Names + ext_Booleans, - to->ext_Names - + to->ext_Booleans, - to->ext_Numbers, - from->ext_Names - + from->ext_Booleans, - from->ext_Numbers); - ext_Strings = merge_names(ext_Names + ext_Numbers + ext_Booleans, - to->ext_Names - + to->ext_Booleans - + to->ext_Numbers, - to->ext_Strings, - from->ext_Names - + from->ext_Booleans - + from->ext_Numbers, - from->ext_Strings); - /* - * Now we must reallocate the Booleans, etc., to allow the data to be - * overlaid. - */ - if (na != (ext_Booleans + ext_Numbers + ext_Strings)) { - realign_data(to, ext_Names, ext_Booleans, ext_Numbers, ext_Strings); - FreeIfNeeded(to->ext_Names); - to->ext_Names = ext_Names; - DEBUG(2, ("realigned %d extended names for '%s' (to)", - NUM_EXT_NAMES(to), to->term_names)); - used_ext_Names = TRUE; - } - if (nb != (ext_Booleans + ext_Numbers + ext_Strings)) { - nb = (ext_Booleans + ext_Numbers + ext_Strings); - realign_data(from, ext_Names, ext_Booleans, ext_Numbers, ext_Strings); - from->ext_Names = typeRealloc(char *, (size_t) nb, from->ext_Names); - memcpy(from->ext_Names, ext_Names, sizeof(char *) * (size_t) nb); - DEBUG(2, ("realigned %d extended names for '%s' (from)", - NUM_EXT_NAMES(from), from->term_names)); - } - if (!used_ext_Names) - free(ext_Names); - } -} -#endif - -NCURSES_EXPORT(void) -_nc_copy_termtype(TERMTYPE *dst, TERMTYPE *src) -{ - unsigned i; - - *dst = *src; /* ...to copy the sizes and string-tables */ - dst->Booleans = typeMalloc(NCURSES_SBOOL, NUM_BOOLEANS(dst)); - dst->Numbers = typeMalloc(short, NUM_NUMBERS(dst)); - dst->Strings = typeMalloc(char *, NUM_STRINGS(dst)); - - /* FIXME: use memcpy for these and similar loops */ - for_each_boolean(i, dst) - dst->Booleans[i] = src->Booleans[i]; - for_each_number(i, dst) - dst->Numbers[i] = src->Numbers[i]; - for_each_string(i, dst) - dst->Strings[i] = src->Strings[i]; - - /* FIXME: we probably should also copy str_table and ext_str_table, - * but tic and infocmp are not written to exploit that (yet). - */ - -#if NCURSES_XNAMES - if ((i = NUM_EXT_NAMES(src)) != 0) { - dst->ext_Names = typeMalloc(char *, i); - memcpy(dst->ext_Names, src->ext_Names, i * sizeof(char *)); - } else { - dst->ext_Names = 0; - } -#endif - -} diff --git a/deps/ncurses-5.9/ncurses/tinfo/captoinfo.c b/deps/ncurses-5.9/ncurses/tinfo/captoinfo.c deleted file mode 100644 index a0da44d..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/captoinfo.c +++ /dev/null @@ -1,885 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * captoinfo.c --- conversion between termcap and terminfo formats - * - * The captoinfo() code was swiped from Ross Ridge's mytinfo package, - * adapted to fit ncurses by Eric S. Raymond . - * - * There is just one entry point: - * - * char *_nc_captoinfo(n, s, parameterized) - * - * Convert value s for termcap string capability named n into terminfo - * format. - * - * This code recognizes all the standard 4.4BSD %-escapes: - * - * %% output `%' - * %d output value as in printf %d - * %2 output value as in printf %2d - * %3 output value as in printf %3d - * %. output value as in printf %c - * %+x add x to value, then do %. - * %>xy if value > x then add y, no output - * %r reverse order of two parameters, no output - * %i increment by one, no output - * %n exclusive-or all parameters with 0140 (Datamedia 2500) - * %B BCD (16*(value/10)) + (value%10), no output - * %D Reverse coding (value - 2*(value%16)), no output (Delta Data). - * - * Also, %02 and %03 are accepted as synonyms for %2 and %3. - * - * Besides all the standard termcap escapes, this translator understands - * the following extended escapes: - * - * used by GNU Emacs termcap libraries - * %a[+*-/=][cp]x GNU arithmetic. - * %m xor the first two parameters by 0177 - * %b backup to previous parameter - * %f skip this parameter - * - * used by the University of Waterloo (MFCF) termcap libraries - * %-x subtract parameter FROM char x and output it as a char - * %ax add the character x to parameter - * - * If #define WATERLOO is on, also enable these translations: - * - * %sx subtract parameter FROM the character x - * - * By default, this Waterloo translations are not compiled in, because - * the Waterloo %s conflicts with the way terminfo uses %s in strings for - * function programming. - * - * Note the two definitions of %a: the GNU definition is translated if the - * characters after the 'a' are valid for it, otherwise the UW definition - * is translated. - */ - -#include - -#include -#include - -MODULE_ID("$Id: captoinfo.c,v 1.58 2010/12/04 20:08:19 tom Exp $") - -#define MAX_PUSHED 16 /* max # args we can push onto the stack */ - -static int stack[MAX_PUSHED]; /* the stack */ -static int stackptr; /* the next empty place on the stack */ -static int onstack; /* the top of stack */ -static int seenm; /* seen a %m */ -static int seenn; /* seen a %n */ -static int seenr; /* seen a %r */ -static int param; /* current parameter */ -static char *dp; /* pointer to end of the converted string */ - -static char *my_string; -static size_t my_length; - -static char * -init_string(void) -/* initialize 'my_string', 'my_length' */ -{ - if (my_string == 0) - my_string = typeMalloc(char, my_length = 256); - if (my_string == 0) - _nc_err_abort(MSG_NO_MEMORY); - - *my_string = '\0'; - return my_string; -} - -static char * -save_string(char *d, const char *const s) -{ - size_t have = (size_t) (d - my_string); - size_t need = have + strlen(s) + 2; - if (need > my_length) { - my_string = (char *) _nc_doalloc(my_string, my_length = (need + need)); - if (my_string == 0) - _nc_err_abort(MSG_NO_MEMORY); - d = my_string + have; - } - (void) strcpy(d, s); - return d + strlen(d); -} - -static NCURSES_INLINE char * -save_char(char *s, int c) -{ - static char temp[2]; - temp[0] = (char) c; - return save_string(s, temp); -} - -static void -push(void) -/* push onstack on to the stack */ -{ - if (stackptr >= MAX_PUSHED) - _nc_warning("string too complex to convert"); - else - stack[stackptr++] = onstack; -} - -static void -pop(void) -/* pop the top of the stack into onstack */ -{ - if (stackptr == 0) { - if (onstack == 0) - _nc_warning("I'm confused"); - else - onstack = 0; - } else - onstack = stack[--stackptr]; - param++; -} - -static int -cvtchar(register const char *sp) -/* convert a character to a terminfo push */ -{ - unsigned char c = 0; - int len; - - switch (*sp) { - case '\\': - switch (*++sp) { - case '\'': - case '$': - case '\\': - case '%': - c = (unsigned char) (*sp); - len = 2; - break; - case '\0': - c = '\\'; - len = 1; - break; - case '0': - case '1': - case '2': - case '3': - len = 1; - while (isdigit(UChar(*sp))) { - c = (unsigned char) (8 * c + (*sp++ - '0')); - len++; - } - break; - default: - c = (unsigned char) (*sp); - len = 2; - break; - } - break; - case '^': - c = (unsigned char) (*++sp & 0x1f); - len = 2; - break; - default: - c = (unsigned char) (*sp); - len = 1; - } - if (isgraph(c) && c != ',' && c != '\'' && c != '\\' && c != ':') { - dp = save_string(dp, "%\'"); - dp = save_char(dp, c); - dp = save_char(dp, '\''); - } else { - dp = save_string(dp, "%{"); - if (c > 99) - dp = save_char(dp, c / 100 + '0'); - if (c > 9) - dp = save_char(dp, ((int) (c / 10)) % 10 + '0'); - dp = save_char(dp, c % 10 + '0'); - dp = save_char(dp, '}'); - } - return len; -} - -static void -getparm(int parm, int n) -/* push n copies of param on the terminfo stack if not already there */ -{ - if (seenr) { - if (parm == 1) - parm = 2; - else if (parm == 2) - parm = 1; - } - if (onstack == parm) { - if (n > 1) { - _nc_warning("string may not be optimal"); - dp = save_string(dp, "%Pa"); - while (n--) { - dp = save_string(dp, "%ga"); - } - } - return; - } - if (onstack != 0) - push(); - - onstack = parm; - - while (n--) { - dp = save_string(dp, "%p"); - dp = save_char(dp, '0' + parm); - } - - if (seenn && parm < 3) { - dp = save_string(dp, "%{96}%^"); - } - - if (seenm && parm < 3) { - dp = save_string(dp, "%{127}%^"); - } -} - -/* - * Convert a termcap string to terminfo format. - * 'cap' is the relevant terminfo capability index. - * 's' is the string value of the capability. - * 'parameterized' tells what type of translations to do: - * % translations if 1 - * pad translations if >=0 - */ -NCURSES_EXPORT(char *) -_nc_captoinfo(const char *cap, const char *s, int const parameterized) -{ - const char *capstart; - - stackptr = 0; - onstack = 0; - seenm = 0; - seenn = 0; - seenr = 0; - param = 1; - - dp = init_string(); - - /* skip the initial padding (if we haven't been told not to) */ - capstart = 0; - if (s == 0) - s = ""; - if (parameterized >= 0 && isdigit(UChar(*s))) - for (capstart = s;; s++) - if (!(isdigit(UChar(*s)) || *s == '*' || *s == '.')) - break; - - while (*s != '\0') { - switch (*s) { - case '%': - s++; - if (parameterized < 1) { - dp = save_char(dp, '%'); - break; - } - switch (*s++) { - case '%': - dp = save_char(dp, '%'); - break; - case 'r': - if (seenr++ == 1) { - _nc_warning("saw %%r twice in %s", cap); - } - break; - case 'm': - if (seenm++ == 1) { - _nc_warning("saw %%m twice in %s", cap); - } - break; - case 'n': - if (seenn++ == 1) { - _nc_warning("saw %%n twice in %s", cap); - } - break; - case 'i': - dp = save_string(dp, "%i"); - break; - case '6': - case 'B': - getparm(param, 1); - dp = save_string(dp, "%{10}%/%{16}%*"); - getparm(param, 1); - dp = save_string(dp, "%{10}%m%+"); - break; - case '8': - case 'D': - getparm(param, 2); - dp = save_string(dp, "%{2}%*%-"); - break; - case '>': - getparm(param, 2); - /* %?%{x}%>%t%{y}%+%; */ - dp = save_string(dp, "%?"); - s += cvtchar(s); - dp = save_string(dp, "%>%t"); - s += cvtchar(s); - dp = save_string(dp, "%+%;"); - break; - case 'a': - if ((*s == '=' || *s == '+' || *s == '-' - || *s == '*' || *s == '/') - && (s[1] == 'p' || s[1] == 'c') - && s[2] != '\0') { - int l; - l = 2; - if (*s != '=') - getparm(param, 1); - if (s[1] == 'p') { - getparm(param + s[2] - '@', 1); - if (param != onstack) { - pop(); - param--; - } - l++; - } else - l += cvtchar(s + 2); - switch (*s) { - case '+': - dp = save_string(dp, "%+"); - break; - case '-': - dp = save_string(dp, "%-"); - break; - case '*': - dp = save_string(dp, "%*"); - break; - case '/': - dp = save_string(dp, "%/"); - break; - case '=': - if (seenr) { - if (param == 1) - onstack = 2; - else if (param == 2) - onstack = 1; - else - onstack = param; - } else - onstack = param; - break; - } - s += l; - break; - } - getparm(param, 1); - s += cvtchar(s); - dp = save_string(dp, "%+"); - break; - case '+': - getparm(param, 1); - s += cvtchar(s); - dp = save_string(dp, "%+%c"); - pop(); - break; - case 's': -#ifdef WATERLOO - s += cvtchar(s); - getparm(param, 1); - dp = save_string(dp, "%-"); -#else - getparm(param, 1); - dp = save_string(dp, "%s"); - pop(); -#endif /* WATERLOO */ - break; - case '-': - s += cvtchar(s); - getparm(param, 1); - dp = save_string(dp, "%-%c"); - pop(); - break; - case '.': - getparm(param, 1); - dp = save_string(dp, "%c"); - pop(); - break; - case '0': /* not clear any of the historical termcaps did this */ - if (*s == '3') - goto see03; - else if (*s != '2') - goto invalid; - /* FALLTHRU */ - case '2': - getparm(param, 1); - dp = save_string(dp, "%2d"); - pop(); - break; - case '3': - see03: - getparm(param, 1); - dp = save_string(dp, "%3d"); - pop(); - break; - case 'd': - getparm(param, 1); - dp = save_string(dp, "%d"); - pop(); - break; - case 'f': - param++; - break; - case 'b': - param--; - break; - case '\\': - dp = save_string(dp, "%\\"); - break; - default: - invalid: - dp = save_char(dp, '%'); - s--; - _nc_warning("unknown %% code %s (%#x) in %s", - unctrl((chtype) *s), UChar(*s), cap); - break; - } - break; -#ifdef REVISIBILIZE - case '\\': - dp = save_char(dp, *s++); - dp = save_char(dp, *s++); - break; - case '\n': - dp = save_string(dp, "\\n"); - s++; - break; - case '\t': - dp = save_string(dp, "\\t"); - s++; - break; - case '\r': - dp = save_string(dp, "\\r"); - s++; - break; - case '\200': - dp = save_string(dp, "\\0"); - s++; - break; - case '\f': - dp = save_string(dp, "\\f"); - s++; - break; - case '\b': - dp = save_string(dp, "\\b"); - s++; - break; - case ' ': - dp = save_string(dp, "\\s"); - s++; - break; - case '^': - dp = save_string(dp, "\\^"); - s++; - break; - case ':': - dp = save_string(dp, "\\:"); - s++; - break; - case ',': - dp = save_string(dp, "\\,"); - s++; - break; - default: - if (*s == '\033') { - dp = save_string(dp, "\\E"); - s++; - } else if (*s > 0 && *s < 32) { - dp = save_char(dp, '^'); - dp = save_char(dp, *s + '@'); - s++; - } else if (*s <= 0 || *s >= 127) { - dp = save_char(dp, '\\'); - dp = save_char(dp, ((*s & 0300) >> 6) + '0'); - dp = save_char(dp, ((*s & 0070) >> 3) + '0'); - dp = save_char(dp, (*s & 0007) + '0'); - s++; - } else - dp = save_char(dp, *s++); - break; -#else - default: - dp = save_char(dp, *s++); - break; -#endif - } - } - - /* - * Now, if we stripped off some leading padding, add it at the end - * of the string as mandatory padding. - */ - if (capstart) { - dp = save_string(dp, "$<"); - for (s = capstart;; s++) - if (isdigit(UChar(*s)) || *s == '*' || *s == '.') - dp = save_char(dp, *s); - else - break; - dp = save_string(dp, "/>"); - } - - (void) save_char(dp, '\0'); - return (my_string); -} - -/* - * Check for an expression that corresponds to "%B" (BCD): - * (parameter / 10) * 16 + (parameter % 10) - */ -static int -bcd_expression(const char *str) -{ - /* leave this non-const for HPUX */ - static char fmt[] = "%%p%c%%{10}%%/%%{16}%%*%%p%c%%{10}%%m%%+"; - int len = 0; - char ch1, ch2; - - if (sscanf(str, fmt, &ch1, &ch2) == 2 - && isdigit(UChar(ch1)) - && isdigit(UChar(ch2)) - && (ch1 == ch2)) { - len = 28; -#ifndef NDEBUG - { - char buffer[80]; - int tst; - sprintf(buffer, fmt, ch1, ch2); - tst = strlen(buffer) - 1; - assert(len == tst); - } -#endif - } - return len; -} - -static char * -save_tc_char(char *bufptr, int c1) -{ - char temp[80]; - - if (is7bits(c1) && isprint(c1)) { - if (c1 == ':' || c1 == '\\') - bufptr = save_char(bufptr, '\\'); - bufptr = save_char(bufptr, c1); - } else { - if (c1 == (c1 & 0x1f)) /* iscntrl() returns T on 255 */ - (void) strcpy(temp, unctrl((chtype) c1)); - else - (void) sprintf(temp, "\\%03o", c1); - bufptr = save_string(bufptr, temp); - } - return bufptr; -} - -static char * -save_tc_inequality(char *bufptr, int c1, int c2) -{ - bufptr = save_string(bufptr, "%>"); - bufptr = save_tc_char(bufptr, c1); - bufptr = save_tc_char(bufptr, c2); - return bufptr; -} - -/* - * Here are the capabilities infotocap assumes it can translate to: - * - * %% output `%' - * %d output value as in printf %d - * %2 output value as in printf %2d - * %3 output value as in printf %3d - * %. output value as in printf %c - * %+c add character c to value, then do %. - * %>xy if value > x then add y, no output - * %r reverse order of two parameters, no output - * %i increment by one, no output - * %n exclusive-or all parameters with 0140 (Datamedia 2500) - * %B BCD (16*(value/10)) + (value%10), no output - * %D Reverse coding (value - 2*(value%16)), no output (Delta Data). - * %m exclusive-or all parameters with 0177 (not in 4.4BSD) - */ - -/* - * Convert a terminfo string to termcap format. Parameters are as in - * _nc_captoinfo(). - */ -NCURSES_EXPORT(char *) -_nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameterized) -{ - int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0; - const char *padding; - const char *trimmed = 0; - int in0, in1, in2; - char ch1 = 0, ch2 = 0; - char *bufptr = init_string(); - int len; - bool syntax_error = FALSE; - - /* we may have to move some trailing mandatory padding up front */ - padding = str + strlen(str) - 1; - if (padding > str && *padding == '>' && *--padding == '/') { - --padding; - while (isdigit(UChar(*padding)) || *padding == '.' || *padding == '*') - padding--; - if (padding > str && *padding == '<' && *--padding == '$') - trimmed = padding; - padding += 2; - - while (isdigit(UChar(*padding)) || *padding == '.' || *padding == '*') - bufptr = save_char(bufptr, *padding++); - } - - for (; *str && str != trimmed; str++) { - int c1, c2; - char *cp = 0; - - if (str[0] == '^') { - if (str[1] == '\0' || (str + 1) == trimmed) { - bufptr = save_string(bufptr, "\\136"); - ++str; - } else { - bufptr = save_char(bufptr, *str++); - bufptr = save_char(bufptr, *str); - } - } else if (str[0] == '\\') { - if (str[1] == '\0' || (str + 1) == trimmed) { - bufptr = save_string(bufptr, "\\134"); - ++str; - } else if (str[1] == '^') { - bufptr = save_string(bufptr, "\\136"); - ++str; - } else if (str[1] == ',') { - bufptr = save_char(bufptr, *++str); - } else { - bufptr = save_char(bufptr, *str++); - bufptr = save_char(bufptr, *str); - } - } else if (str[0] == '$' && str[1] == '<') { /* discard padding */ - str += 2; - while (isdigit(UChar(*str)) - || *str == '.' - || *str == '*' - || *str == '/' - || *str == '>') - str++; - --str; - } else if (sscanf(str, - "[%%?%%p1%%{8}%%<%%t%d%%p1%%d%%e%%p1%%{16}%%<%%t%d%%p1%%{8}%%-%%d%%e%d;5;%%p1%%d%%;m", - &in0, &in1, &in2) == 3 - && ((in0 == 4 && in1 == 10 && in2 == 48) - || (in0 == 3 && in1 == 9 && in2 == 38))) { - /* dumb-down an optimized case from xterm-256color for termcap */ - str = strstr(str, ";m"); - ++str; - if (in2 == 48) { - bufptr = save_string(bufptr, "[48;5;%dm"); - } else { - bufptr = save_string(bufptr, "[38;5;%dm"); - } - } else if (str[0] == '%' && str[1] == '%') { /* escaped '%' */ - bufptr = save_string(bufptr, "%%"); - ++str; - } else if (*str != '%' || (parameterized < 1)) { - bufptr = save_char(bufptr, *str); - } else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1, &c2) == 2) { - str = strchr(str, ';'); - bufptr = save_tc_inequality(bufptr, c1, c2); - } else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1, &ch2) == 2) { - str = strchr(str, ';'); - bufptr = save_tc_inequality(bufptr, c1, c2); - } else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1, &c2) == 2) { - str = strchr(str, ';'); - bufptr = save_tc_inequality(bufptr, c1, c2); - } else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2) { - str = strchr(str, ';'); - bufptr = save_tc_inequality(bufptr, c1, c2); - } else if ((len = bcd_expression(str)) != 0) { - str += len; - bufptr = save_string(bufptr, "%B"); - } else if ((sscanf(str, "%%{%d}%%+%%c", &c1) == 1 - || sscanf(str, "%%'%c'%%+%%c", &ch1) == 1) - && (cp = strchr(str, '+'))) { - str = cp + 2; - bufptr = save_string(bufptr, "%+"); - - if (ch1) - c1 = ch1; - bufptr = save_tc_char(bufptr, c1); - } - /* FIXME: this "works" for 'delta' */ - else if (strncmp(str, "%{2}%*%-", 8) == 0) { - str += 7; - bufptr = save_string(bufptr, "%D"); - } else if (strncmp(str, "%{96}%^", 7) == 0) { - str += 6; - if (saw_m++ == 0) { - bufptr = save_string(bufptr, "%n"); - } - } else if (strncmp(str, "%{127}%^", 8) == 0) { - str += 7; - if (saw_n++ == 0) { - bufptr = save_string(bufptr, "%m"); - } - } else { /* cm-style format element */ - str++; - switch (*str) { - case '%': - bufptr = save_char(bufptr, '%'); - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - bufptr = save_char(bufptr, '%'); - while (isdigit(UChar(*str))) - bufptr = save_char(bufptr, *str++); - if (strchr("doxX.", *str)) { - if (*str != 'd') /* termcap doesn't have octal, hex */ - return 0; - } - break; - - case 'd': - bufptr = save_string(bufptr, "%d"); - break; - - case 'c': - bufptr = save_string(bufptr, "%."); - break; - - /* - * %s isn't in termcap, but it's convenient to pass it through - * so we can represent things like terminfo pfkey strings in - * termcap notation. - */ - case 's': - bufptr = save_string(bufptr, "%s"); - break; - - case 'p': - str++; - if (*str == '1') - seenone = 1; - else if (*str == '2') { - if (!seenone && !seentwo) { - bufptr = save_string(bufptr, "%r"); - seentwo++; - } - } else if (*str >= '3') - return (0); - break; - - case 'i': - bufptr = save_string(bufptr, "%i"); - break; - - default: - bufptr = save_char(bufptr, *str); - syntax_error = TRUE; - break; - } /* endswitch (*str) */ - } /* endelse (*str == '%') */ - - /* - * 'str' always points to the end of what was scanned in this step, - * but that may not be the end of the string. - */ - assert(str != 0); - if (*str == '\0') - break; - - } /* endwhile (*str) */ - - return (syntax_error ? NULL : my_string); -} - -#ifdef MAIN - -int curr_line; - -int -main(int argc, char *argv[]) -{ - int c, tc = FALSE; - - while ((c = getopt(argc, argv, "c")) != EOF) - switch (c) { - case 'c': - tc = TRUE; - break; - } - - curr_line = 0; - for (;;) { - char buf[BUFSIZ]; - - ++curr_line; - if (fgets(buf, sizeof(buf), stdin) == 0) - break; - buf[strlen(buf) - 1] = '\0'; - _nc_set_source(buf); - - if (tc) { - char *cp = _nc_infotocap("to termcap", buf, 1); - - if (cp) - (void) fputs(cp, stdout); - } else - (void) fputs(_nc_captoinfo("to terminfo", buf, 1), stdout); - (void) putchar('\n'); - } - return (0); -} -#endif /* MAIN */ - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_captoinfo_leaks(void) -{ - if (my_string != 0) { - FreeAndNull(my_string); - } - my_length = 0; -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/comp_expand.c b/deps/ncurses-5.9/ncurses/tinfo/comp_expand.c deleted file mode 100644 index 71012b6..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/comp_expand.c +++ /dev/null @@ -1,192 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2010 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: Thomas E. Dickey 1998 * - ****************************************************************************/ - -#include - -#include -#include - -MODULE_ID("$Id: comp_expand.c,v 1.21 2010/01/16 17:11:23 tom Exp $") - -static int -trailing_spaces(const char *src) -{ - while (*src == ' ') - src++; - return *src == 0; -} - -/* this deals with differences over whether 0x7f and 0x80..0x9f are controls */ -#define REALCTL(s) (UChar(*(s)) < 127 && iscntrl(UChar(*(s)))) -#define REALPRINT(s) (UChar(*(s)) < 127 && isprint(UChar(*(s)))) - -NCURSES_EXPORT(char *) -_nc_tic_expand(const char *srcp, bool tic_format, int numbers) -{ - static char *buffer; - static size_t length; - - int bufp; - const char *str = VALID_STRING(srcp) ? srcp : "\0\0"; - bool islong = (strlen(str) > 3); - size_t need = (2 + strlen(str)) * 4; - int ch; - -#if NO_LEAKS - if (srcp == 0) { - if (buffer != 0) { - FreeAndNull(buffer); - length = 0; - } - return 0; - } -#endif - if (buffer == 0 || need > length) { - if ((buffer = typeRealloc(char, length = need, buffer)) == 0) - return 0; - } - - bufp = 0; - while ((ch = UChar(*str)) != 0) { - if (ch == '%' && REALPRINT(str + 1)) { - buffer[bufp++] = *str++; - /* - * Though the character literals are more compact, most - * terminal descriptions use numbers and are not easy - * to read in character-literal form. - */ - switch (numbers) { - case -1: - if (str[0] == S_QUOTE - && str[1] != '\\' - && REALPRINT(str + 1) - && str[2] == S_QUOTE) { - sprintf(buffer + bufp, "{%d}", str[1]); - bufp += (int) strlen(buffer + bufp); - str += 2; - } else { - buffer[bufp++] = *str; - } - break; - /* - * If we have a "%{number}", try to translate it into - * a "%'char'" form, since that will run a little faster - * when we're interpreting it. Also, having one form - * for the constant makes it simpler to compare terminal - * descriptions. - */ - case 1: - if (str[0] == L_BRACE - && isdigit(UChar(str[1]))) { - char *dst = 0; - long value = strtol(str + 1, &dst, 0); - if (dst != 0 - && *dst == R_BRACE - && value < 127 - && value != '\\' /* FIXME */ - && isprint((int) value)) { - ch = (int) value; - buffer[bufp++] = S_QUOTE; - if (ch == '\\' - || ch == S_QUOTE) - buffer[bufp++] = '\\'; - buffer[bufp++] = (char) ch; - buffer[bufp++] = S_QUOTE; - str = dst; - } else { - buffer[bufp++] = *str; - } - } else { - buffer[bufp++] = *str; - } - break; - default: - buffer[bufp++] = *str; - break; - } - } else if (ch == 128) { - buffer[bufp++] = '\\'; - buffer[bufp++] = '0'; - } else if (ch == '\033') { - buffer[bufp++] = '\\'; - buffer[bufp++] = 'E'; - } else if (ch == '\\' && tic_format && (str == srcp || str[-1] != '^')) { - buffer[bufp++] = '\\'; - buffer[bufp++] = '\\'; - } else if (ch == ' ' && tic_format && (str == srcp || - trailing_spaces(str))) { - buffer[bufp++] = '\\'; - buffer[bufp++] = 's'; - } else if ((ch == ',' || ch == ':' || ch == '^') && tic_format) { - buffer[bufp++] = '\\'; - buffer[bufp++] = (char) ch; - } else if (REALPRINT(str) - && (ch != ',' - && ch != ':' - && !(ch == '!' && !tic_format) - && ch != '^')) - buffer[bufp++] = (char) ch; -#if 0 /* FIXME: this would be more readable (in fact the whole 'islong' logic should be removed) */ - else if (ch == '\b') { - buffer[bufp++] = '\\'; - buffer[bufp++] = 'b'; - } else if (ch == '\f') { - buffer[bufp++] = '\\'; - buffer[bufp++] = 'f'; - } else if (ch == '\t' && islong) { - buffer[bufp++] = '\\'; - buffer[bufp++] = 't'; - } -#endif - else if (ch == '\r' && (islong || (strlen(srcp) > 2 && str[1] == '\0'))) { - buffer[bufp++] = '\\'; - buffer[bufp++] = 'r'; - } else if (ch == '\n' && islong) { - buffer[bufp++] = '\\'; - buffer[bufp++] = 'n'; - } -#define UnCtl(c) ((c) + '@') - else if (REALCTL(str) && ch != '\\' - && (!islong || isdigit(UChar(str[1])))) { - (void) sprintf(&buffer[bufp], "^%c", UnCtl(ch)); - bufp += 2; - } else { - (void) sprintf(&buffer[bufp], "\\%03o", ch); - bufp += 4; - } - - str++; - } - - buffer[bufp] = '\0'; - return (buffer); -} diff --git a/deps/ncurses-5.9/ncurses/tinfo/comp_parse.c b/deps/ncurses-5.9/ncurses/tinfo/comp_parse.c deleted file mode 100644 index 8204d75..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/comp_parse.c +++ /dev/null @@ -1,491 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * comp_parse.c -- parser driver loop and use handling. - * - * _nc_read_entry_source(FILE *, literal, bool, bool (*hook)()) - * _nc_resolve_uses2(void) - * _nc_free_entries(void) - * - * Use this code by calling _nc_read_entry_source() on as many source - * files as you like (either terminfo or termcap syntax). If you - * want use-resolution, call _nc_resolve_uses2(). To free the list - * storage, do _nc_free_entries(). - * - */ - -#include - -#include - -#include - -MODULE_ID("$Id: comp_parse.c,v 1.73 2010/12/25 23:06:37 tom Exp $") - -static void sanity_check2(TERMTYPE *, bool); -NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype2) (TERMTYPE *, bool) = sanity_check2; - -/* obsolete: 20040705 */ -static void sanity_check(TERMTYPE *); -NCURSES_IMPEXP void NCURSES_API(*_nc_check_termtype) (TERMTYPE *) = sanity_check; - -static void -enqueue(ENTRY * ep) -/* add an entry to the in-core list */ -{ - ENTRY *newp = _nc_copy_entry(ep); - - if (newp == 0) - _nc_err_abort(MSG_NO_MEMORY); - - newp->last = _nc_tail; - _nc_tail = newp; - - newp->next = 0; - if (newp->last) - newp->last->next = newp; -} - -static char * -force_bar(char *dst, char *src) -{ - if (strchr(src, '|') == 0) { - size_t len = strlen(src); - if (len > MAX_NAME_SIZE) - len = MAX_NAME_SIZE; - (void) strncpy(dst, src, len); - (void) strcpy(dst + len, "|"); - src = dst; - } - return src; -} -#define ForceBar(dst, src) ((strchr(src, '|') == 0) ? force_bar(dst, src) : src) - -NCURSES_EXPORT(bool) -_nc_entry_match(char *n1, char *n2) -/* do any of the aliases in a pair of terminal names match? */ -{ - char *pstart, *qstart, *pend, *qend; - char nc1[MAX_NAME_SIZE + 2]; - char nc2[MAX_NAME_SIZE + 2]; - - n1 = ForceBar(nc1, n1); - n2 = ForceBar(nc2, n2); - - for (pstart = n1; (pend = strchr(pstart, '|')); pstart = pend + 1) - for (qstart = n2; (qend = strchr(qstart, '|')); qstart = qend + 1) - if ((pend - pstart == qend - qstart) - && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0) - return (TRUE); - - return (FALSE); -} - -/**************************************************************************** - * - * Entry compiler and resolution logic - * - ****************************************************************************/ - -NCURSES_EXPORT(void) -_nc_read_entry_source(FILE *fp, char *buf, - int literal, bool silent, - bool(*hook) (ENTRY *)) -/* slurp all entries in the given file into core */ -{ - ENTRY thisentry; - bool oldsuppress = _nc_suppress_warnings; - int immediate = 0; - - if (silent) - _nc_suppress_warnings = TRUE; /* shut the lexer up, too */ - - _nc_reset_input(fp, buf); - for (;;) { - memset(&thisentry, 0, sizeof(thisentry)); - if (_nc_parse_entry(&thisentry, literal, silent) == ERR) - break; - if (!isalnum(UChar(thisentry.tterm.term_names[0]))) - _nc_err_abort("terminal names must start with letter or digit"); - - /* - * This can be used for immediate compilation of entries with no "use=" - * references to disk. That avoids consuming a lot of memory when the - * resolution code could fetch entries off disk. - */ - if (hook != NULLHOOK && (*hook) (&thisentry)) { - immediate++; - } else { - enqueue(&thisentry); - /* - * The enqueued entry is copied with _nc_copy_termtype(), so we can - * free some of the data from thisentry, i.e., the arrays. - */ - FreeIfNeeded(thisentry.tterm.Booleans); - FreeIfNeeded(thisentry.tterm.Numbers); - FreeIfNeeded(thisentry.tterm.Strings); -#if NCURSES_XNAMES - FreeIfNeeded(thisentry.tterm.ext_Names); -#endif - } - } - - if (_nc_tail) { - /* set up the head pointer */ - for (_nc_head = _nc_tail; _nc_head->last; _nc_head = _nc_head->last) - continue; - - DEBUG(1, ("head = %s", _nc_head->tterm.term_names)); - DEBUG(1, ("tail = %s", _nc_tail->tterm.term_names)); - } -#ifdef TRACE - else if (!immediate) - DEBUG(1, ("no entries parsed")); -#endif - - _nc_suppress_warnings = oldsuppress; -} - -NCURSES_EXPORT(int) -_nc_resolve_uses2(bool fullresolve, bool literal) -/* try to resolve all use capabilities */ -{ - ENTRY *qp, *rp, *lastread = 0; - bool keepgoing; - unsigned i; - int unresolved, total_unresolved, multiples; - - DEBUG(2, ("RESOLUTION BEGINNING")); - - /* - * Check for multiple occurrences of the same name. - */ - multiples = 0; - for_entry_list(qp) { - int matchcount = 0; - - for_entry_list(rp) { - if (qp > rp - && _nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) { - matchcount++; - if (matchcount == 1) { - (void) fprintf(stderr, "Name collision between %s", - _nc_first_name(qp->tterm.term_names)); - multiples++; - } - if (matchcount >= 1) - (void) fprintf(stderr, " %s", _nc_first_name(rp->tterm.term_names)); - } - } - if (matchcount >= 1) - (void) putc('\n', stderr); - } - if (multiples > 0) - return (FALSE); - - DEBUG(2, ("NO MULTIPLE NAME OCCURRENCES")); - - /* - * First resolution stage: compute link pointers corresponding to names. - */ - total_unresolved = 0; - _nc_curr_col = -1; - for_entry_list(qp) { - unresolved = 0; - for (i = 0; i < qp->nuses; i++) { - bool foundit; - char *child = _nc_first_name(qp->tterm.term_names); - char *lookfor = qp->uses[i].name; - long lookline = qp->uses[i].line; - - foundit = FALSE; - - _nc_set_type(child); - - /* first, try to resolve from in-core records */ - for_entry_list(rp) { - if (rp != qp - && _nc_name_match(rp->tterm.term_names, lookfor, "|")) { - DEBUG(2, ("%s: resolving use=%s (in core)", - child, lookfor)); - - qp->uses[i].link = rp; - foundit = TRUE; - } - } - - /* if that didn't work, try to merge in a compiled entry */ - if (!foundit) { - TERMTYPE thisterm; - char filename[PATH_MAX]; - - memset(&thisterm, 0, sizeof(thisterm)); - if (_nc_read_entry(lookfor, filename, &thisterm) == 1) { - DEBUG(2, ("%s: resolving use=%s (compiled)", - child, lookfor)); - - rp = typeMalloc(ENTRY, 1); - if (rp == 0) - _nc_err_abort(MSG_NO_MEMORY); - rp->tterm = thisterm; - rp->nuses = 0; - rp->next = lastread; - lastread = rp; - - qp->uses[i].link = rp; - foundit = TRUE; - } - } - - /* no good, mark this one unresolvable and complain */ - if (!foundit) { - unresolved++; - total_unresolved++; - - _nc_curr_line = (int) lookline; - _nc_warning("resolution of use=%s failed", lookfor); - qp->uses[i].link = 0; - } - } - } - if (total_unresolved) { - /* free entries read in off disk */ - _nc_free_entries(lastread); - return (FALSE); - } - - DEBUG(2, ("NAME RESOLUTION COMPLETED OK")); - - /* - * OK, at this point all (char *) references in `name' members - * have been successfully converted to (ENTRY *) pointers in - * `link' members. Time to do the actual merges. - */ - if (fullresolve) { - do { - TERMTYPE merged; - - keepgoing = FALSE; - - for_entry_list(qp) { - if (qp->nuses > 0) { - DEBUG(2, ("%s: attempting merge", - _nc_first_name(qp->tterm.term_names))); - /* - * If any of the use entries we're looking for is - * incomplete, punt. We'll catch this entry on a - * subsequent pass. - */ - for (i = 0; i < qp->nuses; i++) - if (qp->uses[i].link->nuses) { - DEBUG(2, ("%s: use entry %d unresolved", - _nc_first_name(qp->tterm.term_names), i)); - goto incomplete; - } - - /* - * First, make sure there is no garbage in the - * merge block. As a side effect, copy into - * the merged entry the name field and string - * table pointer. - */ - _nc_copy_termtype(&merged, &(qp->tterm)); - - /* - * Now merge in each use entry in the proper - * (reverse) order. - */ - for (; qp->nuses; qp->nuses--) - _nc_merge_entry(&merged, - &qp->uses[qp->nuses - 1].link->tterm); - - /* - * Now merge in the original entry. - */ - _nc_merge_entry(&merged, &qp->tterm); - - /* - * Replace the original entry with the merged one. - */ - FreeIfNeeded(qp->tterm.Booleans); - FreeIfNeeded(qp->tterm.Numbers); - FreeIfNeeded(qp->tterm.Strings); -#if NCURSES_XNAMES - FreeIfNeeded(qp->tterm.ext_Names); -#endif - qp->tterm = merged; - _nc_wrap_entry(qp, TRUE); - - /* - * We know every entry is resolvable because name resolution - * didn't bomb. So go back for another pass. - */ - /* FALLTHRU */ - incomplete: - keepgoing = TRUE; - } - } - } while - (keepgoing); - - DEBUG(2, ("MERGES COMPLETED OK")); - } - - /* - * We'd like to free entries read in off disk at this point, but can't. - * The merge_entry() code doesn't copy the strings in the use entries, - * it just aliases them. If this ever changes, do a - * free_entries(lastread) here. - */ - - DEBUG(2, ("RESOLUTION FINISHED")); - - if (fullresolve) - if (_nc_check_termtype != 0) { - _nc_curr_col = -1; - for_entry_list(qp) { - _nc_curr_line = (int) qp->startline; - _nc_set_type(_nc_first_name(qp->tterm.term_names)); - _nc_check_termtype2(&qp->tterm, literal); - } - DEBUG(2, ("SANITY CHECK FINISHED")); - } - - return (TRUE); -} - -/* obsolete: 20040705 */ -NCURSES_EXPORT(int) -_nc_resolve_uses(bool fullresolve) -{ - return _nc_resolve_uses2(fullresolve, FALSE); -} - -/* - * This bit of legerdemain turns all the terminfo variable names into - * references to locations in the arrays Booleans, Numbers, and Strings --- - * precisely what's needed. - */ - -#undef CUR -#define CUR tp-> - -static void -sanity_check2(TERMTYPE *tp, bool literal) -{ - if (!PRESENT(exit_attribute_mode)) { -#ifdef __UNUSED__ /* this casts too wide a net */ - bool terminal_entry = !strchr(tp->term_names, '+'); - if (terminal_entry && - (PRESENT(set_attributes) - || PRESENT(enter_standout_mode) - || PRESENT(enter_underline_mode) - || PRESENT(enter_blink_mode) - || PRESENT(enter_bold_mode) - || PRESENT(enter_dim_mode) - || PRESENT(enter_secure_mode) - || PRESENT(enter_protected_mode) - || PRESENT(enter_reverse_mode))) - _nc_warning("no exit_attribute_mode"); -#endif /* __UNUSED__ */ - PAIRED(enter_standout_mode, exit_standout_mode); - PAIRED(enter_underline_mode, exit_underline_mode); - } - - /* we do this check/fix in postprocess_termcap(), but some packagers - * prefer to bypass it... - */ - if (!literal) { - if (acs_chars == 0 - && enter_alt_charset_mode != 0 - && exit_alt_charset_mode != 0) - acs_chars = strdup(VT_ACSC); - ANDMISSING(enter_alt_charset_mode, acs_chars); - ANDMISSING(exit_alt_charset_mode, acs_chars); - } - - /* listed in structure-member order of first argument */ - PAIRED(enter_alt_charset_mode, exit_alt_charset_mode); - ANDMISSING(enter_blink_mode, exit_attribute_mode); - ANDMISSING(enter_bold_mode, exit_attribute_mode); - PAIRED(exit_ca_mode, enter_ca_mode); - PAIRED(enter_delete_mode, exit_delete_mode); - ANDMISSING(enter_dim_mode, exit_attribute_mode); - PAIRED(enter_insert_mode, exit_insert_mode); - ANDMISSING(enter_secure_mode, exit_attribute_mode); - ANDMISSING(enter_protected_mode, exit_attribute_mode); - ANDMISSING(enter_reverse_mode, exit_attribute_mode); - PAIRED(from_status_line, to_status_line); - PAIRED(meta_off, meta_on); - - PAIRED(prtr_on, prtr_off); - PAIRED(save_cursor, restore_cursor); - PAIRED(enter_xon_mode, exit_xon_mode); - PAIRED(enter_am_mode, exit_am_mode); - ANDMISSING(label_off, label_on); -#ifdef remove_clock - PAIRED(display_clock, remove_clock); -#endif - ANDMISSING(set_color_pair, initialize_pair); -} - -/* obsolete: 20040705 */ -static void -sanity_check(TERMTYPE *tp) -{ - sanity_check2(tp, FALSE); -} - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_leaks_tic(void) -{ - _nc_alloc_entry_leaks(); - _nc_captoinfo_leaks(); - _nc_comp_scan_leaks(); -#if BROKEN_LINKER || USE_REENTRANT - _nc_names_leaks(); - _nc_codes_leaks(); -#endif - _nc_tic_expand(0, FALSE, 0); -} - -NCURSES_EXPORT(void) -_nc_free_tic(int code) -{ - _nc_leaks_tic(); - _nc_free_tinfo(code); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/db_iterator.c b/deps/ncurses-5.9/ncurses/tinfo/db_iterator.c deleted file mode 100644 index 82665cb..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/db_iterator.c +++ /dev/null @@ -1,224 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2006-2007,2010 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: Thomas E. Dickey * - ****************************************************************************/ - -/* - * Iterators for terminal databases. - */ - -#include - -#include - -MODULE_ID("$Id: db_iterator.c,v 1.9 2010/12/25 23:00:25 tom Exp $") - -#define HaveTicDirectory _nc_globals.have_tic_directory -#define KeepTicDirectory _nc_globals.keep_tic_directory -#define TicDirectory _nc_globals.tic_directory - -/* - * Record the "official" location of the terminfo directory, according to - * the place where we're writing to, or the normal default, if not. - */ -NCURSES_EXPORT(const char *) -_nc_tic_dir(const char *path) -{ - if (!KeepTicDirectory) { - if (path != 0) { - TicDirectory = path; - HaveTicDirectory = TRUE; - } else if (!HaveTicDirectory && use_terminfo_vars()) { - char *envp; - if ((envp = getenv("TERMINFO")) != 0) - return _nc_tic_dir(envp); - } - } - return TicDirectory; -} - -/* - * Special fix to prevent the terminfo directory from being moved after tic - * has chdir'd to it. If we let it be changed, then if $TERMINFO has a - * relative path, we'll lose track of the actual directory. - */ -NCURSES_EXPORT(void) -_nc_keep_tic_dir(const char *path) -{ - _nc_tic_dir(path); - KeepTicDirectory = TRUE; -} - -/* - * Process the list of :-separated directories, looking for the terminal type. - * We don't use strtok because it does not show us empty tokens. - */ -#define ThisDbList _nc_globals.dbi_list -#define ThisDbSize _nc_globals.dbi_size - -/* - * Cleanup. - */ -NCURSES_EXPORT(void) -_nc_last_db(void) -{ - if (ThisDbList != 0) { - FreeAndNull(ThisDbList); - } - ThisDbSize = 0; -} - -/* The TERMINFO_DIRS value, if defined by the configure script, begins with a - * ":", which will be interpreted as TERMINFO. - */ -static const char * -next_list_item(const char *source, int *offset) -{ - if (source != 0) { - FreeIfNeeded(ThisDbList); - ThisDbList = strdup(source); - ThisDbSize = (int) strlen(source); - } - - if (ThisDbList != 0 && ThisDbSize && *offset < ThisDbSize) { - static char system_db[] = TERMINFO; - char *result = ThisDbList + *offset; - char *marker = strchr(result, NCURSES_PATHSEP); - - /* - * Put a null on the marker if a separator was found. Set the offset - * to the next position after the marker so we can call this function - * again, using the data at the offset. - */ - if (marker == 0) { - *offset += (int) strlen(result); - } else { - *marker++ = 0; - *offset = (int) (marker - ThisDbList); - } - if (*result == 0 && result != (ThisDbList + ThisDbSize)) - result = system_db; - return result; - } - return 0; -} - -#define NEXT_DBD(var, offset) next_list_item((*offset == 0) ? var : 0, offset) - -/* - * This is a simple iterator which allows the caller to step through the - * possible locations for a terminfo directory. ncurses uses this to find - * terminfo files to read. - */ -NCURSES_EXPORT(const char *) -_nc_next_db(DBDIRS * state, int *offset) -{ - const char *result; - char *envp; - - while (*state < dbdLAST) { - DBDIRS next = (DBDIRS) ((int) (*state) + 1); - - result = 0; - - switch (*state) { - case dbdTIC: - if (HaveTicDirectory) - result = _nc_tic_dir(0); - break; -#if USE_DATABASE - case dbdEnvOnce: - if (use_terminfo_vars()) { - if ((envp = getenv("TERMINFO")) != 0) - result = _nc_tic_dir(envp); - } - break; - case dbdHome: - if (use_terminfo_vars()) { - result = _nc_home_terminfo(); - } - break; - case dbdEnvList: - if (use_terminfo_vars()) { - if ((result = NEXT_DBD(getenv("TERMINFO_DIRS"), offset)) != 0) - next = *state; - } - break; - case dbdCfgList: -#ifdef TERMINFO_DIRS - if ((result = NEXT_DBD(TERMINFO_DIRS, offset)) != 0) - next = *state; -#endif - break; - case dbdCfgOnce: -#ifndef TERMINFO_DIRS - result = TERMINFO; -#endif - break; -#endif /* USE_DATABASE */ -#if USE_TERMCAP - case dbdEnvOnce2: - if (use_terminfo_vars()) { - if ((envp = getenv("TERMCAP")) != 0) - result = _nc_tic_dir(envp); - } - break; - case dbdEnvList2: - if (use_terminfo_vars()) { - if ((result = NEXT_DBD(getenv("TERMPATH"), offset)) != 0) - next = *state; - } - break; - case dbdCfgList2: - if ((result = NEXT_DBD(TERMPATH, offset)) != 0) - next = *state; - break; -#endif /* USE_TERMCAP */ - case dbdLAST: - break; - } - if (*state != next) { - *state = next; - *offset = 0; - _nc_last_db(); - } - if (result != 0) { - return result; - } - } - return 0; -} - -NCURSES_EXPORT(void) -_nc_first_db(DBDIRS * state, int *offset) -{ - *state = dbdTIC; - *offset = 0; -} diff --git a/deps/ncurses-5.9/ncurses/tinfo/hashed_db.c b/deps/ncurses-5.9/ncurses/tinfo/hashed_db.c deleted file mode 100644 index bf7a968..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/hashed_db.c +++ /dev/null @@ -1,264 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2006,2008 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: Thomas E. Dickey 2006-on * - ****************************************************************************/ - -#include -#include -#include - -#if USE_HASHED_DB - -MODULE_ID("$Id: hashed_db.c,v 1.14 2008/12/13 20:59:02 tom Exp $") - -#if HASHED_DB_API >= 2 -static DBC *cursor; -#endif - -/* - * Open the database. - */ -NCURSES_EXPORT(DB *) -_nc_db_open(const char *path, bool modify) -{ - DB *result = 0; - int code; - -#if HASHED_DB_API >= 4 - db_create(&result, NULL, 0); - if ((code = result->open(result, - NULL, - path, - NULL, - DB_HASH, - modify ? DB_CREATE : DB_RDONLY, - 0644)) != 0) { - result = 0; - } -#elif HASHED_DB_API >= 3 - db_create(&result, NULL, 0); - if ((code = result->open(result, - path, - NULL, - DB_HASH, - modify ? DB_CREATE : DB_RDONLY, - 0644)) != 0) { - result = 0; - } -#elif HASHED_DB_API >= 2 - if ((code = db_open(path, - DB_HASH, - modify ? DB_CREATE : DB_RDONLY, - 0644, - (DB_ENV *) 0, - (DB_INFO *) 0, - &result)) != 0) { - result = 0; - } -#else - if ((result = dbopen(path, - modify ? (O_CREAT | O_RDWR) : O_RDONLY, - 0644, - DB_HASH, - NULL)) == 0) { - code = errno; - } -#endif - if (result != 0) { - T(("opened %s", path)); - } else { - T(("cannot open %s: %s", path, strerror(code))); - } - return result; -} - -/* - * Close the database. Do not attempt to use the 'db' handle after this call. - */ -NCURSES_EXPORT(int) -_nc_db_close(DB * db) -{ - int result; - -#if HASHED_DB_API >= 2 - result = db->close(db, 0); -#else - result = db->close(db); -#endif - return result; -} - -/* - * Write a record to the database. - * - * Returns 0 on success. - * - * FIXME: the FreeBSD cap_mkdb program assumes the database could have - * duplicates. There appears to be no good reason for that (review/fix). - */ -NCURSES_EXPORT(int) -_nc_db_put(DB * db, DBT * key, DBT * data) -{ - int result; -#if HASHED_DB_API >= 2 - /* remove any pre-existing value, since we do not want duplicates */ - (void) db->del(db, NULL, key, 0); - result = db->put(db, NULL, key, data, DB_NOOVERWRITE); -#else - result = db->put(db, key, data, R_NOOVERWRITE); -#endif - return result; -} - -/* - * Read a record from the database. - * - * Returns 0 on success. - */ -NCURSES_EXPORT(int) -_nc_db_get(DB * db, DBT * key, DBT * data) -{ - int result; - - memset(data, 0, sizeof(*data)); -#if HASHED_DB_API >= 2 - result = db->get(db, NULL, key, data, 0); -#else - result = db->get(db, key, data, 0); -#endif - return result; -} - -/* - * Read the first record from the database, ignoring order. - * - * Returns 0 on success. - */ -NCURSES_EXPORT(int) -_nc_db_first(DB * db, DBT * key, DBT * data) -{ - int result; - - memset(key, 0, sizeof(*key)); - memset(data, 0, sizeof(*data)); -#if HASHED_DB_API >= 2 - if ((result = db->cursor(db, NULL, &cursor, 0)) == 0) { - result = cursor->c_get(cursor, key, data, DB_FIRST); - } -#else - result = db->seq(db, key, data, 0); -#endif - return result; -} - -/* - * Read the next record from the database, ignoring order. - * - * Returns 0 on success. - */ -NCURSES_EXPORT(int) -_nc_db_next(DB * db, DBT * key, DBT * data) -{ - int result; - -#if HASHED_DB_API >= 2 - (void) db; - if (cursor != 0) { - result = cursor->c_get(cursor, key, data, DB_NEXT); - } else { - result = -1; - } -#else - result = db->seq(db, key, data, 0); -#endif - return result; -} - -/* - * Check if a record is a terminfo index record. Index records are those that - * contain only an alias pointing to a list of aliases. - */ -NCURSES_EXPORT(bool) -_nc_db_have_index(DBT * key, DBT * data, char **buffer, int *size) -{ - bool result = FALSE; - int used = data->size - 1; - char *have = (char *) data->data; - - (void) key; - if (*have++ == 2) { - result = TRUE; - } - /* - * Update params in any case for consistency with _nc_db_have_data(). - */ - *buffer = have; - *size = used; - return result; -} - -/* - * Check if a record is the terminfo data record. Ignore index records, e.g., - * those that contain only an alias pointing to a list of aliases. - */ -NCURSES_EXPORT(bool) -_nc_db_have_data(DBT * key, DBT * data, char **buffer, int *size) -{ - bool result = FALSE; - int used = data->size - 1; - char *have = (char *) data->data; - - if (*have++ == 0) { - if (data->size > key->size - && IS_TIC_MAGIC(have)) { - result = TRUE; - } - } - /* - * Update params in any case to make it simple to follow a index record - * to the data record. - */ - *buffer = have; - *size = used; - return result; -} - -#else - -extern -NCURSES_EXPORT(void) -_nc_hashed_db(void); - -NCURSES_EXPORT(void) -_nc_hashed_db(void) -{ -} - -#endif /* USE_HASHED_DB */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_acs.c b/deps/ncurses-5.9/ncurses/tinfo/lib_acs.c deleted file mode 100644 index d8fdedc..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_acs.c +++ /dev/null @@ -1,252 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - * and: Juergen Pfeifer 2008 * - ****************************************************************************/ - -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -MODULE_ID("$Id: lib_acs.c,v 1.43 2010/12/25 23:00:45 tom Exp $") - -#if BROKEN_LINKER || USE_REENTRANT -#define MyBuffer _nc_prescreen.real_acs_map -NCURSES_EXPORT(chtype *) -NCURSES_PUBLIC_VAR(acs_map) (void) -{ - if (MyBuffer == 0) - MyBuffer = typeCalloc(chtype, ACS_LEN); - return MyBuffer; -} -#undef MyBuffer -#else -NCURSES_EXPORT_VAR (chtype) acs_map[ACS_LEN] = -{ - 0 -}; -#endif - -#ifdef USE_TERM_DRIVER -NCURSES_EXPORT(chtype) -NCURSES_SP_NAME(_nc_acs_char) (NCURSES_SP_DCLx int c) -{ - chtype *map; - if (c < 0 || c >= ACS_LEN) - return (chtype) 0; - map = (SP_PARM != 0) ? SP_PARM->_acs_map : -#if BROKEN_LINKER || USE_REENTRANT - _nc_prescreen.real_acs_map -#else - acs_map -#endif - ; - return map[c]; -} -#endif /* USE_TERM_DRIVER */ - -NCURSES_EXPORT(void) -NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_DCL0) -{ - chtype *fake_map = acs_map; - chtype *real_map = SP_PARM != 0 ? SP_PARM->_acs_map : fake_map; - int j; - - T(("initializing ACS map")); - - /* - * If we're using this from curses (rather than terminfo), we are storing - * the mapping information in the SCREEN struct so we can decide how to - * render it. - */ - if (real_map != fake_map) { - for (j = 1; j < ACS_LEN; ++j) { - real_map[j] = 0; - fake_map[j] = A_ALTCHARSET | (chtype) j; - if (SP_PARM) - SP_PARM->_screen_acs_map[j] = FALSE; - } - } else { - for (j = 1; j < ACS_LEN; ++j) { - real_map[j] = 0; - } - } - - /* - * Initializations for a UNIX-like multi-terminal environment. Use - * ASCII chars and count on the terminfo description to do better. - */ - real_map['l'] = '+'; /* should be upper left corner */ - real_map['m'] = '+'; /* should be lower left corner */ - real_map['k'] = '+'; /* should be upper right corner */ - real_map['j'] = '+'; /* should be lower right corner */ - real_map['u'] = '+'; /* should be tee pointing left */ - real_map['t'] = '+'; /* should be tee pointing right */ - real_map['v'] = '+'; /* should be tee pointing up */ - real_map['w'] = '+'; /* should be tee pointing down */ - real_map['q'] = '-'; /* should be horizontal line */ - real_map['x'] = '|'; /* should be vertical line */ - real_map['n'] = '+'; /* should be large plus or crossover */ - real_map['o'] = '~'; /* should be scan line 1 */ - real_map['s'] = '_'; /* should be scan line 9 */ - real_map['`'] = '+'; /* should be diamond */ - real_map['a'] = ':'; /* should be checker board (stipple) */ - real_map['f'] = '\''; /* should be degree symbol */ - real_map['g'] = '#'; /* should be plus/minus */ - real_map['~'] = 'o'; /* should be bullet */ - real_map[','] = '<'; /* should be arrow pointing left */ - real_map['+'] = '>'; /* should be arrow pointing right */ - real_map['.'] = 'v'; /* should be arrow pointing down */ - real_map['-'] = '^'; /* should be arrow pointing up */ - real_map['h'] = '#'; /* should be board of squares */ - real_map['i'] = '#'; /* should be lantern symbol */ - real_map['0'] = '#'; /* should be solid square block */ - /* these defaults were invented for ncurses */ - real_map['p'] = '-'; /* should be scan line 3 */ - real_map['r'] = '-'; /* should be scan line 7 */ - real_map['y'] = '<'; /* should be less-than-or-equal-to */ - real_map['z'] = '>'; /* should be greater-than-or-equal-to */ - real_map['{'] = '*'; /* should be greek pi */ - real_map['|'] = '!'; /* should be not-equal */ - real_map['}'] = 'f'; /* should be pound-sterling symbol */ - /* thick-line-drawing */ - real_map['L'] = '+'; /* upper left corner */ - real_map['M'] = '+'; /* lower left corner */ - real_map['K'] = '+'; /* upper right corner */ - real_map['J'] = '+'; /* lower right corner */ - real_map['T'] = '+'; /* tee pointing left */ - real_map['U'] = '+'; /* tee pointing right */ - real_map['V'] = '+'; /* tee pointing up */ - real_map['W'] = '+'; /* tee pointing down */ - real_map['Q'] = '-'; /* horizontal line */ - real_map['X'] = '|'; /* vertical line */ - real_map['N'] = '+'; /* large plus or crossover */ - /* double-line-drawing */ - real_map['C'] = '+'; /* upper left corner */ - real_map['D'] = '+'; /* lower left corner */ - real_map['B'] = '+'; /* upper right corner */ - real_map['A'] = '+'; /* lower right corner */ - real_map['G'] = '+'; /* tee pointing left */ - real_map['F'] = '+'; /* tee pointing right */ - real_map['H'] = '+'; /* tee pointing up */ - real_map['I'] = '+'; /* tee pointing down */ - real_map['R'] = '-'; /* horizontal line */ - real_map['Y'] = '|'; /* vertical line */ - real_map['E'] = '+'; /* large plus or crossover */ - -#ifdef USE_TERM_DRIVER - CallDriver_2(SP_PARM, initacs, real_map, fake_map); -#else - if (ena_acs != NULL) { - TPUTS_TRACE("ena_acs"); - putp(ena_acs); - } -#if NCURSES_EXT_FUNCS - /* - * Linux console "supports" the "PC ROM" character set by the coincidence - * that smpch/rmpch and smacs/rmacs have the same values. ncurses has - * no codepage support (see SCO Merge for an example). Outside of the - * values defined in acsc, there are no definitions for the "PC ROM" - * character set (assumed by some applications to be codepage 437), but we - * allow those applications to use those codepoints. - * - * test/blue.c uses this feature. - */ -#define PCH_KLUDGE(a,b) (a != 0 && b != 0 && !strcmp(a,b)) - if (PCH_KLUDGE(enter_pc_charset_mode, enter_alt_charset_mode) && - PCH_KLUDGE(exit_pc_charset_mode, exit_alt_charset_mode)) { - size_t i; - for (i = 1; i < ACS_LEN; ++i) { - if (real_map[i] == 0) { - real_map[i] = (chtype) i; - if (real_map != fake_map) { - if (SP != 0) - SP->_screen_acs_map[i] = TRUE; - } - } - } - } -#endif - - if (acs_chars != NULL) { - size_t i = 0; - size_t length = strlen(acs_chars); - - while (i + 1 < length) { - if (acs_chars[i] != 0 && UChar(acs_chars[i]) < ACS_LEN) { - real_map[UChar(acs_chars[i])] = UChar(acs_chars[i + 1]) | A_ALTCHARSET; - if (SP != 0) - SP->_screen_acs_map[UChar(acs_chars[i])] = TRUE; - } - i += 2; - } - } -#ifdef TRACE - /* Show the equivalent mapping, noting if it does not match the - * given attribute, whether by re-ordering or duplication. - */ - if (USE_TRACEF(TRACE_CALLS)) { - size_t n, m; - char show[ACS_LEN * 2 + 1]; - for (n = 1, m = 0; n < ACS_LEN; n++) { - if (real_map[n] != 0) { - show[m++] = (char) n; - show[m++] = (char) ChCharOf(real_map[n]); - } - } - show[m] = 0; - if (acs_chars == NULL || strcmp(acs_chars, show)) - _tracef("%s acs_chars %s", - (acs_chars == NULL) ? "NULL" : "READ", - _nc_visbuf(acs_chars)); - _tracef("%s acs_chars %s", - (acs_chars == NULL) - ? "NULL" - : (strcmp(acs_chars, show) - ? "DIFF" - : "SAME"), - _nc_visbuf(show)); - _nc_unlock_global(tracef); - } -#endif /* TRACE */ -#endif -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(void) -_nc_init_acs(void) -{ - NCURSES_SP_NAME(_nc_init_acs) (CURRENT_SCREEN); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_baudrate.c b/deps/ncurses-5.9/ncurses/tinfo/lib_baudrate.c deleted file mode 100644 index 9302f02..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_baudrate.c +++ /dev/null @@ -1,246 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * lib_baudrate.c - * - */ - -#include -#include /* ospeed */ -#if defined(__FreeBSD__) -#include -#endif - -/* - * These systems use similar header files, which define B1200 as 1200, etc., - * but can be overridden by defining USE_OLD_TTY so B1200 is 9, which makes all - * of the indices up to B115200 fit nicely in a 'short', allowing us to retain - * ospeed's type for compatibility. - */ -#if (defined(__FreeBSD__) && (__FreeBSD_version < 700000)) || defined(__NetBSD__) || defined(__OpenBSD__) -#undef B0 -#undef B50 -#undef B75 -#undef B110 -#undef B134 -#undef B150 -#undef B200 -#undef B300 -#undef B600 -#undef B1200 -#undef B1800 -#undef B2400 -#undef B4800 -#undef B9600 -#undef B19200 -#undef EXTA -#undef B38400 -#undef EXTB -#undef B57600 -#undef B115200 -#undef B230400 -#undef B460800 -#undef B921600 -#define USE_OLD_TTY -#include -#else -#undef USE_OLD_TTY -#endif /* USE_OLD_TTY */ - -MODULE_ID("$Id: lib_baudrate.c,v 1.31 2010/12/19 01:50:50 tom Exp $") - -/* - * int - * baudrate() - * - * Returns the current terminal's baud rate. - * - */ - -struct speed { - int s; /* value for 'ospeed' is an index */ - int sp; /* the actual speed */ -}; - -static struct speed const speeds[] = -{ - {B0, 0}, - {B50, 50}, - {B75, 75}, - {B110, 110}, - {B134, 134}, - {B150, 150}, - {B200, 200}, - {B300, 300}, - {B600, 600}, - {B1200, 1200}, - {B1800, 1800}, - {B2400, 2400}, - {B4800, 4800}, - {B9600, 9600}, -#ifdef B19200 - {B19200, 19200}, -#else -#ifdef EXTA - {EXTA, 19200}, -#endif -#endif -#ifdef B38400 - {B38400, 38400}, -#else -#ifdef EXTB - {EXTB, 38400}, -#endif -#endif -#ifdef B57600 - {B57600, 57600}, -#endif -#ifdef B115200 - {B115200, 115200}, -#endif -#ifdef B230400 - {B230400, 230400}, -#endif -#ifdef B460800 - {B460800, 460800}, -#endif -#ifdef B921600 - {B921600, 921600}, -#endif -}; - -NCURSES_EXPORT(int) -_nc_baudrate(int OSpeed) -{ -#if !USE_REENTRANT - static int last_OSpeed; - static int last_baudrate; -#endif - - int result = ERR; - unsigned i; - -#if !USE_REENTRANT - if (OSpeed == last_OSpeed) { - result = last_baudrate; - } -#endif - if (result == ERR) { - if (OSpeed >= 0) { - for (i = 0; i < SIZEOF(speeds); i++) { - if (speeds[i].s == OSpeed) { - result = speeds[i].sp; - break; - } - } - } -#if !USE_REENTRANT - if (OSpeed == last_OSpeed) { - last_OSpeed = OSpeed; - last_baudrate = result; - } -#endif - } - return (result); -} - -NCURSES_EXPORT(int) -_nc_ospeed(int BaudRate) -{ - int result = 1; - unsigned i; - - if (BaudRate >= 0) { - for (i = 0; i < SIZEOF(speeds); i++) { - if (speeds[i].sp == BaudRate) { - result = speeds[i].s; - break; - } - } - } - return (result); -} - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(baudrate) (NCURSES_SP_DCL0) -{ - int result; - - T((T_CALLED("baudrate(%p)"), (void *) SP_PARM)); - - /* - * In debugging, allow the environment symbol to override when we're - * redirecting to a file, so we can construct repeatable test-cases - * that take into account costs that depend on baudrate. - */ -#ifdef TRACE - if (IsValidTIScreen(SP_PARM) - && !isatty(fileno(SP_PARM ? SP_PARM->_ofp : stdout)) - && getenv("BAUDRATE") != 0) { - int ret; - if ((ret = _nc_getenv_num("BAUDRATE")) <= 0) - ret = 9600; - ospeed = (NCURSES_OSPEED) _nc_ospeed(ret); - returnCode(ret); - } -#endif - - if (IsValidTIScreen(SP_PARM)) { -#ifdef USE_OLD_TTY - result = cfgetospeed(&(TerminalOf(SP_PARM)->Nttyb)); - ospeed = _nc_ospeed(result); -#else /* !USE_OLD_TTY */ -#ifdef TERMIOS - ospeed = (NCURSES_OSPEED) cfgetospeed(&(TerminalOf(SP_PARM)->Nttyb)); -#else - ospeed = (NCURSES_OSPEED) TerminalOf(SP_PARM)->Nttyb.sg_ospeed; -#endif - result = _nc_baudrate(ospeed); -#endif - TerminalOf(SP_PARM)->_baudrate = result; - } else { - result = ERR; - } - - returnCode(result); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -baudrate(void) -{ - return NCURSES_SP_NAME(baudrate) (CURRENT_SCREEN); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_setup.c b/deps/ncurses-5.9/ncurses/tinfo/lib_setup.c deleted file mode 100644 index 5fcf2ae..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_setup.c +++ /dev/null @@ -1,822 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - * and: Juergen Pfeifer 2009 * - ****************************************************************************/ - -/* - * Terminal setup routines common to termcap and terminfo: - * - * use_env(bool) - * setupterm(char *, int, int *) - */ - -#include -#include /* for MAX_NAME_SIZE */ - -#if SVR4_TERMIO && !defined(_POSIX_SOURCE) -#define _POSIX_SOURCE -#endif - -#if HAVE_LOCALE_H -#include -#endif - -MODULE_ID("$Id: lib_setup.c,v 1.135 2011/02/06 01:04:21 tom Exp $") - -/**************************************************************************** - * - * Terminal size computation - * - ****************************************************************************/ - -#if HAVE_SIZECHANGE -# if !defined(sun) || !TERMIOS -# if HAVE_SYS_IOCTL_H -# include -# endif -# endif -#endif - -#if NEED_PTEM_H - /* On SCO, they neglected to define struct winsize in termios.h -- it's only - * in termio.h and ptem.h (the former conflicts with other definitions). - */ -# include -# include -#endif - -#if HAVE_LANGINFO_CODESET -#include -#endif - -/* - * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, - * Solaris, IRIX) define TIOCGWINSZ and struct winsize. - */ -#ifdef TIOCGSIZE -# define IOCTL_WINSIZE TIOCGSIZE -# define STRUCT_WINSIZE struct ttysize -# define WINSIZE_ROWS(n) (int)n.ts_lines -# define WINSIZE_COLS(n) (int)n.ts_cols -#else -# ifdef TIOCGWINSZ -# define IOCTL_WINSIZE TIOCGWINSZ -# define STRUCT_WINSIZE struct winsize -# define WINSIZE_ROWS(n) (int)n.ws_row -# define WINSIZE_COLS(n) (int)n.ws_col -# endif -#endif - -/* - * Reduce explicit use of "cur_term" global variable. - */ -#undef CUR -#define CUR termp->type. - -/* - * Wrap global variables in this module. - */ -#if USE_REENTRANT - -NCURSES_EXPORT(char *) -NCURSES_PUBLIC_VAR(ttytype) (void) -{ - static char empty[] = ""; - char *result = empty; - -#if NCURSES_SP_FUNCS - if (CURRENT_SCREEN) { - TERMINAL *termp = TerminalOf(CURRENT_SCREEN); - if (termp != 0) { - result = termp->type.term_names; - } - } -#else - if (cur_term != 0) { - result = cur_term->type.term_names; - } -#endif - return result; -} - -NCURSES_EXPORT(int *) -_nc_ptr_Lines(SCREEN *sp) -{ - return ptrLines(sp); -} - -NCURSES_EXPORT(int) -NCURSES_PUBLIC_VAR(LINES) (void) -{ - return *_nc_ptr_Lines(CURRENT_SCREEN); -} - -NCURSES_EXPORT(int *) -_nc_ptr_Cols(SCREEN *sp) -{ - return ptrCols(sp); -} - -NCURSES_EXPORT(int) -NCURSES_PUBLIC_VAR(COLS) (void) -{ - return *_nc_ptr_Cols(CURRENT_SCREEN); -} - -NCURSES_EXPORT(int *) -_nc_ptr_Tabsize(SCREEN *sp) -{ - return ptrTabsize(sp); -} - -NCURSES_EXPORT(int) -NCURSES_PUBLIC_VAR(TABSIZE) (void) -{ - return *_nc_ptr_Tabsize(CURRENT_SCREEN); -} -#else -NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = ""; -NCURSES_EXPORT_VAR(int) LINES = 0; -NCURSES_EXPORT_VAR(int) COLS = 0; -NCURSES_EXPORT_VAR(int) TABSIZE = 8; -#endif - -#if NCURSES_EXT_FUNCS -NCURSES_EXPORT(int) -NCURSES_SP_NAME(set_tabsize) (NCURSES_SP_DCLx int value) -{ - int code = OK; -#if USE_REENTRANT - if (SP_PARM) { - SP_PARM->_TABSIZE = value; - } else { - code = ERR; - } -#else - (void) SP_PARM; - TABSIZE = value; -#endif - return code; -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -set_tabsize(int value) -{ - return NCURSES_SP_NAME(set_tabsize) (CURRENT_SCREEN, value); -} -#endif -#endif /* NCURSES_EXT_FUNCS */ - -#if USE_SIGWINCH -/* - * If we have a pending SIGWINCH, set the flag in each screen. - */ -NCURSES_EXPORT(int) -_nc_handle_sigwinch(SCREEN *sp) -{ - SCREEN *scan; - - if (_nc_globals.have_sigwinch) { - _nc_globals.have_sigwinch = 0; - - for (each_screen(scan)) { - scan->_sig_winch = TRUE; - } - } - - return (sp ? sp->_sig_winch : 0); -} - -#endif - -NCURSES_EXPORT(void) -NCURSES_SP_NAME(use_env) (NCURSES_SP_DCLx bool f) -{ - T((T_CALLED("use_env(%p,%d)"), (void *) SP_PARM, (int) f)); -#if NCURSES_SP_FUNCS - if (IsPreScreen(SP_PARM)) { - SP_PARM->_use_env = f; - } -#else - _nc_prescreen.use_env = f; -#endif - returnVoid; -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(void) -use_env(bool f) -{ - T((T_CALLED("use_env(%d)"), (int) f)); - _nc_prescreen.use_env = f; - returnVoid; -} -#endif - -NCURSES_EXPORT(void) -_nc_get_screensize(SCREEN *sp, -#ifdef USE_TERM_DRIVER - TERMINAL * termp, -#endif - int *linep, int *colp) -/* Obtain lines/columns values from the environment and/or terminfo entry */ -{ -#ifdef USE_TERM_DRIVER - TERMINAL_CONTROL_BLOCK *TCB; - int my_tabsize; - - assert(termp != 0 && linep != 0 && colp != 0); - TCB = (TERMINAL_CONTROL_BLOCK *) termp; - - my_tabsize = TCB->info.tabsize; - TCB->drv->size(TCB, linep, colp); - -#if USE_REENTRANT - if (sp != 0) { - sp->_TABSIZE = my_tabsize; - } -#else - (void) sp; - TABSIZE = my_tabsize; -#endif - T(("TABSIZE = %d", my_tabsize)); -#else /* !USE_TERM_DRIVER */ - TERMINAL *termp = cur_term; - int my_tabsize; - - /* figure out the size of the screen */ - T(("screen size: terminfo lines = %d columns = %d", lines, columns)); - - *linep = (int) lines; - *colp = (int) columns; - - if (_nc_prescreen.use_env) { - int value; - -#ifdef __EMX__ - { - int screendata[2]; - _scrsize(screendata); - *colp = screendata[0]; - *linep = screendata[1]; - T(("EMX screen size: environment LINES = %d COLUMNS = %d", - *linep, *colp)); - } -#endif -#if HAVE_SIZECHANGE - /* try asking the OS */ - if (isatty(cur_term->Filedes)) { - STRUCT_WINSIZE size; - - errno = 0; - do { - if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) >= 0) { - *linep = ((sp != 0 && sp->_filtered) - ? 1 - : WINSIZE_ROWS(size)); - *colp = WINSIZE_COLS(size); - T(("SYS screen size: environment LINES = %d COLUMNS = %d", - *linep, *colp)); - break; - } - } while - (errno == EINTR); - } -#endif /* HAVE_SIZECHANGE */ - - /* - * Finally, look for environment variables. - * - * Solaris lets users override either dimension with an environment - * variable. - */ - if ((value = _nc_getenv_num("LINES")) > 0) { - *linep = value; - T(("screen size: environment LINES = %d", *linep)); - } - if ((value = _nc_getenv_num("COLUMNS")) > 0) { - *colp = value; - T(("screen size: environment COLUMNS = %d", *colp)); - } - - /* if we can't get dynamic info about the size, use static */ - if (*linep <= 0) { - *linep = (int) lines; - } - if (*colp <= 0) { - *colp = (int) columns; - } - - /* the ultimate fallback, assume fixed 24x80 size */ - if (*linep <= 0) { - *linep = 24; - } - if (*colp <= 0) { - *colp = 80; - } - - /* - * Put the derived values back in the screen-size caps, so - * tigetnum() and tgetnum() will do the right thing. - */ - lines = (short) (*linep); - columns = (short) (*colp); - } - - T(("screen size is %dx%d", *linep, *colp)); - - if (VALID_NUMERIC(init_tabs)) - my_tabsize = (int) init_tabs; - else - my_tabsize = 8; - -#if USE_REENTRANT - if (sp != 0) - sp->_TABSIZE = my_tabsize; -#else - TABSIZE = my_tabsize; -#endif - T(("TABSIZE = %d", TABSIZE)); -#endif /* USE_TERM_DRIVER */ -} - -#if USE_SIZECHANGE -NCURSES_EXPORT(void) -_nc_update_screensize(SCREEN *sp) -{ - int new_lines; - int new_cols; - -#ifdef USE_TERM_DRIVER - int old_lines; - int old_cols; - - assert(sp != 0); - - CallDriver_2(sp, getsize, &old_lines, &old_cols); - -#else - TERMINAL *termp = cur_term; - int old_lines = lines; - int old_cols = columns; -#endif - - TINFO_GET_SIZE(sp, sp->_term, &new_lines, &new_cols); - - /* - * See is_term_resized() and resizeterm(). - * We're doing it this way because those functions belong to the upper - * ncurses library, while this resides in the lower terminfo library. - */ - if (sp != 0 - && sp->_resize != 0) { - if ((new_lines != old_lines) || (new_cols != old_cols)) - sp->_resize(NCURSES_SP_ARGx new_lines, new_cols); - sp->_sig_winch = FALSE; - } -} -#endif - -/**************************************************************************** - * - * Terminal setup - * - ****************************************************************************/ - -#define ret_error(code, fmt, arg) if (errret) {\ - *errret = code;\ - returnCode(ERR);\ - } else {\ - fprintf(stderr, fmt, arg);\ - exit(EXIT_FAILURE);\ - } - -#define ret_error0(code, msg) if (errret) {\ - *errret = code;\ - returnCode(ERR);\ - } else {\ - fprintf(stderr, msg);\ - exit(EXIT_FAILURE);\ - } - -#if USE_DATABASE || USE_TERMCAP -/* - * Return 1 if entry found, 0 if not found, -1 if database not accessible, - * just like tgetent(). - */ -int -_nc_setup_tinfo(const char *const tn, TERMTYPE *const tp) -{ - char filename[PATH_MAX]; - int status = _nc_read_entry(tn, filename, tp); - - /* - * If we have an entry, force all of the cancelled strings to null - * pointers so we don't have to test them in the rest of the library. - * (The terminfo compiler bypasses this logic, since it must know if - * a string is cancelled, for merging entries). - */ - if (status == TGETENT_YES) { - unsigned n; - for_each_boolean(n, tp) { - if (!VALID_BOOLEAN(tp->Booleans[n])) - tp->Booleans[n] = FALSE; - } - for_each_string(n, tp) { - if (tp->Strings[n] == CANCELLED_STRING) - tp->Strings[n] = ABSENT_STRING; - } - } - return (status); -} -#endif - -/* -** Take the real command character out of the CC environment variable -** and substitute it in for the prototype given in 'command_character'. -*/ -void -_nc_tinfo_cmdch(TERMINAL * termp, char proto) -{ - unsigned i; - char CC; - char *tmp; - - /* - * Only use the character if the string is a single character, - * since it is fairly common for developers to set the C compiler - * name as an environment variable - using the same symbol. - */ - if ((tmp = getenv("CC")) != 0 && strlen(tmp) == 1) { - CC = *tmp; - for_each_string(i, &(termp->type)) { - for (tmp = termp->type.Strings[i]; *tmp; tmp++) { - if (*tmp == proto) - *tmp = CC; - } - } - } -} - -/* - * Find the locale which is in effect. - */ -NCURSES_EXPORT(char *) -_nc_get_locale(void) -{ - char *env; -#if HAVE_LOCALE_H - /* - * This is preferable to using getenv() since it ensures that we are using - * the locale which was actually initialized by the application. - */ - env = setlocale(LC_CTYPE, 0); -#else - if (((env = getenv("LC_ALL")) != 0 && *env != '\0') - || ((env = getenv("LC_CTYPE")) != 0 && *env != '\0') - || ((env = getenv("LANG")) != 0 && *env != '\0')) { - ; - } -#endif - T(("_nc_get_locale %s", _nc_visbuf(env))); - return env; -} - -/* - * Check if we are running in a UTF-8 locale. - */ -NCURSES_EXPORT(int) -_nc_unicode_locale(void) -{ - int result = 0; -#if HAVE_LANGINFO_CODESET - char *env = nl_langinfo(CODESET); - result = !strcmp(env, "UTF-8"); - T(("_nc_unicode_locale(%s) ->%d", env, result)); -#else - char *env = _nc_get_locale(); - if (env != 0) { - if (strstr(env, ".UTF-8") != 0) { - result = 1; - T(("_nc_unicode_locale(%s) ->%d", env, result)); - } - } -#endif - return result; -} - -#define CONTROL_N(s) ((s) != 0 && strstr(s, "\016") != 0) -#define CONTROL_O(s) ((s) != 0 && strstr(s, "\017") != 0) - -/* - * Check for known broken cases where a UTF-8 locale breaks the alternate - * character set. - */ -NCURSES_EXPORT(int) -_nc_locale_breaks_acs(TERMINAL * termp) -{ - const char *env_name = "NCURSES_NO_UTF8_ACS"; - char *env; - int value; - int result = 0; - - if ((env = getenv(env_name)) != 0) { - result = _nc_getenv_num(env_name); - } else if ((value = tigetnum("U8")) >= 0) { - result = value; /* use extension feature */ - } else if ((env = getenv("TERM")) != 0) { - if (strstr(env, "linux")) { - result = 1; /* always broken */ - } else if (strstr(env, "screen") != 0 - && ((env = getenv("TERMCAP")) != 0 - && strstr(env, "screen") != 0) - && strstr(env, "hhII00") != 0) { - if (CONTROL_N(enter_alt_charset_mode) || - CONTROL_O(enter_alt_charset_mode) || - CONTROL_N(set_attributes) || - CONTROL_O(set_attributes)) { - result = 1; - } - } - } - return result; -} - -NCURSES_EXPORT(int) -TINFO_SETUP_TERM(TERMINAL ** tp, - NCURSES_CONST char *tname, - int Filedes, - int *errret, - bool reuse) -{ -#ifdef USE_TERM_DRIVER - TERMINAL_CONTROL_BLOCK *TCB = 0; -#else - int status; -#endif - TERMINAL *termp; - SCREEN *sp = 0; - int code = ERR; - - START_TRACE(); - -#ifdef USE_TERM_DRIVER - T((T_CALLED("_nc_setupterm_ex(%p,%s,%d,%p)"), - (void *) tp, _nc_visbuf(tname), Filedes, (void *) errret)); - - if (tp == 0) { - ret_error0(TGETENT_ERR, - "Invalid parameter, internal error.\n"); - } else - termp = *tp; -#else - termp = cur_term; - T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, (void *) errret)); -#endif - - if (tname == 0) { - tname = getenv("TERM"); - if (tname == 0 || *tname == '\0') { - ret_error0(TGETENT_ERR, "TERM environment variable not set.\n"); - } - } - - if (strlen(tname) > MAX_NAME_SIZE) { - ret_error(TGETENT_ERR, - "TERM environment must be <= %d characters.\n", - MAX_NAME_SIZE); - } - - T(("your terminal name is %s", tname)); - - /* - * Allow output redirection. This is what SVr3 does. If stdout is - * directed to a file, screen updates go to standard error. - */ - if (Filedes == STDOUT_FILENO && !isatty(Filedes)) - Filedes = STDERR_FILENO; - - /* - * Check if we have already initialized to use this terminal. If so, we - * do not need to re-read the terminfo entry, or obtain TTY settings. - * - * This is an improvement on SVr4 curses. If an application mixes curses - * and termcap calls, it may call both initscr and tgetent. This is not - * really a good thing to do, but can happen if someone tries using ncurses - * with the readline library. The problem we are fixing is that when - * tgetent calls setupterm, the resulting Ottyb struct in cur_term is - * zeroed. A subsequent call to endwin uses the zeroed terminal settings - * rather than the ones saved in initscr. So we check if cur_term appears - * to contain terminal settings for the same output file as our current - * call - and copy those terminal settings. (SVr4 curses does not do this, - * however applications that are working around the problem will still work - * properly with this feature). - */ - if (reuse - && (termp != 0) - && termp->Filedes == Filedes - && termp->_termname != 0 - && !strcmp(termp->_termname, tname) - && _nc_name_match(termp->type.term_names, tname, "|")) { - T(("reusing existing terminal information and mode-settings")); - code = OK; - } else { -#ifdef USE_TERM_DRIVER - termp = (TERMINAL *) typeCalloc(TERMINAL_CONTROL_BLOCK, 1); -#else - termp = typeCalloc(TERMINAL, 1); -#endif - if (termp == 0) { - ret_error0(TGETENT_ERR, - "Not enough memory to create terminal structure.\n"); - } -#ifdef USE_TERM_DRIVER - INIT_TERM_DRIVER(); - TCB = (TERMINAL_CONTROL_BLOCK *) termp; - code = _nc_globals.term_driver(TCB, tname, errret); - if (code == OK) { - termp->Filedes = (short) Filedes; - termp->_termname = strdup(tname); - } else { - ret_error0(TGETENT_ERR, - "Could not find any driver to handle this terminal.\n"); - } -#else -#if USE_DATABASE || USE_TERMCAP - status = _nc_setup_tinfo(tname, &termp->type); -#else - status = TGETENT_NO; -#endif - - /* try fallback list if entry on disk */ - if (status != TGETENT_YES) { - const TERMTYPE *fallback = _nc_fallback(tname); - - if (fallback) { - termp->type = *fallback; - status = TGETENT_YES; - } - } - - if (status != TGETENT_YES) { - del_curterm(termp); - if (status == TGETENT_ERR) { - ret_error0(status, "terminals database is inaccessible\n"); - } else if (status == TGETENT_NO) { - ret_error(status, "'%s': unknown terminal type.\n", tname); - } - } -#if !USE_REENTRANT - strncpy(ttytype, termp->type.term_names, NAMESIZE - 1); - ttytype[NAMESIZE - 1] = '\0'; -#endif - - termp->Filedes = (short) Filedes; - termp->_termname = strdup(tname); - - set_curterm(termp); - - if (command_character) - _nc_tinfo_cmdch(termp, *command_character); - - /* - * If an application calls setupterm() rather than initscr() or - * newterm(), we will not have the def_prog_mode() call in - * _nc_setupscreen(). Do it now anyway, so we can initialize the - * baudrate. - */ - if (isatty(Filedes)) { - def_prog_mode(); - baudrate(); - } - code = OK; -#endif - } - -#ifdef USE_TERM_DRIVER - *tp = termp; - NCURSES_SP_NAME(set_curterm) (sp, termp); - TCB->drv->init(TCB); -#else - sp = SP; -#endif - - /* - * We should always check the screensize, just in case. - */ - TINFO_GET_SIZE(sp, termp, ptrLines(sp), ptrCols(sp)); - - if (errret) - *errret = TGETENT_YES; - -#ifndef USE_TERM_DRIVER - if (generic_type) { - ret_error(TGETENT_NO, "'%s': I need something more specific.\n", tname); - } - if (hard_copy) { - ret_error(TGETENT_YES, "'%s': I can't handle hardcopy terminals.\n", tname); - } -#endif - returnCode(code); -} - -#if NCURSES_SP_FUNCS -/* - * In case of handling multiple screens, we need to have a screen before - * initialization in setupscreen takes place. This is to extend the substitute - * for some of the stuff in _nc_prescreen, especially for slk and ripoff - * handling which should be done per screen. - */ -NCURSES_EXPORT(SCREEN *) -new_prescr(void) -{ - static SCREEN *sp; - - START_TRACE(); - T((T_CALLED("new_prescr()"))); - - if (sp == 0) { - sp = _nc_alloc_screen_sp(); - if (sp != 0) { - sp->rsp = sp->rippedoff; - sp->_filtered = _nc_prescreen.filter_mode; - sp->_use_env = _nc_prescreen.use_env; -#if NCURSES_NO_PADDING - sp->_no_padding = _nc_prescreen._no_padding; -#endif - sp->slk_format = 0; - sp->_slk = 0; - sp->_prescreen = TRUE; - SP_PRE_INIT(sp); -#if USE_REENTRANT - sp->_TABSIZE = _nc_prescreen._TABSIZE; - sp->_ESCDELAY = _nc_prescreen._ESCDELAY; -#endif - } - } - returnSP(sp); -} -#endif - -#ifdef USE_TERM_DRIVER -/* - * This entrypoint is called from tgetent() to allow a special case of reusing - * the same TERMINAL data (see comment). - */ -NCURSES_EXPORT(int) -_nc_setupterm(NCURSES_CONST char *tname, - int Filedes, - int *errret, - bool reuse) -{ - int res; - TERMINAL *termp; - res = TINFO_SETUP_TERM(&termp, tname, Filedes, errret, reuse); - if (ERR != res) - NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN_PRE, termp); - return res; -} -#endif - -/* - * setupterm(termname, Filedes, errret) - * - * Find and read the appropriate object file for the terminal - * Make cur_term point to the structure. - */ -NCURSES_EXPORT(int) -setupterm(NCURSES_CONST char *tname, int Filedes, int *errret) -{ - return _nc_setupterm(tname, Filedes, errret, FALSE); -} diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_tparm.c b/deps/ncurses-5.9/ncurses/tinfo/lib_tparm.c deleted file mode 100644 index 7cd12f7..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_tparm.c +++ /dev/null @@ -1,820 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey, 1996 on * - ****************************************************************************/ - -/* - * tparm.c - * - */ - -#include - -#include -#include - -MODULE_ID("$Id: lib_tparm.c,v 1.82 2011/01/15 22:19:12 tom Exp $") - -/* - * char * - * tparm(string, ...) - * - * Substitute the given parameters into the given string by the following - * rules (taken from terminfo(5)): - * - * Cursor addressing and other strings requiring parame- - * ters in the terminal are described by a parameterized string - * capability, with like escapes %x in it. For example, to - * address the cursor, the 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 physical - * screen visible to the user, not to any unseen memory.) If - * the terminal has memory relative cursor addressing, that can - * be indicated by - * - * The parameter mechanism uses a stack and special % - * codes to manipulate it. Typically a sequence will push one - * of the parameters onto the stack and then print it in some - * format. Often more complex operations are necessary. - * - * The % encodings have the following meanings: - * - * %% outputs `%' - * %c print pop() like %c in printf() - * %s print pop() like %s in printf() - * %[[:]flags][width[.precision]][doxXs] - * as in printf, flags are [-+#] and space - * The ':' is used to avoid making %+ or %- - * patterns (see below). - * - * %p[1-9] push ith parm - * %P[a-z] set dynamic variable [a-z] to pop() - * %g[a-z] get dynamic variable [a-z] and push it - * %P[A-Z] set static variable [A-Z] to pop() - * %g[A-Z] get static variable [A-Z] and push it - * %l push strlen(pop) - * %'c' push char constant c - * %{nn} push integer constant nn - * - * %+ %- %* %/ %m - * arithmetic (%m is mod): push(pop() op pop()) - * %& %| %^ bit operations: push(pop() op pop()) - * %= %> %< logical operations: push(pop() op pop()) - * %A %O logical and & or operations for conditionals - * %! %~ unary operations push(op pop()) - * %i add 1 to first two parms (for ANSI terminals) - * - * %? expr %t thenpart %e elsepart %; - * if-then-else, %e elsepart is optional. - * else-if's are possible ala Algol 68: - * %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e b5 %; - * - * For those of the above operators which are binary and not commutative, - * the stack works in the usual way, with - * %gx %gy %m - * resulting in x mod y, not the reverse. - */ - -NCURSES_EXPORT_VAR(int) _nc_tparm_err = 0; - -#define TPS(var) _nc_prescreen.tparm_state.var - -#if NO_LEAKS -NCURSES_EXPORT(void) -_nc_free_tparm(void) -{ - if (TPS(out_buff) != 0) { - FreeAndNull(TPS(out_buff)); - TPS(out_size) = 0; - TPS(out_used) = 0; - FreeAndNull(TPS(fmt_buff)); - TPS(fmt_size) = 0; - } -} -#endif - -static NCURSES_INLINE void -get_space(size_t need) -{ - need += TPS(out_used); - if (need > TPS(out_size)) { - TPS(out_size) = need * 2; - TPS(out_buff) = typeRealloc(char, TPS(out_size), TPS(out_buff)); - if (TPS(out_buff) == 0) - _nc_err_abort(MSG_NO_MEMORY); - } -} - -static NCURSES_INLINE void -save_text(const char *fmt, const char *s, int len) -{ - size_t s_len = strlen(s); - if (len > (int) s_len) - s_len = (size_t) len; - - get_space(s_len + 1); - - (void) sprintf(TPS(out_buff) + TPS(out_used), fmt, s); - TPS(out_used) += strlen(TPS(out_buff) + TPS(out_used)); -} - -static NCURSES_INLINE void -save_number(const char *fmt, int number, int len) -{ - if (len < 30) - len = 30; /* actually log10(MAX_INT)+1 */ - - get_space((unsigned) len + 1); - - (void) sprintf(TPS(out_buff) + TPS(out_used), fmt, number); - TPS(out_used) += strlen(TPS(out_buff) + TPS(out_used)); -} - -static NCURSES_INLINE void -save_char(int c) -{ - if (c == 0) - c = 0200; - get_space(1); - TPS(out_buff)[TPS(out_used)++] = (char) c; -} - -static NCURSES_INLINE void -npush(int x) -{ - if (TPS(stack_ptr) < STACKSIZE) { - TPS(stack)[TPS(stack_ptr)].num_type = TRUE; - TPS(stack)[TPS(stack_ptr)].data.num = x; - TPS(stack_ptr)++; - } else { - DEBUG(2, ("npush: stack overflow: %s", _nc_visbuf(TPS(tparam_base)))); - _nc_tparm_err++; - } -} - -static NCURSES_INLINE int -npop(void) -{ - int result = 0; - if (TPS(stack_ptr) > 0) { - TPS(stack_ptr)--; - if (TPS(stack)[TPS(stack_ptr)].num_type) - result = TPS(stack)[TPS(stack_ptr)].data.num; - } else { - DEBUG(2, ("npop: stack underflow: %s", _nc_visbuf(TPS(tparam_base)))); - _nc_tparm_err++; - } - return result; -} - -static NCURSES_INLINE void -spush(char *x) -{ - if (TPS(stack_ptr) < STACKSIZE) { - TPS(stack)[TPS(stack_ptr)].num_type = FALSE; - TPS(stack)[TPS(stack_ptr)].data.str = x; - TPS(stack_ptr)++; - } else { - DEBUG(2, ("spush: stack overflow: %s", _nc_visbuf(TPS(tparam_base)))); - _nc_tparm_err++; - } -} - -static NCURSES_INLINE char * -spop(void) -{ - static char dummy[] = ""; /* avoid const-cast */ - char *result = dummy; - if (TPS(stack_ptr) > 0) { - TPS(stack_ptr)--; - if (!TPS(stack)[TPS(stack_ptr)].num_type - && TPS(stack)[TPS(stack_ptr)].data.str != 0) - result = TPS(stack)[TPS(stack_ptr)].data.str; - } else { - DEBUG(2, ("spop: stack underflow: %s", _nc_visbuf(TPS(tparam_base)))); - _nc_tparm_err++; - } - return result; -} - -static NCURSES_INLINE const char * -parse_format(const char *s, char *format, int *len) -{ - *len = 0; - if (format != 0) { - bool done = FALSE; - bool allowminus = FALSE; - bool dot = FALSE; - bool err = FALSE; - char *fmt = format; - int my_width = 0; - int my_prec = 0; - int value = 0; - - *len = 0; - *format++ = '%'; - while (*s != '\0' && !done) { - switch (*s) { - case 'c': /* FALLTHRU */ - case 'd': /* FALLTHRU */ - case 'o': /* FALLTHRU */ - case 'x': /* FALLTHRU */ - case 'X': /* FALLTHRU */ - case 's': - *format++ = *s; - done = TRUE; - break; - case '.': - *format++ = *s++; - if (dot) { - err = TRUE; - } else { /* value before '.' is the width */ - dot = TRUE; - my_width = value; - } - value = 0; - break; - case '#': - *format++ = *s++; - break; - case ' ': - *format++ = *s++; - break; - case ':': - s++; - allowminus = TRUE; - break; - case '-': - if (allowminus) { - *format++ = *s++; - } else { - done = TRUE; - } - break; - default: - if (isdigit(UChar(*s))) { - value = (value * 10) + (*s - '0'); - if (value > 10000) - err = TRUE; - *format++ = *s++; - } else { - done = TRUE; - } - } - } - - /* - * If we found an error, ignore (and remove) the flags. - */ - if (err) { - my_width = my_prec = value = 0; - format = fmt; - *format++ = '%'; - *format++ = *s; - } - - /* - * Any value after '.' is the precision. If we did not see '.', then - * the value is the width. - */ - if (dot) - my_prec = value; - else - my_width = value; - - *format = '\0'; - /* return maximum string length in print */ - *len = (my_width > my_prec) ? my_width : my_prec; - } - return s; -} - -#define isUPPER(c) ((c) >= 'A' && (c) <= 'Z') -#define isLOWER(c) ((c) >= 'a' && (c) <= 'z') - -/* - * Analyze the string to see how many parameters we need from the varargs list, - * and what their types are. We will only accept string parameters if they - * appear as a %l or %s format following an explicit parameter reference (e.g., - * %p2%s). All other parameters are numbers. - * - * 'number' counts coarsely the number of pop's we see in the string, and - * 'popcount' shows the highest parameter number in the string. We would like - * to simply use the latter count, but if we are reading termcap strings, there - * may be cases that we cannot see the explicit parameter numbers. - */ -NCURSES_EXPORT(int) -_nc_tparm_analyze(const char *string, char *p_is_s[NUM_PARM], int *popcount) -{ - size_t len2; - int i; - int lastpop = -1; - int len; - int number = 0; - const char *cp = string; - static char dummy[] = ""; - - if (cp == 0) - return 0; - - if ((len2 = strlen(cp)) > TPS(fmt_size)) { - TPS(fmt_size) = len2 + TPS(fmt_size) + 2; - TPS(fmt_buff) = typeRealloc(char, TPS(fmt_size), TPS(fmt_buff)); - if (TPS(fmt_buff) == 0) - return 0; - } - - memset(p_is_s, 0, sizeof(p_is_s[0]) * NUM_PARM); - *popcount = 0; - - while ((cp - string) < (int) len2) { - if (*cp == '%') { - cp++; - cp = parse_format(cp, TPS(fmt_buff), &len); - switch (*cp) { - default: - break; - - case 'd': /* FALLTHRU */ - case 'o': /* FALLTHRU */ - case 'x': /* FALLTHRU */ - case 'X': /* FALLTHRU */ - case 'c': /* FALLTHRU */ - if (lastpop <= 0) - number++; - lastpop = -1; - break; - - case 'l': - case 's': - if (lastpop > 0) - p_is_s[lastpop - 1] = dummy; - ++number; - break; - - case 'p': - cp++; - i = (UChar(*cp) - '0'); - if (i >= 0 && i <= NUM_PARM) { - lastpop = i; - if (lastpop > *popcount) - *popcount = lastpop; - } - break; - - case 'P': - ++number; - ++cp; - break; - - case 'g': - cp++; - break; - - case S_QUOTE: - cp += 2; - lastpop = -1; - break; - - case L_BRACE: - cp++; - while (isdigit(UChar(*cp))) { - cp++; - } - break; - - case '+': - case '-': - case '*': - case '/': - case 'm': - case 'A': - case 'O': - case '&': - case '|': - case '^': - case '=': - case '<': - case '>': - lastpop = -1; - number += 2; - break; - - case '!': - case '~': - lastpop = -1; - ++number; - break; - - case 'i': - /* will add 1 to first (usually two) parameters */ - break; - } - } - if (*cp != '\0') - cp++; - } - - if (number > NUM_PARM) - number = NUM_PARM; - return number; -} - -static NCURSES_INLINE char * -tparam_internal(bool use_TPARM_ARG, const char *string, va_list ap) -{ - char *p_is_s[NUM_PARM]; - TPARM_ARG param[NUM_PARM]; - int popcount = 0; - int number; - int num_args; - int len; - int level; - int x, y; - int i; - const char *cp = string; - size_t len2; - - if (cp == NULL) - return NULL; - - TPS(out_used) = 0; - len2 = strlen(cp); - - /* - * Find the highest parameter-number referred to in the format string. - * Use this value to limit the number of arguments copied from the - * variable-length argument list. - */ - number = _nc_tparm_analyze(cp, p_is_s, &popcount); - if (TPS(fmt_buff) == 0) - return NULL; - - if (number > NUM_PARM) - number = NUM_PARM; - if (popcount > NUM_PARM) - popcount = NUM_PARM; - num_args = max(popcount, number); - - for (i = 0; i < num_args; i++) { - /* - * A few caps (such as plab_norm) have string-valued parms. - * We'll have to assume that the caller knows the difference, since - * a char* and an int may not be the same size on the stack. The - * normal prototype for this uses 9 long's, which is consistent with - * our va_arg() usage. - */ - if (p_is_s[i] != 0) { - p_is_s[i] = va_arg(ap, char *); - param[i] = 0; - } else if (use_TPARM_ARG) { - param[i] = va_arg(ap, TPARM_ARG); - } else { - param[i] = (TPARM_ARG) va_arg(ap, int); - } - } - - /* - * This is a termcap compatibility hack. If there are no explicit pop - * operations in the string, load the stack in such a way that - * successive pops will grab successive parameters. That will make - * the expansion of (for example) \E[%d;%dH work correctly in termcap - * style, which means tparam() will expand termcap strings OK. - */ - TPS(stack_ptr) = 0; - if (popcount == 0) { - popcount = number; - for (i = number - 1; i >= 0; i--) { - if (p_is_s[i]) - spush(p_is_s[i]); - else - npush((int) param[i]); - } - } -#ifdef TRACE - if (USE_TRACEF(TRACE_CALLS)) { - for (i = 0; i < popcount; i++) { - if (p_is_s[i] != 0) - save_text(", %s", _nc_visbuf(p_is_s[i]), 0); - else - save_number(", %d", (int) param[i], 0); - } - _tracef(T_CALLED("%s(%s%s)"), TPS(tname), _nc_visbuf(cp), TPS(out_buff)); - TPS(out_used) = 0; - _nc_unlock_global(tracef); - } -#endif /* TRACE */ - - while ((cp - string) < (int) len2) { - if (*cp != '%') { - save_char(UChar(*cp)); - } else { - TPS(tparam_base) = cp++; - cp = parse_format(cp, TPS(fmt_buff), &len); - switch (*cp) { - default: - break; - case '%': - save_char('%'); - break; - - case 'd': /* FALLTHRU */ - case 'o': /* FALLTHRU */ - case 'x': /* FALLTHRU */ - case 'X': /* FALLTHRU */ - save_number(TPS(fmt_buff), npop(), len); - break; - - case 'c': /* FALLTHRU */ - save_char(npop()); - break; - - case 'l': - save_number("%d", (int) strlen(spop()), 0); - break; - - case 's': - save_text(TPS(fmt_buff), spop(), len); - break; - - case 'p': - cp++; - i = (UChar(*cp) - '1'); - if (i >= 0 && i < NUM_PARM) { - if (p_is_s[i]) - spush(p_is_s[i]); - else - npush((int) param[i]); - } - break; - - case 'P': - cp++; - if (isUPPER(*cp)) { - i = (UChar(*cp) - 'A'); - TPS(static_vars)[i] = npop(); - } else if (isLOWER(*cp)) { - i = (UChar(*cp) - 'a'); - TPS(dynamic_var)[i] = npop(); - } - break; - - case 'g': - cp++; - if (isUPPER(*cp)) { - i = (UChar(*cp) - 'A'); - npush(TPS(static_vars)[i]); - } else if (isLOWER(*cp)) { - i = (UChar(*cp) - 'a'); - npush(TPS(dynamic_var)[i]); - } - break; - - case S_QUOTE: - cp++; - npush(UChar(*cp)); - cp++; - break; - - case L_BRACE: - number = 0; - cp++; - while (isdigit(UChar(*cp))) { - number = (number * 10) + (UChar(*cp) - '0'); - cp++; - } - npush(number); - break; - - case '+': - npush(npop() + npop()); - break; - - case '-': - y = npop(); - x = npop(); - npush(x - y); - break; - - case '*': - npush(npop() * npop()); - break; - - case '/': - y = npop(); - x = npop(); - npush(y ? (x / y) : 0); - break; - - case 'm': - y = npop(); - x = npop(); - npush(y ? (x % y) : 0); - break; - - case 'A': - npush(npop() && npop()); - break; - - case 'O': - npush(npop() || npop()); - break; - - case '&': - npush(npop() & npop()); - break; - - case '|': - npush(npop() | npop()); - break; - - case '^': - npush(npop() ^ npop()); - break; - - case '=': - y = npop(); - x = npop(); - npush(x == y); - break; - - case '<': - y = npop(); - x = npop(); - npush(x < y); - break; - - case '>': - y = npop(); - x = npop(); - npush(x > y); - break; - - case '!': - npush(!npop()); - break; - - case '~': - npush(~npop()); - break; - - case 'i': - if (p_is_s[0] == 0) - param[0]++; - if (p_is_s[1] == 0) - param[1]++; - break; - - case '?': - break; - - case 't': - x = npop(); - if (!x) { - /* scan forward for %e or %; at level zero */ - cp++; - level = 0; - while (*cp) { - if (*cp == '%') { - cp++; - if (*cp == '?') - level++; - else if (*cp == ';') { - if (level > 0) - level--; - else - break; - } else if (*cp == 'e' && level == 0) - break; - } - - if (*cp) - cp++; - } - } - break; - - case 'e': - /* scan forward for a %; at level zero */ - cp++; - level = 0; - while (*cp) { - if (*cp == '%') { - cp++; - if (*cp == '?') - level++; - else if (*cp == ';') { - if (level > 0) - level--; - else - break; - } - } - - if (*cp) - cp++; - } - break; - - case ';': - break; - - } /* endswitch (*cp) */ - } /* endelse (*cp == '%') */ - - if (*cp == '\0') - break; - - cp++; - } /* endwhile (*cp) */ - - get_space(1); - TPS(out_buff)[TPS(out_used)] = '\0'; - - T((T_RETURN("%s"), _nc_visbuf(TPS(out_buff)))); - return (TPS(out_buff)); -} - -#if NCURSES_TPARM_VARARGS -#define tparm_varargs tparm -#else -#define tparm_proto tparm -#endif - -NCURSES_EXPORT(char *) -tparm_varargs(NCURSES_CONST char *string,...) -{ - va_list ap; - char *result; - - _nc_tparm_err = 0; - va_start(ap, string); -#ifdef TRACE - TPS(tname) = "tparm"; -#endif /* TRACE */ - result = tparam_internal(TRUE, string, ap); - va_end(ap); - return result; -} - -#if !NCURSES_TPARM_VARARGS -NCURSES_EXPORT(char *) -tparm_proto(NCURSES_CONST char *string, - TPARM_ARG a1, - TPARM_ARG a2, - TPARM_ARG a3, - TPARM_ARG a4, - TPARM_ARG a5, - TPARM_ARG a6, - TPARM_ARG a7, - TPARM_ARG a8, - TPARM_ARG a9) -{ - return tparm_varargs(string, a1, a2, a3, a4, a5, a6, a7, a8, a9); -} -#endif /* NCURSES_TPARM_VARARGS */ - -NCURSES_EXPORT(char *) -tiparm(const char *string,...) -{ - va_list ap; - char *result; - - _nc_tparm_err = 0; - va_start(ap, string); -#ifdef TRACE - TPS(tname) = "tiparm"; -#endif /* TRACE */ - result = tparam_internal(FALSE, string, ap); - va_end(ap); - return result; -} diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_tputs.c b/deps/ncurses-5.9/ncurses/tinfo/lib_tputs.c deleted file mode 100644 index dc70f3e..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_tputs.c +++ /dev/null @@ -1,381 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - * and: Juergen Pfeifer 2009 * - ****************************************************************************/ - -/* - * tputs.c - * delay_output() - * _nc_outch() - * tputs() - * - */ - -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -#include -#include /* ospeed */ -#include - -MODULE_ID("$Id: lib_tputs.c,v 1.81 2010/12/20 00:42:50 tom Exp $") - -NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */ -NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */ - -NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0; /* used by 'tack' program */ - -#if NCURSES_NO_PADDING -NCURSES_EXPORT(void) -_nc_set_no_padding(SCREEN *sp) -{ - bool no_padding = (getenv("NCURSES_NO_PADDING") != 0); - - if (sp) - sp->_no_padding = no_padding; - else - _nc_prescreen._no_padding = no_padding; - - TR(TRACE_CHARPUT | TRACE_MOVE, ("padding will%s be used", - GetNoPadding(sp) ? " not" : "")); -} -#endif - -#if NCURSES_SP_FUNCS -#define SetOutCh(func) if (SP_PARM) SP_PARM->_outch = func; else _nc_prescreen._outch = func -#define GetOutCh() (SP_PARM ? SP_PARM->_outch : _nc_prescreen._outch) -#else -#define SetOutCh(func) static_outch = func -#define GetOutCh() static_outch -static NCURSES_SP_OUTC static_outch = NCURSES_SP_NAME(_nc_outch); -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(delay_output) (NCURSES_SP_DCLx int ms) -{ - T((T_CALLED("delay_output(%p,%d)"), (void *) SP_PARM, ms)); - - if (!HasTInfoTerminal(SP_PARM)) - returnCode(ERR); - - if (no_pad_char) { - NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); - napms(ms); - } else { - NCURSES_SP_OUTC my_outch = GetOutCh(); - register int nullcount; - - nullcount = (ms * _nc_baudrate(ospeed)) / (BAUDBYTE * 1000); - for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--) - my_outch(NCURSES_SP_ARGx PC); - if (my_outch == NCURSES_SP_NAME(_nc_outch)) - NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); - } - - returnCode(OK); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -delay_output(int ms) -{ - return NCURSES_SP_NAME(delay_output) (CURRENT_SCREEN, ms); -} -#endif - -NCURSES_EXPORT(void) -NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_DCL0) -{ - (void) fflush(NC_OUTPUT(SP_PARM)); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(void) -_nc_flush(void) -{ - NCURSES_SP_NAME(_nc_flush) (CURRENT_SCREEN); -} -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_DCLx int ch) -{ - int rc = OK; - - COUNT_OUTCHARS(1); - - if (HasTInfoTerminal(SP_PARM) - && SP_PARM != 0 - && SP_PARM->_cleanup) { - char tmp = (char) ch; - /* - * POSIX says write() is safe in a signal handler, but the - * buffered I/O is not. - */ - if (write(fileno(NC_OUTPUT(SP_PARM)), &tmp, 1) == -1) - rc = ERR; - } else { - if (putc(ch, NC_OUTPUT(SP_PARM)) == EOF) - rc = ERR; - } - return rc; -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -_nc_outch(int ch) -{ - return NCURSES_SP_NAME(_nc_outch) (CURRENT_SCREEN, ch); -} -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(putp) (NCURSES_SP_DCLx const char *string) -{ - return NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - string, 1, NCURSES_SP_NAME(_nc_outch)); -} - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_DCLx - const char *name GCC_UNUSED, - const char *string) -{ - int rc = ERR; - - if (string != 0) { - TPUTS_TRACE(name); - rc = NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx string); - } - return rc; -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -putp(const char *string) -{ - return NCURSES_SP_NAME(putp) (CURRENT_SCREEN, string); -} - -NCURSES_EXPORT(int) -_nc_putp(const char *name, const char *string) -{ - return NCURSES_SP_NAME(_nc_putp) (CURRENT_SCREEN, name, string); -} -#endif - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(tputs) (NCURSES_SP_DCLx - const char *string, - int affcnt, - NCURSES_SP_OUTC outc) -{ - NCURSES_SP_OUTC my_outch = GetOutCh(); - bool always_delay; - bool normal_delay; - int number; -#if BSD_TPUTS - int trailpad; -#endif /* BSD_TPUTS */ - -#ifdef TRACE - char addrbuf[32]; - - if (USE_TRACEF(TRACE_TPUTS)) { - if (outc == NCURSES_SP_NAME(_nc_outch)) - (void) strcpy(addrbuf, "_nc_outch"); - else - (void) sprintf(addrbuf, "%p", outc); - if (_nc_tputs_trace) { - _tracef("tputs(%s = %s, %d, %s) called", _nc_tputs_trace, - _nc_visbuf(string), affcnt, addrbuf); - } else { - _tracef("tputs(%s, %d, %s) called", _nc_visbuf(string), affcnt, addrbuf); - } - TPUTS_TRACE(NULL); - _nc_unlock_global(tracef); - } -#endif /* TRACE */ - - if (SP_PARM != 0 && !HasTInfoTerminal(SP_PARM)) - return ERR; - - if (!VALID_STRING(string)) - return ERR; - - if ( -#if NCURSES_SP_FUNCS - (SP_PARM != 0 && SP_PARM->_term == 0) -#else - cur_term == 0 -#endif - ) { - always_delay = FALSE; - normal_delay = TRUE; - } else { - always_delay = (string == bell) || (string == flash_screen); - normal_delay = - !xon_xoff - && padding_baud_rate -#if NCURSES_NO_PADDING - && !GetNoPadding(SP_PARM) -#endif - && (_nc_baudrate(ospeed) >= padding_baud_rate); - } - -#if BSD_TPUTS - /* - * This ugly kluge deals with the fact that some ancient BSD programs - * (like nethack) actually do the likes of tputs("50") to get delays. - */ - trailpad = 0; - if (isdigit(UChar(*string))) { - while (isdigit(UChar(*string))) { - trailpad = trailpad * 10 + (*string - '0'); - string++; - } - trailpad *= 10; - if (*string == '.') { - string++; - if (isdigit(UChar(*string))) { - trailpad += (*string - '0'); - string++; - } - while (isdigit(UChar(*string))) - string++; - } - - if (*string == '*') { - trailpad *= affcnt; - string++; - } - } -#endif /* BSD_TPUTS */ - - SetOutCh(outc); /* redirect delay_output() */ - while (*string) { - if (*string != '$') - (*outc) (NCURSES_SP_ARGx *string); - else { - string++; - if (*string != '<') { - (*outc) (NCURSES_SP_ARGx '$'); - if (*string) - (*outc) (NCURSES_SP_ARGx *string); - } else { - bool mandatory; - - string++; - if ((!isdigit(UChar(*string)) && *string != '.') - || !strchr(string, '>')) { - (*outc) (NCURSES_SP_ARGx '$'); - (*outc) (NCURSES_SP_ARGx '<'); - continue; - } - - number = 0; - while (isdigit(UChar(*string))) { - number = number * 10 + (*string - '0'); - string++; - } - number *= 10; - if (*string == '.') { - string++; - if (isdigit(UChar(*string))) { - number += (*string - '0'); - string++; - } - while (isdigit(UChar(*string))) - string++; - } - - mandatory = FALSE; - while (*string == '*' || *string == '/') { - if (*string == '*') { - number *= affcnt; - string++; - } else { /* if (*string == '/') */ - mandatory = TRUE; - string++; - } - } - - if (number > 0 - && (always_delay - || normal_delay - || mandatory)) - NCURSES_SP_NAME(delay_output) (NCURSES_SP_ARGx number / 10); - - } /* endelse (*string == '<') */ - } /* endelse (*string == '$') */ - - if (*string == '\0') - break; - - string++; - } - -#if BSD_TPUTS - /* - * Emit any BSD-style prefix padding that we've accumulated now. - */ - if (trailpad > 0 - && (always_delay || normal_delay)) - delay_output(trailpad / 10); -#endif /* BSD_TPUTS */ - - SetOutCh(my_outch); - return OK; -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -_nc_outc_wrapper(SCREEN *sp, int c) -{ - if (0 == sp) { - return (ERR); - } else { - return sp->jump(c); - } -} - -NCURSES_EXPORT(int) -tputs(const char *string, int affcnt, int (*outc) (int)) -{ - SetSafeOutcWrapper(outc); - return NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx string, affcnt, _nc_outc_wrapper); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/make_hash.c b/deps/ncurses-5.9/ncurses/tinfo/make_hash.c deleted file mode 100644 index 15c281d..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/make_hash.c +++ /dev/null @@ -1,294 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * make_hash.c --- build-time program for constructing comp_captab.c - * - */ - -#include - -#include -#include - -#include - -MODULE_ID("$Id: make_hash.c,v 1.3 2010/05/22 18:02:50 tom Exp $") - -/* - * _nc_make_hash_table() - * - * Takes the entries in table[] and hashes them into hash_table[] - * by name. There are CAPTABSIZE entries in table[] and HASHTABSIZE - * slots in hash_table[]. - * - */ - -#undef MODULE_ID -#define MODULE_ID(id) /*nothing */ -#include - -/* - * int hash_function(string) - * - * Computes the hashing function on the given string. - * - * The current hash function is the sum of each consectutive pair - * of characters, taken as two-byte integers, mod HASHTABSIZE. - * - */ - -static int -hash_function(const char *string) -{ - long sum = 0; - - while (*string) { - sum += (long) (*string + (*(string + 1) << 8)); - string++; - } - - return (int) (sum % HASHTABSIZE); -} - -static void -_nc_make_hash_table(struct name_table_entry *table, - HashValue * hash_table) -{ - short i; - int hashvalue; - int collisions = 0; - - for (i = 0; i < HASHTABSIZE; i++) { - hash_table[i] = -1; - } - for (i = 0; i < CAPTABSIZE; i++) { - hashvalue = hash_function(table[i].nte_name); - - if (hash_table[hashvalue] >= 0) - collisions++; - - if (hash_table[hashvalue] != 0) - table[i].nte_link = hash_table[hashvalue]; - hash_table[hashvalue] = i; - } - - printf("/* %d collisions out of %d entries */\n", collisions, CAPTABSIZE); -} - -/* - * This filter reads from standard input a list of tab-delimited columns, - * (e.g., from Caps.filtered) computes the hash-value of a specified column and - * writes the hashed tables to standard output. - * - * By compiling the hash table at build time, we're able to make the entire - * set of terminfo and termcap tables readonly (and also provide some runtime - * performance enhancement). - */ - -#define MAX_COLUMNS BUFSIZ /* this _has_ to be worst-case */ - -static char ** -parse_columns(char *buffer) -{ - static char **list; - - int col = 0; - - if (list == 0 && (list = typeCalloc(char *, MAX_COLUMNS)) == 0) - return (0); - - if (*buffer != '#') { - while (*buffer != '\0') { - char *s; - for (s = buffer; (*s != '\0') && !isspace(UChar(*s)); s++) - /*EMPTY */ ; - if (s != buffer) { - char mark = *s; - *s = '\0'; - if ((s - buffer) > 1 - && (*buffer == '"') - && (s[-1] == '"')) { /* strip the quotes */ - assert(s > buffer + 1); - s[-1] = '\0'; - buffer++; - } - list[col] = buffer; - col++; - if (mark == '\0') - break; - while (*++s && isspace(UChar(*s))) - /*EMPTY */ ; - buffer = s; - } else - break; - } - } - return col ? list : 0; -} - -int -main(int argc, char **argv) -{ - struct name_table_entry *name_table = typeCalloc(struct - name_table_entry, CAPTABSIZE); - HashValue *hash_table = typeCalloc(HashValue, HASHTABSIZE); - const char *root_name = ""; - int column = 0; - int bigstring = 0; - int n; - char buffer[BUFSIZ]; - - static const char *typenames[] = - {"BOOLEAN", "NUMBER", "STRING"}; - - short BoolCount = 0; - short NumCount = 0; - short StrCount = 0; - - /* The first argument is the column-number (starting with 0). - * The second is the root name of the tables to generate. - */ - if (argc <= 3 - || (column = atoi(argv[1])) <= 0 - || (column >= MAX_COLUMNS) - || *(root_name = argv[2]) == 0 - || (bigstring = atoi(argv[3])) < 0 - || name_table == 0 - || hash_table == 0) { - fprintf(stderr, "usage: make_hash column root_name bigstring\n"); - exit(EXIT_FAILURE); - } - - /* - * Read the table into our arrays. - */ - for (n = 0; (n < CAPTABSIZE) && fgets(buffer, BUFSIZ, stdin);) { - char **list, *nlp = strchr(buffer, '\n'); - if (nlp) - *nlp = '\0'; - list = parse_columns(buffer); - if (list == 0) /* blank or comment */ - continue; - name_table[n].nte_link = -1; /* end-of-hash */ - name_table[n].nte_name = strdup(list[column]); - if (!strcmp(list[2], "bool")) { - name_table[n].nte_type = BOOLEAN; - name_table[n].nte_index = BoolCount++; - } else if (!strcmp(list[2], "num")) { - name_table[n].nte_type = NUMBER; - name_table[n].nte_index = NumCount++; - } else if (!strcmp(list[2], "str")) { - name_table[n].nte_type = STRING; - name_table[n].nte_index = StrCount++; - } else { - fprintf(stderr, "Unknown type: %s\n", list[2]); - exit(EXIT_FAILURE); - } - n++; - } - _nc_make_hash_table(name_table, hash_table); - - /* - * Write the compiled tables to standard output - */ - if (bigstring) { - int len = 0; - int nxt; - - printf("static const char %s_names_text[] = \\\n", root_name); - for (n = 0; n < CAPTABSIZE; n++) { - nxt = (int) strlen(name_table[n].nte_name) + 5; - if (nxt + len > 72) { - printf("\\\n"); - len = 0; - } - printf("\"%s\\0\" ", name_table[n].nte_name); - len += nxt; - } - printf(";\n\n"); - - len = 0; - printf("static name_table_data const %s_names_data[] =\n", - root_name); - printf("{\n"); - for (n = 0; n < CAPTABSIZE; n++) { - printf("\t{ %15d,\t%10s,\t%3d, %3d }%c\n", - len, - typenames[name_table[n].nte_type], - name_table[n].nte_index, - name_table[n].nte_link, - n < CAPTABSIZE - 1 ? ',' : ' '); - len += (int) strlen(name_table[n].nte_name) + 1; - } - printf("};\n\n"); - printf("static struct name_table_entry *_nc_%s_table = 0;\n\n", root_name); - } else { - - printf("static struct name_table_entry %s _nc_%s_table[] =\n", - bigstring ? "" : "const", - root_name); - printf("{\n"); - for (n = 0; n < CAPTABSIZE; n++) { - sprintf(buffer, "\"%s\"", - name_table[n].nte_name); - printf("\t{ %15s,\t%10s,\t%3d, %3d }%c\n", - buffer, - typenames[name_table[n].nte_type], - name_table[n].nte_index, - name_table[n].nte_link, - n < CAPTABSIZE - 1 ? ',' : ' '); - } - printf("};\n\n"); - } - - printf("static const HashValue _nc_%s_hash_table[%d] =\n", - root_name, - HASHTABSIZE + 1); - printf("{\n"); - for (n = 0; n < HASHTABSIZE; n++) { - printf("\t%3d,\n", hash_table[n]); - } - printf("\t0\t/* base-of-table */\n"); - printf("};\n\n"); - - printf("#if (BOOLCOUNT!=%d)||(NUMCOUNT!=%d)||(STRCOUNT!=%d)\n", - BoolCount, NumCount, StrCount); - printf("#error\t--> term.h and comp_captab.c disagree about the <--\n"); - printf("#error\t--> numbers of booleans, numbers and/or strings <--\n"); - printf("#endif\n\n"); - - free(hash_table); - return EXIT_SUCCESS; -} diff --git a/deps/ncurses-5.9/ncurses/tinfo/parse_entry.c b/deps/ncurses-5.9/ncurses/tinfo/parse_entry.c deleted file mode 100644 index ddbc252..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/parse_entry.c +++ /dev/null @@ -1,998 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * parse_entry.c -- compile one terminfo or termcap entry - * - * Get an exact in-core representation of an entry. Don't - * try to resolve use or tc capabilities, that is someone - * else's job. Depends on the lexical analyzer to get tokens - * from the input stream. - */ - -#define __INTERNAL_CAPS_VISIBLE -#include - -#include -#include - -MODULE_ID("$Id: parse_entry.c,v 1.75 2010/05/01 19:35:09 tom Exp $") - -#ifdef LINT -static short const parametrized[] = -{0}; -#else -#include -#endif - -static void postprocess_termcap(TERMTYPE *, bool); -static void postprocess_terminfo(TERMTYPE *); -static struct name_table_entry const *lookup_fullname(const char *name); - -#if NCURSES_XNAMES - -static struct name_table_entry const * -_nc_extend_names(ENTRY * entryp, char *name, int token_type) -{ - static struct name_table_entry temp; - TERMTYPE *tp = &(entryp->tterm); - unsigned offset = 0; - unsigned actual; - unsigned tindex; - unsigned first, last, n; - bool found; - - switch (token_type) { - case BOOLEAN: - first = 0; - last = tp->ext_Booleans; - offset = tp->ext_Booleans; - tindex = tp->num_Booleans; - break; - case NUMBER: - first = tp->ext_Booleans; - last = tp->ext_Numbers + first; - offset = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); - tindex = tp->num_Numbers; - break; - case STRING: - first = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); - last = tp->ext_Strings + first; - offset = (unsigned) (tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings); - tindex = tp->num_Strings; - break; - case CANCEL: - actual = NUM_EXT_NAMES(tp); - for (n = 0; n < actual; n++) { - if (!strcmp(name, tp->ext_Names[n])) { - if (n > (unsigned) (tp->ext_Booleans + tp->ext_Numbers)) { - token_type = STRING; - } else if (n > tp->ext_Booleans) { - token_type = NUMBER; - } else { - token_type = BOOLEAN; - } - return _nc_extend_names(entryp, name, token_type); - } - } - /* Well, we are given a cancel for a name that we don't recognize */ - return _nc_extend_names(entryp, name, STRING); - default: - return 0; - } - - /* Adjust the 'offset' (insertion-point) to keep the lists of extended - * names sorted. - */ - for (n = first, found = FALSE; n < last; n++) { - int cmp = strcmp(tp->ext_Names[n], name); - if (cmp == 0) - found = TRUE; - if (cmp >= 0) { - offset = n; - tindex = n - first; - switch (token_type) { - case BOOLEAN: - tindex += BOOLCOUNT; - break; - case NUMBER: - tindex += NUMCOUNT; - break; - case STRING: - tindex += STRCOUNT; - break; - } - break; - } - } - -#define for_each_value(max) \ - for (last = (unsigned) (max - 1); last > tindex; last--) - - if (!found) { - switch (token_type) { - case BOOLEAN: - tp->ext_Booleans++; - tp->num_Booleans++; - tp->Booleans = typeRealloc(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans); - for_each_value(tp->num_Booleans) - tp->Booleans[last] = tp->Booleans[last - 1]; - break; - case NUMBER: - tp->ext_Numbers++; - tp->num_Numbers++; - tp->Numbers = typeRealloc(short, tp->num_Numbers, tp->Numbers); - for_each_value(tp->num_Numbers) - tp->Numbers[last] = tp->Numbers[last - 1]; - break; - case STRING: - tp->ext_Strings++; - tp->num_Strings++; - tp->Strings = typeRealloc(char *, tp->num_Strings, tp->Strings); - for_each_value(tp->num_Strings) - tp->Strings[last] = tp->Strings[last - 1]; - break; - } - actual = NUM_EXT_NAMES(tp); - tp->ext_Names = typeRealloc(char *, actual, tp->ext_Names); - while (--actual > offset) - tp->ext_Names[actual] = tp->ext_Names[actual - 1]; - tp->ext_Names[offset] = _nc_save_str(name); - } - - temp.nte_name = tp->ext_Names[offset]; - temp.nte_type = token_type; - temp.nte_index = (short) tindex; - temp.nte_link = -1; - - return &temp; -} -#endif /* NCURSES_XNAMES */ - -/* - * int - * _nc_parse_entry(entry, literal, silent) - * - * Compile one entry. Doesn't try to resolve use or tc capabilities. - * - * found-forward-use = FALSE - * re-initialise internal arrays - * get_token(); - * if the token was not a name in column 1, complain and die - * save names in entry's string table - * while (get_token() is not EOF and not NAMES) - * check for existence and type-correctness - * enter cap into structure - * if STRING - * save string in entry's string table - * push back token - */ - -#define BAD_TC_USAGE if (!bad_tc_usage) \ - { bad_tc_usage = TRUE; \ - _nc_warning("Legacy termcap allows only a trailing tc= clause"); } - -NCURSES_EXPORT(int) -_nc_parse_entry(struct entry *entryp, int literal, bool silent) -{ - int token_type; - struct name_table_entry const *entry_ptr; - char *ptr, *base; - bool bad_tc_usage = FALSE; - - token_type = _nc_get_token(silent); - - if (token_type == EOF) - return (EOF); - if (token_type != NAMES) - _nc_err_abort("Entry does not start with terminal names in column one"); - - _nc_init_entry(&entryp->tterm); - - entryp->cstart = _nc_comment_start; - entryp->cend = _nc_comment_end; - entryp->startline = _nc_start_line; - DEBUG(2, ("Comment range is %ld to %ld", entryp->cstart, entryp->cend)); - - /* - * Strip off the 2-character termcap name, if present. Originally termcap - * used that as an indexing aid. We can retain 2-character terminfo names, - * but note that they would be lost if we translate to/from termcap. This - * feature is supposedly obsolete since "newer" BSD implementations do not - * use it; however our reference for this feature is SunOS 4.x, which - * implemented it. Note that the resulting terminal type was never the - * 2-character name, but was instead the first alias after that. - */ - ptr = _nc_curr_token.tk_name; - if (_nc_syntax == SYN_TERMCAP -#if NCURSES_XNAMES - && !_nc_user_definable -#endif - ) { - if (ptr[2] == '|') { - ptr += 3; - _nc_curr_token.tk_name[2] = '\0'; - } - } - - entryp->tterm.str_table = entryp->tterm.term_names = _nc_save_str(ptr); - - if (entryp->tterm.str_table == 0) - return (ERR); - - DEBUG(1, ("Starting '%s'", ptr)); - - /* - * We do this because the one-token lookahead in the parse loop - * results in the terminal type getting prematurely set to correspond - * to that of the next entry. - */ - _nc_set_type(_nc_first_name(entryp->tterm.term_names)); - - /* check for overly-long names and aliases */ - for (base = entryp->tterm.term_names; (ptr = strchr(base, '|')) != 0; - base = ptr + 1) { - if (ptr - base > MAX_ALIAS) { - _nc_warning("%s `%.*s' may be too long", - (base == entryp->tterm.term_names) - ? "primary name" - : "alias", - (int) (ptr - base), base); - } - } - - entryp->nuses = 0; - - for (token_type = _nc_get_token(silent); - token_type != EOF && token_type != NAMES; - token_type = _nc_get_token(silent)) { - bool is_use = (strcmp(_nc_curr_token.tk_name, "use") == 0); - bool is_tc = !is_use && (strcmp(_nc_curr_token.tk_name, "tc") == 0); - if (is_use || is_tc) { - entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring); - entryp->uses[entryp->nuses].line = _nc_curr_line; - entryp->nuses++; - if (entryp->nuses > 1 && is_tc) { - BAD_TC_USAGE - } - } else { - /* normal token lookup */ - entry_ptr = _nc_find_entry(_nc_curr_token.tk_name, - _nc_get_hash_table(_nc_syntax)); - - /* - * Our kluge to handle aliasing. The reason it's done - * this ugly way, with a linear search, is so the hashing - * machinery doesn't have to be made really complicated - * (also we get better warnings this way). No point in - * making this case fast, aliased caps aren't common now - * and will get rarer. - */ - if (entry_ptr == NOTFOUND) { - const struct alias *ap; - - if (_nc_syntax == SYN_TERMCAP) { - if (entryp->nuses != 0) { - BAD_TC_USAGE - } - for (ap = _nc_get_alias_table(TRUE); ap->from; ap++) - if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) { - if (ap->to == (char *) 0) { - _nc_warning("%s (%s termcap extension) ignored", - ap->from, ap->source); - goto nexttok; - } - - entry_ptr = _nc_find_entry(ap->to, - _nc_get_hash_table(TRUE)); - if (entry_ptr && !silent) - _nc_warning("%s (%s termcap extension) aliased to %s", - ap->from, ap->source, ap->to); - break; - } - } else { /* if (_nc_syntax == SYN_TERMINFO) */ - for (ap = _nc_get_alias_table(FALSE); ap->from; ap++) - if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) { - if (ap->to == (char *) 0) { - _nc_warning("%s (%s terminfo extension) ignored", - ap->from, ap->source); - goto nexttok; - } - - entry_ptr = _nc_find_entry(ap->to, - _nc_get_hash_table(FALSE)); - if (entry_ptr && !silent) - _nc_warning("%s (%s terminfo extension) aliased to %s", - ap->from, ap->source, ap->to); - break; - } - - if (entry_ptr == NOTFOUND) { - entry_ptr = lookup_fullname(_nc_curr_token.tk_name); - } - } - } -#if NCURSES_XNAMES - /* - * If we have extended-names active, we will automatically - * define a name based on its context. - */ - if (entry_ptr == NOTFOUND - && _nc_user_definable - && (entry_ptr = _nc_extend_names(entryp, - _nc_curr_token.tk_name, - token_type)) != 0) { - if (_nc_tracing >= DEBUG_LEVEL(1)) - _nc_warning("extended capability '%s'", _nc_curr_token.tk_name); - } -#endif /* NCURSES_XNAMES */ - - /* can't find this cap name, not even as an alias */ - if (entry_ptr == NOTFOUND) { - if (!silent) - _nc_warning("unknown capability '%s'", - _nc_curr_token.tk_name); - continue; - } - - /* deal with bad type/value combinations. */ - if (token_type != CANCEL && entry_ptr->nte_type != token_type) { - /* - * Nasty special cases here handle situations in which type - * information can resolve name clashes. Normal lookup - * finds the last instance in the capability table of a - * given name, regardless of type. find_type_entry looks - * for a first matching instance with given type. So as - * long as all ambiguous names occur in pairs of distinct - * type, this will do the job. - */ - - if (token_type == NUMBER - && !strcmp("ma", _nc_curr_token.tk_name)) { - /* tell max_attributes from arrow_key_map */ - entry_ptr = _nc_find_type_entry("ma", NUMBER, - _nc_syntax != 0); - assert(entry_ptr != 0); - - } else if (token_type == STRING - && !strcmp("MT", _nc_curr_token.tk_name)) { - /* map terminfo's string MT to MT */ - entry_ptr = _nc_find_type_entry("MT", STRING, - _nc_syntax != 0); - assert(entry_ptr != 0); - - } else if (token_type == BOOLEAN - && entry_ptr->nte_type == STRING) { - /* treat strings without following "=" as empty strings */ - token_type = STRING; - } else { - /* we couldn't recover; skip this token */ - if (!silent) { - const char *type_name; - switch (entry_ptr->nte_type) { - case BOOLEAN: - type_name = "boolean"; - break; - case STRING: - type_name = "string"; - break; - case NUMBER: - type_name = "numeric"; - break; - default: - type_name = "unknown"; - break; - } - _nc_warning("wrong type used for %s capability '%s'", - type_name, _nc_curr_token.tk_name); - } - continue; - } - } - - /* now we know that the type/value combination is OK */ - switch (token_type) { - case CANCEL: - switch (entry_ptr->nte_type) { - case BOOLEAN: - entryp->tterm.Booleans[entry_ptr->nte_index] = CANCELLED_BOOLEAN; - break; - - case NUMBER: - entryp->tterm.Numbers[entry_ptr->nte_index] = CANCELLED_NUMERIC; - break; - - case STRING: - entryp->tterm.Strings[entry_ptr->nte_index] = CANCELLED_STRING; - break; - } - break; - - case BOOLEAN: - entryp->tterm.Booleans[entry_ptr->nte_index] = TRUE; - break; - - case NUMBER: - entryp->tterm.Numbers[entry_ptr->nte_index] = - (short) _nc_curr_token.tk_valnumber; - break; - - case STRING: - ptr = _nc_curr_token.tk_valstring; - if (_nc_syntax == SYN_TERMCAP) - ptr = _nc_captoinfo(_nc_curr_token.tk_name, - ptr, - parametrized[entry_ptr->nte_index]); - entryp->tterm.Strings[entry_ptr->nte_index] = _nc_save_str(ptr); - break; - - default: - if (!silent) - _nc_warning("unknown token type"); - _nc_panic_mode((char) ((_nc_syntax == SYN_TERMCAP) ? ':' : ',')); - continue; - } - } /* end else cur_token.name != "use" */ - nexttok: - continue; /* cannot have a label w/o statement */ - } /* endwhile (not EOF and not NAMES) */ - - _nc_push_token(token_type); - _nc_set_type(_nc_first_name(entryp->tterm.term_names)); - - /* - * Try to deduce as much as possible from extension capabilities - * (this includes obsolete BSD capabilities). Sigh...it would be more - * space-efficient to call this after use resolution, but it has - * to be done before entry allocation is wrapped up. - */ - if (!literal) { - if (_nc_syntax == SYN_TERMCAP) { - bool has_base_entry = FALSE; - unsigned i; - - /* - * Don't insert defaults if this is a `+' entry meant only - * for inclusion in other entries (not sure termcap ever - * had these, actually). - */ - if (strchr(entryp->tterm.term_names, '+')) - has_base_entry = TRUE; - else - /* - * Otherwise, look for a base entry that will already - * have picked up defaults via translation. - */ - for (i = 0; i < entryp->nuses; i++) - if (!strchr((char *) entryp->uses[i].name, '+')) - has_base_entry = TRUE; - - postprocess_termcap(&entryp->tterm, has_base_entry); - } else - postprocess_terminfo(&entryp->tterm); - } - _nc_wrap_entry(entryp, FALSE); - - return (OK); -} - -NCURSES_EXPORT(int) -_nc_capcmp(const char *s, const char *t) -/* compare two string capabilities, stripping out padding */ -{ - if (!VALID_STRING(s) && !VALID_STRING(t)) - return (0); - else if (!VALID_STRING(s) || !VALID_STRING(t)) - return (1); - - for (;;) { - if (s[0] == '$' && s[1] == '<') { - for (s += 2;; s++) - if (!(isdigit(UChar(*s)) - || *s == '.' - || *s == '*' - || *s == '/' - || *s == '>')) - break; - } - - if (t[0] == '$' && t[1] == '<') { - for (t += 2;; t++) - if (!(isdigit(UChar(*t)) - || *t == '.' - || *t == '*' - || *t == '/' - || *t == '>')) - break; - } - - /* we've now pushed s and t past any padding they were pointing at */ - - if (*s == '\0' && *t == '\0') - return (0); - - if (*s != *t) - return (*t - *s); - - /* else *s == *t but one is not NUL, so continue */ - s++, t++; - } -} - -static void -append_acs0(string_desc * dst, int code, int src) -{ - if (src != 0) { - char temp[3]; - temp[0] = (char) code; - temp[1] = (char) src; - temp[2] = 0; - _nc_safe_strcat(dst, temp); - } -} - -static void -append_acs(string_desc * dst, int code, char *src) -{ - if (src != 0 && strlen(src) == 1) { - append_acs0(dst, code, *src); - } -} - -/* - * The ko capability, if present, consists of a comma-separated capability - * list. For each capability, we may assume there is a keycap that sends the - * string which is the value of that capability. - */ -typedef struct { - const char *from; - const char *to; -} assoc; -static assoc const ko_xlate[] = -{ - {"al", "kil1"}, /* insert line key -> KEY_IL */ - {"bt", "kcbt"}, /* back tab -> KEY_BTAB */ - {"cd", "ked"}, /* clear-to-eos key -> KEY_EOL */ - {"ce", "kel"}, /* clear-to-eol key -> KEY_EOS */ - {"cl", "kclr"}, /* clear key -> KEY_CLEAR */ - {"ct", "tbc"}, /* clear all tabs -> KEY_CATAB */ - {"dc", "kdch1"}, /* delete char -> KEY_DC */ - {"dl", "kdl1"}, /* delete line -> KEY_DL */ - {"do", "kcud1"}, /* down key -> KEY_DOWN */ - {"ei", "krmir"}, /* exit insert key -> KEY_EIC */ - {"ho", "khome"}, /* home key -> KEY_HOME */ - {"ic", "kich1"}, /* insert char key -> KEY_IC */ - {"im", "kIC"}, /* insert-mode key -> KEY_SIC */ - {"le", "kcub1"}, /* le key -> KEY_LEFT */ - {"nd", "kcuf1"}, /* nd key -> KEY_RIGHT */ - {"nl", "kent"}, /* new line key -> KEY_ENTER */ - {"st", "khts"}, /* set-tab key -> KEY_STAB */ - {"ta", CANCELLED_STRING}, - {"up", "kcuu1"}, /* up-arrow key -> KEY_UP */ - {(char *) 0, (char *) 0}, -}; - -/* - * This routine fills in string caps that either had defaults under - * termcap or can be manufactured from obsolete termcap capabilities. - * It was lifted from Ross Ridge's mytinfo package. - */ - -static const char C_CR[] = "\r"; -static const char C_LF[] = "\n"; -static const char C_BS[] = "\b"; -static const char C_HT[] = "\t"; - -/* - * Note that WANTED and PRESENT are not simple inverses! If a capability - * has been explicitly cancelled, it's not considered WANTED. - */ -#define WANTED(s) ((s) == ABSENT_STRING) -#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING)) - -/* - * This bit of legerdemain turns all the terminfo variable names into - * references to locations in the arrays Booleans, Numbers, and Strings --- - * precisely what's needed. - */ - -#undef CUR -#define CUR tp-> - -static void -postprocess_termcap(TERMTYPE *tp, bool has_base) -{ - char buf[MAX_LINE * 2 + 2]; - string_desc result; - - /* - * TERMCAP DEFAULTS AND OBSOLETE-CAPABILITY TRANSLATIONS - * - * This first part of the code is the functional inverse of the - * fragment in capdefaults.c. - * ---------------------------------------------------------------------- - */ - - /* if there was a tc entry, assume we picked up defaults via that */ - if (!has_base) { - if (WANTED(init_3string) && termcap_init2) - init_3string = _nc_save_str(termcap_init2); - - if (WANTED(reset_2string) && termcap_reset) - reset_2string = _nc_save_str(termcap_reset); - - if (WANTED(carriage_return)) { - if (carriage_return_delay > 0) { - sprintf(buf, "%s$<%d>", C_CR, carriage_return_delay); - carriage_return = _nc_save_str(buf); - } else - carriage_return = _nc_save_str(C_CR); - } - if (WANTED(cursor_left)) { - if (backspace_delay > 0) { - sprintf(buf, "%s$<%d>", C_BS, backspace_delay); - cursor_left = _nc_save_str(buf); - } else if (backspaces_with_bs == 1) - cursor_left = _nc_save_str(C_BS); - else if (PRESENT(backspace_if_not_bs)) - cursor_left = backspace_if_not_bs; - } - /* vi doesn't use "do", but it does seem to use nl (or '\n') instead */ - if (WANTED(cursor_down)) { - if (PRESENT(linefeed_if_not_lf)) - cursor_down = linefeed_if_not_lf; - else if (linefeed_is_newline != 1) { - if (new_line_delay > 0) { - sprintf(buf, "%s$<%d>", C_LF, new_line_delay); - cursor_down = _nc_save_str(buf); - } else - cursor_down = _nc_save_str(C_LF); - } - } - if (WANTED(scroll_forward) && crt_no_scrolling != 1) { - if (PRESENT(linefeed_if_not_lf)) - cursor_down = linefeed_if_not_lf; - else if (linefeed_is_newline != 1) { - if (new_line_delay > 0) { - sprintf(buf, "%s$<%d>", C_LF, new_line_delay); - scroll_forward = _nc_save_str(buf); - } else - scroll_forward = _nc_save_str(C_LF); - } - } - if (WANTED(newline)) { - if (linefeed_is_newline == 1) { - if (new_line_delay > 0) { - sprintf(buf, "%s$<%d>", C_LF, new_line_delay); - newline = _nc_save_str(buf); - } else - newline = _nc_save_str(C_LF); - } else if (PRESENT(carriage_return) && PRESENT(scroll_forward)) { - _nc_str_init(&result, buf, sizeof(buf)); - if (_nc_safe_strcat(&result, carriage_return) - && _nc_safe_strcat(&result, scroll_forward)) - newline = _nc_save_str(buf); - } else if (PRESENT(carriage_return) && PRESENT(cursor_down)) { - _nc_str_init(&result, buf, sizeof(buf)); - if (_nc_safe_strcat(&result, carriage_return) - && _nc_safe_strcat(&result, cursor_down)) - newline = _nc_save_str(buf); - } - } - } - - /* - * Inverse of capdefaults.c code ends here. - * ---------------------------------------------------------------------- - * - * TERMCAP-TO TERMINFO MAPPINGS FOR SOURCE TRANSLATION - * - * These translations will *not* be inverted by tgetent(). - */ - - if (!has_base) { - /* - * We wait until now to decide if we've got a working cr because even - * one that doesn't work can be used for newline. Unfortunately the - * space allocated for it is wasted. - */ - if (return_does_clr_eol == 1 || no_correctly_working_cr == 1) - carriage_return = ABSENT_STRING; - - /* - * Supposedly most termcap entries have ta now and '\t' is no longer a - * default, but it doesn't seem to be true... - */ - if (WANTED(tab)) { - if (horizontal_tab_delay > 0) { - sprintf(buf, "%s$<%d>", C_HT, horizontal_tab_delay); - tab = _nc_save_str(buf); - } else - tab = _nc_save_str(C_HT); - } - if (init_tabs == ABSENT_NUMERIC && has_hardware_tabs == TRUE) - init_tabs = 8; - - /* - * Assume we can beep with ^G unless we're given bl@. - */ - if (WANTED(bell)) - bell = _nc_save_str("\007"); - } - - /* - * Translate the old termcap :pt: capability to it#8 + ht=\t - */ - if (has_hardware_tabs == TRUE) { - if (init_tabs != 8 && init_tabs != ABSENT_NUMERIC) - _nc_warning("hardware tabs with a width other than 8: %d", init_tabs); - else { - if (tab && _nc_capcmp(tab, C_HT)) - _nc_warning("hardware tabs with a non-^I tab string %s", - _nc_visbuf(tab)); - else { - if (WANTED(tab)) - tab = _nc_save_str(C_HT); - init_tabs = 8; - } - } - } - /* - * Now translate the ko capability, if there is one. This - * isn't from mytinfo... - */ - if (PRESENT(other_non_function_keys)) { - char *base; - char *bp, *cp, *dp; - struct name_table_entry const *from_ptr; - struct name_table_entry const *to_ptr; - assoc const *ap; - char buf2[MAX_TERMINFO_LENGTH]; - bool foundim; - - /* we're going to use this for a special case later */ - dp = strchr(other_non_function_keys, 'i'); - foundim = (dp != 0) && (dp[1] == 'm'); - - /* look at each comma-separated capability in the ko string... */ - for (base = other_non_function_keys; - (cp = strchr(base, ',')) != 0; - base = cp + 1) { - size_t len = (unsigned) (cp - base); - - for (ap = ko_xlate; ap->from; ap++) { - if (len == strlen(ap->from) - && strncmp(ap->from, base, len) == 0) - break; - } - if (!(ap->from && ap->to)) { - _nc_warning("unknown capability `%.*s' in ko string", - (int) len, base); - continue; - } else if (ap->to == CANCELLED_STRING) /* ignore it */ - continue; - - /* now we know we found a match in ko_table, so... */ - - from_ptr = _nc_find_entry(ap->from, _nc_get_hash_table(TRUE)); - to_ptr = _nc_find_entry(ap->to, _nc_get_hash_table(FALSE)); - - if (!from_ptr || !to_ptr) /* should never happen! */ - _nc_err_abort("ko translation table is invalid, I give up"); - - if (WANTED(tp->Strings[from_ptr->nte_index])) { - _nc_warning("no value for ko capability %s", ap->from); - continue; - } - - if (tp->Strings[to_ptr->nte_index]) { - /* There's no point in warning about it if it's the same - * string; that's just an inefficiency. - */ - if (strcmp( - tp->Strings[from_ptr->nte_index], - tp->Strings[to_ptr->nte_index]) != 0) - _nc_warning("%s (%s) already has an explicit value %s, ignoring ko", - ap->to, ap->from, - _nc_visbuf(tp->Strings[to_ptr->nte_index])); - continue; - } - - /* - * The magic moment -- copy the mapped key string over, - * stripping out padding. - */ - for (dp = buf2, bp = tp->Strings[from_ptr->nte_index]; *bp; bp++) { - if (bp[0] == '$' && bp[1] == '<') { - while (*bp && *bp != '>') { - ++bp; - } - } else - *dp++ = *bp; - } - *dp = '\0'; - - tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2); - } - - /* - * Note: ko=im and ko=ic both want to grab the `Insert' - * keycap. There's a kich1 but no ksmir, so the ic capability - * got mapped to kich1 and im to kIC to avoid a collision. - * If the description has im but not ic, hack kIC back to kich1. - */ - if (foundim && WANTED(key_ic) && key_sic) { - key_ic = key_sic; - key_sic = ABSENT_STRING; - } - } - - if (!has_base) { - if (!hard_copy) { - if (WANTED(key_backspace)) - key_backspace = _nc_save_str(C_BS); - if (WANTED(key_left)) - key_left = _nc_save_str(C_BS); - if (WANTED(key_down)) - key_down = _nc_save_str(C_LF); - } - } - - /* - * Translate XENIX forms characters. - */ - if (PRESENT(acs_ulcorner) || - PRESENT(acs_llcorner) || - PRESENT(acs_urcorner) || - PRESENT(acs_lrcorner) || - PRESENT(acs_ltee) || - PRESENT(acs_rtee) || - PRESENT(acs_btee) || - PRESENT(acs_ttee) || - PRESENT(acs_hline) || - PRESENT(acs_vline) || - PRESENT(acs_plus)) { - char buf2[MAX_TERMCAP_LENGTH]; - - _nc_str_init(&result, buf2, sizeof(buf2)); - _nc_safe_strcat(&result, acs_chars); - - append_acs(&result, 'j', acs_lrcorner); - append_acs(&result, 'k', acs_urcorner); - append_acs(&result, 'l', acs_ulcorner); - append_acs(&result, 'm', acs_llcorner); - append_acs(&result, 'n', acs_plus); - append_acs(&result, 'q', acs_hline); - append_acs(&result, 't', acs_ltee); - append_acs(&result, 'u', acs_rtee); - append_acs(&result, 'v', acs_btee); - append_acs(&result, 'w', acs_ttee); - append_acs(&result, 'x', acs_vline); - - if (buf2[0]) { - acs_chars = _nc_save_str(buf2); - _nc_warning("acsc string synthesized from XENIX capabilities"); - } - } else if (acs_chars == 0 - && enter_alt_charset_mode != 0 - && exit_alt_charset_mode != 0) { - acs_chars = _nc_save_str(VT_ACSC); - } -} - -static void -postprocess_terminfo(TERMTYPE *tp) -{ - /* - * TERMINFO-TO-TERMINFO MAPPINGS FOR SOURCE TRANSLATION - * ---------------------------------------------------------------------- - */ - - /* - * Translate AIX forms characters. - */ - if (PRESENT(box_chars_1)) { - char buf2[MAX_TERMCAP_LENGTH]; - string_desc result; - - _nc_str_init(&result, buf2, sizeof(buf2)); - _nc_safe_strcat(&result, acs_chars); - - append_acs0(&result, 'l', box_chars_1[0]); /* ACS_ULCORNER */ - append_acs0(&result, 'q', box_chars_1[1]); /* ACS_HLINE */ - append_acs0(&result, 'k', box_chars_1[2]); /* ACS_URCORNER */ - append_acs0(&result, 'x', box_chars_1[3]); /* ACS_VLINE */ - append_acs0(&result, 'j', box_chars_1[4]); /* ACS_LRCORNER */ - append_acs0(&result, 'm', box_chars_1[5]); /* ACS_LLCORNER */ - append_acs0(&result, 'w', box_chars_1[6]); /* ACS_TTEE */ - append_acs0(&result, 'u', box_chars_1[7]); /* ACS_RTEE */ - append_acs0(&result, 'v', box_chars_1[8]); /* ACS_BTEE */ - append_acs0(&result, 't', box_chars_1[9]); /* ACS_LTEE */ - append_acs0(&result, 'n', box_chars_1[10]); /* ACS_PLUS */ - - if (buf2[0]) { - acs_chars = _nc_save_str(buf2); - _nc_warning("acsc string synthesized from AIX capabilities"); - box_chars_1 = ABSENT_STRING; - } - } - /* - * ---------------------------------------------------------------------- - */ -} - -/* - * Do a linear search through the terminfo tables to find a given full-name. - * We don't expect to do this often, so there's no hashing function. - * - * In effect, this scans through the 3 lists of full-names, and looks them - * up in _nc_info_table, which is organized so that the nte_index fields are - * sorted, but the nte_type fields are not necessarily grouped together. - */ -static struct name_table_entry const * -lookup_fullname(const char *find) -{ - int state = -1; - - for (;;) { - int count = 0; - NCURSES_CONST char *const *names; - - switch (++state) { - case BOOLEAN: - names = boolfnames; - break; - case STRING: - names = strfnames; - break; - case NUMBER: - names = numfnames; - break; - default: - return NOTFOUND; - } - - for (count = 0; names[count] != 0; count++) { - if (!strcmp(names[count], find)) { - struct name_table_entry const *entry_ptr = _nc_get_table(FALSE); - while (entry_ptr->nte_type != state - || entry_ptr->nte_index != count) - entry_ptr++; - return entry_ptr; - } - } - } -} - -/* parse_entry.c ends here */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/read_entry.c b/deps/ncurses-5.9/ncurses/tinfo/read_entry.c deleted file mode 100644 index e38b9cb..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/read_entry.c +++ /dev/null @@ -1,545 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * read_entry.c -- Routine for reading in a compiled terminfo file - */ - -#include -#include - -#include - -MODULE_ID("$Id: read_entry.c,v 1.108 2011/02/26 15:36:06 tom Exp $") - -#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts)) - -#if USE_DATABASE -static void -convert_shorts(char *buf, short *Numbers, int count) -{ - int i; - for (i = 0; i < count; i++) { - if (IS_NEG1(buf + 2 * i)) - Numbers[i] = ABSENT_NUMERIC; - else if (IS_NEG2(buf + 2 * i)) - Numbers[i] = CANCELLED_NUMERIC; - else - Numbers[i] = (short) LOW_MSB(buf + 2 * i); - TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i])); - } -} - -static void -convert_strings(char *buf, char **Strings, int count, int size, char *table) -{ - int i; - char *p; - - for (i = 0; i < count; i++) { - if (IS_NEG1(buf + 2 * i)) { - Strings[i] = ABSENT_STRING; - } else if (IS_NEG2(buf + 2 * i)) { - Strings[i] = CANCELLED_STRING; - } else if ((int) LOW_MSB(buf + 2 * i) > size) { - Strings[i] = ABSENT_STRING; - } else { - Strings[i] = (LOW_MSB(buf + 2 * i) + table); - TR(TRACE_DATABASE, ("Strings[%d] = %s", i, _nc_visbuf(Strings[i]))); - } - - /* make sure all strings are NUL terminated */ - if (VALID_STRING(Strings[i])) { - for (p = Strings[i]; p <= table + size; p++) - if (*p == '\0') - break; - /* if there is no NUL, ignore the string */ - if (p > table + size) - Strings[i] = ABSENT_STRING; - } - } -} - -static int -fake_read(char *src, int *offset, int limit, char *dst, unsigned want) -{ - int have = (limit - *offset); - - if (have > 0) { - if ((int) want > have) - want = (unsigned) have; - memcpy(dst, src + *offset, want); - *offset += (int) want; - } else { - want = 0; - } - return (int) want; -} - -#define Read(buf, count) fake_read(buffer, &offset, limit, buf, count) - -#define read_shorts(buf, count) \ - (Read(buf, (unsigned) (count)*2) == (int) (count)*2) - -#define even_boundary(value) \ - if ((value) % 2 != 0) Read(buf, 1) - -NCURSES_EXPORT(int) -_nc_read_termtype(TERMTYPE *ptr, char *buffer, int limit) -/* return 1 if read, 0 if not found or garbled */ -{ - int offset = 0; - int name_size, bool_count, num_count, str_count, str_size; - int i; - char buf[MAX_ENTRY_SIZE + 1]; - char *string_table; - unsigned want, have; - - TR(TRACE_DATABASE, ("READ termtype header @%d", offset)); - - memset(ptr, 0, sizeof(*ptr)); - - /* grab the header */ - if (!read_shorts(buf, 6) - || !IS_TIC_MAGIC(buf)) { - return (TGETENT_NO); - } - - name_size = LOW_MSB(buf + 2); - bool_count = LOW_MSB(buf + 4); - num_count = LOW_MSB(buf + 6); - str_count = LOW_MSB(buf + 8); - str_size = LOW_MSB(buf + 10); - - TR(TRACE_DATABASE, - ("TERMTYPE name_size=%d, bool=%d/%d, num=%d/%d str=%d/%d(%d)", - name_size, bool_count, BOOLCOUNT, num_count, NUMCOUNT, - str_count, STRCOUNT, str_size)); - if (name_size < 0 - || bool_count < 0 - || num_count < 0 - || str_count < 0 - || str_size < 0) { - return (TGETENT_NO); - } - - want = (unsigned) (str_size + name_size + 1); - if (str_size) { - /* try to allocate space for the string table */ - if (str_count * 2 >= (int) sizeof(buf) - || (string_table = typeMalloc(char, want)) == 0) { - return (TGETENT_NO); - } - } else { - str_count = 0; - if ((string_table = typeMalloc(char, want)) == 0) { - return (TGETENT_NO); - } - } - - /* grab the name (a null-terminated string) */ - want = min(MAX_NAME_SIZE, (unsigned) name_size); - ptr->str_table = string_table; - ptr->term_names = string_table; - if ((have = (unsigned) Read(ptr->term_names, want)) != want) { - memset(ptr->term_names + have, 0, want - have); - } - ptr->term_names[want] = '\0'; - string_table += (want + 1); - - if (have > MAX_NAME_SIZE) - offset = (int) (have - MAX_NAME_SIZE); - - /* grab the booleans */ - if ((ptr->Booleans = TYPE_CALLOC(NCURSES_SBOOL, - max(BOOLCOUNT, bool_count))) == 0 - || Read(ptr->Booleans, (unsigned) bool_count) < bool_count) { - return (TGETENT_NO); - } - - /* - * If booleans end on an odd byte, skip it. The machine they - * originally wrote terminfo on must have been a 16-bit - * word-oriented machine that would trap out if you tried a - * word access off a 2-byte boundary. - */ - even_boundary(name_size + bool_count); - - /* grab the numbers */ - if ((ptr->Numbers = TYPE_CALLOC(short, max(NUMCOUNT, num_count))) == 0 - || !read_shorts(buf, num_count)) { - return (TGETENT_NO); - } - convert_shorts(buf, ptr->Numbers, num_count); - - if ((ptr->Strings = TYPE_CALLOC(char *, max(STRCOUNT, str_count))) == 0) - return (TGETENT_NO); - - if (str_count) { - /* grab the string offsets */ - if (!read_shorts(buf, str_count)) { - return (TGETENT_NO); - } - /* finally, grab the string table itself */ - if (Read(string_table, (unsigned) str_size) != str_size) - return (TGETENT_NO); - convert_strings(buf, ptr->Strings, str_count, str_size, string_table); - } -#if NCURSES_XNAMES - - ptr->num_Booleans = BOOLCOUNT; - ptr->num_Numbers = NUMCOUNT; - ptr->num_Strings = STRCOUNT; - - /* - * Read extended entries, if any, after the normal end of terminfo data. - */ - even_boundary(str_size); - TR(TRACE_DATABASE, ("READ extended_header @%d", offset)); - if (_nc_user_definable && read_shorts(buf, 5)) { - int ext_bool_count = LOW_MSB(buf + 0); - int ext_num_count = LOW_MSB(buf + 2); - int ext_str_count = LOW_MSB(buf + 4); - int ext_str_size = LOW_MSB(buf + 6); - int ext_str_limit = LOW_MSB(buf + 8); - unsigned need = (unsigned) (ext_bool_count + ext_num_count + ext_str_count); - int base = 0; - - if (need >= sizeof(buf) - || ext_str_size >= (int) sizeof(buf) - || ext_str_limit >= (int) sizeof(buf) - || ext_bool_count < 0 - || ext_num_count < 0 - || ext_str_count < 0 - || ext_str_size < 0 - || ext_str_limit < 0) - return (TGETENT_NO); - - ptr->num_Booleans = UShort(BOOLCOUNT + ext_bool_count); - ptr->num_Numbers = UShort(NUMCOUNT + ext_num_count); - ptr->num_Strings = UShort(STRCOUNT + ext_str_count); - - ptr->Booleans = typeRealloc(NCURSES_SBOOL, ptr->num_Booleans, ptr->Booleans); - ptr->Numbers = typeRealloc(short, ptr->num_Numbers, ptr->Numbers); - ptr->Strings = typeRealloc(char *, ptr->num_Strings, ptr->Strings); - - TR(TRACE_DATABASE, ("extended header is %d/%d/%d(%d:%d)", - ext_bool_count, ext_num_count, ext_str_count, - ext_str_size, ext_str_limit)); - - TR(TRACE_DATABASE, ("READ %d extended-booleans @%d", - ext_bool_count, offset)); - if ((ptr->ext_Booleans = UShort(ext_bool_count)) != 0) { - if (Read(ptr->Booleans + BOOLCOUNT, (unsigned) - ext_bool_count) != ext_bool_count) - return (TGETENT_NO); - } - even_boundary(ext_bool_count); - - TR(TRACE_DATABASE, ("READ %d extended-numbers @%d", - ext_num_count, offset)); - if ((ptr->ext_Numbers = UShort(ext_num_count)) != 0) { - if (!read_shorts(buf, ext_num_count)) - return (TGETENT_NO); - TR(TRACE_DATABASE, ("Before converting extended-numbers")); - convert_shorts(buf, ptr->Numbers + NUMCOUNT, ext_num_count); - } - - TR(TRACE_DATABASE, ("READ extended-offsets @%d", offset)); - if ((ext_str_count || need) - && !read_shorts(buf, ext_str_count + (int) need)) - return (TGETENT_NO); - - TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d", - ext_str_limit, offset)); - - if (ext_str_limit) { - ptr->ext_str_table = typeMalloc(char, (size_t) ext_str_limit); - if (ptr->ext_str_table == 0) - return (TGETENT_NO); - if (Read(ptr->ext_str_table, (unsigned) ext_str_limit) != ext_str_limit) - return (TGETENT_NO); - TR(TRACE_DATABASE, ("first extended-string is %s", _nc_visbuf(ptr->ext_str_table))); - } - - if ((ptr->ext_Strings = UShort(ext_str_count)) != 0) { - TR(TRACE_DATABASE, - ("Before computing extended-string capabilities str_count=%d, ext_str_count=%d", - str_count, ext_str_count)); - convert_strings(buf, ptr->Strings + str_count, ext_str_count, - ext_str_limit, ptr->ext_str_table); - for (i = ext_str_count - 1; i >= 0; i--) { - TR(TRACE_DATABASE, ("MOVE from [%d:%d] %s", - i, i + str_count, - _nc_visbuf(ptr->Strings[i + str_count]))); - ptr->Strings[i + STRCOUNT] = ptr->Strings[i + str_count]; - if (VALID_STRING(ptr->Strings[i + STRCOUNT])) - base += (int) (strlen(ptr->Strings[i + STRCOUNT]) + 1); - TR(TRACE_DATABASE, ("... to [%d] %s", - i + STRCOUNT, - _nc_visbuf(ptr->Strings[i + STRCOUNT]))); - } - } - - if (need) { - if (ext_str_count >= (MAX_ENTRY_SIZE * 2)) - return (TGETENT_NO); - if ((ptr->ext_Names = TYPE_CALLOC(char *, need)) == 0) - return (TGETENT_NO); - TR(TRACE_DATABASE, - ("ext_NAMES starting @%d in extended_strings, first = %s", - base, _nc_visbuf(ptr->ext_str_table + base))); - convert_strings(buf + (2 * ext_str_count), - ptr->ext_Names, - (int) need, - ext_str_limit, ptr->ext_str_table + base); - } - - T(("...done reading terminfo bool %d(%d) num %d(%d) str %d(%d)", - ptr->num_Booleans, ptr->ext_Booleans, - ptr->num_Numbers, ptr->ext_Numbers, - ptr->num_Strings, ptr->ext_Strings)); - - TR(TRACE_DATABASE, ("extend: num_Booleans:%d", ptr->num_Booleans)); - } else -#endif /* NCURSES_XNAMES */ - { - T(("...done reading terminfo bool %d num %d str %d", - bool_count, num_count, str_count)); -#if NCURSES_XNAMES - TR(TRACE_DATABASE, ("normal: num_Booleans:%d", ptr->num_Booleans)); -#endif - } - - for (i = bool_count; i < BOOLCOUNT; i++) - ptr->Booleans[i] = FALSE; - for (i = num_count; i < NUMCOUNT; i++) - ptr->Numbers[i] = ABSENT_NUMERIC; - for (i = str_count; i < STRCOUNT; i++) - ptr->Strings[i] = ABSENT_STRING; - - return (TGETENT_YES); -} - -/* - * int - * _nc_read_file_entry(filename, ptr) - * - * Read the compiled terminfo entry in the given file into the - * structure pointed to by ptr, allocating space for the string - * table. - */ -NCURSES_EXPORT(int) -_nc_read_file_entry(const char *const filename, TERMTYPE *ptr) -/* return 1 if read, 0 if not found or garbled */ -{ - FILE *fp = 0; - int code; - int limit; - char buffer[MAX_ENTRY_SIZE + 1]; - - if (_nc_access(filename, R_OK) < 0 - || (fp = fopen(filename, "rb")) == 0) { - T(("cannot open terminfo %s (errno=%d)", filename, errno)); - code = TGETENT_NO; - } else { - if ((limit = (int) fread(buffer, sizeof(char), sizeof(buffer), fp)) - > 0) { - - T(("read terminfo %s", filename)); - if ((code = _nc_read_termtype(ptr, buffer, limit)) == TGETENT_NO) { - _nc_free_termtype(ptr); - } - } else { - code = TGETENT_NO; - } - fclose(fp); - } - - return (code); -} - -/* - * Build a terminfo pathname and try to read the data. Returns TGETENT_YES on - * success, TGETENT_NO on failure. - */ -static int -_nc_read_tic_entry(char *filename, - unsigned limit, - const char *const path, - const char *name, - TERMTYPE *const tp) -{ - int result = TGETENT_NO; - - /* - * If we are looking in a directory, assume the entry is a file under that, - * according to the normal rules. - */ - unsigned need = (unsigned) (LEAF_LEN + 3 + strlen(path) + strlen(name)); - if (need <= limit) - (void) sprintf(filename, "%s/" LEAF_FMT "/%s", path, *name, name); - - if (_nc_is_dir_path(path)) - result = _nc_read_file_entry(filename, tp); -#if USE_HASHED_DB - else { - static const char suffix[] = DBM_SUFFIX; - DB *capdbp; - unsigned lens = sizeof(suffix) - 1; - unsigned size = strlen(path); - unsigned test = lens + size; - - if (test < limit) { - if (size >= lens - && !strcmp(path + size - lens, suffix)) - (void) strcpy(filename, path); - else - (void) sprintf(filename, "%s%s", path, suffix); - - /* - * It would be nice to optimize the dbopen/close activity, as - * done in the cgetent implementation for tc= clauses. However, - * since we support multiple database locations, we cannot do - * that. - */ - if ((capdbp = _nc_db_open(filename, FALSE)) != 0) { - DBT key, data; - int reccnt = 0; - char *save = strdup(name); - - memset(&key, 0, sizeof(key)); - key.data = save; - key.size = strlen(save); - - /* - * This lookup could return termcap data, which we do not want. - * We are looking for compiled (binary) terminfo data. - * - * cgetent uses a two-level lookup. On the first it uses the - * given name to return a record containing only the aliases - * for an entry. On the second (using that list of aliases as - * a key), it returns the content of the terminal description. - * We expect second lookup to return data beginning with the - * same set of aliases. - * - * For compiled terminfo, the list of aliases in the second - * case will be null-terminated. A termcap entry will not be, - * and will run on into the description. So we can easily - * distinguish between the two (source/binary) by checking the - * lengths. - */ - while (_nc_db_get(capdbp, &key, &data) == 0) { - int used = data.size - 1; - char *have = (char *) data.data; - - if (*have++ == 0) { - if (data.size > key.size - && IS_TIC_MAGIC(have)) { - result = _nc_read_termtype(tp, have, used); - if (result == TGETENT_NO) { - _nc_free_termtype(tp); - } - } - break; - } - - /* - * Just in case we have a corrupt database, do not waste - * time with it. - */ - if (++reccnt >= 3) - break; - - /* - * Prepare for the second level. - */ - key.data = have; - key.size = used; - } - - _nc_db_close(capdbp); - free(save); - } - } - } -#endif - return result; -} -#endif /* USE_DATABASE */ - -/* - * _nc_read_entry(char *name, char *filename, TERMTYPE *tp) - * - * Find and read the compiled entry for a given terminal type, - * if it exists. We take pains here to make sure no combination - * of environment variables and terminal type name can be used to - * overrun the file buffer. - */ - -NCURSES_EXPORT(int) -_nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp) -{ - int code = TGETENT_NO; - - sprintf(filename, "%.*s", PATH_MAX - 1, name); - if (strlen(name) == 0 - || strcmp(name, ".") == 0 - || strcmp(name, "..") == 0 - || _nc_pathlast(name) != 0 - || strchr(name, NCURSES_PATHSEP) != 0) { - T(("illegal or missing entry name '%s'", name)); - } else { -#if USE_DATABASE - DBDIRS state = dbdTIC; - int offset = 0; - const char *path; - - while ((path = _nc_next_db(&state, &offset)) != 0) { - code = _nc_read_tic_entry(filename, PATH_MAX, path, name, tp); - if (code == TGETENT_YES) { - _nc_last_db(); - break; - } - } -#endif -#if USE_TERMCAP - if (code != TGETENT_YES) { - code = _nc_read_termcap_entry(name, tp); - sprintf(filename, "%.*s", PATH_MAX - 1, _nc_get_source()); - } -#endif - } - return code; -} diff --git a/deps/ncurses-5.9/ncurses/tinfo/setbuf.c b/deps/ncurses-5.9/ncurses/tinfo/setbuf.c deleted file mode 100644 index a2e2660..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/setbuf.c +++ /dev/null @@ -1,169 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - * and: Juergen Pfeifer 2008 * - ****************************************************************************/ - -/* -** setbuf.c -** -** Support for set_term(), reset_shell_mode(), reset_prog_mode(). -** -*/ - -#include - -MODULE_ID("$Id: setbuf.c,v 1.16 2010/08/28 21:08:31 tom Exp $") - -/* - * If the output file descriptor is connected to a tty (the typical case) it - * will probably be line-buffered. Keith Bostic pointed out that we don't want - * this; it hoses people running over networks by forcing out a bunch of small - * packets instead of one big one, so screen updates on ptys look jerky. - * Restore block buffering to prevent this minor lossage. - * - * The buffer size is a compromise. Ideally we'd like a buffer that can hold - * the maximum possible update size (the whole screen plus cup commands to - * change lines as it's painted). On a 66-line xterm this can become - * excessive. So we min it with the amount of data we think we can get through - * two Ethernet packets (maximum packet size - 100 for TCP/IP overhead). - * - * Why two ethernet packets? It used to be one, on the theory that said - * packets define the maximum size of atomic update. But that's less than the - * 2000 chars on a 25 x 80 screen, and we don't want local updates to flicker - * either. Two packet lengths will handle up to a 35 x 80 screen. - * - * The magic '6' is the estimated length of the end-of-line cup sequence to go - * to the next line. It's generous. We used to mess with the buffering in - * init_mvcur() after cost computation, but that lost the sequences emitted by - * init_acs() in setupscreen(). - * - * "The setvbuf function may be used only after the stream pointed to by stream - * has been associated with an open file and before any other operation is - * performed on the stream." (ISO 7.9.5.6.) - * - * Grrrr... - * - * On a lighter note, many implementations do in fact allow an application to - * reset the buffering after it has been written to. We try to do this because - * otherwise we leave stdout in buffered mode after endwin() is called. (This - * also happens with SVr4 curses). - * - * There are pros/cons: - * - * con: - * There is no guarantee that we can reestablish buffering once we've - * dropped it. - * - * We _may_ lose data if the implementation does not coordinate this with - * fflush. - * - * pro: - * An implementation is more likely to refuse to change the buffering than - * to do it in one of the ways mentioned above. - * - * The alternative is to have the application try to change buffering - * itself, which is certainly no improvement. - * - * Just in case it does not work well on a particular system, the calls to - * change buffering are all via the macro NC_BUFFERED. Some implementations - * do indeed get confused by changing setbuf on/off, and will overrun the - * buffer. So we disable this by default (there may yet be a workaround). - */ -NCURSES_EXPORT(void) -NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_DCLx FILE *ofp, bool buffered) -{ - int Cols; - int Lines; - - if (0 == SP_PARM) - return; - - Cols = *(ptrCols(SP_PARM)); - Lines = *(ptrLines(SP_PARM)); - - /* optional optimization hack -- do before any output to ofp */ -#if HAVE_SETVBUF || HAVE_SETBUFFER - if (SP_PARM->_buffered != buffered) { - unsigned buf_len; - char *buf_ptr; - - if (getenv("NCURSES_NO_SETBUF") != 0) - return; - - fflush(ofp); -#ifdef __DJGPP__ - setmode(ofp, O_BINARY); -#endif - if (buffered != 0) { - buf_len = (unsigned) min(Lines * (Cols + 6), 2800); - if ((buf_ptr = SP_PARM->_setbuf) == 0) { - if ((buf_ptr = typeMalloc(char, buf_len)) == NULL) - return; - SP_PARM->_setbuf = buf_ptr; - /* Don't try to free this! */ - } -#if !USE_SETBUF_0 - else - return; -#endif - } else { -#if !USE_SETBUF_0 - return; -#else - buf_len = 0; - buf_ptr = 0; -#endif - } - -#if HAVE_SETVBUF -#ifdef SETVBUF_REVERSED /* pre-svr3? */ - (void) setvbuf(ofp, buf_ptr, buf_len, buf_len ? _IOFBF : _IOLBF); -#else - (void) setvbuf(ofp, buf_ptr, buf_len ? _IOFBF : _IOLBF, buf_len); -#endif -#elif HAVE_SETBUFFER - (void) setbuffer(ofp, buf_ptr, (int) buf_len); -#endif - - SP_PARM->_buffered = buffered; - } -#endif /* HAVE_SETVBUF || HAVE_SETBUFFER */ -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(void) -_nc_set_buffer(FILE *ofp, bool buffered) -{ - NCURSES_SP_NAME(_nc_set_buffer) (CURRENT_SCREEN, ofp, buffered); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/tinfo_driver.c b/deps/ncurses-5.9/ncurses/tinfo/tinfo_driver.c deleted file mode 100644 index 5b3b55a..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/tinfo_driver.c +++ /dev/null @@ -1,1337 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2008-2009,2010 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 * - * * - ****************************************************************************/ - -#include -#define CUR ((TERMINAL*)TCB)->type. -#include - -#if HAVE_NANOSLEEP -#include -#if HAVE_SYS_TIME_H -#include /* needed for MacOS X DP3 */ -#endif -#endif - -#if HAVE_SIZECHANGE -# if !defined(sun) || !TERMIOS -# if HAVE_SYS_IOCTL_H -# include -# endif -# endif -#endif - -MODULE_ID("$Id: tinfo_driver.c,v 1.13 2010/12/20 01:47:09 tom Exp $") - -/* - * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, - * Solaris, IRIX) define TIOCGWINSZ and struct winsize. - */ -#ifdef TIOCGSIZE -# define IOCTL_WINSIZE TIOCGSIZE -# define STRUCT_WINSIZE struct ttysize -# define WINSIZE_ROWS(n) (int)n.ts_lines -# define WINSIZE_COLS(n) (int)n.ts_cols -#else -# ifdef TIOCGWINSZ -# define IOCTL_WINSIZE TIOCGWINSZ -# define STRUCT_WINSIZE struct winsize -# define WINSIZE_ROWS(n) (int)n.ws_row -# define WINSIZE_COLS(n) (int)n.ws_col -# endif -#endif - -/* - * These should be screen structure members. They need to be globals for - * historical reasons. So we assign them in start_color() and also in - * set_term()'s screen-switching logic. - */ -#if USE_REENTRANT -NCURSES_EXPORT(int) -NCURSES_PUBLIC_VAR(COLOR_PAIRS) (void) -{ - return CURRENT_SCREEN ? CURRENT_SCREEN->_pair_count : -1; -} -NCURSES_EXPORT(int) -NCURSES_PUBLIC_VAR(COLORS) (void) -{ - return CURRENT_SCREEN ? CURRENT_SCREEN->_color_count : -1; -} -#else -NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0; -NCURSES_EXPORT_VAR(int) COLORS = 0; -#endif - -#define TCBMAGIC NCDRV_MAGIC(NCDRV_TINFO) -#define AssertTCB() assert(TCB!=0 && TCB->magic==TCBMAGIC) -#define SetSP() assert(TCB->csp!=0); sp = TCB->csp - -/* - * This routine needs to do all the work to make curscr look - * like newscr. - */ -static int -drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB) -{ - AssertTCB(); - return TINFO_DOUPDATE(TCB->csp); -} - -#define ret_error(code, fmt, arg) if (errret) {\ - *errret = code;\ - return(FALSE); \ - } else {\ - fprintf(stderr, fmt, arg);\ - exit(EXIT_FAILURE);\ - } - -#define ret_error0(code, msg) if (errret) {\ - *errret = code;\ - return(FALSE);\ - } else {\ - fprintf(stderr, msg);\ - exit(EXIT_FAILURE);\ - } - -static bool -drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret) -{ - bool result = FALSE; - int status; - TERMINAL *termp; - SCREEN *sp; - - assert(TCB != 0 && tname != 0); - termp = (TERMINAL *) TCB; - sp = TCB->csp; - TCB->magic = TCBMAGIC; - -#if (USE_DATABASE || USE_TERMCAP) - status = _nc_setup_tinfo(tname, &termp->type); -#else - status = TGETENT_NO; -#endif - - /* try fallback list if entry on disk */ - if (status != TGETENT_YES) { - const TERMTYPE *fallback = _nc_fallback(tname); - - if (fallback) { - termp->type = *fallback; - status = TGETENT_YES; - } - } - - if (status != TGETENT_YES) { - NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx termp); - if (status == TGETENT_ERR) { - ret_error0(status, "terminals database is inaccessible\n"); - } else if (status == TGETENT_NO) { - ret_error(status, "'%s': unknown terminal type.\n", tname); - } - } - result = TRUE; -#if !USE_REENTRANT - strncpy(ttytype, termp->type.term_names, NAMESIZE - 1); - ttytype[NAMESIZE - 1] = '\0'; -#endif - - if (command_character) - _nc_tinfo_cmdch(termp, *command_character); - - if (generic_type) { - ret_error(TGETENT_NO, "'%s': I need something more specific.\n", tname); - } - if (hard_copy) { - ret_error(TGETENT_YES, "'%s': I can't handle hardcopy terminals.\n", tname); - } - - return result; -} - -static int -drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, bool beepFlag) -{ - SCREEN *sp; - int res = ERR; - - AssertTCB(); - SetSP(); - - /* FIXME: should make sure that we are not in altchar mode */ - if (beepFlag) { - if (bell) { - res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "bell", bell); - NCURSES_SP_NAME(_nc_flush) (sp); - } else if (flash_screen) { - res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "flash_screen", - flash_screen); - NCURSES_SP_NAME(_nc_flush) (sp); - } - } else { - if (flash_screen) { - res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "flash_screen", - flash_screen); - NCURSES_SP_NAME(_nc_flush) (sp); - } else if (bell) { - res = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "bell", bell); - NCURSES_SP_NAME(_nc_flush) (sp); - } - } - return res; -} - -/* - * 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 - * also used in the FreeBSD syscons. - */ -static int -toggled_colors(int c) -{ - if (c < 16) { - static const int table[] = - {0, 4, 2, 6, 1, 5, 3, 7, - 8, 12, 10, 14, 9, 13, 11, 15}; - c = table[c]; - } - return c; -} - -static int -drv_print(TERMINAL_CONTROL_BLOCK * TCB, char *data, int len) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); -#if NCURSES_EXT_FUNCS - return NCURSES_SP_NAME(mcprint) (TCB->csp, data, len); -#else - return ERR; -#endif -} - -static int -drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB, int fg, int bg) -{ - SCREEN *sp; - int code = ERR; - - AssertTCB(); - SetSP(); - - if (sp != 0 && orig_pair && orig_colors && (initialize_pair != 0)) { -#if NCURSES_EXT_FUNCS - sp->_default_color = isDefaultColor(fg) || isDefaultColor(bg); - sp->_has_sgr_39_49 = (NCURSES_SP_NAME(tigetflag) (NCURSES_SP_ARGx - "AX") - == TRUE); - sp->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : (fg & C_MASK); - sp->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : (bg & C_MASK); - if (sp->_color_pairs != 0) { - bool save = sp->_default_color; - sp->_default_color = TRUE; - NCURSES_SP_NAME(init_pair) (NCURSES_SP_ARGx - 0, - (short)fg, - (short)bg); - sp->_default_color = save; - } -#endif - code = OK; - } - return (code); -} - -static void -drv_setcolor(TERMINAL_CONTROL_BLOCK * TCB, - bool fore, - int color, - NCURSES_SP_OUTC outc) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); - - if (fore) { - if (set_a_foreground) { - TPUTS_TRACE("set_a_foreground"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_a_foreground, color), 1, outc); - } else { - TPUTS_TRACE("set_foreground"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_foreground, - toggled_colors(color)), 1, outc); - } - } else { - if (set_a_background) { - TPUTS_TRACE("set_a_background"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_a_background, color), 1, outc); - } else { - TPUTS_TRACE("set_background"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_background, - toggled_colors(color)), 1, outc); - } - } -} - -static bool -drv_rescol(TERMINAL_CONTROL_BLOCK * TCB) -{ - bool result = FALSE; - SCREEN *sp; - - AssertTCB(); - SetSP(); - - if (orig_pair != 0) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "orig_pair", orig_pair); - result = TRUE; - } - return result; -} - -static bool -drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB) -{ - int result = FALSE; - SCREEN *sp; - - AssertTCB(); - SetSP(); - - if (orig_colors != 0) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "orig_colors", orig_colors); - result = TRUE; - } - return result; -} - -static int -drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp) -{ - SCREEN *sp; - bool useEnv = TRUE; - - AssertTCB(); - sp = TCB->csp; /* can be null here */ - - if (sp) { - useEnv = sp->_use_env; - } else - useEnv = _nc_prescreen.use_env; - - /* figure out the size of the screen */ - T(("screen size: terminfo lines = %d columns = %d", lines, columns)); - - *linep = (int) lines; - *colp = (int) columns; - - if (useEnv) { - int value; - -#ifdef __EMX__ - { - int screendata[2]; - _scrsize(screendata); - *colp = screendata[0]; - *linep = screendata[1]; - T(("EMX screen size: environment LINES = %d COLUMNS = %d", - *linep, *colp)); - } -#endif -#if HAVE_SIZECHANGE - /* try asking the OS */ - { - TERMINAL *termp = (TERMINAL *) TCB; - if (isatty(termp->Filedes)) { - STRUCT_WINSIZE size; - - errno = 0; - do { - if (ioctl(termp->Filedes, IOCTL_WINSIZE, &size) >= 0) { - *linep = ((sp != 0 && sp->_filtered) - ? 1 - : WINSIZE_ROWS(size)); - *colp = WINSIZE_COLS(size); - T(("SYS screen size: environment LINES = %d COLUMNS = %d", - *linep, *colp)); - break; - } - } while - (errno == EINTR); - } - } -#endif /* HAVE_SIZECHANGE */ - - /* - * Finally, look for environment variables. - * - * Solaris lets users override either dimension with an environment - * variable. - */ - if ((value = _nc_getenv_num("LINES")) > 0) { - *linep = value; - T(("screen size: environment LINES = %d", *linep)); - } - if ((value = _nc_getenv_num("COLUMNS")) > 0) { - *colp = value; - T(("screen size: environment COLUMNS = %d", *colp)); - } - - /* if we can't get dynamic info about the size, use static */ - if (*linep <= 0) { - *linep = (int) lines; - } - if (*colp <= 0) { - *colp = (int) columns; - } - - /* the ultimate fallback, assume fixed 24x80 size */ - if (*linep <= 0) { - *linep = 24; - } - if (*colp <= 0) { - *colp = 80; - } - - /* - * Put the derived values back in the screen-size caps, so - * tigetnum() and tgetnum() will do the right thing. - */ - lines = (short) (*linep); - columns = (short) (*colp); - } - - T(("screen size is %dx%d", *linep, *colp)); - return OK; -} - -static int -drv_getsize(TERMINAL_CONTROL_BLOCK * TCB, int *l, int *c) -{ - AssertTCB(); - assert(l != 0 && c != 0); - *l = lines; - *c = columns; - return OK; -} - -static int -drv_setsize(TERMINAL_CONTROL_BLOCK * TCB, int l, int c) -{ - AssertTCB(); - lines = (short) l; - columns = (short) c; - return OK; -} - -static int -drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf) -{ - SCREEN *sp = TCB->csp; - TERMINAL *_term = (TERMINAL *) TCB; - int result = OK; - - AssertTCB(); - if (setFlag) { - for (;;) { - if (SET_TTY(_term->Filedes, buf) != 0) { - if (errno == EINTR) - continue; - if (errno == ENOTTY) { - if (sp) - sp->_notty = TRUE; - } - result = ERR; - } - break; - } - } else { - for (;;) { - if (GET_TTY(_term->Filedes, buf) != 0) { - if (errno == EINTR) - continue; - result = ERR; - } - break; - } - } - return result; -} - -static int -drv_mode(TERMINAL_CONTROL_BLOCK * TCB, bool progFlag, bool defFlag) -{ - SCREEN *sp; - TERMINAL *_term = (TERMINAL *) TCB; - int code = ERR; - - AssertTCB(); - sp = TCB->csp; - - if (progFlag) /* prog mode */ - { - if (defFlag) { - /* def_prog_mode */ - /* - * Turn off the XTABS bit in the tty structure if it was on. - */ - if ((drv_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) { -#ifdef TERMIOS - _term->Nttyb.c_oflag &= (unsigned) ~OFLAGS_TABS; -#else - _term->Nttyb.sg_flags &= (unsigned) ~XTABS; -#endif - code = OK; - } - } else { - /* reset_prog_mode */ - if (drv_sgmode(TCB, TRUE, &(_term->Nttyb)) == OK) { - if (sp) { - if (sp->_keypad_on) - _nc_keypad(sp, TRUE); - NC_BUFFERED(sp, TRUE); - } - code = OK; - } - } - } else { /* shell mode */ - if (defFlag) { - /* def_shell_mode */ - /* - * If XTABS was on, remove the tab and backtab capabilities. - */ - if (drv_sgmode(TCB, FALSE, &(_term->Ottyb)) == OK) { -#ifdef TERMIOS - if (_term->Ottyb.c_oflag & OFLAGS_TABS) - tab = back_tab = NULL; -#else - if (_term->Ottyb.sg_flags & XTABS) - tab = back_tab = NULL; -#endif - code = OK; - } - } else { - /* reset_shell_mode */ - if (sp) { - _nc_keypad(sp, FALSE); - NCURSES_SP_NAME(_nc_flush) (sp); - NC_BUFFERED(sp, FALSE); - } - code = drv_sgmode(TCB, TRUE, &(_term->Ottyb)); - } - } - return (code); -} - -static void -drv_wrap(SCREEN *sp) -{ - if (sp) { - sp->_mouse_wrap(sp); - NCURSES_SP_NAME(_nc_screen_wrap) (sp); - NCURSES_SP_NAME(_nc_mvcur_wrap) (sp); /* wrap up cursor addressing */ - } -} - -static void -drv_release(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED) -{ -} - -# define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode)) - -static void -drv_screen_init(SCREEN *sp) -{ - TERMINAL_CONTROL_BLOCK *TCB = TCBOf(sp); - - AssertTCB(); - - /* - * Check for mismatched graphic-rendition capabilities. Most SVr4 - * terminfo trees contain entries that have rmul or rmso equated to - * sgr0 (Solaris curses copes with those entries). We do this only - * for curses, since many termcap applications assume that - * smso/rmso and smul/rmul are paired, and will not function - * properly if we remove rmso or rmul. Curses applications - * shouldn't be looking at this detail. - */ - sp->_use_rmso = SGR0_TEST(exit_standout_mode); - sp->_use_rmul = SGR0_TEST(exit_underline_mode); - - /* - * Check whether we can optimize scrolling under dumb terminals in - * case we do not have any of these capabilities, scrolling - * optimization will be useless. - */ - sp->_scrolling = ((scroll_forward && scroll_reverse) || - ((parm_rindex || - parm_insert_line || - insert_line) && - (parm_index || - parm_delete_line || - delete_line))); - - NCURSES_SP_NAME(baudrate) (sp); - - NCURSES_SP_NAME(_nc_mvcur_init) (sp); - /* initialize terminal to a sane state */ - NCURSES_SP_NAME(_nc_screen_init) (sp); -} - -static void -drv_init(TERMINAL_CONTROL_BLOCK * TCB) -{ - SCREEN *sp; - TERMINAL *trm; - - AssertTCB(); - - trm = (TERMINAL *) TCB; - sp = TCB->csp; - - TCB->info.initcolor = initialize_color; - TCB->info.canchange = can_change; - TCB->info.hascolor = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs) - && (((set_foreground != NULL) - && (set_background != NULL)) - || ((set_a_foreground != NULL) - && (set_a_background != NULL)) - || set_color_pair)) ? TRUE : FALSE); - - TCB->info.caninit = !(exit_ca_mode && non_rev_rmcup); - - TCB->info.maxpairs = VALID_NUMERIC(max_pairs) ? max_pairs : 0; - TCB->info.maxcolors = VALID_NUMERIC(max_colors) ? max_colors : 0; - TCB->info.numlabels = VALID_NUMERIC(num_labels) ? num_labels : 0; - TCB->info.labelwidth = VALID_NUMERIC(label_width) ? label_width : 0; - TCB->info.labelheight = VALID_NUMERIC(label_height) ? label_height : 0; - TCB->info.nocolorvideo = VALID_NUMERIC(no_color_video) ? no_color_video - : 0; - TCB->info.tabsize = VALID_NUMERIC(init_tabs) ? (int) init_tabs : 8; - - TCB->info.defaultPalette = hue_lightness_saturation ? _nc_hls_palette : _nc_cga_palette; - - /* - * If an application calls setupterm() rather than initscr() or - * newterm(), we will not have the def_prog_mode() call in - * _nc_setupscreen(). Do it now anyway, so we can initialize the - * baudrate. - */ - if (isatty(trm->Filedes)) { - TCB->drv->mode(TCB, TRUE, TRUE); - } -} - -#define MAX_PALETTE 8 -#define InPalette(n) ((n) >= 0 && (n) < MAX_PALETTE) - -static void -drv_initpair(TERMINAL_CONTROL_BLOCK * TCB, short pair, short f, short b) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); - - if ((initialize_pair != NULL) && InPalette(f) && InPalette(b)) { - const color_t *tp = InfoOf(sp).defaultPalette; - - TR(TRACE_ATTRS, - ("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)", - pair, - tp[f].red, tp[f].green, tp[f].blue, - tp[b].red, tp[b].green, tp[b].blue)); - - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "initialize_pair", - TPARM_7(initialize_pair, - pair, - tp[f].red, tp[f].green, tp[f].blue, - tp[b].red, tp[b].green, tp[b].blue)); - } -} - -static int -default_fg(SCREEN *sp) -{ -#if NCURSES_EXT_FUNCS - return (sp != 0) ? sp->_default_fg : COLOR_WHITE; -#else - return COLOR_WHITE; -#endif -} - -static int -default_bg(SCREEN *sp) -{ -#if NCURSES_EXT_FUNCS - return sp != 0 ? sp->_default_bg : COLOR_BLACK; -#else - return COLOR_BLACK; -#endif -} - -static void -drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB, - short color, short r, short g, short b) -{ - SCREEN *sp = TCB->csp; - - AssertTCB(); - if (initialize_color != NULL) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "initialize_color", - TPARM_4(initialize_color, color, r, g, b)); - } -} - -static void -drv_do_color(TERMINAL_CONTROL_BLOCK * TCB, - short old_pair, - short pair, - bool reverse, - NCURSES_SP_OUTC outc) -{ - SCREEN *sp = TCB->csp; - NCURSES_COLOR_T fg = COLOR_DEFAULT; - NCURSES_COLOR_T bg = COLOR_DEFAULT; - NCURSES_COLOR_T old_fg, old_bg; - - AssertTCB(); - if (sp == 0) - return; - - if (pair < 0 || pair >= COLOR_PAIRS) { - return; - } else if (pair != 0) { - if (set_color_pair) { - TPUTS_TRACE("set_color_pair"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(set_color_pair, pair), 1, outc); - return; - } else if (sp != 0) { - NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx - (short) pair, - &fg, - &bg); - } - } - - if (old_pair >= 0 - && sp != 0 - && NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx - old_pair, - &old_fg, - &old_bg) !=ERR) { - if ((isDefaultColor(fg) && !isDefaultColor(old_fg)) - || (isDefaultColor(bg) && !isDefaultColor(old_bg))) { -#if NCURSES_EXT_FUNCS - /* - * A minor optimization - but extension. If "AX" is specified in - * the terminal description, treat it as screen's indicator of ECMA - * SGR 39 and SGR 49, and assume the two sequences are independent. - */ - if (sp->_has_sgr_39_49 - && isDefaultColor(old_bg) - && !isDefaultColor(old_fg)) { - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[39m", 1, outc); - } else if (sp->_has_sgr_39_49 - && isDefaultColor(old_fg) - && !isDefaultColor(old_bg)) { - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[49m", 1, outc); - } else -#endif - drv_rescol(TCB); - } - } else { - drv_rescol(TCB); - if (old_pair < 0) - return; - } - -#if NCURSES_EXT_FUNCS - if (isDefaultColor(fg)) - fg = (NCURSES_COLOR_T) default_fg(sp); - if (isDefaultColor(bg)) - bg = (NCURSES_COLOR_T) default_bg(sp); -#endif - - if (reverse) { - NCURSES_COLOR_T xx = fg; - fg = bg; - bg = xx; - } - - TR(TRACE_ATTRS, ("setting colors: pair = %d, fg = %d, bg = %d", pair, - fg, bg)); - - if (!isDefaultColor(fg)) { - drv_setcolor(TCB, TRUE, fg, outc); - } - if (!isDefaultColor(bg)) { - drv_setcolor(TCB, FALSE, bg, outc); - } -} - -#define xterm_kmous "\033[M" -static void -init_xterm_mouse(SCREEN *sp) -{ - sp->_mouse_type = M_XTERM; - sp->_mouse_xtermcap = NCURSES_SP_NAME(tigetstr) (NCURSES_SP_ARGx "XM"); - if (!VALID_STRING(sp->_mouse_xtermcap)) - sp->_mouse_xtermcap = "\033[?1000%?%p1%{1}%=%th%el%;"; -} - -static void -drv_initmouse(TERMINAL_CONTROL_BLOCK * TCB) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); - - /* we know how to recognize mouse events under "xterm" */ - if (sp != 0) { - if (key_mouse != 0) { - if (!strcmp(key_mouse, xterm_kmous) - || strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) { - init_xterm_mouse(sp); - } - } else if (strstr(TerminalOf(sp)->type.term_names, "xterm") != 0) { - if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK) - init_xterm_mouse(sp); - } - } -} - -static int -drv_testmouse(TERMINAL_CONTROL_BLOCK * TCB, int delay) -{ - int rc = 0; - SCREEN *sp; - - AssertTCB(); - SetSP(); - -#if USE_SYSMOUSE - if ((sp->_mouse_type == M_SYSMOUSE) - && (sp->_sysmouse_head < sp->_sysmouse_tail)) { - rc = TW_MOUSE; - } else -#endif - { - rc = TCBOf(sp)->drv->twait(TCBOf(sp), - TWAIT_MASK, - delay, - (int *) 0 - EVENTLIST_2nd(evl)); -#if USE_SYSMOUSE - if ((sp->_mouse_type == M_SYSMOUSE) - && (sp->_sysmouse_head < sp->_sysmouse_tail) - && (rc == 0) - && (errno == EINTR)) { - rc |= TW_MOUSE; - } -#endif - } - return rc; -} - -static int -drv_mvcur(TERMINAL_CONTROL_BLOCK * TCB, int yold, int xold, int ynew, int xnew) -{ - SCREEN *sp = TCB->csp; - AssertTCB(); - return TINFO_MVCUR(sp, yold, xold, ynew, xnew); -} - -static void -drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB, int labnum, char *text) -{ - SCREEN *sp = TCB->csp; - - AssertTCB(); - if (labnum > 0 && labnum <= num_labels) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "plab_norm", - TPARM_2(plab_norm, labnum, text)); - } -} - -static void -drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, bool OnFlag) -{ - SCREEN *sp = TCB->csp; - - AssertTCB(); - if (OnFlag) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "label_on", label_on); - } else { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "label_off", label_off); - } -} - -static chtype -drv_conattr(TERMINAL_CONTROL_BLOCK * TCB) -{ - SCREEN *sp = TCB->csp; - chtype attrs = A_NORMAL; - - AssertTCB(); - if (enter_alt_charset_mode) - attrs |= A_ALTCHARSET; - - if (enter_blink_mode) - attrs |= A_BLINK; - - if (enter_bold_mode) - attrs |= A_BOLD; - - if (enter_dim_mode) - attrs |= A_DIM; - - if (enter_reverse_mode) - attrs |= A_REVERSE; - - if (enter_standout_mode) - attrs |= A_STANDOUT; - - if (enter_protected_mode) - attrs |= A_PROTECT; - - if (enter_secure_mode) - attrs |= A_INVIS; - - if (enter_underline_mode) - attrs |= A_UNDERLINE; - - if (sp && sp->_coloron) - attrs |= A_COLOR; - - return (attrs); -} - -static void -drv_setfilter(TERMINAL_CONTROL_BLOCK * TCB) -{ - AssertTCB(); - - clear_screen = 0; - cursor_down = parm_down_cursor = 0; - cursor_address = 0; - cursor_up = parm_up_cursor = 0; - row_address = 0; - cursor_home = carriage_return; -} - -static void -drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, chtype *real_map, chtype *fake_map) -{ - SCREEN *sp = TCB->csp; - - AssertTCB(); - assert(sp != 0); - if (ena_acs != NULL) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "ena_acs", ena_acs); - } -#if NCURSES_EXT_FUNCS - /* - * Linux console "supports" the "PC ROM" character set by the coincidence - * that smpch/rmpch and smacs/rmacs have the same values. ncurses has - * no codepage support (see SCO Merge for an example). Outside of the - * values defined in acsc, there are no definitions for the "PC ROM" - * character set (assumed by some applications to be codepage 437), but we - * allow those applications to use those codepoints. - * - * test/blue.c uses this feature. - */ -#define PCH_KLUDGE(a,b) (a != 0 && b != 0 && !strcmp(a,b)) - if (PCH_KLUDGE(enter_pc_charset_mode, enter_alt_charset_mode) && - PCH_KLUDGE(exit_pc_charset_mode, exit_alt_charset_mode)) { - size_t i; - for (i = 1; i < ACS_LEN; ++i) { - if (real_map[i] == 0) { - real_map[i] = i; - if (real_map != fake_map) { - if (sp != 0) - sp->_screen_acs_map[i] = TRUE; - } - } - } - } -#endif - - if (acs_chars != NULL) { - size_t i = 0; - size_t length = strlen(acs_chars); - - while (i + 1 < length) { - if (acs_chars[i] != 0 && UChar(acs_chars[i]) < ACS_LEN) { - real_map[UChar(acs_chars[i])] = UChar(acs_chars[i + 1]) | A_ALTCHARSET; - if (sp != 0) - sp->_screen_acs_map[UChar(acs_chars[i])] = TRUE; - } - i += 2; - } - } -#ifdef TRACE - /* Show the equivalent mapping, noting if it does not match the - * given attribute, whether by re-ordering or duplication. - */ - if (USE_TRACEF(TRACE_CALLS)) { - size_t n, m; - char show[ACS_LEN * 2 + 1]; - for (n = 1, m = 0; n < ACS_LEN; n++) { - if (real_map[n] != 0) { - show[m++] = (char) n; - show[m++] = (char) ChCharOf(real_map[n]); - } - } - show[m] = 0; - if (acs_chars == NULL || strcmp(acs_chars, show)) - _tracef("%s acs_chars %s", - (acs_chars == NULL) ? "NULL" : "READ", - _nc_visbuf(acs_chars)); - _tracef("%s acs_chars %s", - (acs_chars == NULL) - ? "NULL" - : (strcmp(acs_chars, show) - ? "DIFF" - : "SAME"), - _nc_visbuf(show)); - - _nc_unlock_global(tracef); - } -#endif /* TRACE */ -} - -#define ENSURE_TINFO(sp) (TCBOf(sp)->drv->isTerminfo) - -NCURSES_EXPORT(void) -_nc_cookie_init(SCREEN *sp) -{ - bool support_cookies = USE_XMC_SUPPORT; - TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) (sp->_term); - - if (sp == 0 || !ENSURE_TINFO(sp)) - return; - -#if USE_XMC_SUPPORT - /* - * If we have no magic-cookie support compiled-in, or if it is suppressed - * in the environment, reset the support-flag. - */ - if (magic_cookie_glitch >= 0) { - if (getenv("NCURSES_NO_MAGIC_COOKIE") != 0) { - support_cookies = FALSE; - } - } -#endif - - if (!support_cookies && magic_cookie_glitch >= 0) { - T(("will disable attributes to work w/o magic cookies")); - } - - if (magic_cookie_glitch > 0) { /* tvi, wyse */ - - sp->_xmc_triggers = sp->_ok_attributes & ( - A_STANDOUT | - A_UNDERLINE | - A_REVERSE | - A_BLINK | - A_DIM | - A_BOLD | - A_INVIS | - A_PROTECT - ); -#if 0 - /* - * We "should" treat colors as an attribute. The wyse350 (and its - * clones) appear to be the only ones that have both colors and magic - * cookies. - */ - if (has_colors()) { - sp->_xmc_triggers |= A_COLOR; - } -#endif - sp->_xmc_suppress = sp->_xmc_triggers & (chtype) ~(A_BOLD); - - T(("magic cookie attributes %s", _traceattr(sp->_xmc_suppress))); - /* - * Supporting line-drawing may be possible. But make the regular - * video attributes work first. - */ - acs_chars = ABSENT_STRING; - ena_acs = ABSENT_STRING; - enter_alt_charset_mode = ABSENT_STRING; - exit_alt_charset_mode = ABSENT_STRING; -#if USE_XMC_SUPPORT - /* - * To keep the cookie support simple, suppress all of the optimization - * hooks except for clear_screen and the cursor addressing. - */ - if (support_cookies) { - clr_eol = ABSENT_STRING; - clr_eos = ABSENT_STRING; - set_attributes = ABSENT_STRING; - } -#endif - } else if (magic_cookie_glitch == 0) { /* hpterm */ - } - - /* - * If magic cookies are not supported, cancel the strings that set - * video attributes. - */ - if (!support_cookies && magic_cookie_glitch >= 0) { - magic_cookie_glitch = ABSENT_NUMERIC; - set_attributes = ABSENT_STRING; - enter_blink_mode = ABSENT_STRING; - enter_bold_mode = ABSENT_STRING; - enter_dim_mode = ABSENT_STRING; - enter_reverse_mode = ABSENT_STRING; - enter_standout_mode = ABSENT_STRING; - enter_underline_mode = ABSENT_STRING; - } - - /* initialize normal acs before wide, since we use mapping in the latter */ -#if !USE_WIDEC_SUPPORT - if (_nc_unicode_locale() && _nc_locale_breaks_acs(sp->_term)) { - acs_chars = NULL; - ena_acs = NULL; - enter_alt_charset_mode = NULL; - exit_alt_charset_mode = NULL; - set_attributes = NULL; - } -#endif -} - -static int -drv_twait(TERMINAL_CONTROL_BLOCK * TCB, - int mode, - int milliseconds, - int *timeleft - EVENTLIST_2nd(_nc_eventlist * evl)) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); - - return _nc_timed_wait(sp, mode, milliseconds, timeleft EVENTLIST_2nd(evl)); -} - -static int -drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf) -{ - SCREEN *sp; - unsigned char c2 = 0; - int n; - - AssertTCB(); - assert(buf); - SetSP(); - -# if USE_PTHREADS_EINTR - if ((pthread_self) && (pthread_kill) && (pthread_equal)) - _nc_globals.read_thread = pthread_self(); -# endif - n = read(sp->_ifd, &c2, 1); -#if USE_PTHREADS_EINTR - _nc_globals.read_thread = 0; -#endif - *buf = (int) c2; - return n; -} - -static int -drv_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms) -{ -#if HAVE_NANOSLEEP - { - struct timespec request, remaining; - request.tv_sec = ms / 1000; - request.tv_nsec = (ms % 1000) * 1000000; - while (nanosleep(&request, &remaining) == -1 - && errno == EINTR) { - request = remaining; - } - } -#else - _nc_timed_wait(0, 0, ms, (int *) 0 EVENTLIST_2nd(0)); -#endif - return OK; -} - -static int -__nc_putp(SCREEN *sp, const char *name GCC_UNUSED, const char *value) -{ - int rc = ERR; - - if (value) { - rc = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx name, value); - } - return rc; -} - -static int -__nc_putp_flush(SCREEN *sp, const char *name, const char *value) -{ - int rc = __nc_putp(sp, name, value); - if (rc != ERR) { - NCURSES_SP_NAME(_nc_flush) (sp); - } - return rc; -} - -static int -drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, bool flag) -{ - int ret = ERR; - SCREEN *sp; - - AssertTCB(); - - sp = TCB->csp; - - if (sp) { - if (flag) { - (void) __nc_putp_flush(sp, "keypad_xmit", keypad_xmit); - } else if (!flag && keypad_local) { - (void) __nc_putp_flush(sp, "keypad_local", keypad_local); - } - if (flag && !sp->_tried) { - _nc_init_keytry(sp); - sp->_tried = TRUE; - } - ret = OK; - } - - return ret; -} - -static int -drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int c, bool flag) -{ - SCREEN *sp; - int code = ERR; - int count = 0; - char *s; - - AssertTCB(); - SetSP(); - - if (c >= 0) { - unsigned ch = (unsigned) c; - if (flag) { - while ((s = _nc_expand_try(sp->_key_ok, ch, &count, 0)) != 0 - && _nc_remove_key(&(sp->_key_ok), ch)) { - code = _nc_add_to_try(&(sp->_keytry), s, ch); - free(s); - count = 0; - if (code != OK) - break; - } - } else { - while ((s = _nc_expand_try(sp->_keytry, ch, &count, 0)) != 0 - && _nc_remove_key(&(sp->_keytry), ch)) { - code = _nc_add_to_try(&(sp->_key_ok), s, ch); - free(s); - count = 0; - if (code != OK) - break; - } - } - } - return (code); -} - -static bool -drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int key) -{ - bool res = FALSE; - - AssertTCB(); - if (TCB->csp) - res = TINFO_HAS_KEY(TCB->csp, key) == 0 ? FALSE : TRUE; - - return res; -} - -NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_TINFO_DRIVER = { - TRUE, - drv_CanHandle, /* CanHandle */ - drv_init, /* init */ - drv_release, /* release */ - drv_size, /* size */ - drv_sgmode, /* sgmode */ - drv_conattr, /* conattr */ - drv_mvcur, /* hwcur */ - drv_mode, /* mode */ - drv_rescol, /* rescol */ - drv_rescolors, /* rescolors */ - drv_setcolor, /* color */ - drv_dobeepflash, /* doBeepOrFlash */ - drv_initpair, /* initpair */ - drv_initcolor, /* initcolor */ - drv_do_color, /* docolor */ - drv_initmouse, /* initmouse */ - drv_testmouse, /* testmouse */ - drv_setfilter, /* setfilter */ - drv_hwlabel, /* hwlabel */ - drv_hwlabelOnOff, /* hwlabelOnOff */ - drv_doupdate, /* update */ - drv_defaultcolors, /* defaultcolors */ - drv_print, /* print */ - drv_getsize, /* getsize */ - drv_setsize, /* setsize */ - drv_initacs, /* initacs */ - drv_screen_init, /* scinit */ - drv_wrap, /* scexit */ - drv_twait, /* twait */ - drv_read, /* read */ - drv_nap, /* nap */ - drv_kpad, /* kpad */ - drv_keyok, /* kyOk */ - drv_kyExist /* kyExist */ -}; diff --git a/deps/ncurses-5.9/ncurses/tinfo/write_entry.c b/deps/ncurses-5.9/ncurses/tinfo/write_entry.c deleted file mode 100644 index a86c112..0000000 --- a/deps/ncurses-5.9/ncurses/tinfo/write_entry.c +++ /dev/null @@ -1,795 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * write_entry.c -- write a terminfo structure onto the file system - */ - -#include -#include - -#include - -#include - -#ifndef S_ISDIR -#define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR) -#endif - -#if 1 -#define TRACE_OUT(p) DEBUG(2, p) -#else -#define TRACE_OUT(p) /*nothing */ -#endif - -MODULE_ID("$Id: write_entry.c,v 1.78 2010/12/25 23:23:08 tom Exp $") - -static int total_written; - -static int make_db_root(const char *); -static int write_object(TERMTYPE *, char *, unsigned *, unsigned); - -#if !USE_HASHED_DB -static void -write_file(char *filename, TERMTYPE *tp) -{ - char buffer[MAX_ENTRY_SIZE]; - unsigned limit = sizeof(buffer); - unsigned offset = 0; - - FILE *fp = (_nc_access(filename, W_OK) == 0) ? fopen(filename, "wb") : 0; - if (fp == 0) { - perror(filename); - _nc_syserr_abort("can't open %s/%s", _nc_tic_dir(0), filename); - } - DEBUG(1, ("Created %s", filename)); - - if (write_object(tp, buffer, &offset, limit) == ERR - || fwrite(buffer, sizeof(char), offset, fp) != offset) { - _nc_syserr_abort("error writing %s/%s", _nc_tic_dir(0), filename); - } - - fclose(fp); -} - -/* - * Check for access rights to destination directories - * Create any directories which don't exist. - * - * Note: there's no reason to return the result of make_db_root(), since - * this function is called only in instances where that has to succeed. - */ -static void -check_writeable(int code) -{ - static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - static bool verified[sizeof(dirnames)]; - - char dir[sizeof(LEAF_FMT)]; - char *s = 0; - - if (code == 0 || (s = strchr(dirnames, code)) == 0) - _nc_err_abort("Illegal terminfo subdirectory \"" LEAF_FMT "\"", code); - - if (verified[s - dirnames]) - return; - - sprintf(dir, LEAF_FMT, code); - if (make_db_root(dir) < 0) { - _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir); - } - - verified[s - dirnames] = TRUE; -} -#endif /* !USE_HASHED_DB */ - -static int -make_db_path(char *dst, const char *src, unsigned limit) -{ - int rc = -1; - const char *top = _nc_tic_dir(0); - - if (src == top || _nc_is_abs_path(src)) { - if (strlen(src) + 1 <= limit) { - (void) strcpy(dst, src); - rc = 0; - } - } else { - if (strlen(top) + strlen(src) + 2 <= limit) { - (void) sprintf(dst, "%s/%s", top, src); - rc = 0; - } - } -#if USE_HASHED_DB - if (rc == 0) { - if (_nc_is_dir_path(dst)) { - rc = -1; - } else { - static const char suffix[] = DBM_SUFFIX; - unsigned have = strlen(dst); - unsigned need = strlen(suffix); - if (have > need && strcmp(dst + have - need, suffix)) { - if (have + need <= limit) - strcat(dst, suffix); - else - rc = -1; - } - } - } -#endif - return rc; -} - -/* - * Make a database-root if it doesn't exist. - */ -static int -make_db_root(const char *path) -{ - int rc; - char fullpath[PATH_MAX]; - - if ((rc = make_db_path(fullpath, path, sizeof(fullpath))) == 0) { -#if USE_HASHED_DB - DB *capdbp; - - if ((capdbp = _nc_db_open(fullpath, TRUE)) == NULL) - rc = -1; - else if (_nc_db_close(capdbp) < 0) - rc = -1; -#else - struct stat statbuf; - - if ((rc = stat(path, &statbuf)) < 0) { - rc = mkdir(path -#if !defined(__MINGW32__) - ,0777 -#endif - ); - } else if (_nc_access(path, R_OK | W_OK | X_OK) < 0) { - rc = -1; /* permission denied */ - } else if (!(S_ISDIR(statbuf.st_mode))) { - rc = -1; /* not a directory */ - } -#endif - } - return rc; -} - -/* - * Set the write directory for compiled entries. - */ -NCURSES_EXPORT(void) -_nc_set_writedir(char *dir) -{ - const char *destination; - char actual[PATH_MAX]; - - if (dir == 0 - && use_terminfo_vars()) - dir = getenv("TERMINFO"); - - if (dir != 0) - (void) _nc_tic_dir(dir); - - destination = _nc_tic_dir(0); - if (make_db_root(destination) < 0) { - char *home = _nc_home_terminfo(); - - if (home != 0) { - destination = home; - if (make_db_root(destination) < 0) - _nc_err_abort("%s: permission denied (errno %d)", - destination, errno); - } - } - - /* - * Note: because of this code, this logic should be exercised - * *once only* per run. - */ -#if USE_HASHED_DB - make_db_path(actual, destination, sizeof(actual)); -#else - if (chdir(_nc_tic_dir(destination)) < 0 - || getcwd(actual, sizeof(actual)) == 0) - _nc_err_abort("%s: not a directory", destination); -#endif - _nc_keep_tic_dir(strdup(actual)); -} - -/* - * Save the compiled version of a description in the filesystem. - * - * make a copy of the name-list - * break it up into first-name and all-but-last-name - * creat(first-name) - * write object information to first-name - * close(first-name) - * for each name in all-but-last-name - * link to first-name - * - * Using 'time()' to obtain a reference for file timestamps is unreliable, - * e.g., with NFS, because the filesystem may have a different time - * reference. We check for pre-existence of links by latching the first - * timestamp from a file that we create. - * - * The _nc_warning() calls will report a correct line number only if - * _nc_curr_line is properly set before the write_entry() call. - */ - -NCURSES_EXPORT(void) -_nc_write_entry(TERMTYPE *const tp) -{ -#if USE_HASHED_DB - - char buffer[MAX_ENTRY_SIZE + 1]; - unsigned limit = sizeof(buffer); - unsigned offset = 0; - -#else /* !USE_HASHED_DB */ - - struct stat statbuf; - char filename[PATH_MAX]; - char linkname[PATH_MAX]; -#if USE_SYMLINKS - char symlinkname[PATH_MAX]; -#if !HAVE_LINK -#undef HAVE_LINK -#define HAVE_LINK 1 -#endif -#endif /* USE_SYMLINKS */ - - static int call_count; - static time_t start_time; /* time at start of writes */ - -#endif /* USE_HASHED_DB */ - - char name_list[MAX_TERMINFO_LENGTH]; - char *first_name, *other_names; - char *ptr; - - assert(strlen(tp->term_names) != 0); - assert(strlen(tp->term_names) < sizeof(name_list)); - - (void) strcpy(name_list, tp->term_names); - DEBUG(7, ("Name list = '%s'", name_list)); - - first_name = name_list; - - ptr = &name_list[strlen(name_list) - 1]; - other_names = ptr + 1; - - while (ptr > name_list && *ptr != '|') - ptr--; - - if (ptr != name_list) { - *ptr = '\0'; - - for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++) - continue; - - if (*ptr == '\0') - other_names = ptr; - else { - *ptr = '\0'; - other_names = ptr + 1; - } - } - - DEBUG(7, ("First name = '%s'", first_name)); - DEBUG(7, ("Other names = '%s'", other_names)); - - _nc_set_type(first_name); - -#if USE_HASHED_DB - if (write_object(tp, buffer + 1, &offset, limit - 1) != ERR) { - DB *capdb = _nc_db_open(_nc_tic_dir(0), TRUE); - DBT key, data; - - if (capdb != 0) { - buffer[0] = 0; - - memset(&key, 0, sizeof(key)); - key.data = tp->term_names; - key.size = strlen(tp->term_names); - - memset(&data, 0, sizeof(data)); - data.data = buffer; - data.size = offset + 1; - - _nc_db_put(capdb, &key, &data); - - buffer[0] = 2; - - key.data = name_list; - key.size = strlen(name_list); - - strcpy(buffer + 1, tp->term_names); - data.size = strlen(tp->term_names) + 1; - - _nc_db_put(capdb, &key, &data); - - while (*other_names != '\0') { - ptr = other_names++; - assert(ptr < buffer + sizeof(buffer) - 1); - while (*other_names != '|' && *other_names != '\0') - other_names++; - - if (*other_names != '\0') - *(other_names++) = '\0'; - - key.data = ptr; - key.size = strlen(ptr); - - _nc_db_put(capdb, &key, &data); - } - _nc_db_close(capdb); - } - } -#else /* !USE_HASHED_DB */ - if (call_count++ == 0) { - start_time = 0; - } - - if (strlen(first_name) >= sizeof(filename) - (2 + LEAF_LEN)) - _nc_warning("terminal name too long."); - - sprintf(filename, LEAF_FMT "/%s", first_name[0], first_name); - - /* - * Has this primary name been written since the first call to - * write_entry()? If so, the newer write will step on the older, - * so warn the user. - */ - if (start_time > 0 && - stat(filename, &statbuf) >= 0 - && statbuf.st_mtime >= start_time) { - _nc_warning("name multiply defined."); - } - - check_writeable(first_name[0]); - write_file(filename, tp); - - if (start_time == 0) { - if (stat(filename, &statbuf) < 0 - || (start_time = statbuf.st_mtime) == 0) { - _nc_syserr_abort("error obtaining time from %s/%s", - _nc_tic_dir(0), filename); - } - } - while (*other_names != '\0') { - ptr = other_names++; - while (*other_names != '|' && *other_names != '\0') - other_names++; - - if (*other_names != '\0') - *(other_names++) = '\0'; - - if (strlen(ptr) > sizeof(linkname) - (2 + LEAF_LEN)) { - _nc_warning("terminal alias %s too long.", ptr); - continue; - } - if (strchr(ptr, '/') != 0) { - _nc_warning("cannot link alias %s.", ptr); - continue; - } - - check_writeable(ptr[0]); - sprintf(linkname, LEAF_FMT "/%s", ptr[0], ptr); - - if (strcmp(filename, linkname) == 0) { - _nc_warning("self-synonym ignored"); - } else if (stat(linkname, &statbuf) >= 0 && - statbuf.st_mtime < start_time) { - _nc_warning("alias %s multiply defined.", ptr); - } else if (_nc_access(linkname, W_OK) == 0) -#if HAVE_LINK - { - int code; -#if USE_SYMLINKS - if (first_name[0] == linkname[0]) - strncpy(symlinkname, first_name, sizeof(symlinkname) - 1); - else { - strcpy(symlinkname, "../"); - strncat(symlinkname, filename, sizeof(symlinkname) - 4); - } - symlinkname[sizeof(symlinkname) - 1] = '\0'; -#endif /* USE_SYMLINKS */ -#if HAVE_REMOVE - code = remove(linkname); -#else - code = unlink(linkname); -#endif - if (code != 0 && errno == ENOENT) - code = 0; -#if USE_SYMLINKS - if (symlink(symlinkname, linkname) < 0) -#else - if (link(filename, linkname) < 0) -#endif /* USE_SYMLINKS */ - { - /* - * If there wasn't anything there, and we cannot - * link to the target because it is the same as the - * target, then the source must be on a filesystem - * that uses caseless filenames, such as Win32, etc. - */ - if (code == 0 && errno == EEXIST) - _nc_warning("can't link %s to %s", filename, linkname); - else if (code == 0 && (errno == EPERM || errno == ENOENT)) - write_file(linkname, tp); - else { -#if MIXEDCASE_FILENAMES - _nc_syserr_abort("can't link %s to %s", filename, linkname); -#else - _nc_warning("can't link %s to %s (errno=%d)", filename, - linkname, errno); -#endif - } - } else { - DEBUG(1, ("Linked %s", linkname)); - } - } -#else /* just make copies */ - write_file(linkname, tp); -#endif /* HAVE_LINK */ - } -#endif /* USE_HASHED_DB */ -} - -static size_t -fake_write(char *dst, - unsigned *offset, - size_t limit, - char *src, - size_t want, - size_t size) -{ - size_t have = (limit - *offset); - - want *= size; - if (have > 0) { - if (want > have) - want = have; - memcpy(dst + *offset, src, want); - *offset += (unsigned) want; - } else { - want = 0; - } - return (want / size); -} - -#define Write(buf, size, count) fake_write(buffer, offset, limit, (char *) buf, count, size) - -#undef LITTLE_ENDIAN /* BSD/OS defines this as a feature macro */ -#define HI(x) ((x) / 256) -#define LO(x) ((x) % 256) -#define LITTLE_ENDIAN(p, x) (p)[0] = (unsigned char)LO(x), \ - (p)[1] = (unsigned char)HI(x) - -#define WRITE_STRING(str) (Write(str, sizeof(char), strlen(str) + 1) == strlen(str) + 1) - -static int -compute_offsets(char **Strings, size_t strmax, short *offsets) -{ - int nextfree = 0; - size_t i; - - for (i = 0; i < strmax; i++) { - if (Strings[i] == ABSENT_STRING) { - offsets[i] = -1; - } else if (Strings[i] == CANCELLED_STRING) { - offsets[i] = -2; - } else { - offsets[i] = (short) nextfree; - nextfree += (int) strlen(Strings[i]) + 1; - TRACE_OUT(("put Strings[%d]=%s(%d)", (int) i, - _nc_visbuf(Strings[i]), (int) nextfree)); - } - } - return nextfree; -} - -static void -convert_shorts(unsigned char *buf, short *Numbers, size_t count) -{ - size_t i; - for (i = 0; i < count; i++) { - if (Numbers[i] == ABSENT_NUMERIC) { /* HI/LO won't work */ - buf[2 * i] = buf[2 * i + 1] = 0377; - } else if (Numbers[i] == CANCELLED_NUMERIC) { /* HI/LO won't work */ - buf[2 * i] = 0376; - buf[2 * i + 1] = 0377; - } else { - LITTLE_ENDIAN(buf + 2 * i, Numbers[i]); - TRACE_OUT(("put Numbers[%u]=%d", (unsigned) i, Numbers[i])); - } - } -} - -#define even_boundary(value) \ - ((value) % 2 != 0 && Write(&zero, sizeof(char), 1) != 1) - -#if NCURSES_XNAMES -static unsigned -extended_Booleans(TERMTYPE *tp) -{ - unsigned result = 0; - unsigned i; - - for (i = 0; i < tp->ext_Booleans; ++i) { - if (tp->Booleans[BOOLCOUNT + i] == TRUE) - result = (i + 1); - } - return result; -} - -static unsigned -extended_Numbers(TERMTYPE *tp) -{ - unsigned result = 0; - unsigned i; - - for (i = 0; i < tp->ext_Numbers; ++i) { - if (tp->Numbers[NUMCOUNT + i] != ABSENT_NUMERIC) - result = (i + 1); - } - return result; -} - -static unsigned -extended_Strings(TERMTYPE *tp) -{ - unsigned short result = 0; - unsigned short i; - - for (i = 0; i < tp->ext_Strings; ++i) { - if (tp->Strings[STRCOUNT + i] != ABSENT_STRING) - result = (unsigned short) (i + 1); - } - return result; -} - -/* - * _nc_align_termtype() will extend entries that are referenced in a use= - * clause - discard the unneeded data. - */ -static bool -extended_object(TERMTYPE *tp) -{ - bool result = FALSE; - - if (_nc_user_definable) { - result = ((extended_Booleans(tp) - + extended_Numbers(tp) - + extended_Strings(tp)) != 0); - } - return result; -} -#endif - -static int -write_object(TERMTYPE *tp, char *buffer, unsigned *offset, unsigned limit) -{ - char *namelist; - size_t namelen, boolmax, nummax, strmax; - char zero = '\0'; - size_t i; - int nextfree; - short offsets[MAX_ENTRY_SIZE / 2]; - unsigned char buf[MAX_ENTRY_SIZE]; - unsigned last_bool = BOOLWRITE; - unsigned last_num = NUMWRITE; - unsigned last_str = STRWRITE; - -#if NCURSES_XNAMES - /* - * Normally we limit the list of values to exclude the "obsolete" - * capabilities. However, if we are accepting extended names, add - * these as well, since they are used for supporting translation - * to/from termcap. - */ - if (_nc_user_definable) { - last_bool = BOOLCOUNT; - last_num = NUMCOUNT; - last_str = STRCOUNT; - } -#endif - - namelist = tp->term_names; - namelen = strlen(namelist) + 1; - - boolmax = 0; - for (i = 0; i < last_bool; i++) { - if (tp->Booleans[i] == TRUE) - boolmax = i + 1; - } - - nummax = 0; - for (i = 0; i < last_num; i++) { - if (tp->Numbers[i] != ABSENT_NUMERIC) - nummax = i + 1; - } - - strmax = 0; - for (i = 0; i < last_str; i++) { - if (tp->Strings[i] != ABSENT_STRING) - strmax = i + 1; - } - - nextfree = compute_offsets(tp->Strings, strmax, offsets); - - /* fill in the header */ - LITTLE_ENDIAN(buf, MAGIC); - LITTLE_ENDIAN(buf + 2, min(namelen, MAX_NAME_SIZE + 1)); - LITTLE_ENDIAN(buf + 4, boolmax); - LITTLE_ENDIAN(buf + 6, nummax); - LITTLE_ENDIAN(buf + 8, strmax); - LITTLE_ENDIAN(buf + 10, nextfree); - - /* write out the header */ - TRACE_OUT(("Header of %s @%d", namelist, *offset)); - if (Write(buf, 12, 1) != 1 - || Write(namelist, sizeof(char), namelen) != namelen) - return (ERR); - - for (i = 0; i < boolmax; i++) - if (tp->Booleans[i] == TRUE) - buf[i] = TRUE; - else - buf[i] = FALSE; - if (Write(buf, sizeof(char), boolmax) != boolmax) - return (ERR); - - if (even_boundary(namelen + boolmax)) - return (ERR); - - TRACE_OUT(("Numerics begin at %04x", *offset)); - - /* the numerics */ - convert_shorts(buf, tp->Numbers, nummax); - if (Write(buf, 2, nummax) != nummax) - return (ERR); - - TRACE_OUT(("String offsets begin at %04x", *offset)); - - /* the string offsets */ - convert_shorts(buf, offsets, strmax); - if (Write(buf, 2, strmax) != strmax) - return (ERR); - - TRACE_OUT(("String table begins at %04x", *offset)); - - /* the strings */ - for (i = 0; i < strmax; i++) - if (VALID_STRING(tp->Strings[i])) - if (!WRITE_STRING(tp->Strings[i])) - return (ERR); - -#if NCURSES_XNAMES - if (extended_object(tp)) { - unsigned extcnt = (unsigned) NUM_EXT_NAMES(tp); - - if (even_boundary(nextfree)) - return (ERR); - - nextfree = compute_offsets(tp->Strings + STRCOUNT, - tp->ext_Strings, - offsets); - TRACE_OUT(("after extended string capabilities, nextfree=%d", nextfree)); - - if (tp->ext_Strings >= SIZEOF(offsets)) - return (ERR); - - nextfree += compute_offsets(tp->ext_Names, - extcnt, - offsets + tp->ext_Strings); - TRACE_OUT(("after extended capnames, nextfree=%d", nextfree)); - strmax = tp->ext_Strings + extcnt; - - /* - * Write the extended header - */ - LITTLE_ENDIAN(buf + 0, tp->ext_Booleans); - LITTLE_ENDIAN(buf + 2, tp->ext_Numbers); - LITTLE_ENDIAN(buf + 4, tp->ext_Strings); - LITTLE_ENDIAN(buf + 6, strmax); - LITTLE_ENDIAN(buf + 8, nextfree); - TRACE_OUT(("WRITE extended-header @%d", *offset)); - if (Write(buf, 10, 1) != 1) - return (ERR); - - TRACE_OUT(("WRITE %d booleans @%d", tp->ext_Booleans, *offset)); - if (tp->ext_Booleans - && Write(tp->Booleans + BOOLCOUNT, sizeof(char), - tp->ext_Booleans) != tp->ext_Booleans) - return (ERR); - - if (even_boundary(tp->ext_Booleans)) - return (ERR); - - TRACE_OUT(("WRITE %d numbers @%d", tp->ext_Numbers, *offset)); - if (tp->ext_Numbers) { - convert_shorts(buf, tp->Numbers + NUMCOUNT, tp->ext_Numbers); - if (Write(buf, 2, tp->ext_Numbers) != tp->ext_Numbers) - return (ERR); - } - - /* - * Convert the offsets for the ext_Strings and ext_Names tables, - * in that order. - */ - convert_shorts(buf, offsets, strmax); - TRACE_OUT(("WRITE offsets @%d", *offset)); - if (Write(buf, 2, strmax) != strmax) - return (ERR); - - /* - * Write the string table after the offset tables so we do not - * have to do anything about alignment. - */ - for (i = 0; i < tp->ext_Strings; i++) { - if (VALID_STRING(tp->Strings[i + STRCOUNT])) { - TRACE_OUT(("WRITE ext_Strings[%d]=%s", (int) i, - _nc_visbuf(tp->Strings[i + STRCOUNT]))); - if (!WRITE_STRING(tp->Strings[i + STRCOUNT])) - return (ERR); - } - } - - /* - * Write the extended names - */ - for (i = 0; i < extcnt; i++) { - TRACE_OUT(("WRITE ext_Names[%d]=%s", (int) i, tp->ext_Names[i])); - if (!WRITE_STRING(tp->ext_Names[i])) - return (ERR); - } - - } -#endif /* NCURSES_XNAMES */ - - total_written++; - return (OK); -} - -/* - * Returns the total number of entries written by this process - */ -NCURSES_EXPORT(int) -_nc_tic_written(void) -{ - return total_written; -} diff --git a/deps/ncurses-5.9/ncurses/trace/README b/deps/ncurses-5.9/ncurses/trace/README deleted file mode 100644 index e658fec..0000000 --- a/deps/ncurses-5.9/ncurses/trace/README +++ /dev/null @@ -1,33 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998,2006 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. -- -------------------------------------------------------------------------------- --- $Id: README,v 1.2 2006/04/22 22:19:37 tom Exp $ -------------------------------------------------------------------------------- - -The files in this directory (trace) support both the terminfo and ncurses -libraries. Most of the functions are linked in only when the libraries -are compiled with TRACE defined. diff --git a/deps/ncurses-5.9/ncurses/trace/lib_trace.c b/deps/ncurses-5.9/ncurses/trace/lib_trace.c deleted file mode 100644 index a726901..0000000 --- a/deps/ncurses-5.9/ncurses/trace/lib_trace.c +++ /dev/null @@ -1,347 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - * and: Juergen Pfeifer * - ****************************************************************************/ - -/* - * lib_trace.c - Tracing/Debugging routines - * - * The _tracef() function is originally from pcurses (by Pavel Curtis) in 1982. - * pcurses allowed one to enable/disable tracing using traceon() and traceoff() - * functions. ncurses provides a trace() function which allows one to - * selectively enable or disable several tracing features. - */ - -#include -#include - -#include - -MODULE_ID("$Id: lib_trace.c,v 1.76 2010/12/19 01:21:19 tom Exp $") - -NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */ - -#ifdef TRACE - -#if USE_REENTRANT -NCURSES_EXPORT(const char *) -NCURSES_PUBLIC_VAR(_nc_tputs_trace) (void) -{ - return CURRENT_SCREEN ? CURRENT_SCREEN->_tputs_trace : _nc_prescreen._tputs_trace; -} -NCURSES_EXPORT(long) -NCURSES_PUBLIC_VAR(_nc_outchars) (void) -{ - return CURRENT_SCREEN ? CURRENT_SCREEN->_outchars : _nc_prescreen._outchars; -} -NCURSES_EXPORT(void) -_nc_set_tputs_trace(const char *s) -{ - if (CURRENT_SCREEN) - CURRENT_SCREEN->_tputs_trace = s; - else - _nc_prescreen._tputs_trace = s; -} -NCURSES_EXPORT(void) -_nc_count_outchars(long increment) -{ - if (CURRENT_SCREEN) - CURRENT_SCREEN->_outchars += increment; - else - _nc_prescreen._outchars += increment; -} -#else -NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace = ""; -NCURSES_EXPORT_VAR(long) _nc_outchars = 0; -#endif - -#define TraceFP _nc_globals.trace_fp -#define TracePath _nc_globals.trace_fname -#define TraceLevel _nc_globals.trace_level - -NCURSES_EXPORT(void) -trace(const unsigned int tracelevel) -{ - if ((TraceFP == 0) && tracelevel) { - const char *mode = _nc_globals.init_trace ? "ab" : "wb"; - - if (TracePath[0] == '\0') { - size_t size = sizeof(TracePath) - 12; - if (getcwd(TracePath, size) == 0) { - perror("curses: Can't get working directory"); - exit(EXIT_FAILURE); - } - TracePath[size] = '\0'; - assert(strlen(TracePath) <= size); - strcat(TracePath, "/trace"); - if (_nc_is_dir_path(TracePath)) { - strcat(TracePath, ".log"); - } - } - - _nc_globals.init_trace = TRUE; - _nc_tracing = tracelevel; - if (_nc_access(TracePath, W_OK) < 0 - || (TraceFP = fopen(TracePath, mode)) == 0) { - perror("curses: Can't open 'trace' file"); - exit(EXIT_FAILURE); - } - /* Try to set line-buffered mode, or (failing that) unbuffered, - * so that the trace-output gets flushed automatically at the - * end of each line. This is useful in case the program dies. - */ -#if HAVE_SETVBUF /* ANSI */ - (void) setvbuf(TraceFP, (char *) 0, _IOLBF, 0); -#elif HAVE_SETBUF /* POSIX */ - (void) setbuffer(TraceFP, (char *) 0); -#endif - _tracef("TRACING NCURSES version %s.%d (tracelevel=%#x)", - NCURSES_VERSION, - NCURSES_VERSION_PATCH, - tracelevel); - } else if (tracelevel == 0) { - if (TraceFP != 0) { - fclose(TraceFP); - TraceFP = 0; - } - _nc_tracing = tracelevel; - } else if (_nc_tracing != tracelevel) { - _nc_tracing = tracelevel; - _tracef("tracelevel=%#x", tracelevel); - } -} - -static void -_nc_va_tracef(const char *fmt, va_list ap) -{ - static const char Called[] = T_CALLED(""); - static const char Return[] = T_RETURN(""); - - bool before = FALSE; - bool after = FALSE; - unsigned doit = _nc_tracing; - int save_err = errno; - - if (strlen(fmt) >= sizeof(Called) - 1) { - if (!strncmp(fmt, Called, sizeof(Called) - 1)) { - before = TRUE; - TraceLevel++; - } else if (!strncmp(fmt, Return, sizeof(Return) - 1)) { - after = TRUE; - } - if (before || after) { - if ((TraceLevel <= 1) - || (doit & TRACE_ICALLS) != 0) - doit &= (TRACE_CALLS | TRACE_CCALLS); - else - doit = 0; - } - } - - if (doit != 0) { - if (TraceFP == 0) - TraceFP = stderr; -#ifdef USE_PTHREADS - /* - * TRACE_ICALLS is "really" needed to show normal use with threaded - * applications, since anything can be running during a napms(), - * making it appear in the hierarchical trace as it other functions - * are being called. - * - * Rather than add the complication of a per-thread stack, just - * show the thread-id in each line of the trace. - */ -# if USE_WEAK_SYMBOLS - if ((pthread_self)) -# endif -#ifdef __MINGW32__ - fprintf(TraceFP, "%#lx:", (long) (void *) pthread_self().p); -#else - fprintf(TraceFP, "%#lx:", (long) (void *) pthread_self()); -#endif -#endif - if (before || after) { - int n; - for (n = 1; n < TraceLevel; n++) - fputs("+ ", TraceFP); - } - vfprintf(TraceFP, fmt, ap); - fputc('\n', TraceFP); - fflush(TraceFP); - } - - if (after && TraceLevel) - TraceLevel--; - - errno = save_err; -} - -NCURSES_EXPORT(void) -_tracef(const char *fmt,...) -{ - va_list ap; - - va_start(ap, fmt); - _nc_va_tracef(fmt, ap); - va_end(ap); -} - -/* Trace 'bool' return-values */ -NCURSES_EXPORT(NCURSES_BOOL) -_nc_retrace_bool(NCURSES_BOOL code) -{ - T((T_RETURN("%s"), code ? "TRUE" : "FALSE")); - return code; -} - -/* Trace 'char' return-values */ -NCURSES_EXPORT(char) -_nc_retrace_char(char code) -{ - T((T_RETURN("%c"), code)); - return code; -} - -/* Trace 'int' return-values */ -NCURSES_EXPORT(int) -_nc_retrace_int(int code) -{ - T((T_RETURN("%d"), code)); - return code; -} - -/* Trace 'unsigned' return-values */ -NCURSES_EXPORT(unsigned) -_nc_retrace_unsigned(unsigned code) -{ - T((T_RETURN("%#x"), code)); - return code; -} - -/* Trace 'char*' return-values */ -NCURSES_EXPORT(char *) -_nc_retrace_ptr(char *code) -{ - T((T_RETURN("%s"), _nc_visbuf(code))); - return code; -} - -/* Trace 'const char*' return-values */ -NCURSES_EXPORT(const char *) -_nc_retrace_cptr(const char *code) -{ - T((T_RETURN("%s"), _nc_visbuf(code))); - return code; -} - -/* Trace 'NCURSES_CONST void*' return-values */ -NCURSES_EXPORT(NCURSES_CONST void *) -_nc_retrace_cvoid_ptr(NCURSES_CONST void *code) -{ - T((T_RETURN("%p"), code)); - return code; -} - -/* Trace 'void*' return-values */ -NCURSES_EXPORT(void *) -_nc_retrace_void_ptr(void *code) -{ - T((T_RETURN("%p"), code)); - return code; -} - -/* Trace 'SCREEN *' return-values */ -NCURSES_EXPORT(SCREEN *) -_nc_retrace_sp(SCREEN *code) -{ - T((T_RETURN("%p"), (void *) code)); - return code; -} - -/* Trace 'WINDOW *' return-values */ -NCURSES_EXPORT(WINDOW *) -_nc_retrace_win(WINDOW *code) -{ - T((T_RETURN("%p"), (void *) code)); - return code; -} - -#if USE_REENTRANT -/* - * Check if the given trace-mask is enabled. - * - * This function may be called from within one of the functions that fills - * in parameters for _tracef(), but in that case we do not want to lock the - * mutex, since it is already locked. - */ -NCURSES_EXPORT(int) -_nc_use_tracef(unsigned mask) -{ - bool result = FALSE; - - _nc_lock_global(tst_tracef); - if (!_nc_globals.nested_tracef++) { - if ((result = (_nc_tracing & (mask))) != 0 - && _nc_try_global(tracef) == 0) { - /* we will call _nc_locked_tracef(), no nesting so far */ - } else { - /* we will not call _nc_locked_tracef() */ - _nc_globals.nested_tracef = 0; - } - } else { - /* we may call _nc_locked_tracef(), but with nested_tracef > 0 */ - result = (_nc_tracing & (mask)); - } - _nc_unlock_global(tst_tracef); - return result; -} - -/* - * We call this if _nc_use_tracef() returns true, which means we must unlock - * the tracef mutex. - */ -NCURSES_EXPORT(void) -_nc_locked_tracef(const char *fmt,...) -{ - va_list ap; - - va_start(ap, fmt); - _nc_va_tracef(fmt, ap); - va_end(ap); - - if (--(_nc_globals.nested_tracef) == 0) - _nc_unlock_global(tracef); -} -#endif /* USE_REENTRANT */ - -#endif /* TRACE */ diff --git a/deps/ncurses-5.9/ncurses/trace/lib_traceatr.c b/deps/ncurses-5.9/ncurses/trace/lib_traceatr.c deleted file mode 100644 index 35ba0d3..0000000 --- a/deps/ncurses-5.9/ncurses/trace/lib_traceatr.c +++ /dev/null @@ -1,381 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Thomas Dickey 1996-on * - * and: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Juergen Pfeifer * - ****************************************************************************/ - -/* - * lib_traceatr.c - Tracing/Debugging routines (attributes) - */ - -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -MODULE_ID("$Id: lib_traceatr.c,v 1.74 2011/01/22 19:48:01 tom Exp $") - -#define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name)) - -#ifdef TRACE - -static const char l_brace[] = StringOf(L_BRACE); -static const char r_brace[] = StringOf(R_BRACE); - -#ifndef USE_TERMLIB - -#define my_buffer _nc_globals.traceatr_color_buf -#define my_select _nc_globals.traceatr_color_sel -#define my_cached _nc_globals.traceatr_color_last - -static char * -color_of(int c) -{ - if (c != my_cached) { - my_cached = c; - my_select = !my_select; - if (c == COLOR_DEFAULT) - strcpy(my_buffer[my_select], "default"); - else - sprintf(my_buffer[my_select], "color%d", c); - } - return my_buffer[my_select]; -} - -#undef my_buffer -#undef my_select -#endif /* !USE_TERMLIB */ - -NCURSES_EXPORT(char *) -_traceattr2(int bufnum, chtype newmode) -{ - static const struct { - unsigned int val; - const char *name; - } names[] = - { - /* *INDENT-OFF* */ - { A_STANDOUT, "A_STANDOUT" }, - { A_UNDERLINE, "A_UNDERLINE" }, - { A_REVERSE, "A_REVERSE" }, - { A_BLINK, "A_BLINK" }, - { A_DIM, "A_DIM" }, - { A_BOLD, "A_BOLD" }, - { A_ALTCHARSET, "A_ALTCHARSET" }, - { A_INVIS, "A_INVIS" }, - { A_PROTECT, "A_PROTECT" }, - { A_CHARTEXT, "A_CHARTEXT" }, - { A_NORMAL, "A_NORMAL" }, - { A_COLOR, "A_COLOR" }, - /* *INDENT-ON* */ - - } -#ifndef USE_TERMLIB - , - colors[] = - { - /* *INDENT-OFF* */ - { COLOR_BLACK, "COLOR_BLACK" }, - { COLOR_RED, "COLOR_RED" }, - { COLOR_GREEN, "COLOR_GREEN" }, - { COLOR_YELLOW, "COLOR_YELLOW" }, - { COLOR_BLUE, "COLOR_BLUE" }, - { COLOR_MAGENTA, "COLOR_MAGENTA" }, - { COLOR_CYAN, "COLOR_CYAN" }, - { COLOR_WHITE, "COLOR_WHITE" }, - /* *INDENT-ON* */ - - } -#endif /* !USE_TERMLIB */ - ; - size_t n; - char temp[80]; - char *result = _nc_trace_buf(bufnum, BUFSIZ); - - if (result != 0) { - unsigned save_nc_tracing = _nc_tracing; - - _nc_tracing = 0; - - strcpy(result, l_brace); - - for (n = 0; n < SIZEOF(names); n++) { - if ((newmode & names[n].val) != 0) { - if (result[1] != '\0') - (void) _nc_trace_bufcat(bufnum, "|"); - result = _nc_trace_bufcat(bufnum, names[n].name); - - if (names[n].val == A_COLOR) { - short pairnum = (short) PairNumber(newmode); -#ifdef USE_TERMLIB - /* pair_content lives in libncurses */ - (void) sprintf(temp, "{%d}", pairnum); -#else - short fg, bg; - - if (pair_content(pairnum, &fg, &bg) == OK) { - (void) sprintf(temp, - "{%d = {%s, %s}}", - pairnum, - COLOR_OF(fg), - COLOR_OF(bg)); - } else { - (void) sprintf(temp, "{%d}", pairnum); - } -#endif - result = _nc_trace_bufcat(bufnum, temp); - } - } - } - if (ChAttrOf(newmode) == A_NORMAL) { - if (result != 0 && result[1] != '\0') - (void) _nc_trace_bufcat(bufnum, "|"); - (void) _nc_trace_bufcat(bufnum, "A_NORMAL"); - } - - _nc_tracing = save_nc_tracing; - result = _nc_trace_bufcat(bufnum, r_brace); - } - return result; -} - -NCURSES_EXPORT(char *) -_traceattr(attr_t newmode) -{ - return _traceattr2(0, newmode); -} - -/* Trace 'int' return-values */ -NCURSES_EXPORT(int) -_nc_retrace_int_attr_t(attr_t code) -{ - T((T_RETURN("%s"), _traceattr(code))); - return (int) code; -} - -/* Trace 'attr_t' return-values */ -NCURSES_EXPORT(attr_t) -_nc_retrace_attr_t(attr_t code) -{ - T((T_RETURN("%s"), _traceattr(code))); - return code; -} - -const char * -_nc_altcharset_name(attr_t attr, chtype ch) -{ - typedef struct { - unsigned int val; - const char *name; - } ALT_NAMES; -#if NCURSES_SP_FUNCS - SCREEN *sp = CURRENT_SCREEN; -#endif - static const ALT_NAMES names[] = - { - {'l', "ACS_ULCORNER"}, /* upper left corner */ - {'m', "ACS_LLCORNER"}, /* lower left corner */ - {'k', "ACS_URCORNER"}, /* upper right corner */ - {'j', "ACS_LRCORNER"}, /* lower right corner */ - {'t', "ACS_LTEE"}, /* tee pointing right */ - {'u', "ACS_RTEE"}, /* tee pointing left */ - {'v', "ACS_BTEE"}, /* tee pointing up */ - {'w', "ACS_TTEE"}, /* tee pointing down */ - {'q', "ACS_HLINE"}, /* horizontal line */ - {'x', "ACS_VLINE"}, /* vertical line */ - {'n', "ACS_PLUS"}, /* large plus or crossover */ - {'o', "ACS_S1"}, /* scan line 1 */ - {'s', "ACS_S9"}, /* scan line 9 */ - {'`', "ACS_DIAMOND"}, /* diamond */ - {'a', "ACS_CKBOARD"}, /* checker board (stipple) */ - {'f', "ACS_DEGREE"}, /* degree symbol */ - {'g', "ACS_PLMINUS"}, /* plus/minus */ - {'~', "ACS_BULLET"}, /* bullet */ - {',', "ACS_LARROW"}, /* arrow pointing left */ - {'+', "ACS_RARROW"}, /* arrow pointing right */ - {'.', "ACS_DARROW"}, /* arrow pointing down */ - {'-', "ACS_UARROW"}, /* arrow pointing up */ - {'h', "ACS_BOARD"}, /* board of squares */ - {'i', "ACS_LANTERN"}, /* lantern symbol */ - {'0', "ACS_BLOCK"}, /* solid square block */ - {'p', "ACS_S3"}, /* scan line 3 */ - {'r', "ACS_S7"}, /* scan line 7 */ - {'y', "ACS_LEQUAL"}, /* less/equal */ - {'z', "ACS_GEQUAL"}, /* greater/equal */ - {'{', "ACS_PI"}, /* Pi */ - {'|', "ACS_NEQUAL"}, /* not equal */ - {'}', "ACS_STERLING"}, /* UK pound sign */ - {'\0', (char *) 0} - }; - - const char *result = 0; - -#if NCURSES_SP_FUNCS - (void) sp; -#endif - if ((attr & A_ALTCHARSET) && (acs_chars != 0)) { - char *cp; - char *found = 0; - const ALT_NAMES *strp; - - for (cp = acs_chars; cp[0] && cp[1]; cp += 2) { - if (ChCharOf(UChar(cp[1])) == ChCharOf(ch)) { - found = cp; - /* don't exit from loop - there may be redefinitions */ - } - } - - if (found != 0) { - ch = ChCharOf(UChar(*found)); - for (strp = names; strp->val; strp++) - if (strp->val == ch) { - result = strp->name; - break; - } - } - } - return result; -} - -NCURSES_EXPORT(char *) -_tracechtype2(int bufnum, chtype ch) -{ - const char *found; - char *result = _nc_trace_buf(bufnum, BUFSIZ); - - if (result != 0) { - strcpy(result, l_brace); - if ((found = _nc_altcharset_name(ChAttrOf(ch), ch)) != 0) { - (void) _nc_trace_bufcat(bufnum, found); - } else - (void) _nc_trace_bufcat(bufnum, - _nc_tracechar(CURRENT_SCREEN, - (int) ChCharOf(ch))); - - if (ChAttrOf(ch) != A_NORMAL) { - (void) _nc_trace_bufcat(bufnum, " | "); - (void) _nc_trace_bufcat(bufnum, - _traceattr2(bufnum + 20, ChAttrOf(ch))); - } - - result = _nc_trace_bufcat(bufnum, r_brace); - } - return result; -} - -NCURSES_EXPORT(char *) -_tracechtype(chtype ch) -{ - return _tracechtype2(0, ch); -} - -/* Trace 'chtype' return-values */ -NCURSES_EXPORT(chtype) -_nc_retrace_chtype(chtype code) -{ - T((T_RETURN("%s"), _tracechtype(code))); - return code; -} - -#if USE_WIDEC_SUPPORT -NCURSES_EXPORT(char *) -_tracecchar_t2(int bufnum, const cchar_t *ch) -{ - char *result = _nc_trace_buf(bufnum, BUFSIZ); - attr_t attr; - const char *found; - - if (result != 0) { - strcpy(result, l_brace); - if (ch != 0) { - attr = AttrOfD(ch); - if ((found = _nc_altcharset_name(attr, (chtype) CharOfD(ch))) != 0) { - (void) _nc_trace_bufcat(bufnum, found); - attr &= ~A_ALTCHARSET; - } else if (isWidecExt(CHDEREF(ch))) { - (void) _nc_trace_bufcat(bufnum, "{NAC}"); - attr &= ~A_CHARTEXT; - } else { - PUTC_DATA; - int n; - - PUTC_INIT; - (void) _nc_trace_bufcat(bufnum, "{ "); - for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) { - PUTC_ch = ch->chars[PUTC_i]; - if (PUTC_ch == L'\0') { - if (PUTC_i == 0) - (void) _nc_trace_bufcat(bufnum, "\\000"); - break; - } - PUTC_n = (int) wcrtomb(PUTC_buf, ch->chars[PUTC_i], &PUT_st); - if (PUTC_n <= 0) { - if (PUTC_ch != L'\0') { - /* it could not be a multibyte sequence */ - (void) _nc_trace_bufcat(bufnum, - _nc_tracechar(CURRENT_SCREEN, - UChar(ch->chars[PUTC_i]))); - } - break; - } - for (n = 0; n < PUTC_n; n++) { - if (n) - (void) _nc_trace_bufcat(bufnum, ", "); - (void) _nc_trace_bufcat(bufnum, - _nc_tracechar(CURRENT_SCREEN, - UChar(PUTC_buf[n]))); - } - } - (void) _nc_trace_bufcat(bufnum, " }"); - } - if (attr != A_NORMAL) { - (void) _nc_trace_bufcat(bufnum, " | "); - (void) _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr)); - } - } - - result = _nc_trace_bufcat(bufnum, r_brace); - } - return result; -} - -NCURSES_EXPORT(char *) -_tracecchar_t(const cchar_t *ch) -{ - return _tracecchar_t2(0, ch); -} -#endif - -#else -EMPTY_MODULE(_nc_lib_traceatr) -#endif /* TRACE */ diff --git a/deps/ncurses-5.9/ncurses/trace/lib_tracebits.c b/deps/ncurses-5.9/ncurses/trace/lib_tracebits.c deleted file mode 100644 index d19d0e4..0000000 --- a/deps/ncurses-5.9/ncurses/trace/lib_tracebits.c +++ /dev/null @@ -1,265 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -#include - -MODULE_ID("$Id: lib_tracebits.c,v 1.19 2011/01/09 00:23:03 tom Exp $") - -#if SVR4_TERMIO && !defined(_POSIX_SOURCE) -#define _POSIX_SOURCE -#endif - -#if HAVE_SYS_TERMIO_H -#include /* needed for ISC */ -#endif - -#ifdef __EMX__ -#include -#endif - -/* may be undefined if we're using termio.h */ -#ifndef TOSTOP -#define TOSTOP 0 -#endif - -#ifndef IEXTEN -#define IEXTEN 0 -#endif - -#ifndef ONLCR -#define ONLCR 0 -#endif - -#ifndef OCRNL -#define OCRNL 0 -#endif - -#ifndef ONOCR -#define ONOCR 0 -#endif - -#ifndef ONLRET -#define ONLRET 0 -#endif - -#ifdef TRACE - -typedef struct { - unsigned int val; - const char *name; -} BITNAMES; - -static void -lookup_bits(char *buf, const BITNAMES * table, const char *label, unsigned int val) -{ - const BITNAMES *sp; - - (void) strcat(buf, label); - (void) strcat(buf, ": {"); - for (sp = table; sp->name; sp++) - if (sp->val != 0 - && (val & sp->val) == sp->val) { - (void) strcat(buf, sp->name); - (void) strcat(buf, ", "); - } - if (buf[strlen(buf) - 2] == ',') - buf[strlen(buf) - 2] = '\0'; - (void) strcat(buf, "} "); -} - -NCURSES_EXPORT(char *) -_nc_trace_ttymode(TTY * tty) -/* describe the state of the terminal control bits exactly */ -{ - char *buf; - -#ifdef TERMIOS - static const BITNAMES iflags[] = - { - {BRKINT, "BRKINT"}, - {IGNBRK, "IGNBRK"}, - {IGNPAR, "IGNPAR"}, - {PARMRK, "PARMRK"}, - {INPCK, "INPCK"}, - {ISTRIP, "ISTRIP"}, - {INLCR, "INLCR"}, - {IGNCR, "IGNC"}, - {ICRNL, "ICRNL"}, - {IXON, "IXON"}, - {IXOFF, "IXOFF"}, - {0, NULL} -#define ALLIN (BRKINT|IGNBRK|IGNPAR|PARMRK|INPCK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IXOFF) - }, oflags[] = - { - {OPOST, "OPOST"}, - {OFLAGS_TABS, "XTABS"}, - {ONLCR, "ONLCR"}, - {OCRNL, "OCRNL"}, - {ONOCR, "ONOCR"}, - {ONLRET, "ONLRET"}, - {0, NULL} -#define ALLOUT (OPOST|OFLAGS_TABS|ONLCR|OCRNL|ONOCR|ONLRET) - }, cflags[] = - { - {CLOCAL, "CLOCAL"}, - {CREAD, "CREAD"}, - {CSTOPB, "CSTOPB"}, -#if !defined(CS5) || !defined(CS8) - {CSIZE, "CSIZE"}, -#endif - {HUPCL, "HUPCL"}, - {PARENB, "PARENB"}, - {PARODD | PARENB, "PARODD"}, /* concession to readability */ - {0, NULL} -#define ALLCTRL (CLOCAL|CREAD|CSIZE|CSTOPB|HUPCL|PARENB|PARODD) - }, lflags[] = - { - {ECHO, "ECHO"}, - {ECHOE | ECHO, "ECHOE"}, /* concession to readability */ - {ECHOK | ECHO, "ECHOK"}, /* concession to readability */ - {ECHONL, "ECHONL"}, - {ICANON, "ICANON"}, - {ISIG, "ISIG"}, - {NOFLSH, "NOFLSH"}, - {TOSTOP, "TOSTOP"}, - {IEXTEN, "IEXTEN"}, - {0, NULL} -#define ALLLOCAL (ECHO|ECHONL|ICANON|ISIG|NOFLSH|TOSTOP|IEXTEN) - }; - - buf = _nc_trace_buf(0, - 8 + sizeof(iflags) + - 8 + sizeof(oflags) + - 8 + sizeof(cflags) + - 8 + sizeof(lflags) + - 8); - if (buf != 0) { - - if (tty->c_iflag & ALLIN) - lookup_bits(buf, iflags, "iflags", tty->c_iflag); - - if (tty->c_oflag & ALLOUT) - lookup_bits(buf, oflags, "oflags", tty->c_oflag); - - if (tty->c_cflag & ALLCTRL) - lookup_bits(buf, cflags, "cflags", tty->c_cflag); - -#if defined(CS5) && defined(CS8) - { - static struct { - int value; - const char *name; - } csizes[] = { -#define CS_DATA(name) { name, #name " " } - CS_DATA(CS5), -#ifdef CS6 - CS_DATA(CS6), -#endif -#ifdef CS7 - CS_DATA(CS7), -#endif - CS_DATA(CS8), - }; - const char *result = "CSIZE? "; - int value = (tty->c_cflag & CSIZE); - unsigned n; - - if (value != 0) { - for (n = 0; n < SIZEOF(csizes); n++) { - if (csizes[n].value == value) { - result = csizes[n].name; - break; - } - } - } - strcat(buf, result); - } -#endif - - if (tty->c_lflag & ALLLOCAL) - lookup_bits(buf, lflags, "lflags", tty->c_lflag); - } -#else - /* reference: ttcompat(4M) on SunOS 4.1 */ -#ifndef EVENP -#define EVENP 0 -#endif -#ifndef LCASE -#define LCASE 0 -#endif -#ifndef LLITOUT -#define LLITOUT 0 -#endif -#ifndef ODDP -#define ODDP 0 -#endif -#ifndef TANDEM -#define TANDEM 0 -#endif - - static const BITNAMES cflags[] = - { - {CBREAK, "CBREAK"}, - {CRMOD, "CRMOD"}, - {ECHO, "ECHO"}, - {EVENP, "EVENP"}, - {LCASE, "LCASE"}, - {LLITOUT, "LLITOUT"}, - {ODDP, "ODDP"}, - {RAW, "RAW"}, - {TANDEM, "TANDEM"}, - {XTABS, "XTABS"}, - {0, NULL} -#define ALLCTRL (CBREAK|CRMOD|ECHO|EVENP|LCASE|LLITOUT|ODDP|RAW|TANDEM|XTABS) - }; - - buf = _nc_trace_buf(0, - 8 + sizeof(cflags)); - if (buf != 0) { - if (tty->sg_flags & ALLCTRL) { - lookup_bits(buf, cflags, "cflags", tty->sg_flags); - } - } -#endif - return (buf); -} - -NCURSES_EXPORT(char *) -_nc_tracebits(void) -{ - return _nc_trace_ttymode(&(cur_term->Nttyb)); -} -#else -EMPTY_MODULE(_nc_empty_lib_tracebits) -#endif /* TRACE */ diff --git a/deps/ncurses-5.9/ncurses/tty/tty_display.h b/deps/ncurses-5.9/ncurses/tty/tty_display.h deleted file mode 100644 index 4c45a08..0000000 --- a/deps/ncurses-5.9/ncurses/tty/tty_display.h +++ /dev/null @@ -1,140 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2003,2004 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. * - ************************************************************************** */ - -#ifndef TTY_DISPLAY_H -#define TTY_DISPLAY_H 1 - -/* - * $Id: tty_display.h,v 1.6 2005/01/01 23:41:12 tom Exp $ - */ -extern NCURSES_EXPORT(bool) _nc_tty_beep (void); -extern NCURSES_EXPORT(bool) _nc_tty_check_resize (void); -extern NCURSES_EXPORT(bool) _nc_tty_cursor (int); -extern NCURSES_EXPORT(bool) _nc_tty_flash (void); -extern NCURSES_EXPORT(bool) _nc_tty_init_color (int,int,int,int); -extern NCURSES_EXPORT(bool) _nc_tty_init_pair (int,int,int); -extern NCURSES_EXPORT(bool) _nc_tty_slk_hide (bool); -extern NCURSES_EXPORT(bool) _nc_tty_slk_update (int,const char *); -extern NCURSES_EXPORT(bool) _nc_tty_start_color (void); -extern NCURSES_EXPORT(void) _nc_tty_display_resume (void); -extern NCURSES_EXPORT(void) _nc_tty_display_suspend (void); -extern NCURSES_EXPORT(void) _nc_tty_dispose (void); /* frees SP->_term */ -extern NCURSES_EXPORT(void) _nc_tty_switch_to (void); -extern NCURSES_EXPORT(void) _nc_tty_update (void); - -struct tty_display_data { - int _fifohold; /* set if breakout marked */ - unsigned long _current_attr; /* terminal attribute current set */ - int _cursrow; /* physical cursor row (-1=unknown) */ - int _curscol; /* physical cursor column */ - - /* cursor movement costs; units are 10ths of milliseconds */ - int _char_padding; /* cost of character put */ - int _cr_cost; /* cost of (carriage_return) */ - int _cup_cost; /* cost of (cursor_address) */ - int _home_cost; /* cost of (cursor_home) */ - int _ll_cost; /* cost of (cursor_to_ll) */ -#if USE_HARD_TABS - int _ht_cost; /* cost of (tab) */ - int _cbt_cost; /* cost of (backtab) */ -#endif /* USE_HARD_TABS */ - int _cub1_cost; /* cost of (cursor_left) */ - int _cuf1_cost; /* cost of (cursor_right) */ - int _cud1_cost; /* cost of (cursor_down) */ - int _cuu1_cost; /* cost of (cursor_up) */ - int _cub_cost; /* cost of (parm_cursor_left) */ - int _cuf_cost; /* cost of (parm_cursor_right) */ - int _cud_cost; /* cost of (parm_cursor_down) */ - int _cuu_cost; /* cost of (parm_cursor_up) */ - int _hpa_cost; /* cost of (column_address) */ - int _vpa_cost; /* cost of (row_address) */ - /* used in lib_doupdate.c, must be chars */ - int _ed_cost; /* cost of (clr_eos) */ - int _el_cost; /* cost of (clr_eol) */ - int _el1_cost; /* cost of (clr_bol) */ - int _dch1_cost; /* cost of (delete_character) */ - int _ich1_cost; /* cost of (insert_character) */ - int _dch_cost; /* cost of (parm_dch) */ - int _ich_cost; /* cost of (parm_ich) */ - int _ech_cost; /* cost of (erase_chars) */ - int _rep_cost; /* cost of (repeat_char) */ - int _hpa_ch_cost; /* cost of (column_address) */ - int _cup_ch_cost; /* cost of (cursor_address) */ - int _smir_cost; /* cost of (enter_insert_mode) */ - int _rmir_cost; /* cost of (exit_insert_mode) */ - int _ip_cost; /* cost of (insert_padding) */ - /* used in lib_mvcur.c */ - char * _address_cursor; - int _carriage_return_length; - int _cursor_home_length; - int _cursor_to_ll_length; - - chtype _xmc_suppress; /* attributes to suppress if xmc */ - chtype _xmc_triggers; /* attributes to process if xmc */ - - bool _sig_winch; -}; - - -#define DelCharCost(count) \ - ((parm_dch != 0) \ - ? D->_dch_cost \ - : ((delete_character != 0) \ - ? (D->_dch1_cost * count) \ - : INFINITY)) - -#define InsCharCost(count) \ - ((parm_ich != 0) \ - ? D->_ich_cost \ - : ((enter_insert_mode && exit_insert_mode) \ - ? D->_smir_cost + D->_rmir_cost + (D->_ip_cost * count) \ - : ((insert_character != 0) \ - ? ((D->_ich1_cost + D->_ip_cost) * count) \ - : INFINITY))) - -#if USE_XMC_SUPPORT -#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) { \ - attr_t chg = D->_current_attr; \ - vidattr(AttrOf(c)); \ - if (magic_cookie_glitch > 0 \ - && XMC_CHANGES((chg ^ D->_current_attr))) { \ - T(("%s @%d before glitch %d,%d", \ - __FILE__, __LINE__, \ - D->_cursrow, \ - D->_curscol)); \ - _nc_do_xmc_glitch(chg); \ - } \ - } -#else -#define UpdateAttrs(c) if (!SameAttrOf(D->_current_attr, AttrOf(c))) \ - vidattr(AttrOf(c)); -#endif - -#define XMC_CHANGES(c) ((c) & D->_xmc_suppress) - -#endif /* TTY_DISPLAY_H */ diff --git a/deps/ncurses-5.9/ncurses/tty/tty_input.h b/deps/ncurses-5.9/ncurses/tty/tty_input.h deleted file mode 100644 index e520793..0000000 --- a/deps/ncurses-5.9/ncurses/tty/tty_input.h +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998,2000 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. * - ****************************************************************************/ - -/* - * $Id: tty_input.h,v 1.2 2000/12/10 02:26:51 tom Exp $ - */ - -#ifndef TTY_INPUT_H -#define TTY_INPUT_H 1 - -extern NCURSES_EXPORT(bool) _nc_tty_mouse_mask (mmask_t); -extern NCURSES_EXPORT(bool) _nc_tty_pending (void); -extern NCURSES_EXPORT(int) _nc_tty_next_event (int); -extern NCURSES_EXPORT(void) _nc_tty_flags_changed (void); -extern NCURSES_EXPORT(void) _nc_tty_flush (void); -extern NCURSES_EXPORT(void) _nc_tty_input_resume (void); -extern NCURSES_EXPORT(void) _nc_tty_input_suspend (void); - -struct tty_input_data { - int _ifd; /* input file ptr for screen */ - int _keypad_xmit; /* current terminal state */ - int _meta_on; /* current terminal state */ - - /* - * These are the data that support the mouse interface. - */ - bool (*_mouse_event) (SCREEN *); - bool (*_mouse_inline)(SCREEN *); - bool (*_mouse_parse) (int); - void (*_mouse_resume)(SCREEN *); - void (*_mouse_wrap) (SCREEN *); - int _mouse_fd; /* file-descriptor, if any */ - int mousetype; -}; - -#endif /* TTY_INPUT_H */ diff --git a/deps/ncurses-5.9/ncurses/unctrl.c b/deps/ncurses-5.9/ncurses/unctrl.c deleted file mode 100644 index 2cb145f..0000000 --- a/deps/ncurses-5.9/ncurses/unctrl.c +++ /dev/null @@ -1,146 +0,0 @@ -/* generated by MKunctrl.awk */ - -#include -#include - -#undef unctrl - -NCURSES_EXPORT(NCURSES_CONST char *) safe_unctrl(SCREEN *sp, chtype ch) -{ -static const short unctrl_table[] = { - 0, 3, 6, 9, 12, 15, 18, 21, - 24, 27, 30, 33, 36, 39, 42, 45, - 48, 51, 54, 57, 60, 63, 66, 69, - 72, 75, 78, 81, 84, 87, 90, 93, - 96, 98, 100, 102, 104, 106, 108, 110, - 112, 114, 116, 118, 120, 122, 124, 126, - 128, 130, 132, 134, 136, 138, 140, 142, - 144, 146, 148, 150, 152, 154, 156, 158, - 160, 162, 164, 166, 168, 170, 172, 174, - 176, 178, 180, 182, 184, 186, 188, 190, - 192, 194, 196, 198, 200, 202, 204, 206, - 208, 210, 212, 214, 216, 218, 220, 222, - 224, 226, 228, 230, 232, 234, 236, 238, - 240, 242, 244, 246, 248, 250, 252, 254, - 256, 258, 260, 262, 264, 266, 268, 270, - 272, 274, 276, 278, 280, 282, 284, 286, - 289, 292, 295, 298, 301, 304, 307, 310, - 313, 316, 319, 322, 325, 328, 331, 334, - 337, 340, 343, 346, 349, 352, 355, 358, - 361, 364, 367, 370, 373, 376, 379, 382, - 385, 389, 393, 397, 401, 405, 409, 413, - 417, 421, 425, 429, 433, 437, 441, 445, - 449, 453, 457, 461, 465, 469, 473, 477, - 481, 485, 489, 493, 497, 501, 505, 509, - 513, 517, 521, 525, 529, 533, 537, 541, - 545, 549, 553, 557, 561, 565, 569, 573, - 577, 581, 585, 589, 593, 597, 601, 605, - 609, 613, 617, 621, 625, 629, 633, 637, - 641, 645, 649, 653, 657, 661, 665, 669, - 673, 677, 681, 685, 689, 693, 697, 701, - 705, 709, 713, 717, 721, 725, 729, 733, - 737, 741, 745, 749, 753, 757, 761, 765,}; - -#if NCURSES_EXT_FUNCS -static const short unctrl_c1[] = { - 768, 770, 772, 774, 776, 778, 780, 782, - 784, 786, 788, 790, 792, 794, 796, 798, - 800, 802, 804, 806, 808, 810, 812, 814, - 816, 818, 820, 822, 824, 826, 828, 830, - 832, 834, 836, 838, 840, 842, 844, 846, - 848, 850, 852, 854, 856, 858, 860, 862, - 864, 866, 868, 870, 872, 874, 876, 878, - 880, 882, 884, 886, 888, 890, 892, 894, - 896, 898, 900, 902, 904, 906, 908, 910, - 912, 914, 916, 918, 920, 922, 924, 926, - 928, 930, 932, 934, 936, 938, 940, 942, - 944, 946, 948, 950, 952, 954, 956, 958, - 960, 962, 964, 966, 968, 970, 972, 974, - 976, 978, 980, 982, 984, 986, 988, 990, - 992, 994, 996, 998,1000,1002,1004,1006, - 1008,1010,1012,1014,1016,1018,1020,1022,}; -#endif /* NCURSES_EXT_FUNCS */ - -static const char unctrl_blob[] = - "^\100\0^\101\0^\102\0^\103\0^\104\0^\105\0^\106\0^\107\0" - "^\110\0^\111\0^\112\0^\113\0^\114\0^\115\0^\116\0^\117\0" - "^\120\0^\121\0^\122\0^\123\0^\124\0^\125\0^\126\0^\127\0" - "^\130\0^\131\0^\132\0^\133\0^\134\0^\135\0^\136\0^\137\0" - "\040\0\041\0\042\0\043\0\044\0\045\0\046\0\047\0" - "\050\0\051\0\052\0\053\0\054\0\055\0\056\0\057\0" - "\060\0\061\0\062\0\063\0\064\0\065\0\066\0\067\0" - "\070\0\071\0\072\0\073\0\074\0\075\0\076\0\077\0" - "\100\0\101\0\102\0\103\0\104\0\105\0\106\0\107\0" - "\110\0\111\0\112\0\113\0\114\0\115\0\116\0\117\0" - "\120\0\121\0\122\0\123\0\124\0\125\0\126\0\127\0" - "\130\0\131\0\132\0\133\0\134\0\135\0\136\0\137\0" - "\140\0\141\0\142\0\143\0\144\0\145\0\146\0\147\0" - "\150\0\151\0\152\0\153\0\154\0\155\0\156\0\157\0" - "\160\0\161\0\162\0\163\0\164\0\165\0\166\0\167\0" - "\170\0\171\0\172\0\173\0\174\0\175\0\176\0^?\0" - "~\100\0~\101\0~\102\0~\103\0~\104\0~\105\0~\106\0~\107\0" - "~\110\0~\111\0~\112\0~\113\0~\114\0~\115\0~\116\0~\117\0" - "~\120\0~\121\0~\122\0~\123\0~\124\0~\125\0~\126\0~\127\0" - "~\130\0~\131\0~\132\0~\133\0~\134\0~\135\0~\136\0~\137\0" - "M-\040\0M-\041\0M-\042\0M-\043\0M-\044\0M-\045\0M-\046\0M-\047\0" - "M-\050\0M-\051\0M-\052\0M-\053\0M-\054\0M-\055\0M-\056\0M-\057\0" - "M-\060\0M-\061\0M-\062\0M-\063\0M-\064\0M-\065\0M-\066\0M-\067\0" - "M-\070\0M-\071\0M-\072\0M-\073\0M-\074\0M-\075\0M-\076\0M-\077\0" - "M-\100\0M-\101\0M-\102\0M-\103\0M-\104\0M-\105\0M-\106\0M-\107\0" - "M-\110\0M-\111\0M-\112\0M-\113\0M-\114\0M-\115\0M-\116\0M-\117\0" - "M-\120\0M-\121\0M-\122\0M-\123\0M-\124\0M-\125\0M-\126\0M-\127\0" - "M-\130\0M-\131\0M-\132\0M-\133\0M-\134\0M-\135\0M-\136\0M-\137\0" - "M-\140\0M-\141\0M-\142\0M-\143\0M-\144\0M-\145\0M-\146\0M-\147\0" - "M-\150\0M-\151\0M-\152\0M-\153\0M-\154\0M-\155\0M-\156\0M-\157\0" - "M-\160\0M-\161\0M-\162\0M-\163\0M-\164\0M-\165\0M-\166\0M-\167\0" - "M-\170\0M-\171\0M-\172\0M-\173\0M-\174\0M-\175\0M-\176\0~?\0" -/* printable values in 128-255 range */ - "\200\0\201\0\202\0\203\0\204\0\205\0\206\0\207\0" - "\210\0\211\0\212\0\213\0\214\0\215\0\216\0\217\0" - "\220\0\221\0\222\0\223\0\224\0\225\0\226\0\227\0" - "\230\0\231\0\232\0\233\0\234\0\235\0\236\0\237\0" - "\240\0\241\0\242\0\243\0\244\0\245\0\246\0\247\0" - "\250\0\251\0\252\0\253\0\254\0\255\0\256\0\257\0" - "\260\0\261\0\262\0\263\0\264\0\265\0\266\0\267\0" - "\270\0\271\0\272\0\273\0\274\0\275\0\276\0\277\0" - "\300\0\301\0\302\0\303\0\304\0\305\0\306\0\307\0" - "\310\0\311\0\312\0\313\0\314\0\315\0\316\0\317\0" - "\320\0\321\0\322\0\323\0\324\0\325\0\326\0\327\0" - "\330\0\331\0\332\0\333\0\334\0\335\0\336\0\337\0" - "\340\0\341\0\342\0\343\0\344\0\345\0\346\0\347\0" - "\350\0\351\0\352\0\353\0\354\0\355\0\356\0\357\0" - "\360\0\361\0\362\0\363\0\364\0\365\0\366\0\367\0" - "\370\0\371\0\372\0\373\0\374\0\375\0\376\0\377\0" -; - - int check = ChCharOf(ch); - const char *result; - - if (check >= 0 && check < (int)SIZEOF(unctrl_table)) { -#if NCURSES_EXT_FUNCS - if ((sp != 0) - && (sp->_legacy_coding > 1) - && (check >= 128) - && (check < 160)) - result = unctrl_blob + unctrl_c1[check - 128]; - else - if ((check >= 160) - && (check < 256) - && ((sp != 0) - && ((sp->_legacy_coding > 0) - || (sp->_legacy_coding == 0 - && isprint(check))))) - result = unctrl_blob + unctrl_c1[check - 128]; - else -#endif /* NCURSES_EXT_FUNCS */ - result = unctrl_blob + unctrl_table[check]; - } else { - result = 0; - } - return (NCURSES_CONST char *)result; -} - -NCURSES_EXPORT(NCURSES_CONST char *) unctrl (chtype ch) -{ - return safe_unctrl(CURRENT_SCREEN, ch); -} diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_vid_attr.c b/deps/ncurses-5.9/ncurses/widechar/lib_vid_attr.c deleted file mode 100644 index e4cf093..0000000 --- a/deps/ncurses-5.9/ncurses/widechar/lib_vid_attr.c +++ /dev/null @@ -1,327 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2002-2009,2010 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: Thomas E. Dickey * - ****************************************************************************/ - -#include - -#ifndef CUR -#define CUR SP_TERMTYPE -#endif - -MODULE_ID("$Id: lib_vid_attr.c,v 1.14 2010/12/19 01:44:24 tom Exp $") - -#define doPut(mode) TPUTS_TRACE(#mode); NCURSES_SP_NAME(tputs)(NCURSES_SP_ARGx mode, 1, outc) - -#define TurnOn(mask,mode) \ - if ((turn_on & mask) && mode) { doPut(mode); } - -#define TurnOff(mask,mode) \ - if ((turn_off & mask) && mode) { doPut(mode); turn_off &= ~mask; } - - /* if there is no current screen, assume we *can* do color */ -#define SetColorsIf(why, old_attr, old_pair) \ - if (can_color && (why)) { \ - TR(TRACE_ATTRS, ("old pair = %d -- new pair = %d", old_pair, pair)); \ - if ((pair != old_pair) \ - || (fix_pair0 && (pair == 0)) \ - || (reverse ^ ((old_attr & A_REVERSE) != 0))) { \ - NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx \ - old_pair, pair, \ - reverse, outc); \ - } \ - } - -#define set_color(mode, pair) \ - mode &= ALL_BUT_COLOR; \ - mode |= (attr_t) ColorPair(pair) - -NCURSES_EXPORT(int) -NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx - attr_t newmode, - short pair, - void *opts GCC_UNUSED, - NCURSES_SP_OUTC outc) -{ -#if NCURSES_EXT_COLORS - static attr_t previous_attr = A_NORMAL; - static int previous_pair = 0; - - attr_t turn_on, turn_off; - bool reverse = FALSE; - bool can_color = (SP_PARM == 0 || SP_PARM->_coloron); -#if NCURSES_EXT_FUNCS - bool fix_pair0 = (SP_PARM != 0 && SP_PARM->_coloron && !SP_PARM->_default_color); -#else -#define fix_pair0 FALSE -#endif - - newmode &= A_ATTRIBUTES; - T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), pair)); - - /* this allows us to go on whether or not newterm() has been called */ - if (SP_PARM) { - previous_attr = AttrOf(SCREEN_ATTRS(SP_PARM)); - previous_pair = GetPair(SCREEN_ATTRS(SP_PARM)); - } - - TR(TRACE_ATTRS, ("previous attribute was %s, %d", - _traceattr(previous_attr), previous_pair)); - -#if !USE_XMC_SUPPORT - if ((SP_PARM != 0) - && (magic_cookie_glitch > 0)) - newmode &= ~(SP_PARM->_xmc_suppress); -#endif - - /* - * If we have a terminal that cannot combine color with video - * attributes, use the colors in preference. - */ - if ((pair != 0 - || fix_pair0) - && (no_color_video > 0)) { - /* - * If we had chosen the A_xxx definitions to correspond to the - * no_color_video mask, we could simply shift it up and mask off the - * attributes. But we did not (actually copied Solaris' definitions). - * However, this is still simpler/faster than a lookup table. - * - * The 63 corresponds to A_STANDOUT, A_UNDERLINE, A_REVERSE, A_BLINK, - * A_DIM, A_BOLD which are 1:1 with no_color_video. The bits that - * correspond to A_INVIS, A_PROTECT (192) must be shifted up 1 and - * A_ALTCHARSET (256) down 2 to line up. We use the NCURSES_BITS - * macro so this will work properly for the wide-character layout. - */ - unsigned value = no_color_video; - attr_t mask = NCURSES_BITS((value & 63) - | ((value & 192) << 1) - | ((value & 256) >> 2), 8); - - if ((mask & A_REVERSE) != 0 - && (newmode & A_REVERSE) != 0) { - reverse = TRUE; - mask &= ~A_REVERSE; - } - newmode &= ~mask; - } - - if (newmode == previous_attr - && pair == previous_pair) - returnCode(OK); - - if (reverse) { - newmode &= ~A_REVERSE; - } - - turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR; - turn_on = (newmode & ~previous_attr) & ALL_BUT_COLOR; - - SetColorsIf(((pair == 0) && !fix_pair0), previous_attr, previous_pair); - - if (newmode == A_NORMAL) { - if ((previous_attr & A_ALTCHARSET) && exit_alt_charset_mode) { - doPut(exit_alt_charset_mode); - previous_attr &= ~A_ALTCHARSET; - } - if (previous_attr) { - if (exit_attribute_mode) { - doPut(exit_attribute_mode); - } else { - if (!SP_PARM || SP_PARM->_use_rmul) { - TurnOff(A_UNDERLINE, exit_underline_mode); - } - if (!SP_PARM || SP_PARM->_use_rmso) { - TurnOff(A_STANDOUT, exit_standout_mode); - } - } - previous_attr &= ALL_BUT_COLOR; - previous_pair = 0; - } - - SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair); - } else if (set_attributes) { - if (turn_on || turn_off) { - TPUTS_TRACE("set_attributes"); - NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_9(set_attributes, - (newmode & A_STANDOUT) != 0, - (newmode & A_UNDERLINE) != 0, - (newmode & A_REVERSE) != 0, - (newmode & A_BLINK) != 0, - (newmode & A_DIM) != 0, - (newmode & A_BOLD) != 0, - (newmode & A_INVIS) != 0, - (newmode & A_PROTECT) != 0, - (newmode & A_ALTCHARSET) != 0), - 1, outc); - previous_attr &= ALL_BUT_COLOR; - previous_pair = 0; - } - SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair); - } else { - - TR(TRACE_ATTRS, ("turning %s off", _traceattr(turn_off))); - - TurnOff(A_ALTCHARSET, exit_alt_charset_mode); - - if (!SP_PARM || SP_PARM->_use_rmul) { - TurnOff(A_UNDERLINE, exit_underline_mode); - } - - if (!SP_PARM || SP_PARM->_use_rmso) { - TurnOff(A_STANDOUT, exit_standout_mode); - } - - if (turn_off && exit_attribute_mode) { - doPut(exit_attribute_mode); - turn_on |= (newmode & ALL_BUT_COLOR); - previous_attr &= ALL_BUT_COLOR; - previous_pair = 0; - } - SetColorsIf((pair != 0) || fix_pair0, previous_attr, previous_pair); - - TR(TRACE_ATTRS, ("turning %s on", _traceattr(turn_on))); - /* *INDENT-OFF* */ - TurnOn(A_ALTCHARSET, enter_alt_charset_mode); - TurnOn(A_BLINK, enter_blink_mode); - TurnOn(A_BOLD, enter_bold_mode); - TurnOn(A_DIM, enter_dim_mode); - TurnOn(A_REVERSE, enter_reverse_mode); - TurnOn(A_STANDOUT, enter_standout_mode); - TurnOn(A_PROTECT, enter_protected_mode); - TurnOn(A_INVIS, enter_secure_mode); - TurnOn(A_UNDERLINE, enter_underline_mode); -#if USE_WIDEC_SUPPORT - TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode); - TurnOn(A_LEFT, enter_left_hl_mode); - TurnOn(A_LOW, enter_low_hl_mode); - TurnOn(A_RIGHT, enter_right_hl_mode); - TurnOn(A_TOP, enter_top_hl_mode); - TurnOn(A_VERTICAL, enter_vertical_hl_mode); -#endif - /* *INDENT-ON* */ - - } - - if (reverse) - newmode |= A_REVERSE; - - if (SP_PARM) { - SetAttr(SCREEN_ATTRS(SP_PARM), newmode); - SetPair(SCREEN_ATTRS(SP_PARM), pair); - } else { - previous_attr = newmode; - previous_pair = pair; - } - - returnCode(OK); -#else - T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), pair)); - set_color(newmode, pair); - returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx newmode, outc)); -#endif -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -vid_puts(attr_t newmode, - short pair, - void *opts GCC_UNUSED, - NCURSES_OUTC outc) -{ - SetSafeOutcWrapper(outc); - return NCURSES_SP_NAME(vid_puts) (CURRENT_SCREEN, - newmode, - pair, - opts, - _nc_outc_wrapper); -} -#endif - -#undef vid_attr -NCURSES_EXPORT(int) -NCURSES_SP_NAME(vid_attr) (NCURSES_SP_DCLx - attr_t newmode, - short pair, - void *opts) -{ - T((T_CALLED("vid_attr(%s,%d)"), _traceattr(newmode), pair)); - returnCode(NCURSES_SP_NAME(vid_puts) (NCURSES_SP_ARGx - newmode, - pair, - opts, - NCURSES_SP_NAME(_nc_outch))); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(int) -vid_attr(attr_t newmode, short pair, void *opts) -{ - return NCURSES_SP_NAME(vid_attr) (CURRENT_SCREEN, newmode, pair, opts); -} -#endif - -/* - * This implementation uses the same mask values for A_xxx and WA_xxx, so - * we can use termattrs() for part of the logic. - */ -NCURSES_EXPORT(attr_t) -NCURSES_SP_NAME(term_attrs) (NCURSES_SP_DCL0) -{ - attr_t attrs; - - T((T_CALLED("term_attrs()"))); - attrs = SP_PARM ? NCURSES_SP_NAME(termattrs) (NCURSES_SP_ARG) : 0; - - /* these are only supported for wide-character mode */ - if (enter_horizontal_hl_mode) - attrs |= WA_HORIZONTAL; - if (enter_left_hl_mode) - attrs |= WA_LEFT; - if (enter_low_hl_mode) - attrs |= WA_LOW; - if (enter_right_hl_mode) - attrs |= WA_RIGHT; - if (enter_top_hl_mode) - attrs |= WA_TOP; - if (enter_vertical_hl_mode) - attrs |= WA_VERTICAL; - - returnAttr(attrs); -} - -#if NCURSES_SP_FUNCS -NCURSES_EXPORT(attr_t) -term_attrs(void) -{ - return NCURSES_SP_NAME(term_attrs) (CURRENT_SCREEN); -} -#endif diff --git a/deps/ncurses-5.9/ncurses/win32con/win_driver.c b/deps/ncurses-5.9/ncurses/win32con/win_driver.c deleted file mode 100644 index c214639..0000000 --- a/deps/ncurses-5.9/ncurses/win32con/win_driver.c +++ /dev/null @@ -1,1241 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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 * - * * - ****************************************************************************/ - -/* - * TODO - GetMousePos(POINT * result) from ntconio.c - * TODO - implement nodelay - */ - -#include -#define CUR my_term.type. - -MODULE_ID("$Id: win_driver.c,v 1.10 2010/12/25 19:28:21 tom Exp $") - -#define WINMAGIC NCDRV_MAGIC(NCDRV_WINCONSOLE) - -#define AssertTCB() assert(TCB!=0 && TCB->magic==WINMAGIC) -#define SetSP() assert(TCB->csp!=0); sp = TCB->csp - -#define GenMap(vKey,key) MAKELONG(key, vKey) - -static const LONG keylist[] = -{ - GenMap(VK_PRIOR, KEY_PPAGE), - GenMap(VK_NEXT, KEY_NPAGE), - GenMap(VK_END, KEY_END), - GenMap(VK_HOME, KEY_HOME), - GenMap(VK_LEFT, KEY_LEFT), - GenMap(VK_UP, KEY_UP), - GenMap(VK_RIGHT, KEY_RIGHT), - GenMap(VK_DOWN, KEY_DOWN), - GenMap(VK_DELETE, KEY_DC), - GenMap(VK_INSERT, KEY_IC) -}; -#define N_INI ((int)(sizeof(keylist)/sizeof(keylist[0]))) -#define FKEYS 24 -#define MAPSIZE (FKEYS + N_INI) -#define NUMPAIRS 64 - -typedef struct props { - CONSOLE_SCREEN_BUFFER_INFO SBI; - bool progMode; - DWORD map[MAPSIZE]; - DWORD rmap[MAPSIZE]; - WORD pairs[NUMPAIRS]; -} Properties; - -#define PropOf(TCB) ((Properties*)TCB->prop) - -int -_nc_mingw_ioctl(int fd GCC_UNUSED, - long int request GCC_UNUSED, - struct termios *arg GCC_UNUSED) -{ - return 0; - endwin(); - fprintf(stderr, "TERMINFO currently not supported on Windows.\n"); - exit(1); -} - -static WORD -MapColor(bool fore, int color) -{ - static const int _cmap[] = - {0, 4, 2, 6, 1, 5, 3, 7}; - int a; - if (color < 0 || color > 7) - a = fore ? 7 : 0; - else - a = _cmap[color]; - if (!fore) - a = a << 4; - return (WORD) a; -} - -static WORD -MapAttr(TERMINAL_CONTROL_BLOCK * TCB, WORD res, chtype ch) -{ - if (ch & A_COLOR) { - int p; - SCREEN *sp; - - AssertTCB(); - SetSP(); - p = PairNumber(ch); - if (p > 0 && p < NUMPAIRS && TCB != 0 && sp != 0) { - WORD a; - a = PropOf(TCB)->pairs[p]; - res = (res & 0xff00) | a; - } - } - - if (ch & A_REVERSE) - res = ((res & 0xff00) | (((res & 0x07) << 4) | ((res & 0x70) >> 4))); - - if (ch & A_STANDOUT) - res = ((res & 0xff00) | (((res & 0x07) << 4) | ((res & 0x70) >> 4)) - | BACKGROUND_INTENSITY); - - if (ch & A_BOLD) - res |= FOREGROUND_INTENSITY; - - if (ch & A_DIM) - res |= BACKGROUND_INTENSITY; - - return res; -} - -static BOOL -con_write(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n) -{ - CHAR_INFO ci[n]; - COORD loc, siz; - SMALL_RECT rec; - int i; - chtype ch; - SCREEN *sp; - - AssertTCB(); - - if (TCB == 0 || InvalidConsoleHandle(TCB->hdl)) - return FALSE; - - SetSP(); - - for (i = 0; i < n; i++) { - ch = str[i]; - ci[i].Char.AsciiChar = ChCharOf(ch); - ci[i].Attributes = MapAttr(TCB, - PropOf(TCB)->SBI.wAttributes, - ChAttrOf(ch)); - if (ChAttrOf(ch) & A_ALTCHARSET) { - if (sp->_acs_map) - ci[i].Char.AsciiChar = - ChCharOf(NCURSES_SP_NAME(_nc_acs_char) (sp, ChCharOf(ch))); - } - } - - loc.X = (short) 0; - loc.Y = (short) 0; - siz.X = (short) n; - siz.Y = 1; - - rec.Left = (short) x; - rec.Top = (short) y; - rec.Right = (short) (x + n - 1); - rec.Bottom = rec.Top; - - return WriteConsoleOutput(TCB->hdl, ci, siz, loc, &rec); -} - -#define MARK_NOCHANGE(win,row) \ - win->_line[row].firstchar = _NOCHANGE; \ - win->_line[row].lastchar = _NOCHANGE - -static int -drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB) -{ - int y, nonempty, n, x0, x1, Width, Height; - SCREEN *sp; - - AssertTCB(); - SetSP(); - - Width = screen_columns(sp); - Height = screen_lines(sp); - nonempty = min(Height, NewScreen(sp)->_maxy + 1); - - if ((CurScreen(sp)->_clear || NewScreen(sp)->_clear)) { - int x; - chtype empty[Width]; - - for (x = 0; x < Width; x++) - empty[x] = ' '; - - for (y = 0; y < nonempty; y++) { - con_write(TCB, y, 0, empty, Width); - memcpy(empty, - CurScreen(sp)->_line[y].text, - Width * sizeof(chtype)); - } - CurScreen(sp)->_clear = FALSE; - NewScreen(sp)->_clear = FALSE; - touchwin(NewScreen(sp)); - } - - for (y = 0; y < nonempty; y++) { - x0 = NewScreen(sp)->_line[y].firstchar; - if (x0 != _NOCHANGE) { - x1 = NewScreen(sp)->_line[y].lastchar; - n = x1 - x0 + 1; - if (n > 0) { - memcpy(CurScreen(sp)->_line[y].text + x0, - NewScreen(sp)->_line[y].text + x0, - n * sizeof(chtype)); - con_write(TCB, - y, - x0, - ((chtype *) CurScreen(sp)->_line[y].text) + x0, n); - - /* mark line changed successfully */ - if (y <= NewScreen(sp)->_maxy) { - MARK_NOCHANGE(NewScreen(sp), y); - } - if (y <= CurScreen(sp)->_maxy) { - MARK_NOCHANGE(CurScreen(sp), y); - } - } - } - } - - /* put everything back in sync */ - for (y = nonempty; y <= NewScreen(sp)->_maxy; y++) { - MARK_NOCHANGE(NewScreen(sp), y); - } - for (y = nonempty; y <= CurScreen(sp)->_maxy; y++) { - MARK_NOCHANGE(CurScreen(sp), y); - } - - if (!NewScreen(sp)->_leaveok) { - CurScreen(sp)->_curx = NewScreen(sp)->_curx; - CurScreen(sp)->_cury = NewScreen(sp)->_cury; - - TCB->drv->hwcur(TCB, 0, 0, CurScreen(sp)->_cury, CurScreen(sp)->_curx); - } - SetConsoleActiveScreenBuffer(TCB->hdl); - return OK; -} - -static bool -drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, - const char *tname, - int *errret GCC_UNUSED) -{ - bool code = FALSE; - - T((T_CALLED("win32con::drv_CanHandle(%p)"), TCB)); - - assert(TCB != 0); - assert(tname != 0); - - TCB->magic = WINMAGIC; - if (*tname == 0 || *tname == 0) { - code = TRUE; - } else { - TERMINAL my_term; - int status; - - code = FALSE; -#if (USE_DATABASE || USE_TERMCAP) - status = _nc_setup_tinfo(tname, &my_term.type); -#else - status = TGETENT_NO; -#endif - if (status != TGETENT_YES) { - const TERMTYPE *fallback = _nc_fallback(tname); - - if (fallback) { - my_term.type = *fallback; - status = TGETENT_YES; - } else if (!strcmp(tname, "unknown")) { - code = TRUE; - } - } - if (status == TGETENT_YES) { - if (generic_type || hard_copy) - code = TRUE; - } - } - - if (code) { - if ((TCB->term.type.Booleans) == 0) { - _nc_init_entry(&(TCB->term.type)); - } - } - - returnBool(code); -} - -static int -drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, - bool beepFlag GCC_UNUSED) -{ - SCREEN *sp; - int res = ERR; - - AssertTCB(); - SetSP(); - - return res; -} - -static int -drv_print(TERMINAL_CONTROL_BLOCK * TCB, - char *data GCC_UNUSED, - int len GCC_UNUSED) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); - - return ERR; -} - -static int -drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB, - int fg GCC_UNUSED, - int bg GCC_UNUSED) -{ - SCREEN *sp; - int code = ERR; - - AssertTCB(); - SetSP(); - - return (code); -} - -static void -drv_setcolor(TERMINAL_CONTROL_BLOCK * TCB, - bool fore, - int color, - int (*outc) (SCREEN *, int) GCC_UNUSED) -{ - AssertTCB(); - - if (TCB && !InvalidConsoleHandle(TCB->hdl)) { - WORD a = MapColor(fore, color); - a = ((PropOf(TCB)->SBI.wAttributes) & (fore ? 0xfff8 : 0xff8f)) | a; - SetConsoleTextAttribute(TCB->hdl, a); - GetConsoleScreenBufferInfo(TCB->hdl, &(PropOf(TCB)->SBI)); - } -} - -static bool -drv_rescol(TERMINAL_CONTROL_BLOCK * TCB) -{ - bool res = FALSE; - - AssertTCB(); - if (TCB && !InvalidConsoleHandle(TCB->hdl)) { - WORD a = FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN; - SetConsoleTextAttribute(TCB->hdl, a); - GetConsoleScreenBufferInfo(TCB->hdl, &(PropOf(TCB)->SBI)); - res = TRUE; - } - return res; -} - -static bool -drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB) -{ - int result = FALSE; - SCREEN *sp; - - AssertTCB(); - SetSP(); - - return result; -} - -static int -drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *Lines, int *Cols) -{ - AssertTCB(); - - if (TCB == NULL || Lines == NULL || Cols == NULL || InvalidConsoleHandle(TCB->hdl)) - return ERR; - - *Lines = (int) (PropOf(TCB)->SBI.dwSize.Y); - *Cols = (int) (PropOf(TCB)->SBI.dwSize.X); - return OK; -} - -static int -drv_setsize(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, - int l GCC_UNUSED, - int c GCC_UNUSED) -{ - AssertTCB(); - return ERR; -} - -static int -drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, bool setFlag, TTY * buf) -{ - DWORD dwFlag = 0; - tcflag_t iflag; - tcflag_t lflag; - - AssertTCB(); - - if (TCB == 0 || buf == NULL) - return ERR; - - if (setFlag) { - iflag = buf->c_iflag; - lflag = buf->c_lflag; - - GetConsoleMode(TCB->inp, &dwFlag); - - if (lflag & ICANON) - dwFlag |= ENABLE_LINE_INPUT; - else - dwFlag &= ~ENABLE_LINE_INPUT; - - if (lflag & ECHO) - dwFlag |= ENABLE_ECHO_INPUT; - else - dwFlag &= ~ENABLE_ECHO_INPUT; - - if (iflag & BRKINT) - dwFlag |= ENABLE_PROCESSED_INPUT; - else - dwFlag &= ~ENABLE_PROCESSED_INPUT; - - dwFlag |= ENABLE_MOUSE_INPUT; - - buf->c_iflag = iflag; - buf->c_lflag = lflag; - SetConsoleMode(TCB->inp, dwFlag); - TCB->term.Nttyb = *buf; - } else { - iflag = TCB->term.Nttyb.c_iflag; - lflag = TCB->term.Nttyb.c_lflag; - GetConsoleMode(TCB->inp, &dwFlag); - - if (dwFlag & ENABLE_LINE_INPUT) - lflag |= ICANON; - else - lflag &= ~ICANON; - - if (dwFlag & ENABLE_ECHO_INPUT) - lflag |= ECHO; - else - lflag &= ~ECHO; - - if (dwFlag & ENABLE_PROCESSED_INPUT) - iflag |= BRKINT; - else - iflag &= ~BRKINT; - - TCB->term.Nttyb.c_iflag = iflag; - TCB->term.Nttyb.c_lflag = lflag; - - *buf = TCB->term.Nttyb; - } - return OK; -} - -static int -drv_mode(TERMINAL_CONTROL_BLOCK * TCB, bool progFlag, bool defFlag) -{ - SCREEN *sp; - TERMINAL *_term = (TERMINAL *) TCB; - int code = ERR; - - AssertTCB(); - sp = TCB->csp; - - PropOf(TCB)->progMode = progFlag; - SetConsoleActiveScreenBuffer(progFlag ? TCB->hdl : TCB->out); - - if (progFlag) /* prog mode */ { - if (defFlag) { - if ((drv_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) { - _term->Nttyb.c_oflag &= ~OFLAGS_TABS; - code = OK; - } - } else { - /* reset_prog_mode */ - if (drv_sgmode(TCB, TRUE, &(_term->Nttyb)) == OK) { - if (sp) { - if (sp->_keypad_on) - _nc_keypad(sp, TRUE); - NC_BUFFERED(sp, TRUE); - } - code = OK; - } - } - } else { /* shell mode */ - if (defFlag) { - /* def_shell_mode */ - if (drv_sgmode(TCB, FALSE, &(_term->Ottyb)) == OK) { - code = OK; - } - } else { - /* reset_shell_mode */ - if (sp) { - _nc_keypad(sp, FALSE); - NCURSES_SP_NAME(_nc_flush) (sp); - NC_BUFFERED(sp, FALSE); - } - code = drv_sgmode(TCB, TRUE, &(_term->Ottyb)); - } - } - - return (code); -} - -static void -drv_screen_init(SCREEN *sp GCC_UNUSED) -{ -} - -static void -drv_wrap(SCREEN *sp GCC_UNUSED) -{ -} - -static int -rkeycompare(const void *el1, const void *el2) -{ - WORD key1 = (LOWORD((*((const LONG *) el1)))) & 0x7fff; - WORD key2 = (LOWORD((*((const LONG *) el2)))) & 0x7fff; - - return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1)); -} - -static int -keycompare(const void *el1, const void *el2) -{ - WORD key1 = HIWORD((*((const LONG *) el1))); - WORD key2 = HIWORD((*((const LONG *) el2))); - - return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1)); -} - -static int -MapKey(TERMINAL_CONTROL_BLOCK * TCB, WORD vKey) -{ - WORD nKey = 0; - void *res; - LONG key = GenMap(vKey, 0); - int code = -1; - - AssertTCB(); - - res = bsearch(&key, - PropOf(TCB)->map, - (size_t) (N_INI + FKEYS), - sizeof(keylist[0]), - keycompare); - if (res) { - key = *((LONG *) res); - nKey = LOWORD(key); - code = (int) (nKey & 0x7fff); - if (nKey & 0x8000) - code = -code; - } - return code; -} - -static void -drv_release(TERMINAL_CONTROL_BLOCK * TCB) -{ - T((T_CALLED("win32con::drv_release(%p)"), TCB)); - - AssertTCB(); - if (TCB->prop) - free(TCB->prop); - - returnVoid; -} - -static void -drv_init(TERMINAL_CONTROL_BLOCK * TCB) -{ - DWORD num_buttons; - - T((T_CALLED("win32con::drv_init(%p)"), TCB)); - - AssertTCB(); - - if (TCB) { - BOOL b = AllocConsole(); - WORD a; - int i; - - if (!b) - b = AttachConsole(ATTACH_PARENT_PROCESS); - - TCB->inp = GetStdHandle(STD_INPUT_HANDLE); - TCB->out = GetStdHandle(STD_OUTPUT_HANDLE); - - if (getenv("NCGDB")) - TCB->hdl = TCB->out; - else - TCB->hdl = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, - 0, - NULL, - CONSOLE_TEXTMODE_BUFFER, - NULL); - - if (!InvalidConsoleHandle(TCB->hdl)) { - TCB->prop = typeCalloc(Properties, 1); - GetConsoleScreenBufferInfo(TCB->hdl, &(PropOf(TCB)->SBI)); - } - - TCB->info.initcolor = TRUE; - TCB->info.canchange = FALSE; - TCB->info.hascolor = TRUE; - TCB->info.caninit = TRUE; - - TCB->info.maxpairs = NUMPAIRS; - TCB->info.maxcolors = 8; - TCB->info.numlabels = 0; - TCB->info.labelwidth = 0; - TCB->info.labelheight = 0; - TCB->info.nocolorvideo = 1; - TCB->info.tabsize = 8; - - if (GetNumberOfConsoleMouseButtons(&num_buttons)) { - T(("mouse has %ld buttons", num_buttons)); - TCB->info.numbuttons = num_buttons; - } else { - TCB->info.numbuttons = 1; - } - - TCB->info.defaultPalette = _nc_cga_palette; - - for (i = 0; i < (N_INI + FKEYS); i++) { - if (i < N_INI) - PropOf(TCB)->rmap[i] = PropOf(TCB)->map[i] = keylist[i]; - else - PropOf(TCB)->rmap[i] = PropOf(TCB)->map[i] = - GenMap((VK_F1 + (i - N_INI)), (KEY_F(1) + (i - N_INI))); - } - qsort(PropOf(TCB)->map, - (size_t) (MAPSIZE), - sizeof(keylist[0]), - keycompare); - qsort(PropOf(TCB)->rmap, - (size_t) (MAPSIZE), - sizeof(keylist[0]), - rkeycompare); - - a = MapColor(true, COLOR_WHITE) | MapColor(false, COLOR_BLACK); - for (i = 0; i < NUMPAIRS; i++) - PropOf(TCB)->pairs[i] = a; - } - returnVoid; -} - -static void -drv_initpair(TERMINAL_CONTROL_BLOCK * TCB, - short pair, - short f, - short b) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); - - if ((pair > 0) && (pair < NUMPAIRS) && (f >= 0) && (f < 8) - && (b >= 0) && (b < 8)) { - PropOf(TCB)->pairs[pair] = MapColor(true, f) | MapColor(false, b); - } -} - -static void -drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB, - short color GCC_UNUSED, - short r GCC_UNUSED, - short g GCC_UNUSED, - short b GCC_UNUSED) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); -} - -static void -drv_do_color(TERMINAL_CONTROL_BLOCK * TCB, - short old_pair GCC_UNUSED, - short pair GCC_UNUSED, - bool reverse GCC_UNUSED, - int (*outc) (SCREEN *, int) GCC_UNUSED -) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); -} - -static void -drv_initmouse(TERMINAL_CONTROL_BLOCK * TCB) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); - - sp->_mouse_type = M_TERM_DRIVER; -} - -static int -drv_testmouse(TERMINAL_CONTROL_BLOCK * TCB, int delay) -{ - int rc = 0; - SCREEN *sp; - - AssertTCB(); - SetSP(); - - if (sp->_drv_mouse_head < sp->_drv_mouse_tail) { - rc = TW_MOUSE; - } else { - rc = TCBOf(sp)->drv->twait(TCBOf(sp), - TWAIT_MASK, - delay, - (int *) 0 - EVENTLIST_2nd(evl)); - } - - return rc; -} - -static int -drv_mvcur(TERMINAL_CONTROL_BLOCK * TCB, - int yold GCC_UNUSED, int xold GCC_UNUSED, - int y, int x) -{ - int ret = ERR; - if (TCB && !InvalidConsoleHandle(TCB->hdl)) { - COORD loc; - loc.X = (short) x; - loc.Y = (short) y; - SetConsoleCursorPosition(TCB->hdl, loc); - ret = OK; - } - return ret; -} - -static void -drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB, - int labnum GCC_UNUSED, - char *text GCC_UNUSED) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); -} - -static void -drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, - bool OnFlag GCC_UNUSED) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); -} - -static chtype -drv_conattr(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED) -{ - chtype res = A_NORMAL; - res |= (A_BOLD | A_DIM | A_REVERSE | A_STANDOUT | A_COLOR); - return res; -} - -static void -drv_setfilter(TERMINAL_CONTROL_BLOCK * TCB) -{ - SCREEN *sp; - - AssertTCB(); - SetSP(); -} - -static void -drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, - chtype *real_map GCC_UNUSED, - chtype *fake_map GCC_UNUSED) -{ -#define DATA(a,b) { a, b } - static struct { - int acs_code; - int use_code; - } table[] = { - DATA('a', 0xb1), /* ACS_CKBOARD */ - DATA('f', 0xf8), /* ACS_DEGREE */ - DATA('g', 0xf1), /* ACS_PLMINUS */ - DATA('j', 0xd9), /* ACS_LRCORNER */ - DATA('l', 0xda), /* ACS_ULCORNER */ - DATA('k', 0xbf), /* ACS_URCORNER */ - DATA('m', 0xc0), /* ACS_LLCORNER */ - DATA('n', 0xc5), /* ACS_PLUS */ - DATA('q', 0xc4), /* ACS_HLINE */ - DATA('t', 0xc3), /* ACS_LTEE */ - DATA('u', 0xb4), /* ACS_RTEE */ - DATA('v', 0xc1), /* ACS_BTEE */ - DATA('w', 0xc2), /* ACS_TTEE */ - DATA('x', 0xb3), /* ACS_VLINE */ - DATA('y', 0xf3), /* ACS_LEQUAL */ - DATA('z', 0xf2), /* ACS_GEQUAL */ - DATA('0', 0xdb), /* ACS_BLOCK */ - DATA('{', 0xe3), /* ACS_PI */ - DATA('}', 0x9c), /* ACS_STERLING */ - DATA(',', 0xae), /* ACS_LARROW */ - DATA('+', 0xaf), /* ACS_RARROW */ - DATA('~', 0xf9), /* ACS_BULLET */ - }; -#undef DATA - unsigned n; - - SCREEN *sp; - AssertTCB(); - SetSP(); - - for (n = 0; n < SIZEOF(table); ++n) { - real_map[table[n].acs_code] = table[n].use_code | A_ALTCHARSET; - if (sp != 0) - sp->_screen_acs_map[table[n].acs_code] = TRUE; - } -} - -static ULONGLONG -tdiff(FILETIME fstart, FILETIME fend) -{ - ULARGE_INTEGER ustart; - ULARGE_INTEGER uend; - ULONGLONG diff; - - ustart.LowPart = fstart.dwLowDateTime; - ustart.HighPart = fstart.dwHighDateTime; - uend.LowPart = fend.dwLowDateTime; - uend.HighPart = fend.dwHighDateTime; - - diff = (uend.QuadPart - ustart.QuadPart) / 10000; - return diff; -} - -static int -Adjust(int milliseconds, int diff) -{ - if (milliseconds == INFINITY) - return milliseconds; - milliseconds -= diff; - if (milliseconds < 0) - milliseconds = 0; - return milliseconds; -} - -#define BUTTON_MASK (FROM_LEFT_1ST_BUTTON_PRESSED | \ - FROM_LEFT_2ND_BUTTON_PRESSED | \ - FROM_LEFT_3RD_BUTTON_PRESSED | \ - FROM_LEFT_4TH_BUTTON_PRESSED | \ - RIGHTMOST_BUTTON_PRESSED) - -static int -decode_mouse(TERMINAL_CONTROL_BLOCK * TCB, int mask) -{ - SCREEN *sp; - int result = 0; - - AssertTCB(); - SetSP(); - - if (mask & FROM_LEFT_1ST_BUTTON_PRESSED) - result |= BUTTON1_PRESSED; - if (mask & FROM_LEFT_2ND_BUTTON_PRESSED) - result |= BUTTON2_PRESSED; - if (mask & FROM_LEFT_3RD_BUTTON_PRESSED) - result |= BUTTON3_PRESSED; - if (mask & FROM_LEFT_4TH_BUTTON_PRESSED) - result |= BUTTON4_PRESSED; - - if (mask & RIGHTMOST_BUTTON_PRESSED) { - switch (TCB->info.numbuttons) { - case 1: - result |= BUTTON1_PRESSED; - break; - case 2: - result |= BUTTON2_PRESSED; - break; - case 3: - result |= BUTTON3_PRESSED; - break; - case 4: - result |= BUTTON4_PRESSED; - break; - } - } - - return result; -} - -static int -drv_twait(TERMINAL_CONTROL_BLOCK * TCB, - int mode, - int milliseconds, - int *timeleft - EVENTLIST_2nd(_nc_eventlist * evl)) -{ - SCREEN *sp; - INPUT_RECORD inp_rec; - BOOL b; - DWORD nRead = 0, rc = -1; - int code = 0; - FILETIME fstart; - FILETIME fend; - int diff; - bool isImmed = (milliseconds == 0); - -#define CONSUME() ReadConsoleInput(TCB->inp,&inp_rec,1,&nRead) - - AssertTCB(); - SetSP(); - - TR(TRACE_IEVENT, ("start twait: %d milliseconds, mode: %d", - milliseconds, mode)); - - if (milliseconds < 0) - milliseconds = INFINITY; - - memset(&inp_rec, 0, sizeof(inp_rec)); - - while (true) { - GetSystemTimeAsFileTime(&fstart); - rc = WaitForSingleObject(TCB->inp, milliseconds); - GetSystemTimeAsFileTime(&fend); - diff = (int) tdiff(fstart, fend); - milliseconds = Adjust(milliseconds, diff); - - if (!isImmed && milliseconds == 0) - break; - - if (rc == WAIT_OBJECT_0) { - if (mode) { - b = GetNumberOfConsoleInputEvents(TCB->inp, &nRead); - if (b && nRead > 0) { - b = PeekConsoleInput(TCB->inp, &inp_rec, 1, &nRead); - if (b && nRead > 0) { - switch (inp_rec.EventType) { - case KEY_EVENT: - if (mode & TW_INPUT) { - WORD vk = inp_rec.Event.KeyEvent.wVirtualKeyCode; - char ch = inp_rec.Event.KeyEvent.uChar.AsciiChar; - - if (inp_rec.Event.KeyEvent.bKeyDown) { - if (0 == ch) { - int nKey = MapKey(TCB, vk); - if ((nKey < 0) || FALSE == sp->_keypad_on) { - CONSUME(); - continue; - } - } - code = TW_INPUT; - goto end; - } else { - CONSUME(); - } - } - continue; - case MOUSE_EVENT: - if (decode_mouse(TCB, - (inp_rec.Event.MouseEvent.dwButtonState - & BUTTON_MASK)) == 0) { - CONSUME(); - } else if (mode & TW_MOUSE) { - code = TW_MOUSE; - goto end; - } - continue; - default: - SetConsoleActiveScreenBuffer(!PropOf(TCB)->progMode ? - TCB->hdl : TCB->out); - continue; - } - } - } - } - continue; - } else { - if (rc != WAIT_TIMEOUT) { - code = -1; - break; - } else { - code = 0; - break; - } - } - } - end: - - TR(TRACE_IEVENT, ("end twait: returned %d (%d), remaining time %d msec", - code, errno, milliseconds)); - - if (timeleft) - *timeleft = milliseconds; - - return code; -} - -static bool -handle_mouse(TERMINAL_CONTROL_BLOCK * TCB, MOUSE_EVENT_RECORD mer) -{ - SCREEN *sp; - MEVENT work; - bool result = FALSE; - - AssertTCB(); - SetSP(); - - sp->_drv_mouse_old_buttons = sp->_drv_mouse_new_buttons; - sp->_drv_mouse_new_buttons = mer.dwButtonState & BUTTON_MASK; - - /* - * We're only interested if the button is pressed or released. - * FIXME: implement continuous event-tracking. - */ - if (sp->_drv_mouse_new_buttons != sp->_drv_mouse_old_buttons) { - - memset(&work, 0, sizeof(work)); - - if (sp->_drv_mouse_new_buttons) { - - work.bstate |= decode_mouse(TCB, sp->_drv_mouse_new_buttons); - - } else { - - /* cf: BUTTON_PRESSED, BUTTON_RELEASED */ - work.bstate |= (decode_mouse(TCB, sp->_drv_mouse_old_buttons) >> 1); - - result = TRUE; - } - - work.x = mer.dwMousePosition.X; - work.y = mer.dwMousePosition.Y; - - sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work; - sp->_drv_mouse_tail += 1; - } - - return result; -} - -static int -drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf) -{ - SCREEN *sp; - int n = 1; - INPUT_RECORD inp_rec; - BOOL b; - DWORD nRead; - WORD vk; - WORD sc; - - AssertTCB(); - assert(buf); - SetSP(); - - memset(&inp_rec, 0, sizeof(inp_rec)); - - T((T_CALLED("win32con::drv_read(%p)"), TCB)); - while ((b = ReadConsoleInput(TCB->inp, &inp_rec, 1, &nRead))) { - if (b && nRead > 0) { - if (inp_rec.EventType == KEY_EVENT) { - if (!inp_rec.Event.KeyEvent.bKeyDown) - continue; - *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar; - vk = inp_rec.Event.KeyEvent.wVirtualKeyCode; - sc = inp_rec.Event.KeyEvent.wVirtualScanCode; - if (*buf == 0) { - if (sp->_keypad_on) { - *buf = MapKey(TCB, vk); - if (0 > (*buf)) - continue; - else - break; - } else - continue; - } else { /* *buf != 0 */ - break; - } - } else if (inp_rec.EventType == MOUSE_EVENT) { - if (handle_mouse(TCB, inp_rec.Event.MouseEvent)) { - *buf = KEY_MOUSE; - break; - } - } - continue; - } - } - returnCode(n); -} - -static int -drv_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms) -{ - Sleep(ms); - return OK; -} - -static bool -drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int keycode) -{ - SCREEN *sp; - WORD nKey; - void *res; - bool found = FALSE; - LONG key = GenMap(0, (WORD) keycode); - - AssertTCB(); - SetSP(); - - AssertTCB(); - - res = bsearch(&key, - PropOf(TCB)->rmap, - (size_t) (N_INI + FKEYS), - sizeof(keylist[0]), - rkeycompare); - if (res) { - key = *((LONG *) res); - nKey = LOWORD(key); - if (!(nKey & 0x8000)) - found = TRUE; - } - return found; -} - -static int -drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, bool flag GCC_UNUSED) -{ - SCREEN *sp; - int code = ERR; - - AssertTCB(); - sp = TCB->csp; - - if (sp) { - code = OK; - } - return code; -} - -static int -drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int keycode, bool flag) -{ - int code = ERR; - SCREEN *sp; - WORD nKey; - WORD vKey; - void *res; - LONG key = GenMap(0, (WORD) keycode); - - AssertTCB(); - SetSP(); - - if (sp) { - res = bsearch(&key, - PropOf(TCB)->rmap, - (size_t) (N_INI + FKEYS), - sizeof(keylist[0]), - rkeycompare); - if (res) { - key = *((LONG *) res); - vKey = HIWORD(key); - nKey = (LOWORD(key)) & 0x7fff; - if (!flag) - nKey |= 0x8000; - *(LONG *) res = GenMap(vKey, nKey); - } - } - return code; -} - -NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_WIN_DRIVER = { - FALSE, - drv_CanHandle, /* CanHandle */ - drv_init, /* init */ - drv_release, /* release */ - drv_size, /* size */ - drv_sgmode, /* sgmode */ - drv_conattr, /* conattr */ - drv_mvcur, /* hwcur */ - drv_mode, /* mode */ - drv_rescol, /* rescol */ - drv_rescolors, /* rescolors */ - drv_setcolor, /* color */ - drv_dobeepflash, /* DoBeepFlash */ - drv_initpair, /* initpair */ - drv_initcolor, /* initcolor */ - drv_do_color, /* docolor */ - drv_initmouse, /* initmouse */ - drv_testmouse, /* testmouse */ - drv_setfilter, /* setfilter */ - drv_hwlabel, /* hwlabel */ - drv_hwlabelOnOff, /* hwlabelOnOff */ - drv_doupdate, /* update */ - drv_defaultcolors, /* defaultcolors */ - drv_print, /* print */ - drv_size, /* getsize */ - drv_setsize, /* setsize */ - drv_initacs, /* initacs */ - drv_screen_init, /* scinit */ - drv_wrap, /* scexit */ - drv_twait, /* twait */ - drv_read, /* read */ - drv_nap, /* nap */ - drv_kpad, /* kpad */ - drv_keyok, /* kyOk */ - drv_kyExist /* kyExist */ -}; diff --git a/deps/ncurses-5.9/panel/Makefile b/deps/ncurses-5.9/panel/Makefile deleted file mode 100644 index a395b09..0000000 --- a/deps/ncurses-5.9/panel/Makefile +++ /dev/null @@ -1,369 +0,0 @@ -# $Id: Makefile.in,v 1.58 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for panels source code. -# -# This makes the following: -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - -THIS = Makefile - -x = -o = .o - -MODEL = normal -DESTDIR = -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -bindir = ${exec_prefix}/bin -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include/ncurses -datadir = ${prefix}/share - -LIBTOOL = -LIBTOOL_CLEAN = -LIBTOOL_COMPILE = -LIBTOOL_LINK = ${CC} -LIBTOOL_INSTALL = -LIBTOOL_UNINSTALL = -LT_UNDEF = - -INSTALL = /bin/install -c -INSTALL_LIB = /bin/install -c -m 644 -INSTALL_PROG = ${INSTALL} -INSTALL_DATA = ${INSTALL} -m 644 - -AR = ar -ARFLAGS = -curv -AWK = gawk -LD = ld -LN_S = ln -s -f - -CTAGS = -ETAGS = - -CC = gcc -CPP = gcc -E -CFLAGS = -w -O2 -fPIC --param max-inline-insns-single=1200 - -CPPFLAGS = -I../ncurses -DHAVE_CONFIG_H -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) -g -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) -fPIC - -CFLAGS_DEFAULT = $(CFLAGS_NORMAL) - -LINK = $(LIBTOOL_LINK) -LDFLAGS = -s -fPIC -ldl - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses -ldl -ltinfo - -MK_SHARED_LIB = ${CC} ${CFLAGS} -shared -Wl,-soname,`basename $@ .${REL_VERSION}`.${ABI_VERSION},-stats,-lc -o $@ - -NCURSES_MAJOR = 5 -NCURSES_MINOR = 9 -REL_VERSION = 5.9 -ABI_VERSION = 5 - -RANLIB = ranlib - -LIBRARIES = ../lib/libpanel.a - -LINT = -LINT_OPTS = -LINT_LIBS = -lpanel -lncurses -ldl - -AUTO_SRC = \ - ../include/panel.h - -################################################################################ -all \ -libs \ -install :: $(AUTO_SRC) $(LIBRARIES) - -sources: $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -# make a copy to simplify include-paths while still keeping panel's include -# file in this directory. -../include/panel.h : $(srcdir)/panel.h - -rm -f $@ - cp $(srcdir)/panel.h $@ - -HEADER_DEPS = \ - $(srcdir)/panel.priv.h \ - $(srcdir)/panel.h - -tags: - $(CTAGS) *.[ch] - -#TAGS: -# $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### - -# generated by mk-0th.awk -# libname: panel -# subsets: ticlib+termlib+ext_tinfo base+ext_funcs - -.SUFFIXES: .c .cc .h .i .ii -.c.i : - $(CPP) $(CPPFLAGS) $< >$@ -.cc.ii : - $(CPP) $(CPPFLAGS) $< >$@ -.h.i : - $(CPP) $(CPPFLAGS) $< >$@ - -C_SRC = \ - $(srcdir)/panel.c \ - $(srcdir)/p_above.c \ - $(srcdir)/p_below.c \ - $(srcdir)/p_bottom.c \ - $(srcdir)/p_delete.c \ - $(srcdir)/p_hide.c \ - $(srcdir)/p_hidden.c \ - $(srcdir)/p_move.c \ - $(srcdir)/p_new.c \ - $(srcdir)/p_replace.c \ - $(srcdir)/p_show.c \ - $(srcdir)/p_top.c \ - $(srcdir)/p_update.c \ - $(srcdir)/p_user.c \ - $(srcdir)/p_win.c - -# Producing llib-lpanel is time-consuming, so there's no direct-dependency for -# it in the lintlib rule. We'll only remove in the cleanest setup. -clean :: - rm -f llib-lpanel.* - -realclean :: - rm -f llib-lpanel - -llib-lpanel : $(C_SRC) - cproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) $(C_SRC) >$@ - -lintlib : - sh $(srcdir)/../misc/makellib panel $(CPPFLAGS) -lint : - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(C_SRC) $(LINT_LIBS) - - - -# generated by mk-1st.awk (subset=base+ext_funcs) -# name: panel -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: base+ext_funcs -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h ./panel.priv.h -# host: x86_64-unknown-linux-gnu - -NORMAL_OBJS = \ - ../objects/panel$o \ - ../objects/p_above$o \ - ../objects/p_below$o \ - ../objects/p_bottom$o \ - ../objects/p_delete$o \ - ../objects/p_hide$o \ - ../objects/p_hidden$o \ - ../objects/p_move$o \ - ../objects/p_new$o \ - ../objects/p_replace$o \ - ../objects/p_show$o \ - ../objects/p_top$o \ - ../objects/p_update$o \ - ../objects/p_user$o \ - ../objects/p_win$o - -$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./panel.priv.h - -../lib/libpanel.a : $(NORMAL_OBJS) - $(AR) $(ARFLAGS) $@ $? - $(RANLIB) $@ - -install \ -install.libs \ -install.panel :: $(DESTDIR)$(libdir) ../lib/libpanel.a - @echo installing ../lib/libpanel.a as $(DESTDIR)$(libdir)/libpanel.a - $(INSTALL_DATA) ../lib/libpanel.a $(DESTDIR)$(libdir)/libpanel.a - $(RANLIB) $(DESTDIR)$(libdir)/libpanel.a - -uninstall \ -uninstall.libs \ -uninstall.panel :: - @echo uninstalling $(DESTDIR)$(libdir)/libpanel.a - -@rm -f $(DESTDIR)$(libdir)/libpanel.a - -clean :: - -rm -f ../lib/libpanel.a - -rm -f ../lib/ - -rm -f ../lib/libpanel.a - -mostlyclean:: - -rm -f $(NORMAL_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: base+ext_funcs -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/panel$o : $(srcdir)/panel.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/panel.c -o ../objects/panel$o - -../objects/p_above$o : $(srcdir)/p_above.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_above.c -o ../objects/p_above$o - -../objects/p_below$o : $(srcdir)/p_below.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_below.c -o ../objects/p_below$o - -../objects/p_bottom$o : $(srcdir)/p_bottom.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_bottom.c -o ../objects/p_bottom$o - -../objects/p_delete$o : $(srcdir)/p_delete.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_delete.c -o ../objects/p_delete$o - -../objects/p_hide$o : $(srcdir)/p_hide.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_hide.c -o ../objects/p_hide$o - -../objects/p_hidden$o : $(srcdir)/p_hidden.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_hidden.c -o ../objects/p_hidden$o - -../objects/p_move$o : $(srcdir)/p_move.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_move.c -o ../objects/p_move$o - -../objects/p_new$o : $(srcdir)/p_new.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_new.c -o ../objects/p_new$o - -../objects/p_replace$o : $(srcdir)/p_replace.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_replace.c -o ../objects/p_replace$o - -../objects/p_show$o : $(srcdir)/p_show.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_show.c -o ../objects/p_show$o - -../objects/p_top$o : $(srcdir)/p_top.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_top.c -o ../objects/p_top$o - -../objects/p_update$o : $(srcdir)/p_update.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_update.c -o ../objects/p_update$o - -../objects/p_user$o : $(srcdir)/p_user.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_user.c -o ../objects/p_user$o - -../objects/p_win$o : $(srcdir)/p_win.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../panel/p_win.c -o ../objects/p_win$o - - -# generated by mk-hdr.awk -# subset: ticlib+termlib+ext_tinfo base+ext_funcs -# compat: yes - -${DESTDIR}${includedir} : - mkdir -p $@ - -install \ -install.libs \ -install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \ - $(srcdir)/panel.h - @ (cd ${DESTDIR}${includedir} && rm -f panel.h) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} $(srcdir)/panel.h - -uninstall \ -uninstall.libs \ -uninstall.includes :: - -@ (cd ${DESTDIR}${includedir} && rm -f panel.h) -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/deps/ncurses-5.9/panel/Makefile.in b/deps/ncurses-5.9/panel/Makefile.in deleted file mode 100644 index f0f0a49..0000000 --- a/deps/ncurses-5.9/panel/Makefile.in +++ /dev/null @@ -1,164 +0,0 @@ -# $Id: Makefile.in,v 1.58 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for panels source code. -# -# This makes the following: -# libraries (normal/debug/profile/shared) -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = @DFT_LWR_MODEL@ -DESTDIR = @DESTDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -datadir = @datadir@ - -LIBTOOL = @LIBTOOL@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ -LIBTOOL_INSTALL = @LIB_INSTALL@ -LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ -LT_UNDEF = @LT_UNDEF@ - -INSTALL = @INSTALL@ -INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ -INSTALL_PROG = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ - -AR = @AR@ -ARFLAGS = @ARFLAGS@ -AWK = @AWK@ -LD = @LD@ -LN_S = @LN_S@ - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -CC = @CC@ -CPP = @CPP@ -CFLAGS = @CFLAGS@ - -CPPFLAGS = -I@top_srcdir@/ncurses -DHAVE_CONFIG_H @CPPFLAGS@ - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -LINK = $(LIBTOOL_LINK) -LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ - -SHLIB_DIRS = -L../lib -SHLIB_LIST = $(SHLIB_DIRS) -lncurses@LIB_SUFFIX@ @SHLIB_LIST@ - -MK_SHARED_LIB = @MK_SHARED_LIB@ - -NCURSES_MAJOR = @NCURSES_MAJOR@ -NCURSES_MINOR = @NCURSES_MINOR@ -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ - -RANLIB = @LIB_PREP@ - -LIBRARIES = @LIBS_TO_MAKE@ - -LINT = @LINT@ -LINT_OPTS = @LINT_OPTS@ -LINT_LIBS = -lpanel -lncurses @LIBS@ - -AUTO_SRC = \ - ../include/panel.h - -################################################################################ -all \ -libs \ -install :: $(AUTO_SRC) $(LIBRARIES) - -sources: $(AUTO_SRC) - -$(DESTDIR)$(bindir) \ -$(DESTDIR)$(libdir) : - mkdir -p $@ - -# make a copy to simplify include-paths while still keeping panel's include -# file in this directory. -../include/panel.h : $(srcdir)/panel.h - -rm -f $@ - cp $(srcdir)/panel.h $@ - -HEADER_DEPS = \ - $(srcdir)/panel.priv.h \ - $(srcdir)/panel.h - -tags: - $(CTAGS) *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -rm -f $(AUTO_SRC) - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/panel/headers b/deps/ncurses-5.9/panel/headers deleted file mode 100644 index 8719ea1..0000000 --- a/deps/ncurses-5.9/panel/headers +++ /dev/null @@ -1,32 +0,0 @@ -############################################################################## -# Copyright (c) 1998,2006 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: Thomas E. Dickey 1996 -# -$(srcdir)/panel.h -# vile:makemode diff --git a/deps/ncurses-5.9/panel/modules b/deps/ncurses-5.9/panel/modules deleted file mode 100644 index cd3f545..0000000 --- a/deps/ncurses-5.9/panel/modules +++ /dev/null @@ -1,51 +0,0 @@ -# $Id: modules,v 1.10 2010/01/23 16:31:16 tom Exp $ -############################################################################## -# Copyright (c) 1998-2006,2010 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: Thomas E. Dickey 1995-on -# - -@ base -# Library objects -panel lib $(srcdir) $(HEADER_DEPS) -p_above lib $(srcdir) $(HEADER_DEPS) -p_below lib $(srcdir) $(HEADER_DEPS) -p_bottom lib $(srcdir) $(HEADER_DEPS) -p_delete lib $(srcdir) $(HEADER_DEPS) -p_hide lib $(srcdir) $(HEADER_DEPS) -p_hidden lib $(srcdir) $(HEADER_DEPS) -p_move lib $(srcdir) $(HEADER_DEPS) -p_new lib $(srcdir) $(HEADER_DEPS) -p_replace lib $(srcdir) $(HEADER_DEPS) -p_show lib $(srcdir) $(HEADER_DEPS) -p_top lib $(srcdir) $(HEADER_DEPS) -p_update lib $(srcdir) $(HEADER_DEPS) -p_user lib $(srcdir) $(HEADER_DEPS) -p_win lib $(srcdir) $(HEADER_DEPS) - -# vile:makemode diff --git a/deps/ncurses-5.9/panel/panel.h b/deps/ncurses-5.9/panel/panel.h deleted file mode 100644 index 6ed2061..0000000 --- a/deps/ncurses-5.9/panel/panel.h +++ /dev/null @@ -1,85 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2009 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: Zeyd M. Ben-Halim 1995 * - * and: Eric S. Raymond * - * and: Juergen Pfeifer 1996-1999,2008 * - ****************************************************************************/ - -/* $Id: panel.h,v 1.11 2009/04/11 19:50:40 tom Exp $ */ - -/* panel.h -- interface file for panels library */ - -#ifndef NCURSES_PANEL_H_incl -#define NCURSES_PANEL_H_incl 1 - -#include - -typedef struct panel -{ - WINDOW *win; - struct panel *below; - struct panel *above; - NCURSES_CONST void *user; -} PANEL; - -#if defined(__cplusplus) -extern "C" { -#endif - -extern NCURSES_EXPORT(WINDOW*) panel_window (const PANEL *); -extern NCURSES_EXPORT(void) update_panels (void); -extern NCURSES_EXPORT(int) hide_panel (PANEL *); -extern NCURSES_EXPORT(int) show_panel (PANEL *); -extern NCURSES_EXPORT(int) del_panel (PANEL *); -extern NCURSES_EXPORT(int) top_panel (PANEL *); -extern NCURSES_EXPORT(int) bottom_panel (PANEL *); -extern NCURSES_EXPORT(PANEL*) new_panel (WINDOW *); -extern NCURSES_EXPORT(PANEL*) panel_above (const PANEL *); -extern NCURSES_EXPORT(PANEL*) panel_below (const PANEL *); -extern NCURSES_EXPORT(int) set_panel_userptr (PANEL *, NCURSES_CONST void *); -extern NCURSES_EXPORT(NCURSES_CONST void*) panel_userptr (const PANEL *); -extern NCURSES_EXPORT(int) move_panel (PANEL *, int, int); -extern NCURSES_EXPORT(int) replace_panel (PANEL *,WINDOW *); -extern NCURSES_EXPORT(int) panel_hidden (const PANEL *); - -#if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(PANEL *) ground_panel(SCREEN *); -extern NCURSES_EXPORT(PANEL *) ceiling_panel(SCREEN *); - -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(update_panels) (SCREEN*); -#endif - -#if defined(__cplusplus) -} -#endif - -#endif /* NCURSES_PANEL_H_incl */ - -/* end of panel.h */ diff --git a/deps/ncurses-5.9/progs/Makefile b/deps/ncurses-5.9/progs/Makefile deleted file mode 100644 index 2f81cf9..0000000 --- a/deps/ncurses-5.9/progs/Makefile +++ /dev/null @@ -1,454 +0,0 @@ -# $Id: Makefile.in,v 1.85 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses source code. -# -# This makes the ncurses utility programs. -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, -# and the programs with the configured default model. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - -THIS = Makefile - -CF_MFLAGS = - - -x = -o = .o - -MODEL = ../objects -DESTDIR = -top_srcdir = .. -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -bindir = ${exec_prefix}/bin -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include/ncurses -datadir = ${prefix}/share - -LIBTOOL = -LIBTOOL_CLEAN = -LIBTOOL_COMPILE = -LIBTOOL_LINK = ${CC} -LIBTOOL_INSTALL = -LIBTOOL_UNINSTALL = - -INSTALL = /bin/install -c -INSTALL_PROG = ${INSTALL} -transform = s,x,x, - -AWK = gawk -LN_S = ln -s -f - -CTAGS = -ETAGS = - -CC = gcc -CPP = gcc -E -CFLAGS = -w -O2 -fPIC --param max-inline-insns-single=1200 - -INCDIR = $(top_srcdir)/include -CPPFLAGS = -I../progs -I$(srcdir) -DHAVE_CONFIG_H -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) -g -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) -fPIC - -CFLAGS_DEFAULT = $(CFLAGS_NORMAL) - -REL_VERSION = 5.9 -ABI_VERSION = 5 -LOCAL_LIBDIR = /home/martino/avrdude-build-script/ncurses-5.9/lib - -LD = ld -LINK = $(LIBTOOL_LINK) -LDFLAGS = -s -fPIC - -LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) -LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) -LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) -LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) -LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) - -LDFLAGS_DEFAULT = $(LDFLAGS_NORMAL) - -LIBS_TIC = -static -L../lib -lncurses -L../lib -ltinfo -dynamic -ldl -LDFLAGS_TIC = $(LDFLAGS_NORMAL) $(LIBS_TIC) - -LIBS_TINFO = -static -L../lib -ltinfo -dynamic -ldl -LDFLAGS_TINFO = $(LDFLAGS_NORMAL) $(LIBS_TINFO) - -LINT = -LINT_OPTS = -LINT_LIBS = -lncurses -ldl - -AUTO_SRC = \ - termsort.c \ - transform.h - -# tic relies on direct access to the terminfo database -GET_PROGS = infocmp$x clear$x tabs$x tput$x tset$x toe$x -PUT_PROGS = tic$x -PROGS = $(PUT_PROGS) $(GET_PROGS) - -# Default library, for linking applications -DEPS_CURSES = ../lib/libncurses.a - -HEADER_DEPS = \ - ../include/curses.h \ - $(INCDIR)/term_entry.h \ - $(INCDIR)/tic.h \ - $(INCDIR)/nc_alloc.h - -################################################################################ -all: $(AUTO_SRC) $(PROGS) - -sources: $(AUTO_SRC) - -install: $(AUTO_SRC) install.progs -uninstall: uninstall.progs - -# this line simplifies the configure-script -libs \ -install.libs \ -uninstall.libs: - -TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/' - -# transformed names for installing files -actual_captoinfo = `echo captoinfo$x| $(TRANSFORM)` -actual_clear = `echo clear$x| $(TRANSFORM)` -actual_infocmp = `echo infocmp$x| $(TRANSFORM)` -actual_infotocap = `echo infotocap$x| $(TRANSFORM)` -actual_init = `echo init$x| $(TRANSFORM)` -actual_reset = `echo reset$x| $(TRANSFORM)` -actual_tabs = `echo tabs$x| $(TRANSFORM)` -actual_tic = `echo tic$x| $(TRANSFORM)` -actual_toe = `echo toe$x| $(TRANSFORM)` -actual_tput = `echo tput$x| $(TRANSFORM)` -actual_tset = `echo tset$x| $(TRANSFORM)` - -# transformed names for comparing at runtime -define_captoinfo = `echo captoinfo| $(TRANSFORM)` -define_infotocap = `echo infotocap| $(TRANSFORM)` -define_init = `echo init| $(TRANSFORM)` -define_reset = `echo reset| $(TRANSFORM)` - -transform.h : - echo "#ifndef __TRANSFORM_H" >$@ - echo "#define __TRANSFORM_H 1" >>$@ - echo "#include " >>$@ - echo "extern bool same_program(const char *, const char *);" >>$@ - -sh -c 'if test -n "$x" ; then echo "#define SUFFIX_IGNORED \"$x\"">>$@; fi' - echo "#define PROG_CAPTOINFO \"$(define_captoinfo)\"" >>$@ - echo "#define PROG_INFOTOCAP \"$(define_infotocap)\"" >>$@ - echo "#define PROG_RESET \"$(define_reset)\"" >>$@ - echo "#define PROG_INIT \"$(define_init)\"" >>$@ - echo "#endif /* __TRANSFORM_H */" >>$@ - -install.progs: $(AUTO_SRC) $(PROGS) $(DESTDIR)$(bindir) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) tic$x $(DESTDIR)$(bindir)/$(actual_tic) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) toe$x $(DESTDIR)$(bindir)/$(actual_toe) - @echo "linking $(actual_infotocap) to $(actual_tic)" - -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap) - (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_infotocap)) - @echo "linking $(actual_captoinfo) to $(actual_tic)" - -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo) - (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_captoinfo)) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) infocmp$x $(DESTDIR)$(bindir)/$(actual_infocmp) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) clear$x $(DESTDIR)$(bindir)/$(actual_clear) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) tabs$x $(DESTDIR)$(bindir)/$(actual_tabs) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) tput$x $(DESTDIR)$(bindir)/$(actual_tput) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) tset$x $(DESTDIR)$(bindir)/$(actual_tset) - @echo "linking $(actual_reset) to $(actual_tset)" - -@rm -f $(DESTDIR)$(bindir)/$(actual_reset) - (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tset) $(actual_reset)) - -uninstall.progs: - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tic) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_toe) - -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo) - -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_infocmp) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_clear) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tabs) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tput) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tset) - -@rm -f $(DESTDIR)$(bindir)/$(actual_reset) - -$(DESTDIR)$(bindir) : - mkdir -p $@ - -# -# Utilities normally built by make all start here -# - -DEPS_TIC = \ - $(MODEL)/tic$o \ - $(MODEL)/dump_entry$o \ - $(MODEL)/transform$o - -tic$x: $(DEPS_TIC) $(DEPS_CURSES) transform.h - $(LINK) $(DEPS_TIC) $(LDFLAGS_TIC) -o $@ - -DEPS_TOE = \ - $(MODEL)/toe$o - -toe$x: $(DEPS_TOE) $(DEPS_CURSES) - $(LINK) $(DEPS_TOE) $(LDFLAGS_TIC) -o $@ - -DEPS_CLEAR = \ - $(MODEL)/clear$o - -clear$x: $(DEPS_CLEAR) $(DEPS_CURSES) - $(LINK) $(DEPS_CLEAR) $(LDFLAGS_TINFO) -o $@ - -DEPS_TABS = \ - $(MODEL)/tabs$o - -tabs$x: $(DEPS_TABS) $(DEPS_TABS) - $(LINK) $(DEPS_TABS) $(LDFLAGS_TINFO) -o $@ - -DEPS_TPUT = \ - $(MODEL)/tput$o \ - $(MODEL)/transform$o - -tput$x: $(DEPS_TPUT) $(DEPS_CURSES) transform.h - $(LINK) $(DEPS_TPUT) $(LDFLAGS_TINFO) -o $@ - -DEPS_INFOCMP = \ - $(MODEL)/infocmp$o \ - $(MODEL)/dump_entry$o - -infocmp$x: $(DEPS_INFOCMP) $(DEPS_CURSES) - $(LINK) $(DEPS_INFOCMP) $(LDFLAGS_TIC) -o $@ - -DEPS_TSET = \ - $(MODEL)/tset$o \ - $(MODEL)/transform$o - -tset$x: $(DEPS_TSET) $(DEPS_CURSES) transform.h - $(LINK) $(DEPS_TSET) $(LDFLAGS_TINFO) -o $@ - -termsort.c: $(srcdir)/MKtermsort.sh - sh $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/Caps >$@ - -# -# Utility productions start here -# - -tags: - $(CTAGS) *.[ch] - -#TAGS: -# $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" - -rm -f $(AUTO_SRC) - -rm -f $(PROGS) - -rm -rf .libs - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -# These rules are used to allow "make -n" to work on a clean directory-tree -../include/hashsize.h \ -../include/parametrized.h \ -../include/term.h : - cd ../include; $(MAKE) $(CF_MFLAGS) -$(DEPS_CURSES) : - cd ../ncurses; $(MAKE) $(CF_MFLAGS) - -lint: - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tic.c $(srcdir)/dump_entry.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/toe.c $(srcdir)/dump_entry.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/clear.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/infocmp.c $(srcdir)/dump_entry.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tabs.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tput.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tset.c $(srcdir)/dump_entry.c $(LINT_LIBS) - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### - -# generated by mk-0th.awk -# libname: progs -# subsets: ticlib+termlib+ext_tinfo base+ext_funcs - -.SUFFIXES: .c .cc .h .i .ii -.c.i : - $(CPP) $(CPPFLAGS) $< >$@ -.cc.ii : - $(CPP) $(CPPFLAGS) $< >$@ -.h.i : - $(CPP) $(CPPFLAGS) $< >$@ - -C_SRC = \ - $(srcdir)/clear.c \ - $(srcdir)/tic.c \ - $(srcdir)/toe.c \ - $(srcdir)/dump_entry.c \ - $(srcdir)/infocmp.c \ - $(srcdir)/tabs.c \ - $(srcdir)/tput.c \ - $(srcdir)/tset.c \ - $(srcdir)/transform.c - -lintlib : - @echo no action needed - - - -# generated by mk-1st.awk (subset=base+ext_funcs) -# name: progs -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: base+ext_funcs -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h ./progs.priv.h -# host: x86_64-unknown-linux-gnu - -NORMAL_OBJS = \ - ../objects/clear$o \ - ../objects/tic$o \ - ../objects/toe$o \ - ../objects/dump_entry$o \ - ../objects/infocmp$o \ - ../objects/tabs$o \ - ../objects/tput$o \ - ../objects/tset$o \ - ../objects/transform$o - -$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./progs.priv.h - -mostlyclean:: - -rm -f $(NORMAL_OBJS) - -clean :: - -rm -f $(NORMAL_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: base+ext_funcs -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/clear$o : $(srcdir)/clear.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/clear.c -o ../objects/clear$o - -../objects/tic$o : $(srcdir)/tic.c \ - $(HEADER_DEPS) \ - transform.h \ - $(srcdir)/dump_entry.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/tic.c -o ../objects/tic$o - -../objects/toe$o : $(srcdir)/toe.c \ - $(HEADER_DEPS) \ - $(INCDIR)/hashed_db.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/toe.c -o ../objects/toe$o - -../objects/dump_entry$o : $(srcdir)/dump_entry.c \ - $(HEADER_DEPS) \ - $(srcdir)/dump_entry.h \ - ../include/parametrized.h \ - $(INCDIR)/capdefaults.c \ - termsort.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/dump_entry.c -o ../objects/dump_entry$o - -../objects/infocmp$o : $(srcdir)/infocmp.c \ - $(HEADER_DEPS) \ - $(srcdir)/dump_entry.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/infocmp.c -o ../objects/infocmp$o - -../objects/tabs$o : $(srcdir)/tabs.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/tabs.c -o ../objects/tabs$o - -../objects/tput$o : $(srcdir)/tput.c \ - $(HEADER_DEPS) \ - transform.h \ - $(srcdir)/dump_entry.h \ - termsort.c - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/tput.c -o ../objects/tput$o - -../objects/tset$o : $(srcdir)/tset.c \ - $(HEADER_DEPS) \ - transform.h \ - $(srcdir)/dump_entry.h \ - ../include/termcap.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/tset.c -o ../objects/tset$o - -../objects/transform$o : $(srcdir)/transform.c \ - $(HEADER_DEPS) \ - transform.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../progs/transform.c -o ../objects/transform$o - -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/deps/ncurses-5.9/progs/Makefile.in b/deps/ncurses-5.9/progs/Makefile.in deleted file mode 100644 index bdb8a0f..0000000 --- a/deps/ncurses-5.9/progs/Makefile.in +++ /dev/null @@ -1,320 +0,0 @@ -# $Id: Makefile.in,v 1.85 2010/11/27 21:45:27 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses source code. -# -# This makes the ncurses utility programs. -# -# The variable 'srcdir' refers to the source-distribution, and can be set with -# the configure script by "--srcdir=DIR". -# -# The rules are organized to produce the libraries for the configured models, -# and the programs with the configured default model. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ -THIS = Makefile - -CF_MFLAGS = @cf_cv_makeflags@ -@SET_MAKE@ - -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = ../@DFT_OBJ_SUBDIR@ -DESTDIR = @DESTDIR@ -top_srcdir = @top_srcdir@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ -datadir = @datadir@ - -LIBTOOL = @LIBTOOL@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ -LIBTOOL_INSTALL = @LIB_INSTALL@ -LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ - -INSTALL = @INSTALL@ -INSTALL_PROG = @INSTALL_PROGRAM@ -transform = @program_transform_name@ - -AWK = @AWK@ -LN_S = @LN_S@ - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -CC = @CC@ -CPP = @CPP@ -CFLAGS = @CFLAGS@ - -INCDIR = $(top_srcdir)/include -CPPFLAGS = -I../progs -I$(srcdir) -DHAVE_CONFIG_H @CPPFLAGS@ - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ -LOCAL_LIBDIR = @top_builddir@/lib - -LD = @LD@ -LINK = @LINK_PROGS@ $(LIBTOOL_LINK) -LDFLAGS = @EXTRA_LDFLAGS@ @LDFLAGS@ - -LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) -LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) -LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) -LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) -LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@ - -LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@) - -LIBS_TIC = @LDFLAGS_STATIC@ @TICS_ARGS@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@ -LDFLAGS_TIC = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TIC) - -LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@ -LDFLAGS_TINFO = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO) - -LINT = @LINT@ -LINT_OPTS = @LINT_OPTS@ -LINT_LIBS = -lncurses @LIBS@ - -AUTO_SRC = \ - termsort.c \ - transform.h - -# tic relies on direct access to the terminfo database -GET_PROGS = infocmp$x clear$x tabs$x tput$x tset$x toe$x -PUT_PROGS = @MAKE_TERMINFO@ tic$x -PROGS = $(PUT_PROGS) $(GET_PROGS) - -# Default library, for linking applications -DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@ - -HEADER_DEPS = \ - ../include/curses.h \ - $(INCDIR)/term_entry.h \ - $(INCDIR)/tic.h \ - $(INCDIR)/nc_alloc.h - -################################################################################ -all: $(AUTO_SRC) $(PROGS) - -sources: $(AUTO_SRC) - -install: $(AUTO_SRC) install.progs -uninstall: uninstall.progs - -# this line simplifies the configure-script -libs \ -install.libs \ -uninstall.libs: - -TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/' - -# transformed names for installing files -actual_captoinfo = `echo captoinfo$x| $(TRANSFORM)` -actual_clear = `echo clear$x| $(TRANSFORM)` -actual_infocmp = `echo infocmp$x| $(TRANSFORM)` -actual_infotocap = `echo infotocap$x| $(TRANSFORM)` -actual_init = `echo init$x| $(TRANSFORM)` -actual_reset = `echo reset$x| $(TRANSFORM)` -actual_tabs = `echo tabs$x| $(TRANSFORM)` -actual_tic = `echo tic$x| $(TRANSFORM)` -actual_toe = `echo toe$x| $(TRANSFORM)` -actual_tput = `echo tput$x| $(TRANSFORM)` -actual_tset = `echo tset$x| $(TRANSFORM)` - -# transformed names for comparing at runtime -define_captoinfo = `echo captoinfo| $(TRANSFORM)` -define_infotocap = `echo infotocap| $(TRANSFORM)` -define_init = `echo init| $(TRANSFORM)` -define_reset = `echo reset| $(TRANSFORM)` - -transform.h : - echo "#ifndef __TRANSFORM_H" >$@ - echo "#define __TRANSFORM_H 1" >>$@ - echo "#include " >>$@ - echo "extern bool same_program(const char *, const char *);" >>$@ - -sh -c 'if test -n "$x" ; then echo "#define SUFFIX_IGNORED \"$x\"">>$@; fi' - echo "#define PROG_CAPTOINFO \"$(define_captoinfo)\"" >>$@ - echo "#define PROG_INFOTOCAP \"$(define_infotocap)\"" >>$@ - echo "#define PROG_RESET \"$(define_reset)\"" >>$@ - echo "#define PROG_INIT \"$(define_init)\"" >>$@ - echo "#endif /* __TRANSFORM_H */" >>$@ - -install.progs: $(AUTO_SRC) $(PROGS) $(DESTDIR)$(bindir) -@MAKE_TERMINFO@ $(LIBTOOL_INSTALL) $(INSTALL_PROG) tic$x $(DESTDIR)$(bindir)/$(actual_tic) -@MAKE_TERMINFO@ $(LIBTOOL_INSTALL) $(INSTALL_PROG) toe$x $(DESTDIR)$(bindir)/$(actual_toe) -@MAKE_TERMINFO@ @echo "linking $(actual_infotocap) to $(actual_tic)" -@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap) -@MAKE_TERMINFO@ (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_infotocap)) -@MAKE_TERMINFO@ @echo "linking $(actual_captoinfo) to $(actual_tic)" -@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo) -@MAKE_TERMINFO@ (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_captoinfo)) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) infocmp$x $(DESTDIR)$(bindir)/$(actual_infocmp) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) clear$x $(DESTDIR)$(bindir)/$(actual_clear) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) tabs$x $(DESTDIR)$(bindir)/$(actual_tabs) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) tput$x $(DESTDIR)$(bindir)/$(actual_tput) - $(LIBTOOL_INSTALL) $(INSTALL_PROG) tset$x $(DESTDIR)$(bindir)/$(actual_tset) - @echo "linking $(actual_reset) to $(actual_tset)" - -@rm -f $(DESTDIR)$(bindir)/$(actual_reset) - (cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tset) $(actual_reset)) - -uninstall.progs: -@MAKE_TERMINFO@ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tic) -@MAKE_TERMINFO@ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_toe) -@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo) -@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_infocmp) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_clear) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tabs) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tput) - -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tset) - -@rm -f $(DESTDIR)$(bindir)/$(actual_reset) - -$(DESTDIR)$(bindir) : - mkdir -p $@ - -# -# Utilities normally built by make all start here -# - -DEPS_TIC = \ - $(MODEL)/tic$o \ - $(MODEL)/dump_entry$o \ - $(MODEL)/transform$o - -tic$x: $(DEPS_TIC) $(DEPS_CURSES) transform.h - @ECHO_LINK@ $(LINK) $(DEPS_TIC) $(LDFLAGS_TIC) -o $@ - -DEPS_TOE = \ - $(MODEL)/toe$o - -toe$x: $(DEPS_TOE) $(DEPS_CURSES) - @ECHO_LINK@ $(LINK) $(DEPS_TOE) $(LDFLAGS_TIC) -o $@ - -DEPS_CLEAR = \ - $(MODEL)/clear$o - -clear$x: $(DEPS_CLEAR) $(DEPS_CURSES) - @ECHO_LINK@ $(LINK) $(DEPS_CLEAR) $(LDFLAGS_TINFO) -o $@ - -DEPS_TABS = \ - $(MODEL)/tabs$o - -tabs$x: $(DEPS_TABS) $(DEPS_TABS) - @ECHO_LINK@ $(LINK) $(DEPS_TABS) $(LDFLAGS_TINFO) -o $@ - -DEPS_TPUT = \ - $(MODEL)/tput$o \ - $(MODEL)/transform$o - -tput$x: $(DEPS_TPUT) $(DEPS_CURSES) transform.h - @ECHO_LINK@ $(LINK) $(DEPS_TPUT) $(LDFLAGS_TINFO) -o $@ - -DEPS_INFOCMP = \ - $(MODEL)/infocmp$o \ - $(MODEL)/dump_entry$o - -infocmp$x: $(DEPS_INFOCMP) $(DEPS_CURSES) - @ECHO_LINK@ $(LINK) $(DEPS_INFOCMP) $(LDFLAGS_TIC) -o $@ - -DEPS_TSET = \ - $(MODEL)/tset$o \ - $(MODEL)/transform$o - -tset$x: $(DEPS_TSET) $(DEPS_CURSES) transform.h - @ECHO_LINK@ $(LINK) $(DEPS_TSET) $(LDFLAGS_TINFO) -o $@ - -termsort.c: $(srcdir)/MKtermsort.sh - sh $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@ - -# -# Utility productions start here -# - -tags: - $(CTAGS) *.[ch] - -@MAKE_UPPER_TAGS@TAGS: -@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -sh -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" - -rm -f $(AUTO_SRC) - -rm -f $(PROGS) - -rm -rf .libs - -distclean :: clean - -rm -f Makefile - -realclean :: distclean - -# These rules are used to allow "make -n" to work on a clean directory-tree -../include/hashsize.h \ -../include/parametrized.h \ -../include/term.h : - cd ../include; $(MAKE) $(CF_MFLAGS) -$(DEPS_CURSES) : - cd ../ncurses; $(MAKE) $(CF_MFLAGS) - -lint: -@MAKE_TERMINFO@ $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tic.c $(srcdir)/dump_entry.c $(LINT_LIBS) -@MAKE_TERMINFO@ $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/toe.c $(srcdir)/dump_entry.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/clear.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/infocmp.c $(srcdir)/dump_entry.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tabs.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tput.c $(LINT_LIBS) - $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tset.c $(srcdir)/dump_entry.c $(LINT_LIBS) - -############################################################################### -# The remainder of this file is automatically generated during configuration -############################################################################### diff --git a/deps/ncurses-5.9/progs/clear b/deps/ncurses-5.9/progs/clear deleted file mode 100755 index 9f7c420..0000000 Binary files a/deps/ncurses-5.9/progs/clear and /dev/null differ diff --git a/deps/ncurses-5.9/progs/clear.c b/deps/ncurses-5.9/progs/clear.c deleted file mode 100644 index 9f5a543..0000000 --- a/deps/ncurses-5.9/progs/clear.c +++ /dev/null @@ -1,59 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2006,2007 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * clear.c -- clears the terminal's screen - */ - -#define USE_LIBTINFO -#include - -MODULE_ID("$Id: clear.c,v 1.11 2007/10/13 22:16:02 tom Exp $") - -static int -putch(int c) -{ - return putchar(c); -} - -int -main( - int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) -{ - setupterm((char *) 0, STDOUT_FILENO, (int *) 0); - ExitProgram((tputs(clear_screen, lines > 0 ? lines : 1, putch) == ERR) - ? EXIT_FAILURE - : EXIT_SUCCESS); -} diff --git a/deps/ncurses-5.9/progs/dump_entry.c b/deps/ncurses-5.9/progs/dump_entry.c deleted file mode 100644 index 485bbbd..0000000 --- a/deps/ncurses-5.9/progs/dump_entry.c +++ /dev/null @@ -1,1273 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996 on * - ****************************************************************************/ - -#define __INTERNAL_CAPS_VISIBLE -#include - -#include "dump_entry.h" -#include "termsort.c" /* this C file is generated */ -#include /* so is this */ - -MODULE_ID("$Id: dump_entry.c,v 1.89 2010/05/01 22:04:08 tom Exp $") - -#define INDENT 8 -#define DISCARD(string) string = ABSENT_STRING -#define PRINTF (void) printf - -#define OkIndex(index,array) ((int)(index) >= 0 && (int)(index) < (int) SIZEOF(array)) - -typedef struct { - char *text; - size_t used; - size_t size; -} DYNBUF; - -static int tversion; /* terminfo version */ -static int outform; /* output format to use */ -static int sortmode; /* sort mode to use */ -static int width = 60; /* max line width for listings */ -static int column; /* current column, limited by 'width' */ -static int oldcol; /* last value of column before wrap */ -static bool pretty; /* true if we format if-then-else strings */ - -static char *save_sgr; - -static DYNBUF outbuf; -static DYNBUF tmpbuf; - -/* indirection pointers for implementing sort and display modes */ -static const PredIdx *bool_indirect, *num_indirect, *str_indirect; -static NCURSES_CONST char *const *bool_names; -static NCURSES_CONST char *const *num_names; -static NCURSES_CONST char *const *str_names; - -static const char *separator, *trailer; - -/* cover various ports and variants of terminfo */ -#define V_ALLCAPS 0 /* all capabilities (SVr4, XSI, ncurses) */ -#define V_SVR1 1 /* SVR1, Ultrix */ -#define V_HPUX 2 /* HP/UX */ -#define V_AIX 3 /* AIX */ -#define V_BSD 4 /* BSD */ - -#if NCURSES_XNAMES -#define OBSOLETE(n) (!_nc_user_definable && (n[0] == 'O' && n[1] == 'T')) -#else -#define OBSOLETE(n) (n[0] == 'O' && n[1] == 'T') -#endif - -#define isObsolete(f,n) ((f == F_TERMINFO || f == F_VARIABLE) && OBSOLETE(n)) - -#if NCURSES_XNAMES -#define BoolIndirect(j) ((j >= BOOLCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : bool_indirect[j])) -#define NumIndirect(j) ((j >= NUMCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : num_indirect[j])) -#define StrIndirect(j) ((j >= STRCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : str_indirect[j])) -#else -#define BoolIndirect(j) ((sortmode == S_NOSORT) ? (j) : bool_indirect[j]) -#define NumIndirect(j) ((sortmode == S_NOSORT) ? (j) : num_indirect[j]) -#define StrIndirect(j) ((sortmode == S_NOSORT) ? (j) : str_indirect[j]) -#endif - -static void -strncpy_DYN(DYNBUF * dst, const char *src, size_t need) -{ - size_t want = need + dst->used + 1; - if (want > dst->size) { - dst->size += (want + 1024); /* be generous */ - dst->text = typeRealloc(char, dst->size, dst->text); - } - (void) strncpy(dst->text + dst->used, src, need); - dst->used += need; - dst->text[dst->used] = 0; -} - -static void -strcpy_DYN(DYNBUF * dst, const char *src) -{ - if (src == 0) { - dst->used = 0; - strcpy_DYN(dst, ""); - } else { - strncpy_DYN(dst, src, strlen(src)); - } -} - -#if NO_LEAKS -static void -free_DYN(DYNBUF * p) -{ - if (p->text != 0) - free(p->text); - p->text = 0; - p->size = 0; - p->used = 0; -} - -void -_nc_leaks_dump_entry(void) -{ - free_DYN(&outbuf); - free_DYN(&tmpbuf); -} -#endif - -#define NameTrans(check,result) \ - if (OkIndex(np->nte_index, check) \ - && check[np->nte_index]) \ - return (result[np->nte_index]) - -NCURSES_CONST char * -nametrans(const char *name) -/* translate a capability name from termcap to terminfo */ -{ - const struct name_table_entry *np; - - if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0) - switch (np->nte_type) { - case BOOLEAN: - NameTrans(bool_from_termcap, boolcodes); - break; - - case NUMBER: - NameTrans(num_from_termcap, numcodes); - break; - - case STRING: - NameTrans(str_from_termcap, strcodes); - break; - } - - return (0); -} - -void -dump_init(const char *version, int mode, int sort, int twidth, int traceval, - bool formatted) -/* set up for entry display */ -{ - width = twidth; - pretty = formatted; - - /* versions */ - if (version == 0) - tversion = V_ALLCAPS; - else if (!strcmp(version, "SVr1") || !strcmp(version, "SVR1") - || !strcmp(version, "Ultrix")) - tversion = V_SVR1; - else if (!strcmp(version, "HP")) - tversion = V_HPUX; - else if (!strcmp(version, "AIX")) - tversion = V_AIX; - else if (!strcmp(version, "BSD")) - tversion = V_BSD; - else - tversion = V_ALLCAPS; - - /* implement display modes */ - switch (outform = mode) { - case F_LITERAL: - case F_TERMINFO: - bool_names = boolnames; - num_names = numnames; - str_names = strnames; - separator = twidth ? ", " : ","; - trailer = "\n\t"; - break; - - case F_VARIABLE: - bool_names = boolfnames; - num_names = numfnames; - str_names = strfnames; - separator = twidth ? ", " : ","; - trailer = "\n\t"; - break; - - case F_TERMCAP: - case F_TCONVERR: - bool_names = boolcodes; - num_names = numcodes; - str_names = strcodes; - separator = ":"; - trailer = "\\\n\t:"; - break; - } - - /* implement sort modes */ - switch (sortmode = sort) { - case S_NOSORT: - if (traceval) - (void) fprintf(stderr, - "%s: sorting by term structure order\n", _nc_progname); - break; - - case S_TERMINFO: - if (traceval) - (void) fprintf(stderr, - "%s: sorting by terminfo name order\n", _nc_progname); - bool_indirect = bool_terminfo_sort; - num_indirect = num_terminfo_sort; - str_indirect = str_terminfo_sort; - break; - - case S_VARIABLE: - if (traceval) - (void) fprintf(stderr, - "%s: sorting by C variable order\n", _nc_progname); - bool_indirect = bool_variable_sort; - num_indirect = num_variable_sort; - str_indirect = str_variable_sort; - break; - - case S_TERMCAP: - if (traceval) - (void) fprintf(stderr, - "%s: sorting by termcap name order\n", _nc_progname); - bool_indirect = bool_termcap_sort; - num_indirect = num_termcap_sort; - str_indirect = str_termcap_sort; - break; - } - - if (traceval) - (void) fprintf(stderr, - "%s: width = %d, tversion = %d, outform = %d\n", - _nc_progname, width, tversion, outform); -} - -static TERMTYPE *cur_type; - -static int -dump_predicate(PredType type, PredIdx idx) -/* predicate function to use for ordinary decompilation */ -{ - switch (type) { - case BOOLEAN: - return (cur_type->Booleans[idx] == FALSE) - ? FAIL : cur_type->Booleans[idx]; - - case NUMBER: - return (cur_type->Numbers[idx] == ABSENT_NUMERIC) - ? FAIL : cur_type->Numbers[idx]; - - case STRING: - return (cur_type->Strings[idx] != ABSENT_STRING) - ? (int) TRUE : FAIL; - } - - return (FALSE); /* pacify compiler */ -} - -static void set_obsolete_termcaps(TERMTYPE *tp); - -/* is this the index of a function key string? */ -#define FNKEY(i) (((i)<= 65 && (i)>= 75) || ((i)<= 216 && (i)>= 268)) - -/* - * If we configure with a different Caps file, the offsets into the arrays - * will change. So we use an address expression. - */ -#define BOOL_IDX(name) (PredType) (&(name) - &(CUR Booleans[0])) -#define NUM_IDX(name) (PredType) (&(name) - &(CUR Numbers[0])) -#define STR_IDX(name) (PredType) (&(name) - &(CUR Strings[0])) - -static bool -version_filter(PredType type, PredIdx idx) -/* filter out capabilities we may want to suppress */ -{ - switch (tversion) { - case V_ALLCAPS: /* SVr4, XSI Curses */ - return (TRUE); - - case V_SVR1: /* System V Release 1, Ultrix */ - switch (type) { - case BOOLEAN: - return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE); - case NUMBER: - return ((idx <= NUM_IDX(width_status_line)) ? TRUE : FALSE); - case STRING: - return ((idx <= STR_IDX(prtr_non)) ? TRUE : FALSE); - } - break; - - case V_HPUX: /* Hewlett-Packard */ - switch (type) { - case BOOLEAN: - return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE); - case NUMBER: - return ((idx <= NUM_IDX(label_width)) ? TRUE : FALSE); - case STRING: - if (idx <= STR_IDX(prtr_non)) - return (TRUE); - else if (FNKEY(idx)) /* function keys */ - return (TRUE); - else if (idx == STR_IDX(plab_norm) - || idx == STR_IDX(label_on) - || idx == STR_IDX(label_off)) - return (TRUE); - else - return (FALSE); - } - break; - - case V_AIX: /* AIX */ - switch (type) { - case BOOLEAN: - return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE); - case NUMBER: - return ((idx <= NUM_IDX(width_status_line)) ? TRUE : FALSE); - case STRING: - if (idx <= STR_IDX(prtr_non)) - return (TRUE); - else if (FNKEY(idx)) /* function keys */ - return (TRUE); - else - return (FALSE); - } - break; - -#define is_termcap(type) (OkIndex(idx, type##_from_termcap) && \ - type##_from_termcap[idx]) - - case V_BSD: /* BSD */ - switch (type) { - case BOOLEAN: - return is_termcap(bool); - case NUMBER: - return is_termcap(num); - case STRING: - return is_termcap(str); - } - break; - } - - return (FALSE); /* pacify the compiler */ -} - -static void -trim_trailing(void) -{ - while (outbuf.used > 0 && outbuf.text[outbuf.used - 1] == ' ') - outbuf.text[--outbuf.used] = '\0'; -} - -static void -force_wrap(void) -{ - oldcol = column; - trim_trailing(); - strcpy_DYN(&outbuf, trailer); - column = INDENT; -} - -static void -wrap_concat(const char *src) -{ - unsigned need = strlen(src); - unsigned want = strlen(separator) + need; - - if (column > INDENT - && column + (int) want > width) { - force_wrap(); - } - strcpy_DYN(&outbuf, src); - strcpy_DYN(&outbuf, separator); - column += (int) need; -} - -#define IGNORE_SEP_TRAIL(first,last,sep_trail) \ - if ((size_t)(last - first) > sizeof(sep_trail)-1 \ - && !strncmp(first, sep_trail, sizeof(sep_trail)-1)) \ - first += sizeof(sep_trail)-2 - -/* Returns the nominal length of the buffer assuming it is termcap format, - * i.e., the continuation sequence is treated as a single character ":". - * - * There are several implementations of termcap which read the text into a - * fixed-size buffer. Generally they strip the newlines from the text, but may - * not do it until after the buffer is read. Also, "tc=" resolution may be - * expanded in the same buffer. This function is useful for measuring the size - * of the best fixed-buffer implementation; the worst case may be much worse. - */ -#ifdef TEST_TERMCAP_LENGTH -static int -termcap_length(const char *src) -{ - static const char pattern[] = ":\\\n\t:"; - - int len = 0; - const char *const t = src + strlen(src); - - while (*src != '\0') { - IGNORE_SEP_TRAIL(src, t, pattern); - src++; - len++; - } - return len; -} -#else -#define termcap_length(src) strlen(src) -#endif - -static void -indent_DYN(DYNBUF * buffer, int level) -{ - int n; - - for (n = 0; n < level; n++) - strncpy_DYN(buffer, "\t", 1); -} - -static bool -has_params(const char *src) -{ - bool result = FALSE; - int len = (int) strlen(src); - int n; - bool ifthen = FALSE; - bool params = FALSE; - - for (n = 0; n < len - 1; ++n) { - if (!strncmp(src + n, "%p", 2)) { - params = TRUE; - } else if (!strncmp(src + n, "%;", 2)) { - ifthen = TRUE; - result = params; - break; - } - } - if (!ifthen) { - result = ((len > 50) && params); - } - return result; -} - -static char * -fmt_complex(char *src, int level) -{ - bool percent = FALSE; - bool params = has_params(src); - - while (*src != '\0') { - switch (*src) { - case '\\': - percent = FALSE; - strncpy_DYN(&tmpbuf, src++, 1); - break; - case '%': - percent = TRUE; - break; - case '?': /* "if" */ - case 't': /* "then" */ - case 'e': /* "else" */ - if (percent) { - percent = FALSE; - tmpbuf.text[tmpbuf.used - 1] = '\n'; - /* treat a "%e" as else-if, on the same level */ - if (*src == 'e') { - indent_DYN(&tmpbuf, level); - strncpy_DYN(&tmpbuf, "%", 1); - strncpy_DYN(&tmpbuf, src, 1); - src++; - params = has_params(src); - if (!params && *src != '\0' && *src != '%') { - strncpy_DYN(&tmpbuf, "\n", 1); - indent_DYN(&tmpbuf, level + 1); - } - } else { - indent_DYN(&tmpbuf, level + 1); - strncpy_DYN(&tmpbuf, "%", 1); - strncpy_DYN(&tmpbuf, src, 1); - if (*src++ == '?') { - src = fmt_complex(src, level + 1); - if (*src != '\0' && *src != '%') { - strncpy_DYN(&tmpbuf, "\n", 1); - indent_DYN(&tmpbuf, level + 1); - } - } else if (level == 1) { - _nc_warning("%%%c without %%?", *src); - } - } - continue; - } - break; - case ';': /* "endif" */ - if (percent) { - percent = FALSE; - if (level > 1) { - tmpbuf.text[tmpbuf.used - 1] = '\n'; - indent_DYN(&tmpbuf, level); - strncpy_DYN(&tmpbuf, "%", 1); - strncpy_DYN(&tmpbuf, src++, 1); - return src; - } - _nc_warning("%%; without %%?"); - } - break; - case 'p': - if (percent && params) { - tmpbuf.text[tmpbuf.used - 1] = '\n'; - indent_DYN(&tmpbuf, level + 1); - strncpy_DYN(&tmpbuf, "%", 1); - } - params = FALSE; - percent = FALSE; - break; - case ' ': - strncpy_DYN(&tmpbuf, "\\s", 2); - ++src; - continue; - default: - percent = FALSE; - break; - } - strncpy_DYN(&tmpbuf, src++, 1); - } - return src; -} - -#define SAME_CAP(n,cap) (&tterm->Strings[n] == &cap) -#define EXTRA_CAP 20 - -int -fmt_entry(TERMTYPE *tterm, - PredFunc pred, - bool content_only, - bool suppress_untranslatable, - bool infodump, - int numbers) -{ - PredIdx i, j; - char buffer[MAX_TERMINFO_LENGTH + EXTRA_CAP]; - char *capability; - NCURSES_CONST char *name; - int predval, len; - PredIdx num_bools = 0; - PredIdx num_values = 0; - PredIdx num_strings = 0; - bool outcount = 0; - -#define WRAP_CONCAT \ - wrap_concat(buffer); \ - outcount = TRUE - - len = 12; /* terminfo file-header */ - - if (pred == 0) { - cur_type = tterm; - pred = dump_predicate; - } - - strcpy_DYN(&outbuf, 0); - if (content_only) { - column = INDENT; /* FIXME: workaround to prevent empty lines */ - } else { - strcpy_DYN(&outbuf, tterm->term_names); - strcpy_DYN(&outbuf, separator); - column = (int) outbuf.used; - force_wrap(); - } - - for_each_boolean(j, tterm) { - i = BoolIndirect(j); - name = ExtBoolname(tterm, i, bool_names); - assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); - - if (!version_filter(BOOLEAN, i)) - continue; - else if (isObsolete(outform, name)) - continue; - - predval = pred(BOOLEAN, i); - if (predval != FAIL) { - (void) strcpy(buffer, name); - if (predval <= 0) - (void) strcat(buffer, "@"); - else if (i + 1 > num_bools) - num_bools = i + 1; - WRAP_CONCAT; - } - } - - if (column != INDENT) - force_wrap(); - - for_each_number(j, tterm) { - i = NumIndirect(j); - name = ExtNumname(tterm, i, num_names); - assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); - - if (!version_filter(NUMBER, i)) - continue; - else if (isObsolete(outform, name)) - continue; - - predval = pred(NUMBER, i); - if (predval != FAIL) { - if (tterm->Numbers[i] < 0) { - sprintf(buffer, "%s@", name); - } else { - sprintf(buffer, "%s#%d", name, tterm->Numbers[i]); - if (i + 1 > num_values) - num_values = i + 1; - } - WRAP_CONCAT; - } - } - - if (column != INDENT) - force_wrap(); - - len += (int) (num_bools - + num_values * 2 - + strlen(tterm->term_names) + 1); - if (len & 1) - len++; - -#undef CUR -#define CUR tterm-> - if (outform == F_TERMCAP) { - if (termcap_reset != ABSENT_STRING) { - if (init_3string != ABSENT_STRING - && !strcmp(init_3string, termcap_reset)) - DISCARD(init_3string); - - if (reset_2string != ABSENT_STRING - && !strcmp(reset_2string, termcap_reset)) - DISCARD(reset_2string); - } - } - - for_each_string(j, tterm) { - i = StrIndirect(j); - name = ExtStrname(tterm, i, str_names); - assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); - - capability = tterm->Strings[i]; - - if (!version_filter(STRING, i)) - continue; - else if (isObsolete(outform, name)) - continue; - -#if NCURSES_XNAMES - /* - * Extended names can be longer than 2 characters, but termcap programs - * cannot read those (filter them out). - */ - if (outform == F_TERMCAP && (strlen(name) > 2)) - continue; -#endif - - if (outform == F_TERMCAP) { - /* - * Some older versions of vi want rmir/smir to be defined - * for ich/ich1 to work. If they're not defined, force - * them to be output as defined and empty. - */ - if (PRESENT(insert_character) || PRESENT(parm_ich)) { - if (SAME_CAP(i, enter_insert_mode) - && enter_insert_mode == ABSENT_STRING) { - (void) strcpy(buffer, "im="); - WRAP_CONCAT; - continue; - } - - if (SAME_CAP(i, exit_insert_mode) - && exit_insert_mode == ABSENT_STRING) { - (void) strcpy(buffer, "ei="); - WRAP_CONCAT; - continue; - } - } - /* - * termcap applications such as screen will be confused if sgr0 - * is translated to a string containing rmacs. Filter that out. - */ - if (PRESENT(exit_attribute_mode)) { - if (SAME_CAP(i, exit_attribute_mode)) { - char *trimmed_sgr0; - char *my_sgr = set_attributes; - - set_attributes = save_sgr; - - trimmed_sgr0 = _nc_trim_sgr0(tterm); - if (strcmp(capability, trimmed_sgr0)) - capability = trimmed_sgr0; - - set_attributes = my_sgr; - } - } - } - - predval = pred(STRING, i); - buffer[0] = '\0'; - - if (predval != FAIL) { - if (capability != ABSENT_STRING - && i + 1 > num_strings) - num_strings = i + 1; - - if (!VALID_STRING(capability)) { - sprintf(buffer, "%s@", name); - WRAP_CONCAT; - } else if (outform == F_TERMCAP || outform == F_TCONVERR) { - int params = ((i < (int) SIZEOF(parametrized)) - ? parametrized[i] - : 0); - char *srccap = _nc_tic_expand(capability, TRUE, numbers); - char *cv = _nc_infotocap(name, srccap, params); - - if (cv == 0) { - if (outform == F_TCONVERR) { - sprintf(buffer, "%s=!!! %s WILL NOT CONVERT !!!", - name, srccap); - } else if (suppress_untranslatable) { - continue; - } else { - char *s = srccap, *d = buffer; - sprintf(d, "..%s=", name); - d += strlen(d); - while ((*d = *s++) != 0) { - if (*d == ':') { - *d++ = '\\'; - *d = ':'; - } else if (*d == '\\') { - *++d = *s++; - } - d++; - } - } - } else { - sprintf(buffer, "%s=%s", name, cv); - } - len += (int) strlen(capability) + 1; - WRAP_CONCAT; - } else { - char *src = _nc_tic_expand(capability, - outform == F_TERMINFO, numbers); - - strcpy_DYN(&tmpbuf, 0); - strcpy_DYN(&tmpbuf, name); - strcpy_DYN(&tmpbuf, "="); - if (pretty - && (outform == F_TERMINFO - || outform == F_VARIABLE)) { - fmt_complex(src, 1); - } else { - strcpy_DYN(&tmpbuf, src); - } - len += (int) strlen(capability) + 1; - wrap_concat(tmpbuf.text); - outcount = TRUE; - } - } - /* e.g., trimmed_sgr0 */ - if (capability != tterm->Strings[i]) - free(capability); - } - len += (int) (num_strings * 2); - - /* - * This piece of code should be an effective inverse of the functions - * postprocess_terminfo() and postprocess_terminfo() in parse_entry.c. - * Much more work should be done on this to support dumping termcaps. - */ - if (tversion == V_HPUX) { - if (VALID_STRING(memory_lock)) { - (void) sprintf(buffer, "meml=%s", memory_lock); - WRAP_CONCAT; - } - if (VALID_STRING(memory_unlock)) { - (void) sprintf(buffer, "memu=%s", memory_unlock); - WRAP_CONCAT; - } - } else if (tversion == V_AIX) { - if (VALID_STRING(acs_chars)) { - bool box_ok = TRUE; - const char *acstrans = "lqkxjmwuvtn"; - const char *cp; - char *tp, *sp, boxchars[11]; - - tp = boxchars; - for (cp = acstrans; *cp; cp++) { - sp = strchr(acs_chars, *cp); - if (sp) - *tp++ = sp[1]; - else { - box_ok = FALSE; - break; - } - } - tp[0] = '\0'; - - if (box_ok) { - (void) strcpy(buffer, "box1="); - (void) strcat(buffer, _nc_tic_expand(boxchars, - outform == F_TERMINFO, numbers)); - WRAP_CONCAT; - } - } - } - - /* - * kludge: trim off trailer to avoid an extra blank line - * in infocmp -u output when there are no string differences - */ - if (outcount) { - bool trimmed = FALSE; - j = outbuf.used; - if (j >= 2 - && outbuf.text[j - 1] == '\t' - && outbuf.text[j - 2] == '\n') { - outbuf.used -= 2; - trimmed = TRUE; - } else if (j >= 4 - && outbuf.text[j - 1] == ':' - && outbuf.text[j - 2] == '\t' - && outbuf.text[j - 3] == '\n' - && outbuf.text[j - 4] == '\\') { - outbuf.used -= 4; - trimmed = TRUE; - } - if (trimmed) { - outbuf.text[outbuf.used] = '\0'; - column = oldcol; - strcpy_DYN(&outbuf, " "); - } - } -#if 0 - fprintf(stderr, "num_bools = %d\n", num_bools); - fprintf(stderr, "num_values = %d\n", num_values); - fprintf(stderr, "num_strings = %d\n", num_strings); - fprintf(stderr, "term_names=%s, len=%d, strlen(outbuf)=%d, outbuf=%s\n", - tterm->term_names, len, outbuf.used, outbuf.text); -#endif - /* - * Here's where we use infodump to trigger a more stringent length check - * for termcap-translation purposes. - * Return the length of the raw entry, without tc= expansions, - * It gives an idea of which entries are deadly to even *scan past*, - * as opposed to *use*. - */ - return (infodump ? len : (int) termcap_length(outbuf.text)); -} - -static bool -kill_string(TERMTYPE *tterm, char *cap) -{ - unsigned n; - for (n = 0; n < NUM_STRINGS(tterm); ++n) { - if (cap == tterm->Strings[n]) { - tterm->Strings[n] = ABSENT_STRING; - return TRUE; - } - } - return FALSE; -} - -static char * -find_string(TERMTYPE *tterm, char *name) -{ - PredIdx n; - for (n = 0; n < NUM_STRINGS(tterm); ++n) { - if (version_filter(STRING, n) - && !strcmp(name, strnames[n])) { - char *cap = tterm->Strings[n]; - if (VALID_STRING(cap)) { - return cap; - } - break; - } - } - return ABSENT_STRING; -} - -/* - * This is used to remove function-key labels from a termcap entry to - * make it smaller. - */ -static int -kill_labels(TERMTYPE *tterm, int target) -{ - int n; - int result = 0; - char *cap; - char name[10]; - - for (n = 0; n <= 10; ++n) { - sprintf(name, "lf%d", n); - if ((cap = find_string(tterm, name)) != ABSENT_STRING - && kill_string(tterm, cap)) { - target -= (int) (strlen(cap) + 5); - ++result; - if (target < 0) - break; - } - } - return result; -} - -/* - * This is used to remove function-key definitions from a termcap entry to - * make it smaller. - */ -static int -kill_fkeys(TERMTYPE *tterm, int target) -{ - int n; - int result = 0; - char *cap; - char name[10]; - - for (n = 60; n >= 0; --n) { - sprintf(name, "kf%d", n); - if ((cap = find_string(tterm, name)) != ABSENT_STRING - && kill_string(tterm, cap)) { - target -= (int) (strlen(cap) + 5); - ++result; - if (target < 0) - break; - } - } - return result; -} - -/* - * Check if the given acsc string is a 1-1 mapping, i.e., just-like-vt100. - * Also, since this is for termcap, we only care about the line-drawing map. - */ -#define isLine(c) (strchr("lmkjtuvwqxn", c) != 0) - -static bool -one_one_mapping(const char *mapping) -{ - bool result = TRUE; - - if (mapping != ABSENT_STRING) { - int n = 0; - while (mapping[n] != '\0') { - if (isLine(mapping[n]) && - mapping[n] != mapping[n + 1]) { - result = FALSE; - break; - } - n += 2; - } - } - return result; -} - -#define FMT_ENTRY() \ - fmt_entry(tterm, pred, \ - 0, \ - suppress_untranslatable, \ - infodump, numbers) - -#define SHOW_WHY PRINTF - -static bool -purged_acs(TERMTYPE *tterm) -{ - bool result = FALSE; - - if (VALID_STRING(acs_chars)) { - if (!one_one_mapping(acs_chars)) { - enter_alt_charset_mode = ABSENT_STRING; - exit_alt_charset_mode = ABSENT_STRING; - SHOW_WHY("# (rmacs/smacs removed for consistency)\n"); - } - result = TRUE; - } - return result; -} - -/* - * Dump a single entry. - */ -void -dump_entry(TERMTYPE *tterm, - bool suppress_untranslatable, - bool limited, - int numbers, - PredFunc pred) -{ - TERMTYPE save_tterm; - int len, critlen; - const char *legend; - bool infodump; - - if (outform == F_TERMCAP || outform == F_TCONVERR) { - critlen = MAX_TERMCAP_LENGTH; - legend = "older termcap"; - infodump = FALSE; - set_obsolete_termcaps(tterm); - } else { - critlen = MAX_TERMINFO_LENGTH; - legend = "terminfo"; - infodump = TRUE; - } - - save_sgr = set_attributes; - - if ((FMT_ENTRY() > critlen) - && limited) { - - save_tterm = *tterm; - if (!suppress_untranslatable) { - SHOW_WHY("# (untranslatable capabilities removed to fit entry within %d bytes)\n", - critlen); - suppress_untranslatable = TRUE; - } - if (FMT_ENTRY() > critlen) { - /* - * We pick on sgr because it's a nice long string capability that - * is really just an optimization hack. Another good candidate is - * acsc since it is both long and unused by BSD termcap. - */ - bool changed = FALSE; - -#if NCURSES_XNAMES - /* - * Extended names are most likely function-key definitions. Drop - * those first. - */ - unsigned n; - for (n = STRCOUNT; n < NUM_STRINGS(tterm); n++) { - const char *name = ExtStrname(tterm, n, strnames); - - if (VALID_STRING(tterm->Strings[n])) { - set_attributes = ABSENT_STRING; - /* we remove long names anyway - only report the short */ - if (strlen(name) <= 2) { - SHOW_WHY("# (%s removed to fit entry within %d bytes)\n", - name, - critlen); - } - changed = TRUE; - if (FMT_ENTRY() <= critlen) - break; - } - } -#endif - if (VALID_STRING(set_attributes)) { - set_attributes = ABSENT_STRING; - SHOW_WHY("# (sgr removed to fit entry within %d bytes)\n", - critlen); - changed = TRUE; - } - if (!changed || (FMT_ENTRY() > critlen)) { - if (purged_acs(tterm)) { - acs_chars = ABSENT_STRING; - SHOW_WHY("# (acsc removed to fit entry within %d bytes)\n", - critlen); - changed = TRUE; - } - } - if (!changed || (FMT_ENTRY() > critlen)) { - int oldversion = tversion; - - tversion = V_BSD; - SHOW_WHY("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n", - critlen); - - len = FMT_ENTRY(); - if (len > critlen - && kill_labels(tterm, len - critlen)) { - SHOW_WHY("# (some labels capabilities suppressed to fit entry within %d bytes)\n", - critlen); - len = FMT_ENTRY(); - } - if (len > critlen - && kill_fkeys(tterm, len - critlen)) { - SHOW_WHY("# (some function-key capabilities suppressed to fit entry within %d bytes)\n", - critlen); - len = FMT_ENTRY(); - } - if (len > critlen) { - (void) fprintf(stderr, - "warning: %s entry is %d bytes long\n", - _nc_first_name(tterm->term_names), - len); - SHOW_WHY("# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n", - len, legend); - } - tversion = oldversion; - } - set_attributes = save_sgr; - *tterm = save_tterm; - } - } else if (!version_filter(STRING, STR_IDX(acs_chars))) { - save_tterm = *tterm; - if (purged_acs(tterm)) { - (void) FMT_ENTRY(); - } - *tterm = save_tterm; - } -} - -void -dump_uses(const char *name, bool infodump) -/* dump "use=" clauses in the appropriate format */ -{ - char buffer[MAX_TERMINFO_LENGTH]; - - if (outform == F_TERMCAP || outform == F_TCONVERR) - trim_trailing(); - (void) sprintf(buffer, "%s%s", infodump ? "use=" : "tc=", name); - wrap_concat(buffer); -} - -int -show_entry(void) -{ - trim_trailing(); - (void) fputs(outbuf.text, stdout); - putchar('\n'); - return (int) outbuf.used; -} - -void -compare_entry(void (*hook) (PredType t, PredIdx i, const char *name), - TERMTYPE *tp GCC_UNUSED, - bool quiet) -/* compare two entries */ -{ - PredIdx i, j; - NCURSES_CONST char *name; - - if (!quiet) - fputs(" comparing booleans.\n", stdout); - for_each_boolean(j, tp) { - i = BoolIndirect(j); - name = ExtBoolname(tp, i, bool_names); - - if (isObsolete(outform, name)) - continue; - - (*hook) (CMP_BOOLEAN, i, name); - } - - if (!quiet) - fputs(" comparing numbers.\n", stdout); - for_each_number(j, tp) { - i = NumIndirect(j); - name = ExtNumname(tp, i, num_names); - - if (isObsolete(outform, name)) - continue; - - (*hook) (CMP_NUMBER, i, name); - } - - if (!quiet) - fputs(" comparing strings.\n", stdout); - for_each_string(j, tp) { - i = StrIndirect(j); - name = ExtStrname(tp, i, str_names); - - if (isObsolete(outform, name)) - continue; - - (*hook) (CMP_STRING, i, name); - } - - /* (void) fputs(" comparing use entries.\n", stdout); */ - (*hook) (CMP_USE, 0, "use"); - -} - -#define NOTSET(s) ((s) == 0) - -/* - * This bit of legerdemain turns all the terminfo variable names into - * references to locations in the arrays Booleans, Numbers, and Strings --- - * precisely what's needed. - */ -#undef CUR -#define CUR tp-> - -static void -set_obsolete_termcaps(TERMTYPE *tp) -{ -#include "capdefaults.c" -} - -/* - * Convert an alternate-character-set string to canonical form: sorted and - * unique. - */ -void -repair_acsc(TERMTYPE *tp) -{ - if (VALID_STRING(acs_chars)) { - size_t n, m; - char mapped[256]; - char extra = 0; - unsigned source; - unsigned target; - bool fix_needed = FALSE; - - for (n = 0, source = 0; acs_chars[n] != 0; n++) { - target = UChar(acs_chars[n]); - if (source >= target) { - fix_needed = TRUE; - break; - } - source = target; - if (acs_chars[n + 1]) - n++; - } - if (fix_needed) { - memset(mapped, 0, sizeof(mapped)); - for (n = 0; acs_chars[n] != 0; n++) { - source = UChar(acs_chars[n]); - if ((target = (unsigned char) acs_chars[n + 1]) != 0) { - mapped[source] = (char) target; - n++; - } else { - extra = (char) source; - } - } - for (n = m = 0; n < sizeof(mapped); n++) { - if (mapped[n]) { - acs_chars[m++] = (char) n; - acs_chars[m++] = mapped[n]; - } - } - if (extra) - acs_chars[m++] = extra; /* garbage in, garbage out */ - acs_chars[m] = 0; - } - } -} diff --git a/deps/ncurses-5.9/progs/infocmp b/deps/ncurses-5.9/progs/infocmp deleted file mode 100755 index e4e13de..0000000 Binary files a/deps/ncurses-5.9/progs/infocmp and /dev/null differ diff --git a/deps/ncurses-5.9/progs/infocmp.c b/deps/ncurses-5.9/progs/infocmp.c deleted file mode 100644 index 2af9cb5..0000000 --- a/deps/ncurses-5.9/progs/infocmp.c +++ /dev/null @@ -1,1657 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * infocmp.c -- decompile an entry, or compare two entries - * written by Eric S. Raymond - * and Thomas E Dickey - */ - -#include - -#include - -MODULE_ID("$Id: infocmp.c,v 1.105 2010/05/01 22:04:08 tom Exp $") - -#define L_CURL "{" -#define R_CURL "}" - -#define MAX_STRING 1024 /* maximum formatted string */ - -const char *_nc_progname = "infocmp"; - -typedef char path[PATH_MAX]; - -/*************************************************************************** - * - * The following control variables, together with the contents of the - * terminfo entries, completely determine the actions of the program. - * - ***************************************************************************/ - -static ENTRY *entries; /* terminfo entries */ -static int termcount; /* count of terminal entries */ - -static bool limited = TRUE; /* "-r" option is not set */ -static bool quiet = FALSE; -static bool literal = FALSE; -static const char *bool_sep = ":"; -static const char *s_absent = "NULL"; -static const char *s_cancel = "NULL"; -static const char *tversion; /* terminfo version selected */ -static int itrace; /* trace flag for debugging */ -static int mwidth = 60; -static int numbers = 0; /* format "%'char'" to/from "%{number}" */ -static int outform = F_TERMINFO; /* output format */ -static int sortmode; /* sort_mode */ - -/* main comparison mode */ -static int compare; -#define C_DEFAULT 0 /* don't force comparison mode */ -#define C_DIFFERENCE 1 /* list differences between two terminals */ -#define C_COMMON 2 /* list common capabilities */ -#define C_NAND 3 /* list capabilities in neither terminal */ -#define C_USEALL 4 /* generate relative use-form entry */ -static bool ignorepads; /* ignore pad prefixes when diffing */ - -#if NO_LEAKS -#undef ExitProgram -static void ExitProgram(int code) GCC_NORETURN; -/* prototype is to get gcc to accept the noreturn attribute */ -static void -ExitProgram(int code) -{ - while (termcount-- > 0) - _nc_free_termtype(&entries[termcount].tterm); - _nc_leaks_dump_entry(); - free(entries); - _nc_free_tic(code); -} -#endif - -static char * -canonical_name(char *ptr, char *buf) -/* extract the terminal type's primary name */ -{ - char *bp; - - (void) strcpy(buf, ptr); - if ((bp = strchr(buf, '|')) != 0) - *bp = '\0'; - - return (buf); -} - -/*************************************************************************** - * - * Predicates for dump function - * - ***************************************************************************/ - -static int -capcmp(PredIdx idx, const char *s, const char *t) -/* capability comparison function */ -{ - if (!VALID_STRING(s) && !VALID_STRING(t)) - return (s != t); - else if (!VALID_STRING(s) || !VALID_STRING(t)) - return (1); - - if ((idx == acs_chars_index) || !ignorepads) - return (strcmp(s, t)); - else - return (_nc_capcmp(s, t)); -} - -static int -use_predicate(unsigned type, PredIdx idx) -/* predicate function to use for use decompilation */ -{ - ENTRY *ep; - - switch (type) { - case BOOLEAN: - { - int is_set = FALSE; - - /* - * This assumes that multiple use entries are supposed - * to contribute the logical or of their boolean capabilities. - * This is true if we take the semantics of multiple uses to - * be 'each capability gets the first non-default value found - * in the sequence of use entries'. - * - * Note that cancelled or absent booleans are stored as FALSE, - * unlike numbers and strings, whose cancelled/absent state is - * recorded in the terminfo database. - */ - for (ep = &entries[1]; ep < entries + termcount; ep++) - if (ep->tterm.Booleans[idx] == TRUE) { - is_set = entries[0].tterm.Booleans[idx]; - break; - } - if (is_set != entries[0].tterm.Booleans[idx]) - return (!is_set); - else - return (FAIL); - } - - case NUMBER: - { - int value = ABSENT_NUMERIC; - - /* - * We take the semantics of multiple uses to be 'each - * capability gets the first non-default value found - * in the sequence of use entries'. - */ - for (ep = &entries[1]; ep < entries + termcount; ep++) - if (VALID_NUMERIC(ep->tterm.Numbers[idx])) { - value = ep->tterm.Numbers[idx]; - break; - } - - if (value != entries[0].tterm.Numbers[idx]) - return (value != ABSENT_NUMERIC); - else - return (FAIL); - } - - case STRING: - { - char *termstr, *usestr = ABSENT_STRING; - - termstr = entries[0].tterm.Strings[idx]; - - /* - * We take the semantics of multiple uses to be 'each - * capability gets the first non-default value found - * in the sequence of use entries'. - */ - for (ep = &entries[1]; ep < entries + termcount; ep++) - if (ep->tterm.Strings[idx]) { - usestr = ep->tterm.Strings[idx]; - break; - } - - if (usestr == ABSENT_STRING && termstr == ABSENT_STRING) - return (FAIL); - else if (!usestr || !termstr || capcmp(idx, usestr, termstr)) - return (TRUE); - else - return (FAIL); - } - } - - return (FALSE); /* pacify compiler */ -} - -static bool -useeq(ENTRY * e1, ENTRY * e2) -/* are the use references in two entries equivalent? */ -{ - unsigned i, j; - - if (e1->nuses != e2->nuses) - return (FALSE); - - /* Ugh...this is quadratic again */ - for (i = 0; i < e1->nuses; i++) { - bool foundmatch = FALSE; - - /* search second entry for given use reference */ - for (j = 0; j < e2->nuses; j++) - if (!strcmp(e1->uses[i].name, e2->uses[j].name)) { - foundmatch = TRUE; - break; - } - - if (!foundmatch) - return (FALSE); - } - - return (TRUE); -} - -static bool -entryeq(TERMTYPE *t1, TERMTYPE *t2) -/* are two entries equivalent? */ -{ - unsigned i; - - for (i = 0; i < NUM_BOOLEANS(t1); i++) - if (t1->Booleans[i] != t2->Booleans[i]) - return (FALSE); - - for (i = 0; i < NUM_NUMBERS(t1); i++) - if (t1->Numbers[i] != t2->Numbers[i]) - return (FALSE); - - for (i = 0; i < NUM_STRINGS(t1); i++) - if (capcmp((PredIdx) i, t1->Strings[i], t2->Strings[i])) - return (FALSE); - - return (TRUE); -} - -#define TIC_EXPAND(result) _nc_tic_expand(result, outform==F_TERMINFO, numbers) - -static void -print_uses(ENTRY * ep, FILE *fp) -/* print an entry's use references */ -{ - unsigned i; - - if (!ep->nuses) - fputs("NULL", fp); - else - for (i = 0; i < ep->nuses; i++) { - fputs(ep->uses[i].name, fp); - if (i < ep->nuses - 1) - fputs(" ", fp); - } -} - -static const char * -dump_boolean(int val) -/* display the value of a boolean capability */ -{ - switch (val) { - case ABSENT_BOOLEAN: - return (s_absent); - case CANCELLED_BOOLEAN: - return (s_cancel); - case FALSE: - return ("F"); - case TRUE: - return ("T"); - default: - return ("?"); - } -} - -static void -dump_numeric(int val, char *buf) -/* display the value of a boolean capability */ -{ - switch (val) { - case ABSENT_NUMERIC: - strcpy(buf, s_absent); - break; - case CANCELLED_NUMERIC: - strcpy(buf, s_cancel); - break; - default: - sprintf(buf, "%d", val); - break; - } -} - -static void -dump_string(char *val, char *buf) -/* display the value of a string capability */ -{ - if (val == ABSENT_STRING) - strcpy(buf, s_absent); - else if (val == CANCELLED_STRING) - strcpy(buf, s_cancel); - else { - sprintf(buf, "'%.*s'", MAX_STRING - 3, TIC_EXPAND(val)); - } -} - -static void -compare_predicate(PredType type, PredIdx idx, const char *name) -/* predicate function to use for entry difference reports */ -{ - register ENTRY *e1 = &entries[0]; - register ENTRY *e2 = &entries[1]; - char buf1[MAX_STRING], buf2[MAX_STRING]; - int b1, b2; - int n1, n2; - char *s1, *s2; - - switch (type) { - case CMP_BOOLEAN: - b1 = e1->tterm.Booleans[idx]; - b2 = e2->tterm.Booleans[idx]; - switch (compare) { - case C_DIFFERENCE: - if (!(b1 == ABSENT_BOOLEAN && b2 == ABSENT_BOOLEAN) && b1 != b2) - (void) printf("\t%s: %s%s%s.\n", - name, - dump_boolean(b1), - bool_sep, - dump_boolean(b2)); - break; - - case C_COMMON: - if (b1 == b2 && b1 != ABSENT_BOOLEAN) - (void) printf("\t%s= %s.\n", name, dump_boolean(b1)); - break; - - case C_NAND: - if (b1 == ABSENT_BOOLEAN && b2 == ABSENT_BOOLEAN) - (void) printf("\t!%s.\n", name); - break; - } - break; - - case CMP_NUMBER: - n1 = e1->tterm.Numbers[idx]; - n2 = e2->tterm.Numbers[idx]; - dump_numeric(n1, buf1); - dump_numeric(n2, buf2); - switch (compare) { - case C_DIFFERENCE: - if (!((n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC)) && n1 != n2) - (void) printf("\t%s: %s, %s.\n", name, buf1, buf2); - break; - - case C_COMMON: - if (n1 != ABSENT_NUMERIC && n2 != ABSENT_NUMERIC && n1 == n2) - (void) printf("\t%s= %s.\n", name, buf1); - break; - - case C_NAND: - if (n1 == ABSENT_NUMERIC && n2 == ABSENT_NUMERIC) - (void) printf("\t!%s.\n", name); - break; - } - break; - - case CMP_STRING: - s1 = e1->tterm.Strings[idx]; - s2 = e2->tterm.Strings[idx]; - switch (compare) { - case C_DIFFERENCE: - if (capcmp(idx, s1, s2)) { - dump_string(s1, buf1); - dump_string(s2, buf2); - if (strcmp(buf1, buf2)) - (void) printf("\t%s: %s, %s.\n", name, buf1, buf2); - } - break; - - case C_COMMON: - if (s1 && s2 && !capcmp(idx, s1, s2)) - (void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1)); - break; - - case C_NAND: - if (!s1 && !s2) - (void) printf("\t!%s.\n", name); - break; - } - break; - - case CMP_USE: - /* unlike the other modes, this compares *all* use entries */ - switch (compare) { - case C_DIFFERENCE: - if (!useeq(e1, e2)) { - (void) fputs("\tuse: ", stdout); - print_uses(e1, stdout); - fputs(", ", stdout); - print_uses(e2, stdout); - fputs(".\n", stdout); - } - break; - - case C_COMMON: - if (e1->nuses && e2->nuses && useeq(e1, e2)) { - (void) fputs("\tuse: ", stdout); - print_uses(e1, stdout); - fputs(".\n", stdout); - } - break; - - case C_NAND: - if (!e1->nuses && !e2->nuses) - (void) printf("\t!use.\n"); - break; - } - } -} - -/*************************************************************************** - * - * Init string analysis - * - ***************************************************************************/ - -typedef struct { - const char *from; - const char *to; -} assoc; - -static const assoc std_caps[] = -{ - /* these are specified by X.364 and iBCS2 */ - {"\033c", "RIS"}, /* full reset */ - {"\0337", "SC"}, /* save cursor */ - {"\0338", "RC"}, /* restore cursor */ - {"\033[r", "RSR"}, /* not an X.364 mnemonic */ - {"\033[m", "SGR0"}, /* not an X.364 mnemonic */ - {"\033[2J", "ED2"}, /* clear page */ - - /* this group is specified by ISO 2022 */ - {"\033(0", "ISO DEC G0"}, /* enable DEC graphics for G0 */ - {"\033(A", "ISO UK G0"}, /* enable UK chars for G0 */ - {"\033(B", "ISO US G0"}, /* enable US chars for G0 */ - {"\033)0", "ISO DEC G1"}, /* enable DEC graphics for G1 */ - {"\033)A", "ISO UK G1"}, /* enable UK chars for G1 */ - {"\033)B", "ISO US G1"}, /* enable US chars for G1 */ - - /* these are DEC private controls widely supported by emulators */ - {"\033=", "DECPAM"}, /* application keypad mode */ - {"\033>", "DECPNM"}, /* normal keypad mode */ - {"\033<", "DECANSI"}, /* enter ANSI mode */ - {"\033[!p", "DECSTR"}, /* soft reset */ - {"\033 F", "S7C1T"}, /* 7-bit controls */ - - {(char *) 0, (char *) 0} -}; - -static const assoc std_modes[] = -/* ECMA \E[ ... [hl] modes recognized by many emulators */ -{ - {"2", "AM"}, /* keyboard action mode */ - {"4", "IRM"}, /* insert/replace mode */ - {"12", "SRM"}, /* send/receive mode */ - {"20", "LNM"}, /* linefeed mode */ - {(char *) 0, (char *) 0} -}; - -static const assoc private_modes[] = -/* DEC \E[ ... [hl] modes recognized by many emulators */ -{ - {"1", "CKM"}, /* application cursor keys */ - {"2", "ANM"}, /* set VT52 mode */ - {"3", "COLM"}, /* 132-column mode */ - {"4", "SCLM"}, /* smooth scroll */ - {"5", "SCNM"}, /* reverse video mode */ - {"6", "OM"}, /* origin mode */ - {"7", "AWM"}, /* wraparound mode */ - {"8", "ARM"}, /* auto-repeat mode */ - {(char *) 0, (char *) 0} -}; - -static const assoc ecma_highlights[] = -/* recognize ECMA attribute sequences */ -{ - {"0", "NORMAL"}, /* normal */ - {"1", "+BOLD"}, /* bold on */ - {"2", "+DIM"}, /* dim on */ - {"3", "+ITALIC"}, /* italic on */ - {"4", "+UNDERLINE"}, /* underline on */ - {"5", "+BLINK"}, /* blink on */ - {"6", "+FASTBLINK"}, /* fastblink on */ - {"7", "+REVERSE"}, /* reverse on */ - {"8", "+INVISIBLE"}, /* invisible on */ - {"9", "+DELETED"}, /* deleted on */ - {"10", "MAIN-FONT"}, /* select primary font */ - {"11", "ALT-FONT-1"}, /* select alternate font 1 */ - {"12", "ALT-FONT-2"}, /* select alternate font 2 */ - {"13", "ALT-FONT-3"}, /* select alternate font 3 */ - {"14", "ALT-FONT-4"}, /* select alternate font 4 */ - {"15", "ALT-FONT-5"}, /* select alternate font 5 */ - {"16", "ALT-FONT-6"}, /* select alternate font 6 */ - {"17", "ALT-FONT-7"}, /* select alternate font 7 */ - {"18", "ALT-FONT-1"}, /* select alternate font 1 */ - {"19", "ALT-FONT-1"}, /* select alternate font 1 */ - {"20", "FRAKTUR"}, /* Fraktur font */ - {"21", "DOUBLEUNDER"}, /* double underline */ - {"22", "-DIM"}, /* dim off */ - {"23", "-ITALIC"}, /* italic off */ - {"24", "-UNDERLINE"}, /* underline off */ - {"25", "-BLINK"}, /* blink off */ - {"26", "-FASTBLINK"}, /* fastblink off */ - {"27", "-REVERSE"}, /* reverse off */ - {"28", "-INVISIBLE"}, /* invisible off */ - {"29", "-DELETED"}, /* deleted off */ - {(char *) 0, (char *) 0} -}; - -static int -skip_csi(const char *cap) -{ - int result = 0; - if (cap[0] == '\033' && cap[1] == '[') - result = 2; - else if (UChar(cap[0]) == 0233) - result = 1; - return result; -} - -static bool -same_param(const char *table, const char *param, unsigned length) -{ - bool result = FALSE; - if (strncmp(table, param, length) == 0) { - result = !isdigit(UChar(param[length])); - } - return result; -} - -static char * -lookup_params(const assoc * table, char *dst, char *src) -{ - char *result = 0; - const char *ep = strtok(src, ";"); - - if (ep != 0) { - const assoc *ap; - - do { - bool found = FALSE; - - for (ap = table; ap->from; ap++) { - size_t tlen = strlen(ap->from); - - if (same_param(ap->from, ep, tlen)) { - (void) strcat(dst, ap->to); - found = TRUE; - break; - } - } - - if (!found) - (void) strcat(dst, ep); - (void) strcat(dst, ";"); - } while - ((ep = strtok((char *) 0, ";"))); - - dst[strlen(dst) - 1] = '\0'; - - result = dst; - } - return result; -} - -static void -analyze_string(const char *name, const char *cap, TERMTYPE *tp) -{ - char buf2[MAX_TERMINFO_LENGTH]; - const char *sp; - const assoc *ap; - int tp_lines = tp->Numbers[2]; - - if (cap == ABSENT_STRING || cap == CANCELLED_STRING) - return; - (void) printf("%s: ", name); - - for (sp = cap; *sp; sp++) { - int i; - int csi; - size_t len = 0; - size_t next; - const char *expansion = 0; - char buf3[MAX_TERMINFO_LENGTH]; - - /* first, check other capabilities in this entry */ - for (i = 0; i < STRCOUNT; i++) { - char *cp = tp->Strings[i]; - - /* don't use soft-key capabilities */ - if (strnames[i][0] == 'k' && strnames[i][0] == 'f') - continue; - - if (cp != ABSENT_STRING && cp != CANCELLED_STRING && cp[0] && cp - != cap) { - len = strlen(cp); - (void) strncpy(buf2, sp, len); - buf2[len] = '\0'; - - if (_nc_capcmp(cp, buf2)) - continue; - -#define ISRS(s) (!strncmp((s), "is", 2) || !strncmp((s), "rs", 2)) - /* - * Theoretically we just passed the test for translation - * (equality once the padding is stripped). However, there - * are a few more hoops that need to be jumped so that - * identical pairs of initialization and reset strings - * don't just refer to each other. - */ - if (ISRS(name) || ISRS(strnames[i])) - if (cap < cp) - continue; -#undef ISRS - - expansion = strnames[i]; - break; - } - } - - /* now check the standard capabilities */ - if (!expansion) { - csi = skip_csi(sp); - for (ap = std_caps; ap->from; ap++) { - size_t adj = (size_t) (csi ? 2 : 0); - - len = strlen(ap->from); - if (csi && skip_csi(ap->from) != csi) - continue; - if (len > adj - && strncmp(ap->from + adj, sp + csi, len - adj) == 0) { - expansion = ap->to; - len -= adj; - len += (size_t) csi; - break; - } - } - } - - /* now check for standard-mode sequences */ - if (!expansion - && (csi = skip_csi(sp)) != 0 - && (len = strspn(sp + csi, "0123456789;")) - && (len < sizeof(buf3)) - && (next = (size_t) csi + len) - && ((sp[next] == 'h') || (sp[next] == 'l'))) { - - (void) strcpy(buf2, (sp[next] == 'h') ? "ECMA+" : "ECMA-"); - (void) strncpy(buf3, sp + csi, len); - buf3[len] = '\0'; - len += (size_t) csi + 1; - - expansion = lookup_params(std_modes, buf2, buf3); - } - - /* now check for private-mode sequences */ - if (!expansion - && (csi = skip_csi(sp)) != 0 - && sp[csi] == '?' - && (len = strspn(sp + csi + 1, "0123456789;")) - && (len < sizeof(buf3)) - && (next = (size_t) csi + 1 + len) - && ((sp[next] == 'h') || (sp[next] == 'l'))) { - - (void) strcpy(buf2, (sp[next] == 'h') ? "DEC+" : "DEC-"); - (void) strncpy(buf3, sp + csi + 1, len); - buf3[len] = '\0'; - len += (size_t) csi + 2; - - expansion = lookup_params(private_modes, buf2, buf3); - } - - /* now check for ECMA highlight sequences */ - if (!expansion - && (csi = skip_csi(sp)) != 0 - && (len = strspn(sp + csi, "0123456789;")) != 0 - && (len < sizeof(buf3)) - && (next = (size_t) csi + len) - && sp[next] == 'm') { - - (void) strcpy(buf2, "SGR:"); - (void) strncpy(buf3, sp + csi, len); - buf3[len] = '\0'; - len += (size_t) csi + 1; - - expansion = lookup_params(ecma_highlights, buf2, buf3); - } - - if (!expansion - && (csi = skip_csi(sp)) != 0 - && sp[csi] == 'm') { - len = (size_t) csi + 1; - (void) strcpy(buf2, "SGR:"); - strcat(buf2, ecma_highlights[0].to); - expansion = buf2; - } - - /* now check for scroll region reset */ - if (!expansion - && (csi = skip_csi(sp)) != 0) { - if (sp[csi] == 'r') { - expansion = "RSR"; - len = 1; - } else { - (void) sprintf(buf2, "1;%dr", tp_lines); - len = strlen(buf2); - if (strncmp(buf2, sp + csi, len) == 0) - expansion = "RSR"; - } - len += (size_t) csi; - } - - /* now check for home-down */ - if (!expansion - && (csi = skip_csi(sp)) != 0) { - (void) sprintf(buf2, "%d;1H", tp_lines); - len = strlen(buf2); - if (strncmp(buf2, sp + csi, len) == 0) { - expansion = "LL"; - } else { - (void) sprintf(buf2, "%dH", tp_lines); - len = strlen(buf2); - if (strncmp(buf2, sp + csi, len) == 0) { - expansion = "LL"; - } - } - len += (size_t) csi; - } - - /* now look at the expansion we got, if any */ - if (expansion) { - printf("{%s}", expansion); - sp += len - 1; - } else { - /* couldn't match anything */ - buf2[0] = *sp; - buf2[1] = '\0'; - fputs(TIC_EXPAND(buf2), stdout); - } - } - putchar('\n'); -} - -/*************************************************************************** - * - * File comparison - * - ***************************************************************************/ - -static void -file_comparison(int argc, char *argv[]) -{ -#define MAXCOMPARE 2 - /* someday we may allow comparisons on more files */ - int filecount = 0; - ENTRY *heads[MAXCOMPARE]; - ENTRY *qp, *rp; - int i, n; - - memset(heads, 0, sizeof(heads)); - dump_init((char *) 0, F_LITERAL, S_TERMINFO, 0, itrace, FALSE); - - for (n = 0; n < argc && n < MAXCOMPARE; n++) { - if (freopen(argv[n], "r", stdin) == 0) - _nc_err_abort("Can't open %s", argv[n]); - - _nc_head = _nc_tail = 0; - - /* parse entries out of the source file */ - _nc_set_source(argv[n]); - _nc_read_entry_source(stdin, NULL, TRUE, literal, NULLHOOK); - - if (itrace) - (void) fprintf(stderr, "Resolving file %d...\n", n - 0); - - /* maybe do use resolution */ - if (!_nc_resolve_uses2(!limited, literal)) { - (void) fprintf(stderr, - "There are unresolved use entries in %s:\n", - argv[n]); - for_entry_list(qp) { - if (qp->nuses) { - (void) fputs(qp->tterm.term_names, stderr); - (void) fputc('\n', stderr); - } - } - ExitProgram(EXIT_FAILURE); - } - - heads[filecount] = _nc_head; - filecount++; - } - - /* OK, all entries are in core. Ready to do the comparison */ - if (itrace) - (void) fprintf(stderr, "Entries are now in core...\n"); - - /* The entry-matching loop. Sigh, this is intrinsically quadratic. */ - for (qp = heads[0]; qp; qp = qp->next) { - for (rp = heads[1]; rp; rp = rp->next) - if (_nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) { - if (qp->ncrosslinks < MAX_CROSSLINKS) - qp->crosslinks[qp->ncrosslinks] = rp; - qp->ncrosslinks++; - - if (rp->ncrosslinks < MAX_CROSSLINKS) - rp->crosslinks[rp->ncrosslinks] = qp; - rp->ncrosslinks++; - } - } - - /* now we have two circular lists with crosslinks */ - if (itrace) - (void) fprintf(stderr, "Name matches are done...\n"); - - for (qp = heads[0]; qp; qp = qp->next) { - if (qp->ncrosslinks > 1) { - (void) fprintf(stderr, - "%s in file 1 (%s) has %d matches in file 2 (%s):\n", - _nc_first_name(qp->tterm.term_names), - argv[0], - qp->ncrosslinks, - argv[1]); - for (i = 0; i < qp->ncrosslinks; i++) - (void) fprintf(stderr, - "\t%s\n", - _nc_first_name((qp->crosslinks[i])->tterm.term_names)); - } - } - - for (rp = heads[1]; rp; rp = rp->next) { - if (rp->ncrosslinks > 1) { - (void) fprintf(stderr, - "%s in file 2 (%s) has %d matches in file 1 (%s):\n", - _nc_first_name(rp->tterm.term_names), - argv[1], - rp->ncrosslinks, - argv[0]); - for (i = 0; i < rp->ncrosslinks; i++) - (void) fprintf(stderr, - "\t%s\n", - _nc_first_name((rp->crosslinks[i])->tterm.term_names)); - } - } - - (void) printf("In file 1 (%s) only:\n", argv[0]); - for (qp = heads[0]; qp; qp = qp->next) - if (qp->ncrosslinks == 0) - (void) printf("\t%s\n", - _nc_first_name(qp->tterm.term_names)); - - (void) printf("In file 2 (%s) only:\n", argv[1]); - for (rp = heads[1]; rp; rp = rp->next) - if (rp->ncrosslinks == 0) - (void) printf("\t%s\n", - _nc_first_name(rp->tterm.term_names)); - - (void) printf("The following entries are equivalent:\n"); - for (qp = heads[0]; qp; qp = qp->next) { - if (qp->ncrosslinks == 1) { - rp = qp->crosslinks[0]; - - repair_acsc(&qp->tterm); - repair_acsc(&rp->tterm); -#if NCURSES_XNAMES - _nc_align_termtype(&qp->tterm, &rp->tterm); -#endif - if (entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp)) { - char name1[NAMESIZE], name2[NAMESIZE]; - - (void) canonical_name(qp->tterm.term_names, name1); - (void) canonical_name(rp->tterm.term_names, name2); - - (void) printf("%s = %s\n", name1, name2); - } - } - } - - (void) printf("Differing entries:\n"); - termcount = 2; - for (qp = heads[0]; qp; qp = qp->next) { - - if (qp->ncrosslinks == 1) { - rp = qp->crosslinks[0]; -#if NCURSES_XNAMES - /* sorry - we have to do this on each pass */ - _nc_align_termtype(&qp->tterm, &rp->tterm); -#endif - if (!(entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp))) { - char name1[NAMESIZE], name2[NAMESIZE]; - - entries[0] = *qp; - entries[1] = *rp; - - (void) canonical_name(qp->tterm.term_names, name1); - (void) canonical_name(rp->tterm.term_names, name2); - - switch (compare) { - case C_DIFFERENCE: - if (itrace) - (void) fprintf(stderr, - "%s: dumping differences\n", - _nc_progname); - (void) printf("comparing %s to %s.\n", name1, name2); - compare_entry(compare_predicate, &entries->tterm, quiet); - break; - - case C_COMMON: - if (itrace) - (void) fprintf(stderr, - "%s: dumping common capabilities\n", - _nc_progname); - (void) printf("comparing %s to %s.\n", name1, name2); - compare_entry(compare_predicate, &entries->tterm, quiet); - break; - - case C_NAND: - if (itrace) - (void) fprintf(stderr, - "%s: dumping differences\n", - _nc_progname); - (void) printf("comparing %s to %s.\n", name1, name2); - compare_entry(compare_predicate, &entries->tterm, quiet); - break; - - } - } - } - } -} - -static void -usage(void) -{ - static const char *tbl[] = - { - "Usage: infocmp [options] [-A directory] [-B directory] [termname...]" - ,"" - ,"Options:" - ," -1 print single-column" - ," -C use termcap-names" - ," -F compare terminfo-files" - ," -I use terminfo-names" - ," -L use long names" - ," -R subset (see manpage)" - ," -T eliminate size limits (test)" - ," -U eliminate post-processing of entries" - ," -V print version" -#if NCURSES_XNAMES - ," -a with -F, list commented-out caps" -#endif - ," -c list common capabilities" - ," -d list different capabilities" - ," -e format output for C initializer" - ," -E format output as C tables" - ," -f with -1, format complex strings" - ," -G format %{number} to %'char'" - ," -g format %'char' to %{number}" - ," -i analyze initialization/reset" - ," -l output terminfo names" - ," -n list capabilities in neither" - ," -p ignore padding specifiers" - ," -q brief listing, removes headers" - ," -r with -C, output in termcap form" - ," -r with -F, resolve use-references" - ," -s [d|i|l|c] sort fields" -#if NCURSES_XNAMES - ," -t suppress commented-out capabilities" -#endif - ," -u produce source with 'use='" - ," -v number (verbose)" - ," -w number (width)" -#if NCURSES_XNAMES - ," -x treat unknown capabilities as user-defined" -#endif - }; - const size_t first = 3; - const size_t last = SIZEOF(tbl); - const size_t left = (last - first + 1) / 2 + first; - size_t n; - - for (n = 0; n < left; n++) { - size_t m = (n < first) ? last : n + left - first; - if (m < last) - fprintf(stderr, "%-40.40s%s\n", tbl[n], tbl[m]); - else - fprintf(stderr, "%s\n", tbl[n]); - } - ExitProgram(EXIT_FAILURE); -} - -static char * -any_initializer(const char *fmt, const char *type) -{ - static char *initializer; - char *s; - - if (initializer == 0) - initializer = (char *) malloc(strlen(entries->tterm.term_names) + - strlen(type) + strlen(fmt)); - - (void) strcpy(initializer, entries->tterm.term_names); - for (s = initializer; *s != 0 && *s != '|'; s++) { - if (!isalnum(UChar(*s))) - *s = '_'; - } - *s = 0; - (void) sprintf(s, fmt, type); - return initializer; -} - -static char * -name_initializer(const char *type) -{ - return any_initializer("_%s_data", type); -} - -static char * -string_variable(const char *type) -{ - return any_initializer("_s_%s", type); -} - -/* dump C initializers for the terminal type */ -static void -dump_initializers(TERMTYPE *term) -{ - unsigned n; - const char *str = 0; - - printf("\nstatic char %s[] = \"%s\";\n\n", - name_initializer("alias"), entries->tterm.term_names); - - for_each_string(n, term) { - char buf[MAX_STRING], *sp, *tp; - - if (VALID_STRING(term->Strings[n])) { - tp = buf; - *tp++ = '"'; - for (sp = term->Strings[n]; - *sp != 0 && (tp - buf) < MAX_STRING - 6; - sp++) { - if (isascii(UChar(*sp)) - && isprint(UChar(*sp)) - && *sp != '\\' - && *sp != '"') - *tp++ = *sp; - else { - (void) sprintf(tp, "\\%03o", UChar(*sp)); - tp += 4; - } - } - *tp++ = '"'; - *tp = '\0'; - (void) printf("static char %-20s[] = %s;\n", - string_variable(ExtStrname(term, n, strnames)), buf); - } - } - printf("\n"); - - (void) printf("static char %s[] = %s\n", name_initializer("bool"), L_CURL); - - for_each_boolean(n, term) { - switch ((int) (term->Booleans[n])) { - case TRUE: - str = "TRUE"; - break; - - case FALSE: - str = "FALSE"; - break; - - case ABSENT_BOOLEAN: - str = "ABSENT_BOOLEAN"; - break; - - case CANCELLED_BOOLEAN: - str = "CANCELLED_BOOLEAN"; - break; - } - (void) printf("\t/* %3u: %-8s */\t%s,\n", - n, ExtBoolname(term, n, boolnames), str); - } - (void) printf("%s;\n", R_CURL); - - (void) printf("static short %s[] = %s\n", name_initializer("number"), L_CURL); - - for_each_number(n, term) { - char buf[BUFSIZ]; - switch (term->Numbers[n]) { - case ABSENT_NUMERIC: - str = "ABSENT_NUMERIC"; - break; - case CANCELLED_NUMERIC: - str = "CANCELLED_NUMERIC"; - break; - default: - sprintf(buf, "%d", term->Numbers[n]); - str = buf; - break; - } - (void) printf("\t/* %3u: %-8s */\t%s,\n", n, - ExtNumname(term, n, numnames), str); - } - (void) printf("%s;\n", R_CURL); - - (void) printf("static char * %s[] = %s\n", name_initializer("string"), L_CURL); - - for_each_string(n, term) { - - if (term->Strings[n] == ABSENT_STRING) - str = "ABSENT_STRING"; - else if (term->Strings[n] == CANCELLED_STRING) - str = "CANCELLED_STRING"; - else { - str = string_variable(ExtStrname(term, n, strnames)); - } - (void) printf("\t/* %3u: %-8s */\t%s,\n", n, - ExtStrname(term, n, strnames), str); - } - (void) printf("%s;\n", R_CURL); - -#if NCURSES_XNAMES - if ((NUM_BOOLEANS(term) != BOOLCOUNT) - || (NUM_NUMBERS(term) != NUMCOUNT) - || (NUM_STRINGS(term) != STRCOUNT)) { - (void) printf("static char * %s[] = %s\n", - name_initializer("string_ext"), L_CURL); - for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) { - (void) printf("\t/* %3u: bool */\t\"%s\",\n", - n, ExtBoolname(term, n, boolnames)); - } - for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) { - (void) printf("\t/* %3u: num */\t\"%s\",\n", - n, ExtNumname(term, n, numnames)); - } - for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) { - (void) printf("\t/* %3u: str */\t\"%s\",\n", - n, ExtStrname(term, n, strnames)); - } - (void) printf("%s;\n", R_CURL); - } -#endif -} - -/* dump C initializers for the terminal type */ -static void -dump_termtype(TERMTYPE *term) -{ - (void) printf("\t%s\n\t\t%s,\n", L_CURL, name_initializer("alias")); - (void) printf("\t\t(char *)0,\t/* pointer to string table */\n"); - - (void) printf("\t\t%s,\n", name_initializer("bool")); - (void) printf("\t\t%s,\n", name_initializer("number")); - - (void) printf("\t\t%s,\n", name_initializer("string")); - -#if NCURSES_XNAMES - (void) printf("#if NCURSES_XNAMES\n"); - (void) printf("\t\t(char *)0,\t/* pointer to extended string table */\n"); - (void) printf("\t\t%s,\t/* ...corresponding names */\n", - ((NUM_BOOLEANS(term) != BOOLCOUNT) - || (NUM_NUMBERS(term) != NUMCOUNT) - || (NUM_STRINGS(term) != STRCOUNT)) - ? name_initializer("string_ext") - : "(char **)0"); - - (void) printf("\t\t%d,\t\t/* count total Booleans */\n", NUM_BOOLEANS(term)); - (void) printf("\t\t%d,\t\t/* count total Numbers */\n", NUM_NUMBERS(term)); - (void) printf("\t\t%d,\t\t/* count total Strings */\n", NUM_STRINGS(term)); - - (void) printf("\t\t%d,\t\t/* count extensions to Booleans */\n", - NUM_BOOLEANS(term) - BOOLCOUNT); - (void) printf("\t\t%d,\t\t/* count extensions to Numbers */\n", - NUM_NUMBERS(term) - NUMCOUNT); - (void) printf("\t\t%d,\t\t/* count extensions to Strings */\n", - NUM_STRINGS(term) - STRCOUNT); - - (void) printf("#endif /* NCURSES_XNAMES */\n"); -#else - (void) term; -#endif /* NCURSES_XNAMES */ - (void) printf("\t%s\n", R_CURL); -} - -static int -optarg_to_number(void) -{ - char *temp = 0; - long value = strtol(optarg, &temp, 0); - - if (temp == 0 || temp == optarg || *temp != 0) { - fprintf(stderr, "Expected a number, not \"%s\"\n", optarg); - ExitProgram(EXIT_FAILURE); - } - return (int) value; -} - -static char * -terminal_env(void) -{ - char *terminal; - - if ((terminal = getenv("TERM")) == 0) { - (void) fprintf(stderr, - "%s: environment variable TERM not set\n", - _nc_progname); - exit(EXIT_FAILURE); - } - return terminal; -} - -/*************************************************************************** - * - * Main sequence - * - ***************************************************************************/ - -#if NO_LEAKS -#define MAIN_LEAKS() \ - free(myargv); \ - free(tfile); \ - free(tname) -#else -#define MAIN_LEAKS() /* nothing */ -#endif - -int -main(int argc, char *argv[]) -{ - /* Avoid "local data >32k" error with mwcc */ - /* Also avoid overflowing smaller stacks on systems like AmigaOS */ - path *tfile = 0; - char **tname = 0; - int maxterms; - - char **myargv; - - char *firstdir, *restdir; - int c, i, len; - bool formatted = FALSE; - bool filecompare = FALSE; - int initdump = 0; - bool init_analyze = FALSE; - bool suppress_untranslatable = FALSE; - - /* where is the terminfo database location going to default to? */ - restdir = firstdir = 0; - -#if NCURSES_XNAMES - use_extended_names(FALSE); -#endif - - _nc_progname = _nc_rootname(argv[0]); - - /* make sure we have enough space to add two terminal entries */ - myargv = typeCalloc(char *, (size_t) (argc + 3)); - memcpy(myargv, argv, (sizeof(char *) * (size_t) argc)); - argv = myargv; - - while ((c = getopt(argc, - argv, - "1A:aB:CcdEeFfGgIiLlnpqR:rs:TtUuVv:w:x")) != -1) { - switch (c) { - case '1': - mwidth = 0; - break; - - case 'A': - firstdir = optarg; - break; - -#if NCURSES_XNAMES - case 'a': - _nc_disable_period = TRUE; - use_extended_names(TRUE); - break; -#endif - case 'B': - restdir = optarg; - break; - - case 'C': - outform = F_TERMCAP; - tversion = "BSD"; - if (sortmode == S_DEFAULT) - sortmode = S_TERMCAP; - break; - - case 'c': - compare = C_COMMON; - break; - - case 'd': - compare = C_DIFFERENCE; - break; - - case 'E': - initdump |= 2; - break; - - case 'e': - initdump |= 1; - break; - - case 'F': - filecompare = TRUE; - break; - - case 'f': - formatted = TRUE; - break; - - case 'G': - numbers = 1; - break; - - case 'g': - numbers = -1; - break; - - case 'I': - outform = F_TERMINFO; - if (sortmode == S_DEFAULT) - sortmode = S_VARIABLE; - tversion = 0; - break; - - case 'i': - init_analyze = TRUE; - break; - - case 'L': - outform = F_VARIABLE; - if (sortmode == S_DEFAULT) - sortmode = S_VARIABLE; - break; - - case 'l': - outform = F_TERMINFO; - break; - - case 'n': - compare = C_NAND; - break; - - case 'p': - ignorepads = TRUE; - break; - - case 'q': - quiet = TRUE; - s_absent = "-"; - s_cancel = "@"; - bool_sep = ", "; - break; - - case 'R': - tversion = optarg; - break; - - case 'r': - tversion = 0; - break; - - case 's': - if (*optarg == 'd') - sortmode = S_NOSORT; - else if (*optarg == 'i') - sortmode = S_TERMINFO; - else if (*optarg == 'l') - sortmode = S_VARIABLE; - else if (*optarg == 'c') - sortmode = S_TERMCAP; - else { - (void) fprintf(stderr, - "%s: unknown sort mode\n", - _nc_progname); - ExitProgram(EXIT_FAILURE); - } - break; - - case 'T': - limited = FALSE; - break; - -#if NCURSES_XNAMES - case 't': - _nc_disable_period = FALSE; - suppress_untranslatable = TRUE; - break; -#endif - - case 'U': - literal = TRUE; - break; - - case 'u': - compare = C_USEALL; - break; - - case 'V': - puts(curses_version()); - ExitProgram(EXIT_SUCCESS); - - case 'v': - itrace = optarg_to_number(); - set_trace_level(itrace); - break; - - case 'w': - mwidth = optarg_to_number(); - break; - -#if NCURSES_XNAMES - case 'x': - use_extended_names(TRUE); - break; -#endif - - default: - usage(); - } - } - - maxterms = (argc + 2 - optind); - tfile = typeMalloc(path, maxterms); - tname = typeCalloc(char *, maxterms); - entries = typeCalloc(ENTRY, maxterms); - - if (tfile == 0 - || tname == 0 - || entries == 0) { - fprintf(stderr, "%s: not enough memory\n", _nc_progname); - ExitProgram(EXIT_FAILURE); - } - - /* by default, sort by terminfo name */ - if (sortmode == S_DEFAULT) - sortmode = S_TERMINFO; - - /* set up for display */ - dump_init(tversion, outform, sortmode, mwidth, itrace, formatted); - - /* make sure we have at least one terminal name to work with */ - if (optind >= argc) - argv[argc++] = terminal_env(); - - /* if user is after a comparison, make sure we have two entries */ - if (compare != C_DEFAULT && optind >= argc - 1) - argv[argc++] = terminal_env(); - - /* exactly two terminal names with no options means do -d */ - if (argc - optind == 2 && compare == C_DEFAULT) - compare = C_DIFFERENCE; - - if (!filecompare) { - /* grab the entries */ - termcount = 0; - for (; optind < argc; optind++) { - const char *directory = termcount ? restdir : firstdir; - int status; - - tname[termcount] = argv[optind]; - - if (directory) { -#if USE_DATABASE -#if MIXEDCASE_FILENAMES -#define LEAF_FMT "%c" -#else -#define LEAF_FMT "%02x" -#endif - (void) sprintf(tfile[termcount], "%s/" LEAF_FMT "/%s", - directory, - UChar(*argv[optind]), argv[optind]); - if (itrace) - (void) fprintf(stderr, - "%s: reading entry %s from file %s\n", - _nc_progname, - argv[optind], tfile[termcount]); - - status = _nc_read_file_entry(tfile[termcount], - &entries[termcount].tterm); -#else - (void) fprintf(stderr, "%s: terminfo files not supported\n", - _nc_progname); - MAIN_LEAKS(); - ExitProgram(EXIT_FAILURE); -#endif - } else { - if (itrace) - (void) fprintf(stderr, - "%s: reading entry %s from database\n", - _nc_progname, - tname[termcount]); - - status = _nc_read_entry(tname[termcount], - tfile[termcount], - &entries[termcount].tterm); - } - - if (status <= 0) { - (void) fprintf(stderr, - "%s: couldn't open terminfo file %s.\n", - _nc_progname, - tfile[termcount]); - MAIN_LEAKS(); - ExitProgram(EXIT_FAILURE); - } - repair_acsc(&entries[termcount].tterm); - termcount++; - } - -#if NCURSES_XNAMES - if (termcount > 1) - _nc_align_termtype(&entries[0].tterm, &entries[1].tterm); -#endif - - /* dump as C initializer for the terminal type */ - if (initdump) { - if (initdump & 1) - dump_termtype(&entries[0].tterm); - if (initdump & 2) - dump_initializers(&entries[0].tterm); - } - - /* analyze the init strings */ - else if (init_analyze) { -#undef CUR -#define CUR entries[0].tterm. - analyze_string("is1", init_1string, &entries[0].tterm); - analyze_string("is2", init_2string, &entries[0].tterm); - analyze_string("is3", init_3string, &entries[0].tterm); - analyze_string("rs1", reset_1string, &entries[0].tterm); - analyze_string("rs2", reset_2string, &entries[0].tterm); - analyze_string("rs3", reset_3string, &entries[0].tterm); - analyze_string("smcup", enter_ca_mode, &entries[0].tterm); - analyze_string("rmcup", exit_ca_mode, &entries[0].tterm); -#undef CUR - } else { - - /* - * Here's where the real work gets done - */ - switch (compare) { - case C_DEFAULT: - if (itrace) - (void) fprintf(stderr, - "%s: about to dump %s\n", - _nc_progname, - tname[0]); - (void) printf("#\tReconstructed via infocmp from file: %s\n", - tfile[0]); - dump_entry(&entries[0].tterm, - suppress_untranslatable, - limited, - numbers, - NULL); - len = show_entry(); - if (itrace) - (void) fprintf(stderr, "%s: length %d\n", _nc_progname, len); - break; - - case C_DIFFERENCE: - if (itrace) - (void) fprintf(stderr, "%s: dumping differences\n", _nc_progname); - (void) printf("comparing %s to %s.\n", tname[0], tname[1]); - compare_entry(compare_predicate, &entries->tterm, quiet); - break; - - case C_COMMON: - if (itrace) - (void) fprintf(stderr, - "%s: dumping common capabilities\n", - _nc_progname); - (void) printf("comparing %s to %s.\n", tname[0], tname[1]); - compare_entry(compare_predicate, &entries->tterm, quiet); - break; - - case C_NAND: - if (itrace) - (void) fprintf(stderr, - "%s: dumping differences\n", - _nc_progname); - (void) printf("comparing %s to %s.\n", tname[0], tname[1]); - compare_entry(compare_predicate, &entries->tterm, quiet); - break; - - case C_USEALL: - if (itrace) - (void) fprintf(stderr, "%s: dumping use entry\n", _nc_progname); - dump_entry(&entries[0].tterm, - suppress_untranslatable, - limited, - numbers, - use_predicate); - for (i = 1; i < termcount; i++) - dump_uses(tname[i], !(outform == F_TERMCAP - || outform == F_TCONVERR)); - len = show_entry(); - if (itrace) - (void) fprintf(stderr, "%s: length %d\n", _nc_progname, len); - break; - } - } - } else if (compare == C_USEALL) - (void) fprintf(stderr, "Sorry, -u doesn't work with -F\n"); - else if (compare == C_DEFAULT) - (void) fprintf(stderr, "Use `tic -[CI] ' for this.\n"); - else if (argc - optind != 2) - (void) fprintf(stderr, - "File comparison needs exactly two file arguments.\n"); - else - file_comparison(argc - optind, argv + optind); - - MAIN_LEAKS(); - ExitProgram(EXIT_SUCCESS); -} - -/* infocmp.c ends here */ diff --git a/deps/ncurses-5.9/progs/modules b/deps/ncurses-5.9/progs/modules deleted file mode 100644 index 55d7a9f..0000000 --- a/deps/ncurses-5.9/progs/modules +++ /dev/null @@ -1,45 +0,0 @@ -# $Id: modules,v 1.17 2010/01/23 17:47:23 tom Exp $ -# Program modules (some are in ncurses lib!) -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1995-on -# - -@ base -clear progs $(srcdir) $(HEADER_DEPS) -tic progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h -toe progs $(srcdir) $(HEADER_DEPS) $(INCDIR)/hashed_db.h -dump_entry progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_entry.h ../include/parametrized.h $(INCDIR)/capdefaults.c termsort.c -infocmp progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_entry.h -tabs progs $(srcdir) $(HEADER_DEPS) -tput progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h termsort.c -tset progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h ../include/termcap.h -transform progs $(srcdir) $(HEADER_DEPS) transform.h - -# vile:makemode diff --git a/deps/ncurses-5.9/progs/tabs b/deps/ncurses-5.9/progs/tabs deleted file mode 100755 index b5c910e..0000000 Binary files a/deps/ncurses-5.9/progs/tabs and /dev/null differ diff --git a/deps/ncurses-5.9/progs/tabs.c b/deps/ncurses-5.9/progs/tabs.c deleted file mode 100644 index b59c908..0000000 --- a/deps/ncurses-5.9/progs/tabs.c +++ /dev/null @@ -1,510 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2008-2009,2010 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: Thomas E. Dickey 2008 * - ****************************************************************************/ - -/* - * tabs.c -- set terminal hard-tabstops - */ - -#define USE_LIBTINFO -#include - -MODULE_ID("$Id: tabs.c,v 1.19 2010/10/23 22:26:01 tom Exp $") - -static void usage(void) GCC_NORETURN; - -static int max_cols; - -static int -putch(int c) -{ - return putchar(c); -} - -static void -do_tabs(int *tab_list) -{ - int last = 1; - int stop; - - putchar('\r'); - while ((stop = *tab_list++) > 0) { - if (last < stop) { - while (last++ < stop) { - if (last > max_cols) - break; - putchar(' '); - } - } - if (stop <= max_cols) { - tputs(tparm(set_tab, stop), 1, putch); - last = stop; - } else { - break; - } - } - putchar('\n'); -} - -static int * -decode_tabs(const char *tab_list) -{ - int *result = typeCalloc(int, strlen(tab_list) + (unsigned) max_cols); - int n = 0; - int value = 0; - int prior = 0; - int ch; - - if (result != 0) { - while ((ch = *tab_list++) != '\0') { - if (isdigit(UChar(ch))) { - value *= 10; - value += (ch - '0'); - } else if (ch == ',') { - result[n] = value + prior; - if (n > 0 && result[n] <= result[n - 1]) { - fprintf(stderr, - "tab-stops are not in increasing order: %d %d\n", - value, result[n - 1]); - free(result); - result = 0; - break; - } - ++n; - value = 0; - prior = 0; - } else if (ch == '+') { - if (n) - prior = result[n - 1]; - } - } - } - - if (result != 0) { - /* - * If there is only one value, then it is an option such as "-8". - */ - if ((n == 0) && (value > 0)) { - int step = value; - while (n < max_cols - 1) { - result[n++] = value; - value += step; - } - } - - /* - * Add the last value, if any. - */ - result[n++] = value + prior; - result[n] = 0; - } - return result; -} - -static void -print_ruler(int *tab_list) -{ - int last = 0; - int stop; - int n; - - /* first print a readable ruler */ - for (n = 0; n < max_cols; n += 10) { - int ch = 1 + (n / 10); - char buffer[20]; - sprintf(buffer, "----+----%c", - ((ch < 10) - ? (ch + '0') - : (ch + 'A' - 10))); - printf("%.*s", ((max_cols - n) > 10) ? 10 : (max_cols - n), buffer); - } - putchar('\n'); - - /* now, print '*' for each stop */ - for (n = 0, last = 0; (tab_list[n] > 0) && (last < max_cols); ++n) { - stop = tab_list[n]; - while (++last < stop) { - if (last <= max_cols) { - putchar('-'); - } else { - break; - } - } - if (last <= max_cols) { - putchar('*'); - last = stop; - } else { - break; - } - } - while (++last <= max_cols) - putchar('-'); - putchar('\n'); -} - -/* - * Write an '*' on each tabstop, to demonstrate whether it lines up with the - * ruler. - */ -static void -write_tabs(int *tab_list) -{ - int stop; - - while ((stop = *tab_list++) > 0 && stop <= max_cols) { - fputs((stop == 1) ? "*" : "\t*", stdout); - }; - /* also show a tab _past_ the stops */ - if (stop < max_cols) - fputs("\t+", stdout); - putchar('\n'); -} - -/* - * Trim leading/trailing blanks, as well as blanks after a comma. - * Convert embedded blanks to commas. - */ -static char * -trimmed_tab_list(const char *source) -{ - char *result = strdup(source); - int ch, j, k, last; - - if (result != 0) { - for (j = k = last = 0; result[j] != 0; ++j) { - ch = UChar(result[j]); - if (isspace(ch)) { - if (last == '\0') { - continue; - } else if (isdigit(last) || last == ',') { - ch = ','; - } - } else if (ch == ',') { - ; - } else { - if (last == ',') - result[k++] = (char) last; - result[k++] = (char) ch; - } - last = ch; - } - result[k] = '\0'; - } - return result; -} - -static bool -comma_is_needed(const char *source) -{ - bool result = FALSE; - - if (source != 0) { - unsigned len = strlen(source); - if (len != 0) - result = (source[len - 1] != ','); - } else { - result = FALSE; - } - return result; -} - -/* - * Add a command-line parameter to the tab-list. It can be blank- or comma- - * separated (or a mixture). For simplicity, empty tabs are ignored, e.g., - * tabs 1,,6,11 - * tabs 1,6,11 - * are treated the same. - */ -static const char * -add_to_tab_list(char **append, const char *value) -{ - char *result = *append; - char *copied = trimmed_tab_list(value); - - if (copied != 0 && *copied != '\0') { - const char *comma = ","; - unsigned need = 1 + strlen(copied); - - if (*copied == ',') - comma = ""; - else if (!comma_is_needed(*append)) - comma = ""; - - need += strlen(comma); - if (*append != 0) - need += strlen(*append); - - result = malloc(need); - if (result != 0) { - *result = '\0'; - if (*append != 0) { - strcpy(result, *append); - free(*append); - } - strcat(result, comma); - strcat(result, copied); - } - - *append = result; - } - return result; -} - -/* - * Check for illegal characters in the tab-list. - */ -static bool -legal_tab_list(const char *program, const char *tab_list) -{ - bool result = TRUE; - - if (tab_list != 0 && *tab_list != '\0') { - if (comma_is_needed(tab_list)) { - int n, ch; - for (n = 0; tab_list[n] != '\0'; ++n) { - ch = UChar(tab_list[n]); - if (!(isdigit(ch) || ch == ',' || ch == '+')) { - fprintf(stderr, - "%s: unexpected character found '%c'\n", - program, ch); - result = FALSE; - break; - } - } - } else { - fprintf(stderr, "%s: trailing comma found '%s'\n", program, tab_list); - result = FALSE; - } - } else { - fprintf(stderr, "%s: no tab-list given\n", program); - result = FALSE; - } - return result; -} - -static void -usage(void) -{ - static const char *msg[] = - { - "Usage: tabs [options] [tabstop-list]" - ,"" - ,"Options:" - ," -0 reset tabs" - ," -8 set tabs to standard interval" - ," -a Assembler, IBM S/370, first format" - ," -a2 Assembler, IBM S/370, second format" - ," -c COBOL, normal format" - ," -c2 COBOL compact format" - ," -c3 COBOL compact format extended" - ," -d debug (show ruler with expected/actual tab positions)" - ," -f FORTRAN" - ," -n no-op (do not modify terminal settings)" - ," -p PL/I" - ," -s SNOBOL" - ," -u UNIVAC 1100 Assembler" - ," -T name use terminal type 'name'" - ,"" - ,"A tabstop-list is an ordered list of column numbers, e.g., 1,11,21" - ,"or 1,+10,+10 which is the same." - }; - unsigned n; - - fflush(stdout); - for (n = 0; n < SIZEOF(msg); ++n) { - fprintf(stderr, "%s\n", msg[n]); - } - ExitProgram(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - int rc = EXIT_FAILURE; - bool debug = FALSE; - bool no_op = FALSE; - int n, ch; - NCURSES_CONST char *term_name = 0; - const char *mar_list = 0; /* ignored */ - char *append = 0; - const char *tab_list = 0; - - if ((term_name = getenv("TERM")) == 0) - term_name = "ansi+tabs"; - - /* cannot use getopt, since some options are two-character */ - for (n = 1; n < argc; ++n) { - char *option = argv[n]; - switch (option[0]) { - case '-': - while ((ch = *++option) != '\0') { - switch (ch) { - case 'a': - switch (*option) { - case '\0': - tab_list = "1,10,16,36,72"; - /* Assembler, IBM S/370, first format */ - break; - case '2': - tab_list = "1,10,16,40,72"; - /* Assembler, IBM S/370, second format */ - break; - default: - usage(); - } - break; - case 'c': - switch (*option) { - case '\0': - tab_list = "1,8,12,16,20,55"; - /* COBOL, normal format */ - break; - case '2': - tab_list = "1,6,10,14,49"; - /* COBOL compact format */ - break; - case '3': - tab_list = "1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67"; - /* COBOL compact format extended */ - break; - default: - usage(); - } - break; - case 'd': /* ncurses extension */ - debug = TRUE; - break; - case 'f': - tab_list = "1,7,11,15,19,23"; - /* FORTRAN */ - break; - case 'n': /* ncurses extension */ - no_op = TRUE; - break; - case 'p': - tab_list = "1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61"; - /* PL/I */ - break; - case 's': - tab_list = "1,10,55"; - /* SNOBOL */ - break; - case 'u': - tab_list = "1,12,20,44"; - /* UNIVAC 1100 Assembler */ - break; - case 'T': - ++n; - if (*++option != '\0') { - term_name = option; - } else { - term_name = argv[n++]; - } - option += ((int) strlen(option)) - 1; - continue; - default: - if (isdigit(UChar(*option))) { - tab_list = option; - ++n; - } else { - usage(); - } - option += ((int) strlen(option)) - 1; - break; - } - } - break; - case '+': - while ((ch = *++option) != '\0') { - switch (ch) { - case 'm': - mar_list = option; - break; - default: - /* special case of relative stops separated by spaces? */ - if (option == argv[n] + 1) { - tab_list = add_to_tab_list(&append, argv[n]); - } - break; - } - } - break; - default: - if (append != 0) { - if (tab_list != (const char *) append) { - /* one of the predefined options was used */ - free(append); - append = 0; - } - } - tab_list = add_to_tab_list(&append, option); - break; - } - } - - setupterm(term_name, STDOUT_FILENO, (int *) 0); - - max_cols = (columns > 0) ? columns : 80; - - if (!VALID_STRING(clear_all_tabs)) { - fprintf(stderr, - "%s: terminal type '%s' cannot reset tabs\n", - argv[0], term_name); - } else if (!VALID_STRING(set_tab)) { - fprintf(stderr, - "%s: terminal type '%s' cannot set tabs\n", - argv[0], term_name); - } else if (legal_tab_list(argv[0], tab_list)) { - int *list = decode_tabs(tab_list); - - if (!no_op) - tputs(clear_all_tabs, 1, putch); - - if (list != 0) { - if (!no_op) - do_tabs(list); - if (debug) { - fflush(stderr); - printf("tabs %s\n", tab_list); - print_ruler(list); - write_tabs(list); - } - free(list); - } else if (debug) { - fflush(stderr); - printf("tabs %s\n", tab_list); - } - rc = EXIT_SUCCESS; - } - if (append != 0) - free(append); - ExitProgram(rc); -} diff --git a/deps/ncurses-5.9/progs/termsort.c b/deps/ncurses-5.9/progs/termsort.c deleted file mode 100644 index 9cd80f8..0000000 --- a/deps/ncurses-5.9/progs/termsort.c +++ /dev/null @@ -1,2163 +0,0 @@ -/* - * termsort.c --- sort order arrays for use by infocmp. - * - * Note: this file is generated using MKtermsort.sh, do not edit by hand. - */ -static const PredIdx bool_terminfo_sort[] = { - 40 , /* OTMT */ - 41 , /* OTNL */ - 37 , /* OTbs */ - 39 , /* OTnc */ - 38 , /* OTns */ - 42 , /* OTpt */ - 43 , /* OTxr */ - 1 , /* am */ - 28 , /* bce */ - 0 , /* bw */ - 27 , /* ccc */ - 23 , /* chts */ - 35 , /* cpix */ - 31 , /* crxm */ - 11 , /* da */ - 32 , /* daisy */ - 12 , /* db */ - 5 , /* eo */ - 16 , /* eslok */ - 6 , /* gn */ - 7 , /* hc */ - 29 , /* hls */ - 9 , /* hs */ - 18 , /* hz */ - 10 , /* in */ - 8 , /* km */ - 36 , /* lpix */ - 22 , /* mc5i */ - 13 , /* mir */ - 14 , /* msgr */ - 26 , /* ndscr */ - 25 , /* npc */ - 24 , /* nrrmc */ - 21 , /* nxon */ - 15 , /* os */ - 34 , /* sam */ - 19 , /* ul */ - 4 , /* xenl */ - 3 , /* xhp */ - 30 , /* xhpa */ - 20 , /* xon */ - 2 , /* xsb */ - 17 , /* xt */ - 33 , /* xvpa */ -}; - -static const PredIdx num_terminfo_sort[] = { - 36 , /* OTdB */ - 34 , /* OTdC */ - 35 , /* OTdN */ - 37 , /* OTdT */ - 38 , /* OTkn */ - 33 , /* OTug */ - 31 , /* bitwin */ - 32 , /* bitype */ - 30 , /* btns */ - 16 , /* bufsz */ - 13 , /* colors */ - 0 , /* cols */ - 28 , /* cps */ - 1 , /* it */ - 9 , /* lh */ - 2 , /* lines */ - 3 , /* lm */ - 10 , /* lw */ - 11 , /* ma */ - 19 , /* maddr */ - 21 , /* mcs */ - 20 , /* mjump */ - 22 , /* mls */ - 15 , /* ncv */ - 8 , /* nlab */ - 23 , /* npins */ - 24 , /* orc */ - 26 , /* orhi */ - 25 , /* orl */ - 27 , /* orvi */ - 14 , /* pairs */ - 5 , /* pb */ - 18 , /* spinh */ - 17 , /* spinv */ - 6 , /* vt */ - 29 , /* widcs */ - 12 , /* wnum */ - 7 , /* wsl */ - 4 , /* xmc */ -}; - -static const PredIdx str_terminfo_sort[] = { - 402 , /* OTG1 */ - 400 , /* OTG2 */ - 401 , /* OTG3 */ - 403 , /* OTG4 */ - 410 , /* OTGC */ - 407 , /* OTGD */ - 408 , /* OTGH */ - 405 , /* OTGL */ - 404 , /* OTGR */ - 406 , /* OTGU */ - 409 , /* OTGV */ - 397 , /* OTbc */ - 394 , /* OTi2 */ - 398 , /* OTko */ - 399 , /* OTma */ - 396 , /* OTnl */ - 395 , /* OTrs */ - 146 , /* acsc */ - 1 , /* bel */ - 372 , /* bicr */ - 371 , /* binel */ - 370 , /* birep */ - 26 , /* blink */ - 27 , /* bold */ - 413 , /* box1 */ - 0 , /* cbt */ - 306 , /* chr */ - 13 , /* civis */ - 5 , /* clear */ - 9 , /* cmdch */ - 16 , /* cnorm */ - 373 , /* colornm */ - 304 , /* cpi */ - 2 , /* cr */ - 363 , /* csin */ - 354 , /* csnm */ - 3 , /* csr */ - 111 , /* cub */ - 14 , /* cub1 */ - 107 , /* cud */ - 11 , /* cud1 */ - 112 , /* cuf */ - 17 , /* cuf1 */ - 10 , /* cup */ - 114 , /* cuu */ - 19 , /* cuu1 */ - 307 , /* cvr */ - 20 , /* cvvis */ - 277 , /* cwin */ - 105 , /* dch */ - 21 , /* dch1 */ - 275 , /* dclk */ - 374 , /* defbi */ - 308 , /* defc */ - 362 , /* devt */ - 280 , /* dial */ - 30 , /* dim */ - 378 , /* dispc */ - 106 , /* dl */ - 22 , /* dl1 */ - 352 , /* docr */ - 23 , /* dsl */ - 37 , /* ech */ - 7 , /* ed */ - 386 , /* ehhlm */ - 6 , /* el */ - 269 , /* el1 */ - 387 , /* elhlm */ - 388 , /* elohlm */ - 155 , /* enacs */ - 375 , /* endbi */ - 389 , /* erhlm */ - 390 , /* ethlm */ - 391 , /* evhlm */ - 46 , /* ff */ - 45 , /* flash */ - 273 , /* fln */ - 47 , /* fsl */ - 358 , /* getm */ - 24 , /* hd */ - 12 , /* home */ - 284 , /* hook */ - 8 , /* hpa */ - 134 , /* ht */ - 132 , /* hts */ - 137 , /* hu */ - 279 , /* hup */ - 108 , /* ich */ - 52 , /* ich1 */ - 51 , /* if */ - 110 , /* il */ - 53 , /* il1 */ - 129 , /* ind */ - 109 , /* indn */ - 299 , /* initc */ - 300 , /* initp */ - 32 , /* invis */ - 54 , /* ip */ - 138 , /* iprog */ - 48 , /* is1 */ - 49 , /* is2 */ - 50 , /* is3 */ - 186 , /* kBEG */ - 187 , /* kCAN */ - 188 , /* kCMD */ - 189 , /* kCPY */ - 190 , /* kCRT */ - 191 , /* kDC */ - 192 , /* kDL */ - 194 , /* kEND */ - 195 , /* kEOL */ - 196 , /* kEXT */ - 197 , /* kFND */ - 198 , /* kHLP */ - 199 , /* kHOM */ - 200 , /* kIC */ - 201 , /* kLFT */ - 203 , /* kMOV */ - 202 , /* kMSG */ - 204 , /* kNXT */ - 205 , /* kOPT */ - 207 , /* kPRT */ - 206 , /* kPRV */ - 208 , /* kRDO */ - 211 , /* kRES */ - 210 , /* kRIT */ - 209 , /* kRPL */ - 212 , /* kSAV */ - 213 , /* kSPD */ - 214 , /* kUND */ - 139 , /* ka1 */ - 140 , /* ka3 */ - 141 , /* kb2 */ - 158 , /* kbeg */ - 55 , /* kbs */ - 142 , /* kc1 */ - 143 , /* kc3 */ - 159 , /* kcan */ - 148 , /* kcbt */ - 160 , /* kclo */ - 57 , /* kclr */ - 161 , /* kcmd */ - 162 , /* kcpy */ - 163 , /* kcrt */ - 58 , /* kctab */ - 79 , /* kcub1 */ - 61 , /* kcud1 */ - 83 , /* kcuf1 */ - 87 , /* kcuu1 */ - 59 , /* kdch1 */ - 60 , /* kdl1 */ - 64 , /* ked */ - 63 , /* kel */ - 164 , /* kend */ - 165 , /* kent */ - 166 , /* kext */ - 65 , /* kf0 */ - 66 , /* kf1 */ - 67 , /* kf10 */ - 216 , /* kf11 */ - 217 , /* kf12 */ - 218 , /* kf13 */ - 219 , /* kf14 */ - 220 , /* kf15 */ - 221 , /* kf16 */ - 222 , /* kf17 */ - 223 , /* kf18 */ - 224 , /* kf19 */ - 68 , /* kf2 */ - 225 , /* kf20 */ - 226 , /* kf21 */ - 227 , /* kf22 */ - 228 , /* kf23 */ - 229 , /* kf24 */ - 230 , /* kf25 */ - 231 , /* kf26 */ - 232 , /* kf27 */ - 233 , /* kf28 */ - 234 , /* kf29 */ - 69 , /* kf3 */ - 235 , /* kf30 */ - 236 , /* kf31 */ - 237 , /* kf32 */ - 238 , /* kf33 */ - 239 , /* kf34 */ - 240 , /* kf35 */ - 241 , /* kf36 */ - 242 , /* kf37 */ - 243 , /* kf38 */ - 244 , /* kf39 */ - 70 , /* kf4 */ - 245 , /* kf40 */ - 246 , /* kf41 */ - 247 , /* kf42 */ - 248 , /* kf43 */ - 249 , /* kf44 */ - 250 , /* kf45 */ - 251 , /* kf46 */ - 252 , /* kf47 */ - 253 , /* kf48 */ - 254 , /* kf49 */ - 71 , /* kf5 */ - 255 , /* kf50 */ - 256 , /* kf51 */ - 257 , /* kf52 */ - 258 , /* kf53 */ - 259 , /* kf54 */ - 260 , /* kf55 */ - 261 , /* kf56 */ - 262 , /* kf57 */ - 263 , /* kf58 */ - 264 , /* kf59 */ - 72 , /* kf6 */ - 265 , /* kf60 */ - 266 , /* kf61 */ - 267 , /* kf62 */ - 268 , /* kf63 */ - 73 , /* kf7 */ - 74 , /* kf8 */ - 75 , /* kf9 */ - 167 , /* kfnd */ - 168 , /* khlp */ - 76 , /* khome */ - 86 , /* khts */ - 77 , /* kich1 */ - 78 , /* kil1 */ - 84 , /* kind */ - 80 , /* kll */ - 355 , /* kmous */ - 171 , /* kmov */ - 169 , /* kmrk */ - 170 , /* kmsg */ - 81 , /* knp */ - 172 , /* knxt */ - 173 , /* kopn */ - 174 , /* kopt */ - 82 , /* kpp */ - 176 , /* kprt */ - 175 , /* kprv */ - 177 , /* krdo */ - 178 , /* kref */ - 182 , /* kres */ - 179 , /* krfr */ - 85 , /* kri */ - 62 , /* krmir */ - 180 , /* krpl */ - 181 , /* krst */ - 183 , /* ksav */ - 193 , /* kslt */ - 184 , /* kspd */ - 56 , /* ktbc */ - 185 , /* kund */ - 90 , /* lf0 */ - 91 , /* lf1 */ - 92 , /* lf10 */ - 93 , /* lf2 */ - 94 , /* lf3 */ - 95 , /* lf4 */ - 96 , /* lf5 */ - 97 , /* lf6 */ - 98 , /* lf7 */ - 99 , /* lf8 */ - 100 , /* lf9 */ - 18 , /* ll */ - 305 , /* lpi */ - 118 , /* mc0 */ - 119 , /* mc4 */ - 120 , /* mc5 */ - 144 , /* mc5p */ - 336 , /* mcub */ - 330 , /* mcub1 */ - 335 , /* mcud */ - 329 , /* mcud1 */ - 337 , /* mcuf */ - 331 , /* mcuf1 */ - 338 , /* mcuu */ - 333 , /* mcuu1 */ - 411 , /* meml */ - 412 , /* memu */ - 270 , /* mgc */ - 328 , /* mhpa */ - 356 , /* minfo */ - 15 , /* mrcup */ - 332 , /* mvpa */ - 103 , /* nel */ - 298 , /* oc */ - 297 , /* op */ - 104 , /* pad */ - 285 , /* pause */ - 383 , /* pctrm */ - 115 , /* pfkey */ - 116 , /* pfloc */ - 117 , /* pfx */ - 361 , /* pfxl */ - 147 , /* pln */ - 334 , /* porder */ - 33 , /* prot */ - 283 , /* pulse */ - 281 , /* qdial */ - 348 , /* rbim */ - 126 , /* rc */ - 349 , /* rcsd */ - 121 , /* rep */ - 357 , /* reqmp */ - 34 , /* rev */ - 125 , /* rf */ - 215 , /* rfi */ - 130 , /* ri */ - 113 , /* rin */ - 321 , /* ritm */ - 322 , /* rlm */ - 38 , /* rmacs */ - 152 , /* rmam */ - 276 , /* rmclk */ - 40 , /* rmcup */ - 41 , /* rmdc */ - 323 , /* rmicm */ - 42 , /* rmir */ - 88 , /* rmkx */ - 157 , /* rmln */ - 101 , /* rmm */ - 145 , /* rmp */ - 380 , /* rmpch */ - 382 , /* rmsc */ - 43 , /* rmso */ - 44 , /* rmul */ - 150 , /* rmxon */ - 122 , /* rs1 */ - 123 , /* rs2 */ - 124 , /* rs3 */ - 324 , /* rshm */ - 325 , /* rsubm */ - 326 , /* rsupm */ - 327 , /* rum */ - 320 , /* rwidm */ - 364 , /* s0ds */ - 365 , /* s1ds */ - 366 , /* s2ds */ - 367 , /* s3ds */ - 346 , /* sbim */ - 128 , /* sc */ - 385 , /* scesa */ - 384 , /* scesc */ - 274 , /* sclk */ - 301 , /* scp */ - 339 , /* scs */ - 347 , /* scsd */ - 310 , /* sdrfq */ - 360 , /* setab */ - 359 , /* setaf */ - 303 , /* setb */ - 376 , /* setcolor */ - 302 , /* setf */ - 131 , /* sgr */ - 39 , /* sgr0 */ - 392 , /* sgr1 */ - 311 , /* sitm */ - 393 , /* slength */ - 377 , /* slines */ - 312 , /* slm */ - 25 , /* smacs */ - 151 , /* smam */ - 28 , /* smcup */ - 29 , /* smdc */ - 340 , /* smgb */ - 341 , /* smgbp */ - 271 , /* smgl */ - 342 , /* smglp */ - 368 , /* smglr */ - 272 , /* smgr */ - 343 , /* smgrp */ - 344 , /* smgt */ - 369 , /* smgtb */ - 345 , /* smgtp */ - 313 , /* smicm */ - 31 , /* smir */ - 89 , /* smkx */ - 156 , /* smln */ - 102 , /* smm */ - 379 , /* smpch */ - 381 , /* smsc */ - 35 , /* smso */ - 36 , /* smul */ - 149 , /* smxon */ - 314 , /* snlq */ - 315 , /* snrmq */ - 316 , /* sshm */ - 317 , /* ssubm */ - 318 , /* ssupm */ - 350 , /* subcs */ - 319 , /* sum */ - 351 , /* supcs */ - 309 , /* swidm */ - 4 , /* tbc */ - 282 , /* tone */ - 135 , /* tsl */ - 287 , /* u0 */ - 288 , /* u1 */ - 289 , /* u2 */ - 290 , /* u3 */ - 291 , /* u4 */ - 292 , /* u5 */ - 293 , /* u6 */ - 294 , /* u7 */ - 295 , /* u8 */ - 296 , /* u9 */ - 136 , /* uc */ - 127 , /* vpa */ - 286 , /* wait */ - 133 , /* wind */ - 278 , /* wingo */ - 154 , /* xoffc */ - 153 , /* xonc */ - 353 , /* zerom */ -}; - -static const PredIdx bool_variable_sort[] = { - 0 , /* auto_left_margin */ - 1 , /* auto_right_margin */ - 28 , /* back_color_erase */ - 37 , /* backspaces_with_bs */ - 27 , /* can_change */ - 3 , /* ceol_standout_glitch */ - 30 , /* col_addr_glitch */ - 35 , /* cpi_changes_res */ - 31 , /* cr_cancels_micro_mode */ - 38 , /* crt_no_scrolling */ - 17 , /* dest_tabs_magic_smso */ - 4 , /* eat_newline_glitch */ - 5 , /* erase_overstrike */ - 6 , /* generic_type */ - 40 , /* gnu_has_meta_key */ - 7 , /* hard_copy */ - 23 , /* hard_cursor */ - 42 , /* has_hardware_tabs */ - 8 , /* has_meta_key */ - 32 , /* has_print_wheel */ - 9 , /* has_status_line */ - 29 , /* hue_lightness_saturation */ - 10 , /* insert_null_glitch */ - 41 , /* linefeed_is_newline */ - 36 , /* lpi_changes_res */ - 11 , /* memory_above */ - 12 , /* memory_below */ - 13 , /* move_insert_mode */ - 14 , /* move_standout_mode */ - 21 , /* needs_xon_xoff */ - 39 , /* no_correctly_working_cr */ - 2 , /* no_esc_ctlc */ - 25 , /* no_pad_char */ - 26 , /* non_dest_scroll_region */ - 24 , /* non_rev_rmcup */ - 15 , /* over_strike */ - 22 , /* prtr_silent */ - 43 , /* return_does_clr_eol */ - 33 , /* row_addr_glitch */ - 34 , /* semi_auto_right_margin */ - 16 , /* status_line_esc_ok */ - 18 , /* tilde_glitch */ - 19 , /* transparent_underline */ - 20 , /* xon_xoff */ -}; - -static const PredIdx num_variable_sort[] = { - 36 , /* backspace_delay */ - 31 , /* bit_image_entwining */ - 32 , /* bit_image_type */ - 16 , /* buffer_capacity */ - 30 , /* buttons */ - 34 , /* carriage_return_delay */ - 0 , /* columns */ - 18 , /* dot_horz_spacing */ - 17 , /* dot_vert_spacing */ - 37 , /* horizontal_tab_delay */ - 1 , /* init_tabs */ - 9 , /* label_height */ - 10 , /* label_width */ - 2 , /* lines */ - 3 , /* lines_of_memory */ - 4 , /* magic_cookie_glitch */ - 33 , /* magic_cookie_glitch_ul */ - 11 , /* max_attributes */ - 13 , /* max_colors */ - 19 , /* max_micro_address */ - 20 , /* max_micro_jump */ - 14 , /* max_pairs */ - 12 , /* maximum_windows */ - 21 , /* micro_col_size */ - 22 , /* micro_line_size */ - 35 , /* new_line_delay */ - 15 , /* no_color_video */ - 8 , /* num_labels */ - 38 , /* number_of_function_keys */ - 23 , /* number_of_pins */ - 24 , /* output_res_char */ - 26 , /* output_res_horz_inch */ - 25 , /* output_res_line */ - 27 , /* output_res_vert_inch */ - 5 , /* padding_baud_rate */ - 28 , /* print_rate */ - 6 , /* virtual_terminal */ - 29 , /* wide_char_size */ - 7 , /* width_status_line */ -}; - -static const PredIdx str_variable_sort[] = { - 406 , /* acs_btee */ - 146 , /* acs_chars */ - 408 , /* acs_hline */ - 401 , /* acs_llcorner */ - 403 , /* acs_lrcorner */ - 404 , /* acs_ltee */ - 410 , /* acs_plus */ - 405 , /* acs_rtee */ - 407 , /* acs_ttee */ - 400 , /* acs_ulcorner */ - 402 , /* acs_urcorner */ - 409 , /* acs_vline */ - 385 , /* alt_scancode_esc */ - 399 , /* arrow_key_map */ - 0 , /* back_tab */ - 397 , /* backspace_if_not_bs */ - 1 , /* bell */ - 372 , /* bit_image_carriage_return */ - 371 , /* bit_image_newline */ - 370 , /* bit_image_repeat */ - 413 , /* box_chars_1 */ - 2 , /* carriage_return */ - 304 , /* change_char_pitch */ - 305 , /* change_line_pitch */ - 306 , /* change_res_horz */ - 307 , /* change_res_vert */ - 3 , /* change_scroll_region */ - 145 , /* char_padding */ - 354 , /* char_set_names */ - 4 , /* clear_all_tabs */ - 270 , /* clear_margins */ - 5 , /* clear_screen */ - 269 , /* clr_bol */ - 6 , /* clr_eol */ - 7 , /* clr_eos */ - 363 , /* code_set_init */ - 373 , /* color_names */ - 8 , /* column_address */ - 9 , /* command_character */ - 277 , /* create_window */ - 10 , /* cursor_address */ - 11 , /* cursor_down */ - 12 , /* cursor_home */ - 13 , /* cursor_invisible */ - 14 , /* cursor_left */ - 15 , /* cursor_mem_address */ - 16 , /* cursor_normal */ - 17 , /* cursor_right */ - 18 , /* cursor_to_ll */ - 19 , /* cursor_up */ - 20 , /* cursor_visible */ - 374 , /* define_bit_image_region */ - 308 , /* define_char */ - 21 , /* delete_character */ - 22 , /* delete_line */ - 362 , /* device_type */ - 280 , /* dial_phone */ - 23 , /* dis_status_line */ - 275 , /* display_clock */ - 378 , /* display_pc_char */ - 24 , /* down_half_line */ - 155 , /* ena_acs */ - 375 , /* end_bit_image_region */ - 25 , /* enter_alt_charset_mode */ - 151 , /* enter_am_mode */ - 26 , /* enter_blink_mode */ - 27 , /* enter_bold_mode */ - 28 , /* enter_ca_mode */ - 29 , /* enter_delete_mode */ - 30 , /* enter_dim_mode */ - 309 , /* enter_doublewide_mode */ - 310 , /* enter_draft_quality */ - 386 , /* enter_horizontal_hl_mode */ - 31 , /* enter_insert_mode */ - 311 , /* enter_italics_mode */ - 387 , /* enter_left_hl_mode */ - 312 , /* enter_leftward_mode */ - 388 , /* enter_low_hl_mode */ - 313 , /* enter_micro_mode */ - 314 , /* enter_near_letter_quality */ - 315 , /* enter_normal_quality */ - 379 , /* enter_pc_charset_mode */ - 33 , /* enter_protected_mode */ - 34 , /* enter_reverse_mode */ - 389 , /* enter_right_hl_mode */ - 381 , /* enter_scancode_mode */ - 32 , /* enter_secure_mode */ - 316 , /* enter_shadow_mode */ - 35 , /* enter_standout_mode */ - 317 , /* enter_subscript_mode */ - 318 , /* enter_superscript_mode */ - 390 , /* enter_top_hl_mode */ - 36 , /* enter_underline_mode */ - 319 , /* enter_upward_mode */ - 391 , /* enter_vertical_hl_mode */ - 149 , /* enter_xon_mode */ - 37 , /* erase_chars */ - 38 , /* exit_alt_charset_mode */ - 152 , /* exit_am_mode */ - 39 , /* exit_attribute_mode */ - 40 , /* exit_ca_mode */ - 41 , /* exit_delete_mode */ - 320 , /* exit_doublewide_mode */ - 42 , /* exit_insert_mode */ - 321 , /* exit_italics_mode */ - 322 , /* exit_leftward_mode */ - 323 , /* exit_micro_mode */ - 380 , /* exit_pc_charset_mode */ - 382 , /* exit_scancode_mode */ - 324 , /* exit_shadow_mode */ - 43 , /* exit_standout_mode */ - 325 , /* exit_subscript_mode */ - 326 , /* exit_superscript_mode */ - 44 , /* exit_underline_mode */ - 327 , /* exit_upward_mode */ - 150 , /* exit_xon_mode */ - 285 , /* fixed_pause */ - 284 , /* flash_hook */ - 45 , /* flash_screen */ - 46 , /* form_feed */ - 47 , /* from_status_line */ - 358 , /* get_mouse */ - 278 , /* goto_window */ - 279 , /* hangup */ - 48 , /* init_1string */ - 49 , /* init_2string */ - 50 , /* init_3string */ - 51 , /* init_file */ - 138 , /* init_prog */ - 299 , /* initialize_color */ - 300 , /* initialize_pair */ - 52 , /* insert_character */ - 53 , /* insert_line */ - 54 , /* insert_padding */ - 139 , /* key_a1 */ - 140 , /* key_a3 */ - 141 , /* key_b2 */ - 55 , /* key_backspace */ - 158 , /* key_beg */ - 148 , /* key_btab */ - 142 , /* key_c1 */ - 143 , /* key_c3 */ - 159 , /* key_cancel */ - 56 , /* key_catab */ - 57 , /* key_clear */ - 160 , /* key_close */ - 161 , /* key_command */ - 162 , /* key_copy */ - 163 , /* key_create */ - 58 , /* key_ctab */ - 59 , /* key_dc */ - 60 , /* key_dl */ - 61 , /* key_down */ - 62 , /* key_eic */ - 164 , /* key_end */ - 165 , /* key_enter */ - 63 , /* key_eol */ - 64 , /* key_eos */ - 166 , /* key_exit */ - 65 , /* key_f0 */ - 66 , /* key_f1 */ - 67 , /* key_f10 */ - 216 , /* key_f11 */ - 217 , /* key_f12 */ - 218 , /* key_f13 */ - 219 , /* key_f14 */ - 220 , /* key_f15 */ - 221 , /* key_f16 */ - 222 , /* key_f17 */ - 223 , /* key_f18 */ - 224 , /* key_f19 */ - 68 , /* key_f2 */ - 225 , /* key_f20 */ - 226 , /* key_f21 */ - 227 , /* key_f22 */ - 228 , /* key_f23 */ - 229 , /* key_f24 */ - 230 , /* key_f25 */ - 231 , /* key_f26 */ - 232 , /* key_f27 */ - 233 , /* key_f28 */ - 234 , /* key_f29 */ - 69 , /* key_f3 */ - 235 , /* key_f30 */ - 236 , /* key_f31 */ - 237 , /* key_f32 */ - 238 , /* key_f33 */ - 239 , /* key_f34 */ - 240 , /* key_f35 */ - 241 , /* key_f36 */ - 242 , /* key_f37 */ - 243 , /* key_f38 */ - 244 , /* key_f39 */ - 70 , /* key_f4 */ - 245 , /* key_f40 */ - 246 , /* key_f41 */ - 247 , /* key_f42 */ - 248 , /* key_f43 */ - 249 , /* key_f44 */ - 250 , /* key_f45 */ - 251 , /* key_f46 */ - 252 , /* key_f47 */ - 253 , /* key_f48 */ - 254 , /* key_f49 */ - 71 , /* key_f5 */ - 255 , /* key_f50 */ - 256 , /* key_f51 */ - 257 , /* key_f52 */ - 258 , /* key_f53 */ - 259 , /* key_f54 */ - 260 , /* key_f55 */ - 261 , /* key_f56 */ - 262 , /* key_f57 */ - 263 , /* key_f58 */ - 264 , /* key_f59 */ - 72 , /* key_f6 */ - 265 , /* key_f60 */ - 266 , /* key_f61 */ - 267 , /* key_f62 */ - 268 , /* key_f63 */ - 73 , /* key_f7 */ - 74 , /* key_f8 */ - 75 , /* key_f9 */ - 167 , /* key_find */ - 168 , /* key_help */ - 76 , /* key_home */ - 77 , /* key_ic */ - 78 , /* key_il */ - 79 , /* key_left */ - 80 , /* key_ll */ - 169 , /* key_mark */ - 170 , /* key_message */ - 355 , /* key_mouse */ - 171 , /* key_move */ - 172 , /* key_next */ - 81 , /* key_npage */ - 173 , /* key_open */ - 174 , /* key_options */ - 82 , /* key_ppage */ - 175 , /* key_previous */ - 176 , /* key_print */ - 177 , /* key_redo */ - 178 , /* key_reference */ - 179 , /* key_refresh */ - 180 , /* key_replace */ - 181 , /* key_restart */ - 182 , /* key_resume */ - 83 , /* key_right */ - 183 , /* key_save */ - 186 , /* key_sbeg */ - 187 , /* key_scancel */ - 188 , /* key_scommand */ - 189 , /* key_scopy */ - 190 , /* key_screate */ - 191 , /* key_sdc */ - 192 , /* key_sdl */ - 193 , /* key_select */ - 194 , /* key_send */ - 195 , /* key_seol */ - 196 , /* key_sexit */ - 84 , /* key_sf */ - 197 , /* key_sfind */ - 198 , /* key_shelp */ - 199 , /* key_shome */ - 200 , /* key_sic */ - 201 , /* key_sleft */ - 202 , /* key_smessage */ - 203 , /* key_smove */ - 204 , /* key_snext */ - 205 , /* key_soptions */ - 206 , /* key_sprevious */ - 207 , /* key_sprint */ - 85 , /* key_sr */ - 208 , /* key_sredo */ - 209 , /* key_sreplace */ - 210 , /* key_sright */ - 211 , /* key_srsume */ - 212 , /* key_ssave */ - 213 , /* key_ssuspend */ - 86 , /* key_stab */ - 214 , /* key_sundo */ - 184 , /* key_suspend */ - 185 , /* key_undo */ - 87 , /* key_up */ - 88 , /* keypad_local */ - 89 , /* keypad_xmit */ - 90 , /* lab_f0 */ - 91 , /* lab_f1 */ - 92 , /* lab_f10 */ - 93 , /* lab_f2 */ - 94 , /* lab_f3 */ - 95 , /* lab_f4 */ - 96 , /* lab_f5 */ - 97 , /* lab_f6 */ - 98 , /* lab_f7 */ - 99 , /* lab_f8 */ - 100 , /* lab_f9 */ - 273 , /* label_format */ - 157 , /* label_off */ - 156 , /* label_on */ - 396 , /* linefeed_if_not_lf */ - 411 , /* memory_lock */ - 412 , /* memory_unlock */ - 101 , /* meta_off */ - 102 , /* meta_on */ - 328 , /* micro_column_address */ - 329 , /* micro_down */ - 330 , /* micro_left */ - 331 , /* micro_right */ - 332 , /* micro_row_address */ - 333 , /* micro_up */ - 356 , /* mouse_info */ - 103 , /* newline */ - 334 , /* order_of_pins */ - 298 , /* orig_colors */ - 297 , /* orig_pair */ - 398 , /* other_non_function_keys */ - 104 , /* pad_char */ - 105 , /* parm_dch */ - 106 , /* parm_delete_line */ - 107 , /* parm_down_cursor */ - 335 , /* parm_down_micro */ - 108 , /* parm_ich */ - 109 , /* parm_index */ - 110 , /* parm_insert_line */ - 111 , /* parm_left_cursor */ - 336 , /* parm_left_micro */ - 112 , /* parm_right_cursor */ - 337 , /* parm_right_micro */ - 113 , /* parm_rindex */ - 114 , /* parm_up_cursor */ - 338 , /* parm_up_micro */ - 383 , /* pc_term_options */ - 115 , /* pkey_key */ - 116 , /* pkey_local */ - 361 , /* pkey_plab */ - 117 , /* pkey_xmit */ - 147 , /* plab_norm */ - 118 , /* print_screen */ - 144 , /* prtr_non */ - 119 , /* prtr_off */ - 120 , /* prtr_on */ - 283 , /* pulse */ - 281 , /* quick_dial */ - 276 , /* remove_clock */ - 121 , /* repeat_char */ - 215 , /* req_for_input */ - 357 , /* req_mouse_pos */ - 122 , /* reset_1string */ - 123 , /* reset_2string */ - 124 , /* reset_3string */ - 125 , /* reset_file */ - 126 , /* restore_cursor */ - 127 , /* row_address */ - 128 , /* save_cursor */ - 384 , /* scancode_escape */ - 129 , /* scroll_forward */ - 130 , /* scroll_reverse */ - 339 , /* select_char_set */ - 364 , /* set0_des_seq */ - 365 , /* set1_des_seq */ - 366 , /* set2_des_seq */ - 367 , /* set3_des_seq */ - 392 , /* set_a_attributes */ - 360 , /* set_a_background */ - 359 , /* set_a_foreground */ - 131 , /* set_attributes */ - 303 , /* set_background */ - 340 , /* set_bottom_margin */ - 341 , /* set_bottom_margin_parm */ - 274 , /* set_clock */ - 376 , /* set_color_band */ - 301 , /* set_color_pair */ - 302 , /* set_foreground */ - 271 , /* set_left_margin */ - 342 , /* set_left_margin_parm */ - 368 , /* set_lr_margin */ - 377 , /* set_page_length */ - 393 , /* set_pglen_inch */ - 272 , /* set_right_margin */ - 343 , /* set_right_margin_parm */ - 132 , /* set_tab */ - 369 , /* set_tb_margin */ - 344 , /* set_top_margin */ - 345 , /* set_top_margin_parm */ - 133 , /* set_window */ - 346 , /* start_bit_image */ - 347 , /* start_char_set_def */ - 348 , /* stop_bit_image */ - 349 , /* stop_char_set_def */ - 350 , /* subscript_characters */ - 351 , /* superscript_characters */ - 134 , /* tab */ - 394 , /* termcap_init2 */ - 395 , /* termcap_reset */ - 352 , /* these_cause_cr */ - 135 , /* to_status_line */ - 282 , /* tone */ - 136 , /* underline_char */ - 137 , /* up_half_line */ - 287 , /* user0 */ - 288 , /* user1 */ - 289 , /* user2 */ - 290 , /* user3 */ - 291 , /* user4 */ - 292 , /* user5 */ - 293 , /* user6 */ - 294 , /* user7 */ - 295 , /* user8 */ - 296 , /* user9 */ - 286 , /* wait_tone */ - 154 , /* xoff_character */ - 153 , /* xon_character */ - 353 , /* zero_motion */ -}; - -static const PredIdx bool_termcap_sort[] = { - 22 , /* 5i */ - 23 , /* HC */ - 40 , /* MT */ - 26 , /* ND */ - 41 , /* NL */ - 25 , /* NP */ - 24 , /* NR */ - 30 , /* YA */ - 31 , /* YB */ - 32 , /* YC */ - 33 , /* YD */ - 34 , /* YE */ - 35 , /* YF */ - 36 , /* YG */ - 1 , /* am */ - 37 , /* bs */ - 0 , /* bw */ - 27 , /* cc */ - 11 , /* da */ - 12 , /* db */ - 5 , /* eo */ - 16 , /* es */ - 6 , /* gn */ - 7 , /* hc */ - 29 , /* hl */ - 9 , /* hs */ - 18 , /* hz */ - 10 , /* in */ - 8 , /* km */ - 13 , /* mi */ - 14 , /* ms */ - 39 , /* nc */ - 38 , /* ns */ - 21 , /* nx */ - 15 , /* os */ - 42 , /* pt */ - 19 , /* ul */ - 28 , /* ut */ - 2 , /* xb */ - 4 , /* xn */ - 20 , /* xo */ - 43 , /* xr */ - 3 , /* xs */ - 17 , /* xt */ -}; - -static const PredIdx num_termcap_sort[] = { - 30 , /* BT */ - 13 , /* Co */ - 12 , /* MW */ - 15 , /* NC */ - 8 , /* Nl */ - 16 , /* Ya */ - 17 , /* Yb */ - 18 , /* Yc */ - 19 , /* Yd */ - 20 , /* Ye */ - 21 , /* Yf */ - 22 , /* Yg */ - 23 , /* Yh */ - 24 , /* Yi */ - 25 , /* Yj */ - 26 , /* Yk */ - 27 , /* Yl */ - 28 , /* Ym */ - 29 , /* Yn */ - 31 , /* Yo */ - 32 , /* Yp */ - 0 , /* co */ - 36 , /* dB */ - 34 , /* dC */ - 35 , /* dN */ - 37 , /* dT */ - 1 , /* it */ - 38 , /* kn */ - 9 , /* lh */ - 2 , /* li */ - 3 , /* lm */ - 10 , /* lw */ - 11 , /* ma */ - 14 , /* pa */ - 5 , /* pb */ - 4 , /* sg */ - 33 , /* ug */ - 6 , /* vt */ - 7 , /* ws */ -}; - -static const PredIdx str_termcap_sort[] = { - 212 , /* !1 */ - 213 , /* !2 */ - 214 , /* !3 */ - 198 , /* #1 */ - 199 , /* #2 */ - 200 , /* #3 */ - 201 , /* #4 */ - 177 , /* %0 */ - 168 , /* %1 */ - 169 , /* %2 */ - 170 , /* %3 */ - 171 , /* %4 */ - 172 , /* %5 */ - 173 , /* %6 */ - 174 , /* %7 */ - 175 , /* %8 */ - 176 , /* %9 */ - 202 , /* %a */ - 203 , /* %b */ - 204 , /* %c */ - 205 , /* %d */ - 206 , /* %e */ - 207 , /* %f */ - 208 , /* %g */ - 209 , /* %h */ - 210 , /* %i */ - 211 , /* %j */ - 187 , /* &0 */ - 178 , /* &1 */ - 179 , /* &2 */ - 180 , /* &3 */ - 181 , /* &4 */ - 182 , /* &5 */ - 183 , /* &6 */ - 184 , /* &7 */ - 185 , /* &8 */ - 186 , /* &9 */ - 197 , /* *0 */ - 188 , /* *1 */ - 189 , /* *2 */ - 190 , /* *3 */ - 191 , /* *4 */ - 192 , /* *5 */ - 193 , /* *6 */ - 194 , /* *7 */ - 195 , /* *8 */ - 196 , /* *9 */ - 167 , /* @0 */ - 158 , /* @1 */ - 159 , /* @2 */ - 160 , /* @3 */ - 161 , /* @4 */ - 162 , /* @5 */ - 163 , /* @6 */ - 164 , /* @7 */ - 165 , /* @8 */ - 166 , /* @9 */ - 360 , /* AB */ - 359 , /* AF */ - 110 , /* AL */ - 9 , /* CC */ - 15 , /* CM */ - 277 , /* CW */ - 105 , /* DC */ - 280 , /* DI */ - 275 , /* DK */ - 106 , /* DL */ - 107 , /* DO */ - 216 , /* F1 */ - 217 , /* F2 */ - 218 , /* F3 */ - 219 , /* F4 */ - 220 , /* F5 */ - 221 , /* F6 */ - 222 , /* F7 */ - 223 , /* F8 */ - 224 , /* F9 */ - 225 , /* FA */ - 226 , /* FB */ - 227 , /* FC */ - 228 , /* FD */ - 229 , /* FE */ - 230 , /* FF */ - 231 , /* FG */ - 232 , /* FH */ - 233 , /* FI */ - 234 , /* FJ */ - 235 , /* FK */ - 236 , /* FL */ - 237 , /* FM */ - 238 , /* FN */ - 239 , /* FO */ - 240 , /* FP */ - 241 , /* FQ */ - 242 , /* FR */ - 243 , /* FS */ - 244 , /* FT */ - 245 , /* FU */ - 246 , /* FV */ - 247 , /* FW */ - 248 , /* FX */ - 249 , /* FY */ - 250 , /* FZ */ - 251 , /* Fa */ - 252 , /* Fb */ - 253 , /* Fc */ - 254 , /* Fd */ - 255 , /* Fe */ - 256 , /* Ff */ - 257 , /* Fg */ - 258 , /* Fh */ - 259 , /* Fi */ - 260 , /* Fj */ - 261 , /* Fk */ - 262 , /* Fl */ - 263 , /* Fm */ - 264 , /* Fn */ - 265 , /* Fo */ - 266 , /* Fp */ - 267 , /* Fq */ - 268 , /* Fr */ - 402 , /* G1 */ - 400 , /* G2 */ - 401 , /* G3 */ - 403 , /* G4 */ - 410 , /* GC */ - 407 , /* GD */ - 408 , /* GH */ - 405 , /* GL */ - 404 , /* GR */ - 406 , /* GU */ - 409 , /* GV */ - 358 , /* Gm */ - 279 , /* HU */ - 108 , /* IC */ - 299 , /* Ic */ - 300 , /* Ip */ - 139 , /* K1 */ - 141 , /* K2 */ - 140 , /* K3 */ - 142 , /* K4 */ - 143 , /* K5 */ - 355 , /* Km */ - 111 , /* LE */ - 157 , /* LF */ - 156 , /* LO */ - 273 , /* Lf */ - 270 , /* MC */ - 271 , /* ML */ - 368 , /* ML */ - 272 , /* MR */ - 369 , /* MT */ - 356 , /* Mi */ - 285 , /* PA */ - 283 , /* PU */ - 281 , /* QD */ - 152 , /* RA */ - 276 , /* RC */ - 215 , /* RF */ - 112 , /* RI */ - 357 , /* RQ */ - 150 , /* RX */ - 378 , /* S1 */ - 379 , /* S2 */ - 380 , /* S3 */ - 381 , /* S4 */ - 382 , /* S5 */ - 383 , /* S6 */ - 384 , /* S7 */ - 385 , /* S8 */ - 151 , /* SA */ - 274 , /* SC */ - 109 , /* SF */ - 113 , /* SR */ - 149 , /* SX */ - 303 , /* Sb */ - 302 , /* Sf */ - 282 , /* TO */ - 114 , /* UP */ - 286 , /* WA */ - 278 , /* WG */ - 154 , /* XF */ - 153 , /* XN */ - 386 , /* Xh */ - 387 , /* Xl */ - 388 , /* Xo */ - 389 , /* Xr */ - 390 , /* Xt */ - 391 , /* Xv */ - 370 , /* Xy */ - 377 , /* YZ */ - 372 , /* Yv */ - 373 , /* Yw */ - 374 , /* Yx */ - 375 , /* Yy */ - 376 , /* Yz */ - 304 , /* ZA */ - 305 , /* ZB */ - 306 , /* ZC */ - 307 , /* ZD */ - 308 , /* ZE */ - 309 , /* ZF */ - 310 , /* ZG */ - 311 , /* ZH */ - 312 , /* ZI */ - 313 , /* ZJ */ - 314 , /* ZK */ - 315 , /* ZL */ - 316 , /* ZM */ - 317 , /* ZN */ - 318 , /* ZO */ - 319 , /* ZP */ - 320 , /* ZQ */ - 321 , /* ZR */ - 322 , /* ZS */ - 323 , /* ZT */ - 324 , /* ZU */ - 325 , /* ZV */ - 326 , /* ZW */ - 327 , /* ZX */ - 328 , /* ZY */ - 329 , /* ZZ */ - 330 , /* Za */ - 331 , /* Zb */ - 332 , /* Zc */ - 333 , /* Zd */ - 334 , /* Ze */ - 335 , /* Zf */ - 336 , /* Zg */ - 337 , /* Zh */ - 338 , /* Zi */ - 339 , /* Zj */ - 340 , /* Zk */ - 341 , /* Zl */ - 342 , /* Zm */ - 343 , /* Zn */ - 344 , /* Zo */ - 345 , /* Zp */ - 346 , /* Zq */ - 347 , /* Zr */ - 348 , /* Zs */ - 349 , /* Zt */ - 350 , /* Zu */ - 351 , /* Zv */ - 352 , /* Zw */ - 353 , /* Zx */ - 354 , /* Zy */ - 371 , /* Zz */ - 146 , /* ac */ - 38 , /* ae */ - 53 , /* al */ - 25 , /* as */ - 397 , /* bc */ - 1 , /* bl */ - 0 , /* bt */ - 413 , /* bx */ - 269 , /* cb */ - 7 , /* cd */ - 6 , /* ce */ - 8 , /* ch */ - 363 , /* ci */ - 5 , /* cl */ - 10 , /* cm */ - 2 , /* cr */ - 3 , /* cs */ - 4 , /* ct */ - 127 , /* cv */ - 21 , /* dc */ - 22 , /* dl */ - 29 , /* dm */ - 11 , /* do */ - 23 , /* ds */ - 362 , /* dv */ - 155 , /* eA */ - 37 , /* ec */ - 41 , /* ed */ - 42 , /* ei */ - 46 , /* ff */ - 284 , /* fh */ - 47 , /* fs */ - 24 , /* hd */ - 12 , /* ho */ - 137 , /* hu */ - 48 , /* i1 */ - 394 , /* i2 */ - 50 , /* i3 */ - 138 , /* iP */ - 52 , /* ic */ - 51 , /* if */ - 31 , /* im */ - 54 , /* ip */ - 49 , /* is */ - 65 , /* k0 */ - 66 , /* k1 */ - 68 , /* k2 */ - 69 , /* k3 */ - 70 , /* k4 */ - 71 , /* k5 */ - 72 , /* k6 */ - 73 , /* k7 */ - 74 , /* k8 */ - 75 , /* k9 */ - 67 , /* k; */ - 78 , /* kA */ - 148 , /* kB */ - 57 , /* kC */ - 59 , /* kD */ - 63 , /* kE */ - 84 , /* kF */ - 80 , /* kH */ - 77 , /* kI */ - 60 , /* kL */ - 62 , /* kM */ - 81 , /* kN */ - 82 , /* kP */ - 85 , /* kR */ - 64 , /* kS */ - 86 , /* kT */ - 56 , /* ka */ - 55 , /* kb */ - 61 , /* kd */ - 88 , /* ke */ - 76 , /* kh */ - 79 , /* kl */ - 398 , /* ko */ - 83 , /* kr */ - 89 , /* ks */ - 58 , /* kt */ - 87 , /* ku */ - 90 , /* l0 */ - 91 , /* l1 */ - 93 , /* l2 */ - 94 , /* l3 */ - 95 , /* l4 */ - 96 , /* l5 */ - 97 , /* l6 */ - 98 , /* l7 */ - 99 , /* l8 */ - 100 , /* l9 */ - 92 , /* la */ - 14 , /* le */ - 18 , /* ll */ - 399 , /* ma */ - 26 , /* mb */ - 27 , /* md */ - 39 , /* me */ - 30 , /* mh */ - 32 , /* mk */ - 411 , /* ml */ - 102 , /* mm */ - 101 , /* mo */ - 33 , /* mp */ - 34 , /* mr */ - 412 , /* mu */ - 17 , /* nd */ - 396 , /* nl */ - 103 , /* nw */ - 298 , /* oc */ - 297 , /* op */ - 144 , /* pO */ - 104 , /* pc */ - 119 , /* pf */ - 115 , /* pk */ - 116 , /* pl */ - 147 , /* pn */ - 120 , /* po */ - 118 , /* ps */ - 117 , /* px */ - 122 , /* r1 */ - 123 , /* r2 */ - 124 , /* r3 */ - 145 , /* rP */ - 126 , /* rc */ - 125 , /* rf */ - 121 , /* rp */ - 395 , /* rs */ - 364 , /* s0 */ - 365 , /* s1 */ - 366 , /* s2 */ - 367 , /* s3 */ - 392 , /* sA */ - 393 , /* sL */ - 131 , /* sa */ - 128 , /* sc */ - 43 , /* se */ - 129 , /* sf */ - 35 , /* so */ - 301 , /* sp */ - 130 , /* sr */ - 132 , /* st */ - 134 , /* ta */ - 40 , /* te */ - 28 , /* ti */ - 135 , /* ts */ - 287 , /* u0 */ - 288 , /* u1 */ - 289 , /* u2 */ - 290 , /* u3 */ - 291 , /* u4 */ - 292 , /* u5 */ - 293 , /* u6 */ - 294 , /* u7 */ - 295 , /* u8 */ - 296 , /* u9 */ - 136 , /* uc */ - 44 , /* ue */ - 19 , /* up */ - 36 , /* us */ - 45 , /* vb */ - 16 , /* ve */ - 13 , /* vi */ - 20 , /* vs */ - 133 , /* wi */ - 361 , /* xl */ -}; - -static const bool bool_from_termcap[] = { - TRUE, /* bw */ - TRUE, /* am */ - TRUE, /* xsb */ - TRUE, /* xhp */ - TRUE, /* xenl */ - TRUE, /* eo */ - TRUE, /* gn */ - TRUE, /* hc */ - TRUE, /* km */ - TRUE, /* hs */ - TRUE, /* in */ - TRUE, /* da */ - TRUE, /* db */ - TRUE, /* mir */ - TRUE, /* msgr */ - TRUE, /* os */ - TRUE, /* eslok */ - TRUE, /* xt */ - TRUE, /* hz */ - TRUE, /* ul */ - TRUE, /* xon */ - FALSE, /* nxon */ - FALSE, /* mc5i */ - FALSE, /* chts */ - FALSE, /* nrrmc */ - FALSE, /* npc */ - FALSE, /* ndscr */ - FALSE, /* ccc */ - FALSE, /* bce */ - FALSE, /* hls */ - FALSE, /* xhpa */ - FALSE, /* crxm */ - FALSE, /* daisy */ - FALSE, /* xvpa */ - FALSE, /* sam */ - FALSE, /* cpix */ - FALSE, /* lpix */ - TRUE, /* OTbs */ - TRUE, /* OTns */ - TRUE, /* OTnc */ - FALSE, /* OTMT */ - TRUE, /* OTNL */ - TRUE, /* OTpt */ - TRUE, /* OTxr */ -}; - -static const bool num_from_termcap[] = { - TRUE, /* cols */ - TRUE, /* it */ - TRUE, /* lines */ - TRUE, /* lm */ - TRUE, /* xmc */ - TRUE, /* pb */ - TRUE, /* vt */ - TRUE, /* wsl */ - FALSE, /* nlab */ - FALSE, /* lh */ - FALSE, /* lw */ - TRUE, /* ma */ - FALSE, /* wnum */ - FALSE, /* colors */ - FALSE, /* pairs */ - FALSE, /* ncv */ - FALSE, /* bufsz */ - FALSE, /* spinv */ - FALSE, /* spinh */ - FALSE, /* maddr */ - FALSE, /* mjump */ - FALSE, /* mcs */ - FALSE, /* mls */ - FALSE, /* npins */ - FALSE, /* orc */ - FALSE, /* orl */ - FALSE, /* orhi */ - FALSE, /* orvi */ - FALSE, /* cps */ - FALSE, /* widcs */ - FALSE, /* btns */ - FALSE, /* bitwin */ - FALSE, /* bitype */ - TRUE, /* OTug */ - TRUE, /* OTdC */ - TRUE, /* OTdN */ - TRUE, /* OTdB */ - TRUE, /* OTdT */ - FALSE, /* OTkn */ -}; - -static const bool str_from_termcap[] = { - TRUE, /* cbt */ - TRUE, /* bel */ - TRUE, /* cr */ - TRUE, /* csr */ - TRUE, /* tbc */ - TRUE, /* clear */ - TRUE, /* el */ - TRUE, /* ed */ - FALSE, /* hpa */ - TRUE, /* cmdch */ - TRUE, /* cup */ - TRUE, /* cud1 */ - TRUE, /* home */ - TRUE, /* civis */ - TRUE, /* cub1 */ - TRUE, /* mrcup */ - TRUE, /* cnorm */ - TRUE, /* cuf1 */ - TRUE, /* ll */ - TRUE, /* cuu1 */ - TRUE, /* cvvis */ - TRUE, /* dch1 */ - TRUE, /* dl1 */ - TRUE, /* dsl */ - TRUE, /* hd */ - TRUE, /* smacs */ - TRUE, /* blink */ - TRUE, /* bold */ - TRUE, /* smcup */ - TRUE, /* smdc */ - TRUE, /* dim */ - TRUE, /* smir */ - FALSE, /* invis */ - FALSE, /* prot */ - TRUE, /* rev */ - TRUE, /* smso */ - TRUE, /* smul */ - TRUE, /* ech */ - TRUE, /* rmacs */ - TRUE, /* sgr0 */ - TRUE, /* rmcup */ - TRUE, /* rmdc */ - TRUE, /* rmir */ - TRUE, /* rmso */ - TRUE, /* rmul */ - TRUE, /* flash */ - TRUE, /* ff */ - TRUE, /* fsl */ - TRUE, /* is1 */ - TRUE, /* is2 */ - TRUE, /* is3 */ - TRUE, /* if */ - TRUE, /* ich1 */ - TRUE, /* il1 */ - TRUE, /* ip */ - TRUE, /* kbs */ - FALSE, /* ktbc */ - FALSE, /* kclr */ - FALSE, /* kctab */ - TRUE, /* kdch1 */ - FALSE, /* kdl1 */ - TRUE, /* kcud1 */ - FALSE, /* krmir */ - FALSE, /* kel */ - FALSE, /* ked */ - TRUE, /* kf0 */ - TRUE, /* kf1 */ - FALSE, /* kf10 */ - TRUE, /* kf2 */ - TRUE, /* kf3 */ - TRUE, /* kf4 */ - TRUE, /* kf5 */ - TRUE, /* kf6 */ - TRUE, /* kf7 */ - TRUE, /* kf8 */ - TRUE, /* kf9 */ - TRUE, /* khome */ - TRUE, /* kich1 */ - FALSE, /* kil1 */ - TRUE, /* kcub1 */ - TRUE, /* kll */ - TRUE, /* knp */ - TRUE, /* kpp */ - TRUE, /* kcuf1 */ - FALSE, /* kind */ - FALSE, /* kri */ - FALSE, /* khts */ - TRUE, /* kcuu1 */ - TRUE, /* rmkx */ - TRUE, /* smkx */ - FALSE, /* lf0 */ - FALSE, /* lf1 */ - FALSE, /* lf10 */ - FALSE, /* lf2 */ - FALSE, /* lf3 */ - FALSE, /* lf4 */ - FALSE, /* lf5 */ - FALSE, /* lf6 */ - FALSE, /* lf7 */ - FALSE, /* lf8 */ - FALSE, /* lf9 */ - TRUE, /* rmm */ - TRUE, /* smm */ - TRUE, /* nel */ - TRUE, /* pad */ - TRUE, /* dch */ - TRUE, /* dl */ - TRUE, /* cud */ - TRUE, /* ich */ - TRUE, /* indn */ - TRUE, /* il */ - TRUE, /* cub */ - TRUE, /* cuf */ - TRUE, /* rin */ - TRUE, /* cuu */ - FALSE, /* pfkey */ - FALSE, /* pfloc */ - FALSE, /* pfx */ - FALSE, /* mc0 */ - FALSE, /* mc4 */ - FALSE, /* mc5 */ - TRUE, /* rep */ - FALSE, /* rs1 */ - FALSE, /* rs2 */ - FALSE, /* rs3 */ - FALSE, /* rf */ - TRUE, /* rc */ - FALSE, /* vpa */ - TRUE, /* sc */ - TRUE, /* ind */ - TRUE, /* ri */ - TRUE, /* sgr */ - TRUE, /* hts */ - FALSE, /* wind */ - TRUE, /* ht */ - TRUE, /* tsl */ - TRUE, /* uc */ - TRUE, /* hu */ - FALSE, /* iprog */ - TRUE, /* ka1 */ - TRUE, /* ka3 */ - TRUE, /* kb2 */ - TRUE, /* kc1 */ - TRUE, /* kc3 */ - FALSE, /* mc5p */ - FALSE, /* rmp */ - FALSE, /* acsc */ - FALSE, /* pln */ - FALSE, /* kcbt */ - FALSE, /* smxon */ - FALSE, /* rmxon */ - FALSE, /* smam */ - FALSE, /* rmam */ - FALSE, /* xonc */ - FALSE, /* xoffc */ - FALSE, /* enacs */ - FALSE, /* smln */ - FALSE, /* rmln */ - FALSE, /* kbeg */ - FALSE, /* kcan */ - FALSE, /* kclo */ - FALSE, /* kcmd */ - FALSE, /* kcpy */ - FALSE, /* kcrt */ - FALSE, /* kend */ - FALSE, /* kent */ - FALSE, /* kext */ - FALSE, /* kfnd */ - FALSE, /* khlp */ - FALSE, /* kmrk */ - FALSE, /* kmsg */ - FALSE, /* kmov */ - FALSE, /* knxt */ - FALSE, /* kopn */ - FALSE, /* kopt */ - FALSE, /* kprv */ - FALSE, /* kprt */ - FALSE, /* krdo */ - FALSE, /* kref */ - FALSE, /* krfr */ - FALSE, /* krpl */ - FALSE, /* krst */ - FALSE, /* kres */ - FALSE, /* ksav */ - FALSE, /* kspd */ - FALSE, /* kund */ - FALSE, /* kBEG */ - FALSE, /* kCAN */ - FALSE, /* kCMD */ - FALSE, /* kCPY */ - FALSE, /* kCRT */ - FALSE, /* kDC */ - FALSE, /* kDL */ - FALSE, /* kslt */ - FALSE, /* kEND */ - FALSE, /* kEOL */ - FALSE, /* kEXT */ - FALSE, /* kFND */ - FALSE, /* kHLP */ - FALSE, /* kHOM */ - FALSE, /* kIC */ - FALSE, /* kLFT */ - FALSE, /* kMSG */ - FALSE, /* kMOV */ - FALSE, /* kNXT */ - FALSE, /* kOPT */ - FALSE, /* kPRV */ - FALSE, /* kPRT */ - FALSE, /* kRDO */ - FALSE, /* kRPL */ - FALSE, /* kRIT */ - FALSE, /* kRES */ - FALSE, /* kSAV */ - FALSE, /* kSPD */ - FALSE, /* kUND */ - FALSE, /* rfi */ - FALSE, /* kf11 */ - FALSE, /* kf12 */ - FALSE, /* kf13 */ - FALSE, /* kf14 */ - FALSE, /* kf15 */ - FALSE, /* kf16 */ - FALSE, /* kf17 */ - FALSE, /* kf18 */ - FALSE, /* kf19 */ - FALSE, /* kf20 */ - FALSE, /* kf21 */ - FALSE, /* kf22 */ - FALSE, /* kf23 */ - FALSE, /* kf24 */ - FALSE, /* kf25 */ - FALSE, /* kf26 */ - FALSE, /* kf27 */ - FALSE, /* kf28 */ - FALSE, /* kf29 */ - FALSE, /* kf30 */ - FALSE, /* kf31 */ - FALSE, /* kf32 */ - FALSE, /* kf33 */ - FALSE, /* kf34 */ - FALSE, /* kf35 */ - FALSE, /* kf36 */ - FALSE, /* kf37 */ - FALSE, /* kf38 */ - FALSE, /* kf39 */ - FALSE, /* kf40 */ - FALSE, /* kf41 */ - FALSE, /* kf42 */ - FALSE, /* kf43 */ - FALSE, /* kf44 */ - FALSE, /* kf45 */ - FALSE, /* kf46 */ - FALSE, /* kf47 */ - FALSE, /* kf48 */ - FALSE, /* kf49 */ - FALSE, /* kf50 */ - FALSE, /* kf51 */ - FALSE, /* kf52 */ - FALSE, /* kf53 */ - FALSE, /* kf54 */ - FALSE, /* kf55 */ - FALSE, /* kf56 */ - FALSE, /* kf57 */ - FALSE, /* kf58 */ - FALSE, /* kf59 */ - FALSE, /* kf60 */ - FALSE, /* kf61 */ - FALSE, /* kf62 */ - FALSE, /* kf63 */ - FALSE, /* el1 */ - FALSE, /* mgc */ - FALSE, /* smgl */ - FALSE, /* smgr */ - FALSE, /* fln */ - FALSE, /* sclk */ - FALSE, /* dclk */ - FALSE, /* rmclk */ - FALSE, /* cwin */ - FALSE, /* wingo */ - FALSE, /* hup */ - FALSE, /* dial */ - FALSE, /* qdial */ - FALSE, /* tone */ - FALSE, /* pulse */ - FALSE, /* hook */ - FALSE, /* pause */ - FALSE, /* wait */ - FALSE, /* u0 */ - FALSE, /* u1 */ - FALSE, /* u2 */ - FALSE, /* u3 */ - FALSE, /* u4 */ - FALSE, /* u5 */ - FALSE, /* u6 */ - FALSE, /* u7 */ - FALSE, /* u8 */ - FALSE, /* u9 */ - FALSE, /* op */ - FALSE, /* oc */ - FALSE, /* initc */ - FALSE, /* initp */ - FALSE, /* scp */ - FALSE, /* setf */ - FALSE, /* setb */ - FALSE, /* cpi */ - FALSE, /* lpi */ - FALSE, /* chr */ - FALSE, /* cvr */ - FALSE, /* defc */ - FALSE, /* swidm */ - FALSE, /* sdrfq */ - FALSE, /* sitm */ - FALSE, /* slm */ - FALSE, /* smicm */ - FALSE, /* snlq */ - FALSE, /* snrmq */ - FALSE, /* sshm */ - FALSE, /* ssubm */ - FALSE, /* ssupm */ - FALSE, /* sum */ - FALSE, /* rwidm */ - FALSE, /* ritm */ - FALSE, /* rlm */ - FALSE, /* rmicm */ - FALSE, /* rshm */ - FALSE, /* rsubm */ - FALSE, /* rsupm */ - FALSE, /* rum */ - FALSE, /* mhpa */ - FALSE, /* mcud1 */ - FALSE, /* mcub1 */ - FALSE, /* mcuf1 */ - FALSE, /* mvpa */ - FALSE, /* mcuu1 */ - FALSE, /* porder */ - FALSE, /* mcud */ - FALSE, /* mcub */ - FALSE, /* mcuf */ - FALSE, /* mcuu */ - FALSE, /* scs */ - FALSE, /* smgb */ - FALSE, /* smgbp */ - FALSE, /* smglp */ - FALSE, /* smgrp */ - FALSE, /* smgt */ - FALSE, /* smgtp */ - FALSE, /* sbim */ - FALSE, /* scsd */ - FALSE, /* rbim */ - FALSE, /* rcsd */ - FALSE, /* subcs */ - FALSE, /* supcs */ - FALSE, /* docr */ - FALSE, /* zerom */ - FALSE, /* csnm */ - FALSE, /* kmous */ - FALSE, /* minfo */ - FALSE, /* reqmp */ - FALSE, /* getm */ - FALSE, /* setaf */ - FALSE, /* setab */ - FALSE, /* pfxl */ - FALSE, /* devt */ - FALSE, /* csin */ - FALSE, /* s0ds */ - FALSE, /* s1ds */ - FALSE, /* s2ds */ - FALSE, /* s3ds */ - FALSE, /* smglr */ - FALSE, /* smgtb */ - FALSE, /* birep */ - FALSE, /* binel */ - FALSE, /* bicr */ - FALSE, /* colornm */ - FALSE, /* defbi */ - FALSE, /* endbi */ - FALSE, /* setcolor */ - FALSE, /* slines */ - FALSE, /* dispc */ - FALSE, /* smpch */ - FALSE, /* rmpch */ - FALSE, /* smsc */ - FALSE, /* rmsc */ - FALSE, /* pctrm */ - FALSE, /* scesc */ - FALSE, /* scesa */ - FALSE, /* ehhlm */ - FALSE, /* elhlm */ - FALSE, /* elohlm */ - FALSE, /* erhlm */ - FALSE, /* ethlm */ - FALSE, /* evhlm */ - FALSE, /* sgr1 */ - FALSE, /* slength */ - TRUE, /* OTi2 */ - TRUE, /* OTrs */ - TRUE, /* OTnl */ - TRUE, /* OTbc */ - FALSE, /* OTko */ - TRUE, /* OTma */ - FALSE, /* OTG2 */ - FALSE, /* OTG3 */ - FALSE, /* OTG1 */ - FALSE, /* OTG4 */ - FALSE, /* OTGR */ - FALSE, /* OTGL */ - FALSE, /* OTGU */ - FALSE, /* OTGD */ - FALSE, /* OTGH */ - FALSE, /* OTGV */ - FALSE, /* OTGC */ - FALSE, /* meml */ - FALSE, /* memu */ - FALSE, /* pln */ - FALSE, /* smln */ - FALSE, /* rmln */ - FALSE, /* kf11 */ - FALSE, /* kf12 */ - FALSE, /* kf13 */ - FALSE, /* kf14 */ - FALSE, /* kf15 */ - FALSE, /* kf16 */ - FALSE, /* kf17 */ - FALSE, /* kf18 */ - FALSE, /* kf19 */ - FALSE, /* kf20 */ - FALSE, /* kf21 */ - FALSE, /* kf22 */ - FALSE, /* kf23 */ - FALSE, /* kf24 */ - FALSE, /* kf25 */ - FALSE, /* kf26 */ - FALSE, /* kf27 */ - FALSE, /* kf28 */ - FALSE, /* kf29 */ - FALSE, /* kf30 */ - FALSE, /* kf31 */ - FALSE, /* kf32 */ - FALSE, /* kf33 */ - FALSE, /* kf34 */ - FALSE, /* kf35 */ - FALSE, /* kf36 */ - FALSE, /* kf37 */ - FALSE, /* kf38 */ - FALSE, /* kf39 */ - FALSE, /* kf40 */ - FALSE, /* kf41 */ - FALSE, /* kf42 */ - FALSE, /* kf43 */ - FALSE, /* kf44 */ - FALSE, /* kf45 */ - FALSE, /* kf46 */ - FALSE, /* kf47 */ - FALSE, /* kf48 */ - FALSE, /* kf49 */ - FALSE, /* kf50 */ - FALSE, /* kf51 */ - FALSE, /* kf52 */ - FALSE, /* kf53 */ - FALSE, /* kf54 */ - FALSE, /* kf55 */ - FALSE, /* kf56 */ - FALSE, /* kf57 */ - FALSE, /* kf58 */ - FALSE, /* kf59 */ - FALSE, /* kf60 */ - FALSE, /* kf61 */ - FALSE, /* kf62 */ - FALSE, /* kf63 */ - FALSE, /* box1 */ - FALSE, /* box2 */ - FALSE, /* batt1 */ - FALSE, /* batt2 */ - FALSE, /* colb0 */ - FALSE, /* colb1 */ - FALSE, /* colb2 */ - FALSE, /* colb3 */ - FALSE, /* colb4 */ - FALSE, /* colb5 */ - FALSE, /* colb6 */ - FALSE, /* colb7 */ - FALSE, /* colf0 */ - FALSE, /* colf1 */ - FALSE, /* colf2 */ - FALSE, /* colf3 */ - FALSE, /* colf4 */ - FALSE, /* colf5 */ - FALSE, /* colf6 */ - FALSE, /* colf7 */ - FALSE, /* font0 */ - FALSE, /* font1 */ - FALSE, /* font2 */ - FALSE, /* font3 */ - FALSE, /* font4 */ - FALSE, /* font5 */ - FALSE, /* font6 */ - FALSE, /* font7 */ - FALSE, /* kbtab */ - FALSE, /* kdo */ - FALSE, /* kcmd */ - FALSE, /* kcpn */ - FALSE, /* kend */ - FALSE, /* khlp */ - FALSE, /* knl */ - FALSE, /* knpn */ - FALSE, /* kppn */ - FALSE, /* kppn */ - FALSE, /* kquit */ - FALSE, /* ksel */ - FALSE, /* kscl */ - FALSE, /* kscr */ - FALSE, /* ktab */ - FALSE, /* kmpf1 */ - FALSE, /* kmpt1 */ - FALSE, /* kmpf2 */ - FALSE, /* kmpt2 */ - FALSE, /* kmpf3 */ - FALSE, /* kmpt3 */ - FALSE, /* kmpf4 */ - FALSE, /* kmpt4 */ - FALSE, /* kmpf5 */ - FALSE, /* kmpt5 */ - FALSE, /* apstr */ - FALSE, /* kmpf6 */ - FALSE, /* kmpt6 */ - FALSE, /* kmpf7 */ - FALSE, /* kmpt7 */ - FALSE, /* kmpf8 */ - FALSE, /* kmpt8 */ - FALSE, /* kmpf9 */ - FALSE, /* kmpt9 */ - FALSE, /* ksf1 */ - FALSE, /* ksf2 */ - FALSE, /* ksf3 */ - FALSE, /* ksf4 */ - FALSE, /* ksf5 */ - FALSE, /* ksf6 */ - FALSE, /* ksf7 */ - FALSE, /* ksf8 */ - FALSE, /* ksf9 */ - FALSE, /* ksf10 */ - FALSE, /* kf11 */ - FALSE, /* kf12 */ - FALSE, /* kact */ - FALSE, /* topl */ - FALSE, /* btml */ - FALSE, /* rvert */ - FALSE, /* lvert */ -}; - diff --git a/deps/ncurses-5.9/progs/tic b/deps/ncurses-5.9/progs/tic deleted file mode 100755 index 6e7d8ba..0000000 Binary files a/deps/ncurses-5.9/progs/tic and /dev/null differ diff --git a/deps/ncurses-5.9/progs/tic.c b/deps/ncurses-5.9/progs/tic.c deleted file mode 100644 index 8e89095..0000000 --- a/deps/ncurses-5.9/progs/tic.c +++ /dev/null @@ -1,1714 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996 on * - ****************************************************************************/ - -/* - * tic.c --- Main program for terminfo compiler - * by Eric S. Raymond - * - */ - -#include -#include - -#include -#include - -MODULE_ID("$Id: tic.c,v 1.147 2011/02/12 18:39:08 tom Exp $") - -const char *_nc_progname = "tic"; - -static FILE *log_fp; -static FILE *tmp_fp; -static bool capdump = FALSE; /* running as infotocap? */ -static bool infodump = FALSE; /* running as captoinfo? */ -static bool showsummary = FALSE; -static const char *to_remove; - -static void (*save_check_termtype) (TERMTYPE *, bool); -static void check_termtype(TERMTYPE *tt, bool); - -static const char usage_string[] = "\ -[-e names] \ -[-o dir] \ -[-R name] \ -[-v[n]] \ -[-V] \ -[-w[n]] \ -[-\ -1\ -a\ -C\ -c\ -f\ -G\ -g\ -I\ -L\ -N\ -r\ -s\ -T\ -t\ -U\ -x\ -] \ -source-file\n"; - -#if NO_LEAKS -static void -free_namelist(char **src) -{ - if (src != 0) { - int n; - for (n = 0; src[n] != 0; ++n) - free(src[n]); - free(src); - } -} -#endif - -static void -cleanup(char **namelst GCC_UNUSED) -{ -#if NO_LEAKS - free_namelist(namelst); -#endif - if (tmp_fp != 0) - fclose(tmp_fp); - if (to_remove != 0) { -#if HAVE_REMOVE - remove(to_remove); -#else - unlink(to_remove); -#endif - } -} - -static void -failed(const char *msg) -{ - perror(msg); - cleanup((char **) 0); - ExitProgram(EXIT_FAILURE); -} - -static void -usage(void) -{ - static const char *const tbl[] = - { - "Options:", - " -1 format translation output one capability per line", -#if NCURSES_XNAMES - " -a retain commented-out capabilities (sets -x also)", -#endif - " -C translate entries to termcap source form", - " -c check only, validate input without compiling or translating", - " -e translate/compile only entries named by comma-separated list", - " -f format complex strings for readability", - " -G format %{number} to %'char'", - " -g format %'char' to %{number}", - " -I translate entries to terminfo source form", - " -L translate entries to full terminfo source form", - " -N disable smart defaults for source translation", - " -o

set output directory for compiled entry writes", - " -R restrict translation to given terminfo/termcap version", - " -r force resolution of all use entries in source translation", - " -s print summary statistics", - " -T remove size-restrictions on compiled description", -#if NCURSES_XNAMES - " -t suppress commented-out capabilities", -#endif - " -U suppress post-processing of entries", - " -V print version", - " -v[n] set verbosity level", - " -w[n] set format width for translation output", -#if NCURSES_XNAMES - " -x treat unknown capabilities as user-defined", -#endif - "", - "Parameters:", - " file to translate or compile" - }; - size_t j; - - fprintf(stderr, "Usage: %s %s\n", _nc_progname, usage_string); - for (j = 0; j < SIZEOF(tbl); j++) { - fputs(tbl[j], stderr); - putc('\n', stderr); - } - ExitProgram(EXIT_FAILURE); -} - -#define L_BRACE '{' -#define R_BRACE '}' -#define S_QUOTE '\''; - -static void -write_it(ENTRY * ep) -{ - unsigned n; - int ch; - char *s, *d, *t; - char result[MAX_ENTRY_SIZE]; - - /* - * Look for strings that contain %{number}, convert them to %'char', - * which is shorter and runs a little faster. - */ - for (n = 0; n < STRCOUNT; n++) { - s = ep->tterm.Strings[n]; - if (VALID_STRING(s) - && strchr(s, L_BRACE) != 0) { - d = result; - t = s; - while ((ch = *t++) != 0) { - *d++ = (char) ch; - if (ch == '\\') { - *d++ = *t++; - } else if ((ch == '%') - && (*t == L_BRACE)) { - char *v = 0; - long value = strtol(t + 1, &v, 0); - if (v != 0 - && *v == R_BRACE - && value > 0 - && value != '\\' /* FIXME */ - && value < 127 - && isprint((int) value)) { - *d++ = S_QUOTE; - *d++ = (char) value; - *d++ = S_QUOTE; - t = (v + 1); - } - } - } - *d = 0; - if (strlen(result) < strlen(s)) - strcpy(s, result); - } - } - - _nc_set_type(_nc_first_name(ep->tterm.term_names)); - _nc_curr_line = ep->startline; - _nc_write_entry(&ep->tterm); -} - -static bool -immedhook(ENTRY * ep GCC_UNUSED) -/* write out entries with no use capabilities immediately to save storage */ -{ -#if !HAVE_BIG_CORE - /* - * This is strictly a core-economy kluge. The really clean way to handle - * compilation is to slurp the whole file into core and then do all the - * name-collision checks and entry writes in one swell foop. But the - * terminfo master file is large enough that some core-poor systems swap - * like crazy when you compile it this way...there have been reports of - * this process taking *three hours*, rather than the twenty seconds or - * less typical on my development box. - * - * So. This hook *immediately* 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's OK; the resolution code will fetch it off disk - * when it can't find it in core. - * - * Name collisions will still be detected, just not as cleanly. The - * write_entry() code complains before overwriting an entry that - * postdates the time of tic's first call to write_entry(). Thus - * it will complain about overwriting entries newly made during the - * tic run, but not about overwriting ones that predate it. - * - * The reason this is a hook, and not in line with the rest of the - * compiler code, is that the support for termcap fallback cannot assume - * it has anywhere to spool out these entries! - * - * The _nc_set_type() call here requires a compensating one in - * _nc_parse_entry(). - * - * If you define HAVE_BIG_CORE, you'll disable this kluge. This will - * make tic a bit faster (because the resolution code won't have to do - * disk I/O nearly as often). - */ - if (ep->nuses == 0) { - int oldline = _nc_curr_line; - - write_it(ep); - _nc_curr_line = oldline; - free(ep->tterm.str_table); - return (TRUE); - } -#endif /* HAVE_BIG_CORE */ - return (FALSE); -} - -static void -put_translate(int c) -/* emit a comment char, translating terminfo names to termcap names */ -{ - static bool in_name = FALSE; - static size_t have, used; - static char *namebuf, *suffix; - - if (in_name) { - if (used + 1 >= have) { - have += 132; - namebuf = typeRealloc(char, have, namebuf); - suffix = typeRealloc(char, have, suffix); - } - if (c == '\n' || c == '@') { - namebuf[used++] = '\0'; - (void) putchar('<'); - (void) fputs(namebuf, stdout); - putchar(c); - in_name = FALSE; - } else if (c != '>') { - namebuf[used++] = (char) c; - } else { /* ah! candidate name! */ - char *up; - NCURSES_CONST char *tp; - - namebuf[used++] = '\0'; - in_name = FALSE; - - suffix[0] = '\0'; - if ((up = strchr(namebuf, '#')) != 0 - || (up = strchr(namebuf, '=')) != 0 - || ((up = strchr(namebuf, '@')) != 0 && up[1] == '>')) { - (void) strcpy(suffix, up); - *up = '\0'; - } - - if ((tp = nametrans(namebuf)) != 0) { - (void) putchar(':'); - (void) fputs(tp, stdout); - (void) fputs(suffix, stdout); - (void) putchar(':'); - } else { - /* couldn't find a translation, just dump the name */ - (void) putchar('<'); - (void) fputs(namebuf, stdout); - (void) fputs(suffix, stdout); - (void) putchar('>'); - } - } - } else { - used = 0; - if (c == '<') { - in_name = TRUE; - } else { - putchar(c); - } - } -} - -/* Returns a string, stripped of leading/trailing whitespace */ -static char * -stripped(char *src) -{ - while (isspace(UChar(*src))) - src++; - if (*src != '\0') { - char *dst; - size_t len; - - if ((dst = strdup(src)) == NULL) - failed("strdup"); - - assert(dst != 0); - - len = strlen(dst); - while (--len != 0 && isspace(UChar(dst[len]))) - dst[len] = '\0'; - return dst; - } - return 0; -} - -static FILE * -open_input(const char *filename) -{ - FILE *fp = fopen(filename, "r"); - struct stat sb; - - if (fp == 0) { - fprintf(stderr, "%s: Can't open %s\n", _nc_progname, filename); - ExitProgram(EXIT_FAILURE); - } - if (fstat(fileno(fp), &sb) < 0 - || (sb.st_mode & S_IFMT) != S_IFREG) { - fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename); - ExitProgram(EXIT_FAILURE); - } - return fp; -} - -/* Parse the "-e" option-value into a list of names */ -static char ** -make_namelist(char *src) -{ - char **dst = 0; - - char *s, *base; - unsigned pass, n, nn; - char buffer[BUFSIZ]; - - if (src == 0) { - /* EMPTY */ ; - } else if (strchr(src, '/') != 0) { /* a filename */ - FILE *fp = open_input(src); - - for (pass = 1; pass <= 2; pass++) { - nn = 0; - while (fgets(buffer, sizeof(buffer), fp) != 0) { - if ((s = stripped(buffer)) != 0) { - if (dst != 0) - dst[nn] = s; - else - free(s); - nn++; - } - } - if (pass == 1) { - dst = typeCalloc(char *, nn + 1); - rewind(fp); - } - } - fclose(fp); - } else { /* literal list of names */ - for (pass = 1; pass <= 2; pass++) { - for (n = nn = 0, base = src;; n++) { - int mark = src[n]; - if (mark == ',' || mark == '\0') { - if (pass == 1) { - nn++; - } else { - src[n] = '\0'; - if ((s = stripped(base)) != 0) - dst[nn++] = s; - base = &src[n + 1]; - } - } - if (mark == '\0') - break; - } - if (pass == 1) - dst = typeCalloc(char *, nn + 1); - } - } - if (showsummary && (dst != 0)) { - fprintf(log_fp, "Entries that will be compiled:\n"); - for (n = 0; dst[n] != 0; n++) - fprintf(log_fp, "%u:%s\n", n + 1, dst[n]); - } - return dst; -} - -static bool -matches(char **needle, const char *haystack) -/* does entry in needle list match |-separated field in haystack? */ -{ - bool code = FALSE; - size_t n; - - if (needle != 0) { - for (n = 0; needle[n] != 0; n++) { - if (_nc_name_match(haystack, needle[n], "|")) { - code = TRUE; - break; - } - } - } else - code = TRUE; - return (code); -} - -static FILE * -open_tempfile(char *name) -{ - FILE *result = 0; -#if HAVE_MKSTEMP - int fd = mkstemp(name); - if (fd >= 0) - result = fdopen(fd, "w"); -#else - if (tmpnam(name) != 0) - result = fopen(name, "w"); -#endif - return result; -} - -int -main(int argc, char *argv[]) -{ - char my_tmpname[PATH_MAX]; - int v_opt = -1, debug_level; - int smart_defaults = TRUE; - char *termcap; - ENTRY *qp; - - int this_opt, last_opt = '?'; - - int outform = F_TERMINFO; /* output format */ - int sortmode = S_TERMINFO; /* sort_mode */ - - int width = 60; - bool formatted = FALSE; /* reformat complex strings? */ - bool literal = FALSE; /* suppress post-processing? */ - int numbers = 0; /* format "%'char'" to/from "%{number}" */ - bool forceresolve = FALSE; /* force resolution */ - bool limited = TRUE; - char *tversion = (char *) NULL; - const char *source_file = "terminfo"; - char **namelst = 0; - char *outdir = (char *) NULL; - bool check_only = FALSE; - bool suppress_untranslatable = FALSE; - - log_fp = stderr; - - _nc_progname = _nc_rootname(argv[0]); - - if ((infodump = same_program(_nc_progname, PROG_CAPTOINFO)) != FALSE) { - outform = F_TERMINFO; - sortmode = S_TERMINFO; - } - if ((capdump = same_program(_nc_progname, PROG_INFOTOCAP)) != FALSE) { - outform = F_TERMCAP; - sortmode = S_TERMCAP; - } -#if NCURSES_XNAMES - use_extended_names(FALSE); -#endif - - /* - * Processing arguments is a little complicated, since someone made a - * design decision to allow the numeric values for -w, -v options to - * be optional. - */ - while ((this_opt = getopt(argc, argv, - "0123456789CILNR:TUVace:fGgo:rstvwx")) != -1) { - if (isdigit(this_opt)) { - switch (last_opt) { - case 'v': - v_opt = (v_opt * 10) + (this_opt - '0'); - break; - case 'w': - width = (width * 10) + (this_opt - '0'); - break; - default: - if (this_opt != '1') - usage(); - last_opt = this_opt; - width = 0; - } - continue; - } - switch (this_opt) { - case 'C': - capdump = TRUE; - outform = F_TERMCAP; - sortmode = S_TERMCAP; - break; - case 'I': - infodump = TRUE; - outform = F_TERMINFO; - sortmode = S_TERMINFO; - break; - case 'L': - infodump = TRUE; - outform = F_VARIABLE; - sortmode = S_VARIABLE; - break; - case 'N': - smart_defaults = FALSE; - literal = TRUE; - break; - case 'R': - tversion = optarg; - break; - case 'T': - limited = FALSE; - break; - case 'U': - literal = TRUE; - break; - case 'V': - puts(curses_version()); - cleanup(namelst); - ExitProgram(EXIT_SUCCESS); - case 'c': - check_only = TRUE; - break; - case 'e': - namelst = make_namelist(optarg); - break; - case 'f': - formatted = TRUE; - break; - case 'G': - numbers = 1; - break; - case 'g': - numbers = -1; - break; - case 'o': - outdir = optarg; - break; - case 'r': - forceresolve = TRUE; - break; - case 's': - showsummary = TRUE; - break; - case 'v': - v_opt = 0; - break; - case 'w': - width = 0; - break; -#if NCURSES_XNAMES - case 't': - _nc_disable_period = FALSE; - suppress_untranslatable = TRUE; - break; - case 'a': - _nc_disable_period = TRUE; - /* FALLTHRU */ - case 'x': - use_extended_names(TRUE); - break; -#endif - default: - usage(); - } - last_opt = this_opt; - } - - debug_level = (v_opt > 0) ? v_opt : (v_opt == 0); - set_trace_level(debug_level); - - if (_nc_tracing) { - save_check_termtype = _nc_check_termtype2; - _nc_check_termtype2 = check_termtype; - } -#if !HAVE_BIG_CORE - /* - * Aaargh! immedhook seriously hoses us! - * - * One problem with immedhook is it means we can't do -e. Problem - * is that we can't guarantee that for each terminal listed, all the - * terminals it depends on will have been kept in core for reference - * resolution -- in fact it's certain the primitive types at the end - * of reference chains *won't* be in core unless they were explicitly - * in the select list themselves. - */ - if (namelst && (!infodump && !capdump)) { - (void) fprintf(stderr, - "Sorry, -e can't be used without -I or -C\n"); - cleanup(namelst); - ExitProgram(EXIT_FAILURE); - } -#endif /* HAVE_BIG_CORE */ - - if (optind < argc) { - source_file = argv[optind++]; - if (optind < argc) { - fprintf(stderr, - "%s: Too many file names. Usage:\n\t%s %s", - _nc_progname, - _nc_progname, - usage_string); - ExitProgram(EXIT_FAILURE); - } - } else { - if (infodump == TRUE) { - /* captoinfo's no-argument case */ - source_file = "/etc/termcap"; - if ((termcap = getenv("TERMCAP")) != 0 - && (namelst = make_namelist(getenv("TERM"))) != 0) { - if (access(termcap, F_OK) == 0) { - /* file exists */ - source_file = termcap; - } else if ((tmp_fp = open_tempfile(strcpy(my_tmpname, - "/tmp/XXXXXX"))) - != 0) { - source_file = my_tmpname; - fprintf(tmp_fp, "%s\n", termcap); - fclose(tmp_fp); - tmp_fp = open_input(source_file); - to_remove = source_file; - } else { - failed("tmpnam"); - } - } - } else { - /* tic */ - fprintf(stderr, - "%s: File name needed. Usage:\n\t%s %s", - _nc_progname, - _nc_progname, - usage_string); - cleanup(namelst); - ExitProgram(EXIT_FAILURE); - } - } - - if (tmp_fp == 0) - tmp_fp = open_input(source_file); - - if (infodump) - dump_init(tversion, - smart_defaults - ? outform - : F_LITERAL, - sortmode, width, debug_level, formatted); - else if (capdump) - dump_init(tversion, - outform, - sortmode, width, debug_level, FALSE); - - /* parse entries out of the source file */ - _nc_set_source(source_file); -#if !HAVE_BIG_CORE - if (!(check_only || infodump || capdump)) - _nc_set_writedir(outdir); -#endif /* HAVE_BIG_CORE */ - _nc_read_entry_source(tmp_fp, (char *) NULL, - !smart_defaults || literal, FALSE, - ((check_only || infodump || capdump) - ? NULLHOOK - : immedhook)); - - /* do use resolution */ - if (check_only || (!infodump && !capdump) || forceresolve) { - if (!_nc_resolve_uses2(TRUE, literal) && !check_only) { - cleanup(namelst); - ExitProgram(EXIT_FAILURE); - } - } - - /* length check */ - if (check_only && (capdump || infodump)) { - for_entry_list(qp) { - if (matches(namelst, qp->tterm.term_names)) { - int len = fmt_entry(&qp->tterm, NULL, FALSE, TRUE, infodump, numbers); - - if (len > (infodump ? MAX_TERMINFO_LENGTH : MAX_TERMCAP_LENGTH)) - (void) fprintf(stderr, - "warning: resolved %s entry is %d bytes long\n", - _nc_first_name(qp->tterm.term_names), - len); - } - } - } - - /* write or dump all entries */ - if (!check_only) { - if (!infodump && !capdump) { - _nc_set_writedir(outdir); - for_entry_list(qp) { - if (matches(namelst, qp->tterm.term_names)) - write_it(qp); - } - } else { - /* this is in case infotocap() generates warnings */ - _nc_curr_col = _nc_curr_line = -1; - - for_entry_list(qp) { - if (matches(namelst, qp->tterm.term_names)) { - int j = qp->cend - qp->cstart; - int len = 0; - - /* this is in case infotocap() generates warnings */ - _nc_set_type(_nc_first_name(qp->tterm.term_names)); - - (void) fseek(tmp_fp, qp->cstart, SEEK_SET); - while (j-- > 0) { - if (infodump) - (void) putchar(fgetc(tmp_fp)); - else - put_translate(fgetc(tmp_fp)); - } - - repair_acsc(&qp->tterm); - dump_entry(&qp->tterm, suppress_untranslatable, - limited, numbers, NULL); - for (j = 0; j < (int) qp->nuses; j++) - dump_uses(qp->uses[j].name, !capdump); - len = show_entry(); - if (debug_level != 0 && !limited) - printf("# length=%d\n", len); - } - } - if (!namelst && _nc_tail) { - int c, oldc = '\0'; - bool in_comment = FALSE; - bool trailing_comment = FALSE; - - (void) fseek(tmp_fp, _nc_tail->cend, SEEK_SET); - while ((c = fgetc(tmp_fp)) != EOF) { - if (oldc == '\n') { - if (c == '#') { - trailing_comment = TRUE; - in_comment = TRUE; - } else { - in_comment = FALSE; - } - } - if (trailing_comment - && (in_comment || (oldc == '\n' && c == '\n'))) - putchar(c); - oldc = c; - } - } - } - } - - /* Show the directory into which entries were written, and the total - * number of entries - */ - if (showsummary - && (!(check_only || infodump || capdump))) { - int total = _nc_tic_written(); - if (total != 0) - fprintf(log_fp, "%d entries written to %s\n", - total, - _nc_tic_dir((char *) 0)); - else - fprintf(log_fp, "No entries written\n"); - } - cleanup(namelst); - ExitProgram(EXIT_SUCCESS); -} - -/* - * This bit of legerdemain turns all the terminfo variable names into - * references to locations in the arrays Booleans, Numbers, and Strings --- - * precisely what's needed (see comp_parse.c). - */ -#undef CUR -#define CUR tp-> - -/* - * Check if the alternate character-set capabilities are consistent. - */ -static void -check_acs(TERMTYPE *tp) -{ - if (VALID_STRING(acs_chars)) { - const char *boxes = "lmkjtuvwqxn"; - char mapped[256]; - char missing[256]; - const char *p; - char *q; - - memset(mapped, 0, sizeof(mapped)); - for (p = acs_chars; *p != '\0'; p += 2) { - if (p[1] == '\0') { - _nc_warning("acsc has odd number of characters"); - break; - } - mapped[UChar(p[0])] = p[1]; - } - - if (mapped[UChar('I')] && !mapped[UChar('i')]) { - _nc_warning("acsc refers to 'I', which is probably an error"); - } - - for (p = boxes, q = missing; *p != '\0'; ++p) { - if (!mapped[UChar(p[0])]) { - *q++ = p[0]; - } - } - *q = '\0'; - - assert(strlen(missing) <= strlen(boxes)); - if (*missing != '\0' && strcmp(missing, boxes)) { - _nc_warning("acsc is missing some line-drawing mapping: %s", missing); - } - } -} - -/* - * Check if the color capabilities are consistent - */ -static void -check_colors(TERMTYPE *tp) -{ - if ((max_colors > 0) != (max_pairs > 0) - || ((max_colors > max_pairs) && (initialize_pair == 0))) - _nc_warning("inconsistent values for max_colors (%d) and max_pairs (%d)", - max_colors, max_pairs); - - PAIRED(set_foreground, set_background); - PAIRED(set_a_foreground, set_a_background); - PAIRED(set_color_pair, initialize_pair); - - if (VALID_STRING(set_foreground) - && VALID_STRING(set_a_foreground) - && !_nc_capcmp(set_foreground, set_a_foreground)) - _nc_warning("expected setf/setaf to be different"); - - if (VALID_STRING(set_background) - && VALID_STRING(set_a_background) - && !_nc_capcmp(set_background, set_a_background)) - _nc_warning("expected setb/setab to be different"); - - /* see: has_colors() */ - if (VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs) - && (((set_foreground != NULL) - && (set_background != NULL)) - || ((set_a_foreground != NULL) - && (set_a_background != NULL)) - || set_color_pair)) { - if (!VALID_STRING(orig_pair) && !VALID_STRING(orig_colors)) - _nc_warning("expected either op/oc string for resetting colors"); - } -} - -static char -keypad_final(const char *string) -{ - char result = '\0'; - - if (VALID_STRING(string) - && *string++ == '\033' - && *string++ == 'O' - && strlen(string) == 1) { - result = *string; - } - - return result; -} - -static int -keypad_index(const char *string) -{ - char *test; - const char *list = "PQRSwxymtuvlqrsPpn"; /* app-keypad except "Enter" */ - int ch; - int result = -1; - - if ((ch = keypad_final(string)) != '\0') { - test = strchr(list, ch); - if (test != 0) - result = (test - list); - } - return result; -} - -/* - * list[] is down, up, left, right - * "left" may be ^H rather than \E[D - * "down" may be ^J rather than \E[B - * But up/right are generally consistently escape sequences for ANSI terminals. - */ -static void -check_ansi_cursor(char *list[4]) -{ - int j, k; - int want; - size_t prefix = 0; - size_t suffix; - bool skip[4]; - bool repeated = FALSE; - - for (j = 0; j < 4; ++j) { - skip[j] = FALSE; - for (k = 0; k < j; ++k) { - if (j != k - && !strcmp(list[j], list[k])) { - char *value = _nc_tic_expand(list[k], TRUE, 0); - _nc_warning("repeated cursor control %s\n", value); - repeated = TRUE; - } - } - } - if (!repeated) { - char *up = list[1]; - - if (UChar(up[0]) == '\033') { - if (up[1] == '[') { - prefix = 2; - } else { - prefix = 1; - } - } else if (UChar(up[0]) == UChar('\233')) { - prefix = 1; - } - if (prefix) { - suffix = prefix; - while (up[suffix] && isdigit(UChar(up[suffix]))) - ++suffix; - } - if (prefix && up[suffix] == 'A') { - skip[1] = TRUE; - if (!strcmp(list[0], "\n")) - skip[0] = TRUE; - if (!strcmp(list[2], "\b")) - skip[2] = TRUE; - - for (j = 0; j < 4; ++j) { - if (skip[j] || strlen(list[j]) == 1) - continue; - if (memcmp(list[j], up, prefix)) { - char *value = _nc_tic_expand(list[j], TRUE, 0); - _nc_warning("inconsistent prefix for %s\n", value); - continue; - } - if (strlen(list[j]) < suffix) { - char *value = _nc_tic_expand(list[j], TRUE, 0); - _nc_warning("inconsistent length for %s, expected %d\n", - value, (int) suffix + 1); - continue; - } - want = "BADC"[j]; - if (list[j][suffix] != want) { - char *value = _nc_tic_expand(list[j], TRUE, 0); - _nc_warning("inconsistent suffix for %s, expected %c, have %c\n", - value, want, list[j][suffix]); - } - } - } - } -} - -#define EXPECTED(name) if (!PRESENT(name)) _nc_warning("expected " #name) - -static void -check_cursor(TERMTYPE *tp) -{ - int count; - char *list[4]; - - /* if we have a parameterized form, then the non-parameterized is easy */ - ANDMISSING(parm_down_cursor, cursor_down); - ANDMISSING(parm_up_cursor, cursor_up); - ANDMISSING(parm_left_cursor, cursor_left); - ANDMISSING(parm_right_cursor, cursor_right); - - /* Given any of a set of cursor movement, the whole set should be present. - * Technically this is not true (we could use cursor_address to fill in - * unsupported controls), but it is likely. - */ - count = 0; - if (PRESENT(parm_down_cursor)) { - list[count++] = parm_down_cursor; - } - if (PRESENT(parm_up_cursor)) { - list[count++] = parm_up_cursor; - } - if (PRESENT(parm_left_cursor)) { - list[count++] = parm_left_cursor; - } - if (PRESENT(parm_right_cursor)) { - list[count++] = parm_right_cursor; - } - if (count == 4) { - check_ansi_cursor(list); - } else if (count != 0) { - EXPECTED(parm_down_cursor); - EXPECTED(parm_up_cursor); - EXPECTED(parm_left_cursor); - EXPECTED(parm_right_cursor); - } - - count = 0; - if (PRESENT(cursor_down)) { - list[count++] = cursor_down; - } - if (PRESENT(cursor_up)) { - list[count++] = cursor_up; - } - if (PRESENT(cursor_left)) { - list[count++] = cursor_left; - } - if (PRESENT(cursor_right)) { - list[count++] = cursor_right; - } - if (count == 4) { - check_ansi_cursor(list); - } else if (count != 0) { - count = 0; - if (PRESENT(cursor_down) && strcmp(cursor_down, "\n")) - ++count; - if (PRESENT(cursor_left) && strcmp(cursor_left, "\b")) - ++count; - if (PRESENT(cursor_up) && strlen(cursor_up) > 1) - ++count; - if (PRESENT(cursor_right) && strlen(cursor_right) > 1) - ++count; - if (count) { - EXPECTED(cursor_down); - EXPECTED(cursor_up); - EXPECTED(cursor_left); - EXPECTED(cursor_right); - } - } -} - -#define MAX_KP 5 -/* - * Do a quick sanity-check for vt100-style keypads to see if the 5-key keypad - * is mapped inconsistently. - */ -static void -check_keypad(TERMTYPE *tp) -{ - char show[80]; - - if (VALID_STRING(key_a1) && - VALID_STRING(key_a3) && - VALID_STRING(key_b2) && - VALID_STRING(key_c1) && - VALID_STRING(key_c3)) { - char final[MAX_KP + 1]; - int list[MAX_KP]; - int increase = 0; - int j, k, kk; - int last; - int test; - - final[0] = keypad_final(key_a1); - final[1] = keypad_final(key_a3); - final[2] = keypad_final(key_b2); - final[3] = keypad_final(key_c1); - final[4] = keypad_final(key_c3); - final[5] = '\0'; - - /* special case: legacy coding using 1,2,3,0,. on the bottom */ - assert(strlen(final) <= MAX_KP); - if (!strcmp(final, "qsrpn")) - return; - - list[0] = keypad_index(key_a1); - list[1] = keypad_index(key_a3); - list[2] = keypad_index(key_b2); - list[3] = keypad_index(key_c1); - list[4] = keypad_index(key_c3); - - /* check that they're all vt100 keys */ - for (j = 0; j < MAX_KP; ++j) { - if (list[j] < 0) { - return; - } - } - - /* check if they're all in increasing order */ - for (j = 1; j < MAX_KP; ++j) { - if (list[j] > list[j - 1]) { - ++increase; - } - } - if (increase != (MAX_KP - 1)) { - show[0] = '\0'; - - for (j = 0, last = -1; j < MAX_KP; ++j) { - for (k = 0, kk = -1, test = 100; k < 5; ++k) { - if (list[k] > last && - list[k] < test) { - test = list[k]; - kk = k; - } - } - last = test; - assert(strlen(show) < (MAX_KP * 4)); - switch (kk) { - case 0: - strcat(show, " ka1"); - break; - case 1: - strcat(show, " ka3"); - break; - case 2: - strcat(show, " kb2"); - break; - case 3: - strcat(show, " kc1"); - break; - case 4: - strcat(show, " kc3"); - break; - } - } - - _nc_warning("vt100 keypad order inconsistent: %s", show); - } - - } else if (VALID_STRING(key_a1) || - VALID_STRING(key_a3) || - VALID_STRING(key_b2) || - VALID_STRING(key_c1) || - VALID_STRING(key_c3)) { - show[0] = '\0'; - if (keypad_index(key_a1) >= 0) - strcat(show, " ka1"); - if (keypad_index(key_a3) >= 0) - strcat(show, " ka3"); - if (keypad_index(key_b2) >= 0) - strcat(show, " kb2"); - if (keypad_index(key_c1) >= 0) - strcat(show, " kc1"); - if (keypad_index(key_c3) >= 0) - strcat(show, " kc3"); - if (*show != '\0') - _nc_warning("vt100 keypad map incomplete:%s", show); - } -} - -static void -check_printer(TERMTYPE *tp) -{ - PAIRED(enter_doublewide_mode, exit_doublewide_mode); - PAIRED(enter_italics_mode, exit_italics_mode); - PAIRED(enter_leftward_mode, exit_leftward_mode); - PAIRED(enter_micro_mode, exit_micro_mode); - PAIRED(enter_shadow_mode, exit_shadow_mode); - PAIRED(enter_subscript_mode, exit_subscript_mode); - PAIRED(enter_superscript_mode, exit_superscript_mode); - PAIRED(enter_upward_mode, exit_upward_mode); - - ANDMISSING(start_char_set_def, stop_char_set_def); - - /* if we have a parameterized form, then the non-parameterized is easy */ - ANDMISSING(set_bottom_margin_parm, set_bottom_margin); - ANDMISSING(set_left_margin_parm, set_left_margin); - ANDMISSING(set_right_margin_parm, set_right_margin); - ANDMISSING(set_top_margin_parm, set_top_margin); - - ANDMISSING(parm_down_micro, micro_down); - ANDMISSING(parm_left_micro, micro_left); - ANDMISSING(parm_right_micro, micro_right); - ANDMISSING(parm_up_micro, micro_up); -} - -/* - * Returns the expected number of parameters for the given capability. - */ -static int -expected_params(const char *name) -{ - /* *INDENT-OFF* */ - static const struct { - const char *name; - int count; - } table[] = { - { "S0", 1 }, /* 'screen' extension */ - { "birep", 2 }, - { "chr", 1 }, - { "colornm", 1 }, - { "cpi", 1 }, - { "csnm", 1 }, - { "csr", 2 }, - { "cub", 1 }, - { "cud", 1 }, - { "cuf", 1 }, - { "cup", 2 }, - { "cuu", 1 }, - { "cvr", 1 }, - { "cwin", 5 }, - { "dch", 1 }, - { "defc", 3 }, - { "dial", 1 }, - { "dispc", 1 }, - { "dl", 1 }, - { "ech", 1 }, - { "getm", 1 }, - { "hpa", 1 }, - { "ich", 1 }, - { "il", 1 }, - { "indn", 1 }, - { "initc", 4 }, - { "initp", 7 }, - { "lpi", 1 }, - { "mc5p", 1 }, - { "mrcup", 2 }, - { "mvpa", 1 }, - { "pfkey", 2 }, - { "pfloc", 2 }, - { "pfx", 2 }, - { "pfxl", 3 }, - { "pln", 2 }, - { "qdial", 1 }, - { "rcsd", 1 }, - { "rep", 2 }, - { "rin", 1 }, - { "sclk", 3 }, - { "scp", 1 }, - { "scs", 1 }, - { "scsd", 2 }, - { "setab", 1 }, - { "setaf", 1 }, - { "setb", 1 }, - { "setcolor", 1 }, - { "setf", 1 }, - { "sgr", 9 }, - { "sgr1", 6 }, - { "slength", 1 }, - { "slines", 1 }, - { "smgbp", 1 }, /* 2 if smgtp is not given */ - { "smglp", 1 }, - { "smglr", 2 }, - { "smgrp", 1 }, - { "smgtb", 2 }, - { "smgtp", 1 }, - { "tsl", 1 }, - { "u6", -1 }, - { "vpa", 1 }, - { "wind", 4 }, - { "wingo", 1 }, - }; - /* *INDENT-ON* */ - - unsigned n; - int result = 0; /* function-keys, etc., use none */ - - for (n = 0; n < SIZEOF(table); n++) { - if (!strcmp(name, table[n].name)) { - result = table[n].count; - break; - } - } - - return result; -} - -/* - * Make a quick sanity check for the parameters which are used in the given - * strings. If there are no "%p" tokens, then there should be no other "%" - * markers. - */ -static void -check_params(TERMTYPE *tp, const char *name, char *value) -{ - int expected = expected_params(name); - int actual = 0; - int n; - bool params[10]; - char *s = value; - -#ifdef set_top_margin_parm - if (!strcmp(name, "smgbp") - && set_top_margin_parm == 0) - expected = 2; -#endif - - for (n = 0; n < 10; n++) - params[n] = FALSE; - - while (*s != 0) { - if (*s == '%') { - if (*++s == '\0') { - _nc_warning("expected character after %% in %s", name); - break; - } else if (*s == 'p') { - if (*++s == '\0' || !isdigit((int) *s)) { - _nc_warning("expected digit after %%p in %s", name); - return; - } else { - n = (*s - '0'); - if (n > actual) - actual = n; - params[n] = TRUE; - } - } - } - s++; - } - - if (params[0]) { - _nc_warning("%s refers to parameter 0 (%%p0), which is not allowed", name); - } - if (value == set_attributes || expected < 0) { - ; - } else if (expected != actual) { - _nc_warning("%s uses %d parameters, expected %d", name, - actual, expected); - for (n = 1; n < actual; n++) { - if (!params[n]) - _nc_warning("%s omits parameter %d", name, n); - } - } -} - -static char * -skip_delay(char *s) -{ - while (*s == '/' || isdigit(UChar(*s))) - ++s; - return s; -} - -/* - * Skip a delay altogether, e.g., when comparing a simple string to sgr, - * the latter may have a worst-case delay on the end. - */ -static char * -ignore_delays(char *s) -{ - int delaying = 0; - - do { - switch (*s) { - case '$': - if (delaying == 0) - delaying = 1; - break; - case '<': - if (delaying == 1) - delaying = 2; - break; - case '\0': - delaying = 0; - break; - default: - if (delaying) { - s = skip_delay(s); - if (*s == '>') - ++s; - delaying = 0; - } - break; - } - if (delaying) - ++s; - } while (delaying); - return s; -} - -/* - * An sgr string may contain several settings other than the one we're - * interested in, essentially sgr0 + rmacs + whatever. As long as the - * "whatever" is contained in the sgr string, that is close enough for our - * sanity check. - */ -static bool -similar_sgr(int num, char *a, char *b) -{ - static const char *names[] = - { - "none" - ,"standout" - ,"underline" - ,"reverse" - ,"blink" - ,"dim" - ,"bold" - ,"invis" - ,"protect" - ,"altcharset" - }; - char *base_a = a; - char *base_b = b; - int delaying = 0; - - while (*b != 0) { - while (*a != *b) { - if (*a == 0) { - if (b[0] == '$' - && b[1] == '<') { - _nc_warning("Did not find delay %s", _nc_visbuf(b)); - } else { - _nc_warning("checking sgr(%s) %s\n\tcompare to %s\n\tunmatched %s", - names[num], _nc_visbuf2(1, base_a), - _nc_visbuf2(2, base_b), - _nc_visbuf2(3, b)); - } - return FALSE; - } else if (delaying) { - a = skip_delay(a); - b = skip_delay(b); - } else if ((*b == '0' || (*b == ';')) && *a == 'm') { - b++; - } else { - a++; - } - } - switch (*a) { - case '$': - if (delaying == 0) - delaying = 1; - break; - case '<': - if (delaying == 1) - delaying = 2; - break; - default: - delaying = 0; - break; - } - a++; - b++; - } - /* ignore delays on the end of the string */ - a = ignore_delays(a); - return ((num != 0) || (*a == 0)); -} - -static char * -check_sgr(TERMTYPE *tp, char *zero, int num, char *cap, const char *name) -{ - char *test; - - _nc_tparm_err = 0; - test = TPARM_9(set_attributes, - num == 1, - num == 2, - num == 3, - num == 4, - num == 5, - num == 6, - num == 7, - num == 8, - num == 9); - if (test != 0) { - if (PRESENT(cap)) { - if (!similar_sgr(num, test, cap)) { - _nc_warning("%s differs from sgr(%d)\n\t%s=%s\n\tsgr(%d)=%s", - name, num, - name, _nc_visbuf2(1, cap), - num, _nc_visbuf2(2, test)); - } - } else if (_nc_capcmp(test, zero)) { - _nc_warning("sgr(%d) present, but not %s", num, name); - } - } else if (PRESENT(cap)) { - _nc_warning("sgr(%d) missing, but %s present", num, name); - } - if (_nc_tparm_err) - _nc_warning("stack error in sgr(%d) string", num); - return test; -} - -#define CHECK_SGR(num,name) check_sgr(tp, zero, num, name, #name) - -#ifdef TRACE -/* - * If tic is compiled with TRACE, we'll be able to see the output from the - * DEBUG() macro. But since it doesn't use traceon(), it always goes to - * the standard error. Use this function to make it simpler to follow the - * resulting debug traces. - */ -static void -show_where(unsigned level) -{ - if (_nc_tracing >= DEBUG_LEVEL(level)) { - char my_name[256]; - _nc_get_type(my_name); - _tracef("\"%s\", line %d, '%s'", - _nc_get_source(), - _nc_curr_line, my_name); - } -} - -#else -#define show_where(level) /* nothing */ -#endif - -/* other sanity-checks (things that we don't want in the normal - * logic that reads a terminfo entry) - */ -static void -check_termtype(TERMTYPE *tp, bool literal) -{ - bool conflict = FALSE; - unsigned j, k; - char fkeys[STRCOUNT]; - - /* - * A terminal entry may contain more than one keycode assigned to - * a given string (e.g., KEY_END and KEY_LL). But curses will only - * return one (the last one assigned). - */ - if (!(_nc_syntax == SYN_TERMCAP && capdump)) { - memset(fkeys, 0, sizeof(fkeys)); - for (j = 0; _nc_tinfo_fkeys[j].code; j++) { - char *a = tp->Strings[_nc_tinfo_fkeys[j].offset]; - bool first = TRUE; - if (!VALID_STRING(a)) - continue; - for (k = j + 1; _nc_tinfo_fkeys[k].code; k++) { - char *b = tp->Strings[_nc_tinfo_fkeys[k].offset]; - if (!VALID_STRING(b) - || fkeys[k]) - continue; - if (!_nc_capcmp(a, b)) { - fkeys[j] = 1; - fkeys[k] = 1; - if (first) { - if (!conflict) { - _nc_warning("Conflicting key definitions (using the last)"); - conflict = TRUE; - } - fprintf(stderr, "... %s is the same as %s", - keyname((int) _nc_tinfo_fkeys[j].code), - keyname((int) _nc_tinfo_fkeys[k].code)); - first = FALSE; - } else { - fprintf(stderr, ", %s", - keyname((int) _nc_tinfo_fkeys[k].code)); - } - } - } - if (!first) - fprintf(stderr, "\n"); - } - } - - for (j = 0; j < NUM_STRINGS(tp); j++) { - char *a = tp->Strings[j]; - if (VALID_STRING(a)) - check_params(tp, ExtStrname(tp, j, strnames), a); - } - - check_acs(tp); - check_colors(tp); - check_cursor(tp); - check_keypad(tp); - check_printer(tp); - - /* - * These may be mismatched because the terminal description relies on - * restoring the cursor visibility by resetting it. - */ - ANDMISSING(cursor_invisible, cursor_normal); - ANDMISSING(cursor_visible, cursor_normal); - - if (PRESENT(cursor_visible) && PRESENT(cursor_normal) - && !_nc_capcmp(cursor_visible, cursor_normal)) - _nc_warning("cursor_visible is same as cursor_normal"); - - /* - * From XSI & O'Reilly, we gather that sc/rc are required if csr is - * given, because the cursor position after the scrolling operation is - * performed is undefined. - */ - ANDMISSING(change_scroll_region, save_cursor); - ANDMISSING(change_scroll_region, restore_cursor); - - /* - * If we can clear tabs, we should be able to initialize them. - */ - ANDMISSING(clear_all_tabs, set_tab); - - if (PRESENT(set_attributes)) { - char *zero = 0; - - _nc_tparm_err = 0; - if (PRESENT(exit_attribute_mode)) { - zero = strdup(CHECK_SGR(0, exit_attribute_mode)); - } else { - zero = strdup(TPARM_9(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, 0)); - } - if (_nc_tparm_err) - _nc_warning("stack error in sgr(0) string"); - - if (zero != 0) { - CHECK_SGR(1, enter_standout_mode); - CHECK_SGR(2, enter_underline_mode); - CHECK_SGR(3, enter_reverse_mode); - CHECK_SGR(4, enter_blink_mode); - CHECK_SGR(5, enter_dim_mode); - CHECK_SGR(6, enter_bold_mode); - CHECK_SGR(7, enter_secure_mode); - CHECK_SGR(8, enter_protected_mode); - CHECK_SGR(9, enter_alt_charset_mode); - free(zero); - } else { - _nc_warning("sgr(0) did not return a value"); - } - } else if (PRESENT(exit_attribute_mode) && - set_attributes != CANCELLED_STRING) { - if (_nc_syntax == SYN_TERMINFO) - _nc_warning("missing sgr string"); - } - - if (PRESENT(exit_attribute_mode)) { - char *check_sgr0 = _nc_trim_sgr0(tp); - - if (check_sgr0 == 0 || *check_sgr0 == '\0') { - _nc_warning("trimmed sgr0 is empty"); - } else { - show_where(2); - if (check_sgr0 != exit_attribute_mode) { - DEBUG(2, - ("will trim sgr0\n\toriginal sgr0=%s\n\ttrimmed sgr0=%s", - _nc_visbuf2(1, exit_attribute_mode), - _nc_visbuf2(2, check_sgr0))); - free(check_sgr0); - } else { - DEBUG(2, - ("will not trim sgr0\n\toriginal sgr0=%s", - _nc_visbuf(exit_attribute_mode))); - } - } - } -#ifdef TRACE - show_where(2); - if (!auto_right_margin) { - DEBUG(2, - ("can write to lower-right directly")); - } else if (PRESENT(enter_am_mode) && PRESENT(exit_am_mode)) { - DEBUG(2, - ("can write to lower-right by suppressing automargin")); - } else if ((PRESENT(enter_insert_mode) && PRESENT(exit_insert_mode)) - || PRESENT(insert_character) || PRESENT(parm_ich)) { - DEBUG(2, - ("can write to lower-right by using inserts")); - } else { - DEBUG(2, - ("cannot write to lower-right")); - } -#endif - - /* - * Some standard applications (e.g., vi) and some non-curses - * applications (e.g., jove) get confused if we have both ich1 and - * smir/rmir. Let's be nice and warn about that, too, even though - * ncurses handles it. - */ - if ((PRESENT(enter_insert_mode) || PRESENT(exit_insert_mode)) - && PRESENT(parm_ich)) { - _nc_warning("non-curses applications may be confused by ich1 with smir/rmir"); - } - - /* - * Finally, do the non-verbose checks - */ - if (save_check_termtype != 0) - save_check_termtype(tp, literal); -} diff --git a/deps/ncurses-5.9/progs/toe b/deps/ncurses-5.9/progs/toe deleted file mode 100755 index 8319eec..0000000 Binary files a/deps/ncurses-5.9/progs/toe and /dev/null differ diff --git a/deps/ncurses-5.9/progs/toe.c b/deps/ncurses-5.9/progs/toe.c deleted file mode 100644 index 6f45992..0000000 --- a/deps/ncurses-5.9/progs/toe.c +++ /dev/null @@ -1,525 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * toe.c --- table of entries report generator - */ - -#include - -#include - -#if USE_HASHED_DB -#include -#endif - -MODULE_ID("$Id: toe.c,v 1.52 2010/05/01 22:04:08 tom Exp $") - -#define isDotname(name) (!strcmp(name, ".") || !strcmp(name, "..")) - -const char *_nc_progname; - -#if NO_LEAKS -#undef ExitProgram -static void ExitProgram(int code) GCC_NORETURN; -static void -ExitProgram(int code) -{ - _nc_free_entries(_nc_head); - _nc_free_tic(code); -} -#endif - -static void -failed(const char *msg) -{ - perror(msg); - ExitProgram(EXIT_FAILURE); -} - -#if USE_HASHED_DB -static bool -make_db_name(char *dst, const char *src, unsigned limit) -{ - static const char suffix[] = DBM_SUFFIX; - - bool result = FALSE; - unsigned lens = sizeof(suffix) - 1; - unsigned size = strlen(src); - unsigned need = lens + size; - - if (need <= limit) { - if (size >= lens - && !strcmp(src + size - lens, suffix)) - (void) strcpy(dst, src); - else - (void) sprintf(dst, "%s%s", src, suffix); - result = TRUE; - } - return result; -} -#endif - -static bool -is_database(const char *path) -{ - bool result = FALSE; -#if USE_DATABASE - if (_nc_is_dir_path(path) && access(path, R_OK | X_OK) == 0) { - result = TRUE; - } -#endif -#if USE_TERMCAP - if (_nc_is_file_path(path) && access(path, R_OK) == 0) { - result = TRUE; - } -#endif -#if USE_HASHED_DB - if (!result) { - char filename[PATH_MAX]; - if (_nc_is_file_path(path) && access(path, R_OK) == 0) { - result = TRUE; - } else if (make_db_name(filename, path, sizeof(filename))) { - if (_nc_is_file_path(filename) && access(filename, R_OK) == 0) { - result = TRUE; - } - } - } -#endif - return result; -} - -static void -deschook(const char *cn, TERMTYPE *tp) -/* display a description for the type */ -{ - const char *desc; - - if ((desc = strrchr(tp->term_names, '|')) == 0 || *++desc == '\0') - desc = "(No description)"; - - (void) printf("%-10s\t%s\n", cn, desc); -} - -#if USE_TERMCAP -static void -show_termcap(char *buffer, - void (*hook) (const char *, TERMTYPE *tp)) -{ - TERMTYPE data; - char *next = strchr(buffer, ':'); - char *last; - char *list = buffer; - - if (next) - *next = '\0'; - - last = strrchr(buffer, '|'); - if (last) - ++last; - - data.term_names = strdup(buffer); - while ((next = strtok(list, "|")) != 0) { - if (next != last) - hook(next, &data); - list = 0; - } - free(data.term_names); -} -#endif - -static int -typelist(int eargc, char *eargv[], - bool verbosity, - void (*hook) (const char *, TERMTYPE *tp)) -/* apply a function to each entry in given terminfo directories */ -{ - int i; - - for (i = 0; i < eargc; i++) { -#if USE_DATABASE - if (_nc_is_dir_path(eargv[i])) { - char *cwd_buf = 0; - DIR *termdir; - DIRENT *subdir; - - if ((termdir = opendir(eargv[i])) == 0) { - (void) fflush(stdout); - (void) fprintf(stderr, - "%s: can't open terminfo directory %s\n", - _nc_progname, eargv[i]); - return (EXIT_FAILURE); - } else if (verbosity) - (void) printf("#\n#%s:\n#\n", eargv[i]); - - while ((subdir = readdir(termdir)) != 0) { - size_t len = NAMLEN(subdir); - size_t cwd_len = len + strlen(eargv[i]) + 3; - char name_1[PATH_MAX]; - DIR *entrydir; - DIRENT *entry; - - cwd_buf = typeRealloc(char, cwd_len, cwd_buf); - if (cwd_buf == 0) - failed("realloc cwd_buf"); - - assert(cwd_buf != 0); - - strncpy(name_1, subdir->d_name, len)[len] = '\0'; - if (isDotname(name_1)) - continue; - - (void) sprintf(cwd_buf, "%s/%.*s/", eargv[i], (int) len, name_1); - if (chdir(cwd_buf) != 0) - continue; - - entrydir = opendir("."); - if (entrydir == 0) { - perror(cwd_buf); - continue; - } - while ((entry = readdir(entrydir)) != 0) { - char name_2[PATH_MAX]; - TERMTYPE lterm; - char *cn; - int status; - - len = NAMLEN(entry); - strncpy(name_2, entry->d_name, len)[len] = '\0'; - if (isDotname(name_2) || !_nc_is_file_path(name_2)) - continue; - - status = _nc_read_file_entry(name_2, <erm); - if (status <= 0) { - (void) fflush(stdout); - (void) fprintf(stderr, - "%s: couldn't open terminfo file %s.\n", - _nc_progname, name_2); - return (EXIT_FAILURE); - } - - /* only visit things once, by primary name */ - cn = _nc_first_name(lterm.term_names); - if (!strcmp(cn, name_2)) { - /* apply the selected hook function */ - (*hook) (cn, <erm); - } - _nc_free_termtype(<erm); - } - closedir(entrydir); - } - closedir(termdir); - if (cwd_buf != 0) - free(cwd_buf); - } -#if USE_HASHED_DB - else { - DB *capdbp; - char filename[PATH_MAX]; - - if (make_db_name(filename, eargv[i], sizeof(filename))) { - if ((capdbp = _nc_db_open(filename, FALSE)) != 0) { - DBT key, data; - int code; - - code = _nc_db_first(capdbp, &key, &data); - while (code == 0) { - TERMTYPE lterm; - int used; - char *have; - char *cn; - - if (_nc_db_have_data(&key, &data, &have, &used)) { - if (_nc_read_termtype(<erm, have, used) > 0) { - /* only visit things once, by primary name */ - cn = _nc_first_name(lterm.term_names); - /* apply the selected hook function */ - (*hook) (cn, <erm); - _nc_free_termtype(<erm); - } - } - code = _nc_db_next(capdbp, &key, &data); - } - - _nc_db_close(capdbp); - } - } - } -#endif -#endif -#if USE_TERMCAP -#if HAVE_BSD_CGETENT - char *db_array[2]; - char *buffer = 0; - - if (verbosity) - (void) printf("#\n#%s:\n#\n", eargv[i]); - - db_array[0] = eargv[i]; - db_array[1] = 0; - - if (cgetfirst(&buffer, db_array)) { - show_termcap(buffer, hook); - free(buffer); - while (cgetnext(&buffer, db_array)) { - show_termcap(buffer, hook); - free(buffer); - } - } - cgetclose(); -#else - /* scan termcap text-file only */ - if (_nc_is_file_path(eargv[i])) { - char buffer[2048]; - FILE *fp; - - if ((fp = fopen(eargv[i], "r")) != 0) { - while (fgets(buffer, sizeof(buffer), fp) != 0) { - if (*buffer == '#') - continue; - if (isspace(*buffer)) - continue; - show_termcap(buffer, hook); - } - fclose(fp); - } - } -#endif -#endif - } - - return (EXIT_SUCCESS); -} - -static void -usage(void) -{ - (void) fprintf(stderr, "usage: %s [-ahuUV] [-v n] [file...]\n", _nc_progname); - ExitProgram(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - bool all_dirs = FALSE; - bool direct_dependencies = FALSE; - bool invert_dependencies = FALSE; - bool header = FALSE; - char *report_file = 0; - unsigned i; - int code; - int this_opt, last_opt = '?'; - int v_opt = 0; - - _nc_progname = _nc_rootname(argv[0]); - - while ((this_opt = getopt(argc, argv, "0123456789ahu:vU:V")) != -1) { - /* handle optional parameter */ - if (isdigit(this_opt)) { - switch (last_opt) { - case 'v': - v_opt = (this_opt - '0'); - break; - default: - if (isdigit(last_opt)) - v_opt *= 10; - else - v_opt = 0; - v_opt += (this_opt - '0'); - last_opt = this_opt; - } - continue; - } - switch (this_opt) { - case 'a': - all_dirs = TRUE; - break; - case 'h': - header = TRUE; - break; - case 'u': - direct_dependencies = TRUE; - report_file = optarg; - break; - case 'v': - v_opt = 1; - break; - case 'U': - invert_dependencies = TRUE; - report_file = optarg; - break; - case 'V': - puts(curses_version()); - ExitProgram(EXIT_SUCCESS); - default: - usage(); - } - } - set_trace_level(v_opt); - - if (report_file != 0) { - if (freopen(report_file, "r", stdin) == 0) { - (void) fflush(stdout); - fprintf(stderr, "%s: can't open %s\n", _nc_progname, report_file); - ExitProgram(EXIT_FAILURE); - } - - /* parse entries out of the source file */ - _nc_set_source(report_file); - _nc_read_entry_source(stdin, 0, FALSE, FALSE, NULLHOOK); - } - - /* maybe we want a direct-dependency listing? */ - if (direct_dependencies) { - ENTRY *qp; - - for_entry_list(qp) { - if (qp->nuses) { - unsigned j; - - (void) printf("%s:", _nc_first_name(qp->tterm.term_names)); - for (j = 0; j < qp->nuses; j++) - (void) printf(" %s", qp->uses[j].name); - putchar('\n'); - } - } - - ExitProgram(EXIT_SUCCESS); - } - - /* maybe we want a reverse-dependency listing? */ - if (invert_dependencies) { - ENTRY *qp, *rp; - int matchcount; - - for_entry_list(qp) { - matchcount = 0; - for_entry_list(rp) { - if (rp->nuses == 0) - continue; - - for (i = 0; i < rp->nuses; i++) - if (_nc_name_match(qp->tterm.term_names, - rp->uses[i].name, "|")) { - if (matchcount++ == 0) - (void) printf("%s:", - _nc_first_name(qp->tterm.term_names)); - (void) printf(" %s", - _nc_first_name(rp->tterm.term_names)); - } - } - if (matchcount) - putchar('\n'); - } - - ExitProgram(EXIT_SUCCESS); - } - - /* - * If we get this far, user wants a simple terminal type listing. - */ - if (optind < argc) { - code = typelist(argc - optind, argv + optind, header, deschook); - } else if (all_dirs) { - DBDIRS state; - int offset; - int pass; - const char *path; - char **eargv = 0; - - code = EXIT_FAILURE; - for (pass = 0; pass < 2; ++pass) { - unsigned count = 0; - - _nc_first_db(&state, &offset); - while ((path = _nc_next_db(&state, &offset)) != 0) { - if (!is_database(path)) { - ; - } else if (eargv != 0) { - unsigned n; - int found = FALSE; - - /* eliminate duplicates */ - for (n = 0; n < count; ++n) { - if (!strcmp(path, eargv[n])) { - found = TRUE; - break; - } - } - if (!found) { - eargv[count] = strdup(path); - ++count; - } - } else { - ++count; - } - } - if (!pass) { - eargv = typeCalloc(char *, count + 1); - if (eargv == 0) - failed("realloc eargv"); - - assert(eargv != 0); - } else { - code = typelist((int) count, eargv, header, deschook); - while (count-- > 0) - free(eargv[count]); - free(eargv); - } - } - } else { - DBDIRS state; - int offset; - const char *path; - char *eargv[3]; - int count = 0; - - _nc_first_db(&state, &offset); - while ((path = _nc_next_db(&state, &offset)) != 0) { - if (is_database(path)) { - eargv[count++] = strdup(path); - break; - } - } - eargv[count] = 0; - - code = typelist(count, eargv, header, deschook); - - while (count-- > 0) - free(eargv[count]); - } - _nc_last_db(); - - ExitProgram(code); -} diff --git a/deps/ncurses-5.9/progs/tput b/deps/ncurses-5.9/progs/tput deleted file mode 100755 index b1046c4..0000000 Binary files a/deps/ncurses-5.9/progs/tput and /dev/null differ diff --git a/deps/ncurses-5.9/progs/tput.c b/deps/ncurses-5.9/progs/tput.c deleted file mode 100644 index 2e67cfe..0000000 --- a/deps/ncurses-5.9/progs/tput.c +++ /dev/null @@ -1,447 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - ****************************************************************************/ - -/* - * tput.c -- shellscript access to terminal capabilities - * - * by Eric S. Raymond , portions based on code from - * Ross Ridge's mytinfo package. - */ - -#define USE_LIBTINFO -#include - -#if !PURE_TERMINFO -#include -#include -#endif -#include - -MODULE_ID("$Id: tput.c,v 1.46 2010/01/09 16:53:24 tom Exp $") - -#define PUTS(s) fputs(s, stdout) -#define PUTCHAR(c) putchar(c) -#define FLUSH fflush(stdout) - -typedef enum { - Numbers = 0 - ,Num_Str - ,Num_Str_Str -} TParams; - -static char *prg_name; -static bool is_init = FALSE; -static bool is_reset = FALSE; - -static void -quit(int status, const char *fmt,...) -{ - va_list argp; - - va_start(argp, fmt); - fprintf(stderr, "%s: ", prg_name); - vfprintf(stderr, fmt, argp); - fprintf(stderr, "\n"); - va_end(argp); - ExitProgram(status); -} - -static void -usage(void) -{ - fprintf(stderr, "usage: %s [-V] [-S] [-T term] capname\n", prg_name); - ExitProgram(EXIT_FAILURE); -} - -static void -check_aliases(const char *name) -{ - is_init = same_program(name, PROG_INIT); - is_reset = same_program(name, PROG_RESET); -} - -/* - * Lookup the type of call we should make to tparm(). This ignores the actual - * terminfo capability (bad, because it is not extensible), but makes this - * code portable to platforms where sizeof(int) != sizeof(char *). - * - * FIXME: If we want extensibility, analyze the capability string as we do - * in tparm() to decide how to parse the varargs list. - */ -static TParams -tparm_type(const char *name) -{ -#define TD(code, longname, ti, tc) {code,longname},{code,ti},{code,tc} - TParams result = Numbers; - /* *INDENT-OFF* */ - static const struct { - TParams code; - const char *name; - } table[] = { - TD(Num_Str, "pkey_key", "pfkey", "pk"), - TD(Num_Str, "pkey_local", "pfloc", "pl"), - TD(Num_Str, "pkey_xmit", "pfx", "px"), - TD(Num_Str, "plab_norm", "pln", "pn"), - TD(Num_Str_Str, "pkey_plab", "pfxl", "xl"), - }; - /* *INDENT-ON* */ - - unsigned n; - for (n = 0; n < SIZEOF(table); n++) { - if (!strcmp(name, table[n].name)) { - result = table[n].code; - break; - } - } - return result; -} - -static int -exit_code(int token, int value) -{ - int result = 99; - - switch (token) { - case BOOLEAN: - result = !value; /* TRUE=0, FALSE=1 */ - break; - case NUMBER: - result = 0; /* always zero */ - break; - case STRING: - result = value; /* 0=normal, 1=missing */ - break; - } - return result; -} - -static int -tput(int argc, char *argv[]) -{ - NCURSES_CONST char *name; - char *s; - int i, j, c; - int status; - FILE *f; -#if !PURE_TERMINFO - bool termcap = FALSE; -#endif - - if ((name = argv[0]) == 0) - name = ""; - check_aliases(name); - if (is_reset || is_init) { - if (init_prog != 0) { - system(init_prog); - } - FLUSH; - - if (is_reset && reset_1string != 0) { - PUTS(reset_1string); - } else if (init_1string != 0) { - PUTS(init_1string); - } - FLUSH; - - if (is_reset && reset_2string != 0) { - PUTS(reset_2string); - } else if (init_2string != 0) { - PUTS(init_2string); - } - FLUSH; - -#ifdef set_lr_margin - if (set_lr_margin != 0) { - PUTS(TPARM_2(set_lr_margin, 0, columns - 1)); - } else -#endif -#ifdef set_left_margin_parm - if (set_left_margin_parm != 0 - && set_right_margin_parm != 0) { - PUTS(TPARM_1(set_left_margin_parm, 0)); - PUTS(TPARM_1(set_right_margin_parm, columns - 1)); - } else -#endif - if (clear_margins != 0 - && set_left_margin != 0 - && set_right_margin != 0) { - PUTS(clear_margins); - if (carriage_return != 0) { - PUTS(carriage_return); - } else { - PUTCHAR('\r'); - } - PUTS(set_left_margin); - if (parm_right_cursor) { - PUTS(TPARM_1(parm_right_cursor, columns - 1)); - } else { - for (i = 0; i < columns - 1; i++) { - PUTCHAR(' '); - } - } - PUTS(set_right_margin); - if (carriage_return != 0) { - PUTS(carriage_return); - } else { - PUTCHAR('\r'); - } - } - FLUSH; - - if (init_tabs != 8) { - if (clear_all_tabs != 0 && set_tab != 0) { - for (i = 0; i < columns - 1; i += 8) { - if (parm_right_cursor) { - PUTS(TPARM_1(parm_right_cursor, 8)); - } else { - for (j = 0; j < 8; j++) - PUTCHAR(' '); - } - PUTS(set_tab); - } - FLUSH; - } - } - - if (is_reset && reset_file != 0) { - f = fopen(reset_file, "r"); - if (f == 0) { - quit(4 + errno, "Can't open reset_file: '%s'", reset_file); - } - while ((c = fgetc(f)) != EOF) { - PUTCHAR(c); - } - fclose(f); - } else if (init_file != 0) { - f = fopen(init_file, "r"); - if (f == 0) { - quit(4 + errno, "Can't open init_file: '%s'", init_file); - } - while ((c = fgetc(f)) != EOF) { - PUTCHAR(c); - } - fclose(f); - } - FLUSH; - - if (is_reset && reset_3string != 0) { - PUTS(reset_3string); - } else if (init_3string != 0) { - PUTS(init_3string); - } - FLUSH; - return 0; - } - - if (strcmp(name, "longname") == 0) { - PUTS(longname()); - return 0; - } -#if !PURE_TERMINFO - retry: -#endif - if ((status = tigetflag(name)) != -1) { - return exit_code(BOOLEAN, status); - } else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) { - (void) printf("%d\n", status); - return exit_code(NUMBER, 0); - } else if ((s = tigetstr(name)) == CANCELLED_STRING) { -#if !PURE_TERMINFO - if (!termcap) { - const struct name_table_entry *np; - - termcap = TRUE; - if ((np = _nc_find_entry(name, _nc_get_hash_table(termcap))) != 0) { - switch (np->nte_type) { - case BOOLEAN: - if (bool_from_termcap[np->nte_index]) - name = boolnames[np->nte_index]; - break; - - case NUMBER: - if (num_from_termcap[np->nte_index]) - name = numnames[np->nte_index]; - break; - - case STRING: - if (str_from_termcap[np->nte_index]) - name = strnames[np->nte_index]; - break; - } - goto retry; - } - } -#endif - quit(4, "unknown terminfo capability '%s'", name); - } else if (s != ABSENT_STRING) { - if (argc > 1) { - int k; - int popcount; - long numbers[1 + NUM_PARM]; - char *strings[1 + NUM_PARM]; - char *p_is_s[NUM_PARM]; - - /* Nasty hack time. The tparm function needs to see numeric - * parameters as numbers, not as pointers to their string - * representations - */ - - for (k = 1; k < argc; k++) { - char *tmp = 0; - strings[k] = argv[k]; - numbers[k] = strtol(argv[k], &tmp, 0); - if (tmp == 0 || *tmp != 0) - numbers[k] = 0; - } - for (k = argc; k <= NUM_PARM; k++) { - numbers[k] = 0; - strings[k] = 0; - } - - switch (tparm_type(name)) { - case Num_Str: - s = TPARM_2(s, numbers[1], strings[2]); - break; - case Num_Str_Str: - s = TPARM_3(s, numbers[1], strings[2], strings[3]); - break; - case Numbers: - default: - (void) _nc_tparm_analyze(s, p_is_s, &popcount); -#define myParam(n) (p_is_s[n - 1] != 0 ? ((long) strings[n]) : numbers[n]) - s = TPARM_9(s, - myParam(1), - myParam(2), - myParam(3), - myParam(4), - myParam(5), - myParam(6), - myParam(7), - myParam(8), - myParam(9)); - break; - } - } - - /* use putp() in order to perform padding */ - putp(s); - return exit_code(STRING, 0); - } - return exit_code(STRING, 1); -} - -int -main(int argc, char **argv) -{ - char *term; - int errret; - bool cmdline = TRUE; - int c; - char buf[BUFSIZ]; - int result = 0; - - check_aliases(prg_name = _nc_rootname(argv[0])); - - term = getenv("TERM"); - - while ((c = getopt(argc, argv, "ST:V")) != -1) { - switch (c) { - case 'S': - cmdline = FALSE; - break; - case 'T': - use_env(FALSE); - term = optarg; - break; - case 'V': - puts(curses_version()); - ExitProgram(EXIT_SUCCESS); - default: - usage(); - /* NOTREACHED */ - } - } - - /* - * Modify the argument list to omit the options we processed. - */ - if (is_reset || is_init) { - if (optind-- < argc) { - argc -= optind; - argv += optind; - } - argv[0] = prg_name; - } else { - argc -= optind; - argv += optind; - } - - if (term == 0 || *term == '\0') - quit(2, "No value for $TERM and no -T specified"); - - if (setupterm(term, STDOUT_FILENO, &errret) != OK && errret <= 0) - quit(3, "unknown terminal \"%s\"", term); - - if (cmdline) { - if ((argc <= 0) && !is_reset && !is_init) - usage(); - ExitProgram(tput(argc, argv)); - } - - while (fgets(buf, sizeof(buf), stdin) != 0) { - char *argvec[16]; /* command, 9 parms, null, & slop */ - int argnum = 0; - char *cp; - - /* crack the argument list into a dope vector */ - for (cp = buf; *cp; cp++) { - if (isspace(UChar(*cp))) { - *cp = '\0'; - } else if (cp == buf || cp[-1] == 0) { - argvec[argnum++] = cp; - if (argnum >= (int) SIZEOF(argvec) - 1) - break; - } - } - argvec[argnum] = 0; - - if (argnum != 0 - && tput(argnum, argvec) != 0) { - if (result == 0) - result = 4; /* will return value >4 */ - ++result; - } - } - - ExitProgram(result); -} diff --git a/deps/ncurses-5.9/progs/transform.h b/deps/ncurses-5.9/progs/transform.h deleted file mode 100644 index 708938f..0000000 --- a/deps/ncurses-5.9/progs/transform.h +++ /dev/null @@ -1,9 +0,0 @@ -#ifndef __TRANSFORM_H -#define __TRANSFORM_H 1 -#include -extern bool same_program(const char *, const char *); -#define PROG_CAPTOINFO "captoinfo" -#define PROG_INFOTOCAP "infotocap" -#define PROG_RESET "reset" -#define PROG_INIT "init" -#endif /* __TRANSFORM_H */ diff --git a/deps/ncurses-5.9/progs/tset b/deps/ncurses-5.9/progs/tset deleted file mode 100755 index cf43969..0000000 Binary files a/deps/ncurses-5.9/progs/tset and /dev/null differ diff --git a/deps/ncurses-5.9/progs/tset.c b/deps/ncurses-5.9/progs/tset.c deleted file mode 100644 index 084e41d..0000000 --- a/deps/ncurses-5.9/progs/tset.c +++ /dev/null @@ -1,1349 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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: Zeyd M. Ben-Halim 1992,1995 * - * and: Eric S. Raymond * - * and: Thomas E. Dickey 1996-on * - ****************************************************************************/ - -/* - * Notes: - * The initial adaptation from 4.4BSD Lite sources in September 1995 used 686 - * lines from that version, and made changes/additions for 150 lines. There - * was no reformatting, so with/without ignoring whitespace, the amount of - * change is the same. - * - * Comparing with current (2009) source, excluding this comment: - * a) 209 lines match identically to the 4.4BSD Lite sources, with 771 lines - * changed/added. - * a) Ignoring whitespace, the current version still uses 516 lines from the - * 4.4BSD Lite sources, with 402 lines changed/added. - * - * Raymond's original comment on this follows... - */ - -/* - * tset.c - terminal initialization utility - * - * This code was mostly swiped from 4.4BSD tset, with some obsolescent - * cruft removed and substantial portions rewritten. A Regents of the - * University of California copyright applies to some portions of the - * code, and is reproduced below: - */ -/*- - * Copyright (c) 1980, 1991, 1993 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. Neither the name of the University nor the names of its contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - */ - -#define USE_LIBTINFO -#define __INTERNAL_CAPS_VISIBLE /* we need to see has_hardware_tabs */ -#include - -#include -#include -#include -#include - -#if HAVE_GETTTYNAM && HAVE_TTYENT_H -#include -#endif -#ifdef NeXT -char *ttyname(int fd); -#endif - -#if HAVE_SIZECHANGE -# if !defined(sun) || !TERMIOS -# if HAVE_SYS_IOCTL_H -# include -# endif -# endif -#endif - -#if NEED_PTEM_H -/* they neglected to define struct winsize in termios.h -- it's only - in termio.h */ -#include -#include -#endif - -#include -#include - -MODULE_ID("$Id: tset.c,v 1.82 2010/05/01 21:42:46 tom Exp $") - -/* - * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, - * Solaris, IRIX) define TIOCGWINSZ and struct winsize. - */ -#ifdef TIOCGSIZE -# define IOCTL_GET_WINSIZE TIOCGSIZE -# define IOCTL_SET_WINSIZE TIOCSSIZE -# define STRUCT_WINSIZE struct ttysize -# define WINSIZE_ROWS(n) n.ts_lines -# define WINSIZE_COLS(n) n.ts_cols -#else -# ifdef TIOCGWINSZ -# define IOCTL_GET_WINSIZE TIOCGWINSZ -# define IOCTL_SET_WINSIZE TIOCSWINSZ -# define STRUCT_WINSIZE struct winsize -# define WINSIZE_ROWS(n) n.ws_row -# define WINSIZE_COLS(n) n.ws_col -# endif -#endif - -#ifndef environ -extern char **environ; -#endif - -#undef CTRL -#define CTRL(x) ((x) & 0x1f) - -const char *_nc_progname = "tset"; - -static TTY mode, oldmode, original; - -static bool opt_c; /* set control-chars */ -static bool opt_w; /* set window-size */ - -static bool can_restore = FALSE; -static bool isreset = FALSE; /* invoked as reset */ -static int terasechar = -1; /* new erase character */ -static int intrchar = -1; /* new interrupt character */ -static int tkillchar = -1; /* new kill character */ -static int tlines, tcolumns; /* window size */ - -#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c)) - -static int -CaselessCmp(const char *a, const char *b) -{ /* strcasecmp isn't portable */ - while (*a && *b) { - int cmp = LOWERCASE(*a) - LOWERCASE(*b); - if (cmp != 0) - break; - a++, b++; - } - return LOWERCASE(*a) - LOWERCASE(*b); -} - -static void -exit_error(void) -{ - if (can_restore) - SET_TTY(STDERR_FILENO, &original); - (void) fprintf(stderr, "\n"); - fflush(stderr); - ExitProgram(EXIT_FAILURE); - /* NOTREACHED */ -} - -static void -err(const char *fmt,...) -{ - va_list ap; - va_start(ap, fmt); - (void) fprintf(stderr, "%s: ", _nc_progname); - (void) vfprintf(stderr, fmt, ap); - va_end(ap); - exit_error(); - /* NOTREACHED */ -} - -static void -failed(const char *msg) -{ - char temp[BUFSIZ]; - unsigned len = strlen(_nc_progname) + 2; - - if ((int) len < (int) sizeof(temp) - 12) { - strcpy(temp, _nc_progname); - strcat(temp, ": "); - } else { - strcpy(temp, "tset: "); - } - perror(strncat(temp, msg, sizeof(temp) - strlen(temp) - 2)); - exit_error(); - /* NOTREACHED */ -} - -static void -cat(char *file) -{ - FILE *fp; - size_t nr; - char buf[BUFSIZ]; - - if ((fp = fopen(file, "r")) == 0) - failed(file); - - while ((nr = fread(buf, sizeof(char), sizeof(buf), fp)) != 0) - if (fwrite(buf, sizeof(char), nr, stderr) != nr) - failed("write to stderr"); - fclose(fp); -} - -static int -outc(int c) -{ - return putc(c, stderr); -} - -/* Prompt the user for a terminal type. */ -static const char * -askuser(const char *dflt) -{ - static char answer[256]; - char *p; - - /* We can get recalled; if so, don't continue uselessly. */ - clearerr(stdin); - if (feof(stdin) || ferror(stdin)) { - (void) fprintf(stderr, "\n"); - exit_error(); - /* NOTREACHED */ - } - for (;;) { - if (dflt) - (void) fprintf(stderr, "Terminal type? [%s] ", dflt); - else - (void) fprintf(stderr, "Terminal type? "); - (void) fflush(stderr); - - if (fgets(answer, sizeof(answer), stdin) == 0) { - if (dflt == 0) { - exit_error(); - /* NOTREACHED */ - } - return (dflt); - } - - if ((p = strchr(answer, '\n')) != 0) - *p = '\0'; - if (answer[0]) - return (answer); - if (dflt != 0) - return (dflt); - } -} - -/************************************************************************** - * - * Mapping logic begins here - * - **************************************************************************/ - -/* Baud rate conditionals for mapping. */ -#define GT 0x01 -#define EQ 0x02 -#define LT 0x04 -#define NOT 0x08 -#define GE (GT | EQ) -#define LE (LT | EQ) - -typedef struct map { - struct map *next; /* Linked list of maps. */ - const char *porttype; /* Port type, or "" for any. */ - const char *type; /* Terminal type to select. */ - int conditional; /* Baud rate conditionals bitmask. */ - int speed; /* Baud rate to compare against. */ -} MAP; - -static MAP *cur, *maplist; - -typedef struct speeds { - const char *string; - int speed; -} SPEEDS; - -static const SPEEDS speeds[] = -{ - {"0", B0}, - {"50", B50}, - {"75", B75}, - {"110", B110}, - {"134", B134}, - {"134.5", B134}, - {"150", B150}, - {"200", B200}, - {"300", B300}, - {"600", B600}, - {"1200", B1200}, - {"1800", B1800}, - {"2400", B2400}, - {"4800", B4800}, - {"9600", B9600}, - /* sgttyb may define up to this point */ -#ifdef B19200 - {"19200", B19200}, -#endif -#ifdef B38400 - {"38400", B38400}, -#endif -#ifdef B19200 - {"19200", B19200}, -#endif -#ifdef B38400 - {"38400", B38400}, -#endif -#ifdef B19200 - {"19200", B19200}, -#else -#ifdef EXTA - {"19200", EXTA}, -#endif -#endif -#ifdef B38400 - {"38400", B38400}, -#else -#ifdef EXTB - {"38400", EXTB}, -#endif -#endif -#ifdef B57600 - {"57600", B57600}, -#endif -#ifdef B115200 - {"115200", B115200}, -#endif -#ifdef B230400 - {"230400", B230400}, -#endif -#ifdef B460800 - {"460800", B460800}, -#endif - {(char *) 0, 0} -}; - -static int -tbaudrate(char *rate) -{ - const SPEEDS *sp; - int found = FALSE; - - /* The baudrate number can be preceded by a 'B', which is ignored. */ - if (*rate == 'B') - ++rate; - - for (sp = speeds; sp->string; ++sp) { - if (!CaselessCmp(rate, sp->string)) { - found = TRUE; - break; - } - } - if (!found) - err("unknown baud rate %s", rate); - return (sp->speed); -} - -/* - * Syntax for -m: - * [port-type][test baudrate]:terminal-type - * The baud rate tests are: >, <, @, =, ! - */ -static void -add_mapping(const char *port, char *arg) -{ - MAP *mapp; - char *copy, *p; - const char *termp; - char *base = 0; - - copy = strdup(arg); - mapp = typeMalloc(MAP, 1); - if (copy == 0 || mapp == 0) - failed("malloc"); - - assert(copy != 0); - assert(mapp != 0); - - mapp->next = 0; - if (maplist == 0) - cur = maplist = mapp; - else { - cur->next = mapp; - cur = mapp; - } - - mapp->porttype = arg; - mapp->conditional = 0; - - arg = strpbrk(arg, "><@=!:"); - - if (arg == 0) { /* [?]term */ - mapp->type = mapp->porttype; - mapp->porttype = 0; - goto done; - } - - if (arg == mapp->porttype) /* [><@=! baud]:term */ - termp = mapp->porttype = 0; - else - termp = base = arg; - - for (;; ++arg) { /* Optional conditionals. */ - switch (*arg) { - case '<': - if (mapp->conditional & GT) - goto badmopt; - mapp->conditional |= LT; - break; - case '>': - if (mapp->conditional & LT) - goto badmopt; - mapp->conditional |= GT; - break; - case '@': - case '=': /* Not documented. */ - mapp->conditional |= EQ; - break; - case '!': - mapp->conditional |= NOT; - break; - default: - goto next; - } - } - - next: - if (*arg == ':') { - if (mapp->conditional) - goto badmopt; - ++arg; - } else { /* Optional baudrate. */ - arg = strchr(p = arg, ':'); - if (arg == 0) - goto badmopt; - *arg++ = '\0'; - mapp->speed = tbaudrate(p); - } - - if (arg == (char *) 0) /* Non-optional type. */ - goto badmopt; - - mapp->type = arg; - - /* Terminate porttype, if specified. */ - if (termp != 0) - *base = '\0'; - - /* If a NOT conditional, reverse the test. */ - if (mapp->conditional & NOT) - mapp->conditional = ~mapp->conditional & (EQ | GT | LT); - - /* If user specified a port with an option flag, set it. */ - done: - if (port) { - if (mapp->porttype) { - badmopt: - err("illegal -m option format: %s", copy); - } - mapp->porttype = port; - } - free(copy); -#ifdef MAPDEBUG - (void) printf("port: %s\n", mapp->porttype ? mapp->porttype : "ANY"); - (void) printf("type: %s\n", mapp->type); - (void) printf("conditional: "); - p = ""; - if (mapp->conditional & GT) { - (void) printf("GT"); - p = "/"; - } - if (mapp->conditional & EQ) { - (void) printf("%sEQ", p); - p = "/"; - } - if (mapp->conditional & LT) - (void) printf("%sLT", p); - (void) printf("\nspeed: %d\n", mapp->speed); -#endif -} - -/* - * Return the type of terminal to use for a port of type 'type', as specified - * by the first applicable mapping in 'map'. If no mappings apply, return - * 'type'. - */ -static const char * -mapped(const char *type) -{ - MAP *mapp; - int match; - - for (mapp = maplist; mapp; mapp = mapp->next) - if (mapp->porttype == 0 || !strcmp(mapp->porttype, type)) { - switch (mapp->conditional) { - case 0: /* No test specified. */ - match = TRUE; - break; - case EQ: - match = (ospeed == mapp->speed); - break; - case GE: - match = (ospeed >= mapp->speed); - break; - case GT: - match = (ospeed > mapp->speed); - break; - case LE: - match = (ospeed <= mapp->speed); - break; - case LT: - match = (ospeed < mapp->speed); - break; - default: - match = FALSE; - } - if (match) - return (mapp->type); - } - /* No match found; return given type. */ - return (type); -} - -/************************************************************************** - * - * Entry fetching - * - **************************************************************************/ - -/* - * Figure out what kind of terminal we're dealing with, and then read in - * its termcap entry. - */ -static const char * -get_termcap_entry(char *userarg) -{ - int errret; - char *p; - const char *ttype; -#if HAVE_GETTTYNAM - struct ttyent *t; -#else - FILE *fp; -#endif - char *ttypath; - - if (userarg) { - ttype = userarg; - goto found; - } - - /* Try the environment. */ - if ((ttype = getenv("TERM")) != 0) - goto map; - - if ((ttypath = ttyname(STDERR_FILENO)) != 0) { - p = _nc_basename(ttypath); -#if HAVE_GETTTYNAM - /* - * We have the 4.3BSD library call getttynam(3); that means - * there's an /etc/ttys to look up device-to-type mappings in. - * Try ttyname(3); check for dialup or other mapping. - */ - if ((t = getttynam(p))) { - ttype = t->ty_type; - goto map; - } -#else - if ((fp = fopen("/etc/ttytype", "r")) != 0 - || (fp = fopen("/etc/ttys", "r")) != 0) { - char buffer[BUFSIZ]; - char *s, *t, *d; - - while (fgets(buffer, sizeof(buffer) - 1, fp) != 0) { - for (s = buffer, t = d = 0; *s; s++) { - if (isspace(UChar(*s))) - *s = '\0'; - else if (t == 0) - t = s; - else if (d == 0 && s != buffer && s[-1] == '\0') - d = s; - } - if (t != 0 && d != 0 && !strcmp(d, p)) { - ttype = strdup(t); - fclose(fp); - goto map; - } - } - fclose(fp); - } -#endif /* HAVE_GETTTYNAM */ - } - - /* If still undefined, use "unknown". */ - ttype = "unknown"; - - map:ttype = mapped(ttype); - - /* - * If not a path, remove TERMCAP from the environment so we get a - * real entry from /etc/termcap. This prevents us from being fooled - * by out of date stuff in the environment. - */ - found:if ((p = getenv("TERMCAP")) != 0 && !_nc_is_abs_path(p)) { - /* 'unsetenv("TERMCAP")' is not portable. - * The 'environ' array is better. - */ - int n; - for (n = 0; environ[n] != 0; n++) { - if (!strncmp("TERMCAP=", environ[n], 8)) { - while ((environ[n] = environ[n + 1]) != 0) { - n++; - } - break; - } - } - } - - /* - * ttype now contains a pointer to the type of the terminal. - * If the first character is '?', ask the user. - */ - if (ttype[0] == '?') { - if (ttype[1] != '\0') - ttype = askuser(ttype + 1); - else - ttype = askuser(0); - } - /* Find the terminfo entry. If it doesn't exist, ask the user. */ - while (setupterm((NCURSES_CONST char *) ttype, STDOUT_FILENO, &errret) - != OK) { - if (errret == 0) { - (void) fprintf(stderr, "%s: unknown terminal type %s\n", - _nc_progname, ttype); - ttype = 0; - } else { - (void) fprintf(stderr, - "%s: can't initialize terminal type %s (error %d)\n", - _nc_progname, ttype, errret); - ttype = 0; - } - ttype = askuser(ttype); - } -#if BROKEN_LINKER - tgetflag("am"); /* force lib_termcap.o to be linked for 'ospeed' */ -#endif - return (ttype); -} - -/************************************************************************** - * - * Mode-setting logic - * - **************************************************************************/ - -/* some BSD systems have these built in, some systems are missing - * one or more definitions. The safest solution is to override unless the - * commonly-altered ones are defined. - */ -#if !(defined(CERASE) && defined(CINTR) && defined(CKILL) && defined(CQUIT)) -#undef CEOF -#undef CERASE -#undef CINTR -#undef CKILL -#undef CLNEXT -#undef CRPRNT -#undef CQUIT -#undef CSTART -#undef CSTOP -#undef CSUSP -#endif - -/* control-character defaults */ -#ifndef CEOF -#define CEOF CTRL('D') -#endif -#ifndef CERASE -#define CERASE CTRL('H') -#endif -#ifndef CINTR -#define CINTR 127 /* ^? */ -#endif -#ifndef CKILL -#define CKILL CTRL('U') -#endif -#ifndef CLNEXT -#define CLNEXT CTRL('v') -#endif -#ifndef CRPRNT -#define CRPRNT CTRL('r') -#endif -#ifndef CQUIT -#define CQUIT CTRL('\\') -#endif -#ifndef CSTART -#define CSTART CTRL('Q') -#endif -#ifndef CSTOP -#define CSTOP CTRL('S') -#endif -#ifndef CSUSP -#define CSUSP CTRL('Z') -#endif - -#if defined(_POSIX_VDISABLE) -#define DISABLED(val) (((_POSIX_VDISABLE != -1) \ - && ((val) == _POSIX_VDISABLE)) \ - || ((val) <= 0)) -#else -#define DISABLED(val) ((int)(val) <= 0) -#endif - -#define CHK(val, dft) (DISABLED(val) ? dft : val) - -static bool set_tabs(void); - -/* - * Reset the terminal mode bits to a sensible state. Very useful after - * a child program dies in raw mode. - */ -static void -reset_mode(void) -{ -#ifdef TERMIOS - tcgetattr(STDERR_FILENO, &mode); -#else - stty(STDERR_FILENO, &mode); -#endif - -#ifdef TERMIOS -#if defined(VDISCARD) && defined(CDISCARD) - mode.c_cc[VDISCARD] = CHK(mode.c_cc[VDISCARD], CDISCARD); -#endif - mode.c_cc[VEOF] = CHK(mode.c_cc[VEOF], CEOF); - mode.c_cc[VERASE] = CHK(mode.c_cc[VERASE], CERASE); -#if defined(VFLUSH) && defined(CFLUSH) - mode.c_cc[VFLUSH] = CHK(mode.c_cc[VFLUSH], CFLUSH); -#endif - mode.c_cc[VINTR] = CHK(mode.c_cc[VINTR], CINTR); - mode.c_cc[VKILL] = CHK(mode.c_cc[VKILL], CKILL); -#if defined(VLNEXT) && defined(CLNEXT) - mode.c_cc[VLNEXT] = CHK(mode.c_cc[VLNEXT], CLNEXT); -#endif - mode.c_cc[VQUIT] = CHK(mode.c_cc[VQUIT], CQUIT); -#if defined(VREPRINT) && defined(CRPRNT) - mode.c_cc[VREPRINT] = CHK(mode.c_cc[VREPRINT], CRPRNT); -#endif -#if defined(VSTART) && defined(CSTART) - mode.c_cc[VSTART] = CHK(mode.c_cc[VSTART], CSTART); -#endif -#if defined(VSTOP) && defined(CSTOP) - mode.c_cc[VSTOP] = CHK(mode.c_cc[VSTOP], CSTOP); -#endif -#if defined(VSUSP) && defined(CSUSP) - mode.c_cc[VSUSP] = CHK(mode.c_cc[VSUSP], CSUSP); -#endif -#if defined(VWERASE) && defined(CWERASE) - mode.c_cc[VWERASE] = CHK(mode.c_cc[VWERASE], CWERASE); -#endif - - mode.c_iflag &= ~(IGNBRK | PARMRK | INPCK | ISTRIP | INLCR | IGNCR -#ifdef IUCLC - | IUCLC -#endif -#ifdef IXANY - | IXANY -#endif - | IXOFF); - - mode.c_iflag |= (BRKINT | IGNPAR | ICRNL | IXON -#ifdef IMAXBEL - | IMAXBEL -#endif - ); - - mode.c_oflag &= ~(0 -#ifdef OLCUC - | OLCUC -#endif -#ifdef OCRNL - | OCRNL -#endif -#ifdef ONOCR - | ONOCR -#endif -#ifdef ONLRET - | ONLRET -#endif -#ifdef OFILL - | OFILL -#endif -#ifdef OFDEL - | OFDEL -#endif -#ifdef NLDLY - | NLDLY -#endif -#ifdef CRDLY - | CRDLY -#endif -#ifdef TABDLY - | TABDLY -#endif -#ifdef BSDLY - | BSDLY -#endif -#ifdef VTDLY - | VTDLY -#endif -#ifdef FFDLY - | FFDLY -#endif - ); - - mode.c_oflag |= (OPOST -#ifdef ONLCR - | ONLCR -#endif - ); - - mode.c_cflag &= ~(CSIZE | CSTOPB | PARENB | PARODD | CLOCAL); - mode.c_cflag |= (CS8 | CREAD); - mode.c_lflag &= ~(ECHONL | NOFLSH -#ifdef TOSTOP - | TOSTOP -#endif -#ifdef ECHOPTR - | ECHOPRT -#endif -#ifdef XCASE - | XCASE -#endif - ); - - mode.c_lflag |= (ISIG | ICANON | ECHO | ECHOE | ECHOK -#ifdef ECHOCTL - | ECHOCTL -#endif -#ifdef ECHOKE - | ECHOKE -#endif - ); -#endif - - SET_TTY(STDERR_FILENO, &mode); -} - -/* - * Returns a "good" value for the erase character. This is loosely based on - * the BSD4.4 logic. - */ -#ifdef TERMIOS -static int -default_erase(void) -{ - int result; - - if (over_strike - && key_backspace != 0 - && strlen(key_backspace) == 1) - result = key_backspace[0]; - else - result = CERASE; - - return result; -} -#endif - -/* - * Update the values of the erase, interrupt, and kill characters in 'mode'. - * - * SVr4 tset (e.g., Solaris 2.5) only modifies the intr, quit or erase - * characters if they're unset, or if we specify them as options. This differs - * from BSD 4.4 tset, which always sets erase. - */ -static void -set_control_chars(void) -{ -#ifdef TERMIOS - if (DISABLED(mode.c_cc[VERASE]) || terasechar >= 0) - mode.c_cc[VERASE] = (terasechar >= 0) ? terasechar : default_erase(); - - if (DISABLED(mode.c_cc[VINTR]) || intrchar >= 0) - mode.c_cc[VINTR] = (intrchar >= 0) ? intrchar : CINTR; - - if (DISABLED(mode.c_cc[VKILL]) || tkillchar >= 0) - mode.c_cc[VKILL] = (tkillchar >= 0) ? tkillchar : CKILL; -#endif -} - -/* - * Set up various conversions in 'mode', including parity, tabs, returns, - * echo, and case, according to the termcap entry. If the program we're - * running was named with a leading upper-case character, map external - * uppercase to internal lowercase. - */ -static void -set_conversions(void) -{ -#ifdef __OBSOLETE__ - /* - * Conversion logic for some *really* ancient terminal glitches, - * not supported in terminfo. Left here for succeeding generations - * to marvel at. - */ - if (tgetflag("UC")) { -#ifdef IUCLC - mode.c_iflag |= IUCLC; - mode.c_oflag |= OLCUC; -#endif - } else if (tgetflag("LC")) { -#ifdef IUCLC - mode.c_iflag &= ~IUCLC; - mode.c_oflag &= ~OLCUC; -#endif - } - mode.c_iflag &= ~(PARMRK | INPCK); - mode.c_lflag |= ICANON; - if (tgetflag("EP")) { - mode.c_cflag |= PARENB; - mode.c_cflag &= ~PARODD; - } - if (tgetflag("OP")) { - mode.c_cflag |= PARENB; - mode.c_cflag |= PARODD; - } -#endif /* __OBSOLETE__ */ - -#ifdef TERMIOS -#ifdef ONLCR - mode.c_oflag |= ONLCR; -#endif - mode.c_iflag |= ICRNL; - mode.c_lflag |= ECHO; -#ifdef OXTABS - mode.c_oflag |= OXTABS; -#endif /* OXTABS */ - - /* test used to be tgetflag("NL") */ - if (newline != (char *) 0 && newline[0] == '\n' && !newline[1]) { - /* Newline, not linefeed. */ -#ifdef ONLCR - mode.c_oflag &= ~ONLCR; -#endif - mode.c_iflag &= ~ICRNL; - } -#ifdef __OBSOLETE__ - if (tgetflag("HD")) /* Half duplex. */ - mode.c_lflag &= ~ECHO; -#endif /* __OBSOLETE__ */ -#ifdef OXTABS - /* test used to be tgetflag("pt") */ - if (has_hardware_tabs) /* Print tabs. */ - mode.c_oflag &= ~OXTABS; -#endif /* OXTABS */ - mode.c_lflag |= (ECHOE | ECHOK); -#endif -} - -/* Output startup string. */ -static void -set_init(void) -{ - char *p; - bool settle; - -#ifdef __OBSOLETE__ - if (pad_char != (char *) 0) /* Get/set pad character. */ - PC = pad_char[0]; -#endif /* OBSOLETE */ - -#ifdef TAB3 - if (oldmode.c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) { - oldmode.c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET); - SET_TTY(STDERR_FILENO, &oldmode); - } -#endif - settle = set_tabs(); - - if (isreset) { - if ((p = reset_1string) != 0) { - tputs(p, 0, outc); - settle = TRUE; - } - if ((p = reset_2string) != 0) { - tputs(p, 0, outc); - settle = TRUE; - } - /* What about rf, rs3, as per terminfo man page? */ - /* also might be nice to send rmacs, rmul, rmm */ - if ((p = reset_file) != 0 - || (p = init_file) != 0) { - cat(p); - settle = TRUE; - } - } - - if (settle) { - (void) putc('\r', stderr); - (void) fflush(stderr); - (void) napms(1000); /* Settle the terminal. */ - } -} - -/* - * Set the hardware tabs on the terminal, using the ct (clear all tabs), - * st (set one tab) and ch (horizontal cursor addressing) capabilities. - * This is done before if and is, so they can patch in case we blow this. - * Return TRUE if we set any tab stops, FALSE if not. - */ -static bool -set_tabs(void) -{ - if (set_tab && clear_all_tabs) { - int c; - - (void) putc('\r', stderr); /* Force to left margin. */ - tputs(clear_all_tabs, 0, outc); - - for (c = 8; c < tcolumns; c += 8) { - /* Get to the right column. In BSD tset, this - * used to try a bunch of half-clever things - * with cup and hpa, for an average saving of - * somewhat less than two character times per - * tab stop, less than .01 sec at 2400cps. We - * lost all this cruft because it seemed to be - * introducing some odd bugs. - * -----------12345678----------- */ - (void) fputs(" ", stderr); - tputs(set_tab, 0, outc); - } - putc('\r', stderr); - return (TRUE); - } - return (FALSE); -} - -/************************************************************************** - * - * Main sequence - * - **************************************************************************/ - -/* - * Tell the user if a control key has been changed from the default value. - */ -#ifdef TERMIOS -static void -report(const char *name, int which, unsigned def) -{ - unsigned older, newer; - char *p; - - newer = mode.c_cc[which]; - older = oldmode.c_cc[which]; - - if (older == newer && older == def) - return; - - (void) fprintf(stderr, "%s %s ", name, older == newer ? "is" : "set to"); - - if (DISABLED(newer)) - (void) fprintf(stderr, "undef.\n"); - /* - * Check 'delete' before 'backspace', since the key_backspace value - * is ambiguous. - */ - else if (newer == 0177) - (void) fprintf(stderr, "delete.\n"); - else if ((p = key_backspace) != 0 - && newer == (unsigned char) p[0] - && p[1] == '\0') - (void) fprintf(stderr, "backspace.\n"); - else if (newer < 040) { - newer ^= 0100; - (void) fprintf(stderr, "control-%c (^%c).\n", UChar(newer), UChar(newer)); - } else - (void) fprintf(stderr, "%c.\n", UChar(newer)); -} -#endif - -/* - * Convert the obsolete argument forms into something that getopt can handle. - * This means that -e, -i and -k get default arguments supplied for them. - */ -static void -obsolete(char **argv) -{ - for (; *argv; ++argv) { - char *parm = argv[0]; - - if (parm[0] == '-' && parm[1] == '\0') { - argv[0] = strdup("-q"); - continue; - } - - if ((parm[0] != '-') - || (argv[1] && argv[1][0] != '-') - || (parm[1] != 'e' && parm[1] != 'i' && parm[1] != 'k') - || (parm[2] != '\0')) - continue; - switch (argv[0][1]) { - case 'e': - argv[0] = strdup("-e^H"); - break; - case 'i': - argv[0] = strdup("-i^C"); - break; - case 'k': - argv[0] = strdup("-k^U"); - break; - } - } -} - -static void -usage(void) -{ - static const char *tbl[] = - { - "" - ,"Options:" - ," -c set control characters" - ," -e ch erase character" - ," -I no initialization strings" - ," -i ch interrupt character" - ," -k ch kill character" - ," -m mapping map identifier to type" - ," -Q do not output control key settings" - ," -r display term on stderr" - ," -s output TERM set command" - ," -V print curses-version" - ," -w set window-size" - }; - unsigned n; - (void) fprintf(stderr, "Usage: %s [options] [terminal]\n", _nc_progname); - for (n = 0; n < sizeof(tbl) / sizeof(tbl[0]); ++n) - fprintf(stderr, "%s\n", tbl[n]); - exit_error(); - /* NOTREACHED */ -} - -static char -arg_to_char(void) -{ - return (char) ((optarg[0] == '^' && optarg[1] != '\0') - ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1])) - : optarg[0]); -} - -int -main(int argc, char **argv) -{ - int ch, noinit, noset, quiet, Sflag, sflag, showterm; - const char *p; - const char *ttype; - - obsolete(argv); - noinit = noset = quiet = Sflag = sflag = showterm = 0; - while ((ch = getopt(argc, argv, "a:cd:e:Ii:k:m:np:qQSrsVw")) != -1) { - switch (ch) { - case 'c': /* set control-chars */ - opt_c = TRUE; - break; - case 'a': /* OBSOLETE: map identifier to type */ - add_mapping("arpanet", optarg); - break; - case 'd': /* OBSOLETE: map identifier to type */ - add_mapping("dialup", optarg); - break; - case 'e': /* erase character */ - terasechar = arg_to_char(); - break; - case 'I': /* no initialization strings */ - noinit = 1; - break; - case 'i': /* interrupt character */ - intrchar = arg_to_char(); - break; - case 'k': /* kill character */ - tkillchar = arg_to_char(); - break; - case 'm': /* map identifier to type */ - add_mapping(0, optarg); - break; - case 'n': /* OBSOLETE: set new tty driver */ - break; - case 'p': /* OBSOLETE: map identifier to type */ - add_mapping("plugboard", optarg); - break; - case 'Q': /* don't output control key settings */ - quiet = 1; - break; - case 'q': /* display term only */ - noset = 1; - break; - case 'r': /* display term on stderr */ - showterm = 1; - break; - case 'S': /* OBSOLETE: output TERM & TERMCAP */ - Sflag = 1; - break; - case 's': /* output TERM set command */ - sflag = 1; - break; - case 'V': /* print curses-version */ - puts(curses_version()); - ExitProgram(EXIT_SUCCESS); - case 'w': /* set window-size */ - opt_w = TRUE; - break; - case '?': - default: - usage(); - } - } - - _nc_progname = _nc_rootname(*argv); - argc -= optind; - argv += optind; - - if (argc > 1) - usage(); - - if (!opt_c && !opt_w) - opt_c = opt_w = TRUE; - - if (GET_TTY(STDERR_FILENO, &mode) < 0) - failed("standard error"); - can_restore = TRUE; - original = oldmode = mode; -#ifdef TERMIOS - ospeed = (NCURSES_OSPEED) cfgetospeed(&mode); -#else - ospeed = (NCURSES_OSPEED) mode.sg_ospeed; -#endif - - if (same_program(_nc_progname, PROG_RESET)) { - isreset = TRUE; - reset_mode(); - } - - (void) get_termcap_entry(*argv); - - if (!noset) { - tcolumns = columns; - tlines = lines; - -#if HAVE_SIZECHANGE - if (opt_w) { - STRUCT_WINSIZE win; - /* Set window size if not set already */ - (void) ioctl(STDERR_FILENO, IOCTL_GET_WINSIZE, &win); - if (WINSIZE_ROWS(win) == 0 && - WINSIZE_COLS(win) == 0 && - tlines > 0 && tcolumns > 0) { - WINSIZE_ROWS(win) = tlines; - WINSIZE_COLS(win) = tcolumns; - (void) ioctl(STDERR_FILENO, IOCTL_SET_WINSIZE, &win); - } - } -#endif - if (opt_c) { - set_control_chars(); - set_conversions(); - - if (!noinit) - set_init(); - - /* Set the modes if they've changed. */ - if (memcmp(&mode, &oldmode, sizeof(mode))) { - SET_TTY(STDERR_FILENO, &mode); - } - } - } - - /* Get the terminal name from the entry. */ - ttype = _nc_first_name(cur_term->type.term_names); - - if (noset) - (void) printf("%s\n", ttype); - else { - if (showterm) - (void) fprintf(stderr, "Terminal type is %s.\n", ttype); - /* - * If erase, kill and interrupt characters could have been - * modified and not -Q, display the changes. - */ -#ifdef TERMIOS - if (!quiet) { - report("Erase", VERASE, CERASE); - report("Kill", VKILL, CKILL); - report("Interrupt", VINTR, CINTR); - } -#endif - } - - if (Sflag) - err("The -S option is not supported under terminfo."); - - if (sflag) { - int len; - char *var; - char *leaf; - /* - * Figure out what shell we're using. A hack, we look for an - * environmental variable SHELL ending in "csh". - */ - if ((var = getenv("SHELL")) != 0 - && ((len = (int) strlen(leaf = _nc_basename(var))) >= 3) - && !strcmp(leaf + len - 3, "csh")) - p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n"; - else - p = "TERM=%s;\n"; - (void) printf(p, ttype); - } - - ExitProgram(EXIT_SUCCESS); -} diff --git a/deps/ncurses-5.9/test/Makefile b/deps/ncurses-5.9/test/Makefile deleted file mode 100644 index cdfeac7..0000000 --- a/deps/ncurses-5.9/test/Makefile +++ /dev/null @@ -1,843 +0,0 @@ -# $Id: Makefile.in,v 1.108 2010/11/28 16:39:40 tom Exp $ -############################################################################## -# Copyright (c) 1998-2008,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses tests. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh - - - - -destdir = -x = -o = .o - -MODEL = ../objects -srcdir = . -prefix = /home/martino/avrdude-build-script/objdir -exec_prefix = ${prefix} -bindir = ${exec_prefix}/bin -libdir = ${exec_prefix}/lib -includedir = ${prefix}/include/ncurses - -BINDIR = $(DESTDIR)$(bindir) -LIBDIR = $(DESTDIR)$(libdir) -INCLUDEDIR = $(DESTDIR)$(includedir) - -LIBTOOL = -LIBTOOL_CLEAN = -LIBTOOL_COMPILE = -LIBTOOL_LINK = ${CC} - -INSTALL = /bin/install -c -INSTALL_PROG = ${INSTALL} -transform = s,x,x, -TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/' - -CTAGS = -ETAGS = - -CC = gcc -CPP = gcc -E - -CFLAGS = -w -O2 -fPIC --param max-inline-insns-single=1200 -CPPFLAGS = -I. -I$(srcdir) -I../test -DHAVE_CONFIG_H -P -D_GNU_SOURCE -DNDEBUG -I. -I../include -I${includedir} - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) -g -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) -fPIC - -CFLAGS_DEFAULT = $(CFLAGS_NORMAL) - -REL_VERSION = 5.9 -ABI_VERSION = 5 -LOCAL_LIBDIR = /home/martino/avrdude-build-script/ncurses-5.9/lib -LOCAL_LIBS = ../lib/libform.a ../lib/libmenu.a ../lib/libpanel.a ../lib/libncurses.a ../lib/libtinfo.a -MATH_LIB = -lm -TEST_LIBS = -lutil - -LD = ld -LINK = $(LIBTOOL_LINK) $(CFLAGS) - -LDFLAGS = -s -fPIC - -LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) -LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) -LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) -LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) -LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) - -TEST_ARGS = -static -L../lib -lform -lmenu -lpanel -lncurses -ltinfo -dynamic - -# use these for linking with all of the libraries -LIBS_DEFAULT = $(TEST_ARGS) -ldl $(TEST_LIBS) $(MATH_LIB) -LDFLAGS_DEFAULT = $(LDFLAGS_NORMAL) $(LIBS_DEFAULT) - -# use these for linking with the (n)curses library and possibly pthreads -LIBS_THREADS = `echo "$(TEST_ARGS) -ldl " | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB) -LDFLAGS_THREADS = $(LDFLAGS_NORMAL) $(LIBS_THREADS) - -# use these for linking with the (n)curses library -LIBS_CURSES = `echo "$(TEST_ARGS) -ldl " | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB) -LDFLAGS_CURSES = $(LDFLAGS_NORMAL) $(LIBS_CURSES) - -# use these for linking with the tinfo library if we have it, or curses library if not -LIBS_TINFO = -static -L../lib -ltinfo -dynamic -ldl $(TEST_LIBS) $(MATH_LIB) -LDFLAGS_TINFO = $(LDFLAGS_NORMAL) $(LIBS_TINFO) - -LINT = -LINT_OPTS = -LINT_LIBS = -lform -lmenu -lpanel -lncurses -ldl - -HEADER_DEPS = \ - ../include/curses.h \ - ../include/term.h - -# The rest is generated from the "programs" and "modules" files... -# generated by mk-test.awk - -TESTS = $(destdir)background$x \ - $(destdir)blue$x \ - $(destdir)bs$x \ - $(destdir)cardfile$x \ - $(destdir)chgat$x \ - $(destdir)clip_printw$x \ - $(destdir)color_set$x \ - $(destdir)demo_altkeys$x \ - $(destdir)demo_defkey$x \ - $(destdir)demo_forms$x \ - $(destdir)demo_keyok$x \ - $(destdir)demo_menus$x \ - $(destdir)demo_panels$x \ - $(destdir)demo_termcap$x \ - $(destdir)demo_terminfo$x \ - $(destdir)ditto$x \ - $(destdir)dots$x \ - $(destdir)dots_mvcur$x \ - $(destdir)echochar$x \ - $(destdir)filter$x \ - $(destdir)firework$x \ - $(destdir)firstlast$x \ - $(destdir)foldkeys$x \ - $(destdir)gdc$x \ - $(destdir)hanoi$x \ - $(destdir)hashtest$x \ - $(destdir)inch_wide$x \ - $(destdir)inchs$x \ - $(destdir)ins_wide$x \ - $(destdir)insdelln$x \ - $(destdir)inserts$x \ - $(destdir)key_names$x \ - $(destdir)keynames$x \ - $(destdir)knight$x \ - $(destdir)lrtest$x \ - $(destdir)movewindow$x \ - $(destdir)ncurses$x \ - $(destdir)newdemo$x \ - $(destdir)railroad$x \ - $(destdir)rain$x \ - $(destdir)redraw$x \ - $(destdir)savescreen$x \ - $(destdir)tclock$x \ - $(destdir)test_add_wchstr$x \ - $(destdir)test_addchstr$x \ - $(destdir)test_addstr$x \ - $(destdir)test_addwstr$x \ - $(destdir)test_arrays$x \ - $(destdir)test_get_wstr$x \ - $(destdir)test_getstr$x \ - $(destdir)test_instr$x \ - $(destdir)test_inwstr$x \ - $(destdir)test_opaque$x \ - $(destdir)testaddch$x \ - $(destdir)testcurs$x \ - $(destdir)testscanw$x \ - $(destdir)view$x \ - $(destdir)worm$x \ - $(destdir)xmas$x - -all: $(TESTS) - -sources: - -tags: - $(CTAGS) *.[ch] - -# no libraries here -libs \ -install.libs \ -uninstall.libs: - -install \ -install.test \ -uninstall \ -uninstall.test: - -mostlyclean :: - -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace - -clean :: mostlyclean - -$(SHELL) -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" - -rm -rf *$o screendump *.lis $(TESTS) .libs - -distclean :: clean - -rm -f Makefile ncurses_cfg.h config.status config.log - -realclean :: distclean - -lint: - $(SHELL) -c 'for N in $(TESTS); do echo LINT:$$N; $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/$$N.c $(LINT_LIBS); done' -$(BINDIR) : - mkdir -p $@ - -$(destdir)background$x: $(MODEL)/background$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/background$o $(LDFLAGS_CURSES) - -$(destdir)blue$x: $(MODEL)/blue$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/blue$o $(LDFLAGS_CURSES) - -$(destdir)bs$x: $(MODEL)/bs$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/bs$o $(LDFLAGS_CURSES) - -$(destdir)cardfile$x: $(MODEL)/cardfile$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/cardfile$o $(LDFLAGS_DEFAULT) - -$(destdir)chgat$x: $(MODEL)/chgat$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/chgat$o $(LDFLAGS_CURSES) - -$(destdir)clip_printw$x: $(MODEL)/clip_printw$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/clip_printw$o $(LDFLAGS_CURSES) - -$(destdir)color_set$x: $(MODEL)/color_set$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/color_set$o $(LDFLAGS_CURSES) - -$(destdir)demo_altkeys$x: $(MODEL)/demo_altkeys$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_altkeys$o $(LDFLAGS_CURSES) - -$(destdir)demo_defkey$x: $(MODEL)/demo_defkey$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_defkey$o $(LDFLAGS_CURSES) - -$(destdir)demo_forms$x: $(MODEL)/demo_forms$o $(MODEL)/edit_field$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_forms$o $(MODEL)/edit_field$o $(LDFLAGS_DEFAULT) - -$(destdir)demo_keyok$x: $(MODEL)/demo_keyok$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_keyok$o $(LDFLAGS_CURSES) - -$(destdir)demo_menus$x: $(MODEL)/demo_menus$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_menus$o $(LDFLAGS_DEFAULT) - -$(destdir)demo_panels$x: $(MODEL)/demo_panels$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_panels$o $(LDFLAGS_DEFAULT) - -$(destdir)demo_termcap$x: $(MODEL)/demo_termcap$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_termcap$o $(LDFLAGS_TINFO) - -$(destdir)demo_terminfo$x: $(MODEL)/demo_terminfo$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/demo_terminfo$o $(LDFLAGS_TINFO) - -$(destdir)ditto$x: $(MODEL)/ditto$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/ditto$o $(LDFLAGS_THREADS) - -$(destdir)dots$x: $(MODEL)/dots$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/dots$o $(LDFLAGS_TINFO) - -$(destdir)dots_mvcur$x: $(MODEL)/dots_mvcur$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/dots_mvcur$o $(LDFLAGS_CURSES) - -$(destdir)echochar$x: $(MODEL)/echochar$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/echochar$o $(LDFLAGS_CURSES) - -$(destdir)filter$x: $(MODEL)/filter$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/filter$o $(LDFLAGS_CURSES) - -$(destdir)firework$x: $(MODEL)/firework$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/firework$o $(LDFLAGS_CURSES) - -$(destdir)firstlast$x: $(MODEL)/firstlast$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/firstlast$o $(LDFLAGS_DEFAULT) - -$(destdir)foldkeys$x: $(MODEL)/foldkeys$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/foldkeys$o $(LDFLAGS_CURSES) - -$(destdir)gdc$x: $(MODEL)/gdc$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/gdc$o $(LDFLAGS_CURSES) - -$(destdir)hanoi$x: $(MODEL)/hanoi$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/hanoi$o $(LDFLAGS_CURSES) - -$(destdir)hashtest$x: $(MODEL)/hashtest$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/hashtest$o $(LDFLAGS_CURSES) - -$(destdir)inch_wide$x: $(MODEL)/inch_wide$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/inch_wide$o $(LDFLAGS_CURSES) - -$(destdir)inchs$x: $(MODEL)/inchs$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/inchs$o $(LDFLAGS_CURSES) - -$(destdir)ins_wide$x: $(MODEL)/ins_wide$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/ins_wide$o $(LDFLAGS_CURSES) - -$(destdir)insdelln$x: $(MODEL)/insdelln$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/insdelln$o $(LDFLAGS_CURSES) - -$(destdir)inserts$x: $(MODEL)/inserts$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/inserts$o $(LDFLAGS_CURSES) - -$(destdir)key_names$x: $(MODEL)/key_names$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/key_names$o $(LDFLAGS_CURSES) - -$(destdir)keynames$x: $(MODEL)/keynames$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/keynames$o $(LDFLAGS_CURSES) - -$(destdir)knight$x: $(MODEL)/knight$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/knight$o $(LDFLAGS_CURSES) - -$(destdir)lrtest$x: $(MODEL)/lrtest$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/lrtest$o $(LDFLAGS_CURSES) - -$(destdir)movewindow$x: $(MODEL)/movewindow$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/movewindow$o $(LDFLAGS_CURSES) - -$(destdir)ncurses$x: $(MODEL)/ncurses$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/ncurses$o $(LDFLAGS_DEFAULT) - -$(destdir)newdemo$x: $(MODEL)/newdemo$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/newdemo$o $(LDFLAGS_CURSES) - -$(destdir)railroad$x: $(MODEL)/railroad$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/railroad$o $(LDFLAGS_TINFO) - -$(destdir)rain$x: $(MODEL)/rain$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/rain$o $(LDFLAGS_THREADS) - -$(destdir)redraw$x: $(MODEL)/redraw$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/redraw$o $(LDFLAGS_CURSES) - -$(destdir)savescreen$x: $(MODEL)/savescreen$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/savescreen$o $(LDFLAGS_CURSES) - -$(destdir)tclock$x: $(MODEL)/tclock$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/tclock$o $(LDFLAGS_CURSES) - -$(destdir)test_add_wchstr$x: $(MODEL)/test_add_wchstr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_add_wchstr$o $(LDFLAGS_CURSES) - -$(destdir)test_addchstr$x: $(MODEL)/test_addchstr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_addchstr$o $(LDFLAGS_CURSES) - -$(destdir)test_addstr$x: $(MODEL)/test_addstr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_addstr$o $(LDFLAGS_CURSES) - -$(destdir)test_addwstr$x: $(MODEL)/test_addwstr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_addwstr$o $(LDFLAGS_CURSES) - -$(destdir)test_arrays$x: $(MODEL)/test_arrays$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_arrays$o $(LDFLAGS_TINFO) - -$(destdir)test_get_wstr$x: $(MODEL)/test_get_wstr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_get_wstr$o $(LDFLAGS_CURSES) - -$(destdir)test_getstr$x: $(MODEL)/test_getstr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_getstr$o $(LDFLAGS_CURSES) - -$(destdir)test_instr$x: $(MODEL)/test_instr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_instr$o $(LDFLAGS_CURSES) - -$(destdir)test_inwstr$x: $(MODEL)/test_inwstr$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_inwstr$o $(LDFLAGS_CURSES) - -$(destdir)test_opaque$x: $(MODEL)/test_opaque$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/test_opaque$o $(LDFLAGS_CURSES) - -$(destdir)testaddch$x: $(MODEL)/testaddch$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/testaddch$o $(LDFLAGS_CURSES) - -$(destdir)testcurs$x: $(MODEL)/testcurs$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/testcurs$o $(LDFLAGS_CURSES) - -$(destdir)testscanw$x: $(MODEL)/testscanw$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/testscanw$o $(LDFLAGS_CURSES) - -$(destdir)view$x: $(MODEL)/view$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/view$o $(LDFLAGS_CURSES) - -$(destdir)worm$x: $(MODEL)/worm$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/worm$o $(LDFLAGS_THREADS) - -$(destdir)xmas$x: $(MODEL)/xmas$o $(LOCAL_LIBS) - $(LINK) -o $@ $(MODEL)/xmas$o $(LDFLAGS_CURSES) - -# generated by mk-0th.awk -# libname: test -# subsets: ticlib+termlib+ext_tinfo base+ext_funcs - -.SUFFIXES: .c .cc .h .i .ii -.c.i : - $(CPP) $(CPPFLAGS) $< >$@ -.cc.ii : - $(CPP) $(CPPFLAGS) $< >$@ -.h.i : - $(CPP) $(CPPFLAGS) $< >$@ - -C_SRC = \ - $(srcdir)/background.c \ - $(srcdir)/blue.c \ - $(srcdir)/bs.c \ - $(srcdir)/cardfile.c \ - $(srcdir)/chgat.c \ - $(srcdir)/clip_printw.c \ - $(srcdir)/color_set.c \ - $(srcdir)/demo_altkeys.c \ - $(srcdir)/demo_defkey.c \ - $(srcdir)/demo_forms.c \ - $(srcdir)/demo_keyok.c \ - $(srcdir)/demo_menus.c \ - $(srcdir)/demo_panels.c \ - $(srcdir)/demo_termcap.c \ - $(srcdir)/demo_terminfo.c \ - $(srcdir)/ditto.c \ - $(srcdir)/dots.c \ - $(srcdir)/dots_mvcur.c \ - $(srcdir)/echochar.c \ - $(srcdir)/edit_field.c \ - $(srcdir)/filter.c \ - $(srcdir)/firework.c \ - $(srcdir)/firstlast.c \ - $(srcdir)/foldkeys.c \ - $(srcdir)/gdc.c \ - $(srcdir)/hanoi.c \ - $(srcdir)/hashtest.c \ - $(srcdir)/inch_wide.c \ - $(srcdir)/inchs.c \ - $(srcdir)/ins_wide.c \ - $(srcdir)/insdelln.c \ - $(srcdir)/inserts.c \ - $(srcdir)/key_names.c \ - $(srcdir)/keynames.c \ - $(srcdir)/knight.c \ - $(srcdir)/lrtest.c \ - $(srcdir)/movewindow.c \ - $(srcdir)/ncurses.c \ - $(srcdir)/newdemo.c \ - $(srcdir)/railroad.c \ - $(srcdir)/rain.c \ - $(srcdir)/redraw.c \ - $(srcdir)/savescreen.c \ - $(srcdir)/tclock.c \ - $(srcdir)/test_add_wchstr.c \ - $(srcdir)/test_addchstr.c \ - $(srcdir)/test_addstr.c \ - $(srcdir)/test_addwstr.c \ - $(srcdir)/test_arrays.c \ - $(srcdir)/test_get_wstr.c \ - $(srcdir)/test_getstr.c \ - $(srcdir)/test_instr.c \ - $(srcdir)/test_inwstr.c \ - $(srcdir)/test_opaque.c \ - $(srcdir)/testaddch.c \ - $(srcdir)/testcurs.c \ - $(srcdir)/testscanw.c \ - $(srcdir)/view.c \ - $(srcdir)/worm.c \ - $(srcdir)/xmas.c - -lintlib : - @echo no action needed - - - -# generated by mk-1st.awk (subset=base+ext_funcs) -# name: test -# traces: DEBUG -# MODEL: NORMAL -# model: objects -# prefix: lib -# suffix: .a -# subset: base+ext_funcs -# ShlibVer: rel -# ShlibVerInfix: no -# SymLink: ln -s -f -# TermlibRoot: tinfo -# TermlibSuffix: .a -# ReLink: no -# DoLinks: yes -# rmSoLocs: no -# ldconfig: /bin/ldconfig -# overwrite: no -# depend: ../include/ncurses_cfg.h ./test.priv.h -# host: x86_64-unknown-linux-gnu - -NORMAL_OBJS = \ - ../objects/background$o \ - ../objects/blue$o \ - ../objects/bs$o \ - ../objects/cardfile$o \ - ../objects/chgat$o \ - ../objects/clip_printw$o \ - ../objects/color_set$o \ - ../objects/demo_altkeys$o \ - ../objects/demo_defkey$o \ - ../objects/demo_forms$o \ - ../objects/demo_keyok$o \ - ../objects/demo_menus$o \ - ../objects/demo_panels$o \ - ../objects/demo_termcap$o \ - ../objects/demo_terminfo$o \ - ../objects/ditto$o \ - ../objects/dots$o \ - ../objects/dots_mvcur$o \ - ../objects/echochar$o \ - ../objects/edit_field$o \ - ../objects/filter$o \ - ../objects/firework$o \ - ../objects/firstlast$o \ - ../objects/foldkeys$o \ - ../objects/gdc$o \ - ../objects/hanoi$o \ - ../objects/hashtest$o \ - ../objects/inch_wide$o \ - ../objects/inchs$o \ - ../objects/ins_wide$o \ - ../objects/insdelln$o \ - ../objects/inserts$o \ - ../objects/key_names$o \ - ../objects/keynames$o \ - ../objects/knight$o \ - ../objects/lrtest$o \ - ../objects/movewindow$o \ - ../objects/ncurses$o \ - ../objects/newdemo$o \ - ../objects/railroad$o \ - ../objects/rain$o \ - ../objects/redraw$o \ - ../objects/savescreen$o \ - ../objects/tclock$o \ - ../objects/test_add_wchstr$o \ - ../objects/test_addchstr$o \ - ../objects/test_addstr$o \ - ../objects/test_addwstr$o \ - ../objects/test_arrays$o \ - ../objects/test_get_wstr$o \ - ../objects/test_getstr$o \ - ../objects/test_instr$o \ - ../objects/test_inwstr$o \ - ../objects/test_opaque$o \ - ../objects/testaddch$o \ - ../objects/testcurs$o \ - ../objects/testscanw$o \ - ../objects/view$o \ - ../objects/worm$o \ - ../objects/xmas$o - -$(NORMAL_OBJS) : ../include/ncurses_cfg.h ./test.priv.h - -mostlyclean:: - -rm -f $(NORMAL_OBJS) - -clean :: - -rm -f $(NORMAL_OBJS) - -# generated by mk-2nd.awk -# model: objects -# MODEL: NORMAL -# echo: yes -# subset: base+ext_funcs -# crenames: yes -# cxxrenames: yes -# traces: DEBUG -# srcdir: . - -../objects/background$o : $(srcdir)/background.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/background.c -o ../objects/background$o - -../objects/blue$o : $(srcdir)/blue.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/blue.c -o ../objects/blue$o - -../objects/bs$o : $(srcdir)/bs.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/bs.c -o ../objects/bs$o - -../objects/cardfile$o : $(srcdir)/cardfile.c \ - $(HEADER_DEPS) \ - ../include/panel.h \ - ../include/form.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/cardfile.c -o ../objects/cardfile$o - -../objects/chgat$o : $(srcdir)/chgat.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/chgat.c -o ../objects/chgat$o - -../objects/clip_printw$o : $(srcdir)/clip_printw.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/clip_printw.c -o ../objects/clip_printw$o - -../objects/color_set$o : $(srcdir)/color_set.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/color_set.c -o ../objects/color_set$o - -../objects/demo_altkeys$o : $(srcdir)/demo_altkeys.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_altkeys.c -o ../objects/demo_altkeys$o - -../objects/demo_defkey$o : $(srcdir)/demo_defkey.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_defkey.c -o ../objects/demo_defkey$o - -../objects/demo_forms$o : $(srcdir)/demo_forms.c \ - $(HEADER_DEPS) \ - $(srcdir)/edit_field.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_forms.c -o ../objects/demo_forms$o - -../objects/demo_keyok$o : $(srcdir)/demo_keyok.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_keyok.c -o ../objects/demo_keyok$o - -../objects/demo_menus$o : $(srcdir)/demo_menus.c \ - $(HEADER_DEPS) \ - ../include/menu.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_menus.c -o ../objects/demo_menus$o - -../objects/demo_panels$o : $(srcdir)/demo_panels.c \ - $(HEADER_DEPS) \ - ../include/panel.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_panels.c -o ../objects/demo_panels$o - -../objects/demo_termcap$o : $(srcdir)/demo_termcap.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_termcap.c -o ../objects/demo_termcap$o - -../objects/demo_terminfo$o : $(srcdir)/demo_terminfo.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/demo_terminfo.c -o ../objects/demo_terminfo$o - -../objects/ditto$o : $(srcdir)/ditto.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/ditto.c -o ../objects/ditto$o - -../objects/dots$o : $(srcdir)/dots.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/dots.c -o ../objects/dots$o - -../objects/dots_mvcur$o : $(srcdir)/dots_mvcur.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/dots_mvcur.c -o ../objects/dots_mvcur$o - -../objects/echochar$o : $(srcdir)/echochar.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/echochar.c -o ../objects/echochar$o - -../objects/edit_field$o : $(srcdir)/edit_field.c \ - $(HEADER_DEPS) \ - $(srcdir)/edit_field.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/edit_field.c -o ../objects/edit_field$o - -../objects/filter$o : $(srcdir)/filter.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/filter.c -o ../objects/filter$o - -../objects/firework$o : $(srcdir)/firework.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/firework.c -o ../objects/firework$o - -../objects/firstlast$o : $(srcdir)/firstlast.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/firstlast.c -o ../objects/firstlast$o - -../objects/foldkeys$o : $(srcdir)/foldkeys.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/foldkeys.c -o ../objects/foldkeys$o - -../objects/gdc$o : $(srcdir)/gdc.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/gdc.c -o ../objects/gdc$o - -../objects/hanoi$o : $(srcdir)/hanoi.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/hanoi.c -o ../objects/hanoi$o - -../objects/hashtest$o : $(srcdir)/hashtest.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/hashtest.c -o ../objects/hashtest$o - -../objects/inch_wide$o : $(srcdir)/inch_wide.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/inch_wide.c -o ../objects/inch_wide$o - -../objects/inchs$o : $(srcdir)/inchs.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/inchs.c -o ../objects/inchs$o - -../objects/ins_wide$o : $(srcdir)/ins_wide.c \ - $(HEADER_DEPS) \ - $(srcdir)/linedata.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/ins_wide.c -o ../objects/ins_wide$o - -../objects/insdelln$o : $(srcdir)/insdelln.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/insdelln.c -o ../objects/insdelln$o - -../objects/inserts$o : $(srcdir)/inserts.c \ - $(HEADER_DEPS) \ - $(srcdir)/linedata.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/inserts.c -o ../objects/inserts$o - -../objects/key_names$o : $(srcdir)/key_names.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/key_names.c -o ../objects/key_names$o - -../objects/keynames$o : $(srcdir)/keynames.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/keynames.c -o ../objects/keynames$o - -../objects/knight$o : $(srcdir)/knight.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/knight.c -o ../objects/knight$o - -../objects/lrtest$o : $(srcdir)/lrtest.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/lrtest.c -o ../objects/lrtest$o - -../objects/movewindow$o : $(srcdir)/movewindow.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/movewindow.c -o ../objects/movewindow$o - -../objects/ncurses$o : $(srcdir)/ncurses.c \ - $(HEADER_DEPS) \ - ../include/panel.h \ - ../include/menu.h \ - ../include/form.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/ncurses.c -o ../objects/ncurses$o - -../objects/newdemo$o : $(srcdir)/newdemo.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/newdemo.c -o ../objects/newdemo$o - -../objects/railroad$o : $(srcdir)/railroad.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/railroad.c -o ../objects/railroad$o - -../objects/rain$o : $(srcdir)/rain.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/rain.c -o ../objects/rain$o - -../objects/redraw$o : $(srcdir)/redraw.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/redraw.c -o ../objects/redraw$o - -../objects/savescreen$o : $(srcdir)/savescreen.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/savescreen.c -o ../objects/savescreen$o - -../objects/tclock$o : $(srcdir)/tclock.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/tclock.c -o ../objects/tclock$o - -../objects/test_add_wchstr$o : $(srcdir)/test_add_wchstr.c \ - $(HEADER_DEPS) \ - $(srcdir)/linedata.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_add_wchstr.c -o ../objects/test_add_wchstr$o - -../objects/test_addchstr$o : $(srcdir)/test_addchstr.c \ - $(HEADER_DEPS) \ - $(srcdir)/linedata.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_addchstr.c -o ../objects/test_addchstr$o - -../objects/test_addstr$o : $(srcdir)/test_addstr.c \ - $(HEADER_DEPS) \ - $(srcdir)/linedata.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_addstr.c -o ../objects/test_addstr$o - -../objects/test_addwstr$o : $(srcdir)/test_addwstr.c \ - $(HEADER_DEPS) \ - $(srcdir)/linedata.h - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_addwstr.c -o ../objects/test_addwstr$o - -../objects/test_arrays$o : $(srcdir)/test_arrays.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_arrays.c -o ../objects/test_arrays$o - -../objects/test_get_wstr$o : $(srcdir)/test_get_wstr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_get_wstr.c -o ../objects/test_get_wstr$o - -../objects/test_getstr$o : $(srcdir)/test_getstr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_getstr.c -o ../objects/test_getstr$o - -../objects/test_instr$o : $(srcdir)/test_instr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_instr.c -o ../objects/test_instr$o - -../objects/test_inwstr$o : $(srcdir)/test_inwstr.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_inwstr.c -o ../objects/test_inwstr$o - -../objects/test_opaque$o : $(srcdir)/test_opaque.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/test_opaque.c -o ../objects/test_opaque$o - -../objects/testaddch$o : $(srcdir)/testaddch.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/testaddch.c -o ../objects/testaddch$o - -../objects/testcurs$o : $(srcdir)/testcurs.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/testcurs.c -o ../objects/testcurs$o - -../objects/testscanw$o : $(srcdir)/testscanw.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/testscanw.c -o ../objects/testscanw$o - -../objects/view$o : $(srcdir)/view.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/view.c -o ../objects/view$o - -../objects/worm$o : $(srcdir)/worm.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/worm.c -o ../objects/worm$o - -../objects/xmas$o : $(srcdir)/xmas.c \ - $(HEADER_DEPS) - $(LIBTOOL_COMPILE) $(CC) $(CFLAGS_NORMAL) -c ../test/xmas.c -o ../objects/xmas$o - -depend : ${AUTO_SRC} - makedepend -- ${CPPFLAGS} -- ${C_SRC} - -# DO NOT DELETE THIS LINE -- make depend depends on it. diff --git a/deps/ncurses-5.9/test/Makefile.in b/deps/ncurses-5.9/test/Makefile.in deleted file mode 100644 index 9fde0ad..0000000 --- a/deps/ncurses-5.9/test/Makefile.in +++ /dev/null @@ -1,131 +0,0 @@ -# $Id: Makefile.in,v 1.108 2010/11/28 16:39:40 tom Exp $ -############################################################################## -# Copyright (c) 1998-2008,2010 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: Thomas E. Dickey 1996-on -# -# Makefile for ncurses tests. - -# turn off _all_ suffix rules; we'll generate our own -.SUFFIXES: - -SHELL = /bin/sh -VPATH = @srcdir@ - -@SET_MAKE@ - -destdir = -x = @EXEEXT@ -o = .@OBJEXT@ - -MODEL = ../@DFT_OBJ_SUBDIR@ -srcdir = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -includedir = @includedir@ - -BINDIR = $(DESTDIR)$(bindir) -LIBDIR = $(DESTDIR)$(libdir) -INCLUDEDIR = $(DESTDIR)$(includedir) - -LIBTOOL = @LIBTOOL@ -LIBTOOL_CLEAN = @LIB_CLEAN@ -LIBTOOL_COMPILE = @LIB_COMPILE@ -LIBTOOL_LINK = @LIB_LINK@ - -INSTALL = @INSTALL@ -INSTALL_PROG = @INSTALL_PROGRAM@ -transform = @program_transform_name@ -TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/' - -CTAGS = @CTAGS@ -ETAGS = @ETAGS@ - -CC = @CC@ -CPP = @CPP@ - -CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ -CPPFLAGS = -I. -I$(srcdir) -I../test -DHAVE_CONFIG_H @CPPFLAGS@ - -CCFLAGS = $(CPPFLAGS) $(CFLAGS) - -CFLAGS_LIBTOOL = $(CCFLAGS) -CFLAGS_NORMAL = $(CCFLAGS) -CFLAGS_DEBUG = $(CCFLAGS) @CC_G_OPT@ -DTRACE -CFLAGS_PROFILE = $(CCFLAGS) -pg -CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ - -CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) - -REL_VERSION = @cf_cv_rel_version@ -ABI_VERSION = @cf_cv_abi_version@ -LOCAL_LIBDIR = @top_builddir@/lib -LOCAL_LIBS = @TEST_DEPS@ -MATH_LIB = @MATH_LIB@ -TEST_LIBS = @TEST_LIBS@ - -LD = @LD@ -LINK = @LINK_TESTS@ $(LIBTOOL_LINK) $(CFLAGS) - -LDFLAGS = @LD_MODEL@ @LOCAL_LDFLAGS@ @LDFLAGS@ - -LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) -LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) -LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) -LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) -LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@ - -TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@ - -# use these for linking with all of the libraries -LIBS_DEFAULT = $(TEST_ARGS) @LIBS@ $(TEST_LIBS) $(MATH_LIB) -LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_DEFAULT) - -# use these for linking with the (n)curses library and possibly pthreads -LIBS_THREADS = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB) @PTHREAD@ -LDFLAGS_THREADS = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_THREADS) - -# use these for linking with the (n)curses library -LIBS_CURSES = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-lform.*-lpanel[^ ]*//'` $(TEST_LIBS) $(MATH_LIB) -LDFLAGS_CURSES = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_CURSES) - -# use these for linking with the tinfo library if we have it, or curses library if not -LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_ARGS@ @LDFLAGS_SHARED@ @LIBS@ $(TEST_LIBS) $(MATH_LIB) -LDFLAGS_TINFO = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO) - -LINT = @LINT@ -LINT_OPTS = @LINT_OPTS@ -LINT_LIBS = -lform -lmenu -lpanel -lncurses @LIBS@ - -HEADER_DEPS = \ - ../include/curses.h \ - ../include/term.h - -# The rest is generated from the "programs" and "modules" files... diff --git a/deps/ncurses-5.9/test/README b/deps/ncurses-5.9/test/README deleted file mode 100644 index 8a016ec..0000000 --- a/deps/ncurses-5.9/test/README +++ /dev/null @@ -1,800 +0,0 @@ -------------------------------------------------------------------------------- --- Copyright (c) 1998-2010,2011 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. -- -------------------------------------------------------------------------------- --- $Id: README,v 1.44 2011/02/26 00:09:25 tom Exp $ -------------------------------------------------------------------------------- - -The programs in this directory are designed to test your newest toy :-) -Check the sources for any further details. - -blue - Blue Moon, a nifty solitaire (uses color) -bs.c - the game of Battleships (uses color) -firework.c - multi-colored fireworks (uses color) -gdc.c - Great Digital Clock (uses color) -hanoi.c - the game of hanoi (uses color essentially) -knight.c - the game of Knight's Tour (uses color) -lrtest.c - test of access to the lower-right corner -ncurses.c - multi-test program (uses color) -newdemo.c - another test from PDCurses (uses color) -rain.c - rain drops keep falling on my head... -tclock.c - analog/digital clock -testcurs.c - a test from the PDCurses people (uses color) -worm.c - worms run all over your screen (uses color) -xmas.c - Xmas greeting card - -The bs and knight games demonstrate processing of mouse events under xterm. -This directory also contains: - -tracemunch - Perl script to crunch trace scripts to make them easier to read - -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- - -These programs provide examples of use, but do not comprise a complete set of -tests. Here is a list of library externals, noting those that are used: - -libform: -------- -TYPE_ALNUM test: demo_forms -TYPE_ALPHA test: demo_forms ncurses -TYPE_ENUM test: demo_forms -TYPE_INTEGER test: demo_forms -TYPE_IPV4 test: demo_forms -TYPE_NUMERIC test: demo_forms -TYPE_REGEXP test: demo_forms -current_field test: demo_forms edit_field ncurses -data_ahead test: demo_forms -data_behind test: demo_forms -dup_field - -dynamic_field_info test: demo_forms -field_arg test: demo_forms -field_back test: demo_forms -field_buffer test: cardfile demo_forms edit_field ncurses -field_count test: demo_forms -field_fore test: demo_forms -field_index test: demo_forms -field_info test: ncurses -field_init - -field_just - -field_opts test: demo_forms ncurses -field_opts_off test: cardfile demo_forms -field_opts_on test: demo_forms -field_pad test: demo_forms -field_status test: demo_forms -field_term - -field_type test: demo_forms -field_userptr test: demo_forms edit_field ncurses -form_driver test: cardfile demo_forms edit_field ncurses -form_fields test: cardfile demo_forms -form_init - -form_opts - -form_opts_off - -form_opts_on - -form_page test: demo_forms -form_request_by_name - -form_request_name test: edit_field -form_sub test: cardfile demo_forms ncurses -form_term - -form_userptr - -form_win test: cardfile demo_forms edit_field ncurses -free_field test: cardfile demo_forms ncurses -free_fieldtype test: ncurses -free_form test: cardfile demo_forms ncurses -link_field - -link_fieldtype - -move_field - -new_field test: cardfile demo_forms ncurses -new_fieldtype test: ncurses -new_form test: cardfile demo_forms ncurses -new_form_sp - -new_page test: demo_forms -pos_form_cursor - -post_form test: cardfile demo_forms ncurses -scale_form test: demo_forms ncurses -set_current_field test: demo_forms -set_field_back test: cardfile demo_forms edit_field ncurses -set_field_buffer test: cardfile demo_forms edit_field ncurses -set_field_fore test: demo_forms -set_field_init - -set_field_just test: cardfile demo_forms -set_field_opts test: demo_forms ncurses -set_field_pad test: demo_forms -set_field_status test: demo_forms -set_field_term - -set_field_type test: demo_forms ncurses -set_field_userptr test: demo_forms ncurses -set_fieldtype_arg - -set_fieldtype_choice - -set_form_fields - -set_form_init - -set_form_opts - -set_form_page - -set_form_sub test: cardfile demo_forms ncurses -set_form_term - -set_form_userptr - -set_form_win test: cardfile demo_forms ncurses -set_max_field test: demo_forms -set_new_page test: demo_forms -unpost_form test: cardfile demo_forms ncurses - -libmenu: -------- -current_item test: demo_menus ncurses -free_item test: ncurses -free_menu test: demo_menus ncurses -item_count test: demo_menus -item_description - -item_index test: demo_menus ncurses -item_init - -item_name test: demo_menus ncurses -item_opts - -item_opts_off - -item_opts_on - -item_term - -item_userptr - -item_value test: demo_menus ncurses -item_visible - -menu_back - -menu_driver test: demo_menus ncurses -menu_fore - -menu_format - -menu_grey - -menu_init - -menu_items test: demo_menus ncurses -menu_mark test: demo_menus -menu_opts - -menu_opts_off test: demo_menus ncurses -menu_opts_on test: demo_menus -menu_pad - -menu_pattern test: demo_menus -menu_request_by_name - -menu_request_name - -menu_spacing test: demo_menus -menu_sub test: demo_menus -menu_term - -menu_userptr - -menu_win test: demo_menus ncurses -new_item test: demo_menus ncurses -new_menu test: demo_menus ncurses -new_menu_sp - -pos_menu_cursor lib: menu -post_menu test: demo_menus ncurses -scale_menu test: demo_menus ncurses -set_current_item - -set_item_init - -set_item_opts - -set_item_term - -set_item_userptr - -set_item_value test: demo_menus ncurses -set_menu_back test: demo_menus -set_menu_fore test: demo_menus -set_menu_format test: demo_menus ncurses -set_menu_grey - -set_menu_init - -set_menu_items - -set_menu_mark test: demo_menus -set_menu_opts - -set_menu_pad - -set_menu_pattern - -set_menu_spacing - -set_menu_sub test: demo_menus ncurses -set_menu_term - -set_menu_userptr - -set_menu_win test: demo_menus ncurses -set_top_row - -top_row - -unpost_menu test: demo_menus ncurses - -libncurses: ----------- -BC - -COLORS test: echochar ncurses savescreen xmas -COLOR_PAIR test: background blue bs cardfile clip_printw demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas -COLOR_PAIRS test: echochar ncurses newdemo savescreen -COLS test: cardfile demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto echochar edit_field firework foldkeys hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm -ESCDELAY test: test_opaque -LINES test: cardfile demo_defkey demo_keyok demo_menus demo_panels ditto echochar edit_field firework hanoi hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas -PAIR_NUMBER test: ncurses -PC lib: ncurses -SP lib: form -TABSIZE test: test_opaque -UP - -acs_map test: gdc ins_wide inserts knight movewindow ncurses newdemo test_add_wchstr test_addchstr test_addstr test_addwstr testcurs -add_wch test: demo_panels ncurses test_add_wchstr test_addwstr -add_wchnstr test: test_add_wchstr -add_wchstr test: test_add_wchstr view -addch test: blue bs echochar hashtest ncurses savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_opaque testaddch view worm -addchnstr test: test_addchstr -addchstr test: test_addchstr -addnstr test: test_addstr -addnwstr test: ncurses test_addwstr -addstr test: blue bs cardfile gdc hanoi lrtest ncurses savescreen test_addstr -addwstr test: ncurses test_addwstr -assume_default_colors test: ncurses -assume_default_colors_sp - -attr_get test: ncurses -attr_off test: ncurses -attr_on test: ncurses -attr_set test: ncurses -attroff test: echochar filter gdc ncurses tclock -attron test: bs echochar filter gdc ncurses -attrset test: bs firework gdc hanoi insdelln ncurses rain tclock testaddch testcurs -baudrate lib: ncurses -baudrate_sp lib: ncurses -beep test: blue bs cardfile chgat clip_printw demo_forms demo_menus demo_panels edit_field hanoi inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas -beep_sp lib: ncurses -bkgd test: background cardfile demo_forms ncurses savescreen tclock view -bkgdset test: background ncurses testaddch -bkgrnd test: ncurses -bkgrndset test: ncurses -boolcodes test: demo_termcap test_arrays progs: dump_entry -boolfnames test: demo_terminfo test_arrays progs: dump_entry -boolnames test: demo_terminfo test_arrays progs: dump_entry infocmp -border - -border_set - -box test: cardfile chgat clip_printw demo_forms demo_menus demo_panels ditto edit_field inch_wide inchs ins_wide insdelln inserts lrtest ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs -box_set test: ncurses -can_change_color test: ncurses -can_change_color_sp - -cbreak test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto filter firework foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas -cbreak_sp lib: ncurses -chgat test: chgat -clear test: blue bs gdc ncurses testcurs xmas -clearok test: bs knight -clrtobot test: demo_menus ncurses -clrtoeol test: blue bs demo_altkeys demo_menus foldkeys hanoi hashtest movewindow ncurses view -color_content test: ncurses -color_content_sp - -color_set test: color_set ncurses -copywin test: ncurses testcurs -cur_term test: demo_terminfo dots dots_mvcur lrtest progs: clear tabs tput tset -curs_set test: echochar firework gdc hanoi lrtest ncurses newdemo rain savescreen tclock testcurs worm xmas -curs_set_sp lib: ncurses -curscr test: demo_panels edit_field knight lrtest ncurses savescreen tclock view -curses_version test: ncurses progs: infocmp tic toe tput tset -def_prog_mode test: bs ncurses -def_prog_mode_sp lib: ncurses -def_shell_mode - -def_shell_mode_sp lib: ncurses -define_key test: demo_altkeys demo_defkey foldkeys -define_key_sp - -del_curterm lib: ncurses -del_curterm_sp lib: ncurses -delay_output test: newdemo -delay_output_sp - -delch - -deleteln test: insdelln -delscreen test: ditto dots_mvcur -delwin test: cardfile chgat clip_printw demo_forms demo_panels edit_field inch_wide inchs ins_wide insdelln inserts movewindow ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs -derwin test: cardfile chgat clip_printw demo_forms demo_menus ditto inch_wide inchs ins_wide insdelln inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque -doupdate test: cardfile demo_menus demo_panels ditto edit_field ins_wide inserts knight movewindow ncurses redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr -doupdate_sp lib: ncurses -dupwin test: edit_field -echo test: bs hanoi ncurses test_get_wstr test_getstr testcurs testscanw -echo_sp lib: ncurses -echo_wchar test: ncurses -echochar test: echochar ncurses -endwin test: background blue bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto dots_mvcur echochar filter firework firstlast foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses newdemo rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas -endwin_sp lib: ncurses -erase test: cardfile demo_menus filter firework firstlast hanoi lrtest ncurses tclock test_opaque testcurs -erasechar lib: ncurses -erasechar_sp lib: ncurses -erasewchar - -filter test: filter -filter_sp - -flash test: cardfile lrtest ncurses tclock testcurs -flash_sp - -flushinp test: ncurses newdemo testcurs -flushinp_sp lib: ncurses -get_escdelay - -get_escdelay_sp - -get_wch - -get_wstr test: test_get_wstr -getattrs - -getbegx test: chgat clip_printw demo_menus demo_panels insdelln movewindow ncurses newdemo redraw testcurs -getbegy test: chgat clip_printw demo_menus demo_panels insdelln movewindow ncurses newdemo redraw testcurs -getbkgd test: ncurses -getbkgrnd test: ncurses -getcchar test: ncurses view -getch test: background blue bs chgat color_set demo_altkeys filter firework firstlast foldkeys hanoi hashtest insdelln lrtest savescreen tclock test_opaque testaddch testcurs view xmas -getcurx test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels firstlast foldkeys insdelln movewindow ncurses redraw savescreen test_get_wstr test_getstr test_opaque testcurs -getcury test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels edit_field firstlast foldkeys insdelln movewindow ncurses redraw savescreen test_opaque testcurs -getmaxx test: chgat clip_printw demo_panels inch_wide inchs insdelln movewindow ncurses newdemo redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs -getmaxy test: chgat clip_printw demo_forms demo_panels inch_wide inchs insdelln movewindow ncurses newdemo redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs -getmouse test: bs knight movewindow ncurses -getmouse_sp - -getn_wstr test: test_get_wstr -getnstr test: filter ncurses test_getstr -getparx test: movewindow -getpary test: movewindow -getstr test: test_getstr -getwin test: ncurses -getwin_sp - -halfdelay test: view -halfdelay_sp - -has_colors test: background bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas -has_colors_sp lib: ncurses -has_ic test: lrtest -has_ic_sp lib: ncurses -has_il - -has_il_sp lib: ncurses -has_key - -has_key_sp lib: ncurses -has_mouse - -has_mouse_sp - -hline test: gdc ncurses -hline_set - -idcok test: test_opaque -idlok test: ncurses test_opaque testscanw view -immedok test: test_opaque -in_wch test: inch_wide -in_wchnstr test: inch_wide -in_wchstr test: inch_wide -inch test: inchs -inchnstr test: inchs -inchstr test: inchs -init_color test: ncurses -init_color_sp lib: ncurses -init_pair test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas -init_pair_sp - -initscr test: background blue bs cardfile chgat clip_printw color_set demo_defkey demo_forms demo_keyok demo_menus demo_panels echochar filter firework firstlast gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas -innstr test: test_instr -innwstr test: test_inwstr -ins_nwstr test: ins_wide -ins_wch test: ins_wide -ins_wstr test: ins_wide -insch test: ins_wide inserts -insdelln test: insdelln -insertln test: insdelln -insnstr test: inserts -insstr test: inserts -instr test: test_instr -intrflush test: demo_forms movewindow -intrflush_sp - -inwstr test: test_inwstr -is_cleared test: test_opaque -is_idcok test: test_opaque -is_idlok test: test_opaque -is_immedok test: test_opaque -is_keypad test: test_opaque -is_leaveok test: test_opaque -is_linetouched lib: form -is_nodelay test: test_opaque -is_notimeout test: test_opaque -is_pad - -is_scrollok test: test_opaque -is_subwin - -is_syncok test: test_opaque -is_term_resized - -is_term_resized_sp - -is_wintouched lib: ncurses -isendwin - -isendwin_sp - -key_defined test: demo_defkey foldkeys -key_defined_sp lib: ncurses -key_name test: key_names ncurses -keybound test: demo_altkeys demo_defkey -keybound_sp lib: ncurses -keyname test: demo_altkeys demo_defkey demo_keyok demo_menus edit_field foldkeys keynames movewindow ncurses redraw testcurs view progs: tic -keyname_sp lib: ncurses -keyok test: demo_keyok foldkeys -keyok_sp lib: ncurses -keypad test: bs cardfile chgat clip_printw demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto edit_field filter firework foldkeys hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view -killchar lib: ncurses -killchar_sp lib: ncurses -killwchar - -leaveok test: hanoi test_opaque -longname test: testcurs progs: tput -mcprint - -mcprint_sp - -meta test: key_names keynames ncurses -mouse_trafo - -mouseinterval - -mouseinterval_sp - -mousemask test: bs demo_forms demo_menus knight movewindow ncurses -mousemask_sp - -move test: blue bs cardfile chgat demo_altkeys demo_menus echochar foldkeys gdc hanoi hashtest inch_wide inchs ins_wide inserts knight lrtest movewindow ncurses savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testscanw view xmas -mvadd_wch test: ncurses test_add_wchstr test_addwstr -mvadd_wchnstr test: test_add_wchstr -mvadd_wchstr test: test_add_wchstr -mvaddch test: bs gdc hanoi lrtest ncurses rain tclock test_add_wchstr test_addchstr test_addstr test_addwstr xmas -mvaddchnstr test: gdc test_addchstr -mvaddchstr test: test_addchstr -mvaddnstr test: test_addstr -mvaddnwstr test: test_addwstr -mvaddstr test: bs demo_forms gdc hanoi knight ncurses rain tclock test_addstr testcurs xmas -mvaddwstr test: test_addwstr -mvchgat test: chgat -mvcur test: dots_mvcur redraw -mvcur_sp lib: ncurses -mvdelch - -mvderwin test: movewindow -mvget_wch - -mvget_wstr test: test_get_wstr -mvgetch - -mvgetn_wstr test: test_get_wstr -mvgetnstr test: test_getstr -mvgetstr test: test_getstr -mvhline test: ncurses -mvhline_set test: ncurses -mvin_wch test: inch_wide -mvin_wchnstr test: inch_wide -mvin_wchstr test: inch_wide -mvinch test: inchs -mvinchnstr test: gdc inchs -mvinchstr test: inchs -mvinnstr test: test_instr -mvinnwstr test: test_inwstr -mvins_nwstr test: ins_wide -mvins_wch test: ins_wide -mvins_wstr test: ins_wide -mvinsch test: ins_wide inserts -mvinsnstr test: inserts -mvinsstr test: inserts -mvinstr test: test_instr -mvinwstr test: test_inwstr -mvprintw test: bs demo_menus firework hanoi ncurses tclock view -mvscanw - -mvvline test: ncurses -mvvline_set test: ncurses -mvwadd_wch test: test_add_wchstr test_addwstr -mvwadd_wchnstr test: test_add_wchstr -mvwadd_wchstr test: inch_wide test_add_wchstr -mvwaddch test: movewindow newdemo test_add_wchstr test_addchstr test_addstr test_addwstr testcurs xmas -mvwaddchnstr test: test_addchstr -mvwaddchstr test: inchs test_addchstr -mvwaddnstr test: newdemo test_addstr testcurs -mvwaddnwstr test: test_addwstr -mvwaddstr test: ditto firstlast ins_wide inserts knight ncurses newdemo test_addstr test_addwstr test_instr testcurs xmas -mvwaddwstr test: test_addwstr test_inwstr -mvwchgat test: chgat -mvwdelch test: ncurses -mvwget_wch - -mvwget_wstr test: test_get_wstr -mvwgetch test: inch_wide inchs test_get_wstr test_getstr test_instr test_inwstr test_opaque -mvwgetn_wstr test: test_get_wstr -mvwgetnstr test: test_getstr -mvwgetstr test: test_getstr -mvwhline test: movewindow -mvwhline_set - -mvwin test: cardfile demo_menus movewindow testcurs xmas -mvwin_wch test: inch_wide -mvwin_wchnstr test: inch_wide -mvwin_wchstr test: inch_wide -mvwinch test: inchs newdemo testcurs -mvwinchnstr test: inchs -mvwinchstr test: inchs -mvwinnstr test: test_instr testcurs -mvwinnwstr test: test_inwstr -mvwins_nwstr test: ins_wide -mvwins_wch test: ins_wide -mvwins_wstr test: ins_wide -mvwinsch test: ins_wide inserts -mvwinsnstr test: inserts -mvwinsstr test: inserts testcurs -mvwinstr test: test_instr -mvwinwstr test: test_inwstr -mvwprintw test: chgat clip_printw demo_panels inch_wide inchs insdelln ncurses test_instr test_inwstr testcurs -mvwscanw test: testcurs -mvwvline test: ins_wide inserts movewindow test_add_wchstr test_addchstr test_addstr test_addwstr -mvwvline_set - -napms test: demo_panels ditto dots dots_mvcur echochar firework gdc hanoi lrtest ncurses railroad rain tclock test_opaque testcurs view worm xmas progs: tset -napms_sp - -new_prescr lib: ncurses -newpad test: edit_field ncurses testcurs -newpad_sp lib: ncurses -newscr lib: ncurses -newterm test: demo_altkeys ditto dots_mvcur filter foldkeys gdc key_names keynames -newterm_sp - -newwin test: cardfile chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto edit_field firstlast inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs xmas -newwin_sp lib: ncurses -nl test: demo_forms ncurses rain testcurs -nl_sp lib: ncurses -nocbreak test: testcurs -nocbreak_sp lib: ncurses -nodelay test: ditto firework gdc lrtest ncurses newdemo rain tclock test_opaque view worm xmas -noecho test: background bs cardfile chgat clip_printw color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto firework firstlast foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest movewindow ncurses rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas -noecho_sp lib: ncurses -nofilter - -nofilter_sp - -nonl test: bs demo_forms hashtest movewindow ncurses view worm xmas -nonl_sp lib: ncurses -noqiflush - -noqiflush_sp - -noraw test: demo_forms demo_menus ncurses testcurs -noraw_sp lib: ncurses -notimeout test: test_opaque -numcodes test: demo_termcap test_arrays progs: dump_entry -numfnames test: demo_terminfo test_arrays progs: dump_entry -numnames test: demo_terminfo test_arrays progs: dump_entry infocmp -ospeed progs: tset -overlay test: ncurses testcurs xmas -overwrite test: ncurses savescreen -pair_content test: background color_set -pair_content_sp lib: ncurses -pecho_wchar - -pechochar - -pnoutrefresh test: edit_field ncurses -prefresh test: testcurs -printw test: background blue bs color_set demo_altkeys demo_defkey demo_keyok demo_menus filter foldkeys ncurses savescreen testcurs testscanw view -putp progs: tput -putp_sp lib: ncurses -putwin test: ncurses -qiflush - -qiflush_sp - -raw test: demo_forms ncurses redraw testcurs -raw_sp lib: ncurses -redrawwin test: redraw -refresh test: blue bs demo_defkey demo_forms demo_keyok demo_menus demo_panels echochar filter firstlast gdc hanoi hashtest lrtest movewindow ncurses savescreen tclock testcurs view xmas -reset_prog_mode test: filter ncurses -reset_prog_mode_sp lib: ncurses -reset_shell_mode test: bs filter savescreen -reset_shell_mode_sp lib: ncurses -resetty - -resetty_sp - -resize_term test: view -resize_term_sp - -resizeterm - -resizeterm_sp lib: ncurses -restartterm - -restartterm_sp - -ripoffline test: demo_menus ncurses -ripoffline_sp - -savetty - -savetty_sp - -scanw test: testcurs testscanw -scr_dump test: savescreen -scr_init test: savescreen -scr_init_sp - -scr_restore test: savescreen -scr_restore_sp - -scr_set test: savescreen -scr_set_sp - -scrl test: view -scroll test: testcurs -scrollok test: clip_printw demo_altkeys demo_defkey demo_keyok demo_panels ditto foldkeys hashtest knight ncurses redraw test_opaque testcurs testscanw view -set_curterm lib: ncurses -set_curterm_sp - -set_escdelay test: test_opaque -set_escdelay_sp lib: ncurses -set_tabsize test: test_opaque -set_tabsize_sp - -set_term lib: ncurses -setcchar test: demo_panels ins_wide ncurses test_add_wchstr test_addwstr view -setscrreg test: view -setupterm test: demo_termcap demo_terminfo dots progs: clear tabs tput tset -slk_attr - -slk_attr_off - -slk_attr_on - -slk_attr_set test: ncurses -slk_attr_set_sp - -slk_attr_sp - -slk_attroff lib: ncurses -slk_attroff_sp - -slk_attron lib: ncurses -slk_attron_sp - -slk_attrset test: ncurses -slk_attrset_sp - -slk_clear test: ncurses -slk_clear_sp - -slk_color test: ncurses -slk_color_sp - -slk_init test: ncurses -slk_init_sp - -slk_label test: ncurses -slk_label_sp - -slk_noutrefresh test: ncurses -slk_noutrefresh_sp - -slk_refresh test: ncurses -slk_refresh_sp lib: ncurses -slk_restore test: ncurses -slk_restore_sp lib: ncurses -slk_set test: ncurses -slk_set_sp - -slk_touch test: ncurses -slk_touch_sp lib: ncurses -slk_wset test: ncurses -standend test: blue gdc ncurses -standout test: blue ncurses -start_color test: background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_panels echochar filter firework gdc hanoi ins_wide insdelln inserts knight ncurses newdemo rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas -start_color_sp - -stdscr test: bs chgat clip_printw demo_altkeys demo_forms demo_menus demo_panels ditto filter firework foldkeys gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest movewindow ncurses rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view worm xmas -strcodes test: demo_termcap test_arrays progs: dump_entry -strfnames test: demo_terminfo test_arrays progs: dump_entry -strnames test: demo_terminfo foldkeys test_arrays progs: dump_entry infocmp tic -subpad test: testcurs -subwin test: movewindow ncurses newdemo testcurs -syncok test: test_opaque -term_attrs test: ncurses -term_attrs_sp - -termattrs test: ncurses testcurs -termattrs_sp lib: ncurses -termname test: testcurs -termname_sp lib: ncurses -tgetent test: demo_termcap railroad -tgetent_sp - -tgetflag test: demo_termcap -tgetflag_sp - -tgetnum test: demo_termcap railroad -tgetnum_sp - -tgetstr test: demo_termcap railroad -tgetstr_sp - -tgoto test: railroad -tigetflag test: demo_terminfo progs: tput -tigetflag_sp - -tigetnum test: demo_terminfo ncurses progs: tput -tigetnum_sp - -tigetstr test: blue demo_defkey demo_terminfo foldkeys testcurs progs: tput -tigetstr_sp - -timeout test: rain savescreen -tiparm - -touchline test: chgat clip_printw insdelln -touchwin test: chgat clip_printw demo_menus edit_field filter firstlast inch_wide inchs ins_wide insdelln inserts movewindow ncurses redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque xmas -tparm test: dots dots_mvcur progs: tabs tic tput -tputs test: dots dots_mvcur railroad progs: clear tabs tset -tputs_sp lib: ncurses -trace test: demo_menus hanoi hashtest lrtest ncurses testcurs view worm -ttytype lib: ncurses -typeahead test: testcurs -typeahead_sp lib: ncurses -unctrl test: ncurses redraw test_add_wchstr test_addchstr testcurs -unctrl_sp lib: ncurses -unget_wch - -unget_wch_sp - -ungetch test: bs knight -ungetch_sp lib: ncurses -ungetmouse - -ungetmouse_sp - -untouchwin lib: form -use_default_colors test: filter firework gdc hanoi knight ncurses rain tclock worm xmas -use_default_colors_sp - -use_env progs: tput -use_env_sp - -use_extended_names test: demo_terminfo progs: infocmp tic -use_legacy_coding - -use_legacy_coding_sp - -use_screen test: ditto -use_window test: rain worm -vid_attr - -vid_attr_sp - -vid_puts - -vid_puts_sp - -vidattr - -vidattr_sp lib: ncurses -vidputs - -vidputs_sp lib: ncurses -vline test: gdc ncurses -vline_set - -vw_printw test: clip_printw -vw_scanw - -vwprintw test: movewindow -vwscanw lib: ncurses -wadd_wch test: inch_wide test_add_wchstr test_addwstr -wadd_wchnstr test: test_add_wchstr -wadd_wchstr test: test_add_wchstr -waddch test: demo_forms demo_panels ditto firstlast inch_wide inchs knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque worm -waddchnstr test: test_addchstr -waddchstr test: test_addchstr -waddnstr test: test_addstr -waddnwstr test: ncurses test_addwstr -waddstr test: chgat clip_printw demo_forms demo_panels edit_field firstlast ins_wide insdelln knight ncurses redraw test_add_wchstr test_addstr test_addwstr testcurs -waddwstr test: ins_wide test_add_wchstr test_addwstr test_get_wstr -wattr_get - -wattr_off lib: ncurses -wattr_on lib: ncurses -wattr_set - -wattroff test: demo_forms ncurses testcurs xmas -wattron test: testcurs xmas -wattrset test: clip_printw demo_forms insdelln ncurses newdemo test_get_wstr test_getstr testcurs xmas -wbkgd test: cardfile demo_forms demo_menus ncurses newdemo testcurs -wbkgdset test: demo_panels ins_wide inserts ncurses test_add_wchstr test_addchstr test_addstr test_addwstr -wbkgrnd lib: ncurses -wbkgrndset lib: ncurses -wborder test: ncurses -wborder_set test: ncurses -wchgat test: chgat test_get_wstr test_getstr view -wclear test: ncurses test_opaque testcurs -wclrtobot test: firstlast inch_wide inchs ncurses test_instr test_inwstr testcurs -wclrtoeol test: chgat clip_printw demo_defkey demo_keyok demo_panels firstlast inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_instr test_inwstr testcurs -wcolor_set lib: ncurses -wcursyncup lib: form -wdelch test: ncurses testcurs -wdeleteln test: insdelln testcurs -wecho_wchar lib: ncurses -wechochar lib: ncurses -wenclose test: ncurses -werase test: cardfile demo_forms demo_menus demo_panels edit_field firstlast knight ncurses newdemo test_get_wstr test_getstr test_opaque testcurs xmas -wget_wch test: ins_wide ncurses test_add_wchstr test_addwstr -wget_wstr test: test_get_wstr -wgetbkgrnd lib: ncurses -wgetch test: cardfile chgat clip_printw demo_defkey demo_keyok demo_menus demo_panels ditto edit_field gdc insdelln inserts knight movewindow ncurses newdemo rain redraw test_addchstr test_addstr test_opaque testcurs worm -wgetn_wstr test: ncurses test_get_wstr -wgetnstr test: ncurses test_getstr -wgetparent test: test_opaque -wgetscrreg test: test_opaque -wgetstr test: test_getstr -whline test: testcurs -whline_set lib: ncurses -win_wch test: inch_wide -win_wchnstr test: inch_wide -win_wchstr test: inch_wide -winch test: inchs knight testcurs -winchnstr test: inchs -winchstr test: inchs -winnstr test: demo_altkeys demo_defkey foldkeys test_instr -winnwstr test: test_inwstr -wins_nwstr test: ins_wide -wins_wch test: ins_wide -wins_wstr test: ins_wide -winsch test: ins_wide inserts testcurs -winsdelln test: insdelln -winsertln test: insdelln testcurs -winsnstr test: inserts -winsstr test: inserts -winstr test: test_instr -winwstr test: test_inwstr -wmouse_trafo test: ncurses -wmove test: chgat clip_printw demo_altkeys demo_defkey demo_keyok demo_menus demo_panels firstlast foldkeys inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs worm -wnoutrefresh test: demo_menus ditto edit_field inch_wide inchs ins_wide inserts knight movewindow ncurses redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque -wprintw test: chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels edit_field inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs -wredrawln test: redraw -wrefresh test: chgat clip_printw demo_forms demo_keyok demo_menus demo_panels edit_field firstlast ins_wide insdelln inserts knight lrtest movewindow ncurses newdemo redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas -wresize test: cardfile ncurses -wscanw test: testcurs -wscrl test: ncurses testcurs -wsetscrreg test: ncurses testcurs -wstandend test: ncurses test_opaque xmas -wstandout test: ncurses test_opaque xmas -wsyncdown test: movewindow -wsyncup lib: form -wtimeout test: ncurses -wtouchln lib: ncurses -wunctrl lib: ncurses -wunctrl_sp - -wvline test: testcurs -wvline_set lib: ncurses - -libpanel: --------- -bottom_panel test: demo_panels ncurses -ceiling_panel - -del_panel test: demo_panels ncurses -ground_panel - -hide_panel test: demo_panels ncurses -move_panel test: demo_panels ncurses -new_panel test: cardfile demo_panels ncurses -panel_above test: demo_panels -panel_below test: demo_panels -panel_hidden test: demo_panels -panel_userptr test: demo_panels ncurses -panel_window test: cardfile demo_panels ncurses -replace_panel test: demo_panels -set_panel_userptr test: demo_panels ncurses -show_panel test: demo_panels ncurses -top_panel test: cardfile demo_panels ncurses -update_panels test: cardfile demo_panels ncurses -update_panels_sp - diff --git a/deps/ncurses-5.9/test/aclocal.m4 b/deps/ncurses-5.9/test/aclocal.m4 deleted file mode 100644 index 4e33431..0000000 --- a/deps/ncurses-5.9/test/aclocal.m4 +++ /dev/null @@ -1,3130 +0,0 @@ -dnl*************************************************************************** -dnl Copyright (c) 2003-2010,2011 Free Software Foundation, Inc. * -dnl * -dnl Permission is hereby granted, free of charge, to any person obtaining a * -dnl copy of this software and associated documentation files (the * -dnl "Software"), to deal in the Software without restriction, including * -dnl without limitation the rights to use, copy, modify, merge, publish, * -dnl distribute, distribute with modifications, sublicense, and/or sell * -dnl copies of the Software, and to permit persons to whom the Software is * -dnl furnished to do so, subject to the following conditions: * -dnl * -dnl The above copyright notice and this permission notice shall be included * -dnl in all copies or substantial portions of the Software. * -dnl * -dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * -dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * -dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * -dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * -dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * -dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * -dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * -dnl * -dnl Except as contained in this notice, the name(s) of the above copyright * -dnl holders shall not be used in advertising or otherwise to promote the * -dnl sale, use or other dealings in this Software without prior written * -dnl authorization. * -dnl*************************************************************************** -dnl -dnl $Id: aclocal.m4,v 1.50 2011/03/24 08:28:07 tom Exp $ -dnl -dnl Author: Thomas E. Dickey -dnl -dnl Macros used in NCURSES test programs auto-configuration script. -dnl -dnl These macros are maintained separately from NCURSES. The copyright on -dnl this file applies to the aggregation of macros and does not affect use of -dnl these macros in other applications. -dnl -dnl See http://invisible-island.net/autoconf/ for additional information. -dnl -dnl --------------------------------------------------------------------------- -dnl --------------------------------------------------------------------------- -dnl CF_ADD_CFLAGS version: 10 updated: 2010/05/26 05:38:42 -dnl ------------- -dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS -dnl The second parameter if given makes this macro verbose. -dnl -dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, -dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily -dnl confused by the quotes (which require backslashes to keep them usable). -AC_DEFUN([CF_ADD_CFLAGS], -[ -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $1 -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[[^=]]*='\''\"[[^"]]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -D*) - cf_tst_cppflags=`echo "x$cf_add_cflags" | sed -e 's/^...//' -e 's/=.*//'` - CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) - ;; - esac - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[[^"]]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -AC_SUBST(EXTRA_CPPFLAGS) - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_INCDIR version: 13 updated: 2010/05/26 16:44:57 -dnl ------------- -dnl Add an include-directory to $CPPFLAGS. Don't add /usr/include, since it's -dnl redundant. We don't normally need to add -I/usr/local/include for gcc, -dnl but old versions (and some misinstalled ones) need that. To make things -dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to -dnl the include-path). -AC_DEFUN([CF_ADD_INCDIR], -[ -if test -n "$1" ; then - for cf_add_incdir in $1 - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - AC_TRY_COMPILE([#include ], - [printf("Hello")], - [], - [cf_have_incdir=yes]) - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - CF_VERBOSE(adding $cf_add_incdir to include-path) - ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 -dnl ---------- -dnl Add a library, used to enforce consistency. -dnl -dnl $1 = library to add, without the "-l" -dnl $2 = variable to update (default $LIBS) -AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIBDIR version: 9 updated: 2010/05/26 16:44:57 -dnl ------------- -dnl Adds to the library-path -dnl -dnl Some machines have trouble with multiple -L options. -dnl -dnl $1 is the (list of) directory(s) to add -dnl $2 is the optional name of the variable to update (default LDFLAGS) -dnl -AC_DEFUN([CF_ADD_LIBDIR], -[ -if test -n "$1" ; then - for cf_add_libdir in $1 - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - CF_VERBOSE(adding $cf_add_libdir to library-path) - ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])" - fi - fi - done -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIBS version: 1 updated: 2010/06/02 05:03:05 -dnl ----------- -dnl Add one or more libraries, used to enforce consistency. -dnl -dnl $1 = libraries to add, with the "-l", etc. -dnl $2 = variable to update (default $LIBS) -AC_DEFUN([CF_ADD_LIBS],[ifelse($2,,LIBS,[$2])="$1 [$]ifelse($2,,LIBS,[$2])"])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_LIB_AFTER version: 2 updated: 2010/11/08 20:33:46 -dnl ---------------- -dnl Add a given library after another, e.g., following the one it satisfies a -dnl dependency for. -dnl -dnl $1 = the first library -dnl $2 = its dependency -AC_DEFUN([CF_ADD_LIB_AFTER],[ -CF_VERBOSE(...before $LIBS) -LIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s,$1 ,$1 $2 ," -e 's/ / /g'` -CF_VERBOSE(...after $LIBS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ADD_SUBDIR_PATH version: 3 updated: 2010/07/03 20:58:12 -dnl ------------------ -dnl Append to a search-list for a nonstandard header/lib-file -dnl $1 = the variable to return as result -dnl $2 = the package name -dnl $3 = the subdirectory, e.g., bin, include or lib -dnl $4 = the directory under which we will test for subdirectories -dnl $5 = a directory that we do not want $4 to match -AC_DEFUN([CF_ADD_SUBDIR_PATH], -[ -test "$4" != "$5" && \ -test -d "$4" && \ -ifelse([$5],NONE,,[(test $5 = NONE || test "$4" != "$5") &&]) { - test -n "$verbose" && echo " ... testing for $3-directories under $4" - test -d $4/$3 && $1="[$]$1 $4/$3" - test -d $4/$3/$2 && $1="[$]$1 $4/$3/$2" - test -d $4/$3/$2/$3 && $1="[$]$1 $4/$3/$2/$3" - test -d $4/$2/$3 && $1="[$]$1 $4/$2/$3" - test -d $4/$2/$3/$2 && $1="[$]$1 $4/$2/$3/$2" -} -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ANSI_CC_CHECK version: 10 updated: 2010/10/23 15:52:32 -dnl ---------------- -dnl This is adapted from the macros 'fp_PROG_CC_STDC' and 'fp_C_PROTOTYPES' -dnl in the sharutils 4.2 distribution. -AC_DEFUN([CF_ANSI_CC_CHECK], -[ -AC_CACHE_CHECK(for ${CC:-cc} option to accept ANSI C, cf_cv_ansi_cc,[ -cf_cv_ansi_cc=no -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) -for cf_arg in "-DCC_HAS_PROTOS" \ - "" \ - -qlanglvl=ansi \ - -std1 \ - -Ae \ - "-Aa -D_HPUX_SOURCE" \ - -Xc -do - CF_ADD_CFLAGS($cf_arg) - AC_TRY_COMPILE( -[ -#ifndef CC_HAS_PROTOS -#if !defined(__STDC__) || (__STDC__ != 1) -choke me -#endif -#endif -],[ - int test (int i, double x); - struct s1 {int (*f) (int a);}; - struct s2 {int (*f) (double a);};], - [cf_cv_ansi_cc="$cf_arg"; break]) -done -CFLAGS="$cf_save_CFLAGS" -CPPFLAGS="$cf_save_CPPFLAGS" -]) - -if test "$cf_cv_ansi_cc" != "no"; then -if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then - CF_ADD_CFLAGS($cf_cv_ansi_cc) -else - AC_DEFINE(CC_HAS_PROTOS) -fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ANSI_CC_REQD version: 4 updated: 2008/03/23 14:48:54 -dnl --------------- -dnl For programs that must use an ANSI compiler, obtain compiler options that -dnl will make it recognize prototypes. We'll do preprocessor checks in other -dnl macros, since tools such as unproto can fake prototypes, but only part of -dnl the preprocessor. -AC_DEFUN([CF_ANSI_CC_REQD], -[AC_REQUIRE([CF_ANSI_CC_CHECK]) -if test "$cf_cv_ansi_cc" = "no"; then - AC_MSG_ERROR( -[Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 -dnl -------------- -dnl Allow user to disable a normally-on option. -AC_DEFUN([CF_ARG_DISABLE], -[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 -dnl ------------- -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: 4 updated: 2010/05/26 05:38:42 -dnl ------------- -dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus -dnl values. -dnl -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 $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) - if test "$enableval" != "$5" ; then -ifelse([$3],,[ :]dnl -,[ $3]) ifelse([$4],,,[ - else - $4]) - fi],[enableval=$5 ifelse([$4],,,[ - $4 -])dnl - ])])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CHECK_CACHE version: 11 updated: 2008/03/23 14:45:59 -dnl -------------- -dnl Check if we're accidentally using a cache from a different machine. -dnl Derive the system name, as a check for reusing the autoconf cache. -dnl -dnl If we've packaged config.guess and config.sub, run that (since it does a -dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow -dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM -dnl which is useful in cross-compiles. -dnl -dnl Note: we would use $ac_config_sub, but that is one of the places where -dnl autoconf 2.5x broke compatibility with autoconf 2.13 -AC_DEFUN([CF_CHECK_CACHE], -[ -if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then - ifelse([$1],,[AC_CANONICAL_HOST],[$1]) - system_name="$host_os" -else - system_name="`(uname -s -r) 2>/dev/null`" - if test -z "$system_name" ; then - system_name="`(hostname) 2>/dev/null`" - fi -fi -test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name") -AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) - -test -z "$system_name" && system_name="$cf_cv_system_name" -test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) - -if test ".$system_name" != ".$cf_cv_system_name" ; then - AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) - AC_MSG_ERROR("Please remove config.cache and try again.") -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CHECK_CFLAGS version: 2 updated: 2001/12/30 19:09:58 -dnl --------------- -dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from -dnl a build-configuration such as imake. These have the pitfall that they -dnl often contain compiler-specific options which we cannot use, mixed with -dnl preprocessor options that we usually can. -AC_DEFUN([CF_CHECK_CFLAGS], -[ -CF_VERBOSE(checking additions to CFLAGS) -cf_check_cflags="$CFLAGS" -cf_check_cppflags="$CPPFLAGS" -CF_ADD_CFLAGS($1,yes) -if test "$cf_check_cflags" != "$CFLAGS" ; then -AC_TRY_LINK([#include ],[printf("Hello world");],, - [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS) - if test "$cf_check_cppflags" != "$CPPFLAGS" ; then - CF_VERBOSE(but keeping change to \$CPPFLAGS) - fi - CFLAGS="$cf_check_flags"]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_ACS_MAP version: 6 updated: 2010/10/23 15:54:49 -dnl ----------------- -dnl Check for likely values of acs_map[]: -AC_DEFUN([CF_CURSES_ACS_MAP], -[ -AC_REQUIRE([CF_NCURSES_WRAP_PREFIX])dnl -AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[ -cf_cv_curses_acs_map=unknown -for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map -do -AC_TRY_LINK([ -#include <${cf_cv_ncurses_header:-curses.h}> -],[ -$name['k'] = ACS_PLUS -],[cf_cv_curses_acs_map=$name; break]) -done -]) - -test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map) -]) -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_CHECK_DATA version: 4 updated: 2011/01/15 16:39:24 -dnl -------------------- -dnl Check if curses.h defines the given data/variable. -dnl Use this after CF_NCURSES_CONFIG or CF_CURSES_CONFIG. -AC_DEFUN([CF_CURSES_CHECK_DATA], -[ -AC_MSG_CHECKING(for data $1 declaration in ${cf_cv_ncurses_header:-curses.h}) - -AC_TRY_COMPILE(CF__CURSES_HEAD,[ -void *foo = &($1) -],cf_result=yes,cf_result=no) -AC_MSG_RESULT($cf_result) - -if test $cf_result = yes ; then - CF_UPPER(cf_result,have_curses_data_$1) - AC_DEFINE_UNQUOTED($cf_result) -else - AC_MSG_CHECKING(for data $1 in library) - # BSD linkers insist on making weak linkage, but resolve at runtime. - AC_TRY_RUN(CF__CURSES_HEAD -[ -extern char $1; -int main(void) -{ - void *foo = &($1); - ${cf_cv_main_return:-return}(foo == 0); -}],[cf_result=yes],[cf_result=no],[ - # cross-compiling - AC_TRY_LINK(CF__CURSES_HEAD -[extern char $1;],[ - do { - void *foo = &($1); - ${cf_cv_main_return:-return}(foo == 0); - } while (0) -],[cf_result=yes],[cf_result=no]) -]) - AC_MSG_RESULT($cf_result) - if test $cf_result = yes ; then - CF_UPPER(cf_result,decl_curses_data_$1) - AC_DEFINE_UNQUOTED($cf_result) - fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_CHECK_TYPE version: 3 updated: 2010/10/23 15:54:49 -dnl -------------------- -dnl Check if curses.h defines the given type -AC_DEFUN([CF_CURSES_CHECK_TYPE], -[ -AC_MSG_CHECKING(for type $1 in ${cf_cv_ncurses_header:-curses.h}) -AC_TRY_COMPILE([ -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}>],[ -$1 foo -],cf_result=yes,cf_result=no) -AC_MSG_RESULT($cf_result) -if test $cf_result = yes ; then - CF_UPPER(cf_result,have_type_$1) - AC_DEFINE_UNQUOTED($cf_result) -else - AC_DEFINE_UNQUOTED($1,$2) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_CONFIG version: 2 updated: 2006/10/29 11:06:27 -dnl ---------------- -dnl Tie together the configure-script macros for curses. It may be ncurses, -dnl but unless asked, we do not make a special search for ncurses. However, -dnl still check for the ncurses version number, for use in other macros. -AC_DEFUN([CF_CURSES_CONFIG], -[ -CF_CURSES_CPPFLAGS -CF_NCURSES_VERSION -CF_CURSES_LIBS -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_CPPFLAGS version: 10 updated: 2009/01/06 19:34:11 -dnl ------------------ -dnl Look for the curses headers. -AC_DEFUN([CF_CURSES_CPPFLAGS],[ - -AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[ -cf_cv_curses_incdir=no -case $host_os in #(vi -hpux10.*) #(vi - test -d /usr/include/curses_colr && \ - cf_cv_curses_incdir="-I/usr/include/curses_colr" - ;; -sunos3*|sunos4*) - test -d /usr/5lib && \ - test -d /usr/5include && \ - cf_cv_curses_incdir="-I/usr/5include" - ;; -esac -]) -test "$cf_cv_curses_incdir" != no && CPPFLAGS="$CPPFLAGS $cf_cv_curses_incdir" - -CF_CURSES_HEADER -CF_TERM_HEADER -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_FUNCS version: 15 updated: 2010/10/23 15:52:32 -dnl --------------- -dnl Curses-functions are a little complicated, since a lot of them are macros. -AC_DEFUN([CF_CURSES_FUNCS], -[ -AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl -AC_REQUIRE([CF_XOPEN_CURSES]) -AC_REQUIRE([CF_CURSES_TERM_H]) -for cf_func in $1 -do - CF_UPPER(cf_tr_func,$cf_func) - AC_MSG_CHECKING(for ${cf_func}) - CF_MSG_LOG(${cf_func}) - AC_CACHE_VAL(cf_cv_func_$cf_func,[ - eval cf_result='$ac_cv_func_'$cf_func - if test ".$cf_result" != ".no"; then - AC_TRY_LINK(CF__CURSES_HEAD, - [ -#ifndef ${cf_func} -long foo = (long)(&${cf_func}); -${cf_cv_main_return:-return}(foo == 0); -#endif - ], - [cf_result=yes], - [cf_result=no]) - fi - eval 'cf_cv_func_'$cf_func'=$cf_result' - ]) - # use the computed/retrieved cache-value: - eval 'cf_result=$cf_cv_func_'$cf_func - AC_MSG_RESULT($cf_result) - if test $cf_result != no; then - AC_DEFINE_UNQUOTED(HAVE_${cf_tr_func}) - fi -done -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_HEADER version: 2 updated: 2010/04/28 06:02:16 -dnl ---------------- -dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common -dnl variations of ncurses' installs. -dnl -dnl $1 = ncurses when looking for ncurses, or is empty -AC_DEFUN([CF_CURSES_HEADER],[ -AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[ -cf_cv_ncurses_header=none -for cf_header in ifelse($1,,,[ \ - $1/curses.h \ - $1/ncurses.h]) \ - curses.h \ - ncurses.h ifelse($1,,[ncurses/curses.h ncurses/ncurses.h]) -do -AC_TRY_COMPILE([#include <${cf_header}>], - [initscr(); tgoto("?", 0,0)], - [cf_cv_ncurses_header=$cf_header; break],[]) -done -]) - -if test "$cf_cv_ncurses_header" = none ; then - AC_MSG_ERROR(No curses header-files found) -fi - -# cheat, to get the right #define's for HAVE_NCURSES_H, etc. -AC_CHECK_HEADERS($cf_cv_ncurses_header) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_LIBS version: 33 updated: 2011/03/06 12:37:18 -dnl -------------- -dnl Look for the curses libraries. Older curses implementations may require -dnl termcap/termlib to be linked as well. Call CF_CURSES_CPPFLAGS first. -AC_DEFUN([CF_CURSES_LIBS],[ - -AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl -AC_MSG_CHECKING(if we have identified curses libraries) -AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr(); tgoto("?", 0,0)], - cf_result=yes, - cf_result=no) -AC_MSG_RESULT($cf_result) - -if test "$cf_result" = no ; then -case $host_os in #(vi -freebsd*) #(vi - AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)]) - ;; -hpux10.*) #(vi - AC_CHECK_LIB(cur_colr,initscr,[ - CF_ADD_LIBS(-lcur_colr) - ac_cv_func_initscr=yes - ],[ - AC_CHECK_LIB(Hcurses,initscr,[ - # HP's header uses __HP_CURSES, but user claims _HP_CURSES. - CF_ADD_LIBS(-lHcurses) - CPPFLAGS="$CPPFLAGS -D__HP_CURSES -D_HP_CURSES" - ac_cv_func_initscr=yes - ])]) - ;; -linux*) - case `arch 2>/dev/null` in - x86_64) - if test -d /lib64 - then - CF_ADD_LIBDIR(/lib64) - else - CF_ADD_LIBDIR(/lib) - fi - ;; - *) - CF_ADD_LIBDIR(/lib) - ;; - esac - ;; -sunos3*|sunos4*) - if test -d /usr/5lib ; then - CF_ADD_LIBDIR(/usr/5lib) - CF_ADD_LIBS(-lcurses -ltermcap) - fi - ac_cv_func_initscr=yes - ;; -esac - -if test ".$ac_cv_func_initscr" != .yes ; then - cf_save_LIBS="$LIBS" - cf_term_lib="" - cf_curs_lib="" - - if test ".${cf_cv_ncurses_version:-no}" != .no - then - cf_check_list="ncurses curses cursesX" - else - cf_check_list="cursesX curses ncurses" - fi - - # Check for library containing tgoto. Do this before curses library - # because it may be needed to link the test-case for initscr. - AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[ - for cf_term_lib in $cf_check_list termcap termlib unknown - do - AC_CHECK_LIB($cf_term_lib,tgoto,[break]) - done - ]) - - # Check for library containing initscr - test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS" - for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown - do - AC_CHECK_LIB($cf_curs_lib,initscr,[break]) - done - test $cf_curs_lib = unknown && AC_MSG_ERROR(no curses library found) - - LIBS="-l$cf_curs_lib $cf_save_LIBS" - if test "$cf_term_lib" = unknown ; then - AC_MSG_CHECKING(if we can link with $cf_curs_lib library) - AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr()], - [cf_result=yes], - [cf_result=no]) - AC_MSG_RESULT($cf_result) - test $cf_result = no && AC_MSG_ERROR(Cannot link curses library) - elif test "$cf_curs_lib" = "$cf_term_lib" ; then - : - elif test "$cf_term_lib" != predefined ; then - AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries) - AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr(); tgoto((char *)0, 0, 0);], - [cf_result=no], - [ - LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS" - AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr()], - [cf_result=yes], - [cf_result=error]) - ]) - AC_MSG_RESULT($cf_result) - fi -fi -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_TERM_H version: 8 updated: 2010/10/23 15:54:49 -dnl ---------------- -dnl SVr4 curses should have term.h as well (where it puts the definitions of -dnl the low-level interface). This may not be true in old/broken implementations, -dnl as well as in misconfigured systems (e.g., gcc configured for Solaris 2.4 -dnl running with Solaris 2.5.1). -AC_DEFUN([CF_CURSES_TERM_H], -[ -AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl - -AC_CACHE_CHECK(for term.h, cf_cv_term_header,[ - -# If we found , look for , but always look -# for if we do not find the variant. -for cf_header in \ - `echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%/.*%/%'`term.h \ - term.h -do - AC_TRY_COMPILE([ -#include <${cf_cv_ncurses_header:-curses.h}> -#include <${cf_header}>], - [WINDOW *x], - [cf_cv_term_header=$cf_header - break], - [cf_cv_term_header=no]) -done - -case $cf_cv_term_header in #(vi -no) - # If curses is ncurses, some packagers still mess it up by trying to make - # us use GNU termcap. This handles the most common case. - for cf_header in ncurses/term.h ncursesw/term.h - do - AC_TRY_COMPILE([ -#include <${cf_cv_ncurses_header:-curses.h}> -#ifdef NCURSES_VERSION -#include <${cf_header}> -#else -make an error -#endif], - [WINDOW *x], - [cf_cv_term_header=$cf_header - break], - [cf_cv_term_header=no]) - done - ;; -esac -]) - -case $cf_cv_term_header in #(vi -term.h) #(vi - AC_DEFINE(HAVE_TERM_H) - ;; -ncurses/term.h) #(vi - AC_DEFINE(HAVE_NCURSES_TERM_H) - ;; -ncursesw/term.h) - AC_DEFINE(HAVE_NCURSESW_TERM_H) - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_WACS_MAP version: 5 updated: 2011/01/15 11:28:59 -dnl ------------------ -dnl Check for likely values of wacs_map[]. -AC_DEFUN([CF_CURSES_WACS_MAP], -[ -AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[ - cf_cv_curses_wacs_map=unknown - for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char - do - AC_TRY_LINK([ -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}>], - [void *foo = &($name['k'])], - [cf_cv_curses_wacs_map=$name - break]) - done]) - -test "$cf_cv_curses_wacs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_WACS_ARRAY,$cf_cv_curses_wacs_map) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_CURSES_WACS_SYMBOLS version: 1 updated: 2011/01/15 11:28:59 -dnl ---------------------- -dnl Do a check to see if the WACS_xxx constants are defined compatibly with -dnl X/Open Curses. In particular, NetBSD's implementation of the WACS_xxx -dnl constants is broken since those constants do not point to cchar_t's. -AC_DEFUN([CF_CURSES_WACS_SYMBOLS], -[ -AC_REQUIRE([CF_CURSES_WACS_MAP]) - -AC_CACHE_CHECK(for wide alternate character constants, cf_cv_curses_wacs_symbols,[ -cf_cv_curses_wacs_symbols=no -if test "$cf_cv_curses_wacs_map" != unknown -then - AC_TRY_LINK([ -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}>], - [cchar_t *foo = WACS_PLUS; - $cf_cv_curses_wacs_map['k'] = *WACS_PLUS], - [cf_cv_curses_wacs_symbols=yes]) -else - AC_TRY_LINK([ -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}>], - [cchar_t *foo = WACS_PLUS], - [cf_cv_curses_wacs_symbols=yes]) -fi -]) - -test "$cf_cv_curses_wacs_symbols" != no && AC_DEFINE(CURSES_WACS_SYMBOLS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DIRNAME version: 4 updated: 2002/12/21 19:25:52 -dnl ---------- -dnl "dirname" is not portable, so we fake it with a shell script. -AC_DEFUN([CF_DIRNAME],[$1=`echo $2 | sed -e 's%/[[^/]]*$%%'`])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DISABLE_ECHO version: 11 updated: 2009/12/13 13:16:57 -dnl --------------- -dnl You can always use "make -n" to see the actual options, but it's hard to -dnl pick out/analyze warning messages when the compile-line is long. -dnl -dnl Sets: -dnl ECHO_LT - symbol to control if libtool is verbose -dnl ECHO_LD - symbol to prefix "cc -o" lines -dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) -dnl SHOW_CC - symbol to put before explicit "cc -c" lines -dnl ECHO_CC - symbol to put before any "cc" line -dnl -AC_DEFUN([CF_DISABLE_ECHO],[ -AC_MSG_CHECKING(if you want to see long compiling messages) -CF_ARG_DISABLE(echo, - [ --disable-echo display "compiling" commands], - [ - ECHO_LT='--silent' - ECHO_LD='@echo linking [$]@;' - RULE_CC='@echo compiling [$]<' - SHOW_CC='@echo compiling [$]@' - ECHO_CC='@' -],[ - ECHO_LT='' - ECHO_LD='' - RULE_CC='' - SHOW_CC='' - ECHO_CC='' -]) -AC_MSG_RESULT($enableval) -AC_SUBST(ECHO_LT) -AC_SUBST(ECHO_LD) -AC_SUBST(RULE_CC) -AC_SUBST(SHOW_CC) -AC_SUBST(ECHO_CC) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_DISABLE_LEAKS version: 6 updated: 2010/07/23 04:14:32 -dnl ---------------- -dnl Combine no-leak checks with the libraries or tools that are used for the -dnl checks. -AC_DEFUN([CF_DISABLE_LEAKS],[ - -AC_REQUIRE([CF_WITH_DMALLOC]) -AC_REQUIRE([CF_WITH_DBMALLOC]) -AC_REQUIRE([CF_WITH_VALGRIND]) - -AC_MSG_CHECKING(if you want to perform memory-leak testing) -AC_ARG_ENABLE(leaks, - [ --disable-leaks test: free permanent memory, analyze leaks], - [if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi], - : ${with_no_leaks:=no}) -AC_MSG_RESULT($with_no_leaks) - -if test "$with_no_leaks" = yes ; then - AC_DEFINE(NO_LEAKS) - AC_DEFINE(YY_NO_LEAKS) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_ENABLE_WARNINGS version: 4 updated: 2009/07/26 17:53:03 -dnl ------------------ -dnl Configure-option to enable gcc warnings -AC_DEFUN([CF_ENABLE_WARNINGS],[ -if ( test "$GCC" = yes || test "$GXX" = yes ) -then -AC_MSG_CHECKING(if you want to turn on gcc warnings) -CF_ARG_ENABLE(warnings, - [ --enable-warnings test: turn on gcc compiler warnings], - [with_warnings=yes], - [with_warnings=no]) -AC_MSG_RESULT($with_warnings) -if test "$with_warnings" = "yes" -then - CF_GCC_ATTRIBUTES - CF_GCC_WARNINGS -fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FIND_LIBRARY version: 9 updated: 2008/03/23 14:48:54 -dnl --------------- -dnl Look for a non-standard library, given parameters for AC_TRY_LINK. We -dnl prefer a standard location, and use -L options only if we do not find the -dnl library in the standard library location(s). -dnl $1 = library name -dnl $2 = library class, usually the same as library name -dnl $3 = includes -dnl $4 = code fragment to compile/link -dnl $5 = corresponding function-name -dnl $6 = flag, nonnull if failure should not cause an error-exit -dnl -dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had -dnl to use a -L option. -AC_DEFUN([CF_FIND_LIBRARY], -[ - eval 'cf_cv_have_lib_'$1'=no' - cf_libdir="" - AC_CHECK_FUNC($5, - eval 'cf_cv_have_lib_'$1'=yes',[ - cf_save_LIBS="$LIBS" - AC_MSG_CHECKING(for $5 in -l$1) - LIBS="-l$1 $LIBS" - AC_TRY_LINK([$3],[$4], - [AC_MSG_RESULT(yes) - eval 'cf_cv_have_lib_'$1'=yes' - ], - [AC_MSG_RESULT(no) - CF_LIBRARY_PATH(cf_search,$2) - for cf_libdir in $cf_search - do - AC_MSG_CHECKING(for -l$1 in $cf_libdir) - LIBS="-L$cf_libdir -l$1 $cf_save_LIBS" - AC_TRY_LINK([$3],[$4], - [AC_MSG_RESULT(yes) - eval 'cf_cv_have_lib_'$1'=yes' - break], - [AC_MSG_RESULT(no) - LIBS="$cf_save_LIBS"]) - done - ]) - ]) -eval 'cf_found_library=[$]cf_cv_have_lib_'$1 -ifelse($6,,[ -if test $cf_found_library = no ; then - AC_MSG_ERROR(Cannot link $1 library) -fi -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FIND_LINKAGE version: 19 updated: 2010/05/29 16:31:02 -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. -dnl See also CF_ADD_SEARCHPATH. -dnl -dnl Parameters (4-on are optional): -dnl $1 = headers for library entrypoint -dnl $2 = code fragment for library entrypoint -dnl $3 = the library name without the "-l" option or ".so" suffix. -dnl $4 = action to perform if successful (default: update CPPFLAGS, etc) -dnl $5 = action to perform if not successful -dnl $6 = module name, if not the same as the library name -dnl $7 = extra libraries -dnl -dnl Sets these variables: -dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found -dnl $cf_cv_header_path_$3 - include-directory if needed -dnl $cf_cv_library_path_$3 - library-directory if needed -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. -cf_cv_header_path_$3= -cf_cv_library_path_$3= - -CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) - -cf_save_LIBS="$LIBS" - -AC_TRY_LINK([$1],[$2],[ - cf_cv_find_linkage_$3=yes - cf_cv_header_path_$3=/usr/include - cf_cv_library_path_$3=/usr/lib -],[ - -LIBS="-l$3 $7 $cf_save_LIBS" - -AC_TRY_LINK([$1],[$2],[ - cf_cv_find_linkage_$3=yes - cf_cv_header_path_$3=/usr/include - cf_cv_library_path_$3=/usr/lib - cf_cv_library_file_$3="-l$3" -],[ - cf_cv_find_linkage_$3=no - LIBS="$cf_save_LIBS" - - CF_VERBOSE(find linkage for $3 library) - CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)]) - - cf_save_CPPFLAGS="$CPPFLAGS" - cf_test_CPPFLAGS="$CPPFLAGS" - - CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6])) - for cf_cv_header_path_$3 in $cf_search - do - if test -d $cf_cv_header_path_$3 ; then - CF_VERBOSE(... testing $cf_cv_header_path_$3) - CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_$3" - AC_TRY_COMPILE([$1],[$2],[ - CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) - cf_cv_find_linkage_$3=maybe - cf_test_CPPFLAGS="$CPPFLAGS" - break],[ - CPPFLAGS="$cf_save_CPPFLAGS" - ]) - fi - done - - if test "$cf_cv_find_linkage_$3" = maybe ; then - - CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)]) - - cf_save_LIBS="$LIBS" - cf_save_LDFLAGS="$LDFLAGS" - - ifelse([$6],,,[ - CPPFLAGS="$cf_test_CPPFLAGS" - LIBS="-l$3 $7 $cf_save_LIBS" - AC_TRY_LINK([$1],[$2],[ - CF_VERBOSE(... found $3 library in system) - cf_cv_find_linkage_$3=yes]) - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - ]) - - if test "$cf_cv_find_linkage_$3" != yes ; then - CF_LIBRARY_PATH(cf_search,$3) - for cf_cv_library_path_$3 in $cf_search - do - if test -d $cf_cv_library_path_$3 ; then - CF_VERBOSE(... testing $cf_cv_library_path_$3) - 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],[ - CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) - cf_cv_find_linkage_$3=yes - cf_cv_library_file_$3="-l$3" - break],[ - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - LDFLAGS="$cf_save_LDFLAGS" - ]) - fi - done - CPPFLAGS="$cf_save_CPPFLAGS" - LDFLAGS="$cf_save_LDFLAGS" - fi - - else - cf_cv_find_linkage_$3=no - fi - ],$7) -]) - -LIBS="$cf_save_LIBS" - -if test "$cf_cv_find_linkage_$3" = yes ; then -ifelse([$4],,[ - CF_ADD_INCDIR($cf_cv_header_path_$3) - CF_ADD_LIBDIR($cf_cv_library_path_$3) - CF_ADD_LIB($3) -],[$4]) -else -ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_FUNC_CURSES_VERSION version: 5 updated: 2010/10/23 15:54:49 -dnl ---------------------- -dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS. -dnl It's a character string "SVR4", not documented. -AC_DEFUN([CF_FUNC_CURSES_VERSION], -[ -AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[ -AC_TRY_RUN([ -#include <${cf_cv_ncurses_header:-curses.h}> -int main() -{ - char temp[1024]; - sprintf(temp, "%s\n", curses_version()); - ${cf_cv_main_return:-return}(0); -}] -,[cf_cv_func_curses_version=yes] -,[cf_cv_func_curses_version=no] -,[cf_cv_func_curses_version=unknown]) -rm -f core]) -test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION) -]) -dnl --------------------------------------------------------------------------- -dnl CF_GCC_ATTRIBUTES version: 14 updated: 2010/10/23 15:52:32 -dnl ----------------- -dnl Test for availability of useful gcc __attribute__ directives to quiet -dnl compiler warnings. Though useful, not all are supported -- and contrary -dnl to documentation, unrecognized directives cause older compilers to barf. -AC_DEFUN([CF_GCC_ATTRIBUTES], -[ -if test "$GCC" = yes -then -cat > conftest.i < conftest.$ac_ext <&AC_FD_CC - - case $cf_attribute in #(vi - printf) #(vi - cf_printf_attribute=yes - cat >conftest.h <conftest.h <conftest.h <>confdefs.h - case $cf_attribute in #(vi - printf) #(vi - if test "$cf_printf_attribute" = no ; then - cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h -fi -rm -rf conftest* -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_VERSION version: 5 updated: 2010/04/24 11:02:31 -dnl -------------- -dnl Find version of gcc -AC_DEFUN([CF_GCC_VERSION],[ -AC_REQUIRE([AC_PROG_CC]) -GCC_VERSION=none -if test "$GCC" = yes ; then - AC_MSG_CHECKING(version of $CC) - GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" - test -z "$GCC_VERSION" && GCC_VERSION=unknown - AC_MSG_RESULT($GCC_VERSION) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_GCC_WARNINGS version: 27 updated: 2010/10/23 15:52:32 -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: -dnl -dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) -dnl -Wredundant-decls (system headers make this too noisy) -dnl -Wtraditional (combines too many unrelated messages, only a few useful) -dnl -Wwrite-strings (too noisy, but should review occasionally). This -dnl is enabled for ncurses using "--enable-const". -dnl -pedantic -dnl -dnl Parameter: -dnl $1 is an optional list of gcc warning flags that a particular -dnl application might want to use, e.g., "no-unused" for -dnl -Wno-unused -dnl Special: -dnl If $with_ext_const is "yes", add a check for -Wwrite-strings -dnl -AC_DEFUN([CF_GCC_WARNINGS], -[ -AC_REQUIRE([CF_GCC_VERSION]) -CF_INTEL_COMPILER(GCC,INTEL_COMPILER,CFLAGS) - -cat > conftest.$ac_ext <],[ -#ifndef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_gnu_source=no], - [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - AC_TRY_COMPILE([#include ],[ -#ifdef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_gnu_source=no], - [cf_cv_gnu_source=yes]) - CPPFLAGS="$cf_save" - ]) -]) -test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_HEADER_PATH version: 12 updated: 2010/05/05 05:22:40 -dnl -------------- -dnl Construct a search-list of directories for a nonstandard header-file -dnl -dnl Parameters -dnl $1 = the variable to return as result -dnl $2 = the package name -AC_DEFUN([CF_HEADER_PATH], -[ -$1= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE) - cf_header_path_list="$cf_header_path_list [$]$1" - ;; - esac - done -fi - -# add the variations for the package we are looking for -CF_SUBDIR_PATH($1,$2,include) - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && $1="[$]$1 $includedir" - test -d $includedir/$2 && $1="[$]$1 $includedir/$2" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && $1="[$]$1 $oldincludedir" - test -d $oldincludedir/$2 && $1="[$]$1 $oldincludedir/$2" -} - -$1="[$]$1 $cf_header_path_list" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_INHERIT_SCRIPT version: 2 updated: 2003/03/01 23:50:42 -dnl ----------------- -dnl If we do not have a given script, look for it in the parent directory. -AC_DEFUN([CF_INHERIT_SCRIPT], -[ -test -f $1 || ( test -f ../$1 && cp ../$1 ./ ) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_INTEL_COMPILER version: 4 updated: 2010/05/26 05:38:42 -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 -dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. -dnl -dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to -dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from -dnl the wrappers for gcc and g++ warnings. -dnl -dnl $1 = GCC (default) or GXX -dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS -dnl $3 = CFLAGS (default) or CXXFLAGS -AC_DEFUN([CF_INTEL_COMPILER],[ -ifelse([$2],,INTEL_COMPILER,[$2])=no - -if test "$ifelse([$1],,[$1],GCC)" = yes ; then - case $host_os in - linux*|gnu*) - 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([],[ -#ifdef __INTEL_COMPILER -#else -make an error -#endif -],[ifelse([$2],,INTEL_COMPILER,[$2])=yes -cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" -],[]) - ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" - AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) - ;; - esac -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_LIBRARY_PATH version: 9 updated: 2010/03/28 12:52:50 -dnl --------------- -dnl Construct a search-list of directories for a nonstandard library-file -dnl -dnl Parameters -dnl $1 = the variable to return as result -dnl $2 = the package name -AC_DEFUN([CF_LIBRARY_PATH], -[ -$1= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE) - cf_library_path_list="$cf_library_path_list [$]$1" - ;; - esac - done -fi - -CF_SUBDIR_PATH($1,$2,lib) - -$1="$cf_library_path_list [$]$1" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 -dnl ------------ -dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have -dnl a monocase filesystem. -AC_DEFUN([CF_MAKE_TAGS],[ -AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) - -AC_CHECK_PROGS(CTAGS, exctags ctags) -AC_CHECK_PROGS(ETAGS, exetags etags) - -AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) - -if test "$cf_cv_mixedcase" = yes ; then - AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) -else - MAKE_UPPER_TAGS=no -fi - -if test "$MAKE_UPPER_TAGS" = yes ; then - MAKE_UPPER_TAGS= -else - MAKE_UPPER_TAGS="#" -fi - -if test "$MAKE_LOWER_TAGS" = yes ; then - MAKE_LOWER_TAGS= -else - MAKE_LOWER_TAGS="#" -fi - -AC_SUBST(CTAGS) -AC_SUBST(ETAGS) - -AC_SUBST(MAKE_UPPER_TAGS) -AC_SUBST(MAKE_LOWER_TAGS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MATH_LIB version: 8 updated: 2010/05/29 16:31:02 -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 -dnl AC_CHECK_LIB(m,sin), because that fails for C++. -AC_DEFUN([CF_MATH_LIB], -[ -AC_CACHE_CHECK(if -lm needed for math functions, - cf_cv_need_libm,[ - AC_TRY_LINK([ - #include - #include - ], - [double x = rand(); printf("result = %g\n", ]ifelse([$2],,sin(x),$2)[)], - [cf_cv_need_libm=no], - [cf_cv_need_libm=yes])]) -if test "$cf_cv_need_libm" = yes -then -ifelse($1,,[ - CF_ADD_LIB(m) -],[$1=-lm]) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_MIN_GETCCHAR version: 3 updated: 2010/10/23 15:54:49 -dnl --------------- -dnl CF_MIN_GETCCHAR -dnl Check whether getcchar's return value counts the trailing null in a wchar_t -dnl string, or not. X/Open says it does, but Tru64 and Solaris do not do this. -AC_DEFUN([CF_MIN_GETCCHAR],[ -AC_CACHE_CHECK(if getcchar counts trailing null,cf_cv_min_getcchar,[ -AC_TRY_RUN([ -#include -#include -#include <${cf_cv_ncurses_header:-curses.h}> - -int main() -{ - wchar_t data[2]; - cchar_t temp[2]; - int count; - data[0] = L'\0'; - setcchar(temp, data, 0, 0, (void *)0); - count = getcchar(temp, (wchar_t *)0, (attr_t *)0, (short *)0, (void *)0); - ${cf_cv_main_return:-return}(count != 0); -}], - [cf_cv_min_getcchar=no], - [cf_cv_min_getcchar=yes], - [cf_cv_min_getcchar=yes]) -]) -if test "$cf_cv_min_getcchar" = yes ; then - AC_DEFINE(MIN_GETCCHAR,1) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MIXEDCASE_FILENAMES version: 3 updated: 2003/09/20 17:07:55 -dnl ---------------------- -dnl Check if the file-system supports mixed-case filenames. If we're able to -dnl create a lowercase name and see it as uppercase, it doesn't support that. -AC_DEFUN([CF_MIXEDCASE_FILENAMES], -[ -AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ -if test "$cross_compiling" = yes ; then - case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi - cf_cv_mixedcase=no - ;; - *) - cf_cv_mixedcase=yes - ;; - esac -else - rm -f conftest CONFTEST - echo test >conftest - if test -f CONFTEST ; then - cf_cv_mixedcase=no - else - cf_cv_mixedcase=yes - fi - rm -f conftest CONFTEST -fi -]) -test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 -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 -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_CC_CHECK version: 4 updated: 2007/07/29 10:39:05 -dnl ------------------- -dnl Check if we can compile with ncurses' header file -dnl $1 is the cache variable to set -dnl $2 is the header-file to include -dnl $3 is the root name (ncurses or ncursesw) -AC_DEFUN([CF_NCURSES_CC_CHECK],[ - AC_TRY_COMPILE([ -]ifelse($3,ncursesw,[ -#define _XOPEN_SOURCE_EXTENDED -#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ -#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ -])[ -#include <$2>],[ -#ifdef NCURSES_VERSION -]ifelse($3,ncursesw,[ -#ifndef WACS_BSSB - make an error -#endif -])[ -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - ] - ,[$1=$2] - ,[$1=no]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_CONFIG version: 8 updated: 2010/07/08 05:17:30 -dnl ----------------- -dnl Tie together the configure-script macros for ncurses. -dnl Prefer the "-config" script from ncurses 6.x, to simplify analysis. -dnl Allow that to be overridden using the $NCURSES_CONFIG environment variable. -dnl -dnl $1 is the root library name (default: "ncurses") -AC_DEFUN([CF_NCURSES_CONFIG], -[ -cf_ncuconfig_root=ifelse($1,,ncurses,$1) - -echo "Looking for ${cf_ncuconfig_root}-config" -AC_PATH_PROGS(NCURSES_CONFIG,${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config,none) - -if test "$NCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`" -CF_ADD_LIBS(`$NCURSES_CONFIG --libs`) - -# even with config script, some packages use no-override for curses.h -CF_CURSES_HEADER(ifelse($1,,ncurses,$1)) - -dnl like CF_NCURSES_CPPFLAGS -AC_DEFINE(NCURSES) - -dnl like CF_NCURSES_LIBS -CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root) -AC_DEFINE_UNQUOTED($cf_nculib_ROOT) - -dnl like CF_NCURSES_VERSION -cf_cv_ncurses_version=`$NCURSES_CONFIG --version` - -else - -CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1)) -CF_NCURSES_LIBS(ifelse($1,,ncurses,$1)) - -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_CPPFLAGS version: 20 updated: 2010/11/20 17:02:38 -dnl ------------------- -dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting -dnl the CPPFLAGS variable so we can include its header. -dnl -dnl The header files may be installed as either curses.h, or ncurses.h (would -dnl be obsolete, except that some packagers prefer this name to distinguish it -dnl from a "native" curses implementation). If not installed for overwrite, -dnl the curses.h file would be in an ncurses subdirectory (e.g., -dnl /usr/include/ncurses), but someone may have installed overwriting the -dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd -dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in -dnl the header. -dnl -dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header -dnl is already in the include-path, don't even bother with this, since we cannot -dnl easily determine which file it is. In this case, it has to be . -dnl -dnl The optional parameter gives the root name of the library, in case it is -dnl not installed as the default curses library. That is how the -dnl wide-character version of ncurses is installed. -AC_DEFUN([CF_NCURSES_CPPFLAGS], -[AC_REQUIRE([CF_WITH_CURSES_DIR]) - -AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl -cf_ncuhdr_root=ifelse($1,,ncurses,$1) - -test -n "$cf_cv_curses_dir" && \ -test "$cf_cv_curses_dir" != "no" && { \ - CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root) -} - -AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[ - cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" - ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" - for cf_header in $cf_header_list - do - CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1) - test "$cf_cv_ncurses_h" != no && break - done -]) - -CF_NCURSES_HEADER -CF_TERM_HEADER - -# some applications need this, but should check for NCURSES_VERSION -AC_DEFINE(NCURSES) - -CF_NCURSES_VERSION -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_EXT_FUNCS version: 3 updated: 2010/11/13 19:43:23 -dnl -------------------- -dnl Since 2007/11/17, ncurses has defined NCURSES_EXT_FUNCS; earlier versions -dnl may provide these functions. Define the symbol if it is not defined, and -dnl if it is valid. -AC_DEFUN([CF_NCURSES_EXT_FUNCS], -[ -AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[ -AC_TRY_COMPILE([ -#include <${cf_cv_ncurses_header:-curses.h}>], -[ -int x = NCURSES_EXT_FUNCS -],[cf_cv_ncurses_ext_funcs=defined],[ -AC_TRY_LINK([ -#include <${cf_cv_ncurses_header:-curses.h}>], -[ - (void) assume_default_colors (0, 0); - (void) curses_version (); - (void) define_key (0, 0); - (void) is_term_resized (0, 0); - (void) key_defined (0); - (void) keybound (0, 0); - (void) keyok (0, 0); - (void) resize_term (0, 0); - (void) resizeterm (0, 0); - (void) use_default_colors (); - (void) use_extended_names (0); - (void) wresize (0, 0, 0);], - [cf_cv_ncurses_ext_funcs=yes], - [cf_cv_ncurses_ext_funcs=no]) -]) -]) -test "$cf_cv_ncurses_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_HEADER version: 2 updated: 2008/03/23 14:48:54 -dnl ----------------- -dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common -dnl variations of ncurses' installs. -dnl -dnl See also CF_CURSES_HEADER, which sets the same cache variable. -AC_DEFUN([CF_NCURSES_HEADER],[ - -if test "$cf_cv_ncurses_h" != no ; then - cf_cv_ncurses_header=$cf_cv_ncurses_h -else - -AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[ - test -n "$verbose" && echo - CF_HEADER_PATH(cf_search,$cf_ncuhdr_root) - test -n "$verbose" && echo search path $cf_search - cf_save2_CPPFLAGS="$CPPFLAGS" - for cf_incdir in $cf_search - do - CF_ADD_INCDIR($cf_incdir) - for cf_header in \ - ncurses.h \ - curses.h - do - CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1) - if test "$cf_cv_ncurses_h2" != no ; then - cf_cv_ncurses_h2=$cf_incdir/$cf_header - test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&AC_FD_MSG - break - fi - test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG - done - CPPFLAGS="$cf_save2_CPPFLAGS" - test "$cf_cv_ncurses_h2" != no && break - done - test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found) - ]) - - CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2) - cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` - if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then - cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header - fi - CF_ADD_INCDIR($cf_1st_incdir) - -fi - -# Set definitions to allow ifdef'ing for ncurses.h - -case $cf_cv_ncurses_header in # (vi -*ncurses.h) - AC_DEFINE(HAVE_NCURSES_H) - ;; -esac - -case $cf_cv_ncurses_header in # (vi -ncurses/curses.h|ncurses/ncurses.h) - AC_DEFINE(HAVE_NCURSES_NCURSES_H) - ;; -ncursesw/curses.h|ncursesw/ncurses.h) - AC_DEFINE(HAVE_NCURSESW_NCURSES_H) - ;; -esac - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_LIBS version: 16 updated: 2010/11/20 17:02:38 -dnl --------------- -dnl Look for the ncurses library. This is a little complicated on Linux, -dnl because it may be linked with the gpm (general purpose mouse) library. -dnl Some distributions have gpm linked with (bsd) curses, which makes it -dnl unusable with ncurses. However, we don't want to link with gpm unless -dnl ncurses has a dependency, since gpm is normally set up as a shared library, -dnl and the linker will record a dependency. -dnl -dnl The optional parameter gives the root name of the library, in case it is -dnl not installed as the default curses library. That is how the -dnl wide-character version of ncurses is installed. -AC_DEFUN([CF_NCURSES_LIBS], -[AC_REQUIRE([CF_NCURSES_CPPFLAGS]) - -cf_nculib_root=ifelse($1,,ncurses,$1) - # This works, except for the special case where we find gpm, but - # ncurses is in a nonstandard location via $LIBS, and we really want - # to link gpm. -cf_ncurses_LIBS="" -cf_ncurses_SAVE="$LIBS" -AC_CHECK_LIB(gpm,Gpm_Open, - [AC_CHECK_LIB(gpm,initscr, - [LIBS="$cf_ncurses_SAVE"], - [cf_ncurses_LIBS="-lgpm"])]) - -case $host_os in #(vi -freebsd*) - # This is only necessary if you are linking against an obsolete - # version of ncurses (but it should do no harm, since it's static). - if test "$cf_nculib_root" = ncurses ; then - AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"]) - fi - ;; -esac - -CF_ADD_LIBS($cf_ncurses_LIBS) - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - CF_ADD_LIBS(-l$cf_nculib_root) -else - CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root, - [#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr()], - initscr) -fi - -if test -n "$cf_ncurses_LIBS" ; then - AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS) - cf_ncurses_SAVE="$LIBS" - for p in $cf_ncurses_LIBS ; do - q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` - if test "$q" != "$LIBS" ; then - LIBS="$q" - fi - done - AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], - [initscr(); mousemask(0,0); tgoto((char *)0, 0, 0);], - [AC_MSG_RESULT(yes)], - [AC_MSG_RESULT(no) - LIBS="$cf_ncurses_SAVE"]) -fi - -CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root) -AC_DEFINE_UNQUOTED($cf_nculib_ROOT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_VERSION version: 13 updated: 2010/10/23 15:54:49 -dnl ------------------ -dnl Check for the version of ncurses, to aid in reporting bugs, etc. -dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use -dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi. -AC_DEFUN([CF_NCURSES_VERSION], -[ -AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl -AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[ - cf_cv_ncurses_version=no - cf_tempfile=out$$ - rm -f $cf_tempfile - AC_TRY_RUN([ -#include <${cf_cv_ncurses_header:-curses.h}> -#include -int main() -{ - FILE *fp = fopen("$cf_tempfile", "w"); -#ifdef NCURSES_VERSION -# ifdef NCURSES_VERSION_PATCH - fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); -# else - fprintf(fp, "%s\n", NCURSES_VERSION); -# endif -#else -# ifdef __NCURSES_H - fprintf(fp, "old\n"); -# else - make an error -# endif -#endif - ${cf_cv_main_return:-return}(0); -}],[ - cf_cv_ncurses_version=`cat $cf_tempfile`],,[ - - # This will not work if the preprocessor splits the line after the - # Autoconf token. The 'unproto' program does that. - cat > conftest.$ac_ext < -#undef Autoconf -#ifdef NCURSES_VERSION -Autoconf NCURSES_VERSION -#else -#ifdef __NCURSES_H -Autoconf "old" -#endif -; -#endif -EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out" - AC_TRY_EVAL(cf_try) - if test -f conftest.out ; then - cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%'` - test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" - rm -f conftest.out - fi -]) - rm -f $cf_tempfile -]) -test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NCURSES_WRAP_PREFIX version: 1 updated: 2009/03/28 16:08:10 -dnl ---------------------- -dnl Check for ncurses "wrap-prefix" used for public variables which have been -dnl wrapped with a function to help with concurrency control. -AC_DEFUN([CF_NCURSES_WRAP_PREFIX], -[ -AC_MSG_CHECKING(for ncurses wrap-prefix) -AC_ARG_WITH(ncurses-wrap-prefix, - [ --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables], - [NCURSES_WRAP_PREFIX=$withval], - [NCURSES_WRAP_PREFIX=_nc_]) -AC_MSG_RESULT($NCURSES_WRAP_PREFIX) - -AC_SUBST(NCURSES_WRAP_PREFIX) -]) -dnl --------------------------------------------------------------------------- -dnl CF_NETBSD_FORM_H version: 1 updated: 2011/01/15 14:59:18 -dnl ---------------- -dnl Check for NetBSD's form.h, which is incompatible with SVr4 and ncurses. -dnl Some workarounds are needed in client programs to allow them to compile. -AC_DEFUN([CF_NETBSD_FORM_H],[ -AC_CACHE_CHECK(for NetBSD form.h,cf_cv_netbsd_form_h,[ -AC_TRY_COMPILE([ -#include <${cf_cv_ncurses_header:-curses.h}> -#include -],[ - FORM *form; - int y = current_field(form)->cursor_ypos; - int x = current_field(form)->cursor_xpos; -],[cf_cv_netbsd_form_h=yes -],[cf_cv_netbsd_form_h=no]) -]) - -test "$cf_cv_netbsd_form_h" = yes && AC_DEFINE(HAVE_NETBSD_FORM_H) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NETBSD_MENU_H version: 1 updated: 2011/01/15 14:59:18 -dnl ---------------- -dnl Check for NetBSD's menu.h, which is incompatible with SVr4 and ncurses. -dnl Some workarounds are needed in client programs to allow them to compile. -AC_DEFUN([CF_NETBSD_MENU_H],[ -AC_CACHE_CHECK(for NetBSD menu.h,cf_cv_netbsd_menu_h,[ -AC_TRY_COMPILE([ -#include <${cf_cv_ncurses_header:-curses.h}> -#include -],[ - MENU *menu; - int y = menu->max_item_width; -],[cf_cv_netbsd_menu_h=yes -],[cf_cv_netbsd_menu_h=no]) -]) - -test "$cf_cv_netbsd_menu_h" = yes && AC_DEFINE(HAVE_NETBSD_MENU_H) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_NO_LEAKS_OPTION version: 4 updated: 2006/12/16 14:24:05 -dnl ------------------ -dnl see CF_WITH_NO_LEAKS -AC_DEFUN([CF_NO_LEAKS_OPTION],[ -AC_MSG_CHECKING(if you want to use $1 for testing) -AC_ARG_WITH($1, - [$2], - [AC_DEFINE($3)ifelse([$4],,[ - $4 -]) - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_$1=yes], - [with_$1=]) -AC_MSG_RESULT(${with_$1:-no}) - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - CF_ADD_CFLAGS([-g]) - ;; - esac - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PATH_SYNTAX version: 13 updated: 2010/05/26 05:38:42 -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],[ -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".[$]$1" in #(vi -.\[$]\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[[a-zA-Z]]:[[\\/]]*) #(vi OS/2 EMX - ;; -.\[$]{*prefix}*) #(vi - eval $1="[$]$1" - case ".[$]$1" in #(vi - .NONE/*) - $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - $1=`echo [$]$1 | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PDCURSES_X11 version: 11 updated: 2011/01/15 18:45:38 -dnl --------------- -dnl Configure for PDCurses' X11 library -AC_DEFUN([CF_PDCURSES_X11],[ -AC_REQUIRE([CF_X_ATHENA]) - -AC_PATH_PROGS(XCURSES_CONFIG,xcurses-config,none) - -if test "$XCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$XCURSES_CONFIG --cflags`" -CF_ADD_LIBS(`$XCURSES_CONFIG --libs`) - -cf_cv_lib_XCurses=yes - -else - -LDFLAGS="$LDFLAGS $X_LIBS" -CF_CHECK_CFLAGS($X_CFLAGS) -AC_CHECK_LIB(X11,XOpenDisplay, - [CF_ADD_LIBS(-lX11)],, - [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS]) -AC_CACHE_CHECK(for XCurses library,cf_cv_lib_XCurses,[ -CF_ADD_LIBS(-lXCurses) -AC_TRY_LINK([ -#include -char *XCursesProgramName = "test"; -],[XCursesExit();], -[cf_cv_lib_XCurses=yes], -[cf_cv_lib_XCurses=no]) -]) - -fi - -if test $cf_cv_lib_XCurses = yes ; then - AC_DEFINE(UNIX) - AC_DEFINE(XCURSES) - AC_CHECK_HEADER(xcurses.h, AC_DEFINE(HAVE_XCURSES)) -else - AC_MSG_ERROR(Cannot link with XCurses) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PKG_CONFIG version: 4 updated: 2011/02/18 20:26:24 -dnl ------------- -dnl Check for the package-config program, unless disabled by command-line. -AC_DEFUN([CF_PKG_CONFIG], -[ -AC_MSG_CHECKING(if you want to use pkg-config) -AC_ARG_WITH(pkg-config, - [ --with-pkg-config{=path} enable/disable use of pkg-config], - [cf_pkg_config=$withval], - [cf_pkg_config=yes]) -AC_MSG_RESULT($cf_pkg_config) - -case $cf_pkg_config in #(vi -no) #(vi - PKG_CONFIG=none - ;; -yes) #(vi - AC_PATH_TOOL(PKG_CONFIG, pkg-config, none) - ;; -*) - PKG_CONFIG=$withval - ;; -esac - -test -z "$PKG_CONFIG" && PKG_CONFIG=none -if test "$PKG_CONFIG" != none ; then - CF_PATH_SYNTAX(PKG_CONFIG) -fi - -AC_SUBST(PKG_CONFIG) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_POSIX_C_SOURCE version: 8 updated: 2010/05/26 05:38:42 -dnl ----------------- -dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. -dnl -dnl POSIX.1-1990 _POSIX_SOURCE -dnl POSIX.1-1990 and _POSIX_SOURCE and -dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 -dnl Bindings Option -dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L -dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L -dnl X/Open 2000 _POSIX_C_SOURCE=200112L -dnl -dnl Parameters: -dnl $1 is the nominal value for _POSIX_C_SOURCE -AC_DEFUN([CF_POSIX_C_SOURCE], -[ -cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) - -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" - -CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) -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 ],[ -#ifndef _POSIX_C_SOURCE -make an error -#endif], - [cf_cv_posix_c_source=no], - [cf_want_posix_source=no - case .$cf_POSIX_C_SOURCE in #(vi - .[[12]]??*) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - ;; - .2) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - cf_want_posix_source=yes - ;; - .*) - cf_want_posix_source=yes - ;; - esac - if test "$cf_want_posix_source" = yes ; then - AC_TRY_COMPILE([#include ],[ -#ifdef _POSIX_SOURCE -make an error -#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) - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" - CF_MSG_LOG(if the second compile does not leave our definition intact error) - AC_TRY_COMPILE([#include ],[ -#ifndef _POSIX_C_SOURCE -make an error -#endif],, - [cf_cv_posix_c_source=no]) - CFLAGS="$cf_save_CFLAGS" - CPPFLAGS="$cf_save_CPPFLAGS" - ]) -]) - -if test "$cf_cv_posix_c_source" != no ; then - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS" - CF_ADD_CFLAGS($cf_cv_posix_c_source) -fi - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PRG_RULES version: 1 updated: 2006/06/03 11:45:08 -dnl ------------ -dnl Append definitions and rules for the given programs to the subdirectory -dnl Makefiles, and the recursion rule for the top-level Makefile. -dnl -dnl parameters -dnl $1 = script to run -dnl $2 = list of subdirectories -dnl -dnl variables -dnl $AWK -AC_DEFUN([CF_PRG_RULES], -[ -for cf_dir in $2 -do - if test ! -d $srcdir/$cf_dir; then - continue - elif test -f $srcdir/$cf_dir/programs; then - $AWK -f $1 $srcdir/$cf_dir/programs >>$cf_dir/Makefile - fi -done - -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_CC_U_D version: 1 updated: 2005/07/14 16:59:30 -dnl -------------- -dnl Check if C (preprocessor) -U and -D options are processed in the order -dnl given rather than by type of option. Some compilers insist on apply all -dnl of the -U options after all of the -D options. Others allow mixing them, -dnl and may predefine symbols that conflict with those we define. -AC_DEFUN([CF_PROG_CC_U_D], -[ -AC_CACHE_CHECK(if $CC -U and -D options work together,cf_cv_cc_u_d_options,[ - cf_save_CPPFLAGS="$CPPFLAGS" - CPPFLAGS="-UU_D_OPTIONS -DU_D_OPTIONS -DD_U_OPTIONS -UD_U_OPTIONS" - AC_TRY_COMPILE([],[ -#ifndef U_D_OPTIONS -make an undefined-error -#endif -#ifdef D_U_OPTIONS -make a defined-error -#endif - ],[ - cf_cv_cc_u_d_options=yes],[ - cf_cv_cc_u_d_options=no]) - CPPFLAGS="$cf_save_CPPFLAGS" -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_INSTALL version: 5 updated: 2002/12/21 22:46:07 -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 -/*) - ;; -*) - CF_DIRNAME(cf_dir,$INSTALL) - test -z "$cf_dir" && cf_dir=. - INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'` - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_PROG_LINT version: 2 updated: 2009/08/12 04:43:14 -dnl ------------ -AC_DEFUN([CF_PROG_LINT], -[ -AC_CHECK_PROGS(LINT, tdlint lint alint splint lclint) -AC_SUBST(LINT_OPTS) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 -dnl ---------------- -dnl Remove all -U and -D options that refer to the given symbol from a list -dnl of C compiler options. This works around the problem that not all -dnl compilers process -U and -D options from left-to-right, so a -U option -dnl cannot be used to cancel the effect of a preceding -D option. -dnl -dnl $1 = target (which could be the same as the source variable) -dnl $2 = source (including '$') -dnl $3 = symbol to remove -define([CF_REMOVE_DEFINE], -[ -$1=`echo "$2" | \ - sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ - -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SIG_ATOMIC_T version: 2 updated: 2005/09/18 17:27:12 -dnl --------------- -dnl signal handler, but there are some gcc depedencies in that recommendation. -dnl Try anyway. -AC_DEFUN([CF_SIG_ATOMIC_T], -[ -AC_MSG_CHECKING(for signal global datatype) -AC_CACHE_VAL(cf_cv_sig_atomic_t,[ - for cf_type in \ - "volatile sig_atomic_t" \ - "sig_atomic_t" \ - "int" - do - AC_TRY_COMPILE([ -#include -#include -#include - -extern $cf_type x; -$cf_type x; -static void handler(int sig) -{ - x = 5; -}], - [signal(SIGINT, handler); - x = 1], - [cf_cv_sig_atomic_t=$cf_type], - [cf_cv_sig_atomic_t=no]) - test "$cf_cv_sig_atomic_t" != no && break - done - ]) -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) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SUBDIR_PATH version: 6 updated: 2010/04/21 06:20:50 -dnl -------------- -dnl Construct a search-list for a nonstandard header/lib-file -dnl $1 = the variable to return as result -dnl $2 = the package name -dnl $3 = the subdirectory, e.g., bin, include or lib -AC_DEFUN([CF_SUBDIR_PATH], -[ -$1= - -CF_ADD_SUBDIR_PATH($1,$2,$3,/usr,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE) -CF_ADD_SUBDIR_PATH($1,$2,$3,/usr/local,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,/opt,$prefix) -CF_ADD_SUBDIR_PATH($1,$2,$3,[$]HOME,$prefix) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_SYS_TIME_SELECT version: 4 updated: 2000/10/04 09:18:40 -dnl ------------------ -dnl Check if we can include with ; this breaks on -dnl older SCO configurations. -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([ -#include -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#endif -],[],[cf_cv_sys_time_select=yes], - [cf_cv_sys_time_select=no]) - ]) -AC_MSG_RESULT($cf_cv_sys_time_select) -test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_TERM_HEADER version: 2 updated: 2010/10/23 15:54:49 -dnl -------------- -dnl Look for term.h, which is part of X/Open curses. It defines the interface -dnl to terminfo database. Usually it is in the same include-path as curses.h, -dnl but some packagers change this, breaking various applications. -AC_DEFUN([CF_TERM_HEADER],[ -AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[ -case ${cf_cv_ncurses_header} in #(vi -*/ncurses.h|*/ncursesw.h) #(vi - cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'` - ;; -*) - cf_term_header=term.h - ;; -esac - -for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" -do -AC_TRY_COMPILE([#include -#include <${cf_cv_ncurses_header:-curses.h}> -#include <$cf_test> -],[int x = auto_left_margin],[ - cf_cv_term_header="$cf_test"],[ - cf_cv_term_header=unknown - ]) - test "$cf_cv_term_header" != unknown && break -done -]) - -# Set definitions to allow ifdef'ing to accommodate subdirectories - -case $cf_cv_term_header in # (vi -*term.h) - AC_DEFINE(HAVE_TERM_H) - ;; -esac - -case $cf_cv_term_header in # (vi -ncurses/term.h) #(vi - AC_DEFINE(HAVE_NCURSES_TERM_H) - ;; -ncursesw/term.h) - AC_DEFINE(HAVE_NCURSESW_TERM_H) - ;; -esac -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_TRY_PKG_CONFIG version: 4 updated: 2010/06/14 17:42:30 -dnl ----------------- -dnl This is a simple wrapper to use for pkg-config, for libraries which may be -dnl available in that form. -dnl -dnl $1 = package name -dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS -dnl $3 = logic to use if pkg-config does not have the package -AC_DEFUN([CF_TRY_PKG_CONFIG],[ -AC_REQUIRE([CF_PKG_CONFIG]) - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $1; then - CF_VERBOSE(found package $1) - cf_pkgconfig_incs="`$PKG_CONFIG --cflags $1 2>/dev/null`" - 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_ADD_CFLAGS($cf_pkgconfig_incs) - CF_ADD_LIBS($cf_pkgconfig_libs) - ifelse([$2],,:,[$2]) -else - ifelse([$3],,:,[$3]) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 -dnl -------- -dnl Make an uppercase version of a variable -dnl $1=uppercase($2) -AC_DEFUN([CF_UPPER], -[ -$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_UTF8_LIB version: 7 updated: 2010/06/20 09:24:28 -dnl ----------- -dnl Check for multibyte support, and if not found, utf8 compatibility library -AC_DEFUN([CF_UTF8_LIB], -[ -AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ - cf_save_LIBS="$LIBS" - AC_TRY_LINK([ -#include ],[putwc(0,0);], - [cf_cv_utf8_lib=yes], - [CF_FIND_LINKAGE([ -#include ],[putwc(0,0);],utf8, - [cf_cv_utf8_lib=add-on], - [cf_cv_utf8_lib=no]) -])]) - -# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between -# ncurses/ncursesw: -if test "$cf_cv_utf8_lib" = "add-on" ; then - AC_DEFINE(HAVE_LIBUTF8_H) - CF_ADD_INCDIR($cf_cv_header_path_utf8) - CF_ADD_LIBDIR($cf_cv_library_path_utf8) - CF_ADD_LIBS($cf_cv_library_file_utf8) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 -dnl ---------- -dnl Use AC_VERBOSE w/o the warnings -AC_DEFUN([CF_VERBOSE], -[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG -CF_MSG_LOG([$1]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WCHAR_TYPE version: 3 updated: 2010/05/26 16:44:57 -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 -dnl the type is not found. The first parameter sets a shell variable for the -dnl opposite sense. -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([ -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif], - [$1 state], - [cf_cv_$1=no], - [AC_TRY_COMPILE([ -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif], - [$1 value], - [cf_cv_$1=yes], - [cf_cv_$1=unknown])])]) - -if test "$cf_cv_$1" = yes ; then - AC_DEFINE(NEED_WCHAR_H) - NEED_WCHAR_H=1 -fi - -ifelse([$2],,,[ -# if we do not find $1 in either place, use substitution to provide a fallback. -if test "$cf_cv_$1" = unknown ; then - $2=1 -fi -]) -ifelse($3,,,[ -# if we find $1 in either place, use substitution to provide a fallback. -if test "$cf_cv_$1" != unknown ; then - $3=1 -fi -]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_CURSES_DIR version: 3 updated: 2010/11/20 17:02:38 -dnl ------------------ -dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses -dnl libraries. -AC_DEFUN([CF_WITH_CURSES_DIR],[ - -AC_MSG_CHECKING(for specific curses-directory) -AC_ARG_WITH(curses-dir, - [ --with-curses-dir=DIR directory in which (n)curses is installed], - [cf_cv_curses_dir=$withval], - [cf_cv_curses_dir=no]) -AC_MSG_RESULT($cf_cv_curses_dir) - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - CF_PATH_SYNTAX(withval) - if test -d "$cf_cv_curses_dir" - then - CF_ADD_INCDIR($cf_cv_curses_dir/include) - CF_ADD_LIBDIR($cf_cv_curses_dir/lib) - fi -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 -dnl ---------------- -dnl Configure-option for dbmalloc. The optional parameter is used to override -dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. -AC_DEFUN([CF_WITH_DBMALLOC],[ -CF_NO_LEAKS_OPTION(dbmalloc, - [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], - [USE_DBMALLOC]) - -if test "$with_dbmalloc" = yes ; then - AC_CHECK_HEADER(dbmalloc.h, - [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 -dnl --------------- -dnl Configure-option for dmalloc. The optional parameter is used to override -dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. -AC_DEFUN([CF_WITH_DMALLOC],[ -CF_NO_LEAKS_OPTION(dmalloc, - [ --with-dmalloc test: use Gray Watson's dmalloc library], - [USE_DMALLOC]) - -if test "$with_dmalloc" = yes ; then - AC_CHECK_HEADER(dmalloc.h, - [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 -dnl ---------------- -AC_DEFUN([CF_WITH_VALGRIND],[ -CF_NO_LEAKS_OPTION(valgrind, - [ --with-valgrind test: use valgrind], - [USE_VALGRIND]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_XOPEN_CURSES version: 11 updated: 2011/01/18 18:15:30 -dnl --------------- -dnl Test if we should define X/Open source for curses, needed on Digital Unix -dnl 4.x, to see the extended functions, but breaks on IRIX 6.x. -dnl -dnl The getbegyx() check is needed for HPUX, which omits legacy macros such -dnl as getbegy(). The latter is better design, but the former is standard. -AC_DEFUN([CF_XOPEN_CURSES], -[ -AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl -AC_CACHE_CHECK(if we must define _XOPEN_SOURCE_EXTENDED,cf_cv_need_xopen_extension,[ -AC_TRY_LINK([ -#include -#include <${cf_cv_ncurses_header:-curses.h}>],[ -#if defined(NCURSES_VERSION_PATCH) -#if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403) - make an error -#endif -#endif - long x = winnstr(stdscr, "", 0); - int x1, y1; - getbegyx(stdscr, y1, x1)], - [cf_cv_need_xopen_extension=no], - [AC_TRY_LINK([ -#define _XOPEN_SOURCE_EXTENDED -#include -#include <${cf_cv_ncurses_header:-curses.h}>],[ -#ifdef NCURSES_VERSION - cchar_t check; - int check2 = curs_set((int)sizeof(check)); -#endif - long x = winnstr(stdscr, "", 0); - int x1, y1; - getbegyx(stdscr, y1, x1)], - [cf_cv_need_xopen_extension=yes], - [cf_cv_need_xopen_extension=unknown])])]) -test $cf_cv_need_xopen_extension = yes && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_XOPEN_SOURCE version: 35 updated: 2011/02/20 20:37:37 -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, -dnl without losing the common non-POSIX features. -dnl -dnl Parameters: -dnl $1 is the nominal value for _XOPEN_SOURCE -dnl $2 is the nominal value for _POSIX_C_SOURCE -AC_DEFUN([CF_XOPEN_SOURCE],[ - -cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) -cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) -cf_xopen_source= - -case $host_os in #(vi -aix[[456]]*) #(vi - cf_xopen_source="-D_ALL_SOURCE" - ;; -cygwin) #(vi - cf_XOPEN_SOURCE=600 - ;; -darwin[[0-8]].*) #(vi - cf_xopen_source="-D_APPLE_C_SOURCE" - ;; -darwin*) #(vi - cf_xopen_source="-D_DARWIN_C_SOURCE" - ;; -freebsd*|dragonfly*) #(vi - # 5.x headers associate - # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L - # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L - cf_POSIX_C_SOURCE=200112L - cf_XOPEN_SOURCE=600 - cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -hpux11*) #(vi - cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" - ;; -hpux*) #(vi - cf_xopen_source="-D_HPUX_SOURCE" - ;; -irix[[56]].*) #(vi - cf_xopen_source="-D_SGI_SOURCE" - ;; -linux*|gnu*|mint*|k*bsd*-gnu) #(vi - CF_GNU_SOURCE - ;; -mirbsd*) #(vi - # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks - ;; -netbsd*) #(vi - # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw - ;; -openbsd*) #(vi - # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw - ;; -osf[[45]]*) #(vi - cf_xopen_source="-D_OSF_SOURCE" - ;; -nto-qnx*) #(vi - cf_xopen_source="-D_QNX_SOURCE" - ;; -sco*) #(vi - # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer - ;; -solaris2.1[[0-9]]) #(vi - cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -solaris2.[[1-9]]) #(vi - cf_xopen_source="-D__EXTENSIONS__" - ;; -*) - AC_CACHE_CHECK(if we should define _XOPEN_SOURCE,cf_cv_xopen_source,[ - AC_TRY_COMPILE([#include ],[ -#ifndef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - AC_TRY_COMPILE([#include ],[ -#ifdef _XOPEN_SOURCE -make an error -#endif], - [cf_cv_xopen_source=no], - [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) - CPPFLAGS="$cf_save" - ]) -]) - if test "$cf_cv_xopen_source" != no ; then - CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) - CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) - cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" - CF_ADD_CFLAGS($cf_temp_xopen_source) - fi - CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) - ;; -esac - -if test -n "$cf_xopen_source" ; then - CF_ADD_CFLAGS($cf_xopen_source) -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_X_ATHENA version: 20 updated: 2010/11/09 05:18:02 -dnl ----------- -dnl Check for Xaw (Athena) libraries -dnl -dnl Sets $cf_x_athena according to the flavor of Xaw which is used. -AC_DEFUN([CF_X_ATHENA], -[ -cf_x_athena=${cf_x_athena:-Xaw} - -AC_MSG_CHECKING(if you want to link with Xaw 3d library) -withval= -AC_ARG_WITH(Xaw3d, - [ --with-Xaw3d link with Xaw 3d library]) -if test "$withval" = yes ; then - cf_x_athena=Xaw3d - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi - -AC_MSG_CHECKING(if you want to link with neXT Athena library) -withval= -AC_ARG_WITH(neXtaw, - [ --with-neXtaw link with neXT Athena library]) -if test "$withval" = yes ; then - cf_x_athena=neXtaw - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi - -AC_MSG_CHECKING(if you want to link with Athena-Plus library) -withval= -AC_ARG_WITH(XawPlus, - [ --with-XawPlus link with Athena-Plus library]) -if test "$withval" = yes ; then - cf_x_athena=XawPlus - AC_MSG_RESULT(yes) -else - AC_MSG_RESULT(no) -fi - -cf_x_athena_lib="" - -if test "$PKG_CONFIG" != none ; then - cf_athena_list= - test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" - for cf_athena_pkg in \ - $cf_athena_list \ - ${cf_x_athena} \ - ${cf_x_athena}-devel \ - lib${cf_x_athena} \ - lib${cf_x_athena}-devel - do - CF_TRY_PKG_CONFIG($cf_athena_pkg,[ - cf_x_athena_lib="$cf_pkgconfig_libs" - CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) - AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) - -AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ -AC_TRY_LINK([ -#include -],[ -int check = XmuCompareISOLatin1("big", "small") -],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) - - if test "$cf_cv_xaw_compat" = no - then - # workaround for broken ".pc" files... - case "$cf_x_athena_lib" in #(vi - *-lXmu*) #(vi - ;; - *) - CF_VERBOSE(work around broken package) - CF_TRY_PKG_CONFIG(xmu,,[CF_ADD_LIB_AFTER(-lXt,-lXmu)]) - ;; - esac - fi - - break]) - done -fi - -if test -z "$cf_x_athena_lib" ; then - CF_X_EXT - CF_X_TOOLKIT - CF_X_ATHENA_CPPFLAGS($cf_x_athena) - CF_X_ATHENA_LIBS($cf_x_athena) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_X_ATHENA_CPPFLAGS version: 5 updated: 2010/05/26 17:35:30 -dnl -------------------- -dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of -dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. -AC_DEFUN([CF_X_ATHENA_CPPFLAGS], -[ -cf_x_athena_root=ifelse([$1],,Xaw,[$1]) -cf_x_athena_inc="" - -for cf_path in default \ - /usr/contrib/X11R6 \ - /usr/contrib/X11R5 \ - /usr/lib/X11R5 \ - /usr/local -do - if test -z "$cf_x_athena_inc" ; then - cf_save="$CPPFLAGS" - cf_test=X11/$cf_x_athena_root/SimpleMenu.h - if test $cf_path != default ; then - CPPFLAGS="$cf_save -I$cf_path/include" - AC_MSG_CHECKING(for $cf_test in $cf_path) - else - AC_MSG_CHECKING(for $cf_test) - fi - AC_TRY_COMPILE([ -#include -#include <$cf_test>],[], - [cf_result=yes], - [cf_result=no]) - AC_MSG_RESULT($cf_result) - if test "$cf_result" = yes ; then - cf_x_athena_inc=$cf_path - break - else - CPPFLAGS="$cf_save" - fi - fi -done - -if test -z "$cf_x_athena_inc" ; then - AC_MSG_WARN( -[Unable to successfully find Athena header files with test program]) -elif test "$cf_x_athena_inc" != default ; then - CPPFLAGS="$CPPFLAGS -I$cf_x_athena_inc" -fi -]) -dnl --------------------------------------------------------------------------- -dnl CF_X_ATHENA_LIBS version: 10 updated: 2011/02/13 13:31:33 -dnl ---------------- -dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of -dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. -AC_DEFUN([CF_X_ATHENA_LIBS], -[AC_REQUIRE([CF_X_TOOLKIT]) -cf_x_athena_root=ifelse([$1],,Xaw,[$1]) -cf_x_athena_lib="" - -for cf_path in default \ - /usr/contrib/X11R6 \ - /usr/contrib/X11R5 \ - /usr/lib/X11R5 \ - /usr/local -do - for cf_lib in \ - "-l$cf_x_athena_root -lXmu" \ - "-l$cf_x_athena_root -lXpm -lXmu" \ - "-l${cf_x_athena_root}_s -lXmu_s" - do - if test -z "$cf_x_athena_lib" ; then - cf_save="$LIBS" - cf_test=XawSimpleMenuAddGlobalActions - if test $cf_path != default ; then - CF_ADD_LIBS(-L$cf_path/lib $cf_lib) - AC_MSG_CHECKING(for $cf_lib in $cf_path) - else - CF_ADD_LIBS($cf_lib) - AC_MSG_CHECKING(for $cf_test in $cf_lib) - fi - AC_TRY_LINK([ -#include -#include -],[ -$cf_test((XtAppContext) 0)], - [cf_result=yes], - [cf_result=no]) - AC_MSG_RESULT($cf_result) - if test "$cf_result" = yes ; then - cf_x_athena_lib="$cf_lib" - break - fi - LIBS="$cf_save" - fi - done -done - -if test -z "$cf_x_athena_lib" ; then - AC_MSG_ERROR( -[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) -fi - -CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) -AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) -]) -dnl --------------------------------------------------------------------------- -dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 -dnl -------- -AC_DEFUN([CF_X_EXT],[ -CF_TRY_PKG_CONFIG(Xext,,[ - AC_CHECK_LIB(Xext,XextCreateExtension, - [CF_ADD_LIB(Xext)])]) -])dnl -dnl --------------------------------------------------------------------------- -dnl CF_X_TOOLKIT version: 20 updated: 2010/11/19 05:43:04 -dnl ------------ -dnl Check for X Toolkit libraries -dnl -AC_DEFUN([CF_X_TOOLKIT], -[ -AC_REQUIRE([AC_PATH_XTRA]) -AC_REQUIRE([CF_CHECK_CACHE]) - -cf_have_X_LIBS=no - -CF_TRY_PKG_CONFIG(xt,[ - - case "x$LIBS" in #(vi - *-lX11*) #(vi - ;; - *) -# we have an "xt" package, but it may omit Xt's dependency on X11 -AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ -AC_TRY_LINK([ -#include -],[ - int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); - int rc2 = XClearWindow((Display*) 0, (Window) 0); - int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); - int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); -],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) - if test "$cf_cv_xt_x11_compat" = no - then - CF_VERBOSE(work around broken X11 dependency) - # 2010/11/19 - good enough until a working Xt on Xcb is delivered. - CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) - fi - ;; - esac - -AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ -AC_TRY_LINK([ -#include -],[int num = IceConnectionNumber(0) -],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) - - if test "$cf_cv_xt_ice_compat" = no - then - # workaround for broken ".pc" files used for X Toolkit. - case "x$X_PRE_LIBS" in #(vi - *-lICE*) - case "x$LIBS" in #(vi - *-lICE*) #(vi - ;; - *) - CF_VERBOSE(work around broken ICE dependency) - CF_TRY_PKG_CONFIG(ice, - [CF_TRY_PKG_CONFIG(sm)], - [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) - ;; - esac - ;; - esac - fi - - cf_have_X_LIBS=yes -],[ - - LDFLAGS="$X_LIBS $LDFLAGS" - CF_CHECK_CFLAGS($X_CFLAGS) - - AC_CHECK_FUNC(XOpenDisplay,,[ - AC_CHECK_LIB(X11,XOpenDisplay, - [CF_ADD_LIB(X11)],, - [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])]) - - AC_CHECK_FUNC(XtAppInitialize,,[ - AC_CHECK_LIB(Xt, XtAppInitialize, - [AC_DEFINE(HAVE_LIBXT) - cf_have_X_LIBS=Xt - LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS"],, - [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS])]) -]) - -if test $cf_have_X_LIBS = no ; then - AC_MSG_WARN( -[Unable to successfully link X Toolkit library (-lXt) with -test program. You will have to check and add the proper libraries by hand -to makefile.]) -fi -])dnl -dnl --------------------------------------------------------------------------- -dnl CF__CURSES_HEAD version: 2 updated: 2010/10/23 15:54:49 -dnl --------------- -dnl Define a reusable chunk which includes and when they -dnl are both available. -define([CF__CURSES_HEAD],[ -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif -]) diff --git a/deps/ncurses-5.9/test/background b/deps/ncurses-5.9/test/background deleted file mode 100755 index 57daf00..0000000 Binary files a/deps/ncurses-5.9/test/background and /dev/null differ diff --git a/deps/ncurses-5.9/test/background.c b/deps/ncurses-5.9/test/background.c deleted file mode 100644 index afbe5f5..0000000 --- a/deps/ncurses-5.9/test/background.c +++ /dev/null @@ -1,95 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2003,2006 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. * - ****************************************************************************/ -/* - * $Id: background.c,v 1.3 2006/06/03 16:43:08 tom Exp $ - */ - -#include - -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - short f, b; - - initscr(); - cbreak(); - noecho(); - - if (has_colors()) { - start_color(); - - pair_content(0, &f, &b); - printw("pair 0 contains (%d,%d)\n", f, b); - getch(); - - printw("Initializing pair 1 to red/black\n"); - init_pair(1, COLOR_RED, COLOR_BLACK); - bkgdset(' ' | COLOR_PAIR(1)); - printw("RED/BLACK\n"); - getch(); - - printw("Initializing pair 2 to white/blue\n"); - init_pair(2, COLOR_WHITE, COLOR_BLUE); - bkgdset(' ' | COLOR_PAIR(2)); - printw("WHITE/BLUE\n"); - getch(); - - printw("Resetting colors to pair 0\n"); - bkgdset(' ' | COLOR_PAIR(0)); - printw("Default Colors\n"); - getch(); - - printw("Resetting colors to pair 1\n"); - bkgdset(' ' | COLOR_PAIR(1)); - printw("RED/BLACK\n"); - getch(); - - printw("Setting screen to pair 0\n"); - bkgd(' ' | COLOR_PAIR(0)); - getch(); - - printw("Setting screen to pair 1\n"); - bkgd(' ' | COLOR_PAIR(1)); - getch(); - - printw("Setting screen to pair 2\n"); - bkgd(' ' | COLOR_PAIR(2)); - getch(); - - printw("Setting screen to pair 0\n"); - bkgd(' ' | COLOR_PAIR(0)); - getch(); - - } else { - printw("This demo requires a color terminal"); - getch(); - } - endwin(); - - ExitProgram(EXIT_SUCCESS); -} diff --git a/deps/ncurses-5.9/test/blue b/deps/ncurses-5.9/test/blue deleted file mode 100755 index a669589..0000000 Binary files a/deps/ncurses-5.9/test/blue and /dev/null differ diff --git a/deps/ncurses-5.9/test/bs b/deps/ncurses-5.9/test/bs deleted file mode 100755 index 762343a..0000000 Binary files a/deps/ncurses-5.9/test/bs and /dev/null differ diff --git a/deps/ncurses-5.9/test/cardfile b/deps/ncurses-5.9/test/cardfile deleted file mode 100755 index 18f1658..0000000 Binary files a/deps/ncurses-5.9/test/cardfile and /dev/null differ diff --git a/deps/ncurses-5.9/test/chgat b/deps/ncurses-5.9/test/chgat deleted file mode 100755 index 7349310..0000000 Binary files a/deps/ncurses-5.9/test/chgat and /dev/null differ diff --git a/deps/ncurses-5.9/test/clip_printw b/deps/ncurses-5.9/test/clip_printw deleted file mode 100755 index 71eea48..0000000 Binary files a/deps/ncurses-5.9/test/clip_printw and /dev/null differ diff --git a/deps/ncurses-5.9/test/color_set b/deps/ncurses-5.9/test/color_set deleted file mode 100755 index e334456..0000000 Binary files a/deps/ncurses-5.9/test/color_set and /dev/null differ diff --git a/deps/ncurses-5.9/test/configure b/deps/ncurses-5.9/test/configure deleted file mode 100755 index 2937235..0000000 --- a/deps/ncurses-5.9/test/configure +++ /dev/null @@ -1,15994 +0,0 @@ -#! /bin/sh -# Guess values for system-dependent variables and create Makefiles. -# Generated by Autoconf 2.52.20101002. -# -# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -# Free Software Foundation, Inc. -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Avoid depending upon Character Ranges. -as_cr_letters='abcdefghijklmnopqrstuvwxyz' -as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' -as_cr_Letters=$as_cr_letters$as_cr_LETTERS -as_cr_digits='0123456789' -as_cr_alnum=$as_cr_Letters$as_cr_digits - -# Sed expression to map a string onto a valid variable name. -as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" - -# Sed expression to map a string onto a valid CPP name. -as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" - -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } - -# Name of the host. -# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, -# so uname gets run too. -ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` - -exec 6>&1 - -# -# Initializations. -# -ac_default_prefix=/usr/local -cross_compiling=no -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} - -# Maximum number of lines to put in a shell here document. -# This variable seems obsolete. It should probably be removed, and -# only ac_max_sed_lines should be used. -: ${ac_max_here_lines=38} - -ac_unique_file="ncurses.c" -# Factoring default headers for most tests. -ac_includes_default="\ -#include -#if HAVE_SYS_TYPES_H -# include -#endif -#if HAVE_SYS_STAT_H -# include -#endif -#if STDC_HEADERS -# include -# include -#else -# if HAVE_STDLIB_H -# include -# endif -#endif -#if HAVE_STRING_H -# if !STDC_HEADERS && HAVE_MEMORY_H -# include -# endif -# include -#endif -#if HAVE_STRINGS_H -# include -#endif -#if HAVE_INTTYPES_H -# include -#else -# if HAVE_STDINT_H -# include -# endif -#endif -#if HAVE_UNISTD_H -# include -#endif" - -# Initialize some variables set by options. -ac_init_help= -ac_init_version=false -# The variables have the same names as the options, with -# dashes changed to underlines. -cache_file=/dev/null -exec_prefix=NONE -no_create= -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -verbose= -x_includes=NONE -x_libraries=NONE - -# Installation directory options. -# These are left unexpanded so users can "make install exec_prefix=/foo" -# and all the variables that are supposed to be based on exec_prefix -# by default will actually change. -# Use braces instead of parens because sh, perl, etc. also accept them. -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Identity of this package. -PACKAGE_NAME= -PACKAGE_TARNAME= -PACKAGE_VERSION= -PACKAGE_STRING= -PACKAGE_BUGREPORT= - -ac_prev= -for ac_option -do - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case $ac_option in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir=$ac_optarg ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build_alias ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build_alias=$ac_optarg ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file=$ac_optarg ;; - - --config-cache | -C) - cache_file=config.cache ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir=$ac_optarg ;; - - -disable-* | --disable-*) - ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - eval "enable_$ac_feature=no" ;; - - -enable-* | --enable-*) - ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid feature name: $ac_feature" >&2 - { (exit 1); exit 1; }; } - ac_feature=`echo $ac_feature | sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "enable_$ac_feature='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix=$ac_optarg ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he | -h) - ac_init_help=long ;; - -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) - ac_init_help=recursive ;; - -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) - ac_init_help=short ;; - - -host | --host | --hos | --ho) - ac_prev=host_alias ;; - -host=* | --host=* | --hos=* | --ho=*) - host_alias=$ac_optarg ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir=$ac_optarg ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir=$ac_optarg ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir=$ac_optarg ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir=$ac_optarg ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir=$ac_optarg ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir=$ac_optarg ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir=$ac_optarg ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix=$ac_optarg ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix=$ac_optarg ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix=$ac_optarg ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name=$ac_optarg ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir=$ac_optarg ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir=$ac_optarg ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site=$ac_optarg ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir=$ac_optarg ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir=$ac_optarg ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target_alias ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target_alias=$ac_optarg ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers | -V) - ac_init_version=: ;; - - -with-* | --with-*) - ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package| sed 's/-/_/g'` - case $ac_option in - *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; - *) ac_optarg=yes ;; - esac - eval "with_$ac_package='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` - # Reject names that are not valid shell variable names. - expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid package name: $ac_package" >&2 - { (exit 1); exit 1; }; } - ac_package=`echo $ac_package | sed 's/-/_/g'` - eval "with_$ac_package=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes=$ac_optarg ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries=$ac_optarg ;; - - -*) { echo "$as_me: error: unrecognized option: $ac_option -Try \`$0 --help' for more information." >&2 - { (exit 1); exit 1; }; } - ;; - - *=*) - ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` - # Reject names that are not valid shell variable names. - expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && - { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 - { (exit 1); exit 1; }; } - ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` - eval "$ac_envvar='$ac_optarg'" - export $ac_envvar ;; - - *) - # FIXME: should be removed in autoconf 3.0. - echo "$as_me: WARNING: you should use --build, --host, --target" >&2 - expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && - echo "$as_me: WARNING: invalid host type: $ac_option" >&2 - : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option} - ;; - - esac -done - -if test -n "$ac_prev"; then - ac_option=--`echo $ac_prev | sed 's/_/-/g'` - { echo "$as_me: error: missing argument to $ac_option" >&2 - { (exit 1); exit 1; }; } -fi - -# Be sure to have absolute paths. -for ac_var in exec_prefix prefix -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* | NONE | '' ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# Be sure to have absolute paths. -for ac_var in bindir sbindir libexecdir datadir sysconfdir sharedstatedir \ - localstatedir libdir includedir oldincludedir infodir mandir -do - eval ac_val=$`echo $ac_var` - case $ac_val in - [\\/$]* | ?:[\\/]* ) ;; - *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 - { (exit 1); exit 1; }; };; - esac -done - -# There might be people who depend on the old broken behavior: `$host' -# used to hold the argument of --host etc. -build=$build_alias -host=$host_alias -target=$target_alias - -# FIXME: should be removed in autoconf 3.0. -if test "x$host_alias" != x; then - if test "x$build_alias" = x; then - cross_compiling=maybe - echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used." >&2 - elif test "x$build_alias" != "x$host_alias"; then - cross_compiling=yes - fi -fi - -ac_tool_prefix= -test -n "$host_alias" && ac_tool_prefix=$host_alias- - -test "$silent" = yes && exec 6>/dev/null - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 - { (exit 1); exit 1; }; } - else - { echo "$as_me: error: cannot find sources in $srcdir" >&2 - { (exit 1); exit 1; }; } - fi -fi -srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` -ac_env_build_alias_set=${build_alias+set} -ac_env_build_alias_value=$build_alias -ac_cv_env_build_alias_set=${build_alias+set} -ac_cv_env_build_alias_value=$build_alias -ac_env_host_alias_set=${host_alias+set} -ac_env_host_alias_value=$host_alias -ac_cv_env_host_alias_set=${host_alias+set} -ac_cv_env_host_alias_value=$host_alias -ac_env_target_alias_set=${target_alias+set} -ac_env_target_alias_value=$target_alias -ac_cv_env_target_alias_set=${target_alias+set} -ac_cv_env_target_alias_value=$target_alias -ac_env_CC_set=${CC+set} -ac_env_CC_value=$CC -ac_cv_env_CC_set=${CC+set} -ac_cv_env_CC_value=$CC -ac_env_CFLAGS_set=${CFLAGS+set} -ac_env_CFLAGS_value=$CFLAGS -ac_cv_env_CFLAGS_set=${CFLAGS+set} -ac_cv_env_CFLAGS_value=$CFLAGS -ac_env_LDFLAGS_set=${LDFLAGS+set} -ac_env_LDFLAGS_value=$LDFLAGS -ac_cv_env_LDFLAGS_set=${LDFLAGS+set} -ac_cv_env_LDFLAGS_value=$LDFLAGS -ac_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_env_CPPFLAGS_value=$CPPFLAGS -ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} -ac_cv_env_CPPFLAGS_value=$CPPFLAGS -ac_env_CPP_set=${CPP+set} -ac_env_CPP_value=$CPP -ac_cv_env_CPP_set=${CPP+set} -ac_cv_env_CPP_value=$CPP - -# -# Report the --help message. -# -if test "$ac_init_help" = "long"; then - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat < if you have libraries in a - nonstandard directory - CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have - headers in a nonstandard directory - CPP C preprocessor - -Use these variables to override the choices made by `configure' or to help -it to find libraries and programs with nonstandard names/locations. - -EOF -fi - -if test "$ac_init_help" = "recursive"; then - # If there are subdirs, report their specific --help. - ac_popdir=`pwd` - for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue - cd $ac_subdir - # A "../" for each directory in /$ac_subdir. - ac_dots=`echo $ac_subdir | - sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` - - case $srcdir in - .) # No --srcdir option. We are building in place. - ac_sub_srcdir=$srcdir ;; - [\\/]* | ?:[\\/]* ) # Absolute path. - ac_sub_srcdir=$srcdir/$ac_subdir ;; - *) # Relative path. - ac_sub_srcdir=$ac_dots$srcdir/$ac_subdir ;; - esac - - # Check for guested configure; otherwise get Cygnus style configure. - if test -f $ac_sub_srcdir/configure.gnu; then - echo - $SHELL $ac_sub_srcdir/configure.gnu --help=recursive - elif test -f $ac_sub_srcdir/configure; then - echo - $SHELL $ac_sub_srcdir/configure --help=recursive - elif test -f $ac_sub_srcdir/configure.ac || - test -f $ac_sub_srcdir/configure.in; then - echo - $ac_configure --help - else - echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 - fi - cd $ac_popdir - done -fi - -test -n "$ac_init_help" && exit 0 -if $ac_init_version; then - cat <<\EOF - -Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 -Free Software Foundation, Inc. -This configure script is free software; the Free Software Foundation -gives unlimited permission to copy, distribute and modify it. -EOF - exit 0 -fi -exec 5>config.log -cat >&5 </dev/null | sed 1q` -uname -m = `(uname -m) 2>/dev/null || echo unknown` -uname -r = `(uname -r) 2>/dev/null || echo unknown` -uname -s = `(uname -s) 2>/dev/null || echo unknown` -uname -v = `(uname -v) 2>/dev/null || echo unknown` - -/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` -/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` - -/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` -/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` -/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` -hostinfo = `(hostinfo) 2>/dev/null || echo unknown` -/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` -/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` -/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` - -PATH = $PATH - -_ASUNAME -} >&5 - -cat >&5 <\?\"\']*) - ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - ac_sep=" " ;; - *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" - ac_sep=" " ;; - esac - # Get rid of the leading space. -done - -# When interrupted or exit'd, cleanup temporary files, and complete -# config.log. We remove comments because anyway the quotes in there -# would cause problems or look ugly. -trap 'exit_status=$? - # Save into config.log some information that might help in debugging. - echo >&5 - echo "## ----------------- ##" >&5 - echo "## Cache variables. ##" >&5 - echo "## ----------------- ##" >&5 - echo >&5 - # The following way of writing the cache mishandles newlines in values, -{ - (set) 2>&1 | - case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in - *ac_space=\ *) - sed -n \ - "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" - ;; - *) - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} >&5 - sed "/^$/d" confdefs.h >conftest.log - if test -s conftest.log; then - echo >&5 - echo "## ------------ ##" >&5 - echo "## confdefs.h. ##" >&5 - echo "## ------------ ##" >&5 - echo >&5 - cat conftest.log >&5 - fi - (echo; echo) >&5 - test "$ac_signal" != 0 && - echo "$as_me: caught signal $ac_signal" >&5 - echo "$as_me: exit $exit_status" >&5 - rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && - exit $exit_status - ' 0 -for ac_signal in 1 2 13 15; do - trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal -done -ac_signal=0 - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo >confdefs.h - -# Let the site file select an alternate cache file if it wants to. -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - { echo "$as_me:894: 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" - fi -done - -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:905: loading cache $cache_file" >&5 -echo "$as_me: loading cache $cache_file" >&6;} - case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; - esac - fi -else - { echo "$as_me:913: creating cache $cache_file" >&5 -echo "$as_me: creating cache $cache_file" >&6;} - >$cache_file -fi - -# Check that the precious variables saved in the cache have kept the same -# value. -ac_cache_corrupted=false -for ac_var in `(set) 2>&1 | - sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do - eval ac_old_set=\$ac_cv_env_${ac_var}_set - eval ac_new_set=\$ac_env_${ac_var}_set - eval ac_old_val="\$ac_cv_env_${ac_var}_value" - eval ac_new_val="\$ac_env_${ac_var}_value" - case $ac_old_set,$ac_new_set in - set,) - { echo "$as_me:929: 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:933: 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:939: 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:941: former value: $ac_old_val" >&5 -echo "$as_me: former value: $ac_old_val" >&2;} - { echo "$as_me:943: current value: $ac_new_val" >&5 -echo "$as_me: current value: $ac_new_val" >&2;} - ac_cache_corrupted=: - fi;; - esac - # Pass precious variables to config.status. It doesn't matter if - # we pass some twice (in addition to the command line arguments). - if test "$ac_new_set" = set; then - case $ac_new_val in - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) - ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` - ac_configure_args="$ac_configure_args '$ac_arg'" - ;; - *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" - ;; - esac - fi -done -if $ac_cache_corrupted; then - { echo "$as_me:962: 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:964: 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 - -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 - -case `echo "testing\c"; echo 1,2,3`,`echo -n testing; echo 1,2,3` in - *c*,-n*) ECHO_N= ECHO_C=' -' ECHO_T=' ' ;; - *c*,* ) ECHO_N=-n ECHO_C= ECHO_T= ;; - *) ECHO_N= ECHO_C='\c' ECHO_T= ;; -esac -echo "#! $SHELL" >conftest.sh -echo "exit 0" >>conftest.sh -chmod +x conftest.sh -if { (echo "$as_me:985: PATH=\".;.\"; conftest.sh") >&5 - (PATH=".;."; conftest.sh) 2>&5 - ac_status=$? - echo "$as_me:988: \$? = $ac_status" >&5 - (exit $ac_status); }; then - ac_path_separator=';' -else - ac_path_separator=: -fi -PATH_SEPARATOR="$ac_path_separator" -rm -f conftest.sh - -ac_config_headers="$ac_config_headers ncurses_cfg.h:ncurses_tst.hin" - -test -f config.guess || ( test -f ../config.guess && cp ../config.guess ./ ) - -test -f config.sub || ( test -f ../config.sub && cp ../config.sub ./ ) - -ac_aux_dir= -for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do - if test -f $ac_dir/install-sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install-sh -c" - break - elif test -f $ac_dir/install.sh; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/install.sh -c" - break - elif test -f $ac_dir/shtool; then - ac_aux_dir=$ac_dir - ac_install_sh="$ac_aux_dir/shtool install -c" - break - fi -done -if test -z "$ac_aux_dir"; then - { { echo "$as_me:1020: 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 -ac_config_guess="$SHELL $ac_aux_dir/config.guess" -ac_config_sub="$SHELL $ac_aux_dir/config.sub" -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:1030: error: cannot run $ac_config_sub" >&5 -echo "$as_me: error: cannot run $ac_config_sub" >&2;} - { (exit 1); exit 1; }; } - -echo "$as_me:1034: 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 -else - ac_cv_build_alias=$build_alias -test -z "$ac_cv_build_alias" && - ac_cv_build_alias=`$ac_config_guess` -test -z "$ac_cv_build_alias" && - { { echo "$as_me:1043: 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:1047: 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:1052: 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/'` - -if test -f $srcdir/config.guess || test -f $ac_aux_dir/config.guess ; then - echo "$as_me:1060: 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 -else - ac_cv_host_alias=$host_alias -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:1069: 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:1074: 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/'` -host_vendor=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` -host_os=`echo $ac_cv_host | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` - - system_name="$host_os" -else - system_name="`(uname -s -r) 2>/dev/null`" - if test -z "$system_name" ; then - system_name="`(hostname) 2>/dev/null`" - fi -fi -test -n "$system_name" && cat >>confdefs.h <&6 -else - cf_cv_system_name="$system_name" -fi - -test -z "$system_name" && system_name="$cf_cv_system_name" -test -n "$cf_cv_system_name" && echo "$as_me:1099: 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:1103: 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:1105: 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 - -test "$program_prefix" != NONE && - program_transform_name="s,^,$program_prefix,;$program_transform_name" -# Use a double $ so make ignores it. -test "$program_suffix" != NONE && - program_transform_name="s,\$,$program_suffix,;$program_transform_name" -# Double any \ or $. echo might interpret backslashes. -# By default was `s,x,x', remove it if useless. -cat <<\_ACEOF >conftest.sed -s/[\\$]/&&/g;s/;s,x,x,$// -_ACEOF -program_transform_name=`echo $program_transform_name | sed -f conftest.sed` -rm conftest.sed - -echo "$as_me:1123: 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 - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.make <<\EOF -all: - @echo 'ac_maketemp="${MAKE}"' -EOF -# GNU make sometimes prints "make[1]: Entering...", which would confuse us. -eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` -if test -n "$ac_maketemp"; then - eval ac_cv_prog_make_${ac_make}_set=yes -else - eval ac_cv_prog_make_${ac_make}_set=no -fi -rm -f conftest.make -fi -if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then - echo "$as_me:1143: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - SET_MAKE= -else - echo "$as_me:1147: result: no" >&5 -echo "${ECHO_T}no" >&6 - SET_MAKE="MAKE=${MAKE-make}" -fi - -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 -if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. -set dummy ${ac_tool_prefix}gcc; ac_word=$2 -echo "$as_me:1161: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc" -echo "$as_me:1176: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1184: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1187: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "gcc", so it can be a program name with args. -set dummy gcc; ac_word=$2 -echo "$as_me:1196: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="gcc" -echo "$as_me:1211: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1219: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1222: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. -set dummy ${ac_tool_prefix}cc; ac_word=$2 -echo "$as_me:1235: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}cc" -echo "$as_me:1250: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1258: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1261: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$ac_cv_prog_CC"; then - ac_ct_CC=$CC - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:1270: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="cc" -echo "$as_me:1285: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1293: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1296: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - CC=$ac_ct_CC -else - CC="$ac_cv_prog_CC" -fi - -fi -if test -z "$CC"; then - # Extract the first word of "cc", so it can be a program name with args. -set dummy cc; ac_word=$2 -echo "$as_me:1309: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # Let the user override the test. -else - ac_prog_rejected=no - 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 -if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then - ac_prog_rejected=yes - continue -fi -ac_cv_prog_CC="cc" -echo "$as_me:1329: found $ac_dir/$ac_word" >&5 -break -done - -if test $ac_prog_rejected = yes; then - # We found a bogon in the path, so make sure we never use it. - set dummy $ac_cv_prog_CC - shift - if test $# != 0; then - # We chose a different compiler from the bogus one. - # However, it has the same basename, so the bogon will be chosen - # first if we set CC to just the basename; use the full file name. - shift - set dummy "$ac_dir/$ac_word" ${1+"$@"} - shift - ac_cv_prog_CC="$@" - fi -fi -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1351: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1354: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -if test -z "$CC"; then - if test -n "$ac_tool_prefix"; then - for ac_prog in cl - 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:1365: 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 -else - if test -n "$CC"; then - ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$ac_prog" -echo "$as_me:1380: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CC=$ac_cv_prog_CC -if test -n "$CC"; then - echo "$as_me:1388: result: $CC" >&5 -echo "${ECHO_T}$CC" >&6 -else - echo "$as_me:1391: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CC" && break - done -fi -if test -z "$CC"; then - ac_ct_CC=$CC - for ac_prog in cl -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:1404: 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 -else - if test -n "$ac_ct_CC"; then - ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="$ac_prog" -echo "$as_me:1419: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ac_ct_CC=$ac_cv_prog_ac_ct_CC -if test -n "$ac_ct_CC"; then - echo "$as_me:1427: result: $ac_ct_CC" >&5 -echo "${ECHO_T}$ac_ct_CC" >&6 -else - echo "$as_me:1430: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ac_ct_CC" && break -done - - CC=$ac_ct_CC -fi - -fi - -test -z "$CC" && { { echo "$as_me:1442: 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:1447:" \ - "checking for C compiler version" >&5 -ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:1450: \"$ac_compiler --version &5\"") >&5 - (eval $ac_compiler --version &5) 2>&5 - ac_status=$? - echo "$as_me:1453: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:1455: \"$ac_compiler -v &5\"") >&5 - (eval $ac_compiler -v &5) 2>&5 - ac_status=$? - echo "$as_me:1458: \$? = $ac_status" >&5 - (exit $ac_status); } -{ (eval echo "$as_me:1460: \"$ac_compiler -V &5\"") >&5 - (eval $ac_compiler -V &5) 2>&5 - ac_status=$? - echo "$as_me:1463: \$? = $ac_status" >&5 - (exit $ac_status); } - -cat >conftest.$ac_ext <<_ACEOF -#line 1467 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -ac_clean_files_save=$ac_clean_files -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:1483: 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:1486: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 - ac_status=$? - echo "$as_me:1489: \$? = $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 -# resort. -for ac_file in `ls a.exe conftest.exe 2>/dev/null; - ls a.out conftest 2>/dev/null; - ls a.* conftest.* 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - a.out ) # We found the default executable, but exeext='' is most - # certainly right. - break;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - # FIXME: I believe we export ac_cv_exeext for Libtool --akim. - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1512: 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:1518: 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:1523: 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:1529: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1532: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cross_compiling=no - else - if test "$cross_compiling" = maybe; then - cross_compiling=yes - else - { { echo "$as_me:1539: 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;} - { (exit 1); exit 1; }; } - fi - fi -fi -echo "$as_me:1547: 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:1554: checking whether we are cross compiling" >&5 -echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 -echo "$as_me:1556: result: $cross_compiling" >&5 -echo "${ECHO_T}$cross_compiling" >&6 - -echo "$as_me:1559: checking for executable suffix" >&5 -echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 -if { (eval echo "$as_me:1561: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:1564: \$? = $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 -# work properly (i.e., refer to `conftest.exe'), while it won't with -# `rm'. -for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - export ac_cv_exeext - break;; - * ) break;; - esac -done -else - { { echo "$as_me:1580: 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:1586: 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:1592: 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 1598 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.o conftest.obj -if { (eval echo "$as_me:1610: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1613: \$? = $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 - *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;; - *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` - break;; - esac -done -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -{ { echo "$as_me:1625: 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:1632: result: $ac_cv_objext" >&5 -echo "${ECHO_T}$ac_cv_objext" >&6 -OBJEXT=$ac_cv_objext -ac_objext=$OBJEXT -echo "$as_me:1636: 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 1642 "configure" -#include "confdefs.h" - -int -main () -{ -#ifndef __GNUC__ - choke me -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1657: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1660: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1663: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1666: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_compiler_gnu=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_compiler_gnu=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -ac_cv_c_compiler_gnu=$ac_compiler_gnu - -fi -echo "$as_me:1678: 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:1684: 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 1690 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1702: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1705: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1708: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1711: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_g=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_prog_cc_g=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:1721: 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 -elif test $ac_cv_prog_cc_g = yes; then - if test "$GCC" = yes; then - CFLAGS="-g -O2" - else - CFLAGS="-g" - fi -else - if test "$GCC" = yes; then - CFLAGS="-O2" - else - CFLAGS= - fi -fi -# Some people use a C++ compiler to compile C. Since we use `exit', -# in C++ we need to declare it. In case someone uses the same compiler -# for both compiling C and C++ we need to have the C++ compiler decide -# the declaration of exit, since it's the most demanding environment. -cat >conftest.$ac_ext <<_ACEOF -#ifndef __cplusplus - choke me -#endif -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1748: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1751: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1754: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1757: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - for ac_declaration in \ - ''\ - '#include ' \ - 'extern "C" void std::exit (int) throw (); using std::exit;' \ - 'extern "C" void std::exit (int); using std::exit;' \ - 'extern "C" void exit (int) throw ();' \ - 'extern "C" void exit (int);' \ - 'void exit (int);' -do - cat >conftest.$ac_ext <<_ACEOF -#line 1769 "configure" -#include "confdefs.h" -#include -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1782: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1785: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1788: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1791: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -continue -fi -rm -f conftest.$ac_objext conftest.$ac_ext - cat >conftest.$ac_ext <<_ACEOF -#line 1801 "configure" -#include "confdefs.h" -$ac_declaration -int -main () -{ -exit (42); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:1813: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:1816: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:1819: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:1822: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -rm -rf conftest* -if test -n "$ac_declaration"; then - echo '#ifdef __cplusplus' >>confdefs.h - echo $ac_declaration >>confdefs.h - echo '#endif' >>confdefs.h -fi - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -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 - -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:1856: 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 - CPP= -fi -if test -z "$CPP"; then - if test "${ac_cv_prog_CPP+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # Double quotes because CPP needs to be expanded - for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" - do - ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 1877 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:1882: \"$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:1888: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 1911 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:1915: \"$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:1921: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - break -fi - - done - ac_cv_prog_CPP=$CPP - -fi - CPP=$ac_cv_prog_CPP -else - ac_cv_prog_CPP=$CPP -fi -echo "$as_me:1958: result: $CPP" >&5 -echo "${ECHO_T}$CPP" >&6 -ac_preproc_ok=false -for ac_c_preproc_warn_flag in '' yes -do - # Use a header file that comes with gcc, so configuring glibc - # with a fresh cross-compiler works. - # 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 1968 "configure" -#include "confdefs.h" -#include - Syntax error -_ACEOF -if { (eval echo "$as_me:1973: \"$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:1979: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - : -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Broken: fails on valid input. -continue -fi -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 2002 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:2006: \"$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:2012: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # Broken: success on invalid input. -continue -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - # Passes both tests. -ac_preproc_ok=: -break -fi -rm -f conftest.err conftest.$ac_ext - -done -# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. -rm -f conftest.err conftest.$ac_ext -if $ac_preproc_ok; then - : -else - { { echo "$as_me:2040: error: C preprocessor \"$CPP\" fails sanity check" >&5 -echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} - { (exit 1); exit 1; }; } -fi - -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 - -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:2056: 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 -else - if test -n "$AWK"; then - ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog" -echo "$as_me:2071: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -AWK=$ac_cv_prog_AWK -if test -n "$AWK"; then - echo "$as_me:2079: result: $AWK" >&5 -echo "${ECHO_T}$AWK" >&6 -else - echo "$as_me:2082: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$AWK" && break -done - -# 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: -# SysV /etc/install, /usr/sbin/install -# SunOS /usr/etc/install -# IRIX /sbin/install -# AIX /bin/install -# AmigaOS /C/install, which installs bootblocks on floppy discs -# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag -# 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:2101: 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 - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_save_IFS=$IFS; IFS=$ac_path_separator - for ac_dir in $PATH; do - IFS=$ac_save_IFS - # Account for people who put trailing slashes in PATH elements. - case $ac_dir/ in - / | ./ | .// | /cC/* \ - | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ - | /usr/ucb/* ) ;; - *) - # OSF1 and SCO ODT 3.0 have their own names for install. - # Don't use installbsd from OSF since it installs stuff as root - # by default. - for ac_prog in ginstall scoinst install; do - if $as_executable_p "$ac_dir/$ac_prog"; then - if test $ac_prog = install && - grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then - # AIX install. It has an incompatible calling convention. - : - elif test $ac_prog = install && - grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then - # program-specific install script used by HP pwplus--don't use. - : - else - ac_cv_path_install="$ac_dir/$ac_prog -c" - break 2 - fi - fi - done - ;; - esac - done - -fi - if test "${ac_cv_path_install+set}" = set; then - INSTALL=$ac_cv_path_install - else - # As a last resort, use the slow shell script. We don't cache a - # path for INSTALL within a source directory, because that will - # break other packages using the cache if that directory is - # removed, or if the path is relative. - INSTALL=$ac_install_sh - fi -fi -echo "$as_me:2150: result: $INSTALL" >&5 -echo "${ECHO_T}$INSTALL" >&6 - -# Use test -z because SunOS4 sh mishandles braces in ${var-val}. -# It thinks the first close brace ends the variable substitution. -test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' - -test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' - -test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - -case $INSTALL in -/*) - ;; -*) - cf_dir=`echo $INSTALL | sed -e 's%/[^/]*$%%'` - test -z "$cf_dir" && cf_dir=. - INSTALL=`cd $cf_dir && pwd`/`echo $INSTALL | sed -e 's%^.*/%%'` - ;; -esac - -for ac_prog in tdlint lint alint splint lclint -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:2175: 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 -else - if test -n "$LINT"; then - ac_cv_prog_LINT="$LINT" # 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_LINT="$ac_prog" -echo "$as_me:2190: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -LINT=$ac_cv_prog_LINT -if test -n "$LINT"; then - echo "$as_me:2198: result: $LINT" >&5 -echo "${ECHO_T}$LINT" >&6 -else - echo "$as_me:2201: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$LINT" && break -done - -echo "$as_me:2208: 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 -else - -if test "$cross_compiling" = yes ; then - case $target_alias in #(vi - *-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-mingw32*|*-uwin*) #(vi - cf_cv_mixedcase=no - ;; - *) - cf_cv_mixedcase=yes - ;; - esac -else - rm -f conftest CONFTEST - echo test >conftest - if test -f CONFTEST ; then - cf_cv_mixedcase=no - else - cf_cv_mixedcase=yes - fi - rm -f conftest CONFTEST -fi - -fi -echo "$as_me:2235: result: $cf_cv_mixedcase" >&5 -echo "${ECHO_T}$cf_cv_mixedcase" >&6 -test "$cf_cv_mixedcase" = yes && cat >>confdefs.h <<\EOF -#define MIXEDCASE_FILENAMES 1 -EOF - -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:2245: 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 -else - if test -n "$CTAGS"; then - ac_cv_prog_CTAGS="$CTAGS" # 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_CTAGS="$ac_prog" -echo "$as_me:2260: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -CTAGS=$ac_cv_prog_CTAGS -if test -n "$CTAGS"; then - echo "$as_me:2268: result: $CTAGS" >&5 -echo "${ECHO_T}$CTAGS" >&6 -else - echo "$as_me:2271: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$CTAGS" && break -done - -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:2282: 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 -else - if test -n "$ETAGS"; then - ac_cv_prog_ETAGS="$ETAGS" # 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_ETAGS="$ac_prog" -echo "$as_me:2297: found $ac_dir/$ac_word" >&5 -break -done - -fi -fi -ETAGS=$ac_cv_prog_ETAGS -if test -n "$ETAGS"; then - echo "$as_me:2305: result: $ETAGS" >&5 -echo "${ECHO_T}$ETAGS" >&6 -else - echo "$as_me:2308: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$ETAGS" && break -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:2317: 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 -else - if test -n "$MAKE_LOWER_TAGS"; then - ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # 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_MAKE_LOWER_TAGS="yes" -echo "$as_me:2332: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no" -fi -fi -MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS -if test -n "$MAKE_LOWER_TAGS"; then - echo "$as_me:2341: result: $MAKE_LOWER_TAGS" >&5 -echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 -else - echo "$as_me:2344: 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:2351: 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 -else - if test -n "$MAKE_UPPER_TAGS"; then - ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # 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_MAKE_UPPER_TAGS="yes" -echo "$as_me:2366: found $ac_dir/$ac_word" >&5 -break -done - - test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no" -fi -fi -MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS -if test -n "$MAKE_UPPER_TAGS"; then - echo "$as_me:2375: result: $MAKE_UPPER_TAGS" >&5 -echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 -else - echo "$as_me:2378: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -else - MAKE_UPPER_TAGS=no -fi - -if test "$MAKE_UPPER_TAGS" = yes ; then - MAKE_UPPER_TAGS= -else - MAKE_UPPER_TAGS="#" -fi - -if test "$MAKE_LOWER_TAGS" = yes ; then - MAKE_LOWER_TAGS= -else - MAKE_LOWER_TAGS="#" -fi - -echo "$as_me:2398: 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 2405 "configure" -#include "confdefs.h" - - #include - #include - -int -main () -{ -double x = rand(); printf("result = %g\n", sin(x)) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:2420: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:2423: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:2426: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2429: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_need_libm=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_need_libm=yes -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:2439: result: $cf_cv_need_libm" >&5 -echo "${ECHO_T}$cf_cv_need_libm" >&6 -if test "$cf_cv_need_libm" = yes -then -MATH_LIB=-lm -fi - -CC_G_OPT="-g" -CC_SHARED_OPTS=unknown -CPPFLAGS="$CPPFLAGS" -DFT_DEP_SUFFIX="" -DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'` -DFT_UPR_MODEL="NORMAL" -LD="ld" -LDFLAGS_SHARED="" -LDFLAGS_STATIC="" -LD_MODEL="" -LD_SHARED_OPTS="" -LIBTOOL="" -LIB_CLEAN="" -LIB_COMPILE="" -LIB_LINK='${CC}' -LINK_TESTS="" -LOCAL_LDFLAGS="" -PTHREAD="-lm" -TEST_ARGS="" -TEST_DEPS="" -TEST_LIBS="" -TINFO_ARGS='$(LIBS_CURSES)' -cf_cv_abi_version="" -cf_cv_rel_version="" - -cf_cv_screen=curses -cf_cv_libtype= - -echo "$as_me:2474: checking for ${CC:-cc} option to accept ANSI C" >&5 -echo $ECHO_N "checking for ${CC:-cc} option to accept ANSI C... $ECHO_C" >&6 -if test "${cf_cv_ansi_cc+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ansi_cc=no -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX -Aa -D_HPUX_SOURCE -# SVR4 -Xc -# UnixWare 1.2 (cannot use -Xc, since ANSI/POSIX clashes) -for cf_arg in "-DCC_HAS_PROTOS" \ - "" \ - -qlanglvl=ansi \ - -std1 \ - -Ae \ - "-Aa -D_HPUX_SOURCE" \ - -Xc -do - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_arg -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - cat >conftest.$ac_ext <<_ACEOF -#line 2578 "configure" -#include "confdefs.h" - -#ifndef CC_HAS_PROTOS -#if !defined(__STDC__) || (__STDC__ != 1) -choke me -#endif -#endif - -int -main () -{ - - int test (int i, double x); - struct s1 {int (*f) (int a);}; - struct s2 {int (*f) (double a);}; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2599: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2602: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2605: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2608: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ansi_cc="$cf_arg"; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done -CFLAGS="$cf_save_CFLAGS" -CPPFLAGS="$cf_save_CPPFLAGS" - -fi -echo "$as_me:2621: result: $cf_cv_ansi_cc" >&5 -echo "${ECHO_T}$cf_cv_ansi_cc" >&6 - -if test "$cf_cv_ansi_cc" != "no"; then -if test ".$cf_cv_ansi_cc" != ".-DCC_HAS_PROTOS"; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_cv_ansi_cc -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -else - cat >>confdefs.h <<\EOF -#define CC_HAS_PROTOS 1 -EOF - -fi -fi - -if test "$cf_cv_ansi_cc" = "no"; then - { { echo "$as_me:2714: error: Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto" >&5 -echo "$as_me: error: Your compiler does not appear to recognize prototypes. -You have the following choices: - a. adjust your compiler options - b. get an up-to-date compiler - c. use a wrapper such as unproto" >&2;} - { (exit 1); exit 1; }; } -fi - -if test "$GCC" = yes -then -cat > conftest.i <&5 -echo "$as_me: checking for $CC __attribute__ directives..." >&6;} -cat > conftest.$ac_ext <&5 - - case $cf_attribute in #(vi - printf) #(vi - cf_printf_attribute=yes - cat >conftest.h <conftest.h <conftest.h <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2800: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:2802: result: ... $cf_attribute" >&5 -echo "${ECHO_T}... $cf_attribute" >&6 - cat conftest.h >>confdefs.h - case $cf_attribute in #(vi - printf) #(vi - if test "$cf_printf_attribute" = no ; then - cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h -fi -rm -rf conftest* -fi - -cf_XOPEN_SOURCE=500 -cf_POSIX_C_SOURCE=199506L -cf_xopen_source= - -case $host_os in #(vi -aix[456]*) #(vi - cf_xopen_source="-D_ALL_SOURCE" - ;; -cygwin) #(vi - cf_XOPEN_SOURCE=600 - ;; -darwin[0-8].*) #(vi - cf_xopen_source="-D_APPLE_C_SOURCE" - ;; -darwin*) #(vi - cf_xopen_source="-D_DARWIN_C_SOURCE" - ;; -freebsd*|dragonfly*) #(vi - # 5.x headers associate - # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L - # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L - cf_POSIX_C_SOURCE=200112L - cf_XOPEN_SOURCE=600 - cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -hpux11*) #(vi - cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" - ;; -hpux*) #(vi - cf_xopen_source="-D_HPUX_SOURCE" - ;; -irix[56].*) #(vi - cf_xopen_source="-D_SGI_SOURCE" - ;; -linux*|gnu*|mint*|k*bsd*-gnu) #(vi - -echo "$as_me:2873: 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 2880 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2895: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2898: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2901: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2904: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_gnu_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - cat >conftest.$ac_ext <<_ACEOF -#line 2913 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:2928: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:2931: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:2934: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:2937: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_gnu_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_gnu_source=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS="$cf_save" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:2952: result: $cf_cv_gnu_source" >&5 -echo "${ECHO_T}$cf_cv_gnu_source" >&6 -test "$cf_cv_gnu_source" = yes && CPPFLAGS="$CPPFLAGS -D_GNU_SOURCE" - - ;; -mirbsd*) #(vi - # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks - ;; -netbsd*) #(vi - # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw - ;; -openbsd*) #(vi - # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw - ;; -osf[45]*) #(vi - cf_xopen_source="-D_OSF_SOURCE" - ;; -nto-qnx*) #(vi - cf_xopen_source="-D_QNX_SOURCE" - ;; -sco*) #(vi - # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer - ;; -solaris2.1[0-9]) #(vi - cf_xopen_source="-D__EXTENSIONS__ -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - ;; -solaris2.[1-9]) #(vi - cf_xopen_source="-D__EXTENSIONS__" - ;; -*) - echo "$as_me:2982: 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 2989 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3004: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3007: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3010: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3013: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xopen_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_save="$CPPFLAGS" - CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" - cat >conftest.$ac_ext <<_ACEOF -#line 3022 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _XOPEN_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3037: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3040: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3043: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3046: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xopen_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_xopen_source=$cf_XOPEN_SOURCE -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS="$cf_save" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:3061: result: $cf_cv_xopen_source" >&5 -echo "${ECHO_T}$cf_cv_xopen_source" >&6 - if test "$cf_cv_xopen_source" != no ; then - -CFLAGS=`echo "$CFLAGS" | \ - sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` - -CPPFLAGS=`echo "$CPPFLAGS" | \ - sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` - - cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_temp_xopen_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - fi - -cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE - -cf_save_CFLAGS="$CFLAGS" -cf_save_CPPFLAGS="$CPPFLAGS" - -cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ - sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ - -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` - -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:3168: 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}:3174: testing if the symbol is already defined go no further ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 3177 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _POSIX_C_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3192: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3195: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3198: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3201: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_posix_c_source=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_want_posix_source=no - case .$cf_POSIX_C_SOURCE in #(vi - .[12]??*) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - ;; - .2) #(vi - cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" - cf_want_posix_source=yes - ;; - .*) - cf_want_posix_source=yes - ;; - esac - if test "$cf_want_posix_source" = yes ; then - cat >conftest.$ac_ext <<_ACEOF -#line 3222 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifdef _POSIX_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3237: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3240: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3243: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3246: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" -fi -rm -f conftest.$ac_objext conftest.$ac_ext - fi - -echo "${as_me:-configure}:3257: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 - - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS $cf_cv_posix_c_source" - -echo "${as_me:-configure}:3262: testing if the second compile does not leave our definition intact error ..." 1>&5 - - cat >conftest.$ac_ext <<_ACEOF -#line 3265 "configure" -#include "confdefs.h" -#include -int -main () -{ - -#ifndef _POSIX_C_SOURCE -make an error -#endif - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3280: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3283: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3286: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3289: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_posix_c_source=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cf_save_CFLAGS" - CPPFLAGS="$cf_save_CPPFLAGS" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:3305: 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 - CFLAGS="$cf_trim_CFLAGS" - CPPFLAGS="$cf_trim_CPPFLAGS" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_cv_posix_c_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -fi - - ;; -esac - -if test -n "$cf_xopen_source" ; then - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_xopen_source -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -fi - -echo "$as_me:3477: 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 -else - ac_cv_prog_cc_stdc=no -ac_save_CC=$CC -cat >conftest.$ac_ext <<_ACEOF -#line 3485 "configure" -#include "confdefs.h" -#include -#include -#include -#include -/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ -struct buf { int x; }; -FILE * (*rcsopen) (struct buf *, struct stat *, int); -static char *e (p, i) - char **p; - int i; -{ - return p[i]; -} -static char *f (char * (*g) (char **, int), char **p, ...) -{ - char *s; - va_list v; - va_start (v,p); - s = g (p, va_arg (v,int)); - va_end (v); - return s; -} -int test (int i, double x); -struct s1 {int (*f) (int a);}; -struct s2 {int (*f) (double a);}; -int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); -int argc; -char **argv; -int -main () -{ -return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; - ; - return 0; -} -_ACEOF -# Don't try gcc -ansi; that turns off useful extensions and -# breaks some systems' header files. -# AIX -qlanglvl=ansi -# Ultrix and OSF/1 -std1 -# HP-UX 10.20 and later -Ae -# HP-UX older versions -Aa -D_HPUX_SOURCE -# SVR4 -Xc -D__EXTENSIONS__ -for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" -do - CC="$ac_save_CC $ac_arg" - rm -f conftest.$ac_objext -if { (eval echo "$as_me:3534: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3537: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3540: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3543: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_prog_cc_stdc=$ac_arg -break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext -done -rm -f conftest.$ac_ext conftest.$ac_objext -CC=$ac_save_CC - -fi - -case "x$ac_cv_prog_cc_stdc" in - x|xno) - echo "$as_me:3560: result: none needed" >&5 -echo "${ECHO_T}none needed" >&6 ;; - *) - echo "$as_me:3563: result: $ac_cv_prog_cc_stdc" >&5 -echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 - CC="$CC $ac_cv_prog_cc_stdc" ;; -esac - -echo "$as_me:3568: 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 3574 "configure" -#include "confdefs.h" - -int -main () -{ -/* FIXME: Include the comments suggested by Paul. */ -#ifndef __cplusplus - /* Ultrix mips cc rejects this. */ - typedef int charset[2]; - 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}; - /* 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 - expression */ - const char *g = "string"; - ccp = &g + (g ? g-g : 0); - /* HPUX 7.0 cc rejects these. */ - ++ccp; - p = (char**) ccp; - ccp = (char const *const *) p; - { /* SCO 3.2v4 cc rejects this. */ - char *t; - char const *s = 0 ? (char *) 0 : (char const *) 0; - - *t++ = 0; - } - { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ - int x[] = {25, 17}; - const int *foo = &x[0]; - ++foo; - } - { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ - typedef const int *iptr; - iptr p = 0; - ++p; - } - { /* AIX XL C 1.02.0.0 rejects this saying - "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ - struct s { int j; const int *ap[3]; }; - struct s *b; b->j = 5; - } - { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ - const int foo = 10; - } -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3632: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3635: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3638: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3641: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_c_const=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_c_const=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:3651: result: $ac_cv_c_const" >&5 -echo "${ECHO_T}$ac_cv_c_const" >&6 -if test $ac_cv_c_const = no; then - -cat >>confdefs.h <<\EOF -#define const -EOF - -fi - -echo "$as_me:3661: 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 -else - - for cf_type in \ - "volatile sig_atomic_t" \ - "sig_atomic_t" \ - "int" - do - cat >conftest.$ac_ext <<_ACEOF -#line 3673 "configure" -#include "confdefs.h" - -#include -#include -#include - -extern $cf_type x; -$cf_type x; -static void handler(int sig) -{ - x = 5; -} -int -main () -{ -signal(SIGINT, handler); - x = 1 - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3696: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3699: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3702: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3705: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_sig_atomic_t=$cf_type -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_sig_atomic_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - test "$cf_cv_sig_atomic_t" != no && break - done - -fi - -echo "$as_me:3719: 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 <&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. -if test "${enable_echo+set}" = set; then - enableval="$enable_echo" - test "$enableval" != no && enableval=yes - if test "$enableval" != "yes" ; then - - ECHO_LT='--silent' - ECHO_LD='@echo linking $@;' - RULE_CC='@echo compiling $<' - SHOW_CC='@echo compiling $@' - ECHO_CC='@' - - else - - ECHO_LT='' - ECHO_LD='' - RULE_CC='' - SHOW_CC='' - ECHO_CC='' - - fi -else - enableval=yes - - ECHO_LT='' - ECHO_LD='' - RULE_CC='' - SHOW_CC='' - ECHO_CC='' - -fi; -echo "$as_me:3759: result: $enableval" >&5 -echo "${ECHO_T}$enableval" >&6 - -GCC_VERSION=none -if test "$GCC" = yes ; then - echo "$as_me:3764: 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/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" - test -z "$GCC_VERSION" && GCC_VERSION=unknown - echo "$as_me:3768: result: $GCC_VERSION" >&5 -echo "${ECHO_T}$GCC_VERSION" >&6 -fi - -if ( test "$GCC" = yes || test "$GXX" = yes ) -then -echo "$as_me:3774: 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. -if test "${enable_warnings+set}" = set; then - enableval="$enable_warnings" - test "$enableval" != yes && enableval=no - if test "$enableval" != "no" ; then - with_warnings=yes - else - with_warnings=no - fi -else - enableval=no - with_warnings=no - -fi; -echo "$as_me:3791: result: $with_warnings" >&5 -echo "${ECHO_T}$with_warnings" >&6 -if test "$with_warnings" = "yes" -then - -if test "$GCC" = yes -then -cat > conftest.i <&5 -echo "$as_me: checking for $CC __attribute__ directives..." >&6;} -cat > conftest.$ac_ext <&5 - - case $cf_attribute in #(vi - printf) #(vi - cf_printf_attribute=yes - cat >conftest.h <conftest.h <conftest.h <&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3869: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:3871: result: ... $cf_attribute" >&5 -echo "${ECHO_T}... $cf_attribute" >&6 - cat conftest.h >>confdefs.h - case $cf_attribute in #(vi - printf) #(vi - if test "$cf_printf_attribute" = no ; then - cat >>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h <>confdefs.h -fi -rm -rf conftest* -fi - -INTEL_COMPILER=no - -if test "$GCC" = yes ; then - case $host_os in - linux*|gnu*) - echo "$as_me:3911: 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 3916 "configure" -#include "confdefs.h" - -int -main () -{ - -#ifdef __INTEL_COMPILER -#else -make an error -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:3933: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3936: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:3939: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:3942: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - INTEL_COMPILER=yes -cf_save_CFLAGS="$cf_save_CFLAGS -we147 -no-gcc" - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CFLAGS="$cf_save_CFLAGS" - echo "$as_me:3953: result: $INTEL_COMPILER" >&5 -echo "${ECHO_T}$INTEL_COMPILER" >&6 - ;; - esac -fi - -cat > conftest.$ac_ext <&5 -echo "$as_me: checking for $CC warning options..." >&6;} - cf_save_CFLAGS="$CFLAGS" - EXTRA_CFLAGS="-Wall" - for cf_opt in \ - wd1419 \ - wd1683 \ - wd1684 \ - wd193 \ - wd593 \ - wd279 \ - wd810 \ - wd869 \ - wd981 - do - CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:3993: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:3996: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:3998: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" - fi - done - CFLAGS="$cf_save_CFLAGS" - -elif test "$GCC" = yes -then - { echo "$as_me:4007: checking for $CC warning options..." >&5 -echo "$as_me: checking for $CC warning options..." >&6;} - cf_save_CFLAGS="$CFLAGS" - EXTRA_CFLAGS= - cf_warn_CONST="" - test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" - for cf_opt in W Wall \ - Wbad-function-cast \ - Wcast-align \ - Wcast-qual \ - Winline \ - Wmissing-declarations \ - Wmissing-prototypes \ - Wnested-externs \ - Wpointer-arith \ - Wshadow \ - Wstrict-prototypes \ - Wundef $cf_warn_CONST - do - CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" - if { (eval echo "$as_me:4027: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4030: \$? = $ac_status" >&5 - (exit $ac_status); }; then - test -n "$verbose" && echo "$as_me:4032: result: ... -$cf_opt" >&5 -echo "${ECHO_T}... -$cf_opt" >&6 - case $cf_opt in #(vi - Wcast-qual) #(vi - CPPFLAGS="$CPPFLAGS -DXTSTRINGDEFINES" - ;; - Winline) #(vi - case $GCC_VERSION in - [34].*) - test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 - -echo "${as_me:-configure}:4043: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 - - continue;; - esac - ;; - esac - EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" - fi - done - CFLAGS="$cf_save_CFLAGS" -fi -rm -rf conftest* - -fi -fi - -echo "$as_me:4059: 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. -if test "${with_dmalloc+set}" = set; then - withval="$with_dmalloc" - cat >>confdefs.h <<\EOF -#define USE_DMALLOC 1 -EOF - - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_dmalloc=yes -else - with_dmalloc= -fi; -echo "$as_me:4075: result: ${with_dmalloc:-no}" >&5 -echo "${ECHO_T}${with_dmalloc:-no}" >&6 - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in -g -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - ;; - esac - ;; -esac - -if test "$with_dmalloc" = yes ; then - echo "$as_me:4169: 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 4175 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:4179: \"$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:4185: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_dmalloc_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_dmalloc_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4204: 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:4208: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldmalloc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 4216 "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 dmalloc_debug (); -int -main () -{ -dmalloc_debug (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4235: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4238: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4241: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4244: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dmalloc_dmalloc_debug=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dmalloc_dmalloc_debug=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:4255: 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 <&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. -if test "${with_dbmalloc+set}" = set; then - withval="$with_dbmalloc" - cat >>confdefs.h <<\EOF -#define USE_DBMALLOC 1 -EOF - - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_dbmalloc=yes -else - with_dbmalloc= -fi; -echo "$as_me:4286: result: ${with_dbmalloc:-no}" >&5 -echo "${ECHO_T}${with_dbmalloc:-no}" >&6 - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in -g -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - ;; - esac - ;; -esac - -if test "$with_dbmalloc" = yes ; then - echo "$as_me:4380: 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 4386 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:4390: \"$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:4396: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_dbmalloc_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_dbmalloc_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4415: 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:4419: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldbmalloc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 4427 "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 debug_malloc (); -int -main () -{ -debug_malloc (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:4446: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:4449: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:4452: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4455: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dbmalloc_debug_malloc=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dbmalloc_debug_malloc=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:4466: 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 <&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. -if test "${with_valgrind+set}" = set; then - withval="$with_valgrind" - cat >>confdefs.h <<\EOF -#define USE_VALGRIND 1 -EOF - - : ${with_cflags:=-g} - : ${with_no_leaks:=yes} - with_valgrind=yes -else - with_valgrind= -fi; -echo "$as_me:4497: result: ${with_valgrind:-no}" >&5 -echo "${ECHO_T}${with_valgrind:-no}" >&6 - -case .$with_cflags in #(vi -.*-g*) - case .$CFLAGS in #(vi - .*-g*) #(vi - ;; - *) - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in -g -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - ;; - esac - ;; -esac - -echo "$as_me:4590: 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. -if test "${enable_leaks+set}" = set; then - enableval="$enable_leaks" - if test "x$enableval" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi -else - : ${with_no_leaks:=no} -fi; -echo "$as_me:4600: result: $with_no_leaks" >&5 -echo "${ECHO_T}$with_no_leaks" >&6 - -if test "$with_no_leaks" = yes ; then - cat >>confdefs.h <<\EOF -#define NO_LEAKS 1 -EOF - - cat >>confdefs.h <<\EOF -#define YY_NO_LEAKS 1 -EOF - -fi - -echo "$as_me:4614: checking for specific curses-directory" >&5 -echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6 - -# Check whether --with-curses-dir or --without-curses-dir was given. -if test "${with_curses_dir+set}" = set; then - withval="$with_curses_dir" - cf_cv_curses_dir=$withval -else - cf_cv_curses_dir=no -fi; -echo "$as_me:4624: result: $cf_cv_curses_dir" >&5 -echo "${ECHO_T}$cf_cv_curses_dir" >&6 - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$withval" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval withval="$withval" - case ".$withval" in #(vi - .NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - withval=`echo $withval | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:4655: error: expected a pathname, not \"$withval\"" >&5 -echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - - if test -d "$cf_cv_curses_dir" - then - -if test -n "$cf_cv_curses_dir/include" ; then - for cf_add_incdir in $cf_cv_curses_dir/include - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 4688 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4700: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4703: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4706: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4709: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:4726: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -if test -n "$cf_cv_curses_dir/lib" ; then - for cf_add_libdir in $cf_cv_curses_dir/lib - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:4760: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - fi -fi - -# Check whether --with-5lib or --without-5lib was given. -if test "${with_5lib+set}" = set; then - withval="$with_5lib" - LIBS="-L/usr/5lib $LIBS" - CPPFLAGS="$CPPFLAGS -I/usr/5include" -fi; - -# Check whether --with-ncursesw or --without-ncursesw was given. -if test "${with_ncursesw+set}" = set; then - withval="$with_ncursesw" - cf_cv_screen=ncursesw -else - -# Check whether --with-ncurses or --without-ncurses was given. -if test "${with_ncurses+set}" = set; then - withval="$with_ncurses" - cf_cv_screen=ncurses -else - -# Check whether --with-pdcurses or --without-pdcurses was given. -if test "${with_pdcurses+set}" = set; then - withval="$with_pdcurses" - cf_cv_screen=pdcurses -fi; -fi; -fi; - -case $cf_cv_screen in -curses) - -echo "$as_me:4801: checking for extra include directories" >&5 -echo $ECHO_N "checking for extra include directories... $ECHO_C" >&6 -if test "${cf_cv_curses_incdir+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_curses_incdir=no -case $host_os in #(vi -hpux10.*) #(vi - test -d /usr/include/curses_colr && \ - cf_cv_curses_incdir="-I/usr/include/curses_colr" - ;; -sunos3*|sunos4*) - test -d /usr/5lib && \ - test -d /usr/5include && \ - cf_cv_curses_incdir="-I/usr/5include" - ;; -esac - -fi -echo "$as_me:4821: result: $cf_cv_curses_incdir" >&5 -echo "${ECHO_T}$cf_cv_curses_incdir" >&6 -test "$cf_cv_curses_incdir" != no && CPPFLAGS="$CPPFLAGS $cf_cv_curses_incdir" - -echo "$as_me:4825: checking if we have identified curses headers" >&5 -echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 -if test "${cf_cv_ncurses_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ncurses_header=none -for cf_header in \ - curses.h \ - ncurses.h ncurses/curses.h ncurses/ncurses.h -do -cat >conftest.$ac_ext <<_ACEOF -#line 4837 "configure" -#include "confdefs.h" -#include <${cf_header}> -int -main () -{ -initscr(); tgoto("?", 0,0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4849: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4852: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4855: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4858: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_header=$cf_header; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:4869: result: $cf_cv_ncurses_header" >&5 -echo "${ECHO_T}$cf_cv_ncurses_header" >&6 - -if test "$cf_cv_ncurses_header" = none ; then - { { echo "$as_me:4873: error: No curses header-files found" >&5 -echo "$as_me: error: No curses header-files found" >&2;} - { (exit 1); exit 1; }; } -fi - -# cheat, to get the right #define's for HAVE_NCURSES_H, etc. - -for ac_header in $cf_cv_ncurses_header -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:4883: 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 4889 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:4893: \"$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:4899: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:4918: 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 <&5 -echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 -if test "${cf_cv_term_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -case ${cf_cv_ncurses_header} in #(vi -*/ncurses.h|*/ncursesw.h) #(vi - cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` - ;; -*) - cf_term_header=term.h - ;; -esac - -for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" -do -cat >conftest.$ac_ext <<_ACEOF -#line 4946 "configure" -#include "confdefs.h" -#include -#include <${cf_cv_ncurses_header:-curses.h}> -#include <$cf_test> - -int -main () -{ -int x = auto_left_margin - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:4961: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:4964: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:4967: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:4970: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_term_header="$cf_test" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_term_header=unknown - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - test "$cf_cv_term_header" != unknown && break -done - -fi -echo "$as_me:4986: result: $cf_cv_term_header" >&5 -echo "${ECHO_T}$cf_cv_term_header" >&6 - -# Set definitions to allow ifdef'ing to accommodate subdirectories - -case $cf_cv_term_header in # (vi -*term.h) - cat >>confdefs.h <<\EOF -#define HAVE_TERM_H 1 -EOF - - ;; -esac - -case $cf_cv_term_header in # (vi -ncurses/term.h) #(vi - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_TERM_H 1 -EOF - - ;; -ncursesw/term.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_TERM_H 1 -EOF - - ;; -esac - -echo "$as_me:5015: checking for ncurses version" >&5 -echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 -if test "${cf_cv_ncurses_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_cv_ncurses_version=no - cf_tempfile=out$$ - rm -f $cf_tempfile - if test "$cross_compiling" = yes; then - - # This will not work if the preprocessor splits the line after the - # Autoconf token. The 'unproto' program does that. - cat > conftest.$ac_ext < -#undef Autoconf -#ifdef NCURSES_VERSION -Autoconf NCURSES_VERSION -#else -#ifdef __NCURSES_H -Autoconf "old" -#endif -; -#endif -EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" - { (eval echo "$as_me:5041: \"$cf_try\"") >&5 - (eval $cf_try) 2>&5 - ac_status=$? - echo "$as_me:5044: \$? = $ac_status" >&5 - (exit $ac_status); } - if test -f conftest.out ; then - cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` - test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" - rm -f conftest.out - fi - -else - cat >conftest.$ac_ext <<_ACEOF -#line 5054 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include -int main() -{ - FILE *fp = fopen("$cf_tempfile", "w"); -#ifdef NCURSES_VERSION -# ifdef NCURSES_VERSION_PATCH - fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); -# else - fprintf(fp, "%s\n", NCURSES_VERSION); -# endif -#else -# ifdef __NCURSES_H - fprintf(fp, "old\n"); -# else - make an error -# endif -#endif - ${cf_cv_main_return:-return}(0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:5079: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5082: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:5084: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5087: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_ncurses_version=`cat $cf_tempfile` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - rm -f $cf_tempfile - -fi -echo "$as_me:5101: result: $cf_cv_ncurses_version" >&5 -echo "${ECHO_T}$cf_cv_ncurses_version" >&6 -test "$cf_cv_ncurses_version" = no || cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -echo "$as_me:5107: checking if we have identified curses libraries" >&5 -echo $ECHO_N "checking if we have identified curses libraries... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line 5110 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr(); tgoto("?", 0,0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5122: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5125: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5128: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5131: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -echo "$as_me:5140: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - -if test "$cf_result" = no ; then -case $host_os in #(vi -freebsd*) #(vi - echo "$as_me:5146: checking for tgoto in -lmytinfo" >&5 -echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 -if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmytinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5154 "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 tgoto (); -int -main () -{ -tgoto (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5173: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5176: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5179: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5182: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_mytinfo_tgoto=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_mytinfo_tgoto=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5193: result: $ac_cv_lib_mytinfo_tgoto" >&5 -echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 -if test $ac_cv_lib_mytinfo_tgoto = yes; then - LIBS="-lmytinfo $LIBS" -fi - - ;; -hpux10.*) #(vi - echo "$as_me:5201: checking for initscr in -lcur_colr" >&5 -echo $ECHO_N "checking for initscr in -lcur_colr... $ECHO_C" >&6 -if test "${ac_cv_lib_cur_colr_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lcur_colr $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5209 "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 initscr (); -int -main () -{ -initscr (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5228: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5231: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5234: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5237: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_cur_colr_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_cur_colr_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5248: result: $ac_cv_lib_cur_colr_initscr" >&5 -echo "${ECHO_T}$ac_cv_lib_cur_colr_initscr" >&6 -if test $ac_cv_lib_cur_colr_initscr = yes; then - - LIBS="-lcur_colr $LIBS" - ac_cv_func_initscr=yes - -else - - echo "$as_me:5257: checking for initscr in -lHcurses" >&5 -echo $ECHO_N "checking for initscr in -lHcurses... $ECHO_C" >&6 -if test "${ac_cv_lib_Hcurses_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lHcurses $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5265 "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 initscr (); -int -main () -{ -initscr (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5284: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5287: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5290: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5293: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_Hcurses_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_Hcurses_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5304: result: $ac_cv_lib_Hcurses_initscr" >&5 -echo "${ECHO_T}$ac_cv_lib_Hcurses_initscr" >&6 -if test $ac_cv_lib_Hcurses_initscr = yes; then - - # HP's header uses __HP_CURSES, but user claims _HP_CURSES. - LIBS="-lHcurses $LIBS" - CPPFLAGS="$CPPFLAGS -D__HP_CURSES -D_HP_CURSES" - ac_cv_func_initscr=yes - -fi - -fi - - ;; -linux*) - case `arch 2>/dev/null` in - x86_64) - if test -d /lib64 - then - -if test -n "/lib64" ; then - for cf_add_libdir in /lib64 - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:5343: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - else - -if test -n "/lib" ; then - for cf_add_libdir in /lib - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:5372: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - fi - ;; - *) - -if test -n "/lib" ; then - for cf_add_libdir in /lib - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:5403: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - ;; - esac - ;; -sunos3*|sunos4*) - if test -d /usr/5lib ; then - -if test -n "/usr/5lib" ; then - for cf_add_libdir in /usr/5lib - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:5436: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - LIBS="-lcurses -ltermcap $LIBS" - fi - ac_cv_func_initscr=yes - ;; -esac - -if test ".$ac_cv_func_initscr" != .yes ; then - cf_save_LIBS="$LIBS" - cf_term_lib="" - cf_curs_lib="" - - if test ".${cf_cv_ncurses_version:-no}" != .no - then - cf_check_list="ncurses curses cursesX" - else - cf_check_list="cursesX curses ncurses" - fi - - # Check for library containing tgoto. Do this before curses library - # because it may be needed to link the test-case for initscr. - echo "$as_me:5464: checking for tgoto" >&5 -echo $ECHO_N "checking for tgoto... $ECHO_C" >&6 -if test "${ac_cv_func_tgoto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 5470 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char tgoto (); below. */ -#include -/* 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 tgoto (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_tgoto) || defined (__stub___tgoto) -choke me -#else -f = tgoto; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5501: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5504: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5507: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5510: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_tgoto=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_tgoto=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:5520: result: $ac_cv_func_tgoto" >&5 -echo "${ECHO_T}$ac_cv_func_tgoto" >&6 -if test $ac_cv_func_tgoto = yes; then - cf_term_lib=predefined -else - - for cf_term_lib in $cf_check_list termcap termlib unknown - do - as_ac_Lib=`echo "ac_cv_lib_$cf_term_lib''_tgoto" | $as_tr_sh` -echo "$as_me:5529: checking for tgoto in -l$cf_term_lib" >&5 -echo $ECHO_N "checking for tgoto in -l$cf_term_lib... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Lib+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-l$cf_term_lib $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5537 "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 tgoto (); -int -main () -{ -tgoto (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5556: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5559: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5562: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5565: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Lib=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Lib=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5576: 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 - break -fi - - done - -fi - - # Check for library containing initscr - test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS" - for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown - do - as_ac_Lib=`echo "ac_cv_lib_$cf_curs_lib''_initscr" | $as_tr_sh` -echo "$as_me:5591: checking for initscr in -l$cf_curs_lib" >&5 -echo $ECHO_N "checking for initscr in -l$cf_curs_lib... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Lib+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-l$cf_curs_lib $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 5599 "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 initscr (); -int -main () -{ -initscr (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5618: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5621: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5624: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5627: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Lib=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Lib=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:5638: 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 - break -fi - - done - test $cf_curs_lib = unknown && { { echo "$as_me:5645: error: no curses library found" >&5 -echo "$as_me: error: no curses library found" >&2;} - { (exit 1); exit 1; }; } - - LIBS="-l$cf_curs_lib $cf_save_LIBS" - if test "$cf_term_lib" = unknown ; then - echo "$as_me:5651: checking if we can link with $cf_curs_lib library" >&5 -echo $ECHO_N "checking if we can link with $cf_curs_lib library... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line 5654 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5666: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5669: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5672: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5675: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - echo "$as_me:5684: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - test $cf_result = no && { { echo "$as_me:5686: error: Cannot link curses library" >&5 -echo "$as_me: error: Cannot link curses library" >&2;} - { (exit 1); exit 1; }; } - elif test "$cf_curs_lib" = "$cf_term_lib" ; then - : - elif test "$cf_term_lib" != predefined ; then - echo "$as_me:5692: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5 -echo $ECHO_N "checking if we need both $cf_curs_lib and $cf_term_lib libraries... $ECHO_C" >&6 - cat >conftest.$ac_ext <<_ACEOF -#line 5695 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr(); tgoto((char *)0, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5707: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5710: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5713: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5716: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 5725 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:5737: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:5740: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:5743: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5746: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=error -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - echo "$as_me:5758: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - fi -fi -fi - -echo "$as_me:5764: checking for NetBSD form.h" >&5 -echo $ECHO_N "checking for NetBSD form.h... $ECHO_C" >&6 -if test "${cf_cv_netbsd_form_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 5771 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include - -int -main () -{ - - FORM *form; - int y = current_field(form)->cursor_ypos; - int x = current_field(form)->cursor_xpos; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5790: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5793: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5796: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5799: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_netbsd_form_h=yes - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_netbsd_form_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:5811: result: $cf_cv_netbsd_form_h" >&5 -echo "${ECHO_T}$cf_cv_netbsd_form_h" >&6 - -test "$cf_cv_netbsd_form_h" = yes && cat >>confdefs.h <<\EOF -#define HAVE_NETBSD_FORM_H 1 -EOF - -echo "$as_me:5818: checking for NetBSD menu.h" >&5 -echo $ECHO_N "checking for NetBSD menu.h... $ECHO_C" >&6 -if test "${cf_cv_netbsd_menu_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 5825 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include - -int -main () -{ - - MENU *menu; - int y = menu->max_item_width; - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5843: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5846: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5849: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5852: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_netbsd_menu_h=yes - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_netbsd_menu_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:5864: result: $cf_cv_netbsd_menu_h" >&5 -echo "${ECHO_T}$cf_cv_netbsd_menu_h" >&6 - -test "$cf_cv_netbsd_menu_h" = yes && cat >>confdefs.h <<\EOF -#define HAVE_NETBSD_MENU_H 1 -EOF - - ;; -ncurses) - -cf_ncuconfig_root=ncurses - -echo "Looking for ${cf_ncuconfig_root}-config" -for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config -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:5881: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_NCURSES_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $NCURSES_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_dir/$ac_word" - echo "$as_me:5898: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -NCURSES_CONFIG=$ac_cv_path_NCURSES_CONFIG - -if test -n "$NCURSES_CONFIG"; then - echo "$as_me:5909: result: $NCURSES_CONFIG" >&5 -echo "${ECHO_T}$NCURSES_CONFIG" >&6 -else - echo "$as_me:5912: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$NCURSES_CONFIG" && break -done -test -n "$NCURSES_CONFIG" || NCURSES_CONFIG="none" - -if test "$NCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`" -LIBS="`$NCURSES_CONFIG --libs` $LIBS" - -# even with config script, some packages use no-override for curses.h - -echo "$as_me:5927: checking if we have identified curses headers" >&5 -echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 -if test "${cf_cv_ncurses_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ncurses_header=none -for cf_header in \ - ncurses/curses.h \ - ncurses/ncurses.h \ - curses.h \ - ncurses.h -do -cat >conftest.$ac_ext <<_ACEOF -#line 5941 "configure" -#include "confdefs.h" -#include <${cf_header}> -int -main () -{ -initscr(); tgoto("?", 0,0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:5953: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:5956: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:5959: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:5962: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_header=$cf_header; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:5973: result: $cf_cv_ncurses_header" >&5 -echo "${ECHO_T}$cf_cv_ncurses_header" >&6 - -if test "$cf_cv_ncurses_header" = none ; then - { { echo "$as_me:5977: error: No curses header-files found" >&5 -echo "$as_me: error: No curses header-files found" >&2;} - { (exit 1); exit 1; }; } -fi - -# cheat, to get the right #define's for HAVE_NCURSES_H, etc. - -for ac_header in $cf_cv_ncurses_header -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:5987: 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 5993 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:5997: \"$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:6003: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:6022: 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 <>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <conftest.$ac_ext <<_ACEOF -#line 6075 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6087: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6090: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6093: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6096: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:6113: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -} - -echo "$as_me:6130: checking for $cf_ncuhdr_root header in include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" - ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" - for cf_header in $cf_header_list - do - - cat >conftest.$ac_ext <<_ACEOF -#line 6142 "configure" -#include "confdefs.h" - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6166: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6169: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6172: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6175: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - test "$cf_cv_ncurses_h" != no && break - done - -fi -echo "$as_me:6190: result: $cf_cv_ncurses_h" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h" >&6 - -if test "$cf_cv_ncurses_h" != no ; then - cf_cv_ncurses_header=$cf_cv_ncurses_h -else - -echo "$as_me:6197: checking for $cf_ncuhdr_root include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h2+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - test -n "$verbose" && echo - -cf_search= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - -test "$cf_header_path" != "NONE" && \ -test -d "$cf_header_path" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" - test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" - test -d $cf_header_path/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" - test -d $cf_header_path/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - - cf_header_path_list="$cf_header_path_list $cf_search" - ;; - esac - done -fi - -# add the variations for the package we are looking for - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr" - test -d /usr/include && cf_search="$cf_search /usr/include" - test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root" - test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $prefix" - test -d $prefix/include && cf_search="$cf_search $prefix/include" - test -d $prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" - test -d $prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr/local" - test -d /usr/local/include && cf_search="$cf_search /usr/local/include" - test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root" - test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /opt" - test -d /opt/include && cf_search="$cf_search /opt/include" - test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root" - test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under $HOME" - test -d $HOME/include && cf_search="$cf_search $HOME/include" - test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root" - test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && cf_search="$cf_search $includedir" - test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && cf_search="$cf_search $oldincludedir" - test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" -} - -cf_search="$cf_search $cf_header_path_list" - - test -n "$verbose" && echo search path $cf_search - cf_save2_CPPFLAGS="$CPPFLAGS" - for cf_incdir in $cf_search - do - -if test -n "$cf_incdir" ; then - for cf_add_incdir in $cf_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 6337 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6349: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6352: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6355: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6358: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:6375: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - - for cf_header in \ - ncurses.h \ - curses.h - do - - cat >conftest.$ac_ext <<_ACEOF -#line 6396 "configure" -#include "confdefs.h" - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6420: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6423: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6426: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6429: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h2=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h2=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - if test "$cf_cv_ncurses_h2" != no ; then - cf_cv_ncurses_h2=$cf_incdir/$cf_header - test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 - break - fi - test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 - done - CPPFLAGS="$cf_save2_CPPFLAGS" - test "$cf_cv_ncurses_h2" != no && break - done - test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:6450: error: not found" >&5 -echo "$as_me: error: not found" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:6455: result: $cf_cv_ncurses_h2" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 - - cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'` - cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` - if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then - cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header - fi - -if test -n "$cf_1st_incdir" ; then - for cf_add_incdir in $cf_1st_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 6488 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6500: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6503: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6506: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6509: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:6526: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -fi - -# Set definitions to allow ifdef'ing for ncurses.h - -case $cf_cv_ncurses_header in # (vi -*ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_H 1 -EOF - - ;; -esac - -case $cf_cv_ncurses_header in # (vi -ncurses/curses.h|ncurses/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_NCURSES_H 1 -EOF - - ;; -ncursesw/curses.h|ncursesw/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_NCURSES_H 1 -EOF - - ;; -esac - -echo "$as_me:6569: checking for terminfo header" >&5 -echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 -if test "${cf_cv_term_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -case ${cf_cv_ncurses_header} in #(vi -*/ncurses.h|*/ncursesw.h) #(vi - cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` - ;; -*) - cf_term_header=term.h - ;; -esac - -for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" -do -cat >conftest.$ac_ext <<_ACEOF -#line 6587 "configure" -#include "confdefs.h" -#include -#include <${cf_cv_ncurses_header:-curses.h}> -#include <$cf_test> - -int -main () -{ -int x = auto_left_margin - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:6602: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:6605: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:6608: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6611: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_term_header="$cf_test" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_term_header=unknown - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - test "$cf_cv_term_header" != unknown && break -done - -fi -echo "$as_me:6627: result: $cf_cv_term_header" >&5 -echo "${ECHO_T}$cf_cv_term_header" >&6 - -# Set definitions to allow ifdef'ing to accommodate subdirectories - -case $cf_cv_term_header in # (vi -*term.h) - cat >>confdefs.h <<\EOF -#define HAVE_TERM_H 1 -EOF - - ;; -esac - -case $cf_cv_term_header in # (vi -ncurses/term.h) #(vi - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_TERM_H 1 -EOF - - ;; -ncursesw/term.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_TERM_H 1 -EOF - - ;; -esac - -# some applications need this, but should check for NCURSES_VERSION -cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -echo "$as_me:6661: checking for ncurses version" >&5 -echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 -if test "${cf_cv_ncurses_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_cv_ncurses_version=no - cf_tempfile=out$$ - rm -f $cf_tempfile - if test "$cross_compiling" = yes; then - - # This will not work if the preprocessor splits the line after the - # Autoconf token. The 'unproto' program does that. - cat > conftest.$ac_ext < -#undef Autoconf -#ifdef NCURSES_VERSION -Autoconf NCURSES_VERSION -#else -#ifdef __NCURSES_H -Autoconf "old" -#endif -; -#endif -EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" - { (eval echo "$as_me:6687: \"$cf_try\"") >&5 - (eval $cf_try) 2>&5 - ac_status=$? - echo "$as_me:6690: \$? = $ac_status" >&5 - (exit $ac_status); } - if test -f conftest.out ; then - cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` - test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" - rm -f conftest.out - fi - -else - cat >conftest.$ac_ext <<_ACEOF -#line 6700 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include -int main() -{ - FILE *fp = fopen("$cf_tempfile", "w"); -#ifdef NCURSES_VERSION -# ifdef NCURSES_VERSION_PATCH - fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); -# else - fprintf(fp, "%s\n", NCURSES_VERSION); -# endif -#else -# ifdef __NCURSES_H - fprintf(fp, "old\n"); -# else - make an error -# endif -#endif - ${cf_cv_main_return:-return}(0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:6725: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6728: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:6730: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6733: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_ncurses_version=`cat $cf_tempfile` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - rm -f $cf_tempfile - -fi -echo "$as_me:6747: result: $cf_cv_ncurses_version" >&5 -echo "${ECHO_T}$cf_cv_ncurses_version" >&6 -test "$cf_cv_ncurses_version" = no || cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_root=ncurses - # This works, except for the special case where we find gpm, but - # ncurses is in a nonstandard location via $LIBS, and we really want - # to link gpm. -cf_ncurses_LIBS="" -cf_ncurses_SAVE="$LIBS" -echo "$as_me:6759: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 6767 "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 Gpm_Open (); -int -main () -{ -Gpm_Open (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6786: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6789: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6792: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6795: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_Gpm_Open=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_Gpm_Open=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:6806: 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 - echo "$as_me:6809: checking for initscr in -lgpm" >&5 -echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 -if test "${ac_cv_lib_gpm_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 6817 "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 initscr (); -int -main () -{ -initscr (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6836: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6839: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6842: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6845: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:6856: result: $ac_cv_lib_gpm_initscr" >&5 -echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 -if test $ac_cv_lib_gpm_initscr = yes; then - LIBS="$cf_ncurses_SAVE" -else - cf_ncurses_LIBS="-lgpm" -fi - -fi - -case $host_os in #(vi -freebsd*) - # This is only necessary if you are linking against an obsolete - # version of ncurses (but it should do no harm, since it's static). - if test "$cf_nculib_root" = ncurses ; then - echo "$as_me:6871: checking for tgoto in -lmytinfo" >&5 -echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 -if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmytinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 6879 "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 tgoto (); -int -main () -{ -tgoto (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6898: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6901: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6904: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6907: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_mytinfo_tgoto=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_mytinfo_tgoto=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:6918: result: $ac_cv_lib_mytinfo_tgoto" >&5 -echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 -if test $ac_cv_lib_mytinfo_tgoto = yes; then - cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" -fi - - fi - ;; -esac - -LIBS="$cf_ncurses_LIBS $LIBS" - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - LIBS="-l$cf_nculib_root $LIBS" -else - - eval 'cf_cv_have_lib_'$cf_nculib_root'=no' - cf_libdir="" - echo "$as_me:6937: checking for initscr" >&5 -echo $ECHO_N "checking for initscr... $ECHO_C" >&6 -if test "${ac_cv_func_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 6943 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char initscr (); below. */ -#include -/* 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 initscr (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_initscr) || defined (__stub___initscr) -choke me -#else -f = initscr; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:6974: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:6977: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:6980: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:6983: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:6993: result: $ac_cv_func_initscr" >&5 -echo "${ECHO_T}$ac_cv_func_initscr" >&6 -if test $ac_cv_func_initscr = yes; then - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' -else - - cf_save_LIBS="$LIBS" - echo "$as_me:7000: checking for initscr in -l$cf_nculib_root" >&5 -echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 - LIBS="-l$cf_nculib_root $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 7004 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7016: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7019: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7022: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7025: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:7027: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:7034: result: no" >&5 -echo "${ECHO_T}no" >&6 - -cf_search= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - -test "$cf_library_path" != "NONE" && \ -test -d "$cf_library_path" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" - test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" - test -d $cf_library_path/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" - test -d $cf_library_path/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" -} - - cf_library_path_list="$cf_library_path_list $cf_search" - ;; - esac - done -fi - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr" - test -d /usr/lib && cf_search="$cf_search /usr/lib" - test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root" - test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $prefix" - test -d $prefix/lib && cf_search="$cf_search $prefix/lib" - test -d $prefix/lib/$cf_nculib_root && cf_search="$cf_search $prefix/lib/$cf_nculib_root" - test -d $prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib && cf_search="$cf_search $prefix/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr/local" - test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib" - test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root" - test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /opt" - test -d /opt/lib && cf_search="$cf_search /opt/lib" - test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root" - test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under $HOME" - test -d $HOME/lib && cf_search="$cf_search $HOME/lib" - test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root" - test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root" -} - -cf_search="$cf_library_path_list $cf_search" - - for cf_libdir in $cf_search - do - echo "$as_me:7124: checking for -l$cf_nculib_root in $cf_libdir" >&5 -echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 - LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 7128 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7140: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7143: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7146: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7149: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:7151: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:7158: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_save_LIBS" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi - -eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root - -if test $cf_found_library = no ; then - { { echo "$as_me:7173: error: Cannot link $cf_nculib_root library" >&5 -echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - -if test -n "$cf_ncurses_LIBS" ; then - echo "$as_me:7181: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 -echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 - cf_ncurses_SAVE="$LIBS" - for p in $cf_ncurses_LIBS ; do - q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` - if test "$q" != "$LIBS" ; then - LIBS="$q" - fi - done - cat >conftest.$ac_ext <<_ACEOF -#line 7191 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7203: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7206: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7209: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7212: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:7214: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:7219: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_ncurses_SAVE" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <&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 -else - - cf_save_LIBS="$LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 7246 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7259: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7262: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7265: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7268: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_utf8_lib=yes -else - echo "$as_me: failed program was:" >&5 -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. -cf_cv_header_path_utf8= -cf_cv_library_path_utf8= - -echo "${as_me:-configure}:7280: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 - -cf_save_LIBS="$LIBS" - -cat >conftest.$ac_ext <<_ACEOF -#line 7285 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7298: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7301: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7304: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7307: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_find_linkage_utf8=yes - cf_cv_header_path_utf8=/usr/include - cf_cv_library_path_utf8=/usr/lib - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -LIBS="-lutf8 $cf_save_LIBS" - -cat >conftest.$ac_ext <<_ACEOF -#line 7321 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7334: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7337: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7340: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7343: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_find_linkage_utf8=yes - cf_cv_header_path_utf8=/usr/include - cf_cv_library_path_utf8=/usr/lib - cf_cv_library_file_utf8="-lutf8" - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_find_linkage_utf8=no - LIBS="$cf_save_LIBS" - - test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 - -echo "${as_me:-configure}:7360: testing find linkage for utf8 library ..." 1>&5 - -echo "${as_me:-configure}:7362: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 - - cf_save_CPPFLAGS="$CPPFLAGS" - cf_test_CPPFLAGS="$CPPFLAGS" - -cf_search= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - -test "$cf_header_path" != "NONE" && \ -test -d "$cf_header_path" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" - test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" - test -d $cf_header_path/include/utf8 && cf_search="$cf_search $cf_header_path/include/utf8" - test -d $cf_header_path/include/utf8/include && cf_search="$cf_search $cf_header_path/include/utf8/include" - test -d $cf_header_path/utf8/include && cf_search="$cf_search $cf_header_path/utf8/include" - test -d $cf_header_path/utf8/include/utf8 && cf_search="$cf_search $cf_header_path/utf8/include/utf8" -} - - cf_header_path_list="$cf_header_path_list $cf_search" - ;; - esac - done -fi - -# add the variations for the package we are looking for - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr" - test -d /usr/include && cf_search="$cf_search /usr/include" - test -d /usr/include/utf8 && cf_search="$cf_search /usr/include/utf8" - test -d /usr/include/utf8/include && cf_search="$cf_search /usr/include/utf8/include" - test -d /usr/utf8/include && cf_search="$cf_search /usr/utf8/include" - test -d /usr/utf8/include/utf8 && cf_search="$cf_search /usr/utf8/include/utf8" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $prefix" - test -d $prefix/include && cf_search="$cf_search $prefix/include" - test -d $prefix/include/utf8 && cf_search="$cf_search $prefix/include/utf8" - test -d $prefix/include/utf8/include && cf_search="$cf_search $prefix/include/utf8/include" - test -d $prefix/utf8/include && cf_search="$cf_search $prefix/utf8/include" - test -d $prefix/utf8/include/utf8 && cf_search="$cf_search $prefix/utf8/include/utf8" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr/local" - test -d /usr/local/include && cf_search="$cf_search /usr/local/include" - test -d /usr/local/include/utf8 && cf_search="$cf_search /usr/local/include/utf8" - test -d /usr/local/include/utf8/include && cf_search="$cf_search /usr/local/include/utf8/include" - test -d /usr/local/utf8/include && cf_search="$cf_search /usr/local/utf8/include" - test -d /usr/local/utf8/include/utf8 && cf_search="$cf_search /usr/local/utf8/include/utf8" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /opt" - test -d /opt/include && cf_search="$cf_search /opt/include" - test -d /opt/include/utf8 && cf_search="$cf_search /opt/include/utf8" - test -d /opt/include/utf8/include && cf_search="$cf_search /opt/include/utf8/include" - test -d /opt/utf8/include && cf_search="$cf_search /opt/utf8/include" - test -d /opt/utf8/include/utf8 && cf_search="$cf_search /opt/utf8/include/utf8" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under $HOME" - test -d $HOME/include && cf_search="$cf_search $HOME/include" - test -d $HOME/include/utf8 && cf_search="$cf_search $HOME/include/utf8" - test -d $HOME/include/utf8/include && cf_search="$cf_search $HOME/include/utf8/include" - test -d $HOME/utf8/include && cf_search="$cf_search $HOME/utf8/include" - test -d $HOME/utf8/include/utf8 && cf_search="$cf_search $HOME/utf8/include/utf8" -} - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && cf_search="$cf_search $includedir" - test -d $includedir/utf8 && cf_search="$cf_search $includedir/utf8" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && cf_search="$cf_search $oldincludedir" - test -d $oldincludedir/utf8 && cf_search="$cf_search $oldincludedir/utf8" -} - -cf_search="$cf_search $cf_header_path_list" - - for cf_cv_header_path_utf8 in $cf_search - do - 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}:7475: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 - - CPPFLAGS="$cf_save_CPPFLAGS -I$cf_cv_header_path_utf8" - cat >conftest.$ac_ext <<_ACEOF -#line 7479 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7492: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7495: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7498: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7501: \$? = $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}:7506: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 - - cf_cv_find_linkage_utf8=maybe - cf_test_CPPFLAGS="$CPPFLAGS" - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - CPPFLAGS="$cf_save_CPPFLAGS" - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - fi - done - - if test "$cf_cv_find_linkage_utf8" = maybe ; then - -echo "${as_me:-configure}:7524: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 - - cf_save_LIBS="$LIBS" - cf_save_LDFLAGS="$LDFLAGS" - - if test "$cf_cv_find_linkage_utf8" != yes ; then - -cf_search= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - -test "$cf_library_path" != "NONE" && \ -test -d "$cf_library_path" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" - test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" - test -d $cf_library_path/lib/utf8 && cf_search="$cf_search $cf_library_path/lib/utf8" - test -d $cf_library_path/lib/utf8/lib && cf_search="$cf_search $cf_library_path/lib/utf8/lib" - test -d $cf_library_path/utf8/lib && cf_search="$cf_search $cf_library_path/utf8/lib" - test -d $cf_library_path/utf8/lib/utf8 && cf_search="$cf_search $cf_library_path/utf8/lib/utf8" -} - - cf_library_path_list="$cf_library_path_list $cf_search" - ;; - esac - done -fi - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr" - test -d /usr/lib && cf_search="$cf_search /usr/lib" - test -d /usr/lib/utf8 && cf_search="$cf_search /usr/lib/utf8" - test -d /usr/lib/utf8/lib && cf_search="$cf_search /usr/lib/utf8/lib" - test -d /usr/utf8/lib && cf_search="$cf_search /usr/utf8/lib" - test -d /usr/utf8/lib/utf8 && cf_search="$cf_search /usr/utf8/lib/utf8" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $prefix" - test -d $prefix/lib && cf_search="$cf_search $prefix/lib" - test -d $prefix/lib/utf8 && cf_search="$cf_search $prefix/lib/utf8" - test -d $prefix/lib/utf8/lib && cf_search="$cf_search $prefix/lib/utf8/lib" - test -d $prefix/utf8/lib && cf_search="$cf_search $prefix/utf8/lib" - test -d $prefix/utf8/lib/utf8 && cf_search="$cf_search $prefix/utf8/lib/utf8" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr/local" - test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib" - test -d /usr/local/lib/utf8 && cf_search="$cf_search /usr/local/lib/utf8" - test -d /usr/local/lib/utf8/lib && cf_search="$cf_search /usr/local/lib/utf8/lib" - test -d /usr/local/utf8/lib && cf_search="$cf_search /usr/local/utf8/lib" - test -d /usr/local/utf8/lib/utf8 && cf_search="$cf_search /usr/local/utf8/lib/utf8" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /opt" - test -d /opt/lib && cf_search="$cf_search /opt/lib" - test -d /opt/lib/utf8 && cf_search="$cf_search /opt/lib/utf8" - test -d /opt/lib/utf8/lib && cf_search="$cf_search /opt/lib/utf8/lib" - test -d /opt/utf8/lib && cf_search="$cf_search /opt/utf8/lib" - test -d /opt/utf8/lib/utf8 && cf_search="$cf_search /opt/utf8/lib/utf8" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under $HOME" - test -d $HOME/lib && cf_search="$cf_search $HOME/lib" - test -d $HOME/lib/utf8 && cf_search="$cf_search $HOME/lib/utf8" - test -d $HOME/lib/utf8/lib && cf_search="$cf_search $HOME/lib/utf8/lib" - test -d $HOME/utf8/lib && cf_search="$cf_search $HOME/utf8/lib" - test -d $HOME/utf8/lib/utf8 && cf_search="$cf_search $HOME/utf8/lib/utf8" -} - -cf_search="$cf_library_path_list $cf_search" - - for cf_cv_library_path_utf8 in $cf_search - do - 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}:7621: 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 7627 "configure" -#include "confdefs.h" - -#include -int -main () -{ -putwc(0,0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:7640: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:7643: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:7646: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7649: \$? = $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}:7654: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 - - cf_cv_find_linkage_utf8=yes - cf_cv_library_file_utf8="-lutf8" - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - CPPFLAGS="$cf_save_CPPFLAGS" - LIBS="$cf_save_LIBS" - LDFLAGS="$cf_save_LDFLAGS" - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - fi - done - CPPFLAGS="$cf_save_CPPFLAGS" - LDFLAGS="$cf_save_LDFLAGS" - fi - - else - cf_cv_find_linkage_utf8=no - fi - -fi -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_LIBS" - -if test "$cf_cv_find_linkage_utf8" = yes ; then -cf_cv_utf8_lib=add-on -else -cf_cv_utf8_lib=no -fi - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:7696: 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 -# ncurses/ncursesw: -if test "$cf_cv_utf8_lib" = "add-on" ; then - cat >>confdefs.h <<\EOF -#define HAVE_LIBUTF8_H 1 -EOF - -if test -n "$cf_cv_header_path_utf8" ; then - for cf_add_incdir in $cf_cv_header_path_utf8 - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 7730 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7742: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7745: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7748: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7751: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:7768: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -if test -n "$cf_cv_library_path_utf8" ; then - for cf_add_libdir in $cf_cv_library_path_utf8 - do - if test $cf_add_libdir = /usr/lib ; then - : - elif test -d $cf_add_libdir - then - cf_have_libdir=no - if test -n "$LDFLAGS$LIBS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_libdir in $LDFLAGS $LIBS ; do - if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then - cf_have_libdir=yes; break - fi - done - fi - if test "$cf_have_libdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 - -echo "${as_me:-configure}:7802: testing adding $cf_add_libdir to library-path ..." 1>&5 - - LDFLAGS="-L$cf_add_libdir $LDFLAGS" - fi - fi - done -fi - - LIBS="$cf_cv_library_file_utf8 $LIBS" -fi - -cf_ncuconfig_root=ncursesw - -echo "Looking for ${cf_ncuconfig_root}-config" -for ac_prog in ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config -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:7820: checking for $ac_word" >&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_NCURSES_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $NCURSES_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_dir/$ac_word" - echo "$as_me:7837: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -NCURSES_CONFIG=$ac_cv_path_NCURSES_CONFIG - -if test -n "$NCURSES_CONFIG"; then - echo "$as_me:7848: result: $NCURSES_CONFIG" >&5 -echo "${ECHO_T}$NCURSES_CONFIG" >&6 -else - echo "$as_me:7851: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$NCURSES_CONFIG" && break -done -test -n "$NCURSES_CONFIG" || NCURSES_CONFIG="none" - -if test "$NCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$NCURSES_CONFIG --cflags`" -LIBS="`$NCURSES_CONFIG --libs` $LIBS" - -# even with config script, some packages use no-override for curses.h - -echo "$as_me:7866: checking if we have identified curses headers" >&5 -echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 -if test "${cf_cv_ncurses_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_ncurses_header=none -for cf_header in \ - ncursesw/curses.h \ - ncursesw/ncurses.h \ - curses.h \ - ncurses.h -do -cat >conftest.$ac_ext <<_ACEOF -#line 7880 "configure" -#include "confdefs.h" -#include <${cf_header}> -int -main () -{ -initscr(); tgoto("?", 0,0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:7892: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:7895: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:7898: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:7901: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_header=$cf_header; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -fi -echo "$as_me:7912: result: $cf_cv_ncurses_header" >&5 -echo "${ECHO_T}$cf_cv_ncurses_header" >&6 - -if test "$cf_cv_ncurses_header" = none ; then - { { echo "$as_me:7916: error: No curses header-files found" >&5 -echo "$as_me: error: No curses header-files found" >&2;} - { (exit 1); exit 1; }; } -fi - -# cheat, to get the right #define's for HAVE_NCURSES_H, etc. - -for ac_header in $cf_cv_ncurses_header -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:7926: 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 7932 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:7936: \"$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:7942: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:7961: 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 <>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <conftest.$ac_ext <<_ACEOF -#line 8014 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8026: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8029: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8032: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8035: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:8052: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -} - -echo "$as_me:8069: checking for $cf_ncuhdr_root header in include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" - ( test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw ) && cf_header_list="$cf_header_list curses.h ncurses.h" - for cf_header in $cf_header_list - do - - cat >conftest.$ac_ext <<_ACEOF -#line 8081 "configure" -#include "confdefs.h" - -#define _XOPEN_SOURCE_EXTENDED -#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ -#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -#ifndef WACS_BSSB - make an error -#endif - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8113: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8116: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8119: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8122: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - test "$cf_cv_ncurses_h" != no && break - done - -fi -echo "$as_me:8137: result: $cf_cv_ncurses_h" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h" >&6 - -if test "$cf_cv_ncurses_h" != no ; then - cf_cv_ncurses_header=$cf_cv_ncurses_h -else - -echo "$as_me:8144: checking for $cf_ncuhdr_root include-path" >&5 -echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 -if test "${cf_cv_ncurses_h2+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - test -n "$verbose" && echo - -cf_search= - -# collect the current set of include-directories from compiler flags -cf_header_path_list="" -if test -n "${CFLAGS}${CPPFLAGS}" ; then - for cf_header_path in $CPPFLAGS $CFLAGS - do - case $cf_header_path in #(vi - -I*) - cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` - -test "$cf_header_path" != "NONE" && \ -test -d "$cf_header_path" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" - test -d $cf_header_path/include && cf_search="$cf_search $cf_header_path/include" - test -d $cf_header_path/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" - test -d $cf_header_path/include/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" - test -d $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - - cf_header_path_list="$cf_header_path_list $cf_search" - ;; - esac - done -fi - -# add the variations for the package we are looking for - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr" - test -d /usr/include && cf_search="$cf_search /usr/include" - test -d /usr/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/include/$cf_ncuhdr_root" - test -d /usr/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/include/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/$cf_ncuhdr_root/include" - test -d /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for include-directories under $prefix" - test -d $prefix/include && cf_search="$cf_search $prefix/include" - test -d $prefix/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" - test -d $prefix/include/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" - test -d $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /usr/local" - test -d /usr/local/include && cf_search="$cf_search /usr/local/include" - test -d /usr/local/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root" - test -d /usr/local/include/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/include/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include" - test -d /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /usr/local/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under /opt" - test -d /opt/include && cf_search="$cf_search /opt/include" - test -d /opt/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/include/$cf_ncuhdr_root" - test -d /opt/include/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/include/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include && cf_search="$cf_search /opt/$cf_ncuhdr_root/include" - test -d /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search /opt/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for include-directories under $HOME" - test -d $HOME/include && cf_search="$cf_search $HOME/include" - test -d $HOME/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root" - test -d $HOME/include/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/include/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include" - test -d $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root && cf_search="$cf_search $HOME/$cf_ncuhdr_root/include/$cf_ncuhdr_root" -} - -test "$includedir" != NONE && \ -test "$includedir" != "/usr/include" && \ -test -d "$includedir" && { - test -d $includedir && cf_search="$cf_search $includedir" - test -d $includedir/$cf_ncuhdr_root && cf_search="$cf_search $includedir/$cf_ncuhdr_root" -} - -test "$oldincludedir" != NONE && \ -test "$oldincludedir" != "/usr/include" && \ -test -d "$oldincludedir" && { - test -d $oldincludedir && cf_search="$cf_search $oldincludedir" - test -d $oldincludedir/$cf_ncuhdr_root && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" -} - -cf_search="$cf_search $cf_header_path_list" - - test -n "$verbose" && echo search path $cf_search - cf_save2_CPPFLAGS="$CPPFLAGS" - for cf_incdir in $cf_search - do - -if test -n "$cf_incdir" ; then - for cf_add_incdir in $cf_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 8284 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8296: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8299: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8302: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8305: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:8322: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - - for cf_header in \ - ncurses.h \ - curses.h - do - - cat >conftest.$ac_ext <<_ACEOF -#line 8343 "configure" -#include "confdefs.h" - -#include <$cf_header> -int -main () -{ - -#ifdef NCURSES_VERSION - -printf("%s\n", NCURSES_VERSION); -#else -#ifdef __NCURSES_H -printf("old\n"); -#else - make an error -#endif -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8367: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8370: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8373: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8376: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_h2=$cf_header - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_h2=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - - if test "$cf_cv_ncurses_h2" != no ; then - cf_cv_ncurses_h2=$cf_incdir/$cf_header - test -n "$verbose" && echo $ac_n " ... found $ac_c" 1>&6 - break - fi - test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 - done - CPPFLAGS="$cf_save2_CPPFLAGS" - test "$cf_cv_ncurses_h2" != no && break - done - test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:8397: error: not found" >&5 -echo "$as_me: error: not found" >&2;} - { (exit 1); exit 1; }; } - -fi -echo "$as_me:8402: result: $cf_cv_ncurses_h2" >&5 -echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 - - cf_1st_incdir=`echo $cf_cv_ncurses_h2 | sed -e 's%/[^/]*$%%'` - cf_cv_ncurses_header=`basename $cf_cv_ncurses_h2` - if test `basename $cf_1st_incdir` = $cf_ncuhdr_root ; then - cf_cv_ncurses_header=$cf_ncuhdr_root/$cf_cv_ncurses_header - fi - -if test -n "$cf_1st_incdir" ; then - for cf_add_incdir in $cf_1st_incdir - do - while test $cf_add_incdir != /usr/include - do - if test -d $cf_add_incdir - then - cf_have_incdir=no - if test -n "$CFLAGS$CPPFLAGS" ; then - # a loop is needed to ensure we can add subdirs of existing dirs - for cf_test_incdir in $CFLAGS $CPPFLAGS ; do - if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then - cf_have_incdir=yes; break - fi - done - fi - - if test "$cf_have_incdir" = no ; then - if test "$cf_add_incdir" = /usr/local/include ; then - if test "$GCC" = yes - then - cf_save_CPPFLAGS=$CPPFLAGS - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - cat >conftest.$ac_ext <<_ACEOF -#line 8435 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello") - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8447: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8450: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8453: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8456: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_have_incdir=yes -fi -rm -f conftest.$ac_objext conftest.$ac_ext - CPPFLAGS=$cf_save_CPPFLAGS - fi - fi - fi - - if test "$cf_have_incdir" = no ; then - test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 - -echo "${as_me:-configure}:8473: testing adding $cf_add_incdir to include-path ..." 1>&5 - - CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" - - cf_top_incdir=`echo $cf_add_incdir | sed -e 's%/include/.*$%/include%'` - test "$cf_top_incdir" = "$cf_add_incdir" && break - cf_add_incdir="$cf_top_incdir" - else - break - fi - fi - done - done -fi - -fi - -# Set definitions to allow ifdef'ing for ncurses.h - -case $cf_cv_ncurses_header in # (vi -*ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_H 1 -EOF - - ;; -esac - -case $cf_cv_ncurses_header in # (vi -ncurses/curses.h|ncurses/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_NCURSES_H 1 -EOF - - ;; -ncursesw/curses.h|ncursesw/ncurses.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_NCURSES_H 1 -EOF - - ;; -esac - -echo "$as_me:8516: checking for terminfo header" >&5 -echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 -if test "${cf_cv_term_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -case ${cf_cv_ncurses_header} in #(vi -*/ncurses.h|*/ncursesw.h) #(vi - cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` - ;; -*) - cf_term_header=term.h - ;; -esac - -for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" -do -cat >conftest.$ac_ext <<_ACEOF -#line 8534 "configure" -#include "confdefs.h" -#include -#include <${cf_cv_ncurses_header:-curses.h}> -#include <$cf_test> - -int -main () -{ -int x = auto_left_margin - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:8549: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:8552: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:8555: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8558: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_term_header="$cf_test" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - - cf_cv_term_header=unknown - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - test "$cf_cv_term_header" != unknown && break -done - -fi -echo "$as_me:8574: result: $cf_cv_term_header" >&5 -echo "${ECHO_T}$cf_cv_term_header" >&6 - -# Set definitions to allow ifdef'ing to accommodate subdirectories - -case $cf_cv_term_header in # (vi -*term.h) - cat >>confdefs.h <<\EOF -#define HAVE_TERM_H 1 -EOF - - ;; -esac - -case $cf_cv_term_header in # (vi -ncurses/term.h) #(vi - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_TERM_H 1 -EOF - - ;; -ncursesw/term.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_TERM_H 1 -EOF - - ;; -esac - -# some applications need this, but should check for NCURSES_VERSION -cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -echo "$as_me:8608: checking for ncurses version" >&5 -echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 -if test "${cf_cv_ncurses_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_cv_ncurses_version=no - cf_tempfile=out$$ - rm -f $cf_tempfile - if test "$cross_compiling" = yes; then - - # This will not work if the preprocessor splits the line after the - # Autoconf token. The 'unproto' program does that. - cat > conftest.$ac_ext < -#undef Autoconf -#ifdef NCURSES_VERSION -Autoconf NCURSES_VERSION -#else -#ifdef __NCURSES_H -Autoconf "old" -#endif -; -#endif -EOF - cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" - { (eval echo "$as_me:8634: \"$cf_try\"") >&5 - (eval $cf_try) 2>&5 - ac_status=$? - echo "$as_me:8637: \$? = $ac_status" >&5 - (exit $ac_status); } - if test -f conftest.out ; then - cf_out=`cat conftest.out | sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%'` - test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" - rm -f conftest.out - fi - -else - cat >conftest.$ac_ext <<_ACEOF -#line 8647 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include -int main() -{ - FILE *fp = fopen("$cf_tempfile", "w"); -#ifdef NCURSES_VERSION -# ifdef NCURSES_VERSION_PATCH - fprintf(fp, "%s.%d\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); -# else - fprintf(fp, "%s\n", NCURSES_VERSION); -# endif -#else -# ifdef __NCURSES_H - fprintf(fp, "old\n"); -# else - make an error -# endif -#endif - ${cf_cv_main_return:-return}(0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:8672: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8675: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:8677: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8680: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - - cf_cv_ncurses_version=`cat $cf_tempfile` -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - rm -f $cf_tempfile - -fi -echo "$as_me:8694: result: $cf_cv_ncurses_version" >&5 -echo "${ECHO_T}$cf_cv_ncurses_version" >&6 -test "$cf_cv_ncurses_version" = no || cat >>confdefs.h <<\EOF -#define NCURSES 1 -EOF - -cf_nculib_root=ncursesw - # This works, except for the special case where we find gpm, but - # ncurses is in a nonstandard location via $LIBS, and we really want - # to link gpm. -cf_ncurses_LIBS="" -cf_ncurses_SAVE="$LIBS" -echo "$as_me:8706: 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 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 8714 "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 Gpm_Open (); -int -main () -{ -Gpm_Open (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8733: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8736: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8739: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8742: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_Gpm_Open=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_Gpm_Open=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:8753: 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 - echo "$as_me:8756: checking for initscr in -lgpm" >&5 -echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 -if test "${ac_cv_lib_gpm_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lgpm $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 8764 "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 initscr (); -int -main () -{ -initscr (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8783: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8786: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8789: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8792: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_gpm_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_gpm_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:8803: result: $ac_cv_lib_gpm_initscr" >&5 -echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 -if test $ac_cv_lib_gpm_initscr = yes; then - LIBS="$cf_ncurses_SAVE" -else - cf_ncurses_LIBS="-lgpm" -fi - -fi - -case $host_os in #(vi -freebsd*) - # This is only necessary if you are linking against an obsolete - # version of ncurses (but it should do no harm, since it's static). - if test "$cf_nculib_root" = ncurses ; then - echo "$as_me:8818: checking for tgoto in -lmytinfo" >&5 -echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 -if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmytinfo $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 8826 "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 tgoto (); -int -main () -{ -tgoto (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8845: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8848: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8851: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8854: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_mytinfo_tgoto=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_mytinfo_tgoto=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:8865: result: $ac_cv_lib_mytinfo_tgoto" >&5 -echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 -if test $ac_cv_lib_mytinfo_tgoto = yes; then - cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" -fi - - fi - ;; -esac - -LIBS="$cf_ncurses_LIBS $LIBS" - -if ( test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" ) -then - LIBS="-l$cf_nculib_root $LIBS" -else - - eval 'cf_cv_have_lib_'$cf_nculib_root'=no' - cf_libdir="" - echo "$as_me:8884: checking for initscr" >&5 -echo $ECHO_N "checking for initscr... $ECHO_C" >&6 -if test "${ac_cv_func_initscr+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 8890 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char initscr (); below. */ -#include -/* 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 initscr (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_initscr) || defined (__stub___initscr) -choke me -#else -f = initscr; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8921: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8924: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8927: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8930: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_initscr=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_initscr=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:8940: result: $ac_cv_func_initscr" >&5 -echo "${ECHO_T}$ac_cv_func_initscr" >&6 -if test $ac_cv_func_initscr = yes; then - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' -else - - cf_save_LIBS="$LIBS" - echo "$as_me:8947: checking for initscr in -l$cf_nculib_root" >&5 -echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 - LIBS="-l$cf_nculib_root $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 8951 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:8963: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:8966: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:8969: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:8972: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:8974: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:8981: result: no" >&5 -echo "${ECHO_T}no" >&6 - -cf_search= -cf_library_path_list="" -if test -n "${LDFLAGS}${LIBS}" ; then - for cf_library_path in $LDFLAGS $LIBS - do - case $cf_library_path in #(vi - -L*) - cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` - -test "$cf_library_path" != "NONE" && \ -test -d "$cf_library_path" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" - test -d $cf_library_path/lib && cf_search="$cf_search $cf_library_path/lib" - test -d $cf_library_path/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" - test -d $cf_library_path/lib/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" - test -d $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" -} - - cf_library_path_list="$cf_library_path_list $cf_search" - ;; - esac - done -fi - -cf_search= - -test "/usr" != "$prefix" && \ -test -d "/usr" && \ -(test $prefix = NONE || test "/usr" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr" - test -d /usr/lib && cf_search="$cf_search /usr/lib" - test -d /usr/lib/$cf_nculib_root && cf_search="$cf_search /usr/lib/$cf_nculib_root" - test -d /usr/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/lib/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib && cf_search="$cf_search /usr/$cf_nculib_root/lib" - test -d /usr/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$prefix" != "NONE" && \ -test -d "$prefix" && \ - { - test -n "$verbose" && echo " ... testing for lib-directories under $prefix" - test -d $prefix/lib && cf_search="$cf_search $prefix/lib" - test -d $prefix/lib/$cf_nculib_root && cf_search="$cf_search $prefix/lib/$cf_nculib_root" - test -d $prefix/lib/$cf_nculib_root/lib && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib && cf_search="$cf_search $prefix/$cf_nculib_root/lib" - test -d $prefix/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/usr/local" != "$prefix" && \ -test -d "/usr/local" && \ -(test $prefix = NONE || test "/usr/local" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /usr/local" - test -d /usr/local/lib && cf_search="$cf_search /usr/local/lib" - test -d /usr/local/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/lib/$cf_nculib_root" - test -d /usr/local/lib/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/lib/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib && cf_search="$cf_search /usr/local/$cf_nculib_root/lib" - test -d /usr/local/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /usr/local/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "/opt" != "$prefix" && \ -test -d "/opt" && \ -(test $prefix = NONE || test "/opt" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under /opt" - test -d /opt/lib && cf_search="$cf_search /opt/lib" - test -d /opt/lib/$cf_nculib_root && cf_search="$cf_search /opt/lib/$cf_nculib_root" - test -d /opt/lib/$cf_nculib_root/lib && cf_search="$cf_search /opt/lib/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib && cf_search="$cf_search /opt/$cf_nculib_root/lib" - test -d /opt/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search /opt/$cf_nculib_root/lib/$cf_nculib_root" -} - -test "$HOME" != "$prefix" && \ -test -d "$HOME" && \ -(test $prefix = NONE || test "$HOME" != "$prefix") && { - test -n "$verbose" && echo " ... testing for lib-directories under $HOME" - test -d $HOME/lib && cf_search="$cf_search $HOME/lib" - test -d $HOME/lib/$cf_nculib_root && cf_search="$cf_search $HOME/lib/$cf_nculib_root" - test -d $HOME/lib/$cf_nculib_root/lib && cf_search="$cf_search $HOME/lib/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib && cf_search="$cf_search $HOME/$cf_nculib_root/lib" - test -d $HOME/$cf_nculib_root/lib/$cf_nculib_root && cf_search="$cf_search $HOME/$cf_nculib_root/lib/$cf_nculib_root" -} - -cf_search="$cf_library_path_list $cf_search" - - for cf_libdir in $cf_search - do - echo "$as_me:9071: checking for -l$cf_nculib_root in $cf_libdir" >&5 -echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 - LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 9075 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr() - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9087: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9090: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9093: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9096: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:9098: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - eval 'cf_cv_have_lib_'$cf_nculib_root'=yes' - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:9105: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_save_LIBS" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done - -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi - -eval 'cf_found_library=$cf_cv_have_lib_'$cf_nculib_root - -if test $cf_found_library = no ; then - { { echo "$as_me:9120: error: Cannot link $cf_nculib_root library" >&5 -echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} - { (exit 1); exit 1; }; } -fi - -fi - -if test -n "$cf_ncurses_LIBS" ; then - echo "$as_me:9128: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 -echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 - cf_ncurses_SAVE="$LIBS" - for p in $cf_ncurses_LIBS ; do - q=`echo $LIBS | sed -e "s%$p %%" -e "s%$p$%%"` - if test "$q" != "$LIBS" ; then - LIBS="$q" - fi - done - cat >conftest.$ac_ext <<_ACEOF -#line 9138 "configure" -#include "confdefs.h" -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -initscr(); mousemask(0,0); tgoto((char *)0, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9150: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9153: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9156: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9159: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - echo "$as_me:9161: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:9166: result: no" >&5 -echo "${ECHO_T}no" >&6 - LIBS="$cf_ncurses_SAVE" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - -cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <&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. -if test "${with_pkg_config+set}" = set; then - withval="$with_pkg_config" - cf_pkg_config=$withval -else - cf_pkg_config=yes -fi; -echo "$as_me:9194: result: $cf_pkg_config" >&5 -echo "${ECHO_T}$cf_pkg_config" >&6 - -case $cf_pkg_config in #(vi -no) #(vi - PKG_CONFIG=none - ;; -yes) #(vi - 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:9205: 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 -else - case $PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:9222: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -PKG_CONFIG=$ac_cv_path_PKG_CONFIG - -if test -n "$PKG_CONFIG"; then - echo "$as_me:9233: result: $PKG_CONFIG" >&5 -echo "${ECHO_T}$PKG_CONFIG" >&6 -else - echo "$as_me:9236: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -fi -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:9245: 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 -else - case $ac_pt_PKG_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" - echo "$as_me:9262: found $ac_dir/$ac_word" >&5 - break -fi -done - - test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="none" - ;; -esac -fi -ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG - -if test -n "$ac_pt_PKG_CONFIG"; then - echo "$as_me:9274: result: $ac_pt_PKG_CONFIG" >&5 -echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 -else - echo "$as_me:9277: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - PKG_CONFIG=$ac_pt_PKG_CONFIG -else - PKG_CONFIG="$ac_cv_path_PKG_CONFIG" -fi - - ;; -*) - PKG_CONFIG=$withval - ;; -esac - -test -z "$PKG_CONFIG" && PKG_CONFIG=none -if test "$PKG_CONFIG" != none ; then - -if test "x$prefix" != xNONE; then - cf_path_syntax="$prefix" -else - cf_path_syntax="$ac_default_prefix" -fi - -case ".$PKG_CONFIG" in #(vi -.\$\(*\)*|.\'*\'*) #(vi - ;; -..|./*|.\\*) #(vi - ;; -.[a-zA-Z]:[\\/]*) #(vi OS/2 EMX - ;; -.\${*prefix}*) #(vi - eval PKG_CONFIG="$PKG_CONFIG" - case ".$PKG_CONFIG" in #(vi - .NONE/*) - PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` - ;; - esac - ;; #(vi -.no|.NONE/*) - PKG_CONFIG=`echo $PKG_CONFIG | sed -e s%NONE%$cf_path_syntax%` - ;; -*) - { { echo "$as_me:9320: error: expected a pathname, not \"$PKG_CONFIG\"" >&5 -echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG\"" >&2;} - { (exit 1); exit 1; }; } - ;; -esac - -fi - -echo "$as_me:9328: checking for X" >&5 -echo $ECHO_N "checking for X... $ECHO_C" >&6 - -# Check whether --with-x or --without-x was given. -if test "${with_x+set}" = set; then - withval="$with_x" - -fi; -# $have_x is `yes', `no', `disabled', or empty when we do not yet know. -if test "x$with_x" = xno; then - # The user explicitly disabled X. - have_x=disabled -else - if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then - # Both variables are already set. - have_x=yes - else - if test "${ac_cv_have_x+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - # One or both of the vars are not set, and there is no cached value. -ac_x_includes=no ac_x_libraries=no -rm -fr conftest.dir -if mkdir conftest.dir; then - cd conftest.dir - # Make sure to not put "make" in the Imakefile rules, since we grep it out. - cat >Imakefile <<'EOF' -acfindx: - @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' -EOF - if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then - # GNU make sometimes prints "make[1]: Entering...", which would confuse us. - eval `${MAKE-make} acfindx 2>/dev/null | grep -v make` - # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. - for ac_extension in a so sl dylib dll; do - if test ! -f $ac_im_usrlibdir/libX11.$ac_extension && - test -f $ac_im_libdir/libX11.$ac_extension; then - ac_im_usrlibdir=$ac_im_libdir; break - fi - done - # Screen out bogus values from the imake configuration. They are - # bogus both because they are the default anyway, and because - # using them would break gcc on systems where it needs fixed includes. - case $ac_im_incroot in - /usr/include) ;; - *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; - esac - case $ac_im_usrlibdir in - /usr/lib | /lib) ;; - *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; - esac - fi - cd .. - rm -fr conftest.dir -fi - -# Standard set of common directories for X headers. -# Check X11 before X11Rn because it is often a symlink to the current release. -ac_x_header_dirs=' -/usr/X11/include -/usr/X11R6/include -/usr/X11R5/include -/usr/X11R4/include - -/usr/include/X11 -/usr/include/X11R6 -/usr/include/X11R5 -/usr/include/X11R4 - -/usr/local/X11/include -/usr/local/X11R6/include -/usr/local/X11R5/include -/usr/local/X11R4/include - -/usr/local/include/X11 -/usr/local/include/X11R6 -/usr/local/include/X11R5 -/usr/local/include/X11R4 - -/usr/X386/include -/usr/x386/include -/usr/XFree86/include/X11 - -/usr/include -/usr/local/include -/usr/unsupported/include -/usr/athena/include -/usr/local/x11r5/include -/usr/lpp/Xamples/include - -/usr/openwin/include -/usr/openwin/share/include' - -if test "$ac_x_includes" = no; then - # Guess where to find include files, by looking for Intrinsic.h. - # First, try using that file with no special directory specified. - cat >conftest.$ac_ext <<_ACEOF -#line 9425 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:9429: \"$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:9435: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - # We can compile using X headers with no special include directory. -ac_x_includes= -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - for ac_dir in $ac_x_header_dirs; do - if test -r "$ac_dir/X11/Intrinsic.h"; then - ac_x_includes=$ac_dir - break - fi -done -fi -rm -f conftest.err conftest.$ac_ext -fi # $ac_x_includes = no - -if test "$ac_x_libraries" = no; then - # Check for the libraries. - # See if we find them without any special options. - # Don't add to $LIBS permanently. - ac_save_LIBS=$LIBS - LIBS="-lXt $LIBS" - cat >conftest.$ac_ext <<_ACEOF -#line 9468 "configure" -#include "confdefs.h" -#include -int -main () -{ -XtMalloc (0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9480: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9483: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9486: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9489: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - LIBS=$ac_save_LIBS -# We can link X programs with no special library path. -ac_x_libraries= -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -LIBS=$ac_save_LIBS -for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` -do - # Don't even attempt the hair of trying to link an X program! - for ac_extension in a so sl dylib dll; do - if test -r $ac_dir/libXt.$ac_extension; then - ac_x_libraries=$ac_dir - break 2 - fi - done -done -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi # $ac_x_libraries = no - -if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then - # Didn't find X anywhere. Cache the known absence of X. - ac_cv_have_x="have_x=no" -else - # Record where we found X for the cache. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" -fi -fi - - fi - eval "$ac_cv_have_x" -fi # $with_x != no - -if test "$have_x" != yes; then - echo "$as_me:9527: result: $have_x" >&5 -echo "${ECHO_T}$have_x" >&6 - no_x=yes -else - # If each of the values was on the command line, it overrides each guess. - test "x$x_includes" = xNONE && x_includes=$ac_x_includes - test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries - # Update the cache value to reflect the command line values. - ac_cv_have_x="have_x=yes \ - ac_x_includes=$x_includes ac_x_libraries=$x_libraries" - echo "$as_me:9537: result: libraries $x_libraries, headers $x_includes" >&5 -echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 -fi - -if test "$no_x" = yes; then - # Not all programs may use this symbol, but it does not hurt to define it. - -cat >>confdefs.h <<\EOF -#define X_DISPLAY_MISSING 1 -EOF - - X_CFLAGS= X_PRE_LIBS= X_LIBS= X_EXTRA_LIBS= -else - if test -n "$x_includes"; then - X_CFLAGS="$X_CFLAGS -I$x_includes" - fi - - # It would also be nice to do this for all -L options, not just this one. - if test -n "$x_libraries"; then - X_LIBS="$X_LIBS -L$x_libraries" - # For Solaris; some versions of Sun CC require a space after -R and - # others require no space. Words are not sufficient . . . . - case `(uname -sr) 2>/dev/null` in - "SunOS 5"*) - echo "$as_me:9561: checking whether -R must be followed by a space" >&5 -echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 - ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" - cat >conftest.$ac_ext <<_ACEOF -#line 9565 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9577: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9580: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9583: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9586: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_R_nospace=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_R_nospace=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test $ac_R_nospace = yes; then - echo "$as_me:9596: result: no" >&5 -echo "${ECHO_T}no" >&6 - X_LIBS="$X_LIBS -R$x_libraries" - else - LIBS="$ac_xsave_LIBS -R $x_libraries" - cat >conftest.$ac_ext <<_ACEOF -#line 9602 "configure" -#include "confdefs.h" - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9614: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9617: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9620: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9623: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_R_space=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_R_space=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - if test $ac_R_space = yes; then - echo "$as_me:9633: result: yes" >&5 -echo "${ECHO_T}yes" >&6 - X_LIBS="$X_LIBS -R $x_libraries" - else - echo "$as_me:9637: result: neither works" >&5 -echo "${ECHO_T}neither works" >&6 - fi - fi - LIBS=$ac_xsave_LIBS - esac - fi - - # Check for system-dependent libraries X programs must link with. - # Do this before checking for the system-independent R6 libraries - # (-lICE), since we may need -lsocket or whatever for X linking. - - if test "$ISC" = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" - else - # Martyn Johnson says this is needed for Ultrix, if the X - # libraries were built with DECnet support. And Karl Berry says - # the Alpha needs dnet_stub (dnet does not exist). - ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" - cat >conftest.$ac_ext <<_ACEOF -#line 9657 "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 XOpenDisplay (); -int -main () -{ -XOpenDisplay (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9676: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9679: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9682: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9685: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -echo "$as_me:9691: checking for dnet_ntoa in -ldnet" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 -if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 9699 "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 dnet_ntoa (); -int -main () -{ -dnet_ntoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9718: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9721: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9724: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9727: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dnet_dnet_ntoa=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dnet_dnet_ntoa=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:9738: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 -if test $ac_cv_lib_dnet_dnet_ntoa = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" -fi - - if test $ac_cv_lib_dnet_dnet_ntoa = no; then - echo "$as_me:9745: checking for dnet_ntoa in -ldnet_stub" >&5 -echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 -if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-ldnet_stub $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 9753 "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 dnet_ntoa (); -int -main () -{ -dnet_ntoa (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9772: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9775: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9778: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9781: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_dnet_stub_dnet_ntoa=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_dnet_stub_dnet_ntoa=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:9792: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 -echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 -if test $ac_cv_lib_dnet_stub_dnet_ntoa = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" -fi - - fi -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - LIBS="$ac_xsave_LIBS" - - # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, - # to get the SysV transport functions. - # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) - # needs -lnsl. - # The nsl library prevents programs from opening the X display - # on Irix 5.2, according to T.E. Dickey. - # The functions gethostbyname, getservbyname, and inet_addr are - # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. - echo "$as_me:9811: checking for gethostbyname" >&5 -echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 -if test "${ac_cv_func_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 9817 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char gethostbyname (); below. */ -#include -/* 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 gethostbyname (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_gethostbyname) || defined (__stub___gethostbyname) -choke me -#else -f = gethostbyname; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9848: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9851: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9854: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9857: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_gethostbyname=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:9867: result: $ac_cv_func_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 - - if test $ac_cv_func_gethostbyname = no; then - echo "$as_me:9871: checking for gethostbyname in -lnsl" >&5 -echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 -if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lnsl $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 9879 "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 gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9898: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9901: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9904: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9907: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_nsl_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_nsl_gethostbyname=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:9918: result: $ac_cv_lib_nsl_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 -if test $ac_cv_lib_nsl_gethostbyname = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" -fi - - if test $ac_cv_lib_nsl_gethostbyname = no; then - echo "$as_me:9925: checking for gethostbyname in -lbsd" >&5 -echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 -if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lbsd $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 9933 "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 gethostbyname (); -int -main () -{ -gethostbyname (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:9952: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:9955: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:9958: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:9961: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_bsd_gethostbyname=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_bsd_gethostbyname=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:9972: result: $ac_cv_lib_bsd_gethostbyname" >&5 -echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 -if test $ac_cv_lib_bsd_gethostbyname = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" -fi - - fi - fi - - # lieder@skyler.mavd.honeywell.com says without -lsocket, - # socket/setsockopt and other routines are undefined under SCO ODT - # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary - # on later versions), says Simon Leinen: it contains gethostby* - # variants that don't use the nameserver (or something). -lsocket - # must be given before -lnsl if both are needed. We assume that - # if connect needs -lnsl, so does gethostbyname. - echo "$as_me:9988: checking for connect" >&5 -echo $ECHO_N "checking for connect... $ECHO_C" >&6 -if test "${ac_cv_func_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 9994 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char connect (); below. */ -#include -/* 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 connect (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_connect) || defined (__stub___connect) -choke me -#else -f = connect; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10025: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10028: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10031: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10034: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_connect=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_connect=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:10044: result: $ac_cv_func_connect" >&5 -echo "${ECHO_T}$ac_cv_func_connect" >&6 - - if test $ac_cv_func_connect = no; then - echo "$as_me:10048: checking for connect in -lsocket" >&5 -echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 -if test "${ac_cv_lib_socket_connect+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lsocket $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 10056 "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 connect (); -int -main () -{ -connect (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10075: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10078: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10081: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10084: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_socket_connect=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_socket_connect=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:10095: result: $ac_cv_lib_socket_connect" >&5 -echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 -if test $ac_cv_lib_socket_connect = yes; then - X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" -fi - - fi - - # Guillermo Gomez says -lposix is necessary on A/UX. - echo "$as_me:10104: checking for remove" >&5 -echo $ECHO_N "checking for remove... $ECHO_C" >&6 -if test "${ac_cv_func_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 10110 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char remove (); below. */ -#include -/* 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 remove (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_remove) || defined (__stub___remove) -choke me -#else -f = remove; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10141: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10144: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10147: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10150: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_remove=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_remove=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:10160: result: $ac_cv_func_remove" >&5 -echo "${ECHO_T}$ac_cv_func_remove" >&6 - - if test $ac_cv_func_remove = no; then - echo "$as_me:10164: checking for remove in -lposix" >&5 -echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 -if test "${ac_cv_lib_posix_remove+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lposix $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 10172 "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 remove (); -int -main () -{ -remove (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10191: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10194: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10197: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10200: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_posix_remove=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_posix_remove=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:10211: result: $ac_cv_lib_posix_remove" >&5 -echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 -if test $ac_cv_lib_posix_remove = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" -fi - - fi - - # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. - echo "$as_me:10220: checking for shmat" >&5 -echo $ECHO_N "checking for shmat... $ECHO_C" >&6 -if test "${ac_cv_func_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 10226 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char shmat (); below. */ -#include -/* 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 shmat (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_shmat) || defined (__stub___shmat) -choke me -#else -f = shmat; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10257: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10260: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10263: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10266: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_shmat=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_shmat=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:10276: result: $ac_cv_func_shmat" >&5 -echo "${ECHO_T}$ac_cv_func_shmat" >&6 - - if test $ac_cv_func_shmat = no; then - echo "$as_me:10280: checking for shmat in -lipc" >&5 -echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 -if test "${ac_cv_lib_ipc_shmat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lipc $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 10288 "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 shmat (); -int -main () -{ -shmat (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10307: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10310: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10313: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10316: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_ipc_shmat=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_ipc_shmat=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:10327: result: $ac_cv_lib_ipc_shmat" >&5 -echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 -if test $ac_cv_lib_ipc_shmat = yes; then - X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" -fi - - fi - fi - - # Check for libraries that X11R6 Xt/Xaw programs need. - ac_save_LDFLAGS=$LDFLAGS - test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" - # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to - # check for ICE first), but we must link in the order -lSM -lICE or - # we get undefined symbols. So assume we have SM if we have ICE. - # These have to be linked with before -lX11, unlike the other - # libraries we check for below, so use a different variable. - # John Interrante, Karl Berry - echo "$as_me:10345: checking for IceConnectionNumber in -lICE" >&5 -echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 -if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lICE $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 10353 "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 IceConnectionNumber (); -int -main () -{ -IceConnectionNumber (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10372: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10375: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10378: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10381: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_ICE_IceConnectionNumber=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_ICE_IceConnectionNumber=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:10392: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 -echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 -if test $ac_cv_lib_ICE_IceConnectionNumber = yes; then - X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" -fi - - LDFLAGS=$ac_save_LDFLAGS - -fi - -cf_x_athena=${cf_x_athena:-Xaw} - -echo "$as_me:10404: checking if you want to link with Xaw 3d library" >&5 -echo $ECHO_N "checking if you want to link with Xaw 3d library... $ECHO_C" >&6 -withval= - -# Check whether --with-Xaw3d or --without-Xaw3d was given. -if test "${with_Xaw3d+set}" = set; then - withval="$with_Xaw3d" - -fi; -if test "$withval" = yes ; then - cf_x_athena=Xaw3d - echo "$as_me:10415: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:10418: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:10422: checking if you want to link with neXT Athena library" >&5 -echo $ECHO_N "checking if you want to link with neXT Athena library... $ECHO_C" >&6 -withval= - -# Check whether --with-neXtaw or --without-neXtaw was given. -if test "${with_neXtaw+set}" = set; then - withval="$with_neXtaw" - -fi; -if test "$withval" = yes ; then - cf_x_athena=neXtaw - echo "$as_me:10433: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:10436: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -echo "$as_me:10440: checking if you want to link with Athena-Plus library" >&5 -echo $ECHO_N "checking if you want to link with Athena-Plus library... $ECHO_C" >&6 -withval= - -# Check whether --with-XawPlus or --without-XawPlus was given. -if test "${with_XawPlus+set}" = set; then - withval="$with_XawPlus" - -fi; -if test "$withval" = yes ; then - cf_x_athena=XawPlus - echo "$as_me:10451: result: yes" >&5 -echo "${ECHO_T}yes" >&6 -else - echo "$as_me:10454: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - -cf_x_athena_lib="" - -if test "$PKG_CONFIG" != none ; then - cf_athena_list= - test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" - for cf_athena_pkg in \ - $cf_athena_list \ - ${cf_x_athena} \ - ${cf_x_athena}-devel \ - lib${cf_x_athena} \ - lib${cf_x_athena}-devel - do - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists $cf_athena_pkg; then - test -n "$verbose" && echo " found package $cf_athena_pkg" 1>&6 - -echo "${as_me:-configure}:10474: testing found package $cf_athena_pkg ..." 1>&5 - - cf_pkgconfig_incs="`$PKG_CONFIG --cflags $cf_athena_pkg 2>/dev/null`" - cf_pkgconfig_libs="`$PKG_CONFIG --libs $cf_athena_pkg 2>/dev/null`" - test -n "$verbose" && echo " package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs" 1>&6 - -echo "${as_me:-configure}:10480: testing package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs ..." 1>&5 - - test -n "$verbose" && echo " package $cf_athena_pkg LIBS: $cf_pkgconfig_libs" 1>&6 - -echo "${as_me:-configure}:10484: testing package $cf_athena_pkg LIBS: $cf_pkgconfig_libs ..." 1>&5 - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_pkgconfig_incs -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - LIBS="$cf_pkgconfig_libs $LIBS" - - cf_x_athena_lib="$cf_pkgconfig_libs" - -cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <&5 -echo $ECHO_N "checking for usable $cf_x_athena/Xmu package... $ECHO_C" >&6 -if test "${cf_cv_xaw_compat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 10581 "configure" -#include "confdefs.h" - -#include - -int -main () -{ - -int check = XmuCompareISOLatin1("big", "small") - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10597: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10600: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10603: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10606: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xaw_compat=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_xaw_compat=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:10616: result: $cf_cv_xaw_compat" >&5 -echo "${ECHO_T}$cf_cv_xaw_compat" >&6 - - if test "$cf_cv_xaw_compat" = no - then - # workaround for broken ".pc" files... - case "$cf_x_athena_lib" in #(vi - *-lXmu*) #(vi - ;; - *) - test -n "$verbose" && echo " work around broken package" 1>&6 - -echo "${as_me:-configure}:10628: testing work around broken package ..." 1>&5 - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xmu; then - test -n "$verbose" && echo " found package xmu" 1>&6 - -echo "${as_me:-configure}:10633: testing found package xmu ..." 1>&5 - - cf_pkgconfig_incs="`$PKG_CONFIG --cflags xmu 2>/dev/null`" - cf_pkgconfig_libs="`$PKG_CONFIG --libs xmu 2>/dev/null`" - test -n "$verbose" && echo " package xmu CFLAGS: $cf_pkgconfig_incs" 1>&6 - -echo "${as_me:-configure}:10639: testing package xmu CFLAGS: $cf_pkgconfig_incs ..." 1>&5 - - test -n "$verbose" && echo " package xmu LIBS: $cf_pkgconfig_libs" 1>&6 - -echo "${as_me:-configure}:10643: testing package xmu LIBS: $cf_pkgconfig_libs ..." 1>&5 - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_pkgconfig_incs -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - LIBS="$cf_pkgconfig_libs $LIBS" - : -else - -test -n "$verbose" && echo " ...before $LIBS" 1>&6 - -echo "${as_me:-configure}:10729: testing ...before $LIBS ..." 1>&5 - -LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s,-lXt ,-lXt -lXmu ," -e 's/ / /g'` -test -n "$verbose" && echo " ...after $LIBS" 1>&6 - -echo "${as_me:-configure}:10734: testing ...after $LIBS ..." 1>&5 - -fi - - ;; - esac - fi - - break -else - : -fi - - done -fi - -if test -z "$cf_x_athena_lib" ; then - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists Xext; then - test -n "$verbose" && echo " found package Xext" 1>&6 - -echo "${as_me:-configure}:10755: testing found package Xext ..." 1>&5 - - cf_pkgconfig_incs="`$PKG_CONFIG --cflags Xext 2>/dev/null`" - cf_pkgconfig_libs="`$PKG_CONFIG --libs Xext 2>/dev/null`" - test -n "$verbose" && echo " package Xext CFLAGS: $cf_pkgconfig_incs" 1>&6 - -echo "${as_me:-configure}:10761: testing package Xext CFLAGS: $cf_pkgconfig_incs ..." 1>&5 - - test -n "$verbose" && echo " package Xext LIBS: $cf_pkgconfig_libs" 1>&6 - -echo "${as_me:-configure}:10765: testing package Xext LIBS: $cf_pkgconfig_libs ..." 1>&5 - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_pkgconfig_incs -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - LIBS="$cf_pkgconfig_libs $LIBS" - : -else - - echo "$as_me:10849: checking for XextCreateExtension in -lXext" >&5 -echo $ECHO_N "checking for XextCreateExtension in -lXext... $ECHO_C" >&6 -if test "${ac_cv_lib_Xext_XextCreateExtension+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lXext $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 10857 "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 XextCreateExtension (); -int -main () -{ -XextCreateExtension (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:10876: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:10879: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:10882: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:10885: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_Xext_XextCreateExtension=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_Xext_XextCreateExtension=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:10896: result: $ac_cv_lib_Xext_XextCreateExtension" >&5 -echo "${ECHO_T}$ac_cv_lib_Xext_XextCreateExtension" >&6 -if test $ac_cv_lib_Xext_XextCreateExtension = yes; then - LIBS="-lXext $LIBS" -fi - -fi - -cf_have_X_LIBS=no - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists xt; then - test -n "$verbose" && echo " found package xt" 1>&6 - -echo "${as_me:-configure}:10909: testing found package xt ..." 1>&5 - - cf_pkgconfig_incs="`$PKG_CONFIG --cflags xt 2>/dev/null`" - cf_pkgconfig_libs="`$PKG_CONFIG --libs xt 2>/dev/null`" - test -n "$verbose" && echo " package xt CFLAGS: $cf_pkgconfig_incs" 1>&6 - -echo "${as_me:-configure}:10915: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5 - - test -n "$verbose" && echo " package xt LIBS: $cf_pkgconfig_libs" 1>&6 - -echo "${as_me:-configure}:10919: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5 - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_pkgconfig_incs -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - LIBS="$cf_pkgconfig_libs $LIBS" - - case "x$LIBS" in #(vi - *-lX11*) #(vi - ;; - *) -# we have an "xt" package, but it may omit Xt's dependency on X11 -echo "$as_me:11006: checking for usable X dependency" >&5 -echo $ECHO_N "checking for usable X dependency... $ECHO_C" >&6 -if test "${cf_cv_xt_x11_compat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 11013 "configure" -#include "confdefs.h" - -#include - -int -main () -{ - - int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); - int rc2 = XClearWindow((Display*) 0, (Window) 0); - int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); - int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11032: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11035: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11038: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11041: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xt_x11_compat=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_xt_x11_compat=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:11051: result: $cf_cv_xt_x11_compat" >&5 -echo "${ECHO_T}$cf_cv_xt_x11_compat" >&6 - if test "$cf_cv_xt_x11_compat" = no - then - test -n "$verbose" && echo " work around broken X11 dependency" 1>&6 - -echo "${as_me:-configure}:11057: testing work around broken X11 dependency ..." 1>&5 - - # 2010/11/19 - good enough until a working Xt on Xcb is delivered. - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists x11; then - test -n "$verbose" && echo " found package x11" 1>&6 - -echo "${as_me:-configure}:11064: testing found package x11 ..." 1>&5 - - cf_pkgconfig_incs="`$PKG_CONFIG --cflags x11 2>/dev/null`" - cf_pkgconfig_libs="`$PKG_CONFIG --libs x11 2>/dev/null`" - test -n "$verbose" && echo " package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6 - -echo "${as_me:-configure}:11070: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5 - - test -n "$verbose" && echo " package x11 LIBS: $cf_pkgconfig_libs" 1>&6 - -echo "${as_me:-configure}:11074: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5 - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_pkgconfig_incs -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - LIBS="$cf_pkgconfig_libs $LIBS" - : -else - -test -n "$verbose" && echo " ...before $LIBS" 1>&6 - -echo "${as_me:-configure}:11160: testing ...before $LIBS ..." 1>&5 - -LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s,-lXt ,-lXt -lX11 ," -e 's/ / /g'` -test -n "$verbose" && echo " ...after $LIBS" 1>&6 - -echo "${as_me:-configure}:11165: testing ...after $LIBS ..." 1>&5 - -fi - - fi - ;; - esac - -echo "$as_me:11173: checking for usable X Toolkit package" >&5 -echo $ECHO_N "checking for usable X Toolkit package... $ECHO_C" >&6 -if test "${cf_cv_xt_ice_compat+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 11180 "configure" -#include "confdefs.h" - -#include - -int -main () -{ -int num = IceConnectionNumber(0) - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11195: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11198: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11201: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11204: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_xt_ice_compat=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_xt_ice_compat=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:11214: result: $cf_cv_xt_ice_compat" >&5 -echo "${ECHO_T}$cf_cv_xt_ice_compat" >&6 - - if test "$cf_cv_xt_ice_compat" = no - then - # workaround for broken ".pc" files used for X Toolkit. - case "x$X_PRE_LIBS" in #(vi - *-lICE*) - case "x$LIBS" in #(vi - *-lICE*) #(vi - ;; - *) - test -n "$verbose" && echo " work around broken ICE dependency" 1>&6 - -echo "${as_me:-configure}:11228: testing work around broken ICE dependency ..." 1>&5 - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists ice; then - test -n "$verbose" && echo " found package ice" 1>&6 - -echo "${as_me:-configure}:11233: testing found package ice ..." 1>&5 - - cf_pkgconfig_incs="`$PKG_CONFIG --cflags ice 2>/dev/null`" - cf_pkgconfig_libs="`$PKG_CONFIG --libs ice 2>/dev/null`" - test -n "$verbose" && echo " package ice CFLAGS: $cf_pkgconfig_incs" 1>&6 - -echo "${as_me:-configure}:11239: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5 - - test -n "$verbose" && echo " package ice LIBS: $cf_pkgconfig_libs" 1>&6 - -echo "${as_me:-configure}:11243: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5 - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_pkgconfig_incs -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - LIBS="$cf_pkgconfig_libs $LIBS" - -if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists sm; then - test -n "$verbose" && echo " found package sm" 1>&6 - -echo "${as_me:-configure}:11328: testing found package sm ..." 1>&5 - - cf_pkgconfig_incs="`$PKG_CONFIG --cflags sm 2>/dev/null`" - cf_pkgconfig_libs="`$PKG_CONFIG --libs sm 2>/dev/null`" - test -n "$verbose" && echo " package sm CFLAGS: $cf_pkgconfig_incs" 1>&6 - -echo "${as_me:-configure}:11334: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5 - - test -n "$verbose" && echo " package sm LIBS: $cf_pkgconfig_libs" 1>&6 - -echo "${as_me:-configure}:11338: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5 - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $cf_pkgconfig_incs -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -fi - -if test -n "$cf_new_extra_cppflags" ; then - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - - LIBS="$cf_pkgconfig_libs $LIBS" - : -else - : -fi - -else - -test -n "$verbose" && echo " ...before $LIBS" 1>&6 - -echo "${as_me:-configure}:11428: testing ...before $LIBS ..." 1>&5 - -LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s,-lXt ,-lXt $X_PRE_LIBS ," -e 's/ / /g'` -test -n "$verbose" && echo " ...after $LIBS" 1>&6 - -echo "${as_me:-configure}:11433: testing ...after $LIBS ..." 1>&5 - -fi - - ;; - esac - ;; - esac - fi - - cf_have_X_LIBS=yes - -else - - LDFLAGS="$X_LIBS $LDFLAGS" - -test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6 - -echo "${as_me:-configure}:11451: testing checking additions to CFLAGS ..." 1>&5 - -cf_check_cflags="$CFLAGS" -cf_check_cppflags="$CPPFLAGS" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $X_CFLAGS -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 - -echo "${as_me:-configure}:11522: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 - -echo "${as_me:-configure}:11530: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -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}:11538: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5 - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -if test "$cf_check_cflags" != "$CFLAGS" ; then -cat >conftest.$ac_ext <<_ACEOF -#line 11545 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello world"); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11557: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11560: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11563: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11566: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6 - -echo "${as_me:-configure}:11574: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5 - - if test "$cf_check_cppflags" != "$CPPFLAGS" ; then - test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6 - -echo "${as_me:-configure}:11579: testing but keeping change to \$CPPFLAGS ..." 1>&5 - - fi - CFLAGS="$cf_check_flags" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - - echo "$as_me:11587: checking for XOpenDisplay" >&5 -echo $ECHO_N "checking for XOpenDisplay... $ECHO_C" >&6 -if test "${ac_cv_func_XOpenDisplay+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 11593 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char XOpenDisplay (); below. */ -#include -/* 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 XOpenDisplay (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_XOpenDisplay) || defined (__stub___XOpenDisplay) -choke me -#else -f = XOpenDisplay; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11624: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11627: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11630: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11633: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_XOpenDisplay=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_XOpenDisplay=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:11643: result: $ac_cv_func_XOpenDisplay" >&5 -echo "${ECHO_T}$ac_cv_func_XOpenDisplay" >&6 -if test $ac_cv_func_XOpenDisplay = yes; then - : -else - - echo "$as_me:11649: checking for XOpenDisplay in -lX11" >&5 -echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6 -if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 11657 "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 XOpenDisplay (); -int -main () -{ -XOpenDisplay (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11676: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11679: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11682: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11685: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_X11_XOpenDisplay=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_X11_XOpenDisplay=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:11696: result: $ac_cv_lib_X11_XOpenDisplay" >&5 -echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6 -if test $ac_cv_lib_X11_XOpenDisplay = yes; then - LIBS="-lX11 $LIBS" -fi - -fi - - echo "$as_me:11704: checking for XtAppInitialize" >&5 -echo $ECHO_N "checking for XtAppInitialize... $ECHO_C" >&6 -if test "${ac_cv_func_XtAppInitialize+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 11710 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char XtAppInitialize (); below. */ -#include -/* 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 XtAppInitialize (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_XtAppInitialize) || defined (__stub___XtAppInitialize) -choke me -#else -f = XtAppInitialize; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11741: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11744: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11747: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11750: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_XtAppInitialize=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_XtAppInitialize=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:11760: result: $ac_cv_func_XtAppInitialize" >&5 -echo "${ECHO_T}$ac_cv_func_XtAppInitialize" >&6 -if test $ac_cv_func_XtAppInitialize = yes; then - : -else - - echo "$as_me:11766: checking for XtAppInitialize in -lXt" >&5 -echo $ECHO_N "checking for XtAppInitialize in -lXt... $ECHO_C" >&6 -if test "${ac_cv_lib_Xt_XtAppInitialize+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 11774 "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 XtAppInitialize (); -int -main () -{ -XtAppInitialize (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11793: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11796: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11799: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11802: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_Xt_XtAppInitialize=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_Xt_XtAppInitialize=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:11813: result: $ac_cv_lib_Xt_XtAppInitialize" >&5 -echo "${ECHO_T}$ac_cv_lib_Xt_XtAppInitialize" >&6 -if test $ac_cv_lib_Xt_XtAppInitialize = yes; then - cat >>confdefs.h <<\EOF -#define HAVE_LIBXT 1 -EOF - - cf_have_X_LIBS=Xt - LIBS="-lXt $X_PRE_LIBS $LIBS $X_EXTRA_LIBS" -fi - -fi - -fi - -if test $cf_have_X_LIBS = no ; then - { echo "$as_me:11829: WARNING: Unable to successfully link X Toolkit library (-lXt) with -test program. You will have to check and add the proper libraries by hand -to makefile." >&5 -echo "$as_me: WARNING: Unable to successfully link X Toolkit library (-lXt) with -test program. You will have to check and add the proper libraries by hand -to makefile." >&2;} -fi - -cf_x_athena_root=$cf_x_athena -cf_x_athena_inc="" - -for cf_path in default \ - /usr/contrib/X11R6 \ - /usr/contrib/X11R5 \ - /usr/lib/X11R5 \ - /usr/local -do - if test -z "$cf_x_athena_inc" ; then - cf_save="$CPPFLAGS" - cf_test=X11/$cf_x_athena_root/SimpleMenu.h - if test $cf_path != default ; then - CPPFLAGS="$cf_save -I$cf_path/include" - echo "$as_me:11851: checking for $cf_test in $cf_path" >&5 -echo $ECHO_N "checking for $cf_test in $cf_path... $ECHO_C" >&6 - else - echo "$as_me:11854: checking for $cf_test" >&5 -echo $ECHO_N "checking for $cf_test... $ECHO_C" >&6 - fi - cat >conftest.$ac_ext <<_ACEOF -#line 11858 "configure" -#include "confdefs.h" - -#include -#include <$cf_test> -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:11872: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:11875: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:11878: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11881: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - echo "$as_me:11890: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - if test "$cf_result" = yes ; then - cf_x_athena_inc=$cf_path - break - else - CPPFLAGS="$cf_save" - fi - fi -done - -if test -z "$cf_x_athena_inc" ; then - { echo "$as_me:11902: WARNING: Unable to successfully find Athena header files with test program" >&5 -echo "$as_me: WARNING: Unable to successfully find Athena header files with test program" >&2;} -elif test "$cf_x_athena_inc" != default ; then - CPPFLAGS="$CPPFLAGS -I$cf_x_athena_inc" -fi - -cf_x_athena_root=$cf_x_athena -cf_x_athena_lib="" - -for cf_path in default \ - /usr/contrib/X11R6 \ - /usr/contrib/X11R5 \ - /usr/lib/X11R5 \ - /usr/local -do - for cf_lib in \ - "-l$cf_x_athena_root -lXmu" \ - "-l$cf_x_athena_root -lXpm -lXmu" \ - "-l${cf_x_athena_root}_s -lXmu_s" - do - if test -z "$cf_x_athena_lib" ; then - cf_save="$LIBS" - cf_test=XawSimpleMenuAddGlobalActions - if test $cf_path != default ; then - LIBS="-L$cf_path/lib $cf_lib $LIBS" - echo "$as_me:11927: checking for $cf_lib in $cf_path" >&5 -echo $ECHO_N "checking for $cf_lib in $cf_path... $ECHO_C" >&6 - else - LIBS="$cf_lib $LIBS" - echo "$as_me:11931: checking for $cf_test in $cf_lib" >&5 -echo $ECHO_N "checking for $cf_test in $cf_lib... $ECHO_C" >&6 - fi - cat >conftest.$ac_ext <<_ACEOF -#line 11935 "configure" -#include "confdefs.h" - -#include -#include - -int -main () -{ - -$cf_test((XtAppContext) 0) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:11951: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:11954: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:11957: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:11960: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - echo "$as_me:11969: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - if test "$cf_result" = yes ; then - cf_x_athena_lib="$cf_lib" - break - fi - LIBS="$cf_save" - fi - done -done - -if test -z "$cf_x_athena_lib" ; then - { { echo "$as_me:11981: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5 -echo "$as_me: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&2;} - { (exit 1); exit 1; }; } -fi - -cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - -cat >>confdefs.h <&5 -echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 -if test "${ac_cv_path_XCURSES_CONFIG+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - case $XCURSES_CONFIG in - [\\/]* | ?:[\\/]*) - ac_cv_path_XCURSES_CONFIG="$XCURSES_CONFIG" # 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_XCURSES_CONFIG="$ac_dir/$ac_word" - echo "$as_me:12015: found $ac_dir/$ac_word" >&5 - break -fi -done - - ;; -esac -fi -XCURSES_CONFIG=$ac_cv_path_XCURSES_CONFIG - -if test -n "$XCURSES_CONFIG"; then - echo "$as_me:12026: result: $XCURSES_CONFIG" >&5 -echo "${ECHO_T}$XCURSES_CONFIG" >&6 -else - echo "$as_me:12029: result: no" >&5 -echo "${ECHO_T}no" >&6 -fi - - test -n "$XCURSES_CONFIG" && break -done -test -n "$XCURSES_CONFIG" || XCURSES_CONFIG="none" - -if test "$XCURSES_CONFIG" != none ; then - -CPPFLAGS="$CPPFLAGS `$XCURSES_CONFIG --cflags`" -LIBS="`$XCURSES_CONFIG --libs` $LIBS" - -cf_cv_lib_XCurses=yes - -else - -LDFLAGS="$LDFLAGS $X_LIBS" - -test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6 - -echo "${as_me:-configure}:12050: testing checking additions to CFLAGS ..." 1>&5 - -cf_check_cflags="$CFLAGS" -cf_check_cppflags="$CPPFLAGS" - -cf_fix_cppflags=no -cf_new_cflags= -cf_new_cppflags= -cf_new_extra_cppflags= - -for cf_add_cflags in $X_CFLAGS -do -case $cf_fix_cppflags in -no) - case $cf_add_cflags in #(vi - -undef|-nostdinc*|-I*|-D*|-U*|-E|-P|-C) #(vi - case $cf_add_cflags in - -D*) - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^-D[^=]*='\''\"[^"]*//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=yes - - if test $cf_fix_cppflags = yes ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - elif test "${cf_tst_cflags}" = "\"'" ; then - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - continue - fi - ;; - esac - case "$CPPFLAGS" in - *$cf_add_cflags) #(vi - ;; - *) #(vi - case $cf_add_cflags in #(vi - -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 - cf_new_cppflags="$cf_new_cppflags $cf_add_cflags" - ;; - esac - ;; - *) - cf_new_cflags="$cf_new_cflags $cf_add_cflags" - ;; - esac - ;; -yes) - cf_new_extra_cppflags="$cf_new_extra_cppflags $cf_add_cflags" - - cf_tst_cflags=`echo ${cf_add_cflags} |sed -e 's/^[^"]*"'\''//'` - - test "${cf_add_cflags}" != "${cf_tst_cflags}" \ - && test -z "${cf_tst_cflags}" \ - && cf_fix_cppflags=no - ;; -esac -done - -if test -n "$cf_new_cflags" ; then - test -n "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 - -echo "${as_me:-configure}:12121: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 - - CFLAGS="$CFLAGS $cf_new_cflags" -fi - -if test -n "$cf_new_cppflags" ; then - test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 - -echo "${as_me:-configure}:12129: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 - - CPPFLAGS="$CPPFLAGS $cf_new_cppflags" -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}:12137: testing add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags ..." 1>&5 - - EXTRA_CPPFLAGS="$cf_new_extra_cppflags $EXTRA_CPPFLAGS" -fi - -if test "$cf_check_cflags" != "$CFLAGS" ; then -cat >conftest.$ac_ext <<_ACEOF -#line 12144 "configure" -#include "confdefs.h" -#include -int -main () -{ -printf("Hello world"); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12156: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12159: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12162: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12165: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6 - -echo "${as_me:-configure}:12173: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5 - - if test "$cf_check_cppflags" != "$CPPFLAGS" ; then - test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6 - -echo "${as_me:-configure}:12178: testing but keeping change to \$CPPFLAGS ..." 1>&5 - - fi - CFLAGS="$cf_check_flags" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - -echo "$as_me:12186: checking for XOpenDisplay in -lX11" >&5 -echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6 -if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12194 "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 XOpenDisplay (); -int -main () -{ -XOpenDisplay (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12213: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12216: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12219: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12222: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_lib_X11_XOpenDisplay=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_lib_X11_XOpenDisplay=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12233: result: $ac_cv_lib_X11_XOpenDisplay" >&5 -echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6 -if test $ac_cv_lib_X11_XOpenDisplay = yes; then - LIBS="-lX11 $LIBS" -fi - -echo "$as_me:12239: checking for XCurses library" >&5 -echo $ECHO_N "checking for XCurses library... $ECHO_C" >&6 -if test "${cf_cv_lib_XCurses+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -LIBS="-lXCurses $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12247 "configure" -#include "confdefs.h" - -#include -char *XCursesProgramName = "test"; - -int -main () -{ -XCursesExit(); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12262: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12265: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12268: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12271: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_lib_XCurses=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_lib_XCurses=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -echo "$as_me:12282: result: $cf_cv_lib_XCurses" >&5 -echo "${ECHO_T}$cf_cv_lib_XCurses" >&6 - -fi - -if test $cf_cv_lib_XCurses = yes ; then - cat >>confdefs.h <<\EOF -#define UNIX 1 -EOF - - cat >>confdefs.h <<\EOF -#define XCURSES 1 -EOF - - echo "$as_me:12296: checking for xcurses.h" >&5 -echo $ECHO_N "checking for xcurses.h... $ECHO_C" >&6 -if test "${ac_cv_header_xcurses_h+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 12302 "configure" -#include "confdefs.h" -#include -_ACEOF -if { (eval echo "$as_me:12306: \"$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:12312: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_xcurses_h=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_xcurses_h=no -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:12331: result: $ac_cv_header_xcurses_h" >&5 -echo "${ECHO_T}$ac_cv_header_xcurses_h" >&6 -if test $ac_cv_header_xcurses_h = yes; then - cat >>confdefs.h <<\EOF -#define HAVE_XCURSES 1 -EOF - -fi - -else - { { echo "$as_me:12341: error: Cannot link with XCurses" >&5 -echo "$as_me: error: Cannot link with XCurses" >&2;} - { (exit 1); exit 1; }; } -fi - - ;; -esac - -case $cf_cv_screen in #(vi -pdcurses) #(vi - ;; -*) - # look for curses-related libraries - -as_ac_Lib=`echo "ac_cv_lib_panel$cf_cv_libtype''_new_panel" | $as_tr_sh` -echo "$as_me:12356: checking for new_panel in -lpanel$cf_cv_libtype" >&5 -echo $ECHO_N "checking for new_panel in -lpanel$cf_cv_libtype... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Lib+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lpanel$cf_cv_libtype $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12364 "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 new_panel (); -int -main () -{ -new_panel (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12383: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12386: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12389: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12392: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Lib=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Lib=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12403: 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 - cat >>confdefs.h <&5 -echo $ECHO_N "checking for menu_driver in -lmenu$cf_cv_libtype... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Lib+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lmenu$cf_cv_libtype $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12423 "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 menu_driver (); -int -main () -{ -menu_driver (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12442: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12445: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12448: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12451: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Lib=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Lib=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12462: 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 - cat >>confdefs.h <&5 -echo $ECHO_N "checking for form_driver in -lform$cf_cv_libtype... $ECHO_C" >&6 -if eval "test \"\${$as_ac_Lib+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - ac_check_lib_save_LIBS=$LIBS -LIBS="-lform$cf_cv_libtype $LIBS" -cat >conftest.$ac_ext <<_ACEOF -#line 12482 "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 form_driver (); -int -main () -{ -form_driver (); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12501: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12504: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12507: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12510: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Lib=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Lib=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -LIBS=$ac_check_lib_save_LIBS -fi -echo "$as_me:12521: 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 - cat >>confdefs.h <&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 12550 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:12554: \"$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:12560: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:12579: 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 <&5 -echo $ECHO_N "checking return type of signal handlers... $ECHO_C" >&6 -if test "${ac_cv_type_signal+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - cat >conftest.$ac_ext <<_ACEOF -#line 12598 "configure" -#include "confdefs.h" -#include -#include -#ifdef signal -# undef signal -#endif -#ifdef __cplusplus -extern "C" void (*signal (int, void (*)(int)))(int); -#else -void (*signal ()) (); -#endif - -int -main () -{ -int i; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:12620: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:12623: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12626: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12629: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_signal=void -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_signal=int -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:12639: result: $ac_cv_type_signal" >&5 -echo "${ECHO_T}$ac_cv_type_signal" >&6 - -cat >>confdefs.h <&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 12652 "configure" -#include "confdefs.h" -#include -#include -#include -#include - -_ACEOF -if { (eval echo "$as_me:12660: \"$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:12666: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - ac_cv_header_stdc=yes -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - ac_cv_header_stdc=no -fi -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 12688 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "memchr" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -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 12706 "configure" -#include "confdefs.h" -#include - -_ACEOF -if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | - egrep "free" >/dev/null 2>&1; then - : -else - ac_cv_header_stdc=no -fi -rm -rf conftest* - -fi - -if test $ac_cv_header_stdc = yes; then - # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. - if test "$cross_compiling" = yes; then - : -else - cat >conftest.$ac_ext <<_ACEOF -#line 12727 "configure" -#include "confdefs.h" -#include -#if ((' ' & 0x0FF) == 0x020) -# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') -# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) -#else -# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ - || ('j' <= (c) && (c) <= 'r') \ - || ('s' <= (c) && (c) <= 'z')) -# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) -#endif - -#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) -int -main () -{ - int i; - for (i = 0; i < 256; i++) - if (XOR (islower (i), ISLOWER (i)) - || toupper (i) != TOUPPER (i)) - $ac_main_return(2); - $ac_main_return (0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:12753: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12756: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:12758: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12761: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - : -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_stdc=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -fi -echo "$as_me:12774: result: $ac_cv_header_stdc" >&5 -echo "${ECHO_T}$ac_cv_header_stdc" >&6 -if test $ac_cv_header_stdc = yes; then - -cat >>confdefs.h <<\EOF -#define STDC_HEADERS 1 -EOF - -fi - -echo "$as_me:12784: 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 12790 "configure" -#include "confdefs.h" -#include -#include -#include - -int -main () -{ -if ((struct tm *) 0) -return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:12806: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:12809: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:12812: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12815: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_header_time=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_header_time=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:12825: result: $ac_cv_header_time" >&5 -echo "${ECHO_T}$ac_cv_header_time" >&6 -if test $ac_cv_header_time = yes; then - -cat >>confdefs.h <<\EOF -#define TIME_WITH_SYS_TIME 1 -EOF - -fi - -for ac_header in \ -getopt.h \ -locale.h \ -math.h \ -stdarg.h \ -sys/ioctl.h \ -sys/select.h \ -sys/time.h \ -termios.h \ -unistd.h \ - -do -as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` -echo "$as_me:12848: 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 12854 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:12858: \"$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:12864: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:12883: 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 <&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 12913 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* 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 $ac_func (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:12944: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:12947: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:12950: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:12953: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:12963: 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 <&5 -echo $ECHO_N "checking if we must define _XOPEN_SOURCE_EXTENDED... $ECHO_C" >&6 -if test "${cf_cv_need_xopen_extension+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 12980 "configure" -#include "confdefs.h" - -#include -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - -#if defined(NCURSES_VERSION_PATCH) -#if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403) - make an error -#endif -#endif - long x = winnstr(stdscr, "", 0); - int x1, y1; - getbegyx(stdscr, y1, x1) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13002: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13005: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13008: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13011: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_need_xopen_extension=no -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cat >conftest.$ac_ext <<_ACEOF -#line 13018 "configure" -#include "confdefs.h" - -#define _XOPEN_SOURCE_EXTENDED -#include -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - -#ifdef NCURSES_VERSION - cchar_t check; - int check2 = curs_set((int)sizeof(check)); -#endif - long x = winnstr(stdscr, "", 0); - int x1, y1; - getbegyx(stdscr, y1, x1) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13040: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13043: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13046: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13049: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_need_xopen_extension=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_need_xopen_extension=unknown -fi -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:13061: result: $cf_cv_need_xopen_extension" >&5 -echo "${ECHO_T}$cf_cv_need_xopen_extension" >&6 -test $cf_cv_need_xopen_extension = yes && CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED" - -echo "$as_me:13065: checking for term.h" >&5 -echo $ECHO_N "checking for term.h... $ECHO_C" >&6 -if test "${cf_cv_term_header+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -# If we found , look for , but always look -# for if we do not find the variant. -for cf_header in \ - `echo ${cf_cv_ncurses_header:-curses.h} | sed -e 's%/.*%/%'`term.h \ - term.h -do - cat >conftest.$ac_ext <<_ACEOF -#line 13078 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#include <${cf_header}> -int -main () -{ -WINDOW *x - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13092: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13095: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13098: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13101: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_term_header=$cf_header - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_term_header=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -done - -case $cf_cv_term_header in #(vi -no) - # If curses is ncurses, some packagers still mess it up by trying to make - # us use GNU termcap. This handles the most common case. - for cf_header in ncurses/term.h ncursesw/term.h - do - cat >conftest.$ac_ext <<_ACEOF -#line 13120 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -#ifdef NCURSES_VERSION -#include <${cf_header}> -#else -make an error -#endif -int -main () -{ -WINDOW *x - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13138: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13141: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13144: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13147: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_term_header=$cf_header - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_term_header=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - done - ;; -esac - -fi -echo "$as_me:13162: result: $cf_cv_term_header" >&5 -echo "${ECHO_T}$cf_cv_term_header" >&6 - -case $cf_cv_term_header in #(vi -term.h) #(vi - cat >>confdefs.h <<\EOF -#define HAVE_TERM_H 1 -EOF - - ;; -ncurses/term.h) #(vi - cat >>confdefs.h <<\EOF -#define HAVE_NCURSES_TERM_H 1 -EOF - - ;; -ncursesw/term.h) - cat >>confdefs.h <<\EOF -#define HAVE_NCURSESW_TERM_H 1 -EOF - - ;; -esac - -for cf_func in \ -chgat \ -color_set \ -filter \ -getbegx \ -getcurx \ -getmaxx \ -getnstr \ -getparx \ -getwin \ -mvvline \ -mvwvline \ -napms \ -putwin \ -resize_term \ -resizeterm \ -ripoffline \ -scr_dump \ -setupterm \ -slk_color \ -slk_init \ -termattrs \ -tgetent \ -tigetnum \ -tigetstr \ -typeahead \ -use_default_colors \ -vw_printw \ -vsscanf \ -wchgat \ -winsstr \ -wresize \ -wsyncdown \ - -do - -cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - echo "$as_me:13224: checking for ${cf_func}" >&5 -echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6 - -echo "${as_me:-configure}:13227: testing ${cf_func} ..." 1>&5 - - if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - eval cf_result='$ac_cv_func_'$cf_func - if test ".$cf_result" != ".no"; then - cat >conftest.$ac_ext <<_ACEOF -#line 13236 "configure" -#include "confdefs.h" - -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif - -int -main () -{ - -#ifndef ${cf_func} -long foo = (long)(&${cf_func}); -${cf_cv_main_return:-return}(foo == 0); -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13267: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13270: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13273: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13276: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - fi - eval 'cf_cv_func_'$cf_func'=$cf_result' - -fi - - # use the computed/retrieved cache-value: - eval 'cf_result=$cf_cv_func_'$cf_func - echo "$as_me:13292: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - if test $cf_result != no; then - cat >>confdefs.h <&5 -echo $ECHO_N "checking for ncurses extended functions... $ECHO_C" >&6 -if test "${cf_cv_ncurses_ext_funcs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 13309 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - -int x = NCURSES_EXT_FUNCS - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13324: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13327: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13330: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13333: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_ext_funcs=defined -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 - -cat >conftest.$ac_ext <<_ACEOF -#line 13341 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - - (void) assume_default_colors (0, 0); - (void) curses_version (); - (void) define_key (0, 0); - (void) is_term_resized (0, 0); - (void) key_defined (0); - (void) keybound (0, 0); - (void) keyok (0, 0); - (void) resize_term (0, 0); - (void) resizeterm (0, 0); - (void) use_default_colors (); - (void) use_extended_names (0); - (void) wresize (0, 0, 0); - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13366: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13369: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13372: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13375: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_ncurses_ext_funcs=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_ncurses_ext_funcs=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi -echo "$as_me:13389: result: $cf_cv_ncurses_ext_funcs" >&5 -echo "${ECHO_T}$cf_cv_ncurses_ext_funcs" >&6 -test "$cf_cv_ncurses_ext_funcs" = yes && cat >>confdefs.h <<\EOF -#define NCURSES_EXT_FUNCS 1 -EOF - -echo "$as_me:13395: checking for wide-character functions" >&5 -echo $ECHO_N "checking for wide-character functions... $ECHO_C" >&6 -if test "${cf_cv_widechar_funcs+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cat >conftest.$ac_ext <<_ACEOF -#line 13402 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - - static wchar_t src_wchar[2]; - static cchar_t dst_cchar; - setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0); - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13419: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13422: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13425: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13428: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_widechar_funcs=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_widechar_funcs=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -fi -echo "$as_me:13439: result: $cf_cv_widechar_funcs" >&5 -echo "${ECHO_T}$cf_cv_widechar_funcs" >&6 -if test "$cf_cv_widechar_funcs" != no ; then - cat >>confdefs.h <<\EOF -#define USE_WIDEC_SUPPORT 1 -EOF - -else - cat >>confdefs.h <<\EOF -#define USE_WIDEC_SUPPORT 0 -EOF - -fi - -# On IRIX 5.3, sys/types and inttypes.h are conflicting. - -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:13459: 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 13465 "configure" -#include "confdefs.h" -$ac_includes_default -#include <$ac_header> -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13471: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13474: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13477: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13480: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_Header=no" -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:13490: 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 <&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 13506 "configure" -#include "confdefs.h" -$ac_includes_default -int -main () -{ -if ((pid_t *) 0) - return 0; -if (sizeof (pid_t)) - return 0; - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13521: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13524: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13527: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13530: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_type_pid_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_type_pid_t=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:13540: 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 - : -else - -cat >>confdefs.h <&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 13561 "configure" -#include "confdefs.h" -#include <$ac_header> -_ACEOF -if { (eval echo "$as_me:13565: \"$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:13571: \$? = $ac_status" >&5 - (exit $ac_status); } >/dev/null; then - if test -s conftest.err; then - ac_cpp_err=$ac_c_preproc_warn_flag - else - ac_cpp_err= - fi -else - ac_cpp_err=yes -fi -if test -z "$ac_cpp_err"; then - eval "$as_ac_Header=yes" -else - echo "$as_me: failed program was:" >&5 - cat conftest.$ac_ext >&5 - eval "$as_ac_Header=no" -fi -rm -f conftest.err conftest.$ac_ext -fi -echo "$as_me:13590: 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 <&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 13609 "configure" -#include "confdefs.h" -/* System header to define __stub macros and hopefully few prototypes, - which can conflict with char $ac_func (); below. */ -#include -/* 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 $ac_func (); -char (*f) (); - -int -main () -{ -/* The GNU C library defines this 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_$ac_func) || defined (__stub___$ac_func) -choke me -#else -f = $ac_func; -#endif - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:13640: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13643: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:13646: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13649: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - eval "$as_ac_var=yes" -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -eval "$as_ac_var=no" -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi -echo "$as_me:13659: 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 <&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 -else - if test "$cross_compiling" = yes; then - ac_cv_func_fork_works=cross -else - cat >conftest.$ac_ext <<_ACEOF -/* By Rüdiger Kuhlmann. */ - #include - #if HAVE_UNISTD_H - # include - #endif - /* Some systems only have a dummy stub for fork() */ - int main () - { - if (fork() < 0) - $ac_main_return (1); - $ac_main_return (0); - } -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:13694: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13697: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13699: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13702: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_fork_works=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_fork_works=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:13714: result: $ac_cv_func_fork_works" >&5 -echo "${ECHO_T}$ac_cv_func_fork_works" >&6 - -fi -if test "x$ac_cv_func_fork_works" = xcross; then - case $host in - *-*-amigaos* | *-*-msdosdjgpp*) - # Override, as these systems have only a dummy fork() stub - ac_cv_func_fork_works=no - ;; - *) - ac_cv_func_fork_works=yes - ;; - esac - { echo "$as_me:13728: 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:13733: 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 -else - if test "$cross_compiling" = yes; then - ac_cv_func_vfork_works=cross -else - cat >conftest.$ac_ext <<_ACEOF -#line 13742 "configure" -#include "confdefs.h" -/* Thanks to Paul Eggert for this test. */ -#include -#include -#include -#if HAVE_UNISTD_H -# include -#endif -#if HAVE_VFORK_H -# include -#endif -/* On some sparc systems, changes by the child to local and incoming - argument registers are propagated back to the parent. The compiler - is told about this with #include , but some compilers - (e.g. gcc -O) don't grok . Test for this by using a - static variable whose address is put into a register that is - clobbered by the vfork. */ -static -#ifdef __cplusplus -sparc_address_test (int arg) -# else -sparc_address_test (arg) int arg; -#endif -{ - static pid_t child; - if (!child) { - child = vfork (); - if (child < 0) { - perror ("vfork"); - _exit(2); - } - if (!child) { - arg = getpid(); - write(-1, "", 0); - _exit (arg); - } - } -} - -int -main () -{ - pid_t parent = getpid (); - pid_t child; - - sparc_address_test (); - - child = vfork (); - - if (child == 0) { - /* Here is another test for sparc vfork register problems. This - test uses lots of local variables, at least as many local - variables as main has allocated so far including compiler - temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris - 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should - reuse the register of parent for one of the local variables, - since it will think that parent can't possibly be used any more - in this routine. Assigning to the local variable will thus - munge parent in the parent process. */ - pid_t - p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), - p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); - /* Convince the compiler that p..p7 are live; otherwise, it might - use the same hardware register for all 8 local variables. */ - if (p != p1 || p != p2 || p != p3 || p != p4 - || p != p5 || p != p6 || p != p7) - _exit(1); - - /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent - from child file descriptors. If the child closes a descriptor - before it execs or exits, this munges the parent's descriptor - as well. Test for this by closing stdout in the child. */ - _exit(close(fileno(stdout)) != 0); - } else { - int status; - struct stat st; - - while (wait(&status) != child) - ; - $ac_main_return( - /* Was there some problem with vforking? */ - child < 0 - - /* Did the child fail? (This shouldn't happen.) */ - || status - - /* Did the vfork/compiler bug occur? */ - || parent != getpid() - - /* Did the file descriptor bug occur? */ - || fstat(fileno(stdout), &st) != 0 - ); - } -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:13839: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13842: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13844: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13847: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - ac_cv_func_vfork_works=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -ac_cv_func_vfork_works=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -fi -echo "$as_me:13859: 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:13865: 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 - -if test "x$ac_cv_func_vfork_works" = xyes; then - -cat >>confdefs.h <<\EOF -#define HAVE_WORKING_VFORK 1 -EOF - -else - -cat >>confdefs.h <<\EOF -#define vfork fork -EOF - -fi -if test "x$ac_cv_func_fork_works" = xyes; then - -cat >>confdefs.h <<\EOF -#define HAVE_WORKING_FORK 1 -EOF - -fi - -echo "$as_me:13890: 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 13897 "configure" -#include "confdefs.h" - -#include -#ifdef HAVE_SYS_TIME_H -#include -#endif -#ifdef HAVE_SYS_SELECT_H -#include -#endif - -int -main () -{ - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:13917: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:13920: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:13923: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13926: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_sys_time_select=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_sys_time_select=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext - -fi - -echo "$as_me:13938: 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 -#define HAVE_SYS_TIME_SELECT 1 -EOF - -echo "$as_me:13944: checking for function curses_version" >&5 -echo $ECHO_N "checking for function curses_version... $ECHO_C" >&6 -if test "${cf_cv_func_curses_version+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -if test "$cross_compiling" = yes; then - cf_cv_func_curses_version=unknown -else - cat >conftest.$ac_ext <<_ACEOF -#line 13954 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> -int main() -{ - char temp[1024]; - sprintf(temp, "%s\n", curses_version()); - ${cf_cv_main_return:-return}(0); -} - -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:13967: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:13970: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:13972: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:13975: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_func_curses_version=yes - -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_func_curses_version=no - -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi -rm -f core -fi -echo "$as_me:13990: result: $cf_cv_func_curses_version" >&5 -echo "${ECHO_T}$cf_cv_func_curses_version" >&6 -test "$cf_cv_func_curses_version" = yes && cat >>confdefs.h <<\EOF -#define HAVE_CURSES_VERSION 1 -EOF - -echo "$as_me:13996: checking for ncurses wrap-prefix" >&5 -echo $ECHO_N "checking for ncurses wrap-prefix... $ECHO_C" >&6 - -# Check whether --with-ncurses-wrap-prefix or --without-ncurses-wrap-prefix was given. -if test "${with_ncurses_wrap_prefix+set}" = set; then - withval="$with_ncurses_wrap_prefix" - NCURSES_WRAP_PREFIX=$withval -else - NCURSES_WRAP_PREFIX=_nc_ -fi; -echo "$as_me:14006: result: $NCURSES_WRAP_PREFIX" >&5 -echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6 - -echo "$as_me:14009: checking for alternate character set array" >&5 -echo $ECHO_N "checking for alternate character set array... $ECHO_C" >&6 -if test "${cf_cv_curses_acs_map+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_curses_acs_map=unknown -for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map -do -cat >conftest.$ac_ext <<_ACEOF -#line 14019 "configure" -#include "confdefs.h" - -#include <${cf_cv_ncurses_header:-curses.h}> - -int -main () -{ - -$name['k'] = ACS_PLUS - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14035: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14038: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14041: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14044: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_curses_acs_map=$name; break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -done - -fi -echo "$as_me:14055: result: $cf_cv_curses_acs_map" >&5 -echo "${ECHO_T}$cf_cv_curses_acs_map" >&6 - -test "$cf_cv_curses_acs_map" != unknown && cat >>confdefs.h <&5 -echo $ECHO_N "checking for wide alternate character set array... $ECHO_C" >&6 -if test "${cf_cv_curses_wacs_map+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - - cf_cv_curses_wacs_map=unknown - for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char - do - cat >conftest.$ac_ext <<_ACEOF -#line 14072 "configure" -#include "confdefs.h" - -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -void *foo = &($name['k']) - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14088: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14091: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14094: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14097: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_curses_wacs_map=$name - break -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - done -fi -echo "$as_me:14108: result: $cf_cv_curses_wacs_map" >&5 -echo "${ECHO_T}$cf_cv_curses_wacs_map" >&6 - -test "$cf_cv_curses_wacs_map" != unknown && cat >>confdefs.h <&5 -echo $ECHO_N "checking for wide alternate character constants... $ECHO_C" >&6 -if test "${cf_cv_curses_wacs_symbols+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - -cf_cv_curses_wacs_symbols=no -if test "$cf_cv_curses_wacs_map" != unknown -then - cat >conftest.$ac_ext <<_ACEOF -#line 14125 "configure" -#include "confdefs.h" - -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -cchar_t *foo = WACS_PLUS; - $cf_cv_curses_wacs_map['k'] = *WACS_PLUS - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14142: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14145: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14148: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14151: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_curses_wacs_symbols=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -else - cat >conftest.$ac_ext <<_ACEOF -#line 14161 "configure" -#include "confdefs.h" - -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ -cchar_t *foo = WACS_PLUS - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14177: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14180: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14183: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14186: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_curses_wacs_symbols=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext -fi - -fi -echo "$as_me:14197: result: $cf_cv_curses_wacs_symbols" >&5 -echo "${ECHO_T}$cf_cv_curses_wacs_symbols" >&6 - -test "$cf_cv_curses_wacs_symbols" != no && cat >>confdefs.h <<\EOF -#define CURSES_WACS_SYMBOLS 1 -EOF - -echo "$as_me:14204: checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}" >&5 -echo $ECHO_N "checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line 14207 "configure" -#include "confdefs.h" - -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - -attr_t foo - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14225: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14228: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14231: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14234: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:14243: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 -if test $cf_result = yes ; then - -cf_result=`echo "have_type_attr_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <>confdefs.h <&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 14268 "configure" -#include "confdefs.h" - -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -mbstate_t state - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14286: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14289: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14292: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14295: \$? = $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 14302 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -mbstate_t value - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14321: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14324: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14327: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14330: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_mbstate_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_mbstate_t=unknown -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:14342: result: $cf_cv_mbstate_t" >&5 -echo "${ECHO_T}$cf_cv_mbstate_t" >&6 - -if test "$cf_cv_mbstate_t" = yes ; then - cat >>confdefs.h <<\EOF -#define NEED_WCHAR_H 1 -EOF - - NEED_WCHAR_H=1 -fi - -# if we do not find mbstate_t in either place, use substitution to provide a fallback. -if test "$cf_cv_mbstate_t" = unknown ; then - NCURSES_MBSTATE_T=1 -fi - -# if we find mbstate_t in either place, use substitution to provide a fallback. -if test "$cf_cv_mbstate_t" != unknown ; then - NCURSES_OK_MBSTATE_T=1 -fi - -# This is needed on Tru64 5.0 to declare wchar_t -echo "$as_me:14364: 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 14371 "configure" -#include "confdefs.h" - -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wchar_t state - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14389: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14392: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14395: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14398: \$? = $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 14405 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wchar_t value - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14424: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14427: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14430: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14433: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_wchar_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_wchar_t=unknown -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:14445: result: $cf_cv_wchar_t" >&5 -echo "${ECHO_T}$cf_cv_wchar_t" >&6 - -if test "$cf_cv_wchar_t" = yes ; then - cat >>confdefs.h <<\EOF -#define NEED_WCHAR_H 1 -EOF - - NEED_WCHAR_H=1 -fi - -# if we do not find wchar_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wchar_t" = unknown ; then - NCURSES_WCHAR_T=1 -fi - -# if we find wchar_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wchar_t" != unknown ; then - NCURSES_OK_WCHAR_T=1 -fi - -# This is needed on Tru64 5.0 to declare wint_t -echo "$as_me:14467: 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 14474 "configure" -#include "confdefs.h" - -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wint_t state - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14492: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14495: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14498: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14501: \$? = $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 14508 "configure" -#include "confdefs.h" - -#include -#include -#include -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -int -main () -{ -wint_t value - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14527: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14530: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14533: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14536: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_cv_wint_t=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_cv_wint_t=unknown -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -rm -f conftest.$ac_objext conftest.$ac_ext -fi -echo "$as_me:14548: result: $cf_cv_wint_t" >&5 -echo "${ECHO_T}$cf_cv_wint_t" >&6 - -if test "$cf_cv_wint_t" = yes ; then - cat >>confdefs.h <<\EOF -#define NEED_WCHAR_H 1 -EOF - - NEED_WCHAR_H=1 -fi - -# if we do not find wint_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wint_t" = unknown ; then - NCURSES_WINT_T=1 -fi - -# if we find wint_t in either place, use substitution to provide a fallback. -if test "$cf_cv_wint_t" != unknown ; then - NCURSES_OK_WINT_T=1 -fi - -if test "$NCURSES_OK_MBSTATE_T" = 0 ; then - -echo "$as_me:14571: checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}" >&5 -echo $ECHO_N "checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line 14574 "configure" -#include "confdefs.h" - -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - -mbstate_t foo - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14592: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14595: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14598: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14601: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:14610: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 -if test $cf_result = yes ; then - -cf_result=`echo "have_type_mbstate_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <>confdefs.h <&5 -echo $ECHO_N "checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line 14634 "configure" -#include "confdefs.h" - -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - -wchar_t foo - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14652: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14655: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14658: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14661: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:14670: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 -if test $cf_result = yes ; then - -cf_result=`echo "have_type_wchar_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <>confdefs.h <&5 -echo $ECHO_N "checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 -cat >conftest.$ac_ext <<_ACEOF -#line 14694 "configure" -#include "confdefs.h" - -#ifndef _XOPEN_SOURCE_EXTENDED -#define _XOPEN_SOURCE_EXTENDED -#endif -#include <${cf_cv_ncurses_header:-curses.h}> -int -main () -{ - -wint_t foo - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14712: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14715: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14718: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14721: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:14730: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 -if test $cf_result = yes ; then - -cf_result=`echo "have_type_wint_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <>confdefs.h <&5 -echo $ECHO_N "checking for data boolnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 - -cat >conftest.$ac_ext <<_ACEOF -#line 14753 "configure" -#include "confdefs.h" - -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif - -int -main () -{ - -void *foo = &(boolnames) - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14781: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14784: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14787: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14790: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:14799: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - -if test $cf_result = yes ; then - -cf_result=`echo "have_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <&5 -echo $ECHO_N "checking for data boolnames in library... $ECHO_C" >&6 - # BSD linkers insist on making weak linkage, but resolve at runtime. - if test "$cross_compiling" = yes; then - - # cross-compiling - cat >conftest.$ac_ext <<_ACEOF -#line 14818 "configure" -#include "confdefs.h" - -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif - -extern char boolnames; -int -main () -{ - - do { - void *foo = &(boolnames); - ${cf_cv_main_return:-return}(foo == 0); - } while (0) - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:14850: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14853: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:14856: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14859: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -else - cat >conftest.$ac_ext <<_ACEOF -#line 14871 "configure" -#include "confdefs.h" - -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif - -extern char boolnames; -int main(void) -{ - void *foo = &(boolnames); - ${cf_cv_main_return:-return}(foo == 0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:14896: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:14899: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:14901: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14904: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - echo "$as_me:14915: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - if test $cf_result = yes ; then - -cf_result=`echo "decl_curses_data_boolnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <&5 -echo $ECHO_N "checking for data boolfnames declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 - -cat >conftest.$ac_ext <<_ACEOF -#line 14932 "configure" -#include "confdefs.h" - -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif - -int -main () -{ - -void *foo = &(boolfnames) - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext -if { (eval echo "$as_me:14960: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 - ac_status=$? - echo "$as_me:14963: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:14966: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:14969: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest.$ac_ext -echo "$as_me:14978: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - -if test $cf_result = yes ; then - -cf_result=`echo "have_curses_data_boolfnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <&5 -echo $ECHO_N "checking for data boolfnames in library... $ECHO_C" >&6 - # BSD linkers insist on making weak linkage, but resolve at runtime. - if test "$cross_compiling" = yes; then - - # cross-compiling - cat >conftest.$ac_ext <<_ACEOF -#line 14997 "configure" -#include "confdefs.h" - -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif - -extern char boolfnames; -int -main () -{ - - do { - void *foo = &(boolfnames); - ${cf_cv_main_return:-return}(foo == 0); - } while (0) - - ; - return 0; -} -_ACEOF -rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:15029: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15032: \$? = $ac_status" >&5 - (exit $ac_status); } && - { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:15035: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15038: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f conftest.$ac_objext conftest$ac_exeext conftest.$ac_ext - -else - cat >conftest.$ac_ext <<_ACEOF -#line 15050 "configure" -#include "confdefs.h" - -#ifdef HAVE_XCURSES -#include -char * XCursesProgramName = "test"; -#else -#include <${cf_cv_ncurses_header:-curses.h}> -#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif -#endif - -extern char boolfnames; -int main(void) -{ - void *foo = &(boolfnames); - ${cf_cv_main_return:-return}(foo == 0); -} -_ACEOF -rm -f conftest$ac_exeext -if { (eval echo "$as_me:15075: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 - ac_status=$? - echo "$as_me:15078: \$? = $ac_status" >&5 - (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:15080: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 - ac_status=$? - echo "$as_me:15083: \$? = $ac_status" >&5 - (exit $ac_status); }; }; then - cf_result=yes -else - echo "$as_me: program exited with status $ac_status" >&5 -echo "$as_me: failed program was:" >&5 -cat conftest.$ac_ext >&5 -cf_result=no -fi -rm -f core core.* *.core conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext -fi - echo "$as_me:15094: result: $cf_result" >&5 -echo "${ECHO_T}$cf_result" >&6 - if test $cf_result = yes ; then - -cf_result=`echo "decl_curses_data_boolfnames" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` - - cat >>confdefs.h <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 -# scripts and configure runs, see configure's option --config-cache. -# It is not useful on other systems. If it contains results you don't -# want to keep, you may remove or edit it. -# -# config.status only pays attention to the cache file if you give it -# the --recheck option to rerun configure. -# -# `ac_cv_env_foo' variables (set or unset) will be overriden when -# loading this file, other *unset* `ac_cv_foo' will be assigned the -# following values. - -_ACEOF - -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -{ - (set) 2>&1 | - case `(ac_space=' '; set | grep ac_space) 2>&1` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote - # substitution turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - "s/'/'\\\\''/g; - s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n \ - "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" - ;; - esac; -} | - sed ' - t clear - : clear - s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ - t end - /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ - : end' >>confcache -if cmp -s $cache_file confcache; then :; else - if test -w $cache_file; then - test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" - cat confcache >$cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# VPATH may cause trouble with some makes, so we remove $(srcdir), -# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and -# trailing colons and then remove the whole line if VPATH becomes empty -# (actually we leave an empty line to preserve line numbers). -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=/{ -s/:*\$(srcdir):*/:/; -s/:*\${srcdir}:*/:/; -s/:*@srcdir@:*/:/; -s/^\([^=]*=[ ]*\):*/\1/; -s/:*$//; -s/^[^=]*=[ ]*$//; -}' -fi - -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:15191: creating $CONFIG_STATUS" >&5 -echo "$as_me: creating $CONFIG_STATUS" >&6;} -cat >$CONFIG_STATUS <<_ACEOF -#! $SHELL -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# Compiler output produced by configure, useful for debugging -# configure, is in config.log if it exists. - -debug=false -SHELL=\${CONFIG_SHELL-$SHELL} -ac_cs_invocation="\$0 \$@" - -_ACEOF - -cat >>$CONFIG_STATUS <<\_ACEOF -# Be Bourne compatible -if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then - emulate sh - NULLCMD=: -elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then - set -o posix -fi - -# Name of the executable. -as_me=`echo "$0" |sed 's,.*[\\/],,'` - -if expr a : '\(a\)' >/dev/null 2>&1; then - as_expr=expr -else - as_expr=false -fi - -rm -f conf$$ conf$$.exe conf$$.file -echo >conf$$.file -if ln -s conf$$.file conf$$ 2>/dev/null; then - # We could just check for DJGPP; but this test a) works b) is more generic - # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). - if test -f conf$$.exe; then - # Don't use ln at all; we don't have any links - as_ln_s='cp -p' - else - as_ln_s='ln -s' - fi -elif ln conf$$.file conf$$ 2>/dev/null; then - as_ln_s=ln -else - as_ln_s='cp -p' -fi -rm -f conf$$ conf$$.exe conf$$.file - -as_executable_p="test -f" - -# Support unset when possible. -if (FOO=FOO; unset FOO) >/dev/null 2>&1; then - as_unset=unset -else - as_unset=false -fi - -# NLS nuisances. -$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } -$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } -$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } -$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } -$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } -$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } -$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } -$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } - -# IFS -# We need space, tab and new line, in precisely that order. -as_nl=' -' -IFS=" $as_nl" - -# CDPATH. -$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } - -exec 6>&1 - -_ACEOF - -# Files that config.status was made for. -if test -n "$ac_config_files"; then - echo "config_files=\"$ac_config_files\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_headers"; then - echo "config_headers=\"$ac_config_headers\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_links"; then - echo "config_links=\"$ac_config_links\"" >>$CONFIG_STATUS -fi - -if test -n "$ac_config_commands"; then - echo "config_commands=\"$ac_config_commands\"" >>$CONFIG_STATUS -fi - -cat >>$CONFIG_STATUS <<\EOF - -ac_cs_usage="\ -\`$as_me' instantiates files from templates according to the -current configuration. - -Usage: $0 [OPTIONS] [FILE]... - - -h, --help print this help, then exit - -V, --version print version number, then exit - -d, --debug don't remove temporary files - --recheck update $as_me by reconfiguring in the same conditions - --file=FILE[:TEMPLATE] - instantiate the configuration file FILE - --header=FILE[:TEMPLATE] - instantiate the configuration header FILE - -Configuration files: -$config_files - -Configuration headers: -$config_headers - -Configuration commands: -$config_commands - -Report bugs to ." -EOF - -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -# If no file are specified by the user, then we need to provide default -# value. By we need to know if files were specified by the user. -ac_need_defaults=: -while test $# != 0 -do - case $1 in - --*=*) - ac_option=`expr "x$1" : 'x\([^=]*\)='` - ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` - shift - set dummy "$ac_option" "$ac_optarg" ${1+"$@"} - shift - ;; - -*);; - *) # This is not an option, so the user has probably given explicit - # arguments. - ac_need_defaults=false;; - esac - - case $1 in - # Handling of the options. -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF - --version | --vers* | -V ) - echo "$ac_cs_version"; exit 0 ;; - --he | --h) - # Conflict between --help and --header - { { echo "$as_me:15367: 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;} - { (exit 1); exit 1; }; };; - --help | --hel | -h ) - echo "$ac_cs_usage"; exit 0 ;; - --debug | --d* | -d ) - debug=: ;; - --file | --fil | --fi | --f ) - shift - CONFIG_FILES="$CONFIG_FILES $1" - ac_need_defaults=false;; - --header | --heade | --head | --hea ) - shift - CONFIG_HEADERS="$CONFIG_HEADERS $1" - ac_need_defaults=false;; - - # This is an error. - -*) { { echo "$as_me:15386: 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;} - { (exit 1); exit 1; }; } ;; - - *) ac_config_targets="$ac_config_targets $1" ;; - - esac - shift -done - -exec 5>>config.log -cat >&5 << _ACEOF - -## ----------------------- ## -## Running config.status. ## -## ----------------------- ## - -This file was extended by $as_me 2.52.20101002, executed with - CONFIG_FILES = $CONFIG_FILES - CONFIG_HEADERS = $CONFIG_HEADERS - CONFIG_LINKS = $CONFIG_LINKS - CONFIG_COMMANDS = $CONFIG_COMMANDS - > $ac_cs_invocation -on `(hostname || uname -n) 2>/dev/null | sed 1q` - -_ACEOF -EOF - -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -for ac_config_target in $ac_config_targets -do - case "$ac_config_target" in - # Handling of arguments. - "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; - "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; - "ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ncurses_cfg.h:ncurses_tst.hin" ;; - *) { { echo "$as_me:15434: error: invalid argument: $ac_config_target" >&5 -echo "$as_me: error: invalid argument: $ac_config_target" >&2;} - { (exit 1); exit 1; }; };; - esac -done - -# If the user did not use the arguments to specify the items to instantiate, -# then the envvar interface is used. Set only those that are not. -# We use the long form for the default assignment because of an extremely -# bizarre bug on SunOS 4.1.3. -if $ac_need_defaults; then - test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files - test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers - test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands -fi - -# Create a temporary directory, and hook for its removal unless debugging. -$debug || -{ - trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 - trap '{ (exit 1); exit 1; }' 1 2 13 15 -} - -# Create a (secure) tmp directory for tmp files. -: ${TMPDIR=/tmp} -{ - tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && - test -n "$tmp" && test -d "$tmp" -} || -{ - tmp=$TMPDIR/cs$$-$RANDOM - (umask 077 && mkdir $tmp) -} || -{ - echo "$me: cannot create a temporary directory in $TMPDIR" >&2 - { (exit 1); exit 1; } -} - -EOF - -cat >>$CONFIG_STATUS <\$tmp/subs.sed <<\\CEOF -s,@SHELL@,$SHELL,;t t -s,@exec_prefix@,$exec_prefix,;t t -s,@prefix@,$prefix,;t t -s,@program_transform_name@,$program_transform_name,;t t -s,@bindir@,$bindir,;t t -s,@sbindir@,$sbindir,;t t -s,@libexecdir@,$libexecdir,;t t -s,@datadir@,$datadir,;t t -s,@sysconfdir@,$sysconfdir,;t t -s,@sharedstatedir@,$sharedstatedir,;t t -s,@localstatedir@,$localstatedir,;t t -s,@libdir@,$libdir,;t t -s,@includedir@,$includedir,;t t -s,@oldincludedir@,$oldincludedir,;t t -s,@infodir@,$infodir,;t t -s,@mandir@,$mandir,;t t -s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t -s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t -s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t -s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t -s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t -s,@build_alias@,$build_alias,;t t -s,@host_alias@,$host_alias,;t t -s,@target_alias@,$target_alias,;t t -s,@ECHO_C@,$ECHO_C,;t t -s,@ECHO_N@,$ECHO_N,;t t -s,@ECHO_T@,$ECHO_T,;t t -s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t -s,@DEFS@,$DEFS,;t t -s,@LIBS@,$LIBS,;t t -s,@build@,$build,;t t -s,@build_cpu@,$build_cpu,;t t -s,@build_vendor@,$build_vendor,;t t -s,@build_os@,$build_os,;t t -s,@host@,$host,;t t -s,@host_cpu@,$host_cpu,;t t -s,@host_vendor@,$host_vendor,;t t -s,@host_os@,$host_os,;t t -s,@SET_MAKE@,$SET_MAKE,;t t -s,@CC@,$CC,;t t -s,@CFLAGS@,$CFLAGS,;t t -s,@LDFLAGS@,$LDFLAGS,;t t -s,@CPPFLAGS@,$CPPFLAGS,;t t -s,@ac_ct_CC@,$ac_ct_CC,;t t -s,@EXEEXT@,$EXEEXT,;t t -s,@OBJEXT@,$OBJEXT,;t t -s,@CPP@,$CPP,;t t -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,@LINT@,$LINT,;t t -s,@LINT_OPTS@,$LINT_OPTS,;t t -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,@MATH_LIB@,$MATH_LIB,;t t -s,@CC_G_OPT@,$CC_G_OPT,;t t -s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t -s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t -s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t -s,@DFT_UPR_MODEL@,$DFT_UPR_MODEL,;t t -s,@LD@,$LD,;t t -s,@LDFLAGS_SHARED@,$LDFLAGS_SHARED,;t t -s,@LDFLAGS_STATIC@,$LDFLAGS_STATIC,;t t -s,@LD_MODEL@,$LD_MODEL,;t t -s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t -s,@LIBTOOL@,$LIBTOOL,;t t -s,@LIB_CLEAN@,$LIB_CLEAN,;t t -s,@LIB_COMPILE@,$LIB_COMPILE,;t t -s,@LIB_LINK@,$LIB_LINK,;t t -s,@LINK_TESTS@,$LINK_TESTS,;t t -s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t -s,@PTHREAD@,$PTHREAD,;t t -s,@TEST_ARGS@,$TEST_ARGS,;t t -s,@TEST_DEPS@,$TEST_DEPS,;t t -s,@TEST_LIBS@,$TEST_LIBS,;t t -s,@TINFO_ARGS@,$TINFO_ARGS,;t t -s,@cf_cv_abi_version@,$cf_cv_abi_version,;t t -s,@cf_cv_rel_version@,$cf_cv_rel_version,;t t -s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t -s,@ECHO_LT@,$ECHO_LT,;t t -s,@ECHO_LD@,$ECHO_LD,;t t -s,@RULE_CC@,$RULE_CC,;t t -s,@SHOW_CC@,$SHOW_CC,;t t -s,@ECHO_CC@,$ECHO_CC,;t t -s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t -s,@NCURSES_CONFIG@,$NCURSES_CONFIG,;t t -s,@PKG_CONFIG@,$PKG_CONFIG,;t t -s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t -s,@X_CFLAGS@,$X_CFLAGS,;t t -s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t -s,@X_LIBS@,$X_LIBS,;t t -s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t -s,@XCURSES_CONFIG@,$XCURSES_CONFIG,;t t -s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t -CEOF - -EOF - - cat >>$CONFIG_STATUS <<\EOF - # Split the substitutions into bite-sized pieces for seds with - # small command number limits, like on Digital OSF/1 and HP-UX. - ac_max_sed_lines=48 - ac_sed_frag=1 # Number of current file. - ac_beg=1 # First line for current file. - ac_end=$ac_max_sed_lines # Line after last line for current file. - ac_more_lines=: - ac_sed_cmds= - while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - else - sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag - fi - if test ! -s $tmp/subs.frag; then - ac_more_lines=false - else - # The purpose of the label and of the branching condition is to - # speed up the sed processing (if there are no `@' at all, there - # 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 - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" - else - ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" - fi - ac_sed_frag=`expr $ac_sed_frag + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_lines` - fi - done - if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat - fi -fi # test -n "$CONFIG_FILES" - -EOF -cat >>$CONFIG_STATUS <<\EOF -for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` - else - ac_dir_suffix= ac_dots= - fi - - case $srcdir in - .) ac_srcdir=. - if test -z "$ac_dots"; then - ac_top_srcdir=. - else - ac_top_srcdir=`echo $ac_dots | sed 's,/$,,'` - fi ;; - [\\/]* | ?:[\\/]* ) - ac_srcdir=$srcdir$ac_dir_suffix; - ac_top_srcdir=$srcdir ;; - *) # Relative path. - ac_srcdir=$ac_dots$srcdir$ac_dir_suffix - ac_top_srcdir=$ac_dots$srcdir ;; - esac - - case $INSTALL in - [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; - *) ac_INSTALL=$ac_dots$INSTALL ;; - esac - - if test x"$ac_file" != x-; then - { echo "$as_me:15697: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - rm -f "$ac_file" - fi - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - configure_input="Generated automatically from `echo $ac_file_in | - sed 's,.*/,,'` by configure." - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:15715: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:15728: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } -EOF -cat >>$CONFIG_STATUS <>$CONFIG_STATUS <<\EOF -:t -/@[a-zA-Z_][a-zA-Z_0-9]*@/!b -s,@configure_input@,$configure_input,;t t -s,@srcdir@,$ac_srcdir,;t t -s,@top_srcdir@,$ac_top_srcdir,;t t -s,@INSTALL@,$ac_INSTALL,;t t -" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out - rm -f $tmp/stdin - if test x"$ac_file" != x-; then - mv $tmp/out $ac_file - else - cat $tmp/out - rm -f $tmp/out - fi - -done -EOF -cat >>$CONFIG_STATUS <<\EOF - -# -# CONFIG_HEADER section. -# - -# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where -# NAME is the cpp macro being defined and VALUE is the value it is being given. -# -# ac_d sets the value in "#define NAME VALUE" lines. -ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' -ac_dB='[ ].*$,\1#\2' -ac_dC=' ' -ac_dD=',;t' -# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". -ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_iB='\([ ]\),\1#\2define\3' -ac_iC=' ' -ac_iD='\4,;t' -# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". -ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' -ac_uB='$,\1#\2define\3' -ac_uC=' ' -ac_uD=',;t' - -for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case $ac_file in - - | *:- | *:-:* ) # input from stdin - cat >$tmp/stdin - ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` - ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; - * ) ac_file_in=$ac_file.in ;; - esac - - test x"$ac_file" != x- && { echo "$as_me:15794: creating $ac_file" >&5 -echo "$as_me: creating $ac_file" >&6;} - - # First look for the input files in the build tree, otherwise in the - # src tree. - ac_file_inputs=`IFS=: - for f in $ac_file_in; do - case $f in - -) echo $tmp/stdin ;; - [\\/$]*) - # Absolute (can't be DOS-style, as IFS=:) - test -f "$f" || { { echo "$as_me:15805: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - echo $f;; - *) # Relative - if test -f "$f"; then - # Build tree - echo $f - elif test -f "$srcdir/$f"; then - # Source tree - echo $srcdir/$f - else - # /dev/null tree - { { echo "$as_me:15818: error: cannot find input file: $f" >&5 -echo "$as_me: error: cannot find input file: $f" >&2;} - { (exit 1); exit 1; }; } - fi;; - esac - done` || { (exit 1); exit 1; } - # Remove the trailing spaces. - sed 's/[ ]*$//' $ac_file_inputs >$tmp/in - -EOF - -# Transform confdefs.h into a list of #define's. We won't use it as a sed -# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to -# be either 'cat' or 'sort'. -cat confdefs.h | uniq >conftest.vals - -# Break up conftest.vals because some shells have a limit on -# the size of here documents, and old seds have small limits too. - -rm -f conftest.tail -echo ' rm -f conftest.frag' >> $CONFIG_STATUS -while grep . conftest.vals >/dev/null -do - # Write chunks of a limited-size here document to conftest.frag. - echo ' cat >> conftest.frag <> $CONFIG_STATUS - sed ${ac_max_here_lines}q conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> $CONFIG_STATUS - echo 'CEOF' >> $CONFIG_STATUS - sed 1,${ac_max_here_lines}d conftest.vals > conftest.tail - rm -f conftest.vals - mv conftest.tail conftest.vals -done -rm -f conftest.vals - -# Run sed to substitute the contents of conftest.frag into $tmp/in at the -# marker @DEFS@. -echo ' cat >> conftest.edit < $tmp/out -rm -f $tmp/in -mv $tmp/out $tmp/in -rm -f conftest.edit conftest.frag -' >> $CONFIG_STATUS - -cat >>$CONFIG_STATUS <<\EOF - # Let's still pretend it is `configure' which instantiates (i.e., don't - # use $as_me), people would be surprised to read: - # /* config.h. Generated automatically by config.status. */ - if test x"$ac_file" = x-; then - echo "/* Generated automatically by configure. */" >$tmp/config.h - else - echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h - fi - cat $tmp/in >>$tmp/config.h - 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:15876: $ac_file is unchanged" >&5 -echo "$as_me: $ac_file is unchanged" >&6;} - else - ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ - X"$ac_file" : 'X\(//\)[^/]' \| \ - X"$ac_file" : 'X\(//\)$' \| \ - X"$ac_file" : 'X\(/\)' \| \ - . : '\(.\)' 2>/dev/null || -echo X"$ac_file" | - sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } - /^X\(\/\/\)[^/].*/{ s//\1/; q; } - /^X\(\/\/\)$/{ s//\1/; q; } - /^X\(\/\).*/{ s//\1/; q; } - s/.*/./; q'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - { case "$ac_dir" in - [\\/]* | ?:[\\/]* ) as_incr_dir=;; - *) as_incr_dir=.;; -esac -as_dummy="$ac_dir" -for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do - case $as_mkdir_dir in - # Skip DOS drivespec - ?:) as_incr_dir=$as_mkdir_dir ;; - *) - as_incr_dir=$as_incr_dir/$as_mkdir_dir - test -d "$as_incr_dir" || mkdir "$as_incr_dir" - ;; - esac -done; } - - fi - rm -f $ac_file - mv $tmp/config.h $ac_file - fi - else - cat $tmp/config.h - rm -f $tmp/config.h - fi -done -EOF -cat >>$CONFIG_STATUS <<\EOF -# -# CONFIG_COMMANDS section. -# -for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue - ac_dest=`echo "$ac_file" | sed 's,:.*,,'` - ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` - - case $ac_dest in - default ) - -for cf_dir in . -do - if test ! -d $srcdir/$cf_dir; then - continue - elif test -f $srcdir/$cf_dir/programs; then - $AWK -f $srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD" $srcdir/$cf_dir/programs >>$cf_dir/Makefile - fi -done - - cat >>Makefile <>Makefile <>Makefile <>$CONFIG_STATUS <<\EOF - -{ (exit 0); exit 0; } -EOF -chmod +x $CONFIG_STATUS -ac_clean_files=$ac_clean_files_save - -# configure is writing to config.log, and then calls config.status. -# config.status does its own redirection, appending to config.log. -# Unfortunately, on DOS this fails, as config.log is still kept open -# by configure, so config.status won't be able to write to it; its -# output is simply discarded. So we exec the FD to /dev/null, -# effectively closing config.log, so it can be properly (re)opened and -# appended to by config.status. When coming back to configure, we -# need to make the FD available again. -if test "$no_create" != yes; then - ac_cs_success=: - exec 5>/dev/null - $SHELL $CONFIG_STATUS || ac_cs_success=false - exec 5>>config.log - # Use ||, not &&, to avoid exiting from the if with $? = 1, which - # would make configure fail if this is the last instruction. - $ac_cs_success || { (exit 1); exit 1; } -fi - diff --git a/deps/ncurses-5.9/test/configure.in b/deps/ncurses-5.9/test/configure.in deleted file mode 100644 index 5ffd3e8..0000000 --- a/deps/ncurses-5.9/test/configure.in +++ /dev/null @@ -1,321 +0,0 @@ -dnl*************************************************************************** -dnl Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * -dnl * -dnl Permission is hereby granted, free of charge, to any person obtaining a * -dnl copy of this software and associated documentation files (the * -dnl "Software"), to deal in the Software without restriction, including * -dnl without limitation the rights to use, copy, modify, merge, publish, * -dnl distribute, distribute with modifications, sublicense, and/or sell * -dnl copies of the Software, and to permit persons to whom the Software is * -dnl furnished to do so, subject to the following conditions: * -dnl * -dnl The above copyright notice and this permission notice shall be included * -dnl in all copies or substantial portions of the Software. * -dnl * -dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * -dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * -dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * -dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * -dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * -dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * -dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * -dnl * -dnl Except as contained in this notice, the name(s) of the above copyright * -dnl holders shall not be used in advertising or otherwise to promote the * -dnl sale, use or other dealings in this Software without prior written * -dnl authorization. * -dnl*************************************************************************** -dnl -dnl Author: Thomas E. Dickey 1996, etc. -dnl -dnl $Id: configure.in,v 1.90 2011/03/22 09:15:08 tom Exp $ -dnl This is a simple configuration-script for the ncurses test programs that -dnl allows the test-directory to be separately configured against a reference -dnl system (i.e., sysvr4 curses) -dnl -dnl If you're configuring ncurses, you shouldn't need to use this script. -dnl It's only for testing purposes. -dnl -dnl See http://invisible-island.net/autoconf/ for additional information. -dnl --------------------------------------------------------------------------- -AC_PREREQ(2.13.20020210) -AC_INIT(ncurses.c) -AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin) - -CF_INHERIT_SCRIPT(config.guess) -CF_INHERIT_SCRIPT(config.sub) -CF_CHECK_CACHE - -AC_ARG_PROGRAM - -AC_PROG_MAKE_SET -AC_PROG_CC -AC_PROG_CPP -AC_PROG_AWK -CF_PROG_INSTALL -CF_PROG_LINT -CF_MAKE_TAGS - -CF_MATH_LIB(MATH_LIB,sin(x)) -AC_SUBST(MATH_LIB) - -dnl Things that we don't need (or must override) if we're not building ncurses -CC_G_OPT="-g" AC_SUBST(CC_G_OPT) -CC_SHARED_OPTS=unknown AC_SUBST(CC_SHARED_OPTS) -CPPFLAGS="$CPPFLAGS" AC_SUBST(CPPFLAGS) -DFT_DEP_SUFFIX="" AC_SUBST(DFT_DEP_SUFFIX) -DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'` AC_SUBST(DFT_OBJ_SUBDIR) -DFT_UPR_MODEL="NORMAL" AC_SUBST(DFT_UPR_MODEL) -LD="ld" AC_SUBST(LD) -LDFLAGS_SHARED="" AC_SUBST(LDFLAGS_SHARED) -LDFLAGS_STATIC="" AC_SUBST(LDFLAGS_STATIC) -LD_MODEL="" AC_SUBST(LD_MODEL) -LD_SHARED_OPTS="" AC_SUBST(LD_SHARED_OPTS) -LIBTOOL="" AC_SUBST(LIBTOOL) -LIB_CLEAN="" AC_SUBST(LIB_CLEAN) -LIB_COMPILE="" AC_SUBST(LIB_COMPILE) -LIB_LINK='${CC}' AC_SUBST(LIB_LINK) -LINK_TESTS="" AC_SUBST(LINK_TESTS) -LOCAL_LDFLAGS="" AC_SUBST(LOCAL_LDFLAGS) -PTHREAD="-lm" AC_SUBST(PTHREAD) -TEST_ARGS="" AC_SUBST(TEST_ARGS) -TEST_DEPS="" AC_SUBST(TEST_DEPS) -TEST_LIBS="" AC_SUBST(TEST_LIBS) -TINFO_ARGS='$(LIBS_CURSES)' AC_SUBST(TINFO_ARGS) -cf_cv_abi_version="" AC_SUBST(cf_cv_abi_version) -cf_cv_rel_version="" AC_SUBST(cf_cv_rel_version) - -cf_cv_screen=curses -cf_cv_libtype= - -AC_EXEEXT -AC_OBJEXT - -CF_ANSI_CC_REQD -CF_GCC_ATTRIBUTES -CF_XOPEN_SOURCE -AC_C_CONST -CF_SIG_ATOMIC_T - -CF_DISABLE_ECHO -CF_ENABLE_WARNINGS - -CF_DISABLE_LEAKS -CF_WITH_CURSES_DIR - -dnl SunOS 4.x -AC_ARG_WITH(5lib, - [ --with-5lib use SunOS sysv-libraries], - [LIBS="-L/usr/5lib $LIBS" - CPPFLAGS="$CPPFLAGS -I/usr/5include"]) - -dnl --------------------------------------------------------------------------- -dnl NcursesW, installed in conventional location -AC_ARG_WITH(ncursesw, - [ --with-ncursesw use wide ncurses-libraries (installed)], - [cf_cv_screen=ncursesw],[ - -dnl Ncurses, installed in conventional location -AC_ARG_WITH(ncurses, - [ --with-ncurses use ncurses-libraries (installed)], - [cf_cv_screen=ncurses],[ - -AC_ARG_WITH(pdcurses, - [ --with-pdcurses compile/link with pdcurses X11 library], - [cf_cv_screen=pdcurses])])]) - -case $cf_cv_screen in -curses) - CF_CURSES_CONFIG - CF_NETBSD_FORM_H - CF_NETBSD_MENU_H - ;; -ncurses) - CF_NCURSES_CONFIG - ;; -ncursesw) - cf_cv_libtype=w - CF_UTF8_LIB - CF_NCURSES_CONFIG(ncursesw) - ;; -pdcurses) #(vi - CF_PDCURSES_X11 - ;; -esac - -dnl If we've not specified a library, assume we're using sysvr4 libraries -dnl installed conventionally (e.g., SunOS 5.x - solaris). - -dnl Autoconf builds up the $LIBS in reverse order - -case $cf_cv_screen in #(vi -pdcurses) #(vi - ;; -*) - # look for curses-related libraries - AC_CHECK_LIB(panel$cf_cv_libtype,new_panel) - AC_CHECK_LIB(menu$cf_cv_libtype,menu_driver) - AC_CHECK_LIB(form$cf_cv_libtype,form_driver) - - # look for curses-related headers - AC_CHECK_HEADERS( \ - nc_alloc.h \ - nomacros.h \ - form.h \ - menu.h \ - panel.h \ - term_entry.h \ - ) - ;; -esac - -AC_TYPE_SIGNAL - -AC_STDC_HEADERS -AC_HEADER_TIME -AC_CHECK_HEADERS( \ -getopt.h \ -locale.h \ -math.h \ -stdarg.h \ -sys/ioctl.h \ -sys/select.h \ -sys/time.h \ -termios.h \ -unistd.h \ -) - -AC_CHECK_FUNCS( \ -gettimeofday \ -mblen \ -mbrlen \ -mbrtowc \ -mbsrtowcs \ -mbstowcs \ -mbtowc \ -strdup \ -wcsrtombs \ -wcstombs \ -) - -CF_CURSES_FUNCS( \ -chgat \ -color_set \ -filter \ -getbegx \ -getcurx \ -getmaxx \ -getnstr \ -getparx \ -getwin \ -mvvline \ -mvwvline \ -napms \ -putwin \ -resize_term \ -resizeterm \ -ripoffline \ -scr_dump \ -setupterm \ -slk_color \ -slk_init \ -termattrs \ -tgetent \ -tigetnum \ -tigetstr \ -typeahead \ -use_default_colors \ -vw_printw \ -vsscanf \ -wchgat \ -winsstr \ -wresize \ -wsyncdown \ -) - -CF_NCURSES_EXT_FUNCS - -AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[ -AC_TRY_LINK([ -#include <${cf_cv_ncurses_header:-curses.h}>], -[ - static wchar_t src_wchar[2]; - static cchar_t dst_cchar; - setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0); - ], - [cf_cv_widechar_funcs=yes], - [cf_cv_widechar_funcs=no]) -]) -if test "$cf_cv_widechar_funcs" != no ; then - AC_DEFINE(USE_WIDEC_SUPPORT,1) -else - AC_DEFINE(USE_WIDEC_SUPPORT,0) -fi - -AC_FUNC_VFORK -CF_SYS_TIME_SELECT -CF_FUNC_CURSES_VERSION -CF_CURSES_ACS_MAP -CF_CURSES_WACS_MAP -CF_CURSES_WACS_SYMBOLS - -CF_CURSES_CHECK_TYPE(attr_t,long) - -CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T) -CF_WCHAR_TYPE(wchar_t, NCURSES_WCHAR_T, NCURSES_OK_WCHAR_T) -CF_WCHAR_TYPE(wint_t, NCURSES_WINT_T, NCURSES_OK_WINT_T) - -if test "$NCURSES_OK_MBSTATE_T" = 0 ; then - CF_CURSES_CHECK_TYPE(mbstate_t,long) -fi - -if test "$NCURSES_OK_WCHAR_T" = 0 ; then - CF_CURSES_CHECK_TYPE(wchar_t,long) -fi - -if test "$NCURSES_OK_WINT_T" = 0 ; then - CF_CURSES_CHECK_TYPE(wint_t,long) -fi - -CF_CURSES_CHECK_DATA(boolnames) -CF_CURSES_CHECK_DATA(boolfnames) - -TEST_ARGS="$LIBS" -LIBS= - -dnl --------------------------------------------------------------------------- - -AC_OUTPUT(Makefile,[ -CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .) - cat >>Makefile <>Makefile <>Makefile < - -#if USE_LIBFORM - -#include - -static int d_option = 0; -static int j_value = 0; -static int m_value = 0; -static int o_value = 0; -static char *t_value = 0; - -static FIELD * -make_label(int frow, int fcol, NCURSES_CONST char *label) -{ - FIELD *f = new_field(1, (int) strlen(label), frow, fcol, 0, 0); - - if (f) { - set_field_buffer(f, 0, label); - set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE)); - } - return (f); -} - -/* - * Define each field with an extra one, for reflecting "actual" text. - */ -static FIELD * -make_field(int frow, int fcol, int rows, int cols) -{ - FIELD *f = new_field(rows, cols, frow, fcol, o_value, 1); - - if (f) { - FieldAttrs *ptr; - - set_field_back(f, A_UNDERLINE); - /* - * If -j and -d options are combined, -j loses. It is documented in - * "Character User Interface Programming", page 12-15 that setting - * O_STATIC off makes the form library ignore justification. - */ - set_field_just(f, j_value); - if (d_option) { - if (has_colors()) { - set_field_fore(f, COLOR_PAIR(2)); - set_field_back(f, A_UNDERLINE | COLOR_PAIR(3)); - } else { - set_field_fore(f, A_BOLD); - } - /* - * The field_opts_off() call dumps core with Solaris curses, - * but that is a known bug in Solaris' form library -TD - */ - field_opts_off(f, O_STATIC); - set_max_field(f, m_value); - } - - /* - * The userptr is used in edit_field.c's inactive_field(). - */ - ptr = (FieldAttrs *) field_userptr(f); - if (ptr == 0) { - ptr = typeCalloc(FieldAttrs, 1); - ptr->background = field_back(f); - } - set_field_userptr(f, (void *) ptr); - if (t_value) - set_field_buffer(f, 0, t_value); - } - return (f); -} - -static void -display_form(FORM * f) -{ - WINDOW *w; - int rows, cols; - - scale_form(f, &rows, &cols); - - /* - * Put the form at the upper-left corner of the display, with just a box - * around it. - */ - if ((w = newwin(rows + 2, cols + 4, 0, 0)) != (WINDOW *) 0) { - set_form_win(f, w); - set_form_sub(f, derwin(w, rows, cols, 1, 2)); - box(w, 0, 0); - keypad(w, TRUE); - } - - if (post_form(f) != E_OK) - wrefresh(w); -} - -static void -erase_form(FORM * f) -{ - WINDOW *w = form_win(f); - WINDOW *s = form_sub(f); - - unpost_form(f); - werase(w); - wrefresh(w); - delwin(s); - delwin(w); -} - -static void -show_insert_mode(bool insert_mode) -{ - MvAddStr(5, 57, (insert_mode - ? "form_status: insert " - : "form_status: overlay")); -} - -#define O_SELECTABLE (O_ACTIVE | O_VISIBLE) - -static FIELD * -another_field(FORM * form, FIELD * field) -{ - FIELD **f = form_fields(form); - FIELD *result = 0; - int n; - - for (n = 0; f[n] != 0; ++n) { - if (f[n] != field) { - result = f[n]; - field_opts_on(result, O_SELECTABLE); - break; - } - } - return result; -} - -static int -my_form_driver(FORM * form, int c) -{ - static bool insert_mode = TRUE; - FIELD *field; - - switch (c) { - case MY_QUIT: - if (form_driver(form, REQ_VALIDATION) == E_OK) - return (TRUE); - break; - case MY_HELP: - help_edit_field(); - break; - case MY_EDT_MODE: - if ((field = current_field(form)) != 0) { - set_current_field(form, another_field(form, field)); - if ((unsigned) field_opts(field) & O_EDIT) { - field_opts_off(field, O_EDIT); - set_field_status(field, 0); - } else { - field_opts_on(field, O_EDIT); - } - set_current_field(form, field); - } - break; - case MY_INS_MODE: - /* there should be a form_status() function, but there is none */ - if (!insert_mode) { - if (form_driver(form, REQ_INS_MODE) == E_OK) { - insert_mode = TRUE; - } - } else { - if (form_driver(form, REQ_OVL_MODE) == E_OK) { - insert_mode = FALSE; - } - } - show_insert_mode(insert_mode); - refresh(); - break; - default: - beep(); - break; - } - return (FALSE); -} - -static void -show_current_field(WINDOW *win, FORM * form) -{ - FIELD *field; - FIELDTYPE *type; - char *buffer; - int nbuf; - int field_rows, field_cols, field_max; - int currow, curcol; - - if (has_colors()) { - wbkgd(win, COLOR_PAIR(1)); - } - werase(win); - form_getyx(form, currow, curcol); - wprintw(win, "Cursor: %d,%d", currow, curcol); - if (data_ahead(form)) - waddstr(win, " ahead"); - if (data_behind(form)) - waddstr(win, " behind"); - waddch(win, '\n'); - if ((field = current_field(form)) != 0) { - wprintw(win, "Page %d%s, Field %d/%d%s:", - form_page(form), - new_page(field) ? "*" : "", - field_index(field), field_count(form), - field_arg(field) ? "(arg)" : ""); - if ((type = field_type(field)) != 0) { - if (type == TYPE_ALNUM) - waddstr(win, "ALNUM"); - else if (type == TYPE_ALPHA) - waddstr(win, "ALPHA"); - else if (type == TYPE_ENUM) - waddstr(win, "ENUM"); - else if (type == TYPE_INTEGER) - waddstr(win, "INTEGER"); -#ifdef NCURSES_VERSION - else if (type == TYPE_IPV4) - waddstr(win, "IPV4"); -#endif - else if (type == TYPE_NUMERIC) - waddstr(win, "NUMERIC"); - else if (type == TYPE_REGEXP) - waddstr(win, "REGEXP"); - else - waddstr(win, "other"); - } - - if ((unsigned) field_opts(field) & O_EDIT) - waddstr(win, " editable"); - else - waddstr(win, " readonly"); - - if (field_status(field)) - waddstr(win, " modified"); - - if (dynamic_field_info(field, &field_rows, &field_cols, &field_max) - != ERR) { - wprintw(win, " size %dx%d (max %d)", - field_rows, field_cols, field_max); - } - - waddch(win, ' '); - (void) wattrset(win, field_fore(field)); - waddstr(win, "fore"); - wattroff(win, field_fore(field)); - - waddch(win, '/'); - - (void) wattrset(win, field_back(field)); - waddstr(win, "back"); - wattroff(win, field_back(field)); - - wprintw(win, ", pad '%c'", - field_pad(field)); - - waddstr(win, "\n"); - for (nbuf = 0; nbuf <= 2; ++nbuf) { - if ((buffer = field_buffer(field, nbuf)) != 0) { - wprintw(win, "buffer %d:", nbuf); - (void) wattrset(win, A_REVERSE); - waddstr(win, buffer); - wattroff(win, A_REVERSE); - waddstr(win, "\n"); - } - } - } - wrefresh(win); -} - -static void -demo_forms(void) -{ - WINDOW *w; - FORM *form; - FIELD *f[100]; /* FIXME memset to zero */ - int finished = 0, c; - unsigned n = 0; - int pg; - WINDOW *also; - -#ifdef NCURSES_MOUSE_VERSION - mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); -#endif - - help_edit_field(); - - MvAddStr(4, 57, "Forms Entry Test"); - show_insert_mode(TRUE); - - refresh(); - - /* describe the form */ - memset(f, 0, sizeof(f)); - for (pg = 0; pg < 4; ++pg) { - char label[80]; - sprintf(label, "Sample Form Page %d", pg + 1); - f[n++] = make_label(0, 15, label); - set_new_page(f[n - 1], TRUE); - - switch (pg) { - default: - f[n++] = make_label(2, 0, "Last Name"); - f[n++] = make_field(3, 0, 1, 18); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - - f[n++] = make_label(2, 20, "First Name"); - f[n++] = make_field(3, 20, 1, 12); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - - f[n++] = make_label(2, 34, "Middle Name"); - f[n++] = make_field(3, 34, 1, 12); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - break; - case 1: - f[n++] = make_label(2, 0, "Last Name"); - f[n++] = make_field(3, 0, 1, 18); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - - f[n++] = make_label(2, 20, "First Name"); - f[n++] = make_field(3, 20, 1, 12); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - - f[n++] = make_label(2, 34, "MI"); - f[n++] = make_field(3, 34, 1, 1); - set_field_pad(f[n - 1], '?'); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - break; - case 2: - f[n++] = make_label(2, 0, "Host Name"); - f[n++] = make_field(3, 0, 1, 18); - set_field_type(f[n - 1], TYPE_ALNUM, 1); - -#ifdef NCURSES_VERSION - f[n++] = make_label(2, 20, "IP Address"); - f[n++] = make_field(3, 20, 1, 12); - set_field_type(f[n - 1], TYPE_IPV4, 1); -#endif - - break; - - case 3: - f[n++] = make_label(2, 0, "Four digits"); - f[n++] = make_field(3, 0, 1, 18); - set_field_type(f[n - 1], TYPE_INTEGER, 4, 0, 0); - - f[n++] = make_label(2, 20, "Numeric"); - f[n++] = make_field(3, 20, 1, 12); - set_field_type(f[n - 1], TYPE_NUMERIC, 3, -10000.0, 100000000.0); - - break; - } - - f[n++] = make_label(5, 0, "Comments"); - f[n++] = make_field(6, 0, 4, 46); - set_field_buffer(f[n - 1], 0, "HELLO\nWORLD!"); - set_field_buffer(f[n - 1], 1, "Hello\nWorld!"); - } - - f[n] = (FIELD *) 0; - - if ((form = new_form(f)) != 0) { - - display_form(form); - - w = form_win(form); - also = newwin(getmaxy(stdscr) - getmaxy(w), COLS, getmaxy(w), 0); - show_current_field(also, form); - - while (!finished) { - switch (edit_field(form, &c)) { - case E_OK: - break; - case E_UNKNOWN_COMMAND: - finished = my_form_driver(form, c); - break; - default: - beep(); - break; - } - show_current_field(also, form); - } - - erase_form(form); - - free_form(form); - } - for (c = 0; f[c] != 0; c++) { - void *ptr = field_userptr(f[c]); - free(ptr); - free_field(f[c]); - } - noraw(); - nl(); - -#ifdef NCURSES_MOUSE_VERSION - mousemask(0, (mmask_t *) 0); -#endif -} - -static void -usage(void) -{ - static const char *tbl[] = - { - "Usage: demo_forms [options]" - ,"" - ," -d make fields dynamic" - ," -j value justify (1=left, 2=center, 3=right)" - ," -m value set maximum size of dynamic fields" - ," -o value specify number of offscreen rows in new_field()" - ," -t value specify text to fill fields initially" - }; - unsigned int j; - for (j = 0; j < SIZEOF(tbl); ++j) - fprintf(stderr, "%s\n", tbl[j]); - exit(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - int ch; - - setlocale(LC_ALL, ""); - - while ((ch = getopt(argc, argv, "dj:m:o:t:")) != -1) { - switch (ch) { - case 'd': - d_option = TRUE; - break; - case 'j': - j_value = atoi(optarg); - if (j_value < NO_JUSTIFICATION - || j_value > JUSTIFY_RIGHT) - usage(); - break; - case 'm': - m_value = atoi(optarg); - break; - case 'o': - o_value = atoi(optarg); - break; - case 't': - t_value = optarg; - break; - default: - usage(); - - } - } - - initscr(); - cbreak(); - noecho(); - raw(); - nonl(); /* lets us read ^M's */ - intrflush(stdscr, FALSE); - keypad(stdscr, TRUE); - - if (has_colors()) { - start_color(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - init_pair(2, COLOR_GREEN, COLOR_BLACK); - init_pair(3, COLOR_CYAN, COLOR_BLACK); - bkgd(COLOR_PAIR(1)); - refresh(); - } - - demo_forms(); - - endwin(); - ExitProgram(EXIT_SUCCESS); -} -#else -int -main(void) -{ - printf("This program requires the curses form library\n"); - ExitProgram(EXIT_FAILURE); -} -#endif diff --git a/deps/ncurses-5.9/test/demo_keyok b/deps/ncurses-5.9/test/demo_keyok deleted file mode 100755 index 75968c2..0000000 Binary files a/deps/ncurses-5.9/test/demo_keyok and /dev/null differ diff --git a/deps/ncurses-5.9/test/demo_menus b/deps/ncurses-5.9/test/demo_menus deleted file mode 100755 index 037b0a7..0000000 Binary files a/deps/ncurses-5.9/test/demo_menus and /dev/null differ diff --git a/deps/ncurses-5.9/test/demo_menus.c b/deps/ncurses-5.9/test/demo_menus.c deleted file mode 100644 index 4f75807..0000000 --- a/deps/ncurses-5.9/test/demo_menus.c +++ /dev/null @@ -1,902 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2005-2010,2011 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. * - ****************************************************************************/ -/* - * $Id: demo_menus.c,v 1.32 2011/01/15 20:02:47 tom Exp $ - * - * Demonstrate a variety of functions from the menu library. - * Thomas Dickey - 2005/4/9 - */ -/* -item_description - -item_init - -item_opts - -item_opts_off - -item_opts_on - -item_term - -item_userptr - -item_visible - -menu_back - -menu_fore - -menu_format - -menu_grey - -menu_init - -menu_opts - -menu_pad - -menu_request_by_name - -menu_request_name - -menu_sub - -menu_term - -menu_userptr - -set_current_item - -set_item_init - -set_item_opts - -set_item_term - -set_item_userptr - -set_menu_grey - -set_menu_init - -set_menu_items - -set_menu_opts - -set_menu_pad - -set_menu_pattern - -set_menu_spacing - -set_menu_term - -set_menu_userptr - -set_top_row - -top_row - -*/ - -#include - -#if USE_LIBMENU - -#include - -#include -#include - -#ifdef NCURSES_VERSION -#ifdef TRACE -static unsigned save_trace = TRACE_ORDINARY | TRACE_CALLS; -extern unsigned _nc_tracing; -static MENU *mpTrace; -#endif -#else -#undef TRACE -#endif - -typedef enum { - eBanner = -1 - ,eFile - ,eSelect -#ifdef TRACE - ,eTrace -#endif - ,eMAX -} MenuNo; - -#define okMenuNo(n) (((n) > eBanner) && ((n) < eMAX)) - -#define MENU_Y 1 - -static MENU *mpBanner; -static MENU *mpFile; -static MENU *mpSelect; - -static bool loaded_file = FALSE; - -#if !HAVE_STRDUP -#define strdup my_strdup -static char * -strdup(char *s) -{ - char *p = typeMalloc(char, strlen(s) + 1); - if (p) - strcpy(p, s); - return (p); -} -#endif /* not HAVE_STRDUP */ - -/* Common function to allow ^T to toggle trace-mode in the middle of a test - * so that trace-files can be made smaller. - */ -static int -wGetchar(WINDOW *win) -{ - int c; -#ifdef TRACE - while ((c = wgetch(win)) == CTRL('T')) { - if (_nc_tracing) { - save_trace = _nc_tracing; - Trace(("TOGGLE-TRACING OFF")); - _nc_tracing = 0; - } else { - _nc_tracing = save_trace; - } - trace(_nc_tracing); - if (_nc_tracing) - Trace(("TOGGLE-TRACING ON")); - } -#else - c = wgetch(win); -#endif - return c; -} -#define Getchar() wGetchar(stdscr) - -static int -menu_virtualize(int c) -{ - int result; - - if (c == '\n' || c == KEY_EXIT) - result = (MAX_COMMAND + 1); - else if (c == 'u') - result = (REQ_SCR_ULINE); - else if (c == 'd') - result = (REQ_SCR_DLINE); - else if (c == 'b' || c == KEY_NPAGE) - result = (REQ_SCR_UPAGE); - else if (c == 'f' || c == KEY_PPAGE) - result = (REQ_SCR_DPAGE); - else if (c == 'l' || c == KEY_LEFT || c == KEY_BTAB) - result = (REQ_LEFT_ITEM); - else if (c == 'n' || c == KEY_DOWN) - result = (REQ_NEXT_ITEM); - else if (c == 'p' || c == KEY_UP) - result = (REQ_PREV_ITEM); - else if (c == 'r' || c == KEY_RIGHT || c == '\t') - result = (REQ_RIGHT_ITEM); - else if (c == ' ') - result = (REQ_TOGGLE_ITEM); - else { - if (c != KEY_MOUSE) - beep(); - result = (c); - } - return result; -} - -static int -menu_getc(MENU * m) -{ - return wGetchar(menu_win(m)); -} - -static int -menu_offset(MenuNo number) -{ - int result = 0; - - if (okMenuNo(number)) { - int spc_desc, spc_rows, spc_cols; - -#ifdef NCURSES_VERSION - menu_spacing(mpBanner, &spc_desc, &spc_rows, &spc_cols); -#else - spc_rows = 0; -#endif - - /* FIXME: MENU.itemlen seems the only way to get actual width of items */ - result = (number - (eBanner + 1)) * (menu_itemwidth(mpBanner) + spc_rows); - } - return result; -} - -static MENU * -menu_create(ITEM ** items, int count, int ncols, MenuNo number) -{ - MENU *result; - WINDOW *menuwin; - int mrows, mcols; - int y = okMenuNo(number) ? MENU_Y : 0; - int x = menu_offset(number); - int margin = (y == MENU_Y) ? 1 : 0; - int maxcol = (ncols + x) < COLS ? ncols : (COLS - x - 1); - int maxrow = (count + 1) / ncols; - - if ((maxrow + y) >= (LINES - 4)) - maxrow = LINES - 4 - y; - - result = new_menu(items); - - if (has_colors()) { - set_menu_fore(result, COLOR_PAIR(1)); - set_menu_back(result, COLOR_PAIR(2)); - } - - set_menu_format(result, maxrow, maxcol); - scale_menu(result, &mrows, &mcols); - - if (mcols + (2 * margin + x) >= COLS) - mcols = COLS - (2 * margin + x); - -#ifdef TRACE - if (number == eTrace) - menu_opts_off(result, O_ONEVALUE); - else - menu_opts_on(result, O_ONEVALUE); -#endif - - menuwin = newwin(mrows + (2 * margin), mcols + (2 * margin), y, x); - set_menu_win(result, menuwin); - keypad(menuwin, TRUE); - if (margin) - box(menuwin, 0, 0); - - set_menu_sub(result, derwin(menuwin, mrows, mcols, margin, margin)); - - post_menu(result); - - return result; -} - -static void -menu_destroy(MENU * m) -{ - int count; - - Trace(("menu_destroy %p", (void *) m)); - if (m != 0) { - ITEM **items = menu_items(m); - const char *blob = 0; - - count = item_count(m); - Trace(("menu_destroy %p count %d", (void *) m, count)); - if ((count > 0) && (m == mpSelect)) { - blob = item_name(*items); - } - - unpost_menu(m); - free_menu(m); - - /* free the extra data allocated in build_select_menu() */ - if ((count > 0) && (m == mpSelect)) { - if (blob && loaded_file) { - Trace(("freeing blob %p", blob)); - free((char *) blob); - } - free(items); - } -#ifdef TRACE - if ((count > 0) && (m == mpTrace)) { - ITEM **ip = items; - while (*ip) - free(*ip++); - } -#endif - } -} - -/* force the given menu to appear */ -static void -menu_display(MENU * m) -{ - touchwin(menu_win(m)); - wrefresh(menu_win(m)); -} - -/*****************************************************************************/ - -static void -build_file_menu(MenuNo number) -{ - static CONST_MENUS char *labels[] = - { - "Exit", - (char *) 0 - }; - static ITEM *items[SIZEOF(labels)]; - - ITEM **ip = items; - CONST_MENUS char **ap; - - for (ap = labels; *ap; ap++) - *ip++ = new_item(*ap, ""); - *ip = (ITEM *) 0; - - mpFile = menu_create(items, SIZEOF(labels) - 1, 1, number); -} - -static int -perform_file_menu(int cmd) -{ - return menu_driver(mpFile, cmd); -} - -/*****************************************************************************/ - -static void -build_select_menu(MenuNo number, char *filename) -{ - static CONST_MENUS char *labels[] = - { - "Lions", - "Tigers", - "Bears", - "(Oh my!)", - "Newts", - "Platypi", - "Lemurs", - "(Oh really?!)", - "Leopards", - "Panthers", - "Pumas", - "Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs", - "Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs, Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs", - (char *) 0 - }; - static ITEM **items; - - ITEM **ip; - CONST_MENUS char **ap = 0; - CONST_MENUS char **myList = 0; - unsigned count = 0; - - if (filename != 0) { - struct stat sb; - if (stat(filename, &sb) == 0 - && (sb.st_mode & S_IFMT) == S_IFREG - && sb.st_size != 0) { - size_t size = (size_t) sb.st_size; - unsigned j, k; - char *blob = typeMalloc(char, size + 1); - CONST_MENUS char **list = typeCalloc(CONST_MENUS char *, size + 1); - - items = typeCalloc(ITEM *, size + 1); - Trace(("build_select_menu blob=%p, items=%p", - (void *) blob, - (void *) items)); - if (blob != 0 && list != 0) { - FILE *fp = fopen(filename, "r"); - if (fp != 0) { - if (fread(blob, sizeof(char), size, fp) == size) { - bool mark = TRUE; - for (j = k = 0; j < size; ++j) { - if (mark) { - list[k++] = blob + j; - mark = FALSE; - } - if (blob[j] == '\n') { - blob[j] = '\0'; - if (k > 0 && *list[k - 1] == '\0') - --k; - mark = TRUE; - } else if (blob[j] == '\t') { - blob[j] = ' '; /* menu items are printable */ - } - } - list[k] = 0; - count = k; - ap = myList = list; - } - fclose(fp); - } - loaded_file = TRUE; - } - } - } - if (ap == 0) { - count = SIZEOF(labels) - 1; - items = typeCalloc(ITEM *, count + 1); - ap = labels; - } - - ip = items; - while (*ap != 0) - *ip++ = new_item(*ap++, ""); - *ip = 0; - - mpSelect = menu_create(items, (int) count, 1, number); - if (myList != 0) - free(myList); -} - -static int -perform_select_menu(int cmd) -{ - return menu_driver(mpSelect, cmd); -} - -/*****************************************************************************/ - -#ifdef TRACE -#define T_TBL(name) { #name, name } -static struct { - const char *name; - unsigned mask; -} t_tbl[] = { - - T_TBL(TRACE_DISABLE), - T_TBL(TRACE_TIMES), - T_TBL(TRACE_TPUTS), - T_TBL(TRACE_UPDATE), - T_TBL(TRACE_MOVE), - T_TBL(TRACE_CHARPUT), - T_TBL(TRACE_ORDINARY), - T_TBL(TRACE_CALLS), - T_TBL(TRACE_VIRTPUT), - T_TBL(TRACE_IEVENT), - T_TBL(TRACE_BITS), - T_TBL(TRACE_ICALLS), - T_TBL(TRACE_CCALLS), - T_TBL(TRACE_DATABASE), - T_TBL(TRACE_ATTRS), - T_TBL(TRACE_MAXIMUM), - { - (char *) 0, 0 - } -}; - -static void -build_trace_menu(MenuNo number) -{ - static ITEM *items[SIZEOF(t_tbl)]; - - ITEM **ip = items; - int n; - - for (n = 0; t_tbl[n].name != 0; n++) - *ip++ = new_item(t_tbl[n].name, ""); - *ip = (ITEM *) 0; - - mpTrace = menu_create(items, SIZEOF(t_tbl) - 1, 2, number); -} - -static char * -tracetrace(unsigned tlevel) -{ - static char *buf; - int n; - - if (buf == 0) { - size_t need = 12; - for (n = 0; t_tbl[n].name != 0; n++) - need += strlen(t_tbl[n].name) + 2; - buf = typeMalloc(char, need); - } - sprintf(buf, "0x%02x = {", tlevel); - if (tlevel == 0) { - sprintf(buf + strlen(buf), "%s, ", t_tbl[0].name); - } else { - for (n = 1; t_tbl[n].name != 0; n++) - if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) { - strcat(buf, t_tbl[n].name); - strcat(buf, ", "); - } - } - if (buf[strlen(buf) - 2] == ',') - buf[strlen(buf) - 2] = '\0'; - return (strcat(buf, "}")); -} - -/* fake a dynamically reconfigurable menu using the 0th entry to deselect - * the others - */ -static bool -update_trace_menu(MENU * m) -{ - ITEM **items; - ITEM *i, **p; - bool changed = FALSE; - - items = menu_items(m); - i = current_item(m); - if (i == items[0]) { - if (item_value(i)) { - for (p = items + 1; *p != 0; p++) - if (item_value(*p)) { - set_item_value(*p, FALSE); - changed = TRUE; - } - } - } - return changed; -} - -static int -perform_trace_menu(int cmd) -/* interactively set the trace level */ -{ - ITEM **ip; - unsigned newtrace; - int result; - - for (ip = menu_items(mpTrace); *ip; ip++) { - unsigned mask = t_tbl[item_index(*ip)].mask; - if (mask == 0) - set_item_value(*ip, _nc_tracing == 0); - else if ((mask & _nc_tracing) == mask) - set_item_value(*ip, TRUE); - } - - result = menu_driver(mpTrace, cmd); - - if (result == E_OK) { - if (update_trace_menu(mpTrace) || cmd == REQ_TOGGLE_ITEM) { - newtrace = 0; - for (ip = menu_items(mpTrace); *ip; ip++) { - if (item_value(*ip)) - newtrace |= t_tbl[item_index(*ip)].mask; - } - trace(newtrace); - Trace(("trace level interactively set to %s", tracetrace(_nc_tracing))); - - MvPrintw(LINES - 2, 0, - "Trace level is %s\n", tracetrace(_nc_tracing)); - refresh(); - } - } - return result; -} -#endif /* TRACE */ - -/*****************************************************************************/ - -static int -menu_number(void) -{ - return item_index(current_item(mpBanner)) - (eBanner + 1); -} - -static MENU * -current_menu(void) -{ - MENU *result; - - switch (menu_number()) { - case eFile: - result = mpFile; - break; - case eSelect: - result = mpSelect; - break; -#ifdef TRACE - case eTrace: - result = mpTrace; - break; -#endif - default: - result = 0; - break; - } - return result; -} - -static void -build_menus(char *filename) -{ - static CONST_MENUS char *labels[] = - { - "File", - "Select", -#ifdef TRACE - "Trace", -#endif - (char *) 0 - }; - static ITEM *items[SIZEOF(labels)]; - - ITEM **ip = items; - CONST_MENUS char **ap; - - for (ap = labels; *ap; ap++) - *ip++ = new_item(*ap, ""); - *ip = (ITEM *) 0; - - mpBanner = menu_create(items, SIZEOF(labels) - 1, SIZEOF(labels) - 1, eBanner); - set_menu_mark(mpBanner, ">"); - - build_file_menu(eFile); - build_select_menu(eSelect, filename); -#ifdef TRACE - build_trace_menu(eTrace); -#endif -} - -static int -move_menu(MENU * menu, MENU * current, int by_y, int by_x) -{ - WINDOW *top_win = menu_win(menu); - WINDOW *sub_win = menu_sub(menu); - int y0, x0; - int y1, x1; - int result; - - getbegyx(top_win, y0, x0); - y0 += by_y; - x0 += by_x; - - getbegyx(sub_win, y1, x1); - y1 += by_y; - x1 += by_x; - - if ((result = mvwin(top_win, y0, x0)) != ERR) { -#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH < 20060218) - sub_win->_begy = y1; - sub_win->_begx = x1; -#else - mvwin(sub_win, y1, x1); -#endif - if (menu == current) { - touchwin(top_win); - wnoutrefresh(top_win); - } - } - return result; -} - -/* - * Move the menus around on the screen, to test mvwin(). - */ -static void -move_menus(MENU * current, int by_y, int by_x) -{ - if (move_menu(mpBanner, current, by_y, by_x) != ERR) { - erase(); - wnoutrefresh(stdscr); - move_menu(mpFile, current, by_y, by_x); - move_menu(mpSelect, current, by_y, by_x); -#ifdef TRACE - move_menu(mpTrace, current, by_y, by_x); -#endif - doupdate(); - } -} - -static void -show_status(int ch, MENU * menu) -{ - move(LINES - 1, 0); - printw("key %s, menu %d, mark %s, match %s", - keyname(ch), - menu_number(), - menu_mark(menu), - menu_pattern(menu)); - clrtoeol(); - refresh(); -} - -static void -perform_menus(void) -{ - MENU *this_menu; - MENU *last_menu = mpFile; - int code = E_UNKNOWN_COMMAND; - int cmd; - int ch = ERR; - -#ifdef NCURSES_MOUSE_VERSION - mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); -#endif - - menu_display(last_menu); - - for (;;) { - - if (ch != ERR) - show_status(ch, last_menu); - - ch = menu_getc(mpBanner); - - /* - * Provide for moving the menu around in the screen using shifted - * cursor keys. - */ - switch (ch) { - case KEY_SF: - move_menus(last_menu, 1, 0); - continue; - case KEY_SR: - move_menus(last_menu, -1, 0); - continue; - case KEY_SLEFT: - move_menus(last_menu, 0, -1); - continue; - case KEY_SRIGHT: - move_menus(last_menu, 0, 1); - continue; - } - cmd = menu_virtualize(ch); - - switch (cmd) { - /* - * The banner menu acts solely to select one of the other menus. - * Move between its items, wrapping at the left/right limits. - */ - case REQ_LEFT_ITEM: - case REQ_RIGHT_ITEM: - code = menu_driver(mpBanner, cmd); - if (code == E_REQUEST_DENIED) { - if (menu_number() > 0) - code = menu_driver(mpBanner, REQ_FIRST_ITEM); - else - code = menu_driver(mpBanner, REQ_LAST_ITEM); - } - break; - default: - switch (menu_number()) { - case eFile: - code = perform_file_menu(cmd); - break; - case eSelect: - code = perform_select_menu(cmd); - break; -#ifdef TRACE - case eTrace: - code = perform_trace_menu(cmd); - break; -#endif - } - - if ((code == E_REQUEST_DENIED) && (cmd == KEY_MOUSE)) { - code = menu_driver(mpBanner, cmd); - } - - break; - } - - if (code == E_OK) { - this_menu = current_menu(); - if (this_menu != last_menu) { - move(1, 0); - clrtobot(); - box(menu_win(this_menu), 0, 0); - refresh(); - - /* force the current menu to appear */ - menu_display(this_menu); - - last_menu = this_menu; - } - } - wrefresh(menu_win(last_menu)); - if (code == E_UNKNOWN_COMMAND - || code == E_NOT_POSTED) { - if (menu_number() == eFile) - break; - beep(); - } - if (code == E_REQUEST_DENIED) - beep(); - continue; - } - -#ifdef NCURSES_MOUSE_VERSION - mousemask(0, (mmask_t *) 0); -#endif -} - -static void -destroy_menus(void) -{ - menu_destroy(mpFile); - menu_destroy(mpSelect); -#ifdef TRACE - menu_destroy(mpTrace); -#endif - menu_destroy(mpBanner); -} - -#if HAVE_RIPOFFLINE -static int -rip_footer(WINDOW *win, int cols) -{ - wbkgd(win, A_REVERSE); - werase(win); - wmove(win, 0, 0); - wprintw(win, "footer: %d columns", cols); - wnoutrefresh(win); - return OK; -} - -static int -rip_header(WINDOW *win, int cols) -{ - wbkgd(win, A_REVERSE); - werase(win); - wmove(win, 0, 0); - wprintw(win, "header: %d columns", cols); - wnoutrefresh(win); - return OK; -} -#endif /* HAVE_RIPOFFLINE */ - -static void -usage(void) -{ - static const char *const tbl[] = - { - "Usage: demo_menus [options]" - ,"" - ,"Options:" -#if HAVE_RIPOFFLINE - ," -f rip-off footer line (can repeat)" - ," -h rip-off header line (can repeat)" -#endif -#ifdef TRACE - ," -t mask specify default trace-level (may toggle with ^T)" -#endif - }; - size_t n; - for (n = 0; n < SIZEOF(tbl); n++) - fprintf(stderr, "%s\n", tbl[n]); - ExitProgram(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - int c; - - setlocale(LC_ALL, ""); - - while ((c = getopt(argc, argv, "a:de:fhmp:s:t:")) != -1) { - switch (c) { -#if HAVE_RIPOFFLINE - case 'f': - ripoffline(-1, rip_footer); - break; - case 'h': - ripoffline(1, rip_header); - break; -#endif /* HAVE_RIPOFFLINE */ -#ifdef TRACE - case 't': - trace(strtoul(optarg, 0, 0)); - break; -#endif - default: - usage(); - } - } - - initscr(); - noraw(); - cbreak(); - noecho(); - - if (has_colors()) { - start_color(); - init_pair(1, COLOR_RED, COLOR_BLACK); - init_pair(2, COLOR_BLUE, COLOR_WHITE); - } - build_menus(argc > 1 ? argv[1] : 0); - perform_menus(); - destroy_menus(); - - endwin(); - ExitProgram(EXIT_SUCCESS); -} -#else -int -main(void) -{ - printf("This program requires the curses menu library\n"); - ExitProgram(EXIT_FAILURE); -} -#endif diff --git a/deps/ncurses-5.9/test/demo_panels b/deps/ncurses-5.9/test/demo_panels deleted file mode 100755 index 6ba9793..0000000 Binary files a/deps/ncurses-5.9/test/demo_panels and /dev/null differ diff --git a/deps/ncurses-5.9/test/demo_termcap b/deps/ncurses-5.9/test/demo_termcap deleted file mode 100755 index 82d8fd7..0000000 Binary files a/deps/ncurses-5.9/test/demo_termcap and /dev/null differ diff --git a/deps/ncurses-5.9/test/demo_termcap.c b/deps/ncurses-5.9/test/demo_termcap.c deleted file mode 100644 index a3733c6..0000000 --- a/deps/ncurses-5.9/test/demo_termcap.c +++ /dev/null @@ -1,311 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2005-2010,2011 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: Thomas E. Dickey - * - * $Id: demo_termcap.c,v 1.14 2011/01/15 21:41:27 tom Exp $ - * - * A simple demo of the termcap interface. - */ -#define USE_TINFO -#include - -#if HAVE_TGETENT - -#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) -#define USE_CODE_LISTS 1 -#else -#define USE_CODE_LISTS 0 -#endif - -#define FCOLS 8 -#define FNAME(type) "%s %-*s = ", #type, FCOLS - -#if USE_CODE_LISTS -static bool b_opt = FALSE; -static bool n_opt = FALSE; -static bool s_opt = FALSE; -#endif - -#define isCapName(c) (isgraph(c) && strchr("^#=:\\", c) == 0) - -static void -dumpit(NCURSES_CONST char *cap) -{ - /* - * One of the limitations of the termcap interface is that the library - * cannot determine the size of the buffer passed via tgetstr(), nor the - * amount of space remaining. This demo simply reuses the whole buffer - * for each call; a normal termcap application would try to use the buffer - * to hold all of the strings extracted from the terminal entry. - */ - char area[1024], *ap = area; - char *str; - int num; - - if ((str = tgetstr(cap, &ap)) != 0) { - /* - * Note that the strings returned are mostly terminfo format, since - * ncurses does not convert except for a handful of special cases. - */ - printf(FNAME(str), cap); - while (*str != 0) { - int ch = UChar(*str++); - switch (ch) { - case '\177': - fputs("^?", stdout); - break; - case '\033': - fputs("\\E", stdout); - break; - case '\b': - fputs("\\b", stdout); - break; - case '\f': - fputs("\\f", stdout); - break; - case '\n': - fputs("\\n", stdout); - break; - case '\r': - fputs("\\r", stdout); - break; - case ' ': - fputs("\\s", stdout); - break; - case '\t': - fputs("\\t", stdout); - break; - case '^': - fputs("\\^", stdout); - break; - case ':': - fputs("\\072", stdout); - break; - case '\\': - fputs("\\\\", stdout); - break; - default: - if (isgraph(ch)) - fputc(ch, stdout); - else if (ch < 32) - printf("^%c", ch + '@'); - else - printf("\\%03o", ch); - break; - } - } - printf("\n"); - } else if ((num = tgetnum(cap)) >= 0) { - printf(FNAME(num), cap); - printf(" %d\n", num); - } else if (tgetflag(cap) > 0) { - printf(FNAME(flg), cap); - printf("%s\n", "true"); - } - fflush(stdout); -} - -static void -brute_force(const char *name) -{ - char buffer[1024]; - - printf("Terminal type %s\n", name); - if (tgetent(buffer, name) >= 0) { - char cap[3]; - int c1, c2; - - cap[2] = 0; - for (c1 = 0; c1 < 256; ++c1) { - cap[0] = (char) c1; - if (isCapName(c1)) { - for (c2 = 0; c2 < 256; ++c2) { - cap[1] = (char) c2; - if (isCapName(c2)) { - dumpit(cap); - } - } - } - } - } -} - -#if USE_CODE_LISTS -static void -demo_terminfo(NCURSES_CONST char *name) -{ - unsigned n; - NCURSES_CONST char *cap; - - printf("Terminal type \"%s\"\n", name); -#if HAVE_SETUPTERM - setupterm(name, 1, (int *) 0); -#else - setterm(name); -#endif - - if (b_opt) { - for (n = 0;; ++n) { - cap = boolcodes[n]; - if (cap == 0) - break; - dumpit(cap); - } - } - - if (n_opt) { - for (n = 0;; ++n) { - cap = numcodes[n]; - if (cap == 0) - break; - dumpit(cap); - } - } - - if (s_opt) { - for (n = 0;; ++n) { - cap = strcodes[n]; - if (cap == 0) - break; - dumpit(cap); - } - } -} - -static void -usage(void) -{ - static const char *msg[] = - { - "Usage: demo_terminfo [options] [terminal]", - "", - "If no options are given, print all (boolean, numeric, string)", - "capabilities for the given terminal, using short names.", - "", - "Options:", - " -a try all names, print capabilities found", - " -b print boolean-capabilities", - " -n print numeric-capabilities", - " -r COUNT repeat for given count", - " -s print string-capabilities", - }; - unsigned n; - for (n = 0; n < SIZEOF(msg); ++n) { - fprintf(stderr, "%s\n", msg[n]); - } - ExitProgram(EXIT_FAILURE); -} -#endif - -int -main(int argc, char *argv[]) -{ - int n; - char *name; - bool a_opt = FALSE; - -#if USE_CODE_LISTS - int repeat; - int r_opt = 1; - - while ((n = getopt(argc, argv, "abnr:s")) != -1) { - switch (n) { - case 'a': - a_opt = TRUE; - break; - case 'b': - b_opt = TRUE; - break; - case 'n': - n_opt = TRUE; - break; - case 'r': - if ((r_opt = atoi(optarg)) <= 0) - usage(); - break; - case 's': - s_opt = TRUE; - break; - default: - usage(); - break; - } - } - - if (!(b_opt || n_opt || s_opt)) { - b_opt = TRUE; - n_opt = TRUE; - s_opt = TRUE; - } -#else - a_opt = TRUE; -#endif - - if (a_opt) { - if (optind < argc) { - for (n = optind; n < argc; ++n) { - brute_force(argv[n]); - } - } else if ((name = getenv("TERM")) != 0) { - brute_force(name); - } else { - static char dumb[] = "dumb"; - brute_force(dumb); - } - } -#if USE_CODE_LISTS - else { - for (repeat = 0; repeat < r_opt; ++repeat) { - if (optind < argc) { - for (n = optind; n < argc; ++n) { - demo_terminfo(argv[n]); - } - } else if ((name = getenv("TERM")) != 0) { - demo_terminfo(name); - } else { - static char dumb[] = "dumb"; - demo_terminfo(dumb); - } - } - } -#endif - - ExitProgram(EXIT_SUCCESS); -} - -#else -int -main(int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) -{ - printf("This program requires termcap\n"); - exit(EXIT_FAILURE); -} -#endif diff --git a/deps/ncurses-5.9/test/demo_terminfo b/deps/ncurses-5.9/test/demo_terminfo deleted file mode 100755 index 543fde8..0000000 Binary files a/deps/ncurses-5.9/test/demo_terminfo and /dev/null differ diff --git a/deps/ncurses-5.9/test/demo_terminfo.c b/deps/ncurses-5.9/test/demo_terminfo.c deleted file mode 100644 index 2ee5b4c..0000000 --- a/deps/ncurses-5.9/test/demo_terminfo.c +++ /dev/null @@ -1,317 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2009,2010 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: Thomas E. Dickey - * - * $Id: demo_terminfo.c,v 1.9 2010/11/28 00:15:27 tom Exp $ - * - * A simple demo of the terminfo interface. - */ -#define USE_TINFO -#include - -#ifdef NCURSES_VERSION -#if !(defined(HAVE_TERM_ENTRY_H) && HAVE_TERM_ENTRY_H) -#undef NCURSES_XNAMES -#define NCURSES_XNAMES 0 -#endif -#if NCURSES_XNAMES -#include -#endif -#endif - -#if HAVE_TIGETSTR -#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) - -static bool b_opt = FALSE; -static bool f_opt = FALSE; -static bool n_opt = FALSE; -static bool s_opt = FALSE; -static bool x_opt = FALSE; - -#define FCOLS 8 -#define FNAME(type) "%s %-*s = ", #type, FCOLS - -static void -dumpit(NCURSES_CONST char *cap) -{ - /* - * One of the limitations of the termcap interface is that the library - * cannot determine the size of the buffer passed via tgetstr(), nor the - * amount of space remaining. This demo simply reuses the whole buffer - * for each call; a normal termcap application would try to use the buffer - * to hold all of the strings extracted from the terminal entry. - */ - const char *str; - int num; - - if ((str = tigetstr(cap)) != 0 && (str != (char *) -1)) { - /* - * Note that the strings returned are mostly terminfo format, since - * ncurses does not convert except for a handful of special cases. - */ - printf(FNAME(str), cap); - while (*str != 0) { - int ch = UChar(*str++); - switch (ch) { - case '\177': - fputs("^?", stdout); - break; - case '\033': - fputs("\\E", stdout); - break; - case '\b': - fputs("\\b", stdout); - break; - case '\f': - fputs("\\f", stdout); - break; - case '\n': - fputs("\\n", stdout); - break; - case '\r': - fputs("\\r", stdout); - break; - case ' ': - fputs("\\s", stdout); - break; - case '\t': - fputs("\\t", stdout); - break; - case '^': - fputs("\\^", stdout); - break; - case ':': - fputs("\\072", stdout); - break; - case '\\': - fputs("\\\\", stdout); - break; - default: - if (isgraph(ch)) - fputc(ch, stdout); - else if (ch < 32) - printf("^%c", ch + '@'); - else - printf("\\%03o", ch); - break; - } - } - printf("\n"); - } else if ((num = tigetnum(cap)) >= 0) { - printf(FNAME(num), cap); - printf(" %d\n", num); - } else if ((num = tigetflag(cap)) >= 0) { - printf(FNAME(flg), cap); - printf("%s\n", num ? "true" : "false"); - } - fflush(stdout); -} - -static void -demo_terminfo(char *name) -{ - unsigned n; - NCURSES_CONST char *cap; - - printf("Terminal type \"%s\"\n", name); - setupterm(name, 1, (int *) 0); - - if (b_opt) { - for (n = 0;; ++n) { - cap = f_opt ? boolfnames[n] : boolnames[n]; - if (cap == 0) - break; - dumpit(cap); - } - } - - if (n_opt) { - for (n = 0;; ++n) { - cap = f_opt ? numfnames[n] : numnames[n]; - if (cap == 0) - break; - dumpit(cap); - } - } - - if (s_opt) { - for (n = 0;; ++n) { - cap = f_opt ? strfnames[n] : strnames[n]; - if (cap == 0) - break; - dumpit(cap); - } - } -#ifdef NCURSES_VERSION - if (x_opt) { - int mod; - if (f_opt) { -#if NCURSES_XNAMES - TERMTYPE *term = &(cur_term->type); - if (term != 0 - && ((NUM_BOOLEANS(term) != BOOLCOUNT) - || (NUM_NUMBERS(term) != NUMCOUNT) - || (NUM_STRINGS(term) != STRCOUNT))) { - for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) { - dumpit(ExtBoolname(term, (int) n, boolnames)); - } - for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) { - dumpit(ExtNumname(term, (int) n, numnames)); - } - for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) { - dumpit(ExtStrname(term, (int) n, strnames)); - } - } -#endif - } else { - char temp[10]; - static const char *xterm_keys[] = - { - "kDC", "kDN", "kEND", "kHOM", "kIC", - "kLFT", "kNXT", "kPRV", "kRIT", "kUP", - }; - for (n = 0; n < SIZEOF(xterm_keys); ++n) { - for (mod = 0; mod < 8; ++mod) { - if (mod == 0) - strcpy(temp, xterm_keys[n]); - else - sprintf(temp, "%s%d", xterm_keys[n], mod); - dumpit(temp); - } - } - } - } -#endif - -} - -static void -usage(void) -{ - static const char *msg[] = - { - "Usage: demo_terminfo [options] [terminal]", - "", - "If no options are given, print all (boolean, numeric, string)", - "capabilities for the given terminal, using short names.", - "", - "Options:", - " -b print boolean-capabilities", - " -f print full names", - " -n print numeric-capabilities", - " -r COUNT repeat for given count", - " -s print string-capabilities", -#ifdef NCURSES_VERSION - " -x print extended capabilities", -#endif - }; - unsigned n; - for (n = 0; n < SIZEOF(msg); ++n) { - fprintf(stderr, "%s\n", msg[n]); - } - ExitProgram(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - int n; - int repeat; - char *name; - int r_opt = 1; - - while ((n = getopt(argc, argv, "bfnr:sx")) != -1) { - switch (n) { - case 'b': - b_opt = TRUE; - break; - case 'f': - f_opt = TRUE; - break; - case 'n': - n_opt = TRUE; - break; - case 'r': - if ((r_opt = atoi(optarg)) <= 0) - usage(); - break; - case 's': - s_opt = TRUE; - break; -#ifdef NCURSES_VERSION - case 'x': - x_opt = TRUE; - use_extended_names(TRUE); - break; -#endif - default: - usage(); - break; - } - } - - if (!(b_opt || n_opt || s_opt || x_opt)) { - b_opt = TRUE; - n_opt = TRUE; - s_opt = TRUE; - } - - for (repeat = 0; repeat < r_opt; ++repeat) { - if (optind < argc) { - for (n = optind; n < argc; ++n) { - demo_terminfo(argv[n]); - } - } else if ((name = getenv("TERM")) != 0) { - demo_terminfo(name); - } else { - static char dumb[] = "dumb"; - demo_terminfo(dumb); - } - } - - ExitProgram(EXIT_SUCCESS); -} - -#else -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - printf("This program requires the terminfo arrays\n"); - ExitProgram(EXIT_FAILURE); -} -#endif -#else /* !HAVE_TIGETSTR */ -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - printf("This program requires the terminfo functions such as tigetstr\n"); - ExitProgram(EXIT_FAILURE); -} -#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-5.9/test/ditto b/deps/ncurses-5.9/test/ditto deleted file mode 100755 index 223bdd1..0000000 Binary files a/deps/ncurses-5.9/test/ditto and /dev/null differ diff --git a/deps/ncurses-5.9/test/dots b/deps/ncurses-5.9/test/dots deleted file mode 100755 index e3363cc..0000000 Binary files a/deps/ncurses-5.9/test/dots and /dev/null differ diff --git a/deps/ncurses-5.9/test/dots.c b/deps/ncurses-5.9/test/dots.c deleted file mode 100644 index 2533c7e..0000000 --- a/deps/ncurses-5.9/test/dots.c +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1999-2009,2010 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: Thomas E. Dickey 1999 - * - * $Id: dots.c,v 1.22 2010/11/14 01:00:02 tom Exp $ - * - * A simple demo of the terminfo interface. - */ -#define USE_TINFO -#include - -#if HAVE_SETUPTERM - -#include - -#define valid(s) ((s != 0) && s != (char *)-1) - -static bool interrupted = FALSE; -static long total_chars = 0; -static time_t started; - -static int -outc(TPUTS_ARG c) -{ - int rc = c; - - if (interrupted) { - char tmp = (char) c; - if (write(STDOUT_FILENO, &tmp, 1) == -1) - rc = EOF; - } else { - rc = putc(c, stdout); - } - return rc; -} - -static bool -outs(char *s) -{ - if (valid(s)) { - tputs(s, 1, outc); - return TRUE; - } - return FALSE; -} - -static void -cleanup(void) -{ - outs(exit_attribute_mode); - if (!outs(orig_colors)) - outs(orig_pair); - outs(clear_screen); - outs(cursor_normal); - - printf("\n\n%ld total chars, rate %.2f/sec\n", - total_chars, - ((double) (total_chars) / (double) (time((time_t *) 0) - started))); -} - -static void -onsig(int n GCC_UNUSED) -{ - interrupted = TRUE; -} - -static double -ranf(void) -{ - long r = (rand() & 077777); - return ((double) r / 32768.); -} - -int -main(int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) -{ - int x, y, z, p; - double r; - double c; - - CATCHALL(onsig); - - srand((unsigned) time(0)); - setupterm((char *) 0, 1, (int *) 0); - outs(clear_screen); - outs(cursor_invisible); - if (max_colors > 1) { - if (!valid(set_a_foreground) - || !valid(set_a_background) - || (!valid(orig_colors) && !valid(orig_pair))) - max_colors = -1; - } - - r = (double) (lines - 4); - c = (double) (columns - 4); - started = time((time_t *) 0); - - while (!interrupted) { - x = (int) (c * ranf()) + 2; - y = (int) (r * ranf()) + 2; - p = (ranf() > 0.9) ? '*' : ' '; - - tputs(tparm3(cursor_address, y, x), 1, outc); - if (max_colors > 0) { - z = (int) (ranf() * max_colors); - if (ranf() > 0.01) { - tputs(tparm2(set_a_foreground, z), 1, outc); - } else { - tputs(tparm2(set_a_background, z), 1, outc); - napms(1); - } - } else if (valid(exit_attribute_mode) - && valid(enter_reverse_mode)) { - if (ranf() <= 0.01) { - outs((ranf() > 0.6) - ? enter_reverse_mode - : exit_attribute_mode); - napms(1); - } - } - outc(p); - fflush(stdout); - ++total_chars; - } - cleanup(); - ExitProgram(EXIT_SUCCESS); -} -#else -int -main(int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) -{ - fprintf(stderr, "This program requires terminfo\n"); - exit(EXIT_FAILURE); -} -#endif diff --git a/deps/ncurses-5.9/test/dots_mvcur b/deps/ncurses-5.9/test/dots_mvcur deleted file mode 100755 index cf84c2b..0000000 Binary files a/deps/ncurses-5.9/test/dots_mvcur and /dev/null differ diff --git a/deps/ncurses-5.9/test/dots_mvcur.c b/deps/ncurses-5.9/test/dots_mvcur.c deleted file mode 100644 index 558683d..0000000 --- a/deps/ncurses-5.9/test/dots_mvcur.c +++ /dev/null @@ -1,174 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2007-2008,2009 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: Thomas E. Dickey - 2007 - * - * $Id: dots_mvcur.c,v 1.6 2010/11/14 01:00:44 tom Exp $ - * - * A simple demo of the terminfo interface, and mvcur. - */ -#define USE_TINFO -#include - -#if HAVE_SETUPTERM - -#include - -#define valid(s) ((s != 0) && s != (char *)-1) - -static bool interrupted = FALSE; -static long total_chars = 0; -static time_t started; - -static int -outc(TPUTS_ARG c) -{ - int rc = c; - - if (interrupted) { - char tmp = (char) c; - if (write(STDOUT_FILENO, &tmp, 1) == -1) - rc = EOF; - } else { - if (putc(c, stdout) == EOF) - rc = EOF; - } - return rc; -} - -static bool -outs(char *s) -{ - if (valid(s)) { - tputs(s, 1, outc); - return TRUE; - } - return FALSE; -} - -static void -cleanup(void) -{ - outs(exit_attribute_mode); - if (!outs(orig_colors)) - outs(orig_pair); - outs(clear_screen); - outs(cursor_normal); - - printf("\n\n%ld total chars, rate %.2f/sec\n", - total_chars, - ((double) (total_chars) / (double) (time((time_t *) 0) - started))); -} - -static void -onsig(int n GCC_UNUSED) -{ - interrupted = TRUE; -} - -static double -ranf(void) -{ - long r = (rand() & 077777); - return ((double) r / 32768.); -} - -int -main(int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) -{ - int x0 = 1, y0 = 1; - int x, y, z, p; - double r; - double c; - SCREEN *sp; - - CATCHALL(onsig); - - srand((unsigned) time(0)); - sp = newterm((char *) 0, stdout, stdin); - outs(clear_screen); - outs(cursor_home); - outs(cursor_invisible); - if (max_colors > 1) { - if (!valid(set_a_foreground) - || !valid(set_a_background) - || (!valid(orig_colors) && !valid(orig_pair))) - max_colors = -1; - } - - r = (double) (lines - 4); - c = (double) (columns - 4); - started = time((time_t *) 0); - - while (!interrupted) { - x = (int) (c * ranf()) + 2; - y = (int) (r * ranf()) + 2; - p = (ranf() > 0.9) ? '*' : ' '; - - if (mvcur(y0, x0, y, x) != ERR) { - x0 = x; - y0 = y; - } - - if (max_colors > 0) { - z = (int) (ranf() * max_colors); - if (ranf() > 0.01) { - tputs(tparm2(set_a_foreground, z), 1, outc); - } else { - tputs(tparm2(set_a_background, z), 1, outc); - napms(1); - } - } else if (valid(exit_attribute_mode) - && valid(enter_reverse_mode)) { - if (ranf() <= 0.01) { - outs((ranf() > 0.6) - ? enter_reverse_mode - : exit_attribute_mode); - napms(1); - } - } - outc(p); - fflush(stdout); - ++total_chars; - } - cleanup(); - endwin(); - delscreen(sp); - ExitProgram(EXIT_SUCCESS); -} -#else -int -main(int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) -{ - fprintf(stderr, "This program requires terminfo\n"); - exit(EXIT_FAILURE); -} -#endif diff --git a/deps/ncurses-5.9/test/echochar b/deps/ncurses-5.9/test/echochar deleted file mode 100755 index a0a4457..0000000 Binary files a/deps/ncurses-5.9/test/echochar and /dev/null differ diff --git a/deps/ncurses-5.9/test/filter b/deps/ncurses-5.9/test/filter deleted file mode 100755 index c83fc85..0000000 Binary files a/deps/ncurses-5.9/test/filter and /dev/null differ diff --git a/deps/ncurses-5.9/test/filter.c b/deps/ncurses-5.9/test/filter.c deleted file mode 100644 index 489136e..0000000 --- a/deps/ncurses-5.9/test/filter.c +++ /dev/null @@ -1,164 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2010 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: Thomas E. Dickey 1998 - * - * $Id: filter.c,v 1.13 2010/11/13 20:55:54 tom Exp $ - */ -#include - -#if HAVE_FILTER - -/* - * An example of the 'filter()' function in ncurses, this program prompts - * for commands and executes them (like a command shell). It illustrates - * how ncurses can be used to implement programs that are not full-screen. - * - * Ncurses differs slightly from SVr4 curses. The latter does not flush its - * state when exiting program mode, so the attributes on the command lines of - * this program 'bleed' onto the executed commands. Rather than use the - * reset_shell_mode() and reset_prog_mode() functions, we could invoke endwin() - * and refresh(), but that does not work any better. - */ - -static int -new_command(char *buffer, int length, attr_t underline) -{ - int code; - - attron(A_BOLD); - printw("Command: "); - attron(underline); - code = getnstr(buffer, length); - /* - * If this returns anything except ERR/OK, it would be one of ncurses's - * extensions. Fill the buffer with something harmless that the shell - * will execute as a comment. - */ -#ifdef KEY_EVENT - if (code == KEY_EVENT) - strcpy(buffer, "# event!"); -#endif -#ifdef KEY_RESIZE - if (code == KEY_RESIZE) { - strcpy(buffer, "# resize!"); - getch(); - } -#endif - attroff(underline); - attroff(A_BOLD); - printw("\n"); - - return code; -} - -static void -usage(void) -{ - static const char *msg[] = - { - "Usage: filter [options]" - ,"" - ,"Options:" - ," -i use initscr() rather than newterm()" - }; - unsigned n; - for (n = 0; n < SIZEOF(msg); n++) - fprintf(stderr, "%s\n", msg[n]); - ExitProgram(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - int ch; - char buffer[80]; - attr_t underline; - bool i_option = FALSE; - - setlocale(LC_ALL, ""); - - while ((ch = getopt(argc, argv, "i")) != -1) { - switch (ch) { - case 'i': - i_option = TRUE; - break; - default: - usage(); - } - } - - printf("starting filter program using %s...\n", - i_option ? "initscr" : "newterm"); - filter(); - if (i_option) { - initscr(); - } else { - (void) newterm((char *) 0, stdout, stdin); - } - cbreak(); - keypad(stdscr, TRUE); - - if (has_colors()) { - int background = COLOR_BLACK; - start_color(); -#if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() != ERR) - background = -1; -#endif - init_pair(1, COLOR_CYAN, (short) background); - underline = COLOR_PAIR(1); - } else { - underline = A_UNDERLINE; - } - - while (new_command(buffer, sizeof(buffer) - 1, underline) != ERR - && strlen(buffer) != 0) { - reset_shell_mode(); - printf("\n"); - fflush(stdout); - system(buffer); - reset_prog_mode(); - touchwin(stdscr); - erase(); - refresh(); - } - printw("done"); - refresh(); - endwin(); - ExitProgram(EXIT_SUCCESS); -} -#else -int -main(void) -{ - printf("This program requires the filter function\n"); - ExitProgram(EXIT_FAILURE); -} -#endif /* HAVE_FILTER */ diff --git a/deps/ncurses-5.9/test/firework b/deps/ncurses-5.9/test/firework deleted file mode 100755 index 76946c6..0000000 Binary files a/deps/ncurses-5.9/test/firework and /dev/null differ diff --git a/deps/ncurses-5.9/test/firstlast b/deps/ncurses-5.9/test/firstlast deleted file mode 100755 index 3b58ee3..0000000 Binary files a/deps/ncurses-5.9/test/firstlast and /dev/null differ diff --git a/deps/ncurses-5.9/test/foldkeys b/deps/ncurses-5.9/test/foldkeys deleted file mode 100755 index 1a0f4ec..0000000 Binary files a/deps/ncurses-5.9/test/foldkeys and /dev/null differ diff --git a/deps/ncurses-5.9/test/gdc b/deps/ncurses-5.9/test/gdc deleted file mode 100755 index 6f0e1c7..0000000 Binary files a/deps/ncurses-5.9/test/gdc and /dev/null differ diff --git a/deps/ncurses-5.9/test/gdc.c b/deps/ncurses-5.9/test/gdc.c deleted file mode 100644 index f3018cd..0000000 --- a/deps/ncurses-5.9/test/gdc.c +++ /dev/null @@ -1,351 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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. * - ****************************************************************************/ -/* - * Grand digital clock for curses compatible terminals - * Usage: gdc [-s] [n] -- run for n seconds (default infinity) - * Flags: -s: scroll - * - * modified 10-18-89 for curses (jrl) - * 10-18-89 added signal handling - * - * $Id: gdc.c,v 1.34 2010/11/13 21:01:23 tom Exp $ - */ - -#include - -#include - -#define YBASE 10 -#define XBASE 10 -#define XLENGTH 54 -#define YDEPTH 5 - -#define PAIR_DIGITS 1 -#define PAIR_OTHERS 2 -#define PAIR_FRAMES 3 - -static short disp[11] = -{ - 075557, 011111, 071747, 071717, 055711, - 074717, 074757, 071111, 075757, 075717, 002020 -}; -static long older[6], next[6], newer[6], mask; - -static int sigtermed = 0; -static bool redirected = FALSE; -static bool hascolor = FALSE; - -static RETSIGTYPE -sighndl(int signo) -{ - signal(signo, sighndl); - sigtermed = signo; - if (redirected) { - endwin(); - ExitProgram(EXIT_FAILURE); - } -} - -static void -drawbox(bool scrolling) -{ - chtype bottom[XLENGTH + 1]; - int n; - - if (hascolor) - (void) attrset(COLOR_PAIR(PAIR_FRAMES)); - - MvAddCh(YBASE - 1, XBASE - 1, ACS_ULCORNER); - hline(ACS_HLINE, XLENGTH); - MvAddCh(YBASE - 1, XBASE + XLENGTH, ACS_URCORNER); - - MvAddCh(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER); - if ((mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH)) != ERR) { - for (n = 0; n < XLENGTH; n++) { - if (!scrolling) - bottom[n] &= ~A_COLOR; - bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR)); - } - (void) mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH); - } - MvAddCh(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER); - - move(YBASE, XBASE - 1); - vline(ACS_VLINE, YDEPTH); - - move(YBASE, XBASE + XLENGTH); - vline(ACS_VLINE, YDEPTH); - - if (hascolor) - (void) attrset(COLOR_PAIR(PAIR_OTHERS)); -} - -static void -standt(int on) -{ - if (on) { - if (hascolor) { - attron(COLOR_PAIR(PAIR_DIGITS)); - } else { - attron(A_STANDOUT); - } - } else { - if (hascolor) { - attron(COLOR_PAIR(PAIR_OTHERS)); - } else { - attroff(A_STANDOUT); - } - } -} - -static void -set(int t, int n) -{ - int i, m; - - m = 7 << n; - for (i = 0; i < 5; i++) { - next[i] |= ((disp[t] >> ((4 - i) * 3)) & 07) << n; - mask |= (next[i] ^ older[i]) & m; - } - if (mask & m) - mask |= m; -} - -static void -usage(void) -{ - static const char *msg[] = - { - "Usage: gdc [options] [count]" - ,"" - ,"Options:" - ," -n redirect input to /dev/null" - ," -s scroll each number into place, rather than flipping" - ,"" - ,"If you specify a count, gdc runs for that number of seconds" - }; - unsigned j; - for (j = 0; j < SIZEOF(msg); j++) - fprintf(stderr, "%s\n", msg[j]); - ExitProgram(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - time_t now; - struct tm *tm; - long t, a; - int i, j, s, k; - int count = 0; - FILE *ofp = stdout; - FILE *ifp = stdin; - bool scrol = FALSE; - - setlocale(LC_ALL, ""); - - CATCHALL(sighndl); - - while ((k = getopt(argc, argv, "sn")) != -1) { - switch (k) { - case 's': - scrol = TRUE; - break; - case 'n': - ifp = fopen("/dev/null", "r"); - redirected = TRUE; - break; - default: - usage(); - } - } - if (optind < argc) { - count = atoi(argv[optind++]); - assert(count >= 0); - } - if (optind < argc) - usage(); - - if (redirected) { - char *name = getenv("TERM"); - if (name == 0 - || newterm(name, ofp, ifp) == 0) { - fprintf(stderr, "cannot open terminal\n"); - ExitProgram(EXIT_FAILURE); - } - - } else { - initscr(); - } - cbreak(); - noecho(); - nodelay(stdscr, 1); - curs_set(0); - - hascolor = has_colors(); - - if (hascolor) { - short bg = COLOR_BLACK; - start_color(); -#if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) - bg = -1; -#endif - init_pair(PAIR_DIGITS, COLOR_BLACK, COLOR_RED); - init_pair(PAIR_OTHERS, COLOR_RED, bg); - init_pair(PAIR_FRAMES, COLOR_WHITE, bg); - (void) attrset(COLOR_PAIR(PAIR_OTHERS)); - } - - restart: - for (j = 0; j < 5; j++) - older[j] = newer[j] = next[j] = 0; - - clear(); - drawbox(FALSE); - - do { - char buf[30]; - - time(&now); - tm = localtime(&now); - - mask = 0; - set(tm->tm_sec % 10, 0); - set(tm->tm_sec / 10, 4); - set(tm->tm_min % 10, 10); - set(tm->tm_min / 10, 14); - set(tm->tm_hour % 10, 20); - set(tm->tm_hour / 10, 24); - set(10, 7); - set(10, 17); - - for (k = 0; k < 6; k++) { - if (scrol) { - for (i = 0; i < 5; i++) - newer[i] = (newer[i] & ~mask) | (newer[i + 1] & mask); - newer[5] = (newer[5] & ~mask) | (next[k] & mask); - } else - newer[k] = (newer[k] & ~mask) | (next[k] & mask); - next[k] = 0; - for (s = 1; s >= 0; s--) { - standt(s); - for (i = 0; i < 6; i++) { - if ((a = (newer[i] ^ older[i]) & (s ? newer : older)[i]) - != 0) { - for (j = 0, t = 1 << 26; t; t >>= 1, j++) { - if (a & t) { - if (!(a & (t << 1))) { - move(YBASE + i, XBASE + 2 * j); - } - addstr(" "); - } - } - } - if (!s) { - older[i] = newer[i]; - } - } - if (!s) { - if (scrol) - drawbox(TRUE); - refresh(); - /* - * If we're scrolling, space out the refreshes to fake - * movement. That's 7 frames, or 6 intervals, which would - * be 166 msec if we spread it out over a second. It looks - * better (but will work on a slow terminal, e.g., less - * than 9600bd) to squeeze that into a half-second, and use - * half of 170 msec to ensure that the program doesn't eat - * a lot of time when asking what time it is, at the top of - * this loop -T.Dickey - */ - if (scrol) - napms(85); - } - } - } - - /* this depends on the detailed format of ctime(3) */ - (void) strcpy(buf, ctime(&now)); - (void) strcpy(buf + 10, buf + 19); - MvAddStr(16, 30, buf); - - move(6, 0); - drawbox(FALSE); - refresh(); - - /* - * If we're not scrolling, wait 1000 msec (1 sec). Use napms() rather - * than sleep() because the latter does odd things on some systems, - * e.g., suspending output as well. - */ - if (scrol) - napms(500); - else - napms(1000); - - /* - * This is a safe way to check if we're interrupted - making the signal - * handler set a flag that we can check. Since we're running - * nodelay(), the wgetch() call returns immediately, and in particular - * will return an error if interrupted. This works only if we can - * read from the input, of course. - */ - switch (wgetch(stdscr)) { - case 'q': - count = 1; - break; - case 's': - nodelay(stdscr, FALSE); - break; - case ' ': - nodelay(stdscr, TRUE); - break; -#ifdef KEY_RESIZE - case KEY_RESIZE: -#endif - case '?': - goto restart; - case ERR: - if (sigtermed) { - (void) standend(); - endwin(); - fprintf(stderr, "gdc terminated by signal %d\n", sigtermed); - ExitProgram(EXIT_FAILURE); - } - /* FALLTHRU */ - default: - continue; - } - } while (--count); - (void) standend(); - endwin(); - ExitProgram(EXIT_SUCCESS); -} diff --git a/deps/ncurses-5.9/test/hanoi b/deps/ncurses-5.9/test/hanoi deleted file mode 100755 index 062a207..0000000 Binary files a/deps/ncurses-5.9/test/hanoi and /dev/null differ diff --git a/deps/ncurses-5.9/test/hashtest b/deps/ncurses-5.9/test/hashtest deleted file mode 100755 index 468d0d7..0000000 Binary files a/deps/ncurses-5.9/test/hashtest and /dev/null differ diff --git a/deps/ncurses-5.9/test/inch_wide b/deps/ncurses-5.9/test/inch_wide deleted file mode 100755 index ea0b3fa..0000000 Binary files a/deps/ncurses-5.9/test/inch_wide and /dev/null differ diff --git a/deps/ncurses-5.9/test/inchs b/deps/ncurses-5.9/test/inchs deleted file mode 100755 index 70083e6..0000000 Binary files a/deps/ncurses-5.9/test/inchs and /dev/null differ diff --git a/deps/ncurses-5.9/test/ins_wide b/deps/ncurses-5.9/test/ins_wide deleted file mode 100755 index ea0b3fa..0000000 Binary files a/deps/ncurses-5.9/test/ins_wide and /dev/null differ diff --git a/deps/ncurses-5.9/test/insdelln b/deps/ncurses-5.9/test/insdelln deleted file mode 100755 index bb76752..0000000 Binary files a/deps/ncurses-5.9/test/insdelln and /dev/null differ diff --git a/deps/ncurses-5.9/test/inserts b/deps/ncurses-5.9/test/inserts deleted file mode 100755 index d1615c8..0000000 Binary files a/deps/ncurses-5.9/test/inserts and /dev/null differ diff --git a/deps/ncurses-5.9/test/key_names b/deps/ncurses-5.9/test/key_names deleted file mode 100755 index ea0b3fa..0000000 Binary files a/deps/ncurses-5.9/test/key_names and /dev/null differ diff --git a/deps/ncurses-5.9/test/keynames b/deps/ncurses-5.9/test/keynames deleted file mode 100755 index 4d8fc1e..0000000 Binary files a/deps/ncurses-5.9/test/keynames and /dev/null differ diff --git a/deps/ncurses-5.9/test/knight b/deps/ncurses-5.9/test/knight deleted file mode 100755 index d365c54..0000000 Binary files a/deps/ncurses-5.9/test/knight and /dev/null differ diff --git a/deps/ncurses-5.9/test/knight.c b/deps/ncurses-5.9/test/knight.c deleted file mode 100644 index d9f81fa..0000000 --- a/deps/ncurses-5.9/test/knight.c +++ /dev/null @@ -1,727 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2008,2010 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. * - ****************************************************************************/ -/* - * Knight's Tour - a brain game - * - * The original of this game was anonymous. It had an unbelievably bogus - * interface, you actually had to enter square coordinates! Redesign by - * Eric S. Raymond July 22 1995. Mouse support - * added September 20th 1995. - * - * $Id: knight.c,v 1.31 2010/11/13 20:44:21 tom Exp $ - */ - -#include - -/* board size */ -#define BDEPTH 8 -#define BWIDTH 8 - -/* where to start the instructions */ -#define INSTRY 2 -#define INSTRX 35 - -/* corner of board */ -#define BOARDY 2 -#define BOARDX 0 - -/* notification line */ -#define NOTIFYY 21 - -/* virtual color values */ -#define TRAIL_COLOR 1 -#define PLUS_COLOR 2 -#define MINUS_COLOR 3 - -#define CX(x) (2 + 4 * (x)) -#define CY(y) (1 + 2 * (y)) -#define cellmove(y, x) wmove(boardwin, CY(y), CX(x)) -#define CXINV(x) (((x) - 1) / 4) -#define CYINV(y) (((y) - 2) / 2) - -typedef struct { - short x, y; -} cell; - -static WINDOW *boardwin; /* the board window */ -static WINDOW *helpwin; /* the help window */ -static WINDOW *msgwin; /* the message window */ -static cell history[BDEPTH * BWIDTH + 1]; /* choice history */ -static chtype minus = '-'; /* possible-move character */ -static chtype oldch; -static chtype plus = '+'; /* cursor hot-spot character */ -static chtype trail = '#'; /* trail character */ -static int movecount; /* count of moves so far */ -static int trialcount; /* count of trials so far */ -static short board[BDEPTH][BWIDTH]; /* the squares */ -/* *INDENT-OFF* */ -static const struct { - int y; - int x; -} offsets[] = { - { 2, 1 }, - { 1, 2 }, - { -1, 2 }, - { -2, 1 }, - { -2, -1 }, - { -1, -2 }, - { 1, -2 }, - { 2, -1 }, -}; -/* *INDENT-ON* */ - -static void -init_program(void) -{ - setlocale(LC_ALL, ""); - - srand((unsigned) getpid()); - initscr(); - cbreak(); /* immediate char return */ - noecho(); /* no immediate echo */ - boardwin = newwin(BDEPTH * 2 + 1, BWIDTH * 4 + 1, BOARDY, BOARDX); - helpwin = newwin(0, 0, INSTRY, INSTRX); - msgwin = newwin(1, INSTRX - 1, NOTIFYY, 0); - scrollok(msgwin, TRUE); - keypad(boardwin, TRUE); - - if (has_colors()) { - int bg = COLOR_BLACK; - - start_color(); -#if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) - bg = -1; -#endif - - (void) init_pair(TRAIL_COLOR, (short) COLOR_CYAN, (short) bg); - (void) init_pair(PLUS_COLOR, (short) COLOR_RED, (short) bg); - (void) init_pair(MINUS_COLOR, (short) COLOR_GREEN, (short) bg); - - trail |= COLOR_PAIR(TRAIL_COLOR); - plus |= COLOR_PAIR(PLUS_COLOR); - minus |= COLOR_PAIR(MINUS_COLOR); - } -#ifdef NCURSES_MOUSE_VERSION - (void) mousemask(BUTTON1_CLICKED, (mmask_t *) NULL); -#endif /* NCURSES_MOUSE_VERSION */ - - oldch = minus; -} - -static void -help1(void) -/* game explanation -- initial help screen */ -{ - (void) waddstr(helpwin, "Knight's move is a solitaire puzzle. Your\n"); - (void) waddstr(helpwin, "objective is to visit each square of the \n"); - (void) waddstr(helpwin, "chessboard exactly once by making knight's\n"); - (void) waddstr(helpwin, "moves (one square right or left followed \n"); - (void) waddstr(helpwin, "by two squares up or down, or two squares \n"); - (void) waddstr(helpwin, "right or left followed by one square up or\n"); - (void) waddstr(helpwin, "down). You may start anywhere.\n\n"); - - (void) waddstr(helpwin, "Use arrow keys to move the cursor around.\n"); - (void) waddstr(helpwin, "When you want to move your knight to the \n"); - (void) waddstr(helpwin, "cursor location, press or Enter.\n"); - (void) waddstr(helpwin, "Illegal moves will be rejected with an \n"); - (void) waddstr(helpwin, "audible beep.\n\n"); - (void) waddstr(helpwin, "The program will detect if you solve the\n"); - (void) waddstr(helpwin, "puzzle; also inform you when you run out\n"); - (void) waddstr(helpwin, "of legal moves.\n\n"); - - MvWAddStr(helpwin, NOTIFYY - INSTRY, 0, - "Press `?' to go to keystroke help."); -} - -static void -help2(void) -/* keystroke help screen */ -{ - (void) waddstr(helpwin, "Possible moves are shown with `-'.\n\n"); - - (void) waddstr(helpwin, "You can move around with the arrow keys or\n"); - (void) waddstr(helpwin, "with the rogue/hack movement keys. Other\n"); - (void) waddstr(helpwin, "commands allow you to undo moves or redraw.\n"); - (void) waddstr(helpwin, "Your mouse may work; try left-button to\n"); - (void) waddstr(helpwin, "move to the square under the pointer.\n\n"); - - (void) waddstr(helpwin, "x,q -- exit y k u 7 8 9\n"); - (void) waddstr(helpwin, "r -- redraw screen \\|/ \\|/ \n"); - (void) waddstr(helpwin, "bksp -- undo move h-+-l 4-+-6\n"); - (void) waddstr(helpwin, "a -- autojump /|\\ /|\\ \n"); - (void) waddstr(helpwin, " b j n 1 2 3\n"); - - (void) waddstr(helpwin, "\nYou can place your knight on the selected\n"); - (void) waddstr(helpwin, "square with spacebar, Enter, or the keypad\n"); - (void) waddstr(helpwin, "center key. Use F/B to review the path.\n"); - - MvWAddStr(helpwin, NOTIFYY - INSTRY, 0, - "Press `?' to go to game explanation"); -} - -static void -show_help(bool * keyhelp) -{ - werase(helpwin); - if (*keyhelp) { - help1(); - *keyhelp = FALSE; - } else { - help2(); - *keyhelp = TRUE; - } - wrefresh(helpwin); -} - -static bool -chksqr(int r1, int c1) -{ - if ((r1 < 0) || (r1 > BDEPTH - 1)) - return (FALSE); - if ((c1 < 0) || (c1 > BWIDTH - 1)) - return (FALSE); - return ((!board[r1][c1]) ? TRUE : FALSE); -} - -static bool -chkmoves(int rw, int col) -/* check to see if valid moves are available */ -{ - unsigned n; - - for (n = 0; n < SIZEOF(offsets); n++) - if (chksqr(rw + offsets[n].y, col + offsets[n].x)) - return (TRUE); - return (FALSE); -} - -static void -dosquares(void) -{ - int i, j; - - MvAddStr(0, 20, "KNIGHT'S MOVE -- a logical solitaire"); - - move(BOARDY, BOARDX); - waddch(boardwin, ACS_ULCORNER); - for (j = 0; j < 7; j++) { - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_TTEE); - } - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_URCORNER); - - for (i = 1; i < BDEPTH; i++) { - move(BOARDY + i * 2 - 1, BOARDX); - waddch(boardwin, ACS_VLINE); - for (j = 0; j < BWIDTH; j++) { - waddch(boardwin, ' '); - waddch(boardwin, ' '); - waddch(boardwin, ' '); - waddch(boardwin, ACS_VLINE); - } - move(BOARDY + i * 2, BOARDX); - waddch(boardwin, ACS_LTEE); - for (j = 0; j < BWIDTH - 1; j++) { - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_PLUS); - } - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_RTEE); - } - - move(BOARDY + i * 2 - 1, BOARDX); - waddch(boardwin, ACS_VLINE); - for (j = 0; j < BWIDTH; j++) { - waddch(boardwin, ' '); - waddch(boardwin, ' '); - waddch(boardwin, ' '); - waddch(boardwin, ACS_VLINE); - } - - move(BOARDY + i * 2, BOARDX); - waddch(boardwin, ACS_LLCORNER); - for (j = 0; j < BWIDTH - 1; j++) { - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_BTEE); - } - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_HLINE); - waddch(boardwin, ACS_LRCORNER); -} - -static void -mark_possibles(int prow, int pcol, chtype mark) -{ - unsigned n; - - for (n = 0; n < SIZEOF(offsets); n++) { - if (chksqr(prow + offsets[n].y, pcol + offsets[n].x)) { - cellmove(prow + offsets[n].y, pcol + offsets[n].x); - waddch(boardwin, mark); - } - } -} - -static void -find_next_move(int *y, int *x) -{ - unsigned j, k; - int found = -1; - int first = -1; - int next = 0; - int oldy, oldx; - int newy, newx; - - if (movecount > 1) { - oldy = history[movecount - 1].y; - oldx = history[movecount - 1].x; - for (j = 0; j < SIZEOF(offsets) * 2; j++) { - k = j % SIZEOF(offsets); - newy = oldy + offsets[k].y; - newx = oldx + offsets[k].x; - if (chksqr(newy, newx)) { - if (first < 0) - first = (int) k; - if (newy == *y - && newx == *x) { - found = (int) k; - } else if (found >= 0) { - next = (int) k; - break; - } - } - } - if (found < 0) - next = first; - if (next >= 0) { - *y = oldy + offsets[next].y; - *x = oldx + offsets[next].x; - } - } else { - beep(); - } -} - -static void -unmarkcell(int row, int column) -{ - cellmove(row, column); - waddch(boardwin, '\b'); - waddch(boardwin, ' '); - waddch(boardwin, minus); - waddch(boardwin, ' '); -} - -static void -markcell(chtype tchar, int row, int column) -{ - cellmove(row, column); - waddch(boardwin, '\b'); - waddch(boardwin, tchar); - waddch(boardwin, tchar); - waddch(boardwin, tchar); -} - -static void -drawmove(chtype tchar, int oldy, int oldx, int row, int column) -/* place the stars, update board & currents */ -{ - if (movecount <= 1) { - int i, j; - - for (i = 0; i < BDEPTH; i++) { - for (j = 0; j < BWIDTH; j++) { - if (movecount == 0) { - unmarkcell(i, j); - } else { - cellmove(i, j); - if (winch(boardwin) == minus) - waddch(boardwin, movecount ? ' ' : minus); - } - } - } - } else { - markcell(tchar, oldy, oldx); - mark_possibles(oldy, oldx, ' '); - } - - if (row >= 0 && column >= 0) { - markcell(trail, row, column); - mark_possibles(row, column, minus); - board[row][column] = TRUE; - } - - wprintw(msgwin, "\nMove %d", movecount); - if (trialcount != movecount) - wprintw(msgwin, " (%d tries)", trialcount); - wclrtoeol(msgwin); -} - -static int -iabs(int num) -{ - if (num < 0) - return (-num); - else - return (num); -} - -static bool -evalmove(int row, int column) -/* evaluate move */ -{ - if (movecount == 1) - return (TRUE); - else if (board[row][column] == TRUE) { - waddstr(msgwin, "\nYou've already been there."); - return (FALSE); - } else { - int rdif = iabs(row - history[movecount - 1].y); - int cdif = iabs(column - history[movecount - 1].x); - - if (!((rdif == 1) && (cdif == 2)) && !((rdif == 2) && (cdif == 1))) { - waddstr(msgwin, "\nThat's not a legal knight's move."); - return (FALSE); - } - } - - return (TRUE); -} - -static int -completed(void) -{ - int i, j, count = 0; - - for (i = 0; i < BDEPTH; i++) - for (j = 0; j < BWIDTH; j++) - if (board[i][j] != 0) - count += 1; - return (count == (BWIDTH * BDEPTH) ? -1 : count); -} - -static void -no_previous_move(void) -{ - waddstr(msgwin, "\nNo previous move."); - beep(); -} - -static void -play(void) -/* play the game */ -{ - bool keyhelp; /* TRUE if keystroke help is up */ - int i, j, count; - int lastcol = 0; /* last location visited */ - int lastrow = 0; - int ny = 0, nx = 0; - int review = 0; /* review history */ - int rw = 0, col = 0; /* current row and column */ - - do { - /* clear screen and draw board */ - werase(boardwin); - werase(helpwin); - werase(msgwin); - dosquares(); - help1(); - wnoutrefresh(stdscr); - wnoutrefresh(helpwin); - wnoutrefresh(msgwin); - wnoutrefresh(boardwin); - doupdate(); - - movecount = 0; - for (i = 0; i < BDEPTH; i++) { - for (j = 0; j < BWIDTH; j++) { - board[i][j] = FALSE; - unmarkcell(i, j); - } - } - memset(history, 0, sizeof(history)); - history[0].y = history[0].x = -1; - history[1].y = history[1].x = -1; - lastrow = lastcol = -2; - movecount = 1; - trialcount = 1; - keyhelp = FALSE; - show_help(&keyhelp); - - for (;;) { - if (rw != lastrow || col != lastcol) { - if (lastrow >= 0 && lastcol >= 0) { - cellmove(lastrow, lastcol); - if (board[lastrow][lastcol]) - waddch(boardwin, trail); - else - waddch(boardwin, oldch); - } - - cellmove(rw, col); - oldch = winch(boardwin); - - lastrow = rw; - lastcol = col; - } - cellmove(rw, col); - waddch(boardwin, plus); - cellmove(rw, col); - - wrefresh(msgwin); - - switch (wgetch(boardwin)) { - case 'k': - case '8': - case KEY_UP: - ny = rw + BDEPTH - 1; - nx = col; - break; - case 'j': - case '2': - case KEY_DOWN: - ny = rw + 1; - nx = col; - break; - case 'h': - case '4': - case KEY_LEFT: - ny = rw; - nx = col + BWIDTH - 1; - break; - case 'l': - case '6': - case KEY_RIGHT: - ny = rw; - nx = col + 1; - break; - case 'y': - case '7': - case KEY_A1: - ny = rw + BDEPTH - 1; - nx = col + BWIDTH - 1; - break; - case 'b': - case '1': - case KEY_C1: - ny = rw + 1; - nx = col + BWIDTH - 1; - break; - case 'u': - case '9': - case KEY_A3: - ny = rw + BDEPTH - 1; - nx = col + 1; - break; - case 'n': - case '3': - case KEY_C3: - ny = rw + 1; - nx = col + 1; - break; - -#ifdef NCURSES_MOUSE_VERSION - case KEY_MOUSE: - { - MEVENT myevent; - - getmouse(&myevent); - if (myevent.y >= CY(0) && myevent.y <= CY(BDEPTH) - && myevent.x >= CX(0) && myevent.x <= CX(BWIDTH)) { - nx = CXINV(myevent.x); - ny = CYINV(myevent.y); - ungetch('\n'); - break; - } else { - beep(); - continue; - } - } -#endif /* NCURSES_MOUSE_VERSION */ - - case KEY_B2: - case '\n': - case ' ': - review = 0; - if (evalmove(rw, col)) { - drawmove(trail, - history[movecount - 1].y, - history[movecount - 1].x, - rw, col); - history[movecount].y = (short) rw; - history[movecount].x = (short) col; - movecount++; - trialcount++; - - if (!chkmoves(rw, col)) { - if (completed() < 0) { - waddstr(msgwin, "\nYou won."); - } else { - waddstr(msgwin, - "\nNo further moves are possible."); - } - } - } else { - beep(); - } - break; - - case KEY_UNDO: - case KEY_BACKSPACE: - case '\b': - review = 0; - if (movecount <= 0) { - no_previous_move(); - } else if (movecount <= 1) { - ny = history[movecount].y; - nx = history[movecount].x; - if (nx < 0 || ny < 0) { - ny = lastrow; - nx = lastcol; - } - movecount = 0; - board[ny][nx] = FALSE; - oldch = minus; - drawmove(' ', ny, nx, -1, -1); - movecount = 1; - trialcount = 1; - no_previous_move(); - } else { - int oldy = history[movecount - 1].y; - int oldx = history[movecount - 1].x; - - if (!board[rw][col]) { - cellmove(rw, col); - waddch(boardwin, ' '); - } - - board[oldy][oldx] = FALSE; - --movecount; - ny = history[movecount - 1].y; - nx = history[movecount - 1].x; - if (nx < 0 || ny < 0) { - ny = oldy; - nx = oldx; - } - drawmove(' ', oldy, oldx, ny, nx); - - /* avoid problems if we just changed the current cell */ - cellmove(lastrow, lastcol); - oldch = winch(boardwin); - } - break; - - case 'a': - nx = col; - ny = rw; - find_next_move(&ny, &nx); - break; - - case 'F': - if (review > 0) { - review--; - ny = history[movecount - review - 1].y; - nx = history[movecount - review - 1].x; - } else { - beep(); - } - break; - - case 'B': - if (review < movecount - 2) { - review++; - ny = history[movecount - review - 1].y; - nx = history[movecount - review - 1].x; - } else { - beep(); - } - break; - - case KEY_REDO: - case '\f': - case 'r': - clearok(curscr, TRUE); - wnoutrefresh(stdscr); - wnoutrefresh(boardwin); - wnoutrefresh(msgwin); - wnoutrefresh(helpwin); - doupdate(); - break; - - case 'q': - case 'x': - goto dropout; - - case '?': - show_help(&keyhelp); - break; - - default: - beep(); - break; - } - - col = nx % BWIDTH; - rw = ny % BDEPTH; - } - - dropout: - if ((count = completed()) < 0) - wprintw(msgwin, "\nYou won. Care to try again? "); - else - wprintw(msgwin, "\n%d squares filled. Try again? ", count); - wclrtoeol(msgwin); - } while - (tolower(wgetch(msgwin)) == 'y'); -} - -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - init_program(); - - play(); - - endwin(); - ExitProgram(EXIT_SUCCESS); -} - -/* knight.c ends here */ diff --git a/deps/ncurses-5.9/test/lrtest b/deps/ncurses-5.9/test/lrtest deleted file mode 100755 index 07eeda7..0000000 Binary files a/deps/ncurses-5.9/test/lrtest and /dev/null differ diff --git a/deps/ncurses-5.9/test/make-tar.sh b/deps/ncurses-5.9/test/make-tar.sh deleted file mode 100755 index 0ebccbb..0000000 --- a/deps/ncurses-5.9/test/make-tar.sh +++ /dev/null @@ -1,143 +0,0 @@ -#!/bin/sh -# $Id: make-tar.sh,v 1.10 2011/03/26 20:46:51 tom Exp $ -############################################################################## -# Copyright (c) 2010,2011 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. # -############################################################################## -# Construct a tar-file containing only the test tree as well as its associated -# scripts. The reason for doing that is to simplify distributing the test -# programs as a separate package. - -CDPATH=: -export CDPATH - -TARGET=`pwd` - -: ${PKG_NAME:=ncurses-examples} -: ${ROOTNAME:=ncurses-test} -: ${DESTDIR:=$TARGET} -: ${TMPDIR:=/tmp} - -grep_assign() { - grep_assign=`egrep "^$2\>" "$1" | sed -e "s/^$2[ ]*=[ ]*//" -e 's/"//g'` - eval $2=\"$grep_assign\" -} - -grep_patchdate() { - grep_assign ../dist.mk NCURSES_MAJOR - grep_assign ../dist.mk NCURSES_MINOR - grep_assign ../dist.mk NCURSES_PATCH -} - -# The rpm spec-file in the ncurses tree is a template. Fill in the version -# information from dist.mk -edit_specfile() { - sed \ - -e "s/\\/$NCURSES_MAJOR/g" \ - -e "s/\\/$NCURSES_MINOR/g" \ - -e "s/\\/$NCURSES_PATCH/g" $1 >$1.new - chmod u+w $1 - mv $1.new $1 -} - -make_changelog() { - test -f $1 && chmod u+w $1 - cat >$1 <MANIFEST ) - -cd $BUILD || exit - -# Remove build-artifacts. -find . -name RCS -exec rm -rf {} \; -find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null -find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null -find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null - -# There is no need for this script in the tar file. -rm -f $ROOTNAME/make-tar.sh - -# Remove build-artifacts. -find . -name "*.gz" -exec rm -rf {} \; - -# Make the files writable... -chmod -R u+w . - -tar cf - $ROOTNAME | gzip >$DESTDIR/$ROOTNAME.tar.gz -cd $DESTDIR - -pwd -ls -l $ROOTNAME.tar.gz - -# vi:ts=4 sw=4 diff --git a/deps/ncurses-5.9/test/mk-test.awk b/deps/ncurses-5.9/test/mk-test.awk deleted file mode 100644 index df560eb..0000000 --- a/deps/ncurses-5.9/test/mk-test.awk +++ /dev/null @@ -1,132 +0,0 @@ -# $Id: mk-test.awk,v 1.12 2010/11/06 23:06:48 tom Exp $ -############################################################################## -# Copyright (c) 2006-2007,2010 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: Thomas E. Dickey -# -# generate Makefile for ncurses tests. -BEGIN { - first = 1; - count = 0; - } -/^#/ { - next; - } -/^$/ { - next; - } - { - if (first) { - print "# generated by mk-test.awk\n"; - first = 0; - } - progs[count] = $1; - flags[count] = $2; - using[count] = $3; - files[count] = ""; - for (n = 4; n <= NF; ++n) { - files[count] = sprintf("%s $(MODEL)/%s$o", files[count], $n); - } - count = count + 1; - } -END { - for (n = 0; n < count; ++n) { - if (n == 0) { - printf "TESTS\t= "; - } else { - printf "\t "; - } - printf "$(destdir)%s$x", progs[n]; - if (n < count - 1) { - printf " \\"; - } - print ""; - } - print "" - print "all: $(TESTS)" - print "" - print "sources:" - print "" - print "tags:" - print " $(CTAGS) *.[ch]" - print "" - print "# no libraries here" - print "libs \\" - print "install.libs \\" - print "uninstall.libs:" - print "" - if (INSTALL == "yes") { - print "# we might install the test-programs" - print "install \\" - print "install.test: $(BINDIR) $(TESTS)" - print " $(SHELL) -c 'for src in $(TESTS); do \\" - print " dst=`echo $$src | $(TRANSFORM)`; \\" - print " $(INSTALL_PROG) $$src $(BINDIR)/$$dst; \\" - print " done'" - print "" - print "uninstall \\" - print "uninstall.test:" - print " $(SHELL) -c 'for src in $(TESTS); do \\" - print " dst=`echo $$src | $(TRANSFORM)`; \\" - print " rm -f $(BINDIR)/$$dst; \\" - print " done'" - } else { - print "install \\" - print "install.test \\" - print "uninstall \\" - print "uninstall.test:" - } - print "" - print "mostlyclean ::" - print " -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace" - print "" - print "clean :: mostlyclean" - print " -$(SHELL) -c \"if test -n '$x' ; then $(MAKE) clean x=''; fi\"" - print " -rm -rf *$o screendump *.lis $(TESTS) .libs" - print "" - print "distclean :: clean" - print " -rm -f Makefile ncurses_cfg.h config.status config.log" - print "" - print "realclean :: distclean" - print "" - print "lint:" - print " $(SHELL) -c 'for N in $(TESTS); do echo LINT:$$N; $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/$$N.c $(LINT_LIBS); done'" - print "$(BINDIR) :" - print " mkdir -p $@" - - - if (ECHO_LINK != "") { - ECHO_LINK="@ echo linking $@ ... ;" - } - for (n = 0; n < count; ++n) { - print ""; - printf "$(destdir)%s$x:%s %s\n", progs[n], files[n], using[n]; - printf "\t%s$(LINK) -o $@%s %s\n", ECHO_LINK, files[n], flags[n]; - } - - } diff --git a/deps/ncurses-5.9/test/modules b/deps/ncurses-5.9/test/modules deleted file mode 100644 index 67c019e..0000000 --- a/deps/ncurses-5.9/test/modules +++ /dev/null @@ -1,96 +0,0 @@ -# $Id: modules,v 1.43 2010/01/23 17:51:38 tom Exp $ -############################################################################## -# Copyright (c) 1998-2009,2010 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: Thomas E. Dickey 1997-on -# -# Test-Program modules - -@ base -background progs $(srcdir) $(HEADER_DEPS) -blue progs $(srcdir) $(HEADER_DEPS) -bs progs $(srcdir) $(HEADER_DEPS) -cardfile progs $(srcdir) $(HEADER_DEPS) ../include/panel.h ../include/form.h -chgat progs $(srcdir) $(HEADER_DEPS) -clip_printw progs $(srcdir) $(HEADER_DEPS) -color_set progs $(srcdir) $(HEADER_DEPS) -demo_altkeys progs $(srcdir) $(HEADER_DEPS) -demo_defkey progs $(srcdir) $(HEADER_DEPS) -demo_forms progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h -demo_keyok progs $(srcdir) $(HEADER_DEPS) -demo_menus progs $(srcdir) $(HEADER_DEPS) ../include/menu.h -demo_panels progs $(srcdir) $(HEADER_DEPS) ../include/panel.h -demo_termcap progs $(srcdir) $(HEADER_DEPS) -demo_terminfo progs $(srcdir) $(HEADER_DEPS) -ditto progs $(srcdir) $(HEADER_DEPS) -dots progs $(srcdir) $(HEADER_DEPS) -dots_mvcur progs $(srcdir) $(HEADER_DEPS) -echochar progs $(srcdir) $(HEADER_DEPS) -edit_field progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h -filter progs $(srcdir) $(HEADER_DEPS) -firework progs $(srcdir) $(HEADER_DEPS) -firstlast progs $(srcdir) $(HEADER_DEPS) -foldkeys progs $(srcdir) $(HEADER_DEPS) -gdc progs $(srcdir) $(HEADER_DEPS) -hanoi progs $(srcdir) $(HEADER_DEPS) -hashtest progs $(srcdir) $(HEADER_DEPS) -inch_wide progs $(srcdir) $(HEADER_DEPS) -inchs progs $(srcdir) $(HEADER_DEPS) -ins_wide progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h -insdelln progs $(srcdir) $(HEADER_DEPS) -inserts progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h -key_names progs $(srcdir) $(HEADER_DEPS) -keynames progs $(srcdir) $(HEADER_DEPS) -knight progs $(srcdir) $(HEADER_DEPS) -lrtest progs $(srcdir) $(HEADER_DEPS) -movewindow progs $(srcdir) $(HEADER_DEPS) -ncurses progs $(srcdir) $(HEADER_DEPS) ../include/panel.h ../include/menu.h ../include/form.h -newdemo progs $(srcdir) $(HEADER_DEPS) -railroad progs $(srcdir) $(HEADER_DEPS) -rain progs $(srcdir) $(HEADER_DEPS) -redraw progs $(srcdir) $(HEADER_DEPS) -savescreen progs $(srcdir) $(HEADER_DEPS) -tclock progs $(srcdir) $(HEADER_DEPS) -test_add_wchstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h -test_addchstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h -test_addstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h -test_addwstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h -test_arrays progs $(srcdir) $(HEADER_DEPS) -test_get_wstr progs $(srcdir) $(HEADER_DEPS) -test_getstr progs $(srcdir) $(HEADER_DEPS) -test_instr progs $(srcdir) $(HEADER_DEPS) -test_inwstr progs $(srcdir) $(HEADER_DEPS) -test_opaque progs $(srcdir) $(HEADER_DEPS) -testaddch progs $(srcdir) $(HEADER_DEPS) -testcurs progs $(srcdir) $(HEADER_DEPS) -testscanw progs $(srcdir) $(HEADER_DEPS) -view progs $(srcdir) $(HEADER_DEPS) -worm progs $(srcdir) $(HEADER_DEPS) -xmas progs $(srcdir) $(HEADER_DEPS) - -# vile:makemode diff --git a/deps/ncurses-5.9/test/movewindow b/deps/ncurses-5.9/test/movewindow deleted file mode 100755 index c1c7e03..0000000 Binary files a/deps/ncurses-5.9/test/movewindow and /dev/null differ diff --git a/deps/ncurses-5.9/test/movewindow.c b/deps/ncurses-5.9/test/movewindow.c deleted file mode 100644 index e55a694..0000000 --- a/deps/ncurses-5.9/test/movewindow.c +++ /dev/null @@ -1,639 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2006-2008,2010 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. * - ****************************************************************************/ -/* - * $Id: movewindow.c,v 1.24 2010/11/13 23:34:55 tom Exp $ - * - * Demonstrate move functions for windows and derived windows from the curses - * library. - * - * Thomas Dickey - 2006/2/11 - */ -/* -derwin -mvderwin -subwin -mvwin - */ - -#include -#include - -#ifdef HAVE_XCURSES -#undef derwin -#endif - -#ifdef NCURSES_VERSION -#define CONST_FMT const -#else -#define CONST_FMT /* nothing */ -#endif - -#undef LINE_MAX - -#define LINE_MIN 2 -#define LINE_MAX (LINES - 2) -#define COL_MIN 2 -#define COL_MAX (COLS - 2) - -typedef struct { - int y, x; -} PAIR; - -typedef struct { - WINDOW *parent; /* need this since WINDOW->_parent is not portable */ - WINDOW *child; /* the actual value */ -} FRAME; - -static void head_line(CONST_FMT char *fmt,...) GCC_PRINTFLIKE(1, 2); -static void tail_line(CONST_FMT char *fmt,...) GCC_PRINTFLIKE(1, 2); - -static unsigned num_windows; -static FRAME *all_windows; - -static void -message(int lineno, CONST_FMT char *fmt, va_list argp) -{ - int y, x; - - getyx(stdscr, y, x); - move(lineno, 0); - clrtoeol(); - -#ifdef HAVE_XCURSES - { - char buffer[1024]; - vsprintf(buffer, fmt, argp); - addstr(buffer); - } -#else - vwprintw(stdscr, fmt, argp); -#endif - - move(y, x); - refresh(); -} - -static void -head_line(CONST_FMT char *fmt,...) -{ - va_list argp; - - va_start(argp, fmt); - message(0, fmt, argp); - va_end(argp); -} - -static void -tail_line(CONST_FMT char *fmt,...) -{ - va_list argp; - - va_start(argp, fmt); - message(LINES - 1, fmt, argp); - va_end(argp); -} - -/* - * Arrow keys move cursor, return location at current on non-arrow key. - */ -static PAIR * -selectcell(WINDOW *parent, int uli, int ulj, int lri, int lrj) -{ - static PAIR res; /* result cell */ - int si = lri - uli + 1; /* depth of the select area */ - int sj = lrj - ulj + 1; /* width of the select area */ - int i = 0, j = 0; /* offsets into the select area */ - - res.y = uli; - res.x = ulj; - for (;;) { - tail_line("Upper left [%2d,%2d] Lower right [%2d,%2d] -> %d,%d", - uli, ulj, - lri, lrj, - uli + i, ulj + j); - wmove(parent, uli + i, ulj + j); - - switch (wgetch(parent)) { - case KEY_UP: - i += si - 1; - break; - case KEY_DOWN: - i++; - break; - case KEY_LEFT: - j += sj - 1; - break; - case KEY_RIGHT: - j++; - break; - case QUIT: - case ESCAPE: - return ((PAIR *) 0); -#ifdef NCURSES_MOUSE_VERSION - case KEY_MOUSE: - { - MEVENT event; - - getmouse(&event); - if (event.y > uli && event.x > ulj) { - i = event.y - uli; - j = event.x - ulj; - } else { - beep(); - break; - } - } - /* FALLTHRU */ -#endif - default: - res.y = uli + i; - res.x = ulj + j; - return (&res); - } - i %= si; - j %= sj; - } -} - -/* - * Ask user for a window definition. - */ -static bool -getwindow(WINDOW *parent, PAIR * ul, PAIR * lr) -{ - int min_col = (parent == stdscr) ? COL_MIN : 0; - int max_col = (parent == stdscr) ? COL_MAX : getmaxx(parent); - int min_line = (parent == stdscr) ? LINE_MIN : 0; - int max_line = (parent == stdscr) ? LINE_MAX : getmaxy(parent); - PAIR *tmp; - bool result = FALSE; - - head_line("Use arrows to move cursor, anything else to mark corner 1"); - if ((tmp = selectcell(parent, min_line, min_col, max_line, max_col)) != 0) { - *ul = *tmp; - MvWAddCh(parent, ul->y, ul->x, '*'); - - head_line("Use arrows to move cursor, anything else to mark corner 2"); - if ((tmp = selectcell(parent, ul->y, ul->x, max_line, max_col)) != 0) { - *lr = *tmp; - MvWAddCh(parent, lr->y, lr->x, '*'); - wmove(parent, lr->y, lr->x); - wsyncdown(parent); - wrefresh(parent); - result = (lr->y != ul->y && lr->x != ul->x); - } - } - head_line("done"); - return result; -} - -/* - * Draw a box inside the given window. - */ -static void -box_inside(WINDOW *win) -{ - int y0, x0; - int y1, x1; - - getyx(win, y0, x0); - getmaxyx(win, y1, x1); - - MvWHLine(win, 0, 0, ACS_HLINE, x1); - MvWHLine(win, y1 - 1, 0, ACS_HLINE, x1); - - MvWVLine(win, 0, 0, ACS_VLINE, y1); - MvWVLine(win, 0, x1 - 1, ACS_VLINE, y1); - - MvWAddCh(win, 0, 0, ACS_ULCORNER); - MvWAddCh(win, y1 - 1, 0, ACS_LLCORNER); - MvWAddCh(win, 0, x1 - 1, ACS_URCORNER); - MvWAddCh(win, y1 - 1, x1 - 1, ACS_LRCORNER); - - wsyncdown(win); - wmove(win, y0, x0); - wrefresh(win); -} - -/* - * Add a window to our list. - */ -static void -add_window(WINDOW *parent, WINDOW *child) -{ - static unsigned have = 0; - unsigned need = ((num_windows + 1) | 31) + 1; - - keypad(child, TRUE); - if (need > have) { - all_windows = typeRealloc(FRAME, need, all_windows); - } - all_windows[num_windows].parent = parent; - all_windows[num_windows].child = child; - num_windows++; -} - -static int -window2num(WINDOW *win) -{ - int n; - int result = -1; - for (n = 0; n < (int) num_windows; ++n) { - if (win == all_windows[n].child) { - result = n; - break; - } - } - return result; -} - -static WINDOW * -parent_of(WINDOW *win) -{ - WINDOW *result = 0; - int n = window2num(win); - if (n >= 0) - result = all_windows[n].parent; - return result; -} - -static void -repaint_one(WINDOW *win) -{ - touchwin(win); - wnoutrefresh(win); -} - -static void -refresh_all(WINDOW *win) -{ - unsigned n; - - for (n = 0; n < num_windows; ++n) { - if (all_windows[n].child != win) { - repaint_one(all_windows[n].child); - } - } - - repaint_one(win); - doupdate(); -} - -static WINDOW * -next_window(WINDOW *win) -{ - WINDOW *result = win; - int n = window2num(win); - - if (n++ >= 0) { - result = all_windows[(unsigned) n % num_windows].child; - wmove(result, 0, 0); - wrefresh(result); - } - return result; -} - -static WINDOW * -prev_window(WINDOW *win) -{ - WINDOW *result = win; - int n = window2num(win); - - if (n-- >= 0) { - if (n < 0) - n = (int) (num_windows - 1); - result = all_windows[(unsigned) n % num_windows].child; - wmove(result, 0, 0); - wrefresh(result); - } - return result; -} - -static void -recur_move_window(WINDOW *parent, int dy, int dx) -{ - unsigned n; - - for (n = 0; n < num_windows; ++n) { - if (all_windows[n].parent == parent) { - int y0, x0; - - getbegyx(all_windows[n].child, y0, x0); - mvwin(all_windows[n].child, y0 + dy, x0 + dx); - recur_move_window(all_windows[n].child, dy, dx); - } - } -} - -/* - * test mvwin(). - */ -static bool -move_window(WINDOW *win, bool recur) -{ - WINDOW *parent = parent_of(win); - bool result = FALSE; - - if (parent != 0) { - bool top = (parent == stdscr); - int min_col = top ? COL_MIN : 0; - int max_col = top ? COL_MAX : getmaxx(parent); - int min_line = top ? LINE_MIN : 0; - int max_line = top ? LINE_MAX : getmaxy(parent); - PAIR *tmp; - - head_line("Select new position for %swindow", top ? "" : "sub"); - - if ((tmp = selectcell(parent, - min_line, min_col, - max_line, max_col)) != 0) { - int y0, x0; - getbegyx(parent, y0, x0); - /* - * Note: Moving a subwindow has the effect of moving a viewport - * around the screen. The parent window retains the contents of - * the subwindow in the original location, but the viewport will - * show the contents (again) at the new location. So it will look - * odd when testing. - */ - if (mvwin(win, y0 + tmp->y, x0 + tmp->x) != ERR) { - if (recur) { - recur_move_window(win, tmp->y, tmp->x); - } - refresh_all(win); - doupdate(); - result = TRUE; - } - } - } - return result; -} - -/* - * test mvderwin(). - */ -static bool -move_subwin(WINDOW *win) -{ - WINDOW *parent = parent_of(win); - bool result = FALSE; - - if (parent != 0) { - bool top = (parent == stdscr); - if (!top) { - int min_col = top ? COL_MIN : 0; - int max_col = top ? COL_MAX : getmaxx(parent); - int min_line = top ? LINE_MIN : 0; - int max_line = top ? LINE_MAX : getmaxy(parent); - PAIR *tmp; - - head_line("Select new position for subwindow"); - - if ((tmp = selectcell(parent, - min_line, min_col, - max_line, max_col)) != 0) { - int y0, x0; - getbegyx(parent, y0, x0); - if (mvderwin(win, y0 + tmp->y, x0 + tmp->x) != ERR) { - refresh_all(win); - doupdate(); - result = TRUE; - } - } - } - } - return result; -} - -static void -fill_window(WINDOW *win, chtype ch) -{ - int y, x; - int y0, x0; - int y1, x1; - - getyx(win, y0, x0); - getmaxyx(win, y1, x1); - for (y = 0; y < y1; ++y) { - for (x = 0; x < x1; ++x) { - MvWAddCh(win, y, x, ch); - } - } - wsyncdown(win); - wmove(win, y0, x0); - wrefresh(win); -} - -#define lines_of(ul,lr) (lr.y - ul.y + 1) -#define cols_of(ul,lr) (lr.x - ul.x + 1) -#define pair_of(ul) ul.y, ul.x - -static WINDOW * -create_my_window(WINDOW *current) -{ - PAIR ul, lr; - WINDOW *result = 0; - - if (getwindow(stdscr, &ul, &lr)) { - result = newwin(lines_of(ul, lr), cols_of(ul, lr), pair_of(ul)); - if (result != 0) { - fill_window(result, 'c'); - add_window(stdscr, result); - } - } - if (result == 0) - result = current; - return result; -} - -static WINDOW * -create_my_derwin(WINDOW *parent) -{ - PAIR ul, lr; - WINDOW *result = 0; - - if (getwindow(parent, &ul, &lr)) { - result = derwin(parent, lines_of(ul, lr), cols_of(ul, lr), pair_of(ul)); - if (result != 0) { - fill_window(result, 'd'); - add_window(parent, result); - } - } - if (result == 0) - result = parent; - return result; -} - -static WINDOW * -create_my_subwin(WINDOW *parent) -{ - PAIR ul, lr; - WINDOW *result = 0; - - if (getwindow(parent, &ul, &lr)) { - result = subwin(parent, - lines_of(ul, lr), - cols_of(ul, lr), - ul.y + getbegy(parent), - ul.x + getbegx(parent)); - if (result != 0) { - fill_window(result, 's'); - add_window(parent, result); - } - } - if (result == 0) - result = parent; - return result; -} - -static void -show_help(WINDOW *current) -{ - /* *INDENT-OFF* */ - static struct { - int key; - CONST_FMT char * msg; - } help[] = { - { '?', "Show this screen" }, - { 'b', "Draw a box inside the current window" }, - { 'c', "Create a new window" }, - { 'd', "Create a new derived window" }, - { 'f', "Fill the current window with the next character" }, - { 'm', "Move the current window" }, - { 'M', "Move the current window (and its children)" }, - { 'q', "Quit" }, - { 's', "Create a new subwindow" }, - { 't', "Move the current subwindow (moves content)" }, - { CTRL('L'), "Repaint all windows, doing current one last" }, - { CTRL('N'), "Cursor to next window" }, - { CTRL('P'), "Cursor to previous window" }, - }; - /* *INDENT-ON* */ - - WINDOW *mywin = newwin(LINES, COLS, 0, 0); - int row; - - for (row = 0; row < LINES - 2 && row < (int) SIZEOF(help); ++row) { - wmove(mywin, row + 1, 1); - wprintw(mywin, "%s", keyname(help[row].key)); - wmove(mywin, row + 1, 20); - wprintw(mywin, "%s", help[row].msg); - } - box_inside(mywin); - wmove(mywin, 1, 1); - wgetch(mywin); - delwin(mywin); - refresh_all(current); -} - -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - WINDOW *current_win; - int ch; - bool done = FALSE; - - initscr(); - cbreak(); - noecho(); - nonl(); - intrflush(stdscr, FALSE); - - add_window(0, current_win = stdscr); - -#ifdef NCURSES_MOUSE_VERSION - (void) mousemask(BUTTON1_CLICKED, (mmask_t *) NULL); -#endif /* NCURSES_MOUSE_VERSION */ - - while (!done && (ch = wgetch(current_win)) != ERR) { - switch (ch) { - case '?': - show_help(current_win); - break; - case 'b': - box_inside(current_win); - break; - case 'c': - current_win = create_my_window(current_win); - break; - case 'd': - current_win = create_my_derwin(current_win); - break; - case 'f': - fill_window(current_win, (chtype) wgetch(current_win)); - break; - case 'm': - case 'M': - if (!move_window(current_win, (ch == 'M'))) { - tail_line("error"); - continue; - } - break; - case 'q': - done = TRUE; - break; - case 's': - current_win = create_my_subwin(current_win); - break; - case 't': - if (!move_subwin(current_win)) { - tail_line("error"); - continue; - } - break; - case CTRL('L'): - refresh_all(current_win); - break; - case CTRL('N'): - current_win = next_window(current_win); - break; - case CTRL('P'): - current_win = prev_window(current_win); - break; -#if 0 - /* want to allow cursor to move around the current window too */ - /* want to test the resizing of windows and subwindows too */ - /* want to allow deleting a window also */ -#endif - default: - tail_line("unrecognized key (use '?' for help)"); - beep(); - continue; - } - tail_line("size [%d,%d] begin [%d,%d] parent [%d,%d]", - getmaxy(current_win), - getmaxx(current_win), - getbegy(current_win), - getbegx(current_win), - getpary(current_win), - getparx(current_win)); - wmove(current_win, 0, 0); - } - endwin(); - ExitProgram(EXIT_SUCCESS); -} diff --git a/deps/ncurses-5.9/test/ncurses b/deps/ncurses-5.9/test/ncurses deleted file mode 100755 index 603473a..0000000 Binary files a/deps/ncurses-5.9/test/ncurses and /dev/null differ diff --git a/deps/ncurses-5.9/test/ncurses.c b/deps/ncurses-5.9/test/ncurses.c deleted file mode 100644 index 5a422cf..0000000 --- a/deps/ncurses-5.9/test/ncurses.c +++ /dev/null @@ -1,6847 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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. * - ****************************************************************************/ -/**************************************************************************** - -NAME - ncurses.c --- ncurses library exerciser - -SYNOPSIS - ncurses - -DESCRIPTION - An interactive test module for the ncurses library. - -AUTHOR - Author: Eric S. Raymond 1993 - Thomas E. Dickey (beginning revision 1.27 in 1996). - -$Id: ncurses.c,v 1.365 2011/01/22 19:48:33 tom Exp $ - -***************************************************************************/ - -#include - -#ifdef __hpux -#undef mvwdelch /* HPUX 11.23 macro will not compile */ -#endif - -#if HAVE_GETTIMEOFDAY -#if HAVE_SYS_TIME_H && HAVE_SYS_TIME_SELECT -#include -#endif -#if HAVE_SYS_SELECT_H -#include -#endif -#endif - -#if USE_LIBPANEL -#include -#endif - -#if USE_LIBMENU -#include -#endif - -#if USE_LIBFORM -#include -#endif - -#ifdef NCURSES_VERSION - -#define NCURSES_CONST_PARAM const void - -#ifdef TRACE -static unsigned save_trace = TRACE_ORDINARY | TRACE_ICALLS | TRACE_CALLS; -extern unsigned _nc_tracing; -#endif - -#else - -#define NCURSES_CONST_PARAM char - -#define mmask_t chtype /* not specified in XSI */ - -#ifndef ACS_S3 -#ifdef CURSES_ACS_ARRAY -#define ACS_S3 (CURSES_ACS_ARRAY['p']) /* scan line 3 */ -#define ACS_S7 (CURSES_ACS_ARRAY['r']) /* scan line 7 */ -#define ACS_LEQUAL (CURSES_ACS_ARRAY['y']) /* less/equal */ -#define ACS_GEQUAL (CURSES_ACS_ARRAY['z']) /* greater/equal */ -#define ACS_PI (CURSES_ACS_ARRAY['{']) /* Pi */ -#define ACS_NEQUAL (CURSES_ACS_ARRAY['|']) /* not equal */ -#define ACS_STERLING (CURSES_ACS_ARRAY['}']) /* UK pound sign */ -#else -#define ACS_S3 (A_ALTCHARSET + 'p') /* scan line 3 */ -#define ACS_S7 (A_ALTCHARSET + 'r') /* scan line 7 */ -#define ACS_LEQUAL (A_ALTCHARSET + 'y') /* less/equal */ -#define ACS_GEQUAL (A_ALTCHARSET + 'z') /* greater/equal */ -#define ACS_PI (A_ALTCHARSET + '{') /* Pi */ -#define ACS_NEQUAL (A_ALTCHARSET + '|') /* not equal */ -#define ACS_STERLING (A_ALTCHARSET + '}') /* UK pound sign */ -#endif -#endif /* ACS_S3 */ - -#ifndef WACS_S3 -#ifdef CURSES_WACS_ARRAY -#define WACS_S3 (&(CURSES_WACS_ARRAY['p'])) /* scan line 3 */ -#define WACS_S7 (&(CURSES_WACS_ARRAY['r'])) /* scan line 7 */ -#define WACS_LEQUAL (&(CURSES_WACS_ARRAY['y'])) /* less/equal */ -#define WACS_GEQUAL (&(CURSES_WACS_ARRAY['z'])) /* greater/equal */ -#define WACS_PI (&(CURSES_WACS_ARRAY['{'])) /* Pi */ -#define WACS_NEQUAL (&(CURSES_WACS_ARRAY['|'])) /* not equal */ -#define WACS_STERLING (&(CURSES_WACS_ARRAY['}'])) /* UK pound sign */ -#endif -#endif - -#endif - -#if HAVE_WCSRTOMBS -#define count_wchars(src, len, state) wcsrtombs(0, &src, len, state) -#define trans_wchars(dst, src, len, state) wcsrtombs(dst, &src, len, state) -#define reset_wchars(state) init_mb(state) -#elif HAVE_WCSTOMBS && HAVE_MBTOWC && HAVE_MBLEN -#define count_wchars(src, len, state) wcstombs(0, src, len) -#define trans_wchars(dst, src, len, state) wcstombs(dst, src, len) -#define reset_wchars(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) -#define state_unused -#endif - -#if HAVE_MBSRTOWCS -#define count_mbytes(src, len, state) mbsrtowcs(0, &src, len, state) -#define trans_mbytes(dst, src, len, state) mbsrtowcs(dst, &src, len, state) -#define reset_mbytes(state) init_mb(state) -#elif HAVE_MBSTOWCS && HAVE_MBTOWC && HAVE_MBLEN -#define count_mbytes(src, len, state) mbstowcs(0, src, len) -#define trans_mbytes(dst, src, len, state) mbstowcs(dst, src, len) -#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) -#define state_unused -#endif - -#define ToggleAcs(temp,real) temp = ((temp == real) ? 0 : real) - -#define P(string) printw("%s\n", string) - -#define BLANK ' ' /* this is the background character */ - -#undef max_colors -static int max_colors; /* the actual number of colors we'll use */ -static int min_colors; /* the minimum color code */ -static bool use_colors; /* true if we use colors */ - -#undef max_pairs -static int max_pairs; /* ...and the number of color pairs */ - -typedef struct { - short red; - short green; - short blue; -} RGB_DATA; - -static RGB_DATA *all_colors; - -static void main_menu(bool); - -/* The behavior of mvhline, mvvline for negative/zero length is unspecified, - * though we can rely on negative x/y values to stop the macro. - */ -static void -do_h_line(int y, int x, chtype c, int to) -{ - if ((to) > (x)) - MvHLine(y, x, c, (to) - (x)); -} - -static void -do_v_line(int y, int x, chtype c, int to) -{ - if ((to) > (y)) - MvVLine(y, x, c, (to) - (y)); -} - -static void -Repaint(void) -{ - touchwin(stdscr); - touchwin(curscr); - wrefresh(curscr); -} - -static bool -isQuit(int c) -{ - return ((c) == QUIT || (c) == ESCAPE); -} -#define case_QUIT QUIT: case ESCAPE - -/* Common function to allow ^T to toggle trace-mode in the middle of a test - * so that trace-files can be made smaller. - */ -static int -wGetchar(WINDOW *win) -{ - int c; -#ifdef TRACE - while ((c = wgetch(win)) == CTRL('T')) { - if (_nc_tracing) { - save_trace = _nc_tracing; - Trace(("TOGGLE-TRACING OFF")); - _nc_tracing = 0; - } else { - _nc_tracing = save_trace; - } - trace(_nc_tracing); - if (_nc_tracing) - Trace(("TOGGLE-TRACING ON")); - } -#else - c = wgetch(win); -#endif - return c; -} -#define Getchar() wGetchar(stdscr) - -/* replaces wgetnstr(), since we want to be able to edit values */ -static void -wGetstring(WINDOW *win, char *buffer, int limit) -{ - int y0, x0, x, ch; - bool done = FALSE; - - echo(); - getyx(win, y0, x0); - (void) wattrset(win, A_REVERSE); - - x = (int) strlen(buffer); - while (!done) { - if (x > (int) strlen(buffer)) - x = (int) strlen(buffer); - wmove(win, y0, x0); - wprintw(win, "%-*s", limit, buffer); - wmove(win, y0, x0 + x); - switch (ch = wGetchar(win)) { - case '\n': - case KEY_ENTER: - done = TRUE; - break; - case CTRL('U'): - *buffer = '\0'; - break; - case '\b': - case KEY_BACKSPACE: - case KEY_DC: - if (x > 0) { - int j; - for (j = --x; (buffer[j] = buffer[j + 1]) != '\0'; ++j) { - ; - } - } else { - beep(); - } - break; - case KEY_LEFT: - if (x > 0) { - --x; - } else { - flash(); - } - break; - case KEY_RIGHT: - ++x; - break; - default: - if (!isprint(ch) || ch >= KEY_MIN) { - beep(); - } else if ((int) strlen(buffer) < limit) { - int j; - for (j = (int) strlen(buffer) + 1; j > x; --j) { - buffer[j] = buffer[j - 1]; - } - buffer[x++] = (char) ch; - } else { - flash(); - } - } - } - - wattroff(win, A_REVERSE); - wmove(win, y0, x0); - noecho(); -} - -#if USE_WIDEC_SUPPORT -static wchar_t -fullwidth_of(int ch) -{ - return (ch + 0xff10 - '0'); -} - -static void -make_fullwidth_text(wchar_t *target, const char *source) -{ - int ch; - while ((ch = *source++) != 0) { - *target++ = fullwidth_of(ch); - } - *target = 0; -} - -static void -make_narrow_text(wchar_t *target, const char *source) -{ - int ch; - while ((ch = *source++) != 0) { - *target++ = ch; - } - *target = 0; -} - -#if USE_LIBPANEL -static void -make_fullwidth_digit(cchar_t *target, int digit) -{ - wchar_t source[2]; - - source[0] = fullwidth_of(digit + '0'); - source[1] = 0; - setcchar(target, source, A_NORMAL, 0, 0); -} -#endif - -static int -wGet_wchar(WINDOW *win, wint_t *result) -{ - int c; -#ifdef TRACE - while ((c = wget_wch(win, result)) == CTRL('T')) { - if (_nc_tracing) { - save_trace = _nc_tracing; - Trace(("TOGGLE-TRACING OFF")); - _nc_tracing = 0; - } else { - _nc_tracing = save_trace; - } - trace(_nc_tracing); - if (_nc_tracing) - Trace(("TOGGLE-TRACING ON")); - } -#else - c = wget_wch(win, result); -#endif - return c; -} -#define Get_wchar(result) wGet_wchar(stdscr, result) - -/* replaces wgetn_wstr(), since we want to be able to edit values */ -static void -wGet_wstring(WINDOW *win, wchar_t *buffer, int limit) -{ - int y0, x0, x; - wint_t ch; - bool done = FALSE; - bool fkey = FALSE; - - echo(); - getyx(win, y0, x0); - (void) wattrset(win, A_REVERSE); - - x = (int) wcslen(buffer); - while (!done) { - if (x > (int) wcslen(buffer)) - x = (int) wcslen(buffer); - - /* clear the "window' */ - wmove(win, y0, x0); - wprintw(win, "%*s", limit, " "); - - /* write the existing buffer contents */ - wmove(win, y0, x0); - waddnwstr(win, buffer, limit); - - /* positions the cursor past character 'x' */ - wmove(win, y0, x0); - waddnwstr(win, buffer, x); - - switch (wGet_wchar(win, &ch)) { - case KEY_CODE_YES: - fkey = TRUE; - switch (ch) { - case KEY_ENTER: - ch = '\n'; - fkey = FALSE; - break; - case KEY_BACKSPACE: - case KEY_DC: - ch = '\b'; - fkey = FALSE; - break; - case KEY_LEFT: - case KEY_RIGHT: - break; - default: - ch = (wint_t) -1; - break; - } - break; - case OK: - fkey = FALSE; - break; - default: - ch = (wint_t) -1; - fkey = TRUE; - break; - } - - switch (ch) { - case '\n': - done = TRUE; - break; - case CTRL('U'): - *buffer = '\0'; - break; - case '\b': - if (x > 0) { - int j; - for (j = --x; (buffer[j] = buffer[j + 1]) != '\0'; ++j) { - ; - } - } else { - beep(); - } - break; - case KEY_LEFT: - if (x > 0) { - --x; - } else { - beep(); - } - break; - case KEY_RIGHT: - ++x; - break; - default: - if (fkey) { - beep(); - } else if ((int) wcslen(buffer) < limit) { - int j; - for (j = (int) wcslen(buffer) + 1; j > x; --j) { - buffer[j] = buffer[j - 1]; - } - buffer[x++] = (wchar_t) ch; - } else { - beep(); - } - } - } - - wattroff(win, A_REVERSE); - wmove(win, y0, x0); - noecho(); -} - -#endif - -static void -Pause(void) -{ - move(LINES - 1, 0); - addstr("Press any key to continue... "); - (void) Getchar(); -} - -static void -Cannot(const char *what) -{ - printw("\nThis %s terminal %s\n\n", getenv("TERM"), what); - Pause(); -} - -static void -ShellOut(bool message) -{ - if (message) - addstr("Shelling out..."); - def_prog_mode(); - endwin(); -#ifdef __MINGW32__ - system("cmd.exe"); -#else - system("sh"); -#endif - if (message) - addstr("returned from shellout.\n"); - refresh(); -} - -#ifdef NCURSES_MOUSE_VERSION -/* - * This function is the same as _tracemouse(), but we cannot count on that - * being available in the non-debug library. - */ -static const char * -mouse_decode(MEVENT const *ep) -{ - static char buf[80 + (5 * 10) + (32 * 15)]; - - (void) sprintf(buf, "id %2d at (%2d, %2d, %d) state %4lx = {", - ep->id, ep->x, ep->y, ep->z, (unsigned long) ep->bstate); - -#define SHOW(m, s) if ((ep->bstate & m)==m) {strcat(buf,s); strcat(buf, ", ");} - - SHOW(BUTTON1_RELEASED, "release-1"); - SHOW(BUTTON1_PRESSED, "press-1"); - SHOW(BUTTON1_CLICKED, "click-1"); - SHOW(BUTTON1_DOUBLE_CLICKED, "doubleclick-1"); - SHOW(BUTTON1_TRIPLE_CLICKED, "tripleclick-1"); -#if NCURSES_MOUSE_VERSION == 1 - SHOW(BUTTON1_RESERVED_EVENT, "reserved-1"); -#endif - - SHOW(BUTTON2_RELEASED, "release-2"); - SHOW(BUTTON2_PRESSED, "press-2"); - SHOW(BUTTON2_CLICKED, "click-2"); - SHOW(BUTTON2_DOUBLE_CLICKED, "doubleclick-2"); - SHOW(BUTTON2_TRIPLE_CLICKED, "tripleclick-2"); -#if NCURSES_MOUSE_VERSION == 1 - SHOW(BUTTON2_RESERVED_EVENT, "reserved-2"); -#endif - - SHOW(BUTTON3_RELEASED, "release-3"); - SHOW(BUTTON3_PRESSED, "press-3"); - SHOW(BUTTON3_CLICKED, "click-3"); - SHOW(BUTTON3_DOUBLE_CLICKED, "doubleclick-3"); - SHOW(BUTTON3_TRIPLE_CLICKED, "tripleclick-3"); -#if NCURSES_MOUSE_VERSION == 1 - SHOW(BUTTON3_RESERVED_EVENT, "reserved-3"); -#endif - - SHOW(BUTTON4_RELEASED, "release-4"); - SHOW(BUTTON4_PRESSED, "press-4"); - SHOW(BUTTON4_CLICKED, "click-4"); - SHOW(BUTTON4_DOUBLE_CLICKED, "doubleclick-4"); - SHOW(BUTTON4_TRIPLE_CLICKED, "tripleclick-4"); -#if NCURSES_MOUSE_VERSION == 1 - SHOW(BUTTON4_RESERVED_EVENT, "reserved-4"); -#endif - -#if NCURSES_MOUSE_VERSION == 2 - SHOW(BUTTON5_RELEASED, "release-5"); - SHOW(BUTTON5_PRESSED, "press-5"); - SHOW(BUTTON5_CLICKED, "click-5"); - SHOW(BUTTON5_DOUBLE_CLICKED, "doubleclick-5"); - SHOW(BUTTON5_TRIPLE_CLICKED, "tripleclick-5"); -#endif - - SHOW(BUTTON_CTRL, "ctrl"); - SHOW(BUTTON_SHIFT, "shift"); - SHOW(BUTTON_ALT, "alt"); - SHOW(ALL_MOUSE_EVENTS, "all-events"); - SHOW(REPORT_MOUSE_POSITION, "position"); - -#undef SHOW - - if (buf[strlen(buf) - 1] == ' ') - buf[strlen(buf) - 2] = '\0'; - (void) strcat(buf, "}"); - return (buf); -} - -static void -show_mouse(WINDOW *win) -{ - int y, x; - MEVENT event; - bool outside; - bool show_loc; - - getmouse(&event); - outside = !wenclose(win, event.y, event.x); - - if (outside) { - (void) wstandout(win); - waddstr(win, "KEY_MOUSE"); - (void) wstandend(win); - } else { - waddstr(win, "KEY_MOUSE"); - } - wprintw(win, ", %s", mouse_decode(&event)); - - if (outside) - win = stdscr; - - show_loc = wmouse_trafo(win, &event.y, &event.x, FALSE); - - if (show_loc) { - getyx(win, y, x); - wmove(win, event.y, event.x); - waddch(win, '*'); - wmove(win, y, x); - } - - if (outside) - wnoutrefresh(win); -} -#endif /* NCURSES_MOUSE_VERSION */ - -/**************************************************************************** - * - * Character input test - * - ****************************************************************************/ - -#define NUM_GETCH_FLAGS 256 -typedef bool GetchFlags[NUM_GETCH_FLAGS]; - -static void -setup_getch(WINDOW *win, GetchFlags flags) -{ - keypad(win, flags['k']); /* should be redundant, but for testing */ - meta(win, flags['m']); /* force this to a known state */ - if (flags['e']) - echo(); - else - noecho(); -} - -static void -init_getch(WINDOW *win, GetchFlags flags) -{ - memset(flags, FALSE, NUM_GETCH_FLAGS); - flags[UChar('k')] = (win == stdscr); - flags[UChar('m')] = TRUE; - - setup_getch(win, flags); -} - -static void -wgetch_help(WINDOW *win, GetchFlags flags) -{ - static const char *help[] = - { - "e -- toggle echo mode" - ,"g -- triggers a getstr test" - ,"k -- toggle keypad/literal mode" - ,"m -- toggle meta (7-bit/8-bit) mode" - ,"^q -- quit" - ,"s -- shell out\n" - ,"w -- create a new window" -#ifdef SIGTSTP - ,"z -- suspend this process" -#endif - }; - int y, x; - unsigned chk = ((SIZEOF(help) + 1) / 2); - unsigned n; - - getyx(win, y, x); - move(0, 0); - printw("Type any key to see its %s value. Also:\n", - flags['k'] ? "keypad" : "literal"); - for (n = 0; n < SIZEOF(help); ++n) { - int row = 1 + (int) (n % chk); - int col = (n >= chk) ? COLS / 2 : 0; - int flg = ((strstr(help[n], "toggle") != 0) - && (flags[UChar(*help[n])] != FALSE)); - if (flg) - (void) standout(); - MvPrintw(row, col, "%s", help[n]); - if (col == 0) - clrtoeol(); - if (flg) - (void) standend(); - } - wrefresh(stdscr); - wmove(win, y, x); -} - -static void -wgetch_wrap(WINDOW *win, int first_y) -{ - int last_y = getmaxy(win) - 1; - int y = getcury(win) + 1; - - if (y >= last_y) - y = first_y; - wmove(win, y, 0); - wclrtoeol(win); -} - -#if defined(KEY_RESIZE) && HAVE_WRESIZE -typedef struct { - WINDOW *text; - WINDOW *frame; -} WINSTACK; - -static WINSTACK *winstack = 0; -static unsigned len_winstack = 0; - -static void -forget_boxes(void) -{ - if (winstack != 0) { - free(winstack); - } - winstack = 0; - len_winstack = 0; -} - -static void -remember_boxes(unsigned level, WINDOW *txt_win, WINDOW *box_win) -{ - unsigned need = (level + 1) * 2; - - assert(level < (unsigned) COLS); - - if (winstack == 0) { - len_winstack = 20; - winstack = typeMalloc(WINSTACK, len_winstack); - } else if (need >= len_winstack) { - len_winstack = need; - winstack = typeRealloc(WINSTACK, len_winstack, winstack); - } - winstack[level].text = txt_win; - winstack[level].frame = box_win; -} - -#if USE_SOFTKEYS && (defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH < 20071229) && NCURSES_EXT_FUNCS -static void -slk_repaint(void) -{ - /* this chunk is now done in resize_term() */ - slk_touch(); - slk_clear(); - slk_noutrefresh(); -} - -#else -#define slk_repaint() /* nothing */ -#endif - -#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE -/* - * For wgetch_test(), we create pairs of windows - one for a box, one for text. - * Resize both and paint the box in the parent. - */ -static void -resize_boxes(unsigned level, WINDOW *win) -{ - unsigned n; - int base = 5; - int high = LINES - base; - int wide = COLS; - - touchwin(stdscr); - wnoutrefresh(stdscr); - - slk_repaint(); - - for (n = 0; n < level; ++n) { - wresize(winstack[n].frame, high, wide); - wresize(winstack[n].text, high - 2, wide - 2); - high -= 2; - wide -= 2; - werase(winstack[n].text); - box(winstack[n].frame, 0, 0); - wnoutrefresh(winstack[n].frame); - wprintw(winstack[n].text, - "size %dx%d\n", - getmaxy(winstack[n].text), - getmaxx(winstack[n].text)); - wnoutrefresh(winstack[n].text); - if (winstack[n].text == win) - break; - } - doupdate(); -} -#endif /* resize_boxes */ -#else -#define forget_boxes() /* nothing */ -#define remember_boxes(level,text,frame) /* nothing */ -#endif - -static void -wgetch_test(unsigned level, WINDOW *win, int delay) -{ - char buf[BUFSIZ]; - int first_y, first_x; - int c; - int incount = 0; - GetchFlags flags; - bool blocking = (delay < 0); - - init_getch(win, flags); - wtimeout(win, delay); - getyx(win, first_y, first_x); - - wgetch_help(win, flags); - wsetscrreg(win, first_y, getmaxy(win) - 1); - scrollok(win, TRUE); - - for (;;) { - while ((c = wGetchar(win)) == ERR) { - incount++; - if (blocking) { - (void) wprintw(win, "%05d: input error", incount); - break; - } else { - (void) wprintw(win, "%05d: input timed out", incount); - } - wgetch_wrap(win, first_y); - } - if (c == ERR && blocking) { - wprintw(win, "ERR"); - wgetch_wrap(win, first_y); - } else if (isQuit(c)) { - break; - } else if (c == 'e') { - flags[UChar('e')] = !flags[UChar('e')]; - setup_getch(win, flags); - wgetch_help(win, flags); - } else if (c == 'g') { - waddstr(win, "getstr test: "); - echo(); - wgetnstr(win, buf, sizeof(buf) - 1); - noecho(); - wprintw(win, "I saw %d characters:\n\t`%s'.", (int) strlen(buf), buf); - wclrtoeol(win); - wgetch_wrap(win, first_y); - } else if (c == 'k') { - flags[UChar('k')] = !flags[UChar('k')]; - setup_getch(win, flags); - wgetch_help(win, flags); - } else if (c == 'm') { - flags[UChar('m')] = !flags[UChar('m')]; - setup_getch(win, flags); - wgetch_help(win, flags); - } else if (c == 's') { - ShellOut(TRUE); - } else if (c == 'w') { - int high = getmaxy(win) - 1 - first_y + 1; - int wide = getmaxx(win) - first_x; - int old_y, old_x; - int new_y = first_y + getbegy(win); - int new_x = first_x + getbegx(win); - - getyx(win, old_y, old_x); - if (high > 2 && wide > 2) { - WINDOW *wb = newwin(high, wide, new_y, new_x); - WINDOW *wi = newwin(high - 2, wide - 2, new_y + 1, new_x + 1); - - box(wb, 0, 0); - wrefresh(wb); - wmove(wi, 0, 0); - remember_boxes(level, wi, wb); - wgetch_test(level + 1, wi, delay); - delwin(wi); - delwin(wb); - - wgetch_help(win, flags); - wmove(win, old_y, old_x); - touchwin(win); - wrefresh(win); - doupdate(); - } -#ifdef SIGTSTP - } else if (c == 'z') { - kill(getpid(), SIGTSTP); -#endif - } else { - wprintw(win, "Key pressed: %04o ", c); -#ifdef NCURSES_MOUSE_VERSION - if (c == KEY_MOUSE) { - show_mouse(win); - } else -#endif /* NCURSES_MOUSE_VERSION */ - if (c >= KEY_MIN) { -#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE - if (c == KEY_RESIZE) { - resize_boxes(level, win); - } -#endif - (void) waddstr(win, keyname(c)); - } else if (c >= 0x80) { - unsigned c2 = (unsigned) c; -#if !(defined(NCURSES_VERSION) || defined(_XOPEN_CURSES)) - /* at least Solaris SVR4 curses breaks unctrl(128), etc. */ - c2 &= 0x7f; -#endif - if (isprint(c)) - (void) wprintw(win, "%c", UChar(c)); - else if (c2 != UChar(c)) - (void) wprintw(win, "M-%s", unctrl(c2)); - else - (void) wprintw(win, "%s", unctrl(c2)); - waddstr(win, " (high-half character)"); - } else { - if (isprint(c)) - (void) wprintw(win, "%c (ASCII printable character)", c); - else - (void) wprintw(win, "%s (ASCII control character)", - unctrl(UChar(c))); - } - wgetch_wrap(win, first_y); - } - } - - wtimeout(win, -1); - - if (!level) - init_getch(win, flags); -} - -static int -begin_getch_test(void) -{ - char buf[BUFSIZ]; - int delay; - - refresh(); - -#ifdef NCURSES_MOUSE_VERSION - mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); -#endif - - (void) printw("Delay in 10ths of a second ( for blocking input)? "); - echo(); - getnstr(buf, sizeof(buf) - 1); - noecho(); - nonl(); - - if (isdigit(UChar(buf[0]))) { - delay = atoi(buf) * 100; - } else { - delay = -1; - } - raw(); - move(5, 0); - return delay; -} - -static void -finish_getch_test(void) -{ -#ifdef NCURSES_MOUSE_VERSION - mousemask(0, (mmask_t *) 0); -#endif - erase(); - noraw(); - nl(); - endwin(); -} - -static void -getch_test(void) -{ - int delay = begin_getch_test(); - - slk_restore(); - wgetch_test(0, stdscr, delay); - forget_boxes(); - finish_getch_test(); - slk_clear(); -} - -#if USE_WIDEC_SUPPORT -/* - * For wget_wch_test(), we create pairs of windows - one for a box, one for text. - * Resize both and paint the box in the parent. - */ -#if defined(KEY_RESIZE) && HAVE_WRESIZE -static void -resize_wide_boxes(unsigned level, WINDOW *win) -{ - unsigned n; - int base = 5; - int high = LINES - base; - int wide = COLS; - - touchwin(stdscr); - wnoutrefresh(stdscr); - - slk_repaint(); - - for (n = 0; n < level; ++n) { - wresize(winstack[n].frame, high, wide); - wresize(winstack[n].text, high - 2, wide - 2); - high -= 2; - wide -= 2; - werase(winstack[n].text); - box_set(winstack[n].frame, 0, 0); - wnoutrefresh(winstack[n].frame); - wprintw(winstack[n].text, - "size %dx%d\n", - getmaxy(winstack[n].text), - getmaxx(winstack[n].text)); - wnoutrefresh(winstack[n].text); - if (winstack[n].text == win) - break; - } - doupdate(); -} -#endif /* KEY_RESIZE */ - -static char * -wcstos(const wchar_t *src) -{ - int need; - char *result = 0; - const wchar_t *tmp = src; -#ifndef state_unused - mbstate_t state; -#endif - - reset_wchars(state); - if ((need = (int) count_wchars(tmp, 0, &state)) > 0) { - unsigned have = (unsigned) need; - if ((result = typeCalloc(char, have + 1)) != 0) { - tmp = src; - if (trans_wchars(result, tmp, have, &state) != have) { - free(result); - result = 0; - } - } - } - return result; -} - -static void -wget_wch_test(unsigned level, WINDOW *win, int delay) -{ - wchar_t wchar_buf[BUFSIZ]; - wint_t wint_buf[BUFSIZ]; - int first_y, first_x; - wint_t c; - int incount = 0; - GetchFlags flags; - bool blocking = (delay < 0); - int code; - char *temp; - - init_getch(win, flags); - wtimeout(win, delay); - getyx(win, first_y, first_x); - - wgetch_help(win, flags); - wsetscrreg(win, first_y, getmaxy(win) - 1); - scrollok(win, TRUE); - - for (;;) { - while ((code = wGet_wchar(win, &c)) == ERR) { - incount++; - if (blocking) { - (void) wprintw(win, "%05d: input error", incount); - break; - } else { - (void) wprintw(win, "%05d: input timed out", incount); - } - wgetch_wrap(win, first_y); - } - if (code == ERR && blocking) { - wprintw(win, "ERR"); - wgetch_wrap(win, first_y); - } else if (isQuit((int) c)) { - break; - } else if (c == 'e') { - flags[UChar('e')] = !flags[UChar('e')]; - setup_getch(win, flags); - wgetch_help(win, flags); - } else if (c == 'g') { - waddstr(win, "getstr test: "); - echo(); - code = wgetn_wstr(win, wint_buf, sizeof(wint_buf) - 1); - noecho(); - if (code == ERR) { - wprintw(win, "wgetn_wstr returns an error."); - } else { - int n; - for (n = 0; (wchar_buf[n] = (wchar_t) wint_buf[n]) != 0; ++n) { - ; - } - if ((temp = wcstos(wchar_buf)) != 0) { - wprintw(win, "I saw %d characters:\n\t`%s'.", - (int) wcslen(wchar_buf), temp); - free(temp); - } else { - wprintw(win, "I saw %d characters (cannot convert).", - (int) wcslen(wchar_buf)); - } - } - wclrtoeol(win); - wgetch_wrap(win, first_y); - } else if (c == 'k') { - flags[UChar('k')] = !flags[UChar('k')]; - setup_getch(win, flags); - wgetch_help(win, flags); - } else if (c == 'm') { - flags[UChar('m')] = !flags[UChar('m')]; - setup_getch(win, flags); - wgetch_help(win, flags); - } else if (c == 's') { - ShellOut(TRUE); - } else if (c == 'w') { - int high = getmaxy(win) - 1 - first_y + 1; - int wide = getmaxx(win) - first_x; - int old_y, old_x; - int new_y = first_y + getbegy(win); - int new_x = first_x + getbegx(win); - - getyx(win, old_y, old_x); - if (high > 2 && wide > 2) { - WINDOW *wb = newwin(high, wide, new_y, new_x); - WINDOW *wi = newwin(high - 2, wide - 2, new_y + 1, new_x + 1); - - box_set(wb, 0, 0); - wrefresh(wb); - wmove(wi, 0, 0); - remember_boxes(level, wi, wb); - wget_wch_test(level + 1, wi, delay); - delwin(wi); - delwin(wb); - - wgetch_help(win, flags); - wmove(win, old_y, old_x); - touchwin(win); - wrefresh(win); - } -#ifdef SIGTSTP - } else if (c == 'z') { - kill(getpid(), SIGTSTP); -#endif - } else { - wprintw(win, "Key pressed: %04o ", (int) c); -#ifdef NCURSES_MOUSE_VERSION - if (c == KEY_MOUSE) { - show_mouse(win); - } else -#endif /* NCURSES_MOUSE_VERSION */ - if (code == KEY_CODE_YES) { -#if defined(KEY_RESIZE) && HAVE_WRESIZE - if (c == KEY_RESIZE) { - resize_wide_boxes(level, win); - } -#endif - (void) waddstr(win, keyname((wchar_t) c)); - } else { - (void) waddstr(win, key_name((wchar_t) c)); - if (c < 256 && iscntrl(c)) { - (void) wprintw(win, " (control character)"); - } else { - (void) wprintw(win, " = %#x (printable character)", - (unsigned) c); - } - } - wgetch_wrap(win, first_y); - } - } - - wtimeout(win, -1); - - if (!level) - init_getch(win, flags); -} - -static void -get_wch_test(void) -{ - int delay = begin_getch_test(); - - slk_restore(); - wget_wch_test(0, stdscr, delay); - forget_boxes(); - finish_getch_test(); - slk_clear(); -} -#endif - -/**************************************************************************** - * - * Character attributes test - * - ****************************************************************************/ - -#if HAVE_SETUPTERM || HAVE_TGETENT -#define get_ncv() TIGETNUM("ncv","NC") -#define get_xmc() TIGETNUM("xmc","sg") -#else -#define get_ncv() -1 -#define get_xmc() -1 -#endif - -#if !HAVE_TERMATTRS -static chtype -my_termattrs(void) -{ - static int first = TRUE; - static chtype result = 0; - - if (first) { -#if !HAVE_TIGETSTR - char buffer[4096]; - char parsed[4096]; - char *area_pointer = parsed; - - tgetent(buffer, getenv("TERM")); -#endif - - if (TIGETSTR("smso", "so")) - result |= A_STANDOUT; - if (TIGETSTR("smul", "us")) - result |= A_UNDERLINE; - if (TIGETSTR("rev", "mr")) - result |= A_REVERSE; - if (TIGETSTR("blink", "mb")) - result |= A_BLINK; - if (TIGETSTR("dim", "mh")) - result |= A_DIM; - if (TIGETSTR("bold", "md")) - result |= A_BOLD; - if (TIGETSTR("smacs", "ac")) - result |= A_ALTCHARSET; - - first = FALSE; - } - return result; -} -#define termattrs() my_termattrs() -#endif - -#define MAX_ATTRSTRING 31 -#define LEN_ATTRSTRING 26 - -static char attr_test_string[MAX_ATTRSTRING + 1]; - -static void -attr_legend(WINDOW *helpwin) -{ - int row = 1; - int col = 1; - - MvWPrintw(helpwin, row++, col, - "ESC to exit."); - MvWPrintw(helpwin, row++, col, - "^L repaints."); - ++row; - MvWPrintw(helpwin, row++, col, - "Modify the test strings:"); - MvWPrintw(helpwin, row++, col, - " A digit sets gaps on each side of displayed attributes"); - MvWPrintw(helpwin, row++, col, - " shifts the text left/right. "); - ++row; - MvWPrintw(helpwin, row++, col, - "Toggles:"); - if (use_colors) { - MvWPrintw(helpwin, row++, col, - " f/F/b/F toggle foreground/background background color"); - MvWPrintw(helpwin, row++, col, - " t/T toggle text/background color attribute"); - } - MvWPrintw(helpwin, row++, col, - " a/A toggle ACS (alternate character set) mapping"); - MvWPrintw(helpwin, row, col, - " v/V toggle video attribute to combine with each line"); -} - -static void -show_color_attr(int fg, int bg, int tx) -{ - if (use_colors) { - printw(" Colors (fg %d, bg %d", fg, bg); - if (tx >= 0) - printw(", text %d", tx); - printw("),"); - } -} - -static bool -cycle_color_attr(int ch, short *fg, short *bg, short *tx) -{ - bool error = FALSE; - - if (use_colors) { - switch (ch) { - case 'f': - *fg = (short) (*fg + 1); - break; - case 'F': - *fg = (short) (*fg - 1); - break; - case 'b': - *bg = (short) (*bg + 1); - break; - case 'B': - *bg = (short) (*bg - 1); - break; - case 't': - *tx = (short) (*tx + 1); - break; - case 'T': - *tx = (short) (*tx - 1); - break; - default: - beep(); - error = TRUE; - break; - } - if (*fg >= COLORS) - *fg = (short) min_colors; - if (*fg < min_colors) - *fg = (short) (COLORS - 1); - if (*bg >= COLORS) - *bg = (short) min_colors; - if (*bg < min_colors) - *bg = (short) (COLORS - 1); - if (*tx >= COLORS) - *tx = -1; - if (*tx < -1) - *tx = (short) (COLORS - 1); - } else { - beep(); - error = TRUE; - } - return error; -} - -static void -adjust_attr_string(int adjust) -{ - int first = ((int) UChar(attr_test_string[0])) + adjust; - int last = first + LEN_ATTRSTRING; - - if (first >= ' ' && last <= '~') { /* 32..126 */ - int j, k; - for (j = 0, k = first; j < MAX_ATTRSTRING && k <= last; ++j, ++k) { - attr_test_string[j] = (char) k; - if (((k + 1 - first) % 5) == 0) { - if (++j >= MAX_ATTRSTRING) - break; - attr_test_string[j] = ' '; - } - } - while (j < MAX_ATTRSTRING) - attr_test_string[j++] = ' '; - attr_test_string[j] = '\0'; - } else { - beep(); - } -} - -static void -init_attr_string(void) -{ - attr_test_string[0] = 'a'; - adjust_attr_string(0); -} - -static int -show_attr(int row, int skip, bool arrow, chtype attr, const char *name) -{ - int ncv = get_ncv(); - chtype test = attr & (chtype) (~A_ALTCHARSET); - - if (arrow) - MvPrintw(row, 5, "-->"); - MvPrintw(row, 8, "%s mode:", name); - MvPrintw(row, 24, "|"); - if (skip) - printw("%*s", skip, " "); - /* - * Just for testing, write text using the alternate character set one - * character at a time (to pass its rendition directly), and use the - * string operation for the other attributes. - */ - if (attr & A_ALTCHARSET) { - const char *s; - chtype ch; - - for (s = attr_test_string; *s != '\0'; ++s) { - ch = UChar(*s); - addch(ch | attr); - } - } else { - (void) attrset(attr); - addstr(attr_test_string); - attroff(attr); - } - if (skip) - printw("%*s", skip, " "); - printw("|"); - if (test != A_NORMAL) { - if (!(termattrs() & test)) { - printw(" (N/A)"); - } else { - if (ncv > 0 && (getbkgd(stdscr) & A_COLOR)) { - static const chtype table[] = - { - A_STANDOUT, - A_UNDERLINE, - A_REVERSE, - A_BLINK, - A_DIM, - A_BOLD, -#ifdef A_INVIS - A_INVIS, -#endif - A_PROTECT, - A_ALTCHARSET - }; - unsigned n; - bool found = FALSE; - for (n = 0; n < SIZEOF(table); n++) { - if ((table[n] & attr) != 0 - && ((1 << n) & ncv) != 0) { - found = TRUE; - break; - } - } - if (found) - printw(" (NCV)"); - } - if ((termattrs() & test) != test) - printw(" (Part)"); - } - } - return row + 2; -} -/* *INDENT-OFF* */ -static const struct { - chtype attr; - NCURSES_CONST char * name; -} attrs_to_test[] = { - { A_STANDOUT, "STANDOUT" }, - { A_REVERSE, "REVERSE" }, - { A_BOLD, "BOLD" }, - { A_UNDERLINE, "UNDERLINE" }, - { A_DIM, "DIM" }, - { A_BLINK, "BLINK" }, - { A_PROTECT, "PROTECT" }, -#ifdef A_INVIS - { A_INVIS, "INVISIBLE" }, -#endif - { A_NORMAL, "NORMAL" }, -}; -/* *INDENT-ON* */ - -static bool -attr_getc(int *skip, short *fg, short *bg, short *tx, int *ac, unsigned *kc) -{ - bool result = TRUE; - bool error = FALSE; - WINDOW *helpwin; - - do { - int ch = Getchar(); - - error = FALSE; - if (ch < 256 && isdigit(ch)) { - *skip = (ch - '0'); - } else { - switch (ch) { - case CTRL('L'): - Repaint(); - break; - case '?': - if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { - box(helpwin, 0, 0); - attr_legend(helpwin); - wGetchar(helpwin); - delwin(helpwin); - } - break; - case 'a': - *ac = 0; - break; - case 'A': - *ac = A_ALTCHARSET; - break; - case 'v': - if (*kc == 0) - *kc = SIZEOF(attrs_to_test) - 1; - else - *kc -= 1; - break; - case 'V': - *kc += 1; - if (*kc >= SIZEOF(attrs_to_test)) - *kc = 0; - break; - case '<': - adjust_attr_string(-1); - break; - case '>': - adjust_attr_string(1); - break; - case case_QUIT: - result = FALSE; - break; - default: - error = cycle_color_attr(ch, fg, bg, tx); - break; - } - } - } while (error); - return result; -} - -static void -attr_test(void) -/* test text attributes */ -{ - int n; - int skip = get_xmc(); - short fg = COLOR_BLACK; /* color pair 0 is special */ - short bg = COLOR_BLACK; - short tx = -1; - int ac = 0; - unsigned j, k; - - if (skip < 0) - skip = 0; - - n = skip; /* make it easy */ - k = SIZEOF(attrs_to_test) - 1; - init_attr_string(); - - do { - int row = 2; - chtype normal = A_NORMAL | BLANK; - chtype extras = (chtype) ac; - - if (use_colors) { - short pair = (short) (fg != COLOR_BLACK || bg != COLOR_BLACK); - if (pair != 0) { - pair = 1; - if (init_pair(pair, fg, bg) == ERR) { - beep(); - } else { - normal |= (chtype) COLOR_PAIR(pair); - } - } - if (tx >= 0) { - pair = 2; - if (init_pair(pair, tx, bg) == ERR) { - beep(); - } else { - extras |= (chtype) COLOR_PAIR(pair); - } - } - } - bkgd(normal); - bkgdset(normal); - erase(); - - box(stdscr, 0, 0); - MvAddStr(0, 20, "Character attribute test display"); - - for (j = 0; j < SIZEOF(attrs_to_test); ++j) { - bool arrow = (j == k); - row = show_attr(row, n, arrow, - extras | - attrs_to_test[j].attr | - attrs_to_test[k].attr, - attrs_to_test[j].name); - } - - MvPrintw(row, 8, - "This terminal does %shave the magic-cookie glitch", - get_xmc() > -1 ? "" : "not "); - MvPrintw(row + 1, 8, "Enter '?' for help."); - show_color_attr(fg, bg, tx); - printw(" ACS (%d)", ac != 0); - - refresh(); - } while (attr_getc(&n, &fg, &bg, &tx, &ac, &k)); - - bkgdset(A_NORMAL | BLANK); - erase(); - endwin(); -} - -#if USE_WIDEC_SUPPORT -static wchar_t wide_attr_test_string[MAX_ATTRSTRING + 1]; - -static void -wide_adjust_attr_string(int adjust) -{ - int first = ((int) UChar(wide_attr_test_string[0])) + adjust; - int last = first + LEN_ATTRSTRING; - - if (first >= ' ' && last <= '~') { /* 32..126 */ - int j, k; - for (j = 0, k = first; j < MAX_ATTRSTRING && k <= last; ++j, ++k) { - wide_attr_test_string[j] = k; - if (((k + 1 - first) % 5) == 0) { - if (++j >= MAX_ATTRSTRING) - break; - wide_attr_test_string[j] = ' '; - } - } - while (j < MAX_ATTRSTRING) - wide_attr_test_string[j++] = ' '; - wide_attr_test_string[j] = '\0'; - } else { - beep(); - } -} - -static void -wide_init_attr_string(void) -{ - wide_attr_test_string[0] = 'a'; - wide_adjust_attr_string(0); -} - -static void -set_wide_background(short pair) -{ - cchar_t normal; - wchar_t blank[2]; - - blank[0] = ' '; - blank[1] = 0; - setcchar(&normal, blank, A_NORMAL, pair, 0); - bkgrnd(&normal); - bkgrndset(&normal); -} - -static attr_t -get_wide_background(void) -{ - attr_t result = A_NORMAL; - attr_t attr; - cchar_t ch; - short pair; - wchar_t wch[10]; - - if (getbkgrnd(&ch) != ERR) { - if (getcchar(&ch, wch, &attr, &pair, 0) != ERR) { - result = attr; - } - } - return result; -} - -static int -wide_show_attr(int row, int skip, bool arrow, chtype attr, short pair, const char *name) -{ - int ncv = get_ncv(); - chtype test = attr & ~WA_ALTCHARSET; - - if (arrow) - MvPrintw(row, 5, "-->"); - MvPrintw(row, 8, "%s mode:", name); - MvPrintw(row, 24, "|"); - if (skip) - printw("%*s", skip, " "); - - /* - * Just for testing, write text using the alternate character set one - * character at a time (to pass its rendition directly), and use the - * string operation for the other attributes. - */ - if (attr & WA_ALTCHARSET) { - const wchar_t *s; - cchar_t ch; - - for (s = wide_attr_test_string; *s != L'\0'; ++s) { - wchar_t fill[2]; - fill[0] = *s; - fill[1] = L'\0'; - setcchar(&ch, fill, attr, pair, 0); - add_wch(&ch); - } - } else { - attr_t old_attr; - short old_pair; - - (void) attr_get(&old_attr, &old_pair, 0); - (void) attr_set(attr, pair, 0); - addwstr(wide_attr_test_string); - (void) attr_set(old_attr, old_pair, 0); - } - if (skip) - printw("%*s", skip, " "); - printw("|"); - if (test != A_NORMAL) { - if (!(term_attrs() & test)) { - printw(" (N/A)"); - } else { - if (ncv > 0 && (get_wide_background() & A_COLOR)) { - static const attr_t table[] = - { - WA_STANDOUT, - WA_UNDERLINE, - WA_REVERSE, - WA_BLINK, - WA_DIM, - WA_BOLD, - WA_INVIS, - WA_PROTECT, - WA_ALTCHARSET - }; - unsigned n; - bool found = FALSE; - for (n = 0; n < SIZEOF(table); n++) { - if ((table[n] & attr) != 0 - && ((1 << n) & ncv) != 0) { - found = TRUE; - break; - } - } - if (found) - printw(" (NCV)"); - } - if ((term_attrs() & test) != test) - printw(" (Part)"); - } - } - return row + 2; -} - -static bool -wide_attr_getc(int *skip, short *fg, short *bg, short *tx, int *ac, unsigned *kc) -{ - bool result = TRUE; - bool error = FALSE; - WINDOW *helpwin; - - do { - int ch = Getchar(); - - error = FALSE; - if (ch < 256 && isdigit(ch)) { - *skip = (ch - '0'); - } else { - switch (ch) { - case CTRL('L'): - Repaint(); - break; - case '?': - if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { - box_set(helpwin, 0, 0); - attr_legend(helpwin); - wGetchar(helpwin); - delwin(helpwin); - } - break; - case 'a': - *ac = 0; - break; - case 'A': - *ac = A_ALTCHARSET; - break; - case 'v': - if (*kc == 0) - *kc = SIZEOF(attrs_to_test) - 1; - else - *kc -= 1; - break; - case 'V': - *kc += 1; - if (*kc >= SIZEOF(attrs_to_test)) - *kc = 0; - break; - case '<': - wide_adjust_attr_string(-1); - break; - case '>': - wide_adjust_attr_string(1); - break; - case case_QUIT: - result = FALSE; - break; - default: - error = cycle_color_attr(ch, fg, bg, tx); - break; - } - } - } while (error); - return result; -} - -static void -wide_attr_test(void) -/* test text attributes using wide-character calls */ -{ - int n; - int skip = get_xmc(); - short fg = COLOR_BLACK; /* color pair 0 is special */ - short bg = COLOR_BLACK; - short tx = -1; - int ac = 0; - unsigned j, k; - - if (skip < 0) - skip = 0; - - n = skip; /* make it easy */ - k = SIZEOF(attrs_to_test) - 1; - wide_init_attr_string(); - - do { - int row = 2; - short pair = 0; - short extras = 0; - - if (use_colors) { - pair = (short) (fg != COLOR_BLACK || bg != COLOR_BLACK); - if (pair != 0) { - pair = 1; - if (init_pair(pair, fg, bg) == ERR) { - beep(); - } - } - extras = pair; - if (tx >= 0) { - extras = 2; - if (init_pair(extras, tx, bg) == ERR) { - beep(); - } - } - } - set_wide_background(pair); - erase(); - - box_set(stdscr, 0, 0); - MvAddStr(0, 20, "Character attribute test display"); - - for (j = 0; j < SIZEOF(attrs_to_test); ++j) { - row = wide_show_attr(row, n, j == k, - ((attr_t) ac | - attrs_to_test[j].attr | - attrs_to_test[k].attr), - extras, - attrs_to_test[j].name); - } - - MvPrintw(row, 8, - "This terminal does %shave the magic-cookie glitch", - get_xmc() > -1 ? "" : "not "); - MvPrintw(row + 1, 8, "Enter '?' for help."); - show_color_attr(fg, bg, tx); - printw(" ACS (%d)", ac != 0); - - refresh(); - } while (wide_attr_getc(&n, &fg, &bg, &tx, &ac, &k)); - - set_wide_background(0); - erase(); - endwin(); -} -#endif - -/**************************************************************************** - * - * Color support tests - * - ****************************************************************************/ - -static NCURSES_CONST char *the_color_names[] = -{ - "black", - "red", - "green", - "yellow", - "blue", - "magenta", - "cyan", - "white", - "BLACK", - "RED", - "GREEN", - "YELLOW", - "BLUE", - "MAGENTA", - "CYAN", - "WHITE" -}; - -static void -show_color_name(int y, int x, int color, bool wide) -{ - if (move(y, x) != ERR) { - char temp[80]; - int width = 8; - - if (wide) { - sprintf(temp, "%02d", color); - width = 4; - } else if (color >= 8) { - sprintf(temp, "[%02d]", color); - } else if (color < 0) { - strcpy(temp, "default"); - } else { - strcpy(temp, the_color_names[color]); - } - printw("%-*.*s", width, width, temp); - } -} - -static void -color_legend(WINDOW *helpwin, bool wide) -{ - int row = 1; - int col = 1; - - MvWPrintw(helpwin, row++, col, - "ESC to exit."); - ++row; - MvWPrintw(helpwin, row++, col, - "Use up/down arrow to scroll through the display if it is"); - MvWPrintw(helpwin, row++, col, - "longer than one screen. Control/N and Control/P can be used"); - MvWPrintw(helpwin, row++, col, - "in place of up/down arrow. Use pageup/pagedown to scroll a"); - MvWPrintw(helpwin, row++, col, - "full screen; control/B and control/F can be used here."); - ++row; - MvWPrintw(helpwin, row++, col, - "Toggles:"); - MvWPrintw(helpwin, row++, col, - " a/A toggle altcharset off/on"); - MvWPrintw(helpwin, row++, col, - " b/B toggle bold off/on"); - MvWPrintw(helpwin, row++, col, - " n/N toggle text/number on/off"); - MvWPrintw(helpwin, row++, col, - " r/R toggle reverse on/off"); - MvWPrintw(helpwin, row++, col, - " w/W toggle width between 8/16 colors"); -#if USE_WIDEC_SUPPORT - if (wide) { - MvWPrintw(helpwin, row++, col, - "Wide characters:"); - MvWPrintw(helpwin, row, col, - " x/X toggle text between ASCII and wide-character"); - } -#else - (void) wide; -#endif -} - -#define set_color_test(name, value) if (name != value) { name = value; base_row = 0; } - -/* generate a color test pattern */ -static void -color_test(void) -{ - short i; - int top = 0, width; - int base_row = 0; - int grid_top = top + 3; - int page_size = (LINES - grid_top); - int pairs_max = PAIR_NUMBER(A_COLOR) + 1; - int row_limit; - int per_row; - char numbered[80]; - const char *hello; - bool done = FALSE; - bool opt_acsc = FALSE; - bool opt_bold = FALSE; - bool opt_revs = FALSE; - bool opt_nums = FALSE; - bool opt_wide = FALSE; - WINDOW *helpwin; - - if (COLORS * COLORS == COLOR_PAIRS) { - int limit = (COLORS - min_colors) * (COLORS - min_colors); - if (pairs_max > limit) - pairs_max = limit; - } else { - if (pairs_max > COLOR_PAIRS) - pairs_max = COLOR_PAIRS; - } - - while (!done) { - int shown = 0; - - /* this assumes an 80-column line */ - if (opt_wide) { - width = 4; - hello = "Test"; - per_row = (COLORS > 8) ? 16 : 8; - } else { - width = 8; - hello = "Hello"; - per_row = 8; - } - per_row -= min_colors; - - row_limit = (pairs_max + per_row - 1) / per_row; - - move(0, 0); - (void) printw("There are %d color pairs and %d colors%s\n", - pairs_max, COLORS, - min_colors ? " besides 'default'" : ""); - - clrtobot(); - MvPrintw(top + 1, 0, - "%dx%d matrix of foreground/background colors, bold *%s*\n", - row_limit, - per_row, - opt_bold ? "on" : "off"); - - /* show color names/numbers across the top */ - for (i = 0; i < per_row; i++) - show_color_name(top + 2, (i + 1) * width, i + min_colors, opt_wide); - - /* show a grid of colors, with color names/ numbers on the left */ - for (i = (short) (base_row * per_row); i < pairs_max; i++) { - int row = grid_top + (i / per_row) - base_row; - int col = (i % per_row + 1) * width; - short pair = i; - -#define InxToFG(i) (short) ((i % (COLORS - min_colors)) + min_colors) -#define InxToBG(i) (short) ((i / (COLORS - min_colors)) + min_colors) - if (row >= 0 && move(row, col) != ERR) { - short fg = InxToFG(i); - short bg = InxToBG(i); - - init_pair(pair, fg, bg); - attron((attr_t) COLOR_PAIR(pair)); - if (opt_acsc) - attron((attr_t) A_ALTCHARSET); - if (opt_bold) - attron((attr_t) A_BOLD); - if (opt_revs) - attron((attr_t) A_REVERSE); - - if (opt_nums) { - sprintf(numbered, "{%02X}", i); - hello = numbered; - } - printw("%-*.*s", width, width, hello); - (void) attrset(A_NORMAL); - - if ((i % per_row) == 0 && InxToFG(i) == min_colors) { - show_color_name(row, 0, InxToBG(i), opt_wide); - } - ++shown; - } else if (shown) { - break; - } - } - - switch (wGetchar(stdscr)) { - case 'a': - opt_acsc = FALSE; - break; - case 'A': - opt_acsc = TRUE; - break; - case 'b': - opt_bold = FALSE; - break; - case 'B': - opt_bold = TRUE; - break; - case 'n': - opt_nums = FALSE; - break; - case 'N': - opt_nums = TRUE; - break; - case 'r': - opt_revs = FALSE; - break; - case 'R': - opt_revs = TRUE; - break; - case case_QUIT: - done = TRUE; - continue; - case 'w': - set_color_test(opt_wide, FALSE); - break; - case 'W': - set_color_test(opt_wide, TRUE); - break; - case CTRL('p'): - case KEY_UP: - if (base_row <= 0) { - beep(); - } else { - base_row -= 1; - } - break; - case CTRL('n'): - case KEY_DOWN: - if (base_row + page_size >= row_limit) { - beep(); - } else { - base_row += 1; - } - break; - case CTRL('b'): - case KEY_PREVIOUS: - case KEY_PPAGE: - if (base_row <= 0) { - beep(); - } else { - base_row -= (page_size - 1); - if (base_row < 0) - base_row = 0; - } - break; - case CTRL('f'): - case KEY_NEXT: - case KEY_NPAGE: - if (base_row + page_size >= row_limit) { - beep(); - } else { - base_row += page_size - 1; - if (base_row + page_size >= row_limit) { - base_row = row_limit - page_size - 1; - } - } - break; - case '?': - if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { - box(helpwin, 0, 0); - color_legend(helpwin, FALSE); - wGetchar(helpwin); - delwin(helpwin); - } - break; - default: - beep(); - continue; - } - } - - erase(); - endwin(); -} - -#if USE_WIDEC_SUPPORT -/* generate a color test pattern */ -static void -wide_color_test(void) -{ - int i; - int top = 0, width; - int base_row = 0; - int grid_top = top + 3; - int page_size = (LINES - grid_top); - int pairs_max = (unsigned short) (-1); - int row_limit; - int per_row; - char numbered[80]; - const char *hello; - bool done = FALSE; - bool opt_acsc = FALSE; - bool opt_bold = FALSE; - bool opt_revs = FALSE; - bool opt_wide = FALSE; - bool opt_nums = FALSE; - bool opt_xchr = FALSE; - wchar_t buffer[10]; - WINDOW *helpwin; - - if (COLORS * COLORS == COLOR_PAIRS) { - int limit = (COLORS - min_colors) * (COLORS - min_colors); - if (pairs_max > limit) - pairs_max = limit; - } else { - if (pairs_max > COLOR_PAIRS) - pairs_max = COLOR_PAIRS; - } - - while (!done) { - int shown = 0; - - /* this assumes an 80-column line */ - if (opt_wide) { - width = 4; - hello = "Test"; - per_row = (COLORS > 8) ? 16 : 8; - } else { - width = 8; - hello = "Hello"; - per_row = 8; - } - per_row -= min_colors; - - if (opt_xchr) { - make_fullwidth_text(buffer, hello); - width *= 2; - per_row /= 2; - } else { - make_narrow_text(buffer, hello); - } - - row_limit = (pairs_max + per_row - 1) / per_row; - - move(0, 0); - (void) printw("There are %d color pairs and %d colors%s\n", - pairs_max, COLORS, - min_colors ? " besides 'default'" : ""); - - clrtobot(); - MvPrintw(top + 1, 0, - "%dx%d matrix of foreground/background colors, bold *%s*\n", - row_limit, - per_row, - opt_bold ? "on" : "off"); - - /* show color names/numbers across the top */ - for (i = 0; i < per_row; i++) - show_color_name(top + 2, (i + 1) * width, i + min_colors, opt_wide); - - /* show a grid of colors, with color names/ numbers on the left */ - for (i = (base_row * per_row); i < pairs_max; i++) { - int row = grid_top + (i / per_row) - base_row; - int col = (i % per_row + 1) * width; - short pair = (short) i; - - if (row >= 0 && move(row, col) != ERR) { - init_pair(pair, InxToFG(i), InxToBG(i)); - color_set(pair, NULL); - if (opt_acsc) - attr_on((attr_t) A_ALTCHARSET, NULL); - if (opt_bold) - attr_on((attr_t) A_BOLD, NULL); - if (opt_revs) - attr_on((attr_t) A_REVERSE, NULL); - - if (opt_nums) { - sprintf(numbered, "{%02X}", i); - if (opt_xchr) { - make_fullwidth_text(buffer, numbered); - } else { - make_narrow_text(buffer, numbered); - } - } - addnwstr(buffer, width); - (void) attr_set(A_NORMAL, 0, NULL); - - if ((i % per_row) == 0 && InxToFG(i) == min_colors) { - show_color_name(row, 0, InxToBG(i), opt_wide); - } - ++shown; - } else if (shown) { - break; - } - } - - switch (wGetchar(stdscr)) { - case 'a': - opt_acsc = FALSE; - break; - case 'A': - opt_acsc = TRUE; - break; - case 'b': - opt_bold = FALSE; - break; - case 'B': - opt_bold = TRUE; - break; - case 'n': - opt_nums = FALSE; - break; - case 'N': - opt_nums = TRUE; - break; - case 'r': - opt_revs = FALSE; - break; - case 'R': - opt_revs = TRUE; - break; - case case_QUIT: - done = TRUE; - continue; - case 'w': - set_color_test(opt_wide, FALSE); - break; - case 'W': - set_color_test(opt_wide, TRUE); - break; - case 'x': - opt_xchr = FALSE; - break; - case 'X': - opt_xchr = TRUE; - break; - case CTRL('p'): - case KEY_UP: - if (base_row <= 0) { - beep(); - } else { - base_row -= 1; - } - break; - case CTRL('n'): - case KEY_DOWN: - if (base_row + page_size >= row_limit) { - beep(); - } else { - base_row += 1; - } - break; - case CTRL('b'): - case KEY_PREVIOUS: - case KEY_PPAGE: - if (base_row <= 0) { - beep(); - } else { - base_row -= (page_size - 1); - if (base_row < 0) - base_row = 0; - } - break; - case CTRL('f'): - case KEY_NEXT: - case KEY_NPAGE: - if (base_row + page_size >= row_limit) { - beep(); - } else { - base_row += page_size - 1; - if (base_row + page_size >= row_limit) { - base_row = row_limit - page_size - 1; - } - } - break; - case '?': - if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { - box(helpwin, 0, 0); - color_legend(helpwin, TRUE); - wGetchar(helpwin); - delwin(helpwin); - } - break; - default: - beep(); - continue; - } - } - - erase(); - endwin(); -} -#endif /* USE_WIDEC_SUPPORT */ - -static void -change_color(short current, int field, int value, int usebase) -{ - short red, green, blue; - - color_content(current, &red, &green, &blue); - - switch (field) { - case 0: - red = (short) (usebase ? (red + value) : value); - break; - case 1: - green = (short) (usebase ? (green + value) : value); - break; - case 2: - blue = (short) (usebase ? (blue + value) : value); - break; - } - - if (init_color(current, red, green, blue) == ERR) - beep(); -} - -static void -init_all_colors(void) -{ - short c; - - for (c = 0; c < COLORS; ++c) - init_color(c, - all_colors[c].red, - all_colors[c].green, - all_colors[c].blue); -} - -#define scaled_rgb(n) ((255 * (n)) / 1000) - -static void -color_edit(void) -/* display the color test pattern, without trying to edit colors */ -{ - int i; - int current = 0; - int this_c = 0, value = 0, field = 0; - int last_c; - int top_color = 0; - int page_size = (LINES - 6); - - init_all_colors(); - refresh(); - - for (i = 0; i < max_colors; i++) - init_pair((short) i, (short) COLOR_WHITE, (short) i); - - MvPrintw(LINES - 2, 0, "Number: %d", value); - - do { - short red, green, blue; - - attron(A_BOLD); - MvAddStr(0, 20, "Color RGB Value Editing"); - attroff(A_BOLD); - - for (i = (short) top_color; - (i - top_color < page_size) - && (i < max_colors); i++) { - char numeric[80]; - - sprintf(numeric, "[%d]", i); - MvPrintw(2 + i - top_color, 0, "%c %-8s:", - (i == current ? '>' : ' '), - (i < (int) SIZEOF(the_color_names) - ? the_color_names[i] : numeric)); - (void) attrset((attr_t) COLOR_PAIR(i)); - addstr(" "); - (void) attrset(A_NORMAL); - - color_content((short) i, &red, &green, &blue); - addstr(" R = "); - if (current == i && field == 0) - attron(A_STANDOUT); - printw("%04d", red); - if (current == i && field == 0) - (void) attrset(A_NORMAL); - addstr(", G = "); - if (current == i && field == 1) - attron(A_STANDOUT); - printw("%04d", green); - if (current == i && field == 1) - (void) attrset(A_NORMAL); - addstr(", B = "); - if (current == i && field == 2) - attron(A_STANDOUT); - printw("%04d", blue); - if (current == i && field == 2) - (void) attrset(A_NORMAL); - (void) attrset(A_NORMAL); - printw(" ( %3d %3d %3d )", - scaled_rgb(red), - scaled_rgb(green), - scaled_rgb(blue)); - } - - MvAddStr(LINES - 3, 0, - "Use up/down to select a color, left/right to change fields."); - MvAddStr(LINES - 2, 0, - "Modify field by typing nnn=, nnn-, or nnn+. ? for help."); - - move(2 + current - top_color, 0); - - last_c = this_c; - this_c = Getchar(); - if (this_c < 256 && isdigit(this_c) && !isdigit(last_c)) - value = 0; - - switch (this_c) { - case CTRL('b'): - case KEY_PPAGE: - if (current > 0) - current -= (page_size - 1); - else - beep(); - break; - - case CTRL('f'): - case KEY_NPAGE: - if (current < (max_colors - 1)) - current += (page_size - 1); - else - beep(); - break; - - case CTRL('p'): - case KEY_UP: - current = (current == 0 ? (max_colors - 1) : current - 1); - break; - - case CTRL('n'): - case KEY_DOWN: - current = (current == (max_colors - 1) ? 0 : current + 1); - break; - - case KEY_RIGHT: - field = (field == 2 ? 0 : field + 1); - break; - - case KEY_LEFT: - field = (field == 0 ? 2 : field - 1); - break; - - case '0': - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - value = value * 10 + (this_c - '0'); - break; - - case '+': - change_color((short) current, field, value, 1); - break; - - case '-': - change_color((short) current, field, -value, 1); - break; - - case '=': - change_color((short) current, field, value, 0); - break; - - case '?': - erase(); - P(" RGB Value Editing Help"); - P(""); - P("You are in the RGB value editor. Use the arrow keys to select one of"); - P("the fields in one of the RGB triples of the current colors; the one"); - P("currently selected will be reverse-video highlighted."); - P(""); - P("To change a field, enter the digits of the new value; they are echoed"); - P("as entered. Finish by typing `='. The change will take effect instantly."); - P("To increment or decrement a value, use the same procedure, but finish"); - P("with a `+' or `-'."); - P(""); - P("Press 'm' to invoke the top-level menu with the current color settings."); - P("To quit, do ESC"); - - Pause(); - erase(); - break; - - case 'm': - endwin(); - main_menu(FALSE); - for (i = 0; i < max_colors; i++) - init_pair((short) i, (short) COLOR_WHITE, (short) i); - refresh(); - break; - - case case_QUIT: - break; - - default: - beep(); - break; - } - - if (current < 0) - current = 0; - if (current >= max_colors) - current = max_colors - 1; - if (current < top_color) - top_color = current; - if (current - top_color >= page_size) - top_color = current - (page_size - 1); - - MvPrintw(LINES - 1, 0, "Number: %d", value); - clrtoeol(); - } while - (!isQuit(this_c)); - - erase(); - - /* - * ncurses does not reset each color individually when calling endwin(). - */ - init_all_colors(); - - endwin(); -} - -/**************************************************************************** - * - * Alternate character-set stuff - * - ****************************************************************************/ -/* *INDENT-OFF* */ -static struct { - chtype attr; - const char *name; -} attrs_to_cycle[] = { - { A_NORMAL, "normal" }, - { A_BOLD, "bold" }, - { A_BLINK, "blink" }, - { A_REVERSE, "reverse" }, - { A_UNDERLINE, "underline" }, -}; -/* *INDENT-ON* */ - -static bool -cycle_attr(int ch, unsigned *at_code, chtype *attr) -{ - bool result = TRUE; - - switch (ch) { - case 'v': - if ((*at_code += 1) >= SIZEOF(attrs_to_cycle)) - *at_code = 0; - break; - case 'V': - if (*at_code == 0) - *at_code = SIZEOF(attrs_to_cycle) - 1; - else - *at_code -= 1; - break; - default: - result = FALSE; - break; - } - if (result) - *attr = attrs_to_cycle[*at_code].attr; - return result; -} - -static bool -cycle_colors(int ch, int *fg, int *bg, short *pair) -{ - bool result = FALSE; - - if (use_colors) { - result = TRUE; - switch (ch) { - case 'F': - if ((*fg -= 1) < 0) - *fg = COLORS - 1; - break; - case 'f': - if ((*fg += 1) >= COLORS) - *fg = 0; - break; - case 'B': - if ((*bg -= 1) < 0) - *bg = COLORS - 1; - break; - case 'b': - if ((*bg += 1) >= COLORS) - *bg = 0; - break; - default: - result = FALSE; - break; - } - if (result) { - *pair = (short) (*fg != COLOR_BLACK || *bg != COLOR_BLACK); - if (*pair != 0) { - *pair = 1; - if (init_pair(*pair, (short) *fg, (short) *bg) == ERR) { - result = FALSE; - } - } - } - } - return result; -} - -/**************************************************************************** - * - * Soft-key label test - * - ****************************************************************************/ - -#if USE_SOFTKEYS - -#define SLK_HELP 17 -#define SLK_WORK (SLK_HELP + 3) - -static void -slk_help(void) -{ - static const char *table[] = - { - "Available commands are:" - ,"" - ,"^L -- repaint this message and activate soft keys" - ,"a/d -- activate/disable soft keys" - ,"c -- set centered format for labels" - ,"l -- set left-justified format for labels" - ,"r -- set right-justified format for labels" - ,"[12345678] -- set label; labels are numbered 1 through 8" - ,"e -- erase stdscr (should not erase labels)" - ,"s -- test scrolling of shortened screen" - ,"v/V -- cycle through video attributes" -#if HAVE_SLK_COLOR - ,"F/f/B/b -- cycle through foreground/background colors" -#endif - ,"ESC -- return to main menu" - ,"" - ,"Note: if activating the soft keys causes your terminal to scroll up" - ,"one line, your terminal auto-scrolls when anything is written to the" - ,"last screen position. The ncurses code does not yet handle this" - ,"gracefully." - }; - unsigned j; - - move(2, 0); - for (j = 0; j < SIZEOF(table); ++j) { - P(table[j]); - } - refresh(); -} - -#if HAVE_SLK_COLOR -static void -call_slk_color(int fg, int bg) -{ - init_pair(1, (short) bg, (short) fg); - slk_color(1); - MvPrintw(SLK_WORK, 0, "Colors %d/%d\n", fg, bg); - clrtoeol(); - slk_touch(); - slk_noutrefresh(); - refresh(); -} -#endif - -static void -slk_test(void) -/* exercise the soft keys */ -{ - int c, fmt = 1; - char buf[9]; - char *s; - chtype attr = A_NORMAL; - unsigned at_code = 0; -#if HAVE_SLK_COLOR - int fg = COLOR_BLACK; - int bg = COLOR_WHITE; - short pair = 0; -#endif - - c = CTRL('l'); -#if HAVE_SLK_COLOR - if (use_colors) { - call_slk_color(fg, bg); - } -#endif - - do { - move(0, 0); - switch (c) { - case CTRL('l'): - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Soft Key Exerciser"); - attroff(A_BOLD); - - slk_help(); - /* fall through */ - - case 'a': - slk_restore(); - break; - - case 'e': - wclear(stdscr); - break; - - case 's': - MvPrintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: "); - while ((c = Getchar()) != 'Q' && (c != ERR)) - addch((chtype) c); - break; - - case 'd': - slk_clear(); - break; - - case 'l': - fmt = 0; - break; - - case 'c': - fmt = 1; - break; - - case 'r': - fmt = 2; - break; - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - MvAddStr(SLK_WORK, 0, "Please enter the label value: "); - strcpy(buf, ""); - if ((s = slk_label(c - '0')) != 0) { - strncpy(buf, s, 8); - } - wGetstring(stdscr, buf, 8); - slk_set((c - '0'), buf, fmt); - slk_refresh(); - move(SLK_WORK, 0); - clrtobot(); - break; - - case case_QUIT: - goto done; - -#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE - case KEY_RESIZE: - wnoutrefresh(stdscr); - break; -#endif - - default: - if (cycle_attr(c, &at_code, &attr)) { - slk_attrset(attr); - slk_touch(); - slk_noutrefresh(); - break; - } -#if HAVE_SLK_COLOR - if (cycle_colors(c, &fg, &bg, &pair)) { - if (use_colors) { - call_slk_color(fg, bg); - } else { - beep(); - } - break; - } -#endif - beep(); - break; - } - } while (!isQuit(c = Getchar())); - - done: - slk_clear(); - erase(); - endwin(); -} - -#if USE_WIDEC_SUPPORT -#define SLKLEN 8 -static void -wide_slk_test(void) -/* exercise the soft keys */ -{ - int c, fmt = 1; - wchar_t buf[SLKLEN + 1]; - char *s; - chtype attr = A_NORMAL; - unsigned at_code = 0; - int fg = COLOR_BLACK; - int bg = COLOR_WHITE; - short pair = 0; - - c = CTRL('l'); - if (use_colors) { - call_slk_color(fg, bg); - } - do { - move(0, 0); - switch (c) { - case CTRL('l'): - erase(); - attr_on(WA_BOLD, NULL); - MvAddStr(0, 20, "Soft Key Exerciser"); - attr_off(WA_BOLD, NULL); - - slk_help(); - /* fall through */ - - case 'a': - slk_restore(); - break; - - case 'e': - wclear(stdscr); - break; - - case 's': - MvPrintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: "); - while ((c = Getchar()) != 'Q' && (c != ERR)) - addch((chtype) c); - break; - - case 'd': - slk_clear(); - break; - - case 'l': - fmt = 0; - break; - - case 'c': - fmt = 1; - break; - - case 'r': - fmt = 2; - break; - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - MvAddStr(SLK_WORK, 0, "Please enter the label value: "); - *buf = 0; - if ((s = slk_label(c - '0')) != 0) { - char *temp = strdup(s); - size_t used = strlen(temp); - size_t want = SLKLEN; - size_t test; -#ifndef state_unused - mbstate_t state; -#endif - - buf[0] = L'\0'; - while (want > 0 && used != 0) { - const char *base = s; - reset_mbytes(state); - test = count_mbytes(base, 0, &state); - if (test == (size_t) -1) { - temp[--used] = 0; - } else if (test > want) { - temp[--used] = 0; - } else { - reset_mbytes(state); - trans_mbytes(buf, base, want, &state); - break; - } - } - free(temp); - } - wGet_wstring(stdscr, buf, SLKLEN); - slk_wset((c - '0'), buf, fmt); - slk_refresh(); - move(SLK_WORK, 0); - clrtobot(); - break; - - case case_QUIT: - goto done; - - case 'F': - if (use_colors) { - fg = (short) ((fg + 1) % COLORS); - call_slk_color(fg, bg); - } - break; - case 'B': - if (use_colors) { - bg = (short) ((bg + 1) % COLORS); - call_slk_color(fg, bg); - } - break; -#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE - case KEY_RESIZE: - wnoutrefresh(stdscr); - break; -#endif - default: - if (cycle_attr(c, &at_code, &attr)) { - slk_attr_set(attr, (fg || bg), NULL); - slk_touch(); - slk_noutrefresh(); - break; - } -#if HAVE_SLK_COLOR - if (cycle_colors(c, &fg, &bg, &pair)) { - if (use_colors) { - call_slk_color(fg, bg); - } else { - beep(); - } - break; - } -#endif - beep(); - break; - } - } while (!isQuit(c = Getchar())); - - done: - slk_clear(); - erase(); - endwin(); -} -#endif -#endif /* SLK_INIT */ - -/* ISO 6429: codes 0x80 to 0x9f may be control characters that cause the - * terminal to perform functions. The remaining codes can be graphic. - */ -static void -show_upper_chars(unsigned first, int repeat, attr_t attr, short pair) -{ - bool C1 = (first == 128); - unsigned code; - unsigned last = first + 31; - int reply; - - erase(); - attron(A_BOLD); - MvPrintw(0, 20, "Display of %s Character Codes %d to %d", - C1 ? "C1" : "GR", first, last); - attroff(A_BOLD); - refresh(); - - for (code = first; code <= last; code++) { - int count = repeat; - int row = 2 + ((int) (code - first) % 16); - int col = ((int) (code - first) / 16) * COLS / 2; - char tmp[80]; - sprintf(tmp, "%3u (0x%x)", code, code); - MvPrintw(row, col, "%*s: ", COLS / 4, tmp); - - do { - if (C1) - nodelay(stdscr, TRUE); - echochar(colored_chtype(code, attr, pair)); - if (C1) { - /* (yes, this _is_ crude) */ - while ((reply = Getchar()) != ERR) { - addch(UChar(reply)); - napms(10); - } - nodelay(stdscr, FALSE); - } - } while (--count > 0); - } -} - -#define PC_COLS 4 - -static void -show_pc_chars(int repeat, attr_t attr, short pair) -{ - unsigned code; - - erase(); - attron(A_BOLD); - MvPrintw(0, 20, "Display of PC Character Codes"); - attroff(A_BOLD); - refresh(); - - for (code = 0; code < 16; ++code) { - MvPrintw(2, (int) code * PC_COLS + 8, "%X", code); - } - for (code = 0; code < 256; code++) { - int count = repeat; - int row = 3 + (int) (code / 16) + (code >= 128); - int col = 8 + (int) (code % 16) * PC_COLS; - if ((code % 16) == 0) - MvPrintw(row, 0, "0x%02x:", code); - move(row, col); - do { - switch (code) { - case '\n': - case '\r': - case '\b': - case '\f': - case '\033': - case 0x9b: - /* - * Skip the ones that do not work. - */ - break; - default: - addch(colored_chtype(code, A_ALTCHARSET | attr, pair)); - break; - } - } while (--count > 0); - } -} - -static void -show_box_chars(int repeat, attr_t attr, short pair) -{ - (void) repeat; - - attr |= (attr_t) COLOR_PAIR(pair); - - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Display of the ACS Line-Drawing Set"); - attroff(A_BOLD); - refresh(); - /* *INDENT-OFF* */ - wborder(stdscr, - colored_chtype(ACS_VLINE, attr, pair), - colored_chtype(ACS_VLINE, attr, pair), - colored_chtype(ACS_HLINE, attr, pair), - colored_chtype(ACS_HLINE, attr, pair), - colored_chtype(ACS_ULCORNER, attr, pair), - colored_chtype(ACS_URCORNER, attr, pair), - colored_chtype(ACS_LLCORNER, attr, pair), - colored_chtype(ACS_LRCORNER, attr, pair)); - MvHLine(LINES / 2, 0, colored_chtype(ACS_HLINE, attr, pair), COLS); - MvVLine(0, COLS / 2, colored_chtype(ACS_VLINE, attr, pair), LINES); - MvAddCh(0, COLS / 2, colored_chtype(ACS_TTEE, attr, pair)); - MvAddCh(LINES / 2, COLS / 2, colored_chtype(ACS_PLUS, attr, pair)); - MvAddCh(LINES - 1, COLS / 2, colored_chtype(ACS_BTEE, attr, pair)); - MvAddCh(LINES / 2, 0, colored_chtype(ACS_LTEE, attr, pair)); - MvAddCh(LINES / 2, COLS - 1, colored_chtype(ACS_RTEE, attr, pair)); - /* *INDENT-ON* */ - -} - -static int -show_1_acs(int n, int repeat, const char *name, chtype code) -{ - const int height = 16; - int row = 2 + (n % height); - int col = (n / height) * COLS / 2; - - MvPrintw(row, col, "%*s : ", COLS / 4, name); - do { - addch(code); - } while (--repeat > 0); - return n + 1; -} - -static void -show_acs_chars(int repeat, attr_t attr, short pair) -/* display the ACS character set */ -{ - int n; - -#define BOTH(name) #name, colored_chtype(name, attr, (chtype) pair) - - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Display of the ACS Character Set"); - attroff(A_BOLD); - refresh(); - - n = show_1_acs(0, repeat, BOTH(ACS_ULCORNER)); - n = show_1_acs(n, repeat, BOTH(ACS_URCORNER)); - n = show_1_acs(n, repeat, BOTH(ACS_LLCORNER)); - n = show_1_acs(n, repeat, BOTH(ACS_LRCORNER)); - - n = show_1_acs(n, repeat, BOTH(ACS_LTEE)); - n = show_1_acs(n, repeat, BOTH(ACS_RTEE)); - n = show_1_acs(n, repeat, BOTH(ACS_TTEE)); - n = show_1_acs(n, repeat, BOTH(ACS_BTEE)); - - n = show_1_acs(n, repeat, BOTH(ACS_HLINE)); - n = show_1_acs(n, repeat, BOTH(ACS_VLINE)); - - /* - * HPUX's ACS definitions are broken here. Just give up. - */ -#if !(defined(__hpux) && !defined(NCURSES_VERSION)) - n = show_1_acs(n, repeat, BOTH(ACS_LARROW)); - n = show_1_acs(n, repeat, BOTH(ACS_RARROW)); - n = show_1_acs(n, repeat, BOTH(ACS_UARROW)); - n = show_1_acs(n, repeat, BOTH(ACS_DARROW)); - - n = show_1_acs(n, repeat, BOTH(ACS_BLOCK)); - n = show_1_acs(n, repeat, BOTH(ACS_BOARD)); - n = show_1_acs(n, repeat, BOTH(ACS_LANTERN)); - n = show_1_acs(n, repeat, BOTH(ACS_BULLET)); - n = show_1_acs(n, repeat, BOTH(ACS_CKBOARD)); - n = show_1_acs(n, repeat, BOTH(ACS_DEGREE)); - n = show_1_acs(n, repeat, BOTH(ACS_DIAMOND)); - n = show_1_acs(n, repeat, BOTH(ACS_PLMINUS)); - n = show_1_acs(n, repeat, BOTH(ACS_PLUS)); - - n = show_1_acs(n, repeat, BOTH(ACS_GEQUAL)); - n = show_1_acs(n, repeat, BOTH(ACS_NEQUAL)); - n = show_1_acs(n, repeat, BOTH(ACS_LEQUAL)); - - n = show_1_acs(n, repeat, BOTH(ACS_STERLING)); - n = show_1_acs(n, repeat, BOTH(ACS_PI)); - n = show_1_acs(n, repeat, BOTH(ACS_S1)); - n = show_1_acs(n, repeat, BOTH(ACS_S3)); - n = show_1_acs(n, repeat, BOTH(ACS_S7)); - (void) show_1_acs(n, repeat, BOTH(ACS_S9)); -#endif -} - -static void -acs_display(void) -{ - int c = 'a'; - char *term = getenv("TERM"); - const char *pch_kludge = ((term != 0 && strstr(term, "linux")) - ? "p=PC, " - : ""); - chtype attr = A_NORMAL; - int digit = 0; - int repeat = 1; - int fg = COLOR_BLACK; - int bg = COLOR_BLACK; - unsigned at_code = 0; - short pair = 0; - void (*last_show_acs) (int, attr_t, short) = 0; - - do { - switch (c) { - case CTRL('L'): - Repaint(); - break; - case 'a': - ToggleAcs(last_show_acs, show_acs_chars); - break; - case 'p': - if (*pch_kludge) - ToggleAcs(last_show_acs, show_pc_chars); - else - beep(); - break; - case 'x': - ToggleAcs(last_show_acs, show_box_chars); - break; - case '0': - case '1': - case '2': - case '3': - digit = (c - '0'); - last_show_acs = 0; - break; - case '-': - if (digit > 0) { - --digit; - last_show_acs = 0; - } else { - beep(); - } - break; - case '+': - if (digit < 3) { - ++digit; - last_show_acs = 0; - } else { - beep(); - } - break; - case '>': - if (repeat < (COLS / 4)) - ++repeat; - break; - case '<': - if (repeat > 1) - --repeat; - break; - default: - if (cycle_attr(c, &at_code, &attr) - || cycle_colors(c, &fg, &bg, &pair)) { - break; - } else { - beep(); - } - break; - } - if (last_show_acs != 0) - last_show_acs(repeat, attr, pair); - else - show_upper_chars((unsigned) (digit * 32 + 128), repeat, attr, pair); - - MvPrintw(LINES - 3, 0, - "Note: ANSI terminals may not display C1 characters."); - MvPrintw(LINES - 2, 0, - "Select: a=ACS, x=box, %s0=C1, 1-3,+/- non-ASCII, repeat, ESC=quit", - pch_kludge); - if (use_colors) { - MvPrintw(LINES - 1, 0, - "v/V, f/F, b/B cycle through video attributes (%s) and color %d/%d.", - attrs_to_cycle[at_code].name, - fg, bg); - } else { - MvPrintw(LINES - 1, 0, - "v/V cycles through video attributes (%s).", - attrs_to_cycle[at_code].name); - } - refresh(); - } while (!isQuit(c = Getchar())); - - Pause(); - erase(); - endwin(); -} - -#if USE_WIDEC_SUPPORT -static cchar_t * -merge_wide_attr(cchar_t *dst, const cchar_t *src, attr_t attr, short pair) -{ - int count; - - *dst = *src; - do { - TEST_CCHAR(src, count, { - attr |= (test_attrs & A_ALTCHARSET); - setcchar(dst, test_wch, attr, pair, NULL); - } - , { - ; - }); - } while (0); - return dst; -} - -static void -show_upper_widechars(int first, int repeat, int space, attr_t attr, short pair) -{ - cchar_t temp; - wchar_t code; - int last = first + 31; - - erase(); - attron(A_BOLD); - MvPrintw(0, 20, "Display of Character Codes %d to %d", first, last); - attroff(A_BOLD); - - for (code = first; (int) code <= last; code++) { - int row = 2 + ((code - first) % 16); - int col = ((code - first) / 16) * COLS / 2; - wchar_t codes[10]; - char tmp[80]; - int count = repeat; - int y, x; - - memset(&codes, 0, sizeof(codes)); - codes[0] = code; - sprintf(tmp, "%3ld (0x%lx)", (long) code, (long) code); - MvPrintw(row, col, "%*s: ", COLS / 4, tmp); - setcchar(&temp, codes, attr, pair, 0); - do { - /* - * Give non-spacing characters something to combine with. If we - * don't, they'll bunch up in a heap on the space after the ":". - * Mark them with reverse-video to make them simpler to find on - * the display. - */ - if (wcwidth(code) == 0) { - addch((chtype) space | - (A_REVERSE ^ attr) | - (attr_t) COLOR_PAIR(pair)); - } - /* - * This could use add_wch(), but is done for comparison with the - * normal 'f' test (and to make a test-case for echo_wchar()). - * The screen will flicker because the erase() at the top of the - * function is met by the builtin refresh() in echo_wchar(). - */ - echo_wchar(&temp); - /* - * The repeat-count may make text wrap - avoid that. - */ - getyx(stdscr, y, x); - if (x >= col + (COLS / 2) - 2) - break; - } while (--count > 0); - } -} - -static int -show_1_wacs(int n, int repeat, const char *name, const cchar_t *code) -{ - const int height = 16; - int row = 2 + (n % height); - int col = (n / height) * COLS / 2; - - MvPrintw(row, col, "%*s : ", COLS / 4, name); - while (--repeat >= 0) { - add_wch(code); - } - return n + 1; -} - -#define MERGE_ATTR(wch) merge_wide_attr(&temp, wch, attr, pair) - -static void -show_wacs_chars(int repeat, attr_t attr, short pair) -/* display the wide-ACS character set */ -{ - cchar_t temp; - - int n; - -/*#define BOTH2(name) #name, &(name) */ -#define BOTH2(name) #name, MERGE_ATTR(name) - - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); - attroff(A_BOLD); - refresh(); - - n = show_1_wacs(0, repeat, BOTH2(WACS_ULCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_URCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LLCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LRCORNER)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_LTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_RTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_TTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_BTEE)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_HLINE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_VLINE)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_LARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_RARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_UARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DARROW)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_BLOCK)); - n = show_1_wacs(n, repeat, BOTH2(WACS_BOARD)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LANTERN)); - n = show_1_wacs(n, repeat, BOTH2(WACS_BULLET)); - n = show_1_wacs(n, repeat, BOTH2(WACS_CKBOARD)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PLUS)); - -#ifdef CURSES_WACS_ARRAY - n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL)); - n = show_1_wacs(n, repeat, BOTH2(WACS_NEQUAL)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LEQUAL)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_STERLING)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PI)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S1)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S3)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S7)); - (void) show_1_wacs(n, repeat, BOTH2(WACS_S9)); -#endif -} - -#ifdef WACS_D_PLUS -static void -show_wacs_chars_double(int repeat, attr_t attr, short pair) -/* display the wide-ACS character set */ -{ - cchar_t temp; - - int n; - -/*#define BOTH2(name) #name, &(name) */ -#define BOTH2(name) #name, MERGE_ATTR(name) - - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); - attroff(A_BOLD); - refresh(); - - n = show_1_wacs(0, repeat, BOTH2(WACS_D_ULCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_D_URCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_D_LLCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_D_LRCORNER)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_D_LTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_D_RTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_D_TTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_D_BTEE)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_D_HLINE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_D_VLINE)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_LARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_RARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_UARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DARROW)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_BLOCK)); - n = show_1_wacs(n, repeat, BOTH2(WACS_BOARD)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LANTERN)); - n = show_1_wacs(n, repeat, BOTH2(WACS_BULLET)); - n = show_1_wacs(n, repeat, BOTH2(WACS_CKBOARD)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PLUS)); - -#ifdef CURSES_WACS_ARRAY - n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL)); - n = show_1_wacs(n, repeat, BOTH2(WACS_NEQUAL)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LEQUAL)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_STERLING)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PI)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S1)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S3)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S7)); - (void) show_1_wacs(n, repeat, BOTH2(WACS_S9)); -#endif -} -#endif - -#ifdef WACS_T_PLUS -static void -show_wacs_chars_thick(int repeat, attr_t attr, short pair) -/* display the wide-ACS character set */ -{ - cchar_t temp; - - int n; - -/*#define BOTH2(name) #name, &(name) */ -#define BOTH2(name) #name, MERGE_ATTR(name) - - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); - attroff(A_BOLD); - refresh(); - - n = show_1_wacs(0, repeat, BOTH2(WACS_T_ULCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_T_URCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_T_LLCORNER)); - n = show_1_wacs(n, repeat, BOTH2(WACS_T_LRCORNER)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_T_LTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_T_RTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_T_TTEE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_T_BTEE)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_T_HLINE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_T_VLINE)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_LARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_RARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_UARROW)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DARROW)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_BLOCK)); - n = show_1_wacs(n, repeat, BOTH2(WACS_BOARD)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LANTERN)); - n = show_1_wacs(n, repeat, BOTH2(WACS_BULLET)); - n = show_1_wacs(n, repeat, BOTH2(WACS_CKBOARD)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE)); - n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PLUS)); - -#ifdef CURSES_WACS_ARRAY - n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL)); - n = show_1_wacs(n, repeat, BOTH2(WACS_NEQUAL)); - n = show_1_wacs(n, repeat, BOTH2(WACS_LEQUAL)); - - n = show_1_wacs(n, repeat, BOTH2(WACS_STERLING)); - n = show_1_wacs(n, repeat, BOTH2(WACS_PI)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S1)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S3)); - n = show_1_wacs(n, repeat, BOTH2(WACS_S7)); - (void) show_1_wacs(n, repeat, BOTH2(WACS_S9)); -#endif -} -#endif - -#undef MERGE_ATTR - -#define MERGE_ATTR(n,wch) merge_wide_attr(&temp[n], wch, attr, pair) - -static void -show_wbox_chars(int repeat, attr_t attr, short pair) -{ - cchar_t temp[8]; - - (void) repeat; - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Display of the Wide-ACS Line-Drawing Set"); - attroff(A_BOLD); - refresh(); - - wborder_set(stdscr, - MERGE_ATTR(0, WACS_VLINE), - MERGE_ATTR(1, WACS_VLINE), - MERGE_ATTR(2, WACS_HLINE), - MERGE_ATTR(3, WACS_HLINE), - MERGE_ATTR(4, WACS_ULCORNER), - MERGE_ATTR(5, WACS_URCORNER), - MERGE_ATTR(6, WACS_LLCORNER), - MERGE_ATTR(7, WACS_LRCORNER)); - /* *INDENT-OFF* */ - (void) mvhline_set(LINES / 2, 0, MERGE_ATTR(0, WACS_HLINE), COLS); - (void) mvvline_set(0, COLS / 2, MERGE_ATTR(0, WACS_VLINE), LINES); - (void) mvadd_wch(0, COLS / 2, MERGE_ATTR(0, WACS_TTEE)); - (void) mvadd_wch(LINES / 2, COLS / 2, MERGE_ATTR(0, WACS_PLUS)); - (void) mvadd_wch(LINES - 1, COLS / 2, MERGE_ATTR(0, WACS_BTEE)); - (void) mvadd_wch(LINES / 2, 0, MERGE_ATTR(0, WACS_LTEE)); - (void) mvadd_wch(LINES / 2, COLS - 1, MERGE_ATTR(0, WACS_RTEE)); - /* *INDENT-ON* */ - -} - -#undef MERGE_ATTR - -static int -show_2_wacs(int n, const char *name, const char *code, attr_t attr, short pair) -{ - const int height = 16; - int row = 2 + (n % height); - int col = (n / height) * COLS / 2; - char temp[80]; - - MvPrintw(row, col, "%*s : ", COLS / 4, name); - (void) attr_set(attr, pair, 0); - addstr(strcpy(temp, code)); - (void) attr_set(A_NORMAL, 0, 0); - return n + 1; -} - -#define SHOW_UTF8(n, name, code) show_2_wacs(n, name, code, attr, pair) - -static void -show_utf8_chars(int repeat, attr_t attr, short pair) -{ - int n; - - (void) repeat; - erase(); - attron(A_BOLD); - MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); - attroff(A_BOLD); - refresh(); - /* *INDENT-OFF* */ - n = SHOW_UTF8(0, "WACS_ULCORNER", "\342\224\214"); - n = SHOW_UTF8(n, "WACS_URCORNER", "\342\224\220"); - n = SHOW_UTF8(n, "WACS_LLCORNER", "\342\224\224"); - n = SHOW_UTF8(n, "WACS_LRCORNER", "\342\224\230"); - - n = SHOW_UTF8(n, "WACS_LTEE", "\342\224\234"); - n = SHOW_UTF8(n, "WACS_RTEE", "\342\224\244"); - n = SHOW_UTF8(n, "WACS_TTEE", "\342\224\254"); - n = SHOW_UTF8(n, "WACS_BTEE", "\342\224\264"); - - n = SHOW_UTF8(n, "WACS_HLINE", "\342\224\200"); - n = SHOW_UTF8(n, "WACS_VLINE", "\342\224\202"); - - n = SHOW_UTF8(n, "WACS_LARROW", "\342\206\220"); - n = SHOW_UTF8(n, "WACS_RARROW", "\342\206\222"); - n = SHOW_UTF8(n, "WACS_UARROW", "\342\206\221"); - n = SHOW_UTF8(n, "WACS_DARROW", "\342\206\223"); - - n = SHOW_UTF8(n, "WACS_BLOCK", "\342\226\256"); - n = SHOW_UTF8(n, "WACS_BOARD", "\342\226\222"); - n = SHOW_UTF8(n, "WACS_LANTERN", "\342\230\203"); - n = SHOW_UTF8(n, "WACS_BULLET", "\302\267"); - n = SHOW_UTF8(n, "WACS_CKBOARD", "\342\226\222"); - n = SHOW_UTF8(n, "WACS_DEGREE", "\302\260"); - n = SHOW_UTF8(n, "WACS_DIAMOND", "\342\227\206"); - n = SHOW_UTF8(n, "WACS_PLMINUS", "\302\261"); - n = SHOW_UTF8(n, "WACS_PLUS", "\342\224\274"); - n = SHOW_UTF8(n, "WACS_GEQUAL", "\342\211\245"); - n = SHOW_UTF8(n, "WACS_NEQUAL", "\342\211\240"); - n = SHOW_UTF8(n, "WACS_LEQUAL", "\342\211\244"); - - n = SHOW_UTF8(n, "WACS_STERLING", "\302\243"); - n = SHOW_UTF8(n, "WACS_PI", "\317\200"); - n = SHOW_UTF8(n, "WACS_S1", "\342\216\272"); - n = SHOW_UTF8(n, "WACS_S3", "\342\216\273"); - n = SHOW_UTF8(n, "WACS_S7", "\342\216\274"); - (void) SHOW_UTF8(n, "WACS_S9", "\342\216\275"); - /* *INDENT-ON* */ - -} - -/* display the wide-ACS character set */ -static void -wide_acs_display(void) -{ - int c = 'a'; - int digit = 0; - int repeat = 1; - int space = ' '; - chtype attr = A_NORMAL; - int fg = COLOR_BLACK; - int bg = COLOR_BLACK; - unsigned at_code = 0; - short pair = 0; - void (*last_show_wacs) (int, attr_t, short) = 0; - - do { - switch (c) { - case CTRL('L'): - Repaint(); - break; - case 'a': - ToggleAcs(last_show_wacs, show_wacs_chars); - break; -#ifdef WACS_D_PLUS - case 'd': - ToggleAcs(last_show_wacs, show_wacs_chars_double); - break; -#endif -#ifdef WACS_T_PLUS - case 't': - ToggleAcs(last_show_wacs, show_wacs_chars_thick); - break; -#endif - case 'x': - ToggleAcs(last_show_wacs, show_wbox_chars); - break; - case 'u': - ToggleAcs(last_show_wacs, show_utf8_chars); - break; - default: - if (c < 256 && isdigit(c)) { - digit = (c - '0'); - last_show_wacs = 0; - } else if (c == '+') { - ++digit; - last_show_wacs = 0; - } else if (c == '-' && digit > 0) { - --digit; - last_show_wacs = 0; - } else if (c == '>' && repeat < (COLS / 4)) { - ++repeat; - } else if (c == '<' && repeat > 1) { - --repeat; - } else if (c == '_') { - space = (space == ' ') ? '_' : ' '; - last_show_wacs = 0; - } else if (cycle_attr(c, &at_code, &attr) - || cycle_colors(c, &fg, &bg, &pair)) { - if (last_show_wacs != 0) - break; - } else { - beep(); - break; - } - break; - } - if (last_show_wacs != 0) - last_show_wacs(repeat, attr, pair); - else - show_upper_widechars(digit * 32 + 128, repeat, space, attr, pair); - - MvPrintw(LINES - 3, 0, - "Select: a/d/t WACS, x box, u UTF-8, 0-9,+/- non-ASCII, repeat, ESC=quit"); - if (use_colors) { - MvPrintw(LINES - 2, 0, - "v/V, f/F, b/B cycle through video attributes (%s) and color %d/%d.", - attrs_to_cycle[at_code].name, - fg, bg); - } else { - MvPrintw(LINES - 2, 0, - "v/V cycles through video attributes (%s).", - attrs_to_cycle[at_code].name); - } - refresh(); - } while (!isQuit(c = Getchar())); - - Pause(); - erase(); - endwin(); -} - -#endif - -/* - * Graphic-rendition test (adapted from vttest) - */ -static void -test_sgr_attributes(void) -{ - int pass; - - for (pass = 0; pass < 2; pass++) { - chtype normal = ((pass == 0 ? A_NORMAL : A_REVERSE)) | BLANK; - - /* Use non-default colors if possible to exercise bce a little */ - if (use_colors) { - init_pair(1, COLOR_WHITE, COLOR_BLUE); - normal |= COLOR_PAIR(1); - } - bkgdset(normal); - erase(); - MvPrintw(1, 20, "Graphic rendition test pattern:"); - - MvPrintw(4, 1, "vanilla"); - -#define set_sgr(mask) bkgdset((normal^(mask))); - set_sgr(A_BOLD); - MvPrintw(4, 40, "bold"); - - set_sgr(A_UNDERLINE); - MvPrintw(6, 6, "underline"); - - set_sgr(A_BOLD | A_UNDERLINE); - MvPrintw(6, 45, "bold underline"); - - set_sgr(A_BLINK); - MvPrintw(8, 1, "blink"); - - set_sgr(A_BLINK | A_BOLD); - MvPrintw(8, 40, "bold blink"); - - set_sgr(A_UNDERLINE | A_BLINK); - MvPrintw(10, 6, "underline blink"); - - set_sgr(A_BOLD | A_UNDERLINE | A_BLINK); - MvPrintw(10, 45, "bold underline blink"); - - set_sgr(A_REVERSE); - MvPrintw(12, 1, "negative"); - - set_sgr(A_BOLD | A_REVERSE); - MvPrintw(12, 40, "bold negative"); - - set_sgr(A_UNDERLINE | A_REVERSE); - MvPrintw(14, 6, "underline negative"); - - set_sgr(A_BOLD | A_UNDERLINE | A_REVERSE); - MvPrintw(14, 45, "bold underline negative"); - - set_sgr(A_BLINK | A_REVERSE); - MvPrintw(16, 1, "blink negative"); - - set_sgr(A_BOLD | A_BLINK | A_REVERSE); - MvPrintw(16, 40, "bold blink negative"); - - set_sgr(A_UNDERLINE | A_BLINK | A_REVERSE); - MvPrintw(18, 6, "underline blink negative"); - - set_sgr(A_BOLD | A_UNDERLINE | A_BLINK | A_REVERSE); - MvPrintw(18, 45, "bold underline blink negative"); - - bkgdset(normal); - MvPrintw(LINES - 2, 1, "%s background. ", pass == 0 ? "Dark" : - "Light"); - clrtoeol(); - Pause(); - } - - bkgdset(A_NORMAL | BLANK); - erase(); - endwin(); -} - -/**************************************************************************** - * - * Windows and scrolling tester. - * - ****************************************************************************/ - -#define BOTLINES 4 /* number of line stolen from screen bottom */ - -typedef struct { - int y, x; -} pair; - -#define FRAME struct frame -FRAME -{ - FRAME *next, *last; - bool do_scroll; - bool do_keypad; - WINDOW *wind; -}; - -#if defined(NCURSES_VERSION) -#if (NCURSES_VERSION_PATCH < 20070331) && NCURSES_EXT_FUNCS -#define is_keypad(win) (win)->_use_keypad -#define is_scrollok(win) (win)->_scroll -#elif !defined(is_keypad) -#define is_keypad(win) FALSE -#define is_scrollok(win) FALSE -#endif -#else -#define is_keypad(win) FALSE -#define is_scrollok(win) FALSE -#endif - -static WINDOW * -frame_win(FRAME * curp) -{ - return (curp != 0) ? curp->wind : stdscr; -} - -/* We need to know if these flags are actually set, so don't look in FRAME. - * These names are known to work with SVr4 curses as well as ncurses. The - * _use_keypad name does not work with Solaris 8. - */ -static bool -HaveKeypad(FRAME * curp) -{ - WINDOW *win = frame_win(curp); - (void) win; - return is_keypad(win); -} - -static bool -HaveScroll(FRAME * curp) -{ - WINDOW *win = frame_win(curp); - (void) win; - return is_scrollok(win); -} - -static void -newwin_legend(FRAME * curp) -{ - static const struct { - const char *msg; - int code; - } legend[] = { - { - "^C = create window", 0 - }, - { - "^N = next window", 0 - }, - { - "^P = previous window", 0 - }, - { - "^F = scroll forward", 0 - }, - { - "^B = scroll backward", 0 - }, - { - "^K = keypad(%s)", 1 - }, - { - "^S = scrollok(%s)", 2 - }, - { - "^W = save window to file", 0 - }, - { - "^R = restore window", 0 - }, -#if HAVE_WRESIZE - { - "^X = resize", 0 - }, -#endif - { - "^Q%s = exit", 3 - } - }; - size_t n; - int x; - bool do_keypad = HaveKeypad(curp); - bool do_scroll = HaveScroll(curp); - char buf[BUFSIZ]; - - move(LINES - 4, 0); - for (n = 0; n < SIZEOF(legend); n++) { - switch (legend[n].code) { - default: - strcpy(buf, legend[n].msg); - break; - case 1: - sprintf(buf, legend[n].msg, do_keypad ? "yes" : "no"); - break; - case 2: - sprintf(buf, legend[n].msg, do_scroll ? "yes" : "no"); - break; - case 3: - sprintf(buf, legend[n].msg, do_keypad ? "/ESC" : ""); - break; - } - x = getcurx(stdscr); - addstr((COLS < (x + 3 + (int) strlen(buf))) ? "\n" : (n ? ", " : "")); - addstr(buf); - } - clrtoeol(); -} - -static void -transient(FRAME * curp, NCURSES_CONST char *msg) -{ - newwin_legend(curp); - if (msg) { - MvAddStr(LINES - 1, 0, msg); - refresh(); - napms(1000); - } - - move(LINES - 1, 0); - printw("%s characters are echoed, window should %sscroll.", - HaveKeypad(curp) ? "Non-arrow" : "All other", - HaveScroll(curp) ? "" : "not "); - clrtoeol(); -} - -static void -newwin_report(FRAME * curp) -/* report on the cursor's current position, then restore it */ -{ - WINDOW *win = frame_win(curp); - int y, x; - - if (win != stdscr) - transient(curp, (char *) 0); - getyx(win, y, x); - move(LINES - 1, COLS - 17); - printw("Y = %2d X = %2d", y, x); - if (win != stdscr) - refresh(); - else - wmove(win, y, x); -} - -static pair * -selectcell(int uli, int ulj, int lri, int lrj) -/* arrows keys move cursor, return location at current on non-arrow key */ -{ - static pair res; /* result cell */ - int si = lri - uli + 1; /* depth of the select area */ - int sj = lrj - ulj + 1; /* width of the select area */ - int i = 0, j = 0; /* offsets into the select area */ - - res.y = uli; - res.x = ulj; - for (;;) { - move(uli + i, ulj + j); - newwin_report((FRAME *) 0); - - switch (Getchar()) { - case KEY_UP: - i += si - 1; - break; - case KEY_DOWN: - i++; - break; - case KEY_LEFT: - j += sj - 1; - break; - case KEY_RIGHT: - j++; - break; - case case_QUIT: - return ((pair *) 0); -#ifdef NCURSES_MOUSE_VERSION - case KEY_MOUSE: - { - MEVENT event; - - getmouse(&event); - if (event.y > uli && event.x > ulj) { - i = event.y - uli; - j = event.x - ulj; - } else { - beep(); - break; - } - } - /* FALLTHRU */ -#endif - default: - res.y = uli + i; - res.x = ulj + j; - return (&res); - } - i %= si; - j %= sj; - } -} - -static void -outerbox(pair ul, pair lr, bool onoff) -/* draw or erase a box *outside* the given pair of corners */ -{ - MvAddCh(ul.y - 1, lr.x - 1, onoff ? ACS_ULCORNER : ' '); - MvAddCh(ul.y - 1, lr.x + 1, onoff ? ACS_URCORNER : ' '); - MvAddCh(lr.y + 1, lr.x + 1, onoff ? ACS_LRCORNER : ' '); - MvAddCh(lr.y + 1, ul.x - 1, onoff ? ACS_LLCORNER : ' '); - move(ul.y - 1, ul.x); - hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1); - move(ul.y, ul.x - 1); - vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1); - move(lr.y + 1, ul.x); - hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1); - move(ul.y, lr.x + 1); - vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1); -} - -static WINDOW * -getwindow(void) -/* Ask user for a window definition */ -{ - WINDOW *rwindow; - pair ul, lr, *tmp; - - move(0, 0); - clrtoeol(); - addstr("Use arrows to move cursor, anything else to mark corner 1"); - refresh(); - if ((tmp = selectcell(2, 1, LINES - BOTLINES - 2, COLS - 2)) == (pair *) 0) - return ((WINDOW *) 0); - memcpy(&ul, tmp, sizeof(pair)); - MvAddCh(ul.y - 1, ul.x - 1, ACS_ULCORNER); - move(0, 0); - clrtoeol(); - addstr("Use arrows to move cursor, anything else to mark corner 2"); - refresh(); - if ((tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2)) == - (pair *) 0) - return ((WINDOW *) 0); - memcpy(&lr, tmp, sizeof(pair)); - - rwindow = subwin(stdscr, lr.y - ul.y + 1, lr.x - ul.x + 1, ul.y, ul.x); - - outerbox(ul, lr, TRUE); - refresh(); - - wrefresh(rwindow); - - move(0, 0); - clrtoeol(); - return (rwindow); -} - -static void -newwin_move(FRAME * curp, int dy, int dx) -{ - WINDOW *win = frame_win(curp); - int cur_y, cur_x; - int max_y, max_x; - - getyx(win, cur_y, cur_x); - getmaxyx(win, max_y, max_x); - if ((cur_x += dx) < 0) - cur_x = 0; - else if (cur_x >= max_x) - cur_x = max_x - 1; - if ((cur_y += dy) < 0) - cur_y = 0; - else if (cur_y >= max_y) - cur_y = max_y - 1; - wmove(win, cur_y, cur_x); -} - -static FRAME * -delete_framed(FRAME * fp, bool showit) -{ - FRAME *np = 0; - - if (fp != 0) { - fp->last->next = fp->next; - fp->next->last = fp->last; - - if (showit) { - werase(fp->wind); - wrefresh(fp->wind); - } - delwin(fp->wind); - - np = (fp == fp->next) ? 0 : fp->next; - free(fp); - } - return np; -} - -static void -acs_and_scroll(void) -/* Demonstrate windows */ -{ - int c; - FRAME *current = (FRAME *) 0, *neww; - WINDOW *usescr; -#if HAVE_PUTWIN && HAVE_GETWIN - FILE *fp; -#endif - -#define DUMPFILE "screendump" - -#ifdef NCURSES_MOUSE_VERSION - mousemask(BUTTON1_CLICKED, (mmask_t *) 0); -#endif - c = CTRL('C'); - raw(); - do { - transient((FRAME *) 0, (char *) 0); - switch (c) { - case CTRL('C'): - if ((neww = typeCalloc(FRAME, 1)) == 0) { - goto breakout; - } - if ((neww->wind = getwindow()) == (WINDOW *) 0) { - free(neww); - goto breakout; - } - - if (current == 0) { /* First element, */ - neww->next = neww; /* so point it at itself */ - neww->last = neww; - } else { - neww->next = current->next; - neww->last = current; - neww->last->next = neww; - neww->next->last = neww; - } - current = neww; - /* SVr4 curses sets the keypad on all newly-created windows to - * false. Someone reported that PDCurses makes new windows inherit - * this flag. Remove the following 'keypad()' call to test this - */ - keypad(current->wind, TRUE); - current->do_keypad = HaveKeypad(current); - current->do_scroll = HaveScroll(current); - break; - - case CTRL('N'): /* go to next window */ - if (current) - current = current->next; - break; - - case CTRL('P'): /* go to previous window */ - if (current) - current = current->last; - break; - - case CTRL('F'): /* scroll current window forward */ - if (current) - wscrl(frame_win(current), 1); - break; - - case CTRL('B'): /* scroll current window backwards */ - if (current) - wscrl(frame_win(current), -1); - break; - - case CTRL('K'): /* toggle keypad mode for current */ - if (current) { - current->do_keypad = !current->do_keypad; - keypad(current->wind, current->do_keypad); - } - break; - - case CTRL('S'): - if (current) { - current->do_scroll = !current->do_scroll; - scrollok(current->wind, current->do_scroll); - } - break; - -#if HAVE_PUTWIN && HAVE_GETWIN - case CTRL('W'): /* save and delete window */ - if ((current != 0) && (current == current->next)) { - transient(current, "Will not save/delete ONLY window"); - break; - } else if ((fp = fopen(DUMPFILE, "w")) == (FILE *) 0) { - transient(current, "Can't open screen dump file"); - } else { - (void) putwin(frame_win(current), fp); - (void) fclose(fp); - - current = delete_framed(current, TRUE); - } - break; - - case CTRL('R'): /* restore window */ - if ((fp = fopen(DUMPFILE, "r")) == (FILE *) 0) { - transient(current, "Can't open screen dump file"); - } else { - if ((neww = typeCalloc(FRAME, 1)) != 0) { - - neww->next = current ? current->next : 0; - neww->last = current; - neww->last->next = neww; - neww->next->last = neww; - - neww->wind = getwin(fp); - - wrefresh(neww->wind); - } - (void) fclose(fp); - } - break; -#endif - -#if HAVE_WRESIZE - case CTRL('X'): /* resize window */ - if (current) { - pair *tmp, ul, lr; - int i, mx, my; - - move(0, 0); - clrtoeol(); - addstr("Use arrows to move cursor, anything else to mark new corner"); - refresh(); - - getbegyx(current->wind, ul.y, ul.x); - - tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2); - if (tmp == (pair *) 0) { - beep(); - break; - } - - getmaxyx(current->wind, lr.y, lr.x); - lr.y += (ul.y - 1); - lr.x += (ul.x - 1); - outerbox(ul, lr, FALSE); - wnoutrefresh(stdscr); - - /* strictly cosmetic hack for the test */ - getmaxyx(current->wind, my, mx); - if (my > tmp->y - ul.y) { - getyx(current->wind, lr.y, lr.x); - wmove(current->wind, tmp->y - ul.y + 1, 0); - wclrtobot(current->wind); - wmove(current->wind, lr.y, lr.x); - } - if (mx > tmp->x - ul.x) - for (i = 0; i < my; i++) { - wmove(current->wind, i, tmp->x - ul.x + 1); - wclrtoeol(current->wind); - } - wnoutrefresh(current->wind); - - memcpy(&lr, tmp, sizeof(pair)); - (void) wresize(current->wind, lr.y - ul.y + 0, lr.x - ul.x + 0); - - getbegyx(current->wind, ul.y, ul.x); - getmaxyx(current->wind, lr.y, lr.x); - lr.y += (ul.y - 1); - lr.x += (ul.x - 1); - outerbox(ul, lr, TRUE); - wnoutrefresh(stdscr); - - wnoutrefresh(current->wind); - move(0, 0); - clrtoeol(); - doupdate(); - } - break; -#endif /* HAVE_WRESIZE */ - - case KEY_F(10): /* undocumented --- use this to test area clears */ - selectcell(0, 0, LINES - 1, COLS - 1); - clrtobot(); - refresh(); - break; - - case KEY_UP: - newwin_move(current, -1, 0); - break; - case KEY_DOWN: - newwin_move(current, 1, 0); - break; - case KEY_LEFT: - newwin_move(current, 0, -1); - break; - case KEY_RIGHT: - newwin_move(current, 0, 1); - break; - - case KEY_BACKSPACE: - /* FALLTHROUGH */ - case KEY_DC: - { - int y, x; - getyx(frame_win(current), y, x); - if (--x < 0) { - if (--y < 0) - break; - x = getmaxx(frame_win(current)) - 1; - } - (void) mvwdelch(frame_win(current), y, x); - } - break; - - case '\r': - c = '\n'; - /* FALLTHROUGH */ - - default: - if (current) - waddch(current->wind, (chtype) c); - else - beep(); - break; - } - newwin_report(current); - usescr = frame_win(current); - wrefresh(usescr); - } while - (!isQuit(c = wGetchar(usescr)) - && (c != ERR)); - - breakout: - while (current != 0) - current = delete_framed(current, FALSE); - - scrollok(stdscr, TRUE); /* reset to driver's default */ -#ifdef NCURSES_MOUSE_VERSION - mousemask(0, (mmask_t *) 0); -#endif - noraw(); - erase(); - endwin(); -} - -/**************************************************************************** - * - * Panels tester - * - ****************************************************************************/ - -#if USE_LIBPANEL -static int nap_msec = 1; - -static NCURSES_CONST char *mod[] = -{ - "test ", - "TEST ", - "(**) ", - "*()* ", - "<--> ", - "LAST " -}; - -/*+------------------------------------------------------------------------- - wait_a_while(msec) ---------------------------------------------------------------------------*/ -static void -wait_a_while(int msec GCC_UNUSED) -{ -#if HAVE_NAPMS - if (nap_msec == 1) - wGetchar(stdscr); - else - napms(nap_msec); -#else - if (nap_msec == 1) - wGetchar(stdscr); - else if (msec > 1000) - sleep((unsigned) msec / 1000); - else - sleep(1); -#endif -} /* end of wait_a_while */ - -/*+------------------------------------------------------------------------- - saywhat(text) ---------------------------------------------------------------------------*/ -static void -saywhat(NCURSES_CONST char *text) -{ - wmove(stdscr, LINES - 1, 0); - wclrtoeol(stdscr); - if (text != 0 && *text != '\0') { - waddstr(stdscr, text); - waddstr(stdscr, "; "); - } - waddstr(stdscr, "press any key to continue"); -} /* end of saywhat */ - -/*+------------------------------------------------------------------------- - mkpanel(rows,cols,tly,tlx) - alloc a win and panel and associate them ---------------------------------------------------------------------------*/ -static PANEL * -mkpanel(short color, int rows, int cols, int tly, int tlx) -{ - WINDOW *win; - PANEL *pan = 0; - - if ((win = newwin(rows, cols, tly, tlx)) != 0) { - if ((pan = new_panel(win)) == 0) { - delwin(win); - } else if (use_colors) { - short fg = (short) ((color == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK); - short bg = color; - - init_pair(color, fg, bg); - wbkgdset(win, (attr_t) (COLOR_PAIR(color) | ' ')); - } else { - wbkgdset(win, A_BOLD | ' '); - } - } - return pan; -} /* end of mkpanel */ - -/*+------------------------------------------------------------------------- - rmpanel(pan) ---------------------------------------------------------------------------*/ -static void -rmpanel(PANEL * pan) -{ - WINDOW *win = panel_window(pan); - del_panel(pan); - delwin(win); -} /* end of rmpanel */ - -/*+------------------------------------------------------------------------- - pflush() ---------------------------------------------------------------------------*/ -static void -pflush(void) -{ - update_panels(); - doupdate(); -} /* end of pflush */ - -/*+------------------------------------------------------------------------- - fill_panel(win) ---------------------------------------------------------------------------*/ -static void -init_panel(void) -{ - register int y, x; - - for (y = 0; y < LINES - 1; y++) { - for (x = 0; x < COLS; x++) - wprintw(stdscr, "%d", (y + x) % 10); - } -} - -static void -fill_panel(PANEL * pan) -{ - WINDOW *win = panel_window(pan); - const char *userptr = (const char *) panel_userptr(pan); - int num = (userptr && *userptr) ? userptr[1] : '?'; - int y, x; - - wmove(win, 1, 1); - wprintw(win, "-pan%c-", num); - wclrtoeol(win); - box(win, 0, 0); - for (y = 2; y < getmaxy(win) - 1; y++) { - for (x = 1; x < getmaxx(win) - 1; x++) { - wmove(win, y, x); - waddch(win, UChar(num)); - } - } -} - -#if USE_WIDEC_SUPPORT -static void -init_wide_panel(void) -{ - int digit; - cchar_t temp[10]; - - for (digit = 0; digit < 10; ++digit) - make_fullwidth_digit(&temp[digit], digit); - - do { - int y, x; - getyx(stdscr, y, x); - digit = (y + x / 2) % 10; - } while (add_wch(&temp[digit]) != ERR); -} - -static void -fill_wide_panel(PANEL * pan) -{ - WINDOW *win = panel_window(pan); - const char *userptr = (const char *) panel_userptr(pan); - int num = (userptr && *userptr) ? userptr[1] : '?'; - int y, x; - - wmove(win, 1, 1); - wprintw(win, "-pan%c-", num); - wclrtoeol(win); - box(win, 0, 0); - for (y = 2; y < getmaxy(win) - 1; y++) { - for (x = 1; x < getmaxx(win) - 1; x++) { - wmove(win, y, x); - waddch(win, UChar(num)); - } - } -} -#endif - -#define MAX_PANELS 5 - -static void -canned_panel(PANEL * px[MAX_PANELS + 1], NCURSES_CONST char *cmd) -{ - int which = cmd[1] - '0'; - - saywhat(cmd); - switch (*cmd) { - case 'h': - hide_panel(px[which]); - break; - case 's': - show_panel(px[which]); - break; - case 't': - top_panel(px[which]); - break; - case 'b': - bottom_panel(px[which]); - break; - case 'd': - rmpanel(px[which]); - break; - } - pflush(); - wait_a_while(nap_msec); -} - -static void -demo_panels(void (*InitPanel) (void), void (*FillPanel) (PANEL *)) -{ - int count; - int itmp; - PANEL *px[MAX_PANELS + 1]; - - scrollok(stdscr, FALSE); /* we don't want stdscr to scroll! */ - refresh(); - - InitPanel(); - for (count = 0; count < 5; count++) { - px[1] = mkpanel(COLOR_RED, - LINES / 2 - 2, - COLS / 8 + 1, - 0, - 0); - set_panel_userptr(px[1], (NCURSES_CONST void *) "p1"); - - px[2] = mkpanel(COLOR_GREEN, - LINES / 2 + 1, - COLS / 7, - LINES / 4, - COLS / 10); - set_panel_userptr(px[2], (NCURSES_CONST void *) "p2"); - - px[3] = mkpanel(COLOR_YELLOW, - LINES / 4, - COLS / 10, - LINES / 2, - COLS / 9); - set_panel_userptr(px[3], (NCURSES_CONST void *) "p3"); - - px[4] = mkpanel(COLOR_BLUE, - LINES / 2 - 2, - COLS / 8, - LINES / 2 - 2, - COLS / 3); - set_panel_userptr(px[4], (NCURSES_CONST void *) "p4"); - - px[5] = mkpanel(COLOR_MAGENTA, - LINES / 2 - 2, - COLS / 8, - LINES / 2, - COLS / 2 - 2); - set_panel_userptr(px[5], (NCURSES_CONST void *) "p5"); - - FillPanel(px[1]); - FillPanel(px[2]); - FillPanel(px[3]); - FillPanel(px[4]); - FillPanel(px[5]); - - hide_panel(px[4]); - hide_panel(px[5]); - pflush(); - saywhat(""); - wait_a_while(nap_msec); - - saywhat("h3 s1 s2 s4 s5"); - move_panel(px[1], 0, 0); - hide_panel(px[3]); - show_panel(px[1]); - show_panel(px[2]); - show_panel(px[4]); - show_panel(px[5]); - pflush(); - wait_a_while(nap_msec); - - canned_panel(px, "s1"); - canned_panel(px, "s2"); - - saywhat("m2"); - move_panel(px[2], LINES / 3 + 1, COLS / 8); - pflush(); - wait_a_while(nap_msec); - - canned_panel(px, "s3"); - - saywhat("m3"); - move_panel(px[3], LINES / 4 + 1, COLS / 15); - pflush(); - wait_a_while(nap_msec); - - canned_panel(px, "b3"); - canned_panel(px, "s4"); - canned_panel(px, "s5"); - canned_panel(px, "t3"); - canned_panel(px, "t1"); - canned_panel(px, "t2"); - canned_panel(px, "t3"); - canned_panel(px, "t4"); - - for (itmp = 0; itmp < 6; itmp++) { - WINDOW *w4 = panel_window(px[4]); - WINDOW *w5 = panel_window(px[5]); - - saywhat("m4"); - wmove(w4, LINES / 8, 1); - waddstr(w4, mod[itmp]); - move_panel(px[4], LINES / 6, itmp * (COLS / 8)); - wmove(w5, LINES / 6, 1); - waddstr(w5, mod[itmp]); - pflush(); - wait_a_while(nap_msec); - - saywhat("m5"); - wmove(w4, LINES / 6, 1); - waddstr(w4, mod[itmp]); - move_panel(px[5], LINES / 3 - 1, (itmp * 10) + 6); - wmove(w5, LINES / 8, 1); - waddstr(w5, mod[itmp]); - pflush(); - wait_a_while(nap_msec); - } - - saywhat("m4"); - move_panel(px[4], LINES / 6, itmp * (COLS / 8)); - pflush(); - wait_a_while(nap_msec); - - canned_panel(px, "t5"); - canned_panel(px, "t2"); - canned_panel(px, "t1"); - canned_panel(px, "d2"); - canned_panel(px, "h3"); - canned_panel(px, "d1"); - canned_panel(px, "d4"); - canned_panel(px, "d5"); - canned_panel(px, "d3"); - - wait_a_while(nap_msec); - if (nap_msec == 1) - break; - nap_msec = 100L; - } - - erase(); - endwin(); -} -#endif /* USE_LIBPANEL */ - -/**************************************************************************** - * - * Pad tester - * - ****************************************************************************/ - -#define GRIDSIZE 3 - -static bool pending_pan = FALSE; -static bool show_panner_legend = TRUE; - -static int -panner_legend(int line) -{ - static const char *const legend[] = - { - "Use arrow keys (or U,D,L,R) to pan, ESC to quit, ! to shell-out.", - "Use +,- (or j,k) to grow/shrink the panner vertically.", - "Use <,> (or h,l) to grow/shrink the panner horizontally.", - "Number repeats. Toggle legend:? filler:a timer:t scrollmark:s." - }; - int n = ((int) SIZEOF(legend) - (LINES - line)); - if (n >= 0) { - if (move(line, 0) != ERR) { - if (show_panner_legend) - printw("%s", legend[n]); - clrtoeol(); - return show_panner_legend; - } - } - return FALSE; -} - -static void -panner_h_cleanup(int from_y, int from_x, int to_x) -{ - if (!panner_legend(from_y)) - do_h_line(from_y, from_x, ' ', to_x); -} - -static void -panner_v_cleanup(int from_y, int from_x, int to_y) -{ - if (!panner_legend(from_y)) - do_v_line(from_y, from_x, ' ', to_y); -} - -static void -fill_pad(WINDOW *panpad, bool pan_lines) -{ - int y, x; - unsigned gridcount = 0; - - wmove(panpad, 0, 0); - for (y = 0; y < getmaxy(panpad); y++) { - for (x = 0; x < getmaxx(panpad); x++) { - if (y % GRIDSIZE == 0 && x % GRIDSIZE == 0) { - if (y == 0 && x == 0) - waddch(panpad, pan_lines ? ACS_ULCORNER : '+'); - else if (y == 0) - waddch(panpad, pan_lines ? ACS_TTEE : '+'); - else if (y == 0 || x == 0) - waddch(panpad, pan_lines ? ACS_LTEE : '+'); - else - waddch(panpad, (chtype) ((pan_lines ? 'a' : 'A') + - (int) (gridcount++ % 26))); - } else if (y % GRIDSIZE == 0) - waddch(panpad, pan_lines ? ACS_HLINE : '-'); - else if (x % GRIDSIZE == 0) - waddch(panpad, pan_lines ? ACS_VLINE : '|'); - else - waddch(panpad, ' '); - } - } -} - -static void -panner(WINDOW *pad, - int top_x, int top_y, int porty, int portx, - int (*pgetc) (WINDOW *)) -{ -#if HAVE_GETTIMEOFDAY - struct timeval before, after; - bool timing = TRUE; -#endif - bool pan_lines = FALSE; - bool scrollers = TRUE; - int basex = 0; - int basey = 0; - int pxmax, pymax, lowend, highend, c; - - getmaxyx(pad, pymax, pxmax); - scrollok(stdscr, FALSE); /* we don't want stdscr to scroll! */ - - c = KEY_REFRESH; - do { -#ifdef NCURSES_VERSION - /* - * During shell-out, the user may have resized the window. Adjust - * the port size of the pad to accommodate this. Ncurses automatically - * resizes all of the normal windows to fit on the new screen. - */ - if (top_x > COLS) - top_x = COLS; - if (portx > COLS) - portx = COLS; - if (top_y > LINES) - top_y = LINES; - if (porty > LINES) - porty = LINES; -#endif - switch (c) { - case KEY_REFRESH: - erase(); - - /* FALLTHRU */ - case '?': - if (c == '?') - show_panner_legend = !show_panner_legend; - panner_legend(LINES - 4); - panner_legend(LINES - 3); - panner_legend(LINES - 2); - panner_legend(LINES - 1); - break; - case 'a': - pan_lines = !pan_lines; - fill_pad(pad, pan_lines); - pending_pan = FALSE; - break; - -#if HAVE_GETTIMEOFDAY - case 't': - timing = !timing; - if (!timing) - panner_legend(LINES - 1); - break; -#endif - case 's': - scrollers = !scrollers; - break; - - /* Move the top-left corner of the pad, keeping the bottom-right - * corner fixed. - */ - case 'h': /* increase-columns: move left edge to left */ - if (top_x <= 0) - beep(); - else { - panner_v_cleanup(top_y, top_x, porty); - top_x--; - } - break; - - case 'j': /* decrease-lines: move top-edge down */ - if (top_y >= porty) - beep(); - else { - panner_h_cleanup(top_y - 1, top_x - (top_x > 0), portx); - top_y++; - } - break; - - case 'k': /* increase-lines: move top-edge up */ - if (top_y <= 0) - beep(); - else { - top_y--; - panner_h_cleanup(top_y, top_x, portx); - } - break; - - case 'l': /* decrease-columns: move left-edge to right */ - if (top_x >= portx) - beep(); - else { - panner_v_cleanup(top_y - (top_y > 0), top_x - 1, porty); - top_x++; - } - break; - - /* Move the bottom-right corner of the pad, keeping the top-left - * corner fixed. - */ - case KEY_IC: /* increase-columns: move right-edge to right */ - if (portx >= pxmax || portx >= COLS) - beep(); - else { - panner_v_cleanup(top_y - (top_y > 0), portx - 1, porty); - ++portx; - } - break; - - case KEY_IL: /* increase-lines: move bottom-edge down */ - if (porty >= pymax || porty >= LINES) - beep(); - else { - panner_h_cleanup(porty - 1, top_x - (top_x > 0), portx); - ++porty; - } - break; - - case KEY_DC: /* decrease-columns: move bottom edge up */ - if (portx <= top_x) - beep(); - else { - portx--; - panner_v_cleanup(top_y - (top_y > 0), portx, porty); - } - break; - - case KEY_DL: /* decrease-lines */ - if (porty <= top_y) - beep(); - else { - porty--; - panner_h_cleanup(porty, top_x - (top_x > 0), portx); - } - break; - - case KEY_LEFT: /* pan leftwards */ - if (basex > 0) - basex--; - else - beep(); - break; - - case KEY_RIGHT: /* pan rightwards */ - if (basex + portx - (pymax > porty) < pxmax) - basex++; - else - beep(); - break; - - case KEY_UP: /* pan upwards */ - if (basey > 0) - basey--; - else - beep(); - break; - - case KEY_DOWN: /* pan downwards */ - if (basey + porty - (pxmax > portx) < pymax) - basey++; - else - beep(); - break; - - case 'H': - case KEY_HOME: - case KEY_FIND: - basey = 0; - break; - - case 'E': - case KEY_END: - case KEY_SELECT: - basey = pymax - porty; - if (basey < 0) - basey = 0; - break; - - default: - beep(); - break; - } - - MvAddCh(top_y - 1, top_x - 1, ACS_ULCORNER); - do_v_line(top_y, top_x - 1, ACS_VLINE, porty); - do_h_line(top_y - 1, top_x, ACS_HLINE, portx); - - if (scrollers && (pxmax > portx - 1)) { - int length = (portx - top_x - 1); - float ratio = ((float) length) / ((float) pxmax); - - lowend = (int) ((float) top_x + ((float) basex * ratio)); - highend = (int) ((float) top_x + ((float) (basex + length) * ratio)); - - do_h_line(porty - 1, top_x, ACS_HLINE, lowend); - if (highend < portx) { - attron(A_REVERSE); - do_h_line(porty - 1, lowend, ' ', highend + 1); - attroff(A_REVERSE); - do_h_line(porty - 1, highend + 1, ACS_HLINE, portx); - } - } else - do_h_line(porty - 1, top_x, ACS_HLINE, portx); - - if (scrollers && (pymax > porty - 1)) { - int length = (porty - top_y - 1); - float ratio = ((float) length) / ((float) pymax); - - lowend = (int) ((float) top_y + ((float) basey * ratio)); - highend = (int) ((float) top_y + ((float) (basey + length) * ratio)); - - do_v_line(top_y, portx - 1, ACS_VLINE, lowend); - if (highend < porty) { - attron(A_REVERSE); - do_v_line(lowend, portx - 1, ' ', highend + 1); - attroff(A_REVERSE); - do_v_line(highend + 1, portx - 1, ACS_VLINE, porty); - } - } else - do_v_line(top_y, portx - 1, ACS_VLINE, porty); - - MvAddCh(top_y - 1, portx - 1, ACS_URCORNER); - MvAddCh(porty - 1, top_x - 1, ACS_LLCORNER); - MvAddCh(porty - 1, portx - 1, ACS_LRCORNER); - - if (!pending_pan) { -#if HAVE_GETTIMEOFDAY - gettimeofday(&before, 0); -#endif - wnoutrefresh(stdscr); - - pnoutrefresh(pad, - basey, basex, - top_y, top_x, - porty - (pxmax > portx) - 1, - portx - (pymax > porty) - 1); - - doupdate(); -#if HAVE_GETTIMEOFDAY -#define TIMEVAL2S(data) ((double) data.tv_sec + ((double) data.tv_usec / 1.0e6)) - if (timing) { - double elapsed; - gettimeofday(&after, 0); - elapsed = (TIMEVAL2S(after) - TIMEVAL2S(before)); - move(LINES - 1, COLS - 12); - printw("Secs: %2.03f", elapsed); - refresh(); - } -#endif - } - - } while - ((c = pgetc(pad)) != KEY_EXIT); - - scrollok(stdscr, TRUE); /* reset to driver's default */ -} - -static int -padgetch(WINDOW *win) -{ - static int count; - static int last; - int c; - - if ((pending_pan = (count > 0)) != FALSE) { - count--; - pending_pan = (count != 0); - } else { - for (;;) { - switch (c = wGetchar(win)) { - case '!': - ShellOut(FALSE); - /* FALLTHRU */ - case CTRL('r'): - endwin(); - refresh(); - c = KEY_REFRESH; - break; - case CTRL('l'): - c = KEY_REFRESH; - break; - case 'U': - c = KEY_UP; - break; - case 'D': - c = KEY_DOWN; - break; - case 'R': - c = KEY_RIGHT; - break; - case 'L': - c = KEY_LEFT; - break; - case '+': - c = KEY_IL; - break; - case '-': - c = KEY_DL; - break; - case '>': - c = KEY_IC; - break; - case '<': - c = KEY_DC; - break; - case ERR: /* FALLTHRU */ - case case_QUIT: - count = 0; - c = KEY_EXIT; - break; - default: - if (c >= '0' && c <= '9') { - count = count * 10 + (c - '0'); - continue; - } - break; - } - last = c; - break; - } - if (count > 0) - count--; - } - return (last); -} - -#define PAD_HIGH 200 -#define PAD_WIDE 200 - -static void -demo_pad(void) -/* Demonstrate pads. */ -{ - WINDOW *panpad = newpad(PAD_HIGH, PAD_WIDE); - - if (panpad == 0) { - Cannot("cannot create requested pad"); - return; - } - - fill_pad(panpad, FALSE); - - panner_legend(LINES - 4); - panner_legend(LINES - 3); - panner_legend(LINES - 2); - panner_legend(LINES - 1); - - keypad(panpad, TRUE); - - /* Make the pad (initially) narrow enough that a trace file won't wrap. - * We'll still be able to widen it during a test, since that's required - * for testing boundaries. - */ - panner(panpad, 2, 2, LINES - 5, COLS - 15, padgetch); - - delwin(panpad); - endwin(); - erase(); -} - -/**************************************************************************** - * - * Tests from John Burnell's PDCurses tester - * - ****************************************************************************/ - -static void -Continue(WINDOW *win) -{ - noecho(); - wmove(win, 10, 1); - MvWAddStr(win, 10, 1, " Press any key to continue"); - wrefresh(win); - wGetchar(win); -} - -static void -flushinp_test(WINDOW *win) -/* Input test, adapted from John Burnell's PDCurses tester */ -{ - int w, h, bx, by, sw, sh, i; - - WINDOW *subWin; - wclear(win); - - getmaxyx(win, h, w); - getbegyx(win, by, bx); - sw = w / 3; - sh = h / 3; - if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0) - return; - -#ifdef A_COLOR - if (use_colors) { - init_pair(2, COLOR_CYAN, COLOR_BLUE); - wbkgd(subWin, COLOR_PAIR(2) | ' '); - } -#endif - (void) wattrset(subWin, A_BOLD); - box(subWin, ACS_VLINE, ACS_HLINE); - MvWAddStr(subWin, 2, 1, "This is a subwindow"); - wrefresh(win); - - /* - * This used to set 'nocbreak()'. However, Alexander Lukyanov says that - * it only happened to "work" on SVr4 because that implementation does not - * emulate nocbreak+noecho mode, whereas ncurses does. To get the desired - * test behavior, we're using 'cbreak()', which will allow a single - * character to return without needing a newline. - T.Dickey 1997/10/11. - */ - cbreak(); - MvWAddStr(win, 0, 1, "This is a test of the flushinp() call."); - - MvWAddStr(win, 2, 1, "Type random keys for 5 seconds."); - MvWAddStr(win, 3, 1, - "These should be discarded (not echoed) after the subwindow goes away."); - wrefresh(win); - - for (i = 0; i < 5; i++) { - MvWPrintw(subWin, 1, 1, "Time = %d", i); - wrefresh(subWin); - napms(1000); - flushinp(); - } - - delwin(subWin); - werase(win); - flash(); - wrefresh(win); - napms(1000); - - MvWAddStr(win, 2, 1, - "If you were still typing when the window timer expired,"); - MvWAddStr(win, 3, 1, - "or else you typed nothing at all while it was running,"); - MvWAddStr(win, 4, 1, - "test was invalid. You'll see garbage or nothing at all. "); - MvWAddStr(win, 6, 1, "Press a key"); - wmove(win, 9, 10); - wrefresh(win); - echo(); - wGetchar(win); - flushinp(); - MvWAddStr(win, 12, 0, - "If you see any key other than what you typed, flushinp() is broken."); - Continue(win); - - wmove(win, 9, 10); - wdelch(win); - wrefresh(win); - wmove(win, 12, 0); - clrtoeol(); - waddstr(win, - "What you typed should now have been deleted; if not, wdelch() failed."); - Continue(win); - - cbreak(); -} - -/**************************************************************************** - * - * Menu test - * - ****************************************************************************/ - -#if USE_LIBMENU - -#define MENU_Y 8 -#define MENU_X 8 - -static int -menu_virtualize(int c) -{ - if (c == '\n' || c == KEY_EXIT) - return (MAX_COMMAND + 1); - else if (c == 'u') - return (REQ_SCR_ULINE); - else if (c == 'd') - return (REQ_SCR_DLINE); - else if (c == 'b' || c == KEY_NPAGE) - return (REQ_SCR_UPAGE); - else if (c == 'f' || c == KEY_PPAGE) - return (REQ_SCR_DPAGE); - else if (c == 'n' || c == KEY_DOWN) - return (REQ_NEXT_ITEM); - else if (c == 'p' || c == KEY_UP) - return (REQ_PREV_ITEM); - else if (c == ' ') - return (REQ_TOGGLE_ITEM); - else { - if (c != KEY_MOUSE) - beep(); - return (c); - } -} - -static CONST_MENUS char *animals[] = -{ - "Lions", - "Tigers", - "Bears", - "(Oh my!)", - "Newts", - "Platypi", - "Lemurs", - "(Oh really?!)", - "Leopards", - "Panthers", - "Pumas", - "Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs", - "Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs, Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs", - (char *) 0 -}; - -static void -menu_test(void) -{ - MENU *m; - ITEM *items[SIZEOF(animals)]; - ITEM **ip = items; - CONST_MENUS char **ap; - int mrows, mcols, c; - WINDOW *menuwin; - -#ifdef NCURSES_MOUSE_VERSION - mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); -#endif - MvAddStr(0, 0, "This is the menu test:"); - MvAddStr(2, 0, " Use up and down arrow to move the select bar."); - MvAddStr(3, 0, " 'n' and 'p' act like arrows."); - MvAddStr(4, 0, - " 'b' and 'f' scroll up/down (page), 'u' and 'd' (line)."); - MvAddStr(5, 0, " Press return to exit."); - refresh(); - - for (ap = animals; *ap; ap++) { - if ((*ip = new_item(*ap, "")) != 0) - ++ip; - } - *ip = (ITEM *) 0; - - m = new_menu(items); - - set_menu_format(m, (SIZEOF(animals) + 1) / 2, 1); - scale_menu(m, &mrows, &mcols); - - menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X); - set_menu_win(m, menuwin); - keypad(menuwin, TRUE); - box(menuwin, 0, 0); - - set_menu_sub(m, derwin(menuwin, mrows, mcols, 1, 1)); - - post_menu(m); - - while ((c = menu_driver(m, menu_virtualize(wGetchar(menuwin)))) != E_UNKNOWN_COMMAND) { - if (c == E_NOT_POSTED) - break; - if (c == E_REQUEST_DENIED) - beep(); - continue; - } - - MvPrintw(LINES - 2, 0, - "You chose: %s\n", item_name(current_item(m))); - (void) addstr("Press any key to continue..."); - wGetchar(stdscr); - - unpost_menu(m); - delwin(menuwin); - - free_menu(m); - for (ip = items; *ip; ip++) - free_item(*ip); -#ifdef NCURSES_MOUSE_VERSION - mousemask(0, (mmask_t *) 0); -#endif -} - -#ifdef TRACE -#define T_TBL(name) { #name, name } -static struct { - const char *name; - unsigned mask; -} t_tbl[] = { - - T_TBL(TRACE_DISABLE), - T_TBL(TRACE_TIMES), - T_TBL(TRACE_TPUTS), - T_TBL(TRACE_UPDATE), - T_TBL(TRACE_MOVE), - T_TBL(TRACE_CHARPUT), - T_TBL(TRACE_ORDINARY), - T_TBL(TRACE_CALLS), - T_TBL(TRACE_VIRTPUT), - T_TBL(TRACE_IEVENT), - T_TBL(TRACE_BITS), - T_TBL(TRACE_ICALLS), - T_TBL(TRACE_CCALLS), - T_TBL(TRACE_DATABASE), - T_TBL(TRACE_ATTRS), - T_TBL(TRACE_MAXIMUM), - { - (char *) 0, 0 - } -}; - -static char * -tracetrace(unsigned tlevel) -{ - static char *buf; - int n; - - if (buf == 0) { - size_t need = 12; - for (n = 0; t_tbl[n].name != 0; n++) - need += strlen(t_tbl[n].name) + 2; - buf = typeMalloc(char, need); - } - sprintf(buf, "0x%02x = {", tlevel); - if (tlevel == 0) { - sprintf(buf + strlen(buf), "%s, ", t_tbl[0].name); - } else { - for (n = 1; t_tbl[n].name != 0; n++) - if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) { - strcat(buf, t_tbl[n].name); - strcat(buf, ", "); - } - } - if (buf[strlen(buf) - 2] == ',') - buf[strlen(buf) - 2] = '\0'; - return (strcat(buf, "}")); -} - -/* fake a dynamically reconfigurable menu using the 0th entry to deselect - * the others - */ -static int -run_trace_menu(MENU * m) -{ - ITEM **items; - ITEM *i, **p; - - for (;;) { - bool changed = FALSE; - switch (menu_driver(m, menu_virtualize(wGetchar(menu_win(m))))) { - case E_UNKNOWN_COMMAND: - return FALSE; - default: - items = menu_items(m); - i = current_item(m); - if (i == items[0]) { - if (item_value(i)) { - for (p = items + 1; *p != 0; p++) - if (item_value(*p)) { - set_item_value(*p, FALSE); - changed = TRUE; - } - } - } else { - for (p = items + 1; *p != 0; p++) - if (item_value(*p)) { - set_item_value(items[0], FALSE); - changed = TRUE; - break; - } - } - if (!changed) - return TRUE; - } - } -} - -static void -trace_set(void) -/* interactively set the trace level */ -{ - MENU *m; - ITEM *items[SIZEOF(t_tbl)]; - ITEM **ip = items; - int mrows, mcols; - unsigned newtrace; - int n; - WINDOW *menuwin; - - MvAddStr(0, 0, "Interactively set trace level:"); - MvAddStr(2, 0, " Press space bar to toggle a selection."); - MvAddStr(3, 0, " Use up and down arrow to move the select bar."); - MvAddStr(4, 0, " Press return to set the trace level."); - MvPrintw(6, 0, "(Current trace level is %s)", tracetrace(_nc_tracing)); - - refresh(); - - for (n = 0; t_tbl[n].name != 0; n++) { - if ((*ip = new_item(t_tbl[n].name, "")) != 0) { - ++ip; - } - } - *ip = (ITEM *) 0; - - m = new_menu(items); - - set_menu_format(m, 0, 2); - scale_menu(m, &mrows, &mcols); - - menu_opts_off(m, O_ONEVALUE); - menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X); - set_menu_win(m, menuwin); - keypad(menuwin, TRUE); - box(menuwin, 0, 0); - - set_menu_sub(m, derwin(menuwin, mrows, mcols, 1, 1)); - - post_menu(m); - - for (ip = menu_items(m); *ip; ip++) { - unsigned mask = t_tbl[item_index(*ip)].mask; - if (mask == 0) - set_item_value(*ip, _nc_tracing == 0); - else if ((mask & _nc_tracing) == mask) - set_item_value(*ip, TRUE); - } - - while (run_trace_menu(m)) - continue; - - newtrace = 0; - for (ip = menu_items(m); *ip; ip++) - if (item_value(*ip)) - newtrace |= t_tbl[item_index(*ip)].mask; - trace(newtrace); - Trace(("trace level interactively set to %s", tracetrace(_nc_tracing))); - - MvPrintw(LINES - 2, 0, - "Trace level is %s\n", tracetrace(_nc_tracing)); - (void) addstr("Press any key to continue..."); - wGetchar(stdscr); - - unpost_menu(m); - delwin(menuwin); - - free_menu(m); - for (ip = items; *ip; ip++) - free_item(*ip); -} -#endif /* TRACE */ -#endif /* USE_LIBMENU */ - -/**************************************************************************** - * - * Forms test - * - ****************************************************************************/ -#if USE_LIBFORM -static FIELD * -make_label(int frow, int fcol, NCURSES_CONST char *label) -{ - FIELD *f = new_field(1, (int) strlen(label), frow, fcol, 0, 0); - - if (f) { - set_field_buffer(f, 0, label); - set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE)); - } - return (f); -} - -static FIELD * -make_field(int frow, int fcol, int rows, int cols, bool secure) -{ - FIELD *f = new_field(rows, cols, frow, fcol, 0, secure ? 1 : 0); - - if (f) { - set_field_back(f, A_UNDERLINE); - set_field_userptr(f, (void *) 0); - } - return (f); -} - -static void -display_form(FORM * f) -{ - WINDOW *w; - int rows, cols; - - scale_form(f, &rows, &cols); - - if ((w = newwin(rows + 2, cols + 4, 0, 0)) != (WINDOW *) 0) { - set_form_win(f, w); - set_form_sub(f, derwin(w, rows, cols, 1, 2)); - box(w, 0, 0); - keypad(w, TRUE); - } - - if (post_form(f) != E_OK) - wrefresh(w); -} - -static void -erase_form(FORM * f) -{ - WINDOW *w = form_win(f); - WINDOW *s = form_sub(f); - - unpost_form(f); - werase(w); - wrefresh(w); - delwin(s); - delwin(w); -} - -static int -edit_secure(FIELD * me, int c) -{ - int rows, cols, frow, fcol, nrow, nbuf; - - if (field_info(me, &rows, &cols, &frow, &fcol, &nrow, &nbuf) == E_OK - && nbuf > 0) { - char *source = field_buffer(me, 1); - char temp[80]; - long len; - - strcpy(temp, source ? source : ""); - len = (long) (char *) field_userptr(me); - if (c <= KEY_MAX) { - if (isgraph(c) && (len + 1) < (int) sizeof(temp)) { - temp[len++] = (char) c; - temp[len] = 0; - set_field_buffer(me, 1, temp); - c = '*'; - } else { - c = 0; - } - } else { - switch (c) { - case REQ_BEG_FIELD: - case REQ_CLR_EOF: - case REQ_CLR_EOL: - case REQ_DEL_LINE: - case REQ_DEL_WORD: - case REQ_DOWN_CHAR: - case REQ_END_FIELD: - case REQ_INS_CHAR: - case REQ_INS_LINE: - case REQ_LEFT_CHAR: - case REQ_NEW_LINE: - case REQ_NEXT_WORD: - case REQ_PREV_WORD: - case REQ_RIGHT_CHAR: - case REQ_UP_CHAR: - c = 0; /* we don't want to do inline editing */ - break; - case REQ_CLR_FIELD: - if (len) { - temp[0] = 0; - set_field_buffer(me, 1, temp); - } - break; - case REQ_DEL_CHAR: - case REQ_DEL_PREV: - if (len) { - temp[--len] = 0; - set_field_buffer(me, 1, temp); - } - break; - } - } - set_field_userptr(me, (void *) len); - } - return c; -} - -static int -form_virtualize(FORM * f, WINDOW *w) -{ - /* *INDENT-OFF* */ - static const struct { - int code; - int result; - } lookup[] = { - { CTRL('A'), REQ_NEXT_CHOICE }, - { CTRL('B'), REQ_PREV_WORD }, - { CTRL('C'), REQ_CLR_EOL }, - { CTRL('D'), REQ_DOWN_FIELD }, - { CTRL('E'), REQ_END_FIELD }, - { CTRL('F'), REQ_NEXT_PAGE }, - { CTRL('G'), REQ_DEL_WORD }, - { CTRL('H'), REQ_DEL_PREV }, - { CTRL('I'), REQ_INS_CHAR }, - { CTRL('K'), REQ_CLR_EOF }, - { CTRL('L'), REQ_LEFT_FIELD }, - { CTRL('M'), REQ_NEW_LINE }, - { CTRL('N'), REQ_NEXT_FIELD }, - { CTRL('O'), REQ_INS_LINE }, - { CTRL('P'), REQ_PREV_FIELD }, - { CTRL('R'), REQ_RIGHT_FIELD }, - { CTRL('S'), REQ_BEG_FIELD }, - { CTRL('U'), REQ_UP_FIELD }, - { CTRL('V'), REQ_DEL_CHAR }, - { CTRL('W'), REQ_NEXT_WORD }, - { CTRL('X'), REQ_CLR_FIELD }, - { CTRL('Y'), REQ_DEL_LINE }, - { CTRL('Z'), REQ_PREV_CHOICE }, - { ESCAPE, MAX_FORM_COMMAND + 1 }, - { KEY_BACKSPACE, REQ_DEL_PREV }, - { KEY_DOWN, REQ_DOWN_CHAR }, - { KEY_END, REQ_LAST_FIELD }, - { KEY_HOME, REQ_FIRST_FIELD }, - { KEY_LEFT, REQ_LEFT_CHAR }, - { KEY_LL, REQ_LAST_FIELD }, - { KEY_NEXT, REQ_NEXT_FIELD }, - { KEY_NPAGE, REQ_NEXT_PAGE }, - { KEY_PPAGE, REQ_PREV_PAGE }, - { KEY_PREVIOUS, REQ_PREV_FIELD }, - { KEY_RIGHT, REQ_RIGHT_CHAR }, - { KEY_UP, REQ_UP_CHAR }, - { QUIT, MAX_FORM_COMMAND + 1 } - }; - /* *INDENT-ON* */ - - static int mode = REQ_INS_MODE; - int c = wGetchar(w); - unsigned n; - FIELD *me = current_field(f); - bool current = TRUE; - - if (c == CTRL(']')) { - if (mode == REQ_INS_MODE) { - mode = REQ_OVL_MODE; - } else { - mode = REQ_INS_MODE; - } - c = mode; - } else { - for (n = 0; n < SIZEOF(lookup); n++) { - if (lookup[n].code == c) { - c = lookup[n].result; - break; - } - } - } - MvPrintw(0, COLS - 6, "(%s)", mode == REQ_INS_MODE ? "INS" : "OVL"); - - /* - * Force the field that the user is typing into to be in reverse video, - * while the other fields are shown underlined. - */ - switch (c) { - case REQ_BEG_FIELD: - case REQ_CLR_EOF: - case REQ_CLR_EOL: - case REQ_CLR_FIELD: - case REQ_DEL_CHAR: - case REQ_DEL_LINE: - case REQ_DEL_PREV: - case REQ_DEL_WORD: - case REQ_END_FIELD: - case REQ_INS_CHAR: - case REQ_INS_LINE: - case REQ_LEFT_CHAR: - case REQ_LEFT_FIELD: - case REQ_NEXT_WORD: - case REQ_RIGHT_CHAR: - current = TRUE; - break; - default: - current = (c < KEY_MAX); - break; - } - if (current) { - c = edit_secure(me, c); - set_field_back(me, A_REVERSE); - } else { - c = edit_secure(me, c); - set_field_back(me, A_UNDERLINE); - } - return c; -} - -static int -my_form_driver(FORM * form, int c) -{ - if (c == (MAX_FORM_COMMAND + 1) - && form_driver(form, REQ_VALIDATION) == E_OK) - return (TRUE); - else { - beep(); - return (FALSE); - } -} - -#ifdef NCURSES_VERSION -#define FIELDCHECK_CB(func) bool func(FIELD * fld, const void * data GCC_UNUSED) -#define CHAR_CHECK_CB(func) bool func(int ch, const void *data GCC_UNUSED) -#else -#define FIELDCHECK_CB(func) int func(FIELD * fld, char * data GCC_UNUSED) -#define CHAR_CHECK_CB(func) int func(int ch, char *data GCC_UNUSED) -#endif - -/* - * Allow a middle initial, optionally with a '.' to end it. - */ -static -FIELDCHECK_CB(mi_field_check) -{ - char *s = field_buffer(fld, 0); - int state = 0; - int n; - - for (n = 0; s[n] != '\0'; ++n) { - switch (state) { - case 0: - if (s[n] == '.') { - if (n != 1) - return FALSE; - state = 2; - } else if (isspace(UChar(s[n]))) { - state = 2; - } - break; - case 2: - if (!isspace(UChar(s[n]))) - return FALSE; - break; - } - } - - /* force the form to display a leading capital */ - if (islower(UChar(s[0]))) { - s[0] = (char) toupper(UChar(s[0])); - set_field_buffer(fld, 0, s); - } - return TRUE; -} - -static -CHAR_CHECK_CB(mi_char_check) -{ - return ((isalpha(ch) || ch == '.') ? TRUE : FALSE); -} - -/* - * Passwords should be at least 6 characters. - */ -static -FIELDCHECK_CB(pw_field_check) -{ - char *s = field_buffer(fld, 0); - int n; - - for (n = 0; s[n] != '\0'; ++n) { - if (isspace(UChar(s[n]))) { - if (n < 6) - return FALSE; - } - } - return TRUE; -} - -static -CHAR_CHECK_CB(pw_char_check) -{ - return (isgraph(ch) ? TRUE : FALSE); -} - -static void -demo_forms(void) -{ - WINDOW *w; - FORM *form; - FIELD *f[12], *secure; - FIELDTYPE *fty_middle = new_fieldtype(mi_field_check, mi_char_check); - FIELDTYPE *fty_passwd = new_fieldtype(pw_field_check, pw_char_check); - int finished = 0, c; - unsigned n = 0; - -#ifdef NCURSES_MOUSE_VERSION - mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); -#endif - - move(18, 0); - addstr("Defined edit/traversal keys: ^Q/ESC- exit form\n"); - addstr("^N -- go to next field ^P -- go to previous field\n"); - addstr("Home -- go to first field End -- go to last field\n"); - addstr("^L -- go to field to left ^R -- go to field to right\n"); - addstr("^U -- move upward to field ^D -- move downward to field\n"); - addstr("^W -- go to next word ^B -- go to previous word\n"); - addstr("^S -- go to start of field ^E -- go to end of field\n"); - addstr("^H -- delete previous char ^Y -- delete line\n"); - addstr("^G -- delete current word ^C -- clear to end of line\n"); - addstr("^K -- clear to end of field ^X -- clear field\n"); - addstr("Arrow keys move within a field as you would expect. ^] toggles overlay mode."); - - MvAddStr(4, 57, "Forms Entry Test"); - - refresh(); - - /* describe the form */ - memset(f, 0, sizeof(f)); - f[n++] = make_label(0, 15, "Sample Form"); - - f[n++] = make_label(2, 0, "Last Name"); - f[n++] = make_field(3, 0, 1, 18, FALSE); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - - f[n++] = make_label(2, 20, "First Name"); - f[n++] = make_field(3, 20, 1, 12, FALSE); - set_field_type(f[n - 1], TYPE_ALPHA, 1); - - f[n++] = make_label(2, 34, "Middle Name"); - f[n++] = make_field(3, 34, 1, 12, FALSE); - set_field_type(f[n - 1], fty_middle); - - f[n++] = make_label(5, 0, "Comments"); - f[n++] = make_field(6, 0, 4, 46, FALSE); - - f[n++] = make_label(5, 20, "Password:"); - secure = - f[n++] = make_field(5, 30, 1, 9, TRUE); - set_field_type(f[n - 1], fty_passwd); - f[n] = (FIELD *) 0; - - if ((form = new_form(f)) != 0) { - - display_form(form); - - w = form_win(form); - raw(); - nonl(); /* lets us read ^M's */ - while (!finished) { - switch (form_driver(form, c = form_virtualize(form, w))) { - case E_OK: - MvAddStr(5, 57, field_buffer(secure, 1)); - clrtoeol(); - refresh(); - break; - case E_UNKNOWN_COMMAND: - finished = my_form_driver(form, c); - break; - default: - beep(); - break; - } - } - - erase_form(form); - - free_form(form); - } - for (c = 0; f[c] != 0; c++) - free_field(f[c]); - free_fieldtype(fty_middle); - free_fieldtype(fty_passwd); - noraw(); - nl(); - -#ifdef NCURSES_MOUSE_VERSION - mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); -#endif -} -#endif /* USE_LIBFORM */ - -/**************************************************************************** - * - * Overlap test - * - ****************************************************************************/ - -static void -fillwin(WINDOW *win, char ch) -{ - int y, x; - int y1, x1; - - getmaxyx(win, y1, x1); - for (y = 0; y < y1; y++) { - wmove(win, y, 0); - for (x = 0; x < x1; x++) - waddch(win, UChar(ch)); - } -} - -static void -crosswin(WINDOW *win, char ch) -{ - int y, x; - int y1, x1; - - getmaxyx(win, y1, x1); - for (y = 0; y < y1; y++) { - for (x = 0; x < x1; x++) - if (((x > (x1 - 1) / 3) && (x <= (2 * (x1 - 1)) / 3)) - || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3)))) { - wmove(win, y, x); - waddch(win, UChar(ch)); - } - } -} - -#define OVERLAP_FLAVORS 5 - -static void -overlap_helpitem(int state, int item, char *message) -{ - int row = (item / 2); - int col = ((item % 2) ? COLS / 2 : 0); - - move(LINES - 6 + row, col); - printw("%c%c = %s", state == row ? '>' : ' ', 'a' + item, message); - clrtoeol(); -} - -static void -overlap_test_1_attr(WINDOW *win, int flavor, int col) -{ - short cpair = (short) (1 + (flavor * 2) + col); - - switch (flavor) { - case 0: - (void) wattrset(win, A_NORMAL); - break; - case 1: - (void) wattrset(win, A_BOLD); - break; - case 2: - init_pair(cpair, COLOR_BLUE, COLOR_WHITE); - (void) wattrset(win, (attr_t) COLOR_PAIR(cpair) | A_NORMAL); - break; - case 3: - init_pair(cpair, COLOR_WHITE, COLOR_BLUE); - (void) wattrset(win, (attr_t) COLOR_PAIR(cpair) | A_BOLD); - break; - } -} - -static void -overlap_test_2_attr(WINDOW *win, int flavor, int col) -{ - short cpair = (short) (9 + (flavor * 2) + col); - - switch (flavor) { - case 0: - /* no effect */ - break; - case 1: - /* no effect */ - break; - case 2: - init_pair(cpair, COLOR_RED, COLOR_GREEN); - wbkgdset(win, colored_chtype(' ', A_BLINK, cpair)); - break; - case 3: - wbkgdset(win, ' ' | A_NORMAL); - break; - } -} - -static int -overlap_help(int state, int flavors[OVERLAP_FLAVORS]) -{ - int row; - int col; - int item; - const char *ths, *tht; - char msg[80]; - - if (state < 0) - state += OVERLAP_FLAVORS; - state = state % OVERLAP_FLAVORS; - assert(state >= 0 && state < OVERLAP_FLAVORS); - - for (item = 0; item < (2 * OVERLAP_FLAVORS); ++item) { - row = item / 2; - col = item % 2; - ths = col ? "B" : "A"; - tht = col ? "A" : "B"; - - switch (row) { - case 0: - flavors[row] = 0; - sprintf(msg, "refresh %s, then %s, then doupdate.", ths, tht); - break; - case 1: - if (use_colors) { - flavors[row] %= 4; - } else { - flavors[row] %= 2; - } - overlap_test_1_attr(stdscr, flavors[row], col); - sprintf(msg, "fill window %s with letter %s.", ths, ths); - break; - case 2: - if (use_colors) { - flavors[row] %= 4; - } else { - flavors[row] %= 2; - } - switch (flavors[row]) { - case 0: - sprintf(msg, "cross pattern in window %s.", ths); - break; - case 1: - sprintf(msg, "draw box in window %s.", ths); - break; - case 2: - sprintf(msg, "set background of window %s.", ths); - break; - case 3: - sprintf(msg, "reset background of window %s.", ths); - break; - } - break; - case 3: - flavors[row] = 0; - sprintf(msg, "clear window %s.", ths); - break; - case 4: - flavors[row] %= 4; - switch (flavors[row]) { - case 0: - sprintf(msg, "overwrite %s onto %s.", ths, tht); - break; - case 1: - sprintf(msg, "copywin(FALSE) %s onto %s.", ths, tht); - break; - case 2: - sprintf(msg, "copywin(TRUE) %s onto %s.", ths, tht); - break; - case 3: - sprintf(msg, "overlay %s onto %s.", ths, tht); - break; - } - break; - } - overlap_helpitem(state, item, msg); - (void) wattrset(stdscr, A_NORMAL); - wbkgdset(stdscr, ' ' | A_NORMAL); - } - move(LINES - 1, 0); - printw("^Q/ESC = terminate test. Up/down/space select test variations (%d %d).", - state, flavors[state]); - - return state; -} - -static void -overlap_test_0(WINDOW *a, WINDOW *b) -{ - touchwin(a); - touchwin(b); - wnoutrefresh(a); - wnoutrefresh(b); - doupdate(); -} - -static void -overlap_test_1(int flavor, int col, WINDOW *a, char fill) -{ - overlap_test_1_attr(a, flavor, col); - fillwin(a, fill); - (void) wattrset(a, A_NORMAL); -} - -static void -overlap_test_2(int flavor, int col, WINDOW *a, char fill) -{ - overlap_test_2_attr(a, flavor, col); - switch (flavor) { - case 0: - crosswin(a, fill); - break; - case 1: - box(a, 0, 0); - break; - case 2: - /* done in overlap_test_2_attr */ - break; - case 3: - /* done in overlap_test_2_attr */ - break; - } -} - -static void -overlap_test_3(WINDOW *a) -{ - wclear(a); - wmove(a, 0, 0); -} - -static void -overlap_test_4(int flavor, WINDOW *a, WINDOW *b) -{ - switch (flavor) { - case 0: - overwrite(a, b); - break; - case 1: - copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), FALSE); - break; - case 2: - copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), TRUE); - break; - case 3: - overlay(a, b); - break; - } -} - -/* test effects of overlapping windows */ -static void -overlap_test(void) -{ - int ch; - int state, flavor[OVERLAP_FLAVORS]; - - WINDOW *win1 = newwin(9, 20, 3, 3); - WINDOW *win2 = newwin(9, 20, 9, 16); - - curs_set(0); - raw(); - refresh(); - move(0, 0); - printw("This test shows the behavior of wnoutrefresh() with respect to\n"); - printw("the shared region of two overlapping windows A and B. The cross\n"); - printw("pattern in each window does not overlap the other.\n"); - - memset(flavor, 0, sizeof(flavor)); - state = overlap_help(0, flavor); - - while (!isQuit(ch = Getchar())) - switch (ch) { - case 'a': /* refresh window A first, then B */ - overlap_test_0(win1, win2); - break; - - case 'b': /* refresh window B first, then A */ - overlap_test_0(win2, win1); - break; - - case 'c': /* fill window A so it's visible */ - overlap_test_1(flavor[1], 0, win1, 'A'); - break; - - case 'd': /* fill window B so it's visible */ - overlap_test_1(flavor[1], 1, win2, 'B'); - break; - - case 'e': /* cross test pattern in window A */ - overlap_test_2(flavor[2], 0, win1, 'A'); - break; - - case 'f': /* cross test pattern in window A */ - overlap_test_2(flavor[2], 1, win2, 'B'); - break; - - case 'g': /* clear window A */ - overlap_test_3(win1); - break; - - case 'h': /* clear window B */ - overlap_test_3(win2); - break; - - case 'i': /* overwrite A onto B */ - overlap_test_4(flavor[4], win1, win2); - break; - - case 'j': /* overwrite B onto A */ - overlap_test_4(flavor[4], win2, win1); - break; - - case CTRL('n'): - case KEY_DOWN: - state = overlap_help(state + 1, flavor); - break; - - case CTRL('p'): - case KEY_UP: - state = overlap_help(state - 1, flavor); - break; - - case ' ': - flavor[state] += 1; - state = overlap_help(state, flavor); - break; - - case '?': - state = overlap_help(state, flavor); - break; - - default: - beep(); - break; - } - - delwin(win2); - delwin(win1); - erase(); - curs_set(1); - endwin(); -} - -/**************************************************************************** - * - * Main sequence - * - ****************************************************************************/ - -static bool -do_single_test(const char c) -/* perform a single specified test */ -{ - switch (c) { - case 'a': - getch_test(); - break; - -#if USE_WIDEC_SUPPORT - case 'A': - get_wch_test(); - break; -#endif - - case 'b': - attr_test(); - break; - -#if USE_WIDEC_SUPPORT - case 'B': - wide_attr_test(); - break; -#endif - - case 'c': - if (!use_colors) - Cannot("does not support color."); - else - color_test(); - break; - -#if USE_WIDEC_SUPPORT - case 'C': - if (!use_colors) - Cannot("does not support color."); - else - wide_color_test(); - break; -#endif - - case 'd': - if (!use_colors) - Cannot("does not support color."); - else if (!can_change_color()) - Cannot("has hardwired color values."); - else - color_edit(); - break; - -#if USE_SOFTKEYS - case 'e': - slk_test(); - break; - -#if USE_WIDEC_SUPPORT - case 'E': - wide_slk_test(); - break; -#endif -#endif - - case 'f': - acs_display(); - break; - -#if USE_WIDEC_SUPPORT - case 'F': - wide_acs_display(); - break; -#endif - -#if USE_LIBPANEL - case 'o': - demo_panels(init_panel, fill_panel); - break; -#endif - -#if USE_WIDEC_SUPPORT && USE_LIBPANEL - case 'O': - demo_panels(init_wide_panel, fill_wide_panel); - break; -#endif - - case 'g': - acs_and_scroll(); - break; - - case 'i': - flushinp_test(stdscr); - break; - - case 'k': - test_sgr_attributes(); - break; - -#if USE_LIBMENU - case 'm': - menu_test(); - break; -#endif - - case 'p': - demo_pad(); - break; - -#if USE_LIBFORM - case 'r': - demo_forms(); - break; -#endif - - case 's': - overlap_test(); - break; - -#if USE_LIBMENU && defined(TRACE) - case 't': - trace_set(); - break; -#endif - - case '?': - break; - - default: - return FALSE; - } - - return TRUE; -} - -static void -usage(void) -{ - static const char *const tbl[] = - { - "Usage: ncurses [options]" - ,"" - ,"Options:" -#ifdef NCURSES_VERSION - ," -a f,b set default-colors (assumed white-on-black)" - ," -d use default-colors if terminal supports them" -#endif -#if USE_SOFTKEYS - ," -e fmt specify format for soft-keys test (e)" -#endif -#if HAVE_RIPOFFLINE - ," -f rip-off footer line (can repeat)" - ," -h rip-off header line (can repeat)" -#endif - ," -m do not use colors" - ," -p file rgb values to use in 'd' rather than ncurses's builtin" -#if USE_LIBPANEL - ," -s msec specify nominal time for panel-demo (default: 1, to hold)" -#endif -#ifdef TRACE - ," -t mask specify default trace-level (may toggle with ^T)" -#endif - }; - size_t n; - for (n = 0; n < SIZEOF(tbl); n++) - fprintf(stderr, "%s\n", tbl[n]); - ExitProgram(EXIT_FAILURE); -} - -static void -set_terminal_modes(void) -{ - noraw(); - cbreak(); - noecho(); - scrollok(stdscr, TRUE); - idlok(stdscr, TRUE); - keypad(stdscr, TRUE); -} - -#ifdef SIGUSR1 -static RETSIGTYPE -announce_sig(int sig) -{ - (void) fprintf(stderr, "Handled signal %d\r\n", sig); -} -#endif - -#if HAVE_RIPOFFLINE -static int -rip_footer(WINDOW *win, int cols) -{ - wbkgd(win, A_REVERSE); - werase(win); - wmove(win, 0, 0); - wprintw(win, "footer: window %p, %d columns", (void *) win, cols); - wnoutrefresh(win); - return OK; -} - -static int -rip_header(WINDOW *win, int cols) -{ - wbkgd(win, A_REVERSE); - werase(win); - wmove(win, 0, 0); - wprintw(win, "header: window %p, %d columns", (void *) win, cols); - wnoutrefresh(win); - return OK; -} -#endif /* HAVE_RIPOFFLINE */ - -static void -main_menu(bool top) -{ - char command; - - do { - (void) puts("This is the ncurses main menu"); - (void) puts("a = keyboard and mouse input test"); -#if USE_WIDEC_SUPPORT - (void) puts("A = wide-character keyboard and mouse input test"); -#endif - (void) puts("b = character attribute test"); -#if USE_WIDEC_SUPPORT - (void) puts("B = wide-character attribute test"); -#endif - (void) puts("c = color test pattern"); -#if USE_WIDEC_SUPPORT - (void) puts("C = color test pattern using wide-character calls"); -#endif - if (top) - (void) puts("d = edit RGB color values"); -#if USE_SOFTKEYS - (void) puts("e = exercise soft keys"); -#if USE_WIDEC_SUPPORT - (void) puts("E = exercise soft keys using wide-characters"); -#endif -#endif - (void) puts("f = display ACS characters"); -#if USE_WIDEC_SUPPORT - (void) puts("F = display Wide-ACS characters"); -#endif - (void) puts("g = display windows and scrolling"); - (void) puts("i = test of flushinp()"); - (void) puts("k = display character attributes"); -#if USE_LIBMENU - (void) puts("m = menu code test"); -#endif -#if USE_LIBPANEL - (void) puts("o = exercise panels library"); -#if USE_WIDEC_SUPPORT - (void) puts("O = exercise panels with wide-characters"); -#endif -#endif - (void) puts("p = exercise pad features"); - (void) puts("q = quit"); -#if USE_LIBFORM - (void) puts("r = exercise forms code"); -#endif - (void) puts("s = overlapping-refresh test"); -#if USE_LIBMENU && defined(TRACE) - (void) puts("t = set trace level"); -#endif - (void) puts("? = repeat this command summary"); - - (void) fputs("> ", stdout); - (void) fflush(stdout); /* necessary under SVr4 curses */ - - /* - * This used to be an 'fgets()' call (until 1996/10). However with - * some runtime libraries, mixing stream I/O and 'read()' causes the - * input stream to be flushed when switching between the two. - */ - command = 0; - for (;;) { - char ch = '\0'; - if (read(fileno(stdin), &ch, 1) <= 0) { - if (command == 0) - command = 'q'; - break; - } else if (command == 0 && !isspace(UChar(ch))) { - command = ch; - } else if (ch == '\n' || ch == '\r') { - if ((command == 'd') && !top) { - (void) fputs("Do not nest test-d\n", stdout); - command = 0; - } - if (command != 0) - break; - (void) fputs("> ", stdout); - (void) fflush(stdout); - } - } - - if (do_single_test(command)) { - /* - * This may be overkill; it's intended to reset everything back - * to the initial terminal modes so that tests don't get in - * each other's way. - */ - flushinp(); - set_terminal_modes(); - reset_prog_mode(); - clear(); - refresh(); - endwin(); - if (command == '?') { - (void) puts("This is the ncurses capability tester."); - (void) - puts("You may select a test from the main menu by typing the"); - (void) - puts("key letter of the choice (the letter to left of the =)"); - (void) - puts("at the > prompt. Type `q' to exit."); - } - continue; - } - } while - (command != 'q'); -} - -/*+------------------------------------------------------------------------- - main(argc,argv) ---------------------------------------------------------------------------*/ - -#define okCOLOR(n) ((n) >= 0 && (n) < max_colors) -#define okRGB(n) ((n) >= 0 && (n) <= 1000) - -int -main(int argc, char *argv[]) -{ - int c; - int my_e_param = 1; -#ifdef NCURSES_VERSION - int default_fg = COLOR_WHITE; - int default_bg = COLOR_BLACK; - bool assumed_colors = FALSE; - bool default_colors = FALSE; -#endif - char *palette_file = 0; - bool monochrome = FALSE; - - setlocale(LC_ALL, ""); - - while ((c = getopt(argc, argv, "a:de:fhmp:s:t:")) != -1) { - switch (c) { -#ifdef NCURSES_VERSION - case 'a': - assumed_colors = TRUE; - sscanf(optarg, "%d,%d", &default_fg, &default_bg); - break; - case 'd': - default_colors = TRUE; - break; -#endif - case 'e': - my_e_param = atoi(optarg); -#ifdef NCURSES_VERSION - if (my_e_param > 3) /* allow extended layouts */ - usage(); -#else - if (my_e_param > 1) - usage(); -#endif - break; -#if HAVE_RIPOFFLINE - case 'f': - ripoffline(-1, rip_footer); - break; - case 'h': - ripoffline(1, rip_header); - break; -#endif /* HAVE_RIPOFFLINE */ - case 'm': - monochrome = TRUE; - break; - case 'p': - palette_file = optarg; - break; -#if USE_LIBPANEL - case 's': - nap_msec = (int) atol(optarg); - break; -#endif -#ifdef TRACE - case 't': - save_trace = (unsigned) strtol(optarg, 0, 0); - break; -#endif - default: - usage(); - } - } - - /* - * If there's no menus (unlikely for ncurses!), then we'll have to set - * tracing on initially, just in case the user wants to test something that - * doesn't involve wGetchar. - */ -#ifdef TRACE - /* enable debugging */ -#if !USE_LIBMENU - trace(save_trace); -#else - if (!isatty(fileno(stdin))) - trace(save_trace); -#endif /* USE_LIBMENU */ -#endif /* TRACE */ - -#if USE_SOFTKEYS - /* tell it we're going to play with soft keys */ - slk_init(my_e_param); -#endif - -#ifdef SIGUSR1 - /* set up null signal catcher so we can see what interrupts to getch do */ - signal(SIGUSR1, announce_sig); -#endif - - /* we must initialize the curses data structure only once */ - initscr(); - bkgdset(BLANK); - - /* tests, in general, will want these modes */ - use_colors = monochrome ? FALSE : has_colors(); - - if (use_colors) { - start_color(); -#ifdef NCURSES_VERSION_PATCH - max_colors = COLORS; /* was > 16 ? 16 : COLORS */ -#if HAVE_USE_DEFAULT_COLORS - if (default_colors) { - use_default_colors(); - min_colors = -1; - } -#if NCURSES_VERSION_PATCH >= 20000708 - if (assumed_colors) - assume_default_colors(default_fg, default_bg); -#endif -#endif -#else /* normal SVr4 curses */ - max_colors = COLORS; /* was > 8 ? 8 : COLORS */ -#endif - max_pairs = COLOR_PAIRS; /* was > 256 ? 256 : COLOR_PAIRS */ - - if (can_change_color()) { - short cp; - all_colors = typeMalloc(RGB_DATA, (unsigned) max_colors); - for (cp = 0; cp < max_colors; ++cp) { - color_content(cp, - &all_colors[cp].red, - &all_colors[cp].green, - &all_colors[cp].blue); - } - if (palette_file != 0) { - FILE *fp = fopen(palette_file, "r"); - if (fp != 0) { - char buffer[BUFSIZ]; - int red, green, blue; - int scale = 1000; - while (fgets(buffer, sizeof(buffer), fp) != 0) { - if (sscanf(buffer, "scale:%d", &c) == 1) { - scale = c; - } else if (sscanf(buffer, "%d:%d %d %d", - &c, - &red, - &green, - &blue) == 4 - && okCOLOR(c) - && okRGB(red) - && okRGB(green) - && okRGB(blue)) { - all_colors[c].red = (short) ((red * 1000) / scale); - all_colors[c].green = (short) ((green * 1000) / scale); - all_colors[c].blue = (short) ((blue * 1000) / scale); - } - } - fclose(fp); - } - } - } - } - set_terminal_modes(); - def_prog_mode(); - - /* - * Return to terminal mode, so we're guaranteed of being able to - * select terminal commands even if the capabilities are wrong. - */ - endwin(); - -#if HAVE_CURSES_VERSION - (void) printf("Welcome to %s. Press ? for help.\n", curses_version()); -#elif defined(NCURSES_VERSION_MAJOR) && defined(NCURSES_VERSION_MINOR) && defined(NCURSES_VERSION_PATCH) - (void) printf("Welcome to ncurses %d.%d.%d. Press ? for help.\n", - NCURSES_VERSION_MAJOR, - NCURSES_VERSION_MINOR, - NCURSES_VERSION_PATCH); -#else - (void) puts("Welcome to ncurses. Press ? for help."); -#endif - - main_menu(TRUE); - - ExitProgram(EXIT_SUCCESS); -} - -/* ncurses.c ends here */ diff --git a/deps/ncurses-5.9/test/newdemo b/deps/ncurses-5.9/test/newdemo deleted file mode 100755 index 2cfa286..0000000 Binary files a/deps/ncurses-5.9/test/newdemo and /dev/null differ diff --git a/deps/ncurses-5.9/test/package/debian/compat b/deps/ncurses-5.9/test/package/debian/compat deleted file mode 100644 index 7ed6ff8..0000000 --- a/deps/ncurses-5.9/test/package/debian/compat +++ /dev/null @@ -1 +0,0 @@ -5 diff --git a/deps/ncurses-5.9/test/package/debian/control b/deps/ncurses-5.9/test/package/debian/control deleted file mode 100644 index 520ad42..0000000 --- a/deps/ncurses-5.9/test/package/debian/control +++ /dev/null @@ -1,16 +0,0 @@ -Source: ncurses-examples -Maintainer: Thomas E. Dickey -Section: misc -Priority: optional -Standards-Version: 3.8.4 -Build-Depends: debhelper (>= 5) -Homepage: http://invisible-island.net/ncurses/ncurses-examples.html - -Package: ncurses-examples -Architecture: any -Depends: ${shlibs:Depends}, ${misc:Depends} -Description: ncurses-examples - example/test programs from ncurses - These are the example/test programs from the ncurses distribution. - . - This package installs in "bin/ncurses-examples" to avoid conflict with other - packages. diff --git a/deps/ncurses-5.9/test/package/debian/copyright b/deps/ncurses-5.9/test/package/debian/copyright deleted file mode 100644 index e681a6b..0000000 --- a/deps/ncurses-5.9/test/package/debian/copyright +++ /dev/null @@ -1,69 +0,0 @@ -Upstream source http://invisible-island.net/ncurses/ncurses-examples.html - -Current ncurses maintainer: Thomas Dickey - -------------------------------------------------------------------------------- - Copyright (c) 1998-2010,2011 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. -------------------------------------------------------------------------------- - -Files: install-sh -Copyright: 1994 X Consortium -Licence: other-BSD - 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, 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 - 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. - - FSF changes to this file are in the public domain. - - Calling this script install-sh is preferred over install.sh, to prevent - `make' implicit rules from creating a file called install from it - when there is no Makefile. - - This script is compatible with the BSD install script, but was written - from scratch. It can only install one file at a time, a restriction - shared with many OS's install programs. - -On Debian systems, the complete text of the GNU General -Public License can be found in '/usr/share/common-licenses/GPL-2' diff --git a/deps/ncurses-5.9/test/package/debian/rules b/deps/ncurses-5.9/test/package/debian/rules deleted file mode 100755 index 4d4146b..0000000 --- a/deps/ncurses-5.9/test/package/debian/rules +++ /dev/null @@ -1,90 +0,0 @@ -#!/usr/bin/make -f -# MAde with the aid of dh_make, by Craig Small -# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. -# Some lines taken from debmake, by Cristoph Lameter. - -# Uncomment this to turn on verbose mode. -#export DH_VERBOSE=1 - -# These are used for cross-compiling and for saving the configure script -# from having to guess our platform (since we know it already) -DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) -DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) - -CFLAGS = - -ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) - CFLAGS += -O0 -else - CFLAGS += -O2 -endif -ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) - INSTALL_PROGRAM += -s -endif - - -configure: configure-stamp -configure-stamp: - dh_testdir - - CFLAGS="$(CFLAGS)" ./configure \ - --host=$(DEB_HOST_GNU_TYPE) \ - --build=$(DEB_BUILD_GNU_TYPE) \ - --bindir=\$${prefix}/bin/ncurses-examples \ - --prefix=/usr \ - --with-ncursesw \ - --disable-rpath-hack - - touch configure-stamp - -build: build-stamp -build-stamp: configure-stamp - dh_testdir - - $(MAKE) - - touch build-stamp - -clean: - dh_testdir - dh_testroot - - [ ! -f makefile ] || $(MAKE) distclean - - rm -f configure-stamp build-stamp install-stamp - - dh_clean - -install: install-stamp -install-stamp: build-stamp - dh_testdir - dh_testroot - dh_clean -k - dh_installdirs - - $(MAKE) install DESTDIR=$(CURDIR)/debian/ncurses-examples - - touch install-stamp - -# Build architecture-independent files here. -binary-indep: build install -# No binary-indep target. - -# Build architecture-dependent files here. -binary-arch: build install - dh_testdir - dh_testroot - dh_installdocs - dh_installexamples - dh_installchangelogs NEWS - dh_strip - dh_compress - dh_fixperms - dh_installdeb - dh_shlibdeps - dh_gencontrol - dh_md5sums - dh_builddeb - -binary: binary-indep binary-arch -.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/deps/ncurses-5.9/test/package/debian/watch b/deps/ncurses-5.9/test/package/debian/watch deleted file mode 100644 index 1d08098..0000000 --- a/deps/ncurses-5.9/test/package/debian/watch +++ /dev/null @@ -1,4 +0,0 @@ -version=3 - -opts=passive ftp://invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \ - debian uupdate diff --git a/deps/ncurses-5.9/test/package/ncurses-examples.spec b/deps/ncurses-5.9/test/package/ncurses-examples.spec deleted file mode 100644 index ad79e5a..0000000 --- a/deps/ncurses-5.9/test/package/ncurses-examples.spec +++ /dev/null @@ -1,55 +0,0 @@ -Summary: ncurses-examples - example/test programs from ncurses -%define AppProgram ncurses-examples -%define AppVersion MAJOR.MINOR -%define AppRelease YYYYMMDD -# $Id: ncurses-examples.spec,v 1.2 2011/03/25 17:46:44 tom Exp $ -Name: %{AppProgram} -Version: %{AppVersion} -Release: %{AppRelease} -License: MIT -Group: Applications/Development -URL: ftp://invisible-island.net/%{AppProgram} -Source0: %{AppProgram}-%{AppRelease}.tgz -Packager: Thomas Dickey - -%description -These are the example/test programs from the ncurses MAJOR.MINOR distribution, -for patch-date YYYYMMDD. - -This package installs in "bin/ncurses-examples" to avoid conflict with other -packages. -%prep - -%setup -q -n %{AppProgram}-%{AppRelease} - -%build - -INSTALL_PROGRAM='${INSTALL}' \ - ./configure \ - --target %{_target_platform} \ - --prefix=%{_prefix} \ - --bindir=%{_bindir}/%{AppProgram} \ - --with-ncursesw \ - --disable-rpath-hack - -make - -%install -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT - -make install DESTDIR=$RPM_BUILD_ROOT - -strip $RPM_BUILD_ROOT%{_bindir}/%{AppProgram}/* - -%clean -[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT - -%files -%defattr(-,root,root) -%{_bindir}/%{AppProgram}/* - -%changelog -# each patch should add its ChangeLog entries here - -* Fri Mar 25 2010 Thomas Dickey -- initial version diff --git a/deps/ncurses-5.9/test/programs b/deps/ncurses-5.9/test/programs deleted file mode 100644 index bfcc134..0000000 --- a/deps/ncurses-5.9/test/programs +++ /dev/null @@ -1,93 +0,0 @@ -# $Id: programs,v 1.19 2009/09/12 19:44:01 tom Exp $ -############################################################################## -# Copyright (c) 2006-2008,2009 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: Thomas E. Dickey -# -# programs used for ncurses tests -background $(LDFLAGS_CURSES) $(LOCAL_LIBS) background -blue $(LDFLAGS_CURSES) $(LOCAL_LIBS) blue -bs $(LDFLAGS_CURSES) $(LOCAL_LIBS) bs -cardfile $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) cardfile -chgat $(LDFLAGS_CURSES) $(LOCAL_LIBS) chgat -clip_printw $(LDFLAGS_CURSES) $(LOCAL_LIBS) clip_printw -color_set $(LDFLAGS_CURSES) $(LOCAL_LIBS) color_set -demo_altkeys $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_altkeys -demo_defkey $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_defkey -demo_forms $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_forms edit_field -demo_keyok $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_keyok -demo_menus $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_menus -demo_panels $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_panels -demo_termcap $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_termcap -demo_terminfo $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_terminfo -ditto $(LDFLAGS_THREADS) $(LOCAL_LIBS) ditto -dots $(LDFLAGS_TINFO) $(LOCAL_LIBS) dots -dots_mvcur $(LDFLAGS_CURSES) $(LOCAL_LIBS) dots_mvcur -echochar $(LDFLAGS_CURSES) $(LOCAL_LIBS) echochar -filter $(LDFLAGS_CURSES) $(LOCAL_LIBS) filter -firework $(LDFLAGS_CURSES) $(LOCAL_LIBS) firework -firstlast $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) firstlast -foldkeys $(LDFLAGS_CURSES) $(LOCAL_LIBS) foldkeys -gdc $(LDFLAGS_CURSES) $(LOCAL_LIBS) gdc -hanoi $(LDFLAGS_CURSES) $(LOCAL_LIBS) hanoi -hashtest $(LDFLAGS_CURSES) $(LOCAL_LIBS) hashtest -inch_wide $(LDFLAGS_CURSES) $(LOCAL_LIBS) inch_wide -inchs $(LDFLAGS_CURSES) $(LOCAL_LIBS) inchs -ins_wide $(LDFLAGS_CURSES) $(LOCAL_LIBS) ins_wide -insdelln $(LDFLAGS_CURSES) $(LOCAL_LIBS) insdelln -inserts $(LDFLAGS_CURSES) $(LOCAL_LIBS) inserts -key_names $(LDFLAGS_CURSES) $(LOCAL_LIBS) key_names -keynames $(LDFLAGS_CURSES) $(LOCAL_LIBS) keynames -knight $(LDFLAGS_CURSES) $(LOCAL_LIBS) knight -lrtest $(LDFLAGS_CURSES) $(LOCAL_LIBS) lrtest -movewindow $(LDFLAGS_CURSES) $(LOCAL_LIBS) movewindow -ncurses $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) ncurses -newdemo $(LDFLAGS_CURSES) $(LOCAL_LIBS) newdemo -railroad $(LDFLAGS_TINFO) $(LOCAL_LIBS) railroad -rain $(LDFLAGS_THREADS) $(LOCAL_LIBS) rain -redraw $(LDFLAGS_CURSES) $(LOCAL_LIBS) redraw -savescreen $(LDFLAGS_CURSES) $(LOCAL_LIBS) savescreen -tclock $(LDFLAGS_CURSES) $(LOCAL_LIBS) tclock -test_add_wchstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_add_wchstr -test_addchstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addchstr -test_addstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addstr -test_addwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addwstr -test_arrays $(LDFLAGS_TINFO) $(LOCAL_LIBS) test_arrays -test_get_wstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_get_wstr -test_getstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_getstr -test_instr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_instr -test_inwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_inwstr -test_opaque $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_opaque -testaddch $(LDFLAGS_CURSES) $(LOCAL_LIBS) testaddch -testcurs $(LDFLAGS_CURSES) $(LOCAL_LIBS) testcurs -testscanw $(LDFLAGS_CURSES) $(LOCAL_LIBS) testscanw -view $(LDFLAGS_CURSES) $(LOCAL_LIBS) view -worm $(LDFLAGS_THREADS) $(LOCAL_LIBS) worm -xmas $(LDFLAGS_CURSES) $(LOCAL_LIBS) xmas - -# vile:makemode diff --git a/deps/ncurses-5.9/test/railroad b/deps/ncurses-5.9/test/railroad deleted file mode 100755 index a0c9bec..0000000 Binary files a/deps/ncurses-5.9/test/railroad and /dev/null differ diff --git a/deps/ncurses-5.9/test/rain b/deps/ncurses-5.9/test/rain deleted file mode 100755 index 34499c8..0000000 Binary files a/deps/ncurses-5.9/test/rain and /dev/null differ diff --git a/deps/ncurses-5.9/test/redraw b/deps/ncurses-5.9/test/redraw deleted file mode 100755 index efdd648..0000000 Binary files a/deps/ncurses-5.9/test/redraw and /dev/null differ diff --git a/deps/ncurses-5.9/test/redraw.c b/deps/ncurses-5.9/test/redraw.c deleted file mode 100644 index f62c098..0000000 --- a/deps/ncurses-5.9/test/redraw.c +++ /dev/null @@ -1,171 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2006-2007,2010 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. * - ****************************************************************************/ -/* - * $Id: redraw.c,v 1.5 2010/05/01 22:04:08 tom Exp $ - * - * Demonstrate the redrawwin() and wredrawln() functions. - * Thomas Dickey - 2006/11/4 - */ - -#include - -static void -trash(int beg_x, int max_x, int cur_x) -{ - int x; - - for (x = cur_x; x > beg_x; --x) { - putchar('\b'); - } - for (x = beg_x; x < max_x; ++x) { - if (x < cur_x) - putchar('<'); - else if (x == cur_x) - putchar('='); - else if (x > cur_x) - putchar('>'); - } - for (x = max_x; x > cur_x; --x) { - putchar('\b'); - } -} - -static void -test_redraw(WINDOW *win) -{ - WINDOW *win1; - WINDOW *win2; - bool done = FALSE; - int ch, y, x; - int max_y, max_x; - int beg_y, beg_x; - - assert(win != 0); - - scrollok(win, TRUE); - keypad(win, TRUE); - getmaxyx(win, max_y, max_x); - getbegyx(win, beg_y, beg_x); - while (!done) { - ch = wgetch(win); - getyx(win, y, x); - switch (ch) { - case 'q': - /* FALLTHRU */ - case ESCAPE: - done = TRUE; - break; - case 'w': - win1 = newwin(max_y, max_x, - beg_y, beg_x); - win2 = newwin(max_y - 2, max_x - 2, - beg_y + 1, beg_x + 1); - box(win1, 0, 0); - wrefresh(win1); - - test_redraw(win2); - - delwin(win2); - delwin(win1); - - touchwin(win); - break; - - case '!': - /* - * redrawwin() and wredrawln() do not take into account the - * possibility that the cursor may have moved. That makes them - * cumbersome for using with a shell command. So we simply - * trash the current line of the window using backspace/overwrite. - */ - trash(beg_x, max_x, x + beg_x); - break; - -#ifdef NCURSES_VERSION - case '@': - /* - * For a shell command, we can work around the problem noted above - * using mvcur(). It is ifdef'd for NCURSES, since X/Open does - * not define the case where the old location is unknown. - */ - system("date"); - mvcur(-1, -1, y, x); - break; -#endif - - case CTRL('W'): - redrawwin(win); - break; - - case CTRL('L'): - wredrawln(win, y, 1); - break; - - case KEY_UP: - if (y > 0) - wmove(win, y - 1, x); - break; - - case KEY_DOWN: - if (y < max_y) - wmove(win, y + 1, x); - break; - - case KEY_LEFT: - if (x > 0) - wmove(win, y, x - 1); - break; - - case KEY_RIGHT: - if (x < max_x) - wmove(win, y, x + 1); - break; - - default: - if (ch > KEY_MIN) { - waddstr(win, keyname(ch)); - } else { - waddstr(win, unctrl(UChar(ch))); - } - break; - } - wnoutrefresh(win); - doupdate(); - } -} - -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - initscr(); - raw(); - noecho(); - test_redraw(stdscr); - endwin(); - ExitProgram(EXIT_SUCCESS); -} diff --git a/deps/ncurses-5.9/test/savescreen b/deps/ncurses-5.9/test/savescreen deleted file mode 100755 index 892e8b5..0000000 Binary files a/deps/ncurses-5.9/test/savescreen and /dev/null differ diff --git a/deps/ncurses-5.9/test/savescreen.c b/deps/ncurses-5.9/test/savescreen.c deleted file mode 100644 index 111882d..0000000 --- a/deps/ncurses-5.9/test/savescreen.c +++ /dev/null @@ -1,342 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2007-2010,2011 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. * - ****************************************************************************/ -/* - * $Id: savescreen.c,v 1.15 2011/01/15 18:15:11 tom Exp $ - * - * Demonstrate save/restore functions from the curses library. - * Thomas Dickey - 2007/7/14 - */ - -#include - -#if HAVE_SCR_DUMP - -#include -#include - -#if TIME_WITH_SYS_TIME -# include -# include -#else -# if HAVE_SYS_TIME_H -# include -# else -# include -# endif -#endif - -static bool use_init = FALSE; - -static int -fexists(const char *name) -{ - struct stat sb; - return (stat(name, &sb) == 0 && (sb.st_mode & S_IFMT) == S_IFREG); -} - -static void -setup_next(void) -{ - curs_set(1); - reset_shell_mode(); -} - -static void -cleanup(char *files[]) -{ - int n; - - for (n = 0; files[n] != 0; ++n) { - unlink(files[n]); - } -} - -static int -load_screen(char *filename) -{ - int result; - - if (use_init) { - if ((result = scr_init(filename)) != ERR) - result = scr_restore(filename); - } else { - result = scr_set(filename); - } - return result; -} - -/* - * scr_restore() or scr_set() operates on curscr. If we read a character using - * getch() that will refresh stdscr, wiping out the result. To avoid that, - * copy the data back from curscr to stdscr. - */ -static void -after_load(void) -{ - overwrite(curscr, stdscr); - doupdate(); -} - -static void -show_what(int which, int last) -{ - int y, x; - time_t now = time((time_t *) 0); - - getyx(stdscr, y, x); - - move(0, 0); - printw("Saved %d of %d - %s", which, last + 1, ctime(&now)); - - move(y, x); - - refresh(); -} - -static int -get_command(int which, int last) -{ - int ch; - - timeout(100); - - do { - show_what(which, last); - ch = getch(); - } while (ch == ERR); - - return ch; -} - -static void -usage(void) -{ - static const char *msg[] = - { - "Usage: savescreen [-r] files", - "", - "Options:", - " -i use scr_init/scr_restore rather than scr_set", - " -r replay the screen-dump files" - }; - unsigned n; - for (n = 0; n < SIZEOF(msg); ++n) { - fprintf(stderr, "%s\n", msg[n]); - } - ExitProgram(EXIT_FAILURE); -} - -int -main(int argc, char *argv[]) -{ - int ch; - int which = 0; - int last; - bool replaying = FALSE; - bool done = FALSE; - char **files; - - while ((ch = getopt(argc, argv, "ir")) != -1) { - switch (ch) { - case 'i': - use_init = TRUE; - break; - case 'r': - replaying = TRUE; - break; - default: - usage(); - break; - } - } - - files = argv + optind; - last = argc - optind - 1; - - if (replaying) { - while (last >= 0 && !fexists(files[last])) - --last; - } - - initscr(); - cbreak(); - noecho(); - keypad(stdscr, TRUE); - curs_set(0); - if (has_colors()) { - start_color(); - for (ch = 0; ch < COLOR_PAIRS; ++ch) { - short pair = (short) (ch % COLOR_PAIRS); - init_pair(pair, COLOR_WHITE, (short) (ch % COLORS)); - } - } - - if (replaying) { - - /* - * Use the last file as the initial/current screen. - */ - if (last < 0) { - endwin(); - printf("No screen-dumps given\n"); - ExitProgram(EXIT_FAILURE); - } - - which = last; - if (load_screen(files[which]) == ERR) { - endwin(); - printf("Cannot load screen-dump %s\n", files[which]); - ExitProgram(EXIT_FAILURE); - } - after_load(); - - while (!done && (ch = getch()) != ERR) { - switch (ch) { - case 'n': - /* - * If we got a "next" here, skip to the final screen before - * moving to the next process. - */ - setup_next(); - which = last; - done = TRUE; - break; - case 'q': - endwin(); - cleanup(files); - done = TRUE; - break; - case KEY_BACKSPACE: - case '\b': - if (--which < 0) - which = last; - break; - case ' ': - if (++which > last) - which = 0; - break; - default: - beep(); - continue; - } - - if (ch == 'q') { - ; - } else if (scr_restore(files[which]) == ERR) { - endwin(); - printf("Cannot load screen-dump %s\n", files[which]); - cleanup(files); - ExitProgram(EXIT_FAILURE); - } else { - wrefresh(curscr); - } - } - } else { - int y; - int x; - - move(2, 0); - printw("Use h,j,k,l or arrows to move around the screen\n"); - printw("Press 'q' to quit, ' ' to dump a screen\n"); - printw("When the last screen has been dumped, press 'n' to run the\n"); - printw("screen-loader. That allows only 'q', backspace and ' ' for\n"); - printw("stepping through the dumped/restored screens.\n"); - getyx(stdscr, y, x); - - while (!done) { - switch (get_command(which, last)) { - case 'n': - setup_next(); - done = TRUE; - break; - case 'q': - endwin(); - cleanup(files); - done = TRUE; - break; - case ' ': - if (files[which] != 0) { - show_what(which + 1, last); - if (scr_dump(files[which]) == ERR) { - endwin(); - printf("Cannot write screen-dump %s\n", files[which]); - cleanup(files); - done = TRUE; - break; - } - ++which; - if (has_colors()) { - short pair = (short) (which % COLOR_PAIRS); - bkgd((chtype) COLOR_PAIR(pair)); - } - } else { - beep(); - } - break; - case KEY_LEFT: - case 'h': - if (--x < 0) - x = COLS - 1; - break; - case KEY_DOWN: - case 'j': - if (++y >= LINES) - y = 1; - break; - case KEY_UP: - case 'k': - if (--y < 1) - y = LINES - 1; - break; - case KEY_RIGHT: - case 'l': - if (++x >= COLS) - x = 0; - break; - } - if (!done) { - time_t now = time((time_t *) 0); - - move(0, 0); - addstr(ctime(&now)); - move(y, x); - addch('#' | A_REVERSE); - move(y, x); - } - } - } - ExitProgram(EXIT_SUCCESS); -} -#else -int -main(int argc, char *argv[]) -{ - printf("This program requires the screen-dump functions\n"); - ExitProgram(EXIT_FAILURE); -} -#endif diff --git a/deps/ncurses-5.9/test/tclock b/deps/ncurses-5.9/test/tclock deleted file mode 100755 index 3c9249e..0000000 Binary files a/deps/ncurses-5.9/test/tclock and /dev/null differ diff --git a/deps/ncurses-5.9/test/test.priv.h b/deps/ncurses-5.9/test/test.priv.h deleted file mode 100644 index 51d52a8..0000000 --- a/deps/ncurses-5.9/test/test.priv.h +++ /dev/null @@ -1,771 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2010,2011 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: Thomas E. Dickey 1996-on * - ****************************************************************************/ -/* $Id: test.priv.h,v 1.103 2011/03/22 09:15:45 tom Exp $ */ - -#ifndef __TEST_PRIV_H -#define __TEST_PRIV_H 1 - -#include - -/* - * Fix ifdef's that look for the form/menu/panel libraries, if we are building - * with wide-character ncurses. - */ -#ifdef HAVE_LIBFORMW -#define HAVE_LIBFORMW 1 -#define HAVE_LIBFORM 1 -#endif - -#ifdef HAVE_LIBMENUW -#define HAVE_LIBMENUW 1 -#define HAVE_LIBMENU 1 -#endif - -#ifdef HAVE_LIBPANELW -#define HAVE_LIBPANELW 1 -#define HAVE_LIBPANEL 1 -#endif - -/* - * Fallback definitions to accommodate broken compilers. - */ -#ifndef HAVE_CURSES_VERSION -#define HAVE_CURSES_VERSION 0 -#endif - -#ifndef HAVE_CHGAT -#define HAVE_CHGAT 0 -#endif - -#ifndef HAVE_COLOR_SET -#define HAVE_COLOR_SET 0 -#endif - -#ifndef HAVE_FILTER -#define HAVE_FILTER 0 -#endif - -#ifndef HAVE_FORM_H -#define HAVE_FORM_H 0 -#endif - -#ifndef HAVE_GETBEGX -#define HAVE_GETBEGX 0 -#endif - -#ifndef HAVE_GETCURX -#define HAVE_GETCURX 0 -#endif - -#ifndef HAVE_GETMAXX -#define HAVE_GETMAXX 0 -#endif - -#ifndef HAVE_GETOPT_H -#define HAVE_GETOPT_H 0 -#endif - -#ifndef HAVE_GETPARX -#define HAVE_GETPARX 0 -#endif - -#ifndef HAVE_GETWIN -#define HAVE_GETWIN 0 -#endif - -#ifndef HAVE_LIBFORM -#define HAVE_LIBFORM 0 -#endif - -#ifndef HAVE_LIBMENU -#define HAVE_LIBMENU 0 -#endif - -#ifndef HAVE_LIBPANEL -#define HAVE_LIBPANEL 0 -#endif - -#ifndef HAVE_LOCALE_H -#define HAVE_LOCALE_H 0 -#endif - -#ifndef HAVE_MATH_H -#define HAVE_MATH_H 0 -#endif - -#ifndef HAVE_MENU_H -#define HAVE_MENU_H 0 -#endif - -#ifndef HAVE_MVVLINE -#define HAVE_MVVLINE 0 -#endif - -#ifndef HAVE_MVWVLINE -#define HAVE_MVWVLINE 0 -#endif - -#ifndef HAVE_NAPMS -#define HAVE_NAPMS 1 -#endif - -#ifndef HAVE_NC_ALLOC_H -#define HAVE_NC_ALLOC_H 0 -#endif - -#ifndef HAVE_PANEL_H -#define HAVE_PANEL_H 0 -#endif - -#ifndef HAVE_PUTWIN -#define HAVE_PUTWIN 0 -#endif - -#ifndef HAVE_RESIZE_TERM -#define HAVE_RESIZE_TERM 0 -#endif - -#ifndef HAVE_RIPOFFLINE -#define HAVE_RIPOFFLINE 0 -#endif - -#ifndef HAVE_SETUPTERM -#define HAVE_SETUPTERM 0 -#endif - -#ifndef HAVE_SLK_COLOR -#define HAVE_SLK_COLOR 0 -#endif - -#ifndef HAVE_SLK_INIT -#define HAVE_SLK_INIT 0 -#endif - -#ifndef HAVE_TERMATTRS -#define HAVE_TERMATTRS 0 -#endif - -#ifndef HAVE_TERMNAME -#define HAVE_TERMNAME 0 -#endif - -#ifndef HAVE_TGETENT -#define HAVE_TGETENT 0 -#endif - -#ifndef HAVE_TIGETNUM -#define HAVE_TIGETNUM 0 -#endif - -#ifndef HAVE_TIGETSTR -#define HAVE_TIGETSTR 0 -#endif - -#ifndef HAVE_TYPEAHEAD -#define HAVE_TYPEAHEAD 0 -#endif - -#ifndef HAVE_WINSSTR -#define HAVE_WINSSTR 0 -#endif - -#ifndef HAVE_USE_DEFAULT_COLORS -#define HAVE_USE_DEFAULT_COLORS 0 -#endif - -#ifndef HAVE_WRESIZE -#define HAVE_WRESIZE 0 -#endif - -#ifndef NCURSES_EXT_FUNCS -#define NCURSES_EXT_FUNCS 0 -#endif - -#ifndef NEED_PTEM_H -#define NEED_PTEM_H 0 -#endif - -#ifndef NEED_WCHAR_H -#define NEED_WCHAR_H 0 -#endif - -#ifndef NO_LEAKS -#define NO_LEAKS 0 -#endif - -#include -#include -#include -#include -#include - -#if HAVE_UNISTD_H -#include -#endif - -#include /* include before curses.h to work around glibc bug */ - -#if NEED_WCHAR_H -#include -#ifdef HAVE_LIBUTF8_H -#include -#endif -#endif - -#if defined(HAVE_XCURSES) -#include -#elif defined(HAVE_NCURSESW_NCURSES_H) -#include -#elif defined(HAVE_NCURSES_NCURSES_H) -#include -#else -#include -#endif - -#if defined(HAVE_XCURSES) || defined(PDCURSES) -/* no other headers */ -#undef HAVE_SETUPTERM /* nonfunctional */ -#define HAVE_SETUPTERM 0 -#undef HAVE_TGETENT /* nonfunctional */ -#define HAVE_TGETENT 0 -#undef HAVE_TIGETSTR /* nonfunctional */ -#define HAVE_TIGETSTR 0 -#elif defined(HAVE_NCURSESW_TERM_H) -#include -#elif defined(HAVE_NCURSES_TERM_H) -#include -#elif defined(HAVE_TERM_H) -#include -#endif - -/* - * Not all curses.h implementations include unctrl.h, - * Solaris 10 xpg4 for example. - */ -#if defined(NCURSES_VERSION) || defined(_XOPEN_CURSES) -#if defined(HAVE_NCURSESW_NCURSES_H) -#include -#elif defined(HAVE_NCURSES_NCURSES_H) -#include -#else -#include -#endif -#endif - -#if HAVE_GETOPT_H -#include -#else -/* 'getopt()' may be prototyped in , but declaring its variables - * doesn't hurt. - */ -extern char *optarg; -extern int optind; -#endif /* HAVE_GETOPT_H */ - -#if HAVE_LOCALE_H -#include -#else -#define setlocale(name,string) /* nothing */ -#endif - -#include -#include - -#ifndef GCC_NORETURN -#define GCC_NORETURN /* nothing */ -#endif -#ifndef GCC_PRINTFLIKE -#define GCC_PRINTFLIKE(a,b) /* nothing */ -#endif -#ifndef GCC_UNUSED -#define GCC_UNUSED /* nothing */ -#endif - -#ifndef HAVE_GETNSTR -#define getnstr(s,n) getstr(s) -#endif - -#ifndef USE_SOFTKEYS -#if HAVE_SLK_INIT -#define USE_SOFTKEYS 1 -#else -#define USE_SOFTKEYS 0 -#endif -#endif - -#if !USE_SOFTKEYS -#define slk_init() /* nothing */ -#define slk_restore() /* nothing */ -#define slk_clear() /* nothing */ -#endif - -#ifndef HAVE_WSYNCDOWN -#define wsyncdown(win) /* nothing */ -#endif - -#ifndef USE_WIDEC_SUPPORT -#if (defined(_XOPEN_SOURCE_EXTENDED) || defined(_XPG5)) && defined(WACS_ULCORNER) -#define USE_WIDEC_SUPPORT 1 -#else -#define USE_WIDEC_SUPPORT 0 -#endif -#endif - -#if HAVE_PANEL_H && HAVE_LIBPANEL -#define USE_LIBPANEL 1 -#else -#define USE_LIBPANEL 0 -#endif - -#if HAVE_MENU_H && HAVE_LIBMENU -#define USE_LIBMENU 1 -#else -#define USE_LIBMENU 0 -#endif - -#if HAVE_FORM_H && HAVE_LIBFORM -#define USE_LIBFORM 1 -#else -#define USE_LIBFORM 0 -#endif - -/* workaround, to build against NetBSD's variant of the form library */ -#ifdef HAVE_NETBSD_FORM_H -#define form_getyx(form, y, x) y = current_field(form)->cursor_ypos, x = current_field(form)->cursor_xpos -#else -#define form_getyx(form, y, x) y = (form)->currow, x = (form)->curcol -#endif - -/* workaround, to build against NetBSD's variant of the form library */ -#ifdef HAVE_NETBSD_MENU_H -#define menu_itemwidth(menu) (menu)->max_item_width -#else -#define menu_itemwidth(menu) (menu)->itemlen -#endif - -#ifndef HAVE_TYPE_ATTR_T -#if !USE_WIDEC_SUPPORT && !defined(attr_t) -#define attr_t chtype -#endif -#endif - -#undef NCURSES_CH_T -#if !USE_WIDEC_SUPPORT -#define NCURSES_CH_T chtype -#else -#define NCURSES_CH_T cchar_t -#endif - -#ifndef NCURSES_OPAQUE -#define NCURSES_OPAQUE 0 -#endif - -#ifndef CCHARW_MAX -#define CCHARW_MAX 5 -#endif - -#if defined(NCURSES_VERSION) && defined(CURSES_WACS_ARRAY) && !defined(CURSES_WACS_SYMBOLS) -#define CURSES_WACS_SYMBOLS -#endif - -#if defined(CURSES_WACS_ARRAY) && !defined(CURSES_WACS_SYMBOLS) -/* NetBSD 5.1 defines these incorrectly */ -#undef WACS_RARROW -#undef WACS_LARROW -#undef WACS_UARROW -#undef WACS_DARROW -#undef WACS_BLOCK -#undef WACS_DIAMOND -#undef WACS_CKBOARD -#undef WACS_DEGREE -#undef WACS_PLMINUS -#undef WACS_BOARD -#undef WACS_LANTERN -#undef WACS_LRCORNER -#undef WACS_URCORNER -#undef WACS_ULCORNER -#undef WACS_LLCORNER -#undef WACS_PLUS -#undef WACS_HLINE -#undef WACS_S1 -#undef WACS_S9 -#undef WACS_LTEE -#undef WACS_RTEE -#undef WACS_BTEE -#undef WACS_TTEE -#undef WACS_VLINE -#undef WACS_BULLET -#undef WACS_S3 -#undef WACS_S7 -#undef WACS_LEQUAL -#undef WACS_GEQUAL -#undef WACS_PI -#undef WACS_NEQUAL -#undef WACS_STERLING - -#define WACS_RARROW &(CURSES_WACS_ARRAY['+']) -#define WACS_LARROW &(CURSES_WACS_ARRAY[',']) -#define WACS_UARROW &(CURSES_WACS_ARRAY['-']) -#define WACS_DARROW &(CURSES_WACS_ARRAY['.']) -#define WACS_BLOCK &(CURSES_WACS_ARRAY['0']) -#define WACS_DIAMOND &(CURSES_WACS_ARRAY['`']) -#define WACS_CKBOARD &(CURSES_WACS_ARRAY['a']) -#define WACS_DEGREE &(CURSES_WACS_ARRAY['f']) -#define WACS_PLMINUS &(CURSES_WACS_ARRAY['g']) -#define WACS_BOARD &(CURSES_WACS_ARRAY['h']) -#define WACS_LANTERN &(CURSES_WACS_ARRAY['i']) -#define WACS_LRCORNER &(CURSES_WACS_ARRAY['j']) -#define WACS_URCORNER &(CURSES_WACS_ARRAY['k']) -#define WACS_ULCORNER &(CURSES_WACS_ARRAY['l']) -#define WACS_LLCORNER &(CURSES_WACS_ARRAY['m']) -#define WACS_PLUS &(CURSES_WACS_ARRAY['n']) -#define WACS_HLINE &(CURSES_WACS_ARRAY['q']) -#define WACS_S1 &(CURSES_WACS_ARRAY['o']) -#define WACS_S9 &(CURSES_WACS_ARRAY['s']) -#define WACS_LTEE &(CURSES_WACS_ARRAY['t']) -#define WACS_RTEE &(CURSES_WACS_ARRAY['u']) -#define WACS_BTEE &(CURSES_WACS_ARRAY['v']) -#define WACS_TTEE &(CURSES_WACS_ARRAY['w']) -#define WACS_VLINE &(CURSES_WACS_ARRAY['x']) -#define WACS_BULLET &(CURSES_WACS_ARRAY['~']) -#define WACS_S3 &(CURSES_WACS_ARRAY['p']) -#define WACS_S7 &(CURSES_WACS_ARRAY['r']) -#define WACS_LEQUAL &(CURSES_WACS_ARRAY['y']) -#define WACS_GEQUAL &(CURSES_WACS_ARRAY['z']) -#define WACS_PI &(CURSES_WACS_ARRAY['{']) -#define WACS_NEQUAL &(CURSES_WACS_ARRAY['|']) -#define WACS_STERLING &(CURSES_WACS_ARRAY['}']) -#endif - -#undef CTRL -#define CTRL(x) ((x) & 0x1f) - -#define QUIT CTRL('Q') -#define ESCAPE CTRL('[') - -#ifndef KEY_MIN -#define KEY_MIN 256 /* not defined in Solaris 8 */ -#endif - -#ifdef DECL_CURSES_DATA_BOOLNAMES -extern char *boolnames[], *boolcodes[], *boolfnames[]; -extern char *numnames[], *numcodes[], *numfnames[]; -extern char *strnames[], *strcodes[], *strfnames[]; -#endif - -#define colored_chtype(ch, attr, pair) \ - ((chtype) (ch) | (chtype) (attr) | (chtype) COLOR_PAIR(pair)) - -/* - * Workaround for HPUX - */ -#if defined(__hpux) && !defined(NCURSES_VERSION) -#define getbegx(w) __getbegx(w) -#define getbegy(w) __getbegy(w) -#define getcurx(w) __getcurx(w) -#define getcury(w) __getcury(w) -#define getmaxx(w) __getmaxx(w) -#define getmaxy(w) __getmaxy(w) -#define getparx(w) __getparx(w) -#define getpary(w) __getpary(w) -#endif - -/* - * Workaround in case getcchar() returns a positive value when the source - * string produces only a L'\0'. - */ -#define TEST_CCHAR(s, count, then_stmt, else_stmt) \ - if ((count = getcchar(s, NULL, NULL, NULL, NULL)) > 0) { \ - wchar_t test_wch[CCHARW_MAX + 2]; \ - attr_t test_attrs; \ - short test_pair; \ - \ - if (getcchar( s, test_wch, &test_attrs, &test_pair, NULL) == OK \ - && test_wch[0] != L'\0') { \ - then_stmt \ - } else { \ - else_stmt \ - } \ - } else { \ - else_stmt \ - } -/* - * These usually are implemented as macros, but may be functions. - */ -#if !defined(getcurx) && !HAVE_GETCURX -#define getcurx(win) ((win)?(win)->_curx:ERR) -#define getcury(win) ((win)?(win)->_cury:ERR) -#endif - -#if !defined(getbegx) && !HAVE_GETBEGX -#define getbegx(win) ((win)?(win)->_begx:ERR) -#define getbegy(win) ((win)?(win)->_begy:ERR) -#endif - -#if !defined(getmaxx) && !HAVE_GETMAXX -#define getmaxx(win) ((win)?((win)->_maxx + 1):ERR) -#define getmaxy(win) ((win)?((win)->_maxy + 1):ERR) -#endif - -/* - * Solaris 10 xpg4: -#define __m_getparx(w) ((w)->_parent == (WINDOW *) 0 ? -1 \ - : (w)->_begx - (w)->_parent->_begx) - */ -#if !defined(getparx) && !HAVE_GETPARX -#ifdef __m_getparx -#define getparx(win) __m_getparx(win) -#define getpary(win) __m_getpary(win) -#else -#define getparx(win) ((win)?((win)->_parx + 1):ERR) -#define getpary(win) ((win)?((win)->_pary + 1):ERR) -#endif -#endif - -#if !defined(mvwvline) && !HAVE_MVWVLINE -#define mvwvline(w,y,x,ch,n) (move(y,x) == ERR ? ERR : wvline(w,ch,n)) -#define mvwhline(w,y,x,ch,n) (move(y,x) == ERR ? ERR : whline(w,ch,n)) -#endif - -#if !defined(mvvline) && !HAVE_MVVLINE -#define mvvline(y,x,ch,n) (move(y,x) == ERR ? ERR : vline(ch,n)) -#define mvhline(y,x,ch,n) (move(y,x) == ERR ? ERR : hline(ch,n)) -#endif - -/* - * Try to accommodate curses implementations that have no terminfo support. - */ -#if HAVE_TIGETNUM -#define TIGETNUM(ti,tc) tigetnum(ti) -#else -#define TIGETNUM(ti,tc) tgetnum(tc) -#endif - -#if HAVE_TIGETSTR -#define TIGETSTR(ti,tc) tigetstr(ti) -#else -#define TIGETSTR(ti,tc) tgetstr(tc,&area_pointer) -#endif - -/* ncurses implements tparm() with varargs, X/Open with a fixed-parameter list - * (which is incompatible with legacy usage, doesn't solve any problems). - */ -#define tparm3(a,b,c) tparm(a,b,c,0,0,0,0,0,0,0) -#define tparm2(a,b) tparm(a,b,0,0,0,0,0,0,0,0) - -#define UChar(c) ((unsigned char)(c)) - -#define SIZEOF(table) (sizeof(table)/sizeof(table[0])) - -#if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H -#include -#if HAVE_NC_FREEALL && defined(USE_TINFO) -#undef ExitProgram -#define ExitProgram(code) _nc_free_tinfo(code) -#endif -#else -#define typeMalloc(type,n) (type *) malloc((n) * sizeof(type)) -#define typeCalloc(type,elts) (type *) calloc((elts), sizeof(type)) -#define typeRealloc(type,n,p) (type *) realloc(p, (n) * sizeof(type)) -#endif - -#ifndef ExitProgram -#define ExitProgram(code) exit(code) -#endif - -#ifndef EXIT_SUCCESS -#define EXIT_SUCCESS 0 -#endif -#ifndef EXIT_FAILURE -#define EXIT_FAILURE 1 -#endif - -#ifdef __MINGW32__ -#include -/* conflicts in test/firstlast.c */ -#undef large -#undef small - -#endif - -/* Use this to quiet gcc's -Wwrite-strings warnings, but accommodate SVr4 - * curses which doesn't have const parameters declared (so far) in the places - * that XSI shows. - */ -#ifndef NCURSES_CONST -#define NCURSES_CONST /* nothing */ -#endif - -/* out-of-band values for representing absent capabilities */ -#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */ -#define ABSENT_NUMERIC (-1) -#define ABSENT_STRING (char *)0 - -/* out-of-band values for representing cancels */ -#define CANCELLED_BOOLEAN ((signed char)-2) /* 254 */ -#define CANCELLED_NUMERIC (-2) -#define CANCELLED_STRING (char *)(-1) - -#define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */ -#define VALID_NUMERIC(s) ((s) >= 0) -#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING) - -#define VT_ACSC "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~" - -#define CATCHALL(handler) { \ - int nsig; \ - for (nsig = SIGHUP; nsig < SIGTERM; ++nsig) \ - if (nsig != SIGKILL) \ - signal(nsig, handler); \ - } - -/* - * Workaround for clean(er) compile with Solaris's legacy curses. - * The same would be needed for HPUX 10.20 - */ -#ifndef TPUTS_ARG -#if defined(sun) && !defined(_XOPEN_CURSES) && !defined(NCURSES_VERSION_PATCH) -#define TPUTS_ARG char -extern char *tgoto(char *, int, int); /* available, but not prototyped */ -#else -#define TPUTS_ARG int -#endif -#endif - -/* - * Workarounds for Solaris's X/Open curses - */ -#if defined(sun) && defined(_XOPEN_CURSES) && !defined(NCURSES_VERSION_PATCH) -#if !defined(KEY_MIN) && defined(__KEY_MIN) -#define KEY_MIN __KEY_MIN -#endif -#if !defined(KEY_MAX) && defined(__KEY_MIN) -#define KEY_MAX __KEY_MAX -#endif -#endif - -/* - * Workaround to build with Sun's default SVr4 curses. - */ -#ifdef NCURSES_VERSION -#ifndef HAVE_VW_PRINTW -#define HAVE_VW_PRINTW 1 -#endif -#endif - -/* - * ncurses provides arrays of capability names; X/Open discarded these SVr4 - * features. Some implementations continue to provide them (see the test - * configure script). - */ -#ifdef NCURSES_VERSION -#ifndef HAVE_CURSES_DATA_BOOLNAMES -#define HAVE_CURSES_DATA_BOOLNAMES 1 -#endif -#endif - -/* - * ncurses uses const in some places where X/Open does (or did) not allow. - */ -#ifdef NCURSES_VERSION -#define CONST_MENUS const -#else -#define CONST_MENUS /* nothing */ -#endif - -#ifndef HAVE_USE_WINDOW -#if !defined(NCURSES_VERSION_PATCH) || (NCURSES_VERSION_PATCH < 20070915) || !NCURSES_EXT_FUNCS -#define HAVE_USE_WINDOW 0 -#else -#define HAVE_USE_WINDOW 1 -#endif -#endif - -/* - * Simplify setting up demo of threading with these macros. - */ - -#if !HAVE_USE_WINDOW -typedef int (*NCURSES_WINDOW_CB) (WINDOW *, void *); -typedef int (*NCURSES_SCREEN_CB) (SCREEN *, void *); -#endif - -#if HAVE_USE_WINDOW -#define USING_WINDOW(w,func) use_window(w, (NCURSES_WINDOW_CB) func, w) -#define USING_WINDOW2(w,func,data) use_window(w, (NCURSES_WINDOW_CB) func, data) -#define WANT_USE_WINDOW() extern void _nc_want_use_window(void) -#else -#define USING_WINDOW(w,func) func(w) -#define USING_WINDOW2(w,func,data) func(w,data) -#define WANT_USE_WINDOW() extern void _nc_want_use_window(void) -#endif - -#if HAVE_USE_WINDOW -#define USING_SCREEN(s,func,data) use_screen(s, (NCURSES_SCREEN_CB) func, data) -#define WANT_USE_SCREEN() extern void _nc_want_use_screen(void) -#else -#define USING_SCREEN(s,func,data) func(data) -#define WANT_USE_SCREEN() extern void _nc_want_use_screen(void) -#endif - -#ifdef TRACE -#define Trace(p) _tracef p -#define USE_TRACE 1 -#else -#define Trace(p) /* nothing */ -#define USE_TRACE 0 -#endif - -#define MvAddCh (void) mvaddch -#define MvWAddCh (void) mvwaddch -#define MvAddStr (void) mvaddstr -#define MvWAddStr (void) mvwaddstr -#define MvWAddChStr (void) mvwaddchstr -#define MvPrintw (void) mvprintw -#define MvWPrintw (void) mvwprintw -#define MvHLine (void) mvhline -#define MvWHLine (void) mvwhline -#define MvVLine (void) mvvline -#define MvWVLine (void) mvwvline - -/* - * Workaround for defective implementation of gcc attribute warn_unused_result - */ -#if defined(__GNUC__) && defined(_FORTIFY_SOURCE) -#define IGNORE_RC(func) errno = func -#else -#define IGNORE_RC(func) (void) func -#endif /* gcc workarounds */ - -#define init_mb(state) memset(&state, 0, sizeof(state)) - -#endif /* __TEST_PRIV_H */ diff --git a/deps/ncurses-5.9/test/test_add_wchstr b/deps/ncurses-5.9/test/test_add_wchstr deleted file mode 100755 index ea0b3fa..0000000 Binary files a/deps/ncurses-5.9/test/test_add_wchstr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_addchstr b/deps/ncurses-5.9/test/test_addchstr deleted file mode 100755 index 2154e36..0000000 Binary files a/deps/ncurses-5.9/test/test_addchstr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_addstr b/deps/ncurses-5.9/test/test_addstr deleted file mode 100755 index 9cdc452..0000000 Binary files a/deps/ncurses-5.9/test/test_addstr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_addwstr b/deps/ncurses-5.9/test/test_addwstr deleted file mode 100755 index ea0b3fa..0000000 Binary files a/deps/ncurses-5.9/test/test_addwstr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_arrays b/deps/ncurses-5.9/test/test_arrays deleted file mode 100755 index a063f34..0000000 Binary files a/deps/ncurses-5.9/test/test_arrays and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_arrays.c b/deps/ncurses-5.9/test/test_arrays.c deleted file mode 100644 index e4b9fb1..0000000 --- a/deps/ncurses-5.9/test/test_arrays.c +++ /dev/null @@ -1,99 +0,0 @@ -/**************************************************************************** - * Copyright (c) 2007,2008 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. * - ****************************************************************************/ -/* - * $Id: test_arrays.c,v 1.5 2010/11/13 19:57:57 tom Exp $ - * - * Author: Thomas E Dickey - * - * Demonstrate the public arrays from the terminfo library. - -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[]; -extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[]; - - */ - -#define USE_TINFO -#include - -#if HAVE_TIGETSTR -#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) - -#define DUMP(name) dump_array(#name, name) - -static void -dump_array(const char *name, NCURSES_CONST char *const *list) -{ - int n; - - printf("%s:\n", name); - for (n = 0; list[n] != 0; ++n) { - printf("%5d:%s\n", n, list[n]); - } -} - -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - DUMP(boolnames); - DUMP(boolcodes); - DUMP(boolfnames); - - DUMP(numnames); - DUMP(numcodes); - DUMP(numfnames); - - DUMP(strnames); - DUMP(strcodes); - DUMP(strfnames); - - ExitProgram(EXIT_SUCCESS); -} - -#else -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - printf("This program requires the terminfo arrays\n"); - ExitProgram(EXIT_FAILURE); -} -#endif -#else /* !HAVE_TIGETSTR */ -int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) -{ - printf("This program requires the terminfo functions such as tigetstr\n"); - ExitProgram(EXIT_FAILURE); -} -#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-5.9/test/test_get_wstr b/deps/ncurses-5.9/test/test_get_wstr deleted file mode 100755 index ea0b3fa..0000000 Binary files a/deps/ncurses-5.9/test/test_get_wstr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_getstr b/deps/ncurses-5.9/test/test_getstr deleted file mode 100755 index d6dc834..0000000 Binary files a/deps/ncurses-5.9/test/test_getstr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_instr b/deps/ncurses-5.9/test/test_instr deleted file mode 100755 index bb71815..0000000 Binary files a/deps/ncurses-5.9/test/test_instr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_inwstr b/deps/ncurses-5.9/test/test_inwstr deleted file mode 100755 index ea0b3fa..0000000 Binary files a/deps/ncurses-5.9/test/test_inwstr and /dev/null differ diff --git a/deps/ncurses-5.9/test/test_opaque b/deps/ncurses-5.9/test/test_opaque deleted file mode 100755 index 7fd5b50..0000000 Binary files a/deps/ncurses-5.9/test/test_opaque and /dev/null differ diff --git a/deps/ncurses-5.9/test/testaddch b/deps/ncurses-5.9/test/testaddch deleted file mode 100755 index 0223552..0000000 Binary files a/deps/ncurses-5.9/test/testaddch and /dev/null differ diff --git a/deps/ncurses-5.9/test/testcurs b/deps/ncurses-5.9/test/testcurs deleted file mode 100755 index 3a5206a..0000000 Binary files a/deps/ncurses-5.9/test/testcurs and /dev/null differ diff --git a/deps/ncurses-5.9/test/testscanw b/deps/ncurses-5.9/test/testscanw deleted file mode 100755 index c6c02a1..0000000 Binary files a/deps/ncurses-5.9/test/testscanw and /dev/null differ diff --git a/deps/ncurses-5.9/test/tracemunch b/deps/ncurses-5.9/test/tracemunch deleted file mode 100755 index 1ea6f4b..0000000 --- a/deps/ncurses-5.9/test/tracemunch +++ /dev/null @@ -1,161 +0,0 @@ -#!/usr/bin/perl -w -# $Id: tracemunch,v 1.6 2005/03/12 21:48:23 tom Exp $ -############################################################################## -# Copyright (c) 1998-2002,2005 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. # -############################################################################## -# tracemunch -- compactify ncurses trace logs -# -# The error logs produced by ncurses with tracing enabled can be very tedious -# to wade through. This script helps by compacting runs of log lines that -# can be conveniently expressed as higher-level operations. -use strict; - -our $putattr="PutAttrChar\\({{ '(.)' = 0[0-7]+ }}\\) at \\(([0-9]+), ([0-9]+)\\)"; -our $waddnstr="waddnstr\\(0x([0-9a-f]+),\"([^\"]+)\",[0-9]+\\) called {A_NORMAL}"; - -our $win_nums=0; -our $curscr=""; -our $newscr=""; -our $stdscr=""; -our @win_addr; - -sub transaddr -{ - my $n; - my $arg = $_[0]; - - $arg =~ s/$curscr/curscr/g if ($curscr); - $arg =~ s/$newscr/newscr/g if ($newscr); - $arg =~ s/$stdscr/stdscr/g if ($stdscr); - for $n (0..$#win_addr) { - $arg =~ s/$win_addr[$n]/window$n/g if $win_addr[$n]; - } - - return $arg; -} - -while () -{ - my $addr; - my $n; - my $awaiting; - -CLASSIFY: { - # Transform window pointer addresses so it's easier to compare logs - $awaiting = "curscr" if ($_ =~ /creating curscr/); - $awaiting = "newscr" if ($_ =~ /creating newscr/); - $awaiting = "stdscr" if ($_ =~ /creating stdscr/); - if ($_ =~ /^create :window 0x([0-9a-f]+)/) { - $addr = "0x$1"; - if ($awaiting eq "curscr") { - $curscr = $addr; - } elsif ($awaiting eq "newscr") { - $newscr = $addr; - } elsif ($awaiting eq "stdscr") { - $stdscr = $addr; - } else { - $win_addr[$win_nums] = $addr; - $win_nums = $win_nums + 1; - } - $awaiting = ""; - } elsif ($_ =~ /^\.\.\.deleted win=0x([0-9a-f]+)/) { - $addr = "0x$1"; - $_ = &transaddr($_); - if ($addr eq $curscr) { - $curscr = ""; - } elsif ($addr eq $newscr) { - $newscr = ""; - } elsif ($addr eq $stdscr) { - $stdscr = ""; - } else { - for $n (0..$#win_addr) { - if ($win_addr[$n] eq $addr) { - $win_addr[$n] = ""; - } - } - } - } - - # Compactify runs of PutAttrChar calls (TR_CHARPUT) - if ($_ =~ /$putattr/) - { - my $putattr_chars = $1; - my $starty = $2; - my $startx = $3; - while () - { - if ($_ =~ /$putattr/) { - $putattr_chars .= $1; - } else { - last; - } - } - print "RUN of PutAttrChar()s: \"$putattr_chars\" from ${starty}, ${startx}\n"; - redo CLASSIFY; - } - - # Compactify runs of waddnstr calls (TR_CALLS) - if ($_ =~ /$waddnstr/) - { - my $waddnstr_chars = $2; - my $winaddr = $1; - while () - { - if ($_ =~ /$waddnstr/ && $1 eq $winaddr) { - $waddnstr_chars .= $2; - } else { - last; - } - } - my $winaddstr = &transaddr($winaddr); - print "RUN of waddnstr()s: $winaddr, \"$waddnstr_chars\"\n"; - redo CLASSIFY; - } - - # More transformations can go here - - # Repeated runs of anything - my $anyline = &transaddr($_); - my $repeatcount = 1; - while () { - if (&transaddr($_) eq $anyline) { - $repeatcount++; - } else { - last; - } - } - if ($repeatcount > 1) { - print "${repeatcount} REPEATS OF $anyline"; - } else { - print $anyline - } - redo CLASSIFY if $_; - - } # :CLASSIFY -} - -# tracemunch ends here diff --git a/deps/ncurses-5.9/test/view b/deps/ncurses-5.9/test/view deleted file mode 100755 index 8af3f61..0000000 Binary files a/deps/ncurses-5.9/test/view and /dev/null differ diff --git a/deps/ncurses-5.9/test/view.c b/deps/ncurses-5.9/test/view.c deleted file mode 100644 index 6e5c241..0000000 --- a/deps/ncurses-5.9/test/view.c +++ /dev/null @@ -1,586 +0,0 @@ -/**************************************************************************** - * Copyright (c) 1998-2009,2010 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. * - ****************************************************************************/ -/* - * view.c -- a silly little viewer program - * - * written by Eric S. Raymond December 1994 - * to test the scrolling code in ncurses. - * - * modified by Thomas Dickey July 1995 to demonstrate - * the use of 'resizeterm()', and May 2000 to illustrate wide-character - * handling. - * - * Takes a filename argument. It's a simple file-viewer with various - * scroll-up and scroll-down commands. - * - * n -- scroll one line forward - * p -- scroll one line back - * - * Either command accepts a numeric prefix interpreted as a repeat count. - * Thus, typing `5n' should scroll forward 5 lines in the file. - * - * The way you can tell this is working OK is that, in the trace file, - * there should be one scroll operation plus a small number of line - * updates, as opposed to a whole-page update. This means the physical - * scroll operation worked, and the refresh() code only had to do a - * partial repaint. - * - * $Id: view.c,v 1.81 2010/11/14 01:06:02 tom Exp $ - */ - -#include - -#include - -#undef CTRL /* conflict on AIX 5.2 with */ - -#if HAVE_TERMIOS_H -# include -#else -#if !defined(__MINGW32__) -# include -#endif -#endif - -#if !defined(sun) || !HAVE_TERMIOS_H -# if HAVE_SYS_IOCTL_H -# include -# endif -#endif - -#define my_pair 1 - -/* This is needed to compile 'struct winsize' */ -#if NEED_PTEM_H -#include -#include -#endif - -#if USE_WIDEC_SUPPORT -#if HAVE_MBTOWC && HAVE_MBLEN -#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) -#define count_mbytes(buffer,length,state) mblen(buffer,length) -#define check_mbytes(wch,buffer,length,state) \ - (int) mbtowc(&wch, buffer, length) -#define state_unused -#elif HAVE_MBRTOWC && HAVE_MBRLEN -#define reset_mbytes(state) init_mb(state) -#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state) -#define check_mbytes(wch,buffer,length,state) \ - (int) mbrtowc(&wch, buffer, length, &state) -#else -make an error -#endif -#endif /* USE_WIDEC_SUPPORT */ - -static RETSIGTYPE finish(int sig) GCC_NORETURN; -static void show_all(const char *tag); - -#if defined(SIGWINCH) && defined(TIOCGWINSZ) && HAVE_RESIZE_TERM -#define CAN_RESIZE 1 -#else -#define CAN_RESIZE 0 -#endif - -#if CAN_RESIZE -static RETSIGTYPE adjust(int sig); -static int interrupted; -#endif - -static bool waiting = FALSE; -static int shift = 0; -static bool try_color = FALSE; - -static char *fname; -static NCURSES_CH_T **vec_lines; -static NCURSES_CH_T **lptr; -static int num_lines; - -static void -usage(void) -{ - static const char *msg[] = - { - "Usage: view [options] file" - ,"" - ,"Options:" - ," -c use color if terminal supports it" - ," -i ignore INT, QUIT, TERM signals" - ," -n NUM specify maximum number of lines (default 1000)" -#if defined(KEY_RESIZE) - ," -r use old-style sigwinch handler rather than KEY_RESIZE" -#endif -#ifdef TRACE - ," -t trace screen updates" - ," -T NUM specify trace mask" -#endif - }; - size_t n; - for (n = 0; n < SIZEOF(msg); n++) - fprintf(stderr, "%s\n", msg[n]); - ExitProgram(EXIT_FAILURE); -} - -static int -ch_len(NCURSES_CH_T * src) -{ - int result = 0; -#if USE_WIDEC_SUPPORT - int count; -#endif - -#if USE_WIDEC_SUPPORT - for (;;) { - TEST_CCHAR(src, count, { - ++result; - ++src; - } - , { - break; - }) - } -#else - while (*src++) - result++; -#endif - return result; -} - -/* - * Allocate a string into an array of chtype's. If UTF-8 mode is - * active, translate the string accordingly. - */ -static NCURSES_CH_T * -ch_dup(char *src) -{ - unsigned len = (unsigned) strlen(src); - NCURSES_CH_T *dst = typeMalloc(NCURSES_CH_T, len + 1); - unsigned j, k; -#if USE_WIDEC_SUPPORT - wchar_t wstr[CCHARW_MAX + 1]; - wchar_t wch; - int l = 0; - size_t rc; - int width; -#ifndef state_unused - mbstate_t state; -#endif -#endif /* USE_WIDEC_SUPPORT */ - -#if USE_WIDEC_SUPPORT - reset_mbytes(state); -#endif - for (j = k = 0; j < len; j++) { -#if USE_WIDEC_SUPPORT - rc = (size_t) check_mbytes(wch, src + j, len - j, state); - if (rc == (size_t) -1 || rc == (size_t) -2) - break; - j += rc - 1; - if ((width = wcwidth(wch)) < 0) - break; - if ((width > 0 && l > 0) || l == CCHARW_MAX) { - wstr[l] = L'\0'; - l = 0; - if (setcchar(dst + k, wstr, 0, 0, NULL) != OK) - break; - ++k; - } - if (width == 0 && l == 0) - wstr[l++] = L' '; - wstr[l++] = wch; -#else - dst[k++] = (chtype) UChar(src[j]); -#endif - } -#if USE_WIDEC_SUPPORT - if (l > 0) { - wstr[l] = L'\0'; - if (setcchar(dst + k, wstr, 0, 0, NULL) == OK) - ++k; - } - wstr[0] = L'\0'; - setcchar(dst + k, wstr, 0, 0, NULL); -#else - dst[k] = 0; -#endif - return dst; -} - -int -main(int argc, char *argv[]) -{ - int MAXLINES = 1000; - FILE *fp; - char buf[BUFSIZ]; - int i; - int my_delay = 0; - NCURSES_CH_T **olptr; - int value = 0; - bool done = FALSE; - bool got_number = FALSE; -#if CAN_RESIZE - bool nonposix_resize = FALSE; -#endif - const char *my_label = "Input"; - - setlocale(LC_ALL, ""); - -#ifndef NCURSES_VERSION - /* - * We know ncurses will catch SIGINT if we don't establish our own handler. - * Other versions of curses may/may not catch it. - */ - (void) signal(SIGINT, finish); /* arrange interrupts to terminate */ -#endif - - while ((i = getopt(argc, argv, "cin:rtT:")) != -1) { - switch (i) { - case 'c': - try_color = TRUE; - break; - case 'i': - CATCHALL(SIG_IGN); - break; - case 'n': - if ((MAXLINES = atoi(optarg)) < 1 || - (MAXLINES + 2) <= 1) - usage(); - break; -#if CAN_RESIZE - case 'r': - nonposix_resize = TRUE; - break; -#endif -#ifdef TRACE - case 'T': - trace((unsigned) atoi(optarg)); - break; - case 't': - trace(TRACE_CALLS); - break; -#endif - default: - usage(); - } - } - if (optind + 1 != argc) - usage(); - - if ((vec_lines = typeCalloc(NCURSES_CH_T *, (size_t) MAXLINES + 2)) == 0) - usage(); - - assert(vec_lines != 0); - - fname = argv[optind]; - if ((fp = fopen(fname, "r")) == 0) { - perror(fname); - ExitProgram(EXIT_FAILURE); - } -#if CAN_RESIZE - if (nonposix_resize) - (void) signal(SIGWINCH, adjust); /* arrange interrupts to resize */ -#endif - - /* slurp the file */ - for (lptr = &vec_lines[0]; (lptr - vec_lines) < MAXLINES; lptr++) { - char temp[BUFSIZ], *s, *d; - int col; - - if (fgets(buf, sizeof(buf), fp) == 0) - break; - - /* convert tabs so that shift will work properly */ - for (s = buf, d = temp, col = 0; (*d = *s) != '\0'; s++) { - if (*d == '\n') { - *d = '\0'; - break; - } else if (*d == '\t') { - col = (col | 7) + 1; - while ((d - temp) != col) - *d++ = ' '; - } else -#if USE_WIDEC_SUPPORT - col++, d++; -#else - if (isprint(UChar(*d))) { - col++; - d++; - } else { - sprintf(d, "\\%03o", UChar(*s)); - d += strlen(d); - col = (int) (d - temp); - } -#endif - } - *lptr = ch_dup(temp); - } - (void) fclose(fp); - num_lines = (int) (lptr - vec_lines); - - (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) noecho(); /* don't echo input */ - nodelay(stdscr, TRUE); - idlok(stdscr, TRUE); /* allow use of insert/delete line */ - - if (try_color) { - if (has_colors()) { - start_color(); - init_pair(my_pair, COLOR_WHITE, COLOR_BLUE); - bkgd(COLOR_PAIR(my_pair)); - } else { - try_color = FALSE; - } - } - - lptr = vec_lines; - while (!done) { - int n, c; - - if (!got_number) - show_all(my_label); - - for (;;) { -#if CAN_RESIZE - if (interrupted) { - adjust(0); - my_label = "interrupt"; - } -#endif - waiting = TRUE; - c = getch(); - waiting = FALSE; - if ((c < 127) && isdigit(c)) { - if (!got_number) { - MvPrintw(0, 0, "Count: "); - clrtoeol(); - } - addch(UChar(c)); - value = 10 * value + (c - '0'); - got_number = TRUE; - } else - break; - } - if (got_number && value) { - n = value; - } else { - n = 1; - } - - if (c != ERR) - my_label = keyname(c); - switch (c) { - case KEY_DOWN: - case 'n': - olptr = lptr; - for (i = 0; i < n; i++) - if ((lptr - vec_lines) < (num_lines - LINES + 1)) - lptr++; - else - break; - scrl((int) (lptr - olptr)); - break; - - case KEY_UP: - case 'p': - olptr = lptr; - for (i = 0; i < n; i++) - if (lptr > vec_lines) - lptr--; - else - break; - scrl((int) (lptr - olptr)); - break; - - case 'h': - case KEY_HOME: - lptr = vec_lines; - break; - - case 'e': - case KEY_END: - if (num_lines > LINES) - lptr = vec_lines + num_lines - LINES + 1; - else - lptr = vec_lines; - break; - - case 'r': - case KEY_RIGHT: - shift += n; - break; - - case 'l': - case KEY_LEFT: - shift -= n; - if (shift < 0) { - shift = 0; - beep(); - } - break; - - case 'q': - done = TRUE; - break; - -#ifdef KEY_RESIZE - case KEY_RESIZE: /* ignore this; ncurses will repaint */ - break; -#endif - case 's': - if (got_number) { - halfdelay(my_delay = n); - } else { - nodelay(stdscr, FALSE); - my_delay = -1; - } - break; - case ' ': - nodelay(stdscr, TRUE); - my_delay = 0; - break; - case ERR: - if (!my_delay) - napms(50); - break; - default: - beep(); - break; - } - if (c >= KEY_MIN || (c > 0 && !isdigit(c))) { - got_number = FALSE; - value = 0; - } - } - - finish(0); /* we're done */ -} - -static RETSIGTYPE -finish(int sig) -{ - endwin(); -#if NO_LEAKS - if (vec_lines != 0) { - int n; - for (n = 0; n < num_lines; ++n) { - free(vec_lines[n]); - } - free(vec_lines); - } -#endif - ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS); -} - -#if CAN_RESIZE -/* - * This uses functions that are "unsafe", but it seems to work on SunOS. - * Usually: the "unsafe" refers to the functions that POSIX lists which may be - * called from a signal handler. Those do not include buffered I/O, which is - * used for instance in wrefresh(). To be really portable, you should use the - * KEY_RESIZE return (which relies on ncurses' sigwinch handler). - * - * The 'wrefresh(curscr)' is needed to force the refresh to start from the top - * of the screen -- some xterms mangle the bitmap while resizing. - */ -static RETSIGTYPE -adjust(int sig) -{ - if (waiting || sig == 0) { - struct winsize size; - - if (ioctl(fileno(stdout), TIOCGWINSZ, &size) == 0) { - resize_term(size.ws_row, size.ws_col); - wrefresh(curscr); - show_all(sig ? "SIGWINCH" : "interrupt"); - } - interrupted = FALSE; - } else { - interrupted = TRUE; - } - (void) signal(SIGWINCH, adjust); /* some systems need this */ -} -#endif /* CAN_RESIZE */ - -static void -show_all(const char *tag) -{ - int i; - char temp[BUFSIZ]; - NCURSES_CH_T *s; - time_t this_time; - -#if CAN_RESIZE - sprintf(temp, "%.20s (%3dx%3d) col %d ", tag, LINES, COLS, shift); - i = (int) strlen(temp); - if ((i + 7) < (int) sizeof(temp)) { - sprintf(temp + i, "view %.*s", - (int) (sizeof(temp) - 7 - (size_t) i), - fname); - } -#else - (void) tag; - sprintf(temp, "view %.*s", (int) sizeof(temp) - 7, fname); -#endif - move(0, 0); - printw("%.*s", COLS, temp); - clrtoeol(); - this_time = time((time_t *) 0); - strcpy(temp, ctime(&this_time)); - if ((i = (int) strlen(temp)) != 0) { - temp[--i] = 0; - if (move(0, COLS - i - 2) != ERR) - printw(" %s", temp); - } - - scrollok(stdscr, FALSE); /* prevent screen from moving */ - for (i = 1; i < LINES; i++) { - move(i, 0); - printw("%3ld:", (long) (lptr + i - vec_lines)); - clrtoeol(); - if ((s = lptr[i - 1]) != 0) { - int len = ch_len(s); - if (len > shift) { -#if USE_WIDEC_SUPPORT - add_wchstr(s + shift); -#else - addchstr(s + shift); -#endif - } -#if defined(NCURSES_VERSION) || defined(HAVE_WCHGAT) - if (try_color) - wchgat(stdscr, -1, A_NORMAL, my_pair, NULL); -#endif - } - } - setscrreg(1, LINES - 1); - scrollok(stdscr, TRUE); - refresh(); -} diff --git a/deps/ncurses-5.9/test/worm b/deps/ncurses-5.9/test/worm deleted file mode 100755 index 3c13012..0000000 Binary files a/deps/ncurses-5.9/test/worm and /dev/null differ diff --git a/deps/ncurses-5.9/test/xmas b/deps/ncurses-5.9/test/xmas deleted file mode 100755 index 1aae2a3..0000000 Binary files a/deps/ncurses-5.9/test/xmas and /dev/null differ diff --git a/deps/ncurses-6.3/ANNOUNCE b/deps/ncurses-6.3/ANNOUNCE new file mode 100644 index 0000000..0684b3d --- /dev/null +++ b/deps/ncurses-6.3/ANNOUNCE @@ -0,0 +1,775 @@ + Announcing ncurses 6.3 + +Overview + + The ncurses (new curses) library is a free software emulation of + curses in System V Release 4.0 (SVr4), and more. It uses terminfo + format, supports pads and color and multiple highlights and forms + characters and function-key mapping, and has all the other SVr4-curses + enhancements over BSD curses. SVr4 curses became the basis of X/Open + Curses. + + In mid-June 1995, the maintainer of 4.4BSD curses declared that he + considered 4.4BSD curses obsolete, and encouraged the keepers of unix + releases such as BSD/OS, FreeBSD and NetBSD to switch over to ncurses. + + Since 1995, ncurses has been ported to many systems: + * It is used in almost every system based on the Linux kernel (aside + from some embedded applications). + * It is used as the system curses library on OpenBSD, FreeBSD and + MacOS. + * It is used in environments such as Cygwin and MinGW. The first of + these was EMX on OS/2 Warp. + * It is used (though usually not as the system curses) on all of the + vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, Solaris, + Tru64. + * It should work readily on any ANSI/POSIX-conforming unix. + + The distribution includes the library and support utilities, including + * captoinfo, a termcap conversion tool + * clear, utility for clearing the screen + * infocmp, the terminfo decompiler + * tabs, set tabs on a terminal + * tic, the terminfo compiler + * toe, list (table of) terminfo entries + * tput, utility for retrieving terminal capabilities in shell + scripts + * tset, to initialize the terminal + + Full manual pages are provided for the library and tools. + + The ncurses distribution is available at ncurses' homepage: + + ftp://ftp.invisible-island.net/ncurses/ or + https://invisible-mirror.net/archives/ncurses/ . + + It is also available via anonymous FTP at the GNU distribution site + + ftp://ftp.gnu.org/gnu/ncurses/ . + +Release Notes + + These notes are for ncurses 6.3, released October 21, 2021. + + This release is designed to be source-compatible with ncurses 5.0 + through 6.2; providing extensions to the application binary interface + (ABI). Although the source can still be configured to support the + ncurses 5 ABI, the reason for the release is to reflect improvements + to the ncurses 6 ABI and the supporting utility programs. + + There are, of course, numerous other improvements, listed in this + announcement. + + The most important bug-fixes/improvements dealt with portability + issues. The release notes also mention some other bug-fixes, but are + focused on new features and improvements to existing features since + ncurses 6.2 release. + + Library improvements + + New features + + There are a few new features: + * A new (experimental) driver, for the Windows Terminal + configuration is provided. + * A script is provided which enables OpenBSD users to upgrade their + system to use ncurses 6.3 (OpenBSD developers are also invited to + do this). + + Additionally, to improve performance other changes (and extensions) + are provided in this release: + * modify lib_mouse.c to check for out-of-range button numbers, + convert those to position reports. + * add sp-funcs for erasewchar, killwchar. + + Other improvements + + These are revised features: + * modify wgetnstr, wgetn_wstr to improve compatibility with SVr4 + curses in its treatment of interrupt and quit characters + + These were done to limit or ultimately deprecate features: + * mark wgetch-events feature as deprecated. + + prevent KEY_EVENT from appearing in curses.h unless the + configure option --enable-wgetch-events is used. + + modify MKkey_defs.sh to hide ncurses' definition of + KEY_EVENTS to reduce Visual Studio C++ redefinition warnings. + * reduce build-warnings by excluding ncurses-internals from + deprecation warnings. + + These are improvements to existing features: + * drop symbols GCC_PRINTF and GCC_SCANF from , to simplify + use. + * apply gcc format attribute to prototypes which use a va_list + parameter rather than a "..." variable-length parameter list. + * modify so that it is not necessary to include + before . + * provide for wide-characters as background character in wbkgrnd + * improve parameter-checking for tparm, adding function _nc_tiparm() + to handle the most-used case, which accepts only numeric + parameters. + * use return-value from vsnprintf to reallocate as needed to allow + for buffers larger than the screen size. + * add another fflush(stdout) in _nc_flush to handle time-delays in + the middle of strings such as flash when the application uses + low-level calls rather than curses. + + These are corrections to existing features: + * add a check to guard against repeat_char emitting digits which + could be interpreted as BSD-style padding when --enable-bsdpad is + configured. + * check for screen size-change in scr_init and scr_restore, in case + a screen dump does not match the current screen dimensions + + Program improvements + + Several improvements were made to the utility programs: + + tabs + + + implement "+m" option + + tic + + + add check for duplicate "use=" clauses. + + add check to report instances where tparm would detect an + error in an expression. + + add user-defined capabilities from mintty to Caps-ncurses, + for checking consistency. + + improve warning when oc/op do not mention SGR 39/49 for xterm + compatible XT flag. + + improve checks for number of parameters of smglp, smgrp, + smgtp, and smgbp. + + improve "-c" option to validate the number and type of + parameters and compare against expected number/type before + deciding which set of parameter-lists to use in tparm calls. + + improve check for errors detected in tparm. + + improve format of output, to ensure that the messages contain + only printable text. + + modify to eliminate unnecessary "\" to escape ":" in terminfo + format. + + remove check that assumes that none or both parameterized and + non-parameterized margin-setting capabilities are present. + + toe + + + modify output of "toe -as" to show first description found + rather than the last. + + add a check to ensure that a "termcap file" is text rather + than binary. + + tput + + + modify to allow multiple commands per line. + + improve parameter-checking by analyzing all extended string + capabilities, e.g., as used in the Cs and Ms capabilities of + the tmux description. + + make warning messages consistently using alias names when + those are used, rather than the underlying program's name. + + improve usage message for aliases such as clear, by + eliminating tput-specific portions. + + modify initialization to avoid opening /dev/tty for cases + other than reset/init, e.g., for clear. + + Examples + + Along with the library and utilities, improvements were made to the + ncurses-examples. Most of this activity aimed at improving the + test-packages. A few changes are more generally useful, e.g., for the + main ncurses test-program, and for analyzing traces using the + tracemunch script: + * add "-r" option to the dots test-programs, to help with scripting + a performance comparison. + * build-fix for test_opaque, for configurations without opaque + curses structs, e.g., ncurses 5.7. + * improve tracemunch logic for "RUN" compaction. + * improve tracemunch's coverage of form/menu/panel libraries. + * improve tracemunch's checking/reporting the type for the first + parameter, e.g., "WINDOW*" rather than "#1". + * modify tracemunch and the panel library to show readable traces + for panel- and user-pointers. + + There are other new demo/test programs and reusable examples: + + back_ground + to exercise the wide-character background functions. + + move_field + to demonstrate move_field, and a stub for a corresponding demo + of dup_field. + + test_tparm + for checking tparm changes. + + Terminal database + + There are several new terminal descriptions: + + absolute, att610+cvis, foot, foot-direct, hp98550-color, + hpterm-color2, hterm, hterm-256color, linux-s, putty+keypad, + putty+screen, putty-screen, screen.linux-s, scrt/securecrt, + tmux-direct, vt220+cvis, vt220+cvis8, vt220+pcedit, vt220+vtedit, + vt220-base, vt52+keypad, xterm+256color2, xterm+88color2, + xterm-direct16, xterm-direct256, xterm+nofkeys, and + xterm+nopcfkeys. + + There are many changes to existing terminal descriptions. Some were + updates to several descriptions: + * correct use-ordering in some xterm-direct flavors + * fix some sgr inconsistencies in d230c, ibm6153, ibm6154, + ncrvt100an + * improve vt50h and vt52 based on DECScope manual + * use hp+arrows in a few places + * use hp+pfk-cr in a few places + * use vt220+cvis in st, terminology, termite since they ignore + blinking-cursor detail in att610+cvis + + while others affected specific descriptions. These were retested, to + take into account changes by their developers: + + kitty+common, mlterm3, ms-terminal + + while these are specific fixes based on reviewing documentation, user + reports, or warnings from tic: + + aaa+dec, aaa+rv + correct rmacs/smacs + + aaa+rv + correct sgr + + icl6404 + correct csr + + kitty + use att610+cvis, xterm+tmux and ansi+enq + + konsole-base + re-enable "bel" + + linux2.6 + fix pound-sign mapping in acsc + + linux3.0 + modify to reflect default mapping of shift-tab by kbd 1.14 + + pccons + fill in some missing pieces, to make it comparable to the vt220 + entry + + putty + use vt100+fnkeys, add rep + + screen + use vt100+enq + + terminator + corrected tsl capability + + ti916 + correct cup + + tmux + change kbs to ^? + + vt220 + use vt220+cvis + + vt420+lrmm + add smglp and smgrp + + vt420 + use vt420+lrmm + + xterm-new + add nel + + xterm-vt52 + use vt52+keypad + + A few entries use extensions (user-defined terminal capabilities): + * add shifted Linux console keys in linux+sfkeys entry for + screen.linux + * add Smulx to alacritty + * add kbeg to xterm+keypad to accommodate termcap applications + * add extensions in xterm+tmux and ecma+strikeout to ms-terminal, + but cancel the non-working Cr and Ms capabilities + + Documentation + + As usual, this release + * improves documentation by describing new features, + * attempts to improve the description of features which users have + found confusing + * fills in overlooked descriptions of features which were described + in the NEWS file but treated sketchily in manual pages. + + In addition to providing background information to explain these + features and show how they evolved, there are corrections, + clarifications, etc.: + * Corrections: + + make opts extension for getcchar work as documented for + ncurses 6.1, adding "-g" flag to demo_new_pair to illustrate. + + modify tset "-q" option to refrain from modifying terminal + modes, to match the documentation. + * New/improved history and portability sections: + + improve documentation for tparm and static/dynamic variables. + + add history note to curs_scanw.3x for and + + + add history note to curs_printw.3x for and + + + add portability note to ncurses.3x regarding + + add historical notes to tput, curses-terminfo and + curses-color manpages based on source-code for SVr2, SVr3 and + SVr4. + + improve history section for tset manpage based on the 1BSD + tarball, which preceded BSD's SCCS checkins by more than + three years. + * Other improvements: + + explain in ncurses.3x that functions in the tinfo library do + not rely upon wide-characters. + + improve manual page for panel library, extending the + portability section as well as documenting error-returns. + + add section on margins to terminfo.5, adapted from X/Open + Curses. + + improve man/term.5 section on legacy storage format. + + add a note in terminfo.5 explaining that no-parameter strings + such as sgr0 or cnorm should not be used with tparm. + + improve description of BSD-style padding in curs_termcap.3x + + improve discussion of padding versus tparm and tputs in + man/curs_terminfo.3x + + add a note in manual page to explain ungetch vs unget_wch. + + improve description of error-returns in waddch and waddnstr + manual pages. + + There are no new manual pages (all of the manual page updates are to + existing pages). + + Some of the improvements are more subtle, relating to the way the + information is presented. For instance, hyphenation is suppressed in + the HTML files generated from manual pages because an upgrade to groff + gave noticeably poorer results, interfering with the process of + creating links between the resulting webpages. + + Interesting bug-fixes + + While there were many bugs fixed during development of ncurses 6.3, + only a few (the reason for this release) were both important and + interesting. Most of the bug-fixes were for local issues which did not + affect compatibility across releases. Since those are detailed in the + NEWS file no elaboration is needed here. + + The interesting bugs were: + * modify wbkgd and wbkgrnd to avoid storing a null in the background + character, because it may be used in cases where the corresponding + 0x80 is not treated as a null. + This was a regression introduced in ncurses 6.2 (reported on the + mailing list), for which the workaround was to specify a blank for + the background character. + * remove output-related checks for nl/nonl (also reported on the + mailing list). + * improve tparm implementation of %P and %g, more closely matching + SVr4 terminfo. Those denote static and dynamic variables in + terminfo expressions. + Exactly what those terms meant was never documented before in any + implementation of curses, aside from source code. Unlike the other + two fixes, the problem was discovered while studying OpenBSD's + version of tset. + + Configuration changes + + Major changes + + There are no major changes. Several new options were added to ease + integration of packages with systems using different versions of GNAT + and ncurses. Also, improvements were made to configure checks. + + Configuration options + + There are a few new/modified configure options: + + --enable-fvisibility + new configure option and check for gcc -fvisibility=hidden + feature + + --enable-leaks + corrected to allow turning leak-checking off later in a set of + options. + + --enable-stdnoreturn + new configure option makes the _Noreturn keyword optional to + ease transition. + + --disable-pkg-ldflags + revised option also controls whether $LDFLAGS from the build is + provided in "-config" and ".pc" files. + + --disable-root-access + add configure option which tells ncurses to disallow most + file-opens by setuid processes. + + --disable-wattr-macros + changed default to help packagers who reuse wide ncursesw + header file with non-wide ncurses library. + + --with-pkg-config-libdir + revised option uses the actual search path from pkg-config or + pkgconf using the output from --debug. + + --with-ada-libname + --with-form-libname + --with-menu-libname + --with-panel-libname + new several --with-xxx-libname options, to help with pkgsrc + + Portability + + Many of the portability changes are implemented via the configure + script: + * add a special case in the configure script to work around one of + the build-time breakages reported for OpenBSD 6 here: + + https://www.mail-archive.com/bugs@openbsd.org/msg13200.html + * modify configure check for libtool to prevent accidental use of an + OpenBSD program which uses the same name. + * modify configuration checks for build-time tic/infocmp to use + AC_CHECK_TOOL. That can still be overridden by --with-tic-path and + --with-infocmp-path when fallbacks are used, but even if not using + fallbacks, the improved check may help with cross-compiling. + * relax modification-time comparison in CF_LINK_FUNCS to allow it to + accept link() function with NFS filesystems which change the mtime + on the link target, e.g., several BSD systems. + * modify configure check for c89/c99 aliases of clang to use its + -std option instead, because some platforms, in particular macOS, + do not provide workable c89/c99 aliases. + * modify CF_NCURSES_CONFIG to work around Xcode's c99 "-W" option, + which conflicts with conventional use for passing linker options. + * modify configure scripts to filter out redefinitions of + _XOPEN_SOURCE, e.g., for NetBSD which generally supports 500, but + 600 is needed for ncursesw. + + Here are some of the other portability fixes: + * change configure-check and source-code for gcc's noreturn + attribute to assume it is a prefix rather than suffix, matching + c11's _Noreturn convention. + * modify mk-1st.awk to account for extra-suffix configure option. + * build-fix for termsort module when configured with termcap. + * modify configure script and makefiles to support ".PHONY" make + program feature. + * amend libtool configuration to add dependency for install.tic, + etc., in ncurses/Makefile on the lower-level libraries. + * modify Ada95 source-generation utility to write to a file given as + parameter rather than to the standard output, allowing builds with + MinGW. + * amend tic/infocmp check to allow for the respective tool's + absence. + * build-fixes for gnat 10.1.1, whose gnatmake drops integration with + gprbuild. + * correct configure version-check/warning for g++ to allow for 10.x + _________________________________________________________________ + +Features of ncurses + + The ncurses package is fully upward-compatible with SVr4 (System V + Release 4) curses: + * All of the SVr4 calls have been implemented (and are documented). + * ncurses supports all of the for SVr4 curses features including + keyboard mapping, color, forms-drawing with ACS characters, and + automatic recognition of keypad and function keys. + * ncurses provides these SVr4 add-on libraries (not part of X/Open + Curses): + + the panels library, supporting a stack of windows with + backing store. + + the menus library, supporting a uniform but flexible + interface for menu programming. + + the form library, supporting data collection through + on-screen forms. + * ncurses's terminal database is fully compatible with that used by + SVr4 curses. + + ncurses supports user-defined capabilities which it can see, + but which are hidden from SVr4 curses applications using the + same terminal database. + + It can be optionally configured to match the format used in + related systems such as AIX and Tru64. + + Alternatively, ncurses can be configured to use hashed + databases rather than the directory of files used by SVr4 + curses. + * The ncurses utilities have options to allow you to filter terminfo + entries for use with less capable curses/terminfo versions such as + the HP-UX and AIX ports. + + The ncurses package also has many useful extensions over SVr4: + * The API is 8-bit clean and base-level conformant with the X/OPEN + curses specification, XSI curses (that is, it implements all BASE + level features, and most EXTENDED features). It includes many + function calls not supported under SVr4 curses (but portability of + all calls is documented so you can use the SVr4 subset only). + * Unlike SVr3 curses, ncurses can write to the rightmost-bottommost + corner of the screen if your terminal has an insert-character + capability. + * Ada95 and C++ bindings. + * Support for mouse event reporting with X Window xterm and FreeBSD + and OS/2 console windows. + * Extended mouse support via Alessandro Rubini's gpm package. + * The function wresize allows you to resize windows, preserving + their data. + * The function use_default_colors allows you to use the terminal's + default colors for the default color pair, achieving the effect of + transparent colors. + * The functions keyok and define_key allow you to better control the + use of function keys, e.g., disabling the ncurses KEY_MOUSE, or by + defining more than one control sequence to map to a given key + code. + * Support for direct-color terminals, such as modern xterm. + * Support for 256-color terminals, such as modern xterm. + * Support for 16-color terminals, such as aixterm and modern xterm. + * Better cursor-movement optimization. The package now features a + cursor-local-movement computation more efficient than either BSD's + or System V's. + * Super hardware scrolling support. The screen-update code + incorporates a novel, simple, and cheap algorithm that enables it + to make optimal use of hardware scrolling, line-insertion, and + line-deletion for screen-line movements. This algorithm is more + powerful than the 4.4BSD curses quickch routine. + * Real support for terminals with the magic-cookie glitch. The + screen-update code will refrain from drawing a highlight if the + magic- cookie unattributed spaces required just before the + beginning and after the end would step on a non-space character. + It will automatically shift highlight boundaries when doing so + would make it possible to draw the highlight without changing the + visual appearance of the screen. + * It is possible to generate the library with a list of pre-loaded + fallback entries linked to it so that it can serve those terminal + types even when no terminfo tree or termcap file is accessible + (this may be useful for support of screen-oriented programs that + must run in single-user mode). + * The tic/captoinfo utility provided with ncurses has the ability to + translate many termcaps from the XENIX, IBM and AT&T extension + sets. + * A BSD-like tset utility is provided. + * The ncurses library and utilities will automatically read terminfo + entries from $HOME/.terminfo if it exists, and compile to that + directory if it exists and the user has no write access to the + system directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the system + terminfo directory. + * You may specify a path of directories to search for compiled + descriptions with the environment variable TERMINFO_DIRS (this + generalizes the feature provided by TERMINFO under stock System + V.) + * In terminfo source files, use capabilities may refer not just to + other entries in the same source file (as in System V) but also to + compiled entries in either the system terminfo directory or the + user's $HOME/.terminfo directory. + * The table-of-entries utility toe makes it easy for users to see + exactly what terminal types are available on the system. + * The library meets the XSI requirement that every macro entry point + has a corresponding function which may be linked (and will be + prototype-checked) if the macro definition is disabled with + #undef. + * Extensive documentation is provided (see the Additional Reading + section of the ncurses FAQ for online documentation). + +Applications using ncurses + + The ncurses distribution includes a selection of test programs + (including a few games). These are available separately as + ncurses-examples + + The ncurses library has been tested with a wide variety of + applications including: + + aptitude + FrontEnd to Apt, the debian package manager + + https://wiki.debian.org/Aptitude + + cdk + Curses Development Kit + + https://invisible-island.net/cdk/ + + ded + directory-editor + + https://invisible-island.net/ded/ + + dialog + the underlying application used in Slackware's setup, and the + basis for similar install/configure applications on many + systems. + + https://invisible-island.net/dialog/ + + lynx + the text WWW browser + + https://lynx.invisible-island.net/ + + mutt + mail utility + + http://www.mutt.org/ + + ncftp + file-transfer utility + + https://www.ncftp.com/ + + nvi + New vi uses ncurses. + + https://sites.google.com/a/bostic.com/keithbostic/vi + + ranger + A console file manager with VI key bindings in Python. + + https://ranger.github.io/ + + tin + newsreader, supporting color, MIME + + http://www.tin.org/ + + vifm + File manager with vi like keybindings + + https://vifm.info/ + + as well as some that use ncurses for the terminfo support alone: + + minicom + terminal emulator for serial modem connections + + https://alioth.debian.org/projects/minicom/ + + mosh + a replacement for ssh. + + https://mosh.org/ + + tack + terminfo action checker + + https://invisible-island.net/ncurses/tack.html + + tmux + terminal multiplexor + + https://github.com/tmux/tmux/wiki + + vile + vi-like-emacs may be built to use the terminfo, termcap or + curses interfaces. + + https://invisible-island.net/vile/ + + and finally, those which use only the termcap interface: + + emacs + text editor + + https://www.gnu.org/software/emacs/ + + less + The most commonly used pager (a program that displays text + files). + + http://www.greenwoodsoftware.com/less/ + + screen + terminal multiplexor + + https://www.gnu.org/software/screen/ + + vim + text editor + + https://www.vim.org/ + +Development activities + + Zeyd Ben-Halim started ncurses from a previous package pcurses, + written by Pavel Curtis. Eric S. Raymond continued development. + Juergen Pfeifer wrote most of the form and menu libraries. + + Ongoing development work is done by Thomas E. Dickey. Thomas E. Dickey + has acted as the maintainer for the Free Software Foundation, which + held a copyright on ncurses for releases 4.2 through 6.1. Following + the release of ncurses 6.1, effective as of release 6.2, copyright for + ncurses reverted to Thomas E. Dickey (see the ncurses FAQ for + additional information). + + Contact the current maintainers at + + bug-ncurses@gnu.org + + To join the ncurses mailing list, please write email to + + bug-ncurses-request@gnu.org + + containing the line: + + subscribe @ + + This list is open to anyone interested in helping with the development + and testing of this package. + + Beta versions of ncurses are made available at + + ftp://ftp.invisible-island.net/ncurses/current/ and + https://invisible-mirror.net/archives/ncurses/current/ . + + Patches to the current release are made available at + + ftp://ftp.invisible-island.net/ncurses/6.2/ and + https://invisible-mirror.net/archives/ncurses/6.2/ . + + There is an archive of the mailing list here: + + http://lists.gnu.org/archive/html/bug-ncurses (also https) + +Related resources + + The release notes make scattered references to these pages, which may + be interesting by themselves: + * ncurses licensing + * Symbol versioning in ncurses + * Comments on ncurses versus slang (S-Lang) + * Comments on OpenBSD + * tack - terminfo action checker + * tctest - termcap library checker + * Terminal Database + +Other resources + + The distribution provides a newer version of the terminfo-format + terminal description file once maintained by Eric Raymond . Unlike the + older version, the termcap and terminfo data are provided in the same + file, which also provides several user-definable extensions beyond the + X/Open specification. + + You can find lots of information on terminal-related topics not + covered in the terminfo file at Richard Shuford's archive . The + collection of computer manuals at bitsavers.org has also been useful. + + * Overview + * Release Notes + + Library improvements + o New features + o Other improvements + + Program improvements + o Utilities + o Examples + + Terminal database + + Documentation + + Interesting bug-fixes + + Configuration changes + o Major changes + o Configuration options + + Portability + * Features of ncurses + * Applications using ncurses + * Development activities + * Related resources + * Other resources diff --git a/deps/ncurses-5.9/AUTHORS b/deps/ncurses-6.3/AUTHORS similarity index 90% rename from deps/ncurses-5.9/AUTHORS rename to deps/ncurses-6.3/AUTHORS index 57904c4..09dfc9a 100644 --- a/deps/ncurses-5.9/AUTHORS +++ b/deps/ncurses-6.3/AUTHORS @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 2006 Free Software Foundation, Inc. -- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 2006,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 -- @@ -25,14 +26,15 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: AUTHORS,v 1.2 2006/10/28 21:44:52 tom Exp $ +-- $Id: AUTHORS,v 1.5 2021/06/17 21:20:30 tom Exp $ ------------------------------------------------------------------------------- These are the principal authors/contributors of ncurses since 1.9.9e, in decreasing order of their contribution: TD Thomas E. Dickey -JPF Juergen Pfeifer +JPF Juergen Pfeifer ESR Eric S Raymond AVL Alexander V Lukyanov PB Philippe Blain SV Sven Verdoolaege +NB Nicolas Boulenguez diff --git a/deps/ncurses-6.3/Ada95/Makefile.in b/deps/ncurses-6.3/Ada95/Makefile.in new file mode 100644 index 0000000..75cfef1 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/Makefile.in @@ -0,0 +1,99 @@ +# $Id: Makefile.in,v 1.28 2021/07/03 18:54:54 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2010,2015 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, 1996 +# +# Version Control +# $Revision: 1.28 $ +# +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +SUBDIRS = @ADA_SUBDIRS@ + +TOP_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" +@SET_MAKE@ + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : depend +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +libs \ +sources \ +install \ +install.libs \ +uninstall \ +uninstall.libs :: + for d in $(SUBDIRS); do \ + ( cd $$d && $(MAKE) $(TOP_MFLAGS) $@ ) ;\ + done + +clean \ +mostlyclean :: + for d in $(SUBDIRS); do \ + ( cd $$d && $(MAKE) $(TOP_MFLAGS) $@ ) ;\ + done + +distclean \ +realclean :: + for d in $(SUBDIRS); do \ + ( cd $$d && $(MAKE) $(TOP_MFLAGS) $@ ) ;\ + done + rm -rf lib + for lib_kind in static dynamic; do \ + rm -rf $${lib_kind}-ali; \ + rm -rf $${lib_kind}-obj; \ + done + -rm -f config.cache config.log config.status include/ncurses_cfg.h + -rm -f Makefile + +depend : + +tags : + @ + +preinstall : + @ + +install.data : + @ diff --git a/deps/ncurses-6.3/Ada95/README b/deps/ncurses-6.3/Ada95/README new file mode 100644 index 0000000..2e66625 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/README @@ -0,0 +1,34 @@ +------------------------------------------------------------------------------- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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, 1996 + +The documentation is provided in HTML format in the ./html +subdirectory. The main document is named index.html + diff --git a/deps/ncurses-5.9/Ada95/TODO b/deps/ncurses-6.3/Ada95/TODO similarity index 91% rename from deps/ncurses-5.9/Ada95/TODO rename to deps/ncurses-6.3/Ada95/TODO index f5c8acd..1035495 100644 --- a/deps/ncurses-5.9/Ada95/TODO +++ b/deps/ncurses-6.3/Ada95/TODO @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 1998-1999,2006 Free Software Foundation, Inc. -- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-1999,2006 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 -- @@ -25,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: TODO,v 1.5 2006/04/22 22:23:21 tom Exp $ +-- $Id: TODO,v 1.8 2021/09/01 23:22:33 tom Exp $ ------------------------------------------------------------------------------- -- Intensive testing @@ -35,12 +36,12 @@ Like most WEB pages: under continuous construction -- Style cleanup - + -- Alternate functions for procedures with out params Comfort purpose -- Sample program - Under continuous construction (and it's not a WEB page!!!) + Under continuous construction (and it is not a WEB page!!!) -- Make the binding objects a shared library They are rather large, so it would make sense, otherwise Ada95 diff --git a/deps/ncurses-6.3/Ada95/aclocal.m4 b/deps/ncurses-6.3/Ada95/aclocal.m4 new file mode 100644 index 0000000..75e68c7 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/aclocal.m4 @@ -0,0 +1,5099 @@ +dnl*************************************************************************** +dnl Copyright 2018-2020,2021 Thomas E. Dickey * +dnl Copyright 2010-2017,2018 Free Software Foundation, Inc. * +dnl * +dnl Permission is hereby granted, free of charge, to any person obtaining a * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl Author: Thomas E. Dickey +dnl +dnl $Id: aclocal.m4,v 1.185 2021/10/17 15:16:03 tom Exp $ +dnl Macros used in NCURSES Ada95 auto-configuration script. +dnl +dnl These macros are maintained separately from NCURSES. The copyright on +dnl this file applies to the aggregation of macros and does not affect use of +dnl these macros in other applications. +dnl +dnl See these pages for additional information: +dnl https://invisible-island.net/autoconf/ +dnl https://invisible-island.net/autoconf/my-autoconf.html +dnl +dnl --------------------------------------------------------------------------- +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 +dnl ------------------ +dnl Conditionally generate script according to whether we're using a given autoconf. +dnl +dnl $1 = version to compare against +dnl $2 = code to use if AC_ACVERSION is at least as high as $1. +dnl $3 = code to use if AC_ACVERSION is older than $1. +define([CF_ACVERSION_CHECK], +[ +ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl +ifdef([m4_version_compare], +[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], +[CF_ACVERSION_COMPARE( +AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), +AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 +dnl -------------------- +dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, +dnl MAJOR2, MINOR2, TERNARY2, +dnl PRINTABLE2, not FOUND, FOUND) +define([CF_ACVERSION_COMPARE], +[ifelse(builtin([eval], [$2 < $5]), 1, +[ifelse([$8], , ,[$8])], +[ifelse([$9], , ,[$9])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADA_INCLUDE_DIRS version: 8 updated: 2013/10/14 04:24:07 +dnl ------------------- +dnl Construct the list of include-options for the C programs in the Ada95 +dnl binding. +AC_DEFUN([CF_ADA_INCLUDE_DIRS], +[ +ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" +if test "$srcdir" != "."; then + ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" +fi +if test "$GCC" != yes; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" +elif test "$includedir" != "/usr/include"; then + if test "$includedir" = '${prefix}/include' ; then + if test x$prefix != x/usr ; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi + else + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi +fi +AC_SUBST(ACPPFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18 +dnl --------------- +dnl Add to $ADAFLAGS, which is substituted into makefile and scripts. +AC_DEFUN([CF_ADD_ADAFLAGS],[ + ADAFLAGS="$ADAFLAGS $1" + AC_SUBST(ADAFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15 +dnl ------------- +dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS +dnl $1 = flags to add +dnl $2 = if given makes this macro verbose. +dnl +dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, +dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily +dnl confused by the quotes (which require backslashes to keep them usable). +AC_DEFUN([CF_ADD_CFLAGS], +[ +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $1 +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 + CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + CF_APPEND_TEXT(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/=.*//'` + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) + ;; + esac + CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) + ;; + esac + ;; + (*) + CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) + ;; + esac + ;; +(yes) + CF_APPEND_TEXT(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 + ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) + CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) +fi + +if test -n "$cf_new_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) + CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) +fi + +if test -n "$cf_new_extra_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) + CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) +fi + +AC_SUBST(EXTRA_CPPFLAGS) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04 +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, +dnl but old versions (and some misinstalled ones) need that. To make things +dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to +dnl the include-path). +AC_DEFUN([CF_ADD_INCDIR], +[ +if test -n "$1" ; then + for cf_add_incdir in $1 + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir) + AC_TRY_COMPILE([#include ], + [printf("Hello")], + [], + [cf_have_incdir=yes]) + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + CF_VERBOSE(adding $cf_add_incdir to include-path) + ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 +dnl ---------- +dnl Add a library, used to enforce consistency. +dnl +dnl $1 = library to add, without the "-l" +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42 +dnl ------------- +dnl Adds to the library-path +dnl +dnl Some machines have trouble with multiple -L options. +dnl +dnl $1 is the (list of) directory(s) to add +dnl $2 is the optional name of the variable to update (default LDFLAGS) +dnl +AC_DEFUN([CF_ADD_LIBDIR], +[ +if test -n "$1" ; then + for cf_add_libdir in $1 + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + CF_VERBOSE(adding $cf_add_libdir to library-path) + ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])" + fi + fi + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33 +dnl ----------- +dnl Add one or more libraries, used to enforce consistency. Libraries are +dnl prepended to an existing list, since their dependencies are assumed to +dnl already exist in the list. +dnl +dnl $1 = libraries to add, with the "-l", etc. +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIBS],[ +cf_add_libs="[$]ifelse($2,,LIBS,[$2])" +# reverse order +cf_add_0lib= +for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +ifelse($2,,LIBS,[$2])="$cf_add_libs" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42 +dnl ------------------ +dnl Append to a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +dnl $4 = the directory under which we will test for subdirectories +dnl $5 = a directory that we do not want $4 to match +AC_DEFUN([CF_ADD_SUBDIR_PATH], +[ +test "x$4" != "x$5" && \ +test -d "$4" && \ +ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) { + test -n "$verbose" && echo " ... testing for $3-directories under $4" + test -d "$4/$3" && $1="[$]$1 $4/$3" + test -d "$4/$3/$2" && $1="[$]$1 $4/$3/$2" + test -d "$4/$3/$2/$3" && $1="[$]$1 $4/$3/$2/$3" + test -d "$4/$2/$3" && $1="[$]$1 $4/$2/$3" + test -d "$4/$2/$3/$2" && $1="[$]$1 $4/$2/$3/$2" +} +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40 +dnl ---------------- +dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions. +dnl $1 = flags to add +dnl $2 = if given makes this macro verbose. +define([CF_APPEND_CFLAGS], +[ +for cf_add_cflags in $1 +do + case "x$cf_add_cflags" in + (x-[[DU]]*) + CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2]) + CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2]) + ;; + esac + CF_ADD_CFLAGS([$cf_add_cflags],[$2]) +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 +dnl -------------- +dnl use this macro for appending text without introducing an extra blank at +dnl the beginning +define([CF_APPEND_TEXT], +[ + test -n "[$]$1" && $1="[$]$1 " + $1="[$]{$1}$2" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 +dnl -------------- +dnl Allow user to disable a normally-on option. +AC_DEFUN([CF_ARG_DISABLE], +[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 +dnl ------------- +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 ------------- +dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus +dnl values. +dnl +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 $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) + if test "$enableval" != "$5" ; then +ifelse([$3],,[ :]dnl +,[ $3]) ifelse([$4],,,[ + else + $4]) + fi],[enableval=$5 ifelse([$4],,,[ + $4 +])dnl +])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_AR_FLAGS version: 9 updated: 2021/01/01 13:31:04 +dnl ----------- +dnl Check for suitable "ar" (archiver) options for updating an archive. +dnl +dnl In particular, handle some obsolete cases where the "-" might be omitted, +dnl as well as a workaround for breakage of make's archive rules by the GNU +dnl binutils "ar" program. +AC_DEFUN([CF_AR_FLAGS],[ +AC_REQUIRE([CF_PROG_AR]) + +AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ + case "$cf_cv_system_name" in + (*-msvc*) + cf_cv_ar_flags='' + cat >mk_static_lib.sh <<-EOF + #!$SHELL + MSVC_BIN="[$]AR" + out="\[$]1" + shift + exec \[$]MSVC_BIN -out:"\[$]out" \[$]@ + EOF + chmod +x mk_static_lib.sh + AR=`pwd`/mk_static_lib.sh + ;; + (*) + cf_cv_ar_flags=unknown + for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv + do + + # check if $ARFLAGS already contains this choice + if test "x$ARFLAGS" != "x" ; then + cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` + if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then + cf_cv_ar_flags= + break + fi + fi + + rm -f "conftest.$ac_cv_objext" + rm -f conftest.a + + cat >"conftest.$ac_ext" <&AC_FD_CC + $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AC_FD_CC 1>/dev/null + if test -f conftest.a ; then + cf_cv_ar_flags="$cf_ar_flags" + break + fi + else + CF_VERBOSE(cannot compile test-program) + break + fi + done + rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext" + ;; + esac +]) + +if test -n "$ARFLAGS" ; then + if test -n "$cf_cv_ar_flags" ; then + ARFLAGS="$ARFLAGS $cf_cv_ar_flags" + fi +else + ARFLAGS=$cf_cv_ar_flags +fi + +AC_SUBST(ARFLAGS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_BUILD_CC version: 9 updated: 2021/01/02 09:31:20 +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 +dnl compiler, etc., but we need a build compiler to generate parts of the +dnl source. +dnl +dnl $1 = default for $CPPFLAGS +dnl $2 = default for $LIBS +AC_DEFUN([CF_BUILD_CC],[ +CF_ACVERSION_CHECK(2.52,, + [AC_REQUIRE([CF_PROG_EXT])]) +if test "$cross_compiling" = yes ; then + + # defaults that we might want to override + : ${BUILD_CFLAGS:=''} + : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'} + : ${BUILD_LDFLAGS:=''} + : ${BUILD_LIBS:='ifelse([$2],,,[$2])'} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} + + AC_ARG_WITH(build-cc, + [ --with-build-cc=XXX the build C compiler ($BUILD_CC)], + [BUILD_CC="$withval"], + [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)]) + AC_MSG_CHECKING(for native build C compiler) + AC_MSG_RESULT($BUILD_CC) + + AC_MSG_CHECKING(for native build C preprocessor) + AC_ARG_WITH(build-cpp, + [ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)], + [BUILD_CPP="$withval"], + [BUILD_CPP='${BUILD_CC} -E']) + AC_MSG_RESULT($BUILD_CPP) + + AC_MSG_CHECKING(for native build C flags) + AC_ARG_WITH(build-cflags, + [ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)], + [BUILD_CFLAGS="$withval"]) + AC_MSG_RESULT($BUILD_CFLAGS) + + AC_MSG_CHECKING(for native build C preprocessor-flags) + AC_ARG_WITH(build-cppflags, + [ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)], + [BUILD_CPPFLAGS="$withval"]) + AC_MSG_RESULT($BUILD_CPPFLAGS) + + AC_MSG_CHECKING(for native build linker-flags) + AC_ARG_WITH(build-ldflags, + [ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)], + [BUILD_LDFLAGS="$withval"]) + AC_MSG_RESULT($BUILD_LDFLAGS) + + AC_MSG_CHECKING(for native build linker-libraries) + AC_ARG_WITH(build-libs, + [ --with-build-libs=XXX the build libraries (${BUILD_LIBS})], + [BUILD_LIBS="$withval"]) + AC_MSG_RESULT($BUILD_LIBS) + + # this assumes we're on Unix. + BUILD_EXEEXT= + BUILD_OBJEXT=o + + : ${BUILD_CC:='${CC}'} + + if { test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}'; } ; then + AC_MSG_ERROR([Cross-build requires two compilers. +Use --with-build-cc to specify the native compiler.]) + fi + +else + : ${BUILD_CC:='${CC}'} + : ${BUILD_CPP:='${CPP}'} + : ${BUILD_CFLAGS:='${CFLAGS}'} + : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} + : ${BUILD_LDFLAGS:='${LDFLAGS}'} + : ${BUILD_LIBS:='${LIBS}'} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} +fi + +AC_SUBST(BUILD_CC) +AC_SUBST(BUILD_CPP) +AC_SUBST(BUILD_CFLAGS) +AC_SUBST(BUILD_CPPFLAGS) +AC_SUBST(BUILD_LDFLAGS) +AC_SUBST(BUILD_LIBS) +AC_SUBST(BUILD_EXEEXT) +AC_SUBST(BUILD_OBJEXT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23 +dnl --------------- +AC_DEFUN([CF_C11_NORETURN], +[ +AC_MSG_CHECKING(if you want to use C11 _Noreturn feature) +CF_ARG_ENABLE(stdnoreturn, + [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics], + [enable_stdnoreturn=yes], + [enable_stdnoreturn=no]) +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([ +#include +#include +#include +static _Noreturn void giveup(void) { exit(0); } + ], + [if (feof(stdin)) giveup()], + cf_cv_c11_noreturn=yes, + cf_cv_c11_noreturn=no) + ]) +else + cf_cv_c11_noreturn=no, +fi + +if test "$cf_cv_c11_noreturn" = yes; then + AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if header is available and working]) + AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported]) + HAVE_STDNORETURN_H=1 +else + HAVE_STDNORETURN_H=0 +fi + +AC_SUBST(HAVE_STDNORETURN_H) +AC_SUBST(STDC_NORETURN) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20 +dnl --------------- +dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content +dnl into CC. This will not help with broken scripts that wrap the compiler +dnl with options, but eliminates a more common category of user confusion. +dnl +dnl In particular, it addresses the problem of being able to run the C +dnl preprocessor in a consistent manner. +dnl +dnl Caveat: this also disallows blanks in the pathname for the compiler, but +dnl the nuisance of having inconsistent settings for compiler and preprocessor +dnl outweighs that limitation. +AC_DEFUN([CF_CC_ENV_FLAGS], +[ +# This should have been defined by AC_PROG_CC +: "${CC:=cc}" + +AC_MSG_CHECKING(\$CFLAGS variable) +case "x$CFLAGS" in +(*-[[IUD]]*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options) + cf_flags="$CFLAGS" + CFLAGS= + for cf_arg in $cf_flags + do + CF_ADD_CFLAGS($cf_arg) + done + ;; +(*) + AC_MSG_RESULT(ok) + ;; +esac + +AC_MSG_CHECKING(\$CC variable) +case "$CC" in +(*[[\ \ ]]-*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options) + # humor him... + cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[[IUDfgOW]]*) + CF_ADD_CFLAGS($cf_arg) + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + CF_VERBOSE(resulting CC: '$CC') + CF_VERBOSE(resulting CFLAGS: '$CFLAGS') + CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') + ;; +(*) + AC_MSG_RESULT(ok) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CFG_DEFAULTS version: 16 updated: 2021/01/04 19:33:05 +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 +dnl look for: +dnl 1. the prefix (e.g., /usr) +dnl 2. the header files (e.g., /usr/include/ncurses) +dnl We'll look for a previous installation of ncurses and use the same defaults. +dnl +dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and +dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's +dnl programs from a vendor's. +AC_DEFUN([CF_CFG_DEFAULTS], +[AC_REQUIRE([AC_PROG_FGREP])dnl + +AC_MSG_CHECKING(for prefix) +if test "x$prefix" = "xNONE" ; then + case "$cf_cv_system_name" in + # non-vendor systems don't have a conflict + (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*) + prefix=/usr + ;; + (*) prefix=$ac_default_prefix + ;; + esac +fi +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 +for cf_symbol in \ + "$includedir" \ + "$includedir/ncurses" \ + "$prefix/include" \ + "$prefix/include/ncurses" \ + /usr/local/include \ + /usr/local/include/ncurses \ + /usr/include \ + /usr/include/ncurses +do + cf_dir=`eval echo "$cf_symbol"` + 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 + break + fi + fi + test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG +done +AC_MSG_RESULT($includedir) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15 +dnl -------------- +dnl Check if we're accidentally using a cache from a different machine. +dnl Derive the system name, as a check for reusing the autoconf cache. +dnl +dnl If we've packaged config.guess and config.sub, run that (since it does a +dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow +dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM +dnl which is useful in cross-compiles. +dnl +dnl Note: we would use $ac_config_sub, but that is one of the places where +dnl autoconf 2.5x broke compatibility with autoconf 2.13 +AC_DEFUN([CF_CHECK_CACHE], +[ +if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then + ifelse([$1],,[AC_CANONICAL_HOST],[$1]) + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) +AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) + +if test ".$system_name" != ".$cf_cv_system_name" ; then + AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) + AC_MSG_ERROR("Please remove config.cache and try again.") +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_GNAT_VERSION version: 4 updated: 2021/01/01 13:31:04 +dnl --------------------- +AC_DEFUN([CF_CHECK_GNAT_VERSION], +[ +AC_REQUIRE([CF_GNAT_VERSION]) +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 + ;; +(*) + AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.) + cf_cv_prog_gnat_correct=no + ;; +esac +]) +dnl --------------------------------------------------------------------------- +dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04 +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 +dnl not ignore some gcc options. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = CLANG_COMPILER (default) +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_CLANG_COMPILER],[ +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([],[ +#ifdef __clang__ +#else +make an error +#endif +],[ifelse([$2],,CLANG_COMPILER,[$2])=yes +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) +fi + +CLANG_VERSION=none + +if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then + case "$CC" in + (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]]) + AC_MSG_WARN(replacing broken compiler alias $CC) + CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" + CC=clang + ;; + esac + + AC_MSG_CHECKING(version of $CC) + 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 + AC_MSG_RESULT($CLANG_VERSION) + + for cf_clang_opt in \ + -Qunused-arguments \ + -Wno-error=implicit-function-declaration + do + AC_MSG_CHECKING(if option $cf_clang_opt works) + cf_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $cf_clang_opt" + AC_TRY_LINK([ + #include ],[ + printf("hello!\\n");],[ + cf_clang_optok=yes],[ + cf_clang_optok=no]) + AC_MSG_RESULT($cf_clang_optok) + CFLAGS="$cf_save_CFLAGS" + if test "$cf_clang_optok" = yes; then + CF_VERBOSE(adding option $cf_clang_opt) + CF_APPEND_TEXT(CFLAGS,$cf_clang_opt) + fi + done +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17 +dnl ----------------- +dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most +dnl character-strings. +dnl +dnl It is ambiguous because the specification accommodated the pre-ANSI +dnl compilers bundled by more than one vendor in lieu of providing a standard C +dnl compiler other than by costly add-ons. Because of this, the specification +dnl did not take into account the use of const for telling the compiler that +dnl string literals would be in readonly memory. +dnl +dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to +dnl let the compiler decide how to represent Xt's strings which were #define'd. +dnl That does not solve the problem of using the block of Xt's strings which +dnl are compiled into the library (and is less efficient than one might want). +dnl +dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both +dnl when compiling the library and compiling using the library, to tell the +dnl compiler that String is const. +AC_DEFUN([CF_CONST_X_STRING], +[ +AC_REQUIRE([AC_PATH_XTRA]) + +CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) + +AC_TRY_COMPILE( +[ +#include +#include +], +[String foo = malloc(1); free((void*)foo)],[ + +AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ + AC_TRY_COMPILE( + [ +#define _CONST_X_STRING /* X11R7.8 (perhaps) */ +#undef XTSTRINGDEFINES /* X11R5 and later */ +#include +#include + ],[String foo = malloc(1); *foo = 0],[ + cf_cv_const_x_string=no + ],[ + cf_cv_const_x_string=yes + ]) +]) + +CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) + +case "$cf_cv_const_x_string" in +(no) + CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) + ;; +(*) + CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) + ;; +esac + +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17 +dnl ----------------- +dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most +dnl character-strings. +dnl +dnl It is ambiguous because the specification accommodated the pre-ANSI +dnl compilers bundled by more than one vendor in lieu of providing a standard C +dnl compiler other than by costly add-ons. Because of this, the specification +dnl did not take into account the use of const for telling the compiler that +dnl string literals would be in readonly memory. +dnl +dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to +dnl let the compiler decide how to represent Xt's strings which were #define'd. +dnl That does not solve the problem of using the block of Xt's strings which +dnl are compiled into the library (and is less efficient than one might want). +dnl +dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both +dnl when compiling the library and compiling using the library, to tell the +dnl compiler that String is const. +AC_DEFUN([CF_CONST_X_STRING], +[ +AC_REQUIRE([AC_PATH_XTRA]) + +CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) + +AC_TRY_COMPILE( +[ +#include +#include +], +[String foo = malloc(1); free((void*)foo)],[ + +AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ + AC_TRY_COMPILE( + [ +#define _CONST_X_STRING /* X11R7.8 (perhaps) */ +#undef XTSTRINGDEFINES /* X11R5 and later */ +#include +#include + ],[String foo = malloc(1); *foo = 0],[ + cf_cv_const_x_string=no + ],[ + cf_cv_const_x_string=yes + ]) +]) + +CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) + +case "$cf_cv_const_x_string" in +(no) + CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) + ;; +(*) + CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) + ;; +esac + +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30 +dnl ---------------- +dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common +dnl variations of ncurses' installs. +dnl +dnl $1 = ncurses when looking for ncurses, or is empty +AC_DEFUN([CF_CURSES_HEADER],[ +AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[ +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h ifelse($1,,,[$1/ncurses.h]) \ + curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h]) +do +AC_TRY_COMPILE([#include <${cf_header}>], + [initscr(); tgoto("?", 0,0)], + [cf_cv_ncurses_header=$cf_header; break],[]) +done +]) + +if test "$cf_cv_ncurses_header" = none ; then + AC_MSG_ERROR(No curses header-files found) +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. +AC_CHECK_HEADERS($cf_cv_ncurses_header) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42 +dnl ---------- +dnl "dirname" is not portable, so we fake it with a shell script. +AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04 +dnl --------------- +dnl You can always use "make -n" to see the actual options, but it is hard to +dnl pick out/analyze warning messages when the compile-line is long. +dnl +dnl Sets: +dnl ECHO_LT - symbol to control if libtool is verbose +dnl ECHO_LD - symbol to prefix "cc -o" lines +dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) +dnl SHOW_CC - symbol to put before explicit "cc -c" lines +dnl ECHO_CC - symbol to put before any "cc" line +dnl +AC_DEFUN([CF_DISABLE_ECHO],[ +AC_MSG_CHECKING(if you want to see long compiling messages) +CF_ARG_DISABLE(echo, + [ --disable-echo do not display "compiling" commands], + [ + ECHO_LT='--silent' + ECHO_LD='@echo linking [$]@;' + RULE_CC='@echo compiling [$]<' + SHOW_CC='@echo compiling [$]@' + ECHO_CC='@' +],[ + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' +]) +AC_MSG_RESULT($enableval) +AC_SUBST(ECHO_LT) +AC_SUBST(ECHO_LD) +AC_SUBST(RULE_CC) +AC_SUBST(SHOW_CC) +AC_SUBST(ECHO_CC) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00 +dnl ------------------------ +AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[ +AC_MSG_CHECKING(if we want to use GNAT projects) +CF_ARG_DISABLE(gnat-projects, + [ --disable-gnat-projects test: disable GNAT projects even if usable], + [enable_gnat_projects=no], + [enable_gnat_projects=yes]) +AC_MSG_RESULT($enable_gnat_projects) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_BROKEN_LINKER version: 2 updated: 2021/01/02 17:09:14 +dnl ----------------------- +dnl Some linkers cannot reference a data-only object. Cygwin used to be one. +dnl This usually follows CF_LINK_DATAONLY, but is not required in case we need +dnl an unconditional feature. +AC_DEFUN([CF_ENABLE_BROKEN_LINKER],[ + +AC_MSG_CHECKING(if you want broken-linker support code) +AC_ARG_ENABLE(broken_linker, + [ --enable-broken_linker compile with broken-linker support code], + [with_broken_linker=$enableval], + [with_broken_linker=no]) +AC_MSG_RESULT($with_broken_linker) + +: "${BROKEN_LINKER:=0}" +if test "x$with_broken_linker" = xyes ; then + AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules]) + BROKEN_LINKER=1 +fi +AC_SUBST(BROKEN_LINKER) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50 +dnl ------------------ +dnl Configure-option to enable gcc warnings +dnl +dnl $1 = extra options to add, if supported +dnl $2 = option for checking attributes. By default, this is done when +dnl warnings are enabled. For other values: +dnl yes: always do this, e.g., to use in generated library-headers +dnl no: never do this +AC_DEFUN([CF_ENABLE_WARNINGS],[ +if test "$GCC" = yes || test "$GXX" = yes +then +CF_FIX_WARNINGS(CFLAGS) +CF_FIX_WARNINGS(CPPFLAGS) +CF_FIX_WARNINGS(LDFLAGS) +AC_MSG_CHECKING(if you want to turn on gcc warnings) +CF_ARG_ENABLE(warnings, + [ --enable-warnings test: turn on gcc compiler warnings], + [enable_warnings=yes], + [enable_warnings=no]) +AC_MSG_RESULT($enable_warnings) +if test "$enable_warnings" = "yes" +then + ifelse($2,,[CF_GCC_ATTRIBUTES]) + CF_GCC_WARNINGS($1) +fi +ifelse($2,yes,[CF_GCC_ATTRIBUTES]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_LIBRARY version: 11 updated: 2021/01/02 09:31:20 +dnl --------------- +dnl Look for a non-standard library, given parameters for AC_TRY_LINK. We +dnl prefer a standard location, and use -L options only if we do not find the +dnl library in the standard library location(s). +dnl $1 = library name +dnl $2 = library class, usually the same as library name +dnl $3 = includes +dnl $4 = code fragment to compile/link +dnl $5 = corresponding function-name +dnl $6 = flag, nonnull if failure should not cause an error-exit +dnl +dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had +dnl to use a -L option. +AC_DEFUN([CF_FIND_LIBRARY], +[ + eval 'cf_cv_have_lib_'"$1"'=no' + cf_libdir="" + AC_CHECK_FUNC($5, + eval 'cf_cv_have_lib_'"$1"'=yes',[ + cf_save_LIBS="$LIBS" + AC_MSG_CHECKING(for $5 in -l$1) + LIBS="-l$1 $LIBS" + AC_TRY_LINK([$3],[$4], + [AC_MSG_RESULT(yes) + eval 'cf_cv_have_lib_'"$1"'=yes' + ], + [AC_MSG_RESULT(no) + CF_LIBRARY_PATH(cf_search,$2) + for cf_libdir in $cf_search + do + AC_MSG_CHECKING(for -l$1 in $cf_libdir) + LIBS="-L$cf_libdir -l$1 $cf_save_LIBS" + AC_TRY_LINK([$3],[$4], + [AC_MSG_RESULT(yes) + eval 'cf_cv_have_lib_'"$1"'=yes' + break], + [AC_MSG_RESULT(no) + LIBS="$cf_save_LIBS"]) + done + ]) + ]) +eval 'cf_found_library="[$]cf_cv_have_lib_'"$1"\" +ifelse($6,,[ +if test "$cf_found_library" = no ; then + AC_MSG_ERROR(Cannot link $1 library) +fi +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42 +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. +dnl See also CF_ADD_SEARCHPATH. +dnl +dnl Parameters (4-on are optional): +dnl $1 = headers for library entrypoint +dnl $2 = code fragment for library entrypoint +dnl $3 = the library name without the "-l" option or ".so" suffix. +dnl $4 = action to perform if successful (default: update CPPFLAGS, etc) +dnl $5 = action to perform if not successful +dnl $6 = module name, if not the same as the library name +dnl $7 = extra libraries +dnl +dnl Sets these variables: +dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found +dnl $cf_cv_header_path_$3 - include-directory if needed +dnl $cf_cv_library_path_$3 - library-directory if needed +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. +cf_cv_header_path_$3= +cf_cv_library_path_$3= + +CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) + +cf_save_LIBS="$LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib +],[ + +LIBS="-l$3 $7 $cf_save_LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib + cf_cv_library_file_$3="-l$3" +],[ + cf_cv_find_linkage_$3=no + LIBS="$cf_save_LIBS" + + CF_VERBOSE(find linkage for $3 library) + CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)]) + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + + CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6])) + for cf_cv_header_path_$3 in $cf_search + do + if test -d "$cf_cv_header_path_$3" ; then + 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],[ + CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) + cf_cv_find_linkage_$3=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + ]) + fi + done + + if test "$cf_cv_find_linkage_$3" = maybe ; then + + CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)]) + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + ifelse([$6],,,[ + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-l$3 $7 $cf_save_LIBS" + AC_TRY_LINK([$1],[$2],[ + CF_VERBOSE(... found $3 library in system) + cf_cv_find_linkage_$3=yes]) + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + ]) + + if test "$cf_cv_find_linkage_$3" != yes ; then + CF_LIBRARY_PATH(cf_search,$3) + for cf_cv_library_path_$3 in $cf_search + do + if test -d "$cf_cv_library_path_$3" ; then + CF_VERBOSE(... testing $cf_cv_library_path_$3) + 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],[ + CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) + cf_cv_find_linkage_$3=yes + cf_cv_library_file_$3="-l$3" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + ]) + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_$3=no + fi + ],$7) +]) + +LIBS="$cf_save_LIBS" + +if test "$cf_cv_find_linkage_$3" = yes ; then +ifelse([$4],,[ + CF_ADD_INCDIR($cf_cv_header_path_$3) + CF_ADD_LIBDIR($cf_cv_library_path_$3) + CF_ADD_LIB($3) +],[$4]) +else +ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04 +dnl ----------------- +dnl make ADAFLAGS consistent with CFLAGS +AC_DEFUN([CF_FIXUP_ADAFLAGS],[ + AC_MSG_CHECKING(optimization options for ADAFLAGS) + case "$CFLAGS" in + (*-g*) + CF_ADD_ADAFLAGS(-g) + ;; + esac + case "$CFLAGS" in + (*-O*) + cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[ ]].*//'` + CF_ADD_ADAFLAGS($cf_O_flag) + ;; + esac + AC_MSG_RESULT($ADAFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20 +dnl --------------- +dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's +dnl "-Werror" flags can interfere with configure-checks. Those go into +dnl EXTRA_CFLAGS. +dnl +dnl $1 = variable name to repair +define([CF_FIX_WARNINGS],[ +if test "$GCC" = yes || test "$GXX" = yes +then + case [$]$1 in + (*-Werror=*) + CF_VERBOSE(repairing $1: [$]$1) + cf_temp_flags= + for cf_temp_scan in [$]$1 + do + case "x$cf_temp_scan" in + (x-Werror=*) + CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) + ;; + (*) + CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) + ;; + esac + done + $1="$cf_temp_flags" + CF_VERBOSE(... fixed [$]$1) + CF_VERBOSE(... extra $EXTRA_CFLAGS) + ;; + esac +fi +AC_SUBST(EXTRA_CFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 +dnl ----------------- +dnl Test for availability of useful gcc __attribute__ directives to quiet +dnl compiler warnings. Though useful, not all are supported -- and contrary +dnl to documentation, unrecognized directives cause older compilers to barf. +AC_DEFUN([CF_GCC_ATTRIBUTES], +[AC_REQUIRE([AC_PROG_FGREP])dnl +AC_REQUIRE([CF_C11_NORETURN])dnl + +if test "$GCC" = yes || test "$GXX" = yes +then +cat > conftest.i < "conftest.$ac_ext" <&AC_FD_CC + + case "$cf_attribute" in + (printf) + cf_printf_attribute=yes + cat >conftest.h <conftest.h <conftest.h <>confdefs.h + case "$cf_attribute" in + (noreturn) + AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) + ;; + (printf) + cf_value='/* nothing */' + if test "$cf_printf_attribute" != no ; then + cf_value='__attribute__((format(printf,fmt,var)))' + AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) + ;; + (scanf) + cf_value='/* nothing */' + if test "$cf_scanf_attribute" != no ; then + cf_value='__attribute__((format(scanf,fmt,var)))' + AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) + ;; + (unused) + AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) + ;; + esac + fi + done +else + ${FGREP-fgrep} define conftest.i >>confdefs.h +fi +rm -rf ./conftest* +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36 +dnl -------------- +dnl Find version of gcc, and (because icc/clang pretend to be gcc without being +dnl compatible), attempt to determine if icc/clang is actually used. +AC_DEFUN([CF_GCC_VERSION],[ +AC_REQUIRE([AC_PROG_CC]) +GCC_VERSION=none +if test "$GCC" = yes ; then + AC_MSG_CHECKING(version of $CC) + GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + AC_MSG_RESULT($GCC_VERSION) +fi +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 --------------- +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: +dnl +dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) +dnl -Winline (usually not worthwhile) +dnl -Wredundant-decls (system headers make this too noisy) +dnl -Wtraditional (combines too many unrelated messages, only a few useful) +dnl -Wwrite-strings (too noisy, but should review occasionally). This +dnl is enabled for ncurses using "--enable-const". +dnl -pedantic +dnl +dnl Parameter: +dnl $1 is an optional list of gcc warning flags that a particular +dnl application might want to use, e.g., "no-unused" for +dnl -Wno-unused +dnl Special: +dnl If $with_ext_const is "yes", add a check for -Wwrite-strings +dnl +AC_DEFUN([CF_GCC_WARNINGS], +[ +AC_REQUIRE([CF_GCC_VERSION]) +if test "x$have_x" = xyes; then CF_CONST_X_STRING fi +cat > "conftest.$ac_ext" </dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes +]) +test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS" +AC_SUBST(GNATPREP_OPTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_GENERICS version: 7 updated: 2021/01/01 13:31:04 +dnl ---------------- +AC_DEFUN([CF_GNAT_GENERICS], +[ +AC_REQUIRE([CF_GNAT_VERSION]) + +AC_MSG_CHECKING(if GNAT supports generics) +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_gnat_generics=yes + ;; +(*) + cf_gnat_generics=no + ;; +esac +AC_MSG_RESULT($cf_gnat_generics) + +if test "$cf_gnat_generics" = yes +then + cf_compile_generics=generics + cf_generic_objects="\${GENOBJS}" +else + cf_compile_generics= + cf_generic_objects= +fi + +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 ---------------- +dnl GNAT projects are configured with ".gpr" project files. +dnl GNAT libraries are a further development, using the project feature. +AC_DEFUN([CF_GNAT_PROJECTS], +[ +AC_REQUIRE([CF_GNAT_VERSION]) +AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS]) + +cf_gnat_libraries=no +cf_gnat_projects=no + +if test "$enable_gnat_projects" != no ; then +AC_MSG_CHECKING(if GNAT supports project files) +case "$cf_cv_gnat_version" in +(3.[[0-9]]*) + ;; +(*) + case "$cf_cv_system_name" in + (cygwin*|msys*) + ;; + (*) + rm -rf ./conftest* ./*~conftest* + if mkdir conftest.src conftest.bin conftest.lib + then + cd conftest.src + rm -rf ./conftest* ./*~conftest* + cat >>library.gpr <>confpackage.ads <>confpackage.adb <&AC_FD_CC 2>&1 ) ; then + cf_gnat_projects=yes + fi + cd .. + fi + if test -f conftest.lib/confpackage.ali + then + cf_gnat_libraries=yes + fi + rm -rf ./conftest* ./*~conftest* + ;; + esac + ;; +esac +AC_MSG_RESULT($cf_gnat_projects) +fi # enable_gnat_projects + +if test "$cf_gnat_projects" = yes +then + AC_MSG_CHECKING(if GNAT supports libraries) + AC_MSG_RESULT($cf_gnat_libraries) +fi + +USE_OLD_MAKERULES="" +USE_GNAT_PROJECTS="#" +USE_GNAT_MAKE_GPR="#" +USE_GNAT_GPRBUILD="#" + +if test "$cf_gnat_projects" = yes +then + USE_OLD_MAKERULES="#" + USE_GNAT_PROJECTS="" + if test "$cf_cv_VERSION_GPRBUILD" != no + then + USE_GNAT_GPRBUILD="" + elif test "$cf_cv_VERSION_GNATMAKE" != no + then + USE_GNAT_MAKE_GPR="" + else + AC_MSG_WARN(use old makefile rules since tools are missing) + fi +fi + +if test "$cf_gnat_libraries" = yes +then + USE_GNAT_LIBRARIES="" +else + USE_GNAT_LIBRARIES="#" +fi + +AC_SUBST(USE_OLD_MAKERULES) +AC_SUBST(USE_GNAT_PROJECTS) +AC_SUBST(USE_GNAT_LIBRARIES) +AC_SUBST(USE_GNAT_MAKE_GPR) +AC_SUBST(USE_GNAT_GPRBUILD) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_SIGINT version: 2 updated: 2021/01/01 13:31:04 +dnl -------------- +dnl Check if gnat supports SIGINT, and presumably tasking. For the latter, it +dnl is noted that gnat may compile a tasking unit even for configurations which +dnl fail at runtime. +AC_DEFUN([CF_GNAT_SIGINT],[ +AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[ +CF_GNAT_TRY_LINK([with Ada.Interrupts.Names; + +package ConfTest is + + pragma Warnings (Off); -- the next pragma exists since 3.11p + pragma Unreserve_All_Interrupts; + pragma Warnings (On); + + protected Process is + procedure Stop; + function Continue return Boolean; + pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT); + private + Done : Boolean := False; + end Process; + +end ConfTest;], +[package body ConfTest is + protected body Process is + procedure Stop is + begin + Done := True; + end Stop; + function Continue return Boolean is + begin + return not Done; + end Continue; + end Process; +end ConfTest;], + [cf_cv_gnat_sigint=yes], + [cf_cv_gnat_sigint=no])]) + +if test "$cf_cv_gnat_sigint" = yes ; then + USE_GNAT_SIGINT="" +else + USE_GNAT_SIGINT="#" +fi +AC_SUBST(USE_GNAT_SIGINT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04 +dnl ---------------- +dnl Verify that a test program compiles/links with GNAT. +dnl $cf_ada_make is set to the program that compiles/links +dnl $ADAFLAGS may be set to the GNAT flags. +dnl +dnl $1 is the text of the spec +dnl $2 is the text of the body +dnl $3 is the shell command to execute if successful +dnl $4 is the shell command to execute if not successful +AC_DEFUN([CF_GNAT_TRY_LINK], +[ +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then +ifelse($3,, :,[ $3]) +ifelse($4,,,[else + $4]) +fi +rm -rf ./conftest* ./*~conftest* +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Verify that a test program compiles and runs with GNAT +dnl $cf_ada_make is set to the program that compiles/links +dnl $ADAFLAGS may be set to the GNAT flags. +dnl +dnl $1 is the text of the spec +dnl $2 is the text of the body +dnl $3 is the shell command to execute if successful +dnl $4 is the shell command to execute if not successful +AC_DEFUN([CF_GNAT_TRY_RUN], +[ +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then + if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then +ifelse($3,, :,[ $3]) +ifelse($4,,,[ else + $4]) + fi +ifelse($4,,,[else + $4]) +fi +rm -rf ./conftest* ./*~conftest* +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54 +dnl --------------- +dnl $1 = cache variable to update +dnl $2 = program name +dnl Verify version of GNAT or related tool +AC_DEFUN([CF_GNAT_VERSION], +[ +AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[ +cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \ + grep '[[0-9]].[[0-9]][[0-9]]*' |\ + sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'` +]) +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 ------------- +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 +dnl (or misfeature) of glibc2, which breaks portability of many applications, +dnl since it is interwoven with GNU extensions. +dnl +dnl Well, yes we could work around it... +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +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 ],[ + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif], + [cf_cv_gnu_library=yes], + [cf_cv_gnu_library=no]) +]) + +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. + 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 ],[ + #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], + [cf_cv_gnu_library_219=yes], + [cf_cv_gnu_library_219=no]) + CPPFLAGS="$cf_save" + ]) + + if test "x$cf_cv_gnu_library_219" = 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([ + #include + #include + ],[ + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif], + [cf_cv_gnu_dftsrc_219=yes], + [cf_cv_gnu_dftsrc_219=no]) + ]) + test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" + else + cf_cv_gnu_dftsrc_219=maybe + fi + + 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 ],[ + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif], + [cf_cv_gnu_source=no], + [cf_save="$CPPFLAGS" + CF_ADD_CFLAGS(-D_GNU_SOURCE) + AC_TRY_COMPILE([#include ],[ + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif], + [cf_cv_gnu_source=no], + [cf_cv_gnu_source=yes]) + CPPFLAGS="$cf_save" + ]) + ]) + + if test "$cf_cv_gnu_source" = yes + 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 ],[ + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif], + [cf_cv_default_source=no], + [cf_cv_default_source=yes]) + ]) + if test "$cf_cv_default_source" = yes + then + CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) + fi + fi + fi + +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04 +dnl -------------- +dnl Construct a search-list of directories for a nonstandard header-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_HEADER_PATH], +[ +$1= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE) + cf_header_path_list="$cf_header_path_list [$]$1" + ;; + esac + done +fi + +# add the variations for the package we are looking for +CF_SUBDIR_PATH($1,$2,include) + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && $1="[$]$1 $includedir" + test -d "$includedir/$2" && $1="[$]$1 $includedir/$2" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && $1="[$]$1 $oldincludedir" + test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2" +} + +$1="[$]$1 $cf_header_path_list" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54 +dnl --------------- +dnl Insert text into the help-message, for readability, from AC_ARG_WITH. +AC_DEFUN([CF_HELP_MESSAGE], +[CF_ACVERSION_CHECK(2.53,[],[ +AC_DIVERT_HELP($1)])dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42 +dnl --------------- +dnl Construct the list of include-options according to whether we're building +dnl in the source directory or using '--srcdir=DIR' option. +AC_DEFUN([CF_INCLUDE_DIRS], +[ +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS" +fi +CPPFLAGS="-I../include $CPPFLAGS" +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir} $CPPFLAGS" +fi +CPPFLAGS="-I. $CPPFLAGS" +AC_SUBST(CPPFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21 +dnl --------------- +dnl prompt for/fill-in useful install-program options +AC_DEFUN([CF_INSTALL_OPTS], +[ +CF_INSTALL_OPT_S +CF_INSTALL_OPT_P +CF_INSTALL_OPT_O +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42 +dnl ---------------- +dnl Almost all "install" programs default to the current user's ownership. +dnl Almost - MINIX is an exception. +AC_DEFUN([CF_INSTALL_OPT_O], +[ +AC_MSG_CHECKING(if install needs to be told about ownership) +case `$ac_config_guess` in +(*minix) + with_install_o=yes + ;; +(*) + with_install_o=no + ;; +esac + +AC_MSG_RESULT($with_install_o) +if test "x$with_install_o" = xyes +then + INSTALL_OPT_O="`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`" +else + INSTALL_OPT_O= +fi + +AC_SUBST(INSTALL_OPT_O) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04 +dnl ---------------- +dnl Some install-programs accept a "-p" option to preserve file modification +dnl timestamps. That can be useful as an install option, as well as a way to +dnl avoid the need for ranlib after copying a static archive. +AC_DEFUN([CF_INSTALL_OPT_P], +[ +: "${INSTALL:=install}" +AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[ + rm -rf ./conftest* + date >conftest.in + mkdir conftest.out + sleep 3 + if $INSTALL -p conftest.in conftest.out 2>/dev/null + then + if test -f conftest.out/conftest.in + then + test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \ + test conftest.out/conftest.in -nt conftest.in 2>conftest.err + if test -s conftest.err + then + cf_cv_install_p=no + else + cf_cv_install_p=yes + fi + else + cf_cv_install_p=no + fi + else + cf_cv_install_p=no + fi + rm -rf ./conftest* +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48 +dnl ---------------- +dnl By default, we should strip executables which are installed, but leave the +dnl ability to suppress that for unit-testing. +AC_DEFUN([CF_INSTALL_OPT_S], +[ +AC_MSG_CHECKING(if you want to install stripped executables) +CF_ARG_DISABLE(stripping, + [ --disable-stripping do not strip (debug info) installed executables], + [enable_stripping=no], + [enable_stripping=yes]) +AC_MSG_RESULT($enable_stripping) + +if test "$enable_stripping" = yes +then + INSTALL_OPT_S="-s" +else + INSTALL_OPT_S= +fi +AC_SUBST(INSTALL_OPT_S) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59 +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 +dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_INTEL_COMPILER],[ +AC_REQUIRE([AC_CANONICAL_HOST]) +ifelse([$2],,INTEL_COMPILER,[$2])=no + +if test "$ifelse([$1],,[$1],GCC)" = yes ; then + case "$host_os" in + (linux*|gnu*) + 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([],[ +#ifdef __INTEL_COMPILER +#else +make an error +#endif +],[ifelse([$2],,INTEL_COMPILER,[$2])=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LARGEFILE version: 12 updated: 2020/03/19 20:23:48 +dnl ------------ +dnl Add checks for large file support. +AC_DEFUN([CF_LARGEFILE],[ +ifdef([AC_FUNC_FSEEKO],[ + AC_SYS_LARGEFILE + if test "$enable_largefile" != no ; then + AC_FUNC_FSEEKO + + # Normally we would collect these definitions in the config.h, + # but (like _XOPEN_SOURCE), some environments rely on having these + # defined before any of the system headers are included. Another + # case comes up with C++, e.g., on AIX the compiler compiles the + # header files by themselves before looking at the body files it is + # told to compile. For ncurses, those header files do not include + # the config.h + if test "$ac_cv_sys_large_files" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES) + fi + if test "$ac_cv_sys_largefile_source" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE) + fi + if test "$ac_cv_sys_file_offset_bits" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits) + fi + + AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[ + AC_TRY_COMPILE([ +#pragma GCC diagnostic error "-Wincompatible-pointer-types" +#include +#include + ],[ + /* if transitional largefile support is setup, this is true */ + extern struct dirent64 * readdir(DIR *); + struct dirent64 *x = readdir((DIR *)0); + struct dirent *y = readdir((DIR *)0); + int z = x - y; + (void)z; + ], + [cf_cv_struct_dirent64=yes], + [cf_cv_struct_dirent64=no]) + ]) + test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64]) + fi +]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl For the given system and compiler, find the compiler flags to pass to the +dnl loader to use the "rpath" feature. +AC_DEFUN([CF_LD_RPATH_OPT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) + +LD_RPATH_OPT= +if test "x$cf_cv_enable_rpath" != xno +then + AC_MSG_CHECKING(for an rpath option) + case "$cf_cv_system_name" in + (irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; + (linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (openbsd[[2-9]].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (dragonfly*) + LD_RPATH_OPT="-rpath " + ;; + (netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; + (solaris2*) + LD_RPATH_OPT="-R" + ;; + (*) + ;; + esac + AC_MSG_RESULT($LD_RPATH_OPT) + + case "x$LD_RPATH_OPT" in + (x-R*) + 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) + LIBS="$cf_save_LIBS" + AC_MSG_RESULT($cf_rpath_space) + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Construct a search-list of directories for a nonstandard library-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_LIBRARY_PATH], +[ +$1= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE) + cf_library_path_list="$cf_library_path_list [$]$1" + ;; + esac + done +fi + +CF_SUBDIR_PATH($1,$2,lib) + +$1="$cf_library_path_list [$]$1" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_PREFIX version: 14 updated: 2021/01/01 13:31:04 +dnl ------------- +dnl Compute the library-prefix for the given host system +dnl $1 = variable to set +define([CF_LIB_PREFIX], +[ + case "$cf_cv_system_name" in + (OS/2*|os2*) + if test "$DFT_LWR_MODEL" = libtool; then + LIB_PREFIX='lib' + else + LIB_PREFIX='' + fi + ;; + (*-msvc*) + LIB_PREFIX='' + ;; + (*) LIB_PREFIX='lib' + ;; + esac +ifelse($1,,,[$1=$LIB_PREFIX]) + AC_SUBST(LIB_PREFIX) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_SUFFIX version: 28 updated: 2021/01/01 16:53:59 +dnl ------------- +dnl Compute the library file-suffix from the given model name +dnl $1 = model name +dnl $2 = variable to set (the nominal library suffix) +dnl $3 = dependency variable to set (actual filename) +dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. +AC_DEFUN([CF_LIB_SUFFIX], +[ + case X$1 in + (Xlibtool) + $2='.la' + $3=[$]$2 + ;; + (Xdebug) + case "$cf_cv_system_name" in + (*-msvc*) + $2='_g.lib' + ;; + (*) + $2='_g.a' + ;; + esac + $3=[$]$2 + ;; + (Xprofile) + case "$cf_cv_system_name" in + (*-msvc*) + $2='_p.lib' + ;; + (*) + $2='_p.a' + ;; + esac + $3=[$]$2 + ;; + (Xshared) + case "$cf_cv_system_name" in + (aix[[5-7]]*) + $2='.so' + $3=[$]$2 + ;; + (*-msvc*) + $2='.dll' + $3='.dll.lib' + ;; + (cygwin*|msys*|mingw*) + $2='.dll' + $3='.dll.a' + ;; + (darwin*) + $2='.dylib' + $3=[$]$2 + ;; + (hpux*) + case "$target" in + (ia64*) + $2='.so' + $3=[$]$2 + ;; + (*) + $2='.sl' + $3=[$]$2 + ;; + esac + ;; + (*) + $2='.so' + $3=[$]$2 + ;; + esac + ;; + (*) + case "$target" in + (*-msvc*) + $2='.lib' + ;; + (*) + $2='.a' + ;; + esac + $3=[$]$2 + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}" + $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}" + fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04 +dnl ----------- +dnl Compute the string to append to -library from the given model name +dnl $1 = model name +dnl $2 = variable to set +dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. +AC_DEFUN([CF_LIB_TYPE], +[ + case $1 in + (libtool) $2='' ;; + (normal) $2='' ;; + (debug) $2='_g' ;; + (profile) $2='_p' ;; + (shared) $2='' ;; + esac + test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LINK_DATAONLY version: 13 updated: 2020/02/08 15:59:30 +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 +dnl have to provide wrappers for global tables to ensure they're linked +dnl properly. +AC_DEFUN([CF_LINK_DATAONLY], +[ +AC_MSG_CHECKING([if data-only library module links]) +AC_CACHE_VAL(cf_cv_link_dataonly,[ + rm -f conftest.a + cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null + fi + rm -f conftest.$ac_ext data.o + cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null + fi + rm -f conftest.$ac_ext func.o + ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null + cf_saveLIBS="$LIBS" + LIBS="conftest.a $LIBS" + AC_TRY_RUN([ + int main(void) + { + extern int testfunc(); + ${cf_cv_main_return:-return} (!testfunc()); + } + ], + [cf_cv_link_dataonly=yes], + [cf_cv_link_dataonly=no], + [cf_cv_link_dataonly=unknown]) + LIBS="$cf_saveLIBS" + ]) +AC_MSG_RESULT($cf_cv_link_dataonly) + +if test "$cf_cv_link_dataonly" = no ; then + AC_DEFINE(BROKEN_LINKER,1,[if data-only library module does not link]) + BROKEN_LINKER=1 +fi +AC_SUBST(BROKEN_LINKER) + +])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 </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 ------------- +dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which +dnl acts as a placeholder. +dnl +dnl The ".PHONY" feature was proposed in 2011 here +dnl https://www.austingroupbugs.net/view.php?id=523 +dnl and is scheduled for release in P1003.1 Issue 8 (late 2022). +dnl +dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with +dnl a few others (i.e., GNU make and the non-POSIX "BSD" make): +dnl +dnl + This is a GNU make feature (since April 1988, but in turn from binutils, +dnl date unspecified). +dnl +dnl + It was adopted in NetBSD make in June 1995. +dnl +dnl + The other BSD make programs are derived from the NetBSD make (and for +dnl that reason are not actually different "implementations"). +dnl +dnl + Some features of NetBSD make were actually adapted from pmake, which +dnl began as a modified GNU make starting in 1993. +dnl +dnl + Version 3.8 of the dmake program in January 1992 also implemented this +dnl GNU make extension, but is less well known than the BSD make. +AC_DEFUN([CF_MAKE_PHONY],[ +AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[ + rm -rf conftest* + ( + mkdir conftest || exit 1 + cd conftest + cat >makefile <<'CF_EOF' +.PHONY: always +DATA=0 +always: always.out + @echo "** making [$]@ [$](DATA)" +once: once.out + @echo "** making [$]@ [$](DATA)" +always.out: + @echo "** making [$]@ [$](DATA)" + echo [$](DATA) > [$]@ +once.out: + @echo "** making [$]@ [$](DATA)" + echo [$](DATA) > [$]@ +CF_EOF + for cf_data in 1 2 3 + do + ${MAKE:-make} always DATA=$cf_data + ${MAKE:-make} once DATA=$cf_data + ${MAKE:-make} -t always once + if test -f always ; then + echo "no (case 1)" > ../conftest.tmp + elif test ! -f always.out ; then + echo "no (case 2)" > ../conftest.tmp + elif test ! -f once.out ; then + echo "no (case 3)" > ../conftest.tmp + elif ! cmp -s always.out once.out ; then + echo "no (case 4)" > ../conftest.tmp + diff always.out once.out + else + cf_check="`cat always.out`" + if test "x$cf_check" != "x$cf_data" ; then + echo "no (case 5)" > ../conftest.tmp + else + echo yes > ../conftest.tmp + rm -f ./*.out + continue + fi + fi + break + done + ) >&AC_FD_CC 2>&1 + cf_cv_make_PHONY="`cat conftest.tmp`" + rm -rf conftest* +]) +MAKE_NO_PHONY="#" +MAKE_PHONY="#" +test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY= +test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY= +AC_SUBST(MAKE_NO_PHONY) +AC_SUBST(MAKE_PHONY) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 +dnl ------------ +dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have +dnl a monocase filesystem. +AC_DEFUN([CF_MAKE_TAGS],[ +AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) + +AC_CHECK_PROGS(CTAGS, exctags ctags) +AC_CHECK_PROGS(ETAGS, exetags etags) + +AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) + +if test "$cf_cv_mixedcase" = yes ; then + AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +AC_SUBST(CTAGS) +AC_SUBST(ETAGS) + +AC_SUBST(MAKE_UPPER_TAGS) +AC_SUBST(MAKE_LOWER_TAGS) +])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 +dnl create a lowercase name and see it as uppercase, it doesn't support that. +AC_DEFUN([CF_MIXEDCASE_FILENAMES], +[ +AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ +if test "$cross_compiling" = yes ; then + case "$target_alias" in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +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: 11 updated: 2021/01/01 13:31:04 +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). +AC_DEFUN([CF_MKSTEMP],[ +AC_CHECK_HEADERS( \ +unistd.h \ +) +AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ +rm -rf ./conftest* +AC_TRY_RUN([ +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include +int main(void) +{ + char *tmpl = "conftestXXXXXX"; + char name[2][80]; + int n; + int result = 0; + int fd; + struct stat sb; + + umask(077); + for (n = 0; n < 2; ++n) { + strcpy(name[n], tmpl); + if ((fd = mkstemp(name[n])) >= 0) { + if (!strcmp(name[n], tmpl) + || stat(name[n], &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG + || (sb.st_mode & 077) != 0) { + result = 1; + } + close(fd); + } + } + if (result == 0 + && !strcmp(name[0], name[1])) + result = 1; + ${cf_cv_main_return:-return}(result); +} +],[cf_cv_func_mkstemp=yes +],[cf_cv_func_mkstemp=no +],[cf_cv_func_mkstemp=maybe]) +]) +if test "x$cf_cv_func_mkstemp" = xmaybe ; then + AC_CHECK_FUNC(mkstemp) +fi +if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then + AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 +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 +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_ADDON version: 6 updated: 2021/01/04 19:33:05 +dnl ---------------- +dnl Configure an ncurses add-on, built outside the ncurses tree. +AC_DEFUN([CF_NCURSES_ADDON],[ +AC_REQUIRE([CF_NCURSES_CONFIG]) + +AC_PROVIDE([CF_SUBST_NCURSES_VERSION]) + +AC_MSG_CHECKING(if you want wide-character code) +AC_ARG_ENABLE(widec, + [ --enable-widec compile with wide-char/UTF-8 code], + [with_widec=$enableval], + [with_widec=no]) +AC_MSG_RESULT($with_widec) +if test "$with_widec" = yes ; then + CF_UTF8_LIB + CF_NCURSES_CONFIG(ncursesw) +else + CF_NCURSES_CONFIG(ncurses) +fi + +if test "$NCURSES_CONFIG_PKG" != none ; then + cf_version=`$PKG_CONFIG --modversion $NCURSES_CONFIG_PKG 2>/dev/null` + + NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'` + NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'` + NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'` + + cf_cv_abi_version=`$PKG_CONFIG --variable=abi_version $NCURSES_CONFIG_PKG 2>/dev/null` + if test -z "$cf_cv_abi_version" + then + cf_cv_abi_version=`$PKG_CONFIG --variable=major_version $NCURSES_CONFIG_PKG 2>/dev/null` + fi + +elif test "$NCURSES_CONFIG" != none ; then + + cf_version=`$NCURSES_CONFIG --version 2>/dev/null` + + NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'` + NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.//' -e 's/\..*//'` + NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[[0-9]][[0-9]]*\.[[0-9]][[0-9]]*\.//'` + + # ABI version is not available from headers + cf_cv_abi_version=`$NCURSES_CONFIG --abi-version 2>/dev/null` + +else + + for cf_name in MAJOR MINOR PATCH + do + cat >conftest.$ac_ext < + AUTOCONF_$cf_name NCURSES_VERSION_$cf_name +CF_EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out" + AC_TRY_EVAL(cf_try) + if test -f conftest.out ; then + cf_result=`sed -e "s/^.*AUTOCONF_${cf_name}[[ ]][[ ]]*//" conftest.out` + eval NCURSES_$cf_name=\"$cf_result\" + # cat conftest.$ac_ext + # cat conftest.out + fi + done + + cf_cv_abi_version=${NCURSES_MAJOR} + +fi + +cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} + +dnl Show the computed version, for logging +cf_cv_timestamp=`date` + +AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)) + +dnl We need these values in the generated headers +AC_SUBST(NCURSES_MAJOR) +AC_SUBST(NCURSES_MINOR) +AC_SUBST(NCURSES_PATCH) + +dnl We need these values in the generated makefiles +AC_SUBST(cf_cv_rel_version) +AC_SUBST(cf_cv_abi_version) + +dnl FIXME - not needed for Ada95 +AC_SUBST(cf_cv_builtin_bool) +AC_SUBST(cf_cv_header_stdbool_h) +AC_SUBST(cf_cv_type_of_bool)dnl + +]) +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CC_CHECK version: 5 updated: 2020/12/31 20:19:42 +dnl ------------------- +dnl Check if we can compile with ncurses' header file +dnl $1 is the cache variable to set +dnl $2 is the header-file to include +dnl $3 is the root name (ncurses or ncursesw) +AC_DEFUN([CF_NCURSES_CC_CHECK],[ + AC_TRY_COMPILE([ +]ifelse($3,ncursesw,[ +#define _XOPEN_SOURCE_EXTENDED +#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ +#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ +])[ +#include <$2>],[ +#ifdef NCURSES_VERSION +]ifelse($3,ncursesw,[ +#ifndef WACS_BSSB + make an error +#endif +])[ +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + ] + ,[$1=$2] + ,[$1=no]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CONFIG version: 28 updated: 2021/08/28 15:20:37 +dnl ----------------- +dnl Tie together the configure-script macros for ncurses, preferring these in +dnl order: +dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG +dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG +dnl c) just plain libraries +dnl +dnl $1 is the root library name (default: "ncurses") +AC_DEFUN([CF_NCURSES_CONFIG],[ +AC_REQUIRE([CF_PKG_CONFIG]) +cf_ncuconfig_root=ifelse($1,,ncurses,$1) +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root) + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + AC_MSG_RESULT(yes) + + AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work) + cf_have_ncuconfig=unknown + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`" + cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" + + # while -W for passing linker flags is prevalent, it is not "standard". + # At least one wrapper for c89/c99 (in Apple's xcode) has its own + # incompatible _and_ non-standard -W option which gives an error. Work + # around that pitfall. + case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in + (x*c[[89]]9@@*-W*) + CF_ADD_CFLAGS($cf_pkg_cflags) + CF_ADD_LIBS($cf_pkg_libs) + + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tigetstr((char *)0);], + [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); }], + [cf_test_ncuconfig=yes], + [cf_test_ncuconfig=no], + [cf_test_ncuconfig=maybe])], + [cf_test_ncuconfig=no]) + + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + + if test "x$cf_test_ncuconfig" != xyes; then + cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[[^ ]]*//g'` + cf_pkg_cflags="$cf_temp" + cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[[^ ]]*//g'` + cf_pkg_libs="$cf_temp" + fi + ;; + esac + + CF_APPEND_CFLAGS($cf_pkg_cflags) + CF_ADD_LIBS($cf_pkg_libs) + + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tigetstr((char *)0);], + [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); }], + [cf_have_ncuconfig=yes], + [cf_have_ncuconfig=no], + [cf_have_ncuconfig=maybe])], + [cf_have_ncuconfig=no]) + AC_MSG_RESULT($cf_have_ncuconfig) + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + CF_TERM_HEADER + fi + + else + AC_MSG_RESULT(no) + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + + CF_ACVERSION_CHECK(2.52, + [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)], + [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)]) + + if test "$NCURSES_CONFIG" != none ; then + + CF_APPEND_CFLAGS(`$NCURSES_CONFIG --cflags`) + CF_ADD_LIBS(`$NCURSES_CONFIG --libs`) + + # even with config script, some packages use no-override for curses.h + CF_CURSES_HEADER(ifelse($1,,ncurses,$1)) + + dnl like CF_NCURSES_CPPFLAGS + AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + + dnl like CF_NCURSES_LIBS + CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root) + AC_DEFINE_UNQUOTED($cf_nculib_ROOT) + + dnl like CF_NCURSES_VERSION + cf_cv_ncurses_version="`$NCURSES_CONFIG --version`" + + else + + CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1)) + CF_NCURSES_LIBS(ifelse($1,,ncurses,$1)) + + fi +else + NCURSES_CONFIG=none +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CPPFLAGS version: 22 updated: 2021/01/02 09:31:20 +dnl ------------------- +dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting +dnl the CPPFLAGS variable so we can include its header. +dnl +dnl The header files may be installed as either curses.h, or ncurses.h (would +dnl be obsolete, except that some packagers prefer this name to distinguish it +dnl from a "native" curses implementation). If not installed for overwrite, +dnl the curses.h file would be in an ncurses subdirectory (e.g., +dnl /usr/include/ncurses), but someone may have installed overwriting the +dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd +dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in +dnl the header. +dnl +dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header +dnl is already in the include-path, don't even bother with this, since we cannot +dnl easily determine which file it is. In this case, it has to be . +dnl +dnl The optional parameter gives the root name of the library, in case it is +dnl not installed as the default curses library. That is how the +dnl wide-character version of ncurses is installed. +AC_DEFUN([CF_NCURSES_CPPFLAGS], +[AC_REQUIRE([CF_WITH_CURSES_DIR]) + +AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl +cf_ncuhdr_root=ifelse($1,,ncurses,$1) + +test -n "$cf_cv_curses_dir" && \ +test "$cf_cv_curses_dir" != "no" && { \ + CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root) +} + +AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[ + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1) + test "$cf_cv_ncurses_h" != no && break + done +]) + +CF_NCURSES_HEADER +CF_TERM_HEADER + +# some applications need this, but should check for NCURSES_VERSION +AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + +CF_NCURSES_VERSION +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_HEADER version: 7 updated: 2021/01/04 19:33:05 +dnl ----------------- +dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common +dnl variations of ncurses' installs. +dnl +dnl See also CF_CURSES_HEADER, which sets the same cache variable. +AC_DEFUN([CF_NCURSES_HEADER],[ + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[ + test -n "$verbose" && echo + CF_HEADER_PATH(cf_search,$cf_ncuhdr_root) + test -n "$verbose" && echo "search path $cf_search" + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + CF_ADD_INCDIR($cf_incdir) + for cf_header in \ + ncurses.h \ + curses.h + do + CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1) + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&AC_FD_MSG + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found) + ]) + + CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2) + cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`" + if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then + cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header" + fi + CF_ADD_INCDIR($cf_1st_incdir) + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case "$cf_cv_ncurses_header" in +(*ncurses.h) + AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h]) + ;; +esac + +case "$cf_cv_ncurses_header" in +(ncurses/curses.h|ncurses/ncurses.h) + AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h]) + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h]) + ;; +esac + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_LIBS version: 21 updated: 2021/09/04 06:37:12 +dnl --------------- +dnl Look for the ncurses library. This is a little complicated on Linux, +dnl because it may be linked with the gpm (general purpose mouse) library. +dnl Some distributions have gpm linked with (bsd) curses, which makes it +dnl unusable with ncurses. However, we don't want to link with gpm unless +dnl ncurses has a dependency, since gpm is normally set up as a shared library, +dnl and the linker will record a dependency. +dnl +dnl The optional parameter gives the root name of the library, in case it is +dnl not installed as the default curses library. That is how the +dnl wide-character version of ncurses is installed. +AC_DEFUN([CF_NCURSES_LIBS], +[AC_REQUIRE([CF_NCURSES_CPPFLAGS]) + +cf_nculib_root=ifelse($1,,ncurses,$1) + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +AC_CHECK_LIB(gpm,Gpm_Open, + [AC_CHECK_LIB(gpm,initscr, + [LIBS="$cf_ncurses_SAVE"], + [cf_ncurses_LIBS="-lgpm"])]) + +case "$host_os" in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it is static). + if test "$cf_nculib_root" = ncurses ; then + AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"]) + fi + ;; +esac + +CF_ADD_LIBS($cf_ncurses_LIBS) + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + CF_ADD_LIBS(-l$cf_nculib_root) +else + CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root, + [#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr()], + initscr) +fi + +if test -n "$cf_ncurses_LIBS" ; then + AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS) + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tigetstr((char *)0);], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + LIBS="$cf_ncurses_SAVE"]) +fi + +CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root) +AC_DEFINE_UNQUOTED($cf_nculib_ROOT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_VERSION version: 16 updated: 2020/12/31 20:19:42 +dnl ------------------ +dnl Check for the version of ncurses, to aid in reporting bugs, etc. +dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use +dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi. +AC_DEFUN([CF_NCURSES_VERSION], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[ + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + AC_TRY_RUN([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +}],[ + cf_cv_ncurses_version=`cat $cf_tempfile`],,[ + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out" + AC_TRY_EVAL(cf_try) + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi +]) + rm -f "$cf_tempfile" +]) +test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_OBJ_SUBDIR version: 8 updated: 2021/01/01 13:31:04 +dnl ------------- +dnl Compute the object-directory name from the given model name +AC_DEFUN([CF_OBJ_SUBDIR], +[ + case $1 in + (libtool) $2='obj_lo' ;; + (normal) $2='objects' ;; + (debug) $2='obj_g' ;; + (profile) $2='obj_p' ;; + (shared) + case "$cf_cv_system_name" in + (cygwin|msys) + $2='objects' ;; + (*) + $2='obj_s' ;; + esac + esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04 +dnl ---------- +dnl Provide a value for the $PATH and similar separator (or amend the value +dnl as provided in autoconf 2.5x). +AC_DEFUN([CF_PATHSEP], +[ + AC_MSG_CHECKING(for PATH separator) + case "$cf_cv_system_name" in + (os2*) PATH_SEPARATOR=';' ;; + (*) ${PATH_SEPARATOR:=':'} ;; + esac +ifelse([$1],,,[$1=$PATH_SEPARATOR]) + AC_SUBST(PATH_SEPARATOR) + AC_MSG_RESULT($PATH_SEPARATOR) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 +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],[ +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".[$]$1" in +(.\[$]\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX + ;; +(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) + eval $1="[$]$1" + case ".[$]$1" in + (.NONE/*) + $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09 +dnl ------------- +dnl Check for the package-config program, unless disabled by command-line. +dnl +dnl Sets $PKG_CONFIG to the pathname of the pkg-config program. +AC_DEFUN([CF_PKG_CONFIG], +[ +AC_MSG_CHECKING(if you want to use pkg-config) +AC_ARG_WITH(pkg-config, + [ --with-pkg-config{=path} enable/disable use of pkg-config], + [cf_pkg_config=$withval], + [cf_pkg_config=yes]) +AC_MSG_RESULT($cf_pkg_config) + +case "$cf_pkg_config" in +(no) + PKG_CONFIG=none + ;; +(yes) + CF_ACVERSION_CHECK(2.52, + [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], + [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + CF_PATH_SYNTAX(PKG_CONFIG) +elif test "x$cf_pkg_config" != xno ; then + AC_MSG_WARN(pkg-config is not installed) +fi + +AC_SUBST(PKG_CONFIG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17 +dnl ----------------- +dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. +dnl +dnl POSIX.1-1990 _POSIX_SOURCE +dnl POSIX.1-1990 and _POSIX_SOURCE and +dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 +dnl Bindings Option +dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L +dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L +dnl X/Open 2000 _POSIX_C_SOURCE=200112L +dnl +dnl Parameters: +dnl $1 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_POSIX_C_SOURCE], +[AC_REQUIRE([CF_POSIX_VISIBLE])dnl + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) +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 ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif], + [cf_cv_posix_c_source=no], + [cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[[12]]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + AC_TRY_COMPILE([#include ],[ +#ifdef _POSIX_SOURCE +make an error +#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) + CFLAGS="$cf_trim_CFLAGS" + 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 ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif],, + [cf_cv_posix_c_source=no]) + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + ]) +]) + +if test "$cf_cv_posix_c_source" != no ; then + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + CF_ADD_CFLAGS($cf_cv_posix_c_source) +fi + +fi # cf_cv_posix_visible + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 +dnl ---------------- +dnl POSIX documents test-macros which an application may set before any system +dnl headers are included to make features available. +dnl +dnl Some BSD platforms (originally FreeBSD, but copied by a few others) +dnl diverged from POSIX in 2002 by setting symbols which make all of the most +dnl recent features visible in the system header files unless the application +dnl overrides the corresponding test-macros. Doing that introduces portability +dnl problems. +dnl +dnl This macro makes a special check for the symbols used for this, to avoid a +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 ],[ +#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]) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22 +dnl ---------- +dnl Check for archiver "ar". +AC_DEFUN([CF_PROG_AR],[ +AC_CHECK_TOOL(AR, ar, ar) +]) +dnl --------------------------------------------------------------------------- +dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59 +dnl ----------- +dnl Check for awk, ensure that the check found something. +AC_DEFUN([CF_PROG_AWK], +[ +AC_PROG_AWK +test -z "$AWK" && AC_MSG_ERROR(No awk program found) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 +dnl ---------- +dnl standard check for CC, plus followup sanity checks +dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name +AC_DEFUN([CF_PROG_CC],[ +CF_ACVERSION_CHECK(2.53, + [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) + AC_REQUIRE([AC_PROG_CC])], + []) +ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) +CF_GCC_VERSION +CF_ACVERSION_CHECK(2.52, + [AC_PROG_CC_STDC], + [CF_ANSI_CC_REQD]) +CF_CC_ENV_FLAGS +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_CC_C_O version: 6 updated: 2021/01/01 13:31:04 +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 +dnl be used later. The parameter is either CC or CXX. The result is the +dnl cache variable: +dnl $cf_cv_prog_CC_c_o +dnl $cf_cv_prog_CXX_c_o +dnl +dnl $1 = compiler +dnl $2 = compiler options, if any +AC_DEFUN([CF_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_MSG_CHECKING([whether [$]$1 understands -c and -o together]) +AC_CACHE_VAL(cf_cv_prog_$1_c_o, +[ +cat > conftest.$ac_ext </dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi]) + EGREP=$ac_cv_prog_egrep + AC_SUBST([EGREP]) + test -z "$EGREP" && AC_MSG_ERROR(No egrep program found) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_EXT version: 15 updated: 2021/01/02 09:31:20 +dnl ----------- +dnl Compute $PROG_EXT, used for non-Unix ports, such as OS/2 EMX. +AC_DEFUN([CF_PROG_EXT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) +case "$cf_cv_system_name" in +(os2*) + CFLAGS="$CFLAGS -Zmt" + CF_APPEND_TEXT(CPPFLAGS,-D__ST_MT_ERRNO__) + CXXFLAGS="$CXXFLAGS -Zmt" + # autoconf's macro sets -Zexe and suffix both, which conflict:w + LDFLAGS="$LDFLAGS -Zmt -Zcrtdll" + ac_cv_exeext=.exe + ;; +esac + +AC_EXEEXT +AC_OBJEXT + +PROG_EXT="$EXEEXT" +AC_SUBST(PROG_EXT) +test -n "$PROG_EXT" && AC_DEFINE_UNQUOTED(PROG_EXT,"$PROG_EXT",[Define to the program extension (normally blank)]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_GNAT version: 12 updated: 2021/01/02 17:09:14 +dnl ------------ +dnl Check for gnat/gnatmake/etc, ensure that the toolset is complete. +AC_DEFUN([CF_PROG_GNAT],[ +for cf_prog_gnat in gnat gnatmake gprconfig gprbuild +do + CF_UPPER(cf_upper_prog_gnat,${cf_prog_gnat}) + + unset ac_cv_path_cf_TEMP_gnat + unset cf_TEMP_gnat + AC_PATH_PROG(cf_TEMP_gnat,$cf_prog_gnat,no) + 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 + CF_GNAT_VERSION(cf_TEMP_gnat,$cf_prog_gnat) + 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 + AC_MSG_CHECKING(for gprconfig name for $cf_gprconfig) + 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>&AC_FD_CC | ${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` + fi + if test -n "$cf_gprconfig_value" + then + eval "cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value" + AC_MSG_RESULT($cf_gprconfig_value) + else + AC_MSG_RESULT(missing) + cf_ada_config="#" + break + fi + done + cd .. + rm -rf ./conftest* ./*~conftest* + fi + fi + if test "x$cf_ada_config" != "x#" + then + CF_GNAT_VERSION + CF_CHECK_GNAT_VERSION + AC_CHECK_PROG(M4_exists, m4, yes, no) + if test "$ac_cv_prog_M4_exists" = no; then + cf_cv_prog_gnat_correct=no + AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled) + fi + if test "$cf_cv_prog_gnat_correct" = yes; then + AC_MSG_CHECKING(if GNAT works) + CF_GNAT_TRY_RUN([procedure conftest;], +[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_cv_prog_gnat_correct=yes], +[cf_cv_prog_gnat_correct=no]) + AC_MSG_RESULT($cf_cv_prog_gnat_correct) + fi + else + cf_cv_prog_gnat_correct=no + fi +fi + +AC_SUBST(cf_ada_make) +AC_SUBST(cf_ada_config) +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 --------------- +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 +(/*) + ;; +(*) + CF_DIRNAME(cf_dir,$INSTALL) + test -z "$cf_dir" && cf_dir=. + INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`" + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37 +dnl ------------ +dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f" +dnl option if it is supported. +AC_DEFUN([CF_PROG_LN_S],[ +AC_PROG_LN_S +AC_MSG_CHECKING(if $LN_S -f options work) + +rm -f conf$$.src conf$$dst +echo >conf$$.dst +echo first >conf$$.src +if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then + cf_prog_ln_sf=yes +else + cf_prog_ln_sf=no +fi +rm -f conf$$.dst conf$$src +AC_MSG_RESULT($cf_prog_ln_sf) + +test "$cf_prog_ln_sf" = yes && LN_S="$LN_S -f" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40 +dnl ---------------- +dnl Remove a given option from CFLAGS/CPPFLAGS +dnl $1 = option to remove +dnl $2 = variable to update +dnl $3 = nonempty to allow verbose message +define([CF_REMOVE_CFLAGS], +[ +cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ ]][[ ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ ]][[^ ]]*\\)\?%%" -e 's/^[[ ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'` + test "[$]$2" != "$cf_old_cflag" || break + ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)]) + $2="$cf_old_cflag" +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 +dnl ---------------- +dnl Remove all -U and -D options that refer to the given symbol from a list +dnl of C compiler options. This works around the problem that not all +dnl compilers process -U and -D options from left-to-right, so a -U option +dnl cannot be used to cancel the effect of a preceding -D option. +dnl +dnl $1 = target (which could be the same as the source variable) +dnl $2 = source (including '$') +dnl $3 = symbol to remove +define([CF_REMOVE_DEFINE], +[ +$1=`echo "$2" | \ + sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ + -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52 +dnl ------------- +dnl Remove the given library from the symbol +dnl +dnl $1 = target (which could be the same as the source variable) +dnl $2 = source (including '$') +dnl $3 = library to remove +define([CF_REMOVE_LIB], +[ +# remove $3 library from $2 +$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'` +])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 +dnl $1 = name of current macro +define([CF_RESTORE_XTRA_FLAGS], +[ +LIBS="$cf_save_LIBS_$1" +CFLAGS="$cf_save_CFLAGS_$1" +CPPFLAGS="$cf_save_CPPFLAGS_$1" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44 +dnl ------------------ +dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers +dnl and libraries which do not update those variables. +dnl +dnl $1 = name of current macro +define([CF_SAVE_XTRA_FLAGS], +[ +cf_save_LIBS_$1="$LIBS" +cf_save_CFLAGS_$1="$CFLAGS" +cf_save_CPPFLAGS_$1="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[[IUD]]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34 +dnl -------------- +dnl -------------- +dnl Attempt to determine the appropriate CC/LD options for creating a shared +dnl library. +dnl +dnl Notes: +dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within +dnl the build-tree, i.e., by making use of the libraries that are compiled in +dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the +dnl shared library since that can lead to unexpected results at runtime. +dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared +dnl libraries are compiled in ../../lib +dnl +dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure +dnl to install symbolic links to the rel/abi versions of shared libraries. +dnl +dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi +dnl version when making symbolic links. +dnl +dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library +dnl version numbers are infix (ex: libncurses..dylib) or postfix +dnl (ex: libncurses.so.). +dnl +dnl Some loaders leave 'so_locations' lying around. It is nice to clean up. +AC_DEFUN([CF_SHARED_OPTS], +[ + AC_REQUIRE([CF_LD_RPATH_OPT]) + + RM_SHARED_OPTS= + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + LD_SHARED_OPTS= + INSTALL_LIB="-m 644" + : ${rel_builddir:=.} + + shlibdir=$libdir + AC_SUBST(shlibdir) + + MAKE_DLLS="#" + AC_SUBST(MAKE_DLLS) + + cf_cv_do_symlinks=no + cf_ld_rpath_opt= + test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" + + AC_MSG_CHECKING(if release/abi version should be used for shared libs) + AC_ARG_WITH(shlib-version, + [ --with-shlib-version=X Specify rel or abi version for shared libs], + [test -z "$withval" && withval=auto + case "$withval" in + (yes) + cf_cv_shlib_version=auto + ;; + (rel|abi|auto) + cf_cv_shlib_version=$withval + ;; + (*) + AC_MSG_RESULT($withval) + AC_MSG_ERROR([option value must be one of: rel, abi, or auto]) + ;; + esac + ],[cf_cv_shlib_version=auto]) + AC_MSG_RESULT($cf_cv_shlib_version) + + cf_cv_rm_so_locs=no + cf_try_cflags= + + # Some less-capable ports of gcc support only -fpic + CC_SHARED_OPTS= + + cf_try_fPIC=no + if test "$GCC" = yes + then + cf_try_fPIC=yes + else + case "$cf_cv_system_name" in + (*linux*) # e.g., PGI compiler + cf_try_fPIC=yes + ;; + esac + fi + + if test "$cf_try_fPIC" = yes + then + AC_MSG_CHECKING(which $CC option to use) + cf_save_CFLAGS="$CFLAGS" + for CC_SHARED_OPTS in -fPIC -fpic '' + do + CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" + AC_TRY_COMPILE([#include ],[int x = 1],[break],[]) + done + AC_MSG_RESULT($CC_SHARED_OPTS) + CFLAGS="$cf_save_CFLAGS" + fi + + cf_cv_shlib_version_infix=no + + case "$cf_cv_system_name" in + (aix4.[3-9]*|aix[[5-7]]*) + if test "$GCC" = yes; then + CC_SHARED_OPTS='-Wl,-brtl' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@' + else + CC_SHARED_OPTS='-brtl' + # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@' + fi + ;; + (beos*) + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0' + ;; + (cygwin*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=cygdll + cf_cv_shlib_version_infix=cygdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (msys*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=msysdll + cf_cv_shlib_version_infix=msysdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (darwin*) + cf_try_cflags="no-cpp-precomp" + CC_SHARED_OPTS="-dynamic" + 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 + 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) + LDFLAGS=$cf_save_LDFLAGS]) + if test "$cf_cv_ldflags_search_paths_first" = yes; then + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + fi + ;; + (haiku*) + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (hpux[[7-8]]*) + # HP-UX 8.07 ld lacks "+b" option used for libdir search-list + if test "$GCC" != yes; then + CC_SHARED_OPTS='+Z' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]' + INSTALL_LIB="-m 555" + ;; + (hpux*) + # (tested with gcc 2.7.2 -- I don't have c89) + if test "$GCC" = yes; then + LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' + else + CC_SHARED_OPTS='+Z' + LD_SHARED_OPTS='-Wl,+b,${libdir}' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]' + # HP-UX shared libraries must be executable, and should be + # readonly to exploit a quirk in the memory manager. + INSTALL_LIB="-m 555" + ;; + (interix*) + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' + else + cf_shared_soname='`basename $[@]`' + fi + CC_SHARED_OPTS= + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]' + ;; + (irix*) + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + # tested with IRIX 5.2 and 'cc'. + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]' + fi + cf_cv_rm_so_locs=yes + ;; + (linux*|gnu*|k*bsd*-gnu) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (mingw*msvc*) + cf_cv_shlib_version=msvcdll + cf_cv_shlib_version_infix=msvcdll + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-link -dll" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ ${LD} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.lib/'\` + shift + my_ld=\[$]1 + shift + cat <<-EOF + Linking shared library + ** SHARED LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + args=\$(echo \[$]* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g") + exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args + mv "\${IMPORT_LIB}" "\${IMPORT_LIB}" +CF_EOF + chmod +x mk_shared_lib.sh + cat >mk_prog.sh <<-CF_EOF + #!$SHELL + shift + # Ignore first argument (compiler) and use LD (link.exe) unconditionally + LD="[$]LD" + clopts=() + ldopts=("/subsystem:console") + libs=() + isdll=0 + while test \[$]# -gt 0; do + case "\[$]1" in + -link) + # ignore -link argument + ;; + -M[[TD]] | -M[[TD]]d) + # ignore runtime-library option + ;; + -dll) + isdll=1 + ;; + -W* | -w*) + # ignore warnings + ;; + -D*) + clopts+=("\[$]1") + ;; + -I*) + clopts+=("\[$]1") + ;; + -l*) + libs+=("\`echo \"\[$]1\" | sed \"s/^-l//\"\`") + ;; + -L*) + ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`") + ;; + *.obj | *.o) + ldopts+=("\[$]1") + ;; + -Wl,*) + for linkarg in \`echo '\[$]1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do + ldopts+=("\[$]{linkarg}") + done + ;; + *.lib) + ldopts+=("\[$]1") + ;; + -o) + shift + ldopts+=("-out:\[$]1") + ;; + *) + clopts+=("\[$]1") + ldopts+=("\[$]1") + ;; + esac + shift + done + if [[ "\$isdll" -ne 0 ]]; then + for lib in \[$]{libs[[*]]}; do + ldopts+=("\[$]lib.dll.lib") + done + else + for lib in \[$]{libs[[*]]}; do + ldopts+=("\[$]lib.lib") + done + fi + cat <<-EOF + Creating program + ** ld options: "\[$]{ldopts[[@]]}" +EOF + exec \[$]LD \[$]{ldopts[[@]]} +CF_EOF + chmod +x mk_prog.sh + LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh" + LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh" + ;; + (mingw*) + cf_cv_shlib_version=mingw + cf_cv_shlib_version_infix=mingw + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-Wl,--enable-auto-import" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (openbsd[[2-9]].*|mirbsd*) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (nskJ*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $[@]' + ;; + (nskL*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $[@]' + ;; + (nto-qnx*|openbsd*|freebsd[[12]].*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (dragonfly*|freebsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (netbsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + if test "$cf_cv_shlib_version" = auto; then + if test -f /usr/libexec/ld.elf_so; then + cf_cv_shlib_version=abi + else + cf_cv_shlib_version=rel + fi + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $[@]' + fi + ;; + (osf*|mls+*) + # tested with OSF/1 V3.2 and 'cc' + # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't + # link with shared libs). + MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`' + case "$host_os" in + (osf4*) + MK_SHARED_LIB="${MK_SHARED_LIB} -msym" + ;; + esac + MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]' + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + cf_cv_rm_so_locs=yes + ;; + (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98 + # tested with osr5.0.5 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-belf -KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@' + if test "$cf_cv_enable_rpath" = yes ; then + # only way is to set LD_RUN_PATH but no switch for it + RUN_PATH=$libdir + fi + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + LINK_PROGS='LD_RUN_PATH=${libdir}' + LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' + ;; + (sunos4*) + # tested with SunOS 4.1.1 and gcc 2.7.0 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (solaris2*) + # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 + # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + if test "$GCC" != yes; then + cf_save_CFLAGS="$CFLAGS" + for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O + do + CFLAGS="$cf_shared_opts $cf_save_CFLAGS" + AC_TRY_COMPILE([#include ],[printf("Hello\\n");],[break]) + done + CFLAGS="$cf_save_CFLAGS" + CC_SHARED_OPTS=$cf_shared_opts + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]' + fi + ;; + (sysv5uw7*|unix_sv*) + # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@' + ;; + (*) + CC_SHARED_OPTS='unknown' + MK_SHARED_LIB='echo unknown' + ;; + esac + + # This works if the last tokens in $MK_SHARED_LIB are the -o target. + case "$cf_cv_shlib_version" in + (rel|abi) + case "$MK_SHARED_LIB" in + (*'-o $[@]') + test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes + ;; + (*) + AC_MSG_WARN(ignored --with-shlib-version) + ;; + esac + ;; + esac + + if test -n "$cf_try_cflags" + then +cat > conftest.$ac_ext < +int main(int argc, char *argv[[]]) +{ + printf("hello\\n"); + return (argv[[argc-1]] == 0) ; +} +EOF + cf_save_CFLAGS="$CFLAGS" + for cf_opt in $cf_try_cflags + do + CFLAGS="$cf_save_CFLAGS -$cf_opt" + AC_MSG_CHECKING(if CFLAGS option -$cf_opt works) + if AC_TRY_EVAL(ac_compile); then + AC_MSG_RESULT(yes) + cf_save_CFLAGS="$CFLAGS" + else + AC_MSG_RESULT(no) + fi + done + CFLAGS="$cf_save_CFLAGS" + fi + + + # RPATH_LIST is a colon-separated list of directories + test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}" + test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}" + + test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations" + + CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS) + CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB) + + AC_SUBST(CC_SHARED_OPTS) + AC_SUBST(LD_RPATH_OPT) + AC_SUBST(LD_SHARED_OPTS) + AC_SUBST(MK_SHARED_LIB) + AC_SUBST(RM_SHARED_OPTS) + + AC_SUBST(LINK_PROGS) + AC_SUBST(LINK_TESTS) + + AC_SUBST(EXTRA_LDFLAGS) + AC_SUBST(LOCAL_LDFLAGS) + AC_SUBST(LOCAL_LDFLAGS2) + + AC_SUBST(INSTALL_LIB) + AC_SUBST(RPATH_LIST) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43 +dnl ---------------- +dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for +dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar) +dnl option. +dnl +dnl $1 is the default that should be used for "$cf_cv_shlib_version". +dnl If missing, use "rel". +define([CF_SHARED_SONAME], +[ + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1) + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $[@]`' + fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_STRIP_G_OPT version: 4 updated: 2021/01/02 09:31:20 +dnl -------------- +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_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06 +dnl -------------- +dnl Construct a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +AC_DEFUN([CF_SUBDIR_PATH], +[ +$1= + +CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE) + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + [$]HOME +do + CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix) +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TERM_HEADER version: 6 updated: 2021/01/02 09:31:20 +dnl -------------- +dnl Look for term.h, which is part of X/Open curses. It defines the interface +dnl to terminfo database. Usually it is in the same include-path as curses.h, +dnl but some packagers change this, breaking various applications. +AC_DEFUN([CF_TERM_HEADER],[ +AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[ +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +AC_TRY_COMPILE([#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> +],[int x = auto_left_margin; (void)x],[ + cf_cv_term_header="$cf_test"],[ + cf_cv_term_header=unknown + ]) + test "$cf_cv_term_header" != unknown && break +done +]) + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h]) + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h]) + ;; +(ncursesw/term.h) + AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32 +dnl --------------- +dnl Define a top_builddir symbol, for applications that need an absolute path. +AC_DEFUN([CF_TOP_BUILDDIR], +[ +top_builddir=ifelse($1,,`pwd`,$1) +AC_SUBST(top_builddir) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37 +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([ +#include +#include +#include +],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_save="$CPPFLAGS" + CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) + AC_TRY_COMPILE([ +#include +#include +#include +],[ +#ifdef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) + CPPFLAGS="$cf_save" + ]) +]) + +if test "$cf_cv_xopen_source" != no ; then + CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + CF_APPEND_CFLAGS($cf_temp_xopen_source) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 +dnl -------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25 +dnl ----------- +dnl Check for multibyte support, and if not found, utf8 compatibility library +AC_DEFUN([CF_UTF8_LIB], +[ +AC_HAVE_HEADERS(wchar.h) +AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ + cf_save_LIBS="$LIBS" + AC_TRY_LINK([ +#include +#include +#ifdef HAVE_WCHAR_H +#include +#endif +],[putwc(0,0);], + [cf_cv_utf8_lib=yes], + [CF_FIND_LINKAGE([ +#include ],[putwc(0,0);],utf8, + [cf_cv_utf8_lib=add-on], + [cf_cv_utf8_lib=no]) +])]) + +# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h]) + CF_ADD_INCDIR($cf_cv_header_path_utf8) + CF_ADD_LIBDIR($cf_cv_library_path_utf8) + CF_ADD_LIBS($cf_cv_library_file_utf8) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 +dnl ---------- +dnl Use AC_VERBOSE w/o the warnings +AC_DEFUN([CF_VERBOSE], +[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG +CF_MSG_LOG([$1]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06 +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([ +#include ], +[ +#if defined(__GNUC__) +# if defined __USE_ISOC99 +# define _cat_pragma(exp) _Pragma(#exp) +# define _weak_pragma(exp) _cat_pragma(weak name) +# else +# define _weak_pragma(exp) +# endif +# define _declare(name) __extension__ extern __typeof__(name) name +# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) +#endif + +weak_symbol(fopen); +],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no]) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58 +dnl -------------------- +dnl Command-line option to specify the Ada95 compiler. +AC_DEFUN([CF_WITH_ADA_COMPILER],[ +AC_MSG_CHECKING(for ada-compiler) +AC_ARG_WITH(ada-compiler, + [ --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)], + [cf_ada_compiler=$withval], + [cf_ada_compiler=gnatmake]) +AC_SUBST(cf_ada_compiler) +AC_MSG_RESULT($cf_ada_compiler) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58 +dnl ------------------- +dnl Command-line option to specify where Ada includes will install. +AC_DEFUN([CF_WITH_ADA_INCLUDE],[ +AC_MSG_CHECKING(for ada-include) +CF_WITH_PATH(ada-include, + [ --with-ada-include=DIR Ada includes are in DIR], + ADA_INCLUDE, + PREFIX/share/ada/adainclude, + [$]prefix/share/ada/adainclude) +AC_SUBST(ADA_INCLUDE) +AC_MSG_RESULT($ADA_INCLUDE) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41 +dnl ------------------- +dnl CF_WITH_ADA_LIBNAME +dnl ------------------- +dnl Command-line option to specify how to name the resulting Ada library. +dnl $1 = default value +AC_DEFUN([CF_WITH_ADA_LIBNAME],[ +AC_MSG_CHECKING(for ada-libname) +AC_ARG_WITH(ada-libname, + [ --with-ada-libname=XXX override default Ada library-name], + ADA_LIBNAME=[$]withval, + ADA_LIBNAME=$1) +case "x$ADA_LIBNAME" in +(x|xyes|xno) + ADA_LIBNAME=$1 + ;; +esac +AC_SUBST(ADA_LIBNAME) +AC_MSG_RESULT($ADA_LIBNAME) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58 +dnl ------------------- +dnl Command-line option to specify where Ada objects will install. +AC_DEFUN([CF_WITH_ADA_OBJECTS],[ +AC_MSG_CHECKING(for ada-objects) +CF_WITH_PATH(ada-objects, + [ --with-ada-objects=DIR Ada objects are in DIR], + ADA_OBJECTS, + PREFIX/lib/ada/adalib, + [$]prefix/lib/ada/adalib) +AC_SUBST(ADA_OBJECTS) +AC_MSG_RESULT($ADA_OBJECTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35 +dnl --------------------- +dnl Command-line option to specify if an Ada95 shared-library should be built, +dnl and optionally what its soname should be. +AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[ +AC_REQUIRE([CF_GNAT_PROJECTS]) +AC_MSG_CHECKING(if an Ada95 shared-library should be built) +AC_ARG_WITH(ada-sharedlib, + [ --with-ada-sharedlib=soname build shared-library (requires GNAT projects)], + [with_ada_sharedlib=$withval], + [with_ada_sharedlib=no]) +AC_MSG_RESULT($with_ada_sharedlib) + +if test "x$with_ada_sharedlib" != xno +then + if test "x$cf_gnat_projects" != xyes + then + AC_MSG_WARN(disabling shared-library since GNAT projects are not supported) + with_ada_sharedlib=no + fi +fi + +ADA_SHAREDLIB='lib$(LIB_NAME).so.1' +MAKE_ADA_SHAREDLIB="#" + +if test "x$with_ada_sharedlib" != xno +then + MAKE_ADA_SHAREDLIB= + if test "x$with_ada_sharedlib" != xyes + then + ADA_SHAREDLIB="$with_ada_sharedlib" + fi +fi + +AC_SUBST(ADA_SHAREDLIB) +AC_SUBST(MAKE_ADA_SHAREDLIB) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_CURSES_DIR version: 4 updated: 2021/01/02 19:22:58 +dnl ------------------ +dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses +dnl libraries. +AC_DEFUN([CF_WITH_CURSES_DIR],[ + +AC_MSG_CHECKING(for specific curses-directory) +AC_ARG_WITH(curses-dir, + [ --with-curses-dir=DIR directory in which (n)curses is installed], + [cf_cv_curses_dir=$withval], + [cf_cv_curses_dir=no]) +AC_MSG_RESULT($cf_cv_curses_dir) + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + CF_PATH_SYNTAX(withval) + if test -d "$cf_cv_curses_dir" + then + CF_ADD_INCDIR($cf_cv_curses_dir/include) + CF_ADD_LIBDIR($cf_cv_curses_dir/lib) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIB_PREFIX version: 2 updated: 2021/01/01 16:53:59 +dnl ------------------ +dnl Allow the library-prefix to be overridden. OS/2 EMX originally had no +dnl "lib" prefix, e.g., because it used the dll naming convention. +dnl +dnl $1 = variable to set +AC_DEFUN([CF_WITH_LIB_PREFIX], +[ +AC_MSG_CHECKING(if you want to have a library-prefix) +AC_ARG_WITH(lib-prefix, + [ --with-lib-prefix override library-prefix], + [with_lib_prefix=$withval], + [with_lib_prefix=auto]) +AC_MSG_RESULT($with_lib_prefix) + +if test "$with_lib_prefix" = auto +then + CF_LIB_PREFIX($1) +elif test "$with_lib_prefix" = no +then + LIB_PREFIX= +else + LIB_PREFIX=$with_lib_prefix +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PATH version: 12 updated: 2021/09/04 06:35:04 +dnl ------------ +dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just +dnl defaulting to yes/no. +dnl +dnl $1 = option name +dnl $2 = help-text +dnl $3 = environment variable to set +dnl $4 = default value, shown in the help-message, must be a constant +dnl $5 = default value, if it is an expression & cannot be in the help-message +dnl +AC_DEFUN([CF_WITH_PATH], +[AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),, +ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl +if ifelse([$5],,true,[test -n "$5"]) ; then +CF_PATH_SYNTAX(withval) +fi +eval $3="$withval" +AC_SUBST($3)dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PKG_CONFIG_LIBDIR version: 13 updated: 2021/10/17 11:12:47 +dnl ------------------------- +dnl Allow the choice of the pkg-config library directory to be overridden. +dnl +dnl pkg-config uses a search-list built from these colon-separated lists of +dnl directories: +dnl a) $PKG_CONFIG_PATH (tested first, added if set) +dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set) +dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set) +dnl +dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config) +dnl optionally ignores $PKG_CONFIG_LIBDIR. +AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[ + +case "$PKG_CONFIG" in +(no|none|yes) + AC_MSG_CHECKING(for pkg-config library directory) + ;; +(*) + AC_MSG_CHECKING(for $PKG_CONFIG library directory) + ;; +esac + +cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[ ]]*,,'` +AC_ARG_WITH(pkg-config-libdir, + [ --with-pkg-config-libdir=XXX use given directory for installing pc-files], + [cf_search_path=$withval], + [test "x$PKG_CONFIG" != xnone && cf_search_path=yes]) + +case x$cf_search_path in +(x/*) + ;; +(xyes) + cf_search_path= + CF_VERBOSE(auto...) + # Look for the library directory using the same prefix as the executable + AC_MSG_CHECKING(for search-list) + if test "x$PKG_CONFIG" = xnone + then + cf_path=$prefix + else + cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'` + cf_search_path=` + "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | awk "\ +/^Scanning directory #[1-9][0-9]* '.*'$/{ \ + sub(\"^[[^']]*'\",\"\"); \ + sub(\"'.*\",\"\"); \ + printf \" %s\", \\[$]0; } \ +/trying path:/{ + sub(\"^.* trying path: \",\"\"); + sub(\" for no-such-package.*$\",\"\"); + printf \" %s\", \\[$]0; +} +{ next; } \ +"` + fi + + if test -z "$cf_search_path" + then + # If you don't like using the default architecture, you have to specify + # the intended library directory and corresponding compiler/linker + # options. + # + # This case allows for Debian's 2014-flavor of multiarch, along with + # the most common variations before that point. Some other variants + # spell the directory differently, e.g., "pkg-config", and put it in + # unusual places. + # + # pkg-config has always been poorly standardized, which is ironic... + case x`(arch) 2>/dev/null` in + (*64) + cf_test_path="\ + $cf_path/lib/*64-linux-gnu \ + $cf_path/share \ + $cf_path/lib64 \ + $cf_path/lib32 \ + $cf_path/lib" + ;; + (*) + cf_test_path="\ + $cf_path/lib/*-linux-gnu \ + $cf_path/share \ + $cf_path/lib32 \ + $cf_path/lib \ + $cf_path/libdata" + ;; + esac + for cf_config in $cf_test_path + do + test -d "$cf_config/pkgconfig" && cf_search_path="$cf_search_path $cf_config/pkgconfig" + done + fi + + AC_MSG_RESULT($cf_search_path) + + ;; +(*) + ;; +esac + +AC_MSG_CHECKING(for first directory) +cf_pkg_config_path=none +for cf_config in $cf_search_path +do + if test -d "$cf_config" + then + cf_pkg_config_path=$cf_config + break + fi +done +AC_MSG_RESULT($cf_pkg_config_path) + +if test "x$cf_pkg_config_path" != xnone ; then + # limit this to the first directory found + PKG_CONFIG_LIBDIR="$cf_pkg_config_path" +fi + +AC_SUBST(PKG_CONFIG_LIBDIR) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57 +dnl --------------- +dnl Check for POSIX thread library. +AC_DEFUN([CF_WITH_PTHREAD], +[ +AC_MSG_CHECKING(if you want to link with the pthread library) +AC_ARG_WITH(pthread, + [ --with-pthread use POSIX thread library], + [with_pthread=$withval], + [with_pthread=no]) +AC_MSG_RESULT($with_pthread) + +if test "$with_pthread" != no ; then + AC_CHECK_HEADER(pthread.h,[ + AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header]) + + for cf_lib_pthread in pthread c_r + do + 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([ +#include +],[ + int rc = pthread_create(0,0,0,0); + int r2 = pthread_mutexattr_settype(0, 0); +],[with_pthread=yes],[with_pthread=no]) + LIBS="$cf_save_LIBS" + AC_MSG_RESULT($with_pthread) + test "$with_pthread" = yes && break + done + + if test "$with_pthread" = yes ; then + CF_ADD_LIB($cf_lib_pthread) + AC_DEFINE(HAVE_LIBPTHREADS,1,[Define to 1 if we have pthreads library]) + else + AC_MSG_ERROR(Cannot link with pthread library) + fi + ]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_WITH_SYSTYPE version: 1 updated: 2013/01/26 16:26:12 +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 +dnl normally chosen automatically based on the type of system which you are +dnl building on. We use it for testing the configure script. +dnl +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]) +AC_ARG_WITH(system-type, + [ --with-system-type=XXX test: override derived host system-type], +[AC_MSG_WARN(overriding system type to $withval) + cf_cv_system_name=$withval + host_os=$withval +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37 +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, +dnl without losing the common non-POSIX features. +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +dnl $2 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_XOPEN_SOURCE],[ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([CF_POSIX_VISIBLE]) + +if test "$cf_cv_posix_visible" = no; then + +cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) +cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) +cf_xopen_source= + +case "$host_os" in +(aix[[4-7]]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[[0-8]].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*|midnightbsd*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[[56]].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + CF_GNU_SOURCE($cf_XOPEN_SOURCE) + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[[6-9]]*) + # 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. + AC_MSG_WARN(this system does not provide usable locale support) + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=700 + ;; +(openbsd[[4-5]]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[[45]]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + CF_TRY_XOPEN_SOURCE + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +esac + +if test -n "$cf_xopen_source" ; then + CF_APPEND_CFLAGS($cf_xopen_source,true) +fi + +dnl In anything but the default case, we may have system-specific setting +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 ],[ +#ifndef _XOPEN_SOURCE +make an error +#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 ],[ +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif], + [cf_XOPEN_SOURCE_set_ok=yes], + [cf_XOPEN_SOURCE_set_ok=no]) + if test "$cf_XOPEN_SOURCE_set_ok" = no + then + AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) + fi + else + CF_TRY_XOPEN_SOURCE + fi +fi +fi # cf_cv_posix_visible +]) +dnl --------------------------------------------------------------------------- +dnl CF__SED_TRIMBLANKS version: 1 updated: 2021/01/02 09:31:20 +dnl ------------------ +dnl Trim something using sed, then trim extra whitespace +dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT +define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[ ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl diff --git a/deps/ncurses-6.3/Ada95/configure b/deps/ncurses-6.3/Ada95/configure new file mode 100755 index 0000000..0507ec8 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/configure @@ -0,0 +1,19174 @@ +#! /bin/sh +# From configure.in Revision: 1.83 . +# Guess values for system-dependent variables and create Makefiles. +# Generated by Autoconf 2.52.20210509. +# +# Copyright 2003-2020,2021 Thomas E. Dickey +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset="unset" +else + as_unset="false" +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: "${ac_max_here_lines=38}" + +ac_unique_file="gen/gen.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${datarootdir}/info' +mandir='${datarootdir}/man' + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo "$ac_feature" | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo "$ac_feature" | sed 's/-/_/g'` + case "$ac_option" in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst \ + | --runs | --run | --ru) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* \ + | --runs=* | --run=* | --ru=*) + runstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo "$ac_package" | sed 's/-/_/g'` + case "$ac_option" in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo "$ac_package" | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export "$ac_envvar" ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option}" "${host_alias=$ac_option}" "${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo "$ac_prev" | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo "$ac_var"` + case "$ac_val" in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo "$ac_var"` + case "$ac_val" in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: should be removed in autoconf 3.0. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat < if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +EOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue + cd "$ac_subdir" + # A "../" for each directory in /$ac_subdir. + ac_dots=`echo "$ac_subdir" | + sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir="$srcdir" ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_sub_srcdir="$srcdir/$ac_subdir" ;; + *) # Relative path. + ac_sub_srcdir="$ac_dots$srcdir/$ac_subdir" ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f "$ac_sub_srcdir/configure.gnu"; then + echo + $SHELL "$ac_sub_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_sub_srcdir/configure"; then + echo + $SHELL "$ac_sub_srcdir/configure" --help=recursive + elif test -f "$ac_sub_srcdir/configure.ac" || + test -f "$ac_sub_srcdir/configure.in"; then + echo + "$ac_configure" --help + else + echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if "$ac_init_version"; then + cat <<\EOF + +Copyright 2003-2020,2021 Thomas E. Dickey +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +EOF + exit 0 +fi +exec 5>config.log +cat >&5 </dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +PATH = $PATH + +_ASUNAME +} >&5 + +cat >&5 <\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + echo >&5 + echo "## ----------------- ##" >&5 + echo "## Cache variables. ##" >&5 + echo "## ----------------- ##" >&5 + echo >&5 + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} >&5 + sed "/^$/d" confdefs.h >conftest.log + if test -s conftest.log; then + echo >&5 + echo "## ------------ ##" >&5 + echo "## confdefs.h. ##" >&5 + echo "## ------------ ##" >&5 + echo >&5 + cat conftest.log >&5 + fi + (echo; echo) >&5 + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" >&5 + echo "$as_me: exit $exit_status" >&5 + rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' "$ac_signal" +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:949: 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" + fi +done + +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:960: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:968: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case "$ac_old_set,$ac_new_set" in + set,) + { echo "$as_me:984: 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:988: 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:994: 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:996: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:998: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. It doesn't matter if + # we pass some twice (in addition to the command line arguments). + if test "$ac_new_set" = set; then + case "$ac_new_val" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" + ;; + esac + fi +done +if "$ac_cache_corrupted"; then + { echo "$as_me:1017: 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:1019: 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 + +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" + +case `echo "testing\c" 2>/dev/null; echo 1,2,3`,`echo -n testing 2>/dev/null; echo 1,2,3` in + *c*,-n*) ECHO_N= + ECHO_C= # newlines do not sed ;-) only broken shells would use this case anyway + ECHO_T=' ' + ;; + *c*,* ) ECHO_N=-n + ECHO_C= + ECHO_T= + ;; + *) ECHO_N= + ECHO_C='\c' + ECHO_T= + ;; +esac +echo "#! $SHELL" >conftest.sh +echo "exit 0" >>conftest.sh +chmod +x conftest.sh +if { (echo "$as_me:1048: PATH=\".;.\"; conftest.sh") >&5 + (PATH=".;."; conftest.sh) 2>&5 + ac_status=$? + echo "$as_me:1051: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + ac_path_separator=';' +else + ac_path_separator=: +fi +PATH_SEPARATOR="$ac_path_separator" +rm -f conftest.sh + +ac_config_headers="$ac_config_headers include/ncurses_cfg.h:include/ncurses_cfg.hin" + +top_builddir=`pwd` + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:1081: 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 +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +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:1091: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:1095: 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 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:1104: 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:1108: 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:1113: 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:1120: 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 +else + ac_cv_host_alias=$host_alias +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:1129: 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:1134: 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/'` +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:1142: 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 +else + ac_cv_target_alias=$target_alias +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:1151: 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:1156: 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/'` +target_vendor=`echo "$ac_cv_target" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo "$ac_cv_target" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && +cat >>confdefs.h <&6 +else + cf_cv_system_name="$system_name" +fi + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && echo "$as_me:1188: 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:1192: 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:1194: 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 + +# 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:1202: 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 + +fi; + +### Save the given $CFLAGS to allow user-override. +cf_user_CFLAGS="$CFLAGS" + +### Default install-location +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:1217: 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 +else + if test -n "$GREP"; then + ac_cv_prog_GREP="$GREP" # 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_GREP="$ac_prog" +echo "$as_me:1232: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +GREP=$ac_cv_prog_GREP +if test -n "$GREP"; then + echo "$as_me:1240: result: $GREP" >&5 +echo "${ECHO_T}$GREP" >&6 +else + echo "$as_me:1243: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$GREP" && break +done +test -n "$GREP" || GREP=": " + +echo "$as_me:1251: 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 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + for ac_prog in gfgrep fgrep +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:1263: 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 +else + case $FGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_FGREP="$FGREP" # 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_FGREP="$ac_dir/$ac_word" + echo "$as_me:1280: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +FGREP=$ac_cv_path_FGREP + +if test -n "$FGREP"; then + echo "$as_me:1291: result: $FGREP" >&5 +echo "${ECHO_T}$FGREP" >&6 +else + echo "$as_me:1294: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$FGREP" && break +done +test -n "$FGREP" || FGREP=": " + + test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1302: error: cannot find workable fgrep" >&5 +echo "$as_me: error: cannot find workable fgrep" >&2;} + { (exit 1); exit 1; }; } + fi +fi +echo "$as_me:1307: result: $ac_cv_path_FGREP" >&5 +echo "${ECHO_T}$ac_cv_path_FGREP" >&6 + FGREP="$ac_cv_path_FGREP" + +echo "$as_me:1311: 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 + # non-vendor systems don't have a conflict + (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*) + prefix=/usr + ;; + (*) prefix=$ac_default_prefix + ;; + esac +fi +echo "$as_me:1323: result: $prefix" >&5 +echo "${ECHO_T}$prefix" >&6 + +if test "x$prefix" = "xNONE" ; then +echo "$as_me:1327: 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 \ + "$includedir" \ + "$includedir/ncurses" \ + "$prefix/include" \ + "$prefix/include/ncurses" \ + /usr/local/include \ + /usr/local/include/ncurses \ + /usr/include \ + /usr/include/ncurses +do + cf_dir=`eval echo "$cf_symbol"` + 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>&6 + break + fi + fi + test -n "$verbose" && echo " tested $cf_dir" 1>&6 +done +echo "$as_me:1350: result: $includedir" >&5 +echo "${ECHO_T}$includedir" >&6 +fi + +### Checks for programs. + +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" +if test -n "$ac_tool_prefix"; then + for ac_prog in gnatgcc gcc cc + 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:1367: 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 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$ac_prog" +echo "$as_me:1382: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1390: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1393: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in gnatgcc gcc cc +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:1406: 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 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="$ac_prog" +echo "$as_me:1421: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1429: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1432: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +test -z "$CC" && { { echo "$as_me:1442: 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:1447:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo "$2"` +{ (eval echo "$as_me:1450: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:1453: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:1455: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:1458: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:1460: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:1463: \$? = $ac_status" >&5 + (exit "$ac_status"); } + +cat >"conftest.$ac_ext" <<_ACEOF +#line 1467 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +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:1483: 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:1486: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1489: \$? = $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 +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +{ { echo "$as_me:1512: 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:1518: 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:1523: 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:1529: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1532: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1539: 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;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:1547: 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:1554: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1556: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1559: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1561: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1564: \$? = $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 +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:1580: 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:1586: 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:1592: 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 1598 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:1610: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1613: \$? = $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 + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +{ { echo "$as_me:1625: 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:1632: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:1636: 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 1642 "configure" +#include "confdefs.h" + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1657: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1660: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1663: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1666: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_compiler_gnu=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:1678: 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:1684: 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 1690 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1702: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1705: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1708: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1711: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_prog_cc_g=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:1721: 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 +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >"conftest.$ac_ext" <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1748: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1751: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1754: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1757: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 1769 "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1782: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1785: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1788: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1791: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +continue +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 1801 "configure" +#include "confdefs.h" +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1813: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1816: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1819: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1822: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +rm -rf conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo "$ac_declaration" >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +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" + +GCC_VERSION=none +if test "$GCC" = yes ; then + echo "$as_me:1852: 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/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + echo "$as_me:1856: result: $GCC_VERSION" >&5 +echo "${ECHO_T}$GCC_VERSION" >&6 +fi + +INTEL_COMPILER=no + +if test "$GCC" = yes ; then + case "$host_os" in + (linux*|gnu*) + echo "$as_me:1865: 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 1870 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __INTEL_COMPILER +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1887: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1890: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1893: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1896: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + INTEL_COMPILER=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:1907: result: $INTEL_COMPILER" >&5 +echo "${ECHO_T}$INTEL_COMPILER" >&6 + ;; + esac +fi + +CLANG_COMPILER=no + +if test "$GCC" = yes ; then + echo "$as_me:1916: 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 1920 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __clang__ +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1937: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1940: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1943: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1946: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + CLANG_COMPILER=yes + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:1956: result: $CLANG_COMPILER" >&5 +echo "${ECHO_T}$CLANG_COMPILER" >&6 +fi + +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:1965: 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:1972: 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:1976: 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:1983: 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 1988 "configure" +#include "confdefs.h" + + #include +int +main (void) +{ + + printf("hello!\\n"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:2002: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:2005: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:2008: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2011: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_clang_optok=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_clang_optok=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:2022: 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}:2028: testing adding option $cf_clang_opt ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_clang_opt" + + fi + done +fi + +echo "$as_me:2037: 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 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >"conftest.$ac_ext" <<_ACEOF +#line 2045 "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main (void) +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2094: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2097: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2100: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2103: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" +done +rm -f "conftest.$ac_ext" "conftest.$ac_objext" +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:2120: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:2123: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# This should have been defined by AC_PROG_CC +: "${CC:=cc}" + +echo "$as_me:2131: checking \$CFLAGS variable" >&5 +echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6 +case "x$CFLAGS" in +(*-[IUD]*) + echo "$as_me:2135: result: broken" >&5 +echo "${ECHO_T}broken" >&6 + { echo "$as_me:2137: 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= + for cf_arg in $cf_flags + do + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_arg +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 + + done + ;; +(*) + echo "$as_me:2245: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + ;; +esac + +echo "$as_me:2250: checking \$CC variable" >&5 +echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6 +case "$CC" in +(*[\ \ ]-*) + echo "$as_me:2254: result: broken" >&5 +echo "${ECHO_T}broken" >&6 + { echo "$as_me:2256: 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/[ ]*[ ]-[^ ].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[IUDfgOW]*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_arg +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 + + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6 + +echo "${as_me:-configure}:2373: testing resulting CC: '$CC' ..." 1>&5 + + test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6 + +echo "${as_me:-configure}:2377: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5 + + test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6 + +echo "${as_me:-configure}:2381: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5 + + ;; +(*) + echo "$as_me:2385: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + ;; +esac + +echo "$as_me:2390: 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 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + for ac_prog in gegrep egrep +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:2402: 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 +else + case $EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_EGREP="$EGREP" # 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_EGREP="$ac_dir/$ac_word" + echo "$as_me:2419: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +EGREP=$ac_cv_path_EGREP + +if test -n "$EGREP"; then + echo "$as_me:2430: result: $EGREP" >&5 +echo "${ECHO_T}$EGREP" >&6 +else + echo "$as_me:2433: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$EGREP" && break +done +test -n "$EGREP" || EGREP=": " + + test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:2441: error: cannot find workable egrep" >&5 +echo "$as_me: error: cannot find workable egrep" >&2;} + { (exit 1); exit 1; }; } + fi +fi +echo "$as_me:2446: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6 + EGREP="$ac_cv_path_EGREP" + +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:2456: 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 + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 2477 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:2482: \"$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:2488: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 2511 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:2515: \"$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:2521: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:2558: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 2568 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:2573: \"$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:2579: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 2602 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:2606: \"$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:2612: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + : +else + { { echo "$as_me:2640: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +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" + +if test $ac_cv_c_compiler_gnu = yes; then + echo "$as_me:2653: 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 2660 "configure" +#include "confdefs.h" +#include +int Autoconf = TIOCGETP; +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +else + ac_cv_prog_gcc_traditional=no +fi +rm -rf conftest* + + if test $ac_cv_prog_gcc_traditional = no; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 2675 "configure" +#include "confdefs.h" +#include +int Autoconf = TCGETA; +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +fi +rm -rf conftest* + + fi +fi +echo "$as_me:2688: 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:2695: 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 +else + +cat > conftest.$ac_ext <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2713: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + test -f conftest2.$ac_objext && { (eval echo "$as_me:2715: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2718: \$? = $ac_status" >&5 + (exit "$ac_status"); }; +then + eval cf_cv_prog_CC_c_o=yes +else + eval cf_cv_prog_CC_c_o=no +fi +rm -rf ./conftest* + +fi +if test "$cf_cv_prog_CC_c_o" = yes; then + echo "$as_me:2729: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:2732: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +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:2753: 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 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog" +echo "$as_me:2768: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:2776: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:2779: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +test -z "$AWK" && { { echo "$as_me:2786: error: No awk program found" >&5 +echo "$as_me: error: No awk program found" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:2790: checking for egrep" >&5 +echo $ECHO_N "checking for egrep... $ECHO_C" >&6 +if test "${ac_cv_prog_egrep+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if echo a | (grep -E '(a|b)') >/dev/null 2>&1 + then ac_cv_prog_egrep='grep -E' + else ac_cv_prog_egrep='egrep' + fi +fi +echo "$as_me:2800: result: $ac_cv_prog_egrep" >&5 +echo "${ECHO_T}$ac_cv_prog_egrep" >&6 + EGREP=$ac_cv_prog_egrep + + test -z "$EGREP" && { { echo "$as_me:2804: error: No egrep program found" >&5 +echo "$as_me: error: No egrep program found" >&2;} + { (exit 1); exit 1; }; } + +# 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: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# 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:2820: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_IFS=$IFS; IFS=$ac_path_separator + for ac_dir in $PATH; do + IFS=$ac_save_IFS + # Account for people who put trailing slashes in PATH elements. + case $ac_dir/ in + / | ./ | .// | /cC/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if $as_executable_p "$ac_dir/$ac_prog"; then + if test $ac_prog = install && + grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:2869: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +echo "$as_me:2880: 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:2884: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:2887: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:2891: 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 +echo >conf$$.dst +echo first >conf$$.src +if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then + cf_prog_ln_sf=yes +else + cf_prog_ln_sf=no +fi +rm -f conf$$.dst conf$$src +echo "$as_me:2903: 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" + +# 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: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# 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:2920: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_IFS=$IFS; IFS=$ac_path_separator + for ac_dir in $PATH; do + IFS=$ac_save_IFS + # Account for people who put trailing slashes in PATH elements. + case $ac_dir/ in + / | ./ | .// | /cC/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if $as_executable_p "$ac_dir/$ac_prog"; then + if test $ac_prog = install && + grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:2969: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +case $INSTALL in +(/*) + ;; +(*) + cf_dir=`echo "$INSTALL" | sed -e 's%/[^/]*$%%'` + test -z "$cf_dir" && cf_dir=. + INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`" + ;; +esac + +echo "$as_me:2990: 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. +if test "${enable_stripping+set}" = set; then + enableval="$enable_stripping" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + enable_stripping=no + else + enable_stripping=yes + fi +else + enableval=yes + enable_stripping=yes + +fi; +echo "$as_me:3007: result: $enable_stripping" >&5 +echo "${ECHO_T}$enable_stripping" >&6 + +if test "$enable_stripping" = yes +then + INSTALL_OPT_S="-s" +else + INSTALL_OPT_S= +fi + +: "${INSTALL:=install}" +echo "$as_me:3018: 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 +else + + rm -rf ./conftest* + date >conftest.in + mkdir conftest.out + sleep 3 + if $INSTALL -p conftest.in conftest.out 2>/dev/null + then + if test -f conftest.out/conftest.in + then + test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \ + test conftest.out/conftest.in -nt conftest.in 2>conftest.err + if test -s conftest.err + then + cf_cv_install_p=no + else + cf_cv_install_p=yes + fi + else + cf_cv_install_p=no + fi + else + cf_cv_install_p=no + fi + rm -rf ./conftest* + +fi +echo "$as_me:3049: result: $cf_cv_install_p" >&5 +echo "${ECHO_T}$cf_cv_install_p" >&6 + +echo "$as_me:3052: 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) + with_install_o=yes + ;; +(*) + with_install_o=no + ;; +esac + +echo "$as_me:3063: result: $with_install_o" >&5 +echo "${ECHO_T}$with_install_o" >&6 +if test "x$with_install_o" = xyes +then + INSTALL_OPT_O="`id root|sed -e 's/uid=[0-9]*(/ -o /' -e 's/gid=[0-9]*(/ -g /' -e 's/ [^=[:space:]][^=[:space:]]*=.*/ /' -e 's/)//g'`" +else + INSTALL_OPT_O= +fi + +echo "$as_me:3072: 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 +else + ac_cv_sys_long_file_names=yes +# Test for long file names in all the places we know might matter: +# . the current directory, where building will happen +# $prefix/lib where we will be installing things +# $exec_prefix/lib likewise +# eval it to expand exec_prefix. +# $TMPDIR if set, where it might want to write temporary files +# if $TMPDIR is not set: +# /tmp where it might want to write temporary files +# /var/tmp likewise +# /usr/tmp likewise +if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then + ac_tmpdirs=$TMPDIR +else + ac_tmpdirs='/tmp /var/tmp /usr/tmp' +fi +for ac_dir in . $ac_tmpdirs `eval echo "$prefix/lib" "$exec_prefix/lib"` ; do + test -d "$ac_dir" || continue + test -w "$ac_dir" || continue # It is less confusing to not echo anything here. + ac_xdir=$ac_dir/cf$$ + (umask 077 && mkdir "$ac_xdir" 2>/dev/null) || continue + ac_tf1=$ac_xdir/conftest9012345 + ac_tf2=$ac_xdir/conftest9012346 + (echo 1 >"$ac_tf1") 2>/dev/null + (echo 2 >"$ac_tf2") 2>/dev/null + ac_val=`cat "$ac_tf1" 2>/dev/null` + if test ! -f "$ac_tf1" || test "$ac_val" != 1; then + ac_cv_sys_long_file_names=no + rm -rf "$ac_xdir" 2>/dev/null + break + fi + rm -rf "$ac_xdir" 2>/dev/null +done +fi +echo "$as_me:3111: 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 + +cat >>confdefs.h <<\EOF +#define HAVE_LONG_FILE_NAMES 1 +EOF + +fi + +# if we find pkg-config, check if we should install the ".pc" files. + +echo "$as_me:3123: 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. +if test "${with_pkg_config+set}" = set; then + withval="$with_pkg_config" + cf_pkg_config=$withval +else + cf_pkg_config=yes +fi; +echo "$as_me:3133: result: $cf_pkg_config" >&5 +echo "${ECHO_T}$cf_pkg_config" >&6 + +case "$cf_pkg_config" in +(no) + PKG_CONFIG=none + ;; +(yes) + +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:3145: 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 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:3162: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG + +if test -n "$PKG_CONFIG"; then + echo "$as_me:3173: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6 +else + echo "$as_me:3176: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:3185: 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 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:3202: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="none" + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG + +if test -n "$ac_pt_PKG_CONFIG"; then + echo "$as_me:3214: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 +else + echo "$as_me:3217: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + PKG_CONFIG=$ac_pt_PKG_CONFIG +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$PKG_CONFIG" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval PKG_CONFIG="$PKG_CONFIG" + case ".$PKG_CONFIG" in + (.NONE/*) + PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:3260: 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:3267: 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:3273: checking for pkg-config library directory" >&5 +echo $ECHO_N "checking for pkg-config library directory... $ECHO_C" >&6 + ;; +(*) + echo "$as_me:3277: checking for $PKG_CONFIG library directory" >&5 +echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6 + ;; +esac + +cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[ ]*,,'` + +# Check whether --with-pkg-config-libdir or --without-pkg-config-libdir was given. +if test "${with_pkg_config_libdir+set}" = set; then + withval="$with_pkg_config_libdir" + cf_search_path=$withval +else + test "x$PKG_CONFIG" != xnone && cf_search_path=yes +fi; + +case x$cf_search_path in +(x/*) + ;; +(xyes) + cf_search_path= + test -n "$verbose" && echo " auto..." 1>&6 + +echo "${as_me:-configure}:3299: testing auto... ..." 1>&5 + + # Look for the library directory using the same prefix as the executable + echo "$as_me:3302: checking for search-list" >&5 +echo $ECHO_N "checking for search-list... $ECHO_C" >&6 + if test "x$PKG_CONFIG" = xnone + then + cf_path=$prefix + else + cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'` + cf_search_path=` + "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | awk "\ +/^Scanning directory #[1-9][0-9]* '.*'$/{ \ + sub(\"^[^']*'\",\"\"); \ + sub(\"'.*\",\"\"); \ + printf \" %s\", \\$0; } \ +/trying path:/{ + sub(\"^.* trying path: \",\"\"); + sub(\" for no-such-package.*$\",\"\"); + printf \" %s\", \\$0; +} +{ next; } \ +"` + fi + + if test -z "$cf_search_path" + then + # If you don't like using the default architecture, you have to specify + # the intended library directory and corresponding compiler/linker + # options. + # + # This case allows for Debian's 2014-flavor of multiarch, along with + # the most common variations before that point. Some other variants + # spell the directory differently, e.g., "pkg-config", and put it in + # unusual places. + # + # pkg-config has always been poorly standardized, which is ironic... + case x`(arch) 2>/dev/null` in + (*64) + cf_test_path="\ + $cf_path/lib/*64-linux-gnu \ + $cf_path/share \ + $cf_path/lib64 \ + $cf_path/lib32 \ + $cf_path/lib" + ;; + (*) + cf_test_path="\ + $cf_path/lib/*-linux-gnu \ + $cf_path/share \ + $cf_path/lib32 \ + $cf_path/lib \ + $cf_path/libdata" + ;; + esac + for cf_config in $cf_test_path + do + test -d "$cf_config/pkgconfig" && cf_search_path="$cf_search_path $cf_config/pkgconfig" + done + fi + + echo "$as_me:3360: result: $cf_search_path" >&5 +echo "${ECHO_T}$cf_search_path" >&6 + + ;; +(*) + ;; +esac + +echo "$as_me:3368: 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 +do + if test -d "$cf_config" + then + cf_pkg_config_path=$cf_config + break + fi +done +echo "$as_me:3379: result: $cf_pkg_config_path" >&5 +echo "${ECHO_T}$cf_pkg_config_path" >&6 + +if test "x$cf_pkg_config_path" != xnone ; then + # limit this to the first directory found + PKG_CONFIG_LIBDIR="$cf_pkg_config_path" +fi + +echo "$as_me:3387: 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. +if test "${with_tests+set}" = set; then + withval="$with_tests" + cf_with_tests=$withval +else + cf_with_tests=yes +fi; +echo "$as_me:3397: result: $cf_with_tests" >&5 +echo "${ECHO_T}$cf_with_tests" >&6 + +echo "$as_me:3400: 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. +if test "${enable_mixed_case+set}" = set; then + enableval="$enable_mixed_case" + enable_mixedcase=$enableval +else + enable_mixedcase=auto +fi; +echo "$as_me:3410: result: $enable_mixedcase" >&5 +echo "${ECHO_T}$enable_mixedcase" >&6 +if test "$enable_mixedcase" = "auto" ; then + +echo "$as_me:3414: 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 +else + +if test "$cross_compiling" = yes ; then + case "$target_alias" in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +fi + +fi +echo "$as_me:3441: result: $cf_cv_mixedcase" >&5 +echo "${ECHO_T}$cf_cv_mixedcase" >&6 +test "$cf_cv_mixedcase" = yes && +cat >>confdefs.h <<\EOF +#define MIXEDCASE_FILENAMES 1 +EOF + +else + cf_cv_mixedcase=$enable_mixedcase + if test "$enable_mixedcase" = "yes" ; then + cat >>confdefs.h <<\EOF +#define MIXEDCASE_FILENAMES 1 +EOF + + fi +fi + +# do this after mixed-case option (tags/TAGS is not as important as tic). +echo "$as_me:3459: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:3479: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:3483: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +echo "$as_me:3488: 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 +else + + rm -rf conftest* + ( + mkdir conftest || exit 1 + cd conftest + cat >makefile <<'CF_EOF' +.PHONY: always +DATA=0 +always: always.out + @echo "** making $@ $(DATA)" +once: once.out + @echo "** making $@ $(DATA)" +always.out: + @echo "** making $@ $(DATA)" + echo $(DATA) > $@ +once.out: + @echo "** making $@ $(DATA)" + echo $(DATA) > $@ +CF_EOF + for cf_data in 1 2 3 + do + ${MAKE:-make} always DATA=$cf_data + ${MAKE:-make} once DATA=$cf_data + ${MAKE:-make} -t always once + if test -f always ; then + echo "no (case 1)" > ../conftest.tmp + elif test ! -f always.out ; then + echo "no (case 2)" > ../conftest.tmp + elif test ! -f once.out ; then + echo "no (case 3)" > ../conftest.tmp + elif ! cmp -s always.out once.out ; then + echo "no (case 4)" > ../conftest.tmp + diff always.out once.out + else + cf_check="`cat always.out`" + if test "x$cf_check" != "x$cf_data" ; then + echo "no (case 5)" > ../conftest.tmp + else + echo yes > ../conftest.tmp + rm -f ./*.out + continue + fi + fi + break + done + ) >&5 2>&1 + cf_cv_make_PHONY="`cat conftest.tmp`" + rm -rf conftest* + +fi +echo "$as_me:3543: result: $cf_cv_make_PHONY" >&5 +echo "${ECHO_T}$cf_cv_make_PHONY" >&6 +MAKE_NO_PHONY="#" +MAKE_PHONY="#" +test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY= +test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY= + +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:3554: 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 +else + if test -n "$CTAGS"; then + ac_cv_prog_CTAGS="$CTAGS" # 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_CTAGS="$ac_prog" +echo "$as_me:3569: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CTAGS=$ac_cv_prog_CTAGS +if test -n "$CTAGS"; then + echo "$as_me:3577: result: $CTAGS" >&5 +echo "${ECHO_T}$CTAGS" >&6 +else + echo "$as_me:3580: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CTAGS" && break +done + +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:3591: 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 +else + if test -n "$ETAGS"; then + ac_cv_prog_ETAGS="$ETAGS" # 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_ETAGS="$ac_prog" +echo "$as_me:3606: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ETAGS=$ac_cv_prog_ETAGS +if test -n "$ETAGS"; then + echo "$as_me:3614: result: $ETAGS" >&5 +echo "${ECHO_T}$ETAGS" >&6 +else + echo "$as_me:3617: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ETAGS" && break +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:3626: 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 +else + if test -n "$MAKE_LOWER_TAGS"; then + ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # 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_MAKE_LOWER_TAGS="yes" +echo "$as_me:3641: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no" +fi +fi +MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS +if test -n "$MAKE_LOWER_TAGS"; then + echo "$as_me:3650: result: $MAKE_LOWER_TAGS" >&5 +echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 +else + echo "$as_me:3653: 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:3660: 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 +else + if test -n "$MAKE_UPPER_TAGS"; then + ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # 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_MAKE_UPPER_TAGS="yes" +echo "$as_me:3675: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no" +fi +fi +MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS +if test -n "$MAKE_UPPER_TAGS"; then + echo "$as_me:3684: result: $MAKE_UPPER_TAGS" >&5 +echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 +else + echo "$as_me:3687: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +echo "$as_me:3707: 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 </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}:3737: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5 + + ;; + esac + done + rm -f cf_makeflags.tmp + +fi +echo "$as_me:3745: 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:3751: 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 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib" +echo "$as_me:3766: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:3774: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:3777: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:3786: 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 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_ac_ct_RANLIB="ranlib" +echo "$as_me:3801: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB="':'" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:3810: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:3813: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +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:3825: 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 +else + if test -n "$LD"; then + ac_cv_prog_LD="$LD" # 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_LD="${ac_tool_prefix}ld" +echo "$as_me:3840: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LD=$ac_cv_prog_LD +if test -n "$LD"; then + echo "$as_me:3848: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:3851: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:3860: 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 +else + if test -n "$ac_ct_LD"; then + ac_cv_prog_ac_ct_LD="$ac_ct_LD" # 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_ac_ct_LD="ld" +echo "$as_me:3875: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_LD" && ac_cv_prog_ac_ct_LD="ld" +fi +fi +ac_ct_LD=$ac_cv_prog_ac_ct_LD +if test -n "$ac_ct_LD"; then + echo "$as_me:3884: result: $ac_ct_LD" >&5 +echo "${ECHO_T}$ac_ct_LD" >&6 +else + echo "$as_me:3887: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + LD=$ac_ct_LD +else + LD="$ac_cv_prog_LD" +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:3899: 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 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" +echo "$as_me:3914: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:3922: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:3925: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:3934: 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 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" +echo "$as_me:3949: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:3958: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:3961: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +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:3973: 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 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" +echo "$as_me:3988: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:3996: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:3999: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:4008: 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 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" +echo "$as_me:4023: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:4032: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:4035: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +echo "$as_me:4044: 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 +else + + case "$cf_cv_system_name" in + (*-msvc*) + cf_cv_ar_flags='' + cat >mk_static_lib.sh <<-EOF + #!$SHELL + MSVC_BIN="$AR" + out="\$1" + shift + exec \$MSVC_BIN -out:"\$out" \$@ + EOF + chmod +x mk_static_lib.sh + AR=`pwd`/mk_static_lib.sh + ;; + (*) + cf_cv_ar_flags=unknown + for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv + do + + # check if $ARFLAGS already contains this choice + if test "x$ARFLAGS" != "x" ; then + cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` + if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then + cf_cv_ar_flags= + break + fi + fi + + rm -f "conftest.$ac_cv_objext" + rm -f conftest.a + + cat >"conftest.$ac_ext" <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4087: \$? = $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 + if test -f conftest.a ; then + cf_cv_ar_flags="$cf_ar_flags" + break + fi + else + test -n "$verbose" && echo " cannot compile test-program" 1>&6 + +echo "${as_me:-configure}:4098: testing cannot compile test-program ..." 1>&5 + + break + fi + done + rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext" + ;; + esac + +fi +echo "$as_me:4108: result: $cf_cv_ar_flags" >&5 +echo "${ECHO_T}$cf_cv_ar_flags" >&6 + +if test -n "$ARFLAGS" ; then + if test -n "$cf_cv_ar_flags" ; then + ARFLAGS="$ARFLAGS $cf_cv_ar_flags" + fi +else + ARFLAGS=$cf_cv_ar_flags +fi + + echo "$as_me:4119: 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:4126: result: $PATH_SEPARATOR" >&5 +echo "${ECHO_T}$PATH_SEPARATOR" >&6 + +echo "$as_me:4129: checking if you have specified an install-prefix" >&5 +echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6 + +# Check whether --with-install-prefix or --without-install-prefix was given. +if test "${with_install_prefix+set}" = set; then + withval="$with_install_prefix" + case "$withval" in + (yes|no) + ;; + (*) DESTDIR="$withval" + ;; + esac +fi; +echo "$as_me:4142: result: $DESTDIR" >&5 +echo "${ECHO_T}$DESTDIR" >&6 + +############################################################################### + +# If we're cross-compiling, allow the user to override the tools and their +# options. The configure script is oriented toward identifying the host +# compiler, etc., but we need a build compiler to generate parts of the source. + +if test "$cross_compiling" = yes ; then + + # defaults that we might want to override + : ${BUILD_CFLAGS:=''} + : ${BUILD_CPPFLAGS:=''} + : ${BUILD_LDFLAGS:=''} + : ${BUILD_LIBS:=''} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} + +# Check whether --with-build-cc or --without-build-cc was given. +if test "${with_build_cc+set}" = set; then + withval="$with_build_cc" + BUILD_CC="$withval" +else + for ac_prog in gcc clang c99 c89 cc cl +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:4170: 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 +else + if test -n "$BUILD_CC"; then + ac_cv_prog_BUILD_CC="$BUILD_CC" # 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_BUILD_CC="$ac_prog" +echo "$as_me:4185: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +BUILD_CC=$ac_cv_prog_BUILD_CC +if test -n "$BUILD_CC"; then + echo "$as_me:4193: result: $BUILD_CC" >&5 +echo "${ECHO_T}$BUILD_CC" >&6 +else + echo "$as_me:4196: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$BUILD_CC" && break +done +test -n "$BUILD_CC" || BUILD_CC="none" + +fi; + echo "$as_me:4205: checking for native build C compiler" >&5 +echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6 + echo "$as_me:4207: result: $BUILD_CC" >&5 +echo "${ECHO_T}$BUILD_CC" >&6 + + echo "$as_me:4210: 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. +if test "${with_build_cpp+set}" = set; then + withval="$with_build_cpp" + BUILD_CPP="$withval" +else + BUILD_CPP='${BUILD_CC} -E' +fi; + echo "$as_me:4220: result: $BUILD_CPP" >&5 +echo "${ECHO_T}$BUILD_CPP" >&6 + + echo "$as_me:4223: 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. +if test "${with_build_cflags+set}" = set; then + withval="$with_build_cflags" + BUILD_CFLAGS="$withval" +fi; + echo "$as_me:4231: result: $BUILD_CFLAGS" >&5 +echo "${ECHO_T}$BUILD_CFLAGS" >&6 + + echo "$as_me:4234: 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. +if test "${with_build_cppflags+set}" = set; then + withval="$with_build_cppflags" + BUILD_CPPFLAGS="$withval" +fi; + echo "$as_me:4242: result: $BUILD_CPPFLAGS" >&5 +echo "${ECHO_T}$BUILD_CPPFLAGS" >&6 + + echo "$as_me:4245: 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. +if test "${with_build_ldflags+set}" = set; then + withval="$with_build_ldflags" + BUILD_LDFLAGS="$withval" +fi; + echo "$as_me:4253: result: $BUILD_LDFLAGS" >&5 +echo "${ECHO_T}$BUILD_LDFLAGS" >&6 + + echo "$as_me:4256: 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. +if test "${with_build_libs+set}" = set; then + withval="$with_build_libs" + BUILD_LIBS="$withval" +fi; + echo "$as_me:4264: result: $BUILD_LIBS" >&5 +echo "${ECHO_T}$BUILD_LIBS" >&6 + + # this assumes we're on Unix. + BUILD_EXEEXT= + BUILD_OBJEXT=o + + : ${BUILD_CC:='${CC}'} + + if { test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}'; } ; then + { { echo "$as_me:4274: 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;} + { (exit 1); exit 1; }; } + fi + +else + : ${BUILD_CC:='${CC}'} + : ${BUILD_CPP:='${CPP}'} + : ${BUILD_CFLAGS:='${CFLAGS}'} + : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} + : ${BUILD_LDFLAGS:='${LDFLAGS}'} + : ${BUILD_LIBS:='${LIBS}'} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} +fi + +############################################################################### + +### Options to allow the user to specify the set of libraries which are used. +### Use "--without-normal --with-shared" to allow the default model to be +### shared, for example. +cf_list_models="" + +echo "$as_me:4299: checking if you want to build shared C-objects" >&5 +echo $ECHO_N "checking if you want to build shared C-objects... $ECHO_C" >&6 + +# Check whether --with-shared or --without-shared was given. +if test "${with_shared+set}" = set; then + withval="$with_shared" + with_shared=$withval +else + with_shared=no +fi; +echo "$as_me:4309: result: $with_shared" >&5 +echo "${ECHO_T}$with_shared" >&6 +test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared" + +echo "$as_me:4313: checking for specified models" >&5 +echo $ECHO_N "checking for specified models... $ECHO_C" >&6 +test -z "$cf_list_models" && cf_list_models=normal +echo "$as_me:4316: 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:4321: 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:4324: result: $DFT_LWR_MODEL" >&5 +echo "${ECHO_T}$DFT_LWR_MODEL" >&6 + +DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +echo "$as_me:4329: checking for specific curses-directory" >&5 +echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6 + +# Check whether --with-curses-dir or --without-curses-dir was given. +if test "${with_curses_dir+set}" = set; then + withval="$with_curses_dir" + cf_cv_curses_dir=$withval +else + cf_cv_curses_dir=no +fi; +echo "$as_me:4339: result: $cf_cv_curses_dir" >&5 +echo "${ECHO_T}$cf_cv_curses_dir" >&6 + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:4370: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + if test -d "$cf_cv_curses_dir" + then + +if test -n "$cf_cv_curses_dir/include" ; then + for cf_add_incdir in $cf_cv_curses_dir/include + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4406 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4418: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4421: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4424: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4427: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:4444: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_curses_dir/lib" ; then + for cf_add_libdir in $cf_cv_curses_dir/lib + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:4480: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + fi +fi + +cf_ncuconfig_root=ncurses +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:4495: checking pkg-config for $cf_ncuconfig_root" >&5 +echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + echo "$as_me:4498: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:4501: checking if the $cf_ncuconfig_root package files work" >&5 +echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6 + cf_have_ncuconfig=unknown + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`" + cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" + + # while -W for passing linker flags is prevalent, it is not "standard". + # At least one wrapper for c89/c99 (in Apple's xcode) has its own + # incompatible _and_ non-standard -W option which gives an error. Work + # around that pitfall. + case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in + (x*c[89]9@@*-W*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkg_cflags +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4634 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:4646: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:4649: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:4652: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4655: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_test_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 4661 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:4668: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:4671: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:4673: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4676: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_test_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + + if test "x$cf_test_ncuconfig" != xyes; then + cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_cflags="$cf_temp" + cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_libs="$cf_temp" + fi + ;; + esac + +for cf_add_cflags in $cf_pkg_cflags +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4850 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:4862: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:4865: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:4868: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4871: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 4877 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:4884: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:4887: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:4889: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4892: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:4909: result: $cf_have_ncuconfig" >&5 +echo "${ECHO_T}$cf_have_ncuconfig" >&6 + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + +echo "$as_me:4925: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 4943 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4958: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4961: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4964: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4967: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:4983: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + + fi + + else + echo "$as_me:5018: result: no" >&5 +echo "${ECHO_T}no" >&6 + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + +if test -n "$ac_tool_prefix"; then + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config + 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:5034: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NCURSES_CONFIG"; then + ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:5049: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG +if test -n "$NCURSES_CONFIG"; then + echo "$as_me:5057: result: $NCURSES_CONFIG" >&5 +echo "${ECHO_T}$NCURSES_CONFIG" >&6 +else + echo "$as_me:5060: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NCURSES_CONFIG" && break + done +fi +if test -z "$NCURSES_CONFIG"; then + ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config +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:5073: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NCURSES_CONFIG"; then + ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # 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_ac_ct_NCURSES_CONFIG="$ac_prog" +echo "$as_me:5088: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG +if test -n "$ac_ct_NCURSES_CONFIG"; then + echo "$as_me:5096: result: $ac_ct_NCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6 +else + echo "$as_me:5099: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_NCURSES_CONFIG" && break +done +test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none" + + NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG +fi + + if test "$NCURSES_CONFIG" != none ; then + +for cf_add_cflags in `$NCURSES_CONFIG --cflags` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + # even with config script, some packages use no-override for curses.h + +echo "$as_me:5256: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h ncurses/ncurses.h \ + curses.h ncurses/curses.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 5268 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5280: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5283: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5286: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5289: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:5300: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:5304: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:5314: 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 5320 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:5324: \"$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:5330: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:5349: 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 <>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <"conftest.$ac_ext" <<_ACEOF +#line 5405 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5417: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5420: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5423: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5426: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:5443: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +} + +echo "$as_me:5462: checking for $cf_ncuhdr_root header in include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5474 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5498: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5501: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5504: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5507: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + test "$cf_cv_ncurses_h" != no && break + done + +fi +echo "$as_me:5522: result: $cf_cv_ncurses_h" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h" >&6 + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +echo "$as_me:5529: checking for $cf_ncuhdr_root include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$verbose" && echo + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" + test -d "$cf_header_path/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" + test -d "$prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/$cf_ncuhdr_root" && cf_search="$cf_search $includedir/$cf_ncuhdr_root" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/$cf_ncuhdr_root" && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" +} + +cf_search="$cf_search $cf_header_path_list" + + test -n "$verbose" && echo "search path $cf_search" + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + +if test -n "$cf_incdir" ; then + for cf_add_incdir in $cf_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5650 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5662: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5665: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5668: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5671: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:5688: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + for cf_header in \ + ncurses.h \ + curses.h + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5711 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5735: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5738: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5741: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5744: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h2=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h2=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:5765: error: not found" >&5 +echo "$as_me: error: not found" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:5770: result: $cf_cv_ncurses_h2" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 + + cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'` + cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`" + if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then + cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header" + fi + +if test -n "$cf_1st_incdir" ; then + for cf_add_incdir in $cf_1st_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5806 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5818: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5821: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5824: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5827: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:5844: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case "$cf_cv_ncurses_header" in +(*ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_H 1 +EOF + + ;; +esac + +case "$cf_cv_ncurses_header" in +(ncurses/curses.h|ncurses/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_NCURSES_H 1 +EOF + + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_NCURSES_H 1 +EOF + + ;; +esac + +echo "$as_me:5892: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 5910 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5925: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5928: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5931: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5934: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:5950: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +# some applications need this, but should check for NCURSES_VERSION + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:5988: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:6014: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:6017: \$? = $ac_status" >&5 + (exit "$ac_status"); } + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 6027 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:6052: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6055: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:6057: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6060: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f "$cf_tempfile" + +fi +echo "$as_me:6074: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_root=ncurses + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +echo "$as_me:6087: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 6095 "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 Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6114: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6117: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6120: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6123: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6134: 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 + echo "$as_me:6137: checking for initscr in -lgpm" >&5 +echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 6145 "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 initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6164: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6167: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6170: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6173: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6184: result: $ac_cv_lib_gpm_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 +if test "$ac_cv_lib_gpm_initscr" = yes; then + LIBS="$cf_ncurses_SAVE" +else + cf_ncurses_LIBS="-lgpm" +fi + +fi + +case "$host_os" in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it is static). + if test "$cf_nculib_root" = ncurses ; then + echo "$as_me:6199: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 6207 "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 tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6226: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6229: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6232: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6235: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6246: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test "$ac_cv_lib_mytinfo_tgoto" = yes; then + cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" +fi + + fi + ;; +esac + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +else + + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no' + cf_libdir="" + echo "$as_me:6295: checking for initscr" >&5 +echo $ECHO_N "checking for initscr... $ECHO_C" >&6 +if test "${ac_cv_func_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 6301 "configure" +#include "confdefs.h" +#define initscr autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef initscr + +#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 initscr (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_initscr) || defined (__stub___initscr) +#error found stub for initscr +#endif + + return initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6332: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6335: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6338: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6341: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:6351: result: $ac_cv_func_initscr" >&5 +echo "${ECHO_T}$ac_cv_func_initscr" >&6 +if test "$ac_cv_func_initscr" = yes; then + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' +else + + cf_save_LIBS="$LIBS" + echo "$as_me:6358: checking for initscr in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 + LIBS="-l$cf_nculib_root $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 6362 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6374: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6377: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6380: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6383: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:6385: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:6392: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" + test -d "$cf_library_path/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/lib/$cf_nculib_root" + test -d "$prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_libdir in $cf_search + do + echo "$as_me:6460: checking for -l$cf_nculib_root in $cf_libdir" >&5 +echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 + LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 6464 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6476: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6479: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6482: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6485: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:6487: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:6494: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_save_LIBS" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi + +eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\" + +if test "$cf_found_library" = no ; then + { { echo "$as_me:6509: error: Cannot link $cf_nculib_root library" >&5 +echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +if test -n "$cf_ncurses_LIBS" ; then + echo "$as_me:6517: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 +echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + cat >"conftest.$ac_ext" <<_ACEOF +#line 6527 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6539: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6542: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6545: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6548: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:6550: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:6555: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_ncurses_SAVE" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <&5 +echo $ECHO_N "checking if you want wide-character code... $ECHO_C" >&6 + +# Check whether --enable-widec or --disable-widec was given. +if test "${enable_widec+set}" = set; then + enableval="$enable_widec" + with_widec=$enableval +else + with_widec=no +fi; +echo "$as_me:6583: result: $with_widec" >&5 +echo "${ECHO_T}$with_widec" >&6 +if test "$with_widec" = yes ; then + +for ac_header in wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:6590: 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 6596 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:6600: \"$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:6606: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:6625: 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 <&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 +else + + cf_save_LIBS="$LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 6643 "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_WCHAR_H +#include +#endif + +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6661: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6664: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6667: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6670: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_utf8_lib=yes +else + echo "$as_me: failed program was:" >&5 +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. +cf_cv_header_path_utf8= +cf_cv_library_path_utf8= + +echo "${as_me:-configure}:6682: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 + +cf_save_LIBS="$LIBS" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 6687 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6700: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6703: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6706: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6709: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +LIBS="-lutf8 $cf_save_LIBS" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 6723 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6736: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6739: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6742: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6745: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + cf_cv_library_file_utf8="-lutf8" + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_find_linkage_utf8=no + LIBS="$cf_save_LIBS" + + test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 + +echo "${as_me:-configure}:6762: testing find linkage for utf8 library ..." 1>&5 + +echo "${as_me:-configure}:6764: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/utf8" && cf_search="$cf_search $cf_header_path/include/utf8" + test -d "$cf_header_path/include/utf8/include" && cf_search="$cf_search $cf_header_path/include/utf8/include" + test -d "$cf_header_path/utf8/include" && cf_search="$cf_search $cf_header_path/utf8/include" + test -d "$cf_header_path/utf8/include/utf8" && cf_search="$cf_search $cf_header_path/utf8/include/utf8" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/utf8" && cf_search="$cf_search $prefix/include/utf8" + test -d "$prefix/include/utf8/include" && cf_search="$cf_search $prefix/include/utf8/include" + test -d "$prefix/utf8/include" && cf_search="$cf_search $prefix/utf8/include" + test -d "$prefix/utf8/include/utf8" && cf_search="$cf_search $prefix/utf8/include/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/utf8" && cf_search="$cf_search $cf_subdir_prefix/include/utf8" + test -d "$cf_subdir_prefix/include/utf8/include" && cf_search="$cf_search $cf_subdir_prefix/include/utf8/include" + test -d "$cf_subdir_prefix/utf8/include" && cf_search="$cf_search $cf_subdir_prefix/utf8/include" + test -d "$cf_subdir_prefix/utf8/include/utf8" && cf_search="$cf_search $cf_subdir_prefix/utf8/include/utf8" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/utf8" && cf_search="$cf_search $includedir/utf8" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/utf8" && cf_search="$cf_search $oldincludedir/utf8" +} + +cf_search="$cf_search $cf_header_path_list" + + for cf_cv_header_path_utf8 in $cf_search + do + 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}:6855: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 6863 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:6876: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6879: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:6882: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6885: \$? = $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}:6890: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + done + + if test "$cf_cv_find_linkage_utf8" = maybe ; then + +echo "${as_me:-configure}:6908: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + if test "$cf_cv_find_linkage_utf8" != yes ; then + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/utf8" && cf_search="$cf_search $cf_library_path/lib/utf8" + test -d "$cf_library_path/lib/utf8/lib" && cf_search="$cf_search $cf_library_path/lib/utf8/lib" + test -d "$cf_library_path/utf8/lib" && cf_search="$cf_search $cf_library_path/utf8/lib" + test -d "$cf_library_path/utf8/lib/utf8" && cf_search="$cf_search $cf_library_path/utf8/lib/utf8" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/utf8" && cf_search="$cf_search $prefix/lib/utf8" + test -d "$prefix/lib/utf8/lib" && cf_search="$cf_search $prefix/lib/utf8/lib" + test -d "$prefix/utf8/lib" && cf_search="$cf_search $prefix/utf8/lib" + test -d "$prefix/utf8/lib/utf8" && cf_search="$cf_search $prefix/utf8/lib/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/utf8" && cf_search="$cf_search $cf_subdir_prefix/lib/utf8" + test -d "$cf_subdir_prefix/lib/utf8/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/utf8/lib" + test -d "$cf_subdir_prefix/utf8/lib" && cf_search="$cf_search $cf_subdir_prefix/utf8/lib" + test -d "$cf_subdir_prefix/utf8/lib/utf8" && cf_search="$cf_search $cf_subdir_prefix/utf8/lib/utf8" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_cv_library_path_utf8 in $cf_search + do + 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}:6983: 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 6989 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7002: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7005: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7008: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7011: \$? = $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}:7016: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=yes + cf_cv_library_file_utf8="-lutf8" + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_utf8=no + fi + +fi +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_LIBS" + +if test "$cf_cv_find_linkage_utf8" = yes ; then +cf_cv_utf8_lib=add-on +else +cf_cv_utf8_lib=no +fi + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:7058: 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 +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBUTF8_H 1 +EOF + +if test -n "$cf_cv_header_path_utf8" ; then + for cf_add_incdir in $cf_cv_header_path_utf8 + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 7096 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:7108: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7111: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:7114: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7117: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:7134: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_library_path_utf8" ; then + for cf_add_libdir in $cf_cv_library_path_utf8 + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:7170: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_cv_library_file_utf8; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +cf_ncuconfig_root=ncursesw +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:7200: checking pkg-config for $cf_ncuconfig_root" >&5 +echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + echo "$as_me:7203: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:7206: checking if the $cf_ncuconfig_root package files work" >&5 +echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6 + cf_have_ncuconfig=unknown + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`" + cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" + + # while -W for passing linker flags is prevalent, it is not "standard". + # At least one wrapper for c89/c99 (in Apple's xcode) has its own + # incompatible _and_ non-standard -W option which gives an error. Work + # around that pitfall. + case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in + (x*c[89]9@@*-W*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkg_cflags +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 7339 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7351: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7354: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7357: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7360: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_test_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 7366 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:7373: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7376: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:7378: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7381: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_test_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + + if test "x$cf_test_ncuconfig" != xyes; then + cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_cflags="$cf_temp" + cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_libs="$cf_temp" + fi + ;; + esac + +for cf_add_cflags in $cf_pkg_cflags +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 7555 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7567: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7570: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7573: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7576: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 7582 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:7589: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7592: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:7594: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7597: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:7614: result: $cf_have_ncuconfig" >&5 +echo "${ECHO_T}$cf_have_ncuconfig" >&6 + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + +echo "$as_me:7630: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 7648 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:7663: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7666: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:7669: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7672: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:7688: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + + fi + + else + echo "$as_me:7723: result: no" >&5 +echo "${ECHO_T}no" >&6 + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + +if test -n "$ac_tool_prefix"; then + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config + 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:7739: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NCURSES_CONFIG"; then + ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:7754: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG +if test -n "$NCURSES_CONFIG"; then + echo "$as_me:7762: result: $NCURSES_CONFIG" >&5 +echo "${ECHO_T}$NCURSES_CONFIG" >&6 +else + echo "$as_me:7765: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NCURSES_CONFIG" && break + done +fi +if test -z "$NCURSES_CONFIG"; then + ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config +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:7778: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NCURSES_CONFIG"; then + ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # 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_ac_ct_NCURSES_CONFIG="$ac_prog" +echo "$as_me:7793: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG +if test -n "$ac_ct_NCURSES_CONFIG"; then + echo "$as_me:7801: result: $ac_ct_NCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6 +else + echo "$as_me:7804: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_NCURSES_CONFIG" && break +done +test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none" + + NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG +fi + + if test "$NCURSES_CONFIG" != none ; then + +for cf_add_cflags in `$NCURSES_CONFIG --cflags` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + # even with config script, some packages use no-override for curses.h + +echo "$as_me:7961: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h ncursesw/ncurses.h \ + curses.h ncursesw/curses.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 7973 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:7985: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7988: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:7991: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7994: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:8005: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:8009: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:8019: 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 8025 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:8029: \"$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:8035: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:8054: 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 <>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <"conftest.$ac_ext" <<_ACEOF +#line 8110 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8122: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8125: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8128: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8131: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:8148: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +} + +echo "$as_me:8167: checking for $cf_ncuhdr_root header in include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 8179 "configure" +#include "confdefs.h" + +#define _XOPEN_SOURCE_EXTENDED +#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ +#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +#ifndef WACS_BSSB + make an error +#endif + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8211: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8214: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8217: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8220: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + test "$cf_cv_ncurses_h" != no && break + done + +fi +echo "$as_me:8235: result: $cf_cv_ncurses_h" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h" >&6 + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +echo "$as_me:8242: checking for $cf_ncuhdr_root include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$verbose" && echo + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" + test -d "$cf_header_path/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" + test -d "$prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/$cf_ncuhdr_root" && cf_search="$cf_search $includedir/$cf_ncuhdr_root" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/$cf_ncuhdr_root" && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" +} + +cf_search="$cf_search $cf_header_path_list" + + test -n "$verbose" && echo "search path $cf_search" + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + +if test -n "$cf_incdir" ; then + for cf_add_incdir in $cf_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 8363 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8375: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8378: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8381: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8384: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:8401: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + for cf_header in \ + ncurses.h \ + curses.h + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 8424 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8448: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8451: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8454: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8457: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h2=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h2=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:8478: error: not found" >&5 +echo "$as_me: error: not found" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:8483: result: $cf_cv_ncurses_h2" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 + + cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'` + cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`" + if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then + cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header" + fi + +if test -n "$cf_1st_incdir" ; then + for cf_add_incdir in $cf_1st_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 8519 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8531: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8534: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8537: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8540: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:8557: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case "$cf_cv_ncurses_header" in +(*ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_H 1 +EOF + + ;; +esac + +case "$cf_cv_ncurses_header" in +(ncurses/curses.h|ncurses/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_NCURSES_H 1 +EOF + + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_NCURSES_H 1 +EOF + + ;; +esac + +echo "$as_me:8605: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 8623 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8638: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8641: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8644: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8647: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:8663: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +# some applications need this, but should check for NCURSES_VERSION + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:8701: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:8727: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:8730: \$? = $ac_status" >&5 + (exit "$ac_status"); } + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 8740 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:8765: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8768: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:8770: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8773: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f "$cf_tempfile" + +fi +echo "$as_me:8787: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_root=ncursesw + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +echo "$as_me:8800: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 8808 "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 Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:8827: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8830: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:8833: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8836: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:8847: 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 + echo "$as_me:8850: checking for initscr in -lgpm" >&5 +echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 8858 "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 initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:8877: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8880: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:8883: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8886: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:8897: result: $ac_cv_lib_gpm_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 +if test "$ac_cv_lib_gpm_initscr" = yes; then + LIBS="$cf_ncurses_SAVE" +else + cf_ncurses_LIBS="-lgpm" +fi + +fi + +case "$host_os" in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it is static). + if test "$cf_nculib_root" = ncurses ; then + echo "$as_me:8912: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 8920 "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 tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:8939: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8942: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:8945: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8948: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:8959: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test "$ac_cv_lib_mytinfo_tgoto" = yes; then + cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" +fi + + fi + ;; +esac + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +else + + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no' + cf_libdir="" + echo "$as_me:9008: checking for initscr" >&5 +echo $ECHO_N "checking for initscr... $ECHO_C" >&6 +if test "${ac_cv_func_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 9014 "configure" +#include "confdefs.h" +#define initscr autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef initscr + +#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 initscr (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_initscr) || defined (__stub___initscr) +#error found stub for initscr +#endif + + return initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9045: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9048: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9051: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9054: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:9064: result: $ac_cv_func_initscr" >&5 +echo "${ECHO_T}$ac_cv_func_initscr" >&6 +if test "$ac_cv_func_initscr" = yes; then + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' +else + + cf_save_LIBS="$LIBS" + echo "$as_me:9071: checking for initscr in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 + LIBS="-l$cf_nculib_root $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 9075 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9087: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9090: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9093: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9096: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:9098: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:9105: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" + test -d "$cf_library_path/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/lib/$cf_nculib_root" + test -d "$prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_libdir in $cf_search + do + echo "$as_me:9173: checking for -l$cf_nculib_root in $cf_libdir" >&5 +echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 + LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 9177 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9189: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9192: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9195: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9198: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:9200: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:9207: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_save_LIBS" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi + +eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\" + +if test "$cf_found_library" = no ; then + { { echo "$as_me:9222: error: Cannot link $cf_nculib_root library" >&5 +echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +if test -n "$cf_ncurses_LIBS" ; then + echo "$as_me:9230: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 +echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + cat >"conftest.$ac_ext" <<_ACEOF +#line 9240 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9252: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9255: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9258: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9261: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:9263: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:9268: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_ncurses_SAVE" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <&5 +echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + echo "$as_me:9295: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:9298: checking if the $cf_ncuconfig_root package files work" >&5 +echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6 + cf_have_ncuconfig=unknown + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`" + cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" + + # while -W for passing linker flags is prevalent, it is not "standard". + # At least one wrapper for c89/c99 (in Apple's xcode) has its own + # incompatible _and_ non-standard -W option which gives an error. Work + # around that pitfall. + case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in + (x*c[89]9@@*-W*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkg_cflags +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 9431 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9443: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9446: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9449: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9452: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_test_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 9458 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:9465: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9468: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:9470: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9473: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_test_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + + if test "x$cf_test_ncuconfig" != xyes; then + cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_cflags="$cf_temp" + cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_libs="$cf_temp" + fi + ;; + esac + +for cf_add_cflags in $cf_pkg_cflags +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 9647 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9659: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9662: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9665: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9668: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 9674 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:9681: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9684: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:9686: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9689: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:9706: result: $cf_have_ncuconfig" >&5 +echo "${ECHO_T}$cf_have_ncuconfig" >&6 + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + +echo "$as_me:9722: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 9740 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9755: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9758: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9761: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9764: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:9780: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + + fi + + else + echo "$as_me:9815: result: no" >&5 +echo "${ECHO_T}no" >&6 + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + +if test -n "$ac_tool_prefix"; then + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config + 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:9831: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NCURSES_CONFIG"; then + ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:9846: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG +if test -n "$NCURSES_CONFIG"; then + echo "$as_me:9854: result: $NCURSES_CONFIG" >&5 +echo "${ECHO_T}$NCURSES_CONFIG" >&6 +else + echo "$as_me:9857: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NCURSES_CONFIG" && break + done +fi +if test -z "$NCURSES_CONFIG"; then + ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config +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:9870: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NCURSES_CONFIG"; then + ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # 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_ac_ct_NCURSES_CONFIG="$ac_prog" +echo "$as_me:9885: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG +if test -n "$ac_ct_NCURSES_CONFIG"; then + echo "$as_me:9893: result: $ac_ct_NCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6 +else + echo "$as_me:9896: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_NCURSES_CONFIG" && break +done +test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none" + + NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG +fi + + if test "$NCURSES_CONFIG" != none ; then + +for cf_add_cflags in `$NCURSES_CONFIG --cflags` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + # even with config script, some packages use no-override for curses.h + +echo "$as_me:10053: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h ncurses/ncurses.h \ + curses.h ncurses/curses.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 10065 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10077: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10080: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10083: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10086: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:10097: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:10101: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:10111: 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 10117 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:10121: \"$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:10127: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:10146: 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 <>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <"conftest.$ac_ext" <<_ACEOF +#line 10202 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10214: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10217: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10220: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10223: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:10240: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +} + +echo "$as_me:10259: checking for $cf_ncuhdr_root header in include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10271 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10295: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10298: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10301: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10304: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + test "$cf_cv_ncurses_h" != no && break + done + +fi +echo "$as_me:10319: result: $cf_cv_ncurses_h" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h" >&6 + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +echo "$as_me:10326: checking for $cf_ncuhdr_root include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$verbose" && echo + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" + test -d "$cf_header_path/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" + test -d "$prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/$cf_ncuhdr_root" && cf_search="$cf_search $includedir/$cf_ncuhdr_root" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/$cf_ncuhdr_root" && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" +} + +cf_search="$cf_search $cf_header_path_list" + + test -n "$verbose" && echo "search path $cf_search" + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + +if test -n "$cf_incdir" ; then + for cf_add_incdir in $cf_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10447 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10459: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10462: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10465: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10468: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:10485: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + for cf_header in \ + ncurses.h \ + curses.h + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10508 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10532: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10535: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10538: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10541: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h2=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h2=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:10562: error: not found" >&5 +echo "$as_me: error: not found" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:10567: result: $cf_cv_ncurses_h2" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 + + cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'` + cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`" + if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then + cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header" + fi + +if test -n "$cf_1st_incdir" ; then + for cf_add_incdir in $cf_1st_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10603 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10615: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10618: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10621: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10624: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:10641: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case "$cf_cv_ncurses_header" in +(*ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_H 1 +EOF + + ;; +esac + +case "$cf_cv_ncurses_header" in +(ncurses/curses.h|ncurses/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_NCURSES_H 1 +EOF + + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_NCURSES_H 1 +EOF + + ;; +esac + +echo "$as_me:10689: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 10707 "configure" +#include "confdefs.h" +#include +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10722: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10725: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10728: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10731: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:10747: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +# some applications need this, but should check for NCURSES_VERSION + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:10785: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" < +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:10811: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:10814: \$? = $ac_status" >&5 + (exit "$ac_status"); } + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 10824 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:10849: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10852: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:10854: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10857: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f "$cf_tempfile" + +fi +echo "$as_me:10871: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_root=ncurses + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +echo "$as_me:10884: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 10892 "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 Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:10911: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10914: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:10917: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10920: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:10931: 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 + echo "$as_me:10934: checking for initscr in -lgpm" >&5 +echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 10942 "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 initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:10961: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10964: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:10967: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10970: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:10981: result: $ac_cv_lib_gpm_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 +if test "$ac_cv_lib_gpm_initscr" = yes; then + LIBS="$cf_ncurses_SAVE" +else + cf_ncurses_LIBS="-lgpm" +fi + +fi + +case "$host_os" in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it is static). + if test "$cf_nculib_root" = ncurses ; then + echo "$as_me:10996: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 11004 "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 tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11023: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11026: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11029: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11032: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:11043: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test "$ac_cv_lib_mytinfo_tgoto" = yes; then + cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" +fi + + fi + ;; +esac + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +else + + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no' + cf_libdir="" + echo "$as_me:11092: checking for initscr" >&5 +echo $ECHO_N "checking for initscr... $ECHO_C" >&6 +if test "${ac_cv_func_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 11098 "configure" +#include "confdefs.h" +#define initscr autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef initscr + +#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 initscr (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_initscr) || defined (__stub___initscr) +#error found stub for initscr +#endif + + return initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11129: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11132: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11135: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11138: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:11148: result: $ac_cv_func_initscr" >&5 +echo "${ECHO_T}$ac_cv_func_initscr" >&6 +if test "$ac_cv_func_initscr" = yes; then + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' +else + + cf_save_LIBS="$LIBS" + echo "$as_me:11155: checking for initscr in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 + LIBS="-l$cf_nculib_root $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 11159 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11171: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11174: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11177: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11180: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:11182: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:11189: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" + test -d "$cf_library_path/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/lib/$cf_nculib_root" + test -d "$prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_libdir in $cf_search + do + echo "$as_me:11257: checking for -l$cf_nculib_root in $cf_libdir" >&5 +echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 + LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 11261 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11273: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11276: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11279: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11282: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:11284: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:11291: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_save_LIBS" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi + +eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\" + +if test "$cf_found_library" = no ; then + { { echo "$as_me:11306: error: Cannot link $cf_nculib_root library" >&5 +echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +if test -n "$cf_ncurses_LIBS" ; then + echo "$as_me:11314: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 +echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + cat >"conftest.$ac_ext" <<_ACEOF +#line 11324 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11336: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11339: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11342: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11345: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:11347: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:11352: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_ncurses_SAVE" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h </dev/null` + + NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'` + NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.//' -e 's/\..*//'` + NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.//'` + + cf_cv_abi_version=`$PKG_CONFIG --variable=abi_version $NCURSES_CONFIG_PKG 2>/dev/null` + if test -z "$cf_cv_abi_version" + then + cf_cv_abi_version=`$PKG_CONFIG --variable=major_version $NCURSES_CONFIG_PKG 2>/dev/null` + fi + +elif test "$NCURSES_CONFIG" != none ; then + + cf_version=`$NCURSES_CONFIG --version 2>/dev/null` + + NCURSES_MAJOR=`echo "$cf_version" | sed -e 's/\..*//'` + NCURSES_MINOR=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.//' -e 's/\..*//'` + NCURSES_PATCH=`echo "$cf_version" | sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.//'` + + # ABI version is not available from headers + cf_cv_abi_version=`$NCURSES_CONFIG --abi-version 2>/dev/null` + +else + + for cf_name in MAJOR MINOR PATCH + do + cat >conftest.$ac_ext < + AUTOCONF_$cf_name NCURSES_VERSION_$cf_name +CF_EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | fgrep AUTOCONF_$cf_name >conftest.out" + { (eval echo "$as_me:11405: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:11408: \$? = $ac_status" >&5 + (exit "$ac_status"); } + if test -f conftest.out ; then + cf_result=`sed -e "s/^.*AUTOCONF_${cf_name}[ ][ ]*//" conftest.out` + eval NCURSES_$cf_name=\"$cf_result\" + # cat conftest.$ac_ext + # cat conftest.out + fi + done + + cf_cv_abi_version=${NCURSES_MAJOR} + +fi + +cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} + +cf_cv_timestamp=`date` + +echo "$as_me:11426: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5 +echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&6 + +echo "$as_me:11429: 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. +if test "${with_lib_prefix+set}" = set; then + withval="$with_lib_prefix" + with_lib_prefix=$withval +else + with_lib_prefix=auto +fi; +echo "$as_me:11439: result: $with_lib_prefix" >&5 +echo "${ECHO_T}$with_lib_prefix" >&6 + +if test "$with_lib_prefix" = auto +then + + case "$cf_cv_system_name" in + (OS/2*|os2*) + if test "$DFT_LWR_MODEL" = libtool; then + LIB_PREFIX='lib' + else + LIB_PREFIX='' + fi + ;; + (*-msvc*) + LIB_PREFIX='' + ;; + (*) LIB_PREFIX='lib' + ;; + esac +cf_prefix=$LIB_PREFIX + +elif test "$with_lib_prefix" = no +then + LIB_PREFIX= +else + LIB_PREFIX=$with_lib_prefix +fi + +LIB_SUFFIX= + +############################################################################### + +if test X"$CC_G_OPT" = X"" ; then + CC_G_OPT='-g' + test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT='' +fi + +echo "$as_me:11477: checking for default loader flags" >&5 +echo $ECHO_N "checking for default loader flags... $ECHO_C" >&6 +case $DFT_LWR_MODEL in +(normal) LD_MODEL='' ;; +(debug) LD_MODEL=$CC_G_OPT ;; +(profile) LD_MODEL='-pg';; +(shared) LD_MODEL='' ;; +esac +echo "$as_me:11485: result: $LD_MODEL" >&5 +echo "${ECHO_T}$LD_MODEL" >&6 + +LD_RPATH_OPT= +if test "x$cf_cv_enable_rpath" != xno +then + echo "$as_me:11491: checking for an rpath option" >&5 +echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 + case "$cf_cv_system_name" in + (irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; + (linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (openbsd[2-9].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (dragonfly*) + LD_RPATH_OPT="-rpath " + ;; + (netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; + (solaris2*) + LD_RPATH_OPT="-R" + ;; + (*) + ;; + esac + echo "$as_me:11522: result: $LD_RPATH_OPT" >&5 +echo "${ECHO_T}$LD_RPATH_OPT" >&6 + + case "x$LD_RPATH_OPT" in + (x-R*) + echo "$as_me:11527: 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" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in ${LD_RPATH_OPT}$libdir; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11548 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11560: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11563: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11566: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11569: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_rpath_space=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_rpath_space=yes +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$cf_save_LIBS" + echo "$as_me:11579: result: $cf_rpath_space" >&5 +echo "${ECHO_T}$cf_rpath_space" >&6 + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; + esac +fi + + RM_SHARED_OPTS= + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + LD_SHARED_OPTS= + INSTALL_LIB="-m 644" + : ${rel_builddir:=.} + + shlibdir=$libdir + + MAKE_DLLS="#" + + cf_cv_do_symlinks=no + cf_ld_rpath_opt= + test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" + + echo "$as_me:11601: checking if release/abi version should be used for shared libs" >&5 +echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6 + +# Check whether --with-shlib-version or --without-shlib-version was given. +if test "${with_shlib_version+set}" = set; then + withval="$with_shlib_version" + test -z "$withval" && withval=auto + case "$withval" in + (yes) + cf_cv_shlib_version=auto + ;; + (rel|abi|auto) + cf_cv_shlib_version=$withval + ;; + (*) + echo "$as_me:11616: result: $withval" >&5 +echo "${ECHO_T}$withval" >&6 + { { echo "$as_me:11618: 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; }; } + ;; + esac + +else + cf_cv_shlib_version=auto +fi; + echo "$as_me:11627: result: $cf_cv_shlib_version" >&5 +echo "${ECHO_T}$cf_cv_shlib_version" >&6 + + cf_cv_rm_so_locs=no + cf_try_cflags= + + # Some less-capable ports of gcc support only -fpic + CC_SHARED_OPTS= + + cf_try_fPIC=no + if test "$GCC" = yes + then + cf_try_fPIC=yes + else + case "$cf_cv_system_name" in + (*linux*) # e.g., PGI compiler + cf_try_fPIC=yes + ;; + esac + fi + + if test "$cf_try_fPIC" = yes + then + echo "$as_me:11650: 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 11657 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +int x = 1 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11669: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11672: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11675: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11678: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done + echo "$as_me:11687: result: $CC_SHARED_OPTS" >&5 +echo "${ECHO_T}$CC_SHARED_OPTS" >&6 + CFLAGS="$cf_save_CFLAGS" + fi + + cf_cv_shlib_version_infix=no + + case "$cf_cv_system_name" in + (aix4.3-9*|aix[5-7]*) + if test "$GCC" = yes; then + CC_SHARED_OPTS='-Wl,-brtl' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@' + else + CC_SHARED_OPTS='-brtl' + # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@' + fi + ;; + (beos*) + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0' + ;; + (cygwin*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=cygdll + cf_cv_shlib_version_infix=cygdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (msys*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=msysdll + cf_cv_shlib_version_infix=msysdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (darwin*) + cf_try_cflags="no-cpp-precomp" + CC_SHARED_OPTS="-dynamic" + 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:11758: 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 +else + + cf_save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + cat >"conftest.$ac_ext" <<_ACEOF +#line 11767 "configure" +#include "confdefs.h" + +int +main (void) +{ +int i; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11779: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11782: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11785: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11788: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ldflags_search_paths_first=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ldflags_search_paths_first=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LDFLAGS=$cf_save_LDFLAGS +fi +echo "$as_me:11799: 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" + fi + ;; + (haiku*) + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (hpux[7-8]*) + # HP-UX 8.07 ld lacks "+b" option used for libdir search-list + if test "$GCC" != yes; then + CC_SHARED_OPTS='+Z' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $@' + INSTALL_LIB="-m 555" + ;; + (hpux*) + # (tested with gcc 2.7.2 -- I don't have c89) + if test "$GCC" = yes; then + LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' + else + CC_SHARED_OPTS='+Z' + LD_SHARED_OPTS='-Wl,+b,${libdir}' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $@' + # HP-UX shared libraries must be executable, and should be + # readonly to exploit a quirk in the memory manager. + INSTALL_LIB="-m 555" + ;; + (interix*) + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_shared_soname='`basename $@`' + fi + CC_SHARED_OPTS= + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@' + ;; + (irix*) + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + # tested with IRIX 5.2 and 'cc'. + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $@` -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $@` -o $@' + fi + cf_cv_rm_so_locs=yes + ;; + (linux*|gnu*|k*bsd*-gnu) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (mingw*msvc*) + cf_cv_shlib_version=msvcdll + cf_cv_shlib_version_infix=msvcdll + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-link -dll" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${LD} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.lib/'\` + shift + my_ld=\$1 + shift + cat <<-EOF + Linking shared library + ** SHARED LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + args=\$(echo \$* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g") + exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args + mv "\${IMPORT_LIB}" "\${IMPORT_LIB}" +CF_EOF + chmod +x mk_shared_lib.sh + cat >mk_prog.sh <<-CF_EOF + #!$SHELL + shift + # Ignore first argument (compiler) and use LD (link.exe) unconditionally + LD="$LD" + clopts=() + ldopts=("/subsystem:console") + libs=() + isdll=0 + while test \$# -gt 0; do + case "\$1" in + -link) + # ignore -link argument + ;; + -M[TD] | -M[TD]d) + # ignore runtime-library option + ;; + -dll) + isdll=1 + ;; + -W* | -w*) + # ignore warnings + ;; + -D*) + clopts+=("\$1") + ;; + -I*) + clopts+=("\$1") + ;; + -l*) + libs+=("\`echo \"\$1\" | sed \"s/^-l//\"\`") + ;; + -L*) + ldopts+=("\`echo \"\$1\" | sed \"s/^-L/-LIBPATH:/\"\`") + ;; + *.obj | *.o) + ldopts+=("\$1") + ;; + -Wl,*) + for linkarg in \`echo '\$1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do + ldopts+=("\${linkarg}") + done + ;; + *.lib) + ldopts+=("\$1") + ;; + -o) + shift + ldopts+=("-out:\$1") + ;; + *) + clopts+=("\$1") + ldopts+=("\$1") + ;; + esac + shift + done + if [ "\$isdll" -ne 0 ]; then + for lib in \${libs[*]}; do + ldopts+=("\$lib.dll.lib") + done + else + for lib in \${libs[*]}; do + ldopts+=("\$lib.lib") + done + fi + cat <<-EOF + Creating program + ** ld options: "\${ldopts[@]}" +EOF + exec \$LD \${ldopts[@]} +CF_EOF + chmod +x mk_prog.sh + LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh" + LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh" + ;; + (mingw*) + cf_cv_shlib_version=mingw + cf_cv_shlib_version_infix=mingw + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-Wl,--enable-auto-import" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (openbsd[2-9].*|mirbsd*) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (nskJ*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $@' + ;; + (nskL*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $@' + ;; + (nto-qnx*|openbsd*|freebsd[12].*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $@' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (dragonfly*|freebsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (netbsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + if test "$cf_cv_shlib_version" = auto; then + if test -f /usr/libexec/ld.elf_so; then + cf_cv_shlib_version=abi + else + cf_cv_shlib_version=rel + fi + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $@' + fi + ;; + (osf*|mls+*) + # tested with OSF/1 V3.2 and 'cc' + # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't + # link with shared libs). + MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`' + case "$host_os" in + (osf4*) + MK_SHARED_LIB="${MK_SHARED_LIB} -msym" + ;; + esac + MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@' + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + cf_cv_rm_so_locs=yes + ;; + (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98 + # tested with osr5.0.5 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-belf -KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@' + if test "$cf_cv_enable_rpath" = yes ; then + # only way is to set LD_RUN_PATH but no switch for it + RUN_PATH=$libdir + fi + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + LINK_PROGS='LD_RUN_PATH=${libdir}' + LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' + ;; + (sunos4*) + # tested with SunOS 4.1.1 and gcc 2.7.0 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $@' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (solaris2*) + # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 + # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + if test "$GCC" != yes; then + cf_save_CFLAGS="$CFLAGS" + for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O + do + CFLAGS="$cf_shared_opts $cf_save_CFLAGS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12149 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello\\n"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12161: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12164: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12167: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12170: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done + CFLAGS="$cf_save_CFLAGS" + CC_SHARED_OPTS=$cf_shared_opts + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $@' + fi + ;; + (sysv5uw7*|unix_sv*) + # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o $@' + ;; + (*) + CC_SHARED_OPTS='unknown' + MK_SHARED_LIB='echo unknown' + ;; + esac + + # This works if the last tokens in $MK_SHARED_LIB are the -o target. + case "$cf_cv_shlib_version" in + (rel|abi) + case "$MK_SHARED_LIB" in + (*'-o $@') + test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes + ;; + (*) + { echo "$as_me:12207: WARNING: ignored --with-shlib-version" >&5 +echo "$as_me: WARNING: ignored --with-shlib-version" >&2;} + ;; + esac + ;; + esac + + if test -n "$cf_try_cflags" + then +cat > conftest.$ac_ext < +int main(int argc, char *argv[]) +{ + printf("hello\\n"); + return (argv[argc-1] == 0) ; +} +EOF + cf_save_CFLAGS="$CFLAGS" + for cf_opt in $cf_try_cflags + do + CFLAGS="$cf_save_CFLAGS -$cf_opt" + echo "$as_me:12229: 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:12231: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12234: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + echo "$as_me:12236: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + cf_save_CFLAGS="$CFLAGS" + else + echo "$as_me:12240: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi + done + CFLAGS="$cf_save_CFLAGS" + fi + + # RPATH_LIST is a colon-separated list of directories + test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}" + test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}" + + test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations" + + test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6 + +echo "${as_me:-configure}:12255: 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}:12259: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + +# The test/sample programs in the original tree link using rpath option. +# Make it optional for packagers. +if test -n "$LOCAL_LDFLAGS" +then + echo "$as_me:12265: checking if you want to link sample programs with rpath option" >&5 +echo $ECHO_N "checking if you want to link sample programs with rpath option... $ECHO_C" >&6 + +# Check whether --enable-rpath-link or --disable-rpath-link was given. +if test "${enable_rpath_link+set}" = set; then + enableval="$enable_rpath_link" + with_rpath_link=$enableval +else + with_rpath_link=yes +fi; + echo "$as_me:12275: result: $with_rpath_link" >&5 +echo "${ECHO_T}$with_rpath_link" >&6 + if test "$with_rpath_link" = no + then + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + fi +fi + +############################################################################### + +### use option --enable-broken-linker to force on use of broken-linker support + +echo "$as_me:12288: 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. +if test "${enable_broken_linker+set}" = set; then + enableval="$enable_broken_linker" + with_broken_linker=$enableval +else + with_broken_linker=no +fi; +echo "$as_me:12298: result: $with_broken_linker" >&5 +echo "${ECHO_T}$with_broken_linker" >&6 + +: "${BROKEN_LINKER:=0}" +if test "x$with_broken_linker" = xyes ; then + +cat >>confdefs.h <<\EOF +#define BROKEN_LINKER 1 +EOF + + BROKEN_LINKER=1 +fi + +# Check to define _XOPEN_SOURCE "automatically" + +echo "$as_me:12313: 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 12320 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#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 + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12339: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12342: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12345: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12348: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_visible=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_visible=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:12359: result: $cf_cv_posix_visible" >&5 +echo "${ECHO_T}$cf_cv_posix_visible" >&6 + +if test "$cf_cv_posix_visible" = no; then + +cf_XOPEN_SOURCE=600 +cf_POSIX_C_SOURCE=199506L +cf_xopen_source= + +case "$host_os" in +(aix[4-7]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[0-8].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*|midnightbsd*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[56].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + +cf_gnu_xopen_source=$cf_XOPEN_SOURCE + +echo "$as_me:12404: 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 12411 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12430: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12433: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12436: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12439: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_library=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_library=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:12450: result: $cf_cv_gnu_library" >&5 +echo "${ECHO_T}$cf_cv_gnu_library" >&6 + +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:12458: 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 +else + + cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 12470 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #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 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12489: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12492: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12495: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12498: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_library_219=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_library_219=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +echo "$as_me:12510: 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:12515: 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 +else + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source +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 >"conftest.$ac_ext" <<_ACEOF +#line 12620 "configure" +#include "confdefs.h" + + #include + #include + +int +main (void) +{ + + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12640: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12643: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12646: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12649: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_dftsrc_219=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_dftsrc_219=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:12660: 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 + cf_cv_gnu_dftsrc_219=maybe + fi + + if test "x$cf_cv_gnu_dftsrc_219" != xyes; then + + echo "$as_me:12669: 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 12676 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12691: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12694: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12697: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12700: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_GNU_SOURCE +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 >"conftest.$ac_ext" <<_ACEOF +#line 12807 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12822: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12825: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12828: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12831: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_source=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:12846: 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:12851: 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 +else + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 12861 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12876: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12879: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12882: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12885: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_default_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_default_source=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:12896: result: $cf_cv_default_source" >&5 +echo "${ECHO_T}$cf_cv_default_source" >&6 + if test "$cf_cv_default_source" = yes + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + fi + fi + fi + +fi + + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +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:12933: 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}:12939: testing if the symbol is already defined go no further ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 12942 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12957: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12960: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12963: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12966: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 12987 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13002: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13005: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13008: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13011: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + +echo "${as_me:-configure}:13022: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:13030: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 13033 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13048: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13051: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13054: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13057: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:13073: 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 + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +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 + +fi + +fi # cf_cv_posix_visible + + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[6-9]*) + # 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:13190: 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 + ;; +(openbsd[4-5]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[45]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + +echo "$as_me:13222: 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 13229 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13248: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13251: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13254: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13257: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 13269 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13288: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13291: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13294: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13297: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:13312: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +for cf_add_cflags in $cf_temp_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +fi + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +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:13470: 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}:13476: testing if the symbol is already defined go no further ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 13479 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13494: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13497: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13500: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13503: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 13524 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13539: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13542: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13545: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13548: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + +echo "${as_me:-configure}:13559: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:13567: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 13570 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13585: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13588: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13591: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13594: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:13610: 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 + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +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 + +fi + +fi # cf_cv_posix_visible + + ;; +esac + +if test -n "$cf_xopen_source" ; then + +for cf_add_cflags in $cf_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + test -n "$verbose" && echo " removing old option $cf_add_cflags from CFLAGS" 1>&6 + +echo "${as_me:-configure}:13736: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5 + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + test -n "$verbose" && echo " removing old option $cf_add_cflags from CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:13748: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5 + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:13836: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:13846: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +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}:13856: 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" + +fi + +done + +fi + +if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then + echo "$as_me:13868: 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 13871 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13886: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13889: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13892: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13895: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_XOPEN_SOURCE_set=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_XOPEN_SOURCE_set=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:13904: 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 13909 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13924: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13927: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13930: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13933: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_XOPEN_SOURCE_set_ok=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_XOPEN_SOURCE_set_ok=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + if test "$cf_XOPEN_SOURCE_set_ok" = no + then + { echo "$as_me:13944: WARNING: _XOPEN_SOURCE is lower than requested" >&5 +echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;} + fi + else + +echo "$as_me:13949: 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 13956 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13975: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13978: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13981: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13984: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 13996 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14015: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14018: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14021: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14024: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:14039: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +for cf_add_cflags in $cf_temp_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +fi + + fi +fi +fi # cf_cv_posix_visible + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:14193: 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 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # 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 14205 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14225: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14228: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14231: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14234: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" + CC="$CC -n32" + rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14244: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14247: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14250: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14253: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" + break + done + CC=$ac_save_CC + rm -f "conftest.$ac_ext" + fi +fi +echo "$as_me:14267: 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:14273: 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 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >"conftest.$ac_ext" <<_ACEOF +#line 14281 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14301: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14304: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14307: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14310: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 14319 "configure" +#include "confdefs.h" +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14340: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14343: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14346: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14349: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + break +done +fi +echo "$as_me:14360: 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 + +cat >>confdefs.h <&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 +else + while :; do + ac_cv_sys_large_files=no + cat >"conftest.$ac_ext" <<_ACEOF +#line 14378 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14398: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14401: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14404: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14407: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 14416 "configure" +#include "confdefs.h" +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14437: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14440: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14443: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14446: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + break +done +fi +echo "$as_me:14457: 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 + +cat >>confdefs.h <&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 +else + while :; do + ac_cv_sys_largefile_source=no + cat >"conftest.$ac_ext" <<_ACEOF +#line 14478 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14490: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14493: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14496: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14499: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 14508 "configure" +#include "confdefs.h" +#define _LARGEFILE_SOURCE 1 +#include +int +main (void) +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14521: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14524: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14527: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14530: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_largefile_source=1; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + break +done +fi +echo "$as_me:14541: 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 + +cat >>confdefs.h <&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 14561 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +return fseeko && fseeko (stdin, 0, 0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:14573: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:14576: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:14579: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14582: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_fseeko=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_fseeko=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:14592: result: $ac_cv_func_fseeko" >&5 +echo "${ECHO_T}$ac_cv_func_fseeko" >&6 +if test $ac_cv_func_fseeko = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_FSEEKO 1 +EOF + +fi + + # Normally we would collect these definitions in the config.h, + # but (like _XOPEN_SOURCE), some environments rely on having these + # defined before any of the system headers are included. Another + # case comes up with C++, e.g., on AIX the compiler compiles the + # header files by themselves before looking at the body files it is + # told to compile. For ncurses, those header files do not include + # the config.h + if test "$ac_cv_sys_large_files" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_LARGE_FILES" + + fi + if test "$ac_cv_sys_largefile_source" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_LARGEFILE_SOURCE" + + fi + if test "$ac_cv_sys_file_offset_bits" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" + + fi + + echo "$as_me:14631: 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 14638 "configure" +#include "confdefs.h" + +#pragma GCC diagnostic error "-Wincompatible-pointer-types" +#include +#include + +int +main (void) +{ + + /* if transitional largefile support is setup, this is true */ + extern struct dirent64 * readdir(DIR *); + struct dirent64 *x = readdir((DIR *)0); + struct dirent *y = readdir((DIR *)0); + int z = x - y; + (void)z; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14661: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14664: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14667: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14670: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_struct_dirent64=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_struct_dirent64=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:14681: result: $cf_cv_struct_dirent64" >&5 +echo "${ECHO_T}$cf_cv_struct_dirent64" >&6 + test "$cf_cv_struct_dirent64" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_STRUCT_DIRENT64 1 +EOF + + fi + +### Enable compiling-in rcs id's +echo "$as_me:14691: 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. +if test "${with_rcs_ids+set}" = set; then + withval="$with_rcs_ids" + with_rcs_ids=$withval +else + with_rcs_ids=no +fi; +echo "$as_me:14701: result: $with_rcs_ids" >&5 +echo "${ECHO_T}$with_rcs_ids" >&6 +test "$with_rcs_ids" = yes && +cat >>confdefs.h <<\EOF +#define USE_RCS_IDS 1 +EOF + +############################################################################### + +### Note that some functions (such as const) are normally disabled anyway. +echo "$as_me:14711: 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. +if test "${enable_ext_funcs+set}" = set; then + enableval="$enable_ext_funcs" + with_ext_funcs=$enableval +else + with_ext_funcs=yes +fi; +echo "$as_me:14721: result: $with_ext_funcs" >&5 +echo "${ECHO_T}$with_ext_funcs" >&6 +if test "$with_ext_funcs" = yes ; then + NCURSES_EXT_FUNCS=1 + +cat >>confdefs.h <<\EOF +#define HAVE_USE_DEFAULT_COLORS 1 +EOF + +cat >>confdefs.h <<\EOF +#define NCURSES_EXT_FUNCS 1 +EOF + +else + NCURSES_EXT_FUNCS=0 +fi + +### use option --enable-const to turn on use of const beyond that in XSI. +echo "$as_me:14739: 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. +if test "${enable_const+set}" = set; then + enableval="$enable_const" + with_ext_const=$enableval +else + with_ext_const=no +fi; +echo "$as_me:14749: result: $with_ext_const" >&5 +echo "${ECHO_T}$with_ext_const" >&6 +NCURSES_CONST='/*nothing*/' +if test "$with_ext_const" = yes ; then + NCURSES_CONST=const +fi + +############################################################################### +# These options are relatively safe to experiment with. + +echo "$as_me:14759: 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. +if test "${with_develop+set}" = set; then + withval="$with_develop" + with_develop=$withval +else + with_develop=no +fi; +echo "$as_me:14769: result: $with_develop" >&5 +echo "${ECHO_T}$with_develop" >&6 + +############################################################################### +# These are just experimental, probably should not be in a package: + +# This is still experimental (20080329), but should ultimately be moved to +# the script-block --with-normal, etc. + +echo "$as_me:14778: 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. +if test "${with_pthread+set}" = set; then + withval="$with_pthread" + with_pthread=$withval +else + with_pthread=no +fi; +echo "$as_me:14788: result: $with_pthread" >&5 +echo "${ECHO_T}$with_pthread" >&6 + +if test "$with_pthread" != no ; then + echo "$as_me:14792: 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 14798 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:14802: \"$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:14808: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_pthread_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_pthread_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:14827: 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 + +cat >>confdefs.h <<\EOF +#define HAVE_PTHREADS_H 1 +EOF + + for cf_lib_pthread in pthread c_r + do + echo "$as_me:14837: 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" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 14858 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + int rc = pthread_create(0,0,0,0); + int r2 = pthread_mutexattr_settype(0, 0); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:14875: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:14878: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:14881: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14884: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + with_pthread=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +with_pthread=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$cf_save_LIBS" + echo "$as_me:14894: result: $with_pthread" >&5 +echo "${ECHO_T}$with_pthread" >&6 + test "$with_pthread" = yes && break + done + + if test "$with_pthread" = yes ; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +cat >>confdefs.h <<\EOF +#define HAVE_LIBPTHREADS 1 +EOF + + else + { { echo "$as_me:14922: error: Cannot link with pthread library" >&5 +echo "$as_me: error: Cannot link with pthread library" >&2;} + { (exit 1); exit 1; }; } + fi + +fi + +fi + +echo "$as_me:14931: 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. +if test "${enable_weak_symbols+set}" = set; then + enableval="$enable_weak_symbols" + use_weak_symbols=$withval +else + use_weak_symbols=no +fi; +echo "$as_me:14941: result: $use_weak_symbols" >&5 +echo "${ECHO_T}$use_weak_symbols" >&6 +if test "$use_weak_symbols" = yes ; then + +echo "$as_me:14945: 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 14952 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ + +#if defined(__GNUC__) +# if defined __USE_ISOC99 +# define _cat_pragma(exp) _Pragma(#exp) +# define _weak_pragma(exp) _cat_pragma(weak name) +# else +# define _weak_pragma(exp) +# endif +# define _declare(name) __extension__ extern __typeof__(name) name +# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) +#endif + +weak_symbol(fopen); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14978: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14981: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14984: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14987: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_weak_symbols=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_weak_symbols=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:14998: result: $cf_cv_weak_symbols" >&5 +echo "${ECHO_T}$cf_cv_weak_symbols" >&6 + +else + cf_cv_weak_symbols=no +fi + +if test $cf_cv_weak_symbols = yes ; then + +cat >>confdefs.h <<\EOF +#define USE_WEAK_SYMBOLS 1 +EOF + +fi + +PTHREAD= +if test "$with_pthread" = "yes" ; then + +cat >>confdefs.h <<\EOF +#define USE_PTHREADS 1 +EOF + + enable_reentrant=yes + if test $cf_cv_weak_symbols = yes ; then + PTHREAD=-lpthread + fi +fi + +# OpenSUSE is installing ncurses6, using reentrant option. +echo "$as_me:15027: checking for _nc_TABSIZE" >&5 +echo $ECHO_N "checking for _nc_TABSIZE... $ECHO_C" >&6 +if test "${ac_cv_func__nc_TABSIZE+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 15033 "configure" +#include "confdefs.h" +#define _nc_TABSIZE autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef _nc_TABSIZE + +#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 _nc_TABSIZE (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__nc_TABSIZE) || defined (__stub____nc_TABSIZE) +#error found stub for _nc_TABSIZE +#endif + + return _nc_TABSIZE (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15064: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15067: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15070: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15073: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func__nc_TABSIZE=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func__nc_TABSIZE=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:15083: result: $ac_cv_func__nc_TABSIZE" >&5 +echo "${ECHO_T}$ac_cv_func__nc_TABSIZE" >&6 +if test "$ac_cv_func__nc_TABSIZE" = yes; then + assume_reentrant=yes +else + assume_reentrant=no +fi + +# Reentrant code has to be opaque; there's little advantage to making ncurses +# 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:15095: checking if you want experimental reentrant code" >&5 +echo $ECHO_N "checking if you want experimental reentrant code... $ECHO_C" >&6 + +# Check whether --enable-reentrant or --disable-reentrant was given. +if test "${enable_reentrant+set}" = set; then + enableval="$enable_reentrant" + with_reentrant=$enableval +else + with_reentrant=$assume_reentrant +fi; +echo "$as_me:15105: result: $with_reentrant" >&5 +echo "${ECHO_T}$with_reentrant" >&6 +if test "$with_reentrant" = yes ; then + cf_cv_enable_reentrant=1 + if test $cf_cv_weak_symbols = yes ; then + +# remove pthread library from $LIBS +LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'` + + elif test "$assume_reentrant" = no ; then + LIB_SUFFIX="t${LIB_SUFFIX}" + fi + +cat >>confdefs.h <<\EOF +#define USE_REENTRANT 1 +EOF + +else + cf_cv_enable_reentrant=0 +fi + +### Allow using a different wrap-prefix +if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then + echo "$as_me:15128: 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. +if test "${with_wrap_prefix+set}" = set; then + withval="$with_wrap_prefix" + NCURSES_WRAP_PREFIX=$withval +else + NCURSES_WRAP_PREFIX=_nc_ +fi; + echo "$as_me:15138: result: $NCURSES_WRAP_PREFIX" >&5 +echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6 +else + NCURSES_WRAP_PREFIX=_nc_ +fi + +cat >>confdefs.h <&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. +if test "${enable_echo+set}" = set; then + enableval="$enable_echo" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + + ECHO_LT='--silent' + ECHO_LD='@echo linking $@;' + RULE_CC='@echo compiling $<' + SHOW_CC='@echo compiling $@' + ECHO_CC='@' + + else + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + + fi +else + enableval=yes + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + +fi; +echo "$as_me:15186: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 + +echo "$as_me:15189: 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. +if test "${enable_stdnoreturn+set}" = set; then + enableval="$enable_stdnoreturn" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_stdnoreturn=yes + else + enable_stdnoreturn=no + fi +else + enableval=no + enable_stdnoreturn=no + +fi; +echo "$as_me:15206: result: $enable_stdnoreturn" >&5 +echo "${ECHO_T}$enable_stdnoreturn" >&6 + +if test $enable_stdnoreturn = yes; then +echo "$as_me:15210: 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 15216 "configure" +#include "confdefs.h" + +#include +#include +#include +static _Noreturn void giveup(void) { exit(0); } + +int +main (void) +{ +if (feof(stdin)) giveup() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:15233: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15236: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:15239: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15242: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_c11_noreturn=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_c11_noreturn=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:15253: result: $cf_cv_c11_noreturn" >&5 +echo "${ECHO_T}$cf_cv_c11_noreturn" >&6 +else + cf_cv_c11_noreturn=no, +fi + +if test "$cf_cv_c11_noreturn" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_STDNORETURN_H 1 +EOF + +cat >>confdefs.h <&6 + +echo "${as_me:-configure}:15283: testing repairing CFLAGS: $CFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $CFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + CFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $CFLAGS" 1>&6 + +echo "${as_me:-configure}:15306: testing ... fixed $CFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:15310: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +if test "$GCC" = yes || test "$GXX" = yes +then + case $CPPFLAGS in + (*-Werror=*) + test -n "$verbose" && echo " repairing CPPFLAGS: $CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:15322: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $CPPFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + CPPFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:15345: testing ... fixed $CPPFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:15349: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +if test "$GCC" = yes || test "$GXX" = yes +then + case $LDFLAGS in + (*-Werror=*) + test -n "$verbose" && echo " repairing LDFLAGS: $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:15361: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $LDFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + LDFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:15384: testing ... fixed $LDFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:15388: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +echo "$as_me:15394: 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. +if test "${enable_warnings+set}" = set; then + enableval="$enable_warnings" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_warnings=yes + else + enable_warnings=no + fi +else + enableval=no + enable_warnings=no + +fi; +echo "$as_me:15411: result: $enable_warnings" >&5 +echo "${ECHO_T}$enable_warnings" >&6 +if test "$enable_warnings" = "yes" +then + +if test "x$have_x" = xyes; then + +cf_save_LIBS_CF_CONST_X_STRING="$LIBS" +cf_save_CFLAGS_CF_CONST_X_STRING="$CFLAGS" +cf_save_CPPFLAGS_CF_CONST_X_STRING="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[IUD]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done + +cat >"conftest.$ac_ext" <<_ACEOF +#line 15435 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ +String foo = malloc(1); free((void*)foo) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:15450: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15453: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:15456: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15459: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + +echo "$as_me:15462: 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 15469 "configure" +#include "confdefs.h" + +#define _CONST_X_STRING /* X11R7.8 (perhaps) */ +#undef XTSTRINGDEFINES /* X11R5 and later */ +#include +#include + +int +main (void) +{ +String foo = malloc(1); *foo = 0 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:15486: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15489: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:15492: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15495: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_const_x_string=no + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_const_x_string=yes + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:15510: result: $cf_cv_const_x_string" >&5 +echo "${ECHO_T}$cf_cv_const_x_string" >&6 + +LIBS="$cf_save_LIBS_CF_CONST_X_STRING" +CFLAGS="$cf_save_CFLAGS_CF_CONST_X_STRING" +CPPFLAGS="$cf_save_CPPFLAGS_CF_CONST_X_STRING" + +case "$cf_cv_const_x_string" in +(no) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-DXTSTRINGDEFINES" + + ;; +(*) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_CONST_X_STRING" + + ;; +esac + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi +cat > "conftest.$ac_ext" <&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" + for cf_opt in \ + wd1419 \ + wd1683 \ + wd1684 \ + wd193 \ + wd593 \ + wd279 \ + wd810 \ + wd869 \ + wd981 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if { (eval echo "$as_me:15571: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15574: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:15576: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" +then + { echo "$as_me:15584: checking for $CC warning options..." >&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + cf_warn_CONST="" + test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= + for cf_opt in W Wall \ + Wbad-function-cast \ + Wcast-align \ + Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes \ + 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:15607: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15610: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:15612: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + case "$cf_opt" in + (Winline) + case "$GCC_VERSION" in + ([34].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:15620: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + (Wpointer-arith) + case "$GCC_VERSION" in + ([12].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:15630: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + esac + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +fi +rm -rf ./conftest* + +fi + +if test "$GCC" = yes || test "$GXX" = yes +then +cat > conftest.i <&5 +echo "$as_me: checking for $CC __attribute__ directives..." >&6;} +cat > "conftest.$ac_ext" <&5 + + case "$cf_attribute" in + (printf) + cf_printf_attribute=yes + cat >conftest.h <conftest.h <conftest.h <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15718: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:15720: result: ... $cf_attribute" >&5 +echo "${ECHO_T}... $cf_attribute" >&6 + cat conftest.h >>confdefs.h + case "$cf_attribute" in + (noreturn) + +cat >>confdefs.h <>confdefs.h <<\EOF +#define GCC_PRINTF 1 +EOF + + fi + +cat >>confdefs.h <>confdefs.h <<\EOF +#define GCC_SCANF 1 +EOF + + fi + +cat >>confdefs.h <>confdefs.h <>confdefs.h +fi +rm -rf ./conftest* +fi + +fi + +if test "x$enable_warnings" = "xyes"; then + + ADAFLAGS="$ADAFLAGS -gnatg" + +fi + +### use option --enable-assertions to turn on generation of assertion code +echo "$as_me:15788: 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. +if test "${enable_assertions+set}" = set; then + enableval="$enable_assertions" + with_assertions=$enableval +else + with_assertions=no +fi; +echo "$as_me:15798: result: $with_assertions" >&5 +echo "${ECHO_T}$with_assertions" >&6 +if test -n "$GCC" +then + if test "$with_assertions" = no + then + CPPFLAGS="$CPPFLAGS -DNDEBUG" + else + + ADAFLAGS="$ADAFLAGS -gnata" + + fi +fi + +### use option --disable-leaks to suppress "permanent" leaks, for testing + +cat >>confdefs.h <<\EOF +#define HAVE_NC_ALLOC_H 1 +EOF + +### use option --enable-expanded to generate certain macros as functions + +# Check whether --enable-expanded or --disable-expanded was given. +if test "${enable_expanded+set}" = set; then + enableval="$enable_expanded" + test "$enableval" = yes && +cat >>confdefs.h <<\EOF +#define NCURSES_EXPANDED 1 +EOF + +fi; + +### use option --disable-macros to suppress macros in favor of functions + +# Check whether --enable-macros or --disable-macros was given. +if test "${enable_macros+set}" = set; then + enableval="$enable_macros" + test "$enableval" = no && +cat >>confdefs.h <<\EOF +#define NCURSES_NOMACROS 1 +EOF + +fi; + +# Normally we only add trace() to the debug-library. Allow this to be +# extended to all models of the ncurses library: +cf_all_traces=no +case "$CFLAGS $CPPFLAGS" in +(*-DTRACE*) + cf_all_traces=yes + ;; +esac + +echo "$as_me:15851: 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. +if test "${with_trace+set}" = set; then + withval="$with_trace" + cf_with_trace=$withval +else + cf_with_trace=$cf_all_traces +fi; +echo "$as_me:15861: result: $cf_with_trace" >&5 +echo "${ECHO_T}$cf_with_trace" >&6 + +if test "$cf_with_trace" = yes ; then + 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 + +else + ADA_TRACE=FALSE +fi + +echo "$as_me:15969: 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. +if test "${enable_gnat_projects+set}" = set; then + enableval="$enable_gnat_projects" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + enable_gnat_projects=no + else + enable_gnat_projects=yes + fi +else + enableval=yes + enable_gnat_projects=yes + +fi; +echo "$as_me:15986: result: $enable_gnat_projects" >&5 +echo "${ECHO_T}$enable_gnat_projects" >&6 + +### Checks for libraries. +case $cf_cv_system_name in +(*mingw32*) + ;; +(*) +echo "$as_me:15994: 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 16000 "configure" +#include "confdefs.h" +#define gettimeofday autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef gettimeofday + +#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 gettimeofday (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_gettimeofday) || defined (__stub___gettimeofday) +#error found stub for gettimeofday +#endif + + return gettimeofday (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16031: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16034: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16037: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16040: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_gettimeofday=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_gettimeofday=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:16050: result: $ac_cv_func_gettimeofday" >&5 +echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 +if test "$ac_cv_func_gettimeofday" = yes; then + cat >>confdefs.h <<\EOF +#define HAVE_GETTIMEOFDAY 1 +EOF + +else + +echo "$as_me:16059: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 16067 "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 gettimeofday (); +int +main (void) +{ +gettimeofday (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16086: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16089: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16092: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16095: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_bsd_gettimeofday=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_bsd_gettimeofday=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:16106: 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 + +cat >>confdefs.h <<\EOF +#define HAVE_GETTIMEOFDAY 1 +EOF + + LIBS="$LIBS -lbsd" +fi + +fi + ;; +esac + +### Checks for header files. +echo "$as_me:16122: 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 16128 "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:16136: \"$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:16142: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_stdc=no +fi +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 16164 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +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 16182 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 16203 "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main (void) +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + $ac_main_return(2); + $ac_main_return (0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:16229: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16232: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:16234: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16237: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_stdc=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +fi +echo "$as_me:16250: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + +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:16266: 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 16272 "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16278: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16281: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16284: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16287: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Header=no" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:16297: 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 <&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 16313 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((signed char *) 0) + return 0; +if (sizeof (signed char)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16328: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16331: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16334: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16337: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_signed_char=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_signed_char=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:16347: result: $ac_cv_type_signed_char" >&5 +echo "${ECHO_T}$ac_cv_type_signed_char" >&6 + +echo "$as_me:16350: 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 +else + if test "$ac_cv_type_signed_char" = yes; then + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >"conftest.$ac_ext" <<_ACEOF +#line 16359 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16371: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16374: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16377: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16380: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 16385 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16397: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16400: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16403: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16406: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1`; ac_mid=`expr 2 '*' "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=-1 ac_mid=-1 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 16422 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16434: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16437: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16440: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16443: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=`expr "$ac_mid" - 1`; ac_mid=`expr 2 '*' "$ac_mid"` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +# Binary search between lo and hi bounds. +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 16459 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16471: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16474: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16477: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16480: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +ac_cv_sizeof_signed_char=$ac_lo +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:16493: 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 16498 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +FILE *f = fopen ("conftest.val", "w"); +if (!f) + $ac_main_return (1); +fprintf (f, "%ld", (long)(sizeof (signed char))); +fclose (f); + ; + return 0; +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:16514: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16517: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:16519: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16522: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sizeof_signed_char=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_signed_char=0 +fi +fi +echo "$as_me:16538: result: $ac_cv_sizeof_signed_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6 +cat >>confdefs.h <&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 16550 "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:16558: \"$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:16564: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_stdc=no +fi +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 16586 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +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 16604 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 16625 "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main (void) +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + $ac_main_return(2); + $ac_main_return (0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:16651: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16654: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:16656: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16659: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_stdc=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +fi +echo "$as_me:16672: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +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:16685: 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 16691 "configure" +#include "confdefs.h" +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16706: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16709: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16712: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16715: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Header=no" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:16725: 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 <&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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldir $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 16746 "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 opendir (); +int +main (void) +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16765: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16768: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16771: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16774: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dir_opendir=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dir_opendir=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:16785: 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:16792: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lx $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 16800 "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 opendir (); +int +main (void) +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16819: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16822: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16825: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16828: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_x_opendir=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_x_opendir=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:16839: 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" +fi + +fi + +echo "$as_me:16847: 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 16853 "configure" +#include "confdefs.h" +#include +#include +#include + +int +main (void) +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16869: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16872: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16875: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16878: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_time=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:16888: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + +### checks for compiler characteristics +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:16906: 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 16912 "configure" +#include "confdefs.h" + +int +main (void) +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + 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}; + /* 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 + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16970: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16973: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16976: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16979: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_c_const=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:16989: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\EOF +#define const +EOF + +fi + +### Checks for external-data + +echo "$as_me:17001: 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 +else + + rm -f conftest.a + cat >conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17015: \$? = $ac_status" >&5 + (exit "$ac_status"); } ; then + mv conftest.o data.o && \ + ( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null + fi + rm -f conftest.$ac_ext data.o + cat >conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17038: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + mv conftest.o func.o && \ + ( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null + fi + rm -f conftest.$ac_ext func.o + ( eval $RANLIB conftest.a ) 2>&5 >/dev/null + cf_saveLIBS="$LIBS" + LIBS="conftest.a $LIBS" + if test "$cross_compiling" = yes; then + cf_cv_link_dataonly=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 17051 "configure" +#include "confdefs.h" + + int main(void) + { + extern int testfunc(); + ${cf_cv_main_return:-return} (!testfunc()); + } + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:17062: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17065: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:17067: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17070: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_link_dataonly=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_link_dataonly=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + LIBS="$cf_saveLIBS" + +fi + +echo "$as_me:17085: result: $cf_cv_link_dataonly" >&5 +echo "${ECHO_T}$cf_cv_link_dataonly" >&6 + +if test "$cf_cv_link_dataonly" = no ; then + +cat >>confdefs.h <<\EOF +#define BROKEN_LINKER 1 +EOF + + BROKEN_LINKER=1 +fi + +### Checks for library functions. + +for ac_header in \ +unistd.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:17104: 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 17110 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:17114: \"$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:17120: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:17139: 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 <&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 +else + +rm -rf ./conftest* +if test "$cross_compiling" = yes; then + cf_cv_func_mkstemp=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 17160 "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include +int main(void) +{ + char *tmpl = "conftestXXXXXX"; + char name[2][80]; + int n; + int result = 0; + int fd; + struct stat sb; + + umask(077); + for (n = 0; n < 2; ++n) { + strcpy(name[n], tmpl); + if ((fd = mkstemp(name[n])) >= 0) { + if (!strcmp(name[n], tmpl) + || stat(name[n], &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG + || (sb.st_mode & 077) != 0) { + result = 1; + } + close(fd); + } + } + if (result == 0 + && !strcmp(name[0], name[1])) + result = 1; + ${cf_cv_main_return:-return}(result); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:17201: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17204: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:17206: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17209: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_func_mkstemp=yes + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_func_mkstemp=no + +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + +fi +echo "$as_me:17224: 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:17227: 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 17233 "configure" +#include "confdefs.h" +#define mkstemp autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef mkstemp + +#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 mkstemp (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_mkstemp) || defined (__stub___mkstemp) +#error found stub for mkstemp +#endif + + return mkstemp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17264: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17267: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17270: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17273: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_mkstemp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_mkstemp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:17283: result: $ac_cv_func_mkstemp" >&5 +echo "${ECHO_T}$ac_cv_func_mkstemp" >&6 + +fi +if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then + +cat >>confdefs.h <<\EOF +#define HAVE_MKSTEMP 1 +EOF + +fi + +if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then + CFLAGS=`echo "${CFLAGS}" | sed -e 's%-g %%' -e 's%-g$%%' -e 's%[ ]% %g' -e 's% [ ]*% %g' -e 's%^ %%' -e 's% $%%'` + CXXFLAGS=`echo "${CXXFLAGS}" | sed -e 's%-g %%' -e 's%-g$%%' -e 's%[ ]% %g' -e 's% [ ]*% %g' -e 's%^ %%' -e 's% $%%'` +fi + +cf_with_ada=yes +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:17312: 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:17329: 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:17341: result: $cf_TEMP_gnat" >&5 +echo "${ECHO_T}$cf_TEMP_gnat" >&6 +else + echo "$as_me:17344: 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:17354: 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:17365: 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:17394: 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:17413: result: $cf_gprconfig_value" >&5 +echo "${ECHO_T}$cf_gprconfig_value" >&6 + else + echo "$as_me:17416: 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:17429: 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:17440: 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:17449: 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:17457: 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:17472: 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:17481: result: $M4_exists" >&5 +echo "${ECHO_T}$M4_exists" >&6 +else + echo "$as_me:17484: 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:17490: 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:17494: checking if GNAT works" >&5 +echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6 + +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&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:17522: 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 "$cf_cv_prog_gnat_correct" = yes; then + + echo "$as_me:17532: checking optimization options for ADAFLAGS" >&5 +echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6 + case "$CFLAGS" in + (*-g*) + + ADAFLAGS="$ADAFLAGS -g" + + ;; + esac + case "$CFLAGS" in + (*-O*) + cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[ ].*//'` + + ADAFLAGS="$ADAFLAGS $cf_O_flag" + + ;; + esac + echo "$as_me:17549: result: $ADAFLAGS" >&5 +echo "${ECHO_T}$ADAFLAGS" >&6 + +echo "$as_me:17552: 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 +else + +cf_cv_gnatprep_opt_t=no +gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes + +fi +echo "$as_me:17562: 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:17566: 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]) + cf_gnat_generics=yes + ;; +(*) + cf_gnat_generics=no + ;; +esac +echo "$as_me:17576: result: $cf_gnat_generics" >&5 +echo "${ECHO_T}$cf_gnat_generics" >&6 + +if test "$cf_gnat_generics" = yes +then + cf_compile_generics=generics + cf_generic_objects="\${GENOBJS}" +else + cf_compile_generics= + cf_generic_objects= +fi + +echo "$as_me:17588: 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 +else + +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&5 2>&1 ) ; then + cf_cv_gnat_sigint=yes +else + cf_cv_gnat_sigint=no +fi +rm -rf ./conftest* ./*~conftest* + +fi +echo "$as_me:17636: result: $cf_cv_gnat_sigint" >&5 +echo "${ECHO_T}$cf_cv_gnat_sigint" >&6 + +if test "$cf_cv_gnat_sigint" = yes ; then + USE_GNAT_SIGINT="" +else + USE_GNAT_SIGINT="#" +fi + +cf_gnat_libraries=no +cf_gnat_projects=no + +if test "$enable_gnat_projects" != no ; then +echo "$as_me:17649: 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]*) + ;; +(*) + case "$cf_cv_system_name" in + (cygwin*|msys*) + ;; + (*) + rm -rf ./conftest* ./*~conftest* + if mkdir conftest.src conftest.bin conftest.lib + then + cd conftest.src + rm -rf ./conftest* ./*~conftest* + cat >>library.gpr <>confpackage.ads <>confpackage.adb <&5 2>&1 ) ; then + cf_gnat_projects=yes + fi + cd .. + fi + if test -f conftest.lib/confpackage.ali + then + cf_gnat_libraries=yes + fi + rm -rf ./conftest* ./*~conftest* + ;; + esac + ;; +esac +echo "$as_me:17712: 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:17718: checking if GNAT supports libraries" >&5 +echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6 + echo "$as_me:17720: result: $cf_gnat_libraries" >&5 +echo "${ECHO_T}$cf_gnat_libraries" >&6 +fi + +USE_OLD_MAKERULES="" +USE_GNAT_PROJECTS="#" +USE_GNAT_MAKE_GPR="#" +USE_GNAT_GPRBUILD="#" + +if test "$cf_gnat_projects" = yes +then + USE_OLD_MAKERULES="#" + USE_GNAT_PROJECTS="" + if test "$cf_cv_VERSION_GPRBUILD" != no + then + USE_GNAT_GPRBUILD="" + elif test "$cf_cv_VERSION_GNATMAKE" != no + then + USE_GNAT_MAKE_GPR="" + else + { echo "$as_me:17740: 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 + +if test "$cf_gnat_libraries" = yes +then + USE_GNAT_LIBRARIES="" +else + USE_GNAT_LIBRARIES="#" +fi + +echo "$as_me:17752: checking for ada-compiler" >&5 +echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6 + +# Check whether --with-ada-compiler or --without-ada-compiler was given. +if test "${with_ada_compiler+set}" = set; then + withval="$with_ada_compiler" + cf_ada_compiler=$withval +else + cf_ada_compiler=gnatmake +fi; + +echo "$as_me:17763: result: $cf_ada_compiler" >&5 +echo "${ECHO_T}$cf_ada_compiler" >&6 + + cf_ada_package=terminal_interface + +echo "$as_me:17768: checking for ada-include" >&5 +echo $ECHO_N "checking for ada-include... $ECHO_C" >&6 + +# Check whether --with-ada-include or --without-ada-include was given. +if test "${with_ada_include+set}" = set; then + withval="$with_ada_include" + +else + withval="${ADA_INCLUDE:-$prefix/share/ada/adainclude}" +fi; if test -n "$prefix/share/ada/adainclude" ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:17804: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +fi +eval ADA_INCLUDE="$withval" + +echo "$as_me:17813: result: $ADA_INCLUDE" >&5 +echo "${ECHO_T}$ADA_INCLUDE" >&6 + +echo "$as_me:17816: checking for ada-objects" >&5 +echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6 + +# Check whether --with-ada-objects or --without-ada-objects was given. +if test "${with_ada_objects+set}" = set; then + withval="$with_ada_objects" + +else + withval="${ADA_OBJECTS:-$prefix/lib/ada/adalib}" +fi; if test -n "$prefix/lib/ada/adalib" ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:17852: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +fi +eval ADA_OBJECTS="$withval" + +echo "$as_me:17861: result: $ADA_OBJECTS" >&5 +echo "${ECHO_T}$ADA_OBJECTS" >&6 + +echo "$as_me:17864: checking if an Ada95 shared-library should be built" >&5 +echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6 + +# Check whether --with-ada-sharedlib or --without-ada-sharedlib was given. +if test "${with_ada_sharedlib+set}" = set; then + withval="$with_ada_sharedlib" + with_ada_sharedlib=$withval +else + with_ada_sharedlib=no +fi; +echo "$as_me:17874: result: $with_ada_sharedlib" >&5 +echo "${ECHO_T}$with_ada_sharedlib" >&6 + +if test "x$with_ada_sharedlib" != xno +then + if test "x$cf_gnat_projects" != xyes + then + { echo "$as_me:17881: WARNING: disabling shared-library since GNAT projects are not supported" >&5 +echo "$as_me: WARNING: disabling shared-library since GNAT projects are not supported" >&2;} + with_ada_sharedlib=no + fi +fi + +ADA_SHAREDLIB='lib$(LIB_NAME).so.1' +MAKE_ADA_SHAREDLIB="#" + +if test "x$with_ada_sharedlib" != xno +then + MAKE_ADA_SHAREDLIB= + if test "x$with_ada_sharedlib" != xyes + then + ADA_SHAREDLIB="$with_ada_sharedlib" + fi +fi + + # allow the Ada binding to be renamed + +echo "$as_me:17901: checking for ada-libname" >&5 +echo $ECHO_N "checking for ada-libname... $ECHO_C" >&6 + +# Check whether --with-ada-libname or --without-ada-libname was given. +if test "${with_ada_libname+set}" = set; then + withval="$with_ada_libname" + ADA_LIBNAME=$withval +else + ADA_LIBNAME=AdaCurses +fi; +case "x$ADA_LIBNAME" in +(x|xyes|xno) + ADA_LIBNAME=AdaCurses + ;; +esac + +echo "$as_me:17917: result: $ADA_LIBNAME" >&5 +echo "${ECHO_T}$ADA_LIBNAME" >&6 + + else + { { echo "$as_me:17921: error: No usable Ada compiler found" >&5 +echo "$as_me: error: No usable Ada compiler found" >&2;} + { (exit 1); exit 1; }; } + fi +else + { { echo "$as_me:17926: error: The Ada compiler is needed for this package" >&5 +echo "$as_me: error: The Ada compiler is needed for this package" >&2;} + { (exit 1); exit 1; }; } +fi + +################################################################################ + +# not needed +TINFO_LDFLAGS2= + +TINFO_LIBS= + +### Construct the list of include-directories to be generated + +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS" +fi +CPPFLAGS="-I../include $CPPFLAGS" +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir} $CPPFLAGS" +fi +CPPFLAGS="-I. $CPPFLAGS" + +ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" +if test "$srcdir" != "."; then + ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" +fi +if test "$GCC" != yes; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" +elif test "$includedir" != "/usr/include"; then + if test "$includedir" = '${prefix}/include' ; then + if test x$prefix != x/usr ; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi + else + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi +fi + +### Build up pieces for makefile rules +echo "$as_me:17966: checking default library suffix" >&5 +echo $ECHO_N "checking default library suffix... $ECHO_C" >&6 + + case $DFT_LWR_MODEL in + (libtool) DFT_ARG_SUFFIX='' ;; + (normal) DFT_ARG_SUFFIX='' ;; + (debug) DFT_ARG_SUFFIX='_g' ;; + (profile) DFT_ARG_SUFFIX='_p' ;; + (shared) DFT_ARG_SUFFIX='' ;; + esac + test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}" +echo "$as_me:17977: result: $DFT_ARG_SUFFIX" >&5 +echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6 + +echo "$as_me:17980: checking default library-dependency suffix" >&5 +echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6 + + case X$DFT_LWR_MODEL in + (Xlibtool) + DFT_LIB_SUFFIX='.la' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xdebug) + case "$cf_cv_system_name" in + (*-msvc*) + DFT_LIB_SUFFIX='_g.lib' + ;; + (*) + DFT_LIB_SUFFIX='_g.a' + ;; + esac + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xprofile) + case "$cf_cv_system_name" in + (*-msvc*) + DFT_LIB_SUFFIX='_p.lib' + ;; + (*) + DFT_LIB_SUFFIX='_p.a' + ;; + esac + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xshared) + case "$cf_cv_system_name" in + (aix[5-7]*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (*-msvc*) + DFT_LIB_SUFFIX='.dll' + DFT_DEP_SUFFIX='.dll.lib' + ;; + (cygwin*|msys*|mingw*) + DFT_LIB_SUFFIX='.dll' + DFT_DEP_SUFFIX='.dll.a' + ;; + (darwin*) + DFT_LIB_SUFFIX='.dylib' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (hpux*) + case "$target" in + (ia64*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (*) + DFT_LIB_SUFFIX='.sl' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + ;; + (*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + ;; + (*) + case "$target" in + (*-msvc*) + DFT_LIB_SUFFIX='.lib' + ;; + (*) + DFT_LIB_SUFFIX='.a' + ;; + esac + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}" + DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}" + fi +echo "$as_me:18063: result: $DFT_DEP_SUFFIX" >&5 +echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6 + +echo "$as_me:18066: checking default object directory" >&5 +echo $ECHO_N "checking default object directory... $ECHO_C" >&6 + + case $DFT_LWR_MODEL in + (libtool) DFT_OBJ_SUBDIR='obj_lo' ;; + (normal) DFT_OBJ_SUBDIR='objects' ;; + (debug) DFT_OBJ_SUBDIR='obj_g' ;; + (profile) DFT_OBJ_SUBDIR='obj_p' ;; + (shared) + case "$cf_cv_system_name" in + (cygwin|msys) + DFT_OBJ_SUBDIR='objects' ;; + (*) + DFT_OBJ_SUBDIR='obj_s' ;; + esac + esac +echo "$as_me:18082: result: $DFT_OBJ_SUBDIR" >&5 +echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6 + +### Set up low-level terminfo dependencies for makefiles. + +if test "$DFT_LWR_MODEL" = shared ; then + case $cf_cv_system_name in + (cygwin*) + # "lib" files have ".dll.a" suffix, "cyg" files have ".dll" + ;; + (msys*) + # "lib" files have ".dll.a" suffix, "msys-" files have ".dll" + ;; + esac +fi + +USE_ARG_SUFFIX=${DFT_ARG_SUFFIX} + +USE_LIB_SUFFIX=${DFT_ARG_SUFFIX} + +USE_CFG_SUFFIX=${DFT_ARG_SUFFIX} + +### Construct the list of subdirectories for which we'll customize makefiles +### with the appropriate compile-rules. + +SUB_MAKEFILES="gen/adacurses${USE_ARG_SUFFIX}-config:gen/adacurses-config.in" + +cat >>confdefs.h <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 +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +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:18224: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >"$CONFIG_STATUS" <<_ACEOF +#! $SHELL +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +ac_cs_invocation="\$0 \$@" + +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset="unset" +else + as_unset="false" +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +exec 6>&1 + +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>"$CONFIG_STATUS" +fi + +cat >>"$CONFIG_STATUS" <<\EOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +EOF + +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +EOF +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:18403: 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;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:18422: 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;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +exec 5>>config.log +cat >&5 << _ACEOF + +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by $as_me 2.52.20210509, executed with + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + > "$ac_cs_invocation" +on `(hostname || uname -n) 2>/dev/null | sed 1q` + +_ACEOF +EOF + +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "$SUB_MAKEFILES" ) CONFIG_FILES="$CONFIG_FILES $SUB_MAKEFILES" ;; + "src/library.gpr" ) CONFIG_FILES="$CONFIG_FILES src/library.gpr:src/library.gpr.in" ;; + "doc/adacurses${DFT_ARG_SUFFIX}-config.1" ) CONFIG_FILES="$CONFIG_FILES doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in" ;; + "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:18496: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if "$ac_need_defaults"; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +EOF + +cat >>"$CONFIG_STATUS" <\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datarootdir@,$datarootdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@runstatedir@,$runstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@DEFS@,$DEFS,;t t +s,@LIBS@,$LIBS,;t t +s,@top_builddir@,$top_builddir,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +s,@target_cpu@,$target_cpu,;t t +s,@target_vendor@,$target_vendor,;t t +s,@target_os@,$target_os,;t t +s,@GREP@,$GREP,;t t +s,@FGREP@,$FGREP,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t +s,@CPP@,$CPP,;t t +s,@EGREP@,$EGREP,;t t +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,@LN_S@,$LN_S,;t t +s,@INSTALL_OPT_S@,$INSTALL_OPT_S,;t t +s,@INSTALL_OPT_O@,$INSTALL_OPT_O,;t t +s,@PKG_CONFIG@,$PKG_CONFIG,;t t +s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t +s,@PKG_CONFIG_LIBDIR@,$PKG_CONFIG_LIBDIR,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_NO_PHONY@,$MAKE_NO_PHONY,;t t +s,@MAKE_PHONY@,$MAKE_PHONY,;t t +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 +s,@ac_ct_LD@,$ac_ct_LD,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +s,@ARFLAGS@,$ARFLAGS,;t t +s,@DESTDIR@,$DESTDIR,;t t +s,@BUILD_CC@,$BUILD_CC,;t t +s,@BUILD_CPP@,$BUILD_CPP,;t t +s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t +s,@BUILD_CPPFLAGS@,$BUILD_CPPFLAGS,;t t +s,@BUILD_LDFLAGS@,$BUILD_LDFLAGS,;t t +s,@BUILD_LIBS@,$BUILD_LIBS,;t t +s,@BUILD_EXEEXT@,$BUILD_EXEEXT,;t t +s,@BUILD_OBJEXT@,$BUILD_OBJEXT,;t t +s,@DFT_LWR_MODEL@,$DFT_LWR_MODEL,;t t +s,@DFT_UPR_MODEL@,$DFT_UPR_MODEL,;t t +s,@NCURSES_CONFIG@,$NCURSES_CONFIG,;t t +s,@ac_ct_NCURSES_CONFIG@,$ac_ct_NCURSES_CONFIG,;t t +s,@NCURSES_MAJOR@,$NCURSES_MAJOR,;t t +s,@NCURSES_MINOR@,$NCURSES_MINOR,;t t +s,@NCURSES_PATCH@,$NCURSES_PATCH,;t t +s,@cf_cv_rel_version@,$cf_cv_rel_version,;t t +s,@cf_cv_abi_version@,$cf_cv_abi_version,;t t +s,@cf_cv_builtin_bool@,$cf_cv_builtin_bool,;t t +s,@cf_cv_header_stdbool_h@,$cf_cv_header_stdbool_h,;t t +s,@cf_cv_type_of_bool@,$cf_cv_type_of_bool,;t t +s,@LIB_PREFIX@,$LIB_PREFIX,;t t +s,@LIB_SUFFIX@,$LIB_SUFFIX,;t t +s,@CC_G_OPT@,$CC_G_OPT,;t t +s,@LD_MODEL@,$LD_MODEL,;t t +s,@shlibdir@,$shlibdir,;t t +s,@MAKE_DLLS@,$MAKE_DLLS,;t t +s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t +s,@LD_RPATH_OPT@,$LD_RPATH_OPT,;t t +s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t +s,@MK_SHARED_LIB@,$MK_SHARED_LIB,;t t +s,@RM_SHARED_OPTS@,$RM_SHARED_OPTS,;t t +s,@LINK_PROGS@,$LINK_PROGS,;t t +s,@LINK_TESTS@,$LINK_TESTS,;t t +s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t +s,@INSTALL_LIB@,$INSTALL_LIB,;t t +s,@RPATH_LIST@,$RPATH_LIST,;t t +s,@BROKEN_LINKER@,$BROKEN_LINKER,;t t +s,@NCURSES_EXT_FUNCS@,$NCURSES_EXT_FUNCS,;t t +s,@NCURSES_CONST@,$NCURSES_CONST,;t t +s,@PTHREAD@,$PTHREAD,;t t +s,@cf_cv_enable_reentrant@,$cf_cv_enable_reentrant,;t t +s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t +s,@ECHO_LT@,$ECHO_LT,;t t +s,@ECHO_LD@,$ECHO_LD,;t t +s,@RULE_CC@,$RULE_CC,;t t +s,@SHOW_CC@,$SHOW_CC,;t t +s,@ECHO_CC@,$ECHO_CC,;t t +s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t +s,@HAVE_STDNORETURN_H@,$HAVE_STDNORETURN_H,;t t +s,@STDC_NORETURN@,$STDC_NORETURN,;t t +s,@ADAFLAGS@,$ADAFLAGS,;t t +s,@ADA_TRACE@,$ADA_TRACE,;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 +s,@USE_GNAT_SIGINT@,$USE_GNAT_SIGINT,;t t +s,@USE_OLD_MAKERULES@,$USE_OLD_MAKERULES,;t t +s,@USE_GNAT_PROJECTS@,$USE_GNAT_PROJECTS,;t t +s,@USE_GNAT_LIBRARIES@,$USE_GNAT_LIBRARIES,;t t +s,@USE_GNAT_MAKE_GPR@,$USE_GNAT_MAKE_GPR,;t t +s,@USE_GNAT_GPRBUILD@,$USE_GNAT_GPRBUILD,;t t +s,@cf_ada_compiler@,$cf_ada_compiler,;t t +s,@cf_ada_package@,$cf_ada_package,;t t +s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t +s,@ADA_OBJECTS@,$ADA_OBJECTS,;t t +s,@ADA_SHAREDLIB@,$ADA_SHAREDLIB,;t t +s,@MAKE_ADA_SHAREDLIB@,$MAKE_ADA_SHAREDLIB,;t t +s,@ADA_LIBNAME@,$ADA_LIBNAME,;t t +s,@TINFO_LDFLAGS2@,$TINFO_LDFLAGS2,;t t +s,@TINFO_LIBS@,$TINFO_LIBS,;t t +s,@ACPPFLAGS@,$ACPPFLAGS,;t t +s,@DFT_ARG_SUFFIX@,$DFT_ARG_SUFFIX,;t t +s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t +s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t +s,@USE_ARG_SUFFIX@,$USE_ARG_SUFFIX,;t t +s,@USE_LIB_SUFFIX@,$USE_LIB_SUFFIX,;t t +s,@USE_CFG_SUFFIX@,$USE_CFG_SUFFIX,;t t +s,@TEST_ARG2@,$TEST_ARG2,;t t +s,@TEST_LIBS2@,$TEST_LIBS2,;t t +s,@NCURSES_SHLIB2@,$NCURSES_SHLIB2,;t t +s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t +s,@NCURSES_TREE@,$NCURSES_TREE,;t t +s,@EXTERNAL_TREE@,$EXTERNAL_TREE,;t t +s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t +s,@ADAGEN_LDFLAGS@,$ADAGEN_LDFLAGS,;t t +CEOF + +EOF + + cat >>"$CONFIG_STATUS" <<\EOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while "$ac_more_lines"; do + if test "$ac_beg" -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # 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 + # 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 + if test ! -s $tmp/subs.edit; then + grep "^s,@[^@,][^@,]*@,.*,;t t$" $tmp/subs.next >$tmp/subs.edit + if test ! -s $tmp/subs.edit; then + if test "$ac_beg" -gt 1; then + ac_end=`expr "$ac_end" - 1` + continue + fi + fi + fi + fi + + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr "$ac_sed_frag" + 1` + ac_beg=$ac_end + ac_end=`expr "$ac_end" + "$ac_max_sed_lines"` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +EOF +cat >>"$CONFIG_STATUS" <<\EOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$srcdir" in + .) ac_srcdir=. + if test -z "$ac_dots"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo "$ac_dots" | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) + ac_srcdir="$srcdir$ac_dir_suffix"; + ac_top_srcdir="$srcdir" ;; + *) # Relative path. + ac_srcdir="$ac_dots$srcdir$ac_dir_suffix" + ac_top_srcdir="$ac_dots$srcdir" ;; + esac + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_dots$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:18856: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + configure_input="Generated automatically from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:18874: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:18887: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +EOF +cat >>"$CONFIG_STATUS" <<\EOF + ac_warn_datarootdir=no + if test x"$ac_file" != x-; then + for ac_item in $ac_file_inputs + do + ac_seen=`grep '@\(datadir\|mandir\|infodir\)@' "$ac_item"` + if test -n "$ac_seen"; then + ac_used=`grep '@datarootdir@' "$ac_item"` + if test -z "$ac_used"; then + { echo "$as_me:18903: 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;} + ac_warn_datarootdir=yes + fi + fi + ac_seen=`grep '${datarootdir}' "$ac_item"` + if test -n "$ac_seen"; then + { echo "$as_me:18912: 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;} + ac_warn_datarootdir=yes + fi + done + fi + +if test "x$ac_warn_datarootdir" = xyes; then + ac_sed_cmds="$ac_sed_cmds | sed -e 's,@datarootdir@,\${prefix}/share,g' -e 's,\${datarootdir},\${prefix}/share,g'" +fi + +EOF +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + cp "$tmp/out" "$ac_file" + + for ac_name in prefix exec_prefix datarootdir + do + ac_seen=`${FGREP-fgrep} -n '${'$ac_name'[:=].*}' "$ac_file"` + if test -n "$ac_seen"; then + ac_init=`${EGREP-egrep} '[ ]*'$ac_name'[ ]*=' "$ac_file"` + if test -z "$ac_init"; then + ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'` + { echo "$as_me:18949: 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;} + fi + fi + done + ${EGREP-egrep} -n '@[a-z_][a-z_0-9]+@' "$ac_file" >$tmp/out + ${EGREP-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:18960: WARNING: Some variables may not be substituted: +$ac_seen" >&5 +echo "$as_me: WARNING: Some variables may not be substituted: +$ac_seen" >&2;} + fi + else + cat $tmp/out + fi + rm -f $tmp/out + +done +EOF +cat >>"$CONFIG_STATUS" <<\EOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_iB='\([ ]\),\1#\2define\3' +ac_iC=' ' +ac_iD='\4,;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:19009: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:19020: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:19033: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +EOF + +# Transform confdefs.h into a list of #define's. We won't use it as a sed +# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to +# be either 'cat' or 'sort'. +cat confdefs.h | uniq >conftest.vals + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +echo ' rm -f conftest.frag' >> "$CONFIG_STATUS" +while grep . conftest.vals >/dev/null +do + # Write chunks of a limited-size here document to conftest.frag. + echo ' cat >> conftest.frag <> "$CONFIG_STATUS" + sed "${ac_max_here_lines}q" conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> "$CONFIG_STATUS" + echo 'CEOF' >> "$CONFIG_STATUS" + sed "1,${ac_max_here_lines}d" conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +# Run sed to substitute the contents of conftest.frag into $tmp/in at the +# marker @DEFS@. +echo ' cat >> conftest.edit < $tmp/out +rm -f $tmp/in +mv $tmp/out $tmp/in +rm -f conftest.edit conftest.frag +' >> "$CONFIG_STATUS" + +cat >>"$CONFIG_STATUS" <<\EOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated automatically by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + 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:19091: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + fi + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +EOF +cat >>"$CONFIG_STATUS" <<\EOF +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + case "$ac_dest" in + default ) +if test -z "$USE_OLD_MAKERULES" ; then + $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile +fi + ;; + esac +done +EOF + +cat >>"$CONFIG_STATUS" <<\EOF + +{ (exit 0); exit 0; } +EOF +chmod +x "$CONFIG_STATUS" +ac_clean_files=$ac_clean_files_save + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL "$CONFIG_STATUS" || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + "$ac_cs_success" || { (exit 1); exit 1; } +fi +${MAKE:-make} preinstall diff --git a/deps/ncurses-6.3/Ada95/configure.in b/deps/ncurses-6.3/Ada95/configure.in new file mode 100644 index 0000000..1d86d82 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/configure.in @@ -0,0 +1,621 @@ +dnl*************************************************************************** +dnl Copyright 2018-2020,2021 Thomas E. Dickey * +dnl Copyright 2010-2016,2018 Free Software Foundation, Inc. * +dnl * +dnl Permission is hereby granted, free of charge, to any person obtaining a * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl Author: Thomas E. Dickey +dnl +dnl $Id: configure.in,v 1.83 2021/07/03 20:23:24 tom Exp $ +dnl Process this file with autoconf to produce a configure script. +dnl +dnl For additional information, see +dnl https://invisible-island.net/autoconf/ +dnl https://invisible-island.net/autoconf/my-autoconf.html +dnl +dnl --------------------------------------------------------------------------- +AC_PREREQ(2.52.20210509) +AC_REVISION($Revision: 1.83 $) +AC_INIT(gen/gen.c) +AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin) + +AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this + +CF_TOP_BUILDDIR + +CF_HELP_MESSAGE(General Options:) + +CF_WITH_SYSTYPE + +### Save the given $CFLAGS to allow user-override. +cf_user_CFLAGS="$CFLAGS" + +### Default install-location +CF_CFG_DEFAULTS + +### Checks for programs. +CF_PROG_CC(gnatgcc gcc cc) +AC_PROG_CPP +AC_PROG_GCC_TRADITIONAL +CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS]) + +AC_ARG_PROGRAM + +CF_PROG_AWK +CF_PROG_EGREP +AC_PROG_INSTALL +CF_PROG_LN_S + +CF_PROG_INSTALL +CF_INSTALL_OPTS + +AC_SYS_LONG_FILE_NAMES + +# if we find pkg-config, check if we should install the ".pc" files. +CF_PKG_CONFIG +CF_WITH_PKG_CONFIG_LIBDIR + +AC_MSG_CHECKING(if you want to build test-programs) +AC_ARG_WITH(tests, + [ --without-tests suppress build with test-programs], + [cf_with_tests=$withval], + [cf_with_tests=yes]) +AC_MSG_RESULT($cf_with_tests) + +AC_MSG_CHECKING(if we should assume mixed-case filenames) +AC_ARG_ENABLE(mixed-case, + [ --enable-mixed-case tic should assume mixed-case filenames], + [enable_mixedcase=$enableval], + [enable_mixedcase=auto]) +AC_MSG_RESULT($enable_mixedcase) +if test "$enable_mixedcase" = "auto" ; then + CF_MIXEDCASE_FILENAMES +else + cf_cv_mixedcase=$enable_mixedcase + if test "$enable_mixedcase" = "yes" ; then + AC_DEFINE(MIXEDCASE_FILENAMES) + fi +fi + +# do this after mixed-case option (tags/TAGS is not as important as tic). +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, ':') +AC_CHECK_TOOL(LD, ld, ld) +AC_CHECK_TOOL(AR, ar, ar) +CF_AR_FLAGS +CF_PATHSEP + +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(if you have specified an install-prefix) +AC_ARG_WITH(install-prefix, + [ --with-install-prefix prefixes actual install-location ($DESTDIR)], + [case "$withval" in + (yes|no) + ;; + (*) DESTDIR="$withval" + ;; + esac]) +AC_MSG_RESULT($DESTDIR) +AC_SUBST(DESTDIR) + +############################################################################### +CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:) +# If we're cross-compiling, allow the user to override the tools and their +# options. The configure script is oriented toward identifying the host +# compiler, etc., but we need a build compiler to generate parts of the source. +CF_BUILD_CC + +############################################################################### +CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:) + +### Options to allow the user to specify the set of libraries which are used. +### Use "--without-normal --with-shared" to allow the default model to be +### shared, for example. +cf_list_models="" + +AC_MSG_CHECKING(if you want to build shared C-objects) +AC_ARG_WITH(shared, + [ --with-shared generate shared C-objects (needed for --with-ada-sharedlib)], + [with_shared=$withval], + [with_shared=no]) +AC_MSG_RESULT($with_shared) +test "$with_shared" = "yes" && cf_list_models="$cf_list_models shared" + +AC_MSG_CHECKING(for specified models) +test -z "$cf_list_models" && cf_list_models=normal +AC_MSG_RESULT($cf_list_models) + +### Use the first model as the default, and save its suffix for use in building +### up test-applications. +AC_MSG_CHECKING(for default model) +DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'` +AC_MSG_RESULT($DFT_LWR_MODEL) + +CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl + +AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal") +AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL") + +CF_NCURSES_ADDON + +CF_WITH_LIB_PREFIX(cf_prefix) + +LIB_SUFFIX= +AC_SUBST(LIB_SUFFIX) + +############################################################################### + +dnl Not all ports of gcc support the -g option + +if test X"$CC_G_OPT" = X"" ; then + CC_G_OPT='-g' + test -n "$GCC" && test "${ac_cv_prog_cc_g}" != yes && CC_G_OPT='' +fi +AC_SUBST(CC_G_OPT) + +AC_MSG_CHECKING(for default loader flags) +case $DFT_LWR_MODEL in +(normal) LD_MODEL='' ;; +(debug) LD_MODEL=$CC_G_OPT ;; +(profile) LD_MODEL='-pg';; +(shared) LD_MODEL='' ;; +esac +AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg) +AC_MSG_RESULT($LD_MODEL) + +CF_SHARED_OPTS + +# The test/sample programs in the original tree link using rpath option. +# Make it optional for packagers. +if test -n "$LOCAL_LDFLAGS" +then + AC_MSG_CHECKING(if you want to link sample programs with rpath option) + AC_ARG_ENABLE(rpath-link, + [ --enable-rpath-link link sample programs with rpath option], + [with_rpath_link=$enableval], + [with_rpath_link=yes]) + AC_MSG_RESULT($with_rpath_link) + if test "$with_rpath_link" = no + then + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + fi +fi + +############################################################################### +CF_HELP_MESSAGE(Fine-Tuning Your Configuration:) + +### use option --enable-broken-linker to force on use of broken-linker support +CF_ENABLE_BROKEN_LINKER + +# Check to define _XOPEN_SOURCE "automatically" +CF_XOPEN_SOURCE(600) + +CF_LARGEFILE + +### Enable compiling-in rcs id's +AC_MSG_CHECKING(if RCS identifiers should be compiled-in) +AC_ARG_WITH(rcs-ids, + [ --with-rcs-ids compile-in RCS identifiers], + [with_rcs_ids=$withval], + [with_rcs_ids=no]) +AC_MSG_RESULT($with_rcs_ids) +test "$with_rcs_ids" = yes && AC_DEFINE(USE_RCS_IDS,1,[Define to 1 if RCS identifiers should be compiled-in)]) + +############################################################################### +CF_HELP_MESSAGE(Extensions:) + +### Note that some functions (such as const) are normally disabled anyway. +AC_MSG_CHECKING(if you want to build with function extensions) +AC_ARG_ENABLE(ext-funcs, + [ --disable-ext-funcs disable function-extensions], + [with_ext_funcs=$enableval], + [with_ext_funcs=yes]) +AC_MSG_RESULT($with_ext_funcs) +if test "$with_ext_funcs" = yes ; then + NCURSES_EXT_FUNCS=1 + AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 if we have use_default_colors function]) + AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extended functions]) +else + NCURSES_EXT_FUNCS=0 +fi +AC_SUBST(NCURSES_EXT_FUNCS) + +### use option --enable-const to turn on use of const beyond that in XSI. +AC_MSG_CHECKING(for extended use of const keyword) +AC_ARG_ENABLE(const, + [ --enable-const compile with extra/non-standard const], + [with_ext_const=$enableval], + [with_ext_const=no]) +AC_MSG_RESULT($with_ext_const) +NCURSES_CONST='/*nothing*/' +if test "$with_ext_const" = yes ; then + NCURSES_CONST=const +fi +AC_SUBST(NCURSES_CONST) + +############################################################################### +# These options are relatively safe to experiment with. +CF_HELP_MESSAGE(Development Code:) +AC_MSG_CHECKING(if you want all development code) +AC_ARG_WITH(develop, + [ --without-develop disable development options], + [with_develop=$withval], + [with_develop=no]) +AC_MSG_RESULT($with_develop) + +############################################################################### +# These are just experimental, probably should not be in a package: +CF_HELP_MESSAGE(Experimental Code:) + +# This is still experimental (20080329), but should ultimately be moved to +# the script-block --with-normal, etc. +CF_WITH_PTHREAD + +AC_MSG_CHECKING(if you want to use weak-symbols for pthreads) +AC_ARG_ENABLE(weak-symbols, + [ --enable-weak-symbols enable weak-symbols for pthreads], + [use_weak_symbols=$withval], + [use_weak_symbols=no]) +AC_MSG_RESULT($use_weak_symbols) +if test "$use_weak_symbols" = yes ; then + CF_WEAK_SYMBOLS +else + cf_cv_weak_symbols=no +fi + +if test $cf_cv_weak_symbols = yes ; then + AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads]) +fi + +PTHREAD= +if test "$with_pthread" = "yes" ; then + AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use the pthreads library]) + enable_reentrant=yes + if test $cf_cv_weak_symbols = yes ; then + PTHREAD=-lpthread + fi +fi +AC_SUBST(PTHREAD) + +# OpenSUSE is installing ncurses6, using reentrant option. +AC_CHECK_FUNC(_nc_TABSIZE,[assume_reentrant=yes], [assume_reentrant=no]) + +# Reentrant code has to be opaque; there's little advantage to making ncurses +# 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. +AC_MSG_CHECKING(if you want experimental reentrant code) +AC_ARG_ENABLE(reentrant, + [ --enable-reentrant compile with experimental reentrant code], + [with_reentrant=$enableval], + [with_reentrant=$assume_reentrant]) +AC_MSG_RESULT($with_reentrant) +if test "$with_reentrant" = yes ; then + cf_cv_enable_reentrant=1 + if test $cf_cv_weak_symbols = yes ; then + CF_REMOVE_LIB(LIBS,$LIBS,pthread) + elif test "$assume_reentrant" = no ; then + LIB_SUFFIX="t${LIB_SUFFIX}" + fi + AC_DEFINE(USE_REENTRANT,1,[Define to 1 to compile with experimental reentrant code]) +else + cf_cv_enable_reentrant=0 +fi +AC_SUBST(cf_cv_enable_reentrant) + +### Allow using a different wrap-prefix +if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then + AC_MSG_CHECKING(for prefix used to wrap public variables) + AC_ARG_WITH(wrap-prefix, + [ --with-wrap-prefix=XXX override prefix used for public variables], + [NCURSES_WRAP_PREFIX=$withval], + [NCURSES_WRAP_PREFIX=_nc_]) + AC_MSG_RESULT($NCURSES_WRAP_PREFIX) +else + NCURSES_WRAP_PREFIX=_nc_ +fi +AC_SUBST(NCURSES_WRAP_PREFIX) +AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ ncurses internal prefix]) + +############################################################################### +CF_HELP_MESSAGE(Testing/development Options:) + +### use option --disable-echo to suppress full display compiling commands +CF_DISABLE_ECHO + +CF_ENABLE_WARNINGS(Wno-unknown-pragmas Wswitch-enum,yes) +if test "x$enable_warnings" = "xyes"; then + CF_ADD_ADAFLAGS(-gnatg) +fi + +### use option --enable-assertions to turn on generation of assertion code +AC_MSG_CHECKING(if you want to enable runtime assertions) +AC_ARG_ENABLE(assertions, + [ --enable-assertions test: turn on generation of assertion code], + [with_assertions=$enableval], + [with_assertions=no]) +AC_MSG_RESULT($with_assertions) +if test -n "$GCC" +then + if test "$with_assertions" = no + then + CPPFLAGS="$CPPFLAGS -DNDEBUG" + else + CF_ADD_ADAFLAGS(-gnata) + fi +fi + +### use option --disable-leaks to suppress "permanent" leaks, for testing +AC_DEFINE(HAVE_NC_ALLOC_H,1,[Define to 1 if we have nc_alloc.h header]) + +### use option --enable-expanded to generate certain macros as functions +AC_ARG_ENABLE(expanded, + [ --enable-expanded test: generate functions for certain macros], + [test "$enableval" = yes && AC_DEFINE(NCURSES_EXPANDED,1,[Define to 1 if ncurses macros should be expanded as functions])]) + +### use option --disable-macros to suppress macros in favor of functions +AC_ARG_ENABLE(macros, + [ --disable-macros test: use functions rather than macros], + [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS,1,[Define to 1 if ncurses macros should be expanded as functions])]) + +# Normally we only add trace() to the debug-library. Allow this to be +# extended to all models of the ncurses library: +cf_all_traces=no +case "$CFLAGS $CPPFLAGS" in +(*-DTRACE*) + cf_all_traces=yes + ;; +esac + +AC_MSG_CHECKING(whether to add trace feature to all models) +AC_ARG_WITH(trace, +[ --with-trace test: add trace() function to all models of ncurses], +[cf_with_trace=$withval], +[cf_with_trace=$cf_all_traces]) +AC_MSG_RESULT($cf_with_trace) + +if test "$cf_with_trace" = yes ; then + ADA_TRACE=TRUE + CF_ADD_CFLAGS(-DTRACE) +else + ADA_TRACE=FALSE +fi + +AC_SUBST(ADA_TRACE) + +CF_DISABLE_GNAT_PROJECTS + +### Checks for libraries. +case $cf_cv_system_name in +(*mingw32*) + ;; +(*) +AC_CHECK_FUNC(gettimeofday, + AC_DEFINE(HAVE_GETTIMEOFDAY),[ + +AC_CHECK_LIB(bsd, gettimeofday, + AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday]) + LIBS="$LIBS -lbsd")])dnl CLIX: bzero, select, gettimeofday + ;; +esac + +### Checks for header files. +AC_CHECK_SIZEOF([signed char]) +AC_STDC_HEADERS +AC_HEADER_DIRENT +AC_HEADER_TIME + +### checks for compiler characteristics +AC_LANG_C +AC_C_CONST + +### Checks for external-data +CF_LINK_DATAONLY + +### Checks for library functions. +CF_MKSTEMP + +dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS +if test -z "$cf_user_CFLAGS" && test "$with_no_leaks" = no ; then + CF_STRIP_G_OPT(CFLAGS) + CF_STRIP_G_OPT(CXXFLAGS) +fi + +CF_HELP_MESSAGE(Ada95 Binding Options:) +cf_with_ada=yes +dnl Check for availability of GNU Ada Translator (GNAT). +dnl At the moment we support no other Ada95 compiler. +if test "$cf_with_ada" != "no" ; then + CF_PROG_GNAT + if test "$cf_cv_prog_gnat_correct" = yes; then + CF_FIXUP_ADAFLAGS + + CF_GNATPREP_OPT_T + + CF_GNAT_GENERICS + CF_GNAT_SIGINT + CF_GNAT_PROJECTS + + CF_WITH_ADA_COMPILER + + cf_ada_package=terminal_interface + AC_SUBST(cf_ada_package) + + CF_WITH_ADA_INCLUDE + CF_WITH_ADA_OBJECTS + CF_WITH_ADA_SHAREDLIB + + # allow the Ada binding to be renamed + CF_WITH_ADA_LIBNAME(AdaCurses) + else + AC_MSG_ERROR(No usable Ada compiler found) + fi +else + AC_MSG_ERROR(The Ada compiler is needed for this package) +fi + +################################################################################ + +# not needed +TINFO_LDFLAGS2= +AC_SUBST(TINFO_LDFLAGS2) +TINFO_LIBS= +AC_SUBST(TINFO_LIBS) + +### Construct the list of include-directories to be generated +CF_INCLUDE_DIRS +CF_ADA_INCLUDE_DIRS + +### Build up pieces for makefile rules +AC_MSG_CHECKING(default library suffix) +CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl +AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("") +AC_MSG_RESULT($DFT_ARG_SUFFIX) + +AC_MSG_CHECKING(default library-dependency suffix) +CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl +AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a") +AC_MSG_RESULT($DFT_DEP_SUFFIX) + +AC_MSG_CHECKING(default object directory) +CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl +AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj") +AC_MSG_RESULT($DFT_OBJ_SUBDIR) + +### Set up low-level terminfo dependencies for makefiles. + +if test "$DFT_LWR_MODEL" = shared ; then + case $cf_cv_system_name in + (cygwin*) + # "lib" files have ".dll.a" suffix, "cyg" files have ".dll" + ;; + (msys*) + # "lib" files have ".dll.a" suffix, "msys-" files have ".dll" + ;; + esac +fi + +USE_ARG_SUFFIX=${DFT_ARG_SUFFIX} +AC_SUBST(USE_ARG_SUFFIX) + +USE_LIB_SUFFIX=${DFT_ARG_SUFFIX} +AC_SUBST(USE_LIB_SUFFIX) + +USE_CFG_SUFFIX=${DFT_ARG_SUFFIX} +AC_SUBST(USE_CFG_SUFFIX) + +### Construct the list of subdirectories for which we'll customize makefiles +### with the appropriate compile-rules. + +SUB_MAKEFILES="gen/adacurses${USE_ARG_SUFFIX}-config:gen/adacurses-config.in" + +AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as the library path-separator]) + +################################################################################ + +TEST_ARG2= +AC_SUBST(TEST_ARG2) + +TEST_LIBS2= +AC_SUBST(TEST_LIBS2) + +dnl for separate build, this is good enough for "sh $(top_srcdir)/misc/shlib" +NCURSES_SHLIB2="sh -c" +AC_SUBST(NCURSES_SHLIB2) + +ADA_SUBDIRS="include gen src doc" +if test "x$cf_with_tests" != "xno" ; then + ADA_SUBDIRS="$ADA_SUBDIRS samples" +fi +for cf_dir in $ADA_SUBDIRS +do + SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile" +done +AC_SUBST(ADA_SUBDIRS) + +NCURSES_TREE="#" +AC_SUBST(NCURSES_TREE) + +EXTERNAL_TREE= +AC_SUBST(EXTERNAL_TREE) + +# match layout used by make-tar.sh +ADAHTML_DIR=../doc/ada +AC_SUBST(ADAHTML_DIR) + +if test "x$cross_compiling" = xyes ; then + ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)' +else + ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)' +fi + +AC_SUBST(ADAGEN_LDFLAGS) + +AC_OUTPUT( \ + $SUB_MAKEFILES \ + src/library.gpr:src/library.gpr.in \ + doc/adacurses${DFT_ARG_SUFFIX}-config.1:doc/MKada_config.in \ + Makefile,[ +if test -z "$USE_OLD_MAKERULES" ; then + $AWK -f $srcdir/mk-1st.awk <$srcdir/src/modules >>src/Makefile +fi +],[ +### Special initialization commands, used to pass information from the +### configuration-run into config.status + +AWK="$AWK" +DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX" +DFT_LWR_MODEL="$DFT_LWR_MODEL" +LIB_NAME="$LIB_NAME" +LIB_PREFIX="$LIB_PREFIX" +LIB_SUFFIX="$LIB_SUFFIX" +LN_S="$LN_S" +NCURSES_MAJOR="$NCURSES_MAJOR" +NCURSES_MINOR="$NCURSES_MINOR" +NCURSES_PATCH="$NCURSES_PATCH" +USE_OLD_MAKERULES="$USE_OLD_MAKERULES" +cf_cv_VERSION_GNATMAKE=$cf_cv_VERSION_GNATMAKE +cf_cv_VERSION_GPRBUILD=$cf_cv_VERSION_GPRBUILD +cf_cv_abi_version="$cf_cv_abi_version" +cf_cv_rel_version="$cf_cv_rel_version" +cf_cv_rm_so_locs="$cf_cv_rm_so_locs" +cf_cv_shared_soname='$cf_cv_shared_soname' +cf_cv_shlib_version="$cf_cv_shlib_version" +cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix" +cf_cv_system_name="$cf_cv_system_name" +host="$host" +target="$target" + +],cat)dnl +${MAKE:-make} preinstall diff --git a/deps/ncurses-6.3/Ada95/doc/Makefile.in b/deps/ncurses-6.3/Ada95/doc/Makefile.in new file mode 100644 index 0000000..0aed33f --- /dev/null +++ b/deps/ncurses-6.3/Ada95/doc/Makefile.in @@ -0,0 +1,100 @@ +# $Id: Makefile.in,v 1.9 2021/07/03 15:45:33 tom Exp $ +############################################################################## +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2011-2015,2018 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: Thomas E. Dickey +# +# Makefile for AdaCurses manual pages. + +SHELL = @SHELL@ +VPATH = @srcdir@ + +DESTDIR = @DESTDIR@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +mandir = @mandir@ + +INSTALL = @INSTALL@ @INSTALL_OPT_O@ +INSTALL_DATA = @INSTALL_DATA@ + +DFT_ARG_SUFFIX = @DFT_ARG_SUFFIX@ + +THIS = @ADA_LIBNAME@ +DOCDIR = $(DESTDIR)$(datadir)/doc/$(THIS) +MANDIR = $(DESTDIR)$(mandir)/man1 + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.html +@MAKE_PHONY@.PHONY : install.man +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : lint +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.html +@MAKE_PHONY@.PHONY : uninstall.man + +all \ +sources \ +tags : + +$(DOCDIR) \ +$(MANDIR) : + mkdir -p $@ + +install install.man : $(MANDIR) + $(INSTALL_DATA) adacurses${DFT_ARG_SUFFIX}-config.1 $(MANDIR) + +uninstall uninstall.man : + -rm -f $(MANDIR)/adacurses${DFT_ARG_SUFFIX}-config.1 + +# HTML documentation is optional, usually in a separate package. +install.html : $(DOCDIR) + ( cd $(srcdir) && tar -cf - *.htm* ada | tar -C $(DOCDIR) -xf - ) + +uninstall.html : + -rm -rf $(DOCDIR) + +mostlyclean : + -rm -f core tags TAGS *~ *.bak *.ln *.atac trace + +clean: mostlyclean + +distclean realclean: clean + -rm -f Makefile *-config.1 diff --git a/deps/ncurses-6.3/Ada95/gen/Makefile.in b/deps/ncurses-6.3/Ada95/gen/Makefile.in new file mode 100644 index 0000000..4d845c7 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/gen/Makefile.in @@ -0,0 +1,368 @@ +############################################################################## +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,2018 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, 1996 +# and: Thomas E. Dickey, 1997 +# +# $Id: Makefile.in,v 1.97 2021/07/03 15:45:33 tom Exp $ +# +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +x = @EXEEXT@ + +top_srcdir = @top_srcdir@ +DESTDIR = @DESTDIR@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +includedir = @includedir@ + +INSTALL = @INSTALL@ @INSTALL_OPT_O@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ + +AWK = @AWK@ +LN_S = @LN_S@ + +CC = @CC@ +HOST_CC = @BUILD_CC@ + +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ +HOST_CFLAGS = @BUILD_CFLAGS@ + +CPPFLAGS = @CPPFLAGS@ +HOST_CPPFLAGS = @ACPPFLAGS@ @BUILD_CPPFLAGS@ \ + -DHAVE_CONFIG_H -I$(srcdir) + +CCFLAGS = $(HOST_CPPFLAGS) $(HOST_CFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ +LOCAL_LIBDIR = @top_builddir@/lib + +LINK = $(HOST_CC) +LDFLAGS = @LDFLAGS@ +LIBS = @LIBS@ + +# For the wide-character configuration combined with broken_linker, we need +# addresses of ACS_xxx constants, which requires linking with the newly built +# ncurses library. If cross-compiling, the developer has to fill in a workable +# native library for this purpose. +NATIVE_LDFLAGS = @LD_MODEL@ $(LOCAL_LIBS) @TINFO_LDFLAGS2@ $(LDFLAGS) @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) @TINFO_LIBS@ +CROSS_LDFLAGS = @BUILD_LDFLAGS@ @BUILD_LIBS@ + +ACTUAL_LDFLAGS = @ADAGEN_LDFLAGS@ + +RANLIB = @RANLIB@ + +M4 = m4 +M4FLAGS = -DNCURSES_EXT_FUNCS=@NCURSES_EXT_FUNCS@ + +ADACURSES_CONFIG = adacurses@USE_CFG_SUFFIX@-config + +WRAPPER = @NCURSES_SHLIB2@ + +PROG_GENERATE = ./generate$x +GENERATE = $(PROG_GENERATE) '@USE_ARG_SUFFIX@' +DEL_ADAMODE = sed -e '/^\-\-\ \ \-\*\-\ ada\ \-\*\-.*/d' + +GNATHTML = `type -p gnathtml || type -p gnathtml.pl 2>/dev/null` +GNATHP = www.gnat.com + +################################################################################ +ALIB = @cf_ada_package@ +ABASE = $(ALIB)-curses + +ADA_SRCDIR = ../src + +GEN_TARGETS = $(ADA_SRCDIR)/$(ABASE).ads \ + $(ADA_SRCDIR)/$(ABASE).adb \ + $(ADA_SRCDIR)/$(ABASE)-aux.ads \ + $(ADA_SRCDIR)/$(ABASE)-trace.ads \ + $(ADA_SRCDIR)/$(ABASE)-menus.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms.ads \ + $(ADA_SRCDIR)/$(ABASE)-mouse.ads \ + $(ADA_SRCDIR)/$(ABASE)-panels.ads \ + $(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads \ + $(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads \ + $(ADA_SRCDIR)/$(ABASE)_constants.ads + +GEN_SRC = $(srcdir)/$(ABASE).ads.m4 \ + $(srcdir)/$(ABASE).adb.m4 \ + $(srcdir)/$(ABASE)-aux.ads.m4 \ + $(srcdir)/$(ABASE)-trace.ads.m4 \ + $(srcdir)/$(ABASE)-menus.ads.m4 \ + $(srcdir)/$(ABASE)-forms.ads.m4 \ + $(srcdir)/$(ABASE)-mouse.ads.m4 \ + $(srcdir)/$(ABASE)-panels.ads.m4 \ + $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-forms-field_types.ads.m4 \ + $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \ + $(srcdir)/$(ABASE)-panels-user_data.ads.m4 + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +libs : $(GEN_TARGETS) + @echo made $@ + +sources: + +$(DESTDIR)$(bindir) : + mkdir -p $@ + +install \ +install.libs :: $(DESTDIR)$(bindir) $(ADACURSES_CONFIG) + $(INSTALL_SCRIPT) $(ADACURSES_CONFIG) $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG) + +uninstall \ +uninstall.libs :: + -rm -f $(DESTDIR)$(bindir)/$(ADACURSES_CONFIG) + +$(PROG_GENERATE): gen.o + @ECHO_LD@ $(LINK) $(CFLAGS_NORMAL) gen.o $(ACTUAL_LDFLAGS) -o $@ + +gen.o: $(srcdir)/gen.c + $(HOST_CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/gen.c + +$(ADA_SRCDIR)/$(ABASE)_constants.ads: $(PROG_GENERATE) + $(WRAPPER) "$(GENERATE) $@" +################################################################################ +$(ADA_SRCDIR)/$(ABASE).ads: $(srcdir)/$(ABASE).ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE).ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE).adb: $(srcdir)/$(ABASE).adb.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE).adb.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-aux.ads: $(srcdir)/$(ABASE)-aux.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-aux.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-trace.ads: $(srcdir)/$(ABASE)-trace.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-trace.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-menus.ads: $(srcdir)/$(ABASE)-menus.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-menus.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms.ads: $(srcdir)/$(ABASE)-forms.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-mouse.ads: $(srcdir)/$(ABASE)-mouse.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-mouse.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-panels.ads: $(srcdir)/$(ABASE)-panels.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-panels.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-menus-menu_user_data.ads: \ + $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-menus-menu_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-menus-item_user_data.ads: \ + $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-menus-item_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms-form_user_data.ads: \ + $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms-form_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms-field_types.ads: \ + $(srcdir)/$(ABASE)-forms-field_types.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms-field_types.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-forms-field_user_data.ads: \ + $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-forms-field_user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +$(ADA_SRCDIR)/$(ABASE)-panels-user_data.ads: \ + $(srcdir)/$(ABASE)-panels-user_data.ads.m4 \ + $(srcdir)/normal.m4 + $(M4) $(M4FLAGS) -DM4MACRO=$(srcdir)/normal.m4 \ + $(srcdir)/$(ABASE)-panels-user_data.ads.m4 |\ + $(DEL_ADAMODE) >$@ + +install.progs :: + +tags: + ctags *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ etags *.[ch] + +mostlyclean :: + -rm -f a.out core $(PROG_GENERATE) *.o + +clean :: mostlyclean + -rm -f $(GEN_TARGETS) instab.tmp *.ad[bs] *.html *.ali *.tmp + +distclean :: clean + -rm -f $(ADACURSES_CONFIG) + -rm -f Makefile + +realclean :: distclean + +HTML_DIR = @ADAHTML_DIR@ + +instab.tmp : table.m4 $(GEN_SRC) + @rm -f $@ + @for f in $(GEN_SRC) ; do \ + $(M4) $(M4FLAGS) -DM4MACRO=table.m4 $$f | $(DEL_ADAMODE) >> $@ ;\ + done; + +$(HTML_DIR)/table.html : instab.tmp + @-touch $@ + @-chmod +w $@ + @echo ' $@ + @echo 'PUBLIC "-//IETF//DTD HTML 3.0//EN">' >> $@ + @echo '' >> $@ + @echo '' >> $@ + @echo 'Correspondence between ncurses C and Ada functions' >>$@ + @echo '' >> $@ + @echo '' >> $@ + @echo '

Correspondence between ncurses C and Ada functions

' >>$@ + @echo '

Sorted by C function name

' >>$@ + @echo '' >>$@ + @echo '' >>$@ + @echo '' >>$@ + @sort < instab.tmp >> $@ + @echo '
C nameAda nameman page
' >>$@ + @rm -f instab.tmp + +adahtml: + test -n "$(GNATHTML)" || exit 1 + @find $(HTML_DIR) -type f -exec rm -f {} \; + @mkdir -p $(HTML_DIR) + ( cp -p ../src/*.ad[sb] . && chmod +w *.ad[sb] ) +@USE_OLD_MAKERULES@ ln -sf ../src/*.ali . +@USE_GNAT_PROJECTS@ ln -sf ../static-ali/*.ali . + @echo "Filtering generated files" + @for f in $(GEN_SRC); do \ + h=`basename $$f` ;\ + g=`basename $$f .ads.m4` ;\ + if test "$$g" != "$$h" ; then \ + $(M4) $(M4FLAGS) -DM4MACRO=html.m4 $$f | $(DEL_ADAMODE) > $$g.ads ;\ + echo "... $$g.ads" ;\ + fi \ + done + @-rm -f $(HTML_DIR)/$(ALIB)*.htm* + $(GNATHTML) -d -f $(ALIB)*.ads + for f in html/$(ALIB)*.htm*; do \ + a=`basename $$f` ; \ + sed -e 's/You may also.*body.*//' <$$f |\ + sed -e 's%GNAT%
GNAT%g' |\ + sed -e 's%<A HREF%%g' |\ + sed -e 's%#1A\([[:space:]]*NAME="[^"]*"\)#2%%' |\ + sed -e 's%#1/A#2%%' |\ + sed -e 's/3X/3x/g' |\ + sed -e 's/$$\([ABCDEFGHIJKLMNOPQRSTUVWXZabcdefghijklmnopqrstuvwxz0123456789_]*:.*\)\$$/@\1@/' |\ + sed -e 's%</A>%%g' > $$a.tmp ;\ + mv $$a.tmp $$f ;\ + done + @rm -f *.ad[sb] *.ali *.tmp + @for f in funcs.htm main.htm ; do \ + sed -e "\%\[ \]%d" < html/$$f > $$f ;\ + mv $$f html/$$f ;\ + done + @rm -f "html/funcs/ .htm" + @cp -pdrf html/* $(HTML_DIR)/ + @rm -rf html + +html : adahtml $(HTML_DIR)/table.html + @echo made $@ + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-5.9/Ada95/gen/adacurses-config.in b/deps/ncurses-6.3/Ada95/gen/adacurses-config.in similarity index 78% rename from deps/ncurses-5.9/Ada95/gen/adacurses-config.in rename to deps/ncurses-6.3/Ada95/gen/adacurses-config.in index ec0b6b6..2b055dc 100644 --- a/deps/ncurses-5.9/Ada95/gen/adacurses-config.in +++ b/deps/ncurses-6.3/Ada95/gen/adacurses-config.in @@ -1,7 +1,8 @@ #! /bin/sh -# $Id: adacurses-config.in,v 1.6 2010/03/06 21:05:01 tom Exp $ +# $Id: adacurses-config.in,v 1.14 2020/02/02 23:34:34 tom Exp $ ############################################################################## -# Copyright (c) 2007-2009,2010 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 2007-2014,2016 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"), # @@ -40,14 +41,15 @@ ADA_OBJECTS=@ADA_OBJECTS@ VERSION=@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@ -CFLAGS="-I$ADA_INCLUDE -aO$ADA_OBJECTS" -LIBS="-L$ADA_OBJECTS -lAdaCurses" +CFLAGS="-aI$ADA_INCLUDE -aO$ADA_OBJECTS" +LIBS="-L$ADA_OBJECTS -l@ADA_LIBNAME@" -THIS="adacurses" +THIS="@ADA_LIBNAME@" +THIS_CFG="$THIS@DFT_ARG_SUFFIX@-config" case "x$1" in x--version) - echo AdaCurses $VERSION + echo @ADA_LIBNAME@ $VERSION ;; x--cflags) echo $CFLAGS @@ -57,23 +59,25 @@ case "x$1" in ;; x) # if no parameter is given, give what gnatmake needs - echo "$CFLAGS -i -largs $LIBS" + echo "$CFLAGS -largs $LIBS" ;; x--help) cat <&2 + echo 'Usage: $THIS_CFG [--version | --cflags | --libs]' >&2 exit 1 ;; esac diff --git a/deps/ncurses-6.3/Ada95/gen/gen.c b/deps/ncurses-6.3/Ada95/gen/gen.c new file mode 100644 index 0000000..51bc161 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/gen/gen.c @@ -0,0 +1,579 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2014,2016 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, 1996 * + * and: Thomas E. Dickey, 1998 * + * and: Nicolas Boulenguez, 2011 * + ****************************************************************************/ + +/* + Version Control + $Id: gen.c,v 1.77 2020/08/16 18:05:05 tom Exp $ + --------------------------------------------------------------------------*/ +/* + This program prints on its standard output the source for the + Terminal_Interface.Curses_Constants Ada package specification. This pure + package only exports C constants to the Ada compiler. + */ + +#ifdef HAVE_CONFIG_H +#include +#else +#include +#endif + +#include +#include + +#include +#include + +#undef UCHAR +#undef UINT +#undef ULONG + +typedef unsigned char UCHAR; +typedef unsigned int UINT; +typedef unsigned long ULONG; + +/* These global variables will be set by main () */ +static int little_endian; +static const char *my_program_invocation_name = NULL; + +static void +my_error(const char *message) +{ + fprintf(stderr, "%s: %s\n", my_program_invocation_name, message); + exit(EXIT_FAILURE); +} + +static void +print_constant(FILE * fp, + const char *name, + UINT value) +{ + fprintf(fp, " %-28s : constant := %u;\n", name, value); +} + +static void +print_long_val(FILE * fp, + const char *name, + long value) +{ + fprintf(fp, " %-28s : constant := %ld;\n", name, value); +} + +static void +print_size_of(FILE * fp, + const char *name, + size_t value) +{ + fprintf(fp, " %-28s : constant := %lu;\n", name, value); +} + +#define PRINT_NAMED_CONSTANT(name) \ + print_long_val (fp, #name, name) + +static void +print_comment(FILE * fp, const char *message) +{ + fprintf(fp, "\n -- %s\n\n", message); +} + +/* + * Make sure that KEY_MIN and KEY_MAX are defined. + * main () will protest if KEY_MIN == 256 + */ +#ifndef KEY_MAX +# define KEY_MAX 0777 +#endif +#ifndef KEY_MIN +# define KEY_MIN 0401 +#endif + +static UCHAR +bit_is_set(const UCHAR * const data, + const UINT offset) +{ + const UCHAR byte = data[offset >> 3]; + UINT bit; + + if (little_endian) + bit = offset; /* offset */ + else /* or */ + bit = ~offset; /* 7 - offset */ + bit &= 7; /* modulo 8 */ + return (UCHAR) (byte & (1 << bit)); +} + +/* Find lowest and highest used offset in a byte array. */ +/* Returns 0 if and only if all bits are unset. */ +static int +find_pos(const UCHAR * const data, + const UINT sizeof_data, + UINT * const low, + UINT * const high) +{ + const UINT last = (sizeof_data << 3) - 1; + UINT offset; + + for (offset = last; !bit_is_set(data, offset); offset--) + if (!offset) /* All bits are 0. */ + return 0; + *high = offset; + + for (offset = 0; !bit_is_set(data, offset); offset++) + { + } + *low = offset; + + return -1; +} + +#define PRINT_BITMASK(c_type, ada_name, mask_macro) \ + { \ + UINT first, last; \ + c_type mask = (mask_macro); \ + if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last)) \ + my_error ("failed to locate " ada_name); \ + print_constant (fp, ada_name "_First", first); \ + print_constant (fp, ada_name "_Last", last); \ + } + +#define PRINT_NAMED_BITMASK(c_type, mask_macro) \ + PRINT_BITMASK (c_type, #mask_macro, mask_macro) + +#define STRUCT_OFFSET(record, field) \ + { \ + UINT first, last; \ + record mask; \ + memset (&mask, 0, sizeof (mask)); \ + memset (&mask.field, 0xff, sizeof(mask.field)); \ + if (!find_pos ((UCHAR *)&mask, sizeof (mask), &first, &last)) \ + my_error ("failed to locate" #record "_" #field); \ + print_constant (fp, #record "_" #field "_First", first); \ + print_constant (fp, #record "_" #field "_Last", last); \ + } + +/*--------------------*/ +/* Start of main (). */ +/*--------------------*/ + +int +main(int argc, const char *argv[]) +{ + FILE *fp = 0; + const int x = 0x12345678; + + little_endian = (*((const char *)&x) == 0x78); + + my_program_invocation_name = argv[0]; + + if (KEY_MIN == 256) + my_error("unexpected value for KEY_MIN: 256"); + + if (argc == 3) + { + fp = fopen(argv[2], "wb"); + } + else if (argc == 2) + { + fp = stdout; + } + else + { + my_error("Only one or two arguments expected (DFT_ARG_SUFFIX)"); + } + + if ((strlen(argv[0]) + strlen(__FILE__)) > 25) + { + fprintf(fp, "-- Generated by the C program %.40s.\n", + my_program_invocation_name); + } + else + { + fprintf(fp, "-- Generated by the C program %s (source %s).\n", + my_program_invocation_name, + __FILE__); + } + fprintf(fp, "-- Do not edit this file directly.\n"); + fprintf(fp, "-- The values provided here may vary on your system.\n"); + fprintf(fp, "\n"); + fprintf(fp, "with System;\n"); + fprintf(fp, "package Terminal_Interface.Curses_Constants is\n"); + fprintf(fp, " pragma Pure;\n"); + fprintf(fp, "\n"); + + fprintf(fp, " DFT_ARG_SUFFIX : constant String := \"%s\";\n", argv[1]); + fprintf(fp, + " Bit_Order : constant System.Bit_Order := System.%s_Order_First;\n", + little_endian ? "Low" : "High"); + print_size_of(fp, "Sizeof_Bool", 8 * sizeof(bool)); + + PRINT_NAMED_CONSTANT(OK); + PRINT_NAMED_CONSTANT(ERR); + fprintf(fp, + " pragma Warnings (Off); -- redefinition of Standard.True and False\n"); + PRINT_NAMED_CONSTANT(TRUE); + PRINT_NAMED_CONSTANT(FALSE); + fprintf(fp, " pragma Warnings (On);\n"); + + print_comment(fp, "Version of the ncurses library from extensions(3NCURSES)"); + PRINT_NAMED_CONSTANT(NCURSES_VERSION_MAJOR); + PRINT_NAMED_CONSTANT(NCURSES_VERSION_MINOR); + fprintf(fp, " Version : constant String := \"%d.%d\";\n", + NCURSES_VERSION_MAJOR, NCURSES_VERSION_MINOR); + + print_comment(fp, "Character non-color attributes from attr(3NCURSES)"); + fprintf(fp, " -- attr_t and chtype may be signed in C.\n"); + fprintf(fp, " type attr_t is mod 2 ** %lu;\n", (long unsigned)(8 * sizeof(attr_t))); + PRINT_NAMED_BITMASK(attr_t, A_CHARTEXT); + PRINT_NAMED_BITMASK(attr_t, A_COLOR); + PRINT_BITMASK(attr_t, "Attr", A_ATTRIBUTES & ~A_COLOR); + PRINT_NAMED_BITMASK(attr_t, A_STANDOUT); + PRINT_NAMED_BITMASK(attr_t, A_UNDERLINE); + PRINT_NAMED_BITMASK(attr_t, A_REVERSE); + PRINT_NAMED_BITMASK(attr_t, A_BLINK); + PRINT_NAMED_BITMASK(attr_t, A_DIM); + PRINT_NAMED_BITMASK(attr_t, A_BOLD); + PRINT_NAMED_BITMASK(attr_t, A_PROTECT); + PRINT_NAMED_BITMASK(attr_t, A_INVIS); + PRINT_NAMED_BITMASK(attr_t, A_ALTCHARSET); + PRINT_NAMED_BITMASK(attr_t, A_HORIZONTAL); + PRINT_NAMED_BITMASK(attr_t, A_LEFT); + PRINT_NAMED_BITMASK(attr_t, A_LOW); + PRINT_NAMED_BITMASK(attr_t, A_RIGHT); + PRINT_NAMED_BITMASK(attr_t, A_TOP); + PRINT_NAMED_BITMASK(attr_t, A_VERTICAL); + print_size_of(fp, "chtype_Size", 8 * sizeof(chtype)); + + print_comment(fp, "predefined color numbers from color(3NCURSES)"); + PRINT_NAMED_CONSTANT(COLOR_BLACK); + PRINT_NAMED_CONSTANT(COLOR_RED); + PRINT_NAMED_CONSTANT(COLOR_GREEN); + PRINT_NAMED_CONSTANT(COLOR_YELLOW); + PRINT_NAMED_CONSTANT(COLOR_BLUE); + PRINT_NAMED_CONSTANT(COLOR_MAGENTA); + PRINT_NAMED_CONSTANT(COLOR_CYAN); + PRINT_NAMED_CONSTANT(COLOR_WHITE); + + print_comment(fp, "ETI return codes from ncurses.h"); + PRINT_NAMED_CONSTANT(E_OK); + PRINT_NAMED_CONSTANT(E_SYSTEM_ERROR); + PRINT_NAMED_CONSTANT(E_BAD_ARGUMENT); + PRINT_NAMED_CONSTANT(E_POSTED); + PRINT_NAMED_CONSTANT(E_CONNECTED); + PRINT_NAMED_CONSTANT(E_BAD_STATE); + PRINT_NAMED_CONSTANT(E_NO_ROOM); + PRINT_NAMED_CONSTANT(E_NOT_POSTED); + PRINT_NAMED_CONSTANT(E_UNKNOWN_COMMAND); + PRINT_NAMED_CONSTANT(E_NO_MATCH); + PRINT_NAMED_CONSTANT(E_NOT_SELECTABLE); + PRINT_NAMED_CONSTANT(E_NOT_CONNECTED); + PRINT_NAMED_CONSTANT(E_REQUEST_DENIED); + PRINT_NAMED_CONSTANT(E_INVALID_FIELD); + PRINT_NAMED_CONSTANT(E_CURRENT); + + print_comment(fp, "Input key codes not defined in any ncurses manpage"); + PRINT_NAMED_CONSTANT(KEY_MIN); + PRINT_NAMED_CONSTANT(KEY_MAX); +#ifdef KEY_CODE_YES + PRINT_NAMED_CONSTANT(KEY_CODE_YES); +#endif + + print_comment(fp, "Input key codes from getch(3NCURSES)"); + PRINT_NAMED_CONSTANT(KEY_BREAK); + PRINT_NAMED_CONSTANT(KEY_DOWN); + PRINT_NAMED_CONSTANT(KEY_UP); + PRINT_NAMED_CONSTANT(KEY_LEFT); + PRINT_NAMED_CONSTANT(KEY_RIGHT); + PRINT_NAMED_CONSTANT(KEY_HOME); + PRINT_NAMED_CONSTANT(KEY_BACKSPACE); + PRINT_NAMED_CONSTANT(KEY_F0); +#define PRINT_NAMED_FUNC_KEY(name) print_constant(fp, "KEY_F"#name, KEY_F(name)) + PRINT_NAMED_FUNC_KEY(1); + PRINT_NAMED_FUNC_KEY(2); + PRINT_NAMED_FUNC_KEY(3); + PRINT_NAMED_FUNC_KEY(4); + PRINT_NAMED_FUNC_KEY(5); + PRINT_NAMED_FUNC_KEY(6); + PRINT_NAMED_FUNC_KEY(7); + PRINT_NAMED_FUNC_KEY(8); + PRINT_NAMED_FUNC_KEY(9); + PRINT_NAMED_FUNC_KEY(10); + PRINT_NAMED_FUNC_KEY(11); + PRINT_NAMED_FUNC_KEY(12); + PRINT_NAMED_FUNC_KEY(13); + PRINT_NAMED_FUNC_KEY(14); + PRINT_NAMED_FUNC_KEY(15); + PRINT_NAMED_FUNC_KEY(16); + PRINT_NAMED_FUNC_KEY(17); + PRINT_NAMED_FUNC_KEY(18); + PRINT_NAMED_FUNC_KEY(19); + PRINT_NAMED_FUNC_KEY(20); + PRINT_NAMED_FUNC_KEY(21); + PRINT_NAMED_FUNC_KEY(22); + PRINT_NAMED_FUNC_KEY(23); + PRINT_NAMED_FUNC_KEY(24); + PRINT_NAMED_CONSTANT(KEY_DL); + PRINT_NAMED_CONSTANT(KEY_IL); + PRINT_NAMED_CONSTANT(KEY_DC); + PRINT_NAMED_CONSTANT(KEY_IC); + PRINT_NAMED_CONSTANT(KEY_EIC); + PRINT_NAMED_CONSTANT(KEY_CLEAR); + PRINT_NAMED_CONSTANT(KEY_EOS); + PRINT_NAMED_CONSTANT(KEY_EOL); + PRINT_NAMED_CONSTANT(KEY_SF); + PRINT_NAMED_CONSTANT(KEY_SR); + PRINT_NAMED_CONSTANT(KEY_NPAGE); + PRINT_NAMED_CONSTANT(KEY_PPAGE); + PRINT_NAMED_CONSTANT(KEY_STAB); + PRINT_NAMED_CONSTANT(KEY_CTAB); + PRINT_NAMED_CONSTANT(KEY_CATAB); + PRINT_NAMED_CONSTANT(KEY_ENTER); + PRINT_NAMED_CONSTANT(KEY_SRESET); + PRINT_NAMED_CONSTANT(KEY_RESET); + PRINT_NAMED_CONSTANT(KEY_PRINT); + PRINT_NAMED_CONSTANT(KEY_LL); + PRINT_NAMED_CONSTANT(KEY_A1); + PRINT_NAMED_CONSTANT(KEY_A3); + PRINT_NAMED_CONSTANT(KEY_B2); + PRINT_NAMED_CONSTANT(KEY_C1); + PRINT_NAMED_CONSTANT(KEY_C3); + PRINT_NAMED_CONSTANT(KEY_BTAB); + PRINT_NAMED_CONSTANT(KEY_BEG); + PRINT_NAMED_CONSTANT(KEY_CANCEL); + PRINT_NAMED_CONSTANT(KEY_CLOSE); + PRINT_NAMED_CONSTANT(KEY_COMMAND); + PRINT_NAMED_CONSTANT(KEY_COPY); + PRINT_NAMED_CONSTANT(KEY_CREATE); + PRINT_NAMED_CONSTANT(KEY_END); + PRINT_NAMED_CONSTANT(KEY_EXIT); + PRINT_NAMED_CONSTANT(KEY_FIND); + PRINT_NAMED_CONSTANT(KEY_HELP); + PRINT_NAMED_CONSTANT(KEY_MARK); + PRINT_NAMED_CONSTANT(KEY_MESSAGE); + PRINT_NAMED_CONSTANT(KEY_MOVE); + PRINT_NAMED_CONSTANT(KEY_NEXT); + PRINT_NAMED_CONSTANT(KEY_OPEN); + PRINT_NAMED_CONSTANT(KEY_OPTIONS); + PRINT_NAMED_CONSTANT(KEY_PREVIOUS); + PRINT_NAMED_CONSTANT(KEY_REDO); + PRINT_NAMED_CONSTANT(KEY_REFERENCE); + PRINT_NAMED_CONSTANT(KEY_REFRESH); + PRINT_NAMED_CONSTANT(KEY_REPLACE); + PRINT_NAMED_CONSTANT(KEY_RESTART); + PRINT_NAMED_CONSTANT(KEY_RESUME); + PRINT_NAMED_CONSTANT(KEY_SAVE); + PRINT_NAMED_CONSTANT(KEY_SBEG); + PRINT_NAMED_CONSTANT(KEY_SCANCEL); + PRINT_NAMED_CONSTANT(KEY_SCOMMAND); + PRINT_NAMED_CONSTANT(KEY_SCOPY); + PRINT_NAMED_CONSTANT(KEY_SCREATE); + PRINT_NAMED_CONSTANT(KEY_SDC); + PRINT_NAMED_CONSTANT(KEY_SDL); + PRINT_NAMED_CONSTANT(KEY_SELECT); + PRINT_NAMED_CONSTANT(KEY_SEND); + PRINT_NAMED_CONSTANT(KEY_SEOL); + PRINT_NAMED_CONSTANT(KEY_SEXIT); + PRINT_NAMED_CONSTANT(KEY_SFIND); + PRINT_NAMED_CONSTANT(KEY_SHELP); + PRINT_NAMED_CONSTANT(KEY_SHOME); + PRINT_NAMED_CONSTANT(KEY_SIC); + PRINT_NAMED_CONSTANT(KEY_SLEFT); + PRINT_NAMED_CONSTANT(KEY_SMESSAGE); + PRINT_NAMED_CONSTANT(KEY_SMOVE); + PRINT_NAMED_CONSTANT(KEY_SNEXT); + PRINT_NAMED_CONSTANT(KEY_SOPTIONS); + PRINT_NAMED_CONSTANT(KEY_SPREVIOUS); + PRINT_NAMED_CONSTANT(KEY_SPRINT); + PRINT_NAMED_CONSTANT(KEY_SREDO); + PRINT_NAMED_CONSTANT(KEY_SREPLACE); + PRINT_NAMED_CONSTANT(KEY_SRIGHT); + PRINT_NAMED_CONSTANT(KEY_SRSUME); + PRINT_NAMED_CONSTANT(KEY_SSAVE); + PRINT_NAMED_CONSTANT(KEY_SSUSPEND); + PRINT_NAMED_CONSTANT(KEY_SUNDO); + PRINT_NAMED_CONSTANT(KEY_SUSPEND); + PRINT_NAMED_CONSTANT(KEY_UNDO); + PRINT_NAMED_CONSTANT(KEY_MOUSE); + PRINT_NAMED_CONSTANT(KEY_RESIZE); + + print_comment(fp, "alternate character codes (ACS) from addch(3NCURSES)"); +#define PRINT_ACS(name) print_size_of (fp, #name, (size_t)(&name - &acs_map[0])) + PRINT_ACS(ACS_ULCORNER); + PRINT_ACS(ACS_LLCORNER); + PRINT_ACS(ACS_URCORNER); + PRINT_ACS(ACS_LRCORNER); + PRINT_ACS(ACS_LTEE); + PRINT_ACS(ACS_RTEE); + PRINT_ACS(ACS_BTEE); + PRINT_ACS(ACS_TTEE); + PRINT_ACS(ACS_HLINE); + PRINT_ACS(ACS_VLINE); + PRINT_ACS(ACS_PLUS); + PRINT_ACS(ACS_S1); + PRINT_ACS(ACS_S9); + PRINT_ACS(ACS_DIAMOND); + PRINT_ACS(ACS_CKBOARD); + PRINT_ACS(ACS_DEGREE); + PRINT_ACS(ACS_PLMINUS); + PRINT_ACS(ACS_BULLET); + PRINT_ACS(ACS_LARROW); + PRINT_ACS(ACS_RARROW); + PRINT_ACS(ACS_DARROW); + PRINT_ACS(ACS_UARROW); + PRINT_ACS(ACS_BOARD); + PRINT_ACS(ACS_LANTERN); + PRINT_ACS(ACS_BLOCK); + PRINT_ACS(ACS_S3); + PRINT_ACS(ACS_S7); + PRINT_ACS(ACS_LEQUAL); + PRINT_ACS(ACS_GEQUAL); + PRINT_ACS(ACS_PI); + PRINT_ACS(ACS_NEQUAL); + PRINT_ACS(ACS_STERLING); + + print_comment(fp, "Menu_Options from opts(3MENU)"); + PRINT_NAMED_BITMASK(Menu_Options, O_ONEVALUE); + PRINT_NAMED_BITMASK(Menu_Options, O_SHOWDESC); + PRINT_NAMED_BITMASK(Menu_Options, O_ROWMAJOR); + PRINT_NAMED_BITMASK(Menu_Options, O_IGNORECASE); + PRINT_NAMED_BITMASK(Menu_Options, O_SHOWMATCH); + PRINT_NAMED_BITMASK(Menu_Options, O_NONCYCLIC); + print_size_of(fp, "Menu_Options_Size", 8 * sizeof(Menu_Options)); + + print_comment(fp, "Item_Options from menu_opts(3MENU)"); + PRINT_NAMED_BITMASK(Item_Options, O_SELECTABLE); + print_size_of(fp, "Item_Options_Size", 8 * sizeof(Item_Options)); + + print_comment(fp, "Field_Options from field_opts(3FORM)"); + PRINT_NAMED_BITMASK(Field_Options, O_VISIBLE); + PRINT_NAMED_BITMASK(Field_Options, O_ACTIVE); + PRINT_NAMED_BITMASK(Field_Options, O_PUBLIC); + PRINT_NAMED_BITMASK(Field_Options, O_EDIT); + PRINT_NAMED_BITMASK(Field_Options, O_WRAP); + PRINT_NAMED_BITMASK(Field_Options, O_BLANK); + PRINT_NAMED_BITMASK(Field_Options, O_AUTOSKIP); + PRINT_NAMED_BITMASK(Field_Options, O_NULLOK); + PRINT_NAMED_BITMASK(Field_Options, O_PASSOK); + PRINT_NAMED_BITMASK(Field_Options, O_STATIC); + print_size_of(fp, "Field_Options_Size", 8 * sizeof(Field_Options)); + + print_comment(fp, "Field_Options from opts(3FORM)"); + PRINT_NAMED_BITMASK(Field_Options, O_NL_OVERLOAD); + PRINT_NAMED_BITMASK(Field_Options, O_BS_OVERLOAD); + /* Field_Options_Size is defined below */ + + print_comment(fp, "MEVENT structure from mouse(3NCURSES)"); + STRUCT_OFFSET(MEVENT, id); + STRUCT_OFFSET(MEVENT, x); + STRUCT_OFFSET(MEVENT, y); + STRUCT_OFFSET(MEVENT, z); + STRUCT_OFFSET(MEVENT, bstate); + print_size_of(fp, "MEVENT_Size", 8 * sizeof(MEVENT)); + + print_comment(fp, "mouse events from mouse(3NCURSES)"); + { + mmask_t all_events; + +#define PRINT_MOUSE_EVENT(event) \ + print_constant (fp, #event, event); \ + all_events |= event + + all_events = 0; + PRINT_MOUSE_EVENT(BUTTON1_RELEASED); + PRINT_MOUSE_EVENT(BUTTON1_PRESSED); + PRINT_MOUSE_EVENT(BUTTON1_CLICKED); + PRINT_MOUSE_EVENT(BUTTON1_DOUBLE_CLICKED); + PRINT_MOUSE_EVENT(BUTTON1_TRIPLE_CLICKED); +#ifdef BUTTON1_RESERVED_EVENT + PRINT_MOUSE_EVENT(BUTTON1_RESERVED_EVENT); +#endif + print_constant(fp, "all_events_button_1", (UINT) all_events); + + all_events = 0; + PRINT_MOUSE_EVENT(BUTTON2_RELEASED); + PRINT_MOUSE_EVENT(BUTTON2_PRESSED); + PRINT_MOUSE_EVENT(BUTTON2_CLICKED); + PRINT_MOUSE_EVENT(BUTTON2_DOUBLE_CLICKED); + PRINT_MOUSE_EVENT(BUTTON2_TRIPLE_CLICKED); +#ifdef BUTTON2_RESERVED_EVENT + PRINT_MOUSE_EVENT(BUTTON2_RESERVED_EVENT); +#endif + print_constant(fp, "all_events_button_2", (UINT) all_events); + + all_events = 0; + PRINT_MOUSE_EVENT(BUTTON3_RELEASED); + PRINT_MOUSE_EVENT(BUTTON3_PRESSED); + PRINT_MOUSE_EVENT(BUTTON3_CLICKED); + PRINT_MOUSE_EVENT(BUTTON3_DOUBLE_CLICKED); + PRINT_MOUSE_EVENT(BUTTON3_TRIPLE_CLICKED); +#ifdef BUTTON3_RESERVED_EVENT + PRINT_MOUSE_EVENT(BUTTON3_RESERVED_EVENT); +#endif + print_constant(fp, "all_events_button_3", (UINT) all_events); + + all_events = 0; + PRINT_MOUSE_EVENT(BUTTON4_RELEASED); + PRINT_MOUSE_EVENT(BUTTON4_PRESSED); + PRINT_MOUSE_EVENT(BUTTON4_CLICKED); + PRINT_MOUSE_EVENT(BUTTON4_DOUBLE_CLICKED); + PRINT_MOUSE_EVENT(BUTTON4_TRIPLE_CLICKED); +#ifdef BUTTON4_RESERVED_EVENT + PRINT_MOUSE_EVENT(BUTTON4_RESERVED_EVENT); +#endif + print_constant(fp, "all_events_button_4", (UINT) all_events); + } + PRINT_NAMED_CONSTANT(BUTTON_CTRL); + PRINT_NAMED_CONSTANT(BUTTON_SHIFT); + PRINT_NAMED_CONSTANT(BUTTON_ALT); + PRINT_NAMED_CONSTANT(REPORT_MOUSE_POSITION); + PRINT_NAMED_CONSTANT(ALL_MOUSE_EVENTS); + + print_comment(fp, "trace selection from trace(3NCURSES)"); + PRINT_NAMED_BITMASK(UINT, TRACE_TIMES); + PRINT_NAMED_BITMASK(UINT, TRACE_TPUTS); + PRINT_NAMED_BITMASK(UINT, TRACE_UPDATE); + PRINT_NAMED_BITMASK(UINT, TRACE_MOVE); + PRINT_NAMED_BITMASK(UINT, TRACE_CHARPUT); + PRINT_NAMED_BITMASK(UINT, TRACE_CALLS); + PRINT_NAMED_BITMASK(UINT, TRACE_VIRTPUT); + PRINT_NAMED_BITMASK(UINT, TRACE_IEVENT); + PRINT_NAMED_BITMASK(UINT, TRACE_BITS); + PRINT_NAMED_BITMASK(UINT, TRACE_ICALLS); + PRINT_NAMED_BITMASK(UINT, TRACE_CCALLS); + PRINT_NAMED_BITMASK(UINT, TRACE_DATABASE); + PRINT_NAMED_BITMASK(UINT, TRACE_ATTRS); + print_size_of(fp, "Trace_Size", 8 * sizeof(UINT)); + + fprintf(fp, "end Terminal_Interface.Curses_Constants;\n"); + exit(EXIT_SUCCESS); +} diff --git a/deps/ncurses-5.9/Ada95/gen/html.m4 b/deps/ncurses-6.3/Ada95/gen/html.m4 similarity index 92% rename from deps/ncurses-5.9/Ada95/gen/html.m4 rename to deps/ncurses-6.3/Ada95/gen/html.m4 index 8df2653..22374f6 100644 --- a/deps/ncurses-5.9/Ada95/gen/html.m4 +++ b/deps/ncurses-6.3/Ada95/gen/html.m4 @@ -1,5 +1,6 @@ dnl*************************************************************************** -dnl Copyright (c) 2000-2006,2007 Free Software Foundation, Inc. * +dnl Copyright 2019,2020 Thomas E. Dickey * +dnl Copyright 2000-2006,2007 Free Software Foundation, Inc. * dnl * dnl Permission is hereby granted, free of charge, to any person obtaining a * dnl copy of this software and associated documentation files (the * @@ -26,7 +27,7 @@ dnl sale, use or other dealings in this Software without prior written * dnl authorization. * dnl*************************************************************************** dnl -dnl $Id: html.m4,v 1.3 2007/09/01 23:59:59 tom Exp $ +dnl $Id: html.m4,v 1.5 2020/02/02 23:34:34 tom Exp $ define(`ANCHORIDX',`0')dnl define(`MANPAGE',`define(`MANPG',$1)dnl |===================================================================== @@ -35,6 +36,6 @@ define(`MANPAGE',`define(`MANPG',$1)dnl define(`ANCHOR',`define(`ANCHORIDX',incr(ANCHORIDX))dnl `#'1A NAME="AFU`_'ANCHORIDX"`#'2dnl define(`CFUNAME',`$1')define(`AFUNAME',`$2')dnl -|')dnl +|#1/A#2')dnl define(`AKA',``AKA': CFUNAME')dnl define(`ALIAS',``AKA': $1')dnl diff --git a/deps/ncurses-5.9/Ada95/gen/normal.m4 b/deps/ncurses-6.3/Ada95/gen/normal.m4 similarity index 92% rename from deps/ncurses-5.9/Ada95/gen/normal.m4 rename to deps/ncurses-6.3/Ada95/gen/normal.m4 index 9529976..5132702 100644 --- a/deps/ncurses-5.9/Ada95/gen/normal.m4 +++ b/deps/ncurses-6.3/Ada95/gen/normal.m4 @@ -1,5 +1,6 @@ dnl*************************************************************************** -dnl Copyright (c) 1998,2006 Free Software Foundation, Inc. * +dnl Copyright 2020 Thomas E. Dickey * +dnl Copyright 1998,2006 Free Software Foundation, Inc. * dnl * dnl Permission is hereby granted, free of charge, to any person obtaining a * dnl copy of this software and associated documentation files (the * @@ -26,7 +27,7 @@ dnl sale, use or other dealings in this Software without prior written * dnl authorization. * dnl*************************************************************************** dnl -dnl $Id: normal.m4,v 1.2 2006/04/22 23:16:14 tom Exp $ +dnl $Id: normal.m4,v 1.3 2020/02/02 23:34:34 tom Exp $ define(`MANPAGE',`define(`MANPG',$1)dnl |===================================================================== -- | Man page MANPG diff --git a/deps/ncurses-5.9/Ada95/gen/table.m4 b/deps/ncurses-6.3/Ada95/gen/table.m4 similarity index 92% rename from deps/ncurses-5.9/Ada95/gen/table.m4 rename to deps/ncurses-6.3/Ada95/gen/table.m4 index 36b0027..7de07d3 100644 --- a/deps/ncurses-5.9/Ada95/gen/table.m4 +++ b/deps/ncurses-6.3/Ada95/gen/table.m4 @@ -1,5 +1,6 @@ dnl*************************************************************************** -dnl Copyright (c) 2000,2006 Free Software Foundation, Inc. * +dnl Copyright 2020 Thomas E. Dickey * +dnl Copyright 2000,2006 Free Software Foundation, Inc. * dnl * dnl Permission is hereby granted, free of charge, to any person obtaining a * dnl copy of this software and associated documentation files (the * @@ -26,7 +27,7 @@ dnl sale, use or other dealings in this Software without prior written * dnl authorization. * dnl*************************************************************************** dnl -dnl $Id: table.m4,v 1.2 2006/04/22 23:16:44 tom Exp $ +dnl $Id: table.m4,v 1.3 2020/02/02 23:34:34 tom Exp $ define(`ANCHORIDX',`0')dnl define(`MANPAGE',`define(`MANPG',$1)')dnl divert(-1)dnl diff --git a/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-aux.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-aux.ads.m4 new file mode 100644 index 0000000..94eaad8 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-aux.ads.m4 @@ -0,0 +1,121 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-aux__ads.htm')dnl +include(M4MACRO)dnl +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Aux -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1998-2011,2014 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, 1996 +-- Version Control: +-- $Revision: 1.25 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with System; +with Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; + +package Terminal_Interface.Curses.Aux is + pragma Preelaborate (Terminal_Interface.Curses.Aux); + + subtype C_Int is Interfaces.C.int; + subtype C_Short is Interfaces.C.short; + subtype C_Long_Int is Interfaces.C.long; + subtype C_Size_T is Interfaces.C.size_t; + subtype C_UInt is Interfaces.C.unsigned; + subtype C_ULong is Interfaces.C.unsigned_long; + subtype C_Char_Ptr is Interfaces.C.Strings.chars_ptr; + type C_Void_Ptr is new System.Address; + + -- This is how those constants are defined in ncurses. I see them also + -- exactly like this in all ETI implementations I ever tested. So it + -- could be that this is quite general, but please check with your curses. + -- This is critical, because curses sometime mixes Boolean returns with + -- returning an error status. + Curses_Ok : constant C_Int := Curses_Constants.OK; + Curses_Err : constant C_Int := Curses_Constants.ERR; + + Curses_True : constant C_Int := Curses_Constants.TRUE; + Curses_False : constant C_Int := Curses_Constants.FALSE; + + -- Eti_Error: type for error codes returned by the menu and form subsystem + type Eti_Error is + (E_Current, + E_Invalid_Field, + E_Request_Denied, + E_Not_Connected, + E_Not_Selectable, + E_No_Match, + E_Unknown_Command, + E_Not_Posted, + E_No_Room, + E_Bad_State, + E_Connected, + E_Posted, + E_Bad_Argument, + E_System_Error, + E_Ok); + + procedure Eti_Exception (Code : Eti_Error); + -- Do nothing if Code = E_Ok. + -- Else dispatch the error code and raise the appropriate exception. + + procedure Fill_String (Cp : chars_ptr; + Str : out String); + -- Fill the Str parameter with the string denoted by the chars_ptr + -- C-Style string. + + function Fill_String (Cp : chars_ptr) return String; + -- Same but as function. + +private + for Eti_Error'Size use C_Int'Size; + pragma Convention (C, Eti_Error); + for Eti_Error use + (E_Current => Curses_Constants.E_CURRENT, + E_Invalid_Field => Curses_Constants.E_INVALID_FIELD, + E_Request_Denied => Curses_Constants.E_REQUEST_DENIED, + E_Not_Connected => Curses_Constants.E_NOT_CONNECTED, + E_Not_Selectable => Curses_Constants.E_NOT_SELECTABLE, + E_No_Match => Curses_Constants.E_NO_MATCH, + E_Unknown_Command => Curses_Constants.E_UNKNOWN_COMMAND, + E_Not_Posted => Curses_Constants.E_NOT_POSTED, + E_No_Room => Curses_Constants.E_NO_ROOM, + E_Bad_State => Curses_Constants.E_BAD_STATE, + E_Connected => Curses_Constants.E_CONNECTED, + E_Posted => Curses_Constants.E_POSTED, + E_Bad_Argument => Curses_Constants.E_BAD_ARGUMENT, + E_System_Error => Curses_Constants.E_SYSTEM_ERROR, + E_Ok => Curses_Constants.E_OK); +end Terminal_Interface.Curses.Aux; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 similarity index 97% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 index b8481d5..0f5db6c 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-field_types.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1998-2011,2014 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 -- @@ -38,14 +39,14 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.16 $ +-- $Revision: 1.21 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Interfaces.C; +with Terminal_Interface.Curses.Aux; package Terminal_Interface.Curses.Forms.Field_Types is pragma Preelaborate (Terminal_Interface.Curses.Forms.Field_Types); - use type Interfaces.C.int; subtype C_Int is Interfaces.C.int; -- MANPAGE(`form_fieldtype.3x') @@ -227,12 +228,12 @@ private Mak : Makearg_Function := Make_Arg'Access; Cop : Copyarg_Function := Copy_Arg'Access; Fre : Freearg_Function := Free_Arg'Access) - return C_Int; + return Aux.Eti_Error; pragma Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg"); function Set_Fieldtype_Choice (Cft : C_Field_Type; Next, Prev : Choice_Function) - return C_Int; + return Aux.Eti_Error; pragma Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice"); end Terminal_Interface.Curses.Forms.Field_Types; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 similarity index 95% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 index 9de700b..71334b6 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-field_user_data.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2009 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 -- @@ -38,7 +39,7 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.16 $ +-- $Revision: 1.17 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 similarity index 95% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 index f7fb1a7..4a98949 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms-form_user_data.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2009 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 -- @@ -38,7 +39,7 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.15 $ +-- $Revision: 1.16 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms.ads.m4 similarity index 91% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms.ads.m4 index a4329ba..1293d37 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-forms.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-forms.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2014 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 -- @@ -38,18 +39,17 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.30 $ --- $Date: 2009/12/26 17:31:35 $ +-- $Revision: 1.34 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -include(`Form_Base_Defs') with System; with Ada.Characters.Latin_1; package Terminal_Interface.Curses.Forms is pragma Preelaborate (Terminal_Interface.Curses.Forms); -include(`Form_Linker_Options')dnl -include(`Linker_Options') + pragma Linker_Options ("-lform" & Curses_Constants.DFT_ARG_SUFFIX); + Space : Character renames Ada.Characters.Latin_1.Space; type Field is private; @@ -63,18 +63,68 @@ include(`Linker_Options') Center, Right); + type Field_Option_Set is + record + Visible : Boolean; + Active : Boolean; + Public : Boolean; + Edit : Boolean; + Wrap : Boolean; + Blank : Boolean; + Auto_Skip : Boolean; + Null_Ok : Boolean; + Pass_Ok : Boolean; + Static : Boolean; + end record; + pragma Convention (C_Pass_By_Copy, Field_Option_Set); + + for Field_Option_Set use + record + Visible at 0 range Curses_Constants.O_VISIBLE_First + .. Curses_Constants.O_VISIBLE_Last; + Active at 0 range Curses_Constants.O_ACTIVE_First + .. Curses_Constants.O_ACTIVE_Last; + Public at 0 range Curses_Constants.O_PUBLIC_First + .. Curses_Constants.O_PUBLIC_Last; + Edit at 0 range Curses_Constants.O_EDIT_First + .. Curses_Constants.O_EDIT_Last; + Wrap at 0 range Curses_Constants.O_WRAP_First + .. Curses_Constants.O_WRAP_Last; + Blank at 0 range Curses_Constants.O_BLANK_First + .. Curses_Constants.O_BLANK_Last; + Auto_Skip at 0 range Curses_Constants.O_AUTOSKIP_First + .. Curses_Constants.O_AUTOSKIP_Last; + Null_Ok at 0 range Curses_Constants.O_NULLOK_First + .. Curses_Constants.O_NULLOK_Last; + Pass_Ok at 0 range Curses_Constants.O_PASSOK_First + .. Curses_Constants.O_PASSOK_Last; + Static at 0 range Curses_Constants.O_STATIC_First + .. Curses_Constants.O_STATIC_Last; + end record; pragma Warnings (Off); -include(`Field_Rep')Dnl - + for Field_Option_Set'Size use Curses_Constants.Field_Options_Size; pragma Warnings (On); function Default_Field_Options return Field_Option_Set; -- The initial defaults for the field options. pragma Inline (Default_Field_Options); + type Form_Option_Set is + record + NL_Overload : Boolean; + BS_Overload : Boolean; + end record; + pragma Convention (C_Pass_By_Copy, Form_Option_Set); + + for Form_Option_Set use + record + NL_Overload at 0 range Curses_Constants.O_NL_OVERLOAD_First + .. Curses_Constants.O_NL_OVERLOAD_Last; + BS_Overload at 0 range Curses_Constants.O_BS_OVERLOAD_First + .. Curses_Constants.O_BS_OVERLOAD_Last; + end record; pragma Warnings (Off); -include(`Form_Opt_Rep')Dnl - + for Form_Option_Set'Size use Curses_Constants.Field_Options_Size; pragma Warnings (On); function Default_Form_Options return Form_Option_Set; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 similarity index 95% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 index 4ffa41b..57dc963 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus-item_user_data.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2009 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 -- @@ -38,8 +39,8 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.17 $ --- $Date: 2009/12/26 17:31:35 $ +-- $Revision: 1.18 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 similarity index 95% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 index 9138ba6..af8ae12 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus-menu_user_data.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2009 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 -- @@ -38,7 +39,7 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.15 $ +-- $Revision: 1.16 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus.ads.m4 similarity index 91% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus.ads.m4 index 6274b6e..6914c16 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-menus.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-menus.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2014 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 -- @@ -38,18 +39,17 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.28 $ --- $Date: 2009/12/26 18:35:22 $ +-- $Revision: 1.32 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -include(`Menu_Base_Defs') with System; with Ada.Characters.Latin_1; package Terminal_Interface.Curses.Menus is pragma Preelaborate (Terminal_Interface.Curses.Menus); -include(`Menu_Linker_Options')dnl -include(`Linker_Options') + pragma Linker_Options ("-lmenu" & Curses_Constants.DFT_ARG_SUFFIX); + Space : Character renames Ada.Characters.Latin_1.Space; type Item is private; @@ -116,9 +116,34 @@ include(`Linker_Options') -- -- Menu options -- + type Menu_Option_Set is + record + One_Valued : Boolean; + Show_Descriptions : Boolean; + Row_Major_Order : Boolean; + Ignore_Case : Boolean; + Show_Matches : Boolean; + Non_Cyclic : Boolean; + end record; + pragma Convention (C_Pass_By_Copy, Menu_Option_Set); + + for Menu_Option_Set use + record + One_Valued at 0 range Curses_Constants.O_ONEVALUE_First + .. Curses_Constants.O_ONEVALUE_Last; + Show_Descriptions at 0 range Curses_Constants.O_SHOWDESC_First + .. Curses_Constants.O_SHOWDESC_Last; + Row_Major_Order at 0 range Curses_Constants.O_ROWMAJOR_First + .. Curses_Constants.O_ROWMAJOR_Last; + Ignore_Case at 0 range Curses_Constants.O_IGNORECASE_First + .. Curses_Constants.O_IGNORECASE_Last; + Show_Matches at 0 range Curses_Constants.O_SHOWMATCH_First + .. Curses_Constants.O_SHOWMATCH_Last; + Non_Cyclic at 0 range Curses_Constants.O_NONCYCLIC_First + .. Curses_Constants.O_NONCYCLIC_Last; + end record; pragma Warnings (Off); -include(`Menu_Opt_Rep')dnl - + for Menu_Option_Set'Size use Curses_Constants.Menu_Options_Size; pragma Warnings (On); function Default_Menu_Options return Menu_Option_Set; @@ -127,9 +152,19 @@ include(`Menu_Opt_Rep')dnl -- -- Item options -- + type Item_Option_Set is + record + Selectable : Boolean; + end record; + pragma Convention (C_Pass_By_Copy, Item_Option_Set); + + for Item_Option_Set use + record + Selectable at 0 range Curses_Constants.O_SELECTABLE_First + .. Curses_Constants.O_SELECTABLE_Last; + end record; pragma Warnings (Off); -include(`Item_Rep')dnl - + for Item_Option_Set'Size use Curses_Constants.Item_Options_Size; pragma Warnings (On); function Default_Item_Options return Item_Option_Set; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-mouse.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-mouse.ads.m4 similarity index 79% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-mouse.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-mouse.ads.m4 index a4fb661..6506b4e 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-mouse.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-mouse.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2014,2015 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 -- @@ -38,11 +39,10 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.29 $ --- $Date: 2011/03/19 12:35:58 $ +-- $Revision: 1.33 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -include(`Mouse_Base_Defs') with System; package Terminal_Interface.Curses.Mouse is @@ -155,7 +155,10 @@ package Terminal_Interface.Curses.Mouse is pragma Inline (Mouse_Interval); private - type Event_Mask is new Interfaces.C.unsigned_long; + -- This can be as little as 32 bits (unsigned), or as long as the system's + -- unsigned long. Declare it as the minimum size to handle all valid + -- sizes. + type Event_Mask is mod 4294967296; type Mouse_Event is record @@ -167,12 +170,35 @@ private end record; pragma Convention (C, Mouse_Event); -include(`Mouse_Event_Rep') - Generation_Bit_Order : constant System.Bit_Order := System.M4_BIT_ORDER; - -- This constant may be different on your system. - -include(`Mouse_Events') - No_Events : constant Event_Mask := 0; - All_Events : constant Event_Mask := ALL_MOUSE_EVENTS; + for Mouse_Event use + record + Id at 0 range Curses_Constants.MEVENT_id_First + .. Curses_Constants.MEVENT_id_Last; + X at 0 range Curses_Constants.MEVENT_x_First + .. Curses_Constants.MEVENT_x_Last; + Y at 0 range Curses_Constants.MEVENT_y_First + .. Curses_Constants.MEVENT_y_Last; + Z at 0 range Curses_Constants.MEVENT_z_First + .. Curses_Constants.MEVENT_z_Last; + Bstate at 0 range Curses_Constants.MEVENT_bstate_First + .. Curses_Constants.MEVENT_bstate_Last; + end record; + for Mouse_Event'Size use Curses_Constants.MEVENT_Size; + Generation_Bit_Order : System.Bit_Order renames Curses_Constants.Bit_Order; + + BUTTON_CTRL : constant Event_Mask := Curses_Constants.BUTTON_CTRL; + BUTTON_SHIFT : constant Event_Mask := Curses_Constants.BUTTON_SHIFT; + BUTTON_ALT : constant Event_Mask := Curses_Constants.BUTTON_ALT; + BUTTON1_EVENTS : constant Event_Mask + := Curses_Constants.all_events_button_1; + BUTTON2_EVENTS : constant Event_Mask + := Curses_Constants.all_events_button_2; + BUTTON3_EVENTS : constant Event_Mask + := Curses_Constants.all_events_button_3; + BUTTON4_EVENTS : constant Event_Mask + := Curses_Constants.all_events_button_4; + ALL_MOUSE_EVENTS : constant Event_Mask := Curses_Constants.ALL_MOUSE_EVENTS; + No_Events : constant Event_Mask := 0; + All_Events : constant Event_Mask := ALL_MOUSE_EVENTS; end Terminal_Interface.Curses.Mouse; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 similarity index 95% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 index 03d8114..4d60e52 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-panels-user_data.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2009 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 -- @@ -38,7 +39,7 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.15 $ +-- $Revision: 1.16 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-panels.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-panels.ads.m4 similarity index 95% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-panels.ads.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-panels.ads.m4 index dc06fa4..1175343 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses-panels.ads.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-panels.ads.m4 @@ -10,7 +10,8 @@ include(M4MACRO)dnl -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2014 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 -- @@ -38,16 +39,16 @@ include(M4MACRO)dnl ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.20 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.23 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with System; package Terminal_Interface.Curses.Panels is pragma Preelaborate (Terminal_Interface.Curses.Panels); -include(`Panel_Linker_Options')dnl -include(`Linker_Options') + pragma Linker_Options ("-lpanel" & Curses_Constants.DFT_ARG_SUFFIX); + type Panel is private; --------------------------- diff --git a/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-trace.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-trace.ads.m4 new file mode 100644 index 0000000..794d132 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses-trace.ads.m4 @@ -0,0 +1,125 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses-trace__ads.htm')dnl +include(M4MACRO)------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Trace -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000,2014 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: Eugene V. Melaragno 2000 +-- Version Control: +-- $Revision: 1.5 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ + +package Terminal_Interface.Curses.Trace is + pragma Preelaborate (Terminal_Interface.Curses.Trace); + + type Trace_Attribute_Set is + record + Times : Boolean; + Tputs : Boolean; + Update : Boolean; + Cursor_Move : Boolean; + Character_Output : Boolean; + Calls : Boolean; + Virtual_Puts : Boolean; + Input_Events : Boolean; + TTY_State : Boolean; + Internal_Calls : Boolean; + Character_Calls : Boolean; + Termcap_TermInfo : Boolean; + Attribute_Color : Boolean; + end record; + pragma Convention (C_Pass_By_Copy, Trace_Attribute_Set); + + for Trace_Attribute_Set use + record + Times at 0 range Curses_Constants.TRACE_TIMES_First + .. Curses_Constants.TRACE_TIMES_Last; + Tputs at 0 range Curses_Constants.TRACE_TPUTS_First + .. Curses_Constants.TRACE_TPUTS_Last; + Update at 0 range Curses_Constants.TRACE_UPDATE_First + .. Curses_Constants.TRACE_UPDATE_Last; + Cursor_Move at 0 range Curses_Constants.TRACE_MOVE_First + .. Curses_Constants.TRACE_MOVE_Last; + Character_Output at 0 range Curses_Constants.TRACE_CHARPUT_First + .. Curses_Constants.TRACE_CHARPUT_Last; + Calls at 0 range Curses_Constants.TRACE_CALLS_First + .. Curses_Constants.TRACE_CALLS_Last; + Virtual_Puts at 0 range Curses_Constants.TRACE_VIRTPUT_First + .. Curses_Constants.TRACE_VIRTPUT_Last; + Input_Events at 0 range Curses_Constants.TRACE_IEVENT_First + .. Curses_Constants.TRACE_IEVENT_Last; + TTY_State at 0 range Curses_Constants.TRACE_BITS_First + .. Curses_Constants.TRACE_BITS_Last; + Internal_Calls at 0 range Curses_Constants.TRACE_ICALLS_First + .. Curses_Constants.TRACE_ICALLS_Last; + Character_Calls at 0 range Curses_Constants.TRACE_CCALLS_First + .. Curses_Constants.TRACE_CCALLS_Last; + Termcap_TermInfo at 0 range Curses_Constants.TRACE_DATABASE_First + .. Curses_Constants.TRACE_DATABASE_Last; + Attribute_Color at 0 range Curses_Constants.TRACE_ATTRS_First + .. Curses_Constants.TRACE_ATTRS_Last; + end record; + pragma Warnings (Off); + for Trace_Attribute_Set'Size use Curses_Constants.Trace_Size; + pragma Warnings (On); + + Trace_Disable : constant Trace_Attribute_Set := (others => False); + + Trace_Ordinary : constant Trace_Attribute_Set := + (Times => True, + Tputs => True, + Update => True, + Cursor_Move => True, + Character_Output => True, + others => False); + Trace_Maximum : constant Trace_Attribute_Set := (others => True); + +------------------------------------------------------------------------------ + + -- MANPAGE(`curs_trace.3x') + + -- ANCHOR(`trace()',`Trace_on') + procedure Trace_On (x : Trace_Attribute_Set); + -- The debugging library has trace. + + -- ANCHOR(`_tracef()',`Trace_Put') + procedure Trace_Put (str : String); + -- AKA + + Current_Trace_Setting : Trace_Attribute_Set; + pragma Import (C, Current_Trace_Setting, "_nc_tracing"); + +end Terminal_Interface.Curses.Trace; diff --git a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses.adb.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses.adb.m4 similarity index 92% rename from deps/ncurses-5.9/Ada95/gen/terminal_interface-curses.adb.m4 rename to deps/ncurses-6.3/Ada95/gen/terminal_interface-curses.adb.m4 index 1f89a5a..3f34d20 100644 --- a/deps/ncurses-5.9/Ada95/gen/terminal_interface-curses.adb.m4 +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses.adb.m4 @@ -9,7 +9,8 @@ include(M4MACRO)---------------------------------------------------------------- -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 2007-2011,2014 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 -- @@ -37,8 +38,8 @@ include(M4MACRO)---------------------------------------------------------------- ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.8 $ --- $Date: 2011/03/22 23:02:14 $ +-- $Revision: 1.16 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with System; @@ -52,7 +53,6 @@ with Ada.Strings.Fixed; package body Terminal_Interface.Curses is use Aux; - use type System.Bit_Order; package ASF renames Ada.Strings.Fixed; @@ -151,10 +151,10 @@ package body Terminal_Interface.Curses is Ch : Attributed_Character) is function Waddch (W : Window; - Ch : C_Chtype) return C_Int; + Ch : Attributed_Character) return C_Int; pragma Import (C, Waddch, "waddch"); begin - if Waddch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + if Waddch (Win, Ch) = Curses_Err then raise Curses_Exception; end if; end Add; @@ -178,12 +178,13 @@ package body Terminal_Interface.Curses is function mvwaddch (W : Window; Y : C_Int; X : C_Int; - Ch : C_Chtype) return C_Int; + Ch : Attributed_Character) return C_Int; pragma Import (C, mvwaddch, "mvwaddch"); begin if mvwaddch (Win, C_Int (Line), C_Int (Column), - AttrChar_To_Chtype (Ch)) = Curses_Err then + Ch) = Curses_Err + then raise Curses_Exception; end if; end Add; @@ -208,10 +209,10 @@ package body Terminal_Interface.Curses is Ch : Attributed_Character) is function Wechochar (W : Window; - Ch : C_Chtype) return C_Int; + Ch : Attributed_Character) return C_Int; pragma Import (C, Wechochar, "wechochar"); begin - if Wechochar (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + if Wechochar (Win, Ch) = Curses_Err then raise Curses_Exception; end if; end Add_With_Immediate_Echo; @@ -419,7 +420,8 @@ package body Terminal_Interface.Curses is Txt (Str'Length) := Default_Character; if Waddchnstr (Win, Txt, - C_Int (Len)) = Curses_Err then + C_Int (Len)) = Curses_Err + then raise Curses_Exception; end if; end Add; @@ -448,26 +450,25 @@ package body Terminal_Interface.Curses is Lower_Right_Corner_Symbol : Attributed_Character := Default_Character) is function Wborder (W : Window; - LS : C_Chtype; - RS : C_Chtype; - TS : C_Chtype; - BS : C_Chtype; - ULC : C_Chtype; - URC : C_Chtype; - LLC : C_Chtype; - LRC : C_Chtype) return C_Int; + LS : Attributed_Character; + RS : Attributed_Character; + TS : Attributed_Character; + BS : Attributed_Character; + ULC : Attributed_Character; + URC : Attributed_Character; + LLC : Attributed_Character; + LRC : Attributed_Character) return C_Int; pragma Import (C, Wborder, "wborder"); begin if Wborder (Win, - AttrChar_To_Chtype (Left_Side_Symbol), - AttrChar_To_Chtype (Right_Side_Symbol), - AttrChar_To_Chtype (Top_Side_Symbol), - AttrChar_To_Chtype (Bottom_Side_Symbol), - AttrChar_To_Chtype (Upper_Left_Corner_Symbol), - AttrChar_To_Chtype (Upper_Right_Corner_Symbol), - AttrChar_To_Chtype (Lower_Left_Corner_Symbol), - AttrChar_To_Chtype (Lower_Right_Corner_Symbol) - ) = Curses_Err + Left_Side_Symbol, + Right_Side_Symbol, + Top_Side_Symbol, + Bottom_Side_Symbol, + Upper_Left_Corner_Symbol, + Upper_Right_Corner_Symbol, + Lower_Left_Corner_Symbol, + Lower_Right_Corner_Symbol) = Curses_Err then raise Curses_Exception; end if; @@ -490,13 +491,14 @@ package body Terminal_Interface.Curses is Line_Symbol : Attributed_Character := Default_Character) is function Whline (W : Window; - Ch : C_Chtype; + Ch : Attributed_Character; Len : C_Int) return C_Int; pragma Import (C, Whline, "whline"); begin if Whline (Win, - AttrChar_To_Chtype (Line_Symbol), - C_Int (Line_Size)) = Curses_Err then + Line_Symbol, + C_Int (Line_Size)) = Curses_Err + then raise Curses_Exception; end if; end Horizontal_Line; @@ -507,13 +509,14 @@ package body Terminal_Interface.Curses is Line_Symbol : Attributed_Character := Default_Character) is function Wvline (W : Window; - Ch : C_Chtype; + Ch : Attributed_Character; Len : C_Int) return C_Int; pragma Import (C, Wvline, "wvline"); begin if Wvline (Win, - AttrChar_To_Chtype (Line_Symbol), - C_Int (Line_Size)) = Curses_Err then + Line_Symbol, + C_Int (Line_Size)) = Curses_Err + then raise Curses_Exception; end if; end Vertical_Line; @@ -611,10 +614,10 @@ package body Terminal_Interface.Curses is On : Boolean := True) is function Wattron (Win : Window; - C_Attr : C_AttrType) return C_Int; + C_Attr : Attributed_Character) return C_Int; pragma Import (C, Wattron, "wattr_on"); function Wattroff (Win : Window; - C_Attr : C_AttrType) return C_Int; + C_Attr : Attributed_Character) return C_Int; pragma Import (C, Wattroff, "wattr_off"); -- In Ada we use the On Boolean to control whether or not we want to -- switch on or off the attributes in the set. @@ -624,9 +627,9 @@ package body Terminal_Interface.Curses is Attr => Attr); begin if On then - Err := Wattron (Win, AttrChar_To_AttrType (AC)); + Err := Wattron (Win, AC); else - Err := Wattroff (Win, AttrChar_To_AttrType (AC)); + Err := Wattroff (Win, AC); end if; if Err = Curses_Err then raise Curses_Exception; @@ -639,14 +642,13 @@ package body Terminal_Interface.Curses is Color : Color_Pair := Color_Pair'First) is function Wattrset (Win : Window; - C_Attr : C_AttrType) return C_Int; + C_Attr : Attributed_Character) return C_Int; pragma Import (C, Wattrset, "wattrset"); -- ??? wattr_set begin - if Wattrset (Win, - AttrChar_To_AttrType (Attributed_Character' - (Ch => Character'First, - Color => Color, - Attr => Attr))) = Curses_Err then + if Wattrset (Win, (Ch => Character'First, + Color => Color, + Attr => Attr)) = Curses_Err + then raise Curses_Exception; end if; end Set_Character_Attributes; @@ -655,20 +657,18 @@ package body Terminal_Interface.Curses is return Character_Attribute_Set is function Wattrget (Win : Window; - Atr : access C_AttrType; + Atr : access Attributed_Character; Col : access C_Short; Opt : System.Address) return C_Int; pragma Import (C, Wattrget, "wattr_get"); - Attr : aliased C_AttrType; + Attr : aliased Attributed_Character; Col : aliased C_Short; Res : constant C_Int := Wattrget (Win, Attr'Access, Col'Access, System.Null_Address); - Ch : Attributed_Character; begin if Res = Curses_Ok then - Ch := AttrType_To_AttrChar (Attr); - return Ch.Attr; + return Attr.Attr; else raise Curses_Exception; end if; @@ -678,20 +678,18 @@ package body Terminal_Interface.Curses is return Color_Pair is function Wattrget (Win : Window; - Atr : access C_AttrType; + Atr : access Attributed_Character; Col : access C_Short; Opt : System.Address) return C_Int; pragma Import (C, Wattrget, "wattr_get"); - Attr : aliased C_AttrType; + Attr : aliased Attributed_Character; Col : aliased C_Short; Res : constant C_Int := Wattrget (Win, Attr'Access, Col'Access, System.Null_Address); - Ch : Attributed_Character; begin if Res = Curses_Ok then - Ch := AttrType_To_AttrChar (Attr); - return Ch.Color; + return Attr.Color; else raise Curses_Exception; end if; @@ -707,7 +705,8 @@ package body Terminal_Interface.Curses is begin if Wset_Color (Win, C_Short (Pair), - C_Void_Ptr (System.Null_Address)) = Curses_Err then + C_Void_Ptr (System.Null_Address)) = Curses_Err + then raise Curses_Exception; end if; end Set_Color; @@ -720,17 +719,19 @@ package body Terminal_Interface.Curses is is function Wchgat (Win : Window; Cnt : C_Int; - Attr : C_AttrType; + Attr : Attributed_Character; Color : C_Short; Opts : System.Address := System.Null_Address) return C_Int; pragma Import (C, Wchgat, "wchgat"); - - Ch : constant Attributed_Character := - (Ch => Character'First, Color => Color_Pair'First, Attr => Attr); begin - if Wchgat (Win, C_Int (Count), AttrChar_To_AttrType (Ch), - C_Short (Color)) = Curses_Err then + if Wchgat (Win, + C_Int (Count), + (Ch => Character'First, + Color => Color_Pair'First, + Attr => Attr), + C_Short (Color)) = Curses_Err + then raise Curses_Exception; end if; end Change_Attributes; @@ -938,7 +939,8 @@ package body Terminal_Interface.Curses is pragma Import (C, Notimeout, "notimeout"); begin if Notimeout (Win, Curses_Bool (Boolean'Pos (Timer_Off))) - = Curses_Err then + = Curses_Err + then raise Curses_Exception; end if; end Set_Escape_Timer_Mode; @@ -1051,7 +1053,8 @@ package body Terminal_Interface.Curses is pragma Import (C, Wsetscrreg, "wsetscrreg"); begin if Wsetscrreg (Win, C_Int (Top_Line), C_Int (Bottom_Line)) - = Curses_Err then + = Curses_Err + then raise Curses_Exception; end if; end Set_Scroll_Region; @@ -1108,7 +1111,8 @@ package body Terminal_Interface.Curses is begin if Wredrawln (Win, C_Int (Begin_Line), - C_Int (Line_Count)) = Curses_Err then + C_Int (Line_Count)) = Curses_Err + then raise Curses_Exception; end if; end Redraw; @@ -1158,20 +1162,21 @@ package body Terminal_Interface.Curses is (Win : Window := Standard_Window; Ch : Attributed_Character) is - procedure WBackground (W : Window; Ch : C_Chtype); + procedure WBackground (W : Window; Ch : Attributed_Character); pragma Import (C, WBackground, "wbkgdset"); begin - WBackground (Win, AttrChar_To_Chtype (Ch)); + WBackground (Win, Ch); end Set_Background; procedure Change_Background (Win : Window := Standard_Window; Ch : Attributed_Character) is - function WChangeBkgd (W : Window; Ch : C_Chtype) return C_Int; + function WChangeBkgd (W : Window; Ch : Attributed_Character) + return C_Int; pragma Import (C, WChangeBkgd, "wbkgd"); begin - if WChangeBkgd (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + if WChangeBkgd (Win, Ch) = Curses_Err then raise Curses_Exception; end if; end Change_Background; @@ -1179,10 +1184,10 @@ package body Terminal_Interface.Curses is function Get_Background (Win : Window := Standard_Window) return Attributed_Character is - function Wgetbkgd (Win : Window) return C_Chtype; + function Wgetbkgd (Win : Window) return Attributed_Character; pragma Import (C, Wgetbkgd, "getbkgd"); begin - return Chtype_To_AttrChar (Wgetbkgd (Win)); + return Wgetbkgd (Win); end Get_Background; ------------------------------------------------------------------------------ procedure Change_Lines_Status (Win : Window := Standard_Window; @@ -1197,7 +1202,8 @@ package body Terminal_Interface.Curses is pragma Import (C, Wtouchln, "wtouchln"); begin if Wtouchln (Win, C_Int (Start), C_Int (Count), - C_Int (Boolean'Pos (State))) = Curses_Err then + C_Int (Boolean'Pos (State))) = Curses_Err + then raise Curses_Exception; end if; end Change_Lines_Status; @@ -1208,7 +1214,7 @@ package body Terminal_Interface.Curses is X : Column_Position; begin Get_Size (Win, Y, X); - pragma Unreferenced (X); + pragma Warnings (Off, X); -- unreferenced Change_Lines_Status (Win, 0, Positive (Y), True); end Touch; @@ -1218,7 +1224,7 @@ package body Terminal_Interface.Curses is X : Column_Position; begin Get_Size (Win, Y, X); - pragma Unreferenced (X); + pragma Warnings (Off, X); -- unreferenced Change_Lines_Status (Win, 0, Positive (Y), False); end Untouch; @@ -1288,7 +1294,8 @@ package body Terminal_Interface.Curses is C_Int (Destination_Bottom_Row), C_Int (Destination_Right_Column), Boolean'Pos (Non_Destructive_Mode) - ) = Curses_Err then + ) = Curses_Err + then raise Curses_Exception; end if; end Copy; @@ -1491,7 +1498,8 @@ package body Terminal_Interface.Curses is C_Int (Destination_Top_Row), C_Int (Destination_Left_Column), C_Int (Destination_Bottom_Row), - C_Int (Destination_Right_Column)) = Curses_Err then + C_Int (Destination_Right_Column)) = Curses_Err + then raise Curses_Exception; end if; end Refresh; @@ -1521,7 +1529,8 @@ package body Terminal_Interface.Curses is C_Int (Destination_Top_Row), C_Int (Destination_Left_Column), C_Int (Destination_Bottom_Row), - C_Int (Destination_Right_Column)) = Curses_Err then + C_Int (Destination_Right_Column)) = Curses_Err + then raise Curses_Exception; end if; end Refresh_Without_Update; @@ -1530,11 +1539,11 @@ package body Terminal_Interface.Curses is (Pad : Window; Ch : Attributed_Character) is - function Pechochar (Pad : Window; Ch : C_Chtype) + function Pechochar (Pad : Window; Ch : Attributed_Character) return C_Int; pragma Import (C, Pechochar, "pechochar"); begin - if Pechochar (Pad, AttrChar_To_Chtype (Ch)) = Curses_Err then + if Pechochar (Pad, Ch) = Curses_Err then raise Curses_Exception; end if; end Add_Character_To_Pad_And_Echo_It; @@ -1592,10 +1601,10 @@ package body Terminal_Interface.Curses is function Peek (Win : Window := Standard_Window) return Attributed_Character is - function Winch (Win : Window) return C_Chtype; + function Winch (Win : Window) return Attributed_Character; pragma Import (C, Winch, "winch"); begin - return Chtype_To_AttrChar (Winch (Win)); + return Winch (Win); end Peek; function Peek @@ -1605,19 +1614,19 @@ package body Terminal_Interface.Curses is is function Mvwinch (Win : Window; Lin : C_Int; - Col : C_Int) return C_Chtype; + Col : C_Int) return Attributed_Character; pragma Import (C, Mvwinch, "mvwinch"); begin - return Chtype_To_AttrChar (Mvwinch (Win, C_Int (Line), C_Int (Column))); + return Mvwinch (Win, C_Int (Line), C_Int (Column)); end Peek; ------------------------------------------------------------------------------ procedure Insert (Win : Window := Standard_Window; Ch : Attributed_Character) is - function Winsch (Win : Window; Ch : C_Chtype) return C_Int; + function Winsch (Win : Window; Ch : Attributed_Character) return C_Int; pragma Import (C, Winsch, "winsch"); begin - if Winsch (Win, AttrChar_To_Chtype (Ch)) = Curses_Err then + if Winsch (Win, Ch) = Curses_Err then raise Curses_Exception; end if; end Insert; @@ -1631,13 +1640,14 @@ package body Terminal_Interface.Curses is function Mvwinsch (Win : Window; Lin : C_Int; Col : C_Int; - Ch : C_Chtype) return C_Int; + Ch : Attributed_Character) return C_Int; pragma Import (C, Mvwinsch, "mvwinsch"); begin if Mvwinsch (Win, C_Int (Line), C_Int (Column), - AttrChar_To_Chtype (Ch)) = Curses_Err then + Ch) = Curses_Err + then raise Curses_Exception; end if; end Insert; @@ -1679,7 +1689,8 @@ package body Terminal_Interface.Curses is begin To_C (Str, Txt, Length); if Mvwinsnstr (Win, C_Int (Line), C_Int (Column), Txt, C_Int (Len)) - = Curses_Err then + = Curses_Err + then raise Curses_Exception; end if; end Insert; @@ -1840,7 +1851,8 @@ package body Terminal_Interface.Curses is begin To_C (Text, Txt, Len); if Slk_Set (C_Int (Label), Txt, - C_Int (Label_Justification'Pos (Fmt))) = Curses_Err then + C_Int (Label_Justification'Pos (Fmt))) = Curses_Err + then raise Curses_Exception; end if; end Set_Soft_Label_Key; @@ -1916,9 +1928,9 @@ package body Terminal_Interface.Curses is (Attr : Character_Attribute_Set; On : Boolean := True) is - function Slk_Attron (Ch : C_Chtype) return C_Int; + function Slk_Attron (Ch : Attributed_Character) return C_Int; pragma Import (C, Slk_Attron, "slk_attron"); - function Slk_Attroff (Ch : C_Chtype) return C_Int; + function Slk_Attroff (Ch : Attributed_Character) return C_Int; pragma Import (C, Slk_Attroff, "slk_attroff"); Err : C_Int; @@ -1927,9 +1939,9 @@ package body Terminal_Interface.Curses is Color => Color_Pair'First); begin if On then - Err := Slk_Attron (AttrChar_To_Chtype (Ch)); + Err := Slk_Attron (Ch); else - Err := Slk_Attroff (AttrChar_To_Chtype (Ch)); + Err := Slk_Attroff (Ch); end if; if Err = Curses_Err then raise Curses_Exception; @@ -1940,36 +1952,36 @@ package body Terminal_Interface.Curses is (Attr : Character_Attribute_Set := Normal_Video; Color : Color_Pair := Color_Pair'First) is - function Slk_Attrset (Ch : C_Chtype) return C_Int; + function Slk_Attrset (Ch : Attributed_Character) return C_Int; pragma Import (C, Slk_Attrset, "slk_attrset"); Ch : constant Attributed_Character := (Ch => Character'First, Attr => Attr, Color => Color); begin - if Slk_Attrset (AttrChar_To_Chtype (Ch)) = Curses_Err then + if Slk_Attrset (Ch) = Curses_Err then raise Curses_Exception; end if; end Set_Soft_Label_Key_Attributes; function Get_Soft_Label_Key_Attributes return Character_Attribute_Set is - function Slk_Attr return C_Chtype; + function Slk_Attr return Attributed_Character; pragma Import (C, Slk_Attr, "slk_attr"); - Attr : constant C_Chtype := Slk_Attr; + Attr : constant Attributed_Character := Slk_Attr; begin - return Chtype_To_AttrChar (Attr).Attr; + return Attr.Attr; end Get_Soft_Label_Key_Attributes; function Get_Soft_Label_Key_Attributes return Color_Pair is - function Slk_Attr return C_Chtype; + function Slk_Attr return Attributed_Character; pragma Import (C, Slk_Attr, "slk_attr"); - Attr : constant C_Chtype := Slk_Attr; + Attr : constant Attributed_Character := Slk_Attr; begin - return Chtype_To_AttrChar (Attr).Color; + return Attr.Color; end Get_Soft_Label_Key_Attributes; procedure Set_Soft_Label_Key_Color (Pair : Color_Pair) @@ -1991,7 +2003,8 @@ package body Terminal_Interface.Curses is pragma Import (C, Keyok, "keyok"); begin if Keyok (C_Int (Key), Curses_Bool (Boolean'Pos (Enable))) - = Curses_Err then + = Curses_Err + then raise Curses_Exception; end if; end Enable_Key; @@ -2015,18 +2028,18 @@ package body Terminal_Interface.Curses is procedure Un_Control (Ch : Attributed_Character; Str : out String) is - function Unctrl (Ch : C_Chtype) return chars_ptr; + function Unctrl (Ch : Attributed_Character) return chars_ptr; pragma Import (C, Unctrl, "unctrl"); begin - Fill_String (Unctrl (AttrChar_To_Chtype (Ch)), Str); + Fill_String (Unctrl (Ch), Str); end Un_Control; function Un_Control (Ch : Attributed_Character) return String is - function Unctrl (Ch : C_Chtype) return chars_ptr; + function Unctrl (Ch : Attributed_Character) return chars_ptr; pragma Import (C, Unctrl, "unctrl"); begin - return Fill_String (Unctrl (AttrChar_To_Chtype (Ch))); + return Fill_String (Unctrl (Ch)); end Un_Control; procedure Delay_Output (Msecs : Natural) @@ -2099,10 +2112,10 @@ package body Terminal_Interface.Curses is function Supported_Attributes return Character_Attribute_Set is - function Termattrs return C_Chtype; + function Termattrs return Attributed_Character; pragma Import (C, Termattrs, "termattrs"); - Ch : constant Attributed_Character := Chtype_To_AttrChar (Termattrs); + Ch : constant Attributed_Character := Termattrs; begin return Ch.Attr; end Supported_Attributes; @@ -2152,11 +2165,13 @@ package body Terminal_Interface.Curses is raise Constraint_Error; end if; if Integer (Fore) >= Number_Of_Colors or else - Integer (Back) >= Number_Of_Colors then + Integer (Back) >= Number_Of_Colors + then raise Constraint_Error; end if; if Initpair (C_Short (Pair), C_Short (Fore), C_Short (Back)) - = Curses_Err then + = Curses_Err + then raise Curses_Exception; end if; end Init_Pair; @@ -2205,7 +2220,8 @@ package body Terminal_Interface.Curses is pragma Import (C, Initcolor, "init_color"); begin if Initcolor (C_Short (Color), C_Short (Red), C_Short (Green), - C_Short (Blue)) = Curses_Err then + C_Short (Blue)) = Curses_Err + then raise Curses_Exception; end if; end Init_Color; @@ -2236,7 +2252,8 @@ package body Terminal_Interface.Curses is R, G, B : aliased C_Short; begin if Colorcontent (C_Short (Color), R'Access, G'Access, B'Access) = - Curses_Err then + Curses_Err + then raise Curses_Exception; else Red := RGB_Value (R); @@ -2337,7 +2354,46 @@ package body Terminal_Interface.Curses is end if; end Nap_Milli_Seconds; ------------------------------------------------------------------------------ -include(`Public_Variables') + function Lines return Line_Count + is + function LINES_As_Function return Interfaces.C.int; + pragma Import (C, LINES_As_Function, "LINES_as_function"); + begin + return Line_Count (LINES_As_Function); + end Lines; + + function Columns return Column_Count + is + function COLS_As_Function return Interfaces.C.int; + pragma Import (C, COLS_As_Function, "COLS_as_function"); + begin + return Column_Count (COLS_As_Function); + end Columns; + + function Tab_Size return Natural + is + function TABSIZE_As_Function return Interfaces.C.int; + pragma Import (C, TABSIZE_As_Function, "TABSIZE_as_function"); + + begin + return Natural (TABSIZE_As_Function); + end Tab_Size; + + function Number_Of_Colors return Natural + is + function COLORS_As_Function return Interfaces.C.int; + pragma Import (C, COLORS_As_Function, "COLORS_as_function"); + begin + return Natural (COLORS_As_Function); + end Number_Of_Colors; + + function Number_Of_Color_Pairs return Natural + is + function COLOR_PAIRS_As_Function return Interfaces.C.int; + pragma Import (C, COLOR_PAIRS_As_Function, "COLOR_PAIRS_as_function"); + begin + return Natural (COLOR_PAIRS_As_Function); + end Number_Of_Color_Pairs; ------------------------------------------------------------------------------ procedure Transform_Coordinates (W : Window := Standard_Window; @@ -2493,7 +2549,8 @@ include(`Public_Variables') begin if wresize (Win, C_Int (Number_Of_Lines), - C_Int (Number_Of_Columns)) = Curses_Err then + C_Int (Number_Of_Columns)) = Curses_Err + then raise Curses_Exception; end if; end Resize; diff --git a/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses.ads.m4 b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses.ads.m4 new file mode 100644 index 0000000..a5e9103 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/gen/terminal_interface-curses.ads.m4 @@ -0,0 +1,2015 @@ +-- -*- ada -*- +define(`HTMLNAME',`terminal_interface-curses__ads.htm')dnl +include(M4MACRO)------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses -- +-- -- +-- S P E C -- +-- -- +------------------------------------------------------------------------------ +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2011,2014 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, 1996 +-- Version Control: +-- $Revision: 1.48 $ +-- $Date: 2020/02/02 23:34:34 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with System.Storage_Elements; +with Interfaces.C; -- We need this for some assertions. + +with Terminal_Interface.Curses_Constants; + +package Terminal_Interface.Curses is + pragma Preelaborate (Terminal_Interface.Curses); + pragma Linker_Options ("-lncurses" & Curses_Constants.DFT_ARG_SUFFIX); + + Major_Version : constant := Curses_Constants.NCURSES_VERSION_MAJOR; + Minor_Version : constant := Curses_Constants.NCURSES_VERSION_MINOR; + NC_Version : String renames Curses_Constants.Version; + + type Window is private; + Null_Window : constant Window; + + type Line_Position is new Integer; -- line coordinate + type Column_Position is new Integer; -- column coordinate + + subtype Line_Count is Line_Position range 1 .. Line_Position'Last; + -- Type to count lines. We do not allow null windows, so must be positive + subtype Column_Count is Column_Position range 1 .. Column_Position'Last; + -- Type to count columns. We do not allow null windows, so must be positive + + type Key_Code is new Integer; + -- That is anything including real characters, special keys and logical + -- request codes. + + -- FIXME: The "-1" should be Curses_Err + subtype Real_Key_Code is Key_Code range -1 .. Curses_Constants.KEY_MAX; + -- This are the codes that potentially represent a real keystroke. + -- Not all codes may be possible on a specific terminal. To check the + -- availability of a special key, the Has_Key function is provided. + + subtype Special_Key_Code is Real_Key_Code + range Curses_Constants. KEY_MIN - 1 .. Real_Key_Code'Last; + -- Type for a function- or special key number + + subtype Normal_Key_Code is Real_Key_Code range + Character'Pos (Character'First) .. Character'Pos (Character'Last); + -- This are the codes for regular (incl. non-graphical) characters. + + -- For those who like to use the original key names we produce them were + -- they differ from the original. + + -- Constants for function- and special keys + Key_None : constant Special_Key_Code + := Curses_Constants.KEY_MIN - 1; + Key_Min : constant Special_Key_Code + := Curses_Constants.KEY_MIN; + Key_Break : constant Special_Key_Code + := Curses_Constants.KEY_BREAK; + KEY_DOWN : constant Special_Key_Code + := Curses_Constants.KEY_DOWN; + Key_Cursor_Down : Special_Key_Code renames KEY_DOWN; + KEY_UP : constant Special_Key_Code + := Curses_Constants.KEY_UP; + Key_Cursor_Up : Special_Key_Code renames KEY_UP; + KEY_LEFT : constant Special_Key_Code + := Curses_Constants.KEY_LEFT; + Key_Cursor_Left : Special_Key_Code renames KEY_LEFT; + KEY_RIGHT : constant Special_Key_Code + := Curses_Constants.KEY_RIGHT; + Key_Cursor_Right : Special_Key_Code renames KEY_RIGHT; + Key_Home : constant Special_Key_Code + := Curses_Constants.KEY_HOME; + Key_Backspace : constant Special_Key_Code + := Curses_Constants.KEY_BACKSPACE; + Key_F0 : constant Special_Key_Code + := Curses_Constants.KEY_F0; + Key_F1 : constant Special_Key_Code + := Curses_Constants.KEY_F1; + Key_F2 : constant Special_Key_Code + := Curses_Constants.KEY_F2; + Key_F3 : constant Special_Key_Code + := Curses_Constants.KEY_F3; + Key_F4 : constant Special_Key_Code + := Curses_Constants.KEY_F4; + Key_F5 : constant Special_Key_Code + := Curses_Constants.KEY_F5; + Key_F6 : constant Special_Key_Code + := Curses_Constants.KEY_F6; + Key_F7 : constant Special_Key_Code + := Curses_Constants.KEY_F7; + Key_F8 : constant Special_Key_Code + := Curses_Constants.KEY_F8; + Key_F9 : constant Special_Key_Code + := Curses_Constants.KEY_F9; + Key_F10 : constant Special_Key_Code + := Curses_Constants.KEY_F10; + Key_F11 : constant Special_Key_Code + := Curses_Constants.KEY_F11; + Key_F12 : constant Special_Key_Code + := Curses_Constants.KEY_F12; + Key_F13 : constant Special_Key_Code + := Curses_Constants.KEY_F13; + Key_F14 : constant Special_Key_Code + := Curses_Constants.KEY_F14; + Key_F15 : constant Special_Key_Code + := Curses_Constants.KEY_F15; + Key_F16 : constant Special_Key_Code + := Curses_Constants.KEY_F16; + Key_F17 : constant Special_Key_Code + := Curses_Constants.KEY_F17; + Key_F18 : constant Special_Key_Code + := Curses_Constants.KEY_F18; + Key_F19 : constant Special_Key_Code + := Curses_Constants.KEY_F19; + Key_F20 : constant Special_Key_Code + := Curses_Constants.KEY_F20; + Key_F21 : constant Special_Key_Code + := Curses_Constants.KEY_F21; + Key_F22 : constant Special_Key_Code + := Curses_Constants.KEY_F22; + Key_F23 : constant Special_Key_Code + := Curses_Constants.KEY_F23; + Key_F24 : constant Special_Key_Code + := Curses_Constants.KEY_F24; + KEY_DL : constant Special_Key_Code + := Curses_Constants.KEY_DL; + Key_Delete_Line : Special_Key_Code renames KEY_DL; + KEY_IL : constant Special_Key_Code + := Curses_Constants.KEY_IL; + Key_Insert_Line : Special_Key_Code renames KEY_IL; + KEY_DC : constant Special_Key_Code + := Curses_Constants.KEY_DC; + Key_Delete_Char : Special_Key_Code renames KEY_DC; + KEY_IC : constant Special_Key_Code + := Curses_Constants.KEY_IC; + Key_Insert_Char : Special_Key_Code renames KEY_IC; + KEY_EIC : constant Special_Key_Code + := Curses_Constants.KEY_EIC; + Key_Exit_Insert_Mode : Special_Key_Code renames KEY_EIC; + KEY_CLEAR : constant Special_Key_Code + := Curses_Constants.KEY_CLEAR; + Key_Clear_Screen : Special_Key_Code renames KEY_CLEAR; + KEY_EOS : constant Special_Key_Code + := Curses_Constants.KEY_EOS; + Key_Clear_End_Of_Screen : Special_Key_Code renames KEY_EOS; + KEY_EOL : constant Special_Key_Code + := Curses_Constants.KEY_EOL; + Key_Clear_End_Of_Line : Special_Key_Code renames KEY_EOL; + KEY_SF : constant Special_Key_Code + := Curses_Constants.KEY_SF; + Key_Scroll_1_Forward : Special_Key_Code renames KEY_SF; + KEY_SR : constant Special_Key_Code + := Curses_Constants.KEY_SR; + Key_Scroll_1_Backward : Special_Key_Code renames KEY_SR; + KEY_NPAGE : constant Special_Key_Code + := Curses_Constants.KEY_NPAGE; + Key_Next_Page : Special_Key_Code renames KEY_NPAGE; + KEY_PPAGE : constant Special_Key_Code + := Curses_Constants.KEY_PPAGE; + Key_Previous_Page : Special_Key_Code renames KEY_PPAGE; + KEY_STAB : constant Special_Key_Code + := Curses_Constants.KEY_STAB; + Key_Set_Tab : Special_Key_Code renames KEY_STAB; + KEY_CTAB : constant Special_Key_Code + := Curses_Constants.KEY_CTAB; + Key_Clear_Tab : Special_Key_Code renames KEY_CTAB; + KEY_CATAB : constant Special_Key_Code + := Curses_Constants.KEY_CATAB; + Key_Clear_All_Tabs : Special_Key_Code renames KEY_CATAB; + KEY_ENTER : constant Special_Key_Code + := Curses_Constants.KEY_ENTER; + Key_Enter_Or_Send : Special_Key_Code renames KEY_ENTER; + KEY_SRESET : constant Special_Key_Code + := Curses_Constants.KEY_SRESET; + Key_Soft_Reset : Special_Key_Code renames KEY_SRESET; + Key_Reset : constant Special_Key_Code + := Curses_Constants.KEY_RESET; + Key_Print : constant Special_Key_Code + := Curses_Constants.KEY_PRINT; + KEY_LL : constant Special_Key_Code + := Curses_Constants.KEY_LL; + Key_Bottom : Special_Key_Code renames KEY_LL; + KEY_A1 : constant Special_Key_Code + := Curses_Constants.KEY_A1; + Key_Upper_Left_Of_Keypad : Special_Key_Code renames KEY_A1; + KEY_A3 : constant Special_Key_Code + := Curses_Constants.KEY_A3; + Key_Upper_Right_Of_Keypad : Special_Key_Code renames KEY_A3; + KEY_B2 : constant Special_Key_Code + := Curses_Constants.KEY_B2; + Key_Center_Of_Keypad : Special_Key_Code renames KEY_B2; + KEY_C1 : constant Special_Key_Code + := Curses_Constants.KEY_C1; + Key_Lower_Left_Of_Keypad : Special_Key_Code renames KEY_C1; + KEY_C3 : constant Special_Key_Code + := Curses_Constants.KEY_C3; + Key_Lower_Right_Of_Keypad : Special_Key_Code renames KEY_C3; + KEY_BTAB : constant Special_Key_Code + := Curses_Constants.KEY_BTAB; + Key_Back_Tab : Special_Key_Code renames KEY_BTAB; + KEY_BEG : constant Special_Key_Code + := Curses_Constants.KEY_BEG; + Key_Beginning : Special_Key_Code renames KEY_BEG; + Key_Cancel : constant Special_Key_Code + := Curses_Constants.KEY_CANCEL; + Key_Close : constant Special_Key_Code + := Curses_Constants.KEY_CLOSE; + Key_Command : constant Special_Key_Code + := Curses_Constants.KEY_COMMAND; + Key_Copy : constant Special_Key_Code + := Curses_Constants.KEY_COPY; + Key_Create : constant Special_Key_Code + := Curses_Constants.KEY_CREATE; + Key_End : constant Special_Key_Code + := Curses_Constants.KEY_END; + Key_Exit : constant Special_Key_Code + := Curses_Constants.KEY_EXIT; + Key_Find : constant Special_Key_Code + := Curses_Constants.KEY_FIND; + Key_Help : constant Special_Key_Code + := Curses_Constants.KEY_HELP; + Key_Mark : constant Special_Key_Code + := Curses_Constants.KEY_MARK; + Key_Message : constant Special_Key_Code + := Curses_Constants.KEY_MESSAGE; + Key_Move : constant Special_Key_Code + := Curses_Constants.KEY_MOVE; + Key_Next : constant Special_Key_Code + := Curses_Constants.KEY_NEXT; + Key_Open : constant Special_Key_Code + := Curses_Constants.KEY_OPEN; + Key_Options : constant Special_Key_Code + := Curses_Constants.KEY_OPTIONS; + Key_Previous : constant Special_Key_Code + := Curses_Constants.KEY_PREVIOUS; + Key_Redo : constant Special_Key_Code + := Curses_Constants.KEY_REDO; + Key_Reference : constant Special_Key_Code + := Curses_Constants.KEY_REFERENCE; + Key_Refresh : constant Special_Key_Code + := Curses_Constants.KEY_REFRESH; + Key_Replace : constant Special_Key_Code + := Curses_Constants.KEY_REPLACE; + Key_Restart : constant Special_Key_Code + := Curses_Constants.KEY_RESTART; + Key_Resume : constant Special_Key_Code + := Curses_Constants.KEY_RESUME; + Key_Save : constant Special_Key_Code + := Curses_Constants.KEY_SAVE; + KEY_SBEG : constant Special_Key_Code + := Curses_Constants.KEY_SBEG; + Key_Shift_Begin : Special_Key_Code renames KEY_SBEG; + KEY_SCANCEL : constant Special_Key_Code + := Curses_Constants.KEY_SCANCEL; + Key_Shift_Cancel : Special_Key_Code renames KEY_SCANCEL; + KEY_SCOMMAND : constant Special_Key_Code + := Curses_Constants.KEY_SCOMMAND; + Key_Shift_Command : Special_Key_Code renames KEY_SCOMMAND; + KEY_SCOPY : constant Special_Key_Code + := Curses_Constants.KEY_SCOPY; + Key_Shift_Copy : Special_Key_Code renames KEY_SCOPY; + KEY_SCREATE : constant Special_Key_Code + := Curses_Constants.KEY_SCREATE; + Key_Shift_Create : Special_Key_Code renames KEY_SCREATE; + KEY_SDC : constant Special_Key_Code + := Curses_Constants.KEY_SDC; + Key_Shift_Delete_Char : Special_Key_Code renames KEY_SDC; + KEY_SDL : constant Special_Key_Code + := Curses_Constants.KEY_SDL; + Key_Shift_Delete_Line : Special_Key_Code renames KEY_SDL; + Key_Select : constant Special_Key_Code + := Curses_Constants.KEY_SELECT; + KEY_SEND : constant Special_Key_Code + := Curses_Constants.KEY_SEND; + Key_Shift_End : Special_Key_Code renames KEY_SEND; + KEY_SEOL : constant Special_Key_Code + := Curses_Constants.KEY_SEOL; + Key_Shift_Clear_End_Of_Line : Special_Key_Code renames KEY_SEOL; + KEY_SEXIT : constant Special_Key_Code + := Curses_Constants.KEY_SEXIT; + Key_Shift_Exit : Special_Key_Code renames KEY_SEXIT; + KEY_SFIND : constant Special_Key_Code + := Curses_Constants.KEY_SFIND; + Key_Shift_Find : Special_Key_Code renames KEY_SFIND; + KEY_SHELP : constant Special_Key_Code + := Curses_Constants.KEY_SHELP; + Key_Shift_Help : Special_Key_Code renames KEY_SHELP; + KEY_SHOME : constant Special_Key_Code + := Curses_Constants.KEY_SHOME; + Key_Shift_Home : Special_Key_Code renames KEY_SHOME; + KEY_SIC : constant Special_Key_Code + := Curses_Constants.KEY_SIC; + Key_Shift_Insert_Char : Special_Key_Code renames KEY_SIC; + KEY_SLEFT : constant Special_Key_Code + := Curses_Constants.KEY_SLEFT; + Key_Shift_Cursor_Left : Special_Key_Code renames KEY_SLEFT; + KEY_SMESSAGE : constant Special_Key_Code + := Curses_Constants.KEY_SMESSAGE; + Key_Shift_Message : Special_Key_Code renames KEY_SMESSAGE; + KEY_SMOVE : constant Special_Key_Code + := Curses_Constants.KEY_SMOVE; + Key_Shift_Move : Special_Key_Code renames KEY_SMOVE; + KEY_SNEXT : constant Special_Key_Code + := Curses_Constants.KEY_SNEXT; + Key_Shift_Next_Page : Special_Key_Code renames KEY_SNEXT; + KEY_SOPTIONS : constant Special_Key_Code + := Curses_Constants.KEY_SOPTIONS; + Key_Shift_Options : Special_Key_Code renames KEY_SOPTIONS; + KEY_SPREVIOUS : constant Special_Key_Code + := Curses_Constants.KEY_SPREVIOUS; + Key_Shift_Previous_Page : Special_Key_Code renames KEY_SPREVIOUS; + KEY_SPRINT : constant Special_Key_Code + := Curses_Constants.KEY_SPRINT; + Key_Shift_Print : Special_Key_Code renames KEY_SPRINT; + KEY_SREDO : constant Special_Key_Code + := Curses_Constants.KEY_SREDO; + Key_Shift_Redo : Special_Key_Code renames KEY_SREDO; + KEY_SREPLACE : constant Special_Key_Code + := Curses_Constants.KEY_SREPLACE; + Key_Shift_Replace : Special_Key_Code renames KEY_SREPLACE; + KEY_SRIGHT : constant Special_Key_Code + := Curses_Constants.KEY_SRIGHT; + Key_Shift_Cursor_Right : Special_Key_Code renames KEY_SRIGHT; + KEY_SRSUME : constant Special_Key_Code + := Curses_Constants.KEY_SRSUME; + Key_Shift_Resume : Special_Key_Code renames KEY_SRSUME; + KEY_SSAVE : constant Special_Key_Code + := Curses_Constants.KEY_SSAVE; + Key_Shift_Save : Special_Key_Code renames KEY_SSAVE; + KEY_SSUSPEND : constant Special_Key_Code + := Curses_Constants.KEY_SSUSPEND; + Key_Shift_Suspend : Special_Key_Code renames KEY_SSUSPEND; + KEY_SUNDO : constant Special_Key_Code + := Curses_Constants.KEY_SUNDO; + Key_Shift_Undo : Special_Key_Code renames KEY_SUNDO; + Key_Suspend : constant Special_Key_Code + := Curses_Constants.KEY_SUSPEND; + Key_Undo : constant Special_Key_Code + := Curses_Constants.KEY_UNDO; + Key_Mouse : constant Special_Key_Code + := Curses_Constants.KEY_MOUSE; + Key_Resize : constant Special_Key_Code + := Curses_Constants.KEY_RESIZE; + Key_Max : constant Special_Key_Code + := Special_Key_Code'Last; + + subtype User_Key_Code is Key_Code + range (Key_Max + 129) .. Key_Code'Last; + -- This is reserved for user defined key codes. The range between Key_Max + -- and the first user code is reserved for subsystems like menu and forms. + + -------------------------------------------------------------------------- + + type Color_Number is range -1 .. Integer (Interfaces.C.short'Last); + for Color_Number'Size use Interfaces.C.short'Size; + -- (n)curses uses a short for the color index + -- The model is, that a Color_Number is an index into an array of + -- (potentially) definable colors. Some of those indices are + -- predefined (see below), although they may not really exist. + + Black : constant Color_Number := Curses_Constants.COLOR_BLACK; + Red : constant Color_Number := Curses_Constants.COLOR_RED; + Green : constant Color_Number := Curses_Constants.COLOR_GREEN; + Yellow : constant Color_Number := Curses_Constants.COLOR_YELLOW; + Blue : constant Color_Number := Curses_Constants.COLOR_BLUE; + Magenta : constant Color_Number := Curses_Constants.COLOR_MAGENTA; + Cyan : constant Color_Number := Curses_Constants.COLOR_CYAN; + White : constant Color_Number := Curses_Constants.COLOR_WHITE; + + type RGB_Value is range 0 .. Integer (Interfaces.C.short'Last); + for RGB_Value'Size use Interfaces.C.short'Size; + -- Some system may allow to redefine a color by setting RGB values. + + type Color_Pair is range 0 .. 255; + for Color_Pair'Size use 8; + subtype Redefinable_Color_Pair is Color_Pair range 1 .. 255; + -- (n)curses reserves 1 Byte for the color-pair number. Color Pair 0 + -- is fixed (Black & White). A color pair is simply a combination of + -- two colors described by Color_Numbers, one for the foreground and + -- the other for the background + + type Character_Attribute_Set is + record + Stand_Out : Boolean; + Under_Line : Boolean; + Reverse_Video : Boolean; + Blink : Boolean; + Dim_Character : Boolean; + Bold_Character : Boolean; + Protected_Character : Boolean; + Invisible_Character : Boolean; + Alternate_Character_Set : Boolean; + Horizontal : Boolean; + Left : Boolean; + Low : Boolean; + Right : Boolean; + Top : Boolean; + Vertical : Boolean; + end record; + + for Character_Attribute_Set use + record + Stand_Out at 0 range + Curses_Constants.A_STANDOUT_First - Curses_Constants.Attr_First + .. Curses_Constants.A_STANDOUT_Last - Curses_Constants.Attr_First; + Under_Line at 0 range + Curses_Constants.A_UNDERLINE_First - Curses_Constants.Attr_First + .. Curses_Constants.A_UNDERLINE_Last - Curses_Constants.Attr_First; + Reverse_Video at 0 range + Curses_Constants.A_REVERSE_First - Curses_Constants.Attr_First + .. Curses_Constants.A_REVERSE_Last - Curses_Constants.Attr_First; + Blink at 0 range + Curses_Constants.A_BLINK_First - Curses_Constants.Attr_First + .. Curses_Constants.A_BLINK_Last - Curses_Constants.Attr_First; + Dim_Character at 0 range + Curses_Constants.A_DIM_First - Curses_Constants.Attr_First + .. Curses_Constants.A_DIM_Last - Curses_Constants.Attr_First; + Bold_Character at 0 range + Curses_Constants.A_BOLD_First - Curses_Constants.Attr_First + .. Curses_Constants.A_BOLD_Last - Curses_Constants.Attr_First; + Protected_Character at 0 range + Curses_Constants.A_PROTECT_First - Curses_Constants.Attr_First + .. Curses_Constants.A_PROTECT_Last - Curses_Constants.Attr_First; + Invisible_Character at 0 range + Curses_Constants.A_INVIS_First - Curses_Constants.Attr_First + .. Curses_Constants.A_INVIS_Last - Curses_Constants.Attr_First; + Alternate_Character_Set at 0 range + Curses_Constants.A_ALTCHARSET_First - Curses_Constants.Attr_First + .. Curses_Constants.A_ALTCHARSET_Last - Curses_Constants.Attr_First; + Horizontal at 0 range + Curses_Constants.A_HORIZONTAL_First - Curses_Constants.Attr_First + .. Curses_Constants.A_HORIZONTAL_Last - Curses_Constants.Attr_First; + Left at 0 range + Curses_Constants.A_LEFT_First - Curses_Constants.Attr_First + .. Curses_Constants.A_LEFT_Last - Curses_Constants.Attr_First; + Low at 0 range + Curses_Constants.A_LOW_First - Curses_Constants.Attr_First + .. Curses_Constants.A_LOW_Last - Curses_Constants.Attr_First; + Right at 0 range + Curses_Constants.A_RIGHT_First - Curses_Constants.Attr_First + .. Curses_Constants.A_RIGHT_Last - Curses_Constants.Attr_First; + Top at 0 range + Curses_Constants.A_TOP_First - Curses_Constants.Attr_First + .. Curses_Constants.A_TOP_Last - Curses_Constants.Attr_First; + Vertical at 0 range + Curses_Constants.A_VERTICAL_First - Curses_Constants.Attr_First + .. Curses_Constants.A_VERTICAL_Last - Curses_Constants.Attr_First; + end record; + + Normal_Video : constant Character_Attribute_Set := (others => False); + + type Attributed_Character is + record + Attr : Character_Attribute_Set; + Color : Color_Pair; + Ch : Character; + end record; + pragma Convention (C_Pass_By_Copy, Attributed_Character); + -- This is the counterpart for the chtype in C. + + for Attributed_Character use + record + Ch at 0 range Curses_Constants.A_CHARTEXT_First + .. Curses_Constants.A_CHARTEXT_Last; + Color at 0 range Curses_Constants.A_COLOR_First + .. Curses_Constants.A_COLOR_Last; + pragma Warnings (Off); + Attr at 0 range Curses_Constants.Attr_First + .. Curses_Constants.Attr_Last; + pragma Warnings (On); + end record; + for Attributed_Character'Size use Curses_Constants.chtype_Size; + + Default_Character : constant Attributed_Character + := (Ch => Character'First, + Color => Color_Pair'First, + Attr => (others => False)); -- preelaboratable Normal_Video + + type Attributed_String is array (Positive range <>) of Attributed_Character; + pragma Convention (C, Attributed_String); + -- In this binding we allow strings of attributed characters. + + ------------------ + -- Exceptions -- + ------------------ + Curses_Exception : exception; + Wrong_Curses_Version : exception; + + -- Those exceptions are raised by the ETI (Extended Terminal Interface) + -- subpackets for Menu and Forms handling. + -- + Eti_System_Error : exception; + Eti_Bad_Argument : exception; + Eti_Posted : exception; + Eti_Connected : exception; + Eti_Bad_State : exception; + Eti_No_Room : exception; + Eti_Not_Posted : exception; + Eti_Unknown_Command : exception; + Eti_No_Match : exception; + Eti_Not_Selectable : exception; + Eti_Not_Connected : exception; + Eti_Request_Denied : exception; + Eti_Invalid_Field : exception; + Eti_Current : exception; + + -------------------------------------------------------------------------- + -- External C variables + -- Conceptually even in C this are kind of constants, but they are + -- initialized and sometimes changed by the library routines at runtime + -- depending on the type of terminal. I believe the best way to model + -- this is to use functions. + -------------------------------------------------------------------------- + + function Lines return Line_Count; + pragma Inline (Lines); + + function Columns return Column_Count; + pragma Inline (Columns); + + function Tab_Size return Natural; + pragma Inline (Tab_Size); + + function Number_Of_Colors return Natural; + pragma Inline (Number_Of_Colors); + + function Number_Of_Color_Pairs return Natural; + pragma Inline (Number_Of_Color_Pairs); + + subtype ACS_Index is Character range + Character'Val (0) .. Character'Val (127); + function ACS_Map (Index : ACS_Index) return Attributed_Character; + pragma Import (C, ACS_Map, "acs_map_as_function"); + + -- Constants for several characters from the Alternate Character Set + -- You must use these constants as indices into the ACS_Map function + -- to get the corresponding attributed character at runtime + ACS_Upper_Left_Corner : constant ACS_Index + := Character'Val (Curses_Constants.ACS_ULCORNER); + ACS_Lower_Left_Corner : constant ACS_Index + := Character'Val (Curses_Constants.ACS_LLCORNER); + ACS_Upper_Right_Corner : constant ACS_Index + := Character'Val (Curses_Constants.ACS_URCORNER); + ACS_Lower_Right_Corner : constant ACS_Index + := Character'Val (Curses_Constants.ACS_LRCORNER); + ACS_Left_Tee : constant ACS_Index + := Character'Val (Curses_Constants.ACS_LTEE); + ACS_Right_Tee : constant ACS_Index + := Character'Val (Curses_Constants.ACS_RTEE); + ACS_Bottom_Tee : constant ACS_Index + := Character'Val (Curses_Constants.ACS_BTEE); + ACS_Top_Tee : constant ACS_Index + := Character'Val (Curses_Constants.ACS_TTEE); + ACS_Horizontal_Line : constant ACS_Index + := Character'Val (Curses_Constants.ACS_HLINE); + ACS_Vertical_Line : constant ACS_Index + := Character'Val (Curses_Constants.ACS_VLINE); + ACS_Plus_Symbol : constant ACS_Index + := Character'Val (Curses_Constants.ACS_PLUS); + ACS_Scan_Line_1 : constant ACS_Index + := Character'Val (Curses_Constants.ACS_S1); + ACS_Scan_Line_9 : constant ACS_Index + := Character'Val (Curses_Constants.ACS_S9); + ACS_Diamond : constant ACS_Index + := Character'Val (Curses_Constants.ACS_DIAMOND); + ACS_Checker_Board : constant ACS_Index + := Character'Val (Curses_Constants.ACS_CKBOARD); + ACS_Degree : constant ACS_Index + := Character'Val (Curses_Constants.ACS_DEGREE); + ACS_Plus_Minus : constant ACS_Index + := Character'Val (Curses_Constants.ACS_PLMINUS); + ACS_Bullet : constant ACS_Index + := Character'Val (Curses_Constants.ACS_BULLET); + ACS_Left_Arrow : constant ACS_Index + := Character'Val (Curses_Constants.ACS_LARROW); + ACS_Right_Arrow : constant ACS_Index + := Character'Val (Curses_Constants.ACS_RARROW); + ACS_Down_Arrow : constant ACS_Index + := Character'Val (Curses_Constants.ACS_DARROW); + ACS_Up_Arrow : constant ACS_Index + := Character'Val (Curses_Constants.ACS_UARROW); + ACS_Board_Of_Squares : constant ACS_Index + := Character'Val (Curses_Constants.ACS_BOARD); + ACS_Lantern : constant ACS_Index + := Character'Val (Curses_Constants.ACS_LANTERN); + ACS_Solid_Block : constant ACS_Index + := Character'Val (Curses_Constants.ACS_BLOCK); + ACS_Scan_Line_3 : constant ACS_Index + := Character'Val (Curses_Constants.ACS_S3); + ACS_Scan_Line_7 : constant ACS_Index + := Character'Val (Curses_Constants.ACS_S7); + ACS_Less_Or_Equal : constant ACS_Index + := Character'Val (Curses_Constants.ACS_LEQUAL); + ACS_Greater_Or_Equal : constant ACS_Index + := Character'Val (Curses_Constants.ACS_GEQUAL); + ACS_PI : constant ACS_Index + := Character'Val (Curses_Constants.ACS_PI); + ACS_Not_Equal : constant ACS_Index + := Character'Val (Curses_Constants.ACS_NEQUAL); + ACS_Sterling : constant ACS_Index + := Character'Val (Curses_Constants.ACS_STERLING); + + -- MANPAGE(`curs_initscr.3x') + -- | Not implemented: newterm, set_term, delscreen + + -- ANCHOR(`stdscr',`Standard_Window') + function Standard_Window return Window; + -- AKA + pragma Import (C, Standard_Window, "stdscr_as_function"); + pragma Inline (Standard_Window); + + -- ANCHOR(`curscr',`Current_Window') + function Current_Window return Window; + -- AKA + pragma Import (C, Current_Window, "curscr_as_function"); + pragma Inline (Current_Window); + + -- ANCHOR(`initscr()',`Init_Screen') + procedure Init_Screen; + + -- ANCHOR(`initscr()',`Init_Windows') + procedure Init_Windows renames Init_Screen; + -- AKA + pragma Inline (Init_Screen); + -- pragma Inline (Init_Windows); + + -- ANCHOR(`endwin()',`End_Windows') + procedure End_Windows; + -- AKA + procedure End_Screen renames End_Windows; + pragma Inline (End_Windows); + -- pragma Inline (End_Screen); + + -- ANCHOR(`isendwin()',`Is_End_Window') + function Is_End_Window return Boolean; + -- AKA + pragma Inline (Is_End_Window); + + -- MANPAGE(`curs_move.3x') + + -- ANCHOR(`wmove()',`Move_Cursor') + procedure Move_Cursor (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position); + -- AKA + -- ALIAS(`move()') + pragma Inline (Move_Cursor); + + -- MANPAGE(`curs_addch.3x') + + -- ANCHOR(`waddch()',`Add') + procedure Add (Win : Window := Standard_Window; + Ch : Attributed_Character); + -- AKA + -- ALIAS(`addch()') + + procedure Add (Win : Window := Standard_Window; + Ch : Character); + -- Add a single character at the current logical cursor position to + -- the window. Use the current windows attributes. + + -- ANCHOR(`mvwaddch()',`Add') + procedure Add + (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Ch : Attributed_Character); + -- AKA + -- ALIAS(`mvaddch()') + + procedure Add + (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Ch : Character); + -- Move to the position and add a single character into the window + -- There are more Add routines, so the Inline pragma follows later + + -- ANCHOR(`wechochar()',`Add_With_Immediate_Echo') + procedure Add_With_Immediate_Echo + (Win : Window := Standard_Window; + Ch : Attributed_Character); + -- AKA + -- ALIAS(`echochar()') + + procedure Add_With_Immediate_Echo + (Win : Window := Standard_Window; + Ch : Character); + -- Add a character and do an immediate refresh of the screen. + pragma Inline (Add_With_Immediate_Echo); + + -- MANPAGE(`curs_window.3x') + -- Not Implemented: wcursyncup + + -- ANCHOR(`newwin()',`Create') + function Create + (Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- Not Implemented: Default Number_Of_Lines, Number_Of_Columns + -- the C version lets them be 0, see the man page. + -- AKA + pragma Inline (Create); + + function New_Window + (Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window + renames Create; + -- pragma Inline (New_Window); + + -- ANCHOR(`delwin()',`Delete') + procedure Delete (Win : in out Window); + -- AKA + -- Reset Win to Null_Window + pragma Inline (Delete); + + -- ANCHOR(`subwin()',`Sub_Window') + function Sub_Window + (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- AKA + pragma Inline (Sub_Window); + + -- ANCHOR(`derwin()',`Derived_Window') + function Derived_Window + (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- AKA + pragma Inline (Derived_Window); + + -- ANCHOR(`dupwin()',`Duplicate') + function Duplicate (Win : Window) return Window; + -- AKA + pragma Inline (Duplicate); + + -- ANCHOR(`mvwin()',`Move_Window') + procedure Move_Window (Win : Window; + Line : Line_Position; + Column : Column_Position); + -- AKA + pragma Inline (Move_Window); + + -- ANCHOR(`mvderwin()',`Move_Derived_Window') + procedure Move_Derived_Window (Win : Window; + Line : Line_Position; + Column : Column_Position); + -- AKA + pragma Inline (Move_Derived_Window); + + -- ANCHOR(`wsyncup()',`Synchronize_Upwards') + procedure Synchronize_Upwards (Win : Window); + -- AKA + pragma Import (C, Synchronize_Upwards, "wsyncup"); + + -- ANCHOR(`wsyncdown()',`Synchronize_Downwards') + procedure Synchronize_Downwards (Win : Window); + -- AKA + pragma Import (C, Synchronize_Downwards, "wsyncdown"); + + -- ANCHOR(`syncok()',`Set_Synch_Mode') + procedure Set_Synch_Mode (Win : Window := Standard_Window; + Mode : Boolean := False); + -- AKA + pragma Inline (Set_Synch_Mode); + + -- MANPAGE(`curs_addstr.3x') + + -- ANCHOR(`waddnstr()',`Add') + procedure Add (Win : Window := Standard_Window; + Str : String; + Len : Integer := -1); + -- AKA + -- ALIAS(`waddstr()') + -- ALIAS(`addnstr()') + -- ALIAS(`addstr()') + + -- ANCHOR(`mvwaddnstr()',`Add') + procedure Add (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Str : String; + Len : Integer := -1); + -- AKA + -- ALIAS(`mvwaddstr()') + -- ALIAS(`mvaddnstr()') + -- ALIAS(`mvaddstr()') + + -- MANPAGE(`curs_addchstr.3x') + + -- ANCHOR(`waddchnstr()',`Add') + procedure Add (Win : Window := Standard_Window; + Str : Attributed_String; + Len : Integer := -1); + -- AKA + -- ALIAS(`waddchstr()') + -- ALIAS(`addchnstr()') + -- ALIAS(`addchstr()') + + -- ANCHOR(`mvwaddchnstr()',`Add') + procedure Add (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Str : Attributed_String; + Len : Integer := -1); + -- AKA + -- ALIAS(`mvwaddchstr()') + -- ALIAS(`mvaddchnstr()') + -- ALIAS(`mvaddchstr()') + pragma Inline (Add); + + -- MANPAGE(`curs_border.3x') + -- | Not implemented: mvhline, mvwhline, mvvline, mvwvline + -- | use Move_Cursor then Horizontal_Line or Vertical_Line + + -- ANCHOR(`wborder()',`Border') + procedure Border + (Win : Window := Standard_Window; + Left_Side_Symbol : Attributed_Character := Default_Character; + Right_Side_Symbol : Attributed_Character := Default_Character; + Top_Side_Symbol : Attributed_Character := Default_Character; + Bottom_Side_Symbol : Attributed_Character := Default_Character; + Upper_Left_Corner_Symbol : Attributed_Character := Default_Character; + Upper_Right_Corner_Symbol : Attributed_Character := Default_Character; + Lower_Left_Corner_Symbol : Attributed_Character := Default_Character; + Lower_Right_Corner_Symbol : Attributed_Character := Default_Character + ); + -- AKA + -- ALIAS(`border()') + pragma Inline (Border); + + -- ANCHOR(`box()',`Box') + procedure Box + (Win : Window := Standard_Window; + Vertical_Symbol : Attributed_Character := Default_Character; + Horizontal_Symbol : Attributed_Character := Default_Character); + -- AKA + pragma Inline (Box); + + -- ANCHOR(`whline()',`Horizontal_Line') + procedure Horizontal_Line + (Win : Window := Standard_Window; + Line_Size : Natural; + Line_Symbol : Attributed_Character := Default_Character); + -- AKA + -- ALIAS(`hline()') + pragma Inline (Horizontal_Line); + + -- ANCHOR(`wvline()',`Vertical_Line') + procedure Vertical_Line + (Win : Window := Standard_Window; + Line_Size : Natural; + Line_Symbol : Attributed_Character := Default_Character); + -- AKA + -- ALIAS(`vline()') + pragma Inline (Vertical_Line); + + -- MANPAGE(`curs_getch.3x') + -- Not implemented: mvgetch, mvwgetch + + -- ANCHOR(`wgetch()',`Get_Keystroke') + function Get_Keystroke (Win : Window := Standard_Window) + return Real_Key_Code; + -- AKA + -- ALIAS(`getch()') + -- Get a character from the keyboard and echo it - if enabled - to the + -- window. + -- If for any reason (i.e. a timeout) we could not get a character the + -- returned keycode is Key_None. + pragma Inline (Get_Keystroke); + + -- ANCHOR(`ungetch()',`Undo_Keystroke') + procedure Undo_Keystroke (Key : Real_Key_Code); + -- AKA + pragma Inline (Undo_Keystroke); + + -- ANCHOR(`has_key()',`Has_Key') + function Has_Key (Key : Special_Key_Code) return Boolean; + -- AKA + pragma Inline (Has_Key); + + -- | + -- | Some helper functions + -- | + function Is_Function_Key (Key : Special_Key_Code) return Boolean; + -- Return True if the Key is a function key (i.e. one of F0 .. F63) + pragma Inline (Is_Function_Key); + + subtype Function_Key_Number is Integer range 0 .. 63; + -- (n)curses allows for 64 function keys. + + function Function_Key (Key : Real_Key_Code) return Function_Key_Number; + -- Return the number of the function key. If the code is not a + -- function key, a CONSTRAINT_ERROR will be raised. + pragma Inline (Function_Key); + + function Function_Key_Code (Key : Function_Key_Number) return Real_Key_Code; + -- Return the key code for a given function-key number. + pragma Inline (Function_Key_Code); + + -- MANPAGE(`curs_attr.3x') + -- | Not implemented attr_off, wattr_off, + -- | attr_on, wattr_on, attr_set, wattr_set + + -- PAIR_NUMBER + -- PAIR_NUMBER(c) is the same as c.Color + + -- ANCHOR(`standout()',`Standout') + procedure Standout (Win : Window := Standard_Window; + On : Boolean := True); + -- ALIAS(`wstandout()') + -- ALIAS(`wstandend()') + + -- ANCHOR(`wattron()',`Switch_Character_Attribute') + procedure Switch_Character_Attribute + (Win : Window := Standard_Window; + Attr : Character_Attribute_Set := Normal_Video; + On : Boolean := True); -- if False we switch Off. + -- Switches those Attributes set to true in the list. + -- AKA + -- ALIAS(`wattroff()') + -- ALIAS(`attron()') + -- ALIAS(`attroff()') + + -- ANCHOR(`wattrset()',`Set_Character_Attributes') + procedure Set_Character_Attributes + (Win : Window := Standard_Window; + Attr : Character_Attribute_Set := Normal_Video; + Color : Color_Pair := Color_Pair'First); + -- AKA + -- ALIAS(`attrset()') + pragma Inline (Set_Character_Attributes); + + -- ANCHOR(`wattr_get()',`Get_Character_Attributes') + function Get_Character_Attribute + (Win : Window := Standard_Window) return Character_Attribute_Set; + -- AKA + -- ALIAS(`attr_get()') + + -- ANCHOR(`wattr_get()',`Get_Character_Attribute') + function Get_Character_Attribute + (Win : Window := Standard_Window) return Color_Pair; + -- AKA + pragma Inline (Get_Character_Attribute); + + -- ANCHOR(`wcolor_set()',`Set_Color') + procedure Set_Color (Win : Window := Standard_Window; + Pair : Color_Pair); + -- AKA + -- ALIAS(`color_set()') + pragma Inline (Set_Color); + + -- ANCHOR(`wchgat()',`Change_Attributes') + procedure Change_Attributes + (Win : Window := Standard_Window; + Count : Integer := -1; + Attr : Character_Attribute_Set := Normal_Video; + Color : Color_Pair := Color_Pair'First); + -- AKA + -- ALIAS(`chgat()') + + -- ANCHOR(`mvwchgat()',`Change_Attributes') + procedure Change_Attributes + (Win : Window := Standard_Window; + Line : Line_Position := Line_Position'First; + Column : Column_Position := Column_Position'First; + Count : Integer := -1; + Attr : Character_Attribute_Set := Normal_Video; + Color : Color_Pair := Color_Pair'First); + -- AKA + -- ALIAS(`mvchgat()') + pragma Inline (Change_Attributes); + + -- MANPAGE(`curs_beep.3x') + + -- ANCHOR(`beep()',`Beep') + procedure Beep; + -- AKA + pragma Inline (Beep); + + -- ANCHOR(`flash()',`Flash_Screen') + procedure Flash_Screen; + -- AKA + pragma Inline (Flash_Screen); + + -- MANPAGE(`curs_inopts.3x') + + -- | Not implemented : typeahead + -- + -- ANCHOR(`cbreak()',`Set_Cbreak_Mode') + procedure Set_Cbreak_Mode (SwitchOn : Boolean := True); + -- AKA + -- ALIAS(`nocbreak()') + pragma Inline (Set_Cbreak_Mode); + + -- ANCHOR(`raw()',`Set_Raw_Mode') + procedure Set_Raw_Mode (SwitchOn : Boolean := True); + -- AKA + -- ALIAS(`noraw()') + pragma Inline (Set_Raw_Mode); + + -- ANCHOR(`echo()',`Set_Echo_Mode') + procedure Set_Echo_Mode (SwitchOn : Boolean := True); + -- AKA + -- ALIAS(`noecho()') + pragma Inline (Set_Echo_Mode); + + -- ANCHOR(`meta()',`Set_Meta_Mode') + procedure Set_Meta_Mode (Win : Window := Standard_Window; + SwitchOn : Boolean := True); + -- AKA + pragma Inline (Set_Meta_Mode); + + -- ANCHOR(`keypad()',`Set_KeyPad_Mode') + procedure Set_KeyPad_Mode (Win : Window := Standard_Window; + SwitchOn : Boolean := True); + -- AKA + pragma Inline (Set_KeyPad_Mode); + + function Get_KeyPad_Mode (Win : Window := Standard_Window) + return Boolean; + -- This has no pendant in C. There you've to look into the WINDOWS + -- structure to get the value. Bad practice, not repeated in Ada. + + type Half_Delay_Amount is range 1 .. 255; + + -- ANCHOR(`halfdelay()',`Half_Delay') + procedure Half_Delay (Amount : Half_Delay_Amount); + -- AKA + pragma Inline (Half_Delay); + + -- ANCHOR(`intrflush()',`Set_Flush_On_Interrupt_Mode') + procedure Set_Flush_On_Interrupt_Mode + (Win : Window := Standard_Window; + Mode : Boolean := True); + -- AKA + pragma Inline (Set_Flush_On_Interrupt_Mode); + + -- ANCHOR(`qiflush()',`Set_Queue_Interrupt_Mode') + procedure Set_Queue_Interrupt_Mode + (Win : Window := Standard_Window; + Flush : Boolean := True); + -- AKA + -- ALIAS(`noqiflush()') + pragma Inline (Set_Queue_Interrupt_Mode); + + -- ANCHOR(`nodelay()',`Set_NoDelay_Mode') + procedure Set_NoDelay_Mode + (Win : Window := Standard_Window; + Mode : Boolean := False); + -- AKA + pragma Inline (Set_NoDelay_Mode); + + type Timeout_Mode is (Blocking, Non_Blocking, Delayed); + + -- ANCHOR(`wtimeout()',`Set_Timeout_Mode') + procedure Set_Timeout_Mode (Win : Window := Standard_Window; + Mode : Timeout_Mode; + Amount : Natural); -- in Milliseconds + -- AKA + -- ALIAS(`timeout()') + -- Instead of overloading the semantic of the sign of amount, we + -- introduce the Timeout_Mode parameter. This should improve + -- readability. For Blocking and Non_Blocking, the Amount is not + -- evaluated. + -- We do not inline this procedure. + + -- ANCHOR(`notimeout()',`Set_Escape_Time_Mode') + procedure Set_Escape_Timer_Mode + (Win : Window := Standard_Window; + Timer_Off : Boolean := False); + -- AKA + pragma Inline (Set_Escape_Timer_Mode); + + -- MANPAGE(`curs_outopts.3x') + + -- ANCHOR(`nl()',`Set_NL_Mode') + procedure Set_NL_Mode (SwitchOn : Boolean := True); + -- AKA + -- ALIAS(`nonl()') + pragma Inline (Set_NL_Mode); + + -- ANCHOR(`clearok()',`Clear_On_Next_Update') + procedure Clear_On_Next_Update + (Win : Window := Standard_Window; + Do_Clear : Boolean := True); + -- AKA + pragma Inline (Clear_On_Next_Update); + + -- ANCHOR(`idlok()',`Use_Insert_Delete_Line') + procedure Use_Insert_Delete_Line + (Win : Window := Standard_Window; + Do_Idl : Boolean := True); + -- AKA + pragma Inline (Use_Insert_Delete_Line); + + -- ANCHOR(`idcok()',`Use_Insert_Delete_Character') + procedure Use_Insert_Delete_Character + (Win : Window := Standard_Window; + Do_Idc : Boolean := True); + -- AKA + pragma Inline (Use_Insert_Delete_Character); + + -- ANCHOR(`leaveok()',`Leave_Cursor_After_Update') + procedure Leave_Cursor_After_Update + (Win : Window := Standard_Window; + Do_Leave : Boolean := True); + -- AKA + pragma Inline (Leave_Cursor_After_Update); + + -- ANCHOR(`immedok()',`Immediate_Update_Mode') + procedure Immediate_Update_Mode + (Win : Window := Standard_Window; + Mode : Boolean := False); + -- AKA + pragma Inline (Immediate_Update_Mode); + + -- ANCHOR(`scrollok()',`Allow_Scrolling') + procedure Allow_Scrolling + (Win : Window := Standard_Window; + Mode : Boolean := False); + -- AKA + pragma Inline (Allow_Scrolling); + + function Scrolling_Allowed (Win : Window := Standard_Window) return Boolean; + -- There is no such function in the C interface. + pragma Inline (Scrolling_Allowed); + + -- ANCHOR(`wsetscrreg()',`Set_Scroll_Region') + procedure Set_Scroll_Region + (Win : Window := Standard_Window; + Top_Line : Line_Position; + Bottom_Line : Line_Position); + -- AKA + -- ALIAS(`setscrreg()') + pragma Inline (Set_Scroll_Region); + + -- MANPAGE(`curs_refresh.3x') + + -- ANCHOR(`doupdate()',`Update_Screen') + procedure Update_Screen; + -- AKA + pragma Inline (Update_Screen); + + -- ANCHOR(`wrefresh()',`Refresh') + procedure Refresh (Win : Window := Standard_Window); + -- AKA + -- There is an overloaded Refresh for Pads. + -- The Inline pragma appears there + -- ALIAS(`refresh()') + + -- ANCHOR(`wnoutrefresh()',`Refresh_Without_Update') + procedure Refresh_Without_Update + (Win : Window := Standard_Window); + -- AKA + -- There is an overloaded Refresh_Without_Update for Pads. + -- The Inline pragma appears there + + -- ANCHOR(`redrawwin()',`Redraw') + procedure Redraw (Win : Window := Standard_Window); + -- AKA + + -- ANCHOR(`wredrawln()',`Redraw') + procedure Redraw (Win : Window := Standard_Window; + Begin_Line : Line_Position; + Line_Count : Positive); + -- AKA + pragma Inline (Redraw); + + -- MANPAGE(`curs_clear.3x') + + -- ANCHOR(`werase()',`Erase') + procedure Erase (Win : Window := Standard_Window); + -- AKA + -- ALIAS(`erase()') + pragma Inline (Erase); + + -- ANCHOR(`wclear()',`Clear') + procedure Clear + (Win : Window := Standard_Window); + -- AKA + -- ALIAS(`clear()') + pragma Inline (Clear); + + -- ANCHOR(`wclrtobot()',`Clear_To_End_Of_Screen') + procedure Clear_To_End_Of_Screen + (Win : Window := Standard_Window); + -- AKA + -- ALIAS(`clrtobot()') + pragma Inline (Clear_To_End_Of_Screen); + + -- ANCHOR(`wclrtoeol()',`Clear_To_End_Of_Line') + procedure Clear_To_End_Of_Line + (Win : Window := Standard_Window); + -- AKA + -- ALIAS(`clrtoeol()') + pragma Inline (Clear_To_End_Of_Line); + + -- MANPAGE(`curs_bkgd.3x') + + -- ANCHOR(`wbkgdset()',`Set_Background') + -- TODO: we could have Set_Background(Window; Character_Attribute_Set) + -- because in C it is common to see bkgdset(A_BOLD) or + -- bkgdset(COLOR_PAIR(n)) + procedure Set_Background + (Win : Window := Standard_Window; + Ch : Attributed_Character); + -- AKA + -- ALIAS(`bkgdset()') + pragma Inline (Set_Background); + + -- ANCHOR(`wbkgd()',`Change_Background') + procedure Change_Background + (Win : Window := Standard_Window; + Ch : Attributed_Character); + -- AKA + -- ALIAS(`bkgd()') + pragma Inline (Change_Background); + + -- ANCHOR(`wbkgdget()',`Get_Background') + -- ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough. + function Get_Background (Win : Window := Standard_Window) + return Attributed_Character; + -- AKA + -- ALIAS(`bkgdget()') + pragma Inline (Get_Background); + + -- MANPAGE(`curs_touch.3x') + + -- ANCHOR(`untouchwin()',`Untouch') + procedure Untouch (Win : Window := Standard_Window); + -- AKA + pragma Inline (Untouch); + + -- ANCHOR(`touchwin()',`Touch') + procedure Touch (Win : Window := Standard_Window); + -- AKA + + -- ANCHOR(`touchline()',`Touch') + procedure Touch (Win : Window := Standard_Window; + Start : Line_Position; + Count : Positive); + -- AKA + pragma Inline (Touch); + + -- ANCHOR(`wtouchln()',`Change_Line_Status') + procedure Change_Lines_Status (Win : Window := Standard_Window; + Start : Line_Position; + Count : Positive; + State : Boolean); + -- AKA + pragma Inline (Change_Lines_Status); + + -- ANCHOR(`is_linetouched()',`Is_Touched') + function Is_Touched (Win : Window := Standard_Window; + Line : Line_Position) return Boolean; + -- AKA + + -- ANCHOR(`is_wintouched()',`Is_Touched') + function Is_Touched (Win : Window := Standard_Window) return Boolean; + -- AKA + pragma Inline (Is_Touched); + + -- MANPAGE(`curs_overlay.3x') + + -- ANCHOR(`copywin()',`Copy') + procedure Copy + (Source_Window : Window; + Destination_Window : Window; + Source_Top_Row : Line_Position; + Source_Left_Column : Column_Position; + Destination_Top_Row : Line_Position; + Destination_Left_Column : Column_Position; + Destination_Bottom_Row : Line_Position; + Destination_Right_Column : Column_Position; + Non_Destructive_Mode : Boolean := True); + -- AKA + pragma Inline (Copy); + + -- ANCHOR(`overwrite()',`Overwrite') + procedure Overwrite (Source_Window : Window; + Destination_Window : Window); + -- AKA + pragma Inline (Overwrite); + + -- ANCHOR(`overlay()',`Overlay') + procedure Overlay (Source_Window : Window; + Destination_Window : Window); + -- AKA + pragma Inline (Overlay); + + -- MANPAGE(`curs_deleteln.3x') + + -- ANCHOR(`winsdelln()',`Insert_Delete_Lines') + procedure Insert_Delete_Lines + (Win : Window := Standard_Window; + Lines : Integer := 1); -- default is to insert one line above + -- AKA + -- ALIAS(`insdelln()') + pragma Inline (Insert_Delete_Lines); + + -- ANCHOR(`wdeleteln()',`Delete_Line') + procedure Delete_Line (Win : Window := Standard_Window); + -- AKA + -- ALIAS(`deleteln()') + pragma Inline (Delete_Line); + + -- ANCHOR(`winsertln()',`Insert_Line') + procedure Insert_Line (Win : Window := Standard_Window); + -- AKA + -- ALIAS(`insertln()') + pragma Inline (Insert_Line); + + -- MANPAGE(`curs_getyx.3x') + + -- ANCHOR(`getmaxyx()',`Get_Size') + procedure Get_Size + (Win : Window := Standard_Window; + Number_Of_Lines : out Line_Count; + Number_Of_Columns : out Column_Count); + -- AKA + pragma Inline (Get_Size); + + -- ANCHOR(`getbegyx()',`Get_Window_Position') + procedure Get_Window_Position + (Win : Window := Standard_Window; + Top_Left_Line : out Line_Position; + Top_Left_Column : out Column_Position); + -- AKA + pragma Inline (Get_Window_Position); + + -- ANCHOR(`getyx()',`Get_Cursor_Position') + procedure Get_Cursor_Position + (Win : Window := Standard_Window; + Line : out Line_Position; + Column : out Column_Position); + -- AKA + pragma Inline (Get_Cursor_Position); + + -- ANCHOR(`getparyx()',`Get_Origin_Relative_To_Parent') + procedure Get_Origin_Relative_To_Parent + (Win : Window; + Top_Left_Line : out Line_Position; + Top_Left_Column : out Column_Position; + Is_Not_A_Subwindow : out Boolean); + -- AKA + -- Instead of placing -1 in the coordinates as return, we use a Boolean + -- to return the info that the window has no parent. + pragma Inline (Get_Origin_Relative_To_Parent); + + -- MANPAGE(`curs_pad.3x') + + -- ANCHOR(`newpad()',`New_Pad') + function New_Pad (Lines : Line_Count; + Columns : Column_Count) return Window; + -- AKA + pragma Inline (New_Pad); + + -- ANCHOR(`subpad()',`Sub_Pad') + function Sub_Pad + (Pad : Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count; + First_Line_Position : Line_Position; + First_Column_Position : Column_Position) return Window; + -- AKA + pragma Inline (Sub_Pad); + + -- ANCHOR(`prefresh()',`Refresh') + procedure Refresh + (Pad : Window; + Source_Top_Row : Line_Position; + Source_Left_Column : Column_Position; + Destination_Top_Row : Line_Position; + Destination_Left_Column : Column_Position; + Destination_Bottom_Row : Line_Position; + Destination_Right_Column : Column_Position); + -- AKA + pragma Inline (Refresh); + + -- ANCHOR(`pnoutrefresh()',`Refresh_Without_Update') + procedure Refresh_Without_Update + (Pad : Window; + Source_Top_Row : Line_Position; + Source_Left_Column : Column_Position; + Destination_Top_Row : Line_Position; + Destination_Left_Column : Column_Position; + Destination_Bottom_Row : Line_Position; + Destination_Right_Column : Column_Position); + -- AKA + pragma Inline (Refresh_Without_Update); + + -- ANCHOR(`pechochar()',`Add_Character_To_Pad_And_Echo_It') + procedure Add_Character_To_Pad_And_Echo_It + (Pad : Window; + Ch : Attributed_Character); + -- AKA + + procedure Add_Character_To_Pad_And_Echo_It + (Pad : Window; + Ch : Character); + pragma Inline (Add_Character_To_Pad_And_Echo_It); + + -- MANPAGE(`curs_scroll.3x') + + -- ANCHOR(`wscrl()',`Scroll') + procedure Scroll (Win : Window := Standard_Window; + Amount : Integer := 1); + -- AKA + -- ALIAS(`scroll()') + -- ALIAS(`scrl()') + pragma Inline (Scroll); + + -- MANPAGE(`curs_delch.3x') + + -- ANCHOR(`wdelch()',`Delete_Character') + procedure Delete_Character (Win : Window := Standard_Window); + -- AKA + -- ALIAS(`delch()') + + -- ANCHOR(`mvwdelch()',`Delete_Character') + procedure Delete_Character + (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position); + -- AKA + -- ALIAS(`mvdelch()') + pragma Inline (Delete_Character); + + -- MANPAGE(`curs_inch.3x') + + -- ANCHOR(`winch()',`Peek') + function Peek (Win : Window := Standard_Window) + return Attributed_Character; + -- ALIAS(`inch()') + -- AKA + + -- ANCHOR(`mvwinch()',`Peek') + function Peek + (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position) return Attributed_Character; + -- AKA + -- ALIAS(`mvinch()') + -- More Peek's follow, pragma Inline appears later. + + -- MANPAGE(`curs_insch.3x') + + -- ANCHOR(`winsch()',`Insert') + procedure Insert (Win : Window := Standard_Window; + Ch : Attributed_Character); + -- AKA + -- ALIAS(`insch()') + + -- ANCHOR(`mvwinsch()',`Insert') + procedure Insert (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Ch : Attributed_Character); + -- AKA + -- ALIAS(`mvinsch()') + + -- MANPAGE(`curs_insstr.3x') + + -- ANCHOR(`winsnstr()',`Insert') + procedure Insert (Win : Window := Standard_Window; + Str : String; + Len : Integer := -1); + -- AKA + -- ALIAS(`winsstr()') + -- ALIAS(`insnstr()') + -- ALIAS(`insstr()') + + -- ANCHOR(`mvwinsnstr()',`Insert') + procedure Insert (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Str : String; + Len : Integer := -1); + -- AKA + -- ALIAS(`mvwinsstr()') + -- ALIAS(`mvinsnstr()') + -- ALIAS(`mvinsstr()') + pragma Inline (Insert); + + -- MANPAGE(`curs_instr.3x') + + -- ANCHOR(`winnstr()',`Peek') + procedure Peek (Win : Window := Standard_Window; + Str : out String; + Len : Integer := -1); + -- AKA + -- ALIAS(`winstr()') + -- ALIAS(`innstr()') + -- ALIAS(`instr()') + + -- ANCHOR(`mvwinnstr()',`Peek') + procedure Peek (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Str : out String; + Len : Integer := -1); + -- AKA + -- ALIAS(`mvwinstr()') + -- ALIAS(`mvinnstr()') + -- ALIAS(`mvinstr()') + + -- MANPAGE(`curs_inchstr.3x') + + -- ANCHOR(`winchnstr()',`Peek') + procedure Peek (Win : Window := Standard_Window; + Str : out Attributed_String; + Len : Integer := -1); + -- AKA + -- ALIAS(`winchstr()') + -- ALIAS(`inchnstr()') + -- ALIAS(`inchstr()') + + -- ANCHOR(`mvwinchnstr()',`Peek') + procedure Peek (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Str : out Attributed_String; + Len : Integer := -1); + -- AKA + -- ALIAS(`mvwinchstr()') + -- ALIAS(`mvinchnstr()') + -- ALIAS(`mvinchstr()') + -- We do not inline the Peek procedures + + -- MANPAGE(`curs_getstr.3x') + + -- ANCHOR(`wgetnstr()',`Get') + procedure Get (Win : Window := Standard_Window; + Str : out String; + Len : Integer := -1); + -- AKA + -- ALIAS(`wgetstr()') + -- ALIAS(`getnstr()') + -- ALIAS(`getstr()') + -- actually getstr is not supported because that results in buffer + -- overflows. + + -- ANCHOR(`mvwgetnstr()',`Get') + procedure Get (Win : Window := Standard_Window; + Line : Line_Position; + Column : Column_Position; + Str : out String; + Len : Integer := -1); + -- AKA + -- ALIAS(`mvwgetstr()') + -- ALIAS(`mvgetnstr()') + -- ALIAS(`mvgetstr()') + -- Get is not inlined + + -- MANPAGE(`curs_slk.3x') + + -- Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set + + type Soft_Label_Key_Format is (Three_Two_Three, + Four_Four, + PC_Style, -- ncurses specific + PC_Style_With_Index); -- " + type Label_Number is new Positive range 1 .. 12; + type Label_Justification is (Left, Centered, Right); + + -- ANCHOR(`slk_init()',`Init_Soft_Label_Keys') + procedure Init_Soft_Label_Keys + (Format : Soft_Label_Key_Format := Three_Two_Three); + -- AKA + pragma Inline (Init_Soft_Label_Keys); + + -- ANCHOR(`slk_set()',`Set_Soft_Label_Key') + procedure Set_Soft_Label_Key (Label : Label_Number; + Text : String; + Fmt : Label_Justification := Left); + -- AKA + -- We do not inline this procedure + + -- ANCHOR(`slk_refresh()',`Refresh_Soft_Label_Key') + procedure Refresh_Soft_Label_Keys; + -- AKA + pragma Inline (Refresh_Soft_Label_Keys); + + -- ANCHOR(`slk_noutrefresh()',`Refresh_Soft_Label_Keys_Without_Update') + procedure Refresh_Soft_Label_Keys_Without_Update; + -- AKA + pragma Inline (Refresh_Soft_Label_Keys_Without_Update); + + -- ANCHOR(`slk_label()',`Get_Soft_Label_Key') + procedure Get_Soft_Label_Key (Label : Label_Number; + Text : out String); + -- AKA + + -- ANCHOR(`slk_label()',`Get_Soft_Label_Key') + function Get_Soft_Label_Key (Label : Label_Number) return String; + -- AKA + -- Same as function + pragma Inline (Get_Soft_Label_Key); + + -- ANCHOR(`slk_clear()',`Clear_Soft_Label_Keys') + procedure Clear_Soft_Label_Keys; + -- AKA + pragma Inline (Clear_Soft_Label_Keys); + + -- ANCHOR(`slk_restore()',`Restore_Soft_Label_Keys') + procedure Restore_Soft_Label_Keys; + -- AKA + pragma Inline (Restore_Soft_Label_Keys); + + -- ANCHOR(`slk_touch()',`Touch_Soft_Label_Keys') + procedure Touch_Soft_Label_Keys; + -- AKA + pragma Inline (Touch_Soft_Label_Keys); + + -- ANCHOR(`slk_attron()',`Switch_Soft_Label_Key_Attributes') + procedure Switch_Soft_Label_Key_Attributes + (Attr : Character_Attribute_Set; + On : Boolean := True); + -- AKA + -- ALIAS(`slk_attroff()') + pragma Inline (Switch_Soft_Label_Key_Attributes); + + -- ANCHOR(`slk_attrset()',`Set_Soft_Label_Key_Attributes') + procedure Set_Soft_Label_Key_Attributes + (Attr : Character_Attribute_Set := Normal_Video; + Color : Color_Pair := Color_Pair'First); + -- AKA + pragma Inline (Set_Soft_Label_Key_Attributes); + + -- ANCHOR(`slk_attr()',`Get_Soft_Label_Key_Attributes') + function Get_Soft_Label_Key_Attributes return Character_Attribute_Set; + -- AKA + + -- ANCHOR(`slk_attr()',`Get_Soft_Label_Key_Attributes') + function Get_Soft_Label_Key_Attributes return Color_Pair; + -- AKA + pragma Inline (Get_Soft_Label_Key_Attributes); + + -- ANCHOR(`slk_color()',`Set_Soft_Label_Key_Color') + procedure Set_Soft_Label_Key_Color (Pair : Color_Pair); + -- AKA + pragma Inline (Set_Soft_Label_Key_Color); + + -- MANPAGE(`keybound.3x') + -- Not Implemented: keybound + + -- MANPAGE(`keyok.3x') + + -- ANCHOR(`keyok()',`Enable_Key') + procedure Enable_Key (Key : Special_Key_Code; + Enable : Boolean := True); + -- AKA + pragma Inline (Enable_Key); + + -- MANPAGE(`define_key.3x') + + -- ANCHOR(`define_key()',`Define_Key') + procedure Define_Key (Definition : String; + Key : Special_Key_Code); + -- AKA + pragma Inline (Define_Key); + + -- MANPAGE(`curs_util.3x') + + -- | Not implemented : filter, use_env + -- | putwin, getwin are in the child package PutWin + -- + + -- ANCHOR(`keyname()',`Key_Name') + procedure Key_Name (Key : Real_Key_Code; + Name : out String); + -- AKA + -- The external name for a real keystroke. + + -- ANCHOR(`keyname()',`Key_Name') + function Key_Name (Key : Real_Key_Code) return String; + -- AKA + -- Same as function + -- We do not inline this routine + + -- ANCHOR(`unctrl()',`Un_Control') + procedure Un_Control (Ch : Attributed_Character; + Str : out String); + -- AKA + + -- ANCHOR(`unctrl()',`Un_Control') + function Un_Control (Ch : Attributed_Character) return String; + -- AKA + -- Same as function + pragma Inline (Un_Control); + + -- ANCHOR(`delay_output()',`Delay_Output') + procedure Delay_Output (Msecs : Natural); + -- AKA + pragma Inline (Delay_Output); + + -- ANCHOR(`flushinp()',`Flush_Input') + procedure Flush_Input; + -- AKA + pragma Inline (Flush_Input); + + -- MANPAGE(`curs_termattrs.3x') + + -- ANCHOR(`baudrate()',`Baudrate') + function Baudrate return Natural; + -- AKA + pragma Inline (Baudrate); + + -- ANCHOR(`erasechar()',`Erase_Character') + function Erase_Character return Character; + -- AKA + pragma Inline (Erase_Character); + + -- ANCHOR(`killchar()',`Kill_Character') + function Kill_Character return Character; + -- AKA + pragma Inline (Kill_Character); + + -- ANCHOR(`has_ic()',`Has_Insert_Character') + function Has_Insert_Character return Boolean; + -- AKA + pragma Inline (Has_Insert_Character); + + -- ANCHOR(`has_il()',`Has_Insert_Line') + function Has_Insert_Line return Boolean; + -- AKA + pragma Inline (Has_Insert_Line); + + -- ANCHOR(`termattrs()',`Supported_Attributes') + function Supported_Attributes return Character_Attribute_Set; + -- AKA + pragma Inline (Supported_Attributes); + + -- ANCHOR(`longname()',`Long_Name') + procedure Long_Name (Name : out String); + -- AKA + + -- ANCHOR(`longname()',`Long_Name') + function Long_Name return String; + -- AKA + -- Same as function + pragma Inline (Long_Name); + + -- ANCHOR(`termname()',`Terminal_Name') + procedure Terminal_Name (Name : out String); + -- AKA + + -- ANCHOR(`termname()',`Terminal_Name') + function Terminal_Name return String; + -- AKA + -- Same as function + pragma Inline (Terminal_Name); + + -- MANPAGE(`curs_color.3x') + + -- COLOR_PAIR + -- COLOR_PAIR(n) in C is the same as + -- Attributed_Character(Ch => Nul, Color => n, Attr => Normal_Video) + -- In C you often see something like c = c | COLOR_PAIR(n); + -- This is equivalent to c.Color := n; + + -- ANCHOR(`start_color()',`Start_Color') + procedure Start_Color; + -- AKA + pragma Import (C, Start_Color, "start_color"); + + -- ANCHOR(`init_pair()',`Init_Pair') + procedure Init_Pair (Pair : Redefinable_Color_Pair; + Fore : Color_Number; + Back : Color_Number); + -- AKA + pragma Inline (Init_Pair); + + -- ANCHOR(`pair_content()',`Pair_Content') + procedure Pair_Content (Pair : Color_Pair; + Fore : out Color_Number; + Back : out Color_Number); + -- AKA + pragma Inline (Pair_Content); + + -- ANCHOR(`has_colors()',`Has_Colors') + function Has_Colors return Boolean; + -- AKA + pragma Inline (Has_Colors); + + -- ANCHOR(`init_color()',`Init_Color') + procedure Init_Color (Color : Color_Number; + Red : RGB_Value; + Green : RGB_Value; + Blue : RGB_Value); + -- AKA + pragma Inline (Init_Color); + + -- ANCHOR(`can_change_color()',`Can_Change_Color') + function Can_Change_Color return Boolean; + -- AKA + pragma Inline (Can_Change_Color); + + -- ANCHOR(`color_content()',`Color_Content') + procedure Color_Content (Color : Color_Number; + Red : out RGB_Value; + Green : out RGB_Value; + Blue : out RGB_Value); + -- AKA + pragma Inline (Color_Content); + + -- MANPAGE(`curs_kernel.3x') + -- | Not implemented: getsyx, setsyx + -- + type Curses_Mode is (Curses, Shell); + + -- ANCHOR(`def_prog_mode()',`Save_Curses_Mode') + procedure Save_Curses_Mode (Mode : Curses_Mode); + -- AKA + -- ALIAS(`def_shell_mode()') + pragma Inline (Save_Curses_Mode); + + -- ANCHOR(`reset_prog_mode()',`Reset_Curses_Mode') + procedure Reset_Curses_Mode (Mode : Curses_Mode); + -- AKA + -- ALIAS(`reset_shell_mode()') + pragma Inline (Reset_Curses_Mode); + + -- ANCHOR(`savetty()',`Save_Terminal_State') + procedure Save_Terminal_State; + -- AKA + pragma Inline (Save_Terminal_State); + + -- ANCHOR(`resetty();',`Reset_Terminal_State') + procedure Reset_Terminal_State; + -- AKA + pragma Inline (Reset_Terminal_State); + + type Stdscr_Init_Proc is access + function (Win : Window; + Columns : Column_Count) return Integer; + pragma Convention (C, Stdscr_Init_Proc); + -- N.B.: the return value is actually ignored, but it seems to be + -- a good practice to return 0 if you think all went fine + -- and -1 otherwise. + + -- ANCHOR(`ripoffline()',`Rip_Off_Lines') + procedure Rip_Off_Lines (Lines : Integer; + Proc : Stdscr_Init_Proc); + -- AKA + -- N.B.: to be more precise, this uses a ncurses specific enhancement of + -- ripoffline(), in which the Lines argument absolute value is the + -- number of lines to be ripped of. The official ripoffline() only + -- uses the sign of Lines to remove a single line from bottom or top. + pragma Inline (Rip_Off_Lines); + + type Cursor_Visibility is (Invisible, Normal, Very_Visible); + + -- ANCHOR(`curs_set()',`Set_Cursor_Visibility') + procedure Set_Cursor_Visibility (Visibility : in out Cursor_Visibility); + -- AKA + pragma Inline (Set_Cursor_Visibility); + + -- ANCHOR(`napms()',`Nap_Milli_Seconds') + procedure Nap_Milli_Seconds (Ms : Natural); + -- AKA + pragma Inline (Nap_Milli_Seconds); + + -- |===================================================================== + -- | Some useful helpers. + -- |===================================================================== + type Transform_Direction is (From_Screen, To_Screen); + procedure Transform_Coordinates + (W : Window := Standard_Window; + Line : in out Line_Position; + Column : in out Column_Position; + Dir : Transform_Direction := From_Screen); + -- This procedure transforms screen coordinates into coordinates relative + -- to the window and vice versa, depending on the Dir parameter. + -- Screen coordinates are the position information for the physical device. + -- An Curses_Exception will be raised if Line and Column are not in the + -- Window or if you pass the Null_Window as argument. + -- We do not inline this procedure + + -- MANPAGE(`default_colors.3x') + + Default_Color : constant Color_Number := -1; + + -- ANCHOR(`use_default_colors()',`Use_Default_Colors') + procedure Use_Default_Colors; + -- AKA + pragma Inline (Use_Default_Colors); + + -- ANCHOR(`assume_default_colors()',`Assume_Default_Colors') + procedure Assume_Default_Colors (Fore : Color_Number := Default_Color; + Back : Color_Number := Default_Color); + -- AKA + pragma Inline (Assume_Default_Colors); + + -- MANPAGE(`curs_extend.3x') + + -- ANCHOR(`curses_version()',`Curses_Version') + function Curses_Version return String; + -- AKA + + -- ANCHOR(`use_extended_names()',`Use_Extended_Names') + -- The returnvalue is the previous setting of the flag + function Use_Extended_Names (Enable : Boolean) return Boolean; + -- AKA + + -- MANPAGE(`curs_trace.3x') + + -- ANCHOR(`_nc_freeall()',`Curses_Free_All') + procedure Curses_Free_All; + -- AKA + + -- MANPAGE(`curs_scr_dump.3x') + + -- ANCHOR(`scr_dump()',`Screen_Dump_To_File') + procedure Screen_Dump_To_File (Filename : String); + -- AKA + + -- ANCHOR(`scr_restore()',`Screen_Restore_From_File') + procedure Screen_Restore_From_File (Filename : String); + -- AKA + + -- ANCHOR(`scr_init()',`Screen_Init_From_File') + procedure Screen_Init_From_File (Filename : String); + -- AKA + + -- ANCHOR(`scr_set()',`Screen_Set_File') + procedure Screen_Set_File (Filename : String); + -- AKA + + -- MANPAGE(`curs_print.3x') + -- Not implemented: mcprint + + -- MANPAGE(`curs_printw.3x') + -- Not implemented: printw, wprintw, mvprintw, mvwprintw, vwprintw, + -- vw_printw + -- Please use the Ada style Text_IO child packages for formatted + -- printing. It does not make a lot of sense to map the printf style + -- C functions to Ada. + + -- MANPAGE(`curs_scanw.3x') + -- Not implemented: scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw + + -- MANPAGE(`resizeterm.3x') + -- Not Implemented: resizeterm + + -- MANPAGE(`wresize.3x') + + -- ANCHOR(`wresize()',`Resize') + procedure Resize (Win : Window := Standard_Window; + Number_Of_Lines : Line_Count; + Number_Of_Columns : Column_Count); + -- AKA + +private + type Window is new System.Storage_Elements.Integer_Address; + Null_Window : constant Window := 0; + + -- The next constants are generated and may be different on your + -- architecture. + -- + + Sizeof_Bool : constant := Curses_Constants.Sizeof_Bool; + + type Curses_Bool is mod 2 ** Sizeof_Bool; + + Curses_Bool_False : constant Curses_Bool := 0; + +end Terminal_Interface.Curses; diff --git a/deps/ncurses-6.3/Ada95/include/MKncurses_def.sh b/deps/ncurses-6.3/Ada95/include/MKncurses_def.sh new file mode 100755 index 0000000..4b2ae41 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/include/MKncurses_def.sh @@ -0,0 +1,81 @@ +#! /bin/sh +# $Id: MKncurses_def.sh,v 1.4 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 2003 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. # +############################################################################## +# +# MKncurses_def.sh -- generate fallback definitions for ncurses_cfg.h +# +# Author: Thomas E. Dickey 2000 +# +# Given the choice between constructs such as +# +# #if defined(foo) && foo +# #if foo +# +# we chose the latter. It is guaranteed by the language standard, and there +# appear to be no broken compilers that do not honor that detail. But some +# people want to use gcc's -Wundef option (corresponding to one of the less +# useful features in Watcom's compiler) to check for misspellings. So we +# generate a set of fallback definitions to quiet the warnings without making +# the code ugly. +# +DEFS="${1-ncurses_defs}" +cat <$@ + +tags: + ctags *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ etags *.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace + +clean :: mostlyclean + -rm -f $(AUTO_SRC) + +distclean :: clean + -rm -f Makefile + +realclean :: distclean + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-6.3/Ada95/include/ncurses_cfg.hin b/deps/ncurses-6.3/Ada95/include/ncurses_cfg.hin new file mode 100644 index 0000000..f8bcb66 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/include/ncurses_cfg.hin @@ -0,0 +1,73 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2005-2017,2018 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: Thomas E. Dickey 1997 * + ****************************************************************************/ +/* + * $Id: ncurses_cfg.hin,v 1.11 2020/02/02 23:34:34 tom Exp $ + * + * This is a template-file used to generate the "ncurses_cfg.h" file. + * + * Rather than list every definition, the configuration script substitutes the + * definitions that it finds using 'sed'. You need a patch (original date + * 971222) to autoconf 2.12 or 2.13 to do this. + * + * See: + * https://invisible-island.net/autoconf/ + * ftp://ftp.invisible-island.net/autoconf/ + */ +#ifndef NC_CONFIG_H +#define NC_CONFIG_H +@DEFS@ + +#include + + /* The C compiler may not treat these properly but C++ has to */ +#ifdef __cplusplus +#undef const +#undef inline +#else +#if defined(lint) || defined(TRACE) +#undef inline +#define inline /* nothing */ +#endif +#endif + + /* On HP-UX, the C compiler doesn't grok mbstate_t without + -D_XOPEN_SOURCE=500. However, this causes problems on + IRIX. So, we #define mbstate_t to int in configure.in + only for the C compiler if needed. */ +#ifndef __cplusplus +#ifdef NEED_MBSTATE_T_DEF +#define mbstate_t int +#endif +#endif + +#endif /* NC_CONFIG_H */ diff --git a/deps/ncurses-6.3/Ada95/include/ncurses_defs b/deps/ncurses-6.3/Ada95/include/ncurses_defs new file mode 100644 index 0000000..50da8e5 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/include/ncurses_defs @@ -0,0 +1,205 @@ +# $Id: ncurses_defs,v 1.46 2021/06/17 21:20:30 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2008-2012,2013 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. # +############################################################################## +# +# See "MKncurses_def.sh" for an explanation. +# +# (hint: don't try to define NDEBUG ;-) + +BROKEN_LINKER +BSD_TPUTS +CPP_HAS_PARAM_INIT +CURSES_ACS_ARRAY acs_map +CURSES_WACS_ARRAY _nc_wacs +DECL_ERRNO +ETIP_NEEDS_MATH_H +GCC_NORETURN /* nothing */ +GCC_UNUSED /* nothing */ +HAVE_BIG_CORE +HAVE_BSD_CGETENT +HAVE_BSD_SIGNAL_H +HAVE_BTOWC +HAVE_BUILTIN_H +HAVE_CHGAT 1 +HAVE_COLOR_SET 1 +HAVE_DIRENT_H +HAVE_ERRNO +HAVE_FCNTL_H +HAVE_FILTER 1 +HAVE_FORM_H +HAVE_GETBEGX 1 +HAVE_GETCURX 1 +HAVE_GETCWD +HAVE_GETEGID +HAVE_GETEUID +HAVE_GETMAXX 1 +HAVE_GETNSTR +HAVE_GETOPT_H +HAVE_GETPARX 1 +HAVE_GETTIMEOFDAY +HAVE_GETTTYNAM +HAVE_GETWIN 1 +HAVE_GPM_H +HAVE_GPP_BUILTIN_H +HAVE_GXX_BUILTIN_H +HAVE_HAS_KEY +HAVE_IOSTREAM +HAVE_ISASCII +HAVE_ISSETUGID +HAVE_LANGINFO_CODESET +HAVE_LIBC_H +HAVE_LIBDBMALLOC +HAVE_LIBDMALLOC +HAVE_LIBFORM +HAVE_LIBGPM +HAVE_LIBMENU +HAVE_LIBMPATROL +HAVE_LIBPANEL +HAVE_LIMITS_H +HAVE_LINK +HAVE_LOCALE_H +HAVE_LONG_FILE_NAMES +HAVE_MBLEN +HAVE_MBRLEN +HAVE_MBRTOWC +HAVE_MBSRTOWCS +HAVE_MBSTOWCS +HAVE_MBTOWC +HAVE_MENU_H +HAVE_MKSTEMP +HAVE_MVVLINE 1 +HAVE_MVWVLINE 1 +HAVE_NANOSLEEP +HAVE_NC_ALLOC_H +HAVE_PANEL_H +HAVE_POLL +HAVE_POLL_H +HAVE_PURIFY +HAVE_PUTWC +HAVE_PUTWIN 1 +HAVE_REGEXPR_H_FUNCS +HAVE_REGEXP_H_FUNCS +HAVE_REGEX_H_FUNCS +HAVE_REMOVE +HAVE_RESIZETERM +HAVE_RESIZE_TERM +HAVE_RIPOFFLINE 1 +HAVE_SELECT +HAVE_SETBUF +HAVE_SETBUFFER +HAVE_SETUPTERM 1 +HAVE_SETVBUF +HAVE_SIGACTION +HAVE_SIGVEC +HAVE_SIZECHANGE +HAVE_SLK_COLOR +HAVE_SLK_INIT 1 +HAVE_STRSTR +HAVE_SYMLINK +HAVE_SYS_BSDTYPES_H +HAVE_SYS_IOCTL_H +HAVE_SYS_PARAM_H +HAVE_SYS_POLL_H +HAVE_SYS_SELECT_H +HAVE_SYS_TERMIO_H +HAVE_SYS_TIMES_H +HAVE_SYS_TIME_H +HAVE_SYS_TIME_SELECT +HAVE_TCGETATTR +HAVE_TCGETPGRP +HAVE_TELL +HAVE_TERMATTRS 1 +HAVE_TERMIOS_H +HAVE_TERMIO_H +HAVE_TERMNAME 1 +HAVE_TERM_H 1 +HAVE_TGETENT 1 +HAVE_TIGETNUM 1 +HAVE_TIGETSTR 1 +HAVE_TIMES +HAVE_TTYENT_H +HAVE_TYPEAHEAD 1 +HAVE_TYPEINFO +HAVE_TYPE_ATTR_T +HAVE_TYPE_SIGACTION +HAVE_UNISTD_H +HAVE_UNLINK +HAVE_USE_DEFAULT_COLORS +HAVE_VFSCANF +HAVE_VSNPRINTF +HAVE_VSSCANF +HAVE_WCSRTOMBS +HAVE_WCSTOMBS +HAVE_WCTOB +HAVE_WCTOMB +HAVE_WCTYPE_H +HAVE_WINSSTR 1 +HAVE_WORKING_POLL +HAVE_WRESIZE +HAVE__DOSCAN +MIXEDCASE_FILENAMES +NCURSES_CHAR_EQ +NCURSES_EXPANDED +NCURSES_EXT_COLORS +NCURSES_EXT_FUNCS +NCURSES_NO_PADDING +NCURSES_PATHSEP ':' +NEED_PTEM_H +NO_LEAKS +PURE_TERMINFO +STDC_HEADERS +SVR4_ACTION +SVR4_TERMIO +SYSTEM_NAME "unknown" +TERMINFO "none" +TERMPATH "none" +TIME_WITH_SYS_TIME +TYPEOF_CHTYPE +USE_COLORFGBG +USE_DATABASE +USE_GETCAP +USE_GETCAP_CACHE +USE_HARD_TABS +USE_HASHED_DB +USE_HASHMAP +USE_HOME_TERMINFO +USE_LINKS +USE_MY_MEMMOVE +USE_OK_BCOPY +USE_RCS_IDS +USE_REENTRANT +USE_SAFE_SPRINTF +USE_SCROLL_HINTS +USE_SIGWINCH +USE_SYMLINKS +USE_SYSMOUSE +USE_TERMCAP +USE_WEAK_SYMBOLS +USE_WIDEC_SUPPORT +USE_XMC_SUPPORT diff --git a/deps/ncurses-6.3/Ada95/make-tar.sh b/deps/ncurses-6.3/Ada95/make-tar.sh new file mode 100755 index 0000000..e18ede7 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/make-tar.sh @@ -0,0 +1,160 @@ +#!/bin/sh +# $Id: make-tar.sh,v 1.20 2021/10/12 21:11:33 tom Exp $ +############################################################################## +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2010-2015,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. # +############################################################################## +# Construct a tar-file containing only the Ada95 tree as well as its associated +# documentation. The reason for doing that is to simplify distributing the +# ada binding as a separate package. + +CDPATH=: +export CDPATH + +TARGET=`pwd` + +: "${ROOTNAME:=ncurses-Ada95}" +: "${PKG_NAME:=AdaCurses}" +: "${DESTDIR:=$TARGET}" +: "${TMPDIR:=/tmp}" + +grep_assign() { + grep_assign=`grep -E "^$2\>" "$1" | sed -e "s/^$2[ ]*=[ ]*//" -e 's/"//g'` + eval "$2"=\""$grep_assign"\" +} + +grep_patchdate() { + grep_assign ../dist.mk NCURSES_MAJOR + grep_assign ../dist.mk NCURSES_MINOR + grep_assign ../dist.mk NCURSES_PATCH +} + +# The rpm spec-file in the ncurses tree is a template. Fill in the version +# information from dist.mk +edit_specfile() { + sed \ + -e "s/\\/$NCURSES_MAJOR/g" \ + -e "s/\\/$NCURSES_MINOR/g" \ + -e "s/\\/$NCURSES_PATCH/g" "$1" >"$1.new" + chmod u+w "$1" + mv "$1.new" "$1" +} + +make_changelog() { + [ -f "$1" ] && chmod u+w "$1" + cat >"$1" <MANIFEST ) + +cd $BUILD || exit + +# Remove build-artifacts. +find . -name RCS -exec rm -rf {} \; +find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null +find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null +find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null + +# There is no need for this script in the tar file. +rm -f $ROOTNAME/make-tar.sh + +# Remove build-artifacts. +find . -name "*.gz" -exec rm -rf {} \; + +# Make the files writable... +chmod -R u+w . + +tar cf - $ROOTNAME | gzip >"$DESTDIR/$ROOTNAME.tar.gz" +cd "$DESTDIR" || exit + +pwd +ls -l $ROOTNAME.tar.gz + +# vi:ts=4 sw=4 diff --git a/deps/ncurses-6.3/Ada95/mk-1st.awk b/deps/ncurses-6.3/Ada95/mk-1st.awk new file mode 100644 index 0000000..616bfa6 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/mk-1st.awk @@ -0,0 +1,91 @@ +# $Id: mk-1st.awk,v 1.5 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 2010,2011 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: Thomas E. Dickey +# +# Generate compile-rules for the Ada95 modules that we are using in libraries +# or programs. This script is used for older versions of gnatmake, which do +# not build libraries reliably, e.g., gnatmake 3.15. +# +# Fields in src/modules: +# $1 = module name +# $2 = directory where spec-dependency ".ads" is found +# $3 = directory where body-dependency ".adb" is found +# $4 = unit to compile (spec or body) +# +BEGIN { + printf "\n"; + printf "# generated by Ada95/mk-1st.awk\n"; + } + /^[#]/ { + next + } + /^$/ { + next + } + { + printf "\n"; + printf "%s.o :", $1; + + if ( $2 == "none" ) { + pre_spec = ""; + } else if ( $2 == "." ) { + pre_spec = ""; + printf " \\\n\t\t%s.ads", $1; + } else { + pre_spec = sprintf("%s/", $2); + printf " \\\n\t\t%s%s.ads", pre_spec, $1; + } + + if ( $3 == "none" ) { + pre_body = ""; + } else if ( $3 == "." ) { + pre_body = ""; + printf " \\\n\t\t%s.adb", $1; + } else { + pre_body = sprintf("%s/", $3); + printf " \\\n\t\t%s%s.adb", pre_body, $1; + printf " \\\n\t\t$(BASEDEPS)"; + } + + if ( $4 == "spec" ) { + suffix = "ads"; + prefix = pre_spec; + } else { + suffix = "adb"; + prefix = pre_body; + } + + printf "\n"; + printf "\t$(ADA) $(ADAFLAGS) -c -o $@ %s%s.%s\n", prefix, $1, suffix + } +END { + print "" + } diff --git a/deps/ncurses-6.3/Ada95/package/AdaCurses-doc.spec b/deps/ncurses-6.3/Ada95/package/AdaCurses-doc.spec new file mode 100644 index 0000000..c5b68dd --- /dev/null +++ b/deps/ncurses-6.3/Ada95/package/AdaCurses-doc.spec @@ -0,0 +1,61 @@ +Summary: AdaCurses - Ada95 binding documentation for ncurses +%define AppProgram AdaCurses +%define AppVersion MAJOR.MINOR +%define AppRelease YYYYMMDD +%define AppPackage %{AppProgram}-doc +# $Id: AdaCurses-doc.spec,v 1.7 2019/11/23 21:15:53 tom Exp $ +Name: %{AppPackage} +Version: %{AppVersion} +Release: %{AppRelease} +License: MIT +Group: Applications/Development +URL: ftp://ftp.invisible-island.net/%{AppProgram} +Source0: %{AppProgram}-%{AppRelease}.tgz +Packager: Thomas Dickey + +%description +This is the Ada95 binding documentation from the ncurses MAJOR.MINOR +distribution, for patch-date YYYYMMDD. +%prep + +%define debug_package %{nil} + +%setup -q -n %{AppProgram}-%{AppRelease} + +%build + +INSTALL_PROGRAM='${INSTALL}' \ +%configure \ + --target %{_target_platform} \ + --prefix=%{_prefix} \ + --datadir=%{_datadir} \ + --with-ada-sharedlib + +%install +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT + +(cd doc && make install.html DESTDIR=$RPM_BUILD_ROOT ) + +%clean +if rm -rf $RPM_BUILD_ROOT; then + echo OK +else + find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1 +fi +exit 0 + +%files +%defattr(-,root,root) +%{_datadir}/doc/%{AppProgram} + +%changelog +# each patch should add its ChangeLog entries here + +* Sat Nov 16 2019 Thomas Dickey +- modify clean-rule to work around Fedora NFS bugs. + +* Sat Sep 07 2019 Thomas Dickey +- use AppProgram to replace "AdaCurses" globally + +* Sat Mar 26 2011 Thomas Dickey +- initial version diff --git a/deps/ncurses-6.3/Ada95/package/AdaCurses.spec b/deps/ncurses-6.3/Ada95/package/AdaCurses.spec new file mode 100644 index 0000000..9b39110 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/package/AdaCurses.spec @@ -0,0 +1,107 @@ +Summary: Ada95 binding for ncurses +%define AppProgram AdaCurses +%define AppVersion MAJOR.MINOR +%define AppRelease YYYYMMDD +# $Id: AdaCurses.spec,v 1.25 2019/11/23 21:15:31 tom Exp $ +Name: %{AppProgram} +Version: %{AppVersion} +Release: %{AppRelease} +License: MIT +Group: Applications/Development +URL: ftp://ftp.invisible-island.net/%{AppProgram} +Source0: %{AppProgram}-%{AppRelease}.tgz +Packager: Thomas Dickey + +%description +This is the Ada95 binding from the ncurses MAJOR.MINOR distribution, for +patch-date YYYYMMDD. + +In addition to a library, this package installs sample programs in +"bin/%{AppProgram}" to avoid conflict with other packages. +%prep + +%define debug_package %{nil} + +%define need_filter %(if grep -E -i '(mageia|red hat|fedora)' /etc/issue >/dev/null; then echo 1; elif test -f /etc/fedora-release; then echo 1; else echo 0; fi) + +%if %{need_filter} == 1 +# http://fedoraproject.org/wiki/EPEL:Packaging_Autoprovides_and_Requires_Filtering +%filter_from_requires /lib%{AppProgram}.so.1/d +%filter_setup +%endif + +%setup -q -n %{AppProgram}-%{AppRelease} + +%build + +%define ada_libdir %{_prefix}/lib/ada/adalib +%define ada_include %{_prefix}/share/ada/adainclude + +INSTALL_PROGRAM='${INSTALL}' \ + ./configure \ + --target %{_target_platform} \ + --prefix=%{_prefix} \ + --bindir=%{_bindir} \ + --libdir=%{_libdir} \ + --with-ada-include=%{ada_include} \ + --with-ada-objects=%{ada_libdir} \ + --mandir=%{_mandir} \ + --datadir=%{_datadir} \ + --disable-rpath-link \ + --with-shared \ + --with-ada-sharedlib + +make + +%install +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT + +make install DESTDIR=$RPM_BUILD_ROOT + +( cd samples && + make install.examples \ + DESTDIR=$RPM_BUILD_ROOT \ + BINDIR=$RPM_BUILD_ROOT%{_bindir}/%{AppProgram} +) + +%clean +if rm -rf $RPM_BUILD_ROOT; then + echo OK +else + find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1 +fi +exit 0 + +%files +%defattr(-,root,root) +%{_bindir}/adacurses*-config +%{_bindir}/%{AppProgram}/* +%{ada_libdir}/ +%if %{need_filter} == 1 +%{_libdir}/lib%{AppProgram}.* +%endif +%{_mandir}/man1/adacurses*-config.1* +%{_datadir}/%{AppProgram}/* +%{ada_include}/ + +%changelog +# each patch should add its ChangeLog entries here + +* Sat Nov 16 2019 Thomas Dickey +- modify clean-rule to work around Fedora NFS bugs. + +* Sat Sep 14 2019 Thomas Dickey +- build-fixes for Fedora29, OpenSUSE + +* Sat Sep 07 2019 Thomas Dickey +- use AppProgram to replace "AdaCurses" globally +- amend install-paths to work with Fedora30 + +* Thu Mar 31 2011 Thomas Dickey +- use --with-shared option for consistency with --with-ada-sharelib +- ensure that MY_DATADIR is set when installing examples +- add ada_libdir symbol to handle special case where libdir is /usr/lib64 +- use --disable-rpath-link to link sample programs without rpath + +* Fri Mar 25 2011 Thomas Dickey +- initial version diff --git a/deps/ncurses-6.3/Ada95/package/debian/compat b/deps/ncurses-6.3/Ada95/package/debian/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/package/debian/compat @@ -0,0 +1 @@ +10 diff --git a/deps/ncurses-6.3/Ada95/package/debian/control b/deps/ncurses-6.3/Ada95/package/debian/control new file mode 100644 index 0000000..030adb1 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/package/debian/control @@ -0,0 +1,17 @@ +Source: adacurses +Maintainer: Thomas E. Dickey +Section: misc +Priority: optional +Standards-Version: 3.8.4 +Build-Depends: debhelper (>= 5) +Homepage: https://invisible-island.net/adacurses/ + +Package: adacurses +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: Ada95 binding for ncurses + This package installs as "adacurses" to avoid conflict with other packages. + This is the Ada95 binding from the ncurses distribution. + . + In addition to a library, this package installs sample programs in + "bin/AdaCurses" to avoid conflict with other packages. diff --git a/deps/ncurses-6.3/Ada95/package/debian/copyright b/deps/ncurses-6.3/Ada95/package/debian/copyright new file mode 100644 index 0000000..897961d --- /dev/null +++ b/deps/ncurses-6.3/Ada95/package/debian/copyright @@ -0,0 +1,79 @@ +Upstream source https://invisible-island.net/ncurses/Ada95.html + +Current ncurses maintainer: Thomas Dickey + +------------------------------------------------------------------------------- +Files: * +Copyright: 2017-2020,2021 by Thomas E. Dickey +Copyright: 1998-2016,2017 Free Software Foundation, Inc. +Licence: X11 + +Files: aclocal.m4 package +Copyright: 2010-2020,2021 by Thomas E. Dickey +Licence: X11 + + 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. + +------------------------------------------------------------------------------- +Files: install-sh +Copyright: 1994 X Consortium +Licence: X11 + + 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, 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 + 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. + + FSF changes to this file are in the public domain. + + Calling this script install-sh is preferred over install.sh, to prevent + `make' implicit rules from creating a file called install from it + when there is no Makefile. + + This script is compatible with the BSD install script, but was written + from scratch. It can only install one file at a time, a restriction + shared with many OS's install programs. + +On Debian systems, the complete text of the GNU General +Public License can be found in '/usr/share/common-licenses/GPL-2' + +-- vile: txtmode file-encoding=utf-8 diff --git a/deps/ncurses-5.9/Ada95/package/debian/docs b/deps/ncurses-6.3/Ada95/package/debian/docs similarity index 100% rename from deps/ncurses-5.9/Ada95/package/debian/docs rename to deps/ncurses-6.3/Ada95/package/debian/docs diff --git a/deps/ncurses-6.3/Ada95/package/debian/rules b/deps/ncurses-6.3/Ada95/package/debian/rules new file mode 100755 index 0000000..47bbdc0 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/package/debian/rules @@ -0,0 +1,103 @@ +#!/usr/bin/make -f +# MAde with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +TARGET_DIR = $(CURDIR)/debian/adacurses +SAMPLE_DIR = $(TARGET_DIR)/usr/bin/AdaCurses + +CFLAGS = $(shell dpkg-buildflags --get CFLAGS) $(CC_NORMAL) +CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) +LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS) + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + + +configure: configure-stamp +configure-stamp: + dh_testdir + + CFLAGS="$(CFLAGS)" \ + CPPFLAGS="$(CPPFLAGS)" \ + LDFLAGS="$(LDFLAGS)" ./configure \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --prefix=/usr \ + --disable-rpath-link \ + --with-shared \ + --with-ada-sharedlib \ + --without-pkg-config + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + [ ! -f makefile ] || $(MAKE) distclean + + rm -f configure-stamp build-stamp install-stamp + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) install DESTDIR=$(TARGET_DIR) + + # FIXME: it would be nice to make these into separate packages + ( cd samples && $(MAKE) install.examples DESTDIR=$(TARGET_DIR) BINDIR=$(SAMPLE_DIR) ) + ( cd doc && $(MAKE) install.html DESTDIR=$(TARGET_DIR) ) + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# No binary-indep target. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installdocs + dh_installexamples + dh_installchangelogs NEWS + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_makeshlibs + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/deps/ncurses-5.9/Ada95/package/debian/source/format b/deps/ncurses-6.3/Ada95/package/debian/source/format similarity index 100% rename from deps/ncurses-5.9/Ada95/package/debian/source/format rename to deps/ncurses-6.3/Ada95/package/debian/source/format diff --git a/deps/ncurses-6.3/Ada95/package/debian/watch b/deps/ncurses-6.3/Ada95/package/debian/watch new file mode 100644 index 0000000..1b870ba --- /dev/null +++ b/deps/ncurses-6.3/Ada95/package/debian/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/AdaCurses/AdaCurses-([\d.]+)\.tgz \ + debian uupdate diff --git a/deps/ncurses-6.3/Ada95/samples/Makefile.in b/deps/ncurses-6.3/Ada95/samples/Makefile.in new file mode 100644 index 0000000..3731085 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/samples/Makefile.in @@ -0,0 +1,186 @@ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,2018 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, 1996 +# +# $Id: Makefile.in,v 1.64 2021/07/03 15:45:33 tom Exp $ +# +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +x = @EXEEXT@ + +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +libdir = @libdir@ +includedir = @includedir@ + +INSTALL = @INSTALL@ @INSTALL_OPT_O@ +INSTALL_DATA = @INSTALL_DATA@ + +AWK = @AWK@ +LN_S = @LN_S@ + +CC = @CC@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ + +CPPFLAGS = @ACPPFLAGS@ \ + -DHAVE_CONFIG_H -I$(srcdir) + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ +LOCAL_LIBDIR = @top_builddir@/lib + +LINK = $(CC) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + +RANLIB = @RANLIB@ +################################################################################ +BINDIR = $(DESTDIR)$(bindir) +DATADIR = $(DESTDIR)$(datadir) +LIBDIR = $(DESTDIR)$(libdir) + +MY_DATADIR = $(DATADIR)/@ADA_LIBNAME@ +THIS_DATADIR = $(datadir)/@ADA_LIBNAME@ + +################################################################################ +ada_srcdir = ../src + +LD_FLAGS = @LD_MODEL@ $(LOCAL_LIBS) @LDFLAGS@ @LIBS@ @LOCAL_LDFLAGS2@ $(LDFLAGS) + +ADA = @cf_ada_compiler@ +ADAPREP = gnatprep +ADAFLAGS = @ADAFLAGS@ -I$(srcdir) + +ADAMAKE = @cf_ada_make@ +ADAMAKEFLAGS = -a \ + -A$(srcdir) \ + -A$(ada_srcdir) \ + -A$(srcdir)/$(ada_srcdir) + +ALIB = @cf_ada_package@ +ABASE = $(ALIB)-curses +THISLIB = sample + +CARGS = -cargs $(ADAFLAGS) +LARGS = -largs -L../lib -l@ADA_LIBNAME@ @TEST_ARG2@ $(LD_FLAGS) @TEST_LIBS2@ + +PROGS = tour$x ncurses$x @USE_GNAT_SIGINT@ rain$x + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.examples +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.examples +@MAKE_PHONY@.PHONY : uninstall.libs + +all :: $(PROGS) + @echo made $@ + +sources : + @echo made $@ + +libs \ +install \ +install.libs :: + @echo made $@ + +uninstall \ +uninstall.libs :: + @echo made $@ + +install.examples :: $(BINDIR) $(PROGS) + $(INSTALL) $(PROGS) $(BINDIR) + +install.examples :: $(MY_DATADIR) + $(INSTALL_DATA) explain.txt $(MY_DATADIR) + +uninstall.examples :: + -( cd $(BINDIR) && rm -f $(PROGS) ) + -rmdir $(BINDIR) + -rm -f $(MY_DATADIR)/explain.txt + -rmdir $(MY_DATADIR) + +$(BINDIR) \ +$(MY_DATADIR) : + mkdir -p $@ + +AUTO_SRC = $(THISLIB)-explanation.adb + +ncurses$x : $(AUTO_SRC) + $(ADAMAKE) $(ADAMAKEFLAGS) ncurses $(CARGS) $(LARGS) + +tour$x : $(AUTO_SRC) + $(ADAMAKE) $(ADAMAKEFLAGS) tour $(CARGS) $(LARGS) + +rain$x : $(AUTO_SRC) + $(ADAMAKE) $(ADAMAKEFLAGS) rain $(CARGS) $(LARGS) + +mostlyclean: + @echo made $@ + +clean :: mostlyclean + rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] \ + rm -f $(AUTO_SRC) + rm -f trace screendump b~*.ad[bs] + +distclean :: clean + rm -f Makefile + +realclean :: distclean + @echo made $@ + +$(THISLIB)-explanation.adb : $(srcdir)/$(THISLIB)-explanation.adb_p + rm -f $@ + $(AWK) -v this_datadir=$(THIS_DATADIR) -f $(srcdir)/split-path.awk < $(srcdir)/$(THISLIB)-explanation.adb_p >$@ diff --git a/deps/ncurses-6.3/Ada95/samples/README b/deps/ncurses-6.3/Ada95/samples/README new file mode 100644 index 0000000..8562343 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/samples/README @@ -0,0 +1,36 @@ +------------------------------------------------------------------------------- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998,2006 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. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.3 2020/02/02 23:34:34 tom Exp $ +------------------------------------------------------------------------------- + +The intention of the demo at this point in time is not to demonstrate all +the features of (n)curses and its subsystems, but to give some sample +sources how to use the binding at all. + +Ideally in the future we can combine both goals. diff --git a/deps/ncurses-5.9/Ada95/samples/explain.txt b/deps/ncurses-6.3/Ada95/samples/explain.txt similarity index 85% rename from deps/ncurses-5.9/Ada95/samples/explain.txt rename to deps/ncurses-6.3/Ada95/samples/explain.txt index be2cba1..f05eede 100644 --- a/deps/ncurses-5.9/Ada95/samples/explain.txt +++ b/deps/ncurses-6.3/Ada95/samples/explain.txt @@ -27,15 +27,15 @@ In a menu you can use the following Keys in the whole application: - Cursor Right Right one item - END Key Go to last item #FORMKEYS - - CTRL-X eXit the form + - CTRL-X eXit the form - CTRL-F Go forward to the next field - CTRL-B Go backward to the previous field - - CTRL-L Go to the field left of the current one + - CTRL-L Go to the field left of the current one - CTRL-R Go to the field right of the current one - - CTRL-U Go to the field above the current one - - CTRL-D Go to the field below the current one + - CTRL-U Go to the field above the current one + - CTRL-D Go to the field below the current one - - CTRL-W Go to the next word in the field + - CTRL-W Go to the next word in the field - CTRL-T Go to the previous word in the field - CTRL-A Go to the beginning of the field @@ -43,13 +43,13 @@ In a menu you can use the following Keys in the whole application: - CTRL-I Insert a blank character at the current position - CTRL-O Insert a line - - CTRL-V Delete a character - - CTRL-H Delete previous character - - CTRL-Y Delete a line - - CTRL-G Delete a word - - CTRL-K Clear to end of field + - CTRL-V Delete a character + - CTRL-H Delete previous character + - CTRL-Y Delete a line + - CTRL-G Delete a word + - CTRL-K Clear to end of field - - CTRL-N Next choice in a choice field (Enumerations etc.) + - CTRL-N Next choice in a choice field (Enumerations etc.) - CTRL-P Previous choice in a choice field. #HELP #HELPKEYS @@ -61,8 +61,8 @@ You may leave the help with the Function Key labeled 'Quit'. #MAIN This is the main menu of the sample program for the ncurses Ada95 binding. The main intention of the demo is not to demonstrate or -test all the features of ncurses and it's subsystems, but to provide -to you some sample code how to use the binding with Ada95. +test all the features of ncurses and its subsystems, but to provide +to you some sample code how to use the binding with Ada95. You may select this options: @@ -71,7 +71,7 @@ You may select this options: * Look at some features of the form subsystem * Look at the output of the Ada.Text_IO like functions for ncurses. - + #MAINPAD You may press at any place in this demo CTRL-C. This will give you a command window. You can just type in the Label-String of a function key, then this @@ -86,13 +86,13 @@ descriptions for the items, a marker and a padding character between the item name and the description. #MENU01 This is a demo of the some of the menu layout options. One of them -is the spacing functionality. Just press the Key labeled "Flip" to +is the spacing functionality. Just press the Key labeled "Flip" to flip between the non-spaced and a spaced version of the menu. Please -note that this functionality is unique for ncurses and is not found -in the SVr4 menu implementation. +note that this functionality is unique for ncurses and is not found +in the SVr4 menu implementation. -This is a menu that sometimes does not fit into it's window and -therefore it becomes a scroll menu. +This is a menu that sometimes does not fit into its window and +therefore it becomes a scroll menu. You can also see here very nicely the pattern matching functionality of menus. Type for example a 'J' and you will be positioned to the @@ -106,10 +106,10 @@ labeled "4x1", "4x2" or "4x3" to get a menu with that many rows and columns. With the Keys "O-Row" or "O-Col" (they occupy the same label and -switch on selection) you can change the major order scheme for +switch on selection) you can change the major order scheme for the menu. If "O-Col" is visible, the menu is currently major ordered by rows, you can switch to major column order by pressing -the key. If "O-Row" is visible, it's just the reverse situation. +the key. If "O-Row" is visible, it is just the reverse situation. This Key is not visible in "4x1" layout mode, because in this case the functionality makes no sense. @@ -136,7 +136,7 @@ For more details press the Key labeled "Help". This is a demo of the forms package. #FORM-PAD00 Please note that this demo is far from being complete. It really shows -only a small part of the functionality of the forms package. Let's hope +only a small part of the functionality of the forms package. Let's hope the next version will have a richer demo (You want to contribute ?). #NOTIMPL Sorry this functionality of the demo is not implemented at the moment. @@ -148,7 +148,7 @@ This is a menu where you can select some different demos of the ncurses functionality. #CURSES-PAD00 Please note that this demo is far from being complete. It really shows -only a small part of the functionality of the curses package. Let's hope +only a small part of the functionality of the curses package. Let's hope the next version will have a richer demo (You want to contribute ?). #MOUSEKEYS In this demo you may use this keys: @@ -160,16 +160,16 @@ In this demo you may use this keys: You may click the mouse buttons at any location at the screen and look at the protocol window ! #MOUSE00 -A rather simple use of a mouse as demo. It's there just to test the -code and to provide the sample source. +A rather simple use of a mouse as demo. It is there just to test the +code and to provide the sample source. It might be of interest, that the output into the protocol window is done by the (n)curses Text_IO subpackages. Especially the output of -the button and state names is done by Ads's enumeration IO, which +the button and state names is done by Ads's enumeration IO, which allows you to print the names of enumeration literals. That's really nice. #MOUSE-PAD00 -This is a very simple demo of the mouse features of ncurses. It's there +This is a very simple demo of the mouse features of ncurses. It is there just to test whether or not the generated code for the binding really works on the different architectures (seems so). #ATTRIBDEMO diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses.adb b/deps/ncurses-6.3/Ada95/samples/ncurses.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses.adb index 19f658d..39ba7dc 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.m; use ncurses2.m; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_and_scroll.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_and_scroll.adb similarity index 99% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-acs_and_scroll.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-acs_and_scroll.adb index 00e9afc..7bb492c 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_and_scroll.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_and_scroll.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 2000-2009,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.11 $ --- $Date: 2011/03/23 00:33:00 $ +-- $Revision: 1.13 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- Windows and scrolling tester. @@ -226,14 +227,11 @@ procedure ncurses2.acs_and_scroll is mypair : pair; - use Ada.Strings.Fixed; - begin Move_Cursor (Line => Lines - 4, Column => 0); for n in legend'Range loop pos := Ada.Strings.Fixed.Index (Source => legend (n).msg.all, Pattern => "%s"); - -- buf := (others => ' '); buf := To_Bounded_String (legend (n).msg.all); case legend (n).code is when 0 => null; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_and_scroll.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_and_scroll.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-acs_and_scroll.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-acs_and_scroll.ads index 79e4862..bd2759a 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_and_scroll.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_and_scroll.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.acs_and_scroll; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_display.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_display.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-acs_display.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-acs_display.adb index a71c61d..2916e15 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_display.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_display.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2006,2008 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.6 $ --- $Date: 2008/07/26 18:47:34 $ +-- $Revision: 1.7 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_display.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_display.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-acs_display.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-acs_display.ads index 4e616c5..d685e58 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-acs_display.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-acs_display.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.acs_display; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-attr_test.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-attr_test.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-attr_test.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-attr_test.adb index 6627104..b41cc80 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-attr_test.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-attr_test.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2007,2008 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2007,2008 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.9 $ --- $Date: 2008/07/26 18:47:26 $ +-- $Revision: 1.10 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-attr_test.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-attr_test.ads similarity index 93% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-attr_test.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-attr_test.ads index 51c5143..08931ee 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-attr_test.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-attr_test.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000,2006 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.2 $ --- $Date: 2006/06/25 14:24:40 $ +-- $Revision: 1.3 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.attr_test; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_edit.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_edit.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-color_edit.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-color_edit.adb index 098f98d..7c30c66 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_edit.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_edit.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2006,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.6 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.7 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_edit.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_edit.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-color_edit.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-color_edit.ads index 3e8e392..a44889b 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_edit.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_edit.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.color_edit; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_test.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_test.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-color_test.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-color_test.adb index c8f6c83..ca35e04 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_test.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_test.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2006,2008 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.3 $ --- $Date: 2008/07/26 18:47:17 $ +-- $Revision: 1.4 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_test.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_test.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-color_test.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-color_test.ads index 6e66318..e927fdd 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-color_test.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-color_test.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.color_test; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_forms.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_forms.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-demo_forms.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-demo_forms.adb index 1afbb88..b2d72ba 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_forms.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_forms.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2011 Free Software Foundation, Inc. -- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 2000-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.6 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.9 $ +-- $Date: 2021/09/04 10:52:55 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; @@ -317,8 +318,9 @@ procedure ncurses2.demo_forms is function my_form_driver (f : Form; c : Key_Code) return Boolean is flag : constant Driver_Result := Driver (f, F_Validate_Field); begin - if c = Form_Request_Code'Last + 1 - and flag = Form_Ok then + if c = Form_Request_Code'Last + 1 and + flag = Form_Ok + then return True; else Beep; @@ -379,7 +381,7 @@ procedure ncurses2.demo_forms is Set_KeyPad_Mode (w, True); end if; - -- TODO if Post(f) /= Form_Ok then it's a procedure + -- TODO if Post(f) /= Form_Ok then it is a procedure declare begin Post (f); diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_forms.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_forms.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-demo_forms.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-demo_forms.ads index eabaa01..775e777 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_forms.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_forms.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.demo_forms; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_pad.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_pad.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-demo_pad.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-demo_pad.adb index b1b72ae..86bfb2d 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_pad.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_pad.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.8 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.11 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; @@ -437,7 +438,8 @@ procedure ncurses2.demo_pad is -- pan rightwards -- if (basex + portx - (pymax > porty) < pxmax) if basex + portx - - Column_Position (greater (pymax, porty)) < pxmax then + Column_Position (greater (pymax, porty)) < pxmax + then -- if basex + portx < pxmax or -- (pymax > porty and basex + portx - 1 < pxmax) then basex := basex + 1; @@ -457,7 +459,8 @@ procedure ncurses2.demo_pad is -- pan downwards -- same as if (basey + porty - (pxmax > portx) < pymax) if basey + porty - - Line_Position (greater (pxmax, portx)) < pymax then + Line_Position (greater (pxmax, portx)) < pymax + then -- if (basey + porty < pymax) or -- (pxmax > portx and basey + porty - 1 < pymax) then basey := basey + 1; @@ -486,7 +489,7 @@ procedure ncurses2.demo_pad is -- more writing off the screen. -- Interestingly, the exception is not handled if -- we put a block around this. - -- delcare --begin + -- declare --begin if top_y /= 0 and top_x /= 0 then Add (Line => top_y - 1, Column => top_x - 1, Ch => ACS_Map (ACS_Upper_Left_Corner)); @@ -577,7 +580,7 @@ procedure ncurses2.demo_pad is declare -- the C version allows the panel to have a zero height - -- wich raise the exception + -- which raise the exception begin Refresh_Without_Update ( diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_pad.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_pad.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-demo_pad.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-demo_pad.ads index b996263..f110632 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_pad.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_pad.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.demo_pad; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_panels.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_panels.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-demo_panels.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-demo_panels.adb index 9693e1a..aa6ca36 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_panels.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_panels.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 2000-2008,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.7 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.9 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; @@ -47,7 +48,6 @@ with Terminal_Interface.Curses.Panels.User_Data; with ncurses2.genericPuts; procedure ncurses2.demo_panels (nap_mseci : Integer) is - use Int_IO; function mkpanel (color : Color_Number; rows : Line_Count; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_panels.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_panels.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-demo_panels.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-demo_panels.ads index eb2878c..a35842d 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-demo_panels.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-demo_panels.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.demo_panels (nap_mseci : Integer); diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-flushinp_test.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-flushinp_test.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-flushinp_test.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-flushinp_test.adb index 9ea98e1..eca4733 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-flushinp_test.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-flushinp_test.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-flushinp_test.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-flushinp_test.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-flushinp_test.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-flushinp_test.ads index 5376c94..ca8244e 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-flushinp_test.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-flushinp_test.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-genericputs.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-genericputs.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-genericputs.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-genericputs.adb index 829d08d..71d1c16 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-genericputs.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-genericputs.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2008,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2008,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.4 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.5 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-genericputs.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-genericputs.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-genericputs.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-genericputs.ads index accc3cc..41f2c9b 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-genericputs.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-genericputs.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2006,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.3 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.4 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-getch.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-getch.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-getch.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-getch.ads index 21a09f3..7fabce9 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-getch.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-getch.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure getch_test; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-getch_test.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-getch_test.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-getch_test.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-getch_test.adb index 2802cfb..8bcb7a4 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-getch_test.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-getch_test.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2008,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2009,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.8 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.10 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- Character input test @@ -210,8 +211,10 @@ begin end; elsif c = Character'Pos ('s') then ShellOut (True); - elsif c = Character'Pos ('x') or c = Character'Pos ('q') or - (c = Key_None and blockflag = Blocking) then + elsif c = Character'Pos ('x') or + c = Character'Pos ('q') or + (c = Key_None and blockflag = Blocking) + then exit; elsif c = Character'Pos ('?') then Add (Str => "Type any key to see its keypad value. Also:"); diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-getch_test.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-getch_test.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-getch_test.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-getch_test.ads index 78a0a48..01e1928 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-getch_test.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-getch_test.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.getch_test; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-getopt.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-getopt.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-getopt.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-getopt.adb index 29f1fee..7c902f9 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-getopt.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-getopt.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2008,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.8 $ --- $Date: 2011/03/19 12:09:51 $ +-- $Revision: 1.9 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- A simplified version of the GNU getopt function diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-getopt.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-getopt.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-getopt.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-getopt.ads index a8b356e..09d997c 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-getopt.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-getopt.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000,2006 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.2 $ --- $Date: 2006/06/25 14:24:40 $ +-- $Revision: 1.3 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package ncurses2.getopt is diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-m.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-m.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-m.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-m.adb index 5b20428..e8a837d 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-m.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-m.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 2000-2007,2008 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.8 $ --- $Date: 2008/07/26 18:47:50 $ +-- $Revision: 1.11 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- TODO use Default_Character where appropriate @@ -50,7 +51,6 @@ with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace; with Ada.Text_IO; use Ada.Text_IO; with Ada.Characters.Latin_1; --- with Ada.Characters.Handling; with Ada.Command_Line; use Ada.Command_Line; @@ -76,7 +76,6 @@ with ncurses2.trace_set; with ncurses2.getopt; use ncurses2.getopt; package body ncurses2.m is - use Int_IO; function To_trace (n : Integer) return Trace_Attribute_Set; procedure usage; @@ -188,7 +187,7 @@ package body ncurses2.m is Erase (Win); Move_Cursor (Win, 0, 0); Add (Win, "header:" & Columns'Img & " columns"); - -- 'Img is a GNAT extention + -- 'Img is a GNAT extension Refresh_Without_Update (Win); return 0; -- Curses_OK; end rip_header; @@ -304,7 +303,6 @@ package body ncurses2.m is tmpi : Integer; package myio is new Ada.Text_IO.Integer_IO (Integer); - use myio; save_trace : Integer := 0; save_trace_set : Trace_Attribute_Set; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-m.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-m.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-m.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-m.ads index c32d895..3c87da7 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-m.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-m.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package ncurses2.m is diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-menu_test.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-menu_test.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-menu_test.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-menu_test.adb index bce9782..721f750 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-menu_test.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-menu_test.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2006,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.8 $ --- $Date: 2011/03/23 00:39:28 $ +-- $Revision: 1.9 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-menu_test.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-menu_test.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-menu_test.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-menu_test.ads index 17e5b16..1b7e74b 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-menu_test.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-menu_test.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.menu_test; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-overlap_test.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-overlap_test.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-overlap_test.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-overlap_test.adb index ddf8a9a..c0fd620 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-overlap_test.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-overlap_test.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2004,2011 Free Software Foundation, Inc. -- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 2000-2014,2015 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.5 $ --- $Date: 2011/03/19 12:07:18 $ +-- $Revision: 1.9 $ +-- $Date: 2021/09/04 10:52:55 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; @@ -72,8 +73,9 @@ procedure ncurses2.overlap_test is Get_Size (win, y1, x1); for y in 0 .. y1 - 1 loop for x in 0 .. x1 - 1 loop - if ((x > (x1 - 1) / 3) and (x <= (2 * (x1 - 1)) / 3)) - or (((y > (y1 - 1) / 3) and (y <= (2 * (y1 - 1)) / 3))) then + if ((x > (x1 - 1) / 3) and (x <= (2 * (x1 - 1)) / 3)) or + (((y > (y1 - 1) / 3) and (y <= (2 * (y1 - 1)) / 3))) + then Move_Cursor (win, y, x); Add (win, Ch => ch); end if; @@ -93,7 +95,7 @@ begin Add (Str => "This test shows the behavior of wnoutrefresh() with " & "respect to"); Add (Ch => newl); - Add (Str => "the shared region of two overlapping windows A and B. "& + Add (Str => "the shared region of two overlapping windows A and B. " & "The cross"); Add (Ch => newl); Add (Str => "pattern in each window does not overlap the other."); @@ -128,9 +130,9 @@ begin Refresh_Without_Update (win2); Refresh_Without_Update (win1); Update_Screen; - when 'c' => -- fill window A so it's visible + when 'c' => -- fill window A so it is visible fillwin (win1, 'A'); - when 'd' => -- fill window B so it's visible + when 'd' => -- fill window B so it is visible fillwin (win2, 'B'); when 'e' => -- cross test pattern in window A crosswin (win1, 'A'); diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-overlap_test.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-overlap_test.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-overlap_test.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-overlap_test.ads index ce6e3e6..d6589ea 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-overlap_test.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-overlap_test.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.overlap_test; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-slk_test.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-slk_test.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-slk_test.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-slk_test.adb index aa368ba..4971ed6 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-slk_test.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-slk_test.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 2000-2009,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.9 $ --- $Date: 2011/03/19 12:03:08 $ +-- $Revision: 1.11 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; @@ -76,8 +77,6 @@ procedure ncurses2.slk_test is Str := To_Unbounded_String (To_Ada (Txt, True)); end myGet; - use Int_IO; - use Ada.Strings.Unbounded; c : Key_Code; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-slk_test.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-slk_test.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-slk_test.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-slk_test.ads index 51e9587..1aff9d0 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-slk_test.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-slk_test.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.slk_test; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-test_sgr_attributes.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-test_sgr_attributes.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-test_sgr_attributes.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-test_sgr_attributes.adb index 97449a4..ac6df4a 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-test_sgr_attributes.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-test_sgr_attributes.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000,2006 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.2 $ --- $Date: 2006/06/25 14:24:40 $ +-- $Revision: 1.3 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-test_sgr_attributes.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-test_sgr_attributes.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-test_sgr_attributes.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-test_sgr_attributes.ads index 2411180..5589547 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-test_sgr_attributes.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-test_sgr_attributes.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.test_sgr_attributes; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-trace_set.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-trace_set.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-trace_set.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-trace_set.adb index 7537afe..d273980 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-trace_set.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-trace_set.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.5 $ --- $Date: 2011/03/23 00:40:33 $ +-- $Revision: 1.7 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with ncurses2.util; use ncurses2.util; @@ -141,7 +142,8 @@ procedure ncurses2.trace_set is (super.Internal_Calls or not sub.Internal_Calls) and (super.Character_Calls or not sub.Character_Calls) and (super.Termcap_TermInfo or not sub.Termcap_TermInfo) and - True then + True + then return True; else return False; @@ -250,93 +252,107 @@ procedure ncurses2.trace_set is else if subset (tlevel, - Trace_Attribute_Set'(Times => True, others => False)) then + Trace_Attribute_Set'(Times => True, others => False)) + then Append (buf, "Times"); Append (buf, ", "); end if; if subset (tlevel, - Trace_Attribute_Set'(Tputs => True, others => False)) then + Trace_Attribute_Set'(Tputs => True, others => False)) + then Append (buf, "Tputs"); Append (buf, ", "); end if; if subset (tlevel, - Trace_Attribute_Set'(Update => True, others => False)) then + Trace_Attribute_Set'(Update => True, others => False)) + then Append (buf, "Update"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(Cursor_Move => True, - others => False)) then + others => False)) + then Append (buf, "Cursor_Move"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(Character_Output => True, - others => False)) then + others => False)) + then Append (buf, "Character_Output"); Append (buf, ", "); end if; if subset (tlevel, - Trace_Ordinary) then + Trace_Ordinary) + then Append (buf, "Ordinary"); Append (buf, ", "); end if; if subset (tlevel, - Trace_Attribute_Set'(Calls => True, others => False)) then + Trace_Attribute_Set'(Calls => True, others => False)) + then Append (buf, "Calls"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(Virtual_Puts => True, - others => False)) then + others => False)) + then Append (buf, "Virtual_Puts"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(Input_Events => True, - others => False)) then + others => False)) + then Append (buf, "Input_Events"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(TTY_State => True, - others => False)) then + others => False)) + then Append (buf, "TTY_State"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(Internal_Calls => True, - others => False)) then + others => False)) + then Append (buf, "Internal_Calls"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(Character_Calls => True, - others => False)) then + others => False)) + then Append (buf, "Character_Calls"); Append (buf, ", "); end if; if subset (tlevel, Trace_Attribute_Set'(Termcap_TermInfo => True, - others => False)) then + others => False)) + then Append (buf, "Termcap_TermInfo"); Append (buf, ", "); end if; if subset (tlevel, - Trace_Maximum) then + Trace_Maximum) + then Append (buf, "Maximium"); Append (buf, ", "); end if; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-trace_set.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-trace_set.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-trace_set.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-trace_set.ads index 7bbf8ca..352736c 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-trace_set.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-trace_set.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure ncurses2.trace_set; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-util.adb b/deps/ncurses-6.3/Ada95/samples/ncurses2-util.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-util.adb rename to deps/ncurses-6.3/Ada95/samples/ncurses2-util.adb index 8ae3272..152a5d3 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-util.adb +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-util.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2008,2014 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 -- @@ -35,16 +36,12 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.7 $ --- $Date: 2008/07/26 18:51:20 $ +-- $Revision: 1.10 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; use Ada.Text_IO; -pragma Warnings (Off); -with Terminal_Interface.Curses.Aux; -pragma Warnings (On); - with Terminal_Interface.Curses.Trace; use Terminal_Interface.Curses.Trace; with Interfaces.C; @@ -115,7 +112,6 @@ package body ncurses2.util is procedure Cannot (s : String) is use Interfaces.C; use Interfaces.C.Strings; - use Terminal_Interface.Curses.Aux; function getenv (x : char_array) return chars_ptr; pragma Import (C, getenv, "getenv"); tmp1 : char_array (0 .. 10); diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2-util.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2-util.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/ncurses2-util.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2-util.ads index f46749f..5d71d73 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2-util.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2-util.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000,2006 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000,2006 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.2 $ --- $Date: 2006/06/25 14:24:40 $ +-- $Revision: 1.3 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/ncurses2.ads b/deps/ncurses-6.3/Ada95/samples/ncurses2.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/ncurses2.ads rename to deps/ncurses-6.3/Ada95/samples/ncurses2.ads index 2fe0197..42e66f3 100644 --- a/deps/ncurses-5.9/Ada95/samples/ncurses2.ads +++ b/deps/ncurses-6.3/Ada95/samples/ncurses2.ads @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Eugene V. Melaragno 2000 -- Version Control --- $Revision: 1.1 $ +-- $Revision: 1.2 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/samples/rain.adb b/deps/ncurses-6.3/Ada95/samples/rain.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/rain.adb rename to deps/ncurses-6.3/Ada95/samples/rain.adb index d673018..2649252 100644 --- a/deps/ncurses-5.9/Ada95/samples/rain.adb +++ b/deps/ncurses-6.3/Ada95/samples/rain.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2007,2008 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 -- @@ -36,8 +37,8 @@ -- Author: Laurent Pautet -- Modified by: Juergen Pfeifer, 1997 -- Version Control --- $Revision: 1.8 $ --- $Date: 2008/08/30 21:38:07 $ +-- $Revision: 1.9 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- -- diff --git a/deps/ncurses-5.9/Ada95/samples/rain.ads b/deps/ncurses-6.3/Ada95/samples/rain.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/rain.ads rename to deps/ncurses-6.3/Ada95/samples/rain.ads index 3ad1912..20ec065 100644 --- a/deps/ncurses-5.9/Ada95/samples/rain.ads +++ b/deps/ncurses-6.3/Ada95/samples/rain.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -36,7 +37,7 @@ -- Author: Laurent Pautet -- Modified by: Juergen Pfeifer, 1997 -- Version Control --- $Revision: 1.6 $ +-- $Revision: 1.8 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- -- diff --git a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-attributes.adb b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-attributes.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/sample-curses_demo-attributes.adb rename to deps/ncurses-6.3/Ada95/samples/sample-curses_demo-attributes.adb index c49f37d..ed93711 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-attributes.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-attributes.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.12 $ +-- $Revision: 1.14 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-attributes.ads b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-attributes.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-curses_demo-attributes.ads rename to deps/ncurses-6.3/Ada95/samples/sample-curses_demo-attributes.ads index 6d9b4e8..636c12f 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-attributes.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-attributes.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Sample.Curses_Demo.Attributes is diff --git a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-mouse.adb b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-mouse.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/sample-curses_demo-mouse.adb rename to deps/ncurses-6.3/Ada95/samples/sample-curses_demo-mouse.adb index 490685c..d388e4c 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-mouse.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-mouse.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2008 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.16 $ --- $Date: 2008/07/26 18:48:19 $ +-- $Revision: 1.17 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-mouse.ads b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-mouse.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-curses_demo-mouse.ads rename to deps/ncurses-6.3/Ada95/samples/sample-curses_demo-mouse.ads index ad78d0d..fbaebab 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo-mouse.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo-mouse.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Sample.Curses_Demo.Mouse is diff --git a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo.adb b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/sample-curses_demo.adb rename to deps/ncurses-6.3/Ada95/samples/sample-curses_demo.adb index 4dd96a7..f342a32 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2004,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2004,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.17 $ --- $Date: 2011/03/23 00:29:04 $ +-- $Revision: 1.18 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo.ads b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-curses_demo.ads rename to deps/ncurses-6.3/Ada95/samples/sample-curses_demo.ads index ed4ad0f..264c4c0 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-curses_demo.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-curses_demo.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Sample.Curses_Demo is diff --git a/deps/ncurses-6.3/Ada95/samples/sample-explanation.adb_p b/deps/ncurses-6.3/Ada95/samples/sample-explanation.adb_p new file mode 100644 index 0000000..f99ceb6 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/samples/sample-explanation.adb_p @@ -0,0 +1,441 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding Samples -- +-- -- +-- Sample.Explanation -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright 2019,2020 Thomas E. Dickey -- +-- -- +-- 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, 1996 +-- Version Control +-- $Revision: 1.5 $ +-- $Date: 2020/02/02 23:34:34 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +-- Poor mans help system. This scans a sequential file for key lines and +-- then reads the lines up to the next key. Those lines are presented in +-- a window as help or explanation. +-- +with Ada.Text_IO; use Ada.Text_IO; +with Ada.Unchecked_Deallocation; +with Terminal_Interface.Curses; use Terminal_Interface.Curses; +with Terminal_Interface.Curses.Panels; use Terminal_Interface.Curses.Panels; + +with Sample.Keyboard_Handler; use Sample.Keyboard_Handler; +with Sample.Manifest; use Sample.Manifest; +with Sample.Function_Key_Setting; use Sample.Function_Key_Setting; +with Sample.Helpers; use Sample.Helpers; + +package body Sample.Explanation is + + Help_Keys : constant String := "HELPKEYS"; + In_Help : constant String := "INHELP"; + + File_Name : constant String := "explain.txt"; + F : File_Type; + + type Help_Line; + type Help_Line_Access is access Help_Line; + pragma Controlled (Help_Line_Access); + type String_Access is access String; + pragma Controlled (String_Access); + + type Help_Line is + record + Prev, Next : Help_Line_Access; + Line : String_Access; + end record; + + procedure Explain (Key : String; + Win : Window); + + procedure Release_String is + new Ada.Unchecked_Deallocation (String, + String_Access); + procedure Release_Help_Line is + new Ada.Unchecked_Deallocation (Help_Line, + Help_Line_Access); + + function Search (Key : String) return Help_Line_Access; + procedure Release_Help (Root : in out Help_Line_Access); + + function Check_File (Name : String) return Boolean; + + procedure Explain (Key : String) + is + begin + Explain (Key, Null_Window); + end Explain; + + procedure Explain (Key : String; + Win : Window) + is + -- Retrieve the text associated with this key and display it in this + -- window. If no window argument is passed, the routine will create + -- a temporary window and use it. + + function Filter_Key return Real_Key_Code; + procedure Unknown_Key; + procedure Redo; + procedure To_Window (C : in out Help_Line_Access; + More : in out Boolean); + + Frame : Window := Null_Window; + + W : Window := Win; + K : Real_Key_Code; + P : Panel; + + Height : Line_Count; + Width : Column_Count; + Help : Help_Line_Access := Search (Key); + Current : Help_Line_Access; + Top_Line : Help_Line_Access; + + Has_More : Boolean := True; + + procedure Unknown_Key + is + begin + Add (W, "Help message with ID "); + Add (W, Key); + Add (W, " not found."); + Add (W, Character'Val (10)); + Add (W, "Press the Function key labeled 'Quit' key to continue."); + end Unknown_Key; + + procedure Redo + is + H : Help_Line_Access := Top_Line; + begin + if Top_Line /= null then + for L in 0 .. (Height - 1) loop + Add (W, L, 0, H.all.Line.all); + exit when H.all.Next = null; + H := H.all.Next; + end loop; + else + Unknown_Key; + end if; + end Redo; + + function Filter_Key return Real_Key_Code + is + K : Real_Key_Code; + begin + loop + K := Get_Key (W); + if K in Special_Key_Code'Range then + case K is + when HELP_CODE => + if not Find_Context (In_Help) then + Push_Environment (In_Help, False); + Explain (In_Help, W); + Pop_Environment; + Redo; + end if; + when EXPLAIN_CODE => + if not Find_Context (Help_Keys) then + Push_Environment (Help_Keys, False); + Explain (Help_Keys, W); + Pop_Environment; + Redo; + end if; + when others => exit; + end case; + else + exit; + end if; + end loop; + return K; + end Filter_Key; + + procedure To_Window (C : in out Help_Line_Access; + More : in out Boolean) + is + L : Line_Position := 0; + begin + loop + Add (W, L, 0, C.all.Line.all); + L := L + 1; + exit when C.all.Next = null or else L = Height; + C := C.all.Next; + end loop; + if C.all.Next /= null then + pragma Assert (L = Height); + More := True; + else + More := False; + end if; + end To_Window; + + begin + if W = Null_Window then + Push_Environment ("HELP"); + Default_Labels; + Frame := New_Window (Lines - 2, Columns, 0, 0); + if Has_Colors then + Set_Background (Win => Frame, + Ch => (Ch => ' ', + Color => Help_Color, + Attr => Normal_Video)); + Set_Character_Attributes (Win => Frame, + Attr => Normal_Video, + Color => Help_Color); + Erase (Frame); + end if; + Box (Frame); + Set_Character_Attributes (Frame, (Reverse_Video => True, + others => False)); + Add (Frame, Lines - 3, 2, "Cursor Up/Down scrolls"); + Set_Character_Attributes (Frame); -- Back to default. + Window_Title (Frame, "Explanation"); + W := Derived_Window (Frame, Lines - 4, Columns - 2, 1, 1); + Refresh_Without_Update (Frame); + Get_Size (W, Height, Width); + Set_Meta_Mode (W); + Set_KeyPad_Mode (W); + Allow_Scrolling (W, True); + Set_Echo_Mode (False); + P := Create (Frame); + Top (P); + Update_Panels; + else + Clear (W); + Refresh_Without_Update (W); + end if; + + Current := Help; Top_Line := Help; + + if null = Help then + Unknown_Key; + loop + K := Filter_Key; + exit when K = QUIT_CODE; + end loop; + else + To_Window (Current, Has_More); + if Has_More then + -- This means there are more lines available, so we have to go + -- into a scroll manager. + loop + K := Filter_Key; + if K in Special_Key_Code'Range then + case K is + when Key_Cursor_Down => + if Current.all.Next /= null then + Move_Cursor (W, Height - 1, 0); + Scroll (W, 1); + Current := Current.all.Next; + Top_Line := Top_Line.all.Next; + Add (W, Current.all.Line.all); + end if; + when Key_Cursor_Up => + if Top_Line.all.Prev /= null then + Move_Cursor (W, 0, 0); + Scroll (W, -1); + Top_Line := Top_Line.all.Prev; + Current := Current.all.Prev; + Add (W, Top_Line.all.Line.all); + end if; + when QUIT_CODE => exit; + when others => null; + end case; + end if; + end loop; + else + loop + K := Filter_Key; + exit when K = QUIT_CODE; + end loop; + end if; + end if; + + Clear (W); + + if Frame /= Null_Window then + Clear (Frame); + Delete (P); + Delete (W); + Delete (Frame); + Pop_Environment; + end if; + + Update_Panels; + Update_Screen; + + Release_Help (Help); + + end Explain; + + function Search (Key : String) return Help_Line_Access + is + Last : Natural; + Buffer : String (1 .. 256); + Root : Help_Line_Access := null; + Current : Help_Line_Access; + Tail : Help_Line_Access := null; + + function Next_Line return Boolean; + + function Next_Line return Boolean + is + H_End : constant String := "#END"; + begin + Get_Line (F, Buffer, Last); + if Last = H_End'Length and then H_End = Buffer (1 .. Last) then + return False; + else + return True; + end if; + end Next_Line; + begin + Reset (F); + Outer : + loop + exit Outer when not Next_Line; + if Last = (1 + Key'Length) + and then Key = Buffer (2 .. Last) + and then Buffer (1) = '#' + then + loop + exit when not Next_Line; + exit when Buffer (1) = '#'; + Current := new Help_Line'(null, null, + new String'(Buffer (1 .. Last))); + if Tail = null then + Release_Help (Root); + Root := Current; + else + Tail.all.Next := Current; + Current.all.Prev := Tail; + end if; + Tail := Current; + end loop; + exit Outer; + end if; + end loop Outer; + return Root; + end Search; + + procedure Release_Help (Root : in out Help_Line_Access) + is + Next : Help_Line_Access; + begin + loop + exit when Root = null; + Next := Root.all.Next; + Release_String (Root.all.Line); + Release_Help_Line (Root); + Root := Next; + end loop; + end Release_Help; + + procedure Explain_Context + is + begin + Explain (Context); + end Explain_Context; + + procedure Notepad (Key : String) + is + H : constant Help_Line_Access := Search (Key); + T : Help_Line_Access := H; + N : Line_Count := 1; + L : Line_Position := 0; + W : Window; + P : Panel; + begin + if H /= null then + loop + T := T.all.Next; + exit when T = null; + N := N + 1; + end loop; + W := New_Window (N + 2, Columns, Lines - N - 2, 0); + if Has_Colors then + Set_Background (Win => W, + Ch => (Ch => ' ', + Color => Notepad_Color, + Attr => Normal_Video)); + Set_Character_Attributes (Win => W, + Attr => Normal_Video, + Color => Notepad_Color); + Erase (W); + end if; + Box (W); + Window_Title (W, "Notepad"); + P := New_Panel (W); + T := H; + loop + Add (W, L + 1, 1, T.all.Line.all, Integer (Columns - 2)); + L := L + 1; + T := T.all.Next; + exit when T = null; + end loop; + T := H; + Release_Help (T); + Refresh_Without_Update (W); + Notepad_To_Context (P); + end if; + end Notepad; + + function Check_File (Name : String) return Boolean is + The_File : File_Type; + begin + Open (The_File, In_File, Name); + Close (The_File); + return True; + exception + when Name_Error => + return False; + end Check_File; + +begin + if Check_File + ($THIS_DATADIR + & File_Name) + then + Open (F, In_File, + $THIS_DATADIR + & File_Name); + elsif Check_File (File_Name) then + Open (F, In_File, File_Name); + else + Put_Line (Standard_Error, + "The file " + & File_Name + & " was not found in " + & $THIS_DATADIR + ); + raise Name_Error; + end if; +end Sample.Explanation; +-- vile:adamode diff --git a/deps/ncurses-5.9/Ada95/samples/sample-explanation.ads b/deps/ncurses-6.3/Ada95/samples/sample-explanation.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-explanation.ads rename to deps/ncurses-6.3/Ada95/samples/sample-explanation.ads index 728825e..6e955b4 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-explanation.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-explanation.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- Poor mans help system. This scans a sequential file for key lines and diff --git a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-aux.adb b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-aux.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/sample-form_demo-aux.adb rename to deps/ncurses-6.3/Ada95/samples/sample-form_demo-aux.adb index a3b044d..072b187 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-aux.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-aux.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2004,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2004,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.17 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.18 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-aux.ads b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-aux.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/sample-form_demo-aux.ads rename to deps/ncurses-6.3/Ada95/samples/sample-form_demo-aux.ads index 7e7f7cd..7e7f286 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-aux.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-aux.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2011 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-handler.adb b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-handler.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-form_demo-handler.adb rename to deps/ncurses-6.3/Ada95/samples/sample-form_demo-handler.adb index d871c1c..d180b1d 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-handler.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-handler.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2004,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2004,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.14 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Sample.Form_Demo.Aux; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-handler.ads b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-handler.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-form_demo-handler.ads rename to deps/ncurses-6.3/Ada95/samples/sample-form_demo-handler.ads index 7d875a0..8966e5b 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-form_demo-handler.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-form_demo-handler.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.10 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-form_demo.adb b/deps/ncurses-6.3/Ada95/samples/sample-form_demo.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/sample-form_demo.adb rename to deps/ncurses-6.3/Ada95/samples/sample-form_demo.adb index ed84526..72ca51c 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-form_demo.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-form_demo.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.16 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.17 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-form_demo.ads b/deps/ncurses-6.3/Ada95/samples/sample-form_demo.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-form_demo.ads rename to deps/ncurses-6.3/Ada95/samples/sample-form_demo.ads index bd33f57..0dda071 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-form_demo.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-form_demo.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Sample.Form_Demo is diff --git a/deps/ncurses-5.9/Ada95/samples/sample-function_key_setting.adb b/deps/ncurses-6.3/Ada95/samples/sample-function_key_setting.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/sample-function_key_setting.adb rename to deps/ncurses-6.3/Ada95/samples/sample-function_key_setting.adb index 4ff70be..6c5a804 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-function_key_setting.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-function_key_setting.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.15 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.16 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Unchecked_Deallocation; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-function_key_setting.ads b/deps/ncurses-6.3/Ada95/samples/sample-function_key_setting.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/sample-function_key_setting.ads rename to deps/ncurses-6.3/Ada95/samples/sample-function_key_setting.ads index 4188158..daf1453 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-function_key_setting.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-function_key_setting.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2011 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-header_handler.adb b/deps/ncurses-6.3/Ada95/samples/sample-header_handler.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-header_handler.adb rename to deps/ncurses-6.3/Ada95/samples/sample-header_handler.adb index ad60caf..572aa8a 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-header_handler.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-header_handler.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.19 $ --- $Date: 2011/03/22 23:54:38 $ +-- $Revision: 1.21 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Calendar; use Ada.Calendar; @@ -121,8 +122,11 @@ package body Sample.Header_Handler is D : constant Day_Number := Day (Now); begin if Header_Window /= Null_Window then - if Minute /= Display_Min or else Hour /= Display_Hour - or else Display_Day /= D or else Display_Month /= Mon then + if Minute /= Display_Min + or else Hour /= Display_Hour + or else Display_Day /= D + or else Display_Month /= Mon + then Move_Cursor (Header_Window, 0, 0); N_Out (D); Add (Header_Window, '.'); Add (Header_Window, Month_Names (Mon)); diff --git a/deps/ncurses-5.9/Ada95/samples/sample-header_handler.ads b/deps/ncurses-6.3/Ada95/samples/sample-header_handler.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-header_handler.ads rename to deps/ncurses-6.3/Ada95/samples/sample-header_handler.ads index aa0a0c2..18f76d7 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-header_handler.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-header_handler.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-helpers.adb b/deps/ncurses-6.3/Ada95/samples/sample-helpers.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-helpers.adb rename to deps/ncurses-6.3/Ada95/samples/sample-helpers.adb index ceef268..4dbdd40 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-helpers.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-helpers.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.14 $ --- $Date: 2011/03/19 12:13:21 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Sample.Explanation; use Sample.Explanation; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-helpers.ads b/deps/ncurses-6.3/Ada95/samples/sample-helpers.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-helpers.ads rename to deps/ncurses-6.3/Ada95/samples/sample-helpers.ads index 28e89bb..5b7d3d7 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-helpers.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-helpers.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2011 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-keyboard_handler.adb b/deps/ncurses-6.3/Ada95/samples/sample-keyboard_handler.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/sample-keyboard_handler.adb rename to deps/ncurses-6.3/Ada95/samples/sample-keyboard_handler.adb index 1d3f20c..5a671fa 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-keyboard_handler.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-keyboard_handler.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.16 $ --- $Date: 2011/03/23 00:34:24 $ +-- $Revision: 1.17 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Strings; use Ada.Strings; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-keyboard_handler.ads b/deps/ncurses-6.3/Ada95/samples/sample-keyboard_handler.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-keyboard_handler.ads rename to deps/ncurses-6.3/Ada95/samples/sample-keyboard_handler.ads index ac5b139..6daecc8 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-keyboard_handler.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-keyboard_handler.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-manifest.ads b/deps/ncurses-6.3/Ada95/samples/sample-manifest.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/sample-manifest.ads rename to deps/ncurses-6.3/Ada95/samples/sample-manifest.ads index bb76c4c..1fa33a9 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-manifest.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-manifest.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.11 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-aux.adb b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-aux.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/sample-menu_demo-aux.adb rename to deps/ncurses-6.3/Ada95/samples/sample-menu_demo-aux.adb index 091f08b..f430c88 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-aux.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-aux.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.14 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Characters.Latin_1; use Ada.Characters.Latin_1; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-aux.ads b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-aux.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/sample-menu_demo-aux.ads rename to deps/ncurses-6.3/Ada95/samples/sample-menu_demo-aux.ads index e82aedf..778b34c 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-aux.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-aux.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2009,2011 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-handler.adb b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-handler.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/samples/sample-menu_demo-handler.adb rename to deps/ncurses-6.3/Ada95/samples/sample-menu_demo-handler.adb index 84d29f6..ebbaf43 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-handler.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-handler.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2004,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2004,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.16 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.17 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Sample.Menu_Demo.Aux; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-handler.ads b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-handler.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-menu_demo-handler.ads rename to deps/ncurses-6.3/Ada95/samples/sample-menu_demo-handler.ads index e9eaa6b..eff73e0 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo-handler.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo-handler.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.10 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo.adb b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo.adb similarity index 98% rename from deps/ncurses-5.9/Ada95/samples/sample-menu_demo.adb rename to deps/ncurses-6.3/Ada95/samples/sample-menu_demo.adb index 80cd94b..7e49ddd 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2008,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.19 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.20 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses; use Terminal_Interface.Curses; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo.ads b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-menu_demo.ads rename to deps/ncurses-6.3/Ada95/samples/sample-menu_demo.ads index b071afc..84b5a69 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-menu_demo.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-menu_demo.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Sample.Menu_Demo is diff --git a/deps/ncurses-5.9/Ada95/samples/sample-my_field_type.adb b/deps/ncurses-6.3/Ada95/samples/sample-my_field_type.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-my_field_type.adb rename to deps/ncurses-6.3/Ada95/samples/sample-my_field_type.adb index e0d6f67..dbdd88a 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-my_field_type.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-my_field_type.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2008 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.16 $ --- $Date: 2008/07/26 18:47:58 $ +-- $Revision: 1.17 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/samples/sample-my_field_type.ads b/deps/ncurses-6.3/Ada95/samples/sample-my_field_type.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/sample-my_field_type.ads rename to deps/ncurses-6.3/Ada95/samples/sample-my_field_type.ads index b8f3653..1f1e65f 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-my_field_type.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-my_field_type.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2003,2006 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Forms; use Terminal_Interface.Curses.Forms; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-text_io_demo.adb b/deps/ncurses-6.3/Ada95/samples/sample-text_io_demo.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-text_io_demo.adb rename to deps/ncurses-6.3/Ada95/samples/sample-text_io_demo.adb index a458a37..f23fe7c 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-text_io_demo.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample-text_io_demo.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2011 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.17 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.19 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Numerics.Generic_Elementary_Functions; @@ -57,7 +58,6 @@ with Terminal_Interface.Curses.Text_IO.Integer_IO; with Terminal_Interface.Curses.Text_IO.Float_IO; with Terminal_Interface.Curses.Text_IO.Enumeration_IO; with Terminal_Interface.Curses.Text_IO.Complex_IO; -with Terminal_Interface.Curses.Text_IO.Fixed_IO; with Terminal_Interface.Curses.Text_IO.Decimal_IO; with Terminal_Interface.Curses.Text_IO.Modular_IO; @@ -69,7 +69,6 @@ with Sample.Explanation; use Sample.Explanation; pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Complex_IO); pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Decimal_IO); pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Enumeration_IO); -pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Fixed_IO); pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Float_IO); pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Integer_IO); pragma Elaborate_All (Terminal_Interface.Curses.Text_Io.Modular_IO); @@ -84,7 +83,6 @@ package body Sample.Text_IO_Demo is Friday, Saturday); - type Fix is delta 0.1 range 0.0 .. 4.0; type Dec is delta 0.01 digits 5 range 0.0 .. 4.0; type Md is mod 5; @@ -107,10 +105,6 @@ package body Sample.Text_IO_Demo is Terminal_Interface.Curses.Text_IO.Complex_IO (Ada.Numerics.Complex_Types); use C_IO; - package F_IO is new - Terminal_Interface.Curses.Text_IO.Fixed_IO (Fix); - use F_IO; - package D_IO is new Terminal_Interface.Curses.Text_IO.Decimal_IO (Dec); use D_IO; diff --git a/deps/ncurses-5.9/Ada95/samples/sample-text_io_demo.ads b/deps/ncurses-6.3/Ada95/samples/sample-text_io_demo.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample-text_io_demo.ads rename to deps/ncurses-6.3/Ada95/samples/sample-text_io_demo.ads index d3f5a18..307f370 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample-text_io_demo.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample-text_io_demo.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Sample.Text_IO_Demo is diff --git a/deps/ncurses-5.9/Ada95/samples/sample.adb b/deps/ncurses-6.3/Ada95/samples/sample.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/samples/sample.adb rename to deps/ncurses-6.3/Ada95/samples/sample.adb index 9b3759f..e10294b 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample.adb +++ b/deps/ncurses-6.3/Ada95/samples/sample.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2008,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.18 $ --- $Date: 2011/03/23 00:44:12 $ +-- $Revision: 1.19 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Text_IO; diff --git a/deps/ncurses-5.9/Ada95/samples/sample.ads b/deps/ncurses-6.3/Ada95/samples/sample.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/sample.ads rename to deps/ncurses-6.3/Ada95/samples/sample.ads index 9d0647d..fecab98 100644 --- a/deps/ncurses-5.9/Ada95/samples/sample.ads +++ b/deps/ncurses-6.3/Ada95/samples/sample.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Sample is diff --git a/deps/ncurses-6.3/Ada95/samples/split-path.awk b/deps/ncurses-6.3/Ada95/samples/split-path.awk new file mode 100644 index 0000000..86e8ccd --- /dev/null +++ b/deps/ncurses-6.3/Ada95/samples/split-path.awk @@ -0,0 +1,54 @@ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# # +# 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: Thomas E. Dickey +# +# $Id: split-path.awk,v 1.3 2020/02/02 23:34:34 tom Exp $ +BEGIN { cols = 72; } +/[$]THIS_DATADIR/ { + gsub("[$]THIS_DATADIR", "\"" this_datadir "\""); + if ( length ($0) > cols ) { + indent = index($0, "\"") - 1; + broken = index($0, "&"); + if (broken > 0 && broken < indent) + indent = broken - 1; + leader = sprintf ("%*s& ", indent, " "); + buffer = $0; + first = 1; + while ( length(buffer) > cols ) { + printf("%.*s\"\n", cols, buffer); + buffer = leader "\"" substr(buffer, cols + 1); + } + if ( buffer != "" && buffer != leader "\"\"" ) + printf("%.*s\n", cols, buffer); + next; + } +} +{ + print; +} diff --git a/deps/ncurses-5.9/Ada95/samples/status.adb b/deps/ncurses-6.3/Ada95/samples/status.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/status.adb rename to deps/ncurses-6.3/Ada95/samples/status.adb index e658131..eb55c75 100644 --- a/deps/ncurses-5.9/Ada95/samples/status.adb +++ b/deps/ncurses-6.3/Ada95/samples/status.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -36,7 +37,7 @@ -- Author: Laurent Pautet -- Modified by: Juergen Pfeifer, 1997 -- Version Control --- $Revision: 1.7 $ +-- $Revision: 1.9 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- This package has been contributed by Laurent Pautet -- diff --git a/deps/ncurses-5.9/Ada95/samples/status.ads b/deps/ncurses-6.3/Ada95/samples/status.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/samples/status.ads rename to deps/ncurses-6.3/Ada95/samples/status.ads index e9e3ee8..66fd19e 100644 --- a/deps/ncurses-5.9/Ada95/samples/status.ads +++ b/deps/ncurses-6.3/Ada95/samples/status.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -36,7 +37,7 @@ -- Author: Laurent Pautet -- Modified by: Juergen Pfeifer, 1997 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- This package has been contributed by Laurent Pautet -- diff --git a/deps/ncurses-5.9/Ada95/samples/tour.adb b/deps/ncurses-6.3/Ada95/samples/tour.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/tour.adb rename to deps/ncurses-6.3/Ada95/samples/tour.adb index 1cc91c1..07f206e 100644 --- a/deps/ncurses-5.9/Ada95/samples/tour.adb +++ b/deps/ncurses-6.3/Ada95/samples/tour.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Sample; use Sample; diff --git a/deps/ncurses-5.9/Ada95/samples/tour.ads b/deps/ncurses-6.3/Ada95/samples/tour.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/samples/tour.ads rename to deps/ncurses-6.3/Ada95/samples/tour.ads index 8888169..0011bbf 100644 --- a/deps/ncurses-5.9/Ada95/samples/tour.ads +++ b/deps/ncurses-6.3/Ada95/samples/tour.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control --- $Revision: 1.9 $ +-- $Revision: 1.11 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ procedure Tour; diff --git a/deps/ncurses-6.3/Ada95/src/Makefile.in b/deps/ncurses-6.3/Ada95/src/Makefile.in new file mode 100644 index 0000000..eb4489b --- /dev/null +++ b/deps/ncurses-6.3/Ada95/src/Makefile.in @@ -0,0 +1,428 @@ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1999-2016,2018 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, 1996 +# +# $Id: Makefile.in,v 1.96 2021/07/03 15:45:33 tom Exp $ +# +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +ADA_MFLAGS = @cf_cv_makeflags@ +@SET_MAKE@ + +MODEL = ../../@DFT_OBJ_SUBDIR@ + +DESTDIR = @DESTDIR@ + +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +includedir = @includedir@ +libdir = @libdir@ + +LIBDIR = $(DESTDIR)$(libdir) +ADA_INCLUDE = $(DESTDIR)@ADA_INCLUDE@ +ADA_OBJECTS = $(DESTDIR)@ADA_OBJECTS@ + +INSTALL = @INSTALL@ @INSTALL_OPT_O@ +INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ + +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AWK = @AWK@ +LN_S = @LN_S@ + +CC = @CC@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ + +CPPFLAGS = @ACPPFLAGS@ @CPPFLAGS@ \ + -DHAVE_CONFIG_H -I$(srcdir) + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +LINK = $(CC) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + +RANLIB = @RANLIB@ + +################################################################################ +ADA = @cf_ada_compiler@ +ADAPREP = gnatprep +ADAFLAGS = @ADAFLAGS@ -I. -I$(srcdir) + +LIB_NAME = @ADA_LIBNAME@ +SONAME = @ADA_SHAREDLIB@ + +GNAT_PROJECT = @ADA_LIBNAME@.gpr + +# build/source are the Ada95 tree +BUILD_DIR = .. +SOURCE_DIR = .. + +BUILD_DIR_LIB = $(BUILD_DIR)/lib +SOURCE_DIR_SRC = $(SOURCE_DIR)/src + +ADAMAKE = @cf_ada_make@ +ADAMAKEFLAGS = \ + -P$(GNAT_PROJECT) \ + -XBUILD_DIR=`cd $(BUILD_DIR);pwd` \ + -XSOURCE_DIR=`cd $(SOURCE_DIR);pwd` \ + -XSOURCE_DIR2=`cd $(srcdir);pwd` \ + -XLIB_NAME=$(LIB_NAME) \ + -XSONAME=$(SONAME) + +CARGS = -cargs $(ADAFLAGS) +LARGS = + +STATIC_LIBNAME = lib$(LIB_NAME).a +SHARED_LIBNAME = $(SONAME) +SHARED_SYMLINK = lib$(LIB_NAME).so + +ALIB = @cf_ada_package@ +ABASE = $(ALIB)-curses +################################################################################ +GENERATED_SOURCES=$(ABASE).ads \ + $(ABASE).adb \ + $(ABASE)-aux.ads \ + $(ABASE)-trace.ads \ + $(ABASE)-menus.ads \ + $(ABASE)-forms.ads \ + $(ABASE)-mouse.ads \ + $(ABASE)-panels.ads \ + $(ABASE)-menus-menu_user_data.ads \ + $(ABASE)-menus-item_user_data.ads \ + $(ABASE)-forms-form_user_data.ads \ + $(ABASE)-forms-field_types.ads \ + $(ABASE)-forms-field_user_data.ads \ + $(ABASE)-panels-user_data.ads +################################################################################ +LIBOBJS=$(ALIB).o \ + $(ABASE)-aux.o \ + $(ABASE).o \ + $(ABASE)-terminfo.o \ + $(ABASE)-termcap.o \ + $(ABASE)-putwin.o \ + $(ABASE)-trace.o \ + $(ABASE)-mouse.o \ + $(ABASE)-panels.o \ + $(ABASE)-menus.o \ + $(ABASE)-forms.o \ + $(ABASE)-forms-field_types.o \ + $(ABASE)-forms-field_types-alpha.o \ + $(ABASE)-forms-field_types-alphanumeric.o \ + $(ABASE)-forms-field_types-intfield.o \ + $(ABASE)-forms-field_types-numeric.o \ + $(ABASE)-forms-field_types-regexp.o \ + $(ABASE)-forms-field_types-enumeration.o \ + $(ABASE)-forms-field_types-ipv4_address.o \ + $(ABASE)-forms-field_types-user.o \ + $(ABASE)-forms-field_types-user-choice.o \ + $(ABASE)-text_io.o \ + $(ABASE)-text_io-aux.o + +# Ada object files for generic packages. Since gnat 3.10 they are +# also compiled +GENOBJS=$(ABASE)-menus-menu_user_data.o \ + $(ABASE)-menus-item_user_data.o \ + $(ABASE)-forms-form_user_data.o \ + $(ABASE)-forms-field_user_data.o \ + $(ABASE)-forms-field_types-enumeration-ada.o \ + $(ABASE)-panels-user_data.o \ + $(ABASE)-text_io-integer_io.o \ + $(ABASE)-text_io-float_io.o \ + $(ABASE)-text_io-fixed_io.o \ + $(ABASE)-text_io-decimal_io.o \ + $(ABASE)-text_io-enumeration_io.o \ + $(ABASE)-text_io-modular_io.o \ + $(ABASE)-text_io-complex_io.o + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all :: $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) + @echo done + +$(ADA_INCLUDE) \ +$(ADA_OBJECTS) \ +$(LIBDIR) \ +$(BUILD_DIR_LIB) : + mkdir -p $@ + +$(GENERATED_SOURCES) : + ( cd ../gen; $(MAKE) $(ADA_MFLAGS) ) + +sources : $(GENERATED_SOURCES) + @echo made $@ + +libs \ +install \ +install.libs :: \ + $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) + @echo made $(STATIC_LIBNAME) + +#OLD:BEGIN +install \ +install.libs :: \ + $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \ + $(ADA_OBJECTS) + @$(INSTALL_LIB) \ + $(BUILD_DIR_LIB)/$(STATIC_LIBNAME) \ + $(ADA_OBJECTS) + +uninstall \ +uninstall.libs :: + @rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME) +#OLD:END + +mostlyclean :: + rm -f *.o *.ali b_t*.* *.s $(PROGS) a.out core b_*_test.c *.xr[bs] *.a + +clean :: mostlyclean + rm -f $(ABASE)-trace.adb + +distclean :: clean + rm -f Makefile library.gpr + +realclean :: distclean + +BASEDEPS=$(ABASE).ads $(ABASE)-aux.ads $(ABASE).adb + +$(ABASE)-trace.adb : $(srcdir)/$(ABASE)-trace.adb_p + rm -f $@ + $(ADAPREP) -DADA_TRACE=@ADA_TRACE@ @GNATPREP_OPTS@ $(srcdir)/$(ABASE)-trace.adb_p $@ + +############################################################################### +# Use these definitions when building a shared library. +SHARED_C_OBJS = c_varargs_to_ada.o c_threaded_variables.o ncurses_compat.o +SHARED_OBJS = $(SHARED_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@ + +c_varargs_to_ada.o : $(srcdir)/c_varargs_to_ada.c + $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_varargs_to_ada.c + +c_threaded_variables.o : $(srcdir)/c_threaded_variables.c + $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/c_threaded_variables.c + +ncurses_compat.o : $(srcdir)/ncurses_compat.c + $(CC) $(CFLAGS_DEFAULT) -c -o $@ $(srcdir)/ncurses_compat.c + +############################################################################### +# Use these definitions when building a static library. +STATIC_C_OBJS = static_c_varargs_to_ada.o static_c_threaded_variables.o static_ncurses_compat.o +STATIC_OBJS = $(STATIC_C_OBJS) @USE_OLD_MAKERULES@$(LIBOBJS) @cf_generic_objects@ + +static_c_varargs_to_ada.o : $(srcdir)/c_varargs_to_ada.c + $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_varargs_to_ada.c + +static_c_threaded_variables.o : $(srcdir)/c_threaded_variables.c + $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/c_threaded_variables.c + +static_ncurses_compat.o : $(srcdir)/ncurses_compat.c + $(CC) $(CFLAGS_NORMAL) -c -o $@ $(srcdir)/ncurses_compat.c + +############################################################################### + +@USE_OLD_MAKERULES@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \ +@USE_OLD_MAKERULES@ $(BUILD_DIR_LIB) \ +@USE_OLD_MAKERULES@ $(STATIC_OBJS) +@USE_OLD_MAKERULES@ $(AR) $(ARFLAGS) $@ $(STATIC_OBJS) + +$(BUILD_DIR)/static-ali : ; mkdir -p $@ +$(BUILD_DIR)/static-obj : ; mkdir -p $@ + +STATIC_DIRS = \ + $(BUILD_DIR_LIB) \ + $(BUILD_DIR)/static-ali \ + $(BUILD_DIR)/static-obj + +@USE_GNAT_PROJECTS@$(BUILD_DIR_LIB)/$(STATIC_LIBNAME) :: \ +@USE_GNAT_PROJECTS@ $(ABASE)-trace.adb \ +@USE_GNAT_PROJECTS@ $(STATIC_C_OBJS) \ +@USE_GNAT_PROJECTS@ $(STATIC_DIRS) +@USE_GNAT_PROJECTS@ @cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@ +@USE_GNAT_PROJECTS@ -rm -f $(GNAT_PROJECT) +@USE_GNAT_PROJECTS@ $(SHELL) $(srcdir)/library-cfg.sh static library.gpr $(CFLAGS_NORMAL) >$(GNAT_PROJECT) +@USE_GNAT_PROJECTS@ @echo "Using GNAT Project:" +@USE_GNAT_MAKE_GPR@ @-$(SHELL) -c "diff -c $(srcdir)/library.gpr $(GNAT_PROJECT); exit 0" +@USE_GNAT_MAKE_GPR@ $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=static +@USE_GNAT_MAKE_GPR@ $(AR) $(ARFLAGS) $@ $(STATIC_C_OBJS) +@USE_GNAT_MAKE_GPR@ -rm -f $(GNAT_PROJECT) +@USE_GNAT_GPRBUILD@ @-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0" +@USE_GNAT_GPRBUILD@ gprbuild -p $(ADAMAKEFLAGS) -XLIB_KIND=static +@USE_GNAT_GPRBUILD@ -rm -f $(GNAT_PROJECT) + +#OLD:BEGIN +@USE_GNAT_LIBRARIES@install \ +@USE_GNAT_LIBRARIES@install.libs :: \ +@USE_GNAT_LIBRARIES@ $(ADA_OBJECTS) +@USE_GNAT_LIBRARIES@ $(INSTALL_LIB) \ +@USE_GNAT_LIBRARIES@ $(BUILD_DIR)/static-ali/*.ali \ +@USE_GNAT_LIBRARIES@ $(ADA_OBJECTS) +#OLD:END +# While gprinstall is the "recommended" tool, it is rather brittle, with +# hardcoded assumptions about the use of the install-name which prevent using +# that tool to make the directory layout of older versions of the AdaCurses +# package. +# +# In principle, one might just do +# --install-name="" +# and in dry-run mode, gprinstall pretends to handle it properly (trimming the +# empty directory level), but without the dry-run option, it fails (tested +# with gnat 10.1.1). +#NEW:BEGIN +#@USE_GNAT_LIBRARIES@install \ +#@USE_GNAT_LIBRARIES@install.libs :: +#@USE_GNAT_LIBRARIES@ @cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@ +#@USE_GNAT_LIBRARIES@ -rm -f $(GNAT_PROJECT) +#@USE_GNAT_LIBRARIES@ $(SHELL) $(srcdir)/library-cfg.sh static library.gpr $(CFLAGS_NORMAL) >$(GNAT_PROJECT) +#@USE_GNAT_LIBRARIES@ @echo "Using GNAT Project:" +#@USE_GNAT_LIBRARIES@ @-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0" +#@USE_GNAT_LIBRARIES@ +#@USE_GNAT_LIBRARIES@ gprinstall -m -v -f -p \ +#@USE_GNAT_LIBRARIES@ --prefix="$(DESTDIR)$(prefix)" \ +#@USE_GNAT_LIBRARIES@ $(ADAMAKEFLAGS) -XLIB_KIND=static \ +#@USE_GNAT_LIBRARIES@ --lib-subdir="$(DESTDIR)$(prefix)"/lib \ +#@USE_GNAT_LIBRARIES@ --ali-subdir="$(DESTDIR)$(prefix)"/lib/ada/adalib \ +#@USE_GNAT_LIBRARIES@ --sources-subdir="$(DESTDIR)$(prefix)"/share/ada/adainclude +#@USE_GNAT_LIBRARIES@ +#@USE_GNAT_LIBRARIES@ -rm -f $(GNAT_PROJECT) +#NEW:END + +#OLD:BEGIN +uninstall \ +uninstall.libs :: + @rm -f $(ADA_OBJECTS)/$(STATIC_LIBNAME) +#OLD:END +#NEW:BEGIN +#@USE_GNAT_LIBRARIES@uninstall \ +#@USE_GNAT_LIBRARIES@uninstall.libs :: +#@USE_GNAT_LIBRARIES@ @cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@ +#@USE_GNAT_LIBRARIES@ -rm -f $(GNAT_PROJECT) +#@USE_GNAT_LIBRARIES@ $(SHELL) $(srcdir)/library-cfg.sh static library.gpr $(CFLAGS_NORMAL) >$(GNAT_PROJECT) +#@USE_GNAT_LIBRARIES@ @echo "Using GNAT Project:" +#@USE_GNAT_LIBRARIES@ @-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0" +#@USE_GNAT_LIBRARIES@ +#@USE_GNAT_LIBRARIES@ gprinstall -v -f --prefix="$(DESTDIR)$(prefix)" --uninstall $(ADAMAKEFLAGS) -XLIB_KIND=static +#@USE_GNAT_LIBRARIES@ +#@USE_GNAT_LIBRARIES@ -rm -f $(GNAT_PROJECT) +#NEW:END + +@USE_GNAT_LIBRARIES@uninstall \ +@USE_GNAT_LIBRARIES@uninstall.libs :: +@USE_GNAT_LIBRARIES@ @$(SHELL) -c 'for name in $(BUILD_DIR)/static-ali/*.ali ; do rm -f $(ADA_OBJECTS)/`basename $$name`; done' + +$(BUILD_DIR)/dynamic-ali : ; mkdir -p $@ +$(BUILD_DIR)/dynamic-obj : ; mkdir -p $@ + +SHARED_DIRS = \ + $(BUILD_DIR_LIB) \ + $(BUILD_DIR)/dynamic-ali \ + $(BUILD_DIR)/dynamic-obj + +@MAKE_ADA_SHAREDLIB@all :: $(BUILD_DIR_LIB)/$(SHARED_LIBNAME) +@MAKE_ADA_SHAREDLIB@$(BUILD_DIR_LIB)/$(SHARED_LIBNAME) :: \ +@MAKE_ADA_SHAREDLIB@ $(ABASE)-trace.adb \ +@MAKE_ADA_SHAREDLIB@ $(SHARED_DIRS) \ +@MAKE_ADA_SHAREDLIB@ $(SHARED_OBJS) +@MAKE_ADA_SHAREDLIB@ cp $(SHARED_OBJS) $(BUILD_DIR)/dynamic-obj/ +@MAKE_ADA_SHAREDLIB@ @cf_ada_config@gprconfig --batch --config=Ada --config=C,,,,@cf_ada_config_C@ +@MAKE_ADA_SHAREDLIB@ -rm -f $(GNAT_PROJECT) +@MAKE_ADA_SHAREDLIB@ $(SHELL) $(srcdir)/library-cfg.sh dynamic library.gpr $(CFLAGS_SHARED) >$(GNAT_PROJECT) +@MAKE_ADA_SHAREDLIB@ @echo "Making Ada shared-lib:" +@MAKE_ADA_SHAREDLIB@ @-$(SHELL) -c "diff -c library.gpr $(GNAT_PROJECT); exit 0" +@MAKE_ADA_SHAREDLIB@ $(ADAMAKE) $(ADAMAKEFLAGS) -XLIB_KIND=dynamic +@MAKE_ADA_SHAREDLIB@ -rm -f $(GNAT_PROJECT) + +install \ +install.libs :: $(ADA_INCLUDE) + $(INSTALL_LIB) \ + $(SOURCE_DIR_SRC)/*.ad[sb] \ + $(ADA_INCLUDE) + +install \ +install.libs :: $(ADA_INCLUDE) + $(INSTALL_LIB) \ + $(GENERATED_SOURCES) \ + $(ADA_INCLUDE) + +uninstall \ +uninstall.libs :: + $(SHELL) -c 'for name in $(SOURCE_DIR_SRC)/*.ad[sb] $(GENERATED_SOURCES); do rm -f $(ADA_INCLUDE)/`basename $$name`; done' + +@MAKE_ADA_SHAREDLIB@install \ +@MAKE_ADA_SHAREDLIB@install.libs :: $(ADA_OBJECTS) $(LIBDIR) +@MAKE_ADA_SHAREDLIB@ $(INSTALL_LIB) \ +@MAKE_ADA_SHAREDLIB@ $(BUILD_DIR)/dynamic-ali/* \ +@MAKE_ADA_SHAREDLIB@ $(ADA_OBJECTS) +@MAKE_ADA_SHAREDLIB@ $(INSTALL_LIB) \ +@MAKE_ADA_SHAREDLIB@ $(BUILD_DIR_LIB)/$(SHARED_LIBNAME) \ +@MAKE_ADA_SHAREDLIB@ $(LIBDIR) +@MAKE_ADA_SHAREDLIB@ ( cd $(LIBDIR) && $(LN_S) $(SHARED_LIBNAME) $(SHARED_SYMLINK) ) +@MAKE_ADA_SHAREDLIB@ +@MAKE_ADA_SHAREDLIB@uninstall \ +@MAKE_ADA_SHAREDLIB@uninstall.libs :: +@MAKE_ADA_SHAREDLIB@ $(SHELL) -c 'for name in $(BUILD_DIR)/dynamic-ali/* ; do rm -f $(ADA_OBJECTS)/`basename $$name`; done' +@MAKE_ADA_SHAREDLIB@ +@MAKE_ADA_SHAREDLIB@uninstall \ +@MAKE_ADA_SHAREDLIB@uninstall.libs :: +@MAKE_ADA_SHAREDLIB@ rm -f $(LIBDIR)/$(SHARED_SYMLINK) +@MAKE_ADA_SHAREDLIB@ rm -f $(LIBDIR)/$(SHARED_LIBNAME) + +#rm-docs : +# gnatdoc --enable-build $(ADAMAKEFLAGS) -XLIB_KIND=static + +clean :: + -rm -f default.cgpr + -rm -rf $(BUILD_DIR)/*-ali + -rm -rf $(BUILD_DIR)/*-obj + -rm -rf $(BUILD_DIR_LIB) +#@USE_GNAT_PROJECTS@ gprclean $(ADAMAKEFLAGS) -XLIB_KIND=static +#@MAKE_ADA_SHAREDLIB@ gprclean $(ADAMAKEFLAGS) -XLIB_KIND=dynamic diff --git a/deps/ncurses-6.3/Ada95/src/c_threaded_variables.c b/deps/ncurses-6.3/Ada95/src/c_threaded_variables.c new file mode 100644 index 0000000..4c13153 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/src/c_threaded_variables.c @@ -0,0 +1,57 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2014 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: Nicolas Boulenguez, 2011 * + ****************************************************************************/ + +#include "c_threaded_variables.h" + +#define WRAP(type, name) \ + type \ + name ## _as_function () \ + { \ + return name; \ + } +/* *INDENT-OFF* */ +WRAP(WINDOW *, stdscr) +WRAP(WINDOW *, curscr) + +WRAP(int, LINES) +WRAP(int, COLS) +WRAP(int, TABSIZE) +WRAP(int, COLORS) +WRAP(int, COLOR_PAIRS) + +chtype +acs_map_as_function(char inx) +{ + return acs_map[(unsigned char) inx]; +} +/* *INDENT-ON* */ diff --git a/deps/ncurses-6.3/Ada95/src/c_threaded_variables.h b/deps/ncurses-6.3/Ada95/src/c_threaded_variables.h new file mode 100644 index 0000000..e27ff7c --- /dev/null +++ b/deps/ncurses-6.3/Ada95/src/c_threaded_variables.h @@ -0,0 +1,59 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2014,2015 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. * + ****************************************************************************/ + +/* $Id: c_threaded_variables.h,v 1.4 2020/02/02 23:34:34 tom Exp $ */ + +#ifndef __C_THREADED_VARIABLES_H +#define __C_THREADED_VARIABLES_H + +#include + +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif + +#include + +extern WINDOW *stdscr_as_function(void); +extern WINDOW *curscr_as_function(void); + +extern int LINES_as_function(void); +extern int LINES_as_function(void); +extern int COLS_as_function(void); +extern int TABSIZE_as_function(void); +extern int COLORS_as_function(void); +extern int COLOR_PAIRS_as_function(void); + +extern chtype acs_map_as_function(char /* index */ ); + +#endif /* __C_THREADED_VARIABLES_H */ diff --git a/deps/ncurses-5.9/Ada95/src/c_varargs_to_ada.c b/deps/ncurses-6.3/Ada95/src/c_varargs_to_ada.c similarity index 94% rename from deps/ncurses-5.9/Ada95/src/c_varargs_to_ada.c rename to deps/ncurses-6.3/Ada95/src/c_varargs_to_ada.c index ed236dd..7561911 100644 --- a/deps/ncurses-5.9/Ada95/src/c_varargs_to_ada.c +++ b/deps/ncurses-6.3/Ada95/src/c_varargs_to_ada.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2011,2014 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 * @@ -32,12 +33,12 @@ /* Version Control - $Id: c_varargs_to_ada.c,v 1.4 2011/03/19 19:07:39 tom Exp $ + $Id: c_varargs_to_ada.c,v 1.7 2020/02/02 23:34:34 tom Exp $ --------------------------------------------------------------------------*/ /* */ -#include +#include "c_varargs_to_ada.h" int set_field_type_alnum(FIELD *field, diff --git a/deps/ncurses-5.9/Ada95/src/c_varargs_to_ada.h b/deps/ncurses-6.3/Ada95/src/c_varargs_to_ada.h similarity index 91% rename from deps/ncurses-5.9/Ada95/src/c_varargs_to_ada.h rename to deps/ncurses-6.3/Ada95/src/c_varargs_to_ada.h index ee6a7a7..8b78219 100644 --- a/deps/ncurses-5.9/Ada95/src/c_varargs_to_ada.h +++ b/deps/ncurses-6.3/Ada95/src/c_varargs_to_ada.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2011,2015 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 * @@ -26,11 +27,19 @@ * authorization. * ****************************************************************************/ -/* $Id: c_varargs_to_ada.h,v 1.3 2011/03/19 19:07:41 tom Exp $ */ +/* $Id: c_varargs_to_ada.h,v 1.5 2020/02/02 23:34:34 tom Exp $ */ #ifndef __C_VARARGS_TO_ADA_H #define __C_VARARGS_TO_ADA_H +#ifdef HAVE_CONFIG_H +#include +#else +#include +#endif + +#include + #include extern int set_field_type_alnum(FIELD * /* field */ , diff --git a/deps/ncurses-6.3/Ada95/src/library-cfg.sh b/deps/ncurses-6.3/Ada95/src/library-cfg.sh new file mode 100755 index 0000000..c416617 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/src/library-cfg.sh @@ -0,0 +1,73 @@ +#!/bin/sh +############################################################################## +# Copyright 2018-2019,2020 Thomas E. Dickey # +# Copyright 2016,2018 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. # +############################################################################## +# +# $Id: library-cfg.sh,v 1.7 2020/02/02 23:34:34 tom Exp $ +# +# Work around incompatible behavior introduced with gnat6, which causes +# gnatmake to attempt to compile all of the C objects which might be part of +# the project. This can only work if we provide the compiler flags (done here +# by making a copy of the project file with that information filled in). +model=$1 +shift 1 +input=$1 +shift 1 +param= +while test $# != 0 +do + case "x$1" in + *-[OgDIWf]*) + test -n "$param" && param="$param," + param="$param\"$1\"" + ;; + *) + echo "${0##*/}: ignored option $1" >&2 + ;; + esac + shift 1 +done + +SHARE="-- " +test "x$model" = "xdynamic" && SHARE= + +SCRIPT=library-cfg.tmp +cat >$SCRIPT < + +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif + #include #if defined(NCURSES_VERSION_PATCH) @@ -49,7 +60,7 @@ extern int _nc_has_mouse(void); bool has_mouse(void) { - return (bool) _nc_has_mouse(); + return (bool)_nc_has_mouse(); } #endif diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-aux.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-aux.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-aux.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-aux.adb index 9c2f8cd..2f506af 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-aux.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-aux.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package body Terminal_Interface.Curses.Aux is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb similarity index 90% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb index 9433620..23cf7b7 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alpha.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ --- $Date: 2011/03/19 00:45:37 $ +-- $Revision: 1.14 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; @@ -47,15 +48,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Alpha is Typ : Alpha_Field) is function Set_Fld_Type (F : Field := Fld; - Arg1 : C_Int) return C_Int; + Arg1 : C_Int) return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_alpha"); - Res : Eti_Error; begin - Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width))); Wrap_Builtin (Fld, Typ); end Set_Field_Type; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads index 7878f73..3cfadb6 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alpha.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Terminal_Interface.Curses.Forms.Field_Types.Alpha is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb similarity index 90% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb index 53f6680..55db15c 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ --- $Date: 2011/03/19 00:45:37 $ +-- $Revision: 1.14 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; @@ -47,15 +48,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is Typ : AlphaNumeric_Field) is function Set_Fld_Type (F : Field := Fld; - Arg1 : C_Int) return C_Int; + Arg1 : C_Int) return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_alnum"); - Res : Eti_Error; begin - Res := Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width)); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Minimum_Field_Width))); Wrap_Builtin (Fld, Typ); end Set_Field_Type; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads index c1009ac..ef17c25 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-alphanumeric.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb index d38e062..472aa23 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2004,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2004,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ --- $Date: 2011/03/22 23:36:20 $ +-- $Revision: 1.12 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Characters.Handling; use Ada.Characters.Handling; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads index 48fad09..33bc343 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration-ada.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.10 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ generic diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb similarity index 91% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb index 12648e5..d45a9e9 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.10 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Unchecked_Deallocation; @@ -94,21 +95,18 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Enumeration is function Set_Fld_Type (F : Field := Fld; Arg1 : chars_ptr_array; Arg2 : C_Int; - Arg3 : C_Int) return C_Int; + Arg3 : C_Int) return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_enum"); - Res : Eti_Error; begin if Typ.Arr = null then raise Form_Exception; end if; - Res := Set_Fld_Type (Arg1 => Typ.Arr.all, - Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)), - Arg3 => C_Int (Boolean'Pos - (Typ.Match_Must_Be_Unique))); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception + (Set_Fld_Type + (Arg1 => Typ.Arr.all, + Arg2 => C_Int (Boolean'Pos (Typ.Case_Sensitive)), + Arg3 => C_Int (Boolean'Pos (Typ.Match_Must_Be_Unique)))); Wrap_Builtin (Fld, Typ, C_Choice_Router); end Set_Field_Type; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads index e6924f6..ca9ab52 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-enumeration.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.15 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Interfaces.C.Strings; @@ -54,9 +55,9 @@ package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is type Enumeration_Info (C : Positive) is record - Names : Enum_Array (1 .. C); Case_Sensitive : Boolean := False; Match_Must_Be_Unique : Boolean := False; + Names : Enum_Array (1 .. C); end record; type Enumeration_Field is new Field_Type with private; @@ -78,7 +79,7 @@ package Terminal_Interface.Curses.Forms.Field_Types.Enumeration is -- But we may want to release the field to release the memory allocated -- by it internally. After that the Enumeration field is no longer usable. - -- The next type defintions are all ncurses extensions. They are typically + -- The next type definitions are all ncurses extensions. They are typically -- not available in other curses implementations. procedure Set_Field_Type (Fld : Field; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb similarity index 87% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb index b6229be..59e9d1e 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-intfield.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ --- $Date: 2011/03/19 00:45:37 $ +-- $Revision: 1.14 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; @@ -49,17 +50,13 @@ package body Terminal_Interface.Curses.Forms.Field_Types.IntField is function Set_Fld_Type (F : Field := Fld; Arg1 : C_Int; Arg2 : C_Long_Int; - Arg3 : C_Long_Int) return C_Int; + Arg3 : C_Long_Int) return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_integer"); - Res : Eti_Error; begin - Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision), - Arg2 => C_Long_Int (Typ.Lower_Limit), - Arg3 => C_Long_Int (Typ.Upper_Limit)); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Precision), + Arg2 => C_Long_Int (Typ.Lower_Limit), + Arg3 => C_Long_Int (Typ.Upper_Limit))); Wrap_Builtin (Fld, Typ); end Set_Field_Type; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads index e90f0d0..1217824 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-intfield.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Terminal_Interface.Curses.Forms.Field_Types.IntField is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb similarity index 92% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb index 66e0529..4b5d10b 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ --- $Date: 2011/03/19 00:45:37 $ +-- $Revision: 1.14 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; @@ -47,15 +48,11 @@ package body Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is Typ : Internet_V4_Address_Field) is function Set_Fld_Type (F : Field := Fld) - return C_Int; + return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_ipv4"); - Res : Eti_Error; begin - Res := Set_Fld_Type; - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Type); Wrap_Builtin (Fld, Typ); end Set_Field_Type; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads index af367e7..bf3b77d 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-ipv4_address.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb similarity index 88% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb index b31dfa6..7b1d931 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-numeric.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ --- $Date: 2011/03/19 00:45:37 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Interfaces.C; @@ -52,17 +53,13 @@ package body Terminal_Interface.Curses.Forms.Field_Types.Numeric is function Set_Fld_Type (F : Field := Fld; Arg1 : C_Int; Arg2 : Double; - Arg3 : Double) return C_Int; + Arg3 : Double) return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_numeric"); - Res : Eti_Error; begin - Res := Set_Fld_Type (Arg1 => C_Int (Typ.Precision), - Arg2 => Double (Typ.Lower_Limit), - Arg3 => Double (Typ.Upper_Limit)); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Type (Arg1 => C_Int (Typ.Precision), + Arg2 => Double (Typ.Lower_Limit), + Arg3 => Double (Typ.Upper_Limit))); Wrap_Builtin (Fld, Typ); end Set_Field_Type; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads index 7c6f9fa..a7df7a4 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-numeric.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Terminal_Interface.Curses.Forms.Field_Types.Numeric is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb similarity index 87% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb index 55f0255..fbc42e9 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-regexp.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.10 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Interfaces.C; use Interfaces.C; @@ -46,21 +47,12 @@ package body Terminal_Interface.Curses.Forms.Field_Types.RegExp is procedure Set_Field_Type (Fld : Field; Typ : Regular_Expression_Field) is - type Char_Ptr is access all Interfaces.C.char; - function Set_Ftyp (F : Field := Fld; - Arg1 : Char_Ptr) return C_Int; + Arg1 : char_array) return Eti_Error; pragma Import (C, Set_Ftyp, "set_field_type_regexp"); - Txt : char_array (0 .. Typ.Regular_Expression.all'Length); - Len : size_t; - Res : Eti_Error; begin - To_C (Typ.Regular_Expression.all, Txt, Len); - Res := Set_Ftyp (Arg1 => Txt (Txt'First)'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Ftyp (Arg1 => To_C (Typ.Regular_Expression.all))); Wrap_Builtin (Fld, Typ); end Set_Field_Type; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads index 2684138..ee5146b 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-regexp.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Terminal_Interface.Curses.Forms.Field_Types.RegExp is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb similarity index 94% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb index 3a7e6b5..913cec0 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.17 $ --- $Date: 2011/03/22 10:53:37 $ +-- $Revision: 1.21 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with System.Address_To_Access_Conversions; @@ -53,7 +54,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is Result : Boolean; Udf : constant User_Defined_Field_Type_With_Choice_Access := User_Defined_Field_Type_With_Choice_Access - (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ); + (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ); begin Result := Next (Fld, Udf.all); return Curses_Bool (Boolean'Pos (Result)); @@ -65,7 +66,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is Result : Boolean; Udf : constant User_Defined_Field_Type_With_Choice_Access := User_Defined_Field_Type_With_Choice_Access - (Argument_Access (Argument_Conversions.To_Pointer (Usr)).Typ); + (Argument_Access (Argument_Conversions.To_Pointer (Usr)).all.Typ); begin Result := Previous (Fld, Udf.all); return Curses_Bool (Boolean'Pos (Result)); @@ -88,16 +89,12 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User.Choice is Make_Arg'Access, Copy_Arg'Access, Free_Arg'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Res); Res := Set_Fieldtype_Choice (T, Generic_Next'Access, Generic_Prev'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Res); end if; M_Generic_Choice := T; end if; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads index 5b132c9..518c192 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user-choice.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2008,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2008,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.14 $ --- $Date: 2011/03/19 12:27:47 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Interfaces.C; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user.adb similarity index 93% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user.adb index 2dd295d..3f90b95 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.21 $ --- $Date: 2011/03/23 00:44:58 $ +-- $Revision: 1.24 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with System.Address_To_Access_Conversions; @@ -53,11 +54,9 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is function Set_Fld_Type (F : Field := Fld; Cft : C_Field_Type := C_Generic_Type; Arg1 : Argument_Access) - return C_Int; + return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_user"); - Res : Eti_Error; - function Allocate_Arg (T : User_Defined_Field_Type'Class) return Argument_Access is @@ -70,10 +69,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is end Allocate_Arg; begin - Res := Set_Fld_Type (Arg1 => Allocate_Arg (Typ)); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Type (Arg1 => Allocate_Arg (Typ))); end Set_Field_Type; package Argument_Conversions is @@ -120,9 +116,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types.User is Make_Arg'Access, Copy_Arg'Access, Free_Arg'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Res); end if; M_Generic_Type := T; end if; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user.ads index 7000fce..c82a70c 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types-user.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types-user.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2009,2011 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.15 $ --- $Date: 2011/03/19 12:27:21 $ +-- $Revision: 1.16 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Interfaces.C; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types.adb similarity index 87% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types.adb index 5195a20..19f4aee 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_types.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_types.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.25 $ --- $Date: 2011/03/22 23:22:27 $ +-- $Revision: 1.29 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; @@ -76,9 +77,10 @@ package body Terminal_Interface.Curses.Forms.Field_Types is return null; else if Low_Level = M_Builtin_Router or else - Low_Level = M_Generic_Type or else - Low_Level = M_Choice_Router or else - Low_Level = M_Generic_Choice then + Low_Level = M_Generic_Type or else + Low_Level = M_Choice_Router or else + Low_Level = M_Generic_Choice + then Arg := Argument_Access (Argument_Conversions.To_Pointer (Get_Arg (Fld))); if Arg = null then @@ -130,10 +132,9 @@ package body Terminal_Interface.Curses.Forms.Field_Types is Usr_Arg : constant System.Address := Get_Arg (Fld); Low_Level : constant C_Field_Type := Get_Fieldtype (Fld); Arg : Argument_Access; - Res : Eti_Error; function Set_Fld_Type (F : Field := Fld; Cf : C_Field_Type := Cft; - Arg1 : Argument_Access) return C_Int; + Arg1 : Argument_Access) return Eti_Error; pragma Import (C, Set_Fld_Type, "set_field_type_user"); begin @@ -152,10 +153,7 @@ package body Terminal_Interface.Curses.Forms.Field_Types is end if; end if; - Res := Set_Fld_Type (Arg1 => Arg); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Type (Arg1 => Arg)); end if; end Wrap_Builtin; @@ -223,7 +221,6 @@ package body Terminal_Interface.Curses.Forms.Field_Types is -- function C_Builtin_Router return C_Field_Type is - Res : Eti_Error; T : C_Field_Type; begin if M_Builtin_Router = Null_Field_Type then @@ -232,13 +229,10 @@ package body Terminal_Interface.Curses.Forms.Field_Types is if T = Null_Field_Type then raise Form_Exception; else - Res := Set_Fieldtype_Arg (T, - Make_Arg'Access, - Copy_Arg'Access, - Free_Arg'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fieldtype_Arg (T, + Make_Arg'Access, + Copy_Arg'Access, + Free_Arg'Access)); end if; M_Builtin_Router := T; end if; @@ -250,7 +244,6 @@ package body Terminal_Interface.Curses.Forms.Field_Types is -- function C_Choice_Router return C_Field_Type is - Res : Eti_Error; T : C_Field_Type; begin if M_Choice_Router = Null_Field_Type then @@ -259,20 +252,14 @@ package body Terminal_Interface.Curses.Forms.Field_Types is if T = Null_Field_Type then raise Form_Exception; else - Res := Set_Fieldtype_Arg (T, - Make_Arg'Access, - Copy_Arg'Access, - Free_Arg'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fieldtype_Arg (T, + Make_Arg'Access, + Copy_Arg'Access, + Free_Arg'Access)); - Res := Set_Fieldtype_Choice (T, - Next_Router'Access, - Prev_Router'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fieldtype_Choice (T, + Next_Router'Access, + Prev_Router'Access)); end if; M_Choice_Router := T; end if; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_user_data.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_user_data.adb similarity index 92% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_user_data.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_user_data.adb index 96178d8..8b947d5 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-field_user_data.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-field_user_data.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1999-2009,2014 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.13 $ +-- $Revision: 1.17 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; @@ -49,20 +50,15 @@ package body Terminal_Interface.Curses.Forms.Field_User_Data is -- | -- | -- | - use type Interfaces.C.int; - procedure Set_User_Data (Fld : Field; Data : User_Access) is function Set_Field_Userptr (Fld : Field; - Usr : User_Access) return C_Int; + Usr : User_Access) return Eti_Error; pragma Import (C, Set_Field_Userptr, "set_field_userptr"); - Res : constant Eti_Error := Set_Field_Userptr (Fld, Data); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Userptr (Fld, Data)); end Set_User_Data; -- | -- | diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-form_user_data.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-form_user_data.adb similarity index 92% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-form_user_data.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-form_user_data.adb index 84353eb..5091c22 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms-form_user_data.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms-form_user_data.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1999-2009,2014 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.13 $ +-- $Revision: 1.17 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -- | @@ -47,8 +48,6 @@ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; package body Terminal_Interface.Curses.Forms.Form_User_Data is - use type Interfaces.C.int; - -- | -- | -- | @@ -56,14 +55,11 @@ package body Terminal_Interface.Curses.Forms.Form_User_Data is Data : User_Access) is function Set_Form_Userptr (Frm : Form; - Data : User_Access) return C_Int; + Data : User_Access) return Eti_Error; pragma Import (C, Set_Form_Userptr, "set_form_userptr"); - Res : constant Eti_Error := Set_Form_Userptr (Frm, Data); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Form_Userptr (Frm, Data)); end Set_User_Data; -- | -- | diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms.adb similarity index 75% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms.adb index 915ed58..f50420e 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-forms.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-forms.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,12 +36,11 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.28 $ --- $Date: 2011/03/22 23:37:32 $ +-- $Revision: 1.33 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Unchecked_Deallocation; -with Ada.Unchecked_Conversion; with Interfaces.C; use Interfaces.C; with Interfaces.C.Strings; use Interfaces.C.Strings; @@ -62,22 +62,6 @@ package body Terminal_Interface.Curses.Forms is -- | -- subtype chars_ptr is Interfaces.C.Strings.chars_ptr; - function FOS_2_CInt is new - Ada.Unchecked_Conversion (Field_Option_Set, - C_Int); - - function CInt_2_FOS is new - Ada.Unchecked_Conversion (C_Int, - Field_Option_Set); - - function FrmOS_2_CInt is new - Ada.Unchecked_Conversion (Form_Option_Set, - C_Int); - - function CInt_2_FrmOS is new - Ada.Unchecked_Conversion (C_Int, - Form_Option_Set); - procedure Request_Name (Key : Form_Request_Code; Name : out String) is @@ -130,15 +114,11 @@ package body Terminal_Interface.Curses.Forms is -- | procedure Delete (Fld : in out Field) is - function Free_Field (Fld : Field) return C_Int; + function Free_Field (Fld : Field) return Eti_Error; pragma Import (C, Free_Field, "free_field"); - Res : Eti_Error; begin - Res := Free_Field (Fld); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Free_Field (Fld)); Fld := Null_Field; end Delete; -- | @@ -194,16 +174,12 @@ package body Terminal_Interface.Curses.Forms is Just : Field_Justification := None) is function Set_Field_Just (Fld : Field; - Just : C_Int) return C_Int; + Just : C_Int) return Eti_Error; pragma Import (C, Set_Field_Just, "set_field_just"); - Res : constant Eti_Error := - Set_Field_Just (Fld, - C_Int (Field_Justification'Pos (Just))); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Just (Fld, + C_Int (Field_Justification'Pos (Just)))); end Set_Justification; -- | -- | @@ -227,22 +203,14 @@ package body Terminal_Interface.Curses.Forms is Buffer : Buffer_Number := Buffer_Number'First; Str : String) is - type Char_Ptr is access all Interfaces.C.char; function Set_Fld_Buffer (Fld : Field; Bufnum : C_Int; - S : Char_Ptr) - return C_Int; + S : char_array) + return Eti_Error; pragma Import (C, Set_Fld_Buffer, "set_field_buffer"); - Txt : char_array (0 .. Str'Length); - Len : size_t; - Res : Eti_Error; begin - To_C (Str, Txt, Len); - Res := Set_Fld_Buffer (Fld, C_Int (Buffer), Txt (Txt'First)'Access); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Fld_Buffer (Fld, C_Int (Buffer), To_C (Str))); end Set_Buffer; -- | -- | @@ -276,12 +244,11 @@ package body Terminal_Interface.Curses.Forms is Status : Boolean := True) is function Set_Fld_Status (Fld : Field; - St : C_Int) return C_Int; + St : C_Int) return Eti_Error; pragma Import (C, Set_Fld_Status, "set_field_status"); - Res : constant Eti_Error := Set_Fld_Status (Fld, Boolean'Pos (Status)); begin - if Res /= E_Ok then + if Set_Fld_Status (Fld, Boolean'Pos (Status)) /= E_Ok then raise Form_Exception; end if; end Set_Status; @@ -308,14 +275,11 @@ package body Terminal_Interface.Curses.Forms is Max : Natural := 0) is function Set_Field_Max (Fld : Field; - M : C_Int) return C_Int; + M : C_Int) return Eti_Error; pragma Import (C, Set_Field_Max, "set_max_field"); - Res : constant Eti_Error := Set_Field_Max (Fld, C_Int (Max)); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Max (Fld, C_Int (Max))); end Set_Maximum_Size; -- | -- |===================================================================== @@ -328,16 +292,11 @@ package body Terminal_Interface.Curses.Forms is Options : Field_Option_Set) is function Set_Field_Opts (Fld : Field; - Opt : C_Int) return C_Int; + Opt : Field_Option_Set) return Eti_Error; pragma Import (C, Set_Field_Opts, "set_field_opts"); - Opt : constant C_Int := FOS_2_CInt (Options); - Res : Eti_Error; begin - Res := Set_Field_Opts (Fld, Opt); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Opts (Fld, Options)); end Set_Options; -- | -- | @@ -347,22 +306,17 @@ package body Terminal_Interface.Curses.Forms is On : Boolean := True) is function Field_Opts_On (Fld : Field; - Opt : C_Int) return C_Int; + Opt : Field_Option_Set) return Eti_Error; pragma Import (C, Field_Opts_On, "field_opts_on"); function Field_Opts_Off (Fld : Field; - Opt : C_Int) return C_Int; + Opt : Field_Option_Set) return Eti_Error; pragma Import (C, Field_Opts_Off, "field_opts_off"); - Err : Eti_Error; - Opt : constant C_Int := FOS_2_CInt (Options); begin if On then - Err := Field_Opts_On (Fld, Opt); + Eti_Exception (Field_Opts_On (Fld, Options)); else - Err := Field_Opts_Off (Fld, Opt); - end if; - if Err /= E_Ok then - Eti_Exception (Err); + Eti_Exception (Field_Opts_Off (Fld, Options)); end if; end Switch_Options; -- | @@ -371,12 +325,11 @@ package body Terminal_Interface.Curses.Forms is procedure Get_Options (Fld : Field; Options : out Field_Option_Set) is - function Field_Opts (Fld : Field) return C_Int; + function Field_Opts (Fld : Field) return Field_Option_Set; pragma Import (C, Field_Opts, "field_opts"); - Res : constant C_Int := Field_Opts (Fld); begin - Options := CInt_2_FOS (Res); + Options := Field_Opts (Fld); end Get_Options; -- | -- | @@ -402,18 +355,13 @@ package body Terminal_Interface.Curses.Forms is Color : Color_Pair := Color_Pair'First) is function Set_Field_Fore (Fld : Field; - Attr : C_Chtype) return C_Int; + Attr : Attributed_Character) return Eti_Error; pragma Import (C, Set_Field_Fore, "set_field_fore"); - Ch : constant Attributed_Character := (Ch => Character'First, - Color => Color, - Attr => Fore); - Res : constant Eti_Error := - Set_Field_Fore (Fld, AttrChar_To_Chtype (Ch)); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Fore (Fld, (Ch => Character'First, + Color => Color, + Attr => Fore))); end Set_Foreground; -- | -- | @@ -421,21 +369,21 @@ package body Terminal_Interface.Curses.Forms is procedure Foreground (Fld : Field; Fore : out Character_Attribute_Set) is - function Field_Fore (Fld : Field) return C_Chtype; + function Field_Fore (Fld : Field) return Attributed_Character; pragma Import (C, Field_Fore, "field_fore"); begin - Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr; + Fore := Field_Fore (Fld).Attr; end Foreground; procedure Foreground (Fld : Field; Fore : out Character_Attribute_Set; Color : out Color_Pair) is - function Field_Fore (Fld : Field) return C_Chtype; + function Field_Fore (Fld : Field) return Attributed_Character; pragma Import (C, Field_Fore, "field_fore"); begin - Fore := Chtype_To_AttrChar (Field_Fore (Fld)).Attr; - Color := Chtype_To_AttrChar (Field_Fore (Fld)).Color; + Fore := Field_Fore (Fld).Attr; + Color := Field_Fore (Fld).Color; end Foreground; -- | -- | @@ -446,18 +394,13 @@ package body Terminal_Interface.Curses.Forms is Color : Color_Pair := Color_Pair'First) is function Set_Field_Back (Fld : Field; - Attr : C_Chtype) return C_Int; + Attr : Attributed_Character) return Eti_Error; pragma Import (C, Set_Field_Back, "set_field_back"); - Ch : constant Attributed_Character := (Ch => Character'First, - Color => Color, - Attr => Back); - Res : constant Eti_Error := - Set_Field_Back (Fld, AttrChar_To_Chtype (Ch)); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Back (Fld, (Ch => Character'First, + Color => Color, + Attr => Back))); end Set_Background; -- | -- | @@ -465,21 +408,21 @@ package body Terminal_Interface.Curses.Forms is procedure Background (Fld : Field; Back : out Character_Attribute_Set) is - function Field_Back (Fld : Field) return C_Chtype; + function Field_Back (Fld : Field) return Attributed_Character; pragma Import (C, Field_Back, "field_back"); begin - Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr; + Back := Field_Back (Fld).Attr; end Background; procedure Background (Fld : Field; Back : out Character_Attribute_Set; Color : out Color_Pair) is - function Field_Back (Fld : Field) return C_Chtype; + function Field_Back (Fld : Field) return Attributed_Character; pragma Import (C, Field_Back, "field_back"); begin - Back := Chtype_To_AttrChar (Field_Back (Fld)).Attr; - Color := Chtype_To_AttrChar (Field_Back (Fld)).Color; + Back := Field_Back (Fld).Attr; + Color := Field_Back (Fld).Color; end Background; -- | -- | @@ -488,15 +431,12 @@ package body Terminal_Interface.Curses.Forms is Pad : Character := Space) is function Set_Field_Pad (Fld : Field; - Ch : C_Int) return C_Int; + Ch : C_Int) return Eti_Error; pragma Import (C, Set_Field_Pad, "set_field_pad"); - Res : constant Eti_Error := Set_Field_Pad (Fld, - C_Int (Character'Pos (Pad))); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Pad (Fld, + C_Int (Character'Pos (Pad)))); end Set_Pad_Character; -- | -- | @@ -527,25 +467,21 @@ package body Terminal_Interface.Curses.Forms is type C_Int_Access is access all C_Int; function Fld_Info (Fld : Field; L, C, Fr, Fc, Os, Ab : C_Int_Access) - return C_Int; + return Eti_Error; pragma Import (C, Fld_Info, "field_info"); L, C, Fr, Fc, Os, Ab : aliased C_Int; - Res : constant Eti_Error := Fld_Info (Fld, - L'Access, C'Access, - Fr'Access, Fc'Access, - Os'Access, Ab'Access); begin - if Res /= E_Ok then - Eti_Exception (Res); - else - Lines := Line_Count (L); - Columns := Column_Count (C); - First_Row := Line_Position (Fr); - First_Column := Column_Position (Fc); - Off_Screen := Natural (Os); - Additional_Buffers := Buffer_Number (Ab); - end if; + Eti_Exception (Fld_Info (Fld, + L'Access, C'Access, + Fr'Access, Fc'Access, + Os'Access, Ab'Access)); + Lines := Line_Count (L); + Columns := Column_Count (C); + First_Row := Line_Position (Fr); + First_Column := Column_Position (Fc); + Off_Screen := Natural (Os); + Additional_Buffers := Buffer_Number (Ab); end Info; -- | -- | @@ -556,21 +492,17 @@ package body Terminal_Interface.Curses.Forms is Max : out Natural) is type C_Int_Access is access all C_Int; - function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return C_Int; + function Dyn_Info (Fld : Field; L, C, M : C_Int_Access) return Eti_Error; pragma Import (C, Dyn_Info, "dynamic_field_info"); L, C, M : aliased C_Int; - Res : constant Eti_Error := Dyn_Info (Fld, - L'Access, C'Access, - M'Access); begin - if Res /= E_Ok then - Eti_Exception (Res); - else - Lines := Line_Count (L); - Columns := Column_Count (C); - Max := Natural (M); - end if; + Eti_Exception (Dyn_Info (Fld, + L'Access, C'Access, + M'Access)); + Lines := Line_Count (L); + Columns := Column_Count (C); + Max := Natural (M); end Dynamic_Info; -- | -- |===================================================================== @@ -583,14 +515,11 @@ package body Terminal_Interface.Curses.Forms is Win : Window) is function Set_Form_Win (Frm : Form; - Win : Window) return C_Int; + Win : Window) return Eti_Error; pragma Import (C, Set_Form_Win, "set_form_win"); - Res : constant Eti_Error := Set_Form_Win (Frm, Win); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Form_Win (Frm, Win)); end Set_Window; -- | -- | @@ -611,14 +540,11 @@ package body Terminal_Interface.Curses.Forms is Win : Window) is function Set_Form_Sub (Frm : Form; - Win : Window) return C_Int; + Win : Window) return Eti_Error; pragma Import (C, Set_Form_Sub, "set_form_sub"); - Res : constant Eti_Error := Set_Form_Sub (Frm, Win); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Form_Sub (Frm, Win)); end Set_Sub_Window; -- | -- | @@ -640,16 +566,13 @@ package body Terminal_Interface.Curses.Forms is Columns : out Column_Count) is type C_Int_Access is access all C_Int; - function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return C_Int; + function M_Scale (Frm : Form; Yp, Xp : C_Int_Access) return Eti_Error; pragma Import (C, M_Scale, "scale_form"); X, Y : aliased C_Int; - Res : constant Eti_Error := M_Scale (Frm, Y'Access, X'Access); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; - Lines := Line_Count (Y); + Eti_Exception (M_Scale (Frm, Y'Access, X'Access)); + Lines := Line_Count (Y); Columns := Column_Count (X); end Scale; -- | @@ -663,14 +586,11 @@ package body Terminal_Interface.Curses.Forms is Proc : Form_Hook_Function) is function Set_Field_Init (Frm : Form; - Proc : Form_Hook_Function) return C_Int; + Proc : Form_Hook_Function) return Eti_Error; pragma Import (C, Set_Field_Init, "set_field_init"); - Res : constant Eti_Error := Set_Field_Init (Frm, Proc); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Init (Frm, Proc)); end Set_Field_Init_Hook; -- | -- | @@ -679,14 +599,11 @@ package body Terminal_Interface.Curses.Forms is Proc : Form_Hook_Function) is function Set_Field_Term (Frm : Form; - Proc : Form_Hook_Function) return C_Int; + Proc : Form_Hook_Function) return Eti_Error; pragma Import (C, Set_Field_Term, "set_field_term"); - Res : constant Eti_Error := Set_Field_Term (Frm, Proc); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Field_Term (Frm, Proc)); end Set_Field_Term_Hook; -- | -- | @@ -695,14 +612,11 @@ package body Terminal_Interface.Curses.Forms is Proc : Form_Hook_Function) is function Set_Form_Init (Frm : Form; - Proc : Form_Hook_Function) return C_Int; + Proc : Form_Hook_Function) return Eti_Error; pragma Import (C, Set_Form_Init, "set_form_init"); - Res : constant Eti_Error := Set_Form_Init (Frm, Proc); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Form_Init (Frm, Proc)); end Set_Form_Init_Hook; -- | -- | @@ -711,14 +625,11 @@ package body Terminal_Interface.Curses.Forms is Proc : Form_Hook_Function) is function Set_Form_Term (Frm : Form; - Proc : Form_Hook_Function) return C_Int; + Proc : Form_Hook_Function) return Eti_Error; pragma Import (C, Set_Form_Term, "set_form_term"); - Res : constant Eti_Error := Set_Form_Term (Frm, Proc); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Form_Term (Frm, Proc)); end Set_Form_Term_Hook; -- | -- |===================================================================== @@ -731,19 +642,15 @@ package body Terminal_Interface.Curses.Forms is Flds : Field_Array_Access) is function Set_Frm_Fields (Frm : Form; - Items : System.Address) return C_Int; + Items : System.Address) return Eti_Error; pragma Import (C, Set_Frm_Fields, "set_form_fields"); - Res : Eti_Error; begin pragma Assert (Flds.all (Flds'Last) = Null_Field); if Flds.all (Flds'Last) /= Null_Field then raise Form_Exception; else - Res := Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Frm_Fields (Frm, Flds.all (Flds'First)'Address)); end if; end Redefine; -- | @@ -783,14 +690,11 @@ package body Terminal_Interface.Curses.Forms is Line : Line_Position; Column : Column_Position) is - function Move (Fld : Field; L, C : C_Int) return C_Int; + function Move (Fld : Field; L, C : C_Int) return Eti_Error; pragma Import (C, Move, "move_field"); - Res : constant Eti_Error := Move (Fld, C_Int (Line), C_Int (Column)); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Move (Fld, C_Int (Line), C_Int (Column))); end Move; -- | -- |===================================================================== @@ -822,14 +726,11 @@ package body Terminal_Interface.Curses.Forms is -- | procedure Delete (Frm : in out Form) is - function Free (Frm : Form) return C_Int; + function Free (Frm : Form) return Eti_Error; pragma Import (C, Free, "free_form"); - Res : constant Eti_Error := Free (Frm); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Free (Frm)); Frm := Null_Form; end Delete; -- | @@ -843,16 +744,11 @@ package body Terminal_Interface.Curses.Forms is Options : Form_Option_Set) is function Set_Form_Opts (Frm : Form; - Opt : C_Int) return C_Int; + Opt : Form_Option_Set) return Eti_Error; pragma Import (C, Set_Form_Opts, "set_form_opts"); - Opt : constant C_Int := FrmOS_2_CInt (Options); - Res : Eti_Error; begin - Res := Set_Form_Opts (Frm, Opt); - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Form_Opts (Frm, Options)); end Set_Options; -- | -- | @@ -862,22 +758,17 @@ package body Terminal_Interface.Curses.Forms is On : Boolean := True) is function Form_Opts_On (Frm : Form; - Opt : C_Int) return C_Int; + Opt : Form_Option_Set) return Eti_Error; pragma Import (C, Form_Opts_On, "form_opts_on"); function Form_Opts_Off (Frm : Form; - Opt : C_Int) return C_Int; + Opt : Form_Option_Set) return Eti_Error; pragma Import (C, Form_Opts_Off, "form_opts_off"); - Err : Eti_Error; - Opt : constant C_Int := FrmOS_2_CInt (Options); begin if On then - Err := Form_Opts_On (Frm, Opt); + Eti_Exception (Form_Opts_On (Frm, Options)); else - Err := Form_Opts_Off (Frm, Opt); - end if; - if Err /= E_Ok then - Eti_Exception (Err); + Eti_Exception (Form_Opts_Off (Frm, Options)); end if; end Switch_Options; -- | @@ -886,12 +777,11 @@ package body Terminal_Interface.Curses.Forms is procedure Get_Options (Frm : Form; Options : out Form_Option_Set) is - function Form_Opts (Frm : Form) return C_Int; + function Form_Opts (Frm : Form) return Form_Option_Set; pragma Import (C, Form_Opts, "form_opts"); - Res : constant C_Int := Form_Opts (Frm); begin - Options := CInt_2_FrmOS (Res); + Options := Form_Opts (Frm); end Get_Options; -- | -- | @@ -913,20 +803,16 @@ package body Terminal_Interface.Curses.Forms is procedure Post (Frm : Form; Post : Boolean := True) is - function M_Post (Frm : Form) return C_Int; + function M_Post (Frm : Form) return Eti_Error; pragma Import (C, M_Post, "post_form"); - function M_Unpost (Frm : Form) return C_Int; + function M_Unpost (Frm : Form) return Eti_Error; pragma Import (C, M_Unpost, "unpost_form"); - Res : Eti_Error; begin if Post then - Res := M_Post (Frm); + Eti_Exception (M_Post (Frm)); else - Res := M_Unpost (Frm); - end if; - if Res /= E_Ok then - Eti_Exception (Res); + Eti_Exception (M_Unpost (Frm)); end if; end Post; -- | @@ -938,14 +824,11 @@ package body Terminal_Interface.Curses.Forms is -- | procedure Position_Cursor (Frm : Form) is - function Pos_Form_Cursor (Frm : Form) return C_Int; + function Pos_Form_Cursor (Frm : Form) return Eti_Error; pragma Import (C, Pos_Form_Cursor, "pos_form_cursor"); - Res : constant Eti_Error := Pos_Form_Cursor (Frm); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Pos_Form_Cursor (Frm)); end Position_Cursor; -- | -- |===================================================================== @@ -993,25 +876,22 @@ package body Terminal_Interface.Curses.Forms is function Driver (Frm : Form; Key : Key_Code) return Driver_Result is - function Frm_Driver (Frm : Form; Key : C_Int) return C_Int; + function Frm_Driver (Frm : Form; Key : C_Int) return Eti_Error; pragma Import (C, Frm_Driver, "form_driver"); R : constant Eti_Error := Frm_Driver (Frm, C_Int (Key)); begin - if R /= E_Ok then - if R = E_Unknown_Command then + case R is + when E_Unknown_Command => return Unknown_Request; - elsif R = E_Invalid_Field then + when E_Invalid_Field => return Invalid_Field; - elsif R = E_Request_Denied then + when E_Request_Denied => return Request_Denied; - else + when others => Eti_Exception (R); return Form_Ok; - end if; - else - return Form_Ok; - end if; + end case; end Driver; -- | -- |===================================================================== @@ -1023,14 +903,11 @@ package body Terminal_Interface.Curses.Forms is procedure Set_Current (Frm : Form; Fld : Field) is - function Set_Current_Fld (Frm : Form; Fld : Field) return C_Int; + function Set_Current_Fld (Frm : Form; Fld : Field) return Eti_Error; pragma Import (C, Set_Current_Fld, "set_current_field"); - Res : constant Eti_Error := Set_Current_Fld (Frm, Fld); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Current_Fld (Frm, Fld)); end Set_Current; -- | -- | @@ -1053,14 +930,11 @@ package body Terminal_Interface.Curses.Forms is procedure Set_Page (Frm : Form; Page : Page_Number := Page_Number'First) is - function Set_Frm_Page (Frm : Form; Pg : C_Int) return C_Int; + function Set_Frm_Page (Frm : Form; Pg : C_Int) return Eti_Error; pragma Import (C, Set_Frm_Page, "set_form_page"); - Res : constant Eti_Error := Set_Frm_Page (Frm, C_Int (Page)); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Frm_Page (Frm, C_Int (Page))); end Set_Page; -- | -- | @@ -1102,14 +976,11 @@ package body Terminal_Interface.Curses.Forms is procedure Set_New_Page (Fld : Field; New_Page : Boolean := True) is - function Set_Page (Fld : Field; Flg : C_Int) return C_Int; + function Set_Page (Fld : Field; Flg : C_Int) return Eti_Error; pragma Import (C, Set_Page, "set_new_page"); - Res : constant Eti_Error := Set_Page (Fld, Boolean'Pos (New_Page)); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Page (Fld, Boolean'Pos (New_Page))); end Set_New_Page; -- | -- | diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus-item_user_data.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus-item_user_data.adb similarity index 91% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus-item_user_data.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus-item_user_data.adb index eb06d09..6374376 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus-item_user_data.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus-item_user_data.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1999-2009,2014 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 -- @@ -35,28 +36,22 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.16 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ -with Interfaces.C; with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; package body Terminal_Interface.Curses.Menus.Item_User_Data is - use type Interfaces.C.int; - procedure Set_User_Data (Itm : Item; Data : User_Access) is function Set_Item_Userptr (Itm : Item; - Addr : User_Access) return C_Int; + Addr : User_Access) return Eti_Error; pragma Import (C, Set_Item_Userptr, "set_item_userptr"); - Res : constant Eti_Error := Set_Item_Userptr (Itm, Data); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Item_Userptr (Itm, Data)); end Set_User_Data; function Get_User_Data (Itm : Item) return User_Access diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb similarity index 92% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb index 7d66a8c..7c3ccfa 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus-menu_user_data.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1999-2009,2014 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 -- @@ -35,27 +36,23 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.13 $ +-- $Revision: 1.17 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; package body Terminal_Interface.Curses.Menus.Menu_User_Data is - use type Interfaces.C.int; - procedure Set_User_Data (Men : Menu; Data : User_Access) is function Set_Menu_Userptr (Men : Menu; - Data : User_Access) return C_Int; + Data : User_Access) return Eti_Error; pragma Import (C, Set_Menu_Userptr, "set_menu_userptr"); - Res : constant Eti_Error := Set_Menu_Userptr (Men, Data); begin - if Res /= E_Ok then - Eti_Exception (Res); - end if; + Eti_Exception (Set_Menu_Userptr (Men, Data)); + end Set_User_Data; function Get_User_Data (Men : Menu) return User_Access diff --git a/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus.adb new file mode 100644 index 0000000..76f3e36 --- /dev/null +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-menus.adb @@ -0,0 +1,904 @@ +------------------------------------------------------------------------------ +-- -- +-- GNAT ncurses Binding -- +-- -- +-- Terminal_Interface.Curses.Menus -- +-- -- +-- B O D Y -- +-- -- +------------------------------------------------------------------------------ +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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, 1996 +-- Version Control: +-- $Revision: 1.34 $ +-- $Date: 2020/02/02 23:34:34 $ +-- Binding Version 01.00 +------------------------------------------------------------------------------ +with Ada.Unchecked_Deallocation; +with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; + +with Interfaces.C; use Interfaces.C; +with Interfaces.C.Strings; use Interfaces.C.Strings; +with Interfaces.C.Pointers; + +package body Terminal_Interface.Curses.Menus is + + type C_Item_Array is array (Natural range <>) of aliased Item; + package I_Array is new + Interfaces.C.Pointers (Natural, Item, C_Item_Array, Null_Item); + + subtype chars_ptr is Interfaces.C.Strings.chars_ptr; + +------------------------------------------------------------------------------ + procedure Request_Name (Key : Menu_Request_Code; + Name : out String) + is + function Request_Name (Key : C_Int) return chars_ptr; + pragma Import (C, Request_Name, "menu_request_name"); + begin + Fill_String (Request_Name (C_Int (Key)), Name); + end Request_Name; + + function Request_Name (Key : Menu_Request_Code) return String + is + function Request_Name (Key : C_Int) return chars_ptr; + pragma Import (C, Request_Name, "menu_request_name"); + begin + return Fill_String (Request_Name (C_Int (Key))); + end Request_Name; + + function Create (Name : String; + Description : String := "") return Item + is + type Char_Ptr is access all Interfaces.C.char; + function Newitem (Name, Desc : Char_Ptr) return Item; + pragma Import (C, Newitem, "new_item"); + + type Name_String is new char_array (0 .. Name'Length); + type Name_String_Ptr is access Name_String; + pragma Controlled (Name_String_Ptr); + + type Desc_String is new char_array (0 .. Description'Length); + type Desc_String_Ptr is access Desc_String; + pragma Controlled (Desc_String_Ptr); + + Name_Str : constant Name_String_Ptr := new Name_String; + Desc_Str : constant Desc_String_Ptr := new Desc_String; + Name_Len, Desc_Len : size_t; + Result : Item; + begin + To_C (Name, Name_Str.all, Name_Len); + To_C (Description, Desc_Str.all, Desc_Len); + Result := Newitem (Name_Str.all (Name_Str.all'First)'Access, + Desc_Str.all (Desc_Str.all'First)'Access); + if Result = Null_Item then + raise Eti_System_Error; + end if; + return Result; + end Create; + + procedure Delete (Itm : in out Item) + is + function Descname (Itm : Item) return chars_ptr; + pragma Import (C, Descname, "item_description"); + function Itemname (Itm : Item) return chars_ptr; + pragma Import (C, Itemname, "item_name"); + + function Freeitem (Itm : Item) return Eti_Error; + pragma Import (C, Freeitem, "free_item"); + + Ptr : chars_ptr; + begin + Ptr := Descname (Itm); + if Ptr /= Null_Ptr then + Interfaces.C.Strings.Free (Ptr); + end if; + Ptr := Itemname (Itm); + if Ptr /= Null_Ptr then + Interfaces.C.Strings.Free (Ptr); + end if; + Eti_Exception (Freeitem (Itm)); + Itm := Null_Item; + end Delete; +------------------------------------------------------------------------------- + procedure Set_Value (Itm : Item; + Value : Boolean := True) + is + function Set_Item_Val (Itm : Item; + Val : C_Int) return Eti_Error; + pragma Import (C, Set_Item_Val, "set_item_value"); + + begin + Eti_Exception (Set_Item_Val (Itm, Boolean'Pos (Value))); + end Set_Value; + + function Value (Itm : Item) return Boolean + is + function Item_Val (Itm : Item) return C_Int; + pragma Import (C, Item_Val, "item_value"); + begin + if Item_Val (Itm) = Curses_False then + return False; + else + return True; + end if; + end Value; + +------------------------------------------------------------------------------- + function Visible (Itm : Item) return Boolean + is + function Item_Vis (Itm : Item) return C_Int; + pragma Import (C, Item_Vis, "item_visible"); + begin + if Item_Vis (Itm) = Curses_False then + return False; + else + return True; + end if; + end Visible; +------------------------------------------------------------------------------- + procedure Set_Options (Itm : Item; + Options : Item_Option_Set) + is + function Set_Item_Opts (Itm : Item; + Opt : Item_Option_Set) return Eti_Error; + pragma Import (C, Set_Item_Opts, "set_item_opts"); + + begin + Eti_Exception (Set_Item_Opts (Itm, Options)); + end Set_Options; + + procedure Switch_Options (Itm : Item; + Options : Item_Option_Set; + On : Boolean := True) + is + function Item_Opts_On (Itm : Item; + Opt : Item_Option_Set) return Eti_Error; + pragma Import (C, Item_Opts_On, "item_opts_on"); + function Item_Opts_Off (Itm : Item; + Opt : Item_Option_Set) return Eti_Error; + pragma Import (C, Item_Opts_Off, "item_opts_off"); + + begin + if On then + Eti_Exception (Item_Opts_On (Itm, Options)); + else + Eti_Exception (Item_Opts_Off (Itm, Options)); + end if; + end Switch_Options; + + procedure Get_Options (Itm : Item; + Options : out Item_Option_Set) + is + function Item_Opts (Itm : Item) return Item_Option_Set; + pragma Import (C, Item_Opts, "item_opts"); + + begin + Options := Item_Opts (Itm); + end Get_Options; + + function Get_Options (Itm : Item := Null_Item) return Item_Option_Set + is + Ios : Item_Option_Set; + begin + Get_Options (Itm, Ios); + return Ios; + end Get_Options; +------------------------------------------------------------------------------- + procedure Name (Itm : Item; + Name : out String) + is + function Itemname (Itm : Item) return chars_ptr; + pragma Import (C, Itemname, "item_name"); + begin + Fill_String (Itemname (Itm), Name); + end Name; + + function Name (Itm : Item) return String + is + function Itemname (Itm : Item) return chars_ptr; + pragma Import (C, Itemname, "item_name"); + begin + return Fill_String (Itemname (Itm)); + end Name; + + procedure Description (Itm : Item; + Description : out String) + is + function Descname (Itm : Item) return chars_ptr; + pragma Import (C, Descname, "item_description"); + begin + Fill_String (Descname (Itm), Description); + end Description; + + function Description (Itm : Item) return String + is + function Descname (Itm : Item) return chars_ptr; + pragma Import (C, Descname, "item_description"); + begin + return Fill_String (Descname (Itm)); + end Description; +------------------------------------------------------------------------------- + procedure Set_Current (Men : Menu; + Itm : Item) + is + function Set_Curr_Item (Men : Menu; + Itm : Item) return Eti_Error; + pragma Import (C, Set_Curr_Item, "set_current_item"); + + begin + Eti_Exception (Set_Curr_Item (Men, Itm)); + end Set_Current; + + function Current (Men : Menu) return Item + is + function Curr_Item (Men : Menu) return Item; + pragma Import (C, Curr_Item, "current_item"); + + Res : constant Item := Curr_Item (Men); + begin + if Res = Null_Item then + raise Menu_Exception; + end if; + return Res; + end Current; + + procedure Set_Top_Row (Men : Menu; + Line : Line_Position) + is + function Set_Toprow (Men : Menu; + Line : C_Int) return Eti_Error; + pragma Import (C, Set_Toprow, "set_top_row"); + + begin + Eti_Exception (Set_Toprow (Men, C_Int (Line))); + end Set_Top_Row; + + function Top_Row (Men : Menu) return Line_Position + is + function Toprow (Men : Menu) return C_Int; + pragma Import (C, Toprow, "top_row"); + + Res : constant C_Int := Toprow (Men); + begin + if Res = Curses_Err then + raise Menu_Exception; + end if; + return Line_Position (Res); + end Top_Row; + + function Get_Index (Itm : Item) return Positive + is + function Get_Itemindex (Itm : Item) return C_Int; + pragma Import (C, Get_Itemindex, "item_index"); + + Res : constant C_Int := Get_Itemindex (Itm); + begin + if Res = Curses_Err then + raise Menu_Exception; + end if; + return Positive (Natural (Res) + Positive'First); + end Get_Index; +------------------------------------------------------------------------------- + procedure Post (Men : Menu; + Post : Boolean := True) + is + function M_Post (Men : Menu) return Eti_Error; + pragma Import (C, M_Post, "post_menu"); + function M_Unpost (Men : Menu) return Eti_Error; + pragma Import (C, M_Unpost, "unpost_menu"); + + begin + if Post then + Eti_Exception (M_Post (Men)); + else + Eti_Exception (M_Unpost (Men)); + end if; + end Post; +------------------------------------------------------------------------------- + procedure Set_Options (Men : Menu; + Options : Menu_Option_Set) + is + function Set_Menu_Opts (Men : Menu; + Opt : Menu_Option_Set) return Eti_Error; + pragma Import (C, Set_Menu_Opts, "set_menu_opts"); + + begin + Eti_Exception (Set_Menu_Opts (Men, Options)); + end Set_Options; + + procedure Switch_Options (Men : Menu; + Options : Menu_Option_Set; + On : Boolean := True) + is + function Menu_Opts_On (Men : Menu; + Opt : Menu_Option_Set) return Eti_Error; + pragma Import (C, Menu_Opts_On, "menu_opts_on"); + function Menu_Opts_Off (Men : Menu; + Opt : Menu_Option_Set) return Eti_Error; + pragma Import (C, Menu_Opts_Off, "menu_opts_off"); + + begin + if On then + Eti_Exception (Menu_Opts_On (Men, Options)); + else + Eti_Exception (Menu_Opts_Off (Men, Options)); + end if; + end Switch_Options; + + procedure Get_Options (Men : Menu; + Options : out Menu_Option_Set) + is + function Menu_Opts (Men : Menu) return Menu_Option_Set; + pragma Import (C, Menu_Opts, "menu_opts"); + + begin + Options := Menu_Opts (Men); + end Get_Options; + + function Get_Options (Men : Menu := Null_Menu) return Menu_Option_Set + is + Mos : Menu_Option_Set; + begin + Get_Options (Men, Mos); + return Mos; + end Get_Options; +------------------------------------------------------------------------------- + procedure Set_Window (Men : Menu; + Win : Window) + is + function Set_Menu_Win (Men : Menu; + Win : Window) return Eti_Error; + pragma Import (C, Set_Menu_Win, "set_menu_win"); + + begin + Eti_Exception (Set_Menu_Win (Men, Win)); + end Set_Window; + + function Get_Window (Men : Menu) return Window + is + function Menu_Win (Men : Menu) return Window; + pragma Import (C, Menu_Win, "menu_win"); + + W : constant Window := Menu_Win (Men); + begin + return W; + end Get_Window; + + procedure Set_Sub_Window (Men : Menu; + Win : Window) + is + function Set_Menu_Sub (Men : Menu; + Win : Window) return Eti_Error; + pragma Import (C, Set_Menu_Sub, "set_menu_sub"); + + begin + Eti_Exception (Set_Menu_Sub (Men, Win)); + end Set_Sub_Window; + + function Get_Sub_Window (Men : Menu) return Window + is + function Menu_Sub (Men : Menu) return Window; + pragma Import (C, Menu_Sub, "menu_sub"); + + W : constant Window := Menu_Sub (Men); + begin + return W; + end Get_Sub_Window; + + procedure Scale (Men : Menu; + Lines : out Line_Count; + Columns : out Column_Count) + is + type C_Int_Access is access all C_Int; + function M_Scale (Men : Menu; + Yp, Xp : C_Int_Access) return Eti_Error; + pragma Import (C, M_Scale, "scale_menu"); + + X, Y : aliased C_Int; + begin + Eti_Exception (M_Scale (Men, Y'Access, X'Access)); + Lines := Line_Count (Y); + Columns := Column_Count (X); + end Scale; +------------------------------------------------------------------------------- + procedure Position_Cursor (Men : Menu) + is + function Pos_Menu_Cursor (Men : Menu) return Eti_Error; + pragma Import (C, Pos_Menu_Cursor, "pos_menu_cursor"); + + begin + Eti_Exception (Pos_Menu_Cursor (Men)); + end Position_Cursor; + +------------------------------------------------------------------------------- + procedure Set_Mark (Men : Menu; + Mark : String) + is + type Char_Ptr is access all Interfaces.C.char; + function Set_Mark (Men : Menu; + Mark : Char_Ptr) return Eti_Error; + pragma Import (C, Set_Mark, "set_menu_mark"); + + Txt : char_array (0 .. Mark'Length); + Len : size_t; + begin + To_C (Mark, Txt, Len); + Eti_Exception (Set_Mark (Men, Txt (Txt'First)'Access)); + end Set_Mark; + + procedure Mark (Men : Menu; + Mark : out String) + is + function Get_Menu_Mark (Men : Menu) return chars_ptr; + pragma Import (C, Get_Menu_Mark, "menu_mark"); + begin + Fill_String (Get_Menu_Mark (Men), Mark); + end Mark; + + function Mark (Men : Menu) return String + is + function Get_Menu_Mark (Men : Menu) return chars_ptr; + pragma Import (C, Get_Menu_Mark, "menu_mark"); + begin + return Fill_String (Get_Menu_Mark (Men)); + end Mark; + +------------------------------------------------------------------------------- + procedure Set_Foreground + (Men : Menu; + Fore : Character_Attribute_Set := Normal_Video; + Color : Color_Pair := Color_Pair'First) + is + function Set_Menu_Fore (Men : Menu; + Attr : Attributed_Character) return Eti_Error; + pragma Import (C, Set_Menu_Fore, "set_menu_fore"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Fore); + begin + Eti_Exception (Set_Menu_Fore (Men, Ch)); + end Set_Foreground; + + procedure Foreground (Men : Menu; + Fore : out Character_Attribute_Set) + is + function Menu_Fore (Men : Menu) return Attributed_Character; + pragma Import (C, Menu_Fore, "menu_fore"); + begin + Fore := Menu_Fore (Men).Attr; + end Foreground; + + procedure Foreground (Men : Menu; + Fore : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Menu_Fore (Men : Menu) return Attributed_Character; + pragma Import (C, Menu_Fore, "menu_fore"); + begin + Fore := Menu_Fore (Men).Attr; + Color := Menu_Fore (Men).Color; + end Foreground; + + procedure Set_Background + (Men : Menu; + Back : Character_Attribute_Set := Normal_Video; + Color : Color_Pair := Color_Pair'First) + is + function Set_Menu_Back (Men : Menu; + Attr : Attributed_Character) return Eti_Error; + pragma Import (C, Set_Menu_Back, "set_menu_back"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Back); + begin + Eti_Exception (Set_Menu_Back (Men, Ch)); + end Set_Background; + + procedure Background (Men : Menu; + Back : out Character_Attribute_Set) + is + function Menu_Back (Men : Menu) return Attributed_Character; + pragma Import (C, Menu_Back, "menu_back"); + begin + Back := Menu_Back (Men).Attr; + end Background; + + procedure Background (Men : Menu; + Back : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Menu_Back (Men : Menu) return Attributed_Character; + pragma Import (C, Menu_Back, "menu_back"); + begin + Back := Menu_Back (Men).Attr; + Color := Menu_Back (Men).Color; + end Background; + + procedure Set_Grey (Men : Menu; + Grey : Character_Attribute_Set := Normal_Video; + Color : Color_Pair := Color_Pair'First) + is + function Set_Menu_Grey (Men : Menu; + Attr : Attributed_Character) return Eti_Error; + pragma Import (C, Set_Menu_Grey, "set_menu_grey"); + + Ch : constant Attributed_Character := (Ch => Character'First, + Color => Color, + Attr => Grey); + + begin + Eti_Exception (Set_Menu_Grey (Men, Ch)); + end Set_Grey; + + procedure Grey (Men : Menu; + Grey : out Character_Attribute_Set) + is + function Menu_Grey (Men : Menu) return Attributed_Character; + pragma Import (C, Menu_Grey, "menu_grey"); + begin + Grey := Menu_Grey (Men).Attr; + end Grey; + + procedure Grey (Men : Menu; + Grey : out Character_Attribute_Set; + Color : out Color_Pair) + is + function Menu_Grey (Men : Menu) return Attributed_Character; + pragma Import (C, Menu_Grey, "menu_grey"); + begin + Grey := Menu_Grey (Men).Attr; + Color := Menu_Grey (Men).Color; + end Grey; + + procedure Set_Pad_Character (Men : Menu; + Pad : Character := Space) + is + function Set_Menu_Pad (Men : Menu; + Ch : C_Int) return Eti_Error; + pragma Import (C, Set_Menu_Pad, "set_menu_pad"); + + begin + Eti_Exception (Set_Menu_Pad (Men, C_Int (Character'Pos (Pad)))); + end Set_Pad_Character; + + procedure Pad_Character (Men : Menu; + Pad : out Character) + is + function Menu_Pad (Men : Menu) return C_Int; + pragma Import (C, Menu_Pad, "menu_pad"); + begin + Pad := Character'Val (Menu_Pad (Men)); + end Pad_Character; +------------------------------------------------------------------------------- + procedure Set_Spacing (Men : Menu; + Descr : Column_Position := 0; + Row : Line_Position := 0; + Col : Column_Position := 0) + is + function Set_Spacing (Men : Menu; + D, R, C : C_Int) return Eti_Error; + pragma Import (C, Set_Spacing, "set_menu_spacing"); + + begin + Eti_Exception (Set_Spacing (Men, + C_Int (Descr), + C_Int (Row), + C_Int (Col))); + end Set_Spacing; + + procedure Spacing (Men : Menu; + Descr : out Column_Position; + Row : out Line_Position; + Col : out Column_Position) + is + type C_Int_Access is access all C_Int; + function Get_Spacing (Men : Menu; + D, R, C : C_Int_Access) return Eti_Error; + pragma Import (C, Get_Spacing, "menu_spacing"); + + D, R, C : aliased C_Int; + begin + Eti_Exception (Get_Spacing (Men, + D'Access, + R'Access, + C'Access)); + Descr := Column_Position (D); + Row := Line_Position (R); + Col := Column_Position (C); + end Spacing; +------------------------------------------------------------------------------- + function Set_Pattern (Men : Menu; + Text : String) return Boolean + is + type Char_Ptr is access all Interfaces.C.char; + function Set_Pattern (Men : Menu; + Pattern : Char_Ptr) return Eti_Error; + pragma Import (C, Set_Pattern, "set_menu_pattern"); + + S : char_array (0 .. Text'Length); + L : size_t; + Res : Eti_Error; + begin + To_C (Text, S, L); + Res := Set_Pattern (Men, S (S'First)'Access); + case Res is + when E_No_Match => + return False; + when others => + Eti_Exception (Res); + return True; + end case; + end Set_Pattern; + + procedure Pattern (Men : Menu; + Text : out String) + is + function Get_Pattern (Men : Menu) return chars_ptr; + pragma Import (C, Get_Pattern, "menu_pattern"); + begin + Fill_String (Get_Pattern (Men), Text); + end Pattern; +------------------------------------------------------------------------------- + procedure Set_Format (Men : Menu; + Lines : Line_Count; + Columns : Column_Count) + is + function Set_Menu_Fmt (Men : Menu; + Lin : C_Int; + Col : C_Int) return Eti_Error; + pragma Import (C, Set_Menu_Fmt, "set_menu_format"); + + begin + Eti_Exception (Set_Menu_Fmt (Men, + C_Int (Lines), + C_Int (Columns))); + + end Set_Format; + + procedure Format (Men : Menu; + Lines : out Line_Count; + Columns : out Column_Count) + is + type C_Int_Access is access all C_Int; + function Menu_Fmt (Men : Menu; + Y, X : C_Int_Access) return Eti_Error; + pragma Import (C, Menu_Fmt, "menu_format"); + + L, C : aliased C_Int; + begin + Eti_Exception (Menu_Fmt (Men, L'Access, C'Access)); + Lines := Line_Count (L); + Columns := Column_Count (C); + end Format; +------------------------------------------------------------------------------- + procedure Set_Item_Init_Hook (Men : Menu; + Proc : Menu_Hook_Function) + is + function Set_Item_Init (Men : Menu; + Proc : Menu_Hook_Function) return Eti_Error; + pragma Import (C, Set_Item_Init, "set_item_init"); + + begin + Eti_Exception (Set_Item_Init (Men, Proc)); + end Set_Item_Init_Hook; + + procedure Set_Item_Term_Hook (Men : Menu; + Proc : Menu_Hook_Function) + is + function Set_Item_Term (Men : Menu; + Proc : Menu_Hook_Function) return Eti_Error; + pragma Import (C, Set_Item_Term, "set_item_term"); + + begin + Eti_Exception (Set_Item_Term (Men, Proc)); + end Set_Item_Term_Hook; + + procedure Set_Menu_Init_Hook (Men : Menu; + Proc : Menu_Hook_Function) + is + function Set_Menu_Init (Men : Menu; + Proc : Menu_Hook_Function) return Eti_Error; + pragma Import (C, Set_Menu_Init, "set_menu_init"); + + begin + Eti_Exception (Set_Menu_Init (Men, Proc)); + end Set_Menu_Init_Hook; + + procedure Set_Menu_Term_Hook (Men : Menu; + Proc : Menu_Hook_Function) + is + function Set_Menu_Term (Men : Menu; + Proc : Menu_Hook_Function) return Eti_Error; + pragma Import (C, Set_Menu_Term, "set_menu_term"); + + begin + Eti_Exception (Set_Menu_Term (Men, Proc)); + end Set_Menu_Term_Hook; + + function Get_Item_Init_Hook (Men : Menu) return Menu_Hook_Function + is + function Item_Init (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Item_Init, "item_init"); + begin + return Item_Init (Men); + end Get_Item_Init_Hook; + + function Get_Item_Term_Hook (Men : Menu) return Menu_Hook_Function + is + function Item_Term (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Item_Term, "item_term"); + begin + return Item_Term (Men); + end Get_Item_Term_Hook; + + function Get_Menu_Init_Hook (Men : Menu) return Menu_Hook_Function + is + function Menu_Init (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Menu_Init, "menu_init"); + begin + return Menu_Init (Men); + end Get_Menu_Init_Hook; + + function Get_Menu_Term_Hook (Men : Menu) return Menu_Hook_Function + is + function Menu_Term (Men : Menu) return Menu_Hook_Function; + pragma Import (C, Menu_Term, "menu_term"); + begin + return Menu_Term (Men); + end Get_Menu_Term_Hook; +------------------------------------------------------------------------------- + procedure Redefine (Men : Menu; + Items : Item_Array_Access) + is + function Set_Items (Men : Menu; + Items : System.Address) return Eti_Error; + pragma Import (C, Set_Items, "set_menu_items"); + + begin + pragma Assert (Items.all (Items'Last) = Null_Item); + if Items.all (Items'Last) /= Null_Item then + raise Menu_Exception; + else + Eti_Exception (Set_Items (Men, Items.all'Address)); + end if; + end Redefine; + + function Item_Count (Men : Menu) return Natural + is + function Count (Men : Menu) return C_Int; + pragma Import (C, Count, "item_count"); + begin + return Natural (Count (Men)); + end Item_Count; + + function Items (Men : Menu; + Index : Positive) return Item + is + use I_Array; + + function C_Mitems (Men : Menu) return Pointer; + pragma Import (C, C_Mitems, "menu_items"); + + P : Pointer := C_Mitems (Men); + begin + if P = null or else Index > Item_Count (Men) then + raise Menu_Exception; + else + P := P + ptrdiff_t (C_Int (Index) - 1); + return P.all; + end if; + end Items; + +------------------------------------------------------------------------------- + function Create (Items : Item_Array_Access) return Menu + is + function Newmenu (Items : System.Address) return Menu; + pragma Import (C, Newmenu, "new_menu"); + + M : Menu; + begin + pragma Assert (Items.all (Items'Last) = Null_Item); + if Items.all (Items'Last) /= Null_Item then + raise Menu_Exception; + else + M := Newmenu (Items.all'Address); + if M = Null_Menu then + raise Menu_Exception; + end if; + return M; + end if; + end Create; + + procedure Delete (Men : in out Menu) + is + function Free (Men : Menu) return Eti_Error; + pragma Import (C, Free, "free_menu"); + + begin + Eti_Exception (Free (Men)); + Men := Null_Menu; + end Delete; + +------------------------------------------------------------------------------ + function Driver (Men : Menu; + Key : Key_Code) return Driver_Result + is + function Driver (Men : Menu; + Key : C_Int) return Eti_Error; + pragma Import (C, Driver, "menu_driver"); + + R : constant Eti_Error := Driver (Men, C_Int (Key)); + begin + case R is + when E_Unknown_Command => + return Unknown_Request; + when E_No_Match => + return No_Match; + when E_Request_Denied | E_Not_Selectable => + return Request_Denied; + when others => + Eti_Exception (R); + return Menu_Ok; + end case; + end Driver; + + procedure Free (IA : in out Item_Array_Access; + Free_Items : Boolean := False) + is + procedure Release is new Ada.Unchecked_Deallocation + (Item_Array, Item_Array_Access); + begin + if IA /= null and then Free_Items then + for I in IA'First .. (IA'Last - 1) loop + if IA.all (I) /= Null_Item then + Delete (IA.all (I)); + end if; + end loop; + end if; + Release (IA); + end Free; + +------------------------------------------------------------------------------- + function Default_Menu_Options return Menu_Option_Set + is + begin + return Get_Options (Null_Menu); + end Default_Menu_Options; + + function Default_Item_Options return Item_Option_Set + is + begin + return Get_Options (Null_Item); + end Default_Item_Options; +------------------------------------------------------------------------------- + +end Terminal_Interface.Curses.Menus; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-mouse.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-mouse.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-mouse.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-mouse.adb index 9b40326..a8efd34 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-mouse.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-mouse.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. -- +-- Copyright 2018,2020 Thomas E. Dickey -- +-- Copyright 1999-2009,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.24 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.28 $ +-- $Date: 2020/06/27 18:50:44 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; @@ -45,8 +46,6 @@ use Interfaces; package body Terminal_Interface.Curses.Mouse is - use type System.Bit_Order; - function Has_Mouse return Boolean is function Mouse_Avail return C_Int; @@ -148,6 +147,7 @@ package body Terminal_Interface.Curses.Mouse is Button := Button4; end if; if Button in Real_Buttons then + State := Released; -- preset to non real button; L := 2 ** (6 * Mouse_Button'Pos (Button)); for I in Button_State'Range loop if (Mask and L) /= 0 then @@ -199,7 +199,8 @@ package body Terminal_Interface.Curses.Mouse is pragma Import (C, Wenclose, "wenclose"); begin if Wenclose (Win, C_Int (Event.Y), C_Int (Event.X)) - = Curses_Bool_False then + = Curses_Bool_False + then return False; else return True; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-panels-user_data.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-panels-user_data.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-panels-user_data.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-panels-user_data.adb index d855f54..504b07d 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-panels-user_data.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-panels-user_data.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Interfaces.C; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-panels.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-panels.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-panels.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-panels.adb index 84e29e5..8602f32 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-panels.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-panels.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2004,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2004,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.14 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-putwin.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-putwin.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-putwin.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-putwin.adb index 986cd6b..cbaeaf2 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-putwin.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-putwin.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.3 $ +-- $Revision: 1.5 $ -- Binding Version 01.00 with Ada.Streams.Stream_IO.C_Streams; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-putwin.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-putwin.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-putwin.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-putwin.ads index d302bdc..df7b0d1 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-putwin.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-putwin.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.3 $ +-- $Revision: 1.5 $ -- Binding Version 01.00 with Ada.Streams.Stream_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-termcap.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-termcap.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-termcap.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-termcap.adb index 6438657..d09457c 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-termcap.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-termcap.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2006,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.13 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-termcap.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-termcap.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-termcap.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-termcap.ads index dd01396..1450cba 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-termcap.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-termcap.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.3 $ +-- $Revision: 1.5 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-terminfo.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-terminfo.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-terminfo.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-terminfo.adb index 9b3c9d5..c15fa3d 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-terminfo.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-terminfo.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2006,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.6 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.7 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-terminfo.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-terminfo.ads similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-terminfo.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-terminfo.ads index fb39bf1..efde241 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-terminfo.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-terminfo.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2000-2002,2003 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.3 $ +-- $Revision: 1.5 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-aux.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-aux.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-aux.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-aux.adb index 50a4e44..91307b7 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-aux.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-aux.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2006,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.13 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.14 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package body Terminal_Interface.Curses.Text_IO.Aux is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-aux.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-aux.ads similarity index 94% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-aux.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-aux.ads index 6b50b33..946e415 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-aux.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-aux.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2006,2009 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.14 $ --- $Date: 2009/12/26 17:38:58 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ private package Terminal_Interface.Curses.Text_IO.Aux is diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-complex_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-complex_io.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-complex_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-complex_io.adb index 6c2e144..e05571d 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-complex_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-complex_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Terminal_Interface.Curses.Text_IO.Float_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-complex_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-complex_io.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-complex_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-complex_io.ads index e613458..f70cd81 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-complex_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-complex_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Numerics.Generic_Complex_Types; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb index 1b1ad8c..a8bea13 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-decimal_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads index 1590127..7678ee0 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-decimal_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ generic diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb similarity index 96% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb index 53f3e55..b1d53b1 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-enumeration_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads index a981f0e..11aa198 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-enumeration_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ generic diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb index 13a3420..79474d2 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-fixed_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads index 3c22a01..8205581 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-fixed_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ generic diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-float_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-float_io.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-float_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-float_io.adb index af667b4..a9aa156 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-float_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-float_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-float_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-float_io.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-float_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-float_io.ads index b0a68d0..9797bcf 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-float_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-float_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ generic diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-integer_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-integer_io.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-integer_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-integer_io.adb index 4d19c42..0161151 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-integer_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-integer_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-integer_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-integer_io.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-integer_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-integer_io.ads index 9ffe1e0..4ef79d8 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-integer_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-integer_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ generic diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-modular_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-modular_io.adb similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-modular_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-modular_io.adb index fe8a6d0..85c6db4 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-modular_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-modular_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.11 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-modular_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-modular_io.ads similarity index 95% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-modular_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-modular_io.ads index 68e70e5..d876447 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io-modular_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io-modular_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.12 $ +-- $Revision: 1.13 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ generic diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io.adb b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io.adb similarity index 97% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io.adb rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io.adb index e2ca27f..c7238e2 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io.adb +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io.adb @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2011,2014 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.20 $ --- $Date: 2011/03/22 23:38:49 $ +-- $Revision: 1.23 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package body Terminal_Interface.Curses.Text_IO is @@ -205,7 +206,7 @@ package body Terminal_Interface.Curses.Text_IO is end if; Get_Cursor_Position (Win, Y1, X); - pragma Unreferenced (X); + pragma Warnings (Off, X); -- unreferenced N := Natural (To); N := N - 1; Y2 := Line_Position (N); if Y2 < Y1 then diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io.ads similarity index 97% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io.ads index 9c40329..33c1942 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-text_io.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-text_io.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2009 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 -- @@ -35,7 +36,7 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.14 $ +-- $Revision: 1.15 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ with Ada.Text_IO; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-trace.adb_p b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-trace.adb_p similarity index 77% rename from deps/ncurses-5.9/Ada95/src/terminal_interface-curses-trace.adb_p rename to deps/ncurses-6.3/Ada95/src/terminal_interface-curses-trace.adb_p index d2117a4..11acf3d 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface-curses-trace.adb_p +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface-curses-trace.adb_p @@ -7,7 +7,8 @@ -- B O D Y -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 2000-2004,2009 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2001-2011,2014 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 -- @@ -35,60 +36,39 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.7 $ +-- $Revision: 1.12 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ #if ADA_TRACE then with Interfaces.C; use Interfaces.C; -with Terminal_Interface.Curses.Aux; use Terminal_Interface.Curses.Aux; -with Ada.Unchecked_Conversion; #end if; package body Terminal_Interface.Curses.Trace is #if ADA_TRACE then - type C_TraceType is new C_UInt; - - function TraceAda_To_TraceC is new - Ada.Unchecked_Conversion (Source => Trace_Attribute_Set, - Target => C_TraceType); - procedure Trace_On (x : Trace_Attribute_Set) is - procedure traceC (y : C_TraceType); + procedure traceC (y : Trace_Attribute_Set); pragma Import (C, traceC, "trace"); begin - traceC (TraceAda_To_TraceC (x)); + traceC (x); end Trace_On; - -- 75. (12) A C function that takes a variable number of arguments can - -- correspond to several Ada subprograms, taking various specific - -- numbers and types of parameters. - procedure Trace_Put (str : String) is procedure tracef (format : char_array; s : char_array); pragma Import (C, tracef, "_traces"); - Txt : char_array (0 .. str'Length); - Length : size_t; - formatstr : constant String := "%s" & ASCII.NUL; - formattxt : char_array (0 .. formatstr'Length); + -- _traces() is defined in c_varargs_to_ada.h begin - To_C (formatstr, formattxt, Length); - To_C (str, Txt, Length); - tracef (formattxt, Txt); + tracef (To_C ("%s"), To_C (str)); end Trace_Put; #else procedure Trace_On (x : Trace_Attribute_Set) is -#if PRAGMA_UNREF - pragma Unreferenced (x); -#end if; + pragma Warnings (Off, x); -- unreferenced begin null; end Trace_On; procedure Trace_Put (str : String) is -#if PRAGMA_UNREF - pragma Unreferenced (str); -#end if; + pragma Warnings (Off, str); -- unreferenced begin null; end Trace_Put; diff --git a/deps/ncurses-5.9/Ada95/src/terminal_interface.ads b/deps/ncurses-6.3/Ada95/src/terminal_interface.ads similarity index 93% rename from deps/ncurses-5.9/Ada95/src/terminal_interface.ads rename to deps/ncurses-6.3/Ada95/src/terminal_interface.ads index fdaaf9f..a78f145 100644 --- a/deps/ncurses-5.9/Ada95/src/terminal_interface.ads +++ b/deps/ncurses-6.3/Ada95/src/terminal_interface.ads @@ -7,7 +7,8 @@ -- S P E C -- -- -- ------------------------------------------------------------------------------ --- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1999-2003,2006 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 -- @@ -35,8 +36,8 @@ ------------------------------------------------------------------------------ -- Author: Juergen Pfeifer, 1996 -- Version Control: --- $Revision: 1.14 $ --- $Date: 2006/06/25 14:30:22 $ +-- $Revision: 1.15 $ +-- $Date: 2020/02/02 23:34:34 $ -- Binding Version 01.00 ------------------------------------------------------------------------------ package Terminal_Interface is diff --git a/deps/ncurses-6.3/COPYING b/deps/ncurses-6.3/COPYING new file mode 100644 index 0000000..3a22975 --- /dev/null +++ b/deps/ncurses-6.3/COPYING @@ -0,0 +1,29 @@ +Copyright 2018-2020,2021 Thomas E. Dickey +Copyright 1998-2017,2018 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. + +-- vile:txtmode fc=72 +-- $Id: COPYING,v 1.10 2021/01/01 09:54:30 tom Exp $ diff --git a/deps/ncurses-6.3/INSTALL b/deps/ncurses-6.3/INSTALL new file mode 100644 index 0000000..aacfd9a --- /dev/null +++ b/deps/ncurses-6.3/INSTALL @@ -0,0 +1,2439 @@ +------------------------------------------------------------------------------- +-- Copyright 2018-2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2017,2018 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. -- +------------------------------------------------------------------------------- +-- $Id: INSTALL,v 1.235 2021/10/19 23:34:17 tom Exp $ +--------------------------------------------------------------------- + How to install Ncurses/Terminfo on your system +--------------------------------------------------------------------- + + ************************************************************ + * READ ALL OF THIS FILE BEFORE YOU TRY TO INSTALL NCURSES. * + ************************************************************ + +You should be reading the file INSTALL in a directory called ncurses-d.d, where +d.d is the current version number. There should be several subdirectories, +including `c++', `form', `man', `menu', 'misc', `ncurses', `panel', `progs', +and `test'. See the README file for a roadmap to the package. + +If you are a distribution integrator or packager, please read and act on the +section titled FOR SYSTEM INTEGRATORS below. + +If you are converting from BSD curses and do not have root access, be sure +to read the BSD CONVERSION NOTES section below. + +If you are trying to build applications using gpm with ncurses, +read the USING NCURSES WITH GPM section below. + +If you are cross-compiling, see the note below on BUILDING WITH A CROSS-COMPILER. + +If you want to build the Ada95 binding, go to the Ada95 directory and +follow the instructions there. The Ada95 binding is not covered below. + + +REQUIREMENTS: +------------ + +You will need the following to build and install ncurses under UNIX: + + * ANSI C compiler (gcc, for instance) + * sh (bash will do) + * awk (mawk or gawk will do) + * sed + * BSD or System V style install (a script is enclosed) + +Ncurses has been also built in the OS/2 EMX environment. + + +INSTALLATION PROCEDURE: +---------------------- + +1. First, decide whether you want ncurses to replace your existing library (in + which case you'll need super-user privileges) or be installed in parallel + with it. + + The --prefix option to configure changes the root directory for installing + ncurses. The default is normally in subdirectories of /usr/local, except + for systems where ncurses is normally installed as a system library (see + "IF YOU ARE A SYSTEM INTEGRATOR"). Use --prefix=/usr to replace your + default curses distribution. + + The package gets installed beneath the --prefix directory as follows: + + In $(prefix)/bin: tic, infocmp, captoinfo, tset, + reset, clear, tput, toe, tabs + In $(prefix)/lib: libncurses*.* libcurses.a + In $(prefix)/share/terminfo: compiled terminal descriptions + In $(prefix)/include: C header files + Under $(prefix)/man: the manual pages + + Note that the configure script attempts to locate previous installation of + ncurses, and will set the default prefix according to where it finds the + ncurses headers. + + Do not use commands such as + + make install prefix=XXX + + to change the prefix after configuration, since the prefix value is used + for some absolute pathnames such as TERMINFO. Instead do this + + make install DESTDIR=XXX + + See also the discussion of --with-install-prefix. + +2. Type `./configure' in the top-level directory of the distribution to + configure ncurses for your operating system and create the Makefiles. + Besides --prefix, various configuration options are available to customize + the installation; use `./configure --help' to list the available options. + + If your operating system is not supported, read the PORTABILITY section in + the file ncurses/README for information on how to create a configuration + file for your system. + + The `configure' script generates makefile rules for one or more object + models and their associated libraries: + + libncurses.a (normal) + + libcurses.a (normal, a link to libncurses.a) + This gets left out if you configure with --disable-overwrite. + + libncurses.so (shared) + + libncurses_g.a (debug) + + libncurses_p.a (profile) + + libncurses.la (libtool) + + If you configure using the --enable-widec option, a "w" is appended to the + library names (e.g., libncursesw.a), and the resulting libraries support + wide-characters, e.g., via a UTF-8 locale. The corresponding header files + are compatible with the non-wide-character configuration; wide-character + features are provided by ifdef's in the header files. The wide-character + library interfaces are not binary-compatible with the non-wide-character + version. Building and running the wide-character code relies on a fairly + recent implementation of libiconv. We have built this configuration on + various systems using libiconv, sometimes requiring libutf8. + + If you configure using the --with-pthread option, a "t" is appended to + the library names (e.g., libncursest.a, libncursestw.a). + + If you do not specify any models, the normal and debug libraries will be + configured. Typing `configure' with no arguments is equivalent to: + + ./configure --with-normal --with-debug --enable-overwrite + + Typing + + ./configure --with-shared + + makes the shared libraries the default, resulting in + + ./configure --with-shared --with-normal --with-debug --enable-overwrite + + If you want only shared libraries, type + + ./configure --with-shared --without-normal --without-debug + + Rules for generating shared libraries are highly dependent upon the choice + of host system and compiler. We've been testing shared libraries on + several systems, but more work needs to be done to make shared libraries + work on other systems. + + If you have libtool installed, you can type + + ./configure --with-libtool + + to generate the appropriate static and/or shared libraries for your + platform using libtool. + + You can make curses and terminfo fall back to an existing file of termcap + definitions by configuring with --enable-termcap. If you do this, the + library will search /etc/termcap before the terminfo database, and will + also interpret the contents of the TERM environment variable. See the + section BSD CONVERSION NOTES below. + +3. Type `make'. Ignore any warnings, no error messages should be produced. + This should compile the ncurses library, the terminfo compiler tic(1), + captoinfo(1), infocmp(1), toe(1), clear(1) tset(1), reset(1), and tput(1) + programs (see the manual pages for explanation of what they do), some test + programs, and the panels, menus, and forms libraries. + +4. Run ncurses and several other test programs in the test directory to + verify that ncurses functions correctly before doing an install that + may overwrite system files. Read the file test/README for details on + the test programs. + + NOTE: You must have installed the terminfo database, or set the + environment variable $TERMINFO to point to a SVr4-compatible terminfo + database before running the test programs. Not all vendors' terminfo + databases are SVr4-compatible, but most seem to be. + + It is possible to configure ncurses to use other terminfo database formats. + A few are provided as examples in the include-directory (see --with-caps). + + If you run the test programs WITHOUT installing terminfo, ncurses may + read the termcap file and cache that in $HOME/.terminfo, which will + thereafter be used instead of the terminfo database. See the comments + on "--enable-getcap-cache", to see why this is a Bad Thing. + + The ncurses program is designed specifically to test the ncurses library. + You can use it to verify that the screen highlights work correctly, that + cursor addressing and window scrolling works OK, etc. + +5. Once you've tested, you can type `make install' to install libraries, + the programs, the terminfo database and the manual pages. Alternately, you + can type `make install' in each directory you want to install. In the + top-level directory, you can do a partial install using these commands: + + 'make install.progs' installs tic, infocmp, etc... + 'make install.includes' installs the headers. + 'make install.libs' installs the libraries (and the headers). + 'make install.data' installs the terminfo data. (Note: `tic' must + be installed before the terminfo data can be + compiled). + 'make install.man' installs the manual pages. + + ############################################################################ + # CAVEAT EMPTOR: `install.data' run as root will NUKE any existing # + # terminfo database. If you have any custom or unusual entries SAVE them # + # before you install ncurses. # + ############################################################################ + + The terminfo(5) manual page must be preprocessed with tbl(1) before + being formatted by nroff(1). Modern man(1) implementations tend to do + this by default, but you may want to look at your version's manual page + to be sure. You may also install the manual pages after preprocessing + with tbl(1) by specifying the configure option --with-manpage-tbl. + + If the system already has a curses library that you need to keep using + you'll need to distinguish between it and ncurses. See the discussion of + --disable-overwrite. If ncurses is installed outside the standard + directories (/usr/include and /usr/lib) then all your users will need to + use the -I option to compile programs and -L to link them. + + If you have another curses installed in your system and you accidentally + compile using its curses.h you'll end up with a large number of + undefined symbols at link time. + + IF YOU DO NOT HAVE ROOT: Change directory to the `progs' subdirectory + and run the `capconvert' script. This script will deduce various things + about your environment and use them to build you a private terminfo tree, + so you can use ncurses applications. + + If more than one user at your site does this, the space for the duplicate + trees is wasted. Try to get your site administrators to install a system- + wide terminfo tree instead. + + See the BSD CONVERSION NOTES section below for a few more details. + +6. The c++ directory has C++ classes that are built on top of ncurses and + panels. You must have c++ (and its libraries) installed before you can + compile and run the demo. + + Use --without-cxx-binding to tell configure to not build the C++ bindings + and demo. + + If you do not have C++, you must use the --without-cxx option to tell + the configure script to not attempt to determine the type of 'bool' + which may be supported by C++. IF YOU USE THIS OPTION, BE ADVISED THAT + YOU MAY NOT BE ABLE TO COMPILE (OR RUN) NCURSES APPLICATIONS WITH C++. + + +CONFIGURE OPTIONS: +----------------- + + The configure script provides a short list of its options when you type + + ./configure --help + + The --help and several options are common to all configure scripts that are + generated with autoconf. Those are all listed before the line + + --enable and --with options recognized: + + The other options are specific to this package. We list them in alphabetic + order. + + --disable-assumed-color + With ncurses 5.1, we introduced a new function, assume_default_colors() + which allows applications to specify what the default foreground and + background color are assumed to be. Most color applications use + full-screen color; but a few do not color the background. While the + assumed values can be overridden by invoking assume_default_colors(), + you may find it useful to set the assumed values to the pre-5.1 + convention, using this configure option. + + --disable-big-core + Assume machine has little memory. The configure script attempts to + determine if your machine has enough memory (about 6Mb) to compile the + terminfo database without writing portions to disk. Some allocators + return deceptive results, so you may have to override the configure + script. Or you may be building tic for a smaller machine. + + --disable-big-strings + Disable compile-time optimization of predefined tables which puts + all of their strings into a very long string, to reduce relocation + overhead. + + --disable-database + Use only built-in data. The ncurses libraries normally read terminfo + and termcap data from disk. You can configure ncurses to have a + built-in database, aka "fallback" entries. Embedded applications may + have no need for an external database. Some, but not all of the + programs are useful in this configuration, e.g., tset and tput versus + infocmp and tic. + + --disable-db-install + Do not install the terminal database. This is used to omit features + for packages, as done with --without-progs. + + --disable-echo + Use the option --disable-echo to make the build-log less verbose by + suppressing the display of the compile and link commands. This makes + it easier to see the compiler warnings. (You can always use "make -n" + to see the options that are used). + + --disable-ext-funcs + Disable function-extensions. Configure ncurses without the functions + that are not specified by XSI. See ncurses/modules for the exact + list of library modules that would be suppressed. + + --disable-gnat-projects + Disable GNAT projects even if usable, for testing old makefile rules. + + --disable-hashmap + Compile without hashmap scrolling-optimization code. This algorithm is + the default. + + --disable-home-terminfo + The $HOME/.terminfo directory is normally added to ncurses' search + list for reading/writing terminfo entries, since that directory is + more likely writable than the system terminfo database. Use this + option to disable the feature altogether. + + --disable-largefile + Disable compiler flags needed to use large-file interfaces. + + --disable-leaks + For testing, compile-in code that frees memory that normally would not + be freed, to simplify analysis of memory-leaks. + + Any implementation of curses must not free the memory associated with + a screen, since (even after calling endwin()), it must be available + for use in the next call to refresh(). There are also chunks of + memory held for performance reasons. That makes it hard to analyze + curses applications for memory leaks. To work around this, build a + debugging version of the ncurses library which frees those chunks + which it can, and provides the _nc_free_and_exit() function to free + the remainder and then exit. The ncurses utility and test programs + use this feature, e.g., via the ExitProgram() macro. + + Because this lies outside of the library's intended usage, it is not + normally considered part of the ABI. If there were some (as yet + unplanned) extension which frees memory in a manner that would let the + library resume and reallocate memory, then that would not use a "_nc_" + prefix. + + --disable-lib-suffixes + Suppress the "w", "t" or "tw" suffixes which normally would be added + to the library names for the --enable-widec and --with-pthread options. + + --disable-libtool-version + when using --with-libtool, control how the major/minor version numbers + are used for constructing the library name. + + The default uses the -version-number feature of libtool, which makes + the library names compatible (though not identical) with the standard + build using --with-shared. + + Use --disable-libtool-version to use the libtool -version-info feature. + This corresponds to the setting used before patch 20100515. + + Starting with patch 20141115, using this option causes the configure + script to apply the top-level VERSION file to the ABI version used + for libtool. + + --disable-lp64 + The header files will ignore use of the _LP64 symbol to make chtype + and mmask_t types 32 bits (they may be long on 64-bit hosts, for + compatibility with older releases). + + NOTE: this is potentially an ABI change, depending on existing + packages. The default for this option is "disabled" for ncurses + ABI 5, and "enabled" for ABI 6. + + --disable-macros + For testing, use functions rather than macros. The program will run + more slowly, but it is simpler to debug. This defines NCURSES_NOMACROS + at build time. See also the --enable-expanded option. + + --disable-overwrite + If you are installing ncurses on a system which contains another + development version of curses, or which could be confused by the loader + for another version, we recommend that you leave out the link to + -lcurses. The ncurses library is always available as -lncurses. + Disabling overwrite also causes the ncurses header files to be + installed into a subdirectory, e.g., /usr/local/include/ncurses, + rather than the include directory. This makes it simpler to avoid + compile-time conflicts with other versions of curses.h + + Putting the header files into a subdirectory assumes that applications + will follow the (standard) practice of including the headers with + reference to the subdirectory name. For instance, the normal ncurses + header would be included using + + #include + #include + + while the ncursesw headers would be found this way: + + #include + #include + + In either case (with or without the --disable-overwrite option), + almost all applications are designed to include a related set of + curses header files from the same directory. + + Manipulating the --includedir configure option to put header files + directly in a subdirectory of the normal include-directory defeats + this, and breaks builds of portable applications. Likewise, putting + some headers in /usr/include, and others in a subdirectory is a good + way to break builds. + + When configured with --disable-overwrite, the installed header files' + embedded #include's are adjusted to use the same style of includes + noted above. In particular, the unctrl.h header is included from + curses.h, which means that a makefile which tells the compiler to + include directly from the subdirectory will fail to compile correctly. + Without some special effort, it will either fail to compile at all, + or the compiler may find a different unctrl.h file. + + In addition to the curses library, a system may provide its own + versions of the add-on libraries (form, menu, panel), which would + not be compatible with ncurses. These options allow you to rename + ncurses' add-on libraries to avoid conflicts when linking: + + --with-form-libname=XXX + --with-menu-libname=XXX + --with-panel-libname=XXX + + Rather than renaming them abitrarily, a prefix or suffix is + recommended. An "n" prefix provides consistency with ncurses versus + curses, i.e., + + --with-form-libname=nform + --with-menu-libname=nmenu + --with-panel-libname=npanel + + --disable-pkg-ldflags + Omit options in $LDFLAGS and $EXTRA_LDFLAGS from the pkg-config ".pc" + and corresponding ncurses*-config script which normally are listed via + the "--libs" option. These options are normally used to facilitate + linking to ncurses when it was configured to use the rpath feature. + + See also --enable-rpath and --disable-rpath-hack. + + --disable-relink + If --enable-rpath is given, the generated makefiles normally will + rebuild shared libraries during install. Use this option to simply + copy whatever the linker produced. + + Static libraries cannot simply be copied because tools use timestamps + to determine if the library's symbol table is up to date. If your + install program supports the "-p" (preserve timestamp) option, that + is used when --disable-relink is given, to avoid rebuilding the symbol + table. + + Finally, some tools ignore the subsecond timestamps supported by some + filesystems. This option adds a 1-second sleep to help those tools + avoid unnecessary relinking during the install process. + + --disable-root-access + Compile with environment restriction, so most file-access is limited + when running via a setuid/setgid application. + + --disable-root-environ + Compile with environment restriction, so certain environment variables + are not available when running as root, or via a setuid/setgid + application. These are (for example $TERMINFO) those that allow the + search path for the terminfo or termcap entry to be customized. + + --disable-rpath-hack + Normally the configure script helps link libraries found in unusual + places by adding an rpath option to the link command. If you are + building packages, this feature may be redundant. Use this option + to suppress the feature. + + --disable-scroll-hints + Compile without scroll-hints code. This option is ignored when + hashmap scrolling is configured, which is the default. + + --disable-stripping + Do not strip installed executables. + + --disable-tic-depends + When building shared libraries, normally the tic library is linked to + depend upon the ncurses library (or equivalently, on the tinfo-library + if the --with-termlib option was given). The tic- and tinfo-library + ABIs do not depend on the --enable-widec option. Some packagers have + used this to reduce the number of library files which are packaged by + using only one copy of those libraries. To make this work properly, + the tic library must be built without an explicit dependency on the + underlying library (ncurses vs ncursesw, tinfo vs tinfow). Use this + configure option to do that. + For example + configure --with-ticlib --with-shared --disable-tic-depends + + --disable-tparm-varargs + Portable programs should call tparm() using the fixed-length parameter + list documented in X/Open. ncurses provides varargs support for this + function. Use --disable-tparm-varargs to disable this support. + + --enable-assertions + For testing, compile-in assertion code. This is used only for a few + places where ncurses cannot easily recover by returning an error code. + + --enable-broken_linker + A few platforms have what we consider a broken linker: it cannot link + objects from an archive solely by referring to data objects in those + files, but requires a function reference. This configure option + changes several data references to functions to work around this + problem. + + NOTE: With ncurses 5.1, this may not be necessary, since we are + told that some linkers interpret uninitialized global data as a + different type of reference which behaves as described above. We have + explicitly initialized all of the global data to work around the + problem. + + --enable-bsdpad + Recognize BSD-style prefix padding. Some ancient BSD programs (such as + nethack) call tputs("50") to implement delays. + + --enable-colorfgbg + Compile with experimental $COLORFGBG code. That environment variable + is set by some terminal emulators as a hint to applications, by + advertising the default foreground and background colors. During + initialization, ncurses sets color pair 0 to match this. + + --enable-const + The curses interface as documented in XSI is rather old, in fact + including features that precede ANSI C. The prototypes generally do + not make effective use of "const". When using stricter compilers (or + gcc with appropriate warnings), you may see warnings about the mismatch + between const and non-const data. We provide a configure option which + changes the interfaces to use const - quieting these warnings and + reflecting the actual use of the parameters more closely. The ncurses + library uses the symbol NCURSES_CONST for these instances of const, + and if you have asked for compiler warnings, will add gcc's const-qual + warning. There will still be warnings due to subtle inconsistencies + in the interface, but at a lower level. + + NOTE: configuring ncurses with this option may detract from the + portability of your applications by encouraging you to use const in + places where the XSI curses interface would not allow them. Similar + issues arise when porting to SVr4 curses, which uses const in even + fewer places. + + --enable-expanded + For testing, generate functions for certain macros to make them visible + as such to the debugger. See also the --disable-macros option. + + --enable-exp-win32 + When configuring for MinGW, use the experimental Windows 10 driver. + + --enable-ext-colors + Extend the cchar_t structure to allow more than 16 colors to be + encoded. This applies only to the wide-character (--enable-widec) + configuration. + + NOTE: using this option will make libraries which are not binary- + compatible with libncursesw 5.4. None of the interfaces change, but + applications which have an array of cchar_t's must be recompiled. + + --enable-ext-mouse + Modify the encoding of mouse state to make room for a 5th mouse button. + That allows one to use ncurses with a wheel mouse with xterm or + similar X terminal emulators. + + NOTE: using this option will make libraries which are not binary- + compatible with libncursesw 5.4. None of the interfaces change, but + applications which have mouse mask mmask_t's must be recompiled. + + --enable-ext-putwin + Modify the file-format written by putwin() to use printable text rather + than binary files, allowing getwin() to read screen dumps written by + differently-configured ncurses libraries. The extended getwin() can + still read binary screen dumps from the "same" configuration of + ncurses. This does not change the ABI (the binary interface seen by + calling applications). + + --enable-fvisibility + Use the gcc "-fvisibility=hidden" option to make symbols which are not + explicitly exported, "hidden". Doing this may reduce the number of + symbols exported in the C++ binding; it should have less effect on the + C libraries when symbol-versioning is used. + + --enable-getcap + Use the 4.4BSD getcap code if available, or a bundled version of it to + fetch termcap entries. Entries read in this way cannot use (make + cross-references to) the terminfo tree, but it is faster than reading + /etc/termcap. + + If configured for one of the *BSD systems, this automatically uses + the hashed database system produced using cap_mkdb or similar tools. + In that case, there is no advantage in using the --enable-getcap-cache + option. + + See also the --with-hashed-db option. + + --enable-getcap-cache + Cache translated termcaps under the directory $HOME/.terminfo + + NOTE: this sounds good - it makes ncurses run faster the second time. + But look where the data comes from - an /etc/termcap containing lots of + entries that are not up to date. If you configure with this option and + forget to install the terminfo database before running an ncurses + application, you will end up with a hidden terminfo database that + generally does not support color and will miss some function keys. + + --enable-hard-tabs + Compile-in cursor-optimization code that uses hard-tabs. We would make + this a standard feature except for the concern that the terminfo entry + may not be accurate, or that your stty settings have disabled the use + of tabs. + + --enable-interop + Compile-in experimental interop bindings. These provide generic types + for the form-library. + + --enable-mixed-case + Controls whether the filesystem on which the terminfo database resides + supports mixed-case filenames (normal for UNIX, but not on other + systems). If you do not specify this option, the configure script + checks the current filesystem. + + --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 + terminfo entries. This is the default, unless you have disabled the + extended functions. + + --enable-opaque-curses + --enable-opaque-form + --enable-opaque-menu + --enable-opaque-panel + Define symbol in curses.h which controls whether some library + structures are treated as "opaque". The --enable-opaque-curses option + is overridden by the --enable-reentrant option. + + --enable-pc-files + If pkg-config is found (see --with-pkg-config), generate ".pc" files + for each of the libraries, and install them in pkg-config's library + directory. + + --enable-pthreads-eintr + add logic in threaded configuration to ensure that a read(2) system + call can be interrupted for SIGWINCH. + + --enable-reentrant + Compile configuration which improves reentrant use of the library by + reducing global and static variables. This option is also set if + --with-pthread is used. + + Enabling this option adds a "t" to the library names, except for the + special case when --enable-weak-symbols is also used. + + --enable-rpath + 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). + + More recently it is useful for systems that require special treatment + shared libraries in "unusual" locations. The "system" libraries reside + in directories which are on the loader's default search-path. While + you may be able to use workarounds such as the $LD_LIBRARY_PATH + environment variable, they do not work with setuid applications since + the LD_LIBRARY_PATH variable would be unset in that situation. + + This option does not apply to --with-libtool, since libtool makes + extra assumptions about rpath. + + --enable-safe-sprintf + Compile with experimental safe-sprintf code. You may consider using + this if you are building ncurses for a system that has neither + vsnprintf() or vsprintf(). It is slow, however, and is used only on + very old systems which lack vsnprintf(). + + --enable-signed-char + The term.h header declares a Booleans[] array typed "char". But it + stores signed values there and "char" is not necessarily signed. + Some packagers choose to alter the type of Booleans[] though this + is not strictly compatible. This option allows one to implement this + alteration without patching the source code. + + --enable-sigwinch + Compile support for ncurses' SIGWINCH handler. If your application has + its own SIGWINCH handler, ncurses will not use its own. The ncurses + handler causes wgetch() to return KEY_RESIZE when the screen-size + changes. This option is the default, unless you have disabled the + extended functions. + + --enable-sp-funcs + Compile-in support for extended functions which accept a SCREEN pointer, + reducing the need for juggling the global SP value with set_term() and + delscreen(). + + --enable-stdnoreturn + When enabled, check if the header exists, and if found + define GCC_NORETURN to _Noreturn rather than either the gcc-specific + __attribute__((noreturn)) or an empty token. Doing this may require + calling programs which use GCC_NORETURN in their own function + definitions to be modified, because _Noreturn is only accepted as + the first token in a declaration. + + --enable-string-hacks + Controls whether strlcat and strlcpy may be used. The same issue + applies to OpenBSD's warnings about snprintf, noting that this function + is weakly standardized. + + Aside from stifling these warnings, there is no functional improvement + in ncurses. + + --enable-symlinks + If your system supports symbolic links, make tic use symbolic links + rather than hard links to save diskspace when writing aliases in the + terminfo database. + + --enable-tcap-names + Compile-in support for user-definable terminal capabilities. Use the + -x option of tic and infocmp to treat unrecognized terminal + capabilities as user-defined strings. This option is the default, + 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-termcap + Compile in support for reading terminal descriptions from termcap if no + match is found in the terminfo database. See also the --enable-getcap + and --enable-getcap-cache options. + + Termcap support requires run-time parsing rather than loading + predigested data. If you have specified --with-ticlib, then you + cannot have termcap support since run-time parsing is done in the + tic library, which is intentionally not part of normal linkage + dependencies. + + --enable-warnings + Turn on GCC compiler warnings. There should be only a few. + + --enable-wattr-macros + The 6.0 ABI adds support for extended colors and for extended mouse. + The former is a noticeable problem when developers inadvertently + compile using the ncurses6 header files and link with an ncurses5 + library, because the wattr* macros use a new field in the WINDOW + structure. These macros are used in several applications. + + Since ncurses provides an actual function for each of these macros, + suppressing them from the curses.h header allows the ncurses5 libraries + to be used in most applications. + + NOTE: The extended colors also are used in the cchar_t structure, but + fewer applications use that. + + NOTE: This workaround does not help with mismatches in the ncurses + mouse version. The extended mouse feature uses one less fewer bit for + each button, so that only the first button will work as expected with + a mismatch between header and library. Again, most applications will + work, since most use only the first button. + + --enable-weak-symbols + If the --with-pthread option is set, check if the compiler supports + weak-symbols. If it does, then name the thread-capable library without + the "t" (libncurses rather than libncursest), and provide for + dynamically loading the pthreads entrypoints at runtime. This allows + one to reduce the number of library files for ncurses. + + --enable-wgetch-events + Compile with experimental wgetch-events code. See ncurses/README.IZ + + --enable-widec + Compile with wide-character code. This makes a different version of + the libraries (e.g., libncursesw.so), which stores characters as + wide-characters, + + NOTE: applications compiled with this configuration are not compatible + with those built for 8-bit characters. You cannot simply make a + symbolic link to equate libncurses.so with libncursesw.so + + NOTE: the Ada95 binding may be built against either version of the the + ncurses library, but you must decide which: the binding installs the + same set of files for either version. Currently (2002/6/22) it does + not use the extended features from the wide-character code, so it is + probably better to not install the binding for that configuration. + + --enable-xmc-glitch + Compile-in support experimental xmc (magic cookie) code. + + --with-abi-version=NUM + Override the ABI version, which is used in shared library filenames. + Normally this is the same as the release version; some ports have + special requirements for compatibility. + + This option does not affect linking with libtool, which uses the + release major/minor numbers. + + --with-ada-compiler=CMD + Specify the Ada95 compiler command (default "gnatmake") + + --with-ada-include=DIR + Tell where to install the Ada includes (default: + PREFIX/lib/ada/adainclude) + + --with-ada-libname=NAME + Override the name of the Ada binding (default: "AdaCurses") + + --with-ada-objects=DIR + Tell where to install the Ada objects (default: PREFIX/lib/ada/adalib) + + --with-ada-sharedlib + Build a shared library for Ada95 binding, if the compiler permits. + + NOTE: You must also set the --with-shared option on some platforms + for a successful build. You need not use this option when you set + --with-shared, unless you want to use the Ada shared library. + + --with-bool=TYPE + If --without-cxx is specified, override the type used for the "bool" + declared in curses.h (normally the type is automatically chosen to + correspond with that in , or defaults to platform-specific + sizes). + + --with-build-cc=XXX + If cross-compiling, specify a host C compiler, which is needed to + compile a few utilities which generate source modules for ncurses. + If you do not give this option, the configure script checks if the + $BUILD_CC variable is set, and otherwise defaults to gcc or cc. + + --with-build-cflags=XXX + If cross-compiling, specify the host C compiler-flags. You might need + to do this if the target compiler has unusual flags which confuse the + host compiler. + + You can also set the environment variable $BUILD_CFLAGS rather than + use this option. + + --with-build-cpp=XXX + This option is provided by the same macro used for $BUILD_CC, etc., + but is not directly used by ncurses. + + --with-build-cppflags=XXX + If cross-compiling, specify the host C preprocessor-flags. You might + need to do this if the target compiler has unusual flags which confuse + the host compiler. + + You can also set the environment variable $BUILD_CPPFLAGS rather than + use this option. + + --with-build-ldflags=XXX + If cross-compiling, specify the host linker-flags. You might need to + do this if the target linker has unusual flags which confuse the host + compiler. + + You can also set the environment variable $BUILD_LDFLAGS rather than + use this option. + + --with-build-libs=XXX + If cross-compiling, the host libraries. You might need to do this if + the target environment requires unusual libraries. + + You can also set the environment variable $BUILD_LIBS rather than + use this option. + + --with-caps=XXX + Specify an alternate terminfo capabilities file, which makes the + configure script look for "include/Caps.XXX". A few systems, e.g., + AIX 4.x use the same overall file-format as ncurses for terminfo + data, but use different alignments within the tables to support + legacy applications. For those systems, you can configure ncurses + to use a terminfo database which is compatible with the native + applications. + + --with-ccharw-max=XXX + Override the size of the wide-character array in cchar_t structures. + Changing this will alter the binary interface. This defaults to 5. + + --with-chtype=TYPE + Override type of chtype, which stores the video attributes and (if + --enable-widec is not given) a character. Prior to ncurses 5.5, this + was always unsigned long, but with ncurses 5.5, it may be unsigned. + Use this option if you need to preserve compatibility with 64-bit + executables, e.g., by setting "--with-chtype=long" (the configure + script supplies "unsigned"). + + --with-config-suffix=XXX + Specify a suffix for the ncursesw6-config file, etc., used to work + around conflicts with packages. + + --with-cxx-libname=NAME + Override the basename of the ncurses++ library (default: "ncurses++") + + --with-cxx-shared + When --with-shared is set, build libncurses++ as a shared library. + This implicitly relies upon building with gcc/g++, since other + compiler suites may have differences in the way shared libraries are + built. libtool by the way has similar limitations. + + --with-database=XXX + Specify the terminfo source file to install. Usually you will wish + to install ncurses' default (misc/terminfo.src). Certain systems + have special requirements, e.g, OS/2 EMX has a customized terminfo + source file. + + --with-dbmalloc + For testing, compile and link with Conor Cahill's dbmalloc library. + This also sets the --disable-leaks option. + + --with-debug + Generate debug-libraries (default). These are named by adding "_g" + to the root, e.g., libncurses_g.a + + --with-default-terminfo-dir=XXX + Specify the default terminfo database directory. This is normally + DATADIR/terminfo, e.g., /usr/share/terminfo. + + --with-dmalloc + For testing, compile and link with Gray Watson's dmalloc library. + This also sets the --disable-leaks option. + + --with-export-syms[=XXX] + Limit exported symbols using libtool. The configure script + automatically chooses an appropriate ".sym" file, which lists the + symbols which are part of the ABI. + + --with-extra-suffix[=XXX] + Add the given suffix to header- and library-names to simplify + installing incompatible ncurses libraries, e.g., those using a + different ABI. The renaming affects the name of the + include-subdirectory if --disable-overwrite is given. + + --with-fallbacks=XXX + Specify a list of fallback terminal descriptions which will be + compiled into the ncurses library. See CONFIGURING FALLBACK ENTRIES. + + See also "--with-tic-path" and "--with-infocmp-path". + + --with-form-libname=NAME + Override the basename of the form library (default: "form") + + --with-gpm + use Alessandro Rubini's GPM library to provide mouse support on the + Linux console. Prior to ncurses 5.5, this introduced a dependency on + the GPM library. + + Currently ncurses uses the dlsym() function to bind to the library at + runtime, so it is only necessary that the library be present when + ncurses is built, to obtain the filename (or soname) used in the + corresponding dlopen() call. If you give a value for this option, + e.g., + + --with-gpm=$HOME/tmp/test-gpm.so + + that overrides the configure check for the soname. + + See also --without-dlsym + + --with-hashed-db[=XXX] + Use a hashed database for storing terminfo data rather than storing + each compiled entry in a separate binary file within a directory + tree. + + In particular, this uses the Berkeley database 1.8.5 interface, as + provided by that and its successors db 2, 3, and 4. The actual + interface is slightly different in the successor versions of the + Berkeley database. The database should have been configured using + "--enable-compat185". + + If you use this option for configuring ncurses, tic will only be able + to write entries in the hashed database. infocmp can still read + entries from a directory tree as well as reading entries from the + hashed database. To do this, infocmp determines whether the $TERMINFO + variable points to a directory or a file, and reads the directory-tree + or hashed database respectively. + + You cannot have a directory containing both hashed-database and + filesystem-based terminfo entries. + + Use the parameter value to give the install-prefix used for the + database, e.g., + --with-hashed-db=/usr/local/BigBase + to find the corresponding include- and lib-directories under the + given directory. Alternatively, you can specify a directory leaf + name, e.g., + --with-hashed-db=db4 + to make the configure script look for files in a subdirectory such as + /usr/include/db4/db.h + /usr/lib/db4/libdb.so + + See also the --enable-getcap option. + + --with-infocmp-path[=XXX] + Use this option to override the automatic detection of tic in your + $PATH when building fallbacks (see "--with-fallbacks"). + + --with-install-prefix=XXX + Allows you to specify an alternate location for installing ncurses + after building it. The value you specify is prepended to the "real" + install location. This simplifies making binary packages. The + makefile variable DESTDIR is set by this option. It is also possible + to use + make install DESTDIR=XXX + since the makefiles pass that variable to subordinate makes. + + NOTE: a few systems build shared libraries with fixed pathnames; this + option probably will not work for those configurations. + + --with-lib-prefix=XXX + OS/2 EMX used a different naming convention from most Unix-like + platforms. It required that the "lib" part of a library name was + omitted. Newer EMX as part of eComStation does not follow that + convention. Use this option to override the configure script's + assumptions about the library-prefix. If this option is omitted, it + uses the original OS/2 EMX convention for that platform. Use + "--with-lib-prefix=lib" for the newer EMX in eComStation. Use + "--without-lib-prefix" to suppress it for other odd platforms. + + --with-libtool[=XXX] + Generate libraries with libtool. If this option is selected, then it + overrides all other library model specifications. Note that libtool + must already be installed, uses makefile rules dependent on GNU make, + and does not promise to follow the version numbering convention of + other shared libraries on your system. However, if the --with-shared + option does not succeed, you may get better results with this option. + + If a parameter value is given, it must be the full pathname of the + particular version of libtool, e.g., + /usr/bin/libtool-1.2.3 + + It is possible to rebuild the configure script to use the automake + macros for libtool, e.g., AC_PROG_LIBTOOL. See the comments in + aclocal.m4 for CF_PROG_LIBTOOL, and ensure that you build configure + using the appropriate patch for autoconf from + https://invisible-island.net/autoconf/ + + --with-libtool-opts=XXX + Allow user to pass additional libtool options into the library creation + and link steps. The main use for this is to do something like + ./configure --with-libtool-opts=-static + to get the same behavior as automake-flavored + ./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. + + --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 + 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. + The option value specifies the name of a file that lists the renamed + 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. + + --with-manpage-tbl + Tell the configure script that you wish to preprocess the manpages + by running them through tbl to generate tables understandable by + nroff. + + --with-menu-libname=NAME + Override the basename of the menu library (default: "menu") + + --with-mmask-t=TYPE + Override type of mmask_t, which stores the mouse mask. Prior to + ncurses 5.5, this was always unsigned long, but with ncurses 5.5, it + may be unsigned. Use this option if you need to preserve compatibility + with 64-bit executables. + + --with-normal + Generate normal (i.e., static) libraries (default). + + Note: on Linux, the configure script will attempt to use the GPM + library via the dlsym() function call. Use --without-dlsym to disable + this feature, or --without-gpm, depending on whether you wish to use + GPM. + + --with-ospeed=TYPE + Override type of ospeed variable, which is part of the termcap + compatibility interface. In termcap, this is a 'short', which works + for a wide range of baudrates because ospeed is not the actual speed + but the encoded value, e.g., B9600 would be a small number such as 13. + However the encoding scheme originally allowed for values "only" up to + 38400bd. A newer set of definitions past 38400bd is not encoded as + compactly, and is not guaranteed to fit into a short (see the function + cfgetospeed(), which returns a speed_t for this reason). In practice, + applications that required knowledge of the ospeed variable, i.e., + those using termcap, do not use the higher speeds. Your application + (or system, in general) may or may not. + + --with-panel-libname=NAME + Override the basename of the panel library (default: "panel") + + --with-pc-suffix=SUFFIX + If ".pc" files are installed, optionally add a suffix to the files + and corresponding package names to separate unusual configurations. + If no option value is given (or if it is "none"), no suffix is added. + + --with-pcre2 + Add PCRE2 (Perl-compatible regular expressions v2) to the build if it + is available and the user requests it. Assume the application will + otherwise use the POSIX interface. + + This is useful for MinGW builds because the usual POSIX interface is + not supplied by the development environment, while ncurses' form + library uses a regular expression feature for one of the field types. + + --with-pkg-config=[DIR] + Check for pkg-config, optionally specifying its path. + + --with-pkg-config-libdir=[DIR] + If pkg-config was found, override the automatic check for its library + path. The configure script allows only a single directory, because + that is used as the directory in which to install ".pc" files. + + The automatic check for the library path selects the first directory + which currently exists. + + --with-profile + Generate profile-libraries These are named by adding "_p" to the root, + e.g., libncurses_p.a + + --with-pthread + Link with POSIX threads, set --enable-reentrant. The use_window() and + use_screen() functions will use mutex's, allowing rudimentary support + for multithreaded applications. + + --with-rcs-ids + Compile-in RCS identifiers. Most of the C files have an identifier. + + --with-rel-version=NUM + Override the release version, which may be used in shared library + filenames. This consists of a major and minor version number separated + by ".". Normally the major version number is the same as the ABI + version; some ports have special requirements for compatibility. + + --with-shared + Generate shared-libraries. The names given depend on the system for + which you are building, typically using a ".so" suffix, along with + symbolic links that refer to the release version. + + NOTE: Unless you override the configure script by setting the $CFLAGS + environment variable, these will not be built with the -g debugging + option. + + NOTE: For some configurations, e.g., installing a new version of + ncurses shared libraries on a machine which already has ncurses + shared libraries, you may encounter problems with the linker. + For example, it may prevent you from running the build tree's + copy of tic (for installing the terminfo database) because it + loads the system's copy of the ncurses shared libraries. + + In that case, using the misc/shlib script may be helpful, since it + sets $LD_LIBRARY_PATH to point to the build tree, e.g., + + ./misc/shlib make install + + Alternatively, for most platforms, the linker accepts a list of + directories which will be searched for libraries at run-time. The + configure script allows you to modify this list using the + RPATH_LIST environment variable. It is a colon-separated list of + directories (default: the "libdir" set via the configure script). + If you set that to put "../lib" first in the list, the linker will + look first at the build-directory, and avoid conflict with libraries + already installed. One drawback to this approach is that libraries + can be accidentally searched in any "../lib" directory. + + NOTE: If you use the --with-ada-sharedlib option, you should also + set this option, to ensure that C-language modules needed for the + Ada binding use appropriate compiler options. + + --with-shlib-version=XXX + Specify whether to use the release or ABI version for shared libraries. + This is normally chosen automatically based on the type of system + which you are building on. We use it for testing the configure script. + + --with-sysmouse + use FreeBSD sysmouse interface provide mouse support on the console. + + --with-system-type=XXX + For testing, override the derived host system-type which is used to + decide things such as the linker commands used to build shared + libraries. This is normally chosen automatically based on the type of + system which you are building on. We use it for testing the configure + script. + + --with-terminfo-dirs=XXX + Specify a search-list of terminfo directories which will be compiled + into the ncurses library (default: DATADIR/terminfo) + + This is a colon-separated list, like the TERMINFO_DIRS environment + variable. + + --with-termlib[=XXX] + When building the ncurses library, organize this as two parts: the + curses library (libncurses) and the low-level terminfo library + (libtinfo). This is done to accommodate applications that use only + the latter. The terminfo library is about half the size of the total. + + If an option value is given, that overrides the name of the terminfo + library. For instance, if the wide-character version is built, the + terminfo library would be named libtinfow. But the libtinfow interface + is upward compatible from libtinfo, so it would be possible to overlay + libtinfo.so with a "wide" version of libtinfow.so by renaming it with + this option. + + --with-termpath=XXX + Specify a search-list of termcap files which will be compiled into the + ncurses library (default: /etc/termcap:/usr/share/misc/termcap) + + --with-tic-path[=XXX] + Use this option to override the automatic detection of tic in your + $PATH when building fallbacks (see "--with-fallbacks"). + + --with-ticlib[=XXX] + When building the ncurses library, build a separate library for + the modules that are used only by the utility programs. Normally + those would be bundled with the termlib or ncurses libraries. + + If an option value is given, that overrides the name of the tic + library. As in termlib, there is no ABI difference between the + "wide" libticw.so and libtic.so + + NOTE: Overriding the name of the tic library may be useful if you are + also using the --with-termlib option to rename libtinfo. If you are + not doing that, renaming the tic library can result in conflicting + library dependencies for tic and other programs built with the tic + library. + + --with-tparm-arg[=XXX] + Override the type used for tparm() arguments, which normally is a + "long". However the function must assume that its arguments can hold a + pointer to char's which is not always workable for 64-bit platforms. A + better choice would be intptr_t, which was not available at the time + tparm's interface was defined. + + If the option is not given, this defaults to "long". + + --with-trace + Configure the trace() function as part of the all models of the ncurses + library. Normally it is part of the debug (libncurses_g) library only. + + --with-valgrind + For testing, compile with debug option. + This also sets the --disable-leaks option. + + --with-versioned-syms[=XXX] + The Solaris, GNU and reportedly some other linkers (ld) accept a + "--version-script" option which tells the linker to annotate the + resulting objects with version identifiers. + + Use "objdump -T" on a library to see the annotations. + + The configure script attempts to automatically apply a suitable ".map" + file to provide this information for Linux. Solaris mapfiles differ: + + a) comments are not accepted + b) wildcards are not accepted, except for a special case of "_*". + c) each symbol listed in the map file must exist in the library + + The Solaris limitations conflict with the development goal of providing + a small set of ".map" files as examples, which cover the most common + configurations. Because that coverage is done by merging together + 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. + + These sample ".map" files will not cover all possible combinations. + In some cases, e.g., when using the --with-weak-symbols option, you + may prefer to use a different ".map" file by setting this option's + value. + + --with-wrap-prefix=XXX + When using the --enable-reentrant option, ncurses redefines variables + that would be global in curses, e.g., LINES, as a macro that calls a + "wrapping" function which fetches the data from the current SCREEN + structure. Normally that function is named by prepending "_nc_" to the + variable's name. The function is technically private (since portable + applications would not refer directly to it). But according to one + line of reasoning, it is not the same type of "private" as functions + which applications should not call even via a macro. This configure + option lets you choose the prefix for these wrapped variables. + + --with-x11-rgb=FILE + Provide a pathname for the X11 rgb file, used by the picsmap program. + This overrides a configure check which usually works, but is needed + due to the lack of standardization for X11's files. + + --with-xterm-kbs=XXX + Configure xterm's terminfo entries to use either BS (^H, i.e., ASCII + backspace) or DEL (^?, or 127). XXX can be BS (or bs, 8) or DEL + (or del, 127). + + During installation, the makefile and scripts modifies the "xterm+kbs" + terminfo entry to use this setting. + + --without-ada + Suppress the configure script's check for Ada95, do not build the + Ada95 binding and related demo. + + --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 + accordingly. + + Likewise, do not install an alias "curses" for the ncurses manpage. + + --without-cxx + XSI curses declares "bool" as part of the interface. C++ also declares + "bool". Neither specifies the size and type of booleans, but both + insist on the same name. We chose to accommodate this by making the + configure script check for the size and type (e.g., unsigned or signed) + that your C++ compiler uses for booleans. If you do not wish to use + ncurses with C++, use this option to tell the configure script to not + adjust ncurses bool to match C++. + + --without-cxx-binding + Suppress the configure script's check for C++, do not build the + C++ binding and related demo. + + --without-develop + Disable development options. This does not include those that change + the interface, such as --enable-widec. + + --without-dlsym + Do not use dlsym() to load GPM dynamically. + + --without-manpages + Tell the configure script to suppress the install of ncurses' manpages. + + --without-progs + Tell the configure script to suppress the build of ncurses' application + programs (e.g., tic). The test applications will still be built if you + type "make", though not if you simply do "make install". + + --without-tack + Suppress build/install with tack program, if it happens to be + in the same build-tree (tack was moved out of the ncurses source-tree + in 20070203). + + --without-tests + Tell the configure script to suppress the build of ncurses' test + programs. + + --without-xterm-new + Tell the configure script to use "xterm-old" for the entry used in + the terminfo database. This will work with variations such as + X11R5 and X11R6 xterm. + + +COMPATIBILITY WITH OLDER RELEASES: +--------------------------------- + + Because ncurses implements X/Open Curses, its interface is fairly stable. + That does not mean the interface does not change. Changes are made to the + documented interfaces when we find differences between ncurses and X/Open + or implementations which largely correspond to X/Open (such as Solaris). + We add extensions to those interfaces to solve problems not addressed by + the original curses design, but those must not conflict with the X/Open + documentation. + + Here are some of the major interface changes, and related problems which + you may encounter when building a system with different versions of + ncurses: + + 6.3 (Oct 21, 2021) + Interface changes: + + + the definition of TERMTYPE2 is now internal, not visible in the ABI, + like the enclosing TERMINAL which was previously made opaque. This + was done to provide SCREEN-specific "static" variables in terminfo. + + Added extensions: + + + add sp-funcs for erasewchar, killwchar. + + Added internal functions (other than "_sp" variants): + + + _nc_safe_fopen and _nc_safe_open3 limit privileges if possible when + opening a file; otherwise disallow access for updating files. + + + _nc_tiparm is a variant of tiparm which is used when all of the + parameters are known to be numbers rather than possibly strings. + + + _nc_reset_tparm improves tic's checks by resetting the terminfo + "static variables" before calling functions which may update them. + + Removed internal functions: + + + none + + Modified internal functions: + + + _nc_trace_ttymode passes pointer to const data + + + _nc_tparm_analyze passes pointer to int*, not int[] + + 6.2 (Feb 12, 2020) + Interface changes: + + + the terminal database must be compiled with ncurses 6.2 tic; + older versions of tic/infocmp will not work. Aside from that, + the compiled database will work with older applications. + + + "*.pc" and "ncurses*-config" files give the same information. + + + vwprintw and vwscanw are deprecated. + + Added extensions: + + + These make it simpler to substitute a debug-configuration of the + library for non-debug: + curses_trace + exit_curses + exit_terminfo + + Added internal functions (other than "_sp" variants): + + + These provide fast-lookup of common user-defined capabilities: + _nc_find_user_entry + _nc_get_userdefs_table + _nc_get_hash_user + + + This is added to work around compiler-warnings: + _nc_fmt_funcptr + + Removed internal functions: + + + _nc_import_termtype + + Modified internal functions: + + + _nc_reserve_pairs no longer returns a value + + 6.1 (Jan 27, 2018) + Interface changes: + + + X/Open Curses specifies a "reserved" void* parameter in several + functions, saying that it must be NULL. In this release, if the + parameter is non-NULL, it is interpreted as a point to an integer + containing a color pair. In previous releases, a non-NULL parameter + caused an error return. Portable applications are unaffected. Here + are the functions which have been extended: + attr_get + attr_off + attr_on + attr_set + chgat + color_set + mvchgat + mvwchgat + slk_attr_off + slk_attr_on + slk_attr_set + wattr_get + wattr_on + wattr_off + wattr_set + wchgat + wcolor_set + + + the TERMINAL structure declared in has been made opaque, + and its size increased to handle the increased size of color pair + and color value, as well as other numeric capabilities. + + A few applications required change, e.g., to use def_prog_mode; + only one application (tack) is known to have a valid reason for + accessing these internal details, and that was addressed by the + release of tack 1.08 in 2017. Internal functions marked as used + by tack will be deprecated in future releases. + + Added extensions: + + + Several new functions were added to manipulate extended color pairs + and color values. These include: + alloc_pair + extended_color_content + extended_pair_content + extended_slk_color + find_pair + free_pair + init_extended_color + init_extended_pair + reset_color_pairs + + as well as corresponding sp-functions. + + + A new terminfo capability "RGB" tells the ncurses library that the + color values are red/green/blue, to eliminate the need for palettes + in that special case for the color_content function. + + Added internal functions (other than "_sp" variants): + _nc_copy_termtype2 + _nc_export_termtype2 + _nc_fallback2 + _nc_find_prescr + _nc_forget_prescr + _nc_free_termtype2 + _nc_read_entry2 + _nc_write_object + + Removed internal functions: + _nc_check_termtype + _nc_resolve_uses + + Modified internal functions: + + + symbols are used by tic/infocmp/toe: + _nc_align_termtype - change parameters to TERMTYPE2* + _nc_check_termtype2 - change parameter to TERMTYPE2* + _nc_read_file_entry - change parameter to TERMTYPE2* + _nc_read_termtype - change parameter to TERMTYPE2* + _nc_trim_sgr0 - change parameter to TERMTYPE2* + _nc_write_entry - change parameter to TERMTYPE2* + + + symbols used only within the library: + _nc_fallback - change return type to TERMTYPE2* + _nc_init_termtype - change parameter to TERMTYPE2* + + 6.0 (Aug 08, 2015) + Interface changes: + + + The 6.0 ABI modifies the defaults for these configure options: + --enable-const + --enable-ext-colors + --enable-ext-mouse + --enable-ext-putwin + --enable-interop + --enable-lp64 + --enable-sp-funcs + --with-chtype=uint32_t + --with-mmask_t=uint32_t + --with-tparm-arg=intptr_t + + + ncurses supports symbol versioning. If you use this feature, about + half of the "_nc_" private symbols are changed to local symbols. + + + a few applications may need to explicitly flush the standard output + when switching between printf's and (curses) printw. + + Added extensions: + + + use_tioctl is an improvement over use_env + + + added wgetdelay to support the NCURSES_OPAQUE feature. + + Added internal functions (other than "_sp" variants): + _nc_init_termtype + _nc_mvcur + _nc_putchar + _nc_setenv_num + _nc_trace_mmask_t + + Removed internal functions: + none + + Modified internal functions: + _nc_do_color - change parameters from short/bool to int + _nc_keypad - change parameter from bool to int + _nc_setupscreen - change parameter from bool to int + _nc_signal_handler - change parameter from bool to int + + 5.9 (Apr 04, 2011) + 5.8 (Feb 26, 2011) + Interface changes: + + + add an alternate library configuration, i.e., "terminal driver" to + support port to Windows, built with MinGW. There are two drivers + (terminfo and Windows console). The terminfo driver works on other + platforms. + + + add a new set of functions which accept a SCREEN* parameter, in + contrast with the original set which use the global value "sp". + By default, these names end with "_sp", and are otherwise + functionally identical with the originals. + + In addition to the "_sp" functions, there are a few new functions + associated with this feature: ceiling_panel, ground_panel, + new_prescr. + + If the library is not built with the sp-funcs extension, there + are no related interface changes. + + + add tiparm function based on review of X/Open Curses Issue 7. + + + change internal _nc_has_mouse function to public has_mouse function + + Added extensions: + + + add a few more functions to support the NCURSES_OPAQUE feature: + get_escdelay, is_pad, is_subwin + + Added internal functions (other than "_sp" variants): + _nc_curscr_of + _nc_format_slks + _nc_get_alias_table + _nc_get_hash_info + _nc_insert_wch + _nc_newscr_of + _nc_outc_wrapper + _nc_retrace_char + _nc_retrace_int_attr_t + _nc_retrace_mmask_t + _nc_setup_tinfo + _nc_stdscr_of + _nc_tinfo_cmdch + + Removed internal functions: + _nc_makenew (some configurations replace by _nc_makenew_sp) + + Modified internal functions: + _nc_UpdateAttrs + _nc_get_hash_table + _nc_has_mouse + _nc_insert_ch + _nc_wgetch + + 5.7 (November 2, 2008) + Interface changes: + + + generate linkable stubs for some macros: + getattrs + + + Add new library configuration for tic-library (the non-curses portion + of the ncurses library used for the tic program as well as some + others such as tack. There is no API change, but makefiles would be + changed to use the tic-library built separately. + + tack, distributed separately from ncurses, uses some of the internal + _nc_XXX functions, which are declared in the tic.h header file. + + The reason for providing this separate library is that none of the + functions in it are suitable for threaded applications. + + + Add new library configuration (ncursest, ncurseswt) which provides + rudimentary support for POSIX threads. This introduces opaque + access functions to the WINDOW structure and adds a parameter to + several internal functions. + + + move most internal variables (except tic-library) into data blocks + _nc_globals and _nc_prescreen to simplify analysis. Those were + globally accessible, but since they were not part of the documented + API, there is no ABI change. + + + changed static tables of strings to be indices into long strings, to + improve startup performance. This changes parameter lists for some + of the internal functions. + + Added extensions: + + + add NCURSES_OPAQUE definition in curses.h to control whether internal + details of the WINDOW structure are visible to an application. This + is always defined when the threaded library is built, and is optional + otherwise. New functions for this: is_cleared, is_idcok, is_idlok, + is_immedok, is_keypad, is_leaveok, is_nodelay, is_notimeout, + is_scrollok, is_syncok, wgetparent and wgetscrreg. + + + the threaded library (ncursest) also disallows direct updating of + global curses-level variables, providing functions (via macros) for + obtaining their value. A few of those variables can be modified by + the application, using new functions: set_escdelay, set_tabsize + + + added functions use_window() and use_screen() which wrap a mutex + (if threading is configured) around a call to a user-supplied + function. + + Added internal functions: + _nc_get_alias_table + _nc_get_screensize + _nc_keyname + _nc_screen_of + _nc_set_no_padding + _nc_tracechar + _nc_tracemouse + _nc_unctrl + _nc_ungetch + + These are used for leak-testing, and are stubs for + ABI compatibility when ncurses is not configured for that + using the --disable-leaks configure script option: + + _nc_free_and_exit + _nc_leaks_tinfo + + Removed internal functions: + none + + Modified internal functions: + _nc_fifo_dump + _nc_find_entry + _nc_handle_sigwinch + _nc_init_keytry + _nc_keypad + _nc_locale_breaks_acs + _nc_timed_wait + _nc_update_screensize + + Use new typedef TRIES to replace "struct tries": + + _nc_add_to_try + _nc_expand_try + _nc_remove_key + _nc_remove_string + _nc_trace_tries + + 5.6 (December 17, 2006) + Interface changes: + + + generate linkable stubs for some macros: + + getbegx, getbegy, getcurx, getcury, getmaxx, getmaxy, getparx, + getpary, getpary, + + and (for libncursesw) + + wgetbkgrnd + + Added extensions: + nofilter() + use_legacy_coding() + + Added internal functions: + _nc_first_db + _nc_get_source + _nc_handle_sigwinch + _nc_is_abs_path + _nc_is_dir_path + _nc_is_file_path + _nc_keep_tic_dir + _nc_keep_tic_dir + _nc_last_db + _nc_next_db + _nc_read_termtype + _nc_tic_dir + + Also (if using the hashed database configuration): + + _nc_db_close + _nc_db_first + _nc_db_get + _nc_db_have_data + _nc_db_have_index + _nc_db_next + _nc_db_open + _nc_db_put + + otherwise + + _nc_hashed_db + + Removed internal functions: + none + + Modified internal functions: + _nc_add_to_try + _nc_do_color + _nc_expand_try + _nc_remove_key + _nc_setupscreen + + 5.5 (October 10, 2005) + Interface changes: + + + terminfo installs "xterm-new" as "xterm" entry rather than + "xterm-old" (aka xterm-r6). + + + terminfo data is installed using the tic -x option (few systems + still use ncurses 4.2). + + + modify C++ binding to work with newer C++ compilers by providing + initializers and using modern casts. Old-style header names are + still used in this release to allow compiling with not-so-old + compilers. + + + form and menu libraries now work with wide-character data. + Applications which bypassed the form library and manipulated the + FIELD.buf data directly will not work properly with libformw, since + that no longer points to an array of char. The set_field_buffer() + and field_buffer() functions translate to/from the actual field + data. + + + change SP->_current_attr to a pointer, adjust ifdef's to ensure that + libtinfo.so and libtinfow.so have the same ABI. The reason for this + is that the corresponding data which belongs to the upper-level + ncurses library has a different size in each model. + + + winnstr() now returns multibyte character strings for the + wide-character configuration. + + + assume_default_colors() no longer requires that use_default_colors() + be called first. + + + data_ahead() now works with wide-characters. + + + slk_set() and slk_wset() now accept and store multibyte or + multicolumn characters. + + + start_color() now returns OK if colors have already been started. + start_color() also returns ERR if it cannot allocate memory. + + + pair_content() now returns -1 for consistency with init_pair() if it + corresponds to the default-color. + + + unctrl() now returns null if its parameter does not correspond + to an unsigned char. + + Added extensions: + Experimental mouse version 2 supports wheel mice with buttons + 4 and 5. This requires ABI 6 because it modifies the encoding + of mouse events. + + Experimental extended colors allows encoding of 256 foreground + and background colors, e.g., with the xterm-256color or + xterm-88color terminfo entries. This requires ABI 6 because + it changes the size of cchar_t. + + Added internal functions: + _nc_check_termtype2 + _nc_resolve_uses2 + _nc_retrace_cptr + _nc_retrace_cvoid_ptr + _nc_retrace_void_ptr + _nc_setup_term + + Removed internal functions: + none + + Modified internal functions: + _nc_insert_ch + _nc_save_str + _nc_trans_string + + 5.4 (February 8, 2004) + Interface changes: + + + add the remaining functions for X/Open curses wide-character support. + These are only available if the library is configured using the + --enable-widec option. + pecho_wchar() + slk_wset() + + + write getyx() and related 2-return macros in terms of getcury(), + getcurx(), etc. + + + simplify ifdef for bool declaration in curses.h + + + modify ifdef's in curses.h that disabled use of __attribute__() for + g++, since recent versions implement the cases which ncurses uses. + + + change some interfaces to use const: + define_key() + mvprintw() + mvwprintw() + printw() + vw_printw() + winsnstr() + wprintw() + + Added extensions: + key_defined() + + Added internal functions: + _nc_get_locale() + _nc_insert_ch() + _nc_is_charable() wide + _nc_locale_breaks_acs() + _nc_pathlast() + _nc_to_char() wide + _nc_to_widechar() wide + _nc_tparm_analyze() + _nc_trace_bufcat() debug + _nc_unicode_locale() + + Removed internal functions: + _nc_outstr() + _nc_sigaction() + + Modified internal functions: + _nc_remove_string() + _nc_retrace_chtype() + + 5.3 (October 12, 2002) + Interface changes: + + + change type for bool used in headers to NCURSES_BOOL, which usually + is the same as the compiler's definition for 'bool'. + + + add all but two functions for X/Open curses wide-character support. + These are only available if the library is configured using the + --enable-widec option. Missing functions are + pecho_wchar() + slk_wset() + + + add environment variable $NCURSES_ASSUMED_COLORS to modify the + assume_default_colors() extension. + + Added extensions: + is_term_resized() + resize_term() + + Added internal functions: + _nc_altcharset_name() debug + _nc_reset_colors() + _nc_retrace_bool() debug + _nc_retrace_unsigned() debug + _nc_rootname() + _nc_trace_ttymode() debug + _nc_varargs() debug + _nc_visbufn() debug + _nc_wgetch() + + Removed internal functions: + _nc_background() + + Modified internal functions: + _nc_freeall() debug + + 5.2 (October 21, 2000) + Interface changes: + + + revert termcap ospeed variable to 'short' (see discussion of the + --with-ospeed configure option). + + 5.1 (July 8, 2000) + Interface changes: + + + made the extended terminal capabilities + (configure --enable-tcap-names) a standard feature. This should + be transparent to applications that do not require it. + + + removed the trace() function and related trace support from the + production library. + + + modified curses.h.in, undef'ing some symbols to avoid conflict + with C++ STL. + + Added extensions: assume_default_colors(). + + 5.0 (October 23, 1999) + Interface changes: + + + implemented the wcolor_set() and slk_color() functions. + + + move macro winch to a function, to hide details of struct ldat + + + corrected prototypes for slk_* functions, using chtype rather than + attr_t. + + + the slk_attr_{set,off,on} functions need an additional void* + parameter according to XSI. + + + modified several prototypes to correspond with 1997 version of X/Open + Curses: [w]attr_get(), [w]attr_set(), border_set() have different + parameters. Some functions were renamed or misspelled: + erase_wchar(), in_wchntr(), mvin_wchntr(). Some developers have used + attr_get(). + + Added extensions: keybound(), curses_version(). + + Terminfo database changes: + + + change translation for termcap 'rs' to terminfo 'rs2', which is + the documented equivalent, rather than 'rs1'. + + The problems are subtler in recent releases. + + a) This release provides users with the ability to define their own + terminal capability extensions, like termcap. To accomplish this, + we redesigned the TERMTYPE struct (in term.h). Very few + applications use this struct. They must be recompiled to work with + the 5.0 library. + + a) If you use the extended terminfo names (i.e., you used configure + --enable-tcap-names), the resulting terminfo database can have some + entries which are not readable by older versions of ncurses. This + is a bug in the older versions: + + + the terminfo database stores booleans, numbers and strings in + arrays. The capabilities that are listed in the arrays are + specified by X/Open. ncurses recognizes a number of obsolete and + extended names which are stored past the end of the specified + entries. + + + a change to read_entry.c in 951001 made the library do an lseek() + call incorrectly skipping data which is already read from the + string array. This happens when the number of strings in the + terminfo data file is greater than STRCOUNT, the number of + specified and obsolete or extended strings. + + + as part of alignment with the X/Open final specification, in the + 990109 patch we added two new terminfo capabilities: + set_a_attributes and set_pglen_inch). This makes the indices for + the obsolete and extended capabilities shift up by 2. + + + the last two capabilities in the obsolete/extended list are memu + and meml, which are found in most terminfo descriptions for xterm. + + When trying to read this terminfo entry, the spurious lseek() + causes the library to attempt to read the final portion of the + terminfo data (the text of the string capabilities) 4 characters + past its starting point, and reads 4 characters too few. The + library rejects the data, and applications are unable to + initialize that terminal type. + + FIX: remove memu and meml from the xterm description. They are + obsolete, not used by ncurses. (It appears that the feature was + added to xterm to make it more like hpterm). + + This is not a problem if you do not use the -x option of tic to + create a terminfo database with extended names. Note that the + user-defined terminal capabilities are not affected by this bug, + since they are stored in a table after the older terminfo data ends, + and are invisible to the older libraries. + + c) Some developers did not wish to use the C++ binding, and used the + configure --without-cxx option. This causes problems if someone + uses the ncurses library from C++ because that configure test + determines the type for C++'s bool and makes ncurses match it, since + both C++ and curses are specified to declare bool. Calling ncurses + functions with the incorrect type for bool will cause execution + errors. In 5.0 we added a configure option "--without-cxx-binding" + which controls whether the binding itself is built and installed. + + 4.2 (March 2, 1998) + Interface changes: + + + correct prototype for termattrs() as per XPG4 version 2. + + + add placeholder prototypes for color_set(), erasewchar(), + term_attrs(), wcolor_set() as per XPG4 version 2. + + + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in + SVr4 headers. + + New extensions: keyok() and define_key(). + + Terminfo database changes: + + + corrected definition in curses.h for ACS_LANTERN, which was 'I' + rather than 'i'. + + 4.1 (May 15, 1997) + + We added these extensions: use_default_colors(). Also added + configure option --enable-const, to support the use of const where + X/Open should have, but did not, specify. + + The terminfo database content changed the representation of color for + most entries that use ANSI colors. SVr4 curses treats the setaf/setab + and setf/setb capabilities differently, interchanging the red/blue + colors in the latter. + + 4.0 (December 24, 1996) + + We bumped to version 4.0 because the newly released Linux dynamic + loader (ld.so.1.8.5) did not load shared libraries whose ABI and REL + versions were inconsistent. At that point, ncurses ABI was 3.4 and the + REL was 1.9.9g, so we made them consistent. + + 1.9.9g (December 1, 1996) + + This fixed most of the problems with 1.9.9e, and made these interface + changes: + + + remove tparam(), which had been provided for compatibility with + some termcap. tparm() is standard, and does not conflict with + application's fallback for missing tparam(). + + + turn off hardware echo in initscr(). This changes the sense of the + echo() function, which was initialized to echoing rather than + nonechoing (the latter is specified). There were several other + corrections to the terminal I/O settings which cause applications to + behave differently. + + + implemented several functions (such as attr_on()) which were + available only as macros. + + + corrected several typos in curses.h.in (i.e., the mvXXXX macros). + + + corrected prototypes for delay_output(), + has_color, immedok() and idcok(). + + + corrected misspelled getbkgd(). Some applications used the + misspelled name. + + + added _yoffset to WINDOW. The size of WINDOW does not impact + applications, since they use only pointers to WINDOW structs. + + These changes were made to the terminfo database: + + + removed boolean 'getm' which was available as an extended name. + + We added these extensions: wresize(), resizeterm(), has_key() and + mcprint(). + + 1.9.9e (March 24, 1996) + + not recommended (a last-minute/untested change left the forms and + menus libraries unusable since they do not repaint the screen). + Foreground/background colors are combined incorrectly, working properly + only on a black background. When this was released, the X/Open + specification was available only in draft form. + + Some applications (such as lxdialog) were "fixed" to work with the + incorrect color scheme. + + +FOR SYSTEM INTEGRATORS: +---------------------- + + Configuration and Installation: + + On platforms where ncurses is assumed to be installed in /usr/lib, + the configure script uses "/usr" as a default. These include any + that use the Linux kernel, as well as these special cases: + + FreeBSD, NetBSD, OpenBSD, Cygwin, MinGW + + For other platforms, the default is "/usr/local". See the discussion + of the "--disable-overwrite" option. + + The location of the terminfo is set indirectly by the "--datadir" + configure option, e.g., /usr/share/terminfo, given a datadir of + /usr/share. You may want to override this if you are installing + ncurses libraries in nonstandard locations, but wish to share the + terminfo database. + + Normally the ncurses library is configured in a pure-terminfo mode; + that is, with the --disable-termcap option. This makes the ncurses + library smaller and faster. The ncurses library includes a termcap + emulation that queries the terminfo database, so even applications that + use raw termcap to query terminal characteristics will win (providing + you recompile and relink them!). + + If you must configure with termcap fallback enabled, you may also wish + to use the --enable-getcap option. This speeds up termcap-based + startups, at the expense of not allowing personal termcap entries to + reference the terminfo tree. See comments in + ncurses/tinfo/read_termcap.c for further details. + + Note that if you have $TERMCAP set, ncurses will use that value + to locate termcap data. In particular, running from xterm will + set $TERMCAP to the contents of the xterm's termcap entry. + If ncurses sees that, it will not examine /etc/termcap. + + Keyboard Mapping: + + The terminfo file assumes that Shift-Tab generates \E[Z (the ECMA-48 + reverse-tabulation sequence) rather than ^I. Here are the loadkeys -d + mappings that will set this up: + + keycode 15 = Tab Tab + alt keycode 15 = Meta_Tab + shift keycode 15 = F26 + string F26 ="\033[Z" + + Naming the Console Terminal + + In various systems there has been a practice of designating the system + console driver type as `console'. Please do not do this! It + complicates peoples' lives, because it can mean that several different + terminfo entries from different operating systems all logically want to + be called `console'. + + Please pick a name unique to your console driver and set that up + in the /etc/inittab table or local equivalent. Send the entry to the + terminfo maintainer (listed in the misc/terminfo file) to be included + in the terminfo file, if it is not already there. See the + term(7) manual page included with this distribution for more on + conventions for choosing type names. + + Here are some recommended primary console names: + + linux -- Linux console driver + freebsd -- FreeBSD + netbsd -- NetBSD + bsdos -- BSD/OS + + If you are responsible for integrating ncurses for one of these + distributions, please either use the recommended name or get back + to us explaining why you don't want to, so we can work out nomenclature + that will make users' lives easier rather than harder. + + +MODERN XTERM VERSIONS: +--------------------- + + The terminfo database file included with this distribution assumes you + are running a modern xterm based on XFree86 (i.e., xterm-new). The + earlier X11R6 entry (xterm-r6) and X11R5 entry (xterm-r5) is provided + as well. See the --without-xterm-new configure script option if you + are unable to update your system. + + +CONFIGURING FALLBACK ENTRIES: +---------------------------- + + In order to support operation of ncurses programs before the terminfo + tree is accessible (that is, in single-user mode or at OS installation + time) the ncurses library can be compiled to include an array of + pre-fetched fallback entries. + + NOTE: This must be done on a machine which has ncurses' infocmp and + terminfo database installed (as well as ncurses' tic and infocmp + programs). That is because the fallback sources are generated and + compiled into the library before the build-tree's copy of infocmp is + available. + + These entries are checked by setupterm() only when the conventional + fetches from the terminfo tree and the termcap fallback (if configured) + have been tried and failed. Thus, the presence of a fallback will not + shadow modifications to the on-disk entry for the same type, when that + entry is accessible. + + By default, there are no entries on the fallback list. After you have + built the ncurses suite for the first time, you can change the list + (the process needs infocmp(1)). To do so, use the script + ncurses/tinfo/MKfallback.sh. The configure script option + --with-fallbacks does this (it accepts a comma-separated list of the + names you wish, and does not require a rebuild). + + If you wanted (say) to have linux, vt100, and xterm fallbacks, you + might use the commands + + cd ncurses; + tinfo/MKfallback.sh \ + $TERMINFO \ + ../misc/terminfo.src \ + `which tic` \ + `which infocmp` \ + linux vt100 xterm >fallback.c + + The first four parameters of the script are normally supplied by + the configured makefiles via the "--with-fallbacks" option. They + are + + 1) the location of the terminfo database + 2) the source for the terminfo entries + 3) the location of the tic program, used to create a terminfo + database. + 4) the location of the infocmp program, used to print a terminfo + description. + + Then just rebuild and reinstall the library as you would normally. + You can restore the default empty fallback list with + + tinfo/MKfallback.sh \ + $TERMINFO \ + ../misc/terminfo.src \ + `which tic` \ + `which infocmp` \ + >fallback.c + + The overhead for an empty fallback list is one trivial stub function. + Any non-empty fallback list is const'd and therefore lives in shareable + text space. You can look at the comment trailing each initializer in + the generated ncurses/fallback.c file to see the core cost of the + fallbacks. A good rule of thumb for modern vt100-like entries is that + each one will cost about 2.5K of text space. + + +BSD CONVERSION NOTES: +-------------------- + + If you need to support really ancient BSD programs, you probably + want to configure with the --enable-bsdpad option. What this does + is enable code in tputs() that recognizes a numeric prefix on a + capability as a request for that much trailing padding in milliseconds. + There are old BSD programs that do things like tputs("50"). + + (If you are distributing ncurses as a support-library component of + an application you probably want to put the remainder of this section + in the package README file.) + + The following note applies only if you have configured ncurses with + --enable-termcap. + +------------------------------- CUT HERE -------------------------------- + +If you are installing this application privately (either because you +have no root access or want to experiment with it before doing a root +installation), there are a couple of details you need to be aware of. +They have to do with the ncurses library, which uses terminfo rather +than termcap for describing terminal characteristics. + +Though the ncurses library is terminfo-based, it can interpret your +TERMCAP variable (if present), any local termcap files you reference +through it, and the system termcap file. However, to avoid slowing +down your application startup, it does this only once per terminal type! + +The first time you load a given terminal type from your termcap +database, the library initialization code will automatically write it +in terminfo format to a subdirectory under $HOME/.terminfo. After +that, the initialization code will find it there and do a (much +faster) terminfo fetch. + +Usually, all this means is that your home directory will silently grow +an invisible .terminfo subdirectory which will get filled in with +terminfo descriptions of terminal types as you invoke them. If anyone +ever installs a global terminfo tree on your system, this will quietly +stop happening and your $HOME/.terminfo will become redundant. + +The objective of all this logic is to make converting from BSD termcap +as painless as possible without slowing down your application (termcap +compilation is expensive). + +If you don't have a TERMCAP variable or custom personal termcap file, +you can skip the rest of this dissertation. + +If you *do* have a TERMCAP variable and/or a custom personal termcap file +that defines a terminal type, that definition will stop being visible +to this application after the first time you run it, because it will +instead see the terminfo entry that it wrote to $HOME/terminfo the +first time around. + +Subsequently, editing the TERMCAP variable or personal TERMCAP file +will have no effect unless you explicitly remove the terminfo entry +under $HOME/terminfo. If you do that, the entry will be recompiled +from your termcap resources the next time it is invoked. + +To avoid these complications, use infocmp(1) and tic(1) to edit the +terminfo directory directly. + +------------------------------- CUT HERE -------------------------------- + +USING GPM: +--------- + Ncurses 4.1 and up can be configured to use GPM (General Purpose Mouse) + which is used with Linux console. Be aware that GPM is commonly + installed as a shared library which contains a wrapper for the curses + wgetch() function (libcurses.o). Some integrators have simplified + linking applications by combining all or part of libcurses.so into the + libgpm.so file, producing symbol conflicts with ncurses (specifically + the wgetch function). This was originally the BSD curses, but + generally whatever curses library exists on the system. + + You may be able to work around this problem by linking as follows: + + cc -o foo foo.o -lncurses -lgpm -lncurses + + but the linker may not cooperate, producing mysterious errors. + See the FAQ, as well as the discussion under the --with-gpm option: + + https://invisible-island.net/ncurses/ncurses.faq.html#using_gpm_lib + + +BUILDING WITH A CROSS-COMPILER: +------------------------------ + Ncurses can be built with a cross-compiler. Some parts must be built + with the host's compiler since they are used for building programs + (e.g., ncurses/make_hash and ncurses/make_keys) that generate tables + that are compiled into the ncurses library. The essential thing to do + is set the BUILD_CC environment variable to your host's compiler, and + run the configure script configuring for the cross-compiler. + + The configure options --with-build-cc, etc., are provided to make this + simpler. Since make_hash and make_keys use only ANSI C features, it + is normally not necessary to provide the other options such as + --with-build-libs, but they are provided for completeness. + + Note that all of the generated source-files which are part of ncurses + will be made if you use + + make sources + + This would be useful in porting to an environment which has little + support for the tools used to generate the sources, e.g., sed, awk and + Bourne-shell. + + When ncurses has been successfully cross-compiled, you may want to use + "make install" (with a suitable target directory) to construct an + install tree. Note that in this case (as with the --with-fallbacks + option), ncurses uses the development platform's tic to do the "make + install.data" portion. + + The system's tic program is used to install the terminal database, + even for cross-compiles. For best results, the tic program should be + from the most current version of ncurses. + + NOTE: the system's tic program may use a different terminfo database + format than the target system. For instance, as described in term(5), + the conventional terminfo layout uses a directory hierarchy with one + letter names, while some platforms use two-letter names to work with + case-insensitive filesystems. The configure script searches for a tic + program using the AC_CHECK_TOOL macro, which will prefer programs + using the canonical host prefix in their name. You can use this fact + to provide a cross-compiler support utility tic, otherwise you can + override the configure script's choice using --with-tic-path + + +BUG REPORTS: +----------- + Send any feedback to the ncurses mailing list at + bug-ncurses@gnu.org. To subscribe send mail to + bug-ncurses-request@gnu.org with body that reads: + subscribe ncurses + + The Hacker's Guide in the doc directory includes some guidelines + on how to report bugs in ways that will get them fixed most quickly. + +-- vile:txtmode diff --git a/deps/ncurses-5.9/MANIFEST b/deps/ncurses-6.3/MANIFEST similarity index 89% rename from deps/ncurses-5.9/MANIFEST rename to deps/ncurses-6.3/MANIFEST index 421cc67..749138c 100644 --- a/deps/ncurses-5.9/MANIFEST +++ b/deps/ncurses-6.3/MANIFEST @@ -94,7 +94,7 @@ ./Ada95/samples/sample-curses_demo-mouse.ads ./Ada95/samples/sample-curses_demo.adb ./Ada95/samples/sample-curses_demo.ads -./Ada95/samples/sample-explanation.adb +./Ada95/samples/sample-explanation.adb_p ./Ada95/samples/sample-explanation.ads ./Ada95/samples/sample-form_demo-aux.adb ./Ada95/samples/sample-form_demo-aux.ads @@ -123,14 +123,18 @@ ./Ada95/samples/sample-text_io_demo.ads ./Ada95/samples/sample.adb ./Ada95/samples/sample.ads +./Ada95/samples/split-path.awk ./Ada95/samples/status.adb ./Ada95/samples/status.ads ./Ada95/samples/tour.adb ./Ada95/samples/tour.ads ./Ada95/src/Makefile.in +./Ada95/src/c_threaded_variables.c +./Ada95/src/c_threaded_variables.h ./Ada95/src/c_varargs_to_ada.c ./Ada95/src/c_varargs_to_ada.h -./Ada95/src/library.gpr +./Ada95/src/library-cfg.sh +./Ada95/src/library.gpr.in ./Ada95/src/modules ./Ada95/src/ncurses_compat.c ./Ada95/src/terminal_interface-curses-aux.adb @@ -190,6 +194,7 @@ ./Ada95/src/terminal_interface-curses-text_io.ads ./Ada95/src/terminal_interface-curses-trace.adb_p ./Ada95/src/terminal_interface.ads +./COPYING ./INSTALL ./MANIFEST ./Makefile.in @@ -199,6 +204,7 @@ ./README.MinGW ./README.emx ./TO-DO +./VERSION ./aclocal.m4 ./announce.html.in ./c++/Makefile.in @@ -229,7 +235,6 @@ ./config.sub ./configure ./configure.in -./convert_configure.pl ./dist.mk ./doc/hackguide.doc ./doc/html/Ada95.html @@ -332,11 +337,12 @@ ./doc/html/ada/terminal_interface-curses-trace__ads.htm ./doc/html/ada/terminal_interface-curses__adb.htm ./doc/html/ada/terminal_interface-curses__ads.htm +./doc/html/ada/terminal_interface-curses_constants__ads.htm ./doc/html/ada/terminal_interface__ads.htm ./doc/html/announce.html ./doc/html/hackguide.html ./doc/html/index.html -./doc/html/man/adacurses-config.1.html +./doc/html/man/adacurses6-config.1.html ./doc/html/man/captoinfo.1m.html ./doc/html/man/clear.1.html ./doc/html/man/curs_add_wch.3x.html @@ -457,9 +463,11 @@ ./doc/html/man/mitem_value.3x.html ./doc/html/man/mitem_visible.3x.html ./doc/html/man/ncurses.3x.html -./doc/html/man/ncurses5-config.1.html +./doc/html/man/ncurses6-config.1.html +./doc/html/man/new_pair.3x.html ./doc/html/man/panel.3x.html ./doc/html/man/resizeterm.3x.html +./doc/html/man/scr_dump.5.html ./doc/html/man/tabs.1.html ./doc/html/man/term.5.html ./doc/html/man/term.7.html @@ -469,6 +477,7 @@ ./doc/html/man/toe.1m.html ./doc/html/man/tput.1.html ./doc/html/man/tset.1.html +./doc/html/man/user_caps.5.html ./doc/html/man/wresize.3x.html ./doc/html/ncurses-intro.html ./doc/ncurses-intro.doc @@ -524,6 +533,7 @@ ./form/llib-lformw ./form/modules ./include/Caps +./include/Caps-ncurses ./include/Caps.aix4 ./include/Caps.hpux11 ./include/Caps.keys @@ -536,16 +546,21 @@ ./include/MKterm.h.awk.in ./include/Makefile.in ./include/capdefaults.c +./include/curses.events ./include/curses.h.in ./include/curses.tail ./include/curses.wide ./include/edit_cfg.sh ./include/hashed_db.h ./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/ncurses_cfg.hin ./include/ncurses_defs ./include/ncurses_dll.h.in @@ -554,6 +569,7 @@ ./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 @@ -656,6 +672,8 @@ ./man/legacy_coding.3x ./man/make_sed.sh ./man/man_db.renames +./man/manhtml.aliases +./man/manhtml.externs ./man/manlinks.sed ./man/menu.3x ./man/menu_attributes.3x @@ -681,8 +699,10 @@ ./man/mitem_value.3x ./man/mitem_visible.3x ./man/ncurses.3x +./man/new_pair.3x ./man/panel.3x ./man/resizeterm.3x +./man/scr_dump.5 ./man/tabs.1 ./man/term.5 ./man/term.7 @@ -693,6 +713,7 @@ ./man/toe.1m ./man/tput.1 ./man/tset.1 +./man/user_caps.5 ./man/wresize.3x ./menu/Makefile.in ./menu/READ.ME @@ -743,10 +764,12 @@ ./misc/form.ref ./misc/gen-pkgconfig.in ./misc/gen_edit.sh +./misc/magic ./misc/makedef.cmd ./misc/makellib ./misc/menu.def ./misc/menu.ref +./misc/ncu2openbsd ./misc/ncurses-config.in ./misc/ncurses.def ./misc/ncurses.ref @@ -764,7 +787,6 @@ ./mk-0th.awk ./mk-1st.awk ./mk-2nd.awk -./mk-dlls.sh.in ./mk-hdr.awk ./ncurses/Makefile.in ./ncurses/README @@ -850,8 +872,8 @@ ./ncurses/base/lib_wattron.c ./ncurses/base/lib_winch.c ./ncurses/base/lib_window.c -./ncurses/base/memmove.c ./ncurses/base/nc_panel.c +./ncurses/base/new_pair.c ./ncurses/base/resizeterm.c ./ncurses/base/safe_sprintf.c ./ncurses/base/sigaction.c @@ -867,13 +889,26 @@ ./ncurses/llib-lncursest ./ncurses/llib-lncursestw ./ncurses/llib-lncursesw +./ncurses/llib-ltic +./ncurses/llib-ltict +./ncurses/llib-ltictw +./ncurses/llib-lticw +./ncurses/llib-ltinfo +./ncurses/llib-ltinfot +./ncurses/llib-ltinfotw +./ncurses/llib-ltinfow ./ncurses/modules +./ncurses/new_pair.h +./ncurses/report_hashing.c +./ncurses/report_offsets.c +./ncurses/term.priv.h ./ncurses/tinfo/MKcaptab.awk ./ncurses/tinfo/MKcaptab.sh ./ncurses/tinfo/MKcodes.awk ./ncurses/tinfo/MKfallback.sh ./ncurses/tinfo/MKkeys_list.sh ./ncurses/tinfo/MKnames.awk +./ncurses/tinfo/MKuserdefs.sh ./ncurses/tinfo/README ./ncurses/tinfo/access.c ./ncurses/tinfo/add_tries.c @@ -912,13 +947,15 @@ ./ncurses/tinfo/lib_tparm.c ./ncurses/tinfo/lib_tputs.c ./ncurses/tinfo/lib_ttyflags.c +./ncurses/tinfo/lib_win32con.c +./ncurses/tinfo/lib_win32util.c ./ncurses/tinfo/make_hash.c ./ncurses/tinfo/make_keys.c ./ncurses/tinfo/name_match.c +./ncurses/tinfo/obsolete.c ./ncurses/tinfo/parse_entry.c ./ncurses/tinfo/read_entry.c ./ncurses/tinfo/read_termcap.c -./ncurses/tinfo/setbuf.c ./ncurses/tinfo/strings.c ./ncurses/tinfo/tinfo_driver.c ./ncurses/tinfo/trim_sgr0.c @@ -943,8 +980,6 @@ ./ncurses/tty/lib_tstp.c ./ncurses/tty/lib_twait.c ./ncurses/tty/lib_vidattr.c -./ncurses/tty/tty_display.h -./ncurses/tty/tty_input.h ./ncurses/tty/tty_update.c ./ncurses/wcwidth.h ./ncurses/widechar/charable.c @@ -967,9 +1002,50 @@ ./ncurses/widechar/lib_vline_set.c ./ncurses/widechar/lib_wacs.c ./ncurses/widechar/lib_wunctrl.c +./ncurses/widechar/widechars.c ./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/rules +./package/debian-mingw/source/format +./package/debian-mingw/watch +./package/debian-mingw64/changelog +./package/debian-mingw64/compat +./package/debian-mingw64/control +./package/debian-mingw64/copyright +./package/debian-mingw64/mingw64-ncurses6.lintian-overrides +./package/debian-mingw64/rules +./package/debian-mingw64/source/format +./package/debian-mingw64/watch +./package/debian/changelog +./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/rules +./package/debian/source/format +./package/debian/watch +./package/mingw-ncurses.nsi +./package/mingw-ncurses.spec +./package/ncurses.map +./package/ncurses.spec +./package/ncurses.sym +./package/ncursest.map +./package/ncursest.spec +./package/ncursest.sym +./package/ncursestw.map +./package/ncursestw.sym +./package/ncursesw.map +./package/ncursesw.sym ./panel/Makefile.in ./panel/headers ./panel/llib-lpanel @@ -999,50 +1075,74 @@ ./progs/capconvert ./progs/clear.c ./progs/clear.sh +./progs/clear_cmd.c +./progs/clear_cmd.h ./progs/dump_entry.c ./progs/dump_entry.h ./progs/infocmp.c ./progs/modules ./progs/progs.priv.h +./progs/reset_cmd.c +./progs/reset_cmd.h ./progs/tabs.c ./progs/tic.c ./progs/toe.c +./progs/tparm_type.c +./progs/tparm_type.h ./progs/tput.c ./progs/transform.c ./progs/tset.c +./progs/tty_settings.c +./progs/tty_settings.h ./test/Makefile.in ./test/README ./test/aclocal.m4 +./test/back_ground.c ./test/background.c ./test/blue.c ./test/bs.6 ./test/bs.c +./test/bulgarian-utf8-tabs.txt ./test/bulgarian-utf8.txt ./test/cardfile.c ./test/cardfile.dat ./test/chgat.c ./test/clip_printw.c +./test/color_content.c +./test/color_name.h ./test/color_set.c ./test/configure ./test/configure.in ./test/demo_altkeys.c ./test/demo_defkey.c ./test/demo_forms.c +./test/demo_forms.txt ./test/demo_keyok.c ./test/demo_menus.c +./test/demo_new_pair.c ./test/demo_panels.c +./test/demo_tabs.c ./test/demo_termcap.c ./test/demo_terminfo.c ./test/ditto.c ./test/dots.c +./test/dots_curses.c ./test/dots_mvcur.c +./test/dots_termcap.c +./test/dots_xcurses.c +./test/dump_window.c +./test/dump_window.h +./test/dup_field.c ./test/echochar.c ./test/edit_field.c ./test/edit_field.h +./test/escherknot.xbm +./test/extended_color.c ./test/filter.c ./test/firework.c ./test/firstlast.c ./test/foldkeys.c +./test/form_driver_w.c ./test/gdc.6 ./test/gdc.c ./test/hanoi.c @@ -1057,15 +1157,33 @@ ./test/knight.c ./test/linedata.h ./test/linux-color.dat +./test/list_keys.c ./test/listused.sh ./test/lrtest.c ./test/make-tar.sh +./test/mensetmanus.xbm +./test/mini.xterm_48x48.xpm ./test/mk-test.awk ./test/modules +./test/move_field.c ./test/movewindow.c ./test/ncurses.c ./test/ncurses_tst.hin ./test/newdemo.c +./test/package/debian-mingw/compat +./test/package/debian-mingw/control +./test/package/debian-mingw/copyright +./test/package/debian-mingw/docs +./test/package/debian-mingw/rules +./test/package/debian-mingw/source/format +./test/package/debian-mingw/watch +./test/package/debian-mingw64/compat +./test/package/debian-mingw64/control +./test/package/debian-mingw64/copyright +./test/package/debian-mingw64/docs +./test/package/debian-mingw64/rules +./test/package/debian-mingw64/source/format +./test/package/debian-mingw64/watch ./test/package/debian/compat ./test/package/debian/control ./test/package/debian/copyright @@ -1073,14 +1191,24 @@ ./test/package/debian/rules ./test/package/debian/source/format ./test/package/debian/watch +./test/package/mingw-ncurses-examples.spec ./test/package/ncurses-examples.spec +./test/padview.c +./test/pair_content.c +./test/parse_rgb.h +./test/picsmap.c +./test/picsmap.h +./test/popup_msg.c +./test/popup_msg.h ./test/programs ./test/railroad.c ./test/rain.c ./test/redraw.c ./test/savescreen.c ./test/savescreen.sh +./test/sp_tinfo.c ./test/tclock.c +./test/terminal.xbm ./test/test.priv.h ./test/test_add_wchstr.c ./test/test_addchstr.c @@ -1092,14 +1220,25 @@ ./test/test_instr.c ./test/test_inwstr.c ./test/test_opaque.c +./test/test_setupterm.c +./test/test_sgr.c +./test/test_termattrs.c +./test/test_tparm.c +./test/test_vid_puts.c +./test/test_vidputs.c ./test/testaddch.c ./test/testcurs.c ./test/testscanw.c +./test/tput-colorcube +./test/tput-initc ./test/tracemunch ./test/view.c +./test/widechars-utf8-tabs.txt ./test/widechars-utf8.txt +./test/widechars.h ./test/worm.c ./test/xmas.c ./test/xterm-16color.dat ./test/xterm-256color.dat ./test/xterm-88color.dat +./test/xterm-color_48x48.xpm diff --git a/deps/ncurses-6.3/Makefile.in b/deps/ncurses-6.3/Makefile.in new file mode 100644 index 0000000..f87c19f --- /dev/null +++ b/deps/ncurses-6.3/Makefile.in @@ -0,0 +1,130 @@ +# $Id: Makefile.in,v 1.45 2021/08/07 22:06:59 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2014,2015 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: Thomas E. Dickey 1996-on +# +# Master Makefile for ncurses library. + +SHELL = @SHELL@ +VPATH = @srcdir@ + +DESTDIR=@DESTDIR@ +RPATH_LIST=@RPATH_LIST@ +TOP_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" + +@SET_MAKE@ + +NCURSES_MAJOR = @NCURSES_MAJOR@ +NCURSES_MINOR = @NCURSES_MINOR@ +NCURSES_PATCH = @NCURSES_PATCH@ + +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ + +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ + +bindir = @bindir@ +ticdir = @TERMINFO@ +includedir = @includedir@ +includesubdir = @includesubdir@ +libdir = @libdir@ +mandir = @mandir@ +pkgdir = @PKG_CONFIG_LIBDIR@ + +include_dir = ${includedir}${includesubdir} + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +DIRS_TO_MAKE = @DIRS_TO_MAKE@ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : depend +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : preinstall +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : tags +@MAKE_PHONY@.PHONY : uninstall + +all :: $(DIRS_TO_MAKE) + +$(DIRS_TO_MAKE) : + mkdir $@ + +preinstall : + @ echo '' + @ echo '** Configuration summary for NCURSES $(NCURSES_MAJOR).$(NCURSES_MINOR) $(NCURSES_PATCH):' + @ echo '' + @ echo ' extended funcs: '`test @NCURSES_EXT_FUNCS@ != 0 && echo yes || echo no` + @ echo ' xterm terminfo: '@WHICH_XTERM@ + @ echo '' + @ echo ' bin directory: '$(bindir) + @ echo ' lib directory: '$(libdir) + @ echo ' include directory: '$(include_dir) + @ echo ' man directory: '$(mandir) +@MAKE_TERMINFO@ @ echo ' terminfo directory: '$(ticdir) +@USE_FALLBACKS@ @ echo ' using fallback-list: '@FALLBACK_LIST@ +@MAKE_PC_FILES@ @ echo ' pkg-config directory: '$(pkgdir) + @ echo '' + @ test "$(include_dir)" = "$(prefix)/include" || \ + echo '** Include-directory is not in a standard location' + @ test ! -f $(include_dir)/termcap.h || \ + fgrep NCURSES_VERSION $(include_dir)/termcap.h >/dev/null || \ + echo '** Will overwrite non-ncurses termcap.h' + @ test ! -f $(include_dir)/curses.h || \ + fgrep NCURSES_VERSION $(include_dir)/curses.h >/dev/null || \ + echo '** Will overwrite non-ncurses curses.h' + +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 \ +clean \ +distclean \ +mostlyclean \ +realclean \ +depend \ +sources \ +tags \ +uninstall \ +install :: diff --git a/deps/ncurses-5.9/Makefile.os2 b/deps/ncurses-6.3/Makefile.os2 similarity index 97% rename from deps/ncurses-5.9/Makefile.os2 rename to deps/ncurses-6.3/Makefile.os2 index 1244455..bc3407d 100644 --- a/deps/ncurses-5.9/Makefile.os2 +++ b/deps/ncurses-6.3/Makefile.os2 @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 1998-2000,2006 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2000,2006 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ################################################################################ -# $Id: Makefile.os2,v 1.11 2006/04/22 21:46:17 tom Exp $ +# $Id: Makefile.os2,v 1.13 2021/06/17 21:20:30 tom Exp $ # # Wrapper Makefile for ncurses library under OS/2. # Author: Juan Jose Garcia Ripoll . @@ -69,7 +70,7 @@ # disappear are not essential. # # I first thought about killing '_nc_*' symbols, but it seems that some of -# them --_nc_panel_hook, _nc_ada*, etc-- are needed outside ncurses.dll. +# them --_nc_panel_hook, _nc_ada*, etc-- are needed outside ncurses.dll. # However, the whole size of the export table will not be larger than 1k or # so. # diff --git a/deps/ncurses-6.3/NEWS b/deps/ncurses-6.3/NEWS new file mode 100644 index 0000000..57ef74c --- /dev/null +++ b/deps/ncurses-6.3/NEWS @@ -0,0 +1,14792 @@ +------------------------------------------------------------------------------- +-- Copyright 2018-2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2017,2018 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. -- +------------------------------------------------------------------------------- +-- $Id: NEWS,v 1.3732 2021/10/20 22:49:51 tom Exp $ +------------------------------------------------------------------------------- + +This is a log of changes that ncurses has gone through since Zeyd started +working with Pavel Curtis' original work, pcurses, in 1992. + +Changes through 1.9.9e are recorded by Zeyd M Ben-Halim. +Changes since 1.9.9e are recorded by Thomas E Dickey. + +Contributors include those who have provided patches (even small ones), as well +as those who provide useful information (bug reports, analyses). Changes with +no cited author are the work of Thomas E Dickey (TD). + +A few contributors may be cited in this file by their initials. +Each accounts for half of one percent or more of the changes since 1.9.9e. +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. + +20211021 6.3 release for upload to ftp.gnu.org + + update release notes + + add "ncu2openbsd" script, to illustrate how to update an OpenBSD + system to use a current ncurses release. + +20211018 + + check for screen size-change in scr_init() and scr_restore(), in case + a screen dump does not match the current screen dimensions (report by + Frank Tkalcevic). + +20211017 + + amend change for pkg-config to account for "none" being returned in + the libdir-path result rather than "no" (report by Gabriele Balducci). + +20211016 + + build-fix for pmake with libtool. + + improve make-tar.sh scripts, adding COPYING to tar file, and clean up + shellcheck warnings. + + add link for "reset6" manpage in test-package ncurses6-doc + + revise configure option --with-pkg-config-libdir, using the actual + search path from pkg-config or pkgconf using the output from --debug + (report by Pascal Pignard). + + freeze ABI in ".map" files. + +20211009 + + implement "+m" option in tabs program. + + fill in some details for infoton -TD + + fix spelling/consistency in several descriptions -TD + + use vt420+lrmm in vt420 -TD + + modify save_tty_settings() to avoid opening /dev/tty for cases other + than reset/init, e.g., for clear. + + modify output of "toe -as" to show first description found rather + than the last. + + improve tic checks for number of parameters of smglp, smgrp, smgtp, + and smgbp (cf: 20020525). + + correct off-by-one comparison in last_char(), which did not allow + special case of ":" in a terminfo description field (cf: 20120407). + + remove check in tic that assumes that none or both parameterized and + non-parameterized margin-setting capabilities are present + (cf: 20101002). + +20211002 + + use return-value from vsnprintf to reallocate as needed to allow for + buffers larger than the screen size (report by "_RuRo_"). + + modify tset "-q" option to refrain from modifying terminal modes, to + match the documentation. + + add section on margins to terminfo.5, adapted from X/Open Curses. + + make tput/tset warning messages consistently using alias names when + those are used, rather than the underlying program's name. + + improve tput usage message for aliases such as clear, by eliminating + tput-specific portions. + + add a check in toe to ensure that a "termcap file" is text rather + than binary. + + further build-fixes for OpenBSD 6.9, whose header files differ from + the other BSDs. + +20210925 + + add kbeg to xterm+keypad to accommodate termcap applications -TD + + add smglp and smgrp to vt420+lrmm, to provide useful data for the + "tabs" +m option -TD + + build-fix for gcc 3.4.3 with Solaris10, which does not allow forward + reference of anonymous struct typedef. + + modify tput to allow multiple commands per line. + + minor fixes for tset manpage. + +20210911 + + adjust ifdef in test_opaque.c to fix build with ncurses 5.7 + + add testing note for xterm-{hp|sco|sun} -TD + + corrected description for ansi.sys-old -TD + + add xterm+nopcfkeys, to fill in keys for xterm-hp, xterm-sun -TD + + use hp+arrows in a few places -TD + + use hp+pfk-cr in a few places -TD + +20210905 + + correct logic in filtering of redefinitions (report by Sven Joachim, + cf: 20210828). + +20210904 + + modify linux3.0 entry to reflect default mapping of shift-tab by + kbd 1.14 (report by Jan Engelhardt) -TD + + add historical note to tput, curses-terminfo and curses-color + manpages based on source-code for SVr2, SVr3 and SVr4. + + minor grammatical fixes for "it's" vs "its" (report by Nick Black). + + amend fix for --disable-root-environ (report by Arnav Singh). + + build-fix for compiling link_test + + drop symbols GCC_PRINTF and GCC_SCANF from curses.h.in, to simplify + use (Debian #993179). + +20210828 + + correct reversed check for --disable-root-environ (report/analysis + by Arnav Singh, cf: 20210626). + + apply gcc format attribute to prototypes which use a va_list + parameter rather than a "..." variable-length parameter list + (prompted by discussion in a tmux pull-request). + + modify configure scripts to filter out redefinitions of _XOPEN_SOURCE, + e.g., for NetBSD which generally supports 500, but 600 is needed for + ncursesw. + + improve documentation for tparm and static/dynamic variables. + + improve typography in terminfo.5 (patch by Branden Robinson). + +20210821 + + improve tparm implementation of %P and %g, more closely matching + SVr4 terminfo. + + move internals of TERMINAL structure to new header term.priv.h + + add "check" rule for ncurses/Makefile + + corrected tsl capability for terminator -TD + + add check in tic to report instances where tparm would detect an + error in an expression (cf: 20201010). + + correct a few places where SP->_pair_limit was used rather than + SP->_pair_alloc (cf: 20170812). + + fix missing "%d" for setaf/setab code 8-15 in xterm+direct16 (report + by Florian Weimer) -TD + + fix some documentation errata from OpenBSD changes. + + update config.sub + +20210814 + + add workaround for broken pcre2 package in Debian 10, from xterm #369. + +20210807 + + ignore "--dynamic-linker" option in generated pkg/config files, + adapted from "distr1" patch. + + add CF_SHARED_OPTS case for Haiku, from patch in haikuports. + +20210731 + + add extensions in xterm+tmux and ecma+strikeout to ms-terminal, + but cancel the non-working Cr and Ms capabilities -TD + + add foot and foot-direct -TD + +20210724 + + add workaround for Windows Terminal's problems with CR/LF mapping to + ms-terminal (patch by Juergen Pfeifer). + + review/update current Windows Terminal vs ms-terminal -TD + +20210718 + + correct typo in "vip" comments (report by Nick Black), reviewed this + against Glink manual -TD + + fill in some missing pieces for pccons, to make it comparable to the + vt220 entry -TD + + modify mk-1st.awk to account for extra-suffix configure option + (report by Juergen Pfeifer). + + change default for --disable-wattr-macros option to help packagers + who reuse wide ncursesw header file with non-wide ncurses library. + + build-fix for test/test_opaque.c, for configurations without opaque + curses structs. + +20210710 + + improve history section for tset manpage based on the 1BSD tarball, + which preceded BSD's SCCS checkins by more than three years. + + improve CF_XOPEN_CURSES macro used in test/configure (report by Urs + Jansen). + + further improvement of libtool configuration, adding a dependency of + the install.tic rule, etc., on the library in the build-tree. + + update config.sub + +20210703 + + amend libtool configuration to add dependency for install.tic, etc., + in ncurses/Makefile on the lower-level libraries. + + modify configure script to support ".PHONY" make program feature. + +20210626 + + add configure option --disable-root-access, which tells ncurses to + disallow most file-opens by setuid processes. + + use default colors in pccon "op" -TD + + correct rmacs/smacs in aaa+dec, aaa+rv -TD + + add hpterm-color2 and hp98550-color (Martin Trusler) + + regenerate man-html documentation. + +20210619 + + improve configure-macro used for dependencies of --disable-leaks such + as --with-valgrind + + trim trailing blanks from files + +20210612 + + fixes for scan-build, valgrind build/testing. + + update config.guess + +20210605 + + add a summary of ncurses-specific preprocessor symbols to curses.h + (prompted by discussion with Peter Farley, Bill Gray). + +20210522 + + regenerate configure scripts with autoconf 2.52.20210509 to eliminate + an unnecessary warning in config.log (report by Miroslav Lichvar). + + add a note in manual page to explain ungetch vs unget_wch (prompted + by discussion with Peter Farley). + + add sp-funcs for erasewchar, killwchar. + + modify wgetnstr, wgetn_wstr to improve compatibility with SVr4 curses + in its treatment of interrupt and quit characters (prompted by + report/testcase by Bill Gray) + + update config.guess, config.sub + +20210515 + + improve manual pages for wgetnstr, newwin (prompted by + report/testcase by Bill Gray). + +20210508 + + modify tputs' error check to allow it to be used without first + calling tgetent or setupterm, noting that terminfo initialization + is required for supporting the terminfo delay feature (report by + Sebastiano Vigna). + + fix several warnings from clang --analyze + + add null-pointer check in comp_parse.c, when a "use=" clause refers + to a nonexisting terminal description (report/patch by Miroslav + Lichvar, cf: 20210227). + +20210501 + + add a special case in the configure script to work around one of the + build-time breakages reported for OpenBSD 6 here: + https://www.mail-archive.com/bugs@openbsd.org/msg13200.html + There is no workaround for the other issue, a broken linker spec. + + modify configure check for libtool to prevent accidental use of an + OpenBSD program which uses the same name. + + update config.guess, config.sub + +20210424 + + avoid using broken system macros for snprintf which interfere with + _nc_SLIMIT's conditionally adding a parameter when the string-hacks + configure option is enabled. + + add a "all::" rule before the new "check" rule in test/Makefile.in + +20210418 + + improve CF_LINK_FUNCS by ensuring that the source-file is closed + before linking to the target. + + add "check" rules for headers in c++, progs and test-directories. + + build-fix for termsort module when configured with termcap (reports + by Rajeev V Pillai, Rudi Heitbaum). + +20210417 + + extend --disable-pkg-ldflags option to also control whether $LDFLAGS + from the build is provided in -config and .pc files (Debian #986764). + + fix some cppcheck warnings, mostly style, in ncurses and c++ + libraries and progs directory. + + fix off-by-one limit for tput's processing command-line arguments + (patch by Hadrien Lacour). + +20210403 + + fix some cppcheck warnings, mostly style, in ncurses library and + progs directory. + + improve description of BSD-style padding in curs_termcap.3x + + improved CF_C11_NORETURN macro, from byacc changes. + + fix "--enable-leak" in CF_DISABLE_LEAKS to allow turning + leak-checking off later in a set of options. + + relax modification-time comparison in CF_LINK_FUNCS to allow it to + accept link() function with NFS filesystems which change the mtime + on the link target, e.g., several BSD systems. + + call delay_output_sp to handle BSD-style padding when tputs_sp is + called, whether directly or internally, to ensure that the SCREEN + pointer is passed correctly (reports by Henric Jungheim, Juraj + Lutter). + +20210327 + + build-fixes for Solaris10 /bin/sh + + fix some cppcheck warnings, mostly style, in ncurses test-programs, + form and menu libraries. + +20210323 + + add configure option --enable-stdnoreturn, making the _Noreturn + keyword optional to ease transition (prompted by report by + Rajeev V Pillai). + +20210320 + + improve parameter-checking in tput by forcing it to analyze any + extended string capability, e.g., as used in the Cs and Ms + capabilities of the tmux description (report by Brad Town, + cf: 20200531). + + remove an incorrect free in the fallback (non-checking) version of + _nc_free_and_exit (report by Miroslav Lichvar). + + correct use-ordering in some xterm-direct flavors -TD + + add hterm, hterm-256color (Mike Frysinger) + + if the build-time compiler accepts c11's _Noreturn keyword, use that + rather than gcc's attribute. + + change configure-check for gcc's noreturn attribute to assume it is + a prefix rather than suffix, matching c11's _Noreturn convention. + + add "lint" rule to c++/Makefile, e.g., with cppcheck. + +20210313 + + improve configure CF_LD_SEARCHPATH macro used for ncurses*-config and + ".pc" files, from dialog changes. + + reduce dependency of math-library in test programs. + + minor fixes for test_tparm.c (cf: 20210306) + + mention "ncurses" prefix in curses_version() manpage (report by + Michal Bielinski). + +20210306 + + improved test/test_tparm.c, by limiting the tests to capabilities + that might have parameters or padding, and combined with tputs test. + + improve discussion of padding versus tparm and tputs in + man/curs_terminfo.3x + + update portability note for FreeBSD in man/tput.1 + +20210227 + + modify tic/infocmp to eliminate unnecessary "\" to escape ":" in + terminfo format. + + add check in tic for duplicate "use=" clauses. + +20210220 + + improve tic warning when oc/op do not mention SGR 39/49 for xterm + compatible XT flag. + + revert change to lib_addch.c in waddch_literal() from 20210130, since + the followup fix in PutCharLR() actually corrects the problem while + this change causes too-early filling/wrapping (report by Johannes + Altmanninger). + + add/use vt220+pcedit and vt220+vtedit -TD + + add scrt/securecrt and absolute -TD + + add nel to xterm-new, though supported since X11R5 -TD + + add/use xterm+nofkeys -TD + + move use of ecma+italics from xterm-basic to xterm+nofkeys -TD + +20210213 + + add test/back_ground.c, to exercise the wide-character background + functions. + + add a check in _nc_build_wch() in case the background character is a + wide-character, rather than a new part of a multibyte character. + + improve tracemunch's coverage of form/menu/panel libraries. + + improve tracemunch's checking/reporting the type for the first + parameter, e.g., "WINDOW*" rather than "#1". + +20210206 + + provide for wide-characters as background character in wbkgrnd + (report/testcase by Anton Vidovic) + + add name for Fedora's pcre2 to configure check for "--with-pcre2" + option, from xterm #363 -TD + + modify adjustment in PutCharLR to restore the cursor position before + writing to the lower-right corner, rather than decrementing the + cursor column, in case it was a double-width character (cf: 20210130). + +20210130 + + correct an off-by-one in comparison in waddch_literal() which caused + scrolling when a double-cell character would not fit at the lower + right corner of the screen (report by Benno Schulenberg). + + split-out att610+cvis, vt220+cvis, vt220+cvis8 -TD + + add vt220-base, for terminal emulators which generally have not + supported att610's blinking cursor control -TD + + use vt220+cvis in vt220, etc -TD + + use att610+cvis, xterm+tmux and ansi+enq in kitty -TD + + use vt220+cvis in st, terminology, termite since they ignore + blinking-cursor detail in att610+cvis -TD + +20210123 + + modify package/config scripts to provide an explicit -L option for + cases when the loader search path has other directories preceding + the one in which ncurses is installed (report by Yuri Victorovich). + + minor build-fixes in configure script and makefiles to work around + quirks of pmake. + +20210116 + + add comment for linux2.6 regarding CONFIG_CONSOLE_TRANSLATIONS + (report by Patrick McDermott) -TD + + make opts extension for getcchar work as documented for ncurses 6.1, + adding "-g" flag to test/demo_new_pair to illustrate. + +20210109 + + fix errata in man/ncurses.3x from recent updates. + + improve quoting/escaping in configure script, uses some features of + autoconf 2.52.20210105 + +20210102 + + update man/curs_memleaks.3x, to include which declares + exit_terminfo. + + clarify man/curs_terminfo.3x, to mention why the macro setterm is + defined in , and remove it from the list of prototypes + (prompted by patch by Graeme McCutcheon). + + amend man/curs_terminfo.3x, to note that is required + for certain functions, e.g., those using chtype or attr_t for + types, as well as mvcur (cf: 20201031). + + use parameter-names in prototypes in curs_sp_funcs.3x, for + consistency with other manpages. + +20201227 + + update terminology entry to 1.8.1 -TD + + fix some compiler-warnings which gcc8 reports incorrectly. + +20201219 + + suppress hyphenation in generated html for manpages, to address + regression in upgrade of groff 1.22.2 to 1.22.3. + + fix inconsistent sort-order in see-also sections of manpages (report + by Chris Bennett). + +20201212 + + improve manual pages for form field-types. + +20201205 + + amend build-fixes for gnat 10 to work with certain systems lacking + gprbuild (cf: 20200627). + + eliminate an additional strlen and wsclen. + + eliminate an unnecessary strlen in waddnstr() (suggested by Benjamin + Abendroth). + + modify inopts manpage, separating the items for nodelay and notimeout + (patch by Benno Schulenberg). + + correct mlterm3 kf1-kf4 (Debian #975322) -TD + + add flash to mlterm3 -TD + +20201128 + + add Smulx to alacritty (Christian Duerr). + + add rep to PuTTY -TD + + add putty+keypad -TD + + add another fflush(stdout) in _nc_flush() to handle time-delays in + the middle of strings such as flash when the application uses + low-level calls rather than curses (cf: 20161217). + + modify configure check for c89/c99 aliases of clang to use its + -std option instead, because some platforms, in particular macOS, + do not provide workable c89/c99 aliases. + +20201121 + + fix some compiler-warnings in experimental Windows-10 driver. + + add the definitions needed in recent configure-check for clang + (report by Steven Pitman). + +20201114 + + fix some compiler-warnings in experimental Windows-10 driver. + + modify a check for parameters in terminfo capabilities to handle the + special case where short extended capability strings were not + converted from terminfo to termcap format. + + modify CF_MIXEDCASE_FILENAMES macro, adding darwin as special case + when cross-compiling (report by Eli Rykoff). + +20201107 + + update kitty+common -TD + + add putty+screen and putty-screen (suggested by Alexandre Montaron). + + explain in ncurses.3x that functions in the tinfo library do not rely + upon wide-characters (prompted by discussion with Reuben Thomas). + +20201031 + + modify MKterm.h.in so that it is not necessary to include + before (prompted by discussion with Reuben Thomas). + + review/improve synopsis for curs_sp_funcs.3x (prompted by discussion + with Reuben Thomas). + + improve format of output in tic's check_infotocap() function, to + ensure that the messages contain only printable text. + + modify configure-check for clang to verify that -Qunused-arguments + is supported. IBM's xlclang does not support it (report by Steven + Pitman). + +20201024 + + provide workaround configure-check for bool when cross-compiling. + + fix a potential indexing error in _nc_parse_entry(), seen with + Herlim's test data using address-sanitizer. + + change a null-pointer check in set_curterm to a valid-string check, + needed in to tic's use-resolution when pad_char is cancelled + (report/testcase by Robert Sebastian Herlim) + + improve tic's -c option to validate the number and type of parameters + and compare against expected number/type before deciding which set of + parameter-lists to use in tparm calls (report/testcase by Robert + Sebastian Herlim). + + fix a link for tabs.1 manpage in announce.html.in (report by Nick + Black), as well as some fixes via linklint. + +20201017 + + improve manpage typography. + + improve discussion in curs_addch.3x of the use of unctrl to display + nonprintable characters. + + add a note in terminfo.5 explaining that no-parameter strings such + as sgr0 or cnorm should not be used with tparm. + +20201010 + + correct sgr in aaa+rv (report by Florian Weimer) -TD + + fix some sgr inconsistencies in d230c, ibm6153, ibm6154, + ncrvt100an -TD + + improve tic's check for errors detected in tparm (prompted by + discussion with Florian Weimer). + + set output-mode to binary in experimental Windows-10 driver (Juergen + Pfeifer). + +20201003 + + remove output-related checks for nl/nonl (report by Leon Winter). + + change tmux's kbs to ^? (report by Premysl Eric Janouch) + + simplify mlterm initialization with DECSTR -TD + + fix a typo in man/curs_terminfo.3 (Reuben Thomas). + + add tmux-direct (tmux #2370, Debian #895754) + + add user-defined capabilities from mintty to Caps-ncurses, for + checking consistency with tic. + +20200926 + + correct configure-check for gnurx library. + + regenerate llib-* files. + + modify tracemunch and the panel library to show readable traces for + panel- and user-pointers. + +20200919 + + update mlterm3 for 3.9.0 (report by Premysl Eric Janouch) -TD + +20200918 + + corrected condition for appending curses.events to the generated + curses.h (report by Sven Joachim, Debian #970545). + +20200912 + + add configure-check for systre/tre with mingw configuration, to get + the library-dependencies as seen in msys2 configuration for mingw64. + + build-fixes for the win32-driver configuration. + + use more defensive binary mode setting for Win32 (Juergen Pfeifer). + +20200907 + + fix regression in setupterm validating non-empty $TERM (report by + Soren Tempel). + +20200906 + + merge/adapt in-progress work by Juergen Pfeifer for new version of + win32-driver. + + correct description of vt330/vt340 (Ross Combs). + +20200831 + + build-fix for awk-scripts modified for win32-driver (report by Werner + Fink). + +20200829 + + remove a redundant NCURSES_EXPORT as a build-fix for "Maarten + Anonymous". + + merge/adapt in-progress work by Juergen Pfeifer for new version of + win32-driver. + + modify configure script, moving gcc -Werror options to EXTRA_CFLAGS + to avoid breaking configure-checks (adapted from ongoing work on + mawk and lynx). + > errata for terminfo.src (report by Florian Weimer): + + correct icl6404 csr + + correct ti916 cup + + improve ndr9500 + +20200822 + + improve version-number extraction in MKlib_gen.sh + + make the test-package for manpages installable by adjusting the + man_db.renames file. + + correct an off-by-one loop-limit in convert_strings function + (report by Yue Tai). + + add CF_SHARED_OPTS cases for HPE NonStop systems (Randall S Becker). + + modify CF_SHARED_OPTS case for NetBSD to use the same "-shared" + option for the non-rpath case as for the rpath case, to allow gcc to + provide suitable runtime initialization (report by Rajeev V Pillai). + +20200817 + + reduce build-warnings by excluding ncurses-internals from deprecation + warnings. + + mark wgetch-events feature as deprecated. + + add definition for $(LIBS) to ncurses/Makefile.in, to simplify builds + using the string-hacks option. + + prevent KEY_EVENT from appearing in curses.h unless the configure + option --enable-wgetch-events is used (report by Werner Fink). + +20200816 + + amend tic/infocmp check to allow for the respective tool's absence + (report by Steve Wills, cf: 20200808). + + improved some of the build-scripts with shellcheck + + filter out -MT/-MD/-MTd/-MDd options in script for Visual Studio C++ + (discussion with "Maarten Anonymous"). + +20200808 + + improve discussion of the system's tic utility when used as part + of cross-compiling (discussion with Keith Marshall). + + modify configuration checks for build-time tic/infocmp to use + AC_CHECK_TOOL. That can still be overridden by --with-tic-path and + --with-infocmp-path when fallbacks are used, but even if not using + fallbacks, the improved check may help with cross-compiling + (discussion with Keith Marshall). + + other build-fixes for Ada95 with MinGW. + + modify Ada95 source-generation utility to write to a file given as + parameter rather than to the standard output, allowing builds with + MinGW. + +20200801 + + remove remaining parts of checks for ISC Unix (cf: 20121006). + + add user32.lib to LDFLAGS for Visual Studio C++ configuration + (discussion with "Maarten Anonymous"). + + modify MKkey_defs.sh to hide ncurses' definition of KEY_EVENTS to + reduce Visual Studio C++ redefinition warnings. + + improve/update checks for external functions in test/configure + +20200725 + + set LINK_TESTS in CF_SHARED_OPTS for msvc (patch by + "Maarten Anonymous") + + improved workaround for redefinition-warnings for KEY_EVENT. + + improve man/term.5 section on legacy storage format (report by + Florian Weimer). + +20200718 + + reduce redefinition-warnings for KEY_EVENT when building with Visual + Studio C++. + + define NCURSES_STATIC when compiling programs to link with static + libraries, to work with MinGW vs Visual Studio C++. + > additional changes for building with Visual Studio C++ and msys2 + (reports/patches by "Maarten Anonymous") + + modify c++/Makefile.in to set the current directory while compiling + the main program, so the linker can find related objects. + + several changes to allow the c++/demo program to compile/link. + + change an ifdef in test-directory, to use VC++ wide-character funcs. + +20200711 + + fix pound-sign mapping in acsc of linux2.6 entry (report by Ingo + Bruckl). + + additional changes for building with Visual Studio C++ and msys2 + (reports/patches by "Maarten Anonymous") + + build-improvements for Windows 10 and MinGW (patch by Juergen + Pfeifer). + + fix a typo in curs_printw.3x (patch by William Pursell). + + fix two errors in infotocap which allowed indexing outside the + buffer (report/testcases by Zhang Gan). + + update length of strings in infocmp's usage function to restore a + trailing null on the longest string (report/testcase by Zhang Gen). + +20200704 + + modify version-check with Ada generics to use the same pattern as in + the check for supported gnat versions (report by Pascal Pignard). + > additional changes for building with Visual Studio C++ and msys2 + (patches by "Maarten Anonymous"): + + adjust headers/declarations to provide for "dllimport" vs "dllexport" + declarations when constructing DLLs, to worko with Visual Studio C++. + +20200627 + + build-fixes for gnat 10.1.1, whose gnatmake drops integration with + gprbuild. + + correct buffer-length in test/color_name.h + +20200613 + + update list of functions in ncurses.3x + + move dlclose() call from lib_mouse.c to delscreen() to avoid a case + in the former which could be called from SIGTSTP handler (Debian + #961097). + +20200606 + + add xterm+256color2, xterm+88color2, to deprecate nonstandard usage + in xterm+256color, xterm+88color -TD + + add shifted Linux console keys in linux+sfkeys entry for + screen.linux (report by Alexandre Montaron). + + use vt100+enq in screen (report by Alexandre Montaron). + + add screen.linux-s alias (suggested by Alexandre Montaron). + +20200531 + + correct configure version-check/warnng for g++ to allow for 10.x + + re-enable "bel" in konsole-base (report by Nia Huang) + + add linux-s entry (patch by Alexandre Montaron). + + drop long-obsolete convert_configure.pl + + add test/test_tparm.c, for checking tparm changes. + + improve parameter-checking for tparm, adding function _nc_tiparm() to + handle the most-used case, which accepts only numeric parameters + (report/testcase by "puppet-meteor"). + + use a more conservative estimate of the buffer-size in lib_tparm.c's + save_text() and save_number(), in case the sprintf() function + passes-through unexpected characters from a format specifier + (report/testcase by "puppet-meteor"). + + add a check for end-of-string in cvtchar to handle a malformed + string in infotocap (report/testcase by "puppet-meteor"). + +20200523 + + update version-check for gnat to allow for gnat 10.x to 99.x + + fix an uninitialized variable in lib_mouse.c changes (cf: 20200502) + + add a check in EmitRange to guard against repeat_char emitting digits + which could be interpreted as BSD-style padding when --enable-bsdpad + is configured (report/patch by Hiltjo Posthuma). + + add --disable-pkg-ldflags to suppress EXTRA_LDFLAGS from the + generated pkg-config and ncurses*-config files, to simplify + configuring in the case where rpath is used but the packager wants + to hide the feature (report by Michael Stapelberg). + > fixes for building with Visual Studio C++ and msys2 (patches by + "Maarten Anonymous"): + + modify CF_SHARED_OPTS to generate a script which translates linker + options into Visual Studio's dialect. + + omit parentheses around function-names in generated lib_gen.c to + work around a Visual Studio C++ limitation. + +20200516 + + add notes on termcap.h header in curs_termcap.3x + + update notes on vscode / xterm.js -TD + +20200509 + + add "-r" option to the dots test-programs, to help with scripting + a performance comparison. + + build-fix test/move_field.c for NetBSD curses, whose form headers + use different names than SVr4 or ncurses. + +20200502 + + add details on the change to Linux SGR 21 in 2018 -TD + + add xterm-direct16 and xterm-direct256 -TD + + modify lib_mouse.c to check for out-of-range button numbers, convert + those to position reports. + +20200425 + + use vt100+fnkeys in putty -TD + + fix a typo in tput.1; "columns" should be "cols". + +20200418 + + improve tracemunch logic for "RUN" compaction. + + fix a special case in wresize() where copying the old text did not + check if the last cell on a row was the beginning of a fullwidth + character (adapted from patch by Benno Schulenberg). + + use vt52+keypad in xterm-vt52, from xterm #354 -TD + + improve see-also section of user_caps.5 + +20200411 + + fix find_pair(), overlooked when refactoring for _nc_reserve_pairs() + (report/testcase by Brad Town, cf: 20170812). + + add a trailing null for magic-string in putwin, flagged by gcc 10 + + update check for gcc version versus gnat to work with gcc 10.x + +20200404 + + modify -fvisibility check to work with g++ + > fixes for building with Visual Studio C++ and msys2 (patches by + "Maarten Anonymous"): + + add configure option and check for gcc -fvisibility=hidden feature + + define NCURSES_NOMACROS in lib_gen.c to work around Visual Studio + C++ preprocessor limitations. + + modify some of the configure-macros, as well as mk-1st.awk to work + with Visual Studio C++ default filenaming. + +20200328 + + correct length of buffer copied in dup_field(). + + remove "$(srcdir)/" from path of library.gpr, needed for out-of-tree + builds of Ada95 (patch by Adam Van Ymeren). + +20200321 + + improve configure-checks to reduce warnings about unused variables. + + improve description of error-returns in waddch and waddnstr manual + pages (prompted by patch by Benno Schulenberg). + + add test/move_field.c to demonstrate move_field(), and a stub for + a corresponding demo of dup_field(). + +20200314 + + add history note to curs_scanw.3x for and + + add history note to curs_printw.3x for and + + add portability note to ncurses.3x regarding + +20200308 + + update copyright notices in test-packages. + + modify tracemunch to guard against errors in its known_p1 table. + + add several --with-xxx-libname options, to help with pkgsrc (prompted + by discussion with Thomas Klausner). + +20200301 + + modify wbkgd() and wbkgrnd() to avoid storing a null in the + background character, because it may be used in cases where the + corresponding 0x80 is not treated as a null (report by Marc Rechte, + cf: 20181208). + +20200229 + + modify CF_NCURSES_CONFIG to work around xcode's c99 "-W" option, + which conflicts with conventional use for passing linker options. + > fixes for building with Visual Studio C++ and msys2 (patches by + "Maarten Anonymous"): + + check for pcre2posix.h instead of pcre2-posix.h + + add case in CF_SHARED_OPTS for msys2 + msvc + + add fallback definition for STDIN_FILENO in progs.priv.h + + modify win_driver.c to use _alloca() rather than gcc's variable + length array feature. + + add NCURSES_IMPEXP to ncurses wrapped-variable declarations + + remove NCURSES_IMPEXP from class variables in c++/cursslk.h + + remove fallback prototype for exit() from c++/etip.h.in + + use configured check for in a couple of places + + conditionally include winsock.h in ncurses/win32con/gettimeofday.c, + because Visual Studio needs this for the timestruct declaration. + + adjust syntax in a couple of files using the NCURSES_API symbol. + +20200222 + + expanded note in ncurses.3x regarding automatically-included headers + + improve vt50h and vt52 based on DECScope manual -TD + + add/use vt52+keypad and vt52-basic -TD + + check/workaround for line-too-long in Ada95 generate utility when + building out-of-tree. + + improve/update HEADER_DEPS in */Makefile.in + + add "check" rule to include/Makefile, to demonstrate that the headers + include all of the required headers for the types used. + +20200215 + + improve manual page for panel library, extending the portability + section as well as documenting error-returns. + + show tic's version when installing terminal database in run_tic.sh + + correct check for gcc vs other compilers used in ncurses 6.0, from + FreeBSD patch by Kyle Evans (cf: 20150725). + + add notes for 6.2 to INSTALL. + +20200212 6.2 release for upload to ftp.gnu.org + + update release notes + + minor build-fixes, mostly to test-package scripts + +20200208 + + modify check for sizeof(wchar_t) to ensure it gives useful result + when cross-compiling. + + drop assumption in configure script that Cygwin's linker is broken. + + define NCURSES_BROKEN_LINKER if the broken-linker feature is used, + to simplify configure-checks for ncurses-examples. + +20200202 + + reassert copyright on ncurses, per discussion in ncurses FAQ: + https://invisible-island.net/ncurses/ncurses.faq.html#relicensed + +20200201 + + modify comparison in make_hash.c to correct a special case in + collision handling for Caps-hpux11 + + add testing utility report_hashing to check hash-tables used for + terminfo and termcap names. + + fix a missing prototype for _nc_free_and_exit(). + + update a few comments about tack 1.07 + + use an awk script to split too-long pathnames used in Ada95 sample + programs for explain.txt + +20200118 + + expanded description of XM in user_caps.5 + + improve xm example for xterm+x11mouse, xterm+sm+1006 -TD + + add history section to curs_slk.3x and curs_terminfo.3x manpages. + + update alacritty entries for 0.4.0 (prompted by patch by + Christian Durr) -TD + + correct spelling errors found with codespell. + + fix for test/configure, from xterm #352. + +20200111 + + improve configure macros which check for the X11/Intrinsic.h header, + to accommodate recent MacOS changes. + + suppress gcc's -Winline warning; it has not been useful for some time + + update config.guess, config.sub + +20200104 + + modify a couple of macros in aclocal.m4 to allow autoconf 2.69 to + "work", to help illustrate discussion in + https://invisible-island.net/autoconf/my-autoconf.html + + fix some warnings from autoheader-252 + +20191228 + + in gen-pkgconfig.in, move the RPATH_LIST and PRIVATE_LIBS assignments + past the various prefix/libdir assignments, to allow for using those + symbols, e.g., as done via CF_SHARED_OPTS. + + improve ncurses*-config and pc-files by filtering out linker-specs. + + modify test-package to more closely match Fedora's configuration + for PIE/PIC feature and debug-packages. + +20191221 + + correct pathname used in Ada95 sample programs for explain.txt, to + work with test-packages. + + improve tracemunch: + + keep track of TERMINAL* values + + if tracing was first turned on after initialization, attempt to + show distinct screen, window and terminal names anyway. + + ensure that GCC_NORETURN is defined in term.h, because the prototype + for exit_terminfo() uses it (report by Werner Fink). + +20191214 + + add exit_curses() and exit_terminfo() to replace internal symbols for + leak-checking. + +20191207 + + fix a few warnings for test-package builds + + add curses_trace(), to replace trace(). + +20191130 + + add portability section to curs_getcchar manpage (prompted by + discussion with Nick Black). + + improve portability discussion of ACS characters in curs_addch + manpage. + + improve typography for double-quotes in manpages. + +20191123 + + fix typo for MinGW rpm test-package. + + workaround in rpm specs for NFS problems in Fedora 31. + +20191116 + + modify ncurses/Makefile.in to fix a case where Debian/testing changes + to the ld --as-needed configuration broke ncurses-examples test + packages. + + drop library-dependency on psapi for MinGW port, since win_driver.c + defines PSAPI_VERSION to 2, making it use GetProcessImageFileName + from kernel32.dll (prompted by patch by Simon Sobish, cf: 20140503). + +20191109 + + add warning-check in tic for terminals with parm_dch vs parm_ich. + + drop ich1 from rxvt-basic, Eterm and mlterm to improve compatibility + with old non-curses programs -TD + + reviewed st 0.8.2, updated some details -TD + + use ansi+rep several places -TD + + corrected tic's check for ich1 (report by Sebastian J. Bronner, + cf: 20020901). + +20191102 + + check parameter of set_escdelay, return ERR if negative. + + check parameter of set_tabsize, return ERR if not greater than zero + (report/patch by Anthony Sottile). + + revise CF_ADD_LIBS macro to prepend rather than append libraries. + + add "xterm-mono" to help packagers (report by Sven Joachim) -TD + +20191026 + + add a note in man/curs_add_wch.3x about Unicode terminology for the + line-drawing characters (report by Nick Black). + + improve comment in lib_tgoto.c regarding the use of \200 where a + \0 would be intended by the caller (report by "64 bit", cf: 20000923). + + modify linux-16color to accommodate Linux console driver change in + early 2018 (report by Dino Petrucci). + +20191019 + + modify make_hash to not require --disable-leaks, to simplify building + with address-sanitizer. + + modify tic to exit if it cannot remove a conflicting name, because + treating that as a partial success can cause an infinite loop in + use-resolution (report/testcase by Hongxu Chen, cf: 20111001). + +20191015 + + improve buffer-checks in captoinfo.c, for some cases when the + input string is shorter than expected. + > fix two errata in tic (report/testcases by Hongxu Chen): + + check for missing character after backslash in write_it + + check for missing characters after "%>" when converting from termcap + syntax (cf: 980530). + +20191012 + + amend recent changes to ncurses*-config and pc-files to filter out + Debian linker-flags (report by Sven Joachim, cf: 20150516). + + clarify relationship between tic, infocmp and captoinfo in manpage. + + check for invalid hashcode in _nc_find_type_entry and + _nc_find_name_entry. + > fix several errata in tic (reports/testcases by "zjuchenyuan"): + + check for invalid hashcode in _nc_find_entry. + + check for missing character after backslash in fmt_entry + + check for acsc with odd length in dump_entry in check for one-one + mapping (cf: 20060415); + + check length when converting from old AIX box_chars_1 capability, + overlooked in changes to eliminate strcpy (cf: 20001007). + +20191005 + + modify the ncurse*-config and pc-files to more closely match for the + -I and -l options. + +20190928 + + amend the ncurses*-config and pc-files to take into account the rpath + hack which differed between those files. + + improve -L option filtering in ncurses*-config + + improve recovery from error when reading command-character in + test/ncurses.c, showing the relevant error message and not exiting on + EINTR (cf: 20180922) + +20190921 + + add a note in resizeterm manpage about top-level windows which touch + the screen's borders. + + modify configure-checks for gnat to identify each of the tools path + and version. + +20190914 + + build-fixes for Ada95 configure-script and corresponding test package + +20190907 + + add --with-ada-libname option and modify Ada95 configuration to + allow renaming the "AdaCurses" library (prompted by proposed changes + by Pascal Pignard). + + modify configure script to distinguish gcc from icc and clang when + the --enable-warnings option is not used, to avoid unnecessary + warnings about unrecognized inline options (report by Sven Joachim). + +20190831 + + build-fixes for configuration using --program-suffix with Ada95, + noticed with MacOS but applicable to other platforms without + libpanelw, etc. + +20190824 + + fix some cppcheck warnings, mostly style, in ncurses test-programs. + +20190817 + + amend 20181208 changes for wbkgd() and wbkgrnd(), fixing a few + details where it still differed from SVr4. + + fix some cppcheck warnings, mostly style, in ncurses test-programs. + +20190810 + + fix a few more coverity warnings. + +20190803 + + improve loop limits in _nc_scroll_window() to handle a case where + the scrolled data is a pad which is taller than the window (patch + by Rob King). + + amend the change to screen, because tmux relies upon that entry + and does not support that feature (Debian #933572) -TD + + updated ms-terminal entry & notes -TD + + updated kitty entry & notes -TD + + updated alacritty+common entry & notes -TD + + use xterm+sl-twm for consistency -TD + +20190728 + + fix a few more coverity warnings. + + more documentation updates based on tctest. + +20190727 + + fix a few coverity warnings. + + documentation updates based on tctest. + +20190720 + + fix a few warnings for gcc 4.x + + add some portability/historical details to the tic, toe and infocmp + manual pages. + + correct fix for broken link from terminfo(5) to tabs(1) manpage + (report by Sven Joachim). + +20190713 + + change reset's behavior for margins to simply clear soft-margins if + possible, rather than clearing and then setting them according to the + terminal's width (suggested by Thomas Wolff). + + correct order of one wbkgd versus start_color call in test/padview.c + +20190706 + + add domterm -TD + + improve comments for recent changes, add alias xterm.js -TD + +20190630 + + add --with-tic-path and --with-infocmp-path to work around problems + building fallback source using pre-6.0 tic/infocmp. + + add a check in tic for paired indn/rin + + correct a buffer-limit in write_entry.c for systems that use caseless + filenames. + + add ms-terminal -TD + + add vscode, vscode-direct -TD + +20190623 + + improve the tabs.1 manual page to distinguish the PWB/Unix and 7th + Edition versions of the tabs utility. + + add configure check for getenv() to work around implementation shown + in Emscripten #6766, use that to optionally suppress START_TRACE + macro, whose call to getenv() may not work properly (report by Ilya + Ig Petrov). + + modify initialization functions to avoid relying upon persistent + data for the result from getenv(). + + update config.guess, config.sub + +20190615 + + expand the portability section of the man/tabs.1 manual page. + + regenerate HTML manpages. + +20190609 + + add mintty, mintty-direct (adapted from patch by Thomas Wolff). + Some of the suggested user-defined capabilities are commented-out, + to allow builds with ncurses 5.9 and 6.0 + + add Smol/Rmol for tmux, vte-2018 (patch by Nicholas Marriott). + + add rs1 to konsole, mlterm -TD + + modify _nc_merge_entry() to make a copy of the data which it merges, + to avoid modifying the source-data when aligning extended names. + +20190601 + + modify an internal call to vid_puts to pass extended color pairs + e.g., from tty_update.c and lib_mvcur.c (report by Niegodziwy Beru). + + improve manual page description of init_tabs capability and TABSIZE + variable. + +20190525 + + modify reset_cmd.c to allow for tabstops at intervals other than 8 + (report by Vincent Huisman). + +20190518 + + update xterm-new to xterm patch #345 -TD + + add/use xterm+keypad in xterm-new (report by Alain D D Williams) -TD + + update terminator entry -TD + + remove hard-tabs from ti703 (report by Robert Clausecker) + + mention meml/memu/box1 in user_caps manual page. + + mention user_caps.5 in tic and infocmp manual pages. + +20190511 + + fix a spurious blank line seen with "infocmp -1fx xterm+x11mouse" + + add checks in repair_subwindows() to keep the current position and + scroll-margins inside the resized subwindow. + + add a limit check in newline_forces_scroll() for the case where the + row is inside scroll-margins, but not at the end (report by Toshio + Kuratomi, cf: 20170729). + + corrected a warning message in tic for extended capabilities versus + number of parameters. + +20190504 + + improve workaround for Solaris wcwidth versus line-drawing characters + (report by Pavel Stehule). + + add special case in tic to validate RGB string-capability extension. + + corrected string/parameter-field for RGB in Caps-ncurses. + +20190427 + + corrected problem in terminfo load/realignment which prevented + infocmp from comparing extended capabilities with the same name + but different types. + +20190420 + + improve ifdef's for TABSIZE variable, to help with AIX/HPUX ports. + +20190413 + + check for TABSIZE variable in test/configure script. + + used test/test_arrays.c to improve Caps.aix1 and Caps.hpux11 + + corrected filtering of comments in MKparametrized.sh + + reduce duplication across Caps* files by moving some parts which do + not depend on order into Caps-ncurses. + +20190406 + + modify MKcaptab.sh, MKkey_defs.sh, and MKhashsize.sh to handle + split-up Caps-files. + + build-fixes if extended-functions are disabled. + +20190330 + + add "screen5", to mention italics (report by Stefan Assmann) + + modify description of xterm+x11hilite to eliminate unused p5 -TD + + add configure script checks to help with a port to Ultrix 3.1 + (report by Dennis Grevenstein). + + check if "b" binary feature of fopen works + + check for missing feature of locale.h + + add fallback for strstr() in test-programs + + add fallback for STDOUT_FILENO in test-programs + + update config.guess, config.sub + +20190323 + + move macro for is_linetouched() inside NCURSES_NOMACROS ifndef. + + corrected prototypes in several manpages using script to extract + those in compilable form. + + use _nc_copy_termtype2() rather than direct assignment in setupterm, + in case it is called repeatedly using fallback terminfo descriptions + (report/patch by Werner Fink). + +20190317 + + regenerate llib-* files. + + modify tic to also use new function for user-defined capability info. + + modify _nc_parse_entry() to check if a user-defined capability has + an unexpected type; ignore it in that case. + + fix a special case of link-anchors in generated Ada html files. + + use newer rel=author tag in generated html rather than rev=made, + which did not become accepted. + +20190309 + + in-progress changes to add parameter-checking for common user-defined + capabilities in tic. + + update MKcodes.awk and MKnames.awk to ignore the new "userdef" + data in Caps-ncurses (cf: 20190302). + +20190302 + + corrected some of the undocumented terminfo names in Caps.hpux11 + + add "Caps-ncurses" file to help with checking inconsistencies in some + user-defined capabilities. + + amend check for repeat_char to handle a case where setlocale() was + called after initscr() (report by "Ampera"). + +20190223 + + fix typo in adds200 -TD + + add tic check for consistent alternate character set capabilities. + + improve check in mvcur() to decide whether to use hard-tabs, using + xt, tbc and hts as clues. + + replace check in reset command for obsolete "pt" capability using + tbc and hts capabilities as clues (report by Nicolas Marriott). + +20190216 + + improve manual page description of TABSIZE. + + add test/demo_tabs program. + +20190209 + + add check in tic to provide warnings for mismatched number of + parameters in the documented user-capability extensions. + +20190202 + + modify rpm test-package ".spec" file to work around naming conflict + with Redhat's package for ncurses6. + + modify no-leaks code in test/picsmap to avoid non-standard tdestroy. + + amend change to configure script which altered the top-level makefile + to avoid attempting to install the terminfo database when it was not + configured, to allow for installing the ".pc" files which are also + in the misc directory (report by Steve Wills). + +20190126 + + change some "%define" statements in test-packages for RPMs to + "%global" to work around changes in rpm 4.14 from recent Redhat. + + fixes for O_INPUT_FIELD extension (patch by Leon Winter). + + eliminate fixed buffer-size when reading $TERMCAP variable. + + correct logic in read_entry.c which prevented $TERMCAP variable from + being interpreted as a fallback to terminfo entry (prompted by + Savannah #54556, cf: 20110924). + +20190121 + + add a check in test/configure to work around non-ncurses termcap.h + file in Slackware. + + corrected flag for "seq" method of db 1.8.5 interface, needed by toe + on some of the BSDs. + + updated "string-hacks" feature. + + minor improvements to manpage typography. + + corrected conditionally-compiled limit on color pairs (report by + "Hudd"). + + add -x option to test/pair_content, test/color_content for testing + init_extended_pair, extended_pair_content, init_extended_color, + extended_color_content + + add -p option to test/pair_content, test/color_content to show the + return values from the tested functions. + + improve manual page curs_color.3x discussion of error returns and + extensions. + + add O_INPUT_FIELD extension to form library (patch by Leon Winter). + + override/suppress --enable-db-install if --disable-database configure + option was given. + + change a too-large terminal entry in tic from a fatal error to a + warning (prompted by discussion with Gabriele Balducci). + +20190112 + + fix typo in term(5), improve explanation of format (report by Otto + Modinos). + + add nsterm-direct -TD + + use SGR 1006 mouse for konsole-base -TD + + use SGR 1006 mouse for putty -TD + + add ti703/ti707, ti703-w/ti707-w (Robert Clausecker) + +20190105 + + add dummy "check" rule in top-level and test-Makefile to simply + building test-packages for Arch. + + modify configure script to avoid conflict with a non-POSIX feature + that enables all parts of the system headers by default. Some + packagers have come to rely upon this behavior (FreeBSD #234049). + + update config.guess, config.sub + +20181229 + + improve man/curs_mouse.3x with regard to xterm + + modify tracemunch to accept filename parameters in addition to use + as a pipe/filter. + + minor optimization to reduce calls to _nc_reserve_pairs (prompted by + discussion with Bryan Christ). + + add test/pair_content.c and test/color_content.c + + modify infocmp to omit filtering of "OTxx" names which are used for + obsolete capabilities, when the output is sorted by long-names. + Doing this helps when making a table of the short/long capability + names. + +20181215 + + several fixes for gcc8 strict compiler warnings. + + fix a typo in comments (Aaron Gyes). + + add nsterm-build309 to replace nsterm-256color, assigning the latter + as an alias of nsterm, to make mouse work with nsterm-256color -TD + + base gnome-256color entry on "gnome", not "vte", for consistency -TD + + updates for configure macros from work on tin and xterm: + + CF_GNU_SOURCE, allow for Cygwin's newlib when checking for the + _DEFAULT_SOURCE symbol. + + CF_VA_COPY, add fallback check if neither va_copy/__va_copy is + supported, to try copying the pointers for va_list, or as an array. + Also add another fallback check, for __builtin_va_copy(), which + could be used with AIX xlc in c89 mode. + +20181208 + + modify wbkgd() and wbkgrnd() to improve compatibility with SVr4 + curses, changing the way the window rendition is updated when the + background character is modified (report by Valery Ushakov). + +20181201 + + add midnightbsd to CF_XOPEN_SOURCE macro (patch by Urs Jansen). + + add "@" command to test/ncurses F-test, to allow rapid jump to + different character pages. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20181125 + + build-fix (reports by Chih-Hsuan Yen, Sven Joachim). + +20181124 + + check --with-fallbacks option to ensure there is a value, and add + the fallback information to top-level Makefile summary. + + add some traces in initialization to show whether a fallback entry is + used. + + build-fix for test/movewindow with ncurses-examples on Solaris. + + add "-l" option to test/background, to dump screen contents in a form + that lets different curses implementations be compared. + + modify the initialization checks for mouse so that the xterm+sm+1006 + block will work with terminal descriptions not mentioning xterm + (report by Tomas Janousek). + +20181117 + + ignore the hex/b64 $TERMINFO in toe's listing. + + correct a status-check in _nc_read_tic_entry() so that if reading + a hex/b64 $TERMINFO, and the $TERM does not match, fall-through to + the compiled-in search list. + +20181110 + + several workarounds to ensure proper C compiler used in parts of + Ada95 tree. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20181027 + + add OpenGL clients alacritty and kitty -TD + + add Smulx for tmux, vte-2018 -Nicholas Marriott + +20181020 + + ignore $TERMINFO as a default value in configure script if it came + from the infocmp -Q option. + + allow value for --with-versioned-syms to be a relative pathname + + add a couple of broken-linker symbols to the list of versioned + symbols to help with link-time optimization versus weak symbols. + + apply shift/control/alt logic when decoding xterm's 1006 mode to + wheel-mouse events (Redhat #1610681). + +20181013 + + amend change from 20180818, which undid a fix for the $INSTALL value + to make it an absolute path. + +20181006 + + improve a configure check to work with newer optimizers (report by + Denis Pronin, Gentoo #606142). + + fix typo in tput.c (Sven Joachim, cf: 20180825). + +20180929 + + fix typo in tvi955 -TD + + corrected acsc for regent60 -TD + + add alias n7900 -TD + + corrected acsc for tvi950 -TD + + remove bogus kf0 from tvi950 -TD + + added function-key definitions to agree with Televideo 950 manual -TD + + add bel to tvi950 -TD + + add shifted function-keys to regent60 -TD + + renumber regent40 function-keys to match manual -TD + + add cd (clr_eos) to adds200 -TD + +20180923 + + build-fix: remove a _tracef call which was used for debugging (report + by Chris Clayton). + +20180922 + + ignore interrupted system-call in test/ncurses's command-line, e.g., + if the terminal were resized. + + add shift/control/alt logic for decoding xterm's 1006 mode (Redhat + #1610681, cf: 20141011). + + modify rpm test-packages to not use --disable-relink with Redhat, + since Fedora 28's tools do not work with that feature. + +20180908 + + document --with-pcre2 configure option in INSTALL. + + improve workaround for special case in PutAttrChar() where a cell is + marked as alternate-character set, to handle a case where the + character in the cell does not correspond to any of the ASCII + fallbacks (report by Leon Winter, cf: 20180505). + + amend change to form library which attempted to avoid unnecessary + update of cursor position in non-public fields, to simply disable + output in this case (patch by Leon Winter, cf: 20180414). + + improve check for LINE_MAX runtime limit, to accommodate broken + implementations of sysconf(). + +20180901 + + improve manual page for wgetnstr, giving background for the length + parameter. + + define a limit for wgetnstr, wgetn_wstr when length is negative or + "too large". + + update configure script to autoconf 2.52.20180819 (Debian #887390). + +20180825 + + add a section to tput manual page clarifying how it determines the + terminal size (prompted by discussion with Grant Jenks). + + add "--disable-relink" to rpm test-packages, for consistency with the + deb test-packages. + + split spec-file into ncurses6.spec and ncursest6.spec to work around + toolset breakage in Fedora 28. + + drop mention of "--disable-touching", which was not in the final + 20180818 updates. + +20180818 + + build-fix for PDCurses with ncurses-examples. + + improved CF_CC_ENV_FLAGS. + + modify configure scripts to reduce relinking/ranlib during library + install (Debian #903790): + + use "install -p" when available, to avoid need for ranlib of + static libraries. + + modify scripts which use "--disable-relink" to add a 1-second + sleep to work around tools which use whole-second timestamps, e.g., + in utime() rather than the actual file system resolution. + +20180804 + + improve logic for clear with E3 extension, in case the terminal + scrolls content onto its saved-lines before actually clearing + the display, by clearing the saved-lines after clearing the + display (report/patch by Nicholas Marriott). + +20180728 + + improve documentation regarding feature-test macros in curses.h + + improve documentation regarding the virtual and physical screens. + + formatting fixes for manpages, regenerate man-html documentation. + +20180721 + + build-fixes for gcc8. + + corrected acsc for wy50 -TD + + add wy50 and wy60 shifted function-keys as kF1 to kF16 -TD + + remove ansi+rep mis-added to interix in 2018-02-23 -TD + +20180714 + + add enum, regex examples to test/demo_forms + + add configure check for pcre-posix library to help with MinGW port. + +20180707 + + build-fixes for gcc8. + + correct order of WINDOW._ttytype versus WINDOW._windowlist in + report_offsets. + + fix a case where tiparm could return null if the format-string was + empty (Debian #902630). + +20180630 + + add acsc string to vi200 (Nibby Nebbulous) + add right/down-arrow to vi200's acsc -TD + + add "x" to tput's getopt string so that "tput -x clear" works + (Nicholas Marriott). + + minor fixes prompted by anonymous report on stack overflow: + + correct order of checks in _nc_get_locale(), for systems lacking + locale support. + + add "#error" in a few places to flag unsupported configurations + +20180623 + + use _WIN32/_WIN64 in preference to __MINGW32__/__MINGW64__ symbols + to simplify building with MSVC, since the former are defined in both + compiler configurations (report by Ali Abdulkadir). + + further improvements to configure-checks from work on dialog, i.e., + updated CF_ADD_INCDIR, CF_FIND_LINKAGE, CF_GCC_WARNINGS, + CF_GNU_SOURCE, CF_LARGEFILE, CF_POSIX_C_SOURCE, CF_SIZECHANGE, and + CF_TRY_XOPEN_SOURCE. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20180616 + + build-fix for ncurses-examples related to gcc8-fixes (cf: 20180526). + + reduce use of _GNU_SOURCE for current glibc where _DEFAULT_SOURCE + combines with _XOPEN_SOURCE (Debian #900987). + + change target configure level for _XOPEN_SOURCE to 600 to address + use of vsscanf and setenv. + + improved configure-checks CF_SIZECHANGE and CF_STRUCT_TERMIOS from + work on dialog. + +20180609 + + modify generated ncurses*config and ncurses.pc, ncursesw.pc, etc., + to list helper libraries such as gpm for static linking (Debian + #900839). + + marked vwprintw and vwscanw as deprecated; recommend using vw_printw + and vw_scanw, respectively. + +20180602 + + add RPM test-package "ncursest-examples". + + modified RPM test-package to work with Mageia6. + +20180526 + + add note in curs_util.3x about unctrl.h + + review/improve header files to ensure that those include necessary + files except for the previously-documented cases (report by Isaac + Pascual Monells). + + improved test-package scripts, adapted from byacc 1.9 20180525. + + fix some gcc8 warnings seen in Redhat package build, but + work around bug in gcc8 compiler warnings in comp_parse.c + +20180519 + + formatting fixes for manpages, regenerate man-html documentation. + + trim spurious whitespace from tmux in 2018-02-24 changes; + fix some inconsistencies in/between tmux- and iterm2-entries for SGR + (report by C Anthony Risinger) + + improve iterm2 using some xterm features which it has adapted -TD + + add check in pair_content() to handle the case where caller asks + for an uninitialized pair (Debian #898658). + +20180512 + + remove trailing ';' from GCC_DEPRECATED definition. + + repair a change from 20110730 which left an error-check/warning dead. + + fix several minor Coverity warnings. + +20180505 + + add deprecation warnings for internal functions called by older + versions of tack. + + fix a special case in PutAttrChar() where a cell is marked as + alternate-character set, but the terminal does not actually support + the given graphic character. This would happen in an older terminal + such as vt52, which lacks most line-drawing capability. + + use configure --with-config-suffix option to work around filename + conflict with Debian packages versus test-packages. + + update tracemunch to work with perl 5.26.2, which changed the rules + for escaping regular expressions. + +20180428 + + document new form-extension O_EDGE_INSERT_STAY (report by Leon + Winter). + + correct error-returns listed in manual pages for a few form functions + (report by Leon Winter). + + add a check in form-library for null-pointer dereference: + unfocus_current_field (form); + form_driver (form, REQ_VALIDATION); + (patch by Leon Winter). + +20180414 + + modify form library to optionally delay cursor movement on a field + edge/boundary (patch by Leon Winter). + + modify form library to avoid unnecessary update of cursor position in + non-public fields (patch by Leon Winter). + + remove unused _nc_import_termtype2() function. + + also add/improve null-pointer checks in other places + + add a null-pointer check in _nc_parse_entry to handle an error when + a use-name is invalid syntax (report by Chung-Yi Lin). + +20180407 + + clarify in manual pages that vwprintw and vwscanw are obsolete, + not part of X/Open Curses since 2007. + + use "const" in some prototypes rather than NCURSES_CONST where X/Open + Curses was updated to do this, e.g., wscanw, newterm, the terminfo + interface. Also use "const" for consistency in the termcap + interface, which was withdrawn by X/Open Curses in Issue 5 (2007). + As of Issue 7, X/Open Curses still lacks "const" for certain return + values, e.g., keyname(). + +20180331 + + improve terminfo write/read by modifying the fourth item of the + extended header to denote the number of valid strings in the extended + string table (prompted by a comment in unibilium's sources). + +20180324 + + amend Scaled256() macro in test/picsmap.c to cover the full range + 0..1000 (report by Roger Pau Monne). + + add some checks in tracemunch for undefined variables. + + trim some redundant capabilities from st-0.7 -TD + + trim unnecessary setf/setb from interix -TD + +20180317 + + fix a check in infotocap which may not have detected a problem when + it should have. + + add a check in tic for the case where setf/setb are given using + different strings, but provide identical results to setaf/setab. + + further improve fix for terminfo.5 (patch by Kir Kolyshkin). + + reorder loop-limit checks in winsnstr() in case the string has no + terminating null and only the number of characters is used (patch + by Gyorgy Jeney). + +20180303 + + modify TurnOn/TurnOff macros in lib_vidattr.c and lib_vid_attr.c to + avoid expansion of "CUR" in trace. + + improve a few lintian warnings in test-packages. + + modify lib_setup to avoid calling pthread_self() without first + verifying that the address is valid, i.e., for weak symbols + (report/patch by Werner Fink). + + modify generated terminfo.5 to not use "expand" and related width + on the last column of tables, making layout on wide terminals look + better (adapted from patch by Kir Kolyshkin). + + add a category to report_offsets, e.g., "w" for wide-character, "t" + for threads to make the report more readable. Reorganized the + structures reported to make the categories more apparent. + + simplify some ifdef's for extended-colors. + + add NCURSES_GLOBALS and NCURSES_PRESCREEN to report_offsets, to show + how similar the different tinfo configurations are. + +20180224 + + modify _nc_resolve_uses2() to detect incompatible types when merging + a "use=" clause of extended capabilities. The problem was seen in a + defective terminfo integrated from simpleterm sources in 20171111, + compounded by repair in 20180121. + + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD + + fix remaining flash capabilities with trailing mandatory delays -TD + + correct cut/paste in NEWS (report by Sven Joachim). + +20180217 + + remove incorrect free() from 20170617 changes (report by David Macek). + + correct type for "U8" in user_caps.5; it is a number not boolean. + + add a null-pointer check in safe_sprintf.c (report by Steven Noonan). + + improve fix for Debian #882620 by reusing limit2 variable (report by + Julien Cristau, Sven Joachim). + +20180210 + + modify misc/Makefile.in to install/uninstall explicit list in case + the build-directory happens to have no ".pc" files when an uninstall + is performed (report by Jeffrey Walton). + + deprecate safe-sprintf, since the vsnprintf function, which does what + was needed, was standardized long ago. + + add several development/experimental options to development packages. + + minor reordering of options in configure script to make the threaded + and reentrant options distinct from the other extensions which are + normally enabled. + +20180203 + + minor fixes to test/*.h to make them idempotent. + + add/use test/parse_rgb.h to show how the "RGB" capability works. + + add a clarification in user_caps.5 regarding "RGB" capability. + + add extended_slk_color{,_sp} symbols to the appropriate + package/*.{map,sym} files (report by Sven Joachim, cf: 20170401). + +20180129 + + update "VERSION" file, used in shared-library naming. + +20180127 6.1 release for upload to ftp.gnu.org + +20180127 + + updated release notes + + amend a warning message from tic which should have flagged misuse + of "XT" capability in "screen" terminal description. + > terminfo changes: + + trim "XT" from screen entry, add comments to explain why it was + not suitable -TD + + modify iterm to use xterm+sl-twm building block -TD + + mark konsole-420pc, konsole-vt100, konsole-xf3x obsolete reflecting + konsole's removal in 2008 -TD + + expanded the history section of konsole to explain its flawed + imitation of xterm's keyboard -TD + + use xterm+x11mouse in screen.* entries because screen does not yet + support xterm's 1006 mode -TD + + add nsterm-build400 for macOS 10.13 -TD + + add ansi+idc1, use that in ansi+idc adding dch for consistency -TD + + update vte to vte-2017 -TD + + add ecma+strikeout to vte-2017 -TD + + add iterm2-direct -TD + + updated teraterm, added teraterm-256color -TD + + add mlterm-direct -TD + + add descriptions for ANSI building-blocks -TD + +20180121 pre-release + > terminfo changes: + + add xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title + blocks from xterm #331 -TD + + add xterm+direct, xterm+indirect, xterm-direct entries from xterm + #331 -TD + + modify xterm+256color and xterm+256setaf to use correct number of + color pairs, for ncurses 6.1 -TD + + add rs1 capability to xterm-256color -TD + + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs to + match xterm #272, reflecting packager's changes -TD + + remove "boolean" Se, Ss from st-0.7 -TD + + add konsole-direct and st-direct -TD + + remove unsupported "Tc" capability from st-0.7; use st-direct if + direct-colors are wanted -TD + + add vte-direct -TD + + add XT, hpa, indn, and vpa to screen, and invis, E3 to tmux (patch by + Pierre Carru) + + use xterm+sm+1006 in xterm-new, vte-2014 -TD + + use xterm+x11mouse in iterm, iterm2, mlterm3 because xterm's 1006 + mode does not work with those programs. konsole is debatable -TD + + add "termite" entry (report by Markus Pfeiffer) -TD + > merge branch begun April 2, 2017 which provides these features: + + support read/write new binary-format for terminfo which stores + numeric capabilities as a signed 32-bit integer. The test programs + such as picsmap, ncurses were created or updated during 2017 to use + this feature. + + the new format is written by the wide-character configuration of + tic when it finds a numeric capability larger than 32767. + + other applications such as infocmp built with the wide-character + ncurses library work as expected. + + applications built with the "narrow" (8-bit) configuration will + read the new format, but will limit those extended values to 32767. + + in either wide/narrow configuration, the structure defined in + term.h still uses signed 16-bit values. + + because it is incompatible with the legacy (mid-1980s) binary format, + a new magic value is provided for the "file" program. + + the term.5 manual page is updated to describe this new format. + + the limit on file-size for compiled terminfo is increased in the + wide-character configuration to 32768. + +20180120 + + build-fix in picsmap.c for stdint.h existence. + + add --disable-stripping option to configure scripts. + + modify ncurses-examples to install test-scripts in the data directory. + + work around tool-breakage in Debian 9 and later by invoking + gprconfig to specify the C compiler to be used by gnatmake, + and conditionally suppressing Library_Options line for static + libraries. + + bump the compat level for test-packages to 7, i.e., Debian 5. + +20180106 + + fixes for writing extended color pairs in putwin. + + modify test/savescreen.c to add test patterns that exercise 88-, + 256-, etc., colors. + + modify configure option --with-build-cc, adding clang, c89 and c99 + as possible default values. + + modify ncurses-examples configure script to use pkg-config for the + extra form/menu/panel libraries, to be more consistent with the + handling of the curses/ncurses library. + + modify test-packages for mingw to supply "pc" files. + + modify gen-pkgconfig.in to list -lpthread as a private library when + configured to access it via weak symbols. + + simplify gen-pkgconfig.in, adding -ltinfo without the special linker + checks because some versions of the linker simply hard-code the + behavior. + + update URLs for ncurses website to use https. + + modify CF_CURSES_LIBS to fill in $cf_nculib_root in case the + ncurses-examples are built with a system ncurses that lacks the + standard "curses" symbolic link, as done by SuSE. The symbol is + needed to make a followup check for the pthread library work, and + would be set properly using the options "--with-screen", etc. + + generate misc/*.pc with "all" rule, as done for "sources" rule + (report by Jeffrey Walton). + +20171230 + + build-fix for ncurses-examples with Fedora27, adding check for + reset_color_pairs() -- not yet in Fedora's package. + + consistently add $CFLAGS to $MK_SHARED_LIB symbol in configure + script when the latter happens to use the C compiler rather than + directly using the loader (report by Jeffrey Walton). + + set ABI for upcoming 6.1 release in "*.map" files. While there are + some remaining internals to apply, no ABI-related changes are + anticipated. + + add configure --with-config-suffix option to work around filename + conflict with Redhat packages versus test-packages. + +20171223 + + modify ncurses-examples to quiet const-warnings when building with + PDCurses. + + modify toe to not exit if unable to read a terminal description, + e.g., if there is a permission problem. + + minor fix for progs/toe.c, using _nc_free_termtype2. + + assign 0 to pointer in _nc_tgetent_leak() after freeing it. Also + avoid reusing pointer from previous successful call to tgetent + if the latest call is unsuccessful (patch by Michael Schroeder, + OpenSuSE #1070450). + + minor fix for test/tracemunch, initialize $awaiting variable. + +20171216 + + repair template in test/package/ncurses-examples.spec (cf: 20171111). + + improve tic's warning about the number of parameters tparm might use + for u1-u9 by making a special case for u6. + + improve curs_attr.3x discussion of color pairs. + +20171209 + + modify misc/ncurses-config.in to make output with --includedir + consistent with --cflags, i.e., when --disable-overwrite option was + configured the output should show the subdirectory where headers + are. + + modify MKlib_gen.sh to suppress macros when calling an "implemented" + function in link_test.c + + updated ftp-url used in test-packages, etc. + + modify order of -pie/-shared options in configure script in case + LDFLAGS uses "-pie", working around a defect or limitation in the GNU + linker (prompted by patch by Yogesh Prasad, forwarded by Jay Shah). + + add entry in man_db.renames for user_caps.5 + +20171125 + + modify MKlib_gen.sh to avoid tracing result from getstr/getnstr + before initialized. + + add "-a" aspect-ratio option to picsmap. + + add configure check for default path of rgb.txt, used in picsmap. + + modify _nc_write_entry() to truncate too-long filename (report by + Hosein Askari, Debian #882620). + + build-fix for ncurses-examples with NetBSD curses: + + it lacks the use_env() function. + + it lacks libpanel; a recent change used the wrong ifdef symbol. + + add a macro for is_linetouched() and adjust the function's return + value to make it possible for most applications to check for an + error-return (report by Midolikawa H). + + additional manpage cleanup. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20171118 + + add a note to curs_addch.3x on portability. + + add a note to curs_pad.3x on the origin and portability of pads. + + improve manpage description of getattrs (report by Midolikawa H). + + improve manpage macros (prompted by discussion in Debian #880551. + + reviewed test-programs using KEY_RESIZE, made fixes to test/worm.c + + add a "-d" option to picsmap for default-colors. + + modify old terminology entry and a few other terminal emulators to + account for xon -TD + + correct sgr string for tmux, which used screen's "standout" code + rather than the standard code (patch by Roman Kagan) + + correct sgr/sgr0 strings in a few other cases reported by tic, making + those correspond to the non-sgr settings where they differ, but + otherwise use ECMA-48 consistently: + jaixterm, aixterm, att5420_2, att4424, att500, decansi, d410-7b, + dm80, hpterm, emu-220, hp2, iTerm2.app, mterm-ansi, ncrvt100an, + st-0.7, vi603, vwmterm -TD + + build-fix for diagnostics warning in lib_mouse.c for pre-5.0 versions + of gcc which did not recognize the diagnostic "push" pragma (patch by + Vassili Courzakis). + +20171111 + + add "op" to xterm+256setaf -TD + + reviewed terminology 1.0.0 -TD + + reviewed st 0.7 -TD + + suppress debug-package for ncurses-examples rpm build. + +20171104 + + check for interrupt in color-pair initialization of dots_curses.c, + dots_xcurses.c + + add z/Z zoom feature to test/ncurses.c C/c screens. + + add '<' and '>' commands to test/ncurses.c S/s screens, to better + test off-by-ones in the overlap/copywin functions. + +20171028 + + improve man/curs_inwstr.3x, correct end-logic for lib_inwstr.c + (report by Midolikawa H). + + fix typo in a few places for "improvements" (patch by Sven Joachim). + + clear the other half of a double-width character on which a line + drawing character is drawn. + + make test/ncurses.c "s" test easier to understand which subtests are + available; add a "S" wide-character overlap test-screen. + + modify test/ncurses.c C/c tests to allow for extended color pairs. + + add endwin() call in error-returns from test/ncurses.c omitted in + recent redesign of its menu (cf: 20170923). + + improve install of hashed-db by removing the ".db" file as done for + directory-tree terminal databases. + + repair a few overlooked items in include/ncurses_defs from recent + port/refactoring of test-programs (cf: 20170909). + + add test/padview.c, to compare pads with direct updates in view.c + +20171021 + + modify test/view.c to expand tabs using the ncurses library rather + than in the test-program. + + remove very old SIGWINCH example in test/view.c, just use KEY_RESIZE. + + add -T, -e, -f -m options to "dots" test-programs. + + fix a few typos in usage-messages for test-programs. + +20171014 + + minor cleanup to test/view.c: + + eliminate "-n" option by simply reading the whole file. + + implement page up/down commands. + + add check in tput for init/reset operands to ensure those use a + terminal. + + improve manual pages which discuss chtype, cchar_t types and the + attribute values which can be stored in those types. + + correct array-index when parsing "-T" command-line option in tabs + program. + + modify demo_new_pair.c to pass extended pairs to setcchar(). + + add test/dots_xcurses.c to illustrate a different approach used for + extended colors which can be contrasted with dots_curses.c. + + add a check in tic to note when a description uses non-mandatory + delays without xon_xoff. This is not an error, but some descriptions + for a terminal emulator may use the combination incorrectly. + +20171007 + + modify "-T" option of clear and tput to call use_tioctl() to obtain + the operating system's notion of the screensize if possible. + + review/repair some exit-codes for tput, making usage-message exit + with 2 rather than 1, and a failure to open terminal 4+errno. + + amend check in tput, tabs and clear to allow those to use the + database-only features in cron if a -T option gives a suitable + terminal name (report by Lauri Tirkkonen). + + correct an ifdef in test/ncurses.c for systems with soft-keys but + not slk_color(). + + regenerate man-html documentation. + +20170930 + + fix a symbol conflict that made ncurses.c C/c menu not work with + Solaris xpg4 curses. + + add refresh() call to dots_mvcur.c, needed to use mvcur() with + Solaris xpg4 curses after calling newterm(). + + minor fixes for configure script from work on ncurses-examples and + tin. + + improve animation in test/xmas.c by adding a time-delay in blinkit(). + + modify several test programs to reflect that ncurses honors existing + signal handlers in initscr(), while other implementations do not. + + modify bs.c to make it easier to quit. + + change ncurses-examples to use attr_t vs chtype to follow X/Open + documentation more closely since Solaris xpg4-curses uses different + values for WA_xxx vs A_xxx that rely on attr_t being an unsigned + short. Tru64 aka OSF1, HPUX, AIX did as ncurses does, equating the + two sets. + +20170923 + + modify menu for test/ncurses.c to fit on 24-line screen. + + build-fix for configure --with-caps=uwin + + add options to test_arrays.c, for selecting termcap vs terminfo, etc. + +20170916 + + minor fix to test/filter.c to avoid clearing the command in one case. + + modify filter() to discard clr_eos if back_color_erase is set. + +20170909 + + improve wide-character implementation of myADDNSTR() in frm_driver.c, + which was inconsistent with the normal implementation. + + save/restore cursor position in Undo_Justification(), matching + behavior of Buffer_To_Window() (report by Leon Winter). + + modify test/knight to provide the "slow" solution for small screens + using "R", noting that Warnsdorf's method is easily done with "a". + + modify several test-programs which call use_default_colors() to + consistently do this only if "-d" option is given. + + additional changes to test with non-standard variants of curses: + + modify a loop limit in firework.c to work around absence of limit + checks in some libraries. + + fill the last row of a window with "?" in firstlast if waddch does + not return ERR on the lower-right corner. + + add checks in test/configure for some functions not in 4.3BSD curses. + + fix a regression in test/configure (cf: 20170826). + +20170902 + + amend change for endwin-state for better consistency with the older + logic (report/patch by Jeb Rosen, cf: 20170722). + + modify check in fmt_entry() to handle a cancelled reset string + (Debian #873746). Make similar fixes in other parts of dump_entry.c + and tput.c + +20170827 + + fix a bug in repeat_char logic (cf: 20170729, report by Chris Clayton). + +20170826 + + fixes for "iterm2" (report by Leonardo Brondani Schenkel) -TD + + corrected a warning from tic about keys which are the same, to skip + over missing/cancelled values. + + add check in tic for unnecessary use of "2" to denote a shifted + special key. + + improve checks in trim_sgr0, comp_parse.c and parse_entry.c, for + cancelled string capabilities. + + add check in _nc_parse_entry() for invalid entry name, setting the + name to "invalid" to avoid problems storing entries. + + add/improve checks in tic's parser to address invalid input + + add a check in comp_scan.c to handle the special case where a + nontext file ending with a NUL rather than newline is given to tic + as input (Redhat #1484274). + + allow for cancelled capabilities in _nc_save_str (Redhat #1484276). + + add validity checks for "use=" target in _nc_parse_entry (Redhat + #1484284). + + check for invalid strings in postprocess_termcap (Redhat #1484285) + + reset secondary pointers on EOF in next_char() (Redhat #1484287). + + guard _nc_safe_strcpy() and _nc_safe_strcat() against calls using + cancelled strings (Redhat #1484291). + + correct typo in curs_memleaks.3x (Sven Joachim). + + improve test/configure checks for some curses variants not based on + X/Open Curses. + + add options for test/configure to disable checks for form, menu and + panel libraries. + +20170819 + + update "iterm" entry -TD + + add "iterm2" entry (report by Leonardo Brondani Schenkel) -TD + + regenerate llib-* files. + + regenerate HTML manpages. + + improve picsmap test-program: + + reduce memory used for tsearch + + add report in log file showing cumulative color coverage. + + add -x option to clear/tput to make the E3 extension optional + (cf: 20130622). + + add options -T and -V to clear command for compatibility with tput. + + add usage message to clear command (Debian #371855). + + improve usage messages for tset and tput. + + minor fixes to "RGB" extension and reset_color_pairs(). + +20170812 + + improve description of -R option in infocmp manual page (report by + Stephane Chazelas). + + add reset_color_pairs() function. + + add user_caps.5 manual page to document the terminfo extensions used + by ncurses. + + improve build scripts, using SIGQUIT vs SIGTRAP; add other configure + script fixes from work on xterm, lynx and tack. + + modify install-rule for ncurses-examples to put the data files in + /usr/share/ncurses-examples + + improve tracemunch, by changing address-parameters of add_wch(), + color_content() and pair_content() to dummy parameters. + + minor optimization to _nc_change_pair, to return quickly when the + current screen is marked for clearing. + + in-progress changes to improve performance of test/picsmap.c for + loading image files. + + modify allocation for SCREEN's color-pair table to start small, grow + on demand up to the existing limit. + + add "RGB" extension capability for direct-color support, use this to + improve color_content(). + + improve picsmap test-program: + + if no palette file is needed, attempt to load one based on $TERM, + checking first in the current directory, then by adding ".dat" + suffix, and finally in the data-directory, e.g., + /usr/share/ncurses-examples + + add "-l" option for logging + + add "-d" option for debugging + + add "-s" option for stepping automatically through list of images, + with time delay. + + use tsearch to improve time for loading color table for images. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20170729 + + update interix entry using tack and SFU on Windows 7 Ultimate -TD + + use ^? for kdch1 in interix (reported by Jonathan de Boyne Pollard) + + add "rep" to xterm-new, available since 1997/01/26 -TD + + move SGR 24 and 27 from vte-2014 to vte-2012 (request by Alain + Williams) -TD + + add a check in newline_forces_scroll() in case a program moves the + cursor outside scrolling margins (report by Robert King). + + improve _nc_tparm_analyze, using that to extend the checks made by + tic for reporting inconsistencies between the expected number of + parameters for a capability and the actual. + + amend handling of repeat_char capability in EmitRange (adapted from + report/patch by Dick Wesseling): + + translate the character to the alternate character set when the + alternate character set is enabled. + + do not use repeat_char for characters past 255. + + document "_nc_free_tinfo" in manual page, because it could be used in + tack for memory-leak checking. + + add "--without-tack" configure option to refine "--with-progs" + configure option. Normally tack is no longer built in-tree, but + a few packagers combine it during the build. If term_entry.h is + installed, there is no advantage to in-tree builds. + + adjust configure-script to define HAVE_CURSES_DATA_BOOLNAMES symbol + needed for tack 1.08 when built in-tree. Rather than relying upon + internal "_nc_" functions, tack now uses the boolean, number and + string capability name-arrays provided by ncurses and SVr4 Unix + curses. It still uses term_entry.h for the definitions of the + extended capability arrays. + + add an overlooked null-pointer check in mvcur changes from 20170722 + +20170722 + + improve test-packages for ncurses-examples and AdaCurses for lintian + + modify logic for endwin-state to be able to detect the case where + the screen was never initialized, using that to trigger a flush of + ncurses' buffer for mvcur, e.g., in test/dots_mvcur.c for the + term-driver configuration. + + add dependency upon ncurses_cfg.h to a few other internal header + files to allow each to be compiled separately. + + add dependency upon ncurses_cfg.h to tic's header-files; any program + using tic-library will have to supply this file. Legacy tack + versions supply this file; ongoing tack development has dropped the + dependency upon tic-library and new releases will not be affected. + +20170715 + + modify command-line parameters for "convert" used in picsmap to work + with ImageMagick 6.8 and newer. + + fix build-problem with tack and ABI-5 (Debian #868328). + + repair termcap-format from tic/infocmp broken in 20170701 fixes + (Debian #868266). + + reformat terminfo.src with 20170513 updates. + + improve test-packages to address lintian warnings. + +20170708 + + add a note to tic manual page about -W versus -f options. + + correct a limit-check in fixes from 20170701 (report by Sven Joachim). + +20170701 + + modify update_getenv() in db_iterator.c to ensure that environment + variables which are not initially set will be checked later if an + application happens to set them (patch by Guillaume Maudoux). + + remove initialization-check for calling napms() in the term-driver + configuration; none is needed. + + add help-screen to test/test_getstr.c and test/test_get_wstr.c + + improve compatibility between different configurations of new_prescr, + fixing a case with threaded code and term-driver where c++/demo did + not work (cf: 20160213). + + the fixes for Redhat #1464685 obscured a problem subsequently + reported in Redhat #1464687; the given test-case was no longer + reproducible. Testing without the fixes for the earlier reports + showed a problem with buffer overflow in dump_entry.c, which is + addressed by reducing the use of a fixed-size buffer. + + add/improve checks in tic's parser to address invalid input + (Redhat #1464684, #1464685, #1464686, #1464691). + + alloc_entry.c, add a check for a null-pointer. + + parse_entry.c, add several checks for valid pointers as well as + one check to ensure that a single character on a line is not + treated as the 2-character termcap short-name. + + fix a memory leak in delscreen() (report by Bai Junq). + + improve tracemunch, showing thread identifiers as names. + + fix a use-after-free in NCursesMenu::~NCursesMenu() + + further amend incorrect calls for memory-leaks from 20170617 changes + (report by Allen Hewes). + +20170624 + + modify c++/etip.h.in to accommodate deprecation of throw() and + throws() in c++17 (prompted by patch by Romain Geissler). + + remove some incorrect calls for memory-leaks from 20170617 changes + (report by Allen Hewes). + + add test-programs for termattrs and term_attrs. + + modify _nc_outc_wrapper to use the standard output if the screen was + not initialized, rather than returning an error. + + improve checks for low-level terminfo functions when the terminal + has not been initialized (Redhat #1345963). + + modify make_hash to allow building with address-sanitizer, + assuming that --disable-leaks is configured. + + amend changes for number_format() in 20170506 to avoid undefined + behavior when shifting (patch by Emanuele Giaquinta). + +20170617 + + fill in some places where TERMTYPE2 vs TERMTYPE was not used + (report by Allen Hewes). + + use ExitTerminfo() internally in error-exits for ncurses' setupterm + to help with leak checking. + + use ExitProgram() in error-exit from initscr() to help with leak + checking. + + review test-programs, adding checks for cases where the terminal + cannot be initialized. + +20170610 + + add option "-xp" to picsmap.c, to use init_extended_pair(). + + make simple performance fixes for picsmap.c + + improve aspect ratio of images read from "convert" in picsmap.c + +20170603 + + add option to picsmap to use color-palette files, e.g., for mapping + to xterm-256color. + + move the data in SCREEN used for the alloc_pair() function to the + end, to restore compatibility between ncurses/ncursesw libtinfo + (report/patch by Miroslav Lichvar). + + add build-time utility "report_offsets" to help show when the various + configurations of tinfo library are compatible or not. + +20170527 + + improved test/picsmap.c: + + lookup named colors for xpm files in rgb.txt + + accept blanks in color-keys for xpm files. + + if neither xbm/xpm work, try "convert", which may be available. + +20170520 + + modify test/picsmap.c to read xpm files. + + modify package/debian/* to create documentation packages, so the + related files can be checked with lintian. + + fix some typos in manpages (report/patch by Sven Joachim). + +20170513 + + add test/picsmap.c to fill in some testing issues not met by dots. + The initial version reads X bitmap (".xbm") files. + + repair logic which forces a repaint where a color-pair's content is + changed (cf: 20170311). + + improve tracemunch, showing screenXX pointers as names. + +20170506 + + modify tic/infocmp display of numeric values to use hexadecimal when + they are "close" to a power of two, making the result more readable. + + improve discussion of portability in curs_mouse.3x + + change line-length for generated html/manpages to 78 columns from 65. + + improve discussion of line-drawing characters in curs_add_wch.3x + (prompted by discussion with Lorinczy Zsigmond). + + cleanup formatting of hackguide.html and ncurses-intro.html + + add examples for WACS_D_PLUS and WACS_T_PLUS to test/ncurses.c + +20170429 + + corrected a case where $with_gpm was set to "maybe" after CF_WITH_GPM, + overlooked in 20160528 fixes (report by Alexandre Bury). + + improve a couple of test-program's help-messages. + + corrected loop in rain.c from 20170415 changes. + + modify winnstr and winchnstr to return error if the output pointer is + null, as well as adding a null pointer check of the window pointer + for better compatibility with other implementations. + + improve discussion of NetBSD curses in scr_dump.5 + + modify LIMIT_TYPED macro in new_pair.h to avoid changing sign of the + value to be limited (reports by Darby Payne, Rob Boudreau). + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20170422 + + build-fix for termcap-configuration (report by Chi-Hsuan Yen). + + improve terminfo manual page discussion of control- and graphics- + characters. + + remove tic warning about "^?" in string capabilities, which was + marked as an extension (cf: 20000610, 20110820); however all Unix + implementations support this and X/Open Curses does not address it. + On the other hand, termcap never did support this feature. + + correct missing comma-separator between string capabilities in + icl6402 and m2-nam -TD + + restore rmir/smir in ansi+idc to better match original ansiterm+idc, + add alias ansiterm (report by Robert King). + + amend an old check for ambiguous use of "ma" in terminfo versus + a termcap use, if the capability is cancelled to treat it as number. + + correct a case in _nc_captoinfo() which read "%%" and emitted "%". + + modify sscanf calls in _nc_infotocap() for patterns "%{number}%+%c" + and "%'char'%+%c" to check that the final character is really 'c', + avoiding a case in icl6404 which cannot be converted to termcap. + + in _nc_infotocap(), add a check to ensure that terminfo "^?" is not + written to termcap, because the BSDs did not implement that. + + in _nc_tic_expand() and _nc_infotocap(), improve string-length check + when deciding whether to use "^X" or "\xxx" format for control + characters, to make the output of tic/infocmp more predictable. + + limit termcap "%d" width to 2 digits on input, and use "%2" in + preference to "%02" on output. + + correct terminfo/termcap conversion of "%02" and "%03" into "%2" and + "%3"; the result repeated the last character. + + add man/scr_dump.5 to document screen-dump format. + +20170415 + + modify several test programs to use new popup_msgs, adapted from + help-screen used in test/edit_field.c + + drop two symbols obsoleted in 2004: _nc_check_termtype, and + _nc_resolve_uses + + fix some old copyright dates (cf: 20031025). + + build-fixes for test/savescreen.c to work with AIX and HPUX. + + minor fix to configure script, adding a backslash/continuation. + + extend TERMINAL structure for ABI 6 to store numbers internally as + integers rather than short, by adding new data for this purpose. + + more fixes for minor memory-leaks in test-programs. + +20170408 + + change logic in wins_nwstr() to avoid addressing data past the output + of mbstowcs(). + + correct a call to setcchar() in Data_Entry_w() from 20131207 changes. + + fix minor memory-leaks in test-programs. + + further improve ifdef in term_entry.h for internal definitions not + used by tack. + +20170401 + + minor fixes for vt100+4bsd, e.g., delay in sgr for consistency -TD + + add smso for env230, to match sgr -TD + + remove p7/protect from sgr in fbterm -TD + + drop setf/setb from fbterm; setaf/setab are enough -TD + + make xterm-pcolor sgr consistent with other capabilities -TD + + add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic + (discussion with Nicholas Marriott) + + add test-programs sp_tinfo and extended_color + + modify no-leaks code for lib_cur_term.c to account for the tgetent() + cache. + + modify setupterm() to save original tty-modes so that erasechar() + works as expected. Also modify _nc_setupscreen() to avoid redundant + calls to get original tty-modes. + + modify set_curterm() to update ttytype[] data used by longname(). + + modify wattr_set() and wattr_get() to return ERR if win-parameter is + null, as documented. + + improve cast used for null-pointer checks in header macros, to + reduce compiler warnings. + + modify several functions, using the reserved "opts" parameter to pass + color- and pair-values larger than 16-bits: + + getcchar(), setcchar(), slk_attr_set(), vid_puts(), wattr_get(), + wattr_set(), wchgat(), wcolor_set(). + + Other functions call these with the corresponding altered behavior, + including chgat(), mvchgat(), mvwchgat(), slk_color_on(), + slk_color_off(), vid_attr(). + + add new functions for manipulating color- and pair-values larger + than 16-bits. These are extended_color_content(), + extended_pair_content(), extended_slk_color(), init_extended_color(), + init_extended_pair(), and the corresponding sp-funcs. + +20170325 + + fix a memory leak in the window-list when creating multiple screens + (reports by Andres Martinelli, Debian #783486). + + reviewed calls from link_test.c, added a few more null-pointer + checks. + + add a null-pointer check in ungetmouse, in case mousemask was not + called (report by "Kau"). + + updated curs_sp_funcs.3x for new functions. + +20170318 + + change TERMINAL structure in term.h to make it opaque. Some + applications misuse its members, e.g., directly modifying it + rather than using def_prog_mode(). + + modify utility headers such as tic.h to make it clearer which are + externals that are used by tack. + + improve curs_slk.3x in particular its discussion of portability. + + fix cut/paste in legacy_encoding.3x + + add prototype for find_pair() to new_pair.3x (report by Branden + Robinson). + + fix a couple of broken links in generated man-html documentation. + + regenerate man-html documentation. + +20170311 + + modify vt100 rs2 string to reset vt52 mode and scrolling regions + (report/analysis by Robert King) -TD + + add vt100+4bsd building block, use that for older terminals rather + than "vt100" which is now mostly used as a building block for + terminal emulators -TD + + correct a few spelling errors in terminfo.src comments -TD + + add fbterm -TD + + fix a typo in ncurses.c test_attr legend (patch by Petr Vanek). + + changed internal colorpair_t to a struct, eliminating an internal + 8-bit limit on colors + + add ncurses/new_pair.h + + add ncurses/base/new_pair.c with alloc_pair(), find_pair() and + free_pair() functions + + add test/demo_new_pair.c + +20170304 + + improve terminfo manual description of terminfo syntax. + + clarify the use of wint_t vs wchar_t in curs_get_wstr.3x + + improve description of endwin() in manual. + + modify setcchar() and getcchar() to treat negative color-pair as an + error. + + fix a typo in include/hashed_db.h (Andre Sa). + +20170225 + + fixes for CF_CC_ENV_FLAGS (report by Ross Burton). + +20170218 + + fix several formatting issues with manual pages. + + correct read of terminfo entry in which all strings are absent or + explicitly cancelled. Before this fix, the result was that all were + treated as only absent. + + modify infocmp to suppress mixture of absent/cancelled capabilities + that would only show as "NULL, NULL", unless the -q option is used, + e.g., to show "-, @" or "@, -". + +20170212 + + build-fixes for PGI compilers (report by Adam J. Stewart) + + accept whitespace in sed expression for generating expanded.c + + modify configure check that g++ compiler warnings are not used. + + add configure check for -fPIC option needed for shared libraries. + + let configure --disable-ext-funcs override the default for the + --enable-sp-funcs option. + + mark some structs in form/menu/panel libraries as potentially opaque + without modifying API/ABI. + + add configure option --enable-opaque-curses for ncurses library and + similar options for the other libraries. + +20170204 + + trim newlines, tabs and escaped newlines from terminfo "paths" passed + to db-iterator. + + ignore zero-length files in db-iterator; these are useful for + instance to suppress "$HOME/.terminfo" when not wanted. + + amended "b64:" encoder to work with the terminfo reader. + + modify terminfo reader to accept "b64:" format using RFC-3548 in + as well as RFC-4648 url/filename-safe format. + + modify terminfo reader to accept "hex:" format as generated by + "infocmp -0qQ1" (cf: 20150905). + + adjust authors comment to reflect drop below 1% for SV. + +20170128 + + minor comment-fixes to help automate links to bug-urls -TD + + add dvtm, dvtm-256color -TD + + add settings corresponding to xterm-keys option to tmux entry to + reflect upcoming change to make that option "on" by default + (patch by Nicholas Marriott). + + uncancel Ms in tmux entry (Harry Gindi, Nicholas Marriott). + + add dumb-emacs-ansi -TD + +20170121 + + improve discussion of early history of tput program. + + incorporate A_COLOR mask into COLOR_PAIR(), in case user application + provides an out-of-range pair number (report by Elijah Stone). + + clarify description in tput manual page regarding support for + termcap names (prompted by FreeBSD #214709). + + remove a restriction in tput's support for termcap names which + omitted capabilities normally not shown in termcap translations + (cf: 990123). + + modify configure script for clang as used on FreeBSD, to work around + clang's differences in exit codes vs gcc. + +20170114 + + improve discussion of early history of tset/reset programs. + + clarify in manual pages that the optional verbose option level is + available only when ncurses is configured for tracing. + + amend change from 20161231 to avoid writing traces to the standard + error after initializing the trace feature using the environment + variable. + +20170107 + + amend changes for tput to reset tty modes to "sane" if the program + is run as "reset", like tset. Likewise, ensure that tset sends + either reset- or init-strings. + + improve manual page descriptions of tput init/reset and tset/reset, + to make it easier to see how they are similar and different. + + move a static result from key_name() to _nc_globals + + modify _nc_get_screensize to allow for use_env() and use_tioctl() + state to be per-screen when sp-funcs are configured, better matching + the behavior when using the term-driver configuration. + + improve cross-references in manual pages for often used functions + + move SCREEN field for use_tioctl() data before the ncursesw fields, + and limit that to the sp-funcs configuration to improve termlib + compatibility (cf: 20120714). + + correct order of initialization for traces in use_env() and + use_tioctl() versus first trace calls. + +20161231 + + fix errata for ncurses-howto (report by Damien Ruscoe). + + fix a few places in configure/build scripts where DESTDIR and rpath + were combined (report by Thomas Klausner). + + merge current st description (report by Harry Gindi) -TD + + modify flash capability for linux and wyse entries to put the delay + between the reverse/normal escapes rather than after -TD + + modify program tabs to pass the actual tty file descriptor to + setupterm rather than the standard output, making padding work + consistently. + + explain in clear's manual page that it writes to stdout. + + add special case for verbose debugging traces of command-line + utilities which write to stderr (cf: 20161126). + + remove a trace with literal escapes from skip_DECSCNM(), added in + 20161203. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20161224 + + correct parameters for copywin call in _nc_Synchronize_Attributes() + (patch by Leon Winter). + + improve color-handling section in terminfo manual page (prompted by + patch by Mihail Konev). + + modify programs clear, tput and tset to pass the actual tty file + descriptor to setupterm rather than the standard output, making + padding work. + +20161217 + + add tput-colorcube demo script. + + add -r and -s options to tput-initc demo, to match usage in xterm. + + flush the standard output in _nc_flush for the case where SP is zero, + e.g., when called via putp. This fixes a scenario where "tput flash" + did not work after changes in 20130112. + +20161210 + + add configure script option --disable-wattr-macros for use in cases + where one wants to use the same headers for ncurses5/ncurses6 + development, by suppressing the wattr* macros which differ due to + the introduction of extended colors (prompted by comments in + Debian #230990, Redhat #1270534). + + add test/tput-initc to demonstrate tput used to initialize palette + from a data file. + + modify test/xterm*.dat to use the newer color4/color12 values. + +20161203 + + improve discussion of field validation in form_driver.3x manual page. + + update curs_trace.3x manual page. + +20161126 + + modify linux-16color to not mask dim, standout or reverse with the + ncv capability -TD + + add 0.1sec mandatory delay to flash capabilities using the VT100 + reverse-video control -TD + + omit selection of ISO-8859-1 for G0 in enacs capability from linux2.6 + entry, to avoid conflict with the user-defined mapping. The reset + feature will use ISO-8859-1 in any case (Mikulas Patocka). + + improve check in tic for delays by also warning about beep/flash + when a delay is not embedded, or if those use the VT100 reverse + video escape without using a delay. + + minor fix for syntax-check of delays from 20161119 changes. + + modify trace() to avoid overwriting existing file (report by Maor + Shwartz). + +20161119 + + add check in tic for some syntax errors of delays, as well as use of + proportional delays for non-line capabilities. + + document history of the clear program and the E3 extension, prompted + by various discussions including + http://unix.stackexchange.com/questions/87469/clearing-the-old-scrollback-buffer + +20161112 + + improve -W option in tic/infocmp: + + correct order of size-adjustments in wrapped lines + + if -f option splits line, do not further split it with -W + + begin a new line when adding "use=" after a wrapped line + +20161105 + + fix typo in man/terminfo.tail (Alain Williams). + + correct program-name in adacurses6-config.1 manual page. + +20161029 + + add new function "unfocus_current_field" (Leon Winter) + +20161022 + + modify tset -w (and tput reset) to update the program's copy of the + screensize if it was already set in the system, to improve tabstop + setting which relies upon knowing the actual screensize. + + add functionality of tset -w to tput, like the "-c" feature this is + not optional in tput. + + add "clear" as a possible link/alias to tput. + + improve tput's check for being called as "init" or "reset" to allow + for transformed names. + + split-out the "clear" function from progs/clear.c, share with + tput to get the same behavior, e.g., the E3 extension. + +20161015 + + amend internal use of tputs to consistently use the number of lines + affected, e.g., for insert/delete character operations. While + merging terminfo source early in 1995, several descriptions used the + "*" proportional delay for these operations, prompting a change in + doupdate. + + regenerate llib-* files. + + regenerate HTML manpages. + + fix several formatting issues with manual pages. + +20161008 + + adjust size in infocmp/tic to work with strlcpy. + + fix configure script to record when strlcat is found on OpenBSD. + + build-fix for "recent" OpenBSD vs baudrate. + +20161001 + + add -W option to tic/infocmp to force long strings to wrap. This is + in addition to the -w option which attempts to fit capabilities into + a given line-length. + + add linux-m1 minitel entries (patch by Alexandre Montaron). + + correct rs2 string for vt100-nam -TD + +20160924 + + modify _nc_tic_expand to escape comma if it immediately follows a + percent sign, to work with minitel change. + + updated minitel and viewdata descriptions (Alexandre Montaron). + +20160917 + + build-fix for gnat6, which unhelpfully attempts to compile C files. + + fix typo in 20160910 changes (Debian #837892, patch by Sven Joachim). + +20160910 + + trim dead code ifdef'd with HIDE_EINTR since 970830 (discussion with + Leon Winter). + + trim some obsolete/incorrect wording about EINTR from wgetch manual + page (patch by Leon Winter). + + really correct 20100515 change (patch by Rich Coe). + + add "--enable-string-hacks" option to test/configure + + completed string-hacks for "sprintf", etc., including test-programs. + + make "--enable-string-hacks" work with Debian by checking for the + "bsd" library and its associated "" header. + +20160903 + + correct 20100515 change for weak signals versus sigprocmask (report + by Rich Coe). + + modify misc/Makefile.in to work around OpenBSD "make" which unlike + all other versions of "make" does not recognize continuation lines + of comments. + + amend the last change to CF_C_ENV_FLAGS to move only the + preprocessor, optimization and warning flags to CPPFLAGS and CFLAGS, + leaving the residue in CC. That happens to work for gcc's various + "model" options, but may require tuning for other compilers (report + by Sven Joachim). + +20160827 + + add "v" menu entry to test/ncurses.c to show baudrate and other + values. + + add "newer" baudrate symbols from Linux and FreeBSD to progs/tset.c, + lib_baudrate.c + + modify CF_XOPEN_SOURCE macro: + + add "uclinux" to case for "linux" (patch by Yann E. Morin) + + modify _GNU_SOURCE for cygwin headers, tested with cygwin 2.3, 2.5 + (patch by Corinna Vinschen, from changes to tin). + + improve CF_CC_ENV_FLAGS macro to allow for compiler wrappers such + as "ccache" (report by Enrico Scholz). + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20160820 + + update tput manual page to reflect changes to manipulate terminal + modes by sharing functions with tset. + + add the terminal-mode parts of "reset" (aka tset) to the "tput reset" + command, making the two almost the same except for window-size. + + adapt logic used in dialog "--keep-tite" option for test/filter.c as + "-a" option. When set, test/filter attempts to suppress the + alternate screen. + + correct a typo in interix entry -TD + +20160813 + + add a dependency upon generated-sources in Ada95/src/Makefile.in to + handle a case of "configure && make install". + + trim trailing blanks from include/Caps*, to work around a problem + in sed (Debian #818067). + +20160806 + + improve CF_GNU_SOURCE configure macro to optionally define + _DEFAULT_SOURCE work around a nuisance in recent glibc releases. + + move the terminfo-specific parts of tput's "reset" function into + the shared reset_cmd.c, making the two forms of reset use the same + strings. + + split-out the terminal initialization functions from tset as + progs/reset_cmd.c, as part of changes to merge the reset-feature + with tput. + +20160730 + + change tset's initialization to allow it to get settings from the + standard input as well as /dev/tty, to be more effective when + output or error are redirected. + + improve discussion of history and portability for tset/reset/tput + manual pages. + +20160723 + + improve error message from tset/reset when both stderr/stdout are + redirected to a file or pipe. + + improve organization of curs_attr.3x, curs_color.3x + +20160709 + + work around Debian's antique/unmaintained version of mawk when + building link_test. + + improve test/list_keys.c, showing ncurses's convention of modifiers + for special keys, based on xterm. + +20160702 + + improve test/list_keys.c, using $TERM if no parameters are given. + +20160625 + + build-fixes for ncurses "test_progs" rule. + + amend change to CF_CC_ENV_FLAGS in 20160521 to make multilib build + work (report by Sven Joachim). + +20160618 + + build-fixes for ncurses-examples with NetBSD curses. + + improve test/list_keys.c, fixing column-widths and sorting the list + to make it more readable. + +20160611 + + revise fix for Debian #805618 (report by Vlado Potisk, cf: 20151128). + + modify test/ncurses.c a/A screens to make exiting on an escape + character depend on the start of keypad and timeout modes, to allow + better testing of function-keys. + + modify rs1 for xterm-16color, xterm-88color and xterm-256color to + reset palette using "oc" string as in linux -TD + + use ANSI reply for u8 in xterm-new, to reflect vt220-style responses + that could be returned -TD + + added a few capabilities fixed in recent vte -TD + +20160604 + + correct logic for -f option in test/demo_terminfo.c + + add test/list_keys.c + +20160528 + + further workaround for PIE/PIC breakage which causes gpm to not link. + + fix most cppcheck warnings, mostly style, in ncurses library. + +20160521 + + improved manual page description of tset/reset versus window-size. + + fixes to work with a slightly broken compiler configuration which + cannot compile "Hello World!" without adding compiler options + (report by Ola x Nilsson): + + pass appropriate compiler options to the CF_PROG_CC_C_O macro. + + when separating compiler and options in CF_CC_ENV_FLAGS, ensure + that all options are split-off into CFLAGS or CPPFLAGS + + restore some -I options removed in 20140726 because they appeared + to be redundant. In fact, they are needed for a compiler that + cannot combine -c and -o options. + +20160514 + + regenerate HTML manpages. + + improve manual pages for wgetch and wget_wch to point out that they + might return values without names in curses.h (Debian #822426). + + make linux3.0 entry the default linux entry (Debian #823658) -TD + + modify linux2.6 entry to improve line-drawing so that the linux3.0 + entry can be used in non-UTF-8 mode -TD + + document return value of use_extended_names (report by Mike Gran). + +20160507 + + amend change to _nc_do_color to restore the early return for the + special case used in _nc_screen_wrap (report by Dick Streefland, + cf: 20151017). + + modify test/ncurses.c: + + check return-value of putwin + + correct ifdef which made the 'g' test's legend not reflect changes + to keypad- and scroll-modes. + + correct return-value of extended putwin (report by Mike Gran). + +20160423 + + modify test/ncurses.c 'd' edit-color menu to optionally read xterm + color palette directly from terminal, as well as handling KEY_RESIZE + and screen-repainting with control/L and control/R. + + add 'oc' capability to xterm+256color, allowing palette reset for + xterm -TD + +20160416 + + add workaround in configure script for inept transition to PIE vs + PIC builds documented in + https://fedoraproject.org/wiki/Changes/Harden_All_Packages + + add "reset" to list of programs whose names might change in manpages + due to program-transformation configure options. + + drop long-obsolete "-n" option from tset. + +20160409 + + modify test/blue.c to use Unicode values for card-glyphs when + available, as well as improving the check for CP437 and CP850. + +20160402 + + regenerate HTML manpages. + + improve manual pages for utilities with respect to POSIX versus + X/Open Curses. + +20160326 + + regenerate HTML manpages. + + improve test/demo_menus.c, allowing mouse-click on the menu-headers + to switch the active menu. This requires a new extension option + O_MOUSE_MENU to tell the menu driver to put mouse events which do not + apply to the active menu back into the queue so that the application + can handle the event. + +20160319 + + improve description of tgoto parameters (report by Steffen Nurpmeso). + + amend workaround for Solaris line-drawing to restore a special case + that maps Unicode line-drawing characters into the acsc string for + non-Unicode locales (Debian #816888). + +20160312 + + modified test/filter.c to illustrate an alternative to getnstr, that + polls for input while updating a clock on the right margin as well + as responding to window size-changes. + +20160305 + + omit a redefinition of "inline" when traces are enabled, since this + does not work with gcc 5.3.x MinGW cross-compiling (cf: 20150912). + +20160220 + + modify test/configure script to check for pthread dependency of + ncursest or ncursestw library when building ncurses examples, e.g., + in case weak symbols are used. + + modify configure macro for shared-library rules to use -Wl,-rpath + rather than -rpath to work around a bug in scons (FreeBSD #178732, + cf: 20061021). + + double-width multibyte characters were not counted properly in + winsnstr and wins_nwstr (report/example by Eric Pruitt). + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20160213 + + amend fix for _nc_ripoffline from 20091031 to make test/ditto.c work + in threaded configuration. + + move _nc_tracebits, _tracedump and _tracemouse to curses.priv.h, + since they are not part of the suggested ABI6. + +20160206 + + define WIN32_LEAN_AND_MEAN for MinGW port, making builds faster. + + modify test/ditto.c to allow $XTERM_PROG environment variable to + override "xterm" as the name of the program to run in the threaded + configuration. + +20160130 + + improve formatting of man/curs_refresh.3x and man/tset.1 manpages + + regenerate HTML manpages using newer man2html to eliminate some + unwanted blank lines. + +20160123 + + ifdef'd header-file definition of mouse_trafo() with NCURSES_NOMACROS + (report by Corey Minyard). + + fix some strict compiler-warnings in traces. + +20160116 + + tidy up comments about hardcoded 256color palette (report by + Leonardo Brondani Schenkel) -TD + + add putty-noapp entry, and amend putty entry to use application mode + for better consistency with xterm (report by Leonardo Brondani + Schenkel) -TD + + modify _nc_viscbuf2() and _tracecchar_t2() to trace wide-characters + as a whole rather than their multibyte equivalents. + + minor fix in wadd_wchnstr() to ensure that each cell has nonzero + width. + + move PUTC_INIT calls next to wcrtomb calls, to avoid carry-over of + error status when processing Unicode values which are not mapped. + +20160102 + + modify ncurses c/C color test-screens to take advantage of wide + screens, reducing the number of lines used for 88- and 256-colors. + + minor refinement to check versus ncv to ignore two parameters of + SGR 38 and 48 when those come from color-capabilities. + +20151226 + + add check in tic for use of bold, etc., video attributes in the + color capabilities, accounting whether the feature is listed in ncv. + + add check in tic for conflict between ritm, rmso, rmul versus sgr0. + +20151219 + + add a paragraph to curs_getch.3x discussing key naming (discussion + with James Crippen). + + amend workaround for Solaris vs line-drawing to take the configure + check into account. + + add a configure check for wcwidth() versus the ncurses line-drawing + characters, to use in special-casing systems such as Solaris. + +20151212 + + improve CF_XOPEN_CURSES macro used in test/configure, to define as + needed NCURSES_WIDECHAR for platforms where _XOPEN_SOURCE_EXTENDED + does not work. Also modified the test program to ensure that if + building with ncurses, that the cchar_t type is checked, since that + normally is since 20111030 ifdef'd depending on this test. + + improve 20121222 workaround for broken acs, letting Solaris "work" + in spite of its misconfigured wcwidth which marks all of the line + drawing characters as double-width. + +20151205 + + update form_cursor.3x, form_post.3x, menu_attributes.3x to list + function names in NAME section (patch by Jason McIntyre). + + minor fixes to manpage NAME/SYNOPSIS sections to consistently use + rule that either all functions which are prototyped in SYNOPSIS are + listed in the NAME section, or the manual-page name is the sole item + listed in the NAME section. The latter is used to reduce clutter, + e.g., for the top-level library manual pages as well as for certain + feature-pages such as SP-funcs and threading (prompted by patches by + Jason McIntyre). + +20151128 + + add option to preserve leading whitespace in form fields (patch by + Leon Winter). + + add missing assignment in lib_getch.c to make notimeout() work + (Debian #805618). + + add 't' toggle for notimeout() function in test/ncurses.c a/A screens + + add viewdata terminal description (Alexandre Montaron). + + fix a case in tic/infocmp for formatting capabilities where a + backslash at the end of a string was mishandled. + + fix some typos in curs_inopts.3x (Benno Schulenberg). + +20151121 + + fix some inconsistencies in the pccon* entries -TD + + add bold to pccon+sgr+acs and pccon-base (Tati Chevron). + + add keys f12-f124 to pccon+keys (Tati Chevron). + + add test/test_sgr.c program to exercise all combinations of sgr. + +20151107 + + modify tset's assignment to TERM in its output to reflect the name by + which the terminal description is found, rather than the primary + name. That was an unnecessary part from the initial conversion of + tset from termcap to terminfo. The termcap program in 4.3BSD did + this to avoid using the short 2-character name (report by Rich + Burridge). + + minor fix to configure script to ensure that rules for resulting.map + are only generated when needed (cf: 20151101). + + modify configure script to handle the case where tic-library is + renamed, but the --with-debug option is used by itself without + normal or shared libraries (prompted by comment in Debian #803482). + +20151101 + + amend change for pkg-config which allows build of pc-files when no + valid pkg-config library directory was configured to suppress the + actual install if it is not overridden to a valid directory at + install time (cf: 20150822). + + modify editing script which generates resulting.map to work with the + clang configuration on recent FreeBSD, which gives an error on an + empty "local" section. + + fix a spurious "(Part)" message in test/ncurses.c b/B tests due + to incorrect attribute-masking. + +20151024 + + modify MKexpanded.sh to update the expansion of a temporary filename + to "expanded.c", for use in trace statements. + + modify layout of b/B tests in test/ncurses.c to allow for additional + annotation on the right margin; some terminals with partial support + did not display well. + + fix typo in curs_attr.3x (patch by Sven Joachim). + + fix typo in INSTALL (patch by Tomas Cech). + + improve configure check for setting WILDCARD_SYMS variable; on ppc64 + the variable is in the Data section rather than Text (patch by Michel + Normand, Novell #946048). + + using configure option "--without-fallbacks" incorrectly caused + FALLBACK_LIST to be set to "no" (patch by Tomas Cech). + + updated minitel entries to fix kel problem with emacs, and add + minitel1b-nb (Alexandre Montaron). + + reviewed/updated nsterm entry Terminal.app in OSX -TD + + replace some dead URLs in comments with equivalents from the + Internet Archive -TD + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20151017 + + modify ncurses/Makefile.in to sort keys.list in POSIX locale + (Debian #801864, patch by Esa Peuha). + + remove an early-return from _nc_do_color, which can interfere with + data needed by bkgd when ncurses is configured with extended colors + (patch by Denis Tikhomirov). + > fixes for OS/2 (patches by KO Myung-Hun) + + use button instead of kbuf[0] in EMX-specific part of lib_mouse.c + + support building with libtool on OS/2 + + use stdc++ on OS/2 kLIBC + + clear cf_XOPEN_SOURCE on OS/2 + +20151010 + + add configure check for openpty to test/configure script, for ditto. + + minor fixes to test/view.c in investigating Debian #790847. + + update autoconf patch to 2.52.20150926, incorporates a fix for Cdk. + + add workaround for breakage of POSIX makefiles by recent binutils + change. + + improve check for working poll() by using posix_openpt() as a + fallback in case there is no valid terminal on the standard input + (prompted by discussion on bug-ncurses mailing list, Debian #676461). + +20150926 + + change makefile rule for removing resulting.map to distclean rather + than clean. + + add /lib/terminfo to terminfo-dirs in ".deb" test-package. + + add note on portability of resizeterm and wresize to manual pages. + +20150919 + + clarify in resizeterm.3x how KEY_RESIZE is pushed onto the input + stream. + + clarify in curs_getch.3x that the keypad mode affects ability to + read KEY_MOUSE codes, but does not affect KEY_RESIZE. + + add overlooked build-fix needed with Cygwin for separate Ada95 + configure script, cf: 20150606 (report by Nicolas Boulenguez) + +20150912 + + fixes for configure/build using clang on OSX (prompted by report by + William Gallafent). + + do not redefine "inline" in ncurses_cfg.h; this was originally to + solve a problem with gcc/g++, but is aggravated by clang's misuse + of symbols to pretend it is gcc. + + add braces to configure script to prevent unwanted add of + "-lstdc++" to the CXXLIBS symbol. + + improve/update test-program used for checking existence of stdc++ + library. + + if $CXXLIBS is set, the linkage test uses that in addition to $LIBS + +20150905 + + add note in curs_addch.3x about line-drawing when it depends upon + UTF-8. + + add tic -q option for consistency with infocmp, use it to suppress + all comments from the "tic -I" output. + + modify infocmp -q option to suppress the "Reconstructed from" + header. + + add infocmp/tic -Q option, which allows one to dump the compiled + form of the terminal entry, in hexadecimal or base64. + +20150822 + + sort options in usage message for infocmp, to make it simpler to + see unused letters. + + update usage message for tic, adding "-0" option. + + documented differences in ESCDELAY versus AIX's implementation. + + fix some compiler warnings from ports. + + modify --with-pkg-config-libdir option to make it possible to install + ".pc" files even if pkg-config is not found (adapted from patch by + Joshua Root). + +20150815 + + disallow "no" as a possible value for "--with-shlib-version" option, + overlooked in cleanup-changes for 20000708 (report by Tommy Alex). + + update release notes in INSTALL. + + regenerate llib-* files to help with review for release notes. + +20150810 + + workaround for Debian #65617, which was fixed in mawk's upstream + releases in 2009 (report by Sven Joachim). See + https://invisible-island.net/mawk/CHANGES.html#t20090727 + +20150808 6.0 release for upload to ftp.gnu.org + +20150808 + + build-fix for Ada95 on older platforms without stdint.h + + build-fix for Solaris, whose /bin/sh and /usr/bin/sed are non-POSIX. + + update release announcement, summarizing more than 800 changes across + more than 200 snapshots. + + minor fixes to manpages, etc., to simplify linking from announcement + page. + +20150725 + + updated llib-* files. + + build-fixes for ncurses library "test_progs" rule. + + use alternate workaround for gcc 5.x feature (adapted from patch by + Mikhail Peselnik). + + add status line to tmux via xterm+sl (patch by Nicholas Marriott). + + fixes for st 0.5 from testing with tack -TD + + review/improve several manual pages to break up wall-of-text: + curs_add_wch.3x, curs_attr.3x, curs_bkgd.3x, curs_bkgrnd.3x, + curs_getcchar.3x, curs_getch.3x, curs_kernel.3x, curs_mouse.3x, + curs_outopts.3x, curs_overlay.3x, curs_pad.3x, curs_termattrs.3x + curs_trace.3x, and curs_window.3x + +20150719 + + correct an old logic error for %A and %O in tparm (report by "zreed"). + + improve documentation for signal handlers by adding section in the + curs_initscr.3x page. + + modify logic in make_keys.c to not assume anything about the size + of strnames and strfnames variables, since those may be functions + in the thread- or broken-linker configurations (problem found by + Coverity). + + modify test/configure script to check for pthreads configuration, + e.g., ncursestw library. + +20150711 + + modify scripts to build/use test-packages for the pthreads + configuration of ncurses6. + + add references to ttytype and termcap symbols in demo_terminfo.c and + demo_termcap.c to ensure that when building ncursest.map, etc., that + the corresponding names such as _nc_ttytype are added to the list of + versioned symbols (report by Werner Fink) + + fix regression from 20150704 (report/patch by Werner Fink). + +20150704 + + fix a few problems reported by Coverity. + + fix comparison against "/usr/include" in misc/gen-pkgconfig.in + (report by Daiki Ueno, Debian #790548, cf: 20141213). + +20150627 + + modify configure script to remove deprecated ABI 5 symbols when + building ABI 6. + + add symbols _nc_Default_Field, _nc_Default_Form, _nc_has_mouse to + map-files, but marked as deprecated so that they can easily be + suppressed from ABI 6 builds (Debian #788610). + + comment-out "screen.xterm" entry, and inherit screen.xterm-256color + from xterm-new (report by Richard Birkett) -TD + + modify read_entry.c to set the error-return to -1 if no terminal + databases were found, as documented for setupterm. + + add test_setupterm.c to demonstrate normal/error returns from the + setupterm and restartterm functions. + + amend cleanup change from 20110813 which removed redundant definition + of ret_error, etc., from tinfo_driver.c, to account for the fact that + it should return a bool rather than int (report/analysis by Johannes + Schindelin). + +20150613 + + fix overflow warning for OSX with lib_baudrate.c (cf: 20010630). + + modify script used to generate map/sym files to mark 5.9.20150530 as + the last "5.9" version, and regenerated the files. That makes the + files not use ".current" for the post-5.9 symbols. This also + corrects the label for _nc_sigprocmask used in when weak symbols are + configured for the ncursest/ncursestw libraries (prompted by + discussion with Sven Joachim). + + fix typo in NEWS (report by Sven Joachim). + +20150606 pre-release + + make ABI 6 the default by updates to dist.mk and VERSION, with the + intention that the existing ABI 5 should build as before using the + "--with-abi-version=5" option. + + regenerate ada- and man-html documentation. + + minor fixes to color- and util-manpages. + + fix a regression in Ada95/gen/Makefile.in, to handle special case of + Cygwin, which uses the broken-linker feature. + + amend fix for CF_NCURSES_CONFIG used in test/configure to assume that + ncurses package scripts work when present for cross-compiling, as the + lessor of two evils (cf: 20150530). + + add check in configure script to disallow conflicting options + "--with-termlib" and "--enable-term-driver". + + move defaults for "--disable-lp64" and "--with-versioned-syms" into + CF_ABI_DEFAULTS macro. + +20150530 + + change private type for Event_Mask in Ada95 binding to work when + mmask_t is set to 32-bits. + + remove spurious "%;" from st entry (report by Daniel Pitts) -TD + + add vte-2014, update vte to use that -TD + + modify tic and infocmp to "move" a diagnostic for tparm strings that + have a syntax error to tic's "-c" option (report by Daniel Pitts). + + fix two problems with configure script macros (Debian #786436, + cf: 20150425, cf: 20100529). + +20150523 + + add 'P' menu item to test/ncurses.c, to show pad in color. + + improve discussion in curs_color.3x about color rendering (prompted + by comment on Stack Overflow forum): + + remove screen-bce.mlterm, since mlterm does not do "bce" -TD + + add several screen.XXX entries to support the respective variations + for 256 colors -TD + + add putty+fnkeys* building-block entries -TD + + add smkx/rmkx to capabilities analyzed with infocmp "-i" option. + +20150516 + + amend change to ".pc" files to only use the extra loader flags which + may have rpath options (report by Sven Joachim, cf: 20150502). + + change versioning for dpkg's in test-packages for Ada95 and + ncurses-examples for consistency with Debian, to work with package + updates. + + regenerate html manpages. + + clarify handling of carriage return in waddch manual page; it was + discussed only in the portability section (prompted by comment on + Stack Overflow forum): + +20150509 + + add test-packages for cross-compiling ncurses-examples using the + MinGW test-packages. These are only the Debian packages; RPM later. + + cleanup format of debian/copyright files + + add pc-files to the MinGW cross-compiling test-packages. + + correct a couple of places in gen-pkgconfig.in to handle renaming of + the tinfo library. + +20150502 + + modify the configure script to allow different default values + for ABI 5 versus ABI 6. + + add wgetch-events to test-packages. + + add a note on how to build ncurses-examples to test/README. + + fix a memory leak in delscreen (report by Daniel Kahn Gillmor, + Debian #783486) -TD + + remove unnecessary ';' from E3 capabilities -TD + + add tmux entry, derived from screen (patch by Nicholas Marriott). + + split-out recent change to nsterm-bce as nsterm-build326, and add + nsterm-build342 to reflect changes with successive releases of OSX + (discussion with Leonardo B Schenkel) + + add xon, ich1, il1 to ibm3161 (patch by Stephen Powell, Debian + #783806) + + add sample "magic" file, to document ext-putwin. + + modify gen-pkgconfig.in to add explicit -ltinfo, etc., to the + generated ".pc" file when ld option "--as-needed" is used, or when + ncurses and tinfo are installed without using rpath (prompted by + discussion with Sylvain Bertrand). + + modify test-package for ncurses6 to omit rpath feature when installed + in /usr. + + add OSX's "*.dSYM" to clean-rules in makefiles. + + make extra-suffix work for OSX configuration, e.g., for shared + libraries. + + modify Ada95/configure script to work with pkg-config + + move test-package for ncurses6 to /usr, since filename-conflicts have + been eliminated. + + corrected build rules for Ada95/gen/generate; it does not depend on + the ncurses library aside from headers. + + reviewed man pages, fixed a few other spelling errors. + + fix a typo in curs_util.3x (Sven Joachim). + + use extra-suffix in some overlooked shared library dependencies + found by 20150425 changes for test-packages. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20150425 + + expanded description of tgetstr's area pointer in manual page + (report by Todd M Lewis). + + in-progress changes to modify test-packages to use ncursesw6 rather + than ncursesw, with updated configure scripts. + + modify CF_NCURSES_CONFIG in Ada95- and test-configure scripts to + check for ".pc" files via pkg-config, but add a linkage check since + frequently pkg-config configurations are broken. + + modify misc/gen-pkgconfig.in to include EXTRA_LDFLAGS, e.g., for the + rpath option. + + add 'dim' capability to screen entry (report by Leonardo B Schenkel) + + add several key definitions to nsterm-bce to match preconfigured + keys, e.g., with OSX 10.9 and 10.10 (report by Leonardo B Schenkel) + + fix repeated "extra-suffix" in ncurses-config.in (cf: 20150418). + + improve term_variables manual page, adding section on the terminfo + long-name symbols which are defined in the term.h header. + + fix bug in lib_tracebits.c introduced in const-fixes (cf: 20150404). + +20150418 + + avoid a blank line in output from tabs program by ending it with + a carriage return as done in FreeBSD (patch by James Clarke). + + build-fix for the "--enable-ext-putwin" feature when not using + wide characters (report by Werner Fink). + + modify autoconf macros to use scripting improvement from xterm. + + add -brtl option to compiler options on AIX 5-7, needed to link + with the shared libraries. + + add --with-extra-suffix option to help with installing nonconflicting + ncurses6 packages, e.g., avoiding header- and library-conflicts. + NOTE: as a side-effect, this renames + adacurses-config to adacurses5-config and + adacursesw-config to adacursesw5-config + + modify debian/rules test package to suffix programs with "6". + + clarify in curs_inopts.3x that window-specific settings do not + inherit into new windows. + +20150404 + + improve description of start_color() in the manual. + + modify several files in ncurses- and progs-directories to allow + const data used in internal tables to be put by the linker into the + readonly text segment. + +20150329 + + correct cut/paste error for "--enable-ext-putwin" that made it the + same as "--enable-ext-colors" (report by Roumen Petrov) + +20150328 + + add "-f" option to test/savescreen.c to help with testing/debugging + the extended putwin/getwin. + + add logic for writing/reading combining characters in the extended + putwin/getwin. + + add "--enable-ext-putwin" configure option to turn on the extended + putwin/getwin. + +20150321 + + in-progress changes to provide an extended version of putwin and + getwin which will be capable of reading screen-dumps between the + wide/normal ncurses configurations. These are text files, except + for a magic code at the beginning: + 0 string \210\210 Screen-dump (ncurses) + +20150307 + + document limitations of getwin in manual page (prompted by discussion + with John S Urban). + + extend test/savescreen.c to demonstrate that color pair values + and graphic characters can be restored using getwin. + +20150228 + + modify win_driver.c to eliminate the constructor, to make it more + usable in an application which may/may not need the console window + (report by Grady Martin). + +20150221 + + capture define's related to -D_XOPEN_SOURCE from the configure check + and add those to the *-config and *.pc files, to simplify use for + the wide-character libraries. + + modify ncurses.spec to accommodate Fedora21's location of pkg-config + directory. + + correct sense of "--disable-lib-suffixes" configure option (report + by Nicolas Boos, cf: 20140426). + +20150214 + + regenerate html manpages using improved man2html from work on xterm. + + regenerated ".map" and ".sym" files using improved script, accounting + for the "--enable-weak-symbols" configure option (report by Werner + Fink). + +20150131 + + regenerated ".map" and ".sym" files using improved script, showing + the combinations of configure options used at each stage. + +20150124 + + add configure check to determine if "local: _*;" can be used in the + ".map" files to selectively omit symbols beginning with "_". On at + least recent FreeBSD, the wildcard applies to all "_" symbols. + + remove obsolete/conflicting rule for ncurses.map from + ncurses/Makefile.in (cf: 20130706). + +20150117 + + improve description in INSTALL of the --with-versioned-syms option. + + add combination of --with-hashed-db and --with-ticlib to + configurations for ".map" files (report by Werner Fink). + +20150110 + + add a step to generating ".map" files, to declare any remaining + symbols beginning with "_" as local, at the last version node. + + improve configure checks for pkg-config, addressing a variant found + with FreeBSD ports. + + modify win_driver.c to provide characters for special keys, like + ansi.sys, when keypad mode is off, rather than returning nothing at + all (discussion with Eli Zaretskii). + + add "broken_linker" and "hashed-db" configure options to combinations + use for generating the ".map" and ".sym" files. + + avoid using "ld" directly when creating shared library, to simplify + cross-compiles. Also drop "-Bsharable" option from shared-library + rules for FreeBSD and DragonFly (FreeBSD #196592). + + fix a memory leak in form library Free_RegularExpression_Type() + (report by Pavel Balaev). + +20150103 + + modify_nc_flush() to retry if interrupted (patch by Stian Skjelstad). + + change map files to make _nc_freeall a global, since it may be used + via the Ada95 binding when checking for memory leaks. + + improve sed script used in 20141220 to account for wide-, threaded- + variations in ABI 6. + +20141227 + + regenerate ".map" files, using step overlooked in 20141213 to use + the same patch-dates across each file to match ncurses.map (report by + Sven Joachim). + +20141221 + + fix an incorrect variable assignment in 20141220 changes (report by + Sven Joachim). + +20141220 + + updated Ada95/configure with macro changes from 20141213 + + tie configure options --with-abi-version and --with-versioned-syms + together, so that ABI 6 libraries have distinct symbol versions from + the ABI 5 libraries. + + replace obsolete/nonworking link to man2html with current one, + regenerate html-manpages. + +20141213 + + modify misc/gen-pkgconfig.in to add -I option for include-directory + when using both --prefix and --disable-overwrite (report by Misty + De Meo). + + add configure option --with-pc-suffix to allow minor renaming of + ".pc" files and the corresponding library. Use this in the test + package for ncurses6. + + modify configure script so that if pkg-config is not installed, it + is still possible to install ".pc" files (report by Misty De Meo). + + updated ".sym" files, removing symbols which are marked as "local" + in the corresponding ".map" files. + + updated ".map" files to reflect move of comp_captab and comp_hash + from tic-library to tinfo-library in 20090711 (report by Sven + Joachim). + +20141206 + + updated ".map" files so that each symbol that may be shared across + the different library configurations has the same label. Some + review is needed to ensure these are really compatible. + + modify MKlib_gen.sh to work around change in development version of + gcc introduced here: + https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html + https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html + (reports by Marcus Shawcroft, Maohui Lei). + + improved configure macro CF_SUBDIR_PATH, from lynx changes. + +20141129 + + improved ".map" files by generating them with a script that builds + ncurses with several related configurations and merges the results. + A further refinement is planned, to make the tic- and tinfo-library + symbols use the same versions across each of the four configurations + which are represented (reports by Sven Joachim, Werner Fink). + +20141115 + + improve description of limits for color values and color pairs in + curs_color.3x (prompted by patch by Tim van der Molen). + + add VERSION file, using first field in that to record the ABI version + used for configure --with-libtool --disable-libtool-version + + add configure options for applying the ".map" and ".sym" files to + the ncurses, form, menu and panel libraries. + + add ".map" and ".sym" files to show exported symbols, e.g., for + symbol-versioning. + +20141101 + + improve strict compiler-warnings by adding a cast in TRACE_RETURN + and making a new TRACE_RETURN1 macro for cases where the cast does + not apply. + +20141025 + + in-progress changes to integrate the win32 console driver with the + msys2 configuration. + +20141018 + + reviewed terminology 0.6.1, add function key definitions. None of + the vt100-compatibility issues were improved -TD + + improve infocmp conversion of extended capabilities to termcap by + correcting the limit check against parametrized[], as well as filling + in a check if the string happens to have parameters, e.g., "xm" + in recent changes. + + add check for zero/negative dimensions for resizeterm and resize_term + (report by Mike Gran). + +20141011 + + add experimental support for xterm's 1005 mouse mode, to use in a + demonstration of its limitations. + + add experimental support for "%u" format to terminfo. + + modify test/ncurses.c to also show position reports in 'a' test. + + minor formatting fixes to _nc_trace_mmask_t, make this function + exported to help with debugging mouse changes. + + improve behavior of wheel-mice for xterm protocol, noting that there + are only button-presses for buttons "4" and "5", so there is no need + to wait to combine events into double-clicks (report/analysis by + Greg Field). + + provide examples xterm-1005 and xterm-1006 terminfo entries -TD + + implement decoder for xterm SGR 1006 mouse mode. + +20140927 + + implement curs_set in win_driver.c + + implement flash in win_driver.c + + fix an infinite loop in win_driver.c if the command-window loses + focus. + + improve the non-buffered mode, i.e., NCURSES_CONSOLE2, of + win_driver.c by temporarily changing the buffer-size to match the + window-size to eliminate the scrollback. Also enforce a minimum + screen-size of 24x80 in the non-buffered mode. + + modify generated misc/Makefile to suppress install.data from the + dependencies if the --disable-db-install option is used, compensating + for the top-level makefile changes used to add ncurses*-config in the + 20140920 changes (report by Steven Honeyman). + +20140920 + + add ncurses*-config to bin-directory of sample package-scripts. + + add check to ensure that getopt is available; this is a problem in + some older cross-compiler environments. + + expanded on the description of --disable-overwrite in INSTALL + (prompted by reports by Joakim Tjernlund, Thomas Klausner). + See Gentoo #522586 and NetBSD #49200 for examples. + which relates to the clarified guidelines. + + remove special logic from CF_INCLUDE_DIRS which adds the directory + for the --includedir from the build (report by Joakim Tjernlund). + + add case for Unixware to CF_XOPEN_SOURCE, from lynx changes. + + update config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20140913 + + add a configure check to ignore some of the plethora of non-working + C++ cross-compilers. + + build-fixes for Ada95 with gnat 4.9 + +20140906 + + build-fix and other improvements for port of ncurses-examples to + NetBSD. + + minor compiler-warning fixes. + +20140831 + + modify test/demo_termcap.c and test/demo_terminfo.c to make their + options more directly comparable, and add "-i" option to specify + a terminal description filename to parse for names to lookup. + +20140823 + + fix special case where double-width character overwrites a single- + width character in the first column (report by Egmont Koblinger, + cf: 20050813). + +20140816 + + fix colors in ncurses 'b' test which did not work after changing + it to put the test-strings in subwindows (cf: 20140705). + + merge redundant SEE-ALSO sections in form and menu manpages. + +20140809 + + modify declarations for user-data pointers in C++ binding to use + reinterpret_cast to facilitate converting typed pointers to void* + in user's application (patch by Adam Jiang). + + regenerated html manpages. + + add note regarding cause and effect for TERM in ncurses manpage, + having noted clueless verbiage in Terminal.app's "help" file + which reverses cause/effect. + + remove special fallback definition for NCURSES_ATTR_T, since macros + have resolved type-mismatches using casts (cf: 970412). + + fixes for win_driver.c: + + handle repainting on endwin/refresh combination. + + implement beep(). + + minor cleanup. + +20140802 + + minor portability fixes for MinGW: + + ensure WINVER is defined in makefiles rather than using headers + + add check for gnatprep "-T" option + + work around bug introduced by gcc 4.8.1 in MinGW which breaks + "trace" feature: + http://stackoverflow.com/questions/20877689/gcc-4-8-1-minggw-d-option-does-not-work-as-usual + + fix most compiler warnings for Cygwin ncurses-examples. + + restore "redundant" -I options in test/Makefile.in, since they are + typically needed when building the derived ncurses-examples package + (cf: 20140726). + +20140726 + + eliminate some redundant -I options used for building libraries, and + ensure that ${srcdir} is added to the include-options (prompted by + discussion with Paul Gilmartin). + + modify configure script to work with Minix3.2 + + add form library extension O_DYNAMIC_JUSTIFY option which can be + used to override the different treatment of justification for static + versus dynamic fields (adapted from patch by Leon Winter). + + add a null pointer check in test/edit_field.c (report/analysis by + Leon Winter, cf: 20130608). + +20140719 + + make workarounds for compiling test-programs with NetBSD curses. + + improve configure macro CF_ADD_LIBS, to eliminate repeated -l/-L + options, from xterm changes. + +20140712 + + correct Charable() macro check for A_ALTCHARSET in wide-characters. + + build-fix for position-debug code in tty_update.c, to work with or + without sp-funcs. + +20140705 + + add w/W toggle to ncurses.c 'B' test, to demonstrate permutation of + video-attributes and colors with double-width character strings. + +20140629 + + correct check in win_driver.c for saving screen contents, e.g., when + NCURSES_CONSOLE2 is set (cf: 20140503). + + reorganize b/B menu items in ncurses.c, putting the test-strings into + subwindows. This is needed for a planned change to use Unicode + fullwidth characters in the test-screens. + + correct update to form status for _NEWTOP, broken by fixes for + compiler warnings (patch by Leon Winter, cf: 20120616). + +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 + 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 + providing directly comparable screens. + + add test/dots_curses.c, for comparison with the low-level examples. + +20140614 + + fix dereference before null check found by Coverity in tic.c + (cf: 20140524). + + fix sign-extension bug in read_entry.c which prevented "toe" from + reading empty "screen+italics" entry. + + modify sgr for screen.xterm-new to support dim capability -TD + + add dim capability to nsterm+7 -TD + + cancel dim capability for iterm -TD + + add dim, invis capabilities to vte-2012 -TD + + add sitm/ritm to konsole-base and mlterm3 -TD + +20140609 + > fix regression in screen terminfo entries (reports by Christian + Ebert, Gabriele Balducci) -TD + + revert the change to screen; see notes for why this did not work -TD + + cancel sitm/ritm for entries which extend "screen", to work around + screen's hardcoded behavior for SGR 3 -TD + +20140607 + + separate masking for sgr in vidputs from sitm/ritm, which do not + overlap with sgr functionality. + + remove unneeded -i option from adacurses-config; put -a in the -I + option for consistency (patch by Pascal Pignard). + + update xterm-new terminfo entry to xterm patch #305 -TD + + change format of test-scripts for Debian Ada95 and ncurses-examples + packages to quilted to work around Debian #700177 (cf: 20130907). + + build fix for form_driver_w.c as part of ncurses-examples package for + older ncurses than 20131207. + + add Hello World example to adacurses-config manpage. + + remove unused --enable-pc-files option from Ada95/configure. + + add --disable-gnat-projects option for testing. + + revert changes to Ada95 project-files configuration (cf: 20140524). + + corrected usage message in adacurses-config. + +20140524 + + fix typo in ncurses manpage for the NCURSES_NO_MAGIC_COOKIE + environment variable. + + improve discussion of input-echoing in curs_getch.3x + + clarify discussion in curs_addch.3x of wrapping. + + modify parametrized.h to make fln non-padded. + + correct several entries which had termcap-style padding used in + terminfo: adm21, aj510, alto-h19, att605-pc, x820 -TD + + correct syntax for padding in some entries: dg211, h19 -TD + + correct ti924-8 which had confused padding versus octal escapes -TD + + correct padding in sbi entry -TD + + fix an old bug in the termcap emulation; "%i" was ignored in tparm() + because the parameters to be incremented were already on the internal + stack (report by Corinna Vinschen). + + modify tic's "-c" option to take into account the "-C" option to + activate additional checks which compare the results from running + tparm() on the terminfo expressions versus the translated termcap + expressions. + + modify tic to allow it to read from FIFOs (report by Matthieu Fronton, + cf: 20120324). + > patches by Nicolas Boulenguez: + + explicit dereferences to suppress some style warnings. + + when c_varargs_to_ada.c includes its header, use double quotes + instead of <>. + + samples/ncurses2-util.adb: removed unused with clause. The warning + was removed by an obsolete pragma. + + replaced Unreferenced pragmas with Warnings (Off). The latter, + available with older GNATs, needs no configure test. This also + replaces 3 untested Unreferenced pragmas. + + simplified To_C usage in trace handling. Using two parameters allows + some basic formatting, and avoids a warning about security with some + compiler flags. + + for generated Ada sources, replace many snippets with one pure + package. + + removed C_Chtype and its conversions. + + removed C_AttrType and its conversions. + + removed conversions between int, Item_Option_Set, Menu_Option_Set. + + removed int, Field_Option_Set, Item_Option_Set conversions. + + removed C_TraceType, Attribute_Option_Set conversions. + + replaced C.int with direct use of Eti_Error, now enumerated. As it + was used in a case statement, values were tested by the Ada compiler + to be consecutive anyway. + + src/Makefile.in: remove duplicate stanza + + only consider using a project for shared libraries. + + style. Silent gnat-4.9 warning about misplaced "then". + + generate shared library project to honor ADAFLAGS, LDFLAGS. + +20140510 + + cleanup recently introduced compiler warnings for MingW port. + + workaround for ${MAKEFLAGS} configure check versus GNU make 4.0, + which introduces more than one gratuitous incompatibility. + +20140503 + + add vt520ansi terminfo entry (patch by Mike Gran) + + further improve MinGW support for the scenario where there is an + ANSI-escapes handler such as ansicon running in the console window + (patch by Juergen Pfeifer). + +20140426 + + add --disable-lib-suffixes option (adapted from patch by Juergen + Pfeifer). + + merge some changes from Juergen Pfeifer's work with MSYS2, to + simplify later merging: + + use NC_ISATTY() macro for isatty() in library + + add _nc_mingw_isatty() and related functions to windows-driver + + rename terminal driver entrypoints to simplify grep's + + remove a check in the sp-funcs flavor of newterm() which allowed only + the first call to newterm() to succeed (report by Thomas Beierlein, + cf: 20090927). + +20140419 + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20140412 + + modify configure script: + + drop the -no-gcc option from Intel compiler, from lynx changes. + + extend the --with-hashed-db configure option to simplify building + with different versions of Berkeley database using FreeBSD ports. + + improve initialization for MinGW port (Juergen Pfeifer): + + enforce Windows-style path-separator if cross-compiling, + + add a driver-name method to each of the drivers, + + allow the Windows driver name to match "unknown", ignoring case, + + lengthen the built-in name for the Windows console driver to + "#win32console", and + + move the comparison of driver-names allowing abbreviation, e.g., + to "#win32con" into the Windows console driver. + +20140329 + + add check in tic for mismatch between ccc and initp/initc + + cancel ccc in putty-256color and konsole-256color for consistency + with the cancelled initc capability (patch by Sven Zuhlsdorf). + + add xterm+256setaf building block for various terminals which only + get the 256-color feature half-implemented -TD + + updated "st" entry (leaving the 0.1.1 version as "simpleterm") to + 0.4.1 -TD + +20140323 + + fix typo in "mlterm" entry (report by Gabriele Balducci) -TD + +20140322 + + use types from in sample build-scripts for chtype, etc. + + modify configure script and curses.h.in to allow the types specified + using --with-chtype and related options to be defined in + + add terminology entry -TD + + add mlterm3 entry, use that as "mlterm" -TD + + inherit mlterm-256color from mlterm -TD + +20140315 + + modify _nc_New_TopRow_and_CurrentItem() to ensure that the menu's + top-row is adjusted as needed to ensure that the current item is + on the screen (patch by Johann Klammer). + + add wgetdelay() to retrieve _delay member of WINDOW if it happens to + be opaque, e.g., in the pthread configuration (prompted by patch by + Soren Brinkmann). + +20140308 + + modify ifdef in read_entry.c to handle the case where + NCURSES_USE_DATABASE is not defined (patch by Xin Li). + + add cast in form_driver_w() to fix ARM build (patch by Xin Li). + + add logic to win_driver.c to save/restore screen contents when not + allocating a console-buffer (cf: 20140215). + +20140301 + + clarify error-returns from newwin (report by Ruslan Nabioullin). + +20140222 + + fix some compiler warnings in win_driver.c + + updated notes for wsvt25 based on tack and vttest -TD + + add teken entry to show actual properties of FreeBSD's "xterm" + console -TD + +20140215 + + in-progress changes to win_driver.c to implement output without + allocating a console-buffer. This uses a pre-existing environment + variable NCGDB used by Juergen Pfeifer for debugging (prompted by + discussion with Erwin Waterlander regarding Console2, which hangs + when reading in an allocated console-buffer). + + add -t option to gdc.c, and modify to accept "S" to step through the + scrolling-stages. + + regenerate NCURSES-Programming-HOWTO.html to fix some of the broken + html emitted by docbook. + +20140209 + + modify CF_XOPEN_SOURCE macro to omit followup check to determine if + _XOPEN_SOURCE can/should be defined. g++ 4.7.2 built on Solaris 10 + has some header breakage due to its own predefinition of this symbol + (report by Jean-Pierre Flori, Sage #15796). + +20140201 + + add/use symbol NCURSES_PAIRS_T like NCURSES_COLOR_T, to illustrate + which "short" types are for color pairs and which are color values. + + fix build for s390x, by correcting field bit offsets in generated + representation clauses when int=32 long=64 and endian=big, or at + least on s390x (patch by Nicolas Boulenguez). + + minor cleanup change to test/form_driver_w.c (patch by Gaute Hope). + +20140125 + + remove unnecessary ifdef's in Ada95/gen/gen.c, which reportedly do + not work as is with gcc 4.8 due to fixes using chtype cast made for + new compiler warnings by gcc 4.8 in 20130824 (Debian #735753, patch + by Nicolas Boulenguez). + +20140118 + + apply includesubdir variable which was introduced in 20130805 to + gen-pkgconfig.in (Debian #735782). + +20131221 + + further improved man2html, used this to fix broken links in html + manpages. See + ftp://ftp.invisible-island.net/ncurses/patches/man2html + +20131214 + + modify configure-script/ifdef's to allow OLD_TTY feature to be + suppressed if the type of ospeed is configured using the option + --with-ospeed to not be a short. By default, it is a short for + termcap-compatibility (adapted from suggestion by Christian + Weisgerber). + + correct a typo in _nc_baudrate() (patch by Christian Weisgerber, + cf: 20061230). + + fix a few -Wlogical-op warnings. + + updated llib-l* files. + +20131207 + + add form_driver_w() entrypoint to wide-character forms library, as + well as test program form_driver_w (adapted from patch by Gaute + Hope). + +20131123 + + minor fix for CF_GCC_WARNINGS to special-case options which are not + recognized by clang. + +20131116 + + add special case to configure script to move _XOPEN_SOURCE_EXTENDED + definition from CPPFLAGS to CFLAGS if it happens to be needed for + Solaris, because g++ errors with that definition (report by + Jean-Pierre Flori, Sage #15268). + + correct logic in infocmp's -i option which was intended to ignore + strings which correspond to function-keys as candidates for piecing + together initialization- or reset-strings. The problem dates to + 1.9.7a, but was overlooked until changes in -Wlogical-op warnings for + gcc 4.8 (report by David Binderman). + + updated CF_GCC_WARNINGS to documented options for gcc 4.9.0, moving + checks for -Wextra and -Wdeclaration-after-statement into the macro, + and adding checks for -Wignored-qualifiers, -Wlogical-op and + -Wvarargs + + updated CF_CURSES_UNCTRL_H and CF_SHARED_OPTS macros from ongoing + work on cdk. + + update config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20131110 + + minor cleanup of terminfo.tail + +20131102 + + use TS extension to describe xterm's title-escapes -TD + + modify terminator and nsterm-s to use xterm+sl-twm building block -TD + + update hurd.ti, add xenl to reflect 2011-03-06 change in + http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/display.c + (Debian #727119). + + simplify pfkey expression in ansi.sys -TD + +20131027 + + correct/simplify ifdef's for cur_term versus broken-linker and + reentrant options (report by Jean-Pierre Flori, cf: 20090530). + + modify release/version combinations in test build-scripts to make + them more consistent with other packages. + +20131019 + + add nc_mingw.h to installed headers for MinGW port; needed for + compiling ncurses-examples. + + add rpm-script for testing cross-compile of ncurses-examples. + +20131014 + + fix new typo in CF_ADA_INCLUDE_DIRS macro (report by Roumen Petrov). + +20131012 + + fix a few compiler warnings in progs and test. + + minor fix to package/debian-mingw/rules, do not strip dll's. + + minor fixes to configure script for empty $prefix, e.g., when doing + cross-compiles to MinGW. + + add script for building test-packages of binaries cross-compiled to + MinGW using NSIS. + +20131005 + + minor fixes for ncurses-example package and makefile. + + add scripts for test-builds of cross-compiler packages for ncurses6 + to MinGW. + +20130928 + + some build-fixes for ncurses-examples with NetBSD-6.0 curses, though + it lacks some common functions such as use_env() which is not yet + addressed. + + build-fix and some compiler warning fixes for ncurses-examples with + OpenBSD 5.3 + + fix a possible null-pointer reference in a trace message from newterm. + + quiet a few warnings from NetBSD 6.0 namespace pollution by + nonstandard popcount() function in standard strings.h header. + + ignore g++ 4.2.1 warnings for "-Weffc++" in c++/cursesmain.cc + + fix a few overlooked places for --enable-string-hacks option. + +20130921 + + fix typo in curs_attr.3x (patch by Sven Joachim, cf: 20130831). + + build-fix for --with-shared option for DragonFly and FreeBSD (report + by Rong-En Fan, cf: 20130727). + +20130907 + + build-fixes for MSYS for two test-programs (patches by Ray Donnelly, + Alexey Pavlov). + + revert change to two of the dpkg format files, to work with dpkg + before/after Debian #700177. + + fix gcc -Wconversion warning in wattr_get() macro. + + add msys and msysdll to known host/configuration types (patch by + Alexey Pavlov). + + modify CF_RPATH_HACK configure macro to not rely upon "-u" option + of sort, improving portability. + + minor improvements for test-programs from reviewing Solaris port. + + update config.guess, config.sub from + http://git.savannah.gnu.org/cgit/config.git + +20130831 + + modify test/ncurses.c b/B tests to display lines only for the + attributes which a given terminal supports, to make room for an + italics test. + + completed ncv table in terminfo.tail; it did not list the wide + character codes listed in X/Open Curses issue 7. + + add A_ITALIC extension (prompted by discussion with Egmont Koblinger). + +20130824 + + fix some gcc 4.8 -Wconversion warnings. + + change format of dpkg test-scripts to quilted to work around bug + introduced by Debian #700177. + + discard cached keyname() values if meta() is changed after a value + was cached using (report by Kurban Mallachiev). + +20130816 + + add checks in tic to warn about terminals which lack cursor + addressing, capabilities or having those, are marked as hard_copy or + generic_type. + + use --without-progs in mingw-ncurses rpm. + + split out _nc_init_termtype() from alloc_entry.c to use in MinGW + port when tic and other programs are not needed. + +20130805 + + minor fixes to the --disable-overwrite logic, to ensure that the + configured $(includedir) is not cancelled by the mingwxx-filesystem + rpm macros. + + add --disable-db-install configure option, to simplify building + cross-compile support packages. + + add mingw-ncurses.spec file, for testing cross-compiles. + +20130727 + + improve configure macros from ongoing work on cdk, dialog, xterm: + + CF_ADD_LIB_AFTER - fix a problem with -Wl options + + CF_RPATH_HACK - add missing result-message + + CF_SHARED_OPTS - modify to use $rel_builddir in cygwin and mingw + dll symbols (which can be overridden) rather than explicit "../". + + CF_SHARED_OPTS - modify NetBSD and DragonFly symbols to use ${CC} + rather than ${LD} to improve rpath support. + + CF_SHARED_OPTS - add a symbol to denote the temporary files that + are created by the macro, to simplify clean-rules. + + CF_X_ATHENA - trim extra libraries to work with -Wl,--as-needed + + fix a regression in hashed-database support for NetBSD, which uses + the key-size differently from other implementations (cf: 20121229). + +20130720 + + further improvements for setupterm manpage, clarifying the + initialization of cur_term. + +20130713 + + improve manpages for initscr and setupterm. + + minor compiler-warning fixes + +20130706 + + add fallback defs for and (cf: 20120225). + + add check for size of wchar_t, use that to suppress a chunk of + wcwidth.h in MinGW port. + + quiet linker warnings for MinGW cross-compile with dll's using the + --enable-auto-import flag. + + add ncurses.map rule to ncurses/Makefile to help diagnose symbol + table issues. + +20130622 + + modify the clear program to take into account the E3 extended + capability to clear the terminal's scrollback buffer (patch by + Miroslav Lichvar, Redhat #815790). + + clarify in resizeterm manpage that LINES and COLS are updated. + + updated ansi example in terminfo.tail, correct misordered example + of sgr. + + fix other doclifter warnings for manpages + + remove unnecessary ".ta" in terminfo.tail, add missing ".fi" + (patch by Eric Raymond). + +20130615 + + minor changes to some configure macros to make them more reusable. + + fixes for tabs program (prompted by report by Nick Andrik). + + corrected logic in command-line parsing of -a and -c predefined + tab-lists options. + + allow "-0" and "-8" options to be combined with others, e.g.,"-0d". + + make warning messages more consistent with the other utilities by + not printing the full pathname of the program. + + add -V option for consistency with other utilities. + + fix off-by-one in columns for tabs program when processing an option + such as "-5" (patch by Nick Andrik). + +20130608 + + add to test/demo_forms.c examples of using the menu-hooks as well + as showing how the menu item user-data can be used to pass a callback + function pointer. + + add test/dots_termcap.c + + remove setupterm call from test/demo_termcap.c + + build-fix if --disable-ext-funcs configure option is used. + + modified test/edit_field.c and test/demo_forms.c to move the lengths + into a user-data structure, keeping the original string for later + expansion to free-format input/out demo. + + modified test/demo_forms.c to load data from file. + + added note to clarify Terminal.app's non-emulation of the various + terminal types listed in the preferences dialog -TD + + fix regression in error-reporting in lib_setup.c (Debian #711134, + cf: 20121117). + + build-fix for a case where --enable-broken_linker and + --enable-reentrant options are combined (report by George R Goffe). + +20130525 + + modify mvcur() to distinguish between internal use by the ncurses + library, and external callers, preventing it from reading the content + of the screen which is only nonblank when curses calls have updated + it. This makes test/dots_mvcur.c avoid painting colored cells in + the left margin of the display. + + minor fix to test/dots_mvcur.c + + move configured symbols USE_DATABASE and USE_TERMCAP to term.h as + NCURSES_USE_DATABASE and NCURSES_USE_TERMCAP to allow consistent + use of these symbols in term_entry.h + +20130518 + + corrected ifdefs in test/testcurs.c to allow comparison of mouse + interface versus pdcurses (cf: 20130316). + + add pow() to configure-check for math library, needed since + 20121208 for test/hanoi (Debian #708056). + + regenerated html manpages. + + update doctype used for html documentation. + +20130511 + + move nsterm-related entries out of "obsolete" section to more + plausible "ansi consoles" -TD + + additional cleanup of table-of-contents by reordering -TD + + revise fix for check for 8-bit value in _nc_insert_ch(); prior fix + prevented inserts when video attributes were attached to the data + (cf: 20121215) (Redhat #959534). + +20130504 + + fixes for issues found by Coverity: + + correct FNKEY() macro in progs/dump_entry.c, allowing kf11-kf63 to + display when infocmp's -R option is used for HP or AIX subsets. + + fix dead-code issue with test/movewindow.c + + improve limited-checking in _nc_read_termtype(). + +20130427 + + fix clang 3.2 warning in progs/dump_entry.c + + drop AC_TYPE_SIGNAL check; ncurses relies on c89 and later. + +20130413 + + add MinGW to cases where ncurses installs by default into /usr + (prompted by discussion with Daniel Silva Ferreira). + + add -D option to infocmp's usage-message (patch by Miroslav Lichvar). + + add a missing 'int' type for main function in configure check for + type of bool variable, to work with clang 3.2 (report by Dmitri + Gribenko). + + improve configure check for static_cast, to work with clang 3.2 + (report by Dmitri Gribenko). + + re-order rule for demo.o and macros defining header dependencies in + c++/Makefile.in to accommodate gmake (report by Dmitri Gribenko). + +20130406 + + improve parameter checking in copywin(). + + modify configure script to work around OS X's "libtool" program, to + choose glibtool instead. At the same time, chance the autoconf macro + to look for a "tool" rather than a "prog", to help with potential use + in cross-compiling. + + separate the rpath usage for c++ library from demo program + (Redhat #911540) + + update/correct header-dependencies in c++ makefile (report by Werner + Fink). + + add --with-cxx-shared to dpkg-script, as done for rpm-script. + +20130324 + + build-fix for libtool configuration (reports by Daniel Silva Ferreira + and Roumen Petrov). + +20130323 + + build-fix for OS X, to handle changes for --with-cxx-shared feature + (report by Christian Ebert). + + change initialization for vt220, similar entries for consistency + with cursor-key strings (NetBSD #47674) -TD + + further improvements to linux-16color (Benjamin Sittler) + +20130316 + + additional fix for tic.c, to allocate missing buffer space. + + eliminate configure-script warnings for gen-pkgconfig.in + + correct typo in sgr string for sun-color, + add bold for consistency with sgr, + change smso for consistency with sgr -TD + + correct typo in sgr string for terminator -TD + + add blink to the attributes masked by ncv in linux-16color (report + by Benjamin Sittler) + + improve warning message from post-load checking for missing "%?" + operator by tic/infocmp by showing the entry name and capability. + + minor formatting improvement to tic/infocmp -f option to ensure + line split after "%;". + + amend scripting for --with-cxx-shared option to handle the debug + library "libncurses++_g.a" (report by Sven Joachim). + +20130309 + + amend change to toe.c for reading from /dev/zero, to ensure that + there is a buffer for the temporary filename (cf: 20120324). + + regenerated html manpages. + + fix typo in terminfo.head (report by Sven Joachim, cf: 20130302). + + updated some autoconf macros: + + CF_ACVERSION_CHECK, from byacc 1.9 20130304 + + CF_INTEL_COMPILER, CF_XOPEN_SOURCE from luit 2.0-20130217 + + add configure option --with-cxx-shared to permit building + libncurses++ as a shared library when using g++, e.g., the same + limitations as libtool but better integrated with the usual build + configuration (Redhat #911540). + + modify MKkey_defs.sh to filter out build-path which was unnecessarily + shown in curses.h (Debian #689131). + +20130302 + + add section to terminfo manpage discussing user-defined capabilities. + + update manpage description of NCURSES_NO_SETBUF, explaining why it + is obsolete. + + add a check in waddch_nosync() to ensure that tab characters are + treated as control characters; some broken locales claim they are + printable. + + add some traces to the Windows console driver. + + initialize a temporary array in _nc_mbtowc, needed for some cases + of raw input in MinGW port. + +20130218 + + correct ifdef on change to lib_twait.c (report by Werner Fink). + + update config.guess, config.sub + +20130216 + + modify test/testcurs.c to work with mouse for ncurses as it does for + pdcurses. + + modify test/knight.c to work with mouse for pdcurses as it does for + ncurses. + + modify internal recursion in wgetch() which handles cooked mode to + check if the call to wgetnstr() returned an error. This can happen + when both nocbreak() and nodelay() are set, for instance (report by + Nils Christopher Brause) (cf: 960418). + + fixes for issues found by Coverity: + + add a check for valid position in ClearToEOS() + + fix in lib_twait.c when --enable-wgetch-events is used, pointer + use after free. + + improve a limit-check in make_hash.c + + fix a memory leak in hashed_db.c + +20130209 + + modify test/configure script to make it simpler to override names + of curses-related libraries, to help with linking with pdcurses in + MinGW environment. + + if the --with-terminfo-dirs configure option is not used, there is + no corresponding compiled-in value for that. Fill in "no default + value" for that part of the manpage substitution. + +20130202 + + correct initialization in knight.c which let it occasionally make + an incorrect move (cf: 20001028). + + improve documentation of the terminfo/termcap search path. + +20130126 + + further fixes to mvcur to pass callback function (cf: 20130112), + needed to make test/dots_mvcur work. + + reduce calls to SetConsoleActiveScreenBuffer in win_driver.c, to + help reduce flicker. + + modify configure script to omit "+b" from linker options for very + old HP-UX systems (report by Dennis Grevenstein) + + add HP-UX workaround for missing EILSEQ on old HP-UX systems (patch + by Dennis Grevenstein). + + restore memmove/strdup support for antique systems (request by + Dennis Grevenstein). + + change %l behavior in tparm to push the string length onto the stack + rather than saving the formatted length into the output buffer + (report by Roy Marples, cf: 980620). + +20130119 + + fixes for issues found by Coverity: + + fix memory leak in safe_sprintf.c + + add check for return-value in tty_update.c + + correct initialization for -s option in test/view.c + + add check for numeric overflow in lib_instr.c + + improve error-checking in copywin + + add advice in infocmp manpage for termcap users (Debian #698469). + + add "-y" option to test/demo_termcap and test/demo_terminfo to + demonstrate behavior with/without extended capabilities. + + updated termcap manpage to document legacy termcap behavior for + matching capability names. + + modify name-comparison for tgetstr, etc., to accommodate legacy + applications as well as to improve compatibility with BSD 4.2 + termcap implementations (Debian #698299) (cf: 980725). + +20130112 + + correct prototype in manpage for vid_puts. + + drop ncurses/tty/tty_display.h, ncurses/tty/tty_input.h, since they + are unused in the current driver model. + + modify mvcur to use stdout except when called within the ncurses + library. + + modify vidattr and vid_attr to use stdout as documented in manpage. + + amend changes made to buffering in 20120825 so that the low-level + putp() call uses stdout rather than ncurses' internal buffering. + The putp_sp() call does the same, for consistency (Redhat #892674). + +20130105 + + add "-s" option to test/view.c to allow it to start in single-step + mode, reducing size of trace files when it is used for debugging + MinGW changes. + + revert part of 20121222 change to tinfo_driver.c + + add experimental logic in win_driver.c to improve optimization of + screen updates. This does not yet work with double-width characters, + so it is ifdef'd out for the moment (prompted by report by Erwin + Waterlander regarding screen flicker). + +20121229 + + fix Coverity warnings regarding copying into fixed-size buffers. + + add throw-declarations in the c++ binding per Coverity warning. + + minor changes to new-items for consistent reference to bug-report + numbers. + +20121222 + + add *.dSYM directories to clean-rule in ncurses directory makefile, + for Mac OS builds. + + add a configure check for gcc option -no-cpp-precomp, which is not + available in all Mac OS X configurations (report by Andras Salamon, + cf: 20011208). + + improve 20021221 workaround for broken acs, handling a case where + that ACS_xxx character is not in the acsc string but there is a known + wide-character which can be used. + +20121215 + + fix several warnings from clang 3.1 --analyze, includes correcting + a null-pointer check in _nc_mvcur_resume. + + correct display of double-width characters with MinGW port (report + by Erwin Waterlander). + + replace MinGW's wcrtomb(), fixing a problem with _nc_viscbuf + > fixes based on Coverity report: + + correct coloring in test/bs.c + + correct check for 8-bit value in _nc_insert_ch(). + + remove dead code in progs/tset.c, test/linedata.h + + add null-pointer checks in lib_tracemse.c, panel.priv.h, and some + test-programs. + +20121208 + + modify test/knight.c to show the number of choices possible for + each position in automove option, e.g., to allow user to follow + Warnsdorff's rule to solve the puzzle. + + modify test/hanoi.c to show the minimum number of moves possible for + the given number of tiles (prompted by patch by Lucas Gioia). + > fixes based on Coverity report: + + remove a few redundant checks. + + correct logic in test/bs.c, when randomly placing a specific type of + ship. + + check return value from remove/unlink in tic. + + check return value from sscanf in test/ncurses.c + + fix a null dereference in c++/cursesw.cc + + fix two instances of uninitialized variables when configuring for the + terminal driver. + + correct scope of variable used in SetSafeOutcWrapper macro. + + set umask when calling mkstemp in tic. + + initialize wbkgrndset() temporary variable when extended-colors are + used. + +20121201 + + also replace MinGW's wctomb(), fixing a problem with setcchar(). + + modify test/view.c to load UTF-8 when built with MinGW by using + regular win32 API because the MinGW functions mblen() and mbtowc() + do not work. + +20121124 + + correct order of color initialization versus display in some of the + test-programs, e.g., test_addstr.c + > fixes based on Coverity report: + + delete windows on exit from some of the test-programs. + +20121117 + > fixes based on Coverity report: + + add missing braces around FreeAndNull in two places. + + various fixes in test/ncurses.c + + improve limit-checks in tinfo/make_hash.c, tinfo/read_entry.c + + correct malloc size in progs/infocmp.c + + guard against negative array indices in test/knight.c + + fix off-by-one limit check in test/color_name.h + + add null-pointer check in progs/tabs.c, test/bs.c, test/demo_forms.c, + test/inchs.c + + fix memory-leak in tinfo/lib_setup.c, progs/toe.c, + test/clip_printw.c, test/demo_menus.c + + delete unused windows in test/chgat.c, test/clip_printw.c, + test/insdelln.c, test/newdemo.c on error-return. + +20121110 + + modify configure macro CF_INCLUDE_DIRS to put $CPPFLAGS after the + local -I include options in case someone has set conflicting -I + options in $CPPFLAGS (prompted by patch for ncurses/Makefile.in by + Vassili Courzakis). + + modify the ncurses*-config scripts to eliminate relative paths from + the RPATH_LIST variable, e.g., "../lib" as used in installing shared + libraries or executables. + +20121102 + + realign these related pages: + curs_add_wchstr.3x + curs_addchstr.3x + curs_addstr.3x + curs_addwstr.3x + and fix a long-ago error in curs_addstr.3x which said that a -1 + length parameter would only write as much as fit onto one line + (report by Reuben Thomas). + + remove obsolete fallback _nc_memmove() for memmove()/bcopy(). + + remove obsolete fallback _nc_strdup() for strdup(). + + cancel any debug-rpm in package/ncurses.spec + + reviewed vte-2012, reverted most of the change since it was incorrect + based on testing with tack -TD + + un-cancel the initc in vte-256color, since this was implemented + starting with version 0.20 in 2009 -TD + +20121026 + + improve malloc/realloc checking (prompted by discussion in Redhat + #866989). + + add ncurses test-program as "ncurses6" to the rpm- and dpkg-scripts. + + updated configure macros CF_GCC_VERSION and CF_WITH_PATHLIST. The + first corrects pattern used for Mac OS X's customization of gcc. + +20121017 + + fix change to _nc_scroll_optimize(), which incorrectly freed memory + (Redhat #866989). + +20121013 + + add vte-2012, gnome-2012, making these the defaults for vte/gnome + (patch by Christian Persch). + +20121006 + + improve CF_GCC_VERSION to work around Debian's customization of gcc + --version message. + + improve configure macros as done in byacc: + + drop 2.13 compatibility; use 2.52.xxxx version only since EMX port + has used that for a while. + + add 3rd parameter to AC_DEFINE's to allow autoheader to run, i.e., + for experimental use. + + remove unused configure macros. + + modify configure script and makefiles to quiet new autoconf warning + for LIBS_TO_MAKE variable. + + modify configure script to show $PATH_SEPARATOR variable. + + update config.guess, config.sub + +20120922 + + modify setupterm to set its copy of TERM to "unknown" if configured + for the terminal driver and TERM was null or empty. + + modify treatment of TERM variable for MinGW port to allow explicit + use of the windows console driver by checking if $TERM is set to + "#win32con" or an abbreviation of that. + + undo recent change to fallback definition of vsscanf() to build with + older Solaris compilers (cf: 20120728). + +20120908 + + add test-screens to test/ncurses to show 256-characters at a time, + to help with MinGW port. + +20120903 + + simplify varargs logic in lib_printw.c; va_copy is no longer needed + there. + + modifications for MinGW port to make wide-character display usable. + +20120902 + + regenerate configure script (report by Sven Joachim, cf: 20120901). + +20120901 + + add a null-pointer check in _nc_flush (cf: 20120825). + + fix a case in _nc_scroll_optimize() where the _oldnums_list array + might not be allocated. + + improve comparisons in configure.in for unset shell variables. + +20120826 + + increase size of ncurses' output-buffer, in case of very small + initial screen-sizes. + + fix evaluation of TERMINFO and TERMINFO_DIRS default values as needed + after changes to use --datarootdir (reports by Gabriele Balducci, + Roumen Petrov). + +20120825 + + change output buffering scheme, using buffer maintained by ncurses + rather than stdio, to avoid problems with SIGTSTP handling (report + by Brian Bloniarz). + +20120811 + + update autoconf patch to 2.52.20120811, adding --datarootdir + (prompted by discussion with Erwin Waterlander). + + improve description of --enable-reentrant option in README and the + INSTALL file. + + add nsterm-256color, make this the default nsterm -TD + + remove bw from nsterm-bce, per testing with tack -TD + +20120804 + + update test/configure, adding check for tinfo library. + + improve limit-checks for the getch fifo (report by Werner Fink). + + fix a remaining mismatch between $with_echo and the symbols updated + for CF_DISABLE_ECHO affecting parameters for mk-2nd.awk (report by + Sven Joachim, cf: 20120317). + + modify followup check for pkg-config's library directory in the + --enable-pc-files option to validate syntax (report by Sven Joachim, + cf: 20110716). + +20120728 + + correct path for ncurses_mingw.h in include/headers, in case build + is done outside source-tree (patch by Roumen Petrov). + + modify some older xterm entries to align with xterm source -TD + + separate "xterm-old" alias from "xterm-r6" -TD + + add E3 extended capability to xterm-basic and putty -TD + + parenthesize parameters of other macros in curses.h -TD + + parenthesize parameter of COLOR_PAIR and PAIR_NUMBER in curses.h + in case it happens to be a comma-expression, etc. (patch by Nick + Black). + +20120721 + + improved form_request_by_name() and menu_request_by_name(). + + eliminate two fixed-size buffers in toe.c + + extend use_tioctl() to have expected behavior when use_env(FALSE) and + use_tioctl(TRUE) are called. + + modify ncurses test-program, adding -E and -T options to demonstrate + use_env() versus use_tioctl(). + +20120714 + + add use_tioctl() function (adapted from patch by Werner Fink, + Novell #769788): + +20120707 + + add ncurses_mingw.h to installed headers (prompted by patch by + Juergen Pfeifer). + + clarify return-codes from wgetch() in response to SIGWINCH (prompted + by Novell #769788). + + modify resizeterm() to always push a KEY_RESIZE onto the fifo, even + if screensize is unchanged. Modify _nc_update_screensize() to push a + KEY_RESIZE if there was a SIGWINCH, even if it does not call + resizeterm(). These changes eliminate the case where a SIGWINCH is + received, but ERR returned from wgetch or wgetnstr because the screen + dimensions did not change (Novell #769788). + +20120630 + + add --enable-interop to sample package scripts (suggested by Juergen + Pfeifer). + + update CF_PATH_SYNTAX macro, from mawk changes. + + modify mk-0th.awk to allow for generating llib-ltic, etc., though + some work is needed on cproto to work with lib_gen.c to update + llib-lncurses. + + remove redundant getenv() cal in database-iterator leftover from + cleanup in 20120622 changes (report by Sven Joachim). + +20120622 + + add -d, -e and -q options to test/demo_terminfo and test/demo_termcap + + fix caching of environment variables in database-iterator (patch by + Philippe Troin, Redhat #831366). + +20120616 + + add configure check to distinguish clang from gcc to eliminate + warnings about unused command-line parameters when compiler warnings + are enabled. + + improve behavior when updating terminfo entries which are hardlinked + by allowing for the possibility that an alias has been repurposed to + a new primary name. + + fix some strict compiler warnings based on package scripts. + + further fixes for configure check for working poll (Debian #676461). + +20120608 + + fix an uninitialized variable in -c/-n logic for infocmp changes + (cf: 20120526). + + corrected fix for building c++ binding with clang 3.0 (report/patch + by Richard Yao, Gentoo #417613, cf: 20110409) + + correct configure check for working poll, fixing the case where stdin + is redirected, e.g., in rpm/dpkg builds (Debian #676461). + + add rpm- and dpkg-scripts, to test those build-environments. + The resulting packages are used only for testing. + +20120602 + + add kdch1 aka "Remove" to vt220 and vt220-8 entries -TD + + add kdch1, etc., to qvt108 -TD + + add dl1/il1 to some entries based on dl/il values -TD + + add dl to simpleterm -TD + + add consistency-checks in tic for insert-line vs delete-line + controls, and insert/delete-char keys + + correct no-leaks logic in infocmp when doing comparisons, fixing + duplicate free of entries given via the command-line, and freeing + entries loaded from the last-but-one of files specified on the + command-line. + + add kdch1 to wsvt25 entry from NetBSD CVS (reported by David Lord, + analysis by Martin Husemann). + + add cnorm/civis to wsvt25 entry from NetBSD CVS (report/analysis by + Onno van der Linden). + +20120526 + + extend -c and -n options of infocmp to allow comparing more than two + entries. + + correct check in infocmp for number of terminal names when more than + two are given. + + correct typo in curs_threads.3x (report by Yanhui Shen on + freebsd-hackers mailing list). + +20120512 + + corrected 'op' for bterm (report by Samuel Thibault) -TD + + modify test/background.c to demonstrate a background character + holding a colored ACS_HLINE. The behavior differs from SVr4 due to + the thick- and double-line extension (cf: 20091003). + + modify handling of acs characters in PutAttrChar to avoid mapping an + unmapped character to a space with A_ALTCHARSET set. + + rewrite vt520 entry based on vt420 -TD + +20120505 + + remove p6 (bold) from opus3n1+ for consistency -TD + + remove acs stuff from env230 per clues in Ingres termcap -TD + + modify env230 sgr/sgr0 to match other capabilities -TD + + modify smacs/rmacs in bq300-8 to match sgr/sgr0 -TD + + make sgr for dku7202 agree with other caps -TD + + make sgr for ibmpc agree with other caps -TD + + make sgr for tek4107 agree with other caps -TD + + make sgr for ndr9500 agree with other caps -TD + + make sgr for sco-ansi agree with other caps -TD + + make sgr for d410 agree with other caps -TD + + make sgr for d210 agree with other caps -TD + + make sgr for d470c, d470c-7b agree with other caps -TD + + remove redundant AC_DEFINE for NDEBUG versus Makefile definition. + + fix a back-link in _nc_delink_entry(), which is needed if ncurses is + configured with --enable-termcap and --disable-getcap. + +20120428 + + fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD + + add eslok flag to dec+sl -TD + + dec+sl applies to vt320 and up -TD + + drop wsl width from xterm+sl -TD + + reuse xterm+sl in putty and nsca-m -TD + + add ansi+tabs to vt520 -TD + + add ansi+enq to vt220-vt520 -TD + + fix a compiler warning in example in ncurses-intro.doc (Paul Waring). + + added paragraph in keyname manpage telling how extended capabilities + are interpreted as key definitions. + + modify tic's check of conflicting key definitions to include extended + capability strings in addition to the existing check on predefined + keys. + +20120421 + + improve cleanup of temporary files in tic using atexit(). + + add msgr to vt420, similar DEC vtXXX entries -TD + + add several missing vt420 capabilities from vt220 -TD + + factor out ansi+pp from several entries -TD + + change xterm+sl and xterm+sl-twm to include only the status-line + capabilities and not "use=xterm", making them more generally useful + as building-blocks -TD + + add dec+sl building block, as example -TD + +20120414 + + add XT to some terminfo entries to improve usefulness for other + applications than screen, which would like to pretend that xterm's + title is a status-line. -TD + + change use-clauses in ansi-mtabs, hp2626, and hp2622 based on review + of ordering and overrides -TD + + add consistency check in tic for screen's "XT" capability. + + add section in terminfo.src summarizing the user-defined capabilities + used in that file -TD + +20120407 + + fix an inconsistency between tic/infocmp "-x" option; tic omits all + non-standard capabilities, while infocmp was ignoring only the user + definable capabilities. + + improve special case in tic parsing of description to allow it to be + followed by terminfo capabilities. Previously the description had to + be the last field on an input line to allow tic to distinguish + between termcap and terminfo format while still allowing commas to be + embedded in the description. + + correct variable name in gen_edit.sh which broke configurability of + the --with-xterm-kbs option. + + revert 2011-07-16 change to "linux" alias, return to "linux2.2" -TD + + further amend 20110910 change, providing for configure-script + override of the "linux" terminfo entry to install and changing the + default for that to "linux2.2" (Debian #665959). + +20120331 + + update Ada95/configure to use CF_DISABLE_ECHO (cf: 20120317). + + correct order of use-clauses in st-256color -TD + + modify configure script to look for gnatgcc if the Ada95 binding + is built, in preference to the default gcc/cc (suggested by + Nicolas Boulenguez). + + modify configure script to ensure that the same -On option used for + the C compiler in CFLAGS is used for ADAFLAGS rather than simply + using "-O3" (suggested by Nicolas Boulenguez) + +20120324 + + amend an old fix so that next_char() exits properly for empty files, + e.g., from reading /dev/null (cf: 20080804). + + modify tic so that it can read from the standard input, or from + a character device. Because tic uses seek's, this requires writing + the data to a temporary file first (prompted by remark by Sven + Joachim) (cf: 20000923). + +20120317 + + correct a check made in lib_napms.c, so that terminfo applications + can again use napms() (cf: 20110604). + + add a note in tic.h regarding required casts for ABSENT_BOOLEAN + (cf: 20040327). + + correct scripting for --disable-echo option in test/configure. + + amend check for missing c++ compiler to work when no error is + reported, and no variables set (cf: 20021206). + + add/use configure macro CF_DISABLE_ECHO. + +20120310 + + fix some strict compiler warnings for abi6 and 64-bits. + + use begin_va_copy/end_va_copy macros in lib_printw.c (cf: 20120303). + + improve a limit-check in infocmp.c (Werner Fink): + +20120303 + + minor tidying of terminfo.tail, clarify reason for limitation + regarding mapping of \0 to \200 + + minor improvement to _nc_copy_termtype(), using memcpy to replace + loops. + + fix no-leaks checking in test/demo_termcap.c to account for multiple + calls to setupterm(). + + modified the libgpm change to show previous load as a problem in the + debug-trace. + > merge some patches from OpenSUSE rpm (Werner Fink): + + ncurses-5.7-printw.dif, fixes for varargs handling in lib_printw.c + + ncurses-5.7-gpm.dif, do not dlopen libgpm if already loaded by + runtime linker + + ncurses-5.6-fallback.dif, do not free arrays and strings from static + fallback entries + +20120228 + + fix breakage in tic/infocmp from 20120225 (report by Werner Fink). + +20120225 + + modify configure script to allow creating dll's for MinGW when + cross-compiling. + + add --enable-string-hacks option to control whether strlcat and + strlcpy may be used. The same issue applies to OpenBSD's warnings + about snprintf, noting that this function is weakly standardized. + + add configure checks for strlcat, strlcpy and snprintf, to help + reduce bogus warnings with OpenBSD builds. + + build-fix for OpenBSD 4.9 to supply consistent intptr_t declaration + (cf:20111231) + + update config.guess, config.sub + +20120218 + + correct CF_ETIP_DEFINES configure macro, making it exit properly on + the first success (patch by Pierre Labastie). + + improve configure macro CF_MKSTEMP by moving existence-check for + mkstemp out of the AC_TRY_RUN, to help with cross-compiles. + + improve configure macro CF_FUNC_POLL from luit changes to detect + broken implementations, e.g., with Mac OS X. + + add configure option --with-tparm-arg + + build-fix for MinGW cross-compiling, so that make_hash does not + depend on TTY definition (cf: 20111008). + +20120211 + + make sgr for xterm-pcolor agree with other caps -TD + + make sgr for att5425 agree with other caps -TD + + make sgr for att630 agree with other caps -TD + + make sgr for linux entries agree with other caps -TD + + make sgr for tvi9065 agree with other caps -TD + + make sgr for ncr260vt200an agree with other caps -TD + + make sgr for ncr160vt100pp agree with other caps -TD + + make sgr for ncr260vt300an agree with other caps -TD + + make sgr for aaa-60-dec-rv, aaa+dec agree with other caps -TD + + make sgr for cygwin, cygwinDBG agree with other caps -TD + + add configure option --with-xterm-kbs to simplify configuration for + Linux versus most other systems. + +20120204 + + improved tic -D option, avoid making target directory and provide + better diagnostics. + +20120128 + + add mach-gnu (Debian #614316, patch by Samuel Thibault) + + add mach-gnu-color, tweaks to mach-gnu terminfo -TD + + make sgr for sun-color agree with smso -TD + + make sgr for prism9 agree with other caps -TD + + make sgr for icl6404 agree with other caps -TD + + make sgr for ofcons agree with other caps -TD + + make sgr for att5410v1, att4415, att620 agree with other caps -TD + + make sgr for aaa-unk, aaa-rv agree with other caps -TD + + make sgr for avt-ns agree with other caps -TD + + amend fix intended to separate fixups for acsc to allow "tic -cv" to + give verbose warnings (cf: 20110730). + + modify misc/gen-edit.sh to make the location of the tabset directory + consistent with misc/Makefile.in, i.e., using ${datadir}/tabset + (Debian #653435, patch by Sven Joachim). + +20120121 + + add --with-lib-prefix option to allow configuring for old/new flavors + of OS/2 EMX. + + modify check for gnat version to allow for year, as used in FreeBSD + port. + + modify check_existence() in db_iterator.c to simply check if the + path is a directory or file, according to the need. Checking for + directory size also gives no usable result with OS/2 (cf: 20120107). + + support OS/2 kLIBC (patch by KO Myung-Hun). + +20120114 + + several improvements to test/movewindow.c (prompted by discussion on + Linux Mint forum): + + modify movement commands to make them continuous + + rewrote the test for mvderwin + + rewrote the test for recursive mvwin + + split-out reusable CF_WITH_NCURSES_ETC macro in test/configure.in + + updated configure macro CF_XOPEN_SOURCE, build-fixes for Mac OS X + and OpenBSD. + + regenerated html manpages. + +20120107 + + various improvements for MinGW (Juergen Pfeifer): + + modify stat() calls to ignore the st_size member + + drop mk-dlls.sh script. + + change recommended regular expression library. + + modify rain.c to allow for threaded configuration. + + modify tset.c to allow for case when size-change logic is not used. + +20111231 + + modify toe's report when -a and -s options are combined, to add + a column showing which entries belong to a given database. + + add -s option to toe, to sort its output. + + modify progs/toe.c, simplifying use of db-iterator results to use + caching improvements from 20111001 and 20111126. + + correct generation of pc-files when ticlib or termlib options are + given to rename the corresponding tic- or tinfo-libraries (report + by Sven Joachim). + +20111224 + + document a portability issue with tput, i.e., that scripts which work + with ncurses may fail in other implementations that do no parameter + analysis. + + add putty-sco entry -TD + +20111217 + + review/fix places in manpages where --program-prefix configure option + was not being used. + + add -D option to infocmp, to show the database locations that it + could use. + + fix build for the special case where term-driver, ticlib and termlib + are all enabled. The terminal driver depends on a few features in + the base ncurses library, so tic's dependencies include both ncurses + and termlib. + + fix build work for term-driver when --enable-wgetch-events option is + enabled. + + use types to fix some questionable casts to void*. + +20111210 + + modify configure script to check if thread library provides + pthread_mutexattr_settype(), e.g., not provided by Solaris 2.6 + + modify configure script to suppress check to define _XOPEN_SOURCE + for IRIX64, since its header files have a conflict versus + _SGI_SOURCE. + + modify configure script to add ".pc" files for tic- and + tinfo-libraries, which were omitted in recent change (cf: 20111126). + + fix inconsistent checks on $PKG_CONFIG variable in configure script. + +20111203 + + modify configure-check for etip.h dependencies, supplying a temporary + copy of ncurses_dll.h since it is a generated file (prompted by + Debian #646977). + + modify CF_CPP_PARAM_INIT "main" function to work with current C++. + +20111126 + + correct database iterator's check for duplicate entries + (cf: 20111001). + + modify database iterator to ignore $TERMCAP when it is not an + absolute pathname. + + add -D option to tic, to show the database locations that it could + use. + + improve description of database locations in tic manpage. + + modify the configure script to generate a list of the ".pc" files to + generate, rather than deriving the list from the libraries which have + been built (patch by Mike Frysinger). + + use AC_CHECK_TOOLS in preference to AC_PATH_PROGS when searching for + ncurses*-config, e.g., in Ada95/configure and test/configure (adapted + from patch by Mike Frysinger). + +20111119 + + remove obsolete/conflicting fallback definition for _POSIX_SOURCE + from curses.priv.h, fixing a regression with IRIX64 and Tru64 + (cf: 20110416) + + modify _nc_tic_dir() to ensure that its return-value is nonnull, + i.e., the database iterator was not initialized. This case is needed + to when tic is translating to termcap, rather than loading the + database (cf: 20111001). + +20111112 + + add pccon entries for OpenBSD console (Alexei Malinin). + + build-fix for OpenBSD 4.9 with gcc 4.2.1, setting _XOPEN_SOURCE to + 600 to work around inconsistent ifdef'ing of wcstof between C and + C++ header files. + + modify capconvert script to accept more than exact match on "xterm", + e.g., the "xterm-*" variants, to exclude from the conversion (patch + by Robert Millan). + + add -lc_r as alternative for -lpthread, allows build of threaded code + in older FreeBSD machines. + + build-fix for MirBSD, which fails when either _XOPEN_SOURCE or + _POSIX_SOURCE are defined. + + fix a typo misc/Makefile.in, used in uninstalling pc-files. + +20111030 + + modify make_db_path() to allow creating "terminfo.db" in the same + directory as an existing "terminfo" directory. This fixes a case + where switching between hashed/filesystem databases would cause the + new hashed database to be installed in the next best location - + root's home directory. + + add variable cf_cv_prog_gnat_correct to those passed to + config.status, fixing a problem with Ada95 builds (cf: 20111022). + + change feature test from _XPG5 to _XOPEN_SOURCE in two places, to + accommodate broken implementations for _XPG6. + + eliminate usage of NULL symbol from etip.h, to reduce header + interdependencies. + + add configure check to decide when to add _XOPEN_SOURCE define to + compiler options, i.e., for Solaris 10 and later (cf: 20100403). + This is a workaround for gcc 4.6, which fails to build the c++ + binding if that symbol is defined by the application, due to + incorrectly combining the corresponding feature test macros + (report by Peter Kruse). + +20111022 + + correct logic for discarding mouse events, retaining the partial + events used to build up click, double-click, etc, until needed + (cf: 20110917). + + fix configure script to avoid creating unused Ada95 makefile when + gnat does not work. + + cleanup width-related gcc 3.4.3 warnings for 64-bit platform, for the + internal functions of libncurses. The external interface of courses + uses bool, which still produces these warnings. + +20111015 + + improve description of --disable-tic-depends option to make it + clear that it may be useful whether or not the --with-termlib + option is also given (report by Sven Joachim). + + amend termcap equivalent for set_pglen_inch to use the X/Open + "YI" rather than the obsolete Solaris 2.5 "sL" (cf: 990109). + + improve manpage for tgetent differences from termcap library. + +20111008 + + moved static data from db_iterator.c to lib_data.c + + modify db_iterator.c for memory-leak checking, fix one leak. + + modify misc/gen-pkgconfig.in to use Requires.private for the parts + of ncurses rather than Requires, as well as Libs.private for the + other library dependencies (prompted by Debian #644728). + +20111001 + + modify tic "-K" option to only set the strict-flag rather than force + source-output. That allows the same flag to control the parser for + input and output of termcap source. + + modify _nc_getent() to ignore backslash at the end of a comment line, + making it consistent with ncurses' parser. + + restore a special-case check for directory needed to make termcap + text files load as if they were databases (cf: 20110924). + + modify tic's resolution/collision checking to attempt to remove the + conflicting alias from the second entry in the pair, which is + normally following in the source file. Also improved the warning + message to make it simpler to see which alias is the problem. + + improve performance of the database iterator by caching search-list. + +20110925 + + add a missing "else" in changes to _nc_read_tic_entry(). + +20110924 + + modify _nc_read_tic_entry() so that hashed-database is checked before + filesystem. + + updated CF_CURSES_LIBS check in test/configure script. + + modify configure script and makefiles to split TIC_ARGS and + TINFO_ARGS into pieces corresponding to LDFLAGS and LIBS variables, + to help separate searches for tic- and tinfo-libraries (patch by Nick + Alcock aka "Nix"). + + build-fix for lib_mouse.c changes (cf: 20110917). + +20110917 + + fix compiler warning for clang 2.9 + + improve merging of mouse events (integrated patch by Damien + Guibouret). + + correct mask-check used in lib_mouse for wheel mouse buttons 4/5 + (patch by Damien Guibouret). + +20110910 + + modify misc/gen_edit.sh to select a "linux" entry which works with + the current kernel rather than assuming it is always "linux3.0" + (cf: 20110716). + + revert a change to getmouse() which had the undesirable side-effect + of suppressing button-release events (report by Damien Guibouret, + cf: 20100102). + + add xterm+kbs fragment from xterm #272 -TD + + add configure option --with-pkg-config-libdir to provide control over + the actual directory into which pc-files are installed, do not use + the pkg-config environment variables (discussion with Frederic L W + Meunier). + + add link to mailing-list archive in announce.html.in, as done in + FAQ (prompted by question by Andrius Bentkus). + + improve manpage install by adjusting the "#include" examples to + show the ncurses-subdirectory used when --disable-overwrite option + is used. + + install an alias for "curses" to the ncurses manpage, tied to the + --with-curses-h configure option (suggested by Reuben Thomas). + +20110903 + + propagate error-returns from wresize, i.e., the internal + increase_size and decrease_size functions through resize_term (report + by Tim van der Molen, cf: 20020713). + + fix typo in tset manpage (patch by Sven Joachim). + +20110820 + + add a check to ensure that termcap files which might have "^?" do + not use the terminfo interpretation as "\177". + + minor cleanup of X-terminal emulator section of terminfo.src -TD + + add terminator entry -TD + + add simpleterm entry -TD + + improve wattr_get macros by ensuring that if the window pointer is + null, then the attribute and color values returned will be zero + (cf: 20110528). + +20110813 + + add substitution for $RPATH_LIST to misc/ncurses-config.in + + improve performance of tic with hashed-database by caching the + database connection, using atexit() to cleanup. + + modify treatment of 2-character aliases at the beginning of termcap + entries so they are not counted in use-resolution, since these are + guaranteed to be unique. Also ignore these aliases when reporting + the primary name of the entry (cf: 20040501) + + double-check gn (generic) flag in terminal descriptions to + accommodate old/buggy termcap databases which misused that feature. + + minor fixes to _nc_tgetent(), ensure buffer is initialized even on + error-return. + +20110807 + + improve rpath fix from 20110730 by ensuring that the new $RPATH_LIST + variable is defined in the makefiles which use it. + + build-fix for DragonFlyBSD's pkgsrc in test/configure script. + + build-fixes for NetBSD 5.1 with termcap support enabled. + + corrected k9 in dg460-ansi, add other features based on manuals -TD + + improve trimming of whitespace at the end of terminfo/termcap output + from tic/infocmp. + + when writing termcap source, ensure that colons in the description + field are translated to a non-delimiter, i.e., "=". + + add "-0" option to tic/infocmp, to make the termcap/terminfo source + use a single line. + + add a null-pointer check when handling the $CC variable. + +20110730 + + modify configure script and makefiles in c++ and progs to allow the + directory used for rpath option to be overridden, e.g., to work + around updates to the variables used by tic during an install. + + add -K option to tic/infocmp, to provide stricter BSD-compatibility + for termcap output. + + add _nc_strict_bsd variable in tic library which controls the + "strict" BSD termcap compatibility from 20110723, plus these + features: + + allow escapes such as "\8" and "\9" when reading termcap + + disallow "\a", "\e", "\l", "\s" and "\:" escapes when reading + termcap files, passing through "a", "e", etc. + + expand "\:" as "\072" on output. + + modify _nc_get_token() to reset the token's string value in case + there is a string-typed token lacking the "=" marker. + + fix a few memory leaks in _nc_tgetent. + + fix a few places where reading from a termcap file could refer to + freed memory. + + add an overflow check when converting terminfo/termcap numeric + values, since terminfo stores those in a short, and they must be + positive. + + correct internal variables used for translating to termcap "%>" + feature, and translating from termcap %B to terminfo, needed by + tctest (cf: 19991211). + + amend a minor fix to acsc when loading a termcap file to separate it + from warnings needed for tic (cf: 20040710) + + modify logic in _nc_read_entry() and _nc_read_tic_entry() to allow + a termcap file to be handled via TERMINFO_DIRS. + + modify _nc_infotocap() to include non-mandatory padding when + translating to termcap. + + modify _nc_read_termcap_entry(), passing a flag in the case where + getcap is used, to reduce interactive warning messages. + +20110723 + + add a check in start_color() to limit color-pairs to 256 when + extended colors are not supported (patch by David Benjamin). + + modify setcchar to omit no-longer-needed OR'ing of color pair in + the SetAttr() macro (patch by David Benjamin). + + add kich1 to sun terminfo entry (Yuri Pankov) + + use bold rather than reverse for smso in sun-color terminfo entry + (Yuri Pankov). + + improve generation of termcap using tic/infocmp -C option, e.g., + to correspond with 4.2BSD (prompted by discussion with Yuri Pankov + regarding Schilling's test program): + + translate %02 and %03 to %2 and %3 respectively. + + suppress string capabilities which use %s, not supported by tgoto + + use \040 rather than \s + + expand null characters as \200 rather than \0 + + modify configure script to support shared libraries for DragonFlyBSD. + +20110716 + + replace an assert() in _nc_Free_Argument() with a regular null + pointer check (report/analysis by Franjo Ivancic). + + modify configure --enable-pc-files option to take into account the + PKG_CONFIG_PATH variable (report by Frederic L W Meunier). + + add/use xterm+tmux chunk from xterm #271 -TD + + resync xterm-new entry from xterm #271 -TD + + add E3 extended capability to linux-basic (Miroslav Lichvar) + + add linux2.2, linux2.6, linux3.0 entries to give context for E3 -TD + + add SI/SO change to linux2.6 entry (Debian #515609) -TD + + fix inconsistent tabset path in pcmw (Todd C. Miller). + + remove a backslash which continued comment, obscuring altos3 + definition with OpenBSD toolset (Nicholas Marriott). + +20110702 + + add workaround from xterm #271 changes to ensure that compiler flags + are not used in the $CC variable. + + improve support for shared libraries, tested with AIX 5.3, 6.1 and + 7.1 with both gcc 4.2.4 and cc. + + modify configure checks for AIX to include release 7.x + + add loader flags/libraries to libtool options so that dynamic loading + works properly, adapted from ncurses-5.7-ldflags-with-libtool.patch + at gentoo prefix repository (patch by Michael Haubenwallner). + +20110626 + + move include of nc_termios.h out of term_entry.h, since the latter + is installed, e.g., for tack while the former is not (report by + Sven Joachim). + +20110625 + + improve cleanup() function in lib_tstp.c, using _exit() rather than + exit() and checking for SIGTERM rather than SIGQUIT (prompted by + comments forwarded by Nicholas Marriott). + + reduce name pollution from term.h, moving fallback #define's for + tcgetattr(), etc., to new private header nc_termios.h (report by + Sergio NNX). + + two minor fixes for tracing (patch by Vassili Courzakis). + + improve trace initialization by starting it in use_env() and + ripoffline(). + + review old email, add details for some changelog entries. + +20110611 + + update minix entry to minix 3.2 (Thomas Cort). + + fix a strict compiler warning in change to wattr_get (cf: 20110528). + +20110604 + + fixes for MirBSD port: + + set default prefix to /usr. + + add support for shared libraries in configure script. + + use S_ISREG and S_ISDIR consistently, with fallback definitions. + + add a few more checks based on ncurses/link_test. + + modify MKlib_gen.sh to handle sp-funcs renaming of NCURSES_OUTC type. + +20110528 + + add case to CF_SHARED_OPTS for Interix (patch by Markus Duft). + + used ncurses/link_test to check for behavior when the terminal has + not been initialized and when an application passes null pointers + to the library. Added checks to cover this (prompted by Redhat + #707344). + + modify MKlib_gen.sh to make its main() function call each function + with zero parameters, to help find inconsistent checking for null + pointers, etc. + +20110521 + + fix warnings from clang 2.7 "--analyze" + +20110514 + + compiler-warning fixes in panel and progs. + + modify CF_PKG_CONFIG macro, from changes to tin -TD + + modify CF_CURSES_FUNCS configure macro, used in test directory + configure script: + + work around (non-optimizer) bug in gcc 4.2.1 which caused + test-expression to be omitted from executable. + + force the linker to see a link-time expression of a symbol, to + help work around weak-symbol issues. + +20110507 + + update discussion of MKfallback.sh script in INSTALL; normally the + script is used automatically via the configured makefiles. However + there are still occasions when it might be used directly by packagers + (report by Gunter Schaffler). + + modify misc/ncurses-config.in to omit the "-L" option from the + "--libs" output if the library directory is /usr/lib. + + change order of tests for curses.h versus ncurses.h headers in the + configure scripts for Ada95 and test-directories, to look for + ncurses.h, from fixes to tin -TD + + modify ncurses/tinfo/access.c to account for Tandem's root uid + (report by Joachim Schmitz). + +20110430 + + modify rules in Ada95/src/Makefile.in to ensure that the PIC option + is not used when building a static library (report by Nicolas + Boulenguez): + + Ada95 build-fix for big-endian architectures such as sparc. This + undoes one of the fixes from 20110319, which added an "Unused" member + to representation clauses, replacing that with pragmas to suppress + warnings about unused bits (patch by Nicolas Boulenguez). + +20110423 + + add check in test/configure for use_window, use_screen. + + add configure-checks for getopt's variables, which may be declared + as different types on some Unix systems. + + add check in test/configure for some legacy curses types of the + function pointer passed to tputs(). + + modify init_pair() to accept -1's for color value after + assume_default_colors() has been called (Debian #337095). + + modify test/background.c, adding commmand-line options to demonstrate + assume_default_colors() and use_default_colors(). + +20110416 + + modify configure script/source-code to only define _POSIX_SOURCE if + the checks for sigaction and/or termios fail, and if _POSIX_C_SOURCE + and _XOPEN_SOURCE are undefined (report by Valentin Ochs). + + update config.guess, config.sub + +20110409 + + fixes to build c++ binding with clang 3.0 (patch by Alexander + Kolesen). + + add check for unctrl.h in test/configure, to work around breakage in + some ncurses packages. + + add "--disable-widec" option to test/configure script. + + add "--with-curses-colr" and "--with-curses-5lib" options to the + test/configure script to address testing with very old machines. + +20110404 5.9 release for upload to ftp.gnu.org + +20110402 + + various build-fixes for the rpm/dpkg scripts. + + add "--enable-rpath-link" option to Ada95/configure, to allow + packages to suppress the rpath feature which is normally used for + the in-tree build of sample programs. + + corrected definition of libdir variable in Ada95/src/Makefile.in, + needed for rpm script. + + add "--with-shared" option to Ada95/configure script, to allow + making the C-language parts of the binding use appropriate compiler + options if building a shared library with gnat. + +20110329 + > portability fixes for Ada95 binding: + + add configure check to ensure that SIGINT works with gnat. This is + needed for the "rain" sample program. If SIGINT does not work, omit + that sample program. + + correct typo in check of $PKG_CONFIG variable in Ada95/configure + + add ncurses_compat.c, to supply functions used in the Ada95 binding + which were added in 5.7 and later. + + modify sed expression in CF_NCURSES_ADDON to eliminate a dependency + upon GNU sed. + +20110326 + + add special check in Ada95/configure script for ncurses6 reentrant + code. + + regen Ada html documentation. + + build-fix for Ada shared libraries versus the varargs workaround. + + add rpm and dpkg scripts for Ada95 and test directories, for test + builds. + + update test/configure macros CF_CURSES_LIBS, CF_XOPEN_SOURCE and + CF_X_ATHENA_LIBS. + + add configure check to determine if gnat's project feature supports + libraries, i.e., collections of .ali files. + + make all dereferences in Ada95 samples explicit. + + fix typo in comment in lib_add_wch.c (patch by Petr Pavlu). + + add configure check for, ifdef's for math.h which is in a separate + package on Solaris and potentially not installed (report by Petr + Pavlu). + > fixes for Ada95 binding (Nicolas Boulenguez): + + improve type-checking in Ada95 by eliminating a few warning-suppress + pragmas. + + suppress unreferenced warnings. + + make all dereferences in binding explicit. + +20110319 + + regen Ada html documentation. + + change order of -I options from ncurses*-config script when the + --disable-overwrite option was used, so that the subdirectory include + is listed first. + + modify the make-tar.sh scripts to add a MANIFEST and NEWS file. + + modify configure script to provide value for HTML_DIR in + Ada95/gen/Makefile.in, which depends on whether the Ada95 binding is + distributed separately (report by Nicolas Boulenguez). + + modify configure script to add "-g" and/or "-O3" to ADAFLAGS if the + CFLAGS for the build has these options. + + amend change from 20070324, to not add 1 to the result of getmaxx + and getmaxy in the Ada binding (report by Nicolas Boulenguez for + thread in comp.lang.ada). + + build-fix Ada95/samples for gnat 4.5 + + spelling fixes for Ada95/samples/explain.txt + > fixes for Ada95 binding (Nicolas Boulenguez): + + add item in Trace_Attribute_Set corresponding to TRACE_ATTRS. + + add workaround for binding to set_field_type(), which uses varargs. + The original binding from 990220 relied on the prevalent + implementation of varargs which did not support or need va_copy(). + + add dependency on gen/Makefile.in needed for *-panels.ads + + add Library_Options to library.gpr + + add Languages to library.gpr, for gprbuild + +20110307 + + revert changes to limit-checks from 20110122 (Debian #616711). + > minor type-cleanup of Ada95 binding (Nicolas Boulenguez): + + corrected a minor sign error in a field of Low_Level_Field_Type, to + conform to form.h. + + replaced C_Int by Curses_Bool as return type for some callbacks, see + fieldtype(3FORM). + + modify samples/sample-explain.adb to provide explicit message when + explain.txt is not found. + +20110305 + + improve makefiles for Ada95 tree (patch by Nicolas Boulenguez). + + fix an off-by-one error in _nc_slk_initialize() from 20100605 fixes + for compiler warnings (report by Nicolas Boulenguez). + + modify Ada95/gen/gen.c to declare unused bits in generated layouts, + needed to compile when chtype is 64-bits using gnat 4.4.5 + +20110226 5.8 release for upload to ftp.gnu.org + +20110226 + + update release notes, for 5.8. + + regenerated html manpages. + + change open() in _nc_read_file_entry() to fopen() for consistency + with write_file(). + + modify misc/run_tic.in to create parent directory, in case this is + a new install of hashed database. + + fix typo in Ada95/mk-1st.awk which causes error with original awk. + +20110220 + + configure script rpath fixes from xterm #269. + + workaround for cygwin's non-functional features.h, to force ncurses' + configure script to define _XOPEN_SOURCE_EXTENDED when building + wide-character configuration. + + build-fix in run_tic.sh for OS/2 EMX install + + add cons25-debian entry (patch by Brian M Carlson, Debian #607662). + +20110212 + + regenerated html manpages. + + use _tracef() in show_where() function of tic, to work correctly with + special case of trace configuration. + +20110205 + + add xterm-utf8 entry as a demo of the U8 feature -TD + + add U8 feature to denote entries for terminal emulators which do not + support VT100 SI/SO when processing UTF-8 encoding -TD + + improve the NCURSES_NO_UTF8_ACS feature by adding a check for an + extended terminfo capability U8 (prompted by mailing list + discussion). + +20110122 + + start documenting interface changes for upcoming 5.8 release. + + correct limit-checks in derwin(). + + correct limit-checks in newwin(), to ensure that windows have nonzero + size (report by Garrett Cooper). + + fix a missing "weak" declaration for pthread_kill (patch by Nicholas + Alcock). + + improve documentation of KEY_ENTER in curs_getch.3x manpage (prompted + by discussion with Kevin Martin). + +20110115 + + modify Ada95/configure script to make the --with-curses-dir option + work without requiring the --with-ncurses option. + + modify test programs to allow them to be built with NetBSD curses. + + document thick- and double-line symbols in curs_add_wch.3x manpage. + + document WACS_xxx constants in curs_add_wch.3x manpage. + + fix some warnings for clang 2.6 "--analyze" + + modify Ada95 makefiles to make html-documentation with the project + file configuration if that is used. + + update config.guess, config.sub + +20110108 + + regenerated html manpages. + + minor fixes to enable lint when trace is not enabled, e.g., with + clang --analyze. + + fix typo in man/default_colors.3x (patch by Tim van der Molen). + + update ncurses/llib-lncurses* + +20110101 + + fix remaining strict compiler warnings in ncurses library ABI=5, + except those dealing with function pointers, etc. + +20101225 + + modify nc_tparm.h, adding guards against repeated inclusion, and + allowing TPARM_ARG to be overridden. + + fix some strict compiler warnings in ncurses library. + +20101211 + + suppress ncv in screen entry, allowing underline (patch by Alejandro + R Sedeno). + + also suppress ncv in konsole-base -TD + + fixes in wins_nwstr() and related functions to ensure that special + characters, i.e., control characters are handled properly with the + wide-character configuration. + + correct a comparison in wins_nwstr() (Redhat #661506). + + correct help-messages in some of the test-programs, which still + referred to quitting with 'q'. + +20101204 + + add special case to _nc_infotocap() to recognize the setaf/setab + strings from xterm+256color and xterm+88color, and provide a reduced + version which works with termcap. + + remove obsolete emacs "Local Variables" section from documentation + (request by Sven Joachim). + + update doc/html/index.html to include NCURSES-Programming-HOWTO.html + (report by Sven Joachim). + +20101128 + + modify test/configure and test/Makefile.in to handle this special + case of building within a build-tree (Debian #34182): + mkdir -p build && cd build && ../test/configure && make + +20101127 + + miscellaneous build-fixes for Ada95 and test-directories when built + out-of-tree. + + use VPATH in makefiles to simplify out-of-tree builds (Debian #34182). + + fix typo in rmso for tek4106 entry -Goran Weinholt + +20101120 + + improve checks in test/configure for X libraries, from xterm #267 + changes. + + modify test/configure to allow it to use the build-tree's libraries + e.g., when using that to configure the test-programs without the + rpath feature (request by Sven Joachim). + + repurpose "gnome" terminfo entries as "vte", retaining "gnome" items + for compatibility, but generally deprecating those since the VTE + library is what actually defines the behavior of "gnome", etc., + since 2003 -TD + +20101113 + + compiler warning fixes for test programs. + + various build-fixes for test-programs with pdcurses. + + updated configure checks for X packages in test/configure from xterm + #267 changes. + + add configure check to gnatmake, to accommodate cygwin. + +20101106 + + correct list of sub-directories needed in Ada95 tree for building as + a separate package. + + modify scripts in test-directory to improve builds as a separate + package. + +20101023 + + correct parsing of relative tab-stops in tabs program (report by + Philip Ganchev). + + adjust configure script so that "t" is not added to library suffix + when weak-symbols are used, allowing the pthread configuration to + more closely match the non-thread naming (report by Werner Fink). + + modify configure check for tic program, used for fallbacks, to a + warning if not found. This makes it simpler to use additional + scripts to bootstrap the fallbacks code using tic from the build + tree (report by Werner Fink). + + fix several places in configure script using ${variable-value} form. + + modify configure macro CF_LDFLAGS_STATIC to accommodate some loaders + which do not support selectively linking against static libraries + (report by John P. Hartmann) + + fix an unescaped dash in man/tset.1 (report by Sven Joachim). + +20101009 + + correct comparison used for setting 16-colors in linux-16color + entry (Novell #644831) -TD + + improve linux-16color entry, using "dim" for color-8 which makes it + gray rather than black like color-0 -TD + + drop misc/ncu-indent and misc/jpf-indent; they are provided by an + external package "cindent". + +20101002 + + improve linkages in html manpages, adding references to the newer + pages, e.g., *_variables, curs_sp_funcs, curs_threads. + + add checks in tic for inconsistent cursor-movement controls, and for + inconsistent printer-controls. + + fill in no-parameter forms of cursor-movement where a parameterized + form is available -TD + + fill in missing cursor controls where the form of the controls is + ANSI -TD + + fix inconsistent punctuation in form_variables manpage (patch by + Sven Joachim). + + add parameterized cursor-controls to linux-basic (report by Dae) -TD + > patch by Juergen Pfeifer: + + document how to build 32-bit libraries in README.MinGW + + fixes to filename computation in mk-dlls.sh.in + + use POSIX locale in mk-dlls.sh.in rather than en_US (report by Sven + Joachim). + + add a check in mk-dlls.sh.in to obtain the size of a pointer to + distinguish between 32-bit and 64-bit hosts. The result is stored + in mingw_arch + +20100925 + + add "XT" capability to entries for terminals that support both + xterm-style mouse- and title-controls, for "screen" which + special-cases TERM beginning with "xterm" or "rxvt" -TD + > patch by Juergen Pfeifer: + + use 64-Bit MinGW toolchain (recommended package from TDM, see + README.MinGW). + + support pthreads when using the TDM MinGW toolchain + +20100918 + + regenerated html manpages. + + minor fixes for symlinks to curs_legacy.3x and curs_slk.3x manpages. + + add manpage for sp-funcs. + + add sp-funcs to test/listused.sh, for documentation aids. + +20100911 + + add manpages for summarizing public variables of curses-, terminfo- + and form-libraries. + + minor fixes to manpages for consistency (patch by Jason McIntyre). + + modify tic's -I/-C dump to reformat acsc strings into canonical form + (sorted, unique mapping) (cf: 971004). + + add configure check for pthread_kill(), needed for some old + platforms. + +20100904 + + add configure option --without-tests, to suppress building test + programs (request by Frederic L W Meunier). + +20100828 + + modify nsterm, xnuppc and tek4115 to make sgr/sgr0 consistent -TD + + add check in terminfo source-reader to provide more informative + message when someone attempts to run tic on a compiled terminal + description (prompted by Debian #593920). + + note in infotocap and captoinfo manpages that they read terminal + descriptions from text-files (Debian #593920). + + improve acsc string for vt52, show arrow keys (patch by Benjamin + Sittler). + +20100814 + + document in manpages that "mv" functions first use wmove() to check + the window pointer and whether the position lies within the window + (suggested by Poul-Henning Kamp). + + fixes to curs_color.3x, curs_kernel.3x and wresize.3x manpages (patch + by Tim van der Molen). + + modify configure script to transform library names for tic- and + tinfo-libraries so that those build properly with Mac OS X shared + library configuration. + + modify configure script to ensure that it removes conftest.dSYM + directory leftover on checks with Mac OS X. + + modify configure script to cleanup after check for symbolic links. + +20100807 + + correct a typo in mk-1st.awk (patch by Gabriele Balducci) + (cf: 20100724) + + improve configure checks for location of tic and infocmp programs + used for installing database and for generating fallback data, + e.g., for cross-compiling. + + add Markus Kuhn's wcwidth function for compiling MinGW + + add special case to CF_REGEX for cross-compiling to MinGW target. + +20100731 + + modify initialization check for win32con driver to eliminate need for + special case for TERM "unknown", using terminal database if available + (prompted by discussion with Roumen Petrov). + + for MinGW port, ensure that terminal driver is setup if tgetent() + is called (patch by Roumen Petrov). + + document tabs "-0" and "-8" options in manpage. + + fix Debian "lintian" issues with manpages reported in + http://lintian.debian.org/full/csmall@debian.org.html#ncurses + +20100724 + + add a check in tic for missing set_tab if clear_all_tabs given. + + improve use of symbolic links in makefiles by using "-f" option if + it is supported, to eliminate temporary removal of the target + (prompted by http://www.t2-project.org/packages/ncurses.html) + + minor improvement to test/ncurses.c, reset color pairs in 'd' test + after exit from 'm' main-menu command. + + improved ncu-indent, from mawk changes, allows more than one of + GCC_NORETURN, GCC_PRINTFLIKE and GCC_SCANFLIKE on a single line. + +20100717 + + add hard-reset for rs2 to wsvt25 to help ensure that reset ends + the alternate character set (patch by Nicholas Marriott) + + remove tar-copy.sh and related configure/Makefile chunks, since the + Ada95 binding is now installed using rules in Ada95/src. + +20100703 + + continue integrating changes to use gnatmake project files in Ada95 + + add/use configure check to turn on project rules for Ada95/src. + + revert the vfork change from 20100130, since it does not work. + +20100626 + + continue integrating changes to use gnatmake project files in Ada95 + + old gnatmake (3.15) does not produce libraries using project-file; + work around by adding script to generate alternate makefile. + +20100619 + + continue integrating changes to use gnatmake project files in Ada95 + + add configure --with-ada-sharedlib option, for the test_make rule. + + move Ada95-related logic into aclocal.m4, since additional checks + will be needed to distinguish old/new implementations of gnat. + +20100612 + + start integrating changes to use gnatmake project files in Ada95 tree + + add test_make / test_clean / test_install rules in Ada95/src + + change install-path for adainclude directory to /usr/share/ada (was + /usr/lib/ada). + + update Ada95/configure. + + add mlterm+256color entry, for mlterm 3.0.0 -TD + + modify test/configure to use macros to ensure consistent order + of updating LIBS variable. + +20100605 + + change search order of options for Solaris in CF_SHARED_OPTS, to + work with 64-bit compiles. + + correct quoting of assignment in CF_SHARED_OPTS case for aix + (cf: 20081227) + +20100529 + + regenerated html documentation. + + modify test/configure to support pkg-config for checking X libraries + used by PDCurses. + + add/use configure macro CF_ADD_LIB to force consistency of + assignments to $LIBS, etc. + + fix configure script for combining --with-pthread + and --enable-weak-symbols options. + +20100522 + + correct cross-compiling configure check for CF_MKSTEMP macro, by + adding a check cache variable set by AC_CHECK_FUNC (report by + Pierre Labastie). + + simplify include-dependencies of make_hash and make_keys, to reduce + the need for setting BUILD_CPPFLAGS in cross-compiling when the + build- and target-machines differ. + + repair broken-linker configuration by restoring a definition of SP + variable to curses.priv.h, and adjusting for cases where sp-funcs + are used. + + improve configure macro CF_AR_FLAGS, allowing ARFLAGS environment + variable to override (prompted by report by Pablo Cazallas). + +20100515 + + add configure option --enable-pthreads-eintr to control whether the + new EINTR feature is enabled. + + modify logic in pthread configuration to allow EINTR to interrupt + a read operation in wgetch() (Novell #540571, patch by Werner Fink). + + drop mkdirs.sh, use "mkdir -p". + + add configure option --disable-libtool-version, to use the + "-version-number" feature which was added in libtool 1.5 (report by + Peter Haering). The default value for the option uses the newer + feature, which makes libraries generated using libtool compatible + with the standard builds of ncurses. + + updated test/configure to match configure script macros. + + fixes for configure script from lynx changes: + + improve CF_FIND_LINKAGE logic for the case where a function is + found in predefined libraries. + + revert part of change to CF_HEADER (cf: 20100424) + +20100501 + + correct limit-check in wredrawln, accounting for begy/begx values + (patch by David Benjamin). + + fix most compiler warnings from clang. + + amend build-fix for OpenSolaris, to ensure that a system header is + included in curses.h before testing feature symbols, since they + may be defined by that route. + +20100424 + + fix some strict compiler warnings in ncurses library. + + modify configure macro CF_HEADER_PATH to not look for variations in + the predefined include directories. + + improve configure macros CF_GCC_VERSION and CF_GCC_WARNINGS to work + with gcc 4.x's c89 alias, which gives warning messages for cases + where older versions would produce an error. + +20100417 + + modify _nc_capcmp() to work with cancelled strings. + + correct translation of "^" in _nc_infotocap(), used to transform + terminfo to termcap strings + + add configure --disable-rpath-hack, to allow disabling the feature + which adds rpath options for libraries in unusual places. + + improve CF_RPATH_HACK_2 by checking if the rpath option for a given + directory was already added. + + improve CF_RPATH_HACK_2 by using ldd to provide a standard list of + directories (which will be ignored). + +20100410 + + improve win_driver.c handling of mouse: + + discard motion events + + avoid calling _nc_timed_wait when there is a mouse event + + handle 4th and "rightmost" buttons. + + quote substitutions in CF_RPATH_HACK_2 configure macro, needed for + cases where there are embedded blanks in the rpath option. + +20100403 + + add configure check for exctags vs ctags, to work around pkgsrc. + + simplify logic in _nc_get_screensize() to make it easier to see how + environment variables may override system- and terminfo-values + (prompted by discussion with Igor Bujna). + + make debug-traces for COLOR_PAIR and PAIR_NUMBER less verbose. + + improve handling of color-pairs embedded in attributes for the + extended-colors configuration. + + modify MKlib_gen.sh to build link_test with sp-funcs. + + build-fixes for OpenSolaris aka Solaris 11, for wide-character + configuration as well as for rpath feature in *-config scripts. + +20100327 + + refactor CF_SHARED_OPTS configure macro, making CF_RPATH_HACK more + reusable. + + improve configure CF_REGEX, similar fixes. + + improve configure CF_FIND_LINKAGE, adding add check between system + (default) and explicit paths, where we can find the entrypoint in the + given library. + + add check if Gpm_Open() returns a -2, e.g., for "xterm". This is + normally suppressed but can be overridden using $NCURSES_GPM_TERMS. + Ensure that Gpm_Close() is called in this case. + +20100320 + + rename atari and st52 terminfo entries to atari-old, st52-old, use + newer entries from FreeMiNT by Guido Flohr (from patch/report by Alan + Hourihane). + +20100313 + + modify install-rule for manpages so that *-config manpages will + install when building with --srcdir (report by Sven Joachim). + + modify CF_DISABLE_LEAKS configure macro so that the --enable-leaks + option is not the same as --disable-leaks (GenToo #305889). + + modify #define's for build-compiler to suppress cchar_t symbol from + compile of make_hash and make_keys, improving cross-compilation of + ncursesw (report by Bernhard Rosenkraenzer). + + modify CF_MAN_PAGES configure macro to replace all occurrences of + TPUT in tput.1's manpage (Debian #573597, report/analysis by Anders + Kaseorg). + +20100306 + + generate manpages for the *-config scripts, adapted from help2man + (suggested by Sven Joachim). + + use va_copy() in _nc_printf_string() to avoid conflicting use of + va_list value in _nc_printf_length() (report by Wim Lewis). + +20100227 + + add Ada95/configure script, to use in tar-file created by + Ada95/make-tar.sh + + fix typo in wresize.3x (patch by Tim van der Molen). + + modify screen-bce.XXX entries to exclude ech, since screen's color + model does not clear with color for that feature -TD + +20100220 + + add make-tar.sh scripts to Ada95 and test subdirectories to help with + making those separately distributable. + + build-fix for static libraries without dlsym (Debian #556378). + + fix a syntax error in man/form_field_opts.3x (patch by Ingo + Schwarze). + +20100213 + + add several screen-bce.XXX entries -TD + +20100206 + + update mrxvt terminfo entry -TD + + modify win_driver.c to support mouse single-clicks. + + correct name for termlib in ncurses*-config, e.g., if it is renamed + to provide a single file for ncurses/ncursesw libraries (patch by + Miroslav Lichvar). + +20100130 + + use vfork in test/ditto.c if available (request by Mike Frysinger). + + miscellaneous cleanup of manpages. + + fix typo in curs_bkgd.3x (patch by Tim van der Molen). + + build-fix for --srcdir (patch by Miroslav Lichvar). + +20100123 + + for term-driver configuration, ensure that the driver pointer is + initialized in setupterm so that terminfo/termcap programs work. + + amend fix for Debian #542031 to ensure that wattrset() returns only + OK or ERR, rather than the attribute value (report by Miroslav + Lichvar). + + reorder WINDOWLIST to put WINDOW data after SCREEN pointer, making + _nc_screen_of() compatible between normal/wide libraries again (patch + by Miroslav Lichvar) + + review/fix include-dependencies in modules files (report by Miroslav + Lichvar). + +20100116 + + modify win_driver.c to initialize acs_map for win32 console, so + that line-drawing works. + + modify win_driver.c to initialize TERMINAL struct so that programs + such as test/lrtest.c and test/ncurses.c which test string + capabilities can run. + + modify term-driver modules to eliminate forward-reference + declarations. + +20100109 + + modify configure macro CF_XOPEN_SOURCE, etc., to use CF_ADD_CFLAGS + consistently to add new -D's while removing duplicates. + + modify a few configure macros to consistently put new options + before older in the list. + + add tiparm(), based on review of X/Open Curses Issue 7. + + minor documentation cleanup. + + update config.guess, config.sub from + http://savannah.gnu.org/projects/config + (caveat - its maintainer put 2010 copyright date on files dated 2009) + +20100102 + + minor improvement to tic's checking of similar SGR's to allow for the + most common case of SGR 0. + + modify getmouse() to act as its documentation implied, returning on + each call the preceding event until none are left. When no more + events remain, it will return ERR. + +20091227 + + change order of lookup in progs/tput.c, looking for terminfo data + first. This fixes a confusion between termcap "sg" and terminfo + "sgr" or "sgr0", originally from 990123 changes, but exposed by + 20091114 fixes for hashing. With this change, only "dl" and "ed" are + ambiguous (Mandriva #56272). + +20091226 + + add bterm terminfo entry, based on bogl 0.1.18 -TD + + minor fix to rxvt+pcfkeys terminfo entry -TD + + build-fixes for Ada95 tree for gnat 4.4 "style". + +20091219 + + remove old check in mvderwin() which prevented moving a derived + window whose origin happened to coincide with its parent's origin + (report by Katarina Machalkova). + + improve test/ncurses.c to put mouse droppings in the proper window. + + update minix terminfo entry -TD + + add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler) + +20091212 + + correct transfer of multicolumn characters in multirow + field_buffer(), which stopped at the end of the first row due to + filling of unused entries in a cchar_t array with nulls. + + updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta) + + modify _nc_viscbuf2() and _tracecchar_t2() to show wide-character + nulls. + + use strdup() in set_menu_mark(), restore .marklen struct member on + failure. + + eliminate clause 3 from the UCB copyrights in read_termcap.c and + tset.c per + ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change + (patch by Nicholas Marriott). + + replace a malloc in tic.c with strdup, checking for failure (patch by + Nicholas Marriott). + + update config.guess, config.sub from + http://savannah.gnu.org/projects/config + +20091205 + + correct layout of working window used to extract data in + wide-character configured by set_field_buffer (patch by Rafael + Garrido Fernandez) + + improve some limit-checks related to filename length in reading and + writing terminfo entries. + + ensure that filename is always filled in when attempting to read + a terminfo entry, so that infocmp can report the filename (patch + by Nicholas Marriott). + +20091128 + + modify mk-1st.awk to allow tinfo library to be built when term-driver + is enabled. + + add error-check to configure script to ensure that sp-funcs is + enabled if term-driver is, since some internal interfaces rely upon + this. + +20091121 + + fix case where progs/tput is used while sp-funcs is configure; this + requires save/restore of out-character function from _nc_prescreen + rather than the SCREEN structure (report by Charles Wilson). + + fix typo in man/curs_trace.3x which caused incorrect symbolic links + + improved configure macros CF_GCC_ATTRIBUTES, CF_PROG_LINT. + +20091114 + + updated man/curs_trace.3x + + limit hashing for termcap-names to 2-characters (Ubuntu #481740). + + change a variable name in lib_newwin.c to make it clearer which + value is being freed on error (patch by Nicholas Marriott). + +20091107 + + improve test/ncurses.c color-cycling test by reusing attribute- + and color-cycling logic from the video-attributes screen. + + add ifdef'd with NCURSES_INTEROP_FUNCS experimental bindings in form + library which help make it compatible with interop applications + (patch by Juergen Pfeifer). + + add configure option --enable-interop, for integrating changes + for generic/interop support to form-library by Juergen Pfeifer + +20091031 + + modify use of $CC environment variable which is defined by X/Open + as a curses feature, to ignore it if it is not a single character + (prompted by discussion with Benjamin C W Sittler). + + add START_TRACE in slk_init + + fix a regression in _nc_ripoffline which made test/ncurses.c not show + soft-keys, broken in 20090927 merging. + + change initialization of "hidden" flag for soft-keys from true to + false, broken in 20090704 merging (Ubuntu #464274). + + update nsterm entries (patch by Benjamin C W Sittler, prompted by + discussion with Fabian Groffen in GenToo #206201). + + add test/xterm-256color.dat + +20091024 + + quiet some pedantic gcc warnings. + + modify _nc_wgetch() to check for a -1 in the fifo, e.g., after a + SIGWINCH, and discard that value, to avoid confusing application + (patch by Eygene Ryabinkin, FreeBSD #136223). + +20091017 + + modify handling of $PKG_CONFIG_LIBDIR to use only the first item in + a possibly colon-separated list (Debian #550716). + +20091010 + + supply a null-terminator to buffer in _nc_viswibuf(). + + fix a sign-extension bug in unget_wch() (report by Mike Gran). + + minor fixes to error-returns in default function for tputs, as well + as in lib_screen.c + +20091003 + + add WACS_xxx definitions to wide-character configuration for thick- + and double-lines (discussion with Slava Zanko). + + remove unnecessary kcan assignment to ^C from putty (Sven Joachim) + + add ccc and initc capabilities to xterm-16color -TD + > patch by Benjamin C W Sittler: + + add linux-16color + + correct initc capability of linux-c-nc end-of-range + + similar change for dg+ccc and dgunix+ccc + +20090927 + + move leak-checking for comp_captab.c into _nc_leaks_tinfo() since + that module since 20090711 is in libtinfo. + + add configure option --enable-term-driver, to allow compiling with + terminal-driver. That is used in MinGW port, and (being somewhat + more complicated) is an experimental alternative to the conventional + termlib internals. Currently, it requires the sp-funcs feature to + be enabled. + + completed integrating "sp-funcs" by Juergen Pfeifer in ncurses + library (some work remains for forms library). + +20090919 + + document return code from define_key (report by Mike Gran). + + make some symbolic links in the terminfo directory-tree shorter + (patch by Daniel Jacobowitz, forwarded by Sven Joachim).). + + fix some groff warnings in terminfo.5, etc., from recent Debian + changes. + + change ncv and op capabilities in sun-color terminfo entry to match + Sun's entry for this (report by Laszlo Peter). + + improve interix smso terminfo capability by using reverse rather than + bold (report by Kristof Zelechovski). + +20090912 + + add some test programs (and make these use the same special keys + by sharing linedata.h functions): + test/test_addstr.c + test/test_addwstr.c + test/test_addchstr.c + test/test_add_wchstr.c + + correct internal _nc_insert_ch() to use _nc_insert_wch() when + inserting wide characters, since the wins_wch() function that it used + did not update the cursor position (report by Ciprian Craciun). + +20090906 + + fix typo s/is_timeout/is_notimeout/ which made "man is_notimeout" not + work. + + add null-pointer checks to other opaque-functions. + + add is_pad() and is_subwin() functions for opaque access to WINDOW + (discussion with Mark Dickinson). + + correct merge to lib_newterm.c, which broke when sp-funcs was + enabled. + +20090905 + + build-fix for building outside source-tree (report by Sven Joachim). + + fix Debian lintian warning for man/tabs.1 by making section number + agree with file-suffix (report by Sven Joachim). + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090829 + + workaround for bug in g++ 4.1-4.4 warnings for wattrset() macro on + amd64 (Debian #542031). + + fix typo in curs_mouse.3x (Debian #429198). + +20090822 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090815 + + correct use of terminfo capabilities for initializing soft-keys, + broken in 20090510 merging. + + modify wgetch() to ensure it checks SIGWINCH when it gets an error + in non-blocking mode (patch by Clemens Ladisch). + + use PATH_SEPARATOR symbol when substituting into run_tic.sh, to + help with builds on non-Unix platforms such as OS/2 EMX. + + modify scripting for misc/run_tic.sh to test configure script's + $cross_compiling variable directly rather than comparing host/build + compiler names (prompted by comment in GenToo #249363). + + fix configure script option --with-database, which was coded as an + enable-type switch. + + build-fixes for --srcdir (report by Frederic L W Meunier). + +20090808 + + separate _nc_find_entry() and _nc_find_type_entry() from + implementation details of hash function. + +20090803 + + add tabs.1 to man/man_db.renames + + modify lib_addch.c to compensate for removal of wide-character test + from unctrl() in 20090704 (Debian #539735). + +20090801 + + improve discussion in INSTALL for use of system's tic/infocmp for + cross-compiling and building fallbacks. + + modify test/demo_termcap.c to correspond better to options in + test/demo_terminfo.c + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + + fix logic for 'V' in test/ncurses.c tests f/F. + +20090728 + + correct logic in tigetnum(), which caused tput program to treat all + string capabilities as numeric (report by Rajeev V Pillai, + cf: 20090711). + +20090725 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090718 + + fix a null-pointer check in _nc_format_slks() in lib_slk.c, from + 20090704 changes. + + modify _nc_find_type_entry() to use hashing. + + make CCHARW_MAX value configurable, noting that changing this would + change the size of cchar_t, and would be ABI-incompatible. + + modify test-programs, e.g,. test/view.c, to address subtle + differences between Tru64/Solaris and HPUX/AIX getcchar() return + values. + + modify length returned by getcchar() to count the trailing null + which is documented in X/Open (cf: 20020427). + + fixes for test programs to build/work on HPUX and AIX, etc. + +20090711 + + improve performance of tigetstr, etc., by using hashing code from tic. + + minor fixes for memory-leak checking. + + add test/demo_terminfo, for comparison with demo_termcap + +20090704 + + remove wide-character checks from unctrl() (patch by Clemens Ladisch). + + revise wadd_wch() and wecho_wchar() to eliminate dependency on + unctrl(). + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090627 + + update llib-lncurses[wt] to use sp-funcs. + + various code-fixes to build/work with --disable-macros configure + option. + + add several new files from Juergen Pfeifer which will be used when + integration of "sp-funcs" is complete. This includes a port to + MinGW. + +20090613 + + move definition for NCURSES_WRAPPED_VAR back to ncurses_dll.h, to + make includes of term.h without curses.h work (report by "Nix"). + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090607 + + fix a regression in lib_tputs.c, from ongoing merges. + +20090606 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090530 + + fix an infinite recursion when adding a legacy-coding 8-bit value + using insch() (report by Clemens Ladisch). + + free home-terminfo string in del_curterm() (patch by Dan Weber). + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090523 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090516 + + work around antique BSD game's manipulation of stdscr, etc., versus + SCREEN's copy of the pointer (Debian #528411). + + add a cast to wattrset macro to avoid compiler warning when comparing + its result against ERR (adapted from patch by Matt Kraii, Debian + #528374). + +20090510 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090502 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + + add vwmterm terminfo entry (patch by Bryan Christ). + +20090425 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090419 + + build fix for _nc_free_and_exit() change in 20090418 (report by + Christian Ebert). + +20090418 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090411 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + This change finishes merging for menu and panel libraries, does + part of the form library. + +20090404 + + suppress configure check for static/dynamic linker flags for gcc on + Darwin (report by Nelson Beebe). + +20090328 + + extend ansi.sys pfkey capability from kf1-kf10 to kf1-kf48, moving + function key definitions from emx-base for consistency -TD + + correct missing final 'p' in pfkey capability of ansi.sys-old (report + by Kalle Olavi Niemitalo). + + improve test/ncurses.c 'F' test, show combining characters in color. + + quiet a false report by cppcheck in c++/cursesw.cc by eliminating + a temporary variable. + + use _nc_doalloc() rather than realloc() in a few places in ncurses + library to avoid leak in out-of-memory condition (reports by William + Egert and Martin Ettl based on cppcheck tool). + + add --with-ncurses-wrap-prefix option to test/configure (discussion + with Charles Wilson). + + use ncurses*-config scripts if available for test/configure. + + update test/aclocal.m4 and test/configure + > patches by Charles Wilson: + + modify CF_WITH_LIBTOOL configure check to allow unreleased libtool + version numbers (e.g. which include alphabetic chars, as well as + digits, after the final '.'). + + improve use of -no-undefined option for libtool by setting an + intermediate variable LT_UNDEF in the configure script, and then + using that in the libtool link-commands. + + fix an missing use of NCURSES_PUBLIC_VAR() in tinfo/MKcodes.awk + from 20090321 changes. + + improve mk-1st.awk script by writing separate cases for the + LIBTOOL_LINK command, depending on which library (ncurses, ticlib, + termlib) is to be linked. + + modify configure.in to allow broken-linker configurations, not just + enable-reentrant, to set public wrap prefix. + +20090321 + + add TICS_LIST and SHLIB_LIST to allow libtool 2.2.6 on Cygwin to + build with tic and term libraries (patch by Charles Wilson). + + add -no-undefined option to libtool for Cygwin, MinGW, U/Win and AIX + (report by Charles Wilson). + + fix definition for c++/Makefile.in's SHLIB_LIST, which did not list + the form, menu or panel libraries (patch by Charles Wilson). + + add configure option --with-wrap-prefix to allow setting the prefix + for functions used to wrap global variables to something other than + "_nc_" (discussion with Charles Wilson). + +20090314 + + modify scripts to generate ncurses*-config and pc-files to add + dependency for tinfo library (patch by Charles Wilson). + + improve comparison of program-names when checking for linked flavors + such as "reset" by ignoring the executable suffix (reports by Charles + Wilson, Samuel Thibault and Cedric Bretaudeau on Cygwin mailing + list). + + suppress configure check for static/dynamic linker flags for gcc on + Solaris 10, since gcc is confused by absence of static libc, and + does not switch back to dynamic mode before finishing the libraries + (reports by Joel Bertrand, Alan Pae). + + minor fixes to Intel compiler warning checks in configure script. + + modify _nc_leaks_tinfo() so leak-checking in test/railroad.c works. + + modify set_curterm() to make broken-linker configuration work with + changes from 20090228 (report by Charles Wilson). + +20090228 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + + modify declaration of cur_term when broken-linker is used, but + enable-reentrant is not, to match pre-5.7 (report by Charles Wilson). + +20090221 + + continue integrating "sp-funcs" by Juergen Pfeifer (incomplete). + +20090214 + + add configure script --enable-sp-funcs to enable the new set of + extended functions. + + start integrating patches by Juergen Pfeifer: + + add extended functions which specify the SCREEN pointer for several + curses functions which use the global SP (these are incomplete; + some internals work is needed to complete these). + + add special cases to configure script for MinGW port. + +20090207 + + update several configure macros from lynx changes + + append (not prepend) to CFLAGS/CPPFLAGS + + change variable from PATHSEP to PATH_SEPARATOR + + improve install-rules for pc-files (patch by Miroslav Lichvar). + + make it work with $DESTDIR + + create the pkg-config library directory if needed. + +20090124 + + modify init_pair() to allow caller to create extra color pairs beyond + the color_pairs limit, which use default colors (request by Emanuele + Giaquinta). + + add misc/terminfo.tmp and misc/*.pc to "sources" rule. + + fix typo "==" where "=" is needed in ncurses-config.in and + gen-pkgconfig.in files (Debian #512161). + +20090117 + + add -shared option to MK_SHARED_LIB when -Bsharable is used, for + *BSD's, without which "main" might be one of the shared library's + dependencies (report/analysis by Ken Dickey). + + modify waddch_literal(), updating line-pointer after a multicolumn + character is found to not fit on the current row, and wrapping is + done. Since the line-pointer was not updated, the wrapped + multicolumn character was written to the beginning of the current row + (cf: 20041023, reported by "Nick" regarding problem with ncmpc + http://musicpd.org/mantis/bug_view_page.php?bug_id=1930). + +20090110 + + add screen.Eterm terminfo entry (GenToo #124887) -TD + + modify adacurses-config to look for ".ali" files in the adalib + directory. + + correct install for Ada95, which omitted libAdaCurses.a used in + adacurses-config + + change install for adacurses-config to provide additional flavors + such as adacursesw-config, for ncursesw (GenToo #167849). + +20090105 + + remove undeveloped feature in ncurses-config.in for setting + prefix variable. + + recent change to ncurses-config.in did not take into account the + --disable-overwrite option, which sets $includedir to the + subdirectory and using just that for a -I option does not work - fix + (report by Frederic L W Meunier). + +20090104 + + modify gen-pkgconfig.in to eliminate a dependency on rpath when + deciding whether to add $LIBS to --libs output; that should be shown + for the ncurses and tinfo libraries without taking rpath into + account. + + fix an overlooked change from $AR_OPTS to $ARFLAGS in mk-1st.awk, + used in static libraries (report by Marty Jack). + +20090103 + + add a configure-time check to pick a suitable value for + CC_SHARED_OPTS for Solaris (report by Dagobert Michelsen). + + add configure --with-pkg-config and --enable-pc-files options, along + with misc/gen-pkgconfig.in which can be used to generate ".pc" files + for pkg-config (request by Jan Engelhardt). + + use $includedir symbol in misc/ncurses-config.in, add --includedir + option. + + change makefiles to use $ARFLAGS rather than $AR_OPTS, provide a + configure check to detect whether a "-" is needed before "ar" + options. + + update config.guess, config.sub from + http://savannah.gnu.org/projects/config + +20081227 + + modify mk-1st.awk to work with extra categories for tinfo library. + + modify configure script to allow building shared libraries with gcc + on AIX 5 or 6 (adapted from patch by Lital Natan). + +20081220 + + modify to omit the opaque-functions from lib_gen.o when + --disable-ext-funcs is used. + + add test/clip_printw.c to illustrate how to use printw without + wrapping. + + modify ncurses 'F' test to demo wborder_set() with colored lines. + + modify ncurses 'f' test to demo wborder() with colored lines. + +20081213 + + add check for failure to open hashed-database needed for db4.6 + (GenToo #245370). + + corrected --without-manpages option; previous change only suppressed + the auxiliary rules install.man and uninstall.man + + add case for FreeMINT to configure macro CF_XOPEN_SOURCE (patch from + GenToo #250454). + + fixes from NetBSD port at + http://cvsweb.netbsd.org/bsdweb.cgi/pkgsrc/devel/ncurses/patches + patch-ac (build-fix for DragonFly) + patch-ae (use INSTALL_SCRIPT for installing misc/ncurses*-config). + + improve configure script macros CF_HEADER_PATH and CF_LIBRARY_PATH + by adding CFLAGS, CPPFLAGS and LDFLAGS, LIBS values to the + search-lists. + + correct title string for keybound manpage (patch by Frederic Culot, + OpenBSD documentation/6019), + +20081206 + + move del_curterm() call from _nc_freeall() to _nc_leaks_tinfo() to + work for progs/clear, progs/tabs, etc. + + correct buffer-size after internal resizing of wide-character + set_field_buffer(), broken in 20081018 changes (report by Mike Gran). + + add "-i" option to test/filter.c to tell it to use initscr() rather + than newterm(), to investigate report on comp.unix.programmer that + ncurses would clear the screen in that case (it does not - the issue + was xterm's alternate screen feature). + + add check in mouse-driver to disable connection if GPM returns a + zero, indicating that the connection is closed (Debian #506717, + adapted from patch by Samuel Thibault). + +20081129 + + improve a workaround in adding wide-characters, when a control + character is found. The library (cf: 20040207) uses unctrl() to + obtain a printable version of the control character, but was not + passing color or video attributes. + + improve test/ncurses.c 'a' test, using unctrl() more consistently to + display meta-characters. + + turn on _XOPEN_CURSES definition in curses.h + + add eterm-color entry (report by Vincent Lefevre) -TD + + correct use of key_name() in test/ncurses.c 'A' test, which only + displays wide-characters, not key-codes since 20070612 (report by + Ricardo Cantu). + +20081122 + + change _nc_has_mouse() to has_mouse(), reflect its use in C++ and + Ada95 (patch by Juergen Pfeifer). + + document in TO-DO an issue with Cygwin's package for GNAT (report + by Mike Dennison). + + improve error-checking of command-line options in "tabs" program. + +20081115 + + change several terminfo entries to make consistent use of ANSI + clear-all-tabs -TD + + add "tabs" program (prompted by Debian #502260). + + add configure --without-manpages option (request by Mike Frysinger). + +20081102 5.7 release for upload to ftp.gnu.org + +20081025 + + add a manpage to discuss memory leaks. + + add support for shared libraries for QNX (other than libtool, which + does not work well on that platform). + + build-fix for QNX C++ binding. + +20081018 + + build-fixes for OS/2 EMX. + + modify form library to accept control characters such as newline + in set_field_buffer(), which is compatible with Solaris (report by + Nit Khair). + + modify configure script to assume --without-hashed-db when + --disable-database is used. + + add "-e" option in ncurses/Makefile.in when generating source-files + to force earlier exit if the build environment fails unexpectedly + (prompted by patch by Adrian Bunk). + + change configure script to use CF_UTF8_LIB, improved variant of + CF_LIBUTF8. + +20081012 + + add teraterm4.59 terminfo entry, use that as primary teraterm entry, rename + original to teraterm2.3 -TD + + update "gnome" terminfo to 2.22.3 -TD + + update "konsole" terminfo to 1.6.6, needs today's fix for tic -TD + + add "aterm" terminfo -TD + + add "linux2.6.26" terminfo -TD + + add logic to tic for cancelling strings in user-defined capabilities, + overlooked til now. + +20081011 + + regenerated html documentation. + + add -m and -s options to test/keynames.c and test/key_names.c to test + the meta() function with keyname() or key_name(), respectively. + + correct return value of key_name() on error; it is null. + + document some unresolved issues for rpath and pthreads in TO-DO. + + fix a missing prototype for ioctl() on OpenBSD in tset.c + + add configure option --disable-tic-depends to make explicit whether + tic library depends on ncurses/ncursesw library, amends change from + 20080823 (prompted by Debian #501421). + +20081004 + + some build-fixes for configure --disable-ext-funcs (incomplete, but + works for C/C++ parts). + + improve configure-check for awks unable to handle large strings, e.g. + AIX 5.1 whose awk silently gives up on large printf's. + +20080927 + + fix build for --with-dmalloc by workaround for redefinition of + strndup between string.h and dmalloc.h + + fix build for --disable-sigwinch + + add environment variable NCURSES_GPM_TERMS to allow override to use + GPM on terminals other than "linux", etc. + + disable GPM mouse support when $TERM does not happen to contain + "linux", since Gpm_Open() no longer limits its assertion to terminals + that it might handle, e.g., within "screen" in xterm. + + reset mouse file-descriptor when unloading GPM library (report by + Miroslav Lichvar). + + fix build for --disable-leaks --enable-widec --with-termlib + > patch by Juergen Pfeifer: + + use improved initialization for soft-label keys in Ada95 sample code. + + discard internal symbol _nc_slk_format (unused since 20080112). + + move call of slk_paint_info() from _nc_slk_initialize() to + slk_intern_refresh(), improving initialization. + +20080925 + + fix bug in mouse code for GPM from 20080920 changes (reported in + Debian #500103, also Miroslav Lichvar). + +20080920 + + fix shared-library rules for cygwin with tic- and tinfo-libraries. + + fix a memory leak when failure to connect to GPM. + + correct check for notimeout() in wgetch() (report on linux.redhat + newsgroup by FurtiveBertie). + + add an example warning-suppression file for valgrind, + misc/ncurses.supp (based on example from Reuben Thomas) + +20080913 + + change shared-library configuration for OpenBSD, make rpath work. + + build-fixes for using libutf8, e.g., on OpenBSD 3.7 + +20080907 + + corrected fix for --enable-weak-symbols (report by Frederic L W + Meunier). + +20080906 + + corrected gcc options for building shared libraries on IRIX64. + + add configure check for awk programs unable to handle big-strings, + use that to improve the default for --enable-big-strings option. + + makefile-fixes for --enable-weak-symbols (report by Frederic L W + Meunier). + + update test/configure script. + + adapt ifdef's from library to make test/view.c build when mbrtowc() + is unavailable, e.g., with HPUX 10.20. + + add configure check for wcsrtombs, mbsrtowcs, which are used in + test/ncurses.c, and use wcstombs, mbstowcs instead if available, + fixing build of ncursew for HPUX 11.00 + +20080830 + + fixes to make Ada95 demo_panels() example work. + + modify Ada95 'rain' test program to accept keyboard commands like the + C-version. + + modify BeOS-specific ifdef's to build on Haiku (patch by Scott + Mccreary). + + add configure-check to see if the std namespace is legal for cerr + and endl, to fix a build issue with Tru64. + + consistently use NCURSES_BOOL in lib_gen.c + + filter #line's from lib_gen.c + + change delimiter in MKlib_gen.sh from '%' to '@', to avoid + substitution by IBM xlc to '#' as part of its extensions to digraphs. + + update config.guess, config.sub from + http://savannah.gnu.org/projects/config + (caveat - its maintainer removed support for older Linux systems). + +20080823 + + modify configure check for pthread library to work with OSF/1 5.1, + which uses #define's to associate its header and library. + + use pthread_mutexattr_init() for initializing pthread_mutexattr_t, + makes threaded code work on HPUX 11.23 + + fix a bug in demo_menus in freeing menus (cf: 20080804). + + modify configure script for the case where tic library is used (and + possibly renamed) to remove its dependency upon ncurses/ncursew + library (patch by Dr Werner Fink). + + correct manpage for menu_fore() which gave wrong default for + the attribute used to display a selected entry (report by Mike Gran). + + add Eterm-256color, Eterm-88color and rxvt-88color (prompted by + Debian #495815) -TD + +20080816 + + add configure option --enable-weak-symbols to turn on new feature. + + add configure-check for availability of weak symbols. + + modify linkage with pthread library to use weak symbols so that + applications not linked to that library will not use the mutexes, + etc. This relies on gcc, and may be platform-specific (patch by Dr + Werner Fink). + + add note to INSTALL to document limitation of renaming of tic library + using the --with-ticlib configure option (report by Dr Werner Fink). + + document (in manpage) why tputs does not detect I/O errors (prompted + by comments by Samuel Thibault). + + fix remaining warnings from Klocwork report. + +20080804 + + modify _nc_panelhook() data to account for a permanent memory leak. + + fix memory leaks in test/demo_menus + + fix most warnings from Klocwork tool (report by Larry Zhou). + + modify configure script CF_XOPEN_SOURCE macro to add case for + "dragonfly" from xterm #236 changes. + + modify configure script --with-hashed-db to let $LIBS override the + search for the db library (prompted by report by Samson Pierre). + +20080726 + + build-fixes for gcc 4.3.1 (changes to gnat "warnings", and C inlining + thresholds). + +20080713 + + build-fix (reports by Christian Ebert, Funda Wang). + +20080712 + + compiler-warning fixes for Solaris. + +20080705 + + use NCURSES_MOUSE_MASK() in definition of BUTTON_RELEASE(), etc., to + make those work properly with the "--enable-ext-mouse" configuration + (cf: 20050205). + + improve documentation of build-cc options in INSTALL. + + work-around a bug in gcc 4.2.4 on AIX, which does not pass the + -static/-dynamic flags properly to linker, causing test/bs to + not link. + +20080628 + + correct some ifdef's needed for the broken-linker configuration. + + make debugging library's $BAUDRATE feature work for termcap + interface. + + make $NCURSES_NO_PADDING feature work for termcap interface (prompted + by comment on FreeBSD mailing list). + + add screen.mlterm terminfo entry -TD + + improve mlterm and mlterm+pcfkeys terminfo entries -TD + +20080621 + + regenerated html documentation. + + expand manpage description of parameters for form_driver() and + menu_driver() (prompted by discussion with Adam Spragg). + + add null-pointer checks for cur_term in baudrate() and + def_shell_mode(), def_prog_mode() + + fix some memory leaks in delscreen() and wide acs. + +20080614 + + modify test/ditto.c to illustrate multi-threaded use_screen(). + + change CC_SHARED_OPTS from -KPIC to -xcode=pic32 for Solaris. + + add "-shared" option to MK_SHARED_LIB for gcc on Solaris (report + by Poor Yorick). + +20080607 + + finish changes to wgetch(), making it switch as needed to the + window's actual screen when calling wrefresh() and wgetnstr(). That + allows wgetch() to get used concurrently in different threads with + some minor restrictions, e.g., the application should not delete a + window which is being used in a wgetch(). + + simplify mutex's, combining the window- and screen-mutex's. + +20080531 + + modify wgetch() to use the screen which corresponds to its window + parameter rather than relying on SP; some dependent functions still + use SP internally. + + factor out most use of SP in lib_mouse.c, using parameter. + + add internal _nc_keyname(), replacing keyname() to associate with a + particular SCREEN rather than the global SP. + + add internal _nc_unctrl(), replacing unctrl() to associate with a + particular SCREEN rather than the global SP. + + add internal _nc_tracemouse(), replacing _tracemouse() to eliminate + its associated global buffer _nc_globals.tracemse_buf now in SCREEN. + + add internal _nc_tracechar(), replacing _tracechar() to use SCREEN in + preference to the global _nc_globals.tracechr_buf buffer. + +20080524 + + modify _nc_keypad() to make it switch temporarily as needed to the + screen which must be updated. + + wrap cur_term variable to help make _nc_keymap() thread-safe, and + always set the screen's copy of this variable in set_curterm(). + + restore curs_set() state after endwin()/refresh() (report/patch + Miroslav Lichvar) + +20080517 + + modify configure script to note that --enable-ext-colors and + --enable-ext-mouse are not experimental, but extensions from + the ncurses ABI 5. + + corrected manpage description of setcchar() (discussion with + Emanuele Giaquinta). + + fix for adding a non-spacing character at the beginning of a line + (report/patch by Miroslav Lichvar). + +20080503 + + modify screen.* terminfo entries using new screen+fkeys to fix + overridden keys in screen.rxvt (Debian #478094) -TD + + modify internal interfaces to reduce wgetch()'s dependency on the + global SP. + + simplify some loops with macros each_screen(), each_window() and + each_ripoff(). + +20080426 + + continue modifying test/ditto.c toward making it demonstrate + multithreaded use_screen(), using fifos to pass data between screens. + + fix typo in form.3x (report by Mike Gran). + +20080419 + + add screen.rxvt terminfo entry -TD + + modify tic -f option to format spaces as \s to prevent them from + being lost when that is read back in unformatted strings. + + improve test/ditto.c, using a "talk"-style layout. + +20080412 + + change test/ditto.c to use openpty() and xterm. + + add locks for copywin(), dupwin(), overlap(), overlay() on their + window parameters. + + add locks for initscr() and newterm() on updates to the SCREEN + pointer. + + finish table in curs_thread.3x manpage. + +20080405 + + begin table in curs_thread.3x manpage describing the scope of data + used by each function (or symbol) for threading analysis. + + add null-pointer checks to setsyx() and getsyx() (prompted by + discussion by Martin v. Lowis and Jeroen Ruigrok van der Werven on + python-dev2 mailing list). + +20080329 + + add null-pointer checks in set_term() and delscreen(). + + move _nc_windows into _nc_globals, since windows can be pads, which + are not associated with a particular screen. + + change use_screen() to pass the SCREEN* parameter rather than + stdscr to the callback function. + + force libtool to use tag for 'CC' in case it does not detect this, + e.g., on aix when using CC=powerpc-ibm-aix5.3.0.0-gcc + (report/patch by Michael Haubenwallner). + + override OBJEXT to "lo" when building with libtool, to work on + platforms such as AIX where libtool may use a different suffix for + the object files than ".o" (report/patch by Michael Haubenwallner). + + add configure --with-pthread option, for building with the POSIX + thread library. + +20080322 + + fill in extended-color pair two more places in wbkgrndset() and + waddch_nosync() (prompted by Sedeno's patch). + + fill in extended-color pair in _nc_build_wch() to make colors work + for wide-characters using extended-colors (patch by Alejandro R + Sedeno). + + add x/X toggles to ncurses.c C color test to test/demo + wide-characters with extended-colors. + + add a/A toggles to ncurses.c c/C color tests. + + modify test/ditto.c to use use_screen(). + + finish modifying test/rain.c to demonstrate threads. + +20080308 + + start modifying test/rain.c for threading demo. + + modify test/ncurses.c to make 'f' test accept the f/F/b/F/ toggles + that the 'F' accepts. + + modify test/worm.c to show trail in reverse-video when other threads + are working concurrently. + + fix a deadlock from improper nesting of mutexes for windowlist and + window. + +20080301 + + fixes from 20080223 resolved issue with mutexes; change to use + recursive mutexes to fix memory leak in delwin() as called from + _nc_free_and_exit(). + +20080223 + + fix a size-difference in _nc_globals which caused hanging of mutex + lock/unlock when termlib was built separately. + +20080216 + + avoid using nanosleep() in threaded configuration since that often + is implemented to suspend the entire process. + +20080209 + + update test programs to build/work with various UNIX curses for + comparisons. This was to reinvestigate statement in X/Open Curses + that insnstr and winsnstr perform wrapping. None of the Unix-branded + implementations do this, as noted in manpage (cf: 20040228). + +20080203 + + modify _nc_setupscreen() to set the legacy-coding value the same + for both narrow/wide models. It had been set only for wide model, + but is needed to make unctrl() work with locale in the narrow model. + + improve waddch() and winsch() handling of EILSEQ from mbrtowc() by + using unctrl() to display illegal bytes rather than trying to append + further bytes to make up a valid sequence (reported by Andrey A + Chernov). + + modify unctrl() to check codes in 128-255 range versus isprint(). + If they are not printable, and locale was set, use a "M-" or "~" + sequence. + +20080126 + + improve threading in test/worm.c (wrap refresh calls, and KEY_RESIZE + handling). Now it hangs in napms(), no matter whether nanosleep() + or poll() or select() are used on Linux. + +20080119 + + fixes to build with --disable-ext-funcs + + add manpage for use_window and use_screen. + + add set_tabsize() and set_escdelay() functions. + +20080112 + + remove recursive-mutex definitions, finish threading demo for worm.c + + remove a redundant adjustment of lines in resizeterm.c's + adjust_window() which caused occasional misadjustment of stdscr when + softkeys were used. + +20080105 + + several improvements to terminfo entries based on xterm #230 -TD + + modify MKlib_gen.sh to handle keyname/key_name prototypes, so the + "link_test" builds properly. + + fix for toe command-line options -u/-U to ensure filename is given. + + fix allocation-size for command-line parsing in infocmp from 20070728 + (report by Miroslav Lichvar) + + improve resizeterm() by moving ripped-off lines, and repainting the + soft-keys (report by Katarina Machalkova) + + add clarification in wclear's manpage noting that the screen will be + cleared even if a subwindow is cleared (prompted by Christer Enfors + question). + + change test/ncurses.c soft-key tests to work with KEY_RESIZE. + +20071222 + + continue implementing support for threading demo by adding mutex + for delwin(). + +20071215 + + add several functions to C++ binding which wrap C functions that + pass a WINDOW* parameter (request by Chris Lee). + +20071201 + + add note about configure options needed for Berkeley database to the + INSTALL file. + + improve checks for version of Berkeley database libraries. + + amend fix for rpath to not modify LDFLAGS if the platform has no + applicable transformation (report by Christian Ebert, cf: 20071124). + +20071124 + + modify configure option --with-hashed-db to accept a parameter which + is the install-prefix of a given Berkeley Database (prompted by + pierre4d2 comments). + + rewrite wrapper for wcrtomb(), making it work on Solaris. This is + used in the form library to determine the length of the buffer needed + by field_buffer (report by Alfred Fung). + + remove unneeded window-parameter from C++ binding for wresize (report + by Chris Lee). + +20071117 + + modify the support for filesystems which do not support mixed-case to + generate 2-character (hexadecimal) codes for the lower-level of the + filesystem terminfo database (request by Michail Vidiassov). + + add configure option --enable-mixed-case, to allow overriding the + configure script's check if the filesystem supports mixed-case + filenames. + + add wresize() to C++ binding (request by Chris Lee). + + define NCURSES_EXT_FUNCS and NCURSES_EXT_COLORS in curses.h to make + it simpler to tell if the extended functions and/or colors are + declared. + +20071103 + + update memory-leak checks for changes to names.c and codes.c + + correct acsc strings in h19, z100 (patch by Benjamin C W Sittler). + +20071020 + + continue implementing support for threading demo by adding mutex + for use_window(). + + add mrxvt terminfo entry, add/fix xterm building blocks for modified + cursor keys -TD + + compile with FreeBSD "contemporary" TTY interface (patch by + Rong-En Fan). + +20071013 + + modify makefile rules to allow clear, tput and tset to be built + without libtic. The other programs (infocmp, tic and toe) rely on + that library. + + add/modify null-pointer checks in several functions for SP and/or + the WINDOW* parameter (report by Thorben Krueger). + + fixes for field_buffer() in formw library (see Redhat #310071, + patches by Miroslav Lichvar). + + improve performance of NCURSES_CHAR_EQ code (patch by Miroslav + Lichvar). + + update/improve mlterm and rxvt terminfo entries, e.g., for + the modified cursor- and keypad-keys -TD + +20071006 + + add code to curses.priv.h ifdef'd with NCURSES_CHAR_EQ, which + changes the CharEq() macro to an inline function to allow comparing + cchar_t struct's without comparing gaps in a possibly unpacked + memory layout (report by Miroslav Lichvar). + +20070929 + + add new functions to lib_trace.c to setup mutex's for the _tracef() + calls within the ncurses library. + + for the reentrant model, move _nc_tputs_trace and _nc_outchars into + the SCREEN. + + start modifying test/worm.c to provide threading demo (incomplete). + + separated ifdef's for some BSD-related symbols in tset.c, to make + it compile on LynxOS (report by Greg Gemmer). +20070915 + + modify Ada95/gen/Makefile to use shlib script, to simplify building + shared-library configuration on platforms lacking rpath support. + + build-fix for Ada95/src/Makefile to reflect changed dependency for + the terminal-interface-curses-aux.adb file which is now generated. + + restructuring test/worm.c, for use_window() example. + +20070908 + + add use_window() and use_screen() functions, to develop into support + for threaded library (incomplete). + + fix typos in man/curs_opaque.3x which kept the install script from + creating symbolic links to two aliases created in 20070818 (report by + Rong-En Fan). + +20070901 + + remove a spurious newline from output of html.m4, which caused links + for Ada95 html to be incorrect for the files generated using m4. + + start investigating mutex's for SCREEN manipulation (incomplete). + + minor cleanup of codes.c/names.c for --enable-const + + expand/revise "Routine and Argument Names" section of ncurses manpage + to address report by David Givens in newsgroup discussion. + + fix interaction between --without-progs/--with-termcap configure + options (report by Michail Vidiassov). + + fix typo in "--disable-relink" option (report by Michail Vidiassov). + +20070825 + + fix a sign-extension bug in infocmp's repair_acsc() function + (cf: 971004). + + fix old configure script bug which prevented "--disable-warnings" + option from working (patch by Mike Frysinger). + +20070818 + + add 9term terminal description (request by Juhapekka Tolvanen) -TD + + modify comp_hash.c's string output to avoid misinterpreting a null + "\0" followed by a digit. + + modify MKnames.awk and MKcodes.awk to support big-strings. + This only applies to the cases (broken linker, reentrant) where + the corresponding arrays are accessed via wrapper functions. + + split MKnames.awk into two scripts, eliminating the shell redirection + which complicated the make process and also the bogus timestamp file + which was introduced to fix "make -j". + + add test/test_opaque.c, test/test_arrays.c + + add wgetscrreg() and wgetparent() for applications that may need it + when NCURSES_OPAQUE is defined (prompted by Bryan Christ). + +20070812 + + amend treatment of infocmp "-r" option to retain the 1023-byte limit + unless "-T" is given (cf: 981017). + + modify comp_captab.c generation to use big-strings. + + make _nc_capalias_table and _nc_infoalias_table private accessed via + _nc_get_alias_table() since the tables are used only within the tic + library. + + modify configure script to skip Intel compiler in CF_C_INLINE. + + make _nc_info_hash_table and _nc_cap_hash_table private accessed via + _nc_get_hash_table() since the tables are used only within the tic + library. + +20070728 + + make _nc_capalias_table and _nc_infoalias_table private, accessed via + _nc_get_alias_table() since they are used only by parse_entry.c + + make _nc_key_names private since it is used only by lib_keyname.c + + add --disable-big-strings configure option to control whether + unctrl.c is generated using the big-string optimization - which may + use strings longer than supported by a given compiler. + + reduce relocation tables for tic, infocmp by changing type of + internal hash tables to short, and make those private symbols. + + eliminate large fixed arrays from progs/infocmp.c + +20070721 + + change winnstr() to stop at the end of the line (cf: 970315). + + add test/test_get_wstr.c + + add test/test_getstr.c + + add test/test_inwstr.c + + add test/test_instr.c + +20070716 + + restore a call to obtain screen-size in _nc_setupterm(), which + is used in tput and other non-screen applications via setupterm() + (Debian #433357, reported by Florent Bayle, Christian Ohm, + cf: 20070310). + +20070714 + + add test/savescreen.c test-program + + add check to trace-file open, if the given name is a directory, add + ".log" to the name and try again. + + add konsole-256color entry -TD + + add extra gcc warning options from xterm. + + minor fixes for ncurses/hashmap test-program. + + modify configure script to quiet c++ build with libtool when the + --disable-echo option is used. + + modify configure script to disable ada95 if libtool is selected, + writing a warning message (addresses FreeBSD #114493). + + update config.guess, config.sub + +20070707 + + add continuous-move "M" to demo_panels to help test refresh changes. + + improve fix for refresh of window on top of multi-column characters, + taking into account some split characters on left/right window + boundaries. + +20070630 + + add "widec" row to _tracedump() output to help diagnose remaining + problems with multi-column characters. + + partial fix for refresh of window on top of multi-column characters + which are partly overwritten (report by Sadrul H Chowdhury). + + ignore A_CHARTEXT bits in vidattr() and vid_attr(), in case + multi-column extension bits are passed there. + + add setlocale() call to demo_panels.c, needed for wide-characters. + + add some output flags to _nc_trace_ttymode to help diagnose a bug + report by Larry Virden, i.e., ONLCR, OCRNL, ONOCR and ONLRET, + +20070623 + + add test/demo_panels.c + + implement opaque version of setsyx() and getsyx(). + +20070612 + + corrected xterm+pcf2 terminfo modifiers for F1-F4, to match xterm + #226 -TD + + split-out key_name() from MKkeyname.awk since it now depends upon + wunctrl() which is not in libtinfo (report by Rong-En Fan). + +20070609 + + add test/key_name.c + + add stdscr cases to test/inchs.c and test/inch_wide.c + + update test/configure + + correct formatting of DEL (0x7f) in _nc_vischar(). + + null-terminate result of wunctrl(). + + add null-pointer check in key_name() (report by Andreas Krennmair, + cf: 20020901). + +20070602 + + adapt mouse-handling code from menu library in form-library + (discussion with Clive Nicolson). + + add a modification of test/dots.c, i.e., test/dots_mvcur.c to + illustrate how to use mvcur(). + + modify wide-character flavor of SetAttr() to preserve the + WidecExt() value stored in the .attr field, e.g., in case it + is overwritten by chgat (report by Aleksi Torhamo). + + correct buffer-size for _nc_viswbuf2n() (report by Aleksi Torhamo). + + build-fixes for Solaris 2.6 and 2.7 (patch by Peter O'Gorman). + +20070526 + + modify keyname() to use "^X" form only if meta() has been called, or + if keyname() is called without initializing curses, e.g., via + initscr() or newterm() (prompted by LinuxBase #1604). + + document some portability issues in man/curs_util.3x + + add a shadow copy of TTY buffer to _nc_prescreen to fix applications + broken by moving that data into SCREEN (cf: 20061230). + +20070512 + + add 'O' (wide-character panel test) in ncurses.c to demonstrate a + problem reported by Sadrul H Chowdhury with repainting parts of + a fullwidth cell. + + modify slk_init() so that if there are preceding calls to + ripoffline(), those affect the available lines for soft-keys (adapted + from patch by Clive Nicolson). + + document some portability issues in man/curs_getyx.3x + +20070505 + + fix a bug in Ada95/samples/ncurses which caused a variable to + become uninitialized in the "b" test. + + fix Ada95/gen/Makefile.in adahtml rule to account for recent + movement of files, fix a few incorrect manpage references in the + generated html. + + add Ada95 binding to _nc_freeall() as Curses_Free_All to help with + memory-checking. + + correct some functions in Ada95 binding which were using return value + from C where none was returned: idcok(), immedok() and wtimeout(). + + amend recent changes for Ada95 binding to make it build with + Cygwin's linker, e.g., with configure options + --enable-broken-linker --with-ticlib + +20070428 + + add a configure check for gcc's options for inlining, use that to + quiet a warning message where gcc's default behavior changed from + 3.x to 4.x. + + improve warning message when checking if GPM is linked to curses + library by not warning if its use of "wgetch" is via a weak symbol. + + add loader options when building with static libraries to ensure that + an installed shared library for ncurses does not conflict. This is + reported as problem with Tru64, but could affect other platforms + (report Martin Mokrejs, analysis by Tim Mooney). + + fix build on cygwin after recent ticlib/termlib changes, i.e., + + adjust TINFO_SUFFIX value to work with cygwin's dll naming + + revert a change from 20070303 which commented out dependency of + SHLIB_LIST in form/menu/panel/c++ libraries. + + fix initialization of ripoff stack pointer (cf: 20070421). + +20070421 + + move most static variables into structures _nc_globals and + _nc_prescreen, to simplify storage. + + add/use configure script macro CF_SIG_ATOMIC_T, use the corresponding + type for data manipulated by signal handlers (prompted by comments + in mailing.openbsd.bugs newsgroup). + + modify CF_WITH_LIBTOOL to allow one to pass options such as -static + to the libtool create- and link-operations. + +20070414 + + fix whitespace in curs_opaque.3x which caused a spurious ';' in + the installed aliases (report by Peter Santoro). + + fix configure script to not try to generate adacurses-config when + Ada95 tree is not built. + +20070407 + + add man/curs_legacy.3x, man/curs_opaque.3x + + fix acs_map binding for Ada95 when --enable-reentrant is used. + + add adacurses-config to the Ada95 install, based on version from + FreeBSD port, in turn by Juergen Pfeifer in 2000 (prompted by + comment on comp.lang.ada newsgroup). + + fix includes in c++ binding to build with Intel compiler + (cf: 20061209). + + update install rule in Ada95 to use mkdirs.sh + > other fixes prompted by inspection for Coverity report: + + modify ifdef's for c++ binding to use try/catch/throw statements + + add a null-pointer check in tack/ansi.c request_cfss() + + fix a memory leak in ncurses/base/wresize.c + + corrected check for valid memu/meml capabilities in + progs/dump_entry.c when handling V_HPUX case. + > fixes based on Coverity report: + + remove dead code in test/bs.c + + remove dead code in test/demo_defkey.c + + remove an unused assignment in progs/infocmp.c + + fix a limit check in tack/ansi.c tools_charset() + + fix tack/ansi.c tools_status() to perform the VT320/VT420 + tests in request_cfss(). The function had exited too soon. + + fix a memory leak in tic.c's make_namelist() + + fix a couple of places in tack/output.c which did not check for EOF. + + fix a loop-condition in test/bs.c + + add index checks in lib_color.c for color palettes + + add index checks in progs/dump_entry.c for version_filter() handling + of V_BSD case. + + fix a possible null-pointer dereference in copywin() + + fix a possible null-pointer dereference in waddchnstr() + + add a null-pointer check in _nc_expand_try() + + add a null-pointer check in tic.c's make_namelist() + + add a null-pointer check in _nc_expand_try() + + add null-pointer checks in test/cardfile.c + + fix a double-free in ncurses/tinfo/trim_sgr0.c + + fix a double-free in ncurses/base/wresize.c + + add try/catch block to c++/cursesmain.cc + +20070331 + + modify Ada95 binding to build with --enable-reentrant by wrapping + global variables (bug: acs_map does not yet work). + + modify Ada95 binding to use the new access-functions, allowing it + to build/run when NCURSES_OPAQUE is set. + + add access-functions and macros to return properties of the WINDOW + structure, e.g., when NCURSES_OPAQUE is set. + + improved install-sh's quoting. + + use mkdirs.sh rather than mkinstalldirs, e.g., to use fixes from + other programs. + +20070324 + + eliminate part of the direct use of WINDOW data from Ada95 interface. + + fix substitutions for termlib filename to make configure option + --enable-reentrant work with --with-termlib. + + change a constructor for NCursesWindow to allow compiling with + NCURSES_OPAQUE set, since we cannot pass a reference to + an opaque pointer. + +20070317 + + ignore --with-chtype=unsigned since unsigned is always added to + the type in curses.h; do the same for --with-mmask-t. + + change warning regarding --enable-ext-colors and wide-character + in the configure script to an error. + + tweak error message in CF_WITH_LIBTOOL to distinguish other programs + such as Darwin's libtool program (report by Michail Vidiassov) + + modify edit_man.sh to allow for multiple substitutions per line. + + set locale in misc/ncurses-config.in since it uses a range + + change permissions libncurses++.a install (report by Michail + Vidiassov). + + corrected length of temporary buffer in wide-character version + of set_field_buffer() (related to report by Bryan Christ). + +20070311 + + fix mk-1st.awk script install_shlib() function, broken in 20070224 + changes for cygwin (report by Michail Vidiassov). + +20070310 + + increase size of array in _nc_visbuf2n() to make "tic -v" work + properly in its similar_sgr() function (report/analysis by Peter + Santoro). + + add --enable-reentrant configure option for ongoing changes to + implement a reentrant version of ncurses: + + libraries are suffixed with "t" + + wrap several global variables (curscr, newscr, stdscr, ttytype, + COLORS, COLOR_PAIRS, COLS, ESCDELAY, LINES and TABSIZE) as + functions returning values stored in SCREEN or cur_term. + + move some initialization (LINES, COLS) from lib_setup.c, + i.e., setupterm() to _nc_setupscreen(), i.e., newterm(). + +20070303 + + regenerated html documentation. + + add NCURSES_OPAQUE symbol to curses.h, will use to make structs + opaque in selected configurations. + + move the chunk in lib_acs.c which resets acs capabilities when + running on a terminal whose locale interferes with those into + _nc_setupscreen(), so the libtinfo/libtinfow files can be made + identical (requested by Miroslav Lichvar). + + do not use configure variable SHLIB_LIBS for building libraries + outside the ncurses directory, since that symbol is customized + only for that directory, and using it introduces an unneeded + dependency on libdl (requested by Miroslav Lichvar). + + modify mk-1st.awk so the generated makefile rules for linking or + installing shared libraries do not first remove the library, in + case it is in use, e.g., libncurses.so by /bin/sh (report by Jeff + Chua). + + revised section "Using NCURSES under XTERM" in ncurses-intro.html + (prompted by newsgroup comment by Nick Guenther). + +20070224 + + change internal return codes of _nc_wgetch() to check for cases + where KEY_CODE_YES should be returned, e.g., if a KEY_RESIZE was + ungetch'd, and read by wget_wch(). + + fix static-library build broken in 20070217 changes to remove "-ldl" + (report by Miroslav Lichvar). + + change makefile/scripts for cygwin to allow building termlib. + + use Form_Hook in manpages to match form.h + + use Menu_Hook in manpages, as well as a few places in menu.h + + correct form- and menu-manpages to use specific Field_Options, + Menu_Options and Item_Options types. + + correct prototype for _tracechar() in manpage (cf: 20011229). + + correct prototype for wunctrl() in manpage. + +20070217 + + fixes for $(TICS_LIST) in ncurses/Makefile (report by Miroslav + Lichvar). + + modify relinking of shared libraries to apply only when rpath is + enabled, and add --disable-relink option which can be used to + disable the feature altogether (reports by Michail Vidiassov, + Adam J Richter). + + fix --with-termlib option for wide-character configuration, stripping + the "w" suffix in one place (report by Miroslav Lichvar). + + remove "-ldl" from some library lists to reduce dependencies in + programs (report by Miroslav Lichvar). + + correct description of --enable-signed-char in configure --help + (report by Michail Vidiassov). + + add pattern for GNU/kFreeBSD configuration to CF_XOPEN_SOURCE, + which matches an earlier change to CF_SHARED_OPTS, from xterm #224 + fixes. + + remove "${DESTDIR}" from -install_name option used for linking + shared libraries on Darwin (report by Michail Vidiassov). + +20070210 + + add test/inchs.c, test/inch_wide.c, to test win_wchnstr(). + + remove libdl from library list for termlib (report by Miroslav + Lichvar). + + fix configure.in to allow --without-progs --with-termlib (patch by + Miroslav Lichvar). + + modify win_wchnstr() to ensure that only a base cell is returned + for each multi-column character (prompted by report by Wei Kong + regarding change in mvwin_wch() cf: 20041023). + +20070203 + + modify fix_wchnstr() in form library to strip attributes (and color) + from the cchar_t array (field cells) read from a field's window. + Otherwise, when copying the field cells back to the window, the + associated color overrides the field's background color (report by + Ricardo Cantu). + + improve tracing for form library, showing created forms, fields, etc. + + ignore --enable-rpath configure option if --with-shared was omitted. + + add _nc_leaks_tinfo(), _nc_free_tic(), _nc_free_tinfo() entrypoints + to allow leak-checking when both tic- and tinfo-libraries are built. + + drop CF_CPP_VSCAN_FUNC macro from configure script, since C++ binding + no longer relies on it. + + disallow combining configure script options --with-ticlib and + --enable-termcap (report by Rong-En Fan). + + remove tack from ncurses tree. + +20070128 + + fix typo in configure script that broke --with-termlib option + (report by Rong-En Fan). + +20070127 + + improve fix for FreeBSD gnu/98975, to allow for null pointer passed + to tgetent() (report by Rong-en Fan). + + update tack/HISTORY and tack/README to tell how to build it after + it is removed from the ncurses tree. + + fix configure check for libtool's version to trim blank lines + (report by sci-fi@hush.ai). + + review/eliminate other original-file artifacts in cursesw.cc, making + its license consistent with ncurses. + + use ncurses vw_scanw() rather than reading into a fixed buffer in + the c++ binding for scanw() methods (prompted by report by Nuno Dias). + + eliminate fixed-buffer vsprintf() calls in c++ binding. + +20070120 + + add _nc_leaks_tic() to separate leak-checking of tic library from + term/ncurses libraries, and thereby eliminate a library dependency. + + fix test/mk-test.awk to ignore blank lines. + + correct paths in include/headers, for --srcdir (patch by Miroslav + Lichvar). + +20070113 + + add a break-statement in misc/shlib to ensure that it exits on the + _first_ matched directory (report by Paul Novak). + + add tack/configure, which can be used to build tack outside the + ncurses build-tree. + + add --with-ticlib option, to build/install the tic-support functions + in a separate library (suggested by Miroslav Lichvar). + +20070106 + + change MKunctrl.awk to reduce relocation table for unctrl.o + + change MKkeyname.awk to reduce relocation table for keyname.o + (patch by Miroslav Lichvar). + +20061230 + + modify configure check for libtool's version to trim blank lines + (report by sci-fi@hush.ai). + + modify some modules to allow them to be reentrant if _REENTRANT is + defined: lib_baudrate.c, resizeterm.c (local data only) + + eliminate static data from some modules: add_tries.c, hardscroll.c, + lib_ttyflags.c, lib_twait.c + + improve manpage install to add aliases for the transformed program + names, e.g., from --program-prefix. + + used linklint to verify links in the HTML documentation, made fixes + to manpages as needed. + + fix a typo in curs_mouse.3x (report by William McBrine). + + fix install-rule for ncurses5-config to make the bin-directory. + +20061223 + + modify configure script to omit the tic (terminfo compiler) support + from ncurses library if --without-progs option is given. + + modify install rule for ncurses5-config to do this via "install.libs" + + modify shared-library rules to allow FreeBSD 3.x to use rpath. + + update config.guess, config.sub + +20061217 5.6 release for upload to ftp.gnu.org + +20061217 + + add ifdef's for for HPUX, which has the corresponding + definitions in . + + revert the va_copy() change from 20061202, since it was neither + correct nor portable. + + add $(LOCAL_LIBS) definition to progs/Makefile.in, needed for + rpath on Solaris. + + ignore wide-acs line-drawing characters that wcwidth() claims are + not one-column. This is a workaround for Solaris' broken locale + support. + +20061216 + + modify configure --with-gpm option to allow it to accept a parameter, + i.e., the name of the dynamic GPM library to load via dlopen() + (requested by Bryan Henderson). + + add configure option --with-valgrind, changes from vile. + + modify configure script AC_TRY_RUN and AC_TRY_LINK checks to use + 'return' in preference to 'exit()'. + +20061209 + + change default for --with-develop back to "no". + + add XTABS to tracing of TTY bits. + + updated autoconf patch to ifdef-out the misfeature which declares + exit() for configure tests. This fixes a redefinition warning on + Solaris. + + use ${CC} rather than ${LD} in shared library rules for IRIX64, + Solaris to help ensure that initialization sections are provided for + extra linkage requirements, e.g., of C++ applications (prompted by + comment by Casper Dik in newsgroup). + + rename "$target" in CF_MAN_PAGES to make it easier to distinguish + from the autoconf predefined symbol. There was no conflict, + since "$target" was used only in the generated edit_man.sh file, + but SuSE's rpm package contains a patch. + +20061202 + + update man/term.5 to reflect extended terminfo support and hashed + database configuration. + + updates for test/configure script. + + adapted from SuSE rpm package: + + remove long-obsolete workaround for broken-linker which declared + cur_term in tic.c + + improve error recovery in PUTC() macro when wcrtomb() does not + return usable results for an 8-bit character. + + patches from rpm package (SuSE): + + use va_copy() in extra varargs manipulation for tracing version + of printw, etc. + + use a va_list rather than a null in _nc_freeall()'s call to + _nc_printf_string(). + + add some see-also references in manpages to show related + wide-character functions (suggested by Claus Fischer). + +20061125 + + add a check in lib_color.c to ensure caller does not increase COLORS + above max_colors, which is used as an array index (discussion with + Simon Sasburg). + + add ifdef's allowing ncurses to be built with tparm() using either + varargs (the existing status), or using a fixed-parameter list (to + match X/Open). + +20061104 + + fix redrawing of windows other than stdscr using wredrawln() by + touching the corresponding rows in curscr (discussion with Dan + Gookin). + + add test/redraw.c + + add test/echochar.c + + review/cleanup manpage descriptions of error-returns for form- and + menu-libraries (prompted by FreeBSD docs/46196). + +20061028 + + add AUTHORS file -TD + + omit the -D options from output of the new config script --cflags + option (suggested by Ralf S Engelschall). + + make NCURSES_INLINE unconditionally defined in curses.h + +20061021 + + revert change to accommodate bash 3.2, since that breaks other + platforms, e.g., Solaris. + + minor fixes to NEWS file to simplify scripting to obtain list of + contributors. + + improve some shared-library configure scripting for Linux, FreeBSD + and NetBSD to make "--with-shlib-version" work. + + change configure-script rules for FreeBSD shared libraries to allow + for rpath support in versions past 3. + + use $(DESTDIR) in makefile rules for installing/uninstalling the + package config script (reports/patches by Christian Wiese, + Ralf S Engelschall). + + fix a warning in the configure script for NetBSD 2.0, working around + spurious blanks embedded in its ${MAKEFLAGS} symbol. + + change test/Makefile to simplify installing test programs in a + different directory when --enable-rpath is used. + +20061014 + + work around bug in bash 3.2 by adding extra quotes (Jim Gifford). + + add/install a package config script, e.g., "ncurses5-config" or + "ncursesw5-config", according to configuration options. + +20061007 + + add several GNU Screen terminfo variations with 16- and 256-colors, + and status line (Alain Bench). + + change the way shared libraries (other than libtool) are installed. + Rather than copying the build-tree's libraries, link the shared + objects into the install directory. This makes the --with-rpath + option work except with $(DESTDIR) (cf: 20000930). + +20060930 + + fix ifdef in c++/internal.h for QNX 6.1 + + test-compiled with (old) egcs-1.1.2, modified configure script to + not unset the $CXX and related variables which would prevent this. + + fix a few terminfo.src typos exposed by improvements to "-f" option. + + improve infocmp/tic "-f" option formatting. + +20060923 + + make --disable-largefile option work (report by Thomas M Ott). + + updated html documentation. + + add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD + + minor improvements to rxvt+pcfkeys -TD + +20060916 + + move static data from lib_mouse.c into SCREEN struct. + + improve ifdef's for _POSIX_VDISABLE in tset to work with Mac OS X + (report by Michail Vidiassov). + + modify CF_PATH_SYNTAX to ensure it uses the result from --prefix + option (from lynx changes) -TD + + adapt AC_PROG_EGREP check, noting that this is likely to be another + place aggravated by POSIXLY_CORRECT. + + modify configure check for awk to ensure that it is found (prompted + by report by Christopher Parker). + + update config.sub + +20060909 + + add kon, kon2 and jfbterm terminfo entry (request by Till Maas) -TD + + remove invis capability from klone+sgr, mainly used by linux entry, + since it does not really do this -TD + +20060903 + + correct logic in wadd_wch() and wecho_wch(), which did not guard + against passing the multi-column attribute into a call on waddch(), + e.g., using data returned by win_wch() (cf: 20041023) + (report by Sadrul H Chowdhury). + +20060902 + + fix kterm's acsc string -TD + + fix for change to tic/infocmp in 20060819 to ensure no blank is + embedded into a termcap description. + + workaround for 20050806 ifdef's change to allow visbuf.c to compile + when using --with-termlib --with-trace options. + + improve tgetstr() by making the return value point into the user's + buffer, if provided (patch by Miroslav Lichvar (see Redhat #202480)). + + correct libraries needed for foldkeys (report by Stanislav Ievlev) + +20060826 + + add terminfo entries for xfce terminal (xfce) and multi gnome + terminal (mgt) -TD + + add test/foldkeys.c + +20060819 + + modify tic and infocmp to avoid writing trailing blanks on terminfo + source output (Debian #378783). + + modify configure script to ensure that if the C compiler is used + rather than the loader in making shared libraries, the $(CFLAGS) + variable is also used (Redhat #199369). + + port hashed-db code to db2 and db3. + + fix a bug in tgetent() from 20060625 and 20060715 changes + (patch/analysis by Miroslav Lichvar (see Redhat #202480)). + +20060805 + + updated xterm function-keys terminfo to match xterm #216 -TD + + add configure --with-hashed-db option (tested only with FreeBSD 6.0, + e.g., the db 1.8.5 interface). + +20060729 + + modify toe to access termcap data, e.g., via cgetent() functions, + or as a text file if those are not available. + + use _nc_basename() in tset to improve $SHELL check for csh/sh. + + modify _nc_read_entry() and _nc_read_termcap_entry() so infocmp, + can access termcap data when the terminfo database is disabled. + +20060722 + + widen the test for xterm kmous a little to allow for other strings + than \E[M, e.g., for xterm-sco functionality in xterm. + + update xterm-related terminfo entries to match xterm patch #216 -TD + + update config.guess, config.sub + +20060715 + + fix for install-rule in Ada95 to add terminal_interface.ads + and terminal_interface.ali (anonymous posting in comp.lang.ada). + + correction to manpage for getcchar() (report by William McBrine). + + add test/chgat.c + + modify wchgat() to mark updated cells as changed so a refresh will + repaint those cells (comments by Sadrul H Chowdhury and William + McBrine). + + split up dependency of names.c and codes.c in ncurses/Makefile to + work with parallel make (report/analysis by Joseph S Myers). + + suppress a warning message (which is ignored) for systems without + an ldconfig program (patch by Justin Hibbits). + + modify configure script --disable-symlinks option to allow one to + disable symlink() in tic even when link() does not work (report by + Nigel Horne). + + modify MKfallback.sh to use tic -x when constructing fallback tables + to allow extended capabilities to be retrieved from a fallback entry. + + improve leak-checking logic in tgetent() from 20060625 to ensure that + it does not free the current screen (report by Miroslav Lichvar). + +20060708 + + add a check for _POSIX_VDISABLE in tset (NetBSD #33916). + + correct _nc_free_entries() and related functions used for memory leak + checking of tic. + +20060701 + + revert a minor change for magic-cookie support from 20060513, which + caused unexpected reset of attributes, e.g., when resizing test/view + in color mode. + + note in clear manpage that the program ignores command-line + parameters (prompted by Debian #371855). + + fixes to make lib_gen.c build properly with changes to the configure + --disable-macros option and NCURSES_NOMACROS (cf: 20060527) + + update/correct several terminfo entries -TD + + add some notes regarding copyright to terminfo.src -TD + +20060625 + + fixes to build Ada95 binding with gnat-4.1.0 + + modify read_termtype() so the term_names data is always allocated as + part of the str_table, a better fix for a memory leak (cf: 20030809). + + reduce memory leaks in repeated calls to tgetent() by remembering the + last TERMINAL* value allocated to hold the corresponding data and + freeing that if the tgetent() result buffer is the same as the + previous call (report by "Matt" for FreeBSD gnu/98975). + + modify tack to test extended capability function-key strings. + + improved gnome terminfo entry (GenToo #122566). + + improved xterm-256color terminfo entry (patch by Alain Bench). + +20060617 + + fix two small memory leaks related to repeated tgetent() calls + with TERM=screen (report by "Matt" for FreeBSD gnu/98975). + + add --enable-signed-char to simplify Debian package. + + reduce name-pollution in term.h by removing #define's for HAVE_xxx + symbols. + + correct typo in curs_terminfo.3x (Debian #369168). + +20060603 + + enable the mouse in test/movewindow.c + + improve a limit-check in frm_def.c (John Heasley). + + minor copyright fixes. + + change configure script to produce test/Makefile from data file. + +20060527 + + add a configure option --enable-wgetch-events to enable + NCURSES_WGETCH_EVENTS, and correct the associated loop-logic in + lib_twait.c (report by Bernd Jendrissek). + + remove include/nomacros.h from build, since the ifdef for + NCURSES_NOMACROS makes that obsolete. + + add entrypoints for some functions which were only provided as macros + to make NCURSES_NOMACROS ifdef work properly: getcurx(), getcury(), + getbegx(), getbegy(), getmaxx(), getmaxy(), getparx() and getpary(), + wgetbkgrnd(). + + provide ifdef for NCURSES_NOMACROS which suppresses most macro + definitions from curses.h, i.e., where a macro is defined to override + a function to improve performance. Allowing a developer to suppress + these definitions can simplify some application (discussion with + Stanislav Ievlev). + + improve description of memu/meml in terminfo manpage. + +20060520 + + if msgr is false, reset video attributes when doing an automargin + wrap to the next line. This makes the ncurses 'k' test work properly + for hpterm. + + correct caching of keyname(), which was using only half of its table. + + minor fixes to memory-leak checking. + + make SCREEN._acs_map and SCREEN._screen_acs_map pointers rather than + arrays, making ACS_LEN less visible to applications (suggested by + Stanislav Ievlev). + + move chunk in SCREEN ifdef'd for USE_WIDEC_SUPPORT to the end, so + _screen_acs_map will have the same offset in both ncurses/ncursesw, + making the corresponding tinfo/tinfow libraries binary-compatible + (cf: 20041016, report by Stanislav Ievlev). + +20060513 + + improve debug-tracing for EmitRange(). + + change default for --with-develop to "yes". Add NCURSES_NO_HARD_TABS + and NCURSES_NO_MAGIC_COOKIE environment variables to allow runtime + suppression of the related hard-tabs and xmc-glitch features. + + add ncurses version number to top-level manpages, e.g., ncurses, tic, + infocmp, terminfo as well as form, menu, panel. + + update config.guess, config.sub + + modify ncurses.c to work around a bug in NetBSD 3.0 curses + (field_buffer returning null for a valid field). The 'r' test + appears to not work with that configuration since the new_fieldtype() + function is broken in that implementation. + +20060506 + + add hpterm-color terminfo entry -TD + + fixes to compile test-programs with HPUX 11.23 + +20060422 + + add copyright notices to files other than those that are generated, + data or adapted from pdcurses (reports by William McBrine, David + Taylor). + + improve rendering on hpterm by not resetting attributes at the end + of doupdate() if the terminal has the magic-cookie feature (report + by Bernd Rieke). + + add 256color variants of terminfo entries for programs which are + reported to implement this feature -TD + +20060416 + + fix typo in change to NewChar() macro from 20060311 changes, which + broke tab-expansion (report by Frederic L W Meunier). + +20060415 + + document -U option of tic and infocmp. + + modify tic/infocmp to suppress smacs/rmacs when acsc is suppressed + due to size limit, e.g., converting to termcap format. Also + suppress them if the output format does not contain acsc and it + was not VT100-like, i.e., a one-one mapping (Novell #163715). + + add configure check to ensure that SIGWINCH is defined on platforms + such as OS X which exclude that when _XOPEN_SOURCE, etc., are + defined (report by Nicholas Cole) + +20060408 + + modify write_object() to not write coincidental extensions of an + entry made due to it being referenced in a use= clause (report by + Alain Bench). + + another fix for infocmp -i option, which did not ensure that some + escape sequences had comparable prefixes (report by Alain Bench). + +20060401 + + improve discussion of init/reset in terminfo and tput manpages + (report by Alain Bench). + + use is3 string for a fallback of rs3 in the reset program; it was + using is2 (report by Alain Bench). + + correct logic for infocmp -i option, which did not account for + multiple digits in a parameter (cf: 20040828) (report by Alain + Bench). + + move _nc_handle_sigwinch() to lib_setup.c to make --with-termlib + option work after 20060114 changes (report by Arkadiusz Miskiewicz). + + add copyright notices to test-programs as needed (report by William + McBrine). + +20060318 + + modify ncurses.c 'F' test to combine the wide-characters with color + and/or video attributes. + + modify test/ncurses to use CTL/Q or ESC consistently for exiting + a test-screen (some commands used 'x' or 'q'). + +20060312 + + fix an off-by-one in the scrolling-region change (cf_ 20060311). + +20060311 + + add checks in waddchnstr() and wadd_wchnstr() to stop copying when + a null character is found (report by Igor Bogomazov). + + modify progs/Makefile.in to make "tput init" work properly with + cygwin, i.e., do not pass a ".exe" in the reference string used + in check_aliases (report by Samuel Thibault). + + add some checks to ensure current position is within scrolling + region before scrolling on a new line (report by Dan Gookin). + + change some NewChar() usage to static variables to work around + stack garbage introduced when cchar_t is not packed (Redhat #182024). + +20060225 + + workarounds to build test/movewindow with PDcurses 2.7. + + fix for nsterm-16color entry (patch by Alain Bench). + + correct a typo in infocmp manpage (Debian #354281). + +20060218 + + add nsterm-16color entry -TD + + updated mlterm terminfo entry -TD + + remove 970913 feature for copying subwindows as they are moved in + mvwin() (discussion with Bryan Christ). + + modify test/demo_menus.c to demonstrate moving a menu (both the + window and subwindow) using shifted cursor-keys. + + start implementing recursive mvwin() in movewindow.c (incomplete). + + add a fallback definition for GCC_PRINTFLIKE() in test.priv.h, + for movewindow.c (report by William McBrine). + + add help-message to test/movewindow.c + +20060211 + + add test/movewindow.c, to test mvderwin(). + + fix ncurses soft-key test so color changes are shown immediately + rather than delayed. + + modify ncurses soft-key test to hide the keys when exiting the test + screen. + + fixes to build test programs with PDCurses 2.7, e.g., its headers + rely on autoconf symbols, and it declares stubs for nonfunctional + terminfo and termcap entrypoints. + +20060204 + + improved test/configure to build test/ncurses on HPUX 11 using the + vendor curses. + + documented ALTERNATE CONFIGURATIONS in the ncurses manpage, for the + benefit of developers who do not read INSTALL. + +20060128 + + correct form library Window_To_Buffer() change (cf: 20040516), which + should ignore the video attributes (report by Ricardo Cantu). + +20060121 + + minor fixes to xmc-glitch experimental code: + + suppress line-drawing + + implement max_attributes + tested with xterm. + + minor fixes for the database iterator. + + fix some buffer limits in c++ demo (comment by Falk Hueffner in + Debian #348117). + +20060114 + + add toe -a option, to show all databases. This uses new private + interfaces in the ncurses library for iterating through the list of + databases. + + fix toe from 20000909 changes which made it not look at + $HOME/.terminfo + + make toe's -v option parameter optional as per manpage. + + improve SIGWINCH handling by postponing its effect during newterm(), + etc., when allocating screens. + +20060111 + + modify wgetnstr() to return KEY_RESIZE if a sigwinch occurs. Use + this in test/filter.c + + fix an error in filter() modification which caused some applications + to fail. + +20060107 + + check if filter() was called when getting the screensize. Keep it + at 1 if so (based on Redhat #174498). + + add extension nofilter(). + + refined the workaround for ACS mapping. + + make ifdef's consistent in curses.h for the extended colors so the + header file can be used for the normal curses library. The header + file installed for extended colors is a variation of the + wide-character configuration (report by Frederic L W Meunier). + +20051231 + + add a workaround to ACS mapping to allow applications such as + test/blue.c to use the "PC ROM" characters by masking them with + A_ALTCHARSET. This worked up til 5.5, but was lost in the revision + of legacy coding (report by Michael Deutschmann). + + add a null-pointer check in the wide-character version of + calculate_actual_width() (report by Victor Julien). + + improve test/ncurses 'd' (color-edit) test by allowing the RGB + values to be set independently (patch by William McBrine). + + modify test/configure script to allow building test programs with + PDCurses/X11. + + modified test programs to allow some to work with NetBSD curses. + Several do not because NetBSD curses implements a subset of X/Open + curses, and also lacks much of SVr4 additions. But it's enough for + comparison. + + update config.guess and config.sub + +20051224 + + use BSD-specific fix for return-value from cgetent() from CVS where + an unknown terminal type would be reportd as "database not found". + + make tgetent() return code more readable using new symbols + TGETENT_YES, etc. + + remove references to non-existent "tctest" program. + + remove TESTPROGS from progs/Makefile.in (it was referring to code + that was never built in that directory). + + typos in curs_addchstr.3x, some doc files (noticed in OpenBSD CVS). + +20051217 + + add use_legacy_coding() function to support lynx's font-switching + feature. + + fix formatting in curs_termcap.3x (report by Mike Frysinger). + + modify MKlib_gen.sh to change preprocessor-expanded _Bool back to + bool. + +20051210 + + extend test/ncurses.c 's' (overlay window) test to exercise overlay(), + overwrite() and copywin() with different combinations of colors and + attributes (including background color) to make it easy to see the + effect of the different functions. + + corrections to menu/m_global.c for wide-characters (report by + Victor Julien). + +20051203 + + add configure option --without-dlsym, allowing developers to + configure GPM support without using dlsym() (discussion with Michael + Setzer). + + fix wins_nwstr(), which did not handle single-column non-8bit codes + (Debian #341661). + +20051126 + + move prototypes for wide-character trace functions from curses.tail + to curses.wide to avoid accidental reference to those if + _XOPEN_SOURCE_EXTENDED is defined without ensuring that is + included. + + add/use NCURSES_INLINE definition. + + change some internal functions to use int/unsigned rather than the + short equivalents. + +20051119 + + remove a redundant check in lib_color.c (Debian #335655). + + use ld's -search_paths_first option on Darwin to work around odd + search rules on that platform (report by Christian Gennerat, analysis + by Andrea Govoni). + + remove special case for Darwin in CF_XOPEN_SOURCE configure macro. + + ignore EINTR in tcgetattr/tcsetattr calls (Debian #339518). + + fix several bugs in test/bs.c (patch by Stephen Lindholm). + +20051112 + + other minor fixes to cygwin based on tack -TD + + correct smacs in cygwin (Debian #338234, report by Baurzhan + Ismagulov, who noted that it was fixed in Cygwin). + +20051029 + + add shifted up/down arrow codes to xterm-new as kind/kri strings -TD + + modify wbkgrnd() to avoid clearing the A_CHARTEXT attribute bits + since those record the state of multicolumn characters (Debian + #316663). + + modify werase to clear multicolumn characters that extend into + a derived window (Debian #316663). + +20051022 + + move assignment from environment variable ESCDELAY from initscr() + down to newterm() so the environment variable affects timeouts for + terminals opened with newterm() as well. + + fix a memory leak in keyname(). + + add test/demo_altkeys.c + + modify test/demo_defkey.c to exit from loop via 'q' to allow + leak-checking, as well as fix a buffer size in winnstr() call. + +20051015 + + correct order of use-clauses in rxvt-basic entry which made codes for + f1-f4 vt100-style rather than vt220-style (report by Gabor Z Papp). + + suppress configure check for gnatmake if Ada95/Makefile.in is not + found. + + correct a typo in configure --with-bool option for the case where + --without-cxx is used (report by Daniel Jacobowitz). + + add a note to INSTALL's discussion of --with-normal, pointing out + that one may wish to use --without-gpm to ensure a completely + static link (prompted by report by Felix von Leitner). + +20051010 5.5 release for upload to ftp.gnu.org + +20051008 + + document in demo_forms.c some portability issues. + +20051001 + + document side-effect of werase() which sets the cursor position. + + save/restore the current position in form field editing to make + overlay mode work. + +20050924 + + correct header dependencies in progs, allowing parallel make (report + by Daniel Jacobowitz). + + modify CF_BUILD_CC to ensure that pre-setting $BUILD_CC overrides + the configure check for --with-build-cc (report by Daniel Jacobowitz). + + modify CF_CFG_DEFAULTS to not use /usr as the default prefix for + NetBSD. + + update config.guess and config.sub from + http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ + +20050917 + + modify sed expression which computes path for /usr/lib/terminfo + symbolic link in install to ensure that it does not change unexpected + levels of the path (Gentoo #42336). + + modify default for --disable-lp64 configure option to reduce impact + on existing 64-bit builds. Enabling the _LP64 option may change the + size of chtype and mmask_t. However, for ABI 6, it is enabled by + default (report by Mike Frysinger). + + add configure script check for --enable-ext-mouse, bump ABI to 6 by + default if it is used. + + improve configure script logic for bumping ABI to omit this if the + --with-abi-version option was used. + + update address for Free Software Foundation in tack's source. + + correct wins_wch(), which was not marking the filler-cells of + multi-column characters (cf: 20041023). + +20050910 + + modify mouse initialization to ensure that Gpm_Open() is called only + once. Otherwise GPM gets confused in its initialization of signal + handlers (Debian #326709). + +20050903 + + modify logic for backspacing in a multiline form field to ensure that + it works even when the preceding line is full (report by Frank van + Vugt). + + remove comment about BUGS section of ncurses manpage (Debian #325481) + +20050827 + + document some workarounds for shared and libtool library + configurations in INSTALL (see --with-shared and --with-libtool). + + modify CF_GCC_VERSION and CF_GXX_VERSION macros to accommodate + cross-compilers which emit the platform name in their version + message, e.g., + arm-sa1100-linux-gnu-g++ (GCC) 4.0.1 + (report by Frank van Vugt). + +20050820 + + start updating documentation for upcoming 5.5 release. + + fix to make libtool and libtinfo work together again (cf: 20050122). + + fixes to allow building traces into libtinfo + + add debug trace to tic that shows if/how ncurses will write to the + lower corner of a terminal's screen. + + update llib-l* files. + +20050813 + + modify initializers in c++ binding to build with old versions of g++. + + improve special case for 20050115 repainting fix, ensuring that if + the first changed cell is not a character that the range to be + repainted is adjusted to start at a character's beginning (Debian + #316663). + +20050806 + + fixes to build on QNX 6.1 + + improve configure script checks for Intel 9.0 compiler. + + remove #include's for libc.h (obsolete). + + adjust ifdef's in curses.priv.h so that when cross-compiling to + produce comp_hash and make_keys, no dependency on wchar.h is needed. + That simplifies the build-cppflags (report by Frank van Vugt). + + move modules related to key-binding into libtinfo to fix linkage + problem caused by 20050430 changes to MKkeyname.sh (report by + Konstantin Andreev). + +20050723 + + updates/fixes for configure script macros from vile -TD + + make prism9's sgr string agree with the rest of the terminfo -TD + + make vt220's sgr0 string consistent with sgr string, do this for + several related cases -TD + + improve translation to termcap by filtering the 'me' (sgr0) strings + as in the runtime call to tgetent() (prompted by a discussion with + Thomas Klausner). + + improve tic check for sgr0 versus sgr(0), to help ensure that sgr0 + resets line-drawing. + +20050716 + + fix special cases for trimming sgr0 for hurd and vt220 (Debian + #318621). + + split-out _nc_trim_sgr0() from modifications made to tgetent(), to + allow it to be used by tic to provide information about the runtime + changes that would be made to sgr0 for termcap applications. + + modify make_sed.sh to make the group-name in the NAME section of + form/menu library manpage agree with the TITLE string when renaming + is done for Debian (Debian #78866). + +20050702 + + modify parameter type in c++ binding for insch() and mvwinsch() to + be consistent with underlying ncurses library (was char, is chtype). + + modify treatment of Intel compiler to allow _GNU_SOURCE to be defined + on Linux. + + improve configure check for nanosleep(), checking that it works since + some older systems such as AIX 4.3 have a nonworking version. + +20050625 + + update config.guess and config.sub from + http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ + + modify misc/shlib to work in test-directory. + + suppress $suffix in misc/run_tic.sh when cross-compiling. This + allows cross-compiles to use the host's tic program to handle the + "make install.data" step. + + improve description of $LINES and $COLUMNS variables in manpages + (prompted by report by Dave Ulrick). + + improve description of cross-compiling in INSTALL + + add NCURSES-Programming-HOWTO.html by Pradeep Padala + (see http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/). + + modify configure script to obtain soname for GPM library (discussion + with Daniel Jacobowitz). + + modify configure script so that --with-chtype option will still + compute the unsigned literals suffix for constants in curses.h + (report by Daniel Jacobowitz: + + patches from Daniel Jacobowitz: + + the man_db.renames entry for tack.1 was backwards. + + tack.1 had some 1m's that should have been 1M's. + + the section for curs_inwstr.3 was wrong. + +20050619 + + correction to --with-chtype option (report by Daniel Jacobowitz). + +20050618 + + move build-time edit_man.sh and edit_man.sed scripts to top directory + to simplify reusing them for renaming tack's manpage (prompted by a + review of Debian package). + + revert minor optimization from 20041030 (Debian #313609). + + libtool-specific fixes, tested with libtool 1.4.3, 1.5.0, 1.5.6, + 1.5.10 and 1.5.18 (all work except as noted previously for the c++ + install using libtool 1.5.0): + + modify the clean-rule in c++/Makefile.in to work with IRIX64 make + program. + + use $(LIBTOOL_UNINSTALL) symbol, overlooked in 20030830 + + add configure options --with-chtype and --with-mmask-t, to allow + overriding of the non-LP64 model's use of the corresponding types. + + revise test for size of chtype (and mmask_t), which always returned + "long" due to an uninitialized variable (report by Daniel Jacobowitz). + +20050611 + + change _tracef's that used "%p" format for va_list values to ignore + that, since on some platforms those are not pointers. + + fixes for long-formats in printf's due to largefile support. + +20050604 + + fixes for termcap support: + + reset pointer to _nc_curr_token.tk_name when the input stream is + closed, which could point to free memory (cf: 20030215). + + delink TERMTYPE data which is used by the termcap reader, so that + extended names data will be freed consistently. + + free pointer to TERMTYPE data in _nc_free_termtype() rather than + its callers. + + add some entrypoints for freeing permanently allocated data via + _nc_freeall() when NO_LEAKS is defined. + + amend 20041030 change to _nc_do_color to ensure that optimization is + applied only when the terminal supports back_color_erase (bce). + +20050528 + + add sun-color terminfo entry -TD + + correct a missing assignment in c++ binding's method + NCursesPanel::UserPointer() from 20050409 changes. + + improve configure check for large-files, adding check for dirent64 + from vile -TD + + minor change to configure script to improve linker options for the + Ada95 tree. + +20050515 + + document error conditions for ncurses library functions (report by + Stanislav Ievlev). + + regenerated html documentation for ada binding. + see ftp://ftp.invisible-island.net/ncurses/patches/gnathtml + +20050507 + + regenerated html documentation for manpages. + + add $(BUILD_EXEEXT) suffix to invocation of make_keys in + ncurses/Makefile (Gentoo #89772). + + modify c++/demo.cc to build with g++ -fno-implicit-templates option + (patch by Mike Frysinger). + + modify tic to filter out long extended names when translating to + termcap format. Only two characters are permissible for termcap + capability names. + +20050430 + + modify terminfo entries xterm-new and rxvt to add strings for + shift-, control-cursor keys. + + workaround to allow c++ binding to compile with g++ 2.95.3, which + has a broken implementation of static_cast<> (patch by Jeff Chua). + + modify initialization of key lookup table so that if an extended + capability (tic -x) string is defined, and its name begins with 'k', + it will automatically be treated as a key. + + modify test/keynames.c to allow for the possibility of extended + key names, e.g., via define_key(), or via "tic -x". + + add test/demo_termcap.c to show the contents of given entry via the + termcap interface. + +20050423 + + minor fixes for vt100/vt52 entries -TD + + add configure option --enable-largefile + + corrected libraries used to build Ada95/gen/gen, found in testing + gcc 4.0.0. + +20050416 + + update config.guess, config.sub + + modify configure script check for _XOPEN_SOURCE, disable that on + Darwin whose header files have problems (patch by Chris Zubrzycki). + + modify form library Is_Printable_String() to use iswprint() rather + than wcwidth() for determining if a character is printable. The + latter caused it to reject menu items containing non-spacing + characters. + + modify ncurses test program's F-test to handle non-spacing characters + by combining them with a reverse-video blank. + + review/fix several gcc -Wconversion warnings. + +20050409 + + correct an off-by-one error in m_driver() for mouse-clicks used to + position the mouse to a particular item. + + implement test/demo_menus.c + + add some checks in lib_mouse to ensure SP is set. + + modify C++ binding to make 20050403 changes work with the configure + --enable-const option. + +20050403 + + modify start_color() to return ERR if it cannot allocate memory. + + address g++ compiler warnings in C++ binding by adding explicit + member initialization, assignment operators and copy constructors. + Most of the changes simply preserve the existing semantics of the + binding, which can leak memory, etc., but by making these features + visible, it provides a framework for improving the binding. + + improve C++ binding using static_cast, etc. + + modify configure script --enable-warnings to add options to g++ to + correspond to the gcc --enable-warnings. + + modify C++ binding to use some C internal functions to make it + compile properly on Solaris (and other platforms). + +20050327 + + amend change from 20050320 to limit it to configurations with a + valid locale. + + fix a bug introduced in 20050320 which broke the translation of + nonprinting characters to uparrow form (report by Takahashi Tamotsu). + +20050326 + + add ifdef's for _LP64 in curses.h to avoid using wasteful 64-bits for + chtype and mmask_t, but add configure option --disable-lp64 in case + anyone used that configuration. + + update misc/shlib script to account for Mac OS X (report by Michail + Vidiassov). + + correct comparison for wrapping multibyte characters in + waddch_literal() (report by Takahashi Tamotsu). + +20050320 + + add -c and -w options to tset to allow user to suppress ncurses' + resizing of the terminal emulator window in the special case where it + is not able to detect the true size (report by Win Delvaux, Debian + #300419). + + modify waddch_nosync() to account for locale zn_CH.GBK, which uses + codes 128-159 as part of multibyte characters (report by Wang + WenRui, Debian #300512). + +20050319 + + modify ncurses.c 'd' test to make it work with 88-color + configuration, i.e., by implementing scrolling. + + improve scrolling in ncurses.c 'c' and 'C' tests, e.g., for 88-color + configuration. + +20050312 + + change tracemunch to use strict checking. + + modify ncurses.c 'p' test to test line-drawing within a pad. + + implement environment variable NCURSES_NO_UTF8_ACS to support + miscellaneous terminal emulators which ignore alternate character + set escape sequences when in UTF-8 mode. + +20050305 + + change NCursesWindow::err_handler() to a virtual function (request by + Steve Beal). + + modify fty_int.c and fty_num.c to handle wide characters (report by + Wolfgang Gutjahr). + + adapt fix for fty_alpha.c to fty_alnum.c, which also handled normal + and wide characters inconsistently (report by Wolfgang Gutjahr). + + update llib-* files to reflect internal interface additions/changes. + +20050226 + + improve test/configure script, adding tests for _XOPEN_SOURCE, etc., + from lynx. + + add aixterm-16color terminfo entry -TD + + modified xterm-new terminfo entry to work with tgetent() changes -TD + + extended changes in tgetent() from 20040710 to allow the substring of + sgr0 which matches rmacs to be at the beginning of the sgr0 string + (request by Thomas Wolff). Wolff says the visual effect in + combination with pre-20040710 ncurses is improved. + + fix off-by-one in winnstr() call which caused form field validation + of multibyte characters to ignore the last character in a field. + + correct logic in winsch() for inserting multibyte strings; the code + would clear cells after the insertion rather than push them to the + right (cf: 20040228). + + fix an inconsistency in Check_Alpha_Field() between normal and wide + character logic (report by Wolfgang Gutjahr). + +20050219 + + fix a bug in editing wide-characters in form library: deleting a + nonwide character modified the previous wide-character. + + update manpage to describe NCURSES_MOUSE_VERSION 2. + + correct manpage description of mouseinterval() (Debian #280687). + + add a note to default_colors.3x explaining why this extension was + added (Debian #295083). + + add traces to panel library. + +20050212 + + improve editing of wide-characters in form library: left/right + cursor movement, and single-character deletions work properly. + + disable GPM mouse support when $TERM happens to be prefixed with + "xterm". Gpm_Open() would otherwise assert that it can deal with + mouse events in this case. + + modify GPM mouse support so it closes the server connection when + the caller disables the mouse (report by Stanislav Ievlev). + +20050205 + + add traces for callback functions in form library. + + add experimental configure option --enable-ext-mouse, which defines + NCURSES_MOUSE_VERSION 2, and modifies the encoding of mouse events to + support wheel mice, which may transmit buttons 4 and 5. This works + with xterm and similar X terminal emulators (prompted by question by + Andreas Henningsson, this is also related to Debian #230990). + + improve configure macros CF_XOPEN_SOURCE and CF_POSIX_C_SOURCE to + avoid redefinition warnings on cygwin. + +20050129 + + merge remaining development changes for extended colors (mostly + complete, does not appear to break other configurations). + + add xterm-88color.dat (part of extended colors testing). + + improve _tracedump() handling of color pairs past 96. + + modify return-value from start_color() to return OK if colors have + already been started. + + modify curs_color.3x list error conditions for init_pair(), + pair_content() and color_content(). + + modify pair_content() to return -1 for consistency with init_pair() + if it corresponds to the default-color. + + change internal representation of default-color to allow application + to use color number 255. This does not affect the total number of + color pairs which are allowed. + + add a top-level tags rule. + +20050122 + + add a null-pointer check in wgetch() in case it is called without + first calling initscr(). + + add some null-pointer checks for SP, which is not set by libtinfo. + + modify misc/shlib to ensure that absolute pathnames are used. + + modify test/Makefile.in, etc., to link test programs only against the + libraries needed, e.g., omit form/menu/panel library for the ones + that are curses-specific. + + change SP->_current_attr to a pointer, adjust ifdef's to ensure that + libtinfo.so and libtinfow.so have the same ABI. The reason for this + is that the corresponding data which belongs to the upper-level + ncurses library has a different size in each model (report by + Stanislav Ievlev). + +20050115 + + minor fixes to allow test-compiles with g++. + + correct column value shown in tic's warnings, which did not account + for leading whitespace. + + add a check in _nc_trans_string() for improperly ended strings, i.e., + where a following line begins in column 1. + + modify _nc_save_str() to return a null pointer on buffer overflow. + + improve repainting while scrolling wide-character data (Eungkyu Song). + +20050108 + + merge some development changes to extend color capabilities. + +20050101 + + merge some development changes to extend color capabilities. + + fix manpage typo (FreeBSD report docs/75544). + + update config.guess, config.sub + > patches for configure script (Albert Chin-A-Young): + + improved fix to make mbstate_t recognized on HPUX 11i (cf: + 20030705), making vsscanf() prototype visible on IRIX64. Tested for + on HP-UX 11i, Solaris 7, 8, 9, AIX 4.3.3, 5.2, Tru64 UNIX 4.0D, 5.1, + IRIX64 6.5, Redhat Linux 7.1, 9, and RHEL 2.1, 3.0. + + print the result of the --disable-home-terminfo option. + + use -rpath when compiling with SGI C compiler. + +20041225 + + add trace calls to remaining public functions in form and menu + libraries. + + fix check for numeric digits in test/ncurses.c 'b' and 'B' tests. + + fix typo in test/ncurses.c 'c' test from 20041218. + +20041218 + + revise test/ncurses.c 'c' color test to improve use for xterm-88color + and xterm-256color, added 'C' test using the wide-character color_set + and attr_set functions. + +20041211 + + modify configure script to work with Intel compiler. + + fix an limit-check in wadd_wchnstr() which caused labels in the + forms-demo to be one character short. + + fix typo in curs_addchstr.3x (Jared Yanovich). + + add trace calls to most functions in form and menu libraries. + + update working-position for adding wide-characters when window is + scrolled (prompted by related report by Eungkyu Song). + +20041204 + + replace some references on Linux to wcrtomb() which use it to obtain + the length of a multibyte string with _nc_wcrtomb, since wcrtomb() is + broken in glibc (see Debian #284260). + + corrected length-computation in wide-character support for + field_buffer(). + + some fixes to frm_driver.c to allow it to accept multibyte input. + + modify configure script to work with Intel 8.0 compiler. + +20041127 + + amend change to setupterm() in 20030405 which would reuse the value + of cur_term if the same output was selected. This now reuses it only + when setupterm() is called from tgetent(), which has no notion of + separate SCREENs. Note that tgetent() must be called after initscr() + or newterm() to use this feature (Redhat #140326). + + add a check in CF_BUILD_CC macro to ensure that developer has given + the --with-build-cc option when cross-compiling (report by Alexandre + Campo). + + improved configure script checks for _XOPEN_SOURCE and + _POSIX_C_SOURCE (fix for IRIX 5.3 from Georg Schwarz, _POSIX_C_SOURCE + updates from lynx). + + cosmetic fix to test/gdc.c to recolor the bottom edge of the box + for consistency (comment by Dan Nelson). + +20041120 + + update wsvt25 terminfo entry -TD + + modify test/ins_wide.c to test all flavors of ins_wstr(). + + ignore filler-cells in wadd_wchnstr() when adding a cchar_t array + which consists of multi-column characters, since this function + constructs them (cf: 20041023). + + modify winnstr() to return multibyte character strings for the + wide-character configuration. + +20041106 + + fixes to make slk_set() and slk_wset() accept and store multibyte + or multicolumn characters. + +20041030 + + improve color optimization a little by making _nc_do_color() check + if the old/new pairs are equivalent to the default pair 0. + + modify assume_default_colors() to not require that + use_default_colors() be called first. + +20041023 + + modify term_attrs() to use termattrs(), add the extended attributes + such as enter_horizontal_hl_mode for WA_HORIZONTAL to term_attrs(). + + add logic in waddch_literal() to clear orphaned cells when one + multi-column character partly overwrites another. + + improved logic for clearing cells when a multi-column character + must be wrapped to a new line. + + revise storage of cells for multi-column characters to correct a + problem with repainting. In the old scheme, it was possible for + doupdate() to decide that only part of a multi-column character + should be repainted since the filler cells stored only an attribute + to denote them as fillers, rather than the character value and the + attribute. + +20041016 + + minor fixes for traces. + + add SP->_screen_acs_map[], used to ensure that mapping of missing + line-drawing characters is handled properly. For example, ACS_DARROW + is absent from xterm-new, and it was coincidentally displayed the + same as ACS_BTEE. + +20041009 + + amend 20021221 workaround for broken acs to reset the sgr, rmacs + and smacs strings as well. Also modify the check for screen's + limitations in that area to allow the multi-character shift-in + and shift-out which seem to work. + + change GPM initialization, using dl library to load it dynamically + at runtime (Debian #110586). + +20041002 + + correct logic for color pair in setcchar() and getcchar() (patch by + Marcin 'Qrczak' Kowalczyk). + + add t/T commands to ncurses b/B tests to allow a different color to + be tested for the attrset part of the test than is used in the + background color. + +20040925 + + fix to make setcchar() to work when its wchar_t* parameter is + pointing to a string which contains more data than can be converted. + + modify wget_wstr() and example in ncurses.c to work if wchar_t and + wint_t are different sizes (report by Marcin 'Qrczak' Kowalczyk). + +20040918 + + remove check in wget_wch() added to fix an infinite loop, appears to + have been working around a transitory glibc bug, and interferes + with normal operation (report by Marcin 'Qrczak' Kowalczyk). + + correct wadd_wch() and wecho_wch(), which did not pass the rendition + information (report by Marcin 'Qrczak' Kowalczyk). + + fix aclocal.m4 so that the wide-character version of ncurses gets + compiled as libncursesw.5.dylib, instead of libncurses.5w.dylib + (adapted from patch by James J Ramsey). + + change configure script for --with-caps option to indicate that it + is no longer experimental. + + change configure script to reflect the fact that --enable-widec has + not been "experimental" since 5.3 (report by Bruno Lustosa). + +20040911 + + add 'B' test to ncurses.c, to exercise some wide-character functions. + +20040828 + + modify infocmp -i option to match 8-bit controls against its table + entries, e.g., so it can analyze the xterm-8bit entry. + + add morphos terminfo entry, improve amiga-8bit entry (Pavel Fedin). + + correct translation of "%%" in terminfo format to termcap, e.g., + using "tic -C" (Redhat #130921). + + modified configure script CF_XOPEN_SOURCE macro to ensure that if + it defines _POSIX_C_SOURCE, that it defines it to a specific value + (comp.os.stratus newsgroup comment). + +20040821 + + fixes to build with Ada95 binding with gnat 3.4 (all warnings are + fatal, and gnat does not follow the guidelines for pragmas). + However that did find a coding error in Assume_Default_Colors(). + + modify several terminfo entries to ensure xterm mouse and cursor + visibility are reset in rs2 string: hurd, putty, gnome, + konsole-base, mlterm, Eterm, screen (Debian #265784, Debian #55637). + The xterm entries are left alone - old ones for compatibility, and + the new ones do not require this change. -TD + +20040814 + + fake a SIGWINCH in newterm() to accommodate buggy terminal emulators + and window managers (Debian #265631). + > terminfo updates -TD + + remove dch/dch1 from rxvt because they are implemented inconsistently + with the common usage of bce/ech + + remove khome from vt220 (vt220's have no home key) + + add rxvt+pcfkeys + +20040807 + + modify test/ncurses.c 'b' test, adding v/V toggles to cycle through + combinations of video attributes so that for instance bold and + underline can be tested. This made the legend too crowded, added + a help window as well. + + modify test/ncurses.c 'b' test to cycle through default colors if + the -d option is set. + + update putty terminfo entry (Robert de Bath). + +20040731 + + modify test/cardfile.c to allow it to read more data than can be + displayed. + + correct logic in resizeterm.c which kept it from processing all + levels of window hierarchy (reports by Folkert van Heusden, + Chris Share). + +20040724 + + modify "tic -cv" to ignore delays when comparing strings. Also + modify it to ignore a canceled sgr string, e.g., for terminals which + cannot properly combine attributes in one control sequence. + + corrections for gnome and konsole entries (Redhat #122815, patch by + Hans de Goede) + > terminfo updates -TD + + make ncsa-m rmacs/smacs consistent with sgr + + add sgr, rc/sc and ech to syscons entries + + add function-keys to decansi + + add sgr to mterm-ansi + + add sgr, civis, cnorm to emu + + correct/simplify cup in addrinfo + +20040717 + > terminfo updates -TD + + add xterm-pc-fkeys + + review/update gnome and gnome-rh90 entries (prompted by Redhat + #122815). + + review/update konsole entries + + add sgr, correct sgr0 for kterm and mlterm + + correct tsl string in kterm + +20040711 + + add configure option --without-xterm-new + +20040710 + + add check in wget_wch() for printable bytes that are not part of a + multibyte character. + + modify wadd_wchnstr() to render text using window's background + attributes. + + improve tic's check to compare sgr and sgr0. + + fix c++ directory's .cc.i rule. + + modify logic in tgetent() which adjusts the termcap "me" string + to work with ISO-2022 string used in xterm-new (cf: 20010908). + + modify tic's check for conflicting function keys to omit that if + converting termcap to termcap format. + + add -U option to tic and infocmp. + + add rmam/smam to linux terminfo entry (Trevor Van Bremen) + > terminfo updates -TD + + minor fixes for emu + + add emu-220 + + change wyse acsc strings to use 'i' map rather than 'I' + + fixes for avatar0 + + fixes for vp3a+ + +20040703 + + use tic -x to install terminfo database -TD + + add -x to infocmp's usage message. + + correct field used for comparing O_ROWMAJOR in set_menu_format() + (report/patch by Tony Li). + + fix a missing nul check in set_field_buffer() from 20040508 changes. + > terminfo updates -TD + + make xterm-xf86-v43 derived from xterm-xf86-v40 rather than + xterm-basic -TD + + align with xterm patch #192's use of xterm-new -TD + + update xterm-new and xterm-8bit for cvvis/cnorm strings -TD + + make xterm-new the default "xterm" entry -TD + +20040626 + + correct BUILD_CPPFLAGS substitution in ncurses/Makefile.in, to allow + cross-compiling from a separate directory tree (report/patch by + Dan Engel). + + modify is_term_resized() to ensure that window sizes are nonzero, + as documented in the manpage (report by Ian Collier). + + modify CF_XOPEN_SOURCE configure macro to make Hurd port build + (Debian #249214, report/patch by Jeff Bailey). + + configure-script mods from xterm, e.g., updates to CF_ADD_CFLAGS + + update config.guess, config.sub + > terminfo updates -TD + + add mlterm + + add xterm-xf86-v44 + + modify xterm-new aka xterm-xfree86 to accommodate luit, which + relies on G1 being used via an ISO-2022 escape sequence (report by + Juliusz Chroboczek) + + add 'hurd' entry + +20040619 + + reconsidered winsnstr(), decided after comparing other + implementations that wrapping is an X/Open documentation error. + + modify test/inserts.c to test all flavors of insstr(). + +20040605 + + add setlocale() calls to a few test programs which may require it: + demo_forms.c, filter.c, ins_wide.c, inserts.c + + correct a few misspelled function names in ncurses-intro.html (report + by Tony Li). + + correct internal name of key_defined() manpage, which conflicted with + define_key(). + +20040529 + + correct size of internal pad used for holding wide-character + field_buffer() results. + + modify data_ahead() to work with wide-characters. + +20040522 + + improve description of terminfo if-then-else expressions (suggested + by Arne Thomassen). + + improve test/ncurses.c 'd' test, allow it to use external file for + initial palette (added xterm-16color.dat and linux-color.dat), and + reset colors to the initial palette when starting/ending the test. + + change limit-check in init_color() to allow r/g/b component to + reach 1000 (cf: 20020928). + +20040516 + + modify form library to use cchar_t's rather than char's in the + wide-character configuration for storing data for field buffers. + + correct logic of win_wchnstr(), which did not work for more than + one cell. + +20040508 + + replace memset/memcpy usage in form library with for-loops to + simplify changing the datatype of FIELD.buf, part of wide-character + changes. + + fix some inconsistent use of #if/#ifdef (report by Alain Guibert). + +20040501 + + modify menu library to account for actual number of columns used by + multibyte character strings, in the wide-character configuration + (adapted from patch by Philipp Tomsich). + + add "-x" option to infocmp like tic's "-x", for use in "-F" + comparisons. This modifies infocmp to only report extended + capabilities if the -x option is given, making this more consistent + with tic. Some scripts may break, since infocmp previous gave this + information without an option. + + modify termcap-parsing to retain 2-character aliases at the beginning + of an entry if the "-x" option is used in tic. + +20040424 + + minor compiler-warning and test-program fixes. + +20040417 + + modify tic's missing-sgr warning to apply to terminfo only. + + free some memory leaks in tic. + + remove check in post_menu() that prevented menus from extending + beyond the screen (request by Max J. Werner). + + remove check in newwin() that prevents allocating windows + that extend beyond the screen. Solaris curses does this. + + add ifdef in test/color_set.c to allow it to compile with older + curses. + + add napms() calls to test/dots.c to make it not be a CPU hog. + +20040403 + + modify unctrl() to return null if its parameter does not correspond + to an unsigned char. + + add some limit-checks to guard isprint(), etc., from being used on + values that do not fit into an unsigned char (report by Sami Farin). + +20040328 + + fix a typo in the _nc_get_locale() change. + +20040327 + + modify _nc_get_locale() to use setlocale() to query the program's + current locale rather than using getenv(). This fixes a case in tin + which relies on legacy treatment of 8-bit characters when the locale + is not initialized (reported by Urs Jansen). + + add sgr string to screen's and rxvt's terminfo entries -TD. + + add a check in tic for terminfo entries having an sgr0 but no sgr + string. This confuses Tru64 and HPUX curses when combined with + color, e.g., making them leave line-drawing characters in odd places. + + correct casts used in ABSENT_BOOLEAN, CANCELLED_BOOLEAN, matches the + original definitions used in Debian package to fix PowerPC bug before + 20030802 (Debian #237629). + +20040320 + + modify PutAttrChar() and PUTC() macro to improve use of + A_ALTCHARSET attribute to prevent line-drawing characters from + being lost in situations where the locale would otherwise treat the + raw data as nonprintable (Debian #227879). + +20040313 + + fix a redefinition of CTRL() macro in test/view.c for AIX 5.2 (report + by Jim Idle). + + remove ".PP" after ".SH NAME" in a few manpages; this confuses + some apropos script (Debian #237831). + +20040306 + + modify ncurses.c 'r' test so editing commands, like inserted text, + set the field background, and the state of insert/overlay editing + mode is shown in that test. + + change syntax of dummy targets in Ada95 makefiles to work with pmake. + + correct logic in test/ncurses.c 'b' for noncolor terminals which + did not recognize a quit-command (cf: 20030419). + +20040228 + + modify _nc_insert_ch() to allow for its input to be part of a + multibyte string. + + split out lib_insnstr.c, to prepare to rewrite it. X/Open states + that this function performs wrapping, unlike all of the other + insert-functions. Currently it does not wrap. + + check for nl_langinfo(CODESET), use it if available (report by + Stanislav Ievlev). + + split-out CF_BUILD_CC macro, actually did this for lynx first. + + fixes for configure script CF_WITH_DBMALLOC and CF_WITH_DMALLOC, + which happened to work with bash, but not with Bourne shell (report + by Marco d'Itri via tin-dev). + +20040221 + + some changes to adapt the form library to wide characters, incomplete + (request by Mike Aubury). + + add symbol to curses.h which can be used to suppress include of + stdbool.h, e.g., + #define NCURSES_ENABLE_STDBOOL_H 0 + #include + (discussion on XFree86 mailing list). + +20040214 + + modify configure --with-termlib option to accept a value which sets + the name of the terminfo library. This would allow a packager to + build libtinfow.so renamed to coincide with libtinfo.so (discussion + with Stanislav Ievlev). + + improve documentation of --with-install-prefix, --prefix and + $(DESTDIR) in INSTALL (prompted by discussion with Paul Lew). + + add configure check if the compiler can use -c -o options to rename + its output file, use that to omit the 'cd' command which was used to + ensure object files are created in a separate staging directory + (prompted by comments by Johnny Wezel, Martin Mokrejs). + +20040208 5.4 release for upload to ftp.gnu.org + + update TO-DO. + +20040207 pre-release + + minor fixes to _nc_tparm_analyze(), i.e., do not count %i as a param, + and do not count %d if it follows a %p. + + correct an inconsistency between handling of codes in the 128-255 + range, e.g., as illustrated by test/ncurses.c f/F tests. In POSIX + locale, the latter did not show printable results, while the former + did. + + modify MKlib_gen.sh to compensate for broken C preprocessor on Mac + OS X, which alters "%%" to "% % " (report by Robert Simms, fix + verified by Scott Corscadden). + +20040131 pre-release + + modify SCREEN struct to align it between normal/wide curses flavors + to simplify future changes to build a single version of libtinfo + (patch by Stanislav Ievlev). + + document handling of carriage return by addch() in manpage. + + document special features of unctrl() in manpage. + + documented interface changes in INSTALL. + + corrected control-char test in lib_addch.c to account for locale + (Debian #230335, cf: 971206). + + updated test/configure.in to use AC_EXEEXT and AC_OBJEXT. + + fixes to compile Ada95 binding with Debian gnat 3.15p-4 package. + + minor configure-script fixes for older ports, e.g., BeOS R4.5. + +20040125 pre-release + + amend change to PutAttrChar() from 20030614 which computed the number + of cells for a possibly multi-cell character. The 20030614 change + forced the cell to a blank if the result from wcwidth() was not + greater than zero. However, wcwidth() called for parameters in the + range 128-255 can give this return value. The logic now simply + ensures that the number of cells is greater than zero without + modifying the displayed value. + +20040124 pre-release + + looked good for 5.4 release for upload to ftp.gnu.org (but see above) + + modify configure script check for ranlib to use AC_CHECK_TOOL, since + that works better for cross-compiling. + +20040117 pre-release + + modify lib_get_wch.c to prefer mblen/mbtowc over mbrlen/mbrtowc to + work around core dump in Solaris 8's locale support, e.g., for + zh_CN.GB18030 (report by Saravanan Bellan). + + add includes for and in configure script macro + to make check work with Tru64 4.0d. + + add terminfo entry for U/Win -TD + + add terminfo entries for SFU aka Interix aka OpenNT (Federico + Bianchi). + + modify tput's error messages to prefix them with the program name + (report by Vincent Lefevre, patch by Daniel Jacobowitz (see Debian + #227586)). + + correct a place in tack where exit_standout_mode was used instead of + exit_attribute_mode (patch by Jochen Voss (see Debian #224443)). + + modify c++/cursesf.h to use const in the Enumeration_Field method. + + remove an ambiguous (actually redundant) method from c++/cursesf.h + + make $HOME/.terminfo update optional (suggested by Stanislav Ievlev). + + improve sed script which extracts libtool's version in the + CF_WITH_LIBTOOL macro. + + add ifdef'd call to AC_PROG_LIBTOOL to CF_WITH_LIBTOOL macro (to + simplify local patch for Albert Chin-A-Young).. + + add $(CXXFLAGS) to link command in c++/Makefile.in (adapted from + patch by Albert Chin-A-Young).. + + fix a missing substitution in configure.in for "$target" needed for + HPUX .so/.sl case. + + resync CF_XOPEN_SOURCE configure macro with lynx; fixes IRIX64 and + NetBSD 1.6 conflicts with _XOPEN_SOURCE. + + make check for stdbool.h more specific, to ensure that including it + will actually define/declare bool for the configured compiler. + + rewrite ifdef's in curses.h relating NCURSES_BOOL and bool. The + intention of that is to #define NCURSES_BOOL as bool when the + compiler declares bool, and to #define bool as NCURSES_BOOL when it + does not (reported by Jim Gifford, Sam Varshavchik, cf: 20031213). + +20040110 pre-release + + change minor version to 4, i.e., ncurses 5.4 + + revised/improved terminfo entries for tvi912b, tvi920b (Benjamin C W + Sittler). + + simplified ncurses/base/version.c by defining the result from the + configure script rather than using sprintf (suggested by Stanislav + Ievlev). + + remove obsolete casts from c++/cursesw.h (reported by Stanislav + Ievlev). + + modify configure script so that when configuring for termlib, programs + such as tic are not linked with the upper-level ncurses library + (suggested by Stanislav Ievlev). + + move version.c from ncurses/base to ncurses/tinfo to allow linking + of tic, etc., using libtinfo (suggested by Stanislav Ievlev). + +20040103 + + adjust -D's to build ncursesw on OpenBSD. + + modify CF_PROG_EXT to make OS/2 build with EXEEXT. + + add pecho_wchar(). + + remove include from lib_slk_wset.c which is not needed (or + available) on older platforms. + +20031227 + + add -D's to build ncursew on FreeBSD 5.1. + + modify shared library configuration for FreeBSD 4.x/5.x to add the + soname information (request by Marc Glisse). + + modify _nc_read_tic_entry() to not use MAX_ALIAS, but PATH_MAX only + for limiting the length of a filename in the terminfo database. + + modify termname() to return the terminal name used by setupterm() + rather than $TERM, without truncating to 14 characters as documented + by X/Open (report by Stanislav Ievlev, cf: 970719). + + re-add definition for _BSD_TYPES, lost in merge (cf: 20031206). + +20031220 + + add configure option --with-manpage-format=catonly to address + behavior of BSDI, allow install of man+cat files on NetBSD, whose + behavior has diverged by requiring both to be present. + + remove leading blanks from comment-lines in manlinks.sed script to + work with Tru64 4.0d. + + add screen.linux terminfo entry (discussion on mutt-users mailing + list). + +20031213 + + add a check for tic to flag missing backslashes for termcap + continuation lines. ncurses reads the whole entry, but termcap + applications do not. + + add configure option "--with-manpage-aliases" extending + "--with-manpage-aliases" to provide the option of generating ".so" + files rather than symbolic links for manpage aliases. + + add bool definition in include/curses.h.in for configurations with no + usable C++ compiler (cf: 20030607). + + fix pathname of SigAction.h for building with --srcdir (reported by + Mike Castle). + +20031206 + + folded ncurses/base/sigaction.c into includes of ncurses/SigAction.h, + since that header is used only within ncurses/tty/lib_tstp.c, for + non-POSIX systems (discussion with Stanislav Ievlev). + + remove obsolete _nc_outstr() function (report by Stanislav Ievlev + ). + + add test/background.c and test/color_set.c + + modify color_set() function to work with color pair 0 (report by + George Andreou ). + + add configure option --with-trace, since defining TRACE seems too + awkward for some cases. + + remove a call to _nc_free_termtype() from read_termtype(), since the + corresponding buffer contents were already zeroed by a memset (cf: + 20000101). + + improve configure check for _XOPEN_SOURCE and related definitions, + adding special cases for Solaris' __EXTENSIONS__ and FreeBSD's + __BSD_TYPES (reports by Marc Glisse ). + + small fixes to compile on Solaris and IRIX64 using cc. + + correct typo in check for pre-POSIX sort options in MKkey_defs.sh + (cf: 20031101). + +20031129 + + modify _nc_gettime() to avoid a problem with arithmetic on unsigned + values (Philippe Blain). + + improve the nanosleep() logic in napms() by checking for EINTR and + restarting (Philippe Blain). + + correct expression for "%D" in lib_tgoto.c (Juha Jarvi + ). + +20031122 + + add linux-vt terminfo entry (Andrey V Lukyanov ). + + allow "\|" escape in terminfo; tic should not warn about this. + + save the full pathname of the trace-file the first time it is opened, + to avoid creating it in different directories if the application + opens and closes it while changing its working directory. + + modify configure script to provide a non-empty default for + $BROKEN_LINKER + +20031108 + + add DJGPP to special case of DOS-style drive letters potentially + appearing in TERMCAP environment variable. + + fix some spelling in comments (reports by Jason McIntyre, Jonathon + Gray). + + update config.guess, config.sub + +20031101 + + fix a memory leak in error-return from setupterm() (report by + Stanislav Ievlev ). + + use EXEEXT and OBJEXT consistently in makefiles. + + amend fixes for cross-compiling to use separate executable-suffix + BUILD_EXEEXT (cf: 20031018). + + modify MKkey_defs.sh to check for sort utility that does not + recognize key options, e.g., busybox (report by Peter S Mazinger + ). + + fix potential out-of-bounds indexing in _nc_infotocap() (found by + David Krause using some of the new malloc debugging features + under OpenBSD, patch by Ted Unangst). + + modify CF_LIB_SUFFIX for Itanium releases of HP-UX, which use a + ".so" suffix (patch by Jonathan Ward ). + +20031025 + + update terminfo for xterm-xfree86 -TD + + add check for multiple "tc=" clauses in a termcap to tic. + + check for missing op/oc in tic. + + correct _nc_resolve_uses() and _nc_merge_entry() to allow infocmp and + tic to show cancelled capabilities. These functions were ignoring + the state of the target entry, which should be untouched if cancelled. + + correct comment in tack/output.c (Debian #215806). + + add some null-pointer checks to lib_options.c (report by Michael + Bienia). + + regenerated html documentation. + + correction to tar-copy.sh, remove a trap command that resulted in + leaving temporary files (cf: 20030510). + + remove contact/maintainer addresses for Juergen Pfeifer (his request). + +20031018 + + updated test/configure to reflect changes for libtool (cf: 20030830). + + fix several places in tack/pad.c which tested and used the parameter- + and parameterless strings inconsistently, i.e., in pad_rin(), + pad_il(), pad_indn() and pad_dl() (Debian #215805). + + minor fixes for configure script and makefiles to cleanup executables + generated when cross-compiling for DJGPP. + + modify infocmp to omit check for $TERM for operations that do not + require it, e.g., "infocmp -e" used to build fallback list (report by + Egmont Koblinger). + +20031004 + + add terminfo entries for DJGPP. + + updated note about maintainer in ncurses-intro.html + +20030927 + + update terminfo entries for gnome terminal. + + modify tack to reset colors after each color test, correct a place + where exit_standout_mode was used instead of exit_attribute_mode. + + improve tack's bce test by making it set colors other than black + on white. + + plug a potential recursion between napms() and _nc_timed_wait() + (report by Philippe Blain). + +20030920 + + add --with-rel-version option to allow workaround to allow making + libtool on Darwin generate the "same" library names as with the + --with-shared option. The Darwin ld program does not work well + with a zero as the minor-version value (request by Chris Zubrzycki). + + modify CF_MIXEDCASE_FILENAMES macro to work with cross-compiling. + + modify tack to allow it to run from fallback terminfo data. + > patch by Philippe Blain: + + improve PutRange() by adjusting call to EmitRange() and corresponding + return-value to not emit unchanged characters on the end of the + range. + + improve a check for changed-attribute by exiting a loop when the + change is found. + + improve logic in TransformLine(), eliminating a duplicated comparison + in the clr_bol logic. + +20030913 + > patch by Philippe Blain: + + in ncurses/tty/lib_mvcur.c, + move the label 'nonlocal' just before the second gettimeofday() to + be able to compute the diff time when 'goto nonlocal' used. + Rename 'msec' to 'microsec' in the debug-message. + + in ncurses/tty/lib_mvcur.c, + Use _nc_outch() in carriage return/newline movement instead of + putchar() which goes to stdout. Move test for xold>0 out of loop. + + in ncurses/tinfo/setbuf.c, + Set the flag SP->_buffered at the end of operations when all has been + successful (typeMalloc can fail). + + simplify NC_BUFFERED macro by moving check inside _nc_setbuf(). + +20030906 + + modify configure script to avoid using "head -1", which does not + work if POSIXLY_CORRECT (sic) is set. + + modify run_tic.in to avoid using wrong shared libraries when + cross-compiling (Dan Kegel). + +20030830 + + alter configure script help message to make it clearer that + --with-build-cc does not specify a cross-compiler (suggested by Dan + Kegel ). + + modify configure script to accommodate libtool 1.5, as well as add an + parameter to the "--with-libtool" option which can specify the + pathname of libtool (report by Chris Zubrzycki). We note that + libtool 1.5 has more than one bug in its C++ support, so it is not + able to install libncurses++, for instance, if $DESTDIR or the option + --with-install-prefix is used. + +20030823 + > patch by Philippe Blain: + + move assignments to SP->_cursrow, SP->_curscol into online_mvcur(). + + make baudrate computation in delay_output() consistent with the + assumption in _nc_mvcur_init(), i.e., a byte is 9 bits. + +20030816 + + modify logic in waddch_literal() to take into account zh_TW.Big5 + whose multibyte sequences may contain "printable" characters, e.g., + a "g" in the sequence "\247g" (Debian #204889, cf: 20030621). + + improve storage used by _nc_safe_strcpy() by ensuring that the size + is reset based on the initialization call, in case it were called + after other strcpy/strcat calls (report by Philippe Blain). + > patch by Philippe Blain: + + remove an unused ifdef for REAL_ATTR & WANT_CHAR + + correct a place where _cup_cost was used rather than _cuu_cost + +20030809 + + fix a small memory leak in _nc_free_termtype(). + + close trace-file if trace() is called with a zero parameter. + + free memory allocated for soft-key strings, in delscreen(). + + fix an allocation size in safe_sprintf.c for the "*" format code. + + correct safe_sprintf.c to not return a null pointer if the format + happens to be an empty string. This applies to the "configure + --enable-safe-sprintf" option (Redhat #101486). + +20030802 + + modify casts used for ABSENT_BOOLEAN and CANCELLED_BOOLEAN (report by + Daniel Jacobowitz). + > patch by Philippe Blain: + + change padding for change_scroll_region to not be proportional to + the size of the scroll-region. + + correct error-return in _nc_safe_strcat(). + +20030726 + + correct limit-checks in _nc_scroll_window() (report and test-case by + Thomas Graf cf: 20011020). + + re-order configure checks for _XOPEN_SOURCE to avoid conflict with + _GNU_SOURCE check. + +20030719 + + use clr_eol in preference to blanks for bce terminals, so select and + paste will have fewer trailing blanks, e.g., when using xterm + (request by Vincent Lefevre). + + correct prototype for wunctrl() in manpage. + + add configure --with-abi-version option (discussion with Charles + Wilson). + > cygwin changes from Charles Wilson: + + aclocal.m4: on cygwin, use autodetected prefix for import + and static lib, but use "cyg" for DLL. + + include/ncurses_dll.h: correct the comments to reflect current + status of cygwin/mingw port. Fix compiler warning. + + misc/run_tic.in: ensure that tic.exe can find the uninstalled + DLL, by adding the lib-directory to the PATH variable. + + misc/terminfo.src (nxterm|xterm-color): make xterm-color + primary instead of nxterm, to match XFree86's xterm.terminfo + usage and to prevent circular links. + (rxvt): add additional codes from rxvt.org. + (rxvt-color): new alias + (rxvt-xpm): new alias + (rxvt-cygwin): like rxvt, but with special acsc codes. + (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or + with a "native" MSWin GUI. Each takes different acsc codes, + which are both different from the "normal" rxvt's acsc. + (cygwin): cygwin-in-cmd.exe window. Lots of fixes. + (cygwinDBG): ditto. + + mk-1st.awk: use "cyg" for the DLL prefix, but "lib" for import + and static libs. + +20030712 + + update config.guess, config.sub + + add triples for configuring shared libraries with the Debian + GNU/FreeBSD packages (patch by Robert Millan ). + +20030705 + + modify CF_GCC_WARNINGS so it only applies to gcc, not g++. Some + platforms have installed g++ along with the native C compiler, which + would not accept gcc warning options. + + add -D_XOPEN_SOURCE=500 when configuring with --enable-widec, to + get mbstate_t declaration on HPUX 11.11 (report by David Ellement). + + add _nc_pathlast() to get rid of casts in _nc_basename() calls. + + correct a sign-extension in wadd_wch() and wecho_wchar() from + 20030628 (report by Tomohiro Kubota). + + work around omission of btowc() and wctob() from wide-character + support (sic) in NetBSD 1.6 using mbtowc() and wctomb() (report by + Gabor Z Papp). + + add portability note to curs_get_wstr.3x (Debian #199957). + +20030628 + + rewrite wadd_wch() and wecho_wchar() to call waddch() and wechochar() + respectively, to avoid calling waddch_noecho() with wide-character + data, since that function assumes its input is 8-bit data. + Similarly, modify waddnwstr() to call wadd_wch(). + + remove logic from waddnstr() which transformed multibyte character + strings into wide-characters. Rewrite of waddch_literal() from + 20030621 assumes its input is raw multibyte data rather than wide + characters (report by Tomohiro Kubota). + +20030621 + + write getyx() and related 2-return macros in terms of getcury(), + getcurx(), etc. + + modify waddch_literal() in case an application passes bytes of a + multibyte character directly to waddch(). In this case, waddch() + must reassemble the bytes into a wide-character (report by Tomohiro + Kubota ). + +20030614 + + modify waddch_literal() in case a multibyte value occupies more than + two cells. + + modify PutAttrChar() to compute the number of character cells that + are used in multibyte values. This fixes a problem displaying + double-width characters (report/test by Mitsuru Chinen + ). + + add a null-pointer check for result of keyname() in _tracechar() + + modify _tracechar() to work around glibc sprintf bug. + +20030607 + + add a call to setlocale() in cursesmain.cc, making demo display + properly in a UTF-8 locale. + + add a fallback definition in curses.priv.h for MB_LEN_MAX (prompted + by discussion with Gabor Z Papp). + + use macros NCURSES_ACS() and NCURSES_WACS() to hide cast needed to + appease -Wchar-subscript with g++ 3.3 (Debian #195732). + + fix a redefinition of $RANLIB in the configure script when libtool + is used, which broke configure on Mac OS X (report by Chris Zubrzycki + ). + + simplify ifdef for bool declaration in curses.h.in (suggested by + Albert Chin-A-Young). + + remove configure script check to allow -Wconversion for older + versions of gcc (suggested by Albert Chin-A-Young). + +20030531 + + regenerated html manpages. + + modify ifdef's in curses.h.in that disabled use of __attribute__() + for g++, since recent versions implement the cases which ncurses uses + (Debian #195230). + + modify _nc_get_token() to handle a case where an entry has no + description, and capabilities begin on the same line as the entry + name. + + fix a typo in ncurses_dll.h reported by gcc 3.3. + + add an entry for key_defined.3x to man_db.renames. + +20030524 + + modify setcchar() to allow converting control characters to complex + characters (report/test by Mitsuru Chinen ). + + add tkterm entry -TD + + modify parse_entry.c to allow a terminfo entry with a leading + 2-character name (report by Don Libes). + + corrected acsc in screen.teraterm, which requires a PC-style mapping. + + fix trace statements in read_entry.c to use lseek() rather than + tell(). + + fix signed/unsigned warnings from Sun's compiler (gcc should give + these warnings, but it is unpredictable). + + modify configure script to omit -Winline for gcc 3.3, since that + feature is broken. + + modify manlinks.sed to add a few functions that were overlooked since + they return function pointers: field_init, field_term, form_init, + form_term, item_init, item_term, menu_init and menu_term. + +20030517 + + prevent recursion in wgetch() via wgetnstr() if the connection cannot + be switched between cooked/raw modes because it is not a TTY (report + by Wolfgang Gutjahr ). + + change parameter of define_key() and key_defined() to const (prompted + by Debian #192860). + + add a check in test/configure for ncurses extensions, since there + are some older versions, etc., which would not compile with the + current test programs. + + corrected demo in test/ncurses.c of wgetn_wstr(), which did not + convert wchar_t string to multibyte form before printing it. + + corrections to lib_get_wstr.c: + + null-terminate buffer passed to setcchar(), which occasionally + failed. + + map special characters such as erase- and kill-characters into + key-codes so those will work as expected even if they are not + mentioned in the terminfo. + + modify PUTC() and Charable() macros to make wide-character line + drawing work for POSIX locale on Linux console (cf: 20021221). + +20030510 + + make typography for program options in manpages consistent (report + by Miloslav Trmac ). + + correct dependencies in Ada95/src/Makefile.in, so the builds with + "--srcdir" work (report by Warren L Dodge). + + correct missing definition of $(CC) in Ada95/gen/Makefile.in + (reported by Warren L Dodge ). + + fix typos and whitespace in manpages (patch by Jason McIntyre + ). + +20030503 + + fix form_driver() cases for REQ_CLR_EOF, REQ_CLR_EOL, REQ_DEL_CHAR, + REQ_DEL_PREV and REQ_NEW_LINE, which did not ensure the cursor was at + the editing position before making modifications. + + add test/demo_forms and associated test/edit_field.c demos. + + modify test/configure.in to use test/modules for the list of objects + to compile rather than using the list of programs. + +20030419 + + modify logic of acsc to use the original character if no mapping is + defined, noting that Solaris does this. + + modify ncurses 'b' test to avoid using the acs_map[] array since + 20021231 changes it to no longer contain information from the acsc + string. + + modify makefile rules in c++, progs, tack and test to ensure that + the compiler flags (e.g., $CFLAGS or $CCFLAGS) are used in the link + command (report by Jose Luis Rico Botella ). + + modify soft-key initialization to use A_REVERSE if A_STANDOUT would + not be shown when colors are used, i.e., if ncv#1 is set in the + terminfo as is done in "screen". + +20030412 + + add a test for slk_color(), in ncurses.c + + fix some issues reported by valgrind in the slk_set() and slk_wset() + code, from recent rewrite. + + modify ncurses 'E' test to use show previous label via slk_label(), + as in 'e' test. + + modify wide-character versions of NewChar(), NewChar2() macros to + ensure that the whole struct is initialized. + +20030405 + + modify setupterm() to check if the terminfo and terminal-modes have + already been read. This ensures that it does not reinvoke + def_prog_mode() when an application calls more than one function, + such as tgetent() and initscr() (report by Olaf Buddenhagen). + +20030329 + + add 'E' test to ncurses.c, to exercise slk_wset(). + + correct handling of carriage-return in wgetn_wstr(), used in demo of + slk_wset(). + + first draft of slk_wset() function. + +20030322 + + improved warnings in tic when suppressing items to fit in termcap's + 1023-byte limit. + + built a list in test/README showing which externals are being used + by either programs in the test-directory or via internal library + calls. + + adjust include-options in CF_ETIP_DEFINES to avoid missing + ncurses_dll.h, fixing special definitions that may be needed for + etip.h (reported by Greg Schafer ). + +20030315 + + minor fixes for cardfile.c, to make it write the updated fields to + a file when ^W is given. + + add/use _nc_trace_bufcat() to eliminate some fixed buffer limits in + trace code. + +20030308 + + correct a case in _nc_remove_string(), used by define_key(), to avoid + infinite loop if the given string happens to be a substring of other + strings which are assigned to keys (report by John McCutchan). + + add key_defined() function, to tell which keycode a string is bound + to (discussion with John McCutchan ). + + correct keybound(), which reported definitions in the wrong table, + i.e., the list of definitions which are disabled by keyok(). + + modify demo_keydef.c to show the details it changes, and to check + for errors. + +20030301 + + restructured test/configure script, make it work for libncursesw. + + add description of link_fieldtype() to manpage (report by + L Dee Holtsclaw ). + +20030222 + + corrected ifdef's relating to configure check for wchar_t, etc. + + if the output is a socket or other non-tty device, use 1 millisecond + for the cost in mvcur; previously it was 9 milliseconds because the + baudrate was not known. + + in _nc_get_tty_mode(), initialize the TTY buffer on error, since + glibc copies uninitialized data in that case, as noted by valgrind. + + modify tput to use the same parameter analysis as tparm() does, to + provide for user-defined strings, e.g., for xterm title, a + corresponding capability might be + title=\E]2;%p1%s^G, + + modify MKlib_gen.sh to avoid passing "#" tokens through the C + preprocessor. This works around Mac OS X's preprocessor, which + insists on adding a blank on each side of the token (report/analysis + by Kevin Murphy ). + +20030215 + + add configure check for wchar_t and wint_t types, rather than rely + on preprocessor definitions. Also work around for gcc fixinclude + bug which creates a shadow copy of curses.h if it sees these symbols + apparently typedef'd. + + if database is disabled, do not generate run_tic.sh + + minor fixes for memory-leak checking when termcap is read. + +20030208 + + add checking in tic for incomplete line-drawing character mapping. + + updated configure script to reflect fix for AC_PROG_GCC_TRADITIONAL, + which is broken in autoconf 2.5x for Mac OS X 10.2.3 (report by + Gerben Wierda ). + + make return value from _nc_printf_string() consistent. Before, + depending on whether --enable-safe-sprintf was used, it might not be + cached for reallocating. + +20030201 + + minor fixes for memory-leak checking in lib_tparm.c, hardscroll.c + + correct a potentially-uninitialized value if _read_termtype() does + not read as much data as expected (report by Wolfgang Rohdewald + ). + + correct several places where the aclocal.m4 macros relied on cache + variable names which were incompatible (as usual) between autoconf + 2.13 and 2.5x, causing the test for broken-linker to give incorrect + results (reports by Gerben Wierda and Thomas Esser + ). + + do not try to open gpm mouse driver if standard output is not a tty; + the gpm library does not make this check (bug report for dialog + by David Oliveira ). + +20030125 + + modified emx.src to correspond more closely to terminfo.src, added + emx-base to the latter -TD + + add configure option for FreeBSD sysmouse, --with-sysmouse, and + implement support for that in lib_mouse.c, lib_getch.c + +20030118 + + revert 20030105 change to can_clear_with(), does not work for the + case where the update is made on cells which are blanks with + attributes, e.g., reverse. + + improve ifdef's to guard against redefinition of wchar_t and wint_t + in curses.h (report by Urs Jansen). + +20030111 + + improve mvcur() by checking if it is safe to move when video + attributes are set (msgr), and if not, reset/restore attributes + within that function rather than doing it separately in the GoTo() + function in tty_update.c (suggested by Philippe Blain). + + add a message in run_tic.in to explain more clearly what does not + work when attempting to create a symbolic link for /usr/lib/terminfo + on OS/2 and other platforms with no symbolic links (report by John + Polterak). + + change several sed scripts to avoid using "\+" since it is not a BRE + (basic regular expression). One instance caused terminfo.5 to be + misformatted on FreeBSD (report by Kazuo Horikawa + (see FreeBSD docs/46709)). + + correct misspelled 'wint_t' in curs_get_wch.3x (Michael Elkins). + +20030105 + + improve description of terminfo operators, especially static/dynamic + variables (comments by Mark I Manning IV ). + + demonstrate use of FIELDTYPE by modifying test/ncurses 'r' test to + use the predefined TYPE_ALPHA field-type, and by defining a + specialized type for the middle initial/name. + + fix MKterminfo.sh, another workaround for POSIXLY_CORRECT misfeature + of sed 4.0 + > patch by Philippe Blain: + + optimize can_clear_with() a little by testing first if the parameter + is indeed a "blank". + + simplify ClrBottom() a little by allowing it to use clr_eos to clear + sections as small as one line. + + improve ClrToEOL() by checking if clr_eos is available before trying + to use it. + + use tputs() rather than putp() in a few cases in tty_update.c since + the corresponding delays are proportional to the number of lines + affected: repeat_char, clr_eos, change_scroll_region. + +20021231 + + rewrite of lib_acs.c conflicts with copying of SCREEN acs_map to/from + global acs_map[] array; removed the lines that did the copying. + +20021228 + + change some overlooked tputs() calls in scrolling code to use putp() + (report by Philippe Blain). + + modify lib_getch.c to avoid recursion via wgetnstr() when the input + is not a tty and consequently mode-changes do not work (report by + ). + + rewrote lib_acs.c to allow PutAttrChar() to decide how to render + alternate-characters, i.e., to work with Linux console and UTF-8 + locale. + + correct line/column reference in adjust_window(), needed to make + special windows such as curscr track properly when resizing (report + by Lucas Gonze ). + > patch by Philippe Blain: + + correct the value used for blank in ClrBottom() (broken in 20000708). + + correct an off-by-one in GoTo() parameter in _nc_scrolln(). + +20021221 + + change several tputs() calls in scrolling code to use putp(), to + enable padding which may be needed for some terminals (patch by + Philippe Blain). + + use '%' as sed substitute delimiter in run_tic script to avoid + problems with pathname delimiters such as ':' and '@' (report by John + Polterak). + + implement a workaround so that line-drawing works with screen's + crippled UTF-8 support (tested with 3.9.13). This only works with + the wide-character support (--enable-widec); the normal library will + simply suppress line-drawing when running in a UTF-8 locale in screen. + +20021214 + + allow BUILD_CC and related configure script variables to be + overridden from the environment. + + make build-tools variables in ncurses/Makefile.in consistent with + the configure script variables (report by Maciej W Rozycki). + + modify ncurses/modules to allow + configure --disable-leaks --disable-ext-funcs + to build (report by Gary Samuelson). + + fix a few places in configure.in which lacked quotes (report by + Gary Samuelson ). + + correct handling of multibyte characters in waddch_literal() which + force wrapping because they are started too late on the line (report + by Sam Varshavchik). + + small fix for CF_GNAT_VERSION to ignore the help-message which + gnatmake adds to its version-message. + > Maciej W Rozycki : + + use AC_CHECK_TOOL to get proper values for AR and LD for cross + compiling. + + use $cross_compiling variable in configure script rather than + comparing $host_alias and $target alias, since "host" is + traditionally misused in autoconf to refer to the target platform. + + change configure --help message to use "build" rather than "host" + when referring to the --with-build-XXX options. + +20021206 + + modify CF_GNAT_VERSION to print gnatmake's version, and to allow for + possible gnat versions such as 3.2 (report by Chris Lingard + ). + + modify #define's for CKILL and other default control characters in + tset to use the system's default values if they are defined. + + correct interchanged defaults for kill and interrupt characters + in tset, which caused it to report unnecessarily (Debian #171583). + + repair check for missing C++ compiler, which is broken in autoconf + 2.5x by hardcoding it to g++ (report by Martin Mokrejs). + + update config.guess, config.sub (2002-11-30) + + modify configure script to skip --with-shared, etc., when the + --with-libtool option is given, since they would be ignored anyway. + + fix to allow "configure --with-libtool --with-termlib" to build. + + modify configure script to show version number of libtool, to help + with bug reports. libtool still gets confused if the installed + ncurses libraries are old, since it ignores the -L options at some + point (tested with libtool 1.3.3 and 1.4.3). + + reorder configure script's updating of $CPPFLAGS and $CFLAGS to + prevent -I options in the user's environment from introducing + conflicts with the build -I options (may be related to reports by + Patrick Ash and George Goffe). + + rename test/define_key.c to test/demo_defkey.c, test/keyok.c to + test/demo_keyok.c to allow building these with libtool. + +20021123 + + add example program test/define_key.c for define_key(). + + add example program test/keyok.c for keyok(). + + add example program test/ins_wide.c for wins_wch() and wins_wstr(). + + modify wins_wch() and wins_wstr() to interpret tabs by using the + winsch() internal function. + + modify setcchar() to allow for wchar_t input strings that have + more than one spacing character. + +20021116 + + fix a boundary check in lib_insch.c (patch by Philippe Blain). + + change type for *printw functions from NCURSES_CONST to const + (prompted by comment by Pedro Palhoto Matos , + but really from a note on X/Open's website stating that either is + acceptable, and the latter will be used in a future revision). + + add xterm-1002, xterm-1003 terminfo entries to demonstrate changes in + lib_mouse.c (20021026) -TD + + add screen-bce, screen-s entries from screen 3.9.13 (report by + Adam Lazur ) -TD + + add mterm terminfo entries -TD + +20021109 + + split-out useful fragments in terminfo for vt100 and vt220 numeric + keypad, i.e., vt100+keypad, vt100+pfkeys, vt100+fnkeys and + vt220+keypad. The last as embedded in various entries had ka3 and + kb2 interchanged (report/discussion with Leonard den Ottolander + ). + + add check in tic for keypads consistent with vt100 layout. + + improve checks in tic for color capabilities + +20021102 + + check for missing/empty/illegal terminfo name in _nc_read_entry() + (report by Martin Mokrejs, where $TERM was set to an empty string). + + rewrote lib_insch.c, combining it with lib_insstr.c so both handle + tab and other control characters consistently (report by Philippe + Blain). + + remove an #undef for KEY_EVENT from curses.tail used in the + experimental NCURSES_WGETCH_EVENTS feature. The #undef confuses + dpkg's build script (Debian #165897). + + fix MKlib_gen.sh, working around the ironically named POSIXLY_CORRECT + feature of GNU sed 4.0 (reported by Ervin Nemeth ). + +20021026 + + implement logic in lib_mouse.c to handle position reports which are + generated when XFree86 xterm is initialized with private modes 1002 + or 1003. These are returned to the application as the + REPORT_MOUSE_POSITION mask, which was not implemented. Tested both + with ncurses 'a' menu (prompted by discussion with Larry Riedel + ). + + modify lib_mouse.c to look for "XM" terminfo string, which allows + one to override the escape sequence used to enable/disable mouse + mode. In particular this works for XFree86 xterm private modes + 1002 and 1003. If "XM" is missing (note that this is an extended + name), lib_mouse uses the conventional private mode 1000. + + correct NOT_LOCAL() macro in lib_mvcur.c to refer to screen_columns + where it used screen_lines (report by Philippe Blain). + + correct makefile rules for the case when both --with-libtool and + --with-gpm are given (report by Mr E_T ). + + add note to terminfo manpage regarding the differences between + setaf/setab and setf/setb capabilities (report by Pavel Roskin). + +20021019 + + remove redundant initialization of TABSIZE in newterm(), since it is + already done in setupterm() (report by Philippe Blain). + + add test/inserts.c, to test winnstr() and winsch(). + + replace 'sort' in dist.mk with script that sets locale to POSIX. + + update URLs in announce.html.in (patch by Frederic L W Meunier). + + remove glibc add-on files, which are no longer needed (report by + Frederic L W Meunier). + +20021012 5.3 release for upload to ftp.gnu.org + + modify ifdef's in etip.h.in to allow the etip.h header to compile + with gcc 3.2 (patch by Dimitar Zhekov ). + + add logic to setupterm() to make it like initscr() and newterm(), + by checking for $NCURSES_TRACE environment variable and enabling + the debug trace in that case. + + modify setupterm() to ensure that it initializes the baudrate, for + applications such as tput (report by Frank Henigman). + + modify definition of bits used for command-line and library debug + traces to avoid overlap, using new definition TRACE_SHIFT to relate + the two. + + document tput's interpretation of parameterized strings according to + whether parameters are given, etc. (discussion with Robert De Bath). + +20021005 pre-release + + correct winnwstr() to account for non-character cells generated when + a double-width character is added (report by Michael Bienia + ). + + modify _nc_viswbuf2n() to provide better results using wctomb(). + + correct logic in _nc_varargs() which broke tracing of parameters for + formats such as "%.*s". + + correct scale factor in linux-c and linux-c-nc terminfo entries + (report Floyd Davidson). + + change tic -A option to -t, add the same option to infocmp for + consistency. + + correct "%c" implementation in lib_tparm.c, which did not map a null + character to a 128 (cf: 980620) (patch by Frank Henigman + ). + +20020928 pre-release + + modify MKkey_defs.sh to check for POSIX sort -k option, use that if + it is found, to accommodate newer utility which dropped the + compatibility support for +number options (reported by Andrey A + Chernov). + + modify linux terminfo entry to use color palette feature from + linux-c-nc entry (comments by Tomasz Wasiak and Floyd Davidson). + + restore original color definitions in endwin() if init_color() was + used, and resume those colors on the next doupdate() or refresh() + (report by Tomasz Wasiak ). + + improve debug-traces by modifying MKlib_gen.sh to generate calls + to returnBool() and returnAttr(). + + add/use _nc_visbufn() and _nc_viswbufn() to limit the debug trace + of waddnstr() and similar functions to match the parameters as used. + + add/use _nc_retrace_bool() and _nc_retrace_unsigned(). + + correct type used by _nc_retrace_chtype(). + + add debug traces to some functions in lib_mouse.c + + modify lib_addch.c to handle non-spacing characters. + + correct parameter of RemAttr() in lib_bkgd.c, which caused the c++ + demo's boxes to lose the A_ALTCHARSET flag (broken in 20020629). + + correct width computed in _tracedump(), which did not account for + the attributes (broken in 20010602). + + modify test/tracemunch to replace addresses for windows other than + curscr, newscr and stdscr with window0, window1, etc. + +20020921 pre-release + + redid fix for edit_man.sed path. + + workaround for Cygwin bug which makes subprocess writes to stdout + result in core dump. + + documented getbegx(), etc. + + minor fixes to configure script to use '%' consistently as a sed + delimiter rather than '@'. + > patch by Philippe Blain: + + add check in lib_overlay.c to ensure that the windows to be merged + actually overlap, and in copywin(), limit the area to be touched + to the lines given for the destination window. + +20020914 pre-release + + modified curses.h so that if the wide-character version is installed + overwriting /usr/include/curses.h, and if it relied on libutf8.h, + then applications that use that header for wide-character support + must define HAVE_LIBUTF8_H. + + modify putwin(), getwin() and dupwin() to allow them to operate on + pads (request by Philippe Blain). + + correct attribute-merging in wborder(), broken in 20020216 (report + by Tomasz Wasiak ). + > patch by Philippe Blain: + + corrected pop-counts in tparam_internal() to '!' and '~' cases. + + use sizeof(NCURSES_CH_T) in one place that used sizeof(chtype). + + remove some unused variables from mvcur test-driver. + +20020907 pre-release + + change configure script to allow install of widec-character + (ncursesw) headers to overwrite normal (ncurses) headers, since the + latter is a compatible subset of the former. + + fix path of edit_man.sed in configure script, needed to regenerate + html manpages on Debian. + + fix mismatched enums in vsscanf.c, which caused warning on Solaris. + + update README.emx to reflect current patch used for autoconf. + + change web- and ftp-site to invisible-island.net + > patch by Philippe Blain: + + change case for 'P' in tparam_internal() to indicate that it pops + a variable from the stack. + + correct sense of precision and width in parse_format(), to avoid + confusion. + + modify lib_tparm.c, absorb really_get_space() into get_space(). + + modify getwin() and dupwin() to copy the _notimeout, _idlok and + _idcok window fields. + + better fix for _nc_set_type(), using typeMalloc(). + +20020901 pre-release + + change minor version to 3, i.e., ncurses 5.3 + + update config.guess, config.sub + + retest build with each configure option; minor ifdef fixes. + + make keyname() return a null pointer rather than "UNKNOWN STRING" to + match XSI. + + modify handling of wide line-drawing character functions to use the + normal line-drawing characters when not in UTF-8 locale. + + add check/fix to comp_parse.c to suppress warning about missing acsc + string. This happens in configurations where raw termcap information + is processed; tic already does this and other checks. + + modify tic's check for ich/ich1 versus rmir/smir to only warn about + ich1, to match xterm patch #70 notes. + + moved information for ripped-off lines into SCREEN struct to allow + use in resizeterm(). + + add experimental wgetch_events(), ifdef'd with NCURSES_WGETCH_EVENTS + (adapted from patch by Ilya Zakharevich - see ncurses/README.IZ). + + amend check in kgetch() from 20020824 to look only for function-keys, + otherwise escape sequences are not resolved properly. + > patch by Philippe Blain: + + removed redundant assignment to SP->_checkfd from newterm(). + + check return-value of setupterm() in restartterm(). + + use sizeof(NCURSES_CH_T) in a few places that used sizeof(chtype). + + prevent dupwin() from duplicating a pad. + + prevent putwin() from writing a pad. + + use typeRealloc() or typeMalloc() in preference to direct calls on + _nc_doalloc(). + +20020824 + + add a check in kgetch() for cooked characters in the fifo to avoid + calling fifo_push() when a KEY_RESIZE is available (report/analysis + by Sam Varshavchik ). + + fix an overlooked case for Redhat #68199 (Philippe Blain). + + ensure clearerr() is called before using ferror() e.g., in + lib_screen.c (report by Philippe Blain). + +20020817 + + modify lib_screen.c and lib_newwin.c to maintain the SCREEN-specific + pointers for curscr/stdscr/newscr when scr_save() and scr_restore() + modify the global curscr/stdscr/newscr variables. Fixes Redhat + #68199. + + add checks for null pointer in calls to tparm() and tgoto() based on + FreeBSD bug report. If ncurses were built with termcap support, and + the first call to tgoto() were a zero-length string, the result would + be a null pointer, which was not handled properly. + + correct a typo in terminfo.head, which gave the octal code for colon + rather than comma. + + remove the "tic -u" option from 20020810, since it did not account + for nested "tc=" clauses, and when that was addressed, was still + unsatisfactory. + +20020810 + + add tic -A option to suppress capabilities which are commented out + when translating to termcap. + + add tic -u option to provide older behavior of "tc=" clauses. + + modified tic to expand all but the final "tc=" clause in a termcap + entry, to accommodate termcap libraries which do not handle multiple + tc clauses. + + correct typo in curs_inopts.3x regarding CS8/CS7 usage (report by + Philippe Blain). + + remove a couple of redundant uses of A_ATTRIBUTES in expressions + using AttrOf(), which already incorporates that mask (report by + Philippe Blain). + + document TABSIZE variable. + + add NCURSES_ASSUMED_COLORS environment variable, to allow users to + override compiled-in default black-on-white assumption used in + assume_default_colors(). + + correct an off-by-one comparison against max_colors in COLORFGBG + logic. + + correct a use of uninitialized memory found by valgrind (reported by + Olaf Buddenhagen ). + + modified wresize() to ensure that a failed realloc will not corrupt + the window structure, and to make subwindows fit within the resized + window (completes Debian #87678, Debian #101699) + +20020803 + + fix an off-by-one in lib_pad.c check for limits of pad (patch by + Philippe Blain). + + revise logic for BeOS in lib_twait.c altered in 20011013 to restore + logic used by lib_getch.c's support for GPM or EMX mouse (report by + Philippe Blain) + + remove NCURSES_CONST from several prototypes in curses.wide, to make + the --enable-const --enable-widec configure options to work together + (report by George Goffe ). + +20020727 + + finish no-leak checking in cardfile.c, using this for testing changes + to resizeterm(). + + simplify _nc_freeall() using delscreen(). + +20020720 + + check error-return from _nc_set_tty_mode() in _nc_initscr() and + reset_prog_mode() (report/patch by Philippe Blain). + + regenerate configure using patch for autoconf 2.52, to address + problem with identifying C++ bool type. + + correct/improve logic to produce an exit status for errors in tput, + which did not exit with an error when told to put a string not in the + current terminfo entry (report by David Gomez ). + + modify configure script AC_OUTPUT() call to work around defect in + autoconf 2.52 which adds an ifdef'd include to the generated + configure definitions. + + remove fstat() check from scr_init(), which also fixes a missing + include for from 20020713 (reported by David Ellement, + fix suggested by Philippe Blain). + + update curs_scanw.3x manpage to note that XSI curses differs from + SVr4 curses: return-values are incompatible. + + correct several prototypes in manpages which used const + inconsistently with the curses.h file, and removed spurious const's + in a few places from curses.h, e.g., for wbkgd() (report by Glenn + Maynard ). + + change internal type used by tparm() to long, to work with LP64 model. + + modify nc_alloc.h to allow building with g++, for testing. + +20020713 + + add resize-handling to cardfile.c test program. + + altered resizeterm() to avoid having it fail when a child window + cannot be resized because it would be larger than its parent. (More + work must be done on this, but it works well enough to integrate). + + improve a limit-check in lib_refresh.c + + remove check in lib_screen.c relating dumptime to file's modification + times, since that would not necessarily work for remotely mounted + filesystems. + + modify lrtest to simplify debugging changes to resizeterm, e.g., + t/T commands to enable/disable tracing. + + updated status of multibyte support in TO-DO. + + update contact info in source-files (patch by Juergen Pfeifer). + +20020706 + + add Caps.hpux11, as an example. + + modify version_filter(), used to implement -R option for tic and + infocmp, to use computed array offsets based on the Caps.* file which + is actually configured, rather than constants which correspond to + the Caps file. + + reorganized lib_raw.c to avoid updating SP and cur_term state if the + functions fail (reported by Philippe Blain). + + add -Wundef to gcc warnings, adjust a few ifdef's to accommodate gcc. + +20020629 + + correct parameters to setcchar() in ncurses.c (cf: 20020406). + + set locale in most test programs (view.c and ncurses.c were the + only ones). + + add configure option --with-build-cppflags (report by Maksim A + Nikulin ). + + correct a typo in wide-character logic for lib_bkgnd.c (Philippe + Blain). + + modify lib_wacs.c to not cancel the acsc, smacs, rmacs strings when + in UTF-8 locale. Wide-character functions use Unicode values, while + narrow-character functions use the terminfo data. + + fix a couple of places in Ada95/samples which did not compile with + gnat 3.14 + + modify mkinstalldirs so the DOS-pathname case is locale-independent. + + fix locale problem in MKlib_gen.sh by forcing related variables to + POSIX (C), using same approach as autoconf (set variables only if + they were set before). Update MKterminfo.sh and MKtermsort.sh to + match. + +20020622 + + add charset to generated html. + + add mvterm entry, adapted from a FreeBSD bug-report by Daniel Rudy + -TD + + add rxvt-16color, ibm+16color entries -TD + + modify check in --disable-overwrite option so that it is used by + default unless the --prefix/$prefix value is not /usr, in attempt to + work around packagers, e.g., for Sun's freeware, who do not read the + INSTALL notes. + +20020615 + + modify wgetch() to allow returning ungetch'd KEY_RESIZE as a function + key code in get_wch(). + + extended resize-handling in test/ncurses 'a' menu to the entire + stack of windows created with 'w' commands. + + improve $COLORFGBG feature by interpreting an out-of-range color + value as an SGR 39 or 49, for foreground/background respectively. + + correct a typo in configure --enable-colorfgbg option, and move it + to the experimental section (cf: 20011208). + +20020601 + + add logic to dump_entry.c to remove function-key definitions that do + not fit into the 1023-byte limit for generated termcaps. This makes + hds200 fit. + + more improvements to tic's warnings, including logic to ignore + differences between delay values in sgr strings. + + move definition of KEY_RESIZE into MKkeydefs.sh script, to + accommodate Caps.osf1r5 which introduced a conflicting definition. + +20020525 + + add simple resize-handling in test/ncurses.c 'a' menu. + + fixes in keyname() and _tracechar() to handle negative values. + + make tic's warnings about mismatches in sgr strings easier to follow. + + correct tic checks for number of parameters in smgbp and smglp. + + improve scoansi terminfo entry, and add scoansi-new entry -TD + + add pcvt25-color terminfo entry -TD + + add kf13-kf48 strings to cons25w terminfo entry (reported by Stephen + Hurd in newsgroup lucky.freebsd.bugs) -TD + + add entrypoint _nc_trace_ttymode(), use this to distinguish the + Ottyb and Nttyb members of terminal (aka cur_term), for tracing. + +20020523 + + correct and simplify logic for lib_pad.c change in 20020518 (reported + by Mike Castle). + +20020518 + + fix lib_pad.c for case of drawing a double-width character which + falls off the left margin of the pad (patch by Kriang Lerdsuwanakij + ) + + modify configure script to work around broken gcc 3.1 "--version" + option, which adds unnecessary trash to the requested information. + + adjust ifdef's in case SIGWINCH is not defined, e.g., with DJGPP + (reported by Ben Decker ). + +20020511 + + implement vid_puts(), vid_attr(), term_attrs() based on the narrow- + character versions as well. + + implement erasewchar(), killwchar() based on erasechar() and + killchar(). + + modify erasechar() and killchar() to return ERR if the value was + VDISABLE. + + correct a bug in wresize() in handling subwindows (based on patch by + Roger Gammans , report by Scott Beck + ). + + improve test/tclock.c by making the second-hand update more often + if gettimeofday() is available. + +20020429 + + workaround for Solaris sed with MKlib_gen.sh (reported by Andy + Tsouladze ). + +20020427 + + correct return-value from getcchar(), making it consistent with + Solaris and Tru64. + + reorder loops that generate makefile rules for different models vs + subsets so configure --with-termlib works again. This was broken by + logic added to avoid duplicate rules in changes to accommodate cygwin + dll's (reported by George.R.Goffe@seagate.com). + + update config.guess, config.sub + +20020421 + + modify ifdef's in write_entry.c to allow use of symbolic links on + platforms with no hard links, e.g., BeOS. + + modify a few includes to allow compile with BeOS, which has stdbool.h + with a conflicting definition for 'bool' versus its OS.h definition. + + amend MKlib_gen.sh to work with gawk, which defines 'func' as an + alias for 'function'. + +20020420 + + correct form of prototype for ripoffline(). + + modify MKlib_gen.sh to test that all functions marked as implemented + can be linked. + +20020413 + + add manpages: curs_get_wstr.3x, curs_in_wchstr.3x + + implement wgetn_wstr(). + + implement win_wchnstr(). + + remove redefinition of unget_wch() in lib_gen.c (reported by + Jungshik Shin ). + +20020406 + + modified several of the test programs to allow them to compile with + vendor curses implementations, e.g., Solaris, AIX -TD + +20020323 + + modified test/configure to allow configuring against ncursesw. + + change WACS_xxx definition to use address, to work like Tru64 curses. + +20020317 + + add 'e' and 'm' toggles to 'a', 'A' tests in ncurses.c to demonstrate + effect of echo/noecho and meta modes. + + add 'A' test to ncurses.c to demonstrate wget_wch() and related + functions. + + add manpage: curs_get_wch.3x + + implement unget_wch(). + + implement wget_wch(). + +20020310 + + regenerated html manpages. + + add manpages: curs_in_wch.3x, curs_ins_wch.3x, curs_ins_wstr.3x + + implement wins_wch(). + + implement win_wch(). + + implement wins_nwstr(), wins_wstr(). + +20020309 + + add manpages: curs_addwstr.3x, curs_winwstr.3x + + implement winnwstr(), winwstr(). + +20020223 + + add manpages: curs_add_wchstr.3x, curs_bkgrnd.3x + + document wunctrl, key_name. + + implement key_name(). + + remove const's in lib_box.c incorrectly leftover after splitting off + lib_box_set.c + + update llib-lncurses, llib-ncursesw, fix configure script related to + these. + +20020218 + + remove quotes on "SYNOPSIS" in man/curs_box_set.3x, which resulted + in spurious symlinks on install. + +20020216 + + implement whline_set(), wvline_set(), add manpage curs_border_set. + + add subtest 'b' to 'F' and 'f' in ncurses.c to demonstrate use of + box() and box_set() functions. + + add subtest 'u' to 'F' in ncurses.c, to demonstrate use of addstr() + given UTF-8 string equivalents of WACS_xxx symbols. + + minor fixes to several manpages based on groff -ww output. + + add descriptions of external variables of termcap interface to + the manpage (report by Bruce Evans ). + > patches by Bernhard Rosenkraenzer: + + correct configure option --with-bool, which was executed as + --with-ospeed. + + add quotes for parameters of --with-bool and --with-ospeed configure + options. + > patch by Sven Verdoolaege (report by Gerhard Haering + ): + + correct typos in definitions of several wide-character macros: + waddwstr, wgetbkgrnd, mvaddwstr, mvwadd_wchnstr, mvwadd_wchnstr, + mvwaddwstr. + + pass $(CPPFLAGS) to MKlib_gen.sh, thereby fixing a missing definition + of _XOPEN_SOURCE_EXTENDED, e.g., on Solaris + +20020209 + + implement wide-acs characters for UTF-8 locales. When in UTF-8 + locale, ignore narrow version of acs. Add 'F' test to test/ncurses.c + to demonstrate. + + correct prototype in keybound manpage (noted from a Debian mailing + list item). + +20020202 + + add several cases to the wscanw() example in testcurs.c, showing the + format. + + implement a simple vsscanf() fallback function which uses the %n + conversion to help parse the input data (prompted by discussion with + Albert Chin-A-Young). + + modify mk-1st.awk and test/Makefile.in to add $(LDFLAGS) when making + shared libraries, and to use $(CFLAGS) when linking test programs + (patch by Albert Chin-A-Young). + + add a call to _nc_keypad() in keypad() to accommodate applications + such as nvi, which use curses for output but not for input (fixes + Debian #131263, cf: 20011215). + + add entrypoints to resizeterm.c which provide better control over the + process: is_term_resized() and resize_term(). The latter restores + the original design of resizeterm() before KEY_RESIZE was added in + 970906. Do this to accommodate 20010922 changes to view.c, but allow + for programs with their own sigwinch handler, such as lynx (reported + by Russell Ruby ). + +20020127 + + fix a typo in change to mk-1st.awk, which broke the shared-library + makefile rules (reported by Martin Mokrejs). + +20020126 + + update config.guess, config.sub + + finish changes needed to build dll's on cygwin. + + fix a typo in mvwchat() macro (reported by Cy ). + + add configure check for mbstate_t, needed for wide-character + configuration. On some platforms we must include to + define this (reported by Daniel Jacobowitz). + + incorporate some of the changes needed to build dll's on cygwin. + +20020112a + + workaround for awk did not work with mawk, adjusted shell script. + +20020112 + + add Caps.osf1r5, as an example. + + modify behavior of can_clear_with() so that if an application is + running in a non-bce terminals with default colors enabled, it + returns true, allowing the user to select/paste text without picking + up extraneous trailing blanks (adapted from patch by Daniel + Jacobowitz ). + + modify generated curses.h to ifdef-out prototypes for extensions if + they are disabled, and to define curses_version() as a string in that + case. This is needed to make the programs such as tic build in that + configuration. + + modified generated headers.sh to remove a gzip'd version of the + target file if it exists, in case non-gzip'd manpages are installed + into a directory where gzip'd ones exist. In that case, the latter + would be found. + + corrected a redundant initialization of signal handlers from 20010922 + changes. + + clarified bug-reporting address in terminfo.src (report by John H + DuBois III ). + > several fixes from Robert Joop: + + do not use "-v" option of awk in MKkey_defs.sh because it does not + work with SunOS nawk. + + modify definitions for libutf8 in curses.h to avoid redefinition + warnings for mblen + + quoted references to compiler in shell command in misc/Makefile, in + case it uses multiple tokens. + +20011229 + + restore special case from 20010922 changes to omit SA_RESTART when + setting up SIGWINCH handler, which is needed to allow wgetch() to be + interrupted by that signal. + + updated configure macro CF_WITH_PATHLIST, to omit some double quotes + not needed with autoconf 2.52 + + revert configure script to autoconf 2.13 patched with + autoconf-2.13-19990117.patch.gz (or later) + from + ftp://invisible-island.net/autoconf/ + because autoconf 2.52 macro AC_PROG_AWK does not work on HPUX 11.0 + (report by David Ellement ). This also fixes a + different problem configuring with Mac OS X (reported by Marc Smith + ). + +20011222 + + modify include/edit_cfg.h to eliminate BROKEN_LINKER symbol from + term.h + + move prototype for _nc_vsscanf() into curses.h.in to omit + HAVE_VSSCANF symbol from curses.h, which was dependent upon the + ncurses_cfg.h file which is not installed. + + use ACS_LEN rather than SIZEOF(acs_map) in trace code of lib_acs.c, + to work with broken linker configuration, e.g., cygwin (report by + Robert Joop ). + + make napms() call _nc_timed_wait() rather than poll() or select(), + to work around broken implementations of these on cygwin. + +20011218 + + drop configure macro CF_WIDEC_SHIFT, since that was rendered obsolete + by Sven Verdoolaege's rewrite of wide-character support. This makes + libncursesw incompatible again, but makes the header files almost the + same as in the narrow-character configuration. + + simplify definitions that combine wide/narrow versions of bkgd, etc., + to eliminate differences between the wide/narrow versions of curses.h + + correct typo in configure macro CF_FUNC_VSSCANF + + correct location of call to _nc_keypad() from 20011215 changes which + prevented keypad() from being disabled (reported by Lars Hecking). + +20011215 + + rewrote ncurses 'a' test to exercise wgetch() and keypad() functions + better, e.g., by adding a 'w' command to create new windows which + may have different keypad() settings. + + corrected logic of keypad() by adding internal screen state to track + whether the terminal's keypad-mode has been set. Use this in + wgetch() to update the keypad-mode according to whether the + associated window's keypad-mode has been set with keypad(). This + corrects a related problem restoring terminal state after handling + SIGTSTP (reported by Mike Castle). + + regenerate configure using patch for autoconf 2.52 + autoconf-2.52-patch.gz + at + ftp://invisible-island.net/autoconf/ + + update config.guess, config.sub from + http://subversions.gnu.org/cgi-bin/viewcvs/config/config/ + + minor changes to quoting in configure script to allow it to work + with autoconf 2.52 + +20011208 + + modify final checks in lib_setup.c for line and col values, making + them independent. + + modify acs_map[] if configure --broken-linker is specified, to make + it use a function rather than an array (prompted by an incorrect + implementation in cygwin package). + + correct spelling of configure option --enable-colorfgbg, which + happened to work if --with-develop was set (noted in cygwin package + for ncurses). + + modify ifdef for genericerror() to compile with SUNWspro Sun WorkShop + 6 update 1 C++ 5.2 (patch by Sullivan N Beck ). + + add configure checks to see if ncurses' fallback vsscanf() will + compile either of the special cases for FILE structs, and if not, + force it to the case which simply returns an error (report by + Sullivan N Beck indicates that Solaris 8 with + 64-bits does not allow access to FILE's fields). + + modify ifdef's for c++/cursesw.cc to use the fallback vsscanf() in + the ncurses library if no better substitute for this can be found + in the C++ runtime. + + modify the build to name dynamic libraries according to the + convention used on OS X and Darwin. Rather than something like + libncurses.dylib.5.2, Darwin would name it libncurses. 5.dylib. + There are a few additional minor fixes, such as setting the library + version and compatibility version numbers (patch by Jason Evans + ). + + use 'sh' to run mkinstalldirs, to work around problems with buggy + versions of 'make' on OS/2 (report by John Polterak ). + + correct typo in manpage description of curs_set() (Debian #121548). + + replace the configure script existence-check for mkstemp() by one + that checks if the function works, needed for older glibc and + AmigaOS. + +20011201 + + modify script that generates fallbacks.c to compile a temporary + copy of the terminfo source in case the host does not contain all of + the entries requested for fallbacks (request by Greg Roelofs). + + modify configure script to accommodate systems such as Mac OS X whose + header defines a 'bool' type inconsistent with ncurses, + which normally makes 'bool' consistent with C++. Include + from curses.h to force consistent usage, define a new type + NCURSES_BOOL and related that to the exported 'bool' as either a + typedef or definition, according to whether is present + (based on a bug report for tin 1.5.9 by Aaron Adams ). + +20011124 + + added/updated terminfo entries for M$ telnet and KDE konsole -TD + +20011117 + + updated/expanded Apple_Terminal and Darwin PowerPC terminfo entries + (Benjamin C W Sittler). + + add putty terminfo entry -TD + + if configuring for wide-curses, define _XOPEN_SOURCE_EXTENDED, since + this may not otherwise be defined to make test/view.c compile. + +20011110 + + review/correct several missing/generated items in curses.wide, sorted + the lists to make subsequent diff's easier to track. + +20011103 + + add manual pages for add_wch(), echo_wchar(), getcchar(), + mvadd_wch(), mvwadd_wch(), setcchar(), wadd_wch() and wecho_wchar(). + + implement wecho_wchar() + + modify _tracedump() to handle wide-characters by mapping them to '?' + and control-characters to '.', to make the trace file readable. Also + dynamically allocate the buffer used by _tracedump() for formatting + the results. + + modify T_CALLED/T_RETURN macros to ease balancing call/return lines + in a trace by using curly braces. + + implement _nc_viscbuf(), for tracing cchar_t arrays. + + correct trace-calls in setcchar() and getcchar() functions, which + traced the return values but not the entry to each function. + + correct usage message in test/view.c, which still mentioned -u flag. + +20011027 + + modify configure script to allow building with termcap only, or with + fallbacks only. In this case, we do not build tic and toe. + + add configure --with-termpath option, to override default TERMPATH + value of /etc/termcap:/usr/share/misc/termcap. + + cosmetic change to tack: make menu descriptions agree with menu + titles. + +20011020 + + rewrote limit-checks in wscrl() and associated _nc_scroll_window(), + to ensure that if the parameter of wscrl() is larger than the size of + the scrolling region, then the scrolling region will be cleared + (report by Ben Kohlen ). + + add trace/varargs.c, using this to trace parameters in lib_printw.c + + implement _tracecchar_t2() and _tracecchar_t(). + + split-out trace/visbuf.c + + correct typo in lib_printw.c changes from 20010922 (report by Mike + Castle). + +20011013 + + modify run_tic.sh to check if the build is a cross-compile. In that + case, do not use the build's tic to install the terminfo database + (report by Rafael Rodriguez Velilla ). + + modify mouse click resolution so that mouseinterval(-1) will disable + it, e.g., to handle touchscreens via a slow connection (request by + Byron Stanoszek ). + + correct mouseinterval() default value shown in curs_mouse.3x + + remove conflicting definition of mouse_trafo() (reported by Lars + Hecking, using gcc 2.95.3). + +20011001 + + simpler fix for signal_name(), to replace the one overlooked in + 20010929 (reported by Larry Virden). + +20010929 + + add -i option to view.c, to test ncurses' check for non-default + signal handler for SIGINT, etc. + + add cases for shared-libraries on Darwin/OS X (patch by Rob Braun + ). + + modify tset to restore original I/O modes if an error is encountered. + Also modify to use buffered stderr consistently rather than mixing + with write(). + + change signal_name() function to use if-then-else rather than case + statement, since signal-values aren't really integers (reported by + Larry Virden). + + add limit checks in wredrawln(), fixing a problem where lynx was + repainting a pad which was much larger than the screen. + +20010922 + + fix: PutRange() was counting the second part of a wide character as + part of a run, resulting in a cursor position that was one too far + (patch by Sven Verdoolaege). + + modify resizeterm() to not queue a KEY_RESIZE if there was no + SIGWINCH, thereby separating the two styles of SIGWINCH handling + in test/view.c + + simplified lib_tstp.c, modify it to use SA_RESTART flag for SIGWINCH. + + eliminate several static buffers in the terminfo compiler, using + allocated buffers. + + modify MKkeyname.awk so that keyname() does not store its result into + a static buffer that is overwritten by the next call. + + reorganize the output of infocmp -E and -e options to compile cleanly + with gcc -Wwrite-strings warnings. + + remove redefinition of chgat/wchgat/mvwchgat from curses.wide + +20010915 + + add label to test/view.c, showing the name of the last key or signal + that made the screen repaint, to make it clearer when a sigwinch + does this. + + use ExitProgram() consistently in the test-programs to make it + simpler to test leaks with dmalloc, etc. + + move hashtab static data out of hashmap.c into SCREEN struct. + + make NO_LEAK code compile with revised WINDOWLIST structs. + +20010908 + + modify tgetent() to check if exit_attribute_mode resets the alternate + character set, and if so, attempt to adjust the copy of the termcap + "me" string which it will return to eliminate that part. In + particular, 'screen' would lose track of line-drawing characters + (report by Frederic L W Meunier <0@pervalidus.net>, analysis by + Michael Schroeder). + +20010901 + + specify DOCTYPE in html manpages. + + add missing macros for several "generated" functions: attr_get(), + attr_off(), attr_on(), attr_set(), chgat(), mvchgat(), mvwchgat() and + mouse_trafo(). + + modify view.c to agree with non-experimental status of ncurses' + sigwinch handler: + + change the sense of the -r option, making it default to ncurses' + sigwinch handler. + + add a note explaining what functions are unsafe in a signal + handler. + + add a -c option, to set color display, for testing. + + unset $data variable in MKterminfo.sh script, to address potential + infinite loop if shell malfunction (report by Samuel Mikes + , for bash 2.05.0 on a Linux 2.0.36 system). + + change kbs in mach terminfo entries to ^? (Marcus Brinkmann + ). + + correct logic for COLORFGBG environment variable: if rxvt is compiled + with xpm support, the variable has three fields, making it slightly + incompatible with itself. In either case, the background color is + the last field. + +20010825 + + move calls to def_shell_mode() and def_prog_mode() before loop with + callbacks in lib_set_term.c, since the c++ demo otherwise initialized + the tty modes before saving them (patch by John David Anglin + ). + + duplicate logic used to initialize trace in newterm(), in initscr() + to avoid confusing trace of initscr(). + + simplify allocation of WINDOW and WINDOWLIST structs by making the + first a part of the second rather than storing a pointer. This saves + a call to malloc for each window (discussion with Philippe Blain). + + remove unused variable 'used_ncv' from lib_vidattr.c (Philippe + Blain). + + modify c++/Makefile.in to accommodate archive programs that are + different for C++ than for C, and add cases for vendor's C++ + compilers on Solaris and IRIX (report by Albert Chin-A-Young). + + correct manpage description of criteria for deciding if the terminal + supports xterm mouse controls. + + add several configure script options to aid with cross-compiling: + --with-build-cc, --with-build-cflags, --with-build-ldflags, and + --with-build-libs (request by Greg Roelofs). + + change criteria for deciding if configure is cross-compiling from + host/build mismatch to host/target mismatch (request by Greg Roelofs + ). + + correct logic for infocmp -e and -E options which writes the data for + the ext_Names[] array. This is needed if one constructs a fallback + table for a terminfo entry which uses extended termcap names, e.g., + AX in a color xterm. + + fix undefined NCURSES_PATHSEP when configure --disable-database + option is given. + +20010811 + + fix for VALID_BOOLEAN() macro when char is not signed. + + modify 'clean' rule for C++ binding to work with Sun compiler, which + caches additional information in a subdirectory of the objects. + + added llib-ncursesw. + +20010804 + + add Caps.keys example for experimental extended function keys + (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). + + 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). + + workaround for bug in HPUX 11.x C compiler: add a blank after + NCURSES_EXPORT macro in form.h (report by Albert Chin-A-Young) + + ignore blank lines in Caps* files in MKkey_defs.sh script (report by + Albert Chin-A-Young). + + correct definition of key_end in Caps.aix4, which left KEY_END + undefined (report by Albert Chin-A-Young). + + remove a QNX-specific fallback prototype for vsscanf(), which is + obsolete with QNX RTP. + + review/fix some of the T() and TR() macro calls, having noticed that + there was no data for delwin() in a trace of dialog because there was + no returnVoid call for wtimeout(). Also, traces in lib_twait.c are + now selected under TRACE_IEVENT rather than TRACE_CALLS. + +20010728 + + add a _nc_access() check before opening files listed via $TERMPATH. + + using modified man2html, regenerate some of the html manpages to fix + broken HREF's where the link was hyphenated. + +20010721 + + add some limit/pointer checks to -S option of tputs. + + updated/expanded Apple_Terminal and Darwin PowerPC terminfo entries + (Benjamin C W Sittler). + + add a note in curs_termcap.3x regarding a defect in the XSI + description of tgetent (based on a discussion with Urs Jansen + regarding the HPUX 11.x implementation, whose termcap interface is + not compatible with existing termcap programs). + + modify manhtml rule in dist.mk to preserve copyright notice on the + generated files, as well as to address HTML style issues reported by + tidy and weblint. Regenerated/updated corresponding html files. + + comment out use of Protected_Character and related rarely used + attributes in ncurses Ada95 test/demo to compile with wide-character + configuration. + +20010714 + + implement a simple example in C++ demo to test scanw(). + + corrected stdio function used to implement scanw() in cursesw.cc + + correct definition of RemAttr() macro from 20010602 changes, which + caused C++ SillyDemo to not show line-drawing characters. + + modify C++ binding, adding getKey() which can be overridden by user + to substitute functions other than getch() for keyboard processing + of forms and menus (patch by Juergen Pfeifer). + +20010707 + + fix some of the trace calls which needed modification to work with + new wide-character structures. + + modify magic-cookie code in tty_update.c to compile with new + wide-character structures (report by ). + + 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 + Verdoolaege). + +20010630 + + add configure check to define _GNU_SOURCE, needed to prop up glibc + header files. + + split-out include/curses.wide to solve spurious redefinitions caused + by defining _GNU_SOURCE, and move includes for before + to work around misdefinition of ERR in glibc 2.1.3 header + file. + + extended ospeed change to NetBSD and OpenBSD -TD + + modify logic in lib_baudrate.c for ospeed, for FreeBSD to make it + work properly for termcap applications (patch by Andrey A Chernov). + +20010623 + + correct an overlooked CharOf/UChar instance (reports by Eugene Lee + , Sven Verdoolaege). + + correct unneeded ifdef for wunctrl() (reported by Sven Verdoolaege) + +20010618 + + change overlooked several CharOf/UChar instances. + > several patches from Sven Verdoolaege: + + correct a typo in wunctrl(), which made it appear that botwc() was + needed (no such function: use btowc()). + + reimplement wide-character demo in test/view.c, using new functions. + + implement getcchar(), setcchar(), wadd_wchnstr() and related macros. + + fix a syntax problem with do/if/while in PUTC macro (curses.priv.h). + +20010616 + + add parentheses in macros for malloc in test.priv.h, fixes an + expression in view.c (report by Wolfgang Gutjahr ). + + add Caps.uwin, as an example. + + change the way curses.h is generated, making the list of function + key definitions extracted from the Caps file. + + add #undef's before possible redefinition of ERR and OK in curses.h + + modify logic in tic, toe, tput and tset which checks for basename of + argv[0] to work properly on systems such as OS/2 which have + case-independent filenames and/or program suffixes, e.g., ".ext". + +20010609 + + add a configure check, if --enable-widec is specified, for putwc(), + which may be in libutf8. + + remove some unnecessary text from curs_extend.3x and + default_colors.3x which caused man-db to make incorrect symbolic + links (Debian #99550). + + add configure check if cast for _IO_va_list is needed to compile + C++ vscan code (Debian #97945). + > several patches from Sven Verdoolaege: + + correct code that used non-standard auto-initialization of a struct, + which gcc allows (report by Larry Virden). + + use putwc() in PUTC() macro. + + make addstr() work for the special case where the codeset is + non-stateful (eg. UTF-8), as well as stateful codesets. + +20010603 + + correct loop expression in NEXT_CHAR macro for lib_addstr.c changes + from 20010602 (report by Mike Castle). + +20010602 + + modify mvcur() to avoid emitting newline characters when nonl() mode + is set. Normally this is not a problem since the actual terminal + mode is set to suppress nl/crlf translations, however it is useful to + allow the caller to manipulate the terminal mode to avoid staircasing + effects after spawning a process which writes messages (for lynx + 2.8.4) -TD + > several patches from Sven Verdoolaege : + + remove redundant type-conversion in fifo_push() + + correct definition of addwstr() macro in curses.h.in + + remove _nc_utf8_outch() + + rename most existing uses of CharOf() to UChar(), e.g., where it is + used to prevent sign-extension in ctype macros. + + change some chtype's to attr_t's where the corresponding variables + are used to manipulate attributes. + + UpdateAttr() was applied to both attributes (attr_t) and characters + (chtype). Modify macro and calls to it to make these distinct. + + add CharEq() macro, use in places where wide-character configuration + implementation uses a struct for cchar_t. + + moved struct ldat into curses.priv.h, to hide implementation details. + + change CharOf() macro to use it for masking A_CHARTEXT data from + chtype's. + + add L() macro to curses.priv.h, for long-character literals. + + replace several assignments from struct ldat entries to chtype or + char values with combinations of CharOf() and AttrOf() macros. + + add/use intermediate ChAttrOf() and ChCharOf() macros where we know + we are using chtype data. + + add/use lowlevel attribute manipulation macros AddAttr(), RemAttr() + and SetAttr(). + + add/use SetChar() macro, to change a cchar_t based on a character and + attributes. + + convert most internal use of chtype to NCURSES_CH_T, to simplify use + of cchar_t for wide-character configuration. Similarly, use ARG_CH_T + where a pointer would be more useful. + + add stubs for tracing cchar_t values. + + add/use macro ISBLANK() + + add/use constructors for cchar_t's: NewChar(), NewChar2(). + + add/use macros CHREF(), CHDEREF(), AttrOfD(), CharOfD() to facilitate + passing cchar_t's by address. + + add/use PUTC_DATA, PUTC() macros. + + for wide-character configuration, move the window background data to + the end of the WINDOW struct so that whether _XOPEN_SOURCE_EXTENDED + is defined or not, the offsets in the struct will not change. + + modify addch() to work with wide-characters. + + mark several wide-character functions as generated in curses.h.in + + implement wunctrl(), wadd_wch(), wbkgrndset(), wbkgrnd(), + wborder_set() and waddnwstr(). + +20010526 + + add experimental --with-caps=XXX option to customize to similar + terminfo database formats such as AIX 4.x + + add Caps.aix4 as an example. + + modify Caps to add columns for the the KEY_xxx symbols. + + modify configure --with-widec to suppress overwrite of libcurses.so + and curses.h + + add checks to toe.c to avoid being confused by files and directories + where we would expect the reverse, e.g., source-files in the + top-level terminfo levels as is the case for AIX. + +20010519 + + add top-level 'depend' rule for the C sources, assuming that the + makedepend program is available. As a side-effect, this makes + the generated sources, as in "make sources" (prompted by a report + by Mike Castle that "make -j" fails because the resulting parallel + processes race to generate ncurses/names.c). + + modify configure script so that --disable-overwrite option's action + to add a symbolic link for libcurses applies to the static library as + well as the shared library when both are configured (report by Felix + Natter ). + + add ELKS terminfo entries (Federico Bianchi + ) + + add u6 (CSR) to Eterm (Michael Jennings). + +20010512 + + modify test/ncurses.c to work with xterm-256color, which has fewer + color pairs than colors*colors (report by David Ellement + ). + +20010505 + + corrected screen.xterm-xfree86 entry. + + update comment in Caps regarding IBM (AIX) function-key definitions. + +20010421 + + modify c++/Makefile.in to link with libncurses++w.a when configured + for wide-characters (patch by Sven Verdoolaege). + + add check in _nc_trace_buf() to refrain from freeing a null pointer. + + improve CF_PROG_INSTALL macro using CF_DIRNAME. + + update config.guess, config.sub from autoconf 2.49e (alpha). + +20010414 + + add secondary check in tic.c, similar_sgr() to see if the reason + for mismatch was that the individual capabilities used a time-delay + while sgr did not. Used this to cleanup mismatches, e.g., in vt100, + and remove time-delay from Apple_Terminal entries. + + add Apple_Terminal terminfo entries (Benjamin C W Sittler + ). + + correct definitions of shifted editing keys for xterm-xfree86 -TD + + fix a bug in test/bs.c from 20010407 (patch by Erik Sigra). + + prevent relative_move() from doing an overwrite if it detects 8-bit + characters when configured for UTF-8 (reported by Sven Verdoolaege + ). + +20010407 + + add configure checks for strstream.h vscan function, and similar + stdio-based function which may be used in C++ binding for gcc 3.0 + (reports by George Goffe, Lars Hecking, Mike Castle). + + rewrite parts of configure.in which used changequote(). That feature + is broken in the latest autoconf alphas (e.g., 2.49d). + + add a missing pathname for ncurses_dll.h, needed when building in + a directory outside the source tree (patch by Sven Verdoolaege + ). + > fix 2 bugs in test/bs.c Erik Sigra : + + no ships were ever placed in the last row or in the last column. + This made the game very easy to win, because you never had to waste + any shots there, but the computer did. + + the squares around a sunken ship that belonged to the player were not + displayed as already hit by the computer, like it does for the + player. + +20010331 + + add some examples of customizing screen's terminfo: + screen.xterm-xfree86, screen.xterm-r6, screen.teraterm -TD + + modify screen's terminfo entry to match the khome/kend in screen + 3.09.08 (Debian #92215). + + correct a memory leak in forms library (report by Stefan Vogtner + ) (patch by Juergen Pfeifer). + +20010324 + + change symbols used to guard against repeated includes to begin + consistently with "NCURSES_" rather than a leading underscore. There + are other symbols defined in the header files which begin with a + leading underscore, but they are part of the legacy interface. + + reorder includes in c++ binding so that rcs identifiers can be + compiled-in. + + add .cc.ii rule to c++ makefile, to get preprocessor output for + debugging. + + correct configure script handling of @keyword@ substitutions when the + --with-manpage-renames option is given (cf: 20000715, fixes Debian + #89939). + + report stack underflow/overflow in tparm() when tic -cv option is + given. + + remove spurious "%|" operator from xterm-xfree86 terminfo entry, + (reported by Adam Costello , Debian #89222). + +20010310 + + cleanup of newdemo.c, fixing some ambiguous expressions noted by gcc + 2.95.2, and correcting some conflicting color pair initializations. + + add missing copyright notice for cursesw.h + + review, make minor fixes for use of '::' for referring to C-language + interface from C++ binding. + + modify configure check for g++ library slightly to accommodate + nonstandard version number, e.g., -2.7 (report by Ronald Ho + ). + + add configure check for c++ header, replace hardcoded + ifdef. + + workaround for pre-release of gcc 3.0 libstdc++, which has dropped + vscan from strstreambuf to follow standard, use wrapper for C vscanf + instead (report by George Goffe and Matt Taggart + , fixes Debian . + +20010303 + + modify interface of _nc_get_token() to pass 'silent' parameter to it, + to make quieter loading of /etc/termcap (patch by Todd C Miller). + + correct a few typos in curs_slk.3x and curs_outopts.3x manpages + (patch by Todd C Miller). + +20010224 + + compiler-warning fixes (reported by Nelson Beebe). + +20010210 + + modify screen terminfo entry to use new 3.9.8 feature allowing xterm + mouse controls -TD + +20010203 + + broaden patterns used to match OS/2 EMX in configure script to cover + variant used in newer config.guess/config.sub + + remove changequote() calls from configure script, since this feature + is broken in the autoconf 2.49c alpha, maintainers decline to fix. + + remove macro callPutChar() from tty_update.c, since this is no longer + needed (reported by Philippe Blain). + + add a null-pointer check in tic.c to handle the case when the input + file is really empty. Modify the next_char() function in comp_scan.c + to allow arbitrarily long lines, and incidentally supply a newline to + files that do not end in a newline. These changes improve tic's + recovery from attempts to read binary files, e.g., its output from + the terminfo database (reported by Bernhard Rosenkraenzer). + +20010127 + + revert change to c++/demo.cc from 20001209, which changed definition + of main() apparently to accommodate cygwin linker, but broke the demo + program. + + workaround for broken egcs 2.91.66 which calls member functions + (i.e., lines() and colors() of NCursesWindow before calling its + constructor. Add calls to initialize() in a few constructors which + did not do this already. + + use the GNAT preprocessor to make the necessary switch between TRACE + and NO_TRACE configurations (patch by Juergen Pfeifer). + > patches by Bernhard Rosenkraenzer: + + modify kterm terminfo entry to use SCS sequence to support alternate + character set (it does not work with SI/SO). + + --with-ospeed=something didn't work. configure.in checked for a + $enableval where it should check for $withval. Also, + ncurses/llib-lncurses still had a hardcoded short. + +20010114 + + correction to my merge of Tom Riddle's patch that broke tic in some + conditions (reported by Enoch Wexler ) -TD + +20010113 + + modify view.c to test halfdelay(). Like other tests, this recognizes + the 's' and space commands for stopping/starting polled input, shows + a freerunning clock in the header. If given a parameter to 's', that + makes view.c use halfdelay() with that parameter rather than + nodelay(). + + fix to allow compile with the experimental configure option + --disable-hashmap. + + modify postprocess_termcap() to avoid overwriting key_backspace, + key_left, key_down when processing a non-base entry (report/patch by + Tom Riddle). + + modify _nc_wrap_entry(), adding option to reallocate the string + table, needed in _nc_merge_entry() when merging termcap entries. + (adapted from report/patch by Tom Riddle ). + + modify a few configure script macros to keep $CFLAGS used only for + compiler options, preprocessor options in $CPPFLAGS. + +20001230 + + correct marker positions in lrtest.c after receiving a sigwinch. + + fix ifdef's in ncurses.c to build against pre-5.2 for testing. + + fixes to tclock for resizing behavior, redundant computation (report + and patch by A M Kuchling ). + +20001216 + + improved scoansi terminfo entry -TD + + modify configure script and makefile in Ada95/src to compile a stub + for the trace functions when ncurses does not provide those. + +20001209 + + add ncurses_dll.h and related definitions to support generating DLL's + with cygwin (adapted from a patch by Charles Wilson + , changed NCURSES_EXPORT macro to make it + work with 'indent') -TD + +20001202 + + correct prototypes for some functions in curs_termcap.3x, matching + termcap.h, which matches X/Open. + > patch by Juergen Pfeifer: + + a revised version of the Ada enhancements sent in by "H. + Nanosecond", aka Eugene V Melaragno . This + patch includes + - small fixes to the existing ncurses binding + - addition of some more low-level functions to the binding, including + termcap and terminfo functions + - An Ada implementation of the "ncurses" test application originally + written in C. + +20001125 + + modify logic in lib_setup.c to allow either lines or columns value + from terminfo to be used if the screen size cannot be determined + dynamically rather than requiring both (patch by Ehud Karni + ). + + add check in lib_tgoto.c's is_termcap() function to reject null or + empty strings (reported by Valentin Nechayev to + freebsd-bugs). + + add definition from configure script that denotes the path-separator, + which is normally a colon. The path-separator is a semicolon on + OS/2 EMX and similar systems which may use a colon within pathnames. + + alter logic to set default for --disable-overwrite option to set it + to 'yes' if the --prefix/$prefix value is not /usr/local, thereby + accommodating the most common cause of problems: gcc's nonstandard + search rules. Other locations such as /usr/local/ncurses will + default to overwriting (report by Lars Hecking ). + +20001118 + + modify default for --disable-overwrite configure option to disable + if the --prefix or $prefix value is not /usr. + + add cygwin to systems for which ncurses is installed by default into + /usr rather than /usr/local. + +20001111 + + minor optimization in comp_error.c and lib_termname.c, using + strncat() to replace strncpy() (patch by Solar Designer). + + add a use_terminfo_vars() check for $HOME/.termcap, and check for + geteuid() to use_terminfo_vars() (patch by Solar Designer + ). + + improved cygwin terminfo entry, based on patch by + . + + modify _nc_write_entry() to allow for the possibility that linking + aliases on a filesystem that ignores case would not succeed because + the source and destination differ only by case, e.g., NCR260VT300WPP0 + on cygwin (report by Neil Zanella). + + fix a typo in the curs_deleteln.3x man page (patch by Bernhard + Rosenkraenzer ). + +20001104 + + add configure option --with-ospeed to assist packagers in transition + to 5.3 change to ospeed type. + + add/use CharOf() macro to suppress sign-extension of char type on + platforms where this is a problem in ctype macros, e.g., Solaris. + + change trace output to binary format. + + correct a missing quote adjustment in CF_PATH_SYNTAX autoconf + macro, for OS/2 EMX configuration. + + rearrange a few configure macros, moving preprocessor options to + $CPPFLAGS (a now-obsolete version of autoconf did not consistently + use $CPPFLAGS in both the compile and preprocessor checks). + + add a check in relative_move() to guard against buffer overflow in + the overwrite logic. + +20001028 + + add message to configure script showing g++ version. + + resync config.guess, config.sub + + modify lib_delwin.c, making it return ERR if the window did not exist + (suggested by Neil Zanella). + + add cases for FreeBSD 3.1 to tdlint and makellib scripts, used this + to test/review ncurses library. (Would use lclint, but it doesn't + work). + + reorganized knight.c to avoid forward references. Correct screen + updates when backtracking, especially to the first cell. Add F/B/a + commands. + +20001021 5.2 release for upload to ftp.gnu.org + + update generated html files from manpages. + + modify dist.mk to use edit_man.sh to substitute autoconf'd variables + in html manpages. + + fix an uninitialized pointer in read_termcap.c (report by Todd C + Miller, from report/patch by Philip Guenther ). + + correct help-message and array limit in knight.c (patch by Brian + Raiter ). + > patch by Juergen Pfeifer: + + fix to avoid warning by GNAT-3.13p about use of inconsistent casing + for some identifiers defined in the standard package. + + cosmetic change to forms/fty_enum.c + +20001014 + + correct an off-by-one position in test/railroad.c which could cause + wrapping at the right margin. + + test/repair some issues with libtool configuration. Make + --disable-echo force libtool --silent. (Libtool does not work for + OS/2 EMX, works partly for SCO - libtool is still very specific to + gcc). + + change default of --with-manpage-tbl to "no", since for most of the + platforms which do have tbl installed, the system "man" program + understands how to run tbl automatically. + + minor improvement to force_bar() in comp_parse.c (Bernhard + Rosenkraenzer ). + + modify lib_tparm.c to use get_space() before writing terminating + null character, both for consistency as well as to ensure that if + save_char() was called immediately before, that the allocated memory + is enough (patch by Sergei Ivanov). + + add note about termcap ML capability which is duplicated between two + different capabilities: smgl and smglr (reported by Sergei Ivanov + ). + + correct parameter counts in include/Caps for dclk as well as some + printer-specific capabilities: csnm, defc, scs, scsd, smgtp, smglp. + > patch by Johnny C Lam : + + add support for building with libtool (apparently version 1.3.5, + since old versions do not handle -L../lib), using new configure + option --with-libtool. + + add configure option --with-manpage-tbl, which causes the manpages to + be preprocessed by tbl(1) prior to installation, + + add configure option --without-curses-h, which causes the + installation process to install curses.h as ncurses.h and make + appropriate changes to headers and manpages. + +20001009 + + correct order of options/parameters in run_tic.in invocation of tic, + which did not work with standard getopt() (reported by Ethan + Butterfield ). + + correct logic for 'reverse' variable in lib_vidattr.c, which was + setting it true without checking if newmode had A_REVERSE set, e.g., + using $TERM=ansi on OS/2 EMX (see 20000917). + > patch by Todd C Miller: + + add a few missing use_terminfo_vars() and fixes up _nc_tgetent(). + Previously, _nc_cgetset() would still get called on cp so the + simplest thing is to set cp to NULL if !use_terminfo_vars(). + + added checks for an empty $HOME environment variable. + > patches for OS/2 EMX (Ilya Zakharevich): + + modify convert_configure.pl to support INSTALL. Change compiler + options in that script to use multithreading, needed for the mouse. + + modify OS/2 mouse support, retrying as a 2-button mouse if code fails + to set up a 3-button mouse. + + improve code for OS/2 mouse support, using _nc_timed_wait() to + replace select() call. + +20001007 + + change type of ospeed variable back to short to match its use in + legacy applications (reported by Andrey A Chernov). + + add case to configure script for --enable-rpath on IRIX (patch by + Albert Chin-A-Young). + + minor fix to position_check() function, to ensure it gets the whole + cursor report before decoding. + + add configure option --disable-assumed-color, to allow pre-5.1 + convention of default colors used for color-pair 0 to be configured + (see assume_default_colors()). + + rename configure option --enable-hashmap --disable-hashmap, and + reorder the configure options, splitting the experimental and + development + + add configure option --disable-root-environ, which tells ncurses to + disregard $TERMINFO and similar environment variables if the current + user is root, or running setuid/setgid (based on discussion with + several people). + + modified misc/run_tic.in to use tic -o, to eliminate dependency on + $TERMINFO variable for installs. + + add table entry for plab_norm to tput, so it passes in strings + for that capability. + + modify parse_format() in lib_tparm.c to ignore precision if it is + longer than 10000 (report by Jouko Pynnonen). + + rewrote limit checks in lib_mvcur.c using new functions + _nc_safe_strcat(), etc. Made other related changes to check lengths + used for strcat/strcpy (report by Jouko Pynnonen + ). + +20000930 + + modify several descriptions, including those for setaf, setab, in + include/Caps to indicate that the entries are parameterized. This + information is used to tell which strings are translated when + converting to termcap. Fixes a problem where the generated termcap + would contain a spurious "%p1" for the terminfo "%p1%d". + + modify ld -rpath options (e.g., Linux, and Solaris) to use an + 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. + + various fixes for install scripts used to support configure --srcdir + and --with-install-prefix (reported by Matthew Clarke + ). + + make configure script checks on variables $GCC and $GXX consistently + compare against 'yes' rather than test if they are nonnull, since + either may be set to the corresponding name of the C or C++ compiler + (report/patch by Albert Chin-A-Young). + +20000923 + + modify rs2 capability in xterm-r6 and similar where cursor + save/restore bracketed the sequence for resetting video attributes. + The cursor restore would undo that (report by John Hawkinson + (see NetBSD misc/11052)). + + using parameter check added to tic, corrected 27 typos in + terminfo.src -TD + + modify tic to verify that its inputs are really files, in case + someone tries to read a directory (or /dev/zero). + + add a check for empty buffers returned by fgets() in comp_scan.c + next_char() function, in case tic is run on a non-text file (fixes + a core dump reported by Aaron Campbell ). + + add to railroad.c some code exercising tgoto(), providing an + alternate form of display if the terminal supports cursor addressing. + + split-out tgoto() again, this time into new file lib_tgoto.c, and + implement a conventional BSD-style tgoto() which is used if the + capability string does not contain terminfo-style padding or + parameters (requested by Andrey A Chernov). + + add check to tic which reports capabilities that do not reference + the expected number of parameters. + + add error checking to infocmp's -v and -m options to ensure that + the option value is indeed a number. + + some cleanup of logic in _nc_signal_handler() to verify if SIGWINCH + handler is setup. Separated the old/new sigaction data for SIGTSTP + from the other signals. + +20000917 + + add S0, E0 extensions to screen's terminfo entry, which is another + way to solve the misconfiguration issue -TD + + completed special case for tgoto from 20000916 + +20000916 + + update xterm terminfo entries to match XFree86 xterm patch #146 -TD + + add Matrix Orbital terminfo entries (from Eric Z Ayers + ). + + add special case to lib_tparm.c to allow 'screen' program to use a + termcap-style parameter "%." to tgoto() for switching character sets. + + use LN_S substitution in run_tic.in, to work on OS/2 EMX which has + no symbolic links. + + updated notes in README.emx regarding autoconf patches. + + replace a lookup table in lib_vidattr.c used to decode no_color_video + with a logic expression (suggested by Philippe Blain). + + add a/A toggle to ncurses.c 'b' test, which clears/sets alternate + character set attribute from the displayed text. + + correct inequality in parameter analysis of rewritten lib_tparm.c + which had the effect of ignoring p9 in set_attributes (sgr), breaking + alternate character set (reported by Piotr Majka ). + + correct ifdef'ing for GCC_PRINTF, GCC_SCANF which would not compile + with Sun WorkShop compilers since these tokens were empty (cf: + 20000902, reported by Albert Chin-A-Young). + +20000909 + + correct an uninitialized parameter to open_tempfile() in tic.c which + made "tic -I" give an ambiguous error message about tmpnam. + + add special case in lib_vidattr.c to reset underline and standout for + devices that have no sgr0 defined (patch by Don Lewis + ). Note that this will not work for bold + mode, since there is no exit-bold-mode capability. + + improved patch for Make_Enum_Type (patch by Juergen Pfeifer). + + modify tparm to disallow arithmetic on strings, analyze the varargs + list to read strings as strings and numbers as numbers. + + modify tparm's internal function spop() to treat a null pointer as + an empty string. + + modify tput program so it can be renamed or invoked via a link as + 'reset' or 'init', producing the same effect as 'tput reset' or 'tput + init'. + + add private entrypoint _nc_basename(), use to consolidate related + code in progs, as well as accommodating OS/2 EMX pathnames. + + remove NCURSES_CONST line from edit_cfg.sh to compensate for its + removal (except via AC_SUBST) from configure.in, making + --enable-const work again (reported by Juergen Pfeifer). + + regen'd configure to pick up "hpux*" change from 20000902. + +20000902 + + modify tset.c to check for transformed "reset" program name, if any. + + add a check for null pointer in Make_Enum_Type() (reported by Steven + W Orr ). + + change functions _nc_parse_entry() and postprocess_termcap() to avoid + using strtok(), because it is non-reentrant (reported by Andrey A + Chernov ). + + remove "hpux10.*" case from CF_SHARED_OPTS configure script macro. + This differed from the "hpux*" case by using reversed symbolic + links, which made the 5.1 version not match the configuration of + 5.0 shared libraries (reported by Albert Chin-A-Young). + + correct a dependency in Ada95/src/Makefile.in which prevented + building with configure --srcdir (patch by H Nanosecond + ). + + modify ifdef's in curses.h.in to avoid warning if GCC_PRINTF or + GCC_SCANF was not previously defined (reported by Pavel Roskin + ). + + add MKncurses_def.sh to generate fallback definitions for + ncurses_cfg.h, to quiet gcc -Wundef warnings, modified ifdef's in + code to consistently use "#if" rather than "#ifdef". + +20000826 + + add QNX qansi entries to terminfo -TD + + add os2 entry to misc/emx.src (). + + add configure option --with-database to allow specifying a different + terminfo source-file to install. On OS/2 EMX, this defaults to + misc/emx.src + + change misc/run_tic.sh to derive it from misc/run_tic.in, to simplify + setting .exe extension on OS/2 EMX. + + add .exe extension in Ada95/gen/Makefile.in, + Ada95/samples/Makefile.in, for OS/2 EMX (reported by + ). + + add configure check for filesystems (such as OS/2 EMX) which do not + distinguish between upper/lowercase filenames, use this to fix tags + rules in makefiles. + + initialize fds[] array to 0's in _nc_timed_wait(); apparently poll() + only sets the revents members of that array when there is activity + corresponding to the related file (report by Glenn Cooper + , using Purify on Solaris 5.6). + + change configure script to use AC_CANONICAL_SYSTEM rather than + AC_CANONICAL_HOST, which means that configure --target will set + a default program-prefix. + + add note on cross-compiling to INSTALL (which does not rely on the + AC_CANONICAL_* macros). + +20000819 + + add cases for EMX OS/2 to config.guess, config.sub + + new version of config.guess, config.sub from lynx 2.8.4dev.7 + + add definitions via transform.h to allow tic and tput to check for + the transformed aliases rather than the original infotocap, etc. + + simplify transform-expressions in progs/Makefile.in, make the + uninstall rule work for transformed program names. + + change symbol used by --install-prefix configure option from + INSTALL_PREFIX to DESTDIR (the latter has become common usage + although the name is misleading). + + modify programs to use curses_version() string to report the version + of ncurses with which they are compiled rather than the + NCURSES_VERSION string. The function returns the patch level in + addition to the major and minor version numbers. + +20000812 + + modify CF_MAN_PAGES configure macro to make transformed program names + a parameter to that macro rather than embedding them in the macro. + + newer config.guess, config.sub (reference version used in lynx + 2.8.4dev.7). + + add configure option --with-default-terminfo-dir=DIR to allow + specifying the default terminfo database directory (request by Albert + Chin-A-Young). + + minor updates for terminfo.src from FreeBSD termcap change-history. + + correct notes in README and INSTALL regarding documentation files + that were moved from misc directory to doc (report by Rich Kulawiec + ). + + change most remaining unquoted parameters of 'test' in configure + script to use quotes, for instance fixing a problem in the + --disable-database option (reported by Christian Mondrup + ). + + minor adjustments to work around some of the incompatibilities/bugs + in autoconf 2.29a alpha. + + add -I/usr/local/include when --with-ncurses option is used in + test/configure script. + + correct logic in adjust_cancels(), which did not check both + alternatives when reclassifying an extended name between boolean, + number and string, causing an infinite loop in tic. + +20000730 + + correct a missing backslash in curses.priv.h + +20000729 + + change handling of non_dest_scroll_region in tty_update.c to clear + text after it is shifted in rather than before shifting out. Also + correct row computation (reported by Ruediger Kuhlmann + ). + + add/use new trace function to display chtype values from winch() and + getbkgd(). + + add trace mask TRACE_ATTRS, alter several existing _tracef calls that + trace attribute changes under TRACE_CALLS to use this. + + modify MKlib_gen.sh so that functions returning chtype will call + returnChar(). + + add returnChar() trace, for functions returning chtype. + + change indent.pro to line up parenthesis. + +20000722 + + fix a heap problem with the c++ binding (report by + , patch by Juergen Pfeifer). + + minor adjustment to ClrToEOL() to handle an out-of-bounds parameter. + + modify the check for big-core to force a couple of memory accesses, + which may work as needed for older/less-capable machines (if not, + there's still the explicit configure option). + > fixes based on diff's for Amiga and BeOS found at + http://www.mathematik.uni-karlsruhe.de/~kuhlmann/cross/ncurses/ + + alter definition of NCURSES_CONST to make it non-empty. + + add amiga-vnc terminfo entry. + + redefine 'TEXT' in menu.h for AMIGA, since it is reported to have + an (unspecified) symbol conflict. + + replaced case-statement in _nc_tracebits() for CSIZE with a table to + simplify working around implementations that define random + combinations of the related macros to zero. + + modify configure test for tcgetattr() to allow for old + implementations, e.g., on BeOS, which only defined it as a macro. + > patches by Bruno Haible: + + when checking LC_ALL/LC_CTYPE/LANG environment variables for UTF-8 + locale, ignore those which are set to an empty value, as per SUSV2. + + encode 0xFFFD in UTF-8 with 3 bytes, not 2. + + modify _nc_utf8_outch() to avoid sign-extension when checking for + out-of-range value. + +20000715 + + correct manlinks.sed script to avoid using ERE "\+", which is not + understood by older versions of sed (patch by Albert Chin-A-Young). + + implement configure script options that transform installed program + names, e.g., --program-prefix, including the manpage names and cross + references (patch by Albert Chin-A-Young ). + + correct several mismatches between manpage filename and ".TH" + directives, renaming dft_fgbg.3x to default_colors.3x and + menu_attribs.3x to menu_attributes.3x (report by Todd C Miller). + + correct missing includes for in several places, including + the C++ binding. This is not noted by gcc unless we use the + -fno-builtin option (reported by Igor Schein ). + + modified progs/tset.c and tack/sysdep.c to build with sgttyb + interface if neither termio or termios is available. Tested this + with FreeBSD 2.1.5 (which does have termios - but the sgttyb does + work). + +20000708 5.1 release for upload to ftp.gnu.org + + document configure options in INSTALL. + + 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(). + + add prototypes for touchline() and touchwin(), adding them to the + list of generated functions. + + modify fifo_push() to put ERR into the fifo just like other values to + return from wgetch(). It was returning without doing that, making + end-of-file condition incorrectly return a 0 (reported by Todd C + Miller). + + uncomment CC_SHARED_OPTS for progs and tack (see 971115), since they + are needed for SCO OpenServer. + + move _nc_disable_period from free_ttype.c to comp_scan.c to appease + dynamic loaders on SCO and IRIX64. + + add "-a" option to test/ncurses.c to invoke assume_default_colors() + for testing. + + correct assignment in assume_default_colors() which tells ncurses + whether to use default colors, or the assumed ones (reported by Gary + Funck ). + + review/correct logic in mk-1st.awk for making symbolic links for + shared libraries, in particular for FreeBSD, etc. + + regenerate misc/*.def files for OS/2 EMX dll's. + + correct quoting of values for CC_SHARED_OPTS in aclocal.m4 for + cases openbsd2*, openbsd*, freebsd* and netbsd* (patch by Peter + Wemm) (err in 20000610). + + minor updates to release notes, as well as adding/updating URLs for + examples cited in announce.html + > several fixes from Philippe Blain : + + correct placement of ifdef for NCURSES_XNAMES in function + _nc_free_termtype(), fixes a memory leak. + + add a call to _nc_synchook() to the end of function whline() like + that in wvline() (difference was in 1.9.4). + + make ClearScreen() a little faster by moving two instances of + UpdateAttr() out of for-loops. + + simplify ClrBottom() by eliminating the tstLine data, using for-loops + (cf: 960428). + +20000701 pre-release + + change minor version to 1, i.e., ncurses 5.1 + + add experimental configure option --enable-colorfgbg to check for + $COLORFGBG variable as set by rxvt/aterm/Eterm. + + add Eterm terminfo entry (Michael Jennings ). + + modify manlinks.sed to pick aliases from the SYNOPSIS section, and + several manpages so manlinks.sed can find aliases for creating + symbolic links. + + add explanation to run_tic.sh regarding extended terminal + capabilities. + + change message format for edit_cfg.sh, since some people interpret + it as a warning. + + correct unescaped '$' in sysv5uw7*|unix_sv* rule for CF_SHARED_OPTS + configure macro (report by Thanh Ma ). + + correct logic in lib_twait.c as used by lib_mouse.c for GPM mouse + support when poll() is used rather than select() (prompted by + discussion with David Allen ). + +20000624 pre-release + + modify TransformLine() to check for cells with different color pairs + that happen to render the same display colors. + + apply $NCURSES_NO_PADDING to cost-computation in mvcur(). + + improve cost computation in PutRange() by accounting for the use + of parm_right_cursor in mvcur(). + + correct cost computation in EmitRange(), which was not using the + normalized value for cursor_address. + + newer config.guess, config.sub (reference version used in TIN 1.5.6). + +20000617 + + update config.guess, config.sub (reference version used in PCRE 3.2). + + resync changes to gnathtml against version 1.22, regenerated html + files under doc/html/ada using this (1.22.1.1). + + regenerated html files under doc/html/man after correcting top and + bottom margin options for man2html in dist.mk + + minor fixes to test programs ncurses 'i' and testcurs program to make + the subwindow's background color cover the subwindow. + + modify configure script so AC_MSG_ERROR is temporarily defined to a + warning in AC_PROG_CXX to make it recover from a missing C++ compiler + without requiring user to add --without-cxx option (adapted from + comment by Akim Demaille to autoconf mailing list). + + modify headers.sh to avoid creating temporary files in the build + directory when installing headers (reported by Sergei Pokrovsky + ) + +20000610 + + regenerated the html files under doc/html/ada/files and + doc/html/ada/funcs with a slightly-improved gnathtml. + + add kmous capability to linux terminfo entry to allow it to use + xterm-style events provided by gpm patch by Joerg Schoen. + + make the configure macro CF_SHARED_OPTS a little smarter by testing + if -fPIC is supported by gcc rather than -fpic. The former option + allows larger symbol tables. + + update config.guess and config.sub (patches by + Kevin Buettner (for elf64_ia64), + Bernd Kuemmerlen (for MacOS X)). + + add warning for 'tic -cv' about use of '^?' in terminfo source, which + is an extension. + +20000527 + + modify echo() behavior of getch() to match Solaris curses for + carriage return and backspace (reported by Neil Zanella). + + change _nc_flush() to a function. + + modify delscreen() to check if the output stream has been closed, and + if so, free the buffer allocated for setbuf (this provides an + ncurses-specific way to avoid a memory leak when repeatedly calling + newterm reported by Chipp C ). + + correct typo in curs_getch.3x manpage regarding noecho (reported by + David Malone ). + + add a "make libs" rule. + + make the Ada95 interface build with configure --enable-widec. + + if the configure --enable-widec option is given, append 'w' to names + of the generated libraries (e.g., libncursesw.so) to avoid conflict + with existing ncurses libraries. + +20000520 + + modify view.c to make a rudimentary viewer of UTF-8 text if ncurses + is configured with the experimental wide-character support. + + add a simple UTF-8 output driver to the experimental wide-character + support. If any of the environment variables LC_ALL, LC_CTYPE or + LANG contain the string "UTF-8", this driver will be used to + translate the output to UTF-8. This works with XFree86 xterm. + + modify configure script to allow building shared libraries on BeOS + (from a patch by Valeriy E Ushakov). + + modify lib_addch.c to allow repeated update to the lower-right + corner, rather than displaying only the first character written until + the cursor is moved. Recent versions of SVr4 curses can update the + lower-right corner, and behave this way (reported by Neil Zanella). + + add a limit-check in _nc_do_color(), to avoid using invalid color + pair value (report by Brendan O'Dea ). + +20000513 + + the tack program knows how to use smcup and rmcup but the "show caps + that can be tested" feature did not reflect this knowledge. Correct + the display in the menu tack/test/edit/c (patch by Daniel Weaver). + + xterm-16color does allow bold+colors, removed ncv#32 from that + terminfo entry. + +20000506 + + correct assignment to SP->_has_sgr_39_49 in lib_dft_fgbg.c, which + broke check for screen's AX capability (reported by Valeriy E Ushakov + ). + + change man2html rule in dist.mk to workaround bug in some + man-programs that ignores locale when rendering hyphenation. + + change web- and ftp-site to dickey.his.com + +20000429 + + move _nc_curr_token from parse_entry.c to comp_scan.c, to work around + problem linking tack on MacOS X DP3. + + include in lib_napms.c to compile on MacOS X DP3 + (reported by Gerben Wierda ). + + modify lib_vidattr.c to check for ncv fixes when pair-0 is not + default colors. + + add -d option to ncurses.c, to turn on default-colors for testing. + + add a check to _nc_makenew() to ensure that newwin() and newpad() + calls do not silently fail by passing too-large limits. + + add symbol NCURSES_SIZE_T to use rather than explicit 'short' for + internal window and pad sizes. Note that since this is visible in + the WINDOW struct, it would be an ABI change to make this an 'int' + (prompted by a question by Bastian Trompetter + , who attempted to create a 96000-line pad). + +20000422 + + add mgterm terminfo entry from NetBSD, minor adjustments to sun-ss5, + aixterm entries -TD + + modify tack/ansi.c to make it more tolerant of bad ANSI replies. An + example of an illegal ANSI resonse can be found using Microsoft's + Telnet client. A correct display can be found using a VT-4xx + terminal or XFree86 xterm with: + XTerm*VT100*decTerminalID: 450 + (patch by Daniel Weaver). + + modify gdc.c to recognize 'q' for quit, 's' for single-step and ' ' + for resume. Add '-n' option to force gdc's standard input to + /dev/null, to both illustrate the use of newterm() for specifying + alternate inputs as well as for testing signal handling. + + minor fix for configure option --with-manpage-symlinks, for target + directories that contain a period ('.') (reported by Larry Virden). + +20000415 + + minor additions to beterm entry (feedback from Rico Tudor) -TD + + corrections/updates for some IBM terminfo entries -TD + + modify _nc_screen_wrap() so that when exiting curses mode with + non-default colors, the last line on the screen will be cleared to + the screen's default colors (request by Alexander V Lukyanov). + + modify ncurses.c 'r' example to set nonl(), allowing control/M to be + read for demonstrating the REQ_NEW_LINE operation (prompted by a + question by Tony L Keith ). + + modify ncurses.c 'r' example of field_info() to work on Solaris 2.7, + documented extension of ncurses which allows a zero pointer. + + modify fmt_complex() to avoid buffer overflow in case of excess + recursion, and to recognize "%e%?" as a synonym for else-if, which + means that it will not recur for that special case. + + add logic to support $TERMCAP variable in case the USE_GETCAP symbol + is defined (patch by Todd C Miller). + + modify one of the m4 files used to generate the Ada95 sources, + to avoid using the token "symbols" (patch by Juergen Pfeifer). + +20000408 + + add terminfo entries bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig) + + correct spelling error in terminfo entry name: bq300-rv was given as + bg300-rv in esr's version. + + modify redrawwin() macro so its parameter is fully parenthesized + (fixes Debian #61088). + + correct formatting error in dump_entry() which set incorrect column + value when no newline trimming was needed at the end of an entry, + before appending "use=" clauses (cf: 960406). + +20000401 + + add configure option --with-manpage-symlinks + + change unctrl() to render C1 characters (128-159) as ~@, ~A, etc. + + change makefiles so trace() function is provided only if TRACE is + defined, e.g., in the debug library. Modify related calls to + _tracechar() to use unctrl() instead. + +20000325 + + add screen's AX capability (for ECMA SGR 39 and 49) to applicable + terminfo entries, use presence of this as a check for a small + improvement in setting default colors. + + improve logic in _nc_do_color() implementing assume_default_colors() + by passing in previous color pair info to eliminate redundant call to + set_original_colors(). (Part of this is from a patch by Alexander + V Lukyanov). + + modify warning in _nc_trans_string() about a possibly too-long string + to do this once only rather than for each character past the + threshold (600). Change interface of _nc_trans_string() to allow + check for buffer overflow. + + correct use of memset in _nc_read_entry_source() to initialize ENTRY + struct each time before reading new data into it, rather than once + per loop (cf: 990301). This affects multi-entry in-core operations + such as "infocmp -Fa". + +20000319 + + remove a spurious pointer increment in _nc_infotocap() changes from + 20000311. Add check for '.' in format of number, since that also + is not permitted in termcap. + + correct typo in rxvt-basic terminfo from temporary change made while + integrating 20000318. + +20000318 + + revert part of the vt220 change (request by Todd C Miller). + + add ansi-* terminfo entries from ESR's version. + + add -a option to tic and infocmp, which retains commented-out + capabilities during source translation/comparison, e.g., captoinfo + and infotocap. + + modify cardfile.c to display an empty card if no input data file is + found, fixes a core dump in that case (reported by Bruno Haible). + + correct bracketing in CF_MATH_LIB configure macro, which gave wrong + result for OS/2 EMX. + + supply required parameter for _nc_resolve_uses() call in + read_termcap.c, overlooked in 20000311 (reported by Todd C Miller). + > patches by Bruno Haible : + + fix a compiler warning in fty_enum.c + + correct LIB_PREFIX expression for DEPS_CURSES in progs, tack + makefiles, which resulted in redundant linking (cf: 20000122). + +20000311 + + make ifdef's for BROKEN_LINKER consistent (patch by Todd C Miller). + + improved tack/README (patch by Daniel Weaver). + + modify tput.c to ensure that unspecified parameters are passed to + tparm() as 0's. + + add a few checks in infocmp to guard against buffer overflow when + displaying string capabilities. + + add check for zero-uses in infocmp's file_comparison() function + before calling _nc_align_termtype(). Otherwise one parameter is + indexed past the end of the uses-array. + + add an option -q to infocmp to specify the less verbose output, + keeping the existing format as the default, though not retaining the + previous behavior that made the -F option compare each entry to + itself. + + adapted patch by ESR to make infocmp -F less verbose -TD + (the submitted patch was unusable because it did not compile + properly) + + modify write_entry.c to ensure that absent or cancelled booleans + are written as FALSE, for consistency with infocmp which now + assumes this. Note that for the small-core configuration, tic + may not produce the same result as before. + + change some private library interfaces used by infocmp, e.g., + _nc_resolve_uses(). + + add a check in _nc_infotocap() to ensure that cm-style capabilities + accept only %d codes when converting the format from terminfo to + termcap. + + modify ENTRY struct to separate the data in 'parent' into the name + and link values (the original idea to merge both into 'parent' was + not good). + + discard repair_acsc(tterm); + > patch by Juergen Pfeifer: + + drop support for gnat 3.10 + + move generated documentation and html files under ./doc directory, + adding makefile rules for this to dist.mk + +20000304 + + correct conflicting use of tparm() in 20000226 change to tic, which + made it check only one entry at a time. + + fix errors in ncurses-intro.html and hackguide.html shown by Dave + Raggett's tidy. + + make the example in ncurses-intro.html do something plausible, and + corrected misleading comment (reported by Neil Zanella). + + modify pnoutrefresh() to set newscr->_leaveok as wnoutrefresh() does, + to fix a case where the cursor position was not updated as in + Solaris (patch by David Mosberger ). + + add a limit-check for wresize() to ensure that a subwindow does not + address out of bounds. + + correct offsets used for subwindows in wresize() (patch by Michael + Andres ). + + regenerate html'ized manual pages with man2html 3.0.1 (patch by + Juergen Pfeifer). This generated a file with a space in its name, + which I removed. + + fix a few spelling errors in tack. + + modify tack/Makefile.in to match linker options of progs/Makefile.in; + otherwise it does not build properly for older HPUX shared library + configurations. + + add several terminfo entries from esr's "11.0". + +20000226 + + make 'tput flash' work properly for xterm by flushing output in + delay_output() when using napms(), and modifying xterm's terminfo to + specify no padding character. Otherwise, xterm's reported baud rate + can mislead ncurses into producing too few padding characters + (Debian #58530). + + add a check to tic for consistency between sgr and the separate + capabilities such as smso, use this to check/correct several + terminfo entries (Debian #58530). + + add a check to tic if cvvis is the same as cnorm, adjusted several + terminfo entries to remove the conflict (Debian #58530). + + correct prototype shown in attr_set()/wattr_set() manpages (fixes + Debian #53962). + + minor clarification for curs_set() and leaveok() manpages. + + use mkstemp() for creating temporary file for tic's processing of + $TERMCAP contents (fixes Debian #56465). + + correct two errors from integrating Alexander's changes: did not + handle the non-bce case properly in can_erase_with() (noted by + Alexander), and left fg/bg uninitialized in the pair-zero case of + _nc_do_color() (reported by Dr Werner Fink and + Ismael Cordeiro ). + +20000219 + + store default-color code consistently as C_MASK, even if given as + -1 for convenience (adapted from patches by Alexander V Lukyanov). + > patches by Alexander V Lukyanov: + + change can_clear_with() macro to accommodate logic for + assume_default_colors(), making most of the FILL_BCE logic + unnecessary. Made can_clear_with() an inline function to make it + simpler to read. + +20000212 + + corrected form of recent copyright dates. + + minor corrections to xterm-xf86-v333 terminfo entry -TD + > patches by Alexander V Lukyanov: + + reworded dft_fgbg.3x to avoid assuming that the terminal's default + colors are white on black. + + fix initialization of tstLine so that it is filled with current blank + character in any case. Previously it was possible to have it filled + with old blank. The wrong over-optimization was introduced in 991002 + patch. (it is not very critical as the only bad effect is not using + clr_eos for clearing if blank has changed). + +20000205 + + minor corrections/updates to several terminfo entries: rxvt-basic, + vt520, vt525, ibm5151, xterm-xf86-v40 -TD + + modify ifdef's for poll() to allow it to use , thereby + allowing poll() to be used on Linux. + + add CF_FUNC_POLL macro to check if poll() is able to select from + standard input. If not we will not use it, preferring select() + (adapted from patch by Michael Pakovic ). + + update CF_SHARED_OPTS macro for SCO Unixware 7.1 to allow building + shared libraries (reported/tested by Thanh ). + + override $LANGUAGE in build to avoid incorrect ordering of keynames. + + correct CF_MATH_LIB parameter, must be sin(x), not sqrt(x). + +20000122 + + resync CF_CHECK_ERRNO and CF_LIB_PREFIX macros from tin and xterm -TD + + modify CF_MATH_LIB configure macro to parameterize the test function + used, for reuse in dialog and similar packages. + + correct tests for file-descriptors in OS/2 EMX mouse support. A + negative value could be used by FD_SET, causing the select() call + to wait indefinitely. + +20000115 + + additional fixes for non-bce terminals (handling of delete_character) + to work when assume_default_colors() is not specified. + + modify warning message from _nc_parse_entry() regarding extended + capability names to print only if tic/infocmp/toe have the -v flag + set, and not at all in ordinary user applications. Otherwise, this + warning would be shown for screen's extended capabilities in programs + that use the termcap interface (reported by Todd C Miller). + + modify use of _nc_tracing from programs such as tic so their debug + level is not in the same range as values set by trace() function. + + small panel header cleanup (patch by Juergen Pfeifer). + + add 'railroad' demo for termcap interface. + + modify 'tic' to write its usage message to stderr (patch by Todd C + Miller). + +20000108 + + add prototype for erase() to curses.h.in, needed to make test + programs build with c++/g++. + + add .c.i and .c.h suffix rules to generated makefiles, for debugging. + + correct install rule for tack.1; it assumed that file was in the + current directory (reported by Mike Castle ). + + modify terminfo/termcap translation to suppress acsc before trying + sgr if the entry would be too large (patch by Todd C Miller). + + document a special case of incompatibility between ncurses 4.2 and + 5.0, add a section for this in INSTALL. + + add TRACE_DATABASE flag for trace(). + +20000101 + + update mach, add mach-color terminfo entries based on Debian diffs + for ncurses 5.0 -TD + + add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp + terminfo entries -TD + + change OTrs capabilities to rs2 in terminfo.src -TD + + add obsolete and extended capabilities to 'screen' terminfo -TD + + corrected conversion from terminfo rs2 to termcap rs (cf: 980704) + + make conversion to termcap ug (underline glitch) more consistently + applied. + + fix out-of-scope use of 'personal[]' buffer in 'toe' (this error + was in the original pre-1.9.7 version, when $HOME/.terminfo was + introduced). + + modify 'toe' to ignore terminfo directories to which it has no + permissions. + + modify read_termtype(), fixing 'toe', which could dump core when it + found an incomplete entry such as "dumb" because it did not + initialize its buffer for _nc_read_file_entry(). + + use -fPIC rather than -fpic for shared libraries on Linux, not + needed for i386 but some ports (from Debian diffs for 5.0) -TD + + use explicit VALID_NUMERIC() checks in a few places that had been + overlooked, and add a check to ensure that init_tabs is nonzero, + to avoid divide-by-zero (reported by Todd C Miller). + + minor fix for CF_ANSI_CC_CHECK configure macro, for HPUX 10.x (from + tin) -TD + +19991218 + + reorder tests during mouse initialization to allow for gpm to run in + xterm, or for xterm to be used under OS/2 EMX. Also drop test for + $DISPLAY in favor of kmous=\E[M or $TERM containing "xterm" (report + by Christian Weisgerber ). + + modify raw() and noraw() to clear/restore IEXTEN flag which affects + stty lnext on systems such as FreeBSD (report by Bruce Evans + , via Jason Evans ). + + fix a potential (but unlikely) buffer overflow in failed() function + of tset.c (reported by Todd C Miller). + + add manual-page for ncurses extensions, documented curses_version(), + use_extended_names(). + +19991211 + + treat as untranslatable to termcap those terminfo strings which + contain non-decimal formatting, e.g., hexadecimal or octal. + + correct commented-out capabilities that cannot be translated to + termcap, which did not check if a colon must be escaped. + + correct termcap translation for "%>" and "%+", which did not check + if a colon must be escaped, for instance. + + use save_string/save_char for _nc_captoinfo() to eliminate fixed + buffer (originally for _nc_infotocap() in 960301 -TD). + + correct expression used for terminfo equivalent of termcap %B, + adjust regent100 entry which uses this. + + some cleanup and commenting of ad hoc cases in _nc_infotocap(). + + eliminate a fixed-buffer in tic, used for translating comments. + + add manpage for infotocap + +19991204 + + add kvt and gnome terminfo entries -TD + + correct translation of "%%" by infotocap, which was emitted as "%". + + add "obsolete" termcap strings to terminfo.src + + modify infocmp to default to showing obsolete capabilities rather + than terminfo only. + + modify write_entry.c so that if extended names (i.e., configure + --enable-tcap-names) are active, then tic will also write "obsolete" + capabilities that are present in the terminfo source. + + modify tic so that when running as captoinfo or infotocap, it + initializes the output format as in -C and -I options, respectively. + + improve infocmp and tic -f option by splitting long strings that do + not have if-then-else construct, but do have parameters, e.g., the + initc for xterm-88color. + + refine MKtermsort.sh slightly by using bool for the *_from_termcap + arrays. + +19991127 + + additional fixes for non-bce terminals (handling of clear_screen, + clr_eol, clr_eos, scrolling) to work when assume_default_colors() is + not specified. + + several small changes to xterm terminfo entries -TD. + + move logic for _nc_windows in lib_freeall.c inside check for nonnull + SP, since it is part of that struct. + + remove obsolete shlib-versions, which was unintentionally re-added + in 970927. + + modify infocmp -e, -E options to ensure that generated fallback.c + type for Booleans agrees with term.h (reported by Eric Norum + ). + + correct configure script's use of $LIB_PREFIX, which did not work + for installing the c++ directory if $libdir did not end with "/lib" + (reported by Huy Le ). + + modify infocmp so -L and -f options work together. + + modify the initialization of SP->_color_table[] in start_color() so + that color_content() will return usable values for COLORS greater + than 8. + + modify ncurses 'd' test in case COLORS is greater than 16, e.g., for + xterm-88color, to limit the displayed/computed colors to 16. + > patch by Juergen Pfeifer: + + simplify coding of the panel library according to suggestions by + Philippe Blain. + + improve macro coding for a few macros in curses.priv.h + +19991113 + + modify treatment of color pair 0 so that if ncurses is configured + to support default colors, and they are not active, then ncurses + will set that explicitly, not relying on orig_colors or orig_pair. + + add new extension, assume_default_colors() to provide better control + over the use of default colors. + + modify test programs to use more-specific ifdef's for existence of + wresize(), resizeterm() and use_default_colors(). + + modify configure script to add specific ifdef's for some functions + that are included when --enable-ext-funcs is in effect, so their + existence can be ifdef'd in the test programs. + + reorder some configure options, moving those extensions that have + evolved from experimental status into a new section. + + change configure --enable-tcap-names to enable this by default. + +19991106 + + install tack's manpage (reported by Robert Weiner + ) + + correct worm.c's handling of KEY_RESIZE (patch by Frank Heckenbach). + + modify curses.h.in, undef'ing some symbols to avoid conflict with C++ + STL (reported by Matt Gerassimoff ) + +19991030 + + modify linux terminfo entry to indicate that dim does not mix with + color (reported by Klaus Weide ). + + correct several typos in terminfo entries related to missing '[' + in CSI's -TD + + fix several compiler warnings in c++ binding (reported by Tim + Mooney for alphaev56-dec-osf4.0f + + rename parameter of _nc_free_entries() to accommodate lint. + + correct lint rule for tack, used incorrect list of source files. + + add case to config.guess, config.sub for Rhapsody. + + improve configure tests for libg++ and libstdc++ by omitting the + math library (which is missing on Rhapsody), and improved test for + the math library itself (adapted from path by Nelson H. F. Beebe). + + explicitly initialize to zero several data items which were + implicitly initialized, e.g., cur_term. If not explicitly + initialized, their storage type is C (common), and causes problems + linking on Rhapsody 5.5 using gcc 2.7.2.1 (reported by Nelson H. F. + Beebe). + + modify Ada95 binding to not include the linker option for Ada + bindings in the Ada headers, but in the Makefiles instead (patch by + Juergen Pfeifer). + +19991023 5.0 release for upload to ftp.gnu.org + + effective with release of 5.0, change NCURSES_VERSION_PATCH to + 4-digit year. + + add function curses_version(), to return ncurses library version + (request by Bob van der Poel). + + remove rmam, smam from cygwin terminfo entry. + + modify FreeBSD cons25 terminfo entry to add cnorm and cvvis, as well + as update ncv to indicate that 'dim' conflicts with colors. + + modify configure script to use symbolic links for FreeBSD shared + libraries by default. + + correct ranf() function in rain and worm programs to ensure it does + not return 1.0 + + hide the cursor in hanoi.c if it is running automatically. + + amend lrtest.c to account for optimizations that exploit margin + wrapping. + + add a simple terminfo demo, dots.c + + modify SIGINT/SIGQUIT handler to set a flag used in _nc_outch() to + tell it to use write() rather than putc(), since the latter is not + safe in a signal handler according to POSIX. + + add/use internal macros _nc_flush() and NC_OUTPUT to hide details + of output-file pointer in ncurses library. + + uncomment CC_SHARED_OPTS (see 971115), since they are needed for SCO + OpenServer. + + correct CC_SHARED_OPTS for building shared libraries for SCO + OpenServer. + + remove usleep() from alternatives in napms(), since it may interact + with alarm(), causing a process to be interrupted by SIGALRM (with + advice from Bela Lubkin). + + modify terminal_interface-curses-forms.ads.m4 to build/work with + GNAT 3.10 (patch by Juergen Pfeifer). + + remove part of CF_GPP_LIBRARY configure-script macro, which did not + work with gcc 2.7.2.3 + + minor fix to test/tclock.c to avoid beeping more than once per second + + add 's' and ' ' decoding to test/rain.c + +991016 pre-release + + corrected BeOS code for lib_twait.c, making nodelay() function work. + +991009 pre-release + + correct ncurses' value for cursor-column in PutCharLR(), which was + off-by-one in one case (patch by Ilya Zakharevich). + + fix some minor errors in position_check() debugging code, found while + using this to validate the PutCharLR() patch. + + modify firework, lrtest, worm examples to be resizable, and to + recognize 'q' for quit, 's' for single-step and ' ' for resume. + + restore reverted change to terminal_interface-curses-forms.ads.m4, + add a note on building with gnat 3.10p to Ada95/TODO. + + add a copy of the standalone configure script for the test-directory + to simplify testing on SCO and Solaris. + +991002 pre-release + + minor fixes for _nc_msec_cost(), color_content(), pair_content(), + _nc_freewin(), ClrBottom() and onscreen_mvcur() (analysis by Philippe + Blain, comments by Alexander V Lukyanov). + + simplify definition of PANEL and eliminate internal functions + _nc_calculate_obscure(), _nc_free_obscure() and _nc_override(), + (patch by Juergen Pfeifer, analysis by Philippe Blain + )). + + change renaming of dft_fgbg.3x to use_default_colors.3ncurses in + man_db.renames, since Debian is not concerned with 14-character + filename limitation (Debian bug report by Josip Rodin + ). + + corrected scoansi terminfo entry by testing with scoterm and console. + + revert change from 990614 to terminal_interface-curses-forms.ads.m4, + since this does not work for gnat 3.10p + + modify tclock example to be resizable (if ncurses' sigwinch handler + is used), and in color. + + use $(CC) rather than 'gcc' in MK_SHARED_LIB symbols, used for Linux + shared library rules. + +990925 pre-release + + add newer NetBSD console terminfo entries + + add amiga-8bit terminfo entry (from Henning 'Faroul' Peters + ) + + remove -lcurses -ltermcap from configure script's check for the gpm + library, since they are not really necessary (a properly configured + gpm library has no dependency on any curses library), and if the + curses library is not installed, this would cause the test to fail. + + modify tic's -C option so that terminfo "use=" clauses are translated + to "tc=" clauses even when running it as captoinfo. + + modify CF_STDCPP_LIBRARY configure macro to perform its check only + for GNU C++, since that library conflicts with SGI's libC on IRIX-6.2 + + modify CF_SHARED_OPTS configure macro to support build on NetBSD with + ELF libraries (patch by Bernd Ernesti ). + + correct a problem in libpanel, where the _nc_top_panel variable was + not set properly when bottom_panel() is called to hide a panel which + is the only one on the stack (report/analysis by Michael Andres + , patch by Juergen Pfeifer). + +990918 pre-release + + add acsc string to HP 70092 terminfo entry (patch by Joerg Wunsch + ). + + add top-level uninstall.data and uninstall.man makefile rules. + + correct logic of CF_LINK_FUNCS configure script, from BeOS changes so + that hard-links work on Unix again. + + change default value of cf_cv_builtin_bool to 1 (suggested by + Jeremy Buhler), making it less likely that a conflicting declaration + of bool will be seen when compiling with C++. + +990911 pre-release + + improved configure checks for builtin.h + + minor changes to C++ binding (remove static initializations, and make + configure-test for parameter initializations) for features not + allowed by vendor's C++ compilers (reported by Martin Mokrejs, this + applies to SGI, though I found SCO has the same characteristics). + + corrected quoting of ETIP_xxx definitions which support old versions + of g++, e.g., those using -lg++ + + remove 'L' code from safe_sprintf.c, since 'long double' is not + widely portable. safe_sprintf.c is experimental, however, and + exists mainly as a fallback for systems without snprintf (reported + by Martin Mokrejs , for IRIX 6.2) + + modify definition of _nc_tinfo_fkeys in broken-linker configuration + so that it is not unnecessarily made extern (Jeffrey C Honig). + +990904 pre-release + + move definition for builtin.h in configure tests to specific check + for libg++, since qt uses the same filename incompatibly. + + correct logic of lib_termcap.c tgetstr function, which did not copy + the result to the buffer parameter. Testing shows Solaris does + update this, though of course tgetent's buffer is untouched (reported + in Peter Edwards in + mpc.lists.freebsd.current newsgroup. + + corrected beterm terminfo entry, which lists some capabilities which + are not actually provided by the BeOS Terminal. + + add special logic to replace select() calls on BeOS, whose select() + function works only for sockets. + + correct missing escape in mkterm.h.awk.in, which caused part + of the copyright noticed to be omitted (reported by Peter + Wemm ). + > several small changes to make the c++ binding and demo work on OS/2 + EMX (related to a clean reinstall of EMX): + + correct library-prefix for c++ binding; none is needed. + + add $x suffix to make_hash and make_keys so 'make distclean' works. + + correct missing $x suffix for tack, c++ demo executables. + + split CF_CXX_LIBRARY into CF_GPP_LIBRARY (for -lg++) and + CF_STDCPP_LIBRARY (for -lstdc++) + +990828 pre-release + + add cygwin terminfo entry -TD + + modify CF_PROG_EXT configure macro to set .exe extension for cygwin. + + add configure option --without-cxx-binding, modifying the existing + --without-cxx option to check only for the C++ compiler + characteristics. Whether or not the C++ binding is needed, the + configure script checks for the size/type of bool, to make ncurses + match. Otherwise C++ applications cannot use ncurses. + +990821 pre-release + + updated configure macros CF_MAKEFLAGS, CF_CHECK_ERRNO + + minor corrections to beterm terminfo entry. + + modify lib_setup.c to reject values of $TERM which have a '/' in + them. + + add ifdef's to guard against CS5, CS6, CS7, CS8 being zero, as more + than one is on BeOS. That would break a switch statement. + + add configure macro CF_LINK_FUNCS to detect and work around BeOS's + nonfunctional link(). + + improved configure macros CF_BOOL_DECL and CF_BOOL_SIZE to detect + BeOS's bool, which is declared as an unsigned char. + +990814 pre-release + + add ms-vt100 terminfo entry -TD + + minor fixes for misc/emx.src, based on testing with tack. + + minor fix for test/ncurses.c, test 'a', in case ncv is not set. + +990731 pre-release + + minor correction for 'screen' terminfo entry. + + clarify description of errret values for setupterm in manpage. + + modify tput to allow it to emit capabilities for hardcopy terminals + (patch by Goran Uddeborg ). + + modify the 'o' (panel) test in ncurses.c to show the panels in color + or at least in bold, to test Juergen's change to wrefresh(). + > patches by Juergen Pfeifer: + + Fixes a problem using wbkgdset() with panels. It has actually + nothing to with panels but is a problem in the implementation of + wrefresh(). Whenever a window changes its background attribute to + something different than newscr's background attribute, the whole + window is touched to force a copy to newscr. This is an unwanted + side-effect of wrefresh() and it is actually not necessary. A + changed background attribute affects only further outputs of + background it doesn't mean anything to the current content of the + window. So there is no need to force a copy. (reported by Frank + Heckenbach ). + + an upward compatible enhancement of the NCursesPad class in the C++ + binding. It allows one to add a "viewport" window to a pad and then + to use panning to view the pad through the viewport window. + +990724 pre-release + + suppress a call to def_prog_mode() in the SIGTSTP handler if the + signal was received while not in curses mode, e.g., endwin() was + called in preparation for spawning a shell command (reported by Frank + Heckenbach ) + + corrected/enhanced xterm-r5, xterm+sl, xterm+sl-twm terminfo entries. + + change test for xterm mouse capability: it now checks only if the + user's $DISPLAY variable is set in conjunction with the kmous + capability being present in the terminfo. Before, it checked if any + of "xterm", "rxvt" or "kterm" were substrings of the terminal name. + However, some emulators which are incompatible with xterm in other + ways do support the xterm mouse capability. + + reviewed and made minor changes in ncurses to quiet g++ warnings + about shadowed or uninitialized variables. g++ incorrectly warns + about uninitialized variables because it does not take into account + short-circuit expression evaluation. + + change ncurses 'b' test to start in color pair 0 and to show in the + right margin those attributes which are suppressed by no_color_video, + i.e., "(NCV)". + + modify ifdef's in curses.h so that __attribute__ is not redefined + when compiling with g++, but instead disabled the macros derived for + __attribute__ since g++ does not consistently recognize the same + keywords as gcc (reported by Stephan K Zitz ). + + update dependencies for term.h in ncurses/modules (reported by + Ilya Zakharevich). + +990710 pre-release + + modify the form demo in ncurses.c to illustrate how to manipulate the + field appearance, e.g, for highlighting or translating the field + contents. + + correct logic in write_entry from split-out of home_terminfo in + 980919, which prevented update of $HOME/.terminfo (reported by Philip + Spencer ). + +990703 pre-release + + modify linux terminfo description to make use of kernel 2.2.x mods + that support cursor style, e.g., to implement cvvis (patch by Frank + Heckenbach ) + + add special-case in setupterm to retain previously-saved terminal + settings in cur_term, which happens when curses and termcap calls are + mixed (from report by Bjorn Helgaas ). + + suppress initialization of key-tries in _nc_keypad() if we are only + disabling keypad mode, e.g., in endwin() called when keypad() was + not. + + modify the Ada95 makefile to ensure that always the Ada files from + the development tree are used for building and not the eventually + installed ones (patch by Juergen Pfeifer). + +990626 pre-release + + use TTY definition in tack/sysdep.c rather than struct termios + (reported by Philippe De Muyter). + + add a fallback for strstr, used in lib_mvcur.c and tack/edit.c, + not present on sysV68 (reported by Philippe De Muyter). + + correct definition in comp_hash.c to build with configure + --with-rcs-ids option. + +990619 pre-release + + modified ifdef's for sigaction and sigvec to ensure we do not try to + handle SIGTSTP if neither is available (from report by Philippe De + Muyter). + > patch by Philippe De Muyter: + + in tic.c, use `unlink' if `remove' is not available. + + use only `unsigned' as fallback value for `speed_t'. Some files used + `short' instead. + +990616 pre-release + + fix some compiler warnings in tack. + + add a check for predefined bool type in CC, based on report that + BeOS predefines a bool type. + + correct logic for infocmp -e option, i.e., the configure + --with-fallbacks option, which I'd not updated when implementing + extended names (cf: 990301). The new implementation adds a "-E" + option to infocmp -TD + > patch by Juergen Pfeifer: + + introduce the private type Curses_Bool in the Ada95 binding + implementation. This is to clearly represent the use of "bool" also + in the binding. It should have no effect on the generated code. + + improve the man page for field_buffer() to tell the people, that the + whole buffer including leading/trailing spaces is returned. This is + a common source of confusion, so it's better to document it clearly. + +990614 pre-release + > patch by Juergen Pfeifer: + + use pragma PreElaborate in several places. + + change a few System.Address uses to more specific types. + + change interface version-number to 1.0 + + regenerate Ada95 HTML files. + +990612 pre-release + + modify lib_endwin.c to avoid calling reset_shell_mode(), return ERR + if it appears that curses was never initialized, e.g., by initscr(). + For instance, this guards against setting the terminal modes to + strange values if endwin() is called after setupterm(). In the same + context, Solaris curses will dump core. + + modify logic that avoids a conflict in lib_vidattr.c between sgr0 and + equivalent values in rmso or rmul by ensuring we do not modify the + data which would be returned by the terminfo or termcap interfaces + (reported by Brad Pepers , cf: 960706). + + add a null-pointer check for SP in lib_vidattr.c to logic that checks + for magic cookies. + + improve fallback declaration of 'bool' when the --without-cxx option + is given, by using a 'char' on i386 and related hosts (prompted by + discussion with Alexander V Lukyanov). + +990605 pre-release + + include time.h in lib_napms.c if nanosleep is used (patch by + R Lindsay Todd ). + + add an "#undef bool" to curses.h, in case someone tries to define it, + e.g., perl. + + add check to tparm to guard against divide by zero (reported by Aaron + Campbell ). + +990516 pre-release + + minor fix to build tack on CLIX (mismatched const). + > patch by Juergen Pfeifer: + + change Juergen's old email address with new one in the files where it + is referenced. The Ada95 HTML pages are regenerated. + + update MANIFEST to list the tack files. + +990509 pre-release + + minor fixes to make 'tack' build/link on NeXT (reported by Francisco + A. Tomei Torres). + +990417 pre-release + + add 'tack' program (which is GPL'd), updating it to work with the + modified TERMTYPE struct and making a fix to support setaf/setab + capabilities. Note that the tack program is not part of the + ncurses libraries, but an application which can be distributed with + ncurses. The configure script will ignore the directory if it is + omitted, however. + + modify gpm mouse support so that buttons 2 and 3 are used for + select/paste only when shift key is pressed, making them available + for use by an application (patch by Klaus Weide). + + add complete list of function keys to scoansi terminfo entry - TD + +990410 pre-release + + add a simple test program cardfile.c to illustrate how to read form + fields, and showing forms within panels. + + change shared-library versioning for the Hurd to be like Linux rather + than *BSD (patch by Mark Kettenis ). + + add linux-lat terminfo entry. + + back-out _nc_access check in read_termcap.c (both incorrect and + unnecessary, except to guard against a small window where the file's + ownership may change). + +990403 pre-release + + remove conflicting _nc_free_termtype() function from test module + lib_freeall.c + + use _nc_access check in read_termcap.c for termpaths[] array (noted + by Jeremy Buhler, indicating that Alan Cox made a similar patch). + > patch by Juergen Pfeifer: + + modify menu creation to not inherit status flag from the default menu + which says that the associated marker string has been allocated and + should be freed (bug reported by Marek Paliwoda" + ) + +990327 pre-release (alpha.gnu.org:/gnu/ncurses-5.0-beta1.tar.gz) + + minor fixes to xterm-xfree86 terminfo entry - TD. + + split up an expression in configure script check for ldconfig to + workaround limitation of BSD/OS sh (reported by Jeff Haas + ). + + correct a typo in man/form_hook.3x (Todd C Miller). + +990318 pre-release + + parenthesize and undef 'index' symbol in c++ binding and demo, to + accommodate its definition on NeXT (reported by Francisco A. Tomei + Torres). + + add sigismember() to base/sigaction.c compatibility to link on NeXT + (reported by Francisco A. Tomei Torres). + + further refinements to inequality in hashmap.c to cover a case with + ^U in nvi (patch by Alexander V Lukyanov). + +990316 pre-release + + add fallback definition for getcwd, to link on NeXT. + + add a copy of cur_term to tic.c to make it link properly on NeXT + (reported by Francisco A. Tomei Torres). + + change inequality in hashmap.c which checks the distance traveled by + a chunk so that ^D command in nvi (scrolls 1/2 screen) will use + scrolling logic (patch by Alexander V Lukyanov, reported by Jeffrey + C Honig). + +990314 pre-release + + modify lib_color.c to handle a special case where the curscr + attributes have been made obsolete (patch by Alexander V Lukyanov). + + update BSD/OS console terminfo entries to use klone+sgr and + klone+color (patch by Jeffrey C Honig). + + update glibc addon configure script for extended capabilities. + + correct a couple of warnings in the --enable-const configuration. + + make comp_hash build properly with _nc_strdup(), on NeXT (reported by + Francisco A. Tomei Torres ). + +990313 pre-release + + correct typos in linux-c initc string - TD + + add 'crt' terminfo entry, update xterm-xfree86 entry - TD + + remove a spurious argument to tparm() in lib_sklrefr.c (patch by + Alexander V Lukyanov). + +990307 pre-release + + back-out change to wgetch because it causes a problem with ^Z + handling in lynx (reported by Kim DeVaughn). + +990306 pre-release + + add -G option to tic and infocmp, to reverse the "-g" option. + + recode functions in name_match.c to avoid use of strncpy, which + caused a 4-fold slowdown in tic (cf: 980530). + + correct a few warnings about sign-extension in recent changes. + > patch by Juergen Pfeifer: + + fixes suggested by Jeff Bradbury : + + improved parameter checking in new_fieldtype(). + + fixed a typo in wgetch() timeout handling. + + allow slk_init() to be called per newterm call. The internal SLK + state is stored in the SCREEN struct after every newterm() and then + reset for the next newterm. + + fix the problem that a slk_refresh() refreshes stdscr if the + terminal has true SLKs. + + update HTML documentation for Ada binding. + +990301 pre-release + + remove 'bool' casts from definitions of TRUE/FALSE so that statements + such as "#if TRUE" work. This was originally done to allow for a C++ + compiler which would warn of implicit conversions between enum and + int, but is not needed for g++ (reported by Kim DeVaughn). + + add use_extended_names() function to allow applications to suppress + read of the extended capabilities. + + add configure option --enable-tcap-names to support logic which + allows ncurses' tic to define new (i.e., extended) terminal + capabilities. This is activated by the tic -x switch. The infocmp + program automatically shows or compares extended capabilities. + Note: This changes the Strings and similar arrays in the TERMTYPE + struct so that applications which manipulate it must be recompiled. + + use macros typeMalloc, typeCalloc and typeRealloc consistently + throughout ncurses library. + + add _nc_strdup() to doalloc.c. + + modify define_key() to allow multiple strings to be bound to the + same keycode. + + correct logic error in _nc_remove_string, from 990220. + > patch for Ada95 binding (Juergen Pfeifer): + + regenerate some of the html documentation + + minor cleanup in terminal_interface-curses.adb + +990220 pre-release + + resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in + xterm and ncsa terminfo entries by removing the unneeded ones. Note + that some entries will return kend & khome versus kslt and kfnd, for + PC-style keyboards versus strict vt220 compatibility - TD + + add function keybound(), which returns the definition associated with + a given keycode. + + modify define_key() to undefine the given string when no keycode is + given. + + modify keyok() so it works properly if there is more than one string + defined for a keycode. + + add check to tic to warn about terminfo descriptions that contain + more than one key assigned to the same string. This is shown only if + the verbose (-v) option is given. Moved related logic (tic -v) from + comp_parse.c into the tic program. + + add/use _nc_trace_tries() to show the function keys that will be + recognized. + + rename init_acs to _nc_init_acs (request by Alexander V Lukyanov). + > patch for Ada95 binding (Juergen Pfeifer): + + remove all the *_adabind.c from ncurses, menu and form projects. + Those little helper routines have all been implemented in Ada and are + no longer required. + + The option handling routines in menu and form have been made more + save. They now make sure that the unused bits in options are always + zero. + + modify configuration scripts to + + use gnatmake as default compiler name. This is a safer choice than + gcc, because some GNAT implementations use other names for the + compilerdriver to avoid conflicts. + + use new default installation locations for the Ada files according + to the proposed GNU Ada filesystem standard (for Linux). + + simplify the Makefiles for the Ada binding + + rename ada_include directory to src. + +990213 + + enable sigwinch handler by default. + + disable logic that allows setbuf to be turned off/on, because some + implementations will overrun the buffer after it has been disabled + once. + +990206 + + suppress sc/rc capabilities from terminal description if they appear + in smcup/rmcup. This affects only scrolling optimization, to fix a + problem reported by several people with xterm's alternate screen, + though the problem is more general. + > patch for Ada95 binding (Juergen Pfeifer): + + removed all pragma Preelaborate() stuff, because the just released + gnat-3.11p complains on some constructs. + + fixed some upper/lower case notations because gnat-3.11p found + inconsistent use. + + used a new method to generate the HTML documentation of the Ada95 + binding. This invalidates nearly the whole ./Ada95/html subtree. + Nearly all current files in this subtree are removed + +990130 + + cache last result from _nc_baudrate, for performance (suggested by + Alexander V Lukyanov). + + modify ClrUpdate() function to workaround a problem in nvi, which + uses redrawwin in SIGTSTP handling. Jeffrey C Honig reported that + ncurses repainted the screen with nulls before resuming normal + operation (patch by Alexander V Lukyanov). + + generalize is_xterm() function a little by letting xterm/rxvt/kterm + be any substring rather than the prefix. + + modify lib_data.c to initialize SP. Some linkers, e.g., IBM's, will + not link a module if the only symbols exported from the module are + uninitialized ones (patch by Ilya Zakharevich). Ilya says that he + has seen messages claiming this behavior conforms to the standard.) + + move call on _nc_signal_handler past _nc_initscr, to avoid a small + window where Nttyb hasn't yet been filled (reported by Klaus Weide). + + modify lib_tstp.c to block SIGTTOU when handling SIGTSTP, fixes a + problem where ncurses applications which were run via a shell script + would hang when given a ^Z. Also, check if the terminal's process + group is consistent, i.e., a shell has not taken ownership of it, + before deciding to save the current terminal settings in the SIGTSTP + handler (patch by Klaus Weide). + + correct spelling of ACS_ names in curs_border.3x (reported by Bob van + der Poel ). + + correct a couple of typos in the macros supporting the configure + --with-shlib-version option. + +990123 + + modify fty_regex.c to compile on HAVE_REGEXPR_H_FUNCS machine (patch + by Kimio Ishii ). + + rename BSDI console terminfo entries: bsdos to bsdos-pc-nobold, and + bsdos-bold to bsdos-pc (patch by Jeffrey C Honig). + + modify tput to accept termcap names as an alternative to terminfo + names (patch by Jeffrey C Honig). + + correct a typo in term.7 (Todd C Miller). + + add configure --with-shlib-version option to allow installing shared + libraries named according to release or ABI versions. This + parameterizes some existing logic in the configure script, and is + intended for compatibility upgrades on Digital Unix, which used + versioned libraries in ncurses 4.2, but no longer does (cf: 980425). + + resync configure script against autoconf 2.13 + patches + + minor improvements for teraterm terminfo entry based on the program's + source distribution. + +990116 + + change default for configure --enable-big-core to assume machines do + have enough memory to resolve terminfo.src in-memory. + + correct name of ncurses library in TEST_ARGS when configuring with + debug library. + + minor fixes to compile ncurses library with broken-linker with g++. + + add --enable-broken-linker configure option, default to environment + variable $BROKEN_LINKER (request by Jeffrey C Honig). + + change key_names[] array to static since it is not part of the curses + interface (reported by Jeffrey C Honig ). + +990110 + + add Tera Term terminfo entry - TD + +990109 + + reviewed/corrected macros in curses.h as per XSI document. + + provide support for termcap PC variable by copying it from terminfo + data and using it as the padding character in tputs (reported by + Alexander V Lukyanov). + + corrected iris-ansi and iris-ansi-ap terminfo entries for kent and + kf9-kf12 capabilities, as well as adding kcbt. + + document the mouse handling mechanism in menu_driver and make a small + change in menu_driver's return codes to provide more consistency + (patch by Juergen Pfeifer). + + add fallback definition for NCURSES_CONST to termcap.h.in (reported + by Uchiyama Yasushi ). + + move lib_restart.c to ncurses/base, since it uses curses functions + directly, and therefore cannot be used in libtinfo.so + + rename micro_char_size to micro_col_size, adding #define to retain + old name. + + add set_a_attributes and set_pglen_inch to terminfo structure, as per + XSI and Solaris 2.5. + + minor makefile files to build ncurses test_progs + + update html files in misc directory to reflect changes since 4.2 + +990102 + + disable scroll hints when hashmap is enabled (patch by Alexander + V Lukyanov). + + move logic for tic's verify of -e option versus -I and -C so that the + terminfo data is not processed if we cannot handle -e (reported by + Steven Schwartz . + + add test-driver traces to terminfo and termcap functions. + + provide support for termcap ospeed variable by copying it from the + internal cur_term member, and using ospeed as the baudrate reference + for the delay_output and tputs functions. If an application does not + set ospeed, the library behaves as before, except that _nc_timed_wait + is no longer used, or needed, since ospeed always has a value. But + the application can modify ospeed to adjust the output of padding + characters (prompted by a bug report for screen 3.7.6 and email from + Michael Schroeder ). + + removed some unused ifdef's as part of Alexander's restructuring. + + reviewed/updated curses.h, term.h against X/Open Curses Issue 4 + Version 2. This includes making some parameters NCURSES_CONST + rather than const, e.g., in termcap.h. + + change linux terminfo entry to use ncv#2, since underline does not + work with color + +981226 + + miscellaneous corrections for curses.h to match XSI. + + change --enable-no-padding configure option to be normally enabled. + + add section to ncurses manpage for environment variables. + + investigated Debian bug report that pertains to screen 3.7.4/3.7.6 + changes, found no sign of problems on Linux (or on SunOS, Solaris) + running screen built with ncurses. + + check if tmp_fp is opened in tic.c before closing it (patch by Pavel + Roskin ). + + correct several font specification typos in man-pages. + +981220 + + correct default value for BUILD_CC (reported by Larry Virden). + +981219 + + modify _nc_set_writedir() to set a flag in _nc_tic_dir() to prevent + it from changing the terminfo directory after chdir'ing to it. + Otherwise, a relative path in $TERMINFO would confuse tic (prompted + by a Debian bug report). + + correct/update ncsa terminfo entry (report by Larry Virden). + + update xterm-xfree86 terminfo to current (patch 90), smcur/rmcur + changes + + add Mathew Vernon's mach console entries to terminfo.src + + more changes, moving functions, as part of Alexander's restructuring. + + modify configure script for GNU/Hurd share-library support, introduce + BUILD_CC variable for cross compiling (patch by Uchiyama Yasushi + ) + +981212 + + add environment variable NCURSES_NO_SETBUF to allow disabling the + setbuf feature, for testing purposes. + + correct ifdef's for termcap.h versus term.h that suppress redundant + declarations of prototypes (reported by H.J.Lu). + + modify Makefile.os2 to add linker flags which allow multiple copies + of an application to coexist (reported by Ilya Zakharevich). + + update Makefile.glibc and associated configure script so that ncurses + builds as a glibc add-on with the new directory configuration + (reported by H.J.Lu). + +981205 + + modify gen_reps() function in gen.c to work properly on SunOS + (sparc), which is a left-to-right architecture. + + modify relative_move and tputs to avoid an interaction with the + BSD-style padding. The relative_move function could produce a string + to replace on the screen which began with a numeric character, which + was then interpreted by tputs as padding. Now relative_move will not + generate a string with a leading digit in that case (overwrite). + Also, tputs will only interpret padding if the string begins with a + digit; as coded it permitted a string to begin with a decimal point + or asterisk (reported by Larry Virden). + > patches by Juergen Pfeifer: + + fix a typo in m_driver.c mouse handling and improves the error + handling. + + fix broken mouse handling in the Ada95 binding + + make the Ada95 sample application menus work with the new menu mouse + support + + improve the mouse handling introduced by Ilya; it now handles menus + with spacing. + + repair a minor bug in the menu_driver code discovered during this + rework. + + add new function wmouse_trafo() to hide implementation details of + _yoffset member of WINDOW struct needed for mouse coordinate + transformation. + +981128 + + modify Ada95/gen/gen.c to avoid using return-value of sprintf, since + some older implementations (e.g., SunOS 4.x) return the buffer + address rather than its length. + > patch by Rick Ohnemus: + + modify demo.cc to get it to compile with newer versions of egcs. + + trim a space that appears at the end of the table preprocessor lines + ('\" t). This space prevents some versions of man from displaying + the pages - changed to remove all trailing whitespace (TD) + + finally, 'make clean' does not remove panel objects. + > patches by Ilya Zakharevich: + + allow remapping of OS/2 mouse buttons using environment variable + MOUSE_BUTTONS_123 with the default value 132. + + add mouse support to ncurses menus. + +981121 + + modify misc/makedef.cmd to report old-style .def file symbols, and to + generate the .def files sorted by increasing names rather than the + reverse. + + add misc/*.ref which are J.J.G.Ripoll's dll definition files (renamed + from misc/*.old), and updated based on the entrypoint coding he used + for an older version of ncurses. + + add README.emx, to document how to build on OS/2 EMX. + + updates for config.guess, config.sub from Lynx + > patches by Ilya Zakharevich: + + minor fixes for mouse handling mode: + a) Do not initialize mouse if the request is to have no mouse; + b) Allow switching of OS/2 VIO mouse on and off. + + modify Makefile.os2 to support alternative means of generating + configure script, by translating Unix script with Perl. + > patches by Juergen Pfeifer: + + Updates MANIFEST to reflect changes in source structure + + Eliminates a problem introduced with my last patch for the C++ + binding in the panels code. It removes the update() call done in the + panel destructor. + + Changes in the Ada95 binding to better support systems where + sizeof(chtype)!=sizeof(int) (e.g. DEC Alpha). + +981114 + + modify install-script for manpages to skip over .orig and .rej files + (request by Larry Virden). + > patches/discussion by Alexander V Lukyanov: + + move base-library sources into ncurses/base and tty (serial terminal) + sources into ncurses/tty, as part of Alexander V Lukyanov's proposed + changes to ncurses library. + + copy _tracemouse() into ncurses.c so that lib_tracemse.c need not + be linked into the normal ncurses library. + + move macro winch to a function, to hide details of struct ldat + > patches by Juergen Pfeifer: + + fix a potential compile problem in cursesw.cc + + some Ada95 cosmetics + + fix a gen.c problem when compiling on 64-Bit machines + + fix Ada95/gen/Makefile.in "-L" linker switch + + modify Ada95 makefiles to use the INSTALL_PREFIX setting. + +981107 + + ifdef'd out lib_freeall.c when not configured. + + rename _tracebits() to _nc_tracebits(). + + move terminfo-library sources into ncurses/tinfo, and trace-support + functions into ncurses/trace as part of Alexander V Lukyanov's + proposed changes to ncurses library. + + modify generated term.h to always specify its own definitions for + HAVE_TERMIOS_H, etc., to guard against inclusion by programs with + broken configure scripts. + +981031 + + modify terminfo parsing to accept octal and hexadecimal constants, + like Solaris. + + remove an autoconf 2.10 artifact from the configure script's check + for "-g" compiler options. (Though harmless, this confused someone + at Debian, who recently issued a patch that results in the opposite + effect). + + add configure option --with-ada-compiler to accommodate installations + that do not use gcc as the driver for GNAT (patch by Juergen + Pfeifer). + +981017 + + ensure ./man exists in configure script, needed when configuring + with --srcdir option. + + modify infocmp "-r" option to remove limit on formatted termcap + output, which makes it more like Solaris' version. + + modify captoinfo to treat no-argument case more like Solaris' + version, which uses the contents of $TERMCAP as the entry to format. + + modify mk-2nd.awk to handle subdirectories, e.g., ncurses/tty + (patch by Alexander V Lukyanov). + +981010 + + modify --with-terminfo-dirs option so that the default value is the + ${datadir} value, unless $TERMINFO_DIRS is already set. This gets + rid of a hardcoded list of candidate directories in the configure + script. + + add some error-checking to _nc_read_file_entry() to ensure that + strings are properly terminated (Todd C Miller). + + rename manpage file curs_scr_dmp.3x to curs_scr_dump.3x, to + correspond with contents (reported by Neil Zanella + ). + + remove redundant configure check for C++ which did not work when $CXX + was specified with a full pathname (reported by Andreas Jaeger). + + corrected bcopy/memmove check; the macro was not standalone. + +981003 + + remove unnecessary portion of OS/2 EMX mouse change from + check_pending() (reported by Alexander V Lukyanov). + +980926 + + implement mouse support for OS/2 EMX (adapted from patch against + 4.2(?) by Ilya Zakharevich). + + add configure-check for bcopy/memmove, for 980919 changes to hashmap. + + merge Data General terminfo from Hasufin - TD + + merge AIX 3.2.5 terminfo descriptions for IBM terminals, replaces + some older entries - TD + + modify tic to compile into %'char' form in preference to %{number}, + since that is a little more efficient. + + minor correction to infocmp to avoid displaying "difference" between + two capabilities that are rendered in equivalent forms. + + add "-g" option to tic/infocmp to force character constants to be + displayed in quoted form. Otherwise their decimal values are shown. + + modify setupterm so that cancelled strings are treated the same as + absent strings, cancelled and absent booleans false (does not affect + tic, infocmp). + + modify tic, infocmp to discard redundant i3, r3 strings when output + to termcap format. + > patch by Alexander V Lukyanov: + + improve performance of tparm, now it takes 19% instead of 25% when + profiling worm. + + rename maxlen/minlen to prec/width for better readability. + + use format string for printing strings. + + use len argument correctly in save_text, and pass it to save_number. + +980919 + + make test_progs compile (but hashmap does not function). + + correct NC_BUFFERED macro, used in lib_mvcur test-driver, modify + associated logic to avoid freeing the SP->_setbuf data. + + add modules home_terminfo and getenv_num to libtinfo. + + move write_entry to libtinfo, to work with termcap caching. + + minor fixes to blue.c to build with atac. + + remove softscroll.c module; no longer needed for testing. + > patches by Todd C Miller: + + use strtol(3) instead of atoi(3) when parsing env variables so we can + detect a bogus (non-numeric) value. + + check for terminal names > MAX_NAME_SIZE in a few more places when + dealing with env variables again. + + fix a MAX_NAME_SIZE that should be MAX_NAME_SIZE+1 + + use sizeof instead of strlen(3) on PRIVATE_INFO since it is a fixed + string #define (compile time vs runtime). + + when setting errno to ENOMEM, set it right before the return, not + before code that could, possibly, set errno to a different value. + > patches by Alexander V Lukyanov: + + use default background in update_cost_from_blank() + + disable scroll-hints when hashmap is configured. + + improve integration of hashmap scrolling code, by adding oldhash and + newhash data to SP struct. + + invoke del_curterm from delscreen. + + modify del_curterm to set cur_term to null if it matches the + function's parameter which is deleted. + + modify lib_doupdate to prefer parm_ich to the enter_insert_mode and + exit_insert_mode combination, adjusting InsCharCost to check + enter_insert_mode, exit_insert_mode and insert_padding. Add + insert_padding in insert mode after each char. This adds new costs + to the SP struct. + +980912 + + modify test-driver in lib_mvcur.s to use _nc_setbuffer, for + consistent treatment. + + modify ncurses to restore output to unbuffered on endwin, and resume + buffering in refresh (see lib_set_term.c and NC_BUFFERED macro). + + corrected HTML version numbers (according to the W3C validator, they + never were HTML 2.0-compliant, but are acceptable 3.0). + +980905 + + modify MKterminfo.sh to generate terminfo.5 with tables sorted by + capability name, as in SVr4. + + modified term.h, termcap.h headers to avoid redundant declarations. + + change 'u_int' type in tset.c to unsigned, making this compile on + Sequent PRX 4.1 (reported by Michael Sterrett ). + +980829 + + corrections to mailing addresses, and moving the magic line that + causes the man program to invoke tbl to the first line of each + manpage (patch by Rick Ohnemus ). + + add Makefile.os2 and supporting scripts to generate dll's on OS/2 EMX + (from J.J.G.Ripoll, with further integration by TD). + + correct a typo in icl6404 terminfo entry. + + add xtermm and xtermc terminfo entries. + > from esr's terminfo version: + + Added Francesco Potorti's tuned Wyse 99 entries. + + dtterm enacs (from Alexander V Lukyanov). + + Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version. + +980822 + + document AT&T acs characters in terminfo.5 manpage. + + use EMX _scrsize() function if terminfo and environment do not + declare the screen size (reported by Ilya Zakharevich + ). + + remove spurious '\' characters from eterm and osborne terminfo + entries (prompted by an old Debian bug report). + + correct reversed malloc/realloc calls in _nc_doalloc (reported by + Hans-Joachim Widmaier ). + + correct misplaced parenthesis which caused file-descriptor from + opening termcap to be lost, from 980725 changes (reported by Andreas + Jaeger). + +980815 + + modify lib_setup.c to eliminate unneeded include of + when termios is not used (patch by Todd C Miller). + + add function _nc_doalloc, to ensure that failed realloc calls do not + leak memory (reported by Todd C Miller). + + improved ncsa-telnet terminfo entry. + +980809 + + correct missing braces around a trace statement in read_entry.c, + from 980808 (reported by Kim DeVaughn and Liviu + Daia). + +980808 + + fix missing include in ditto.c (reported by Bernhard + Rosenkraenzer ) + + add NCSA telnet terminfo entries from Francesco Potorti + , from Debian bug reports. + + make handling of $LINES and $COLUMNS variables more compatible with + Solaris by allowing them to individually override the window size + as obtained via ioctl. + +980801 + + modify lib_vidattr.c to allow for terminal types (e.g., xterm-color) + which may reset all attributes in the 'op' capability, so that colors + are set before turning on bold and other attributes, but still after + turning attributes off. + + add 'ditto.c' to test directory to illustrate use of newterm for + initializing multiple screens. + + modify _nc_write_entry() to recover from failed attempt to link alias + for a terminfo on a filesystem which does not preserve character case + (reported by Peter L Jordan ). + +980725 + + updated versions of config.guess and config.sub based on automake 1.3 + + change name-comparisons in lib_termcap to compare no more than 2 + characters (gleaned from Debian distribution of 1.9.9g-8.8, verified + with Solaris curses). + + fix typo in curs_insstr.3x (patch by Todd C Miller) + + use 'access()' to check if ncurses library should be permitted to + open or modify files with fopen/open/link/unlink/remove calls, in + case the calling application is running in setuid mode (request by + Cristian Gafton , responding to Duncan Simpson + ). + + arm100 terminfo entries from Dave Millen ). + + qnxt2 and minitel terminfo entries from esr's version. + +980718 + + use -R option with ldconfig on FreeBSD because otherwise it resets + the search path to /usr/lib (reported by Dan Nelson). + + add -soname option when building shared libraries on OpenBSD 2.x + (request by QingLong). + + add configure options --with-manpage-format and + --with-manpage-renames (request by QingLong). + + correct conversion of CANCELLED_NUMERIC in write_object(), which was + omitting the high-order byte, producing a 254 in the compiled + terminfo. + + modify return-values of tgetflag, tgetnum, tgetstr, tigetflag, + tigetnum and tigetstr to be compatible with Solaris (gleaned from + Debian distribution of 1.9.9g-8.8). + + modify _nc_syserr_abort to abort only when compiled for debugging, + otherwise simply exit with an error. + +980711 + + modify Ada95 'gen' program to use appropriate library suffix (e.g., + "_g" for a debug build). + + update Ada95 'make clean' rule to include generics .ali files + + add a configure test to ensure that if GNAT is found, that it can + compile/link working Ada95 program. + + flush output in beep and flash functions, fixing a problem with + getstr (patch by Alexander V Lukyanov) + + fix egcs 1.0.2 warning for etip.h (patch by Chris Johns). + + correct ifdef/brace nesting in lib_sprintf.c (patch by Bernhard + Rosenkraenzer ). + + correct typo in wattr_get macro from 980509 fixes (patch by Dan + Nelson). + +980704 + + merge changes from current XFree86 xterm terminfo descriptions. + + add configure option '--without-ada'. + + add a smart-default for termcap 'ac' to terminfo 'acs_chars' which + corresponds to vt100. + + change translation for termcap 'rs' to terminfo 'rs2', which is + the documented equivalent, rather than 'rs1'. + +980627 + + slow 'worm' down a little, for very fast machines. + + corrected firstchar/lastchar computation in lib_hline.c + + simplify some expressions with CHANGED_CELL, CHANGED_RANGE and + CHANGED_TO_EOL macros. + + 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 ). + + 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). + +980620 + + review terminfo.5 against Solaris 2.6 curses version, corrected + several minor errors/omissions. + + implement tparm %l format. + + implement tparm printf-style width and precision for %s, %d, %x, %o + as per XSI. + + implement tparm dynamic variables (reported by Xiaodan Tang). + +980613 + + update man-page for 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 + wrong variable was used for cf_cv_type_of_bool. Compilers up to gcc + 2.8 tolerated the missing 'int'. + + remove the hardcoded name "gcc" for the GNU Ada compiler. The + compiler's name might be something like "egcs" (patch by Juergen + Pfeifer). + + correct curs_addch.3x, which implied that echochar could directly + display control characters (patch by Alexander V Lukyanov). + + fix typos in ncurses-intro.html (patch by Sidik Isani + ) + +980606 + + add configure test for conflicting use of exception in math.h and + other headers. + + minor optimization to 'hash()' function in hashmap.c, reduces its + time by 10%. + + correct form of LD_SHARED_OPTS for HP-UX 10.x (patch by Tim Mooney). + + fix missing quotes for 'print' in MKunctrl.awk script (reported by + Mihai Budiu ). + > patch by Alexander V Lukyanov: + + correct problem on Solaris (with poll() function) where getch could + hang indefinitely even if timeout(x) was called. This turned out to + be because milliseconds was not updated before 'goto retry' in + _nc_timed_wait. + + simplified the function _nc_timed_wait and fixed another bug, which + was the assumption of !GOOD_SELECT && HAVE_GETTIMEOFDAY in *timeleft + assignment. + + removed the cycle on EINTR, as it seems to be useless. + +980530 + + add makefile-rule for test/keynames + + modify run_tic.sh and shlib to ensure that user's .profile does not + override the $PATH used to run tic (patch by Tim Mooney). + + restore LD_SHARED_OPTS to $(LD_SHARED_FLAGS) when linking programs, + needed for HP-UX shared-library path (recommended by Tim Mooney). + + remove special case of HP-UX -L options, use +b options to embed + $(libdir) in the shared libraries (recommended by Tim Mooney). + + add checks for some possible buffer overflows and unchecked + malloc/realloc/calloc/strdup return values (patch by Todd C Miller + ) + +980523 + + correct maxx/maxy expression for num_columns/num_lines in derwin + (patch by Alexander V Lukyanov). + + add /usr/share/lib/terminfo and /usr/lib/terminfo as compatibility + fallbacks to _nc_read_entry(), along with --with-terminfo-dirs + configure option (suggested by Mike Hopkirk). + + modify config.guess to recognize Unixware 2.1 and 7 (patch by Mike + Hopkirk ). + + suppress definition of CC_SHARED_OPTS in LDFLAGS_SHARED in c++ + Makefile.in, since this conflicts when g++ is used with HP-UX + compiler (reported by Tim Mooney). + + parenthesize 'strcpy' calls in c++ binding to workaround redefinition + in some C++ implementations (reported by several people running + egcs with glibc 2.0.93, analysis by Andreas Jaeger. + +980516 + + modify write_entry.c so that it will not attempt to link aliases + with embedded '/', but give only a warning. + + put -L$(libdir) first when linking programs, except for HP-UX. + + modify comp_scan.c to handle SVr4 terminfo description for att477, + which contains a colon in the description field. + + modify configure script to support SCO osr5.0.5 shared libraries, + from comp.unix.sco.programmer newsgroup item (Mike Hopkirk). + + eliminate extra GoTo call in lib_doupdate.c (patch by Alexander V. + Lukyanov). + + minor adjustments of const/NCURSES_CONST from IRIX compile. + + add updates based on esr's 980509 version of terminfo.src. + +980509 + + correct macros for wattr_set, wattr_get, separate wattrset macro from + these to preserve behavior that allows attributes to be combined with + color pair numbers. + + add configure option --enable-no-padding, to allow environment + variable $NCURSES_NO_PADDING to eliminate non-mandatory padding, + thereby making terminal emulators (e.g., for vt100) a little more + efficient (request by Daniel Eisenbud ). + + modify configure script to embed ABI in shared libraries for HP-UX + 10.x (detailed request by Tim Mooney). + + add test/example of the 'filter()' function. + + add nxterm and xterm-color terminfo description (request by Cristian + Gafton ). + + modify rxvt terminfo description to clear alternate screen before + switching back to normal screen, for compatibility with applications + which use xterm (reported by Manoj Kasichainula ). + + modify linux terminfo description to reset color palette (reported + by Telford Tendys ). + + correction to doupdate, for case where terminal does not support + insert/delete character. The logic did not check that there was a + difference in alignment of changes to old/new screens before + repainting the whole non-blank portion of the line. Modified to fall + through into logic that reduces by the portion which does not differ + (reported by Daniel Eisenbud ). + + minor performance improvement to wnoutrefresh by moving some + comparisons out of inner loop. + +980425 + + modify configure script to substitute NCURSES_CONST in curses.h + + updated terminfo entries for xterm-xf86-v40, xterm-16color, + xterm-8bit to correspond to XFree86 3.9Ag. + + remove restriction that forces ncurses to use setaf/setab if the + number of colors is greater than 8. (see 970524 for xterm-16color). + + change order of -L options (so that $(libdir) is searched first) when + linking tic and other programs, to workaround HP's linker. + Otherwise, the -L../lib is embedded when linking against shared + libraries and the installed program does not run (reported by Ralf + Hildebrandt). + + modify configuration of shared libraries on Digital Unix so that + versioning is embedded in the library, rather than implied by + links (patch by Tim Mooney). + +980418 + + modify etip.h to avoid conflict with math.h on HP-UX 9.03 with gcc + 2.8.1 which redefines 'exception' (reported by Ralf Hildebrandt + ). + + correct configure tests in CF_SHARED_OPTS which used $CC value to + check for gcc, rather than autoconf's $GCC value. This did not + work properly if the full pathname of the compiler were given + (reported by Michael Yount ). + + revise check for compiler options to force ANSI mode since repeating + an option such as -Aa causes HP's compiler to fail on its own headers + (reported by Clint Olsen ). + +980411 + + ifdef'd has_key() and mcprint() as extended functions. + + modified several prototypes to correspond with 1997 version of + X/Open Curses (affects ABI since developers have used attr_get). + + remove spurious trailing blanks in glibc addon-scripts (patch by + H.J.Lu). + + insert a few braces at locations where gcc-2.8.x asks to use them to + avoid ambiguous else's, use -fpic rather than -fPIC for Linux (patch + by Juergen Pfeifer). + +980404 + + split SHLIB_LIST into SHLIB_DIRS/SHLIB_LIST to keep -L options + before -l to accommodate Solaris' linker (reported by Larry Virden). + +980328 + + modify lib_color.c to eliminate dependency on orig_colors and + orig_pair, since SVr4 curses does not require these either, but + uses them when they are available. + + add detailed usage-message to infocmp. + + correct a typo in att6386 entry (a "%?" which was "?"). + + add -f option to infocmp and tic, which formats the terminfo + if/then/else/endif so that they are readable (with newlines and + tabs). + + fixes for glibc addon scripts (patch by H.J.Lu). + +980321 + + revise configure macro CF_SPEED_TYPE so that termcap.h has speed_t + declared (from Adam J Richter ) + + remove spurious curs_set() call from leaveok() (J T Conklin). + + corrected handling leaveok() in doupdate() (patch by Alexander V. + Lukyanov). + + improved version of wredrawln (patch by Alexander V. Lukyanov). + + correct c++/Makefile.in so install target do not have embedded ../lib + to confuse it (patch by Thomas Graf ). + + add warning to preinstall rule which checks if the installer would + overwrite a curses.h or termcap.h that is not derived from ncurses. + (The recommended configuration for developers who need both is to + use --disable-overwrite). + + modify preinstall rule in top-level Makefile to avoid implicit + use of 'sh', to accommodate Ultrix 4.4 (reported by Joao Palhoto + Matos , patch by Thomas Esser + ) + + refine ifdef's for TRACE so that libncurses has fewer dependencies + on libtinfo when TRACE is disabled. + + modify configure script so that if the --with-termlib option is used + to generate a separate terminfo library, we chain it to the ncurses + library with a "-l" option (reported by Darryl Miles and Ian T. + Zimmerman). + +980314 + + correct limits and window in wredrawln function (reported/analysis by + Alexander V. Lukyanov). + + correct sed expression in configure script for --with-fallback + option (patch by Jesse Thilo). + + correct some places in configure script where $enableval was used + rather than $withval (patch by Darryl Miles ). + + modify some man-pages so no '.' or '..' falls between TH and SH + macros, to accommodate man_db program (reported by Ian T. Zimmerman + ). + + 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. + + corrected prototypes for slk_* functions, using chtype rather than + attr_t. + + implemented the wcolor_set() and slk_color() functions + + the slk_attr_{set,off,on} functions need an additional void* + parameter according to XSI. + + fix the C++ and Ada95 binding as well as the man pages to + reflect above enhancements. + +980307 + + use 'stat()' rather than 'access()' in toe.c to check for the + existence of $HOME/.terminfo, since it may be a file. + + suppress configure CF_CXX_LIBRARY check if we are not using g++ + 2.7.x, since this is not needed with g++ 2.8 or egcs (patch by + Juergen Pfeifer). + + turn on hashmap scrolling code by default, intend to remedy defects + by 4.3 release. + + minor corrections to terminfo.src changelog. + +980302 4.2 release for upload to prep.ai.mit.edu + + correct Florian's email address in ncurses-intro.html + + terminfo.src 10.2.0 (ESR). + +980228 pre-release + + add linux-koi8r replace linux-koi8, which is not KOI8 (patch by + QingLong ). + + minor documentation fixes (patch by Juergen Pfeifer). + + add setlocale() call to ncurses.c (reported by Claes G. Lindblad + ). + + correct sign-extension in lib_insstr.c (reported by Sotiris + Vassilopoulos ) + +980221 pre-release + + regenerated some documentation overlooked in 980214 patch + (ncurses-intro.doc, curs_outopts.3x.html) + + minor ifdef change to C++ binding to work with gcc 2.8.0 (patch by + Juergen Pfeifer). + + change maintainer's mailing address to florian@gnu.org, change + tentative mailing list address to bug-ncurses-request@gnu.org (patch + by Florian La Roche). + + add definition of $(REL_VERSION) to c++/Makefile.in (reported by Gran + Hasse ). + + restore version numbers to Ada95 binding, accidentally deleted by + copyright patch (patch by Juergen Pfeifer). + +980214 pre-release + + remove ncurses.lsm from MANIFEST so that it won't be used in FSF + distributions, though it is retained in development. + + correct scaling of milliseconds to nanoseconds in lib_napms.c (patch + by Jeremy Buhler). + + update mailing-list information (bug-ncurses@gnu.org). + + update announcement for upcoming 4.2 release. + + modify -lm test to check for 'sin()' rather than 'floor()' + + remove spurious commas from terminfo.src descriptions. + + change copyright notices to Free Software Foundation + +980207 + + minor fixes for autoconf macros CF_ERRNO, CF_HELP_MESSAGE and + CF_SIZECHANGE + + modify Makefile.glibc so that $(objpfx) is defined (H.J.Lu). + + ifdef-out true-return from _nc_mouse_inline() which depends on + merge of QNX patch (pending 4.2 release). + > patch to split off seldom-used modules in ncurses (J T Conklin): + This reduces size by up to 2.6kb. + + move functionality of _nc_usleep into napms, add configuration case + for nanosleep(). + + moved wchgat() from lib_addch.c to lib_chgat.c + + moved clearok(), immedok(), leaveok(), and scrollok() from + lib_options.c to lib_clearok.c, lib_immedok.c, lib_leaveok.c and + lib_scrollok.c. + + moved napms() from lib_kernel.c to lib_napms.c + + moved echo() and noecho() from lib_raw.c to lib_echo.c + + moved nl() and nonl() from lib_raw.c to lib_nl.c + +980131 + + corrected conversion in tclock.c (cf: 971018). + + updates to Makefile.glibc and associated Linux configure script + (patch by H.J.Lu). + + workaround a quoting problem on SunOS with tar-copy.sh + + correct init_pair() calls in worm.c to work when use_default_colors() + is not available. + + include in CF_SYS_TIME_SELECT to work with FreeBSD + 2.1.5 + + add ncv capability to FreeBSD console (cons25w), making reverse + work with color. + + correct sense of configure-test for sys/time.h inclusion with + sys/select.h + + fixes for Ada95/ada_include/Makefile.in to work with --srcdir option. + + remove unused/obsolete test-program rules from progs/Makefile.in + (the rules in ncurses/Makefile.in work). + + remove shared-library loader flags from test/Makefile.in, etc. + + simplify test/configure.in using new version of autoconf to create + test/ncurses_cfg.h + + suppress suffix rules in test/Makefile.in, provide explicit + dependency to work with --srcdir option and less capable 'make' + programs. + > adapted from patch for QNX by Xiaodan Tang: + + initialize %P and %g variables set/used in tparm, and also ensure + that empty strings don't return a null result from tparam_internal + + add QNX-specific prototype for vsscanf() + + move initialization of SP->_keytry from init_keytry() to newterm() to + avoid resetting it via a keyok() call by mouse_activate(). + + reorganized some functions in lib_mouse() to use case-statements. + + remove sgr string from qnx terminfo entry since it is reported to + turn off attributes inconsistently. + +980124 + + add f/F/b/B commands to ncurses 'b' test to toggle colors, providing + test for no_color_video. + + adjusted emx.src to use no_color_video, now works with ncurses 'b' + and 'k' tests. + + implement no_color_video attribute, and as a special case, reverse + colors when the reverse attribute cannot be combined with color. + + check for empty string in $TERM variable (reported by Brett Michaels + ). + > from reports by Fred Fish: + + add configure-test for isascii + + add configure-test for -lm library. + + modify CF_BOOL_SIZE to check if C++ bool types are unsigned. + > patches by J.J.G.Ripoll + + add configure/makefile variables to support .exe extension on + OS/2 EMX (requires additional autoconf patches). + + explicitly initialize variables in lib_data.c to appease OS/2 linker + > patches by Fred Fish + + misc/Makefile.in (install.data): Avoid trying to install the CVS + directory. + + aclocal.m4 (install.includes): Remove files in the include directory + where we are going to install new ones, not the original source + files. + + misc/terminfo.src: Add entry for "beterm", derived from termcap + distributed with BeOS PR2 using captoinfo. + + aclocal.m4: Wrap $cf_cv_type_of_bool with quotes (contains space) + + aclocal.m4: Assume bool types are unsigned. + + progs/infocmp.c: workaround mwcc 32k function data limit + +980117 + + correct initialization of color-pair (cf: 970524) in xmas.c, which + was using only one color-pair for all colors (reported by + J.J.G.Ripoll). + + add multithread options for objects build on EMX, for compatibility + with XFree86. + + split up an expression in MKlib_gen.sh to work around a problem on + OS/2 EMX, with 'ash' (patch by J.J.G.Ripoll). + + change terminfo entries xterm (xterm-xf86-v40), xterm-8bit rs1 to use + hard reset. + + rename terminfo entry xterm-xf86-v39t to xterm-xf86-v40 + + remove bold/underline from sun console entries since they're not + 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 + synopsis (reported by Darren Hiebert ). + + correct typo in panel/Makefile.in, reversed if-statement in scrolling + optimization (Alexander V. Lukyanov). + + test for 'remove()', use 'unlink() if not found (patch by Philippe De + Muyter ). + > patches by Juergen Pfeifer: + + Improve a feature of the forms driver. For invisible fields + (O_VISIBLE off) only the contents but not the attributes are cleared. + We now clear both. (Reported by Javier Kohan + ) + + The man page form_field_opts.3x makes now clear, that invisible + fields are also always inactive. + + adjust ifdef's to compile the C++ binding with the just released + gcc-2.8.0 c++ and the corresponding new C++ libraries. + +980110 + + correct "?" command in ncurses.c; it was performing non-screen writes + while the program was in screen mode. (It "worked" in 1.9.9e because + that version sets OPOST and OCRNL incorrectly). + + return error from functions in lib_kernel, lib_raw and lib_ti if + cur_term is null, or if underlying I/O fails. + + amend change to tputs() so that it does not return an error if + cur_term is null, since some applications depend on being able to use + tputs without initializing the terminal (reported by Christian J. + Robinson ). + +980103 + + add a copy of emx.src from J.J.G.Ripoll's OS/2 EMX version of ncurses + 1.9.9e, together with fixes/additions for the "ansi" terminal type. + + add tic check for save/restore cursor if change_scroll_region is + defined (reference: O'Reilly book). + + modify read_termcap.c to handle EMX-style pathnames (reported by + J.J.G.Ripoll). + + modify lib_raw.c to use EMX's setmode (patch from J.J.G.Ripoll). + Ripoll says EMX's curses does this. + + modify _nc_tic_expand() to generate \0 rather than \200. + + move/revise 'expand()' from dump_entry.c to ncurses library as + _nc_tic_expand(), for use by tack. + + decode \a as \007 for terminfo, as per XSI. + + correct translation of terminfo "^@", to \200, like \0. + + modify next_char() to treat the same as , for + cross-platform compatibility. + + use new version of autoconf (971230) to work around limited + environment on CLIX, due to the way autoconf builds --help message. + > patch by Juergen Pfeifer: + + check that the Ada95 binding runs against the correct version of + ncurses. + + insert constants about the library version into the main spec-file of + the Ada95 binding. + +971227 + + modify open/fopen calls to use binary mode, needed for EMX. + + modify configure script to work with autoconf 2.10 mods for OS/2 + EMX (from J.J.G.Ripoll). + + generated ncurses_cfg.h with patch (971222) to autoconf 2.12 which + bypasses limited sed buffer length. + > several changes from Juan Jose Garcia Ripoll + (J.J.G.Ripoll) to support OS/2 EMX: + + add a _scrolling flag to SP, to set when we encounter a terminal + that simply cannot scroll. + + corrected logic in _nc_add_to_try(), by ensuring that strings with + embedded \200 characters are matched. + + don't assume the host has 'link()' function, for linking terminfo + entries. + +971220 + + if there's no ioctl's to support sigwinch handler, disable it. + + add configure option --disable-ext-funcs to remove the extended + functions from the build. + + add configure option --with-termlib to generate the terminfo + functions as a separate library. + + add 'sources' rule to facilitate cross-compiling. + + review/fix order of mostlyclean/clean/distclean rules. + + modify install-rule for headers to first remove old header, in + case there was a symbolic link that confuses the install script. + + corrected substitution for NCURSES_CONST in term.h (cf: 971108) + + add null pointer checks in wnoutrefresh(), overlap() (patch by + Xiaodan Tang ) + + correct tputs(), which could dereference a null cur_term if invoked + before terminal is initialized (patch by Christopher Seawood + ) + > patch by Juergen Pfeifer: + + makes better use of "pragma Inline" in the Ada95 binding + + resynchronizes the generated html manpages + +971213 + + 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 + implemented correctly, added sgr0. + + change ncurses 's' to use raw mode, so ^Q works (reported by Rudolf + Leitgeb ) + +971206 + + 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, + for Debian configuration. + + add validity-check for SP in trace code in baudrate() (reported by + Daniel Weaver). + > patch by Alexander V. Lukyanov (fixes to match sol25 curses) + + modify 'overlay()' so that copy applies target window background to + characters. + + correct 'mvwin()' so that it does not clear the previous locations. + + correct lib_acs.c so that 8-bit character is not sign expanded in + case of wide characters in chtype. + + correct control-char test in lib_addch.c for use with wide chars + + use attribute in the chtype when adding a control character in + lib_addch.c control char was added with current attribute + +971129 + + save/restore errno in _tracef() function + + change treatment of initialize_color to use a range of 0..1000 + (recommended by Daniel Weaver). + + set umask in mkinstalldirs, fixing problems reported by users who + have set root's umask to 077. + + correct bug in tic that caused capabilities to be reprinted at the + end of output when they had embedded comments. + + rewrote wredrawln to correspond to XSI, and split-out since it is + not often used (from report by Alexander V. Lukyanov, 970825) + + rewrote Dan Nelson's change to make it portable, as well as to + correct logic for handling backslashes. + + add code to _nc_tgetent() to make it work more like a real tgetent(). + It removes all empty fields, and removes all but the first in a group + of duplicate caps. The code was pulled from the BSD libtermcap code + in termcap.c (patch by Dan Nelson + + don't include --enable-widec in the --with-develop configure option, + since it is not binary-compatible with 4.1 (noted by Alexander V. + Lukyanov) + > patch by Juergen Pfeifer: + + further improvements of the usage of elaboration pragmas in the Ada95 + binding + + enhanced Ada95 sample to use the user_data mechanism for panels. + + a fix for the configuration script to make gnat-3.10 the required + version. + + resync of the html version of the manpages + +971122 + > fixes/updates for terminfo.src: + + add vt220-js, pilot, rbcomm, datapoint entries from esr's 27-jun-97 + version. + + add hds200 description (Walter Skorski) + + add EMX 0.9b descriptions + + correct rmso/smso capabilities in wy30-mc and wy50-mc (Daniel Weaver) + + rename xhpterm back to hpterm. + > patch by Juergen Pfeifer: + + Improves the usage of elaboration pragmas for the Ada95 binding. + + Adds a translation of the test/rain.c into Ada95 to the samples. + This has been contributed to the project by Laurent Pautet + (pautet@gnat.com) + +971115 + + increase MAX_NAME_SIZE to 512 to handle extremely long alias list + in HP-UX terminfo. + + correction & simplification of delay computation in tputs, based on + comments from Daniel Weaver. + + replace test for SCO with more precise header tests. + + add configure test for unsigned literals, use in NCURSES_BITS macro. + + comment-out the -PIC, etc., flags from c++, progs and test makefiles + since they probably are not needed, and are less efficient (noted by + Juergen Fluk) + + add -L$(libdir) to loader options, after -L../lib so that loaders + that record this information will tend to do the right thing if + the programs are moved around after installing them (suggested by + Juergen Fluk). + + add -R option to loader options for programs for Solaris if the + --enable-rpath option is specified for the libraries. + +971112 + + correct installed filename for shared libraries on *BSD (reported by + Juergen Fluk). + +971108 + + cleanup logic for deciding when tputs() should call delay_output(), + based on comments from Daniel Weaver. + + modified tputs() to avoid use of float. + + correct use of trailpad in tputs(), which used the wrong variable + in call to delay_output(). + + correct inverted expression for null-count in delay_output() + (analysis by Daniel Weaver). + + apply --enable-rpath option to Solaris (requested by Larry Virden). + + correct substitution of EXTRA_CFLAGS for gcc 2.6.3 + + correct check for error-return by _nc_tgetent(), which returns 0 + for success. + + add configure test for BSD 4.4 cgetent() function, modify + read_termcap.c to use the host's version of that if found, using the + terminal database on FreeBSD (reported by Peter Wemm). + + add u8, u9 strings to sun-il description for Daniel Weaver. + + use NCURSES_CONST in panel's user-pointer. + + modify edit_cfg.sh and MKterm.h.awk.in to substitute NCURSES_CONST + so that will work on NeXT. + + use _nc_set_screen() rather than assignments to SP to fix port to + NeXT (reported by Francisco A. Tomei Torres). + +971101 + + force mandatory padding in bell and flash_screen, as specified in + XSI. + + don't allow padding_baud_rate to override mandatory delays (reported + by Daniel Weaver). + + modify delay_output() to use _nc_timed_wait() if no baudrate has been + defined, or if the cur_term pointer is not initialized. XSI treats + this as unspecified. (requested by Daniel Weaver). + + change getcap-cache ifdef's to eliminate unnecessary chdir/mkdir + when that feature is not configured. + + remove _nc_err_abort() calls when write_entry.c finds a directory but + cannot write to it, e.g., when translating part/all of /etc/termcap + (reported by Andreas Jaeger ). + (this dates back to 951102 in 1.9.7a). + + minor ifdef fixes to compile with atac and glibc 2.0.5c + + add check for -lgen when configuring regexpr.h + + modify Solaris shared-library option "-d y" to "-dy" to workaround + incompatibility of gcc 2.7.2 vs vendor's tools. + +971026 + + correct ifdef's for struct winsize vs struct ttysize in lib_setup.c + to compile on SCO. + + remove dangling backslash in panel/Makefile.in + + modify MKkeyname.awk to work with SCO's nawk, which dumps core in the + length() function. + + correct length of allocation in _nc_add_to_try(), to allow for + trailing null. + + correct logic in _nc_remove_key(), which was discarding too many + nodes (patch by Alexander V. Lukyanov) + +971025 + + add definition for $(REL_VERSION) to test/Makefile.in, so *BSD + shared libraries link properly (see 970524). + + modify Linux shared-library generation to include library + dependencies (e.g., -lncurses and -lgpm) in the forms, menu and + panel libraries (suggested by Juergen Pfeifer). + + modify configure script to use config.guess and config.sub rather + than uname, which is unreliable on some systems. + + updated Makefile.glibc, test-built with glibc 2.0.5c + + modify keyname() to return values consistent with SVr4 curses (patch + by Juergen Fluk). + > changes requested by Daniel Weaver: + + modify delay_output() so that it uses the same output function as + tputs() if called from that function. + + move _baudrate from SCREEN to TERMINAL so that low-level use of + tputs works when SP is not set. + > patch by Juergen Pfeifer: + + factor lib_menu and lib_form into smaller modules + + clean up the interface between panel and SCREEN + + minor changes to the Ada95 mouse support implementation + + minor bugfix in C++ binding to ripoff windows + + fix a few Ada95 html documentation pages + +971018 + + split-out lib_ungetch.c, make runtime link to resizeterm() to + decouple those modules from lib_restart.c + + add xterm-xf86-v39t description to terminfo.src + + reset SP->_endwin in lib_tstp.c cleanup() function after calling + endwin() to avoid unnecessary repainting if the application has + established an atexit function, etc. Encountered this problem in + the c++ demo, whose destructors repaint the screen. + + combine _nc_get_screensize() and resizeterm() calls as new function + _nc_update_screensize(). + + minor fixes to allow compile with g++ (suggested by Nelson H. F. + Beebe). + + implement install-rules for Ada95 makefiles. + + use screen_lines or MAXLINES as needed where LINES was coded, + as well as screen_columns for COLS, in the ncurses library. + > patch by Alexander V. Lukyanov: + + modify logic for ripped-off lines to handle several SCREENs. + > patch by Juergen Pfeifer: + + factors lib_slk.c into some smaller modules + + factors panel.c into some smaller modules + + puts the static information about the current panel stack into the + SCREEN structure to allow different panel stacks on different + screens. + + preliminary fix for an error adjusting LINES to account for + ripped-off lines. + +971011 + + move _nc_max_click_interval and other mouse interface items to SCREEN + struct so that they are associated with a single terminal, and also + save memory when the application does not need a mouse (roughly 3k vs + 0.5k on Linux). + + modify mouseinterval() so that a negative parameter queries the + click-interval without modifying it. + + modify ncurses 'i' test to work with ncurses' apparent extension from + SVr4, i.e., allows nocbreak+noecho (analysis by Alexander V. + Lukyanov). + + add configure options --with-ada-includes and --with-ada-objects, + to drive Ada95 binding install (not yet implemented). + + install C++ binding as -lncurses++ and associated headers with the + other ncurses headers. + + fix header uninstall if configure --srcdir is used. + > minor interface changes to support 'tack' program -TD + (request by Daniel Weaver ). + + export functions _nc_trans_string() and _nc_msec_cost(). + + add variable _nc_nulls_sent, to record the number of padding + characters output in delay_output(). + + move tests for generic_type and hard_copy terminals in setupterm() + to the end of that function so that the library will still be + initialized, though not generally useful for curses programs. + > patches by Alexander V. Lukyanov: + + modify ClrBottom() to avoid using clr_eos if there is only one line + to erase. + + typo in configure --help. + > patch by J T Conklin (with minor resync against Juergen's changes) + + split-out lib_flash.c from lib_beep.c + + split-out lib_hline.c and lib_vline.c from lib_box.c + + split-out lib_wattron.c, lib_wattroff.c from lib_addch.c + +971005 + > patch by Juergen Pfeifer: + + correct source/target of c++/edit_cfg.sh + +971004 + + add color, mouse support to kterm terminfo entry. + + modify lib_mouse.c to recognize rxvt, kterm, color_xterm also as + providing "xterm"-style mouse. + + updated rxvt's terminfo description to correspond to 2.21b, with + fixes for the acsc (the box1 capability is incorrect, ech1 does not + work). + + fix logic in parse_entry.c that discarded acsc when 'synthesizing' + an entry from equivalents in XENIX or AIX. This lets ncurses handle + the distribution copy of rxvt's terminfo. + + modify acsc capability for linux and linux-koi8 terminfo descriptions + (from Pavel Roskin ). + + corrected definition in curses.h for ACS_LANTERN, which was 'I' + rather than 'i' (see 970802). + + updated terminfo.src with reformatted acsc entries, and repaired the + trashed entries with spurious '\' characters that this exposed. + + add logic to dump_entry.c to reformat acsc entries into canonical + form (sorted, unique mapping). + + add configure script to generate c++/etip.h + + add configure --with-develop option, to enable by default most of the + experimental options (requested by Alexander V. Lukyanov). + + rename 'deinstall' to 'uninstall', following GNU convention + (suggested by Alexander V. Lukyanov). + > patches by Alexander V. Lukyanov: + + modify tactics 2 and 5 in onscreen_mvcur(), to allow them on the last + line of the screen, since carriage return will not cause a newline. + + remove clause from PutCharLR() that would try to use + eat_newline_glitch since that apparently does not work on some + terminals (e.g., M$ telnet). + + correct a limit check in scroll_csr_backward() + > patches by Juergen Pfeifer: + + adds dummy implementations of methods above() and below() to the + NCursesPanel class. + + fixes missing returncode in NCursesWindow::ripoffline() + + fixes missing returncode in TestApplication::run() in demo.cc + + We should at least give a comment in etip.h why it is currently a + problem to install the C++ binding somewhere + + makes the WINDOW* argument of wenclose() a const. + + modifies several of the routines in lib_adabind.c to use a const + WINDOW* argument. + +970927 + + add 'deinstall' rules. + + use explicit assignments in configure --without-progs option to + work around autoconf bug which doesn't always set $withval. + + check for ldconfig, don't try to run it if not found. + + implement simple/unoptimized case in lib_doupdate.c to handle + display with magic cookie glitch, tested with ncurses.c program. + + correct missing _tracef in getmouse(), to balance the returnCode + macro. + + simplify show_attr() in ncurses.c using termattrs(). + > patches by Juergen Pfeifer: + + provides missing inlines for mvw[hv]line in cursesw.h of the C++ + binding + + fixes a typo in a comment of frm_driver.c + + Enhances Ada95 Makefiles to fulfill the requirement of GNAT-3.10 that + generics should be compiled. Proper fixes to the configuration + scripts are also provided. + +970920 + + several modifications to the configure script (requested by Ward + Horner): + + add configure options --without-progs, to suppress the build of the + utility programs, e.g., for cross-compiling. + + add $(HOSTCCFLAGS) and $(HOSTLDFLAGS) symbols to ncurses + Makefile.in, to simplify setup for cross compiling. + + add logic in configure script to recognize "--target=vxworks", and + generate load/install actions for VxWorks objects. + + move typedef for sigaction_t into SigAction.h to work around problem + generating lint library. + + modify fty_regex.c to reflect renaming of ifdef's for regular + expressions. + + simplify ifdef in lib_setup.c for TIOCGWINSZ since that symbol may + reside in . + + merge testcurs.c with version from PDCurses 2.3, clarifying some of + the more obscure tests, which rely upon color. + + use macros getbegyx() and getmaxyx() in newdemo.c and testcurs.c + + modify ncurses.c to use getbegyx() and getmaxyx() macros to cover up + implementation difference wrt SVr4 curses, allow 's' test to work. + + add missing endwin() to testscanw.c program (reported by Fausto + Saporito ). + + fixes/updates for Makefile.glibc and related files under sysdeps + (patch by H.J.Lu). + > patches by Juergen Pfeifer: + + add checks for null pointers, especially WINDOW's throughout the + ncurses library. + + solve a problem with wrong calculation of panel overlapping (reported + by Ward Horner): + + make sure that a panel's window isn't a pad. + + do more error checking in module lib_touch.c + + missing files for Ada95 binding from the last patch + + synch. of generated html pages (RCS-Id's were wrong in html files) + + support for Key_Resize in Ada binding + + changed documentation style in ./c++/cursesm.h + > patches by Alexander V. Lukyanov: + + undo attempt to do recursive inlining for PutChar(), noting that it + did not improve timing measurably, but inflated the size of + lib_doupdate.o + +970913 + + modify rain.c to use color. + + correct scroll_csr_backward() to match scroll_csr_forward(). + + minor adjustment to llib-lncurses, to work with Solaris 2.5.1 + + minor fixes to sysdeps/unix/sysv/linux/configure to reflect renaming + of configure cache variables in 970906. + + correct logic involving changes to O_VISIBLE option in + Synchronize_Options function in frm_driver.c (Tony Hoffmann + ) + + add $(HOSTCC) symbol to ncurses Makefile.in, to simplify setup for + cross compiling (suggested by Chris Johns). + + modify ifdef in lib_setup.c to only include if we can + use it to support screen-size calculation (reported by Chris Johns). + + #undef unctrl to avoid symbol conflict in port to RTEMS (reported by + Chris Johns ) + > patches by Juergen Pfeifer: + + simplified, made minor corrections to Ada95 binding to form + fieldtype. + + The C++ binding has been enhanced: + + Improve NCursesWindow class: added additional methods to cover + more ncurses functionality. Make refresh() and noutrefresh() + virtual members to allow different implementation in the + NCursesPanel class. + + CAUTION: changed order of parameters in vline() and hline() of + NCursesWindow class. + + Make refresh() in NCursesPanel non-static, it is now a + reimplementation of refresh() in the base class. Added + noutrefresh() to NCursesPanel. + + Added NCursesForm and related classes to support libform + functionality. + + Moved most of configuration related stuff from cursesw.h to etip.h + + Added NCursesApplication class to support easy configuration of + menu and forms related attributes as well as ripped of title lines + and Soft-Label-Keys for an application. + + Support of Auto-Cleanup for a menu's fieldlist. + + Change of return type for current_item() and operator[] for menus. + + Enhanced demo. + + Fixed a bug in form/fld_def.c: take into account that copyarg and + freearg for a fieldtype may be NULL, makearg must not be NULL + + Fixed a bug in form/fld_type.c: in set_fieldtype_arg() makearg must + not be NULL, copyarg and freearg may be NULL. + + Fixed a bug in form/frm_def.c: Allow Disconnect_Fields() if it is + already disconnected. + + Enhance form/frm_driver.c: Allow growth of dynamic fields also on + navigation requests. + + Fixed a bug in form/fty_enum.c: wrong position of postincrement in + case-insensitiva comparison routine. + + Enhanced form/lib_adabind.c with function _nc_get_field() to get a + forms field by index. + + Enhanced menu/m_adabind.c with function _nc_get_item() to get a menus + item by index. + + Fixed in curses.h.in: make chtype argument for pechochar() constant. + Mark wbkgdset() as implemented, remove wbkgdset macro, because it was + broken (didn't handle colors correctly). + + Enhanced lib_mouse.c: added _nc_has_mouse() function + + Added _nc_has_mouse() prototype to curses.priv.h + + Modified lib_bkgd.c: hopefully correct implementation of wbkgdset(); + streamlined implementation of wbkgd() + + Modified lib_mvwin.c: Disable move of a pad. Implement (costly) + move of subwindows. Fixed update behavior of movements of regular + windows. + + Fixed lib_pad.c: make chtype argument of pechochar() const. + + Fixed lib_window.c: dupwin() is not(!) in every bit a really clone + of the original. Subwindows become regular windows by doing a + dupwin(). + + Improved manpage form_fieldtype.3x + > patches by Alexander V. Lukyanov: + + simplify the PutChar() handling of exit_am_mode, because we already + know that auto_right_margin is true. + + add a check in PutChar() for ability to insert to the case of + shifting character to LR corner. + + in terminal initialization by _nc_screen_resume(), make sure that + terminal right margin mode is known. + + move logic that invokes touchline(), or does the equivalent, into + _nc_scroll_window(). + + modify scrolling logic use of insert/delete line capability, assuming + that they affect the screen contents only within the current + scrolling region. + + modify rain.c to demonstrate SIGWINCH handler. + + remove logic from getch() that would return an ERR if the application + called getch() when the cursor was at the lower-right corner of the + physical screen, and the terminal does not have insert-character + ability. + + change view.c so that it breaks out of getch() loop if a KEY_RESIZE + is read, and modify logic in getch() so this fix will yield the + desired behavior, i.e., the screen is repainted automatically when + the terminal window is resized. + +970906 + + add configure option --enable-sigwinch + + modify view.c to test KEY_RESIZE logic, with "-r" option. + + modify testcurs.c to eliminate misleading display wrt cursor type + by testing if the terminal supports cnorm, civis, cvvis. + + several fixes for m68k/NeXT 4.0, to bring cur_term, _nc_curr_line and + _nc_curr_col variables into linked programs: move these variables, + making new modules lib_cur_term and trace_buf (reported by Francisco + Alberto Tomei Torres ). + > patches by Alexander V. Lukyanov: + + add pseudo-functionkey KEY_RESIZE which is returned by getch() when + the SIGWINCH handler has been called since the last call to + doupdate(). + + modify lib_twait.c to hide EINTR only if HIDE_EINTR is defined. + + add SIGWINCH handler to ncurses library which is used if there is no + application SIGWINCH handler in effect when the screen is + initialized. + + make linked list of all SCREEN structures. + + move curses.h include before definition of SCREEN to use types in + that structure. + + correction to ensure that wgetstr uses only a newline to force a + scroll (970831). + +970831 + + add experimental configure option --enable-safe-sprintf; the normal + mode now allocates a buffer as large as the screen for the + lib_printw.c functions. + + modify wgetch to refresh screen when reading ungetch'd characters, + since the application may require this - SVr4 does this. + + refine treatment of newline in wgetstr to echo only when this would + force the screen to scroll. + +970830 + + remove override in wgetstr() that forces keypad(), since SVr4 does + not do this. + + correct y-reference for erasure in wgetstr() when a wrap forces a + scroll. + + correct x-position in waddch() after a wrap forces a scroll. + + echo newline in wgetstr(), making testscanw.c scroll properly when + scanw is done. + + modify vwscanw() to avoid potential buffer overflow. + + rewrote lib_printw.c to eliminate fixed-buffer limits. + > patches by Alexander V. Lukyanov: + + correct an error in handling cooked mode in wgetch(); processing + was in the wrong order. + + simplified logic in wgetch() that handles backspace, etc., by using + wechochar(). + + correct wechochar() so that it interprets the output character as + in waddch(). + + modify pechochar() to use prefresh() rather than doupdate(), since + the latter does not guarantee immediate refresh of the pad. + + modify pechochar() so that if called with a non-pad WINDOW, will + invoke wechochar() instead. + + modify fifo indices to allow fifo to be longer than 127 bytes. + +970823 + + add xterm-8bit to terminfo.src + + moved logic for SP->_fifohold inside check_pending() to make it + work properly when we add calls to that function. + + ensure that bool functions return only TRUE or FALSE, and TRUE/FALSE + are assigned to bool values (patch by H.J.Lu). + > patches by Alexander V. Lukyanov: + + several fixes to getch: + 1. Separate cooked and raw keys in fifo + 2. Fix the case of ungetch'ed KEY_MOUSE + 3. wrap the code for hiding EINTR with ifdef HIDE_EINTR + 4. correctly handle input errors (i.e., EINTR) without loss of raw + keys + 5. recognize ESC KEY_LEFT and similar + 6. correctly handle the case of reception of KEY_MOUSE from gpm + + correct off-by-one indexing error in _nc_mouse_parse(), that caused + single mouse events (press/release) to be ignored in favor of + composed events (click). Improves on a fix from integrating gpm + support in 961229. + + add another call to check_pending, before scrolling, for + line-breakout optimization + + improve hashmap.c by + 1. fixed loop condition in grow_hunks() + 2. not marking lines with offset 0 + 3. fixed condition of 'too far' criteria, thus one-line hunks are + ignored and two lines interchanged won't pass. + + rewrote/simplified _nc_scroll_optimize() by separating into two + passes, forward/backward, looking for chunks moving only in the given + direction. + + move logic that emits sgr0 when initializing the screen to + _nc_screen_init(), now invoked from newterm. + + move cursor-movement cleanup from endwin() into _nc_mvcur_wrap() + function and screen cleanup (i.e., color) into _nc_screen_wrap() + function. + + add new functions _nc_screen_init(), _nc_screen_resume() and + _nc_screen_wrap(). + + rename _nc_mvcur_scrolln() to _nc_scrolln(). + + add a copy of acs_map[] to the SCREEN structure, where it can be + stored/retrieved via set_term(). + + move variables _nc_idcok, _nc_idlok, _nc_windows into the SCREEN + structure. + +970816 + + implement experimental _nc_perform_scroll(). + + modify newterm (actually _nc_setupscreen()) to emit an sgr0 when + initializing the screen, as does SVr4 (reported by Alexander V. + Lukyanov). + + added test_progs rule to ncurses/Makefile. + + modify test/configure.in to check if initscr is already in $LIBS + before looking for (n)curses library. + + correct version-number in configure script for OSF1 shared-library + options (patch by Tim Mooney). + + add -DNDEBUG to CPPFLAGS for --enable-assertions (as Juergen + originally patched) since the c++ demo files do not necessarily + include ncurses_cfg.h + + supply default value for --enable-assertions option in configure + script (reported by Kriang Lerdsuwanakij ). + > patches by Alexander V. Lukyanov: + + correct/simplify logic of werase(), wclrtoeol() and wclrbot(). See + example firstlast.c + + optimize waddch_literal() and waddch_nosync() by factoring out + common subexpressions. + + correct sense of NDEBUG ifdef for CHECK_POSITION macro. + + corrections to render_char(), to make handling of colored blanks + match SVr4 curses, as well as to correct a bug that xor'd space + against the background character. + + replaced hash function with a faster one (timed it) + + rewrote the hashmap algorithm to be one-pass, this avoids multiple + cost_effective() calls on the same lines. + + modified cost_effective() so it is now slightly more precise. + > patches for glibc integration (H.J.Lu): + + add modules define_key, keyok, name_match, tries + + add makefile rules for some of the unit tests in ncurses (mvcur, + captoinfo, hardscroll, hashmap). + + update Linux configure-script for wide-character definitions. + +970809 + + modify _tracebits() to show the character size (e.g., CS8). + + modify tparm() to emit '\200' where the generated string would have a + null (reported by From: Ian Dall for + terminal type ncr7900). + + modify install process so that ldconfig is not invoked if the + package is built with an install-prefix. + + correct test program for chtype size (reported by Tim Mooney). + + add configure option --disable-scroll-hints, using this to ifdef the + logic that computes indices for _nc_scroll_optimize(). + + add module ncurses/softscroll.c, to perform single-stage computation + of scroll indices used in _nc_scroll_optimize(). This is faster than + the existing scrolling algorithm, but tends to make too-small hunks. + + eliminate fixed buffer size in _nc_linedump(). + + minor fixes to lib_doupdate.c to add tradeoff between clr_eol (el) + and clr_bol (el1), refine logic in ClrUpdate() and ClrBottom() (patch + by Alexander V. Lukyanov). + + add test/testaddch.c, from a pending patch by Alexander V. Lukyanov. + + correct processing of "configure --enable-assertions" option (patch + by Juergen Pfeifer). + +970802 + + add '-s' (single-step) option too test/hashtest.c, correct an error + in loop limit for '-f' (footer option), toggle scrollok() when + writing footer to avoid wrap at lower-right corner. + + correct behavior of clrtoeol() immediately after wrapping cursor, + which was not clearing the line at the cursor position (reported by + Liviu Daia ). + + corrected mapping for ACS_LANTERN, which was 'I' rather than 'i' + (reported by Klaus Weide ). + + many corrections to make progs/capconvert work, as well as make it + reasonably portable and integrated with ncurses 4.1 (reported by Dave + Furstenau ). + +970726 + + add flag SP->_fifohold, corresponding logic to modify the behavior of + the line breakout logic so that if the application does not read + input, refreshes will not be stopped, but only slowed. + + generate slk_attr_off(), slk_attr_on(), slk_attr_set(), vid_attr(), + ifdef'd for wide-character support, since ncurses' WA_xxx attribute + masks are identical with the A_xxx masks. + + modify MKlib_gen.sh to generate ifdef'd functions to support optional + configuration of wide-characters. + + modify tset to behave more like SVr4's tset, which does not modify + the settings of intr, quit or erase unless they are given as command + options (reported by Nelson H. F. Beebe ). + + modify tset to look in /etc/ttys or /etc/ttytype if the configuration + does not have getttynam(). + + extend baudrate table in tset.c to match baudrate() function. + + add table entries for B230400 and B460800 to baudrate() function. + + improve breakout logic by allowing it before the first line updated, + which is what SVr4 curses does (patch by Alexander V. Lukyanov). + + correct initialization of vcost in relative_move(), for cursor-down + case (patch by Alexander V. Lukyanov). + > nits gleaned from Debian distribution of 1.9.9g-3: + + install symbolic link for intotocap. + + reference libc directly when making shared libraries. + + correct renaming of curs_scr_dmp.3x in man_db.renames. + + guard tgetflag() and other termcap functions against null cur_term + pointer. + +970719 + + corrected initial state of software echo (error in 970405, reported + by Alexander V. Lukyanov). + + reviewed/added messages to configure script, so that all non-test + options should be accompanied by a message. + + add configure check for long filenames, using this to determine if + it is safe to allow long aliases for terminal descriptions as does + SVr4. + + add configure options for widec (wide character), hashmap (both + experimental). + > patch by Alexander V. Lukyanov: + + hashmap.c - improved by heuristic, so that scroll test works much + better when csr is not available. + + hardscroll.c - patched so that it continues to scroll other chunks + after failure to scroll one. + + lib_doupdate.c - _nc_mvcur_scrolln extended to handle more cases; csr + is avoided as it is relative costly. Fixed wrong coordinates in one + case and wrong string in TRACE. + > patch by Juergen Pfeifer: + + modify C++ binding to compile on AIX 4.x with the IBM C-SET++ + compiler. + +970712 + + remove alternate character set from kterm terminfo entry; it uses the + shift-out control for a purpose incompatible with curses, i.e., font + switching. + + disentangle 'xterm' terminfo entry from some derived entries that + should be based on xterm-r6 instead. + + add cbt to xterm-xf86-xv32 terminfo entry; I added the emulation for + XFree86 3.1.2F, but overlooked its use in terminfo then - T.Dickey. + + correct logic in lib_mvcur.c that uses back_tab. + +970706 + + correct change from 970628 to ClrUpdate() in lib_doupdate.c so that + contents of curscr are saved in newscr before clearing the screen. + This is needed to make repainting work with the present logic of + TransformLine(). + + use napms() rather than sleep() in tset.c to avoid interrupting I/O. + +970705 + + add limit checks to _nc_read_file_entry() to guard against overflow + of buffer when reading incompatible terminfo format, e.g, from OSF/1. + + correct some loop-variable errors in xmc support in lib_doupdate.c + + modify ncurses 'b' test to add gaps, specified by user, to allow + investigation of interaction with xmc (magic cookie) code. + + correct typo in 970524 mods to xmas.c, had omitted empty parameter + list from has_colors(), which gcc ignores, but SVr4 does not + (reported by Larry Virden). + + correct rmso capability in wy50-mc description. + + add configure option "--enable-hard-tabs", renamed TABS_OK ifdef to + USE_HARD_TABS. + > patch by Juergen Pfeifer: + + Add bindings for keyok() and define_key() to the Ada95 packages. + + Improve man pages menu_post.3x and menu_format.3x + + Fix the HTML pages in the Ada95/html directory to reflect the above + changes. + +970628 + + modify change from 970101 to ClrUpdate() in lib_doupdate.c so that + pending changes to both curscr and newscr are flushed properly. + This fixes a case where the first scrolling operation in nvi would + cause the screen to be cleared unnecessarily and repainted before + doing the indexing, i.e., by repeatedly pressing 'j' (reported by + Juergen Pfeifer). + + correct error in trans_string() which added embedded newlines in a + terminfo description to the stored strings. + + remove spurious newlines from sgr in wyse50 (and several other) + terminfo descriptions. + + add configure option for experimental xmc (magic cookie) code, + "--enable-xmc-glitch". When disabled (the default), attributes that + would store a magic cookie are suppressed in vidputs(). The magic + cookie code is far from workable at this stage; the configuration + option is a stopgap. + + move _nc_initscr() from lib_initscr.c to lib_newterm.c + + correct path for invoking make_keys (a missing "./"). + +970621 + + correct sign-extension problem with "infocmp -e", which corrupted + acsc values computed for linux fallback data. + + correct dependency on ncurses/names.c (a missing "./"). + + modify configure script to use '&&' even for cd'ing to existing + directories to work around broken shell interpreters. + + correct a loop-limit in _nc_hash_map() (patch by Alexander V. + Lukyanov). + +970615 + + restore logic in _nc_scroll_optimize() which marks as touched the + lines in curscr that are shifted. + + add new utility 'make_keys' to compute keys.tries as a table rather + than a series of function calls. + + correct include-dependency for tic.h used by name_match + + removed buffer-allocation for name and description from m_item_new.c, + since this might result in incompatibilities with SVr4. Also fixed + the corresponding Ada95 binding module (patch by Juergen Pfeifer, + report by Avery Pennarun ) + + removed the mechanism to timestamp the generated Ada95 sources. This + resulted always in generating patches for the HTML doc, even when + nothing really changed (patch by Juergen Pfeifer). + + improve man page mitem_new.3x (patch by Juergen Pfeifer). + +970614 + + remove ech capability from rxvt description because it does not work. + + add missing case logic for infocmp -I option (reported by Lorenzo M. + Catucci ) + + correct old bug in pnoutrefresh() unmasked by fix in 970531; this + caused glitches in the ncurses 'p' test since the area outside the + pad was not compared when setting up indices for _nc_scroll_optimize. + + rewrote tracebits() to workaround misdefinition of TOSTOP on Ultrix + 4.4, as well as to eliminate fixed-size buffer (reported by Chris + Tanner ) + + correct prototype for termattrs() as per XPG4 version 2. + + add placeholder prototypes for color_set(), erasewchar(), + term_attrs(), wcolor_set() as per XPG4 version 2. + + correct attribution for progs/progs.priv.h and lib_twait.c + + improve line-breakout logic by checking based on changed lines rather + than total lines (patch by Alexander V. Lukyanov). + + correct loop limits for table-lookup of enumerated value in form + (patch by Juergen Pfeifer). + + improve threshold computation for determining when to call ClrToEOL + (patch by Alexander V. Lukyanov). + +970531 + + add configure option --disable-database to force the library to + use only the fallback data. + + add configure option --with-fallbacks, to specify list of fallback + terminal descriptions. + + add a symbolic link for ncurses.h during install; too many programs + still assume there's an ncurses.h + + add new terminfo.src entry for xterm-xf86-v33. + + restore terminfo.src entry for emu to using setf/setb, since it is + not, after all, generating ANSI sequences. Corrected missing comma + that caused setf/setb entries to merge. + + modify mousemask() to use keyok() to enable/disable KEY_MOUSE, so + that applications can disable ncurses' mouse and supply their own + handler. + + add extensions keyok() and define_key(). These are designed to allow + the user's application better control over the use of function keys, + e.g., disabling the ncurses KEY_MOUSE. (The define_key idea was from + a mailing-list thread started by Kenneth Albanowski + Nov'1995). + + restore original behavior in ncurses 'g' test, i.e., explicitly + set the keypad mode rather than use the default, since it confuses + people. + + rewrote the newdemo banner so it's readable (reported by Hugh + Daniel). + + tidy up exit from hashtest (reported by Hugh Daniel). + + restore check for ^Q in ncurses 'g' test broken in 970510 (reported + by Hugh Daniel) + + correct tput program, checking return-value of setupterm (patch by + Florian La Roche). + + correct logic in pnoutrefresh() and pechochar() functions (reported + by Kriang Lerdsuwanakij ). The computation + of 'wide' date to eric's #283 (1.9.9), and the pechochar bug to the + original implementation (1.9.6). + + correct typo in vt102-w terminfo.src entry (patch by Robert Wuest + ) + + move calls of _nc_background() out of various loops, as its return + value will be the same for the whole window being operated on (patch + by J T Conklin). + + add macros getcur[xy] getbeg[xy] getpar[xy], which are defined in + SVr4 headers (patch by J T Conklin ) + + modify glibc addon-configure scripts (patch by H.J.Lu). + + correct a bug in hashmap.c: the size used for clearing the hashmap + table was incorrect, causing stack corruption for large values of + LINES, e.g., >MAXLINES/2 (patch by Alexander V. Lukyanov). + + eric's terminfo 9.13.23 & 9.13.24 changes: replaced minitel-2 entry, + added MGR, ansi-nt (note: the changes described for 9.13.24 have not + been applied). + > several changes by Juergen Pfeifer: + + correct a missing error-return in form_driver.c when wrapping of a + field is not possible. + + correct logic in form_driver.c for configurations that do not have + memccpy() (reported by Sidik Isani ) + + change several c++ binding functions to inline. + + modify c++ menu binding to inherit from panels, for proper + initialization. + + correct freeing of menu items in c++ binding. + + modify c++ binding to reflect removal of const from user data pointer + in forms/menus libraries. + +970524 + + add description of xterm-16color. + + modify name of shared-library on *BSD to end with $(REL_VERSION) + rather than $(ABI_VERSION) to match actual convention on FreeBSD + (cf: 960713). + + add OpenBSD to shared-library case, same as NetBSD and FreeBSD + (reported by Hugh Daniel ). + + corrected include-dependency in menu/Makefile so that "make install" + works properly w/o first doing "make". + + add fallback definition for isascii, used in infocmp. + + modify xmas to use color, and to exit right away when a key is + pressed. + + modify gdc so that the scrolled digits function as described (there + was no time delay between the stages, and the digits overwrote the + bounding box without tidying up). + + modify lib_color.c to use setaf/setab only for the ANSI color codes + 0 through 7. Using 16 colors requires setf/setb. + + modify ncurses 'c' test to work with 16 colors, as well as the normal + 8 colors. + + remove const qualifier from user data pointer in forms and menus + libraries (patch by Juergen Pfeifer). + + rewrote 'waddchnstr()' to avoid using the _nc_waddch_nosync() + function, thereby not interpreting tabs, etc., as per spec (patch by + Alexander V. Lukyanov). + +970517 + + suppress check for pre-existing ncurses header if the --prefix + option is specified. + + add configure options "--with-system-type" and + "--with-system-release" to assist in checking the generated + makefiles. + + add configure option "--enable-rpath" to allow installers to specify + that programs linked against shared libraries will have their library + path embedded, allowing installs into nonstandard locations. + + add flags to OSF1 shared-library options to specify version and + symbol file (patch by Tim Mooney ) + + add missing definition for ABI_VERSION to c++/Makefile.in (reported + by Satoshi Adachi ). + + modify link flags to accommodate HP-UX linker which embeds absolute + pathnames in executables linked against shared libraries (reported by + Jason Evans , solved by Alan Shutko + ). + + drop unnecessary check for attribute-change in onscreen_mvcur() since + mvcur() is the only caller within the library, and that check in turn + is exercised only from lib_doupdate.c (patch by Alexander V. + Lukyanov). + + add 'blank' parameter to _nc_scroll_window() so _nc_mvcur_scrolln() + can use the background of stdscr as a parameter to that function + (patch by Alexander V. Lukyanov). + + moved _nc_mvcur_scrolln() from lib_mvcur.c to lib_doupdate.c, to use + the latter's internal functions, as well as to eliminate unnecessary + cursor save/restore operations (patch by Alexander V. Lukyanov). + + omit parameter of ClrUpdate(), since it is called only for newscr, + further optimized/reduced by using ClearScreen() and TransformLine() + to get rid of duplicate code (patch by Alexander V. Lukyanov). + + modify scrolling algorithm in _nc_scroll_optimize() to reject hunks + that are smaller than the distance to be moved (patch by Alexander V. + Lukyanov). + + correct a place where the panel library was not ifdef'd in ncurses.c + (Juergen Pfeifer) + + documentation fixes (Juergen Pfeifer) + +970515 4.1 release for upload to prep.ai.mit.edu + + re-tag changes since 970505 as 4.1 release. + +970510 + + modify ncurses 'g' test to allow mouse input + + modify default xterm description to include mouse. + + modify configure script to add -Wwrite-strings if gcc warnings are + enabled while configuring --enable-const (and fixed related + warnings). + + add toggle, status display for keypad mode to ncurses 'g' test to + verify that keypad and scrollok are not inherited from parent window + during a call to newwin. + + correction to MKexpanded.sh to make it work when configure --srcdir + is used (reported by H.J.Lu). + + revise test for bool-type, ensuring that it checks if builtin.h is + available before including it, adding test for sizeof(bool) equal + to sizeof(short), and warning user if the size cannot be determined + (reported by Alexander V. Lukyanov). + + add files to support configuration of ncurses as an add-on library + for GNU libc (patch by H.J.Lu ) + +970506 + + correct buffer overrun in lib_traceatr.c + + modify change to lib_vidattr.c to avoid redundant orig_pair. + + turn on 'echo()' in hanoi.c, since it is initially off. + + rename local 'errno' variable in etip.h to avoid conflict with global + (H.J.Lu). + + modify configure script to cache LD, AR, AR_OPTS (patch by H.J.Lu + ) + +970505 4.1 pre-release + + regenerate the misc directory html dumps without the link list, which + is not useful. + + correct dependency in form directory makefile which caused + unnecessary recompiles. + + correct substitution for ABI_VERSION in test-makefile + + modify install rules for shared-library targets to remove the target + before installing, since some install programs do not properly handle + overwrite of symbolic links. + + change order of top-level targets so that 'include' immediate + precedes the 'ncurses' directory, reducing the time between new + headers and new libraries (requested by Larry Virden). + + modify lib_vidattr.c so that colors are turned off only before + modifying other attributes, turned on after others. This makes the + hanoi.c program display correctly on FreeBSD console. + + modify debug code in panel library to print user-data addresses + rather than the strings which they (may) point to. + + add check to ensure that C++ binding and demo are not built with g++ + versions below 2.7, since the binding uses templates. + + modify c++ binding and demo to build and run with SGI's c++ compiler. + (It also compiles with the Sun SparcWorks compiler, but the demo does + not link, due to a vtbl problem). + + corrections to demo.cc, to fix out-of-scope variables (Juergen + Pfeifer). + +970503 + + correct memory leak in _nc_trace_buf(). + + add configure test for regexpr.h, for Unixware 1.x. + + correct missing "./" prefixing names of generated files in ncurses + directory. + + use single-quotes in configure scripts assignments for MK_SHARED_LIB + to workaround shell bug on FreeBSD 2.1.5 + + remove tabs from intermediate #define's for GCC_PRINTF, GCC_SCANF + that caused incorrect result in ncurses_cfg.h + + correct initialization in lib_trace.c, which omitted version info. + + remove ech, el1 attributes from cons25w description; they appear to + malfunction in FreeBSD 2.1.5 + + correct color attributes in terminfo.src and lib_color.c to match + SVr4 behavior by interchanging codes 1,4, 3,6 in the setf/setb + capabilities. + + use curs_set() rather than checks via tigetstr() for test programs + that hide the cursor: firework, rain, worm. + + ensure that if the terminal lacks change_scroll_region, parm_index + and parm_rindex are used only to scroll the whole screen (patch by + Peter Wemm). + + correct curs_set() logic, which did not return ERR if the requested + attributes did not exist, nor did it assume an unknown initial state + for the cursor (patch by Alexander V. Lukyanov). + + combine IDcTransformLine and NoIDcTransformLine to new TransformLine + function in lib_doupdate.c (patch by Alexander V. Lukyanov). + + correct hashmap.c, which did not update index information (patch by + Alexander V. Lukyanov). + + fixes for C++ binding and demo (see c++/NEWS) (Juergen Pfeifer). + + correct index in lib_instr.c (Juergen Pfeifer). + + correct typo in 970426 patch from Tom's cleanup of lib_overlay.c + (patch by Juergen Pfeifer). + +970426 + + corrected cost computation in PutRange(), which was using + milliseconds compared to characters by adding two new members to the + SCREEN struct, _hpa_ch_cost and _cup_ch_cost. + + drop ncurses/lib_unctrl.c, add ncurses/MKunctrl.awk to generate a + const array of strings (suggested by Alexander V. Lukyanov). The + original suggestion in 970118 used a perl script. + + rewrote ncurses 'b' test to better exercise magic-cookie (xmc), as + well as noting the attributes that are not supported by a terminal. + + trace the computation of cost values in lib_mvcur.c + + modify _nc_visbuf() to use octal rather than hex, corrected sign + extension bug in that function that caused buffer overflow. + + modify trace in lib_acs.c to use _nc_visbuf(). + + suppress trace within _traceattr2(). + + correct logic of _tracechtype2(), which did not account for repeats + or redefinition within an acsc string. + + modify debug-library version baudrate() to use environment variable + $BAUDRATE to override speed computation. This is needed for + regression testing. + + correct problems shown by "weblint -pedantic". + + update mailing-list information (now ncurses@bsdi.com). + +970419 + + Improve form_field_validation.3x manpage to better describe the + precision parameter for TYPE_NUMERIC and TYPE_INTEGER. Provide more + precise information how the range checking can be avoided. (patch by + Juergen Pfeifer, reported by Bryan Henderson) + + change type of min/max value of form types TYPE_INTEGER to long to + match SVr4 documentation. + + set the form window to stdscr in set_form_win() so that form_win() + won't return null (patch by Juergen Pfeifer, reported by Bryan + Henderson ). + +970412 + + corrected ifdef'ing of inline (cf: 970321) for TRACE vs C++. + + corrected toggle_attr_off() macro (patch by Andries Brouwer). + + modify treatment of empty token in $MANPATH to /usr/man (reported by + ) + + modify traces that record functions-called so that chtype and attr_t + values are expressed symbolically, to simplify reuse of generated + test-scripts on SVr4 regression testing. + + add new trace functions _traceattr2() and _tracechtype2() + +970405 + + add configure option --enable-const, to support the use of 'const' + where XSI should have, but did not, specify. This defines + NCURSES_CONST, which is an empty token otherwise, for strict + compatibility. + + make processing of configure options more verbose by echoing the + --enable/--with values. + + add configure option --enable-big-core + + set initial state of software echo off as per XSI. + + check for C++ builtin.h header + + correct computation of absolute-path for $INSTALL that dropped "-c" + parameter from the expression. + + rename config.h to ncurses_cfg.h to avoid naming-conflict when + ncurses is integrated into larger systems (adapted from diffs by + H.J.Lu for libc). + + correct inequality in lib_doupdate.c that caused a single-char to not + be updated when the char on the right-margin was not blank, idcok() + was true (patch by Alexander V Lukyanov (in 970124), reported + by Kriang Lerdsuwanakij in 970329). + + modify 'clean' rule in include/Makefile so that files created by + configure script are removed in 'distclean' rule instead. + +970328 + + correct array limit in tparam_internal(), add case to interpret "%x" + (patch by Andreas Schwab) + + rewrote number-parsing in ncurses.c 'd' test; it did not reset the + value properly when non-numeric characters were given (reported by + Andreas Schwab ) + +970321 + + move definition of __INTERNAL_CAPS_VISIBLE before include for + progs.priv.h (patch by David MacKenzie). + + add configuration summary, reordered check for default include + directory to better accommodate a case where installer is configuring + a second copy of ncurses (reported by Klaus Weide + ) + + moved the #define for 'inline' as an empty token from the + $(CFLAGS_DEBUG) symbol into config.h, to avoid redefinition warning + (reported by Ward Horner). + + modify test for bool builtin type to use 'unsigned' rather than + 'unknown' when cross-compiling (reported by Ward Horner). + +970315 + + add header dependencies so that "make install.libs" will succeed + even if "make all" is not done first. + + moved some macros from lib_doupdate.c to curses.priv.h to use in + expanded functions with ATAC. + + correct implementation of lib_instr.c; both XSI and SVr4 agree that + the winnstr functions can return more characters than will fit on one + line. + +970308 + + modify script that generates lib_gen.c to support traces of called & + return. + + add new configure option "--disable-macros", for testing calls within + lib_gen.c + + corrected logic that screens level-checking of called/return traces. + +970301 + + use new configure macro NC_SUBST to replace AC_PATH_PROG, better + addressing request by Ward Horner. + + check for cross-compiling before trying to invoke the autoconf + AC_FUNC_SETVBUF_REVERSED macro (reported by Ward Horner) + + correct/simplify loop in _nc_visbuf(), 970201 changes omitted + a pointer-increment. + + eliminate obsolete symbol SHARED_ABI from dist.mk (noted by + Florian La Roche). + +970215 + + add configure option --enable-expanded, together with code that + implements an expanded form of certain complex macros, for testing + with ATAC. + + disable CHECK_POSITION unless --with-assertions is configured + (Alexander V Lukyanov pointed out that this is redundant). + + use keyname() to show traced chtype values where applicable rather + than _tracechar(), which truncates the value to 8-bits. + + minor fixes to TRACE_ICALLS, added T_CREATE, TRACE_CCALLS macros. + + modify makefiles in progs and test directories to avoid using C + preprocessor options on link commands (reported by Ward Horner) + + correct ifdef/include-order for nc_alloc.h vs lib_freeall.c (reported + by Ward Horner) + + modify ifdef's to use configure-defined symbols consistently + (reported by Ward Horner) + + add/use new makefile symbols AR, AR_OPTS and LD to assist in non-UNIX + ports (reported by Ward Horner ) + + rename struct try to struct tries, to avoid name conflict with C++ + (reported by Gary Johnson). + + modify worm.c to hide cursor while running. + + add -Wcast-qual to gcc warnings, fix accordingly. + + use PutChar rather than PutAttrChar in ClrToEOL to properly handle + wrapping (Alexander V Lukyanov). + + correct spurious echoing of input in hanoi.c from eric's #291 & #292 + patches (reported by Vernon C. Hoxie ). + + extend IRIX configuration to IRIX64 + + supply missing install.libs rule needed after restructuring + test/Makefile.in + +970208 + + modify "make mostlyclean" to leave automatically-generated source + in the ncurses directory, for use in cross-compiles. + + autogenerated object-dependencies for test directory + + add configure option --with-rcs-ids + + modify configuration scripts to generate major/minor/patch versions + (suggested by Alexander V Lukyanov). + + supply missing va_end's in lib_scanw.c + + use stream I/O for trace-output, to eliminate fixed-size buffer + + add TRACE_ICALLS definition/support to lib_trace.c + + modify Ada95 binding to work with GNAT 3.09 (Juergen Pfeifer). + +970201 + + add/modify traces for called/return values to simplify extraction + for test scripts. + + changed _nc_visbuf to quote its result, and to dynamically allocate + the returned buffer. + + invoke ldconfig after installing shared library + + modify install so that overwrite applies to shared library -lcurses + in preference to static library (reported by Zeyd M Ben-Halim 960928). + + correct missing ';' in 961221 mod to overwrite optional use of $(LN_S) + symbol. + + fixes to allow "make install" to work without first doing a "make + all" (suggested by Larry Virden). + +970125 + + correct order of #ifdef for TABS_OK. + + instrumented toe.c to test memory-leaks. + + correct memory-deallocation in toe.c (patch by Jesse Thilo). + + include in configuration test for regex.h (patch by + Andreas Schwab) + + make infocmp recognize -I option, for SVr4 compatibility (reported by + Andreas Schwab ) + +970118 + + add extension 'use_default_colors()', modified test applications that + use default background (firework, gdc, hanoi, knight, worm) to + demonstrate. + + correct some limit checks in lib_doupdate.c exposed while running + worm. + + use typeCalloc macro for readability. + + add/use definition for CONST to accommodate testing with Solaris + (SVr4) curses, which doesn't use 'const' in its prototypes. + + modify ifdef's in test/hashtest.c and test/view.c to compile with + Solaris curses. + + modify _tracedump() to pad colors & attrs lines to match change + in 970101 showing first/last changes. + + corrected location of terminating null on dynamically allocated forms + fields (patch by Per Foreby). + +970111 + + added headers to make view.c compile on SCO with the resizeterm() + code (i.e., struct winsize) - though this compiles, I don't have a + suitable test configuration since SIGWINCH doesn't pass my network to + that machine - T.Dickey. + + update test/configure.in to supply some default substitutions. + + modify configure script to add -lncurses after -lgpm to fix problem + linking against static libraries. + + add a missing noraw() to test/ncurses.c (places noted by Jeremy + Buhler) + + add a missing wclear() to test/testcurs.c (patch by Jeremy Buhler + ) + + modify headers to accommodate compilers that don't allow duplicate + "#define" lines for NCURSES_VERSION (reported by Larry W. Virden + ) + + fix formatting glitch in curs_getch.3x (patch by Jesse Thilo). + + modify lib_doupdate to make el, el1 and ed optimization use the + can_clear_with macro, and change EmitRange to allow leaving cursor at + the middle of interval, rather than always at the end (patch by + Alexander V Lukyanov). This was originally 960929, resync 970106. + +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 + by Jesse Thilo). + + correct font-codes in some man-pages (patch by Jesse Thilo + ) + + use configure script's knowledge of existence of g++ library for the + c++ Makefile (reported by Paul Jackson). + + correct misleading description of --datadir configuration option + (reported by Paul Jackson ) + +970101 + + several corrections to _nc_mvcur_scrolln(), prompted by a bug report + from Peter Wemm: + > the logic for non_dest_scroll_region was interchanged between the + forward & reverse scrolling cases. + > multiple returns from the function allowed certain conditions to do + part of an operation before discovering that it couldn't be + completed, returning an error without restoring the cursor. + > some returns were ERR, where the function had completed the + operation, because the insert/delete line logic was improperly + tested (this was probably the case Peter saw). + > contrary to comments, some scrolling cases were tested after the + insert/delete line method. + + modify _tracedump() to show first/last changes. + + modify param of ClrUpdate() in lib_doupdate.c to 'newscr', fixes + refresh problem (reported by Peter Wemm) that caused nvi to not show + result of ":r !ls" until a ^L was typed. + +961229 (internal alpha) + + correct some of the writable-strings warnings (reported by Gary + Johnson ). Note that most of the remaining ones + are part of the XSI specification, and can't be "fixed". + + improve include-dependencies in form, menu, panel directories. + + correct logic of delay_output(), which would return early if + there is data on stdin. + + modify interface & logic of _nc_timed_wait() to support 2 file + descriptors, needed for GPM. + + integrate patch by Andrew Kuchling for GPM (mouse) + support, correcting logic in wgetch() and _nc_mouse_parse() which + prevented patch from working properly -TD + + improve performance of panel algorithm (Juergen Pfeifer 961203). + + strip RCS id's from generated .html files in Ada95 subtree. + + resync with generated .html files (Juergen Pfeifer 961223). + + terminfo.src 10.1.0 (ESR). + +961224 4.0 release + + release as 4.0 to accommodate Linux ld.so.1.8.5 + + correct syntax/spelling, regenerated .doc files from .html using + lynx 2.5 + + refined forms/menus makefiles (Juergen Pfeifer 961223). + +961221 - snapshot + + remove logic in read_entry.c that attempts to refine errno by using + 'access()' for the directory (from patch by Florian La Roche). + + correct configure test/substitution that inhibits generating + include-path to /usr/include if gcc is used (reported by Florian La + Roche). + + modify setupterm() to allocate new TERMINAL for each call, just as + solaris' curses does (Alexander V Lukyanov 960829). + + corrected memory leaks in read_entry.c + + add configure options --with-dbmalloc, --with-dmalloc, and + --disable-leaks, tested by instrumenting infocmp, ncurses programs. + + move #include's for stdlib.h and string.h to *.priv.h to accommodate + use of dbmalloc. + + modify use of $(LN_S) to follow recommendation in autoconf 2.12, + i.e., set current directory before linking. + + split-out panel.priv.h, improve dependencies for forms, menus + (Juergen Pfeifer 961204). + + modify _nc_freewin() to reset globals curscr/newscr/stdscr when + freeing the corresponding WINDOW (found using Purify). + + modify delwin() to return ERR if the window to be deleted has + subwindows, needed as a side-effect of resizeterm() (found using + Purify). Tested and found that SVr4 curses behaves this way. + + implement logic for _nc_freeall(), bringing stub up to date. + +961215 + + modify wbkgd() so that it doesn't set nulls in the rendered text, + even if its argument doesn't specify a character (fixes test case by + Juergen Pfeifer for bug-report). + + set window-attributes in wbkgd(), to simplify comparison against + Solaris curses, which does this. + +961214 - snapshot + + replace most constants in ncurses 'o' test by expressions, making it + work with wider range of screen sizes. + + add options to ncurses.c to specify 'e' test softkey format, and the + number of header/footer lines to rip-off. + + add ^R (repaint after resize), ^L (refresh) commands to ncurses 'p' + test. + + add shell-out (!) command to ncurses 'p' test to allow test of + resize between endwin/refresh. + + correct line-wrap case in mvcur() by emitting carriage return, + overlooked in 960928, but needed due to SVr4 compatibility changes to + terminal modes in 960907. + + correct logic in wresize that causes new lines to be allocated, + broken for the special case of increasing rows only in 960907's fix + for subwindows. + + modify configure script to generate $(LDFLAGS) with -L and -l options + in preference to explicit library filenames. (NOTE: this may + require further amending, since I vaguely recall a dynamic loader + that did not work properly without the full names, but it should be + handled as an exception to the rule, since some linkers do bulk + inclusion of libraries when given the full name - T.Dickey). + + modify configure script to allow user-supplied $CFLAGS to set the + debug-option in all libraries (requested by lots of people) -TD + + use return consistently from main(), rather than exit (reported by + Florian La Roche). + + add --enable-getcap-cache option to configure, normally disabled + (requested by Florian La Roche). + + make configure test for gettimeofday() and possibly -lbsd more + efficient (requested by Florian La Roche ) + + minor adjustments to Ada95 binding (patches by Juergen Pfeifer) + + correct attributes after emitting orig_pair in lib_vidattr.c (patch + by Alexander V Lukyanov). + +961208 + + corrected README wrt Ada95 (Juergen Pfeifer) + +961207 - snapshot + + integrate resizeterm() into doupdate(), so that if screen size + changes between endwin/refresh, ncurses will resize windows to fit + (this needs additional testing with pads and softkeys). + + add, for memory-leak testing, _nc_freeall() entrypoint to free all + data used in ncurses library. + + initialize _nc_idcok, _nc_idlok statically to resolve discrepancy + between initscr() and newwin() initialization (reported by + Alexander V Lukyanov). + + test built VERSION=4.0, SHARED_ABI=4 with Linux ld.so.1.8.5 + (set beta versions to those values -- NOTE that subsequent pre-4.0 + beta may not be interchangeable). + + modify configure script to work with autoconf 2.12 + +961130 1.9.9g release + + add copyright notices to configuration scripts (written by Thomas + Dickey). + +961127 + > patch, mostly for panel (Juergen Pfeifer): + + cosmetic improvement for a few routines in the ncurses core library + to avoid warning messages. + + the panel overlap detection was broken + + the panel_window() function was not fool-proof. + + Some inlining... + + Cosmetic changes (also to avoid warning messages when compiling with + -DTRACE). + +961126 + > patch by Juergen Pfeifer: + + eliminates warning messages for the compile of libform. + + inserts Per Foreby's new field type TYPE_IPV4 into libform. + + Updates man page and the Ada95 binding to reflect this. + + Improves inlining in libmenu and libform. + +961120 + + improve the use of the "const" qualifier in the + panel library (Juergen Pfeifer) + + change set_panel_userptr() and panel_userptr() to use void* + (Juergen Pfeifer) + +961119 + + change ABI to 3.4 + + package with 961119 version of Ada95 binding (fixes for gnat-3.07). + (Juergen Pfeifer) + + correct initialization of the stdscr pseudo panel in panel library + (Juergen Pfeifer) + + use MODULE_ID (rcs keywords) in forms and menus libraries (Juergen + Pfeifer). + > patch #324 (ESR): + + typo in curs_termcap man page (reported by Hendrik Reichel + <106065.2344@compuserve.com>) + + change default xterm entry to xterm-r6. + + add entry for color_xterm + +961116 - snapshot + + lint found several functions that had only #define implementations + (e.g., attr_off), modified curses.h.in to generate them as per XSI + Curses requirement that every macro be available as a function. + + add check in infocmp.c to guard against string compare of + CANCELLED_STRING values. + + modify firework.c, rain.c to hide cursor while running. + + correct missing va_end in lib_tparm.c + + modify hanoi.c to work on non-color terminals, and to use timing + delays when in autoplay mode. + + correct 'echochar()' to refresh immediately (reported by Adrian + Garside <94ajg2@eng.cam.ac.uk>) + > patch #322 (ESR): + + reorganize terminfo.src entries for xterm. + +961109 - snapshot + + corrected error in line-breakout logic (lib_doupdate.c) + + modified newdemo to use wgetch(win) rather than getch() to eliminate + a spurious clear-screen. + + corrected ifdef's for 'poll()' configuration. + + added modules to ncurses, form, menu for Ada95 binding (Juergen + Pfeifer). + + modify set_field_buffer() to allow assignment of string longer than + the initial buffer length, and to return the complete string rather + than only the initial size (Juergen Pfeifer and Per Foreby + ). + +961102 - snapshot + + configure for 'poll()' in preference to 'select()', since older + systems are more likely to have a broken 'select()'. + + modified render_char() to avoid OR'ing colors. + + minor fixes to testcurs.c, newdemo.c test programs: ifdef'd out the + resize test, use wbkgd and corrected box() parameters. + + make flushinp() test work in ncurses.c by using napms() instead of + sleep(). + + undo ESR's changes to xterm-x11r6 (it no longer matched the X11R6.1 + distribution, as stated) + + terminfo 9.13.18 resync (ESR) + + check for getenv("HOME") returning null (ESR). + + change buffer used to decode xterm-mouse commands to unsigned to + handle displays wider than 128 chars (Juergen Pfeifer). + + correct typo curs_outopts.3x (Juergen Pfeifer). + + correct limit-checking in wenclose() (Juergen Pfeifer). + + correction to Peter Wemm's newwin change (Thomas Fehr + ). + + corrections to logic that combines colors and attributes; they must + not be OR'd (Juergen Pfeifer, extending from report/patch by Rick + Marshall). + +961026 - snapshot + + reset flags in 'getwin()' that might cause refresh to attempt to + manipulate the non-existent parent of a window that is read from a + file (lib_screen.c). + + restructure _nc_timed_wait() to log more information, and to try to + recover from badly-behaved 'select()' calls (still testing this). + + move define for GOOD_SELECT into configure script. + + corrected extra '\' character inserted before ',' in comp_scan.c + + corrected expansion of %-format characters in dump_entry.c; some were + rendered as octal constants. + + modify dump_entry.c to make terminfo output more readable and like + SVr4, by using "\s" for spaces (leading/trailing only), "\," for + comma, "\^" and "\:" as well. + + corrected some memory leaks in ncurses.c, and a minor logic error + in the top-level command-parser. + + correction for label format 4 (PC style with info line), a + slk_clear(), slk_restore() sequence didn't redraw the info line + (Juergen Pfeifer). + + modified the slk window (if simulated) to inherit the background and + default character attributes from stdscr (Juergen Pfeifer). + + corrected limit-check in set_top_row (Juergen Pfeifer). + +961019 - snapshot + + correct loop-limit in wnoutrefresh(), bug exposed during pipe-testing + had '.lastchar' entry one beyond '._maxx'. + + modify ncurses test-program to work with data piped to it. + + corrected pathname computation in run_tic.sh, removing extra "../" + (reported by Tim Mooney). + + modified configure script to use previous install's location for + curses.h + + added NetBSD and FreeBSD to platforms that use --prefix=/usr as + a default. + +961013 + + revised xterm terminfo descriptions to reflect the several versions + that are available. + + corrected a pointer reference in dump_entry.c that didn't test if + the pointer was -1. + +961005 - snapshot + + correct _nc_mvcur_scrolln for terminals w/o scrolling region. + + add -x option to hashtest to control whether it allows writes to the + lower-right corner. + + ifdef'd (NCURSES_TEST) the logic for _nc_optimize_enable to make it + 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 + $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 + + fix memory leaks in delscreen() (adapted from Alexander V Lukyanov). + + improve appearance of marker in multi-selection menu (Juergen + Pfeifer) + + fix behavior for forms with all fields inactive (Juergen Pfeifer) + + document 'field_index()' (Juergen Pfeifer) + > patch #321 (ESR): + + add some more XENIX keycap translations to include/Caps. + + modify newwin to set initial state of each line to 'touched' + (from patch by Peter Wemm ) + + in SET_TTY, replace TCSANOW with TCSADRAIN (Alexander V Lukyanov). + +960928 - snapshot + + ifdef'd out _nc_hash_map (still slower) + + add graphic characters to vt52 description. + + use PutAttrChar in ClrToEOL to ensure proper background, position. + + simplify/correct logic in 'mvcur()' that does wrapping; it was + updating the position w/o actually moving the cursor, which broke + relative moves. + + ensure that 'doupdate()' sets the .oldindex values back to a sane + state; this was causing a spurious refresh in ncurses 'r'. + + add logic to configure (from vile) to guard against builders who + don't remove config.cache & config.status when doing new builds -TD + + corrected logic for 'repeat_char' in EmitRange (cf: eric #317), which + did not follow the 2-parameter scheme specified in XSI. + + corrected logic of wrefresh, wnoutrefresh broken in #319, making + clearok work properly (report by Michael Elkins). + + corrected problem with endwin introduced by #314 (removing the + scrolling-region reset) that broke ncurses.c tests. + + corrected order of args in AC_CHECK_LIB (from report by Ami Fischman + ). + + corrected formatting of terminfo.5 tables (Juergen Ehling) + > patch 320 (ESR): + + change ABI to 3.3 + + emit a carriage-return in 'endwin()' to workaround a kernel bug in + BSDI. (requested by Mike Karels ) + + reverse the default o configure --enable-termcap (consensus). + > patch 319 (ESR): + + modified logic for clearok and related functions (from report by + Michael Elkins) - untested + > patch 318 (ESR): + + correction to #317. + > patch 317 (ESR): + + re-add _nc_hash_map + + modify EmitRange to maintain position as per original design + (patch by A. Lukyanov). + + modify test/ncurses.c and tputs, etc., to allow trace counting + output characters. + + add hashtest.c program to time the hashmap optimization. + > patch 316 (ESR): + + add logic to deal with magic-cookie (how was this tested?) + (lib_doupdate.c). + + add ncurses.c driver for magic-cookie, some fixes to ncurses.c + > patch 315 (ESR): + + merge changes to lib_doupdate.c to use ech and rep - untested + (patch by Alexander V Lukyanov). + + modified handling of interrupted system calls - untested + (lib_getch.c, lib_twait.c). + + new function _nc_mvcur_resume() + + fix return value for 'overlay()', 'overwrite()' + +960914 - snapshot + + implement subwindow-logic in wresize, minor fixes to ncurses 'g' + test. + + corrected bracketing of fallback.c (reported/suggested fix by Juergen + Ehling ). + + update xterm-color to reflect XFree86 3.1.3G release. + + correct broken dtterm description from #314 patch (e.g., spurious + newline. The 'pairs' change might work, but no one's tested it + either ;-) + + clarify the documentation for the builtin form fieldtypes (Juergen + Pfeifer) + > patch 314 (ESR): + + reset scroll region on startup rather than at wrapup time + (enhancement suggested by Alexander V Lukyanov). + + make storage of palette tables and their size counts per-screen for + multi-terminal applications (suggested by Alexander V Lukyanov). + + Improved error reporting for infotocap translation errors. + + Update terminfo.src to 9.13.14. + +960907 - snapshot + + rewrote wgetstr to make it erase control chars and also fix bogus use + of _nc_outstr which caused the display to not wrap properly (display + problem reported by John M. Flinchbaugh ) + + modify ncurses 'f' test to accommodate terminal responses to C1 codes + (and split up this screen to accommodate non-ANSI terminals). + + test enter_insert_mode and exit_insert_mode in has_ic(). + + removed bogus logic in mvcur that assumes nl/nonl set output modes + (XSI says they are input modes; SVr4 implements this). + + added macros SET_TTY, GET_TTY to term.h + + correct getstr() logic that altered terminal modes w/o restoring. + + disable ICRNL, etc., during initialization to match SVr4, removing + the corresponding logic from raw, cbreak, etc. + + disable ONLCR during initialization, to match SVr4 (this is needed + for cursor optimization when the cursor-down is a newline). + + replaced ESR's imitation of wresize with my original (his didn't + work). + +960831 - snapshot + + memory leaks (Alexander V. Lukyanov). + + modified pnoutrefresh() to be more tolerant of too-large screen + size (reported by Michael Elkins). + + correct handling of terminfo files with no strings (Philippe De + Muyter) + + correct "tic -s" to take into account -I, -C options. + + modify ncurses 'f' test to not print codes 80 through 9F, since they + are considered control codes by ANSI terminals. + +960824 - snapshot + + correct speed variable-type in 'tgetent()' (reported by Peter Wemm) + + make "--enable-getcap" configuration-option work (reported by + Peter Wemm ) + +960820 + + correct err in 960817 that changed return-value of tigetflag() + (reported by Alexander V. Lukyanov). + + modify infocmp to use library default search-path for terminfo + directory (Alexander V. Lukyanov). + +960817 - snapshot + + corrected an err in mvcur that broke resizing-behavior. + + correct fall-thru behavior of _nc_read_entry(), which was not finding + descriptions that existed in directories past the first one searched + (reported by Alexander V. Lukyanov) + + corrected typo in dtterm description. + > patch 313 (ESR): + + add dtterm description + + clarify ncurses 'i' test (drop mvwscanw subtest) + +960810 - snapshot + + correct nl()/nonl() to work as per SVr4 & XSI. + + minor fixes to ncurses.c (use 'noraw()', mvscanw return-code) + + refine configure-test for "-g" option (Tim Mooney). + + correct interaction between O_BLANK and NEW_LINE request in form + library (Juergen Pfeifer) + +960804 + + revised fix to tparm; previous fix reversed parameter order. + > patch 312 (ESR): + correct terminfo.src corrupted by #310 + > patch 311 (ESR): + + fix idlok() and idcok() and the default of the idlok switch (report + by Ville Sulko). + +960803 - snapshot + + corrected tparm to handle capability strings without explicit pop + (reported by William P Setzer) + + add fallback def for GCC_NORETURN, GCC_UNUSED for termcap users + (reported by Tim Mooney). + > patch 310 (ESR): + + documentation and prototyping errors for has_color, immedok and idcok + (reported by William P Setzer ) + + updated qnx terminfo entry (patch by Michael Hunter) + +960730 + + eliminate quoted includes in ncurses subdirectory, ensure config.h + is included first. + + newterm initializes terminal settings the same as initscr (reported + by Tim Mooney). + +960727 - snapshot + + call cbreak() in initscr(), as per XSI & SVr4. + + turn off hardware echo in initscr() as per XSI & SVr4 + > patch 309 (ESR): + + terminfo changes (9.3.9), from BRL + + add more checks to terminfo parser. + + add more symbols to infocmp. + +960720 - snapshot + + save previous-attribute in lib_vidattr.c if SP is null (reported by + Juergen Fluk ) + + corrected calls on _nc_render so that background character is set + as per XSI. + + corrected wbkgdset macro (XSI allows background character to be + null), and tests that use it. + + more corrections to terminfo (xterm & rxvt) + + undid change to mcprint prototype (cannot use size_t in curses.h + because not all systems declare it in the headers that we can safely + include therein). + + move the ifdefs for errno into curses.priv.h + > patch 308 (ESR): + + terminfo changes (9.3.8) + + modified logic of error-reporting in terminfo parser + + fix option-processing bug in toe. + +960713 - snapshot + + always check for since ISC needs it to declare + fd_set (Juergen Pfeifer) + + install shared-libraries on NetBSD/FreeBSD with ABI-version (reported + by Juergen Pfeifer, Mike Long) + + add LOCAL_LDFLAGS2 symbol (Juergen Pfeifer) + + corrected prototype for delay_output() -- bump ABI to 3.2 + + patch 307 (ESR): + + enable more translations of nonstandard caps, and document them. + + misc/terminfo.src update to 9.13.8 + + patch 306 (ESR): + + moved logic that filters out rmul and rmso from setupterm to newterm + where it is less likely to interfere with termcap applications. + + cosmetic fixes to test/ncurses.c + + modify open() call in ncurses/read_entry.c to use O_RDONLY symbol + rather than constant (report by mib). + + misc/terminfo.src sgr0 and acsc changes (report by Philippe De + Muyter). + + modify ncurses/comp_parse.c so that entries containing a "+" can + have missing rmcup vs smcup. + +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 + preformatted. + + restore man/menu_requestname.3x omitted in Zeyd's resync (oops). + + auto-configure the GCC_PRINTFLIKE/GCC_SCANFLIKE macros (reported by + Philippe De Muyter). + +960706 - snapshot + + make lib_vidattr.c more readable using macros. + + filter out rmul, rmso that conflict with sgr0 when reading terminal + descriptions. + + work around autoconf bug, force $INSTALL to absolute path + (reported by Zeyd). + + 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 + + revised ncurses 't' logic to show trace-disable effect in the menu. + + use getopt in ncurses program to process -s and -t options. + + make ncurses 'p' legend toggle with '?' + + disable scrollok during the ncurses 'p' test; if it is enabled the + stdscr will scroll when putting the box-corners in the lower-right + of the screen. + > patch 305 (ESR): + + added sanity-checking of various paired string attributes. + + misc/terminfo.src update to 9.13.7 (report by A. Lukyanov). + + modify man/Makefile.in to make terminfo.5 during normal build. + > patch 304 (ESR): + + corrected allocation-length for $HOME/.terminfo path. + +960629 - snapshot + + check return code of _nc_mvcur_scrolln() in _nc_scroll_optimize() for + terminals with no scrolling-support (reported by Nikolay Shadrin + ) + + added ^S scrollok-toggle to ncurses 'g' test. + + added ^T trace-toggle to ncurses tests. + + modified ncurses test program to use ^Q or ESC consistently for + terminating tests (rather than ^D), and to use control keys rather + than function keys in 'g' test. + + corrected misplaced wclrtoeol calls in addch to accommodate wrapping + (reported by Philippe De Muyter). + + modify lib_doupdate.c to use effective costs to tradeoff between + delete-character/insert-character vs normal updating (reported by + David MacKenzie). + + compute effective costs for screen update operations (e.g., clr_eos, + delete_character). + + corrected error in knight.c exposed by wrap fixes in 960622; the + msgwin needed scrollok set. + + corrected last change to IDcTransformLine logic to avoid conflict + between PutRange and InsStr + + modified run_tic.sh to not use /usr/tmp (reported by David + MacKenzie), and further revised it and aclocal.m4 to use $TMPDIR if + set. + + corrected off-by-one in RoomFor call in read_entry.c + +960622 - snapshot + + modified logic that wraps cursor in addch to follow the XSI spec, + (implemented in SVr4) which states that the cursor position is + updated when wrapping. Renamed _NEED_WRAP to _WRAPPED to reflect the + actual semantics. + + added -s option to tic, to provide better diagnostics in run_tic.sh + + improved error-recovery for tabset install. + + change ABI to 3.1 (dropped tparam, corrected getbkgd(), added + _yoffset to WINDOW). + + modified initialization of SP->_ofp so that init_acs() is called with + the "right" file pointer (reported by Rick Marshall + + documentation fixes (Juergen Pfeifer). + + corrected, using new SCREEN and WINDOW members, the behavior of + ncurses if one uses ripoffline() to remove a line from the top of the + screen (Juergen Pfeifer). + + modified autoconf scripts to prepare for Ada95 (GNAT) binding to + ncurses (Juergen Pfeifer). + + incorrect buffer-size in _nc_read_entry, reported by ESR. + +960617 + + corrected two logic errors in read_entry.c, write_entry.c (called by + tic, the write/read of terminfo entries used inconsistent rules for + locating the entries; the $TERMINFO_DIRS code would find only the + first entry in a list). + + refined pathname computation in run_tic.sh and shlib. + + corrected initialization of $IP in misc/run_tic.sh + +960615 - snapshot + + ifdef'd out _nc_hash_map() call because it does not improve speed. + + display version of gcc if configure script identifies it. + + modify configure script to use /usr as Linux's default prefix. + + modify run_tic.sh to use shlib script, fixes some problems installing + with a shared-library configuration. + + adjusted configure script so that it doesn't run tests with the + warnings turned on, which makes config.log hard to read. + + added 'lint' rule to top-level Makefile. + + added configure option '--with-install-prefix' for use by system + builders to install into staging locations (requested by + Charles Levert ). + + corrected autoconfigure for Debian man program; it's not installed + as "man_db". + + set noecho in 'worm'; it was ifdef'd for debug only + + updated test/configure.in for timing-display in ncurses 'p' test + + corrected misspelled 'getbkgd()'. + + corrected wbkgdset to work like observed syvr4 (sets A_CHARTEXT part + to blank if no character given, copies attributes to window's + attributes). + + modified lib_doupdate.c to use lower-level SP's current_attr state + instead of curscr's state, since it is redundant. + + correction to IDcTransformLine logic which controls where InsStr is + invoked (refined by Alexander V Lukyanov). + > patch 303 (ESR): + + conditionally include Chris Torek's hash function _nc_hash_map(). + + better fix for nvi refresh-bug (Rick Marshall) + + fix for bug in handling of interrupted keystroke waits, + (Werner Fleck). + + misc/ncurses-intro.html syntax fix (Kajiyama Tamito). + +960601 - snapshot + + 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 + + corrected ifdef for BROKEN_LINKER in MKnames.awk.in + + corrected missing INSTALL_DATA in misc/Makefile.in + + flush output when changing cursor-visibility (Rick Marshall) + + fix a minor bug in the _nc_ripoff() routine and improve error + checking when creating the label window (Juergen Pfeifer). + + enhancement to the control over the new PC-style soft key format. + allow caller now to select whether or not one wants to have + the index-line; see curs_slk.3x for documentation (Juergen Pfeifer). + + typos, don't use inline with "-g" (Philippe De Muyter) + + fixes for menus & wattr-, slk-functions (Juergen Pfeifer) + +960526 - snapshot + + removed --with-ticdir option altogether, maintain compatibility with + existing applications via symbolic link in run_tic.sh + + patch for termio.h, signal (Philippe De Muyter) + + auto-configure gcc warning options rather than infer from version. + + auto-configure __attribute__ for different gcc versions. + + corrected special use of clearok() in hardscroll.c by resetting flag + in wrefresh(). + + include stdlib.h before defs for EXIT_SUCCESS, for OSF/1. + + include sys/types.h in case stdlib.h does not declare size_t. + + fixes for makefile (Tim Mooney) + + fixes for menus & forms (Juergen Pfeifer) + > patch 302 (ESR): + + improve hash function (suggested by Alexander V Lukyanov). + + 9.13.4 update for terminfo.src + +960518 - snapshot + + revised ncurses.c panner test, let pad abut all 4 sides of screen. + + refined case in lib_doupdate.c for ClrToEOL(). + + corrected prior change for PutRange (Alexander V Lukyanov + ). + + autoconf mods (Tim Mooney ). + + locale fix for forms (Philippe De Muyter ) + + renamed "--with-datadir" option to "--with-ticdir" to avoid + confusion, and made this check for the /usr/lib/terminfo pre-existing + directory. + > patches 299-301 (ESR): + + html fixes (Phillippe de Muyter). + + fix typo in ncurses-intro.html (report by Fabrizio Polacco). + + added hashmap.c + + mods to tracing, especially for ACS chars. + + corrected off-by-one in IDCtransform. + + corrected intermittent mouse bug by using return-value from read(). + + mods to parse_entry.c, for smarter defaults. + +960512 + + use getopt in 'tic'; added -L option and modified -e option to allow + list from a file. + +960511 + + don't use fixed buffer-size in tparm(). + + modified tic to create terminfo directory if it doesn't exist. + + added -T options to tic and infocmp (for testing/analysis) + + refined the length criteria for termcap and terminfo + + optimize lib_doupdate with memcpy, PutRange + > patches 297, 298 (ESR): + + implement TERMINFO_DIRS, and -o option of tic + + added TRACE_IEVENT + + fix REQ_TOGGLE_ITEM in menu/menu_driver.c; it could select but not + deselect. + + added lib_print.c (request by Rick Marshall). + + added has_key() (request by Juergen Pfeifer). + + do not issue clrtoeol or clrtobot if the relevant portion of the line + is already blank (analysis by Keith Bostic). + + add parentheses for parameters of COLOR_PAIR and PAIR_NUMBER macros + (analysis by Jurgen Eidt). + + update screen's notion of cursor position in endwin() (analysis by + Alexander Lukyanov). + + added 't' to ncurses.c test. + + moved delay_output() to lib_tputs.c + + removed tparam() (was added in 1.9.9, but conflicts with emacs and + is not part of X/Open Curses). + + removed boolean version of 'getm'. + + misc cursor & optimization fixes. + +960504 - snapshot + + modified ncurses 'p' test to allow full-screen range for panner size. + + fixes for locale (Philippe De Muyter ) + + don't use fixed buffer-size in fmt_entry(). + + added usage-message to 'infocmp'. + + modified install.includes rules to prepend subdirectory-name to + "#include" if needed. + +960430 + + protect wrefresh, wnoutrefresh from invocation with pad argument. + + corrected default CCFLAGS in test/Makefile. + +960428 - snapshot + + implemented logic to support terminals with background color erase + (e.g., rxvt and the newer color xterm). + + improved screen update logic (off-by-one logic error; use clr_eos if + possible) + +960426 - snapshot + + change ncurses 'a' test to run in raw mode. + + make TIOCGWINSZ configure test less stringent, in case user + configures via terminal that cannot get screen size. + > patches 295, 296 (ESR): + + split lib_kernel.c, lib_setup.c and names.c in order to reduce + overhead for programs that use only termcap features. + + new "-e" and "-h" options of tic (request by Tony Nugent). + + fix bug in mandatory-delay logic in lib_tputs.c (report by Sven + Verdoolaege). + + fix for "infocmp -e" to emit correct initializers (reported by Manual + J Novoa III). + + restore working-directory in read_termcap.c (report by Kayvan + Sylvan). + + use "-h" option on Solaris when generating shared libraries on + Solaris 2.5 to record the library name in the file, for assisting + the loader (patch by Scott Kramer). + + undo patch #294 changes to form and menu libraries (request by + Juergen Pfeifer). + +960418 - snapshot + + use autoconf 2.9 + + fix for AIX 3.2.5 (must define _POSIX_SOURCE to get termios struct + definitions via , modified macros in lib_raw.c to avoid + K&R-style substitution) + > patches 293, 294 (ESR): + + rewrite wsyncup(), wsyncdown(), as well as small fixes to form and + menu libraries to fix echo-breakage introduced by 1.8.9, 1.9.9e + changes (patches by Juergen Pfeifer). + + fix compile under QNX 4.2 by defining ONLCR in lib_raw.c when + __QNX__ is defined (patch by Michael Hunter). + + modify setupterm() to match documentation for its return value, fix + newterm to work with this change (report by Emmet Lazich). + + add checks in getch() for error, return ERR as appropriate (report by + Emmet Lazich). + + mods to wgetch() in cooked mode (report by Pete Seebach). + + corrected askuser() logic in tset (patch by Remco Treffkorn). + + correct interaction of endwin() with mouse processing (report by + Michael Elkins). + + added trace support for TTY flags + + update terminfo.src to 9.13.1 + + FreeBSD console entries (patch by Andrew Chernov). + +960406 + + fixes for NeXT, ISC and HPUX auto-configure + + autogenerate development header-dependencies (config.h, *.priv.h) + + corrected single-column formatting of "use=" (e.g., in tic) + + modify tic to read full terminfo-names + + corrected divide-by-zero that caused hang (or worse) when redirecting + output + + modify tic to generate directories only as-needed (and corrected + instance of use of data from function that had already returned). + +### ncurses-1.9.8a -> 1.9.9e + +* fixed broken wsyncup()/wysncdown(), as a result wnoutrefresh() now has + copy-changed-lines behavior. +* added and documented wresize() function. +* more fixes to LOWER-RIGHT corner handling. +* changed the line-breakout optimization code to allow some lines to be + emitted before the first check. +* added option for tic to use symbolic instead of hard links (for AFS) +* fix to restore auto-wrap mode. +* trace level can be controlled by environment variable. +* better handling of NULs in terminal descriptions. +* improved compatibility with observed SVR4 behavior. +* the refresh behavior of over-lapping windows is now more efficient and + behaves like SVR4. +* use autoconf 2.7, which results in a working setup for SCO 5.0. +* support for ESCDELAY. +* small fixes for menu/form code. +* the test directory has its own configure. +* fixes to pads when optimizing scrolling. +* fixed several off-by-one bugs. +* fixes for termcap->terminfo translation; less restrictions more correct + behavior. + +### ncurses-1.9.7 -> 1.9.8a + +* teach infocmp -i to recognize ECMA highlight sequences +* infocmp now dumps all SVr4 termcaps (not just the SVr4 ones) on -C +* support infocmp -RBSD. +* satisfy XSI Curses requirement that every macro be available as a function. +* This represents the last big change to the public interface of ncurses. The + ABI_VERSION has now been set at 3.0 and should stay there barring any great + catastrophies or acts of God. +* The C++ has been cleaned up in reaction to the changes to satisfy XSI's + requirements. +* libncurses now gets linked to libcurses to help seamless emulation + (replacement) of a vendor's curses. --disable-overwrite turns this behavior + off. + +### ncurses-1.9.6 -> 1.9.7 + +* corrected return values of setupterm() +* Fixed some bugs in tput (it does padding now) +* fixed a bug in tic that made it do the wrong thing on entries with more than + one `use' capability. +* corrected the screen-size calculation at startup time to alter the + numeric capabilities as per SVr4, not just LINES and COLS. +* toe(1) introduced; does what infocmp -T used to. +* tic(1) can now translate AIX box1 and font[0123] capabilities. +* tic uses much less core, the dotic.sh kluge can go away now. +* fix read_entry() and write_entry() to pass through cancelled capabilities OK. +* Add $HOME/.terminfo as source/target directory for terminfo entries. +* termcap compilation now automatically dumps an entry to $HOME/.terminfo. +* added -h option to toe(1). +* added -R option to tic(1) and infocmp(1). +* added fallback-entry-list feature. +* added -i option to infocmp(1). +* do a better job at detecting if we're on SCO. + +### ncurses-1.9.5 -> 1.9.6 + +* handling of TERMCAP environment variables now works correctly. +* various changes to shorten termcap translations to less that 1024 chars. +* tset(1) added +* mouse support for xterm. +* most data tables are now const and accordingly live in shareable text space. +* Obey the XPG4/SVr4 practice that echo() is initially off. +* tic is much better at translating XENIX and AIX termcap entries now. +* tic can interpret ko capabilities now. +* integrated Juergen Pfeifer's forms library. +* taught write_entry() how not to write more than it needs to; this change + reduces the size of the terminfo tree by a full 26%! +* infocmp -T option added. +* better warnings about historical tic quirks from tic. + +### ncurses 1.9.4 -> 1.9.5 + +* menus library is now included with documentation. +* lib_mvcur has been carefully profiled and tuned. +* Fixed a ^Z-handling bug that was tanking lynx(1). +* HJ Lu's patches for ELF shared libraries under Linux +* terminfo.src 9.8.2 +* tweaks for compiling in separate directories. +* Thomas Dickey's patches to support NeXT's brain-dead linker +* Eric Raymond's patches to fix problems with long termcap entries. +* more support for shared libraries under SunOS and IRIX. + +### ncurses 1.9.3 -> 1.9.4 + +* fixed an undefined-order-of-evaluation bug in lib_acs.c +* systematically gave non-API public functions and data an _nc_ prefix. +* integrated Juergen Pfeifer's menu code into the distribution. +* totally rewrote the knight test game's interface + +### ncurses 1.9.2c -> 1.9.3 + +* fixed the TERMCAP_FILE Support. +* fixed off-by-one errors in scrolling code +* added tracemunch to the test tools +* took steps to cut the running time of make install.data + +### ncurses 1.9.2c -> 1.9.2d + +* revised 'configure' script to produce libraries for normal, debug, + profile and shared object models. + +### ncurses 1.9.1 -> 1.9.2 + +* use 'autoconf' to implement 'configure' script. +* panels support added +* tic now checks for excessively long termcap entries when doing translation +* first cut at eliminating namespace pollution. + +### ncurses 1.8.9 -> 1.9 + +* cleanup gcc warnings for the following: use size_t where 'int' is not + appropriate, fixed some shadowed variables, change attr_t to compatible with + chtype, use attr_t in some places where it was confused with 'int'. +* use chtype/attr_t casts as appropriate to ensure portability of masking + operations. +* added-back waddchnstr() to lib_addstr.c (it had been deleted). +* supplied missing prototypes in curses.h +* include in lib_termcap.c to ensure that the prototypes + are consistent (they weren't). +* corrected prototype of tputs in +* rewrote varargs parsing in lib_tparm.c (to avoid referencing memory + that may be out of bounds on the stack) -- Purify found this. +* ensure that TRACE is defined in lib_trace.c (to solve prototype + warnings from gcc). +* corrected scrolling-region size in 'mvcur_wrap()' +* more spelling fixes +* use 'calloc()' to allocate WINDOW struct in lib_newwin.c (Purify). +* set default value for SP->_ofp in lib_set_term.c (otherwise SunOS dumps + core in init_acs()). +* include in write_entry.c (most "braindead" includes declare errno + in that file). + +### ncurses 1.8.8 -> 1.8.9 + +* compile (mostly) clean with gcc 2.5.8 -Wall -Wstrict-prototypes + -Wmissing-prototypes -Wconversion and using __attribute__ to flush out + non-portable use of "%x" for pointers, or for chtype data (which is declared + as a long). +* modified doupdate to ensure that typahead was turned on before attempting + select-call (otherwise, some implementations hang). +* added trace mask TRACE_FIFO, use this in lib_getch.c to allow finer + resolution of traces. +* improved bounds checking on several critical functions. +* the data directory has been replaced by the new master terminfo file. +* -F file-comparison option added to infocmp. +* compatibility with XSI Curses is now documented in the man bages. +* wsyncup/wsyncdown functions are reliable now; subwindow code in general + is much less flaky. +* capabilities ~msgr, tilde_glitch, insert_padding, generic_type, no_pad_char, + memory_above, memory_below, and hard_copy are now used properly. +* cursor-movement optimization has been completely rewritten. +* vertical-movement optimization now uses hardware scrolling, il, dl. + +### ncurses 1.8.7 -> 1.8.8 +* untic no longer exists, infocmp replaces it. +* tic can understand termcap now, especially if it is called captoinfo. +* The Linux Standard Console terminfo entry is called linux insead of console. + It also uses the kernel's new method of changing charsets. +* initscr() will EXIT upon error (as the docs say) This will mostly happen if + you try to run on an undefined terminal. +* I can get things running on AIX but tic can't compile terminfo. I have to + compile entries on another machine. Volunteers to hunt this bug are welcome. +* wbkgd() and wbkgdset() can be used to set a windows background to color. + wclear()/werase() DO NOT use the current attribute to clear the screen. + This is the way SVR4 curses works. PDCurses 2.1 is broken in this respect, + though PDCurses 2.2 has been fixed. +* cleaned up the test/ directory. +* test/worm will segfault after quite a while. +* many spelling corrections courtesy of Thomas E. Dickey + +### ncurses 1.8.6 -> 1.8.7 +* cleaned up programs in test/ directory. +* fixed wbkgdset() macro. +* modified getstr() to stop it from advancing cursor in noecho mode. +* modified linux terminfo entry to work with the latest kernel to get + the correct alternate character set. +* also added a linux-mono entry for those running on monochrome screens. +* changed initscr() so that it behaves like the man page says it does. + this fixes the problem with programs in test/ crashing with SIGSEV if + a terminal is undefined. +* modified addch() to avoid using any term.h #define's +* removed duplicate tgoto() in lib_tparm.c +* modified dump_entry.c so that infocmp deals correctly with ',' in acsc +* modified delwin() to correctly handle deleting subwindows. +* fixed Makefile.dist to stop installing an empty curses.h +* fixed a couple of out-of-date notes in man pages. + +### ncurses 1.8.5 -> 1.8.6 +* Implemented wbkgd(), bkgd(), bkgdset(), and wbkgdset(). +* The handling of attributes has been improved and now does not turn off color + if other attributes are turned off. +* scrolling code is improved. Scrolling in subwindows is still broken. +* Fixes to several bugs that manifest them on platforms other than Linux. +* The default to meta now depends on the status of the terminal when ncurses + is started. +* The interface to the tracing facility has changed. Instead of the pair of + functions traceon() and traceoff(), there is just one function trace() which + takes a trace mask argument. The trace masks, defined in curses.h, are + as follows: + + #define TRACE_DISABLE 0x00 /* turn off tracing */ + #define TRACE_ORDINARY 0x01 /* ordinary trace mode */ + #define TRACE_CHARPUT 0x02 /* also trace all character outputs */ + #define TRACE_MAXIMUM 0x0f /* maximum trace level */ + + More trace masks may be added, or these may be changed, in future releases. +* The pad code has been improved and the pad test code in test/ncurses.c has + been improved. +* The prototype ansi entry has been changed to work with a wider variety + of emulators. +* Fix to the prototype ansi entry that enables it to work with PC emulators + that treat trailing ";m" in a highlight sequence as ";0m"; this doesn't + break operation with any emulators. +* There are now working infocmp, captoinfo, tput, and tclear utilities. +* tic can now compile entries in termcap syntax. +* Core-dump bug in pnoutrefresh fixed. +* We now recognize and compile all the nonstandard capabilities in Ross + Ridge's mytinfo package (rendering it obsolete). +* General cleanup and documentation improvements. +* Fixes and additions to the installation-documentation files. +* Take cursor to normal mode on endwin. + +### ncurses 1.8.4 -> 1.8.5 +* serious bugs in updating screen which caused erratic non-display, + fixed. +* fixed initialization for getch() related variable which cause + unpredictable results. +* fixed another doupdate bug which only appeared if you have + parm_char. +* implemented redrawln() and redrawwin(). +* implemented winsnstr() and related functions. +* cleaned up insertln() and deleteln() and implemented (w)insdeln(). +* changed Makefile.dist so that installation of man pages will + take note of the terminfo directory. +* fixed Configure (removed the mysterious 'X'). +* Eric S. Raymond fixed the script.* files so that they work with + stock awk. + +#### ncurses 1.8.3 -> 1.8.4 #### #### +* fixed bug in refreshing the screen after return from shell_mode. + There are still problems but they don't manifest themselves on + my machine (Linux 0.99.14f). +* added wgetnstr() and modified things accordingly. +* fixed the script.src script.test to work with awk not just gawk. +* Configure can now take an argument of the target system. +* added test/ncurses.c which replaces several other programs and + performs more testing. +[Thanks to Eric S Raymond for the last 4] +* more fixes to lib_overlay.c and added test/over.c to illustrate + how it works. +* fixed ungetch() to take int instead of ch. +* fixes to cure wgetch() if flushinp() is called. + +One note I forgot to mention in 1.8.3 is that tracing is off by +default starting in the version. If you want tracing output, put +traceon(); in your code and link with -ldcurses. + +#### ncurses 1.8.2 -> ncurses 1.8.3 #### #### +MAJOR CHANGES: +1) The order of capabilities has been changed in order to achieve +binary compatibility with SVR4 terminfo database. This has the +unfortunate effect of breaking application currently linked with +ncurses. To ensure correct behavior, recompile all such programs. +Most programs using color or newer capabilities will break, others +will probably continue to work ok. + +2) Pavel Curtis has renounced his copyright to the public domain. +This means that his original sources (posted to comp.sources.unix, +volume 1) are now in the public domain. The current sources are +NOT in the public domain, they are copyrighted by me. I'm +entertaining ideas on what the new terms ncurses is released under. + +3) Eric S. Raymond has supplied a complete set of man pages for +ncurses in ?roff format. They will eventually replace most of the +current docs. Both sets are included in this release. + +Other changes and notes from 1.8.2 include: +* SIGSEGV during scrolling no longer occurs. +* Other problems with scrolling and use of idl have been corrected. +* lib_getch.c has been re-written and should perform flawlessly. + please use test/getch.c and any other programs to test this. +* ripoffline() is implemented (Thanks to Eric) and slk_ functions + changed accordingly. +* I've added support for terminals that scroll if you write in the + bottom-right corner. +* fixed more bugs in pads code. If anybody has a program that uses + pads I'd love a copy. +* correct handling for terminal with back_color_erase capability + (such as Linux console, and most PC terminals) +* ^Z handling apparently didn't work (I should never trust code + sent me to me without extensive testing). It now seems to be + fixed. Let me know if you have problems. +* I've added support for Apollo and NeXT, but it may still be + incomplete, especially when dealing with the lack of POSIX + features. +* scrolling should be more efficient on terminals with idl + capabilities. Please see src/lib_scroll.c for more notes. +* The line drawing routines were offset by 1 at both ends. This + is now fixed. +* added a few missing prototypes and macros (e.g. setterm()) +* fixed code in src/lib_overlay.c which used to crash. +* added a few more programs in test/ The ones from the PDCurses + package are useful, especially if you have SVR4 proper. I'm + interested in the results you get on such a systems (Eric? ;-). + They already exposed certain bugs in ncurses. +* See src/README for porting notes. +* The C++ code should really replace ncurses.h instead of working + around it. It should avoid name-space clashes with nterm.h (use + rows instead of lines, etc.) +* The C++ should compile ok. I've added explicit rules to the + Makefile because no C++ defaults are documented on the suns. +* The docs say that echo() and nocbreak() are mutually exclusive. + At the moment ncurses will switch to cbreak() if the case above + occurs. Should it continue to do so? How about echo() and noraw()? +* PDCurses seem to assume that wclear() will use current attribute + when clearing the screen. According to Eric this is not the case + with SVR4. +* I have discovered, to my chagrin, SunOS 4.x (and probably other systems) + * doesn't have vsscanf and God knows what else! I've will do a vsscanf(). +* I've also found out that the src/script.* rely on gawk and will not + work with stock awk or even with nawk. Any changes are welcome. +* Linux is more tolerant of NULL dereferences than most systems. This + fact was exposed by hanoi. +* ncurses still seems inefficient in drawing the screen on a serial + link between Linux and suns. The padding may be the culprit. +* There seems to be one lingering problem with doupdate() after shelling + out. Despite the fact the it is sending out the correct information + to the terminal, nothing takes effect until you press ^L or another + refresh takes place. And yes, output does get flushed. + +#### ncurses 1.8.1 -> ncurses 1.8.2 #### Nov 28, 1993 #### + +* added support for SVR4 and BSDI's BSD/386. +* major update and fix to scrolling routine. +* MORE fixes to stuff in lib_getch.c. +* cleaned-up configuration options and can now generate + Config.* files through an awk script. +* changed setupterm() so it can be called more than once, + add added set_curterm(), del_curterm(). +* a few minor cleanups. +* added more prototypes in curses.h + +#### ncurses 1.8 -> ncurses 1.8.1 #### Nov 4, 1993 #### + +* added support for NeXTStep 3.0 +* added termcap emulation (not well tested). +* more complete C++ interface to ncurses. +* fixed overlay(), overwrite(), and added copywin(). +* a couple of bug fixes. +* a few code cleanups. + +#### ncurses 0.7.2/0.7.3 -> ncurses 1.8 #### Aug 31, 1993 #### + +* The annoying message "can't open file." was due to missing + terminfo entry for the used terminal. It has now been + replaced by a hopefully more helpful message. +* Problems with running on serial lines are now fixed. +* Added configuration files for SunOS, Linux, HP/UX, Ultrix, + 386bsd/BSDI (if you have others send'em to me) +* Cleaner Makefile. +* The documentation in manual.doc is now more uptodate. +* update optimization and support for hp terminals, and 386bsd + console driver(s). +* mvcur optimization for terminals without cursor addressing + (doesn't work on Linux) +* if cursor moved since last update, getch() will refresh the + screen before working. +* getch() & alarm() can now live together. in 0.7.3 a signal + interrupted getch() (bug or feature?) now the getch is + restarted. +* scanw() et all were sick, now fixed. +* support for 8-bit input (use meta()). +* added default screen size to all terminfos. +* added c++ Ncursesw class. +* several minor bug fixes. + +#### ncurses 0.7.2 -> ncurses 0.7.3 #### May 27, 1993 #### + +* Config file to cope with different platforms (386BSD, BSDI, Ultrix, SunOS) +* more fixes to lib_getch.c +* changes related to Config + +#### ncurses 0.7 -> ncurses 0.7.2 #### May 22, 1993 #### + +* docs updated slightly (color usage is now documented). +* yet another fix for getch(), this one fixes problems with ESC being swallowed + if another character is typed before the 1 second timeout. +* Hopefully, addstr() and addch() are 8-bit clean. +* fixed lib_tparm.c to use stdarg.h (should run on suns now) +* order of capabilities changed to reflect that specified in SYSV + this will allow for binary-compatibility with existing terminfo dbs. +* added halfdelay() +* fixed problems with asc_init() +* added A_PROTECT and A_INVIS +* cleaned up vidputs() +* general cleanup of the code +* more attention to portability to other systems +* added terminfos for hp70092 (won't work until changes to lib_update.c are + made) and 386BSD pcvt drivers. + +Thanks to Hellmuth Michaelis for his help. +optimization code is slated for the next major release, stay tuned! + +#### ncurses 0.6/0.61 -> ncurses 0.7 #### April 1, 1993 +Please note that the next release will be called 1.8. If you want to know about +the rationale drop me a line. + +Included are several test programs in test/. +I've split up the panels library, reversi, tetris, sokoban. They are now +available separately from netcom.com:pub/zmbenhal/ + +* color and ACS support is now fully compatible with SYSV at the terminfo + level. +* Capabilities now includes as many SYSV caps I could find. +* tigetflag,tigetnum,tigetstr functions added. +* boolnames, boolfnames, boolcodes numnames, numfnames, numcodes, + strnames, strfnames, strcodes arrays are now added. +* keyname() is added. +* All function keys can be defined in terminfo entries. +* fixed lin_tparm.c to behave properly. +* terminfo entries for vt* and xterm are included (improvements are welcome) +* more automation in handling caps and keys. +* included fixes from 0.6.1 +* added a few more missing functions. +* fixed a couple of minor bugs. +* updated docs JUST a little (still miles behind in documenting the newer + features). + +#### ncurses 0.6 -> ncurses 0.61 #### + +1) Included the missing data/console. + +2) allow attributes when drawing boxes. + +3) corrected usage of win->_delay value. + +4) fixed a bug in lib_getch.c. if it didn't recognize a sequence it would + simply return the last character in the sequence. The correct + behavior is to return the entire sequence one character at a time. + +#### ncurses0.5 -> ncurses0.6 #### March 1, 1993 #### +* removed _numchngd from struct _win_st and made appropriate changes. +* rewritten kgetch() to remove problems with interaction between alarm and + read(). It caused SIGSEGV every now and then. +* fixed a bug that miscounted the numbers of columns when updating. + (in lib_doupdate.c(ClrUpdate() -- iterate to columns not columns-1) +* fixed a bug that cause the lower-right corner to be incorrect. + (in lib_doupdate.c(putChar() -- check against columns not columns-1) +* made resize() and cleanup() static to lib_newterm.c +* added notimeout(). +* added timeout() define in curses.h +* added more function prototypes and fixed napms. +* added use_env(). +* moved screen size detection to lib_setup.c. +* fixed newterm() to confirm to prototype. +* removed SIGWINCH support as SYSV does not define its semantics. +* cleaned-up lib_touch.c +* added waddnstr() and relatives. +* added slk_* support. +* fixed a bug in wdeleteln(). +* added PANEL library. +* modified Makefile for smoother installation. +* terminfo.h is really term.h + +#### ncurses 0.4 -> ncurses 0.5 #### Feb 14, 1993 #### +* changed _win_st structure to allow support for missing functionality. +* Addition of terminfo support for all KEY_*. +* Support for nodelay(), timeout(), notimeout(). +* fixed a bug with the keypad char reading that did not return ESC until + another key is pressed. +* nl mapping no longer occur on output (as should be) + fixed bug '\n' no causing a LF. +* fixed bug that reset terminal colors regardless of whether we use color + or not. +* Better support for ACS (not quite complete). +* fixed bug in wvline(). +* added curs_set(). +* changed from signal() to sigaction(). +* re-included the contents of important.patch into source. + +#### ncurses 0.3 -> ncurses 0.4 #### Feb 3, 1993 #### +* Addition of more KEY_* definitions. +* Addition of function prototypes. +* Addition of several missing functions. +* No more crashes if screen size is undefined (use SIGWINCH handler). +* added a handler to cleanup after SIGSEGV (hopefully never needed). +* changed SRCDIR from /etc/term to /usr/lib/terminfo. +* renamed compile/dump to tic/untic. +* New scrolling code. +* fixed bug that reversed the sense of nl() and nonl(). + +#### ncurses 0.2 -> ncurses 0.3 #### Jan 20, 1993 #### +* more support for color and graphics see test/ for examples. +* fixed various files to allow correct update after shelling out. +* more fixes for updates. +* no more core dumps if you don't have a terminfo entry. +* support for LINES and COLUMNS environment variables. +* support for SIGWINCH signal. +* added a handler for SIGINT for clean exits. + +#### ncurses 0.1 -> ncurses 0.2 #### Aug 14, 1992 #### +* support for color. +* support for PC graphic characters. +* lib_trace.c updated to use stdarg.h and vprintf routines. +* added gdc.c (Great Digital Clock) as an example of using color. + +#### ncurses -> ncurses 0.1 #### Jul 31, 1992 #### +* replacing sgtty stuff by termios stuff. +* ANSIfication of some functions. +* Disabling cost analysis 'cause it's incorrect. +* A quick hack for a terminfo entry. + +-- vile:txtmode: diff --git a/deps/ncurses-6.3/README b/deps/ncurses-6.3/README new file mode 100644 index 0000000..84998f2 --- /dev/null +++ b/deps/ncurses-6.3/README @@ -0,0 +1,218 @@ +------------------------------------------------------------------------------- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2012,2018 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. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.29 2021/06/17 21:20:30 tom Exp $ +------------------------------------------------------------------------------- + README file for the ncurses package + +See the file ANNOUNCE for a summary of ncurses features and ports. +See the file INSTALL for instructions on how to build and install ncurses. +See the file NEWS for a release history and bug-fix notes. +See the file TO-DO for things that still need doing, including known bugs. + +Browse the file misc/ncurses-intro.html for narrative descriptions of how +to use ncurses and the panel, menu, and form libraries. + +Browse the file doc/html/hackguide.html for a tour of the package internals. + +ROADMAP AND PACKAGE OVERVIEW: + +You should be reading this file in a directory called: ncurses-d.d, where d.d +is the current version number (see the dist.mk file in this directory for +that). There should be a number of subdirectories, including `c++', `form', +`man', `menu', `misc', `ncurses', `panel', `progs', `test', 'tack' and `Ada95'. +(The 'tack' program may be distributed separately). + +A full build/install of this package typically installs several libraries, a +handful of utilities, and a database hierarchy. Here is an inventory of the +pieces: + +The libraries are: + + libncurses.a (normal) + libncurses.so (shared) + libncurses_g.a (debug and trace code enabled) + libncurses_p.a (profiling enabled) + + libpanel.a (normal) + libpanel.so (shared) + libpanel_g.a (debug and trace code enabled) + + libmenu.a (normal) + libmenu.so (shared) + libmenu_g.a (debug enabled) + + libform.a (normal) + libform.so (shared) + libform_g.a (debug enabled) + +If you configure using the --enable-widec option, a "w" is appended to the +library names (e.g., libncursesw.a), and the resulting libraries support +wide-characters, e.g., via a UTF-8 locale. The corresponding header files +are compatible with the non-wide-character configuration; wide-character +features are provided by ifdef's in the header files. The wide-character +library interfaces are not binary-compatible with the non-wide-character +version. + +If you configure using the --enable-reentrant option, a "t" is appended to the +library names (e.g., libncursest.a) and the resulting libraries have a +different binary interface which makes the ncurses interface more "opaque". + +The ncurses libraries implement the curses API. The panel, menu and forms +libraries implement clones of the SVr4 panel, menu and forms APIs. The source +code for these lives in the `ncurses', `panel', `menu', and `form' directories +respectively. + +In the `c++' directory, you'll find code that defines an interface to the +curses, forms, menus and panels library packaged as C++ classes, and a demo program in C++ +to test it. These class definition modules are not installed by the 'make +install.libs' rule as libncurses++. + +In the `Ada95' directory, you'll find code and documentation for an +Ada95 binding of the curses API, to be used with the GNAT compiler. +This binding is built by a normal top-level `make' if configure detects +an usable version of GNAT (3.11 or above). It is not installed automatically. +See the Ada95 directory for more build and installation instructions and +for documentation of the binding. + +To do its job, the ncurses code needs your terminal type to be set in the +environment variable TERM (normally set by your OS; under UNIX, getty(1) +typically does this, but you can override it in your .profile); and, it needs a +database of terminal descriptions in which to look up your terminal type's +capabilities. + +In older (V7/BSD) versions of curses, the database was a flat text file, +/etc/termcap; in newer (USG/USL) versions, the database is a hierarchy of +fast-loading binary description blocks under /usr/lib/terminfo. These binary +blocks are compiled from an improved editable text representation called +`terminfo' format (documented in man/terminfo.5). The ncurses library can use +either /etc/termcap or the compiled binary terminfo blocks, but prefers the +second form. + +In the `misc' directory, there is a text file terminfo.src, in editable +terminfo format, which can be used to generate the terminfo binaries (that's +what make install.data does). If the package was built with the +--enable-termcap option enabled, and the ncurses library cannot find a terminfo +description for your terminal, it will fall back to the termcap file supplied +with your system (which the ncurses package installation leaves strictly +alone). + +The utilities are as follows: + + tic -- terminfo source to binary compiler + infocmp -- terminfo binary to source decompiler/comparator + clear -- emits clear-screen for current terminal + tabs -- set tabs on a terminal + tput -- shell-script access to terminal capabilities. + toe -- table of entries utility + tset -- terminal-initialization utility + +The first two (tic and infocmp) are used for manipulating terminfo +descriptions; the next two (clear and tput) are for use in shell scripts. The +last (tset) is provided for 4.4BSD compatibility. The source code for all of +these lives in the `progs' directory. + +Detailed documentation for all libraries and utilities can be found in the +`man' and `doc' directories. An HTML introduction to ncurses, panels, and +menus programming lives in the `doc/html' directory. Manpages in HTML format +are under `doc/html/man'. + +The `test' directory contains programs that can be used to verify or +demonstrate the functions of the ncurses libraries. See test/README for +descriptions of these programs. Notably, the `ncurses' utility is designed to +help you systematically exercise the library functions. + +AUTHORS: + +Pavel Curtis: + wrote the original ncurses + +Zeyd M. Ben-Halim: + port of original to Linux and many enhancements. + +Thomas Dickey (maintainer for 1.9.9g through 4.1, resuming with FSF's 5.0): + configuration scripts, porting, mods to adhere to XSI Curses in the + areas of background color, terminal modes. Also memory leak testing, + the wresize, default colors and key definition extensions and numerous + bug fixes -- more than half of those enumerated in NEWS beginning with + the internal release 1.8.9, see + + https://invisible-island.net/personal/changelogs.html + +Florian La Roche (official maintainer for FSF's ncurses 4.2) + Beginning with release 4.2, ncurses is distributed under an MIT-style + license. + +Eric S. Raymond: + the man pages, infocmp(1), tput(1), clear(1), captoinfo(1), tset(1), + toe(1), most of tic(1), trace levels, the HTML intro, wgetnstr() and + many other entry points, the cursor-movement optimization, the + scroll-pack optimizer for vertical motions, the mouse interface and + xterm mouse support, and the ncurses test program. + +Juergen Pfeifer + The menu and form libraries, C++ bindings for ncurses, menus, forms and + panels, as well as the Ada95 binding. Ongoing support for panel. + +CONTRIBUTORS: + +Alexander V. Lukyanov + for numerous fixes and improvements to the optimization logic. + +David MacKenzie + for first-class bug-chasing and methodical testing. + +Ross Ridge + for the code that hacks termcap parameterized strings into terminfo. + +Warren Tucker and Gerhard Fuernkranz, + for writing and sending the panel library. + +Hellmuth Michaelis, + for many patches and testing the optimization code. + +Eric Newton, Ulrich Drepper, and Anatoly Ivasyuk: + the C++ code. + +Jonathan Ross, + for lessons in using sed. + +Keith Bostic (maintainer of 4.4BSD curses) + for help, criticism, comments, bug-finding, and being willing to + deep-six BSD curses for this one when it grew up. + +Richard Stallman, + for his commitment to making ncurses free software. + +Countless other people have contributed by reporting bugs, sending fixes, +suggesting improvements, and generally whining about ncurses :-) + +BUGS: + See the INSTALL file for bug and developer-list addresses. + The Hacker's Guide in the doc directory includes some guidelines + on how to report bugs in ways that will get them fixed most quickly. diff --git a/deps/ncurses-6.3/README.MinGW b/deps/ncurses-6.3/README.MinGW new file mode 100644 index 0000000..3add2e7 --- /dev/null +++ b/deps/ncurses-6.3/README.MinGW @@ -0,0 +1,148 @@ +------------------------------------------------------------------------------- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 2008-2011,2012 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. -- +------------------------------------------------------------------------------- +-- $Id: README.MinGW,v 1.14 2020/09/06 22:22:44 tom Exp $ +-- Author: Juergen Pfeifer +------------------------------------------------------------------------------- + +This is work in progress, but it is in an state where one can see it +works at least on the Windows Console. + +You should install the MSYS2 package, so that you have a shell environment that +allows you to run scripts, especially configure, etc. You can get that +from + https://www.msys2.org/ + +or the individual packages from + + https://sourceforge.net/projects/msys2/files/ + +You may also use a hosted MinGW cross-compile toolchain, e.g., on Ubuntu or +ArchLinux to build the libraries and tools. + +To build ncurses for native Windows with support for the new Windows 10 Virtual +Terminal and PseudoConsole support, you should install at least version 8.0 of +the mingw-w64-x86_64-headers package as it appears to have support for the +required Windows SDK level. Please note that some of the Linux distributions +are a bit behind with respect to the required MinGW header versions and you may +not be able to properly build the libraries for current Windows 10 using these +toolchains. Although it is a bit slow, MSYS2 on Windows 10 64-Bit is the +authoritative build environment for the MinGW version of ncurses. + +Using MinGW is a pragmatic decision, it is the easiest way to port this +heavily UNIX based sourcebase to native Windows. The goal is of course +to provide the includes, libraries and DLLs to be used with the more +common traditional development environments on Windows, mainly with +Microsoft Visual Studio. + +The TERM environment variable must be set especially to activate the Windows +console-driver. The driver checks if TERM is set to "#win32con" (explicit +use) or if TERM is unset or empty (implicit). + +Beginning with build 17763 (Fall 2018 update), Windows 10 supports ANSI escape +sequences (Virtual Terminal support). If ncurses detects this or a later +Windows 10 version, the interpretation of the implicit TERM setting (which +means: TERM is not set or empty) changes. In this case, TERM is to be assumed +to be "ms-terminal" and ncurses acts using the regular terminfo based driver, +thus acting like a regular Terminal we all know from UNIX like environments. + +This code requires WindowsNT 6.0 or better, which means on the client +Windows Vista or better, on the server Windows Server 2008 or better. + +If running on Windows 10 Build 17763 or later is detected, any program +spawning a subprocess running a ncurses program should use the new +PseudoConsole support, which provides what we know as pty from the UNIX +world also for Windows. Using the CreatePseudoConsole API +(see https://docs.microsoft.com/en-us/windows/console/createpseudoconsole) +in the calling process, it is guaranteed that the called ncurses program has +a console that is required by its implementation, even if the calling program +is NOT a console program, e.g., MSYS2's own mintty Terminal emulator. + +In the current MSYS2/minGW setup, building MinGW shared libraries with +libtool for ncurses seems to be broken, so I recommend NOT to use libtool. + +To build a modern but still small footprint ncurses that provides +hooks for interop, I recommend using these options: + + --without-libtool + --disable-home-terminfo + --enable-database + --disable-termcap + --enable-sp-funcs + --enable-term-driver + --enable-interop + +This is the configuration command line which I am using at the moment +(assuming environment variable MINGW_ROOT holds the root directory name of +your MinGW build): + +./configure \ + --prefix=/mingw64 \ + --without-cxx \ + --without-ada \ + --enable-warnings \ + --enable-assertions \ + --enable-exp-win32 \ + --enable-ext-funcs \ + --disable-home-terminfo \ + --disable-echo \ + --disable-getcap \ + --disable-hard-tabs \ + --disable-leaks \ + --disable-macros \ + --disable-overwrite \ + --enable-opaque-curses \ + --enable-opaque-panel \ + --enable-opaque-menu \ + --enable-opaque-form \ + --enable-database \ + --enable-sp-funcs \ + --enable-term-driver \ + --enable-interop \ + --disable-termcap \ + --enable-database \ + --with-progs \ + --without-libtool \ + --enable-pc-files \ + --with-shared \ + --with-normal \ + --without-debug \ + --with-fallbacks=ms-terminal \ + --without-manpages + +Please note that it is also necessary to set this environment variable: + +export PATH_SEPARATOR=";" + +in order to parse the terminfo paths correctly. Terminfo paths should +always be separated by a semicolon, even when running under MSYS2. + +All the options above are - like the whole Windows support - +experimental. + +-- vile:txtmode diff --git a/deps/ncurses-5.9/README.emx b/deps/ncurses-6.3/README.emx similarity index 92% rename from deps/ncurses-5.9/README.emx rename to deps/ncurses-6.3/README.emx index 4c04816..666eaec 100644 --- a/deps/ncurses-5.9/README.emx +++ b/deps/ncurses-6.3/README.emx @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 1998-2005,2006 Free Software Foundation, Inc. -- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2006,2018 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 -- @@ -25,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: README.emx,v 1.8 2006/04/22 22:19:37 tom Exp $ +-- $Id: README.emx,v 1.12 2021/06/17 21:20:30 tom Exp $ -- Author: Thomas Dickey ------------------------------------------------------------------------------- @@ -33,7 +34,7 @@ You can build ncurses on OS/2 in the EMX environment. But you must build and acquire tools. Not all of the tools distributed with EMX work properly, and some additional ones are required. -First, the configure script distributed with ncurses will not run as-is in EMX. +First, the configure script distributed with ncurses will not run as-is in EMX. You can generate a new one if you have autoconf built for EMX. You will need the EMX development tools, of course. Get these programs to start: @@ -43,8 +44,8 @@ the EMX development tools, of course. Get these programs to start: Apply the autoconf patches from - http://invisible-island.net/autoconf - ftp://invisible-island.net/autoconf + https://invisible-island.net/autoconf + ftp://ftp.invisible-island.net/autoconf These are ordered by date: @@ -64,7 +65,7 @@ may fix these problems: + I also built from sources (because the distributed binaries did not work) the cmp, diff programs. - + Other required utilities such as ar, cat, chmod, cp, gawk, grep, mv, ls, rm, mkdir, sed, sort and tr worked. diff --git a/deps/ncurses-5.9/TO-DO b/deps/ncurses-6.3/TO-DO similarity index 97% rename from deps/ncurses-5.9/TO-DO rename to deps/ncurses-6.3/TO-DO index 5df7f47..f021a1b 100644 --- a/deps/ncurses-5.9/TO-DO +++ b/deps/ncurses-6.3/TO-DO @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2010,2011 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 -- @@ -25,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: TO-DO,v 1.57 2011/03/28 00:23:02 tom Exp $ +-- $Id: TO-DO,v 1.58 2020/02/02 23:34:34 tom Exp $ ------------------------------------------------------------------------------- SHORT-TERM TO-DO ITEMS: diff --git a/deps/ncurses-6.3/VERSION b/deps/ncurses-6.3/VERSION new file mode 100644 index 0000000..3162fab --- /dev/null +++ b/deps/ncurses-6.3/VERSION @@ -0,0 +1 @@ +5:0:10 6.3 20211021 diff --git a/deps/ncurses-6.3/aclocal.m4 b/deps/ncurses-6.3/aclocal.m4 new file mode 100644 index 0000000..96cae09 --- /dev/null +++ b/deps/ncurses-6.3/aclocal.m4 @@ -0,0 +1,9822 @@ +dnl*************************************************************************** +dnl Copyright 2018-2020,2021 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 * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl Author: Thomas E. Dickey 1995-on +dnl +dnl $Id: aclocal.m4,v 1.981 2021/10/17 15:14:04 tom Exp $ +dnl Macros used in NCURSES auto-configuration script. +dnl +dnl These macros are maintained separately from NCURSES. The copyright on +dnl this file applies to the aggregation of macros and does not affect use of +dnl these macros in other applications. +dnl +dnl See these pages for additional information: +dnl https://invisible-island.net/autoconf/ +dnl https://invisible-island.net/autoconf/my-autoconf.html +dnl +dnl --------------------------------------------------------------------------- +dnl --------------------------------------------------------------------------- +dnl AM_LANGINFO_CODESET version: 6 updated: 2021/01/01 16:53:59 +dnl ------------------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl codeset.m4 +dnl ==================== +dnl serial AM1 +dnl +dnl From Bruno Haible. +AC_DEFUN([AM_LANGINFO_CODESET], +[ +AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include ], + [char* cs = nl_langinfo(CODESET); (void)cs], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test "$am_cv_langinfo_codeset" = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have and nl_langinfo(CODESET).]) + fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ABI_DEFAULTS version: 2 updated: 2015/06/06 13:49:58 +dnl --------------- +dnl Provide configure-script defaults for different ncurses ABIs. +AC_DEFUN([CF_ABI_DEFAULTS],[ +AC_REQUIRE([CF_NCURSES_WITH_ABI_VERSION]) +case x$cf_cv_abi_version in +(x[[6789]]) + cf_dft_ext_colors=yes + cf_dft_ext_const=yes + cf_dft_ext_mouse=yes + cf_dft_ext_putwin=yes + cf_dft_ext_spfuncs=yes + cf_dft_filter_syms=yes + cf_dft_chtype=uint32_t + cf_dft_mmask_t=uint32_t + cf_dft_interop=yes + cf_dft_tparm_arg=intptr_t + cf_dft_with_lp64=yes + ;; +(*) + cf_dft_ext_colors=no + cf_dft_ext_const=no + cf_dft_ext_mouse=no + cf_dft_ext_putwin=no + cf_dft_ext_spfuncs=no + cf_dft_filter_syms=no + cf_dft_chtype=auto + cf_dft_mmask_t=auto + cf_dft_interop=no + cf_dft_tparm_arg=long + cf_dft_with_lp64=no + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 +dnl ------------------ +dnl Conditionally generate script according to whether we're using a given autoconf. +dnl +dnl $1 = version to compare against +dnl $2 = code to use if AC_ACVERSION is at least as high as $1. +dnl $3 = code to use if AC_ACVERSION is older than $1. +define([CF_ACVERSION_CHECK], +[ +ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl +ifdef([m4_version_compare], +[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], +[CF_ACVERSION_COMPARE( +AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), +AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 +dnl -------------------- +dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, +dnl MAJOR2, MINOR2, TERNARY2, +dnl PRINTABLE2, not FOUND, FOUND) +define([CF_ACVERSION_COMPARE], +[ifelse(builtin([eval], [$2 < $5]), 1, +[ifelse([$8], , ,[$8])], +[ifelse([$9], , ,[$9])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADA_INCLUDE_DIRS version: 8 updated: 2013/10/14 04:24:07 +dnl ------------------- +dnl Construct the list of include-options for the C programs in the Ada95 +dnl binding. +AC_DEFUN([CF_ADA_INCLUDE_DIRS], +[ +ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" +if test "$srcdir" != "."; then + ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" +fi +if test "$GCC" != yes; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" +elif test "$includedir" != "/usr/include"; then + if test "$includedir" = '${prefix}/include' ; then + if test x$prefix != x/usr ; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi + else + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi +fi +AC_SUBST(ACPPFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_ADAFLAGS version: 1 updated: 2010/06/19 15:22:18 +dnl --------------- +dnl Add to $ADAFLAGS, which is substituted into makefile and scripts. +AC_DEFUN([CF_ADD_ADAFLAGS],[ + ADAFLAGS="$ADAFLAGS $1" + AC_SUBST(ADAFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15 +dnl ------------- +dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS +dnl $1 = flags to add +dnl $2 = if given makes this macro verbose. +dnl +dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, +dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily +dnl confused by the quotes (which require backslashes to keep them usable). +AC_DEFUN([CF_ADD_CFLAGS], +[ +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $1 +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 + CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + CF_APPEND_TEXT(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/=.*//'` + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) + ;; + esac + CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) + ;; + esac + ;; + (*) + CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) + ;; + esac + ;; +(yes) + CF_APPEND_TEXT(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 + ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) + CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) +fi + +if test -n "$cf_new_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) + CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) +fi + +if test -n "$cf_new_extra_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) + CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) +fi + +AC_SUBST(EXTRA_CPPFLAGS) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_CXXFLAGS version: 1 updated: 2020/04/04 16:16:13 +dnl --------------- +dnl Copy non-preprocessor flags to $CXXFLAGS, preprocessor flags to $CPPFLAGS +dnl The second parameter if given makes this macro verbose. +dnl +dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, +dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily +dnl confused by the quotes (which require backslashes to keep them usable). +AC_DEFUN([CF_ADD_CXXFLAGS], +[ +cf_save_CXXFLAGS="$CFLAGS" +CFLAGS="$CXXFLAGS" +CF_ADD_CFLAGS($1 ifelse($2,,,[,$2])) +CXXFLAGS="$CFLAGS" +CFLAGS="$cf_save_CXXFLAGS" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04 +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, +dnl but old versions (and some misinstalled ones) need that. To make things +dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to +dnl the include-path). +AC_DEFUN([CF_ADD_INCDIR], +[ +if test -n "$1" ; then + for cf_add_incdir in $1 + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir) + AC_TRY_COMPILE([#include ], + [printf("Hello")], + [], + [cf_have_incdir=yes]) + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + CF_VERBOSE(adding $cf_add_incdir to include-path) + ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 +dnl ---------- +dnl Add a library, used to enforce consistency. +dnl +dnl $1 = library to add, without the "-l" +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42 +dnl ------------- +dnl Adds to the library-path +dnl +dnl Some machines have trouble with multiple -L options. +dnl +dnl $1 is the (list of) directory(s) to add +dnl $2 is the optional name of the variable to update (default LDFLAGS) +dnl +AC_DEFUN([CF_ADD_LIBDIR], +[ +if test -n "$1" ; then + for cf_add_libdir in $1 + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + CF_VERBOSE(adding $cf_add_libdir to library-path) + ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])" + fi + fi + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33 +dnl ----------- +dnl Add one or more libraries, used to enforce consistency. Libraries are +dnl prepended to an existing list, since their dependencies are assumed to +dnl already exist in the list. +dnl +dnl $1 = libraries to add, with the "-l", etc. +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIBS],[ +cf_add_libs="[$]ifelse($2,,LIBS,[$2])" +# reverse order +cf_add_0lib= +for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +ifelse($2,,LIBS,[$2])="$cf_add_libs" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42 +dnl ------------------ +dnl Append to a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +dnl $4 = the directory under which we will test for subdirectories +dnl $5 = a directory that we do not want $4 to match +AC_DEFUN([CF_ADD_SUBDIR_PATH], +[ +test "x$4" != "x$5" && \ +test -d "$4" && \ +ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) { + test -n "$verbose" && echo " ... testing for $3-directories under $4" + test -d "$4/$3" && $1="[$]$1 $4/$3" + test -d "$4/$3/$2" && $1="[$]$1 $4/$3/$2" + test -d "$4/$3/$2/$3" && $1="[$]$1 $4/$3/$2/$3" + test -d "$4/$2/$3" && $1="[$]$1 $4/$2/$3" + test -d "$4/$2/$3/$2" && $1="[$]$1 $4/$2/$3/$2" +} +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40 +dnl ---------------- +dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions. +dnl $1 = flags to add +dnl $2 = if given makes this macro verbose. +define([CF_APPEND_CFLAGS], +[ +for cf_add_cflags in $1 +do + case "x$cf_add_cflags" in + (x-[[DU]]*) + CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2]) + CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2]) + ;; + esac + CF_ADD_CFLAGS([$cf_add_cflags],[$2]) +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 +dnl -------------- +dnl use this macro for appending text without introducing an extra blank at +dnl the beginning +define([CF_APPEND_TEXT], +[ + test -n "[$]$1" && $1="[$]$1 " + $1="[$]{$1}$2" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 +dnl -------------- +dnl Allow user to disable a normally-on option. +AC_DEFUN([CF_ARG_DISABLE], +[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 +dnl ------------- +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 ------------- +dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus +dnl values. +dnl +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 $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) + if test "$enableval" != "$5" ; then +ifelse([$3],,[ :]dnl +,[ $3]) ifelse([$4],,,[ + else + $4]) + fi],[enableval=$5 ifelse([$4],,,[ + $4 +])dnl +])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_AR_FLAGS version: 9 updated: 2021/01/01 13:31:04 +dnl ----------- +dnl Check for suitable "ar" (archiver) options for updating an archive. +dnl +dnl In particular, handle some obsolete cases where the "-" might be omitted, +dnl as well as a workaround for breakage of make's archive rules by the GNU +dnl binutils "ar" program. +AC_DEFUN([CF_AR_FLAGS],[ +AC_REQUIRE([CF_PROG_AR]) + +AC_CACHE_CHECK(for options to update archives, cf_cv_ar_flags,[ + case "$cf_cv_system_name" in + (*-msvc*) + cf_cv_ar_flags='' + cat >mk_static_lib.sh <<-EOF + #!$SHELL + MSVC_BIN="[$]AR" + out="\[$]1" + shift + exec \[$]MSVC_BIN -out:"\[$]out" \[$]@ + EOF + chmod +x mk_static_lib.sh + AR=`pwd`/mk_static_lib.sh + ;; + (*) + cf_cv_ar_flags=unknown + for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv + do + + # check if $ARFLAGS already contains this choice + if test "x$ARFLAGS" != "x" ; then + cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` + if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then + cf_cv_ar_flags= + break + fi + fi + + rm -f "conftest.$ac_cv_objext" + rm -f conftest.a + + cat >"conftest.$ac_ext" <&AC_FD_CC + $AR $ARFLAGS "$cf_ar_flags" conftest.a "conftest.$ac_cv_objext" 2>&AC_FD_CC 1>/dev/null + if test -f conftest.a ; then + cf_cv_ar_flags="$cf_ar_flags" + break + fi + else + CF_VERBOSE(cannot compile test-program) + break + fi + done + rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext" + ;; + esac +]) + +if test -n "$ARFLAGS" ; then + if test -n "$cf_cv_ar_flags" ; then + ARFLAGS="$ARFLAGS $cf_cv_ar_flags" + fi +else + ARFLAGS=$cf_cv_ar_flags +fi + +AC_SUBST(ARFLAGS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_AWK_BIG_PRINTF version: 5 updated: 2015/04/17 21:13:04 +dnl ----------------- +dnl Check if awk can handle big strings using printf. Some older versions of +dnl awk choke on large strings passed via "%s". +dnl +dnl $1 = desired string size +dnl $2 = variable to set with result +AC_DEFUN([CF_AWK_BIG_PRINTF], +[ + case x$AWK in + (x) + eval $2=no + ;; + (*) + if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < $1) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \ + | $AWK '{ printf "%d\n", length([$]0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ([$]0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then + eval $2=yes + else + eval $2=no + fi + ;; + esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_BOOL_DECL version: 8 updated: 2004/01/30 15:51:18 +dnl ------------ +dnl Test if 'bool' is a builtin type in the configured 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], + [cf_cv_header_stdbool_h=0], + [AC_TRY_COMPILE([ +#ifndef __BEOS__ +#include +#endif +],[bool foo = false], + [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 +#include +],[bool x = false], + [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 +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_BOOL_SIZE version: 18 updated: 2021/09/04 06:35:04 +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. +dnl +dnl If the current compiler is C rather than C++, we get the bool definition +dnl from . +AC_DEFUN([CF_BOOL_SIZE], +[ +AC_CHECK_SIZEOF(bool,,[ +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif +]) + +AC_CACHE_CHECK(for type of bool, cf_cv_type_of_bool,[ + rm -f cf_test.out + AC_TRY_RUN([ +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int main(void) +{ + FILE *fp = fopen("cf_test.out", "w"); + if (fp != 0) { + bool x = true; + if ((bool)(-x) >= 0) + fputs("unsigned ", fp); + if (sizeof(x) == sizeof(int)) fputs("int", fp); + else if (sizeof(x) == sizeof(char)) fputs("char", fp); + else if (sizeof(x) == sizeof(short))fputs("short",fp); + else if (sizeof(x) == sizeof(long)) fputs("long", fp); + fclose(fp); + } + ${cf_cv_main_return:-return}(0); +} + ], + [cf_cv_type_of_bool=`cat cf_test.out` + if test -z "$cf_cv_type_of_bool"; then + cf_cv_type_of_bool=unknown + fi], + [cf_cv_type_of_bool=unknown], + [ + case x$ac_cv_sizeof_bool in + (x1) cf_cv_type_of_bool="unsigned char";; + (x2) cf_cv_type_of_bool="unsigned short";; + (x4) cf_cv_type_of_bool="unsigned int";; + (x8) cf_cv_type_of_bool="unsigned long";; + (*) cf_cv_type_of_bool=unknown;; + esac + ]) + rm -f cf_test.out +]) + +if test "$cf_cv_type_of_bool" = unknown ; then + case .$NCURSES_BOOL in + (.auto|.) NCURSES_BOOL=unsigned;; + esac + AC_MSG_WARN(Assuming $NCURSES_BOOL for type of bool) + cf_cv_type_of_bool=$NCURSES_BOOL +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_BUILD_CC version: 9 updated: 2021/01/02 09:31:20 +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 +dnl compiler, etc., but we need a build compiler to generate parts of the +dnl source. +dnl +dnl $1 = default for $CPPFLAGS +dnl $2 = default for $LIBS +AC_DEFUN([CF_BUILD_CC],[ +CF_ACVERSION_CHECK(2.52,, + [AC_REQUIRE([CF_PROG_EXT])]) +if test "$cross_compiling" = yes ; then + + # defaults that we might want to override + : ${BUILD_CFLAGS:=''} + : ${BUILD_CPPFLAGS:='ifelse([$1],,,[$1])'} + : ${BUILD_LDFLAGS:=''} + : ${BUILD_LIBS:='ifelse([$2],,,[$2])'} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} + + AC_ARG_WITH(build-cc, + [ --with-build-cc=XXX the build C compiler ($BUILD_CC)], + [BUILD_CC="$withval"], + [AC_CHECK_PROGS(BUILD_CC, [gcc clang c99 c89 cc cl],none)]) + AC_MSG_CHECKING(for native build C compiler) + AC_MSG_RESULT($BUILD_CC) + + AC_MSG_CHECKING(for native build C preprocessor) + AC_ARG_WITH(build-cpp, + [ --with-build-cpp=XXX the build C preprocessor ($BUILD_CPP)], + [BUILD_CPP="$withval"], + [BUILD_CPP='${BUILD_CC} -E']) + AC_MSG_RESULT($BUILD_CPP) + + AC_MSG_CHECKING(for native build C flags) + AC_ARG_WITH(build-cflags, + [ --with-build-cflags=XXX the build C compiler-flags ($BUILD_CFLAGS)], + [BUILD_CFLAGS="$withval"]) + AC_MSG_RESULT($BUILD_CFLAGS) + + AC_MSG_CHECKING(for native build C preprocessor-flags) + AC_ARG_WITH(build-cppflags, + [ --with-build-cppflags=XXX the build C preprocessor-flags ($BUILD_CPPFLAGS)], + [BUILD_CPPFLAGS="$withval"]) + AC_MSG_RESULT($BUILD_CPPFLAGS) + + AC_MSG_CHECKING(for native build linker-flags) + AC_ARG_WITH(build-ldflags, + [ --with-build-ldflags=XXX the build linker-flags ($BUILD_LDFLAGS)], + [BUILD_LDFLAGS="$withval"]) + AC_MSG_RESULT($BUILD_LDFLAGS) + + AC_MSG_CHECKING(for native build linker-libraries) + AC_ARG_WITH(build-libs, + [ --with-build-libs=XXX the build libraries (${BUILD_LIBS})], + [BUILD_LIBS="$withval"]) + AC_MSG_RESULT($BUILD_LIBS) + + # this assumes we're on Unix. + BUILD_EXEEXT= + BUILD_OBJEXT=o + + : ${BUILD_CC:='${CC}'} + + if { test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}'; } ; then + AC_MSG_ERROR([Cross-build requires two compilers. +Use --with-build-cc to specify the native compiler.]) + fi + +else + : ${BUILD_CC:='${CC}'} + : ${BUILD_CPP:='${CPP}'} + : ${BUILD_CFLAGS:='${CFLAGS}'} + : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} + : ${BUILD_LDFLAGS:='${LDFLAGS}'} + : ${BUILD_LIBS:='${LIBS}'} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} +fi + +AC_SUBST(BUILD_CC) +AC_SUBST(BUILD_CPP) +AC_SUBST(BUILD_CFLAGS) +AC_SUBST(BUILD_CPPFLAGS) +AC_SUBST(BUILD_LDFLAGS) +AC_SUBST(BUILD_LIBS) +AC_SUBST(BUILD_EXEEXT) +AC_SUBST(BUILD_OBJEXT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23 +dnl --------------- +AC_DEFUN([CF_C11_NORETURN], +[ +AC_MSG_CHECKING(if you want to use C11 _Noreturn feature) +CF_ARG_ENABLE(stdnoreturn, + [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics], + [enable_stdnoreturn=yes], + [enable_stdnoreturn=no]) +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([ +#include +#include +#include +static _Noreturn void giveup(void) { exit(0); } + ], + [if (feof(stdin)) giveup()], + cf_cv_c11_noreturn=yes, + cf_cv_c11_noreturn=no) + ]) +else + cf_cv_c11_noreturn=no, +fi + +if test "$cf_cv_c11_noreturn" = yes; then + AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if header is available and working]) + AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported]) + HAVE_STDNORETURN_H=1 +else + HAVE_STDNORETURN_H=0 +fi + +AC_SUBST(HAVE_STDNORETURN_H) +AC_SUBST(STDC_NORETURN) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20 +dnl --------------- +dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content +dnl into CC. This will not help with broken scripts that wrap the compiler +dnl with options, but eliminates a more common category of user confusion. +dnl +dnl In particular, it addresses the problem of being able to run the C +dnl preprocessor in a consistent manner. +dnl +dnl Caveat: this also disallows blanks in the pathname for the compiler, but +dnl the nuisance of having inconsistent settings for compiler and preprocessor +dnl outweighs that limitation. +AC_DEFUN([CF_CC_ENV_FLAGS], +[ +# This should have been defined by AC_PROG_CC +: "${CC:=cc}" + +AC_MSG_CHECKING(\$CFLAGS variable) +case "x$CFLAGS" in +(*-[[IUD]]*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options) + cf_flags="$CFLAGS" + CFLAGS= + for cf_arg in $cf_flags + do + CF_ADD_CFLAGS($cf_arg) + done + ;; +(*) + AC_MSG_RESULT(ok) + ;; +esac + +AC_MSG_CHECKING(\$CC variable) +case "$CC" in +(*[[\ \ ]]-*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options) + # humor him... + cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[[IUDfgOW]]*) + CF_ADD_CFLAGS($cf_arg) + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + CF_VERBOSE(resulting CC: '$CC') + CF_VERBOSE(resulting CFLAGS: '$CFLAGS') + CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') + ;; +(*) + AC_MSG_RESULT(ok) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CFG_DEFAULTS version: 16 updated: 2021/01/04 19:33:05 +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 +dnl look for: +dnl 1. the prefix (e.g., /usr) +dnl 2. the header files (e.g., /usr/include/ncurses) +dnl We'll look for a previous installation of ncurses and use the same defaults. +dnl +dnl We don't use AC_PREFIX_DEFAULT, because it gets evaluated too soon, and +dnl we don't use AC_PREFIX_PROGRAM, because we cannot distinguish ncurses's +dnl programs from a vendor's. +AC_DEFUN([CF_CFG_DEFAULTS], +[AC_REQUIRE([AC_PROG_FGREP])dnl + +AC_MSG_CHECKING(for prefix) +if test "x$prefix" = "xNONE" ; then + case "$cf_cv_system_name" in + # non-vendor systems don't have a conflict + (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*) + prefix=/usr + ;; + (*) prefix=$ac_default_prefix + ;; + esac +fi +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 +for cf_symbol in \ + "$includedir" \ + "$includedir/ncurses" \ + "$prefix/include" \ + "$prefix/include/ncurses" \ + /usr/local/include \ + /usr/local/include/ncurses \ + /usr/include \ + /usr/include/ncurses +do + cf_dir=`eval echo "$cf_symbol"` + 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 + break + fi + fi + test -n "$verbose" && echo " tested $cf_dir" 1>&AC_FD_MSG +done +AC_MSG_RESULT($includedir) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CGETENT version: 6 updated: 2017/01/21 11:06:25 +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([ +#include ],[ + 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]) +]) + +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([ +#pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers" +#include ],[ + char temp[128]; + char *buf = temp; +#ifndef _NETBSD_SOURCE /* given, since April 2004 in stdlib.h */ + const char *db_array = temp; + cgetent(&buf, &db_array, "vt100"); +#endif + cgetcap(buf, "tc", '='); + cgetmatch(buf, "tc"); + ], + [cf_cv_cgetent_const=yes], + [cf_cv_cgetent_const=no]) +]) + if test "$cf_cv_cgetent_const" = yes + then + AC_DEFINE_UNQUOTED(CGETENT_CONST,const,[Define to const if needed for some BSD cgetent variations]) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15 +dnl -------------- +dnl Check if we're accidentally using a cache from a different machine. +dnl Derive the system name, as a check for reusing the autoconf cache. +dnl +dnl If we've packaged config.guess and config.sub, run that (since it does a +dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow +dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM +dnl which is useful in cross-compiles. +dnl +dnl Note: we would use $ac_config_sub, but that is one of the places where +dnl autoconf 2.5x broke compatibility with autoconf 2.13 +AC_DEFUN([CF_CHECK_CACHE], +[ +if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then + ifelse([$1],,[AC_CANONICAL_HOST],[$1]) + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) +AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) + +if test ".$system_name" != ".$cf_cv_system_name" ; then + AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) + AC_MSG_ERROR("Please remove config.cache and try again.") +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_ENVIRON version: 3 updated: 2010/05/26 16:44:57 +dnl ---------------- +dnl Check for data that is usually declared in , e.g., the 'environ' +dnl variable. Define a DECL_xxx symbol if we must declare it ourselves. +dnl +dnl $1 = the name to check +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([ +#ifdef HAVE_STDLIB_H +#include +#endif +#include ], + ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1, + [cf_cv_dcl_$1=yes], + [cf_cv_dcl_$1=no]) +]) + +if test "$cf_cv_dcl_$1" = no ; then + CF_UPPER(cf_result,decl_$1) + AC_DEFINE_UNQUOTED($cf_result) +fi + +# It's possible (for near-UNIX clones) that the data doesn't exist +CF_CHECK_EXTERN_DATA($1,ifelse([$2],,int,[$2])) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_ERRNO version: 13 updated: 2020/03/10 18:53:47 +dnl -------------- +dnl Check for data that is usually declared in or , e.g., +dnl the 'errno' variable. Define a DECL_xxx symbol if we must declare it +dnl ourselves. +dnl +dnl $1 = the name to check +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([ +#ifdef HAVE_STDLIB_H +#include +#endif +#include +#include +#include ], + ifelse([$2],,int,[$2]) x = (ifelse([$2],,int,[$2])) $1; (void)x, + [cf_cv_dcl_$1=yes], + [cf_cv_dcl_$1=no]) +]) + +if test "$cf_cv_dcl_$1" = no ; then + CF_UPPER(cf_result,decl_$1) + AC_DEFINE_UNQUOTED($cf_result) +fi + +# It's possible (for near-UNIX clones) that the data doesn't exist +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 -------------------- +dnl Check for existence of external data in the current set of libraries. If +dnl we can modify it, it is real enough. +dnl $1 = the name to check +dnl $2 = its type +AC_DEFUN([CF_CHECK_EXTERN_DATA], +[ +AC_CACHE_CHECK(if external $1 exists, cf_cv_have_$1,[ + AC_TRY_LINK([ +#undef $1 +extern $2 $1; +], + [$1 = 2], + [cf_cv_have_$1=yes], + [cf_cv_have_$1=no]) +]) + +if test "$cf_cv_have_$1" = yes ; then + CF_UPPER(cf_result,have_$1) + AC_DEFINE_UNQUOTED($cf_result) +fi + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_FVISIBILITY version: 2 updated: 2020/04/04 16:16:13 +dnl -------------------- +dnl Check whether the compiler understands -fvisibility=hidden +dnl +dnl $1 = compiler +dnl $2 = compiler-flags variable name +dnl $3 = cache variable to set +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([ +__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: 2 updated: 2021/01/02 17:09:14 +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. +AC_DEFUN([CF_CHECK_GETENV], +[ +AC_REQUIRE([CF_CHECK_ENVIRON]) +AC_CHECK_FUNC( getenv, ,, AC_MSG_ERROR(getenv not found) ) +AC_CHECK_FUNCS( putenv setenv strdup ) +AC_CACHE_CHECK(if getenv returns consistent values,cf_cv_consistent_getenv,[ +AC_TRY_RUN([ +#include +#include +#include +#include +#include + +#if defined(HAVE_ENVIRON) && defined(DECL_ENVIRON) && !defined(environ) +extern char **environ; /* POSIX, but some systems are not... */ +#endif + +#if defined(HAVE_STRDUP) +#define str_alloc(s) strdup(s) +#else +#define str_alloc(s) strcpy(malloc(strlen(s) + 1, s)) +#endif + +static void set_value(const char *name, const char *value) +{ +#if defined(HAVE_SETENV) + setenv(name, value, 1); +#elif defined(HAVE_PUTENV) + char buffer[1024]; + sprintf(buffer, "%s=%s", name, value); + putenv(str_alloc(buffer)); +#else +#error neither putenv/setenv found +#endif +} +int main(void) +{ + int pass; + size_t numenv, limit, j; + char **mynames; + char **myvalues; + char **mypointer; + char *equals; + for (numenv = 0; environ[numenv]; ++numenv) ; + limit = numenv + 10; + mynames = (char **) calloc(limit + 1, sizeof(char *)); + myvalues = (char **) calloc(limit + 1, sizeof(char *)); + mypointer = (char **) calloc(limit + 1, sizeof(char *)); +#if defined(HAVE_ENVIRON) + for (j = 0; environ[j]; ++j) { + mynames[j] = str_alloc(environ[j]); + equals = strchr(mynames[j], '='); + if (equals != 0) { + *equals++ = '\\0'; + myvalues[j] = str_alloc(equals); + } else { + myvalues[j] = str_alloc(""); + } + } +#endif + for (j = numenv; j < limit; ++j) { + char name[80]; + char value[80]; + size_t found; + size_t k = 0; + do { + size_t jk; + found = 0; + sprintf(name, "TERM%lu", (unsigned long) k); + for (jk = 0; jk < j; ++jk) { + if (!strcmp(name, mynames[jk])) { + found = 1; + ++k; + break; + } + } + } while (found); + sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]); + set_value(name, value); + mynames[j] = str_alloc(name); + myvalues[j] = str_alloc(value); + } + for (pass = 0; pass < 3; ++pass) { + for (j = 0; j < limit; ++j) { + char *value = getenv(mynames[j]); + if (pass) { + if (value == 0) { + fprintf(stderr, "getenv returned null for %s\\n", mynames[j]); + ${cf_cv_main_return:-return}(1); + } else if (value != mypointer[j]) { + fprintf(stderr, "getenv returned different pointer for %s\\n", mynames[j]); + ${cf_cv_main_return:-return}(1); + } else if (strcmp(value, myvalues[j])) { + fprintf(stderr, "getenv returned different value for %s\\n", mynames[j]); + ${cf_cv_main_return:-return}(1); + } + } else { + size_t k; + mypointer[j] = value; + for (k = 0; k < j; ++k) { + if (mypointer[j] == mypointer[k]) { + fprintf(stderr, "getenv returned same pointer for %s and %s\\n", mynames[j], mynames[k]); + ${cf_cv_main_return:-return}(1); + } + } + } + } + } + ${cf_cv_main_return:-return}(0); +} +], +[cf_cv_consistent_getenv=yes], +[cf_cv_consistent_getenv=no], +[cf_cv_consistent_getenv=unknown]) +]) + +if test "x$cf_cv_consistent_getenv" = xno +then + AC_DEFINE(HAVE_CONSISTENT_GETENV,1,[Define to 1 if getenv repeatably returns the same value for a given name]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_GNAT_VERSION version: 4 updated: 2021/01/01 13:31:04 +dnl --------------------- +AC_DEFUN([CF_CHECK_GNAT_VERSION], +[ +AC_REQUIRE([CF_GNAT_VERSION]) +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 + ;; +(*) + AC_MSG_WARN(Unsupported GNAT version $cf_cv_gnat_version. We require 3.11 or better. Disabling Ada95 binding.) + cf_cv_prog_gnat_correct=no + ;; +esac +]) +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_GPM_WGETCH version: 6 updated: 2021/01/04 18:48:01 +dnl ------------------- +dnl Check if GPM is already linked with curses. If so - and if the linkage +dnl is not "weak" - warn about this because it can create problems linking +dnl applications with ncurses. +AC_DEFUN([CF_CHECK_GPM_WGETCH],[ +AC_REQUIRE([AC_PROG_EGREP])dnl + +AC_CHECK_LIB(gpm,Gpm_Wgetch,[ + +AC_CACHE_CHECK(if GPM is weakly bound to curses library, cf_cv_check_gpm_wgetch,[ +cf_cv_check_gpm_wgetch=unknown +if test "$cross_compiling" != yes ; then + +cat >conftest.$ac_ext < +int main(void) +{ + Gpm_Wgetch(); + ${cf_cv_main_return:-return}(0); +} +CF_EOF + + cf_save_LIBS="$LIBS" + # This only works if we can look at the symbol table. If a shared + # library is stripped for install, we cannot use that. So we're forced + # to rely on the static library, noting that some packagers may not + # include it. + LIBS="-static -lgpm -dynamic $LIBS" + if AC_TRY_EVAL(ac_compile) ; then + if AC_TRY_EVAL(ac_link) ; then + cf_cv_check_gpm_wgetch="`nm \"conftest$ac_exeext\" | ${EGREP-egrep} '\' | ${EGREP-egrep} '\<[[vVwW]]\>'`" + test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes + test -z "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=no + fi + fi + rm -rf ./conftest* + LIBS="$cf_save_LIBS" +fi +]) + +if test "$cf_cv_check_gpm_wgetch" != yes ; then + AC_MSG_WARN(GPM library is already linked with curses - read the FAQ) +fi +])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_LIBTOOL_VERSION version: 2 updated: 2021/05/01 16:24:34 +dnl ------------------------ +dnl Show the version of libtool +dnl +dnl Save the version in a cache variable - this is not entirely a good thing, +dnl but the version string from libtool is very ugly, and for bug reports it +dnl might be useful to have the original string. +dnl +dnl There is an imitation in OpenBSD, which has no apparent use other than to +dnl deny that it is GNU libtool. Just ignore it. +AC_DEFUN([CF_CHECK_LIBTOOL_VERSION],[ +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + AC_MSG_CHECKING(version of $LIBTOOL) + CF_LIBTOOL_VERSION + AC_MSG_RESULT($cf_cv_libtool_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'` + case "x$cf_check_libtool_version" in + (*...GNU-libtool...*) + ;; + (*) + AC_MSG_ERROR(This is not GNU libtool) + ;; + esac + 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: 3 updated: 2021/01/01 13:31:04 +dnl ---------------- +dnl Check if wchar.h can be used, i.e., without defining _XOPEN_SOURCE_EXTENDED +AC_DEFUN([CF_CHECK_WCHAR_H],[ +AC_CHECK_HEADERS( \ +wchar.h \ +wctype.h \ +) +AC_CACHE_CHECK(if wchar.h can be used as is,cf_cv_wchar_h_okay,[ +AC_TRY_COMPILE( +[ +#include +#ifdef HAVE_WCHAR_H +#include +#endif +#ifdef HAVE_WCTYPE_H +#include +#endif +],[ + wint_t foo = 0; + int bar = iswpunct(foo)], + [cf_cv_wchar_h_okay=yes], + [cf_cv_wchar_h_okay=no])]) + +if test "$cf_cv_wchar_h_okay" = no +then + CF_PREDEFINE(_XOPEN_SOURCE_EXTENDED) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_WCWIDTH_GRAPHICS version: 2 updated: 2021/01/02 17:09:14 +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. +dnl +dnl While most of the VT100 graphics characters were incorporated into Unicode, +dnl all of those were combined into a page of useful graphics characters. +dnl +dnl So far, so good. +dnl +dnl However, while they are useful, there are other considerations. CJK +dnl is (because of poor device resolution) often rendered as double-width +dnl characters. So... for these generally-useful characters, what should +dnl be the width (to make them consistent with adjacent characters)? +dnl +dnl The obvious choice would have been to make this locale-dependent, and use +dnl wcwidth() to tell applications what the actual width is. That was too +dnl obvious. Instead, we have a slew of "ambiguous-width" characters. +dnl See for example +dnl http://www.unicode.org/reports/tr11/tr11-29.html +dnl http://www.cl.cam.ac.uk/~mgk25/ucs/scw-proposal.html +dnl +dnl The EastAsianWidth-6.2.0.txt file from the Unicode organization lists +dnl more than 22,000 characters, with 1281 of those as ambiguous-width. For +dnl instance, it lists half (44/96) of the Latin-1 characters as +dnl ambiguous-width. Also, all of the box-characters at 0x2500 are ambiguous. +dnl +dnl What this means for the implementor is that on some systems wcwidth() can +dnl give bad advice. On Solaris, some of the ambiguous widths are returned as +dnl 1 (the Latin-1 characters), while others are returned as 2 (line-drawing +dnl characters). These do not necessarily match the behavior of the terminal +dnl emulator. xterm, for instance, does an optional startup check to find if +dnl this problem (or similar) exists with the system's locale tables, rejecting +dnl them if they are too unreliable. +AC_DEFUN([CF_CHECK_WCWIDTH_GRAPHICS],[ +AC_CACHE_CHECK(if wcwidth agrees graphics are single-width, cf_cv_wcwidth_graphics,[ +cat >conftest.in < +#include +#include + +#define MY_LEN 80 + +int +main(void) +{ + FILE *fp; + int value; + char buffer[MY_LEN + 1]; + char notes[MY_LEN + 1]; + int totals = 0; + int passed = 0; + + if (setlocale(LC_ALL, "en_US.UTF8") || + 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 (*buffer == '-') { + fprintf(stderr, "\\t%s", buffer); + } else if (sscanf(buffer, "%x %s", &value, notes) == 2) { + ++totals; + if (wcwidth(value) == 1) + ++passed; + fprintf(stderr, "%d\\t%s", wcwidth(value), buffer); + } else { + fprintf(stderr, "?\\t%s", buffer); + } + } + } + } + fprintf(stderr, "%d/%d passed wcwidth/graphics check\\n", passed, totals); + return (totals == passed) ? 0 : 1; +} +], +[cf_cv_wcwidth_graphics=yes], +[cf_cv_wcwidth_graphics=no], +[cf_cv_wcwidth_graphics=unknown]) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04 +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 +dnl not ignore some gcc options. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = CLANG_COMPILER (default) +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_CLANG_COMPILER],[ +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([],[ +#ifdef __clang__ +#else +make an error +#endif +],[ifelse([$2],,CLANG_COMPILER,[$2])=yes +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) +fi + +CLANG_VERSION=none + +if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then + case "$CC" in + (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]]) + AC_MSG_WARN(replacing broken compiler alias $CC) + CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" + CC=clang + ;; + esac + + AC_MSG_CHECKING(version of $CC) + 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 + AC_MSG_RESULT($CLANG_VERSION) + + for cf_clang_opt in \ + -Qunused-arguments \ + -Wno-error=implicit-function-declaration + do + AC_MSG_CHECKING(if option $cf_clang_opt works) + cf_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $cf_clang_opt" + AC_TRY_LINK([ + #include ],[ + printf("hello!\\n");],[ + cf_clang_optok=yes],[ + cf_clang_optok=no]) + AC_MSG_RESULT($cf_clang_optok) + CFLAGS="$cf_save_CFLAGS" + if test "$cf_clang_optok" = yes; then + CF_VERBOSE(adding option $cf_clang_opt) + CF_APPEND_TEXT(CFLAGS,$cf_clang_opt) + fi + done +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17 +dnl ----------------- +dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most +dnl character-strings. +dnl +dnl It is ambiguous because the specification accommodated the pre-ANSI +dnl compilers bundled by more than one vendor in lieu of providing a standard C +dnl compiler other than by costly add-ons. Because of this, the specification +dnl did not take into account the use of const for telling the compiler that +dnl string literals would be in readonly memory. +dnl +dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to +dnl let the compiler decide how to represent Xt's strings which were #define'd. +dnl That does not solve the problem of using the block of Xt's strings which +dnl are compiled into the library (and is less efficient than one might want). +dnl +dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both +dnl when compiling the library and compiling using the library, to tell the +dnl compiler that String is const. +AC_DEFUN([CF_CONST_X_STRING], +[ +AC_REQUIRE([AC_PATH_XTRA]) + +CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) + +AC_TRY_COMPILE( +[ +#include +#include +], +[String foo = malloc(1); free((void*)foo)],[ + +AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ + AC_TRY_COMPILE( + [ +#define _CONST_X_STRING /* X11R7.8 (perhaps) */ +#undef XTSTRINGDEFINES /* X11R5 and later */ +#include +#include + ],[String foo = malloc(1); *foo = 0],[ + cf_cv_const_x_string=no + ],[ + cf_cv_const_x_string=yes + ]) +]) + +CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) + +case "$cf_cv_const_x_string" in +(no) + CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) + ;; +(*) + CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) + ;; +esac + +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CPP_PARAM_INIT version: 7 updated: 2017/01/21 11:06:25 +dnl ----------------- +dnl Check if the C++ compiler accepts duplicate parameter initialization. This +dnl is a late feature for the standard and is not in some recent compilers +dnl (1999/9/11). +AC_DEFUN([CF_CPP_PARAM_INIT], +[ +if test -n "$CXX"; then +AC_CACHE_CHECK(if $CXX accepts parameter initialization,cf_cv_cpp_param_init,[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + AC_TRY_RUN([ +class TEST { +private: + int value; +public: + TEST(int x = 1); + ~TEST(); +}; + +TEST::TEST(int x = 1) // some compilers do not like second initializer +{ + value = x; +} +int main(void) { } +], + [cf_cv_cpp_param_init=yes], + [cf_cv_cpp_param_init=no], + [cf_cv_cpp_param_init=unknown]) + AC_LANG_RESTORE +]) +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 ------------------ +dnl Check if the C++ compiler accepts static_cast in generics. This appears to +dnl not be supported in g++ before 3.0 +AC_DEFUN([CF_CPP_STATIC_CAST], +[ +if test -n "$CXX"; then + +AC_CACHE_CHECK(if $CXX accepts static_cast,cf_cv_cpp_static_cast,[ + AC_LANG_SAVE + AC_LANG_CPLUSPLUS + + AC_TRY_COMPILE([ +class NCursesPanel +{ +public: + NCursesPanel(int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0) + { + } + NCursesPanel(); + ~NCursesPanel(); +}; + +template class NCursesUserPanel : public NCursesPanel +{ +public: + NCursesUserPanel (int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + const T* p_UserData = static_cast(0)) + : NCursesPanel (nlines, ncols, begin_y, begin_x) + { + }; + NCursesUserPanel(const T* p_UserData = static_cast(0)) : NCursesPanel() + { + }; + + virtual ~NCursesUserPanel() {}; +}; +],[ + const char* p_UserData = static_cast(0)], + [cf_cv_cpp_static_cast=yes], + [cf_cv_cpp_static_cast=no]) + + AC_LANG_RESTORE +]) + +fi + +test "$cf_cv_cpp_static_cast" = yes && AC_DEFINE(CPP_HAS_STATIC_CAST,1,[Define to 1 if C++ has static_cast]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CXX_AR_FLAGS version: 3 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Setup special archiver flags for given compilers. +AC_DEFUN([CF_CXX_AR_FLAGS],[ + CXX_AR='$(AR)' + CXX_ARFLAGS='$(ARFLAGS)' + case "$cf_cv_system_name" in + (irix*) + if test "$GXX" != yes ; then + CXX_AR='$(CXX)' + CXX_ARFLAGS='-ar -o' + fi + ;; + (sco3.2v5*) + CXXLDFLAGS="-u main" + ;; + (solaris2*) + if test "$GXX" != yes ; then + CXX_AR='$(CXX)' + CXX_ARFLAGS='-xar -o' + fi + ;; + esac + AC_SUBST(CXXLDFLAGS) + AC_SUBST(CXX_AR) + AC_SUBST(CXX_ARFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CXX_IOSTREAM_NAMESPACE version: 2 updated: 2012/10/06 17:56:13 +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([ +#include +using std::endl; +using std::cerr;],[ +cerr << "testing" << endl; +],[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]) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_C_INLINE version: 6 updated: 2019/09/07 13:38:36 +dnl ----------- +dnl Check if the C compiler supports "inline". +dnl $1 is the name of a shell variable to set if inline is supported +dnl $2 is the threshold for gcc 4.x's option controlling maximum inline size +AC_DEFUN([CF_C_INLINE],[ +AC_REQUIRE([CF_GCC_VERSION]) +AC_C_INLINE +$1= +if test "$ac_cv_c_inline" != no ; then + $1=inline + if test "$INTEL_COMPILER" = yes + then + : + elif test "$CLANG_COMPILER" = yes + then + : + elif test "$GCC" = yes + 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()], + [cf_cv_gcc_inline=yes], + [cf_cv_gcc_inline=no]) + CFLAGS=$cf_save_CFLAGS + ]) + if test "$cf_cv_gcc_inline" = yes ; then + CF_ADD_CFLAGS([--param max-inline-insns-single=$2]) + fi + fi +fi +AC_SUBST($1) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42 +dnl ---------- +dnl "dirname" is not portable, so we fake it with a shell script. +AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DIRS_TO_MAKE version: 4 updated: 2021/01/01 13:31:04 +dnl --------------- +AC_DEFUN([CF_DIRS_TO_MAKE], +[ +DIRS_TO_MAKE="lib" +for cf_item in $cf_list_models +do + CF_OBJ_SUBDIR($cf_item,cf_subdir) + for cf_item2 in $DIRS_TO_MAKE + do + test "$cf_item2" = "$cf_subdir" && break + done + test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir" +done +for cf_dir in $DIRS_TO_MAKE +do + test ! -d "$cf_dir" && mkdir "$cf_dir" +done +AC_SUBST(DIRS_TO_MAKE) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04 +dnl --------------- +dnl You can always use "make -n" to see the actual options, but it is hard to +dnl pick out/analyze warning messages when the compile-line is long. +dnl +dnl Sets: +dnl ECHO_LT - symbol to control if libtool is verbose +dnl ECHO_LD - symbol to prefix "cc -o" lines +dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) +dnl SHOW_CC - symbol to put before explicit "cc -c" lines +dnl ECHO_CC - symbol to put before any "cc" line +dnl +AC_DEFUN([CF_DISABLE_ECHO],[ +AC_MSG_CHECKING(if you want to see long compiling messages) +CF_ARG_DISABLE(echo, + [ --disable-echo do not display "compiling" commands], + [ + ECHO_LT='--silent' + ECHO_LD='@echo linking [$]@;' + RULE_CC='@echo compiling [$]<' + SHOW_CC='@echo compiling [$]@' + ECHO_CC='@' +],[ + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' +]) +AC_MSG_RESULT($enableval) +AC_SUBST(ECHO_LT) +AC_SUBST(ECHO_LD) +AC_SUBST(RULE_CC) +AC_SUBST(SHOW_CC) +AC_SUBST(ECHO_CC) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_GNAT_PROJECTS version: 1 updated: 2014/06/01 11:34:00 +dnl ------------------------ +AC_DEFUN([CF_DISABLE_GNAT_PROJECTS],[ +AC_MSG_CHECKING(if we want to use GNAT projects) +CF_ARG_DISABLE(gnat-projects, + [ --disable-gnat-projects test: disable GNAT projects even if usable], + [enable_gnat_projects=no], + [enable_gnat_projects=yes]) +AC_MSG_RESULT($enable_gnat_projects) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50 +dnl ---------------- +dnl Combine no-leak checks with the libraries or tools that are used for the +dnl checks. +AC_DEFUN([CF_DISABLE_LEAKS],[ + +AC_REQUIRE([CF_WITH_DMALLOC]) +AC_REQUIRE([CF_WITH_DBMALLOC]) +AC_REQUIRE([CF_WITH_VALGRIND]) + +AC_MSG_CHECKING(if you want to perform memory-leak testing) +AC_ARG_ENABLE(leaks, + [ --disable-leaks test: free permanent memory, analyze leaks], + [enable_leaks=$enableval], + [enable_leaks=yes]) +dnl with_no_leaks is more readable... +if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi +AC_MSG_RESULT($with_no_leaks) + +if test "$enable_leaks" = no ; then + AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) + AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_LIBTOOL_VERSION version: 3 updated: 2015/04/17 21:13:04 +dnl -------------------------- +dnl Check if we should use the libtool 1.5 feature "-version-number" instead of +dnl the older "-version-info" feature. The newer feature allows us to use +dnl version numbering on shared libraries which make them compatible with +dnl various systems. +AC_DEFUN([CF_DISABLE_LIBTOOL_VERSION], +[ +AC_MSG_CHECKING(if libtool -version-number should be used) +CF_ARG_DISABLE(libtool-version, + [ --disable-libtool-version enable to use libtool's incompatible naming scheme], + [cf_libtool_version=no], + [cf_libtool_version=yes]) +AC_MSG_RESULT($cf_libtool_version) + +if test "$cf_libtool_version" = yes ; then + LIBTOOL_VERSION="-version-number" +else + LIBTOOL_VERSION="-version-info" + case "x$VERSION" in + (x) + AC_MSG_WARN(VERSION was not set) + ;; + (x*.*.*) + ABI_VERSION="$VERSION" + CF_VERBOSE(ABI_VERSION: $ABI_VERSION) + ;; + (x*:*:*) + ABI_VERSION=`echo "$VERSION" | sed -e 's/:/./g'` + CF_VERBOSE(ABI_VERSION: $ABI_VERSION) + ;; + (*) + AC_MSG_WARN(unexpected VERSION value: $VERSION) + ;; + esac +fi + +AC_SUBST(ABI_VERSION) +AC_SUBST(LIBTOOL_VERSION) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44 +dnl --------------------- +dnl The rpath-hack makes it simpler to build programs, particularly with the +dnl *BSD ports which may have essential libraries in unusual places. But it +dnl can interfere with building an executable for the base system. Use this +dnl option in that case. +AC_DEFUN([CF_DISABLE_RPATH_HACK], +[ +AC_MSG_CHECKING(if rpath-hack should be disabled) +CF_ARG_DISABLE(rpath-hack, + [ --disable-rpath-hack don't add rpath options for additional libraries], + [enable_rpath_hack=no], + [enable_rpath_hack=yes]) +dnl TODO - drop cf_disable_rpath_hack +if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi +AC_MSG_RESULT($cf_disable_rpath_hack) + +if test "$enable_rpath_hack" = yes ; then + CF_RPATH_HACK +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_BROKEN_LINKER version: 2 updated: 2021/01/02 17:09:14 +dnl ----------------------- +dnl Some linkers cannot reference a data-only object. Cygwin used to be one. +dnl This usually follows CF_LINK_DATAONLY, but is not required in case we need +dnl an unconditional feature. +AC_DEFUN([CF_ENABLE_BROKEN_LINKER],[ + +AC_MSG_CHECKING(if you want broken-linker support code) +AC_ARG_ENABLE(broken_linker, + [ --enable-broken_linker compile with broken-linker support code], + [with_broken_linker=$enableval], + [with_broken_linker=no]) +AC_MSG_RESULT($with_broken_linker) + +: "${BROKEN_LINKER:=0}" +if test "x$with_broken_linker" = xyes ; then + AC_DEFINE(BROKEN_LINKER,1,[Define to 1 to work around linkers which cannot link data-only modules]) + BROKEN_LINKER=1 +fi +AC_SUBST(BROKEN_LINKER) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_PC_FILES version: 14 updated: 2021/10/17 11:12:47 +dnl ------------------ +dnl This is the "--enable-pc-files" option, which is available if there is a +dnl pkg-config configuration on the local machine. +AC_DEFUN([CF_ENABLE_PC_FILES],[ +AC_REQUIRE([CF_PKG_CONFIG]) +AC_REQUIRE([CF_WITH_PKG_CONFIG_LIBDIR]) + +if test "x$PKG_CONFIG" != xnone +then + AC_MSG_CHECKING(if we should install .pc files for $PKG_CONFIG) +else + AC_MSG_CHECKING(if we should install .pc files) +fi + +AC_ARG_ENABLE(pc-files, + [ --enable-pc-files generate and install .pc files for pkg-config], + [enable_pc_files=$enableval], + [enable_pc_files=no]) +AC_MSG_RESULT($enable_pc_files) + +if test "x$enable_pc_files" != xno +then + MAKE_PC_FILES= + case "x$PKG_CONFIG_LIBDIR" in + (xno|xnone|xyes) + AC_MSG_WARN(no PKG_CONFIG_LIBDIR was found) + ;; + (*) + CF_PATH_SYNTAX(PKG_CONFIG_LIBDIR) + ;; + esac +else + MAKE_PC_FILES="#" +fi +AC_SUBST(MAKE_PC_FILES) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_RPATH version: 2 updated: 2010/03/27 18:39:42 +dnl --------------- +dnl Check if the rpath option should be used, setting cache variable +dnl cf_cv_enable_rpath if so. +AC_DEFUN([CF_ENABLE_RPATH], +[ +AC_MSG_CHECKING(if rpath option should be used) +AC_ARG_ENABLE(rpath, +[ --enable-rpath use rpath option when generating shared libraries], +[cf_cv_enable_rpath=$enableval], +[cf_cv_enable_rpath=no]) +AC_MSG_RESULT($cf_cv_enable_rpath) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48 +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, +dnl and implying that most uses of the recommended alternatives are correct. +dnl +dnl Factually speaking, no one has actually counted the number of uses of these +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 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. +AC_DEFUN([CF_ENABLE_STRING_HACKS], +[ +AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings) +AC_ARG_ENABLE(string-hacks, + [ --enable-string-hacks work around bogus compiler/loader warnings], + [enable_string_hacks=$enableval], + [enable_string_hacks=no]) +AC_MSG_RESULT($enable_string_hacks) + +if test "x$enable_string_hacks" = "xyes"; then + AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings]) + AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings) + AC_CHECK_FUNC(strlcat,[ + AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function]) + ],[ + AC_CHECK_LIB(bsd,strlcat,[ + CF_ADD_LIB(bsd) + AC_CHECK_HEADERS(bsd/string.h) + AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function]) + ]) + ]) + AC_CHECK_FUNCS( strlcpy snprintf ) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50 +dnl ------------------ +dnl Configure-option to enable gcc warnings +dnl +dnl $1 = extra options to add, if supported +dnl $2 = option for checking attributes. By default, this is done when +dnl warnings are enabled. For other values: +dnl yes: always do this, e.g., to use in generated library-headers +dnl no: never do this +AC_DEFUN([CF_ENABLE_WARNINGS],[ +if test "$GCC" = yes || test "$GXX" = yes +then +CF_FIX_WARNINGS(CFLAGS) +CF_FIX_WARNINGS(CPPFLAGS) +CF_FIX_WARNINGS(LDFLAGS) +AC_MSG_CHECKING(if you want to turn on gcc warnings) +CF_ARG_ENABLE(warnings, + [ --enable-warnings test: turn on gcc compiler warnings], + [enable_warnings=yes], + [enable_warnings=no]) +AC_MSG_RESULT($enable_warnings) +if test "$enable_warnings" = "yes" +then + ifelse($2,,[CF_GCC_ATTRIBUTES]) + CF_GCC_WARNINGS($1) +fi +ifelse($2,yes,[CF_GCC_ATTRIBUTES]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ERRNO version: 5 updated: 1997/11/30 12:44:39 +dnl -------- +dnl Check if 'errno' is declared in +AC_DEFUN([CF_ERRNO], +[ +CF_CHECK_ERRNO(errno) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ETIP_DEFINES version: 6 updated: 2021/01/02 17:09:14 +dnl --------------- +dnl Test for conflicting definitions of exception in gcc 2.8.0, etc., between +dnl math.h and builtin.h, only for ncurses +AC_DEFUN([CF_ETIP_DEFINES], +[ +AC_MSG_CHECKING(for special defines needed for etip.h) +cf_save_CXXFLAGS="$CXXFLAGS" +cf_result="none" + +# etip.h includes ncurses.h which includes ncurses_dll.h +# But ncurses_dll.h is generated - fix here. +test -d include || mkdir include +test -f include/ncurses_dll.h || sed -e 's/@NCURSES_WRAP_PREFIX@/'$NCURSES_WRAP_PREFIX'/g' "${srcdir}/include/ncurses_dll.h.in" >include/ncurses_dll.h + +for cf_math in "" MATH_H +do +for cf_excp in "" MATH_EXCEPTION +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([ +#include +],[],[ + 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" + break 2 +],[]) +done +done +AC_MSG_RESULT($cf_result) +CXXFLAGS="$cf_save_CXXFLAGS" +]) +dnl --------------------------------------------------------------------------- +dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42 +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. +dnl See also CF_ADD_SEARCHPATH. +dnl +dnl Parameters (4-on are optional): +dnl $1 = headers for library entrypoint +dnl $2 = code fragment for library entrypoint +dnl $3 = the library name without the "-l" option or ".so" suffix. +dnl $4 = action to perform if successful (default: update CPPFLAGS, etc) +dnl $5 = action to perform if not successful +dnl $6 = module name, if not the same as the library name +dnl $7 = extra libraries +dnl +dnl Sets these variables: +dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found +dnl $cf_cv_header_path_$3 - include-directory if needed +dnl $cf_cv_library_path_$3 - library-directory if needed +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. +cf_cv_header_path_$3= +cf_cv_library_path_$3= + +CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) + +cf_save_LIBS="$LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib +],[ + +LIBS="-l$3 $7 $cf_save_LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib + cf_cv_library_file_$3="-l$3" +],[ + cf_cv_find_linkage_$3=no + LIBS="$cf_save_LIBS" + + CF_VERBOSE(find linkage for $3 library) + CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)]) + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + + CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6])) + for cf_cv_header_path_$3 in $cf_search + do + if test -d "$cf_cv_header_path_$3" ; then + 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],[ + CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) + cf_cv_find_linkage_$3=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + ]) + fi + done + + if test "$cf_cv_find_linkage_$3" = maybe ; then + + CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)]) + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + ifelse([$6],,,[ + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-l$3 $7 $cf_save_LIBS" + AC_TRY_LINK([$1],[$2],[ + CF_VERBOSE(... found $3 library in system) + cf_cv_find_linkage_$3=yes]) + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + ]) + + if test "$cf_cv_find_linkage_$3" != yes ; then + CF_LIBRARY_PATH(cf_search,$3) + for cf_cv_library_path_$3 in $cf_search + do + if test -d "$cf_cv_library_path_$3" ; then + CF_VERBOSE(... testing $cf_cv_library_path_$3) + 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],[ + CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) + cf_cv_find_linkage_$3=yes + cf_cv_library_file_$3="-l$3" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + ]) + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_$3=no + fi + ],$7) +]) + +LIBS="$cf_save_LIBS" + +if test "$cf_cv_find_linkage_$3" = yes ; then +ifelse([$4],,[ + CF_ADD_INCDIR($cf_cv_header_path_$3) + CF_ADD_LIBDIR($cf_cv_library_path_$3) + CF_ADD_LIB($3) +],[$4]) +else +ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_SUB_INCDIR version: 3 updated: 2021/01/01 13:31:04 +dnl ------------------ +dnl Find an include-directory with the given leaf-name. This is useful for +dnl example with FreeBSD ports, which use this convention to distinguish +dnl different versions of the same port. +AC_DEFUN([CF_FIND_SUB_INCDIR],[ + CF_SUBDIR_PATH(cf_search,$1,include) + for cf_item in $cf_search + do + case "$cf_item" in + (*/$1) + CF_ADD_INCDIR($cf_item) + ;; + esac + done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_SUB_LIBDIR version: 3 updated: 2021/01/01 13:31:04 +dnl ------------------ +dnl Find a library-directory with the given leaf-name. This is useful for +dnl example with FreeBSD ports, which use this convention to distinguish +dnl different versions of the same port. +AC_DEFUN([CF_FIND_SUB_LIBDIR],[ + CF_SUBDIR_PATH(cf_search,$1,lib) + for cf_item in $cf_search + do + case "$cf_item" in + (*/$1) + CF_ADD_LIBDIR($cf_item) + ;; + esac + done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIXUP_ADAFLAGS version: 2 updated: 2015/04/17 21:13:04 +dnl ----------------- +dnl make ADAFLAGS consistent with CFLAGS +AC_DEFUN([CF_FIXUP_ADAFLAGS],[ + AC_MSG_CHECKING(optimization options for ADAFLAGS) + case "$CFLAGS" in + (*-g*) + CF_ADD_ADAFLAGS(-g) + ;; + esac + case "$CFLAGS" in + (*-O*) + cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[[ ]].*//'` + CF_ADD_ADAFLAGS($cf_O_flag) + ;; + esac + AC_MSG_RESULT($ADAFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20 +dnl --------------- +dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's +dnl "-Werror" flags can interfere with configure-checks. Those go into +dnl EXTRA_CFLAGS. +dnl +dnl $1 = variable name to repair +define([CF_FIX_WARNINGS],[ +if test "$GCC" = yes || test "$GXX" = yes +then + case [$]$1 in + (*-Werror=*) + CF_VERBOSE(repairing $1: [$]$1) + cf_temp_flags= + for cf_temp_scan in [$]$1 + do + case "x$cf_temp_scan" in + (x-Werror=*) + CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) + ;; + (*) + CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) + ;; + esac + done + $1="$cf_temp_flags" + CF_VERBOSE(... fixed [$]$1) + CF_VERBOSE(... extra $EXTRA_CFLAGS) + ;; + esac +fi +AC_SUBST(EXTRA_CFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FOPEN_BIN_R version: 2 updated: 2019/12/31 08:53:54 +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 +dnl systems do not accept it. +AC_DEFUN([CF_FOPEN_BIN_R],[ +AC_CACHE_CHECK(if fopen accepts explicit binary mode,cf_cv_fopen_bin_r,[ + AC_TRY_RUN([ +#include +int main(void) { + FILE *fp = fopen("conftest.tmp", "wb"); + int rc = 0; + if (fp != 0) { + int p, q; + for (p = 0; p < 256; ++p) { + fputc(p, fp); + } + fclose(fp); + fp = fopen("conftest.tmp", "rb"); + if (fp != 0) { + for (p = 0; p < 256; ++p) { + q = fgetc(fp); + if (q != p) { + rc = 1; + break; + } + } + } else { + rc = 1; + } + } else { + rc = 1; + } + ${cf_cv_main_return:-return} (rc); +} +], + [cf_cv_fopen_bin_r=yes], + [cf_cv_fopen_bin_r=no], + [cf_cv_fopen_bin_r=unknown]) +]) +test "x$cf_cv_fopen_bin_r" != xno && AC_DEFINE(USE_FOPEN_BIN_R,1,[Define to 1 if fopen accepts explicit binary mode]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FORGET_TOOL version: 1 updated: 2013/04/06 18:03:09 +dnl -------------- +dnl Forget that we saw the given tool. +AC_DEFUN([CF_FORGET_TOOL],[ +unset ac_cv_prog_ac_ct_$1 +unset ac_ct_$1 +unset $1 +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_DLSYM version: 4 updated: 2015/09/12 14:46:44 +dnl ------------- +dnl Test for dlsym() and related functions, as well as libdl. +dnl +dnl Sets +dnl $cf_have_dlsym +dnl $cf_have_libdl +AC_DEFUN([CF_FUNC_DLSYM],[ +cf_have_dlsym=no +AC_CHECK_FUNC(dlsym,cf_have_dlsym=yes,[ + +cf_have_libdl=no +AC_CHECK_LIB(dl,dlsym,[ + cf_have_dlsym=yes + cf_have_libdl=yes])]) + +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 ],[ + void *obj; + if ((obj = dlopen("filename", 0)) != 0) { + 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) +else + AC_MSG_ERROR(Cannot find dlsym function) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_MEMMOVE version: 9 updated: 2017/01/21 11:06:25 +dnl --------------- +dnl Check for memmove, or a bcopy that can handle overlapping copy. If neither +dnl is found, add our own version of memmove to the list of objects. +AC_DEFUN([CF_FUNC_MEMMOVE], +[ +AC_CHECK_FUNC(memmove,,[ +AC_CHECK_FUNC(bcopy,[ + AC_CACHE_CHECK(if bcopy does overlapping moves,cf_cv_good_bcopy,[ + AC_TRY_RUN([ +int main(void) { + static char data[] = "abcdefghijklmnopqrstuwwxyz"; + char temp[40]; + bcopy(data, temp, sizeof(data)); + bcopy(temp+10, temp, 15); + bcopy(temp+5, temp+15, 10); + ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz")); +} + ], + [cf_cv_good_bcopy=yes], + [cf_cv_good_bcopy=no], + [cf_cv_good_bcopy=unknown]) + ]) + ],[cf_cv_good_bcopy=no]) + if test "$cf_cv_good_bcopy" = yes ; then + AC_DEFINE(USE_OK_BCOPY,1,[Define to 1 to use bcopy when memmove is unavailable]) + else + AC_DEFINE(USE_MY_MEMMOVE,1,[Define to 1 to use replacement function when memmove is unavailable]) + fi +])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_NANOSLEEP version: 5 updated: 2017/01/21 11:06:25 +dnl ----------------- +dnl Check for existence of workable nanosleep() function. Some systems, e.g., +dnl AIX 4.x, provide a non-working version. +AC_DEFUN([CF_FUNC_NANOSLEEP],[ +AC_CACHE_CHECK(if nanosleep really works,cf_cv_func_nanosleep,[ +AC_TRY_RUN([ +#include +#include +#include + +#ifdef HAVE_SYS_TIME_H +#include +#endif + +int main(void) { + struct timespec ts1, ts2; + int code; + ts1.tv_sec = 0; + ts1.tv_nsec = 750000000; + ts2.tv_sec = 0; + ts2.tv_nsec = 0; + errno = 0; + code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */ + ${cf_cv_main_return:-return}(code != 0); +} +], + [cf_cv_func_nanosleep=yes], + [cf_cv_func_nanosleep=no], + [cf_cv_func_nanosleep=unknown])]) + +test "$cf_cv_func_nanosleep" = "yes" && AC_DEFINE(HAVE_NANOSLEEP,1,[Define to 1 if we have nanosleep()]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Check for openpty() function, along with header. It may need the +dnl "util" library as well. +AC_DEFUN([CF_FUNC_OPENPTY], +[ +AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no) +AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[ + cf_save_LIBS="$LIBS" + test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) } + for cf_header in pty.h libutil.h util.h + do + AC_TRY_LINK([ +#include <$cf_header> +],[ + int x = openpty((int *)0, (int *)0, (char *)0, + (struct termios *)0, (struct winsize *)0); +],[ + cf_cv_func_openpty=$cf_header + break +],[ + cf_cv_func_openpty=no +]) + done + LIBS="$cf_save_LIBS" +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_POLL version: 10 updated: 2021/01/04 19:13:57 +dnl ------------ +dnl See if the poll function really works. Some platforms have poll(), but +dnl it does not work for terminals or files. +AC_DEFUN([CF_FUNC_POLL],[ +tty >/dev/null 2>&1 || { AC_CHECK_FUNCS(posix_openpt) } +AC_CACHE_CHECK(if poll really works,cf_cv_working_poll,[ +AC_TRY_RUN([ +#include +#include +#include +#include +#ifdef HAVE_POLL_H +#include +#else +#include +#endif +int main(void) { + struct pollfd myfds; + int ret; + + /* check for Darwin bug with respect to "devices" */ + myfds.fd = open("/dev/null", 1); /* O_WRONLY */ + if (myfds.fd < 0) + myfds.fd = 0; + myfds.events = POLLIN; + myfds.revents = 0; + + ret = poll(&myfds, 1, 100); + + if (ret < 0 || (myfds.revents & POLLNVAL)) { + ret = -1; + } else { + int fd = 0; + if (!isatty(fd)) { + fd = open("/dev/tty", 2); /* O_RDWR */ + } +#ifdef HAVE_POSIX_OPENPT + if (fd < 0) { + fd = posix_openpt(O_RDWR); + } +#endif + + if (fd >= 0) { + /* also check with standard input */ + myfds.fd = fd; + myfds.events = POLLIN; + myfds.revents = 0; + ret = poll(&myfds, 1, 100); + } else { + ret = -1; + } + } + ${cf_cv_main_return:-return}(ret < 0); +}], + [cf_cv_working_poll=yes], + [cf_cv_working_poll=no], + [cf_cv_working_poll=unknown])]) +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 --------------- +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([ +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_TERMIOS_H +#include +#define TTY struct termios +#else +#ifdef HAVE_TERMIO_H +#include +#define TTY struct termio +#endif +#endif +],[ +TTY 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: 7 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Check for vsscanf() function, which is in c9x but generally not in earlier +dnl versions of C. It is in the GNU C library, and can often be simulated by +dnl other functions. +AC_DEFUN([CF_FUNC_VSSCANF], +[ +AC_CACHE_CHECK(for vsscanf function or workaround,cf_cv_func_vsscanf,[ +AC_TRY_LINK([ +#include +#include ],[ + va_list ap; + vsscanf("from", "%d", ap)],[cf_cv_func_vsscanf=vsscanf],[ +AC_TRY_LINK([ +#include +#include ],[ + FILE strbuf; + char *str = "from"; + + strbuf._flag = _IOREAD; + 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([ +#include +#include ],[ + FILE strbuf; + char *str = "from"; + + strbuf._flag = _IOREAD; + strbuf._ptr = strbuf._base = (unsigned char *) str; + strbuf._cnt = strlen(str); + strbuf._file = _NFILE; + return (_doscan(&strbuf, "%d", ap))],[cf_cv_func_vsscanf=_doscan],[ +cf_cv_func_vsscanf=no])])])]) + +case "$cf_cv_func_vsscanf" in +(vsscanf) AC_DEFINE(HAVE_VSSCANF,1,[Define to 1 if we have vsscanf]);; +(vfscanf) AC_DEFINE(HAVE_VFSCANF,1,[Define to 1 if we have vfscanf]);; +(_doscan) AC_DEFINE(HAVE__DOSCAN,1,[Define to 1 if we have _doscan]);; +esac + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 +dnl ----------------- +dnl Test for availability of useful gcc __attribute__ directives to quiet +dnl compiler warnings. Though useful, not all are supported -- and contrary +dnl to documentation, unrecognized directives cause older compilers to barf. +AC_DEFUN([CF_GCC_ATTRIBUTES], +[AC_REQUIRE([AC_PROG_FGREP])dnl +AC_REQUIRE([CF_C11_NORETURN])dnl + +if test "$GCC" = yes || test "$GXX" = yes +then +cat > conftest.i < "conftest.$ac_ext" <&AC_FD_CC + + case "$cf_attribute" in + (printf) + cf_printf_attribute=yes + cat >conftest.h <conftest.h <conftest.h <>confdefs.h + case "$cf_attribute" in + (noreturn) + AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) + ;; + (printf) + cf_value='/* nothing */' + if test "$cf_printf_attribute" != no ; then + cf_value='__attribute__((format(printf,fmt,var)))' + AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) + ;; + (scanf) + cf_value='/* nothing */' + if test "$cf_scanf_attribute" != no ; then + cf_value='__attribute__((format(scanf,fmt,var)))' + AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) + ;; + (unused) + AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) + ;; + esac + fi + done +else + ${FGREP-fgrep} define conftest.i >>confdefs.h +fi +rm -rf ./conftest* +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36 +dnl -------------- +dnl Find version of gcc, and (because icc/clang pretend to be gcc without being +dnl compatible), attempt to determine if icc/clang is actually used. +AC_DEFUN([CF_GCC_VERSION],[ +AC_REQUIRE([AC_PROG_CC]) +GCC_VERSION=none +if test "$GCC" = yes ; then + AC_MSG_CHECKING(version of $CC) + GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + AC_MSG_RESULT($GCC_VERSION) +fi +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 --------------- +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: +dnl +dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) +dnl -Winline (usually not worthwhile) +dnl -Wredundant-decls (system headers make this too noisy) +dnl -Wtraditional (combines too many unrelated messages, only a few useful) +dnl -Wwrite-strings (too noisy, but should review occasionally). This +dnl is enabled for ncurses using "--enable-const". +dnl -pedantic +dnl +dnl Parameter: +dnl $1 is an optional list of gcc warning flags that a particular +dnl application might want to use, e.g., "no-unused" for +dnl -Wno-unused +dnl Special: +dnl If $with_ext_const is "yes", add a check for -Wwrite-strings +dnl +AC_DEFUN([CF_GCC_WARNINGS], +[ +AC_REQUIRE([CF_GCC_VERSION]) +if test "x$have_x" = xyes; then CF_CONST_X_STRING fi +cat > "conftest.$ac_ext" <], +[int x = optind; char *y = optarg; (void)x; (void)y], +[cf_cv_getopt_header=$cf_header + break]) +done +]) +if test "$cf_cv_getopt_header" != none ; then + AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header]) +fi +if test "$cf_cv_getopt_header" = getopt.h ; then + AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNATPREP_OPT_T version: 1 updated: 2014/08/02 18:37:25 +dnl ----------------- +AC_DEFUN([CF_GNATPREP_OPT_T],[ +AC_CACHE_CHECK(if GNATPREP supports -T option,cf_cv_gnatprep_opt_t,[ +cf_cv_gnatprep_opt_t=no +gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes +]) +test "$cf_cv_gnatprep_opt_t" = yes && GNATPREP_OPTS="-T $GNATPREP_OPTS" +AC_SUBST(GNATPREP_OPTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_GENERICS version: 7 updated: 2021/01/01 13:31:04 +dnl ---------------- +AC_DEFUN([CF_GNAT_GENERICS], +[ +AC_REQUIRE([CF_GNAT_VERSION]) + +AC_MSG_CHECKING(if GNAT supports generics) +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_gnat_generics=yes + ;; +(*) + cf_gnat_generics=no + ;; +esac +AC_MSG_RESULT($cf_gnat_generics) + +if test "$cf_gnat_generics" = yes +then + cf_compile_generics=generics + cf_generic_objects="\${GENOBJS}" +else + cf_compile_generics= + cf_generic_objects= +fi + +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 ---------------- +dnl GNAT projects are configured with ".gpr" project files. +dnl GNAT libraries are a further development, using the project feature. +AC_DEFUN([CF_GNAT_PROJECTS], +[ +AC_REQUIRE([CF_GNAT_VERSION]) +AC_REQUIRE([CF_DISABLE_GNAT_PROJECTS]) + +cf_gnat_libraries=no +cf_gnat_projects=no + +if test "$enable_gnat_projects" != no ; then +AC_MSG_CHECKING(if GNAT supports project files) +case "$cf_cv_gnat_version" in +(3.[[0-9]]*) + ;; +(*) + case "$cf_cv_system_name" in + (cygwin*|msys*) + ;; + (*) + rm -rf ./conftest* ./*~conftest* + if mkdir conftest.src conftest.bin conftest.lib + then + cd conftest.src + rm -rf ./conftest* ./*~conftest* + cat >>library.gpr <>confpackage.ads <>confpackage.adb <&AC_FD_CC 2>&1 ) ; then + cf_gnat_projects=yes + fi + cd .. + fi + if test -f conftest.lib/confpackage.ali + then + cf_gnat_libraries=yes + fi + rm -rf ./conftest* ./*~conftest* + ;; + esac + ;; +esac +AC_MSG_RESULT($cf_gnat_projects) +fi # enable_gnat_projects + +if test "$cf_gnat_projects" = yes +then + AC_MSG_CHECKING(if GNAT supports libraries) + AC_MSG_RESULT($cf_gnat_libraries) +fi + +USE_OLD_MAKERULES="" +USE_GNAT_PROJECTS="#" +USE_GNAT_MAKE_GPR="#" +USE_GNAT_GPRBUILD="#" + +if test "$cf_gnat_projects" = yes +then + USE_OLD_MAKERULES="#" + USE_GNAT_PROJECTS="" + if test "$cf_cv_VERSION_GPRBUILD" != no + then + USE_GNAT_GPRBUILD="" + elif test "$cf_cv_VERSION_GNATMAKE" != no + then + USE_GNAT_MAKE_GPR="" + else + AC_MSG_WARN(use old makefile rules since tools are missing) + fi +fi + +if test "$cf_gnat_libraries" = yes +then + USE_GNAT_LIBRARIES="" +else + USE_GNAT_LIBRARIES="#" +fi + +AC_SUBST(USE_OLD_MAKERULES) +AC_SUBST(USE_GNAT_PROJECTS) +AC_SUBST(USE_GNAT_LIBRARIES) +AC_SUBST(USE_GNAT_MAKE_GPR) +AC_SUBST(USE_GNAT_GPRBUILD) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_SIGINT version: 2 updated: 2021/01/01 13:31:04 +dnl -------------- +dnl Check if gnat supports SIGINT, and presumably tasking. For the latter, it +dnl is noted that gnat may compile a tasking unit even for configurations which +dnl fail at runtime. +AC_DEFUN([CF_GNAT_SIGINT],[ +AC_CACHE_CHECK(if GNAT supports SIGINT,cf_cv_gnat_sigint,[ +CF_GNAT_TRY_LINK([with Ada.Interrupts.Names; + +package ConfTest is + + pragma Warnings (Off); -- the next pragma exists since 3.11p + pragma Unreserve_All_Interrupts; + pragma Warnings (On); + + protected Process is + procedure Stop; + function Continue return Boolean; + pragma Attach_Handler (Stop, Ada.Interrupts.Names.SIGINT); + private + Done : Boolean := False; + end Process; + +end ConfTest;], +[package body ConfTest is + protected body Process is + procedure Stop is + begin + Done := True; + end Stop; + function Continue return Boolean is + begin + return not Done; + end Continue; + end Process; +end ConfTest;], + [cf_cv_gnat_sigint=yes], + [cf_cv_gnat_sigint=no])]) + +if test "$cf_cv_gnat_sigint" = yes ; then + USE_GNAT_SIGINT="" +else + USE_GNAT_SIGINT="#" +fi +AC_SUBST(USE_GNAT_SIGINT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_TRY_LINK version: 4 updated: 2021/01/01 13:31:04 +dnl ---------------- +dnl Verify that a test program compiles/links with GNAT. +dnl $cf_ada_make is set to the program that compiles/links +dnl $ADAFLAGS may be set to the GNAT flags. +dnl +dnl $1 is the text of the spec +dnl $2 is the text of the body +dnl $3 is the shell command to execute if successful +dnl $4 is the shell command to execute if not successful +AC_DEFUN([CF_GNAT_TRY_LINK], +[ +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then +ifelse($3,, :,[ $3]) +ifelse($4,,,[else + $4]) +fi +rm -rf ./conftest* ./*~conftest* +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_TRY_RUN version: 6 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Verify that a test program compiles and runs with GNAT +dnl $cf_ada_make is set to the program that compiles/links +dnl $ADAFLAGS may be set to the GNAT flags. +dnl +dnl $1 is the text of the spec +dnl $2 is the text of the body +dnl $3 is the shell command to execute if successful +dnl $4 is the shell command to execute if not successful +AC_DEFUN([CF_GNAT_TRY_RUN], +[ +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&AC_FD_CC 2>&1 ) ; then + if ( ./conftest 1>&AC_FD_CC 2>&1 ) ; then +ifelse($3,, :,[ $3]) +ifelse($4,,,[ else + $4]) + fi +ifelse($4,,,[else + $4]) +fi +rm -rf ./conftest* ./*~conftest* +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNAT_VERSION version: 22 updated: 2019/12/31 08:53:54 +dnl --------------- +dnl $1 = cache variable to update +dnl $2 = program name +dnl Verify version of GNAT or related tool +AC_DEFUN([CF_GNAT_VERSION], +[ +AC_CACHE_CHECK(for ifelse($2,,gnat,$2) version, cf_cv_gnat_version,[ +cf_cv_gnat_version=`ifelse($2,,${cf_ada_make:-gnatmake},$2) --version 2>&1 | \ + grep '[[0-9]].[[0-9]][[0-9]]*' |\ + sed -e '2,$d' -e 's/[[^0-9 \.]]//g' -e 's/^[[ ]]*//' -e 's/ .*//'` +]) +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 ------------- +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 +dnl (or misfeature) of glibc2, which breaks portability of many applications, +dnl since it is interwoven with GNU extensions. +dnl +dnl Well, yes we could work around it... +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +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 ],[ + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif], + [cf_cv_gnu_library=yes], + [cf_cv_gnu_library=no]) +]) + +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. + 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 ],[ + #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], + [cf_cv_gnu_library_219=yes], + [cf_cv_gnu_library_219=no]) + CPPFLAGS="$cf_save" + ]) + + if test "x$cf_cv_gnu_library_219" = 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([ + #include + #include + ],[ + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif], + [cf_cv_gnu_dftsrc_219=yes], + [cf_cv_gnu_dftsrc_219=no]) + ]) + test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" + else + cf_cv_gnu_dftsrc_219=maybe + fi + + 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 ],[ + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif], + [cf_cv_gnu_source=no], + [cf_save="$CPPFLAGS" + CF_ADD_CFLAGS(-D_GNU_SOURCE) + AC_TRY_COMPILE([#include ],[ + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif], + [cf_cv_gnu_source=no], + [cf_cv_gnu_source=yes]) + CPPFLAGS="$cf_save" + ]) + ]) + + if test "$cf_cv_gnu_source" = yes + 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 ],[ + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif], + [cf_cv_default_source=no], + [cf_cv_default_source=yes]) + ]) + if test "$cf_cv_default_source" = yes + then + CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) + fi + fi + fi + +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GPP_LIBRARY version: 13 updated: 2021/01/01 13:31:04 +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 +dnl configure, but won't be able to build the c++ demo program. +AC_DEFUN([CF_GPP_LIBRARY], +[ +cf_cxx_library=unknown +case "$cf_cv_system_name" in +(os2*) + cf_gpp_libname=gpp + ;; +(*) + cf_gpp_libname=g++ + ;; +esac +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([ +#include <$cf_gpp_libname/builtin.h> + ], + [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 + AC_DEFINE(HAVE_GPP_BUILTIN_H,1,[Define to 1 if we have gpp builtin.h]) + else + AC_DEFINE(HAVE_GXX_BUILTIN_H,1,[Define to 1 if we have g++ builtin.h]) + fi], + [AC_TRY_LINK([ +#include + ], + [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])], + [cf_cxx_library=no])]) + LIBS="$cf_save" + AC_MSG_RESULT($cf_cxx_library) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GXX_VERSION version: 8 updated: 2017/02/11 14:48:57 +dnl -------------- +dnl Check for version of g++ +AC_DEFUN([CF_GXX_VERSION],[ +AC_REQUIRE([AC_PROG_CPP]) +GXX_VERSION=none +if test "$GXX" = yes; then + AC_MSG_CHECKING(version of ${CXX:-g++}) + GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" + if test -z "$GXX_VERSION" + then + GXX_VERSION=unknown + GXX=no + fi + AC_MSG_RESULT($GXX_VERSION) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GXX_WARNINGS version: 11 updated: 2021/01/08 16:50:55 +dnl --------------- +dnl Check if the compiler supports useful warning options. +dnl +dnl Most of gcc's options apply to g++, except: +dnl -Wbad-function-cast +dnl -Wmissing-declarations +dnl -Wnested-externs +dnl +dnl Omit a few (for now): +dnl -Winline +dnl +dnl Parameter: +dnl $1 is an optional list of g++ warning flags that a particular +dnl application might want to use, e.g., "no-unused" for +dnl -Wno-unused +dnl Special: +dnl If $with_ext_const is "yes", add a check for -Wwrite-strings +dnl +AC_DEFUN([CF_GXX_WARNINGS], +[ + +CF_INTEL_COMPILER(GXX,INTEL_CPLUSPLUS,CXXFLAGS) +CF_CLANG_COMPILER(GXX,CLANG_CPLUSPLUS,CXXFLAGS) + +AC_REQUIRE([CF_GXX_VERSION]) + +AC_LANG_SAVE +AC_LANG_CPLUSPLUS + +cat > conftest.$ac_ext < +],[ + char *path = "/tmp/foo"; +#ifdef DB_VERSION_MAJOR +#if DB_VERSION_MAJOR >= 4 + DB *result = 0; + db_create(&result, NULL, 0); + result->open(result, + NULL, + path, + path, + DB_HASH, + DB_CREATE, + 0644); +#elif DB_VERSION_MAJOR >= 3 + DB *result = 0; + db_create(&result, NULL, 0); + result->open(result, + path, + path, + DB_HASH, + DB_CREATE, + 0644); +#elif DB_VERSION_MAJOR >= 2 + DB *result = 0; + db_open(path, + DB_HASH, + DB_CREATE, + 0644, + (DB_ENV *) 0, + (DB_INFO *) 0, + &result); +#endif /* DB_VERSION_MAJOR */ +#else + DB *result = dbopen(path, + 2, + 0644, + DB_HASH, + 0); +#endif + ${cf_cv_main_return:-return}(result != 0) +],[ + if test -n "$cf_db_libs" ; then + cf_cv_hashed_db_libs=$cf_db_libs + else + cf_cv_hashed_db_libs=default + fi + LIBS="$cf_save_libs" + break +]) + LIBS="$cf_save_libs" +done +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HASHED_DB_VERSION version: 4 updated: 2014/04/12 16:47:01 +dnl -------------------- +dnl Given that we have the header file for hashed database, find the version +dnl information. +AC_DEFUN([CF_HASHED_DB_VERSION], +[ +AC_CACHE_CHECK(for version of db, cf_cv_hashed_db_version,[ +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_includes_default +#include + +#ifdef DB_VERSION_MAJOR + /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */ +#if $cf_db_version == DB_VERSION_MAJOR + /* ok */ +#else + make an error +#endif +#else +#if $cf_db_version == 1 + /* ok: assuming this is DB 1.8.5 */ +#else + make an error +#endif +#endif +],[DBT *foo = 0],[ + cf_cv_hashed_db_version=$cf_db_version + break + ]) +done +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04 +dnl -------------- +dnl Construct a search-list of directories for a nonstandard header-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_HEADER_PATH], +[ +$1= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE) + cf_header_path_list="$cf_header_path_list [$]$1" + ;; + esac + done +fi + +# add the variations for the package we are looking for +CF_SUBDIR_PATH($1,$2,include) + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && $1="[$]$1 $includedir" + test -d "$includedir/$2" && $1="[$]$1 $includedir/$2" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && $1="[$]$1 $oldincludedir" + test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2" +} + +$1="[$]$1 $cf_header_path_list" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54 +dnl --------------- +dnl Insert text into the help-message, for readability, from AC_ARG_WITH. +AC_DEFUN([CF_HELP_MESSAGE], +[CF_ACVERSION_CHECK(2.53,[],[ +AC_DIVERT_HELP($1)])dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INCLUDE_DIRS version: 10 updated: 2014/09/19 20:58:42 +dnl --------------- +dnl Construct the list of include-options according to whether we're building +dnl in the source directory or using '--srcdir=DIR' option. +AC_DEFUN([CF_INCLUDE_DIRS], +[ +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS" +fi +CPPFLAGS="-I../include $CPPFLAGS" +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir} $CPPFLAGS" +fi +CPPFLAGS="-I. $CPPFLAGS" +AC_SUBST(CPPFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21 +dnl --------------- +dnl prompt for/fill-in useful install-program options +AC_DEFUN([CF_INSTALL_OPTS], +[ +CF_INSTALL_OPT_S +CF_INSTALL_OPT_P +CF_INSTALL_OPT_O +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42 +dnl ---------------- +dnl Almost all "install" programs default to the current user's ownership. +dnl Almost - MINIX is an exception. +AC_DEFUN([CF_INSTALL_OPT_O], +[ +AC_MSG_CHECKING(if install needs to be told about ownership) +case `$ac_config_guess` in +(*minix) + with_install_o=yes + ;; +(*) + with_install_o=no + ;; +esac + +AC_MSG_RESULT($with_install_o) +if test "x$with_install_o" = xyes +then + INSTALL_OPT_O="`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`" +else + INSTALL_OPT_O= +fi + +AC_SUBST(INSTALL_OPT_O) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04 +dnl ---------------- +dnl Some install-programs accept a "-p" option to preserve file modification +dnl timestamps. That can be useful as an install option, as well as a way to +dnl avoid the need for ranlib after copying a static archive. +AC_DEFUN([CF_INSTALL_OPT_P], +[ +: "${INSTALL:=install}" +AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[ + rm -rf ./conftest* + date >conftest.in + mkdir conftest.out + sleep 3 + if $INSTALL -p conftest.in conftest.out 2>/dev/null + then + if test -f conftest.out/conftest.in + then + test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \ + test conftest.out/conftest.in -nt conftest.in 2>conftest.err + if test -s conftest.err + then + cf_cv_install_p=no + else + cf_cv_install_p=yes + fi + else + cf_cv_install_p=no + fi + else + cf_cv_install_p=no + fi + rm -rf ./conftest* +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48 +dnl ---------------- +dnl By default, we should strip executables which are installed, but leave the +dnl ability to suppress that for unit-testing. +AC_DEFUN([CF_INSTALL_OPT_S], +[ +AC_MSG_CHECKING(if you want to install stripped executables) +CF_ARG_DISABLE(stripping, + [ --disable-stripping do not strip (debug info) installed executables], + [enable_stripping=no], + [enable_stripping=yes]) +AC_MSG_RESULT($enable_stripping) + +if test "$enable_stripping" = yes +then + INSTALL_OPT_S="-s" +else + INSTALL_OPT_S= +fi +AC_SUBST(INSTALL_OPT_S) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59 +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 +dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_INTEL_COMPILER],[ +AC_REQUIRE([AC_CANONICAL_HOST]) +ifelse([$2],,INTEL_COMPILER,[$2])=no + +if test "$ifelse([$1],,[$1],GCC)" = yes ; then + case "$host_os" in + (linux*|gnu*) + 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([],[ +#ifdef __INTEL_COMPILER +#else +make an error +#endif +],[ifelse([$2],,INTEL_COMPILER,[$2])=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ISASCII version: 4 updated: 2012/10/06 17:56:13 +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 ],[int x = isascii(' ')], + [cf_cv_have_isascii=yes], + [cf_cv_have_isascii=no]) +])dnl +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: 12 updated: 2020/03/19 20:23:48 +dnl ------------ +dnl Add checks for large file support. +AC_DEFUN([CF_LARGEFILE],[ +ifdef([AC_FUNC_FSEEKO],[ + AC_SYS_LARGEFILE + if test "$enable_largefile" != no ; then + AC_FUNC_FSEEKO + + # Normally we would collect these definitions in the config.h, + # but (like _XOPEN_SOURCE), some environments rely on having these + # defined before any of the system headers are included. Another + # case comes up with C++, e.g., on AIX the compiler compiles the + # header files by themselves before looking at the body files it is + # told to compile. For ncurses, those header files do not include + # the config.h + if test "$ac_cv_sys_large_files" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_LARGE_FILES) + fi + if test "$ac_cv_sys_largefile_source" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_LARGEFILE_SOURCE) + fi + if test "$ac_cv_sys_file_offset_bits" != no + then + CF_APPEND_TEXT(CPPFLAGS,-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits) + fi + + AC_CACHE_CHECK(whether to use struct dirent64, cf_cv_struct_dirent64,[ + AC_TRY_COMPILE([ +#pragma GCC diagnostic error "-Wincompatible-pointer-types" +#include +#include + ],[ + /* if transitional largefile support is setup, this is true */ + extern struct dirent64 * readdir(DIR *); + struct dirent64 *x = readdir((DIR *)0); + struct dirent *y = readdir((DIR *)0); + int z = x - y; + (void)z; + ], + [cf_cv_struct_dirent64=yes], + [cf_cv_struct_dirent64=no]) + ]) + test "$cf_cv_struct_dirent64" = yes && AC_DEFINE(HAVE_STRUCT_DIRENT64,1,[Define to 1 if we have struct dirent64]) + fi +]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_LDFLAGS_STATIC version: 14 updated: 2021/01/02 17:09:14 +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 +dnl ensure that the linker picks up a given library based on its position in +dnl the list of linker options and libraries. +AC_DEFUN([CF_LDFLAGS_STATIC],[ + +if test "$GCC" = yes ; then + case "$cf_cv_system_name" in + (OS/2*|os2*|aix[[4]]*|solaris2.1[[0-9]]|darwin*) + LDFLAGS_STATIC= + LDFLAGS_SHARED= + ;; + (*) # normally, except when broken + LDFLAGS_STATIC=-static + LDFLAGS_SHARED=-dynamic + ;; + esac +else + case "$cf_cv_system_name" in + (aix[[4-7]]*) # from ld manpage + LDFLAGS_STATIC=-bstatic + LDFLAGS_SHARED=-bdynamic + ;; + (hpux*) # from ld manpage 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 + LDFLAGS_STATIC=-Bstatic + LDFLAGS_SHARED=-Bdynamic + ;; + (osf[[45]]*) # from ld manpage osf4.0d, osf5.1 + # alternative "-oldstyle_liblookup" (not in cc manpage) + LDFLAGS_STATIC=-noso + LDFLAGS_SHARED=-so_archive + ;; + (solaris2*) + LDFLAGS_STATIC=-Bstatic + LDFLAGS_SHARED=-Bdynamic + ;; + esac +fi + +if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED" +then + AC_MSG_CHECKING(if linker supports switching between static/dynamic) + + rm -f libconftest.a + cat >conftest.$ac_ext < +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 + fi + rm -f conftest.* + + cf_save_LIBS="$LIBS" + + LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS" + AC_TRY_LINK([ +#line __oline__ "configure" +#include +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*) + cf_ldflags_static=no + ;; + (*) + cf_ldflags_static=yes + ;; + esac +],[cf_ldflags_static=no]) + + rm -f libconftest.* + LIBS="$cf_save_LIBS" + + AC_MSG_RESULT($cf_ldflags_static) + + if test "$cf_ldflags_static" != yes + then + LDFLAGS_STATIC= + LDFLAGS_SHARED= + fi +else + LDFLAGS_STATIC= + LDFLAGS_SHARED= +fi + +AC_SUBST(LDFLAGS_STATIC) +AC_SUBST(LDFLAGS_SHARED) +]) +dnl --------------------------------------------------------------------------- +dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl For the given system and compiler, find the compiler flags to pass to the +dnl loader to use the "rpath" feature. +AC_DEFUN([CF_LD_RPATH_OPT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) + +LD_RPATH_OPT= +if test "x$cf_cv_enable_rpath" != xno +then + AC_MSG_CHECKING(for an rpath option) + case "$cf_cv_system_name" in + (irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; + (linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (openbsd[[2-9]].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (dragonfly*) + LD_RPATH_OPT="-rpath " + ;; + (netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; + (solaris2*) + LD_RPATH_OPT="-R" + ;; + (*) + ;; + esac + AC_MSG_RESULT($LD_RPATH_OPT) + + case "x$LD_RPATH_OPT" in + (x-R*) + 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) + LIBS="$cf_save_LIBS" + AC_MSG_RESULT($cf_rpath_space) + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LD_SEARCHPATH version: 3 updated: 2021/03/05 19:13:35 +dnl ---------------- +dnl Try to obtain the linker's search-path, for use in scripts. +dnl +dnl Ignore LD_LIBRARY_PATH, etc. +AC_DEFUN([CF_LD_SEARCHPATH],[ +AC_CACHE_CHECK(for linker search path,cf_cv_ld_searchpath,[ + +if test "$cross_compiling" != yes ; then + +# GNU binutils' ld does not involve permissions which may stop ldconfig. +cf_pathlist=`ld --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[[("=]][[("=]]*,,g' -e 's/"[[)]];//gp' | sort -u` + +# The -NX options tell newer versions of Linux ldconfig to not attempt to +# update the cache, which makes it run faster. +test -z "$cf_pathlist" && \ + cf_pathlist=`(ldconfig -NX -v) 2>/dev/null | sed -e '/^[[ ]]/d' -e 's/:$//' | sort -u` + +test -z "$cf_pathlist" && + cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e '/^[[ ]]/d' -e 's/:$//p' | sort -u` + +# This works with OpenBSD 6.5, which lists only filenames +test -z "$cf_pathlist" && + cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*[$],\1,p' | sort -u` + +if test -z "$cf_pathlist" +then + # dyld default path with MacOS + if test -f /usr/bin/otool && test "x`uname -s`" = xDarwin + then + # do this to bypass check + cf_cv_ld_searchpath='$HOME/lib' + cf_pathlist="/usr/local/lib /lib /usr/lib" + fi +fi + +if test -z "$cf_pathlist" +then + # Solaris is "SunOS" + if test -f /usr/bin/isainfo && test "x`uname -s`" = xSunOS + then + case x`(isainfo -b)` in + (x64) + cf_pathlist="$cf_pathlist /lib/64 /usr/lib/64" + ;; + (x32) + test -d /usr/ccs/lib && cf_pathlist="$cf_pathlist /usr/ccs/lib" + cf_pathlist="$cf_pathlist /lib /usr/lib" + ;; + (*) + AC_MSG_WARN(problem with Solaris architecture) + ;; + esac + fi +fi + +if test -z "$cf_pathlist" +then + # HP-UX + if test x"`uname -s`" = xHP-UX + then + case x`getconf LONG_BIT` in + (x64) + cf_pathlist="/usr/lib/hpux64" + ;; + (x*) + cf_pathlist="/usr/lib/hpux32" + ;; + esac + fi +fi + +fi + +# If nothing else, assume it is conventional +test -z "$cf_pathlist" && cf_pathlist="/usr/lib /lib" + +# Finally, check that this is only directories +for cf_path in [$]0 $cf_pathlist +do + if test -d "$cf_path"; then + test -n "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath="${cf_cv_ld_searchpath} " + cf_cv_ld_searchpath="${cf_cv_ld_searchpath}${cf_path}" + fi +done + +# Ensure that it is nonempty +test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib +]) + +LD_SEARCHPATH=`echo "$cf_cv_ld_searchpath"|sed -e 's/ /|/g'` +AC_SUBST(LD_SEARCHPATH) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Construct a search-list of directories for a nonstandard library-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_LIBRARY_PATH], +[ +$1= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE) + cf_library_path_list="$cf_library_path_list [$]$1" + ;; + esac + done +fi + +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 ------------------ +AC_DEFUN([CF_LIBTOOL_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.]].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_PREFIX version: 14 updated: 2021/01/01 13:31:04 +dnl ------------- +dnl Compute the library-prefix for the given host system +dnl $1 = variable to set +define([CF_LIB_PREFIX], +[ + case "$cf_cv_system_name" in + (OS/2*|os2*) + if test "$DFT_LWR_MODEL" = libtool; then + LIB_PREFIX='lib' + else + LIB_PREFIX='' + fi + ;; + (*-msvc*) + LIB_PREFIX='' + ;; + (*) LIB_PREFIX='lib' + ;; + esac +ifelse($1,,,[$1=$LIB_PREFIX]) + AC_SUBST(LIB_PREFIX) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_RULES version: 97 updated: 2021/07/17 13:10:54 +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 +dnl subdirectory is a library-source directory, modify the Libs_To_Make list in +dnl the corresponding makefile to list the models that we'll generate. +dnl +dnl For shared libraries, make a list of symbolic links to construct when +dnl generating each library. The convention used for Linux is the simplest +dnl one: +dnl lib.so -> +dnl lib.so. -> +dnl lib.so.. +dnl +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 + +cf_prefix=$LIB_PREFIX +AC_REQUIRE([CF_SUBST_NCURSES_VERSION]) + +case "$cf_cv_shlib_version" in +(cygdll|msysdll|mingw|msvcdll) + TINFO_NAME=$TINFO_ARG_SUFFIX + TINFO_SUFFIX=.dll + ;; +esac + +if test -n "$TINFO_SUFFIX" ; then + case "$TINFO_SUFFIX" in + (tw*) + TINFO_NAME="${TINFO_NAME}tw${EXTRA_SUFFIX}" + TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^tw'$EXTRA_SUFFIX'//'` + ;; + (t*) + TINFO_NAME="${TINFO_NAME}t${EXTRA_SUFFIX}" + TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^t'$EXTRA_SUFFIX'//'` + ;; + (w*) + TINFO_NAME="${TINFO_NAME}w${EXTRA_SUFFIX}" + TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^w'$EXTRA_SUFFIX'//'` + ;; + esac +fi + +for cf_dir in $SRC_SUBDIRS +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + elif test -f "$srcdir/$cf_dir/modules" ; then + + SHARED_LIB= + Libs_To_Make= + cf_awk_program= + if test -n "${cf_cv_abi_version}" && test "x${cf_cv_abi_version}" != "x5" + then + cf_awk_program="$cf_awk_program\ +/deprecated in ABI${cf_cv_abi_version}/ { next; }\ +{ sub(\"NCURSES([[WT]]+)?\", \"&${cf_cv_abi_version}\"); }\ +" + fi + + if test "x$WILDCARD_SYMS" = xno + then + cf_awk_program="$cf_awk_program\ +/[[ ]]_\\*;/ { skip=1; next; }\ +" + fi + + if test "x$cf_awk_program" != "x" + then + cat >>$cf_dir/Makefile <\[$]@ + +distclean:: + rm -f resulting.map +CF_EOF + fi + + for cf_item in $cf_LIST_MODELS + do + CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf) + if test "$cf_dir" = "c++" + then + CF_MAP_LIB_BASENAME(cf_libname,cxx) + else + CF_MAP_LIB_BASENAME(cf_libname,$cf_dir) + fi + test -z "$cf_libname" && cf_libname="$cf_dir" + if test "$cf_item" = shared ; then + if test -n "${LIB_SUFFIX}" + then + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + else + cf_shared_suffix="$cf_suffix" + fi + if test "$cf_cv_do_symlinks" = yes ; then + cf_version_name= + + case "$cf_cv_shlib_version" in + (rel) + cf_version_name=REL_VERSION + ;; + (abi) + cf_version_name=ABI_VERSION + ;; + esac + + if test -n "$cf_version_name" + then + case "$cf_cv_system_name" in + (darwin*) + # "w", etc? + cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix" + ;; + (*) + cf_suffix="$cf_suffix"'.${'$cf_version_name'}' + ;; + esac + fi + if test -n "${USE_LIB_SUFFIX}" + then + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + else + cf_shared_suffix="$cf_suffix" + fi + fi + # cygwin needs import library, and has unique naming convention + # use autodetected ${cf_prefix} for import lib and static lib, but + # use 'cyg' prefix for shared lib. + case "$cf_cv_shlib_version" in + (cygdll) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/cyg${cf_libname}${cf_cygsuf}" + ;; + (msysdll) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/msys-${cf_libname}${cf_cygsuf}" + ;; + (mingw) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}" + ;; + (msvcdll) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/${cf_libname}${cf_cygsuf}" + ;; + (*) + cf_add_lib= + ;; + esac + if test -n "$cf_add_lib" + then + Libs_To_Make="$Libs_To_Make $cf_add_lib" + continue + fi + fi + cf_add_lib="../lib/${cf_prefix}${cf_libname}${cf_suffix}" + Libs_To_Make="$Libs_To_Make $cf_add_lib" + done + + if test "$cf_dir" = ncurses ; then + cf_subsets="$LIB_SUBSETS" + cf_r_parts="$cf_subsets" + cf_liblist="$Libs_To_Make" + + while test -n "$cf_r_parts" + do + cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'` + cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[[^ ]]* //'` + if test "$cf_l_parts" != "$cf_r_parts" ; then + 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` + ;; + (*ticlib*) + cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g` + ;; + (*) + break + ;; + esac + if test -n "$cf_add_lib"; then + Libs_To_Make="$cf_add_lib $Libs_To_Make" + fi + else + break + fi + done + else + cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'` + fi + + if test "$cf_dir" = c++; then + if test "x$with_shared_cxx" != xyes && test -n "$cf_shared_suffix"; then + cf_list= + for cf_item in $Libs_To_Make + do + case "$cf_item" in + (*.a) + ;; + (*) + cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"` + ;; + esac + for cf_test in $cf_list + do + if test "$cf_test" = "$cf_item" + then + cf_LIST_MODELS=`echo "$cf_LIST_MODELS" | sed -e 's/normal//'` + cf_item= + break + fi + done + test -n "$cf_item" && cf_list="$cf_list $cf_item" + done + Libs_To_Make="$cf_list" + fi + fi + + sed -e "s%@Libs_To_Make@%$Libs_To_Make%" \ + -e "s%@SHARED_LIB@%$SHARED_LIB%" \ + "$cf_dir/Makefile" >$cf_dir/Makefile.out + mv "$cf_dir/Makefile.out" "$cf_dir/Makefile" + + $AWK -f "$srcdir/mk-0th.awk" \ + libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" ticlib="$TICS_LIB_SUFFIX" termlib="$TINFO_LIB_SUFFIX" \ + "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile + + for cf_subset in $cf_subsets + do + cf_subdirs= + for cf_item in $cf_LIST_MODELS + do + + echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})" + CF_UPPER(cf_ITEM,$cf_item) + + CXX_MODEL=$cf_ITEM + if test "$CXX_MODEL" = SHARED; then + case "$cf_cv_shlib_version" in + (cygdll|msysdll|mingw|msvcdll) + test "x$with_shared_cxx" = xno && CF_VERBOSE(overriding CXX_MODEL to SHARED) + with_shared_cxx=yes + ;; + (*) + test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL + ;; + esac + fi + + CF_LIB_SUFFIX($cf_item,cf_suffix,cf_depsuf) + CF_OBJ_SUBDIR($cf_item,cf_subdir) + + # Test for case where we build libtinfo with a different name. + cf_libname=$cf_dir + if test "$cf_dir" = ncurses ; then + case "$cf_subset" in + (*base*) + cf_libname=${cf_libname}$USE_LIB_SUFFIX + ;; + (*termlib*) + cf_libname=$TINFO_LIB_SUFFIX + ;; + (ticlib*) + cf_libname=$TICS_LIB_SUFFIX + ;; + esac + elif test "$cf_dir" = c++ ; then + CF_MAP_LIB_BASENAME(cf_libname,cxx) + cf_libname=${cf_libname}$USE_LIB_SUFFIX + else + CF_MAP_LIB_BASENAME(cf_libname,$cf_dir) + cf_libname=${cf_libname}$USE_LIB_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}%%"` + fi + + # These dependencies really are for development, not + # builds, but they are useful in porting, too. + cf_depend="../include/ncurses_cfg.h" + if test "$srcdir" = "."; then + cf_reldir="." + else + cf_reldir="\${srcdir}" + fi + + if test -f "$srcdir/$cf_dir/$cf_dir.priv.h" ; then + cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h" + elif test -f "$srcdir/$cf_dir/curses.priv.h" ; then + cf_depend="$cf_depend $cf_reldir/curses.priv.h" + fi + + 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 + (tw*) + cf_libname=`echo "$cf_libname" | sed 's/tw'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^tw'$EXTRA_SUFFIX'//'` + cf_dir_suffix=tw$EXTRA_SUFFIX + ;; + (t*) + cf_libname=`echo "$cf_libname" | sed 's/t'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^t'$EXTRA_SUFFIX'//'` + cf_dir_suffix=t$EXTRA_SUFFIX + ;; + (w*) + cf_libname=`echo "$cf_libname" | sed 's/w'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^w'$EXTRA_SUFFIX'//'` + cf_dir_suffix=w$EXTRA_SUFFIX + ;; + (*) + cf_libname=`echo "$cf_libname" | sed 's/'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^'$EXTRA_SUFFIX'//'` + cf_dir_suffix=$EXTRA_SUFFIX + ;; + esac + fi + fi + + $AWK -f "$srcdir/mk-1st.awk" \ + name=${cf_libname}${cf_dir_suffix} \ + traces=$LIB_TRACING \ + MODEL=$cf_ITEM \ + CXX_MODEL=$CXX_MODEL \ + LIB_SUFFIX=$LIB_SUFFIX \ + USE_LIB_SUFFIX=$USE_LIB_SUFFIX \ + make_phony="${cf_cv_make_PHONY:-no}" \ + model=$cf_subdir \ + prefix=$cf_prefix \ + suffix=$cf_suffix \ + subset=$cf_subset \ + driver=$cf_cv_term_driver \ + SymLink="$LN_S" \ + TermlibRoot=$TINFO_NAME \ + TermlibSuffix=$TINFO_SUFFIX \ + ShlibVer=$cf_cv_shlib_version \ + ShlibVerInfix=$cf_cv_shlib_version_infix \ + ReLink=${cf_cv_do_relink:-no} \ + ReRanlib=${cf_cv_do_reranlib:-yes} \ + DoLinks=$cf_cv_do_symlinks \ + rmSoLocs=$cf_cv_rm_so_locs \ + ldconfig="$LDCONFIG" \ + overwrite=$WITH_OVERWRITE \ + depend="$cf_depend" \ + host="$host" \ + libtool_version="$LIBTOOL_VERSION" \ + "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile + + cf_suffix="$old_cf_suffix" + + for cf_subdir2 in $cf_subdirs lib + do + test "$cf_subdir" = "$cf_subdir2" && break + done + test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \ + $AWK -f "$srcdir/mk-2nd.awk" \ + name=$cf_dir \ + traces=$LIB_TRACING \ + MODEL=$cf_ITEM \ + model=$cf_subdir \ + subset=$cf_subset \ + srcdir=$srcdir \ + echo=$WITH_ECHO \ + crenames=$cf_cv_prog_CC_c_o \ + cxxrenames=$cf_cv_prog_CXX_c_o \ + "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile + cf_subdirs="$cf_subdirs $cf_subdir" + done + done + fi + + echo ' ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >>Makefile +done + +echo >> Makefile +echo '# generated by CF_LIB_RULES' >> Makefile + +if test "x$cf_cv_make_PHONY" = xyes ; then + cat >> Makefile <<-CF_EOF + + .PHONY : libs + .PHONY : lintlib + .PHONY : install.includes + .PHONY : uninstall.includes + .PHONY : install.libs + .PHONY : uninstall.libs +CF_EOF +fi + +for cf_dir in $SRC_SUBDIRS +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + fi + + if test -f "$cf_dir/Makefile" ; then + case "$cf_dir" in + (Ada95) + echo 'libs \' >> Makefile + echo 'install.libs \' >> Makefile + echo 'uninstall.libs ::' >> Makefile + echo ' ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} [$]@ )' >> Makefile + ;; + esac + fi + + if test -f "$srcdir/$cf_dir/modules" ; then + + if test "x$cf_cv_make_PHONY" = xyes ; then + cat >> Makefile <<-CF_EOF + + .PHONY : install.$cf_dir + .PHONY : uninstall.$cf_dir +CF_EOF + fi + + echo >> Makefile + if test -f "$srcdir/$cf_dir/headers" ; then +cat >> Makefile <> Makefile <> Makefile <> Makefile <<-CF_EOF + + .PHONY : install.data + .PHONY : uninstall.data +CF_EOF +fi + +if test "x$cf_with_db_install" = xyes; then +cat >> Makefile <> Makefile <> Makefile <<-CF_EOF + + .PHONY : install.man + .PHONY : uninstall.man +CF_EOF +fi + +cat >> Makefile <> Makefile <> Makefile <headers.sh <>headers.sh </<\$END\/\$NAME>/" >> \$TMPSED + done + ;; +(*) + echo "" >> \$TMPSED + ;; +esac +CF_EOF + +else + cat >>headers.sh <//" >> \$TMPSED + NAME=ncurses.h + fi + echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED + done + ;; +(*) + echo "s///" >> \$TMPSED + ;; +esac +CF_EOF +fi +cat >>headers.sh < \$TMPSRC +NAME=\`basename \$SRC\` +CF_EOF +if test "$WITH_CURSES_H" != yes; then + cat >>headers.sh <>headers.sh <>$cf_dir/Makefile + fi + + if test -f "$srcdir/$cf_dir/modules" ; then + if test "$cf_dir" != "c++" ; then + if test "x$cf_cv_make_PHONY" = xyes ; then + cat >> $cf_dir/Makefile <<-CF_EOF + + .PHONY : depend +CF_EOF + fi + + cat >>$cf_dir/Makefile <<"CF_EOF" +depend : ${AUTO_SRC} + makedepend -- ${CPPFLAGS} -- ${C_SRC} + +# DO NOT DELETE THIS LINE -- make depend depends on it. +CF_EOF + fi + fi +done +AC_SUBST(Libs_To_Make) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_SONAME version: 9 updated: 2021/01/04 18:48:01 +dnl ------------- +dnl Find the and soname for the given shared library. Set the cache variable +dnl cf_cv_$3_soname to this, unless it is not found. Then set the cache +dnl variable to "unknown". +dnl +dnl $1 = headers +dnl $2 = code +dnl $3 = library name +AC_DEFUN([CF_LIB_SONAME], +[AC_REQUIRE([AC_PROG_FGREP])dnl + +AC_CACHE_CHECK(for soname of $3 library,cf_cv_$3_soname,[ + +cf_cv_$3_soname=unknown +if test "$cross_compiling" != yes ; then +cat >conftest.$ac_ext </dev/null | sed -e 's,^.*/,,' -e 's, .*$,,' | ${FGREP-fgrep} lib$3.`" + test -z "$cf_cv_$3_soname" && cf_cv_$3_soname=unknown + fi + fi +rm -rf ./conftest* +LIBS="$cf_save_LIBS" +fi +]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_LIB_SUFFIX version: 28 updated: 2021/01/01 16:53:59 +dnl ------------- +dnl Compute the library file-suffix from the given model name +dnl $1 = model name +dnl $2 = variable to set (the nominal library suffix) +dnl $3 = dependency variable to set (actual filename) +dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. +AC_DEFUN([CF_LIB_SUFFIX], +[ + case X$1 in + (Xlibtool) + $2='.la' + $3=[$]$2 + ;; + (Xdebug) + case "$cf_cv_system_name" in + (*-msvc*) + $2='_g.lib' + ;; + (*) + $2='_g.a' + ;; + esac + $3=[$]$2 + ;; + (Xprofile) + case "$cf_cv_system_name" in + (*-msvc*) + $2='_p.lib' + ;; + (*) + $2='_p.a' + ;; + esac + $3=[$]$2 + ;; + (Xshared) + case "$cf_cv_system_name" in + (aix[[5-7]]*) + $2='.so' + $3=[$]$2 + ;; + (*-msvc*) + $2='.dll' + $3='.dll.lib' + ;; + (cygwin*|msys*|mingw*) + $2='.dll' + $3='.dll.a' + ;; + (darwin*) + $2='.dylib' + $3=[$]$2 + ;; + (hpux*) + case "$target" in + (ia64*) + $2='.so' + $3=[$]$2 + ;; + (*) + $2='.sl' + $3=[$]$2 + ;; + esac + ;; + (*) + $2='.so' + $3=[$]$2 + ;; + esac + ;; + (*) + case "$target" in + (*-msvc*) + $2='.lib' + ;; + (*) + $2='.a' + ;; + esac + $3=[$]$2 + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + $2="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$2}" + $3="${LIB_SUFFIX}${EXTRA_SUFFIX}[$]{$3}" + fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIB_TYPE version: 5 updated: 2015/04/17 21:13:04 +dnl ----------- +dnl Compute the string to append to -library from the given model name +dnl $1 = model name +dnl $2 = variable to set +dnl The variable $LIB_SUFFIX, if set, prepends the variable to set. +AC_DEFUN([CF_LIB_TYPE], +[ + case $1 in + (libtool) $2='' ;; + (normal) $2='' ;; + (debug) $2='_g' ;; + (profile) $2='_p' ;; + (shared) $2='' ;; + esac + test -n "$LIB_SUFFIX" && $2="${LIB_SUFFIX}[$]{$2}" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LINK_DATAONLY version: 13 updated: 2020/02/08 15:59:30 +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 +dnl have to provide wrappers for global tables to ensure they're linked +dnl properly. +AC_DEFUN([CF_LINK_DATAONLY], +[ +AC_MSG_CHECKING([if data-only library module links]) +AC_CACHE_VAL(cf_cv_link_dataonly,[ + rm -f conftest.a + cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null + fi + rm -f conftest.$ac_ext data.o + cat >conftest.$ac_ext <&AC_FD_CC 1>/dev/null + fi + rm -f conftest.$ac_ext func.o + ( eval $RANLIB conftest.a ) 2>&AC_FD_CC >/dev/null + cf_saveLIBS="$LIBS" + LIBS="conftest.a $LIBS" + AC_TRY_RUN([ + int main(void) + { + extern int testfunc(); + ${cf_cv_main_return:-return} (!testfunc()); + } + ], + [cf_cv_link_dataonly=yes], + [cf_cv_link_dataonly=no], + [cf_cv_link_dataonly=unknown]) + LIBS="$cf_saveLIBS" + ]) +AC_MSG_RESULT($cf_cv_link_dataonly) + +if test "$cf_cv_link_dataonly" = no ; then + AC_DEFINE(BROKEN_LINKER,1,[if data-only library module does not link]) + BROKEN_LINKER=1 +fi +AC_SUBST(BROKEN_LINKER) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LINK_FUNCS version: 11 updated: 2021/04/18 14:08:47 +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. +dnl A few non-systems implement neither (or have nonfunctional versions). +dnl +dnl This allows for a 2-second difference in modification times to allow for +dnl some marginal NFS implementations. +AC_DEFUN([CF_LINK_FUNCS], +[ +AC_CHECK_HEADERS( \ +unistd.h \ +) +AC_CHECK_FUNCS( \ + remove \ + unlink ) + +if test "$cross_compiling" = yes ; then + AC_CHECK_FUNCS( \ + link \ + symlink ) +else + AC_CACHE_CHECK(if link/symlink functions work,cf_cv_link_funcs,[ + cf_cv_link_funcs= + for cf_func in link symlink ; do + AC_TRY_RUN([ +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +int main(void) +{ + int fail = 0; + char *src = "conftest.tmp"; + char *dst = "conftest.chk"; + struct stat src_sb, dst_sb; + FILE *fp = fopen(src, "w"); + if (fp == 0) { fail = 3; } else { + fclose(fp); stat(src, &src_sb); + if ($cf_func(src, dst) < 0) { + fail = 1; + } else if (stat(dst, &dst_sb) < 0) { + fail = 2; + } else { + long diff = (dst_sb.st_mtime - src_sb.st_mtime); + if (diff < 0) diff = -diff; + if (diff > 2) fail = 3; + } + } +#ifdef HAVE_UNLINK + unlink(dst); unlink(src); +#else + remove(dst); remove(src); +#endif + ${cf_cv_main_return:-return} (fail); +} + ],[ + cf_cv_link_funcs="$cf_cv_link_funcs $cf_func" + eval 'ac_cv_func_'$cf_func'=yes'],[ + eval 'ac_cv_func_'$cf_func'=no'],[ + eval 'ac_cv_func_'$cf_func'=error']) + done + test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no + ]) + test "$ac_cv_func_link" = yes && AC_DEFINE(HAVE_LINK,1,[Define to 1 if we have link() function]) + test "$ac_cv_func_symlink" = yes && AC_DEFINE(HAVE_SYMLINK,1,[Define to 1 if we have symlink() function]) +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 </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 ------------- +dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which +dnl acts as a placeholder. +dnl +dnl The ".PHONY" feature was proposed in 2011 here +dnl https://www.austingroupbugs.net/view.php?id=523 +dnl and is scheduled for release in P1003.1 Issue 8 (late 2022). +dnl +dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with +dnl a few others (i.e., GNU make and the non-POSIX "BSD" make): +dnl +dnl + This is a GNU make feature (since April 1988, but in turn from binutils, +dnl date unspecified). +dnl +dnl + It was adopted in NetBSD make in June 1995. +dnl +dnl + The other BSD make programs are derived from the NetBSD make (and for +dnl that reason are not actually different "implementations"). +dnl +dnl + Some features of NetBSD make were actually adapted from pmake, which +dnl began as a modified GNU make starting in 1993. +dnl +dnl + Version 3.8 of the dmake program in January 1992 also implemented this +dnl GNU make extension, but is less well known than the BSD make. +AC_DEFUN([CF_MAKE_PHONY],[ +AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[ + rm -rf conftest* + ( + mkdir conftest || exit 1 + cd conftest + cat >makefile <<'CF_EOF' +.PHONY: always +DATA=0 +always: always.out + @echo "** making [$]@ [$](DATA)" +once: once.out + @echo "** making [$]@ [$](DATA)" +always.out: + @echo "** making [$]@ [$](DATA)" + echo [$](DATA) > [$]@ +once.out: + @echo "** making [$]@ [$](DATA)" + echo [$](DATA) > [$]@ +CF_EOF + for cf_data in 1 2 3 + do + ${MAKE:-make} always DATA=$cf_data + ${MAKE:-make} once DATA=$cf_data + ${MAKE:-make} -t always once + if test -f always ; then + echo "no (case 1)" > ../conftest.tmp + elif test ! -f always.out ; then + echo "no (case 2)" > ../conftest.tmp + elif test ! -f once.out ; then + echo "no (case 3)" > ../conftest.tmp + elif ! cmp -s always.out once.out ; then + echo "no (case 4)" > ../conftest.tmp + diff always.out once.out + else + cf_check="`cat always.out`" + if test "x$cf_check" != "x$cf_data" ; then + echo "no (case 5)" > ../conftest.tmp + else + echo yes > ../conftest.tmp + rm -f ./*.out + continue + fi + fi + break + done + ) >&AC_FD_CC 2>&1 + cf_cv_make_PHONY="`cat conftest.tmp`" + rm -rf conftest* +]) +MAKE_NO_PHONY="#" +MAKE_PHONY="#" +test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY= +test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY= +AC_SUBST(MAKE_NO_PHONY) +AC_SUBST(MAKE_PHONY) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 +dnl ------------ +dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have +dnl a monocase filesystem. +AC_DEFUN([CF_MAKE_TAGS],[ +AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) + +AC_CHECK_PROGS(CTAGS, exctags ctags) +AC_CHECK_PROGS(ETAGS, exetags etags) + +AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) + +if test "$cf_cv_mixedcase" = yes ; then + AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +AC_SUBST(CTAGS) +AC_SUBST(ETAGS) + +AC_SUBST(MAKE_UPPER_TAGS) +AC_SUBST(MAKE_LOWER_TAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_FORMAT version: 15 updated: 2021/09/04 06:35:04 +dnl ----------------- +dnl Option to allow user to override automatic configuration of manpage format. +dnl There are several special cases: +dnl +dnl gzip - man checks for, can display gzip'd files +dnl compress - man checks for, can display compressed files +dnl BSDI - files in the cat-directories are suffixed ".0" +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 convention would not match our use). +AC_DEFUN([CF_MANPAGE_FORMAT], +[ +AC_REQUIRE([CF_PATHSEP]) +AC_MSG_CHECKING(format of man-pages) + +AC_ARG_WITH(manpage-format, + [ --with-manpage-format specify manpage-format: gzip/compress/BSDI/normal and + optionally formatted/catonly, e.g., gzip,formatted], + [MANPAGE_FORMAT=$withval], + [MANPAGE_FORMAT=unknown]) + +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 + (*.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 + (gzip|compress|BSDI|normal|formatted|catonly) + ;; + (*) + cf_unknown="$cf_unknown $cf_option" + ;; + esac + done + ;; +esac + +AC_MSG_RESULT($MANPAGE_FORMAT) +if test -n "$cf_unknown" ; then + AC_MSG_WARN(Unexpected manpage-format $cf_unknown) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_RENAMES version: 12 updated: 2021/01/01 16:53:59 +dnl ------------------ +dnl The Debian people have their own naming convention for manpages. 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_ARG_WITH(manpage-renames, + [ --with-manpage-renames specify manpage-renaming], + [MANPAGE_RENAMES=$withval], + [MANPAGE_RENAMES=yes]) + +case ".$MANPAGE_RENAMES" in +(.no) + ;; +(.|.yes) + # Debian 'man' program? + if test -f /etc/debian_version ; then + MANPAGE_RENAMES=`cd "$srcdir" && pwd`/man/man_db.renames + else + MANPAGE_RENAMES=no + fi + ;; +esac + +if test "$MANPAGE_RENAMES" != no ; then + if test -f "$srcdir/man/$MANPAGE_RENAMES" ; then + MANPAGE_RENAMES=`cd "$srcdir/man" && pwd`/$MANPAGE_RENAMES + elif test ! -f "$MANPAGE_RENAMES" ; then + AC_MSG_ERROR(not a filename: $MANPAGE_RENAMES) + fi + + test ! -d man && mkdir man + + # Construct a sed-script to perform renaming within man-pages + if test -n "$MANPAGE_RENAMES" ; then + test ! -d man && mkdir man + $SHELL "$srcdir/man/make_sed.sh" "$MANPAGE_RENAMES" >./edit_man.sed + fi +fi + +AC_MSG_RESULT($MANPAGE_RENAMES) +AC_SUBST(MANPAGE_RENAMES) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_SYMLINKS version: 6 updated: 2015/04/17 21:13:04 +dnl ------------------- +dnl Some people expect each tool to make all aliases for manpages 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_ARG_WITH(manpage-aliases, + [ --with-manpage-aliases specify manpage-aliases using .so], + [MANPAGE_ALIASES=$withval], + [MANPAGE_ALIASES=yes]) + +AC_MSG_RESULT($MANPAGE_ALIASES) + +case "x$LN_S" in +(xln*) + cf_use_symlinks=yes + ;; +(*) + cf_use_symlinks=no + ;; +esac + +MANPAGE_SYMLINKS=no +if test "$MANPAGE_ALIASES" = yes ; then +AC_MSG_CHECKING(if manpage symlinks should be used) + +AC_ARG_WITH(manpage-symlinks, + [ --with-manpage-symlinks specify manpage-aliases using symlinks], + [MANPAGE_SYMLINKS=$withval], + [MANPAGE_SYMLINKS=$cf_use_symlinks]) + +if test "$$cf_use_symlinks" = no; then +if test "$MANPAGE_SYMLINKS" = yes ; then + AC_MSG_WARN(cannot make symlinks, will use .so files) + MANPAGE_SYMLINKS=no +fi +fi + +AC_MSG_RESULT($MANPAGE_SYMLINKS) +fi + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MANPAGE_TBL version: 3 updated: 2002/01/19 22:51:32 +dnl -------------- +dnl This option causes manpages to be run through tbl(1) to generate tables +dnl correctly. +AC_DEFUN([CF_MANPAGE_TBL], +[ +AC_MSG_CHECKING(for manpage tbl) + +AC_ARG_WITH(manpage-tbl, + [ --with-manpage-tbl specify manpage processing with tbl], + [MANPAGE_TBL=$withval], + [MANPAGE_TBL=no]) + +AC_MSG_RESULT($MANPAGE_TBL) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAN_PAGES version: 51 updated: 2021/01/05 16:29:19 +dnl ------------ +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. +AC_DEFUN([CF_MAN_PAGES], +[ +CF_HELP_MESSAGE(Options to Specify How Manpages are Installed:) +CF_MANPAGE_FORMAT +CF_MANPAGE_RENAMES +CF_MANPAGE_SYMLINKS +CF_MANPAGE_TBL + +if test "$prefix" = "NONE" ; then + cf_prefix="$ac_default_prefix" +else + cf_prefix="$prefix" +fi + +case "$MANPAGE_FORMAT" in +(*catonly*) + cf_format=yes + cf_inboth=no + ;; +(*formatted*) + cf_format=yes + cf_inboth=yes + ;; +(*) + cf_format=no + cf_inboth=no + ;; +esac + +test ! -d man && mkdir man + +cf_so_strip= +cf_compress= +case "$MANPAGE_FORMAT" in +(*compress*) + cf_so_strip="Z" + cf_compress=compress + ;; +(*gzip*) + cf_so_strip="gz" + cf_compress=gzip + ;; +esac + +cf_edit_man=./edit_man.sh +cf_man_alias=`pwd`/man_alias.sed + +cat >$cf_edit_man <>$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 + ifelse($1,,,[ + for cf_name in $1 + 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_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP +CF_EOF +else +cat >>$cf_edit_man <\$TMP +CF_EOF +fi + +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP +fi +CF_EOF + +if test "$with_overwrite" != yes ; then +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP +CF_EOF +fi + +if test "$with_curses_h" != yes ; then +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP +CF_EOF +fi + +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP + fi +CF_EOF + +if test -n "$cf_compress" ; then +cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP +CF_EOF +if test -n "$cf_compress" ; then +cat >>$cf_edit_man <>$cf_edit_man < + #include + #include + ], + [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], + [cf_cv_need_libm=no], + [cf_cv_need_libm=yes])]) +if test "$cf_cv_need_libm" = yes +then +ifelse($1,,[ + CF_ADD_LIB(m) +],[$1=-lm]) +fi +]) +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 +dnl create a lowercase name and see it as uppercase, it doesn't support that. +AC_DEFUN([CF_MIXEDCASE_FILENAMES], +[ +AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ +if test "$cross_compiling" = yes ; then + case "$target_alias" in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +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: 11 updated: 2021/01/01 13:31:04 +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). +AC_DEFUN([CF_MKSTEMP],[ +AC_CHECK_HEADERS( \ +unistd.h \ +) +AC_CACHE_CHECK(for working mkstemp, cf_cv_func_mkstemp,[ +rm -rf ./conftest* +AC_TRY_RUN([ +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include +int main(void) +{ + char *tmpl = "conftestXXXXXX"; + char name[2][80]; + int n; + int result = 0; + int fd; + struct stat sb; + + umask(077); + for (n = 0; n < 2; ++n) { + strcpy(name[n], tmpl); + if ((fd = mkstemp(name[n])) >= 0) { + if (!strcmp(name[n], tmpl) + || stat(name[n], &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG + || (sb.st_mode & 077) != 0) { + result = 1; + } + close(fd); + } + } + if (result == 0 + && !strcmp(name[0], name[1])) + result = 1; + ${cf_cv_main_return:-return}(result); +} +],[cf_cv_func_mkstemp=yes +],[cf_cv_func_mkstemp=no +],[cf_cv_func_mkstemp=maybe]) +]) +if test "x$cf_cv_func_mkstemp" = xmaybe ; then + AC_CHECK_FUNC(mkstemp) +fi +if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then + AC_DEFINE(HAVE_MKSTEMP,1,[Define to 1 if mkstemp() is available and working.]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 +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 +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_ABI_6 version: 4 updated: 2021/01/01 13:31:04 +dnl ---------------- +dnl Set ncurses' ABI to 6 unless overridden by explicit configure option, and +dnl warn about this. +AC_DEFUN([CF_NCURSES_ABI_6],[ +if test "${with_abi_version+set}" != set; then + case "$cf_cv_rel_version" in + (5.*) + cf_cv_rel_version=6.0 + cf_cv_abi_version=6 + AC_MSG_WARN(overriding ABI version to $cf_cv_abi_version) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_WITH_ABI_VERSION version: 3 updated: 2021/01/01 13:31:04 +dnl --------------------------- +dnl Allow ncurses's ABI to be overridden. Generally this happens when a +dnl packager has incremented the ABI past that used in the original package, +dnl and wishes to keep doing this. +dnl +dnl $1 is the package name, if any, to derive a corresponding {package}_ABI +dnl symbol. +AC_DEFUN([CF_NCURSES_WITH_ABI_VERSION],[ +CF_WITH_ABI_VERSION($1) +if test "x$cf_cv_abi_version" != "x$with_abi_version" +then + case "$cf_cv_rel_version" in + (5.*) + cf_cv_rel_version=$with_abi_version.0 + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41 +dnl ------------------ +dnl see CF_WITH_NO_LEAKS +dnl +dnl $1 = option/name +dnl $2 = help-text +dnl $3 = symbol to define if the option is set +dnl $4 = additional actions to take if the option is set +AC_DEFUN([CF_NO_LEAKS_OPTION],[ +AC_MSG_CHECKING(if you want to use $1 for testing) +AC_ARG_WITH($1, + [$2], + [case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_$1=yes + AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ + $4 +]) + ;; + esac], + [with_$1=]) +AC_MSG_RESULT(${with_$1:-no}) + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + CF_ADD_CFLAGS([-g]) + ;; + esac + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NUMBER_SYNTAX version: 2 updated: 2015/04/17 21:13:04 +dnl ---------------- +dnl Check if the given variable is a number. If not, report an error. +dnl $1 is the variable +dnl $2 is the message +AC_DEFUN([CF_NUMBER_SYNTAX],[ +if test -n "$1" ; then + case $1 in + ([[0-9]]*) + ;; + (*) + AC_MSG_ERROR($2 is not a number: $1) + ;; + esac +else + AC_MSG_ERROR($2 value is empty) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_OBJ_SUBDIR version: 8 updated: 2021/01/01 13:31:04 +dnl ------------- +dnl Compute the object-directory name from the given model name +AC_DEFUN([CF_OBJ_SUBDIR], +[ + case $1 in + (libtool) $2='obj_lo' ;; + (normal) $2='objects' ;; + (debug) $2='obj_g' ;; + (profile) $2='obj_p' ;; + (shared) + case "$cf_cv_system_name" in + (cygwin|msys) + $2='objects' ;; + (*) + $2='obj_s' ;; + esac + esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATHSEP version: 8 updated: 2021/01/01 13:31:04 +dnl ---------- +dnl Provide a value for the $PATH and similar separator (or amend the value +dnl as provided in autoconf 2.5x). +AC_DEFUN([CF_PATHSEP], +[ + AC_MSG_CHECKING(for PATH separator) + case "$cf_cv_system_name" in + (os2*) PATH_SEPARATOR=';' ;; + (*) ${PATH_SEPARATOR:=':'} ;; + esac +ifelse([$1],,,[$1=$PATH_SEPARATOR]) + AC_SUBST(PATH_SEPARATOR) + AC_MSG_RESULT($PATH_SEPARATOR) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATH_PROG version: 12 updated: 2021/01/02 09:31:20 +dnl ------------ +dnl Check for a given program, defining corresponding symbol. +dnl $1 = environment variable, which is suffixed by "_PATH" in the #define. +dnl $2 = program name to find. +dnl $3 = optional list of additional program names to test. +dnl $4 = $PATH +dnl +dnl If there is more than one token in the result, #define the remaining tokens +dnl to $1_ARGS. We need this for 'install' in particular. +dnl +dnl FIXME: we should allow this to be overridden by environment variables +dnl +AC_DEFUN([CF_PATH_PROG],[ +AC_REQUIRE([CF_PATHSEP]) +test -z "[$]$1" && $1="$2" +AC_PATH_PROGS($1,[$]$1 $2 ifelse($3,,,$3),[$]$1, ifelse($4,,,$4)) + +cf_path_prog="" +cf_path_args="" +IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" +for cf_temp in $ac_cv_path_$1 +do + if test -z "$cf_path_prog" ; then + if test "$with_full_paths" = yes ; then + CF_PATH_SYNTAX(cf_temp,break) + cf_path_prog="$cf_temp" + else + cf_path_prog="`basename "$cf_temp"`" + fi + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +if test -n "$cf_path_prog" ; then + CF_MSG_LOG(defining path for ${cf_path_prog}) + AC_DEFINE_UNQUOTED($1_PATH,"$cf_path_prog",Define to pathname $1) + test -n "$cf_path_args" && AC_DEFINE_UNQUOTED($1_ARGS,"$cf_path_args",Define to provide args for $1) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 +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],[ +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".[$]$1" in +(.\[$]\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX + ;; +(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) + eval $1="[$]$1" + case ".[$]$1" in + (.NONE/*) + $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09 +dnl ------------- +dnl Check for the package-config program, unless disabled by command-line. +dnl +dnl Sets $PKG_CONFIG to the pathname of the pkg-config program. +AC_DEFUN([CF_PKG_CONFIG], +[ +AC_MSG_CHECKING(if you want to use pkg-config) +AC_ARG_WITH(pkg-config, + [ --with-pkg-config{=path} enable/disable use of pkg-config], + [cf_pkg_config=$withval], + [cf_pkg_config=yes]) +AC_MSG_RESULT($cf_pkg_config) + +case "$cf_pkg_config" in +(no) + PKG_CONFIG=none + ;; +(yes) + CF_ACVERSION_CHECK(2.52, + [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], + [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + CF_PATH_SYNTAX(PKG_CONFIG) +elif test "x$cf_pkg_config" != xno ; then + AC_MSG_WARN(pkg-config is not installed) +fi + +AC_SUBST(PKG_CONFIG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17 +dnl ----------------- +dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. +dnl +dnl POSIX.1-1990 _POSIX_SOURCE +dnl POSIX.1-1990 and _POSIX_SOURCE and +dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 +dnl Bindings Option +dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L +dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L +dnl X/Open 2000 _POSIX_C_SOURCE=200112L +dnl +dnl Parameters: +dnl $1 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_POSIX_C_SOURCE], +[AC_REQUIRE([CF_POSIX_VISIBLE])dnl + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) +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 ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif], + [cf_cv_posix_c_source=no], + [cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[[12]]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + AC_TRY_COMPILE([#include ],[ +#ifdef _POSIX_SOURCE +make an error +#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) + CFLAGS="$cf_trim_CFLAGS" + 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 ],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif],, + [cf_cv_posix_c_source=no]) + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + ]) +]) + +if test "$cf_cv_posix_c_source" != no ; then + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + CF_ADD_CFLAGS($cf_cv_posix_c_source) +fi + +fi # cf_cv_posix_visible + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 +dnl ---------------- +dnl POSIX documents test-macros which an application may set before any system +dnl headers are included to make features available. +dnl +dnl Some BSD platforms (originally FreeBSD, but copied by a few others) +dnl diverged from POSIX in 2002 by setting symbols which make all of the most +dnl recent features visible in the system header files unless the application +dnl overrides the corresponding test-macros. Doing that introduces portability +dnl problems. +dnl +dnl This macro makes a special check for the symbols used for this, to avoid a +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 ],[ +#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]) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PREDEFINE version: 2 updated: 2010/05/26 16:44:57 +dnl ------------ +dnl Add definitions to CPPFLAGS to ensure they're predefined for all compiles. +dnl +dnl $1 = symbol to test +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 +],[ +#ifndef $1 +make an error +#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 +],[ +#if $1-$2 < 0 +make an error +#endif],[cf_result=yes],[cf_result=no]) + AC_MSG_RESULT($cf_result) + if test "$cf_result" = no ; then + # perhaps we can override it - try... + CPPFLAGS="$CPPFLAGS -D$1=$2" + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04 +dnl ------------ +dnl Append definitions and rules for the given programs to the subdirectory +dnl Makefiles, and the recursion rule for the top-level Makefile. +dnl +dnl parameters +dnl $1 = script to run +dnl $2 = list of subdirectories +dnl +dnl variables +dnl $AWK +AC_DEFUN([CF_PRG_RULES], +[ +for cf_dir in $2 +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + elif test -f "$srcdir/$cf_dir/programs" ; then + $AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile + fi +done + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_AR version: 1 updated: 2009/01/01 20:15:22 +dnl ---------- +dnl Check for archiver "ar". +AC_DEFUN([CF_PROG_AR],[ +AC_CHECK_TOOL(AR, ar, ar) +]) +dnl --------------------------------------------------------------------------- +dnl CF_PROG_AWK version: 1 updated: 2006/09/16 11:40:59 +dnl ----------- +dnl Check for awk, ensure that the check found something. +AC_DEFUN([CF_PROG_AWK], +[ +AC_PROG_AWK +test -z "$AWK" && AC_MSG_ERROR(No awk program found) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 +dnl ---------- +dnl standard check for CC, plus followup sanity checks +dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name +AC_DEFUN([CF_PROG_CC],[ +CF_ACVERSION_CHECK(2.53, + [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) + AC_REQUIRE([AC_PROG_CC])], + []) +ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) +CF_GCC_VERSION +CF_ACVERSION_CHECK(2.52, + [AC_PROG_CC_STDC], + [CF_ANSI_CC_REQD]) +CF_CC_ENV_FLAGS +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_CC_C_O version: 6 updated: 2021/01/01 13:31:04 +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 +dnl be used later. The parameter is either CC or CXX. The result is the +dnl cache variable: +dnl $cf_cv_prog_CC_c_o +dnl $cf_cv_prog_CXX_c_o +dnl +dnl $1 = compiler +dnl $2 = compiler options, if any +AC_DEFUN([CF_PROG_CC_C_O], +[AC_REQUIRE([AC_PROG_CC])dnl +AC_MSG_CHECKING([whether [$]$1 understands -c and -o together]) +AC_CACHE_VAL(cf_cv_prog_$1_c_o, +[ +cat > conftest.$ac_ext <&AC_FD_CC | ${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` + fi + if test -n "$cf_gprconfig_value" + then + eval "cf_ada_config_[$]cf_gprconfig=[$]cf_gprconfig_value" + AC_MSG_RESULT($cf_gprconfig_value) + else + AC_MSG_RESULT(missing) + cf_ada_config="#" + break + fi + done + cd .. + rm -rf ./conftest* ./*~conftest* + fi + fi + if test "x$cf_ada_config" != "x#" + then + CF_GNAT_VERSION + CF_CHECK_GNAT_VERSION + AC_CHECK_PROG(M4_exists, m4, yes, no) + if test "$ac_cv_prog_M4_exists" = no; then + cf_cv_prog_gnat_correct=no + AC_MSG_WARN(Ada95 binding required program m4 not found. Ada95 binding disabled) + fi + if test "$cf_cv_prog_gnat_correct" = yes; then + AC_MSG_CHECKING(if GNAT works) + CF_GNAT_TRY_RUN([procedure conftest;], +[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_cv_prog_gnat_correct=yes], +[cf_cv_prog_gnat_correct=no]) + AC_MSG_RESULT($cf_cv_prog_gnat_correct) + fi + else + cf_cv_prog_gnat_correct=no + fi +fi + +AC_SUBST(cf_ada_make) +AC_SUBST(cf_ada_config) +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 --------------- +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 +(/*) + ;; +(*) + CF_DIRNAME(cf_dir,$INSTALL) + test -z "$cf_dir" && cf_dir=. + INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`" + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_LDCONFIG version: 5 updated: 2015/04/18 08:56:57 +dnl ---------------- +dnl Check for ldconfig, needed to fixup shared libraries that would be built +dnl and then used in the install. +AC_DEFUN([CF_PROG_LDCONFIG],[ +if test "$cross_compiling" = yes ; then + LDCONFIG=: +else + case "$cf_cv_system_name" in + (dragonfly*|mirbsd*|freebsd*) + test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R" + ;; + (*) LDPATH=$PATH:/sbin:/usr/sbin + AC_PATH_PROG(LDCONFIG,ldconfig,,$LDPATH) + ;; + esac +fi +AC_SUBST(LDCONFIG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37 +dnl ------------ +AC_DEFUN([CF_PROG_LINT], +[ +AC_CHECK_PROGS(LINT, lint cppcheck splint) +case "x$LINT" in +(xcppcheck|x*/cppcheck) + test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" + ;; +esac +AC_SUBST(LINT_OPTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_LN_S version: 2 updated: 2010/08/14 18:25:37 +dnl ------------ +dnl Combine checks for "ln -s" and "ln -sf", updating $LN_S to include "-f" +dnl option if it is supported. +AC_DEFUN([CF_PROG_LN_S],[ +AC_PROG_LN_S +AC_MSG_CHECKING(if $LN_S -f options work) + +rm -f conf$$.src conf$$dst +echo >conf$$.dst +echo first >conf$$.src +if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then + cf_prog_ln_sf=yes +else + cf_prog_ln_sf=no +fi +rm -f conf$$.dst conf$$src +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 -------- +dnl Attempt to determine if we've got one of the flavors of regular-expression +dnl code that we can support. +AC_DEFUN([CF_REGEX], +[ + +cf_regex_func=no +cf_regex_libs= +case "$host_os" in +(mingw*) + # -lsystre -ltre -lintl -liconv + AC_CHECK_LIB(systre,regcomp,[ + AC_CHECK_LIB(iconv,libiconv_open,[CF_ADD_LIB(iconv)]) + AC_CHECK_LIB(intl,libintl_gettext,[CF_ADD_LIB(intl)]) + AC_CHECK_LIB(tre,tre_regcomp,[CF_ADD_LIB(tre)]) + CF_ADD_LIB(systre) + cf_regex_func=regcomp + ],[ + AC_CHECK_LIB(gnurx,regcomp,[ + CF_ADD_LIB(gnurx) + cf_regex_func=regcomp]) + ]) + ;; +(*) + cf_regex_libs="regex re" + AC_CHECK_FUNC(regcomp,[cf_regex_func=regcomp],[ + for cf_regex_lib in $cf_regex_libs + do + AC_CHECK_LIB($cf_regex_lib,regcomp,[ + CF_ADD_LIB($cf_regex_lib) + cf_regex_func=regcomp + break]) + done + ]) + ;; +esac + +if test "$cf_regex_func" = no ; then + AC_CHECK_FUNC(compile,[cf_regex_func=compile],[ + AC_CHECK_LIB(gen,compile,[ + CF_ADD_LIB(gen) + cf_regex_func=compile])]) +fi + +if test "$cf_regex_func" = no ; then + AC_MSG_WARN(cannot find regular expression library) +fi + +AC_CACHE_CHECK(for regular-expression headers,cf_cv_regex_hdrs,[ + +cf_cv_regex_hdrs=no +case "$cf_regex_func" in +(compile) + for cf_regex_hdr in regexp.h regexpr.h + do + AC_TRY_LINK([#include <$cf_regex_hdr>],[ + char *p = compile("", "", "", 0); + int x = step("", ""); + (void)p; + (void)x; + ],[ + cf_cv_regex_hdrs=$cf_regex_hdr + break + ]) + done + ;; +(*) + for cf_regex_hdr in regex.h + do + AC_TRY_LINK([#include +#include <$cf_regex_hdr>],[ + regex_t *p = 0; + 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 + ]) + done + ;; +esac + +]) + +case "$cf_cv_regex_hdrs" in + (no) AC_MSG_WARN(no regular expression header found) ;; + (regex.h) AC_DEFINE(HAVE_REGEX_H_FUNCS,1,[Define to 1 to include regex.h for regular expressions]) ;; + (regexp.h) AC_DEFINE(HAVE_REGEXP_H_FUNCS,1,[Define to 1 to include regexp.h for regular expressions]) ;; + (regexpr.h) AC_DEFINE(HAVE_REGEXPR_H_FUNCS,1,[Define to 1 to include regexpr.h for regular expressions]) ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40 +dnl ---------------- +dnl Remove a given option from CFLAGS/CPPFLAGS +dnl $1 = option to remove +dnl $2 = variable to update +dnl $3 = nonempty to allow verbose message +define([CF_REMOVE_CFLAGS], +[ +cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ ]][[ ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ ]][[^ ]]*\\)\?%%" -e 's/^[[ ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'` + test "[$]$2" != "$cf_old_cflag" || break + ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)]) + $2="$cf_old_cflag" +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 +dnl ---------------- +dnl Remove all -U and -D options that refer to the given symbol from a list +dnl of C compiler options. This works around the problem that not all +dnl compilers process -U and -D options from left-to-right, so a -U option +dnl cannot be used to cancel the effect of a preceding -D option. +dnl +dnl $1 = target (which could be the same as the source variable) +dnl $2 = source (including '$') +dnl $3 = symbol to remove +define([CF_REMOVE_DEFINE], +[ +$1=`echo "$2" | \ + sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ + -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_LIB version: 1 updated: 2007/02/17 14:11:52 +dnl ------------- +dnl Remove the given library from the symbol +dnl +dnl $1 = target (which could be the same as the source variable) +dnl $2 = source (including '$') +dnl $3 = library to remove +define([CF_REMOVE_LIB], +[ +# remove $3 library from $2 +$1=`echo "$2" | sed -e 's/-l$3[[ ]]//g' -e 's/-l$3[$]//'` +])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 +dnl $1 = name of current macro +define([CF_RESTORE_XTRA_FLAGS], +[ +LIBS="$cf_save_LIBS_$1" +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 ------------- +AC_DEFUN([CF_RPATH_HACK], +[AC_REQUIRE([AC_PROG_FGREP])dnl +AC_REQUIRE([CF_LD_RPATH_OPT])dnl + +AC_MSG_CHECKING(for updated LDFLAGS) +if test -n "$LD_RPATH_OPT" ; then + AC_MSG_RESULT(maybe) + + AC_CHECK_PROGS(cf_ldd_prog,ldd,no) + cf_rpath_list="/usr/lib /lib" + if test "$cf_ldd_prog" != no + then + cf_rpath_oops= + +AC_TRY_LINK([#include ], + [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`]) + + # If we passed the link-test, but get a "not found" on a given library, + # this could be due to inept reconfiguration of gcc to make it only + # partly honor /usr/local/lib (or whatever). Sometimes this behavior + # is intentional, e.g., installing gcc in /usr/bin and suppressing the + # /usr/local libraries. + if test -n "$cf_rpath_oops" + then + for cf_rpath_src in $cf_rpath_oops + do + for cf_rpath_dir in \ + /usr/local \ + /usr/pkg \ + /opt/sfw + do + if test -f "$cf_rpath_dir/lib/$cf_rpath_src" + then + CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) + LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" + break + fi + done + done + fi + fi + + CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) + + CF_RPATH_HACK_2(LDFLAGS) + CF_RPATH_HACK_2(LIBS) + + CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) +else + AC_MSG_RESULT(no) +fi +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to +dnl EXTRA_LDFLAGS for each -L option found. +dnl +dnl $cf_rpath_list contains a list of directories to ignore. +dnl +dnl $1 = variable name to update. The LDFLAGS variable should be the only one, +dnl but LIBS often has misplaced -L options. +AC_DEFUN([CF_RPATH_HACK_2], +[ +CF_VERBOSE(...checking $1 [$]$1) + +cf_rpath_dst= +for cf_rpath_src in [$]$1 +do + case "$cf_rpath_src" in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +$1=$cf_rpath_dst + +CF_VERBOSE(...checked $1 [$]$1) +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44 +dnl ------------------ +dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers +dnl and libraries which do not update those variables. +dnl +dnl $1 = name of current macro +define([CF_SAVE_XTRA_FLAGS], +[ +cf_save_LIBS_$1="$LIBS" +cf_save_CFLAGS_$1="$CFLAGS" +cf_save_CPPFLAGS_$1="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[[IUD]]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SHARED_OPTS version: 107 updated: 2021/09/04 06:47:34 +dnl -------------- +dnl -------------- +dnl Attempt to determine the appropriate CC/LD options for creating a shared +dnl library. +dnl +dnl Notes: +dnl a) ${LOCAL_LDFLAGS} is used to link executables that will run within +dnl the build-tree, i.e., by making use of the libraries that are compiled in +dnl $rel_builddir/lib We avoid compiling-in a $rel_builddir/lib path for the +dnl shared library since that can lead to unexpected results at runtime. +dnl b) ${LOCAL_LDFLAGS2} has the same intention but assumes that the shared +dnl libraries are compiled in ../../lib +dnl +dnl The variable 'cf_cv_do_symlinks' is used to control whether we configure +dnl to install symbolic links to the rel/abi versions of shared libraries. +dnl +dnl The variable 'cf_cv_shlib_version' controls whether we use the rel or abi +dnl version when making symbolic links. +dnl +dnl The variable 'cf_cv_shlib_version_infix' controls whether shared library +dnl version numbers are infix (ex: libncurses..dylib) or postfix +dnl (ex: libncurses.so.). +dnl +dnl Some loaders leave 'so_locations' lying around. It is nice to clean up. +AC_DEFUN([CF_SHARED_OPTS], +[ + AC_REQUIRE([CF_LD_RPATH_OPT]) + + RM_SHARED_OPTS= + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + LD_SHARED_OPTS= + INSTALL_LIB="-m 644" + : ${rel_builddir:=.} + + shlibdir=$libdir + AC_SUBST(shlibdir) + + MAKE_DLLS="#" + AC_SUBST(MAKE_DLLS) + + cf_cv_do_symlinks=no + cf_ld_rpath_opt= + test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" + + AC_MSG_CHECKING(if release/abi version should be used for shared libs) + AC_ARG_WITH(shlib-version, + [ --with-shlib-version=X Specify rel or abi version for shared libs], + [test -z "$withval" && withval=auto + case "$withval" in + (yes) + cf_cv_shlib_version=auto + ;; + (rel|abi|auto) + cf_cv_shlib_version=$withval + ;; + (*) + AC_MSG_RESULT($withval) + AC_MSG_ERROR([option value must be one of: rel, abi, or auto]) + ;; + esac + ],[cf_cv_shlib_version=auto]) + AC_MSG_RESULT($cf_cv_shlib_version) + + cf_cv_rm_so_locs=no + cf_try_cflags= + + # Some less-capable ports of gcc support only -fpic + CC_SHARED_OPTS= + + cf_try_fPIC=no + if test "$GCC" = yes + then + cf_try_fPIC=yes + else + case "$cf_cv_system_name" in + (*linux*) # e.g., PGI compiler + cf_try_fPIC=yes + ;; + esac + fi + + if test "$cf_try_fPIC" = yes + then + AC_MSG_CHECKING(which $CC option to use) + cf_save_CFLAGS="$CFLAGS" + for CC_SHARED_OPTS in -fPIC -fpic '' + do + CFLAGS="$cf_save_CFLAGS $CC_SHARED_OPTS" + AC_TRY_COMPILE([#include ],[int x = 1],[break],[]) + done + AC_MSG_RESULT($CC_SHARED_OPTS) + CFLAGS="$cf_save_CFLAGS" + fi + + cf_cv_shlib_version_infix=no + + case "$cf_cv_system_name" in + (aix4.[3-9]*|aix[[5-7]]*) + if test "$GCC" = yes; then + CC_SHARED_OPTS='-Wl,-brtl' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@' + else + CC_SHARED_OPTS='-brtl' + # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o [$]@' + fi + ;; + (beos*) + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $[@] -Xlinker -soname=`basename $[@]` -nostart -e 0' + ;; + (cygwin*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=cygdll + cf_cv_shlib_version_infix=cygdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/cyg/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (msys*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=msysdll + cf_cv_shlib_version_infix=msysdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/msys-/lib/' -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (darwin*) + cf_try_cflags="no-cpp-precomp" + CC_SHARED_OPTS="-dynamic" + 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 + 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) + LDFLAGS=$cf_save_LDFLAGS]) + if test "$cf_cv_ldflags_search_paths_first" = yes; then + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + fi + ;; + (haiku*) + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (hpux[[7-8]]*) + # HP-UX 8.07 ld lacks "+b" option used for libdir search-list + if test "$GCC" != yes; then + CC_SHARED_OPTS='+Z' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $[@]' + INSTALL_LIB="-m 555" + ;; + (hpux*) + # (tested with gcc 2.7.2 -- I don't have c89) + if test "$GCC" = yes; then + LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' + else + CC_SHARED_OPTS='+Z' + LD_SHARED_OPTS='-Wl,+b,${libdir}' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $[@]' + # HP-UX shared libraries must be executable, and should be + # readonly to exploit a quirk in the memory manager. + INSTALL_LIB="-m 555" + ;; + (interix*) + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' + else + cf_shared_soname='`basename $[@]`' + fi + CC_SHARED_OPTS= + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $[@]' + ;; + (irix*) + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + # tested with IRIX 5.2 and 'cc'. + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $[@]` -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $[@]` -o $[@]' + fi + cf_cv_rm_so_locs=yes + ;; + (linux*|gnu*|k*bsd*-gnu) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (mingw*msvc*) + cf_cv_shlib_version=msvcdll + cf_cv_shlib_version_infix=msvcdll + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-link -dll" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ ${LD} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.lib/'\` + shift + my_ld=\[$]1 + shift + cat <<-EOF + Linking shared library + ** SHARED LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + args=\$(echo \[$]* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g") + exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args + mv "\${IMPORT_LIB}" "\${IMPORT_LIB}" +CF_EOF + chmod +x mk_shared_lib.sh + cat >mk_prog.sh <<-CF_EOF + #!$SHELL + shift + # Ignore first argument (compiler) and use LD (link.exe) unconditionally + LD="[$]LD" + clopts=() + ldopts=("/subsystem:console") + libs=() + isdll=0 + while test \[$]# -gt 0; do + case "\[$]1" in + -link) + # ignore -link argument + ;; + -M[[TD]] | -M[[TD]]d) + # ignore runtime-library option + ;; + -dll) + isdll=1 + ;; + -W* | -w*) + # ignore warnings + ;; + -D*) + clopts+=("\[$]1") + ;; + -I*) + clopts+=("\[$]1") + ;; + -l*) + libs+=("\`echo \"\[$]1\" | sed \"s/^-l//\"\`") + ;; + -L*) + ldopts+=("\`echo \"\[$]1\" | sed \"s/^-L/-LIBPATH:/\"\`") + ;; + *.obj | *.o) + ldopts+=("\[$]1") + ;; + -Wl,*) + for linkarg in \`echo '\[$]1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do + ldopts+=("\[$]{linkarg}") + done + ;; + *.lib) + ldopts+=("\[$]1") + ;; + -o) + shift + ldopts+=("-out:\[$]1") + ;; + *) + clopts+=("\[$]1") + ldopts+=("\[$]1") + ;; + esac + shift + done + if [[ "\$isdll" -ne 0 ]]; then + for lib in \[$]{libs[[*]]}; do + ldopts+=("\[$]lib.dll.lib") + done + else + for lib in \[$]{libs[[*]]}; do + ldopts+=("\[$]lib.lib") + done + fi + cat <<-EOF + Creating program + ** ld options: "\[$]{ldopts[[@]]}" +EOF + exec \[$]LD \[$]{ldopts[[@]]} +CF_EOF + chmod +x mk_prog.sh + LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh" + LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh" + ;; + (mingw*) + cf_cv_shlib_version=mingw + cf_cv_shlib_version_infix=mingw + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-Wl,--enable-auto-import" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh [$]@ [$]{CC} [$]{CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\[$]1 + IMPORT_LIB=\`echo "\[$]1" | sed -e 's/[[0-9]]*\.dll[$]/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \[$]SHARED_LIB + ** IMPORT_LIB \[$]IMPORT_LIB +EOF + exec \[$]* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\[$]{IMPORT_LIB} -Wl,--export-all-symbols -o \[$]{SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (openbsd[[2-9]].*|mirbsd*) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (nskJ*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $[@]' + ;; + (nskL*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $[@]' + ;; + (nto-qnx*|openbsd*|freebsd[[12]].*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $[@]' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (dragonfly*|freebsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $[@]' + ;; + (netbsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + if test "$cf_cv_shlib_version" = auto; then + if test -f /usr/libexec/ld.elf_so; then + cf_cv_shlib_version=abi + else + cf_cv_shlib_version=rel + fi + fi + CF_SHARED_SONAME + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $[@]' + fi + ;; + (osf*|mls+*) + # tested with OSF/1 V3.2 and 'cc' + # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't + # link with shared libs). + MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $[@]`' + case "$host_os" in + (osf4*) + MK_SHARED_LIB="${MK_SHARED_LIB} -msym" + ;; + esac + MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $[@]' + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + cf_cv_rm_so_locs=yes + ;; + (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98 + # tested with osr5.0.5 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-belf -KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $[@] .${REL_VERSION}`.${ABI_VERSION} -o [$]@' + if test "$cf_cv_enable_rpath" = yes ; then + # only way is to set LD_RUN_PATH but no switch for it + RUN_PATH=$libdir + fi + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + LINK_PROGS='LD_RUN_PATH=${libdir}' + LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' + ;; + (sunos4*) + # tested with SunOS 4.1.1 and gcc 2.7.0 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $[@]' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (solaris2*) + # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 + # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" + fi + CF_SHARED_SONAME + if test "$GCC" != yes; then + cf_save_CFLAGS="$CFLAGS" + for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O + do + CFLAGS="$cf_shared_opts $cf_save_CFLAGS" + AC_TRY_COMPILE([#include ],[printf("Hello\\n");],[break]) + done + CFLAGS="$cf_save_CFLAGS" + CC_SHARED_OPTS=$cf_shared_opts + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $[@]' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $[@]' + fi + ;; + (sysv5uw7*|unix_sv*) + # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o [$]@' + ;; + (*) + CC_SHARED_OPTS='unknown' + MK_SHARED_LIB='echo unknown' + ;; + esac + + # This works if the last tokens in $MK_SHARED_LIB are the -o target. + case "$cf_cv_shlib_version" in + (rel|abi) + case "$MK_SHARED_LIB" in + (*'-o $[@]') + test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes + ;; + (*) + AC_MSG_WARN(ignored --with-shlib-version) + ;; + esac + ;; + esac + + if test -n "$cf_try_cflags" + then +cat > conftest.$ac_ext < +int main(int argc, char *argv[[]]) +{ + printf("hello\\n"); + return (argv[[argc-1]] == 0) ; +} +EOF + cf_save_CFLAGS="$CFLAGS" + for cf_opt in $cf_try_cflags + do + CFLAGS="$cf_save_CFLAGS -$cf_opt" + AC_MSG_CHECKING(if CFLAGS option -$cf_opt works) + if AC_TRY_EVAL(ac_compile); then + AC_MSG_RESULT(yes) + cf_save_CFLAGS="$CFLAGS" + else + AC_MSG_RESULT(no) + fi + done + CFLAGS="$cf_save_CFLAGS" + fi + + + # RPATH_LIST is a colon-separated list of directories + test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}" + test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}" + + test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations" + + CF_VERBOSE(CC_SHARED_OPTS: $CC_SHARED_OPTS) + CF_VERBOSE(MK_SHARED_LIB: $MK_SHARED_LIB) + + AC_SUBST(CC_SHARED_OPTS) + AC_SUBST(LD_RPATH_OPT) + AC_SUBST(LD_SHARED_OPTS) + AC_SUBST(MK_SHARED_LIB) + AC_SUBST(RM_SHARED_OPTS) + + AC_SUBST(LINK_PROGS) + AC_SUBST(LINK_TESTS) + + AC_SUBST(EXTRA_LDFLAGS) + AC_SUBST(LOCAL_LDFLAGS) + AC_SUBST(LOCAL_LDFLAGS2) + + AC_SUBST(INSTALL_LIB) + AC_SUBST(RPATH_LIST) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SHARED_SONAME version: 3 updated: 2008/09/08 18:34:43 +dnl ---------------- +dnl utility macro for CF_SHARED_OPTS, constructs "$cf_cv_shared_soname" for +dnl substitution into MK_SHARED_LIB string for the "-soname" (or similar) +dnl option. +dnl +dnl $1 is the default that should be used for "$cf_cv_shlib_version". +dnl If missing, use "rel". +define([CF_SHARED_SONAME], +[ + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=ifelse($1,,rel,$1) + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $[@] .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $[@]`' + fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04 +dnl ----------- +dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all +dnl programs need this test). +dnl +dnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE +dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct +dnl winsize declaration is left alone - we may revisit this if Apple choose to +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([ +#include +#include +],[int x = SIGWINCH; (void)x], + [cf_cv_define_sigwinch=yes], + [AC_TRY_COMPILE([ +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include +],[int x = SIGWINCH; (void)x], + [cf_cv_define_sigwinch=maybe], + [cf_cv_define_sigwinch=no]) +]) +]) + +if test "$cf_cv_define_sigwinch" = maybe ; then +AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ +cf_cv_fixup_sigwinch=unknown +cf_sigwinch=32 +while test "$cf_sigwinch" != 1 +do + AC_TRY_COMPILE([ +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include +],[ +#if SIGWINCH != $cf_sigwinch +make an error +#endif +int x = SIGWINCH; (void)x], + [cf_cv_fixup_sigwinch=$cf_sigwinch + break]) + +cf_sigwinch="`expr "$cf_sigwinch" - 1`" +done +]) + + if test "$cf_cv_fixup_sigwinch" != unknown ; then + CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47 +dnl --------------- +dnl signal handler, but there are some gcc dependencies in that recommendation. +dnl Try anyway. +AC_DEFUN([CF_SIG_ATOMIC_T], +[ +AC_MSG_CHECKING(for signal global datatype) +AC_CACHE_VAL(cf_cv_sig_atomic_t,[ + for cf_type in \ + "volatile sig_atomic_t" \ + "sig_atomic_t" \ + "int" + do + AC_TRY_COMPILE([ +#include +#include +#include + +extern $cf_type x; +$cf_type x; +static void handler(int sig) +{ + (void)sig; + x = 5; +}], + [signal(SIGINT, handler); + x = 1], + [cf_cv_sig_atomic_t=$cf_type], + [cf_cv_sig_atomic_t=no]) + test "$cf_cv_sig_atomic_t" != no && break + done + ]) +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 ------------- +dnl Check for definitions & structures needed for window size-changing +dnl +dnl https://stackoverflow.com/questions/18878141/difference-between-structures-ttysize-and-winsize/50769952#50769952 +AC_DEFUN([CF_SIZECHANGE], +[ +AC_REQUIRE([CF_STRUCT_TERMIOS]) +AC_CACHE_CHECK(declaration of size-change, cf_cv_sizechange,[ + cf_cv_sizechange=unknown + cf_save_CPPFLAGS="$CPPFLAGS" + +for cf_opts in "" "NEED_PTEM_H" +do + + CPPFLAGS="$cf_save_CPPFLAGS" + if test -n "$cf_opts" + then + CF_APPEND_TEXT(CPPFLAGS,-D$cf_opts) + fi + AC_TRY_COMPILE([#include +#ifdef HAVE_TERMIOS_H +#include +#else +#ifdef HAVE_TERMIO_H +#include +#endif +#endif + +#ifdef NEED_PTEM_H +/* This is a workaround for SCO: they neglected to define struct winsize in + * termios.h -- it is only in termio.h and ptem.h + */ +#include +#include +#endif + +#ifdef HAVE_SYS_IOCTL_H +#include +#endif +],[ +#ifdef TIOCGSIZE + struct ttysize win; /* SunOS 3.0... */ + int y = win.ts_lines = 2; + int x = win.ts_cols = 1; + (void)y; + (void)x; +#else +#ifdef TIOCGWINSZ + struct winsize win; /* everything else */ + int y = win.ws_row = 2; + int x = win.ws_col = 1; + (void)y; + (void)x; +#else + 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 + test -n "$cf_opts" && cf_cv_sizechange="$cf_opts" + break + fi +done +]) +if test "$cf_cv_sizechange" != no ; then + AC_DEFINE(HAVE_SIZECHANGE,1,[Define to 1 if sizechange declarations are provided]) + case "$cf_cv_sizechange" in + (NEED*) + AC_DEFINE_UNQUOTED($cf_cv_sizechange ) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SRC_MODULES version: 33 updated: 2021/01/01 13:31:04 +dnl -------------- +dnl For each parameter, test if the source-directory exists, and if it contains +dnl a 'modules' file. If so, add to the list $cf_cv_src_modules which we'll +dnl use in CF_LIB_RULES. +dnl +dnl This uses the configured value to make the lists SRC_SUBDIRS and +dnl SUB_MAKEFILES which are used in the makefile-generation scheme. +AC_DEFUN([CF_SRC_MODULES], +[ +AC_REQUIRE([CF_CHECK_GNAT_VERSION]) +AC_MSG_CHECKING(for src modules) + +# dependencies and linker-arguments for test-programs +TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS" +TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2" +if test "$DFT_LWR_MODEL" = "libtool"; then + TEST_ARGS="${TEST_DEPS}" + TEST_ARG2="${TEST_DEP2}" +else + TEST_ARGS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS" + TEST_ARG2="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARG2" +fi + +PC_MODULES_TO_MAKE="ncurses${USE_ARG_SUFFIX}" +cf_cv_src_modules= +for cf_dir in $1 +do + if test -f "$srcdir/$cf_dir/modules" ; then + + # We may/may not have tack in the distribution, though the + # makefile is. + if test "$cf_dir" = tack ; then + if test "x$cf_with_tack" != "xyes"; then + continue + fi + fi + + if test -z "$cf_cv_src_modules"; then + cf_cv_src_modules=$cf_dir + else + cf_cv_src_modules="$cf_cv_src_modules $cf_dir" + fi + + # Make the ncurses_cfg.h file record the library interface files as + # well. These are header files that are the same name as their + # directory. Ncurses is the only library that does not follow + # that pattern. + if test "$cf_dir" = tack ; then + continue + elif test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then + CF_UPPER(cf_have_include,$cf_dir) + AC_DEFINE_UNQUOTED(HAVE_${cf_have_include}_H) + AC_DEFINE_UNQUOTED(HAVE_LIB${cf_have_include}) + CF_MAP_LIB_BASENAME(TEST_ROOT,$cf_dir) + TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEPS" + TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TEST_ROOT}${DFT_DEP_SUFFIX} $TEST_DEP2" + if test "$DFT_LWR_MODEL" = "libtool"; then + TEST_ARGS="${TEST_DEPS}" + TEST_ARG2="${TEST_DEP2}" + else + TEST_ARGS="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARGS" + TEST_ARG2="-l${TEST_ROOT}${USE_ARG_SUFFIX} $TEST_ARG2" + fi + PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ${cf_dir}${USE_ARG_SUFFIX}" + fi + fi +done +AC_MSG_RESULT($cf_cv_src_modules) + +TEST_ARGS="-L${LIB_DIR} $TEST_ARGS" +TEST_ARG2="-L${LIB_2ND} $TEST_ARG2" + +AC_SUBST(TEST_ARGS) +AC_SUBST(TEST_DEPS) + +AC_SUBST(TEST_ARG2) +AC_SUBST(TEST_DEP2) + +SRC_SUBDIRS= +if test "x$cf_with_manpages" != xno ; then + SRC_SUBDIRS="$SRC_SUBDIRS man" +fi +SRC_SUBDIRS="$SRC_SUBDIRS include" +for cf_dir in $cf_cv_src_modules +do + SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir" +done +if test "x$cf_with_tests" != "xno" ; then + SRC_SUBDIRS="$SRC_SUBDIRS test" +fi +# always make this, to install the ncurses-config script +SRC_SUBDIRS="$SRC_SUBDIRS misc" +if test "$cf_with_cxx_binding" != no; then + PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${USE_ARG_SUFFIX}" + SRC_SUBDIRS="$SRC_SUBDIRS c++" +fi + +test "x$with_termlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TINFO_ARG_SUFFIX" +test "x$with_ticlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TICS_ARG_SUFFIX" + +AC_SUBST(PC_MODULES_TO_MAKE) + +ADA_SUBDIRS= +if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = xyes && test -f "$srcdir/Ada95/Makefile.in" ; then + SRC_SUBDIRS="$SRC_SUBDIRS Ada95" + ADA_SUBDIRS="gen src" + if test "x$cf_with_tests" != "xno" ; then + ADA_SUBDIRS="$ADA_SUBDIRS samples" + fi +fi + +SUB_MAKEFILES= +for cf_dir in $SRC_SUBDIRS +do + SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile" +done + +if test -n "$ADA_SUBDIRS"; then + for cf_dir in $ADA_SUBDIRS + do + SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile" + done + AC_SUBST(ADA_SUBDIRS) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_STDCPP_LIBRARY version: 12 updated: 2021/01/01 13:31:04 +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. +dnl If -lstdc++ was not already added to $LIBS or $CXXLIBS, and is needed, +dnl add it to $CXXLIBS. +AC_DEFUN([CF_STDCPP_LIBRARY], +[ +if test -n "$GXX" ; then + + cf_save="$LIBS" + LIBS="$LIBS $CXXLIBS" + AC_MSG_CHECKING(if we already have C++ library) + AC_TRY_LINK([ + #include ],[ + std::cout << "Hello World!" << std::endl;], + [cf_have_libstdcpp=yes], + [cf_have_libstdcpp=no]) + AC_MSG_RESULT($cf_have_libstdcpp) + LIBS="$cf_save" + + if test "$cf_have_libstdcpp" != yes + then + case "$cf_cv_system_name" in + (os2*) + if test -z "`g++ -dM -E - < /dev/null | grep __KLIBC__`"; then + cf_stdcpp_libname=stdcpp + else + cf_stdcpp_libname=stdc++ + fi + ;; + (*) + cf_stdcpp_libname=stdc++ + ;; + esac + + AC_CACHE_CHECK(for library $cf_stdcpp_libname,cf_cv_libstdcpp,[ + cf_save="$LIBS" + LIBS="$LIBS $CXXLIBS" + CF_ADD_LIB($cf_stdcpp_libname) + AC_TRY_LINK([ + #include ],[ + std::cout << "Hello World!" << std::endl;], + [cf_cv_libstdcpp=yes], + [cf_cv_libstdcpp=no]) + LIBS="$cf_save" + ]) + test "$cf_cv_libstdcpp" = yes && { CF_ADD_LIB($cf_stdcpp_libname,CXXLIBS) } + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_STRIP_G_OPT version: 4 updated: 2021/01/02 09:31:20 +dnl -------------- +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: 5 updated: 2012/10/06 17:56:13 +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. +AC_DEFUN([CF_STRUCT_SIGACTION],[ +AC_REQUIRE([CF_XOPEN_SOURCE]) + +if test "$ac_cv_func_sigaction" = yes; then +AC_MSG_CHECKING(whether sigaction needs _POSIX_SOURCE) +AC_TRY_COMPILE([ +#include +#include ], + [struct sigaction act], + [sigact_bad=no], + [ +AC_TRY_COMPILE([ +#define _POSIX_SOURCE +#include +#include ], + [struct sigaction act], + [sigact_bad=yes + AC_DEFINE(_POSIX_SOURCE,1,[Define to 1 if we must define _POSIX_SOURCE])], + [sigact_bad=unknown])]) +AC_MSG_RESULT($sigact_bad) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_STRUCT_TERMIOS version: 11 updated: 2020/03/19 20:46:13 +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( \ +termio.h \ +termios.h \ +unistd.h \ +sys/ioctl.h \ +sys/termio.h \ +) + +if test "$ac_cv_header_termios_h" = yes ; then + case "$CFLAGS $CPPFLAGS" in + (*-D_POSIX_SOURCE*) + termios_bad=dunno ;; + (*) termios_bad=maybe ;; + esac + if test "$termios_bad" = maybe ; then + AC_MSG_CHECKING(whether termios.h needs _POSIX_SOURCE) + AC_TRY_COMPILE([#include ], + [struct termios foo; int x = foo.c_iflag = 1; (void)x], + termios_bad=no, [ + AC_TRY_COMPILE([ +#define _POSIX_SOURCE +#include ], + [struct termios foo; int x = 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])) + ]) + AC_MSG_RESULT($termios_bad) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06 +dnl -------------- +dnl Construct a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +AC_DEFUN([CF_SUBDIR_PATH], +[ +$1= + +CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE) + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + [$]HOME +do + CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix) +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SUBST_IF version: 2 updated: 2006/06/17 12:33:03 +dnl ----------- +dnl Shorthand macro for substituting things that the user may override +dnl with an environment variable. +dnl +dnl $1 = condition to pass to "test" +dnl $2 = environment variable +dnl $3 = value if the test succeeds +dnl $4 = value if the test fails +AC_DEFUN([CF_SUBST_IF], +[ +if test $1 ; then + $2=$3 +ifelse($4,,,[else + $2=$4]) +fi +AC_SUBST($2) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SUBST_NCURSES_VERSION version: 10 updated: 2021/01/04 18:48:01 +dnl ------------------------ +dnl Get the version-number for use in shared-library naming, etc. +AC_DEFUN([CF_SUBST_NCURSES_VERSION], +[AC_REQUIRE([AC_PROG_EGREP])dnl + +NCURSES_MAJOR="`${EGREP-egrep} '^NCURSES_MAJOR[[ ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`" +NCURSES_MINOR="`${EGREP-egrep} '^NCURSES_MINOR[[ ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`" +NCURSES_PATCH="`${EGREP-egrep} '^NCURSES_PATCH[[ ]]*=' "$srcdir/dist.mk" | sed -e 's/^[[^0-9]]*//'`" +cf_cv_abi_version=${NCURSES_MAJOR} +cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} +dnl Show the computed version, for logging +cf_cv_timestamp=`date` +AC_MSG_RESULT(Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)) +dnl We need these values in the generated headers +AC_SUBST(NCURSES_MAJOR) +AC_SUBST(NCURSES_MINOR) +AC_SUBST(NCURSES_PATCH) +dnl We need these values in the generated makefiles +AC_SUBST(cf_cv_rel_version) +AC_SUBST(cf_cv_abi_version) +AC_SUBST(cf_cv_builtin_bool) +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 ------------------ +dnl Check if we can include with ; this breaks on +dnl older SCO configurations. +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([ +#include +#ifdef HAVE_SYS_TIME_H +#include +#endif +#ifdef HAVE_SYS_SELECT_H +#include +#endif +],[],[cf_cv_sys_time_select=yes], + [cf_cv_sys_time_select=no]) + ]) +AC_MSG_RESULT($cf_cv_sys_time_select) +test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT,1,[Define to 1 if we can include with ]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32 +dnl --------------- +dnl Define a top_builddir symbol, for applications that need an absolute path. +AC_DEFUN([CF_TOP_BUILDDIR], +[ +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 ----------------- +dnl This is a simple wrapper to use for pkg-config, for libraries which may be +dnl available in that form. +dnl +dnl $1 = package name, which may be a shell variable +dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS +dnl $3 = logic to use if pkg-config does not have the package +AC_DEFUN([CF_TRY_PKG_CONFIG],[ +AC_REQUIRE([CF_PKG_CONFIG]) + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then + CF_VERBOSE(found package $1) + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`" + 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_ADD_CFLAGS($cf_pkgconfig_incs) + CF_ADD_LIBS($cf_pkgconfig_libs) + ifelse([$2],,:,[$2]) +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + ifelse([$3],,:,[$3]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37 +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([ +#include +#include +#include +],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_save="$CPPFLAGS" + CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) + AC_TRY_COMPILE([ +#include +#include +#include +],[ +#ifdef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) + CPPFLAGS="$cf_save" + ]) +]) + +if test "$cf_cv_xopen_source" != no ; then + CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + CF_APPEND_CFLAGS($cf_temp_xopen_source) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_TYPEOF_CHTYPE version: 10 updated: 2017/01/21 11:06:25 +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 +dnl long, but on newer 64-bit machines, probably want an int. If we're using +dnl wide characters, we have to have a type compatible with that, as well. +AC_DEFUN([CF_TYPEOF_CHTYPE], +[ +AC_MSG_CHECKING([for type of chtype]) +AC_CACHE_VAL(cf_cv_typeof_chtype,[ + AC_TRY_RUN([ +#define WANT_BITS 31 +#include +int main(void) +{ + FILE *fp = fopen("cf_test.out", "w"); + if (fp != 0) { + char *result = "long"; + if (sizeof(unsigned long) > sizeof(unsigned int)) { + int n; + unsigned int x, y; + for (n = 0; n < WANT_BITS; n++) { + x = (1 << n); + y = (x >> n); + if (y != 1 || x == 0) { + x = 0; + break; + } + } + /* + * If x is nonzero, an int is big enough for the bits + * that we want. + */ + result = (x != 0) ? "int" : "long"; + } + fputs(result, fp); + fclose(fp); + } + ${cf_cv_main_return:-return}(0); +} + ], + [cf_cv_typeof_chtype=`cat cf_test.out`], + [cf_cv_typeof_chtype=long], + [cf_cv_typeof_chtype=long]) + rm -f cf_test.out + ]) +AC_MSG_RESULT($cf_cv_typeof_chtype) + +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: 4 updated: 2012/10/06 17:56:13 +dnl ----------------- +dnl +AC_DEFUN([CF_TYPE_SIGACTION], +[ +AC_MSG_CHECKING([for type sigaction_t]) +AC_CACHE_VAL(cf_cv_type_sigaction,[ + AC_TRY_COMPILE([ +#include ], + [sigaction_t 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: 2 updated: 1998/02/07 22:10:16 +dnl -------------------- +dnl Test if the compiler supports 'U' and 'L' suffixes. Only old compilers +dnl won't, but they're still there. +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], + [cf_cv_unsigned_literals=yes], + [cf_cv_unsigned_literals=no]) + ]) +AC_MSG_RESULT($cf_cv_unsigned_literals) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 +dnl -------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25 +dnl ----------- +dnl Check for multibyte support, and if not found, utf8 compatibility library +AC_DEFUN([CF_UTF8_LIB], +[ +AC_HAVE_HEADERS(wchar.h) +AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ + cf_save_LIBS="$LIBS" + AC_TRY_LINK([ +#include +#include +#ifdef HAVE_WCHAR_H +#include +#endif +],[putwc(0,0);], + [cf_cv_utf8_lib=yes], + [CF_FIND_LINKAGE([ +#include ],[putwc(0,0);],utf8, + [cf_cv_utf8_lib=add-on], + [cf_cv_utf8_lib=no]) +])]) + +# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h]) + CF_ADD_INCDIR($cf_cv_header_path_utf8) + CF_ADD_LIBDIR($cf_cv_library_path_utf8) + CF_ADD_LIBS($cf_cv_library_file_utf8) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_VA_COPY version: 6 updated: 2018/12/04 18:14:25 +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([ +#include +],[ + static va_list dst; + static va_list src; + va_copy(dst, src)], + cf_cv_have_va_copy=yes, + cf_cv_have_va_copy=no)]) + +if test "$cf_cv_have_va_copy" = yes; +then + AC_DEFINE(HAVE_VA_COPY,1,[Define to 1 if we have va_copy]) +else # !cf_cv_have_va_copy + +AC_CACHE_CHECK(for __va_copy, cf_cv_have___va_copy,[ +AC_TRY_LINK([ +#include +],[ + static va_list dst; + static va_list src; + __va_copy(dst, src)], + cf_cv_have___va_copy=yes, + cf_cv_have___va_copy=no)]) + +if test "$cf_cv_have___va_copy" = yes +then + AC_DEFINE(HAVE___VA_COPY,1,[Define to 1 if we have __va_copy]) +else # !cf_cv_have___va_copy + +AC_CACHE_CHECK(for __builtin_va_copy, cf_cv_have___builtin_va_copy,[ +AC_TRY_LINK([ +#include +],[ + static va_list dst; + static va_list src; + __builtin_va_copy(dst, src)], + cf_cv_have___builtin_va_copy=yes, + cf_cv_have___builtin_va_copy=no)]) + +test "$cf_cv_have___builtin_va_copy" = yes && + AC_DEFINE(HAVE___BUILTIN_VA_COPY,1,[Define to 1 if we have __builtin_va_copy]) + +fi # cf_cv_have___va_copy + +fi # cf_cv_have_va_copy + +case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy}" in +(*yes*) + ;; + +(*) + AC_CACHE_CHECK(if we can simply copy va_list, cf_cv_pointer_va_list,[ +AC_TRY_LINK([ +#include +],[ + va_list dst; + va_list 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([ +#include +],[ + va_list dst; + va_list 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]) + fi + ;; +esac +]) +dnl --------------------------------------------------------------------------- +dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 +dnl ---------- +dnl Use AC_VERBOSE w/o the warnings +AC_DEFUN([CF_VERBOSE], +[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG +CF_MSG_LOG([$1]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_VERSION_INFO version: 8 updated: 2021/01/01 13:31:04 +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. +dnl (automake is a textbook-example of why the latter is a bad idea, but there +dnl are others). +dnl +dnl The file contents are: +dnl libtool-version release-version patch-version +dnl or +dnl release-version +dnl where +dnl libtool-version (see ?) consists of 3 integers separated by '.' +dnl release-version consists of a major version and minor version +dnl separated by '.', optionally followed by a patch-version +dnl separated by '-'. The minor version need not be an +dnl integer (but it is preferred). +dnl patch-version is an integer in the form yyyymmdd, so ifdef's and +dnl scripts can easily compare versions. +dnl +dnl If libtool is used, the first form is required, since CF_WITH_LIBTOOL +dnl simply extracts the first field using 'cut -f1'. +dnl +dnl Optional parameters: +dnl $1 = internal name for package +dnl $2 = external name for package +AC_DEFUN([CF_VERSION_INFO], +[ +if test -f "$srcdir/VERSION" ; then + AC_MSG_CHECKING(for package version) + + # if there are not enough fields, cut returns the last one... + cf_field1=`sed -e '2,$d' "$srcdir/VERSION" |cut -f1` + cf_field2=`sed -e '2,$d' "$srcdir/VERSION" |cut -f2` + cf_field3=`sed -e '2,$d' "$srcdir/VERSION" |cut -f3` + + # this is how CF_BUNDLED_INTL uses $VERSION: + VERSION="$cf_field1" + + VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'` + test -z "$VERSION_MAJOR" && AC_MSG_ERROR(missing major-version) + + VERSION_MINOR=`echo "$cf_field2" | sed -e 's/^[[^.]]*\.//' -e 's/-.*//'` + test -z "$VERSION_MINOR" && AC_MSG_ERROR(missing minor-version) + + AC_MSG_RESULT(${VERSION_MAJOR}.${VERSION_MINOR}) + + AC_MSG_CHECKING(for package patch date) + VERSION_PATCH=`echo "$cf_field3" | sed -e 's/^[[^-]]*-//'` + case .$VERSION_PATCH in + (.) + AC_MSG_ERROR(missing patch-date $VERSION_PATCH) + ;; + (.[[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]][[0-9]]) + ;; + (*) + AC_MSG_ERROR(illegal patch-date $VERSION_PATCH) + ;; + esac + AC_MSG_RESULT($VERSION_PATCH) +else + AC_MSG_ERROR(did not find $srcdir/VERSION) +fi + +# show the actual data that we have for versions: +CF_VERBOSE(ABI VERSION $VERSION) +CF_VERBOSE(VERSION_MAJOR $VERSION_MAJOR) +CF_VERBOSE(VERSION_MINOR $VERSION_MINOR) +CF_VERBOSE(VERSION_PATCH $VERSION_PATCH) + +AC_SUBST(VERSION) +AC_SUBST(VERSION_MAJOR) +AC_SUBST(VERSION_MINOR) +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 + PACKAGE=ifelse($2,,$1,$2) + AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE",[Define to the package-name]) + 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}) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58 +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 +dnl the type is not found. The first parameter sets a shell variable for the +dnl opposite sense. +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([ +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif], + [$1 state], + [cf_cv_$1=no], + [AC_TRY_COMPILE([ +#include +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif], + [$1 value], + [cf_cv_$1=yes], + [cf_cv_$1=unknown])])]) + +if test "$cf_cv_$1" = yes ; then + AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h]) + NEED_WCHAR_H=1 +fi + +ifelse([$2],,,[ +# if we do not find $1 in either place, use substitution to provide a fallback. +if test "$cf_cv_$1" = unknown ; then + $2=1 +fi +]) +ifelse($3,,,[ +# if we find $1 in either place, use substitution to provide a fallback. +if test "$cf_cv_$1" != unknown ; then + $3=1 +fi +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WEAK_SYMBOLS version: 1 updated: 2008/08/16 19:18:06 +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([ +#include ], +[ +#if defined(__GNUC__) +# if defined __USE_ISOC99 +# define _cat_pragma(exp) _Pragma(#exp) +# define _weak_pragma(exp) _cat_pragma(weak name) +# else +# define _weak_pragma(exp) +# endif +# define _declare(name) __extension__ extern __typeof__(name) name +# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) +#endif + +weak_symbol(fopen); +],[cf_cv_weak_symbols=yes],[cf_cv_weak_symbols=no]) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ABI_VERSION version: 4 updated: 2021/01/01 13:31:04 +dnl ------------------- +dnl Allow library's ABI to be overridden. Generally this happens when a +dnl packager has incremented the ABI past that used in the original package, +dnl and wishes to keep doing this. +dnl +dnl $1 is the package name, if any, to derive a corresponding {package}_ABI +dnl symbol. +AC_DEFUN([CF_WITH_ABI_VERSION],[ +test -z "$cf_cv_abi_version" && cf_cv_abi_version=0 +AC_ARG_WITH(abi-version, +[ --with-abi-version=XXX override derived ABI version],[ + if test "x$cf_cv_abi_version" != "x$withval" + then + AC_MSG_WARN(overriding ABI version $cf_cv_abi_version to $withval) + case "$cf_cv_rel_version" in + (5.*) + cf_cv_rel_version=$withval.0 + ;; + (6.*) + cf_cv_rel_version=$withval.9 # FIXME: should be 10 as of 6.0 release + ;; + esac + fi + cf_cv_abi_version=$withval]) + CF_NUMBER_SYNTAX($cf_cv_abi_version,ABI version) +ifelse($1,,,[ +$1_ABI=$cf_cv_abi_version +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_COMPILER version: 2 updated: 2010/06/26 17:35:58 +dnl -------------------- +dnl Command-line option to specify the Ada95 compiler. +AC_DEFUN([CF_WITH_ADA_COMPILER],[ +AC_MSG_CHECKING(for ada-compiler) +AC_ARG_WITH(ada-compiler, + [ --with-ada-compiler=CMD specify Ada95 compiler command (default gnatmake)], + [cf_ada_compiler=$withval], + [cf_ada_compiler=gnatmake]) +AC_SUBST(cf_ada_compiler) +AC_MSG_RESULT($cf_ada_compiler) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_INCLUDE version: 2 updated: 2010/06/26 17:35:58 +dnl ------------------- +dnl Command-line option to specify where Ada includes will install. +AC_DEFUN([CF_WITH_ADA_INCLUDE],[ +AC_MSG_CHECKING(for ada-include) +CF_WITH_PATH(ada-include, + [ --with-ada-include=DIR Ada includes are in DIR], + ADA_INCLUDE, + PREFIX/share/ada/adainclude, + [$]prefix/share/ada/adainclude) +AC_SUBST(ADA_INCLUDE) +AC_MSG_RESULT($ADA_INCLUDE) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_LIBNAME version: 1 updated: 2019/09/07 18:59:41 +dnl ------------------- +dnl CF_WITH_ADA_LIBNAME +dnl ------------------- +dnl Command-line option to specify how to name the resulting Ada library. +dnl $1 = default value +AC_DEFUN([CF_WITH_ADA_LIBNAME],[ +AC_MSG_CHECKING(for ada-libname) +AC_ARG_WITH(ada-libname, + [ --with-ada-libname=XXX override default Ada library-name], + ADA_LIBNAME=[$]withval, + ADA_LIBNAME=$1) +case "x$ADA_LIBNAME" in +(x|xyes|xno) + ADA_LIBNAME=$1 + ;; +esac +AC_SUBST(ADA_LIBNAME) +AC_MSG_RESULT($ADA_LIBNAME) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_OBJECTS version: 2 updated: 2010/06/26 17:35:58 +dnl ------------------- +dnl Command-line option to specify where Ada objects will install. +AC_DEFUN([CF_WITH_ADA_OBJECTS],[ +AC_MSG_CHECKING(for ada-objects) +CF_WITH_PATH(ada-objects, + [ --with-ada-objects=DIR Ada objects are in DIR], + ADA_OBJECTS, + PREFIX/lib/ada/adalib, + [$]prefix/lib/ada/adalib) +AC_SUBST(ADA_OBJECTS) +AC_MSG_RESULT($ADA_OBJECTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_ADA_SHAREDLIB version: 5 updated: 2018/07/21 19:10:35 +dnl --------------------- +dnl Command-line option to specify if an Ada95 shared-library should be built, +dnl and optionally what its soname should be. +AC_DEFUN([CF_WITH_ADA_SHAREDLIB],[ +AC_REQUIRE([CF_GNAT_PROJECTS]) +AC_MSG_CHECKING(if an Ada95 shared-library should be built) +AC_ARG_WITH(ada-sharedlib, + [ --with-ada-sharedlib=soname build shared-library (requires GNAT projects)], + [with_ada_sharedlib=$withval], + [with_ada_sharedlib=no]) +AC_MSG_RESULT($with_ada_sharedlib) + +if test "x$with_ada_sharedlib" != xno +then + if test "x$cf_gnat_projects" != xyes + then + AC_MSG_WARN(disabling shared-library since GNAT projects are not supported) + with_ada_sharedlib=no + fi +fi + +ADA_SHAREDLIB='lib$(LIB_NAME).so.1' +MAKE_ADA_SHAREDLIB="#" + +if test "x$with_ada_sharedlib" != xno +then + MAKE_ADA_SHAREDLIB= + if test "x$with_ada_sharedlib" != xyes + then + ADA_SHAREDLIB="$with_ada_sharedlib" + fi +fi + +AC_SUBST(ADA_SHAREDLIB) +AC_SUBST(MAKE_ADA_SHAREDLIB) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 +dnl ---------------- +dnl Configure-option for dbmalloc. The optional parameter is used to override +dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. +AC_DEFUN([CF_WITH_DBMALLOC],[ +CF_NO_LEAKS_OPTION(dbmalloc, + [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], + [USE_DBMALLOC]) + +if test "$with_dbmalloc" = yes ; then + AC_CHECK_HEADER(dbmalloc.h, + [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 +dnl --------------- +dnl Configure-option for dmalloc. The optional parameter is used to override +dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. +AC_DEFUN([CF_WITH_DMALLOC],[ +CF_NO_LEAKS_OPTION(dmalloc, + [ --with-dmalloc test: use Gray Watson's dmalloc library], + [USE_DMALLOC]) + +if test "$with_dmalloc" = yes ; then + AC_CHECK_HEADER(dmalloc.h, + [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_EXPORT_SYMS version: 3 updated: 2014/12/20 19:16:08 +dnl ------------------- +dnl Use this with libtool to specify the list of symbols that may be exported. +dnl The input file contains one symbol per line; comments work with "#". +dnl +dnl $1 = basename of the ".sym" file (default $PACKAGE) +AC_DEFUN([CF_WITH_EXPORT_SYMS], +[ +AC_MSG_CHECKING(if exported-symbols file should be used) +AC_ARG_WITH(export-syms, + [ --with-export-syms=XXX limit exported symbols using libtool], + [with_export_syms=$withval], + [with_export_syms=no]) +if test "x$with_export_syms" = xyes +then + with_export_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).sym' + AC_SUBST(PACKAGE) +fi +AC_MSG_RESULT($with_export_syms) +if test "x$with_export_syms" != xno +then + EXPORT_SYMS="-export-symbols $with_export_syms" + AC_SUBST(EXPORT_SYMS) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_GPM version: 10 updated: 2017/04/29 18:32:18 +dnl ----------- +dnl +dnl The option parameter (if neither yes/no) is assumed to be the name of +dnl the gpm library, e.g., for dynamic loading. +AC_DEFUN([CF_WITH_GPM], +[ +AC_MSG_CHECKING(if you want to link with the GPM mouse library) +AC_ARG_WITH(gpm, + [ --with-gpm use Alessandro Rubini's GPM library], + [with_gpm=$withval], + [with_gpm=maybe]) +AC_MSG_RESULT($with_gpm) + +if test "$with_gpm" != no ; then + AC_CHECK_HEADER(gpm.h,[ + AC_DEFINE(HAVE_GPM_H,1,[Define to 1 if we have gpm.h header]) + if test "$with_gpm" != yes && test "$with_gpm" != maybe ; then + CF_VERBOSE(assuming we really have GPM library) + AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library]) + with_gpm=yes + else + AC_CHECK_LIB(gpm,Gpm_Open,[with_gpm=yes],[ + if test "$with_gpm" = maybe; then + AC_MSG_WARN(Cannot link with GPM library) + with_gpm=no + else + AC_MSG_ERROR(Cannot link with GPM library) + fi + ]) + fi + ],[ + test "$with_gpm" != maybe && AC_MSG_WARN(Cannot find GPM header) + with_gpm=no + ]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIBTOOL version: 36 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Provide a configure option to incorporate libtool. Define several useful +dnl symbols for the makefile rules. +dnl +dnl The reference to AC_PROG_LIBTOOL does not normally work, since it uses +dnl macros from libtool.m4 which is in the aclocal directory of automake. +dnl Following is a simple script which turns on the AC_PROG_LIBTOOL macro. +dnl But that still does not work properly since the macro is expanded outside +dnl the CF_WITH_LIBTOOL macro: +dnl +dnl #!/bin/sh +dnl ACLOCAL=`aclocal --print-ac-dir` +dnl if test -z "$ACLOCAL" ; then +dnl echo cannot find aclocal directory +dnl exit 1 +dnl elif test ! -f $ACLOCAL/libtool.m4 ; then +dnl echo cannot find libtool.m4 file +dnl exit 1 +dnl fi +dnl +dnl LOCAL=aclocal.m4 +dnl ORIG=aclocal.m4.orig +dnl +dnl trap "mv $ORIG $LOCAL" 0 1 2 3 15 +dnl rm -f $ORIG +dnl mv $LOCAL $ORIG +dnl +dnl # sed the LIBTOOL= assignment to omit the current directory? +dnl sed -e 's/^LIBTOOL=.*/LIBTOOL=${LIBTOOL:-libtool}/' $ACLOCAL/libtool.m4 >>$LOCAL +dnl cat $ORIG >>$LOCAL +dnl +dnl autoconf-257 $* +dnl +AC_DEFUN([CF_WITH_LIBTOOL], +[ +AC_REQUIRE([CF_DISABLE_LIBTOOL_VERSION]) +ifdef([AC_PROG_LIBTOOL],,[ +LIBTOOL= +]) +# common library maintenance symbols that are convenient for libtool scripts: +LIB_CREATE='${AR} -cr' +LIB_OBJECT='${OBJECTS}' +LIB_SUFFIX=.a +LIB_PREP="$RANLIB" + +# symbols used to prop libtool up to enable it to determine what it should be +# doing: +LIB_CLEAN= +LIB_COMPILE= +LIB_LINK='${CC}' +LIB_INSTALL= +LIB_UNINSTALL= + +AC_MSG_CHECKING(if you want to build libraries with libtool) +AC_ARG_WITH(libtool, + [ --with-libtool generate libraries with libtool], + [with_libtool=$withval], + [with_libtool=no]) +AC_MSG_RESULT($with_libtool) +if test "$with_libtool" != "no"; then +ifdef([AC_PROG_LIBTOOL],[ + # missing_content_AC_PROG_LIBTOOL{{ + AC_PROG_LIBTOOL + # missing_content_AC_PROG_LIBTOOL}} +],[ + if test "$with_libtool" != "yes" ; then + CF_PATH_SYNTAX(with_libtool) + LIBTOOL=$with_libtool + else + AC_CHECK_TOOLS(LIBTOOL,[libtool glibtool],none) + CF_LIBTOOL_VERSION + if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool + then + CF_FORGET_TOOL(LIBTOOL) + AC_CHECK_TOOLS(LIBTOOL,[glibtool],none) + CF_LIBTOOL_VERSION + fi + fi + if test -z "$LIBTOOL" ; then + AC_MSG_ERROR(Cannot find 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_SUFFIX=.la + LIB_CLEAN='${LIBTOOL} --mode=clean' + LIB_COMPILE='${LIBTOOL} --mode=compile' + LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}' + LIB_INSTALL='${LIBTOOL} --mode=install' + LIB_UNINSTALL='${LIBTOOL} --mode=uninstall' + LIB_PREP=: + + CF_CHECK_LIBTOOL_VERSION + + # special hack to add -no-undefined (which libtool should do for itself) + LT_UNDEF= + case "$cf_cv_system_name" in + (cygwin*|msys*|mingw32*|os2*|uwin*|aix[[4-7]]) + LT_UNDEF=-no-undefined + ;; + esac + AC_SUBST([LT_UNDEF]) + + # special hack to add --tag option for C++ compiler + case "$cf_cv_libtool_version" in + (1.[[5-9]]*|[[2-9]].[[0-9.a-z]]*) + LIBTOOL_CXX="$LIBTOOL --tag=CXX" + LIBTOOL="$LIBTOOL --tag=CC" + ;; + (*) + LIBTOOL_CXX="$LIBTOOL" + ;; + esac +else + LIBTOOL="" + LIBTOOL_CXX="" +fi + +test -z "$LIBTOOL" && ECHO_LT= + +AC_SUBST(LIBTOOL) +AC_SUBST(LIBTOOL_CXX) +AC_SUBST(LIBTOOL_OPTS) + +AC_SUBST(LIB_CREATE) +AC_SUBST(LIB_OBJECT) +AC_SUBST(LIB_SUFFIX) +AC_SUBST(LIB_PREP) + +AC_SUBST(LIB_CLEAN) +AC_SUBST(LIB_COMPILE) +AC_SUBST(LIB_LINK) +AC_SUBST(LIB_INSTALL) +AC_SUBST(LIB_UNINSTALL) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIBTOOL_OPTS version: 4 updated: 2015/04/17 21:13:04 +dnl -------------------- +dnl Allow user to pass additional libtool options into the library creation +dnl and link steps. The main use for this is to do something like +dnl ./configure --with-libtool-opts=-static +dnl to get the same behavior as automake-flavored +dnl ./configure --enable-static +AC_DEFUN([CF_WITH_LIBTOOL_OPTS],[ +AC_MSG_CHECKING(for additional libtool options) +AC_ARG_WITH(libtool-opts, + [ --with-libtool-opts=XXX specify additional libtool options], + [with_libtool_opts=$withval], + [with_libtool_opts=no]) +AC_MSG_RESULT($with_libtool_opts) + +case .$with_libtool_opts in +(.yes|.no|.) + ;; +(*) + LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts" + ;; +esac + +AC_SUBST(LIBTOOL_OPTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14 +dnl -------------------- +dnl Allow for overriding the basename of a library, i.e., the part to which +dnl prefixes/suffixes are attached. +dnl +dnl $1 = variable to set +dnl $2 = option name +dnl $3 = default basename for library, if omitted use $2 +AC_DEFUN([CF_WITH_LIB_BASENAME], +[ +AC_MSG_CHECKING(for desired basename for $2 library) +AC_ARG_WITH($2-libname, + [ --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library], + [with_lib_basename=$withval], + [with_lib_basename=ifelse($3,,$2,$3)]) +$1="$with_lib_basename" + +case "x[$]$1" in +(x|xno|xnone|xyes) + $1=ifelse($3,,$2,$3) + ;; +(*) + ;; +esac + +AC_MSG_RESULT([$]$1) +AC_SUBST($1) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIB_PREFIX version: 2 updated: 2021/01/01 16:53:59 +dnl ------------------ +dnl Allow the library-prefix to be overridden. OS/2 EMX originally had no +dnl "lib" prefix, e.g., because it used the dll naming convention. +dnl +dnl $1 = variable to set +AC_DEFUN([CF_WITH_LIB_PREFIX], +[ +AC_MSG_CHECKING(if you want to have a library-prefix) +AC_ARG_WITH(lib-prefix, + [ --with-lib-prefix override library-prefix], + [with_lib_prefix=$withval], + [with_lib_prefix=auto]) +AC_MSG_RESULT($with_lib_prefix) + +if test "$with_lib_prefix" = auto +then + CF_LIB_PREFIX($1) +elif test "$with_lib_prefix" = no +then + LIB_PREFIX= +else + LIB_PREFIX=$with_lib_prefix +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PATH version: 12 updated: 2021/09/04 06:35:04 +dnl ------------ +dnl Wrapper for AC_ARG_WITH to ensure that user supplies a pathname, not just +dnl defaulting to yes/no. +dnl +dnl $1 = option name +dnl $2 = help-text +dnl $3 = environment variable to set +dnl $4 = default value, shown in the help-message, must be a constant +dnl $5 = default value, if it is an expression & cannot be in the help-message +dnl +AC_DEFUN([CF_WITH_PATH], +[AC_ARG_WITH($1,[$2 ](default: ifelse([$4],,empty,[$4])),, +ifelse([$4],,[withval="${$3}"],[withval="${$3:-ifelse([$5],,[$4],[$5])}"]))dnl +if ifelse([$5],,true,[test -n "$5"]) ; then +CF_PATH_SYNTAX(withval) +fi +eval $3="$withval" +AC_SUBST($3)dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PATHLIST version: 13 updated: 2021/09/04 06:35:04 +dnl ---------------- +dnl Process an option specifying a list of colon-separated paths. +dnl +dnl $1 = option name +dnl $2 = help-text +dnl $3 = environment variable to set +dnl $4 = default value, shown in the help-message, must be a constant +dnl $5 = default value, if it is an expression & cannot be in the help-message +dnl $6 = flag to tell if we want to define or substitute +dnl +AC_DEFUN([CF_WITH_PATHLIST],[ +AC_REQUIRE([CF_PATHSEP]) +AC_ARG_WITH($1,[$2 ](default: ifelse($4,,empty,$4)),, +ifelse($4,,[withval=${$3}],[withval=${$3:-ifelse($5,,$4,$5)}]))dnl + +IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}" +cf_dst_path= +for cf_src_path in $withval +do + CF_PATH_SYNTAX(cf_src_path) + test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR" + cf_dst_path="${cf_dst_path}${cf_src_path}" +done +IFS="$ac_save_ifs" + +ifelse($6,define,[ +# Strip single quotes from the value, e.g., when it was supplied as a literal +# for $4 or $5. +case "$cf_dst_path" in +(\'*) + cf_dst_path="`echo "$cf_dst_path" |sed -e s/\'// -e s/\'\$//`" + ;; +esac +cf_dst_path=`echo "$cf_dst_path" | sed -e 's/\\\\/\\\\\\\\/g'` +]) + +# This may use the prefix/exec_prefix symbols which will only yield "NONE" +# so we have to check/work around. We do prefer the result of "eval"... +eval cf_dst_eval="$cf_dst_path" +case "x$cf_dst_eval" in +(xNONE*) + $3=$cf_dst_path + ;; +(*) + $3="$cf_dst_eval" + ;; +esac +AC_SUBST($3)dnl + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PATH_PROG version: 1 updated: 2019/06/30 19:44:43 +dnl ----------------- +dnl Check for a given program, like CF_PATH_PROG, but allow override using a +dnl "--with-xxx" option. +dnl +dnl Parameters: +dnl $1 = environment variable to set/update +dnl $2 = program name +dnl $3 = help-text +dnl $4 = $PATH +AC_DEFUN([CF_WITH_PATH_PROG],[ +AC_ARG_WITH($2-path, + [ --with-$2-path=XXX specify path of $2 ifelse($3,,,$3)], + [AC_MSG_CHECKING(for $2 program ifelse($3,,,$3)) + $1=$withval + AC_MSG_RESULT([$]$1) + CF_PATH_SYNTAX($1) + ], + [CF_PATH_PROG($1,$2,,ifelse($4,,,$4)) + if test -z "[$]$1" + then + AC_MSG_WARN(no $2 program found ifelse($3,,,$3)) + fi + ]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PCRE2 version: 6 updated: 2021/08/11 20:35:34 +dnl ------------- +dnl Add PCRE2 (Perl-compatible regular expressions v2) to the build if it is +dnl available and the user requests it. Assume the application will otherwise +dnl use the POSIX interface. +dnl +dnl TODO allow $withval to specify package location +AC_DEFUN([CF_WITH_PCRE2], +[ +AC_REQUIRE([CF_PKG_CONFIG]) + +AC_MSG_CHECKING(if you want to use PCRE2 for regular-expressions) +AC_ARG_WITH(pcre2, + [ --with-pcre2 use PCRE2 for regular-expressions]) +test -z "$with_pcre2" && with_pcre2=no +AC_MSG_RESULT($with_pcre2) + +if test "x$with_pcre2" != xno ; then + cf_with_pcre2_ok=no + for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre + do + CF_TRY_PKG_CONFIG($cf_with_pcre2,[cf_with_pcre2_ok=yes; break]) + done + cf_with_pcre2_ok=yes || AC_MSG_ERROR(Cannot find PCRE2 library) + + AC_DEFINE(HAVE_LIB_PCRE2,1,[Define to 1 if we can/should compile with the PCRE2 library]) + + # if pkgconfig gave no results, look for the libraries directly + case "$LIBS" in + (*pcre2-posix*|*pcreposix*) + ;; + (*) + AC_CHECK_LIB(pcre2-posix,regcomp,[ + CF_ADD_LIB(pcre2-posix)], + [AC_CHECK_LIB(pcreposix,regcomp,[ + CF_ADD_LIB(pcreposix) + ],[AC_MSG_ERROR(Cannot find PCRE2 POSIX library)])]) + ;; + esac + + # either way, check for the library header files + AC_CHECK_HEADERS(pcre2posix.h pcreposix.h) + AC_CHECK_FUNCS(PCRE2regcomp) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PKG_CONFIG_LIBDIR version: 13 updated: 2021/10/17 11:12:47 +dnl ------------------------- +dnl Allow the choice of the pkg-config library directory to be overridden. +dnl +dnl pkg-config uses a search-list built from these colon-separated lists of +dnl directories: +dnl a) $PKG_CONFIG_PATH (tested first, added if set) +dnl b) $PKG_CONFIG_LIBDIR (tested second, added if set) +dnl c) builtin-list (added if $PKG_CONFIG_LIBDIR is not set) +dnl +dnl pkgconf (used with some systems such as FreeBSD in place of pkg-config) +dnl optionally ignores $PKG_CONFIG_LIBDIR. +AC_DEFUN([CF_WITH_PKG_CONFIG_LIBDIR],[ + +case "$PKG_CONFIG" in +(no|none|yes) + AC_MSG_CHECKING(for pkg-config library directory) + ;; +(*) + AC_MSG_CHECKING(for $PKG_CONFIG library directory) + ;; +esac + +cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[[ ]]*,,'` +AC_ARG_WITH(pkg-config-libdir, + [ --with-pkg-config-libdir=XXX use given directory for installing pc-files], + [cf_search_path=$withval], + [test "x$PKG_CONFIG" != xnone && cf_search_path=yes]) + +case x$cf_search_path in +(x/*) + ;; +(xyes) + cf_search_path= + CF_VERBOSE(auto...) + # Look for the library directory using the same prefix as the executable + AC_MSG_CHECKING(for search-list) + if test "x$PKG_CONFIG" = xnone + then + cf_path=$prefix + else + cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[[^/]]*/[[^/]]*$,,'` + cf_search_path=` + "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | awk "\ +/^Scanning directory #[1-9][0-9]* '.*'$/{ \ + sub(\"^[[^']]*'\",\"\"); \ + sub(\"'.*\",\"\"); \ + printf \" %s\", \\[$]0; } \ +/trying path:/{ + sub(\"^.* trying path: \",\"\"); + sub(\" for no-such-package.*$\",\"\"); + printf \" %s\", \\[$]0; +} +{ next; } \ +"` + fi + + if test -z "$cf_search_path" + then + # If you don't like using the default architecture, you have to specify + # the intended library directory and corresponding compiler/linker + # options. + # + # This case allows for Debian's 2014-flavor of multiarch, along with + # the most common variations before that point. Some other variants + # spell the directory differently, e.g., "pkg-config", and put it in + # unusual places. + # + # pkg-config has always been poorly standardized, which is ironic... + case x`(arch) 2>/dev/null` in + (*64) + cf_test_path="\ + $cf_path/lib/*64-linux-gnu \ + $cf_path/share \ + $cf_path/lib64 \ + $cf_path/lib32 \ + $cf_path/lib" + ;; + (*) + cf_test_path="\ + $cf_path/lib/*-linux-gnu \ + $cf_path/share \ + $cf_path/lib32 \ + $cf_path/lib \ + $cf_path/libdata" + ;; + esac + for cf_config in $cf_test_path + do + test -d "$cf_config/pkgconfig" && cf_search_path="$cf_search_path $cf_config/pkgconfig" + done + fi + + AC_MSG_RESULT($cf_search_path) + + ;; +(*) + ;; +esac + +AC_MSG_CHECKING(for first directory) +cf_pkg_config_path=none +for cf_config in $cf_search_path +do + if test -d "$cf_config" + then + cf_pkg_config_path=$cf_config + break + fi +done +AC_MSG_RESULT($cf_pkg_config_path) + +if test "x$cf_pkg_config_path" != xnone ; then + # limit this to the first directory found + PKG_CONFIG_LIBDIR="$cf_pkg_config_path" +fi + +AC_SUBST(PKG_CONFIG_LIBDIR) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_PTHREAD version: 7 updated: 2015/04/18 08:56:57 +dnl --------------- +dnl Check for POSIX thread library. +AC_DEFUN([CF_WITH_PTHREAD], +[ +AC_MSG_CHECKING(if you want to link with the pthread library) +AC_ARG_WITH(pthread, + [ --with-pthread use POSIX thread library], + [with_pthread=$withval], + [with_pthread=no]) +AC_MSG_RESULT($with_pthread) + +if test "$with_pthread" != no ; then + AC_CHECK_HEADER(pthread.h,[ + AC_DEFINE(HAVE_PTHREADS_H,1,[Define to 1 if we have pthreads.h header]) + + for cf_lib_pthread in pthread c_r + do + 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([ +#include +],[ + int rc = pthread_create(0,0,0,0); + int r2 = pthread_mutexattr_settype(0, 0); +],[with_pthread=yes],[with_pthread=no]) + LIBS="$cf_save_LIBS" + AC_MSG_RESULT($with_pthread) + test "$with_pthread" = yes && break + done + + if test "$with_pthread" = yes ; then + CF_ADD_LIB($cf_lib_pthread) + AC_DEFINE(HAVE_LIBPTHREADS,1,[Define to 1 if we have pthreads library]) + else + AC_MSG_ERROR(Cannot link with pthread library) + fi + ]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_WITH_REL_VERSION version: 1 updated: 2003/09/20 18:12:49 +dnl ------------------- +dnl Allow library's release-version to be overridden. Generally this happens when a +dnl packager has incremented the release-version past that used in the original package, +dnl and wishes to keep doing this. +dnl +dnl $1 is the package name, if any, to derive corresponding {package}_MAJOR +dnl and {package}_MINOR symbols +dnl symbol. +AC_DEFUN([CF_WITH_REL_VERSION],[ +test -z "$cf_cv_rel_version" && cf_cv_rel_version=0.0 +AC_ARG_WITH(rel-version, +[ --with-rel-version=XXX override derived release version], +[AC_MSG_WARN(overriding release version $cf_cv_rel_version to $withval) + cf_cv_rel_version=$withval]) +ifelse($1,,[ + CF_NUMBER_SYNTAX($cf_cv_rel_version,Release version) +],[ + $1_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'` + $1_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[[^.]]*//' -e 's/^\.//' -e 's/\..*//'` + CF_NUMBER_SYNTAX([$]$1_MAJOR,Release major-version) + CF_NUMBER_SYNTAX([$]$1_MINOR,Release minor-version) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_SYSMOUSE version: 3 updated: 2012/10/06 17:56:13 +dnl ---------------- +dnl If we can compile with sysmouse, make it available unless it is not wanted. +AC_DEFUN([CF_WITH_SYSMOUSE],[ +# not everyone has "test -c" +if test -c /dev/sysmouse 2>/dev/null ; then +AC_MSG_CHECKING(if you want to use sysmouse) +AC_ARG_WITH(sysmouse, + [ --with-sysmouse use sysmouse (FreeBSD console)], + [cf_with_sysmouse=$withval], + [cf_with_sysmouse=maybe]) + if test "$cf_with_sysmouse" != no ; then + AC_TRY_COMPILE([ +#include +#if (__FreeBSD_version >= 400017) +#include +#include +#else +#include +#endif +],[ + struct mouse_info the_mouse; + ioctl(0, CONS_MOUSECTL, &the_mouse); +],[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 --------------- +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 +dnl normally chosen automatically based on the type of system which you are +dnl building on. We use it for testing the configure script. +dnl +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]) +AC_ARG_WITH(system-type, + [ --with-system-type=XXX test: override derived host system-type], +[AC_MSG_WARN(overriding system type to $withval) + cf_cv_system_name=$withval + host_os=$withval +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 +dnl ---------------- +AC_DEFUN([CF_WITH_VALGRIND],[ +CF_NO_LEAKS_OPTION(valgrind, + [ --with-valgrind test: use valgrind], + [USE_VALGRIND]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_VERSIONED_SYMS version: 10 updated: 2021/01/04 18:48:01 +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 +dnl the same as the SONAME at which the symbol was first introduced. +dnl +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_MSG_CHECKING(if versioned-symbols file should be used) +AC_ARG_WITH(versioned-syms, + [ --with-versioned-syms=X markup versioned symbols using ld], + [with_versioned_syms=$withval], + [with_versioned_syms=no]) +case "x$with_versioned_syms" in +(xyes) + with_versioned_syms='${top_srcdir}/package/ifelse($1,,${PACKAGE},[$1]).map' + AC_SUBST(PACKAGE) + ;; +(xno) + ;; +(x/*) + test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms) + ;; +(*) + test -f "$with_versioned_syms" || AC_MSG_ERROR(expected a filename: $with_versioned_syms) + with_versioned_syms=`pwd`/"$with_versioned_syms" + ;; +esac +AC_MSG_RESULT($with_versioned_syms) + +RESULTING_SYMS= +VERSIONED_SYMS= +WILDCARD_SYMS= + +if test "x$with_versioned_syms" != xno +then + RESULTING_SYMS=$with_versioned_syms + case "x$MK_SHARED_LIB" in + (*-Wl,*) + 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) + ;; + (*-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) + ;; + (*) + AC_MSG_WARN(this system does not support versioned-symbols) + ;; + esac + + # Linux ld can selectively override scope, e.g., of symbols beginning with + # "_" by first declaring some as global, and then using a wildcard to + # declare the others as local. Some other loaders cannot do this. Check + # by constructing a (very) simple shared library and inspecting its + # symbols. + if test "x$VERSIONED_SYMS" != "x" + then + AC_MSG_CHECKING(if wildcards can be used to selectively omit symbols) + WILDCARD_SYMS=no + + # make sources + rm -f conftest.* + + cat >conftest.ver <conftest.$ac_ext <conftest.mk <&AC_FD_CC >/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]][[ ]]'`" + test -n "$cf_missing" && WILDCARD_SYMS=yes + fi + AC_MSG_RESULT($WILDCARD_SYMS) + rm -f conftest.* + fi +fi +AC_SUBST(RESULTING_SYMS) +AC_SUBST(VERSIONED_SYMS) +AC_SUBST(WILDCARD_SYMS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54 +dnl --------------- +dnl Handle configure option "--with-x11-rgb", setting these shell +dnl variables: +dnl +dnl $RGB_PATH is the option value, used for finding the X11 rgb file. +dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given. +dnl +dnl Most Linux's use this: +dnl /usr/share/X11/rgb.txt +dnl Debian uses this: +dnl /etc/X11/rgb.txt +dnl DragonFlyBSD ports uses this: +dnl /usr/pkg/lib/X11/rgb.txt +dnl FreeBSD ports use these: +dnl /usr/local/lib/X11/rgb.txt +dnl /usr/local/share/X11/rgb.txt +dnl Mandriva has these: +dnl /usr/lib/X11/rgb.txt +dnl /usr/lib64/X11/rgb.txt +dnl NetBSD has these +dnl /usr/X11R7/lib/X11/rgb.txt +dnl OpenSolaris uses +dnl 32-bit: +dnl /usr/X11/etc/X11/rgb.txt +dnl /usr/X11/share/X11/rgb.txt +dnl /usr/X11/lib/X11/rgb.txt +dnl OSX uses +dnl /opt/local/share/X11/rgb.txt (MacPorts) +dnl /opt/X11/share/X11/rgb.txt (non-ports) +dnl 64-bit: +dnl /usr/X11/etc/X11/rgb.txt +dnl /usr/X11/share/X11/rgb.txt (perhaps) +dnl /usr/X11/lib/amd64/X11/rgb.txt +dnl Solaris10 uses (in this order): +dnl /usr/openwin/lib/X11/rgb.txt +dnl /usr/X11/lib/X11/rgb.txt +AC_DEFUN([CF_WITH_X11_RGB],[ +AC_MSG_CHECKING(for X11 rgb file) +AC_ARG_WITH(x11-rgb, + [ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)], + [RGB_PATH=$withval], + [RGB_PATH=auto]) + +if test "x[$]RGB_PATH" = xauto +then + RGB_PATH='${exec_prefix}/lib/X11/rgb.txt' + for cf_path in \ + /opt/local/share/X11/rgb.txt \ + /opt/X11/share/X11/rgb.txt \ + /usr/share/X11/rgb.txt \ + /usr/X11/share/X11/rgb.txt \ + /usr/X11/lib/X11/rgb.txt \ + /usr/lib/X11/rgb.txt \ + /etc/X11/rgb.txt \ + /usr/pkg/lib/X11/rgb.txt \ + /usr/X11R7/lib/X11/rgb.txt \ + /usr/X11R6/lib/X11/rgb.txt \ + /usr/X11R5/lib/X11/rgb.txt \ + /usr/X11R4/lib/X11/rgb.txt \ + /usr/local/lib/X11/rgb.txt \ + /usr/local/share/X11/rgb.txt \ + /usr/lib64/X11/rgb.txt + do + if test -f "$cf_path" ; then + RGB_PATH="$cf_path" + break + fi + done +else + cf_path=$RGB_PATH + CF_PATH_SYNTAX(cf_path) +fi + +AC_MSG_RESULT($RGB_PATH) +AC_SUBST(RGB_PATH) +AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt]) + +no_x11_rgb= +if test "$RGB_PATH" = no +then + no_x11_rgb="#" +fi +AC_SUBST(no_x11_rgb) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37 +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, +dnl without losing the common non-POSIX features. +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +dnl $2 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_XOPEN_SOURCE],[ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([CF_POSIX_VISIBLE]) + +if test "$cf_cv_posix_visible" = no; then + +cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) +cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) +cf_xopen_source= + +case "$host_os" in +(aix[[4-7]]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[[0-8]].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*|midnightbsd*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[[56]].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + CF_GNU_SOURCE($cf_XOPEN_SOURCE) + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[[6-9]]*) + # 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. + AC_MSG_WARN(this system does not provide usable locale support) + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=700 + ;; +(openbsd[[4-5]]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[[45]]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + CF_TRY_XOPEN_SOURCE + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +esac + +if test -n "$cf_xopen_source" ; then + CF_APPEND_CFLAGS($cf_xopen_source,true) +fi + +dnl In anything but the default case, we may have system-specific setting +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 ],[ +#ifndef _XOPEN_SOURCE +make an error +#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 ],[ +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif], + [cf_XOPEN_SOURCE_set_ok=yes], + [cf_XOPEN_SOURCE_set_ok=no]) + if test "$cf_XOPEN_SOURCE_set_ok" = no + then + AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) + fi + else + CF_TRY_XOPEN_SOURCE + fi +fi +fi # cf_cv_posix_visible +]) +dnl --------------------------------------------------------------------------- +dnl CF__SED_TRIMBLANKS version: 1 updated: 2021/01/02 09:31:20 +dnl ------------------ +dnl Trim something using sed, then trim extra whitespace +dnl $1 = extra parameters, e.g., in CF_STRIP_G_OPT +define([CF__SED_TRIMBLANKS],[sed ifelse($1,,,[$1] )-e 's%[[ ]]% %g' -e 's% [[ ]]*% %g' -e 's%^ %%' -e 's% [$]%%'])dnl diff --git a/deps/ncurses-6.3/announce.html.in b/deps/ncurses-6.3/announce.html.in new file mode 100644 index 0000000..caaa289 --- /dev/null +++ b/deps/ncurses-6.3/announce.html.in @@ -0,0 +1,1831 @@ + + + + + + Announcing ncurses @VERSION@ + + + + + +

Announcing ncurses @VERSION@

+ +

Overview

+ +

The ncurses (new curses) + library is a free software emulation of curses in System V + Release 4.0 (SVr4), and more. It uses terminfo format, supports + pads and color and multiple highlights and forms characters and + function-key mapping, and has all the other SVr4-curses + enhancements over BSD curses. SVr4 curses became the basis of + X/Open Curses.

+ +

In mid-June 1995, the maintainer of 4.4BSD curses declared + that he considered 4.4BSD curses obsolete, and encouraged the + keepers of unix releases such as + BSD/OS, FreeBSD and NetBSD to switch over to ncurses.

+ +

Since 1995, ncurses has been + ported to many systems:

+ +
    +
  • It is used in almost every system based on the Linux kernel + (aside from some embedded applications).
  • + +
  • It is used as the system curses library on OpenBSD, FreeBSD + and MacOS.
  • + +
  • It is used in environments such as Cygwin and MinGW. The + first of these was EMX on OS/2 Warp.
  • + +
  • It is used (though usually not as the system + curses) on all of the vendor unix systems, e.g., AIX, HP-UX, IRIX64, SCO, + Solaris, Tru64.
  • + +
  • It should work readily on any ANSI/POSIX-conforming + unix.
  • +
+ +

The distribution includes the library and support utilities, + including

+ +
    +
  • captoinfo, a termcap conversion + tool
  • + +
  • clear, utility for clearing the + screen
  • + +
  • infocmp, the terminfo decompiler
  • + +
  • tabs, set tabs on a terminal
  • + +
  • tic, the terminfo compiler
  • + +
  • toe, list (table of) terminfo + entries
  • + +
  • tput, utility for retrieving terminal + capabilities in shell scripts
  • + +
  • tset, to initialize the terminal
  • +
+ +

Full manual pages are provided for the library and tools.

+ +

The ncurses distribution is + available at ncurses' homepage:

+ +
+

ftp://ftp.invisible-island.net/ncurses/ + or
+ https://invisible-mirror.net/archives/ncurses/ .

+
+ +

It is also available via anonymous FTP at the GNU distribution + site

+ +
+

ftp://ftp.gnu.org/gnu/ncurses/ .

+
+ +

Release + Notes

+ +

These notes are for ncurses + @VERSION@, released October 21, 2021.

+ +

This release is designed to be source-compatible with + ncurses 5.0 through 6.2; providing + extensions to the application binary interface (ABI). Although + the source can still be configured to support the ncurses 5 ABI, the reason for the release is + to reflect improvements to the ncurses 6 ABI and the supporting utility + programs.

+ +

There are, of course, numerous other improvements, listed in + this announcement.

+ +

The most important + bug-fixes/improvements dealt with portability issues. The + release notes also mention some other bug-fixes, but are focused + on new features and improvements to existing features since + ncurses 6.2 release.

+ +

Library improvements

+ +

New features

+ +

There are a few new features:

+ +
    +
  • +

    A new (experimental) driver, for the Windows Terminal + configuration is provided.

    +
  • + +
  • +

    A script is provided which enables OpenBSD users to + upgrade their system to use ncurses 6.3 (OpenBSD developers + are also invited to do this).

    +
  • +
+ +

Additionally, to improve performance other changes (and + extensions) are provided in this release:

+ +
    +
  • +

    modify lib_mouse.c to check for out-of-range button + numbers, convert those to position reports.

    +
  • + +
  • +

    add sp-funcs for + erasewchar, + killwchar.

    +
  • +
+ +

Other + improvements

+ +

These are revised features:

+ +
    +
  • modify wgetnstr, wgetn_wstr to improve compatibility with + SVr4 curses in its treatment of interrupt and quit + characters
  • +
+ +

These were done to limit or ultimately deprecate features:

+ +
    +
  • +

    mark wgetch-events feature as deprecated.

    + +
      +
    • +

      prevent KEY_EVENT from appearing in + curses.h unless the configure option + --enable-wgetch-events is used.

      +
    • + +
    • +

      modify MKkey_defs.sh to hide ncurses' + definition of KEY_EVENTS to reduce Visual + Studio C++ redefinition warnings.

      +
    • +
    +
  • + +
  • +

    reduce build-warnings by excluding ncurses-internals from + deprecation warnings.

    +
  • +
+ +

These are improvements to existing features:

+ +
    +
  • +

    drop symbols GCC_PRINTF and GCC_SCANF + from <curses.h>, to simplify use.

    +
  • + +
  • +

    apply gcc format attribute to prototypes which use a + va_list parameter rather than a “...” + variable-length parameter list.

    +
  • + +
  • +

    modify <term.h> so that it is not necessary to + include <curses.h> before <term.h>.

    +
  • + +
  • +

    provide for wide-characters as background character in + wbkgrnd

    +
  • + +
  • +

    improve parameter-checking for tparm, adding function + _nc_tiparm() to handle the most-used case, which accepts only + numeric parameters.

    +
  • + +
  • +

    use return-value from vsnprintf to reallocate as + needed to allow for buffers larger than the screen size.

    +
  • + +
  • +

    add another fflush(stdout) in _nc_flush + to handle time-delays in the middle of strings such as flash + when the application uses low-level calls rather than + curses.

    +
  • +
+ +

These are corrections to existing features:

+ +
    +
  • +

    add a check to guard against repeat_char emitting + digits which could be interpreted as BSD-style padding when + --enable-bsdpad is configured.

    +
  • + +
  • +

    check for screen size-change in scr_init and + scr_restore, in + case a screen dump does not match the current screen + dimensions

    +
  • +
+ +

Program + improvements

+ +

Several improvements were made to the + utility programs:

+ +
+
tabs +
+ +
+
    +
  • +

    implement “+m” option

    +
  • +
+
+ +
tic +
+ +
+
    +
  • +

    add check for duplicate “use=” + clauses.

    +
  • + +
  • +

    add check to report instances where tparm + would detect an error in an expression.

    +
  • + +
  • +

    add user-defined capabilities from mintty to + Caps-ncurses, for checking consistency.

    +
  • + +
  • +

    improve warning when oc/op do not mention SGR 39/49 + for xterm compatible XT flag.

    +
  • + +
  • +

    improve checks for number of parameters of + smglp, smgrp, + smgtp, and smgbp.

    +
  • + +
  • +

    improve “-c” option to validate + the number and type of parameters and compare against + expected number/type before deciding which set of + parameter-lists to use in tparm calls.

    +
  • + +
  • +

    improve check for errors detected in + tparm.

    +
  • + +
  • +

    improve format of output, to ensure that the messages + contain only printable text.

    +
  • + +
  • +

    modify to eliminate unnecessary + “\” to escape + “:” in terminfo format.

    +
  • + +
  • +

    remove check that assumes that none or both + parameterized and non-parameterized margin-setting + capabilities are present.

    +
  • +
+
+ +
toe +
+ +
+
    +
  • +

    modify output of “toe -as” to + show first description found rather than the last.

    +
  • + +
  • +

    add a check to ensure that a “termcap + file” is text rather than binary.

    +
  • +
+
+ +
tput +
+ +
+
    +
  • +

    modify to allow multiple commands per line.

    +
  • + +
  • +

    improve parameter-checking by analyzing all extended + string capabilities, e.g., as used in the Cs + and Ms capabilities of the tmux + description.

    +
  • + +
  • +

    make warning messages consistently using alias names + when those are used, rather than the underlying program's + name.

    +
  • + +
  • +

    improve usage message for aliases such as + clear, by eliminating tput-specific + portions.

    +
  • + +
  • +

    modify initialization to avoid opening + /dev/tty for cases other than + reset/init, e.g., for clear.

    +
  • +
+
+
+ +

Examples

+ +

Along with the library and utilities, improvements were made + to the ncurses-examples. Most of + this activity aimed at improving the test-packages. A few changes + are more generally useful, e.g., for the main ncurses + test-program, and for analyzing traces using the + tracemunch script:

+ +
    +
  • +

    add “-r” option to the dots + test-programs, to help with scripting a performance + comparison.

    +
  • + +
  • +

    build-fix for test_opaque, for configurations + without opaque curses structs, e.g., ncurses 5.7.

    +
  • + +
  • +

    improve tracemunch logic for "RUN" + compaction.

    +
  • + +
  • +

    improve tracemunch's coverage of form/menu/panel + libraries.

    +
  • + +
  • +

    improve tracemunch's checking/reporting the type + for the first parameter, e.g., "WINDOW*" rather than + "#1".

    +
  • + +
  • +

    modify tracemunch and the panel library to show + readable traces for panel- and user-pointers.

    +
  • +
+ +

There are other new demo/test programs and reusable + examples:

+ +
+
back_ground +
+ +
to exercise the wide-character background functions.
+ +
move_field +
+ +
to demonstrate move_field, and a stub + for a corresponding demo of dup_field.
+ +
test_tparm +
+ +
for checking tparm changes.
+
+ +

Terminal database

+ +

There are several new terminal descriptions:

+ +
+

absolute, + att610+cvis, + foot, + foot-direct, + hp98550-color, + hpterm-color2, + hterm, + hterm-256color, + linux-s, + putty+keypad, + putty+screen, + putty-screen, + screen.linux-s, + scrt/securecrt, + tmux-direct, + vt220+cvis, + vt220+cvis8, + vt220+pcedit, + vt220+vtedit, + vt220-base, + vt52+keypad, + xterm+256color2, + xterm+88color2, + xterm-direct16, + xterm-direct256, + xterm+nofkeys, + and xterm+nopcfkeys.

+
+ +

There are many changes to existing terminal descriptions. Some + were updates to several descriptions:

+ + + +

while others affected specific descriptions. These were + retested, to take into account changes by their developers:

+ +
+

kitty+common, + mlterm3, + ms-terminal

+
+ +

while these are specific fixes based on reviewing + documentation, user reports, or warnings from tic:

+ +
+
aaa+dec, + aaa+rv
+ +
correct rmacs/smacs
+ +
aaa+rv +
+ +
correct sgr
+ +
icl6404 +
+ +
correct csr
+ +
kitty +
+ +
use att610+cvis, xterm+tmux and ansi+enq
+ +
konsole-base +
+ +
re-enable "bel"
+ +
linux2.6 +
+ +
fix pound-sign mapping in acsc
+ +
linux3.0 +
+ +
modify to reflect default mapping of shift-tab by kbd + 1.14
+ +
pccons +
+ +
fill in some missing pieces, to make it comparable to the + vt220 entry
+ +
putty +
+ +
use vt100+fnkeys, add rep
+ +
screen +
+ +
use vt100+enq
+ +
terminator +
+ +
corrected tsl capability
+ +
ti916 +
+ +
correct cup
+ +
tmux +
+ +
change kbs to ^?
+ +
vt220 +
+ +
use vt220+cvis
+ +
vt420+lrmm +
+ +
add smglp and smgrp
+ +
vt420 +
+ +
use vt420+lrmm
+ +
xterm-new +
+ +
add nel
+ +
xterm-vt52 +
+ +
use vt52+keypad
+
+ +

A few entries use extensions (user-defined terminal + capabilities):

+ + + +

Documentation

+ +

As usual, this release

+ +
    +
  • +

    improves documentation by describing new features,

    +
  • + +
  • +

    attempts to improve the description of features which + users have found confusing

    +
  • + +
  • +

    fills in overlooked descriptions of features which were + described in the NEWS file + but treated sketchily in manual pages.

    +
  • +
+ +

In addition to providing background information to explain + these features and show how they evolved, there are corrections, + clarifications, etc.:

+ +
    +
  • +

    Corrections:

    + +
      +
    • +

      make opts extension for getcchar + work as documented for ncurses + 6.1, adding “-g” flag to + demo_new_pair to illustrate.

      +
    • + +
    • +

      modify tset + “-q” option to refrain from modifying + terminal modes, to match the documentation.

      +
    • +
    +
  • + +
  • +

    New/improved history and portability sections:

    + +
      +
    • +

      improve documentation for + tparm and static/dynamic variables.

      +
    • + +
    • +

      add history note to curs_scanw.3x + for <stdarg.h> and <varargs.h>

      +
    • + +
    • +

      add history note to curs_printw.3x + for <stdarg.h> and <varargs.h>

      +
    • + +
    • +

      add portability note to ncurses.3x + regarding <stdarg.h>

      +
    • + +
    • +

      add historical notes to tput, + + curses-terminfo and curses-color + manpages based on source-code for SVr2, SVr3 and + SVr4.

      +
    • + +
    • +

      improve history section for tset manpage + based on the 1BSD tarball, which preceded BSD's SCCS + checkins by more than three years.

      +
    • +
    +
  • + +
  • +

    Other improvements:

    + +
      +
    • +

      explain in + ncurses.3x that functions in the tinfo library do not + rely upon wide-characters.

      +
    • + +
    • +

      improve manual page for panel + library, extending the portability section as well as + documenting error-returns.

      +
    • + +
    • +

      add section on margins to terminfo.5, + adapted from X/Open Curses.

      +
    • + +
    • +

      improve man/term.5 + section on legacy storage format.

      +
    • + +
    • +

      add a note in + terminfo.5 explaining that no-parameter strings such + as sgr0 or cnorm + should not be used with tparm.

      +
    • + +
    • +

      improve description of BSD-style padding in curs_termcap.3x

      +
    • + +
    • +

      improve discussion of padding versus tparm + and tputs in + man/curs_terminfo.3x

      +
    • + +
    • +

      add a note in manual page to explain + ungetch vs unget_wch.

      +
    • + +
    • +

      improve description of error-returns in waddch + and waddnstr + manual pages.

      +
    • +
    +
  • +
+ +

There are no new manual pages (all of the manual page updates + are to existing pages).

+ +

Some of the improvements are more subtle, relating to the way + the information is presented. For instance, hyphenation is + suppressed in the HTML files generated from manual pages because + an upgrade to groff gave noticeably poorer results, + interfering with the process of creating links between the + resulting webpages.

+ +

Interesting + bug-fixes

+ +

While there were many bugs fixed during development of ncurses + 6.3, only a few (the reason for this release) were both important + and interesting. Most of the bug-fixes were for local issues + which did not affect compatibility across releases. Since those + are detailed in the NEWS file no elaboration is + needed here.

+ +

The interesting bugs were:

+ +
    +
  • +

    modify wbkgd and + wbkgrnd to + avoid storing a null in the background character, because it + may be used in cases where the corresponding 0x80 is not + treated as a null.

    + +

    This was a regression introduced in ncurses 6.2 (reported + on the mailing list), for which the workaround was to specify + a blank for the background character.

    +
  • + +
  • +

    remove output-related checks for nl/nonl (also + + reported on the mailing list).

    +
  • + +
  • +

    improve tparm implementation of %P and + %g, more closely matching SVr4 terminfo. Those + denote static and dynamic variables in + terminfo expressions.

    + +

    Exactly what those terms meant was never documented before + in any implementation of curses, aside from source code. + Unlike the other two fixes, the problem was discovered while + studying OpenBSD's version of tset.

    +
  • +
+ +

Configuration changes

+ +

Major + changes

+ +

There are no major changes. Several new options were added to + ease integration of packages with systems using different + versions of GNAT and ncurses. Also, + improvements were made to configure checks.

+ +

Configuration options

+ +

There are a few new/modified configure options:

+ +
+
--enable-fvisibility +
+ +
+

new configure option and check for gcc + -fvisibility=hidden feature

+
+ +
--enable-leaks +
+ +
+

corrected to allow turning leak-checking off later in a + set of options.

+
+ +
--enable-stdnoreturn +
+ +
+

new configure option makes the _Noreturn + keyword optional to ease transition.

+
+ +
--disable-pkg-ldflags +
+ +
+

revised option also controls whether $LDFLAGS + from the build is provided in “-config” + and “.pc” files.

+
+ +
--disable-root-access +
+ +
+

add configure option which tells ncurses to disallow most + file-opens by setuid processes.

+
+ +
--disable-wattr-macros +
+ +
+

changed default to help packagers who reuse wide ncursesw + header file with non-wide ncurses library.

+
+ +
--with-pkg-config-libdir +
+ +
+

revised option uses the actual search path from + pkg-config or pkgconf using the output from + --debug.

+
+ +
--with-ada-libname
+ --with-form-libname
+ --with-menu-libname
+ --with-panel-libname +
+ +
+

new several --with-xxx-libname options, + to help with pkgsrc

+
+
+ +

Portability

+ +

Many of the portability changes are implemented via the + configure script:

+ +
    +
  • +

    add a special case in the configure script to work around + one of the build-time breakages reported for OpenBSD 6 here:

    + +
    +

    + https://www.mail-archive.com/bugs@openbsd.org/msg13200.html

    +
    +
  • + +
  • +

    modify configure check for libtool to prevent + accidental use of an OpenBSD program which uses the same + name.

    +
  • + +
  • +

    modify configuration checks for build-time tic/infocmp to + use AC_CHECK_TOOL. That can still be overridden by + --with-tic-path and --with-infocmp-path + when fallbacks are used, but even if not using fallbacks, the + improved check may help with cross-compiling.

    +
  • + +
  • +

    relax modification-time comparison in + CF_LINK_FUNCS to allow it to accept link() function + with NFS filesystems which change the mtime on the link + target, e.g., several BSD systems.

    +
  • + +
  • +

    modify configure check for c89/c99 aliases of + clang to use its -std option instead, + because some platforms, in particular macOS, do not provide + workable c89/c99 aliases.

    +
  • + +
  • +

    modify CF_NCURSES_CONFIG to work around + Xcode's c99 "-W" option, which conflicts with + conventional use for passing linker options.

    +
  • + +
  • +

    modify configure scripts to filter out redefinitions of + _XOPEN_SOURCE, e.g., for NetBSD which generally supports 500, + but 600 is needed for ncursesw.

    +
  • +
+ +

Here are some of the other portability fixes:

+ +
    +
  • +

    change configure-check and source-code for gcc's noreturn + attribute to assume it is a prefix rather than suffix, + matching c11's _Noreturn convention.

    +
  • + +
  • +

    modify mk-1st.awk to account for extra-suffix configure + option.

    +
  • + +
  • +

    build-fix for termsort module when configured with + termcap.

    +
  • + +
  • +

    modify configure script and makefiles to support ".PHONY" + make program feature.

    +
  • + +
  • +

    amend libtool configuration to add dependency for + install.tic, etc., in ncurses/Makefile on the lower-level + libraries.

    +
  • + +
  • +

    modify Ada95 source-generation utility to write to a file + given as parameter rather than to the standard output, + allowing builds with MinGW.

    +
  • + +
  • +

    amend tic/infocmp check to allow for the respective tool's + absence.

    +
  • + +
  • +

    build-fixes for gnat 10.1.1, whose gnatmake drops + integration with gprbuild.

    +
  • + +
  • +

    correct configure version-check/warning for g++ to allow + for 10.x

    +
  • +
+ +
+ +

Features of + ncurses

+ +

The ncurses package is fully + upward-compatible with SVr4 (System V Release 4) curses:

+ +
    +
  • +

    All of the SVr4 calls have been implemented (and are + documented).

    +
  • + +
  • +

    ncurses supports all of the + for SVr4 curses features including keyboard mapping, color, + forms-drawing with ACS characters, and automatic recognition + of keypad and function keys.

    +
  • + +
  • +

    ncurses provides these SVr4 + add-on libraries (not part of X/Open Curses):

    + +
      +
    • +

      the panels library, supporting a stack of windows with + backing store.

      +
    • + +
    • +

      the menus library, supporting a uniform but flexible + interface for menu programming.

      +
    • + +
    • +

      the form library, supporting data collection through + on-screen forms.

      +
    • +
    +
  • + +
  • +

    ncurses's terminal database + is fully compatible with that used by SVr4 curses.

    + +
      +
    • +

      ncurses supports + user-defined capabilities which it can see, but which are + hidden from SVr4 curses applications using the + same terminal database.

      +
    • + +
    • +

      It can be optionally configured to match the format + used in related systems such as AIX and Tru64.

      +
    • + +
    • +

      Alternatively, ncurses + can be configured to use hashed databases rather than the + directory of files used by SVr4 curses.

      +
    • +
    +
  • + +
  • +

    The ncurses utilities have + options to allow you to filter terminfo entries for use with + less capable curses/terminfo versions such + as the HP-UX and AIX ports.

    +
  • +
+ +

The ncurses package also has + many useful extensions over SVr4:

+ +
    +
  • +

    The API is 8-bit clean and base-level conformant with the + X/OPEN curses specification, XSI curses (that is, it + implements all BASE level features, and most + EXTENDED features). It includes many function calls + not supported under SVr4 curses (but portability of all calls + is documented so you can use the SVr4 subset only).

    +
  • + +
  • +

    Unlike SVr3 curses, ncurses + can write to the rightmost-bottommost corner of the screen if + your terminal has an insert-character capability.

    +
  • + +
  • +

    Ada95 and C++ bindings.

    +
  • + +
  • +

    Support for mouse event reporting with X Window xterm and + FreeBSD and OS/2 console windows.

    +
  • + +
  • +

    Extended mouse support via Alessandro Rubini's gpm + package.

    +
  • + +
  • +

    The function wresize allows you to resize + windows, preserving their data.

    +
  • + +
  • +

    The function use_default_colors allows you to + use the terminal's default colors for the default color pair, + achieving the effect of transparent colors.

    +
  • + +
  • +

    The functions keyok and + define_key allow you to better control the use + of function keys, e.g., disabling the ncurses KEY_MOUSE, or by defining more + than one control sequence to map to a given key code.

    +
  • + +
  • +

    Support for direct-color terminals, such as modern + xterm.

    +
  • + +
  • +

    Support for 256-color terminals, such as modern xterm.

    +
  • + +
  • +

    Support for 16-color terminals, such as aixterm + and modern xterm.

    +
  • + +
  • +

    Better cursor-movement optimization. The package now + features a cursor-local-movement computation more efficient + than either BSD's or System V's.

    +
  • + +
  • +

    Super hardware scrolling support. The screen-update code + incorporates a novel, simple, and cheap algorithm that + enables it to make optimal use of hardware scrolling, + line-insertion, and line-deletion for screen-line movements. + This algorithm is more powerful than the 4.4BSD curses + quickch routine.

    +
  • + +
  • +

    Real support for terminals with the magic-cookie glitch. + The screen-update code will refrain from drawing a highlight + if the magic- cookie unattributed spaces required just before + the beginning and after the end would step on a non-space + character. It will automatically shift highlight boundaries + when doing so would make it possible to draw the highlight + without changing the visual appearance of the screen.

    +
  • + +
  • +

    It is possible to generate the library with a list of + pre-loaded fallback entries linked to it so that it can serve + those terminal types even when no terminfo tree or termcap + file is accessible (this may be useful for support of + screen-oriented programs that must run in single-user + mode).

    +
  • + +
  • +

    The tic/captoinfo utility + provided with ncurses has the + ability to translate many termcaps from the XENIX, IBM and + AT&T extension sets.

    +
  • + +
  • +

    A BSD-like tset utility is provided.

    +
  • + +
  • +

    The ncurses library and + utilities will automatically read terminfo entries from + $HOME/.terminfo if it exists, and compile to that directory + if it exists and the user has no write access to the system + directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the + system terminfo directory.

    +
  • + +
  • +

    You may specify a path of directories to search for + compiled descriptions with the environment variable + TERMINFO_DIRS (this generalizes the feature provided by + TERMINFO under stock System V.)

    +
  • + +
  • +

    In terminfo source files, use capabilities may refer not + just to other entries in the same source file (as in System + V) but also to compiled entries in either the system terminfo + directory or the user's $HOME/.terminfo directory.

    +
  • + +
  • +

    The table-of-entries utility toe makes it easy for users to see + exactly what terminal types are available on the system.

    +
  • + +
  • +

    The library meets the XSI requirement that every macro + entry point has a corresponding function which may be linked + (and will be prototype-checked) if the macro definition is + disabled with #undef.

    +
  • + +
  • +

    Extensive documentation is provided (see the Additional + Reading section of the ncurses FAQ for online + documentation).

    +
  • +
+ +

Applications using + ncurses

+ +

The ncurses distribution + includes a selection of test programs (including a few games). + These are available separately as ncurses-examples

+ +

The ncurses library has been tested with a wide variety of + applications including:

+ +
+
+
aptitude +
+ +
+

FrontEnd to Apt, the debian package manager

+ +

https://wiki.debian.org/Aptitude

+
+ +
cdk +
+ +
+

Curses Development Kit

+ +

@WEBSITE@/cdk/
+

+
+ +
ded +
+ +
+

directory-editor

+ +

@WEBSITE@/ded/

+
+ +
dialog +
+ +
+

the underlying application used in Slackware's setup, + and the basis for similar install/configure applications on + many systems.

+ +

@WEBSITE@/dialog/

+
+ +
lynx +
+ +
+

the text WWW browser

+ +

https://lynx.invisible-island.net/

+
+ +
mutt +
+ +
+

mail utility

+ +

http://www.mutt.org/

+
+ +
ncftp +
+ +
+

file-transfer utility

+ +

https://www.ncftp.com/

+
+ +
nvi +
+ +
+

New vi uses ncurses.

+ +

https://sites.google.com/a/bostic.com/keithbostic/vi
+ +

+
+ +
ranger +
+ +
+

A console file manager with VI key bindings in + Python.

+ +

https://ranger.github.io/

+
+ +
tin +
+ +
+

newsreader, supporting color, MIME

+ +

http://www.tin.org/

+
+ +
vifm +
+ +
+

File manager with vi like keybindings

+ +

https://vifm.info/

+
+
+
+ +

as well as some that use ncurses for the terminfo support alone:

+ +
+
+
minicom +
+ +
+

terminal emulator for serial modem connections

+ +

https://alioth.debian.org/projects/minicom/

+
+ +
mosh +
+ +
+

a replacement for ssh.

+ +

https://mosh.org/

+
+ +
tack +
+ +
+

terminfo action checker

+ +

@HOMEPAGE@/tack.html

+
+ +
tmux +
+ +
+

terminal multiplexor

+ +

https://github.com/tmux/tmux/wiki

+
+ +
vile +
+ +
+

vi-like-emacs may be built to use the terminfo, + termcap or curses interfaces.

+ +

@WEBSITE@/vile/

+
+
+
+ +

and finally, those which use only the termcap interface:

+ +
+
+
emacs +
+ +
+

text editor

+ +

https://www.gnu.org/software/emacs/

+
+ +
less +
+ +
+

The most commonly used pager (a program that + displays text files).

+ +

http://www.greenwoodsoftware.com/less/

+
+ +
screen +
+ +
+

terminal multiplexor

+ +

https://www.gnu.org/software/screen/

+
+ +
vim +
+ +
+

text editor

+ +

https://www.vim.org/

+
+
+
+ +

Development + activities

+ +

Zeyd Ben-Halim started ncurses + from a previous package pcurses, written by Pavel Curtis. Eric S. + Raymond continued development. Jürgen Pfeifer wrote most of + the form and menu libraries.

+ +

Ongoing development work is done by Thomas E. Dickey. Thomas + E. Dickey has acted as the maintainer for the Free Software + Foundation, which held a copyright on ncurses for + releases 4.2 through 6.1. Following the release of ncurses 6.1, + effective as of release 6.2, copyright for ncurses reverted to + Thomas E. Dickey (see the ncurses FAQ for + additional information).

+ +

Contact the current maintainers at

+ +
+ bug-ncurses@gnu.org +
+ +

To join the ncurses mailing list, please write email to

+ +
+ bug-ncurses-request@gnu.org +
+ containing the line: +
+

subscribe + <name>@<host.domain>

+
+ +

This list is open to anyone interested in helping with the + development and testing of this package.

+ +

Beta versions of ncurses are + made available at

+ +
+

ftp://ftp.invisible-island.net/ncurses/current/ + and
+ https://invisible-mirror.net/archives/ncurses/current/ .

+
+ +

Patches to the current release are made available at

+ +
+

ftp://ftp.invisible-island.net/ncurses/6.2/ + and
+ https://invisible-mirror.net/archives/ncurses/6.2/ .

+
+ +

There is an archive of the mailing list here:

+ +
+

http://lists.gnu.org/archive/html/bug-ncurses + (also https)

+
+ +

Related + resources

+ +

The release notes make scattered references to these pages, + which may be interesting by themselves:

+ + + +

Other + resources

+ +

The distribution provides a newer version of the + terminfo-format terminal description file once maintained by + Eric + Raymond . Unlike the older version, the termcap and + terminfo data are provided in the same file, which also provides + several user-definable extensions beyond the X/Open + specification.

+ +

You can find lots of information on terminal-related topics + not covered in the terminfo file at + Richard Shuford's archive . The collection of computer + manuals at bitsavers.org has also been + useful.

+ + + + diff --git a/deps/ncurses-6.3/c++/Makefile.in b/deps/ncurses-6.3/c++/Makefile.in new file mode 100644 index 0000000..99f21da --- /dev/null +++ b/deps/ncurses-6.3/c++/Makefile.in @@ -0,0 +1,292 @@ +# $Id: Makefile.in,v 1.133 2021/07/03 18:53:57 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,2016 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: Thomas E. Dickey +# +# Simple makefile for c++ window class demo + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ + +CF_MFLAGS = @cf_cv_makeflags@ +@SET_MAKE@ +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = ../@DFT_OBJ_SUBDIR@ +DESTDIR = @DESTDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +PACKAGE = @PACKAGE@ + +LIBTOOL = @LIBTOOL_CXX@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ @LIBTOOL_OPTS_CXX@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ +LIBTOOL_VERSION = @LIBTOOL_VERSION@ +LT_UNDEF = @LT_UNDEF@ + +INSTALL = @INSTALL@ +INSTALL_LIB = $(INSTALL) @INSTALL_LIB@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_OPT_P = @INSTALL_OPT_P@ + +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AWK = @AWK@ +LD = @LD@ +LN_S = @LN_S@ + +CXX_AR = @CXX_AR@ +CXX_ARFLAGS = @CXX_ARFLAGS@ +RANLIB = @LIB_PREP@ + +CXX = @CXX@ +CPP = @CXXCPP@ +CXXFLAGS = @CXXFLAGS@ @EXTRA_CXXFLAGS@ +CXXLIBS = @CXXLIBS@ + +INCDIR = ../include +CPPFLAGS = -DHAVE_CONFIG_H -DBUILDING_NCURSES_CXX -I../c++ @CPPFLAGS@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +CC = ${CXX} +CCFLAGS = $(CPPFLAGS) $(CXXFLAGS) + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CXX_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +NCURSES_MAJOR = @NCURSES_MAJOR@ +NCURSES_MINOR = @NCURSES_MINOR@ +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ + +LOCAL_LIBDIR = @top_builddir@/lib + +LINK = @LINK_PROGS@ $(LIBTOOL_LINK) @CXXLDFLAGS@ +SHLIB_DIRS = -L../lib +SHLIB_LIST = $(SHLIB_DIRS) \ + -l@FORM_NAME@@USE_LIB_SUFFIX@ \ + -l@MENU_NAME@@USE_LIB_SUFFIX@ \ + -l@PANEL_NAME@@USE_LIB_SUFFIX@ \ + -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ + +LIBROOT = ncurses++ + +LIBNAME_LIBTOOL = @LIB_PREFIX@$(LIBROOT)@USE_LIB_SUFFIX@.la +LIBNAME_NORMAL = @LIB_PREFIX@$(LIBROOT)@USE_LIB_SUFFIX@.a +LIBNAME = @LIB_PREFIX@$(LIBROOT)@CXX_LIB_SUFFIX@ + +LIBRARIES = @Libs_To_Make@ + +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ +LINT_LIBS = -lncurses @LIBS@ + +LINK_FLAGS = @EXTRA_LDFLAGS@ -L../lib -l$(LIBROOT)@USE_LIB_SUFFIX@ +RPATH_LIST = @RPATH_LIST@ +MK_SHARED_LIB = @MK_SHARED_LIB@ + +LINK_LIBTOOL = @EXTRA_LDFLAGS@ -L../lib $(LIBRARIES) +LINK_NORMAL = $(LINK_FLAGS) +LINK_DEBUG = $(LINK_FLAGS) +LINK_PROFILE = $(LINK_FLAGS) +LINK_SHARED = $(LINK_FLAGS) + +# flags for test-programs +TEST_LIBS = @TEST_LIBS@ +TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@ +TEST_LDFLAGS = $(TEST_ARGS) @LDFLAGS@ \ + @LD_MODEL@ $(TEST_LIBS) @LIBS@ @LOCAL_LDFLAGS@ $(CXXLIBS) + +LDFLAGS_LIBTOOL = $(TEST_LDFLAGS) $(CFLAGS_LIBTOOL) +LDFLAGS_NORMAL = $(TEST_LDFLAGS) $(CFLAGS_NORMAL) +LDFLAGS_DEBUG = $(TEST_LDFLAGS) $(CFLAGS_DEBUG) +LDFLAGS_PROFILE = $(TEST_LDFLAGS) $(CFLAGS_PROFILE) +LDFLAGS_SHARED = $(TEST_LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@ + +LDFLAGS_DEFAULT = $(LINK_@DFT_UPR_MODEL@) $(LDFLAGS_@DFT_UPR_MODEL@) + +# flags for library built by this makefile +LDFLAGS = $(TEST_ARGS) @LDFLAGS@ \ + @LD_MODEL@ $(TEST_LIBS) @LIBS@ $(CXXLIBS) + +AUTO_SRC = \ + etip.h + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : depend +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +libs :: $(AUTO_SRC) $(LIBRARIES) + +@MAKE_TESTS@all :: demo$x + +depend : + +sources : $(AUTO_SRC) + +tags: + $(CTAGS) *.[h] *.cc + +$(DESTDIR)$(libdir) : + mkdir -p $@ + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ii *.ln *.atac trace + +clean :: mostlyclean + -$(SHELL) -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" + -rm -rf $(MODEL)/SunWS_cache + -$(LIBTOOL_CLEAN) rm -f demo$x $(AUTO_SRC) $(LIBRARIES) $(OBJS_DEMO) + -rm -rf .libs *.dSYM + +distclean :: clean + -rm -f Makefile + +realclean :: distclean + +############################################################################### + +HEADER_DEPS = @INTERNALS_HDR@ \ + etip.h \ + ../include/curses.h \ + ../include/eti.h \ + ../include/form.h \ + ../include/menu.h \ + ../include/ncurses_cfg.h \ + ../include/ncurses_def.h \ + ../include/ncurses_dll.h \ + ../include/panel.h \ + ../include/unctrl.h \ + $(INCDIR)/nc_string.h \ + $(srcdir)/cursesp.h \ + $(srcdir)/cursesw.h \ + $(srcdir)/cursslk.h \ + $(srcdir)/internal.h + +cursesw_h = $(srcdir)/cursesw.h \ + $(HEADER_DEPS) + +cursesp_h = $(srcdir)/cursesp.h \ + $(cursesw_h) + +cursesf_h = $(srcdir)/cursesf.h \ + $(cursesp_h) + +cursesm_h = $(srcdir)/cursesm.h \ + $(cursesp_h) + +cursslk_h = $(srcdir)/cursslk.h \ + $(cursesw_h) + +cursesapp_h = $(srcdir)/cursesapp.h \ + $(cursslk_h) + +$(INCDIR)/form.h : + ( cd ../form && $(MAKE) $@ ) + +$(INCDIR)/menu.h : + ( cd ../menu && $(MAKE) $@ ) + +$(INCDIR)/panel.h : + ( cd ../panel && $(MAKE) $@ ) + +############################################################################### + +OBJS_DEMO = $(MODEL)/demo$o + +$(MODEL)/demo$o : $(srcdir)/demo.cc \ + $(HEADER_DEPS) \ + $(cursesf_h) \ + $(cursesm_h) \ + $(cursesapp_h) + @echo 'compiling demo (obj_s)' + @( cd $(MODEL) && $(LIBTOOL_COMPILE) $(CXX) $(CFLAGS_DEFAULT) -c $(top_srcdir)/c++/demo.cc -o $@ ) + +demo$x: $(OBJS_DEMO) \ + $(LIBRARIES) \ + @TEST_DEPS@ + @ECHO_LD@ $(LINK) -o $@ $(OBJS_DEMO) $(LDFLAGS_DEFAULT) + +etip.h: $(srcdir)/etip.h.in $(srcdir)/edit_cfg.sh + cp $(srcdir)/etip.h.in $@ + $(SHELL) $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ + +# Verify that each header-file can be compiled without including another. +check :: + @$(SHELL) -c "for header in *.h;\ + do \ + [ \$${header} = etip.h ] && continue; \ + echo \"** testing \$${header}\" ; \ + echo \"#include <\$${header}>\" >headers.cc; \ + echo \"int main(int argc, char **argv) { (void) argc; (void) argv; return 0; }\" >>headers.cc; \ + $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) headers.cc; \ + done" + -@rm -f headers.* + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-6.3/c++/NEWS b/deps/ncurses-6.3/c++/NEWS new file mode 100644 index 0000000..998e5ff --- /dev/null +++ b/deps/ncurses-6.3/c++/NEWS @@ -0,0 +1,72 @@ +------------------------------------------------------------------------------- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-1999,2006 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. -- +------------------------------------------------------------------------------- +-- $Id: NEWS,v 1.6 2021/06/17 21:20:30 tom Exp $ +------------------------------------------------------------------------------- +This is a log of changes that the ncurses C++ binding has gone +through starting with the integration of menu and forms integration +into the binding. + +990731 + Improve support for pads. A viewport window may now be added to + a pad. It will then be possible to use a builtin panning mechanism + to view the pad. + +970908 + Improve NCursesWindow class: added additional methods to + cover more ncurses functionality. Make refresh() and + noutrefresh() virtual members to allow different implementation + in the NCursesPanel class. + + CAUTION: changed order of parameters in vline() and hline() of + NCursesWindow class. + + Make refresh() in NCursesPanel non-static, it is now a + reimplementation of refresh() in the base class. Added + noutrefresh() to NCursesPanel. + + Added NCursesForm and related classes to support libform + functionality. + + Moved most of configuration related stuff from cursesw.h to + etip.h + + Added NCursesApplication class to support easy configuration + of menu and forms related attributes as well as ripped of + title lines and Soft-Label-Keys for an application. + + Support of Auto-Cleanup for a menus fieldlist. + + Change of return type for current_item() and operator[] for + menus. + + Enhanced demo. +970502 + + Introduced the THROW and THROWS functions/macros to prepare + a smoother transition to real exception handling. + + Exception classes provided in etip.h + + Added the NCursesMenu class to support libmenu functionality. + + The inheritace relation between NCursesWindow and NCursesColorWindow + was kind of brain damage. Monochrome is a special case of colored, so + the relation should be just the opposite. This would allow all + derived classes like NCursesPanel, NCursesMenu or NCursesForm to + have colors. + To resolve that design flaw I put the color functionality into the + NCursesWindow class and it can be switched on by the static member + useColors(). NCursesColorWindow is still there for compatibility + reasons. diff --git a/deps/ncurses-5.9/c++/PROBLEMS b/deps/ncurses-6.3/c++/PROBLEMS similarity index 92% rename from deps/ncurses-5.9/c++/PROBLEMS rename to deps/ncurses-6.3/c++/PROBLEMS index 7f2a7df..daa3754 100644 --- a/deps/ncurses-5.9/c++/PROBLEMS +++ b/deps/ncurses-6.3/c++/PROBLEMS @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 1998,2006 Free Software Foundation, Inc. -- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998,2006 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 -- @@ -25,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: PROBLEMS,v 1.3 2006/04/22 22:19:37 tom Exp $ +-- $Id: PROBLEMS,v 1.4 2020/02/02 23:34:34 tom Exp $ ------------------------------------------------------------------------------- This is a list of open problems. This mainly lists known missing pieces and design flaws. diff --git a/deps/ncurses-5.9/c++/README-first b/deps/ncurses-6.3/c++/README-first similarity index 95% rename from deps/ncurses-5.9/c++/README-first rename to deps/ncurses-6.3/c++/README-first index 42487f5..313c1f8 100644 --- a/deps/ncurses-5.9/c++/README-first +++ b/deps/ncurses-6.3/c++/README-first @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. -- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2006,2007 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 -- @@ -25,7 +26,7 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: README-first,v 1.9 2007/01/27 18:27:09 tom Exp $ +-- $Id: README-first,v 1.11 2021/06/17 21:20:30 tom Exp $ ------------------------------------------------------------------------------- C++ interface to ncurses routines ----------------------------------------------------------------------- @@ -44,7 +45,7 @@ the curses.h file. This is a steady cause of trouble because many common identifiers are used. Instead now all #defines are inline functions, which also allows strict type checking of arguments. -The next enhancement is color support. It was originally provided by a +The next enhancement is color support. It was originally provided by a derived class. This caused some trouble if you think about Panels or Menus and Forms with colors. We decided to put color support into the base class so that any derived class may use color support also. diff --git a/deps/ncurses-5.9/c++/cursesapp.cc b/deps/ncurses-6.3/c++/cursesapp.cc similarity index 91% rename from deps/ncurses-5.9/c++/cursesapp.cc rename to deps/ncurses-6.3/c++/cursesapp.cc index ddab6fd..81f6098 100644 --- a/deps/ncurses-5.9/c++/cursesapp.cc +++ b/deps/ncurses-6.3/c++/cursesapp.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2007,2008 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 * @@ -35,7 +36,7 @@ #include "internal.h" #include "cursesapp.h" -MODULE_ID("$Id: cursesapp.cc,v 1.15 2008/08/16 17:15:35 tom Exp $") +MODULE_ID("$Id: cursesapp.cc,v 1.18 2020/07/18 19:57:11 anonymous.maarten Exp $") void NCursesApplication::init(bool bColors) @@ -68,7 +69,12 @@ NCursesApplication* NCursesApplication::theApp = 0; NCursesWindow* NCursesApplication::titleWindow = 0; NCursesApplication::SLK_Link* NCursesApplication::slk_stack = 0; -NCursesApplication::~NCursesApplication() + +NCursesWindow *&NCursesApplication::getTitleWindow() { + return titleWindow; +} + +NCursesApplication::~NCursesApplication() THROWS(NCursesException) { Soft_Label_Key_Set* S; @@ -86,6 +92,10 @@ NCursesApplication::~NCursesApplication() ::endwin(); } +NCursesApplication* NCursesApplication::getApplication() { + return theApp; +} + int NCursesApplication::rinit(NCursesWindow& w) { titleWindow = &w; diff --git a/deps/ncurses-5.9/c++/cursesapp.h b/deps/ncurses-6.3/c++/cursesapp.h similarity index 82% rename from deps/ncurses-5.9/c++/cursesapp.h rename to deps/ncurses-6.3/c++/cursesapp.h index 7e995d2..1296f37 100644 --- a/deps/ncurses-5.9/c++/cursesapp.h +++ b/deps/ncurses-6.3/c++/cursesapp.h @@ -1,6 +1,7 @@ // * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2005,2011 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 * @@ -31,14 +32,25 @@ * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ -// $Id: cursesapp.h,v 1.11 2005/05/28 21:57:44 tom Exp $ +// $Id: cursesapp.h,v 1.18 2021/06/17 21:26:02 tom Exp $ #ifndef NCURSES_CURSESAPP_H_incl #define NCURSES_CURSESAPP_H_incl #include -class NCURSES_IMPEXP NCursesApplication { +#if (defined(_WIN32) || defined(_WIN64)) +# define NCURSES_CXX_MAIN_NAME cursespp_main +# define NCURSES_CXX_MAIN \ + int main(int argc, char *argv[]) { \ + return NCURSES_CXX_MAIN_NAME(argc, argv); \ + } +#else +# define NCURSES_CXX_MAIN_NAME main +#endif +NCURSES_CXX_IMPEXP int NCURSES_CXX_MAIN_NAME(int argc, char *argv[]); + +class NCURSES_CXX_IMPEXP NCursesApplication { public: typedef struct _slk_link { // This structure is used to maintain struct _slk_link* prev; // a stack of SLKs @@ -80,6 +92,7 @@ class NCURSES_IMPEXP NCursesApplication { // This method is called to initialize the SLKs. Default is nothing. // You may rewrite this in your derived class virtual void init_labels(Soft_Label_Key_Set& S) const { + (void) S; } // Your derived class must implement this method. The return value must @@ -104,13 +117,13 @@ class NCURSES_IMPEXP NCursesApplication { { } + static NCursesWindow *&getTitleWindow(); + public: - virtual ~NCursesApplication(); + virtual ~NCursesApplication() THROWS(NCursesException); // Get a pointer to the current application object - static NCursesApplication* getApplication() { - return theApp; - } + static NCursesApplication* getApplication(); // This method runs the application and returns its exit value int operator()(void); @@ -118,6 +131,8 @@ class NCURSES_IMPEXP NCursesApplication { // Process the commandline arguments. The default implementation simply // ignores them. Your derived class may rewrite this. virtual void handleArgs(int argc, char* argv[]) { + (void) argc; + (void) argv; } // Does this application use colors? @@ -138,39 +153,39 @@ class NCURSES_IMPEXP NCursesApplication { // Attributes to use for menu and forms foregrounds virtual chtype foregrounds() const { - return b_Colors ? COLOR_PAIR(1) : A_BOLD; + return b_Colors ? static_cast(COLOR_PAIR(1)) : A_BOLD; } // Attributes to use for menu and forms backgrounds virtual chtype backgrounds() const { - return b_Colors ? COLOR_PAIR(2) : A_NORMAL; + return b_Colors ? static_cast(COLOR_PAIR(2)) : A_NORMAL; } // Attributes to use for inactive (menu) elements virtual chtype inactives() const { - return b_Colors ? (COLOR_PAIR(3)|A_DIM) : A_DIM; + return b_Colors ? static_cast(COLOR_PAIR(3)|A_DIM) : A_DIM; } // Attributes to use for (form) labels and SLKs virtual chtype labels() const { - return b_Colors ? COLOR_PAIR(4) : A_NORMAL; + return b_Colors ? static_cast(COLOR_PAIR(4)) : A_NORMAL; } // Attributes to use for form backgrounds virtual chtype dialog_backgrounds() const { - return b_Colors ? COLOR_PAIR(4) : A_NORMAL; + return b_Colors ? static_cast(COLOR_PAIR(4)) : A_NORMAL; } // Attributes to use as default for (form) window backgrounds virtual chtype window_backgrounds() const { - return b_Colors ? COLOR_PAIR(5) : A_NORMAL; + return b_Colors ? static_cast(COLOR_PAIR(5)) : A_NORMAL; } // Attributes to use for the title window virtual chtype screen_titles() const { - return b_Colors ? COLOR_PAIR(6) : A_BOLD; + return b_Colors ? static_cast(COLOR_PAIR(6)) : A_BOLD; } }; - + #endif /* NCURSES_CURSESAPP_H_incl */ diff --git a/deps/ncurses-5.9/c++/cursesf.cc b/deps/ncurses-6.3/c++/cursesf.cc similarity index 93% rename from deps/ncurses-5.9/c++/cursesf.cc rename to deps/ncurses-6.3/c++/cursesf.cc index aaf1202..5d31648 100644 --- a/deps/ncurses-5.9/c++/cursesf.cc +++ b/deps/ncurses-6.3/c++/cursesf.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2005,2011 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 * @@ -35,9 +36,9 @@ #include "cursesf.h" #include "cursesapp.h" -MODULE_ID("$Id: cursesf.cc,v 1.21 2005/08/13 18:09:06 tom Exp $") +MODULE_ID("$Id: cursesf.cc,v 1.26 2021/04/17 18:11:08 tom Exp $") -NCursesFormField::~NCursesFormField () +NCursesFormField::~NCursesFormField () THROWS(NCursesException) { if (field) OnError(::free_field (field)); @@ -149,7 +150,7 @@ NCursesForm::InitForm(NCursesFormField* nfields[], setDefaultAttributes(); } -NCursesForm::~NCursesForm() +NCursesForm::~NCursesForm() THROWS(NCursesException) { UserHook* hook = reinterpret_cast(::form_userptr(form)); delete hook; @@ -234,11 +235,13 @@ NCursesForm::On_Form_Termination() void NCursesForm::On_Field_Init(NCursesFormField& field) { + (void) field; } void NCursesForm::On_Field_Termination(NCursesFormField& field) { + (void) field; } // call the form driver and do basic error checking. @@ -260,16 +263,19 @@ NCursesForm::driver (int c) void NCursesForm::On_Request_Denied(int c) const { + (void) c; ::beep(); } void NCursesForm::On_Invalid_Field(int c) const { + (void) c; ::beep(); } void NCursesForm::On_Unknown_Command(int c) const { + (void) c; ::beep(); } @@ -279,15 +285,15 @@ NCursesFormField* NCursesForm::operator()(void) { int drvCmnd; - int err; int c; post(); show(); refresh(); - while (((drvCmnd = virtualize((c=getKey()))) != CMD_QUIT)) { - switch((err=driver(drvCmnd))) { + while (((drvCmnd = virtualize((c = getKey()))) != CMD_QUIT)) { + int err; + switch((err = driver(drvCmnd))) { case E_REQUEST_DENIED: On_Request_Denied(c); break; @@ -373,6 +379,7 @@ NCursesForm::virtualize(int c) // bool _nc_xx_fld_fcheck(FIELD *f, const void *u) { + (void) f; NCursesFormField* F = reinterpret_cast(const_cast(u)); assert(F != 0); UserDefinedFieldType* udf = reinterpret_cast(F->fieldtype()); @@ -399,12 +406,22 @@ FIELDTYPE* UserDefinedFieldType::generic_fieldtype = ::new_fieldtype(_nc_xx_fld_fcheck, _nc_xx_fld_ccheck); + +UserDefinedFieldType::UserDefinedFieldType() : NCursesFieldType(generic_fieldtype) { +} + FIELDTYPE* UserDefinedFieldType_With_Choice::generic_fieldtype_with_choice = ::new_fieldtype(_nc_xx_fld_fcheck, _nc_xx_fld_ccheck); + +UserDefinedFieldType_With_Choice::UserDefinedFieldType_With_Choice() { + fieldtype = generic_fieldtype_with_choice; +} + bool _nc_xx_next_choice(FIELD *f, const void *u) { + (void) f; NCursesFormField* F = reinterpret_cast(const_cast(u)); assert(F != 0); UserDefinedFieldType_With_Choice* udf = @@ -415,6 +432,7 @@ bool _nc_xx_next_choice(FIELD *f, const void *u) bool _nc_xx_prev_choice(FIELD *f, const void *u) { + (void) f; NCursesFormField* F = reinterpret_cast(const_cast(u)); assert(F != 0); UserDefinedFieldType_With_Choice* udf = @@ -452,3 +470,5 @@ class UDF_Init }; UDF_Init* UDF_Init::I = new UDF_Init(); + + diff --git a/deps/ncurses-5.9/c++/cursesf.h b/deps/ncurses-6.3/c++/cursesf.h similarity index 91% rename from deps/ncurses-5.9/c++/cursesf.h rename to deps/ncurses-6.3/c++/cursesf.h index 212b052..ea1aaf0 100644 --- a/deps/ncurses-5.9/c++/cursesf.h +++ b/deps/ncurses-6.3/c++/cursesf.h @@ -1,6 +1,8 @@ // * This makes emacs happy -*-Mode: C++;-*- +// vile:cppmode /**************************************************************************** - * Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2014 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 * @@ -31,7 +33,7 @@ * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ -// $Id: cursesf.h,v 1.28 2005/08/13 18:08:24 tom Exp $ +// $Id: cursesf.h,v 1.38 2021/04/17 18:11:08 tom Exp $ #ifndef NCURSES_CURSESF_H_incl #define NCURSES_CURSESF_H_incl 1 @@ -47,21 +49,21 @@ extern "C" { } // // ------------------------------------------------------------------------- -// The abstract base class for buitin and user defined Fieldtypes. +// The abstract base class for builtin and user defined Fieldtypes. // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesFormField; // forward declaration +class NCURSES_CXX_IMPEXP NCursesFormField; // forward declaration // Class to represent builtin field types as well as C++ written new // fieldtypes (see classes UserDefineFieldType... -class NCURSES_IMPEXP NCursesFieldType +class NCURSES_CXX_IMPEXP NCursesFieldType { friend class NCursesFormField; protected: FIELDTYPE* fieldtype; - inline void OnError(int err) const THROWS(NCursesFormException) { + inline void OnError(int err) const THROW2(NCursesException const, NCursesFormException) { if (err!=E_OK) THROW(new NCursesFormException (err)); } @@ -100,7 +102,7 @@ class NCURSES_IMPEXP NCursesFieldType // The class representing a forms field, wrapping the lowlevel FIELD struct // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesFormField +class NCURSES_CXX_IMPEXP NCursesFormField { friend class NCursesForm; @@ -109,7 +111,7 @@ class NCURSES_IMPEXP NCursesFormField NCursesFieldType* ftype; // Associated field type // Error handler - inline void OnError (int err) const THROWS(NCursesFormException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) { if (err != E_OK) THROW(new NCursesFormException (err)); } @@ -151,7 +153,7 @@ class NCURSES_IMPEXP NCursesFormField { } - virtual ~NCursesFormField (); + virtual ~NCursesFormField () THROWS(NCursesException); // Duplicate the field at a new position inline NCursesFormField* dup(int first_row, int first_col) @@ -337,7 +339,7 @@ extern "C" { // The class representing a form, wrapping the lowlevel FORM struct // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesForm : public NCursesPanel +class NCURSES_CXX_IMPEXP NCursesForm : public NCursesPanel { protected: FORM* form; // the lowlevel structure @@ -391,7 +393,7 @@ class NCURSES_IMPEXP NCursesForm : public NCursesPanel bool with_frame, bool autoDeleteFields); - inline void OnError (int err) const THROWS(NCursesFormException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesFormException) { if (err != E_OK) THROW(new NCursesFormException (err)); } @@ -470,7 +472,7 @@ class NCURSES_IMPEXP NCursesForm : public NCursesPanel { } - virtual ~NCursesForm(); + virtual ~NCursesForm() THROWS(NCursesException); // Set the default attributes for the form virtual void setDefaultAttributes(); @@ -628,7 +630,7 @@ class NCURSES_IMPEXP NCursesForm : public NCursesPanel // data belongs to some class T. Use T as template argument // to create a UserField. // ------------------------------------------------------------------------- -template class NCURSES_IMPEXP NCursesUserField : public NCursesFormField +template class NCURSES_CXX_IMPEXP NCursesUserField : public NCursesFormField { public: NCursesUserField (int rows, @@ -645,7 +647,7 @@ template class NCURSES_IMPEXP NCursesUserField : public NCursesFormFiel OnError(::set_field_userptr(field, STATIC_CAST(void *)(p_UserData))); } - virtual ~NCursesUserField() {}; + virtual ~NCursesUserField() THROWS(NCursesException) {}; inline const T* UserData (void) const { return reinterpret_cast(::field_userptr (field)); @@ -661,7 +663,7 @@ template class NCURSES_IMPEXP NCursesUserField : public NCursesFormFiel // The same mechanism is used to attach user data to a form // ------------------------------------------------------------------------- // -template class NCURSES_IMPEXP NCursesUserForm : public NCursesForm +template class NCURSES_CXX_IMPEXP NCursesUserForm : public NCursesForm { protected: // 'Internal' constructor, builds an object without association to a @@ -673,20 +675,21 @@ template class NCURSES_IMPEXP NCursesUserForm : public NCursesForm const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesForm(nlines,ncols,begin_y,begin_x) { if (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast + (p_UserData))); } public: - NCursesUserForm (NCursesFormField Fields[], + NCursesUserForm (NCursesFormField* Fields[], const T* p_UserData = STATIC_CAST(T*)(0), bool with_frame=FALSE, bool autoDelete_Fields=FALSE) - : NCursesForm (&Fields, with_frame, autoDelete_Fields) { + : NCursesForm (Fields, with_frame, autoDelete_Fields) { if (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); }; - NCursesUserForm (NCursesFormField Fields[], + NCursesUserForm (NCursesFormField* Fields[], int nlines, int ncols, int begin_y = 0, @@ -694,13 +697,14 @@ template class NCURSES_IMPEXP NCursesUserForm : public NCursesForm const T* p_UserData = STATIC_CAST(T*)(0), bool with_frame=FALSE, bool autoDelete_Fields=FALSE) - : NCursesForm (&Fields, nlines, ncols, begin_y, begin_x, + : NCursesForm (Fields, nlines, ncols, begin_y, begin_x, with_frame, autoDelete_Fields) { if (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast + (p_UserData))); }; - virtual ~NCursesUserForm() { + virtual ~NCursesUserForm() THROWS(NCursesException) { }; inline T* UserData (void) { @@ -709,7 +713,7 @@ template class NCURSES_IMPEXP NCursesUserForm : public NCursesForm inline virtual void setUserData (const T* p_UserData) { if (form) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); } }; @@ -718,7 +722,7 @@ template class NCURSES_IMPEXP NCursesUserForm : public NCursesForm // Builtin Fieldtypes // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP Alpha_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Alpha_Field : public NCursesFieldType { private: int min_field_width; @@ -728,13 +732,13 @@ class NCURSES_IMPEXP Alpha_Field : public NCursesFieldType } public: - Alpha_Field(int width) + explicit Alpha_Field(int width) : NCursesFieldType(TYPE_ALPHA), min_field_width(width) { } }; -class NCURSES_IMPEXP Alphanumeric_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Alphanumeric_Field : public NCursesFieldType { private: int min_field_width; @@ -744,13 +748,13 @@ class NCURSES_IMPEXP Alphanumeric_Field : public NCursesFieldType } public: - Alphanumeric_Field(int width) + explicit Alphanumeric_Field(int width) : NCursesFieldType(TYPE_ALNUM), min_field_width(width) { } }; -class NCURSES_IMPEXP Integer_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Integer_Field : public NCursesFieldType { private: int precision; @@ -768,7 +772,7 @@ class NCURSES_IMPEXP Integer_Field : public NCursesFieldType } }; -class NCURSES_IMPEXP Numeric_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Numeric_Field : public NCursesFieldType { private: int precision; @@ -786,7 +790,7 @@ class NCURSES_IMPEXP Numeric_Field : public NCursesFieldType } }; -class NCURSES_IMPEXP Regular_Expression_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Regular_Expression_Field : public NCursesFieldType { private: char* regex; @@ -802,7 +806,7 @@ class NCURSES_IMPEXP Regular_Expression_Field : public NCursesFieldType } public: - Regular_Expression_Field(const char *expr) + explicit Regular_Expression_Field(const char *expr) : NCursesFieldType(TYPE_REGEXP), regex(NULL) { @@ -831,7 +835,7 @@ class NCURSES_IMPEXP Regular_Expression_Field : public NCursesFieldType } }; -class NCURSES_IMPEXP Enumeration_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP Enumeration_Field : public NCursesFieldType { private: const char** list; @@ -870,7 +874,7 @@ class NCURSES_IMPEXP Enumeration_Field : public NCursesFieldType } }; -class NCURSES_IMPEXP IPV4_Address_Field : public NCursesFieldType +class NCURSES_CXX_IMPEXP IPV4_Address_Field : public NCursesFieldType { private: void set(NCursesFormField& f) { @@ -893,7 +897,7 @@ extern "C" { // Abstract base class for User-Defined Fieldtypes // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP UserDefinedFieldType : public NCursesFieldType +class NCURSES_CXX_IMPEXP UserDefinedFieldType : public NCursesFieldType { friend class UDF_Init; // Internal helper to set up statics private: @@ -922,8 +926,7 @@ class NCURSES_IMPEXP UserDefinedFieldType : public NCursesFieldType virtual bool char_check (int c) = 0; public: - UserDefinedFieldType() : NCursesFieldType(generic_fieldtype) { - } + UserDefinedFieldType(); }; extern "C" { @@ -936,7 +939,7 @@ extern "C" { // Abstract base class for User-Defined Fieldtypes with Choice functions // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldType +class NCURSES_CXX_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldType { friend class UDF_Init; // Internal helper to set up statics private: @@ -959,9 +962,7 @@ class NCURSES_IMPEXP UserDefinedFieldType_With_Choice : public UserDefinedFieldT virtual bool previous(NCursesFormField& f) = 0; public: - UserDefinedFieldType_With_Choice() { - fieldtype = generic_fieldtype_with_choice; - } + UserDefinedFieldType_With_Choice(); }; #endif /* NCURSES_CURSESF_H_incl */ diff --git a/deps/ncurses-5.9/c++/cursesm.cc b/deps/ncurses-6.3/c++/cursesm.cc similarity index 94% rename from deps/ncurses-5.9/c++/cursesm.cc rename to deps/ncurses-6.3/c++/cursesm.cc index c253a67..64f3635 100644 --- a/deps/ncurses-5.9/c++/cursesm.cc +++ b/deps/ncurses-6.3/c++/cursesm.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2011,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 * @@ -35,9 +36,9 @@ #include "cursesm.h" #include "cursesapp.h" -MODULE_ID("$Id: cursesm.cc,v 1.22 2005/04/02 20:39:05 tom Exp $") +MODULE_ID("$Id: cursesm.cc,v 1.27 2021/04/17 18:11:08 tom Exp $") -NCursesMenuItem::~NCursesMenuItem() +NCursesMenuItem::~NCursesMenuItem() THROWS(NCursesException) { if (item) OnError(::free_item(item)); @@ -49,7 +50,7 @@ NCursesMenuItem::action() return FALSE; } -NCursesMenuCallbackItem::~NCursesMenuCallbackItem() +NCursesMenuCallbackItem::~NCursesMenuCallbackItem() THROWS(NCursesException) { } @@ -175,13 +176,13 @@ NCursesMenu::setDefaultAttributes() } } -NCursesMenu::~NCursesMenu() +NCursesMenu::~NCursesMenu() THROWS(NCursesException) { UserHook* hook = reinterpret_cast(::menu_userptr(menu)); delete hook; if (b_sub_owner) { - delete sub; ::set_menu_sub(menu, static_cast(0)); + delete sub; } if (menu) { ITEM** itms = ::menu_items(menu); @@ -300,7 +301,6 @@ NCursesMenuItem* NCursesMenu::operator()(void) { int drvCmnd; - int err; int c; bool b_action = FALSE; @@ -308,9 +308,10 @@ NCursesMenu::operator()(void) show(); refresh(); - while (!b_action && ((drvCmnd = virtualize((c=getKey()))) != CMD_QUIT)) { + while (!b_action && ((drvCmnd = virtualize((c = getKey()))) != CMD_QUIT)) { + int err; - switch((err=driver(drvCmnd))) { + switch((err = driver(drvCmnd))) { case E_REQUEST_DENIED: On_Request_Denied(c); break; @@ -375,33 +376,39 @@ NCursesMenu::On_Menu_Termination() void NCursesMenu::On_Item_Init(NCursesMenuItem& item) { + (void) item; } void NCursesMenu::On_Item_Termination(NCursesMenuItem& item) { + (void) item; } void NCursesMenu::On_Request_Denied(int c) const { + (void) c; ::beep(); } void NCursesMenu::On_Not_Selectable(int c) const { + (void) c; ::beep(); } void NCursesMenu::On_No_Match(int c) const { + (void) c; ::beep(); } void NCursesMenu::On_Unknown_Command(int c) const { + (void) c; ::beep(); } diff --git a/deps/ncurses-5.9/c++/cursesm.h b/deps/ncurses-6.3/c++/cursesm.h similarity index 91% rename from deps/ncurses-5.9/c++/cursesm.h rename to deps/ncurses-6.3/c++/cursesm.h index 81327c2..383c7e1 100644 --- a/deps/ncurses-5.9/c++/cursesm.h +++ b/deps/ncurses-6.3/c++/cursesm.h @@ -1,6 +1,7 @@ // * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,2014 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 * @@ -31,7 +32,7 @@ * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ -// $Id: cursesm.h,v 1.25 2005/08/13 18:10:36 tom Exp $ +// $Id: cursesm.h,v 1.34 2020/05/24 01:40:20 anonymous.maarten Exp $ #ifndef NCURSES_CURSESM_H_incl #define NCURSES_CURSESM_H_incl 1 @@ -46,14 +47,14 @@ extern "C" { // This wraps the ITEM type of // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesMenuItem +class NCURSES_CXX_IMPEXP NCursesMenuItem { friend class NCursesMenu; protected: ITEM *item; - inline void OnError (int err) const THROWS(NCursesMenuException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) { if (err != E_OK) THROW(new NCursesMenuException (err)); } @@ -82,9 +83,10 @@ class NCURSES_IMPEXP NCursesMenuItem NCursesMenuItem(const NCursesMenuItem& rhs) : item(0) { + (void) rhs; } - virtual ~NCursesMenuItem (); + virtual ~NCursesMenuItem () THROWS(NCursesException); // Release the items memory inline const char* name () const { @@ -151,7 +153,7 @@ typedef bool ITEMCALLBACK(NCursesMenuItem&); // If you don't like to create a child class for individual items to // overload action(), you may use this class and provide a callback // function pointer for items. -class NCURSES_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem +class NCURSES_CXX_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem { private: ITEMCALLBACK* p_fct; @@ -178,7 +180,7 @@ class NCURSES_IMPEXP NCursesMenuCallbackItem : public NCursesMenuItem { } - virtual ~NCursesMenuCallbackItem(); + virtual ~NCursesMenuCallbackItem() THROWS(NCursesException); bool action(); }; @@ -198,7 +200,7 @@ extern "C" { // This wraps the MENU type of // ------------------------------------------------------------------------- // -class NCURSES_IMPEXP NCursesMenu : public NCursesPanel +class NCURSES_CXX_IMPEXP NCursesMenu : public NCursesPanel { protected: MENU *menu; @@ -252,7 +254,7 @@ class NCURSES_IMPEXP NCursesMenu : public NCursesPanel bool with_frame, bool autoDeleteItems); - inline void OnError (int err) const THROWS(NCursesMenuException) { + inline void OnError (int err) const THROW2(NCursesException const, NCursesMenuException) { if (err != E_OK) THROW(new NCursesMenuException (this, err)); } @@ -331,7 +333,7 @@ class NCURSES_IMPEXP NCursesMenu : public NCursesPanel { } - virtual ~NCursesMenu (); + virtual ~NCursesMenu () THROWS(NCursesException); // Retrieve the menus subwindow inline NCursesWindow& subWindow() const { @@ -357,7 +359,7 @@ class NCURSES_IMPEXP NCursesMenu : public NCursesPanel flag ? OnError (::post_menu(menu)) : OnError (::unpost_menu (menu)); } - // Get the numer of rows and columns for this menu + // Get the number of rows and columns for this menu inline void scale (int& mrows, int& mcols) const { OnError (::scale_menu (menu, &mrows, &mcols)); } @@ -594,7 +596,7 @@ class NCURSES_IMPEXP NCursesMenu : public NCursesPanel // to create a UserItem. // ------------------------------------------------------------------------- // -template class NCURSES_IMPEXP NCursesUserItem : public NCursesMenuItem +template class NCURSES_CXX_IMPEXP NCursesUserItem : public NCursesMenuItem { public: NCursesUserItem (const char* p_name, @@ -605,9 +607,9 @@ template class NCURSES_IMPEXP NCursesUserItem : public NCursesMenuItem OnError (::set_item_userptr (item, const_cast(reinterpret_cast(p_UserData)))); } - virtual ~NCursesUserItem() {} + virtual ~NCursesUserItem() THROWS(NCursesException) {} - inline const T* UserData (void) { + inline const T* UserData (void) const { return reinterpret_cast(::item_userptr (item)); }; @@ -621,7 +623,7 @@ template class NCURSES_IMPEXP NCursesUserItem : public NCursesMenuItem // The same mechanism is used to attach user data to a menu // ------------------------------------------------------------------------- // -template class NCURSES_IMPEXP NCursesUserMenu : public NCursesMenu +template class NCURSES_CXX_IMPEXP NCursesUserMenu : public NCursesMenu { protected: NCursesUserMenu( int nlines, @@ -631,32 +633,32 @@ template class NCURSES_IMPEXP NCursesUserMenu : public NCursesMenu const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesMenu(nlines,ncols,begin_y,begin_x) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); } public: - NCursesUserMenu (NCursesMenuItem Items[], + NCursesUserMenu (NCursesMenuItem* Items[], const T* p_UserData = STATIC_CAST(T*)(0), bool with_frame=FALSE, bool autoDelete_Items=FALSE) - : NCursesMenu (&Items, with_frame, autoDelete_Items) { + : NCursesMenu (Items, with_frame, autoDelete_Items) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); }; - NCursesUserMenu (NCursesMenuItem Items[], + NCursesUserMenu (NCursesMenuItem* Items[], int nlines, int ncols, int begin_y = 0, int begin_x = 0, const T* p_UserData = STATIC_CAST(T*)(0), bool with_frame=FALSE) - : NCursesMenu (&Items, nlines, ncols, begin_y, begin_x, with_frame) { + : NCursesMenu (Items, nlines, ncols, begin_y, begin_x, with_frame) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); }; - virtual ~NCursesUserMenu() { + virtual ~NCursesUserMenu() THROWS(NCursesException) { }; inline T* UserData (void) { @@ -665,7 +667,7 @@ template class NCURSES_IMPEXP NCursesUserMenu : public NCursesMenu inline virtual void setUserData (const T* p_UserData) { if (menu) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); } }; diff --git a/deps/ncurses-5.9/c++/cursesmain.cc b/deps/ncurses-6.3/c++/cursesmain.cc similarity index 89% rename from deps/ncurses-5.9/c++/cursesmain.cc rename to deps/ncurses-6.3/c++/cursesmain.cc index 1f82d4a..cc41b50 100644 --- a/deps/ncurses-5.9/c++/cursesmain.cc +++ b/deps/ncurses-6.3/c++/cursesmain.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2007 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2007,2013 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 * @@ -35,13 +36,15 @@ #include "cursesapp.h" #if CPP_HAS_TRY_CATCH && HAVE_IOSTREAM +#pragma GCC diagnostic ignored "-Weffc++" #include +#pragma GCC diagnostic warning "-Weffc++" #else #undef CPP_HAS_TRY_CATCH #define CPP_HAS_TRY_CATCH 0 #endif -MODULE_ID("$Id: cursesmain.cc,v 1.14 2007/04/07 17:10:11 tom Exp $") +MODULE_ID("$Id: cursesmain.cc,v 1.20 2020/07/18 19:57:11 anonymous.maarten Exp $") #if HAVE_LOCALE_H #include @@ -57,7 +60,7 @@ MODULE_ID("$Id: cursesmain.cc,v 1.14 2007/04/07 17:10:11 tom Exp $") * You only have to instantiate a static NCursesApplication object in your * main application source file and link this module with your application. */ -int main(int argc, char* argv[]) +int NCURSES_CXX_MAIN_NAME(int argc, char* argv[]) { setlocale(LC_ALL, ""); @@ -85,7 +88,7 @@ int main(int argc, char* argv[]) #endif #if NO_LEAKS delete A; - _nc_free_and_exit(res); + exit_curses(res); #else return(res); #endif diff --git a/deps/ncurses-5.9/c++/cursesp.cc b/deps/ncurses-6.3/c++/cursesp.cc similarity index 93% rename from deps/ncurses-5.9/c++/cursesp.cc rename to deps/ncurses-6.3/c++/cursesp.cc index 9c4eab6..58b2a8f 100644 --- a/deps/ncurses-5.9/c++/cursesp.cc +++ b/deps/ncurses-6.3/c++/cursesp.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2003,2005 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 * @@ -34,7 +35,7 @@ #include "internal.h" #include "cursesp.h" -MODULE_ID("$Id: cursesp.cc,v 1.25 2005/08/06 22:12:36 tom Exp $") +MODULE_ID("$Id: cursesp.cc,v 1.27 2020/02/02 23:34:34 tom Exp $") NCursesPanel* NCursesPanel::dummy = static_cast(0); @@ -51,7 +52,7 @@ void NCursesPanel::init() ::set_panel_userptr(p, reinterpret_cast(hook)); } -NCursesPanel::~NCursesPanel() +NCursesPanel::~NCursesPanel() THROWS(NCursesException) { UserHook* hook = UserPointer(); assert(hook != 0 && hook->m_back==this && hook->m_owner==p); diff --git a/deps/ncurses-5.9/c++/cursesp.h b/deps/ncurses-6.3/c++/cursesp.h similarity index 91% rename from deps/ncurses-5.9/c++/cursesp.h rename to deps/ncurses-6.3/c++/cursesp.h index 7a85513..1eb90e9 100644 --- a/deps/ncurses-5.9/c++/cursesp.h +++ b/deps/ncurses-6.3/c++/cursesp.h @@ -1,6 +1,8 @@ // * This makes emacs happy -*-Mode: C++;-*- +// vile:cppmode /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2014 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 * @@ -34,7 +36,7 @@ #ifndef NCURSES_CURSESP_H_incl #define NCURSES_CURSESP_H_incl 1 -// $Id: cursesp.h,v 1.29 2008/08/16 17:20:23 tom Exp $ +// $Id: cursesp.h,v 1.35 2021/04/17 18:11:08 tom Exp $ #include @@ -42,7 +44,7 @@ extern "C" { # include } -class NCURSES_IMPEXP NCursesPanel +class NCURSES_CXX_IMPEXP NCursesPanel : public NCursesWindow { protected: @@ -86,7 +88,7 @@ class NCURSES_IMPEXP NCursesPanel return result; } - void OnError (int err) const THROWS(NCursesPanelException) + void OnError (int err) const THROW2(NCursesException const, NCursesPanelException) { if (err==ERR) THROW(new NCursesPanelException (this, err)); @@ -131,7 +133,7 @@ class NCURSES_IMPEXP NCursesPanel { } - virtual ~NCursesPanel(); + virtual ~NCursesPanel() THROWS(NCursesException); // basic manipulation inline void hide() @@ -236,20 +238,21 @@ template class NCursesUserPanel : public NCursesPanel : NCursesPanel (nlines, ncols, begin_y, begin_x) { if (p) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast + (p_UserData))); }; // This creates an user panel of the requested size with associated // user data pointed to by p_UserData. - NCursesUserPanel(const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesPanel() + explicit NCursesUserPanel(const T* p_UserData = STATIC_CAST(T*)(0)) : NCursesPanel() { if (p) - set_user(const_cast(p_UserData)); + set_user(const_cast(reinterpret_cast(p_UserData))); }; // This creates an user panel associated with the ::stdscr and user data // pointed to by p_UserData. - virtual ~NCursesUserPanel() {}; + virtual ~NCursesUserPanel() THROWS(NCursesException) {}; T* UserData (void) { @@ -260,7 +263,7 @@ template class NCursesUserPanel : public NCursesPanel virtual void setUserData (const T* p_UserData) { if (p) - set_user (const_cast(p_UserData)); + set_user (const_cast(reinterpret_cast(p_UserData))); } // Associate the user panel with the user data pointed to by p_UserData. }; diff --git a/deps/ncurses-5.9/c++/cursespad.cc b/deps/ncurses-6.3/c++/cursespad.cc similarity index 87% rename from deps/ncurses-5.9/c++/cursespad.cc rename to deps/ncurses-6.3/c++/cursespad.cc index 28c58fa..6065923 100644 --- a/deps/ncurses-5.9/c++/cursespad.cc +++ b/deps/ncurses-6.3/c++/cursespad.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1999-2012,2013 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 * @@ -33,10 +34,9 @@ #include "internal.h" -#include #include -MODULE_ID("$Id: cursespad.cc,v 1.13 2008/08/04 18:59:22 tom Exp $") +MODULE_ID("$Id: cursespad.cc,v 1.18 2020/02/02 23:34:34 tom Exp $") NCursesPad::NCursesPad(int nlines, int ncols) : NCursesWindow(), @@ -220,6 +220,7 @@ void NCursesPad::setSubWindow(NCursesWindow& sub) void NCursesFramedPad::OnOperation(int pad_req) { + (void) pad_req; NCursesWindow* W = Win(); NCursesWindow* W2 = getWindow(); @@ -228,25 +229,45 @@ void NCursesFramedPad::OnOperation(int pad_req) int Height = W->height(); int i, row, col, h_len, v_len; - h_len = (Width*Width + width() - 1)/width(); - if (h_len==0) + int my_width = width(); + + if (my_width != 0) { + h_len = (Width*Width + my_width - 1) / my_width; + if (h_len==0) + h_len = 1; + if (h_len > Width) + h_len = Width; + } else { h_len = 1; - if (h_len > Width) - h_len = Width; + } + + int my_height = height(); - v_len = (Height*Height + height() - 1)/height(); - if (v_len==0) + if (my_height != 0) { + v_len = (Height*Height + my_height - 1) / my_height; + if (v_len==0) + v_len = 1; + if (v_len > Height) + v_len = Height; + } else { v_len = 1; - if (v_len > Height) - v_len = Height; + } - col = (min_col * Width + width() - 1) / width(); - if (col + h_len > Width) - col = Width - h_len; + if (my_width != 0) { + col = (min_col * Width + my_width - 1) / my_width; + if (col + h_len > Width) + col = Width - h_len; + } else { + col = 0; + } - row = (min_row * Height + height() - 1) / height(); - if (row + v_len > Height) - row = Height - v_len; + if (my_height != 0) { + row = (min_row * Height + my_height - 1) / my_height; + if (row + v_len > Height) + row = Height - v_len; + } else { + row = 0; + } W2->vline(1,Width+1,Height); W2->attron(A_REVERSE); diff --git a/deps/ncurses-5.9/c++/cursesw.cc b/deps/ncurses-6.3/c++/cursesw.cc similarity index 94% rename from deps/ncurses-5.9/c++/cursesw.cc rename to deps/ncurses-6.3/c++/cursesw.cc index 47e5cf6..8ea265c 100644 --- a/deps/ncurses-5.9/c++/cursesw.cc +++ b/deps/ncurses-6.3/c++/cursesw.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,2014 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 * @@ -42,7 +43,7 @@ #include "internal.h" #include "cursesw.h" -MODULE_ID("$Id: cursesw.cc,v 1.51 2009/03/28 21:31:37 tom Exp $") +MODULE_ID("$Id: cursesw.cc,v 1.56 2020/02/02 23:34:34 tom Exp $") #define COLORS_NEED_INITIALIZATION -1 #define COLORS_NOT_INITIALIZED 0 @@ -192,7 +193,6 @@ NCursesWindow::NCursesWindow() constructing(); w = static_cast(0); - set_keyboard(); } NCursesWindow::NCursesWindow(int nlines, int ncols, int begin_y, int begin_x) @@ -285,12 +285,14 @@ static RIPOFFINIT* prip = R_INIT; NCursesWindow::NCursesWindow(WINDOW *win, int ncols) : w(0), alloced(FALSE), par(0), subwins(0), sib(0) { + (void) ncols; initialize(); w = win; } int _nc_xx_ripoff_init(WINDOW *w, int ncols) { + (void) ncols; int res = ERR; RIPOFFINIT init = *prip++; @@ -343,7 +345,7 @@ NCursesWindow::kill_subwindows() } -NCursesWindow::~NCursesWindow() +NCursesWindow::~NCursesWindow() THROWS(NCursesException) { kill_subwindows(); @@ -400,16 +402,16 @@ NCursesWindow::useColors(void) } } -short +NCURSES_PAIRS_T NCursesWindow::getPair() const { - return static_cast(PAIR_NUMBER(getattrs(w))); + return static_cast(PAIR_NUMBER(getattrs(w))); } -short +NCURSES_COLOR_T NCursesWindow::getcolor(int getback) const { - short fore, back; + NCURSES_COLOR_T fore, back; if (HaveColors()) { if (::pair_content(getPair(), &fore, &back) == ERR) @@ -427,27 +429,27 @@ int NCursesWindow::NumberOfColors() return (HaveColors()) ? COLORS : 1; } -short +NCURSES_PAIRS_T NCursesWindow::getcolor() const { return (HaveColors()) ? getPair() : 0; } int -NCursesWindow::setpalette(short fore, short back, short pair) +NCursesWindow::setpalette(NCURSES_COLOR_T fore, NCURSES_COLOR_T back, NCURSES_PAIRS_T pair) { return (HaveColors()) ? ::init_pair(pair, fore, back) : OK; } int -NCursesWindow::setpalette(short fore, short back) +NCursesWindow::setpalette(NCURSES_COLOR_T fore, NCURSES_COLOR_T back) { return setpalette(fore, back, getPair()); } int -NCursesWindow::setcolor(short pair) +NCursesWindow::setcolor(NCURSES_PAIRS_T pair) { if (HaveColors()) { if ((pair < 1) || (pair > COLOR_PAIRS)) diff --git a/deps/ncurses-5.9/c++/cursesw.h b/deps/ncurses-6.3/c++/cursesw.h similarity index 94% rename from deps/ncurses-5.9/c++/cursesw.h rename to deps/ncurses-6.3/c++/cursesw.h index b8e921a..001f6db 100644 --- a/deps/ncurses-5.9/c++/cursesw.h +++ b/deps/ncurses-6.3/c++/cursesw.h @@ -1,7 +1,8 @@ // * This makes emacs happy -*-Mode: C++;-*- // vile:cppmode /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-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 * @@ -31,14 +32,25 @@ #ifndef NCURSES_CURSESW_H_incl #define NCURSES_CURSESW_H_incl 1 -// $Id: cursesw.h,v 1.48 2008/01/19 21:09:10 tom Exp $ - -#include +// $Id: cursesw.h,v 1.58 2021/04/17 18:11:08 tom Exp $ extern "C" { # include } +#if defined(BUILDING_NCURSES_CXX) +# define NCURSES_CXX_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT +#else +# define NCURSES_CXX_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT +#endif + +#define NCURSES_CXX_WRAPPED_VAR(type,name) extern NCURSES_CXX_IMPEXP type NCURSES_PUBLIC_VAR(name)(void) + +#define NCURSES_CXX_EXPORT(type) NCURSES_CXX_IMPEXP type NCURSES_API +#define NCURSES_CXX_EXPORT_VAR(type) NCURSES_CXX_IMPEXP type + +#include + /* SCO 3.2v4 curses.h includes term.h, which defines lines as a macro. Undefine it here, because NCursesWindow uses lines as a method. */ #undef lines @@ -118,7 +130,7 @@ inline int UNDEF(box)(WINDOW *win, int v, int h) { return box(win, v, h); } #endif #ifdef chgat -inline int UNDEF(chgat)(int n, attr_t attr, short color, const void *opts) { +inline int UNDEF(chgat)(int n, attr_t attr, NCURSES_PAIRS_T color, const void *opts) { return chgat(n, attr, color, opts); } #undef chgat #define chgat UNDEF(chgat) @@ -151,7 +163,7 @@ inline int UNDEF(clrtoeol)() { return clrtoeol(); } #endif #ifdef color_set -inline chtype UNDEF(color_set)(short p, void* opts) { return color_set(p, opts); } +inline chtype UNDEF(color_set)(NCURSES_PAIRS_T p, void* opts) { return color_set(p, opts); } #undef color_set #define color_set UNDEF(color_set) #endif @@ -324,6 +336,12 @@ inline void UNDEF(intrflush)(WINDOW *win, bool bf) { intrflush(); } #define intrflush UNDEF(intrflush) #endif +#ifdef is_linetouched +inline int UNDEF(is_linetouched)(WINDOW *w, int l) { return is_linetouched(w,l); } +#undef is_linetouched +#define is_linetouched UNDEF(is_linetouched) +#endif + #ifdef leaveok inline int UNDEF(leaveok)(WINDOW* win, bool bf) { return leaveok(win, bf); } #undef leaveok @@ -361,7 +379,7 @@ inline int UNDEF(mvaddstr)(int y, int x, const char * str) #ifdef mvchgat inline int UNDEF(mvchgat)(int y, int x, int n, - attr_t attr, short color, const void *opts) { + attr_t attr, NCURSES_PAIRS_T color, const void *opts) { return mvchgat(y, x, n, attr, color, opts); } #undef mvchgat #define mvchgat UNDEF(mvchgat) @@ -463,7 +481,7 @@ inline int UNDEF(mvwaddstr)(WINDOW *win, int y, int x, const char * str) #ifdef mvwchgat inline int UNDEF(mvwchgat)(WINDOW *win, int y, int x, int n, - attr_t attr, short color, const void *opts) { + attr_t attr, NCURSES_PAIRS_T color, const void *opts) { return mvwchgat(win, y, x, n, attr, color, opts); } #undef mvwchgat #define mvwchgat UNDEF(mvwchgat) @@ -750,7 +768,7 @@ extern "C" int _nc_ripoffline(int, int (*init)(WINDOW*, int)); extern "C" int _nc_xx_ripoff_init(WINDOW *, int); extern "C" int _nc_has_mouse(void); -class NCURSES_IMPEXP NCursesWindow +class NCURSES_CXX_IMPEXP NCursesWindow { friend class NCursesMenu; friend class NCursesForm; @@ -763,10 +781,10 @@ class NCURSES_IMPEXP NCursesWindow void set_keyboard(); - short getcolor(int getback) const; - short getPair() const; + NCURSES_COLOR_T getcolor(int getback) const; + NCURSES_PAIRS_T getPair() const; - static int setpalette(short fore, short back, short pair); + static int setpalette(NCURSES_COLOR_T fore, NCURSES_COLOR_T back, NCURSES_PAIRS_T pair); static int colorInitialized; // This private constructor is only used during the initialization @@ -798,7 +816,7 @@ class NCURSES_IMPEXP NCursesWindow NCursesWindow(); public: - NCursesWindow(WINDOW* window); // useful only for stdscr + explicit NCursesWindow(WINDOW* window); // useful only for stdscr NCursesWindow(int nlines, // number of lines int ncols, // number of columns @@ -831,7 +849,7 @@ class NCURSES_IMPEXP NCursesWindow { } - virtual ~NCursesWindow(); + virtual ~NCursesWindow() THROWS(NCursesException); NCursesWindow Clone(); // Make an exact copy of the window. @@ -896,19 +914,19 @@ class NCURSES_IMPEXP NCursesWindow int maxy() const { return getmaxy(w) == ERR ? ERR : getmaxy(w)-1; } // Largest y coord in window - short getcolor() const; + NCURSES_PAIRS_T getcolor() const; // Actual color pair - short foreground() const { return getcolor(0); } + NCURSES_COLOR_T foreground() const { return getcolor(0); } // Actual foreground color - short background() const { return getcolor(1); } + NCURSES_COLOR_T background() const { return getcolor(1); } // Actual background color - int setpalette(short fore, short back); + int setpalette(NCURSES_COLOR_T fore, NCURSES_COLOR_T back); // Set color palette entry - int setcolor(short pair); + int setcolor(NCURSES_PAIRS_T pair); // Set actually used palette entry // ------------------------------------------------------------------------- @@ -1107,18 +1125,18 @@ class NCURSES_IMPEXP NCursesWindow chtype attrget() { return ::getattrs(w); } // Get the window attributes; - int color_set(short color_pair_number, void* opts=NULL) { + int color_set(NCURSES_PAIRS_T color_pair_number, void* opts=NULL) { return ::wcolor_set(w, color_pair_number, opts); } // Set the window color attribute; - int chgat(int n, attr_t attr, short color, const void *opts=NULL) { + int chgat(int n, attr_t attr, NCURSES_PAIRS_T color, const void *opts=NULL) { return ::wchgat(w, n, attr, color, opts); } // Change the attributes of the next n characters in the current line. If // n is negative or greater than the number of remaining characters in the // line, the attributes will be changed up to the end of the line. int chgat(int y, int x, - int n, attr_t attr, short color, const void *opts=NULL) { + int n, attr_t attr, NCURSES_PAIRS_T color, const void *opts=NULL) { return ::mvwchgat(w, y, x, n, attr, color, opts); } // Move the cursor to the requested position and then perform chgat() as // described above. @@ -1241,7 +1259,7 @@ class NCURSES_IMPEXP NCursesWindow // on the value of the changed flag. bool is_linetouched(int line) const { - return (::is_linetouched(w, line) ? TRUE:FALSE); } + return (::is_linetouched(w, line) == TRUE ? TRUE:FALSE); } // Return TRUE if line is marked as changed, FALSE otherwise bool is_wintouched() const { @@ -1249,7 +1267,7 @@ class NCURSES_IMPEXP NCursesWindow // Return TRUE if window is marked as changed, FALSE otherwise int leaveok(bool bf) { return ::leaveok(w, bf); } - // If bf is TRUE, curses will leave the cursor after an update whereever + // If bf is TRUE, curses will leave the cursor after an update wherever // it is after the update. int redrawln(int from, int n) { return ::wredrawln(w, from, n); } @@ -1364,10 +1382,10 @@ class NCURSES_IMPEXP NCursesWindow // ------------------------------------------------------------------------- // We leave this here for compatibility reasons. // ------------------------------------------------------------------------- -class NCURSES_IMPEXP NCursesColorWindow : public NCursesWindow +class NCURSES_CXX_IMPEXP NCursesColorWindow : public NCursesWindow { public: - NCursesColorWindow(WINDOW* &window) // useful only for stdscr + explicit NCursesColorWindow(WINDOW* &window) // useful only for stdscr : NCursesWindow(window) { useColors(); } @@ -1410,7 +1428,7 @@ class NCURSES_IMPEXP NCursesColorWindow : public NCursesWindow // Pad Support. We allow an association of a pad with a "real" window // through which the pad may be viewed. // ------------------------------------------------------------------------- -class NCURSES_IMPEXP NCursesPad : public NCursesWindow +class NCURSES_CXX_IMPEXP NCursesPad : public NCursesWindow { private: NCursesWindow* viewWin; // the "viewport" window @@ -1438,16 +1456,19 @@ class NCURSES_IMPEXP NCursesPad : public NCursesWindow // The driver translates the keystroke c into an Pad_Request virtual void OnUnknownOperation(int pad_req) { + (void) pad_req; ::beep(); } // This is called if the driver returns an unknown op-code virtual void OnNavigationError(int pad_req) { + (void) pad_req; ::beep(); } // This is called if a navigation request couldn't be satisfied virtual void OnOperation(int pad_req) { + (void) pad_req; }; // OnOperation is called if a Pad_Operation was executed and just before // the refresh() operation is done. @@ -1476,7 +1497,7 @@ class NCURSES_IMPEXP NCursesPad : public NCursesWindow { } - virtual ~NCursesPad() {} + virtual ~NCursesPad() THROWS(NCursesException) {} int echochar(const chtype ch) { return ::pechochar(w, ch); } // Put the attributed character onto the pad and immediately do a @@ -1523,7 +1544,7 @@ class NCURSES_IMPEXP NCursesPad : public NCursesWindow // A FramedPad is constructed always with a viewport window. This viewport // will be framed (by a box() command) and the interior of the box is the // viewport subwindow. On the frame we display scrollbar sliders. -class NCURSES_IMPEXP NCursesFramedPad : public NCursesPad +class NCURSES_CXX_IMPEXP NCursesFramedPad : public NCursesPad { protected: virtual void OnOperation(int pad_req); @@ -1537,16 +1558,20 @@ class NCURSES_IMPEXP NCursesFramedPad : public NCursesPad } // Construct the FramedPad with the given Window win as viewport. - virtual ~NCursesFramedPad() { + virtual ~NCursesFramedPad() THROWS(NCursesException) { delete getSubWindow(); } void setWindow(NCursesWindow& view, int v_grid = 1, int h_grid = 1) { + (void) view; + (void) v_grid; + (void) h_grid; err_handler("Operation not allowed"); } // Disable this call; the viewport is already defined void setSubWindow(NCursesWindow& sub) { + (void) sub; err_handler("Operation not allowed"); } // Disable this call; the viewport subwindow is already defined diff --git a/deps/ncurses-5.9/c++/cursslk.cc b/deps/ncurses-6.3/c++/cursslk.cc similarity index 90% rename from deps/ncurses-5.9/c++/cursslk.cc rename to deps/ncurses-6.3/c++/cursslk.cc index cfbc9da..9922163 100644 --- a/deps/ncurses-5.9/c++/cursslk.cc +++ b/deps/ncurses-6.3/c++/cursslk.cc @@ -1,6 +1,7 @@ // * this is for making emacs happy: -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2005,2012 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 * @@ -35,14 +36,15 @@ #include "cursslk.h" #include "cursesapp.h" -MODULE_ID("$Id: cursslk.cc,v 1.15 2005/08/06 22:12:36 tom Exp $") +MODULE_ID("$Id: cursslk.cc,v 1.19 2020/07/18 19:57:11 anonymous.maarten Exp $") Soft_Label_Key_Set::Soft_Label_Key& Soft_Label_Key_Set::Soft_Label_Key::operator=(char *text) { delete[] label; - label = new char[1 + ::strlen(text)]; - (::strcpy)(label,text); + size_t need = 1 + ::strlen(text); + label = new char[need]; + ::_nc_STRCPY(label,text,need); return *this; } @@ -87,7 +89,7 @@ Soft_Label_Key_Set::Soft_Label_Key_Set(Soft_Label_Key_Set::Label_Layout fmt) init(); } -Soft_Label_Key_Set::~Soft_Label_Key_Set() { +Soft_Label_Key_Set::~Soft_Label_Key_Set() THROWS(NCursesException) { if (!::isendwin()) clear(); delete[] slk_array; @@ -100,6 +102,10 @@ Soft_Label_Key_Set::Soft_Label_Key& Soft_Label_Key_Set::operator[](int i) { return slk_array[i-1]; } +int Soft_Label_Key_Set::labels() const { + return num_labels; +} + void Soft_Label_Key_Set::activate_label(int i, bool bf) { if (!b_attrInit) { NCursesApplication* A = NCursesApplication::getApplication(); diff --git a/deps/ncurses-5.9/c++/cursslk.h b/deps/ncurses-6.3/c++/cursslk.h similarity index 89% rename from deps/ncurses-5.9/c++/cursslk.h rename to deps/ncurses-6.3/c++/cursslk.h index 091695e..66564fe 100644 --- a/deps/ncurses-5.9/c++/cursslk.h +++ b/deps/ncurses-6.3/c++/cursslk.h @@ -1,6 +1,8 @@ // * this is for making emacs happy: -*-Mode: C++;-*- +// vile:cppmode /**************************************************************************** - * Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2003,2005 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 * @@ -31,17 +33,17 @@ * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ -// $Id: cursslk.h,v 1.13 2005/05/28 21:58:18 tom Exp $ +// $Id: cursslk.h,v 1.19 2021/04/17 18:11:08 tom Exp $ #ifndef NCURSES_CURSSLK_H_incl #define NCURSES_CURSSLK_H_incl #include -class NCURSES_IMPEXP Soft_Label_Key_Set { +class NCURSES_CXX_IMPEXP Soft_Label_Key_Set { public: // This inner class represents the attributes of a Soft Label Key (SLK) - class NCURSES_IMPEXP Soft_Label_Key { + class NCURSES_CXX_IMPEXP Soft_Label_Key { friend class Soft_Label_Key_Set; public: typedef enum { Left=0, Center=1, Right=2 } Justification; @@ -100,10 +102,10 @@ class NCURSES_IMPEXP Soft_Label_Key_Set { } Label_Layout; private: - static long NCURSES_IMPEXP count; // Number of Key Sets - static Label_Layout NCURSES_IMPEXP format; // Layout of the Key Sets - static int NCURSES_IMPEXP num_labels; // Number Of Labels in Key Sets - bool NCURSES_IMPEXP b_attrInit; // Are attributes initialized + static long count; // Number of Key Sets + static Label_Layout format; // Layout of the Key Sets + static int num_labels; // Number Of Labels in Key Sets + bool b_attrInit; // Are attributes initialized Soft_Label_Key *slk_array; // The array of SLK's @@ -139,11 +141,11 @@ class NCURSES_IMPEXP Soft_Label_Key_Set { // You must create a Soft_Label_Key_Set before you create any object of // the NCursesWindow, NCursesPanel or derived classes. (Actually before // ::initscr() is called). - Soft_Label_Key_Set(Label_Layout fmt); + explicit Soft_Label_Key_Set(Label_Layout fmt); // This constructor assumes, that you already constructed a Key Set // with a layout by the constructor above. This layout will be reused. - NCURSES_IMPEXP Soft_Label_Key_Set(); + Soft_Label_Key_Set(); Soft_Label_Key_Set& operator=(const Soft_Label_Key_Set& rhs) { @@ -161,13 +163,13 @@ class NCURSES_IMPEXP Soft_Label_Key_Set { init(); // allocate a new slk_array[] } - virtual ~Soft_Label_Key_Set(); + virtual ~Soft_Label_Key_Set() THROWS(NCursesException); // Get Label# i. Label counting starts with 1! - NCURSES_IMPEXP Soft_Label_Key& operator[](int i); + Soft_Label_Key& operator[](int i); // Retrieve number of Labels - inline int labels() const { return num_labels; } + int labels() const; // Refresh the SLK portion of the screen inline void refresh() { diff --git a/deps/ncurses-5.9/c++/demo.cc b/deps/ncurses-6.3/c++/demo.cc similarity index 94% rename from deps/ncurses-5.9/c++/demo.cc rename to deps/ncurses-6.3/c++/demo.cc index 3543342..195e98a 100644 --- a/deps/ncurses-5.9/c++/demo.cc +++ b/deps/ncurses-6.3/c++/demo.cc @@ -1,6 +1,7 @@ // * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,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 * @@ -35,7 +36,7 @@ * Demo code for NCursesMenu and NCursesForm written by * Juergen Pfeifer * - * $Id: demo.cc,v 1.39 2008/12/07 02:07:34 juergen Exp $ + * $Id: demo.cc,v 1.50 2021/09/04 10:52:55 tom Exp $ */ #include "internal.h" @@ -43,11 +44,10 @@ #include "cursesm.h" #include "cursesf.h" -#ifdef __MINGW32__ +#if (defined(_WIN32) || defined(_WIN64)) #undef KEY_EVENT -#endif - -#ifndef __MINGW32__ +#define sleep(n) Sleep(n) +#else extern "C" unsigned int sleep(unsigned int); #endif @@ -104,7 +104,7 @@ class SillyDemo } // A refresh to any valid panel updates all panels and refreshes - // the screen. Using mystd is just convenient - We know it's always + // the screen. Using mystd is just convenient - We know it is always // valid until the end of the program. mystd->refresh(); @@ -176,7 +176,7 @@ template class MyAction : public NCursesUserItem : NCursesUserItem(p_name, static_cast(0), p_UserData) {} - virtual ~MyAction() {} + virtual ~MyAction() THROWS(NCursesException) {} bool action() { SillyDemo a; @@ -186,7 +186,7 @@ template class MyAction : public NCursesUserItem }; template class MyAction; -template class NCURSES_IMPEXP NCursesUserItem; +template class NCURSES_CXX_IMPEXP NCursesUserItem; class QuitItem : public NCursesMenuItem { @@ -220,6 +220,7 @@ class MyFieldType : public UserDefinedFieldType int chk; protected: bool field_check(NCursesFormField& f) { + (void) f; return TRUE; } bool char_check(int c) { @@ -294,7 +295,7 @@ class TestForm : public NCursesForm { } - ~TestForm() { + ~TestForm() THROWS(NCursesException) { delete mft; delete ift; delete eft; @@ -319,7 +320,7 @@ class FormAction : public NCursesMenuItem for(int i=1; i <= S->labels(); i++) { char buf[8]; assert(i < 100); - ::sprintf(buf, "Frm%02d", i); + ::_nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "Frm%02d", i % 100); (*S)[i] = buf; // Text (*S)[i] = Soft_Label_Key_Set::Soft_Label_Key::Left; // Justification } @@ -472,7 +473,7 @@ class MyMenu : public NCursesMenu { } - ~MyMenu() + ~MyMenu() THROWS(NCursesException) { P->hide(); delete P; @@ -539,7 +540,7 @@ void TestApplication::init_labels(Soft_Label_Key_Set& S) const for(int i=1; i <= S.labels(); i++) { char buf[8]; assert(i < 100); - ::sprintf(buf, "Key%02d", i); + ::_nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "Key%02d", i % 100); S[i] = buf; // Text S[i] = Soft_Label_Key_Set::Soft_Label_Key::Left; // Justification } @@ -550,9 +551,9 @@ void TestApplication::title() const char * const titleText = "Simple C++ Binding Demo"; const int len = ::strlen(titleText); - titleWindow->bkgd(screen_titles()); - titleWindow->addstr(0, (titleWindow->cols() - len)/2, titleText); - titleWindow->noutrefresh(); + getTitleWindow()->bkgd(screen_titles()); + getTitleWindow()->addstr(0, (getTitleWindow()->cols() - len)/2, titleText); + getTitleWindow()->noutrefresh(); } @@ -567,3 +568,8 @@ int TestApplication::run() // ------------------------------------------------------------------------- // static TestApplication *Demo = new TestApplication(); + +#if (defined(_WIN32) || defined(_WIN64)) +// This is actually only needed when ncurses is a dll +NCURSES_CXX_MAIN +#endif diff --git a/deps/ncurses-6.3/c++/edit_cfg.sh b/deps/ncurses-6.3/c++/edit_cfg.sh new file mode 100755 index 0000000..92ab0b1 --- /dev/null +++ b/deps/ncurses-6.3/c++/edit_cfg.sh @@ -0,0 +1,72 @@ +#!/bin/sh +# $Id: edit_cfg.sh,v 1.18 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2007,2008 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: Thomas E. Dickey 1997-on +# +# Edit the default value of the etip.h file based on the autoconf-generated +# values: +# +# $1 = ncurses_cfg.h +# $2 = etip.h +# +echo "substituting autoconf'd values from $1 into $2" +for name in \ + CPP_HAS_PARAM_INIT \ + CPP_HAS_STATIC_CAST \ + ETIP_NEEDS_MATH_EXCEPTION \ + ETIP_NEEDS_MATH_H \ + HAVE_BUILTIN_H \ + HAVE_GPP_BUILTIN_H \ + HAVE_GXX_BUILTIN_H \ + HAVE_IOSTREAM \ + HAVE_TYPEINFO \ + HAVE_VALUES_H \ + IOSTREAM_NAMESPACE +do + rm -f $2.bak + mv $2 $2.bak + if ( grep "[ ]$name[ ]1" $1 2>&1 >/dev/null) + then + value=1 + sed -e 's/define '$name'.*$/define '$name' 1/' $2.bak >$2 + else + value=0 + sed -e 's/define '$name'.*$/define '$name' 0/' $2.bak >$2 + fi + if (cmp -s $2 $2.bak) + then + echo '... '$name $value + mv $2.bak $2 + else + echo '... '$name $value + rm -f $2.bak + fi +done diff --git a/deps/ncurses-5.9/c++/etip.h.in b/deps/ncurses-6.3/c++/etip.h.in similarity index 84% rename from deps/ncurses-5.9/c++/etip.h.in rename to deps/ncurses-6.3/c++/etip.h.in index 20642a6..9dbb0e7 100644 --- a/deps/ncurses-5.9/c++/etip.h.in +++ b/deps/ncurses-6.3/c++/etip.h.in @@ -1,6 +1,7 @@ // * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,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 * @@ -31,7 +32,7 @@ * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ -// $Id: etip.h.in,v 1.37 2008/08/30 19:27:32 tom Exp $ +// $Id: etip.h.in,v 1.48 2021/06/17 21:11:08 tom Exp $ #ifndef NCURSES_ETIP_H_incl #define NCURSES_ETIP_H_incl 1 @@ -113,7 +114,7 @@ # include #endif -#include +#include extern "C" { #if HAVE_VALUES_H @@ -138,12 +139,16 @@ extern "C" { #define STATIC_CAST(s) (s) #endif +#ifndef NCURSES_CXX_IMPEXP +#define NCURSES_CXX_IMPEXP /* nothing */ +#endif + // Forward Declarations -class NCURSES_IMPEXP NCursesPanel; -class NCURSES_IMPEXP NCursesMenu; -class NCURSES_IMPEXP NCursesForm; +class NCURSES_CXX_IMPEXP NCursesPanel; +class NCURSES_CXX_IMPEXP NCursesMenu; +class NCURSES_CXX_IMPEXP NCursesForm; -class NCURSES_IMPEXP NCursesException +class NCURSES_CXX_IMPEXP NCursesException { public: const char *message; @@ -153,12 +158,13 @@ public: : message(msg), errorno (err) {}; - NCursesException (const char* msg) + explicit NCursesException (const char* msg) : message(msg), errorno (E_SYSTEM_ERROR) {}; NCursesException& operator=(const NCursesException& rhs) { + message = rhs.message; errorno = rhs.errorno; return *this; } @@ -177,14 +183,14 @@ public: } }; -class NCURSES_IMPEXP NCursesPanelException : public NCursesException +class NCURSES_CXX_IMPEXP NCursesPanelException : public NCursesException { public: const NCursesPanel* p; NCursesPanelException (const char *msg, int err) : NCursesException (msg, err), - p (NULL) + p (0) {}; NCursesPanelException (const NCursesPanel* panel, @@ -194,9 +200,9 @@ public: p (panel) {}; - NCursesPanelException (int err) : + explicit NCursesPanelException (int err) : NCursesException ("panel library error", err), - p (NULL) + p (0) {}; NCursesPanelException (const NCursesPanel* panel, @@ -228,14 +234,14 @@ public: } }; -class NCURSES_IMPEXP NCursesMenuException : public NCursesException +class NCURSES_CXX_IMPEXP NCursesMenuException : public NCursesException { public: const NCursesMenu* m; NCursesMenuException (const char *msg, int err) : NCursesException (msg, err), - m (NULL) + m (0) {}; NCursesMenuException (const NCursesMenu* menu, @@ -245,9 +251,9 @@ public: m (menu) {}; - NCursesMenuException (int err) : + explicit NCursesMenuException (int err) : NCursesException ("menu library error", err), - m (NULL) + m (0) {}; NCursesMenuException (const NCursesMenu* menu, @@ -279,14 +285,14 @@ public: } }; -class NCURSES_IMPEXP NCursesFormException : public NCursesException +class NCURSES_CXX_IMPEXP NCursesFormException : public NCursesException { public: const NCursesForm* f; NCursesFormException (const char *msg, int err) : NCursesException (msg, err), - f (NULL) + f (0) {}; NCursesFormException (const NCursesForm* form, @@ -296,9 +302,9 @@ public: f (form) {}; - NCursesFormException (int err) : + explicit NCursesFormException (int err) : NCursesException ("form library error", err), - f (NULL) + f (0) {}; NCursesFormException (const NCursesForm* form, @@ -330,7 +336,7 @@ public: } }; -#if !((defined(__GNUG__) && defined(__EXCEPTIONS)) || defined(__SUNPRO_CC)) +#if !((defined(__GNUG__) && defined(__EXCEPTIONS) && (__GNUG__ < 7)) || defined(__SUNPRO_CC)) # if HAVE_IOSTREAM # include # if IOSTREAM_NAMESPACE @@ -340,22 +346,26 @@ using std::endl; # else # include # endif - extern "C" void exit(int); #endif inline void THROW(const NCursesException *e) { #if defined(__GNUG__) && defined(__EXCEPTIONS) # if ((__GNUG__ <= 2) && (__GNUC_MINOR__ < 8)) (*lib_error_handler)(e ? e->classname() : "", e ? e->message : ""); -#else -#define CPP_HAS_TRY_CATCH 1 -#endif +# elif (__GNUG__ >= 7) + // g++ 7.0 warns about deprecation, but lacks the predefined symbols + ::endwin(); + std::cerr << "Found a problem - goodbye" << std::endl; + exit(EXIT_FAILURE); +# else +# define CPP_HAS_TRY_CATCH 1 +# endif #elif defined(__SUNPRO_CC) # if !defined(__SUNPRO_CC_COMPAT) || (__SUNPRO_CC_COMPAT < 5) genericerror(1, ((e != 0) ? (char *)(e->message) : "")); -#else -#define CPP_HAS_TRY_CATCH 1 -#endif +# else +# define CPP_HAS_TRY_CATCH 1 +# endif #else if (e) cerr << e->message << endl; @@ -367,11 +377,19 @@ inline void THROW(const NCursesException *e) { #define NCURSES_CPP_TRY /* nothing */ #define NCURSES_CPP_CATCH(e) if (false) #define THROWS(s) /* nothing */ +#define THROW2(s,t) /* nothing */ #elif CPP_HAS_TRY_CATCH throw *e; #define NCURSES_CPP_TRY try #define NCURSES_CPP_CATCH(e) catch(e) +#if defined(__cpp_noexcept_function_type) && (__cpp_noexcept_function_type >= 201510) +// C++17 deprecates the usage of throw(). +#define THROWS(s) /* nothing */ +#define THROW2(s,t) /* nothing */ +#else #define THROWS(s) throw(s) +#define THROW2(s,t) throw(s,t) +#endif #endif } diff --git a/deps/ncurses-6.3/c++/headers b/deps/ncurses-6.3/c++/headers new file mode 100644 index 0000000..9a6a7f5 --- /dev/null +++ b/deps/ncurses-6.3/c++/headers @@ -0,0 +1,41 @@ +# C++ headers +# $Id: headers,v 1.4 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998,2006 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: Thomas E. Dickey 1997 +# +$(srcdir)/cursesapp.h +$(srcdir)/cursesf.h +$(srcdir)/cursesm.h +$(srcdir)/cursesp.h +$(srcdir)/cursesw.h +$(srcdir)/cursslk.h +etip.h +# vile:makemode diff --git a/deps/ncurses-5.9/c++/internal.h b/deps/ncurses-6.3/c++/internal.h similarity index 88% rename from deps/ncurses-5.9/c++/internal.h rename to deps/ncurses-6.3/c++/internal.h index 64d57cd..f67aaec 100644 --- a/deps/ncurses-5.9/c++/internal.h +++ b/deps/ncurses-6.3/c++/internal.h @@ -1,6 +1,7 @@ // * This makes emacs happy -*-Mode: C++;-*- /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2008,2012 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 * @@ -31,7 +32,7 @@ * Author: Juergen Pfeifer, 1997 * ****************************************************************************/ -// $Id: internal.h,v 1.17 2008/12/07 02:07:34 juergen Exp $ +// $Id: internal.h,v 1.22 2020/08/29 23:06:41 tom Exp $ #ifndef NCURSES_CPLUS_INTERNAL_H #define NCURSES_CPLUS_INTERNAL_H 1 @@ -41,11 +42,15 @@ #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 -#ifdef __MINGW32__ +#if (defined(_WIN32) || defined(_WIN64)) +#if defined(EXP_WIN32_DRIVER) +#include +#else #include +#endif #undef KEY_EVENT #endif @@ -62,4 +67,6 @@ #define NULL 0 #endif +#include + #endif /* NCURSES_CPLUS_INTERNAL_H */ diff --git a/deps/ncurses-6.3/c++/modules b/deps/ncurses-6.3/c++/modules new file mode 100644 index 0000000..f82b487 --- /dev/null +++ b/deps/ncurses-6.3/c++/modules @@ -0,0 +1,45 @@ +# Program modules +# $Id: modules,v 1.12 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2006,2013 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: Thomas E. Dickey 1995-on +# + +@ base +cursesf c++ $(srcdir) $(internal_h) $(cursesf_h) $(cursesapp_h) +cursesm c++ $(srcdir) $(internal_h) $(cursesm_h) $(cursesapp_h) +cursesw c++ $(srcdir) $(internal_h) $(cursesw_h) +cursespad c++ $(srcdir) $(internal_h) $(cursesw_h) +cursesp c++ $(srcdir) $(internal_h) $(cursesp_h) +cursslk c++ $(srcdir) $(internal_h) $(cursesapp_h) +cursesapp c++ $(srcdir) $(internal_h) $(cursesapp_h) +cursesmain c++ $(srcdir) $(internal_h) $(cursesapp_h) $(INCDIR)/nc_alloc.h + +# vile:makemode diff --git a/deps/ncurses-6.3/config.guess b/deps/ncurses-6.3/config.guess new file mode 100755 index 0000000..e81d3ae --- /dev/null +++ b/deps/ncurses-6.3/config.guess @@ -0,0 +1,1748 @@ +#! /bin/sh +# Attempt to guess a canonical system name. +# Copyright 1992-2021 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2021-06-03' + +# 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). +# +# Originally written by Per Bothner; maintained since 2000 by Ben Elliston. +# +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.guess +# +# Please send patches to . + + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] + +Output the configuration name of the system \`$me' is run on. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.guess ($timestamp) + +Originally written by Per Bothner. +Copyright 1992-2021 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." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + * ) + break ;; + esac +done + +if test $# != 0; then + echo "$me: too many arguments$help" >&2 + exit 1 +fi + +# Just in case it came from the environment. +GUESS= + +# CC_FOR_BUILD -- compiler used by this script. Note that the use of a +# compiler to aid in system detection is discouraged as it requires +# temporary files to be created and, as you can see below, it is a +# headache to deal with in a portable fashion. + +# Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still +# use `HOST_CC' if defined, but it is deprecated. + +# Portable tmp directory creation inspired by the Autoconf team. + +tmp= +# shellcheck disable=SC2172 +trap 'test -z "$tmp" || rm -fr "$tmp"' 0 1 2 13 15 + +set_cc_for_build() { + # prevent multiple calls if $tmp is already set + test "$tmp" && return 0 + : "${TMPDIR=/tmp}" + # shellcheck disable=SC2039,SC3028 + { tmp=`(umask 077 && mktemp -d "$TMPDIR/cgXXXXXX") 2>/dev/null` && test -n "$tmp" && test -d "$tmp" ; } || + { test -n "$RANDOM" && tmp=$TMPDIR/cg$$-$RANDOM && (umask 077 && mkdir "$tmp" 2>/dev/null) ; } || + { tmp=$TMPDIR/cg-$$ && (umask 077 && mkdir "$tmp" 2>/dev/null) && echo "Warning: creating insecure temp directory" >&2 ; } || + { echo "$me: cannot create a temporary directory in $TMPDIR" >&2 ; exit 1 ; } + dummy=$tmp/dummy + case ${CC_FOR_BUILD-},${HOST_CC-},${CC-} in + ,,) echo "int x;" > "$dummy.c" + for driver in cc gcc c89 c99 ; do + if ($driver -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then + CC_FOR_BUILD=$driver + break + fi + done + if test x"$CC_FOR_BUILD" = x ; then + CC_FOR_BUILD=no_compiler_found + fi + ;; + ,,*) CC_FOR_BUILD=$CC ;; + ,*,*) CC_FOR_BUILD=$HOST_CC ;; + esac +} + +# This is needed to find uname on a Pyramid OSx when run in the BSD universe. +# (ghazi@noc.rutgers.edu 1994-08-24) +if test -f /.attbin/uname ; then + PATH=$PATH:/.attbin ; export PATH +fi + +UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown +UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown +UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown +UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown + +case $UNAME_SYSTEM in +Linux|GNU|GNU/*) + LIBC=unknown + + set_cc_for_build + cat <<-EOF > "$dummy.c" + #include + #if defined(__UCLIBC__) + LIBC=uclibc + #elif defined(__dietlibc__) + LIBC=dietlibc + #elif defined(__GLIBC__) + LIBC=gnu + #else + #include + /* First heuristic to detect musl libc. */ + #ifdef __DEFINED_va_list + LIBC=musl + #endif + #endif + EOF + cc_set_libc=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + eval "$cc_set_libc" + + # Second heuristic to detect musl libc. + if [ "$LIBC" = unknown ] && + command -v ldd >/dev/null && + ldd --version 2>&1 | grep -q ^musl; then + LIBC=musl + fi + + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + if [ "$LIBC" = unknown ]; then + LIBC=gnu + fi + ;; +esac + +# Note: order is significant - the case branches are not exclusive. + +case $UNAME_MACHINE:$UNAME_SYSTEM:$UNAME_RELEASE:$UNAME_VERSION in + *:NetBSD:*:*) + # NetBSD (nbsd) targets should (where applicable) match one or + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, + # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently + # switched to ELF, *-*-netbsd* would select the old + # object file format. This provides both forward + # compatibility and a consistent mechanism for selecting the + # object file format. + # + # Note: NetBSD doesn't particularly care about the vendor + # portion of the name. We always set it to "unknown". + UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ + /sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + /usr/sbin/sysctl -n hw.machine_arch 2>/dev/null || \ + echo unknown)` + case $UNAME_MACHINE_ARCH in + aarch64eb) machine=aarch64_be-unknown ;; + armeb) machine=armeb-unknown ;; + arm*) machine=arm-unknown ;; + sh3el) machine=shl-unknown ;; + sh3eb) machine=sh-unknown ;; + sh5el) machine=sh5le-unknown ;; + earmv*) + arch=`echo "$UNAME_MACHINE_ARCH" | sed -e 's,^e\(armv[0-9]\).*$,\1,'` + endian=`echo "$UNAME_MACHINE_ARCH" | sed -ne 's,^.*\(eb\)$,\1,p'` + machine=${arch}${endian}-unknown + ;; + *) machine=$UNAME_MACHINE_ARCH-unknown ;; + esac + # The Operating System including object format, if it has switched + # to ELF recently (or will in the future) and ABI. + case $UNAME_MACHINE_ARCH in + earm*) + os=netbsdelf + ;; + arm*|i386|m68k|ns32k|sh3*|sparc|vax) + set_cc_for_build + if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ELF__ + then + # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout). + # Return netbsd for either. FIX? + os=netbsd + else + os=netbsdelf + fi + ;; + *) + os=netbsd + ;; + esac + # Determine ABI tags. + case $UNAME_MACHINE_ARCH in + earm*) + expr='s/^earmv[0-9]/-eabi/;s/eb$//' + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` + ;; + esac + # The OS release + # Debian GNU/NetBSD machines have a different userland, and + # thus, need a distinct triplet. However, they do not need + # kernel version information, so it can be replaced with a + # suitable tag, in the style of linux-gnu. + case $UNAME_VERSION in + Debian*) + release='-gnu' + ;; + *) + release=`echo "$UNAME_RELEASE" | sed -e 's/[-_].*//' | cut -d. -f1,2` + ;; + esac + # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM: + # contains redundant information, the shorter form: + # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. + GUESS=$machine-${os}${release}${abi-} + ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-bitrig$UNAME_RELEASE + ;; + *:OpenBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-openbsd$UNAME_RELEASE + ;; + *:SecBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/SecBSD.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-secbsd$UNAME_RELEASE + ;; + *:LibertyBSD:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/^.*BSD\.//'` + GUESS=$UNAME_MACHINE_ARCH-unknown-libertybsd$UNAME_RELEASE + ;; + *:MidnightBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-midnightbsd$UNAME_RELEASE + ;; + *:ekkoBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-ekkobsd$UNAME_RELEASE + ;; + *:SolidBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-solidbsd$UNAME_RELEASE + ;; + *:OS108:*:*) + GUESS=$UNAME_MACHINE-unknown-os108_$UNAME_RELEASE + ;; + macppc:MirBSD:*:*) + GUESS=powerpc-unknown-mirbsd$UNAME_RELEASE + ;; + *:MirBSD:*:*) + GUESS=$UNAME_MACHINE-unknown-mirbsd$UNAME_RELEASE + ;; + *:Sortix:*:*) + GUESS=$UNAME_MACHINE-unknown-sortix + ;; + *:Twizzler:*:*) + GUESS=$UNAME_MACHINE-unknown-twizzler + ;; + *:Redox:*:*) + GUESS=$UNAME_MACHINE-unknown-redox + ;; + mips:OSF1:*.*) + GUESS=mips-dec-osf1 + ;; + alpha:OSF1:*:*) + # Reset EXIT trap before exiting to avoid spurious non-zero exit code. + trap '' 0 + case $UNAME_RELEASE in + *4.0) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $3}'` + ;; + *5.*) + UNAME_RELEASE=`/usr/sbin/sizer -v | awk '{print $4}'` + ;; + esac + # According to Compaq, /usr/sbin/psrinfo has been available on + # OSF/1 and Tru64 systems produced since 1995. I hope that + # covers most systems running today. This code pipes the CPU + # types through head -n 1, so we only detect the type of CPU 0. + ALPHA_CPU_TYPE=`/usr/sbin/psrinfo -v | sed -n -e 's/^ The alpha \(.*\) processor.*$/\1/p' | head -n 1` + case $ALPHA_CPU_TYPE in + "EV4 (21064)") + UNAME_MACHINE=alpha ;; + "EV4.5 (21064)") + UNAME_MACHINE=alpha ;; + "LCA4 (21066/21068)") + UNAME_MACHINE=alpha ;; + "EV5 (21164)") + UNAME_MACHINE=alphaev5 ;; + "EV5.6 (21164A)") + UNAME_MACHINE=alphaev56 ;; + "EV5.6 (21164PC)") + UNAME_MACHINE=alphapca56 ;; + "EV5.7 (21164PC)") + UNAME_MACHINE=alphapca57 ;; + "EV6 (21264)") + UNAME_MACHINE=alphaev6 ;; + "EV6.7 (21264A)") + UNAME_MACHINE=alphaev67 ;; + "EV6.8CB (21264C)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8AL (21264B)") + UNAME_MACHINE=alphaev68 ;; + "EV6.8CX (21264D)") + UNAME_MACHINE=alphaev68 ;; + "EV6.9A (21264/EV69A)") + UNAME_MACHINE=alphaev69 ;; + "EV7 (21364)") + UNAME_MACHINE=alphaev7 ;; + "EV7.9 (21364A)") + UNAME_MACHINE=alphaev79 ;; + esac + # A Pn.n version is a patched version. + # A Vn.n version is a released version. + # A Tn.n version is a released field test version. + # A Xn.n version is an unreleased experimental baselevel. + # 1.2 uses "1.2" for uname -r. + OSF_REL=`echo "$UNAME_RELEASE" | sed -e 's/^[PVTX]//' | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + GUESS=$UNAME_MACHINE-dec-osf$OSF_REL + ;; + Amiga*:UNIX_System_V:4.0:*) + GUESS=m68k-unknown-sysv4 + ;; + *:[Aa]miga[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-amigaos + ;; + *:[Mm]orph[Oo][Ss]:*:*) + GUESS=$UNAME_MACHINE-unknown-morphos + ;; + *:OS/390:*:*) + GUESS=i370-ibm-openedition + ;; + *:z/VM:*:*) + GUESS=s390-ibm-zvmoe + ;; + *:OS400:*:*) + GUESS=powerpc-ibm-os400 + ;; + arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) + GUESS=arm-acorn-riscix$UNAME_RELEASE + ;; + arm*:riscos:*:*|arm*:RISCOS:*:*) + GUESS=arm-unknown-riscos + ;; + SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) + GUESS=hppa1.1-hitachi-hiuxmpp + ;; + Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*) + # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE. + case `(/bin/universe) 2>/dev/null` in + att) GUESS=pyramid-pyramid-sysv3 ;; + *) GUESS=pyramid-pyramid-bsd ;; + esac + ;; + NILE*:*:*:dcosx) + GUESS=pyramid-pyramid-svr4 + ;; + DRS?6000:unix:4.0:6*) + GUESS=sparc-icl-nx6 + ;; + DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*) + case `/usr/bin/uname -p` in + sparc) GUESS=sparc-icl-nx7 ;; + esac + ;; + s390x:SunOS:*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$UNAME_MACHINE-ibm-solaris2$SUN_REL + ;; + sun4H:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-hal-solaris2$SUN_REL + ;; + sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris2$SUN_REL + ;; + i86pc:AuroraUX:5.*:* | i86xen:AuroraUX:5.*:*) + GUESS=i386-pc-auroraux$UNAME_RELEASE + ;; + i86pc:SunOS:5.*:* | i86xen:SunOS:5.*:*) + set_cc_for_build + SUN_ARCH=i386 + # If there is a compiler, see if it is configured for 64-bit objects. + # Note that the Sun cc does not turn __LP64__ into 1 like gcc does. + # This test works for both compilers. + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __amd64'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + SUN_ARCH=x86_64 + fi + fi + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=$SUN_ARCH-pc-solaris2$SUN_REL + ;; + sun4*:SunOS:6*:*) + # According to config.sub, this is the proper way to canonicalize + # SunOS6. Hard to guess exactly what SunOS6 will be like, but + # it's likely to be more like Solaris than SunOS4. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=sparc-sun-solaris3$SUN_REL + ;; + sun4*:SunOS:*:*) + case `/usr/bin/arch -k` in + Series*|S4*) + UNAME_RELEASE=`uname -v` + ;; + esac + # Japanese Language versions have a version number like `4.1.3-JL'. + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/'` + GUESS=sparc-sun-sunos$SUN_REL + ;; + sun3*:SunOS:*:*) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun*:*:4.2BSD:*) + UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null` + test "x$UNAME_RELEASE" = x && UNAME_RELEASE=3 + case `/bin/arch` in + sun3) + GUESS=m68k-sun-sunos$UNAME_RELEASE + ;; + sun4) + GUESS=sparc-sun-sunos$UNAME_RELEASE + ;; + esac + ;; + aushp:SunOS:*:*) + GUESS=sparc-auspex-sunos$UNAME_RELEASE + ;; + # The situation for MiNT is a little confusing. The machine name + # can be virtually everything (everything which is not + # "atarist" or "atariste" at least should have a processor + # > m68000). The system name ranges from "MiNT" over "FreeMiNT" + # to the lowercase version "mint" (or "freemint"). Finally + # the system name "TOS" denotes a system which is actually not + # MiNT. But MiNT is downward compatible to TOS, so this should + # be no problem. + atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*) + GUESS=m68k-atari-mint$UNAME_RELEASE + ;; + milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*) + GUESS=m68k-milan-mint$UNAME_RELEASE + ;; + hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*) + GUESS=m68k-hades-mint$UNAME_RELEASE + ;; + *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*) + GUESS=m68k-unknown-mint$UNAME_RELEASE + ;; + m68k:machten:*:*) + GUESS=m68k-apple-machten$UNAME_RELEASE + ;; + powerpc:machten:*:*) + GUESS=powerpc-apple-machten$UNAME_RELEASE + ;; + RISC*:Mach:*:*) + GUESS=mips-dec-mach_bsd4.3 + ;; + RISC*:ULTRIX:*:*) + GUESS=mips-dec-ultrix$UNAME_RELEASE + ;; + VAX*:ULTRIX*:*:*) + GUESS=vax-dec-ultrix$UNAME_RELEASE + ;; + 2020:CLIX:*:* | 2430:CLIX:*:*) + GUESS=clipper-intergraph-clix$UNAME_RELEASE + ;; + mips:*:*:UMIPS | mips:*:*:RISCos) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" +#ifdef __cplusplus +#include /* for printf() prototype */ + int main (int argc, char *argv[]) { +#else + int main (argc, argv) int argc; char *argv[]; { +#endif + #if defined (host_mips) && defined (MIPSEB) + #if defined (SYSTYPE_SYSV) + printf ("mips-mips-riscos%ssysv\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_SVR4) + printf ("mips-mips-riscos%ssvr4\\n", argv[1]); exit (0); + #endif + #if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD) + printf ("mips-mips-riscos%sbsd\\n", argv[1]); exit (0); + #endif + #endif + exit (-1); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && + dummyarg=`echo "$UNAME_RELEASE" | sed -n 's/\([0-9]*\).*/\1/p'` && + SYSTEM_NAME=`"$dummy" "$dummyarg"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=mips-mips-riscos$UNAME_RELEASE + ;; + Motorola:PowerMAX_OS:*:*) + GUESS=powerpc-motorola-powermax + ;; + Motorola:*:4.3:PL8-*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:*:*:PowerMAX_OS | Synergy:PowerMAX_OS:*:*) + GUESS=powerpc-harris-powermax + ;; + Night_Hawk:Power_UNIX:*:*) + GUESS=powerpc-harris-powerunix + ;; + m88k:CX/UX:7*:*) + GUESS=m88k-harris-cxux7 + ;; + m88k:*:4*:R4*) + GUESS=m88k-motorola-sysv4 + ;; + m88k:*:3*:R3*) + GUESS=m88k-motorola-sysv3 + ;; + AViiON:dgux:*:*) + # DG/UX returns AViiON for all architectures + UNAME_PROCESSOR=`/usr/bin/uname -p` + if test "$UNAME_PROCESSOR" = mc88100 || test "$UNAME_PROCESSOR" = mc88110 + then + if test "$TARGET_BINARY_INTERFACE"x = m88kdguxelfx || \ + test "$TARGET_BINARY_INTERFACE"x = x + then + GUESS=m88k-dg-dgux$UNAME_RELEASE + else + GUESS=m88k-dg-dguxbcs$UNAME_RELEASE + fi + else + GUESS=i586-dg-dgux$UNAME_RELEASE + fi + ;; + M88*:DolphinOS:*:*) # DolphinOS (SVR3) + GUESS=m88k-dolphin-sysv3 + ;; + M88*:*:R3*:*) + # Delta 88k system running SVR3 + GUESS=m88k-motorola-sysv3 + ;; + XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3) + GUESS=m88k-tektronix-sysv3 + ;; + Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD) + GUESS=m68k-tektronix-bsd + ;; + *:IRIX*:*:*) + IRIX_REL=`echo "$UNAME_RELEASE" | sed -e 's/-/_/g'` + GUESS=mips-sgi-irix$IRIX_REL + ;; + ????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX. + GUESS=romp-ibm-aix # uname -m gives an 8 hex-code CPU id + ;; # Note that: echo "'`uname -s`'" gives 'AIX ' + i*86:AIX:*:*) + GUESS=i386-ibm-aix + ;; + ia64:AIX:*:*) + if test -x /usr/bin/oslevel ; then + IBM_REV=`/usr/bin/oslevel` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$UNAME_MACHINE-ibm-aix$IBM_REV + ;; + *:AIX:2:3) + if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + + main() + { + if (!__power_pc()) + exit(1); + puts("powerpc-ibm-aix3.2.5"); + exit(0); + } +EOF + if $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` + then + GUESS=$SYSTEM_NAME + else + GUESS=rs6000-ibm-aix3.2.5 + fi + elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then + GUESS=rs6000-ibm-aix3.2.4 + else + GUESS=rs6000-ibm-aix3.2 + fi + ;; + *:AIX:*:[4567]) + IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'` + if /usr/sbin/lsattr -El "$IBM_CPU_ID" | grep ' POWER' >/dev/null 2>&1; then + IBM_ARCH=rs6000 + else + IBM_ARCH=powerpc + fi + if test -x /usr/bin/lslpp ; then + IBM_REV=`/usr/bin/lslpp -Lqc bos.rte.libc | \ + awk -F: '{ print $3 }' | sed s/[0-9]*$/0/` + else + IBM_REV=$UNAME_VERSION.$UNAME_RELEASE + fi + GUESS=$IBM_ARCH-ibm-aix$IBM_REV + ;; + *:AIX:*:*) + GUESS=rs6000-ibm-aix + ;; + ibmrt:4.4BSD:*|romp-ibm:4.4BSD:*) + GUESS=romp-ibm-bsd4.4 + ;; + ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and + GUESS=romp-ibm-bsd$UNAME_RELEASE # 4.3 with uname added to + ;; # report: romp-ibm BSD 4.3 + *:BOSX:*:*) + GUESS=rs6000-bull-bosx + ;; + DPX/2?00:B.O.S.:*:*) + GUESS=m68k-bull-sysv3 + ;; + 9000/[34]??:4.3bsd:1.*:*) + GUESS=m68k-hp-bsd + ;; + hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*) + GUESS=m68k-hp-bsd4.4 + ;; + 9000/[34678]??:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + case $UNAME_MACHINE in + 9000/31?) HP_ARCH=m68000 ;; + 9000/[34]??) HP_ARCH=m68k ;; + 9000/[678][0-9][0-9]) + if test -x /usr/bin/getconf; then + sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null` + sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null` + case $sc_cpu_version in + 523) HP_ARCH=hppa1.0 ;; # CPU_PA_RISC1_0 + 528) HP_ARCH=hppa1.1 ;; # CPU_PA_RISC1_1 + 532) # CPU_PA_RISC2_0 + case $sc_kernel_bits in + 32) HP_ARCH=hppa2.0n ;; + 64) HP_ARCH=hppa2.0w ;; + '') HP_ARCH=hppa2.0 ;; # HP-UX 10.20 + esac ;; + esac + fi + if test "$HP_ARCH" = ""; then + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + + #define _HPUX_SOURCE + #include + #include + + int main () + { + #if defined(_SC_KERNEL_BITS) + long bits = sysconf(_SC_KERNEL_BITS); + #endif + long cpu = sysconf (_SC_CPU_VERSION); + + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1"); break; + case CPU_PA_RISC2_0: + #if defined(_SC_KERNEL_BITS) + switch (bits) + { + case 64: puts ("hppa2.0w"); break; + case 32: puts ("hppa2.0n"); break; + default: puts ("hppa2.0"); break; + } break; + #else /* !defined(_SC_KERNEL_BITS) */ + puts ("hppa2.0"); break; + #endif + default: puts ("hppa1.0"); break; + } + exit (0); + } +EOF + (CCOPTS="" $CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null) && HP_ARCH=`"$dummy"` + test -z "$HP_ARCH" && HP_ARCH=hppa + fi ;; + esac + if test "$HP_ARCH" = hppa2.0w + then + set_cc_for_build + + # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating + # 32-bit code. hppa64-hp-hpux* has the same kernel and a compiler + # generating 64-bit code. GNU and HP use different nomenclature: + # + # $ CC_FOR_BUILD=cc ./config.guess + # => hppa2.0w-hp-hpux11.23 + # $ CC_FOR_BUILD="cc +DA2.0w" ./config.guess + # => hppa64-hp-hpux11.23 + + if echo __LP64__ | (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | + grep -q __LP64__ + then + HP_ARCH=hppa2.0w + else + HP_ARCH=hppa64 + fi + fi + GUESS=$HP_ARCH-hp-hpux$HPUX_REV + ;; + ia64:HP-UX:*:*) + HPUX_REV=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*.[0B]*//'` + GUESS=ia64-hp-hpux$HPUX_REV + ;; + 3050*:HI-UX:*:*) + set_cc_for_build + sed 's/^ //' << EOF > "$dummy.c" + #include + int + main () + { + long cpu = sysconf (_SC_CPU_VERSION); + /* The order matters, because CPU_IS_HP_MC68K erroneously returns + true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct + results, however. */ + if (CPU_IS_PA_RISC (cpu)) + { + switch (cpu) + { + case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break; + case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break; + case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break; + default: puts ("hppa-hitachi-hiuxwe2"); break; + } + } + else if (CPU_IS_HP_MC68K (cpu)) + puts ("m68k-hitachi-hiuxwe2"); + else puts ("unknown-hitachi-hiuxwe2"); + exit (0); + } +EOF + $CC_FOR_BUILD -o "$dummy" "$dummy.c" && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + GUESS=unknown-hitachi-hiuxwe2 + ;; + 9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:*) + GUESS=hppa1.1-hp-bsd + ;; + 9000/8??:4.3bsd:*:*) + GUESS=hppa1.0-hp-bsd + ;; + *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*) + GUESS=hppa1.0-hp-mpeix + ;; + hp7??:OSF1:*:* | hp8?[79]:OSF1:*:*) + GUESS=hppa1.1-hp-osf + ;; + hp8??:OSF1:*:*) + GUESS=hppa1.0-hp-osf + ;; + i*86:OSF1:*:*) + if test -x /usr/sbin/sysversion ; then + GUESS=$UNAME_MACHINE-unknown-osf1mk + else + GUESS=$UNAME_MACHINE-unknown-osf1 + fi + ;; + parisc*:Lites*:*:*) + GUESS=hppa1.1-hp-lites + ;; + C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*) + GUESS=c1-convex-bsd + ;; + C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*) + if getsysinfo -f scalar_acc + then echo c32-convex-bsd + else echo c2-convex-bsd + fi + exit ;; + C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*) + GUESS=c34-convex-bsd + ;; + C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*) + GUESS=c38-convex-bsd + ;; + C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*) + GUESS=c4-convex-bsd + ;; + CRAY*Y-MP:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=ymp-cray-unicos$CRAY_REL + ;; + CRAY*[A-Z]90:*:*:*) + echo "$UNAME_MACHINE"-cray-unicos"$UNAME_RELEASE" \ + | sed -e 's/CRAY.*\([A-Z]90\)/\1/' \ + -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/ \ + -e 's/\.[^.]*$/.X/' + exit ;; + CRAY*TS:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=t90-cray-unicos$CRAY_REL + ;; + CRAY*T3E:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=alphaev5-cray-unicosmk$CRAY_REL + ;; + CRAY*SV1:*:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=sv1-cray-unicos$CRAY_REL + ;; + *:UNICOS/mp:*:*) + CRAY_REL=`echo "$UNAME_RELEASE" | sed -e 's/\.[^.]*$/.X/'` + GUESS=craynv-cray-unicosmp$CRAY_REL + ;; + F30[01]:UNIX_System_V:*:* | F700:UNIX_System_V:*:*) + FUJITSU_PROC=`uname -m | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz` + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | sed -e 's/ /_/'` + GUESS=${FUJITSU_PROC}-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + 5000:UNIX_System_V:4.*:*) + FUJITSU_SYS=`uname -p | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/\///'` + FUJITSU_REL=`echo "$UNAME_RELEASE" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz | sed -e 's/ /_/'` + GUESS=sparc-fujitsu-${FUJITSU_SYS}${FUJITSU_REL} + ;; + i*86:BSD/386:*:* | i*86:BSD/OS:*:* | *:Ascend\ Embedded/OS:*:*) + GUESS=$UNAME_MACHINE-pc-bsdi$UNAME_RELEASE + ;; + sparc*:BSD/OS:*:*) + GUESS=sparc-unknown-bsdi$UNAME_RELEASE + ;; + *:BSD/OS:*:*) + GUESS=$UNAME_MACHINE-unknown-bsdi$UNAME_RELEASE + ;; + arm:FreeBSD:*:*) + UNAME_PROCESSOR=`uname -p` + set_cc_for_build + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabi + else + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL-gnueabihf + fi + ;; + *:FreeBSD:*:*) + UNAME_PROCESSOR=`/usr/bin/uname -p` + case $UNAME_PROCESSOR in + amd64) + UNAME_PROCESSOR=x86_64 ;; + i386) + UNAME_PROCESSOR=i586 ;; + esac + FREEBSD_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_PROCESSOR-unknown-freebsd$FREEBSD_REL + ;; + i*:CYGWIN*:*) + GUESS=$UNAME_MACHINE-pc-cygwin + ;; + *:MINGW64*:*) + GUESS=$UNAME_MACHINE-pc-mingw64 + ;; + *:MINGW*:*) + GUESS=$UNAME_MACHINE-pc-mingw32 + ;; + *:MSYS*:*) + GUESS=$UNAME_MACHINE-pc-msys + ;; + i*:PW*:*) + GUESS=$UNAME_MACHINE-pc-pw32 + ;; + *:Interix*:*) + case $UNAME_MACHINE in + x86) + GUESS=i586-pc-interix$UNAME_RELEASE + ;; + authenticamd | genuineintel | EM64T) + GUESS=x86_64-unknown-interix$UNAME_RELEASE + ;; + IA64) + GUESS=ia64-unknown-interix$UNAME_RELEASE + ;; + esac ;; + i*:UWIN*:*) + GUESS=$UNAME_MACHINE-pc-uwin + ;; + amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) + GUESS=x86_64-pc-cygwin + ;; + prep*:SunOS:5.*:*) + SUN_REL=`echo "$UNAME_RELEASE" | sed -e 's/[^.]*//'` + GUESS=powerpcle-unknown-solaris2$SUN_REL + ;; + *:GNU:*:*) + # the GNU system + GNU_ARCH=`echo "$UNAME_MACHINE" | sed -e 's,[-/].*$,,'` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's,/.*$,,'` + GUESS=$GNU_ARCH-unknown-$LIBC$GNU_REL + ;; + *:GNU/*:*:*) + # other systems with GNU libc and userland + GNU_SYS=`echo "$UNAME_SYSTEM" | sed 's,^[^/]*/,,' | tr "[:upper:]" "[:lower:]"` + GNU_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-$GNU_SYS$GNU_REL-$LIBC + ;; + *:Minix:*:*) + GUESS=$UNAME_MACHINE-unknown-minix + ;; + aarch64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + alpha:Linux:*:*) + case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' /proc/cpuinfo 2>/dev/null` in + EV5) UNAME_MACHINE=alphaev5 ;; + EV56) UNAME_MACHINE=alphaev56 ;; + PCA56) UNAME_MACHINE=alphapca56 ;; + PCA57) UNAME_MACHINE=alphapca56 ;; + EV6) UNAME_MACHINE=alphaev6 ;; + EV67) UNAME_MACHINE=alphaev67 ;; + EV68*) UNAME_MACHINE=alphaev68 ;; + esac + objdump --private-headers /bin/sh | grep -q ld.so.1 + if test "$?" = 0 ; then LIBC=gnulibc1 ; fi + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arc:Linux:*:* | arceb:Linux:*:* | arc32:Linux:*:* | arc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + arm*:Linux:*:*) + set_cc_for_build + if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_EABI__ + then + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + else + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabi + else + GUESS=$UNAME_MACHINE-unknown-linux-${LIBC}eabihf + fi + fi + ;; + avr32*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + cris:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + crisv32:Linux:*:*) + GUESS=$UNAME_MACHINE-axis-linux-$LIBC + ;; + e2k:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + frv:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + hexagon:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:Linux:*:*) + GUESS=$UNAME_MACHINE-pc-linux-$LIBC + ;; + ia64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + k1om:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + loongarch32:Linux:*:* | loongarch64:Linux:*:* | loongarchx32:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m32r*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + m68*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + mips:Linux:*:* | mips64:Linux:*:*) + set_cc_for_build + IS_GLIBC=0 + test x"${LIBC}" = xgnu && IS_GLIBC=1 + sed 's/^ //' << EOF > "$dummy.c" + #undef CPU + #undef mips + #undef mipsel + #undef mips64 + #undef mips64el + #if ${IS_GLIBC} && defined(_ABI64) + LIBCABI=gnuabi64 + #else + #if ${IS_GLIBC} && defined(_ABIN32) + LIBCABI=gnuabin32 + #else + LIBCABI=${LIBC} + #endif + #endif + + #if ${IS_GLIBC} && defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa64r6 + #else + #if ${IS_GLIBC} && !defined(__mips64) && defined(__mips_isa_rev) && __mips_isa_rev>=6 + CPU=mipsisa32r6 + #else + #if defined(__mips64) + CPU=mips64 + #else + CPU=mips + #endif + #endif + #endif + + #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL) + MIPS_ENDIAN=el + #else + #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB) + MIPS_ENDIAN= + #else + MIPS_ENDIAN= + #endif + #endif +EOF + cc_set_vars=`$CC_FOR_BUILD -E "$dummy.c" 2>/dev/null | grep '^CPU\|^MIPS_ENDIAN\|^LIBCABI'` + eval "$cc_set_vars" + test "x$CPU" != x && { echo "$CPU${MIPS_ENDIAN}-unknown-linux-$LIBCABI"; exit; } + ;; + mips64el:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + openrisc*:Linux:*:*) + GUESS=or1k-unknown-linux-$LIBC + ;; + or32:Linux:*:* | or1k*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + padre:Linux:*:*) + GUESS=sparc-unknown-linux-$LIBC + ;; + parisc64:Linux:*:* | hppa64:Linux:*:*) + GUESS=hppa64-unknown-linux-$LIBC + ;; + parisc:Linux:*:* | hppa:Linux:*:*) + # Look for CPU level + case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in + PA7*) GUESS=hppa1.1-unknown-linux-$LIBC ;; + PA8*) GUESS=hppa2.0-unknown-linux-$LIBC ;; + *) GUESS=hppa-unknown-linux-$LIBC ;; + esac + ;; + ppc64:Linux:*:*) + GUESS=powerpc64-unknown-linux-$LIBC + ;; + ppc:Linux:*:*) + GUESS=powerpc-unknown-linux-$LIBC + ;; + ppc64le:Linux:*:*) + GUESS=powerpc64le-unknown-linux-$LIBC + ;; + ppcle:Linux:*:*) + GUESS=powerpcle-unknown-linux-$LIBC + ;; + riscv32:Linux:*:* | riscv32be:Linux:*:* | riscv64:Linux:*:* | riscv64be:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + s390:Linux:*:* | s390x:Linux:*:*) + GUESS=$UNAME_MACHINE-ibm-linux-$LIBC + ;; + sh64*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sh*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + sparc:Linux:*:* | sparc64:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + tile*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + vax:Linux:*:*) + GUESS=$UNAME_MACHINE-dec-linux-$LIBC + ;; + x86_64:Linux:*:*) + set_cc_for_build + LIBCABI=$LIBC + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __ILP32__'; echo IS_X32; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_X32 >/dev/null + then + LIBCABI=${LIBC}x32 + fi + fi + GUESS=$UNAME_MACHINE-pc-linux-$LIBCABI + ;; + xtensa*:Linux:*:*) + GUESS=$UNAME_MACHINE-unknown-linux-$LIBC + ;; + i*86:DYNIX/ptx:4*:*) + # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. + # earlier versions are messed up and put the nodename in both + # sysname and nodename. + GUESS=i386-sequent-sysv4 + ;; + i*86:UNIX_SV:4.2MP:2.*) + # Unixware is an offshoot of SVR4, but it has its own version + # number series starting with 2... + # I am not positive that other SVR4 systems won't match this, + # I just have to hope. -- rms. + # Use sysv4.2uw... so that sysv4* matches it. + GUESS=$UNAME_MACHINE-pc-sysv4.2uw$UNAME_VERSION + ;; + i*86:OS/2:*:*) + # If we were able to find `uname', then EMX Unix compatibility + # is probably installed. + GUESS=$UNAME_MACHINE-pc-os2-emx + ;; + i*86:XTS-300:*:STOP) + GUESS=$UNAME_MACHINE-unknown-stop + ;; + i*86:atheos:*:*) + GUESS=$UNAME_MACHINE-unknown-atheos + ;; + i*86:syllable:*:*) + GUESS=$UNAME_MACHINE-pc-syllable + ;; + i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.[02]*:*) + GUESS=i386-unknown-lynxos$UNAME_RELEASE + ;; + i*86:*DOS:*:*) + GUESS=$UNAME_MACHINE-pc-msdosdjgpp + ;; + i*86:*:4.*:*) + UNAME_REL=`echo "$UNAME_RELEASE" | sed 's/\/MP$//'` + if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then + GUESS=$UNAME_MACHINE-univel-sysv$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv$UNAME_REL + fi + ;; + i*86:*:5:[678]*) + # UnixWare 7.x, OpenUNIX and OpenServer 6. + case `/bin/uname -X | grep "^Machine"` in + *486*) UNAME_MACHINE=i486 ;; + *Pentium) UNAME_MACHINE=i586 ;; + *Pent*|*Celeron) UNAME_MACHINE=i686 ;; + esac + GUESS=$UNAME_MACHINE-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION} + ;; + i*86:*:3.2:*) + if test -f /usr/options/cb.name; then + UNAME_REL=`sed -n 's/.*Version //p' /dev/null >/dev/null ; then + UNAME_REL=`(/bin/uname -X|grep Release|sed -e 's/.*= //')` + (/bin/uname -X|grep i80486 >/dev/null) && UNAME_MACHINE=i486 + (/bin/uname -X|grep '^Machine.*Pentium' >/dev/null) \ + && UNAME_MACHINE=i586 + (/bin/uname -X|grep '^Machine.*Pent *II' >/dev/null) \ + && UNAME_MACHINE=i686 + (/bin/uname -X|grep '^Machine.*Pentium Pro' >/dev/null) \ + && UNAME_MACHINE=i686 + GUESS=$UNAME_MACHINE-pc-sco$UNAME_REL + else + GUESS=$UNAME_MACHINE-pc-sysv32 + fi + ;; + pc:*:*:*) + # Left here for compatibility: + # uname -m prints for DJGPP always 'pc', but it prints nothing about + # the processor, so we play safe by assuming i586. + # Note: whatever this is, it MUST be the same as what config.sub + # prints for the "djgpp" host, or else GDB configure will decide that + # this is a cross-build. + GUESS=i586-pc-msdosdjgpp + ;; + Intel:Mach:3*:*) + GUESS=i386-pc-mach3 + ;; + paragon:*:*:*) + GUESS=i860-intel-osf1 + ;; + i860:*:4.*:*) # i860-SVR4 + if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then + GUESS=i860-stardent-sysv$UNAME_RELEASE # Stardent Vistra i860-SVR4 + else # Add other i860-SVR4 vendors below as they are discovered. + GUESS=i860-unknown-sysv$UNAME_RELEASE # Unknown i860-SVR4 + fi + ;; + mini*:CTIX:SYS*5:*) + # "miniframe" + GUESS=m68010-convergent-sysv + ;; + mc68k:UNIX:SYSTEM5:3.51m) + GUESS=m68k-convergent-sysv + ;; + M680?0:D-NIX:5.3:*) + GUESS=m68k-diab-dnix + ;; + M68*:*:R3V[5678]*:*) + test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;; + 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0) + OS_REL='' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*) + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4; exit; } ;; + NCR*:*:4.2:* | MPRAS*:*:4.2:*) + OS_REL='.3' + test -r /etc/.relid \ + && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid` + /bin/uname -p 2>/dev/null | grep 86 >/dev/null \ + && { echo i486-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } + /bin/uname -p 2>/dev/null | /bin/grep pteron >/dev/null \ + && { echo i586-ncr-sysv4.3"$OS_REL"; exit; } ;; + m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*) + GUESS=m68k-unknown-lynxos$UNAME_RELEASE + ;; + mc68030:UNIX_System_V:4.*:*) + GUESS=m68k-atari-sysv4 + ;; + TSUNAMI:LynxOS:2.*:*) + GUESS=sparc-unknown-lynxos$UNAME_RELEASE + ;; + rs6000:LynxOS:2.*:*) + GUESS=rs6000-unknown-lynxos$UNAME_RELEASE + ;; + PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.[02]*:*) + GUESS=powerpc-unknown-lynxos$UNAME_RELEASE + ;; + SM[BE]S:UNIX_SV:*:*) + GUESS=mips-dde-sysv$UNAME_RELEASE + ;; + RM*:ReliantUNIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + RM*:SINIX-*:*:*) + GUESS=mips-sni-sysv4 + ;; + *:SINIX-*:*:*) + if uname -p 2>/dev/null >/dev/null ; then + UNAME_MACHINE=`(uname -p) 2>/dev/null` + GUESS=$UNAME_MACHINE-sni-sysv4 + else + GUESS=ns32k-sni-sysv + fi + ;; + PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort + # says + GUESS=i586-unisys-sysv4 + ;; + *:UNIX_System_V:4*:FTX*) + # From Gerald Hewes . + # How about differentiating between stratus architectures? -djm + GUESS=hppa1.1-stratus-sysv4 + ;; + *:*:*:FTX*) + # From seanf@swdc.stratus.com. + GUESS=i860-stratus-sysv4 + ;; + i*86:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=$UNAME_MACHINE-stratus-vos + ;; + *:VOS:*:*) + # From Paul.Green@stratus.com. + GUESS=hppa1.1-stratus-vos + ;; + mc68*:A/UX:*:*) + GUESS=m68k-apple-aux$UNAME_RELEASE + ;; + news*:NEWS-OS:6*:*) + GUESS=mips-sony-newsos6 + ;; + R[34]000:*System_V*:*:* | R4000:UNIX_SYSV:*:* | R*000:UNIX_SV:*:*) + if test -d /usr/nec; then + GUESS=mips-nec-sysv$UNAME_RELEASE + else + GUESS=mips-unknown-sysv$UNAME_RELEASE + fi + ;; + BeBox:BeOS:*:*) # BeOS running on hardware made by Be, PPC only. + GUESS=powerpc-be-beos + ;; + BeMac:BeOS:*:*) # BeOS running on Mac or Mac clone, PPC only. + GUESS=powerpc-apple-beos + ;; + BePC:BeOS:*:*) # BeOS running on Intel PC compatible. + GUESS=i586-pc-beos + ;; + BePC:Haiku:*:*) # Haiku running on Intel PC compatible. + GUESS=i586-pc-haiku + ;; + x86_64:Haiku:*:*) + GUESS=x86_64-unknown-haiku + ;; + SX-4:SUPER-UX:*:*) + GUESS=sx4-nec-superux$UNAME_RELEASE + ;; + SX-5:SUPER-UX:*:*) + GUESS=sx5-nec-superux$UNAME_RELEASE + ;; + SX-6:SUPER-UX:*:*) + GUESS=sx6-nec-superux$UNAME_RELEASE + ;; + SX-7:SUPER-UX:*:*) + GUESS=sx7-nec-superux$UNAME_RELEASE + ;; + SX-8:SUPER-UX:*:*) + GUESS=sx8-nec-superux$UNAME_RELEASE + ;; + SX-8R:SUPER-UX:*:*) + GUESS=sx8r-nec-superux$UNAME_RELEASE + ;; + SX-ACE:SUPER-UX:*:*) + GUESS=sxace-nec-superux$UNAME_RELEASE + ;; + Power*:Rhapsody:*:*) + GUESS=powerpc-apple-rhapsody$UNAME_RELEASE + ;; + *:Rhapsody:*:*) + GUESS=$UNAME_MACHINE-apple-rhapsody$UNAME_RELEASE + ;; + arm64:Darwin:*:*) + GUESS=aarch64-apple-darwin$UNAME_RELEASE + ;; + *:Darwin:*:*) + UNAME_PROCESSOR=`uname -p` + case $UNAME_PROCESSOR in + unknown) UNAME_PROCESSOR=powerpc ;; + esac + if command -v xcode-select > /dev/null 2> /dev/null && \ + ! xcode-select --print-path > /dev/null 2> /dev/null ; then + # Avoid executing cc if there is no toolchain installed as + # cc will be a stub that puts up a graphical alert + # prompting the user to install developer tools. + CC_FOR_BUILD=no_compiler_found + else + set_cc_for_build + fi + if test "$CC_FOR_BUILD" != no_compiler_found; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + # On 10.4-10.6 one might compile for PowerPC via gcc -arch ppc + if (echo '#ifdef __POWERPC__'; echo IS_PPC; echo '#endif') | \ + (CCOPTS="" $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_PPC >/dev/null + then + UNAME_PROCESSOR=powerpc + fi + elif test "$UNAME_PROCESSOR" = i386 ; then + # uname -m returns i386 or x86_64 + UNAME_PROCESSOR=$UNAME_MACHINE + fi + GUESS=$UNAME_PROCESSOR-apple-darwin$UNAME_RELEASE + ;; + *:procnto*:*:* | *:QNX:[0123456789]*:*) + UNAME_PROCESSOR=`uname -p` + if test "$UNAME_PROCESSOR" = x86; then + UNAME_PROCESSOR=i386 + UNAME_MACHINE=pc + fi + GUESS=$UNAME_PROCESSOR-$UNAME_MACHINE-nto-qnx$UNAME_RELEASE + ;; + *:QNX:*:4*) + GUESS=i386-pc-qnx + ;; + NEO-*:NONSTOP_KERNEL:*:*) + GUESS=neo-tandem-nsk$UNAME_RELEASE + ;; + NSE-*:NONSTOP_KERNEL:*:*) + GUESS=nse-tandem-nsk$UNAME_RELEASE + ;; + NSR-*:NONSTOP_KERNEL:*:*) + GUESS=nsr-tandem-nsk$UNAME_RELEASE + ;; + NSV-*:NONSTOP_KERNEL:*:*) + GUESS=nsv-tandem-nsk$UNAME_RELEASE + ;; + NSX-*:NONSTOP_KERNEL:*:*) + GUESS=nsx-tandem-nsk$UNAME_RELEASE + ;; + *:NonStop-UX:*:*) + GUESS=mips-compaq-nonstopux + ;; + BS2000:POSIX*:*:*) + GUESS=bs2000-siemens-sysv + ;; + DS/*:UNIX_System_V:*:*) + GUESS=$UNAME_MACHINE-$UNAME_SYSTEM-$UNAME_RELEASE + ;; + *:Plan9:*:*) + # "uname -m" is not consistent, so use $cputype instead. 386 + # is converted to i386 for consistency with other x86 + # operating systems. + if test "${cputype-}" = 386; then + UNAME_MACHINE=i386 + elif test "x${cputype-}" != x; then + UNAME_MACHINE=$cputype + fi + GUESS=$UNAME_MACHINE-unknown-plan9 + ;; + *:TOPS-10:*:*) + GUESS=pdp10-unknown-tops10 + ;; + *:TENEX:*:*) + GUESS=pdp10-unknown-tenex + ;; + KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*) + GUESS=pdp10-dec-tops20 + ;; + XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*) + GUESS=pdp10-xkl-tops20 + ;; + *:TOPS-20:*:*) + GUESS=pdp10-unknown-tops20 + ;; + *:ITS:*:*) + GUESS=pdp10-unknown-its + ;; + SEI:*:*:SEIUX) + GUESS=mips-sei-seiux$UNAME_RELEASE + ;; + *:DragonFly:*:*) + DRAGONFLY_REL=`echo "$UNAME_RELEASE" | sed -e 's/[-(].*//'` + GUESS=$UNAME_MACHINE-unknown-dragonfly$DRAGONFLY_REL + ;; + *:*VMS:*:*) + UNAME_MACHINE=`(uname -p) 2>/dev/null` + case $UNAME_MACHINE in + A*) GUESS=alpha-dec-vms ;; + I*) GUESS=ia64-dec-vms ;; + V*) GUESS=vax-dec-vms ;; + esac ;; + *:XENIX:*:SysV) + GUESS=i386-pc-xenix + ;; + i*86:skyos:*:*) + SKYOS_REL=`echo "$UNAME_RELEASE" | sed -e 's/ .*$//'` + GUESS=$UNAME_MACHINE-pc-skyos$SKYOS_REL + ;; + i*86:rdos:*:*) + GUESS=$UNAME_MACHINE-pc-rdos + ;; + *:AROS:*:*) + GUESS=$UNAME_MACHINE-unknown-aros + ;; + x86_64:VMkernel:*:*) + GUESS=$UNAME_MACHINE-unknown-esx + ;; + amd64:Isilon\ OneFS:*:*) + GUESS=x86_64-unknown-onefs + ;; + *:Unleashed:*:*) + GUESS=$UNAME_MACHINE-unknown-unleashed$UNAME_RELEASE + ;; +esac + +# Do we have a guess based on uname results? +if test "x$GUESS" != x; then + echo "$GUESS" + exit +fi + +# No uname command or uname output not recognized. +set_cc_for_build +cat > "$dummy.c" < +#include +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined (vax) || defined (__vax) || defined (__vax__) || defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#include +#if defined(_SIZE_T_) || defined(SIGLOST) +#include +#endif +#endif +#endif +main () +{ +#if defined (sony) +#if defined (MIPSEB) + /* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed, + I don't know.... */ + printf ("mips-sony-bsd\n"); exit (0); +#else +#include + printf ("m68k-sony-newsos%s\n", +#ifdef NEWSOS4 + "4" +#else + "" +#endif + ); exit (0); +#endif +#endif + +#if defined (NeXT) +#if !defined (__ARCHITECTURE__) +#define __ARCHITECTURE__ "m68k" +#endif + int version; + version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`; + if (version < 4) + printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version); + else + printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version); + exit (0); +#endif + +#if defined (MULTIMAX) || defined (n16) +#if defined (UMAXV) + printf ("ns32k-encore-sysv\n"); exit (0); +#else +#if defined (CMU) + printf ("ns32k-encore-mach\n"); exit (0); +#else + printf ("ns32k-encore-bsd\n"); exit (0); +#endif +#endif +#endif + +#if defined (__386BSD__) + printf ("i386-pc-bsd\n"); exit (0); +#endif + +#if defined (sequent) +#if defined (i386) + printf ("i386-sequent-dynix\n"); exit (0); +#endif +#if defined (ns32000) + printf ("ns32k-sequent-dynix\n"); exit (0); +#endif +#endif + +#if defined (_SEQUENT_) + struct utsname un; + + uname(&un); + if (strncmp(un.version, "V2", 2) == 0) { + printf ("i386-sequent-ptx2\n"); exit (0); + } + if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */ + printf ("i386-sequent-ptx1\n"); exit (0); + } + printf ("i386-sequent-ptx\n"); exit (0); +#endif + +#if defined (vax) +#if !defined (ultrix) +#include +#if defined (BSD) +#if BSD == 43 + printf ("vax-dec-bsd4.3\n"); exit (0); +#else +#if BSD == 199006 + printf ("vax-dec-bsd4.3reno\n"); exit (0); +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#endif +#else + printf ("vax-dec-bsd\n"); exit (0); +#endif +#else +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname un; + uname (&un); + printf ("vax-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("vax-dec-ultrix\n"); exit (0); +#endif +#endif +#endif +#if defined(ultrix) || defined(_ultrix) || defined(__ultrix) || defined(__ultrix__) +#if defined(mips) || defined(__mips) || defined(__mips__) || defined(MIPS) || defined(__MIPS__) +#if defined(_SIZE_T_) || defined(SIGLOST) + struct utsname *un; + uname (&un); + printf ("mips-dec-ultrix%s\n", un.release); exit (0); +#else + printf ("mips-dec-ultrix\n"); exit (0); +#endif +#endif +#endif + +#if defined (alliant) && defined (i860) + printf ("i860-alliant-bsd\n"); exit (0); +#endif + + exit (1); +} +EOF + +$CC_FOR_BUILD -o "$dummy" "$dummy.c" 2>/dev/null && SYSTEM_NAME=`"$dummy"` && + { echo "$SYSTEM_NAME"; exit; } + +# Apollos put the system type in the environment. +test -d /usr/apollo && { echo "$ISP-apollo-$SYSTYPE"; exit; } + +echo "$0: unable to guess system type" >&2 + +case $UNAME_MACHINE:$UNAME_SYSTEM in + mips:Linux | mips64:Linux) + # If we got here on MIPS GNU/Linux, output extra information. + cat >&2 <&2 <&2 </dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null` + +hostinfo = `(hostinfo) 2>/dev/null` +/bin/universe = `(/bin/universe) 2>/dev/null` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null` +/bin/arch = `(/bin/arch) 2>/dev/null` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null` + +UNAME_MACHINE = "$UNAME_MACHINE" +UNAME_RELEASE = "$UNAME_RELEASE" +UNAME_SYSTEM = "$UNAME_SYSTEM" +UNAME_VERSION = "$UNAME_VERSION" +EOF +fi + +exit 1 + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/deps/ncurses-6.3/config.sub b/deps/ncurses-6.3/config.sub new file mode 100755 index 0000000..d74fb6d --- /dev/null +++ b/deps/ncurses-6.3/config.sub @@ -0,0 +1,1884 @@ +#! /bin/sh +# Configuration validation subroutine script. +# Copyright 1992-2021 Free Software Foundation, Inc. + +# shellcheck disable=SC2006,SC2268 # see below for rationale + +timestamp='2021-08-14' + +# 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, see . +# +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). + + +# Please send patches to . +# +# Configuration subroutine to validate and canonicalize a configuration type. +# Supply the specified configuration type as an argument. +# If it is invalid, we print an error message on stderr and exit with code 1. +# Otherwise, we print the canonical config type on stdout and succeed. + +# You can get the latest version of this script from: +# https://git.savannah.gnu.org/cgit/config.git/plain/config.sub + +# This file is supposed to be the same for all GNU packages +# and recognize all the CPU types, system types and aliases +# that are meaningful with *any* GNU software. +# Each package is responsible for reporting which valid configurations +# it does not support. The user should be able to distinguish +# a failure to support a valid configuration from a meaningless +# configuration. + +# The goal of this file is to map all the various variations of a given +# machine specification into a single specification in the form: +# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM +# or in some cases, the newer four-part form: +# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM +# It is wrong to echo any other type of specification. + +# The "shellcheck disable" line above the timestamp inhibits complaints +# about features and limitations of the classic Bourne shell that were +# superseded or lifted in POSIX. However, this script identifies a wide +# variety of pre-POSIX systems that do not have POSIX shells at all, and +# even some reasonably current systems (Solaris 10 as case-in-point) still +# have a pre-POSIX /bin/sh. + +me=`echo "$0" | sed -e 's,.*/,,'` + +usage="\ +Usage: $0 [OPTION] CPU-MFR-OPSYS or ALIAS + +Canonicalize a configuration name. + +Options: + -h, --help print this help, then exit + -t, --time-stamp print date of last modification, then exit + -v, --version print version number, then exit + +Report bugs and patches to ." + +version="\ +GNU config.sub ($timestamp) + +Copyright 1992-2021 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." + +help=" +Try \`$me --help' for more information." + +# Parse command line +while test $# -gt 0 ; do + case $1 in + --time-stamp | --time* | -t ) + echo "$timestamp" ; exit ;; + --version | -v ) + echo "$version" ; exit ;; + --help | --h* | -h ) + echo "$usage"; exit ;; + -- ) # Stop option processing + shift; break ;; + - ) # Use stdin as input. + break ;; + -* ) + echo "$me: invalid option $1$help" >&2 + exit 1 ;; + + *local*) + # First pass through any local machine types. + echo "$1" + exit ;; + + * ) + break ;; + esac +done + +case $# in + 0) echo "$me: missing argument$help" >&2 + exit 1;; + 1) ;; + *) echo "$me: too many arguments$help" >&2 + exit 1;; +esac + +# Split fields of configuration type +# shellcheck disable=SC2162 +saved_IFS=$IFS +IFS="-" read field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + basic_os=$field3-$field4 + ;; + *-*-*) + # Ambiguous whether COMPANY is present, or skipped and KERNEL-OS is two + # 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*) + basic_machine=$field1 + basic_os=$maybe_os + ;; + android-linux) + basic_machine=$field1-unknown + basic_os=linux-android + ;; + *) + basic_machine=$field1-$field2 + basic_os=$field3 + ;; + esac + ;; + *-*) + # A lone config we happen to match not fitting any pattern + case $field1-$field2 in + decstation-3100) + basic_machine=mips-dec + basic_os= + ;; + *-*) + # Second component is usually, but not always the OS + case $field2 in + # Prevent following clause from handling this valid os + 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) + basic_machine=$field1-$field2 + basic_os= + ;; + *) + basic_machine=$field1 + basic_os=$field2 + ;; + esac + ;; + esac + ;; + *) + # Convert single-component short-hands not valid as part of + # multi-component configurations. + case $field1 in + 386bsd) + basic_machine=i386-pc + basic_os=bsd + ;; + a29khif) + basic_machine=a29k-amd + basic_os=udi + ;; + adobe68k) + basic_machine=m68010-adobe + basic_os=scout + ;; + alliant) + basic_machine=fx80-alliant + basic_os= + ;; + altos | altos3068) + basic_machine=m68k-altos + basic_os= + ;; + am29k) + basic_machine=a29k-none + basic_os=bsd + ;; + amdahl) + basic_machine=580-amdahl + basic_os=sysv + ;; + amiga) + basic_machine=m68k-unknown + basic_os= + ;; + amigaos | amigados) + basic_machine=m68k-unknown + basic_os=amigaos + ;; + amigaunix | amix) + basic_machine=m68k-unknown + basic_os=sysv4 + ;; + apollo68) + basic_machine=m68k-apollo + basic_os=sysv + ;; + apollo68bsd) + basic_machine=m68k-apollo + basic_os=bsd + ;; + aros) + basic_machine=i386-pc + basic_os=aros + ;; + aux) + basic_machine=m68k-apple + basic_os=aux + ;; + balance) + basic_machine=ns32k-sequent + basic_os=dynix + ;; + blackfin) + basic_machine=bfin-unknown + basic_os=linux + ;; + cegcc) + 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 + ;; + crds | unos) + basic_machine=m68k-crds + basic_os= + ;; + da30) + basic_machine=m68k-da30 + basic_os= + ;; + decstation | pmax | pmin | dec3100 | decstatn) + basic_machine=mips-dec + basic_os= + ;; + delta88) + basic_machine=m88k-motorola + basic_os=sysv3 + ;; + dicos) + basic_machine=i686-pc + basic_os=dicos + ;; + djgpp) + basic_machine=i586-pc + basic_os=msdosdjgpp + ;; + ebmon29k) + basic_machine=a29k-amd + basic_os=ebmon + ;; + es1800 | OSE68k | ose68k | ose | OSE) + basic_machine=m68k-ericsson + basic_os=ose + ;; + gmicro) + basic_machine=tron-gmicro + basic_os=sysv + ;; + go32) + basic_machine=i386-pc + basic_os=go32 + ;; + h8300hms) + basic_machine=h8300-hitachi + basic_os=hms + ;; + h8300xray) + basic_machine=h8300-hitachi + basic_os=xray + ;; + h8500hms) + basic_machine=h8500-hitachi + basic_os=hms + ;; + harris) + basic_machine=m88k-harris + basic_os=sysv3 + ;; + hp300 | hp300hpux) + basic_machine=m68k-hp + basic_os=hpux + ;; + hp300bsd) + basic_machine=m68k-hp + basic_os=bsd + ;; + hppaosf) + basic_machine=hppa1.1-hp + basic_os=osf + ;; + hppro) + basic_machine=hppa1.1-hp + basic_os=proelf + ;; + i386mach) + basic_machine=i386-mach + basic_os=mach + ;; + isi68 | isi) + basic_machine=m68k-isi + basic_os=sysv + ;; + m68knommu) + basic_machine=m68k-unknown + basic_os=linux + ;; + magnum | m3230) + basic_machine=mips-mips + basic_os=sysv + ;; + merlin) + basic_machine=ns32k-utek + basic_os=sysv + ;; + mingw64) + basic_machine=x86_64-pc + basic_os=mingw64 + ;; + mingw32) + basic_machine=i686-pc + basic_os=mingw32 + ;; + mingw32ce) + basic_machine=arm-unknown + basic_os=mingw32ce + ;; + monitor) + basic_machine=m68k-rom68k + basic_os=coff + ;; + morphos) + basic_machine=powerpc-unknown + basic_os=morphos + ;; + moxiebox) + basic_machine=moxie-unknown + basic_os=moxiebox + ;; + msdos) + basic_machine=i386-pc + basic_os=msdos + ;; + msys) + basic_machine=i686-pc + basic_os=msys + ;; + mvs) + basic_machine=i370-ibm + basic_os=mvs + ;; + nacl) + basic_machine=le32-unknown + basic_os=nacl + ;; + ncr3000) + basic_machine=i486-ncr + basic_os=sysv4 + ;; + netbsd386) + basic_machine=i386-pc + basic_os=netbsd + ;; + netwinder) + basic_machine=armv4l-rebel + basic_os=linux + ;; + news | news700 | news800 | news900) + basic_machine=m68k-sony + basic_os=newsos + ;; + news1000) + basic_machine=m68030-sony + basic_os=newsos + ;; + necv70) + basic_machine=v70-nec + basic_os=sysv + ;; + nh3000) + basic_machine=m68k-harris + basic_os=cxux + ;; + nh[45]000) + basic_machine=m88k-harris + basic_os=cxux + ;; + nindy960) + basic_machine=i960-intel + basic_os=nindy + ;; + mon960) + basic_machine=i960-intel + basic_os=mon960 + ;; + nonstopux) + basic_machine=mips-compaq + basic_os=nonstopux + ;; + os400) + basic_machine=powerpc-ibm + basic_os=os400 + ;; + OSE68000 | ose68000) + basic_machine=m68000-ericsson + basic_os=ose + ;; + os68k) + basic_machine=m68k-none + basic_os=os68k + ;; + paragon) + basic_machine=i860-intel + basic_os=osf + ;; + parisc) + basic_machine=hppa-unknown + basic_os=linux + ;; + psp) + basic_machine=mipsallegrexel-sony + basic_os=psp + ;; + pw32) + basic_machine=i586-unknown + basic_os=pw32 + ;; + rdos | rdos64) + basic_machine=x86_64-pc + basic_os=rdos + ;; + rdos32) + basic_machine=i386-pc + basic_os=rdos + ;; + rom68k) + basic_machine=m68k-rom68k + basic_os=coff + ;; + sa29200) + basic_machine=a29k-amd + basic_os=udi + ;; + sei) + basic_machine=mips-sei + basic_os=seiux + ;; + sequent) + basic_machine=i386-sequent + basic_os= + ;; + sps7) + basic_machine=m68k-bull + basic_os=sysv2 + ;; + st2000) + basic_machine=m68k-tandem + basic_os= + ;; + stratus) + basic_machine=i860-stratus + basic_os=sysv4 + ;; + sun2) + basic_machine=m68000-sun + basic_os= + ;; + sun2os3) + basic_machine=m68000-sun + basic_os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + basic_os=sunos4 + ;; + sun3) + basic_machine=m68k-sun + basic_os= + ;; + sun3os3) + basic_machine=m68k-sun + basic_os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + basic_os=sunos4 + ;; + sun4) + basic_machine=sparc-sun + basic_os= + ;; + sun4os3) + basic_machine=sparc-sun + basic_os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + basic_os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + basic_os=solaris2 + ;; + sun386 | sun386i | roadrunner) + basic_machine=i386-sun + basic_os= + ;; + sv1) + basic_machine=sv1-cray + basic_os=unicos + ;; + symmetry) + basic_machine=i386-sequent + basic_os=dynix + ;; + t3e) + basic_machine=alphaev5-cray + basic_os=unicos + ;; + t90) + basic_machine=t90-cray + basic_os=unicos + ;; + toad1) + basic_machine=pdp10-xkl + basic_os=tops20 + ;; + tpf) + basic_machine=s390x-ibm + basic_os=tpf + ;; + udi29k) + basic_machine=a29k-amd + basic_os=udi + ;; + ultra3) + basic_machine=a29k-nyu + basic_os=sym1 + ;; + v810 | necv810) + basic_machine=v810-nec + basic_os=none + ;; + vaxv) + basic_machine=vax-dec + basic_os=sysv + ;; + vms) + basic_machine=vax-dec + basic_os=vms + ;; + vsta) + basic_machine=i386-pc + basic_os=vsta + ;; + vxworks960) + basic_machine=i960-wrs + basic_os=vxworks + ;; + vxworks68) + basic_machine=m68k-wrs + basic_os=vxworks + ;; + vxworks29k) + basic_machine=a29k-wrs + basic_os=vxworks + ;; + xbox) + basic_machine=i686-pc + basic_os=mingw32 + ;; + ymp) + basic_machine=ymp-cray + basic_os=unicos + ;; + *) + basic_machine=$1 + basic_os= + ;; + esac + ;; +esac + +# Decode 1-component or ad-hoc basic machines +case $basic_machine in + # Here we handle the default manufacturer of certain CPU types. It is in + # some cases the only manufacturer, in others, it is the most popular. + w89k) + cpu=hppa1.1 + vendor=winbond + ;; + op50n) + cpu=hppa1.1 + vendor=oki + ;; + op60c) + cpu=hppa1.1 + vendor=oki + ;; + ibm*) + cpu=i370 + vendor=ibm + ;; + orion105) + cpu=clipper + vendor=highlevel + ;; + mac | mpw | mac-mpw) + cpu=m68k + vendor=apple + ;; + pmac | pmac-mpw) + cpu=powerpc + vendor=apple + ;; + + # Recognize the various machine names and aliases which stand + # for a CPU type and a company and sometimes even an OS. + 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc) + cpu=m68000 + vendor=att + ;; + 3b*) + cpu=we32k + vendor=att + ;; + bluegene*) + cpu=powerpc + vendor=ibm + basic_os=cnk + ;; + decsystem10* | dec10*) + cpu=pdp10 + vendor=dec + basic_os=tops10 + ;; + decsystem20* | dec20*) + cpu=pdp10 + vendor=dec + basic_os=tops20 + ;; + delta | 3300 | motorola-3300 | motorola-delta \ + | 3300-motorola | delta-motorola) + cpu=m68k + vendor=motorola + ;; + dpx2*) + cpu=m68k + vendor=bull + basic_os=sysv3 + ;; + encore | umax | mmax) + cpu=ns32k + vendor=encore + ;; + elxsi) + cpu=elxsi + vendor=elxsi + basic_os=${basic_os:-bsd} + ;; + fx2800) + cpu=i860 + vendor=alliant + ;; + genix) + cpu=ns32k + vendor=ns + ;; + h3050r* | hiux*) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + hp3k9[0-9][0-9] | hp9[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k2[0-9][0-9] | hp9k31[0-9]) + cpu=m68000 + vendor=hp + ;; + hp9k3[2-9][0-9]) + cpu=m68k + vendor=hp + ;; + hp9k6[0-9][0-9] | hp6[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + hp9k7[0-79][0-9] | hp7[0-79][0-9]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k78[0-9] | hp78[0-9]) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893) + # FIXME: really hppa2.0-hp + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][13679] | hp8[0-9][13679]) + cpu=hppa1.1 + vendor=hp + ;; + hp9k8[0-9][0-9] | hp8[0-9][0-9]) + cpu=hppa1.0 + vendor=hp + ;; + i*86v32) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv32 + ;; + i*86v4*) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv4 + ;; + i*86v) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=sysv + ;; + i*86sol2) + cpu=`echo "$1" | sed -e 's/86.*/86/'` + vendor=pc + basic_os=solaris2 + ;; + j90 | j90-cray) + cpu=j90 + vendor=cray + basic_os=${basic_os:-unicos} + ;; + iris | iris4d) + cpu=mips + vendor=sgi + case $basic_os in + irix*) + ;; + *) + basic_os=irix4 + ;; + esac + ;; + miniframe) + cpu=m68000 + vendor=convergent + ;; + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) + cpu=m68k + vendor=atari + basic_os=mint + ;; + news-3600 | risc-news) + cpu=mips + vendor=sony + basic_os=newsos + ;; + next | m*-next) + cpu=m68k + vendor=next + case $basic_os in + openstep*) + ;; + nextstep*) + ;; + ns2*) + basic_os=nextstep2 + ;; + *) + basic_os=nextstep3 + ;; + esac + ;; + np1) + cpu=np1 + vendor=gould + ;; + op50n-* | op60c-*) + cpu=hppa1.1 + vendor=oki + basic_os=proelf + ;; + pa-hitachi) + cpu=hppa1.1 + vendor=hitachi + basic_os=hiuxwe2 + ;; + pbd) + cpu=sparc + vendor=tti + ;; + pbb) + cpu=m68k + vendor=tti + ;; + pc532) + cpu=ns32k + vendor=pc532 + ;; + pn) + cpu=pn + vendor=gould + ;; + power) + cpu=power + vendor=ibm + ;; + ps2) + cpu=i386 + vendor=ibm + ;; + rm[46]00) + cpu=mips + vendor=siemens + ;; + rtpc | rtpc-*) + cpu=romp + vendor=ibm + ;; + sde) + cpu=mipsisa32 + vendor=sde + basic_os=${basic_os:-elf} + ;; + simso-wrs) + cpu=sparclite + vendor=wrs + basic_os=vxworks + ;; + tower | tower-32) + cpu=m68k + vendor=ncr + ;; + vpp*|vx|vx-*) + cpu=f301 + vendor=fujitsu + ;; + w65) + cpu=w65 + vendor=wdc + ;; + w89k-*) + cpu=hppa1.1 + vendor=winbond + basic_os=proelf + ;; + none) + cpu=none + vendor=none + ;; + leon|leon[3-9]) + cpu=sparc + vendor=$basic_machine + ;; + leon-*|leon[3-9]-*) + cpu=sparc + vendor=`echo "$basic_machine" | sed 's/-.*//'` + ;; + + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read cpu vendor <&2 + exit 1 + ;; + esac + ;; +esac + +# Here we canonicalize certain aliases for manufacturers. +case $vendor in + digital*) + vendor=dec + ;; + commodore*) + vendor=cbm + ;; + *) + ;; +esac + +# Decode manufacturer-specific aliases for certain operating systems. + +if test x$basic_os != x +then + +# First recognize some ad-hoc caes, or perhaps split kernel-os, or else just +# set os. +case $basic_os in + gnu/linux*) + kernel=linux + os=`echo "$basic_os" | sed -e 's|gnu/linux|gnu|'` + ;; + os2-emx) + kernel=os2 + os=`echo "$basic_os" | sed -e 's|os2-emx|emx|'` + ;; + nto-qnx*) + kernel=nto + os=`echo "$basic_os" | sed -e 's|nto-qnx|qnx|'` + ;; + *-*) + # shellcheck disable=SC2162 + saved_IFS=$IFS + IFS="-" read kernel os <&2 + exit 1 + ;; +esac + +# As a final step for OS-related things, validate the OS-kernel combination +# (given a valid OS), if there is a kernel. +case $kernel-$os in + linux-gnu* | linux-dietlibc* | linux-android* | linux-newlib* \ + | linux-musl* | linux-relibc* | linux-uclibc* ) + ;; + uclinux-uclibc* ) + ;; + -dietlibc* | -newlib* | -musl* | -relibc* | -uclibc* ) + # These are just libc implementations, not actual OSes, and thus + # require a kernel. + echo "Invalid configuration \`$1': libc \`$os' needs explicit kernel." 1>&2 + exit 1 + ;; + kfreebsd*-gnu* | kopensolaris*-gnu*) + ;; + vxworks-simlinux | vxworks-simwindows | vxworks-spe) + ;; + nto-qnx*) + ;; + os2-emx) + ;; + *-eabi* | *-gnueabi*) + ;; + -*) + # Blank kernel with real OS is always fine. + ;; + *-*) + echo "Invalid configuration \`$1': Kernel \`$kernel' not known to work with OS \`$os'." 1>&2 + exit 1 + ;; +esac + +# Here we handle the case where we know the os, and the CPU type, but not the +# manufacturer. We pick the logical manufacturer. +case $vendor in + unknown) + case $cpu-$os in + *-riscix*) + vendor=acorn + ;; + *-sunos*) + vendor=sun + ;; + *-cnk* | *-aix*) + vendor=ibm + ;; + *-beos*) + vendor=be + ;; + *-hpux*) + vendor=hp + ;; + *-mpeix*) + vendor=hp + ;; + *-hiux*) + vendor=hitachi + ;; + *-unos*) + vendor=crds + ;; + *-dgux*) + vendor=dg + ;; + *-luna*) + vendor=omron + ;; + *-genix*) + vendor=ns + ;; + *-clix*) + vendor=intergraph + ;; + *-mvs* | *-opened*) + vendor=ibm + ;; + *-os400*) + vendor=ibm + ;; + s390-* | s390x-*) + vendor=ibm + ;; + *-ptx*) + vendor=sequent + ;; + *-tpf*) + vendor=ibm + ;; + *-vxsim* | *-vxworks* | *-windiss*) + vendor=wrs + ;; + *-aux*) + vendor=apple + ;; + *-hms*) + vendor=hitachi + ;; + *-mpw* | *-macos*) + vendor=apple + ;; + *-*mint | *-mint[0-9]* | *-*MiNT | *-MiNT[0-9]*) + vendor=atari + ;; + *-vos*) + vendor=stratus + ;; + esac + ;; +esac + +echo "$cpu-$vendor-${kernel:+$kernel-}$os" +exit + +# Local variables: +# eval: (add-hook 'before-save-hook 'time-stamp) +# time-stamp-start: "timestamp='" +# time-stamp-format: "%:y-%02m-%02d" +# time-stamp-end: "'" +# End: diff --git a/deps/ncurses-6.3/configure b/deps/ncurses-6.3/configure new file mode 100755 index 0000000..421cf85 --- /dev/null +++ b/deps/ncurses-6.3/configure @@ -0,0 +1,30735 @@ +#! /bin/sh +# From configure.in Revision: 1.736 . +# Guess values for system-dependent variables and create Makefiles. +# Generated by Autoconf 2.52.20210509. +# +# Copyright 2003-2020,2021 Thomas E. Dickey +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset="unset" +else + as_unset="false" +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: "${ac_max_here_lines=38}" + +ac_unique_file="ncurses/base/lib_initscr.c" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#if HAVE_SYS_TYPES_H +# include +#endif +#if HAVE_SYS_STAT_H +# include +#endif +#if STDC_HEADERS +# include +# include +#else +# if HAVE_STDLIB_H +# include +# endif +#endif +#if HAVE_STRING_H +# if !STDC_HEADERS && HAVE_MEMORY_H +# include +# endif +# include +#endif +#if HAVE_STRINGS_H +# include +#endif +#if HAVE_INTTYPES_H +# include +#else +# if HAVE_STDINT_H +# include +# endif +#endif +#if HAVE_UNISTD_H +# include +#endif" + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${datarootdir}/info' +mandir='${datarootdir}/man' + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo "$ac_feature" | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo "$ac_feature" | sed 's/-/_/g'` + case "$ac_option" in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst \ + | --runs | --run | --ru) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* \ + | --runs=* | --run=* | --ru=*) + runstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo "$ac_package" | sed 's/-/_/g'` + case "$ac_option" in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo "$ac_package" | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export "$ac_envvar" ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option}" "${host_alias=$ac_option}" "${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo "$ac_prev" | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo "$ac_var"` + case "$ac_val" in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo "$ac_var"` + case "$ac_val" in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: should be removed in autoconf 3.0. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP +ac_env_CXX_set=${CXX+set} +ac_env_CXX_value=$CXX +ac_cv_env_CXX_set=${CXX+set} +ac_cv_env_CXX_value=$CXX +ac_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_env_CXXFLAGS_value=$CXXFLAGS +ac_cv_env_CXXFLAGS_set=${CXXFLAGS+set} +ac_cv_env_CXXFLAGS_value=$CXXFLAGS +ac_env_CXXCPP_set=${CXXCPP+set} +ac_env_CXXCPP_value=$CXXCPP +ac_cv_env_CXXCPP_set=${CXXCPP+set} +ac_cv_env_CXXCPP_value=$CXXCPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat < if you have libraries in a + nonstandard directory + CPPFLAGS C/C++ preprocessor flags, e.g. -I if you have + headers in a nonstandard directory + CPP C preprocessor + CXX C++ compiler command + CXXFLAGS C++ compiler flags + CXXCPP C++ preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +EOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue + cd "$ac_subdir" + # A "../" for each directory in /$ac_subdir. + ac_dots=`echo "$ac_subdir" | + sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir="$srcdir" ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_sub_srcdir="$srcdir/$ac_subdir" ;; + *) # Relative path. + ac_sub_srcdir="$ac_dots$srcdir/$ac_subdir" ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f "$ac_sub_srcdir/configure.gnu"; then + echo + $SHELL "$ac_sub_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_sub_srcdir/configure"; then + echo + $SHELL "$ac_sub_srcdir/configure" --help=recursive + elif test -f "$ac_sub_srcdir/configure.ac" || + test -f "$ac_sub_srcdir/configure.in"; then + echo + "$ac_configure" --help + else + echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if "$ac_init_version"; then + cat <<\EOF + +Copyright 2003-2020,2021 Thomas E. Dickey +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +EOF + exit 0 +fi +exec 5>config.log +cat >&5 </dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +PATH = $PATH + +_ASUNAME +} >&5 + +cat >&5 <\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + echo >&5 + echo "## ----------------- ##" >&5 + echo "## Cache variables. ##" >&5 + echo "## ----------------- ##" >&5 + echo >&5 + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} >&5 + sed "/^$/d" confdefs.h >conftest.log + if test -s conftest.log; then + echo >&5 + echo "## ------------ ##" >&5 + echo "## confdefs.h. ##" >&5 + echo "## ------------ ##" >&5 + echo >&5 + cat conftest.log >&5 + fi + (echo; echo) >&5 + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" >&5 + echo "$as_me: exit $exit_status" >&5 + rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' "$ac_signal" +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:1071: 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" + fi +done + +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:1082: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:1090: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case "$ac_old_set,$ac_new_set" in + set,) + { echo "$as_me:1106: 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:1110: 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:1116: 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:1118: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:1120: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. It doesn't matter if + # we pass some twice (in addition to the command line arguments). + if test "$ac_new_set" = set; then + case "$ac_new_val" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" + ;; + esac + fi +done +if "$ac_cache_corrupted"; then + { echo "$as_me:1139: 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:1141: 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 + +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" + +case `echo "testing\c" 2>/dev/null; echo 1,2,3`,`echo -n testing 2>/dev/null; echo 1,2,3` in + *c*,-n*) ECHO_N= + ECHO_C= # newlines do not sed ;-) only broken shells would use this case anyway + ECHO_T=' ' + ;; + *c*,* ) ECHO_N=-n + ECHO_C= + ECHO_T= + ;; + *) ECHO_N= + ECHO_C='\c' + ECHO_T= + ;; +esac +echo "#! $SHELL" >conftest.sh +echo "exit 0" >>conftest.sh +chmod +x conftest.sh +if { (echo "$as_me:1170: PATH=\".;.\"; conftest.sh") >&5 + (PATH=".;."; conftest.sh) 2>&5 + ac_status=$? + echo "$as_me:1173: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + ac_path_separator=';' +else + ac_path_separator=: +fi +PATH_SEPARATOR="$ac_path_separator" +rm -f conftest.sh + +ac_config_headers="$ac_config_headers include/ncurses_cfg.h:include/ncurses_cfg.hin" + +top_builddir=`pwd` + +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:1190: 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 +else + if test -n "$GREP"; then + ac_cv_prog_GREP="$GREP" # 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_GREP="$ac_prog" +echo "$as_me:1205: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +GREP=$ac_cv_prog_GREP +if test -n "$GREP"; then + echo "$as_me:1213: result: $GREP" >&5 +echo "${ECHO_T}$GREP" >&6 +else + echo "$as_me:1216: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$GREP" && break +done +test -n "$GREP" || GREP=": " + +echo "$as_me:1224: 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 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + for ac_prog in gegrep egrep +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:1236: 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 +else + case $EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_EGREP="$EGREP" # 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_EGREP="$ac_dir/$ac_word" + echo "$as_me:1253: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +EGREP=$ac_cv_path_EGREP + +if test -n "$EGREP"; then + echo "$as_me:1264: result: $EGREP" >&5 +echo "${ECHO_T}$EGREP" >&6 +else + echo "$as_me:1267: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$EGREP" && break +done +test -n "$EGREP" || EGREP=": " + + test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:1275: error: cannot find workable egrep" >&5 +echo "$as_me: error: cannot find workable egrep" >&2;} + { (exit 1); exit 1; }; } + fi +fi +echo "$as_me:1280: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6 + EGREP="$ac_cv_path_EGREP" + +NCURSES_MAJOR="`${EGREP-egrep} '^NCURSES_MAJOR[ ]*=' "$srcdir/dist.mk" | sed -e 's/^[^0-9]*//'`" +NCURSES_MINOR="`${EGREP-egrep} '^NCURSES_MINOR[ ]*=' "$srcdir/dist.mk" | sed -e 's/^[^0-9]*//'`" +NCURSES_PATCH="`${EGREP-egrep} '^NCURSES_PATCH[ ]*=' "$srcdir/dist.mk" | sed -e 's/^[^0-9]*//'`" +cf_cv_abi_version=${NCURSES_MAJOR} +cf_cv_rel_version=${NCURSES_MAJOR}.${NCURSES_MINOR} +cf_cv_timestamp=`date` +echo "$as_me:1290: result: Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&5 +echo "${ECHO_T}Configuring NCURSES $cf_cv_rel_version ABI $cf_cv_abi_version ($cf_cv_timestamp)" >&6 + +if test -f "$srcdir/VERSION" ; then + echo "$as_me:1294: 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... + cf_field1=`sed -e '2,$d' "$srcdir/VERSION" |cut -f1` + cf_field2=`sed -e '2,$d' "$srcdir/VERSION" |cut -f2` + cf_field3=`sed -e '2,$d' "$srcdir/VERSION" |cut -f3` + + # this is how CF_BUNDLED_INTL uses $VERSION: + VERSION="$cf_field1" + + VERSION_MAJOR=`echo "$cf_field2" | sed -e 's/\..*//'` + test -z "$VERSION_MAJOR" && { { echo "$as_me:1306: 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:1311: error: missing minor-version" >&5 +echo "$as_me: error: missing minor-version" >&2;} + { (exit 1); exit 1; }; } + + echo "$as_me:1315: result: ${VERSION_MAJOR}.${VERSION_MINOR}" >&5 +echo "${ECHO_T}${VERSION_MAJOR}.${VERSION_MINOR}" >&6 + + echo "$as_me:1318: 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:1323: 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:1330: 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:1335: result: $VERSION_PATCH" >&5 +echo "${ECHO_T}$VERSION_PATCH" >&6 +else + { { echo "$as_me:1338: error: did not find $srcdir/VERSION" >&5 +echo "$as_me: error: did not find $srcdir/VERSION" >&2;} + { (exit 1); exit 1; }; } +fi + +# show the actual data that we have for versions: +test -n "$verbose" && echo " ABI VERSION $VERSION" 1>&6 + +echo "${as_me:-configure}:1346: testing ABI VERSION $VERSION ..." 1>&5 + +test -n "$verbose" && echo " VERSION_MAJOR $VERSION_MAJOR" 1>&6 + +echo "${as_me:-configure}:1350: testing VERSION_MAJOR $VERSION_MAJOR ..." 1>&5 + +test -n "$verbose" && echo " VERSION_MINOR $VERSION_MINOR" 1>&6 + +echo "${as_me:-configure}:1354: testing VERSION_MINOR $VERSION_MINOR ..." 1>&5 + +test -n "$verbose" && echo " VERSION_PATCH $VERSION_PATCH" 1>&6 + +echo "${as_me:-configure}:1358: testing VERSION_PATCH $VERSION_PATCH ..." 1>&5 + + cf_PACKAGE=NCURSES + PACKAGE=ncurses + +cat >>confdefs.h <>confdefs.h <>confdefs.h <&5 +echo "$as_me: WARNING: overriding release version $cf_cv_rel_version to $withval" >&2;} + cf_cv_rel_version=$withval +fi; + + NCURSES_MAJOR=`echo "$cf_cv_rel_version" | sed -e 's/\..*//'` + NCURSES_MINOR=`echo "$cf_cv_rel_version" | sed -e 's/^[^.]*//' -e 's/^\.//' -e 's/\..*//'` + +if test -n "$NCURSES_MAJOR" ; then + case $NCURSES_MAJOR in + ([0-9]*) + ;; + (*) + { { echo "$as_me:1395: 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:1401: error: Release major-version value is empty" >&5 +echo "$as_me: error: Release major-version value is empty" >&2;} + { (exit 1); exit 1; }; } +fi + +if test -n "$NCURSES_MINOR" ; then + case $NCURSES_MINOR in + ([0-9]*) + ;; + (*) + { { echo "$as_me:1411: 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:1417: error: Release minor-version value is empty" >&5 +echo "$as_me: error: Release minor-version value is empty" >&2;} + { (exit 1); exit 1; }; } +fi + +test -z "$cf_cv_abi_version" && cf_cv_abi_version=0 + +# Check whether --with-abi-version or --without-abi-version was given. +if test "${with_abi_version+set}" = set; then + withval="$with_abi_version" + + if test "x$cf_cv_abi_version" != "x$withval" + then + { echo "$as_me:1430: 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.*) + cf_cv_rel_version=$withval.0 + ;; + (6.*) + cf_cv_rel_version=$withval.9 # FIXME: should be 10 as of 6.0 release + ;; + esac + fi + cf_cv_abi_version=$withval +fi; + +if test -n "$cf_cv_abi_version" ; then + case $cf_cv_abi_version in + ([0-9]*) + ;; + (*) + { { echo "$as_me:1449: 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:1455: error: ABI version value is empty" >&5 +echo "$as_me: error: ABI version value is empty" >&2;} + { (exit 1); exit 1; }; } +fi + +if test "x$cf_cv_abi_version" != "x$with_abi_version" +then + case "$cf_cv_rel_version" in + (5.*) + cf_cv_rel_version=$with_abi_version.0 + ;; + esac +fi + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:1486: 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 +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +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:1496: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:1500: 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 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:1509: 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:1513: 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:1518: 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:1525: 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 +else + ac_cv_host_alias=$host_alias +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:1534: 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:1539: 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/'` +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:1547: 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 +else + ac_cv_target_alias=$target_alias +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:1556: 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:1561: 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/'` +target_vendor=`echo "$ac_cv_target" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +target_os=`echo "$ac_cv_target" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + +# The aliases save the names the user supplied, while $host etc. +# will get canonicalized. +test -n "$target_alias" && + test "$program_prefix$program_suffix$program_transform_name" = \ + NONENONEs,x,x, && + program_prefix=${target_alias}- + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && +cat >>confdefs.h <&6 +else + cf_cv_system_name="$system_name" +fi + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && echo "$as_me:1593: 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:1597: 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:1599: 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 + +# 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:1607: 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 + +fi; + +### Save the given $CFLAGS to allow user-override. +cf_user_CFLAGS="$CFLAGS" + +### Default install-location +echo "$as_me:1618: 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 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + for ac_prog in gfgrep fgrep +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:1630: 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 +else + case $FGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_FGREP="$FGREP" # 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_FGREP="$ac_dir/$ac_word" + echo "$as_me:1647: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +FGREP=$ac_cv_path_FGREP + +if test -n "$FGREP"; then + echo "$as_me:1658: result: $FGREP" >&5 +echo "${ECHO_T}$FGREP" >&6 +else + echo "$as_me:1661: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$FGREP" && break +done +test -n "$FGREP" || FGREP=": " + + test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:1669: error: cannot find workable fgrep" >&5 +echo "$as_me: error: cannot find workable fgrep" >&2;} + { (exit 1); exit 1; }; } + fi +fi +echo "$as_me:1674: result: $ac_cv_path_FGREP" >&5 +echo "${ECHO_T}$ac_cv_path_FGREP" >&6 + FGREP="$ac_cv_path_FGREP" + +echo "$as_me:1678: 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 + # non-vendor systems don't have a conflict + (openbsd*|freebsd*|mirbsd*|linux*|cygwin*|msys*|k*bsd*-gnu|mingw*) + prefix=/usr + ;; + (*) prefix=$ac_default_prefix + ;; + esac +fi +echo "$as_me:1690: result: $prefix" >&5 +echo "${ECHO_T}$prefix" >&6 + +if test "x$prefix" = "xNONE" ; then +echo "$as_me:1694: 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 \ + "$includedir" \ + "$includedir/ncurses" \ + "$prefix/include" \ + "$prefix/include/ncurses" \ + /usr/local/include \ + /usr/local/include/ncurses \ + /usr/include \ + /usr/include/ncurses +do + cf_dir=`eval echo "$cf_symbol"` + 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>&6 + break + fi + fi + test -n "$verbose" && echo " tested $cf_dir" 1>&6 +done +echo "$as_me:1717: result: $includedir" >&5 +echo "${ECHO_T}$includedir" >&6 +fi + +### Defaults for ncurses ABI + +case x$cf_cv_abi_version in +(x[6789]) + cf_dft_ext_colors=yes + cf_dft_ext_const=yes + cf_dft_ext_mouse=yes + cf_dft_ext_putwin=yes + cf_dft_ext_spfuncs=yes + cf_dft_filter_syms=yes + cf_dft_chtype=uint32_t + cf_dft_mmask_t=uint32_t + cf_dft_interop=yes + cf_dft_tparm_arg=intptr_t + cf_dft_with_lp64=yes + ;; +(*) + cf_dft_ext_colors=no + cf_dft_ext_const=no + cf_dft_ext_mouse=no + cf_dft_ext_putwin=no + cf_dft_ext_spfuncs=no + cf_dft_filter_syms=no + cf_dft_chtype=auto + cf_dft_mmask_t=auto + cf_dft_interop=no + cf_dft_tparm_arg=long + cf_dft_with_lp64=no + ;; +esac + +### Checks for programs. + +# Check whether --with-ada or --without-ada was given. +if test "${with_ada+set}" = set; then + withval="$with_ada" + cf_with_ada=$withval +else + cf_with_ada=yes +fi; + +if test "x$cf_with_ada" = xyes +then + cf_prog_cc="gnatgcc gcc cc" +else + cf_prog_cc="gcc cc" +fi + +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" +if test -n "$ac_tool_prefix"; then + for ac_prog in $cf_prog_cc + 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:1780: 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 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$ac_prog" +echo "$as_me:1795: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1803: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1806: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in $cf_prog_cc +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:1819: 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 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="$ac_prog" +echo "$as_me:1834: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1842: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1845: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +test -z "$CC" && { { echo "$as_me:1855: 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:1860:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo "$2"` +{ (eval echo "$as_me:1863: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:1866: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:1868: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:1871: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:1873: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:1876: \$? = $ac_status" >&5 + (exit "$ac_status"); } + +cat >"conftest.$ac_ext" <<_ACEOF +#line 1880 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +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:1896: 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:1899: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1902: \$? = $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 +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +{ { echo "$as_me:1925: 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:1931: 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:1936: 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:1942: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1945: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1952: 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;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:1960: 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:1967: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1969: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1972: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1974: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1977: \$? = $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 +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:1993: 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:1999: 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:2005: 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 2011 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:2023: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2026: \$? = $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 + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +{ { echo "$as_me:2038: 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:2045: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:2049: 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 2055 "configure" +#include "confdefs.h" + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2070: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2073: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2076: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2079: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_compiler_gnu=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:2091: 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:2097: 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 2103 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2115: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2118: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2121: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2124: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_prog_cc_g=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:2134: 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 +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >"conftest.$ac_ext" <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2161: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2164: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2167: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2170: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 2182 "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2195: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2198: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2201: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2204: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +continue +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 2214 "configure" +#include "confdefs.h" +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2226: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2229: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2232: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2235: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +rm -rf conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo "$ac_declaration" >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +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" + +GCC_VERSION=none +if test "$GCC" = yes ; then + echo "$as_me:2265: 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/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + echo "$as_me:2269: result: $GCC_VERSION" >&5 +echo "${ECHO_T}$GCC_VERSION" >&6 +fi + +INTEL_COMPILER=no + +if test "$GCC" = yes ; then + case "$host_os" in + (linux*|gnu*) + echo "$as_me:2278: 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 2283 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __INTEL_COMPILER +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2300: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2303: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2306: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2309: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + INTEL_COMPILER=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:2320: result: $INTEL_COMPILER" >&5 +echo "${ECHO_T}$INTEL_COMPILER" >&6 + ;; + esac +fi + +CLANG_COMPILER=no + +if test "$GCC" = yes ; then + echo "$as_me:2329: 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 2333 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __clang__ +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2350: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2353: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2356: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2359: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + CLANG_COMPILER=yes + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:2369: result: $CLANG_COMPILER" >&5 +echo "${ECHO_T}$CLANG_COMPILER" >&6 +fi + +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:2378: 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:2385: 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:2389: 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:2396: 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 2401 "configure" +#include "confdefs.h" + + #include +int +main (void) +{ + + printf("hello!\\n"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:2415: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:2418: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:2421: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2424: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_clang_optok=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_clang_optok=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:2435: 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}:2441: testing adding option $cf_clang_opt ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_clang_opt" + + fi + done +fi + +echo "$as_me:2450: 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 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >"conftest.$ac_ext" <<_ACEOF +#line 2458 "configure" +#include "confdefs.h" +#include +#include +#include +#include +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main (void) +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2507: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2510: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2513: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2516: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" +done +rm -f "conftest.$ac_ext" "conftest.$ac_objext" +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:2533: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:2536: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# This should have been defined by AC_PROG_CC +: "${CC:=cc}" + +echo "$as_me:2544: checking \$CFLAGS variable" >&5 +echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6 +case "x$CFLAGS" in +(*-[IUD]*) + echo "$as_me:2548: result: broken" >&5 +echo "${ECHO_T}broken" >&6 + { echo "$as_me:2550: 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= + for cf_arg in $cf_flags + do + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_arg +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 + + done + ;; +(*) + echo "$as_me:2658: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + ;; +esac + +echo "$as_me:2663: checking \$CC variable" >&5 +echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6 +case "$CC" in +(*[\ \ ]-*) + echo "$as_me:2667: result: broken" >&5 +echo "${ECHO_T}broken" >&6 + { echo "$as_me:2669: 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/[ ]*[ ]-[^ ].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[IUDfgOW]*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_arg +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 + + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6 + +echo "${as_me:-configure}:2786: testing resulting CC: '$CC' ..." 1>&5 + + test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6 + +echo "${as_me:-configure}:2790: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5 + + test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6 + +echo "${as_me:-configure}:2794: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5 + + ;; +(*) + echo "$as_me:2798: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + ;; +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:2809: 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 + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 2830 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:2835: \"$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:2841: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 2864 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:2868: \"$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:2874: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:2911: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 2921 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:2926: \"$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:2932: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 2955 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:2959: \"$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:2965: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + : +else + { { echo "$as_me:2993: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +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" + +if test $ac_cv_c_compiler_gnu = yes; then + echo "$as_me:3006: 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 3013 "configure" +#include "confdefs.h" +#include +int Autoconf = TIOCGETP; +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +else + ac_cv_prog_gcc_traditional=no +fi +rm -rf conftest* + + if test $ac_cv_prog_gcc_traditional = no; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 3028 "configure" +#include "confdefs.h" +#include +int Autoconf = TCGETA; +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "$ac_pattern" >/dev/null 2>&1; then + ac_cv_prog_gcc_traditional=yes +fi +rm -rf conftest* + + fi +fi +echo "$as_me:3041: 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:3048: 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 +else + +cat > conftest.$ac_ext <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3066: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + test -f conftest2.$ac_objext && { (eval echo "$as_me:3068: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3071: \$? = $ac_status" >&5 + (exit "$ac_status"); }; +then + eval cf_cv_prog_CC_c_o=yes +else + eval cf_cv_prog_CC_c_o=no +fi +rm -rf ./conftest* + +fi +if test "$cf_cv_prog_CC_c_o" = yes; then + echo "$as_me:3082: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:3085: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +if test "$cross_compiling" = yes ; then + LDCONFIG=: +else + case "$cf_cv_system_name" in + (dragonfly*|mirbsd*|freebsd*) + test -z "$LDCONFIG" && LDCONFIG="/sbin/ldconfig -R" + ;; + (*) 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:3099: 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 +else + case $LDCONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_LDCONFIG="$LDCONFIG" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$LDPATH" +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_LDCONFIG="$ac_dir/$ac_word" + echo "$as_me:3116: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +LDCONFIG=$ac_cv_path_LDCONFIG + +if test -n "$LDCONFIG"; then + echo "$as_me:3127: result: $LDCONFIG" >&5 +echo "${ECHO_T}$LDCONFIG" >&6 +else + echo "$as_me:3130: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + ;; + esac +fi + +echo "$as_me:3138: 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. +if test "${with_cxx+set}" = set; then + withval="$with_cxx" + cf_with_cxx=$withval +else + cf_with_cxx=yes +fi; +echo "$as_me:3148: result: $cf_with_cxx" >&5 +echo "${ECHO_T}$cf_with_cxx" >&6 +if test "X$cf_with_cxx" = Xno ; then + CXX="" + GXX="" +else + # with autoconf 2.13, we can change the error to a warning: + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" +if test -n "$ac_tool_prefix"; then + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC + 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:3166: 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 +else + if test -n "$CXX"; then + ac_cv_prog_CXX="$CXX" # 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_CXX="$ac_tool_prefix$ac_prog" +echo "$as_me:3181: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CXX=$ac_cv_prog_CXX +if test -n "$CXX"; then + echo "$as_me:3189: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:3192: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CXX" && break + done +fi +if test -z "$CXX"; then + ac_ct_CXX=$CXX + for ac_prog in $CCC g++ c++ gpp aCC CC cxx cc++ cl FCC KCC RCC xlC_r xlC +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:3205: 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 +else + if test -n "$ac_ct_CXX"; then + ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # 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_ac_ct_CXX="$ac_prog" +echo "$as_me:3220: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CXX=$ac_cv_prog_ac_ct_CXX +if test -n "$ac_ct_CXX"; then + echo "$as_me:3228: result: $ac_ct_CXX" >&5 +echo "${ECHO_T}$ac_ct_CXX" >&6 +else + echo "$as_me:3231: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CXX" && break +done +test -n "$ac_ct_CXX" || ac_ct_CXX="g++" + + CXX=$ac_ct_CXX +fi + +# Provide some information about the compiler. +echo "$as_me:3243:" \ + "checking for C++ compiler version" >&5 +ac_compiler=`set X $ac_compile; echo $2` +{ (eval echo "$as_me:3246: \"$ac_compiler --version &5\"") >&5 + (eval $ac_compiler --version &5) 2>&5 + ac_status=$? + echo "$as_me:3249: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:3251: \"$ac_compiler -v &5\"") >&5 + (eval $ac_compiler -v &5) 2>&5 + ac_status=$? + echo "$as_me:3254: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:3256: \"$ac_compiler -V &5\"") >&5 + (eval $ac_compiler -V &5) 2>&5 + ac_status=$? + echo "$as_me:3259: \$? = $ac_status" >&5 + (exit "$ac_status"); } + +echo "$as_me:3262: 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 3268 "configure" +#include "confdefs.h" + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:3283: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3286: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:3289: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3292: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_compiler_gnu=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +ac_cv_cxx_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:3304: 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:3310: 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 3316 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:3328: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3331: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:3334: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3337: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_prog_cxx_g=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_prog_cxx_g=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:3347: 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 +elif test $ac_cv_prog_cxx_g = yes; then + if test "$GXX" = yes; then + CXXFLAGS="-g -O2" + else + CXXFLAGS="-g" + fi +else + if test "$GXX" = yes; then + CXXFLAGS="-O2" + else + CXXFLAGS= + fi +fi +for ac_declaration in \ + ''\ + '#include ' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 3374 "configure" +#include "confdefs.h" +#include +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:3387: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3390: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:3393: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3396: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +continue +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 3406 "configure" +#include "confdefs.h" +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:3418: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3421: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:3424: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3427: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +rm -rf conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo "$ac_declaration" >>confdefs.h + echo '#endif' >>confdefs.h +fi + +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" + + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + + if test "x$cf_with_cxx" != xno + then + # Several of the C++ configurations do not work, particularly when + # cross-compiling (20140913 -TD) + echo "$as_me:3461: checking if $CXX works" >&5 +echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6 + + save_CPPFLAGS="$CPPFLAGS" + eval cf_includedir=${includedir} + CPPFLAGS="$CPPFLAGS -I${cf_includedir}" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 3469 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ + + printf("Hello world!\n") + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:3486: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3489: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:3492: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3495: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cxx_works=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cxx_works=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$save_CPPFLAGS" + + echo "$as_me:3506: result: $cf_cxx_works" >&5 +echo "${ECHO_T}$cf_cxx_works" >&6 + if test "x$cf_cxx_works" = xno + then + { echo "$as_me:3510: 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 + fi + 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" + + # autoconf 2.5x removed the error (hardcoding it to g++, or just blank) + 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:3526: 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 +else + case $CXX in + [\\/]* | ?:[\\/]*) + ac_cv_path_CXX="$CXX" # 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_CXX="$ac_dir/$ac_word" + echo "$as_me:3543: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +CXX=$ac_cv_path_CXX + +if test -n "$CXX"; then + echo "$as_me:3554: result: $CXX" >&5 +echo "${ECHO_T}$CXX" >&6 +else + echo "$as_me:3557: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + fi + case "x$CXX" in + (x|xg++) + { echo "$as_me:3564: 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=""; + ;; + esac +fi + +GXX_VERSION=none +if test "$GXX" = yes; then + echo "$as_me:3573: checking version of ${CXX:-g++}" >&5 +echo $ECHO_N "checking version of ${CXX:-g++}... $ECHO_C" >&6 + GXX_VERSION="`${CXX:-g++} --version| sed -e '2,$d' -e 's/^.*(GCC) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" + if test -z "$GXX_VERSION" + then + GXX_VERSION=unknown + GXX=no + fi + echo "$as_me:3581: result: $GXX_VERSION" >&5 +echo "${ECHO_T}$GXX_VERSION" >&6 +fi + +case "$GXX_VERSION" in +([1-9][0-9].*) + ;; +(1.*|2.[0-6]*) + { echo "$as_me:3589: WARNING: templates do not work" >&5 +echo "$as_me: WARNING: templates do not work" >&2;} + ;; +esac + +echo "$as_me:3594: 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. +if test "${with_cxx_binding+set}" = set; then + withval="$with_cxx_binding" + cf_with_cxx_binding=$withval +else + cf_with_cxx_binding=$cf_with_cxx +fi; +echo "$as_me:3604: result: $cf_with_cxx_binding" >&5 +echo "${ECHO_T}$cf_with_cxx_binding" >&6 + +echo "$as_me:3607: 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:3609: result: $cf_with_ada" >&5 +echo "${ECHO_T}$cf_with_ada" >&6 + +echo "$as_me:3612: 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. +if test "${enable_db_install+set}" = set; then + enableval="$enable_db_install" + cf_with_db_install=$enableval +else + cf_with_db_install=yes +fi; +echo "$as_me:3622: result: $cf_with_db_install" >&5 +echo "${ECHO_T}$cf_with_db_install" >&6 + +echo "$as_me:3625: 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. +if test "${with_manpages+set}" = set; then + withval="$with_manpages" + cf_with_manpages=$withval +else + cf_with_manpages=yes +fi; +echo "$as_me:3635: result: $cf_with_manpages" >&5 +echo "${ECHO_T}$cf_with_manpages" >&6 + +echo "$as_me:3638: 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. +if test "${with_progs+set}" = set; then + withval="$with_progs" + cf_with_progs=$withval +else + cf_with_progs=yes +fi; +echo "$as_me:3648: result: $cf_with_progs" >&5 +echo "${ECHO_T}$cf_with_progs" >&6 + +if test -f "$srcdir/tack/tack.h" ; then + if test "x$cross_compiling" = xyes ; then + test -n "$verbose" && echo " ignoring tack because we are cross-compiling" 1>&6 + +echo "${as_me:-configure}:3655: testing ignoring tack because we are cross-compiling ..." 1>&5 + + cf_with_tack=no + else + echo "$as_me:3659: checking if you want to build the tack program" >&5 +echo $ECHO_N "checking if you want to build the tack program... $ECHO_C" >&6 + +# Check whether --with-tack or --without-tack was given. +if test "${with_tack+set}" = set; then + withval="$with_tack" + cf_with_tack=$withval +else + cf_with_tack=$cf_with_progs +fi; + echo "$as_me:3669: result: $cf_with_tack" >&5 +echo "${ECHO_T}$cf_with_tack" >&6 + fi +else + cf_with_tack=no +fi + +echo "$as_me:3676: 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. +if test "${with_tests+set}" = set; then + withval="$with_tests" + cf_with_tests=$withval +else + cf_with_tests=yes +fi; +echo "$as_me:3686: result: $cf_with_tests" >&5 +echo "${ECHO_T}$cf_with_tests" >&6 + +echo "$as_me:3689: 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. +if test "${with_curses_h+set}" = set; then + withval="$with_curses_h" + with_curses_h=$withval +else + with_curses_h=yes +fi; +echo "$as_me:3699: result: $with_curses_h" >&5 +echo "${ECHO_T}$with_curses_h" >&6 + +modules_to_build="ncurses" +test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs" +test "X$cf_with_tack" != Xno && modules_to_build="$modules_to_build tack" +modules_to_build="$modules_to_build panel menu form" + +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +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:3724: 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 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog" +echo "$as_me:3739: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:3747: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:3750: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +test -z "$AWK" && { { echo "$as_me:3757: error: No awk program found" >&5 +echo "$as_me: error: No awk program found" >&2;} + { (exit 1); exit 1; }; } + +# 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: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# 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:3773: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_IFS=$IFS; IFS=$ac_path_separator + for ac_dir in $PATH; do + IFS=$ac_save_IFS + # Account for people who put trailing slashes in PATH elements. + case $ac_dir/ in + / | ./ | .// | /cC/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if $as_executable_p "$ac_dir/$ac_prog"; then + if test $ac_prog = install && + grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:3822: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +case $INSTALL in +(/*) + ;; +(*) + cf_dir=`echo "$INSTALL" | sed -e 's%/[^/]*$%%'` + test -z "$cf_dir" && cf_dir=. + INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`" + ;; +esac + +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:3847: 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 +else + if test -n "$LINT"; then + ac_cv_prog_LINT="$LINT" # 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_LINT="$ac_prog" +echo "$as_me:3862: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LINT=$ac_cv_prog_LINT +if test -n "$LINT"; then + echo "$as_me:3870: result: $LINT" >&5 +echo "${ECHO_T}$LINT" >&6 +else + echo "$as_me:3873: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LINT" && break +done + +case "x$LINT" in +(xcppcheck|x*/cppcheck) + test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" + ;; +esac + +echo "$as_me:3886: 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:3890: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:3893: result: no, using $LN_S" >&5 +echo "${ECHO_T}no, using $LN_S" >&6 +fi + +echo "$as_me:3897: 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 +echo >conf$$.dst +echo first >conf$$.src +if $LN_S -f conf$$.src conf$$.dst 2>/dev/null; then + cf_prog_ln_sf=yes +else + cf_prog_ln_sf=no +fi +rm -f conf$$.dst conf$$src +echo "$as_me:3909: 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:3914: 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 +else + ac_cv_sys_long_file_names=yes +# Test for long file names in all the places we know might matter: +# . the current directory, where building will happen +# $prefix/lib where we will be installing things +# $exec_prefix/lib likewise +# eval it to expand exec_prefix. +# $TMPDIR if set, where it might want to write temporary files +# if $TMPDIR is not set: +# /tmp where it might want to write temporary files +# /var/tmp likewise +# /usr/tmp likewise +if test -n "$TMPDIR" && test -d "$TMPDIR" && test -w "$TMPDIR"; then + ac_tmpdirs=$TMPDIR +else + ac_tmpdirs='/tmp /var/tmp /usr/tmp' +fi +for ac_dir in . $ac_tmpdirs `eval echo "$prefix/lib" "$exec_prefix/lib"` ; do + test -d "$ac_dir" || continue + test -w "$ac_dir" || continue # It is less confusing to not echo anything here. + ac_xdir=$ac_dir/cf$$ + (umask 077 && mkdir "$ac_xdir" 2>/dev/null) || continue + ac_tf1=$ac_xdir/conftest9012345 + ac_tf2=$ac_xdir/conftest9012346 + (echo 1 >"$ac_tf1") 2>/dev/null + (echo 2 >"$ac_tf2") 2>/dev/null + ac_val=`cat "$ac_tf1" 2>/dev/null` + if test ! -f "$ac_tf1" || test "$ac_val" != 1; then + ac_cv_sys_long_file_names=no + rm -rf "$ac_xdir" 2>/dev/null + break + fi + rm -rf "$ac_xdir" 2>/dev/null +done +fi +echo "$as_me:3953: 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 + +cat >>confdefs.h <<\EOF +#define HAVE_LONG_FILE_NAMES 1 +EOF + +fi + +# Provide for renaming "ncurses5-config" to "ncurses5X-config", etc., in case +# of package conflict. +cf_config_suffix= + +# Check whether --with-config-suffix or --without-config-suffix was given. +if test "${with_config_suffix+set}" = set; then + withval="$with_config_suffix" + case "x$withval" in + (xyes|xno) + { echo "$as_me:3972: 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" + ;; + esac +fi; + +# If we find pkg-config, check if we should install the ".pc" files. + +echo "$as_me:3982: 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. +if test "${with_pkg_config+set}" = set; then + withval="$with_pkg_config" + cf_pkg_config=$withval +else + cf_pkg_config=yes +fi; +echo "$as_me:3992: result: $cf_pkg_config" >&5 +echo "${ECHO_T}$cf_pkg_config" >&6 + +case "$cf_pkg_config" in +(no) + PKG_CONFIG=none + ;; +(yes) + +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:4004: 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 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:4021: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG + +if test -n "$PKG_CONFIG"; then + echo "$as_me:4032: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6 +else + echo "$as_me:4035: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:4044: 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 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:4061: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="none" + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG + +if test -n "$ac_pt_PKG_CONFIG"; then + echo "$as_me:4073: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 +else + echo "$as_me:4076: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + PKG_CONFIG=$ac_pt_PKG_CONFIG +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$PKG_CONFIG" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval PKG_CONFIG="$PKG_CONFIG" + case ".$PKG_CONFIG" in + (.NONE/*) + PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:4119: 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:4126: 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:4132: checking for pkg-config library directory" >&5 +echo $ECHO_N "checking for pkg-config library directory... $ECHO_C" >&6 + ;; +(*) + echo "$as_me:4136: checking for $PKG_CONFIG library directory" >&5 +echo $ECHO_N "checking for $PKG_CONFIG library directory... $ECHO_C" >&6 + ;; +esac + +cf_search_path=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/:/ /g' -e 's,^[ ]*,,'` + +# Check whether --with-pkg-config-libdir or --without-pkg-config-libdir was given. +if test "${with_pkg_config_libdir+set}" = set; then + withval="$with_pkg_config_libdir" + cf_search_path=$withval +else + test "x$PKG_CONFIG" != xnone && cf_search_path=yes +fi; + +case x$cf_search_path in +(x/*) + ;; +(xyes) + cf_search_path= + test -n "$verbose" && echo " auto..." 1>&6 + +echo "${as_me:-configure}:4158: testing auto... ..." 1>&5 + + # Look for the library directory using the same prefix as the executable + echo "$as_me:4161: checking for search-list" >&5 +echo $ECHO_N "checking for search-list... $ECHO_C" >&6 + if test "x$PKG_CONFIG" = xnone + then + cf_path=$prefix + else + cf_path=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'` + cf_search_path=` + "$PKG_CONFIG" --debug --exists no-such-package 2>&1 | awk "\ +/^Scanning directory #[1-9][0-9]* '.*'$/{ \ + sub(\"^[^']*'\",\"\"); \ + sub(\"'.*\",\"\"); \ + printf \" %s\", \\$0; } \ +/trying path:/{ + sub(\"^.* trying path: \",\"\"); + sub(\" for no-such-package.*$\",\"\"); + printf \" %s\", \\$0; +} +{ next; } \ +"` + fi + + if test -z "$cf_search_path" + then + # If you don't like using the default architecture, you have to specify + # the intended library directory and corresponding compiler/linker + # options. + # + # This case allows for Debian's 2014-flavor of multiarch, along with + # the most common variations before that point. Some other variants + # spell the directory differently, e.g., "pkg-config", and put it in + # unusual places. + # + # pkg-config has always been poorly standardized, which is ironic... + case x`(arch) 2>/dev/null` in + (*64) + cf_test_path="\ + $cf_path/lib/*64-linux-gnu \ + $cf_path/share \ + $cf_path/lib64 \ + $cf_path/lib32 \ + $cf_path/lib" + ;; + (*) + cf_test_path="\ + $cf_path/lib/*-linux-gnu \ + $cf_path/share \ + $cf_path/lib32 \ + $cf_path/lib \ + $cf_path/libdata" + ;; + esac + for cf_config in $cf_test_path + do + test -d "$cf_config/pkgconfig" && cf_search_path="$cf_search_path $cf_config/pkgconfig" + done + fi + + echo "$as_me:4219: result: $cf_search_path" >&5 +echo "${ECHO_T}$cf_search_path" >&6 + + ;; +(*) + ;; +esac + +echo "$as_me:4227: 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 +do + if test -d "$cf_config" + then + cf_pkg_config_path=$cf_config + break + fi +done +echo "$as_me:4238: result: $cf_pkg_config_path" >&5 +echo "${ECHO_T}$cf_pkg_config_path" >&6 + +if test "x$cf_pkg_config_path" != xnone ; then + # limit this to the first directory found + PKG_CONFIG_LIBDIR="$cf_pkg_config_path" +fi + +if test "x$PKG_CONFIG" != xnone +then + echo "$as_me:4248: 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:4251: checking if we should install .pc files" >&5 +echo $ECHO_N "checking if we should install .pc files... $ECHO_C" >&6 +fi + +# Check whether --enable-pc-files or --disable-pc-files was given. +if test "${enable_pc_files+set}" = set; then + enableval="$enable_pc_files" + enable_pc_files=$enableval +else + enable_pc_files=no +fi; +echo "$as_me:4262: result: $enable_pc_files" >&5 +echo "${ECHO_T}$enable_pc_files" >&6 + +if test "x$enable_pc_files" != xno +then + MAKE_PC_FILES= + case "x$PKG_CONFIG_LIBDIR" in + (xno|xnone|xyes) + { echo "$as_me:4270: WARNING: no PKG_CONFIG_LIBDIR was found" >&5 +echo "$as_me: WARNING: no PKG_CONFIG_LIBDIR was found" >&2;} + ;; + (*) + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$PKG_CONFIG_LIBDIR" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval PKG_CONFIG_LIBDIR="$PKG_CONFIG_LIBDIR" + case ".$PKG_CONFIG_LIBDIR" in + (.NONE/*) + PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:4300: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&5 +echo "$as_me: error: expected a pathname, not \"$PKG_CONFIG_LIBDIR\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + ;; + esac +else + MAKE_PC_FILES="#" +fi + +if test -z "$MAKE_PC_FILES" +then + echo "$as_me:4314: checking for suffix to add to pc-files" >&5 +echo $ECHO_N "checking for suffix to add to pc-files... $ECHO_C" >&6 + +# Check whether --with-pc-suffix or --without-pc-suffix was given. +if test "${with_pc_suffix+set}" = set; then + withval="$with_pc_suffix" + case "x$withval" in + (xyes|xno) + PC_MODULE_SUFFIX= + ;; + (*) PC_MODULE_SUFFIX="$withval" + ;; + esac +fi; + test -z "$PC_MODULE_SUFFIX" && PC_MODULE_SUFFIX=none + echo "$as_me:4329: result: $PC_MODULE_SUFFIX" >&5 +echo "${ECHO_T}$PC_MODULE_SUFFIX" >&6 + test "$PC_MODULE_SUFFIX" = none && PC_MODULE_SUFFIX= + +fi + +echo "$as_me:4335: 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. +if test "${enable_mixed_case+set}" = set; then + enableval="$enable_mixed_case" + enable_mixedcase=$enableval +else + enable_mixedcase=auto +fi; +echo "$as_me:4345: result: $enable_mixedcase" >&5 +echo "${ECHO_T}$enable_mixedcase" >&6 +if test "$enable_mixedcase" = "auto" ; then + +echo "$as_me:4349: 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 +else + +if test "$cross_compiling" = yes ; then + case "$target_alias" in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +fi + +fi +echo "$as_me:4376: result: $cf_cv_mixedcase" >&5 +echo "${ECHO_T}$cf_cv_mixedcase" >&6 +test "$cf_cv_mixedcase" = yes && +cat >>confdefs.h <<\EOF +#define MIXEDCASE_FILENAMES 1 +EOF + +else + cf_cv_mixedcase=$enable_mixedcase + if test "x$enable_mixedcase" = "xyes" ; then + +cat >>confdefs.h <<\EOF +#define MIXEDCASE_FILENAMES 1 +EOF + + fi +fi + +# do this after mixed-case option (tags/TAGS is not as important as tic). +echo "$as_me:4395: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:4415: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:4419: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +echo "$as_me:4424: 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 +else + + rm -rf conftest* + ( + mkdir conftest || exit 1 + cd conftest + cat >makefile <<'CF_EOF' +.PHONY: always +DATA=0 +always: always.out + @echo "** making $@ $(DATA)" +once: once.out + @echo "** making $@ $(DATA)" +always.out: + @echo "** making $@ $(DATA)" + echo $(DATA) > $@ +once.out: + @echo "** making $@ $(DATA)" + echo $(DATA) > $@ +CF_EOF + for cf_data in 1 2 3 + do + ${MAKE:-make} always DATA=$cf_data + ${MAKE:-make} once DATA=$cf_data + ${MAKE:-make} -t always once + if test -f always ; then + echo "no (case 1)" > ../conftest.tmp + elif test ! -f always.out ; then + echo "no (case 2)" > ../conftest.tmp + elif test ! -f once.out ; then + echo "no (case 3)" > ../conftest.tmp + elif ! cmp -s always.out once.out ; then + echo "no (case 4)" > ../conftest.tmp + diff always.out once.out + else + cf_check="`cat always.out`" + if test "x$cf_check" != "x$cf_data" ; then + echo "no (case 5)" > ../conftest.tmp + else + echo yes > ../conftest.tmp + rm -f ./*.out + continue + fi + fi + break + done + ) >&5 2>&1 + cf_cv_make_PHONY="`cat conftest.tmp`" + rm -rf conftest* + +fi +echo "$as_me:4479: result: $cf_cv_make_PHONY" >&5 +echo "${ECHO_T}$cf_cv_make_PHONY" >&6 +MAKE_NO_PHONY="#" +MAKE_PHONY="#" +test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY= +test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY= + +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:4490: 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 +else + if test -n "$CTAGS"; then + ac_cv_prog_CTAGS="$CTAGS" # 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_CTAGS="$ac_prog" +echo "$as_me:4505: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CTAGS=$ac_cv_prog_CTAGS +if test -n "$CTAGS"; then + echo "$as_me:4513: result: $CTAGS" >&5 +echo "${ECHO_T}$CTAGS" >&6 +else + echo "$as_me:4516: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CTAGS" && break +done + +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:4527: 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 +else + if test -n "$ETAGS"; then + ac_cv_prog_ETAGS="$ETAGS" # 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_ETAGS="$ac_prog" +echo "$as_me:4542: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ETAGS=$ac_cv_prog_ETAGS +if test -n "$ETAGS"; then + echo "$as_me:4550: result: $ETAGS" >&5 +echo "${ECHO_T}$ETAGS" >&6 +else + echo "$as_me:4553: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ETAGS" && break +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:4562: 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 +else + if test -n "$MAKE_LOWER_TAGS"; then + ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # 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_MAKE_LOWER_TAGS="yes" +echo "$as_me:4577: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no" +fi +fi +MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS +if test -n "$MAKE_LOWER_TAGS"; then + echo "$as_me:4586: result: $MAKE_LOWER_TAGS" >&5 +echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 +else + echo "$as_me:4589: 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:4596: 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 +else + if test -n "$MAKE_UPPER_TAGS"; then + ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # 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_MAKE_UPPER_TAGS="yes" +echo "$as_me:4611: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no" +fi +fi +MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS +if test -n "$MAKE_UPPER_TAGS"; then + echo "$as_me:4620: result: $MAKE_UPPER_TAGS" >&5 +echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 +else + echo "$as_me:4623: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +echo "$as_me:4643: 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 </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}:4673: testing given option \"$cf_option\",no match \"$cf_result\" ..." 1>&5 + + ;; + esac + done + rm -f cf_makeflags.tmp + +fi +echo "$as_me:4681: 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:4687: 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 +else + if test -n "$RANLIB"; then + ac_cv_prog_RANLIB="$RANLIB" # 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_RANLIB="${ac_tool_prefix}ranlib" +echo "$as_me:4702: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +RANLIB=$ac_cv_prog_RANLIB +if test -n "$RANLIB"; then + echo "$as_me:4710: result: $RANLIB" >&5 +echo "${ECHO_T}$RANLIB" >&6 +else + echo "$as_me:4713: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:4722: 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 +else + if test -n "$ac_ct_RANLIB"; then + ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # 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_ac_ct_RANLIB="ranlib" +echo "$as_me:4737: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_RANLIB" && ac_cv_prog_ac_ct_RANLIB="':'" +fi +fi +ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +if test -n "$ac_ct_RANLIB"; then + echo "$as_me:4746: result: $ac_ct_RANLIB" >&5 +echo "${ECHO_T}$ac_ct_RANLIB" >&6 +else + echo "$as_me:4749: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + RANLIB=$ac_ct_RANLIB +else + RANLIB="$ac_cv_prog_RANLIB" +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:4761: 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 +else + if test -n "$LD"; then + ac_cv_prog_LD="$LD" # 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_LD="${ac_tool_prefix}ld" +echo "$as_me:4776: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LD=$ac_cv_prog_LD +if test -n "$LD"; then + echo "$as_me:4784: result: $LD" >&5 +echo "${ECHO_T}$LD" >&6 +else + echo "$as_me:4787: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:4796: 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 +else + if test -n "$ac_ct_LD"; then + ac_cv_prog_ac_ct_LD="$ac_ct_LD" # 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_ac_ct_LD="ld" +echo "$as_me:4811: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_LD" && ac_cv_prog_ac_ct_LD="ld" +fi +fi +ac_ct_LD=$ac_cv_prog_ac_ct_LD +if test -n "$ac_ct_LD"; then + echo "$as_me:4820: result: $ac_ct_LD" >&5 +echo "${ECHO_T}$ac_ct_LD" >&6 +else + echo "$as_me:4823: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + LD=$ac_ct_LD +else + LD="$ac_cv_prog_LD" +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:4835: 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 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" +echo "$as_me:4850: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:4858: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:4861: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:4870: 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 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" +echo "$as_me:4885: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:4894: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:4897: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +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:4909: 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 +else + if test -n "$NM"; then + ac_cv_prog_NM="$NM" # 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_NM="${ac_tool_prefix}nm" +echo "$as_me:4924: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NM=$ac_cv_prog_NM +if test -n "$NM"; then + echo "$as_me:4932: result: $NM" >&5 +echo "${ECHO_T}$NM" >&6 +else + echo "$as_me:4935: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:4944: 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 +else + if test -n "$ac_ct_NM"; then + ac_cv_prog_ac_ct_NM="$ac_ct_NM" # 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_ac_ct_NM="nm" +echo "$as_me:4959: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_NM" && ac_cv_prog_ac_ct_NM="nm" +fi +fi +ac_ct_NM=$ac_cv_prog_ac_ct_NM +if test -n "$ac_ct_NM"; then + echo "$as_me:4968: result: $ac_ct_NM" >&5 +echo "${ECHO_T}$ac_ct_NM" >&6 +else + echo "$as_me:4971: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + NM=$ac_ct_NM +else + NM="$ac_cv_prog_NM" +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:4983: 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 +else + if test -n "$AR"; then + ac_cv_prog_AR="$AR" # 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_AR="${ac_tool_prefix}ar" +echo "$as_me:4998: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AR=$ac_cv_prog_AR +if test -n "$AR"; then + echo "$as_me:5006: result: $AR" >&5 +echo "${ECHO_T}$AR" >&6 +else + echo "$as_me:5009: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:5018: 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 +else + if test -n "$ac_ct_AR"; then + ac_cv_prog_ac_ct_AR="$ac_ct_AR" # 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_ac_ct_AR="ar" +echo "$as_me:5033: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_ac_ct_AR" && ac_cv_prog_ac_ct_AR="ar" +fi +fi +ac_ct_AR=$ac_cv_prog_ac_ct_AR +if test -n "$ac_ct_AR"; then + echo "$as_me:5042: result: $ac_ct_AR" >&5 +echo "${ECHO_T}$ac_ct_AR" >&6 +else + echo "$as_me:5045: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + AR=$ac_ct_AR +else + AR="$ac_cv_prog_AR" +fi + +echo "$as_me:5054: 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 +else + + case "$cf_cv_system_name" in + (*-msvc*) + cf_cv_ar_flags='' + cat >mk_static_lib.sh <<-EOF + #!$SHELL + MSVC_BIN="$AR" + out="\$1" + shift + exec \$MSVC_BIN -out:"\$out" \$@ + EOF + chmod +x mk_static_lib.sh + AR=`pwd`/mk_static_lib.sh + ;; + (*) + cf_cv_ar_flags=unknown + for cf_ar_flags in -curvU -curv curv -crv crv -cqv cqv -rv rv + do + + # check if $ARFLAGS already contains this choice + if test "x$ARFLAGS" != "x" ; then + cf_check_ar_flags=`echo "x$ARFLAGS" | sed -e "s/$cf_ar_flags\$//" -e "s/$cf_ar_flags / /"` + if test "x$ARFLAGS" != "$cf_check_ar_flags" ; then + cf_cv_ar_flags= + break + fi + fi + + rm -f "conftest.$ac_cv_objext" + rm -f conftest.a + + cat >"conftest.$ac_ext" <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5097: \$? = $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 + if test -f conftest.a ; then + cf_cv_ar_flags="$cf_ar_flags" + break + fi + else + test -n "$verbose" && echo " cannot compile test-program" 1>&6 + +echo "${as_me:-configure}:5108: testing cannot compile test-program ..." 1>&5 + + break + fi + done + rm -f conftest.a "conftest.$ac_ext" "conftest.$ac_cv_objext" + ;; + esac + +fi +echo "$as_me:5118: result: $cf_cv_ar_flags" >&5 +echo "${ECHO_T}$cf_cv_ar_flags" >&6 + +if test -n "$ARFLAGS" ; then + if test -n "$cf_cv_ar_flags" ; then + ARFLAGS="$ARFLAGS $cf_cv_ar_flags" + fi +else + ARFLAGS=$cf_cv_ar_flags +fi + +echo "$as_me:5129: checking if you have specified an install-prefix" >&5 +echo $ECHO_N "checking if you have specified an install-prefix... $ECHO_C" >&6 + +# Check whether --with-install-prefix or --without-install-prefix was given. +if test "${with_install_prefix+set}" = set; then + withval="$with_install_prefix" + case "x$withval" in + (xyes|xno) + ;; + (*) DESTDIR="$withval" + ;; + esac +fi; +echo "$as_me:5142: result: $DESTDIR" >&5 +echo "${ECHO_T}$DESTDIR" >&6 + +############################################################################### + +# If we're cross-compiling, allow the user to override the tools and their +# options. The configure script is oriented toward identifying the host +# compiler, etc., but we need a build compiler to generate parts of the source. + +case "$cf_cv_system_name" in +(*-msvc*) + LDFLAGS="$LDFLAGS user32.lib" + export LDFLAGS + ;; +esac + +if test "$cross_compiling" = yes ; then + + # defaults that we might want to override + : ${BUILD_CFLAGS:=''} + : ${BUILD_CPPFLAGS:=''} + : ${BUILD_LDFLAGS:=''} + : ${BUILD_LIBS:=''} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} + +# Check whether --with-build-cc or --without-build-cc was given. +if test "${with_build_cc+set}" = set; then + withval="$with_build_cc" + BUILD_CC="$withval" +else + for ac_prog in gcc clang c99 c89 cc cl +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:5177: 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 +else + if test -n "$BUILD_CC"; then + ac_cv_prog_BUILD_CC="$BUILD_CC" # 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_BUILD_CC="$ac_prog" +echo "$as_me:5192: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +BUILD_CC=$ac_cv_prog_BUILD_CC +if test -n "$BUILD_CC"; then + echo "$as_me:5200: result: $BUILD_CC" >&5 +echo "${ECHO_T}$BUILD_CC" >&6 +else + echo "$as_me:5203: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$BUILD_CC" && break +done +test -n "$BUILD_CC" || BUILD_CC="none" + +fi; + echo "$as_me:5212: checking for native build C compiler" >&5 +echo $ECHO_N "checking for native build C compiler... $ECHO_C" >&6 + echo "$as_me:5214: result: $BUILD_CC" >&5 +echo "${ECHO_T}$BUILD_CC" >&6 + + echo "$as_me:5217: 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. +if test "${with_build_cpp+set}" = set; then + withval="$with_build_cpp" + BUILD_CPP="$withval" +else + BUILD_CPP='${BUILD_CC} -E' +fi; + echo "$as_me:5227: result: $BUILD_CPP" >&5 +echo "${ECHO_T}$BUILD_CPP" >&6 + + echo "$as_me:5230: 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. +if test "${with_build_cflags+set}" = set; then + withval="$with_build_cflags" + BUILD_CFLAGS="$withval" +fi; + echo "$as_me:5238: result: $BUILD_CFLAGS" >&5 +echo "${ECHO_T}$BUILD_CFLAGS" >&6 + + echo "$as_me:5241: 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. +if test "${with_build_cppflags+set}" = set; then + withval="$with_build_cppflags" + BUILD_CPPFLAGS="$withval" +fi; + echo "$as_me:5249: result: $BUILD_CPPFLAGS" >&5 +echo "${ECHO_T}$BUILD_CPPFLAGS" >&6 + + echo "$as_me:5252: 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. +if test "${with_build_ldflags+set}" = set; then + withval="$with_build_ldflags" + BUILD_LDFLAGS="$withval" +fi; + echo "$as_me:5260: result: $BUILD_LDFLAGS" >&5 +echo "${ECHO_T}$BUILD_LDFLAGS" >&6 + + echo "$as_me:5263: 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. +if test "${with_build_libs+set}" = set; then + withval="$with_build_libs" + BUILD_LIBS="$withval" +fi; + echo "$as_me:5271: result: $BUILD_LIBS" >&5 +echo "${ECHO_T}$BUILD_LIBS" >&6 + + # this assumes we're on Unix. + BUILD_EXEEXT= + BUILD_OBJEXT=o + + : ${BUILD_CC:='${CC}'} + + if { test "$BUILD_CC" = "$CC" || test "$BUILD_CC" = '${CC}'; } ; then + { { echo "$as_me:5281: 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;} + { (exit 1); exit 1; }; } + fi + +else + : ${BUILD_CC:='${CC}'} + : ${BUILD_CPP:='${CPP}'} + : ${BUILD_CFLAGS:='${CFLAGS}'} + : ${BUILD_CPPFLAGS:='${CPPFLAGS}'} + : ${BUILD_LDFLAGS:='${LDFLAGS}'} + : ${BUILD_LIBS:='${LIBS}'} + : ${BUILD_EXEEXT:='$x'} + : ${BUILD_OBJEXT:='o'} +fi + +############################################################################### + +### Options to allow the user to specify the set of libraries which are used. +### Use "--without-normal --with-shared" to allow the default model to be +### shared, for example. +cf_list_models="" + +echo "$as_me:5306: 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. +if test "${enable_libtool_version+set}" = set; then + enableval="$enable_libtool_version" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + cf_libtool_version=no + else + cf_libtool_version=yes + fi +else + enableval=yes + cf_libtool_version=yes + +fi; +echo "$as_me:5323: result: $cf_libtool_version" >&5 +echo "${ECHO_T}$cf_libtool_version" >&6 + +if test "$cf_libtool_version" = yes ; then + LIBTOOL_VERSION="-version-number" +else + LIBTOOL_VERSION="-version-info" + case "x$VERSION" in + (x) + { echo "$as_me:5332: 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}:5339: 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}:5346: testing ABI_VERSION: $ABI_VERSION ..." 1>&5 + + ;; + (*) + { echo "$as_me:5350: WARNING: unexpected VERSION value: $VERSION" >&5 +echo "$as_me: WARNING: unexpected VERSION value: $VERSION" >&2;} + ;; + esac +fi + +LIBTOOL= + +# common library maintenance symbols that are convenient for libtool scripts: +LIB_CREATE='${AR} -cr' +LIB_OBJECT='${OBJECTS}' +LIB_SUFFIX=.a +LIB_PREP="$RANLIB" + +# symbols used to prop libtool up to enable it to determine what it should be +# doing: +LIB_CLEAN= +LIB_COMPILE= +LIB_LINK='${CC}' +LIB_INSTALL= +LIB_UNINSTALL= + +echo "$as_me:5372: 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. +if test "${with_libtool+set}" = set; then + withval="$with_libtool" + with_libtool=$withval +else + with_libtool=no +fi; +echo "$as_me:5382: result: $with_libtool" >&5 +echo "${ECHO_T}$with_libtool" >&6 +if test "$with_libtool" != "no"; then + + if test "$with_libtool" != "yes" ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$with_libtool" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval with_libtool="$with_libtool" + case ".$with_libtool" in + (.NONE/*) + with_libtool=`echo "$with_libtool" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + with_libtool=`echo "$with_libtool" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:5413: error: expected a pathname, not \"$with_libtool\"" >&5 +echo "$as_me: error: expected a pathname, not \"$with_libtool\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + LIBTOOL=$with_libtool + else + if test -n "$ac_tool_prefix"; then + for ac_prog in libtool glibtool + 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:5426: 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 +else + if test -n "$LIBTOOL"; then + ac_cv_prog_LIBTOOL="$LIBTOOL" # 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_LIBTOOL="$ac_tool_prefix$ac_prog" +echo "$as_me:5441: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LIBTOOL=$ac_cv_prog_LIBTOOL +if test -n "$LIBTOOL"; then + echo "$as_me:5449: result: $LIBTOOL" >&5 +echo "${ECHO_T}$LIBTOOL" >&6 +else + echo "$as_me:5452: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LIBTOOL" && break + done +fi +if test -z "$LIBTOOL"; then + ac_ct_LIBTOOL=$LIBTOOL + for ac_prog in libtool glibtool +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:5465: 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 +else + if test -n "$ac_ct_LIBTOOL"; then + ac_cv_prog_ac_ct_LIBTOOL="$ac_ct_LIBTOOL" # 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_ac_ct_LIBTOOL="$ac_prog" +echo "$as_me:5480: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL +if test -n "$ac_ct_LIBTOOL"; then + echo "$as_me:5488: result: $ac_ct_LIBTOOL" >&5 +echo "${ECHO_T}$ac_ct_LIBTOOL" >&6 +else + echo "$as_me:5491: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_LIBTOOL" && break +done +test -n "$ac_ct_LIBTOOL" || ac_ct_LIBTOOL="none" + + LIBTOOL=$ac_ct_LIBTOOL +fi + +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.].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version + + if test -z "$cf_cv_libtool_version" && test "$LIBTOOL" = libtool + then + +unset ac_cv_prog_ac_ct_LIBTOOL +unset ac_ct_LIBTOOL +unset LIBTOOL + + if test -n "$ac_tool_prefix"; then + for ac_prog in glibtool + 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:5522: 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 +else + if test -n "$LIBTOOL"; then + ac_cv_prog_LIBTOOL="$LIBTOOL" # 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_LIBTOOL="$ac_tool_prefix$ac_prog" +echo "$as_me:5537: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LIBTOOL=$ac_cv_prog_LIBTOOL +if test -n "$LIBTOOL"; then + echo "$as_me:5545: result: $LIBTOOL" >&5 +echo "${ECHO_T}$LIBTOOL" >&6 +else + echo "$as_me:5548: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LIBTOOL" && break + done +fi +if test -z "$LIBTOOL"; then + ac_ct_LIBTOOL=$LIBTOOL + for ac_prog in glibtool +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:5561: 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 +else + if test -n "$ac_ct_LIBTOOL"; then + ac_cv_prog_ac_ct_LIBTOOL="$ac_ct_LIBTOOL" # 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_ac_ct_LIBTOOL="$ac_prog" +echo "$as_me:5576: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_LIBTOOL=$ac_cv_prog_ac_ct_LIBTOOL +if test -n "$ac_ct_LIBTOOL"; then + echo "$as_me:5584: result: $ac_ct_LIBTOOL" >&5 +echo "${ECHO_T}$ac_ct_LIBTOOL" >&6 +else + echo "$as_me:5587: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_LIBTOOL" && break +done +test -n "$ac_ct_LIBTOOL" || ac_ct_LIBTOOL="none" + + LIBTOOL=$ac_ct_LIBTOOL +fi + +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.].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version + + fi + fi + if test -z "$LIBTOOL" ; then + { { echo "$as_me:5609: 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_SUFFIX=.la + LIB_CLEAN='${LIBTOOL} --mode=clean' + LIB_COMPILE='${LIBTOOL} --mode=compile' + LIB_LINK='${LIBTOOL} --mode=link ${CC} ${LIBTOOL_OPTS}' + LIB_INSTALL='${LIBTOOL} --mode=install' + LIB_UNINSTALL='${LIBTOOL} --mode=uninstall' + LIB_PREP=: + +if test -n "$LIBTOOL" && test "$LIBTOOL" != none +then + echo "$as_me:5625: checking version of $LIBTOOL" >&5 +echo $ECHO_N "checking version of $LIBTOOL... $ECHO_C" >&6 + +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.].*//'` +else + cf_cv_libtool_version= +fi +test -z "$cf_cv_libtool_version" && unset cf_cv_libtool_version + + echo "$as_me:5636: 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'` + case "x$cf_check_libtool_version" in + (*...GNU-libtool...*) + ;; + (*) + { { echo "$as_me:5645: 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:5651: 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:5656: error: GNU libtool has not been found" >&5 +echo "$as_me: error: GNU libtool has not been found" >&2;} + { (exit 1); exit 1; }; } +fi + + # special hack to add -no-undefined (which libtool should do for itself) + LT_UNDEF= + case "$cf_cv_system_name" in + (cygwin*|msys*|mingw32*|os2*|uwin*|aix[4-7]) + LT_UNDEF=-no-undefined + ;; + esac + + # special hack to add --tag option for C++ compiler + case "$cf_cv_libtool_version" in + (1.[5-9]*|[2-9].[0-9.a-z]*) + LIBTOOL_CXX="$LIBTOOL --tag=CXX" + LIBTOOL="$LIBTOOL --tag=CC" + ;; + (*) + LIBTOOL_CXX="$LIBTOOL" + ;; + esac +else + LIBTOOL="" + LIBTOOL_CXX="" +fi + +test -z "$LIBTOOL" && ECHO_LT= + +if test "$with_libtool" != "no" ; then + +cf_list_models="$cf_list_models libtool" + +else + +echo "$as_me:5692: 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. +if test "${with_shared+set}" = set; then + withval="$with_shared" + with_shared=$withval +else + with_shared=no +fi; +echo "$as_me:5702: 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:5706: 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. +if test "${with_normal+set}" = set; then + withval="$with_normal" + with_normal=$withval +else + with_normal=yes +fi; +echo "$as_me:5716: 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:5720: 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. +if test "${with_debug+set}" = set; then + withval="$with_debug" + with_debug=$withval +else + with_debug=yes +fi; +echo "$as_me:5730: 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:5734: 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. +if test "${with_profile+set}" = set; then + withval="$with_profile" + with_profile=$withval +else + with_profile=no +fi; +echo "$as_me:5744: result: $with_profile" >&5 +echo "${ECHO_T}$with_profile" >&6 +test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile" + +fi + +if test "X$cf_with_cxx_binding" != Xno; then +if test "x$with_shared" = "xyes"; then +echo "$as_me:5752: 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. +if test "${with_cxx_shared+set}" = set; then + withval="$with_cxx_shared" + with_shared_cxx=$withval +else + with_shared_cxx=no +fi; +echo "$as_me:5762: result: $with_shared_cxx" >&5 +echo "${ECHO_T}$with_shared_cxx" >&6 +fi +fi + +############################################################################### + +echo "$as_me:5769: 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:5773: 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:5778: 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:5781: result: $DFT_LWR_MODEL" >&5 +echo "${ECHO_T}$DFT_LWR_MODEL" >&6 + +DFT_UPR_MODEL=`echo "$DFT_LWR_MODEL" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +TICS_NAME=tic + +TINFO_NAME=tinfo + +LIB_NAME=ncurses + +LIB_DIR=../lib +LIB_2ND=../../lib + +echo "$as_me:5795: 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. +if test "${with_lib_prefix+set}" = set; then + withval="$with_lib_prefix" + with_lib_prefix=$withval +else + with_lib_prefix=auto +fi; +echo "$as_me:5805: result: $with_lib_prefix" >&5 +echo "${ECHO_T}$with_lib_prefix" >&6 + +if test "$with_lib_prefix" = auto +then + + case "$cf_cv_system_name" in + (OS/2*|os2*) + if test "$DFT_LWR_MODEL" = libtool; then + LIB_PREFIX='lib' + else + LIB_PREFIX='' + fi + ;; + (*-msvc*) + LIB_PREFIX='' + ;; + (*) LIB_PREFIX='lib' + ;; + esac +cf_prefix=$LIB_PREFIX + +elif test "$with_lib_prefix" = no +then + LIB_PREFIX= +else + LIB_PREFIX=$with_lib_prefix +fi + +LIB_SUFFIX= + + echo "$as_me:5836: 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:5843: result: $PATH_SEPARATOR" >&5 +echo "${ECHO_T}$PATH_SEPARATOR" >&6 + +############################################################################### + +echo "$as_me:5848: 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. +if test "${with_termlib+set}" = set; then + withval="$with_termlib" + with_termlib=$withval +else + with_termlib=no +fi; +echo "$as_me:5858: result: $with_termlib" >&5 +echo "${ECHO_T}$with_termlib" >&6 + +echo "$as_me:5861: 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. +if test "${with_ticlib+set}" = set; then + withval="$with_ticlib" + with_ticlib=$withval +else + with_ticlib=no +fi; +echo "$as_me:5871: result: $with_ticlib" >&5 +echo "${ECHO_T}$with_ticlib" >&6 + +if test X"$CC_G_OPT" = X"" ; then + CC_G_OPT='-g' + test -n "$GCC" && test "x${ac_cv_prog_cc_g}" != xyes && CC_G_OPT='' +fi + +if test X"$CXX_G_OPT" = X"" ; then + CXX_G_OPT='-g' + test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT='' +fi + +echo "$as_me:5884: 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='' ;; +(normal) LD_MODEL='' ;; +(debug) LD_MODEL=$CC_G_OPT ;; +(profile) LD_MODEL='-pg';; +(shared) LD_MODEL='' ;; +esac +echo "$as_me:5893: result: $LD_MODEL" >&5 +echo "${ECHO_T}$LD_MODEL" >&6 + +case "$DFT_LWR_MODEL" in +(shared) + +echo "$as_me:5899: 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. +if test "${enable_rpath+set}" = set; then + enableval="$enable_rpath" + cf_cv_enable_rpath=$enableval +else + cf_cv_enable_rpath=no +fi; +echo "$as_me:5909: result: $cf_cv_enable_rpath" >&5 +echo "${ECHO_T}$cf_cv_enable_rpath" >&6 + +echo "$as_me:5912: 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. +if test "${enable_relink+set}" = set; then + enableval="$enable_relink" + cf_cv_do_relink=$enableval +else + cf_cv_do_relink=yes +fi; +echo "$as_me:5922: result: $cf_cv_do_relink" >&5 +echo "${ECHO_T}$cf_cv_do_relink" >&6 + ;; +esac + +# we will build libraries one-level down. +rel_builddir=.. + +LD_RPATH_OPT= +if test "x$cf_cv_enable_rpath" != xno +then + echo "$as_me:5933: checking for an rpath option" >&5 +echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 + case "$cf_cv_system_name" in + (irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; + (linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (openbsd[2-9].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (dragonfly*) + LD_RPATH_OPT="-rpath " + ;; + (netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; + (solaris2*) + LD_RPATH_OPT="-R" + ;; + (*) + ;; + esac + echo "$as_me:5964: result: $LD_RPATH_OPT" >&5 +echo "${ECHO_T}$LD_RPATH_OPT" >&6 + + case "x$LD_RPATH_OPT" in + (x-R*) + echo "$as_me:5969: 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" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in ${LD_RPATH_OPT}$libdir; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5990 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6002: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6005: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6008: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6011: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_rpath_space=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_rpath_space=yes +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$cf_save_LIBS" + echo "$as_me:6021: result: $cf_rpath_space" >&5 +echo "${ECHO_T}$cf_rpath_space" >&6 + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; + esac +fi + + RM_SHARED_OPTS= + LOCAL_LDFLAGS= + LOCAL_LDFLAGS2= + LD_SHARED_OPTS= + INSTALL_LIB="-m 644" + : ${rel_builddir:=.} + + shlibdir=$libdir + + MAKE_DLLS="#" + + cf_cv_do_symlinks=no + cf_ld_rpath_opt= + test "$cf_cv_enable_rpath" = yes && cf_ld_rpath_opt="$LD_RPATH_OPT" + + echo "$as_me:6043: checking if release/abi version should be used for shared libs" >&5 +echo $ECHO_N "checking if release/abi version should be used for shared libs... $ECHO_C" >&6 + +# Check whether --with-shlib-version or --without-shlib-version was given. +if test "${with_shlib_version+set}" = set; then + withval="$with_shlib_version" + test -z "$withval" && withval=auto + case "$withval" in + (yes) + cf_cv_shlib_version=auto + ;; + (rel|abi|auto) + cf_cv_shlib_version=$withval + ;; + (*) + echo "$as_me:6058: result: $withval" >&5 +echo "${ECHO_T}$withval" >&6 + { { echo "$as_me:6060: 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; }; } + ;; + esac + +else + cf_cv_shlib_version=auto +fi; + echo "$as_me:6069: result: $cf_cv_shlib_version" >&5 +echo "${ECHO_T}$cf_cv_shlib_version" >&6 + + cf_cv_rm_so_locs=no + cf_try_cflags= + + # Some less-capable ports of gcc support only -fpic + CC_SHARED_OPTS= + + cf_try_fPIC=no + if test "$GCC" = yes + then + cf_try_fPIC=yes + else + case "$cf_cv_system_name" in + (*linux*) # e.g., PGI compiler + cf_try_fPIC=yes + ;; + esac + fi + + if test "$cf_try_fPIC" = yes + then + echo "$as_me:6092: 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 6099 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +int x = 1 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:6111: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6114: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:6117: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6120: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done + echo "$as_me:6129: result: $CC_SHARED_OPTS" >&5 +echo "${ECHO_T}$CC_SHARED_OPTS" >&6 + CFLAGS="$cf_save_CFLAGS" + fi + + cf_cv_shlib_version_infix=no + + case "$cf_cv_system_name" in + (aix4.3-9*|aix[5-7]*) + if test "$GCC" = yes; then + CC_SHARED_OPTS='-Wl,-brtl' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@' + else + CC_SHARED_OPTS='-brtl' + # as well as '-qpic=large -G' or perhaps "-bM:SRE -bnoentry -bexpall" + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -G -Wl,-brtl -Wl,-blibpath:${RPATH_LIST}:/usr/lib -o $@' + fi + ;; + (beos*) + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -o $@ -Xlinker -soname=`basename $@` -nostart -e 0' + ;; + (cygwin*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=cygdll + cf_cv_shlib_version_infix=cygdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/cyg/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (msys*) + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cf_cv_shlib_version=msysdll + cf_cv_shlib_version_infix=msysdll + shlibdir=$bindir + MAKE_DLLS= + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/msys-/lib/' -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (darwin*) + cf_try_cflags="no-cpp-precomp" + CC_SHARED_OPTS="-dynamic" + 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:6200: 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 +else + + cf_save_LDFLAGS=$LDFLAGS + LDFLAGS="$LDFLAGS -Wl,-search_paths_first" + cat >"conftest.$ac_ext" <<_ACEOF +#line 6209 "configure" +#include "confdefs.h" + +int +main (void) +{ +int i; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6221: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6224: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6227: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6230: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ldflags_search_paths_first=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ldflags_search_paths_first=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LDFLAGS=$cf_save_LDFLAGS +fi +echo "$as_me:6241: 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" + fi + ;; + (haiku*) + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (hpux[7-8]*) + # HP-UX 8.07 ld lacks "+b" option used for libdir search-list + if test "$GCC" != yes; then + CC_SHARED_OPTS='+Z' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -b -o $@' + INSTALL_LIB="-m 555" + ;; + (hpux*) + # (tested with gcc 2.7.2 -- I don't have c89) + if test "$GCC" = yes; then + LD_SHARED_OPTS='-Xlinker +b -Xlinker ${libdir}' + else + CC_SHARED_OPTS='+Z' + LD_SHARED_OPTS='-Wl,+b,${libdir}' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} +b ${libdir} -b -o $@' + # HP-UX shared libraries must be executable, and should be + # readonly to exploit a quirk in the memory manager. + INSTALL_LIB="-m 555" + ;; + (interix*) + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_shared_soname='`basename $@`' + fi + CC_SHARED_OPTS= + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-rpath,${RPATH_LIST} -Wl,-h,'$cf_shared_soname' -o $@' + ;; + (irix*) + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + # tested with IRIX 5.2 and 'cc'. + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -rdata_shared -soname `basename $@` -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,`basename $@` -o $@' + fi + cf_cv_rm_so_locs=yes + ;; + (linux*|gnu*|k*bsd*-gnu) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (mingw*msvc*) + cf_cv_shlib_version=msvcdll + cf_cv_shlib_version_infix=msvcdll + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-link -dll" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-link -dll $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${LD} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.lib" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.lib/'\` + shift + my_ld=\$1 + shift + cat <<-EOF + Linking shared library + ** SHARED LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + args=\$(echo \$* | sed -E "s#-l(\w*)#\1.dll.lib#g" | sed -E "s#-L(\w*)#-LIBPATH:\1#g") + exec \$my_ld -DLL -IMPLIB:"\${IMPORT_LIB}" -OUT:"\${SHARED_LIB}" ${LDFLAGS} \$args + mv "\${IMPORT_LIB}" "\${IMPORT_LIB}" +CF_EOF + chmod +x mk_shared_lib.sh + cat >mk_prog.sh <<-CF_EOF + #!$SHELL + shift + # Ignore first argument (compiler) and use LD (link.exe) unconditionally + LD="$LD" + clopts=() + ldopts=("/subsystem:console") + libs=() + isdll=0 + while test \$# -gt 0; do + case "\$1" in + -link) + # ignore -link argument + ;; + -M[TD] | -M[TD]d) + # ignore runtime-library option + ;; + -dll) + isdll=1 + ;; + -W* | -w*) + # ignore warnings + ;; + -D*) + clopts+=("\$1") + ;; + -I*) + clopts+=("\$1") + ;; + -l*) + libs+=("\`echo \"\$1\" | sed \"s/^-l//\"\`") + ;; + -L*) + ldopts+=("\`echo \"\$1\" | sed \"s/^-L/-LIBPATH:/\"\`") + ;; + *.obj | *.o) + ldopts+=("\$1") + ;; + -Wl,*) + for linkarg in \`echo '\$1' | sed -e 's/-Wl,//' -e 's/,/ /'\`; do + ldopts+=("\${linkarg}") + done + ;; + *.lib) + ldopts+=("\$1") + ;; + -o) + shift + ldopts+=("-out:\$1") + ;; + *) + clopts+=("\$1") + ldopts+=("\$1") + ;; + esac + shift + done + if [ "\$isdll" -ne 0 ]; then + for lib in \${libs[*]}; do + ldopts+=("\$lib.dll.lib") + done + else + for lib in \${libs[*]}; do + ldopts+=("\$lib.lib") + done + fi + cat <<-EOF + Creating program + ** ld options: "\${ldopts[@]}" +EOF + exec \$LD \${ldopts[@]} +CF_EOF + chmod +x mk_prog.sh + LINK_PROGS="$SHELL ${rel_builddir}/mk_prog.sh" + LINK_TESTS="$SHELL ${rel_builddir}/mk_prog.sh" + ;; + (mingw*) + cf_cv_shlib_version=mingw + cf_cv_shlib_version_infix=mingw + shlibdir=$bindir + MAKE_DLLS= + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-Wl,--enable-auto-import" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="-Wl,--enable-auto-import $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS= + MK_SHARED_LIB=$SHELL' '$rel_builddir'/mk_shared_lib.sh $@ ${CC} ${CFLAGS}' + RM_SHARED_OPTS="$RM_SHARED_OPTS $rel_builddir/mk_shared_lib.sh *.dll.a" + cat >mk_shared_lib.sh <<-CF_EOF + #!$SHELL + SHARED_LIB=\$1 + IMPORT_LIB=\`echo "\$1" | sed -e 's/[0-9]*\.dll$/.dll.a/'\` + shift + cat <<-EOF + Linking shared library + ** SHARED_LIB \$SHARED_LIB + ** IMPORT_LIB \$IMPORT_LIB +EOF + exec \$* ${LDFLAGS} -shared -Wl,--enable-auto-import,--out-implib=\${IMPORT_LIB} -Wl,--export-all-symbols -o \${SHARED_LIB} +CF_EOF + chmod +x mk_shared_lib.sh + ;; + (openbsd[2-9].*|mirbsd*) + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-Bshareable,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (nskJ*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Weld=-export_all -o $@' + ;; + (nskL*) + CC_SHARED_OPTS= + MK_SHARED_LIB='${LD} -Wshared -Wxld=-export_all -o $@' + ;; + (nto-qnx*|openbsd*|freebsd[12].*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + MK_SHARED_LIB='${LD} ${LDFLAGS} -Bshareable -o $@' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (dragonfly*|freebsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="${cf_ld_rpath_opt}\${RPATH_LIST} $LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname',-stats,-lc -o $@' + ;; + (netbsd*) + CC_SHARED_OPTS="$CC_SHARED_OPTS -DPIC" + if test "$DFT_LWR_MODEL" = "shared" && test "$cf_cv_enable_rpath" = yes ; then + LOCAL_LDFLAGS="${cf_ld_rpath_opt}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + EXTRA_LDFLAGS="${cf_ld_rpath_opt}\${RPATH_LIST} $EXTRA_LDFLAGS" + if test "$cf_cv_shlib_version" = auto; then + if test -f /usr/libexec/ld.elf_so; then + cf_cv_shlib_version=abi + else + cf_cv_shlib_version=rel + fi + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -Wl,-soname,'$cf_cv_shared_soname' -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -o $@' + fi + ;; + (osf*|mls+*) + # tested with OSF/1 V3.2 and 'cc' + # tested with OSF/1 V3.2 and gcc 2.6.3 (but the c++ demo didn't + # link with shared libs). + MK_SHARED_LIB='${LD} ${LDFLAGS} -set_version ${REL_VERSION}:${ABI_VERSION} -expect_unresolved "*" -shared -soname `basename $@`' + case "$host_os" in + (osf4*) + MK_SHARED_LIB="${MK_SHARED_LIB} -msym" + ;; + esac + MK_SHARED_LIB="${MK_SHARED_LIB}"' -o $@' + if test "$DFT_LWR_MODEL" = "shared" && test -n "$LD_RPATH_OPT" ; then + LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + cf_cv_rm_so_locs=yes + ;; + (sco3.2v5*) # also uw2* and UW7: hops 13-Apr-98 + # tested with osr5.0.5 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-belf -KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -dy -G -h `basename $@ .${REL_VERSION}`.${ABI_VERSION} -o $@' + if test "$cf_cv_enable_rpath" = yes ; then + # only way is to set LD_RUN_PATH but no switch for it + RUN_PATH=$libdir + fi + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + LINK_PROGS='LD_RUN_PATH=${libdir}' + LINK_TESTS='Pwd=`pwd`;LD_RUN_PATH=`dirname $${Pwd}`/lib' + ;; + (sunos4*) + # tested with SunOS 4.1.1 and gcc 2.7.0 + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -assert pure-text -o $@' + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + ;; + (solaris2*) + # tested with SunOS 5.5.1 (solaris 2.5.1) and gcc 2.7.2 + # tested with SunOS 5.10 (solaris 10) and gcc 3.4.3 + if test "$DFT_LWR_MODEL" = "shared" ; then + LOCAL_LDFLAGS="-R \$(LOCAL_LIBDIR):\${libdir}" + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS" + fi + if test "$cf_cv_enable_rpath" = yes ; then + EXTRA_LDFLAGS="-R \${libdir} $EXTRA_LDFLAGS" + fi + + test "$cf_cv_shlib_version" = auto && cf_cv_shlib_version=rel + if test "$cf_cv_shlib_version" = rel; then + cf_cv_shared_soname='`basename $@ .${REL_VERSION}`.${ABI_VERSION}' + else + cf_cv_shared_soname='`basename $@`' + fi + + if test "$GCC" != yes; then + cf_save_CFLAGS="$CFLAGS" + for cf_shared_opts in -xcode=pic32 -xcode=pic13 -KPIC -Kpic -O + do + CFLAGS="$cf_shared_opts $cf_save_CFLAGS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 6591 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello\\n"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:6603: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6606: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:6609: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6612: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done + CFLAGS="$cf_save_CFLAGS" + CC_SHARED_OPTS=$cf_shared_opts + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -dy -G -h '$cf_cv_shared_soname' -o $@' + else + MK_SHARED_LIB='${CC} ${LDFLAGS} ${CFLAGS} -shared -dy -G -h '$cf_cv_shared_soname' -o $@' + fi + ;; + (sysv5uw7*|unix_sv*) + # tested with UnixWare 7.1.0 (gcc 2.95.2 and cc) + if test "$GCC" != yes; then + CC_SHARED_OPTS='-KPIC' + fi + MK_SHARED_LIB='${LD} ${LDFLAGS} -d y -G -o $@' + ;; + (*) + CC_SHARED_OPTS='unknown' + MK_SHARED_LIB='echo unknown' + ;; + esac + + # This works if the last tokens in $MK_SHARED_LIB are the -o target. + case "$cf_cv_shlib_version" in + (rel|abi) + case "$MK_SHARED_LIB" in + (*'-o $@') + test "$cf_cv_do_symlinks" = no && cf_cv_do_symlinks=yes + ;; + (*) + { echo "$as_me:6649: WARNING: ignored --with-shlib-version" >&5 +echo "$as_me: WARNING: ignored --with-shlib-version" >&2;} + ;; + esac + ;; + esac + + if test -n "$cf_try_cflags" + then +cat > conftest.$ac_ext < +int main(int argc, char *argv[]) +{ + printf("hello\\n"); + return (argv[argc-1] == 0) ; +} +EOF + cf_save_CFLAGS="$CFLAGS" + for cf_opt in $cf_try_cflags + do + CFLAGS="$cf_save_CFLAGS -$cf_opt" + echo "$as_me:6671: 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:6673: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6676: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + echo "$as_me:6678: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + cf_save_CFLAGS="$CFLAGS" + else + echo "$as_me:6682: result: no" >&5 +echo "${ECHO_T}no" >&6 + fi + done + CFLAGS="$cf_save_CFLAGS" + fi + + # RPATH_LIST is a colon-separated list of directories + test -n "$cf_ld_rpath_opt" && MK_SHARED_LIB="$MK_SHARED_LIB $cf_ld_rpath_opt\${RPATH_LIST}" + test -z "$RPATH_LIST" && RPATH_LIST="\${libdir}" + + test "$cf_cv_rm_so_locs" = yes && RM_SHARED_OPTS="$RM_SHARED_OPTS so_locations" + + test -n "$verbose" && echo " CC_SHARED_OPTS: $CC_SHARED_OPTS" 1>&6 + +echo "${as_me:-configure}:6697: 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}:6701: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + +for model in $cf_list_models ; do + case "$model" in + (libtool) + +echo "$as_me:6707: 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. +if test "${with_libtool_opts+set}" = set; then + withval="$with_libtool_opts" + with_libtool_opts=$withval +else + with_libtool_opts=no +fi; +echo "$as_me:6717: result: $with_libtool_opts" >&5 +echo "${ECHO_T}$with_libtool_opts" >&6 + +case .$with_libtool_opts in +(.yes|.no|.) + ;; +(*) + LIBTOOL_OPTS="$LIBTOOL_OPTS $with_libtool_opts" + ;; +esac + +echo "$as_me:6728: 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. +if test "${with_export_syms+set}" = set; then + withval="$with_export_syms" + with_export_syms=$withval +else + with_export_syms=no +fi; +if test "x$with_export_syms" = xyes +then + with_export_syms='${top_srcdir}/package/${PACKAGE}.sym' + +fi +echo "$as_me:6743: result: $with_export_syms" >&5 +echo "${ECHO_T}$with_export_syms" >&6 +if test "x$with_export_syms" != xno +then + EXPORT_SYMS="-export-symbols $with_export_syms" + +fi + + ;; + (shared) + if test "$CC_SHARED_OPTS" = "unknown"; then + { { echo "$as_me:6754: 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:6759: 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 6762 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello work\\n"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6774: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6777: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6780: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6783: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cflags_work=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cflags_work=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:6792: 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}:6798: testing try to work around by appending shared-options ..." 1>&5 + + CFLAGS="$CFLAGS $CC_SHARED_OPTS" + fi + +echo "$as_me:6803: 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. +if test "${with_versioned_syms+set}" = set; then + withval="$with_versioned_syms" + with_versioned_syms=$withval +else + with_versioned_syms=no +fi; +case "x$with_versioned_syms" in +(xyes) + with_versioned_syms='${top_srcdir}/package/${PACKAGE}.map' + + ;; +(xno) + ;; +(x/*) + test -f "$with_versioned_syms" || { { echo "$as_me:6821: 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:6826: 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:6832: result: $with_versioned_syms" >&5 +echo "${ECHO_T}$with_versioned_syms" >&6 + +RESULTING_SYMS= +VERSIONED_SYMS= +WILDCARD_SYMS= + +if test "x$with_versioned_syms" != xno +then + RESULTING_SYMS=$with_versioned_syms + case "x$MK_SHARED_LIB" in + (*-Wl,*) + VERSIONED_SYMS="-Wl,--version-script,\${RESULTING_SYMS}" + 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}:6848: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + + ;; + (*-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}:6856: testing MK_SHARED_LIB: $MK_SHARED_LIB ..." 1>&5 + + ;; + (*) + { echo "$as_me:6860: WARNING: this system does not support versioned-symbols" >&5 +echo "$as_me: WARNING: this system does not support versioned-symbols" >&2;} + ;; + esac + + # Linux ld can selectively override scope, e.g., of symbols beginning with + # "_" by first declaring some as global, and then using a wildcard to + # declare the others as local. Some other loaders cannot do this. Check + # by constructing a (very) simple shared library and inspecting its + # symbols. + if test "x$VERSIONED_SYMS" != "x" + then + echo "$as_me:6872: 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 + + # make sources + rm -f conftest.* + + cat >conftest.ver <conftest.$ac_ext <conftest.mk <&5 >/dev/null + then + # test for missing symbol in either Data or Text section + 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:6940: result: $WILDCARD_SYMS" >&5 +echo "${ECHO_T}$WILDCARD_SYMS" >&6 + rm -f conftest.* + fi +fi + + ;; + esac +done + +### Checks for special libraries, must be done up-front. +SHLIB_LIST="" + +echo "$as_me:6953: 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. +if test "${with_gpm+set}" = set; then + withval="$with_gpm" + with_gpm=$withval +else + with_gpm=maybe +fi; +echo "$as_me:6963: result: $with_gpm" >&5 +echo "${ECHO_T}$with_gpm" >&6 + +if test "$with_gpm" != no ; then + echo "$as_me:6967: 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 6973 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:6977: \"$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:6983: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_gpm_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_gpm_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:7002: 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 + +cat >>confdefs.h <<\EOF +#define HAVE_GPM_H 1 +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}:7013: testing assuming we really have GPM library ..." 1>&5 + +cat >>confdefs.h <<\EOF +#define HAVE_LIBGPM 1 +EOF + + with_gpm=yes + else + echo "$as_me:7021: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 7029 "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 Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7048: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7051: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7054: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7057: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7068: 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:7075: WARNING: Cannot link with GPM library" >&5 +echo "$as_me: WARNING: Cannot link with GPM library" >&2;} + with_gpm=no + else + { { echo "$as_me:7079: error: Cannot link with GPM library" >&5 +echo "$as_me: error: Cannot link with GPM library" >&2;} + { (exit 1); exit 1; }; } + fi + +fi + + fi + +else + + test "$with_gpm" != maybe && { echo "$as_me:7090: WARNING: Cannot find GPM header" >&5 +echo "$as_me: WARNING: Cannot find GPM header" >&2;} + with_gpm=no + +fi + +fi + +if test "$with_gpm" != no ; then + echo "$as_me:7099: 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. +if test "${with_dlsym+set}" = set; then + withval="$with_dlsym" + with_dlsym=$withval +else + with_dlsym=yes +fi; + echo "$as_me:7109: result: $with_dlsym" >&5 +echo "${ECHO_T}$with_dlsym" >&6 + if test "x$with_dlsym" = xyes ; then + +cf_have_dlsym=no +echo "$as_me:7114: 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 7120 "configure" +#include "confdefs.h" +#define dlsym autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef dlsym + +#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 dlsym (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_dlsym) || defined (__stub___dlsym) +#error found stub for dlsym +#endif + + return dlsym (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7151: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7154: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7157: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7160: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_dlsym=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_dlsym=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:7170: 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:7177: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldl $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 7185 "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 dlsym (); +int +main (void) +{ +dlsym (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7204: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7207: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7210: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7213: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dl_dlsym=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dl_dlsym=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7224: 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 + + cf_have_dlsym=yes + cf_have_libdl=yes +fi + +fi + +if test "$cf_have_dlsym" = yes ; then + test "$cf_have_libdl" = yes && { +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -ldl; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + } + + echo "$as_me:7253: 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 7256 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + void *obj; + if ((obj = dlopen("filename", 0)) != 0) { + if (dlsym(obj, "symbolname") == 0) { + dlclose(obj); + } + } + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7274: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7277: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7280: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7283: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBDL 1 +EOF + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + { { echo "$as_me:7294: 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:7299: result: ok" >&5 +echo "${ECHO_T}ok" >&6 +else + { { echo "$as_me:7302: error: Cannot find dlsym function" >&5 +echo "$as_me: error: Cannot find dlsym function" >&2;} + { (exit 1); exit 1; }; } +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}:7310: testing assuming soname for gpm is $with_gpm ..." 1>&5 + + cf_cv_gpm_soname="$with_gpm" + else + +echo "$as_me:7315: 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 +else + +cf_cv_gpm_soname=unknown +if test "$cross_compiling" != yes ; then +cat >conftest.$ac_ext < +int main(void) +{ +if (Gpm_Open(0,0)) Gpm_Close(); + ${cf_cv_main_return:-return}(0); +} +CF_EOF +cf_save_LIBS="$LIBS" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lgpm; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + if { (eval echo "$as_me:7349: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7352: \$? = $ac_status" >&5 + (exit "$ac_status"); } ; then + if { (eval echo "$as_me:7354: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7357: \$? = $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 + fi + fi +rm -rf ./conftest* +LIBS="$cf_save_LIBS" +fi + +fi +echo "$as_me:7368: result: $cf_cv_gpm_soname" >&5 +echo "${ECHO_T}$cf_cv_gpm_soname" >&6 + + fi + test "$cf_cv_gpm_soname" != "unknown" && +cat >>confdefs.h <>confdefs.h <<\EOF +#define HAVE_LIBGPM 1 +EOF + +echo "$as_me:7436: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 7444 "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 Gpm_Wgetch (); +int +main (void) +{ +Gpm_Wgetch (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7463: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7466: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7469: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7472: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_Gpm_Wgetch=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_Gpm_Wgetch=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7483: 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:7487: 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 +else + +cf_cv_check_gpm_wgetch=unknown +if test "$cross_compiling" != yes ; then + +cat >conftest.$ac_ext < +int main(void) +{ + Gpm_Wgetch(); + ${cf_cv_main_return:-return}(0); +} +CF_EOF + + cf_save_LIBS="$LIBS" + # This only works if we can look at the symbol table. If a shared + # library is stripped for install, we cannot use that. So we're forced + # to rely on the static library, noting that some packagers may not + # include it. + LIBS="-static -lgpm -dynamic $LIBS" + if { (eval echo "$as_me:7511: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7514: \$? = $ac_status" >&5 + (exit "$ac_status"); } ; then + if { (eval echo "$as_me:7516: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7519: \$? = $ac_status" >&5 + (exit "$ac_status"); } ; then + cf_cv_check_gpm_wgetch="`nm \"conftest$ac_exeext\" | ${EGREP-egrep} '\' | ${EGREP-egrep} '\<[vVwW]\>'`" + test -n "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=yes + test -z "$cf_cv_check_gpm_wgetch" && cf_cv_check_gpm_wgetch=no + fi + fi + rm -rf ./conftest* + LIBS="$cf_save_LIBS" +fi + +fi +echo "$as_me:7531: 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:7535: 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 + +fi + +fi + +echo "$as_me:7543: 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. +if test "${with_pcre2+set}" = set; then + withval="$with_pcre2" + +fi; +test -z "$with_pcre2" && with_pcre2=no +echo "$as_me:7552: result: $with_pcre2" >&5 +echo "${ECHO_T}$with_pcre2" >&6 + +if test "x$with_pcre2" != xno ; then + cf_with_pcre2_ok=no + for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre + do + +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}:7563: 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}:7569: 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}:7573: testing package $cf_with_pcre2 LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cf_with_pcre2_ok=yes; break +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + : +fi + + done + cf_with_pcre2_ok=yes || { { echo "$as_me:7697: error: Cannot find PCRE2 library" >&5 +echo "$as_me: error: Cannot find PCRE2 library" >&2;} + { (exit 1); exit 1; }; } + +cat >>confdefs.h <<\EOF +#define HAVE_LIB_PCRE2 1 +EOF + + # if pkgconfig gave no results, look for the libraries directly + case "$LIBS" in + (*pcre2-posix*|*pcreposix*) + ;; + (*) + echo "$as_me:7710: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpcre2-posix $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 7718 "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 regcomp (); +int +main (void) +{ +regcomp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7737: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7740: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7743: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7746: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_pcre2_posix_regcomp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_pcre2_posix_regcomp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7757: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lpcre2-posix; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +else + echo "$as_me:7778: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lpcreposix $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 7786 "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 regcomp (); +int +main (void) +{ +regcomp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7805: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7808: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7811: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7814: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_pcreposix_regcomp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_pcreposix_regcomp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7825: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lpcreposix; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +else + { { echo "$as_me:7846: error: Cannot find PCRE2 POSIX library" >&5 +echo "$as_me: error: Cannot find PCRE2 POSIX library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + + ;; + esac + + # either way, check for the library header files + +for ac_header in pcre2posix.h pcreposix.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:7861: 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 7867 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:7871: \"$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:7877: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:7896: 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 <&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 7915 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7946: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7949: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7952: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7955: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:7965: 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 </dev/null ; then +echo "$as_me:7979: 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. +if test "${with_sysmouse+set}" = set; then + withval="$with_sysmouse" + cf_with_sysmouse=$withval +else + cf_with_sysmouse=maybe +fi; + if test "$cf_with_sysmouse" != no ; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 7991 "configure" +#include "confdefs.h" + +#include +#if (__FreeBSD_version >= 400017) +#include +#include +#else +#include +#endif + +int +main (void) +{ + + struct mouse_info the_mouse; + ioctl(0, CONS_MOUSECTL, &the_mouse); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8014: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8017: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8020: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8023: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_with_sysmouse=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_with_sysmouse=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi +echo "$as_me:8033: result: $cf_with_sysmouse" >&5 +echo "${ECHO_T}$cf_with_sysmouse" >&6 +test "$cf_with_sysmouse" = yes && +cat >>confdefs.h <<\EOF +#define USE_SYSMOUSE 1 +EOF + +fi + +# pretend that ncurses==ncursesw==ncursest +echo "$as_me:8043: 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. +if test "${enable_lib_suffixes+set}" = set; then + enableval="$enable_lib_suffixes" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + disable_lib_suffixes=yes + else + disable_lib_suffixes=no + fi +else + enableval=yes + disable_lib_suffixes=no + +fi; +echo "$as_me:8060: 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:8066: 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. +if test "${enable_rpath_hack+set}" = set; then + enableval="$enable_rpath_hack" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + enable_rpath_hack=no + else + enable_rpath_hack=yes + fi +else + enableval=yes + enable_rpath_hack=yes + +fi; +if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi +echo "$as_me:8084: result: $cf_disable_rpath_hack" >&5 +echo "${ECHO_T}$cf_disable_rpath_hack" >&6 + +if test "$enable_rpath_hack" = yes ; then + +echo "$as_me:8089: 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:8092: 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:8099: 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 +else + if test -n "$cf_ldd_prog"; then + ac_cv_prog_cf_ldd_prog="$cf_ldd_prog" # 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_cf_ldd_prog="$ac_prog" +echo "$as_me:8114: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +cf_ldd_prog=$ac_cv_prog_cf_ldd_prog +if test -n "$cf_ldd_prog"; then + echo "$as_me:8122: result: $cf_ldd_prog" >&5 +echo "${ECHO_T}$cf_ldd_prog" >&6 +else + echo "$as_me:8125: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$cf_ldd_prog" && break +done +test -n "$cf_ldd_prog" || cf_ldd_prog="no" + + cf_rpath_list="/usr/lib /lib" + if test "$cf_ldd_prog" != no + then + cf_rpath_oops= + +cat >"conftest.$ac_ext" <<_ACEOF +#line 8139 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:8151: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8154: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:8157: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8160: \$? = $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` +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + # If we passed the link-test, but get a "not found" on a given library, + # this could be due to inept reconfiguration of gcc to make it only + # partly honor /usr/local/lib (or whatever). Sometimes this behavior + # is intentional, e.g., installing gcc in /usr/bin and suppressing the + # /usr/local libraries. + if test -n "$cf_rpath_oops" + then + for cf_rpath_src in $cf_rpath_oops + do + for cf_rpath_dir in \ + /usr/local \ + /usr/pkg \ + /opt/sfw + do + if test -f "$cf_rpath_dir/lib/$cf_rpath_src" + then + test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6 + +echo "${as_me:-configure}:8188: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5 + + LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" + break + fi + done + done + fi + fi + + test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 + +echo "${as_me:-configure}:8200: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 + +test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:8204: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5 + +cf_rpath_dst= +for cf_rpath_src in $LDFLAGS +do + case "$cf_rpath_src" in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 + +echo "${as_me:-configure}:8241: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 + + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +LDFLAGS=$cf_rpath_dst + +test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:8254: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5 + +test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6 + +echo "${as_me:-configure}:8258: testing ...checking LIBS $LIBS ..." 1>&5 + +cf_rpath_dst= +for cf_rpath_src in $LIBS +do + case "$cf_rpath_src" in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 + +echo "${as_me:-configure}:8295: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 + + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +LIBS=$cf_rpath_dst + +test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6 + +echo "${as_me:-configure}:8308: testing ...checked LIBS $LIBS ..." 1>&5 + + test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 + +echo "${as_me:-configure}:8312: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 + +else + echo "$as_me:8315: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi + +fi + +### Depending on the system, someone may use rpath to build ncurses but not +# want users of the package to rely upon that feature. Give those people an +# option to suppress that detail from EXTRA_LDFLAGS. +EXTRA_PKG_LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS" +if test -n "$EXTRA_PKG_LDFLAGS" +then + echo "$as_me:8329: 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. +if test "${enable_pkg_ldflags+set}" = set; then + enableval="$enable_pkg_ldflags" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + disable_pkg_ldflags=yes + else + disable_pkg_ldflags=no + fi +else + enableval=yes + disable_pkg_ldflags=no + +fi; + echo "$as_me:8346: result: $disable_pkg_ldflags" >&5 +echo "${ECHO_T}$disable_pkg_ldflags" >&6 + test "$disable_pkg_ldflags" = yes && EXTRA_PKG_LDFLAGS= +fi + +############################################################################### + +### use option --with-extra-suffix to append suffix to headers and libraries +echo "$as_me:8354: checking if you wish to append extra suffix to header/library paths" >&5 +echo $ECHO_N "checking if you wish to append extra suffix to header/library paths... $ECHO_C" >&6 +EXTRA_SUFFIX= + +# Check whether --with-extra-suffix or --without-extra-suffix was given. +if test "${with_extra_suffix+set}" = set; then + withval="$with_extra_suffix" + case x$withval in + (xno) + ;; + (xyes|x) + EXTRA_SUFFIX=$cf_cv_abi_version + ;; + (*) + EXTRA_SUFFIX=$withval + ;; + esac + +fi; +echo "$as_me:8373: result: $EXTRA_SUFFIX" >&5 +echo "${ECHO_T}$EXTRA_SUFFIX" >&6 + +### use option --disable-overwrite to leave out the link to -lcurses +echo "$as_me:8377: 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. +if test "${enable_overwrite+set}" = set; then + enableval="$enable_overwrite" + with_overwrite=$enableval +else + if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi +fi; +echo "$as_me:8387: result: $with_overwrite" >&5 +echo "${ECHO_T}$with_overwrite" >&6 + +echo "$as_me:8390: 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. +if test "${enable_database+set}" = set; then + enableval="$enable_database" + use_database=$enableval +else + use_database=yes +fi; +echo "$as_me:8400: result: $use_database" >&5 +echo "${ECHO_T}$use_database" >&6 + +case "$host_os" in +(os2*) + TERMINFO_SRC='${top_srcdir}/misc/emx.src' + ;; +(*) + TERMINFO_SRC='${top_srcdir}/misc/terminfo.src' + ;; +esac + +NCURSES_USE_DATABASE=0 +if test "$use_database" != no ; then + NCURSES_USE_DATABASE=1 + + echo "$as_me:8416: 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. +if test "${with_database+set}" = set; then + withval="$with_database" + TERMINFO_SRC=$withval +fi; + echo "$as_me:8424: result: $TERMINFO_SRC" >&5 +echo "${ECHO_T}$TERMINFO_SRC" >&6 + + echo "$as_me:8427: 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. +if test "${with_hashed_db+set}" = set; then + withval="$with_hashed_db" + +else + with_hashed_db=no +fi; + echo "$as_me:8437: result: $with_hashed_db" >&5 +echo "${ECHO_T}$with_hashed_db" >&6 +else + with_hashed_db=no +fi + +echo "$as_me:8443: checking for list of fallback descriptions" >&5 +echo $ECHO_N "checking for list of fallback descriptions... $ECHO_C" >&6 + +# Check whether --with-fallbacks or --without-fallbacks was given. +if test "${with_fallbacks+set}" = set; then + withval="$with_fallbacks" + with_fallback=$withval +else + with_fallback= +fi; +echo "$as_me:8453: result: $with_fallback" >&5 +echo "${ECHO_T}$with_fallback" >&6 + +case ".$with_fallback" in +(.|.no) + FALLBACK_LIST= + ;; +(.yes) + { echo "$as_me:8461: WARNING: expected a list of terminal descriptions" >&5 +echo "$as_me: WARNING: expected a list of terminal descriptions" >&2;} + ;; +(*) + FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'` + ;; +esac + +# The fallback feature in ncurses relies upon tic/infocmp outside the build +# tree for generating the terminal descriptions that will be compiled into the +# library. If your toolchain is old, it may not handle current terminal +# databases. Use configure-options to point to the tools which will be used, +# rather than the first ones found on the $PATH. +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:8477: 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 +else + if test -n "$TIC"; then + ac_cv_prog_TIC="$TIC" # 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_TIC="${ac_tool_prefix}tic" +echo "$as_me:8492: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +TIC=$ac_cv_prog_TIC +if test -n "$TIC"; then + echo "$as_me:8500: result: $TIC" >&5 +echo "${ECHO_T}$TIC" >&6 +else + echo "$as_me:8503: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:8512: 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 +else + if test -n "$ac_ct_TIC"; then + ac_cv_prog_ac_ct_TIC="$ac_ct_TIC" # 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_ac_ct_TIC="tic" +echo "$as_me:8527: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_TIC=$ac_cv_prog_ac_ct_TIC +if test -n "$ac_ct_TIC"; then + echo "$as_me:8535: result: $ac_ct_TIC" >&5 +echo "${ECHO_T}$ac_ct_TIC" >&6 +else + echo "$as_me:8538: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + TIC=$ac_ct_TIC +else + TIC="$ac_cv_prog_TIC" +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:8550: 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 +else + if test -n "$INFOCMP"; then + ac_cv_prog_INFOCMP="$INFOCMP" # 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_INFOCMP="${ac_tool_prefix}infocmp" +echo "$as_me:8565: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +INFOCMP=$ac_cv_prog_INFOCMP +if test -n "$INFOCMP"; then + echo "$as_me:8573: result: $INFOCMP" >&5 +echo "${ECHO_T}$INFOCMP" >&6 +else + echo "$as_me:8576: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:8585: 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 +else + if test -n "$ac_ct_INFOCMP"; then + ac_cv_prog_ac_ct_INFOCMP="$ac_ct_INFOCMP" # 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_ac_ct_INFOCMP="infocmp" +echo "$as_me:8600: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_INFOCMP=$ac_cv_prog_ac_ct_INFOCMP +if test -n "$ac_ct_INFOCMP"; then + echo "$as_me:8608: result: $ac_ct_INFOCMP" >&5 +echo "${ECHO_T}$ac_ct_INFOCMP" >&6 +else + echo "$as_me:8611: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + INFOCMP=$ac_ct_INFOCMP +else + INFOCMP="$ac_cv_prog_INFOCMP" +fi + +if test -n "$FALLBACK_LIST" +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:8626: checking for tic program for fallbacks" >&5 +echo $ECHO_N "checking for tic program for fallbacks... $ECHO_C" >&6 + TIC=$withval + echo "$as_me:8629: result: $TIC" >&5 +echo "${ECHO_T}$TIC" >&6 + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$TIC" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval TIC="$TIC" + case ".$TIC" in + (.NONE/*) + TIC=`echo "$TIC" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + TIC=`echo "$TIC" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:8657: error: expected a pathname, not \"$TIC\"" >&5 +echo "$as_me: error: expected a pathname, not \"$TIC\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +else + +test -z "$TIC" && TIC="tic" +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:8670: 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 +else + case $TIC in + [\\/]* | ?:[\\/]*) + ac_cv_path_TIC="$TIC" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH:/usr/local/ncurses/bin" +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_TIC="$ac_dir/$ac_word" + echo "$as_me:8687: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +TIC=$ac_cv_path_TIC + +if test -n "$TIC"; then + echo "$as_me:8698: result: $TIC" >&5 +echo "${ECHO_T}$TIC" >&6 +else + echo "$as_me:8701: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$TIC" && break +done +test -n "$TIC" || TIC="$TIC" + +cf_path_prog="" +cf_path_args="" +IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" +for cf_temp in $ac_cv_path_TIC +do + if test -z "$cf_path_prog" ; then + if test "$with_full_paths" = yes ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$cf_temp" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval cf_temp="$cf_temp" + case ".$cf_temp" in + (.NONE/*) + cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + break + ;; +esac + + cf_path_prog="$cf_temp" + else + cf_path_prog="`basename "$cf_temp"`" + fi + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +if test -n "$cf_path_prog" ; then + +echo "${as_me:-configure}:8760: testing defining path for ${cf_path_prog} ..." 1>&5 + +cat >>confdefs.h <>confdefs.h <&5 +echo "$as_me: WARNING: no tic program found for fallbacks" >&2;} + fi + +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:8784: checking for infocmp program for fallbacks" >&5 +echo $ECHO_N "checking for infocmp program for fallbacks... $ECHO_C" >&6 + INFOCMP=$withval + echo "$as_me:8787: result: $INFOCMP" >&5 +echo "${ECHO_T}$INFOCMP" >&6 + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$INFOCMP" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval INFOCMP="$INFOCMP" + case ".$INFOCMP" in + (.NONE/*) + INFOCMP=`echo "$INFOCMP" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + INFOCMP=`echo "$INFOCMP" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:8815: error: expected a pathname, not \"$INFOCMP\"" >&5 +echo "$as_me: error: expected a pathname, not \"$INFOCMP\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +else + +test -z "$INFOCMP" && INFOCMP="infocmp" +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:8828: 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 +else + case $INFOCMP in + [\\/]* | ?:[\\/]*) + ac_cv_path_INFOCMP="$INFOCMP" # Let the user override the test with a path. + ;; + *) + ac_save_IFS=$IFS; IFS=$ac_path_separator +ac_dummy="$PATH:/usr/local/ncurses/bin" +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_INFOCMP="$ac_dir/$ac_word" + echo "$as_me:8845: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +INFOCMP=$ac_cv_path_INFOCMP + +if test -n "$INFOCMP"; then + echo "$as_me:8856: result: $INFOCMP" >&5 +echo "${ECHO_T}$INFOCMP" >&6 +else + echo "$as_me:8859: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$INFOCMP" && break +done +test -n "$INFOCMP" || INFOCMP="$INFOCMP" + +cf_path_prog="" +cf_path_args="" +IFS="${IFS:- }"; cf_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR" +for cf_temp in $ac_cv_path_INFOCMP +do + if test -z "$cf_path_prog" ; then + if test "$with_full_paths" = yes ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$cf_temp" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval cf_temp="$cf_temp" + case ".$cf_temp" in + (.NONE/*) + cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + cf_temp=`echo "$cf_temp" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + break + ;; +esac + + cf_path_prog="$cf_temp" + else + cf_path_prog="`basename "$cf_temp"`" + fi + elif test -z "$cf_path_args" ; then + cf_path_args="$cf_temp" + else + cf_path_args="$cf_path_args $cf_temp" + fi +done +IFS="$cf_save_ifs" + +if test -n "$cf_path_prog" ; then + +echo "${as_me:-configure}:8918: testing defining path for ${cf_path_prog} ..." 1>&5 + +cat >>confdefs.h <>confdefs.h <&5 +echo "$as_me: WARNING: no infocmp program found for fallbacks" >&2;} + fi + +fi; + + test -z "$TIC" && FALLBACK_LIST= + test -z "$INFOCMP" && FALLBACK_LIST= + if test -z "$FALLBACK_LIST" + then + { echo "$as_me:8943: 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 + +USE_FALLBACKS= +test -z "$FALLBACK_LIST" && USE_FALLBACKS="#" + +echo "$as_me:8951: 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. +if test "${with_xterm_new+set}" = set; then + withval="$with_xterm_new" + with_xterm_new=$withval +else + with_xterm_new=yes +fi; +case "$with_xterm_new" in +(no) with_xterm_new=xterm-old;; +(*) with_xterm_new=xterm-new;; +esac +echo "$as_me:8965: result: $with_xterm_new" >&5 +echo "${ECHO_T}$with_xterm_new" >&6 +WHICH_XTERM=$with_xterm_new + +echo "$as_me:8969: checking if xterm backspace sends BS or DEL" >&5 +echo $ECHO_N "checking if xterm backspace 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 + withval="$with_xterm_kbs" + with_xterm_kbs=$withval +else + with_xterm_kbs=BS +fi; +case x$with_xterm_kbs in +(xyes|xno|xBS|xbs|x8) + with_xterm_kbs=BS + ;; +(xDEL|xdel|x127) + with_xterm_kbs=DEL + ;; +(*) + with_xterm_kbs=$withval + ;; +esac +echo "$as_me:8990: result: $with_xterm_kbs" >&5 +echo "${ECHO_T}$with_xterm_kbs" >&6 +XTERM_KBS=$with_xterm_kbs + +MAKE_TERMINFO= +if test "$use_database" = no ; then + TERMINFO="${datadir}/terminfo" + MAKE_TERMINFO="#" +else + +echo "$as_me:9000: 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. +if test "${with_terminfo_dirs+set}" = set; then + withval="$with_terminfo_dirs" + +else + withval=${TERMINFO_DIRS:-${datadir}/terminfo} +fi; +IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}" +cf_dst_path= +for cf_src_path in $withval +do + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$cf_src_path" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval cf_src_path="$cf_src_path" + case ".$cf_src_path" in + (.NONE/*) + cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:9040: 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; }; } + ;; +esac + + test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR" + cf_dst_path="${cf_dst_path}${cf_src_path}" +done +IFS="$ac_save_ifs" + +# This may use the prefix/exec_prefix symbols which will only yield "NONE" +# so we have to check/work around. We do prefer the result of "eval"... +eval cf_dst_eval="$cf_dst_path" +case "x$cf_dst_eval" in +(xNONE*) + TERMINFO_DIRS=$cf_dst_path + ;; +(*) + TERMINFO_DIRS="$cf_dst_eval" + ;; +esac + +echo "$as_me:9063: result: $TERMINFO_DIRS" >&5 +echo "${ECHO_T}$TERMINFO_DIRS" >&6 +test -n "$TERMINFO_DIRS" && +cat >>confdefs.h <&5 +echo "$as_me: WARNING: ignoring non-directory/file TERMINFO value" >&2;} + unset TERMINFO + ;; +esac + +echo "$as_me:9078: 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. +if test "${with_default_terminfo_dir+set}" = set; then + withval="$with_default_terminfo_dir" + +else + withval="${TERMINFO:-${datadir}/terminfo}" +fi; if test -n "${datadir}/terminfo" ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:9114: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +fi +eval TERMINFO="$withval" + +echo "$as_me:9123: result: $TERMINFO" >&5 +echo "${ECHO_T}$TERMINFO" >&6 + +cat >>confdefs.h <&5 +echo $ECHO_N "checking if big-core option selected... $ECHO_C" >&6 + +# Check whether --enable-big-core or --disable-big-core was given. +if test "${enable_big_core+set}" = set; then + enableval="$enable_big_core" + with_big_core=$enableval +else + if test "$cross_compiling" = yes; then + with_big_core=no +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 9146 "configure" +#include "confdefs.h" + +#include +#include +int main() { + unsigned long n = 6000000L; + char *s = malloc(n); + if (s != 0) + s[0] = s[n-1] = 0; + ${cf_cv_main_return:-return}(s == 0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:9160: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9163: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:9165: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9168: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + with_big_core=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +with_big_core=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi; +echo "$as_me:9180: result: $with_big_core" >&5 +echo "${ECHO_T}$with_big_core" >&6 +test "x$with_big_core" = "xyes" && +cat >>confdefs.h <<\EOF +#define HAVE_BIG_CORE 1 +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:9190: 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. +if test "${enable_big_strings+set}" = set; then + enableval="$enable_big_strings" + with_big_strings=$enableval +else + + case x$AWK in + (x) + eval with_big_strings=no + ;; + (*) + if ( ${AWK} 'BEGIN { xx = "x"; while (length(xx) < 12000) { xx = xx "x"; }; printf("%s\n", xx); }' 2>/dev/null \ + | $AWK '{ printf "%d\n", length($0); }' 2>/dev/null | $AWK 'BEGIN { eqls=0; recs=0; } { recs++; if ($0 == 12000) eqls++; } END { if (recs != 1 || eqls != 1) exit 1; }' 2>/dev/null >/dev/null ) ; then + eval with_big_strings=yes + else + eval with_big_strings=no + fi + ;; + esac + +fi; +echo "$as_me:9214: 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:9221: 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. +if test "${enable_termcap+set}" = set; then + enableval="$enable_termcap" + with_termcap=$enableval +else + with_termcap=no +fi; +echo "$as_me:9231: 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:9238: 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 + fi + +cat >>confdefs.h <<\EOF +#define PURE_TERMINFO 1 +EOF + +else + + if test "$with_ticlib" != no ; then + { { echo "$as_me:9251: 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:9257: 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. +if test "${with_termpath+set}" = set; then + withval="$with_termpath" + +else + withval=${TERMPATH:-/etc/termcap:/usr/share/misc/termcap} +fi; +IFS="${IFS:- }"; ac_save_ifs="$IFS"; IFS="${PATH_SEPARATOR}" +cf_dst_path= +for cf_src_path in $withval +do + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$cf_src_path" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval cf_src_path="$cf_src_path" + case ".$cf_src_path" in + (.NONE/*) + cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + cf_src_path=`echo "$cf_src_path" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:9297: 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; }; } + ;; +esac + + test -n "$cf_dst_path" && cf_dst_path="${cf_dst_path}$PATH_SEPARATOR" + cf_dst_path="${cf_dst_path}${cf_src_path}" +done +IFS="$ac_save_ifs" + +# This may use the prefix/exec_prefix symbols which will only yield "NONE" +# so we have to check/work around. We do prefer the result of "eval"... +eval cf_dst_eval="$cf_dst_path" +case "x$cf_dst_eval" in +(xNONE*) + TERMPATH=$cf_dst_path + ;; +(*) + TERMPATH="$cf_dst_eval" + ;; +esac + + echo "$as_me:9320: result: $TERMPATH" >&5 +echo "${ECHO_T}$TERMPATH" >&6 + test -n "$TERMPATH" && +cat >>confdefs.h <&5 +echo $ECHO_N "checking if fast termcap-loader is needed... $ECHO_C" >&6 + +# Check whether --enable-getcap or --disable-getcap was given. +if test "${enable_getcap+set}" = set; then + enableval="$enable_getcap" + with_getcap=$enableval +else + with_getcap=no +fi; + echo "$as_me:9338: 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:9345: 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. +if test "${enable_getcap_cache+set}" = set; then + enableval="$enable_getcap_cache" + with_getcap_cache=$enableval +else + with_getcap_cache=no +fi; + echo "$as_me:9355: result: $with_getcap_cache" >&5 +echo "${ECHO_T}$with_getcap_cache" >&6 + test "x$with_getcap_cache" = "xyes" && +cat >>confdefs.h <<\EOF +#define USE_GETCAP_CACHE 1 +EOF + +fi + +### Use option --disable-home-terminfo to completely remove ~/.terminfo +echo "$as_me:9365: 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. +if test "${enable_home_terminfo+set}" = set; then + enableval="$enable_home_terminfo" + with_home_terminfo=$enableval +else + with_home_terminfo=yes +fi; +echo "$as_me:9375: 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:9382: 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. +if test "${enable_root_environ+set}" = set; then + enableval="$enable_root_environ" + with_root_environ=$enableval +else + with_root_environ=yes +fi; +echo "$as_me:9392: 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:9399: 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-environ or --disable-root-environ was given. +if test "${enable_root_environ+set}" = set; then + enableval="$enable_root_environ" + with_root_access=$enableval +else + with_root_access=yes +fi; +echo "$as_me:9409: 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 + +### Use option --enable-symlinks to make tic use symlinks, not hard links +### to reduce storage requirements for the terminfo database. + +for ac_header in \ +unistd.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:9424: 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 9430 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:9434: \"$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:9440: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:9459: 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 <&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 9480 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9511: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9514: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9517: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9520: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:9530: 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 <&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 9553 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9584: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9587: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9590: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9593: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:9603: 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 <&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 +else + + cf_cv_link_funcs= + for cf_func in link symlink ; do + if test "$cross_compiling" = yes; then + + eval 'ac_cv_func_'$cf_func'=error' +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 9627 "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_UNISTD_H +#include +#endif +int main(void) +{ + int fail = 0; + char *src = "conftest.tmp"; + char *dst = "conftest.chk"; + struct stat src_sb, dst_sb; + FILE *fp = fopen(src, "w"); + if (fp == 0) { fail = 3; } else { + fclose(fp); stat(src, &src_sb); + if ($cf_func(src, dst) < 0) { + fail = 1; + } else if (stat(dst, &dst_sb) < 0) { + fail = 2; + } else { + long diff = (dst_sb.st_mtime - src_sb.st_mtime); + if (diff < 0) diff = -diff; + if (diff > 2) fail = 3; + } + } +#ifdef HAVE_UNLINK + unlink(dst); unlink(src); +#else + remove(dst); remove(src); +#endif + ${cf_cv_main_return:-return} (fail); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:9665: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9668: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:9670: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9673: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_link_funcs="$cf_cv_link_funcs $cf_func" + eval 'ac_cv_func_'$cf_func'=yes' +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + eval 'ac_cv_func_'$cf_func'=no' +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + done + test -z "$cf_cv_link_funcs" && cf_cv_link_funcs=no + +fi +echo "$as_me:9691: result: $cf_cv_link_funcs" >&5 +echo "${ECHO_T}$cf_cv_link_funcs" >&6 + test "$ac_cv_func_link" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_LINK 1 +EOF + + test "$ac_cv_func_symlink" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_SYMLINK 1 +EOF + +fi + +with_links=no +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:9711: 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. +if test "${enable_symlinks+set}" = set; then + enableval="$enable_symlinks" + with_symlinks=$enableval +else + with_symlinks=no +fi; + echo "$as_me:9721: 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:9728: 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:9735: result: $with_links" >&5 +echo "${ECHO_T}$with_links" >&6 +fi + +test "x$with_links" = xyes && +cat >>confdefs.h <<\EOF +#define USE_LINKS 1 +EOF + +test "x$with_symlinks" = xyes && +cat >>confdefs.h <<\EOF +#define USE_SYMLINKS 1 +EOF + +### use option --enable-broken-linker to force on use of broken-linker support + +echo "$as_me:9751: 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. +if test "${enable_broken_linker+set}" = set; then + enableval="$enable_broken_linker" + with_broken_linker=$enableval +else + with_broken_linker=no +fi; +echo "$as_me:9761: result: $with_broken_linker" >&5 +echo "${ECHO_T}$with_broken_linker" >&6 + +: "${BROKEN_LINKER:=0}" +if test "x$with_broken_linker" = xyes ; then + +cat >>confdefs.h <<\EOF +#define BROKEN_LINKER 1 +EOF + + BROKEN_LINKER=1 +fi + +### use option --enable-bsdpad to have tputs process BSD-style prefix padding +echo "$as_me:9775: 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. +if test "${enable_bsdpad+set}" = set; then + enableval="$enable_bsdpad" + with_bsdpad=$enableval +else + with_bsdpad=no +fi; +echo "$as_me:9785: result: $with_bsdpad" >&5 +echo "${ECHO_T}$with_bsdpad" >&6 +test "x$with_bsdpad" = xyes && +cat >>confdefs.h <<\EOF +#define BSD_TPUTS 1 +EOF + +### use option --enable-widec to turn on use of wide-character support +NCURSES_CH_T=chtype +NCURSES_LIBUTF8=0 + +NEED_WCHAR_H=0 +NCURSES_MBSTATE_T=0 +NCURSES_WCHAR_T=0 +NCURSES_WINT_T=0 + +# Check to define _XOPEN_SOURCE "automatically" +CPPFLAGS_before_XOPEN="$CPPFLAGS" + +echo "$as_me:9804: 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 9811 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#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 + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9830: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9833: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9836: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9839: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_visible=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_visible=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:9850: result: $cf_cv_posix_visible" >&5 +echo "${ECHO_T}$cf_cv_posix_visible" >&6 + +if test "$cf_cv_posix_visible" = no; then + +cf_XOPEN_SOURCE=600 +cf_POSIX_C_SOURCE=199506L +cf_xopen_source= + +case "$host_os" in +(aix[4-7]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[0-8].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*|midnightbsd*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[56].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + +cf_gnu_xopen_source=$cf_XOPEN_SOURCE + +echo "$as_me:9895: 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 9902 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9921: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9924: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9927: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9930: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_library=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_library=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:9941: result: $cf_cv_gnu_library" >&5 +echo "${ECHO_T}$cf_cv_gnu_library" >&6 + +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:9949: 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 +else + + cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 9961 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #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 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9980: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9983: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9986: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9989: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_library_219=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_library_219=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +echo "$as_me:10001: 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:10006: 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 +else + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source +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 >"conftest.$ac_ext" <<_ACEOF +#line 10111 "configure" +#include "confdefs.h" + + #include + #include + +int +main (void) +{ + + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10131: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10134: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10137: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10140: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_dftsrc_219=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_dftsrc_219=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:10151: 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 + cf_cv_gnu_dftsrc_219=maybe + fi + + if test "x$cf_cv_gnu_dftsrc_219" != xyes; then + + echo "$as_me:10160: 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 10167 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10182: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10185: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10188: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10191: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_GNU_SOURCE +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 >"conftest.$ac_ext" <<_ACEOF +#line 10298 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10313: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10316: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10319: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10322: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_source=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:10337: 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:10342: 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 +else + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10352 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10367: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10370: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10373: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10376: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_default_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_default_source=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:10387: result: $cf_cv_default_source" >&5 +echo "${ECHO_T}$cf_cv_default_source" >&6 + if test "$cf_cv_default_source" = yes + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + fi + fi + fi + +fi + + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +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:10424: 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}:10430: testing if the symbol is already defined go no further ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10433 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10448: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10451: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10454: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10457: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 10478 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10493: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10496: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10499: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10502: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + +echo "${as_me:-configure}:10513: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:10521: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10524 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10539: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10542: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10545: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10548: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:10564: 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 + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +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 + +fi + +fi # cf_cv_posix_visible + + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[6-9]*) + # 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:10681: 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 + ;; +(openbsd[4-5]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[45]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + +echo "$as_me:10713: 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 10720 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10739: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10742: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10745: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10748: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10760 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10779: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10782: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10785: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10788: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:10803: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +for cf_add_cflags in $cf_temp_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +fi + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +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:10961: 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}:10967: testing if the symbol is already defined go no further ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10970 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10985: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10988: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10991: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10994: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 11015 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11030: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11033: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11036: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11039: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + +echo "${as_me:-configure}:11050: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:11058: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11061 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11076: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11079: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11082: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11085: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:11101: 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 + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +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 + +fi + +fi # cf_cv_posix_visible + + ;; +esac + +if test -n "$cf_xopen_source" ; then + +for cf_add_cflags in $cf_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + test -n "$verbose" && echo " removing old option $cf_add_cflags from CFLAGS" 1>&6 + +echo "${as_me:-configure}:11227: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5 + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + test -n "$verbose" && echo " removing old option $cf_add_cflags from CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:11239: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5 + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:11327: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:11337: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +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}:11347: 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" + +fi + +done + +fi + +if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then + echo "$as_me:11359: 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 11362 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11377: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11380: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11383: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11386: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_XOPEN_SOURCE_set=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_XOPEN_SOURCE_set=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:11395: 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 11400 "configure" +#include "confdefs.h" +#include +int +main (void) +{ + +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11415: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11418: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11421: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11424: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_XOPEN_SOURCE_set_ok=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_XOPEN_SOURCE_set_ok=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + if test "$cf_XOPEN_SOURCE_set_ok" = no + then + { echo "$as_me:11435: WARNING: _XOPEN_SOURCE is lower than requested" >&5 +echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;} + fi + else + +echo "$as_me:11440: 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 11447 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11466: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11469: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11472: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11475: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11487 "configure" +#include "confdefs.h" + +#include +#include +#include + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11506: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11509: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11512: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11515: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:11530: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +for cf_add_cflags in $cf_temp_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +fi + + fi +fi +fi # cf_cv_posix_visible + +CPPFLAGS_after_XOPEN="$CPPFLAGS" + +# Work around breakage on OS X + +echo "$as_me:11681: 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 11688 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ +int x = SIGWINCH; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11703: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11706: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11709: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11712: \$? = $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 11719 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include + +int +main (void) +{ +int x = SIGWINCH; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11737: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11740: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11743: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11746: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_define_sigwinch=maybe +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_define_sigwinch=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:11760: 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:11764: 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 +else + +cf_cv_fixup_sigwinch=unknown +cf_sigwinch=32 +while test "$cf_sigwinch" != 1 +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 11775 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include +#include + +int +main (void) +{ + +#if SIGWINCH != $cf_sigwinch +make an error +#endif +int x = SIGWINCH; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11797: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11800: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11803: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11806: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_fixup_sigwinch=$cf_sigwinch + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +cf_sigwinch="`expr "$cf_sigwinch" - 1`" +done + +fi +echo "$as_me:11820: result: $cf_cv_fixup_sigwinch" >&5 +echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6 + + if test "$cf_cv_fixup_sigwinch" != unknown ; then + CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" + fi +fi + +# Checks for CODESET support. + +echo "$as_me:11830: 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 11836 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +char* cs = nl_langinfo(CODESET); (void)cs + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11848: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11851: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11854: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11857: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +am_cv_langinfo_codeset=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:11868: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test "$am_cv_langinfo_codeset" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_LANGINFO_CODESET 1 +EOF + + fi + +# use these variables to work around a defect in gcc's fixincludes. +NCURSES_OK_WCHAR_T= +NCURSES_OK_WINT_T= + +echo "$as_me:11882: 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. +if test "${enable_widec+set}" = set; then + enableval="$enable_widec" + with_widec=$enableval +else + with_widec=no +fi; +echo "$as_me:11892: result: $with_widec" >&5 +echo "${ECHO_T}$with_widec" >&6 + +NCURSES_WCWIDTH_GRAPHICS=1 + +if test "x$with_widec" = xyes ; then + if test "x$disable_lib_suffixes" = xno ; then + LIB_SUFFIX="w${LIB_SUFFIX}" + fi + +cat >>confdefs.h <<\EOF +#define USE_WIDEC_SUPPORT 1 +EOF + +cat >>confdefs.h <<\EOF +#define NCURSES_WIDECHAR 1 +EOF + +for ac_header in \ +wchar.h \ +wctype.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:11916: 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 11922 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:11926: \"$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:11932: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:11951: 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 <&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 11968 "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_WCHAR_H +#include +#endif +#ifdef HAVE_WCTYPE_H +#include +#endif + +int +main (void) +{ + + wint_t foo = 0; + int bar = iswpunct(foo) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11990: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11993: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11996: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11999: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_wchar_h_okay=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_wchar_h_okay=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:12009: 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:12015: 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 12018 "configure" +#include "confdefs.h" +#include + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE_EXTENDED +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12034: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12037: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12040: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12043: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +echo "$as_me:12052: 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:12058: 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 12061 "configure" +#include "confdefs.h" +#include + +int +main (void) +{ + +#if _XOPEN_SOURCE_EXTENDED- < 0 +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12077: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12080: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12083: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12086: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:12095: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test "$cf_result" = no ; then + # perhaps we can override it - try... + CPPFLAGS="$CPPFLAGS -D_XOPEN_SOURCE_EXTENDED=" + fi +fi + +fi + +echo "$as_me:12105: 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 +else + +cat >conftest.in <"conftest.$ac_ext" <<_ACEOF +#line 12176 "configure" +#include "confdefs.h" + +#include +#include +#include + +#define MY_LEN 80 + +int +main(void) +{ + FILE *fp; + int value; + char buffer[MY_LEN + 1]; + char notes[MY_LEN + 1]; + int totals = 0; + int passed = 0; + + if (setlocale(LC_ALL, "en_US.UTF8") || + 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 (*buffer == '-') { + fprintf(stderr, "\\t%s", buffer); + } else if (sscanf(buffer, "%x %s", &value, notes) == 2) { + ++totals; + if (wcwidth(value) == 1) + ++passed; + fprintf(stderr, "%d\\t%s", wcwidth(value), buffer); + } else { + fprintf(stderr, "?\\t%s", buffer); + } + } + } + } + fprintf(stderr, "%d/%d passed wcwidth/graphics check\\n", passed, totals); + return (totals == passed) ? 0 : 1; +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:12220: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12223: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:12225: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12228: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_wcwidth_graphics=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_wcwidth_graphics=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + +fi +echo "$as_me:12241: result: $cf_cv_wcwidth_graphics" >&5 +echo "${ECHO_T}$cf_cv_wcwidth_graphics" >&6 + + test "$cf_cv_wcwidth_graphics" = no && NCURSES_WCWIDTH_GRAPHICS=0 + + # with_overwrite=no + NCURSES_CH_T=cchar_t + +for ac_func in putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:12252: 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 12258 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12289: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12292: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12295: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12298: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:12308: 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 <&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 12329 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:12333: \"$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:12339: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:12358: 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 <&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 +else + + cf_save_LIBS="$LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12376 "configure" +#include "confdefs.h" + +#include +#include +#ifdef HAVE_WCHAR_H +#include +#endif + +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12394: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12397: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12400: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12403: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_utf8_lib=yes +else + echo "$as_me: failed program was:" >&5 +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. +cf_cv_header_path_utf8= +cf_cv_library_path_utf8= + +echo "${as_me:-configure}:12415: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 + +cf_save_LIBS="$LIBS" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 12420 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12433: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12436: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12439: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12442: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +LIBS="-lutf8 $cf_save_LIBS" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 12456 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12469: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12472: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12475: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12478: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + cf_cv_library_file_utf8="-lutf8" + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_find_linkage_utf8=no + LIBS="$cf_save_LIBS" + + test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 + +echo "${as_me:-configure}:12495: testing find linkage for utf8 library ..." 1>&5 + +echo "${as_me:-configure}:12497: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/utf8" && cf_search="$cf_search $cf_header_path/include/utf8" + test -d "$cf_header_path/include/utf8/include" && cf_search="$cf_search $cf_header_path/include/utf8/include" + test -d "$cf_header_path/utf8/include" && cf_search="$cf_search $cf_header_path/utf8/include" + test -d "$cf_header_path/utf8/include/utf8" && cf_search="$cf_search $cf_header_path/utf8/include/utf8" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/utf8" && cf_search="$cf_search $prefix/include/utf8" + test -d "$prefix/include/utf8/include" && cf_search="$cf_search $prefix/include/utf8/include" + test -d "$prefix/utf8/include" && cf_search="$cf_search $prefix/utf8/include" + test -d "$prefix/utf8/include/utf8" && cf_search="$cf_search $prefix/utf8/include/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/utf8" && cf_search="$cf_search $cf_subdir_prefix/include/utf8" + test -d "$cf_subdir_prefix/include/utf8/include" && cf_search="$cf_search $cf_subdir_prefix/include/utf8/include" + test -d "$cf_subdir_prefix/utf8/include" && cf_search="$cf_search $cf_subdir_prefix/utf8/include" + test -d "$cf_subdir_prefix/utf8/include/utf8" && cf_search="$cf_search $cf_subdir_prefix/utf8/include/utf8" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/utf8" && cf_search="$cf_search $includedir/utf8" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/utf8" && cf_search="$cf_search $oldincludedir/utf8" +} + +cf_search="$cf_search $cf_header_path_list" + + for cf_cv_header_path_utf8 in $cf_search + do + 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}:12588: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 12596 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12609: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12612: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12615: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12618: \$? = $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}:12623: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + done + + if test "$cf_cv_find_linkage_utf8" = maybe ; then + +echo "${as_me:-configure}:12641: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + if test "$cf_cv_find_linkage_utf8" != yes ; then + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/utf8" && cf_search="$cf_search $cf_library_path/lib/utf8" + test -d "$cf_library_path/lib/utf8/lib" && cf_search="$cf_search $cf_library_path/lib/utf8/lib" + test -d "$cf_library_path/utf8/lib" && cf_search="$cf_search $cf_library_path/utf8/lib" + test -d "$cf_library_path/utf8/lib/utf8" && cf_search="$cf_search $cf_library_path/utf8/lib/utf8" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/utf8" && cf_search="$cf_search $prefix/lib/utf8" + test -d "$prefix/lib/utf8/lib" && cf_search="$cf_search $prefix/lib/utf8/lib" + test -d "$prefix/utf8/lib" && cf_search="$cf_search $prefix/utf8/lib" + test -d "$prefix/utf8/lib/utf8" && cf_search="$cf_search $prefix/utf8/lib/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/utf8" && cf_search="$cf_search $cf_subdir_prefix/lib/utf8" + test -d "$cf_subdir_prefix/lib/utf8/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/utf8/lib" + test -d "$cf_subdir_prefix/utf8/lib" && cf_search="$cf_search $cf_subdir_prefix/utf8/lib" + test -d "$cf_subdir_prefix/utf8/lib/utf8" && cf_search="$cf_search $cf_subdir_prefix/utf8/lib/utf8" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_cv_library_path_utf8 in $cf_search + do + 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}:12716: 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 12722 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12735: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12738: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12741: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12744: \$? = $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}:12749: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=yes + cf_cv_library_file_utf8="-lutf8" + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_utf8=no + fi + +fi +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_LIBS" + +if test "$cf_cv_find_linkage_utf8" = yes ; then +cf_cv_utf8_lib=add-on +else +cf_cv_utf8_lib=no +fi + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:12791: 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 +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBUTF8_H 1 +EOF + +if test -n "$cf_cv_header_path_utf8" ; then + for cf_add_incdir in $cf_cv_header_path_utf8 + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 12829 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12841: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12844: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12847: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12850: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:12867: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_library_path_utf8" ; then + for cf_add_libdir in $cf_cv_library_path_utf8 + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:12903: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_cv_library_file_utf8; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + + if test "$cf_cv_utf8_lib" != no ; then + NCURSES_LIBUTF8=1 + fi + fi + +# This is needed on Tru64 5.0 to declare mbstate_t +echo "$as_me:12935: 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 12942 "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +mbstate_t state + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12960: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12963: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:12966: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12969: \$? = $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 12976 "configure" +#include "confdefs.h" + +#include +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +mbstate_t value + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:12995: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:12998: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13001: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13004: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_mbstate_t=unknown +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:13016: result: $cf_cv_mbstate_t" >&5 +echo "${ECHO_T}$cf_cv_mbstate_t" >&6 + +if test "$cf_cv_mbstate_t" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + + NEED_WCHAR_H=1 +fi + +# if we do not find mbstate_t in either place, use substitution to provide a fallback. +if test "$cf_cv_mbstate_t" = unknown ; then + NCURSES_MBSTATE_T=1 +fi + +# This is needed on Tru64 5.0 to declare wchar_t +echo "$as_me:13034: 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 13041 "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +wchar_t state + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13059: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13062: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13065: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13068: \$? = $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 13075 "configure" +#include "confdefs.h" + +#include +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +wchar_t value + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13094: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13097: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13100: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13103: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_wchar_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_wchar_t=unknown +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:13115: result: $cf_cv_wchar_t" >&5 +echo "${ECHO_T}$cf_cv_wchar_t" >&6 + +if test "$cf_cv_wchar_t" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + + NEED_WCHAR_H=1 +fi + +# if we do not find wchar_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wchar_t" = unknown ; then + NCURSES_WCHAR_T=1 +fi + +# if we find wchar_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wchar_t" != unknown ; then + NCURSES_OK_WCHAR_T=1 +fi + +# This is needed on Tru64 5.0 to declare wint_t +echo "$as_me:13138: 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 13145 "configure" +#include "confdefs.h" + +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +wint_t state + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13163: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13166: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13169: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13172: \$? = $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 13179 "configure" +#include "confdefs.h" + +#include +#include +#include +#include +#ifdef HAVE_LIBUTF8_H +#include +#endif +int +main (void) +{ +wint_t value + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13198: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13201: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13204: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13207: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_wint_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_wint_t=unknown +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:13219: result: $cf_cv_wint_t" >&5 +echo "${ECHO_T}$cf_cv_wint_t" >&6 + +if test "$cf_cv_wint_t" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + + NEED_WCHAR_H=1 +fi + +# if we do not find wint_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wint_t" = unknown ; then + NCURSES_WINT_T=1 +fi + +# if we find wint_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wint_t" != unknown ; then + NCURSES_OK_WINT_T=1 +fi + + if test "$NCURSES_MBSTATE_T" != 0; then + +cat >>confdefs.h <<\EOF +#define NEED_MBSTATE_T_DEF 1 +EOF + + fi +fi + +### use option --disable-lp64 to allow long chtype +echo "$as_me:13251: 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. +if test "${enable_lp64+set}" = set; then + enableval="$enable_lp64" + with_lp64=$enableval +else + with_lp64=$cf_dft_with_lp64 +fi; +echo "$as_me:13261: result: $with_lp64" >&5 +echo "${ECHO_T}$with_lp64" >&6 + +if test "x$with_lp64" = xyes ; then + cf_cv_enable_lp64=1 +else + cf_cv_enable_lp64=0 +fi + +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:13277: 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 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # 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 13289 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF + rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13309: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13312: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13315: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13318: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" + CC="$CC -n32" + rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13328: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13331: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13334: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13337: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" + break + done + CC=$ac_save_CC + rm -f "conftest.$ac_ext" + fi +fi +echo "$as_me:13351: 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:13357: 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 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >"conftest.$ac_ext" <<_ACEOF +#line 13365 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13385: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13388: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13391: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13394: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 13403 "configure" +#include "confdefs.h" +#define _FILE_OFFSET_BITS 64 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13424: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13427: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13430: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13433: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + break +done +fi +echo "$as_me:13444: 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 + +cat >>confdefs.h <&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 +else + while :; do + ac_cv_sys_large_files=no + cat >"conftest.$ac_ext" <<_ACEOF +#line 13462 "configure" +#include "confdefs.h" +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13482: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13485: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13488: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13491: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 13500 "configure" +#include "confdefs.h" +#define _LARGE_FILES 1 +#include + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13521: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13524: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13527: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13530: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + break +done +fi +echo "$as_me:13541: 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 + +cat >>confdefs.h <&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 +else + while :; do + ac_cv_sys_largefile_source=no + cat >"conftest.$ac_ext" <<_ACEOF +#line 13562 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13574: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13577: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13580: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13583: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 13592 "configure" +#include "confdefs.h" +#define _LARGEFILE_SOURCE 1 +#include +int +main (void) +{ +return !fseeko; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13605: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13608: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13611: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13614: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sys_largefile_source=1; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + break +done +fi +echo "$as_me:13625: 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 + +cat >>confdefs.h <&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 13645 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +return fseeko && fseeko (stdin, 0, 0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13657: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13660: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13663: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13666: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_fseeko=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_fseeko=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:13676: result: $ac_cv_func_fseeko" >&5 +echo "${ECHO_T}$ac_cv_func_fseeko" >&6 +if test $ac_cv_func_fseeko = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_FSEEKO 1 +EOF + +fi + + # Normally we would collect these definitions in the config.h, + # but (like _XOPEN_SOURCE), some environments rely on having these + # defined before any of the system headers are included. Another + # case comes up with C++, e.g., on AIX the compiler compiles the + # header files by themselves before looking at the body files it is + # told to compile. For ncurses, those header files do not include + # the config.h + if test "$ac_cv_sys_large_files" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_LARGE_FILES" + + fi + if test "$ac_cv_sys_largefile_source" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_LARGEFILE_SOURCE" + + fi + if test "$ac_cv_sys_file_offset_bits" != no + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_FILE_OFFSET_BITS=$ac_cv_sys_file_offset_bits" + + fi + + echo "$as_me:13715: 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 13722 "configure" +#include "confdefs.h" + +#pragma GCC diagnostic error "-Wincompatible-pointer-types" +#include +#include + +int +main (void) +{ + + /* if transitional largefile support is setup, this is true */ + extern struct dirent64 * readdir(DIR *); + struct dirent64 *x = readdir((DIR *)0); + struct dirent *y = readdir((DIR *)0); + int z = x - y; + (void)z; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:13745: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:13748: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:13751: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13754: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_struct_dirent64=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_struct_dirent64=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:13765: result: $cf_cv_struct_dirent64" >&5 +echo "${ECHO_T}$cf_cv_struct_dirent64" >&6 + test "$cf_cv_struct_dirent64" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_STRUCT_DIRENT64 1 +EOF + + fi + +### use option --disable-tparm-varargs to make tparm() conform to X/Open +echo "$as_me:13775: 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. +if test "${enable_tparm_varargs+set}" = set; then + enableval="$enable_tparm_varargs" + with_tparm_varargs=$enableval +else + with_tparm_varargs=yes +fi; +echo "$as_me:13785: 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:13792: 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. +if test "${enable_tic_depends+set}" = set; then + enableval="$enable_tic_depends" + with_tic_depends=$enableval +else + with_tic_depends=yes +fi; +echo "$as_me:13802: 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:13809: 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. +if test "${enable_wattr_macros+set}" = set; then + enableval="$enable_wattr_macros" + with_wattr_macros=$enableval +else + with_wattr_macros=no +fi; +if [ "x$with_wattr_macros" != xyes ]; then + NCURSES_WATTR_MACROS=0 + echo "$as_me:13821: result: no" >&5 +echo "${ECHO_T}no" >&6 +else + NCURSES_WATTR_MACROS=1 + echo "$as_me:13825: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +fi + +echo "$as_me:13829: 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. +if test "${with_x11_rgb+set}" = set; then + withval="$with_x11_rgb" + RGB_PATH=$withval +else + RGB_PATH=auto +fi; + +if test "x$RGB_PATH" = xauto +then + RGB_PATH='${exec_prefix}/lib/X11/rgb.txt' + for cf_path in \ + /opt/local/share/X11/rgb.txt \ + /opt/X11/share/X11/rgb.txt \ + /usr/share/X11/rgb.txt \ + /usr/X11/share/X11/rgb.txt \ + /usr/X11/lib/X11/rgb.txt \ + /usr/lib/X11/rgb.txt \ + /etc/X11/rgb.txt \ + /usr/pkg/lib/X11/rgb.txt \ + /usr/X11R7/lib/X11/rgb.txt \ + /usr/X11R6/lib/X11/rgb.txt \ + /usr/X11R5/lib/X11/rgb.txt \ + /usr/X11R4/lib/X11/rgb.txt \ + /usr/local/lib/X11/rgb.txt \ + /usr/local/share/X11/rgb.txt \ + /usr/lib64/X11/rgb.txt + do + if test -f "$cf_path" ; then + RGB_PATH="$cf_path" + break + fi + done +else + cf_path=$RGB_PATH + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$cf_path" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval cf_path="$cf_path" + case ".$cf_path" in + (.NONE/*) + cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:13893: error: expected a pathname, not \"$cf_path\"" >&5 +echo "$as_me: error: expected a pathname, not \"$cf_path\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +fi + +echo "$as_me:13901: result: $RGB_PATH" >&5 +echo "${ECHO_T}$RGB_PATH" >&6 + +cat >>confdefs.h <&5 +echo $ECHO_N "checking for type of bool... $ECHO_C" >&6 + +# Check whether --with-bool or --without-bool was given. +if test "${with_bool+set}" = set; then + withval="$with_bool" + NCURSES_BOOL="$withval" +else + NCURSES_BOOL=auto +fi; +echo "$as_me:13925: result: $NCURSES_BOOL" >&5 +echo "${ECHO_T}$NCURSES_BOOL" >&6 + +echo "$as_me:13928: 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. +if test "${with_caps+set}" = set; then + withval="$with_caps" + TERMINFO_CAPS=Caps.$withval +else + TERMINFO_CAPS=Caps +fi; +test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps +echo "$as_me:13939: result: $TERMINFO_CAPS" >&5 +echo "${ECHO_T}$TERMINFO_CAPS" >&6 + +### use option --with-chtype to override chtype's type +echo "$as_me:13943: 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. +if test "${with_chtype+set}" = set; then + withval="$with_chtype" + NCURSES_CHTYPE="$withval" +else + NCURSES_CHTYPE=$cf_dft_chtype +fi; +echo "$as_me:13953: result: $NCURSES_CHTYPE" >&5 +echo "${ECHO_T}$NCURSES_CHTYPE" >&6 + +### use option --with-ospeed to override ospeed's type +echo "$as_me:13957: 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. +if test "${with_ospeed+set}" = set; then + withval="$with_ospeed" + NCURSES_OSPEED="$withval" +else + NCURSES_OSPEED=short +fi; +echo "$as_me:13967: result: $NCURSES_OSPEED" >&5 +echo "${ECHO_T}$NCURSES_OSPEED" >&6 + +### use option --with-mmask-t to override mmask_t's type +echo "$as_me:13971: 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. +if test "${with_mmask_t+set}" = set; then + withval="$with_mmask_t" + NCURSES_MMASK_T="$withval" +else + NCURSES_MMASK_T=$cf_dft_mmask_t +fi; +echo "$as_me:13981: result: $NCURSES_MMASK_T" >&5 +echo "${ECHO_T}$NCURSES_MMASK_T" >&6 + +### use option --with-ccharw-max to override CCHARW_MAX size +echo "$as_me:13985: 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. +if test "${with_ccharw_max+set}" = set; then + withval="$with_ccharw_max" + NCURSES_CCHARW_MAX="$withval" +else + NCURSES_CCHARW_MAX=5 +fi; +echo "$as_me:13995: result: $NCURSES_CCHARW_MAX" >&5 +echo "${ECHO_T}$NCURSES_CCHARW_MAX" >&6 + +echo "$as_me:13998: 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 14004 "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:14012: \"$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:14018: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_stdc=no +fi +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 14040 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +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 14058 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 14079 "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main (void) +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + $ac_main_return(2); + $ac_main_return (0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:14105: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:14108: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:14110: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14113: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_stdc=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +fi +echo "$as_me:14126: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. + +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:14142: 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 14148 "configure" +#include "confdefs.h" +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14154: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14157: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14160: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14163: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Header=no" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:14173: 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 <&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 14189 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((signed char *) 0) + return 0; +if (sizeof (signed char)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14204: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14207: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14210: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14213: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_signed_char=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_signed_char=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:14223: result: $ac_cv_type_signed_char" >&5 +echo "${ECHO_T}$ac_cv_type_signed_char" >&6 + +echo "$as_me:14226: 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 +else + if test "$ac_cv_type_signed_char" = yes; then + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >"conftest.$ac_ext" <<_ACEOF +#line 14235 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) >= 0)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14247: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14250: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14253: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14256: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 14261 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14273: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14276: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14279: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14282: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1`; ac_mid=`expr 2 '*' "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=-1 ac_mid=-1 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 14298 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) >= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14310: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14313: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14316: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14319: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=`expr "$ac_mid" - 1`; ac_mid=`expr 2 '*' "$ac_mid"` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +# Binary search between lo and hi bounds. +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 14335 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (signed char)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:14347: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:14350: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:14353: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14356: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +ac_cv_sizeof_signed_char=$ac_lo +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:14369: 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 14374 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +FILE *f = fopen ("conftest.val", "w"); +if (!f) + $ac_main_return (1); +fprintf (f, "%ld", (long)(sizeof (signed char))); +fclose (f); + ; + return 0; +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:14390: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:14393: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:14395: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14398: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sizeof_signed_char=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_signed_char=0 +fi +fi +echo "$as_me:14414: result: $ac_cv_sizeof_signed_char" >&5 +echo "${ECHO_T}$ac_cv_sizeof_signed_char" >&6 +cat >>confdefs.h <&5 +echo $ECHO_N "checking if you want to use signed Boolean array in term.h... $ECHO_C" >&6 + +# Check whether --enable-signed-char or --disable-signed-char was given. +if test "${enable_signed_char+set}" = set; then + enableval="$enable_signed_char" + with_signed_char=$enableval +else + with_signed_char=no +fi; +echo "$as_me:14435: 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:14440: checking for type of tparm args" >&5 +echo $ECHO_N "checking for type of tparm args... $ECHO_C" >&6 + +# Check whether --with-tparm-arg or --without-tparm-arg was given. +if test "${with_tparm_arg+set}" = set; then + withval="$with_tparm_arg" + NCURSES_TPARM_ARG="$withval" +else + NCURSES_TPARM_ARG=$cf_dft_tparm_arg +fi; +echo "$as_me:14450: result: $NCURSES_TPARM_ARG" >&5 +echo "${ECHO_T}$NCURSES_TPARM_ARG" >&6 + +### Enable compiling-in rcs id's +echo "$as_me:14454: 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. +if test "${with_rcs_ids+set}" = set; then + withval="$with_rcs_ids" + with_rcs_ids=$withval +else + with_rcs_ids=no +fi; +echo "$as_me:14464: result: $with_rcs_ids" >&5 +echo "${ECHO_T}$with_rcs_ids" >&6 +test "x$with_rcs_ids" = xyes && +cat >>confdefs.h <<\EOF +#define USE_RCS_IDS 1 +EOF + +############################################################################### + +echo "$as_me:14473: 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 + (*.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 + (gzip|compress|BSDI|normal|formatted|catonly) + ;; + (*) + cf_unknown="$cf_unknown $cf_option" + ;; + esac + done + ;; +esac + +echo "$as_me:14562: result: $MANPAGE_FORMAT" >&5 +echo "${ECHO_T}$MANPAGE_FORMAT" >&6 +if test -n "$cf_unknown" ; then + { echo "$as_me:14565: WARNING: Unexpected manpage-format $cf_unknown" >&5 +echo "$as_me: WARNING: Unexpected manpage-format $cf_unknown" >&2;} +fi + +echo "$as_me:14569: 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=`cd "$srcdir" && pwd`/man/man_db.renames + else + MANPAGE_RENAMES=no + fi + ;; +esac + +if test "$MANPAGE_RENAMES" != no ; then + if test -f "$srcdir/man/$MANPAGE_RENAMES" ; then + MANPAGE_RENAMES=`cd "$srcdir/man" && pwd`/$MANPAGE_RENAMES + elif test ! -f "$MANPAGE_RENAMES" ; then + { { echo "$as_me:14597: error: not a filename: $MANPAGE_RENAMES" >&5 +echo "$as_me: error: not a filename: $MANPAGE_RENAMES" >&2;} + { (exit 1); exit 1; }; } + fi + + test ! -d man && mkdir man + + # Construct a sed-script to perform renaming within man-pages + if test -n "$MANPAGE_RENAMES" ; then + test ! -d man && mkdir man + $SHELL "$srcdir/man/make_sed.sh" "$MANPAGE_RENAMES" >./edit_man.sed + fi +fi + +echo "$as_me:14611: result: $MANPAGE_RENAMES" >&5 +echo "${ECHO_T}$MANPAGE_RENAMES" >&6 + +echo "$as_me:14614: 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:14625: 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:14639: 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:14652: WARNING: cannot make symlinks" >&5 +echo "$as_me: WARNING: cannot make symlinks" >&2;} + MANPAGE_SYMLINKS=no +fi +fi + +echo "$as_me:14658: result: $MANPAGE_SYMLINKS" >&5 +echo "${ECHO_T}$MANPAGE_SYMLINKS" >&6 +fi + +echo "$as_me:14662: 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:14673: 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 + +case "$MANPAGE_FORMAT" in +(*catonly*) + cf_format=yes + cf_inboth=no + ;; +(*formatted*) + cf_format=yes + cf_inboth=yes + ;; +(*) + cf_format=no + cf_inboth=no + ;; +esac + +test ! -d man && mkdir man + +cf_so_strip= +cf_compress= +case "$MANPAGE_FORMAT" in +(*compress*) + cf_so_strip="Z" + cf_compress=compress + ;; +(*gzip*) + cf_so_strip="gz" + cf_compress=gzip + ;; +esac + +cf_edit_man=./edit_man.sh +cf_man_alias=`pwd`/man_alias.sed + +cat >$cf_edit_man <>$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_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP +CF_EOF +else +cat >>$cf_edit_man <\$TMP +CF_EOF +fi + +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP +fi +CF_EOF + +if test "$with_overwrite" != yes ; then +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP +CF_EOF +fi + +if test "$with_curses_h" != yes ; then +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP +CF_EOF +fi + +cat >>$cf_edit_man <\$TMP.out + mv \$TMP.out \$TMP + fi +CF_EOF + +if test -n "$cf_compress" ; then +cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP +CF_EOF +if test -n "$cf_compress" ; then +cat >>$cf_edit_man <>$cf_edit_man <&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. +if test "${enable_ext_funcs+set}" = set; then + enableval="$enable_ext_funcs" + with_ext_funcs=$enableval +else + with_ext_funcs=yes +fi; +echo "$as_me:15016: result: $with_ext_funcs" >&5 +echo "${ECHO_T}$with_ext_funcs" >&6 +if test "x$with_ext_funcs" = xyes ; then + NCURSES_EXT_FUNCS=1 + +cat >>confdefs.h <<\EOF +#define NCURSES_EXT_FUNCS 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_ASSUME_DEFAULT_COLORS 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_CURSES_VERSION 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_HAS_KEY 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_RESIZETERM 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_RESIZE_TERM 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_ENTRY_H 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_USE_DEFAULT_COLORS 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_USE_EXTENDED_NAMES 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_USE_SCREEN 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_USE_WINDOW 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_WRESIZE 1 +EOF + + GENERATED_EXT_FUNCS=generated + test "x$with_ext_funcs" = xyes || cf_dft_ext_spfuncs=no +else + NCURSES_EXT_FUNCS=0 + GENERATED_EXT_FUNCS= +fi + +echo "$as_me:15076: 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. +if test "${enable_sp_funcs+set}" = set; then + enableval="$enable_sp_funcs" + with_sp_funcs=$enableval +else + with_sp_funcs=$cf_dft_ext_spfuncs +fi; +echo "$as_me:15086: result: $with_sp_funcs" >&5 +echo "${ECHO_T}$with_sp_funcs" >&6 +if test "x$with_sp_funcs" = xyes ; then + NCURSES_SP_FUNCS=1 + +cat >>confdefs.h <<\EOF +#define NCURSES_SP_FUNCS 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_TPUTS_SP 1 +EOF + + GENERATED_SP_FUNCS=generated +else + NCURSES_SP_FUNCS=0 + GENERATED_SP_FUNCS= +fi + +echo "$as_me:15105: 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. +if test "${enable_term_driver+set}" = set; then + enableval="$enable_term_driver" + with_term_driver=$enableval +else + with_term_driver=no +fi; +echo "$as_me:15115: result: $with_term_driver" >&5 +echo "${ECHO_T}$with_term_driver" >&6 +if test "x$with_term_driver" = xyes ; then + +cat >>confdefs.h <<\EOF +#define USE_TERM_DRIVER 1 +EOF + + if test "x$with_termlib" != xno ; then + { { echo "$as_me:15124: 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:15129: 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:15136: 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. +if test "${enable_const+set}" = set; then + enableval="$enable_const" + with_ext_const=$enableval +else + with_ext_const=$cf_dft_ext_const +fi; +echo "$as_me:15146: result: $with_ext_const" >&5 +echo "${ECHO_T}$with_ext_const" >&6 +NCURSES_CONST='/*nothing*/' +if test "x$with_ext_const" = xyes ; then + NCURSES_CONST=const +fi + +### use option --enable-ext-colors to turn on use of colors beyond 16. +echo "$as_me:15154: 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. +if test "${enable_ext_colors+set}" = set; then + enableval="$enable_ext_colors" + with_ext_colors=$enableval +else + with_ext_colors=$cf_dft_ext_colors +fi; +echo "$as_me:15164: 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:15169: 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) + +if test "${with_abi_version+set}" != set; then + case "$cf_cv_rel_version" in + (5.*) + cf_cv_rel_version=6.0 + cf_cv_abi_version=6 + { echo "$as_me:15179: WARNING: overriding ABI version to $cf_cv_abi_version" >&5 +echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_version" >&2;} + ;; + esac +fi + + NCURSES_EXT_COLORS=1 + +cat >>confdefs.h <<\EOF +#define NCURSES_EXT_COLORS 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_ALLOC_PAIR 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_INIT_EXTENDED_COLOR 1 +EOF + +cat >>confdefs.h <<\EOF +#define HAVE_RESET_COLOR_PAIRS 1 +EOF + + fi +fi + +### use option --enable-ext-mouse to modify coding to support 5-button mice +echo "$as_me:15207: 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. +if test "${enable_ext_mouse+set}" = set; then + enableval="$enable_ext_mouse" + with_ext_mouse=$enableval +else + with_ext_mouse=$cf_dft_ext_mouse +fi; +echo "$as_me:15217: result: $with_ext_mouse" >&5 +echo "${ECHO_T}$with_ext_mouse" >&6 +NCURSES_MOUSE_VERSION=1 +if test "x$with_ext_mouse" = xyes ; then + NCURSES_MOUSE_VERSION=2 + +if test "${with_abi_version+set}" != set; then + case "$cf_cv_rel_version" in + (5.*) + cf_cv_rel_version=6.0 + cf_cv_abi_version=6 + { echo "$as_me:15228: WARNING: overriding ABI version to $cf_cv_abi_version" >&5 +echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_version" >&2;} + ;; + esac +fi + +fi + +### use option --enable-ext-putwin to turn on extended screendumps +echo "$as_me:15237: 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. +if test "${enable_ext_putwin+set}" = set; then + enableval="$enable_ext_putwin" + with_ext_putwin=$enableval +else + with_ext_putwin=$cf_dft_ext_putwin +fi; +echo "$as_me:15247: result: $with_ext_putwin" >&5 +echo "${ECHO_T}$with_ext_putwin" >&6 +if test "x$with_ext_putwin" = xyes ; then + +cat >>confdefs.h <<\EOF +#define NCURSES_EXT_PUTWIN 1 +EOF + +fi + +echo "$as_me:15257: 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. +if test "${enable_no_padding+set}" = set; then + enableval="$enable_no_padding" + with_no_padding=$enableval +else + with_no_padding=$with_ext_funcs +fi; +echo "$as_me:15267: result: $with_no_padding" >&5 +echo "${ECHO_T}$with_no_padding" >&6 +test "x$with_no_padding" = xyes && +cat >>confdefs.h <<\EOF +#define NCURSES_NO_PADDING 1 +EOF + +### use option --enable-sigwinch to turn on use of SIGWINCH logic +echo "$as_me:15275: 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. +if test "${enable_sigwinch+set}" = set; then + enableval="$enable_sigwinch" + with_sigwinch=$enableval +else + with_sigwinch=$with_ext_funcs +fi; +echo "$as_me:15285: result: $with_sigwinch" >&5 +echo "${ECHO_T}$with_sigwinch" >&6 +test "x$with_sigwinch" = xyes && +cat >>confdefs.h <<\EOF +#define USE_SIGWINCH 1 +EOF + +### use option --enable-tcap-names to allow user to define new capabilities +echo "$as_me:15293: 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. +if test "${enable_tcap_names+set}" = set; then + enableval="$enable_tcap_names" + with_tcap_names=$enableval +else + with_tcap_names=$with_ext_funcs +fi; +echo "$as_me:15303: result: $with_tcap_names" >&5 +echo "${ECHO_T}$with_tcap_names" >&6 +NCURSES_XNAMES=0 +test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1 + +############################################################################## + +echo "$as_me:15310: 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. +if test "${with_pthread+set}" = set; then + withval="$with_pthread" + with_pthread=$withval +else + with_pthread=no +fi; +echo "$as_me:15320: result: $with_pthread" >&5 +echo "${ECHO_T}$with_pthread" >&6 + +if test "$with_pthread" != no ; then + echo "$as_me:15324: 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 15330 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:15334: \"$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:15340: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_pthread_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_pthread_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:15359: 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 + +cat >>confdefs.h <<\EOF +#define HAVE_PTHREADS_H 1 +EOF + + for cf_lib_pthread in pthread c_r + do + echo "$as_me:15369: 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" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 15390 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + int rc = pthread_create(0,0,0,0); + int r2 = pthread_mutexattr_settype(0, 0); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15407: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15410: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15413: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15416: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + with_pthread=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +with_pthread=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$cf_save_LIBS" + echo "$as_me:15426: result: $with_pthread" >&5 +echo "${ECHO_T}$with_pthread" >&6 + test "$with_pthread" = yes && break + done + + if test "$with_pthread" = yes ; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_lib_pthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +cat >>confdefs.h <<\EOF +#define HAVE_LIBPTHREADS 1 +EOF + + else + { { echo "$as_me:15454: error: Cannot link with pthread library" >&5 +echo "$as_me: error: Cannot link with pthread library" >&2;} + { (exit 1); exit 1; }; } + fi + +fi + +fi + +if test "x$with_pthread" != xno; then + echo "$as_me:15464: 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 15470 "configure" +#include "confdefs.h" +#define pthread_kill autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef pthread_kill + +#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 pthread_kill (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_pthread_kill) || defined (__stub___pthread_kill) +#error found stub for pthread_kill +#endif + + return pthread_kill (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15501: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15504: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15507: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15510: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_pthread_kill=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_pthread_kill=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:15520: 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:15524: 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. +if test "${enable_pthreads_eintr+set}" = set; then + enableval="$enable_pthreads_eintr" + use_pthreads_eintr=$enableval +else + use_pthreads_eintr=no +fi; + echo "$as_me:15534: result: $use_pthreads_eintr" >&5 +echo "${ECHO_T}$use_pthreads_eintr" >&6 + if test "x$use_pthreads_eintr" = xyes ; then + +cat >>confdefs.h <<\EOF +#define USE_PTHREADS_EINTR 1 +EOF + + fi +fi + + echo "$as_me:15545: 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. +if test "${enable_weak_symbols+set}" = set; then + enableval="$enable_weak_symbols" + use_weak_symbols=$enableval +else + use_weak_symbols=no +fi; + echo "$as_me:15555: result: $use_weak_symbols" >&5 +echo "${ECHO_T}$use_weak_symbols" >&6 + if test "x$use_weak_symbols" = xyes ; then + +echo "$as_me:15559: 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 15566 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ + +#if defined(__GNUC__) +# if defined __USE_ISOC99 +# define _cat_pragma(exp) _Pragma(#exp) +# define _weak_pragma(exp) _cat_pragma(weak name) +# else +# define _weak_pragma(exp) +# endif +# define _declare(name) __extension__ extern __typeof__(name) name +# define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) +#endif + +weak_symbol(fopen); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:15592: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15595: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:15598: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15601: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_weak_symbols=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_weak_symbols=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:15612: result: $cf_cv_weak_symbols" >&5 +echo "${ECHO_T}$cf_cv_weak_symbols" >&6 + + else + cf_cv_weak_symbols=no + fi + + if test "x$cf_cv_weak_symbols" = xyes ; then + +cat >>confdefs.h <<\EOF +#define USE_WEAK_SYMBOLS 1 +EOF + + fi +fi + +PTHREAD= +if test "x$with_pthread" = "xyes" ; then + +cat >>confdefs.h <<\EOF +#define USE_PTHREADS 1 +EOF + + enable_reentrant=yes + if test "x$cf_cv_weak_symbols" = xyes ; then + PTHREAD=-lpthread + +cf_add_libs="$PRIVATE_LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +PRIVATE_LIBS="$cf_add_libs" + + fi +fi + +# Reentrant code has to be opaque; there's little advantage to making ncurses +# 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:15662: 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. +if test "${enable_reentrant+set}" = set; then + enableval="$enable_reentrant" + with_reentrant=$enableval +else + with_reentrant=no +fi; +echo "$as_me:15672: result: $with_reentrant" >&5 +echo "${ECHO_T}$with_reentrant" >&6 +if test "x$with_reentrant" = xyes ; then + cf_cv_enable_reentrant=1 + cf_cv_enable_opaque="NCURSES_INTERNALS" + NCURSES_SIZE_T=int + if test "x$cf_cv_weak_symbols" = xyes ; then + +# remove pthread library from $LIBS +LIBS=`echo "$LIBS" | sed -e 's/-lpthread[ ]//g' -e 's/-lpthread$//'` + +cf_add_libs="$TEST_LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +TEST_LIBS="$cf_add_libs" + +cf_add_libs="$TEST_LIBS2" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +TEST_LIBS2="$cf_add_libs" + +cf_add_libs="$PRIVATE_LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +PRIVATE_LIBS="$cf_add_libs" + + else + # when not using weak symbols but with_reentrant, + # add 't' to the library suffix on all platforms + # except cygwin, where we only do that if ALSO + # compiling with full thread support. + case "$host" in + (*cygwin* | *msys*) + if test "$with_pthread" = "yes" ; then + if test "x$disable_lib_suffixes" = "xno" ; then + LIB_SUFFIX="t${LIB_SUFFIX}" + fi + fi ;; + (*) + if test "x$disable_lib_suffixes" = "xno" ; then + LIB_SUFFIX="t${LIB_SUFFIX}" + fi + ;; + esac + fi + +cat >>confdefs.h <<\EOF +#define USE_REENTRANT 1 +EOF + +if test "${with_abi_version+set}" != set; then + case "$cf_cv_rel_version" in + (5.*) + cf_cv_rel_version=6.0 + cf_cv_abi_version=6 + { echo "$as_me:15760: WARNING: overriding ABI version to $cf_cv_abi_version" >&5 +echo "$as_me: WARNING: overriding ABI version to $cf_cv_abi_version" >&2;} + ;; + esac +fi + +else + cf_cv_enable_reentrant=0 + cf_cv_enable_opaque="NCURSES_OPAQUE" + NCURSES_SIZE_T=short +fi + +echo "$as_me:15772: checking if you want opaque curses-library structures" >&5 +echo $ECHO_N "checking if you want opaque curses-library structures... $ECHO_C" >&6 + +# Check whether --enable-opaque-curses or --disable-opaque-curses was given. +if test "${enable_opaque_curses+set}" = set; then + enableval="$enable_opaque_curses" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_opaque_curses=yes + else + + test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes + test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no + + fi +else + enableval=no + + test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes + test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no + +fi; +echo "$as_me:15794: 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:15799: error: reentrant configuration requires opaque library" >&5 +echo "$as_me: error: reentrant configuration requires opaque library" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:15803: checking if you want opaque form-library structures" >&5 +echo $ECHO_N "checking if you want opaque form-library structures... $ECHO_C" >&6 + +# Check whether --enable-opaque-form or --disable-opaque-form was given. +if test "${enable_opaque_form+set}" = set; then + enableval="$enable_opaque_form" + enable_opaque_form=yes +else + enable_opaque_form=no +fi; +echo "$as_me:15813: result: $enable_opaque_form" >&5 +echo "${ECHO_T}$enable_opaque_form" >&6 + +echo "$as_me:15816: checking if you want opaque menu-library structures" >&5 +echo $ECHO_N "checking if you want opaque menu-library structures... $ECHO_C" >&6 + +# Check whether --enable-opaque-menu or --disable-opaque-menu was given. +if test "${enable_opaque_menu+set}" = set; then + enableval="$enable_opaque_menu" + enable_opaque_menu=yes +else + enable_opaque_menu=no +fi; +echo "$as_me:15826: result: $enable_opaque_menu" >&5 +echo "${ECHO_T}$enable_opaque_menu" >&6 + +echo "$as_me:15829: checking if you want opaque panel-library structures" >&5 +echo $ECHO_N "checking if you want opaque panel-library structures... $ECHO_C" >&6 + +# Check whether --enable-opaque-panel or --disable-opaque-panel was given. +if test "${enable_opaque_panel+set}" = set; then + enableval="$enable_opaque_panel" + enable_opaque_panel=yes +else + enable_opaque_panel=no +fi; +echo "$as_me:15839: result: $enable_opaque_panel" >&5 +echo "${ECHO_T}$enable_opaque_panel" >&6 + +NCURSES_OPAQUE=0; test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1 +NCURSES_OPAQUE_FORM=0; test "$enable_opaque_form" = yes && NCURSES_OPAQUE_FORM=1 +NCURSES_OPAQUE_MENU=0; test "$enable_opaque_menu" = yes && NCURSES_OPAQUE_MENU=1 +NCURSES_OPAQUE_PANEL=0; test "$enable_opaque_panel" = yes && NCURSES_OPAQUE_PANEL=1 + +### Allow using a different wrap-prefix +if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then + echo "$as_me:15849: 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. +if test "${with_wrap_prefix+set}" = set; then + withval="$with_wrap_prefix" + NCURSES_WRAP_PREFIX=$withval +else + NCURSES_WRAP_PREFIX=_nc_ +fi; + echo "$as_me:15859: result: $NCURSES_WRAP_PREFIX" >&5 +echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6 +else + NCURSES_WRAP_PREFIX=_nc_ +fi + +cat >>confdefs.h <&5 +echo $ECHO_N "checking if you want all development code... $ECHO_C" >&6 + +# Check whether --with-develop or --without-develop was given. +if test "${with_develop+set}" = set; then + withval="$with_develop" + with_develop=$withval +else + with_develop=no +fi; +echo "$as_me:15882: result: $with_develop" >&5 +echo "${ECHO_T}$with_develop" >&6 + +### use option --enable-hard-tabs to turn on use of hard-tabs optimize +echo "$as_me:15886: 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. +if test "${enable_hard_tabs+set}" = set; then + enableval="$enable_hard_tabs" + +else + enable_hard_tabs=$with_develop +fi; +echo "$as_me:15896: result: $enable_hard_tabs" >&5 +echo "${ECHO_T}$enable_hard_tabs" >&6 +test "x$enable_hard_tabs" = xyes && +cat >>confdefs.h <<\EOF +#define USE_HARD_TABS 1 +EOF + +### use option --enable-xmc-glitch to turn on use of magic-cookie optimize +echo "$as_me:15904: 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. +if test "${enable_xmc_glitch+set}" = set; then + enableval="$enable_xmc_glitch" + +else + enable_xmc_glitch=$with_develop +fi; +echo "$as_me:15914: result: $enable_xmc_glitch" >&5 +echo "${ECHO_T}$enable_xmc_glitch" >&6 +test "x$enable_xmc_glitch" = xyes && +cat >>confdefs.h <<\EOF +#define USE_XMC_SUPPORT 1 +EOF + +############################################################################### +# These are just experimental, probably should not be in a package: + +echo "$as_me:15924: 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. +if test "${enable_assumed_color+set}" = set; then + enableval="$enable_assumed_color" + with_assumed_color=$enableval +else + with_assumed_color=yes +fi; +echo "$as_me:15934: result: $with_assumed_color" >&5 +echo "${ECHO_T}$with_assumed_color" >&6 +test "x$with_assumed_color" = xyes && +cat >>confdefs.h <<\EOF +#define USE_ASSUMED_COLOR 1 +EOF + +### use option --enable-hashmap to turn on use of hashmap scrolling logic +echo "$as_me:15942: 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. +if test "${enable_hashmap+set}" = set; then + enableval="$enable_hashmap" + with_hashmap=$enableval +else + with_hashmap=yes +fi; +echo "$as_me:15952: result: $with_hashmap" >&5 +echo "${ECHO_T}$with_hashmap" >&6 +test "x$with_hashmap" = xyes && +cat >>confdefs.h <<\EOF +#define USE_HASHMAP 1 +EOF + +### use option --enable-colorfgbg to turn on use of $COLORFGBG environment +echo "$as_me:15960: 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. +if test "${enable_colorfgbg+set}" = set; then + enableval="$enable_colorfgbg" + with_colorfgbg=$enableval +else + with_colorfgbg=no +fi; +echo "$as_me:15970: result: $with_colorfgbg" >&5 +echo "${ECHO_T}$with_colorfgbg" >&6 +test "x$with_colorfgbg" = xyes && +cat >>confdefs.h <<\EOF +#define USE_COLORFGBG 1 +EOF + +### use option --enable-fvisibility to turn on use of gcc-specific feature +echo "$as_me:15978: 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. +if test "${enable_fvisibility+set}" = set; then + enableval="$enable_fvisibility" + cf_with_fvisibility=$enableval +else + cf_with_fvisibility=no +fi; +echo "$as_me:15988: 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:15995: 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 +else + + cf_save_cflags="$CFLAGS" + CFLAGS="$CFLAGS -fvisibility=hidden" + cat >"conftest.$ac_ext" <<_ACEOF +#line 16004 "configure" +#include "confdefs.h" + +__attribute__ ((visibility("default"))) int somefunc() {return 42;} + +int +main (void) +{ + + if (somefunc()) return 1; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16020: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16023: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16026: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16029: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_fvisibility_hidden=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_fvisibility_hidden=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + CFLAGS=$cf_save_cflags + +fi +echo "$as_me:16041: result: $cf_cv_fvisibility_hidden" >&5 +echo "${ECHO_T}$cf_cv_fvisibility_hidden" >&6 + + if test "x$cf_cv_fvisibility_hidden" = xyes + then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -fvisibility=hidden +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 + + NCURSES_IMPEXP="__attribute__ ((visibility(\"default\")))" + fi + if test -n "$CXX" + then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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:16156: 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 +else + + cf_save_cflags="$CXXFLAGS" + CXXFLAGS="$CXXFLAGS -fvisibility=hidden" + cat >"conftest.$ac_ext" <<_ACEOF +#line 16165 "configure" +#include "confdefs.h" + +__attribute__ ((visibility("default"))) int somefunc() {return 42;} + +int +main (void) +{ + + if (somefunc()) return 1; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16181: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16184: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16187: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16190: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_fvisibility_hidden2=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_fvisibility_hidden2=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + CXXFLAGS=$cf_save_cflags + +fi +echo "$as_me:16202: result: $cf_cv_fvisibility_hidden2" >&5 +echo "${ECHO_T}$cf_cv_fvisibility_hidden2" >&6 + + if test "x$cf_cv_fvisibility_hidden2" = xyes + then + +cf_save_CXXFLAGS="$CFLAGS" +CFLAGS="$CXXFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -fvisibility=hidden +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 + +CXXFLAGS="$CFLAGS" +CFLAGS="$cf_save_CXXFLAGS" + + NCURSES_CXX_IMPEXP="__attribute__ ((visibility(\"default\")))" + fi + 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" + + fi +fi + +### use option --enable-interop to turn on use of bindings used for interop +echo "$as_me:16325: 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. +if test "${enable_interop+set}" = set; then + enableval="$enable_interop" + with_exp_interop=$enableval +else + with_exp_interop=$cf_dft_interop +fi; +echo "$as_me:16335: 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:16341: 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. +if test "${enable_safe_sprintf+set}" = set; then + enableval="$enable_safe_sprintf" + with_safe_sprintf=$enableval +else + with_safe_sprintf=no +fi; +echo "$as_me:16351: 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:16357: 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. +if test "${enable_scroll_hints+set}" = set; then + enableval="$enable_scroll_hints" + with_scroll_hints=$enableval +else + with_scroll_hints=yes +fi; +echo "$as_me:16367: result: $with_scroll_hints" >&5 +echo "${ECHO_T}$with_scroll_hints" >&6 +test "x$with_scroll_hints" = xyes && +cat >>confdefs.h <<\EOF +#define USE_SCROLL_HINTS 1 +EOF + +fi + +echo "$as_me:16376: 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. +if test "${enable_wgetch_events+set}" = set; then + enableval="$enable_wgetch_events" + with_wgetch_events=$enableval +else + with_wgetch_events=no +fi; +echo "$as_me:16386: result: $with_wgetch_events" >&5 +echo "${ECHO_T}$with_wgetch_events" >&6 +if test "x$with_wgetch_events" = xyes ; then + +cat >>confdefs.h <<\EOF +#define NCURSES_WGETCH_EVENTS 1 +EOF + + NCURSES_WGETCH_EVENTS=1 +else + NCURSES_WGETCH_EVENTS=0 +fi + +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*|*-msvc*) + echo "$as_me:16401: 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 +fi; + echo "$as_me:16411: 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 + +############################################################################### + +### use option --disable-echo to suppress full display compiling commands + +echo "$as_me:16437: 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. +if test "${enable_echo+set}" = set; then + enableval="$enable_echo" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + + ECHO_LT='--silent' + ECHO_LD='@echo linking $@;' + RULE_CC='@echo compiling $<' + SHOW_CC='@echo compiling $@' + ECHO_CC='@' + + else + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + + fi +else + enableval=yes + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + +fi; +echo "$as_me:16471: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 + +if test "x$enable_echo" = xyes; then + ECHO_LINK= +else + ECHO_LINK='@ echo linking $@ ... ;' + test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent" + test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent" +fi + +# --disable-stripping is used for debugging + +echo "$as_me:16484: 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. +if test "${enable_stripping+set}" = set; then + enableval="$enable_stripping" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + enable_stripping=no + else + enable_stripping=yes + fi +else + enableval=yes + enable_stripping=yes + +fi; +echo "$as_me:16501: result: $enable_stripping" >&5 +echo "${ECHO_T}$enable_stripping" >&6 + +if test "$enable_stripping" = yes +then + INSTALL_OPT_S="-s" +else + INSTALL_OPT_S= +fi + +: "${INSTALL:=install}" +echo "$as_me:16512: 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 +else + + rm -rf ./conftest* + date >conftest.in + mkdir conftest.out + sleep 3 + if $INSTALL -p conftest.in conftest.out 2>/dev/null + then + if test -f conftest.out/conftest.in + then + test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \ + test conftest.out/conftest.in -nt conftest.in 2>conftest.err + if test -s conftest.err + then + cf_cv_install_p=no + else + cf_cv_install_p=yes + fi + else + cf_cv_install_p=no + fi + else + cf_cv_install_p=no + fi + rm -rf ./conftest* + +fi +echo "$as_me:16543: result: $cf_cv_install_p" >&5 +echo "${ECHO_T}$cf_cv_install_p" >&6 + +echo "$as_me:16546: 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) + with_install_o=yes + ;; +(*) + with_install_o=no + ;; +esac + +echo "$as_me:16557: result: $with_install_o" >&5 +echo "${ECHO_T}$with_install_o" >&6 +if test "x$with_install_o" = xyes +then + INSTALL_OPT_O="`id root|sed -e 's/uid=[0-9]*(/ -o /' -e 's/gid=[0-9]*(/ -g /' -e 's/ [^=[:space:]][^=[:space:]]*=.*/ /' -e 's/)//g'`" +else + INSTALL_OPT_O= +fi + +# If we're avoiding relinking of shared libraries during install, that is to +# avoid modifying the build-tree. For the same reason, avoid doing ranlib if +# the install program has "-p" (for preserving timestamps). +cf_cv_do_reranlib=yes +if test "x$cf_cv_install_p" = xyes +then + if test "x$cf_cv_do_relink" != xyes + then + cf_cv_do_reranlib=no + INSTALL_OPT_P="-p" + INSTALL_LIB="$INSTALL_LIB $INSTALL_OPT_P" + fi +fi + +### use option --enable-warnings to turn on all gcc warnings + +echo "$as_me:16582: 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. +if test "${enable_stdnoreturn+set}" = set; then + enableval="$enable_stdnoreturn" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_stdnoreturn=yes + else + enable_stdnoreturn=no + fi +else + enableval=no + enable_stdnoreturn=no + +fi; +echo "$as_me:16599: result: $enable_stdnoreturn" >&5 +echo "${ECHO_T}$enable_stdnoreturn" >&6 + +if test $enable_stdnoreturn = yes; then +echo "$as_me:16603: 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 16609 "configure" +#include "confdefs.h" + +#include +#include +#include +static _Noreturn void giveup(void) { exit(0); } + +int +main (void) +{ +if (feof(stdin)) giveup() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16626: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16629: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16632: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16635: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_c11_noreturn=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_c11_noreturn=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:16646: result: $cf_cv_c11_noreturn" >&5 +echo "${ECHO_T}$cf_cv_c11_noreturn" >&6 +else + cf_cv_c11_noreturn=no, +fi + +if test "$cf_cv_c11_noreturn" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_STDNORETURN_H 1 +EOF + +cat >>confdefs.h <&6 + +echo "${as_me:-configure}:16676: testing repairing CFLAGS: $CFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $CFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + CFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $CFLAGS" 1>&6 + +echo "${as_me:-configure}:16699: testing ... fixed $CFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:16703: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +if test "$GCC" = yes || test "$GXX" = yes +then + case $CPPFLAGS in + (*-Werror=*) + test -n "$verbose" && echo " repairing CPPFLAGS: $CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:16715: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $CPPFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + CPPFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:16738: testing ... fixed $CPPFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:16742: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +if test "$GCC" = yes || test "$GXX" = yes +then + case $LDFLAGS in + (*-Werror=*) + test -n "$verbose" && echo " repairing LDFLAGS: $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:16754: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $LDFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + LDFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:16777: testing ... fixed $LDFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:16781: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +echo "$as_me:16787: 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. +if test "${enable_warnings+set}" = set; then + enableval="$enable_warnings" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_warnings=yes + else + enable_warnings=no + fi +else + enableval=no + enable_warnings=no + +fi; +echo "$as_me:16804: result: $enable_warnings" >&5 +echo "${ECHO_T}$enable_warnings" >&6 +if test "$enable_warnings" = "yes" +then + +if test "x$have_x" = xyes; then + +cf_save_LIBS_CF_CONST_X_STRING="$LIBS" +cf_save_CFLAGS_CF_CONST_X_STRING="$CFLAGS" +cf_save_CPPFLAGS_CF_CONST_X_STRING="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[IUD]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done + +cat >"conftest.$ac_ext" <<_ACEOF +#line 16828 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ +String foo = malloc(1); free((void*)foo) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16843: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16846: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16849: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16852: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + +echo "$as_me:16855: 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 16862 "configure" +#include "confdefs.h" + +#define _CONST_X_STRING /* X11R7.8 (perhaps) */ +#undef XTSTRINGDEFINES /* X11R5 and later */ +#include +#include + +int +main (void) +{ +String foo = malloc(1); *foo = 0 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:16879: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16882: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:16885: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16888: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_const_x_string=no + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_const_x_string=yes + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:16903: result: $cf_cv_const_x_string" >&5 +echo "${ECHO_T}$cf_cv_const_x_string" >&6 + +LIBS="$cf_save_LIBS_CF_CONST_X_STRING" +CFLAGS="$cf_save_CFLAGS_CF_CONST_X_STRING" +CPPFLAGS="$cf_save_CPPFLAGS_CF_CONST_X_STRING" + +case "$cf_cv_const_x_string" in +(no) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-DXTSTRINGDEFINES" + + ;; +(*) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_CONST_X_STRING" + + ;; +esac + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi +cat > "conftest.$ac_ext" <&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" + for cf_opt in \ + wd1419 \ + wd1683 \ + wd1684 \ + wd193 \ + wd593 \ + wd279 \ + wd810 \ + wd869 \ + wd981 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if { (eval echo "$as_me:16964: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:16967: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:16969: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" +then + { echo "$as_me:16977: checking for $CC warning options..." >&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + cf_warn_CONST="" + test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= + for cf_opt in W Wall \ + Wbad-function-cast \ + Wcast-align \ + Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes \ + 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:17000: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17003: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:17005: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + case "$cf_opt" in + (Winline) + case "$GCC_VERSION" in + ([34].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:17013: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + (Wpointer-arith) + case "$GCC_VERSION" in + ([12].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:17023: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + esac + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +fi +rm -rf ./conftest* + +fi + +if test "$GCC" = yes || test "$GXX" = yes +then +cat > conftest.i <&5 +echo "$as_me: checking for $CC __attribute__ directives..." >&6;} +cat > "conftest.$ac_ext" <&5 + + case "$cf_attribute" in + (printf) + cf_printf_attribute=yes + cat >conftest.h <conftest.h <conftest.h <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17111: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:17113: result: ... $cf_attribute" >&5 +echo "${ECHO_T}... $cf_attribute" >&6 + cat conftest.h >>confdefs.h + case "$cf_attribute" in + (noreturn) + +cat >>confdefs.h <>confdefs.h <<\EOF +#define GCC_PRINTF 1 +EOF + + fi + +cat >>confdefs.h <>confdefs.h <<\EOF +#define GCC_SCANF 1 +EOF + + fi + +cat >>confdefs.h <>confdefs.h <>confdefs.h +fi +rm -rf ./conftest* +fi + +fi + +if test "x$enable_warnings" = "xyes"; then + + ADAFLAGS="$ADAFLAGS -gnatg" + + if test "x$cf_with_cxx" = xyes ; then + +INTEL_CPLUSPLUS=no + +if test "$GCC" = yes ; then + case "$host_os" in + (linux*|gnu*) + echo "$as_me:17185: 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 17190 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __INTEL_COMPILER +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:17207: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17210: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:17213: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17216: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + INTEL_CPLUSPLUS=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CXXFLAGS="$cf_save_CFLAGS" + echo "$as_me:17227: result: $INTEL_CPLUSPLUS" >&5 +echo "${ECHO_T}$INTEL_CPLUSPLUS" >&6 + ;; + esac +fi + +CLANG_CPLUSPLUS=no + +if test "$GCC" = yes ; then + echo "$as_me:17236: 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 17240 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __clang__ +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:17257: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17260: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:17263: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17266: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + CLANG_CPLUSPLUS=yes + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CXXFLAGS="$cf_save_CFLAGS" + echo "$as_me:17276: result: $CLANG_CPLUSPLUS" >&5 +echo "${ECHO_T}$CLANG_CPLUSPLUS" >&6 +fi + +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:17285: 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:17292: 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:17296: 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:17303: 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 17308 "configure" +#include "confdefs.h" + + #include +int +main (void) +{ + + printf("hello!\\n"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17322: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17325: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17328: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17331: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_clang_optok=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_clang_optok=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:17342: 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}:17348: testing adding option $cf_clang_opt ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_clang_opt" + + fi + done +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + +cat > conftest.$ac_ext <&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CXXFLAGS="$CXXFLAGS" + EXTRA_CXXFLAGS="-Wall" + for cf_opt in \ + wd1419 \ + wd1682 \ + wd1683 \ + wd1684 \ + wd193 \ + wd279 \ + wd593 \ + wd810 \ + wd869 \ + wd981 + do + CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -$cf_opt" + if { (eval echo "$as_me:17400: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17403: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:17405: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt" + fi + done + CXXFLAGS="$cf_save_CXXFLAGS" + +elif test "$GXX" = yes +then + { echo "$as_me:17414: checking for $CXX warning options..." >&5 +echo "$as_me: checking for $CXX warning options..." >&6;} + cf_save_CXXFLAGS="$CXXFLAGS" + EXTRA_CXXFLAGS="-W -Wall" + cf_gxx_extra_warnings="" + test "$with_ext_const" = yes && cf_gxx_extra_warnings="Wwrite-strings" + case "$GXX_VERSION" in + ([1-2].*) + ;; + (*) + cf_gxx_extra_warnings="$cf_gxx_extra_warnings Weffc++" + ;; + esac + for cf_opt in \ + Wabi \ + fabi-version=0 \ + Wextra \ + Wignored-qualifiers \ + Wlogical-op \ + Woverloaded-virtual \ + Wsign-promo \ + Wsynth \ + Wold-style-cast \ + Wcast-align \ + Wcast-qual \ + Wpointer-arith \ + Wshadow \ + Wundef $cf_gxx_extra_warnings Wno-unused + do + CXXFLAGS="$cf_save_CXXFLAGS $EXTRA_CXXFLAGS -Werror -$cf_opt" + if { (eval echo "$as_me:17444: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17447: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:17449: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + EXTRA_CXXFLAGS="$EXTRA_CXXFLAGS -$cf_opt" + else + test -n "$verbose" && echo "$as_me:17453: result: ... no -$cf_opt" >&5 +echo "${ECHO_T}... no -$cf_opt" >&6 + fi + done + CXXFLAGS="$cf_save_CXXFLAGS" +fi + +rm -rf ./conftest* +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" + + fi +fi + +echo "$as_me:17471: 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. +if test "${enable_string_hacks+set}" = set; then + enableval="$enable_string_hacks" + enable_string_hacks=$enableval +else + enable_string_hacks=no +fi; +echo "$as_me:17481: result: $enable_string_hacks" >&5 +echo "${ECHO_T}$enable_string_hacks" >&6 + +if test "x$enable_string_hacks" = "xyes"; then + +cat >>confdefs.h <<\EOF +#define USE_STRING_HACKS 1 +EOF + + { echo "$as_me:17490: 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:17492: 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 17498 "configure" +#include "confdefs.h" +#define strlcat autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef strlcat + +#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 strlcat (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_strlcat) || defined (__stub___strlcat) +#error found stub for strlcat +#endif + + return strlcat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17529: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17532: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17535: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17538: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_strlcat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_strlcat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:17548: result: $ac_cv_func_strlcat" >&5 +echo "${ECHO_T}$ac_cv_func_strlcat" >&6 +if test "$ac_cv_func_strlcat" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_STRLCAT 1 +EOF + +else + + echo "$as_me:17558: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 17566 "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 strlcat (); +int +main (void) +{ +strlcat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17585: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17588: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17591: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17594: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_bsd_strlcat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_bsd_strlcat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17605: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +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:17628: 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 17634 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:17638: \"$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:17644: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:17663: 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 <>confdefs.h <<\EOF +#define HAVE_STRLCAT 1 +EOF + +fi + +fi + +for ac_func in strlcpy snprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:17684: 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 17690 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17721: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17724: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17727: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17730: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:17740: 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 <&5 +echo $ECHO_N "checking if you want to enable runtime assertions... $ECHO_C" >&6 + +# Check whether --enable-assertions or --disable-assertions was given. +if test "${enable_assertions+set}" = set; then + enableval="$enable_assertions" + with_assertions=$enableval +else + with_assertions=no +fi; +echo "$as_me:17763: result: $with_assertions" >&5 +echo "${ECHO_T}$with_assertions" >&6 +if test -n "$GCC" +then + if test "$with_assertions" = no + then + CPPFLAGS="$CPPFLAGS -DNDEBUG" + else + + ADAFLAGS="$ADAFLAGS -gnata" + + fi +fi + +### use option --disable-leaks to suppress "permanent" leaks, for testing + +echo "$as_me:17779: 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. +if test "${with_dmalloc+set}" = set; then + withval="$with_dmalloc" + case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_dmalloc=yes + +cat >>confdefs.h <&5 +echo "${ECHO_T}${with_dmalloc:-no}" >&6 + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +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 + + ;; + esac + ;; +esac + +if test "$with_dmalloc" = yes ; then + echo "$as_me:17915: 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 17921 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:17925: \"$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:17931: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_dmalloc_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_dmalloc_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:17950: 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:17954: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldmalloc $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 17962 "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 dmalloc_debug (); +int +main (void) +{ +dmalloc_debug (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17981: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17984: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17987: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17990: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dmalloc_dmalloc_debug=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dmalloc_dmalloc_debug=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18001: 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 <&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. +if test "${with_dbmalloc+set}" = set; then + withval="$with_dbmalloc" + case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_dbmalloc=yes + +cat >>confdefs.h <&5 +echo "${ECHO_T}${with_dbmalloc:-no}" >&6 + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +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 + + ;; + esac + ;; +esac + +if test "$with_dbmalloc" = yes ; then + echo "$as_me:18152: 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 18158 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:18162: \"$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:18168: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_dbmalloc_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_dbmalloc_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:18187: 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:18191: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldbmalloc $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 18199 "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 debug_malloc (); +int +main (void) +{ +debug_malloc (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18218: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18221: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18224: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18227: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dbmalloc_debug_malloc=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dbmalloc_debug_malloc=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18238: 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 <&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. +if test "${with_valgrind+set}" = set; then + withval="$with_valgrind" + case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_valgrind=yes + +cat >>confdefs.h <&5 +echo "${ECHO_T}${with_valgrind:-no}" >&6 + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +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 + + ;; + esac + ;; +esac + +echo "$as_me:18388: 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. +if test "${enable_leaks+set}" = set; then + enableval="$enable_leaks" + enable_leaks=$enableval +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:18399: result: $with_no_leaks" >&5 +echo "${ECHO_T}$with_no_leaks" >&6 + +if test "$enable_leaks" = no ; then + +cat >>confdefs.h <<\EOF +#define NO_LEAKS 1 +EOF + +cat >>confdefs.h <<\EOF +#define YY_NO_LEAKS 1 +EOF + +fi + +cat >>confdefs.h <<\EOF +#define HAVE_NC_ALLOC_H 1 +EOF + +### use option --enable-expanded to generate certain macros as functions + +# Check whether --enable-expanded or --disable-expanded was given. +if test "${enable_expanded+set}" = set; then + enableval="$enable_expanded" + test "x$enableval" = xyes && +cat >>confdefs.h <<\EOF +#define NCURSES_EXPANDED 1 +EOF + +fi; + +### use option --disable-macros to suppress macros in favor of functions + +# Check whether --enable-macros or --disable-macros was given. +if test "${enable_macros+set}" = set; then + enableval="$enable_macros" + test "$enableval" = no && +cat >>confdefs.h <<\EOF +#define NCURSES_NOMACROS 1 +EOF + +fi; + +# Normally we only add trace() to the debug-library. Allow this to be +# extended to all models of the ncurses library: +cf_all_traces=no +case "$CFLAGS $CPPFLAGS" in +(*-DTRACE*) + cf_all_traces=yes + ;; +esac + +echo "$as_me:18451: 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. +if test "${with_trace+set}" = set; then + withval="$with_trace" + cf_with_trace=$withval +else + cf_with_trace=$cf_all_traces +fi; +echo "$as_me:18461: 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 HAVE__TRACEF 1 +EOF + +else + LIB_TRACING=DEBUG + ADA_TRACE=FALSE +fi + +echo "$as_me:18575: 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. +if test "${enable_gnat_projects+set}" = set; then + enableval="$enable_gnat_projects" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + enable_gnat_projects=no + else + enable_gnat_projects=yes + fi +else + enableval=yes + enable_gnat_projects=yes + +fi; +echo "$as_me:18592: result: $enable_gnat_projects" >&5 +echo "${ECHO_T}$enable_gnat_projects" >&6 + +### Checks for libraries. +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*) + if test "x$with_exp_win32" = xyes ; then + CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN" + else + CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN" + fi + # Note: WINVER may be a problem with Windows 10 + ;; +(*) +echo "$as_me:18606: 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 18612 "configure" +#include "confdefs.h" +#define gettimeofday autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef gettimeofday + +#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 gettimeofday (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_gettimeofday) || defined (__stub___gettimeofday) +#error found stub for gettimeofday +#endif + + return gettimeofday (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18643: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18646: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18649: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18652: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_gettimeofday=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_gettimeofday=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:18662: result: $ac_cv_func_gettimeofday" >&5 +echo "${ECHO_T}$ac_cv_func_gettimeofday" >&6 +if test "$ac_cv_func_gettimeofday" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_GETTIMEOFDAY 1 +EOF + +else + +echo "$as_me:18672: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 18680 "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 gettimeofday (); +int +main (void) +{ +gettimeofday (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18699: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18702: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18705: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18708: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_bsd_gettimeofday=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_bsd_gettimeofday=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:18719: 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 + +cat >>confdefs.h <<\EOF +#define HAVE_GETTIMEOFDAY 1 +EOF + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +fi + ;; +esac + +echo "$as_me:18749: 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 18756 "configure" +#include "confdefs.h" + + #include + #include + #include + +int +main (void) +{ +double x = rand(); printf("result = %g\\n", pow(sin(x),x)) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18772: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18775: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18778: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18781: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_need_libm=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_need_libm=yes +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:18791: result: $cf_cv_need_libm" >&5 +echo "${ECHO_T}$cf_cv_need_libm" >&6 +if test "$cf_cv_need_libm" = yes +then +MATH_LIB=-lm +fi + +### Checks for header files. +echo "$as_me:18799: 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 18805 "configure" +#include "confdefs.h" +#include +#include +#include +#include + +_ACEOF +if { (eval echo "$as_me:18813: \"$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:18819: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_stdc=no +fi +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 18841 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +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 18859 "configure" +#include "confdefs.h" +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 18880 "configure" +#include "confdefs.h" +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main (void) +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + $ac_main_return(2); + $ac_main_return (0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:18906: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18909: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:18911: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18914: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_stdc=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +fi +echo "$as_me:18927: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +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:18940: 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 18946 "configure" +#include "confdefs.h" +#include +#include <$ac_hdr> + +int +main (void) +{ +if ((DIR *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18961: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18964: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18967: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18970: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Header=no" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:18980: 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 <&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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldir $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19001 "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 opendir (); +int +main (void) +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19020: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19023: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19026: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19029: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dir_opendir=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dir_opendir=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19040: 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:19047: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lx $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19055 "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 opendir (); +int +main (void) +{ +opendir (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19074: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19077: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19080: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19083: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_x_opendir=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_x_opendir=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19094: 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" +fi + +fi + +echo "$as_me:19102: 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 19108 "configure" +#include "confdefs.h" +#include +#include +#include + +int +main (void) +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:19124: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:19127: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:19130: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19133: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_time=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:19143: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + +cf_regex_func=no +cf_regex_libs= +case "$host_os" in +(mingw*) + # -lsystre -ltre -lintl -liconv + echo "$as_me:19158: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsystre $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19166 "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 regcomp (); +int +main (void) +{ +regcomp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19185: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19188: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19191: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19194: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_systre_regcomp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_systre_regcomp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19205: 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:19209: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-liconv $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19217 "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 libiconv_open (); +int +main (void) +{ +libiconv_open (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19236: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19239: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19242: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19245: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_iconv_libiconv_open=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_iconv_libiconv_open=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19256: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -liconv; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + + echo "$as_me:19278: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lintl $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19286 "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 libintl_gettext (); +int +main (void) +{ +libintl_gettext (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19305: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19308: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19311: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19314: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_intl_libintl_gettext=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_intl_libintl_gettext=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19325: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lintl; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + + echo "$as_me:19347: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ltre $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19355 "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 tre_regcomp (); +int +main (void) +{ +tre_regcomp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19374: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19377: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19380: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19383: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_tre_tre_regcomp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_tre_tre_regcomp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19394: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -ltre; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lsystre; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cf_regex_func=regcomp + +else + + echo "$as_me:19436: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgnurx $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19444 "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 regcomp (); +int +main (void) +{ +regcomp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19463: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19466: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19469: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19472: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gnurx_regcomp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gnurx_regcomp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19483: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lgnurx; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cf_regex_func=regcomp +fi + +fi + + ;; +(*) + cf_regex_libs="regex re" + echo "$as_me:19511: 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 19517 "configure" +#include "confdefs.h" +#define regcomp autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef regcomp + +#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 regcomp (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_regcomp) || defined (__stub___regcomp) +#error found stub for regcomp +#endif + + return regcomp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19548: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19551: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19554: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19557: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_regcomp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_regcomp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:19567: 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 +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:19576: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$cf_regex_lib $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19584 "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 regcomp (); +int +main (void) +{ +regcomp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19603: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19606: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19609: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19612: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Lib=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19623: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_regex_lib; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cf_regex_func=regcomp + break +fi + + done + +fi + + ;; +esac + +if test "$cf_regex_func" = no ; then + echo "$as_me:19655: 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 19661 "configure" +#include "confdefs.h" +#define compile autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef compile + +#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 compile (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_compile) || defined (__stub___compile) +#error found stub for compile +#endif + + return compile (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19692: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19695: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19698: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19701: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_compile=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_compile=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:19711: 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:19717: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgen $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19725 "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 compile (); +int +main (void) +{ +compile (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19744: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19747: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19750: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19753: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gen_compile=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gen_compile=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19764: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lgen; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cf_regex_func=compile +fi + +fi + +fi + +if test "$cf_regex_func" = no ; then + { echo "$as_me:19792: WARNING: cannot find regular expression library" >&5 +echo "$as_me: WARNING: cannot find regular expression library" >&2;} +fi + +echo "$as_me:19796: 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 +else + +cf_cv_regex_hdrs=no +case "$cf_regex_func" in +(compile) + for cf_regex_hdr in regexp.h regexpr.h + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 19808 "configure" +#include "confdefs.h" +#include <$cf_regex_hdr> +int +main (void) +{ + + char *p = compile("", "", "", 0); + int x = step("", ""); + (void)p; + (void)x; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19825: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19828: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19831: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19834: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_regex_hdrs=$cf_regex_hdr + break + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + ;; +(*) + for cf_regex_hdr in regex.h + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 19851 "configure" +#include "confdefs.h" +#include +#include <$cf_regex_hdr> +int +main (void) +{ + + regex_t *p = 0; + int x = regcomp(p, "", 0); + int y = regexec(p, "", 0, 0, 0); + (void)x; + (void)y; + regfree(p); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19871: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19874: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19877: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19880: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_regex_hdrs=$cf_regex_hdr + break + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + ;; +esac + +fi +echo "$as_me:19896: result: $cf_cv_regex_hdrs" >&5 +echo "${ECHO_T}$cf_cv_regex_hdrs" >&6 + +case "$cf_cv_regex_hdrs" in + (no) { echo "$as_me:19900: WARNING: no regular expression header found" >&5 +echo "$as_me: WARNING: no regular expression header found" >&2;} ;; + (regex.h) +cat >>confdefs.h <<\EOF +#define HAVE_REGEX_H_FUNCS 1 +EOF + ;; + (regexp.h) +cat >>confdefs.h <<\EOF +#define HAVE_REGEXP_H_FUNCS 1 +EOF + ;; + (regexpr.h) +cat >>confdefs.h <<\EOF +#define HAVE_REGEXPR_H_FUNCS 1 +EOF + ;; +esac + +for ac_header in \ +fcntl.h \ +getopt.h \ +limits.h \ +locale.h \ +math.h \ +poll.h \ +sys/ioctl.h \ +sys/param.h \ +sys/poll.h \ +sys/select.h \ +sys/time.h \ +sys/times.h \ +ttyent.h \ +unistd.h \ +wctype.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:19938: 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 19944 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:19948: \"$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:19954: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:19973: 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 <&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 19992 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:19996: \"$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:20002: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:20021: 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 <&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 +else + +cf_cv_getopt_header=none +for cf_header in stdio.h stdlib.h unistd.h getopt.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 20041 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ +int x = optind; char *y = optarg; (void)x; (void)y + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20054: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20057: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20060: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20063: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_getopt_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:20075: result: $cf_cv_getopt_header" >&5 +echo "${ECHO_T}$cf_cv_getopt_header" >&6 +if test "$cf_cv_getopt_header" != none ; then + +cat >>confdefs.h <<\EOF +#define HAVE_GETOPT_HEADER 1 +EOF + +fi +if test "$cf_cv_getopt_header" = getopt.h ; then + +cat >>confdefs.h <<\EOF +#define NEED_GETOPT_H 1 +EOF + +fi + +echo "$as_me:20092: 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 20099 "configure" +#include "confdefs.h" + +#ifdef HAVE_STDLIB_H +#include +#endif +#include +int +main (void) +{ +int x = (int) environ + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20115: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20118: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20121: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20124: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_dcl_environ=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_dcl_environ=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:20135: result: $cf_cv_dcl_environ" >&5 +echo "${ECHO_T}$cf_cv_dcl_environ" >&6 + +if test "$cf_cv_dcl_environ" = no ; then + +cf_result=`echo "decl_environ" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <&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 20157 "configure" +#include "confdefs.h" + +#undef environ +extern int environ; + +int +main (void) +{ +environ = 2 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:20172: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20175: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:20178: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20181: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have_environ=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have_environ=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:20192: result: $cf_cv_have_environ" >&5 +echo "${ECHO_T}$cf_cv_have_environ" >&6 + +if test "$cf_cv_have_environ" = yes ; then + +cf_result=`echo "have_environ" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <&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 20211 "configure" +#include "confdefs.h" +#define getenv autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef getenv + +#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 getenv (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_getenv) || defined (__stub___getenv) +#error found stub for getenv +#endif + + return getenv (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:20242: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20245: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:20248: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20251: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_getenv=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_getenv=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:20261: 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:20267: 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 20273 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:20304: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20307: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:20310: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20313: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:20323: 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 <&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 +else + +if test "$cross_compiling" = yes; then + cf_cv_consistent_getenv=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 20343 "configure" +#include "confdefs.h" + +#include +#include +#include +#include +#include + +#if defined(HAVE_ENVIRON) && defined(DECL_ENVIRON) && !defined(environ) +extern char **environ; /* POSIX, but some systems are not... */ +#endif + +#if defined(HAVE_STRDUP) +#define str_alloc(s) strdup(s) +#else +#define str_alloc(s) strcpy(malloc(strlen(s) + 1, s)) +#endif + +static void set_value(const char *name, const char *value) +{ +#if defined(HAVE_SETENV) + setenv(name, value, 1); +#elif defined(HAVE_PUTENV) + char buffer[1024]; + sprintf(buffer, "%s=%s", name, value); + putenv(str_alloc(buffer)); +#else +#error neither putenv/setenv found +#endif +} +int main(void) +{ + int pass; + size_t numenv, limit, j; + char **mynames; + char **myvalues; + char **mypointer; + char *equals; + for (numenv = 0; environ[numenv]; ++numenv) ; + limit = numenv + 10; + mynames = (char **) calloc(limit + 1, sizeof(char *)); + myvalues = (char **) calloc(limit + 1, sizeof(char *)); + mypointer = (char **) calloc(limit + 1, sizeof(char *)); +#if defined(HAVE_ENVIRON) + for (j = 0; environ[j]; ++j) { + mynames[j] = str_alloc(environ[j]); + equals = strchr(mynames[j], '='); + if (equals != 0) { + *equals++ = '\\0'; + myvalues[j] = str_alloc(equals); + } else { + myvalues[j] = str_alloc(""); + } + } +#endif + for (j = numenv; j < limit; ++j) { + char name[80]; + char value[80]; + size_t found; + size_t k = 0; + do { + size_t jk; + found = 0; + sprintf(name, "TERM%lu", (unsigned long) k); + for (jk = 0; jk < j; ++jk) { + if (!strcmp(name, mynames[jk])) { + found = 1; + ++k; + break; + } + } + } while (found); + sprintf(value, "%lu:%p", (unsigned long) k, &mynames[j]); + set_value(name, value); + mynames[j] = str_alloc(name); + myvalues[j] = str_alloc(value); + } + for (pass = 0; pass < 3; ++pass) { + for (j = 0; j < limit; ++j) { + char *value = getenv(mynames[j]); + if (pass) { + if (value == 0) { + fprintf(stderr, "getenv returned null for %s\\n", mynames[j]); + ${cf_cv_main_return:-return}(1); + } else if (value != mypointer[j]) { + fprintf(stderr, "getenv returned different pointer for %s\\n", mynames[j]); + ${cf_cv_main_return:-return}(1); + } else if (strcmp(value, myvalues[j])) { + fprintf(stderr, "getenv returned different value for %s\\n", mynames[j]); + ${cf_cv_main_return:-return}(1); + } + } else { + size_t k; + mypointer[j] = value; + for (k = 0; k < j; ++k) { + if (mypointer[j] == mypointer[k]) { + fprintf(stderr, "getenv returned same pointer for %s and %s\\n", mynames[j], mynames[k]); + ${cf_cv_main_return:-return}(1); + } + } + } + } + } + ${cf_cv_main_return:-return}(0); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:20452: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20455: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:20457: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20460: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_consistent_getenv=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_consistent_getenv=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + +fi +echo "$as_me:20473: result: $cf_cv_consistent_getenv" >&5 +echo "${ECHO_T}$cf_cv_consistent_getenv" >&6 + +if test "x$cf_cv_consistent_getenv" = xno +then + +cat >>confdefs.h <<\EOF +#define HAVE_CONSISTENT_GETENV 1 +EOF + +fi + +if test "x$cf_cv_consistent_getenv" = xno && \ + test "x$cf_with_trace" = xyes +then + { echo "$as_me:20488: 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:20492: 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 20499 "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_SYS_TIME_H +#include +#endif +#ifdef HAVE_SYS_SELECT_H +#include +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20519: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20522: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20525: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20528: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_sys_time_select=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_sys_time_select=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi + +echo "$as_me:20540: 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 +#define HAVE_SYS_TIME_SELECT 1 +EOF + +### checks for compiler characteristics +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:20555: 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 20561 "configure" +#include "confdefs.h" + +int +main (void) +{ +/* FIXME: Include the comments suggested by Paul. */ +#ifndef __cplusplus + /* Ultrix mips cc rejects this. */ + typedef int charset[2]; + 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}; + /* 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 + expression */ + const char *g = "string"; + ccp = &g + (g ? g-g : 0); + /* HPUX 7.0 cc rejects these. */ + ++ccp; + p = (char**) ccp; + ccp = (char const *const *) p; + { /* SCO 3.2v4 cc rejects this. */ + char *t; + char const *s = 0 ? (char *) 0 : (char const *) 0; + + *t++ = 0; + } + { /* Someone thinks the Sun supposedly-ANSI compiler will reject this. */ + int x[] = {25, 17}; + const int *foo = &x[0]; + ++foo; + } + { /* Sun SC1.0 ANSI compiler rejects this -- but not the above. */ + typedef const int *iptr; + iptr p = 0; + ++p; + } + { /* AIX XL C 1.02.0.0 rejects this saying + "k.c", line 2.27: 1506-025 (S) Operand must be a modifiable lvalue. */ + struct s { int j; const int *ap[3]; }; + struct s *b; b->j = 5; + } + { /* ULTRIX-32 V3.1 (Rev 9) vcc rejects this */ + const int foo = 10; + } +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20619: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20622: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20625: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20628: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_c_const=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_c_const=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:20638: result: $ac_cv_c_const" >&5 +echo "${ECHO_T}$ac_cv_c_const" >&6 +if test $ac_cv_c_const = no; then + +cat >>confdefs.h <<\EOF +#define const +EOF + +fi + +echo "$as_me:20648: 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 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 20656 "configure" +#include "confdefs.h" +#ifndef __cplusplus +static $ac_kw int static_foo () {return 0; } +$ac_kw int foo () {return 0; } +#endif + +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20665: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20668: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20671: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20674: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:20685: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\EOF +#define inline +EOF + ;; + *) cat >>confdefs.h <&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 +else + + cf_save_CFLAGS=$CFLAGS + CFLAGS="$CFLAGS --param max-inline-insns-single=1200" + cat >"conftest.$ac_ext" <<_ACEOF +#line 20720 "configure" +#include "confdefs.h" +inline int foo(void) { return 1; } +int +main (void) +{ +${cf_cv_main_return:-return} foo() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20732: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20735: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20738: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20741: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gcc_inline=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gcc_inline=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS=$cf_save_CFLAGS + +fi +echo "$as_me:20753: result: $cf_cv_gcc_inline" >&5 +echo "${ECHO_T}$cf_cv_gcc_inline" >&6 + if test "$cf_cv_gcc_inline" = yes ; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in --param max-inline-insns-single=1200 +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 + + fi + fi +fi + +echo "$as_me:20859: 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 +else + + for cf_type in \ + "volatile sig_atomic_t" \ + "sig_atomic_t" \ + "int" + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 20871 "configure" +#include "confdefs.h" + +#include +#include +#include + +extern $cf_type x; +$cf_type x; +static void handler(int sig) +{ + (void)sig; + x = 5; +} +int +main (void) +{ +signal(SIGINT, handler); + x = 1 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20895: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20898: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20901: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20904: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_sig_atomic_t=$cf_type +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_sig_atomic_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_sig_atomic_t" != no && break + done + +fi + +echo "$as_me:20918: 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 <&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 +else + + if test "$cross_compiling" = yes; then + cf_cv_typeof_chtype=long +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 20937 "configure" +#include "confdefs.h" + +#define WANT_BITS 31 +#include +int main(void) +{ + FILE *fp = fopen("cf_test.out", "w"); + if (fp != 0) { + char *result = "long"; + if (sizeof(unsigned long) > sizeof(unsigned int)) { + int n; + unsigned int x, y; + for (n = 0; n < WANT_BITS; n++) { + x = (1 << n); + y = (x >> n); + if (y != 1 || x == 0) { + x = 0; + break; + } + } + /* + * If x is nonzero, an int is big enough for the bits + * that we want. + */ + result = (x != 0) ? "int" : "long"; + } + fputs(result, fp); + fclose(fp); + } + ${cf_cv_main_return:-return}(0); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:20972: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20975: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:20977: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20980: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_typeof_chtype=`cat cf_test.out` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_typeof_chtype=long +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f cf_test.out + +fi + +echo "$as_me:20995: result: $cf_cv_typeof_chtype" >&5 +echo "${ECHO_T}$cf_cv_typeof_chtype" >&6 + +cat >>confdefs.h <&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 21014 "configure" +#include "confdefs.h" + +int +main (void) +{ +long x = 1L + 1UL + 1U + 1 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:21026: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21029: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:21032: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21035: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_unsigned_literals=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_unsigned_literals=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi + +echo "$as_me:21047: result: $cf_cv_unsigned_literals" >&5 +echo "${ECHO_T}$cf_cv_unsigned_literals" >&6 + +cf_cv_1UL="1" +test ".$cf_cv_unsigned_literals" = .yes && cf_cv_1UL="${cf_cv_1UL}U" +test ".$cf_cv_typeof_chtype" = .long && cf_cv_1UL="${cf_cv_1UL}L" + +if test "$NCURSES_MMASK_T" = auto ; then + cf_cv_typeof_mmask_t=long +else + cf_cv_typeof_mmask_t=$NCURSES_MMASK_T +fi +test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t="" + +### Checks for external-data + +echo "$as_me:21063: 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 21070 "configure" +#include "confdefs.h" + +#ifdef HAVE_STDLIB_H +#include +#endif +#include +#include +#include +int +main (void) +{ +int x = (int) errno; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:21088: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21091: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:21094: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21097: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_dcl_errno=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_dcl_errno=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:21108: result: $cf_cv_dcl_errno" >&5 +echo "${ECHO_T}$cf_cv_dcl_errno" >&6 + +if test "$cf_cv_dcl_errno" = no ; then + +cf_result=`echo "decl_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <&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 21130 "configure" +#include "confdefs.h" + +#undef errno +extern int errno; + +int +main (void) +{ +errno = 2 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21145: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21148: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21151: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21154: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have_errno=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have_errno=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:21165: result: $cf_cv_have_errno" >&5 +echo "${ECHO_T}$cf_cv_have_errno" >&6 + +if test "$cf_cv_have_errno" = yes ; then + +cf_result=`echo "have_errno" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <&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 +else + + rm -f conftest.a + cat >conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21192: \$? = $ac_status" >&5 + (exit "$ac_status"); } ; then + mv conftest.o data.o && \ + ( $AR $ARFLAGS conftest.a data.o ) 2>&5 1>/dev/null + fi + rm -f conftest.$ac_ext data.o + cat >conftest.$ac_ext <&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21215: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + mv conftest.o func.o && \ + ( $AR $ARFLAGS conftest.a func.o ) 2>&5 1>/dev/null + fi + rm -f conftest.$ac_ext func.o + ( eval $RANLIB conftest.a ) 2>&5 >/dev/null + cf_saveLIBS="$LIBS" + LIBS="conftest.a $LIBS" + if test "$cross_compiling" = yes; then + cf_cv_link_dataonly=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 21228 "configure" +#include "confdefs.h" + + int main(void) + { + extern int testfunc(); + ${cf_cv_main_return:-return} (!testfunc()); + } + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:21239: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21242: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:21244: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21247: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_link_dataonly=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_link_dataonly=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + LIBS="$cf_saveLIBS" + +fi + +echo "$as_me:21262: result: $cf_cv_link_dataonly" >&5 +echo "${ECHO_T}$cf_cv_link_dataonly" >&6 + +if test "$cf_cv_link_dataonly" = no ; then + +cat >>confdefs.h <<\EOF +#define BROKEN_LINKER 1 +EOF + + BROKEN_LINKER=1 +fi + +### Checks for library functions. + +for ac_func in \ +getcwd \ +getegid \ +geteuid \ +getopt \ +getttynam \ +issetugid \ +localeconv \ +poll \ +putenv \ +remove \ +select \ +setbuf \ +setbuffer \ +setenv \ +setfsuid \ +setvbuf \ +sigaction \ +sigvec \ +snprintf \ +strdup \ +strstr \ +sysconf \ +tcgetpgrp \ +times \ +tsearch \ +vsnprintf \ + +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:21306: 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 21312 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21343: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21346: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21349: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21352: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:21362: 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 <&5 +echo "$as_me: error: getopt is required for building programs" >&2;} + { (exit 1); exit 1; }; } +fi + +if test "x$with_safe_sprintf" = xyes +then + if test "x$ac_cv_func_vsnprintf" = xyes + then + { echo "$as_me:21383: WARNING: will use vsnprintf instead of safe-sprintf option" >&5 +echo "$as_me: WARNING: will use vsnprintf instead of safe-sprintf option" >&2;} + else + +cat >>confdefs.h <<\EOF +#define USE_SAFE_SPRINTF 1 +EOF + + fi +fi + +if test "x$with_getcap" = "xyes" ; then + +echo "$as_me:21396: 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 21403 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ + + char temp[128]; + char *buf = temp; + char *db_array = temp; + cgetent(&buf, &db_array, "vt100"); + cgetcap(buf, "tc", '='); + cgetmatch(buf, "tc"); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21423: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21426: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21429: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21432: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_cgetent=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_cgetent=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:21443: result: $cf_cv_cgetent" >&5 +echo "${ECHO_T}$cf_cv_cgetent" >&6 + +if test "$cf_cv_cgetent" = yes +then + +cat >>confdefs.h <<\EOF +#define HAVE_BSD_CGETENT 1 +EOF + +echo "$as_me:21453: 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 21460 "configure" +#include "confdefs.h" + +#pragma GCC diagnostic error "-Wincompatible-pointer-types-discards-qualifiers" +#include +int +main (void) +{ + + char temp[128]; + char *buf = temp; +#ifndef _NETBSD_SOURCE /* given, since April 2004 in stdlib.h */ + const char *db_array = temp; + cgetent(&buf, &db_array, "vt100"); +#endif + cgetcap(buf, "tc", '='); + cgetmatch(buf, "tc"); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21483: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21486: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21489: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21492: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_cgetent_const=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_cgetent_const=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:21503: result: $cf_cv_cgetent_const" >&5 +echo "${ECHO_T}$cf_cv_cgetent_const" >&6 + if test "$cf_cv_cgetent_const" = yes + then + +cat >>confdefs.h <&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 21524 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +int x = isascii(' ') + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21536: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21539: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21542: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21545: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have_isascii=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have_isascii=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:21556: result: $cf_cv_have_isascii" >&5 +echo "${ECHO_T}$cf_cv_have_isascii" >&6 +test "$cf_cv_have_isascii" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_ISASCII 1 +EOF + +if test "$ac_cv_func_sigaction" = yes; then +echo "$as_me:21564: 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 21567 "configure" +#include "confdefs.h" + +#include +#include +int +main (void) +{ +struct sigaction act + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:21581: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21584: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:21587: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21590: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + sigact_bad=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +cat >"conftest.$ac_ext" <<_ACEOF +#line 21598 "configure" +#include "confdefs.h" + +#define _POSIX_SOURCE +#include +#include +int +main (void) +{ +struct sigaction act + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:21613: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21616: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:21619: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21622: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + sigact_bad=yes + +cat >>confdefs.h <<\EOF +#define _POSIX_SOURCE 1 +EOF + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +sigact_bad=unknown +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +echo "$as_me:21638: result: $sigact_bad" >&5 +echo "${ECHO_T}$sigact_bad" >&6 +fi + +echo "$as_me:21642: 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 +else + +if test "$cross_compiling" = yes; then + cf_cv_func_nanosleep=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 21652 "configure" +#include "confdefs.h" + +#include +#include +#include + +#ifdef HAVE_SYS_TIME_H +#include +#endif + +int main(void) { + struct timespec ts1, ts2; + int code; + ts1.tv_sec = 0; + ts1.tv_nsec = 750000000; + ts2.tv_sec = 0; + ts2.tv_nsec = 0; + errno = 0; + code = nanosleep(&ts1, &ts2); /* on failure errno is ENOSYS. */ + ${cf_cv_main_return:-return}(code != 0); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:21677: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21680: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:21682: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21685: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_func_nanosleep=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_func_nanosleep=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +echo "$as_me:21697: result: $cf_cv_func_nanosleep" >&5 +echo "${ECHO_T}$cf_cv_func_nanosleep" >&6 + +test "$cf_cv_func_nanosleep" = "yes" && +cat >>confdefs.h <<\EOF +#define HAVE_NANOSLEEP 1 +EOF + +for ac_header in \ +termio.h \ +termios.h \ +unistd.h \ +sys/ioctl.h \ +sys/termio.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:21714: 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 21720 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:21724: \"$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:21730: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:21749: 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 <&5 +echo $ECHO_N "checking whether termios.h needs _POSIX_SOURCE... $ECHO_C" >&6 + cat >"conftest.$ac_ext" <<_ACEOF +#line 21769 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +struct termios foo; int x = foo.c_iflag = 1; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:21781: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21784: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:21787: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21790: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + termios_bad=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 21798 "configure" +#include "confdefs.h" + +#define _POSIX_SOURCE +#include +int +main (void) +{ +struct termios foo; int x = foo.c_iflag = 2; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:21812: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:21815: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:21818: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21821: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + termios_bad=unknown +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +termios_bad=yes +cat >>confdefs.h <<\EOF +#define _POSIX_SOURCE 1 +EOF + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:21837: result: $termios_bad" >&5 +echo "${ECHO_T}$termios_bad" >&6 + fi +fi + +echo "$as_me:21842: 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 21849 "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#ifdef HAVE_TERMIOS_H +#include +#define TTY struct termios +#else +#ifdef HAVE_TERMIO_H +#include +#define TTY struct termio +#endif +#endif + +int +main (void) +{ + +TTY foo; +tcgetattr(1, &foo); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21877: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21880: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21883: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21886: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have_tcgetattr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have_tcgetattr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:21896: 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:21903: 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 21910 "configure" +#include "confdefs.h" + +#include +#include +int +main (void) +{ + + va_list ap; + vsscanf("from", "%d", ap) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21926: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21929: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21932: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21935: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_func_vsscanf=vsscanf +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +cat >"conftest.$ac_ext" <<_ACEOF +#line 21943 "configure" +#include "confdefs.h" + +#include +#include +int +main (void) +{ + + FILE strbuf; + char *str = "from"; + + strbuf._flag = _IOREAD; + strbuf._ptr = strbuf._base = (unsigned char *) str; + strbuf._cnt = strlen(str); + strbuf._file = _NFILE; + return (vfscanf(&strbuf, "%d", ap)) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21965: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21968: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21971: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21974: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_func_vsscanf=vfscanf +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +cat >"conftest.$ac_ext" <<_ACEOF +#line 21982 "configure" +#include "confdefs.h" + +#include +#include +int +main (void) +{ + + FILE strbuf; + char *str = "from"; + + strbuf._flag = _IOREAD; + strbuf._ptr = strbuf._base = (unsigned char *) str; + strbuf._cnt = strlen(str); + strbuf._file = _NFILE; + return (_doscan(&strbuf, "%d", ap)) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22004: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22007: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22010: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22013: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_func_vsscanf=_doscan +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +cf_cv_func_vsscanf=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +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:22028: result: $cf_cv_func_vsscanf" >&5 +echo "${ECHO_T}$cf_cv_func_vsscanf" >&6 + +case "$cf_cv_func_vsscanf" in +(vsscanf) +cat >>confdefs.h <<\EOF +#define HAVE_VSSCANF 1 +EOF +;; +(vfscanf) +cat >>confdefs.h <<\EOF +#define HAVE_VFSCANF 1 +EOF +;; +(_doscan) +cat >>confdefs.h <<\EOF +#define HAVE__DOSCAN 1 +EOF +;; +esac + +for ac_header in \ +unistd.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:22054: 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 22060 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:22064: \"$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:22070: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:22089: 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 <&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 +else + +rm -rf ./conftest* +if test "$cross_compiling" = yes; then + cf_cv_func_mkstemp=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 22110 "configure" +#include "confdefs.h" + +#include +#ifdef HAVE_UNISTD_H +#include +#endif +#include +#include +#include +#include +int main(void) +{ + char *tmpl = "conftestXXXXXX"; + char name[2][80]; + int n; + int result = 0; + int fd; + struct stat sb; + + umask(077); + for (n = 0; n < 2; ++n) { + strcpy(name[n], tmpl); + if ((fd = mkstemp(name[n])) >= 0) { + if (!strcmp(name[n], tmpl) + || stat(name[n], &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG + || (sb.st_mode & 077) != 0) { + result = 1; + } + close(fd); + } + } + if (result == 0 + && !strcmp(name[0], name[1])) + result = 1; + ${cf_cv_main_return:-return}(result); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:22151: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22154: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:22156: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22159: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_func_mkstemp=yes + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_func_mkstemp=no + +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + +fi +echo "$as_me:22174: 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:22177: 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 22183 "configure" +#include "confdefs.h" +#define mkstemp autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef mkstemp + +#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 mkstemp (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_mkstemp) || defined (__stub___mkstemp) +#error found stub for mkstemp +#endif + + return mkstemp (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22214: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22217: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22220: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22223: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_mkstemp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_mkstemp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:22233: result: $ac_cv_func_mkstemp" >&5 +echo "${ECHO_T}$ac_cv_func_mkstemp" >&6 + +fi +if test "x$cf_cv_func_mkstemp" = xyes || test "x$ac_cv_func_mkstemp" = xyes ; then + +cat >>confdefs.h <<\EOF +#define HAVE_MKSTEMP 1 +EOF + +fi + +# setup for prototype of fallback for vsscanf() + +if test "$cf_cv_func_vsscanf" = vsscanf ; then + HAVE_VSSCANF=1 +else + HAVE_VSSCANF=0 +fi + +if test "x$cross_compiling" = xyes ; then + { echo "$as_me:22254: 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:22257: 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:22263: 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 22268 "configure" +#include "confdefs.h" +#include +/* If setvbuf has the reversed format, exit 0. */ +int +main (void) +{ + /* This call has the arguments reversed. + A reversed system may check and see that the address of main + is not _IOLBF, _IONBF, or _IOFBF, and return nonzero. */ + if (setvbuf(stdout, _IOLBF, (char *) main, BUFSIZ) != 0) + $ac_main_return(1); + putc('\r', stdout); + $ac_main_return(0); /* Non-reversed systems segv here. */ +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:22285: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22288: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:22290: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22293: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_setvbuf_reversed=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_setvbuf_reversed=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f core ./core.* ./*.core +fi +echo "$as_me:22306: 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 + +cat >>confdefs.h <<\EOF +#define SETVBUF_REVERSED 1 +EOF + +fi + +fi +echo "$as_me:22317: 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 22323 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((intptr_t *) 0) + return 0; +if (sizeof (intptr_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:22338: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22341: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:22344: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22347: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_intptr_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_intptr_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:22357: 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 + : +else + +cat >>confdefs.h <&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 22375 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((ssize_t *) 0) + return 0; +if (sizeof (ssize_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:22390: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22393: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:22396: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22399: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_ssize_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_ssize_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:22409: 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 + : +else + +cat >>confdefs.h <&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 22428 "configure" +#include "confdefs.h" + +#include +int +main (void) +{ +sigaction_t x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:22441: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22444: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:22447: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22450: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_type_sigaction=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_type_sigaction=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi + +echo "$as_me:22461: 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:22468: 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 +else + + cf_cv_sizechange=unknown + cf_save_CPPFLAGS="$CPPFLAGS" + +for cf_opts in "" "NEED_PTEM_H" +do + + CPPFLAGS="$cf_save_CPPFLAGS" + if test -n "$cf_opts" + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D$cf_opts" + + fi + cat >"conftest.$ac_ext" <<_ACEOF +#line 22489 "configure" +#include "confdefs.h" +#include +#ifdef HAVE_TERMIOS_H +#include +#else +#ifdef HAVE_TERMIO_H +#include +#endif +#endif + +#ifdef NEED_PTEM_H +/* This is a workaround for SCO: they neglected to define struct winsize in + * termios.h -- it is only in termio.h and ptem.h + */ +#include +#include +#endif + +#ifdef HAVE_SYS_IOCTL_H +#include +#endif + +int +main (void) +{ + +#ifdef TIOCGSIZE + struct ttysize win; /* SunOS 3.0... */ + int y = win.ts_lines = 2; + int x = win.ts_cols = 1; + (void)y; + (void)x; +#else +#ifdef TIOCGWINSZ + struct winsize win; /* everything else */ + int y = win.ws_row = 2; + int x = win.ws_col = 1; + (void)y; + (void)x; +#else + no TIOCGSIZE or TIOCGWINSZ +#endif /* TIOCGWINSZ */ +#endif /* TIOCGSIZE */ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:22539: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22542: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:22545: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22548: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_sizechange=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_sizechange=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + CPPFLAGS="$cf_save_CPPFLAGS" + if test "$cf_cv_sizechange" = yes ; then + echo "size-change succeeded ($cf_opts)" >&5 + test -n "$cf_opts" && cf_cv_sizechange="$cf_opts" + break + fi +done + +fi +echo "$as_me:22567: result: $cf_cv_sizechange" >&5 +echo "${ECHO_T}$cf_cv_sizechange" >&6 +if test "$cf_cv_sizechange" != no ; then + +cat >>confdefs.h <<\EOF +#define HAVE_SIZECHANGE 1 +EOF + + case "$cf_cv_sizechange" in + (NEED*) + cat >>confdefs.h <&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 22591 "configure" +#include "confdefs.h" +#define memmove autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef memmove + +#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 memmove (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_memmove) || defined (__stub___memmove) +#error found stub for memmove +#endif + + return memmove (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22622: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22625: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22628: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22631: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_memmove=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_memmove=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:22641: 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:22647: 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 22653 "configure" +#include "confdefs.h" +#define bcopy autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef bcopy + +#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 bcopy (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_bcopy) || defined (__stub___bcopy) +#error found stub for bcopy +#endif + + return bcopy (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22684: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22687: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22690: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22693: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_bcopy=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_bcopy=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:22703: 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:22707: 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 +else + + if test "$cross_compiling" = yes; then + cf_cv_good_bcopy=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 22717 "configure" +#include "confdefs.h" + +int main(void) { + static char data[] = "abcdefghijklmnopqrstuwwxyz"; + char temp[40]; + bcopy(data, temp, sizeof(data)); + bcopy(temp+10, temp, 15); + bcopy(temp+5, temp+15, 10); + ${cf_cv_main_return:-return} (strcmp(temp, "klmnopqrstuwwxypqrstuwwxyz")); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:22731: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22734: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:22736: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22739: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_good_bcopy=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_good_bcopy=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + +fi +echo "$as_me:22752: result: $cf_cv_good_bcopy" >&5 +echo "${ECHO_T}$cf_cv_good_bcopy" >&6 + +else + cf_cv_good_bcopy=no +fi + + if test "$cf_cv_good_bcopy" = yes ; then + +cat >>confdefs.h <<\EOF +#define USE_OK_BCOPY 1 +EOF + + else + +cat >>confdefs.h <<\EOF +#define USE_MY_MEMMOVE 1 +EOF + + fi + +fi + +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:22779: 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 22785 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22816: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22819: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22822: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22825: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:22835: 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 <&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 +else + +if test "$cross_compiling" = yes; then + cf_cv_working_poll=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 22855 "configure" +#include "confdefs.h" + +#include +#include +#include +#include +#ifdef HAVE_POLL_H +#include +#else +#include +#endif +int main(void) { + struct pollfd myfds; + int ret; + + /* check for Darwin bug with respect to "devices" */ + myfds.fd = open("/dev/null", 1); /* O_WRONLY */ + if (myfds.fd < 0) + myfds.fd = 0; + myfds.events = POLLIN; + myfds.revents = 0; + + ret = poll(&myfds, 1, 100); + + if (ret < 0 || (myfds.revents & POLLNVAL)) { + ret = -1; + } else { + int fd = 0; + if (!isatty(fd)) { + fd = open("/dev/tty", 2); /* O_RDWR */ + } +#ifdef HAVE_POSIX_OPENPT + if (fd < 0) { + fd = posix_openpt(O_RDWR); + } +#endif + + if (fd >= 0) { + /* also check with standard input */ + myfds.fd = fd; + myfds.events = POLLIN; + myfds.revents = 0; + ret = poll(&myfds, 1, 100); + } else { + ret = -1; + } + } + ${cf_cv_main_return:-return}(ret < 0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:22907: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22910: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:22912: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22915: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_working_poll=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_working_poll=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +echo "$as_me:22927: 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:22934: 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 22941 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + static va_list dst; + static va_list src; + va_copy(dst, src) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22958: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22961: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22964: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22967: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have_va_copy=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have_va_copy=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:22977: result: $cf_cv_have_va_copy" >&5 +echo "${ECHO_T}$cf_cv_have_va_copy" >&6 + +if test "$cf_cv_have_va_copy" = yes; +then + +cat >>confdefs.h <<\EOF +#define HAVE_VA_COPY 1 +EOF + +else # !cf_cv_have_va_copy + +echo "$as_me:22989: 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 22996 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + static va_list dst; + static va_list src; + __va_copy(dst, src) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23013: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23016: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23019: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23022: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have___va_copy=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have___va_copy=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:23032: result: $cf_cv_have___va_copy" >&5 +echo "${ECHO_T}$cf_cv_have___va_copy" >&6 + +if test "$cf_cv_have___va_copy" = yes +then + +cat >>confdefs.h <<\EOF +#define HAVE___VA_COPY 1 +EOF + +else # !cf_cv_have___va_copy + +echo "$as_me:23044: 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 23051 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + static va_list dst; + static va_list src; + __builtin_va_copy(dst, src) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23068: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23071: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23074: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23077: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have___builtin_va_copy=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have___builtin_va_copy=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:23087: 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 && + +cat >>confdefs.h <<\EOF +#define HAVE___BUILTIN_VA_COPY 1 +EOF + +fi # cf_cv_have___va_copy + +fi # cf_cv_have_va_copy + +case "${cf_cv_have_va_copy}${cf_cv_have___va_copy}${cf_cv_have___builtin_va_copy}" in +(*yes*) + ;; + +(*) + echo "$as_me:23105: 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 23112 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + va_list dst; + va_list src; + dst = src + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23129: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23132: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23135: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23138: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_pointer_va_list=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_pointer_va_list=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:23148: 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:23153: 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 23160 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + va_list dst; + va_list src; + *dst = *src + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23177: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23180: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23183: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23186: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_array_va_list=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_array_va_list=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:23196: 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 +#define ARRAY_VA_LIST 1 +EOF + + fi + ;; +esac + +echo "$as_me:23207: 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 23213 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((pid_t *) 0) + return 0; +if (sizeof (pid_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:23228: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23231: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:23234: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23237: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_pid_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_pid_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:23247: 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 + : +else + +cat >>confdefs.h <&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 23268 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:23272: \"$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:23278: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:23297: 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 <&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 23316 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23347: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23350: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23353: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23356: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:23366: 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 <&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 +else + if test "$cross_compiling" = yes; then + ac_cv_func_fork_works=cross +else + cat >"conftest.$ac_ext" <<_ACEOF +/* By Rüdiger Kuhlmann. */ + #include + #if HAVE_UNISTD_H + # include + #endif + /* Some systems only have a dummy stub for fork() */ + int main (void) + { + if (fork() < 0) + $ac_main_return (1); + $ac_main_return (0); + } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:23401: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23404: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:23406: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23409: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_fork_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_fork_works=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +echo "$as_me:23421: result: $ac_cv_func_fork_works" >&5 +echo "${ECHO_T}$ac_cv_func_fork_works" >&6 + +fi +if test "x$ac_cv_func_fork_works" = xcross; then + case $host in + *-*-amigaos* | *-*-msdosdjgpp*) + # Override, as these systems have only a dummy fork() stub + ac_cv_func_fork_works=no + ;; + *) + ac_cv_func_fork_works=yes + ;; + esac + { echo "$as_me:23435: 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:23440: 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 +else + if test "$cross_compiling" = yes; then + ac_cv_func_vfork_works=cross +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 23449 "configure" +#include "confdefs.h" +/* Thanks to Paul Eggert for this test. */ +#include +#include +#include +#if HAVE_UNISTD_H +# include +#endif +#if HAVE_VFORK_H +# include +#endif +/* On some sparc systems, changes by the child to local and incoming + argument registers are propagated back to the parent. The compiler + is told about this with #include , but some compilers + (e.g. gcc -O) don't grok . Test for this by using a + static variable whose address is put into a register that is + clobbered by the vfork. */ +static +#ifdef __cplusplus +sparc_address_test (int arg) +# else +sparc_address_test (arg) int arg; +#endif +{ + static pid_t child; + if (!child) { + child = vfork (); + if (child < 0) { + perror ("vfork"); + _exit(2); + } + if (!child) { + arg = getpid(); + write(-1, "", 0); + _exit (arg); + } + } +} + +int +main (void) +{ + pid_t parent = getpid (); + pid_t child; + + sparc_address_test (); + + child = vfork (); + + if (child == 0) { + /* Here is another test for sparc vfork register problems. This + test uses lots of local variables, at least as many local + variables as main has allocated so far including compiler + temporaries. 4 locals are enough for gcc 1.40.3 on a Solaris + 4.1.3 sparc, but we use 8 to be safe. A buggy compiler should + reuse the register of parent for one of the local variables, + since it will think that parent can't possibly be used any more + in this routine. Assigning to the local variable will thus + munge parent in the parent process. */ + pid_t + p = getpid(), p1 = getpid(), p2 = getpid(), p3 = getpid(), + p4 = getpid(), p5 = getpid(), p6 = getpid(), p7 = getpid(); + /* Convince the compiler that p..p7 are live; otherwise, it might + use the same hardware register for all 8 local variables. */ + if (p != p1 || p != p2 || p != p3 || p != p4 + || p != p5 || p != p6 || p != p7) + _exit(1); + + /* On some systems (e.g. IRIX 3.3), vfork doesn't separate parent + from child file descriptors. If the child closes a descriptor + before it execs or exits, this munges the parent's descriptor + as well. Test for this by closing stdout in the child. */ + _exit(close(fileno(stdout)) != 0); + } else { + int status; + struct stat st; + + while (wait(&status) != child) + ; + $ac_main_return( + /* Was there some problem with vforking? */ + child < 0 + + /* Did the child fail? (This shouldn't happen.) */ + || status + + /* Did the vfork/compiler bug occur? */ + || parent != getpid() + + /* Did the file descriptor bug occur? */ + || fstat(fileno(stdout), &st) != 0 + ); + } +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:23546: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23549: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:23551: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23554: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_vfork_works=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_vfork_works=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +echo "$as_me:23566: 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:23572: 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 + +if test "x$ac_cv_func_vfork_works" = xyes; then + +cat >>confdefs.h <<\EOF +#define HAVE_WORKING_VFORK 1 +EOF + +else + +cat >>confdefs.h <<\EOF +#define vfork fork +EOF + +fi +if test "x$ac_cv_func_fork_works" = xyes; then + +cat >>confdefs.h <<\EOF +#define HAVE_WORKING_FORK 1 +EOF + +fi + +echo "$as_me:23597: 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 +else + + if test "$cross_compiling" = yes; then + cf_cv_fopen_bin_r=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 23607 "configure" +#include "confdefs.h" + +#include +int main(void) { + FILE *fp = fopen("conftest.tmp", "wb"); + int rc = 0; + if (fp != 0) { + int p, q; + for (p = 0; p < 256; ++p) { + fputc(p, fp); + } + fclose(fp); + fp = fopen("conftest.tmp", "rb"); + if (fp != 0) { + for (p = 0; p < 256; ++p) { + q = fgetc(fp); + if (q != p) { + rc = 1; + break; + } + } + } else { + rc = 1; + } + } else { + rc = 1; + } + ${cf_cv_main_return:-return} (rc); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:23640: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23643: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:23645: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23648: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_fopen_bin_r=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_fopen_bin_r=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + +fi +echo "$as_me:23661: 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 + +# special check for test/ditto.c + +echo "$as_me:23670: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 23678 "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 openpty (); +int +main (void) +{ +openpty (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23697: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23700: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23703: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23706: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_util_openpty=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_util_openpty=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:23717: 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 +else + cf_cv_lib_util=no +fi + +echo "$as_me:23725: 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 +else + + cf_save_LIBS="$LIBS" + test "$cf_cv_lib_util" = yes && { +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + } + for cf_header in pty.h libutil.h util.h + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 23752 "configure" +#include "confdefs.h" + +#include <$cf_header> + +int +main (void) +{ + + int x = openpty((int *)0, (int *)0, (char *)0, + (struct termios *)0, (struct winsize *)0); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23769: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23772: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23775: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23778: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_func_openpty=$cf_header + break + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_func_openpty=no + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + LIBS="$cf_save_LIBS" + +fi +echo "$as_me:23796: result: $cf_cv_func_openpty" >&5 +echo "${ECHO_T}$cf_cv_func_openpty" >&6 + +if test "$cf_cv_func_openpty" != no ; then + +cat >>confdefs.h < +EOF + +cat >>confdefs.h <<\EOF +#define USE_XTERM_PTY 1 +EOF + + if test "x$cf_cv_lib_util" = xyes ; then + +cf_add_libs="$TEST_LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +TEST_LIBS="$cf_add_libs" + + fi +fi + +if test "$with_hashed_db" != no ; then + +cat >>confdefs.h <<\EOF +#define USE_HASHED_DB 1 +EOF + +case $with_hashed_db in +(yes|*able*) + ;; +(*) + if test -d "$with_hashed_db" ; then + +if test -n "$with_hashed_db/include" ; then + for cf_add_incdir in $with_hashed_db/include + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 23869 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:23881: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:23884: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:23887: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23890: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:23907: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$with_hashed_db/lib" ; then + for cf_add_libdir in $with_hashed_db/lib + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:23943: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + else + case "$with_hashed_db" in + (./*|../*|/*) + { echo "$as_me:23954: WARNING: no such directory $with_hashed_db" >&5 +echo "$as_me: WARNING: no such directory $with_hashed_db" >&2;} + ;; + (*) + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/$with_hashed_db" && cf_search="$cf_search $prefix/include/$with_hashed_db" + test -d "$prefix/include/$with_hashed_db/include" && cf_search="$cf_search $prefix/include/$with_hashed_db/include" + test -d "$prefix/$with_hashed_db/include" && cf_search="$cf_search $prefix/$with_hashed_db/include" + test -d "$prefix/$with_hashed_db/include/$with_hashed_db" && cf_search="$cf_search $prefix/$with_hashed_db/include/$with_hashed_db" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/$with_hashed_db" && cf_search="$cf_search $cf_subdir_prefix/include/$with_hashed_db" + test -d "$cf_subdir_prefix/include/$with_hashed_db/include" && cf_search="$cf_search $cf_subdir_prefix/include/$with_hashed_db/include" + test -d "$cf_subdir_prefix/$with_hashed_db/include" && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/include" + test -d "$cf_subdir_prefix/$with_hashed_db/include/$with_hashed_db" && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/include/$with_hashed_db" +} + +done + + for cf_item in $cf_search + do + case "$cf_item" in + (*/$with_hashed_db) + +if test -n "$cf_item" ; then + for cf_add_incdir in $cf_item + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 24026 "configure" +#include "confdefs.h" +#include +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24038: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24041: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24044: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24047: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:24064: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + ;; + esac + done + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/$with_hashed_db" && cf_search="$cf_search $prefix/lib/$with_hashed_db" + test -d "$prefix/lib/$with_hashed_db/lib" && cf_search="$cf_search $prefix/lib/$with_hashed_db/lib" + test -d "$prefix/$with_hashed_db/lib" && cf_search="$cf_search $prefix/$with_hashed_db/lib" + test -d "$prefix/$with_hashed_db/lib/$with_hashed_db" && cf_search="$cf_search $prefix/$with_hashed_db/lib/$with_hashed_db" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/$with_hashed_db" && cf_search="$cf_search $cf_subdir_prefix/lib/$with_hashed_db" + test -d "$cf_subdir_prefix/lib/$with_hashed_db/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/$with_hashed_db/lib" + test -d "$cf_subdir_prefix/$with_hashed_db/lib" && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/lib" + test -d "$cf_subdir_prefix/$with_hashed_db/lib/$with_hashed_db" && cf_search="$cf_search $cf_subdir_prefix/$with_hashed_db/lib/$with_hashed_db" +} + +done + + for cf_item in $cf_search + do + case "$cf_item" in + (*/$with_hashed_db) + +if test -n "$cf_item" ; then + for cf_add_libdir in $cf_item + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:24144: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + ;; + esac + done + + ;; + esac + fi +esac + +echo "$as_me:24161: 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 24167 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:24171: \"$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:24177: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_db_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_db_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:24196: 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:24200: 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 +else + +cf_cv_hashed_db_version=unknown + +for cf_db_version in 1 2 3 4 5 6 +do + +echo "${as_me:-configure}:24211: testing checking for db version $cf_db_version ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 24214 "configure" +#include "confdefs.h" + +$ac_includes_default +#include + +#ifdef DB_VERSION_MAJOR + /* db2 (DB_VERSION_MAJOR=2) has also DB_VERSION_MINOR, tested with 7 */ +#if $cf_db_version == DB_VERSION_MAJOR + /* ok */ +#else + make an error +#endif +#else +#if $cf_db_version == 1 + /* ok: assuming this is DB 1.8.5 */ +#else + make an error +#endif +#endif + +int +main (void) +{ +DBT *foo = 0 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24244: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24247: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24250: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24253: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_hashed_db_version=$cf_db_version + break + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:24267: 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:24271: 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:24276: 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 +else + +cf_cv_hashed_db_libs=unknown +for cf_db_libs in "" db$cf_cv_hashed_db_version db-$cf_cv_hashed_db_version db '' +do + cf_save_libs="$LIBS" + if test -n "$cf_db_libs"; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_db_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + fi + +echo "${as_me:-configure}:24306: testing checking for library $cf_db_libs ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 24309 "configure" +#include "confdefs.h" + +$ac_includes_default +#include + +int +main (void) +{ + + char *path = "/tmp/foo"; +#ifdef DB_VERSION_MAJOR +#if DB_VERSION_MAJOR >= 4 + DB *result = 0; + db_create(&result, NULL, 0); + result->open(result, + NULL, + path, + path, + DB_HASH, + DB_CREATE, + 0644); +#elif DB_VERSION_MAJOR >= 3 + DB *result = 0; + db_create(&result, NULL, 0); + result->open(result, + path, + path, + DB_HASH, + DB_CREATE, + 0644); +#elif DB_VERSION_MAJOR >= 2 + DB *result = 0; + db_open(path, + DB_HASH, + DB_CREATE, + 0644, + (DB_ENV *) 0, + (DB_INFO *) 0, + &result); +#endif /* DB_VERSION_MAJOR */ +#else + DB *result = dbopen(path, + 2, + 0644, + DB_HASH, + 0); +#endif + ${cf_cv_main_return:-return}(result != 0) + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:24364: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:24367: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:24370: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24373: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + if test -n "$cf_db_libs" ; then + cf_cv_hashed_db_libs=$cf_db_libs + else + cf_cv_hashed_db_libs=default + fi + LIBS="$cf_save_libs" + break + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$cf_save_libs" +done + +fi +echo "$as_me:24393: 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:24397: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_cv_hashed_db_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + fi +fi + +else + + { { echo "$as_me:24423: error: Cannot find db.h" >&5 +echo "$as_me: error: Cannot find db.h" >&2;} + { (exit 1); exit 1; }; } + +fi + +fi + +if test -z "$cf_user_CFLAGS" && test "$enable_leaks" = yes ; then + CFLAGS=`echo "${CFLAGS}" | sed -e 's%-g %%' -e 's%-g$%%' -e 's%[ ]% %g' -e 's% [ ]*% %g' -e 's%^ %%' -e 's% $%%'` + CXXFLAGS=`echo "${CXXFLAGS}" | sed -e 's%-g %%' -e 's%-g$%%' -e 's%[ ]% %g' -e 's% [ ]*% %g' -e 's%^ %%' -e 's% $%%'` +fi + +# Just in case, check if the C compiler has a bool type. + +echo "$as_me:24438: 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 24446 "configure" +#include "confdefs.h" + +int +main (void) +{ +bool foo = false + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24458: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24461: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24464: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24467: \$? = $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 24474 "configure" +#include "confdefs.h" + +#ifndef __BEOS__ +#include +#endif + +int +main (void) +{ +bool foo = false + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24490: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24493: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24496: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24499: \$? = $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:24513: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else echo "$as_me:24515: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:24519: 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 24527 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ +bool x = false + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:24542: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:24545: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:24548: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24551: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_cc_bool_type=1 +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_cc_bool_type=0 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi + +if test "$cf_cv_cc_bool_type" = 1 +then echo "$as_me:24564: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else echo "$as_me:24566: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +# Check for C++ compiler characteristics (and ensure that it's there!) +if test -n "$CXX" ; then + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + +if test -n "$GXX" ; then + + cf_save="$LIBS" + LIBS="$LIBS $CXXLIBS" + echo "$as_me:24583: 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 24586 "configure" +#include "confdefs.h" + + #include +int +main (void) +{ + + std::cout << "Hello World!" << std::endl; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:24600: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:24603: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:24606: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24609: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_libstdcpp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_libstdcpp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:24618: result: $cf_have_libstdcpp" >&5 +echo "${ECHO_T}$cf_have_libstdcpp" >&6 + LIBS="$cf_save" + + if test "$cf_have_libstdcpp" != yes + then + case "$cf_cv_system_name" in + (os2*) + if test -z "`g++ -dM -E - < /dev/null | grep __KLIBC__`"; then + cf_stdcpp_libname=stdcpp + else + cf_stdcpp_libname=stdc++ + fi + ;; + (*) + cf_stdcpp_libname=stdc++ + ;; + esac + + echo "$as_me:24637: 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 +else + + cf_save="$LIBS" + LIBS="$LIBS $CXXLIBS" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_stdcpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 24663 "configure" +#include "confdefs.h" + + #include +int +main (void) +{ + + std::cout << "Hello World!" << std::endl; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:24677: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:24680: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:24683: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24686: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_libstdcpp=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_libstdcpp=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$cf_save" + +fi +echo "$as_me:24698: result: $cf_cv_libstdcpp" >&5 +echo "${ECHO_T}$cf_cv_libstdcpp" >&6 + test "$cf_cv_libstdcpp" = yes && { +cf_add_libs="$CXXLIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_stdcpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +CXXLIBS="$cf_add_libs" + } + fi +fi + + echo "$as_me:24720: 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 +else + +cat > conftest.$ac_ext <&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24738: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + test -f conftest2.$ac_objext && { (eval echo "$as_me:24740: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24743: \$? = $ac_status" >&5 + (exit "$ac_status"); }; +then + eval cf_cv_prog_CXX_c_o=yes +else + eval cf_cv_prog_CXX_c_o=no +fi +rm -rf ./conftest* + +fi +if test "$cf_cv_prog_CXX_c_o" = yes; then + echo "$as_me:24754: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:24757: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + case "$GXX_VERSION" in + (1.*|2.[0-6]*|[1-9][0-9].*) + cf_cxx_library=yes + ;; + (*-2.7*|2.7*) + +cf_cxx_library=unknown +case "$cf_cv_system_name" in +(os2*) + cf_gpp_libname=gpp + ;; +(*) + cf_gpp_libname=g++ + ;; +esac +if test "$GXX" = yes; then + echo "$as_me:24777: checking for lib$cf_gpp_libname" >&5 +echo $ECHO_N "checking for lib$cf_gpp_libname... $ECHO_C" >&6 + cf_save="$LIBS" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_gpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 24798 "configure" +#include "confdefs.h" + +#include <$cf_gpp_libname/builtin.h> + +int +main (void) +{ +two_arg_error_handler_t foo2 = lib_error_handler + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:24812: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:24815: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:24818: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24821: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cxx_library=yes + +cf_add_libs="$CXXLIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_gpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +CXXLIBS="$cf_add_libs" + + if test "$cf_gpp_libname" = cpp ; then + +cat >>confdefs.h <<\EOF +#define HAVE_GPP_BUILTIN_H 1 +EOF + + else + +cat >>confdefs.h <<\EOF +#define HAVE_GXX_BUILTIN_H 1 +EOF + + fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cat >"conftest.$ac_ext" <<_ACEOF +#line 24858 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ +two_arg_error_handler_t foo2 = lib_error_handler + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:24872: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:24875: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:24878: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:24881: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cxx_library=yes + +cf_add_libs="$CXXLIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_gpp_libname; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +CXXLIBS="$cf_add_libs" + +cat >>confdefs.h <<\EOF +#define HAVE_BUILTIN_H 1 +EOF + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cxx_library=no +fi +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:24914: result: $cf_cxx_library" >&5 +echo "${ECHO_T}$cf_cxx_library" >&6 +fi + + ;; + (*) + cf_cxx_library=no + ;; + esac + + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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:24930: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CXXCPP needs to be expanded + for CXXCPP in "$CXX -E" "/lib/cpp" + do + ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 24947 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:24952: \"$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:24958: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 24981 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:24985: \"$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:24991: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CXXCPP=$CXXCPP + +fi + CXXCPP=$ac_cv_prog_CXXCPP +else + ac_cv_prog_CXXCPP=$CXXCPP +fi +echo "$as_me:25028: result: $CXXCPP" >&5 +echo "${ECHO_T}$CXXCPP" >&6 +ac_preproc_ok=false +for ac_cxx_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 25038 "configure" +#include "confdefs.h" +#include + Syntax error +_ACEOF +if { (eval echo "$as_me:25043: \"$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:25049: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 25072 "configure" +#include "confdefs.h" +#include +_ACEOF +if { (eval echo "$as_me:25076: \"$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:25082: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + : +else + { { echo "$as_me:25110: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&5 +echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + +for ac_header in typeinfo +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:25125: 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 25131 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:25135: \"$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:25141: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:25160: 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 <&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 25179 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:25183: \"$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:25189: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_cxx_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:25208: 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 <&5 +echo $ECHO_N "checking if iostream uses std-namespace... $ECHO_C" >&6 + cat >"conftest.$ac_ext" <<_ACEOF +#line 25222 "configure" +#include "confdefs.h" + +#include +using std::endl; +using std::cerr; +int +main (void) +{ + +cerr << "testing" << endl; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25239: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25242: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25245: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25248: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_iostream_namespace=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_iostream_namespace=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:25257: result: $cf_iostream_namespace" >&5 +echo "${ECHO_T}$cf_iostream_namespace" >&6 + if test "$cf_iostream_namespace" = yes ; then + +cat >>confdefs.h <<\EOF +#define IOSTREAM_NAMESPACE 1 +EOF + + fi +fi + +echo "$as_me:25268: 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 25276 "configure" +#include "confdefs.h" + +int +main (void) +{ +bool foo = false + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25288: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25291: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25294: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25297: \$? = $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 25304 "configure" +#include "confdefs.h" + +#ifndef __BEOS__ +#include +#endif + +int +main (void) +{ +bool foo = false + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25320: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25323: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25326: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25329: \$? = $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:25343: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else echo "$as_me:25345: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:25349: 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 25357 "configure" +#include "confdefs.h" + +#include +#include + +int +main (void) +{ +bool x = false + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25372: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25375: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25378: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25381: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_builtin_bool=1 +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_builtin_bool=0 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi + +if test "$cf_cv_builtin_bool" = 1 +then echo "$as_me:25394: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else echo "$as_me:25396: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:25400: 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 25406 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +if ((bool *) 0) + return 0; +if (sizeof (bool)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25442: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25445: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25448: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25451: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_bool=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_bool=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:25461: result: $ac_cv_type_bool" >&5 +echo "${ECHO_T}$ac_cv_type_bool" >&6 + +echo "$as_me:25464: 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 +else + if test "$ac_cv_type_bool" = yes; then + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >"conftest.$ac_ext" <<_ACEOF +#line 25473 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) >= 0)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25506: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25509: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25512: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25515: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 25520 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25553: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25556: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25559: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25562: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1`; ac_mid=`expr 2 '*' "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=-1 ac_mid=-1 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 25578 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) >= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25611: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25614: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25617: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25620: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=`expr "$ac_mid" - 1`; ac_mid=`expr 2 '*' "$ac_mid"` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +# Binary search between lo and hi bounds. +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 25636 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25669: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25672: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25675: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25678: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +ac_cv_sizeof_bool=$ac_lo +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:25691: 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 25696 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +FILE *f = fopen ("conftest.val", "w"); +if (!f) + $ac_main_return (1); +fprintf (f, "%ld", (long)(sizeof (bool))); +fclose (f); + ; + return 0; +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:25733: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:25736: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:25738: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25741: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sizeof_bool=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_bool=0 +fi +fi +echo "$as_me:25757: result: $ac_cv_sizeof_bool" >&5 +echo "${ECHO_T}$ac_cv_sizeof_bool" >&6 +cat >>confdefs.h <&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 +else + + rm -f cf_test.out + if test "$cross_compiling" = yes; then + + case x$ac_cv_sizeof_bool in + (x1) cf_cv_type_of_bool="unsigned char";; + (x2) cf_cv_type_of_bool="unsigned short";; + (x4) cf_cv_type_of_bool="unsigned int";; + (x8) cf_cv_type_of_bool="unsigned long";; + (*) cf_cv_type_of_bool=unknown;; + esac + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 25782 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int main(void) +{ + FILE *fp = fopen("cf_test.out", "w"); + if (fp != 0) { + bool x = true; + if ((bool)(-x) >= 0) + fputs("unsigned ", fp); + if (sizeof(x) == sizeof(int)) fputs("int", fp); + else if (sizeof(x) == sizeof(char)) fputs("char", fp); + else if (sizeof(x) == sizeof(short))fputs("short",fp); + else if (sizeof(x) == sizeof(long)) fputs("long", fp); + fclose(fp); + } + ${cf_cv_main_return:-return}(0); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:25824: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:25827: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:25829: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25832: \$? = $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 + cf_cv_type_of_bool=unknown + fi +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_type_of_bool=unknown +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f cf_test.out + +fi +echo "$as_me:25849: 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:25856: 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:25861: 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" + +# etip.h includes ncurses.h which includes ncurses_dll.h +# But ncurses_dll.h is generated - fix here. +test -d include || mkdir include +test -f include/ncurses_dll.h || sed -e 's/@NCURSES_WRAP_PREFIX@/'$NCURSES_WRAP_PREFIX'/g' "${srcdir}/include/ncurses_dll.h.in" >include/ncurses_dll.h + +for cf_math in "" MATH_H +do +for cf_excp in "" MATH_EXCEPTION +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}" +cat >"conftest.$ac_ext" <<_ACEOF +#line 25879 "configure" +#include "confdefs.h" + +#include + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:25893: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:25896: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:25899: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25902: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + test -n "$cf_math" && cat >>confdefs.h <>confdefs.h <&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +done +echo "$as_me:25923: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 +CXXFLAGS="$cf_save_CXXFLAGS" + +if test -n "$CXX"; then +echo "$as_me:25928: 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 +else + + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + + if test "$cross_compiling" = yes; then + cf_cv_cpp_param_init=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 25945 "configure" +#include "confdefs.h" + +class TEST { +private: + int value; +public: + TEST(int x = 1); + ~TEST(); +}; + +TEST::TEST(int x = 1) // some compilers do not like second initializer +{ + value = x; +} +int main(void) { } + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:25964: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:25967: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:25969: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:25972: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_cpp_param_init=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_cpp_param_init=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + +fi +echo "$as_me:25991: result: $cf_cv_cpp_param_init" >&5 +echo "${ECHO_T}$cf_cv_cpp_param_init" >&6 +fi +test "$cf_cv_cpp_param_init" = yes && +cat >>confdefs.h <<\EOF +#define CPP_HAS_PARAM_INIT 1 +EOF + +if test -n "$CXX"; then + +echo "$as_me:26001: 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 +else + + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 26015 "configure" +#include "confdefs.h" + +class NCursesPanel +{ +public: + NCursesPanel(int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0) + { + } + NCursesPanel(); + ~NCursesPanel(); +}; + +template class NCursesUserPanel : public NCursesPanel +{ +public: + NCursesUserPanel (int nlines, + int ncols, + int begin_y = 0, + int begin_x = 0, + const T* p_UserData = static_cast(0)) + : NCursesPanel (nlines, ncols, begin_y, begin_x) + { + }; + NCursesUserPanel(const T* p_UserData = static_cast(0)) : NCursesPanel() + { + }; + + virtual ~NCursesUserPanel() {}; +}; + +int +main (void) +{ + + const char* p_UserData = static_cast(0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:26059: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:26062: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:26065: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26068: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_cpp_static_cast=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_cpp_static_cast=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + ac_ext=cc +ac_cpp='$CXXCPP $CPPFLAGS' +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" + +fi +echo "$as_me:26086: result: $cf_cv_cpp_static_cast" >&5 +echo "${ECHO_T}$cf_cv_cpp_static_cast" >&6 + +fi + +test "$cf_cv_cpp_static_cast" = yes && +cat >>confdefs.h <<\EOF +#define CPP_HAS_STATIC_CAST 1 +EOF + + CXX_AR='$(AR)' + CXX_ARFLAGS='$(ARFLAGS)' + case "$cf_cv_system_name" in + (irix*) + if test "$GXX" != yes ; then + CXX_AR='$(CXX)' + CXX_ARFLAGS='-ar -o' + fi + ;; + (sco3.2v5*) + CXXLDFLAGS="-u main" + ;; + (solaris2*) + if test "$GXX" != yes ; then + CXX_AR='$(CXX)' + CXX_ARFLAGS='-xar -o' + fi + ;; + esac + +else + cf_cxx_library=no + cf_cv_builtin_bool=1 + + # 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 + # the C++ portion of this configuration as a shortcut (or just to avoid + # compiling the demo in the c++ directory). So we need a reasonable + # default for the 'bool' type. + # + # Caveat: since the storage of the bool type is not standardized, it + # may change. + + if test "$NCURSES_BOOL" != auto ; then + cf_cv_type_of_bool=$NCURSES_BOOL + cf_cv_header_stdbool_h=0 + else + if test "$cf_cv_header_stdbool_h" = 1 ; then + +echo "$as_me:26135: 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 26141 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +if ((bool *) 0) + return 0; +if (sizeof (bool)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:26177: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:26180: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:26183: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26186: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_bool=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_bool=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:26196: result: $ac_cv_type_bool" >&5 +echo "${ECHO_T}$ac_cv_type_bool" >&6 + +echo "$as_me:26199: 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 +else + if test "$ac_cv_type_bool" = yes; then + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >"conftest.$ac_ext" <<_ACEOF +#line 26208 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) >= 0)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:26241: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:26244: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:26247: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26250: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 26255 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:26288: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:26291: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:26294: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26297: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1`; ac_mid=`expr 2 '*' "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=-1 ac_mid=-1 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 26313 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) >= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:26346: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:26349: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:26352: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26355: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=`expr "$ac_mid" - 1`; ac_mid=`expr 2 '*' "$ac_mid"` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +# Binary search between lo and hi bounds. +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 26371 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (bool)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:26404: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:26407: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:26410: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26413: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +ac_cv_sizeof_bool=$ac_lo +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:26426: 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 26431 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int +main (void) +{ +FILE *f = fopen ("conftest.val", "w"); +if (!f) + $ac_main_return (1); +fprintf (f, "%ld", (long)(sizeof (bool))); +fclose (f); + ; + return 0; +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:26468: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:26471: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:26473: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26476: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sizeof_bool=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_bool=0 +fi +fi +echo "$as_me:26492: result: $ac_cv_sizeof_bool" >&5 +echo "${ECHO_T}$ac_cv_sizeof_bool" >&6 +cat >>confdefs.h <&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 +else + + rm -f cf_test.out + if test "$cross_compiling" = yes; then + + case x$ac_cv_sizeof_bool in + (x1) cf_cv_type_of_bool="unsigned char";; + (x2) cf_cv_type_of_bool="unsigned short";; + (x4) cf_cv_type_of_bool="unsigned int";; + (x8) cf_cv_type_of_bool="unsigned long";; + (*) cf_cv_type_of_bool=unknown;; + esac + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 26517 "configure" +#include "confdefs.h" + +#include +#include + +#if defined(__cplusplus) + +#ifdef HAVE_GXX_BUILTIN_H +#include +#elif HAVE_GPP_BUILTIN_H +#include +#elif HAVE_BUILTIN_H +#include +#endif + +#else + +#if $cf_cv_header_stdbool_h +#include +#endif + +#endif + +int main(void) +{ + FILE *fp = fopen("cf_test.out", "w"); + if (fp != 0) { + bool x = true; + if ((bool)(-x) >= 0) + fputs("unsigned ", fp); + if (sizeof(x) == sizeof(int)) fputs("int", fp); + else if (sizeof(x) == sizeof(char)) fputs("char", fp); + else if (sizeof(x) == sizeof(short))fputs("short",fp); + else if (sizeof(x) == sizeof(long)) fputs("long", fp); + fclose(fp); + } + ${cf_cv_main_return:-return}(0); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:26559: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:26562: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:26564: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:26567: \$? = $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 + cf_cv_type_of_bool=unknown + fi +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_type_of_bool=unknown +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f cf_test.out + +fi +echo "$as_me:26584: 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:26591: 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:26597: 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:26603: result: $cf_cv_type_of_bool" >&5 +echo "${ECHO_T}$cf_cv_type_of_bool" >&6 + fi + fi +fi + +# If the C compiler did not declare bool, and we did not determine that the C++ +# compiler does not declare bool, turn on an ifdef in curses.h that makes the +# ncurses library use the same type as C++ bool. Note that this allows one to +# 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 +then + # oops: C has a bool. Unlikely, but C++ could differ. + USE_CXX_BOOL=0 +elif test "$cf_cv_builtin_bool" = 0 +then + # C++ has no bool + USE_CXX_BOOL=0 +else + # this is the normal case + USE_CXX_BOOL='defined(__cplusplus)' +fi + +if test -f "${srcdir}/Ada95/Makefile.in" ; then + + if test "$cf_with_ada" != "no" ; then + if test "$with_libtool" != "no"; then + { echo "$as_me:26632: 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:26649: 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:26666: 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:26678: result: $cf_TEMP_gnat" >&5 +echo "${ECHO_T}$cf_TEMP_gnat" >&6 +else + echo "$as_me:26681: 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:26691: 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:26702: 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:26731: 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:26750: result: $cf_gprconfig_value" >&5 +echo "${ECHO_T}$cf_gprconfig_value" >&6 + else + echo "$as_me:26753: 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:26766: 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:26777: 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:26786: 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:26794: 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:26809: 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:26818: result: $M4_exists" >&5 +echo "${ECHO_T}$M4_exists" >&6 +else + echo "$as_me:26821: 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:26827: 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:26831: checking if GNAT works" >&5 +echo $ECHO_N "checking if GNAT works... $ECHO_C" >&6 + +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&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:26859: 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:26871: checking optimization options for ADAFLAGS" >&5 +echo $ECHO_N "checking optimization options for ADAFLAGS... $ECHO_C" >&6 + case "$CFLAGS" in + (*-g*) + + ADAFLAGS="$ADAFLAGS -g" + + ;; + esac + case "$CFLAGS" in + (*-O*) + cf_O_flag=`echo "$CFLAGS" |sed -e 's/^.*-O/-O/' -e 's/[ ].*//'` + + ADAFLAGS="$ADAFLAGS $cf_O_flag" + + ;; + esac + echo "$as_me:26888: result: $ADAFLAGS" >&5 +echo "${ECHO_T}$ADAFLAGS" >&6 + +echo "$as_me:26891: 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 +else + +cf_cv_gnatprep_opt_t=no +gnatprep -T 2>/dev/null >/dev/null && cf_cv_gnatprep_opt_t=yes + +fi +echo "$as_me:26901: 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:26905: 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]) + cf_gnat_generics=yes + ;; +(*) + cf_gnat_generics=no + ;; +esac +echo "$as_me:26915: result: $cf_gnat_generics" >&5 +echo "${ECHO_T}$cf_gnat_generics" >&6 + +if test "$cf_gnat_generics" = yes +then + cf_compile_generics=generics + cf_generic_objects="\${GENOBJS}" +else + cf_compile_generics= + cf_generic_objects= +fi + +echo "$as_me:26927: 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 +else + +rm -rf ./conftest* ./*~conftest* +cat >>conftest.ads <>conftest.adb <&5 2>&1 ) ; then + cf_cv_gnat_sigint=yes +else + cf_cv_gnat_sigint=no +fi +rm -rf ./conftest* ./*~conftest* + +fi +echo "$as_me:26975: result: $cf_cv_gnat_sigint" >&5 +echo "${ECHO_T}$cf_cv_gnat_sigint" >&6 + +if test "$cf_cv_gnat_sigint" = yes ; then + USE_GNAT_SIGINT="" +else + USE_GNAT_SIGINT="#" +fi + +cf_gnat_libraries=no +cf_gnat_projects=no + +if test "$enable_gnat_projects" != no ; then +echo "$as_me:26988: 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]*) + ;; +(*) + case "$cf_cv_system_name" in + (cygwin*|msys*) + ;; + (*) + rm -rf ./conftest* ./*~conftest* + if mkdir conftest.src conftest.bin conftest.lib + then + cd conftest.src + rm -rf ./conftest* ./*~conftest* + cat >>library.gpr <>confpackage.ads <>confpackage.adb <&5 2>&1 ) ; then + cf_gnat_projects=yes + fi + cd .. + fi + if test -f conftest.lib/confpackage.ali + then + cf_gnat_libraries=yes + fi + rm -rf ./conftest* ./*~conftest* + ;; + esac + ;; +esac +echo "$as_me:27051: 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:27057: checking if GNAT supports libraries" >&5 +echo $ECHO_N "checking if GNAT supports libraries... $ECHO_C" >&6 + echo "$as_me:27059: result: $cf_gnat_libraries" >&5 +echo "${ECHO_T}$cf_gnat_libraries" >&6 +fi + +USE_OLD_MAKERULES="" +USE_GNAT_PROJECTS="#" +USE_GNAT_MAKE_GPR="#" +USE_GNAT_GPRBUILD="#" + +if test "$cf_gnat_projects" = yes +then + USE_OLD_MAKERULES="#" + USE_GNAT_PROJECTS="" + if test "$cf_cv_VERSION_GPRBUILD" != no + then + USE_GNAT_GPRBUILD="" + elif test "$cf_cv_VERSION_GNATMAKE" != no + then + USE_GNAT_MAKE_GPR="" + else + { echo "$as_me:27079: 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 + +if test "$cf_gnat_libraries" = yes +then + USE_GNAT_LIBRARIES="" +else + USE_GNAT_LIBRARIES="#" +fi + +echo "$as_me:27091: checking for ada-compiler" >&5 +echo $ECHO_N "checking for ada-compiler... $ECHO_C" >&6 + +# Check whether --with-ada-compiler or --without-ada-compiler was given. +if test "${with_ada_compiler+set}" = set; then + withval="$with_ada_compiler" + cf_ada_compiler=$withval +else + cf_ada_compiler=gnatmake +fi; + +echo "$as_me:27102: result: $cf_ada_compiler" >&5 +echo "${ECHO_T}$cf_ada_compiler" >&6 + + cf_ada_package=terminal_interface + +echo "$as_me:27107: checking for ada-include" >&5 +echo $ECHO_N "checking for ada-include... $ECHO_C" >&6 + +# Check whether --with-ada-include or --without-ada-include was given. +if test "${with_ada_include+set}" = set; then + withval="$with_ada_include" + +else + withval="${ADA_INCLUDE:-$prefix/share/ada/adainclude}" +fi; if test -n "$prefix/share/ada/adainclude" ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:27143: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +fi +eval ADA_INCLUDE="$withval" + +echo "$as_me:27152: result: $ADA_INCLUDE" >&5 +echo "${ECHO_T}$ADA_INCLUDE" >&6 + +echo "$as_me:27155: checking for ada-objects" >&5 +echo $ECHO_N "checking for ada-objects... $ECHO_C" >&6 + +# Check whether --with-ada-objects or --without-ada-objects was given. +if test "${with_ada_objects+set}" = set; then + withval="$with_ada_objects" + +else + withval="${ADA_OBJECTS:-$prefix/lib/ada/adalib}" +fi; if test -n "$prefix/lib/ada/adalib" ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:27191: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +fi +eval ADA_OBJECTS="$withval" + +echo "$as_me:27200: result: $ADA_OBJECTS" >&5 +echo "${ECHO_T}$ADA_OBJECTS" >&6 + +echo "$as_me:27203: checking if an Ada95 shared-library should be built" >&5 +echo $ECHO_N "checking if an Ada95 shared-library should be built... $ECHO_C" >&6 + +# Check whether --with-ada-sharedlib or --without-ada-sharedlib was given. +if test "${with_ada_sharedlib+set}" = set; then + withval="$with_ada_sharedlib" + with_ada_sharedlib=$withval +else + with_ada_sharedlib=no +fi; +echo "$as_me:27213: result: $with_ada_sharedlib" >&5 +echo "${ECHO_T}$with_ada_sharedlib" >&6 + +if test "x$with_ada_sharedlib" != xno +then + if test "x$cf_gnat_projects" != xyes + then + { echo "$as_me:27220: WARNING: disabling shared-library since GNAT projects are not supported" >&5 +echo "$as_me: WARNING: disabling shared-library since GNAT projects are not supported" >&2;} + with_ada_sharedlib=no + fi +fi + +ADA_SHAREDLIB='lib$(LIB_NAME).so.1' +MAKE_ADA_SHAREDLIB="#" + +if test "x$with_ada_sharedlib" != xno +then + MAKE_ADA_SHAREDLIB= + if test "x$with_ada_sharedlib" != xyes + then + ADA_SHAREDLIB="$with_ada_sharedlib" + fi +fi + + # allow the Ada binding to be renamed + +echo "$as_me:27240: checking for ada-libname" >&5 +echo $ECHO_N "checking for ada-libname... $ECHO_C" >&6 + +# Check whether --with-ada-libname or --without-ada-libname was given. +if test "${with_ada_libname+set}" = set; then + withval="$with_ada_libname" + ADA_LIBNAME=$withval +else + ADA_LIBNAME=AdaCurses +fi; +case "x$ADA_LIBNAME" in +(x|xyes|xno) + ADA_LIBNAME=AdaCurses + ;; +esac + +echo "$as_me:27256: result: $ADA_LIBNAME" >&5 +echo "${ECHO_T}$ADA_LIBNAME" >&6 + + fi + fi +else + cf_with_ada=no +fi + +# do this "late" to avoid conflict with header-checks +if test "x$with_widec" = xyes ; then + echo "$as_me:27267: 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 27273 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +if ((wchar_t *) 0) + return 0; +if (sizeof (wchar_t)) + return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:27288: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:27291: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:27294: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:27297: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_type_wchar_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_type_wchar_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:27307: result: $ac_cv_type_wchar_t" >&5 +echo "${ECHO_T}$ac_cv_type_wchar_t" >&6 + +echo "$as_me:27310: 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 +else + if test "$ac_cv_type_wchar_t" = yes; then + if test "$cross_compiling" = yes; then + # Depending upon the size, compute the lo and hi bounds. +cat >"conftest.$ac_ext" <<_ACEOF +#line 27319 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (wchar_t)) >= 0)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:27331: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:27334: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:27337: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:27340: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=0 ac_mid=0 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 27345 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:27357: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:27360: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:27363: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:27366: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1`; ac_mid=`expr 2 '*' "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=-1 ac_mid=-1 + while :; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 27382 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (wchar_t)) >= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:27394: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:27397: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:27400: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:27403: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_lo=$ac_mid; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_hi=`expr "$ac_mid" - 1`; ac_mid=`expr 2 '*' "$ac_mid"` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +# Binary search between lo and hi bounds. +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 27419 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +int _array_ [1 - 2 * !((sizeof (wchar_t)) <= $ac_mid)] + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:27431: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:27434: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:27437: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:27440: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_hi=$ac_mid +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_lo=`expr "$ac_mid" + 1` +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +ac_cv_sizeof_wchar_t=$ac_lo +else + if test "$cross_compiling" = yes; then + { { echo "$as_me:27453: 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 27458 "configure" +#include "confdefs.h" +$ac_includes_default +int +main (void) +{ +FILE *f = fopen ("conftest.val", "w"); +if (!f) + $ac_main_return (1); +fprintf (f, "%ld", (long)(sizeof (wchar_t))); +fclose (f); + ; + return 0; +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:27474: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:27477: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:27479: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:27482: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_sizeof_wchar_t=`cat conftest.val` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +rm -f conftest.val +else + ac_cv_sizeof_wchar_t=0 +fi +fi +echo "$as_me:27498: result: $ac_cv_sizeof_wchar_t" >&5 +echo "${ECHO_T}$ac_cv_sizeof_wchar_t" >&6 +cat >>confdefs.h <&6 + +echo "${as_me:-configure}:27511: testing test failed (assume 2) ..." 1>&5 + + sed /SIZEOF_WCHAR_T/d confdefs.h >confdefs.tmp + mv confdefs.tmp confdefs.h + echo "#define SIZEOF_WCHAR_T 2" >>confdefs.h + fi +fi + +### Construct the ncurses library-subsets, if any, from this set of keywords: +### none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar +### +### ticlib modules may be a separate library, otherwise contained in termlib. +### termlib modules may be a separate library, otherwise contained in ncurses. +### +### The of "+" or " " between the tokens controls the way the script +### chooses to split module lists into libraries. +### +### (see CF_LIB_RULES). +echo "$as_me:27529: checking for library subsets" >&5 +echo $ECHO_N "checking for library subsets... $ECHO_C" >&6 +LIB_SUBSETS= + +if test "x$cf_with_progs" = xyes || test "$with_ticlib" != no || test "$with_termcap" != no; then + LIB_SUBSETS="${LIB_SUBSETS}ticlib" + if test "$with_ticlib" != no ; then + LIB_SUBSETS="${LIB_SUBSETS} " + else + LIB_SUBSETS="${LIB_SUBSETS}+" + fi +fi + +LIB_SUBSETS="${LIB_SUBSETS}termlib" +test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo" + +if test "$with_termlib" != no ; then + LIB_SUBSETS="${LIB_SUBSETS} " +else + LIB_SUBSETS="${LIB_SUBSETS}+" +fi + +LIB_SUBSETS="${LIB_SUBSETS}base" + +# Most term-driver calls are to tinfo, but some like init_pair are to the +# base library (so it resides in base). +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 + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32" + else + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" + fi + CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER" + ;; + (*) + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo" + ;; + esac +elif test "x$with_exp_win32" = xyes ; then + case "$cf_cv_system_name" in + (*mingw32*|*mingw64*) + LIB_SUBSETS="${LIB_SUBSETS}+port_win32" + ;; + (*) + ;; + esac +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:27583: result: $LIB_SUBSETS" >&5 +echo "${ECHO_T}$LIB_SUBSETS" >&6 + +### Construct the list of include-directories to be generated + +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir}/../include $CPPFLAGS" +fi +CPPFLAGS="-I../include $CPPFLAGS" +if test "$srcdir" != "."; then + CPPFLAGS="-I\${srcdir} $CPPFLAGS" +fi +CPPFLAGS="-I. $CPPFLAGS" + +ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS" +if test "$srcdir" != "."; then + ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS" +fi +if test "$GCC" != yes; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" +elif test "$includedir" != "/usr/include"; then + if test "$includedir" = '${prefix}/include' ; then + if test x$prefix != x/usr ; then + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi + else + ACPPFLAGS="$ACPPFLAGS -I\${includedir}" + fi +fi + +### Build up pieces for makefile rules +echo "$as_me:27614: checking default library suffix" >&5 +echo $ECHO_N "checking default library suffix... $ECHO_C" >&6 + + case $DFT_LWR_MODEL in + (libtool) DFT_ARG_SUFFIX='' ;; + (normal) DFT_ARG_SUFFIX='' ;; + (debug) DFT_ARG_SUFFIX='_g' ;; + (profile) DFT_ARG_SUFFIX='_p' ;; + (shared) DFT_ARG_SUFFIX='' ;; + esac + test -n "$LIB_SUFFIX" && DFT_ARG_SUFFIX="${LIB_SUFFIX}${DFT_ARG_SUFFIX}" +echo "$as_me:27625: result: $DFT_ARG_SUFFIX" >&5 +echo "${ECHO_T}$DFT_ARG_SUFFIX" >&6 + +echo "$as_me:27628: checking default library-dependency suffix" >&5 +echo $ECHO_N "checking default library-dependency suffix... $ECHO_C" >&6 + + case X$DFT_LWR_MODEL in + (Xlibtool) + DFT_LIB_SUFFIX='.la' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xdebug) + case "$cf_cv_system_name" in + (*-msvc*) + DFT_LIB_SUFFIX='_g.lib' + ;; + (*) + DFT_LIB_SUFFIX='_g.a' + ;; + esac + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xprofile) + case "$cf_cv_system_name" in + (*-msvc*) + DFT_LIB_SUFFIX='_p.lib' + ;; + (*) + DFT_LIB_SUFFIX='_p.a' + ;; + esac + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (Xshared) + case "$cf_cv_system_name" in + (aix[5-7]*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (*-msvc*) + DFT_LIB_SUFFIX='.dll' + DFT_DEP_SUFFIX='.dll.lib' + ;; + (cygwin*|msys*|mingw*) + DFT_LIB_SUFFIX='.dll' + DFT_DEP_SUFFIX='.dll.a' + ;; + (darwin*) + DFT_LIB_SUFFIX='.dylib' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (hpux*) + case "$target" in + (ia64*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + (*) + DFT_LIB_SUFFIX='.sl' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + ;; + (*) + DFT_LIB_SUFFIX='.so' + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + ;; + (*) + case "$target" in + (*-msvc*) + DFT_LIB_SUFFIX='.lib' + ;; + (*) + DFT_LIB_SUFFIX='.a' + ;; + esac + DFT_DEP_SUFFIX=$DFT_LIB_SUFFIX + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + DFT_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_LIB_SUFFIX}" + DFT_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${DFT_DEP_SUFFIX}" + fi +echo "$as_me:27711: result: $DFT_DEP_SUFFIX" >&5 +echo "${ECHO_T}$DFT_DEP_SUFFIX" >&6 + +echo "$as_me:27714: checking default object directory" >&5 +echo $ECHO_N "checking default object directory... $ECHO_C" >&6 + + case $DFT_LWR_MODEL in + (libtool) DFT_OBJ_SUBDIR='obj_lo' ;; + (normal) DFT_OBJ_SUBDIR='objects' ;; + (debug) DFT_OBJ_SUBDIR='obj_g' ;; + (profile) DFT_OBJ_SUBDIR='obj_p' ;; + (shared) + case "$cf_cv_system_name" in + (cygwin|msys) + DFT_OBJ_SUBDIR='objects' ;; + (*) + DFT_OBJ_SUBDIR='obj_s' ;; + esac + esac +echo "$as_me:27730: result: $DFT_OBJ_SUBDIR" >&5 +echo "${ECHO_T}$DFT_OBJ_SUBDIR" >&6 + +if test "x$cf_with_cxx" = xyes ; then +echo "$as_me:27734: 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++) + CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX +elif test "$with_shared_cxx" != "no"; then + # also for g++ users... + CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX +else + # we normally make a static library because C/C++ library rules differ + + case Xnormal in + (Xlibtool) + CXX_LIB_SUFFIX='.la' + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + (Xdebug) + case "$cf_cv_system_name" in + (*-msvc*) + CXX_LIB_SUFFIX='_g.lib' + ;; + (*) + CXX_LIB_SUFFIX='_g.a' + ;; + esac + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + (Xprofile) + case "$cf_cv_system_name" in + (*-msvc*) + CXX_LIB_SUFFIX='_p.lib' + ;; + (*) + CXX_LIB_SUFFIX='_p.a' + ;; + esac + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + (Xshared) + case "$cf_cv_system_name" in + (aix[5-7]*) + CXX_LIB_SUFFIX='.so' + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + (*-msvc*) + CXX_LIB_SUFFIX='.dll' + CXX_DEP_SUFFIX='.dll.lib' + ;; + (cygwin*|msys*|mingw*) + CXX_LIB_SUFFIX='.dll' + CXX_DEP_SUFFIX='.dll.a' + ;; + (darwin*) + CXX_LIB_SUFFIX='.dylib' + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + (hpux*) + case "$target" in + (ia64*) + CXX_LIB_SUFFIX='.so' + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + (*) + CXX_LIB_SUFFIX='.sl' + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + esac + ;; + (*) + CXX_LIB_SUFFIX='.so' + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + esac + ;; + (*) + case "$target" in + (*-msvc*) + CXX_LIB_SUFFIX='.lib' + ;; + (*) + CXX_LIB_SUFFIX='.a' + ;; + esac + CXX_DEP_SUFFIX=$CXX_LIB_SUFFIX + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + CXX_LIB_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${CXX_LIB_SUFFIX}" + CXX_DEP_SUFFIX="${LIB_SUFFIX}${EXTRA_SUFFIX}${CXX_DEP_SUFFIX}" + fi + +fi +echo "$as_me:27827: result: $CXX_LIB_SUFFIX" >&5 +echo "${ECHO_T}$CXX_LIB_SUFFIX" >&6 + +fi + +# do not want -ldl in build except as needed for -lncurses dependency +if test "x$with_dlsym" = xyes ; then +if test "$DFT_LWR_MODEL" = shared || \ + test "$DFT_LWR_MODEL" = libtool ; then + +# remove dl library from $LIBS +LIBS=`echo "$LIBS" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'` + +fi +fi +### Set up low-level terminfo dependencies for makefiles. + +# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but +# do not need libdl +TICS_LIST= +if test "x$with_dlsym" = xyes ; then + +# remove dl library from $SHLIB_LIST +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}" +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 + USE_CFG_SUFFIX="${USE_CFG_SUFFIX}${EXTRA_SUFFIX}" +fi + +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_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}" + else + 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}" + fi + TICS_LDFLAGS="-L${LIB_DIR}" + TICS_LIBS="-l${TICS_ARG_SUFFIX}" +else + TICS_SUFFIX=${DFT_LIB_SUFFIX} + TICS_LDFLAGS="-L${LIB_DIR}" + TICS_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}" +fi + +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_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}" + else + 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}" + fi + + TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" + TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" + if test "$DFT_LWR_MODEL" = "libtool"; then + TEST_ARGS="${TEST_DEPS}" + TEST_ARG2="${TEST_DEP2}" + TINFO_LDFLAGS="-L${LIB_DIR}" + TINFO_LIBS="$TEST_ARGS" + TICS_LIST="$SHLIB_LIST $TEST_ARGS" + SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS" + else + TEST_ARGS="-l${TINFO_ARG_SUFFIX}" + TEST_ARG2="-l${TINFO_ARG_SUFFIX}" + if test "x$with_term_driver" != xno ; then + TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}" + TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${USE_ARG_SUFFIX}" + TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS" + else + TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" + TINFO_LIBS="$TEST_ARGS" + fi + TINFO_LDFLAGS="-L${LIB_DIR}" + SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" + fi +else + # the next lines are needed for linking libtic over libncurses + TINFO_NAME=${LIB_NAME} + TINFO_SUFFIX=${DFT_LIB_SUFFIX} + TINFO_ARG_SUFFIX=${LIB_NAME}${USE_ARG_SUFFIX} + if test "x$with_tic_depends" = xyes ; then + TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}" + else + TICS_LIST="$SHLIB_LIST" + fi + + TINFO_LDFLAGS="-L${LIB_DIR}" + TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}" +fi + +if test "$DFT_LWR_MODEL" = shared ; then + case "$cf_cv_system_name" in + (cygwin*|msys*) + # "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll" + TINFO_SUFFIX=.dll + ;; + esac +fi + +if test "x$with_dlsym" = xyes ; then + +# remove dl library from $TICS_LIST +TICS_LIST=`echo "$TICS_LIST" | sed -e 's/-ldl[ ]//g' -e 's/-ldl$//'` + +fi + +if test "$DFT_LWR_MODEL" = "libtool"; then + OBJEXT=lo +fi + +# needed for Ada95 +TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'` + +case "$DFT_LWR_MODEL" in +(normal|debug|profile) + +if test "$GCC" = yes ; then + case "$cf_cv_system_name" in + (OS/2*|os2*|aix[4]*|solaris2.1[0-9]|darwin*) + LDFLAGS_STATIC= + LDFLAGS_SHARED= + ;; + (*) # normally, except when broken + LDFLAGS_STATIC=-static + LDFLAGS_SHARED=-dynamic + ;; + esac +else + case "$cf_cv_system_name" in + (aix[4-7]*) # from ld manpage + LDFLAGS_STATIC=-bstatic + LDFLAGS_SHARED=-bdynamic + ;; + (hpux*) # from ld manpage 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 + LDFLAGS_STATIC=-Bstatic + LDFLAGS_SHARED=-Bdynamic + ;; + (osf[45]*) # from ld manpage osf4.0d, osf5.1 + # alternative "-oldstyle_liblookup" (not in cc manpage) + LDFLAGS_STATIC=-noso + LDFLAGS_SHARED=-so_archive + ;; + (solaris2*) + LDFLAGS_STATIC=-Bstatic + LDFLAGS_SHARED=-Bdynamic + ;; + esac +fi + +if test -n "$LDFLAGS_STATIC" && test -n "$LDFLAGS_SHARED" +then + echo "$as_me:28003: 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 < +int cf_ldflags_static(FILE *fp) { return fflush(fp); } +EOF + if { (eval echo "$as_me:28012: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:28015: \$? = $ac_status" >&5 + (exit "$ac_status"); } ; then + ( $AR $ARFLAGS libconftest.a conftest.o ) 2>&5 1>/dev/null + ( eval $RANLIB libconftest.a ) 2>&5 >/dev/null + fi + rm -f conftest.* + + cf_save_LIBS="$LIBS" + + LIBS="$LDFLAGS_STATIC -L`pwd` -lconftest $LDFLAGS_DYNAMIC $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 28026 "configure" +#include "confdefs.h" + +#line 28029 "configure" +#include +int cf_ldflags_static(FILE *fp); + +int +main (void) +{ + + return cf_ldflags_static(stdin); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:28044: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:28047: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:28050: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:28053: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + # some linkers simply ignore the -dynamic + case x`file "conftest$ac_exeext" 2>/dev/null` in + (*static*) + cf_ldflags_static=no + ;; + (*) + cf_ldflags_static=yes + ;; + esac + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_ldflags_static=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + rm -f libconftest.* + LIBS="$cf_save_LIBS" + + echo "$as_me:28076: result: $cf_ldflags_static" >&5 +echo "${ECHO_T}$cf_ldflags_static" >&6 + + if test "$cf_ldflags_static" != yes + then + LDFLAGS_STATIC= + LDFLAGS_SHARED= + fi +else + LDFLAGS_STATIC= + LDFLAGS_SHARED= +fi + + ;; +esac + +echo "$as_me:28092: checking where we will install curses.h" >&5 +echo $ECHO_N "checking where we will install curses.h... $ECHO_C" >&6 + +includesubdir= +if test "$with_overwrite" = no && \ + { test "x$includedir" = 'x${prefix}/include' || \ + test "x$includedir" = "x${prefix}/include"; } +then + includesubdir="/ncurses${USE_LIB_SUFFIX}" +fi +echo "$as_me:28102: result: ${includedir}${includesubdir}" >&5 +echo "${ECHO_T}${includedir}${includesubdir}" >&6 + +### Resolve a conflict between normal and wide-curses by forcing applications +### that will need libutf8 to add it to their configure script. +if test "$with_overwrite" != no ; then +if test "$NCURSES_LIBUTF8" = 1 ; then + NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)' + { echo "$as_me:28110: 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 +WITH_OVERWRITE=$with_overwrite + +### At least on MinGW a shared library build without libtool +### requires adding the additional libs to the link list. +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*) + if test "$DFT_LWR_MODEL" != "libtool"; then + SHLIB_LIST="$SHLIB_LIST ${LIBS}" + fi + ;; +*) ;; +esac + +# used to separate tack out of the tree +NCURSES_TREE= + +### predefined stuff for the test programs + +cat >>confdefs.h <<\EOF +#define HAVE_SLK_COLOR 1 +EOF + +# pkgsrc uses these + +echo "$as_me:28138: 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. +if test "${with_form_libname+set}" = set; then + withval="$with_form_libname" + with_lib_basename=$withval +else + with_lib_basename=form +fi; +FORM_NAME="$with_lib_basename" + +case "x$FORM_NAME" in +(x|xno|xnone|xyes) + FORM_NAME=form + ;; +(*) + ;; +esac + +echo "$as_me:28158: result: $FORM_NAME" >&5 +echo "${ECHO_T}$FORM_NAME" >&6 + +echo "$as_me:28161: 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. +if test "${with_menu_libname+set}" = set; then + withval="$with_menu_libname" + with_lib_basename=$withval +else + with_lib_basename=menu +fi; +MENU_NAME="$with_lib_basename" + +case "x$MENU_NAME" in +(x|xno|xnone|xyes) + MENU_NAME=menu + ;; +(*) + ;; +esac + +echo "$as_me:28181: result: $MENU_NAME" >&5 +echo "${ECHO_T}$MENU_NAME" >&6 + +echo "$as_me:28184: 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. +if test "${with_panel_libname+set}" = set; then + withval="$with_panel_libname" + with_lib_basename=$withval +else + with_lib_basename=panel +fi; +PANEL_NAME="$with_lib_basename" + +case "x$PANEL_NAME" in +(x|xno|xnone|xyes) + PANEL_NAME=panel + ;; +(*) + ;; +esac + +echo "$as_me:28204: result: $PANEL_NAME" >&5 +echo "${ECHO_T}$PANEL_NAME" >&6 + +echo "$as_me:28207: 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. +if test "${with_cxx_libname+set}" = set; then + withval="$with_cxx_libname" + with_lib_basename=$withval +else + with_lib_basename=ncurses++ +fi; +CXX_NAME="$with_lib_basename" + +case "x$CXX_NAME" in +(x|xno|xnone|xyes) + CXX_NAME=ncurses++ + ;; +(*) + ;; +esac + +echo "$as_me:28227: 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:28233: checking for src modules" >&5 +echo $ECHO_N "checking for src modules... $ECHO_C" >&6 + +# dependencies and linker-arguments for test-programs +TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEPS" +TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${LIB_NAME}${DFT_DEP_SUFFIX} $TEST_DEP2" +if test "$DFT_LWR_MODEL" = "libtool"; then + TEST_ARGS="${TEST_DEPS}" + TEST_ARG2="${TEST_DEP2}" +else + TEST_ARGS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS" + TEST_ARG2="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARG2" +fi + +PC_MODULES_TO_MAKE="ncurses${USE_ARG_SUFFIX}" +cf_cv_src_modules= +for cf_dir in $modules_to_build +do + if test -f "$srcdir/$cf_dir/modules" ; then + + # We may/may not have tack in the distribution, though the + # makefile is. + if test "$cf_dir" = tack ; then + if test "x$cf_with_tack" != "xyes"; then + continue + fi + fi + + if test -z "$cf_cv_src_modules"; then + cf_cv_src_modules=$cf_dir + else + cf_cv_src_modules="$cf_cv_src_modules $cf_dir" + fi + + # Make the ncurses_cfg.h file record the library interface files as + # well. These are header files that are the same name as their + # directory. Ncurses is the only library that does not follow + # that pattern. + if test "$cf_dir" = tack ; then + continue + elif test -f "$srcdir/${cf_dir}/${cf_dir}.h" ; then + +cf_have_include=`echo "$cf_dir" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <>confdefs.h <&5 +echo "${ECHO_T}$cf_cv_src_modules" >&6 + +TEST_ARGS="-L${LIB_DIR} $TEST_ARGS" +TEST_ARG2="-L${LIB_2ND} $TEST_ARG2" + +SRC_SUBDIRS= +if test "x$cf_with_manpages" != xno ; then + SRC_SUBDIRS="$SRC_SUBDIRS man" +fi +SRC_SUBDIRS="$SRC_SUBDIRS include" +for cf_dir in $cf_cv_src_modules +do + SRC_SUBDIRS="$SRC_SUBDIRS $cf_dir" +done +if test "x$cf_with_tests" != "xno" ; then + SRC_SUBDIRS="$SRC_SUBDIRS test" +fi +# always make this, to install the ncurses-config script +SRC_SUBDIRS="$SRC_SUBDIRS misc" +if test "$cf_with_cxx_binding" != no; then + PC_MODULES_TO_MAKE="${PC_MODULES_TO_MAKE} ncurses++${USE_ARG_SUFFIX}" + SRC_SUBDIRS="$SRC_SUBDIRS c++" +fi + +test "x$with_termlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TINFO_ARG_SUFFIX" +test "x$with_ticlib" != xno && PC_MODULES_TO_MAKE="$PC_MODULES_TO_MAKE $TICS_ARG_SUFFIX" + +ADA_SUBDIRS= +if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = xyes && test -f "$srcdir/Ada95/Makefile.in" ; then + SRC_SUBDIRS="$SRC_SUBDIRS Ada95" + ADA_SUBDIRS="gen src" + if test "x$cf_with_tests" != "xno" ; then + ADA_SUBDIRS="$ADA_SUBDIRS samples" + fi +fi + +SUB_MAKEFILES= +for cf_dir in $SRC_SUBDIRS +do + SUB_MAKEFILES="$SUB_MAKEFILES $cf_dir/Makefile" +done + +if test -n "$ADA_SUBDIRS"; then + for cf_dir in $ADA_SUBDIRS + do + SUB_MAKEFILES="$SUB_MAKEFILES Ada95/$cf_dir/Makefile" + done + +fi + +if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then + SUB_MAKEFILES="$SUB_MAKEFILES Ada95/src/library.gpr:Ada95/src/library.gpr.in" + SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${USE_CFG_SUFFIX}-config:Ada95/gen/adacurses-config.in" + SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${USE_CFG_SUFFIX}-config.1:man/MKada_config.in" +fi + +DIRS_TO_MAKE="lib" +for cf_item in $cf_list_models +do + + case $cf_item in + (libtool) cf_subdir='obj_lo' ;; + (normal) cf_subdir='objects' ;; + (debug) cf_subdir='obj_g' ;; + (profile) cf_subdir='obj_p' ;; + (shared) + case "$cf_cv_system_name" in + (cygwin|msys) + cf_subdir='objects' ;; + (*) + cf_subdir='obj_s' ;; + esac + esac + + for cf_item2 in $DIRS_TO_MAKE + do + test "$cf_item2" = "$cf_subdir" && break + done + test ".$cf_item2" != ".$cf_subdir" && DIRS_TO_MAKE="$DIRS_TO_MAKE $cf_subdir" +done +for cf_dir in $DIRS_TO_MAKE +do + test ! -d "$cf_dir" && mkdir "$cf_dir" +done + +# symbols that differ when compiling Ada95 by itself. +NCURSES_SHLIB2=$SHELL' $(top_srcdir)/misc/shlib' + +# values to use as strings + +cat >>confdefs.h <>confdefs.h <&6 + +echo "${as_me:-configure}:28463: 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//'` + ;; + esac + ;; +esac + +# Help to automatically enable the extended curses features when using either +# the *-config or the ".pc" files by adding defines. +echo "$as_me:28474: checking for defines to add to ncurses${USE_CFG_SUFFIX}-config script" >&5 +echo $ECHO_N "checking for defines to add to ncurses${USE_CFG_SUFFIX}-config script... $ECHO_C" >&6 +PKG_CFLAGS= +for cf_loop1 in $CPPFLAGS_after_XOPEN +do + cf_found=no + for cf_loop2 in $CPPFLAGS_before_XOPEN + do + if test "x$cf_loop1" = "x$cf_loop2" + then + cf_found=yes + break + fi + done + test "$cf_found" = no && PKG_CFLAGS="$PKG_CFLAGS $cf_loop1" +done +echo "$as_me:28490: result: $PKG_CFLAGS" >&5 +echo "${ECHO_T}$PKG_CFLAGS" >&6 + +# AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this. +case "x$NCURSES_OSPEED" in +(*short*) + cf_compatible=1 + ;; +(*) + cf_compatible=0 + ;; +esac + +cat >>confdefs.h <&6 + +echo "${as_me:-configure}:28551: testing will map symbols to ABI=$cf_cv_abi_version ..." 1>&5 + +fi + +if test "x$WILDCARD_SYMS" = xno +then + cf_filter_syms=yes +fi + +test "x$cf_with_trace" = xyes && NCURSES_INLINE= + +UNALTERED_SYMS=`echo "$RESULTING_SYMS" | sed -e 's/\\$/\\\\$/g'` +if test "$cf_filter_syms" = yes +then + RESULTING_SYMS=resulting.map +fi + +if test "x$cross_compiling" = xyes ; then + ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)' + CHECK_BUILD="#" +else + ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)' + CHECK_BUILD= +fi + +# This is used for the *-config script and *.pc data files. + +echo "$as_me:28578: 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 +else + +if test "$cross_compiling" != yes ; then + +# GNU binutils' ld does not involve permissions which may stop ldconfig. +cf_pathlist=`ld --verbose 2>/dev/null | grep SEARCH_DIR | sed -e 's,SEARCH_DIR[("=][("=]*,,g' -e 's/"[)];//gp' | sort -u` + +# The -NX options tell newer versions of Linux ldconfig to not attempt to +# update the cache, which makes it run faster. +test -z "$cf_pathlist" && \ + cf_pathlist=`(ldconfig -NX -v) 2>/dev/null | sed -e '/^[ ]/d' -e 's/:$//' | sort -u` + +test -z "$cf_pathlist" && + cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e '/^[ ]/d' -e 's/:$//p' | sort -u` + +# This works with OpenBSD 6.5, which lists only filenames +test -z "$cf_pathlist" && + cf_pathlist=`(ldconfig -v) 2>/dev/null | sed -n -e 's,^Adding \(.*\)/.*$,\1,p' | sort -u` + +if test -z "$cf_pathlist" +then + # dyld default path with MacOS + if test -f /usr/bin/otool && test "x`uname -s`" = xDarwin + then + # do this to bypass check + cf_cv_ld_searchpath='$HOME/lib' + cf_pathlist="/usr/local/lib /lib /usr/lib" + fi +fi + +if test -z "$cf_pathlist" +then + # Solaris is "SunOS" + if test -f /usr/bin/isainfo && test "x`uname -s`" = xSunOS + then + case x`(isainfo -b)` in + (x64) + cf_pathlist="$cf_pathlist /lib/64 /usr/lib/64" + ;; + (x32) + test -d /usr/ccs/lib && cf_pathlist="$cf_pathlist /usr/ccs/lib" + cf_pathlist="$cf_pathlist /lib /usr/lib" + ;; + (*) + { echo "$as_me:28626: WARNING: problem with Solaris architecture" >&5 +echo "$as_me: WARNING: problem with Solaris architecture" >&2;} + ;; + esac + fi +fi + +if test -z "$cf_pathlist" +then + # HP-UX + if test x"`uname -s`" = xHP-UX + then + case x`getconf LONG_BIT` in + (x64) + cf_pathlist="/usr/lib/hpux64" + ;; + (x*) + cf_pathlist="/usr/lib/hpux32" + ;; + esac + fi +fi + +fi + +# If nothing else, assume it is conventional +test -z "$cf_pathlist" && cf_pathlist="/usr/lib /lib" + +# Finally, check that this is only directories +for cf_path in $0 $cf_pathlist +do + if test -d "$cf_path"; then + test -n "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath="${cf_cv_ld_searchpath} " + cf_cv_ld_searchpath="${cf_cv_ld_searchpath}${cf_path}" + fi +done + +# Ensure that it is nonempty +test -z "$cf_cv_ld_searchpath" && cf_cv_ld_searchpath=/usr/lib + +fi +echo "$as_me:28667: 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'` + +cat >>confdefs.h <<\EOF +#define HAVE_CURSES_DATA_BOOLNAMES 1 +EOF + +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 $SUB_MAKEFILES Makefile" +ac_config_commands="$ac_config_commands default" +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 +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +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:28757: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >"$CONFIG_STATUS" <<_ACEOF +#! $SHELL +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +ac_cs_invocation="\$0 \$@" + +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset="unset" +else + as_unset="false" +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +exec 6>&1 + +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>"$CONFIG_STATUS" +fi + +cat >>"$CONFIG_STATUS" <<\EOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." +EOF + +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +EOF +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:28936: 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;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:28955: 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;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +exec 5>>config.log +cat >&5 << _ACEOF + +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by $as_me 2.52.20210509, executed with + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + > "$ac_cs_invocation" +on `(hostname || uname -n) 2>/dev/null | sed 1q` + +_ACEOF +EOF + +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "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/termcap.h" ) CONFIG_FILES="$CONFIG_FILES include/termcap.h" ;; + "include/unctrl.h" ) CONFIG_FILES="$CONFIG_FILES include/unctrl.h" ;; + "$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:29081: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if "$ac_need_defaults"; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +EOF + +cat >>"$CONFIG_STATUS" <\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datarootdir@,$datarootdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@runstatedir@,$runstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@DEFS@,$DEFS,;t t +s,@LIBS@,$LIBS,;t t +s,@top_builddir@,$top_builddir,;t t +s,@GREP@,$GREP,;t t +s,@EGREP@,$EGREP,;t t +s,@NCURSES_MAJOR@,$NCURSES_MAJOR,;t t +s,@NCURSES_MINOR@,$NCURSES_MINOR,;t t +s,@NCURSES_PATCH@,$NCURSES_PATCH,;t t +s,@cf_cv_rel_version@,$cf_cv_rel_version,;t t +s,@cf_cv_abi_version@,$cf_cv_abi_version,;t t +s,@cf_cv_builtin_bool@,$cf_cv_builtin_bool,;t t +s,@cf_cv_header_stdbool_h@,$cf_cv_header_stdbool_h,;t t +s,@cf_cv_type_of_bool@,$cf_cv_type_of_bool,;t t +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,@PACKAGE@,$PACKAGE,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@target@,$target,;t t +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,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t +s,@CPP@,$CPP,;t t +s,@LDCONFIG@,$LDCONFIG,;t t +s,@CXX@,$CXX,;t t +s,@CXXFLAGS@,$CXXFLAGS,;t t +s,@ac_ct_CXX@,$ac_ct_CXX,;t t +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,@LINT@,$LINT,;t t +s,@LINT_OPTS@,$LINT_OPTS,;t t +s,@LN_S@,$LN_S,;t t +s,@cf_config_suffix@,$cf_config_suffix,;t t +s,@PKG_CONFIG@,$PKG_CONFIG,;t t +s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t +s,@PKG_CONFIG_LIBDIR@,$PKG_CONFIG_LIBDIR,;t t +s,@MAKE_PC_FILES@,$MAKE_PC_FILES,;t t +s,@PC_MODULE_SUFFIX@,$PC_MODULE_SUFFIX,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@MAKE_NO_PHONY@,$MAKE_NO_PHONY,;t t +s,@MAKE_PHONY@,$MAKE_PHONY,;t t +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 +s,@ac_ct_LD@,$ac_ct_LD,;t t +s,@AR@,$AR,;t t +s,@ac_ct_AR@,$ac_ct_AR,;t t +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,@BUILD_CC@,$BUILD_CC,;t t +s,@BUILD_CPP@,$BUILD_CPP,;t t +s,@BUILD_CFLAGS@,$BUILD_CFLAGS,;t t +s,@BUILD_CPPFLAGS@,$BUILD_CPPFLAGS,;t t +s,@BUILD_LDFLAGS@,$BUILD_LDFLAGS,;t t +s,@BUILD_LIBS@,$BUILD_LIBS,;t t +s,@BUILD_EXEEXT@,$BUILD_EXEEXT,;t t +s,@BUILD_OBJEXT@,$BUILD_OBJEXT,;t t +s,@cf_list_models@,$cf_list_models,;t t +s,@ABI_VERSION@,$ABI_VERSION,;t t +s,@LIBTOOL_VERSION@,$LIBTOOL_VERSION,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@ac_ct_LIBTOOL@,$ac_ct_LIBTOOL,;t t +s,@LT_UNDEF@,$LT_UNDEF,;t t +s,@LIBTOOL_CXX@,$LIBTOOL_CXX,;t t +s,@LIBTOOL_OPTS@,$LIBTOOL_OPTS,;t t +s,@LIB_CREATE@,$LIB_CREATE,;t t +s,@LIB_OBJECT@,$LIB_OBJECT,;t t +s,@LIB_SUFFIX@,$LIB_SUFFIX,;t t +s,@LIB_PREP@,$LIB_PREP,;t t +s,@LIB_CLEAN@,$LIB_CLEAN,;t t +s,@LIB_COMPILE@,$LIB_COMPILE,;t t +s,@LIB_LINK@,$LIB_LINK,;t t +s,@LIB_INSTALL@,$LIB_INSTALL,;t t +s,@LIB_UNINSTALL@,$LIB_UNINSTALL,;t t +s,@DFT_LWR_MODEL@,$DFT_LWR_MODEL,;t t +s,@DFT_UPR_MODEL@,$DFT_UPR_MODEL,;t t +s,@TICS_NAME@,$TICS_NAME,;t t +s,@TINFO_NAME@,$TINFO_NAME,;t t +s,@LIB_NAME@,$LIB_NAME,;t t +s,@LIB_PREFIX@,$LIB_PREFIX,;t t +s,@CC_G_OPT@,$CC_G_OPT,;t t +s,@CXX_G_OPT@,$CXX_G_OPT,;t t +s,@LD_MODEL@,$LD_MODEL,;t t +s,@shlibdir@,$shlibdir,;t t +s,@MAKE_DLLS@,$MAKE_DLLS,;t t +s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t +s,@LD_RPATH_OPT@,$LD_RPATH_OPT,;t t +s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t +s,@MK_SHARED_LIB@,$MK_SHARED_LIB,;t t +s,@RM_SHARED_OPTS@,$RM_SHARED_OPTS,;t t +s,@LINK_PROGS@,$LINK_PROGS,;t t +s,@LINK_TESTS@,$LINK_TESTS,;t t +s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@LOCAL_LDFLAGS2@,$LOCAL_LDFLAGS2,;t t +s,@INSTALL_LIB@,$INSTALL_LIB,;t t +s,@RPATH_LIST@,$RPATH_LIST,;t t +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,@cf_ldd_prog@,$cf_ldd_prog,;t t +s,@EXTRA_PKG_LDFLAGS@,$EXTRA_PKG_LDFLAGS,;t t +s,@EXTRA_SUFFIX@,$EXTRA_SUFFIX,;t t +s,@TERMINFO_SRC@,$TERMINFO_SRC,;t t +s,@NCURSES_USE_DATABASE@,$NCURSES_USE_DATABASE,;t t +s,@TIC@,$TIC,;t t +s,@ac_ct_TIC@,$ac_ct_TIC,;t t +s,@INFOCMP@,$INFOCMP,;t t +s,@ac_ct_INFOCMP@,$ac_ct_INFOCMP,;t t +s,@FALLBACK_LIST@,$FALLBACK_LIST,;t t +s,@USE_FALLBACKS@,$USE_FALLBACKS,;t t +s,@WHICH_XTERM@,$WHICH_XTERM,;t t +s,@XTERM_KBS@,$XTERM_KBS,;t t +s,@TERMINFO_DIRS@,$TERMINFO_DIRS,;t t +s,@TERMINFO@,$TERMINFO,;t t +s,@MAKE_TERMINFO@,$MAKE_TERMINFO,;t t +s,@USE_BIG_STRINGS@,$USE_BIG_STRINGS,;t t +s,@TERMPATH@,$TERMPATH,;t t +s,@NCURSES_USE_TERMCAP@,$NCURSES_USE_TERMCAP,;t t +s,@BROKEN_LINKER@,$BROKEN_LINKER,;t t +s,@NCURSES_WCWIDTH_GRAPHICS@,$NCURSES_WCWIDTH_GRAPHICS,;t t +s,@NCURSES_CH_T@,$NCURSES_CH_T,;t t +s,@NCURSES_LIBUTF8@,$NCURSES_LIBUTF8,;t t +s,@NEED_WCHAR_H@,$NEED_WCHAR_H,;t t +s,@NCURSES_MBSTATE_T@,$NCURSES_MBSTATE_T,;t t +s,@NCURSES_WCHAR_T@,$NCURSES_WCHAR_T,;t t +s,@NCURSES_WINT_T@,$NCURSES_WINT_T,;t t +s,@NCURSES_OK_WCHAR_T@,$NCURSES_OK_WCHAR_T,;t t +s,@NCURSES_OK_WINT_T@,$NCURSES_OK_WINT_T,;t t +s,@cf_cv_enable_lp64@,$cf_cv_enable_lp64,;t t +s,@NCURSES_TPARM_VARARGS@,$NCURSES_TPARM_VARARGS,;t t +s,@NCURSES_WATTR_MACROS@,$NCURSES_WATTR_MACROS,;t t +s,@RGB_PATH@,$RGB_PATH,;t t +s,@no_x11_rgb@,$no_x11_rgb,;t t +s,@NCURSES_BOOL@,$NCURSES_BOOL,;t t +s,@TERMINFO_CAPS@,$TERMINFO_CAPS,;t t +s,@NCURSES_OSPEED@,$NCURSES_OSPEED,;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,@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_MOUSE_VERSION@,$NCURSES_MOUSE_VERSION,;t t +s,@NCURSES_XNAMES@,$NCURSES_XNAMES,;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 +s,@NCURSES_SIZE_T@,$NCURSES_SIZE_T,;t t +s,@NCURSES_OPAQUE@,$NCURSES_OPAQUE,;t t +s,@NCURSES_OPAQUE_FORM@,$NCURSES_OPAQUE_FORM,;t t +s,@NCURSES_OPAQUE_MENU@,$NCURSES_OPAQUE_MENU,;t t +s,@NCURSES_OPAQUE_PANEL@,$NCURSES_OPAQUE_PANEL,;t t +s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t +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 +s,@SHOW_CC@,$SHOW_CC,;t t +s,@ECHO_CC@,$ECHO_CC,;t t +s,@ECHO_LINK@,$ECHO_LINK,;t t +s,@INSTALL_OPT_S@,$INSTALL_OPT_S,;t t +s,@INSTALL_OPT_O@,$INSTALL_OPT_O,;t t +s,@INSTALL_OPT_P@,$INSTALL_OPT_P,;t t +s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t +s,@HAVE_STDNORETURN_H@,$HAVE_STDNORETURN_H,;t t +s,@STDC_NORETURN@,$STDC_NORETURN,;t t +s,@ADAFLAGS@,$ADAFLAGS,;t t +s,@EXTRA_CXXFLAGS@,$EXTRA_CXXFLAGS,;t t +s,@ADA_TRACE@,$ADA_TRACE,;t t +s,@MATH_LIB@,$MATH_LIB,;t t +s,@NCURSES_INLINE@,$NCURSES_INLINE,;t t +s,@cf_cv_typeof_chtype@,$cf_cv_typeof_chtype,;t t +s,@cf_cv_1UL@,$cf_cv_1UL,;t t +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,@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 +s,@USE_GNAT_SIGINT@,$USE_GNAT_SIGINT,;t t +s,@USE_OLD_MAKERULES@,$USE_OLD_MAKERULES,;t t +s,@USE_GNAT_PROJECTS@,$USE_GNAT_PROJECTS,;t t +s,@USE_GNAT_LIBRARIES@,$USE_GNAT_LIBRARIES,;t t +s,@USE_GNAT_MAKE_GPR@,$USE_GNAT_MAKE_GPR,;t t +s,@USE_GNAT_GPRBUILD@,$USE_GNAT_GPRBUILD,;t t +s,@cf_ada_compiler@,$cf_ada_compiler,;t t +s,@cf_ada_package@,$cf_ada_package,;t t +s,@ADA_INCLUDE@,$ADA_INCLUDE,;t t +s,@ADA_OBJECTS@,$ADA_OBJECTS,;t t +s,@ADA_SHAREDLIB@,$ADA_SHAREDLIB,;t t +s,@MAKE_ADA_SHAREDLIB@,$MAKE_ADA_SHAREDLIB,;t t +s,@ADA_LIBNAME@,$ADA_LIBNAME,;t t +s,@ACPPFLAGS@,$ACPPFLAGS,;t t +s,@DFT_ARG_SUFFIX@,$DFT_ARG_SUFFIX,;t t +s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t +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,@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 +s,@TICS_LDFLAGS@,$TICS_LDFLAGS,;t t +s,@TICS_LIBS@,$TICS_LIBS,;t t +s,@TINFO_ARG_SUFFIX@,$TINFO_ARG_SUFFIX,;t t +s,@TINFO_DEP_SUFFIX@,$TINFO_DEP_SUFFIX,;t t +s,@TINFO_LIB_SUFFIX@,$TINFO_LIB_SUFFIX,;t t +s,@TINFO_LDFLAGS@,$TINFO_LDFLAGS,;t t +s,@TINFO_LIBS@,$TINFO_LIBS,;t t +s,@TINFO_LDFLAGS2@,$TINFO_LDFLAGS2,;t t +s,@LDFLAGS_STATIC@,$LDFLAGS_STATIC,;t t +s,@LDFLAGS_SHARED@,$LDFLAGS_SHARED,;t t +s,@includesubdir@,$includesubdir,;t t +s,@WITH_OVERWRITE@,$WITH_OVERWRITE,;t t +s,@TICS_LIST@,$TICS_LIST,;t t +s,@TINFO_LIST@,$TINFO_LIST,;t t +s,@SHLIB_LIST@,$SHLIB_LIST,;t t +s,@NCURSES_TREE@,$NCURSES_TREE,;t t +s,@FORM_NAME@,$FORM_NAME,;t t +s,@MENU_NAME@,$MENU_NAME,;t t +s,@PANEL_NAME@,$PANEL_NAME,;t t +s,@CXX_NAME@,$CXX_NAME,;t t +s,@TEST_ARGS@,$TEST_ARGS,;t t +s,@TEST_DEPS@,$TEST_DEPS,;t t +s,@TEST_ARG2@,$TEST_ARG2,;t t +s,@TEST_DEP2@,$TEST_DEP2,;t t +s,@PC_MODULES_TO_MAKE@,$PC_MODULES_TO_MAKE,;t t +s,@ADA_SUBDIRS@,$ADA_SUBDIRS,;t t +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_TERMIO_H@,$HAVE_TERMIO_H,;t t +s,@HAVE_TERMIOS_H@,$HAVE_TERMIOS_H,;t t +s,@cross_compiling@,$cross_compiling,;t t +s,@MAKE_TESTS@,$MAKE_TESTS,;t t +s,@ADAHTML_DIR@,$ADAHTML_DIR,;t t +s,@LIBTOOL_OPTS_CXX@,$LIBTOOL_OPTS_CXX,;t t +s,@PKG_CFLAGS@,$PKG_CFLAGS,;t t +s,@MISC_INSTALL_DATA@,$MISC_INSTALL_DATA,;t t +s,@MISC_UNINSTALL_DATA@,$MISC_UNINSTALL_DATA,;t t +s,@MAKE_DATABASE@,$MAKE_DATABASE,;t t +s,@UNALTERED_SYMS@,$UNALTERED_SYMS,;t t +s,@ADAGEN_LDFLAGS@,$ADAGEN_LDFLAGS,;t t +s,@CHECK_BUILD@,$CHECK_BUILD,;t t +s,@PRIVATE_LIBS@,$PRIVATE_LIBS,;t t +s,@LD_SEARCHPATH@,$LD_SEARCHPATH,;t t +CEOF + +EOF + + cat >>"$CONFIG_STATUS" <<\EOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while "$ac_more_lines"; do + if test "$ac_beg" -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # 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 + # 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 + if test ! -s $tmp/subs.edit; then + grep "^s,@[^@,][^@,]*@,.*,;t t$" $tmp/subs.next >$tmp/subs.edit + if test ! -s $tmp/subs.edit; then + if test "$ac_beg" -gt 1; then + ac_end=`expr "$ac_end" - 1` + continue + fi + fi + fi + fi + + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr "$ac_sed_frag" + 1` + ac_beg=$ac_end + ac_end=`expr "$ac_end" + "$ac_max_sed_lines"` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +EOF +cat >>"$CONFIG_STATUS" <<\EOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$srcdir" in + .) ac_srcdir=. + if test -z "$ac_dots"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo "$ac_dots" | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) + ac_srcdir="$srcdir$ac_dir_suffix"; + ac_top_srcdir="$srcdir" ;; + *) # Relative path. + ac_srcdir="$ac_dots$srcdir$ac_dir_suffix" + ac_top_srcdir="$ac_dots$srcdir" ;; + esac + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_dots$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:29593: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + configure_input="Generated automatically from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:29611: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:29624: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +EOF +cat >>"$CONFIG_STATUS" <<\EOF + ac_warn_datarootdir=no + if test x"$ac_file" != x-; then + for ac_item in $ac_file_inputs + do + ac_seen=`grep '@\(datadir\|mandir\|infodir\)@' "$ac_item"` + if test -n "$ac_seen"; then + ac_used=`grep '@datarootdir@' "$ac_item"` + if test -z "$ac_used"; then + { echo "$as_me:29640: 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;} + ac_warn_datarootdir=yes + fi + fi + ac_seen=`grep '${datarootdir}' "$ac_item"` + if test -n "$ac_seen"; then + { echo "$as_me:29649: 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;} + ac_warn_datarootdir=yes + fi + done + fi + +if test "x$ac_warn_datarootdir" = xyes; then + ac_sed_cmds="$ac_sed_cmds | sed -e 's,@datarootdir@,\${prefix}/share,g' -e 's,\${datarootdir},\${prefix}/share,g'" +fi + +EOF +cat >>"$CONFIG_STATUS" <>"$CONFIG_STATUS" <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + cp "$tmp/out" "$ac_file" + + for ac_name in prefix exec_prefix datarootdir + do + ac_seen=`${FGREP-fgrep} -n '${'$ac_name'[:=].*}' "$ac_file"` + if test -n "$ac_seen"; then + ac_init=`${EGREP-egrep} '[ ]*'$ac_name'[ ]*=' "$ac_file"` + if test -z "$ac_init"; then + ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'` + { echo "$as_me:29686: 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;} + fi + fi + done + ${EGREP-egrep} -n '@[a-z_][a-z_0-9]+@' "$ac_file" >$tmp/out + ${EGREP-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:29697: WARNING: Some variables may not be substituted: +$ac_seen" >&5 +echo "$as_me: WARNING: Some variables may not be substituted: +$ac_seen" >&2;} + fi + else + cat $tmp/out + fi + rm -f $tmp/out + +done +EOF +cat >>"$CONFIG_STATUS" <<\EOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_iB='\([ ]\),\1#\2define\3' +ac_iC=' ' +ac_iD='\4,;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:29746: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:29757: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:29770: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +EOF + +# Transform confdefs.h into a list of #define's. We won't use it as a sed +# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to +# be either 'cat' or 'sort'. +cat confdefs.h | uniq >conftest.vals + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +echo ' rm -f conftest.frag' >> "$CONFIG_STATUS" +while grep . conftest.vals >/dev/null +do + # Write chunks of a limited-size here document to conftest.frag. + echo ' cat >> conftest.frag <> "$CONFIG_STATUS" + sed "${ac_max_here_lines}q" conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> "$CONFIG_STATUS" + echo 'CEOF' >> "$CONFIG_STATUS" + sed "1,${ac_max_here_lines}d" conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +# Run sed to substitute the contents of conftest.frag into $tmp/in at the +# marker @DEFS@. +echo ' cat >> conftest.edit < $tmp/out +rm -f $tmp/in +mv $tmp/out $tmp/in +rm -f conftest.edit conftest.frag +' >> "$CONFIG_STATUS" + +cat >>"$CONFIG_STATUS" <<\EOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated automatically by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + 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:29828: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + fi + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +EOF +cat >>"$CONFIG_STATUS" <<\EOF +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + case "$ac_dest" in + default ) +if test "x$cf_with_tests" != xno ; then + +for cf_dir in test +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + elif test -f "$srcdir/$cf_dir/programs" ; then + $AWK -f "$srcdir/test/mk-test.awk" INSTALL=no ECHO_LINK="$ECHO_LD" "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile + fi +done + +fi + +cf_prefix=$LIB_PREFIX + +case "$cf_cv_shlib_version" in +(cygdll|msysdll|mingw|msvcdll) + TINFO_NAME=$TINFO_ARG_SUFFIX + TINFO_SUFFIX=.dll + ;; +esac + +if test -n "$TINFO_SUFFIX" ; then + case "$TINFO_SUFFIX" in + (tw*) + TINFO_NAME="${TINFO_NAME}tw${EXTRA_SUFFIX}" + TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^tw'$EXTRA_SUFFIX'//'` + ;; + (t*) + TINFO_NAME="${TINFO_NAME}t${EXTRA_SUFFIX}" + TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^t'$EXTRA_SUFFIX'//'` + ;; + (w*) + TINFO_NAME="${TINFO_NAME}w${EXTRA_SUFFIX}" + TINFO_SUFFIX=`echo "$TINFO_SUFFIX" | sed 's/^w'$EXTRA_SUFFIX'//'` + ;; + esac +fi + +for cf_dir in $SRC_SUBDIRS +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + elif test -f "$srcdir/$cf_dir/modules" ; then + + SHARED_LIB= + Libs_To_Make= + cf_awk_program= + if test -n "${cf_cv_abi_version}" && test "x${cf_cv_abi_version}" != "x5" + then + cf_awk_program="$cf_awk_program\ +/deprecated in ABI${cf_cv_abi_version}/ { next; }\ +{ sub(\"NCURSES([WT]+)?\", \"&${cf_cv_abi_version}\"); }\ +" + fi + + if test "x$WILDCARD_SYMS" = xno + then + cf_awk_program="$cf_awk_program\ +/[ ]_\\*;/ { skip=1; next; }\ +" + fi + + if test "x$cf_awk_program" != "x" + then + cat >>$cf_dir/Makefile <\$@ + +distclean:: + rm -f resulting.map +CF_EOF + fi + + for cf_item in $cf_LIST_MODELS + do + + case X$cf_item in + (Xlibtool) + cf_suffix='.la' + cf_depsuf=$cf_suffix + ;; + (Xdebug) + case "$cf_cv_system_name" in + (*-msvc*) + cf_suffix='_g.lib' + ;; + (*) + cf_suffix='_g.a' + ;; + esac + cf_depsuf=$cf_suffix + ;; + (Xprofile) + case "$cf_cv_system_name" in + (*-msvc*) + cf_suffix='_p.lib' + ;; + (*) + cf_suffix='_p.a' + ;; + esac + cf_depsuf=$cf_suffix + ;; + (Xshared) + case "$cf_cv_system_name" in + (aix[5-7]*) + cf_suffix='.so' + cf_depsuf=$cf_suffix + ;; + (*-msvc*) + cf_suffix='.dll' + cf_depsuf='.dll.lib' + ;; + (cygwin*|msys*|mingw*) + cf_suffix='.dll' + cf_depsuf='.dll.a' + ;; + (darwin*) + cf_suffix='.dylib' + cf_depsuf=$cf_suffix + ;; + (hpux*) + case "$target" in + (ia64*) + cf_suffix='.so' + cf_depsuf=$cf_suffix + ;; + (*) + cf_suffix='.sl' + cf_depsuf=$cf_suffix + ;; + esac + ;; + (*) + cf_suffix='.so' + cf_depsuf=$cf_suffix + ;; + esac + ;; + (*) + case "$target" in + (*-msvc*) + cf_suffix='.lib' + ;; + (*) + cf_suffix='.a' + ;; + esac + cf_depsuf=$cf_suffix + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + cf_suffix="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_suffix}" + cf_depsuf="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_depsuf}" + fi + + if test "$cf_dir" = "c++" + then + +cf_map_lib_basename=`echo "cxx" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +eval cf_libname="\$${cf_map_lib_basename}_NAME" + + else + +cf_map_lib_basename=`echo "$cf_dir" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +eval cf_libname="\$${cf_map_lib_basename}_NAME" + + fi + test -z "$cf_libname" && cf_libname="$cf_dir" + if test "$cf_item" = shared ; then + if test -n "${LIB_SUFFIX}" + then + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + else + cf_shared_suffix="$cf_suffix" + fi + if test "$cf_cv_do_symlinks" = yes ; then + cf_version_name= + + case "$cf_cv_shlib_version" in + (rel) + cf_version_name=REL_VERSION + ;; + (abi) + cf_version_name=ABI_VERSION + ;; + esac + + if test -n "$cf_version_name" + then + case "$cf_cv_system_name" in + (darwin*) + # "w", etc? + cf_suffix="${USE_LIB_SUFFIX}"'.${'$cf_version_name'}'"$cf_shared_suffix" + ;; + (*) + cf_suffix="$cf_suffix"'.${'$cf_version_name'}' + ;; + esac + fi + if test -n "${USE_LIB_SUFFIX}" + then + cf_shared_suffix=`echo "$cf_suffix" | sed 's/^'"${USE_LIB_SUFFIX}"'//'` + else + cf_shared_suffix="$cf_suffix" + fi + fi + # cygwin needs import library, and has unique naming convention + # use autodetected ${cf_prefix} for import lib and static lib, but + # use 'cyg' prefix for shared lib. + case "$cf_cv_shlib_version" in + (cygdll) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/cyg${cf_libname}${cf_cygsuf}" + ;; + (msysdll) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/msys-${cf_libname}${cf_cygsuf}" + ;; + (mingw) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/lib${cf_libname}${cf_cygsuf}" + ;; + (msvcdll) + cf_cygsuf=`echo "$cf_suffix" | sed -e 's/\.dll/\${ABI_VERSION}.dll/'` + cf_add_lib="../lib/${cf_libname}${cf_cygsuf}" + ;; + (*) + cf_add_lib= + ;; + esac + if test -n "$cf_add_lib" + then + Libs_To_Make="$Libs_To_Make $cf_add_lib" + continue + fi + fi + cf_add_lib="../lib/${cf_prefix}${cf_libname}${cf_suffix}" + Libs_To_Make="$Libs_To_Make $cf_add_lib" + done + + if test "$cf_dir" = ncurses ; then + cf_subsets="$LIB_SUBSETS" + cf_r_parts="$cf_subsets" + cf_liblist="$Libs_To_Make" + + while test -n "$cf_r_parts" + do + cf_l_parts=`echo "$cf_r_parts" |sed -e 's/ .*$//'` + cf_r_parts=`echo "$cf_r_parts" |sed -e 's/^[^ ]* //'` + if test "$cf_l_parts" != "$cf_r_parts" ; then + 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` + ;; + (*ticlib*) + cf_add_lib=`echo "$cf_liblist" |sed -e s%${LIB_NAME}${USE_LIB_SUFFIX}%${TICS_LIB_SUFFIX}%g` + ;; + (*) + break + ;; + esac + if test -n "$cf_add_lib"; then + Libs_To_Make="$cf_add_lib $Libs_To_Make" + fi + else + break + fi + done + else + cf_subsets=`echo "$LIB_SUBSETS" | sed -e 's/^termlib.* //'` + fi + + if test "$cf_dir" = c++; then + if test "x$with_shared_cxx" != xyes && test -n "$cf_shared_suffix"; then + cf_list= + for cf_item in $Libs_To_Make + do + case "$cf_item" in + (*.a) + ;; + (*) + cf_item=`echo "$cf_item" | sed -e "s,"$cf_shared_suffix",.a,"` + ;; + esac + for cf_test in $cf_list + do + if test "$cf_test" = "$cf_item" + then + cf_LIST_MODELS=`echo "$cf_LIST_MODELS" | sed -e 's/normal//'` + cf_item= + break + fi + done + test -n "$cf_item" && cf_list="$cf_list $cf_item" + done + Libs_To_Make="$cf_list" + fi + fi + + sed -e "s%@Libs_To_Make@%$Libs_To_Make%" \ + -e "s%@SHARED_LIB@%$SHARED_LIB%" \ + "$cf_dir/Makefile" >$cf_dir/Makefile.out + mv "$cf_dir/Makefile.out" "$cf_dir/Makefile" + + $AWK -f "$srcdir/mk-0th.awk" \ + libname="${cf_dir}${LIB_SUFFIX}" subsets="$LIB_SUBSETS" ticlib="$TICS_LIB_SUFFIX" termlib="$TINFO_LIB_SUFFIX" \ + "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile + + for cf_subset in $cf_subsets + do + cf_subdirs= + for cf_item in $cf_LIST_MODELS + do + + echo "Appending rules for ${cf_item} model (${cf_dir}: ${cf_subset})" + +cf_ITEM=`echo "$cf_item" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + CXX_MODEL=$cf_ITEM + if test "$CXX_MODEL" = SHARED; then + case "$cf_cv_shlib_version" in + (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}:30215: testing overriding CXX_MODEL to SHARED ..." 1>&5 + + with_shared_cxx=yes + ;; + (*) + test "x$with_shared_cxx" = xno && CXX_MODEL=NORMAL + ;; + esac + fi + + case X$cf_item in + (Xlibtool) + cf_suffix='.la' + cf_depsuf=$cf_suffix + ;; + (Xdebug) + case "$cf_cv_system_name" in + (*-msvc*) + cf_suffix='_g.lib' + ;; + (*) + cf_suffix='_g.a' + ;; + esac + cf_depsuf=$cf_suffix + ;; + (Xprofile) + case "$cf_cv_system_name" in + (*-msvc*) + cf_suffix='_p.lib' + ;; + (*) + cf_suffix='_p.a' + ;; + esac + cf_depsuf=$cf_suffix + ;; + (Xshared) + case "$cf_cv_system_name" in + (aix[5-7]*) + cf_suffix='.so' + cf_depsuf=$cf_suffix + ;; + (*-msvc*) + cf_suffix='.dll' + cf_depsuf='.dll.lib' + ;; + (cygwin*|msys*|mingw*) + cf_suffix='.dll' + cf_depsuf='.dll.a' + ;; + (darwin*) + cf_suffix='.dylib' + cf_depsuf=$cf_suffix + ;; + (hpux*) + case "$target" in + (ia64*) + cf_suffix='.so' + cf_depsuf=$cf_suffix + ;; + (*) + cf_suffix='.sl' + cf_depsuf=$cf_suffix + ;; + esac + ;; + (*) + cf_suffix='.so' + cf_depsuf=$cf_suffix + ;; + esac + ;; + (*) + case "$target" in + (*-msvc*) + cf_suffix='.lib' + ;; + (*) + cf_suffix='.a' + ;; + esac + cf_depsuf=$cf_suffix + ;; + esac + if test -n "${LIB_SUFFIX}${EXTRA_SUFFIX}" + then + cf_suffix="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_suffix}" + cf_depsuf="${LIB_SUFFIX}${EXTRA_SUFFIX}${cf_depsuf}" + fi + + case $cf_item in + (libtool) cf_subdir='obj_lo' ;; + (normal) cf_subdir='objects' ;; + (debug) cf_subdir='obj_g' ;; + (profile) cf_subdir='obj_p' ;; + (shared) + case "$cf_cv_system_name" in + (cygwin|msys) + cf_subdir='objects' ;; + (*) + cf_subdir='obj_s' ;; + esac + esac + + # Test for case where we build libtinfo with a different name. + cf_libname=$cf_dir + if test "$cf_dir" = ncurses ; then + case "$cf_subset" in + (*base*) + cf_libname=${cf_libname}$USE_LIB_SUFFIX + ;; + (*termlib*) + cf_libname=$TINFO_LIB_SUFFIX + ;; + (ticlib*) + cf_libname=$TICS_LIB_SUFFIX + ;; + esac + elif test "$cf_dir" = c++ ; then + +cf_map_lib_basename=`echo "cxx" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +eval cf_libname="\$${cf_map_lib_basename}_NAME" + + cf_libname=${cf_libname}$USE_LIB_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 + 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}%%"` + fi + + # These dependencies really are for development, not + # builds, but they are useful in porting, too. + cf_depend="../include/ncurses_cfg.h" + if test "$srcdir" = "."; then + cf_reldir="." + else + cf_reldir="\${srcdir}" + fi + + if test -f "$srcdir/$cf_dir/$cf_dir.priv.h" ; then + cf_depend="$cf_depend $cf_reldir/$cf_dir.priv.h" + elif test -f "$srcdir/$cf_dir/curses.priv.h" ; then + cf_depend="$cf_depend $cf_reldir/curses.priv.h" + fi + + 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 + (tw*) + cf_libname=`echo "$cf_libname" | sed 's/tw'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^tw'$EXTRA_SUFFIX'//'` + cf_dir_suffix=tw$EXTRA_SUFFIX + ;; + (t*) + cf_libname=`echo "$cf_libname" | sed 's/t'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^t'$EXTRA_SUFFIX'//'` + cf_dir_suffix=t$EXTRA_SUFFIX + ;; + (w*) + cf_libname=`echo "$cf_libname" | sed 's/w'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^w'$EXTRA_SUFFIX'//'` + cf_dir_suffix=w$EXTRA_SUFFIX + ;; + (*) + cf_libname=`echo "$cf_libname" | sed 's/'$EXTRA_SUFFIX'$//'` + cf_suffix=`echo "$cf_suffix" | sed 's/^'$EXTRA_SUFFIX'//'` + cf_dir_suffix=$EXTRA_SUFFIX + ;; + esac + fi + fi + + $AWK -f "$srcdir/mk-1st.awk" \ + name=${cf_libname}${cf_dir_suffix} \ + traces=$LIB_TRACING \ + MODEL=$cf_ITEM \ + CXX_MODEL=$CXX_MODEL \ + LIB_SUFFIX=$LIB_SUFFIX \ + USE_LIB_SUFFIX=$USE_LIB_SUFFIX \ + make_phony="${cf_cv_make_PHONY:-no}" \ + model=$cf_subdir \ + prefix=$cf_prefix \ + suffix=$cf_suffix \ + subset=$cf_subset \ + driver=$cf_cv_term_driver \ + SymLink="$LN_S" \ + TermlibRoot=$TINFO_NAME \ + TermlibSuffix=$TINFO_SUFFIX \ + ShlibVer=$cf_cv_shlib_version \ + ShlibVerInfix=$cf_cv_shlib_version_infix \ + ReLink=${cf_cv_do_relink:-no} \ + ReRanlib=${cf_cv_do_reranlib:-yes} \ + DoLinks=$cf_cv_do_symlinks \ + rmSoLocs=$cf_cv_rm_so_locs \ + ldconfig="$LDCONFIG" \ + overwrite=$WITH_OVERWRITE \ + depend="$cf_depend" \ + host="$host" \ + libtool_version="$LIBTOOL_VERSION" \ + "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile + + cf_suffix="$old_cf_suffix" + + for cf_subdir2 in $cf_subdirs lib + do + test "$cf_subdir" = "$cf_subdir2" && break + done + test "${cf_subset}.${cf_subdir2}" != "${cf_subset}.${cf_subdir}" && \ + $AWK -f "$srcdir/mk-2nd.awk" \ + name=$cf_dir \ + traces=$LIB_TRACING \ + MODEL=$cf_ITEM \ + model=$cf_subdir \ + subset=$cf_subset \ + srcdir=$srcdir \ + echo=$WITH_ECHO \ + crenames=$cf_cv_prog_CC_c_o \ + cxxrenames=$cf_cv_prog_CXX_c_o \ + "$srcdir/$cf_dir/modules" >>$cf_dir/Makefile + cf_subdirs="$cf_subdirs $cf_subdir" + done + done + fi + + echo ' ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} $@ )' >>Makefile +done + +echo >> Makefile +echo '# generated by CF_LIB_RULES' >> Makefile + +if test "x$cf_cv_make_PHONY" = xyes ; then + cat >> Makefile <<-CF_EOF + + .PHONY : libs + .PHONY : lintlib + .PHONY : install.includes + .PHONY : uninstall.includes + .PHONY : install.libs + .PHONY : uninstall.libs +CF_EOF +fi + +for cf_dir in $SRC_SUBDIRS +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + fi + + if test -f "$cf_dir/Makefile" ; then + case "$cf_dir" in + (Ada95) + echo 'libs \' >> Makefile + echo 'install.libs \' >> Makefile + echo 'uninstall.libs ::' >> Makefile + echo ' ( cd '$cf_dir' && ${MAKE} ${TOP_MFLAGS} $@ )' >> Makefile + ;; + esac + fi + + if test -f "$srcdir/$cf_dir/modules" ; then + + if test "x$cf_cv_make_PHONY" = xyes ; then + cat >> Makefile <<-CF_EOF + + .PHONY : install.$cf_dir + .PHONY : uninstall.$cf_dir +CF_EOF + fi + + echo >> Makefile + if test -f "$srcdir/$cf_dir/headers" ; then +cat >> Makefile <> Makefile <> Makefile <> Makefile <<-CF_EOF + + .PHONY : install.data + .PHONY : uninstall.data +CF_EOF +fi + +if test "x$cf_with_db_install" = xyes; then +cat >> Makefile <> Makefile <> Makefile <<-CF_EOF + + .PHONY : install.man + .PHONY : uninstall.man +CF_EOF +fi + +cat >> Makefile <> Makefile <> Makefile <headers.sh <>headers.sh </<\$END\/\$NAME>/" >> \$TMPSED + done + ;; +(*) + echo "" >> \$TMPSED + ;; +esac +CF_EOF + +else + cat >>headers.sh <//" >> \$TMPSED + NAME=ncurses.h + fi + echo "s/<\$NAME>/<\$END\/\$NAME>/" >> \$TMPSED + done + ;; +(*) + echo "s///" >> \$TMPSED + ;; +esac +CF_EOF +fi +cat >>headers.sh < \$TMPSRC +NAME=\`basename \$SRC\` +CF_EOF +if test "$WITH_CURSES_H" != yes; then + cat >>headers.sh <>headers.sh <>$cf_dir/Makefile + fi + + if test -f "$srcdir/$cf_dir/modules" ; then + if test "$cf_dir" != "c++" ; then + if test "x$cf_cv_make_PHONY" = xyes ; then + cat >> $cf_dir/Makefile <<-CF_EOF + + .PHONY : depend +CF_EOF + fi + + cat >>$cf_dir/Makefile <<"CF_EOF" +depend : ${AUTO_SRC} + makedepend -- ${CPPFLAGS} -- ${C_SRC} + +# DO NOT DELETE THIS LINE -- make depend depends on it. +CF_EOF + fi + fi +done + +if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then +if test -z "$USE_OLD_MAKERULES" ; then + $AWK -f "$srcdir/Ada95/mk-1st.awk" <"$srcdir/Ada95/src/modules" >>Ada95/src/Makefile +fi +fi + ;; + esac +done +EOF + +cat >>"$CONFIG_STATUS" <<\EOF + +{ (exit 0); exit 0; } +EOF +chmod +x "$CONFIG_STATUS" +ac_clean_files=$ac_clean_files_save + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL "$CONFIG_STATUS" || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + "$ac_cs_success" || { (exit 1); exit 1; } +fi +${MAKE:-make} preinstall diff --git a/deps/ncurses-6.3/configure.in b/deps/ncurses-6.3/configure.in new file mode 100644 index 0000000..798b95a --- /dev/null +++ b/deps/ncurses-6.3/configure.in @@ -0,0 +1,2598 @@ +dnl*************************************************************************** +dnl Copyright 2018-2020,2021 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 * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl Author: Thomas E. Dickey 1995-on +dnl +dnl $Id: configure.in,v 1.736 2021/07/18 22:17:57 tom Exp $ +dnl Process this file with autoconf to produce a configure script. +dnl +dnl For additional information, see +dnl https://invisible-island.net/autoconf/ +dnl https://invisible-island.net/autoconf/my-autoconf.html +dnl +dnl --------------------------------------------------------------------------- +AC_PREREQ(2.52.20210101) +AC_REVISION($Revision: 1.736 $) +AC_INIT(ncurses/base/lib_initscr.c) +AC_CONFIG_HEADER(include/ncurses_cfg.h:include/ncurses_cfg.hin) + +AC_DEFUN([AC_PATH_XTRA],[])dnl ignore dependencies on this + +CF_TOP_BUILDDIR +CF_SUBST_NCURSES_VERSION +CF_VERSION_INFO(NCURSES,ncurses) + +CF_WITH_REL_VERSION(NCURSES) +CF_NCURSES_WITH_ABI_VERSION + +CF_WITH_SYSTYPE + +### Save the given $CFLAGS to allow user-override. +cf_user_CFLAGS="$CFLAGS" + +### Default install-location +CF_CFG_DEFAULTS +### Defaults for ncurses ABI +CF_ABI_DEFAULTS + +### 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) + +AC_PROG_CPP +AC_PROG_GCC_TRADITIONAL +CF_PROG_CC_C_O(CC,[$CFLAGS $CPPFLAGS]) +CF_PROG_LDCONFIG + +dnl DEFECT in autoconf 2.12: an attempt to set policy, this breaks the +dnl configure script by not letting us test if C++ +dnl is present, making this option necessary. +AC_MSG_CHECKING(if you want to ensure bool is consistent with C++) +AC_ARG_WITH(cxx, + [ --without-cxx do not adjust ncurses bool to match C++], + [cf_with_cxx=$withval], + [cf_with_cxx=yes]) +AC_MSG_RESULT($cf_with_cxx) +if test "X$cf_with_cxx" = Xno ; then + CXX="" + GXX="" +else + # with autoconf 2.13, we can change the error to a warning: + pushdef([AC_MSG_ERROR], + [AC_MSG_RESULT(no) + AC_MSG_WARN([You don't have any C++ compiler, too bad]) + cf_with_cxx=no; CXX=""; GXX="";])dnl + AC_PROG_CXX + popdef([AC_MSG_ERROR])dnl + + AC_LANG_PUSH(C++) + if test "x$cf_with_cxx" != xno + then + # Several of the C++ configurations do not work, particularly when + # cross-compiling (20140913 -TD) + AC_MSG_CHECKING(if $CXX works) + + save_CPPFLAGS="$CPPFLAGS" + eval cf_includedir=${includedir} + CPPFLAGS="$CPPFLAGS -I${cf_includedir}" + AC_TRY_COMPILE([ +#include +#include +], + [ + printf("Hello world!\n") + ], + [cf_cxx_works=yes], + [cf_cxx_works=no]) + CPPFLAGS="$save_CPPFLAGS" + + AC_MSG_RESULT($cf_cxx_works) + if test "x$cf_cxx_works" = xno + then + AC_MSG_WARN([Ignore $CXX, since it cannot compile hello-world.]) + cf_with_cxx=no; CXX=""; GXX=""; + fi + fi + AC_LANG_POP + + # autoconf 2.5x removed the error (hardcoding it to g++, or just blank) + if test "$CXX" = "g++" ; then + AC_PATH_PROG(CXX,g++) + fi + case "x$CXX" in + (x|xg++) + AC_MSG_WARN([You don't have any C++ compiler, too bad]) + cf_with_cxx=no; CXX=""; GXX=""; + ;; + esac +fi + +CF_GXX_VERSION +case "$GXX_VERSION" in +([[1-9]][[0-9]].*) + ;; +(1.*|2.[[0-6]]*) + AC_MSG_WARN(templates do not work) + ;; +esac + +AC_MSG_CHECKING(if you want to build C++ binding and demo) +AC_ARG_WITH(cxx-binding, + [ --without-cxx-binding do not build C++ binding and demo], + [cf_with_cxx_binding=$withval], + [cf_with_cxx_binding=$cf_with_cxx]) +AC_MSG_RESULT($cf_with_cxx_binding) + +AC_MSG_CHECKING(if you want to build with Ada) +AC_MSG_RESULT($cf_with_ada) + +AC_MSG_CHECKING(if you want to install terminal database) +AC_ARG_ENABLE(db-install, + [ --disable-db-install suppress install of terminal database], + [cf_with_db_install=$enableval], + [cf_with_db_install=yes]) +AC_MSG_RESULT($cf_with_db_install) + +AC_MSG_CHECKING(if you want to install manpages) +AC_ARG_WITH(manpages, + [ --without-manpages suppress install of manpages], + [cf_with_manpages=$withval], + [cf_with_manpages=yes]) +AC_MSG_RESULT($cf_with_manpages) + +AC_MSG_CHECKING(if you want to build programs such as tic) +AC_ARG_WITH(progs, + [ --without-progs suppress build/install with programs (e.g., tic)], + [cf_with_progs=$withval], + [cf_with_progs=yes]) +AC_MSG_RESULT($cf_with_progs) + +if test -f "$srcdir/tack/tack.h" ; then + if test "x$cross_compiling" = xyes ; then + CF_VERBOSE(ignoring tack because we are cross-compiling) + cf_with_tack=no + else + AC_MSG_CHECKING(if you want to build the tack program) + AC_ARG_WITH(tack, + [ --without-tack suppress build/install with tack program], + [cf_with_tack=$withval], + [cf_with_tack=$cf_with_progs]) + AC_MSG_RESULT($cf_with_tack) + fi +else + cf_with_tack=no +fi + +AC_MSG_CHECKING(if you want to build test-programs) +AC_ARG_WITH(tests, + [ --without-tests suppress build/install with test-programs], + [cf_with_tests=$withval], + [cf_with_tests=yes]) +AC_MSG_RESULT($cf_with_tests) + +AC_MSG_CHECKING(if you wish to install curses.h) +AC_ARG_WITH(curses-h, + [ --without-curses-h install curses.h as ncurses.h only], + [with_curses_h=$withval], + [with_curses_h=yes]) +AC_MSG_RESULT($with_curses_h) + +modules_to_build="ncurses" +test "X$cf_with_progs" != Xno && modules_to_build="$modules_to_build progs" +test "X$cf_with_tack" != Xno && modules_to_build="$modules_to_build tack" +modules_to_build="$modules_to_build panel menu form" + +AC_ARG_PROGRAM + +CF_PROG_AWK +CF_PROG_INSTALL +CF_PROG_LINT +CF_PROG_LN_S + +AC_SYS_LONG_FILE_NAMES + +# Provide for renaming "ncurses5-config" to "ncurses5X-config", etc., in case +# of package conflict. +cf_config_suffix= +AC_ARG_WITH(config-suffix, + [ --with-config-suffix=X suffixes ncursesXX-config file], + [case "x$withval" in + (xyes|xno) + AC_MSG_WARN(expected a value for config-suffix option) + ;; + (*) cf_config_suffix="$withval" + ;; + esac]) +AC_SUBST(cf_config_suffix) + +# If we find pkg-config, check if we should install the ".pc" files. +CF_PKG_CONFIG +CF_WITH_PKG_CONFIG_LIBDIR +CF_ENABLE_PC_FILES +if test -z "$MAKE_PC_FILES" +then + AC_MSG_CHECKING(for suffix to add to pc-files) +AC_ARG_WITH(pc-suffix, + [ --with-pc-suffix suffixes pc-files], + [case "x$withval" in + (xyes|xno) + PC_MODULE_SUFFIX= + ;; + (*) PC_MODULE_SUFFIX="$withval" + ;; + esac]) + test -z "$PC_MODULE_SUFFIX" && PC_MODULE_SUFFIX=none + AC_MSG_RESULT($PC_MODULE_SUFFIX) + test "$PC_MODULE_SUFFIX" = none && PC_MODULE_SUFFIX= + AC_SUBST(PC_MODULE_SUFFIX) +fi + +AC_MSG_CHECKING(if we should assume mixed-case filenames) +AC_ARG_ENABLE(mixed-case, + [ --enable-mixed-case tic should assume mixed-case filenames], + [enable_mixedcase=$enableval], + [enable_mixedcase=auto]) +AC_MSG_RESULT($enable_mixedcase) +if test "$enable_mixedcase" = "auto" ; then + CF_MIXEDCASE_FILENAMES +else + cf_cv_mixedcase=$enable_mixedcase + if test "x$enable_mixedcase" = "xyes" ; then + AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if tic should assume mixed-case filenames]) + fi +fi + +# do this after mixed-case option (tags/TAGS is not as important as tic). +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, ':') +AC_CHECK_TOOL(LD, ld, ld) +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(if you have specified an install-prefix) +AC_ARG_WITH(install-prefix, + [ --with-install-prefix prefixes actual install-location ($DESTDIR)], + [case "x$withval" in + (xyes|xno) + ;; + (*) DESTDIR="$withval" + ;; + esac]) +AC_MSG_RESULT($DESTDIR) +AC_SUBST(DESTDIR) + +############################################################################### +CF_HELP_MESSAGE(Build-Tools Needed to Compile Temporary Applications for Cross-compiling:) +# If we're cross-compiling, allow the user to override the tools and their +# options. The configure script is oriented toward identifying the host +# compiler, etc., but we need a build compiler to generate parts of the source. + +case "$cf_cv_system_name" in +(*-msvc*) + LDFLAGS="$LDFLAGS user32.lib" + export LDFLAGS + ;; +esac + +CF_BUILD_CC + +############################################################################### +CF_HELP_MESSAGE(Options to Specify the Libraries Built/Used:) + +### Options to allow the user to specify the set of libraries which are used. +### Use "--without-normal --with-shared" to allow the default model to be +### shared, for example. +cf_list_models="" +AC_SUBST(cf_list_models)dnl the complete list of models ("normal debug") + +CF_WITH_LIBTOOL +if test "$with_libtool" != "no" ; then + +cf_list_models="$cf_list_models libtool" + +else + +AC_MSG_CHECKING(if you want to build shared libraries) +AC_ARG_WITH(shared, + [ --with-shared generate shared-libraries], + [with_shared=$withval], + [with_shared=no]) +AC_MSG_RESULT($with_shared) +test "x$with_shared" = "xyes" && cf_list_models="$cf_list_models shared" + +AC_MSG_CHECKING(if you want to build static libraries) +AC_ARG_WITH(normal, + [ --with-normal generate normal-libraries (default)], + [with_normal=$withval], + [with_normal=yes]) +AC_MSG_RESULT($with_normal) +test "x$with_normal" = "xyes" && cf_list_models="$cf_list_models normal" + +AC_MSG_CHECKING(if you want to build debug libraries) +AC_ARG_WITH(debug, + [ --with-debug generate debug-libraries (default)], + [with_debug=$withval], + [with_debug=yes]) +AC_MSG_RESULT($with_debug) +test "x$with_debug" = "xyes" && cf_list_models="$cf_list_models debug" + +AC_MSG_CHECKING(if you want to build profiling libraries) +AC_ARG_WITH(profile, + [ --with-profile generate profile-libraries], + [with_profile=$withval], + [with_profile=no]) +AC_MSG_RESULT($with_profile) +test "x$with_profile" = "xyes" && cf_list_models="$cf_list_models profile" + +fi + +if test "X$cf_with_cxx_binding" != Xno; then +if test "x$with_shared" = "xyes"; then +AC_MSG_CHECKING(if you want to build C++ shared libraries) +AC_ARG_WITH(cxx-shared, + [ --with-cxx-shared generate C++ shared-libraries], + [with_shared_cxx=$withval], + [with_shared_cxx=no]) +AC_MSG_RESULT($with_shared_cxx) +fi +fi + +############################################################################### + +AC_MSG_CHECKING(for specified models) +test -z "$cf_list_models" && cf_list_models=normal +dnl If we use libtool to generate libraries, then it must be the only +dnl specified model. +test "$with_libtool" != "no" && cf_list_models=libtool +AC_MSG_RESULT($cf_list_models) + +### Use the first model as the default, and save its suffix for use in building +### up test-applications. +AC_MSG_CHECKING(for default model) +DFT_LWR_MODEL=`echo "$cf_list_models" | $AWK '{print $1}'` +AC_MSG_RESULT($DFT_LWR_MODEL) + +CF_UPPER(DFT_UPR_MODEL,$DFT_LWR_MODEL)dnl + +AC_SUBST(DFT_LWR_MODEL)dnl the default model ("normal") +AC_SUBST(DFT_UPR_MODEL)dnl the default model ("NORMAL") + +TICS_NAME=tic +AC_SUBST(TICS_NAME) + +TINFO_NAME=tinfo +AC_SUBST(TINFO_NAME) + +LIB_NAME=ncurses +AC_SUBST(LIB_NAME) + +LIB_DIR=../lib +LIB_2ND=../../lib + +CF_WITH_LIB_PREFIX(cf_prefix) + +LIB_SUFFIX= +AC_SUBST(LIB_SUFFIX) +CF_PATHSEP + +############################################################################### + +AC_MSG_CHECKING(if you want to build a separate terminfo library) +AC_ARG_WITH(termlib, + [ --with-termlib generate separate terminfo library], + [with_termlib=$withval], + [with_termlib=no]) +AC_MSG_RESULT($with_termlib) + +AC_MSG_CHECKING(if you want to build a separate tic library) +AC_ARG_WITH(ticlib, + [ --with-ticlib generate separate tic library], + [with_ticlib=$withval], + [with_ticlib=no]) +AC_MSG_RESULT($with_ticlib) + +dnl Not all ports of gcc support the -g option + +if test X"$CC_G_OPT" = X"" ; then + CC_G_OPT='-g' + test -n "$GCC" && test "x${ac_cv_prog_cc_g}" != xyes && CC_G_OPT='' +fi +AC_SUBST(CC_G_OPT) + +if test X"$CXX_G_OPT" = X"" ; then + CXX_G_OPT='-g' + test -n "$GXX" && test "x${ac_cv_prog_cxx_g}" != xyes && CXX_G_OPT='' +fi +AC_SUBST(CXX_G_OPT) + +AC_MSG_CHECKING(for default loader flags) +case "$DFT_LWR_MODEL" in +(libtool) LD_MODEL='' ;; +(normal) LD_MODEL='' ;; +(debug) LD_MODEL=$CC_G_OPT ;; +(profile) LD_MODEL='-pg';; +(shared) LD_MODEL='' ;; +esac +AC_SUBST(LD_MODEL)dnl the type of link (e.g., -g or -pg) +AC_MSG_RESULT($LD_MODEL) + +case "$DFT_LWR_MODEL" in +(shared) +CF_ENABLE_RPATH +AC_MSG_CHECKING(if shared libraries should be relinked during install) +AC_ARG_ENABLE(relink, +[ --disable-relink relink shared libraries during install], +[cf_cv_do_relink=$enableval], +[cf_cv_do_relink=yes]) +AC_MSG_RESULT($cf_cv_do_relink) + ;; +esac + +# we will build libraries one-level down. +rel_builddir=.. +CF_SHARED_OPTS +for model in $cf_list_models ; do + case "$model" in + (libtool) + CF_WITH_LIBTOOL_OPTS + CF_WITH_EXPORT_SYMS + ;; + (shared) + if test "$CC_SHARED_OPTS" = "unknown"; then + AC_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( + [#include ], + [printf("Hello work\\n");], + [cf_cflags_work=yes], + [cf_cflags_work=no]) + AC_MSG_RESULT($cf_cflags_work) + if test "$cf_cflags_work" = no + then + CF_VERBOSE(try to work around by appending shared-options) + CFLAGS="$CFLAGS $CC_SHARED_OPTS" + fi + CF_WITH_VERSIONED_SYMS + ;; + esac +done + +### Checks for special libraries, must be done up-front. +SHLIB_LIST="" +CF_WITH_GPM +if test "$with_gpm" != no ; then + AC_MSG_CHECKING(if you want to load GPM dynamically) + AC_ARG_WITH(dlsym, + [ --without-dlsym do not use dlsym() to load GPM dynamically], + [with_dlsym=$withval], + [with_dlsym=yes]) + AC_MSG_RESULT($with_dlsym) + if test "x$with_dlsym" = xyes ; then + CF_FUNC_DLSYM + if test "x$with_gpm" != xyes ; then + CF_VERBOSE(assuming soname for gpm is $with_gpm) + cf_cv_gpm_soname="$with_gpm" + else + CF_LIB_SONAME([#include ],[if (Gpm_Open(0,0)) Gpm_Close();],gpm) + fi + test "$cf_cv_gpm_soname" != "unknown" && AC_DEFINE_UNQUOTED(LIBGPM_SONAME,"$cf_cv_gpm_soname",[Define as needed to set the gpm share library soname]) + SHLIB_LIST="-ldl $SHLIB_LIST" + CF_ADD_LIB(dl,PRIVATE_LIBS) + else + SHLIB_LIST="-lgpm $SHLIB_LIST" + CF_ADD_LIB(gpm,TEST_LIBS) + CF_ADD_LIB(gpm,PRIVATE_LIBS) + fi + AC_DEFINE(HAVE_LIBGPM,1,[Define to 1 if we have the gpm library]) + CF_CHECK_GPM_WGETCH +fi + +CF_WITH_PCRE2 +CF_WITH_SYSMOUSE + +# pretend that ncurses==ncursesw==ncursest +AC_MSG_CHECKING(if you want to disable library suffixes) +CF_ARG_DISABLE(lib-suffixes, + [ --disable-lib-suffixes disable library suffixes], + [disable_lib_suffixes=yes], + [disable_lib_suffixes=no], + no) +AC_MSG_RESULT($disable_lib_suffixes) + +### 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 + CF_DISABLE_RPATH_HACK +fi + +### Depending on the system, someone may use rpath to build ncurses but not +# want users of the package to rely upon that feature. Give those people an +# option to suppress that detail from EXTRA_LDFLAGS. +EXTRA_PKG_LDFLAGS="$LDFLAGS $EXTRA_LDFLAGS" +if test -n "$EXTRA_PKG_LDFLAGS" +then + AC_MSG_CHECKING(if you want to disable extra LDFLAGS for package-scripts) + CF_ARG_DISABLE(pkg-ldflags, + [ --disable-pkg-ldflags disable extra LDFLAGS for package-scripts], + [disable_pkg_ldflags=yes], + [disable_pkg_ldflags=no], + no) + AC_MSG_RESULT($disable_pkg_ldflags) + test "$disable_pkg_ldflags" = yes && EXTRA_PKG_LDFLAGS= +fi +AC_SUBST(EXTRA_PKG_LDFLAGS) + +############################################################################### +CF_HELP_MESSAGE(Fine-Tuning Your Configuration:) + +### use option --with-extra-suffix to append suffix to headers and libraries +AC_MSG_CHECKING(if you wish to append extra suffix to header/library paths) +EXTRA_SUFFIX= +AC_ARG_WITH(extra-suffix, + [ --with-extra-suffix=X append extra suffix to header/library paths], + [case x$withval in + (xno) + ;; + (xyes|x) + EXTRA_SUFFIX=$cf_cv_abi_version + ;; + (*) + EXTRA_SUFFIX=$withval + ;; + esac + ]) +AC_MSG_RESULT($EXTRA_SUFFIX) +AC_SUBST(EXTRA_SUFFIX) + +### use option --disable-overwrite to leave out the link to -lcurses +AC_MSG_CHECKING(if you wish to install ncurses overwriting curses) +AC_ARG_ENABLE(overwrite, + [ --disable-overwrite put headers in subdir, omit link to -lcurses], + [with_overwrite=$enableval], + [if test "$prefix" = "/usr" ; then with_overwrite=yes; else with_overwrite=no; fi]) +AC_MSG_RESULT($with_overwrite) + +AC_MSG_CHECKING(if external terminfo-database is used) +AC_ARG_ENABLE(database, + [ --disable-database do not use terminfo, only fallbacks/termcap], + [use_database=$enableval], + [use_database=yes]) +AC_MSG_RESULT($use_database) + +case "$host_os" in +(os2*) + TERMINFO_SRC='${top_srcdir}/misc/emx.src' + ;; +(*) + TERMINFO_SRC='${top_srcdir}/misc/terminfo.src' + ;; +esac +AC_SUBST(TERMINFO_SRC) + +NCURSES_USE_DATABASE=0 +if test "$use_database" != no ; then + NCURSES_USE_DATABASE=1 + + AC_MSG_CHECKING(which terminfo source-file will be installed) + AC_ARG_WITH(database, + [ --with-database=XXX specify terminfo source to install], + [TERMINFO_SRC=$withval]) + AC_MSG_RESULT($TERMINFO_SRC) + + AC_MSG_CHECKING(whether to use hashed database instead of directory/tree) + AC_ARG_WITH(hashed-db, + [ --with-hashed-db specify hashed-database library],, + [with_hashed_db=no]) + AC_MSG_RESULT($with_hashed_db) +else + with_hashed_db=no +fi +AC_SUBST(NCURSES_USE_DATABASE) + +AC_MSG_CHECKING(for list of fallback descriptions) +AC_ARG_WITH(fallbacks, + [ --with-fallbacks=XXX specify list of fallback terminal descriptions], + [with_fallback=$withval], + [with_fallback=]) +AC_MSG_RESULT($with_fallback) + +case ".$with_fallback" in +(.|.no) + FALLBACK_LIST= + ;; +(.yes) + AC_MSG_WARN(expected a list of terminal descriptions) + ;; +(*) + FALLBACK_LIST=`echo "$with_fallback" | sed -e 's/,/ /g'` + ;; +esac + +# The fallback feature in ncurses relies upon tic/infocmp outside the build +# tree for generating the terminal descriptions that will be compiled into the +# library. If your toolchain is old, it may not handle current terminal +# databases. Use configure-options to point to the tools which will be used, +# rather than the first ones found on the $PATH. +AC_CHECK_TOOL(TIC, tic) +AC_CHECK_TOOL(INFOCMP, infocmp) +if test -n "$FALLBACK_LIST" +then + CF_WITH_PATH_PROG(TIC, tic, [for fallbacks], $PATH:/usr/local/ncurses/bin) + CF_WITH_PATH_PROG(INFOCMP, infocmp, [for fallbacks], $PATH:/usr/local/ncurses/bin) + test -z "$TIC" && FALLBACK_LIST= + test -z "$INFOCMP" && FALLBACK_LIST= + if test -z "$FALLBACK_LIST" + then + AC_MSG_WARN(ignoring fallback option because tic/infocmp are not available) + fi +fi +AC_SUBST(TIC) +AC_SUBST(INFOCMP) + +USE_FALLBACKS= +test -z "$FALLBACK_LIST" && USE_FALLBACKS="#" +AC_SUBST(FALLBACK_LIST) +AC_SUBST(USE_FALLBACKS) + +AC_MSG_CHECKING(if you want modern xterm or antique) +AC_ARG_WITH(xterm-new, + [ --without-xterm-new specify if xterm terminfo should be old version], + [with_xterm_new=$withval], + [with_xterm_new=yes]) +case "$with_xterm_new" in +(no) with_xterm_new=xterm-old;; +(*) with_xterm_new=xterm-new;; +esac +AC_MSG_RESULT($with_xterm_new) +WHICH_XTERM=$with_xterm_new +AC_SUBST(WHICH_XTERM) + +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=BS]) +case x$with_xterm_kbs in +(xyes|xno|xBS|xbs|x8) + with_xterm_kbs=BS + ;; +(xDEL|xdel|x127) + with_xterm_kbs=DEL + ;; +(*) + with_xterm_kbs=$withval + ;; +esac +AC_MSG_RESULT($with_xterm_kbs) +XTERM_KBS=$with_xterm_kbs +AC_SUBST(XTERM_KBS) + +MAKE_TERMINFO= +if test "$use_database" = no ; then + TERMINFO="${datadir}/terminfo" + MAKE_TERMINFO="#" +else + +AC_MSG_CHECKING(for list of terminfo directories) +CF_WITH_PATHLIST(terminfo-dirs, + [ --with-terminfo-dirs=XXX specify list of terminfo directories], + TERMINFO_DIRS, + DATADIR/terminfo, + ${datadir}/terminfo) +AC_MSG_RESULT($TERMINFO_DIRS) +test -n "$TERMINFO_DIRS" && AC_DEFINE_UNQUOTED(TERMINFO_DIRS,"$TERMINFO_DIRS",[Define as needed to predefine the TERMINFO_DIR searchlist]) + +case "x$TERMINFO" in +x???:*) + AC_MSG_WARN(ignoring non-directory/file TERMINFO value) + unset TERMINFO + ;; +esac + +AC_MSG_CHECKING(for default terminfo directory) +CF_WITH_PATH(default-terminfo-dir, + [ --with-default-terminfo-dir=DIR default terminfo directory], + TERMINFO, + DATADIR/terminfo, + ${datadir}/terminfo) +AC_MSG_RESULT($TERMINFO) +AC_DEFINE_UNQUOTED(TERMINFO,"$TERMINFO",[Define to set the default terminal database path]) + +fi + +AC_SUBST(TERMINFO) +AC_SUBST(MAKE_TERMINFO) + +### use option --disable-big-core to make tic run on small machines +### We need 4Mb, check if we can allocate 50% more than that. +AC_MSG_CHECKING(if big-core option selected) +AC_ARG_ENABLE(big-core, + [ --disable-big-core assume machine has little memory], + [with_big_core=$enableval], + [AC_TRY_RUN([ +#include +#include +int main() { + unsigned long n = 6000000L; + char *s = malloc(n); + if (s != 0) + s[0] = s[n-1] = 0; + ${cf_cv_main_return:-return}(s == 0); +}], + [with_big_core=yes], + [with_big_core=no], + [with_big_core=no])]) +AC_MSG_RESULT($with_big_core) +test "x$with_big_core" = "xyes" && AC_DEFINE(HAVE_BIG_CORE,1,[Define to 1 if machine has ample memory for tic]) + +### 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. +AC_MSG_CHECKING(if big-strings option selected) +AC_ARG_ENABLE(big-strings, + [ --disable-big-strings assume compiler has only standard-size strings], + [with_big_strings=$enableval], + [CF_AWK_BIG_PRINTF(12000,with_big_strings)]) +AC_MSG_RESULT($with_big_strings) + +USE_BIG_STRINGS=0 +test "x$with_big_strings" = "xyes" && USE_BIG_STRINGS=1 +AC_SUBST(USE_BIG_STRINGS) + +### use option --enable-termcap to compile in the termcap fallback support +AC_MSG_CHECKING(if you want termcap-fallback support) +AC_ARG_ENABLE(termcap, + [ --enable-termcap compile in termcap fallback support], + [with_termcap=$enableval], + [with_termcap=no]) +AC_MSG_RESULT($with_termcap) + +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) + 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) + fi + + NCURSES_USE_TERMCAP=1 + AC_MSG_CHECKING(for list of termcap files) + CF_WITH_PATHLIST(termpath, + [ --with-termpath=XXX specify list of termcap files], + TERMPATH, + /etc/termcap:/usr/share/misc/termcap) + AC_MSG_RESULT($TERMPATH) + test -n "$TERMPATH" && AC_DEFINE_UNQUOTED(TERMPATH,"$TERMPATH",[Define to set the termcap searchlist]) + + ### use option --enable-getcap to use a hacked getcap for reading termcaps + AC_MSG_CHECKING(if fast termcap-loader is needed) + AC_ARG_ENABLE(getcap, + [ --enable-getcap fast termcap load, no xrefs to terminfo], + [with_getcap=$enableval], + [with_getcap=no]) + AC_MSG_RESULT($with_getcap) + test "x$with_getcap" = "xyes" && AC_DEFINE(USE_GETCAP,1,[Define to 1 to use fast termcap-loader]) + + AC_MSG_CHECKING(if translated termcaps will be cached in ~/.terminfo) + AC_ARG_ENABLE(getcap-cache, + [ --enable-getcap-cache cache translated termcaps in ~/.terminfo], + [with_getcap_cache=$enableval], + [with_getcap_cache=no]) + AC_MSG_RESULT($with_getcap_cache) + test "x$with_getcap_cache" = "xyes" && AC_DEFINE(USE_GETCAP_CACHE,1,[Define to 1 if translated termcap should be stored in $HOME/.terminfo]) + +fi +AC_SUBST(NCURSES_USE_TERMCAP) + +### Use option --disable-home-terminfo to completely remove ~/.terminfo +AC_MSG_CHECKING(if ~/.terminfo is wanted) +AC_ARG_ENABLE(home-terminfo, + [ --disable-home-terminfo drop ~/.terminfo from terminfo search-path], + [with_home_terminfo=$enableval], + [with_home_terminfo=yes]) +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]) + +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], + [with_root_environ=$enableval], + [with_root_environ=yes]) +AC_MSG_RESULT($with_root_environ) +test "x$with_root_environ" = xyes && AC_DEFINE(USE_ROOT_ENVIRON,1,[Define to 1 if root is allowed to use ncurses environment]) + +AC_MSG_CHECKING(if you want to permit setuid programs to access all files) +AC_ARG_ENABLE(root-environ, + [ --disable-root-access restrict file-access when running setuid], + [with_root_access=$enableval], + [with_root_access=yes]) +AC_MSG_RESULT($with_root_access) +test "x$with_root_access" = xyes && AC_DEFINE(USE_ROOT_ACCESS,1,[Define to 1 if setuid is allowed all file-access]) + +### Use option --enable-symlinks to make tic use symlinks, not hard links +### to reduce storage requirements for the terminfo database. +CF_LINK_FUNCS + +with_links=no +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 + AC_MSG_CHECKING(if tic should use symbolic links) + AC_ARG_ENABLE(symlinks, + [ --enable-symlinks make tic use symbolic links not hard links], + [with_symlinks=$enableval], + [with_symlinks=no]) + AC_MSG_RESULT($with_symlinks) +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 + AC_MSG_CHECKING(if tic should use hard links) + if test "x$ac_cv_func_link" = xyes ; then + with_links=yes + else + with_links=no + fi + AC_MSG_RESULT($with_links) +fi + +test "x$with_links" = xyes && AC_DEFINE(USE_LINKS,1,[Define to 1 if hardlinks should be used in terminfo database]) +test "x$with_symlinks" = xyes && AC_DEFINE(USE_SYMLINKS,1,[Define to 1 if symbolic links should be used in terminfo database]) + +### use option --enable-broken-linker to force on use of broken-linker support +CF_ENABLE_BROKEN_LINKER + +### use option --enable-bsdpad to have tputs process BSD-style prefix padding +AC_MSG_CHECKING(if tputs should process BSD-style prefix padding) +AC_ARG_ENABLE(bsdpad, + [ --enable-bsdpad recognize BSD-style prefix padding], + [with_bsdpad=$enableval], + [with_bsdpad=no]) +AC_MSG_RESULT($with_bsdpad) +test "x$with_bsdpad" = xyes && AC_DEFINE(BSD_TPUTS,1,[Define to 1 to recognize BSD-style prefix padding]) + +### use option --enable-widec to turn on use of wide-character support +NCURSES_CH_T=chtype +NCURSES_LIBUTF8=0 + +NEED_WCHAR_H=0 +NCURSES_MBSTATE_T=0 +NCURSES_WCHAR_T=0 +NCURSES_WINT_T=0 + +# Check to define _XOPEN_SOURCE "automatically" +CPPFLAGS_before_XOPEN="$CPPFLAGS" +CF_XOPEN_SOURCE(600) +CPPFLAGS_after_XOPEN="$CPPFLAGS" + +# Work around breakage on OS X +CF_SIGWINCH + +# Checks for CODESET support. +AM_LANGINFO_CODESET + +# use these variables to work around a defect in gcc's fixincludes. +NCURSES_OK_WCHAR_T= +NCURSES_OK_WINT_T= + +AC_MSG_CHECKING(if you want wide-character code) +AC_ARG_ENABLE(widec, + [ --enable-widec compile with wide-char/UTF-8 code], + [with_widec=$enableval], + [with_widec=no]) +AC_MSG_RESULT($with_widec) + +NCURSES_WCWIDTH_GRAPHICS=1 +AC_SUBST(NCURSES_WCWIDTH_GRAPHICS) + +if test "x$with_widec" = xyes ; then + if test "x$disable_lib_suffixes" = xno ; then + LIB_SUFFIX="w${LIB_SUFFIX}" + fi + AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to compile with wide-char/UTF-8 code]) + AC_DEFINE(NCURSES_WIDECHAR,1,[Define to 1 to compile with wide-char/UTF-8 code]) + + CF_CHECK_WCHAR_H + CF_CHECK_WCWIDTH_GRAPHICS + test "$cf_cv_wcwidth_graphics" = no && NCURSES_WCWIDTH_GRAPHICS=0 + + # with_overwrite=no + NCURSES_CH_T=cchar_t + AC_CHECK_FUNCS(putwc btowc wctob mbtowc wctomb mblen mbrlen mbrtowc wcsrtombs mbsrtowcs wcstombs mbstowcs) + if test "x$ac_cv_func_putwc" != xyes ; then + CF_UTF8_LIB + if test "$cf_cv_utf8_lib" != no ; then + NCURSES_LIBUTF8=1 + fi + fi + CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T) + CF_WCHAR_TYPE(wchar_t, NCURSES_WCHAR_T, NCURSES_OK_WCHAR_T) + CF_WCHAR_TYPE(wint_t, NCURSES_WINT_T, NCURSES_OK_WINT_T) + + if test "$NCURSES_MBSTATE_T" != 0; then + AC_DEFINE(NEED_MBSTATE_T_DEF,1,[Define to 1 if we must declare mbstate_t]) + fi +fi +AC_SUBST(NCURSES_CH_T) +AC_SUBST(NCURSES_LIBUTF8) + +AC_SUBST(NEED_WCHAR_H) +AC_SUBST(NCURSES_MBSTATE_T) +AC_SUBST(NCURSES_WCHAR_T) +AC_SUBST(NCURSES_WINT_T) + +AC_SUBST(NCURSES_OK_WCHAR_T) +AC_SUBST(NCURSES_OK_WINT_T) + +### use option --disable-lp64 to allow long chtype +AC_MSG_CHECKING(whether to enable _LP64 definition in curses.h) +AC_ARG_ENABLE(lp64, + [ --disable-lp64 allow chtype to be long (ignore _LP64)], + [with_lp64=$enableval], + [with_lp64=$cf_dft_with_lp64]) +AC_MSG_RESULT($with_lp64) + +if test "x$with_lp64" = xyes ; then + cf_cv_enable_lp64=1 +else + cf_cv_enable_lp64=0 +fi +AC_SUBST(cf_cv_enable_lp64) + +CF_LARGEFILE + +### use option --disable-tparm-varargs to make tparm() conform to X/Open +AC_MSG_CHECKING(if you want tparm not to use X/Open fixed-parameter list) +AC_ARG_ENABLE(tparm-varargs, + [ --disable-tparm-varargs compile tparm() without varargs interface], + [with_tparm_varargs=$enableval], + [with_tparm_varargs=yes]) +AC_MSG_RESULT($with_tparm_varargs) +NCURSES_TPARM_VARARGS=0 +test "x$with_tparm_varargs" = xyes && NCURSES_TPARM_VARARGS=1 +AC_SUBST(NCURSES_TPARM_VARARGS) + +### use option --disable-tic-depends to make libtic not explicitly depend on ncurses/ncursesw +if test "$with_ticlib" != no ; then +AC_MSG_CHECKING(if you want tic library to use explicit dependency on ncurses$LIB_SUFFIX library) +AC_ARG_ENABLE(tic-depends, + [ --disable-tic-depends link tic library without explicit dependency on ncurses library], + [with_tic_depends=$enableval], + [with_tic_depends=yes]) +AC_MSG_RESULT($with_tic_depends) +else + with_tic_depends=no +fi + +### use option --enable-wattr-macros to enable wattr* macros in curses.h +AC_MSG_CHECKING(if you want to enable wattr* macros) +AC_ARG_ENABLE(wattr-macros, + [ --enable-wattr-macros enable wattr* macros], + [with_wattr_macros=$enableval], + [with_wattr_macros=no]) +if [[ "x$with_wattr_macros" != xyes ]]; then + NCURSES_WATTR_MACROS=0 + AC_MSG_RESULT(no) +else + NCURSES_WATTR_MACROS=1 + AC_MSG_RESULT(yes) +fi +AC_SUBST(NCURSES_WATTR_MACROS) + +CF_WITH_X11_RGB + +### use option --with-bool to override bool's type +AC_MSG_CHECKING(for type of bool) +AC_ARG_WITH(bool, + [ --with-bool=TYPE override fallback type of bool variable], + [NCURSES_BOOL="$withval"], + [NCURSES_BOOL=auto]) +AC_MSG_RESULT($NCURSES_BOOL) +AC_SUBST(NCURSES_BOOL) + +AC_MSG_CHECKING(for alternate terminal capabilities file) +AC_ARG_WITH(caps, + [ --with-caps=alt compile with alternate Caps file], + [TERMINFO_CAPS=Caps.$withval], + [TERMINFO_CAPS=Caps]) +test -f "${srcdir}/include/${TERMINFO_CAPS}" || TERMINFO_CAPS=Caps +AC_MSG_RESULT($TERMINFO_CAPS) +AC_SUBST(TERMINFO_CAPS) + +### use option --with-chtype to override chtype's type +AC_MSG_CHECKING(for type of chtype) +AC_ARG_WITH(chtype, + [ --with-chtype=TYPE override type of chtype], + [NCURSES_CHTYPE="$withval"], + [NCURSES_CHTYPE=$cf_dft_chtype]) +AC_MSG_RESULT($NCURSES_CHTYPE) + +### use option --with-ospeed to override ospeed's type +AC_MSG_CHECKING(for type of ospeed) +AC_ARG_WITH(ospeed, + [ --with-ospeed=TYPE override type of ospeed variable], + [NCURSES_OSPEED="$withval"], + [NCURSES_OSPEED=short]) +AC_MSG_RESULT($NCURSES_OSPEED) +AC_SUBST(NCURSES_OSPEED) + +### use option --with-mmask-t to override mmask_t's type +AC_MSG_CHECKING(for type of mmask_t) +AC_ARG_WITH(mmask-t, + [ --with-mmask-t=TYPE override type of mmask_t], + [NCURSES_MMASK_T="$withval"], + [NCURSES_MMASK_T=$cf_dft_mmask_t]) +AC_MSG_RESULT($NCURSES_MMASK_T) + +### use option --with-ccharw-max to override CCHARW_MAX size +AC_MSG_CHECKING(for size CCHARW_MAX) +AC_ARG_WITH(ccharw-max, + [ --with-ccharw-max=XXX override size CCHARW_MAX], + [NCURSES_CCHARW_MAX="$withval"], + [NCURSES_CCHARW_MAX=5]) +AC_MSG_RESULT($NCURSES_CCHARW_MAX) +AC_SUBST(NCURSES_CCHARW_MAX) + +AC_CHECK_SIZEOF([signed char]) +if test "$ac_cv_sizeof_signed_char" = 1 ; then + NCURSES_SBOOL="signed char" +else + NCURSES_SBOOL="char" +fi +AC_MSG_CHECKING(if you want to use signed Boolean array in term.h) +AC_ARG_ENABLE(signed-char, + [ --enable-signed-char compile using signed Boolean's in term.h], + [with_signed_char=$enableval], + [with_signed_char=no]) +AC_MSG_RESULT($with_signed_char) +test "x$with_signed_char" != xyes && NCURSES_SBOOL="char" +AC_SUBST(NCURSES_SBOOL) + +### use option --with-tparm-arg to override tparm's argument type +AC_MSG_CHECKING(for type of tparm args) +AC_ARG_WITH(tparm-arg, + [ --with-tparm-arg=TYPE override parameter type of tparm], + [NCURSES_TPARM_ARG="$withval"], + [NCURSES_TPARM_ARG=$cf_dft_tparm_arg]) +AC_MSG_RESULT($NCURSES_TPARM_ARG) +AC_SUBST(NCURSES_TPARM_ARG) + +### Enable compiling-in rcs id's +AC_MSG_CHECKING(if RCS identifiers should be compiled-in) +AC_ARG_WITH(rcs-ids, + [ --with-rcs-ids compile-in RCS identifiers], + [with_rcs_ids=$withval], + [with_rcs_ids=no]) +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. +AC_MSG_CHECKING(if you want to build with function extensions) +AC_ARG_ENABLE(ext-funcs, + [ --disable-ext-funcs disable function-extensions], + [with_ext_funcs=$enableval], + [with_ext_funcs=yes]) +AC_MSG_RESULT($with_ext_funcs) +if test "x$with_ext_funcs" = xyes ; then + NCURSES_EXT_FUNCS=1 + AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 to enable ncurses extended functions]) + AC_DEFINE(HAVE_ASSUME_DEFAULT_COLORS,1,[Define to 1 to enable assume_default_colors() function in test-programs]) + AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 to enable curses_version() function in test-programs]) + AC_DEFINE(HAVE_HAS_KEY,1,[Define to 1 to enable has_key() function in test-programs]) + AC_DEFINE(HAVE_RESIZETERM,1,[Define to 1 to enable resizeterm() function in test-programs]) + AC_DEFINE(HAVE_RESIZE_TERM,1,[Define to 1 to enable resize_term() function in test-programs]) + AC_DEFINE(HAVE_TERM_ENTRY_H,1,[Define to 1 to enable term_entry() function in test-programs]) + AC_DEFINE(HAVE_USE_DEFAULT_COLORS,1,[Define to 1 to enable use_default_colors() function in test-programs]) + AC_DEFINE(HAVE_USE_EXTENDED_NAMES,1,[Define to 1 to enable use_extended_names() function in test-programs]) + AC_DEFINE(HAVE_USE_SCREEN,1,[Define to 1 to enable use_screen() function in test-programs]) + 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 + NCURSES_EXT_FUNCS=0 + GENERATED_EXT_FUNCS= +fi +AC_SUBST(NCURSES_EXT_FUNCS) +AC_SUBST(GENERATED_EXT_FUNCS) + +AC_MSG_CHECKING(if you want to build with SCREEN extensions) +AC_ARG_ENABLE(sp-funcs, + [ --enable-sp-funcs enable SCREEN-extensions], + [with_sp_funcs=$enableval], + [with_sp_funcs=$cf_dft_ext_spfuncs]) +AC_MSG_RESULT($with_sp_funcs) +if test "x$with_sp_funcs" = xyes ; then + NCURSES_SP_FUNCS=1 + AC_DEFINE(NCURSES_SP_FUNCS,1,[Define to 1 to enable SCREEN-extensions]) + AC_DEFINE(HAVE_TPUTS_SP,1,[Define to 1 to enable tputs_sp() function in test-programs]) + GENERATED_SP_FUNCS=generated +else + NCURSES_SP_FUNCS=0 + GENERATED_SP_FUNCS= +fi +AC_SUBST(NCURSES_SP_FUNCS) +AC_SUBST(GENERATED_SP_FUNCS) + +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]) +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]) + if test "x$with_termlib" != xno ; then + AC_MSG_ERROR(The term-driver option conflicts with the termlib option) + fi + if test "x$with_sp_funcs" != xyes ; then + AC_MSG_ERROR(The term-driver option relies upon sp-funcs) + fi +fi + +### use option --enable-const to turn on use of const beyond that in XSI. +AC_MSG_CHECKING(for extended use of const keyword) +AC_ARG_ENABLE(const, + [ --enable-const compile with extra/non-standard const], + [with_ext_const=$enableval], + [with_ext_const=$cf_dft_ext_const]) +AC_MSG_RESULT($with_ext_const) +NCURSES_CONST='/*nothing*/' +if test "x$with_ext_const" = xyes ; then + NCURSES_CONST=const +fi +AC_SUBST(NCURSES_CONST) + +### use option --enable-ext-colors to turn on use of colors beyond 16. +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) + else + # cannot be ABI 5 since it changes sizeof(cchar_t) + CF_NCURSES_ABI_6 + NCURSES_EXT_COLORS=1 + AC_DEFINE(NCURSES_EXT_COLORS,1,[Define to 1 to compile for 256-color support]) + AC_DEFINE(HAVE_ALLOC_PAIR,1,[Define to 1 to enable alloc_pair() function]) + 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 +fi +AC_SUBST(NCURSES_EXT_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) +AC_ARG_ENABLE(ext-mouse, + [ --enable-ext-mouse compile for extended mouse-encoding], + [with_ext_mouse=$enableval], + [with_ext_mouse=$cf_dft_ext_mouse]) +AC_MSG_RESULT($with_ext_mouse) +NCURSES_MOUSE_VERSION=1 +if test "x$with_ext_mouse" = xyes ; then + NCURSES_MOUSE_VERSION=2 + CF_NCURSES_ABI_6 +fi +AC_SUBST(NCURSES_MOUSE_VERSION) + +### use option --enable-ext-putwin to turn on extended screendumps +AC_MSG_CHECKING(if you want to use extended putwin/screendump) +AC_ARG_ENABLE(ext-putwin, + [ --enable-ext-putwin compile with extended putwin/screendump], + [with_ext_putwin=$enableval], + [with_ext_putwin=$cf_dft_ext_putwin]) +AC_MSG_RESULT($with_ext_putwin) +if test "x$with_ext_putwin" = xyes ; then + AC_DEFINE(NCURSES_EXT_PUTWIN,1,[Define to 1 to compile with extended putwin/screendump]) +fi + +AC_MSG_CHECKING(if you want \$NCURSES_NO_PADDING code) +AC_ARG_ENABLE(no-padding, + [ --enable-no-padding compile with $NCURSES_NO_PADDING code], + [with_no_padding=$enableval], + [with_no_padding=$with_ext_funcs]) +AC_MSG_RESULT($with_no_padding) +test "x$with_no_padding" = xyes && AC_DEFINE(NCURSES_NO_PADDING,1,[Define to 1 to compile with $NCURSES_NO_PADDING code]) + +### use option --enable-sigwinch to turn on use of SIGWINCH logic +AC_MSG_CHECKING(if you want SIGWINCH handler) +AC_ARG_ENABLE(sigwinch, + [ --enable-sigwinch compile with SIGWINCH handler], + [with_sigwinch=$enableval], + [with_sigwinch=$with_ext_funcs]) +AC_MSG_RESULT($with_sigwinch) +test "x$with_sigwinch" = xyes && AC_DEFINE(USE_SIGWINCH,1,[Define to 1 to compile with SIGWINCH handler]) + +### use option --enable-tcap-names to allow user to define new capabilities +AC_MSG_CHECKING(if you want user-definable terminal capabilities like termcap) +AC_ARG_ENABLE(tcap-names, + [ --enable-tcap-names compile with user-definable terminal capabilities], + [with_tcap_names=$enableval], + [with_tcap_names=$with_ext_funcs]) +AC_MSG_RESULT($with_tcap_names) +NCURSES_XNAMES=0 +test "x$with_tcap_names" = xyes && NCURSES_XNAMES=1 +AC_SUBST(NCURSES_XNAMES) + +############################################################################## +CF_HELP_MESSAGE(Reentrant Code:) +CF_WITH_PTHREAD + +if test "x$with_pthread" != xno; then + AC_CHECK_FUNC(pthread_kill,[ + AC_MSG_CHECKING(if you want to allow EINTR in wgetch with pthreads) + AC_ARG_ENABLE(pthreads-eintr, + [ --enable-pthreads-eintr enable EINTR in wgetch with pthreads], + [use_pthreads_eintr=$enableval], + [use_pthreads_eintr=no]) + AC_MSG_RESULT($use_pthreads_eintr) + if test "x$use_pthreads_eintr" = xyes ; then + AC_DEFINE(USE_PTHREADS_EINTR,1,[Define to 1 to enable EINTR in wgetch with pthreads]) + fi]) + + AC_MSG_CHECKING(if you want to use weak-symbols for pthreads) + AC_ARG_ENABLE(weak-symbols, + [ --enable-weak-symbols enable weak-symbols for pthreads], + [use_weak_symbols=$enableval], + [use_weak_symbols=no]) + AC_MSG_RESULT($use_weak_symbols) + if test "x$use_weak_symbols" = xyes ; then + CF_WEAK_SYMBOLS + else + cf_cv_weak_symbols=no + fi + + if test "x$cf_cv_weak_symbols" = xyes ; then + AC_DEFINE(USE_WEAK_SYMBOLS,1,[Define to 1 to enable weak-symbols for pthreads]) + fi +fi + +PTHREAD= +if test "x$with_pthread" = "xyes" ; then + AC_DEFINE(USE_PTHREADS,1,[Define to 1 to use pthreads feature]) + enable_reentrant=yes + if test "x$cf_cv_weak_symbols" = xyes ; then + PTHREAD=-lpthread + CF_ADD_LIB(pthread,PRIVATE_LIBS) + fi +fi +AC_SUBST(PTHREAD) + +# Reentrant code has to be opaque; there's little advantage to making ncurses +# 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. +AC_MSG_CHECKING(if you want reentrant code) +AC_ARG_ENABLE(reentrant, + [ --enable-reentrant compile with reentrant code], + [with_reentrant=$enableval], + [with_reentrant=no]) +AC_MSG_RESULT($with_reentrant) +if test "x$with_reentrant" = xyes ; then + cf_cv_enable_reentrant=1 + cf_cv_enable_opaque="NCURSES_INTERNALS" + NCURSES_SIZE_T=int + if test "x$cf_cv_weak_symbols" = xyes ; then + CF_REMOVE_LIB(LIBS,$LIBS,pthread) + CF_ADD_LIB(pthread,TEST_LIBS) + CF_ADD_LIB(pthread,TEST_LIBS2) + CF_ADD_LIB(pthread,PRIVATE_LIBS) + else + # when not using weak symbols but with_reentrant, + # add 't' to the library suffix on all platforms + # except cygwin, where we only do that if ALSO + # compiling with full thread support. + case "$host" in + (*cygwin* | *msys*) + if test "$with_pthread" = "yes" ; then + if test "x$disable_lib_suffixes" = "xno" ; then + LIB_SUFFIX="t${LIB_SUFFIX}" + fi + fi ;; + (*) + if test "x$disable_lib_suffixes" = "xno" ; then + LIB_SUFFIX="t${LIB_SUFFIX}" + fi + ;; + esac + fi + AC_DEFINE(USE_REENTRANT,1,[Define to 1 to use reentrant feature]) + CF_NCURSES_ABI_6 +else + cf_cv_enable_reentrant=0 + cf_cv_enable_opaque="NCURSES_OPAQUE" + NCURSES_SIZE_T=short +fi +AC_SUBST(cf_cv_enable_reentrant) +AC_SUBST(cf_cv_enable_opaque) + +AC_SUBST(NCURSES_SIZE_T) + +AC_MSG_CHECKING(if you want opaque curses-library structures) +CF_ARG_ENABLE(opaque-curses, + [ --enable-opaque-curses make curses WINDOW, etc., "opaque"], + [enable_opaque_curses=yes],[ + test "$cf_cv_enable_reentrant" = 1 && enable_opaque_curses=yes + test "$cf_cv_enable_reentrant" = 1 || enable_opaque_curses=no + ]) +AC_MSG_RESULT($enable_opaque_curses) + +test "$cf_cv_enable_reentrant" = 1 && \ +test "$enable_opaque_curses" = no && \ +AC_MSG_ERROR(reentrant configuration requires opaque library) + +AC_MSG_CHECKING(if you want opaque form-library structures) +AC_ARG_ENABLE(opaque-form, + [ --enable-opaque-form make form-library structures "opaque"], + [enable_opaque_form=yes],[enable_opaque_form=no]) +AC_MSG_RESULT($enable_opaque_form) + +AC_MSG_CHECKING(if you want opaque menu-library structures) +AC_ARG_ENABLE(opaque-menu, + [ --enable-opaque-menu make menu-library structures "opaque"], + [enable_opaque_menu=yes],[enable_opaque_menu=no]) +AC_MSG_RESULT($enable_opaque_menu) + +AC_MSG_CHECKING(if you want opaque panel-library structures) +AC_ARG_ENABLE(opaque-panel, + [ --enable-opaque-panel make panel-library structures "opaque"], + [enable_opaque_panel=yes],[enable_opaque_panel=no]) +AC_MSG_RESULT($enable_opaque_panel) + +NCURSES_OPAQUE=0; test "$enable_opaque_curses" = yes && NCURSES_OPAQUE=1 +NCURSES_OPAQUE_FORM=0; test "$enable_opaque_form" = yes && NCURSES_OPAQUE_FORM=1 +NCURSES_OPAQUE_MENU=0; test "$enable_opaque_menu" = yes && NCURSES_OPAQUE_MENU=1 +NCURSES_OPAQUE_PANEL=0; test "$enable_opaque_panel" = yes && NCURSES_OPAQUE_PANEL=1 + +AC_SUBST(NCURSES_OPAQUE) +AC_SUBST(NCURSES_OPAQUE_FORM) +AC_SUBST(NCURSES_OPAQUE_MENU) +AC_SUBST(NCURSES_OPAQUE_PANEL) + +### Allow using a different wrap-prefix +if test "$cf_cv_enable_reentrant" != 0 || test "$BROKEN_LINKER" = 1 ; then + AC_MSG_CHECKING(for prefix used to wrap public variables) + AC_ARG_WITH(wrap-prefix, + [ --with-wrap-prefix=XXX override prefix used for public variables], + [NCURSES_WRAP_PREFIX=$withval], + [NCURSES_WRAP_PREFIX=_nc_]) + AC_MSG_RESULT($NCURSES_WRAP_PREFIX) +else + NCURSES_WRAP_PREFIX=_nc_ +fi +AC_SUBST(NCURSES_WRAP_PREFIX) +AC_DEFINE_UNQUOTED(NCURSES_WRAP_PREFIX,"$NCURSES_WRAP_PREFIX",[Define to override _nc_ prefix]) + +############################################################################### +# These options are relatively safe to experiment with. +CF_HELP_MESSAGE(Development Code:) +AC_MSG_CHECKING(if you want all development code) +AC_ARG_WITH(develop, + [ --without-develop disable development options], + [with_develop=$withval], + [with_develop=no]) +AC_MSG_RESULT($with_develop) + +### use option --enable-hard-tabs to turn on use of hard-tabs optimize +AC_MSG_CHECKING(if you want hard-tabs code) +AC_ARG_ENABLE(hard-tabs, + [ --enable-hard-tabs compile with hard-tabs code],, + [enable_hard_tabs=$with_develop]) +AC_MSG_RESULT($enable_hard_tabs) +test "x$enable_hard_tabs" = xyes && AC_DEFINE(USE_HARD_TABS,1,[Define to 1 to compile with hard-tabs code]) + +### use option --enable-xmc-glitch to turn on use of magic-cookie optimize +AC_MSG_CHECKING(if you want limited support for xmc) +AC_ARG_ENABLE(xmc-glitch, + [ --enable-xmc-glitch compile with support for xmc (magic-cookie)],, + [enable_xmc_glitch=$with_develop]) +AC_MSG_RESULT($enable_xmc_glitch) +test "x$enable_xmc_glitch" = xyes && AC_DEFINE(USE_XMC_SUPPORT,1,[Define to 1 to compile with support for xmc (magic-cookie)]) + +############################################################################### +# These are just experimental, probably should not be in a package: +CF_HELP_MESSAGE(Experimental Code:) + +AC_MSG_CHECKING(if you do not want to assume colors are white-on-black) +AC_ARG_ENABLE(assumed-color, + [ --disable-assumed-color do not assume anything about default-colors], + [with_assumed_color=$enableval], + [with_assumed_color=yes]) +AC_MSG_RESULT($with_assumed_color) +test "x$with_assumed_color" = xyes && AC_DEFINE(USE_ASSUMED_COLOR,1,[Define to 1 to assume things about default-colors]) + +### use option --enable-hashmap to turn on use of hashmap scrolling logic +AC_MSG_CHECKING(if you want hashmap scrolling-optimization code) +AC_ARG_ENABLE(hashmap, + [ --disable-hashmap compile without hashmap scrolling-optimization], + [with_hashmap=$enableval], + [with_hashmap=yes]) +AC_MSG_RESULT($with_hashmap) +test "x$with_hashmap" = xyes && AC_DEFINE(USE_HASHMAP,1,[Define to 1 to compile with hashmap scrolling-optimization]) + +### use option --enable-colorfgbg to turn on use of $COLORFGBG environment +AC_MSG_CHECKING(if you want colorfgbg code) +AC_ARG_ENABLE(colorfgbg, + [ --enable-colorfgbg compile-in experimental $COLORFGBG code], + [with_colorfgbg=$enableval], + [with_colorfgbg=no]) +AC_MSG_RESULT($with_colorfgbg) +test "x$with_colorfgbg" = xyes && AC_DEFINE(USE_COLORFGBG,1,[Define to 1 to compile-in experimental $COLORFGBG code]) + +### use option --enable-fvisibility to turn on use of gcc-specific feature +AC_MSG_CHECKING(if you want to use gcc -fvisibility option) +AC_ARG_ENABLE(fvisibility, + [ --enable-fvisibility compile with -fvisibility=hidden], + [cf_with_fvisibility=$enableval], + [cf_with_fvisibility=no]) +AC_MSG_RESULT($cf_with_fvisibility) + +NCURSES_IMPEXP= +NCURSES_CXX_IMPEXP= +if test "x$cf_with_fvisibility" = xyes; then + CF_CHECK_FVISIBILITY($CC,CFLAGS,cf_cv_fvisibility_hidden) + if test "x$cf_cv_fvisibility_hidden" = xyes + then + CF_ADD_CFLAGS([-fvisibility=hidden]) + NCURSES_IMPEXP="__attribute__ ((visibility(\"default\")))" + fi + if test -n "$CXX" + then + AC_LANG_PUSH(C++) + CF_CHECK_FVISIBILITY($CXX,CXXFLAGS,cf_cv_fvisibility_hidden2) + if test "x$cf_cv_fvisibility_hidden2" = xyes + then + CF_ADD_CXXFLAGS([-fvisibility=hidden]) + NCURSES_CXX_IMPEXP="__attribute__ ((visibility(\"default\")))" + fi + AC_LANG_POP + fi +fi +AC_SUBST(NCURSES_IMPEXP) +AC_SUBST(NCURSES_CXX_IMPEXP) + +### use option --enable-interop to turn on use of bindings used for interop +AC_MSG_CHECKING(if you want interop bindings) +AC_ARG_ENABLE(interop, + [ --enable-interop compile-in interop bindings], + [with_exp_interop=$enableval], + [with_exp_interop=$cf_dft_interop]) +AC_MSG_RESULT($with_exp_interop) + +NCURSES_INTEROP_FUNCS=0 +test "x$with_exp_interop" = xyes && NCURSES_INTEROP_FUNCS=1 +AC_SUBST(NCURSES_INTEROP_FUNCS) + + +AC_MSG_CHECKING(if you want experimental safe-sprintf code) +AC_ARG_ENABLE(safe-sprintf, + [ --enable-safe-sprintf compile with experimental safe-sprintf code], + [with_safe_sprintf=$enableval], + [with_safe_sprintf=no]) +AC_MSG_RESULT($with_safe_sprintf) + +### 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 +AC_MSG_CHECKING(if you want to experiment without scrolling-hints code) +AC_ARG_ENABLE(scroll-hints, + [ --disable-scroll-hints compile without scroll-hints code], + [with_scroll_hints=$enableval], + [with_scroll_hints=yes]) +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 + +AC_MSG_CHECKING(if you want wgetch-events code) +AC_ARG_ENABLE(wgetch-events, + [ --enable-wgetch-events compile with wgetch-events code], + [with_wgetch_events=$enableval], + [with_wgetch_events=no]) +AC_MSG_RESULT($with_wgetch_events) +if test "x$with_wgetch_events" = xyes ; then + AC_DEFINE(NCURSES_WGETCH_EVENTS,1,[Define to 1 to compile with wgetch-events code]) + NCURSES_WGETCH_EVENTS=1 +else + NCURSES_WGETCH_EVENTS=0 +fi +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= + ;; +esac +AC_SUBST(EXP_WIN32_DRIVER) +AC_SUBST(INTERNALS_HDR) + +############################################################################### +CF_HELP_MESSAGE(Testing/development Options:) + +### use option --disable-echo to suppress full display compiling commands +CF_DISABLE_ECHO +if test "x$enable_echo" = xyes; then + ECHO_LINK= +else + ECHO_LINK='@ echo linking $@ ... ;' + test -n "$LIBTOOL" && LIBTOOL="$LIBTOOL --silent" + test -n "$LIBTOOL_CXX" && LIBTOOL_CXX="$LIBTOOL_CXX --silent" +fi +AC_SUBST(ECHO_LINK) + +# --disable-stripping is used for debugging +CF_INSTALL_OPTS + +# If we're avoiding relinking of shared libraries during install, that is to +# avoid modifying the build-tree. For the same reason, avoid doing ranlib if +# the install program has "-p" (for preserving timestamps). +cf_cv_do_reranlib=yes +if test "x$cf_cv_install_p" = xyes +then + if test "x$cf_cv_do_relink" != xyes + then + cf_cv_do_reranlib=no + INSTALL_OPT_P="-p" + INSTALL_LIB="$INSTALL_LIB $INSTALL_OPT_P" + fi +fi +AC_SUBST(INSTALL_OPT_P) + +### use option --enable-warnings to turn on all gcc warnings +CF_ENABLE_WARNINGS(Wno-unknown-pragmas Wswitch-enum,yes) + +if test "x$enable_warnings" = "xyes"; then + CF_ADD_ADAFLAGS(-gnatg) + if test "x$cf_with_cxx" = xyes ; then + CF_GXX_WARNINGS(Wno-unused) + fi +fi +CF_ENABLE_STRING_HACKS + +### use option --enable-assertions to turn on generation of assertion code +AC_MSG_CHECKING(if you want to enable runtime assertions) +AC_ARG_ENABLE(assertions, + [ --enable-assertions test: turn on generation of assertion code], + [with_assertions=$enableval], + [with_assertions=no]) +AC_MSG_RESULT($with_assertions) +if test -n "$GCC" +then + if test "$with_assertions" = no + then + CPPFLAGS="$CPPFLAGS -DNDEBUG" + else + CF_ADD_ADAFLAGS(-gnata) + fi +fi + +### use option --disable-leaks to suppress "permanent" leaks, for testing +CF_DISABLE_LEAKS +AC_DEFINE(HAVE_NC_ALLOC_H,1,[Define to 1 if we have nc_alloc.h header]) + +### use option --enable-expanded to generate certain macros as functions +AC_ARG_ENABLE(expanded, + [ --enable-expanded test: generate functions for certain macros], + [test "x$enableval" = xyes && AC_DEFINE(NCURSES_EXPANDED,1,[Define to 1 to generate functions for certain macros])]) + +### use option --disable-macros to suppress macros in favor of functions +AC_ARG_ENABLE(macros, + [ --disable-macros test: use functions rather than macros], + [test "$enableval" = no && AC_DEFINE(NCURSES_NOMACROS,1,[Define to 1 to use functions rather than macros])]) + +# Normally we only add trace() to the debug-library. Allow this to be +# extended to all models of the ncurses library: +cf_all_traces=no +case "$CFLAGS $CPPFLAGS" in +(*-DTRACE*) + cf_all_traces=yes + ;; +esac + +AC_MSG_CHECKING(whether to add trace feature to all models) +AC_ARG_WITH(trace, +[ --with-trace test: add trace() function to all models of ncurses], +[cf_with_trace=$withval], +[cf_with_trace=$cf_all_traces]) +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(HAVE__TRACEF,1,[Define to 1 if we have _tracef function]) +else + LIB_TRACING=DEBUG + ADA_TRACE=FALSE +fi + +AC_SUBST(ADA_TRACE) + +CF_DISABLE_GNAT_PROJECTS + +### Checks for libraries. +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*) + if test "x$with_exp_win32" = xyes ; then + CPPFLAGS="$CPPFLAGS -DWINVER=0x0600 -DWIN32_LEAN_AND_MEAN" + else + CPPFLAGS="$CPPFLAGS -DWINVER=0x0501 -DWIN32_LEAN_AND_MEAN" + fi + # Note: WINVER may be a problem with Windows 10 + ;; +(*) +AC_CHECK_FUNC(gettimeofday, + AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]),[ + +AC_CHECK_LIB(bsd, gettimeofday, + AC_DEFINE(HAVE_GETTIMEOFDAY,1,[Define to 1 if we have gettimeofday function]) + CF_ADD_LIB(bsd))])dnl CLIX: bzero, select, gettimeofday + ;; +esac + +CF_MATH_LIB(MATH_LIB,pow(sin(x),x)) +AC_SUBST(MATH_LIB) + +### Checks for header files. +AC_STDC_HEADERS +AC_HEADER_DIRENT +AC_HEADER_TIME +CF_REGEX + +dnl These are some other potentially nonportable headers. +AC_CHECK_HEADERS( \ +fcntl.h \ +getopt.h \ +limits.h \ +locale.h \ +math.h \ +poll.h \ +sys/ioctl.h \ +sys/param.h \ +sys/poll.h \ +sys/select.h \ +sys/time.h \ +sys/times.h \ +ttyent.h \ +unistd.h \ +wctype.h \ +) + +CF_GETOPT_HEADER + +CF_CHECK_ENVIRON(environ) +CF_CHECK_GETENV +if test "x$cf_cv_consistent_getenv" = xno && \ + test "x$cf_with_trace" = xyes +then + AC_MSG_WARN(The NCURSES_TRACE environment variable is not supported with this configuration) +fi + +CF_SYS_TIME_SELECT + +### checks for compiler characteristics +AC_LANG_C +AC_C_CONST +CF_C_INLINE(NCURSES_INLINE,1200) +CF_SIG_ATOMIC_T + +if test "$NCURSES_CHTYPE" = auto ; then + CF_TYPEOF_CHTYPE +else + cf_cv_typeof_chtype=$NCURSES_CHTYPE +fi +test "$cf_cv_typeof_chtype" = unsigned && cf_cv_typeof_chtype="" +AC_SUBST(cf_cv_typeof_chtype) + +CF_UNSIGNED_LITERALS +cf_cv_1UL="1" +test ".$cf_cv_unsigned_literals" = .yes && cf_cv_1UL="${cf_cv_1UL}U" +test ".$cf_cv_typeof_chtype" = .long && cf_cv_1UL="${cf_cv_1UL}L" +AC_SUBST(cf_cv_1UL) + +if test "$NCURSES_MMASK_T" = auto ; then + cf_cv_typeof_mmask_t=long +else + cf_cv_typeof_mmask_t=$NCURSES_MMASK_T +fi +test "$cf_cv_typeof_mmask_t" = unsigned && cf_cv_typeof_mmask_t="" +AC_SUBST(cf_cv_typeof_mmask_t) + +### Checks for external-data +CF_ERRNO +CF_LINK_DATAONLY + +### Checks for library functions. +AC_CHECK_FUNCS( \ +getcwd \ +getegid \ +geteuid \ +getopt \ +getttynam \ +issetugid \ +localeconv \ +poll \ +putenv \ +remove \ +select \ +setbuf \ +setbuffer \ +setenv \ +setfsuid \ +setvbuf \ +sigaction \ +sigvec \ +snprintf \ +strdup \ +strstr \ +sysconf \ +tcgetpgrp \ +times \ +tsearch \ +vsnprintf \ +) + +if test "x$ac_cv_func_getopt" = xno && \ + test "x$cf_with_progs$cf_with_tests" != xnono; then + AC_MSG_ERROR(getopt is required for building programs) +fi + +if test "x$with_safe_sprintf" = xyes +then + if test "x$ac_cv_func_vsnprintf" = xyes + then + AC_MSG_WARN(will use vsnprintf instead of safe-sprintf option) + else + AC_DEFINE(USE_SAFE_SPRINTF,1,[Define to 1 to compile with experimental safe-sprintf code]) + fi +fi + +if test "x$with_getcap" = "xyes" ; then + CF_CGETENT +fi + +CF_ISASCII +CF_STRUCT_SIGACTION +CF_FUNC_NANOSLEEP +CF_FUNC_TERMIOS +CF_FUNC_VSSCANF +CF_MKSTEMP + +# setup for prototype of fallback for vsscanf() +CF_SUBST_IF(["$cf_cv_func_vsscanf" = vsscanf], HAVE_VSSCANF, 1, 0) + +dnl FIXME (may need this) AC_SYS_RESTARTABLE_SYSCALLS +if test "x$cross_compiling" = xyes ; then + AC_MSG_WARN(cross compiling: assume setvbuf params not reversed) +else + AC_FUNC_SETVBUF_REVERSED +fi +AC_CHECK_TYPE(intptr_t, long) +AC_CHECK_TYPE(ssize_t, int) +CF_TYPE_SIGACTION +CF_SIZECHANGE +CF_FUNC_MEMMOVE +CF_FUNC_POLL +CF_VA_COPY +AC_FUNC_VFORK +CF_FOPEN_BIN_R + +# special check for test/ditto.c +CF_FUNC_OPENPTY +if test "$cf_cv_func_openpty" != no ; then + AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function]) + AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface]) + if test "x$cf_cv_lib_util" = xyes ; then + CF_ADD_LIB(util,TEST_LIBS) + fi +fi +AC_SUBST(TEST_LIBS) +AC_SUBST(TEST_LIBS2) + +if test "$with_hashed_db" != no ; then + AC_DEFINE(USE_HASHED_DB,1,[Define to 1 if we should build terminfo in hashed database]) + CF_HASHED_DB($with_hashed_db) +fi + +dnl We'll do our own -g libraries, unless the user's overridden via $CFLAGS +if test -z "$cf_user_CFLAGS" && test "$enable_leaks" = yes ; then + CF_STRIP_G_OPT(CFLAGS) + CF_STRIP_G_OPT(CXXFLAGS) +fi + +# Just in case, check if the C compiler has a bool type. +CF_BOOL_DECL(cf_cv_cc_bool_type) + +# Check for C++ compiler characteristics (and ensure that it's there!) +if test -n "$CXX" ; then + AC_LANG_CPLUSPLUS + CF_STDCPP_LIBRARY + CF_PROG_CC_C_O(CXX,[$CXXFLAGS $CPPFLAGS]) + + case "$GXX_VERSION" in + (1.*|2.[[0-6]]*|[[1-9]][[0-9]].*) + cf_cxx_library=yes + ;; + (*-2.7*|2.7*) + CF_GPP_LIBRARY + ;; + (*) + cf_cxx_library=no + ;; + esac + + AC_CHECK_HEADERS(typeinfo) + CF_CXX_IOSTREAM_NAMESPACE + CF_BOOL_DECL + CF_BOOL_SIZE + CF_ETIP_DEFINES + CF_CPP_PARAM_INIT + CF_CPP_STATIC_CAST + CF_CXX_AR_FLAGS +else + cf_cxx_library=no + cf_cv_builtin_bool=1 + + # 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 + # the C++ portion of this configuration as a shortcut (or just to avoid + # compiling the demo in the c++ directory). So we need a reasonable + # default for the 'bool' type. + # + # Caveat: since the storage of the bool type is not standardized, it + # may change. + + if test "$NCURSES_BOOL" != auto ; then + cf_cv_type_of_bool=$NCURSES_BOOL + cf_cv_header_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 + fi +fi +AC_SUBST(CXXLIBS) + +# If the C compiler did not declare bool, and we did not determine that the C++ +# compiler does not declare bool, turn on an ifdef in curses.h that makes the +# ncurses library use the same type as C++ bool. Note that this allows one to +# 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 +then + # oops: C has a bool. Unlikely, but C++ could differ. + USE_CXX_BOOL=0 +elif test "$cf_cv_builtin_bool" = 0 +then + # C++ has no bool + USE_CXX_BOOL=0 +else + # this is the normal case + USE_CXX_BOOL='defined(__cplusplus)' +fi +AC_SUBST(USE_CXX_BOOL) + +CF_HELP_MESSAGE(Ada Binding Options:) + +dnl If the Ada95 source-tree is present, add that to the build unless it will +dnl not work, or was not requested. +if test -f "${srcdir}/Ada95/Makefile.in" ; then + +dnl libtool does not know anything about GNAT, though a change made in 1998 +dnl provided for it "someday". Disable the ada subtree if we are using +dnl libtool -TD 20070714 + if test "$cf_with_ada" != "no" ; then + if test "$with_libtool" != "no"; then + AC_MSG_WARN(libtool does not support Ada - disabling feature) + cf_with_ada=no + fi + fi + +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 + + CF_GNATPREP_OPT_T + + CF_GNAT_GENERICS + CF_GNAT_SIGINT + CF_GNAT_PROJECTS + + CF_WITH_ADA_COMPILER + + cf_ada_package=terminal_interface + AC_SUBST(cf_ada_package) + + CF_WITH_ADA_INCLUDE + CF_WITH_ADA_OBJECTS + CF_WITH_ADA_SHAREDLIB + + # allow the Ada binding to be renamed + CF_WITH_ADA_LIBNAME(AdaCurses) + fi + fi +else + cf_with_ada=no +fi + +# do this "late" to avoid conflict with header-checks +if test "x$with_widec" = xyes ; then + AC_CHECK_SIZEOF(wchar_t) + # cross-compiling to mingw can run into the problem that attempting to + # link with the regex library fails, causing the test to not set this to + # a number. "recent" autoconf does not address this problem either -TD + if test -z "$ac_cv_sizeof_wchar_t" + then + CF_VERBOSE(test failed (assume 2)) + sed /SIZEOF_WCHAR_T/d confdefs.h >confdefs.tmp + mv confdefs.tmp confdefs.h + echo "#define SIZEOF_WCHAR_T 2" >>confdefs.h + fi +fi + +### Construct the ncurses library-subsets, if any, from this set of keywords: +### none, base, ext_funcs, ext_tinfo, ticlib, termlib, widechar +### +### ticlib modules may be a separate library, otherwise contained in termlib. +### termlib modules may be a separate library, otherwise contained in ncurses. +### +### The of "+" or " " between the tokens controls the way the script +### chooses to split module lists into libraries. +### +### (see CF_LIB_RULES). +AC_MSG_CHECKING(for library subsets) +LIB_SUBSETS= + +if test "x$cf_with_progs" = xyes || test "$with_ticlib" != no || test "$with_termcap" != no; then + LIB_SUBSETS="${LIB_SUBSETS}ticlib" + if test "$with_ticlib" != no ; then + LIB_SUBSETS="${LIB_SUBSETS} " + else + LIB_SUBSETS="${LIB_SUBSETS}+" + fi +fi + +LIB_SUBSETS="${LIB_SUBSETS}termlib" +test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_tinfo" + +if test "$with_termlib" != no ; then + LIB_SUBSETS="${LIB_SUBSETS} " +else + LIB_SUBSETS="${LIB_SUBSETS}+" +fi + +LIB_SUBSETS="${LIB_SUBSETS}base" + +# Most term-driver calls are to tinfo, but some like init_pair are to the +# base library (so it resides in base). +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 + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32" + else + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo+port_win32con" + fi + CPPFLAGS="$CPPFLAGS -DUSE_WIN32CON_DRIVER" + ;; + (*) + LIB_SUBSETS="${LIB_SUBSETS}+port_tinfo" + ;; + esac +elif test "x$with_exp_win32" = xyes ; then + case "$cf_cv_system_name" in + (*mingw32*|*mingw64*) + LIB_SUBSETS="${LIB_SUBSETS}+port_win32" + ;; + (*) + ;; + esac +fi + +test "x$with_widec" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+widechar" +test "x$with_ext_funcs" = xyes && LIB_SUBSETS="${LIB_SUBSETS}+ext_funcs" + +AC_MSG_RESULT($LIB_SUBSETS) + +### Construct the list of include-directories to be generated +CF_INCLUDE_DIRS +CF_ADA_INCLUDE_DIRS + +### Build up pieces for makefile rules +AC_MSG_CHECKING(default library suffix) +CF_LIB_TYPE($DFT_LWR_MODEL,DFT_ARG_SUFFIX)dnl +AC_SUBST(DFT_ARG_SUFFIX)dnl the string to append to "-lncurses" ("") +AC_MSG_RESULT($DFT_ARG_SUFFIX) + +AC_MSG_CHECKING(default library-dependency suffix) +CF_LIB_SUFFIX($DFT_LWR_MODEL,DFT_LIB_SUFFIX,DFT_DEP_SUFFIX)dnl +AC_SUBST(DFT_DEP_SUFFIX)dnl the corresponding library-suffix (".a") +AC_MSG_RESULT($DFT_DEP_SUFFIX) + +AC_MSG_CHECKING(default object directory) +CF_OBJ_SUBDIR($DFT_LWR_MODEL,DFT_OBJ_SUBDIR)dnl +AC_SUBST(DFT_OBJ_SUBDIR)dnl the default object-directory ("obj") +AC_MSG_RESULT($DFT_OBJ_SUBDIR) + +if test "x$cf_with_cxx" = xyes ; then +AC_MSG_CHECKING(c++ library-dependency suffix) +if test "$with_libtool" != "no"; then + # libtool thinks it can make c++ shared libraries (perhaps only g++) + CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX +elif test "$with_shared_cxx" != "no"; then + # also for g++ users... + CXX_LIB_SUFFIX=$DFT_DEP_SUFFIX +else + # we normally make a static library because C/C++ library rules differ + CF_LIB_SUFFIX(normal,CXX_LIB_SUFFIX,CXX_DEP_SUFFIX) +fi +AC_MSG_RESULT($CXX_LIB_SUFFIX) +AC_SUBST(CXX_LIB_SUFFIX) +fi + +# do not want -ldl in build except as needed for -lncurses dependency +if test "x$with_dlsym" = xyes ; then +if test "$DFT_LWR_MODEL" = shared || \ + test "$DFT_LWR_MODEL" = libtool ; then + CF_REMOVE_LIB(LIBS,$LIBS,dl) +fi +fi +### Set up low-level terminfo dependencies for makefiles. + +# TICS_LIST and TINFO_LIST are needed to build libtic.so and libterm.so, but +# do not need libdl +TICS_LIST= +if test "x$with_dlsym" = xyes ; then + CF_REMOVE_LIB(TINFO_LIST,$SHLIB_LIST,dl) +fi + +USE_ARG_SUFFIX="${DFT_ARG_SUFFIX}${EXTRA_SUFFIX}" +USE_LIB_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 + USE_CFG_SUFFIX="${USE_CFG_SUFFIX}${EXTRA_SUFFIX}" +fi +AC_SUBST(USE_ARG_SUFFIX) +AC_SUBST(USE_CFG_SUFFIX) +AC_SUBST(USE_LIB_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_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}" + else + 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}" + fi + TICS_LDFLAGS="-L${LIB_DIR}" + TICS_LIBS="-l${TICS_ARG_SUFFIX}" +else + TICS_SUFFIX=${DFT_LIB_SUFFIX} + TICS_LDFLAGS="-L${LIB_DIR}" + TICS_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}" +fi +AC_SUBST(TICS_ARG_SUFFIX) +AC_SUBST(TICS_DEP_SUFFIX) +AC_SUBST(TICS_LIB_SUFFIX) +AC_SUBST(TICS_LDFLAGS) +AC_SUBST(TICS_LIBS) + +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_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}" + else + 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}" + fi + + TEST_DEPS="${LIB_DIR}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" + TEST_DEP2="${LIB_2ND}/${LIB_PREFIX}${TINFO_DEP_SUFFIX}" + if test "$DFT_LWR_MODEL" = "libtool"; then + TEST_ARGS="${TEST_DEPS}" + TEST_ARG2="${TEST_DEP2}" + TINFO_LDFLAGS="-L${LIB_DIR}" + TINFO_LIBS="$TEST_ARGS" + TICS_LIST="$SHLIB_LIST $TEST_ARGS" + SHLIB_LIST="${SHLIB_LIST} $TEST_ARGS" + else + TEST_ARGS="-l${TINFO_ARG_SUFFIX}" + TEST_ARG2="-l${TINFO_ARG_SUFFIX}" + if test "x$with_term_driver" != xno ; then + TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}" + TICS_LIBS="$TICS_LIBS -l${LIB_NAME}${USE_ARG_SUFFIX}" + TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX} $TEST_ARGS" + else + TICS_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" + TINFO_LIBS="$TEST_ARGS" + fi + TINFO_LDFLAGS="-L${LIB_DIR}" + SHLIB_LIST="$SHLIB_LIST -l${TINFO_LIB_SUFFIX}" + fi +else + # the next lines are needed for linking libtic over libncurses + TINFO_NAME=${LIB_NAME} + TINFO_SUFFIX=${DFT_LIB_SUFFIX} + TINFO_ARG_SUFFIX=${LIB_NAME}${USE_ARG_SUFFIX} + if test "x$with_tic_depends" = xyes ; then + TICS_LIST="$SHLIB_LIST -l${LIB_NAME}${USE_ARG_SUFFIX}" + else + TICS_LIST="$SHLIB_LIST" + fi + + TINFO_LDFLAGS="-L${LIB_DIR}" + TINFO_LIBS="-l${LIB_NAME}${USE_ARG_SUFFIX}" +fi + +if test "$DFT_LWR_MODEL" = shared ; then + case "$cf_cv_system_name" in + (cygwin*|msys*) + # "lib" files have ".dll.a" suffix, "cyg"or "msys-" files have ".dll" + TINFO_SUFFIX=.dll + ;; + esac +fi + +AC_SUBST(TINFO_ARG_SUFFIX) +AC_SUBST(TINFO_DEP_SUFFIX) +AC_SUBST(TINFO_LIB_SUFFIX) +AC_SUBST(TINFO_LDFLAGS) +AC_SUBST(TINFO_LIBS) + +if test "x$with_dlsym" = xyes ; then + CF_REMOVE_LIB(TICS_LIST,$TICS_LIST,dl) +fi + +if test "$DFT_LWR_MODEL" = "libtool"; then + OBJEXT=lo +fi + +# needed for Ada95 +TINFO_LDFLAGS2=`echo "$TINFO_LDFLAGS" | sed -e 's,-L\.\./,-L../../,'` +AC_SUBST(TINFO_LDFLAGS2) + +case "$DFT_LWR_MODEL" in +(normal|debug|profile) + CF_LDFLAGS_STATIC + ;; +esac + +AC_MSG_CHECKING(where we will install curses.h) +AC_SUBST(includesubdir) +includesubdir= +if test "$with_overwrite" = no && \ + { test "x$includedir" = 'x${prefix}/include' || \ + test "x$includedir" = "x${prefix}/include"; } +then + includesubdir="/ncurses${USE_LIB_SUFFIX}" +fi +AC_MSG_RESULT(${includedir}${includesubdir}) + +### Resolve a conflict between normal and wide-curses by forcing applications +### that will need libutf8 to add it to their configure script. +if test "$with_overwrite" != no ; then +if test "$NCURSES_LIBUTF8" = 1 ; then + NCURSES_LIBUTF8='defined(HAVE_LIBUTF8_H)' + AC_MSG_WARN(Wide-character applications must define HAVE_LIBUTF8_H to include curses.h) +fi +fi +WITH_OVERWRITE=$with_overwrite + +### At least on MinGW a shared library build without libtool +### requires adding the additional libs to the link list. +case "$cf_cv_system_name" in +(*mingw32*|*mingw64*) + if test "$DFT_LWR_MODEL" != "libtool"; then + SHLIB_LIST="$SHLIB_LIST ${LIBS}" + fi + ;; +*) ;; +esac + +AC_SUBST(WITH_OVERWRITE) +AC_SUBST(TICS_LIST) +AC_SUBST(TINFO_LIST) +AC_SUBST(SHLIB_LIST) + +# used to separate tack out of the tree +NCURSES_TREE= +AC_SUBST(NCURSES_TREE) + +### predefined stuff for the test programs +AC_DEFINE(HAVE_SLK_COLOR,1,[Define to 1 if we have slk_color for test-programs]) + +# pkgsrc uses these +CF_WITH_LIB_BASENAME(FORM_NAME,form) +CF_WITH_LIB_BASENAME(MENU_NAME,menu) +CF_WITH_LIB_BASENAME(PANEL_NAME,panel) +CF_WITH_LIB_BASENAME(CXX_NAME,cxx,ncurses++) + +### Construct the list of subdirectories for which we'll customize makefiles +### with the appropriate compile-rules. + +CF_SRC_MODULES($modules_to_build) + +if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then + SUB_MAKEFILES="$SUB_MAKEFILES Ada95/src/library.gpr:Ada95/src/library.gpr.in" + SUB_MAKEFILES="$SUB_MAKEFILES Ada95/gen/adacurses${USE_CFG_SUFFIX}-config:Ada95/gen/adacurses-config.in" + SUB_MAKEFILES="$SUB_MAKEFILES man/adacurses${USE_CFG_SUFFIX}-config.1:man/MKada_config.in" +fi + +CF_DIRS_TO_MAKE + +# symbols that differ when compiling Ada95 by itself. +NCURSES_SHLIB2=$SHELL' $(top_srcdir)/misc/shlib' +AC_SUBST(NCURSES_SHLIB2) + +# values to use as strings +AC_DEFINE_UNQUOTED(NCURSES_PATHSEP,'$PATH_SEPARATOR',[Define to override ':' as library path-separator]) + +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$ac_cv_header_termios_h" = xyes], HAVE_TERMIOS_H, 1, 0) + +################################################################################ +test "x$use_database" = xyes && \ +SUB_MAKEFILES="$SUB_MAKEFILES misc/run_tic.sh:misc/run_tic.in" + +SUB_MAKEFILES="$SUB_MAKEFILES misc/ncurses-config:misc/ncurses-config.in" +SUB_MAKEFILES="$SUB_MAKEFILES man/ncurses${USE_CFG_SUFFIX}-config.1:man/MKncu_config.in" + +if test "x$enable_pc_files" = xyes && test -z "$MAKE_PC_FILES" ; then +SUB_MAKEFILES="$SUB_MAKEFILES misc/gen-pkgconfig:misc/gen-pkgconfig.in" +fi +AC_SUBST(cross_compiling) + +if test "x$cf_with_tests" != xno ; then + MAKE_TESTS= +else + MAKE_TESTS="#" +fi +AC_SUBST(MAKE_TESTS) + +ADAHTML_DIR=../../doc/html/ada +AC_SUBST(ADAHTML_DIR) + +# workaround for OS/2 (20151017) +case "$cf_cv_system_name" in +(os2*) + LIBTOOL_OPTS_CXX="-os2dllname ncurs++" + ;; +(*) + LIBTOOL_OPTS_CXX= + ;; +esac +AC_SUBST(LIBTOOL_OPTS_CXX) + +# workaround for g++ versus Solaris (20131116) +case "$cf_cv_system_name" in +(solaris2*) + case "x$CPPFLAGS" in + (*-D_XOPEN_SOURCE_EXTENDED*) + CF_VERBOSE(moving _XOPEN_SOURCE_EXTENDED to work around g++ problem) + CFLAGS="$CFLAGS -D_XOPEN_SOURCE_EXTENDED" + CPPFLAGS=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/-D_XOPEN_SOURCE_EXTENDED//'` + ;; + esac + ;; +esac + +# Help to automatically enable the extended curses features when using either +# the *-config or the ".pc" files by adding defines. +AC_MSG_CHECKING(for defines to add to ncurses${USE_CFG_SUFFIX}-config script) +PKG_CFLAGS= +for cf_loop1 in $CPPFLAGS_after_XOPEN +do + cf_found=no + for cf_loop2 in $CPPFLAGS_before_XOPEN + do + if test "x$cf_loop1" = "x$cf_loop2" + then + cf_found=yes + break + fi + done + test "$cf_found" = no && PKG_CFLAGS="$PKG_CFLAGS $cf_loop1" +done +AC_MSG_RESULT($PKG_CFLAGS) +AC_SUBST(PKG_CFLAGS) + +# AC_CHECK_SIZEOF demands a literal parameter, no variables. So we do this. +case "x$NCURSES_OSPEED" in +(*short*) + cf_compatible=1 + ;; +(*) + cf_compatible=0 + ;; +esac +AC_DEFINE_UNQUOTED(NCURSES_OSPEED_COMPAT,$cf_compatible,[Define to 1 if termcap variable ospeed is short]) + +case "x$cf_cv_typeof_chtype" in +(xshort|xint|xlong) + cf_cv_typeof_chtype="unsigned $cf_cv_typeof_chtype" + ;; +esac + +case "x$cf_cv_typeof_mmask_t" in +(xshort|xint|xlong) + cf_cv_typeof_mmask_t="unsigned $cf_cv_typeof_mmask_t" + ;; +esac + +# substitute into misc/Makefile to suppress +# (un)install.data from the +# (un)install rules. +if test "x$cf_with_db_install" = "xno"; then + MISC_INSTALL_DATA= + MISC_UNINSTALL_DATA= +else + MISC_INSTALL_DATA=install.data + MISC_UNINSTALL_DATA=uninstall.data +fi +AC_SUBST(MISC_INSTALL_DATA) +AC_SUBST(MISC_UNINSTALL_DATA) + +if test "x$cf_with_db_install" = "xno" || test "x$TERMINFO_SRC" = "xno"; then + MAKE_DATABASE="#" +else + MAKE_DATABASE="$MAKE_TERMINFO" +fi +AC_SUBST(MAKE_DATABASE) + +dnl Override the package used for exported symbols +if test -n "$PACKAGE" +then + PACKAGE="${PACKAGE}${DFT_ARG_SUFFIX}" + export PACKAGE + echo "package: $PACKAGE" +fi + +UNALTERED_SYMS= +cf_filter_syms=no + +if test -n "$RESULTING_SYMS" +then + cf_filter_syms=$cf_dft_filter_syms + CF_VERBOSE(will map symbols to ABI=$cf_cv_abi_version) +fi + +if test "x$WILDCARD_SYMS" = xno +then + cf_filter_syms=yes +fi + +test "x$cf_with_trace" = xyes && NCURSES_INLINE= + +UNALTERED_SYMS=`echo "$RESULTING_SYMS" | sed -e 's/\\$/\\\\$/g'` +if test "$cf_filter_syms" = yes +then + RESULTING_SYMS=resulting.map +fi +AC_SUBST(UNALTERED_SYMS) + +if test "x$cross_compiling" = xyes ; then + ADAGEN_LDFLAGS='$(CROSS_LDFLAGS)' + CHECK_BUILD="#" +else + ADAGEN_LDFLAGS='$(NATIVE_LDFLAGS)' + CHECK_BUILD= +fi +AC_SUBST(ADAGEN_LDFLAGS) +AC_SUBST(CHECK_BUILD) +AC_SUBST(PRIVATE_LIBS) + +# This is used for the *-config script and *.pc data files. +CF_LD_SEARCHPATH + +AC_DEFINE(HAVE_CURSES_DATA_BOOLNAMES,1,[definition needed for in-tree build of tack]) + +AC_OUTPUT( \ + include/MKterm.h.awk \ + include/curses.head:include/curses.h.in \ + include/ncurses_dll.h \ + include/termcap.h \ + include/unctrl.h \ + $SUB_MAKEFILES \ + Makefile,[ +if test "x$cf_with_tests" != xno ; then + CF_PRG_RULES(["$srcdir/test/mk-test.awk" INSTALL=no ECHO_LINK="$ECHO_LD"], test) +fi +CF_LIB_RULES($SRC_SUBDIRS) + +if test "x$cf_with_ada" = "xyes" && test "x$cf_cv_prog_gnat_correct" = "xyes"; then +if test -z "$USE_OLD_MAKERULES" ; then + $AWK -f "$srcdir/Ada95/mk-1st.awk" <"$srcdir/Ada95/src/modules" >>Ada95/src/Makefile +fi +fi +],[ +### Special initialization commands, used to pass information from the +### configuration-run into config.status + +ALTERNATE_SYMS="$ALTERNATE_SYMS" +AWK="$AWK" +CXX_NAME="$CXX_NAME" +DFT_ARG_SUFFIX="$DFT_ARG_SUFFIX" +DFT_LWR_MODEL="$DFT_LWR_MODEL" +ECHO_LD="$ECHO_LD" +EXTRA_SUFFIX="$EXTRA_SUFFIX" +FORM_NAME="$FORM_NAME" +LDCONFIG="$LDCONFIG" +LIBTOOL_VERSION="$LIBTOOL_VERSION" +LIB_NAME="$LIB_NAME" +LIB_PREFIX="$LIB_PREFIX" +LIB_SUBSETS="$LIB_SUBSETS" +LIB_SUFFIX="$LIB_SUFFIX" +LIB_TRACING="$LIB_TRACING" +LN_S="$LN_S" +MAKE_TERMINFO="$MAKE_TERMINFO" +MENU_NAME="$MENU_NAME" +NCURSES_MAJOR="$NCURSES_MAJOR" +NCURSES_MINOR="$NCURSES_MINOR" +NCURSES_OSPEED="$NCURSES_OSPEED" +NCURSES_PATCH="$NCURSES_PATCH" +PANEL_NAME="$PANEL_NAME" +SRC_SUBDIRS="$SRC_SUBDIRS" +TERMINFO="$TERMINFO" +TICS_ARG_SUFFIX="$TICS_ARG_SUFFIX" +TICS_LIB_SUFFIX="$TICS_LIB_SUFFIX" +TICS_NAME="$TICS_NAME" +TICS_SUFFIX="$TICS_SUFFIX" +TIC_PATH="$TIC_PATH" +TINFO_ARG_SUFFIX="$TINFO_ARG_SUFFIX" +TINFO_LIB_SUFFIX="$TINFO_LIB_SUFFIX" +TINFO_NAME="$TINFO_NAME" +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" +USE_OLD_MAKERULES="$USE_OLD_MAKERULES" +WILDCARD_SYMS="$WILDCARD_SYMS" +WITH_CURSES_H="$with_curses_h" +WITH_ECHO="${enable_echo:=yes}" +WITH_OVERWRITE="$with_overwrite" +cf_LIST_MODELS="$cf_list_models" +cf_cv_VERSION_GNATMAKE=$cf_cv_VERSION_GNATMAKE +cf_cv_VERSION_GPRBUILD=$cf_cv_VERSION_GPRBUILD +cf_cv_abi_version="$cf_cv_abi_version" +cf_cv_do_relink="$cf_cv_do_relink" +cf_cv_do_reranlib="$cf_cv_do_reranlib" +cf_cv_do_symlinks="$cf_cv_do_symlinks" +cf_cv_enable_lp64="$cf_cv_enable_lp64" +cf_cv_enable_opaque="$cf_cv_enable_opaque" +cf_cv_make_PHONY="$cf_cv_make_PHONY" +cf_cv_prog_CC_c_o=$cf_cv_prog_CC_c_o +cf_cv_prog_CXX_c_o=$cf_cv_prog_CXX_c_o +cf_cv_prog_gnat_correct=$cf_cv_prog_gnat_correct +cf_cv_rel_version="$cf_cv_rel_version" +cf_cv_rm_so_locs="$cf_cv_rm_so_locs" +cf_cv_shared_soname='$cf_cv_shared_soname' +cf_cv_shlib_version="$cf_cv_shlib_version" +cf_cv_shlib_version_infix="$cf_cv_shlib_version_infix" +cf_cv_system_name="$cf_cv_system_name" +cf_cv_term_driver="$with_term_driver" +cf_with_ada="$cf_with_ada" +cf_with_cxx_binding="$cf_with_cxx_binding" +cf_with_db_install="$cf_with_db_install" +cf_with_manpages="$cf_with_manpages" +cf_with_tests="$cf_with_tests" +host="$host" +target="$target" +with_shared_cxx="$with_shared_cxx" + +],cat)dnl +${MAKE:-make} preinstall diff --git a/deps/ncurses-5.9/dist.mk b/deps/ncurses-6.3/dist.mk similarity index 80% rename from deps/ncurses-5.9/dist.mk rename to deps/ncurses-6.3/dist.mk index 371f004..1af7c16 100644 --- a/deps/ncurses-5.9/dist.mk +++ b/deps/ncurses-6.3/dist.mk @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. # +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2017,2018 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: dist.mk,v 1.810 2011/04/04 22:42:20 tom Exp $ +# $Id: dist.mk,v 1.1444 2021/10/20 22:43:08 tom Exp $ # Makefile for creating ncurses distributions. # # This only needs to be used directly as a makefile by developers, but @@ -35,30 +36,34 @@ SHELL = /bin/sh # These define the major/minor/patch versions of ncurses. -NCURSES_MAJOR = 5 -NCURSES_MINOR = 9 -NCURSES_PATCH = 20110404 +NCURSES_MAJOR = 6 +NCURSES_MINOR = 3 +NCURSES_PATCH = 20211021 # We don't append the patch to the version, since this only applies to releases VERSION = $(NCURSES_MAJOR).$(NCURSES_MINOR) -# The most recent html files were generated with lynx 2.8.6, using ncurses -# configured with +WEBSITE = https://invisible-island.net +HOMEPAGE = $(WEBSITE)/ncurses + +# The most recent html files were generated with lynx 2.8.6 (or later), using +# ncurses configured with # --without-manpage-renames # on Debian/testing. The -scrollbar and -width options are used to make lynx # use 79 columns as it did in 2.8.5 and before. -DUMP = lynx -dump -scrollbar=0 -width=79 +DUMP = lynx -dump -scrollbar=0 -width=79 -display_charset=US-ASCII DUMP2 = $(DUMP) -nolist -GNATHTML= `type -p gnathtml || type -p gnathtml.pl` +# gcc's file is "gnathtml.pl" +GNATHTML= gnathtml -# man2html 3.0.1 is a Perl script which assumes that pages are fixed size. +# man2html is a Perl script which assumes that pages are fixed size. # Not all man programs agree with this assumption; some use half-spacing, which # has the effect of lengthening the text portion of the page -- so man2html # would remove some text. The man program on Redhat 6.1 appears to work with # man2html if we set the top/bottom margins to 6 (the default is 7). Newer # versions of 'man' leave no margin (and make it harder to sync with pages). -MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html' +MAN2HTML= man2html -botm=0 -topm=0 -cgiurl '$$title.$$section$$subsection.html' -index ALL = ANNOUNCE doc/html/announce.html doc/ncurses-intro.doc doc/hackguide.doc manhtml adahtml @@ -72,22 +77,19 @@ distclean: # Don't mess with announce.html.in unless you have lynx available! doc/html/announce.html: announce.html.in - sed 's,@VERSION@,$(VERSION),' $@ + sed \ + -e 's,@VERSION@,$(VERSION),g' \ + -e 's,@WEBSITE@,$(WEBSITE),g' \ + -e 's,@HOMEPAGE@,$(HOMEPAGE),g' $@ ANNOUNCE : doc/html/announce.html - $(DUMP) doc/html/announce.html > $@ + $(DUMP2) doc/html/announce.html > $@ doc/ncurses-intro.doc: doc/html/ncurses-intro.html $(DUMP2) doc/html/ncurses-intro.html > $@ doc/hackguide.doc: doc/html/hackguide.html $(DUMP2) doc/html/hackguide.html > $@ -# This is the original command: -# MANPROG = tbl | nroff -man -# -# This happens to work for groff 1.18.1 on Debian. At some point groff's -# maintainer changed the line-length (we do not want/need that here). -# # The distributed html files are formatted using # configure --without-manpage-renames # @@ -95,10 +97,16 @@ doc/hackguide.doc: doc/html/hackguide.html # 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 -rLL=65n -rLT=71n -Tascii +MANPROG = tbl | nroff -mandoc -rHY=0 -rLL=78n -rLT=78n -Tascii manhtml: - @rm -f doc/html/man/*.html + @for f in doc/html/man/*.html; do \ + test -f $$f || continue; \ + case $$f in \ + */index.html) ;; \ + *) rm -f $$f ;; \ + esac; \ + done @mkdir -p doc/html/man @rm -f subst.tmp ; @for f in man/*.[0-9]*; do \ @@ -117,7 +125,7 @@ manhtml: @echo 's/<\/I>/<\/EM>/g' >> subst.tmp @misc/csort < subst.tmp | uniq > subst.sed @echo '/<\/TITLE>/a\' >> subst.sed - @echo '\' >> subst.sed + @echo '\' >> subst.sed @echo '' >> subst.sed @rm -f subst.tmp @for f in man/*.[0-9]* ; do \ @@ -126,8 +134,7 @@ manhtml: g=$${m}.html ;\ if [ -f doc/html/$$g ]; then chmod +w doc/html/$$g; fi;\ echo "Converting $$m to HTML" ;\ - echo '' > doc/html/man/$$g ;\ - echo '' >> doc/html/man/$$g ;\ - ./edit_man.sh normal editing /usr/man man $$f | $(MANPROG) | tr '\255' '-' | $(MAN2HTML) -title "$$T" | \ - sed -f subst.sed |\ - sed -e 's/"curses.3x.html"/"ncurses.3x.html"/g' \ + ./edit_man.sh normal editing /usr/man man $$f | \ + $(MANPROG) | \ + tr '\255' '-' | \ + $(MAN2HTML) \ + -title "$$T" \ + -aliases man/manhtml.aliases \ + -externs man/manhtml.externs | \ + sed -f subst.sed |\ + sed -e 's/"curses.3x.html"/"ncurses.3x.html"/g' \ >> doc/html/man/$$g ;\ done @rm -f subst.sed @@ -149,7 +162,7 @@ manhtml: # .ali files contain cross referencing information required by gnathtml. adahtml: if [ ! -z "$(GNATHTML)" ]; then \ - (cd ./Ada95/gen ; make html) ;\ + (cd ./Ada95/gen ; make html GNATHTML=$(GNATHTML) ) ;\ fi # This only works on a clean source tree, of course. diff --git a/deps/ncurses-5.9/doc/hackguide.doc b/deps/ncurses-6.3/doc/hackguide.doc similarity index 83% rename from deps/ncurses-5.9/doc/hackguide.doc rename to deps/ncurses-6.3/doc/hackguide.doc index 8e0ba5c..1bafad2 100644 --- a/deps/ncurses-5.9/doc/hackguide.doc +++ b/deps/ncurses-6.3/doc/hackguide.doc @@ -111,7 +111,7 @@ How to Design Extensions Our conventions are simple: 1. Maintain package-internal files in plain text. The expected viewer - for them more(1) or an editor window; there's no point in + for them more(1) or an editor window; there is no point in elaborate mark-up. 2. Mark up manual pages in the man macros. These have to be viewable through traditional man(1) programs. @@ -120,10 +120,10 @@ How to Design Extensions When in doubt, HTMLize a master and use lynx(1) to generate plain ASCII (as we do for the announcement document). - The reason for choosing HTML is that it's (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 don't have a viewer; - and (c) carries enough information that you can generate a + 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. @@ -135,16 +135,16 @@ How to Design Extensions subscribe @ The ncurses code is maintained by a small group of volunteers. While - we try our best to fix bugs promptly, we simply don't have a lot of + 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 ncurses, there are some steps you can take before contacting us that will help get the bug fixed quickly. In order to use our bug-fixing time efficiently, we put people who - show us they've taken these steps at the head of our queue. This means - that if you don't, you'll probably end up at the tail end and have to - wait a while. + 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. 1. Develop a recipe to reproduce the bug. 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 @@ -155,17 +155,17 @@ How to Design Extensions 2. Try to reproduce the bug on a different terminal type. 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're using a traditional - asynchronous terminal or PC-based terminal emulator, rather than - xterm or a UNIX console entry. - It's therefore extremely helpful if you can tell us whether or not - your problem reproduces on other terminal types. Usually you'll - have both a console type and xterm available; please tell us + 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. + 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. 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've seen are either triggered or masked by these. + of the bugs we have seen are either triggered or masked by these. 3. Generate and examine a trace file for the broken behavior. Recompile your program with the debugging versions of the libraries. Insert a trace() call with the argument set to @@ -178,35 +178,35 @@ How to Design Extensions 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. - If the virtual-screen dumps look correct but the bug persists, - it's possible to crank up the trace level to give more and more + 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. - Often you'll find terminfo problems at this stage by noticing that - the escape sequences put out for various capabilities are wrong. - If not, you're likely to learn enough to be able to characterize - any bug in the screen-update logic quite exactly. + 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. 4. Report details and symptoms, not just interpretations. - If you do the preceding two steps, it is very likely that you'll + 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 can't + good karma for the first time you run into a bug you really cannot characterize and fix yourself. - If you're still stuck, at least you'll know what to tell us. + 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. If your bug produces a bad update, include a trace file. Try to make the trace at the least voluminous level that pins down the - bug. Logs that have been through tracemunch are OK, it doesn't - throw away any information (actually they're better than - un-munched ones because they're easier to read). + 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). If your bug produces a core-dump, please include a symbolic stack trace generated by gdb(1) or your local equivalent. - Tell us about every terminal on which you've reproduced the bug -- - and every terminal on which you can't. Ideally, sent us terminfo - sources for all of these (yours might differ from ours). + 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). Include your ncurses version and your OS/machine type, of course! You can find your ncurses version in the curses.h file. @@ -219,8 +219,8 @@ How to Design Extensions The most important of these is mvcur, 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've got a - bad capability identified, you can disable it and test again. The + 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. If you think the vertical-scroll optimization is broken, or just want @@ -290,8 +290,9 @@ Library Overview lib_mouse.c lib_mvcur.c lib_refresh.c lib_setup.c lib_vidattr.c Most of the algorithmic complexity in the library lives in these - files. If there is a real bug in ncurses itself, it's probably here. - We'll tour some of these files in detail below (see The Engine Room). + files. If there is a real bug in ncurses itself, it is probably here. + We will tour some of these files in detail below (see The Engine + Room). Finally, there is a group of files that is actually most of the terminfo compiler. The reason this code lives in the ncurses library @@ -300,7 +301,7 @@ Library Overview 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 - We'll discuss these in the compiler tour. + We will discuss these in the compiler tour. The Engine Room @@ -323,8 +324,9 @@ The Engine Room Hackers bruised by previous encounters with variant select(2) calls may find the code in lib_twait.c interesting. It deals with the - problem that some BSD selects don't return a reliable time-left value. - The function timed_wait() effectively simulates a System V select. + problem that some BSD selects do not return a reliable time-left + value. The function timed_wait() effectively simulates a System V + select. Mouse Events @@ -341,19 +343,19 @@ The Engine Room to imply having the prefix somewhere in the function-key capabilities at terminal-type initialization. - This kluge only works because kmous isn't actually used by any + This kluge only works because kmous is not actually used by any historic terminal type or curses implementation we know of. Best guess - is it's a relic of some forgotten experiment in-house at Bell Labs - that didn't leave any traces in the publicly-distributed System V + 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. Here are some more details about mouse event handling: - The lib_mouse()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. + The lib_mouse() 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. 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: @@ -380,24 +382,23 @@ The Engine Room The brains of this operation are the modules hashmap.c, hardscroll.c and lib_doupdate.c; the latter two use lib_mvcur.c. Essentially, what happens looks like this: - - The hashmap.c 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. - - The hardscroll.c module computes an optimum set of scroll, insertion, - and deletion operations to make the indices match. It calls - _nc_mvcur_scrolln() in lib_mvcur.c to do those motions. - - Then lib_doupdate.c goes to work. Its job is to do line-by-line - transformations of curscr lines to newscr lines. Its main tool is the - routine mvcur() in lib_mvcur.c. This routine does cursor-movement - optimization, attempting to get from given screen location A to given - location B in the fewest output characters possible. + * The hashmap.c 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. + * The hardscroll.c module computes an optimum set of scroll, + insertion, and deletion operations to make the indices match. It + calls _nc_mvcur_scrolln() in lib_mvcur.c to do those motions. + * Then lib_doupdate.c goes to work. Its job is to do line-by-line + transformations of curscr lines to newscr lines. Its main tool is + the routine mvcur() in lib_mvcur.c. This routine does + cursor-movement optimization, attempting to get from given screen + location A to given location B in the fewest output characters + possible. If you want to work on screen optimizations, you should use the fact that (in the trace-enabled version of the library) enabling the @@ -419,7 +420,7 @@ The Engine Room TYPE_REGEXP will recognize. The configuration code prefers the POSIX regex facility, modeled on - System V's, but will settle for BSD regexps if the former isn't + System V's, but will settle for BSD regexps if the former is not available. Historical note: the panels code was written primarily to assist in @@ -437,7 +438,7 @@ The Engine Room The implementation therefore starts with a table-driven, dual-mode lexical analyzer (in comp_scan.c). The lexer chooses its mode (termcap - or terminfo) based on the first `,' or `:' it finds in each entry. The + 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". @@ -460,23 +461,23 @@ Translation of Non-use Capabilities shareable text space). Thus, adding a new capability is usually pretty trivial, just a matter - of adding one line to the include/Caps file. We'll have more to say + of adding one line to the include/Caps file. We will have more to say about this in the section on Source-Form Translation. Use Capability Resolution - The background problem that makes tic tricky isn't the capability - translation itself, it's the resolution of use capabilities. Older + The background problem that makes tic tricky is not the capability + translation itself, it is the resolution of use capabilities. Older versions would not handle forward use 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. - This won't do for ncurses. The problem is that that the whole + This will not do for ncurses. The problem is that that the whole compilation process has to be embeddable in the ncurses library so that it can be called by the startup code to translate termcap entries - on the fly. The embedded version can't go promiscuously writing + 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. @@ -485,7 +486,7 @@ Use Capability Resolution use 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're written out easy to do. + collisions before they are written out easy to do. And this is exactly how the embedded version works. But the stand-alone user-accessible version of tic partly reverts to the @@ -502,8 +503,8 @@ Use Capability Resolution 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's OK; the resolution code - will fetch it off disk when it can't find it in core. + entry that got written immediately, that is OK; the resolution code + will fetch it off disk when it cannot find it in core. Name collisions will still be detected, just not as cleanly. The write_entry() code complains before overwriting an entry that @@ -525,9 +526,9 @@ Source-Form Translation The include/Caps file has a header comment describing ways you can specify source translations for nonstandard capabilities just by - altering the master table. It's possible to set up capability aliasing - or tell the compiler to plain ignore a given capability without - writing any C code at all. + 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. For circumstances where you need to do algorithmic translation, there are functions in parse_entry.c called after the parse of each entry @@ -563,14 +564,14 @@ Source-Form Translation Look for the string FIXME in source files to tag minor bugs and potential problems that could use fixing. - Don't try to auto-detect OS features in the main body of the C code. - That's the job of the configuration system. + Do not try to auto-detect OS features in the main body of the C code. + That is the job of the configuration system. To hold down complexity, do make your code data-driven. Especially, if you can drive logic from a table filtered out of include/Caps, do it. If you find you need to augment the data in that file in order to - generate the proper table, that's still preferable to ad-hoc code -- - that's why the fifth field (flags) is there. + generate the proper table, that is still preferable to ad-hoc code -- + that is why the fifth field (flags) is there. Have fun! @@ -579,7 +580,7 @@ Source-Form Translation The following notes are intended to be a first step towards DOS and Macintosh ports of the ncurses libraries. - The following library modules are `pure curses'; they operate only on + The following library modules are "pure curses"; they operate only on the curses internal structures, do all output through other curses calls (not including tputs() and putp()) and do not call any other UNIX routines such as signal(2) or the stdio library. Thus, they @@ -626,7 +627,7 @@ Source-Form Translation Modules that would have to be modified for a port start here: - The following modules are `pure curses' but contain assumptions + The following modules are "pure curses" but contain assumptions inappropriate for a memory-mapped port. lib_longname.c diff --git a/deps/ncurses-6.3/doc/html/Ada95.html b/deps/ncurses-6.3/doc/html/Ada95.html new file mode 100644 index 0000000..8154c3e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/Ada95.html @@ -0,0 +1,344 @@ + + + + + + + + Ada95 Binding for ncurses + + + + + +

Ada95 Binding for ncurses

+ +

by Jürgen Pfeifer.

+
+ +

General Remarks

+ +
    +
  • This document describes Version 01.00 of the binding.
  • + +
  • The functionality is modeled to be compatible with the + ncurses package, a clone of the SVr4 curses model.
    + I did the development on an Intel box running the latest stable + release of Linux, ncurses + and the most recent released GNU + Ada Translator gnat versions. For any older versions of + ncurses and gnat it is not guaranteed to work.
  • + +
  • You must have the m4 macroprocessor to build this package. + If you don't have this program, you can get the FSF version + here.
  • + +
  • Ada programs are supposed to be readable. One of my + favorite methods to make code readable is to use expressive + names for the identifiers. You can find a list of a mapping of + the cryptic curses names to the Ada names in this table.
  • + +
  • This is not a typical one-to-one interface mapping. It is + close to one-to-one on the functional level. Each (n)curses + function has its counterpart with a more or less similar + formal parameter list in the binding. It is not one-to-one with + respect to the datatypes. I tried to make records out of the + flat chtype and similar structures, so you don't have to do bit + operations to mark an attributed character as bold. Just make + the boolean member bold of the record true. + The binding also hides the structures like WINDOW, PANEL, MENU, + FORM etc. ! It is a pure functional API.
  • + +
  • I try to do as much error checking as possible and feasible + in the binding. I will raise an Ada exception when something + went wrong in the low-level curses. This has the effect that - + at least first time in my life - (n)curses programs have now a + very rigid error checking, but - thanks to Ada - you don't have + to code the orgiastic error checking style of C.
  • + +
  • Support for wide characters is currently not in the + binding, as it is not really in ncurses at this point in + time.
  • +
+ +

Limitations

+ +
    +
  • I provide no SCREEN datatype and functions to set a new + screen. If you need this (mostly for debugging I guess), write + a small C routine doing all this and import it into your Ada + program.
  • + +
  • I provide no functions to switch on/off curses tracing + options. Same suggestion as above.
  • + +
  • Although Ada95 is an OO Language, this binding doesn't + provide an OO abstraction of the (n)curses functionality. As + mentioned above it is a thin binding for the (n)curses + functions. But without any doubt it would be nice to build on + top of this an OO abstraction of (n)curses functionality.
    + The only exception is the method how fieldtypes are represented + in this Binding. We provide an abstract tagged type Field_Type + from which the various fieldtypes are derived.
  • + +
  • I currently do not support the link_fieldtype functionality + of the forms subsystem.
  • + +
  • The *_IO packages are currently output only.
  • +
+ +

Hierarchy of packages

+ + + +

If you want to navigate through the html pages of the package + specs, click here.

+ +

Implementation Details

+ +

Behind the abstraction

+ +

All the new types like Window, + Panel, Menu, + Form etc. are just opaque representations of the + pointers to the corresponding low level (n)curses structures like + WINDOW *, PANEL *, MENU + * or FORM *. So you can safely pass + them to C routines that expect a pointer to one of those + structures.

+ +

Extended ripoffline() usage

+ +

The official documentation of (n)curses says, that the line + parameter determines only whether or not exactly + one line is stolen from the top or bottom of the + screen. So essentially only the sign of the parameter is + evaluated. ncurses has internally implemented it in a way, that + uses the line parameter also to control the amount of lines to + steal. This mechanism is used in the + Rip_Off_Lines routine of the binding.

+ +

How user defined field + types work

+ +

TBD

+ +

Enumeration fields handling

+ +

The (n)curses documentation says, that the String arrays to be + passed to an TYPE_ENUM fieldtype must not be automatic variables. + This is not true in this binding, because it is internally + arranged to safely copy these values.

+ +

Using other Ada + compilers

+ +

This should basically not be a problem.

+ +

Port to other curses implementations

+ +

Basically it should not be too hard to make all this run on a + regular SVr4 implementation of curses. The problems are probably + these:

+ +
    +
  • ncurses has some additional features which are presented in + this binding. You have two choices to deal with this: + +
      +
    • Emulate the feature in this binding
    • + +
    • Raise an exception for non implemented features
    • +
    + +

    Most likely you will follow a mixed approach. Some + features are easy to simulate, others will be hard if not + impossible.

    +
  • +
+ +

I'm quite sure I forgot something.

+ + diff --git a/deps/ncurses-6.3/doc/html/NCURSES-Programming-HOWTO.html b/deps/ncurses-6.3/doc/html/NCURSES-Programming-HOWTO.html new file mode 100644 index 0000000..e973c9e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/NCURSES-Programming-HOWTO.html @@ -0,0 +1,7415 @@ + + + + + + + NCURSES Programming HOWTO + + + + +
+
+

NCURSES + Programming HOWTO

+ +

Pradeep + Padala

+ +
+ +
+ +

v1.9, 2005-06-20

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Revision + History
Revision 1.92005-06-20Revised by: ppadala
The license has been + changed to the MIT-style license used by NCURSES. Note + that the programs are also re-licensed under this.
Revision 1.82005-06-17Revised by: ppadala
Lots of updates. Added + references and perl examples. Changes to examples. Many + grammatical and stylistic changes to the content. + Changes to NCURSES history.
Revision 1.7.12002-06-25Revised by: ppadala
Added a README file for + building and instructions for building from + source.
Revision 1.72002-06-25Revised by: ppadala
Added "Other formats" + section and made a lot of fancy changes to the + programs. Inlining of programs is gone.
Revision 1.6.12002-02-24Revised by: ppadala
Removed the old Changelog + section, cleaned the makefiles
Revision 1.62002-02-16Revised by: ppadala
Corrected a lot of + spelling mistakes, added ACS variables section
Revision 1.52002-01-05Revised by: ppadala
Changed structure to + present proper TOC
Revision 1.3.12001-07-26Revised by: ppadala
Corrected maintainers + paragraph, Corrected stable release number
Revision 1.32001-07-24Revised by: ppadala
Added copyright notices to + main document (LDP license) and programs (GPL), + Corrected printw_example.
Revision 1.22001-06-05Revised by: ppadala
Incorporated ravi's + changes. Mainly to introduction, menu, form, justforfun + sections
Revision 1.12001-05-22Revised by: ppadala
Added "a word about + window" section, Added scanw_example.
+
+ +
+
+ + +

This + document is intended to be an "All in One" guide for + programming with ncurses and its sister libraries. We + graduate from a simple "Hello World" program to more + complex form manipulation. No prior experience in ncurses + is assumed. Send comments to this + address

+
+
+
+
+ +
+
+
Table of Contents
+ +
1. Introduction
+ +
+
+
1.1. What is NCURSES?
+ +
1.2. What we can do with + NCURSES
+ +
1.3. Where to get + it
+ +
1.4. Purpose/Scope of the + document
+ +
1.5. About the + Programs
+ +
1.6. Other Formats of the + document
+ +
+
+
1.6.1. Readily available + formats from tldp.org
+ +
1.6.2. Building from + source
+
+
+ +
1.7. Credits
+ +
1.8. Wish List
+ +
1.9. Copyright
+
+
+ +
2. Hello World !!!
+ +
+
+
2.1. Compiling With the + NCURSES Library
+ +
2.2. Dissection
+ +
+
+
2.2.1. About + initscr()
+ +
2.2.2. The mysterious + refresh()
+ +
2.2.3. About + endwin()
+
+
+
+
+ +
3. The Gory Details
+ +
4. Initialization
+ +
+
+
4.1. Initialization + functions
+ +
4.2. raw() and + cbreak()
+ +
4.3. echo() and + noecho()
+ +
4.4. keypad()
+ +
4.5. halfdelay()
+ +
4.6. Miscellaneous + Initialization functions
+ +
4.7. An Example
+
+
+ +
5. A Word about + Windows
+ +
6. Output functions
+ +
+
+
6.1. addch() class of + functions
+ +
6.2. mvaddch(), waddch() and + mvwaddch()
+ +
6.3. printw() class of + functions
+ +
+
+
6.3.1. printw() and + mvprintw
+ +
6.3.2. wprintw() + and mvwprintw
+ +
6.3.3. vw_printw()
+ +
6.3.4. A Simple + printw example
+
+
+ +
6.4. addstr() class of + functions
+ +
6.5. A word of caution
+
+
+ +
7. Input functions
+ +
+
+
7.1. getch() class of + functions
+ +
7.2. scanw() class of + functions
+ +
+
+
7.2.1. scanw() and + mvscanw
+ +
7.2.2. wscanw() and + mvwscanw()
+ +
7.2.3. vw_scanw()
+
+
+ +
7.3. getstr() class of + functions
+ +
7.4. Some examples
+
+
+ +
8. Attributes
+ +
+
+
8.1. The details
+ +
8.2. attron() vs + attrset()
+ +
8.3. attr_get()
+ +
8.4. attr_ functions
+ +
8.5. wattr functions
+ +
8.6. chgat() functions
+
+
+ +
9. Windows
+ +
+
+
9.1. The basics
+ +
9.2. Let there be a Window + !!!
+ +
9.3. Explanation
+ +
9.4. The other stuff in the + example
+ +
9.5. Other Border + functions
+
+
+ +
10. Colors
+ +
+
+
10.1. The basics
+ +
10.2. Changing Color + Definitions
+ +
10.3. Color + Content
+
+
+ +
11. Interfacing with the key + board
+ +
+
+
11.1. The Basics
+ +
11.2. A Simple Key Usage + example
+
+
+ +
12. Interfacing with the + mouse
+ +
+
+
12.1. The Basics
+ +
12.2. Getting the + events
+ +
12.3. Putting it all + Together
+ +
12.4. Miscellaneous + Functions
+
+
+ +
13. Screen Manipulation
+ +
+
+
13.1. getyx() functions
+ +
13.2. Screen Dumping
+ +
13.3. Window Dumping
+
+
+ +
14. Miscellaneous features
+ +
+
+
14.1. curs_set()
+ +
14.2. Temporarily Leaving + Curses mode
+ +
14.3. ACS_ variables
+
+
+ +
15. Other libraries
+ +
16. Panel Library
+ +
+
+
16.1. The Basics
+ +
16.2. Compiling With the + Panels Library
+ +
16.3. Panel Window + Browsing
+ +
16.4. Using User + Pointers
+ +
16.5. Moving and + Resizing Panels
+ +
16.6. Hiding and Showing + Panels
+ +
16.7. panel_above() and + panel_below() Functions
+
+
+ +
17. Menus Library
+ +
+
+
17.1. The Basics
+ +
17.2. Compiling With the + Menu Library
+ +
17.3. Menu Driver: The work + horse of the menu system
+ +
17.4. Menu Windows
+ +
17.5. Scrolling + Menus
+ +
17.6. Multi Columnar + Menus
+ +
17.7. Multi Valued + Menus
+ +
17.8. Menu Options
+ +
17.9. The useful User + Pointer
+
+
+ +
18. Forms Library
+ +
+
+
18.1. The Basics
+ +
18.2. Compiling With the + Forms Library
+ +
18.3. Playing with + Fields
+ +
+
+
18.3.1. Fetching Size and + Location of Field
+ +
18.3.2. Moving the + field
+ +
18.3.3. Field + Justification
+ +
18.3.4. Field + Display Attributes
+ +
18.3.5. Field Option + Bits
+ +
18.3.6. Field + Status
+ +
18.3.7. Field User + Pointer
+ +
18.3.8. Variable-Sized + Fields
+
+
+ +
18.4. Form Windows
+ +
18.5. Field + Validation
+ +
18.6. Form Driver: The work + horse of the forms system
+ +
+
+
18.6.1. Page Navigation + Requests
+ +
18.6.2. Inter-Field + Navigation Requests
+ +
18.6.3. Intra-Field + Navigation Requests
+ +
18.6.4. Scrolling + Requests
+ +
18.6.5. Editing + Requests
+ +
18.6.6. Order + Requests
+ +
18.6.7. Application + Commands
+
+
+
+
+ +
19. Tools and Widget + Libraries
+ +
+
+
19.1. CDK (Curses Development + Kit)
+ +
+
+
19.1.1. Widget + List
+ +
19.1.2. Some Attractive + Features
+ +
19.1.3. Conclusion
+
+
+ +
19.2. The dialog
+ +
19.3. Perl Curses Modules + CURSES::FORM and CURSES::WIDGETS
+
+
+ +
20. Just For Fun !!!
+ +
+
+
20.1. The Game of + Life
+ +
20.2. Magic Square
+ +
20.3. Towers of Hanoi
+ +
20.4. Queens Puzzle
+ +
20.5. Shuffle
+ +
20.6. Typing Tutor
+
+
+ +
21. References
+
+
+ +
+

1. + Introduction

+ +

In the olden days of teletype terminals, terminals were + away from computers and were connected to them through serial + cables. The terminals could be configured by sending a series + of bytes. All the capabilities (such as moving the cursor to + a new location, erasing part of the screen, scrolling the + screen, changing modes etc.) of terminals could be accessed + through these series of bytes. These control seeuqnces are + usually called escape sequences, because they start with an + escape(0x1B) character. Even today, with proper emulation, we + can send escape sequences to the emulator and achieve the + same effect on a terminal window.

+ +

Suppose you wanted to print a line in color. Try typing + this on your console.

+
+echo "^[[0;31;40mIn Color"
+
+ +

The first character is an escape character, which looks + like two characters ^ and [. To be able to print it, you have + to press CTRL+V and then the ESC key. All the others are + normal printable characters. You should be able to see the + string "In Color" in red. It stays that way and to revert + back to the original mode type this.

+
+echo "^[[0;37;40m"
+
+ +

Now, what do these magic characters mean? Difficult to + comprehend? They might even be different for different + terminals. So the designers of UNIX invented a mechanism + named termcap. It is a file that + lists all the capabilities of a particular terminal, along + with the escape sequences needed to achieve a particular + effect. In the later years, this was replaced by terminfo. Without delving too much into + details, this mechanism allows application programs to query + the terminfo database and obtain the control characters to be + sent to a terminal or terminal emulator.

+ +
+
+ +

1.1. What is + NCURSES?

+ +

You might be wondering, what the import of all this + technical gibberish is. In the above scenario, every + application program is supposed to query the terminfo and + perform the necessary stuff (sending control characters + etc.). It soon became difficult to manage this complexity + and this gave birth to 'CURSES'. Curses is a pun on the + name "cursor optimization". The Curses library forms a + wrapper over working with raw terminal codes, and provides + highly flexible and efficient API (Application Programming + Interface). It provides functions to move the cursor, + create windows, produce colors, play with mouse etc. The + application programs need not worry about the underlying + terminal capabilities.

+ +

So what is NCURSES? NCURSES is a clone of the original + System V Release 4.0 (SVr4) curses. It is a freely + distributable library, fully compatible with older version + of curses. In short, it is a library of functions that + manages an application's display on character-cell + terminals. In the remainder of the document, the terms + curses and ncurses are used interchangeably.

+ +

A detailed history of NCURSES can be found in the NEWS + file from the source distribution. The current package is + maintained by Thomas Dickey. You can contact the maintainers + at bug-ncurses@gnu.org.

+
+ +
+
+ +

1.2. What we can do with NCURSES

+ +

NCURSES not only creates a wrapper over terminal + capabilities, but also gives a robust framework to create + nice looking UI (User Interface)s in text mode. It provides + functions to create windows etc. Its sister libraries + panel, menu and form provide an extension to the basic + curses library. These libraries usually come along with + curses. One can create applications that contain multiple + windows, menus, panels and forms. Windows can be managed + independently, can provide 'scrollability' and even can be + hidden.

+ +

Menus provide the user with an easy command selection + option. Forms allow the creation of easy-to-use data entry + and display windows. Panels extend the capabilities of + ncurses to deal with overlapping and stacked windows.

+ +

These are just some of the basic things we can do with + ncurses. As we move along, We will see all the capabilities + of these libraries.

+
+ +
+
+ +

1.3. Where to get it

+ +

All right, now that you know what you can do with + ncurses, you must be rearing to get started. NCURSES is + usually shipped with your installation. In case you don't + have the library or want to compile it on your own, read + on.

+ +

Compiling the + package

+ +

NCURSES can be obtained from ftp://ftp.gnu.org/pub/gnu/ncurses/ncurses.tar.gz + or any of the ftp sites mentioned in http://www.gnu.org/order/ftp.html.

+ +

Read the README and INSTALL files for details on to how + to install it. It usually involves the following + operations.

+
+    tar zxvf ncurses<version>.tar.gz  # unzip and untar the archive
+    cd ncurses<version>               # cd to the directory
+    ./configure                             # configure the build according to your 
+                                            # environment
+    make                                    # make it
+    su root                                 # become root
+    make install                            # install it
+
+ +

Using the + RPM

+ +

NCURSES RPM can be found and downloaded from http://rpmfind.net . + The RPM can be installed with the following command after + becoming root.

+
+    rpm -i <downloaded rpm>
+
+
+ +
+
+ +

1.4. + Purpose/Scope of the document

+ +

This document is intended to be a "All in One" guide for + programming with ncurses and its sister libraries. We + graduate from a simple "Hello World" program to more + complex form manipulation. No prior experience in ncurses + is assumed. The writing is informal, but a lot of detail is + provided for each of the examples.

+
+ +
+
+ +

1.5. About the Programs

+ +

All the programs in the document are available in zipped + form here. Unzip and untar it. The directory + structure looks like this.

+
+ncurses
+   |
+   |----> JustForFun     -- just for fun programs
+   |----> basics         -- basic programs
+   |----> demo           -- output files go into this directory after make
+   |          |
+   |          |----> exe -- exe files of all example programs
+   |----> forms          -- programs related to form library
+   |----> menus          -- programs related to menus library
+   |----> panels         -- programs related to panels library
+   |----> perl           -- perl equivalents of the examples (contributed
+   |                            by Anuradha Ratnaweera)
+   |----> Makefile       -- the top level Makefile
+   |----> README         -- the top level README file. contains instructions
+   |----> COPYING        -- copyright notice
+
+ +

The individual directories contain the following + files.

+
+Description of files in each directory
+--------------------------------------
+JustForFun
+    |
+    |----> hanoi.c   -- The Towers of Hanoi Solver
+    |----> life.c    -- The Game of Life demo
+    |----> magic.c   -- An Odd Order Magic Square builder 
+    |----> queens.c  -- The famous N-Queens Solver
+    |----> shuffle.c -- A fun game, if you have time to kill
+    |----> tt.c      -- A very trivial typing tutor
+
+  basics
+    |
+    |----> acs_vars.c            -- ACS_ variables example
+    |----> hello_world.c         -- Simple "Hello World" Program
+    |----> init_func_example.c   -- Initialization functions example
+    |----> key_code.c            -- Shows the scan code of the key pressed
+    |----> mouse_menu.c          -- A menu accessible by mouse
+    |----> other_border.c        -- Shows usage of other border functions apa
+    |                               -- rt from box()
+    |----> printw_example.c      -- A very simple printw() example
+    |----> scanw_example.c       -- A very simple getstr() example
+    |----> simple_attr.c         -- A program that can print a c file with 
+    |                               -- comments in attribute
+    |----> simple_color.c        -- A simple example demonstrating colors
+    |----> simple_key.c          -- A menu accessible with keyboard UP, DOWN 
+    |                               -- arrows
+    |----> temp_leave.c          -- Demonstrates temporarily leaving curses mode
+    |----> win_border.c          -- Shows Creation of windows and borders
+    |----> with_chgat.c          -- chgat() usage example
+
+  forms 
+    |
+    |----> form_attrib.c     -- Usage of field attributes
+    |----> form_options.c    -- Usage of field options
+    |----> form_simple.c     -- A simple form example
+    |----> form_win.c        -- Demo of windows associated with forms
+
+  menus 
+    |
+    |----> menu_attrib.c     -- Usage of menu attributes
+    |----> menu_item_data.c  -- Usage of item_name() etc.. functions
+    |----> menu_multi_column.c    -- Creates multi columnar menus
+    |----> menu_scroll.c     -- Demonstrates scrolling capability of menus
+    |----> menu_simple.c     -- A simple menu accessed by arrow keys
+    |----> menu_toggle.c     -- Creates multi valued menus and explains
+    |                           -- REQ_TOGGLE_ITEM
+    |----> menu_userptr.c    -- Usage of user pointer
+    |----> menu_win.c        -- Demo of windows associated with menus
+
+  panels 
+    |
+    |----> panel_browse.c    -- Panel browsing through tab. Usage of user 
+    |                           -- pointer
+    |----> panel_hide.c      -- Hiding and Un hiding of panels
+    |----> panel_resize.c    -- Moving and resizing of panels
+    |----> panel_simple.c    -- A simple panel example
+
+  perl
+    |----> 01-10.pl          -- Perl equivalents of first ten example programs
+
+ +

There is a top level Makefile included in the main + directory. It builds all the files and puts the + ready-to-use exes in demo/exe directory. You can also do + selective make by going into the corresponding directory. + Each directory contains a README file explaining the + purpose of each c file in the directory.

+ +

For every example, I have included path name for the + file relative to the examples directory.

+ +

If you prefer browsing individual programs, point your + browser to http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/ncurses_programs/

+ +

All the programs are released under the same license + that is used by ncurses (MIT-style). This gives you the + ability to do pretty much anything other than claiming them + as yours. Feel free to use them in your programs as + appropriate.

+
+ +
+
+ +

1.6. Other Formats of the document

+ +

This howto is also availabe in various other formats on + the tldp.org site. Here are the links to other formats of + this document.

+ + + +
+
+ +

1.6.2. Building from source

+ +

If above links are broken or if you want to experiment + with sgml read on.

+
+
    Get both the source and the tar,gzipped programs, available at
+        http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
+        NCURSES-HOWTO/NCURSES-Programming-HOWTO.sgml
+        http://cvsview.tldp.org/index.cgi/LDP/howto/docbook/
+        NCURSES-HOWTO/ncurses_programs.tar.gz
+
+    Unzip ncurses_programs.tar.gz with
+    tar zxvf ncurses_programs.tar.gz
+
+    Use jade to create various formats. For example if you just want to create
+    the multiple html files, you would use
+        jade -t sgml -i html -d <path to docbook html stylesheet>
+        NCURSES-Programming-HOWTO.sgml
+    to get pdf, first create a single html file of the HOWTO with 
+        jade -t sgml -i html -d <path to docbook html stylesheet> -V nochunks
+        NCURSES-Programming-HOWTO.sgml > NCURSES-ONE-BIG-FILE.html
+    then use htmldoc to get pdf file with
+        htmldoc --size universal -t pdf --firstpage p1 -f <output file name.pdf>
+        NCURSES-ONE-BIG-FILE.html
+    for ps, you would use
+        htmldoc --size universal -t ps --firstpage p1 -f <output file name.ps>
+        NCURSES-ONE-BIG-FILE.html
+
+ +

See LDP Author guide for more details. If all else + failes, mail me at ppadala@gmail.com

+
+
+ +
+
+ +

1.7. + Credits

+ +

I thank Sharath and Emre Akbas for helping me with few + sections. The introduction was initially written by + sharath. I rewrote it with few excerpts taken from his + initial work. Emre helped in writing printw and scanw + sections.

+ +

Perl equivalents of the example programs are contributed + by Anuradha Ratnaweera.

+ +

Then comes Ravi Parimi, my dearest friend, who has + been on this project before even one line was written. He + constantly bombarded me with suggestions and patiently + reviewed the whole text. He also checked each program on + Linux and Solaris.

+
+ +
+
+ +

1.8. + Wish List

+ +

This is the wish list, in the order of priority. If you + have a wish or you want to work on completing the wish, + mail me.

+ +
    +
  • +

    Add examples to last parts of forms section.

    +
  • + +
  • +

    Prepare a Demo showing all the programs and allow + the user to browse through description of each program. + Let the user compile and see the program in action. A + dialog based interface is preferred.

    +
  • + +
  • +

    Add debug info. _tracef, _tracemouse stuff.

    +
  • + +
  • +

    Accessing termcap, terminfo using functions provided + by ncurses package.

    +
  • + +
  • +

    Working on two terminals simultaneously.

    +
  • + +
  • +

    Add more stuff to miscellaneous section.

    +
  • +
+
+ +
+
+ +

1.9. + Copyright

+ +

Copyright © 2001 by Pradeep Padala.

+ +

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.

+
+
+ +
+
+ +

2. + Hello World !!!

+ +

Welcome to the world of curses. Before we plunge into the + library and look into its various features, let's write a + simple program and say hello to the world.

+ +
+
+ +

2.1. Compiling With the NCURSES + Library

+ +

To use ncurses library functions, you have to include + ncurses.h in your programs. To link the program with + ncurses the flag -lncurses should be added.

+
+    #include <ncurses.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lncurses
+
+ +
+ + +

Example 1. The Hello World !!! Program

+
+#include <ncurses.h>
+
+int main()
+{       
+        initscr();                      /* Start curses mode              */
+        printw("Hello World !!!");      /* Print Hello World              */
+        refresh();                      /* Print it on to the real screen */
+        getch();                        /* Wait for user input */
+        endwin();                       /* End curses mode                */
+
+        return 0;
+}
+
+
+
+ +
+
+ +

2.2. + Dissection

+ +

The above program prints "Hello World !!!" to the screen + and exits. This program shows how to initialize curses and + do screen manipulation and end curses mode. Let's dissect + it line by line.

+ +
+
+ +

2.2.1. About initscr()

+ +

The function initscr() initializes the terminal in + curses mode. In some implementations, it clears the + screen and presents a blank screen. To do any screen + manipulation using curses package this has to be called + first. This function initializes the curses system and + allocates memory for our present window (called + stdscr) and some other + data-structures. Under extreme cases this function might + fail due to insufficient memory to allocate memory for + curses library's data structures.

+ +

After this is done, we can do a variety of + initializations to customize our curses settings. These + details will be explained later .

+
+ +
+
+ +

2.2.2. The mysterious refresh()

+ +

The next line printw prints the string "Hello World + !!!" on to the screen. This function is analogous to + normal printf in all respects except that it prints the + data on a window called stdscr at the current (y,x) + co-ordinates. Since our present co-ordinates are at 0,0 + the string is printed at the left hand corner of the + window.

+ +

This brings us to that mysterious refresh(). Well, + when we called printw the data is actually written to an + imaginary window, which is not updated on the screen yet. + The job of printw is to update a few flags and data + structures and write the data to a buffer corresponding + to stdscr. In order to show it on the screen, we need to + call refresh() and tell the curses system to dump the + contents on the screen.

+ +

The philosophy behind all this is to allow the + programmer to do multiple updates on the imaginary screen + or windows and do a refresh once all his screen update is + done. refresh() checks the window and updates only the + portion which has been changed. This improves performance + and offers greater flexibility too. But, it is sometimes + frustrating to beginners. A common mistake committed by + beginners is to forget to call refresh() after they did + some update through printw() class of functions. I still + forget to add it sometimes :-)

+
+ +
+
+ +

2.2.3. About endwin()

+ +

And finally don't forget to end the curses mode. + Otherwise your terminal might behave strangely after the + program quits. endwin() frees the memory taken by curses + sub-system and its data structures and puts the terminal + in normal mode. This function must be called after you + are done with the curses mode.

+
+
+
+ +
+
+ +

3. The Gory + Details

+ +

Now that we have seen how to write a simple curses program + let's get into the details. There are many functions that + help customize what you see on screen and many features which + can be put to full use.

+ +

Here we go...

+
+ +
+
+ +

4. + Initialization

+ +

We now know that to initialize curses system the function + initscr() has to be called. There are functions which can be + called after this initialization to customize our curses + session. We may ask the curses system to set the terminal in + raw mode or initialize color or initialize the mouse etc.. + Let's discuss some of the functions that are normally called + immediately after initscr();

+ + + +
+
+ +

4.2. + raw() and cbreak()

+ +

Normally the terminal driver buffers the characters a + user types until a new line or carriage return is + encountered. But most programs require that the characters + be available as soon as the user types them. The above two + functions are used to disable line buffering. The + difference between these two functions is in the way + control characters like suspend (CTRL-Z), interrupt and + quit (CTRL-C) are passed to the program. In the raw() mode + these characters are directly passed to the program without + generating a signal. In the cbreak() mode these control characters are + interpreted as any other character by the terminal driver. + I personally prefer to use raw() as I can exercise greater + control over what the user does.

+
+ +
+
+ +

4.3. + echo() and noecho()

+ +

These functions control the echoing of characters typed + by the user to the terminal. noecho() switches off echoing. The reason + you might want to do this is to gain more control over + echoing or to suppress unnecessary echoing while taking + input from the user through the getch() etc. functions. + Most of the interactive programs call noecho() at initialization and do the + echoing of characters in a controlled manner. It gives the + programmer the flexibility of echoing characters at any + place in the window without updating current (y,x) + co-ordinates.

+
+ +
+
+ +

4.4. + keypad()

+ +

This is my favorite initialization function. It enables + the reading of function keys like F1, F2, arrow keys etc. + Almost every interactive program enables this, as arrow + keys are a major part of any User Interface. Do keypad(stdscr, TRUE) to enable this feature + for the regular screen (stdscr). You will learn more about + key management in later sections of this document.

+
+ +
+
+ +

4.5. + halfdelay()

+ +

This function, though not used very often, is a useful + one at times. halfdelay()is called to enable the half-delay + mode, which is similar to the cbreak() mode in that + characters typed are immediately available to program. + However, it waits for 'X' tenths of a second for input and + then returns ERR, if no input is available. 'X' is the + timeout value passed to the function halfdelay(). This + function is useful when you want to ask the user for input, + and if he doesn't respond with in certain time, we can do + some thing else. One possible example is a timeout at the + password prompt.

+
+ +
+
+ +

4.6. + Miscellaneous Initialization functions

+ +

There are few more functions which are called at + initialization to customize curses behavior. They are not + used as extensively as those mentioned above. Some of them + are explained where appropriate.

+
+ +
+
+ +

4.7. An + Example

+ +

Let's write a program which will clarify the usage of + these functions.

+ +
+ + +

Example 2. Initialization Function Usage + example

+
+#include <ncurses.h>
+
+int main()
+{       int ch;
+
+        initscr();                      /* Start curses mode            */
+        raw();                          /* Line buffering disabled      */
+        keypad(stdscr, TRUE);           /* We get F1, F2 etc..          */
+        noecho();                       /* Don't echo() while we do getch */
+
+        printw("Type any character to see it in bold\n");
+        ch = getch();                   /* If raw() hadn't been called
+                                         * we have to press enter before it
+                                         * gets to the program          */
+        if(ch == KEY_F(1))              /* Without keypad enabled this will */
+                printw("F1 Key pressed");/*  not get to us either       */
+                                        /* Without noecho() some ugly escape
+                                         * charachters might have been printed
+                                         * on screen                    */
+        else
+        {       printw("The pressed key is ");
+                attron(A_BOLD);
+                printw("%c", ch);
+                attroff(A_BOLD);
+        }
+        refresh();                      /* Print it on to the real screen */
+        getch();                        /* Wait for user input */
+        endwin();                       /* End curses mode                */
+
+        return 0;
+}
+
+
+ +

This program is self-explanatory. But I used functions + which aren't explained yet. The function getch() is used to get a character from + user. It is equivalent to normal getchar() except that we can disable the + line buffering to avoid <enter> after input. Look for + more about getch()and reading keys + in the key management section . The + functions attron and attroff are used to switch some + attributes on and off respectively. In the example I used + them to print the character in bold. These functions are + explained in detail later.

+
+
+ +
+
+ +

5. + A Word about Windows

+ +

Before we plunge into the myriad ncurses functions, let me + clear few things about windows. Windows are explained in + detail in following sections

+ +

A Window is an imaginary screen defined by curses system. + A window does not mean a bordered window which you usually + see on Win9X platforms. When curses is initialized, it + creates a default window named stdscr which represents your 80x25 (or the + size of window in which you are running) screen. If you are + doing simple tasks like printing few strings, reading input + etc., you can safely use this single window for all of your + purposes. You can also create windows and call functions + which explicitly work on the specified window.

+ +

For example, if you call

+
+    printw("Hi There !!!");
+    refresh();
+
+ +

It prints the string on stdscr at the present cursor + position. Similarly the call to refresh(), works on stdscr + only.

+ +

Say you have created windows then + you have to call a function with a 'w' added to the usual + function.

+
+    wprintw(win, "Hi There !!!");
+    wrefresh(win);
+
+ +

As you will see in the rest of the document, naming of + functions follow the same convention. For each function there + usually are three more functions.

+
+    printw(string);        /* Print on stdscr at present cursor position */
+    mvprintw(y, x, string);/* Move to (y, x) then print string     */
+    wprintw(win, string);  /* Print on window win at present cursor position */
+                           /* in the window */
+    mvwprintw(win, y, x, string);   /* Move to (y, x) relative to window */
+                                    /* co-ordinates and then print         */
+
+ +

Usually the w-less functions are macros which expand to + corresponding w-function with stdscr as the window + parameter.

+
+ +
+
+ +

6. Output + functions

+ +

I guess you can't wait any more to see some action. Back + to our odyssey of curses functions. Now that curses is + initialized, let's interact with world.

+ +

There are three classes of functions which you can use to + do output on screen.

+ +
    +
  1. +

    addch() class: Print single character with + attributes

    +
  2. + +
  3. +

    printw() class: Print formatted output similar to + printf()

    +
  4. + +
  5. +

    addstr() class: Print strings

    +
  6. +
+ +

These functions can be used interchangeably and it is a + matter of style as to which class is used. Let's see each one + in detail.

+ +
+
+ +

6.1. + addch() class of functions

+ +

These functions put a single character into the current + cursor location and advance the position of the cursor. You + can give the character to be printed but they usually are + used to print a character with some attributes. Attributes + are explained in detail in later sections of the document. If a character is + associated with an attribute(bold, reverse video etc.), + when curses prints the character, it is printed in that + attribute.

+ +

In order to combine a character with some attributes, + you have two options:

+ +
    +
  • +

    By OR'ing a single character with the desired + attribute macros. These attribute macros could be found + in the header file ncurses.h. + For example, you want to print a character ch(of type + char) bold and underlined, you would call addch() as + below.

    +
    +    addch(ch | A_BOLD | A_UNDERLINE);
    +
    +
  • + +
  • +

    By using functions like attrset(),attron(),attroff(). These + functions are explained in the Attributes section. Briefly, they + manipulate the current attributes of the given window. + Once set, the character printed in the window are + associated with the attributes until it is turned + off.

    +
  • +
+ +

Additionally, curses provides + some special characters for character-based graphics. You + can draw tables, horizontal or vertical lines, etc. You can + find all avaliable characters in the header file ncurses.h. Try looking for macros beginning + with ACS_ in this file.

+
+ +
+
+ +

6.2. + mvaddch(), waddch() and mvwaddch()

+ +

mvaddch() is used to move the + cursor to a given point, and then print. Thus, the + calls:

+
+    move(row,col);    /* moves the cursor to rowth row and colth column */
+    addch(ch);
+
can be replaced by +
+    mvaddch(row,col,ch);
+
+ +

waddch() is similar to + addch(), except that it adds a + character into the given window. (Note that addch() adds a character into the window + stdscr.)

+ +

In a similar fashion mvwaddch() + function is used to add a character into the given window + at the given coordinates.

+ +

Now, we are familiar with the basic output function + addch(). But, if we want to print + a string, it would be very annoying to print it character + by character. Fortunately, ncurses + provides printf-like or + puts-like + functions.

+
+ +
+
+ +

6.3. printw() class of functions

+ +

These functions are similar to printf() with the added capability of + printing at any position on the screen.

+ +
+
+ +

6.3.1. printw() and mvprintw

+ +

These two functions work much like printf(). mvprintw() can be used to move the cursor + to a position and then print. If you want to move the + cursor first and then print using printw() function, use move() first and then use printw() though I see no point why one + should avoid using mvprintw(), + you have the flexibility to manipulate.

+
+ +
+
+ +

6.3.2. wprintw() and + mvwprintw

+ +

These two functions are similar to above two except + that they print in the corresponding window given as + argument.

+
+ +
+
+ +

6.3.3. + vw_printw()

+ +

This function is similar to vprintf(). This can be used when variable + number of arguments are to be printed.

+
+ +
+
+ +

6.3.4. A Simple printw example

+ +
+ + +

Example 3. A Simple printw example

+
+#include <ncurses.h>                   /* ncurses.h includes stdio.h */  
+#include <string.h> 
+ 
+int main()
+{
+ char mesg[]="Just a string";           /* message to be appeared on the screen */
+ int row,col;                           /* to store the number of rows and *
+                                         * the number of colums of the screen */
+ initscr();                             /* start the curses mode */
+ getmaxyx(stdscr,row,col);              /* get the number of rows and columns */
+ mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
+                                        /* print the message at the center of the screen */
+ mvprintw(row-2,0,"This screen has %d rows and %d columns\n",row,col);
+ printw("Try resizing your window(if possible) and then run this program again");
+ refresh();
+ getch();
+ endwin();
+
+ return 0;
+}
+
+
+ +

Above program demonstrates how easy it is to use + printw. You just feed the + coordinates and the message to be appeared on the screen, + then it does what you want.

+ +

The above program introduces us to a new function + getmaxyx(), a macro defined in + ncurses.h. It gives the number + of columns and the number of rows in a given window. + getmaxyx() does this by updating + the variables given to it. Since getmaxyx() is not a function we don't pass + pointers to it, we just give two integer variables.

+
+
+ +
+
+ +

6.4. addstr() class of functions

+ +

addstr() is used to put a + character string into a given window. This function is + similar to calling addch() once + for each character in a given string. This is true for all + output functions. There are other functions from this + family such as mvaddstr(),mvwaddstr() and waddstr(), which obey the naming convention + of curses.(e.g. mvaddstr() is similar to the respective + calls move() and then addstr().) Another function of this + family is addnstr(), which takes an integer parameter(say + n) additionally. This function puts at most n characters + into the screen. If n is negative, then the entire string + will be added.

+
+ +
+
+ +

6.5. A + word of caution

+ +

All these functions take y co-ordinate first and then x + in their arguments. A common mistake by beginners is to + pass x,y in that order. If you are doing too many + manipulations of (y,x) co-ordinates, think of dividing the + screen into windows and manipulate each one separately. + Windows are explained in the windows + section.

+
+
+ +
+
+ +

7. Input + functions

+ +

Well, printing without taking input, is boring. Let's see + functions which allow us to get input from user. These + functions also can be divided into three categories.

+ +
    +
  1. +

    getch() class: Get a character

    +
  2. + +
  3. +

    scanw() class: Get formatted input

    +
  4. + +
  5. +

    getstr() class: Get strings

    +
  6. +
+ +
+
+ +

7.1. + getch() class of functions

+ +

These functions read a single character from the + terminal. But there are several subtle facts to consider. + For example if you don't use the function cbreak(), curses + will not read your input characters contiguously but will + begin read them only after a new line or an EOF is + encountered. In order to avoid this, the cbreak() function + must used so that characters are immediately available to + your program. Another widely used function is noecho(). As + the name suggests, when this function is set (used), the + characters that are keyed in by the user will not show up + on the screen. The two functions cbreak() and noecho() are + typical examples of key management. Functions of this genre + are explained in the key management + section .

+
+ +
+
+ +

7.2. + scanw() class of functions

+ +

These functions are similar to scanf() with the added capability of getting + the input from any location on the screen.

+ +
+
+ +

7.2.1. scanw() and mvscanw

+ +

The usage of these functions is similar to that of + sscanf(), where the line to be + scanned is provided by wgetstr() + function. That is, these functions call to wgetstr() function(explained below) and + uses the resulting line for a scan.

+
+ +
+
+ +

7.2.2. wscanw() and mvwscanw()

+ +

These are similar to above two functions except that + they read from a window, which is supplied as one of the + arguments to these functions.

+
+ +
+
+ +

7.2.3. + vw_scanw()

+ +

This function is similar to vscanf(). This can be used when a variable + number of arguments are to be scanned.

+
+
+ +
+
+ +

7.3. getstr() class of functions

+ +

These functions are used to get strings from the + terminal. In essence, this function performs the same task + as would be achieved by a series of calls to getch() until a newline, carriage return, or + end-of-file is received. The resulting string of characters + are pointed to by str, which is a + character pointer provided by the user.

+
+ +
+
+ +

7.4. + Some examples

+ +
+ + +

Example 4. A Simple scanw example

+
+#include <ncurses.h>                   /* ncurses.h includes stdio.h */  
+#include <string.h> 
+ 
+int main()
+{
+ char mesg[]="Enter a string: ";                /* message to be appeared on the screen */
+ char str[80];
+ int row,col;                           /* to store the number of rows and *
+                                         * the number of colums of the screen */
+ initscr();                             /* start the curses mode */
+ getmaxyx(stdscr,row,col);              /* get the number of rows and columns */
+ mvprintw(row/2,(col-strlen(mesg))/2,"%s",mesg);
+                                /* print the message at the center of the screen */
+ getstr(str);
+ mvprintw(LINES - 2, 0, "You Entered: %s", str);
+ getch();
+ endwin();
+
+ return 0;
+}
+
+
+
+
+ +
+
+ +

8. + Attributes

+ +

We have seen an example of how attributes can be used to + print characters with some special effects. Attributes, when + set prudently, can present information in an easy, + understandable manner. The following program takes a C file + as input and prints the file with comments in bold. Scan + through the code.

+ +
+ + +

Example 5. A Simple Attributes example

+
+/* pager functionality by Joseph Spainhour" <spainhou@bellsouth.net> */
+#include <ncurses.h>
+#include <stdlib.h>
+
+int main(int argc, char *argv[])
+{ 
+  int ch, prev, row, col;
+  prev = EOF;
+  FILE *fp;
+  int y, x;
+
+  if(argc != 2)
+  {
+    printf("Usage: %s <a c file name>\n", argv[0]);
+    exit(1);
+  }
+  fp = fopen(argv[1], "r");
+  if(fp == NULL)
+  {
+    perror("Cannot open input file");
+    exit(1);
+  }
+  initscr();                            /* Start curses mode */
+  getmaxyx(stdscr, row, col);           /* find the boundaries of the screeen */
+  while((ch = fgetc(fp)) != EOF)        /* read the file till we reach the end */
+  {
+    getyx(stdscr, y, x);                /* get the current curser position */
+    if(y == (row - 1))                  /* are we are at the end of the screen */
+    {
+      printw("<-Press Any Key->");      /* tell the user to press a key */
+      getch();
+      clear();                          /* clear the screen */
+      move(0, 0);                       /* start at the beginning of the screen */
+    }
+    if(prev == '/' && ch == '*')        /* If it is / and * then only
+                                         * switch bold on */    
+    {
+      attron(A_BOLD);                   /* cut bold on */
+      getyx(stdscr, y, x);              /* get the current curser position */
+      move(y, x - 1);                   /* back up one space */
+      printw("%c%c", '/', ch);          /* The actual printing is done here */
+    }
+    else
+      printw("%c", ch);
+    refresh();
+    if(prev == '*' && ch == '/')
+      attroff(A_BOLD);                  /* Switch it off once we got *
+                                         * and then / */
+    prev = ch;
+  }
+  endwin();                             /* End curses mode */
+  fclose(fp);
+  return 0;
+}
+
+
+ +

Don't worry about all those initialization and other crap. + Concentrate on the while loop. It reads each character in the + file and searches for the pattern /*. Once it spots the + pattern, it switches the BOLD attribute on with attron() . When we get the pattern */ it is + switched off by attroff() .

+ +

The above program also introduces us to two useful + functions getyx() and move(). The first function gets the + co-ordinates of the present cursor into the variables y, x. + Since getyx() is a macro we don't have to pass pointers to + variables. The function move() moves + the cursor to the co-ordinates given to it.

+ +

The above program is really a simple one which doesn't do + much. On these lines one could write a more useful program + which reads a C file, parses it and prints it in different + colors. One could even extend it to other languages as + well.

+ +
+
+ +

8.1. The details

+ +

Let's get into more details of attributes. The functions + attron(), attroff(), attrset() , + and their sister functions attr_get() etc.. can be used to switch + attributes on/off , get attributes and produce a colorful + display.

+ +

The functions attron and attroff take a bit-mask of + attributes and switch them on or off, respectively. The + following video attributes, which are defined in + <curses.h> can be passed to these functions.

+
+    
+    A_NORMAL        Normal display (no highlight)
+    A_STANDOUT      Best highlighting mode of the terminal.
+    A_UNDERLINE     Underlining
+    A_REVERSE       Reverse video
+    A_BLINK         Blinking
+    A_DIM           Half bright
+    A_BOLD          Extra bright or bold
+    A_PROTECT       Protected mode
+    A_INVIS         Invisible or blank mode
+    A_ALTCHARSET    Alternate character set
+    A_CHARTEXT      Bit-mask to extract a character
+    COLOR_PAIR(n)   Color-pair number n 
+    
+
+ +

The last one is the most colorful one :-) Colors are + explained in the next + sections.

+ +

We can OR(|) any number of above attributes to get a + combined effect. If you wanted reverse video with blinking + characters you can use

+
+    attron(A_REVERSE | A_BLINK);
+
+
+ +
+
+ +

8.2. attron() vs attrset()

+ +

Then what is the difference between attron() and + attrset()? attrset sets the attributes of window whereas + attron just switches on the attribute given to it. So + attrset() fully overrides whatever attributes the window + previously had and sets it to the new attribute(s). + Similarly attroff() just switches off the attribute(s) + given to it as an argument. This gives us the flexibility + of managing attributes easily.But if you use them + carelessly you may loose track of what attributes the + window has and garble the display. This is especially true + while managing menus with colors and highlighting. So + decide on a consistent policy and stick to it. You can + always use standend() which is + equivalent to attrset(A_NORMAL) + which turns off all attributes and brings you to normal + mode.

+
+ +
+
+ +

8.3. + attr_get()

+ +

The function attr_get() gets the current attributes and + color pair of the window. Though we might not use this as + often as the above functions, this is useful in scanning + areas of screen. Say we wanted to do some complex update on + screen and we are not sure what attribute each character is + associated with. Then this function can be used with either + attrset or attron to produce the desired effect.

+
+ +
+
+ +

8.4. + attr_ functions

+ +

There are series of functions like attr_set(), attr_on + etc.. These are similar to above functions except that they + take parameters of type attr_t.

+
+ +
+
+ +

8.5. + wattr functions

+ +

For each of the above functions we have a corresponding + function with 'w' which operates on a particular window. + The above functions operate on stdscr.

+
+ +
+
+ +

8.6. chgat() + functions

+ +

The function chgat() is listed in the end of the man + page curs_attr. It actually is a useful one. This function + can be used to set attributes for a group of characters + without moving. I mean it !!! without moving the cursor :-) + It changes the attributes of a given number of characters + starting at the current cursor location.

+ +

We can give -1 as the character count to update till end + of line. If you want to change attributes of characters + from current position to end of line, just use this.

+
+    chgat(-1, A_REVERSE, 0, NULL);
+
+ +

This function is useful when changing attributes for + characters that are already on the screen. Move to the + character from which you want to change and change the + attribute.

+ +

Other functions wchgat(), mvchgat(), wchgat() behave + similarly except that the w functions operate on the + particular window. The mv functions first move the cursor + then perform the work given to them. Actually chgat is a + macro which is replaced by a wchgat() with stdscr as the + window. Most of the "w-less" functions are macros.

+ +
+ + +

Example 6. Chgat() Usage example

+
+#include <ncurses.h>
+
+int main(int argc, char *argv[])
+{       initscr();                      /* Start curses mode            */
+        start_color();                  /* Start color functionality    */
+        
+        init_pair(1, COLOR_CYAN, COLOR_BLACK);
+        printw("A Big string which i didn't care to type fully ");
+        mvchgat(0, 0, -1, A_BLINK, 1, NULL);    
+        /* 
+         * First two parameters specify the position at which to start 
+         * Third parameter number of characters to update. -1 means till 
+         * end of line
+         * Forth parameter is the normal attribute you wanted to give 
+         * to the charcter
+         * Fifth is the color index. It is the index given during init_pair()
+         * use 0 if you didn't want color
+         * Sixth one is always NULL 
+         */
+        refresh();
+        getch();
+        endwin();                       /* End curses mode                */
+        return 0;
+}
+
+
+ +

This example also introduces us to the color world of + curses. Colors will be explained in detail later. Use 0 for + no color.

+
+
+ +
+
+ +

9. + Windows

+ +

Windows form the most important concept in curses. You + have seen the standard window stdscr above where all the + functions implicitly operated on this window. Now to make + design even a simplest GUI, you need to resort to windows. + The main reason you may want to use windows is to manipulate + parts of the screen separately, for better efficiency, by + updating only the windows that need to be changed and for a + better design. I would say the last reason is the most + important in going for windows. You should always strive for + a better and easy-to-manage design in your programs. If you + are writing big, complex GUIs this is of pivotal importance + before you start doing anything.

+ +
+
+ +

9.1. The basics

+ +

A Window can be created by calling the function + newwin(). It doesn't create any + thing on the screen actually. It allocates memory for a + structure to manipulate the window and updates the + structure with data regarding the window such as its size, + beginy, beginx etc. Hence in curses, a window is just an + abstraction of an imaginary window, which can be + manipulated independent of other parts of screen. The + function newwin() returns a pointer to structure WINDOW, + which can be passed to window related functions like + wprintw() etc.. Finally the window can be destroyed with + delwin(). It will deallocate the memory associated with the + window structure.

+
+ +
+
+ +

9.2. Let there be a Window !!!

+ +

What fun is it, if a window is created and we can't see + it. So the fun part begins by displaying the window. The + function box() can be used to draw + a border around the window. Let's explore these functions + in more detail in this example.

+ +
+ + +

Example 7. Window Border example

+
+#include <ncurses.h>
+
+
+WINDOW *create_newwin(int height, int width, int starty, int startx);
+void destroy_win(WINDOW *local_win);
+
+int main(int argc, char *argv[])
+{       WINDOW *my_win;
+        int startx, starty, width, height;
+        int ch;
+
+        initscr();                      /* Start curses mode            */
+        cbreak();                       /* Line buffering disabled, Pass on
+                                         * everty thing to me           */
+        keypad(stdscr, TRUE);           /* I need that nifty F1         */
+
+        height = 3;
+        width = 10;
+        starty = (LINES - height) / 2;  /* Calculating for a center placement */
+        startx = (COLS - width) / 2;    /* of the window                */
+        printw("Press F1 to exit");
+        refresh();
+        my_win = create_newwin(height, width, starty, startx);
+
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_LEFT:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, starty,--startx);
+                                break;
+                        case KEY_RIGHT:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, starty,++startx);
+                                break;
+                        case KEY_UP:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, --starty,startx);
+                                break;
+                        case KEY_DOWN:
+                                destroy_win(my_win);
+                                my_win = create_newwin(height, width, ++starty,startx);
+                                break;  
+                }
+        }
+                
+        endwin();                       /* End curses mode                */
+        return 0;
+}
+
+WINDOW *create_newwin(int height, int width, int starty, int startx)
+{       WINDOW *local_win;
+
+        local_win = newwin(height, width, starty, startx);
+        box(local_win, 0 , 0);          /* 0, 0 gives default characters 
+                                         * for the vertical and horizontal
+                                         * lines                        */
+        wrefresh(local_win);            /* Show that box                */
+
+        return local_win;
+}
+
+void destroy_win(WINDOW *local_win)
+{       
+        /* box(local_win, ' ', ' '); : This won't produce the desired
+         * result of erasing the window. It will leave its four corners 
+         * and so an ugly remnant of window. 
+         */
+        wborder(local_win, ' ', ' ', ' ',' ',' ',' ',' ',' ');
+        /* The parameters taken are 
+         * 1. win: the window on which to operate
+         * 2. ls: character to be used for the left side of the window 
+         * 3. rs: character to be used for the right side of the window 
+         * 4. ts: character to be used for the top side of the window 
+         * 5. bs: character to be used for the bottom side of the window 
+         * 6. tl: character to be used for the top left corner of the window 
+         * 7. tr: character to be used for the top right corner of the window 
+         * 8. bl: character to be used for the bottom left corner of the window 
+         * 9. br: character to be used for the bottom right corner of the window
+         */
+        wrefresh(local_win);
+        delwin(local_win);
+}
+
+
+
+ +
+
+ +

9.3. Explanation

+ +

Don't scream. I know it is a big example. But I have to + explain some important things here :-). This program + creates a rectangular window that can be moved with left, + right, up, down arrow keys. It repeatedly creates and + destroys windows as user press a key. Don't go beyond the + screen limits. Checking for those limits is left as an + exercise for the reader. Let's dissect it by line by + line.

+ +

The create_newwin() function + creates a window with newwin() and + displays a border around it with box. The function + destroy_win() first erases the + window from screen by painting a border with ' ' character + and then calling delwin() to + deallocate memory related to it. Depending on the key the + user presses, starty or startx is changed and a new window + is created.

+ +

In the destroy_win, as you can see, I used wborder + instead of box. The reason is written in the comments (You + missed it. I know. Read the code :-)). wborder draws a + border around the window with the characters given to it as + the 4 corner points and the 4 lines. To put it clearly, if + you have called wborder as below:

+
+    wborder(win, '|', '|', '-', '-', '+', '+', '+', '+');
+
+ +

it produces some thing like

+
+    +------------+
+    |            |
+    |            |
+    |            |
+    |            |
+    |            |
+    |            |
+    +------------+
+
+
+ +
+
+ +

9.4. + The other stuff in the example

+ +

You can also see in the above examples, that I have used + the variables COLS, LINES which are initialized to the + screen sizes after initscr(). They can be useful in finding + screen dimensions and finding the center co-ordinate of the + screen as above. The function getch() as usual gets the key from keyboard + and according to the key it does the corresponding work. + This type of switch- case is very common in any GUI based + programs.

+
+ +
+
+ +

9.5. Other Border functions

+ +

Above program is grossly inefficient in that with each + press of a key, a window is destroyed and another is + created. So let's write a more efficient program which uses + other border related functions.

+ +

The following program uses mvhline() and mvvline() to achieve similar effect. These + two functions are simple. They create a horizontal or + vertical line of the specified length at the specified + position.

+ +
+ + +

Example 8. More border functions

+
+#include <ncurses.h>
+
+typedef struct _win_border_struct {
+        chtype  ls, rs, ts, bs, 
+                tl, tr, bl, br;
+}WIN_BORDER;
+
+typedef struct _WIN_struct {
+
+        int startx, starty;
+        int height, width;
+        WIN_BORDER border;
+}WIN;
+
+void init_win_params(WIN *p_win);
+void print_win_params(WIN *p_win);
+void create_box(WIN *win, bool flag);
+
+int main(int argc, char *argv[])
+{       WIN win;
+        int ch;
+
+        initscr();                      /* Start curses mode            */
+        start_color();                  /* Start the color functionality */
+        cbreak();                       /* Line buffering disabled, Pass on
+                                         * everty thing to me           */
+        keypad(stdscr, TRUE);           /* I need that nifty F1         */
+        noecho();
+        init_pair(1, COLOR_CYAN, COLOR_BLACK);
+
+        /* Initialize the window parameters */
+        init_win_params(&win);
+        print_win_params(&win);
+
+        attron(COLOR_PAIR(1));
+        printw("Press F1 to exit");
+        refresh();
+        attroff(COLOR_PAIR(1));
+        
+        create_box(&win, TRUE);
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_LEFT:
+                                create_box(&win, FALSE);
+                                --win.startx;
+                                create_box(&win, TRUE);
+                                break;
+                        case KEY_RIGHT:
+                                create_box(&win, FALSE);
+                                ++win.startx;
+                                create_box(&win, TRUE);
+                                break;
+                        case KEY_UP:
+                                create_box(&win, FALSE);
+                                --win.starty;
+                                create_box(&win, TRUE);
+                                break;
+                        case KEY_DOWN:
+                                create_box(&win, FALSE);
+                                ++win.starty;
+                                create_box(&win, TRUE);
+                                break;  
+                }
+        }
+        endwin();                       /* End curses mode                */
+        return 0;
+}
+void init_win_params(WIN *p_win)
+{
+        p_win->height = 3;
+        p_win->width = 10;
+        p_win->starty = (LINES - p_win->height)/2;      
+        p_win->startx = (COLS - p_win->width)/2;
+
+        p_win->border.ls = '|';
+        p_win->border.rs = '|';
+        p_win->border.ts = '-';
+        p_win->border.bs = '-';
+        p_win->border.tl = '+';
+        p_win->border.tr = '+';
+        p_win->border.bl = '+';
+        p_win->border.br = '+';
+
+}
+void print_win_params(WIN *p_win)
+{
+#ifdef _DEBUG
+        mvprintw(25, 0, "%d %d %d %d", p_win->startx, p_win->starty, 
+                                p_win->width, p_win->height);
+        refresh();
+#endif
+}
+void create_box(WIN *p_win, bool flag)
+{       int i, j;
+        int x, y, w, h;
+
+        x = p_win->startx;
+        y = p_win->starty;
+        w = p_win->width;
+        h = p_win->height;
+
+        if(flag == TRUE)
+        {       mvaddch(y, x, p_win->border.tl);
+                mvaddch(y, x + w, p_win->border.tr);
+                mvaddch(y + h, x, p_win->border.bl);
+                mvaddch(y + h, x + w, p_win->border.br);
+                mvhline(y, x + 1, p_win->border.ts, w - 1);
+                mvhline(y + h, x + 1, p_win->border.bs, w - 1);
+                mvvline(y + 1, x, p_win->border.ls, h - 1);
+                mvvline(y + 1, x + w, p_win->border.rs, h - 1);
+
+        }
+        else
+                for(j = y; j <= y + h; ++j)
+                        for(i = x; i <= x + w; ++i)
+                                mvaddch(j, i, ' ');
+                                
+        refresh();
+
+}
+
+
+
+
+ +
+
+ +

10. + Colors

+ +
+

10.1. The basics

+ +

Life seems dull with no colors. Curses has a nice + mechanism to handle colors. Let's get into the thick of the + things with a small program.

+ +
+ + +

Example 9. A Simple Color example

+
+#include <ncurses.h>
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string);
+int main(int argc, char *argv[])
+{       initscr();                      /* Start curses mode            */
+        if(has_colors() == FALSE)
+        {       endwin();
+                printf("Your terminal does not support color\n");
+                exit(1);
+        }
+        start_color();                  /* Start color                  */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+
+        attron(COLOR_PAIR(1));
+        print_in_middle(stdscr, LINES / 2, 0, 0, "Viola !!! In color ...");
+        attroff(COLOR_PAIR(1));
+        getch();
+        endwin();
+}
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        mvwprintw(win, y, x, "%s", string);
+        refresh();
+}
+
+
+
+ +

As you can see, to start using color, you should first + call the function start_color(). + After that, you can use color capabilities of your + terminals using various functions. To find out whether a + terminal has color capabilities or not, you can use + has_colors() function, which + returns FALSE if the terminal does not support color.

+ +

Curses initializes all the colors supported by terminal + when start_color() is called. These can be accessed by the + define constants like COLOR_BLACK + etc. Now to actually start using colors, you have to define + pairs. Colors are always used in pairs. That means you have + to use the function init_pair() to + define the foreground and background for the pair number + you give. After that that pair number can be used as a + normal attribute with COLOR_PAIR()function. This may seem to be + cumbersome at first. But this elegant solution allows us to + manage color pairs very easily. To appreciate it, you have + to look into the the source code of "dialog", a utility for + displaying dialog boxes from shell scripts. The developers + have defined foreground and background combinations for all + the colors they might need and initialized at the + beginning. This makes it very easy to set attributes just + by accessing a pair which we already have defined as a + constant.

+ +

The following colors are defined in curses.h. You can use these as parameters + for various color functions.

+
+        COLOR_BLACK   0
+        COLOR_RED     1
+        COLOR_GREEN   2
+        COLOR_YELLOW  3
+        COLOR_BLUE    4
+        COLOR_MAGENTA 5
+        COLOR_CYAN    6
+        COLOR_WHITE   7
+
+
+ +
+
+ +

10.2. Changing Color Definitions

+ +

The function init_color()can be + used to change the rgb values for the colors defined by + curses initially. Say you wanted to lighten the intensity + of red color by a minuscule. Then you can use this function + as

+
+    init_color(COLOR_RED, 700, 0, 0);
+    /* param 1     : color name
+     * param 2, 3, 4 : rgb content min = 0, max = 1000 */
+
+ +

If your terminal cannot change the color definitions, + the function returns ERR. The function can_change_color() can be used to find out + whether the terminal has the capability of changing color + content or not. The rgb content is scaled from 0 to 1000. + Initially RED color is defined with content 1000(r), 0(g), + 0(b).

+
+ +
+
+ +

10.3. Color Content

+ +

The functions color_content() + and pair_content() can be used to + find the color content and foreground, background + combination for the pair.

+
+
+ +
+
+ +

11. Interfacing + with the key board

+ +
+

11.1. The Basics

+ +

No GUI is complete without a strong user interface and + to interact with the user, a curses program should be + sensitive to key presses or the mouse actions done by the + user. Let's deal with the keys first.

+ +

As you have seen in almost all of the above examples, + it is very easy to get key input from the user. A simple way + of getting key presses is to use getch() function. The cbreak mode should be + enabled to read keys when you are interested in reading + individual key hits rather than complete lines of text + (which usually end with a carriage return). keypad should + be enabled to get the Functions keys, arrow keys etc. See + the initialization section for details.

+ +

getch() returns an integer + corresponding to the key pressed. If it is a normal + character, the integer value will be equivalent to the + character. Otherwise it returns a number which can be + matched with the constants defined in curses.h. For example if the user presses + F1, the integer returned is 265. This can be checked using + the macro KEY_F() defined in curses.h. This makes reading + keys portable and easy to manage.

+ +

For example, if you call getch() like this

+
+    int ch;
+
+    ch = getch();
+
+ +

getch() will wait for the user to press a key, (unless + you specified a timeout) and when user presses a key, the + corresponding integer is returned. Then you can check the + value returned with the constants defined in curses.h to + match against the keys you want.

+ +

The following code piece will do that job.

+
+    if(ch == KEY_LEFT)
+        printw("Left arrow is pressed\n");
+
+ +

Let's write a small program which creates a menu which + can be navigated by up and down arrows.

+
+ +
+
+ +

11.2. A Simple Key Usage example

+ +
+ + +

Example 10. A Simple Key Usage example

+
+#include <stdio.h>
+#include <ncurses.h>
+
+#define WIDTH 30
+#define HEIGHT 10 
+
+int startx = 0;
+int starty = 0;
+
+char *choices[] = { 
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                  };
+int n_choices = sizeof(choices) / sizeof(char *);
+void print_menu(WINDOW *menu_win, int highlight);
+
+int main()
+{       WINDOW *menu_win;
+        int highlight = 1;
+        int choice = 0;
+        int c;
+
+        initscr();
+        clear();
+        noecho();
+        cbreak();       /* Line buffering disabled. pass on everything */
+        startx = (80 - WIDTH) / 2;
+        starty = (24 - HEIGHT) / 2;
+                
+        menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+        keypad(menu_win, TRUE);
+        mvprintw(0, 0, "Use arrow keys to go up and down, Press enter to select a choice");
+        refresh();
+        print_menu(menu_win, highlight);
+        while(1)
+        {       c = wgetch(menu_win);
+                switch(c)
+                {       case KEY_UP:
+                                if(highlight == 1)
+                                        highlight = n_choices;
+                                else
+                                        --highlight;
+                                break;
+                        case KEY_DOWN:
+                                if(highlight == n_choices)
+                                        highlight = 1;
+                                else 
+                                        ++highlight;
+                                break;
+                        case 10:
+                                choice = highlight;
+                                break;
+                        default:
+                                mvprintw(24, 0, "Charcter pressed is = %3d Hopefully it can be printed as '%c'", c, c);
+                                refresh();
+                                break;
+                }
+                print_menu(menu_win, highlight);
+                if(choice != 0) /* User did a choice come out of the infinite loop */
+                        break;
+        }       
+        mvprintw(23, 0, "You chose choice %d with choice string %s\n", choice, choices[choice - 1]);
+        clrtoeol();
+        refresh();
+        endwin();
+        return 0;
+}
+
+
+void print_menu(WINDOW *menu_win, int highlight)
+{
+        int x, y, i;    
+
+        x = 2;
+        y = 2;
+        box(menu_win, 0, 0);
+        for(i = 0; i < n_choices; ++i)
+        {       if(highlight == i + 1) /* High light the present choice */
+                {       wattron(menu_win, A_REVERSE); 
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                        wattroff(menu_win, A_REVERSE);
+                }
+                else
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                ++y;
+        }
+        wrefresh(menu_win);
+}
+
+
+
+
+
+ +
+
+ +

12. Interfacing + with the mouse

+ +

Now that you have seen how to get keys, lets do the same + thing from mouse. Usually each UI allows the user to interact + with both keyboard and mouse.

+ +
+
+ +

12.1. The Basics

+ +

Before you do any thing else, the events you want to + receive have to be enabled with mousemask().

+
+    mousemask(  mmask_t newmask,    /* The events you want to listen to */
+                mmask_t *oldmask)    /* The old events mask                */
+
+ +

The first parameter to above function is a bit mask of + events you would like to listen. By default, all the events + are turned off. The bit mask ALL_MOUSE_EVENTS can be used to get all the + events.

+ +

The following are all the event masks:

+
+    Name            Description
+       ---------------------------------------------------------------------
+       BUTTON1_PRESSED          mouse button 1 down
+       BUTTON1_RELEASED         mouse button 1 up
+       BUTTON1_CLICKED          mouse button 1 clicked
+       BUTTON1_DOUBLE_CLICKED   mouse button 1 double clicked
+       BUTTON1_TRIPLE_CLICKED   mouse button 1 triple clicked
+       BUTTON2_PRESSED          mouse button 2 down
+       BUTTON2_RELEASED         mouse button 2 up
+       BUTTON2_CLICKED          mouse button 2 clicked
+       BUTTON2_DOUBLE_CLICKED   mouse button 2 double clicked
+       BUTTON2_TRIPLE_CLICKED   mouse button 2 triple clicked
+       BUTTON3_PRESSED          mouse button 3 down
+       BUTTON3_RELEASED         mouse button 3 up
+       BUTTON3_CLICKED          mouse button 3 clicked
+       BUTTON3_DOUBLE_CLICKED   mouse button 3 double clicked
+       BUTTON3_TRIPLE_CLICKED   mouse button 3 triple clicked
+       BUTTON4_PRESSED          mouse button 4 down
+       BUTTON4_RELEASED         mouse button 4 up
+       BUTTON4_CLICKED          mouse button 4 clicked
+       BUTTON4_DOUBLE_CLICKED   mouse button 4 double clicked
+       BUTTON4_TRIPLE_CLICKED   mouse button 4 triple clicked
+       BUTTON_SHIFT             shift was down during button state change
+       BUTTON_CTRL              control was down during button state change
+       BUTTON_ALT               alt was down during button state change
+       ALL_MOUSE_EVENTS         report all button state changes
+       REPORT_MOUSE_POSITION    report mouse movement
+
+
+ +
+
+ +

12.2. Getting the events

+ +

Once a class of mouse events have been enabled, getch() + class of functions return KEY_MOUSE every time some mouse + event happens. Then the mouse event can be retrieved with + getmouse().

+ +

The code approximately looks like this:

+
+    MEVENT event;
+
+    ch = getch();
+    if(ch == KEY_MOUSE)
+        if(getmouse(&event) == OK)
+            .    /* Do some thing with the event */
+            .
+            .
+
+ +

getmouse() returns the event into the pointer given to + it. It is a structure which contains

+
+    typedef struct
+    {
+        short id;         /* ID to distinguish multiple devices */
+        int x, y, z;      /* event coordinates */
+        mmask_t bstate;   /* button state bits */
+    }    
+
+ +

The bstate is the main variable + we are interested in. It tells the button state of the + mouse.

+ +

Then with a code snippet like the following, we can find + out what happened.

+
+    if(event.bstate & BUTTON1_PRESSED)
+        printw("Left Button Pressed");
+
+
+ +
+
+ +

12.3. Putting it all Together

+ +

That's pretty much interfacing with mouse. Let's create + the same menu and enable mouse interaction. To make things + simpler, key handling is removed.

+ +
+ + +

Example 11. Access the menu with mouse !!!

+
+#include <ncurses.h>
+
+#define WIDTH 30
+#define HEIGHT 10 
+
+int startx = 0;
+int starty = 0;
+
+char *choices[] = {     "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                  };
+
+int n_choices = sizeof(choices) / sizeof(char *);
+
+void print_menu(WINDOW *menu_win, int highlight);
+void report_choice(int mouse_x, int mouse_y, int *p_choice);
+
+int main()
+{       int c, choice = 0;
+        WINDOW *menu_win;
+        MEVENT event;
+
+        /* Initialize curses */
+        initscr();
+        clear();
+        noecho();
+        cbreak();       //Line buffering disabled. pass on everything
+
+        /* Try to put the window in the middle of screen */
+        startx = (80 - WIDTH) / 2;
+        starty = (24 - HEIGHT) / 2;
+        
+        attron(A_REVERSE);
+        mvprintw(23, 1, "Click on Exit to quit (Works best in a virtual console)");
+        refresh();
+        attroff(A_REVERSE);
+
+        /* Print the menu for the first time */
+        menu_win = newwin(HEIGHT, WIDTH, starty, startx);
+        print_menu(menu_win, 1);
+        /* Get all the mouse events */
+        mousemask(ALL_MOUSE_EVENTS, NULL);
+        
+        while(1)
+        {       c = wgetch(menu_win);
+                switch(c)
+                {       case KEY_MOUSE:
+                        if(getmouse(&event) == OK)
+                        {       /* When the user clicks left mouse button */
+                                if(event.bstate & BUTTON1_PRESSED)
+                                {       report_choice(event.x + 1, event.y + 1, &choice);
+                                        if(choice == -1) //Exit chosen
+                                                goto end;
+                                        mvprintw(22, 1, "Choice made is : %d String Chosen is \"%10s\"", choice, choices[choice - 1]);
+                                        refresh(); 
+                                }
+                        }
+                        print_menu(menu_win, choice);
+                        break;
+                }
+        }               
+end:
+        endwin();
+        return 0;
+}
+
+
+void print_menu(WINDOW *menu_win, int highlight)
+{
+        int x, y, i;    
+
+        x = 2;
+        y = 2;
+        box(menu_win, 0, 0);
+        for(i = 0; i < n_choices; ++i)
+        {       if(highlight == i + 1)
+                {       wattron(menu_win, A_REVERSE); 
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                        wattroff(menu_win, A_REVERSE);
+                }
+                else
+                        mvwprintw(menu_win, y, x, "%s", choices[i]);
+                ++y;
+        }
+        wrefresh(menu_win);
+}
+
+/* Report the choice according to mouse position */
+void report_choice(int mouse_x, int mouse_y, int *p_choice)
+{       int i,j, choice;
+
+        i = startx + 2;
+        j = starty + 3;
+        
+        for(choice = 0; choice < n_choices; ++choice)
+                if(mouse_y == j + choice && mouse_x >= i && mouse_x <= i + strlen(choices[choice]))
+                {       if(choice == n_choices - 1)
+                                *p_choice = -1;         
+                        else
+                                *p_choice = choice + 1; 
+                        break;
+                }
+}
+
+
+
+ +
+
+ +

12.4. Miscellaneous Functions

+ +

The functions mouse_trafo() and wmouse_trafo() can be + used to convert to mouse co-ordinates to screen relative + co-ordinates. See curs_mouse(3X) man page for details.

+ +

The mouseinterval function sets the maximum time (in + thousands of a second) that can elapse between press and + release events in order for them to be recognized as a + click. This function returns the previous interval value. + The default is one fifth of a second.

+
+
+ +
+
+ +

13. Screen + Manipulation

+ +

In this section, we will look into some functions, which + allow us to manage the screen efficiently and to write some + fancy programs. This is especially important in writing + games.

+ +
+
+ +

13.1. getyx() + functions

+ +

The function getyx() can be + used to find out the present cursor co-ordinates. It will + fill the values of x and y co-ordinates in the arguments + given to it. Since getyx() is a macro you don't have to + pass the address of the variables. It can be called as

+
+    getyx(win, y, x);
+    /* win: window pointer
+     *   y, x: y, x co-ordinates will be put into this variables 
+     */
+
+ +

The function getparyx() gets the beginning co-ordinates + of the sub window relative to the main window. This is some + times useful to update a sub window. When designing fancy + stuff like writing multiple menus, it becomes difficult to + store the menu positions, their first option co-ordinates + etc. A simple solution to this problem, is to create menus + in sub windows and later find the starting co-ordinates of + the menus by using getparyx().

+ +

The functions getbegyx() and getmaxyx() store current + window's beginning and maximum co-ordinates. These + functions are useful in the same way as above in managing + the windows and sub windows effectively.

+
+ +
+
+ +

13.2. Screen Dumping

+ +

While writing games, some times it becomes necessary to + store the state of the screen and restore it back to the + same state. The function scr_dump() can be used to dump the + screen contents to a file given as an argument. Later it + can be restored by scr_restore function. These two simple + functions can be used effectively to maintain a fast moving + game with changing scenarios.

+
+ +
+
+ +

13.3. Window Dumping

+ +

To store and restore windows, the functions putwin() and getwin() can be used. putwin() puts the present window state into + a file, which can be later restored by getwin().

+ +

The function copywin() can be + used to copy a window completely onto another window. It + takes the source and destination windows as parameters and + according to the rectangle specified, it copies the + rectangular region from source to destination window. Its + last parameter specifies whether to overwrite or just + overlay the contents on to the destination window. If this + argument is true, then the copying is non-destructive.

+
+
+ +
+
+ +

14. Miscellaneous + features

+ +

Now you know enough features to write a good curses + program, with all bells and whistles. There are some + miscellaneous functions which are useful in various cases. + Let's go headlong into some of those.

+ +
+
+ +

14.1. + curs_set()

+ +

This function can be used to make the cursor invisible. + The parameter to this function should be

+
+    0 : invisible      or
+    1 : normal    or
+    2 : very visible.
+
+
+ +
+
+ +

14.2. + Temporarily Leaving Curses mode

+ +

Some times you may want to get back to cooked mode + (normal line buffering mode) temporarily. In such a case + you will first need to save the tty modes with a call to + def_prog_mode() and then call + endwin() to end the curses mode. + This will leave you in the original tty mode. To get back + to curses once you are done, call reset_prog_mode() . This function returns + the tty to the state stored by def_prog_mode(). Then do refresh(), and you + are back to the curses mode. Here is an example showing the + sequence of things to be done.

+ +
+ + +

Example 12. Temporarily Leaving Curses Mode

+
+#include <ncurses.h>
+
+int main()
+{       
+        initscr();                      /* Start curses mode              */
+        printw("Hello World !!!\n");    /* Print Hello World              */
+        refresh();                      /* Print it on to the real screen */
+        def_prog_mode();                /* Save the tty modes             */
+        endwin();                       /* End curses mode temporarily    */
+        system("/bin/sh");              /* Do whatever you like in cooked mode */
+        reset_prog_mode();              /* Return to the previous tty mode*/
+                                        /* stored by def_prog_mode()      */
+        refresh();                      /* Do refresh() to restore the    */
+                                        /* Screen contents                */
+        printw("Another String\n");     /* Back to curses use the full    */
+        refresh();                      /* capabilities of curses         */
+        endwin();                       /* End curses mode                */
+
+        return 0;
+}
+
+
+
+ +
+
+ +

14.3. ACS_ + variables

+ +

If you have ever programmed in DOS, you know about those + nifty characters in extended character set. They are + printable only on some terminals. NCURSES functions like + box() use these characters. All + these variables start with ACS meaning alternative + character set. You might have noticed me using these + characters in some of the programs above. Here's an example + showing all the characters.

+ +
+ + +

Example 13. ACS Variables Example

+
+#include <ncurses.h>
+
+int main()
+{
+        initscr();
+
+        printw("Upper left corner           "); addch(ACS_ULCORNER); printw("\n"); 
+        printw("Lower left corner           "); addch(ACS_LLCORNER); printw("\n");
+        printw("Lower right corner          "); addch(ACS_LRCORNER); printw("\n");
+        printw("Tee pointing right          "); addch(ACS_LTEE); printw("\n");
+        printw("Tee pointing left           "); addch(ACS_RTEE); printw("\n");
+        printw("Tee pointing up             "); addch(ACS_BTEE); printw("\n");
+        printw("Tee pointing down           "); addch(ACS_TTEE); printw("\n");
+        printw("Horizontal line             "); addch(ACS_HLINE); printw("\n");
+        printw("Vertical line               "); addch(ACS_VLINE); printw("\n");
+        printw("Large Plus or cross over    "); addch(ACS_PLUS); printw("\n");
+        printw("Scan Line 1                 "); addch(ACS_S1); printw("\n");
+        printw("Scan Line 3                 "); addch(ACS_S3); printw("\n");
+        printw("Scan Line 7                 "); addch(ACS_S7); printw("\n");
+        printw("Scan Line 9                 "); addch(ACS_S9); printw("\n");
+        printw("Diamond                     "); addch(ACS_DIAMOND); printw("\n");
+        printw("Checker board (stipple)     "); addch(ACS_CKBOARD); printw("\n");
+        printw("Degree Symbol               "); addch(ACS_DEGREE); printw("\n");
+        printw("Plus/Minus Symbol           "); addch(ACS_PLMINUS); printw("\n");
+        printw("Bullet                      "); addch(ACS_BULLET); printw("\n");
+        printw("Arrow Pointing Left         "); addch(ACS_LARROW); printw("\n");
+        printw("Arrow Pointing Right        "); addch(ACS_RARROW); printw("\n");
+        printw("Arrow Pointing Down         "); addch(ACS_DARROW); printw("\n");
+        printw("Arrow Pointing Up           "); addch(ACS_UARROW); printw("\n");
+        printw("Board of squares            "); addch(ACS_BOARD); printw("\n");
+        printw("Lantern Symbol              "); addch(ACS_LANTERN); printw("\n");
+        printw("Solid Square Block          "); addch(ACS_BLOCK); printw("\n");
+        printw("Less/Equal sign             "); addch(ACS_LEQUAL); printw("\n");
+        printw("Greater/Equal sign          "); addch(ACS_GEQUAL); printw("\n");
+        printw("Pi                          "); addch(ACS_PI); printw("\n");
+        printw("Not equal                   "); addch(ACS_NEQUAL); printw("\n");
+        printw("UK pound sign               "); addch(ACS_STERLING); printw("\n");
+
+        refresh();
+        getch();
+        endwin();
+
+        return 0;
+}
+
+
+
+
+ +
+
+ +

15. Other + libraries

+ +

Apart from the curses library, there are few text mode + libraries, which provide more functionality and a lot of + features. The following sections explain three standard + libraries which are usually distributed along with + curses.

+
+ +
+
+ +

16. Panel + Library

+ +

Now that you are proficient in curses, you wanted to do + some thing big. You created a lot of overlapping windows to + give a professional windows-type look. Unfortunately, it soon + becomes difficult to manage these. The multiple refreshes, + updates plunge you into a nightmare. The overlapping windows + create blotches, whenever you forget to refresh the windows + in the proper order.

+ +

Don't despair. There's an elegant solution provided in + panels library. In the words of developers of ncurses

+ +

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.

+ +

If you have lot of overlapping windows, then panels + library is the way to go. It obviates the need of doing + series of wnoutrefresh(), doupdate() and relieves the burden + of doing it correctly(bottom up). The library maintains + information about the order of windows, their overlapping and + update the screen properly. So why wait? Let's take a close + peek into panels.

+ +
+
+ +

16.1. The Basics

+ +

Panel object is a window that is implicitly treated as + part of a deck including all other panel objects. The deck + is treated as a stack with the top panel being completely + visible and the other panels may or may not be obscured + according to their positions. So the basic idea is to + create a stack of overlapping panels and use panels library + to display them correctly. There is a function similar to + refresh() which, when called , displays panels in the + correct order. Functions are provided to hide or show + panels, move panels, change its size etc.. The overlapping + problem is managed by the panels library during all the + calls to these functions.

+ +

The general flow of a panel program goes like this:

+ +
    +
  1. +

    Create the windows (with newwin()) to be attached to + the panels.

    +
  2. + +
  3. +

    Create panels with the chosen visibility order. + Stack them up according to the desired visibility. The + function new_panel() is used to created panels.

    +
  4. + +
  5. +

    Call update_panels() to write the panels to the + virtual screen in correct visibility order. Do a + doupdate() to show it on the screen.

    +
  6. + +
  7. +

    Mainpulate the panels with show_panel(), + hide_panel(), move_panel() etc. Make use of helper + functions like panel_hidden() and panel_window(). Make + use of user pointer to store custom data for a panel. + Use the functions set_panel_userptr() and + panel_userptr() to set and get the user pointer for a + panel.

    +
  8. + +
  9. +

    When you are done with the panel use del_panel() to + delete the panel.

    +
  10. +
+ +

Let's make the concepts clear, with some programs. The + following is a simple program which creates 3 overlapping + panels and shows them on the screen.

+
+ +
+
+ +

16.2. Compiling With the Panels + Library

+ +

To use panels library functions, you have to include + panel.h and to link the program with panels library the + flag -lpanel should be added along with -lncurses in that + order.

+
+    #include <panel.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lpanel -lncurses
+
+ +
+ + +

Example 14. Panel basics

+
+#include <panel.h>
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        int lines = 10, cols = 40, y = 2, x = 4, i;
+
+        initscr();
+        cbreak();
+        noecho();
+
+        /* Create windows for the panels */
+        my_wins[0] = newwin(lines, cols, y, x);
+        my_wins[1] = newwin(lines, cols, y + 1, x + 5);
+        my_wins[2] = newwin(lines, cols, y + 2, x + 10);
+
+        /* 
+         * Create borders around the windows so that you can see the effect
+         * of panels
+         */
+        for(i = 0; i < 3; ++i)
+                box(my_wins[i], 0, 0);
+
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        doupdate();
+        
+        getch();
+        endwin();
+}
+
+
+
+ +

As you can see, above program follows a simple flow as + explained. The windows are created with newwin() and then + they are attached to panels with new_panel(). As we attach + one panel after another, the stack of panels gets updated. + To put them on screen update_panels() and doupdate() are + called.

+
+ +
+
+ +

16.3. Panel Window Browsing

+ +

A slightly complicated example is given below. This + program creates 3 windows which can be cycled through using + tab. Have a look at the code.

+ +
+ + +

Example 15. Panel Window Browsing Example

+
+#include <panel.h>
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+void win_show(WINDOW *win, char *label, int label_color);
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        PANEL  *top;
+        int ch;
+
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize all the colors */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_BLUE, COLOR_BLACK);
+        init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+        init_wins(my_wins, 3);
+        
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        /* Set up the user pointers to the next panel */
+        set_panel_userptr(my_panels[0], my_panels[1]);
+        set_panel_userptr(my_panels[1], my_panels[2]);
+        set_panel_userptr(my_panels[2], my_panels[0]);
+
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        attron(COLOR_PAIR(4));
+        mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+        attroff(COLOR_PAIR(4));
+        doupdate();
+
+        top = my_panels[2];
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case 9:
+                                top = (PANEL *)panel_userptr(top);
+                                top_panel(top);
+                                break;
+                }
+                update_panels();
+                doupdate();
+        }
+        endwin();
+        return 0;
+}
+
+/* Put all the windows */
+void init_wins(WINDOW **wins, int n)
+{       int x, y, i;
+        char label[80];
+
+        y = 2;
+        x = 10;
+        for(i = 0; i < n; ++i)
+        {       wins[i] = newwin(NLINES, NCOLS, y, x);
+                sprintf(label, "Window Number %d", i + 1);
+                win_show(wins[i], label, i + 1);
+                y += 3;
+                x += 7;
+        }
+}
+
+/* Show the window with a border and a label */
+void win_show(WINDOW *win, char *label, int label_color)
+{       int startx, starty, height, width;
+
+        getbegyx(win, starty, startx);
+        getmaxyx(win, height, width);
+
+        box(win, 0, 0);
+        mvwaddch(win, 2, 0, ACS_LTEE); 
+        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
+        mvwaddch(win, 2, width - 1, ACS_RTEE); 
+        
+        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+
+ +
+
+ +

16.4. Using User Pointers

+ +

In the above example I used user pointers to find out + the next window in the cycle. We can attach custom + information to the panel by specifying a user pointer, + which can point to any information you want to store. In + this case I stored the pointer to the next panel in the + cycle. User pointer for a panel can be set with the + function set_panel_userptr(). It + can be accessed using the function panel_userptr() which will return the user + pointer for the panel given as argument. After finding the + next panel in the cycle It is brought to the top by the + function top_panel(). This function brings the panel given + as argument to the top of the panel stack.

+
+ +
+
+ +

16.5. Moving and Resizing Panels

+ +

The function move_panel() can + be used to move a panel to the desired location. It does + not change the position of the panel in the stack. Make + sure that you use move_panel() instead mvwin() on the + window associated with the panel.

+ +

Resizing a panel is slightly complex. There is no + straight forward function just to resize the window + associated with a panel. A solution to resize a panel is to + create a new window with the desired sizes, change the + window associated with the panel using replace_panel(). + Don't forget to delete the old window. The window + associated with a panel can be found by using the function + panel_window().

+ +

The following program shows these concepts, in + supposedly simple program. You can cycle through the window + with <TAB> as usual. To resize or move the active + panel press 'r' for resize 'm' for moving. Then use arrow + keys to resize or move it to the desired way and press + enter to end your resizing or moving. This example makes + use of user data to get the required data to do the + operations.

+ +
+ + +

Example 16. Panel Moving and Resizing + example

+
+#include <panel.h>
+
+typedef struct _PANEL_DATA {
+        int x, y, w, h;
+        char label[80]; 
+        int label_color;
+        PANEL *next;
+}PANEL_DATA;
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+void win_show(WINDOW *win, char *label, int label_color);
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+void set_user_ptrs(PANEL **panels, int n);
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        PANEL_DATA  *top;
+        PANEL *stack_top;
+        WINDOW *temp_win, *old_win;
+        int ch;
+        int newx, newy, neww, newh;
+        int size = FALSE, move = FALSE;
+
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize all the colors */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_BLUE, COLOR_BLACK);
+        init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+        init_wins(my_wins, 3);
+        
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        set_user_ptrs(my_panels, 3);
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        attron(COLOR_PAIR(4));
+        mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+        mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+        attroff(COLOR_PAIR(4));
+        doupdate();
+
+        stack_top = my_panels[2];
+        top = (PANEL_DATA *)panel_userptr(stack_top);
+        newx = top->x;
+        newy = top->y;
+        neww = top->w;
+        newh = top->h;
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case 9:         /* Tab */
+                                top = (PANEL_DATA *)panel_userptr(stack_top);
+                                top_panel(top->next);
+                                stack_top = top->next;
+                                top = (PANEL_DATA *)panel_userptr(stack_top);
+                                newx = top->x;
+                                newy = top->y;
+                                neww = top->w;
+                                newh = top->h;
+                                break;
+                        case 'r':       /* Re-Size*/
+                                size = TRUE;
+                                attron(COLOR_PAIR(4));
+                                mvprintw(LINES - 4, 0, "Entered Resizing :Use Arrow Keys to resize and press <ENTER> to end resizing");
+                                refresh();
+                                attroff(COLOR_PAIR(4));
+                                break;
+                        case 'm':       /* Move */
+                                attron(COLOR_PAIR(4));
+                                mvprintw(LINES - 4, 0, "Entered Moving: Use Arrow Keys to Move and press <ENTER> to end moving");
+                                refresh();
+                                attroff(COLOR_PAIR(4));
+                                move = TRUE;
+                                break;
+                        case KEY_LEFT:
+                                if(size == TRUE)
+                                {       --newx;
+                                        ++neww;
+                                }
+                                if(move == TRUE)
+                                        --newx;
+                                break;
+                        case KEY_RIGHT:
+                                if(size == TRUE)
+                                {       ++newx;
+                                        --neww;
+                                }
+                                if(move == TRUE)
+                                        ++newx;
+                                break;
+                        case KEY_UP:
+                                if(size == TRUE)
+                                {       --newy;
+                                        ++newh;
+                                }
+                                if(move == TRUE)
+                                        --newy;
+                                break;
+                        case KEY_DOWN:
+                                if(size == TRUE)
+                                {       ++newy;
+                                        --newh;
+                                }
+                                if(move == TRUE)
+                                        ++newy;
+                                break;
+                        case 10:        /* Enter */
+                                move(LINES - 4, 0);
+                                clrtoeol();
+                                refresh();
+                                if(size == TRUE)
+                                {       old_win = panel_window(stack_top);
+                                        temp_win = newwin(newh, neww, newy, newx);
+                                        replace_panel(stack_top, temp_win);
+                                        win_show(temp_win, top->label, top->label_color); 
+                                        delwin(old_win);
+                                        size = FALSE;
+                                }
+                                if(move == TRUE)
+                                {       move_panel(stack_top, newy, newx);
+                                        move = FALSE;
+                                }
+                                break;
+                        
+                }
+                attron(COLOR_PAIR(4));
+                mvprintw(LINES - 3, 0, "Use 'm' for moving, 'r' for resizing");
+                mvprintw(LINES - 2, 0, "Use tab to browse through the windows (F1 to Exit)");
+                attroff(COLOR_PAIR(4));
+                refresh();      
+                update_panels();
+                doupdate();
+        }
+        endwin();
+        return 0;
+}
+
+/* Put all the windows */
+void init_wins(WINDOW **wins, int n)
+{       int x, y, i;
+        char label[80];
+
+        y = 2;
+        x = 10;
+        for(i = 0; i < n; ++i)
+        {       wins[i] = newwin(NLINES, NCOLS, y, x);
+                sprintf(label, "Window Number %d", i + 1);
+                win_show(wins[i], label, i + 1);
+                y += 3;
+                x += 7;
+        }
+}
+
+/* Set the PANEL_DATA structures for individual panels */
+void set_user_ptrs(PANEL **panels, int n)
+{       PANEL_DATA *ptrs;
+        WINDOW *win;
+        int x, y, w, h, i;
+        char temp[80];
+        
+        ptrs = (PANEL_DATA *)calloc(n, sizeof(PANEL_DATA));
+
+        for(i = 0;i < n; ++i)
+        {       win = panel_window(panels[i]);
+                getbegyx(win, y, x);
+                getmaxyx(win, h, w);
+                ptrs[i].x = x;
+                ptrs[i].y = y;
+                ptrs[i].w = w;
+                ptrs[i].h = h;
+                sprintf(temp, "Window Number %d", i + 1);
+                strcpy(ptrs[i].label, temp);
+                ptrs[i].label_color = i + 1;
+                if(i + 1 == n)
+                        ptrs[i].next = panels[0];
+                else
+                        ptrs[i].next = panels[i + 1];
+                set_panel_userptr(panels[i], &ptrs[i]);
+        }
+}
+
+/* Show the window with a border and a label */
+void win_show(WINDOW *win, char *label, int label_color)
+{       int startx, starty, height, width;
+
+        getbegyx(win, starty, startx);
+        getmaxyx(win, height, width);
+
+        box(win, 0, 0);
+        mvwaddch(win, 2, 0, ACS_LTEE); 
+        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
+        mvwaddch(win, 2, width - 1, ACS_RTEE); 
+        
+        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+ +

Concentrate on the main while loop. Once it finds out + the type of key pressed, it takes appropriate action. If + 'r' is pressed resizing mode is started. After this the new + sizes are updated as the user presses the arrow keys. When + the user presses <ENTER> present selection ends and + panel is resized by using the concept explained. While in + resizing mode the program doesn't show how the window is + getting resized. It is left as an exercise to the reader to + print a dotted border while it gets resized to a new + position.

+ +

When the user presses 'm' the move mode starts. This is + a bit simpler than resizing. As the arrow keys are pressed + the new position is updated and pressing of <ENTER> + causes the panel to be moved by calling the function + move_panel().

+ +

In this program the user data which is represented as + PANEL_DATA, plays very important role in finding the + associated information with a panel. As written in the + comments, the PANEL_DATA stores the panel sizes, label, + label color and a pointer to the next panel in the + cycle.

+
+ +
+
+ +

16.6. Hiding and Showing Panels

+ +

A Panel can be hidden by using the function + hide_panel(). This function merely removes it form the + stack of panels, thus hiding it on the screen once you do + update_panels() and doupdate(). It doesn't destroy the + PANEL structure associated with the hidden panel. It can be + shown again by using the show_panel() function.

+ +

The following program shows the hiding of panels. Press + 'a' or 'b' or 'c' to show or hide first, second and third + windows respectively. It uses a user data with a small + variable hide, which keeps track of whether the window is + hidden or not. For some reason the function panel_hidden() which tells whether a panel + is hidden or not is not working. A bug report was also + presented by Michael Andres here

+ +
+ + +

Example 17. Panel Hiding and Showing + example

+
+#include <panel.h>
+
+typedef struct _PANEL_DATA {
+        int hide;       /* TRUE if panel is hidden */
+}PANEL_DATA;
+
+#define NLINES 10
+#define NCOLS 40
+
+void init_wins(WINDOW **wins, int n);
+void win_show(WINDOW *win, char *label, int label_color);
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       WINDOW *my_wins[3];
+        PANEL  *my_panels[3];
+        PANEL_DATA panel_datas[3];
+        PANEL_DATA *temp;
+        int ch;
+
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize all the colors */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_BLUE, COLOR_BLACK);
+        init_pair(4, COLOR_CYAN, COLOR_BLACK);
+
+        init_wins(my_wins, 3);
+        
+        /* Attach a panel to each window */     /* Order is bottom up */
+        my_panels[0] = new_panel(my_wins[0]);   /* Push 0, order: stdscr-0 */
+        my_panels[1] = new_panel(my_wins[1]);   /* Push 1, order: stdscr-0-1 */
+        my_panels[2] = new_panel(my_wins[2]);   /* Push 2, order: stdscr-0-1-2 */
+
+        /* Initialize panel datas saying that nothing is hidden */
+        panel_datas[0].hide = FALSE;
+        panel_datas[1].hide = FALSE;
+        panel_datas[2].hide = FALSE;
+
+        set_panel_userptr(my_panels[0], &panel_datas[0]);
+        set_panel_userptr(my_panels[1], &panel_datas[1]);
+        set_panel_userptr(my_panels[2], &panel_datas[2]);
+
+        /* Update the stacking order. 2nd panel will be on top */
+        update_panels();
+
+        /* Show it on the screen */
+        attron(COLOR_PAIR(4));
+        mvprintw(LINES - 3, 0, "Show or Hide a window with 'a'(first window)  'b'(Second Window)  'c'(Third Window)");
+        mvprintw(LINES - 2, 0, "F1 to Exit");
+
+        attroff(COLOR_PAIR(4));
+        doupdate();
+        
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case 'a':                       
+                                temp = (PANEL_DATA *)panel_userptr(my_panels[0]);
+                                if(temp->hide == FALSE)
+                                {       hide_panel(my_panels[0]);
+                                        temp->hide = TRUE;
+                                }
+                                else
+                                {       show_panel(my_panels[0]);
+                                        temp->hide = FALSE;
+                                }
+                                break;
+                        case 'b':
+                                temp = (PANEL_DATA *)panel_userptr(my_panels[1]);
+                                if(temp->hide == FALSE)
+                                {       hide_panel(my_panels[1]);
+                                        temp->hide = TRUE;
+                                }
+                                else
+                                {       show_panel(my_panels[1]);
+                                        temp->hide = FALSE;
+                                }
+                                break;
+                        case 'c':
+                                temp = (PANEL_DATA *)panel_userptr(my_panels[2]);
+                                if(temp->hide == FALSE)
+                                {       hide_panel(my_panels[2]);
+                                        temp->hide = TRUE;
+                                }
+                                else
+                                {       show_panel(my_panels[2]);
+                                        temp->hide = FALSE;
+                                }
+                                break;
+                }
+                update_panels();
+                doupdate();
+        }
+        endwin();
+        return 0;
+}
+
+/* Put all the windows */
+void init_wins(WINDOW **wins, int n)
+{       int x, y, i;
+        char label[80];
+
+        y = 2;
+        x = 10;
+        for(i = 0; i < n; ++i)
+        {       wins[i] = newwin(NLINES, NCOLS, y, x);
+                sprintf(label, "Window Number %d", i + 1);
+                win_show(wins[i], label, i + 1);
+                y += 3;
+                x += 7;
+        }
+}
+
+/* Show the window with a border and a label */
+void win_show(WINDOW *win, char *label, int label_color)
+{       int startx, starty, height, width;
+
+        getbegyx(win, starty, startx);
+        getmaxyx(win, height, width);
+
+        box(win, 0, 0);
+        mvwaddch(win, 2, 0, ACS_LTEE); 
+        mvwhline(win, 2, 1, ACS_HLINE, width - 2); 
+        mvwaddch(win, 2, width - 1, ACS_RTEE); 
+        
+        print_in_middle(win, 1, 0, width, label, COLOR_PAIR(label_color));
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+
+ +
+
+ +

16.7. panel_above() and panel_below() + Functions

+ +

The functions panel_above() and + panel_below() can be used to find + out the panel above and below a panel. If the argument to + these functions is NULL, then they return a pointer to + bottom panel and top panel respectively.

+
+
+ +
+
+ +

17. Menus + Library

+ +

The menus library provides a nice extension to basic + curses, through which you can create menus. It provides a set + of functions to create menus. But they have to be customized + to give a nicer look, with colors etc. Let's get into the + details.

+ +

A menu is a screen display that assists the user to choose + some subset of a given set of items. To put it simple, a menu + is a collection of items from which one or more items can be + chosen. Some readers might not be aware of multiple item + selection capability. Menu library provides functionality to + write menus from which the user can chose more than one item + as the preferred choice. This is dealt with in a later + section. Now it is time for some rudiments.

+ +
+
+ +

17.1. The Basics

+ +

To create menus, you first create items, and then post + the menu to the display. After that, all the processing of + user responses is done in an elegant function menu_driver() + which is the work horse of any menu program.

+ +

The general flow of control of a menu program looks like + this.

+ +
    +
  1. +

    Initialize curses

    +
  2. + +
  3. +

    Create items using new_item(). You can specify a + name and description for the items.

    +
  4. + +
  5. +

    Create the menu with new_menu() by specifying the + items to be attached with.

    +
  6. + +
  7. +

    Post the menu with menu_post() and refresh the + screen.

    +
  8. + +
  9. +

    Process the user requests with a loop and do + necessary updates to menu with menu_driver.

    +
  10. + +
  11. +

    Unpost the menu with menu_unpost()

    +
  12. + +
  13. +

    Free the memory allocated to menu by free_menu()

    +
  14. + +
  15. +

    Free the memory allocated to the items with + free_item()

    +
  16. + +
  17. +

    End curses

    +
  18. +
+ +

Let's see a program which prints a simple menu and + updates the current selection with up, down arrows.

+
+ +
+
+ +

17.2. Compiling With the Menu + Library

+ +

To use menu library functions, you have to include + menu.h and to link the program with menu library the flag + -lmenu should be added along with -lncurses in that + order.

+
+    #include <menu.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lmenu -lncurses
+
+ +
+ + +

Example 18. Menu Basics

+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+        my_items[n_choices] = (ITEM *)NULL;
+
+        my_menu = new_menu((ITEM **)my_items);
+        mvprintw(LINES - 2, 0, "F1 to Exit");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {   switch(c)
+            {   case KEY_DOWN:
+                        menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                }
+        }       
+
+        free_item(my_items[0]);
+        free_item(my_items[1]);
+        free_menu(my_menu);
+        endwin();
+}
+        
+
+
+ +

This program demonstrates the basic concepts involved in + creating a menu using menus library. First we create the + items using new_item() and then attach them to the menu + with new_menu() function. After posting the menu and + refreshing the screen, the main processing loop starts. It + reads user input and takes corresponding action. The + function menu_driver() is the main work horse of the menu + system. The second parameter to this function tells what's + to be done with the menu. According to the parameter, + menu_driver() does the corresponding task. The value can be + either a menu navigational request, an ascii character, or + a KEY_MOUSE special key associated with a mouse event.

+ +

The menu_driver accepts following navigational + requests.

+
+
     REQ_LEFT_ITEM         Move left to an item.
+     REQ_RIGHT_ITEM      Move right to an item.
+     REQ_UP_ITEM         Move up to an item.
+     REQ_DOWN_ITEM       Move down to an item.
+     REQ_SCR_ULINE       Scroll up a line.
+     REQ_SCR_DLINE          Scroll down a line.
+     REQ_SCR_DPAGE          Scroll down a page.
+     REQ_SCR_UPAGE         Scroll up a page.
+     REQ_FIRST_ITEM     Move to the first item.
+     REQ_LAST_ITEM         Move to the last item.
+     REQ_NEXT_ITEM         Move to the next item.
+     REQ_PREV_ITEM         Move to the previous item. 
+     REQ_TOGGLE_ITEM     Select/deselect an item.
+     REQ_CLEAR_PATTERN     Clear the menu pattern buffer.
+     REQ_BACK_PATTERN      Delete the previous character from the pattern buffer.
+     REQ_NEXT_MATCH     Move to the next item matching the pattern match.
+     REQ_PREV_MATCH     Move to the previous item matching the pattern match.
+
+ +

Don't get overwhelmed by the number of options. We will + see them slowly one after another. The options of interest + in this example are REQ_UP_ITEM and REQ_DOWN_ITEM. These + two options when passed to menu_driver, menu driver updates + the current item to one item up or down respectively.

+
+ +
+
+ +

17.3. Menu Driver: The work horse of the menu + system

+ +

As you have seen in the above example, menu_driver plays + an important role in updating the menu. It is very + important to understand various options it takes and what + they do. As explained above, the second parameter to + menu_driver() can be either a navigational request, a + printable character or a KEY_MOUSE key. Let's dissect the + different navigational requests.

+ +
    +
  • +

    REQ_LEFT_ITEM and + REQ_RIGHT_ITEM

    + +

    A Menu can be displayed with multiple columns for + more than one item. This can be done by using the + menu_format()function. When a + multi columnar menu is displayed these requests cause + the menu driver to move the current selection to left + or right.

    +
  • + +
  • +

    REQ_UP_ITEM and REQ_DOWN_ITEM

    + +

    These two options you have seen in the above + example. These options when given, makes the + menu_driver to move the current selection to an item up + or down.

    +
  • + +
  • +

    REQ_SCR_* + options

    + +

    The four options REQ_SCR_ULINE, REQ_SCR_DLINE, + REQ_SCR_DPAGE, REQ_SCR_UPAGE are related to scrolling. + If all the items in the menu cannot be displayed in the + menu sub window, then the menu is scrollable. These + requests can be given to the menu_driver to do the + scrolling either one line up, down or one page down or + up respectively.

    +
  • + +
  • +

    REQ_FIRST_ITEM, REQ_LAST_ITEM, REQ_NEXT_ITEM + and REQ_PREV_ITEM

    + +

    These requests are self explanatory.

    +
  • + +
  • +

    REQ_TOGGLE_ITEM

    + +

    This request when given, toggles the present + selection. This option is to be used only in a multi + valued menu. So to use this request the option + O_ONEVALUE must be off. This option can be made off or + on with set_menu_opts().

    +
  • + +
  • +

    Pattern + Requests

    + +

    Every menu has an associated pattern buffer, which + is used to find the nearest match to the ascii + characters entered by the user. Whenever ascii + characters are given to menu_driver, it puts in to the + pattern buffer. It also tries to find the nearest match + to the pattern in the items list and moves current + selection to that item. The request REQ_CLEAR_PATTERN + clears the pattern buffer. The request REQ_BACK_PATTERN + deletes the previous character in the pattern buffer. + In case the pattern matches more than one item then the + matched items can be cycled through REQ_NEXT_MATCH and + REQ_PREV_MATCH which move the current selection to the + next and previous matches respectively.

    +
  • + +
  • +

    Mouse + Requests

    + +

    In case of KEY_MOUSE requests, according to the + mouse position an action is taken accordingly. The + action to be taken is explained in the man page as,

    +
    +       If  the  second argument is the KEY_MOUSE special key, the
    +       associated mouse event is translated into one of the above
    +       pre-defined  requests.   Currently only clicks in the user
    +       window (e.g. inside the menu display area or  the  decora­
    +       tion  window)  are handled. If you click above the display
    +       region of the menu, a REQ_SCR_ULINE is generated,  if  you
    +       doubleclick  a  REQ_SCR_UPAGE  is  generated  and  if  you
    +       tripleclick a REQ_FIRST_ITEM is generated.  If  you  click
    +       below  the  display region of the menu, a REQ_SCR_DLINE is
    +       generated, if you doubleclick a REQ_SCR_DPAGE is generated
    +       and  if  you  tripleclick a REQ_LAST_ITEM is generated. If
    +       you click at an item inside the display area of the  menu,
    +       the menu cursor is positioned to that item.
    +
    +
  • +
+ +

Each of the above requests will be explained in the + following lines with several examples whenever + appropriate.

+
+ +
+
+ +

17.4. Menu Windows

+ +

Every menu created is associated with a window and a sub + window. The menu window displays any title or border + associated with the menu. The menu sub window displays the + menu items currently available for selection. But we didn't + specify any window or sub window in the simple example. + When a window is not specified, stdscr is taken as the main + window, and then menu system calculates the sub window size + required for the display of items. Then items are displayed + in the calculated sub window. So let's play with these + windows and display a menu with a border and a title.

+ +
+ + +

Example 19. Menu Windows Usage example

+
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Exit",
+                        (char *)NULL,
+                  };
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        WINDOW *my_menu_win;
+        int n_choices, i;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+
+        /* Create items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+
+        /* Crate menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Create the window to be associated with the menu */
+        my_menu_win = newwin(10, 40, 4, 4);
+        keypad(my_menu_win, TRUE);
+     
+        /* Set main window and sub window */
+        set_menu_win(my_menu, my_menu_win);
+        set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
+
+        /* Set menu mark to the string " * " */
+        set_menu_mark(my_menu, " * ");
+
+        /* Print a border around the main window and print a title */
+        box(my_menu_win, 0, 0);
+        print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
+        mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
+        mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
+        mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+        mvprintw(LINES - 2, 0, "F1 to exit");
+        refresh();
+        
+        /* Post the menu */
+        post_menu(my_menu);
+        wrefresh(my_menu_win);
+
+        while((c = wgetch(my_menu_win)) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                }
+                wrefresh(my_menu_win);
+        }       
+
+        /* Unpost and free all the memory taken up */
+        unpost_menu(my_menu);
+        free_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        endwin();
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+ +

This example creates a menu with a title, border, a + fancy line separating title and the items. As you can see, + in order to attach a window to a menu the function + set_menu_win() has to be used. Then we attach the sub + window also. This displays the items in the sub window. You + can also set the mark string which gets displayed to the + left of the selected item with set_menu_mark().

+
+ +
+
+ +

17.5. Scrolling Menus

+ +

If the sub window given for a window is not big enough + to show all the items, then the menu will be scrollable. + When you are on the last item in the present list, if you + send REQ_DOWN_ITEM, it gets translated into REQ_SCR_DLINE + and the menu scrolls by one item. You can manually give + REQ_SCR_ operations to do scrolling. Let's see how it can + be done.

+ +
+ + +

Example 20. Scrolling Menus example

+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Choice 8",
+                        "Choice 9",
+                        "Choice 10",
+                        "Exit",
+                        (char *)NULL,
+                  };
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        WINDOW *my_menu_win;
+        int n_choices, i;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_CYAN, COLOR_BLACK);
+
+        /* Create items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+
+        /* Crate menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Create the window to be associated with the menu */
+        my_menu_win = newwin(10, 40, 4, 4);
+        keypad(my_menu_win, TRUE);
+     
+        /* Set main window and sub window */
+        set_menu_win(my_menu, my_menu_win);
+        set_menu_sub(my_menu, derwin(my_menu_win, 6, 38, 3, 1));
+        set_menu_format(my_menu, 5, 1);
+                        
+        /* Set menu mark to the string " * " */
+        set_menu_mark(my_menu, " * ");
+
+        /* Print a border around the main window and print a title */
+        box(my_menu_win, 0, 0);
+        print_in_middle(my_menu_win, 1, 0, 40, "My Menu", COLOR_PAIR(1));
+        mvwaddch(my_menu_win, 2, 0, ACS_LTEE);
+        mvwhline(my_menu_win, 2, 1, ACS_HLINE, 38);
+        mvwaddch(my_menu_win, 2, 39, ACS_RTEE);
+        
+        /* Post the menu */
+        post_menu(my_menu);
+        wrefresh(my_menu_win);
+        
+        attron(COLOR_PAIR(2));
+        mvprintw(LINES - 2, 0, "Use PageUp and PageDown to scoll down or up a page of items");
+        mvprintw(LINES - 1, 0, "Arrow Keys to navigate (F1 to Exit)");
+        attroff(COLOR_PAIR(2));
+        refresh();
+
+        while((c = wgetch(my_menu_win)) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case KEY_NPAGE:
+                                menu_driver(my_menu, REQ_SCR_DPAGE);
+                                break;
+                        case KEY_PPAGE:
+                                menu_driver(my_menu, REQ_SCR_UPAGE);
+                                break;
+                }
+                wrefresh(my_menu_win);
+        }       
+
+        /* Unpost and free all the memory taken up */
+        unpost_menu(my_menu);
+        free_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        endwin();
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+ +

This program is self-explanatory. In this example the + number of choices has been increased to ten, which is + larger than our sub window size which can hold 6 items. + This message has to be explicitly conveyed to the menu + system with the function set_menu_format(). In here we + specify the number of rows and columns we want to be + displayed for a single page. We can specify any number of + items to be shown, in the rows variables, if it is less + than the height of the sub window. If the key pressed by + the user is a PAGE UP or PAGE DOWN, the menu is scrolled a + page due to the requests (REQ_SCR_DPAGE and REQ_SCR_UPAGE) + given to menu_driver().

+
+ +
+
+ +

17.6. Multi Columnar Menus

+ +

In the above example you have seen how to use the + function set_menu_format(). I didn't mention what the cols + variable (third parameter) does. Well, If your sub window + is wide enough, you can opt to display more than one item + per row. This can be specified in the cols variable. To + make things simpler, the following example doesn't show + descriptions for the items.

+ +
+ + +

Example 21. Milt Columnar Menus Example

+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1", "Choice 2", "Choice 3", "Choice 4", "Choice 5",
+                        "Choice 6", "Choice 7", "Choice 8", "Choice 9", "Choice 10",
+                        "Choice 11", "Choice 12", "Choice 13", "Choice 14", "Choice 15",
+                        "Choice 16", "Choice 17", "Choice 18", "Choice 19", "Choice 20",
+                        "Exit",
+                        (char *)NULL,
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        WINDOW *my_menu_win;
+        int n_choices, i;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_CYAN, COLOR_BLACK);
+
+        /* Create items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+
+        /* Crate menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Set menu option not to show the description */
+        menu_opts_off(my_menu, O_SHOWDESC);
+
+        /* Create the window to be associated with the menu */
+        my_menu_win = newwin(10, 70, 4, 4);
+        keypad(my_menu_win, TRUE);
+     
+        /* Set main window and sub window */
+        set_menu_win(my_menu, my_menu_win);
+        set_menu_sub(my_menu, derwin(my_menu_win, 6, 68, 3, 1));
+        set_menu_format(my_menu, 5, 3);
+        set_menu_mark(my_menu, " * ");
+
+        /* Print a border around the main window and print a title */
+        box(my_menu_win, 0, 0);
+        
+        attron(COLOR_PAIR(2));
+        mvprintw(LINES - 3, 0, "Use PageUp and PageDown to scroll");
+        mvprintw(LINES - 2, 0, "Use Arrow Keys to navigate (F1 to Exit)");
+        attroff(COLOR_PAIR(2));
+        refresh();
+
+        /* Post the menu */
+        post_menu(my_menu);
+        wrefresh(my_menu_win);
+        
+        while((c = wgetch(my_menu_win)) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case KEY_LEFT:
+                                menu_driver(my_menu, REQ_LEFT_ITEM);
+                                break;
+                        case KEY_RIGHT:
+                                menu_driver(my_menu, REQ_RIGHT_ITEM);
+                                break;
+                        case KEY_NPAGE:
+                                menu_driver(my_menu, REQ_SCR_DPAGE);
+                                break;
+                        case KEY_PPAGE:
+                                menu_driver(my_menu, REQ_SCR_UPAGE);
+                                break;
+                }
+                wrefresh(my_menu_win);
+        }       
+
+        /* Unpost and free all the memory taken up */
+        unpost_menu(my_menu);
+        free_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        endwin();
+}
+
+
+ +

Watch the function call to set_menu_format(). It + specifies the number of columns to be 3, thus displaying 3 + items per row. We have also switched off the showing + descriptions with the function menu_opts_off(). There are + couple of functions set_menu_opts(), menu_opts_on() and + menu_opts() which can be used to manipulate menu options. + The following menu options can be specified.

+
+       O_ONEVALUE
+            Only one item can be selected for this menu.
+
+       O_SHOWDESC
+            Display  the  item  descriptions  when  the  menu  is
+            posted.
+
+       O_ROWMAJOR
+            Display the menu in row-major order.
+
+       O_IGNORECASE
+            Ignore the case when pattern-matching.
+
+       O_SHOWMATCH
+            Move the cursor to within the item  name  while  pat­
+            tern-matching.
+
+       O_NONCYCLIC
+            Don't   wrap   around  next-item  and  previous-item,
+            requests to the other end of the menu.
+
+ +

All options are on by default. You can switch specific + attributes on or off with menu_opts_on() and + menu_opts_off() functions. You can also use set_menu_opts() + to directly specify the options. The argument to this + function should be a OR ed value of some of those above + constants. The function menu_opts() can be used to find out + a menu's present options.

+
+ +
+
+ +

17.7. Multi Valued Menus

+ +

You might be wondering what if you switch off the option + O_ONEVALUE. Then the menu becomes multi-valued. That means + you can select more than one item. This brings us to the + request REQ_TOGGLE_ITEM. Let's see it in action.

+ +
+ + +

Example 22. Multi Valued Menus example

+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Exit",
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        /* Initialize curses */ 
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+        my_items[n_choices] = (ITEM *)NULL;
+
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Make the menu multi valued */
+        menu_opts_off(my_menu, O_ONEVALUE);
+
+        mvprintw(LINES - 3, 0, "Use <SPACE> to select or unselect an item.");
+        mvprintw(LINES - 2, 0, "<ENTER> to see presently selected items(F1 to Exit)");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case ' ':
+                                menu_driver(my_menu, REQ_TOGGLE_ITEM);
+                                break;
+                        case 10:        /* Enter */
+                        {       char temp[200];
+                                ITEM **items;
+
+                                items = menu_items(my_menu);
+                                temp[0] = '\0';
+                                for(i = 0; i < item_count(my_menu); ++i)
+                                        if(item_value(items[i]) == TRUE)
+                                        {       strcat(temp, item_name(items[i]));
+                                                strcat(temp, " ");
+                                        }
+                                move(20, 0);
+                                clrtoeol();
+                                mvprintw(20, 0, temp);
+                                refresh();
+                        }
+                        break;
+                }
+        }       
+
+        free_item(my_items[0]);
+        free_item(my_items[1]);
+        free_menu(my_menu);
+        endwin();
+}
+        
+
+
+ +

Whew, A lot of new functions. Let's take them one after + another. Firstly, the REQ_TOGGLE_ITEM. In a multi-valued + menu, the user should be allowed to select or un select + more than one item. The request REQ_TOGGLE_ITEM toggles the + present selection. In this case when space is pressed + REQ_TOGGLE_ITEM request is sent to menu_driver to achieve + the result.

+ +

Now when the user presses <ENTER> we show the + items he presently selected. First we find out the items + associated with the menu using the function menu_items(). + Then we loop through the items to find out if the item is + selected or not. The function item_value() returns TRUE if + an item is selected. The function item_count() returns the + number of items in the menu. The item name can be found + with item_name(). You can also find the description + associated with an item using item_description().

+
+ +
+
+ +

17.8. Menu + Options

+ +

Well, by this time you must be itching for some + difference in your menu, with lots of functionality. I + know. You want Colors !!!. You want to create nice menus + similar to those text mode dos + games. The functions set_menu_fore() and + set_menu_back() can be used to change the attribute of the + selected item and unselected item. The names are + misleading. They don't change menu's foreground or + background which would have been useless.

+ +

The function set_menu_grey() can be used to set the + display attribute for the non-selectable items in the menu. + This brings us to the interesting option for an item the + one and only O_SELECTABLE. We can turn it off by the + function item_opts_off() and after that that item is not + selectable. It is like a grayed item in those fancy windows + menus. Let's put these concepts in practice with this + example

+ +
+ + +

Example 23. Menu Options example

+
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Exit",
+                  };
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        /* Initialize curses */ 
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+
+        /* Initialize items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+                my_items[i] = new_item(choices[i], choices[i]);
+        my_items[n_choices] = (ITEM *)NULL;
+        item_opts_off(my_items[3], O_SELECTABLE);
+        item_opts_off(my_items[6], O_SELECTABLE);
+
+        /* Create menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Set fore ground and back ground of the menu */
+        set_menu_fore(my_menu, COLOR_PAIR(1) | A_REVERSE);
+        set_menu_back(my_menu, COLOR_PAIR(2));
+        set_menu_grey(my_menu, COLOR_PAIR(3));
+
+        /* Post the menu */
+        mvprintw(LINES - 3, 0, "Press <ENTER> to see the option selected");
+        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case 10: /* Enter */
+                                move(20, 0);
+                                clrtoeol();
+                                mvprintw(20, 0, "Item selected is : %s", 
+                                                item_name(current_item(my_menu)));
+                                pos_menu_cursor(my_menu);
+                                break;
+                }
+        }       
+        unpost_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        free_menu(my_menu);
+        endwin();
+}
+        
+
+
+
+ +
+
+ +

17.9. The useful User Pointer

+ +

We can associate a user pointer with each item in the + menu. It works the same way as user pointer in panels. It is + not touched by menu system. You can store any thing you + like in that. I usually use it to store the function to be + executed when the menu option is chosen (It is selected and + may be the user pressed <ENTER>);

+ +
+ + +

Example 24. Menu User Pointer Usage

+
+#include <curses.h>
+#include <menu.h>
+
+#define ARRAY_SIZE(a) (sizeof(a) / sizeof(a[0]))
+#define CTRLD   4
+
+char *choices[] = {
+                        "Choice 1",
+                        "Choice 2",
+                        "Choice 3",
+                        "Choice 4",
+                        "Choice 5",
+                        "Choice 6",
+                        "Choice 7",
+                        "Exit",
+                  };
+void func(char *name);
+
+int main()
+{       ITEM **my_items;
+        int c;                          
+        MENU *my_menu;
+        int n_choices, i;
+        ITEM *cur_item;
+        
+        /* Initialize curses */ 
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+        init_pair(2, COLOR_GREEN, COLOR_BLACK);
+        init_pair(3, COLOR_MAGENTA, COLOR_BLACK);
+
+        /* Initialize items */
+        n_choices = ARRAY_SIZE(choices);
+        my_items = (ITEM **)calloc(n_choices + 1, sizeof(ITEM *));
+        for(i = 0; i < n_choices; ++i)
+        {       my_items[i] = new_item(choices[i], choices[i]);
+                /* Set the user pointer */
+                set_item_userptr(my_items[i], func);
+        }
+        my_items[n_choices] = (ITEM *)NULL;
+
+        /* Create menu */
+        my_menu = new_menu((ITEM **)my_items);
+
+        /* Post the menu */
+        mvprintw(LINES - 3, 0, "Press <ENTER> to see the option selected");
+        mvprintw(LINES - 2, 0, "Up and Down arrow keys to naviage (F1 to Exit)");
+        post_menu(my_menu);
+        refresh();
+
+        while((c = getch()) != KEY_F(1))
+        {       switch(c)
+                {       case KEY_DOWN:
+                                menu_driver(my_menu, REQ_DOWN_ITEM);
+                                break;
+                        case KEY_UP:
+                                menu_driver(my_menu, REQ_UP_ITEM);
+                                break;
+                        case 10: /* Enter */
+                        {       ITEM *cur;
+                                void (*p)(char *);
+
+                                cur = current_item(my_menu);
+                                p = item_userptr(cur);
+                                p((char *)item_name(cur));
+                                pos_menu_cursor(my_menu);
+                                break;
+                        }
+                        break;
+                }
+        }       
+        unpost_menu(my_menu);
+        for(i = 0; i < n_choices; ++i)
+                free_item(my_items[i]);
+        free_menu(my_menu);
+        endwin();
+}
+
+void func(char *name)
+{       move(20, 0);
+        clrtoeol();
+        mvprintw(20, 0, "Item selected is : %s", name);
+}       
+
+
+
+
+ +
+
+ +

18. Forms + Library

+ +

Well. If you have seen those forms on web pages which take + input from users and do various kinds of things, you might be + wondering how would any one create such forms in text mode + display. It is quite difficult to write those nifty forms in + plain ncurses. Forms library tries to provide a basic frame + work to build and maintain forms with ease. It has lot of + features(functions) which manage validation, dynamic + expansion of fields etc.. Let's see it in full flow.

+ +

A form is a collection of fields; each field can be either + a label(static text) or a data-entry location. The forms also + library provides functions to divide forms into multiple + pages.

+ +
+
+ +

18.1. The Basics

+ +

Forms are created in much the same way as menus. First + the fields related to the form are created with + new_field(). You can set options for the fields, so that + they can be displayed with some fancy attributes, validated + before the field looses focus etc.. Then the fields are + attached to form. After this, the form can be posted to + display and is ready to receive inputs. On the similar + lines to menu_driver(), the form is manipulated with + form_driver(). We can send requests to form_driver to move + focus to a certain field, move cursor to end of the field + etc.. After the user enters values in the fields and + validation done, form can be unposted and memory allocated + can be freed.

+ +

The general flow of control of a forms program looks + like this.

+ +
    +
  1. +

    Initialize curses

    +
  2. + +
  3. +

    Create fields using new_field(). You can specify the + height and width of the field, and its position on the + form.

    +
  4. + +
  5. +

    Create the forms with new_form() by specifying the + fields to be attached with.

    +
  6. + +
  7. +

    Post the form with form_post() and refresh the + screen.

    +
  8. + +
  9. +

    Process the user requests with a loop and do + necessary updates to form with form_driver.

    +
  10. + +
  11. +

    Unpost the menu with form_unpost()

    +
  12. + +
  13. +

    Free the memory allocated to menu by free_form()

    +
  14. + +
  15. +

    Free the memory allocated to the items with + free_field()

    +
  16. + +
  17. +

    End curses

    +
  18. +
+ +

As you can see, working with forms library is much + similar to handling menu library. The following examples + will explore various aspects of form processing. Let's + start the journey with a simple example. first.

+
+ +
+
+ +

18.2. Compiling With the Forms + Library

+ +

To use forms library functions, you have to include + form.h and to link the program with forms library the flag + -lform should be added along with -lncurses in that + order.

+
+    #include <form.h>
+    .
+    .
+    .
+
+    compile and link: gcc <program file> -lform -lncurses
+
+ +
+ + +

Example 25. Forms Basics

+
+#include <form.h>
+
+int main()
+{       FIELD *field[3];
+        FORM  *my_form;
+        int ch;
+        
+        /* Initialize curses */
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize the fields */
+        field[0] = new_field(1, 10, 4, 18, 0, 0);
+        field[1] = new_field(1, 10, 6, 18, 0, 0);
+        field[2] = NULL;
+
+        /* Set field options */
+        set_field_back(field[0], A_UNDERLINE);  /* Print a line for the option  */
+        field_opts_off(field[0], O_AUTOSKIP);   /* Don't go to next field when this */
+                                                /* Field is filled up           */
+        set_field_back(field[1], A_UNDERLINE); 
+        field_opts_off(field[1], O_AUTOSKIP);
+
+        /* Create the form and post it */
+        my_form = new_form(field);
+        post_form(my_form);
+        refresh();
+        
+        mvprintw(4, 10, "Value 1:");
+        mvprintw(6, 10, "Value 2:");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+
+ +

Above example is pretty straight forward. It creates two + fields with new_field(). + new_field() takes height, width, starty, startx, number of + offscreen rows and number of additional working buffers. + The fifth argument number of offscreen rows specifies how + much of the field to be shown. If it is zero, the entire + field is always displayed otherwise the form will be + scrollable when the user accesses not displayed parts of + the field. The forms library allocates one buffer per field + to store the data user enters. Using the last parameter to + new_field() we can specify it to allocate some additional + buffers. These can be used for any purpose you like.

+ +

After creating the fields, back ground attribute of both + of them is set to an underscore with set_field_back(). The + AUTOSKIP option is turned off using field_opts_off(). If + this option is turned on, focus will move to the next field + in the form once the active field is filled up + completely.

+ +

After attaching the fields to the form, it is posted. + Here on, user inputs are processed in the while loop, by + making corresponding requests to form_driver. The details + of all the requests to the form_driver() are explained + later.

+
+ +
+
+ +

18.3. Playing with Fields

+ +

Each form field is associated with a lot of attributes. + They can be manipulated to get the required effect and to + have fun !!!. So why wait?

+ +
+
+ +

18.3.1. Fetching Size and Location of + Field

+ +

The parameters we have given at the time of creation + of a field can be retrieved with field_info(). It returns + height, width, starty, startx, number of offscreen rows, + and number of additional buffers into the parameters + given to it. It is a sort of inverse of new_field().

+
+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 */
+
+
+ +
+
+ +

18.3.2. Moving the field

+ +

The location of the field can be moved to a different + position with move_field().

+
+int move_field(    FIELD *field,              /* field to alter */
+                   int top, int left);        /* new upper-left corner */
+
+ +

As usual, the changed position can be queried with + field_infor().

+
+ +
+
+ +

18.3.3. Field Justification

+ +

The justification to be done for the field can be + fixed using the function set_field_just().

+
+    int set_field_just(FIELD *field,          /* field to alter */
+               int justmode);         /* mode to set */
+    int field_just(FIELD *field);          /* fetch justify mode of field */
+
+ +

The justification mode valued accepted and returned by + these functions are NO_JUSTIFICATION, JUSTIFY_RIGHT, + JUSTIFY_LEFT, or JUSTIFY_CENTER.

+
+ +
+
+ +

18.3.4. Field Display + Attributes

+ +

As you have seen, in the above example, display + attribute for the fields can be set with set_field_fore() + and setfield_back(). These functions set foreground and + background attribute of the fields. You can also specify + a pad character which will be filled in the unfilled + portion of the field. The pad character is set with a + call to set_field_pad(). Default pad value is a space. + The functions field_fore(), field_back, field_pad() can + be used to query the present foreground, background + attributes and pad character for the field. The following + list gives the usage of functions.

+
+
int set_field_fore(FIELD *field,        /* field to alter */
+                   chtype attr);        /* attribute to set */ 
+
+chtype field_fore(FIELD *field);        /* field to query */
+                                        /* returns foreground attribute */
+
+int set_field_back(FIELD *field,        /* field to alter */
+                   chtype attr);        /* attribute to set */ 
+
+chtype field_back(FIELD *field);        /* field to query */
+                                        /* returns background attribute */
+
+int set_field_pad(FIELD *field,         /* field to alter */
+                  int pad);             /* pad character to set */ 
+
+chtype field_pad(FIELD *field);         /* field to query */  
+                                        /* returns present pad character */
+
+ +

Though above functions seem quite simple, using colors + with set_field_fore() may be frustrating in the + beginning. Let me first explain about foreground and + background attributes of a field. The foreground + attribute is associated with the character. That means a + character in the field is printed with the attribute you + have set with set_field_fore(). Background attribute is + the attribute used to fill background of field, whether + any character is there or not. So what about colors? + Since colors are always defined in pairs, what is the + right way to display colored fields? Here's an example + clarifying color attributes.

+ +
+ + +

Example 26. Form Attributes example

+
+#include <form.h>
+
+int main()
+{       FIELD *field[3];
+        FORM  *my_form;
+        int ch;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize few color pairs */
+        init_pair(1, COLOR_WHITE, COLOR_BLUE);
+        init_pair(2, COLOR_WHITE, COLOR_BLUE);
+
+        /* Initialize the fields */
+        field[0] = new_field(1, 10, 4, 18, 0, 0);
+        field[1] = new_field(1, 10, 6, 18, 0, 0);
+        field[2] = NULL;
+
+        /* Set field options */
+        set_field_fore(field[0], COLOR_PAIR(1));/* Put the field with blue background */
+        set_field_back(field[0], COLOR_PAIR(2));/* and white foreground (characters */
+                                                /* are printed in white         */
+        field_opts_off(field[0], O_AUTOSKIP);   /* Don't go to next field when this */
+                                                /* Field is filled up           */
+        set_field_back(field[1], A_UNDERLINE); 
+        field_opts_off(field[1], O_AUTOSKIP);
+
+        /* Create the form and post it */
+        my_form = new_form(field);
+        post_form(my_form);
+        refresh();
+        
+        set_current_field(my_form, field[0]); /* Set focus to the colored field */
+        mvprintw(4, 10, "Value 1:");
+        mvprintw(6, 10, "Value 2:");
+        mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+
+ +

Play with the color pairs and try to understand the + foreground and background attributes. In my programs + using color attributes, I usually set only the background + with set_field_back(). Curses simply doesn't allow + defining individual color attributes.

+
+ +
+
+ +

18.3.5. Field Option Bits

+ +

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:

+
+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 */ 
+
+ +

The function set_field_opts() can be used to directly + set attributes of a field or you can choose to switch a + few attributes on and off with field_opts_on() and + field_opts_off() selectively. Anytime you can query the + attributes of a field with field_opts(). The following is + the list of available options. By default, all options + are on.

+ +
+
+
O_VISIBLE
+ +
+

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.

+
+ +
O_ACTIVE
+ +
+

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.

+
+ +
O_PUBLIC
+ +
+

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.

+
+ +
O_EDIT
+ +
+

Controls whether the field's data can be + modified. When this option is off, all editing + requests except REQ_PREV_CHOICE and REQ_NEXT_CHOICEwill fail. Such + read-only fields may be useful for help + messages.

+
+ +
O_WRAP
+ +
+

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.

+
+ +
O_BLANK
+ +
+

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).

+
+ +
O_AUTOSKIP
+ +
+

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.

+
+ +
O_NULLOK
+ +
+

Controls whether validation 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.

+
+ +
O_PASSOK
+ +
+

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.

+
+ +
O_STATIC
+ +
+

Controls whether the field is fixed to its + initial dimensions. If you turn this off, the field + becomes dynamic and will stretch to fit entered + data.

+
+
+
+ +

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.

+ +

The option values are bit-masks and can be composed + with logical-or in the obvious way. You have seen the + usage of switching off O_AUTOSKIP option. The following + example clarifies usage of some more options. Other + options are explained where appropriate.

+ +
+ + +

Example 27. Field Options Usage example

+
+#include <form.h>
+
+#define STARTX 15
+#define STARTY 4
+#define WIDTH 25
+
+#define N_FIELDS 3
+
+int main()
+{       FIELD *field[N_FIELDS];
+        FORM  *my_form;
+        int ch, i;
+        
+        /* Initialize curses */
+        initscr();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize the fields */
+        for(i = 0; i < N_FIELDS - 1; ++i)
+                field[i] = new_field(1, WIDTH, STARTY + i * 2, STARTX, 0, 0);
+        field[N_FIELDS - 1] = NULL;
+
+        /* Set field options */
+        set_field_back(field[1], A_UNDERLINE);  /* Print a line for the option  */
+        
+        field_opts_off(field[0], O_ACTIVE); /* This field is a static label */
+        field_opts_off(field[1], O_PUBLIC); /* This filed is like a password field*/
+        field_opts_off(field[1], O_AUTOSKIP); /* To avoid entering the same field */
+                                              /* after last character is entered */
+        
+        /* Create the form and post it */
+        my_form = new_form(field);
+        post_form(my_form);
+        refresh();
+        
+        set_field_just(field[0], JUSTIFY_CENTER); /* Center Justification */
+        set_field_buffer(field[0], 0, "This is a static Field"); 
+                                                  /* Initialize the field  */
+        mvprintw(STARTY, STARTX - 10, "Field 1:");
+        mvprintw(STARTY + 2, STARTX - 10, "Field 2:");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = getch()) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+
+ +

This example, though useless, shows the usage of + options. If used properly, they can present information + very effectively in a form. The second field being not + O_PUBLIC, does not show the characters you are + typing.

+
+ +
+
+ +

18.3.6. Field Status

+ +

The field status specifies whether the field has got + edited or not. It is initially set to FALSE and when user + enters something and the data buffer gets modified it + becomes TRUE. So a field's status can be queried to find + out whether it has been modified or not. The following + functions can assist in those operations.

+
+int set_field_status(FIELD *field,      /* field to alter */
+                   int status);         /* status to set */
+
+int field_status(FIELD *field);         /* fetch status of field */
+
+ +

It is better to check the field's status only after + after leaving the field, as data buffer might not have + been updated yet as the validation is still due. To + guarantee that right status is returned, call + field_status() 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 + REQ_VALIDATION request has been processed by the forms + driver

+
+ +
+
+ +

18.3.7. Field User Pointer

+ +

Every field structure contains one pointer that can be + used by the user for various purposes. It is not touched + by forms library and can be used for any purpose by the + user. The following functions set and fetch user + pointer.

+
+int set_field_userptr(FIELD *field,   
+           char *userptr);      /* the user pointer you wish to associate */
+                                /* with the field    */
+
+char *field_userptr(FIELD *field);      /* fetch user pointer of the field */
+
+
+ +
+
+ +

18.3.8. Variable-Sized + Fields

+ +

If you want a dynamically changing field with variable + width, this is the feature you want to put to full use. + This will allow the user to enter more data than the + original size of the field and let the field grow. + According to the field orientation it will scroll + horizontally or vertically to incorporate the new + data.

+ +

To make a field dynamically growable, the option + O_STATIC should be turned off. This can be done with + a

+
+    field_opts_off(field_pointer, O_STATIC);
+
+ +

But it is usually not advisable to allow a field to + grow infinitely. You can set a maximum limit to the + growth of the field with

+
+int set_max_field(FIELD *field,    /* Field on which to operate */
+                  int max_growth); /* maximum growth allowed for the field */
+
+ +

The field info for a dynamically growable field can be + retrieved by

+
+int dynamic_field_info( FIELD *field,     /* Field on which to operate */
+            int   *prows,     /* number of rows will be filled in this */
+            int   *pcols,     /* number of columns will be filled in this*/
+            int   *pmax)      /* maximum allowable growth will be filled */
+                              /* in this */
+
Though field_info work as usual, it is advisable to use this +function to get the proper attributes of a dynamically growable +field. + +

Recall the library routine new_field; a new field + created with height set to one will be defined to be a + one line field. A new field created with height greater + than one will be defined to be a multi line field.

+ +

A one line field with O_STATIC turned off (dynamically + growable field) will contain a single fixed row, but the + number of columns can increase if the user enters more + data than the initial field will hold. The number of + columns displayed will remain fixed and the additional + data will scroll horizontally.

+ +

A multi line field with O_STATIC turned off + (dynamically growable field) will contain a fixed number + of columns, but the number of rows can increase if the + user enters more data than the initial field will hold. + The number of rows displayed will remain fixed and the + additional data will scroll vertically.

+ +

The above two paragraphs pretty much describe a + dynamically growable field's behavior. The way other + parts of forms library behaves is described below:

+ +
    +
  1. +

    The field option O_AUTOSKIP will be ignored if the + option O_STATIC is off and there is no maximum growth + specified for the field. Currently, O_AUTOSKIP + generates an automatic REQ_NEXT_FIELD form driver + request when the user types in the last character + position of a field. On a growable field with no + maximum growth specified, there is no last character + position. If a maximum growth is specified, the + O_AUTOSKIP option will work as normal if the field + has grown to its maximum size.

    +
  2. + +
  3. +

    The field justification will be ignored if the + option O_STATIC is off. Currently, set_field_just can + be used to JUSTIFY_LEFT, JUSTIFY_RIGHT, + JUSTIFY_CENTER the contents of a one line field. A + growable one line field will, by definition, grow and + scroll horizontally and may contain more data than + can be justified. The return from field_just will be + unchanged.

    +
  4. + +
  5. +

    The overloaded form driver request REQ_NEW_LINE + will operate the same way regardless of the + O_NL_OVERLOAD form option if the field option + O_STATIC is off and there is no maximum growth + specified for the field. Currently, if the form + option O_NL_OVERLOAD is on, REQ_NEW_LINE implicitly + generates a REQ_NEXT_FIELD if called from the last + line of a field. If a field can grow without bound, + there is no last line, so REQ_NEW_LINE will never + implicitly generate a REQ_NEXT_FIELD. If a maximum + growth limit is specified and the O_NL_OVERLOAD form + option is on, REQ_NEW_LINE will only implicitly + generate REQ_NEXT_FIELD if the field has grown to its + maximum size and the user is on the last line.

    +
  6. + +
  7. +

    The library call dup_field will work as usual; it + will duplicate the field, including the current + buffer size and contents of the field being + duplicated. Any specified maximum growth will also be + duplicated.

    +
  8. + +
  9. +

    The library call link_field will work as usual; it + will duplicate all field attributes and share buffers + with the field being linked. If the O_STATIC field + option is subsequently changed by a field sharing + buffers, how the system reacts to an attempt to enter + more data into the field than the buffer will + currently hold will depend on the setting of the + option in the current field.

    +
  10. + +
  11. +

    The library call field_info will work as usual; + the variable nrow will contain the value of the + original call to new_field. The user should use + dynamic_field_info, described above, to query the + current size of the buffer.

    +
  12. +
+ +

Some of the above points make sense only after + explaining form driver. We will be looking into that in + next few sections.

+
+
+ +
+
+ +

18.4. Form Windows

+ +

The form windows concept is pretty much similar to menu + windows. Every form is associated with a main window and a + sub window. The form main window displays any title or + border associated or whatever the user wishes. Then the sub + window contains all the fields and displays them according + to their position. This gives the flexibility of + manipulating fancy form displaying very easily.

+ +

Since this is pretty much similar to menu windows, I am + providing an example with out much explanation. The + functions are similar and they work the same way.

+ +
+ + +

Example 28. Form Windows Example

+
+#include <form.h>
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color);
+
+int main()
+{
+        FIELD *field[3];
+        FORM  *my_form;
+        WINDOW *my_form_win;
+        int ch, rows, cols;
+        
+        /* Initialize curses */
+        initscr();
+        start_color();
+        cbreak();
+        noecho();
+        keypad(stdscr, TRUE);
+
+        /* Initialize few color pairs */
+        init_pair(1, COLOR_RED, COLOR_BLACK);
+
+        /* Initialize the fields */
+        field[0] = new_field(1, 10, 6, 1, 0, 0);
+        field[1] = new_field(1, 10, 8, 1, 0, 0);
+        field[2] = NULL;
+
+        /* Set field options */
+        set_field_back(field[0], A_UNDERLINE);
+        field_opts_off(field[0], O_AUTOSKIP); /* Don't go to next field when this */
+                                              /* Field is filled up             */
+        set_field_back(field[1], A_UNDERLINE); 
+        field_opts_off(field[1], O_AUTOSKIP);
+        
+        /* Create the form and post it */
+        my_form = new_form(field);
+        
+        /* Calculate the area required for the form */
+        scale_form(my_form, &rows, &cols);
+
+        /* Create the window to be associated with the form */
+        my_form_win = newwin(rows + 4, cols + 4, 4, 4);
+        keypad(my_form_win, TRUE);
+
+        /* Set main window and sub window */
+        set_form_win(my_form, my_form_win);
+        set_form_sub(my_form, derwin(my_form_win, rows, cols, 2, 2));
+
+        /* Print a border around the main window and print a title */
+        box(my_form_win, 0, 0);
+        print_in_middle(my_form_win, 1, 0, cols + 4, "My Form", COLOR_PAIR(1));
+        
+        post_form(my_form);
+        wrefresh(my_form_win);
+
+        mvprintw(LINES - 2, 0, "Use UP, DOWN arrow keys to switch between fields");
+        refresh();
+
+        /* Loop through to get user requests */
+        while((ch = wgetch(my_form_win)) != KEY_F(1))
+        {       switch(ch)
+                {       case KEY_DOWN:
+                                /* Go to next field */
+                                form_driver(my_form, REQ_NEXT_FIELD);
+                                /* Go to the end of the present buffer */
+                                /* Leaves nicely at the last character */
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        case KEY_UP:
+                                /* Go to previous field */
+                                form_driver(my_form, REQ_PREV_FIELD);
+                                form_driver(my_form, REQ_END_LINE);
+                                break;
+                        default:
+                                /* If this is a normal character, it gets */
+                                /* Printed                                */    
+                                form_driver(my_form, ch);
+                                break;
+                }
+        }
+
+        /* Un post form and free the memory */
+        unpost_form(my_form);
+        free_form(my_form);
+        free_field(field[0]);
+        free_field(field[1]); 
+
+        endwin();
+        return 0;
+}
+
+void print_in_middle(WINDOW *win, int starty, int startx, int width, char *string, chtype color)
+{       int length, x, y;
+        float temp;
+
+        if(win == NULL)
+                win = stdscr;
+        getyx(win, y, x);
+        if(startx != 0)
+                x = startx;
+        if(starty != 0)
+                y = starty;
+        if(width == 0)
+                width = 80;
+
+        length = strlen(string);
+        temp = (width - length)/ 2;
+        x = startx + (int)temp;
+        wattron(win, color);
+        mvwprintw(win, y, x, "%s", string);
+        wattroff(win, color);
+        refresh();
+}
+
+
+
+ +
+
+ +

18.5. Field Validation

+ +

By default, a field will accept any data input by the + user. It is possible to attach validation to the field. + Then any attempt by the user to leave the field, while it + contains data that doesn't 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.

+ +

Validation can be attached to a field with the following + function.

+
+int set_field_type(FIELD *field,          /* field to alter */
+                   FIELDTYPE *ftype,      /* type to associate */
+                   ...);                  /* additional arguments*/
+
Once set, the validation type for a field can be queried with +
+FIELDTYPE *field_type(FIELD *field);      /* field to query */
+
+ +

The form driver validates the data in a field only when + data is entered by the end-user. Validation does not occur + when

+ +
    +
  • +

    the application program changes the field value by + calling set_field_buffer.

    +
  • + +
  • +

    linked field values are changed indirectly -- by + changing the field to which they are linked

    +
  • +
+ +

The following are the pre-defined validation types. You + can also specify custom validation, though it is a bit + tricky and cumbersome.

+ +

TYPE_ALPHA

+ +

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:

+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ALPHA,            /* type to associate */
+                   int width);            /* minimum width of field */
+
+ +

The width argument sets a minimum width of data. The + user has to enter at-least width number of characters + before he can leave the field. Typically you'll 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.

+ +

TYPE_ALNUM

+ +

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:

+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_ALNUM,            /* type to associate */
+                   int width);            /* minimum width of field */
+
+ +

The width argument sets a minimum width of data. As with + TYPE_ALPHA, typically you'll 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.

+ +

TYPE_ENUM

+ +

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:

+
+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? */
+
+ +

The valuelist parameter must point at a NULL-terminated + list of valid strings. The checkcase argument, if true, + makes comparison with the string case-sensitive.

+ +

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.

+ +

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 checkunique + argument, if true, requires prefix matches to be unique in + order to be valid.

+ +

The REQ_NEXT_CHOICE and REQ_PREV_CHOICE input requests + can be particularly useful with these fields.

+ +

TYPE_INTEGER

+ +

This field type accepts an integer. It is set up as + follows:

+
+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 */
+
+ +

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.

+ +

If the value passes its range check, it is padded with + as many leading zero digits as necessary to meet the + padding argument.

+ +

A TYPE_INTEGER value buffer can conveniently be + interpreted with the C library function atoi(3).

+ +

TYPE_NUMERIC

+ +

This field type accepts a decimal number. It is set up + as follows:

+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_NUMERIC,          /* type to associate */
+                   int padding,           /* # places of precision */
+                   int vmin, int vmax);   /* valid range */
+
+ +

Valid characters consist of an optional leading minus + and digits. possibly including a decimal point. The range + check is performed on exit. If the range maximum is less + than or equal to the minimum, the range is ignored.

+ +

If the value passes its range check, it is padded with + as many trailing zero digits as necessary to meet the + padding argument.

+ +

A TYPE_NUMERIC value buffer can conveniently be + interpreted with the C library function atof(3).

+ +

TYPE_REGEXP

+ +

This field type accepts data matching a regular + expression. It is set up as follows:

+
+int set_field_type(FIELD *field,          /* field to alter */
+                   TYPE_REGEXP,           /* type to associate */
+                   char *regexp);         /* expression to match */
+
+ +

The syntax for regular expressions is that of + regcomp(3). The check for regular-expression match is + performed on exit.

+
+ +
+
+ +

18.6. Form Driver: The work horse of the forms + system

+ +

As in the menu system, form_driver() plays a very + important role in forms system. All types of requests to + forms system should be funneled through form_driver().

+
+int form_driver(FORM *form,     /* form on which to operate     */
+                int request)    /* form request code         */
+
+ +

As you have seen some of the examples above, you have to + be in a loop looking for user input and then decide whether + it is a field data or a form request. The form requests are + then passed to form_driver() to do the work.

+ +

The requests roughly can be divided into following + categories. Different requests and their usage is explained + below:

+ +
+
+ +

18.6.1. Page Navigation Requests

+ +

These requests cause page-level moves through the + form, triggering display of a new form screen. A form can + be made of multiple pages. If you have a big form with + lot of fields and logical sections, then you can divide + the form into pages. The function set_new_page() to set a + new page at the field specified.

+
+int set_new_page(FIELD *field,/* Field at which page break to be set or unset */
+         bool new_page_flag); /* should be TRUE to put a break */
+
+ +

The following requests allow you to move to different + pages

+ +
    +
  • +

    REQ_NEXT_PAGE Move to the next + form page.

    +
  • + +
  • +

    REQ_PREV_PAGE Move to the + previous form page.

    +
  • + +
  • +

    REQ_FIRST_PAGE Move to the + first form page.

    +
  • + +
  • +

    REQ_LAST_PAGE Move to the last + form page.

    +
  • +
+ +

These requests treat the list as cyclic; that is, + REQ_NEXT_PAGE from the last page goes to the first, and + REQ_PREV_PAGE from the first page goes to the last.

+
+ +
+
+ +

18.6.2. Inter-Field Navigation + Requests

+ +

These requests handle navigation between fields on the + same page.

+ +
    +
  • +

    REQ_NEXT_FIELD Move to next + field.

    +
  • + +
  • +

    REQ_PREV_FIELD Move to previous + field.

    +
  • + +
  • +

    REQ_FIRST_FIELD Move to the + first field.

    +
  • + +
  • +

    REQ_LAST_FIELD Move to the last + field.

    +
  • + +
  • +

    REQ_SNEXT_FIELD Move to sorted + next field.

    +
  • + +
  • +

    REQ_SPREV_FIELD Move to sorted + previous field.

    +
  • + +
  • +

    REQ_SFIRST_FIELD Move to the + sorted first field.

    +
  • + +
  • +

    REQ_SLAST_FIELD Move to the + sorted last field.

    +
  • + +
  • +

    REQ_LEFT_FIELD Move left to + field.

    +
  • + +
  • +

    REQ_RIGHT_FIELD Move right to + field.

    +
  • + +
  • +

    REQ_UP_FIELD Move up to + field.

    +
  • + +
  • +

    REQ_DOWN_FIELD Move down to + field.

    +
  • +
+ +

These requests treat the list of fields on a page as + cyclic; that is, REQ_NEXT_FIELD from the last field goes + to the first, and REQ_PREV_FIELD from the first field + goes to the last. The order of the fields for these (and + the REQ_FIRST_FIELD and REQ_LAST_FIELD requests) is + simply the order of the field pointers in the form array + (as set up by new_form() or set_form_fields()

+ +

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.

+ +

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.

+ +

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 + REQ_MOVE_RIGHT from A will go to B only if A, B, and C + all share the same first line; otherwise it will skip + over B to C.

+
+ +
+
+ +

18.6.3. Intra-Field Navigation + Requests

+ +

These requests drive movement of the edit cursor + within the currently selected field.

+ +
    +
  • +

    REQ_NEXT_CHAR Move to next + character.

    +
  • + +
  • +

    REQ_PREV_CHAR Move to previous + character.

    +
  • + +
  • +

    REQ_NEXT_LINE Move to next + line.

    +
  • + +
  • +

    REQ_PREV_LINE Move to previous + line.

    +
  • + +
  • +

    REQ_NEXT_WORD Move to next + word.

    +
  • + +
  • +

    REQ_PREV_WORD Move to previous + word.

    +
  • + +
  • +

    REQ_BEG_FIELD Move to beginning + of field.

    +
  • + +
  • +

    REQ_END_FIELD Move to end of + field.

    +
  • + +
  • +

    REQ_BEG_LINE Move to beginning + of line.

    +
  • + +
  • +

    REQ_END_LINE Move to end of + line.

    +
  • + +
  • +

    REQ_LEFT_CHAR Move left in + field.

    +
  • + +
  • +

    REQ_RIGHT_CHAR Move right in + field.

    +
  • + +
  • +

    REQ_UP_CHAR Move up in + field.

    +
  • + +
  • +

    REQ_DOWN_CHAR Move down in + field.

    +
  • +
+ +

Each word 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.

+
+ +
+
+ +

18.6.4. Scrolling Requests

+ +

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:

+ +
    +
  • +

    REQ_SCR_FLINE Scroll vertically + forward a line.

    +
  • + +
  • +

    REQ_SCR_BLINE Scroll vertically + backward a line.

    +
  • + +
  • +

    REQ_SCR_FPAGE Scroll vertically + forward a page.

    +
  • + +
  • +

    REQ_SCR_BPAGE Scroll vertically + backward a page.

    +
  • + +
  • +

    REQ_SCR_FHPAGE Scroll + vertically forward half a page.

    +
  • + +
  • +

    REQ_SCR_BHPAGE Scroll + vertically backward half a page.

    +
  • + +
  • +

    REQ_SCR_FCHAR Scroll + horizontally forward a character.

    +
  • + +
  • +

    REQ_SCR_BCHAR Scroll + horizontally backward a character.

    +
  • + +
  • +

    REQ_SCR_HFLINE Scroll + horizontally one field width forward.

    +
  • + +
  • +

    REQ_SCR_HBLINE Scroll + horizontally one field width backward.

    +
  • + +
  • +

    REQ_SCR_HFHALF Scroll + horizontally one half field width forward.

    +
  • + +
  • +

    REQ_SCR_HBHALF Scroll + horizontally one half field width backward.

    +
  • +
+ +

For scrolling purposes, a page of a field is the + height of its visible part.

+
+ +
+
+ +

18.6.5. + Editing Requests

+ +

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.

+ +

The following requests support editing the field and + changing the edit mode:

+ +
    +
  • +

    REQ_INS_MODE Set insertion + mode.

    +
  • + +
  • +

    REQ_OVL_MODE Set overlay + mode.

    +
  • + +
  • +

    REQ_NEW_LINE New line request + (see below for explanation).

    +
  • + +
  • +

    REQ_INS_CHAR Insert space at + character location.

    +
  • + +
  • +

    REQ_INS_LINE Insert blank line + at character location.

    +
  • + +
  • +

    REQ_DEL_CHAR Delete character + at cursor.

    +
  • + +
  • +

    REQ_DEL_PREV Delete previous + word at cursor.

    +
  • + +
  • +

    REQ_DEL_LINE Delete line at + cursor.

    +
  • + +
  • +

    REQ_DEL_WORD Delete word at + cursor.

    +
  • + +
  • +

    REQ_CLR_EOL Clear to end of + line.

    +
  • + +
  • +

    REQ_CLR_EOF Clear to end of + field.

    +
  • + +
  • +

    REQ_CLR_FIELD Clear entire + field.

    +
  • +
+ +

The behavior of the REQ_NEW_LINE and REQ_DEL_PREV + 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.

+ +

First, we consider REQ_NEW_LINE:

+ +

The normal behavior of REQ_NEW_LINE 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).

+ +

The normal behavior of REQ_NEW_LINE 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.

+ +

However, REQ_NEW_LINE at the beginning of a field, or + on the last line of a field, instead does a + REQ_NEXT_FIELD. O_NL_OVERLOAD option is off, this special + action is disabled.

+ +

Now, let us consider REQ_DEL_PREV:

+ +

The normal behavior of REQ_DEL_PREV 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).

+ +

However, REQ_DEL_PREV at the beginning of a field is + instead treated as a REQ_PREV_FIELD.

+ +

If the O_BS_OVERLOAD option is off, this special + action is disabled and the forms driver just returns + E_REQUEST_DENIED.

+
+ +
+
+ +

18.6.6. Order Requests

+ +

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:

+ +
    +
  • +

    REQ_NEXT_CHOICE Place the + successor value of the current value in the + buffer.

    +
  • + +
  • +

    REQ_PREV_CHOICE Place the + predecessor value of the current value in the + buffer.

    +
  • +
+ +

Of the built-in field types, only TYPE_ENUM has + built-in successor and predecessor functions. When you + define a field type of your own (see Custom Validation + Types), you can associate our own ordering functions.

+
+ +
+
+ +

18.6.7. Application Commands

+ +

Form requests are represented as integers above the + curses value greater than KEY_MAX and less than or equal + to the constant MAX_COMMAND. A value within this range + gets ignored by form_driver(). So this can be used for + any purpose by the application. It can be treated as an + application specific action and take corresponding + action.

+
+
+
+ +
+
+ +

19. Tools and + Widget Libraries

+ +

Now that you have seen the capabilities of ncurses and its + sister libraries, you are rolling your sleeves up and gearing + for a project that heavily manipulates screen. But wait.. It + can be pretty difficult to write and maintain complex GUI + widgets in plain ncurses or even with the additional + libraries. There are some ready-to-use tools and widget + libraries that can be used instead of writing your own + widgets. You can use some of them, get ideas from the code, + or even extend them.

+ +
+
+ +

19.1. CDK (Curses + Development Kit)

+ +

In the author's words

+ +

CDK stands + for 'Curses Development Kit' and it currently contains 21 + ready to use widgets which facilitate the speedy + development of full screen curses programs.

+ +

The kit provides some useful widgets, which can be used + in your programs directly. It is pretty well written and the + documentation is very good. The examples in the examples + directory can be a good place to start for beginners. The + CDK can be downloaded from https://invisible-island.net/cdk/ . Follow the + instructions in README file to install it.

+ +
+
+ +

19.1.1. Widget List

+ +

The following is the list of widgets provided with cdk + and their description.

+
+Widget Type           Quick Description
+===========================================================================
+Alphalist             Allows a user to select from a list of words, with
+                      the ability to narrow the search list by typing in a
+                      few characters of the desired word.
+Buttonbox             This creates a multiple button widget. 
+Calendar              Creates a little simple calendar widget.
+Dialog                Prompts the user with a message, and the user
+                      can pick an answer from the buttons provided.
+Entry                 Allows the user to enter various types of information.
+File Selector         A file selector built from Cdk base widgets. This
+                      example shows how to create more complicated widgets
+                      using the Cdk widget library.
+Graph                 Draws a graph.
+Histogram             Draws a histogram.
+Item List             Creates a pop up field which allows the user to select
+                      one of several choices in a small field. Very useful
+                      for things like days of the week or month names.
+Label                 Displays messages in a pop up box, or the label can be
+                      considered part of the screen.
+Marquee               Displays a message in a scrolling marquee.
+Matrix                Creates a complex matrix with lots of options.
+Menu                  Creates a pull-down menu interface.
+Multiple Line Entry   A multiple line entry field. Very useful
+                      for long fields. (like a description
+                      field)
+Radio List            Creates a radio button list.
+Scale                 Creates a numeric scale. Used for allowing a user to
+                      pick a numeric value and restrict them to a range of 
+                      values.
+Scrolling List        Creates a scrolling list/menu list.
+Scrolling Window      Creates a scrolling log file viewer. Can add 
+                      information into the window while its running. 
+                      A good widget for displaying the progress of
+                      something. (akin to a console window)
+Selection List        Creates a multiple option selection list.
+Slider                Akin to the scale widget, this widget provides a
+                      visual slide bar to represent the numeric value.
+Template              Creates a entry field with character sensitive 
+                      positions. Used for pre-formatted fields like
+                      dates and phone numbers.
+Viewer                This is a file/information viewer. Very useful
+                      when you need to display loads of information.
+===========================================================================
+
+ +

A few of the widgets are modified by Thomas Dickey in + recent versions.

+
+ +
+
+ +

19.1.2. Some Attractive Features

+ +

Apart from making our life easier with readily usable + widgets, cdk solves one frustrating problem with printing + multi colored strings, justified strings elegantly. + Special formatting tags can be embedded in the strings + which are passed to CDK functions. For Example

+ +

If the string

+
+"</B/1>This line should have a yellow foreground and a blue
+background.<!1>"
+
+ +

given as a parameter to newCDKLabel(), it prints the + line with yellow foreground and blue background. There + are other tags available for justifying string, embedding + special drawing characters etc.. Please refer to the man + page cdk_display(3X) for details. The man page explains + the usage with nice examples.

+
+ +
+
+ +

19.1.3. Conclusion

+ +

All in all, CDK is a well-written package of widgets, + which if used properly can form a strong frame work for + developing complex GUI.

+
+
+ +
+
+ +

19.2. The + dialog

+ +

Long long ago, in September 1994, when few people knew + linux, Jeff Tranter wrote an article on dialog in Linux Journal. He + starts the article with these words..

+ +

Linux is + based on the Unix operating system, but also features a + number of unique and useful kernel features and application + programs that often go beyond what is available under Unix. + One little-known gem is "dialog", a utility for creating + professional-looking dialog boxes from within shell + scripts. This article presents a tutorial introduction to + the dialog utility, and shows examples of how and where it + can be used

+ +

As he explains, dialog is a real gem in making + professional-looking dialog boxes with ease. It creates a + variety of dialog boxes, menus, check lists etc.. It is + usually installed by default. If not, you can download it + from Thomas Dickey's site.

+ +

The above-mentioned article gives a very good overview + of its uses and capabilites. The man page has more details. + It can be used in variety of situations. One good example + is building of linux kernel in text mode. Linux kernel uses + a modified version of dialog tailored for its needs.

+ +

dialog was initially designed to be used with shell + scripts. If you want to use its functionality in a c + program, then you can use libdialog. The documentation + regarding this is sparse. Definitive reference is the + dialog.h header file which comes with the library. You may + need to hack here and there to get the required output. The + source is easily customizable. I have used it on a number + of occasions by modifying the code.

+
+ +
+
+ +

19.3. Perl Curses Modules CURSES::FORM and + CURSES::WIDGETS

+ +

The perl module Curses, Curses::Form and Curses::Widgets + give access to curses from perl. If you have curses and + basic perl is installed, you can get these modules from + CPAN All Modules page. Get the three + zipped modules in the Curses category. Once installed you + can use these modules from perl scripts like any other + module. For more information on perl modules see perlmod + man page. The above modules come with good documentation + and they have some demo scripts to test the functionality. + Though the widgets provided are very rudimentary, these + modules provide good access to curses library from + perl.

+ +

Some of my code examples are converted to perl by + Anuradha Ratnaweera and they are available in the + perl directory.

+ +

For more information see man pages Curses(3) , + Curses::Form(3) and Curses::Widgets(3). These pages are + installed only when the above modules are acquired and + installed.

+
+
+ +
+
+ +

20. + Just For Fun !!!

+ +

This section contains few programs written by me just for + fun. They don't signify a better programming practice or the + best way of using ncurses. They are provided here so as to + allow beginners to get ideas and add more programs to this + section. If you have written a couple of nice, simple + programs in curses and want them to included here, contact + me.

+ +
+
+ +

20.1. The Game of Life

+ +

Game of life is a wonder of math. In Paul Callahan's words

+
+The Game of Life (or simply Life) is not a game in the conventional sense. There
+are no players, and no winning or losing. Once the "pieces" are placed in the
+starting position, the rules determine everything that happens later.
+Nevertheless, Life is full of surprises! In most cases, it is impossible to look
+at a starting position (or pattern) and see what will happen in the future. The
+only way to find out is to follow the rules of the game.
+
+ +

This program starts with a simple inverted U pattern and + shows how wonderful life works. There is a lot of room for + improvement in the program. You can let the user enter + pattern of his choice or even take input from a file. You + can also change rules and play with a lot of variations. + Search on google for interesting information on game of + life.

+ +

File Path: + JustForFun/life.c

+
+ +
+
+ +

20.2. Magic + Square

+ +

Magic Square, another wonder of math, is very simple to + understand but very difficult to make. In a magic square + sum of the numbers in each row, each column is equal. Even + diagnol sum can be equal. There are many variations which + have special properties.

+ +

This program creates a simple magic square of odd + order.

+ +

File Path: + JustForFun/magic.c

+
+ +
+
+ +

20.3. Towers + of Hanoi

+ +

The famous towers of hanoi solver. The aim of the game + is to move the disks on the first peg to last peg, using + middle peg as a temporary stay. The catch is not to place a + larger disk over a small disk at any time.

+ +

File Path: + JustForFun/hanoi.c

+
+ +
+
+ +

20.4. Queens + Puzzle

+ +

The objective of the famous N-Queen puzzle is to put N + queens on a N X N chess board without attacking each + other.

+ +

This program solves it with a simple backtracking + technique.

+ +

File Path: + JustForFun/queens.c

+
+ +
+
+ +

20.5. + Shuffle

+ +

A fun game, if you have time to kill.

+ +

File Path: + JustForFun/shuffle.c

+
+ +
+
+ +

20.6. Typing + Tutor

+ +

A simple typing tutor, I created more out of need than + for ease of use. If you know how to put your fingers + correctly on the keyboard, but lack practice, this can be + helpful.

+ +

File Path: + JustForFun/tt.c

+
+
+ +
+
+ +

21. + References

+ + +
+
+ + diff --git a/deps/ncurses-6.3/doc/html/ada/files.htm b/deps/ncurses-6.3/doc/html/ada/files.htm new file mode 100644 index 0000000..49441be --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/files.htm @@ -0,0 +1,18 @@ + + + + + + + + +

Files

+[T] + diff --git a/deps/ncurses-6.3/doc/html/ada/files/T.htm b/deps/ncurses-6.3/doc/html/ada/files/T.htm new file mode 100644 index 0000000..b54027b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/files/T.htm @@ -0,0 +1,83 @@ + + + +T + + + +

Files - T

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs.htm b/deps/ncurses-6.3/doc/html/ada/funcs.htm new file mode 100644 index 0000000..903523e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs.htm @@ -0,0 +1,39 @@ + + + + + + + + +

Functions/Procedures

+[A] +[B] +[C] +[D] +[E] +[F] +[G] +[H] +[I] +[K] +[L] +[M] +[N] +[O] +[P] +[Q] +[R] +[S] +[T] +[U] +[V] +[W] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/A.htm b/deps/ncurses-6.3/doc/html/ada/funcs/A.htm new file mode 100644 index 0000000..3080c76 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/A.htm @@ -0,0 +1,29 @@ + + + +A + + + +

Functions - A

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/B.htm b/deps/ncurses-6.3/doc/html/ada/funcs/B.htm new file mode 100644 index 0000000..2f3142a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/B.htm @@ -0,0 +1,25 @@ + + + +B + + + +

Functions - B

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/C.htm b/deps/ncurses-6.3/doc/html/ada/funcs/C.htm new file mode 100644 index 0000000..9d88f81 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/C.htm @@ -0,0 +1,63 @@ + + + +C + + + +

Functions - C

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/D.htm b/deps/ncurses-6.3/doc/html/ada/funcs/D.htm new file mode 100644 index 0000000..d58ec5b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/D.htm @@ -0,0 +1,51 @@ + + + +D + + + +

Functions - D

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/E.htm b/deps/ncurses-6.3/doc/html/ada/funcs/E.htm new file mode 100644 index 0000000..9504d25 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/E.htm @@ -0,0 +1,22 @@ + + + +E + + + +

Functions - E

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/F.htm b/deps/ncurses-6.3/doc/html/ada/funcs/F.htm new file mode 100644 index 0000000..d191486 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/F.htm @@ -0,0 +1,59 @@ + + + +F + + + +

Functions - F

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/G.htm b/deps/ncurses-6.3/doc/html/ada/funcs/G.htm new file mode 100644 index 0000000..2a329f3 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/G.htm @@ -0,0 +1,100 @@ + + + +G + + + +

Functions - G

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/H.htm b/deps/ncurses-6.3/doc/html/ada/funcs/H.htm new file mode 100644 index 0000000..1809b7b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/H.htm @@ -0,0 +1,26 @@ + + + +H + + + +

Functions - H

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/I.htm b/deps/ncurses-6.3/doc/html/ada/funcs/I.htm new file mode 100644 index 0000000..e563c55 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/I.htm @@ -0,0 +1,55 @@ + + + +I + + + +

Functions - I

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/K.htm b/deps/ncurses-6.3/doc/html/ada/funcs/K.htm new file mode 100644 index 0000000..a243874 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/K.htm @@ -0,0 +1,18 @@ + + + +K + + + +

Functions - K

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/L.htm b/deps/ncurses-6.3/doc/html/ada/funcs/L.htm new file mode 100644 index 0000000..2720063 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/L.htm @@ -0,0 +1,25 @@ + + + +L + + + +

Functions - L

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/M.htm b/deps/ncurses-6.3/doc/html/ada/funcs/M.htm new file mode 100644 index 0000000..68b1d51 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/M.htm @@ -0,0 +1,55 @@ + + + +M + + + +

Functions - M

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/N.htm b/deps/ncurses-6.3/doc/html/ada/funcs/N.htm new file mode 100644 index 0000000..861f17a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/N.htm @@ -0,0 +1,39 @@ + + + +N + + + +

Functions - N

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/O.htm b/deps/ncurses-6.3/doc/html/ada/funcs/O.htm new file mode 100644 index 0000000..7731150 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/O.htm @@ -0,0 +1,16 @@ + + + +O + + + +

Functions - O

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/P.htm b/deps/ncurses-6.3/doc/html/ada/funcs/P.htm new file mode 100644 index 0000000..f34fe5a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/P.htm @@ -0,0 +1,63 @@ + + + +P + + + +

Functions - P

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/Q.htm b/deps/ncurses-6.3/doc/html/ada/funcs/Q.htm new file mode 100644 index 0000000..7810b95 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/Q.htm @@ -0,0 +1,12 @@ + + + +Q + + + +

Functions - Q

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/R.htm b/deps/ncurses-6.3/doc/html/ada/funcs/R.htm new file mode 100644 index 0000000..128f8e2 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/R.htm @@ -0,0 +1,43 @@ + + + +R + + + +

Functions - R

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/S.htm b/deps/ncurses-6.3/doc/html/ada/funcs/S.htm new file mode 100644 index 0000000..937584d --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/S.htm @@ -0,0 +1,195 @@ + + + +S + + + +

Functions - S

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/T.htm b/deps/ncurses-6.3/doc/html/ada/funcs/T.htm new file mode 100644 index 0000000..9cb76d7 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/T.htm @@ -0,0 +1,43 @@ + + + +T + + + +

Functions - T

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/U.htm b/deps/ncurses-6.3/doc/html/ada/funcs/U.htm new file mode 100644 index 0000000..6c5a5fe --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/U.htm @@ -0,0 +1,27 @@ + + + +U + + + +

Functions - U

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/V.htm b/deps/ncurses-6.3/doc/html/ada/funcs/V.htm new file mode 100644 index 0000000..45edc6a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/V.htm @@ -0,0 +1,15 @@ + + + +V + + + +

Functions - V

+[index] + diff --git a/deps/ncurses-6.3/doc/html/ada/funcs/W.htm b/deps/ncurses-6.3/doc/html/ada/funcs/W.htm new file mode 100644 index 0000000..926ec19 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/funcs/W.htm @@ -0,0 +1,57 @@ + + + +W + + + +

Functions - W

+[index] + diff --git a/deps/ncurses-5.9/doc/html/ada/index.htm b/deps/ncurses-6.3/doc/html/ada/index.htm similarity index 89% rename from deps/ncurses-5.9/doc/html/ada/index.htm rename to deps/ncurses-6.3/doc/html/ada/index.htm index 4a13484..b0a6a84 100644 --- a/deps/ncurses-5.9/doc/html/ada/index.htm +++ b/deps/ncurses-6.3/doc/html/ada/index.htm @@ -1,6 +1,9 @@ -Source Browser + +Source Browser + + <H2 ALIGN=CENTER>Files</H2> diff --git a/deps/ncurses-5.9/doc/html/ada/main.htm b/deps/ncurses-6.3/doc/html/ada/main.htm similarity index 93% rename from deps/ncurses-5.9/doc/html/ada/main.htm rename to deps/ncurses-6.3/doc/html/ada/main.htm index 701fe7d..e4475a5 100644 --- a/deps/ncurses-5.9/doc/html/ada/main.htm +++ b/deps/ncurses-6.3/doc/html/ada/main.htm @@ -1,5 +1,17 @@ -<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> -<HTML><HEAD><TITLE></TITLE></HEAD> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE></TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> <BODY> <P ALIGN=right><A HREF="main.htm" TARGET="_top">[No frame version is here]</A><P><H2 ALIGN=CENTER>Files</H2> <A HREF="files/T.htm">[T]</A> @@ -64,6 +76,7 @@ <LI><A HREF="terminal_interface-curses-text_io__ads.htm">terminal_interface-curses-text_io.ads</A> <LI><A HREF="terminal_interface-curses-trace__ads.htm">terminal_interface-curses-trace.ads</A> <LI><A HREF="terminal_interface-curses__ads.htm">terminal_interface-curses.ads</A> +<LI><A HREF="terminal_interface-curses_constants__ads.htm">terminal_interface-curses_constants.ads</A> <LI><A HREF="terminal_interface__ads.htm">terminal_interface.ads</A> </UL> </BODY></HTML> diff --git a/deps/ncurses-5.9/doc/html/ada/table.html b/deps/ncurses-6.3/doc/html/ada/table.html similarity index 100% rename from deps/ncurses-5.9/doc/html/ada/table.html rename to deps/ncurses-6.3/doc/html/ada/table.html index ce8d91f..ff6d0bd 100644 --- a/deps/ncurses-5.9/doc/html/ada/table.html +++ b/deps/ncurses-6.3/doc/html/ada/table.html @@ -10,8 +10,6 @@ <H2>Sorted by C function name</H2> <TABLE ALIGN=CENTER BORDER> <TR ALIGN=LEFT> <TH>C name</TH><TH>Ada name</TH><TH>man page</TH></TR> -<TR><TD>_nc_freeall()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_159">Curses_Free_All</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR> -<TR><TD>_tracef()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_2">Trace_Put</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR> <TR><TD>assume_default_colors()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_156">Assume_Default_Colors</A></TD><TD><A HREF="../man/default_colors.3x.html">default_colors.3x</A></TD></TR> <TR><TD>baudrate()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_131">Baudrate</A></TD><TD><A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></TD></TR> <TR><TD>beep()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_40">Beep</A></TD><TD><A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></TD></TR> @@ -24,15 +22,15 @@ <H2>Sorted by C function name</H2> <TR><TD>copywin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_79">Copy</A></TD><TD><A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></TD></TR> <TR><TD>current_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_58">Current</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR> <TR><TD>current_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_14">Current</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR> -<TR><TD>curs_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_153">Set_Cursor_Visibility</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR> <TR><TD>curscr</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_2">Current_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR> <TR><TD>curses_version()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_157">Curses_Version</A></TD><TD><A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></TD></TR> +<TR><TD>curs_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_153">Set_Cursor_Visibility</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR> <TR><TD>data_ahead()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_54">Data_Ahead</A></TD><TD><A HREF="../man/form_data.3x.html">form_data.3x</A></TD></TR> <TR><TD>data_behind()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_55">Data_Behind</A></TD><TD><A HREF="../man/form_data.3x.html">form_data.3x</A></TD></TR> -<TR><TD>def_prog_mode()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_148">Save_Curses_Mode</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR> <TR><TD>define_key()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_124">Define_Key</A></TD><TD><A HREF="../man/define_key.3x.html">define_key.3x</A></TD></TR> -<TR><TD>del_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_15">Delete</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> +<TR><TD>def_prog_mode()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_148">Save_Curses_Mode</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR> <TR><TD>delay_output()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_129">Delay_Output</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR> +<TR><TD>del_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_15">Delete</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> <TR><TD>delwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_12">Delete</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR> <TR><TD>derwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_14">Derived_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR> <TR><TD>doupdate()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_61">Update_Screen</A></TD><TD><A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></TD></TR> @@ -52,9 +50,9 @@ <H2>Sorted by C function name</H2> <TR><TD>field_info()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_25">Info</A></TD><TD><A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></TD></TR> <TR><TD>field_init()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_36">Get_Field_Init_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR> <TR><TD>field_just()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_7">Get_Justification</A></TD><TD><A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></TD></TR> +<TR><TD>field_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_14">Switch_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR> <TR><TD>field_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_15">Get_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR> <TR><TD>field_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_16">Get_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR> -<TR><TD>field_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_14">Switch_Options</A></TD><TD><A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></TD></TR> <TR><TD>field_pad()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_24">Pad_Character</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR> <TR><TD>field_status()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_11">Changed</A></TD><TD><A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></TD></TR> <TR><TD>field_term()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_37">Get_Field_Term_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR> @@ -66,9 +64,9 @@ <H2>Sorted by C function name</H2> <TR><TD>form_driver()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_56">Driver</A></TD><TD><A HREF="../man/form_driver.3x.html">form_driver.3x</A></TD></TR> <TR><TD>form_fields()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_42">Fields</A></TD><TD><A HREF="../man/form_field.3x.html">form_field.3x</A></TD></TR> <TR><TD>form_init()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_38">Get_Form_Init_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR> +<TR><TD>form_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_49">Switch_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR> <TR><TD>form_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_50">Get_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR> <TR><TD>form_opts()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_51">Get_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR> -<TR><TD>form_opts_on()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_49">Switch_Options</A></TD><TD><A HREF="../man/form_opts.3x.html">form_opts.3x</A></TD></TR> <TR><TD>form_page()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_60">Page</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR> <TR><TD>form_sub()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_30">Get_Sub_Window</A></TD><TD><A HREF="../man/form_win.3x.html">form_win.3x</A></TD></TR> <TR><TD>form_term()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_39">Get_Form_Term_Hook</A></TD><TD><A HREF="../man/form_hook.3x.html">form_hook.3x</A></TD></TR> @@ -98,17 +96,17 @@ <H2>Sorted by C function name</H2> <TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_3">Init_Screen</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR> <TR><TD>initscr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_4">Init_Windows</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR> <TR><TD>intrflush()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_48">Set_Flush_On_Interrupt_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR> +<TR><TD>isendwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_6">Is_End_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR> <TR><TD>is_linetouched()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_77">Is_Touched</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR> <TR><TD>is_wintouched()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_78">Is_Touched</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR> -<TR><TD>isendwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_6">Is_End_Window</A></TD><TD><A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></TD></TR> <TR><TD>item_count()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_58">Item_Count</A></TD><TD><A HREF="../man/menu_items.3x.html">menu_items.3x</A></TD></TR> <TR><TD>item_description();</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_12">Description</A></TD><TD><A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></TD></TR> <TR><TD>item_index()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_17">Get_Index</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR> <TR><TD>item_init()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_52">Get_Item_Init_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR> <TR><TD>item_name()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_11">Name</A></TD><TD><A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></TD></TR> +<TR><TD>item_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_8">Switch_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR> <TR><TD>item_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_10">Get_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR> <TR><TD>item_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_9">Get_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR> -<TR><TD>item_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_8">Switch_Options</A></TD><TD><A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></TD></TR> <TR><TD>item_term()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_53">Get_Item_Term_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR> <TR><TD>item_userptr</TD><TD><A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#AFU_2">Get_User_Data</A></TD><TD><A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR> <TR><TD>item_userptr</TD><TD><A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#AFU_3">Get_User_Data</A></TD><TD><A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></TD></TR> @@ -134,9 +132,9 @@ <H2>Sorted by C function name</H2> <TR><TD>menu_init()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_54">Get_Menu_Init_Hook</A></TD><TD><A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></TD></TR> <TR><TD>menu_items()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_57">Items</A></TD><TD><A HREF="../man/menu_items.3x.html">menu_items.3x</A></TD></TR> <TR><TD>menu_mark()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_30">Mark</A></TD><TD><A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></TD></TR> +<TR><TD>menu_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_20">Switch_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR> <TR><TD>menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_21">Get_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR> <TR><TD>menu_opts()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_22">Get_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR> -<TR><TD>menu_opts_on()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_20">Switch_Options</A></TD><TD><A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></TD></TR> <TR><TD>menu_pad()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_41">Pad_Character</A></TD><TD><A HREF="../man/menu_attributes.3x.html">menu_attributes.3x</A></TD></TR> <TR><TD>menu_pattern()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_45">Pattern</A></TD><TD><A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></TD></TR> <TR><TD>menu_requestname.3x</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_62"></A></TD><TD><A HREF="../man/menu_driver.3x.html">menu_driver.3x</A></TD></TR> @@ -152,19 +150,20 @@ <H2>Sorted by C function name</H2> <TR><TD>move_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_44">Move</A></TD><TD><A HREF="../man/form_field.3x.html">form_field.3x</A></TD></TR> <TR><TD>move_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_11">Move</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> <TR><TD>mvderwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_17">Move_Derived_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR> -<TR><TD>mvwaddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_9">Add</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR> <TR><TD>mvwaddchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_24">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR> +<TR><TD>mvwaddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_9">Add</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR> <TR><TD>mvwaddnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_22">Add</A></TD><TD><A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></TD></TR> <TR><TD>mvwchgat()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_39">Change_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR> <TR><TD>mvwdelch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_96">Delete_Character</A></TD><TD><A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></TD></TR> <TR><TD>mvwgetnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_108">Get</A></TD><TD><A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></TD></TR> -<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_16">Move_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR> -<TR><TD>mvwinch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_98">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR> <TR><TD>mvwinchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_106">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR> +<TR><TD>mvwinch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_98">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR> <TR><TD>mvwinnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_104">Peek</A></TD><TD><A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></TD></TR> <TR><TD>mvwinsch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_100">Insert</A></TD><TD><A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></TD></TR> <TR><TD>mvwinsnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_102">Insert</A></TD><TD><A HREF="../man/curs_insstr.3x.html">curs_insstr.3x</A></TD></TR> +<TR><TD>mvwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_16">Move_Window</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR> <TR><TD>napms()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_154">Nap_Milli_Seconds</A></TD><TD><A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></TD></TR> +<TR><TD>_nc_freeall()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_159">Curses_Free_All</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR> <TR><TD>new_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_1">Create</A></TD><TD><A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></TD></TR> <TR><TD>new_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_2">New_Field</A></TD><TD><A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></TD></TR> <TR><TD>new_form()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_45">Create</A></TD><TD><A HREF="../man/form_new.3x.html">form_new.3x</A></TD></TR> @@ -172,10 +171,10 @@ <H2>Sorted by C function name</H2> <TR><TD>new_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_1">Create</A></TD><TD><A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></TD></TR> <TR><TD>new_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_2">New_Item</A></TD><TD><A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></TD></TR> <TR><TD>new_menu()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_59">Create</A></TD><TD><A HREF="../man/menu_new.3x.html">menu_new.3x</A></TD></TR> +<TR><TD>newpad()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_89">New_Pad</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR> <TR><TD>new_page()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_63">Is_New_Page</A></TD><TD><A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></TD></TR> <TR><TD>new_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_1">Create</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> <TR><TD>new_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_2">New_Panel</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> -<TR><TD>newpad()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_89">New_Pad</A></TD><TD><A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></TD></TR> <TR><TD>newwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_11">Create</A></TD><TD><A HREF="../man/curs_window.3x.html">curs_window.3x</A></TD></TR> <TR><TD>nl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_53">Set_NL_Mode</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR> <TR><TD>nodelay()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_50">Set_NoDelay_Mode</A></TD><TD><A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></TD></TR> @@ -209,9 +208,9 @@ <H2>Sorted by C function name</H2> <TR><TD>scale_menu()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_27">Scale</A></TD><TD><A HREF="../man/menu_win.3x.html">menu_win.3x</A></TD></TR> <TR><TD>scr_dump()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_160">Screen_Dump_To_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR> <TR><TD>scr_init()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_162">Screen_Init_From_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR> +<TR><TD>scrollok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_59">Allow_Scrolling</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR> <TR><TD>scr_restore()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_161">Screen_Restore_From_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR> <TR><TD>scr_set()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_163">Screen_Set_File</A></TD><TD><A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></TD></TR> -<TR><TD>scrollok()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_59">Allow_Scrolling</A></TD><TD><A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></TD></TR> <TR><TD>set_current_field()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_57">Set_Current</A></TD><TD><A HREF="../man/form_page.3x.html">form_page.3x</A></TD></TR> <TR><TD>set_current_item()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_13">Set_Current</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR> <TR><TD>set_field_back()</TD><TD><A HREF="terminal_interface-curses-forms__ads.htm#AFU_20">Set_Background</A></TD><TD><A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></TD></TR> @@ -259,10 +258,10 @@ <H2>Sorted by C function name</H2> <TR><TD>set_panel_userptr</TD><TD><A HREF="terminal_interface-curses-panels-user_data__ads.htm#AFU_1">Set_User_Data</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> <TR><TD>set_top_row()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_15">Set_Top_Row</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR> <TR><TD>show_panel()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_5">Show</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> -<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_120">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> -<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_121">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> <TR><TD>slk_attron()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_118">Switch_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> <TR><TD>slk_attrset()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_119">Set_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> +<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_120">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> +<TR><TD>slk_attr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_121">Get_Soft_Label_Key_Attributes</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> <TR><TD>slk_clear()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_115">Clear_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> <TR><TD>slk_color()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_122">Set_Soft_Label_Key_Color</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> <TR><TD>slk_init()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_109">Init_Soft_Label_Keys</A></TD><TD><A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></TD></TR> @@ -286,6 +285,7 @@ <H2>Sorted by C function name</H2> <TR><TD>top_row()</TD><TD><A HREF="terminal_interface-curses-menus__ads.htm#AFU_16">Top_Row</A></TD><TD><A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></TD></TR> <TR><TD>touchline()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_75">Touch</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR> <TR><TD>touchwin()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_74">Touch</A></TD><TD><A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></TD></TR> +<TR><TD>_tracef()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_2">Trace_Put</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR> <TR><TD>trace()</TD><TD><A HREF="terminal_interface-curses-trace__ads.htm#AFU_1">Trace_on</A></TD><TD><A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></TD></TR> <TR><TD>unctrl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_127">Un_Control</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR> <TR><TD>unctrl()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_128">Un_Control</A></TD><TD><A HREF="../man/curs_util.3x.html">curs_util.3x</A></TD></TR> @@ -295,16 +295,16 @@ <H2>Sorted by C function name</H2> <TR><TD>update_panels()</TD><TD><A HREF="terminal_interface-curses-panels__ads.htm#AFU_6">Update_Panels</A></TD><TD><A HREF="../man/panel.3x.html">panel.3x</A></TD></TR> <TR><TD>use_default_colors()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_155">Use_Default_Colors</A></TD><TD><A HREF="../man/default_colors.3x.html">default_colors.3x</A></TD></TR> <TR><TD>use_extended_names()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_158">Use_Extended_Names</A></TD><TD><A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></TD></TR> -<TR><TD>waddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_8">Add</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR> <TR><TD>waddchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_23">Add</A></TD><TD><A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></TD></TR> +<TR><TD>waddch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_8">Add</A></TD><TD><A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></TD></TR> <TR><TD>waddnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_21">Add</A></TD><TD><A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></TD></TR> <TR><TD>wattr_get()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_35">Get_Character_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR> <TR><TD>wattr_get()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_36">Get_Character_Attribute</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR> <TR><TD>wattron()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_33">Switch_Character_Attribute</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR> <TR><TD>wattrset()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_34">Set_Character_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR> -<TR><TD>wbkgd()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_71">Change_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR> <TR><TD>wbkgdget()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_72">Get_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR> <TR><TD>wbkgdset()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_70">Set_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR> +<TR><TD>wbkgd()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_71">Change_Background</A></TD><TD><A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></TD></TR> <TR><TD>wborder()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_25">Border</A></TD><TD><A HREF="../man/curs_border.3x.html">curs_border.3x</A></TD></TR> <TR><TD>wchgat()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_38">Change_Attributes</A></TD><TD><A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></TD></TR> <TR><TD>wclear()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_67">Clear</A></TD><TD><A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></TD></TR> @@ -319,8 +319,8 @@ <H2>Sorted by C function name</H2> <TR><TD>wgetch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_29">Get_Keystroke</A></TD><TD><A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></TD></TR> <TR><TD>wgetnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_107">Get</A></TD><TD><A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></TD></TR> <TR><TD>whline()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_27">Horizontal_Line</A></TD><TD><A HREF="../man/curs_border.3x.html">curs_border.3x</A></TD></TR> -<TR><TD>winch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_97">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR> <TR><TD>winchnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_105">Peek</A></TD><TD><A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></TD></TR> +<TR><TD>winch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_97">Peek</A></TD><TD><A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></TD></TR> <TR><TD>winnstr()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_103">Peek</A></TD><TD><A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></TD></TR> <TR><TD>winsch()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_99">Insert</A></TD><TD><A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></TD></TR> <TR><TD>winsdelln()</TD><TD><A HREF="terminal_interface-curses__ads.htm#AFU_82">Insert_Delete_Lines</A></TD><TD><A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></TD></TR> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-aux__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-aux__adb.htm new file mode 100644 index 0000000..9e2272b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-aux__adb.htm @@ -0,0 +1,135 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-aux.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-aux.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Aux --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_42_40" HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A></span> <b>is</b> + <span class="comment"><EM>--</EM></span> + <span class="comment"><EM>-- Some helpers</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_45_14" HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A></span> (<span class="symbol"><A NAME="ref_45_27" HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Cp</A></span> : chars_ptr; + <span class="symbol"><A NAME="ref_46_27" HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A></span> : <b>out</b> String) + <b>is</b> + <span class="comment"><EM>-- Fill the string with the characters referenced by the</EM></span> + <span class="comment"><EM>-- chars_ptr.</EM></span> + <span class="comment"><EM>--</EM></span> + <span class="symbol"><A NAME="ref_51_7">Len</A></span> : Natural; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Cp</A> /= Null_Ptr <b>then</b> + <A HREF="terminal_interface-curses-aux__adb.htm#ref_51_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Cp</A>)); + <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A>'Length &lt; <A HREF="terminal_interface-curses-aux__adb.htm#ref_51_7">Len</A> <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <b>declare</b> + <span class="symbol"><A NAME="ref_59_13">S</A></span> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#ref_51_7">Len</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__adb.htm#ref_59_13">S</A> := Value (<A HREF="terminal_interface-curses-aux__ads.htm#ref_91_27">Cp</A>); + <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A>'First .. (<A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#ref_51_7">Len</A> - 1)) := <A HREF="terminal_interface-curses-aux__adb.htm#ref_59_13">S</A> (<A HREF="terminal_interface-curses-aux__adb.htm#ref_59_13">S</A>'<b>Range</b>); + <b>end</b>; + <b>else</b> + <A HREF="terminal_interface-curses-aux__adb.htm#ref_51_7">Len</A> := 0; + <b>end</b> <b>if</b>; + + <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#ref_51_7">Len</A> &lt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A>'Length <b>then</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A> ((<A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A>'First + <A HREF="terminal_interface-curses-aux__adb.htm#ref_51_7">Len</A>) .. <A HREF="terminal_interface-curses-aux__ads.htm#ref_92_27">Str</A>'Last) := (<b>others</b> =&gt; ' '); + <b>end</b> <b>if</b>; + + <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_74_13" HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A></span> (<span class="symbol"><A NAME="ref_74_26" HREF="terminal_interface-curses-aux__ads.htm#ref_96_26">Cp</A></span> : chars_ptr) <b>return</b> String + <b>is</b> + <span class="symbol"><A NAME="ref_76_7">Len</A></span> : Natural; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_26">Cp</A> /= Null_Ptr <b>then</b> + <A HREF="terminal_interface-curses-aux__adb.htm#ref_76_7">Len</A> := Natural (Strlen (<A HREF="terminal_interface-curses-aux__ads.htm#ref_96_26">Cp</A>)); + <b>if</b> <A HREF="terminal_interface-curses-aux__adb.htm#ref_76_7">Len</A> = 0 <b>then</b> + <b>return</b> ""; + <b>else</b> + <b>declare</b> + <span class="symbol"><A NAME="ref_84_16">S</A></span> : String (1 .. <A HREF="terminal_interface-curses-aux__adb.htm#ref_76_7">Len</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_96_26">Cp</A>, <A HREF="terminal_interface-curses-aux__adb.htm#ref_84_16">S</A>); + <b>return</b> <A HREF="terminal_interface-curses-aux__adb.htm#ref_84_16">S</A>; + <b>end</b>; + <b>end</b> <b>if</b>; + <b>else</b> + <b>return</b> ""; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_95_14" HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A></span> (<span class="symbol"><A NAME="ref_95_29" HREF="terminal_interface-curses-aux__ads.htm#ref_87_29">Code</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>) + <b>is</b> + <b>begin</b> + <b>case</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_29">Code</A> <b>is</b> + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_85_7">E_Ok</A> =&gt; <b>null</b>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_84_7">E_System_Error</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_528_4">Eti_System_Error</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_83_7">E_Bad_Argument</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_529_4">Eti_Bad_Argument</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_82_7">E_Posted</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_530_4">Eti_Posted</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_81_7">E_Connected</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_531_4">Eti_Connected</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_7">E_Bad_State</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_532_4">Eti_Bad_State</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_79_7">E_No_Room</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_533_4">Eti_No_Room</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_7">E_Not_Posted</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_534_4">Eti_Not_Posted</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_77_7">E_Unknown_Command</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_535_4">Eti_Unknown_Command</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_No_Match</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_536_4">Eti_No_Match</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_7">E_Not_Selectable</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_537_4">Eti_Not_Selectable</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_74_7">E_Not_Connected</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_538_4">Eti_Not_Connected</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_73_7">E_Request_Denied</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_539_4">Eti_Request_Denied</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_7">E_Invalid_Field</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_540_4">Eti_Invalid_Field</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_71_7">E_Current</A> =&gt; <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_541_4">Eti_Current</A>; + <b>end</b> <b>case</b>; + <b>end</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-aux__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-aux__ads.htm new file mode 100644 index 0000000..3022236 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-aux__ads.htm @@ -0,0 +1,136 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-aux.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-aux.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Aux --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.25 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_46_35" HREF="terminal_interface-curses-aux__adb.htm#ref_42_40">Aux</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>); + + <b>subtype</b> <span class="symbol"><A NAME="ref_49_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + <b>subtype</b> <span class="symbol"><A NAME="ref_50_12">C_Short</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short; + <b>subtype</b> <span class="symbol"><A NAME="ref_51_12">C_Long_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.long; + <b>subtype</b> <span class="symbol"><A NAME="ref_52_12">C_Size_T</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.size_t; + <b>subtype</b> <span class="symbol"><A NAME="ref_53_12">C_UInt</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.unsigned; + <b>subtype</b> <span class="symbol"><A NAME="ref_54_12">C_ULong</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.unsigned_long; + <b>subtype</b> <span class="symbol"><A NAME="ref_55_12">C_Char_Ptr</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.chars_ptr; + <b>type</b> <span class="symbol"><A NAME="ref_56_12">C_Void_Ptr</A></span> <b>is</b> <b>new</b> System.Address; + + <span class="comment"><EM>-- This is how those constants are defined in ncurses. I see them also</EM></span> + <span class="comment"><EM>-- exactly like this in all ETI implementations I ever tested. So it</EM></span> + <span class="comment"><EM>-- could be that this is quite general, but please check with your curses.</EM></span> + <span class="comment"><EM>-- This is critical, because curses sometime mixes Boolean returns with</EM></span> + <span class="comment"><EM>-- returning an error status.</EM></span> + <span class="symbol"><A NAME="ref_63_4">Curses_Ok</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_12_4">OK</A>; + <span class="symbol"><A NAME="ref_64_4">Curses_Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_13_4">ERR</A>; + + <span class="symbol"><A NAME="ref_66_4">Curses_True</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_15_4">TRUE</A>; + <span class="symbol"><A NAME="ref_67_4">Curses_False</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_16_4">FALSE</A>; + + <span class="comment"><EM>-- Eti_Error: type for error codes returned by the menu and form subsystem</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_70_9" HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Eti_Error</A></span> <b>is</b> + (<span class="symbol"><A NAME="ref_71_7">E_Current</A></span>, + <span class="symbol"><A NAME="ref_72_7">E_Invalid_Field</A></span>, + <span class="symbol"><A NAME="ref_73_7">E_Request_Denied</A></span>, + <span class="symbol"><A NAME="ref_74_7">E_Not_Connected</A></span>, + <span class="symbol"><A NAME="ref_75_7">E_Not_Selectable</A></span>, + <span class="symbol"><A NAME="ref_76_7">E_No_Match</A></span>, + <span class="symbol"><A NAME="ref_77_7">E_Unknown_Command</A></span>, + <span class="symbol"><A NAME="ref_78_7">E_Not_Posted</A></span>, + <span class="symbol"><A NAME="ref_79_7">E_No_Room</A></span>, + <span class="symbol"><A NAME="ref_80_7">E_Bad_State</A></span>, + <span class="symbol"><A NAME="ref_81_7">E_Connected</A></span>, + <span class="symbol"><A NAME="ref_82_7">E_Posted</A></span>, + <span class="symbol"><A NAME="ref_83_7">E_Bad_Argument</A></span>, + <span class="symbol"><A NAME="ref_84_7">E_System_Error</A></span>, + <span class="symbol"><A NAME="ref_85_7">E_Ok</A></span>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_87_14" HREF="terminal_interface-curses-aux__adb.htm#ref_95_14">Eti_Exception</A></span> (<span class="symbol"><A NAME="ref_87_29" HREF="terminal_interface-curses-aux__adb.htm#ref_95_29">Code</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>); + <span class="comment"><EM>-- Do nothing if Code = E_Ok.</EM></span> + <span class="comment"><EM>-- Else dispatch the error code and raise the appropriate exception.</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_91_14" HREF="terminal_interface-curses-aux__adb.htm#ref_45_14">Fill_String</A></span> (<span class="symbol"><A NAME="ref_91_27" HREF="terminal_interface-curses-aux__adb.htm#ref_45_27">Cp</A></span> : chars_ptr; + <span class="symbol"><A NAME="ref_92_27" HREF="terminal_interface-curses-aux__adb.htm#ref_46_27">Str</A></span> : <b>out</b> String); + <span class="comment"><EM>-- Fill the Str parameter with the string denoted by the chars_ptr</EM></span> + <span class="comment"><EM>-- C-Style string.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_96_13" HREF="terminal_interface-curses-aux__adb.htm#ref_74_13">Fill_String</A></span> (<span class="symbol"><A NAME="ref_96_26" HREF="terminal_interface-curses-aux__adb.htm#ref_74_26">Cp</A></span> : chars_ptr) <b>return</b> String; + <span class="comment"><EM>-- Same but as function.</EM></span> + +<b>private</b> + <b>for</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>'Size <b>use</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>'Size; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>); + <b>for</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A> <b>use</b> + (<A HREF="terminal_interface-curses-aux__ads.htm#ref_71_7">E_Current</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_94_4">E_CURRENT</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_7">E_Invalid_Field</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_93_4">E_INVALID_FIELD</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_73_7">E_Request_Denied</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_92_4">E_REQUEST_DENIED</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_74_7">E_Not_Connected</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_91_4">E_NOT_CONNECTED</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_7">E_Not_Selectable</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_90_4">E_NOT_SELECTABLE</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_No_Match</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_89_4">E_NO_MATCH</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_77_7">E_Unknown_Command</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_88_4">E_UNKNOWN_COMMAND</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_78_7">E_Not_Posted</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_87_4">E_NOT_POSTED</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_79_7">E_No_Room</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_86_4">E_NO_ROOM</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_80_7">E_Bad_State</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_85_4">E_BAD_STATE</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_81_7">E_Connected</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_84_4">E_CONNECTED</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_82_7">E_Posted</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_83_4">E_POSTED</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_83_7">E_Bad_Argument</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_82_4">E_BAD_ARGUMENT</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_84_7">E_System_Error</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_81_4">E_SYSTEM_ERROR</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_85_7">E_Ok</A> =&gt; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_80_4">E_OK</A>); +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm new file mode 100644 index 0000000..f7952f6 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__adb.htm @@ -0,0 +1,77 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-alpha.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-alpha.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Alpha --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.14 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_42_53">Alpha</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_51_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_45_9">Alpha_Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_50_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_50_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_30">Fld</A>; + <span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_50_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_alpha"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_50_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_51_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_51_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_47_9">Minimum_Field_Width</A>))); + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_51_30">Typ</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_50_14">Set_Field_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_42_53">Alpha</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm new file mode 100644 index 0000000..f2d1897 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alpha__ads.htm @@ -0,0 +1,72 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-alpha.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-alpha.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Alpha --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_42_53" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_45_58">Alpha</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_42_53">Alpha</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_45_9">Alpha_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> + <b>with</b> <b>record</b> + <span class="symbol"><A NAME="ref_47_9">Minimum_Field_Width</A></span> : Natural := 0; + <b>end</b> <b>record</b>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-alpha__adb.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_45_9">Alpha_Field</A>); + <b>pragma</b> Inline (Set_Field_Type); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alpha__ads.htm#ref_42_53">Alpha</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm new file mode 100644 index 0000000..ac3a10c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__adb.htm @@ -0,0 +1,77 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-alphanumeric.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-alphanumeric.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.14 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_42_53">AlphaNumeric</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_52_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_46_9">AlphaNumeric_Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_50_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_50_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_30">Fld</A>; + <span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_50_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_alnum"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_50_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_51_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_52_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_48_9">Minimum_Field_Width</A>))); + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_52_30">Typ</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_51_14">Set_Field_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_42_53">AlphaNumeric</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm new file mode 100644 index 0000000..4c398ef --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-alphanumeric__ads.htm @@ -0,0 +1,73 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-alphanumeric.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-alphanumeric.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.AlphaNumeric --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_42_53" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_45_58">AlphaNumeric</A></span> <b>is</b> + <b>pragma</b> Preelaborate + (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_42_53">AlphaNumeric</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_46_9">AlphaNumeric_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> + <b>with</b> <b>record</b> + <span class="symbol"><A NAME="ref_48_9">Minimum_Field_Width</A></span> : Natural := 0; + <b>end</b> <b>record</b>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-alphanumeric__adb.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_46_9">AlphaNumeric_Field</A>); + <b>pragma</b> Inline (Set_Field_Type); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-alphanumeric__ads.htm#ref_42_53">AlphaNumeric</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm new file mode 100644 index 0000000..96d61f6 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm @@ -0,0 +1,100 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-enumeration-ada.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2004,2011 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>.<span class="symbol"><A NAME="ref_45_70" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_45_65">Ada</A></span> <b>is</b> + + <b>function</b> <span class="symbol"><A NAME="ref_47_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_13">Create</A></span> (<span class="symbol"><A NAME="ref_47_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_21">Set</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_51_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_51_46">Mixed_Case</A>; + <span class="symbol"><A NAME="ref_48_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_50_21">Case_Sensitive</A></span> : Boolean := False; + <span class="symbol"><A NAME="ref_49_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_51_21">Must_Be_Unique</A></span> : Boolean := False) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A> + <b>is</b> + <span class="symbol"><A NAME="ref_52_7">I</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_56_9">Enumeration_Info</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>'Last) - <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>'First) + 1); + <span class="symbol"><A NAME="ref_53_7">J</A></span> : Positive := 1; + <b>begin</b> + <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_58_10">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_50_21">Case_Sensitive</A>; + <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_51_21">Must_Be_Unique</A>; + + <b>for</b> <span class="symbol"><A NAME="ref_58_11">E</A></span> <b>in</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>'<b>Range</b> <b>loop</b> + <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A>) := <b>new</b> String'(<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>'Image (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_58_11">E</A>)); + <span class="comment"><EM>-- The Image attribute defaults to upper case, so we have to handle</EM></span> + <span class="comment"><EM>-- only the other ones...</EM></span> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_21">Set</A> /= <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_51_34">Upper_Case</A> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A>).<b>all</b> := To_Lower (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A>).<b>all</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_21">Set</A> = <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_51_46">Mixed_Case</A> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A>).<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A>).<b>all</b>'First) := + To_Upper (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A>).<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A>).<b>all</b>'First)); + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_53_7">J</A> + 1; + <b>end</b> <b>loop</b>; + + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_13">Create</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_52_7">I</A>, True); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_49_13">Create</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_75_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_13">Value</A></span> (<span class="symbol"><A NAME="ref_75_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_76_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_55_20">Buf</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>'Value (<A HREF="terminal_interface-curses-forms__ads.htm#ref_370_13">Get_Buffer</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_20">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_55_20">Buf</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_54_13">Value</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_45_65">Ada</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm new file mode 100644 index 0000000..07d7460 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm @@ -0,0 +1,78 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-enumeration-ada.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-enumeration-ada.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration.Ada --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2002,2003 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_45_65">T</A></span> <b>is</b> (&lt;&gt;); + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>.<span class="symbol"><A NAME="ref_45_65" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_45_70">Ada</A></span> <b>is</b> + <b>pragma</b> Preelaborate + (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_45_65">Ada</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_49_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_47_13">Create</A></span> (<span class="symbol"><A NAME="ref_49_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_47_21">Set</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_51_9">Type_Set</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_51_46">Mixed_Case</A>; + <span class="symbol"><A NAME="ref_50_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_48_21">Case_Sensitive</A></span> : Boolean := False; + <span class="symbol"><A NAME="ref_51_21" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_49_21">Must_Be_Unique</A></span> : Boolean := False) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_54_13" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_75_13">Value</A></span> (<span class="symbol"><A NAME="ref_54_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_75_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_55_20" HREF="terminal_interface-curses-forms-field_types-enumeration-ada__adb.htm#ref_76_20">Buf</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_43_9">T</A>; + <span class="comment"><EM>-- Translate the content of the fields buffer - indicated by the</EM></span> + <span class="comment"><EM>-- buffer number - into an enumeration value. If the buffer is empty</EM></span> + <span class="comment"><EM>-- or the content is invalid, a Constraint_Error is raises.</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration-ada__ads.htm#ref_45_65">Ada</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm new file mode 100644 index 0000000..e2881d9 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__adb.htm @@ -0,0 +1,131 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-enumeration.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-enumeration.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Unchecked_Deallocation; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_47_58" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A></span> <b>is</b> + + <b>function</b> <span class="symbol"><A NAME="ref_49_13" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_13">Create</A></span> (<span class="symbol"><A NAME="ref_49_21" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Info</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_56_9">Enumeration_Info</A>; + <span class="symbol"><A NAME="ref_50_21" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_66_21">Auto_Release_Names</A></span> : Boolean := False) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A> + <b>is</b> + <b>procedure</b> Release_String <b>is</b> + <b>new</b> Ada.Unchecked_Deallocation (String, + <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_48_9">String_Access</A>); + <span class="symbol"><A NAME="ref_56_7">E</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A>; + <span class="symbol"><A NAME="ref_57_7">L</A></span> : <b>constant</b> size_t := 1 + size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_56_27">C</A>); + <span class="symbol"><A NAME="ref_58_7">S</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_48_9">String_Access</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_94_10">Case_Sensitive</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_58_10">Case_Sensitive</A>; + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Match_Must_Be_Unique</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_59_10">Match_Must_Be_Unique</A>; + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A> := <b>new</b> chars_ptr_array (size_t (1) .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_57_7">L</A>); + <b>for</b> <span class="symbol"><A NAME="ref_63_11">I</A></span> <b>in</b> 1 .. Positive (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_57_7">L</A> - 1) <b>loop</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_63_11">I</A>) = <b>null</b> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A>.<b>all</b> (size_t (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_63_11">I</A>)) := New_String (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_63_11">I</A>).<b>all</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_66_21">Auto_Release_Names</A> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_58_7">S</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_21">Info</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_60_10">Names</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_63_11">I</A>); + Release_String (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_58_7">S</A>); + <b>end</b> <b>if</b>; + <b>end</b> <b>loop</b>; + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">E</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_57_7">L</A>) := Null_Ptr; + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_56_7">E</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_13">Create</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_77_14" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_78_14">Release</A></span> (<span class="symbol"><A NAME="ref_77_23" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_78_23">Enum</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_79_7">I</A></span> : size_t := 0; + <span class="symbol"><A NAME="ref_80_7">P</A></span> : chars_ptr; + <b>begin</b> + <b>loop</b> + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_80_7">P</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_78_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_79_7">I</A>); + <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_80_7">P</A> = Null_Ptr; + Free (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_80_7">P</A>); + <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_78_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_79_7">I</A>) := Null_Ptr; + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_79_7">I</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_79_7">I</A> + 1; + <b>end</b> <b>loop</b>; + <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_78_23">Enum</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A> := <b>null</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_78_14">Release</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_92_14" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_92_30" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_93_30" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_86_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_95_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_95_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_95_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Fld</A>; + <span class="symbol"><A NAME="ref_96_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_95_16">Arg1</A></span> : chars_ptr_array; + <span class="symbol"><A NAME="ref_97_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_95_16">Arg2</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>; + <span class="symbol"><A NAME="ref_98_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_95_16">Arg3</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_enum"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_86_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A> = <b>null</b> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> + (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_95_16">Set_Fld_Type</A> + (<A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_96_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_86_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_96_10">Arr</A>.<b>all</b>, + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_97_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_86_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_94_10">Case_Sensitive</A>)), + <A HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_98_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_86_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_95_10">Match_Must_Be_Unique</A>)))); + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_86_30">Typ</A>, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_150_13">C_Choice_Router</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_85_14">Set_Field_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm new file mode 100644 index 0000000..7a4bfbe --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-enumeration__ads.htm @@ -0,0 +1,117 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-enumeration.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-enumeration.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Enumeration --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.15 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_44_53" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_47_58">Enumeration</A></span> <b>is</b> + <b>pragma</b> Preelaborate + (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_48_9">String_Access</A></span> <b>is</b> <b>access</b> String; + + <span class="comment"><EM>-- Type_Set is used by the child package Ada</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_51_9">Type_Set</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_51_22">Lower_Case</A></span>, <span class="symbol"><A NAME="ref_51_34">Upper_Case</A></span>, <span class="symbol"><A NAME="ref_51_46">Mixed_Case</A></span>); + + <b>type</b> Enum_Array <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) + <b>of</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_48_9">String_Access</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_56_9">Enumeration_Info</A></span> (<span class="symbol"><A NAME="ref_56_27" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_56_9">C</A></span> : Positive) <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_58_10">Case_Sensitive</A></span> : Boolean := False; + <span class="symbol"><A NAME="ref_59_10">Match_Must_Be_Unique</A></span> : Boolean := False; + <span class="symbol"><A NAME="ref_60_10">Names</A></span> : Enum_Array (1 .. <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_56_27">C</A>); + <b>end</b> <b>record</b>; + + <b>type</b> <span class="symbol"><A NAME="ref_63_9">Enumeration_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> <b>with</b> <b>private</b>; + + <b>function</b> <span class="symbol"><A NAME="ref_65_13" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_49_13">Create</A></span> (<span class="symbol"><A NAME="ref_65_21" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_49_21">Info</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_56_9">Enumeration_Info</A>; + <span class="symbol"><A NAME="ref_66_21" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_50_21">Auto_Release_Names</A></span> : Boolean := False) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A>; + <span class="comment"><EM>-- Make an fieldtype from the info. Enumerations are special, because</EM></span> + <span class="comment"><EM>-- they normally don't copy the enum values into a private store, so</EM></span> + <span class="comment"><EM>-- we have to care for the lifetime of the info we provide.</EM></span> + <span class="comment"><EM>-- The Auto_Release_Names flag may be used to automatically releases</EM></span> + <span class="comment"><EM>-- the strings in the Names array of the Enumeration_Info.</EM></span> + + <b>function</b> Make_Enumeration_Type (<span class="symbol"><A NAME="ref_74_36">Info</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_56_9">Enumeration_Info</A>; + <span class="symbol"><A NAME="ref_75_36">Auto_Release_Names</A></span> : Boolean := False) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A> <b>renames</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_65_13">Create</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_78_14" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_77_14">Release</A></span> (<span class="symbol"><A NAME="ref_78_23" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_77_23">Enum</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A>); + <span class="comment"><EM>-- But we may want to release the field to release the memory allocated</EM></span> + <span class="comment"><EM>-- by it internally. After that the Enumeration field is no longer usable.</EM></span> + + <span class="comment"><EM>-- The next type definitions are all ncurses extensions. They are typically</EM></span> + <span class="comment"><EM>-- not available in other curses implementations.</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_85_14" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_92_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_85_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_92_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_86_30" HREF="terminal_interface-curses-forms-field_types-enumeration__adb.htm#ref_93_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A>); + <b>pragma</b> Inline (Set_Field_Type); + +<b>private</b> + <b>type</b> <span class="symbol"><A NAME="ref_90_9" HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">CPA_Access</A></span> <b>is</b> <b>access</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.chars_ptr_array; + + <b>type</b> <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_63_9">Enumeration_Field</A> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> <b>with</b> + <b>record</b> + <span class="symbol"><A NAME="ref_94_10">Case_Sensitive</A></span> : Boolean := False; + <span class="symbol"><A NAME="ref_95_10">Match_Must_Be_Unique</A></span> : Boolean := False; + <span class="symbol"><A NAME="ref_96_10">Arr</A></span> : <A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_90_9">CPA_Access</A> := <b>null</b>; + <b>end</b> <b>record</b>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-enumeration__ads.htm#ref_44_53">Enumeration</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm new file mode 100644 index 0000000..3569f01 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__adb.htm @@ -0,0 +1,81 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-intfield.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-intfield.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.IntField --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.14 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_42_53">IntField</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_53_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_45_9">Integer_Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_50_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_50_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Fld</A>; + <span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_50_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>; + <span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_50_16">Arg2</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_51_12">C_Long_Int</A>; + <span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_50_16">Arg3</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_51_12">C_Long_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_integer"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_50_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_51_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_53_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_47_10">Precision</A>), + <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_52_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_51_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_53_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_48_10">Lower_Limit</A>), + <A HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_53_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-aux__ads.htm#ref_51_12">C_Long_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_53_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_49_10">Upper_Limit</A>))); + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_53_30">Typ</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_52_14">Set_Field_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_42_53">IntField</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm new file mode 100644 index 0000000..2331168 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-intfield__ads.htm @@ -0,0 +1,74 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-intfield.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-intfield.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.IntField --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_42_53" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_45_58">IntField</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_42_53">IntField</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_45_9">Integer_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> <b>with</b> + <b>record</b> + <span class="symbol"><A NAME="ref_47_10">Precision</A></span> : Natural; + <span class="symbol"><A NAME="ref_48_10">Lower_Limit</A></span> : Integer; + <span class="symbol"><A NAME="ref_49_10">Upper_Limit</A></span> : Integer; + <b>end</b> <b>record</b>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_52_14" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-intfield__adb.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_45_9">Integer_Field</A>); + <b>pragma</b> Inline (Set_Field_Type); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-intfield__ads.htm#ref_42_53">IntField</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm new file mode 100644 index 0000000..540733b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__adb.htm @@ -0,0 +1,77 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-ipv4_address.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-ipv4_address.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.14 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_42_53">IPV4_Address</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_48_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_48_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_49_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_46_9">Internet_V4_Address_Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_50_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_50_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_50_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_48_30">Fld</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_ipv4"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_50_16">Set_Fld_Type</A>); + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_48_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_49_30">Typ</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_48_14">Set_Field_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_42_53">IPV4_Address</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm new file mode 100644 index 0000000..0e82967 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-ipv4_address__ads.htm @@ -0,0 +1,70 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-ipv4_address.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-ipv4_address.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.IPV4_Address --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_42_53" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_45_58">IPV4_Address</A></span> <b>is</b> + <b>pragma</b> Preelaborate + (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_42_53">IPV4_Address</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_46_9">Internet_V4_Address_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_48_14" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-ipv4_address__adb.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_46_9">Internet_V4_Address_Field</A>); + <b>pragma</b> Inline (Set_Field_Type); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-ipv4_address__ads.htm#ref_42_53">IPV4_Address</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm new file mode 100644 index 0000000..f490216 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__adb.htm @@ -0,0 +1,84 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-numeric.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-numeric.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Numeric --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.15 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_46_58" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_42_53">Numeric</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_48_14" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_53_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_45_9">Numeric_Field</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_51_12">Double</A></span> <b>is</b> <b>new</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.double; + + <b>function</b> <span class="symbol"><A NAME="ref_53_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_53_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Fld</A>; + <span class="symbol"><A NAME="ref_54_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_53_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>; + <span class="symbol"><A NAME="ref_55_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_53_16">Arg2</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_51_12">Double</A>; + <span class="symbol"><A NAME="ref_56_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_53_16">Arg3</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_51_12">Double</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_numeric"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_53_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_54_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_53_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_47_10">Precision</A>), + <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_55_30">Arg2</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_51_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_53_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_48_10">Lower_Limit</A>), + <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_56_30">Arg3</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_51_12">Double</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_53_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_49_10">Upper_Limit</A>))); + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_53_30">Typ</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_52_14">Set_Field_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_42_53">Numeric</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm new file mode 100644 index 0000000..0d33c27 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-numeric__ads.htm @@ -0,0 +1,74 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-numeric.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-numeric.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.Numeric --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_42_53" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_46_58">Numeric</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_42_53">Numeric</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_45_9">Numeric_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> <b>with</b> + <b>record</b> + <span class="symbol"><A NAME="ref_47_10">Precision</A></span> : Natural; + <span class="symbol"><A NAME="ref_48_10">Lower_Limit</A></span> : Float; + <span class="symbol"><A NAME="ref_49_10">Upper_Limit</A></span> : Float; + <b>end</b> <b>record</b>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_52_14" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_48_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_48_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-numeric__adb.htm#ref_49_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_45_9">Numeric_Field</A>); + <b>pragma</b> Inline (Set_Field_Type); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-numeric__ads.htm#ref_42_53">Numeric</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm new file mode 100644 index 0000000..abdd97f --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__adb.htm @@ -0,0 +1,77 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-regexp.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-regexp.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.RegExp --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_42_53">RegExp</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_47_30" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_53_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_47_9">Regular_Expression_Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_50_16">Set_Ftyp</A></span> (<span class="symbol"><A NAME="ref_50_26" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_50_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Fld</A>; + <span class="symbol"><A NAME="ref_51_26" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_50_16">Arg1</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Ftyp, "set_field_type_regexp"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_50_16">Set_Ftyp</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_51_26">Arg1</A> =&gt; To_C (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_53_30">Typ</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_49_10">Regular_Expression</A>.<b>all</b>))); + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A> (<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_30">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_53_30">Typ</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_52_14">Set_Field_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_42_53">RegExp</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm new file mode 100644 index 0000000..4dd1784 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-regexp__ads.htm @@ -0,0 +1,74 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-regexp.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-regexp.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.RegExp --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_42_53" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_45_58">RegExp</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_42_53">RegExp</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_45_9">String_Access</A></span> <b>is</b> <b>access</b> String; + + <b>type</b> <span class="symbol"><A NAME="ref_47_9">Regular_Expression_Field</A></span> <b>is</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> <b>with</b> + <b>record</b> + <span class="symbol"><A NAME="ref_49_10">Regular_Expression</A></span> : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_45_9">String_Access</A>; + <b>end</b> <b>record</b>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_52_14" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_47_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_52_30" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_47_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_53_30" HREF="terminal_interface-curses-forms-field_types-regexp__adb.htm#ref_48_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_47_9">Regular_Expression_Field</A>); + <b>pragma</b> Inline (Set_Field_Type); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-regexp__ads.htm#ref_42_53">RegExp</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm new file mode 100644 index 0000000..a78ae91 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__adb.htm @@ -0,0 +1,123 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-user-choice.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-user-choice.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.User.Choice --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.21 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System.Address_To_Access_Conversions; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>.<span class="symbol"><A NAME="ref_46_63" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_45_58">Choice</A></span> <b>is</b> + + <b>package</b> Argument_Conversions <b>is</b> + <b>new</b> System.Address_To_Access_Conversions (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_9">Argument</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_51_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_13">Generic_Next</A></span> (<span class="symbol"><A NAME="ref_51_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_52_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_82_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_54_7">Result</A></span> : Boolean; + <span class="symbol"><A NAME="ref_55_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_58_9">User_Defined_Field_Type_With_Choice_Access</A> := + <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_58_9">User_Defined_Field_Type_With_Choice_Access</A> + (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_82_27">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_54_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_61_13">Next</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_27">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_55_7">Udf</A>.<b>all</b>); + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_54_7">Result</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_13">Generic_Next</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_63_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_13">Generic_Prev</A></span> (<span class="symbol"><A NAME="ref_63_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_64_27" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_89_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_66_7">Result</A></span> : Boolean; + <span class="symbol"><A NAME="ref_67_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_58_9">User_Defined_Field_Type_With_Choice_Access</A> := + <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_58_9">User_Defined_Field_Type_With_Choice_Access</A> + (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_89_27">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_66_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_68_13">Previous</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_27">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_67_7">Udf</A>.<b>all</b>); + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_66_7">Result</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_13">Generic_Prev</A>; + + <span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>--</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_77_13" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_79_13">C_Generic_Choice</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> + <b>is</b> + <span class="symbol"><A NAME="ref_79_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <span class="symbol"><A NAME="ref_80_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Generic_Choice</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_80_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_223_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_13">Generic_Field_Check</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_13">Generic_Char_Check</A>'<b>Access</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_80_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_80_7">T</A>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_163_13">Make_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A>'<b>Access</b>); + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">Res</A>); + + <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_235_13">Set_Fieldtype_Choice</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_80_7">T</A>, + <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_13">Generic_Next</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_13">Generic_Prev</A>'<b>Access</b>); + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_79_7">Res</A>); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Generic_Choice</A> := <A HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_80_7">T</A>; + <b>end</b> <b>if</b>; + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Generic_Choice</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A>); + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Generic_Choice</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_79_13">C_Generic_Choice</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_45_58">Choice</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm new file mode 100644 index 0000000..7dd786e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user-choice__ads.htm @@ -0,0 +1,113 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-user-choice.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-user-choice.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.User.Choice --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2008,2011 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.15 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>.<span class="symbol"><A NAME="ref_45_58" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_46_63">Choice</A></span> <b>is</b> + <b>pragma</b> Preelaborate + (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_45_58">Choice</A>); + + <b>subtype</b> <span class="symbol"><A NAME="ref_49_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + + <b>type</b> <span class="symbol"><A NAME="ref_51_9">User_Defined_Field_Type_With_Choice</A></span> <b>is</b> <b>abstract</b> <b>new</b> + <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A> <b>with</b> <b>null</b> <b>record</b>; + <span class="comment"><EM>-- This is the root of the mechanism we use to create field types in</EM></span> + <span class="comment"><EM>-- Ada95 that allow the prev/next mechanism. You should your own type</EM></span> + <span class="comment"><EM>-- derive from this one and implement the Field_Check, Character_Check</EM></span> + <span class="comment"><EM>-- Next and Previous functions for your own type.</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_58_9">User_Defined_Field_Type_With_Choice_Access</A></span> <b>is</b> <b>access</b> <b>all</b> + <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_51_9">User_Defined_Field_Type_With_Choice</A>'Class; + + <b>function</b> <span class="symbol"><A NAME="ref_61_13">Next</A></span> + (<span class="symbol"><A NAME="ref_62_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_61_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_63_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_61_13">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_51_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean + <b>is</b> <b>abstract</b>; + <span class="comment"><EM>-- If True is returned, the function successfully generated a next</EM></span> + <span class="comment"><EM>-- value into the fields buffer.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_68_13">Previous</A></span> + (<span class="symbol"><A NAME="ref_69_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_68_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_70_7" HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_68_13">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_51_9">User_Defined_Field_Type_With_Choice</A>) <b>return</b> Boolean + <b>is</b> <b>abstract</b>; + <span class="comment"><EM>-- If True is returned, the function successfully generated a previous</EM></span> + <span class="comment"><EM>-- value into the fields buffer.</EM></span> + + <span class="comment"><EM>-- +----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- | Private Part.</EM></span> + <span class="comment"><EM>-- |</EM></span> +<b>private</b> + <b>function</b> <span class="symbol"><A NAME="ref_79_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_77_13">C_Generic_Choice</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_81_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_51_13">Generic_Next</A></span> (<span class="symbol"><A NAME="ref_81_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_51_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_82_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_52_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_81_13">Generic_Next</A>); + <span class="comment"><EM>-- This is the generic next Choice_Function for the low-level fieldtype</EM></span> + <span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span> + <span class="comment"><EM>-- the call to the Next implementation for the type.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_88_13" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_63_13">Generic_Prev</A></span> (<span class="symbol"><A NAME="ref_88_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_63_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_89_27" HREF="terminal_interface-curses-forms-field_types-user-choice__adb.htm#ref_64_27">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_88_13">Generic_Prev</A>); + <span class="comment"><EM>-- This is the generic prev Choice_Function for the low-level fieldtype</EM></span> + <span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span> + <span class="comment"><EM>-- the call to the Previous implementation for the type.</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>.<A HREF="terminal_interface-curses-forms-field_types-user-choice__ads.htm#ref_45_58">Choice</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm new file mode 100644 index 0000000..333957e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user__adb.htm @@ -0,0 +1,145 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-user.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-user.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.User --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.24 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System.Address_To_Access_Conversions; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_46_58" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_48_14" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_71_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_48_30" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_71_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_49_30" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_72_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_51_16" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_60_16">Allocate_Arg</A></span> (<span class="symbol"><A NAME="ref_51_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_60_30">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>'Class) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_54_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_54_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_54_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_71_30">Fld</A>; + <span class="symbol"><A NAME="ref_55_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_54_16">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_80_13">C_Generic_Type</A>; + <span class="symbol"><A NAME="ref_56_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_54_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_user"); + + <b>function</b> <span class="symbol"><A NAME="ref_60_16" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_51_16">Allocate_Arg</A></span> (<span class="symbol"><A NAME="ref_60_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_51_30">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>'Class) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> + <b>is</b> + <span class="symbol"><A NAME="ref_63_10">Ptr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_64_9">Field_Type_Access</A> + := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_51_30">T</A>); + <b>begin</b> + <b>return</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_9">Argument</A>'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A> =&gt; System.Null_Address, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_63_10">Ptr</A>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_51_16">Allocate_Arg</A>; + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_54_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_56_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_51_16">Allocate_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_72_30">Typ</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_71_14">Set_Field_Type</A>; + + <b>package</b> Argument_Conversions <b>is</b> + <b>new</b> System.Address_To_Access_Conversions (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_9">Argument</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_78_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_13">Generic_Field_Check</A></span> (<span class="symbol"><A NAME="ref_78_34" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_34">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_79_34" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_83_34">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_81_7">Result</A></span> : Boolean; + <span class="symbol"><A NAME="ref_82_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_54_9">User_Defined_Field_Type_Access</A> := + <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_54_9">User_Defined_Field_Type_Access</A> + (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_83_34">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_81_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_57_13">Field_Check</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_34">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_82_7">Udf</A>.<b>all</b>); + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_81_7">Result</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_13">Generic_Field_Check</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_90_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_13">Generic_Char_Check</A></span> (<span class="symbol"><A NAME="ref_90_33" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_33">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_47_12">C_Int</A>; + <span class="symbol"><A NAME="ref_91_33" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_90_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_93_7">Result</A></span> : Boolean; + <span class="symbol"><A NAME="ref_94_7">Udf</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_54_9">User_Defined_Field_Type_Access</A> := + <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_54_9">User_Defined_Field_Type_Access</A> + (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_90_33">Usr</A>)).<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_93_7">Result</A> := <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_64_13">Character_Check</A> (Character'Val (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_33">Ch</A>), <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_94_7">Udf</A>.<b>all</b>); + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_93_7">Result</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_13">Generic_Char_Check</A>; + + <span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>--</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_104_13" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_80_13">C_Generic_Type</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> + <b>is</b> + <span class="symbol"><A NAME="ref_106_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <span class="symbol"><A NAME="ref_107_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Type</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_107_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_223_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_13">Generic_Field_Check</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_13">Generic_Char_Check</A>'<b>Access</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_107_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_106_7">Res</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_107_7">T</A>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_163_13">Make_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A>'<b>Access</b>); + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_106_7">Res</A>); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Type</A> := <A HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_107_7">T</A>; + <b>end</b> <b>if</b>; + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Type</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A>); + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Type</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_80_13">C_Generic_Type</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm new file mode 100644 index 0000000..1b753bb --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types-user__ads.htm @@ -0,0 +1,114 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types-user.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types-user.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types.User --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2009,2011 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.16 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<span class="symbol"><A NAME="ref_45_53" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_46_58">User</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>); + <b>subtype</b> <span class="symbol"><A NAME="ref_47_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + + <b>type</b> <span class="symbol"><A NAME="ref_49_9">User_Defined_Field_Type</A></span> <b>is</b> <b>abstract</b> <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A> <b>with</b> <b>null</b> <b>record</b>; + <span class="comment"><EM>-- This is the root of the mechanism we use to create field types in</EM></span> + <span class="comment"><EM>-- Ada95. You should your own type derive from this one and implement</EM></span> + <span class="comment"><EM>-- the Field_Check and Character_Check functions for your own type.</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_54_9">User_Defined_Field_Type_Access</A></span> <b>is</b> <b>access</b> <b>all</b> + <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>'Class; + + <b>function</b> <span class="symbol"><A NAME="ref_57_13">Field_Check</A></span> + (<span class="symbol"><A NAME="ref_58_7" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_57_13">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_57_13">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>) <b>return</b> Boolean + <b>is</b> <b>abstract</b>; + <span class="comment"><EM>-- If True is returned, the field is considered valid, otherwise it is</EM></span> + <span class="comment"><EM>-- invalid.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_64_13">Character_Check</A></span> + (<span class="symbol"><A NAME="ref_65_7" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_64_13">Ch</A></span> : Character; + <span class="symbol"><A NAME="ref_66_7" HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_64_13">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>) <b>return</b> Boolean + <b>is</b> <b>abstract</b>; + <span class="comment"><EM>-- If True is returned, the character is considered as valid for the</EM></span> + <span class="comment"><EM>-- field, otherwise as invalid.</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_71_14" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_48_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_71_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_48_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_72_30" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_49_30">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_49_9">User_Defined_Field_Type</A>); + <span class="comment"><EM>-- This should work for all types derived from User_Defined_Field_Type.</EM></span> + <span class="comment"><EM>-- No need to reimplement it for your derived type.</EM></span> + + <span class="comment"><EM>-- +----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- | Private Part.</EM></span> + <span class="comment"><EM>-- | Used by the Choice child package.</EM></span> +<b>private</b> + <b>function</b> <span class="symbol"><A NAME="ref_80_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_104_13">C_Generic_Type</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_82_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_78_13">Generic_Field_Check</A></span> (<span class="symbol"><A NAME="ref_82_34" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_78_34">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_83_34" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_79_34">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_82_13">Generic_Field_Check</A>); + <span class="comment"><EM>-- This is the generic Field_Check_Function for the low-level fieldtype</EM></span> + <span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span> + <span class="comment"><EM>-- the call to the Field_Check implementation for the type.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_89_13" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_90_13">Generic_Char_Check</A></span> (<span class="symbol"><A NAME="ref_89_33" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_90_33">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_47_12">C_Int</A>; + <span class="symbol"><A NAME="ref_90_33" HREF="terminal_interface-curses-forms-field_types-user__adb.htm#ref_91_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_89_13">Generic_Char_Check</A>); + <span class="comment"><EM>-- This is the generic Char_Check_Function for the low-level fieldtype</EM></span> + <span class="comment"><EM>-- representing all the User_Defined_Field_Type derivatives. It routes</EM></span> + <span class="comment"><EM>-- the call to the Character_Check implementation for the type.</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>.<A HREF="terminal_interface-curses-forms-field_types-user__ads.htm#ref_45_53">User</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm new file mode 100644 index 0000000..35cc0df --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types__adb.htm @@ -0,0 +1,288 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.29 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>with</b> Ada.Unchecked_Deallocation; +<b>with</b> System.Address_To_Access_Conversions; + +<span class="comment"><EM>-- |</EM></span> +<span class="comment"><EM>-- |=====================================================================</EM></span> +<span class="comment"><EM>-- | man page form_fieldtype.3x</EM></span> +<span class="comment"><EM>-- |=====================================================================</EM></span> +<span class="comment"><EM>-- |</EM></span> +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<span class="symbol"><A NAME="ref_52_46" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A></span> <b>is</b> + + <b>use</b> <b>type</b> System.Address; + + <b>package</b> Argument_Conversions <b>is</b> + <b>new</b> System.Address_To_Access_Conversions (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_9">Argument</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_59_13">Get_Fieldtype</A></span> (<span class="symbol"><A NAME="ref_59_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_59_13">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>pragma</b> Import (C, Get_Fieldtype, "field_type"); + + <b>function</b> <span class="symbol"><A NAME="ref_62_13">Get_Arg</A></span> (<span class="symbol"><A NAME="ref_62_22" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_62_13">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> System.Address; + <b>pragma</b> Import (C, Get_Arg, "field_arg"); + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_field_validation.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_71_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_80_13">Get_Type</A></span> (<span class="symbol"><A NAME="ref_71_23" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_80_23">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_64_9">Field_Type_Access</A> + <b>is</b> + <span class="symbol"><A NAME="ref_73_7">Low_Level</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_59_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_80_23">Fld</A>); + <span class="symbol"><A NAME="ref_74_7">Arg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <b>return</b> <b>null</b>; + <b>else</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Builtin_Router</A> <b>or</b> <b>else</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_142_4">M_Generic_Type</A> <b>or</b> <b>else</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_145_4">M_Choice_Router</A> <b>or</b> <b>else</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_73_7">Low_Level</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_143_4">M_Generic_Choice</A> + <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_74_7">Arg</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> + (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_62_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_80_23">Fld</A>))); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_74_7">Arg</A> = <b>null</b> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_74_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A>; + <b>end</b> <b>if</b>; + <b>else</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_80_13">Get_Type</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_97_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A></span> (<span class="symbol"><A NAME="ref_97_23" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_23">Usr</A></span> : System.Address) <b>return</b> System.Address + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_23">Usr</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_103_14" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A></span> (<span class="symbol"><A NAME="ref_103_24" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_24">Usr</A></span> : System.Address) + <b>is</b> + <b>procedure</b> Free_Type <b>is</b> <b>new</b> Ada.Unchecked_Deallocation + (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A>'Class, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_64_9">Field_Type_Access</A>); + <b>procedure</b> Freeargs <b>is</b> <b>new</b> Ada.Unchecked_Deallocation + (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_9">Argument</A>, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A>); + + <span class="symbol"><A NAME="ref_110_7">To_Be_Free</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> + := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_24">Usr</A>)); + <span class="symbol"><A NAME="ref_112_7">Low_Level</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">To_Be_Free</A> /= <b>null</b> <b>then</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A> /= System.Null_Address <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_112_7">Low_Level</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>; + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_112_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_127_10">Freearg</A> /= <b>null</b> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_112_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_127_10">Freearg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A>); + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A> /= <b>null</b> <b>then</b> + Free_Type (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">To_Be_Free</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A>); + <b>end</b> <b>if</b>; + Freeargs (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_110_7">To_Be_Free</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_128_14" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A></span> (<span class="symbol"><A NAME="ref_128_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_129_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_153_28">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A>'Class; + <span class="symbol"><A NAME="ref_130_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_154_28">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Builtin_Router</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_132_7">Usr_Arg</A></span> : <b>constant</b> System.Address := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_62_13">Get_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Fld</A>); + <span class="symbol"><A NAME="ref_133_7">Low_Level</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_59_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Fld</A>); + <span class="symbol"><A NAME="ref_134_7">Arg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A>; + <b>function</b> <span class="symbol"><A NAME="ref_135_16">Set_Fld_Type</A></span> (<span class="symbol"><A NAME="ref_135_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_135_16">F</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Fld</A>; + <span class="symbol"><A NAME="ref_136_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_135_16">Cf</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_154_28">Cft</A>; + <span class="symbol"><A NAME="ref_137_30" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_135_16">Arg1</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Type, "set_field_type_user"); + + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Low_Level</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_154_28">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Builtin_Router</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_154_28">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_150_13">C_Choice_Router</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_7">Arg</A> := <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_9">Argument</A>'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A> =&gt; System.Null_Address, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A> =&gt; <b>new</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A>'Class'(<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_153_28">Typ</A>), + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_59_13">Get_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_28">Fld</A>)); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Usr_Arg</A> /= System.Null_Address <b>then</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_126_10">Copyarg</A> /= <b>null</b> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_133_7">Low_Level</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_126_10">Copyarg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Usr_Arg</A>); + <b>else</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_132_7">Usr_Arg</A>; + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_135_16">Set_Fld_Type</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_137_30">Arg1</A> =&gt; <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_134_7">Arg</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_152_14">Wrap_Builtin</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_160_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_13">Field_Check_Router</A></span> (<span class="symbol"><A NAME="ref_160_33" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_161_33" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_179_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_163_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> + := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_179_33">Usr</A>)); + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_163_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_163_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> + <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_163_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A> /= <b>null</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_163_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_128_10">Fcheck</A> /= <b>null</b> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_163_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_128_10">Fcheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_33">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_163_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A>); + <b>else</b> + <b>return</b> 1; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_13">Field_Check_Router</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_175_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_13">Char_Check_Router</A></span> (<span class="symbol"><A NAME="ref_175_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_32">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>; + <span class="symbol"><A NAME="ref_176_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_187_32">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_178_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> + := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_187_32">Usr</A>)); + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_178_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_178_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> + <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_178_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A> /= <b>null</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_178_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_10">Ccheck</A> /= <b>null</b> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_178_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_129_10">Ccheck</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_32">Ch</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_178_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A>); + <b>else</b> + <b>return</b> 1; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_13">Char_Check_Router</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_190_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_13">Next_Router</A></span> (<span class="symbol"><A NAME="ref_190_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_191_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_195_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_193_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> + := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_195_26">Usr</A>)); + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_193_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_193_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> + <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_193_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A> /= <b>null</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_193_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_130_10">Next</A> /= <b>null</b> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_193_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_130_10">Next</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_26">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_193_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A>); + <b>else</b> + <b>return</b> 1; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_13">Next_Router</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_205_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_13">Prev_Router</A></span> (<span class="symbol"><A NAME="ref_205_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_206_26" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_203_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> + <b>is</b> + <span class="symbol"><A NAME="ref_208_7">Arg</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> := + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_217_9">Argument_Access</A> (Argument_Conversions.To_Pointer (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_203_26">Usr</A>)); + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_208_7">Arg</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_208_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> + <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_208_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_213_7">Typ</A> /= <b>null</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_208_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_130_16">Prev</A> /= <b>null</b> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_208_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_215_7">Cft</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_130_16">Prev</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_26">Fld</A>, <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_208_7">Arg</A>.<b>all</b>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_214_7">Usr</A>); + <b>else</b> + <b>return</b> 1; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_13">Prev_Router</A>; + + <span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>--</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_222_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Builtin_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> + <b>is</b> + <span class="symbol"><A NAME="ref_224_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Builtin_Router</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_224_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_223_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_13">Field_Check_Router</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_13">Char_Check_Router</A>'<b>Access</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_224_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_224_7">T</A>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_163_13">Make_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A>'<b>Access</b>)); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Builtin_Router</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_224_7">T</A>; + <b>end</b> <b>if</b>; + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Builtin_Router</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A>); + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_144_4">M_Builtin_Router</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Builtin_Router</A>; + + <span class="comment"><EM>-- -----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>--</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_245_13" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_150_13">C_Choice_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> + <b>is</b> + <span class="symbol"><A NAME="ref_247_7">T</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_145_4">M_Choice_Router</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_247_7">T</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_223_13">New_Fieldtype</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_13">Field_Check_Router</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_13">Char_Check_Router</A>'<b>Access</b>); + <b>if</b> <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_247_7">T</A> = <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Set_Fieldtype_Arg</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_247_7">T</A>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_163_13">Make_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A>'<b>Access</b>)); + + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_235_13">Set_Fieldtype_Choice</A> (<A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_247_7">T</A>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_13">Next_Router</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_13">Prev_Router</A>'<b>Access</b>)); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_145_4">M_Choice_Router</A> := <A HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_247_7">T</A>; + <b>end</b> <b>if</b>; + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_145_4">M_Choice_Router</A> /= <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_135_4">Null_Field_Type</A>); + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_145_4">M_Choice_Router</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_150_13">C_Choice_Router</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm new file mode 100644 index 0000000..470231e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_types__ads.htm @@ -0,0 +1,258 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_types.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_types.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_Types --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.21 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<span class="symbol"><A NAME="ref_45_41" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_52_46">Field_Types</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>); + <b>subtype</b> <span class="symbol"><A NAME="ref_47_12">C_Int</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_fieldtype.3x.html">form_fieldtype.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_53_9">Field_Type</A></span> <b>is</b> <b>abstract</b> <b>tagged</b> <b>null</b> <b>record</b>; + <span class="comment"><EM>-- Abstract base type for all field types. A concrete field type</EM></span> + <span class="comment"><EM>-- is an extension that adds some data elements describing formats or</EM></span> + <span class="comment"><EM>-- boundary values for the type and validation routines.</EM></span> + <span class="comment"><EM>-- For the builtin low-level fieldtypes, the validation routines are</EM></span> + <span class="comment"><EM>-- already defined by the low-level C library.</EM></span> + <span class="comment"><EM>-- The builtin types like Alpha or AlphaNumeric etc. are defined in</EM></span> + <span class="comment"><EM>-- child packages of this package. You may use one of them as example</EM></span> + <span class="comment"><EM>-- how to create you own child packages for low-level field types that</EM></span> + <span class="comment"><EM>-- you may have already written in C.</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_64_9">Field_Type_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A>'Class; + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_67_14">Set_Field_Type</A></span> (<span class="symbol"><A NAME="ref_67_30" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_67_14">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_68_30" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_67_14">Fld_Type</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A>) <b>is</b> <b>abstract</b>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_fieldtype.3x.html">set_field_type()</A></EM></span> + <span class="comment"><EM>-- But: we hide the vararg mechanism of the C interface. You always</EM></span> + <span class="comment"><EM>-- have to pass a single Field_Type parameter.</EM></span> + + <span class="comment"><EM>-- ---------------------------------------------------------------------</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_validation.3x.html">form_field_validation.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_80_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_71_13">Get_Type</A></span> (<span class="symbol"><A NAME="ref_80_23" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_71_23">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_64_9">Field_Type_Access</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_validation.3x.html">field_type()</A></EM></span> + <span class="comment"><EM>-- AKA: field_arg()</EM></span> + <span class="comment"><EM>-- In Ada95 we can combine these. If you try to retrieve the field type</EM></span> + <span class="comment"><EM>-- that is not defined as extension of the abstract tagged type above,</EM></span> + <span class="comment"><EM>-- you will raise a Form_Exception.</EM></span> + <span class="comment"><EM>-- This is not inlined</EM></span> + + <span class="comment"><EM>-- +----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- | Private Part.</EM></span> + <span class="comment"><EM>-- | Most of this is used by the implementations of the child packages.</EM></span> + <span class="comment"><EM>-- |</EM></span> +<b>private</b> + <b>type</b> <span class="symbol"><A NAME="ref_93_9" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Makearg_Function</A></span> <b>is</b> <b>access</b> + <b>function</b> (<span class="symbol"><A NAME="ref_94_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_93_9">Args</A></span> : System.Address) <b>return</b> System.Address; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_93_9">Makearg_Function</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_97_9">Copyarg_Function</A></span> <b>is</b> <b>access</b> + <b>function</b> (<span class="symbol"><A NAME="ref_98_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_97_9">Usr</A></span> : System.Address) <b>return</b> System.Address; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_97_9">Copyarg_Function</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_101_9">Freearg_Function</A></span> <b>is</b> <b>access</b> + <b>procedure</b> (<span class="symbol"><A NAME="ref_102_17" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_101_9">Usr</A></span> : System.Address); + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_101_9">Freearg_Function</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_105_9">Field_Check_Function</A></span> <b>is</b> <b>access</b> + <b>function</b> (<span class="symbol"><A NAME="ref_106_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_105_9">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; <span class="symbol"><A NAME="ref_106_29" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_105_9">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_105_9">Field_Check_Function</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_109_9">Char_Check_Function</A></span> <b>is</b> <b>access</b> + <b>function</b> (<span class="symbol"><A NAME="ref_110_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_109_9">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>; <span class="symbol"><A NAME="ref_110_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_109_9">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_109_9">Char_Check_Function</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_113_9">Choice_Function</A></span> <b>is</b> <b>access</b> + <b>function</b> (<span class="symbol"><A NAME="ref_114_16" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_113_9">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; <span class="symbol"><A NAME="ref_114_29" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_113_9">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_113_9">Choice_Function</A>); + + <span class="comment"><EM>-- +----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- | This must be in sync with the FIELDTYPE structure in form.h</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_120_9">Low_Level_Field_Type</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_122_10">Status</A></span> : <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.unsigned_short; + <span class="symbol"><A NAME="ref_123_10">Ref_Count</A></span> : <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.long; + <span class="symbol"><A NAME="ref_124_10">Left</A></span>, <span class="symbol"><A NAME="ref_124_16">Right</A></span> : System.Address; + <span class="symbol"><A NAME="ref_125_10">Makearg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_93_9">Makearg_Function</A>; + <span class="symbol"><A NAME="ref_126_10">Copyarg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_97_9">Copyarg_Function</A>; + <span class="symbol"><A NAME="ref_127_10">Freearg</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_101_9">Freearg_Function</A>; + <span class="symbol"><A NAME="ref_128_10">Fcheck</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_105_9">Field_Check_Function</A>; + <span class="symbol"><A NAME="ref_129_10">Ccheck</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_109_9">Char_Check_Function</A>; + <span class="symbol"><A NAME="ref_130_10">Next</A></span>, <span class="symbol"><A NAME="ref_130_16">Prev</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_113_9">Choice_Function</A>; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_120_9">Low_Level_Field_Type</A>); + <b>type</b> <span class="symbol"><A NAME="ref_133_9">C_Field_Type</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_120_9">Low_Level_Field_Type</A>; + + <span class="symbol"><A NAME="ref_135_4">Null_Field_Type</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <b>null</b>; + + <span class="comment"><EM>-- +----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- | This four low-level fieldtypes are the ones associated with</EM></span> + <span class="comment"><EM>-- | fieldtypes handled by this binding. Any other low-level fieldtype</EM></span> + <span class="comment"><EM>-- | will result in a Form_Exception is function Get_Type.</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="symbol"><A NAME="ref_142_4">M_Generic_Type</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <b>null</b>; + <span class="symbol"><A NAME="ref_143_4">M_Generic_Choice</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <b>null</b>; + <span class="symbol"><A NAME="ref_144_4">M_Builtin_Router</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <b>null</b>; + <span class="symbol"><A NAME="ref_145_4">M_Choice_Router</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <b>null</b>; + + <span class="comment"><EM>-- Two wrapper functions to access those low-level fieldtypes defined</EM></span> + <span class="comment"><EM>-- in this package.</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_149_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_222_13">C_Builtin_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>function</b> <span class="symbol"><A NAME="ref_150_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_245_13">C_Choice_Router</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_152_14" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_128_14">Wrap_Builtin</A></span> (<span class="symbol"><A NAME="ref_152_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_128_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_153_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_129_28">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_53_9">Field_Type</A>'Class; + <span class="symbol"><A NAME="ref_154_28" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_130_28">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_149_13">C_Builtin_Router</A>); + <span class="comment"><EM>-- This procedure has to be called by the Set_Field_Type implementation</EM></span> + <span class="comment"><EM>-- for builtin low-level fieldtypes to replace it by an Ada95</EM></span> + <span class="comment"><EM>-- conformant Field_Type object.</EM></span> + <span class="comment"><EM>-- The parameter Cft must be C_Builtin_Router for regular low-level</EM></span> + <span class="comment"><EM>-- fieldtypes (like TYP_ALPHA or TYP_ALNUM) and C_Choice_Router for</EM></span> + <span class="comment"><EM>-- low-level fieldtypes witch choice functions (like TYP_ENUM).</EM></span> + <span class="comment"><EM>-- Any other value will raise a Form_Exception.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_163_13">Make_Arg</A></span> (<span class="symbol"><A NAME="ref_163_23" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_163_13">Args</A></span> : System.Address) <b>return</b> System.Address; + <b>pragma</b> Import (C, Make_Arg, "void_star_make_arg"); + <span class="comment"><EM>-- This is the Makearg_Function for the internal low-level types</EM></span> + <span class="comment"><EM>-- introduced by this binding.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_168_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_97_13">Copy_Arg</A></span> (<span class="symbol"><A NAME="ref_168_23" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_97_23">Usr</A></span> : System.Address) <b>return</b> System.Address; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A>); + <span class="comment"><EM>-- This is the Copyarg_Function for the internal low-level types</EM></span> + <span class="comment"><EM>-- introduced by this binding.</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_173_14" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_103_14">Free_Arg</A></span> (<span class="symbol"><A NAME="ref_173_24" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_103_24">Usr</A></span> : System.Address); + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A>); + <span class="comment"><EM>-- This is the Freearg_Function for the internal low-level types</EM></span> + <span class="comment"><EM>-- introduced by this binding.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_178_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_160_13">Field_Check_Router</A></span> (<span class="symbol"><A NAME="ref_178_33" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_160_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_179_33" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_161_33">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_178_13">Field_Check_Router</A>); + <span class="comment"><EM>-- This is the Field_Check_Function for the internal low-level types</EM></span> + <span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span> + <span class="comment"><EM>-- type. It routes the call to the corresponding low-level validation</EM></span> + <span class="comment"><EM>-- function.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_186_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_175_13">Char_Check_Router</A></span> (<span class="symbol"><A NAME="ref_186_32" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_175_32">Ch</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_47_12">C_Int</A>; + <span class="symbol"><A NAME="ref_187_32" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_176_32">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_186_13">Char_Check_Router</A>); + <span class="comment"><EM>-- This is the Char_Check_Function for the internal low-level types</EM></span> + <span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span> + <span class="comment"><EM>-- type. It routes the call to the corresponding low-level validation</EM></span> + <span class="comment"><EM>-- function.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_194_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_190_13">Next_Router</A></span> (<span class="symbol"><A NAME="ref_194_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_190_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_195_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_191_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_194_13">Next_Router</A>); + <span class="comment"><EM>-- This is the Choice_Function for the internal low-level types</EM></span> + <span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span> + <span class="comment"><EM>-- type. It routes the call to the corresponding low-level next_choice</EM></span> + <span class="comment"><EM>-- function.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_202_13" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_205_13">Prev_Router</A></span> (<span class="symbol"><A NAME="ref_202_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_205_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_203_26" HREF="terminal_interface-curses-forms-field_types__adb.htm#ref_206_26">Usr</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_202_13">Prev_Router</A>); + <span class="comment"><EM>-- This is the Choice_Function for the internal low-level types</EM></span> + <span class="comment"><EM>-- introduced to wrap the low-level types by a Field_Type derived</EM></span> + <span class="comment"><EM>-- type. It routes the call to the corresponding low-level prev_choice</EM></span> + <span class="comment"><EM>-- function.</EM></span> + + <span class="comment"><EM>-- This is the Argument structure maintained by all low-level field types</EM></span> + <span class="comment"><EM>-- introduced by this binding.</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_212_9">Argument</A></span> <b>is</b> <b>record</b> + <span class="symbol"><A NAME="ref_213_7">Typ</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_64_9">Field_Type_Access</A>; <span class="comment"><EM>-- the Field_Type creating this record</EM></span> + <span class="symbol"><A NAME="ref_214_7">Usr</A></span> : System.Address; <span class="comment"><EM>-- original arg for builtin low-level types</EM></span> + <span class="symbol"><A NAME="ref_215_7">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; <span class="comment"><EM>-- the original low-level type</EM></span> + <b>end</b> <b>record</b>; + <b>type</b> <span class="symbol"><A NAME="ref_217_9">Argument_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_212_9">Argument</A>; + + <span class="comment"><EM>-- +----------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- | Some Imports of libform routines to deal with low-level fieldtypes.</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_223_13">New_Fieldtype</A></span> (<span class="symbol"><A NAME="ref_223_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_223_13">Fcheck</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_105_9">Field_Check_Function</A>; + <span class="symbol"><A NAME="ref_224_28" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_223_13">Ccheck</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_109_9">Char_Check_Function</A>) + <b>return</b> <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <b>pragma</b> Import (C, New_Fieldtype, "new_fieldtype"); + + <b>function</b> <span class="symbol"><A NAME="ref_228_13">Set_Fieldtype_Arg</A></span> (<span class="symbol"><A NAME="ref_228_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <span class="symbol"><A NAME="ref_229_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Mak</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_93_9">Makearg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_163_13">Make_Arg</A>'<b>Access</b>; + <span class="symbol"><A NAME="ref_230_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Cop</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_97_9">Copyarg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_168_13">Copy_Arg</A>'<b>Access</b>; + <span class="symbol"><A NAME="ref_231_32" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_228_13">Fre</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_101_9">Freearg_Function</A> := <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_173_14">Free_Arg</A>'<b>Access</b>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fieldtype_Arg, "set_fieldtype_arg"); + + <b>function</b> <span class="symbol"><A NAME="ref_235_13">Set_Fieldtype_Choice</A></span> (<span class="symbol"><A NAME="ref_235_35" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_235_13">Cft</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_133_9">C_Field_Type</A>; + <span class="symbol"><A NAME="ref_236_35" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_235_13">Next</A></span>, <span class="symbol"><A NAME="ref_236_41" HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_235_13">Prev</A></span> : <A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_113_9">Choice_Function</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fieldtype_Choice, "set_fieldtype_choice"); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_types__ads.htm#ref_45_41">Field_Types</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm new file mode 100644 index 0000000..3b07add --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_user_data__adb.htm @@ -0,0 +1,99 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_user_data.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_user_data.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.17 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<span class="comment"><EM>-- |</EM></span> +<span class="comment"><EM>-- |=====================================================================</EM></span> +<span class="comment"><EM>-- | man page form_field_userptr.3x</EM></span> +<span class="comment"><EM>-- |=====================================================================</EM></span> +<span class="comment"><EM>-- |</EM></span> +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<span class="symbol"><A NAME="ref_49_46" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_46_41">Field_User_Data</A></span> <b>is</b> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_55_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_56_16">Set_Field_Userptr</A></span> (<span class="symbol"><A NAME="ref_56_35" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_56_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_57_35" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_56_16">Usr</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Userptr, "set_field_userptr"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_56_16">Set_Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_29">Fld</A>, <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_55_29">Data</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_14">Set_User_Data</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_66_13" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_65_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_66_28" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_65_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_68_16">Field_Userptr</A></span> (<span class="symbol"><A NAME="ref_68_31" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_68_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A>; + <b>pragma</b> Import (C, Field_Userptr, "field_userptr"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_68_16">Field_Userptr</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_65_28">Fld</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_65_13">Get_User_Data</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_74_14" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_60_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_74_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_60_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_75_29" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_61_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_61_29">Data</A> := <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_65_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_60_29">Fld</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_60_14">Get_User_Data</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_46_41">Field_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm new file mode 100644 index 0000000..7321fc4 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-field_user_data__ads.htm @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-field_user_data.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-field_user_data.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Field_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.17 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_46_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>; + <b>type</b> <span class="symbol"><A NAME="ref_45_9" HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_46_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_44_9">User</A>; +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<span class="symbol"><A NAME="ref_46_41" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_49_46">Field_User_Data</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_46_41">Field_User_Data</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_userptr.3x.html">form_field_userptr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_54_14" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_53_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_53_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_55_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_54_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">set_field_userptr</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_54_14">Set_User_Data</A>); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_60_14" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_74_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_74_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_61_29" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_75_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_65_13" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_66_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_28" HREF="terminal_interface-curses-forms-field_user_data__adb.htm#ref_66_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_45_9">User_Access</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_userptr.3x.html">field_userptr</A></EM></span> + <span class="comment"><EM>-- Sama as function</EM></span> + <b>pragma</b> Inline (Get_User_Data); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-field_user_data__ads.htm#ref_46_41">Field_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm new file mode 100644 index 0000000..5a885ff --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-form_user_data__adb.htm @@ -0,0 +1,100 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-form_user_data.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-form_user_data.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Form_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.17 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- |</EM></span> +<span class="comment"><EM>-- |=====================================================================</EM></span> +<span class="comment"><EM>-- | man page form__userptr.3x</EM></span> +<span class="comment"><EM>-- |=====================================================================</EM></span> +<span class="comment"><EM>-- |</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<span class="symbol"><A NAME="ref_49_46" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_46_41">Form_User_Data</A></span> <b>is</b> + + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_54_14" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_55_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_55_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_57_16">Set_Form_Userptr</A></span> (<span class="symbol"><A NAME="ref_57_34" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_57_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_58_34" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_57_16">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Form_Userptr, "set_form_userptr"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_57_16">Set_Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_29">Frm</A>, <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_55_29">Data</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_14">Set_User_Data</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_67_13" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_65_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_67_28" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_65_28">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_69_16">Form_Userptr</A></span> (<span class="symbol"><A NAME="ref_69_30" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_69_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A>; + <b>pragma</b> Import (C, Form_Userptr, "form_userptr"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_69_16">Form_Userptr</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_65_28">Frm</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_65_13">Get_User_Data</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_75_14" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_60_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_75_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_60_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_76_29" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_61_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_61_29">Data</A> := <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_65_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_60_29">Frm</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_60_14">Get_User_Data</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_46_41">Form_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm new file mode 100644 index 0000000..915dd0a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms-form_user_data__ads.htm @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms-form_user_data.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms-form_user_data.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms.Form_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.16 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_46_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>; + <b>type</b> <span class="symbol"><A NAME="ref_45_9" HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_46_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_44_9">User</A>; +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<span class="symbol"><A NAME="ref_46_41" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_49_46">Form_User_Data</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_46_41">Form_User_Data</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_userptr.3x.html">form_userptr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_54_14" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_54_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_54_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_55_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_55_29">Data</A></span> : <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">set_form_userptr</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_54_14">Set_User_Data</A>); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_60_14" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_75_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_75_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_61_29" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_76_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_65_13" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_67_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_28" HREF="terminal_interface-curses-forms-form_user_data__adb.htm#ref_67_28">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_45_9">User_Access</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_userptr.3x.html">form_userptr</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Get_User_Data); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>.<A HREF="terminal_interface-curses-forms-form_user_data__ads.htm#ref_46_41">Form_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms__adb.htm new file mode 100644 index 0000000..7820c33 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms__adb.htm @@ -0,0 +1,1050 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Forms --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.33 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Unchecked_Deallocation; + +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers; + +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_51_40" HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A></span> <b>is</b> + + <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + + <b>type</b> C_Field_Array <b>is</b> <b>array</b> (Natural <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <b>package</b> F_Array <b>is</b> <b>new</b> + <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>, C_Field_Array, <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A>); + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- subtype chars_ptr is Interfaces.C.Strings.chars_ptr;</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_65_14" HREF="terminal_interface-curses-forms__ads.htm#ref_278_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_65_28" HREF="terminal_interface-curses-forms__ads.htm#ref_278_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>; + <span class="symbol"><A NAME="ref_66_33" HREF="terminal_interface-curses-forms__ads.htm#ref_279_28">Name</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_68_16">Form_Request_Name</A></span> (<span class="symbol"><A NAME="ref_68_35" HREF="terminal_interface-curses-forms__adb.htm#ref_68_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Form_Request_Name, "form_request_name"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_68_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_278_28">Key</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#ref_279_28">Name</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_278_14">Request_Name</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_74_13" HREF="terminal_interface-curses-forms__ads.htm#ref_281_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_74_27" HREF="terminal_interface-curses-forms__ads.htm#ref_281_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_76_16">Form_Request_Name</A></span> (<span class="symbol"><A NAME="ref_76_35" HREF="terminal_interface-curses-forms__adb.htm#ref_76_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Form_Request_Name, "form_request_name"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_76_16">Form_Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_281_28">Key</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_281_14">Request_Name</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_field_new.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_92_13" HREF="terminal_interface-curses-forms__ads.htm#ref_295_13">Create</A></span> (<span class="symbol"><A NAME="ref_92_21" HREF="terminal_interface-curses-forms__ads.htm#ref_295_21">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_93_21" HREF="terminal_interface-curses-forms__ads.htm#ref_296_21">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_94_21" HREF="terminal_interface-curses-forms__ads.htm#ref_297_21">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_95_21" HREF="terminal_interface-curses-forms__ads.htm#ref_298_21">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_96_21" HREF="terminal_interface-curses-forms__ads.htm#ref_299_21">Off_Screen</A></span> : Natural := 0; + <span class="symbol"><A NAME="ref_97_21" HREF="terminal_interface-curses-forms__ads.htm#ref_300_21">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_100_16">Newfield</A></span> (<span class="symbol"><A NAME="ref_100_26" HREF="terminal_interface-curses-forms__adb.htm#ref_100_16">H</A></span>, <span class="symbol"><A NAME="ref_100_29" HREF="terminal_interface-curses-forms__adb.htm#ref_100_16">W</A></span>, <span class="symbol"><A NAME="ref_100_32" HREF="terminal_interface-curses-forms__adb.htm#ref_100_16">T</A></span>, <span class="symbol"><A NAME="ref_100_35" HREF="terminal_interface-curses-forms__adb.htm#ref_100_16">L</A></span>, <span class="symbol"><A NAME="ref_100_38" HREF="terminal_interface-curses-forms__adb.htm#ref_100_16">O</A></span>, <span class="symbol"><A NAME="ref_100_41" HREF="terminal_interface-curses-forms__adb.htm#ref_100_16">M</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <b>pragma</b> Import (C, Newfield, "new_field"); + <span class="symbol"><A NAME="ref_102_7">Fld</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_100_16">Newfield</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_295_21">Height</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_296_21">Width</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_297_21">Top</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_298_21">Left</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_299_21">Off_Screen</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_300_21">More_Buffers</A>)); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_102_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_102_7">Fld</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_295_13">Create</A>; +<span class="comment"><EM>-- |</EM></span> +<span class="comment"><EM>-- |</EM></span> +<span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_115_14" HREF="terminal_interface-curses-forms__ads.htm#ref_317_14">Delete</A></span> (<span class="symbol"><A NAME="ref_115_22" HREF="terminal_interface-curses-forms__ads.htm#ref_317_22">Fld</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_117_16">Free_Field</A></span> (<span class="symbol"><A NAME="ref_117_28" HREF="terminal_interface-curses-forms__adb.htm#ref_117_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Free_Field, "free_field"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_117_16">Free_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_317_22">Fld</A>)); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_317_22">Fld</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_317_14">Delete</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_127_13" HREF="terminal_interface-curses-forms__ads.htm#ref_323_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_127_24" HREF="terminal_interface-curses-forms__ads.htm#ref_323_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_128_24" HREF="terminal_interface-curses-forms__ads.htm#ref_324_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_129_24" HREF="terminal_interface-curses-forms__ads.htm#ref_325_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_131_16">Dup_Field</A></span> (<span class="symbol"><A NAME="ref_131_27" HREF="terminal_interface-curses-forms__adb.htm#ref_131_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_132_27" HREF="terminal_interface-curses-forms__adb.htm#ref_131_16">Top</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_133_27" HREF="terminal_interface-curses-forms__adb.htm#ref_131_16">Left</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <b>pragma</b> Import (C, Dup_Field, "dup_field"); + + <span class="symbol"><A NAME="ref_136_7">F</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_131_16">Dup_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_323_24">Fld</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_324_24">Top</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_325_24">Left</A>)); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_136_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_136_7">F</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_323_13">Duplicate</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_148_13" HREF="terminal_interface-curses-forms__ads.htm#ref_330_13">Link</A></span> (<span class="symbol"><A NAME="ref_148_19" HREF="terminal_interface-curses-forms__ads.htm#ref_330_19">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_149_19" HREF="terminal_interface-curses-forms__ads.htm#ref_331_19">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_150_19" HREF="terminal_interface-curses-forms__ads.htm#ref_332_19">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_152_16">Lnk_Field</A></span> (<span class="symbol"><A NAME="ref_152_27" HREF="terminal_interface-curses-forms__adb.htm#ref_152_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_153_27" HREF="terminal_interface-curses-forms__adb.htm#ref_152_16">Top</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_154_27" HREF="terminal_interface-curses-forms__adb.htm#ref_152_16">Left</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <b>pragma</b> Import (C, Lnk_Field, "link_field"); + + <span class="symbol"><A NAME="ref_157_7">F</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_152_16">Lnk_Field</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_330_19">Fld</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_331_19">Top</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_332_19">Left</A>)); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_157_7">F</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_157_7">F</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_330_13">Link</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_field_just.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_173_14" HREF="terminal_interface-curses-forms__ads.htm#ref_341_14">Set_Justification</A></span> (<span class="symbol"><A NAME="ref_173_33" HREF="terminal_interface-curses-forms__ads.htm#ref_341_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_174_33" HREF="terminal_interface-curses-forms__ads.htm#ref_342_33">Just</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_58_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_58_33">None</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_176_16">Set_Field_Just</A></span> (<span class="symbol"><A NAME="ref_176_32" HREF="terminal_interface-curses-forms__adb.htm#ref_176_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_177_32" HREF="terminal_interface-curses-forms__adb.htm#ref_176_16">Just</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Just, "set_field_just"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_176_16">Set_Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_341_33">Fld</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_58_9">Field_Justification</A>'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_342_33">Just</A>)))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_341_14">Set_Justification</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_187_13" HREF="terminal_interface-curses-forms__ads.htm#ref_347_13">Get_Justification</A></span> (<span class="symbol"><A NAME="ref_187_32" HREF="terminal_interface-curses-forms__ads.htm#ref_347_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_58_9">Field_Justification</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_189_16">Field_Just</A></span> (<span class="symbol"><A NAME="ref_189_28" HREF="terminal_interface-curses-forms__adb.htm#ref_189_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Field_Just, "field_just"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_58_9">Field_Justification</A>'Val (<A HREF="terminal_interface-curses-forms__adb.htm#ref_189_16">Field_Just</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_347_32">Fld</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_347_13">Get_Justification</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_field_buffer.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_201_14" HREF="terminal_interface-curses-forms__ads.htm#ref_356_14">Set_Buffer</A></span> + (<span class="symbol"><A NAME="ref_202_7" HREF="terminal_interface-curses-forms__ads.htm#ref_357_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_203_7" HREF="terminal_interface-curses-forms__ads.htm#ref_358_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First; + <span class="symbol"><A NAME="ref_204_7" HREF="terminal_interface-curses-forms__ads.htm#ref_359_7">Str</A></span> : String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_206_16">Set_Fld_Buffer</A></span> (<span class="symbol"><A NAME="ref_206_32" HREF="terminal_interface-curses-forms__adb.htm#ref_206_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_207_34" HREF="terminal_interface-curses-forms__adb.htm#ref_206_16">Bufnum</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_208_34" HREF="terminal_interface-curses-forms__adb.htm#ref_206_16">S</A></span> : char_array) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Buffer, "set_field_buffer"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_206_16">Set_Fld_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_357_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_358_7">Buffer</A>), To_C (<A HREF="terminal_interface-curses-forms__ads.htm#ref_359_7">Str</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_356_14">Set_Buffer</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_218_14" HREF="terminal_interface-curses-forms__ads.htm#ref_364_14">Get_Buffer</A></span> + (<span class="symbol"><A NAME="ref_219_7" HREF="terminal_interface-curses-forms__ads.htm#ref_365_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_220_7" HREF="terminal_interface-curses-forms__ads.htm#ref_366_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First; + <span class="symbol"><A NAME="ref_221_7" HREF="terminal_interface-curses-forms__ads.htm#ref_367_7">Str</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_223_16">Field_Buffer</A></span> (<span class="symbol"><A NAME="ref_223_30" HREF="terminal_interface-curses-forms__adb.htm#ref_223_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_224_30" HREF="terminal_interface-curses-forms__adb.htm#ref_223_16">B</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Field_Buffer, "field_buffer"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_223_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_365_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_366_7">Buffer</A>)), <A HREF="terminal_interface-curses-forms__ads.htm#ref_367_7">Str</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_364_14">Get_Buffer</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_230_13" HREF="terminal_interface-curses-forms__ads.htm#ref_370_13">Get_Buffer</A></span> + (<span class="symbol"><A NAME="ref_231_7" HREF="terminal_interface-curses-forms__ads.htm#ref_371_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_232_7" HREF="terminal_interface-curses-forms__ads.htm#ref_372_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_234_16">Field_Buffer</A></span> (<span class="symbol"><A NAME="ref_234_30" HREF="terminal_interface-curses-forms__adb.htm#ref_234_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_235_30" HREF="terminal_interface-curses-forms__adb.htm#ref_234_16">B</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Field_Buffer, "field_buffer"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_234_16">Field_Buffer</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_371_7">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_372_7">Buffer</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_370_13">Get_Buffer</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_243_14" HREF="terminal_interface-curses-forms__ads.htm#ref_378_14">Set_Status</A></span> (<span class="symbol"><A NAME="ref_243_26" HREF="terminal_interface-curses-forms__ads.htm#ref_378_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_244_26" HREF="terminal_interface-curses-forms__ads.htm#ref_379_26">Status</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_246_16">Set_Fld_Status</A></span> (<span class="symbol"><A NAME="ref_246_32" HREF="terminal_interface-curses-forms__adb.htm#ref_246_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_247_32" HREF="terminal_interface-curses-forms__adb.htm#ref_246_16">St</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Fld_Status, "set_field_status"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_246_16">Set_Fld_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_378_26">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_379_26">Status</A>)) /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_85_7">E_Ok</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_378_14">Set_Status</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_258_13" HREF="terminal_interface-curses-forms__ads.htm#ref_384_13">Changed</A></span> (<span class="symbol"><A NAME="ref_258_22" HREF="terminal_interface-curses-forms__ads.htm#ref_384_22">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_260_16">Field_Status</A></span> (<span class="symbol"><A NAME="ref_260_30" HREF="terminal_interface-curses-forms__adb.htm#ref_260_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Field_Status, "field_status"); + + <span class="symbol"><A NAME="ref_263_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_260_16">Field_Status</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_384_22">Fld</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_263_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_384_13">Changed</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_274_14" HREF="terminal_interface-curses-forms__ads.htm#ref_389_14">Set_Maximum_Size</A></span> (<span class="symbol"><A NAME="ref_274_32" HREF="terminal_interface-curses-forms__ads.htm#ref_389_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_275_32" HREF="terminal_interface-curses-forms__ads.htm#ref_390_32">Max</A></span> : Natural := 0) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_277_16">Set_Field_Max</A></span> (<span class="symbol"><A NAME="ref_277_31" HREF="terminal_interface-curses-forms__adb.htm#ref_277_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_278_31" HREF="terminal_interface-curses-forms__adb.htm#ref_277_16">M</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Max, "set_max_field"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_277_16">Set_Field_Max</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_389_32">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_390_32">Max</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_389_14">Set_Maximum_Size</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_field_opts.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_291_14" HREF="terminal_interface-curses-forms__ads.htm#ref_399_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_291_27" HREF="terminal_interface-curses-forms__ads.htm#ref_399_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_292_27" HREF="terminal_interface-curses-forms__ads.htm#ref_400_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_294_16">Set_Field_Opts</A></span> (<span class="symbol"><A NAME="ref_294_32" HREF="terminal_interface-curses-forms__adb.htm#ref_294_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_295_32" HREF="terminal_interface-curses-forms__adb.htm#ref_294_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Opts, "set_field_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_294_16">Set_Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_399_27">Fld</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_400_27">Options</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_399_14">Set_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_304_14" HREF="terminal_interface-curses-forms__ads.htm#ref_405_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_304_30" HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_305_30" HREF="terminal_interface-curses-forms__ads.htm#ref_406_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>; + <span class="symbol"><A NAME="ref_306_30" HREF="terminal_interface-curses-forms__ads.htm#ref_407_30">On</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_308_16">Field_Opts_On</A></span> (<span class="symbol"><A NAME="ref_308_31" HREF="terminal_interface-curses-forms__adb.htm#ref_308_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_309_31" HREF="terminal_interface-curses-forms__adb.htm#ref_308_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Field_Opts_On, "field_opts_on"); + <b>function</b> <span class="symbol"><A NAME="ref_311_16">Field_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_311_32" HREF="terminal_interface-curses-forms__adb.htm#ref_311_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_312_32" HREF="terminal_interface-curses-forms__adb.htm#ref_311_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Field_Opts_Off, "field_opts_off"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_407_30">On</A> <b>then</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_308_16">Field_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Fld</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_406_30">Options</A>)); + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_311_16">Field_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_405_30">Fld</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_406_30">Options</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_405_14">Switch_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_325_14" HREF="terminal_interface-curses-forms__ads.htm#ref_413_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_325_27" HREF="terminal_interface-curses-forms__ads.htm#ref_413_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_326_27" HREF="terminal_interface-curses-forms__ads.htm#ref_414_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_328_16">Field_Opts</A></span> (<span class="symbol"><A NAME="ref_328_28" HREF="terminal_interface-curses-forms__adb.htm#ref_328_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>; + <b>pragma</b> Import (C, Field_Opts, "field_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_414_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_328_16">Field_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_413_27">Fld</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_413_14">Get_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_337_13" HREF="terminal_interface-curses-forms__ads.htm#ref_418_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_337_26" HREF="terminal_interface-curses-forms__ads.htm#ref_418_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A>) + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A> + <b>is</b> + <span class="symbol"><A NAME="ref_340_7">Fos</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_413_14">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_418_26">Fld</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_340_7">Fos</A>); + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_340_7">Fos</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_418_13">Get_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_field_attributes.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_352_14" HREF="terminal_interface-curses-forms__ads.htm#ref_428_14">Set_Foreground</A></span> + (<span class="symbol"><A NAME="ref_353_7" HREF="terminal_interface-curses-forms__ads.htm#ref_429_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_354_7" HREF="terminal_interface-curses-forms__ads.htm#ref_430_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_355_7" HREF="terminal_interface-curses-forms__ads.htm#ref_431_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_357_16">Set_Field_Fore</A></span> (<span class="symbol"><A NAME="ref_357_32" HREF="terminal_interface-curses-forms__adb.htm#ref_357_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_358_32" HREF="terminal_interface-curses-forms__adb.htm#ref_357_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Fore, "set_field_fore"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_357_16">Set_Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_429_7">Fld</A>, (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_431_7">Color</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_430_7">Fore</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_428_14">Set_Foreground</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_369_14" HREF="terminal_interface-curses-forms__ads.htm#ref_436_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_369_26" HREF="terminal_interface-curses-forms__ads.htm#ref_436_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_370_26" HREF="terminal_interface-curses-forms__ads.htm#ref_437_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_372_16">Field_Fore</A></span> (<span class="symbol"><A NAME="ref_372_28" HREF="terminal_interface-curses-forms__adb.htm#ref_372_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Field_Fore, "field_fore"); + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_437_26">Fore</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_372_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_436_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_436_14">Foreground</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_378_14" HREF="terminal_interface-curses-forms__ads.htm#ref_441_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_379_26" HREF="terminal_interface-curses-forms__ads.htm#ref_442_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_380_26" HREF="terminal_interface-curses-forms__ads.htm#ref_443_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_382_16">Field_Fore</A></span> (<span class="symbol"><A NAME="ref_382_28" HREF="terminal_interface-curses-forms__adb.htm#ref_382_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Field_Fore, "field_fore"); + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_442_26">Fore</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_382_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_443_26">Color</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_382_16">Field_Fore</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_441_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_441_14">Foreground</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_391_14" HREF="terminal_interface-curses-forms__ads.htm#ref_448_14">Set_Background</A></span> + (<span class="symbol"><A NAME="ref_392_7" HREF="terminal_interface-curses-forms__ads.htm#ref_449_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_393_7" HREF="terminal_interface-curses-forms__ads.htm#ref_450_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_394_7" HREF="terminal_interface-curses-forms__ads.htm#ref_451_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_396_16">Set_Field_Back</A></span> (<span class="symbol"><A NAME="ref_396_32" HREF="terminal_interface-curses-forms__adb.htm#ref_396_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_397_32" HREF="terminal_interface-curses-forms__adb.htm#ref_396_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Back, "set_field_back"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_396_16">Set_Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_449_7">Fld</A>, (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_451_7">Color</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_450_7">Back</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_448_14">Set_Background</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_408_14" HREF="terminal_interface-curses-forms__ads.htm#ref_456_14">Background</A></span> (<span class="symbol"><A NAME="ref_408_26" HREF="terminal_interface-curses-forms__ads.htm#ref_456_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_409_26" HREF="terminal_interface-curses-forms__ads.htm#ref_457_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_411_16">Field_Back</A></span> (<span class="symbol"><A NAME="ref_411_28" HREF="terminal_interface-curses-forms__adb.htm#ref_411_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Field_Back, "field_back"); + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_457_26">Back</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_411_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_456_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_456_14">Background</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_417_14" HREF="terminal_interface-curses-forms__ads.htm#ref_461_14">Background</A></span> (<span class="symbol"><A NAME="ref_417_26" HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_418_26" HREF="terminal_interface-curses-forms__ads.htm#ref_462_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_419_26" HREF="terminal_interface-curses-forms__ads.htm#ref_463_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_421_16">Field_Back</A></span> (<span class="symbol"><A NAME="ref_421_28" HREF="terminal_interface-curses-forms__adb.htm#ref_421_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Field_Back, "field_back"); + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_462_26">Back</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_421_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_463_26">Color</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_421_16">Field_Back</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_461_26">Fld</A>).<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_461_14">Background</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_430_14" HREF="terminal_interface-curses-forms__ads.htm#ref_468_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_430_33" HREF="terminal_interface-curses-forms__ads.htm#ref_468_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_431_33" HREF="terminal_interface-curses-forms__ads.htm#ref_469_33">Pad</A></span> : Character := Space) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_433_16">Set_Field_Pad</A></span> (<span class="symbol"><A NAME="ref_433_31" HREF="terminal_interface-curses-forms__adb.htm#ref_433_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_434_31" HREF="terminal_interface-curses-forms__adb.htm#ref_433_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Pad, "set_field_pad"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_433_16">Set_Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_468_33">Fld</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_469_33">Pad</A>)))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_468_14">Set_Pad_Character</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_444_14" HREF="terminal_interface-curses-forms__ads.htm#ref_474_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_444_29" HREF="terminal_interface-curses-forms__ads.htm#ref_474_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_445_29" HREF="terminal_interface-curses-forms__ads.htm#ref_475_29">Pad</A></span> : <b>out</b> Character) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_447_16">Field_Pad</A></span> (<span class="symbol"><A NAME="ref_447_27" HREF="terminal_interface-curses-forms__adb.htm#ref_447_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Field_Pad, "field_pad"); + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_475_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-forms__adb.htm#ref_447_16">Field_Pad</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_474_29">Fld</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_474_14">Pad_Character</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_field_info.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_459_14" HREF="terminal_interface-curses-forms__ads.htm#ref_484_14">Info</A></span> (<span class="symbol"><A NAME="ref_459_20" HREF="terminal_interface-curses-forms__ads.htm#ref_484_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_460_20" HREF="terminal_interface-curses-forms__ads.htm#ref_485_20">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_461_20" HREF="terminal_interface-curses-forms__ads.htm#ref_486_20">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_462_20" HREF="terminal_interface-curses-forms__ads.htm#ref_487_20">First_Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_463_20" HREF="terminal_interface-curses-forms__ads.htm#ref_488_20">First_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_464_20" HREF="terminal_interface-curses-forms__ads.htm#ref_489_20">Off_Screen</A></span> : <b>out</b> Natural; + <span class="symbol"><A NAME="ref_465_20" HREF="terminal_interface-curses-forms__ads.htm#ref_490_20">Additional_Buffers</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_467_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_468_16">Fld_Info</A></span> (<span class="symbol"><A NAME="ref_468_26" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_469_26" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">L</A></span>, <span class="symbol"><A NAME="ref_469_29" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">C</A></span>, <span class="symbol"><A NAME="ref_469_32" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Fr</A></span>, <span class="symbol"><A NAME="ref_469_36" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Fc</A></span>, <span class="symbol"><A NAME="ref_469_40" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Os</A></span>, <span class="symbol"><A NAME="ref_469_44" HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Ab</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_467_12">C_Int_Access</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Fld_Info, "field_info"); + + <span class="symbol"><A NAME="ref_473_7">L</A></span>, <span class="symbol"><A NAME="ref_473_10">C</A></span>, <span class="symbol"><A NAME="ref_473_13">Fr</A></span>, <span class="symbol"><A NAME="ref_473_17">Fc</A></span>, <span class="symbol"><A NAME="ref_473_21">Os</A></span>, <span class="symbol"><A NAME="ref_473_25">Ab</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_468_16">Fld_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_484_20">Fld</A>, + <A HREF="terminal_interface-curses-forms__adb.htm#ref_473_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_473_10">C</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms__adb.htm#ref_473_13">Fr</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_473_17">Fc</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms__adb.htm#ref_473_21">Os</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_473_25">Ab</A>'<b>Access</b>)); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_485_20">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_473_7">L</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_486_20">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_473_10">C</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_487_20">First_Row</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_473_13">Fr</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_488_20">First_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_473_17">Fc</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_489_20">Off_Screen</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_473_21">Os</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_490_20">Additional_Buffers</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_473_25">Ab</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_484_14">Info</A>; +<span class="comment"><EM>-- |</EM></span> +<span class="comment"><EM>-- |</EM></span> +<span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_489_14" HREF="terminal_interface-curses-forms__ads.htm#ref_495_14">Dynamic_Info</A></span> (<span class="symbol"><A NAME="ref_489_28" HREF="terminal_interface-curses-forms__ads.htm#ref_495_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_490_28" HREF="terminal_interface-curses-forms__ads.htm#ref_496_28">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_491_28" HREF="terminal_interface-curses-forms__ads.htm#ref_497_28">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_492_28" HREF="terminal_interface-curses-forms__ads.htm#ref_498_28">Max</A></span> : <b>out</b> Natural) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_494_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_495_16">Dyn_Info</A></span> (<span class="symbol"><A NAME="ref_495_26" HREF="terminal_interface-curses-forms__adb.htm#ref_495_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; <span class="symbol"><A NAME="ref_495_39" HREF="terminal_interface-curses-forms__adb.htm#ref_495_16">L</A></span>, <span class="symbol"><A NAME="ref_495_42" HREF="terminal_interface-curses-forms__adb.htm#ref_495_16">C</A></span>, <span class="symbol"><A NAME="ref_495_45" HREF="terminal_interface-curses-forms__adb.htm#ref_495_16">M</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_494_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Dyn_Info, "dynamic_field_info"); + + <span class="symbol"><A NAME="ref_498_7">L</A></span>, <span class="symbol"><A NAME="ref_498_10">C</A></span>, <span class="symbol"><A NAME="ref_498_13">M</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_495_16">Dyn_Info</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_495_28">Fld</A>, + <A HREF="terminal_interface-curses-forms__adb.htm#ref_498_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_498_10">C</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-forms__adb.htm#ref_498_13">M</A>'<b>Access</b>)); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_496_28">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_498_7">L</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_497_28">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_498_10">C</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_498_28">Max</A> := Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_498_13">M</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_495_14">Dynamic_Info</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_win.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_514_14" HREF="terminal_interface-curses-forms__ads.htm#ref_507_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_514_26" HREF="terminal_interface-curses-forms__ads.htm#ref_507_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_515_26" HREF="terminal_interface-curses-forms__ads.htm#ref_508_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_517_16">Set_Form_Win</A></span> (<span class="symbol"><A NAME="ref_517_30" HREF="terminal_interface-curses-forms__adb.htm#ref_517_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_518_30" HREF="terminal_interface-curses-forms__adb.htm#ref_517_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Form_Win, "set_form_win"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_517_16">Set_Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_507_26">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_508_26">Win</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_507_14">Set_Window</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_527_13" HREF="terminal_interface-curses-forms__ads.htm#ref_513_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_527_25" HREF="terminal_interface-curses-forms__ads.htm#ref_513_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_529_16">Form_Win</A></span> (<span class="symbol"><A NAME="ref_529_26" HREF="terminal_interface-curses-forms__adb.htm#ref_529_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Form_Win, "form_win"); + + <span class="symbol"><A NAME="ref_532_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_529_16">Form_Win</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_513_25">Frm</A>); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_532_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_513_13">Get_Window</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_539_14" HREF="terminal_interface-curses-forms__ads.htm#ref_518_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_539_30" HREF="terminal_interface-curses-forms__ads.htm#ref_518_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_540_30" HREF="terminal_interface-curses-forms__ads.htm#ref_519_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_542_16">Set_Form_Sub</A></span> (<span class="symbol"><A NAME="ref_542_30" HREF="terminal_interface-curses-forms__adb.htm#ref_542_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_543_30" HREF="terminal_interface-curses-forms__adb.htm#ref_542_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Form_Sub, "set_form_sub"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_542_16">Set_Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_518_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_519_30">Win</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_518_14">Set_Sub_Window</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_552_13" HREF="terminal_interface-curses-forms__ads.htm#ref_524_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_552_29" HREF="terminal_interface-curses-forms__ads.htm#ref_524_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_554_16">Form_Sub</A></span> (<span class="symbol"><A NAME="ref_554_26" HREF="terminal_interface-curses-forms__adb.htm#ref_554_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Form_Sub, "form_sub"); + + <span class="symbol"><A NAME="ref_557_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_554_16">Form_Sub</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_524_29">Frm</A>); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_557_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_524_13">Get_Sub_Window</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_564_14" HREF="terminal_interface-curses-forms__ads.htm#ref_529_14">Scale</A></span> (<span class="symbol"><A NAME="ref_564_21" HREF="terminal_interface-curses-forms__ads.htm#ref_529_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_565_21" HREF="terminal_interface-curses-forms__ads.htm#ref_530_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_566_21" HREF="terminal_interface-curses-forms__ads.htm#ref_531_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_568_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_569_16">M_Scale</A></span> (<span class="symbol"><A NAME="ref_569_25" HREF="terminal_interface-curses-forms__adb.htm#ref_569_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; <span class="symbol"><A NAME="ref_569_37" HREF="terminal_interface-curses-forms__adb.htm#ref_569_16">Yp</A></span>, <span class="symbol"><A NAME="ref_569_41" HREF="terminal_interface-curses-forms__adb.htm#ref_569_16">Xp</A></span> : <A HREF="terminal_interface-curses-forms__adb.htm#ref_568_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, M_Scale, "scale_form"); + + <span class="symbol"><A NAME="ref_572_7">X</A></span>, <span class="symbol"><A NAME="ref_572_10">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_569_16">M_Scale</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_529_21">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_572_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_572_7">X</A>'<b>Access</b>)); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_530_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_572_10">Y</A>); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_531_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_572_7">X</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_529_14">Scale</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page menu_hook.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_585_14" HREF="terminal_interface-curses-forms__ads.htm#ref_543_14">Set_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_585_35" HREF="terminal_interface-curses-forms__ads.htm#ref_543_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_586_35" HREF="terminal_interface-curses-forms__ads.htm#ref_544_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_588_16">Set_Field_Init</A></span> (<span class="symbol"><A NAME="ref_588_32" HREF="terminal_interface-curses-forms__adb.htm#ref_588_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_589_32" HREF="terminal_interface-curses-forms__adb.htm#ref_588_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Init, "set_field_init"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_588_16">Set_Field_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_543_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_544_35">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_543_14">Set_Field_Init_Hook</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_598_14" HREF="terminal_interface-curses-forms__ads.htm#ref_549_14">Set_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_598_35" HREF="terminal_interface-curses-forms__ads.htm#ref_549_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_599_35" HREF="terminal_interface-curses-forms__ads.htm#ref_550_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_601_16">Set_Field_Term</A></span> (<span class="symbol"><A NAME="ref_601_32" HREF="terminal_interface-curses-forms__adb.htm#ref_601_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_602_32" HREF="terminal_interface-curses-forms__adb.htm#ref_601_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Field_Term, "set_field_term"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_601_16">Set_Field_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_549_35">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_550_35">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_549_14">Set_Field_Term_Hook</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_611_14" HREF="terminal_interface-curses-forms__ads.htm#ref_555_14">Set_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_611_34" HREF="terminal_interface-curses-forms__ads.htm#ref_555_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_612_34" HREF="terminal_interface-curses-forms__ads.htm#ref_556_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_614_16">Set_Form_Init</A></span> (<span class="symbol"><A NAME="ref_614_31" HREF="terminal_interface-curses-forms__adb.htm#ref_614_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_615_31" HREF="terminal_interface-curses-forms__adb.htm#ref_614_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Form_Init, "set_form_init"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_614_16">Set_Form_Init</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_555_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_556_34">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_555_14">Set_Form_Init_Hook</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_624_14" HREF="terminal_interface-curses-forms__ads.htm#ref_561_14">Set_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_624_34" HREF="terminal_interface-curses-forms__ads.htm#ref_561_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_625_34" HREF="terminal_interface-curses-forms__ads.htm#ref_562_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_627_16">Set_Form_Term</A></span> (<span class="symbol"><A NAME="ref_627_31" HREF="terminal_interface-curses-forms__adb.htm#ref_627_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_628_31" HREF="terminal_interface-curses-forms__adb.htm#ref_627_16">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Form_Term, "set_form_term"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_627_16">Set_Form_Term</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_561_34">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_562_34">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_561_14">Set_Form_Term_Hook</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_fields.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_641_14" HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_641_24" HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_642_24" HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_644_16">Set_Frm_Fields</A></span> (<span class="symbol"><A NAME="ref_644_32" HREF="terminal_interface-curses-forms__adb.htm#ref_644_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_645_32" HREF="terminal_interface-curses-forms__adb.htm#ref_644_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Frm_Fields, "set_form_fields"); + + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>'Last) = <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A>); + <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_644_16">Set_Frm_Fields</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_24">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_592_24">Flds</A>'First)'Address)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_659_13" HREF="terminal_interface-curses-forms__ads.htm#ref_603_13">Fields</A></span> (<span class="symbol"><A NAME="ref_659_21" HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_660_21" HREF="terminal_interface-curses-forms__ads.htm#ref_604_21">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> + <b>is</b> + <b>use</b> F_Array; + + <b>function</b> C_Fields (<span class="symbol"><A NAME="ref_664_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> Pointer; + <b>pragma</b> Import (C, C_Fields, "form_fields"); + + P : Pointer := C_Fields (<A HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Frm</A>); + <b>begin</b> + <b>if</b> P = <b>null</b> <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_604_21">Index</A> &gt; <A HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_603_21">Frm</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_604_21">Index</A>) - 1); + <b>return</b> P.<b>all</b>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_603_13">Fields</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_679_13" HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A></span> (<span class="symbol"><A NAME="ref_679_26" HREF="terminal_interface-curses-forms__ads.htm#ref_609_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> Natural + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_681_16">Count</A></span> (<span class="symbol"><A NAME="ref_681_23" HREF="terminal_interface-curses-forms__adb.htm#ref_681_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Count, "field_count"); + <b>begin</b> + <b>return</b> Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_681_16">Count</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_609_26">Frm</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_689_14" HREF="terminal_interface-curses-forms__ads.htm#ref_614_14">Move</A></span> (<span class="symbol"><A NAME="ref_689_20" HREF="terminal_interface-curses-forms__ads.htm#ref_614_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_690_20" HREF="terminal_interface-curses-forms__ads.htm#ref_615_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_691_20" HREF="terminal_interface-curses-forms__ads.htm#ref_616_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_693_16">Move</A></span> (<span class="symbol"><A NAME="ref_693_22" HREF="terminal_interface-curses-forms__adb.htm#ref_693_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; <span class="symbol"><A NAME="ref_693_35" HREF="terminal_interface-curses-forms__adb.htm#ref_693_16">L</A></span>, <span class="symbol"><A NAME="ref_693_38" HREF="terminal_interface-curses-forms__adb.htm#ref_693_16">C</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Move, "move_field"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_693_16">Move</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_614_20">Fld</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_615_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_616_20">Column</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_614_14">Move</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_new.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_706_13" HREF="terminal_interface-curses-forms__ads.htm#ref_625_13">Create</A></span> (<span class="symbol"><A NAME="ref_706_21" HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_708_16">NewForm</A></span> (<span class="symbol"><A NAME="ref_708_25" HREF="terminal_interface-curses-forms__adb.htm#ref_708_16">Fields</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <b>pragma</b> Import (C, NewForm, "new_form"); + + <span class="symbol"><A NAME="ref_711_7">M</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>'Last) = <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A>); + <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>'Last) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-forms__adb.htm#ref_711_7">M</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_708_16">NewForm</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_625_21">Fields</A>'First)'Address); + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_711_7">M</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_4">Null_Form</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_711_7">M</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_625_13">Create</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_727_14" HREF="terminal_interface-curses-forms__ads.htm#ref_636_14">Delete</A></span> (<span class="symbol"><A NAME="ref_727_22" HREF="terminal_interface-curses-forms__ads.htm#ref_636_22">Frm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_729_16">Free</A></span> (<span class="symbol"><A NAME="ref_729_22" HREF="terminal_interface-curses-forms__adb.htm#ref_729_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Free, "free_form"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_729_16">Free</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_636_22">Frm</A>)); + <A HREF="terminal_interface-curses-forms__ads.htm#ref_636_22">Frm</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_4">Null_Form</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_636_14">Delete</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_opts.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_743_14" HREF="terminal_interface-curses-forms__ads.htm#ref_646_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_743_27" HREF="terminal_interface-curses-forms__ads.htm#ref_646_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_744_27" HREF="terminal_interface-curses-forms__ads.htm#ref_647_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_746_16">Set_Form_Opts</A></span> (<span class="symbol"><A NAME="ref_746_31" HREF="terminal_interface-curses-forms__adb.htm#ref_746_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_747_31" HREF="terminal_interface-curses-forms__adb.htm#ref_746_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Form_Opts, "set_form_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_746_16">Set_Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_646_27">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_647_27">Options</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_646_14">Set_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_756_14" HREF="terminal_interface-curses-forms__ads.htm#ref_652_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_756_30" HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_757_30" HREF="terminal_interface-curses-forms__ads.htm#ref_653_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>; + <span class="symbol"><A NAME="ref_758_30" HREF="terminal_interface-curses-forms__ads.htm#ref_654_30">On</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_760_16">Form_Opts_On</A></span> (<span class="symbol"><A NAME="ref_760_30" HREF="terminal_interface-curses-forms__adb.htm#ref_760_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_761_30" HREF="terminal_interface-curses-forms__adb.htm#ref_760_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Form_Opts_On, "form_opts_on"); + <b>function</b> <span class="symbol"><A NAME="ref_763_16">Form_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_763_31" HREF="terminal_interface-curses-forms__adb.htm#ref_763_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_764_31" HREF="terminal_interface-curses-forms__adb.htm#ref_763_16">Opt</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Form_Opts_Off, "form_opts_off"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_654_30">On</A> <b>then</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_760_16">Form_Opts_On</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_653_30">Options</A>)); + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_763_16">Form_Opts_Off</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_652_30">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_653_30">Options</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_652_14">Switch_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_777_14" HREF="terminal_interface-curses-forms__ads.htm#ref_660_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_777_27" HREF="terminal_interface-curses-forms__ads.htm#ref_660_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_778_27" HREF="terminal_interface-curses-forms__ads.htm#ref_661_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_780_16">Form_Opts</A></span> (<span class="symbol"><A NAME="ref_780_27" HREF="terminal_interface-curses-forms__adb.htm#ref_780_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>; + <b>pragma</b> Import (C, Form_Opts, "form_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_661_27">Options</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_780_16">Form_Opts</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_660_27">Frm</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_660_14">Get_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_789_13" HREF="terminal_interface-curses-forms__ads.htm#ref_665_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_789_26" HREF="terminal_interface-curses-forms__ads.htm#ref_665_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A> + <b>is</b> + <span class="symbol"><A NAME="ref_791_7">Fos</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_660_14">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_665_26">Frm</A>, <A HREF="terminal_interface-curses-forms__adb.htm#ref_791_7">Fos</A>); + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_791_7">Fos</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_665_13">Get_Options</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_post.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_803_14" HREF="terminal_interface-curses-forms__ads.htm#ref_674_14">Post</A></span> (<span class="symbol"><A NAME="ref_803_20" HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_804_20" HREF="terminal_interface-curses-forms__ads.htm#ref_675_20">Post</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_806_16">M_Post</A></span> (<span class="symbol"><A NAME="ref_806_24" HREF="terminal_interface-curses-forms__adb.htm#ref_806_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, M_Post, "post_form"); + <b>function</b> <span class="symbol"><A NAME="ref_808_16">M_Unpost</A></span> (<span class="symbol"><A NAME="ref_808_26" HREF="terminal_interface-curses-forms__adb.htm#ref_808_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, M_Unpost, "unpost_form"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_675_20">Post</A> <b>then</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_806_16">M_Post</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Frm</A>)); + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_808_16">M_Unpost</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_674_20">Frm</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_674_14">Post</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_cursor.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_825_14" HREF="terminal_interface-curses-forms__ads.htm#ref_685_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_825_31" HREF="terminal_interface-curses-forms__ads.htm#ref_685_31">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_827_16">Pos_Form_Cursor</A></span> (<span class="symbol"><A NAME="ref_827_33" HREF="terminal_interface-curses-forms__adb.htm#ref_827_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Pos_Form_Cursor, "pos_form_cursor"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_827_16">Pos_Form_Cursor</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_685_31">Frm</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_685_14">Position_Cursor</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_data.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_840_13" HREF="terminal_interface-curses-forms__ads.htm#ref_694_13">Data_Ahead</A></span> (<span class="symbol"><A NAME="ref_840_25" HREF="terminal_interface-curses-forms__ads.htm#ref_694_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_842_16">Ahead</A></span> (<span class="symbol"><A NAME="ref_842_23" HREF="terminal_interface-curses-forms__adb.htm#ref_842_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Ahead, "data_ahead"); + + <span class="symbol"><A NAME="ref_845_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_842_16">Ahead</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_694_25">Frm</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_845_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_694_13">Data_Ahead</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_856_13" HREF="terminal_interface-curses-forms__ads.htm#ref_699_13">Data_Behind</A></span> (<span class="symbol"><A NAME="ref_856_26" HREF="terminal_interface-curses-forms__ads.htm#ref_699_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_858_16">Behind</A></span> (<span class="symbol"><A NAME="ref_858_24" HREF="terminal_interface-curses-forms__adb.htm#ref_858_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Behind, "data_behind"); + + <span class="symbol"><A NAME="ref_861_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_858_16">Behind</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_699_26">Frm</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_861_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_699_13">Data_Behind</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_driver.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_876_13" HREF="terminal_interface-curses-forms__ads.htm#ref_713_13">Driver</A></span> (<span class="symbol"><A NAME="ref_876_21" HREF="terminal_interface-curses-forms__ads.htm#ref_713_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_877_21" HREF="terminal_interface-curses-forms__ads.htm#ref_714_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_9">Driver_Result</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_879_16">Frm_Driver</A></span> (<span class="symbol"><A NAME="ref_879_28" HREF="terminal_interface-curses-forms__adb.htm#ref_879_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; <span class="symbol"><A NAME="ref_879_40" HREF="terminal_interface-curses-forms__adb.htm#ref_879_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Frm_Driver, "form_driver"); + + <span class="symbol"><A NAME="ref_882_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_879_16">Frm_Driver</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_713_21">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_714_21">Key</A>)); + <b>begin</b> + <b>case</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_882_7">R</A> <b>is</b> + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_77_7">E_Unknown_Command</A> =&gt; + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_709_27">Unknown_Request</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_72_7">E_Invalid_Field</A> =&gt; + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_710_27">Invalid_Field</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_73_7">E_Request_Denied</A> =&gt; + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_708_27">Request_Denied</A>; + <b>when</b> <b>others</b> =&gt; + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_882_7">R</A>); + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_27">Form_Ok</A>; + <b>end</b> <b>case</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_713_13">Driver</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_page.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_903_14" HREF="terminal_interface-curses-forms__ads.htm#ref_725_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_903_27" HREF="terminal_interface-curses-forms__ads.htm#ref_725_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_904_27" HREF="terminal_interface-curses-forms__ads.htm#ref_726_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_906_16">Set_Current_Fld</A></span> (<span class="symbol"><A NAME="ref_906_33" HREF="terminal_interface-curses-forms__adb.htm#ref_906_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; <span class="symbol"><A NAME="ref_906_45" HREF="terminal_interface-curses-forms__adb.htm#ref_906_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Current_Fld, "set_current_field"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_906_16">Set_Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_725_27">Frm</A>, <A HREF="terminal_interface-curses-forms__ads.htm#ref_726_27">Fld</A>)); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_725_14">Set_Current</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_915_13" HREF="terminal_interface-curses-forms__ads.htm#ref_731_13">Current</A></span> (<span class="symbol"><A NAME="ref_915_22" HREF="terminal_interface-curses-forms__ads.htm#ref_731_22">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_917_16">Current_Fld</A></span> (<span class="symbol"><A NAME="ref_917_29" HREF="terminal_interface-curses-forms__adb.htm#ref_917_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <b>pragma</b> Import (C, Current_Fld, "current_field"); + + <span class="symbol"><A NAME="ref_920_7">Fld</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_917_16">Current_Fld</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_731_22">Frm</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_920_7">Fld</A> = <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_920_7">Fld</A>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_731_13">Current</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_930_14" HREF="terminal_interface-curses-forms__ads.htm#ref_736_14">Set_Page</A></span> (<span class="symbol"><A NAME="ref_930_24" HREF="terminal_interface-curses-forms__ads.htm#ref_736_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_931_24" HREF="terminal_interface-curses-forms__ads.htm#ref_737_24">Page</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_933_16">Set_Frm_Page</A></span> (<span class="symbol"><A NAME="ref_933_30" HREF="terminal_interface-curses-forms__adb.htm#ref_933_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; <span class="symbol"><A NAME="ref_933_42" HREF="terminal_interface-curses-forms__adb.htm#ref_933_16">Pg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Frm_Page, "set_form_page"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_933_16">Set_Frm_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_736_24">Frm</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_737_24">Page</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_736_14">Set_Page</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_942_13" HREF="terminal_interface-curses-forms__ads.htm#ref_742_13">Page</A></span> (<span class="symbol"><A NAME="ref_942_19" HREF="terminal_interface-curses-forms__ads.htm#ref_742_19">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_944_16">Get_Page</A></span> (<span class="symbol"><A NAME="ref_944_26" HREF="terminal_interface-curses-forms__adb.htm#ref_944_16">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Get_Page, "form_page"); + + <span class="symbol"><A NAME="ref_947_7">P</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_944_16">Get_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_742_19">Frm</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_947_7">P</A> &lt; 0 <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>else</b> + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_947_7">P</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_742_13">Page</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_956_13" HREF="terminal_interface-curses-forms__ads.htm#ref_747_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_956_24" HREF="terminal_interface-curses-forms__ads.htm#ref_747_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> Positive + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_958_16">Get_Fieldindex</A></span> (<span class="symbol"><A NAME="ref_958_32" HREF="terminal_interface-curses-forms__adb.htm#ref_958_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Get_Fieldindex, "field_index"); + + <span class="symbol"><A NAME="ref_961_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_958_16">Get_Fieldindex</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_747_24">Fld</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_961_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_288_4">Form_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-forms__adb.htm#ref_961_7">Res</A>) + Positive'First); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_747_13">Get_Index</A>; + + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | man page form_new_page.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_976_14" HREF="terminal_interface-curses-forms__ads.htm#ref_759_14">Set_New_Page</A></span> (<span class="symbol"><A NAME="ref_976_28" HREF="terminal_interface-curses-forms__ads.htm#ref_759_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_977_28" HREF="terminal_interface-curses-forms__ads.htm#ref_760_28">New_Page</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_979_16">Set_Page</A></span> (<span class="symbol"><A NAME="ref_979_26" HREF="terminal_interface-curses-forms__adb.htm#ref_979_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; <span class="symbol"><A NAME="ref_979_39" HREF="terminal_interface-curses-forms__adb.htm#ref_979_16">Flg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Page, "set_new_page"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_979_16">Set_Page</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_759_28">Fld</A>, Boolean'Pos (<A HREF="terminal_interface-curses-forms__ads.htm#ref_760_28">New_Page</A>))); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_759_14">Set_New_Page</A>; + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_988_13" HREF="terminal_interface-curses-forms__ads.htm#ref_765_13">Is_New_Page</A></span> (<span class="symbol"><A NAME="ref_988_26" HREF="terminal_interface-curses-forms__ads.htm#ref_765_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_990_16">Is_New</A></span> (<span class="symbol"><A NAME="ref_990_24" HREF="terminal_interface-curses-forms__adb.htm#ref_990_16">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Is_New, "new_page"); + + <span class="symbol"><A NAME="ref_993_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-forms__adb.htm#ref_990_16">Is_New</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_765_26">Fld</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__adb.htm#ref_993_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_765_13">Is_New_Page</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1002_14" HREF="terminal_interface-curses-forms__ads.htm#ref_138_14">Free</A></span> (<span class="symbol"><A NAME="ref_1002_20" HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>; + <span class="symbol"><A NAME="ref_1003_20" HREF="terminal_interface-curses-forms__ads.htm#ref_139_20">Free_Fields</A></span> : Boolean := False) + <b>is</b> + <b>procedure</b> Release <b>is</b> <b>new</b> Ada.Unchecked_Deallocation + (Field_Array, <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_139_20">Free_Fields</A> <b>then</b> + <b>for</b> <span class="symbol"><A NAME="ref_1009_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>'First .. (<A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>'Last - 1) <b>loop</b> + <b>if</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1009_14">I</A>) /= <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> <b>then</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_317_14">Delete</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>.<b>all</b> (<A HREF="terminal_interface-curses-forms__adb.htm#ref_1009_14">I</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <b>loop</b>; + <b>end</b> <b>if</b>; + Release (<A HREF="terminal_interface-curses-forms__ads.htm#ref_138_20">FA</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_138_14">Free</A>; + + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_1020_13" HREF="terminal_interface-curses-forms__ads.htm#ref_105_13">Default_Field_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_418_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_105_13">Default_Field_Options</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1026_13" HREF="terminal_interface-curses-forms__ads.htm#ref_127_13">Default_Form_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_665_13">Get_Options</A> (<A HREF="terminal_interface-curses-forms__ads.htm#ref_56_4">Null_Form</A>); + <b>end</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_127_13">Default_Form_Options</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms__ads.htm new file mode 100644 index 0000000..ee5ce13 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-forms__ads.htm @@ -0,0 +1,800 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-forms.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-forms.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Form --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.34 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System; +<b>with</b> Ada.Characters.Latin_1; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_46_35" HREF="terminal_interface-curses-forms__adb.htm#ref_51_40">Forms</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>); + <b>pragma</b> Linker_Options ("-lform" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>); + + Space : Character <b>renames</b> Ada.Characters.Latin_1.Space; + + <b>type</b> <span class="symbol"><A NAME="ref_52_9">Field</A></span> <b>is</b> <b>private</b>; + <b>type</b> <span class="symbol"><A NAME="ref_53_9">Form</A></span> <b>is</b> <b>private</b>; + + <span class="symbol"><A NAME="ref_55_4">Null_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_56_4">Null_Form</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_58_9">Field_Justification</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_58_33">None</A></span>, + <span class="symbol"><A NAME="ref_59_33">Left</A></span>, + <span class="symbol"><A NAME="ref_60_33">Center</A></span>, + <span class="symbol"><A NAME="ref_61_33">Right</A></span>); + + <b>type</b> <span class="symbol"><A NAME="ref_63_9">Field_Option_Set</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_65_10">Visible</A></span> : Boolean; + <span class="symbol"><A NAME="ref_66_10">Active</A></span> : Boolean; + <span class="symbol"><A NAME="ref_67_10">Public</A></span> : Boolean; + <span class="symbol"><A NAME="ref_68_10">Edit</A></span> : Boolean; + <span class="symbol"><A NAME="ref_69_10">Wrap</A></span> : Boolean; + <span class="symbol"><A NAME="ref_70_10">Blank</A></span> : Boolean; + <span class="symbol"><A NAME="ref_71_10">Auto_Skip</A></span> : Boolean; + <span class="symbol"><A NAME="ref_72_10">Null_Ok</A></span> : Boolean; + <span class="symbol"><A NAME="ref_73_10">Pass_Ok</A></span> : Boolean; + <span class="symbol"><A NAME="ref_74_10">Static</A></span> : Boolean; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>); + + <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_65_10">Visible</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_279_4">O_VISIBLE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_280_4">O_VISIBLE_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_66_10">Active</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_281_4">O_ACTIVE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_282_4">O_ACTIVE_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_67_10">Public</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_283_4">O_PUBLIC_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_284_4">O_PUBLIC_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_68_10">Edit</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_285_4">O_EDIT_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_286_4">O_EDIT_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_69_10">Wrap</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_287_4">O_WRAP_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_288_4">O_WRAP_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_70_10">Blank</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_289_4">O_BLANK_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_290_4">O_BLANK_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_71_10">Auto_Skip</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_291_4">O_AUTOSKIP_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_292_4">O_AUTOSKIP_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_72_10">Null_Ok</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_293_4">O_NULLOK_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_294_4">O_NULLOK_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_73_10">Pass_Ok</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_295_4">O_PASSOK_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_296_4">O_PASSOK_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_74_10">Static</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_297_4">O_STATIC_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_298_4">O_STATIC_Last</A>; + <b>end</b> <b>record</b>; + <b>pragma</b> Warnings (Off); + <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_299_4">Field_Options_Size</A>; + <b>pragma</b> Warnings (On); + + <b>function</b> <span class="symbol"><A NAME="ref_105_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1020_13">Default_Field_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>; + <span class="comment"><EM>-- The initial defaults for the field options.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_105_13">Default_Field_Options</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_109_9">Form_Option_Set</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_111_10">NL_Overload</A></span> : Boolean; + <span class="symbol"><A NAME="ref_112_10">BS_Overload</A></span> : Boolean; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>); + + <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses-forms__ads.htm#ref_111_10">NL_Overload</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_303_4">O_NL_OVERLOAD_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_304_4">O_NL_OVERLOAD_Last</A>; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_112_10">BS_Overload</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_305_4">O_BS_OVERLOAD_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_306_4">O_BS_OVERLOAD_Last</A>; + <b>end</b> <b>record</b>; + <b>pragma</b> Warnings (Off); + <b>for</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_299_4">Field_Options_Size</A>; + <b>pragma</b> Warnings (On); + + <b>function</b> <span class="symbol"><A NAME="ref_127_13" HREF="terminal_interface-curses-forms__adb.htm#ref_1026_13">Default_Form_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>; + <span class="comment"><EM>-- The initial defaults for the form options.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_127_13">Default_Form_Options</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_131_9">Buffer_Number</A></span> <b>is</b> <b>new</b> Natural; + + <b>type</b> Field_Array <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <b>pragma</b> Convention (C, Field_Array); + + <b>type</b> <span class="symbol"><A NAME="ref_136_9">Field_Array_Access</A></span> <b>is</b> <b>access</b> Field_Array; + + <b>procedure</b> <span class="symbol"><A NAME="ref_138_14" HREF="terminal_interface-curses-forms__adb.htm#ref_1002_14">Free</A></span> (<span class="symbol"><A NAME="ref_138_20" HREF="terminal_interface-curses-forms__adb.htm#ref_1002_20">FA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>; + <span class="symbol"><A NAME="ref_139_20" HREF="terminal_interface-curses-forms__adb.htm#ref_1003_20">Free_Fields</A></span> : Boolean := False); + <span class="comment"><EM>-- Release the memory for an allocated field array</EM></span> + <span class="comment"><EM>-- If Free_Fields is True, call Delete() for all the fields in</EM></span> + <span class="comment"><EM>-- the array.</EM></span> + + <b>subtype</b> <span class="symbol"><A NAME="ref_144_12">Form_Request_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A> <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 1) .. (<A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 57); + + <span class="comment"><EM>-- The prefix F_ stands for "Form Request"</EM></span> + <span class="symbol"><A NAME="ref_147_4">F_Next_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 1; + <span class="symbol"><A NAME="ref_148_4">F_Previous_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 2; + <span class="symbol"><A NAME="ref_149_4">F_First_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 3; + <span class="symbol"><A NAME="ref_150_4">F_Last_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 4; + + <span class="symbol"><A NAME="ref_152_4">F_Next_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 5; + <span class="symbol"><A NAME="ref_153_4">F_Previous_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 6; + <span class="symbol"><A NAME="ref_154_4">F_First_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 7; + <span class="symbol"><A NAME="ref_155_4">F_Last_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 8; + <span class="symbol"><A NAME="ref_156_4">F_Sorted_Next_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 9; + <span class="symbol"><A NAME="ref_157_4">F_Sorted_Previous_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 10; + <span class="symbol"><A NAME="ref_158_4">F_Sorted_First_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 11; + <span class="symbol"><A NAME="ref_159_4">F_Sorted_Last_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 12; + <span class="symbol"><A NAME="ref_160_4">F_Left_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 13; + <span class="symbol"><A NAME="ref_161_4">F_Right_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 14; + <span class="symbol"><A NAME="ref_162_4">F_Up_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 15; + <span class="symbol"><A NAME="ref_163_4">F_Down_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 16; + + <span class="symbol"><A NAME="ref_165_4">F_Next_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 17; + <span class="symbol"><A NAME="ref_166_4">F_Previous_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 18; + <span class="symbol"><A NAME="ref_167_4">F_Next_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 19; + <span class="symbol"><A NAME="ref_168_4">F_Previous_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 20; + <span class="symbol"><A NAME="ref_169_4">F_Next_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 21; + <span class="symbol"><A NAME="ref_170_4">F_Previous_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 22; + <span class="symbol"><A NAME="ref_171_4">F_Begin_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 23; + <span class="symbol"><A NAME="ref_172_4">F_End_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 24; + <span class="symbol"><A NAME="ref_173_4">F_Begin_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 25; + <span class="symbol"><A NAME="ref_174_4">F_End_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 26; + <span class="symbol"><A NAME="ref_175_4">F_Left_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 27; + <span class="symbol"><A NAME="ref_176_4">F_Right_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 28; + <span class="symbol"><A NAME="ref_177_4">F_Up_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 29; + <span class="symbol"><A NAME="ref_178_4">F_Down_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 30; + + <span class="symbol"><A NAME="ref_180_4">F_New_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 31; + <span class="symbol"><A NAME="ref_181_4">F_Insert_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 32; + <span class="symbol"><A NAME="ref_182_4">F_Insert_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 33; + <span class="symbol"><A NAME="ref_183_4">F_Delete_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 34; + <span class="symbol"><A NAME="ref_184_4">F_Delete_Previous</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 35; + <span class="symbol"><A NAME="ref_185_4">F_Delete_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 36; + <span class="symbol"><A NAME="ref_186_4">F_Delete_Word</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 37; + <span class="symbol"><A NAME="ref_187_4">F_Clear_EOL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 38; + <span class="symbol"><A NAME="ref_188_4">F_Clear_EOF</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 39; + <span class="symbol"><A NAME="ref_189_4">F_Clear_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 40; + <span class="symbol"><A NAME="ref_190_4">F_Overlay_Mode</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 41; + <span class="symbol"><A NAME="ref_191_4">F_Insert_Mode</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 42; + + <span class="comment"><EM>-- Vertical Scrolling</EM></span> + <span class="symbol"><A NAME="ref_194_4">F_ScrollForward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 43; + <span class="symbol"><A NAME="ref_195_4">F_ScrollBackward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 44; + <span class="symbol"><A NAME="ref_196_4">F_ScrollForward_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 45; + <span class="symbol"><A NAME="ref_197_4">F_ScrollBackward_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 46; + <span class="symbol"><A NAME="ref_198_4">F_ScrollForward_HalfPage</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 47; + <span class="symbol"><A NAME="ref_199_4">F_ScrollBackward_HalfPage</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 48; + + <span class="comment"><EM>-- Horizontal Scrolling</EM></span> + <span class="symbol"><A NAME="ref_202_4">F_HScrollForward_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 49; + <span class="symbol"><A NAME="ref_203_4">F_HScrollBackward_Char</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 50; + <span class="symbol"><A NAME="ref_204_4">F_HScrollForward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 51; + <span class="symbol"><A NAME="ref_205_4">F_HScrollBackward_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 52; + <span class="symbol"><A NAME="ref_206_4">F_HScrollForward_HalfLine</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 53; + <span class="symbol"><A NAME="ref_207_4">F_HScrollBackward_HalfLine</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 54; + + <span class="symbol"><A NAME="ref_209_4">F_Validate_Field</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 55; + <span class="symbol"><A NAME="ref_210_4">F_Next_Choice</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 56; + <span class="symbol"><A NAME="ref_211_4">F_Previous_Choice</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 57; + + <span class="comment"><EM>-- For those who like the old 'C' style request names</EM></span> + REQ_NEXT_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_147_4">F_Next_Page</A>; + REQ_PREV_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_148_4">F_Previous_Page</A>; + REQ_FIRST_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_149_4">F_First_Page</A>; + REQ_LAST_PAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_150_4">F_Last_Page</A>; + + REQ_NEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_152_4">F_Next_Field</A>; + REQ_PREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_153_4">F_Previous_Field</A>; + REQ_FIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_154_4">F_First_Field</A>; + REQ_LAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_155_4">F_Last_Field</A>; + REQ_SNEXT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_156_4">F_Sorted_Next_Field</A>; + REQ_SPREV_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_157_4">F_Sorted_Previous_Field</A>; + REQ_SFIRST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_158_4">F_Sorted_First_Field</A>; + REQ_SLAST_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_159_4">F_Sorted_Last_Field</A>; + REQ_LEFT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_160_4">F_Left_Field</A>; + REQ_RIGHT_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_161_4">F_Right_Field</A>; + REQ_UP_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_162_4">F_Up_Field</A>; + REQ_DOWN_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_163_4">F_Down_Field</A>; + + REQ_NEXT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_165_4">F_Next_Char</A>; + REQ_PREV_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_166_4">F_Previous_Char</A>; + REQ_NEXT_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_167_4">F_Next_Line</A>; + REQ_PREV_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_168_4">F_Previous_Line</A>; + REQ_NEXT_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_169_4">F_Next_Word</A>; + REQ_PREV_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_170_4">F_Previous_Word</A>; + REQ_BEG_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_171_4">F_Begin_Field</A>; + REQ_END_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_172_4">F_End_Field</A>; + REQ_BEG_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_173_4">F_Begin_Line</A>; + REQ_END_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_174_4">F_End_Line</A>; + REQ_LEFT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_175_4">F_Left_Char</A>; + REQ_RIGHT_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_176_4">F_Right_Char</A>; + REQ_UP_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_177_4">F_Up_Char</A>; + REQ_DOWN_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_178_4">F_Down_Char</A>; + + REQ_NEW_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_180_4">F_New_Line</A>; + REQ_INS_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_181_4">F_Insert_Char</A>; + REQ_INS_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_182_4">F_Insert_Line</A>; + REQ_DEL_CHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_183_4">F_Delete_Char</A>; + REQ_DEL_PREV : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_184_4">F_Delete_Previous</A>; + REQ_DEL_LINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_185_4">F_Delete_Line</A>; + REQ_DEL_WORD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_186_4">F_Delete_Word</A>; + REQ_CLR_EOL : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_187_4">F_Clear_EOL</A>; + REQ_CLR_EOF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_188_4">F_Clear_EOF</A>; + REQ_CLR_FIELD : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_189_4">F_Clear_Field</A>; + REQ_OVL_MODE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_190_4">F_Overlay_Mode</A>; + REQ_INS_MODE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_191_4">F_Insert_Mode</A>; + + REQ_SCR_FLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_194_4">F_ScrollForward_Line</A>; + REQ_SCR_BLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_195_4">F_ScrollBackward_Line</A>; + REQ_SCR_FPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_196_4">F_ScrollForward_Page</A>; + REQ_SCR_BPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_197_4">F_ScrollBackward_Page</A>; + REQ_SCR_FHPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_198_4">F_ScrollForward_HalfPage</A>; + REQ_SCR_BHPAGE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_199_4">F_ScrollBackward_HalfPage</A>; + + REQ_SCR_FCHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_202_4">F_HScrollForward_Char</A>; + REQ_SCR_BCHAR : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_203_4">F_HScrollBackward_Char</A>; + REQ_SCR_HFLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_204_4">F_HScrollForward_Line</A>; + REQ_SCR_HBLINE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_205_4">F_HScrollBackward_Line</A>; + REQ_SCR_HFHALF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_206_4">F_HScrollForward_HalfLine</A>; + REQ_SCR_HBHALF : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_207_4">F_HScrollBackward_HalfLine</A>; + + REQ_VALIDATION : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_209_4">F_Validate_Field</A>; + REQ_NEXT_CHOICE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_210_4">F_Next_Choice</A>; + REQ_PREV_CHOICE : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_211_4">F_Previous_Choice</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_278_14" HREF="terminal_interface-curses-forms__adb.htm#ref_65_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_278_28" HREF="terminal_interface-curses-forms__adb.htm#ref_65_28">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>; + <span class="symbol"><A NAME="ref_279_28" HREF="terminal_interface-curses-forms__adb.htm#ref_66_33">Name</A></span> : <b>out</b> String); + + <b>function</b> <span class="symbol"><A NAME="ref_281_14" HREF="terminal_interface-curses-forms__adb.htm#ref_74_13">Request_Name</A></span> (<span class="symbol"><A NAME="ref_281_28" HREF="terminal_interface-curses-forms__adb.htm#ref_74_27">Key</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_144_12">Form_Request_Code</A>) <b>return</b> String; + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Request_Name); + + <span class="comment"><EM>------------------</EM></span> + <span class="comment"><EM>-- Exceptions --</EM></span> + <span class="comment"><EM>------------------</EM></span> + <span class="symbol"><A NAME="ref_288_4">Form_Exception</A></span> : <b>exception</b>; + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_new.3x.html">form_field_new.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_295_13" HREF="terminal_interface-curses-forms__adb.htm#ref_92_13">Create</A></span> (<span class="symbol"><A NAME="ref_295_21" HREF="terminal_interface-curses-forms__adb.htm#ref_92_21">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_296_21" HREF="terminal_interface-curses-forms__adb.htm#ref_93_21">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_297_21" HREF="terminal_interface-curses-forms__adb.htm#ref_94_21">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_298_21" HREF="terminal_interface-curses-forms__adb.htm#ref_95_21">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_299_21" HREF="terminal_interface-curses-forms__adb.htm#ref_96_21">Off_Screen</A></span> : Natural := 0; + <span class="symbol"><A NAME="ref_300_21" HREF="terminal_interface-curses-forms__adb.htm#ref_97_21">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></span> + <span class="comment"><EM>-- An overloaded Create is defined later. Pragma Inline appears there.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>function</b> New_Field (<span class="symbol"><A NAME="ref_306_24">Height</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_307_24">Width</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_308_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_309_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_310_24">Off_Screen</A></span> : Natural := 0; + <span class="symbol"><A NAME="ref_311_24">More_Buffers</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_295_13">Create</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">new_field()</A></EM></span> + <b>pragma</b> Inline (New_Field); + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_317_14" HREF="terminal_interface-curses-forms__adb.htm#ref_115_14">Delete</A></span> (<span class="symbol"><A NAME="ref_317_22" HREF="terminal_interface-curses-forms__adb.htm#ref_115_22">Fld</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">free_field()</A></EM></span> + <span class="comment"><EM>-- Reset Fld to Null_Field</EM></span> + <span class="comment"><EM>-- An overloaded Delete is defined later. Pragma Inline appears there.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_323_13" HREF="terminal_interface-curses-forms__adb.htm#ref_127_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_323_24" HREF="terminal_interface-curses-forms__adb.htm#ref_127_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_324_24" HREF="terminal_interface-curses-forms__adb.htm#ref_128_24">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_325_24" HREF="terminal_interface-curses-forms__adb.htm#ref_129_24">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">dup_field()</A></EM></span> + <b>pragma</b> Inline (Duplicate); + + <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_330_13" HREF="terminal_interface-curses-forms__adb.htm#ref_148_13">Link</A></span> (<span class="symbol"><A NAME="ref_330_19" HREF="terminal_interface-curses-forms__adb.htm#ref_148_19">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_331_19" HREF="terminal_interface-curses-forms__adb.htm#ref_149_19">Top</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_332_19" HREF="terminal_interface-curses-forms__adb.htm#ref_150_19">Left</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_new.3x.html">link_field()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_330_13">Link</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_just.3x.html">form_field_just.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_341_14" HREF="terminal_interface-curses-forms__adb.htm#ref_173_14">Set_Justification</A></span> (<span class="symbol"><A NAME="ref_341_33" HREF="terminal_interface-curses-forms__adb.htm#ref_173_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_342_33" HREF="terminal_interface-curses-forms__adb.htm#ref_174_33">Just</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_58_9">Field_Justification</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_58_33">None</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">set_field_just()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_341_14">Set_Justification</A>); + + <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_347_13" HREF="terminal_interface-curses-forms__adb.htm#ref_187_13">Get_Justification</A></span> (<span class="symbol"><A NAME="ref_347_32" HREF="terminal_interface-curses-forms__adb.htm#ref_187_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_58_9">Field_Justification</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_just.3x.html">field_just()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_347_13">Get_Justification</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_buffer.3x.html">form_field_buffer.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_356_14" HREF="terminal_interface-curses-forms__adb.htm#ref_201_14">Set_Buffer</A></span> + (<span class="symbol"><A NAME="ref_357_7" HREF="terminal_interface-curses-forms__adb.htm#ref_202_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_358_7" HREF="terminal_interface-curses-forms__adb.htm#ref_203_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First; + <span class="symbol"><A NAME="ref_359_7" HREF="terminal_interface-curses-forms__adb.htm#ref_204_7">Str</A></span> : String); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_buffer()</A></EM></span> + <span class="comment"><EM>-- Not inlined</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_364_14" HREF="terminal_interface-curses-forms__adb.htm#ref_218_14">Get_Buffer</A></span> + (<span class="symbol"><A NAME="ref_365_7" HREF="terminal_interface-curses-forms__adb.htm#ref_219_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_366_7" HREF="terminal_interface-curses-forms__adb.htm#ref_220_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First; + <span class="symbol"><A NAME="ref_367_7" HREF="terminal_interface-curses-forms__adb.htm#ref_221_7">Str</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_370_13" HREF="terminal_interface-curses-forms__adb.htm#ref_230_13">Get_Buffer</A></span> + (<span class="symbol"><A NAME="ref_371_7" HREF="terminal_interface-curses-forms__adb.htm#ref_231_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_372_7" HREF="terminal_interface-curses-forms__adb.htm#ref_232_7">Buffer</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>'First) <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_buffer()</A></EM></span> + <span class="comment"><EM>-- Same but as function</EM></span> + <b>pragma</b> Inline (Get_Buffer); + + <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_378_14" HREF="terminal_interface-curses-forms__adb.htm#ref_243_14">Set_Status</A></span> (<span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses-forms__adb.htm#ref_243_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_379_26" HREF="terminal_interface-curses-forms__adb.htm#ref_244_26">Status</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_status()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_378_14">Set_Status</A>); + + <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_384_13" HREF="terminal_interface-curses-forms__adb.htm#ref_258_13">Changed</A></span> (<span class="symbol"><A NAME="ref_384_22" HREF="terminal_interface-curses-forms__adb.htm#ref_258_22">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">field_status()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_384_13">Changed</A>); + + <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_389_14" HREF="terminal_interface-curses-forms__adb.htm#ref_274_14">Set_Maximum_Size</A></span> (<span class="symbol"><A NAME="ref_389_32" HREF="terminal_interface-curses-forms__adb.htm#ref_274_32">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_390_32" HREF="terminal_interface-curses-forms__adb.htm#ref_275_32">Max</A></span> : Natural := 0); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_buffer.3x.html">set_field_max()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_389_14">Set_Maximum_Size</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_opts.3x.html">form_field_opts.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_399_14" HREF="terminal_interface-curses-forms__adb.htm#ref_291_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_399_27" HREF="terminal_interface-curses-forms__adb.htm#ref_291_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_400_27" HREF="terminal_interface-curses-forms__adb.htm#ref_292_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">set_field_opts()</A></EM></span> + <span class="comment"><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_405_14" HREF="terminal_interface-curses-forms__adb.htm#ref_304_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_405_30" HREF="terminal_interface-curses-forms__adb.htm#ref_304_30">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_406_30" HREF="terminal_interface-curses-forms__adb.htm#ref_305_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>; + <span class="symbol"><A NAME="ref_407_30" HREF="terminal_interface-curses-forms__adb.htm#ref_306_30">On</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts_on()</A></EM></span> + <span class="comment"><EM>-- AKA: field_opts_off()</EM></span> + <span class="comment"><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_413_14" HREF="terminal_interface-curses-forms__adb.htm#ref_325_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_413_27" HREF="terminal_interface-curses-forms__adb.htm#ref_325_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_414_27" HREF="terminal_interface-curses-forms__adb.htm#ref_326_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_16">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_418_13" HREF="terminal_interface-curses-forms__adb.htm#ref_337_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_418_26" HREF="terminal_interface-curses-forms__adb.htm#ref_337_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A>) + <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_63_9">Field_Option_Set</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_opts.3x.html">field_opts()</A></EM></span> + <span class="comment"><EM>-- An overloaded version is defined later. Pragma Inline appears there</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_attributes.3x.html">form_field_attributes.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_17">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_428_14" HREF="terminal_interface-curses-forms__adb.htm#ref_352_14">Set_Foreground</A></span> + (<span class="symbol"><A NAME="ref_429_7" HREF="terminal_interface-curses-forms__adb.htm#ref_353_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_430_7" HREF="terminal_interface-curses-forms__adb.htm#ref_354_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_431_7" HREF="terminal_interface-curses-forms__adb.htm#ref_355_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_fore()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_428_14">Set_Foreground</A>); + + <span class="comment"><EM>-- <A NAME="AFU_18">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_436_14" HREF="terminal_interface-curses-forms__adb.htm#ref_369_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_436_26" HREF="terminal_interface-curses-forms__adb.htm#ref_369_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_437_26" HREF="terminal_interface-curses-forms__adb.htm#ref_370_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_19">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_441_14" HREF="terminal_interface-curses-forms__adb.htm#ref_378_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_441_26" HREF="terminal_interface-curses-forms__adb.htm#ref_378_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_442_26" HREF="terminal_interface-curses-forms__adb.htm#ref_379_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_443_26" HREF="terminal_interface-curses-forms__adb.htm#ref_380_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_fore()</A></EM></span> + <b>pragma</b> Inline (Foreground); + + <span class="comment"><EM>-- <A NAME="AFU_20">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_448_14" HREF="terminal_interface-curses-forms__adb.htm#ref_391_14">Set_Background</A></span> + (<span class="symbol"><A NAME="ref_449_7" HREF="terminal_interface-curses-forms__adb.htm#ref_392_7">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_450_7" HREF="terminal_interface-curses-forms__adb.htm#ref_393_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_451_7" HREF="terminal_interface-curses-forms__adb.htm#ref_394_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_back()</A></EM></span> + <b>pragma</b> Inline (Set_Background); + + <span class="comment"><EM>-- <A NAME="AFU_21">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_456_14" HREF="terminal_interface-curses-forms__adb.htm#ref_408_14">Background</A></span> (<span class="symbol"><A NAME="ref_456_26" HREF="terminal_interface-curses-forms__adb.htm#ref_408_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_457_26" HREF="terminal_interface-curses-forms__adb.htm#ref_409_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_22">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_461_14" HREF="terminal_interface-curses-forms__adb.htm#ref_417_14">Background</A></span> (<span class="symbol"><A NAME="ref_461_26" HREF="terminal_interface-curses-forms__adb.htm#ref_417_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_462_26" HREF="terminal_interface-curses-forms__adb.htm#ref_418_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_463_26" HREF="terminal_interface-curses-forms__adb.htm#ref_419_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_back()</A></EM></span> + <b>pragma</b> Inline (Background); + + <span class="comment"><EM>-- <A NAME="AFU_23">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_468_14" HREF="terminal_interface-curses-forms__adb.htm#ref_430_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_468_33" HREF="terminal_interface-curses-forms__adb.htm#ref_430_33">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_469_33" HREF="terminal_interface-curses-forms__adb.htm#ref_431_33">Pad</A></span> : Character := Space); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">set_field_pad()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_468_14">Set_Pad_Character</A>); + + <span class="comment"><EM>-- <A NAME="AFU_24">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_474_14" HREF="terminal_interface-curses-forms__adb.htm#ref_444_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_474_29" HREF="terminal_interface-curses-forms__adb.htm#ref_444_29">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_475_29" HREF="terminal_interface-curses-forms__adb.htm#ref_445_29">Pad</A></span> : <b>out</b> Character); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_attributes.3x.html">field_pad()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_474_14">Pad_Character</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field_info.3x.html">form_field_info.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_25">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_484_14" HREF="terminal_interface-curses-forms__adb.htm#ref_459_14">Info</A></span> (<span class="symbol"><A NAME="ref_484_20" HREF="terminal_interface-curses-forms__adb.htm#ref_459_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_485_20" HREF="terminal_interface-curses-forms__adb.htm#ref_460_20">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_486_20" HREF="terminal_interface-curses-forms__adb.htm#ref_461_20">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_487_20" HREF="terminal_interface-curses-forms__adb.htm#ref_462_20">First_Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_488_20" HREF="terminal_interface-curses-forms__adb.htm#ref_463_20">First_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_489_20" HREF="terminal_interface-curses-forms__adb.htm#ref_464_20">Off_Screen</A></span> : <b>out</b> Natural; + <span class="symbol"><A NAME="ref_490_20" HREF="terminal_interface-curses-forms__adb.htm#ref_465_20">Additional_Buffers</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_131_9">Buffer_Number</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">field_info()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_484_14">Info</A>); + + <span class="comment"><EM>-- <A NAME="AFU_26">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_495_14" HREF="terminal_interface-curses-forms__adb.htm#ref_489_14">Dynamic_Info</A></span> (<span class="symbol"><A NAME="ref_495_28" HREF="terminal_interface-curses-forms__adb.htm#ref_489_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_496_28" HREF="terminal_interface-curses-forms__adb.htm#ref_490_28">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_497_28" HREF="terminal_interface-curses-forms__adb.htm#ref_491_28">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_498_28" HREF="terminal_interface-curses-forms__adb.htm#ref_492_28">Max</A></span> : <b>out</b> Natural); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field_info.3x.html">dynamic_field_info()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_495_14">Dynamic_Info</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_win.3x.html">form_win.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_27">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_507_14" HREF="terminal_interface-curses-forms__adb.htm#ref_514_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_507_26" HREF="terminal_interface-curses-forms__adb.htm#ref_514_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_508_26" HREF="terminal_interface-curses-forms__adb.htm#ref_515_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_win()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_507_14">Set_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_28">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_513_13" HREF="terminal_interface-curses-forms__adb.htm#ref_527_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_513_25" HREF="terminal_interface-curses-forms__adb.htm#ref_527_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_win()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_513_13">Get_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_29">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_518_14" HREF="terminal_interface-curses-forms__adb.htm#ref_539_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_518_30" HREF="terminal_interface-curses-forms__adb.htm#ref_539_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_519_30" HREF="terminal_interface-curses-forms__adb.htm#ref_540_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">set_form_sub()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_518_14">Set_Sub_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_30">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_524_13" HREF="terminal_interface-curses-forms__adb.htm#ref_552_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_524_29" HREF="terminal_interface-curses-forms__adb.htm#ref_552_29">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">form_sub()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_524_13">Get_Sub_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_31">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_529_14" HREF="terminal_interface-curses-forms__adb.htm#ref_564_14">Scale</A></span> (<span class="symbol"><A NAME="ref_529_21" HREF="terminal_interface-curses-forms__adb.htm#ref_564_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_530_21" HREF="terminal_interface-curses-forms__adb.htm#ref_565_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_531_21" HREF="terminal_interface-curses-forms__adb.htm#ref_566_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_win.3x.html">scale_form()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_529_14">Scale</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_hook.3x.html">form_hook.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_539_9">Form_Hook_Function</A></span> <b>is</b> <b>access</b> <b>procedure</b> (<span class="symbol"><A NAME="ref_539_49" HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>); + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>); + + <span class="comment"><EM>-- <A NAME="AFU_32">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_543_14" HREF="terminal_interface-curses-forms__adb.htm#ref_585_14">Set_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_543_35" HREF="terminal_interface-curses-forms__adb.htm#ref_585_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_544_35" HREF="terminal_interface-curses-forms__adb.htm#ref_586_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_init()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_543_14">Set_Field_Init_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_33">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_549_14" HREF="terminal_interface-curses-forms__adb.htm#ref_598_14">Set_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_549_35" HREF="terminal_interface-curses-forms__adb.htm#ref_598_35">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_550_35" HREF="terminal_interface-curses-forms__adb.htm#ref_599_35">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_field_term()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_549_14">Set_Field_Term_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_34">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_555_14" HREF="terminal_interface-curses-forms__adb.htm#ref_611_14">Set_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_555_34" HREF="terminal_interface-curses-forms__adb.htm#ref_611_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_556_34" HREF="terminal_interface-curses-forms__adb.htm#ref_612_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_init()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_555_14">Set_Form_Init_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_35">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_561_14" HREF="terminal_interface-curses-forms__adb.htm#ref_624_14">Set_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_561_34" HREF="terminal_interface-curses-forms__adb.htm#ref_624_34">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_562_34" HREF="terminal_interface-curses-forms__adb.htm#ref_625_34">Proc</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">set_form_term()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_561_14">Set_Form_Term_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_36">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_567_13">Get_Field_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_567_34" HREF="terminal_interface-curses-forms__ads.htm#ref_567_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_init()</A></EM></span> + <b>pragma</b> Import (C, Get_Field_Init_Hook, "field_init"); + + <span class="comment"><EM>-- <A NAME="AFU_37">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_572_13">Get_Field_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_572_34" HREF="terminal_interface-curses-forms__ads.htm#ref_572_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">field_term()</A></EM></span> + <b>pragma</b> Import (C, Get_Field_Term_Hook, "field_term"); + + <span class="comment"><EM>-- <A NAME="AFU_38">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_577_13">Get_Form_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_577_33" HREF="terminal_interface-curses-forms__ads.htm#ref_577_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_init()</A></EM></span> + <b>pragma</b> Import (C, Get_Form_Init_Hook, "form_init"); + + <span class="comment"><EM>-- <A NAME="AFU_39">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_582_13">Get_Form_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_582_33" HREF="terminal_interface-curses-forms__ads.htm#ref_582_13">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_539_9">Form_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_hook.3x.html">form_term()</A></EM></span> + <b>pragma</b> Import (C, Get_Form_Term_Hook, "form_term"); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_field.3x.html">form_field.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_40">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_591_14" HREF="terminal_interface-curses-forms__adb.htm#ref_641_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_591_24" HREF="terminal_interface-curses-forms__adb.htm#ref_641_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_592_24" HREF="terminal_interface-curses-forms__adb.htm#ref_642_24">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A>); + + <span class="comment"><EM>-- <A NAME="AFU_41">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_597_14">Set_Fields</A></span> (<span class="symbol"><A NAME="ref_597_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_598_26">Flds</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_591_14">Redefine</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">set_form_fields()</A></EM></span> + <span class="comment"><EM>-- pragma Inline (Set_Fields);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_42">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_603_13" HREF="terminal_interface-curses-forms__adb.htm#ref_659_13">Fields</A></span> (<span class="symbol"><A NAME="ref_603_21" HREF="terminal_interface-curses-forms__adb.htm#ref_659_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_604_21" HREF="terminal_interface-curses-forms__adb.htm#ref_660_21">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">form_fields()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_603_13">Fields</A>); + + <span class="comment"><EM>-- <A NAME="AFU_43">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_609_13" HREF="terminal_interface-curses-forms__adb.htm#ref_679_13">Field_Count</A></span> (<span class="symbol"><A NAME="ref_609_26" HREF="terminal_interface-curses-forms__adb.htm#ref_679_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> Natural; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">field_count()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_609_13">Field_Count</A>); + + <span class="comment"><EM>-- <A NAME="AFU_44">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_614_14" HREF="terminal_interface-curses-forms__adb.htm#ref_689_14">Move</A></span> (<span class="symbol"><A NAME="ref_614_20" HREF="terminal_interface-curses-forms__adb.htm#ref_689_20">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_615_20" HREF="terminal_interface-curses-forms__adb.htm#ref_690_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_616_20" HREF="terminal_interface-curses-forms__adb.htm#ref_691_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_field.3x.html">move_field()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_614_14">Move</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_new.3x.html">form_new.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_45">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_625_13" HREF="terminal_interface-curses-forms__adb.htm#ref_706_13">Create</A></span> (<span class="symbol"><A NAME="ref_625_21" HREF="terminal_interface-curses-forms__adb.htm#ref_706_21">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></span> + <b>pragma</b> Inline (Create); + + <span class="comment"><EM>-- <A NAME="AFU_46">|</A></EM></span> + <b>function</b> New_Form (<span class="symbol"><A NAME="ref_630_23">Fields</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_136_9">Field_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A> + <b>renames</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_625_13">Create</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_new.3x.html">new_form()</A></EM></span> + <span class="comment"><EM>-- pragma Inline (New_Form);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_47">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_636_14" HREF="terminal_interface-curses-forms__adb.htm#ref_727_14">Delete</A></span> (<span class="symbol"><A NAME="ref_636_22" HREF="terminal_interface-curses-forms__adb.htm#ref_727_22">Frm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_new.3x.html">free_form()</A></EM></span> + <span class="comment"><EM>-- Reset Frm to Null_Form</EM></span> + <b>pragma</b> Inline (Delete); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_opts.3x.html">form_opts.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_48">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_646_14" HREF="terminal_interface-curses-forms__adb.htm#ref_743_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_646_27" HREF="terminal_interface-curses-forms__adb.htm#ref_743_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_647_27" HREF="terminal_interface-curses-forms__adb.htm#ref_744_27">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">set_form_opts()</A></EM></span> + <b>pragma</b> Inline (Set_Options); + + <span class="comment"><EM>-- <A NAME="AFU_49">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_652_14" HREF="terminal_interface-curses-forms__adb.htm#ref_756_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_652_30" HREF="terminal_interface-curses-forms__adb.htm#ref_756_30">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_653_30" HREF="terminal_interface-curses-forms__adb.htm#ref_757_30">Options</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>; + <span class="symbol"><A NAME="ref_654_30" HREF="terminal_interface-curses-forms__adb.htm#ref_758_30">On</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts_on()</A></EM></span> + <span class="comment"><EM>-- AKA: form_opts_off()</EM></span> + <b>pragma</b> Inline (Switch_Options); + + <span class="comment"><EM>-- <A NAME="AFU_50">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_660_14" HREF="terminal_interface-curses-forms__adb.htm#ref_777_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_660_27" HREF="terminal_interface-curses-forms__adb.htm#ref_777_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_661_27" HREF="terminal_interface-curses-forms__adb.htm#ref_778_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_51">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_665_13" HREF="terminal_interface-curses-forms__adb.htm#ref_789_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_665_26" HREF="terminal_interface-curses-forms__adb.htm#ref_789_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_4">Null_Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_109_9">Form_Option_Set</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_opts.3x.html">form_opts()</A></EM></span> + <b>pragma</b> Inline (Get_Options); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_post.3x.html">form_post.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_52">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_674_14" HREF="terminal_interface-curses-forms__adb.htm#ref_803_14">Post</A></span> (<span class="symbol"><A NAME="ref_674_20" HREF="terminal_interface-curses-forms__adb.htm#ref_803_20">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_675_20" HREF="terminal_interface-curses-forms__adb.htm#ref_804_20">Post</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_post.3x.html">post_form()</A></EM></span> + <span class="comment"><EM>-- AKA: unpost_form()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_674_14">Post</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_cursor.3x.html">form_cursor.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_53">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_685_14" HREF="terminal_interface-curses-forms__adb.htm#ref_825_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_685_31" HREF="terminal_interface-curses-forms__adb.htm#ref_825_31">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_cursor.3x.html">pos_form_cursor()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_685_14">Position_Cursor</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_data.3x.html">form_data.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_54">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_694_13" HREF="terminal_interface-curses-forms__adb.htm#ref_840_13">Data_Ahead</A></span> (<span class="symbol"><A NAME="ref_694_25" HREF="terminal_interface-curses-forms__adb.htm#ref_840_25">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_ahead()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_694_13">Data_Ahead</A>); + + <span class="comment"><EM>-- <A NAME="AFU_55">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_699_13" HREF="terminal_interface-curses-forms__adb.htm#ref_856_13">Data_Behind</A></span> (<span class="symbol"><A NAME="ref_699_26" HREF="terminal_interface-curses-forms__adb.htm#ref_856_26">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_data.3x.html">data_behind()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_699_13">Data_Behind</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_driver.3x.html">form_driver.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_707_9">Driver_Result</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_707_27">Form_Ok</A></span>, + <span class="symbol"><A NAME="ref_708_27">Request_Denied</A></span>, + <span class="symbol"><A NAME="ref_709_27">Unknown_Request</A></span>, + <span class="symbol"><A NAME="ref_710_27">Invalid_Field</A></span>); + + <span class="comment"><EM>-- <A NAME="AFU_56">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_713_13" HREF="terminal_interface-curses-forms__adb.htm#ref_876_13">Driver</A></span> (<span class="symbol"><A NAME="ref_713_21" HREF="terminal_interface-curses-forms__adb.htm#ref_876_21">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_714_21" HREF="terminal_interface-curses-forms__adb.htm#ref_877_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_707_9">Driver_Result</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_driver.3x.html">form_driver()</A></EM></span> + <span class="comment"><EM>-- Driver not inlined</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_page.3x.html">form_page.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_722_9">Page_Number</A></span> <b>is</b> <b>new</b> Natural; + + <span class="comment"><EM>-- <A NAME="AFU_57">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_725_14" HREF="terminal_interface-curses-forms__adb.htm#ref_903_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_725_27" HREF="terminal_interface-curses-forms__adb.htm#ref_903_27">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_726_27" HREF="terminal_interface-curses-forms__adb.htm#ref_904_27">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_current_field()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_725_14">Set_Current</A>); + + <span class="comment"><EM>-- <A NAME="AFU_58">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_731_13" HREF="terminal_interface-curses-forms__adb.htm#ref_915_13">Current</A></span> (<span class="symbol"><A NAME="ref_731_22" HREF="terminal_interface-curses-forms__adb.htm#ref_915_22">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">current_field()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_731_13">Current</A>); + + <span class="comment"><EM>-- <A NAME="AFU_59">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_736_14" HREF="terminal_interface-curses-forms__adb.htm#ref_930_14">Set_Page</A></span> (<span class="symbol"><A NAME="ref_736_24" HREF="terminal_interface-curses-forms__adb.htm#ref_930_24">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>; + <span class="symbol"><A NAME="ref_737_24" HREF="terminal_interface-curses-forms__adb.htm#ref_931_24">Page</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A> := <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">set_form_page()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_736_14">Set_Page</A>); + + <span class="comment"><EM>-- <A NAME="AFU_60">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_742_13" HREF="terminal_interface-curses-forms__adb.htm#ref_942_13">Page</A></span> (<span class="symbol"><A NAME="ref_742_19" HREF="terminal_interface-curses-forms__adb.htm#ref_942_19">Frm</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A>) <b>return</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_722_9">Page_Number</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">form_page()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_742_13">Page</A>); + + <span class="comment"><EM>-- <A NAME="AFU_61">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_747_13" HREF="terminal_interface-curses-forms__adb.htm#ref_956_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_747_24" HREF="terminal_interface-curses-forms__adb.htm#ref_956_24">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> Positive; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_page.3x.html">field_index()</A></EM></span> + <span class="comment"><EM>-- Please note that in this binding we start the numbering of fields</EM></span> + <span class="comment"><EM>-- with 1. So this is number is one more than you get from the low</EM></span> + <span class="comment"><EM>-- level call.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_747_13">Get_Index</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_new_page.3x.html">form_new_page.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_62">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_759_14" HREF="terminal_interface-curses-forms__adb.htm#ref_976_14">Set_New_Page</A></span> (<span class="symbol"><A NAME="ref_759_28" HREF="terminal_interface-curses-forms__adb.htm#ref_976_28">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>; + <span class="symbol"><A NAME="ref_760_28" HREF="terminal_interface-curses-forms__adb.htm#ref_977_28">New_Page</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">set_new_page()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_759_14">Set_New_Page</A>); + + <span class="comment"><EM>-- <A NAME="AFU_63">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_765_13" HREF="terminal_interface-curses-forms__adb.htm#ref_988_13">Is_New_Page</A></span> (<span class="symbol"><A NAME="ref_765_26" HREF="terminal_interface-curses-forms__adb.htm#ref_988_26">Fld</A></span> : <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/form_new_page.3x.html">new_page()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-forms__ads.htm#ref_765_13">Is_New_Page</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/form_requestname.3x.html">form_requestname.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not Implemented: form_request_name, form_request_by_name</EM></span> + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>private</b> + <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address; + <b>type</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address; + + <A HREF="terminal_interface-curses-forms__ads.htm#ref_55_4">Null_Field</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_52_9">Field</A> := 0; + <A HREF="terminal_interface-curses-forms__ads.htm#ref_56_4">Null_Form</A> : <b>constant</b> <A HREF="terminal_interface-curses-forms__ads.htm#ref_53_9">Form</A> := 0; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-forms__ads.htm#ref_46_35">Forms</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm new file mode 100644 index 0000000..188efdf --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-item_user_data__adb.htm @@ -0,0 +1,90 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-menus-item_user_data.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-menus-item_user_data.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Menus.Item_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.16 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<span class="symbol"><A NAME="ref_44_46" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_47_41">Item_User_Data</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_46_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_47_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_60_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Item_Userptr</A></span> (<span class="symbol"><A NAME="ref_49_34" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_49_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_50_34" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_49_16">Addr</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Item_Userptr, "set_item_userptr"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_49_16">Set_Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_29">Itm</A>, <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_60_29">Data</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_14">Set_User_Data</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_57_13" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_70_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_57_28" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_70_28">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_59_16">Item_Userptr</A></span> (<span class="symbol"><A NAME="ref_59_30" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_59_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A>; + <b>pragma</b> Import (C, Item_Userptr, "item_userptr"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_59_16">Item_Userptr</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_70_28">Itm</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_70_13">Get_User_Data</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_65_14" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_65_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_65_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_66_29" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_66_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_66_29">Data</A> := <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_70_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_65_29">Itm</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_65_14">Get_User_Data</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_47_41">Item_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm new file mode 100644 index 0000000..3a31918 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-item_user_data__ads.htm @@ -0,0 +1,93 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-menus-item_user_data.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-menus-item_user_data.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Menus.Item_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2006,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.18 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_45_9" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_47_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>; + <b>type</b> <span class="symbol"><A NAME="ref_46_9" HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_47_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_45_9">User</A>; +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<span class="symbol"><A NAME="ref_47_41" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_44_46">Item_User_Data</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_47_41">Item_User_Data</A>); + + <span class="comment"><EM>-- The binding uses the same user pointer for menu items</EM></span> + <span class="comment"><EM>-- as the low level C implementation. So you can safely</EM></span> + <span class="comment"><EM>-- read or write the user pointer also with the C routines</EM></span> + <span class="comment"><EM>--</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/mitem_userptr.3x.html">mitem_userptr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_46_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_59_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_46_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_47_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">set_item_userptr</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_59_14">Set_User_Data</A>); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_65_14" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_65_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_65_29">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_66_29" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_66_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_70_13" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_57_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_70_28" HREF="terminal_interface-curses-menus-item_user_data__adb.htm#ref_57_28">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_46_9">User_Access</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_userptr.3x.html">item_userptr</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Get_User_Data); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<A HREF="terminal_interface-curses-menus-item_user_data__ads.htm#ref_47_41">Item_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm new file mode 100644 index 0000000..3b957c5 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-menu_user_data__adb.htm @@ -0,0 +1,91 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-menus-menu_user_data.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-menus-menu_user_data.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Menus.Menu_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.17 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<span class="symbol"><A NAME="ref_44_46" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_46_41">Menu_User_Data</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_46_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_47_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_55_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_49_16">Set_Menu_Userptr</A></span> (<span class="symbol"><A NAME="ref_49_34" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_49_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_50_34" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_49_16">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Userptr, "set_menu_userptr"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_49_16">Set_Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_29">Men</A>, <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_55_29">Data</A>)); + + <b>end</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_14">Set_User_Data</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_58_13" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_65_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_58_28" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_65_28">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_60_16">Menu_Userptr</A></span> (<span class="symbol"><A NAME="ref_60_30" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_60_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A>; + <b>pragma</b> Import (C, Menu_Userptr, "menu_userptr"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_60_16">Menu_Userptr</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_65_28">Men</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_65_13">Get_User_Data</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_66_14" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_60_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_66_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_60_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_67_29" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_61_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_61_29">Data</A> := <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_65_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_60_29">Men</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_60_14">Get_User_Data</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_46_41">Menu_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm new file mode 100644 index 0000000..e61d6b2 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus-menu_user_data__ads.htm @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-menus-menu_user_data.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-menus-menu_user_data.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Menus.Menu_User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.16 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_46_41">User</A></span> <b>is</b> <b>limited</b> <b>private</b>; + <b>type</b> <span class="symbol"><A NAME="ref_45_9" HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_46_41">User_Access</A></span> <b>is</b> <b>access</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_44_9">User</A>; +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<span class="symbol"><A NAME="ref_46_41" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_44_46">Menu_User_Data</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_46_41">Menu_User_Data</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_userptr.3x.html">menu_userptr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_54_14" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_46_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_46_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_55_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_47_29">Data</A></span> : <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">set_menu_userptr</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_54_14">Set_User_Data</A>); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_60_14" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_66_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_66_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_61_29" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_67_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_65_13" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_58_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_28" HREF="terminal_interface-curses-menus-menu_user_data__adb.htm#ref_58_28">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_45_9">User_Access</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_userptr.3x.html">menu_userptr</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Get_User_Data); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>.<A HREF="terminal_interface-curses-menus-menu_user_data__ads.htm#ref_46_41">Menu_User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus__adb.htm new file mode 100644 index 0000000..d9d2513 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus__adb.htm @@ -0,0 +1,922 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-menus.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-menus.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Menus --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.34 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Unchecked_Deallocation; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_50_40" HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A></span> <b>is</b> + + <b>type</b> C_Item_Array <b>is</b> <b>array</b> (Natural <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <b>package</b> I_Array <b>is</b> <b>new</b> + <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Pointers (Natural, <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>, C_Item_Array, <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A>); + + <b>subtype</b> <span class="symbol"><A NAME="ref_56_12">chars_ptr</A></span> <b>is</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.chars_ptr; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_59_14" HREF="terminal_interface-curses-menus__ads.htm#ref_102_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_59_28" HREF="terminal_interface-curses-menus__ads.htm#ref_102_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A>; + <span class="symbol"><A NAME="ref_60_28" HREF="terminal_interface-curses-menus__ads.htm#ref_103_28">Name</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_62_16">Request_Name</A></span> (<span class="symbol"><A NAME="ref_62_30" HREF="terminal_interface-curses-menus__adb.htm#ref_62_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Request_Name, "menu_request_name"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_62_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_102_28">Key</A>)), <A HREF="terminal_interface-curses-menus__ads.htm#ref_103_28">Name</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_102_14">Request_Name</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_68_13" HREF="terminal_interface-curses-menus__ads.htm#ref_105_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_68_27" HREF="terminal_interface-curses-menus__ads.htm#ref_105_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_70_16">Request_Name</A></span> (<span class="symbol"><A NAME="ref_70_30" HREF="terminal_interface-curses-menus__adb.htm#ref_70_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Request_Name, "menu_request_name"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_70_16">Request_Name</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_105_28">Key</A>))); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_105_14">Request_Name</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_76_13" HREF="terminal_interface-curses-menus__ads.htm#ref_190_13">Create</A></span> (<span class="symbol"><A NAME="ref_76_21" HREF="terminal_interface-curses-menus__ads.htm#ref_190_21">Name</A></span> : String; + <span class="symbol"><A NAME="ref_77_21" HREF="terminal_interface-curses-menus__ads.htm#ref_191_21">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_79_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char; + <b>function</b> <span class="symbol"><A NAME="ref_80_16">Newitem</A></span> (<span class="symbol"><A NAME="ref_80_25" HREF="terminal_interface-curses-menus__adb.htm#ref_80_16">Name</A></span>, <span class="symbol"><A NAME="ref_80_31" HREF="terminal_interface-curses-menus__adb.htm#ref_80_16">Desc</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_79_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <b>pragma</b> Import (C, Newitem, "new_item"); + + <b>type</b> Name_String <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_190_21">Name</A>'Length); + <b>type</b> <span class="symbol"><A NAME="ref_84_12">Name_String_Ptr</A></span> <b>is</b> <b>access</b> Name_String; + <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#ref_84_12">Name_String_Ptr</A>); + + <b>type</b> Desc_String <b>is</b> <b>new</b> char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_191_21">Description</A>'Length); + <b>type</b> <span class="symbol"><A NAME="ref_88_12">Desc_String_Ptr</A></span> <b>is</b> <b>access</b> Desc_String; + <b>pragma</b> Controlled (<A HREF="terminal_interface-curses-menus__adb.htm#ref_88_12">Desc_String_Ptr</A>); + + <span class="symbol"><A NAME="ref_91_7">Name_Str</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_84_12">Name_String_Ptr</A> := <b>new</b> Name_String; + <span class="symbol"><A NAME="ref_92_7">Desc_Str</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_88_12">Desc_String_Ptr</A> := <b>new</b> Desc_String; + <span class="symbol"><A NAME="ref_93_7">Name_Len</A></span>, <span class="symbol"><A NAME="ref_93_17">Desc_Len</A></span> : size_t; + <span class="symbol"><A NAME="ref_94_7">Result</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_190_21">Name</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_91_7">Name_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_93_7">Name_Len</A>); + To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_191_21">Description</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_92_7">Desc_Str</A>.<b>all</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_93_17">Desc_Len</A>); + <A HREF="terminal_interface-curses-menus__adb.htm#ref_94_7">Result</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_80_16">Newitem</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_91_7">Name_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_91_7">Name_Str</A>.<b>all</b>'First)'<b>Access</b>, + <A HREF="terminal_interface-curses-menus__adb.htm#ref_92_7">Desc_Str</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_92_7">Desc_Str</A>.<b>all</b>'First)'<b>Access</b>); + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_94_7">Result</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_528_4">Eti_System_Error</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_94_7">Result</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_190_13">Create</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_106_14" HREF="terminal_interface-curses-menus__ads.htm#ref_202_14">Delete</A></span> (<span class="symbol"><A NAME="ref_106_22" HREF="terminal_interface-curses-menus__ads.htm#ref_202_22">Itm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_108_16">Descname</A></span> (<span class="symbol"><A NAME="ref_108_26" HREF="terminal_interface-curses-menus__adb.htm#ref_108_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Descname, "item_description"); + <b>function</b> <span class="symbol"><A NAME="ref_110_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_110_26" HREF="terminal_interface-curses-menus__adb.htm#ref_110_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Itemname, "item_name"); + + <b>function</b> <span class="symbol"><A NAME="ref_113_16">Freeitem</A></span> (<span class="symbol"><A NAME="ref_113_26" HREF="terminal_interface-curses-menus__adb.htm#ref_113_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Freeitem, "free_item"); + + <span class="symbol"><A NAME="ref_116_7">Ptr</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-menus__adb.htm#ref_116_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_108_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_202_22">Itm</A>); + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_116_7">Ptr</A> /= Null_Ptr <b>then</b> + <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#ref_116_7">Ptr</A>); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-menus__adb.htm#ref_116_7">Ptr</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_110_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_202_22">Itm</A>); + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_116_7">Ptr</A> /= Null_Ptr <b>then</b> + <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings.Free (<A HREF="terminal_interface-curses-menus__adb.htm#ref_116_7">Ptr</A>); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_113_16">Freeitem</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_202_22">Itm</A>)); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_202_22">Itm</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_202_14">Delete</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_130_14" HREF="terminal_interface-curses-menus__ads.htm#ref_211_14">Set_Value</A></span> (<span class="symbol"><A NAME="ref_130_25" HREF="terminal_interface-curses-menus__ads.htm#ref_211_25">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_131_25" HREF="terminal_interface-curses-menus__ads.htm#ref_212_25">Value</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_133_16">Set_Item_Val</A></span> (<span class="symbol"><A NAME="ref_133_30" HREF="terminal_interface-curses-menus__adb.htm#ref_133_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_134_30" HREF="terminal_interface-curses-menus__adb.htm#ref_133_16">Val</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Item_Val, "set_item_value"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_133_16">Set_Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_211_25">Itm</A>, Boolean'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#ref_212_25">Value</A>))); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_211_14">Set_Value</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_141_13" HREF="terminal_interface-curses-menus__ads.htm#ref_217_13">Value</A></span> (<span class="symbol"><A NAME="ref_141_20" HREF="terminal_interface-curses-menus__ads.htm#ref_217_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_143_16">Item_Val</A></span> (<span class="symbol"><A NAME="ref_143_26" HREF="terminal_interface-curses-menus__adb.htm#ref_143_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Item_Val, "item_value"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_143_16">Item_Val</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_217_20">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_217_13">Value</A>; + +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_154_13" HREF="terminal_interface-curses-menus__ads.htm#ref_226_13">Visible</A></span> (<span class="symbol"><A NAME="ref_154_22" HREF="terminal_interface-curses-menus__ads.htm#ref_226_22">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_156_16">Item_Vis</A></span> (<span class="symbol"><A NAME="ref_156_26" HREF="terminal_interface-curses-menus__adb.htm#ref_156_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Item_Vis, "item_visible"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_156_16">Item_Vis</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_226_22">Itm</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_226_13">Visible</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_166_14" HREF="terminal_interface-curses-menus__ads.htm#ref_235_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_166_27" HREF="terminal_interface-curses-menus__ads.htm#ref_235_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_167_27" HREF="terminal_interface-curses-menus__ads.htm#ref_236_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_169_16">Set_Item_Opts</A></span> (<span class="symbol"><A NAME="ref_169_31" HREF="terminal_interface-curses-menus__adb.htm#ref_169_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_170_31" HREF="terminal_interface-curses-menus__adb.htm#ref_169_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Item_Opts, "set_item_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_169_16">Set_Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_235_27">Itm</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_236_27">Options</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_235_14">Set_Options</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_177_14" HREF="terminal_interface-curses-menus__ads.htm#ref_241_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_177_30" HREF="terminal_interface-curses-menus__ads.htm#ref_241_30">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_178_30" HREF="terminal_interface-curses-menus__ads.htm#ref_242_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>; + <span class="symbol"><A NAME="ref_179_30" HREF="terminal_interface-curses-menus__ads.htm#ref_243_30">On</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_181_16">Item_Opts_On</A></span> (<span class="symbol"><A NAME="ref_181_30" HREF="terminal_interface-curses-menus__adb.htm#ref_181_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_182_30" HREF="terminal_interface-curses-menus__adb.htm#ref_181_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Item_Opts_On, "item_opts_on"); + <b>function</b> <span class="symbol"><A NAME="ref_184_16">Item_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_184_31" HREF="terminal_interface-curses-menus__adb.htm#ref_184_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_185_31" HREF="terminal_interface-curses-menus__adb.htm#ref_184_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Item_Opts_Off, "item_opts_off"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_243_30">On</A> <b>then</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_181_16">Item_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_241_30">Itm</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_242_30">Options</A>)); + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_184_16">Item_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_241_30">Itm</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_242_30">Options</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_241_14">Switch_Options</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_196_14" HREF="terminal_interface-curses-menus__ads.htm#ref_250_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_196_27" HREF="terminal_interface-curses-menus__ads.htm#ref_250_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_197_27" HREF="terminal_interface-curses-menus__ads.htm#ref_251_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_199_16">Item_Opts</A></span> (<span class="symbol"><A NAME="ref_199_27" HREF="terminal_interface-curses-menus__adb.htm#ref_199_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>; + <b>pragma</b> Import (C, Item_Opts, "item_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_251_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_199_16">Item_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_250_27">Itm</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_250_14">Get_Options</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_206_13" HREF="terminal_interface-curses-menus__ads.htm#ref_255_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_206_26" HREF="terminal_interface-curses-menus__ads.htm#ref_255_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A> + <b>is</b> + <span class="symbol"><A NAME="ref_208_7">Ios</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_250_14">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_255_26">Itm</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_208_7">Ios</A>); + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_208_7">Ios</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_255_13">Get_Options</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_214_14" HREF="terminal_interface-curses-menus__ads.htm#ref_264_14">Name</A></span> (<span class="symbol"><A NAME="ref_214_20" HREF="terminal_interface-curses-menus__ads.htm#ref_264_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_215_20" HREF="terminal_interface-curses-menus__ads.htm#ref_265_20">Name</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_217_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_217_26" HREF="terminal_interface-curses-menus__adb.htm#ref_217_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Itemname, "item_name"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_217_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_264_20">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_265_20">Name</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_264_14">Name</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_223_13" HREF="terminal_interface-curses-menus__ads.htm#ref_267_14">Name</A></span> (<span class="symbol"><A NAME="ref_223_19" HREF="terminal_interface-curses-menus__ads.htm#ref_267_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_225_16">Itemname</A></span> (<span class="symbol"><A NAME="ref_225_26" HREF="terminal_interface-curses-menus__adb.htm#ref_225_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Itemname, "item_name"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_225_16">Itemname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_267_20">Itm</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_267_14">Name</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_231_14" HREF="terminal_interface-curses-menus__ads.htm#ref_273_14">Description</A></span> (<span class="symbol"><A NAME="ref_231_27" HREF="terminal_interface-curses-menus__ads.htm#ref_273_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_232_27" HREF="terminal_interface-curses-menus__ads.htm#ref_274_27">Description</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_234_16">Descname</A></span> (<span class="symbol"><A NAME="ref_234_26" HREF="terminal_interface-curses-menus__adb.htm#ref_234_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Descname, "item_description"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_234_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_273_27">Itm</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_274_27">Description</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_273_14">Description</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_240_13" HREF="terminal_interface-curses-menus__ads.htm#ref_277_14">Description</A></span> (<span class="symbol"><A NAME="ref_240_26" HREF="terminal_interface-curses-menus__ads.htm#ref_277_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_242_16">Descname</A></span> (<span class="symbol"><A NAME="ref_242_26" HREF="terminal_interface-curses-menus__adb.htm#ref_242_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Descname, "item_description"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_242_16">Descname</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_277_27">Itm</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_277_14">Description</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_248_14" HREF="terminal_interface-curses-menus__ads.htm#ref_287_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_248_27" HREF="terminal_interface-curses-menus__ads.htm#ref_287_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_249_27" HREF="terminal_interface-curses-menus__ads.htm#ref_288_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_251_16">Set_Curr_Item</A></span> (<span class="symbol"><A NAME="ref_251_31" HREF="terminal_interface-curses-menus__adb.htm#ref_251_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_252_31" HREF="terminal_interface-curses-menus__adb.htm#ref_251_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Curr_Item, "set_current_item"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_251_16">Set_Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_287_27">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_288_27">Itm</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_287_14">Set_Current</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_259_13" HREF="terminal_interface-curses-menus__ads.htm#ref_293_13">Current</A></span> (<span class="symbol"><A NAME="ref_259_22" HREF="terminal_interface-curses-menus__ads.htm#ref_293_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_261_16">Curr_Item</A></span> (<span class="symbol"><A NAME="ref_261_27" HREF="terminal_interface-curses-menus__adb.htm#ref_261_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <b>pragma</b> Import (C, Curr_Item, "current_item"); + + <span class="symbol"><A NAME="ref_264_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_261_16">Curr_Item</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_293_22">Men</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_264_7">Res</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_112_4">Menu_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_264_7">Res</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_293_13">Current</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_272_14" HREF="terminal_interface-curses-menus__ads.htm#ref_298_14">Set_Top_Row</A></span> (<span class="symbol"><A NAME="ref_272_27" HREF="terminal_interface-curses-menus__ads.htm#ref_298_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_273_27" HREF="terminal_interface-curses-menus__ads.htm#ref_299_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_275_16">Set_Toprow</A></span> (<span class="symbol"><A NAME="ref_275_28" HREF="terminal_interface-curses-menus__adb.htm#ref_275_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_276_28" HREF="terminal_interface-curses-menus__adb.htm#ref_275_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Toprow, "set_top_row"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_275_16">Set_Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_298_27">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_299_27">Line</A>))); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_298_14">Set_Top_Row</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_283_13" HREF="terminal_interface-curses-menus__ads.htm#ref_304_13">Top_Row</A></span> (<span class="symbol"><A NAME="ref_283_22" HREF="terminal_interface-curses-menus__ads.htm#ref_304_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_285_16">Toprow</A></span> (<span class="symbol"><A NAME="ref_285_24" HREF="terminal_interface-curses-menus__adb.htm#ref_285_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Toprow, "top_row"); + + <span class="symbol"><A NAME="ref_288_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_285_16">Toprow</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_304_22">Men</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_288_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_112_4">Menu_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_288_7">Res</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_304_13">Top_Row</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_296_13" HREF="terminal_interface-curses-menus__ads.htm#ref_309_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_296_24" HREF="terminal_interface-curses-menus__ads.htm#ref_309_24">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> Positive + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_298_16">Get_Itemindex</A></span> (<span class="symbol"><A NAME="ref_298_31" HREF="terminal_interface-curses-menus__adb.htm#ref_298_16">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Get_Itemindex, "item_index"); + + <span class="symbol"><A NAME="ref_301_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_298_16">Get_Itemindex</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_309_24">Itm</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_301_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_112_4">Menu_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> Positive (Natural (<A HREF="terminal_interface-curses-menus__adb.htm#ref_301_7">Res</A>) + Positive'First); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_309_13">Get_Index</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_309_14" HREF="terminal_interface-curses-menus__ads.htm#ref_321_14">Post</A></span> (<span class="symbol"><A NAME="ref_309_20" HREF="terminal_interface-curses-menus__ads.htm#ref_321_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_310_20" HREF="terminal_interface-curses-menus__ads.htm#ref_322_20">Post</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_312_16">M_Post</A></span> (<span class="symbol"><A NAME="ref_312_24" HREF="terminal_interface-curses-menus__adb.htm#ref_312_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, M_Post, "post_menu"); + <b>function</b> <span class="symbol"><A NAME="ref_314_16">M_Unpost</A></span> (<span class="symbol"><A NAME="ref_314_26" HREF="terminal_interface-curses-menus__adb.htm#ref_314_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, M_Unpost, "unpost_menu"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_322_20">Post</A> <b>then</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_312_16">M_Post</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_321_20">Men</A>)); + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_314_16">M_Unpost</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_321_20">Men</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_321_14">Post</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_325_14" HREF="terminal_interface-curses-menus__ads.htm#ref_332_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_325_27" HREF="terminal_interface-curses-menus__ads.htm#ref_332_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_326_27" HREF="terminal_interface-curses-menus__ads.htm#ref_333_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_328_16">Set_Menu_Opts</A></span> (<span class="symbol"><A NAME="ref_328_31" HREF="terminal_interface-curses-menus__adb.htm#ref_328_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_329_31" HREF="terminal_interface-curses-menus__adb.htm#ref_328_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Opts, "set_menu_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_328_16">Set_Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_332_27">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_333_27">Options</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_332_14">Set_Options</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_336_14" HREF="terminal_interface-curses-menus__ads.htm#ref_338_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_336_30" HREF="terminal_interface-curses-menus__ads.htm#ref_338_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_337_30" HREF="terminal_interface-curses-menus__ads.htm#ref_339_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>; + <span class="symbol"><A NAME="ref_338_30" HREF="terminal_interface-curses-menus__ads.htm#ref_340_30">On</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_340_16">Menu_Opts_On</A></span> (<span class="symbol"><A NAME="ref_340_30" HREF="terminal_interface-curses-menus__adb.htm#ref_340_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_341_30" HREF="terminal_interface-curses-menus__adb.htm#ref_340_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Menu_Opts_On, "menu_opts_on"); + <b>function</b> <span class="symbol"><A NAME="ref_343_16">Menu_Opts_Off</A></span> (<span class="symbol"><A NAME="ref_343_31" HREF="terminal_interface-curses-menus__adb.htm#ref_343_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_344_31" HREF="terminal_interface-curses-menus__adb.htm#ref_343_16">Opt</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Menu_Opts_Off, "menu_opts_off"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_340_30">On</A> <b>then</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_340_16">Menu_Opts_On</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_338_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_339_30">Options</A>)); + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_343_16">Menu_Opts_Off</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_338_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_339_30">Options</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_338_14">Switch_Options</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_355_14" HREF="terminal_interface-curses-menus__ads.htm#ref_346_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_355_27" HREF="terminal_interface-curses-menus__ads.htm#ref_346_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_356_27" HREF="terminal_interface-curses-menus__ads.htm#ref_347_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_358_16">Menu_Opts</A></span> (<span class="symbol"><A NAME="ref_358_27" HREF="terminal_interface-curses-menus__adb.htm#ref_358_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>; + <b>pragma</b> Import (C, Menu_Opts, "menu_opts"); + + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_347_27">Options</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_358_16">Menu_Opts</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_346_27">Men</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_346_14">Get_Options</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_365_13" HREF="terminal_interface-curses-menus__ads.htm#ref_351_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_365_26" HREF="terminal_interface-curses-menus__ads.htm#ref_351_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_59_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A> + <b>is</b> + <span class="symbol"><A NAME="ref_367_7">Mos</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_346_14">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_351_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_367_7">Mos</A>); + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_367_7">Mos</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_351_13">Get_Options</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_373_14" HREF="terminal_interface-curses-menus__ads.htm#ref_360_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_373_26" HREF="terminal_interface-curses-menus__ads.htm#ref_360_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_374_26" HREF="terminal_interface-curses-menus__ads.htm#ref_361_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_376_16">Set_Menu_Win</A></span> (<span class="symbol"><A NAME="ref_376_30" HREF="terminal_interface-curses-menus__adb.htm#ref_376_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_377_30" HREF="terminal_interface-curses-menus__adb.htm#ref_376_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Win, "set_menu_win"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_376_16">Set_Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_360_26">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_361_26">Win</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_360_14">Set_Window</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_384_13" HREF="terminal_interface-curses-menus__ads.htm#ref_366_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_384_25" HREF="terminal_interface-curses-menus__ads.htm#ref_366_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_386_16">Menu_Win</A></span> (<span class="symbol"><A NAME="ref_386_26" HREF="terminal_interface-curses-menus__adb.htm#ref_386_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Menu_Win, "menu_win"); + + <span class="symbol"><A NAME="ref_389_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_386_16">Menu_Win</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_366_25">Men</A>); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_389_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_366_13">Get_Window</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_394_14" HREF="terminal_interface-curses-menus__ads.htm#ref_371_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_394_30" HREF="terminal_interface-curses-menus__ads.htm#ref_371_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_395_30" HREF="terminal_interface-curses-menus__ads.htm#ref_372_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_397_16">Set_Menu_Sub</A></span> (<span class="symbol"><A NAME="ref_397_30" HREF="terminal_interface-curses-menus__adb.htm#ref_397_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_398_30" HREF="terminal_interface-curses-menus__adb.htm#ref_397_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Sub, "set_menu_sub"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_397_16">Set_Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_371_30">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_372_30">Win</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_371_14">Set_Sub_Window</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_405_13" HREF="terminal_interface-curses-menus__ads.htm#ref_377_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_405_29" HREF="terminal_interface-curses-menus__ads.htm#ref_377_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_407_16">Menu_Sub</A></span> (<span class="symbol"><A NAME="ref_407_26" HREF="terminal_interface-curses-menus__adb.htm#ref_407_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Menu_Sub, "menu_sub"); + + <span class="symbol"><A NAME="ref_410_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_407_16">Menu_Sub</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_377_29">Men</A>); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_410_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_377_13">Get_Sub_Window</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_415_14" HREF="terminal_interface-curses-menus__ads.htm#ref_382_14">Scale</A></span> (<span class="symbol"><A NAME="ref_415_21" HREF="terminal_interface-curses-menus__ads.htm#ref_382_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_416_21" HREF="terminal_interface-curses-menus__ads.htm#ref_383_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_417_21" HREF="terminal_interface-curses-menus__ads.htm#ref_384_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_419_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_420_16">M_Scale</A></span> (<span class="symbol"><A NAME="ref_420_25" HREF="terminal_interface-curses-menus__adb.htm#ref_420_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_421_25" HREF="terminal_interface-curses-menus__adb.htm#ref_420_16">Yp</A></span>, <span class="symbol"><A NAME="ref_421_29" HREF="terminal_interface-curses-menus__adb.htm#ref_420_16">Xp</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_419_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, M_Scale, "scale_menu"); + + <span class="symbol"><A NAME="ref_424_7">X</A></span>, <span class="symbol"><A NAME="ref_424_10">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_420_16">M_Scale</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_382_21">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_424_10">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_424_7">X</A>'<b>Access</b>)); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_383_21">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_424_10">Y</A>); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_384_21">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_424_7">X</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_382_14">Scale</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_431_14" HREF="terminal_interface-curses-menus__ads.htm#ref_393_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_431_31" HREF="terminal_interface-curses-menus__ads.htm#ref_393_31">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_433_16">Pos_Menu_Cursor</A></span> (<span class="symbol"><A NAME="ref_433_33" HREF="terminal_interface-curses-menus__adb.htm#ref_433_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Pos_Menu_Cursor, "pos_menu_cursor"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_433_16">Pos_Menu_Cursor</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_393_31">Men</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_393_14">Position_Cursor</A>; + +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_441_14" HREF="terminal_interface-curses-menus__ads.htm#ref_402_14">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_441_24" HREF="terminal_interface-curses-menus__ads.htm#ref_402_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_442_24" HREF="terminal_interface-curses-menus__ads.htm#ref_403_24">Mark</A></span> : String) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_444_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char; + <b>function</b> <span class="symbol"><A NAME="ref_445_16">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_445_26" HREF="terminal_interface-curses-menus__adb.htm#ref_445_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_446_26" HREF="terminal_interface-curses-menus__adb.htm#ref_445_16">Mark</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_444_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Mark, "set_menu_mark"); + + <span class="symbol"><A NAME="ref_449_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_403_24">Mark</A>'Length); + <span class="symbol"><A NAME="ref_450_7">Len</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_403_24">Mark</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_449_7">Txt</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_450_7">Len</A>); + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_445_16">Set_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_402_24">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_449_7">Txt</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_449_7">Txt</A>'First)'<b>Access</b>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_402_14">Set_Mark</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_456_14" HREF="terminal_interface-curses-menus__ads.htm#ref_408_14">Mark</A></span> (<span class="symbol"><A NAME="ref_456_20" HREF="terminal_interface-curses-menus__ads.htm#ref_408_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_457_20" HREF="terminal_interface-curses-menus__ads.htm#ref_409_20">Mark</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_459_16">Get_Menu_Mark</A></span> (<span class="symbol"><A NAME="ref_459_31" HREF="terminal_interface-curses-menus__adb.htm#ref_459_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Get_Menu_Mark, "menu_mark"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_459_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_408_20">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_409_20">Mark</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_408_14">Mark</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_465_13" HREF="terminal_interface-curses-menus__ads.htm#ref_412_14">Mark</A></span> (<span class="symbol"><A NAME="ref_465_19" HREF="terminal_interface-curses-menus__ads.htm#ref_412_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_467_16">Get_Menu_Mark</A></span> (<span class="symbol"><A NAME="ref_467_31" HREF="terminal_interface-curses-menus__adb.htm#ref_467_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Get_Menu_Mark, "menu_mark"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_467_16">Get_Menu_Mark</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_412_20">Men</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_412_14">Mark</A>; + +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_474_14" HREF="terminal_interface-curses-menus__ads.htm#ref_422_14">Set_Foreground</A></span> + (<span class="symbol"><A NAME="ref_475_7" HREF="terminal_interface-curses-menus__ads.htm#ref_423_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_476_7" HREF="terminal_interface-curses-menus__ads.htm#ref_424_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_477_7" HREF="terminal_interface-curses-menus__ads.htm#ref_425_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_479_16">Set_Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_479_31" HREF="terminal_interface-curses-menus__adb.htm#ref_479_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_480_31" HREF="terminal_interface-curses-menus__adb.htm#ref_479_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Fore, "set_menu_fore"); + + <span class="symbol"><A NAME="ref_483_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_425_7">Color</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_424_7">Fore</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_479_16">Set_Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_423_7">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_483_7">Ch</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_422_14">Set_Foreground</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_490_14" HREF="terminal_interface-curses-menus__ads.htm#ref_430_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_490_26" HREF="terminal_interface-curses-menus__ads.htm#ref_430_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_491_26" HREF="terminal_interface-curses-menus__ads.htm#ref_431_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_493_16">Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_493_27" HREF="terminal_interface-curses-menus__adb.htm#ref_493_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Menu_Fore, "menu_fore"); + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_431_26">Fore</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_493_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_430_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_430_14">Foreground</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_499_14" HREF="terminal_interface-curses-menus__ads.htm#ref_435_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_499_26" HREF="terminal_interface-curses-menus__ads.htm#ref_435_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_500_26" HREF="terminal_interface-curses-menus__ads.htm#ref_436_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_501_26" HREF="terminal_interface-curses-menus__ads.htm#ref_437_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_503_16">Menu_Fore</A></span> (<span class="symbol"><A NAME="ref_503_27" HREF="terminal_interface-curses-menus__adb.htm#ref_503_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Menu_Fore, "menu_fore"); + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_436_26">Fore</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_503_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_435_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_437_26">Color</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_503_16">Menu_Fore</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_435_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_435_14">Foreground</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_510_14" HREF="terminal_interface-curses-menus__ads.htm#ref_442_14">Set_Background</A></span> + (<span class="symbol"><A NAME="ref_511_7" HREF="terminal_interface-curses-menus__ads.htm#ref_443_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_512_7" HREF="terminal_interface-curses-menus__ads.htm#ref_444_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_513_7" HREF="terminal_interface-curses-menus__ads.htm#ref_445_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_515_16">Set_Menu_Back</A></span> (<span class="symbol"><A NAME="ref_515_31" HREF="terminal_interface-curses-menus__adb.htm#ref_515_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_516_31" HREF="terminal_interface-curses-menus__adb.htm#ref_515_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Back, "set_menu_back"); + + <span class="symbol"><A NAME="ref_519_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_445_7">Color</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_444_7">Back</A>); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_515_16">Set_Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_443_7">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_519_7">Ch</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_442_14">Set_Background</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_526_14" HREF="terminal_interface-curses-menus__ads.htm#ref_450_14">Background</A></span> (<span class="symbol"><A NAME="ref_526_26" HREF="terminal_interface-curses-menus__ads.htm#ref_450_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_527_26" HREF="terminal_interface-curses-menus__ads.htm#ref_451_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_529_16">Menu_Back</A></span> (<span class="symbol"><A NAME="ref_529_27" HREF="terminal_interface-curses-menus__adb.htm#ref_529_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Menu_Back, "menu_back"); + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_451_26">Back</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_529_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_450_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_450_14">Background</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_535_14" HREF="terminal_interface-curses-menus__ads.htm#ref_455_14">Background</A></span> (<span class="symbol"><A NAME="ref_535_26" HREF="terminal_interface-curses-menus__ads.htm#ref_455_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_536_26" HREF="terminal_interface-curses-menus__ads.htm#ref_456_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_537_26" HREF="terminal_interface-curses-menus__ads.htm#ref_457_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_539_16">Menu_Back</A></span> (<span class="symbol"><A NAME="ref_539_27" HREF="terminal_interface-curses-menus__adb.htm#ref_539_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Menu_Back, "menu_back"); + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_456_26">Back</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_539_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_455_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_457_26">Color</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_539_16">Menu_Back</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_455_26">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_455_14">Background</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_546_14" HREF="terminal_interface-curses-menus__ads.htm#ref_462_14">Set_Grey</A></span> (<span class="symbol"><A NAME="ref_546_24" HREF="terminal_interface-curses-menus__ads.htm#ref_463_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_547_24" HREF="terminal_interface-curses-menus__ads.htm#ref_464_7">Grey</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_548_24" HREF="terminal_interface-curses-menus__ads.htm#ref_465_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_550_16">Set_Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_550_31" HREF="terminal_interface-curses-menus__adb.htm#ref_550_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_551_31" HREF="terminal_interface-curses-menus__adb.htm#ref_550_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Grey, "set_menu_grey"); + + <span class="symbol"><A NAME="ref_554_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_465_7">Color</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_464_7">Grey</A>); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_550_16">Set_Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_463_7">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_554_7">Ch</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_462_14">Set_Grey</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_562_14" HREF="terminal_interface-curses-menus__ads.htm#ref_470_14">Grey</A></span> (<span class="symbol"><A NAME="ref_562_20" HREF="terminal_interface-curses-menus__ads.htm#ref_470_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_563_20" HREF="terminal_interface-curses-menus__ads.htm#ref_471_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_565_16">Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_565_27" HREF="terminal_interface-curses-menus__adb.htm#ref_565_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Menu_Grey, "menu_grey"); + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_471_20">Grey</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_565_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_470_20">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_470_14">Grey</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_571_14" HREF="terminal_interface-curses-menus__ads.htm#ref_475_14">Grey</A></span> (<span class="symbol"><A NAME="ref_571_20" HREF="terminal_interface-curses-menus__ads.htm#ref_476_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_572_20" HREF="terminal_interface-curses-menus__ads.htm#ref_477_7">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_573_20" HREF="terminal_interface-curses-menus__ads.htm#ref_478_7">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_575_16">Menu_Grey</A></span> (<span class="symbol"><A NAME="ref_575_27" HREF="terminal_interface-curses-menus__adb.htm#ref_575_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Menu_Grey, "menu_grey"); + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_477_7">Grey</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_575_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_476_7">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_478_7">Color</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_575_16">Menu_Grey</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_476_7">Men</A>).<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_475_14">Grey</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_582_14" HREF="terminal_interface-curses-menus__ads.htm#ref_483_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_582_33" HREF="terminal_interface-curses-menus__ads.htm#ref_483_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_583_33" HREF="terminal_interface-curses-menus__ads.htm#ref_484_33">Pad</A></span> : Character := Space) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_585_16">Set_Menu_Pad</A></span> (<span class="symbol"><A NAME="ref_585_30" HREF="terminal_interface-curses-menus__adb.htm#ref_585_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_586_30" HREF="terminal_interface-curses-menus__adb.htm#ref_585_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Pad, "set_menu_pad"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_585_16">Set_Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_483_33">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (Character'Pos (<A HREF="terminal_interface-curses-menus__ads.htm#ref_484_33">Pad</A>)))); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_483_14">Set_Pad_Character</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_593_14" HREF="terminal_interface-curses-menus__ads.htm#ref_489_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_593_29" HREF="terminal_interface-curses-menus__ads.htm#ref_489_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_594_29" HREF="terminal_interface-curses-menus__ads.htm#ref_490_29">Pad</A></span> : <b>out</b> Character) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_596_16">Menu_Pad</A></span> (<span class="symbol"><A NAME="ref_596_26" HREF="terminal_interface-curses-menus__adb.htm#ref_596_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Menu_Pad, "menu_pad"); + <b>begin</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_490_29">Pad</A> := Character'Val (<A HREF="terminal_interface-curses-menus__adb.htm#ref_596_16">Menu_Pad</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_489_29">Men</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_489_14">Pad_Character</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_602_14" HREF="terminal_interface-curses-menus__ads.htm#ref_499_14">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_602_27" HREF="terminal_interface-curses-menus__ads.htm#ref_499_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_603_27" HREF="terminal_interface-curses-menus__ads.htm#ref_500_27">Descr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> := 0; + <span class="symbol"><A NAME="ref_604_27" HREF="terminal_interface-curses-menus__ads.htm#ref_501_27">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> := 0; + <span class="symbol"><A NAME="ref_605_27" HREF="terminal_interface-curses-menus__ads.htm#ref_502_27">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> := 0) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_607_16">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_607_29" HREF="terminal_interface-curses-menus__adb.htm#ref_607_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_608_29" HREF="terminal_interface-curses-menus__adb.htm#ref_607_16">D</A></span>, <span class="symbol"><A NAME="ref_608_32" HREF="terminal_interface-curses-menus__adb.htm#ref_607_16">R</A></span>, <span class="symbol"><A NAME="ref_608_35" HREF="terminal_interface-curses-menus__adb.htm#ref_607_16">C</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Spacing, "set_menu_spacing"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_607_16">Set_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_499_27">Men</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_500_27">Descr</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_501_27">Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_502_27">Col</A>))); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_499_14">Set_Spacing</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_618_14" HREF="terminal_interface-curses-menus__ads.htm#ref_507_14">Spacing</A></span> (<span class="symbol"><A NAME="ref_618_23" HREF="terminal_interface-curses-menus__ads.htm#ref_507_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_619_23" HREF="terminal_interface-curses-menus__ads.htm#ref_508_23">Descr</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_620_23" HREF="terminal_interface-curses-menus__ads.htm#ref_509_23">Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_621_23" HREF="terminal_interface-curses-menus__ads.htm#ref_510_23">Col</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_623_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_624_16">Get_Spacing</A></span> (<span class="symbol"><A NAME="ref_624_29" HREF="terminal_interface-curses-menus__adb.htm#ref_624_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_625_29" HREF="terminal_interface-curses-menus__adb.htm#ref_624_16">D</A></span>, <span class="symbol"><A NAME="ref_625_32" HREF="terminal_interface-curses-menus__adb.htm#ref_624_16">R</A></span>, <span class="symbol"><A NAME="ref_625_35" HREF="terminal_interface-curses-menus__adb.htm#ref_624_16">C</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_623_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Get_Spacing, "menu_spacing"); + + <span class="symbol"><A NAME="ref_628_7">D</A></span>, <span class="symbol"><A NAME="ref_628_10">R</A></span>, <span class="symbol"><A NAME="ref_628_13">C</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_624_16">Get_Spacing</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_507_23">Men</A>, + <A HREF="terminal_interface-curses-menus__adb.htm#ref_628_7">D</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-menus__adb.htm#ref_628_10">R</A>'<b>Access</b>, + <A HREF="terminal_interface-curses-menus__adb.htm#ref_628_13">C</A>'<b>Access</b>)); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_508_23">Descr</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_628_7">D</A>); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_509_23">Row</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_628_10">R</A>); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_510_23">Col</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_628_13">C</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_507_14">Spacing</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_639_13" HREF="terminal_interface-curses-menus__ads.htm#ref_519_13">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_639_26" HREF="terminal_interface-curses-menus__ads.htm#ref_519_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_640_26" HREF="terminal_interface-curses-menus__ads.htm#ref_520_26">Text</A></span> : String) <b>return</b> Boolean + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_642_12">Char_Ptr</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char; + <b>function</b> <span class="symbol"><A NAME="ref_643_16">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_643_29" HREF="terminal_interface-curses-menus__adb.htm#ref_643_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_644_29" HREF="terminal_interface-curses-menus__adb.htm#ref_643_16">Pattern</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_642_12">Char_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Pattern, "set_menu_pattern"); + + <span class="symbol"><A NAME="ref_647_7">S</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-menus__ads.htm#ref_520_26">Text</A>'Length); + <span class="symbol"><A NAME="ref_648_7">L</A></span> : size_t; + <span class="symbol"><A NAME="ref_649_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-menus__ads.htm#ref_520_26">Text</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_647_7">S</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_648_7">L</A>); + <A HREF="terminal_interface-curses-menus__adb.htm#ref_649_7">Res</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_643_16">Set_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_519_26">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_647_7">S</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_647_7">S</A>'First)'<b>Access</b>); + <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_649_7">Res</A> <b>is</b> + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_No_Match</A> =&gt; + <b>return</b> False; + <b>when</b> <b>others</b> =&gt; + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_649_7">Res</A>); + <b>return</b> True; + <b>end</b> <b>case</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_519_13">Set_Pattern</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_662_14" HREF="terminal_interface-curses-menus__ads.htm#ref_526_14">Pattern</A></span> (<span class="symbol"><A NAME="ref_662_23" HREF="terminal_interface-curses-menus__ads.htm#ref_526_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_663_23" HREF="terminal_interface-curses-menus__ads.htm#ref_527_23">Text</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_665_16">Get_Pattern</A></span> (<span class="symbol"><A NAME="ref_665_29" HREF="terminal_interface-curses-menus__adb.htm#ref_665_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_56_12">chars_ptr</A>; + <b>pragma</b> Import (C, Get_Pattern, "menu_pattern"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_665_16">Get_Pattern</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_526_23">Men</A>), <A HREF="terminal_interface-curses-menus__ads.htm#ref_527_23">Text</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_526_14">Pattern</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_671_14" HREF="terminal_interface-curses-menus__ads.htm#ref_536_14">Set_Format</A></span> (<span class="symbol"><A NAME="ref_671_26" HREF="terminal_interface-curses-menus__ads.htm#ref_536_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_672_26" HREF="terminal_interface-curses-menus__ads.htm#ref_537_26">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_673_26" HREF="terminal_interface-curses-menus__ads.htm#ref_538_26">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_675_16">Set_Menu_Fmt</A></span> (<span class="symbol"><A NAME="ref_675_30" HREF="terminal_interface-curses-menus__adb.htm#ref_675_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_676_30" HREF="terminal_interface-curses-menus__adb.htm#ref_675_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_677_30" HREF="terminal_interface-curses-menus__adb.htm#ref_675_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Fmt, "set_menu_format"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_675_16">Set_Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_536_26">Men</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_537_26">Lines</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_538_26">Columns</A>))); + + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_536_14">Set_Format</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_687_14" HREF="terminal_interface-curses-menus__ads.htm#ref_550_14">Format</A></span> (<span class="symbol"><A NAME="ref_687_22" HREF="terminal_interface-curses-menus__ads.htm#ref_550_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_688_22" HREF="terminal_interface-curses-menus__ads.htm#ref_551_22">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_689_22" HREF="terminal_interface-curses-menus__ads.htm#ref_552_22">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_691_12">C_Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_692_16">Menu_Fmt</A></span> (<span class="symbol"><A NAME="ref_692_26" HREF="terminal_interface-curses-menus__adb.htm#ref_692_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_693_26" HREF="terminal_interface-curses-menus__adb.htm#ref_692_16">Y</A></span>, <span class="symbol"><A NAME="ref_693_29" HREF="terminal_interface-curses-menus__adb.htm#ref_692_16">X</A></span> : <A HREF="terminal_interface-curses-menus__adb.htm#ref_691_12">C_Int_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Menu_Fmt, "menu_format"); + + <span class="symbol"><A NAME="ref_696_7">L</A></span>, <span class="symbol"><A NAME="ref_696_10">C</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_692_16">Menu_Fmt</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_550_22">Men</A>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_696_7">L</A>'<b>Access</b>, <A HREF="terminal_interface-curses-menus__adb.htm#ref_696_10">C</A>'<b>Access</b>)); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_551_22">Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_696_7">L</A>); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_552_22">Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_696_10">C</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_550_14">Format</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_703_14" HREF="terminal_interface-curses-menus__ads.htm#ref_564_14">Set_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_703_34" HREF="terminal_interface-curses-menus__ads.htm#ref_564_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_704_34" HREF="terminal_interface-curses-menus__ads.htm#ref_565_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_706_16">Set_Item_Init</A></span> (<span class="symbol"><A NAME="ref_706_31" HREF="terminal_interface-curses-menus__adb.htm#ref_706_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_707_31" HREF="terminal_interface-curses-menus__adb.htm#ref_706_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Item_Init, "set_item_init"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_706_16">Set_Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_564_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_565_34">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_564_14">Set_Item_Init_Hook</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_714_14" HREF="terminal_interface-curses-menus__ads.htm#ref_570_14">Set_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_714_34" HREF="terminal_interface-curses-menus__ads.htm#ref_570_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_715_34" HREF="terminal_interface-curses-menus__ads.htm#ref_571_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_717_16">Set_Item_Term</A></span> (<span class="symbol"><A NAME="ref_717_31" HREF="terminal_interface-curses-menus__adb.htm#ref_717_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_718_31" HREF="terminal_interface-curses-menus__adb.htm#ref_717_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Item_Term, "set_item_term"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_717_16">Set_Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_570_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_571_34">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_570_14">Set_Item_Term_Hook</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_725_14" HREF="terminal_interface-curses-menus__ads.htm#ref_576_14">Set_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_725_34" HREF="terminal_interface-curses-menus__ads.htm#ref_576_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_726_34" HREF="terminal_interface-curses-menus__ads.htm#ref_577_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_728_16">Set_Menu_Init</A></span> (<span class="symbol"><A NAME="ref_728_31" HREF="terminal_interface-curses-menus__adb.htm#ref_728_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_729_31" HREF="terminal_interface-curses-menus__adb.htm#ref_728_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Init, "set_menu_init"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_728_16">Set_Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_576_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_577_34">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_576_14">Set_Menu_Init_Hook</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_736_14" HREF="terminal_interface-curses-menus__ads.htm#ref_582_14">Set_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_736_34" HREF="terminal_interface-curses-menus__ads.htm#ref_582_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_737_34" HREF="terminal_interface-curses-menus__ads.htm#ref_583_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_739_16">Set_Menu_Term</A></span> (<span class="symbol"><A NAME="ref_739_31" HREF="terminal_interface-curses-menus__adb.htm#ref_739_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_740_31" HREF="terminal_interface-curses-menus__adb.htm#ref_739_16">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Menu_Term, "set_menu_term"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_739_16">Set_Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_582_34">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_583_34">Proc</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_582_14">Set_Menu_Term_Hook</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_747_13" HREF="terminal_interface-curses-menus__ads.htm#ref_588_13">Get_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_747_33" HREF="terminal_interface-curses-menus__ads.htm#ref_588_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_749_16">Item_Init</A></span> (<span class="symbol"><A NAME="ref_749_27" HREF="terminal_interface-curses-menus__adb.htm#ref_749_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <b>pragma</b> Import (C, Item_Init, "item_init"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_749_16">Item_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_588_33">Men</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_588_13">Get_Item_Init_Hook</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_755_13" HREF="terminal_interface-curses-menus__ads.htm#ref_593_13">Get_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_755_33" HREF="terminal_interface-curses-menus__ads.htm#ref_593_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_757_16">Item_Term</A></span> (<span class="symbol"><A NAME="ref_757_27" HREF="terminal_interface-curses-menus__adb.htm#ref_757_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <b>pragma</b> Import (C, Item_Term, "item_term"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_757_16">Item_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_593_33">Men</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_593_13">Get_Item_Term_Hook</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_763_13" HREF="terminal_interface-curses-menus__ads.htm#ref_598_13">Get_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_763_33" HREF="terminal_interface-curses-menus__ads.htm#ref_598_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_765_16">Menu_Init</A></span> (<span class="symbol"><A NAME="ref_765_27" HREF="terminal_interface-curses-menus__adb.htm#ref_765_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <b>pragma</b> Import (C, Menu_Init, "menu_init"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_765_16">Menu_Init</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_598_33">Men</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_598_13">Get_Menu_Init_Hook</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_771_13" HREF="terminal_interface-curses-menus__ads.htm#ref_603_13">Get_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_771_33" HREF="terminal_interface-curses-menus__ads.htm#ref_603_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_773_16">Menu_Term</A></span> (<span class="symbol"><A NAME="ref_773_27" HREF="terminal_interface-curses-menus__adb.htm#ref_773_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <b>pragma</b> Import (C, Menu_Term, "menu_term"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_773_16">Menu_Term</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_603_33">Men</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_603_13">Get_Menu_Term_Hook</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_779_14" HREF="terminal_interface-curses-menus__ads.htm#ref_612_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_779_24" HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_780_24" HREF="terminal_interface-curses-menus__ads.htm#ref_613_24">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_782_16">Set_Items</A></span> (<span class="symbol"><A NAME="ref_782_27" HREF="terminal_interface-curses-menus__adb.htm#ref_782_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_783_27" HREF="terminal_interface-curses-menus__adb.htm#ref_782_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Set_Items, "set_menu_items"); + + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-menus__ads.htm#ref_613_24">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_613_24">Items</A>'Last) = <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A>); + <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_613_24">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_613_24">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_112_4">Menu_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_782_16">Set_Items</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_612_24">Men</A>, <A HREF="terminal_interface-curses-menus__ads.htm#ref_613_24">Items</A>.<b>all</b>'Address)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_612_14">Redefine</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_795_13" HREF="terminal_interface-curses-menus__ads.htm#ref_628_13">Item_Count</A></span> (<span class="symbol"><A NAME="ref_795_25" HREF="terminal_interface-curses-menus__ads.htm#ref_628_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> Natural + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_797_16">Count</A></span> (<span class="symbol"><A NAME="ref_797_23" HREF="terminal_interface-curses-menus__adb.htm#ref_797_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Count, "item_count"); + <b>begin</b> + <b>return</b> Natural (<A HREF="terminal_interface-curses-menus__adb.htm#ref_797_16">Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_628_25">Men</A>)); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_628_13">Item_Count</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_803_13" HREF="terminal_interface-curses-menus__ads.htm#ref_622_13">Items</A></span> (<span class="symbol"><A NAME="ref_803_20" HREF="terminal_interface-curses-menus__ads.htm#ref_622_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_804_20" HREF="terminal_interface-curses-menus__ads.htm#ref_623_20">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> + <b>is</b> + <b>use</b> I_Array; + + <b>function</b> C_Mitems (<span class="symbol"><A NAME="ref_808_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> Pointer; + <b>pragma</b> Import (C, C_Mitems, "menu_items"); + + P : Pointer := C_Mitems (<A HREF="terminal_interface-curses-menus__ads.htm#ref_622_20">Men</A>); + <b>begin</b> + <b>if</b> P = <b>null</b> <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_623_20">Index</A> &gt; <A HREF="terminal_interface-curses-menus__ads.htm#ref_628_13">Item_Count</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_622_20">Men</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_112_4">Menu_Exception</A>; + <b>else</b> + P := P + ptrdiff_t (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_623_20">Index</A>) - 1); + <b>return</b> P.<b>all</b>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_622_13">Items</A>; + +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_822_13" HREF="terminal_interface-curses-menus__ads.htm#ref_637_13">Create</A></span> (<span class="symbol"><A NAME="ref_822_21" HREF="terminal_interface-curses-menus__ads.htm#ref_637_21">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_824_16">Newmenu</A></span> (<span class="symbol"><A NAME="ref_824_25" HREF="terminal_interface-curses-menus__adb.htm#ref_824_16">Items</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <b>pragma</b> Import (C, Newmenu, "new_menu"); + + <span class="symbol"><A NAME="ref_827_7">M</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-menus__ads.htm#ref_637_21">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_637_21">Items</A>'Last) = <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A>); + <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_637_21">Items</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_637_21">Items</A>'Last) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_112_4">Menu_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-menus__adb.htm#ref_827_7">M</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_824_16">Newmenu</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_637_21">Items</A>.<b>all</b>'Address); + <b>if</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_827_7">M</A> = <A HREF="terminal_interface-curses-menus__ads.htm#ref_59_4">Null_Menu</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_112_4">Menu_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_827_7">M</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_637_13">Create</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_841_14" HREF="terminal_interface-curses-menus__ads.htm#ref_644_14">Delete</A></span> (<span class="symbol"><A NAME="ref_841_22" HREF="terminal_interface-curses-menus__ads.htm#ref_644_22">Men</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_843_16">Free</A></span> (<span class="symbol"><A NAME="ref_843_22" HREF="terminal_interface-curses-menus__adb.htm#ref_843_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Free, "free_menu"); + + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_843_16">Free</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_644_22">Men</A>)); + <A HREF="terminal_interface-curses-menus__ads.htm#ref_644_22">Men</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_59_4">Null_Menu</A>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_644_14">Delete</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_852_13" HREF="terminal_interface-curses-menus__ads.htm#ref_659_13">Driver</A></span> (<span class="symbol"><A NAME="ref_852_21" HREF="terminal_interface-curses-menus__ads.htm#ref_659_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_853_21" HREF="terminal_interface-curses-menus__ads.htm#ref_660_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_653_9">Driver_Result</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_855_16">Driver</A></span> (<span class="symbol"><A NAME="ref_855_24" HREF="terminal_interface-curses-menus__adb.htm#ref_855_16">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_856_24" HREF="terminal_interface-curses-menus__adb.htm#ref_855_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A>; + <b>pragma</b> Import (C, Driver, "menu_driver"); + + <span class="symbol"><A NAME="ref_859_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_70_9">Eti_Error</A> := <A HREF="terminal_interface-curses-menus__adb.htm#ref_855_16">Driver</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_659_21">Men</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_660_21">Key</A>)); + <b>begin</b> + <b>case</b> <A HREF="terminal_interface-curses-menus__adb.htm#ref_859_7">R</A> <b>is</b> + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_77_7">E_Unknown_Command</A> =&gt; + <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_655_27">Unknown_Request</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_76_7">E_No_Match</A> =&gt; + <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_656_27">No_Match</A>; + <b>when</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_73_7">E_Request_Denied</A> | <A HREF="terminal_interface-curses-aux__ads.htm#ref_75_7">E_Not_Selectable</A> =&gt; + <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_654_27">Request_Denied</A>; + <b>when</b> <b>others</b> =&gt; + <A HREF="terminal_interface-curses-aux__ads.htm#ref_87_14">Eti_Exception</A> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_859_7">R</A>); + <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_653_27">Menu_Ok</A>; + <b>end</b> <b>case</b>; + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_659_13">Driver</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_874_14" HREF="terminal_interface-curses-menus__ads.htm#ref_179_14">Free</A></span> (<span class="symbol"><A NAME="ref_874_20" HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">IA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>; + <span class="symbol"><A NAME="ref_875_20" HREF="terminal_interface-curses-menus__ads.htm#ref_180_20">Free_Items</A></span> : Boolean := False) + <b>is</b> + <b>procedure</b> Release <b>is</b> <b>new</b> Ada.Unchecked_Deallocation + (Item_Array, <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">IA</A> /= <b>null</b> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_180_20">Free_Items</A> <b>then</b> + <b>for</b> <span class="symbol"><A NAME="ref_881_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">IA</A>'First .. (<A HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">IA</A>'Last - 1) <b>loop</b> + <b>if</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">IA</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_881_14">I</A>) /= <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A> <b>then</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_202_14">Delete</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">IA</A>.<b>all</b> (<A HREF="terminal_interface-curses-menus__adb.htm#ref_881_14">I</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <b>loop</b>; + <b>end</b> <b>if</b>; + Release (<A HREF="terminal_interface-curses-menus__ads.htm#ref_179_20">IA</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_179_14">Free</A>; + +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_891_13" HREF="terminal_interface-curses-menus__ads.htm#ref_146_13">Default_Menu_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_351_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_59_4">Null_Menu</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_146_13">Default_Menu_Options</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_897_13" HREF="terminal_interface-curses-menus__ads.htm#ref_167_13">Default_Item_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_255_13">Get_Options</A> (<A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A>); + <b>end</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_167_13">Default_Item_Options</A>; +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus__ads.htm new file mode 100644 index 0000000..22ae63c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-menus__ads.htm @@ -0,0 +1,692 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-menus.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-menus.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Menu --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.32 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System; +<b>with</b> Ada.Characters.Latin_1; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_46_35" HREF="terminal_interface-curses-menus__adb.htm#ref_50_40">Menus</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>); + <b>pragma</b> Linker_Options ("-lmenu" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>); + + Space : Character <b>renames</b> Ada.Characters.Latin_1.Space; + + <b>type</b> <span class="symbol"><A NAME="ref_52_9">Item</A></span> <b>is</b> <b>private</b>; + <b>type</b> <span class="symbol"><A NAME="ref_53_9">Menu</A></span> <b>is</b> <b>private</b>; + + <span class="comment"><EM>---------------------------</EM></span> + <span class="comment"><EM>-- Interface constants --</EM></span> + <span class="comment"><EM>---------------------------</EM></span> + <span class="symbol"><A NAME="ref_58_4">Null_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_59_4">Null_Menu</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + + <b>subtype</b> <span class="symbol"><A NAME="ref_61_12">Menu_Request_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A> + <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 1) .. (<A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 17); + + <span class="comment"><EM>-- The prefix M_ stands for "Menu Request"</EM></span> + <span class="symbol"><A NAME="ref_65_4">M_Left_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 1; + <span class="symbol"><A NAME="ref_66_4">M_Right_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 2; + <span class="symbol"><A NAME="ref_67_4">M_Up_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 3; + <span class="symbol"><A NAME="ref_68_4">M_Down_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 4; + <span class="symbol"><A NAME="ref_69_4">M_ScrollUp_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 5; + <span class="symbol"><A NAME="ref_70_4">M_ScrollDown_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 6; + <span class="symbol"><A NAME="ref_71_4">M_ScrollDown_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 7; + <span class="symbol"><A NAME="ref_72_4">M_ScrollUp_Page</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 8; + <span class="symbol"><A NAME="ref_73_4">M_First_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 9; + <span class="symbol"><A NAME="ref_74_4">M_Last_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 10; + <span class="symbol"><A NAME="ref_75_4">M_Next_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 11; + <span class="symbol"><A NAME="ref_76_4">M_Previous_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 12; + <span class="symbol"><A NAME="ref_77_4">M_Toggle_Item</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 13; + <span class="symbol"><A NAME="ref_78_4">M_Clear_Pattern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 14; + <span class="symbol"><A NAME="ref_79_4">M_Back_Pattern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 15; + <span class="symbol"><A NAME="ref_80_4">M_Next_Match</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 16; + <span class="symbol"><A NAME="ref_81_4">M_Previous_Match</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 17; + + <span class="comment"><EM>-- For those who like the old 'C' names for the request codes</EM></span> + REQ_LEFT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_65_4">M_Left_Item</A>; + REQ_RIGHT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_66_4">M_Right_Item</A>; + REQ_UP_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_67_4">M_Up_Item</A>; + REQ_DOWN_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_68_4">M_Down_Item</A>; + REQ_SCR_ULINE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_69_4">M_ScrollUp_Line</A>; + REQ_SCR_DLINE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_70_4">M_ScrollDown_Line</A>; + REQ_SCR_DPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_71_4">M_ScrollDown_Page</A>; + REQ_SCR_UPAGE : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_72_4">M_ScrollUp_Page</A>; + REQ_FIRST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_73_4">M_First_Item</A>; + REQ_LAST_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_74_4">M_Last_Item</A>; + REQ_NEXT_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_75_4">M_Next_Item</A>; + REQ_PREV_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_76_4">M_Previous_Item</A>; + REQ_TOGGLE_ITEM : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_77_4">M_Toggle_Item</A>; + REQ_CLEAR_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_78_4">M_Clear_Pattern</A>; + REQ_BACK_PATTERN : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_79_4">M_Back_Pattern</A>; + REQ_NEXT_MATCH : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_80_4">M_Next_Match</A>; + REQ_PREV_MATCH : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_81_4">M_Previous_Match</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_102_14" HREF="terminal_interface-curses-menus__adb.htm#ref_59_14">Request_Name</A></span> (<span class="symbol"><A NAME="ref_102_28" HREF="terminal_interface-curses-menus__adb.htm#ref_59_28">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A>; + <span class="symbol"><A NAME="ref_103_28" HREF="terminal_interface-curses-menus__adb.htm#ref_60_28">Name</A></span> : <b>out</b> String); + + <b>function</b> <span class="symbol"><A NAME="ref_105_14" HREF="terminal_interface-curses-menus__adb.htm#ref_68_13">Request_Name</A></span> (<span class="symbol"><A NAME="ref_105_28" HREF="terminal_interface-curses-menus__adb.htm#ref_68_27">Key</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_61_12">Menu_Request_Code</A>) <b>return</b> String; + <span class="comment"><EM>-- Same as function</EM></span> + + <span class="comment"><EM>------------------</EM></span> + <span class="comment"><EM>-- Exceptions --</EM></span> + <span class="comment"><EM>------------------</EM></span> + + <span class="symbol"><A NAME="ref_112_4">Menu_Exception</A></span> : <b>exception</b>; + <span class="comment"><EM>--</EM></span> + <span class="comment"><EM>-- Menu options</EM></span> + <span class="comment"><EM>--</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_116_9">Menu_Option_Set</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_118_10">One_Valued</A></span> : Boolean; + <span class="symbol"><A NAME="ref_119_10">Show_Descriptions</A></span> : Boolean; + <span class="symbol"><A NAME="ref_120_10">Row_Major_Order</A></span> : Boolean; + <span class="symbol"><A NAME="ref_121_10">Ignore_Case</A></span> : Boolean; + <span class="symbol"><A NAME="ref_122_10">Show_Matches</A></span> : Boolean; + <span class="symbol"><A NAME="ref_123_10">Non_Cyclic</A></span> : Boolean; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>); + + <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_118_10">One_Valued</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_257_4">O_ONEVALUE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_258_4">O_ONEVALUE_Last</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_119_10">Show_Descriptions</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_259_4">O_SHOWDESC_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_260_4">O_SHOWDESC_Last</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_120_10">Row_Major_Order</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_261_4">O_ROWMAJOR_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_262_4">O_ROWMAJOR_Last</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_121_10">Ignore_Case</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_263_4">O_IGNORECASE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_264_4">O_IGNORECASE_Last</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_122_10">Show_Matches</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_265_4">O_SHOWMATCH_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_266_4">O_SHOWMATCH_Last</A>; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_123_10">Non_Cyclic</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_267_4">O_NONCYCLIC_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_268_4">O_NONCYCLIC_Last</A>; + <b>end</b> <b>record</b>; + <b>pragma</b> Warnings (Off); + <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_269_4">Menu_Options_Size</A>; + <b>pragma</b> Warnings (On); + + <b>function</b> <span class="symbol"><A NAME="ref_146_13" HREF="terminal_interface-curses-menus__adb.htm#ref_891_13">Default_Menu_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>; + <span class="comment"><EM>-- Initial default options for a menu.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_146_13">Default_Menu_Options</A>); + <span class="comment"><EM>--</EM></span> + <span class="comment"><EM>-- Item options</EM></span> + <span class="comment"><EM>--</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_152_9">Item_Option_Set</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_154_10">Selectable</A></span> : Boolean; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>); + + <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses-menus__ads.htm#ref_154_10">Selectable</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_273_4">O_SELECTABLE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_274_4">O_SELECTABLE_Last</A>; + <b>end</b> <b>record</b>; + <b>pragma</b> Warnings (Off); + <b>for</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_275_4">Item_Options_Size</A>; + <b>pragma</b> Warnings (On); + + <b>function</b> <span class="symbol"><A NAME="ref_167_13" HREF="terminal_interface-curses-menus__adb.htm#ref_897_13">Default_Item_Options</A></span> <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>; + <span class="comment"><EM>-- Initial default options for an item.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_167_13">Default_Item_Options</A>); + + <span class="comment"><EM>--</EM></span> + <span class="comment"><EM>-- Item Array</EM></span> + <span class="comment"><EM>--</EM></span> + <b>type</b> Item_Array <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <b>pragma</b> Convention (C, Item_Array); + + <b>type</b> <span class="symbol"><A NAME="ref_177_9">Item_Array_Access</A></span> <b>is</b> <b>access</b> Item_Array; + + <b>procedure</b> <span class="symbol"><A NAME="ref_179_14" HREF="terminal_interface-curses-menus__adb.htm#ref_874_14">Free</A></span> (<span class="symbol"><A NAME="ref_179_20" HREF="terminal_interface-curses-menus__adb.htm#ref_874_20">IA</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>; + <span class="symbol"><A NAME="ref_180_20" HREF="terminal_interface-curses-menus__adb.htm#ref_875_20">Free_Items</A></span> : Boolean := False); + <span class="comment"><EM>-- Release the memory for an allocated item array</EM></span> + <span class="comment"><EM>-- If Free_Items is True, call Delete() for all the items in</EM></span> + <span class="comment"><EM>-- the array.</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/mitem_new.3x.html">mitem_new.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_190_13" HREF="terminal_interface-curses-menus__adb.htm#ref_76_13">Create</A></span> (<span class="symbol"><A NAME="ref_190_21" HREF="terminal_interface-curses-menus__adb.htm#ref_76_21">Name</A></span> : String; + <span class="symbol"><A NAME="ref_191_21" HREF="terminal_interface-curses-menus__adb.htm#ref_77_21">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></span> + <span class="comment"><EM>-- Not inlined.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>function</b> New_Item (<span class="symbol"><A NAME="ref_196_23">Name</A></span> : String; + <span class="symbol"><A NAME="ref_197_23">Description</A></span> : String := "") <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> + <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_190_13">Create</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">new_item()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_202_14" HREF="terminal_interface-curses-menus__adb.htm#ref_106_14">Delete</A></span> (<span class="symbol"><A NAME="ref_202_22" HREF="terminal_interface-curses-menus__adb.htm#ref_106_22">Itm</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_new.3x.html">free_item()</A></EM></span> + <span class="comment"><EM>-- Resets Itm to Null_Item</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/mitem_value.3x.html">mitem_value.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_211_14" HREF="terminal_interface-curses-menus__adb.htm#ref_130_14">Set_Value</A></span> (<span class="symbol"><A NAME="ref_211_25" HREF="terminal_interface-curses-menus__adb.htm#ref_130_25">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_212_25" HREF="terminal_interface-curses-menus__adb.htm#ref_131_25">Value</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">set_item_value()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_211_14">Set_Value</A>); + + <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_217_13" HREF="terminal_interface-curses-menus__adb.htm#ref_141_13">Value</A></span> (<span class="symbol"><A NAME="ref_217_20" HREF="terminal_interface-curses-menus__adb.htm#ref_141_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_value.3x.html">item_value()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_217_13">Value</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/mitem_visible.3x.html">mitem_visible.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_226_13" HREF="terminal_interface-curses-menus__adb.htm#ref_154_13">Visible</A></span> (<span class="symbol"><A NAME="ref_226_22" HREF="terminal_interface-curses-menus__adb.htm#ref_154_22">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_visible.3x.html">item_visible()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_226_13">Visible</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/mitem_opts.3x.html">mitem_opts.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_235_14" HREF="terminal_interface-curses-menus__adb.htm#ref_166_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_235_27" HREF="terminal_interface-curses-menus__adb.htm#ref_166_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_236_27" HREF="terminal_interface-curses-menus__adb.htm#ref_167_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">set_item_opts()</A></EM></span> + <span class="comment"><EM>-- An overloaded Set_Options is defined later. Pragma Inline appears there</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_241_14" HREF="terminal_interface-curses-menus__adb.htm#ref_177_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_241_30" HREF="terminal_interface-curses-menus__adb.htm#ref_177_30">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_242_30" HREF="terminal_interface-curses-menus__adb.htm#ref_178_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>; + <span class="symbol"><A NAME="ref_243_30" HREF="terminal_interface-curses-menus__adb.htm#ref_179_30">On</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts_on()</A></EM></span> + <span class="comment"><EM>-- AKA: item_opts_off()</EM></span> + <span class="comment"><EM>-- An overloaded Switch_Options is defined later.</EM></span> + <span class="comment"><EM>-- Pragma Inline appears there</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_250_14" HREF="terminal_interface-curses-menus__adb.htm#ref_196_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_250_27" HREF="terminal_interface-curses-menus__adb.htm#ref_196_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_251_27" HREF="terminal_interface-curses-menus__adb.htm#ref_197_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_255_13" HREF="terminal_interface-curses-menus__adb.htm#ref_206_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_255_26" HREF="terminal_interface-curses-menus__adb.htm#ref_206_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_152_9">Item_Option_Set</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_opts.3x.html">item_opts()</A></EM></span> + <span class="comment"><EM>-- An overloaded Get_Options is defined later. Pragma Inline appears there</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/mitem_name.3x.html">mitem_name.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_264_14" HREF="terminal_interface-curses-menus__adb.htm#ref_214_14">Name</A></span> (<span class="symbol"><A NAME="ref_264_20" HREF="terminal_interface-curses-menus__adb.htm#ref_214_20">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_265_20" HREF="terminal_interface-curses-menus__adb.htm#ref_215_20">Name</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_267_14" HREF="terminal_interface-curses-menus__adb.htm#ref_223_13">Name</A></span> (<span class="symbol"><A NAME="ref_267_20" HREF="terminal_interface-curses-menus__adb.htm#ref_223_19">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_name()</A></EM></span> + <span class="comment"><EM>-- Implemented as function</EM></span> + <b>pragma</b> Inline (Name); + + <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_273_14" HREF="terminal_interface-curses-menus__adb.htm#ref_231_14">Description</A></span> (<span class="symbol"><A NAME="ref_273_27" HREF="terminal_interface-curses-menus__adb.htm#ref_231_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="symbol"><A NAME="ref_274_27" HREF="terminal_interface-curses-menus__adb.htm#ref_232_27">Description</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_277_14" HREF="terminal_interface-curses-menus__adb.htm#ref_240_13">Description</A></span> (<span class="symbol"><A NAME="ref_277_27" HREF="terminal_interface-curses-menus__adb.htm#ref_240_26">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_name.3x.html">item_description();</A></EM></span> + <span class="comment"><EM>-- Implemented as function</EM></span> + <b>pragma</b> Inline (Description); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/mitem_current.3x.html">mitem_current.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_287_14" HREF="terminal_interface-curses-menus__adb.htm#ref_248_14">Set_Current</A></span> (<span class="symbol"><A NAME="ref_287_27" HREF="terminal_interface-curses-menus__adb.htm#ref_248_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_288_27" HREF="terminal_interface-curses-menus__adb.htm#ref_249_27">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_current_item()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_287_14">Set_Current</A>); + + <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_293_13" HREF="terminal_interface-curses-menus__adb.htm#ref_259_13">Current</A></span> (<span class="symbol"><A NAME="ref_293_22" HREF="terminal_interface-curses-menus__adb.htm#ref_259_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">current_item()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_293_13">Current</A>); + + <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_298_14" HREF="terminal_interface-curses-menus__adb.htm#ref_272_14">Set_Top_Row</A></span> (<span class="symbol"><A NAME="ref_298_27" HREF="terminal_interface-curses-menus__adb.htm#ref_272_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_299_27" HREF="terminal_interface-curses-menus__adb.htm#ref_273_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">set_top_row()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_298_14">Set_Top_Row</A>); + + <span class="comment"><EM>-- <A NAME="AFU_16">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_304_13" HREF="terminal_interface-curses-menus__adb.htm#ref_283_13">Top_Row</A></span> (<span class="symbol"><A NAME="ref_304_22" HREF="terminal_interface-curses-menus__adb.htm#ref_283_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">top_row()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_304_13">Top_Row</A>); + + <span class="comment"><EM>-- <A NAME="AFU_17">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_309_13" HREF="terminal_interface-curses-menus__adb.htm#ref_296_13">Get_Index</A></span> (<span class="symbol"><A NAME="ref_309_24" HREF="terminal_interface-curses-menus__adb.htm#ref_296_24">Itm</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>) <b>return</b> Positive; + <span class="comment"><EM>-- AKA: <A HREF="../man/mitem_current.3x.html">item_index()</A></EM></span> + <span class="comment"><EM>-- Please note that in this binding we start the numbering of items</EM></span> + <span class="comment"><EM>-- with 1. So this is number is one more than you get from the low</EM></span> + <span class="comment"><EM>-- level call.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_309_13">Get_Index</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_post.3x.html">menu_post.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_18">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_321_14" HREF="terminal_interface-curses-menus__adb.htm#ref_309_14">Post</A></span> (<span class="symbol"><A NAME="ref_321_20" HREF="terminal_interface-curses-menus__adb.htm#ref_309_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_322_20" HREF="terminal_interface-curses-menus__adb.htm#ref_310_20">Post</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_post.3x.html">post_menu()</A></EM></span> + <span class="comment"><EM>-- AKA: unpost_menu()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_321_14">Post</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_opts.3x.html">menu_opts.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_19">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_332_14" HREF="terminal_interface-curses-menus__adb.htm#ref_325_14">Set_Options</A></span> (<span class="symbol"><A NAME="ref_332_27" HREF="terminal_interface-curses-menus__adb.htm#ref_325_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_333_27" HREF="terminal_interface-curses-menus__adb.htm#ref_326_27">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">set_menu_opts()</A></EM></span> + <b>pragma</b> Inline (Set_Options); + + <span class="comment"><EM>-- <A NAME="AFU_20">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_338_14" HREF="terminal_interface-curses-menus__adb.htm#ref_336_14">Switch_Options</A></span> (<span class="symbol"><A NAME="ref_338_30" HREF="terminal_interface-curses-menus__adb.htm#ref_336_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_339_30" HREF="terminal_interface-curses-menus__adb.htm#ref_337_30">Options</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>; + <span class="symbol"><A NAME="ref_340_30" HREF="terminal_interface-curses-menus__adb.htm#ref_338_30">On</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts_on()</A></EM></span> + <span class="comment"><EM>-- AKA: menu_opts_off()</EM></span> + <b>pragma</b> Inline (Switch_Options); + + <span class="comment"><EM>-- <A NAME="AFU_21">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_346_14" HREF="terminal_interface-curses-menus__adb.htm#ref_355_14">Get_Options</A></span> (<span class="symbol"><A NAME="ref_346_27" HREF="terminal_interface-curses-menus__adb.htm#ref_355_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_347_27" HREF="terminal_interface-curses-menus__adb.htm#ref_356_27">Options</A></span> : <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_22">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_351_13" HREF="terminal_interface-curses-menus__adb.htm#ref_365_13">Get_Options</A></span> (<span class="symbol"><A NAME="ref_351_26" HREF="terminal_interface-curses-menus__adb.htm#ref_365_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A> := <A HREF="terminal_interface-curses-menus__ads.htm#ref_59_4">Null_Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_116_9">Menu_Option_Set</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_opts.3x.html">menu_opts()</A></EM></span> + <b>pragma</b> Inline (Get_Options); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_win.3x.html">menu_win.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_23">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_360_14" HREF="terminal_interface-curses-menus__adb.htm#ref_373_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_360_26" HREF="terminal_interface-curses-menus__adb.htm#ref_373_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_361_26" HREF="terminal_interface-curses-menus__adb.htm#ref_374_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_win()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_360_14">Set_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_24">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_366_13" HREF="terminal_interface-curses-menus__adb.htm#ref_384_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_366_25" HREF="terminal_interface-curses-menus__adb.htm#ref_384_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_win()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_366_13">Get_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_25">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_371_14" HREF="terminal_interface-curses-menus__adb.htm#ref_394_14">Set_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_371_30" HREF="terminal_interface-curses-menus__adb.htm#ref_394_30">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_372_30" HREF="terminal_interface-curses-menus__adb.htm#ref_395_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">set_menu_sub()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_371_14">Set_Sub_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_26">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_377_13" HREF="terminal_interface-curses-menus__adb.htm#ref_405_13">Get_Sub_Window</A></span> (<span class="symbol"><A NAME="ref_377_29" HREF="terminal_interface-curses-menus__adb.htm#ref_405_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">menu_sub()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_377_13">Get_Sub_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_27">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_382_14" HREF="terminal_interface-curses-menus__adb.htm#ref_415_14">Scale</A></span> (<span class="symbol"><A NAME="ref_382_21" HREF="terminal_interface-curses-menus__adb.htm#ref_415_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_383_21" HREF="terminal_interface-curses-menus__adb.htm#ref_416_21">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_384_21" HREF="terminal_interface-curses-menus__adb.htm#ref_417_21">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_win.3x.html">scale_menu()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_382_14">Scale</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_cursor.3x.html">menu_cursor.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_28">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_393_14" HREF="terminal_interface-curses-menus__adb.htm#ref_431_14">Position_Cursor</A></span> (<span class="symbol"><A NAME="ref_393_31" HREF="terminal_interface-curses-menus__adb.htm#ref_431_31">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_cursor.3x.html">pos_menu_cursor()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_393_14">Position_Cursor</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_mark.3x.html">menu_mark.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_29">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_402_14" HREF="terminal_interface-curses-menus__adb.htm#ref_441_14">Set_Mark</A></span> (<span class="symbol"><A NAME="ref_402_24" HREF="terminal_interface-curses-menus__adb.htm#ref_441_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_403_24" HREF="terminal_interface-curses-menus__adb.htm#ref_442_24">Mark</A></span> : String); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">set_menu_mark()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_402_14">Set_Mark</A>); + + <span class="comment"><EM>-- <A NAME="AFU_30">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_408_14" HREF="terminal_interface-curses-menus__adb.htm#ref_456_14">Mark</A></span> (<span class="symbol"><A NAME="ref_408_20" HREF="terminal_interface-curses-menus__adb.htm#ref_456_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_409_20" HREF="terminal_interface-curses-menus__adb.htm#ref_457_20">Mark</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_412_14" HREF="terminal_interface-curses-menus__adb.htm#ref_465_13">Mark</A></span> (<span class="symbol"><A NAME="ref_412_20" HREF="terminal_interface-curses-menus__adb.htm#ref_465_19">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_mark.3x.html">menu_mark()</A></EM></span> + <span class="comment"><EM>-- Implemented as function</EM></span> + <b>pragma</b> Inline (Mark); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_attributes.3x.html">menu_attributes.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_31">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_422_14" HREF="terminal_interface-curses-menus__adb.htm#ref_474_14">Set_Foreground</A></span> + (<span class="symbol"><A NAME="ref_423_7" HREF="terminal_interface-curses-menus__adb.htm#ref_475_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_424_7" HREF="terminal_interface-curses-menus__adb.htm#ref_476_7">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_425_7" HREF="terminal_interface-curses-menus__adb.htm#ref_477_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_fore()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_422_14">Set_Foreground</A>); + + <span class="comment"><EM>-- <A NAME="AFU_32">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_430_14" HREF="terminal_interface-curses-menus__adb.htm#ref_490_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_430_26" HREF="terminal_interface-curses-menus__adb.htm#ref_490_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_431_26" HREF="terminal_interface-curses-menus__adb.htm#ref_491_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_fore()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_33">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_435_14" HREF="terminal_interface-curses-menus__adb.htm#ref_499_14">Foreground</A></span> (<span class="symbol"><A NAME="ref_435_26" HREF="terminal_interface-curses-menus__adb.htm#ref_499_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_436_26" HREF="terminal_interface-curses-menus__adb.htm#ref_500_26">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_437_26" HREF="terminal_interface-curses-menus__adb.htm#ref_501_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_fore()</A></EM></span> + <b>pragma</b> Inline (Foreground); + + <span class="comment"><EM>-- <A NAME="AFU_34">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_442_14" HREF="terminal_interface-curses-menus__adb.htm#ref_510_14">Set_Background</A></span> + (<span class="symbol"><A NAME="ref_443_7" HREF="terminal_interface-curses-menus__adb.htm#ref_511_7">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_444_7" HREF="terminal_interface-curses-menus__adb.htm#ref_512_7">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_445_7" HREF="terminal_interface-curses-menus__adb.htm#ref_513_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_back()</A></EM></span> + <b>pragma</b> Inline (Set_Background); + + <span class="comment"><EM>-- <A NAME="AFU_35">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_450_14" HREF="terminal_interface-curses-menus__adb.htm#ref_526_14">Background</A></span> (<span class="symbol"><A NAME="ref_450_26" HREF="terminal_interface-curses-menus__adb.htm#ref_526_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_451_26" HREF="terminal_interface-curses-menus__adb.htm#ref_527_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_back()</A></EM></span> + <span class="comment"><EM>-- <A NAME="AFU_36">|</A></EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_455_14" HREF="terminal_interface-curses-menus__adb.htm#ref_535_14">Background</A></span> (<span class="symbol"><A NAME="ref_455_26" HREF="terminal_interface-curses-menus__adb.htm#ref_535_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_456_26" HREF="terminal_interface-curses-menus__adb.htm#ref_536_26">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_457_26" HREF="terminal_interface-curses-menus__adb.htm#ref_537_26">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_back()</A></EM></span> + <b>pragma</b> Inline (Background); + + <span class="comment"><EM>-- <A NAME="AFU_37">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_462_14" HREF="terminal_interface-curses-menus__adb.htm#ref_546_14">Set_Grey</A></span> + (<span class="symbol"><A NAME="ref_463_7" HREF="terminal_interface-curses-menus__adb.htm#ref_546_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_464_7" HREF="terminal_interface-curses-menus__adb.htm#ref_547_24">Grey</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_465_7" HREF="terminal_interface-curses-menus__adb.htm#ref_548_24">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_grey()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_462_14">Set_Grey</A>); + + <span class="comment"><EM>-- <A NAME="AFU_38">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_470_14" HREF="terminal_interface-curses-menus__adb.htm#ref_562_14">Grey</A></span> (<span class="symbol"><A NAME="ref_470_20" HREF="terminal_interface-curses-menus__adb.htm#ref_562_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_471_20" HREF="terminal_interface-curses-menus__adb.htm#ref_563_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_grey()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_39">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_475_14" HREF="terminal_interface-curses-menus__adb.htm#ref_571_14">Grey</A></span> + (<span class="symbol"><A NAME="ref_476_7" HREF="terminal_interface-curses-menus__adb.htm#ref_571_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_477_7" HREF="terminal_interface-curses-menus__adb.htm#ref_572_20">Grey</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_478_7" HREF="terminal_interface-curses-menus__adb.htm#ref_573_20">Color</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_grey()</A></EM></span> + <b>pragma</b> Inline (Grey); + + <span class="comment"><EM>-- <A NAME="AFU_40">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_483_14" HREF="terminal_interface-curses-menus__adb.htm#ref_582_14">Set_Pad_Character</A></span> (<span class="symbol"><A NAME="ref_483_33" HREF="terminal_interface-curses-menus__adb.htm#ref_582_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_484_33" HREF="terminal_interface-curses-menus__adb.htm#ref_583_33">Pad</A></span> : Character := Space); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">set_menu_pad()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_483_14">Set_Pad_Character</A>); + + <span class="comment"><EM>-- <A NAME="AFU_41">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_489_14" HREF="terminal_interface-curses-menus__adb.htm#ref_593_14">Pad_Character</A></span> (<span class="symbol"><A NAME="ref_489_29" HREF="terminal_interface-curses-menus__adb.htm#ref_593_29">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_490_29" HREF="terminal_interface-curses-menus__adb.htm#ref_594_29">Pad</A></span> : <b>out</b> Character); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_attributes.3x.html">menu_pad()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_489_14">Pad_Character</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_spacing.3x.html">menu_spacing.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_42">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_499_14" HREF="terminal_interface-curses-menus__adb.htm#ref_602_14">Set_Spacing</A></span> (<span class="symbol"><A NAME="ref_499_27" HREF="terminal_interface-curses-menus__adb.htm#ref_602_27">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_500_27" HREF="terminal_interface-curses-menus__adb.htm#ref_603_27">Descr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> := 0; + <span class="symbol"><A NAME="ref_501_27" HREF="terminal_interface-curses-menus__adb.htm#ref_604_27">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> := 0; + <span class="symbol"><A NAME="ref_502_27" HREF="terminal_interface-curses-menus__adb.htm#ref_605_27">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> := 0); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">set_menu_spacing()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_499_14">Set_Spacing</A>); + + <span class="comment"><EM>-- <A NAME="AFU_43">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_507_14" HREF="terminal_interface-curses-menus__adb.htm#ref_618_14">Spacing</A></span> (<span class="symbol"><A NAME="ref_507_23" HREF="terminal_interface-curses-menus__adb.htm#ref_618_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_508_23" HREF="terminal_interface-curses-menus__adb.htm#ref_619_23">Descr</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_509_23" HREF="terminal_interface-curses-menus__adb.htm#ref_620_23">Row</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_510_23" HREF="terminal_interface-curses-menus__adb.htm#ref_621_23">Col</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_spacing.3x.html">menu_spacing()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_507_14">Spacing</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_pattern.3x.html">menu_pattern.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_44">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_519_13" HREF="terminal_interface-curses-menus__adb.htm#ref_639_13">Set_Pattern</A></span> (<span class="symbol"><A NAME="ref_519_26" HREF="terminal_interface-curses-menus__adb.htm#ref_639_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_520_26" HREF="terminal_interface-curses-menus__adb.htm#ref_640_26">Text</A></span> : String) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">set_menu_pattern()</A></EM></span> + <span class="comment"><EM>-- Return TRUE if the pattern matches, FALSE otherwise</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_519_13">Set_Pattern</A>); + + <span class="comment"><EM>-- <A NAME="AFU_45">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_526_14" HREF="terminal_interface-curses-menus__adb.htm#ref_662_14">Pattern</A></span> (<span class="symbol"><A NAME="ref_526_23" HREF="terminal_interface-curses-menus__adb.htm#ref_662_23">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_527_23" HREF="terminal_interface-curses-menus__adb.htm#ref_663_23">Text</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_pattern.3x.html">menu_pattern()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_526_14">Pattern</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_format.3x.html">menu_format.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_46">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_536_14" HREF="terminal_interface-curses-menus__adb.htm#ref_671_14">Set_Format</A></span> (<span class="symbol"><A NAME="ref_536_26" HREF="terminal_interface-curses-menus__adb.htm#ref_671_26">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_537_26" HREF="terminal_interface-curses-menus__adb.htm#ref_672_26">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_538_26" HREF="terminal_interface-curses-menus__adb.htm#ref_673_26">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>); + <span class="comment"><EM>-- Not implemented: 0 argument for Lines or Columns;</EM></span> + <span class="comment"><EM>-- instead use Format to get the current sizes</EM></span> + <span class="comment"><EM>-- The default format is 16 rows, 1 column. Calling</EM></span> + <span class="comment"><EM>-- set_menu_format with a null menu pointer will change this</EM></span> + <span class="comment"><EM>-- default. A zero row or column argument to set_menu_format</EM></span> + <span class="comment"><EM>-- is interpreted as a request not to change the current</EM></span> + <span class="comment"><EM>-- value.</EM></span> + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_format.3x.html">set_menu_format()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_536_14">Set_Format</A>); + + <span class="comment"><EM>-- <A NAME="AFU_47">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_550_14" HREF="terminal_interface-curses-menus__adb.htm#ref_687_14">Format</A></span> (<span class="symbol"><A NAME="ref_550_22" HREF="terminal_interface-curses-menus__adb.htm#ref_687_22">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_551_22" HREF="terminal_interface-curses-menus__adb.htm#ref_688_22">Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_552_22" HREF="terminal_interface-curses-menus__adb.htm#ref_689_22">Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_format.3x.html">menu_format()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_550_14">Format</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_hook.3x.html">menu_hook.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_560_9">Menu_Hook_Function</A></span> <b>is</b> <b>access</b> <b>procedure</b> (<span class="symbol"><A NAME="ref_560_49" HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>); + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>); + + <span class="comment"><EM>-- <A NAME="AFU_48">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_564_14" HREF="terminal_interface-curses-menus__adb.htm#ref_703_14">Set_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_564_34" HREF="terminal_interface-curses-menus__adb.htm#ref_703_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_565_34" HREF="terminal_interface-curses-menus__adb.htm#ref_704_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_init()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_564_14">Set_Item_Init_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_49">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_570_14" HREF="terminal_interface-curses-menus__adb.htm#ref_714_14">Set_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_570_34" HREF="terminal_interface-curses-menus__adb.htm#ref_714_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_571_34" HREF="terminal_interface-curses-menus__adb.htm#ref_715_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_item_term()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_570_14">Set_Item_Term_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_50">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_576_14" HREF="terminal_interface-curses-menus__adb.htm#ref_725_14">Set_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_576_34" HREF="terminal_interface-curses-menus__adb.htm#ref_725_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_577_34" HREF="terminal_interface-curses-menus__adb.htm#ref_726_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_init()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_576_14">Set_Menu_Init_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_51">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_582_14" HREF="terminal_interface-curses-menus__adb.htm#ref_736_14">Set_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_582_34" HREF="terminal_interface-curses-menus__adb.htm#ref_736_34">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_583_34" HREF="terminal_interface-curses-menus__adb.htm#ref_737_34">Proc</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">set_menu_term()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_582_14">Set_Menu_Term_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_52">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_588_13" HREF="terminal_interface-curses-menus__adb.htm#ref_747_13">Get_Item_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_588_33" HREF="terminal_interface-curses-menus__adb.htm#ref_747_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_init()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_588_13">Get_Item_Init_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_53">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_593_13" HREF="terminal_interface-curses-menus__adb.htm#ref_755_13">Get_Item_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_593_33" HREF="terminal_interface-curses-menus__adb.htm#ref_755_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">item_term()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_593_13">Get_Item_Term_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_54">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_598_13" HREF="terminal_interface-curses-menus__adb.htm#ref_763_13">Get_Menu_Init_Hook</A></span> (<span class="symbol"><A NAME="ref_598_33" HREF="terminal_interface-curses-menus__adb.htm#ref_763_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_init()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_598_13">Get_Menu_Init_Hook</A>); + + <span class="comment"><EM>-- <A NAME="AFU_55">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_603_13" HREF="terminal_interface-curses-menus__adb.htm#ref_771_13">Get_Menu_Term_Hook</A></span> (<span class="symbol"><A NAME="ref_603_33" HREF="terminal_interface-curses-menus__adb.htm#ref_771_33">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_560_9">Menu_Hook_Function</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_hook.3x.html">menu_term()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_603_13">Get_Menu_Term_Hook</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_items.3x.html">menu_items.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_56">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_612_14" HREF="terminal_interface-curses-menus__adb.htm#ref_779_14">Redefine</A></span> (<span class="symbol"><A NAME="ref_612_24" HREF="terminal_interface-curses-menus__adb.htm#ref_779_24">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_613_24" HREF="terminal_interface-curses-menus__adb.htm#ref_780_24">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_items.3x.html">set_menu_items()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_612_14">Redefine</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_617_14">Set_Items</A></span> (<span class="symbol"><A NAME="ref_617_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_618_25">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>) <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_612_14">Redefine</A>; + <span class="comment"><EM>-- pragma Inline (Set_Items);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_57">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_622_13" HREF="terminal_interface-curses-menus__adb.htm#ref_803_13">Items</A></span> (<span class="symbol"><A NAME="ref_622_20" HREF="terminal_interface-curses-menus__adb.htm#ref_803_20">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_623_20" HREF="terminal_interface-curses-menus__adb.htm#ref_804_20">Index</A></span> : Positive) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_items.3x.html">menu_items()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_622_13">Items</A>); + + <span class="comment"><EM>-- <A NAME="AFU_58">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_628_13" HREF="terminal_interface-curses-menus__adb.htm#ref_795_13">Item_Count</A></span> (<span class="symbol"><A NAME="ref_628_25" HREF="terminal_interface-curses-menus__adb.htm#ref_795_25">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>) <b>return</b> Natural; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_items.3x.html">item_count()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-menus__ads.htm#ref_628_13">Item_Count</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_new.3x.html">menu_new.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_59">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_637_13" HREF="terminal_interface-curses-menus__adb.htm#ref_822_13">Create</A></span> (<span class="symbol"><A NAME="ref_637_21" HREF="terminal_interface-curses-menus__adb.htm#ref_822_21">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_new.3x.html">new_menu()</A></EM></span> + <span class="comment"><EM>-- Not inlined</EM></span> + + <b>function</b> New_Menu (<span class="symbol"><A NAME="ref_641_23">Items</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_177_9">Item_Array_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A> <b>renames</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_637_13">Create</A>; + + <span class="comment"><EM>-- <A NAME="AFU_60">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_644_14" HREF="terminal_interface-curses-menus__adb.htm#ref_841_14">Delete</A></span> (<span class="symbol"><A NAME="ref_644_22" HREF="terminal_interface-curses-menus__adb.htm#ref_841_22">Men</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_new.3x.html">free_menu()</A></EM></span> + <span class="comment"><EM>-- Reset Men to Null_Menu</EM></span> + <span class="comment"><EM>-- Not inlined</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/menu_driver.3x.html">menu_driver.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_653_9">Driver_Result</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_653_27">Menu_Ok</A></span>, + <span class="symbol"><A NAME="ref_654_27">Request_Denied</A></span>, + <span class="symbol"><A NAME="ref_655_27">Unknown_Request</A></span>, + <span class="symbol"><A NAME="ref_656_27">No_Match</A></span>); + + <span class="comment"><EM>-- <A NAME="AFU_61">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_659_13" HREF="terminal_interface-curses-menus__adb.htm#ref_852_13">Driver</A></span> (<span class="symbol"><A NAME="ref_659_21" HREF="terminal_interface-curses-menus__adb.htm#ref_852_21">Men</A></span> : <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A>; + <span class="symbol"><A NAME="ref_660_21" HREF="terminal_interface-curses-menus__adb.htm#ref_853_21">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_653_9">Driver_Result</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/menu_driver.3x.html">menu_driver()</A></EM></span> + <span class="comment"><EM>-- Driver is not inlined</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_62">|</A></EM></span> + <span class="comment"><EM>-- Not Implemented: menu_request_name, menu_request_by_name</EM></span> +<span class="comment"><EM>-------------------------------------------------------------------------------</EM></span> +<b>private</b> + <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address; + <b>type</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address; + + <A HREF="terminal_interface-curses-menus__ads.htm#ref_58_4">Null_Item</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_52_9">Item</A> := 0; + <A HREF="terminal_interface-curses-menus__ads.htm#ref_59_4">Null_Menu</A> : <b>constant</b> <A HREF="terminal_interface-curses-menus__ads.htm#ref_53_9">Menu</A> := 0; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-menus__ads.htm#ref_46_35">Menus</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-mouse__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-mouse__adb.htm new file mode 100644 index 0000000..2035f6b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-mouse__adb.htm @@ -0,0 +1,236 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-mouse.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-mouse.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Mouse --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.28 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/06/27 18:50:44 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_47_40" HREF="terminal_interface-curses-mouse__ads.htm#ref_45_35">Mouse</A></span> <b>is</b> + + <b>function</b> <span class="symbol"><A NAME="ref_49_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_91_13">Has_Mouse</A></span> <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_51_16">Mouse_Avail</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Mouse_Avail, "has_mouse"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_938_13">Has_Key</A> (<A HREF="terminal_interface-curses__ads.htm#ref_376_4">Key_Mouse</A>) <b>or</b> <b>else</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_51_16">Mouse_Avail</A> /= 0 <b>then</b> + <b>return</b> True; + <b>else</b> + <b>return</b> False; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_91_13">Has_Mouse</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_61_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_126_13">Get_Mouse</A></span> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A> + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_63_12">Event_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_65_16">Getmouse</A></span> (<span class="symbol"><A NAME="ref_65_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_65_16">Ev</A></span> : <A HREF="terminal_interface-curses-mouse__adb.htm#ref_63_12">Event_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Getmouse, "getmouse"); + + <span class="symbol"><A NAME="ref_68_7">Event</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_65_16">Getmouse</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_68_7">Event</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_68_7">Event</A>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_126_13">Get_Mouse</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_76_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_94_14">Register_Reportable_Event</A></span> (<span class="symbol"><A NAME="ref_76_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_95_7">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_77_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">State</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>; + <span class="symbol"><A NAME="ref_78_41" HREF="terminal_interface-curses-mouse__ads.htm#ref_97_7">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_80_7">Button_Nr</A></span> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_95_7">Button</A>); + <span class="symbol"><A NAME="ref_81_7">State_Nr</A></span> : <b>constant</b> Natural := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>'Pos (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">State</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_95_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_70_12">Modifier_Keys</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_96_7">State</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#ref_73_26">Pressed</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_95_7">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_69_12">Real_Buttons</A> <b>then</b> + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_97_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_97_7">Mask</A> <b>or</b> ((2 ** (6 * <A HREF="terminal_interface-curses-mouse__adb.htm#ref_80_7">Button_Nr</A>)) ** <A HREF="terminal_interface-curses-mouse__adb.htm#ref_81_7">State_Nr</A>); + <b>else</b> + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_97_7">Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_97_7">Mask</A> <b>or</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_190_4">BUTTON_CTRL</A> ** (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_80_7">Button_Nr</A> - 4)); + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_94_14">Register_Reportable_Event</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_94_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_103_14">Register_Reportable_Events</A></span> (<span class="symbol"><A NAME="ref_94_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_104_7">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_95_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_105_7">State</A></span> : Button_States; + <span class="symbol"><A NAME="ref_96_42" HREF="terminal_interface-curses-mouse__ads.htm#ref_106_7">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>) + <b>is</b> + <b>begin</b> + <b>for</b> <span class="symbol"><A NAME="ref_99_11">S</A></span> <b>in</b> Button_States'<b>Range</b> <b>loop</b> + <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_105_7">State</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_99_11">S</A>) <b>then</b> + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_94_14">Register_Reportable_Event</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_104_7">Button</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#ref_99_11">S</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_106_7">Mask</A>); + <b>end</b> <b>if</b>; + <b>end</b> <b>loop</b>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_103_14">Register_Reportable_Events</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_106_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_116_13">Start_Mouse</A></span> (<span class="symbol"><A NAME="ref_106_26" HREF="terminal_interface-curses-mouse__ads.htm#ref_116_26">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_59_4">All_Events</A>) + <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_109_16">MMask</A></span> (<span class="symbol"><A NAME="ref_109_23" HREF="terminal_interface-curses-mouse__adb.htm#ref_109_16">M</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <span class="symbol"><A NAME="ref_110_23" HREF="terminal_interface-curses-mouse__adb.htm#ref_109_16">O</A></span> : <b>access</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>) <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <b>pragma</b> Import (C, MMask, "mousemask"); + <span class="symbol"><A NAME="ref_112_7">R</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <span class="symbol"><A NAME="ref_113_7">Old</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_112_7">R</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#ref_109_16">MMask</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_116_26">Mask</A>, <A HREF="terminal_interface-curses-mouse__adb.htm#ref_113_7">Old</A>'<b>Access</b>); + <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_112_7">R</A> = <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">No_Events</A> <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1041_14">Beep</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_113_7">Old</A>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_116_13">Start_Mouse</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_122_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_121_14">End_Mouse</A></span> (<span class="symbol"><A NAME="ref_122_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_121_25">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">No_Events</A>) + <b>is</b> + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_121_25">Mask</A> /= <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">No_Events</A> <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1041_14">Beep</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_121_14">End_Mouse</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_130_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_134_14">Dispatch_Event</A></span> (<span class="symbol"><A NAME="ref_130_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_134_30">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <span class="symbol"><A NAME="ref_131_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_135_30">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_132_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_136_30">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_134_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_130_14">Dispatch_Event</A></span> (<span class="symbol"><A NAME="ref_134_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <span class="symbol"><A NAME="ref_135_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_136_30" HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>) <b>is</b> + <span class="symbol"><A NAME="ref_137_7">L</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_67_26">Alt</A>; <span class="comment"><EM>-- preset to non real button;</EM></span> + <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_193_4">BUTTON1_EVENTS</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_26">Left</A>; + <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_195_4">BUTTON2_EVENTS</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_62_26">Middle</A>; + <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_197_4">BUTTON3_EVENTS</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_63_26">Right</A>; + <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_199_4">BUTTON4_EVENTS</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_26">Button4</A>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_69_12">Real_Buttons</A> <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">State</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_26">Released</A>; <span class="comment"><EM>-- preset to non real button;</EM></span> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_137_7">L</A> := 2 ** (6 * <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>'Pos (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A>)); + <b>for</b> <span class="symbol"><A NAME="ref_152_14">I</A></span> <b>in</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>'<b>Range</b> <b>loop</b> + <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_137_7">L</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">State</A> := <A HREF="terminal_interface-curses-mouse__adb.htm#ref_152_14">I</A>; + <b>exit</b>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_137_7">L</A> := 2 * <A HREF="terminal_interface-curses-mouse__adb.htm#ref_137_7">L</A>; + <b>end</b> <b>loop</b>; + <b>else</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_132_30">State</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_73_26">Pressed</A>; + <b>if</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_190_4">BUTTON_CTRL</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_65_26">Control</A>; + <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_191_4">BUTTON_SHIFT</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_66_26">Shift</A>; + <b>elsif</b> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_30">Mask</A> <b>and</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_192_4">BUTTON_ALT</A>) /= 0 <b>then</b> + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_131_30">Button</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_67_26">Alt</A>; + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_14">Dispatch_Event</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_171_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_130_14">Get_Event</A></span> (<span class="symbol"><A NAME="ref_171_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_130_25">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>; + <span class="symbol"><A NAME="ref_172_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_131_25">Y</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_173_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_132_25">X</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_174_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_175_25" HREF="terminal_interface-curses-mouse__ads.htm#ref_134_25">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_177_7">Mask</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_130_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_170_10">Bstate</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_132_25">X</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_130_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_10">X</A>); + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_131_25">Y</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_130_25">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_13">Y</A>); + <A HREF="terminal_interface-curses-mouse__adb.htm#ref_130_14">Dispatch_Event</A> (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_177_7">Mask</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_133_25">Button</A>, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_134_25">State</A>); + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_130_14">Get_Event</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_184_14" HREF="terminal_interface-curses-mouse__ads.htm#ref_142_14">Unget_Mouse</A></span> (<span class="symbol"><A NAME="ref_184_27" HREF="terminal_interface-curses-mouse__ads.htm#ref_142_27">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_186_16">Ungetmouse</A></span> (<span class="symbol"><A NAME="ref_186_28" HREF="terminal_interface-curses-mouse__adb.htm#ref_186_16">Ev</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Ungetmouse, "ungetmouse"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_186_16">Ungetmouse</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_142_27">Event</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_142_14">Unget_Mouse</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_194_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_147_13">Enclosed_In_Window</A></span> (<span class="symbol"><A NAME="ref_194_33" HREF="terminal_interface-curses-mouse__ads.htm#ref_147_33">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_195_33" HREF="terminal_interface-curses-mouse__ads.htm#ref_148_33">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_197_16">Wenclose</A></span> (<span class="symbol"><A NAME="ref_197_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_197_40" HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">Y</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; <span class="symbol"><A NAME="ref_197_51" HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">X</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Wenclose, "wenclose"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-mouse__adb.htm#ref_197_16">Wenclose</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_147_33">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_148_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_13">Y</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_148_33">Event</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_10">X</A>)) + = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> + <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_147_13">Enclosed_In_Window</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_210_13" HREF="terminal_interface-curses-mouse__ads.htm#ref_154_13">Mouse_Interval</A></span> (<span class="symbol"><A NAME="ref_210_29" HREF="terminal_interface-curses-mouse__ads.htm#ref_154_29">Msec</A></span> : Natural := 200) <b>return</b> Natural + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_212_16">Mouseinterval</A></span> (<span class="symbol"><A NAME="ref_212_31" HREF="terminal_interface-curses-mouse__adb.htm#ref_212_16">Msec</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Mouseinterval, "mouseinterval"); + <b>begin</b> + <b>return</b> Natural (<A HREF="terminal_interface-curses-mouse__adb.htm#ref_212_16">Mouseinterval</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_154_29">Msec</A>))); + <b>end</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_154_13">Mouse_Interval</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_45_35">Mouse</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-mouse__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-mouse__ads.htm new file mode 100644 index 0000000..c4de5e5 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-mouse__ads.htm @@ -0,0 +1,223 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-mouse.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-mouse.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Mouse --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2014,2015 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.33 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_45_35" HREF="terminal_interface-curses-mouse__adb.htm#ref_47_40">Mouse</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_45_35">Mouse</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- mouse_trafo, wmouse_trafo are implemented as Transform_Coordinates</EM></span> + <span class="comment"><EM>-- in the parent package.</EM></span> + <span class="comment"><EM>--</EM></span> + <span class="comment"><EM>-- Not implemented:</EM></span> + <span class="comment"><EM>-- REPORT_MOUSE_POSITION (i.e. as a parameter to Register_Reportable_Event</EM></span> + <span class="comment"><EM>-- or Start_Mouse)</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_57_9">Event_Mask</A></span> <b>is</b> <b>private</b>; + <span class="symbol"><A NAME="ref_58_4">No_Events</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <span class="symbol"><A NAME="ref_59_4">All_Events</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_61_9">Mouse_Button</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_61_26">Left</A></span>, <span class="comment"><EM>-- aka: Button 1</EM></span> + <span class="symbol"><A NAME="ref_62_26">Middle</A></span>, <span class="comment"><EM>-- aka: Button 2</EM></span> + <span class="symbol"><A NAME="ref_63_26">Right</A></span>, <span class="comment"><EM>-- aka: Button 3</EM></span> + <span class="symbol"><A NAME="ref_64_26">Button4</A></span>, <span class="comment"><EM>-- aka: Button 4</EM></span> + <span class="symbol"><A NAME="ref_65_26">Control</A></span>, <span class="comment"><EM>-- Control Key</EM></span> + <span class="symbol"><A NAME="ref_66_26">Shift</A></span>, <span class="comment"><EM>-- Shift Key</EM></span> + <span class="symbol"><A NAME="ref_67_26">Alt</A></span>); <span class="comment"><EM>-- ALT Key</EM></span> + + <b>subtype</b> <span class="symbol"><A NAME="ref_69_12">Real_Buttons</A></span> <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_26">Left</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_64_26">Button4</A>; + <b>subtype</b> <span class="symbol"><A NAME="ref_70_12">Modifier_Keys</A></span> <b>is</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A> <b>range</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_65_26">Control</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_67_26">Alt</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_72_9">Button_State</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_72_26">Released</A></span>, + <span class="symbol"><A NAME="ref_73_26">Pressed</A></span>, + <span class="symbol"><A NAME="ref_74_26">Clicked</A></span>, + <span class="symbol"><A NAME="ref_75_26">Double_Clicked</A></span>, + <span class="symbol"><A NAME="ref_76_26">Triple_Clicked</A></span>); + + <b>type</b> Button_States <b>is</b> <b>array</b> (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>) <b>of</b> Boolean; + <b>pragma</b> Pack (Button_States); + + <span class="symbol"><A NAME="ref_81_4">All_Clicks</A></span> : <b>constant</b> Button_States := (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_74_26">Clicked</A> .. <A HREF="terminal_interface-curses-mouse__ads.htm#ref_76_26">Triple_Clicked</A> =&gt; True, + <b>others</b> =&gt; False); + <span class="symbol"><A NAME="ref_83_4">All_States</A></span> : <b>constant</b> Button_States := (<b>others</b> =&gt; True); + + <b>type</b> <span class="symbol"><A NAME="ref_85_9">Mouse_Event</A></span> <b>is</b> <b>private</b>; + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_mouse.3x.html">curs_mouse.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_91_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_49_13">Has_Mouse</A></span> <b>return</b> Boolean; + <span class="comment"><EM>-- Return true if a mouse device is supported, false otherwise.</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_94_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_76_14">Register_Reportable_Event</A></span> + (<span class="symbol"><A NAME="ref_95_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_76_41">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_96_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_77_41">State</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>; + <span class="symbol"><A NAME="ref_97_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_78_41">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>); + <span class="comment"><EM>-- Stores the event described by the button and the state in the mask.</EM></span> + <span class="comment"><EM>-- Before you call this the first time, you should initialize the mask</EM></span> + <span class="comment"><EM>-- with the Empty_Mask constant</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_94_14">Register_Reportable_Event</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_103_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_94_14">Register_Reportable_Events</A></span> + (<span class="symbol"><A NAME="ref_104_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_94_42">Button</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_105_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_95_42">State</A></span> : Button_States; + <span class="symbol"><A NAME="ref_106_7" HREF="terminal_interface-curses-mouse__adb.htm#ref_96_42">Mask</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>); + <span class="comment"><EM>-- Register all events described by the Button and the State bitmap.</EM></span> + <span class="comment"><EM>-- Before you call this the first time, you should initialize the mask</EM></span> + <span class="comment"><EM>-- with the Empty_Mask constant</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <span class="comment"><EM>-- There is one difference to mousmask(): we return the value of the</EM></span> + <span class="comment"><EM>-- old mask, that means the event mask value before this call.</EM></span> + <span class="comment"><EM>-- Not Implemented: The library version</EM></span> + <span class="comment"><EM>-- returns a Mouse_Mask that tells which events are reported.</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_116_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_106_13">Start_Mouse</A></span> (<span class="symbol"><A NAME="ref_116_26" HREF="terminal_interface-curses-mouse__adb.htm#ref_106_26">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_59_4">All_Events</A>) + <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mousemask()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_116_13">Start_Mouse</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_121_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_122_14">End_Mouse</A></span> (<span class="symbol"><A NAME="ref_121_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_122_25">Mask</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">No_Events</A>); + <span class="comment"><EM>-- Terminates the mouse, restores the specified event mask</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_121_14">End_Mouse</A>); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_126_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_61_13">Get_Mouse</A></span> <b>return</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">getmouse()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_126_13">Get_Mouse</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_130_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_171_14">Get_Event</A></span> (<span class="symbol"><A NAME="ref_130_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_171_25">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>; + <span class="symbol"><A NAME="ref_131_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_172_25">Y</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_132_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_173_25">X</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_133_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_174_25">Button</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_61_9">Mouse_Button</A>; + <span class="symbol"><A NAME="ref_134_25" HREF="terminal_interface-curses-mouse__adb.htm#ref_175_25">State</A></span> : <b>out</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_72_9">Button_State</A>); + <span class="comment"><EM>-- !!! Warning: X and Y are screen coordinates. Due to ripped of lines they</EM></span> + <span class="comment"><EM>-- may not be identical to window coordinates.</EM></span> + <span class="comment"><EM>-- Not Implemented: Get_Event only reports one event, the C library</EM></span> + <span class="comment"><EM>-- version supports multiple events, e.g. {click-1, click-3}</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_130_14">Get_Event</A>); + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_142_14" HREF="terminal_interface-curses-mouse__adb.htm#ref_184_14">Unget_Mouse</A></span> (<span class="symbol"><A NAME="ref_142_27" HREF="terminal_interface-curses-mouse__adb.htm#ref_184_27">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">ungetmouse()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_142_14">Unget_Mouse</A>); + + <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_147_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_194_13">Enclosed_In_Window</A></span> (<span class="symbol"><A NAME="ref_147_33" HREF="terminal_interface-curses-mouse__adb.htm#ref_194_33">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_148_33" HREF="terminal_interface-curses-mouse__adb.htm#ref_195_33">Event</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">wenclose()</A></EM></span> + <span class="comment"><EM>-- But : use event instead of screen coordinates.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_147_13">Enclosed_In_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_154_13" HREF="terminal_interface-curses-mouse__adb.htm#ref_210_13">Mouse_Interval</A></span> (<span class="symbol"><A NAME="ref_154_29" HREF="terminal_interface-curses-mouse__adb.htm#ref_210_29">Msec</A></span> : Natural := 200) <b>return</b> Natural; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_mouse.3x.html">mouseinterval()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-mouse__ads.htm#ref_154_13">Mouse_Interval</A>); + +<b>private</b> + <span class="comment"><EM>-- This can be as little as 32 bits (unsigned), or as long as the system's</EM></span> + <span class="comment"><EM>-- unsigned long. Declare it as the minimum size to handle all valid</EM></span> + <span class="comment"><EM>-- sizes.</EM></span> + <b>type</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> <b>is</b> <b>mod</b> 4294967296; + + <b>type</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_166_10">Id</A></span> : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'First) .. + Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Last); + <span class="symbol"><A NAME="ref_168_10">X</A></span>, <span class="symbol"><A NAME="ref_168_13">Y</A></span>, <span class="symbol"><A NAME="ref_168_16">Z</A></span> : Integer <b>range</b> Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int'First) .. + Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int'Last); + <span class="symbol"><A NAME="ref_170_10">Bstate</A></span> : <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A>; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>); + + <b>for</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_166_10">Id</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_310_4">MEVENT_id_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_311_4">MEVENT_id_Last</A>; + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_10">X</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_312_4">MEVENT_x_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_313_4">MEVENT_x_Last</A>; + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_13">Y</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_314_4">MEVENT_y_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_315_4">MEVENT_y_Last</A>; + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_168_16">Z</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_316_4">MEVENT_z_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_317_4">MEVENT_z_Last</A>; + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_170_10">Bstate</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_318_4">MEVENT_bstate_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_319_4">MEVENT_bstate_Last</A>; + <b>end</b> <b>record</b>; + <b>for</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_85_9">Mouse_Event</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_320_4">MEVENT_Size</A>; + Generation_Bit_Order : System.Bit_Order <b>renames</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_10_4">Bit_Order</A>; + + <span class="symbol"><A NAME="ref_190_4">BUTTON_CTRL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_348_4">BUTTON_CTRL</A>; + <span class="symbol"><A NAME="ref_191_4">BUTTON_SHIFT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_349_4">BUTTON_SHIFT</A>; + <span class="symbol"><A NAME="ref_192_4">BUTTON_ALT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_350_4">BUTTON_ALT</A>; + <span class="symbol"><A NAME="ref_193_4">BUTTON1_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_329_4">all_events_button_1</A>; + <span class="symbol"><A NAME="ref_195_4">BUTTON2_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_335_4">all_events_button_2</A>; + <span class="symbol"><A NAME="ref_197_4">BUTTON3_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_341_4">all_events_button_3</A>; + <span class="symbol"><A NAME="ref_199_4">BUTTON4_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_347_4">all_events_button_4</A>; + <span class="symbol"><A NAME="ref_201_4">ALL_MOUSE_EVENTS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_352_4">ALL_MOUSE_EVENTS</A>; + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_58_4">No_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := 0; + <A HREF="terminal_interface-curses-mouse__ads.htm#ref_59_4">All_Events</A> : <b>constant</b> <A HREF="terminal_interface-curses-mouse__ads.htm#ref_57_9">Event_Mask</A> := <A HREF="terminal_interface-curses-mouse__ads.htm#ref_201_4">ALL_MOUSE_EVENTS</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-mouse__ads.htm#ref_45_35">Mouse</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm new file mode 100644 index 0000000..02c6e8f --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels-user_data__adb.htm @@ -0,0 +1,97 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-panels-user_data.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-panels-user_data.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Panels.User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>; +<b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>.<span class="symbol"><A NAME="ref_48_47" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_46_42">User_Data</A></span> <b>is</b> + + <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + + <b>procedure</b> <span class="symbol"><A NAME="ref_52_14" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_52_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_53_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_55_29">Data</A></span> : <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_55_16">Set_Panel_Userptr</A></span> (<span class="symbol"><A NAME="ref_55_35" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_55_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_56_35" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_55_16">Addr</A></span> : <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Set_Panel_Userptr, "set_panel_userptr"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_55_16">Set_Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_29">Pan</A>, <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_55_29">Data</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_14">Set_User_Data</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_65_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_64_28" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_65_28">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_66_16">Panel_Userptr</A></span> (<span class="symbol"><A NAME="ref_66_31" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_66_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A>; + <b>pragma</b> Import (C, Panel_Userptr, "panel_userptr"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_66_16">Panel_Userptr</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_65_28">Pan</A>); + <b>end</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_65_13">Get_User_Data</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_72_14" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_60_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_72_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_60_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_73_29" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_61_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_61_29">Data</A> := <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_65_13">Get_User_Data</A> (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_60_29">Pan</A>); + <b>end</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_60_14">Get_User_Data</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_46_42">User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm new file mode 100644 index 0000000..81cd6d1 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels-user_data__ads.htm @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-panels-user_data.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-panels-user_data.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Panels.User_Data --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.16 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_44_9" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_46_42">User</A></span> <b>is</b> <b>limited</b> <b>private</b>; + <b>type</b> <span class="symbol"><A NAME="ref_45_9" HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_46_42">User_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_44_9">User</A>; +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>.<span class="symbol"><A NAME="ref_46_42" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_48_47">User_Data</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_46_42">User_Data</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_54_14" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_52_14">Set_User_Data</A></span> (<span class="symbol"><A NAME="ref_54_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_52_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_55_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_53_29">Data</A></span> : <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">set_panel_userptr</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_54_14">Set_User_Data</A>); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_60_14" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_72_14">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_60_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_72_29">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_61_29" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_73_29">Data</A></span> : <b>out</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_65_13" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_64_13">Get_User_Data</A></span> (<span class="symbol"><A NAME="ref_65_28" HREF="terminal_interface-curses-panels-user_data__adb.htm#ref_64_28">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_45_9">User_Access</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_userptr</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Get_User_Data); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>.<A HREF="terminal_interface-curses-panels-user_data__ads.htm#ref_46_42">User_Data</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels__adb.htm new file mode 100644 index 0000000..c9a6e7c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels__adb.htm @@ -0,0 +1,184 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-panels.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-panels.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Panels --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2004,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.15 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_46_40" HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A></span> <b>is</b> + + <b>use</b> <b>type</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + + <b>function</b> <span class="symbol"><A NAME="ref_50_13" HREF="terminal_interface-curses-panels__ads.htm#ref_67_13">Create</A></span> (<span class="symbol"><A NAME="ref_50_21" HREF="terminal_interface-curses-panels__ads.htm#ref_67_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_52_16">Newpanel</A></span> (<span class="symbol"><A NAME="ref_52_26" HREF="terminal_interface-curses-panels__adb.htm#ref_52_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <b>pragma</b> Import (C, Newpanel, "new_panel"); + + <span class="symbol"><A NAME="ref_55_7">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <b>begin</b> + <A HREF="terminal_interface-curses-panels__adb.htm#ref_55_7">Pan</A> := <A HREF="terminal_interface-curses-panels__adb.htm#ref_52_16">Newpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_67_21">Win</A>); + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_55_7">Pan</A> = <A HREF="terminal_interface-curses-panels__ads.htm#ref_54_4">Null_Panel</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_55_7">Pan</A>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_67_13">Create</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-panels__ads.htm#ref_77_14">Bottom</A></span> (<span class="symbol"><A NAME="ref_64_22" HREF="terminal_interface-curses-panels__ads.htm#ref_77_22">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_66_16">Bottompanel</A></span> (<span class="symbol"><A NAME="ref_66_29" HREF="terminal_interface-curses-panels__adb.htm#ref_66_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Bottompanel, "bottom_panel"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_66_16">Bottompanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_77_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_77_14">Bottom</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_74_14" HREF="terminal_interface-curses-panels__ads.htm#ref_82_14">Top</A></span> (<span class="symbol"><A NAME="ref_74_19" HREF="terminal_interface-curses-panels__ads.htm#ref_82_19">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_76_16">Toppanel</A></span> (<span class="symbol"><A NAME="ref_76_26" HREF="terminal_interface-curses-panels__adb.htm#ref_76_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Toppanel, "top_panel"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_76_16">Toppanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_82_19">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_82_14">Top</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_84_14" HREF="terminal_interface-curses-panels__ads.htm#ref_87_14">Show</A></span> (<span class="symbol"><A NAME="ref_84_20" HREF="terminal_interface-curses-panels__ads.htm#ref_87_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_86_16">Showpanel</A></span> (<span class="symbol"><A NAME="ref_86_27" HREF="terminal_interface-curses-panels__adb.htm#ref_86_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Showpanel, "show_panel"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_86_16">Showpanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_87_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_87_14">Show</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_94_14" HREF="terminal_interface-curses-panels__ads.htm#ref_97_14">Hide</A></span> (<span class="symbol"><A NAME="ref_94_20" HREF="terminal_interface-curses-panels__ads.htm#ref_97_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_96_16">Hidepanel</A></span> (<span class="symbol"><A NAME="ref_96_27" HREF="terminal_interface-curses-panels__adb.htm#ref_96_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Hidepanel, "hide_panel"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_96_16">Hidepanel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_97_20">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_97_14">Hide</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_104_13" HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_104_25" HREF="terminal_interface-curses-panels__ads.htm#ref_102_25">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_106_16">Panel_Win</A></span> (<span class="symbol"><A NAME="ref_106_27" HREF="terminal_interface-curses-panels__adb.htm#ref_106_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Panel_Win, "panel_window"); + + <span class="symbol"><A NAME="ref_109_7">Win</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses-panels__adb.htm#ref_106_16">Panel_Win</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_102_25">Pan</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_109_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_109_7">Win</A>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_117_14" HREF="terminal_interface-curses-panels__ads.htm#ref_111_14">Replace</A></span> (<span class="symbol"><A NAME="ref_117_23" HREF="terminal_interface-curses-panels__ads.htm#ref_111_23">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_118_23" HREF="terminal_interface-curses-panels__ads.htm#ref_112_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_120_16">Replace_Pan</A></span> (<span class="symbol"><A NAME="ref_120_29" HREF="terminal_interface-curses-panels__adb.htm#ref_120_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_121_29" HREF="terminal_interface-curses-panels__adb.htm#ref_120_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Replace_Pan, "replace_panel"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_120_16">Replace_Pan</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_111_23">Pan</A>, <A HREF="terminal_interface-curses-panels__ads.htm#ref_112_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_111_14">Replace</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_129_14" HREF="terminal_interface-curses-panels__ads.htm#ref_117_14">Move</A></span> (<span class="symbol"><A NAME="ref_129_20" HREF="terminal_interface-curses-panels__ads.htm#ref_117_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_130_20" HREF="terminal_interface-curses-panels__ads.htm#ref_118_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_131_20" HREF="terminal_interface-curses-panels__ads.htm#ref_119_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_133_16">Move</A></span> (<span class="symbol"><A NAME="ref_133_22" HREF="terminal_interface-curses-panels__adb.htm#ref_133_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_134_22" HREF="terminal_interface-curses-panels__adb.htm#ref_133_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_135_22" HREF="terminal_interface-curses-panels__adb.htm#ref_133_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Move, "move_panel"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_133_16">Move</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_117_20">Pan</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_118_20">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_119_20">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_117_14">Move</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_143_13" HREF="terminal_interface-curses-panels__ads.htm#ref_124_13">Is_Hidden</A></span> (<span class="symbol"><A NAME="ref_143_24" HREF="terminal_interface-curses-panels__ads.htm#ref_124_24">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_145_16">Panel_Hidden</A></span> (<span class="symbol"><A NAME="ref_145_30" HREF="terminal_interface-curses-panels__adb.htm#ref_145_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Panel_Hidden, "panel_hidden"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_145_16">Panel_Hidden</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_124_24">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_124_13">Is_Hidden</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_155_14" HREF="terminal_interface-curses-panels__ads.htm#ref_139_14">Delete</A></span> (<span class="symbol"><A NAME="ref_155_22" HREF="terminal_interface-curses-panels__ads.htm#ref_139_22">Pan</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_157_16">Del_Panel</A></span> (<span class="symbol"><A NAME="ref_157_27" HREF="terminal_interface-curses-panels__adb.htm#ref_157_16">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Del_Panel, "del_panel"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-panels__adb.htm#ref_157_16">Del_Panel</A> (<A HREF="terminal_interface-curses-panels__ads.htm#ref_139_22">Pan</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_60_4">Panel_Exception</A>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-panels__ads.htm#ref_139_22">Pan</A> := <A HREF="terminal_interface-curses-panels__ads.htm#ref_54_4">Null_Panel</A>; + <b>end</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_139_14">Delete</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels__ads.htm new file mode 100644 index 0000000..7879fb0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-panels__ads.htm @@ -0,0 +1,165 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-panels.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-panels.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Panels --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2009,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.23 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_45_35" HREF="terminal_interface-curses-panels__adb.htm#ref_46_40">Panels</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>); + <b>pragma</b> Linker_Options ("-lpanel" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_49_9">Panel</A></span> <b>is</b> <b>private</b>; + + <span class="comment"><EM>---------------------------</EM></span> + <span class="comment"><EM>-- Interface constants --</EM></span> + <span class="comment"><EM>---------------------------</EM></span> + <span class="symbol"><A NAME="ref_54_4">Null_Panel</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + + <span class="comment"><EM>-------------------</EM></span> + <span class="comment"><EM>-- Exceptions --</EM></span> + <span class="comment"><EM>-------------------</EM></span> + + <span class="symbol"><A NAME="ref_60_4">Panel_Exception</A></span> : <b>exception</b>; + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/panel.3x.html">panel.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_67_13" HREF="terminal_interface-curses-panels__adb.htm#ref_50_13">Create</A></span> (<span class="symbol"><A NAME="ref_67_21" HREF="terminal_interface-curses-panels__adb.htm#ref_50_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></span> + <b>pragma</b> Inline (Create); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>function</b> New_Panel (<span class="symbol"><A NAME="ref_72_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A> <b>renames</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_67_13">Create</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">new_panel()</A></EM></span> + <span class="comment"><EM>-- pragma Inline (New_Panel);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_77_14" HREF="terminal_interface-curses-panels__adb.htm#ref_64_14">Bottom</A></span> (<span class="symbol"><A NAME="ref_77_22" HREF="terminal_interface-curses-panels__adb.htm#ref_64_22">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">bottom_panel()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_77_14">Bottom</A>); + + <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_82_14" HREF="terminal_interface-curses-panels__adb.htm#ref_74_14">Top</A></span> (<span class="symbol"><A NAME="ref_82_19" HREF="terminal_interface-curses-panels__adb.htm#ref_74_19">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">top_panel()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_82_14">Top</A>); + + <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_87_14" HREF="terminal_interface-curses-panels__adb.htm#ref_84_14">Show</A></span> (<span class="symbol"><A NAME="ref_87_20" HREF="terminal_interface-curses-panels__adb.htm#ref_84_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">show_panel()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_87_14">Show</A>); + + <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_92_14">Update_Panels</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">update_panels()</A></EM></span> + <b>pragma</b> Import (C, Update_Panels, "update_panels"); + + <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_97_14" HREF="terminal_interface-curses-panels__adb.htm#ref_94_14">Hide</A></span> (<span class="symbol"><A NAME="ref_97_20" HREF="terminal_interface-curses-panels__adb.htm#ref_94_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">hide_panel()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_97_14">Hide</A>); + + <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_102_13" HREF="terminal_interface-curses-panels__adb.htm#ref_104_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_102_25" HREF="terminal_interface-curses-panels__adb.htm#ref_104_25">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_window()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span> + <b>function</b> Panel_Window (<span class="symbol"><A NAME="ref_107_27">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> <b>renames</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_102_13">Get_Window</A>; + <span class="comment"><EM>-- pragma Inline (Panel_Window);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_111_14" HREF="terminal_interface-curses-panels__adb.htm#ref_117_14">Replace</A></span> (<span class="symbol"><A NAME="ref_111_23" HREF="terminal_interface-curses-panels__adb.htm#ref_117_23">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_112_23" HREF="terminal_interface-curses-panels__adb.htm#ref_118_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">replace_panel()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_111_14">Replace</A>); + + <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_117_14" HREF="terminal_interface-curses-panels__adb.htm#ref_129_14">Move</A></span> (<span class="symbol"><A NAME="ref_117_20" HREF="terminal_interface-curses-panels__adb.htm#ref_129_20">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="symbol"><A NAME="ref_118_20" HREF="terminal_interface-curses-panels__adb.htm#ref_130_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_119_20" HREF="terminal_interface-curses-panels__adb.htm#ref_131_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">move_panel()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_117_14">Move</A>); + + <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_124_13" HREF="terminal_interface-curses-panels__adb.htm#ref_143_13">Is_Hidden</A></span> (<span class="symbol"><A NAME="ref_124_24" HREF="terminal_interface-curses-panels__adb.htm#ref_143_24">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_hidden()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-panels__ads.htm#ref_124_13">Is_Hidden</A>); + + <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_129_13">Above</A></span> (<span class="symbol"><A NAME="ref_129_20" HREF="terminal_interface-curses-panels__ads.htm#ref_129_13">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_above()</A></EM></span> + <b>pragma</b> Import (C, Above, "panel_above"); + + <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_134_13">Below</A></span> (<span class="symbol"><A NAME="ref_134_20" HREF="terminal_interface-curses-panels__ads.htm#ref_134_13">Pan</A></span> : <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>) <b>return</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">panel_below()</A></EM></span> + <b>pragma</b> Import (C, Below, "panel_below"); + + <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_139_14" HREF="terminal_interface-curses-panels__adb.htm#ref_155_14">Delete</A></span> (<span class="symbol"><A NAME="ref_139_22" HREF="terminal_interface-curses-panels__adb.htm#ref_155_22">Pan</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/panel.3x.html">del_panel()</A></EM></span> + <b>pragma</b> Inline (Delete); + +<b>private</b> + <b>type</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address; + <A HREF="terminal_interface-curses-panels__ads.htm#ref_54_4">Null_Panel</A> : <b>constant</b> <A HREF="terminal_interface-curses-panels__ads.htm#ref_49_9">Panel</A> := 0; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-panels__ads.htm#ref_45_35">Panels</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-putwin__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-putwin__adb.htm new file mode 100644 index 0000000..32f6411 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-putwin__adb.htm @@ -0,0 +1,96 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-putwin.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-putwin.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.PutWin --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2000-2002,2003 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.5 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> + +<b>with</b> Ada.Streams.Stream_IO.C_Streams; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C_Streams; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_46_40" HREF="terminal_interface-curses-putwin__ads.htm#ref_44_35">PutWin</A></span> <b>is</b> + + <b>package</b> <span class="symbol"><A NAME="ref_48_12">ICS</A></span> <b>renames</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C_Streams; + <b>package</b> <span class="symbol"><A NAME="ref_49_12">ACS</A></span> <b>renames</b> Ada.Streams.Stream_IO.C_Streams; + <b>use</b> <b>type</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_52_14" HREF="terminal_interface-curses-putwin__ads.htm#ref_46_14">Put_Window</A></span> (<span class="symbol"><A NAME="ref_52_26" HREF="terminal_interface-curses-putwin__ads.htm#ref_46_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_53_26" HREF="terminal_interface-curses-putwin__ads.htm#ref_47_26">File</A></span> : Ada.Streams.Stream_IO.File_Type) <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_54_16">putwin</A></span> (<span class="symbol"><A NAME="ref_54_24" HREF="terminal_interface-curses-putwin__adb.htm#ref_54_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_54_38" HREF="terminal_interface-curses-putwin__adb.htm#ref_54_16">f</A></span> : <A HREF="terminal_interface-curses-putwin__adb.htm#ref_48_12">ICS</A>.FILEs) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, putwin, "putwin"); + + <span class="symbol"><A NAME="ref_57_7">R</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-putwin__adb.htm#ref_54_16">putwin</A> (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_46_26">Win</A>, <A HREF="terminal_interface-curses-putwin__adb.htm#ref_49_12">ACS</A>.C_Stream (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_47_26">File</A>)); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_57_7">R</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Ok</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-putwin__ads.htm#ref_46_14">Put_Window</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-putwin__ads.htm#ref_49_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_64_25" HREF="terminal_interface-curses-putwin__ads.htm#ref_49_25">File</A></span> : Ada.Streams.Stream_IO.File_Type) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_66_16">getwin</A></span> (<span class="symbol"><A NAME="ref_66_24" HREF="terminal_interface-curses-putwin__adb.htm#ref_66_16">f</A></span> : <A HREF="terminal_interface-curses-putwin__adb.htm#ref_48_12">ICS</A>.FILEs) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, getwin, "getwin"); + + <span class="symbol"><A NAME="ref_69_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses-putwin__adb.htm#ref_66_16">getwin</A> (<A HREF="terminal_interface-curses-putwin__adb.htm#ref_49_12">ACS</A>.C_Stream (<A HREF="terminal_interface-curses-putwin__ads.htm#ref_49_25">File</A>)); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_69_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <b>return</b> <A HREF="terminal_interface-curses-putwin__adb.htm#ref_69_7">W</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-putwin__ads.htm#ref_49_13">Get_Window</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-putwin__ads.htm#ref_44_35">PutWin</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-putwin__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-putwin__ads.htm new file mode 100644 index 0000000..9246fed --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-putwin__ads.htm @@ -0,0 +1,69 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-putwin.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-putwin.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.PutWin --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2000-2002,2003 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.5 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> + +<b>with</b> Ada.Streams.Stream_IO; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_44_35" HREF="terminal_interface-curses-putwin__adb.htm#ref_46_40">PutWin</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-putwin__adb.htm#ref_52_14">Put_Window</A></span> (<span class="symbol"><A NAME="ref_46_26" HREF="terminal_interface-curses-putwin__adb.htm#ref_52_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_47_26" HREF="terminal_interface-curses-putwin__adb.htm#ref_53_26">File</A></span> : Ada.Streams.Stream_IO.File_Type); + + <b>function</b> <span class="symbol"><A NAME="ref_49_13" HREF="terminal_interface-curses-putwin__adb.htm#ref_64_13">Get_Window</A></span> (<span class="symbol"><A NAME="ref_49_25" HREF="terminal_interface-curses-putwin__adb.htm#ref_64_25">File</A></span> : Ada.Streams.Stream_IO.File_Type) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-putwin__ads.htm#ref_44_35">PutWin</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-termcap__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-termcap__adb.htm new file mode 100644 index 0000000..b6cf893 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-termcap__adb.htm @@ -0,0 +1,182 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-termcap.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-termcap.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Termcap --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2000-2006,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_48_40" HREF="terminal_interface-curses-termcap__ads.htm#ref_43_35">Termcap</A></span> <b>is</b> + + <b>function</b> <span class="symbol"><A NAME="ref_50_13" HREF="terminal_interface-curses-termcap__ads.htm#ref_60_13">Get_Entry</A></span> (<span class="symbol"><A NAME="ref_50_24" HREF="terminal_interface-curses-termcap__ads.htm#ref_60_24">Name</A></span> : String) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_52_16">tgetent</A></span> (<span class="symbol"><A NAME="ref_52_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_52_16">name</A></span> : char_array; <span class="symbol"><A NAME="ref_52_44" HREF="terminal_interface-curses-termcap__adb.htm#ref_52_16">val</A></span> : char_array) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, tgetent, "tgetent"); + <span class="symbol"><A NAME="ref_55_7">NameTxt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_60_24">Name</A>'Length); + <span class="symbol"><A NAME="ref_56_7">Length</A></span> : size_t; + <span class="symbol"><A NAME="ref_57_7">ignored</A></span> : <b>constant</b> char_array (0 .. 0) := (0 =&gt; nul); + <span class="symbol"><A NAME="ref_58_7">result</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_60_24">Name</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_55_7">NameTxt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_56_7">Length</A>); + <A HREF="terminal_interface-curses-termcap__adb.htm#ref_58_7">result</A> := <A HREF="terminal_interface-curses-termcap__adb.htm#ref_52_16">tgetent</A> (char_array (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_57_7">ignored</A>), <A HREF="terminal_interface-curses-termcap__adb.htm#ref_55_7">NameTxt</A>); + <b>if</b> <A HREF="terminal_interface-curses-termcap__adb.htm#ref_58_7">result</A> = -1 <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <b>return</b> Boolean'Val (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_58_7">result</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_60_13">Get_Entry</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_70_13" HREF="terminal_interface-curses-termcap__ads.htm#ref_64_13">Get_Flag</A></span> (<span class="symbol"><A NAME="ref_70_23" HREF="terminal_interface-curses-termcap__ads.htm#ref_64_23">Name</A></span> : String) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_72_16">tgetflag</A></span> (<span class="symbol"><A NAME="ref_72_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_72_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, tgetflag, "tgetflag"); + <span class="symbol"><A NAME="ref_74_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_64_23">Name</A>'Length); + <span class="symbol"><A NAME="ref_75_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_64_23">Name</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_74_7">Txt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_75_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses-termcap__adb.htm#ref_72_16">tgetflag</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_74_7">Txt</A>) = 0 <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_64_13">Get_Flag</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_86_14" HREF="terminal_interface-curses-termcap__ads.htm#ref_68_14">Get_Number</A></span> (<span class="symbol"><A NAME="ref_86_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_68_26">Name</A></span> : String; + <span class="symbol"><A NAME="ref_87_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_69_26">Value</A></span> : <b>out</b> Integer; + <span class="symbol"><A NAME="ref_88_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_70_26">Result</A></span> : <b>out</b> Boolean) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_90_16">tgetnum</A></span> (<span class="symbol"><A NAME="ref_90_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_90_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, tgetnum, "tgetnum"); + <span class="symbol"><A NAME="ref_92_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_68_26">Name</A>'Length); + <span class="symbol"><A NAME="ref_93_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_68_26">Name</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_92_7">Txt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_93_7">Length</A>); + <A HREF="terminal_interface-curses-termcap__ads.htm#ref_69_26">Value</A> := Integer (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_90_16">tgetnum</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_92_7">Txt</A>)); + <b>if</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_69_26">Value</A> = -1 <b>then</b> + <A HREF="terminal_interface-curses-termcap__ads.htm#ref_70_26">Result</A> := False; + <b>else</b> + <A HREF="terminal_interface-curses-termcap__ads.htm#ref_70_26">Result</A> := True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_68_14">Get_Number</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_105_14" HREF="terminal_interface-curses-termcap__ads.htm#ref_74_14">Get_String</A></span> (<span class="symbol"><A NAME="ref_105_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_74_26">Name</A></span> : String; + <span class="symbol"><A NAME="ref_106_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_75_26">Value</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_107_26" HREF="terminal_interface-curses-termcap__ads.htm#ref_76_26">Result</A></span> : <b>out</b> Boolean) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_109_16">tgetstr</A></span> (<span class="symbol"><A NAME="ref_109_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_109_16">id</A></span> : char_array; + <span class="symbol"><A NAME="ref_110_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_109_16">buf</A></span> : char_array) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, tgetstr, "tgetstr"); + <span class="symbol"><A NAME="ref_112_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_74_26">Name</A>'Length); + <span class="symbol"><A NAME="ref_113_7">Length</A></span> : size_t; + <span class="symbol"><A NAME="ref_114_7">Txt2</A></span> : chars_ptr; + <b>type</b> t <b>is</b> <b>new</b> char_array (0 .. 1024); <span class="comment"><EM>-- does it need to be 1024?</EM></span> + <span class="symbol"><A NAME="ref_116_7">Return_Buffer</A></span> : <b>constant</b> t := (<b>others</b> =&gt; nul); + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_74_26">Name</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_112_7">Txt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_113_7">Length</A>); + <A HREF="terminal_interface-curses-termcap__adb.htm#ref_114_7">Txt2</A> := <A HREF="terminal_interface-curses-termcap__adb.htm#ref_109_16">tgetstr</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_112_7">Txt</A>, char_array (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_116_7">Return_Buffer</A>)); + <b>if</b> <A HREF="terminal_interface-curses-termcap__adb.htm#ref_114_7">Txt2</A> = Null_Ptr <b>then</b> + <A HREF="terminal_interface-curses-termcap__ads.htm#ref_76_26">Result</A> := False; + <b>else</b> + <A HREF="terminal_interface-curses-termcap__ads.htm#ref_75_26">Value</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_114_7">Txt2</A>); + <A HREF="terminal_interface-curses-termcap__ads.htm#ref_76_26">Result</A> := True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_74_14">Get_String</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_128_13" HREF="terminal_interface-curses-termcap__ads.htm#ref_77_13">Get_String</A></span> (<span class="symbol"><A NAME="ref_128_25" HREF="terminal_interface-curses-termcap__ads.htm#ref_77_25">Name</A></span> : String) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_130_16">tgetstr</A></span> (<span class="symbol"><A NAME="ref_130_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_130_16">Id</A></span> : char_array; + <span class="symbol"><A NAME="ref_131_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_130_16">buf</A></span> : char_array) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, tgetstr, "tgetstr"); + <span class="symbol"><A NAME="ref_133_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_77_25">Name</A>'Length); + <span class="symbol"><A NAME="ref_134_7">Length</A></span> : size_t; + <span class="symbol"><A NAME="ref_135_7">Txt2</A></span> : chars_ptr; + <b>type</b> t <b>is</b> <b>new</b> char_array (0 .. 1024); <span class="comment"><EM>-- does it need to be 1024?</EM></span> + <span class="symbol"><A NAME="ref_137_7">Phony_Txt</A></span> : <b>constant</b> t := (<b>others</b> =&gt; nul); + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_77_25">Name</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_133_7">Txt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_134_7">Length</A>); + <A HREF="terminal_interface-curses-termcap__adb.htm#ref_135_7">Txt2</A> := <A HREF="terminal_interface-curses-termcap__adb.htm#ref_130_16">tgetstr</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_133_7">Txt</A>, char_array (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_137_7">Phony_Txt</A>)); + <b>if</b> <A HREF="terminal_interface-curses-termcap__adb.htm#ref_135_7">Txt2</A> = Null_Ptr <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_77_13">Get_String</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_149_13" HREF="terminal_interface-curses-termcap__ads.htm#ref_54_13">TGoto</A></span> (<span class="symbol"><A NAME="ref_149_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_54_20">Cap</A></span> : String; + <span class="symbol"><A NAME="ref_150_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_55_20">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_151_20" HREF="terminal_interface-curses-termcap__ads.htm#ref_56_20">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>) <b>return</b> Termcap_String <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_152_16">tgoto</A></span> (<span class="symbol"><A NAME="ref_152_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_152_16">cap</A></span> : char_array; + <span class="symbol"><A NAME="ref_153_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_152_16">col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_154_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_152_16">row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, tgoto); + <span class="symbol"><A NAME="ref_156_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-termcap__ads.htm#ref_54_20">Cap</A>'Length); + <span class="symbol"><A NAME="ref_157_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_54_20">Cap</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_156_7">Txt</A>, <A HREF="terminal_interface-curses-termcap__adb.htm#ref_157_7">Length</A>); + <b>return</b> Termcap_String (<A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> + (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_152_16">tgoto</A> (<A HREF="terminal_interface-curses-termcap__adb.htm#ref_156_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_55_20">Col</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-termcap__ads.htm#ref_56_20">Row</A>)))); + <b>end</b> <A HREF="terminal_interface-curses-termcap__ads.htm#ref_54_13">TGoto</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_43_35">Termcap</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-termcap__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-termcap__ads.htm new file mode 100644 index 0000000..d019b91 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-termcap__ads.htm @@ -0,0 +1,99 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-termcap.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-termcap.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Termcap --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2000-2002,2003 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.5 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_43_35" HREF="terminal_interface-curses-termcap__adb.htm#ref_48_40">Termcap</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_43_35">Termcap</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page curs_termcap.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not implemented: tputs (see curs_terminfo)</EM></span> + + <b>type</b> Termcap_String <b>is</b> <b>new</b> String; + + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_54_13" HREF="terminal_interface-curses-termcap__adb.htm#ref_149_13">TGoto</A></span> (<span class="symbol"><A NAME="ref_54_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_149_20">Cap</A></span> : String; + <span class="symbol"><A NAME="ref_55_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_150_20">Col</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_56_20" HREF="terminal_interface-curses-termcap__adb.htm#ref_151_20">Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>) <b>return</b> Termcap_String; + <span class="comment"><EM>-- AKA: tgoto()</EM></span> + + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_60_13" HREF="terminal_interface-curses-termcap__adb.htm#ref_50_13">Get_Entry</A></span> (<span class="symbol"><A NAME="ref_60_24" HREF="terminal_interface-curses-termcap__adb.htm#ref_50_24">Name</A></span> : String) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: tgetent()</EM></span> + + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_64_13" HREF="terminal_interface-curses-termcap__adb.htm#ref_70_13">Get_Flag</A></span> (<span class="symbol"><A NAME="ref_64_23" HREF="terminal_interface-curses-termcap__adb.htm#ref_70_23">Name</A></span> : String) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: tgetflag()</EM></span> + + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_68_14" HREF="terminal_interface-curses-termcap__adb.htm#ref_86_14">Get_Number</A></span> (<span class="symbol"><A NAME="ref_68_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_86_26">Name</A></span> : String; + <span class="symbol"><A NAME="ref_69_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_87_26">Value</A></span> : <b>out</b> Integer; + <span class="symbol"><A NAME="ref_70_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_88_26">Result</A></span> : <b>out</b> Boolean); + <span class="comment"><EM>-- AKA: tgetnum()</EM></span> + + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_74_14" HREF="terminal_interface-curses-termcap__adb.htm#ref_105_14">Get_String</A></span> (<span class="symbol"><A NAME="ref_74_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_105_26">Name</A></span> : String; + <span class="symbol"><A NAME="ref_75_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_106_26">Value</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_76_26" HREF="terminal_interface-curses-termcap__adb.htm#ref_107_26">Result</A></span> : <b>out</b> Boolean); + <b>function</b> <span class="symbol"><A NAME="ref_77_13" HREF="terminal_interface-curses-termcap__adb.htm#ref_128_13">Get_String</A></span> (<span class="symbol"><A NAME="ref_77_25" HREF="terminal_interface-curses-termcap__adb.htm#ref_128_25">Name</A></span> : String) <b>return</b> Boolean; + <span class="comment"><EM>-- Returns True if the string is found.</EM></span> + <span class="comment"><EM>-- AKA: tgetstr()</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-termcap__ads.htm#ref_43_35">Termcap</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-terminfo__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-terminfo__adb.htm new file mode 100644 index 0000000..9b25898 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-terminfo__adb.htm @@ -0,0 +1,180 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-terminfo.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-terminfo.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Terminfo --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2000-2006,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.7 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; <b>use</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; +<b>with</b> Ada.Unchecked_Conversion; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_49_40" HREF="terminal_interface-curses-terminfo__ads.htm#ref_45_35">Terminfo</A></span> <b>is</b> + + <b>function</b> <span class="symbol"><A NAME="ref_51_13" HREF="terminal_interface-curses-terminfo__adb.htm#ref_53_13">Is_MinusOne_Pointer</A></span> (<span class="symbol"><A NAME="ref_51_34" HREF="terminal_interface-curses-terminfo__adb.htm#ref_53_34">P</A></span> : chars_ptr) <b>return</b> Boolean; + + <b>function</b> <span class="symbol"><A NAME="ref_53_13" HREF="terminal_interface-curses-terminfo__adb.htm#ref_51_13">Is_MinusOne_Pointer</A></span> (<span class="symbol"><A NAME="ref_53_34" HREF="terminal_interface-curses-terminfo__adb.htm#ref_51_34">P</A></span> : chars_ptr) <b>return</b> Boolean <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_54_12">Weird_Address</A></span> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address; + <span class="symbol"><A NAME="ref_55_7">Invalid_Pointer</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_54_12">Weird_Address</A> := -1; + <b>function</b> To_Weird <b>is</b> <b>new</b> Ada.Unchecked_Conversion + (Source =&gt; chars_ptr, Target =&gt; <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_54_12">Weird_Address</A>); + <b>begin</b> + <b>if</b> To_Weird (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_51_34">P</A>) = <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_55_7">Invalid_Pointer</A> <b>then</b> + <b>return</b> True; + <b>else</b> + <b>return</b> False; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_51_13">Is_MinusOne_Pointer</A>; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_51_13">Is_MinusOne_Pointer</A>); + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_68_13" HREF="terminal_interface-curses-terminfo__ads.htm#ref_65_13">Get_Flag</A></span> (<span class="symbol"><A NAME="ref_68_23" HREF="terminal_interface-curses-terminfo__ads.htm#ref_65_23">Name</A></span> : String) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_70_16">tigetflag</A></span> (<span class="symbol"><A NAME="ref_70_27" HREF="terminal_interface-curses-terminfo__adb.htm#ref_70_16">id</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, tigetflag); + <span class="symbol"><A NAME="ref_72_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_65_23">Name</A>'Length); + <span class="symbol"><A NAME="ref_73_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_65_23">Name</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_72_7">Txt</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_73_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_70_16">tigetflag</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_72_7">Txt</A>) = <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_66_4">Curses_True</A>) <b>then</b> + <b>return</b> True; + <b>else</b> + <b>return</b> False; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_65_13">Get_Flag</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_84_14" HREF="terminal_interface-curses-terminfo__ads.htm#ref_58_14">Get_String</A></span> (<span class="symbol"><A NAME="ref_84_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_58_26">Name</A></span> : String; + <span class="symbol"><A NAME="ref_85_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_59_26">Value</A></span> : <b>out</b> Terminfo_String; + <span class="symbol"><A NAME="ref_86_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_60_26">Result</A></span> : <b>out</b> Boolean) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_88_16">tigetstr</A></span> (<span class="symbol"><A NAME="ref_88_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_88_16">id</A></span> : char_array) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, tigetstr, "tigetstr"); + <span class="symbol"><A NAME="ref_90_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_58_26">Name</A>'Length); + <span class="symbol"><A NAME="ref_91_7">Length</A></span> : size_t; + <span class="symbol"><A NAME="ref_92_7">Txt2</A></span> : chars_ptr; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_58_26">Name</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_90_7">Txt</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_91_7">Length</A>); + <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_92_7">Txt2</A> := <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_88_16">tigetstr</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_90_7">Txt</A>); + <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_92_7">Txt2</A> = Null_Ptr <b>then</b> + <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_60_26">Result</A> := False; + <b>elsif</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_51_13">Is_MinusOne_Pointer</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_92_7">Txt2</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_59_26">Value</A> := Terminfo_String (<A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_92_7">Txt2</A>)); + <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_60_26">Result</A> := True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_58_14">Get_String</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_107_13" HREF="terminal_interface-curses-terminfo__ads.htm#ref_61_13">Has_String</A></span> (<span class="symbol"><A NAME="ref_107_25" HREF="terminal_interface-curses-terminfo__ads.htm#ref_61_25">Name</A></span> : String) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_109_16">tigetstr</A></span> (<span class="symbol"><A NAME="ref_109_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_109_16">id</A></span> : char_array) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, tigetstr, "tigetstr"); + <span class="symbol"><A NAME="ref_111_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_61_25">Name</A>'Length); + <span class="symbol"><A NAME="ref_112_7">Length</A></span> : size_t; + <span class="symbol"><A NAME="ref_113_7">Txt2</A></span> : chars_ptr; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_61_25">Name</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_111_7">Txt</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_112_7">Length</A>); + <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_113_7">Txt2</A> := <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_109_16">tigetstr</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_111_7">Txt</A>); + <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_113_7">Txt2</A> = Null_Ptr <b>then</b> + <b>return</b> False; + <b>elsif</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_51_13">Is_MinusOne_Pointer</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_113_7">Txt2</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_61_13">Has_String</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_127_13" HREF="terminal_interface-curses-terminfo__ads.htm#ref_69_13">Get_Number</A></span> (<span class="symbol"><A NAME="ref_127_25" HREF="terminal_interface-curses-terminfo__ads.htm#ref_69_25">Name</A></span> : String) <b>return</b> Integer <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_128_16">tigetstr</A></span> (<span class="symbol"><A NAME="ref_128_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_128_16">s</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, tigetstr); + <span class="symbol"><A NAME="ref_130_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_69_25">Name</A>'Length); + <span class="symbol"><A NAME="ref_131_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_69_25">Name</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_130_7">Txt</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_131_7">Length</A>); + <b>return</b> Integer (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_128_16">tigetstr</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_130_7">Txt</A>)); + <b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_69_13">Get_Number</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_138_14" HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_14">Put_String</A></span> (<span class="symbol"><A NAME="ref_138_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_26">Str</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_45_35">Terminfo_String</A>; + <span class="symbol"><A NAME="ref_139_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_78_26">affcnt</A></span> : Natural := 1; + <span class="symbol"><A NAME="ref_140_26" HREF="terminal_interface-curses-terminfo__ads.htm#ref_79_26">putc</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_72_9">putctype</A> := <b>null</b>) <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_141_16">tputs</A></span> (<span class="symbol"><A NAME="ref_141_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_141_16">str</A></span> : char_array; + <span class="symbol"><A NAME="ref_142_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_141_16">affcnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_143_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_141_16">putc</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_72_9">putctype</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_144_16">putp</A></span> (<span class="symbol"><A NAME="ref_144_22" HREF="terminal_interface-curses-terminfo__adb.htm#ref_144_16">str</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, tputs); + <b>pragma</b> Import (C, putp); + <span class="symbol"><A NAME="ref_147_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_26">Str</A>'Length); + <span class="symbol"><A NAME="ref_148_7">Length</A></span> : size_t; + <span class="symbol"><A NAME="ref_149_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + To_C (String (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_26">Str</A>), <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_147_7">Txt</A>, <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_148_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_79_26">putc</A> = <b>null</b> <b>then</b> + <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_149_7">Err</A> := <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_144_16">putp</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_147_7">Txt</A>); + <b>else</b> + <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_149_7">Err</A> := <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_141_16">tputs</A> (<A HREF="terminal_interface-curses-terminfo__adb.htm#ref_147_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_78_26">affcnt</A>), <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_79_26">putc</A>); + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses-terminfo__adb.htm#ref_149_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_77_14">Put_String</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_45_35">Terminfo</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-terminfo__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-terminfo__ads.htm new file mode 100644 index 0000000..e4721d0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-terminfo__ads.htm @@ -0,0 +1,100 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-terminfo.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-terminfo.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Terminfo --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2000-2002,2003 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.5 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_45_35" HREF="terminal_interface-curses-terminfo__adb.htm#ref_49_40">Terminfo</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_45_35">Terminfo</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page curs_terminfo.3x</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not implemented: setupterm, setterm, set_curterm, del_curterm,</EM></span> + <span class="comment"><EM>-- restartterm, tparm, putp, vidputs, vidattr,</EM></span> + <span class="comment"><EM>-- mvcur</EM></span> + + <b>type</b> Terminfo_String <b>is</b> <b>new</b> String; + + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_58_14" HREF="terminal_interface-curses-terminfo__adb.htm#ref_84_14">Get_String</A></span> (<span class="symbol"><A NAME="ref_58_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_84_26">Name</A></span> : String; + <span class="symbol"><A NAME="ref_59_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_85_26">Value</A></span> : <b>out</b> Terminfo_String; + <span class="symbol"><A NAME="ref_60_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_86_26">Result</A></span> : <b>out</b> Boolean); + <b>function</b> <span class="symbol"><A NAME="ref_61_13" HREF="terminal_interface-curses-terminfo__adb.htm#ref_107_13">Has_String</A></span> (<span class="symbol"><A NAME="ref_61_25" HREF="terminal_interface-curses-terminfo__adb.htm#ref_107_25">Name</A></span> : String) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: tigetstr()</EM></span> + + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_65_13" HREF="terminal_interface-curses-terminfo__adb.htm#ref_68_13">Get_Flag</A></span> (<span class="symbol"><A NAME="ref_65_23" HREF="terminal_interface-curses-terminfo__adb.htm#ref_68_23">Name</A></span> : String) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: tigetflag()</EM></span> + + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_69_13" HREF="terminal_interface-curses-terminfo__adb.htm#ref_127_13">Get_Number</A></span> (<span class="symbol"><A NAME="ref_69_25" HREF="terminal_interface-curses-terminfo__adb.htm#ref_127_25">Name</A></span> : String) <b>return</b> Integer; + <span class="comment"><EM>-- AKA: tigetnum()</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_72_9">putctype</A></span> <b>is</b> <b>access</b> <b>function</b> (<span class="symbol"><A NAME="ref_72_38" HREF="terminal_interface-curses-terminfo__ads.htm#ref_72_9">c</A></span> : <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int) + <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_72_9">putctype</A>); + + <span class="comment"><EM>-- |</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_77_14" HREF="terminal_interface-curses-terminfo__adb.htm#ref_138_14">Put_String</A></span> (<span class="symbol"><A NAME="ref_77_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_138_26">Str</A></span> : Terminfo_String; + <span class="symbol"><A NAME="ref_78_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_139_26">affcnt</A></span> : Natural := 1; + <span class="symbol"><A NAME="ref_79_26" HREF="terminal_interface-curses-terminfo__adb.htm#ref_140_26">putc</A></span> : <A HREF="terminal_interface-curses-terminfo__ads.htm#ref_72_9">putctype</A> := <b>null</b>); + <span class="comment"><EM>-- AKA: tputs()</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-terminfo__ads.htm#ref_45_35">Terminfo</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm new file mode 100644 index 0000000..2fa040c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-aux__adb.htm @@ -0,0 +1,147 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-aux.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-aux.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Aux --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2006,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.14 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_43_48" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_45_14" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A></span> + (<span class="symbol"><A NAME="ref_46_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_47_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A></span> : String; + <span class="symbol"><A NAME="ref_48_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_52_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>; + <span class="symbol"><A NAME="ref_49_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_53_7">Signal</A></span> : Boolean := True; + <span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_54_7">Ljust</A></span> : Boolean := False) + <b>is</b> + <span class="symbol"><A NAME="ref_52_7">L</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>; + <span class="symbol"><A NAME="ref_53_7">Len</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>; + <span class="symbol"><A NAME="ref_54_7">W</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_52_7">Width</A>; + <span class="symbol"><A NAME="ref_55_7">LC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_56_7">CC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_57_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_58_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_60_17" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_62_17">Output</A></span> (<span class="symbol"><A NAME="ref_60_25" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_62_25">From</A></span>, <span class="symbol"><A NAME="ref_60_31" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_62_31">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_62_17" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_17">Output</A></span> (<span class="symbol"><A NAME="ref_62_25" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_25">From</A></span>, <span class="symbol"><A NAME="ref_62_31" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_31">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>) + <b>is</b> + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A> &gt; 0 <b>then</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> = 0 <b>then</b> + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A> &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> <b>then</b> + <span class="comment"><EM>-- LRM A10.6 (7) says this</EM></span> + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A>; + <b>end</b> <b>if</b>; + + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A> &lt;= <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_55_7">LC</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_56_7">CC</A>); + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A>) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_56_7">CC</A> <b>then</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_53_7">Signal</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_135_4">Layout_Error</A>; + <b>else</b> + <b>return</b>; + <b>end</b> <b>if</b>; + <b>else</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A> &lt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> <b>and</b> <b>then</b> <b>not</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_54_7">Ljust</A> <b>then</b> + <b>declare</b> + <span class="symbol"><A NAME="ref_85_22">Filler</A></span> : <b>constant</b> String (1 .. (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A>)) + := (<b>others</b> =&gt; ' '); + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_85_22">Filler</A>); + <b>end</b>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_57_7">Y</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_58_7">X</A>); + <b>if</b> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_58_7">X</A> + <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A>)) &gt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_56_7">CC</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A>); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_25">From</A> .. <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_31">To</A>)); + <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A> &lt; <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_54_7">Ljust</A> <b>then</b> + <b>declare</b> + <span class="symbol"><A NAME="ref_98_22">Filler</A></span> : <b>constant</b> String (1 .. (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_54_7">W</A> - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A>)) + := (<b>others</b> =&gt; ' '); + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A> (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A>, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_98_22">Filler</A>); + <b>end</b>; + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_17">Output</A>; + + <b>begin</b> + <b>pragma</b> Assert (<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_50_7">Win</A> /= <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A>); + <b>if</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_54_7">Ljust</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> := 1; + <b>for</b> <span class="symbol"><A NAME="ref_112_14">I</A></span> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A>'Length <b>loop</b> + <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A>) = ' '; + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> + 1; + <b>end</b> <b>loop</b>; + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> - 1; + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_17">Output</A> (1, <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A>); + <b>else</b> <span class="comment"><EM>-- input buffer is not left justified</EM></span> + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A>'Length; + <b>for</b> <span class="symbol"><A NAME="ref_120_14">I</A></span> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A>'Length <b>loop</b> + <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A>) = ' '; + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> := <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> - 1; + <b>end</b> <b>loop</b>; + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_53_7">Len</A> := <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A>'Length - <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A>; + <A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_60_17">Output</A> (<A HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_52_7">L</A> + 1, <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_51_7">Buf</A>'Length); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm new file mode 100644 index 0000000..62eac4c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-aux__ads.htm @@ -0,0 +1,74 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-aux.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-aux.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Aux --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2006,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.15 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>private</b> <b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_43_51" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_43_48">Aux</A></span> <b>is</b> + <span class="comment"><EM>-- pragma Preelaborate (Aux);</EM></span> + + <span class="comment"><EM>-- This routine is called from the Text_IO output routines for numeric</EM></span> + <span class="comment"><EM>-- and enumeration types.</EM></span> + <span class="comment"><EM>--</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_45_14">Put_Buf</A></span> + (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_46_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="comment"><EM>-- The output window</EM></span> + <span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_47_7">Buf</A></span> : String; <span class="comment"><EM>-- The buffer containing the text</EM></span> + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_48_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>; <span class="comment"><EM>-- The width of the output field</EM></span> + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_49_7">Signal</A></span> : Boolean := True; <span class="comment"><EM>-- If true, we raise Layout_Error</EM></span> + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-aux__adb.htm#ref_50_7">Ljust</A></span> : Boolean := False); <span class="comment"><EM>-- The Buf is left justified</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm new file mode 100644 index 0000000..bc8e117 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-complex_io__adb.htm @@ -0,0 +1,92 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-complex_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-complex_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Complex_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_45_43">Float_IO</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_44_48" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_47_43">Complex_IO</A></span> <b>is</b> + + <b>package</b> FIO <b>is</b> <b>new</b> + <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_45_43">Float_IO</A> (Complex_Types.Real'Base); + + <b>procedure</b> <span class="symbol"><A NAME="ref_49_14" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_55_14">Put</A></span> + (<span class="symbol"><A NAME="ref_50_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_56_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + Item : Complex; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_58_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_51_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_59_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_52_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_60_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_53_4">Default_Exp</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_56_7">Win</A>, '('); + FIO.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_51_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_56_7">Win</A>, Item.Re, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_58_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_59_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_60_7">Exp</A>); + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_56_7">Win</A>, ','); + FIO.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_51_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_56_7">Win</A>, Item.Im, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_58_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_59_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_60_7">Exp</A>); + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_14">Put</A> (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_56_7">Win</A>, ')'); + <b>end</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_55_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_62_14">Put</A></span> + (Item : Complex; + <span class="symbol"><A NAME="ref_66_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_64_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_51_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_67_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_65_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_52_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_68_7" HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_66_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_53_4">Default_Exp</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_55_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, Item, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_64_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_65_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_66_7">Exp</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_62_14">Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_47_43">Complex_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm new file mode 100644 index 0000000..7abdb64 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-complex_io__ads.htm @@ -0,0 +1,89 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-complex_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-complex_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Complex_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Numerics.Generic_Complex_Types; + +<b>generic</b> + <b>with</b> <b>package</b> <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_47_43">Complex_Types</A> <b>is</b> <b>new</b> Ada.Numerics.Generic_Complex_Types (&lt;&gt;); + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_47_43" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_44_48">Complex_IO</A></span> <b>is</b> + + <b>use</b> Complex_Types; + + <span class="symbol"><A NAME="ref_51_4">Default_Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := 2; + <span class="symbol"><A NAME="ref_52_4">Default_Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := Real'<b>Digits</b> - 1; + <span class="symbol"><A NAME="ref_53_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := 3; + + <b>procedure</b> <span class="symbol"><A NAME="ref_55_14" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_49_14">Put</A></span> + (<span class="symbol"><A NAME="ref_56_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_50_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_55_14">Item</A> : Complex; + <span class="symbol"><A NAME="ref_58_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_52_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_51_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_53_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_52_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_60_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_54_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_53_4">Default_Exp</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_62_14" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_64_14">Put</A></span> + (<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_62_14">Item</A> : Complex; + <span class="symbol"><A NAME="ref_64_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_66_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_51_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_65_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_67_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_52_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_66_7" HREF="terminal_interface-curses-text_io-complex_io__adb.htm#ref_68_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_53_4">Default_Exp</A>); + +<b>private</b> + <b>pragma</b> Inline (Put); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-complex_io__ads.htm#ref_47_43">Complex_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm new file mode 100644 index 0000000..4dc8802 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-decimal_io__adb.htm @@ -0,0 +1,94 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-decimal_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-decimal_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Decimal_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Text_IO; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_48" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_45_43">Decimal_IO</A></span> <b>is</b> + + <b>package</b> <span class="symbol"><A NAME="ref_47_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + <b>package</b> DIO <b>is</b> <b>new</b> Ada.Text_IO.Decimal_IO (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_43_9">Num</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_51_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_52_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_53_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_54_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_55_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_56_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_49_4">Default_Exp</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_57_7">Buf</A></span> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>'Last); + <span class="symbol"><A NAME="ref_58_7">Len</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_54_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_55_7">Aft</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_56_7">Exp</A> &gt; 0 <b>then</b> + <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_58_7">Len</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_58_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_56_7">Exp</A>; + <b>end</b> <b>if</b>; + DIO.Put (<A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_53_7">Item</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_55_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_56_7">Exp</A>); + <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_47_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_52_7">Win</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_58_7">Len</A>, False); + <b>end</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_51_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_67_14" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_58_14">Put</A></span> + (<span class="symbol"><A NAME="ref_68_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_59_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_69_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_60_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_70_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_61_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_71_7" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_62_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_49_4">Default_Exp</A>) <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_51_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_59_7">Item</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_60_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_61_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_62_7">Exp</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_58_14">Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_45_43">Decimal_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm new file mode 100644 index 0000000..f3db7e7 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-decimal_io__ads.htm @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-decimal_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-decimal_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Decimal_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_45_43">Num</A></span> <b>is</b> <b>delta</b> &lt;&gt; <b>digits</b> &lt;&gt;; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_43" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_45_48">Decimal_IO</A></span> <b>is</b> + + <span class="symbol"><A NAME="ref_47_4">Default_Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_43_9">Num</A>'Fore; + <span class="symbol"><A NAME="ref_48_4">Default_Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_43_9">Num</A>'Aft; + <span class="symbol"><A NAME="ref_49_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := 0; + + <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_53_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_54_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_56_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_55_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_49_4">Default_Exp</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_58_14" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_67_14">Put</A></span> + (<span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_68_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_60_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_69_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_61_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_70_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_62_7" HREF="terminal_interface-curses-text_io-decimal_io__adb.htm#ref_71_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_49_4">Default_Exp</A>); + +<b>private</b> + <b>pragma</b> Inline (Put); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-decimal_io__ads.htm#ref_45_43">Decimal_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm new file mode 100644 index 0000000..fd959f1 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__adb.htm @@ -0,0 +1,99 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-enumeration_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-enumeration_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Enumeration_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Text_IO; +<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_46_48" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_45_43">Enumeration_IO</A></span> <b>is</b> + + <b>package</b> <span class="symbol"><A NAME="ref_48_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + <b>package</b> EIO <b>is</b> <b>new</b> Ada.Text_IO.Enumeration_IO (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_43_9">Enum</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_43_9">Enum</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_53_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_54_7">Set</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_48_4">Default_Setting</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_57_7">Buf</A></span> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>'Last); + <span class="symbol"><A NAME="ref_58_7">Tset</A></span> : Ada.Text_IO.Type_Set; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_54_7">Set</A> /= <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_46">Mixed_Case</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_58_7">Tset</A> := Ada.Text_IO.Type_Set'Val (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_9">Type_Set</A>'Pos (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_54_7">Set</A>)); + <b>else</b> + <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_58_7">Tset</A> := Ada.Text_IO.Lower_Case; + <b>end</b> <b>if</b>; + EIO.Put (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_58_7">Tset</A>); + <b>if</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_54_7">Set</A> = <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_46">Mixed_Case</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_57_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_57_7">Buf</A>'First) := To_Upper (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_57_7">Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_57_7">Buf</A>'First)); + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_48_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_53_7">Width</A>, True, True); + <b>end</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_50_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_72_14" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_56_14">Put</A></span> + (<span class="symbol"><A NAME="ref_73_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_57_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_43_9">Enum</A>; + <span class="symbol"><A NAME="ref_74_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_58_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_75_7" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_59_7">Set</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_48_4">Default_Setting</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_50_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_57_7">Item</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_58_7">Width</A>, <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_59_7">Set</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_56_14">Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_45_43">Enumeration_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm new file mode 100644 index 0000000..d29a51e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-enumeration_io__ads.htm @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-enumeration_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-enumeration_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Enumeration_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_45_43">Enum</A></span> <b>is</b> (&lt;&gt;); + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_43" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_46_48">Enumeration_IO</A></span> <b>is</b> + + <span class="symbol"><A NAME="ref_47_4">Default_Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := 0; + <span class="symbol"><A NAME="ref_48_4">Default_Setting</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_46">Mixed_Case</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_51_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_52_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_53_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_43_9">Enum</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_54_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_55_7">Set</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_48_4">Default_Setting</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_56_14" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_72_14">Put</A></span> + (<span class="symbol"><A NAME="ref_57_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_73_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_43_9">Enum</A>; + <span class="symbol"><A NAME="ref_58_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_74_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-text_io-enumeration_io__adb.htm#ref_75_7">Set</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_54_9">Type_Set</A> := <A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_48_4">Default_Setting</A>); + +<b>private</b> + <b>pragma</b> Inline (Put); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-enumeration_io__ads.htm#ref_45_43">Enumeration_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm new file mode 100644 index 0000000..51b88dc --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-fixed_io__adb.htm @@ -0,0 +1,94 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-fixed_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-fixed_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Fixed_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Text_IO; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_48" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_45_43">Fixed_IO</A></span> <b>is</b> + + <b>package</b> <span class="symbol"><A NAME="ref_47_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + <b>package</b> FIXIO <b>is</b> <b>new</b> Ada.Text_IO.Fixed_IO (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_43_9">Num</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_51_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_52_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_53_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_54_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_55_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_56_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_49_4">Default_Exp</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_57_7">Buf</A></span> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>'Last); + <span class="symbol"><A NAME="ref_58_7">Len</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_54_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_55_7">Aft</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_56_7">Exp</A> &gt; 0 <b>then</b> + <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_58_7">Len</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_58_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_56_7">Exp</A>; + <b>end</b> <b>if</b>; + FIXIO.Put (<A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_53_7">Item</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_55_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_56_7">Exp</A>); + <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_47_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_52_7">Win</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_58_7">Len</A>, False); + <b>end</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_51_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_67_14" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_58_14">Put</A></span> + (<span class="symbol"><A NAME="ref_68_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_59_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_69_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_60_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_70_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_61_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_71_7" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_62_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_49_4">Default_Exp</A>) <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_51_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_59_7">Item</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_60_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_61_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_62_7">Exp</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_58_14">Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_45_43">Fixed_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm new file mode 100644 index 0000000..f6f9eb8 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-fixed_io__ads.htm @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-fixed_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-fixed_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Fixed_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_45_43">Num</A></span> <b>is</b> <b>delta</b> &lt;&gt;; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_43" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_45_48">Fixed_IO</A></span> <b>is</b> + + <span class="symbol"><A NAME="ref_47_4">Default_Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_43_9">Num</A>'Fore; + <span class="symbol"><A NAME="ref_48_4">Default_Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_43_9">Num</A>'Aft; + <span class="symbol"><A NAME="ref_49_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := 0; + + <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_53_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_54_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_56_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_55_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_49_4">Default_Exp</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_58_14" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_67_14">Put</A></span> + (<span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_68_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_60_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_69_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_61_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_70_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_62_7" HREF="terminal_interface-curses-text_io-fixed_io__adb.htm#ref_71_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_49_4">Default_Exp</A>); + +<b>private</b> + <b>pragma</b> Inline (Put); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-fixed_io__ads.htm#ref_45_43">Fixed_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm new file mode 100644 index 0000000..d151232 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-float_io__adb.htm @@ -0,0 +1,95 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-float_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-float_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Float_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Text_IO; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_48" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_45_43">Float_IO</A></span> <b>is</b> + + <b>package</b> <span class="symbol"><A NAME="ref_47_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + <b>package</b> FIO <b>is</b> <b>new</b> Ada.Text_IO.Float_IO (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_43_9">Num</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_51_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_52_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_53_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_54_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_55_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_56_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_49_4">Default_Exp</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_57_7">Buf</A></span> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>'Last); + <span class="symbol"><A NAME="ref_58_7">Len</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_54_7">Fore</A> + 1 + <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_55_7">Aft</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_56_7">Exp</A> &gt; 0 <b>then</b> + <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_58_7">Len</A> := <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_58_7">Len</A> + 1 + <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_56_7">Exp</A>; + <b>end</b> <b>if</b>; + FIO.Put (<A HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_53_7">Item</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_55_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_56_7">Exp</A>); + <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_47_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_52_7">Win</A>, <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_57_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_58_7">Len</A>, False); + <b>end</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_51_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_67_14" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_58_14">Put</A></span> + (<span class="symbol"><A NAME="ref_68_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_59_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_69_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_60_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_70_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_61_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_71_7" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_62_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_49_4">Default_Exp</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_51_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_59_7">Item</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_60_7">Fore</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_61_7">Aft</A>, <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_62_7">Exp</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_58_14">Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_45_43">Float_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm new file mode 100644 index 0000000..4b16d63 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-float_io__ads.htm @@ -0,0 +1,85 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-float_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-float_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Float_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_45_43">Num</A></span> <b>is</b> <b>digits</b> &lt;&gt;; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_43" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_45_48">Float_IO</A></span> <b>is</b> + + <span class="symbol"><A NAME="ref_47_4">Default_Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := 2; + <span class="symbol"><A NAME="ref_48_4">Default_Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_43_9">Num</A>'<b>Digits</b> - 1; + <span class="symbol"><A NAME="ref_49_4">Default_Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := 3; + + <b>procedure</b> <span class="symbol"><A NAME="ref_51_14" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_53_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_55_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_54_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_56_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_55_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_49_4">Default_Exp</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_58_14" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_67_14">Put</A></span> + (<span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_68_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_60_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_69_7">Fore</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_47_4">Default_Fore</A>; + <span class="symbol"><A NAME="ref_61_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_70_7">Aft</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_48_4">Default_Aft</A>; + <span class="symbol"><A NAME="ref_62_7" HREF="terminal_interface-curses-text_io-float_io__adb.htm#ref_71_7">Exp</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_49_4">Default_Exp</A>); + +<b>private</b> + <b>pragma</b> Inline (Put); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-float_io__ads.htm#ref_45_43">Float_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm new file mode 100644 index 0000000..d92a03d --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-integer_io__adb.htm @@ -0,0 +1,89 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-integer_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-integer_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Integer_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Text_IO; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_48" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_45_43">Integer_IO</A></span> <b>is</b> + + <b>package</b> <span class="symbol"><A NAME="ref_47_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + <b>package</b> IIO <b>is</b> <b>new</b> Ada.Text_IO.Integer_IO (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_43_9">Num</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_53_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_54_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_48_4">Default_Base</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_56_7">Buf</A></span> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>'Last); + <b>begin</b> + IIO.Put (<A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_54_7">Base</A>); + <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_47_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_53_7">Width</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_50_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_62_14" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_56_14">Put</A></span> + (<span class="symbol"><A NAME="ref_63_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_57_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_64_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_58_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_65_7" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_59_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_48_4">Default_Base</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_50_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_57_7">Item</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_58_7">Width</A>, <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_59_7">Base</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_56_14">Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_45_43">Integer_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm new file mode 100644 index 0000000..52be27e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-integer_io__ads.htm @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-integer_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-integer_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Integer_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_45_43">Num</A></span> <b>is</b> <b>range</b> &lt;&gt;; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_43" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_45_48">Integer_IO</A></span> <b>is</b> + + <span class="symbol"><A NAME="ref_47_4">Default_Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_43_9">Num</A>'Width; + <span class="symbol"><A NAME="ref_48_4">Default_Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := 10; + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_53_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_54_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_48_4">Default_Base</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_56_14" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_62_14">Put</A></span> + (<span class="symbol"><A NAME="ref_57_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_63_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_58_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_64_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-text_io-integer_io__adb.htm#ref_65_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_48_4">Default_Base</A>); + +<b>private</b> + <b>pragma</b> Inline (Put); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-integer_io__ads.htm#ref_45_43">Integer_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm new file mode 100644 index 0000000..bc5ebf8 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-modular_io__adb.htm @@ -0,0 +1,89 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-modular_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-modular_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Modular_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Text_IO; +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_48" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_45_43">Modular_IO</A></span> <b>is</b> + + <b>package</b> <span class="symbol"><A NAME="ref_47_12">Aux</A></span> <b>renames</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_43_51">Aux</A>; + <b>package</b> MIO <b>is</b> <b>new</b> Ada.Text_IO.Modular_IO (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_43_9">Num</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_53_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_54_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_48_4">Default_Base</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_56_7">Buf</A></span> : String (1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A>'Last); + <b>begin</b> + MIO.Put (<A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_52_7">Item</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_54_7">Base</A>); + <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_47_12">Aux</A>.<A HREF="terminal_interface-curses-text_io-aux__ads.htm#ref_49_14">Put_Buf</A> (<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_51_7">Win</A>, <A HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_56_7">Buf</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_53_7">Width</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_50_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_62_14" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_56_14">Put</A></span> + (<span class="symbol"><A NAME="ref_63_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_57_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_64_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_58_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_65_7" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_59_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_48_4">Default_Base</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_50_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_57_7">Item</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_58_7">Width</A>, <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_59_7">Base</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_56_14">Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_45_43">Modular_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm new file mode 100644 index 0000000..f78a369 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io-modular_io__ads.htm @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io-modular_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io-modular_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO.Modular_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.13 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>generic</b> + <b>type</b> <span class="symbol"><A NAME="ref_43_9" HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_45_43">Num</A></span> <b>is</b> <b>mod</b> &lt;&gt;; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<span class="symbol"><A NAME="ref_45_43" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_45_48">Modular_IO</A></span> <b>is</b> + + <span class="symbol"><A NAME="ref_47_4">Default_Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_43_9">Num</A>'Width; + <span class="symbol"><A NAME="ref_48_4">Default_Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := 10; + + <b>procedure</b> <span class="symbol"><A NAME="ref_50_14" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_50_14">Put</A></span> + (<span class="symbol"><A NAME="ref_51_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_51_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_52_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_52_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_53_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_53_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_54_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_54_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_48_4">Default_Base</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_56_14" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_62_14">Put</A></span> + (<span class="symbol"><A NAME="ref_57_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_63_7">Item</A></span> : <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_43_9">Num</A>; + <span class="symbol"><A NAME="ref_58_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_64_7">Width</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_51_12">Field</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_47_4">Default_Width</A>; + <span class="symbol"><A NAME="ref_59_7" HREF="terminal_interface-curses-text_io-modular_io__adb.htm#ref_65_7">Base</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_52_12">Number_Base</A> := <A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_48_4">Default_Base</A>); + +<b>private</b> + <b>pragma</b> Inline (Put); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>.<A HREF="terminal_interface-curses-text_io-modular_io__ads.htm#ref_45_43">Modular_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io__adb.htm new file mode 100644 index 0000000..a199711 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io__adb.htm @@ -0,0 +1,357 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.23 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_43_40" HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A></span> <b>is</b> + + <span class="symbol"><A NAME="ref_45_4">Default_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_47_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_60_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_47_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_60_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_45_4">Default_Window</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_60_26">Win</A>; + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_60_14">Set_Window</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_53_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_45_4">Default_Window</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <b>else</b> + <b>return</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_45_4">Default_Window</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_64_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_66_14">Flush</A></span> (<span class="symbol"><A NAME="ref_64_21" HREF="terminal_interface-curses-text_io__ads.htm#ref_66_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1216_14">Refresh</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_66_21">Win</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_66_14">Flush</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_70_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_67_14">Flush</A></span> + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_66_14">Flush</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_67_14">Flush</A>; + + <span class="comment"><EM>--------------------------------------------</EM></span> + <span class="comment"><EM>-- Specification of line and page lengths --</EM></span> + <span class="comment"><EM>--------------------------------------------</EM></span> + + <span class="comment"><EM>-- There are no set routines in this package. I assume, that you allocate</EM></span> + <span class="comment"><EM>-- the window with an appropriate size.</EM></span> + <span class="comment"><EM>-- A scroll-window is interpreted as an page with unbounded page length,</EM></span> + <span class="comment"><EM>-- i.e. it returns the conventional 0 as page length.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_85_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_78_13">Line_Length</A></span> (<span class="symbol"><A NAME="ref_85_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_78_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> + <b>is</b> + <span class="symbol"><A NAME="ref_87_7">N_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_88_7">N_Cols</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_78_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_87_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_88_7">N_Cols</A>); + <span class="comment"><EM>-- if Natural (N_Cols) &gt; Natural (Count'Last) then</EM></span> + <span class="comment"><EM>-- raise Layout_Error;</EM></span> + <span class="comment"><EM>-- end if;</EM></span> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_88_7">N_Cols</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_78_13">Line_Length</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_97_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_79_13">Line_Length</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_78_13">Line_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_79_13">Line_Length</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_103_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_81_13">Page_Length</A></span> (<span class="symbol"><A NAME="ref_103_26" HREF="terminal_interface-curses-text_io__ads.htm#ref_81_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> + <b>is</b> + <span class="symbol"><A NAME="ref_105_7">N_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_106_7">N_Cols</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1193_13">Scrolling_Allowed</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_81_26">Win</A>) <b>then</b> + <b>return</b> 0; + <b>else</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_81_26">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_105_7">N_Lines</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_106_7">N_Cols</A>); + <span class="comment"><EM>-- if Natural (N_Lines) &gt; Natural (Count'Last) then</EM></span> + <span class="comment"><EM>-- raise Layout_Error;</EM></span> + <span class="comment"><EM>-- end if;</EM></span> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_105_7">N_Lines</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_81_13">Page_Length</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_119_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_82_13">Page_Length</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_82_13">Page_Length</A>; + + <span class="comment"><EM>------------------------------------</EM></span> + <span class="comment"><EM>-- Column, Line, and Page Control --</EM></span> + <span class="comment"><EM>------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_128_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_128_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_87_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_128_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_87_38">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> := 1) + <b>is</b> + <span class="symbol"><A NAME="ref_130_7">P_Size</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_24">Win</A>); + <b>begin</b> + <b>if</b> <b>not</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_38">Spacing</A>'Valid <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + + <b>for</b> <span class="symbol"><A NAME="ref_136_11">I</A></span> <b>in</b> 1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_38">Spacing</A> <b>loop</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_130_7">P_Size</A> &gt; 0 <b>and</b> <b>then</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_102_13">Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_24">Win</A>) &gt;= <A HREF="terminal_interface-curses-text_io__adb.htm#ref_130_7">P_Size</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_24">Win</A>); + <b>else</b> + <A HREF="terminal_interface-curses__ads.htm#ref_699_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_24">Win</A>, ASCII.LF); + <b>end</b> <b>if</b>; + <b>end</b> <b>loop</b>; + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_145_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_88_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_145_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_88_24">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> := 1) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_88_24">Spacing</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_88_14">New_Line</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_151_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A></span> (<span class="symbol"><A NAME="ref_151_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_90_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1251_14">Clear</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_24">Win</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_157_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_91_14">New_Page</A></span> + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_91_14">New_Page</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_163_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_93_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_163_23" HREF="terminal_interface-curses-text_io__ads.htm#ref_93_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_163_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_93_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_165_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_166_7">X1</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_167_7">X2</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_168_7">N</A></span> : Natural; + <b>begin</b> + <b>if</b> <b>not</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_38">To</A>'Valid <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + + <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_165_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X1</A>); + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_168_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_38">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_168_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_168_7">N</A> - 1; + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">X2</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_168_7">N</A>); + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X1</A> &gt; <A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">X2</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_23">Win</A>, 1); + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X1</A> := 0; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X1</A> &lt; <A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">X2</A> <b>then</b> + <b>declare</b> + <span class="symbol"><A NAME="ref_183_13">Filler</A></span> : <b>constant</b> String (Integer (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_166_7">X1</A>) .. (Integer (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_167_7">X2</A>) - 1)) + := (<b>others</b> =&gt; ' '); + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_23">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_183_13">Filler</A>); + <b>end</b>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_14">Set_Col</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_191_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_94_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_191_23" HREF="terminal_interface-curses-text_io__ads.htm#ref_94_23">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_93_14">Set_Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_94_23">To</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_94_14">Set_Col</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_197_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_96_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_197_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_96_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_197_38" HREF="terminal_interface-curses-text_io__ads.htm#ref_96_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_199_7">Y1</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_200_7">Y2</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_201_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_202_7">N</A></span> : Natural; + <b>begin</b> + <b>if</b> <b>not</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_38">To</A>'Valid <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + + <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_24">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y1</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_201_7">X</A>); + <b>pragma</b> Warnings (Off, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_201_7">X</A>); <span class="comment"><EM>-- unreferenced</EM></span> + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_202_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_38">To</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_202_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_202_7">N</A> - 1; + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">Y2</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_202_7">N</A>); + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">Y2</A> &lt; <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y1</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_24">Win</A>); + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y1</A> := 0; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y1</A> &lt; <A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">Y2</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_24">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_200_7">Y2</A> - <A HREF="terminal_interface-curses-text_io__adb.htm#ref_199_7">Y1</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_14">Set_Line</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_221_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_97_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_221_24" HREF="terminal_interface-curses-text_io__ads.htm#ref_97_24">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_96_14">Set_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_97_24">To</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_97_14">Set_Line</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_227_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_99_13">Col</A></span> (<span class="symbol"><A NAME="ref_227_18" HREF="terminal_interface-curses-text_io__ads.htm#ref_99_18">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> + <b>is</b> + <span class="symbol"><A NAME="ref_229_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_230_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_231_7">N</A></span> : Natural; + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_99_18">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_229_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_230_7">X</A>); + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_231_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_230_7">X</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_231_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_231_7">N</A> + 1; + <span class="comment"><EM>-- if N &gt; Natural (Count'Last) then</EM></span> + <span class="comment"><EM>-- raise Layout_Error;</EM></span> + <span class="comment"><EM>-- end if;</EM></span> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_231_7">N</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_99_13">Col</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_241_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_100_13">Col</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_99_13">Col</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_100_13">Col</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_247_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_102_13">Line</A></span> (<span class="symbol"><A NAME="ref_247_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_102_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> + <b>is</b> + <span class="symbol"><A NAME="ref_249_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_250_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_251_7">N</A></span> : Natural; + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_102_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_249_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_250_7">X</A>); + <A HREF="terminal_interface-curses-text_io__adb.htm#ref_251_7">N</A> := Natural (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_249_7">Y</A>); <A HREF="terminal_interface-curses-text_io__adb.htm#ref_251_7">N</A> := <A HREF="terminal_interface-curses-text_io__adb.htm#ref_251_7">N</A> + 1; + <span class="comment"><EM>-- if N &gt; Natural (Count'Last) then</EM></span> + <span class="comment"><EM>-- raise Layout_Error;</EM></span> + <span class="comment"><EM>-- end if;</EM></span> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_251_7">N</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_102_13">Line</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_261_13" HREF="terminal_interface-curses-text_io__ads.htm#ref_103_13">Line</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_102_13">Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_103_13">Line</A>; + + <span class="comment"><EM>-----------------------</EM></span> + <span class="comment"><EM>-- Characters Output --</EM></span> + <span class="comment"><EM>-----------------------</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_271_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_109_14">Put</A></span> (<span class="symbol"><A NAME="ref_271_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_109_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_271_34" HREF="terminal_interface-curses-text_io__ads.htm#ref_109_34">Item</A></span> : Character) + <b>is</b> + <span class="symbol"><A NAME="ref_273_7">P_Size</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_19">Win</A>); + <span class="symbol"><A NAME="ref_274_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_275_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_276_7">L</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_277_7">C</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_273_7">P_Size</A> &gt; 0 <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_274_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_275_7">X</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_276_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_277_7">C</A>); + <b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_274_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#ref_276_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_275_7">X</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#ref_277_7">C</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_19">Win</A>); + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__ads.htm#ref_699_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_34">Item</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_289_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_110_14">Put</A></span> (<span class="symbol"><A NAME="ref_289_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_110_19">Item</A></span> : Character) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_109_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_110_19">Item</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_110_14">Put</A>; + + <span class="comment"><EM>--------------------</EM></span> + <span class="comment"><EM>-- Strings-Output --</EM></span> + <span class="comment"><EM>--------------------</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_299_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A></span> (<span class="symbol"><A NAME="ref_299_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_116_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_299_34" HREF="terminal_interface-curses-text_io__ads.htm#ref_116_34">Item</A></span> : String) + <b>is</b> + <span class="symbol"><A NAME="ref_301_7">P_Size</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> := <A HREF="terminal_interface-curses-text_io__ads.htm#ref_81_13">Page_Length</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_19">Win</A>); + <span class="symbol"><A NAME="ref_302_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_303_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_304_7">L</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_305_7">C</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses-text_io__adb.htm#ref_301_7">P_Size</A> &gt; 0 <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_302_7">Y</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_303_7">X</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_19">Win</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_304_7">L</A>, <A HREF="terminal_interface-curses-text_io__adb.htm#ref_305_7">C</A>); + <b>if</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_302_7">Y</A> + 1) = <A HREF="terminal_interface-curses-text_io__adb.htm#ref_304_7">L</A> <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses-text_io__adb.htm#ref_303_7">X</A> + 1 + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_34">Item</A>'Length) &gt;= <A HREF="terminal_interface-curses-text_io__adb.htm#ref_305_7">C</A> <b>then</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_90_14">New_Page</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_19">Win</A>); + <b>end</b> <b>if</b>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__ads.htm#ref_824_14">Add</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_19">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_34">Item</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_317_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_117_14">Put</A></span> (<span class="symbol"><A NAME="ref_317_19" HREF="terminal_interface-curses-text_io__ads.htm#ref_117_19">Item</A></span> : String) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_117_19">Item</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_117_14">Put</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_323_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_119_14">Put_Line</A></span> + (<span class="symbol"><A NAME="ref_324_7" HREF="terminal_interface-curses-text_io__ads.htm#ref_120_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_325_7" HREF="terminal_interface-curses-text_io__ads.htm#ref_121_7">Item</A></span> : String) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_116_14">Put</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_120_7">Win</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_121_7">Item</A>); + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_87_14">New_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_120_7">Win</A>, 1); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_119_14">Put_Line</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_332_14" HREF="terminal_interface-curses-text_io__ads.htm#ref_123_14">Put_Line</A></span> + (<span class="symbol"><A NAME="ref_333_7" HREF="terminal_interface-curses-text_io__ads.htm#ref_124_7">Item</A></span> : String) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses-text_io__ads.htm#ref_119_14">Put_Line</A> (<A HREF="terminal_interface-curses-text_io__ads.htm#ref_63_13">Get_Window</A>, <A HREF="terminal_interface-curses-text_io__ads.htm#ref_124_7">Item</A>); + <b>end</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_123_14">Put_Line</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io__ads.htm new file mode 100644 index 0000000..03ee64b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-text_io__ads.htm @@ -0,0 +1,155 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-text_io.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-text_io.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Text_IO --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2009 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.15 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> Ada.Text_IO; +<b>with</b> Ada.IO_Exceptions; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_45_35" HREF="terminal_interface-curses-text_io__adb.htm#ref_43_40">Text_IO</A></span> <b>is</b> + + <b>use</b> <b>type</b> Ada.Text_IO.Count; + <b>subtype</b> <span class="symbol"><A NAME="ref_48_12">Count</A></span> <b>is</b> Ada.Text_IO.Count; + <b>subtype</b> <span class="symbol"><A NAME="ref_49_12">Positive_Count</A></span> <b>is</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A>'Last; + + <b>subtype</b> <span class="symbol"><A NAME="ref_51_12">Field</A></span> <b>is</b> Ada.Text_IO.Field; + <b>subtype</b> <span class="symbol"><A NAME="ref_52_12">Number_Base</A></span> <b>is</b> Integer <b>range</b> 2 .. 16; + + <b>type</b> <span class="symbol"><A NAME="ref_54_9">Type_Set</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_54_22">Lower_Case</A></span>, <span class="symbol"><A NAME="ref_54_34">Upper_Case</A></span>, <span class="symbol"><A NAME="ref_54_46">Mixed_Case</A></span>); + + <span class="comment"><EM>-- For most of the routines you will see a version without a Window</EM></span> + <span class="comment"><EM>-- type parameter. They will operate on a default window, which can</EM></span> + <span class="comment"><EM>-- be set by the user. It is initially equal to Standard_Window.</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_60_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_47_14">Set_Window</A></span> (<span class="symbol"><A NAME="ref_60_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_47_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- Set Win as the default window</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_63_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_53_13">Get_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- Get the current default window</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_66_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_64_14">Flush</A></span> (<span class="symbol"><A NAME="ref_66_21" HREF="terminal_interface-curses-text_io__adb.htm#ref_64_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <b>procedure</b> <span class="symbol"><A NAME="ref_67_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_70_14">Flush</A></span>; + + <span class="comment"><EM>--------------------------------------------</EM></span> + <span class="comment"><EM>-- Specification of line and page lengths --</EM></span> + <span class="comment"><EM>--------------------------------------------</EM></span> + + <span class="comment"><EM>-- There are no set routines in this package. I assume, that you allocate</EM></span> + <span class="comment"><EM>-- the window with an appropriate size.</EM></span> + <span class="comment"><EM>-- A scroll-window is interpreted as an page with unbounded page length,</EM></span> + <span class="comment"><EM>-- i.e. it returns the conventional 0 as page length.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_78_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_85_13">Line_Length</A></span> (<span class="symbol"><A NAME="ref_78_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_85_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A>; + <b>function</b> <span class="symbol"><A NAME="ref_79_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_97_13">Line_Length</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_81_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_103_13">Page_Length</A></span> (<span class="symbol"><A NAME="ref_81_26" HREF="terminal_interface-curses-text_io__adb.htm#ref_103_26">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A>; + <b>function</b> <span class="symbol"><A NAME="ref_82_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_119_13">Page_Length</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_48_12">Count</A>; + + <span class="comment"><EM>------------------------------------</EM></span> + <span class="comment"><EM>-- Column, Line, and Page Control --</EM></span> + <span class="comment"><EM>------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_87_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_128_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_87_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_128_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_87_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_128_38">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> := 1); + <b>procedure</b> <span class="symbol"><A NAME="ref_88_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_145_14">New_Line</A></span> (<span class="symbol"><A NAME="ref_88_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_145_24">Spacing</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A> := 1); + + <b>procedure</b> <span class="symbol"><A NAME="ref_90_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_151_14">New_Page</A></span> (<span class="symbol"><A NAME="ref_90_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_151_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <b>procedure</b> <span class="symbol"><A NAME="ref_91_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_157_14">New_Page</A></span>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_93_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_163_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_93_23" HREF="terminal_interface-curses-text_io__adb.htm#ref_163_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_93_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_163_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>); + <b>procedure</b> <span class="symbol"><A NAME="ref_94_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_191_14">Set_Col</A></span> (<span class="symbol"><A NAME="ref_94_23" HREF="terminal_interface-curses-text_io__adb.htm#ref_191_23">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>); + + <b>procedure</b> <span class="symbol"><A NAME="ref_96_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_197_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_96_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_197_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_96_38" HREF="terminal_interface-curses-text_io__adb.htm#ref_197_38">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>); + <b>procedure</b> <span class="symbol"><A NAME="ref_97_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_221_14">Set_Line</A></span> (<span class="symbol"><A NAME="ref_97_24" HREF="terminal_interface-curses-text_io__adb.htm#ref_221_24">To</A></span> : <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_99_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_227_13">Col</A></span> (<span class="symbol"><A NAME="ref_99_18" HREF="terminal_interface-curses-text_io__adb.htm#ref_227_18">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>; + <b>function</b> <span class="symbol"><A NAME="ref_100_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_241_13">Col</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_102_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_247_13">Line</A></span> (<span class="symbol"><A NAME="ref_102_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_247_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>; + <b>function</b> <span class="symbol"><A NAME="ref_103_13" HREF="terminal_interface-curses-text_io__adb.htm#ref_261_13">Line</A></span> <b>return</b> <A HREF="terminal_interface-curses-text_io__ads.htm#ref_49_12">Positive_Count</A>; + + <span class="comment"><EM>-----------------------</EM></span> + <span class="comment"><EM>-- Characters-Output --</EM></span> + <span class="comment"><EM>-----------------------</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_109_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_271_14">Put</A></span> (<span class="symbol"><A NAME="ref_109_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_271_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_109_34" HREF="terminal_interface-curses-text_io__adb.htm#ref_271_34">Item</A></span> : Character); + <b>procedure</b> <span class="symbol"><A NAME="ref_110_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_289_14">Put</A></span> (<span class="symbol"><A NAME="ref_110_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_289_19">Item</A></span> : Character); + + <span class="comment"><EM>--------------------</EM></span> + <span class="comment"><EM>-- Strings-Output --</EM></span> + <span class="comment"><EM>--------------------</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_116_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_299_14">Put</A></span> (<span class="symbol"><A NAME="ref_116_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_299_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_116_34" HREF="terminal_interface-curses-text_io__adb.htm#ref_299_34">Item</A></span> : String); + <b>procedure</b> <span class="symbol"><A NAME="ref_117_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_317_14">Put</A></span> (<span class="symbol"><A NAME="ref_117_19" HREF="terminal_interface-curses-text_io__adb.htm#ref_317_19">Item</A></span> : String); + + <b>procedure</b> <span class="symbol"><A NAME="ref_119_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_323_14">Put_Line</A></span> + (<span class="symbol"><A NAME="ref_120_7" HREF="terminal_interface-curses-text_io__adb.htm#ref_324_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_121_7" HREF="terminal_interface-curses-text_io__adb.htm#ref_325_7">Item</A></span> : String); + + <b>procedure</b> <span class="symbol"><A NAME="ref_123_14" HREF="terminal_interface-curses-text_io__adb.htm#ref_332_14">Put_Line</A></span> + (<span class="symbol"><A NAME="ref_124_7" HREF="terminal_interface-curses-text_io__adb.htm#ref_333_7">Item</A></span> : String); + + <span class="comment"><EM>-- Exceptions</EM></span> + + <span class="symbol"><A NAME="ref_128_4">Status_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Status_Error; + <span class="symbol"><A NAME="ref_129_4">Mode_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Mode_Error; + <span class="symbol"><A NAME="ref_130_4">Name_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Name_Error; + <span class="symbol"><A NAME="ref_131_4">Use_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Use_Error; + <span class="symbol"><A NAME="ref_132_4">Device_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Device_Error; + <span class="symbol"><A NAME="ref_133_4">End_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.End_Error; + <span class="symbol"><A NAME="ref_134_4">Data_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Data_Error; + <span class="symbol"><A NAME="ref_135_4">Layout_Error</A></span> : <b>exception</b> <b>renames</b> Ada.IO_Exceptions.Layout_Error; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-text_io__ads.htm#ref_45_35">Text_IO</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-trace__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-trace__adb.htm new file mode 100644 index 0000000..a595210 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-trace__adb.htm @@ -0,0 +1,79 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-trace.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-trace.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Trace --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2001-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.12 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_44_40" HREF="terminal_interface-curses-trace__ads.htm#ref_43_35">Trace</A></span> <b>is</b> + + <b>procedure</b> <span class="symbol"><A NAME="ref_46_14" HREF="terminal_interface-curses-trace__ads.htm#ref_115_14">Trace_On</A></span> (<span class="symbol"><A NAME="ref_46_24" HREF="terminal_interface-curses-trace__ads.htm#ref_115_24">x</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>) <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_47_17">traceC</A></span> (<span class="symbol"><A NAME="ref_47_25" HREF="terminal_interface-curses-trace__adb.htm#ref_47_17">y</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>); + <b>pragma</b> Import (C, traceC, "trace"); + <b>begin</b> + <A HREF="terminal_interface-curses-trace__adb.htm#ref_47_17">traceC</A> (<A HREF="terminal_interface-curses-trace__ads.htm#ref_115_24">x</A>); + <b>end</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_115_14">Trace_On</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_53_14" HREF="terminal_interface-curses-trace__ads.htm#ref_119_14">Trace_Put</A></span> (<span class="symbol"><A NAME="ref_53_25" HREF="terminal_interface-curses-trace__ads.htm#ref_119_25">str</A></span> : String) <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_54_17">tracef</A></span> (<span class="symbol"><A NAME="ref_54_25" HREF="terminal_interface-curses-trace__adb.htm#ref_54_17">format</A></span> : char_array; <span class="symbol"><A NAME="ref_54_46" HREF="terminal_interface-curses-trace__adb.htm#ref_54_17">s</A></span> : char_array); + <b>pragma</b> Import (C, tracef, "_traces"); + <span class="comment"><EM>-- _traces() is defined in c_varargs_to_ada.h</EM></span> + <b>begin</b> + <A HREF="terminal_interface-curses-trace__adb.htm#ref_54_17">tracef</A> (To_C ("%s"), To_C (<A HREF="terminal_interface-curses-trace__ads.htm#ref_119_25">str</A>)); + <b>end</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_119_14">Trace_Put</A>; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_43_35">Trace</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-trace__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-trace__ads.htm new file mode 100644 index 0000000..136c93f --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses-trace__ads.htm @@ -0,0 +1,143 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses-trace.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses-trace.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses.Trace --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2000,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Eugene V. Melaragno &lt;aldomel@ix.netcom.com&gt; 2000</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.5 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<span class="symbol"><A NAME="ref_43_35" HREF="terminal_interface-curses-trace__adb.htm#ref_44_40">Trace</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_43_35">Trace</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_46_9">Trace_Attribute_Set</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_48_10">Times</A></span> : Boolean; + <span class="symbol"><A NAME="ref_49_10">Tputs</A></span> : Boolean; + <span class="symbol"><A NAME="ref_50_10">Update</A></span> : Boolean; + <span class="symbol"><A NAME="ref_51_10">Cursor_Move</A></span> : Boolean; + <span class="symbol"><A NAME="ref_52_10">Character_Output</A></span> : Boolean; + <span class="symbol"><A NAME="ref_53_10">Calls</A></span> : Boolean; + <span class="symbol"><A NAME="ref_54_10">Virtual_Puts</A></span> : Boolean; + <span class="symbol"><A NAME="ref_55_10">Input_Events</A></span> : Boolean; + <span class="symbol"><A NAME="ref_56_10">TTY_State</A></span> : Boolean; + <span class="symbol"><A NAME="ref_57_10">Internal_Calls</A></span> : Boolean; + <span class="symbol"><A NAME="ref_58_10">Character_Calls</A></span> : Boolean; + <span class="symbol"><A NAME="ref_59_10">Termcap_TermInfo</A></span> : Boolean; + <span class="symbol"><A NAME="ref_60_10">Attribute_Color</A></span> : Boolean; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>); + + <b>for</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses-trace__ads.htm#ref_48_10">Times</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_356_4">TRACE_TIMES_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_357_4">TRACE_TIMES_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_49_10">Tputs</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_358_4">TRACE_TPUTS_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_359_4">TRACE_TPUTS_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_50_10">Update</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_360_4">TRACE_UPDATE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_361_4">TRACE_UPDATE_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_51_10">Cursor_Move</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_362_4">TRACE_MOVE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_363_4">TRACE_MOVE_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_52_10">Character_Output</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_364_4">TRACE_CHARPUT_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_365_4">TRACE_CHARPUT_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_53_10">Calls</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_366_4">TRACE_CALLS_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_367_4">TRACE_CALLS_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_54_10">Virtual_Puts</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_368_4">TRACE_VIRTPUT_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_369_4">TRACE_VIRTPUT_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_55_10">Input_Events</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_370_4">TRACE_IEVENT_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_371_4">TRACE_IEVENT_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_56_10">TTY_State</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_372_4">TRACE_BITS_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_373_4">TRACE_BITS_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_57_10">Internal_Calls</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_374_4">TRACE_ICALLS_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_375_4">TRACE_ICALLS_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_58_10">Character_Calls</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_376_4">TRACE_CCALLS_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_377_4">TRACE_CCALLS_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_59_10">Termcap_TermInfo</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_378_4">TRACE_DATABASE_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_379_4">TRACE_DATABASE_Last</A>; + <A HREF="terminal_interface-curses-trace__ads.htm#ref_60_10">Attribute_Color</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_380_4">TRACE_ATTRS_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_381_4">TRACE_ATTRS_Last</A>; + <b>end</b> <b>record</b>; + <b>pragma</b> Warnings (Off); + <b>for</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_382_4">Trace_Size</A>; + <b>pragma</b> Warnings (On); + + <span class="symbol"><A NAME="ref_97_4">Trace_Disable</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> := (<b>others</b> =&gt; False); + + <span class="symbol"><A NAME="ref_99_4">Trace_Ordinary</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> := + (<A HREF="terminal_interface-curses-trace__ads.htm#ref_48_10">Times</A> =&gt; True, + <A HREF="terminal_interface-curses-trace__ads.htm#ref_49_10">Tputs</A> =&gt; True, + <A HREF="terminal_interface-curses-trace__ads.htm#ref_50_10">Update</A> =&gt; True, + <A HREF="terminal_interface-curses-trace__ads.htm#ref_51_10">Cursor_Move</A> =&gt; True, + <A HREF="terminal_interface-curses-trace__ads.htm#ref_52_10">Character_Output</A> =&gt; True, + <b>others</b> =&gt; False); + <span class="symbol"><A NAME="ref_106_4">Trace_Maximum</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A> := (<b>others</b> =&gt; True); + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_115_14" HREF="terminal_interface-curses-trace__adb.htm#ref_46_14">Trace_On</A></span> (<span class="symbol"><A NAME="ref_115_24" HREF="terminal_interface-curses-trace__adb.htm#ref_46_24">x</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>); + <span class="comment"><EM>-- The debugging library has trace.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_119_14" HREF="terminal_interface-curses-trace__adb.htm#ref_53_14">Trace_Put</A></span> (<span class="symbol"><A NAME="ref_119_25" HREF="terminal_interface-curses-trace__adb.htm#ref_53_25">str</A></span> : String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_trace.3x.html">_tracef()</A></EM></span> + + <span class="symbol"><A NAME="ref_122_4">Current_Trace_Setting</A></span> : <A HREF="terminal_interface-curses-trace__ads.htm#ref_46_9">Trace_Attribute_Set</A>; + <b>pragma</b> Import (C, <A HREF="terminal_interface-curses-trace__ads.htm#ref_122_4">Current_Trace_Setting</A>, "_nc_tracing"); + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-trace__ads.htm#ref_43_35">Trace</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses__adb.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses__adb.htm new file mode 100644 index 0000000..ca1df91 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses__adb.htm @@ -0,0 +1,2575 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses.adb</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses.adb </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- B O D Y --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2018,2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 2007-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.16 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System; + +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>.<A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.Strings; +<b>with</b> Ada.Characters.Handling; <b>use</b> Ada.Characters.Handling; +<b>with</b> Ada.Strings.Fixed; + +<b>package</b> <b>body</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_51_33" HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A></span> <b>is</b> + + <b>use</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_46_35">Aux</A>; + + <b>package</b> <span class="symbol"><A NAME="ref_55_12">ASF</A></span> <b>renames</b> Ada.Strings.Fixed; + + <b>type</b> chtype_array <b>is</b> <b>array</b> (size_t <b>range</b> &lt;&gt;) + <b>of</b> <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Convention (C, chtype_array); + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_62_13" HREF="terminal_interface-curses__ads.htm#ref_1787_13">Key_Name</A></span> (<span class="symbol"><A NAME="ref_62_23" HREF="terminal_interface-curses__ads.htm#ref_1787_23">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_64_16">Keyname</A></span> (<span class="symbol"><A NAME="ref_64_25" HREF="terminal_interface-curses__adb.htm#ref_64_16">K</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Keyname, "keyname"); + + <span class="symbol"><A NAME="ref_67_7">Ch</A></span> : Character; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1787_23">Key</A> &lt;= Character'Pos (Character'Last) <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A> := Character'Val (<A HREF="terminal_interface-curses__ads.htm#ref_1787_23">Key</A>); + <b>if</b> Is_Control (<A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>) <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_1798_13">Un_Control</A> (<A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>)); + <b>elsif</b> Is_Graphic (<A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>) <b>then</b> + <b>declare</b> + <span class="symbol"><A NAME="ref_77_16">S</A></span> : String (1 .. 1); + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_77_16">S</A> (1) := <A HREF="terminal_interface-curses__adb.htm#ref_67_7">Ch</A>; + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_77_16">S</A>; + <b>end</b>; + <b>else</b> + <b>return</b> ""; + <b>end</b> <b>if</b>; + <b>else</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_64_16">Keyname</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1787_23">Key</A>))); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1787_13">Key_Name</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_90_14" HREF="terminal_interface-curses__ads.htm#ref_1781_14">Key_Name</A></span> (<span class="symbol"><A NAME="ref_90_24" HREF="terminal_interface-curses__ads.htm#ref_1781_24">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>; + <span class="symbol"><A NAME="ref_91_24" HREF="terminal_interface-curses__ads.htm#ref_1782_24">Name</A></span> : <b>out</b> String) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_55_12">ASF</A>.Move (<A HREF="terminal_interface-curses__ads.htm#ref_1787_13">Key_Name</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1781_24">Key</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1782_24">Name</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1781_14">Key_Name</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_98_14" HREF="terminal_interface-curses__ads.htm#ref_657_14">Init_Screen</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_100_16">Initscr</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Initscr, "initscr"); + + <span class="symbol"><A NAME="ref_103_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_103_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_100_16">Initscr</A>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_103_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_657_14">Init_Screen</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_111_14" HREF="terminal_interface-curses__ads.htm#ref_666_14">End_Windows</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_113_16">Endwin</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Endwin, "endwin"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_113_16">Endwin</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_666_14">End_Windows</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_121_13" HREF="terminal_interface-curses__ads.htm#ref_673_13">Is_End_Window</A></span> <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_123_16">Isendwin</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Isendwin, "isendwin"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_123_16">Isendwin</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_673_13">Is_End_Window</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_133_14" HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A></span> (<span class="symbol"><A NAME="ref_133_27" HREF="terminal_interface-curses__ads.htm#ref_682_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_134_27" HREF="terminal_interface-curses__ads.htm#ref_683_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_135_27" HREF="terminal_interface-curses__ads.htm#ref_684_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_137_16">Wmove</A></span> (<span class="symbol"><A NAME="ref_137_23" HREF="terminal_interface-curses__adb.htm#ref_137_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_138_23" HREF="terminal_interface-curses__adb.htm#ref_137_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_139_23" HREF="terminal_interface-curses__adb.htm#ref_137_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> + ) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wmove, "wmove"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_137_16">Wmove</A> (<A HREF="terminal_interface-curses__ads.htm#ref_682_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_683_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_684_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_148_14" HREF="terminal_interface-curses__ads.htm#ref_694_14">Add</A></span> (<span class="symbol"><A NAME="ref_148_19" HREF="terminal_interface-curses__ads.htm#ref_694_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_149_19" HREF="terminal_interface-curses__ads.htm#ref_695_19">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_151_16">Waddch</A></span> (<span class="symbol"><A NAME="ref_151_24" HREF="terminal_interface-curses__adb.htm#ref_151_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_152_24" HREF="terminal_interface-curses__adb.htm#ref_151_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Waddch, "waddch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_151_16">Waddch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_694_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_695_19">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_694_14">Add</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_160_14" HREF="terminal_interface-curses__ads.htm#ref_699_14">Add</A></span> (<span class="symbol"><A NAME="ref_160_19" HREF="terminal_interface-curses__ads.htm#ref_699_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_161_19" HREF="terminal_interface-curses__ads.htm#ref_700_19">Ch</A></span> : Character) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_694_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_699_19">Win</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_700_19">Ch</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>)); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_699_14">Add</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_170_14" HREF="terminal_interface-curses__ads.htm#ref_705_14">Add</A></span> + (<span class="symbol"><A NAME="ref_171_7" HREF="terminal_interface-curses__ads.htm#ref_706_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_172_7" HREF="terminal_interface-curses__ads.htm#ref_707_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_173_7" HREF="terminal_interface-curses__ads.htm#ref_708_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_174_7" HREF="terminal_interface-curses__ads.htm#ref_709_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_176_16">mvwaddch</A></span> (<span class="symbol"><A NAME="ref_176_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_177_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">Y</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_178_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">X</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_179_26" HREF="terminal_interface-curses__adb.htm#ref_176_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, mvwaddch, "mvwaddch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_176_16">mvwaddch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_706_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_707_7">Line</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_708_7">Column</A>), + <A HREF="terminal_interface-curses__ads.htm#ref_709_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_705_14">Add</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_190_14" HREF="terminal_interface-curses__ads.htm#ref_713_14">Add</A></span> + (<span class="symbol"><A NAME="ref_191_7" HREF="terminal_interface-curses__ads.htm#ref_714_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_192_7" HREF="terminal_interface-curses__ads.htm#ref_715_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_193_7" HREF="terminal_interface-curses__ads.htm#ref_716_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_194_7" HREF="terminal_interface-curses__ads.htm#ref_717_7">Ch</A></span> : Character) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_705_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_714_7">Win</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_715_7">Line</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_716_7">Column</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_717_7">Ch</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>)); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_713_14">Add</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_205_14" HREF="terminal_interface-curses__ads.htm#ref_722_14">Add_With_Immediate_Echo</A></span> + (<span class="symbol"><A NAME="ref_206_7" HREF="terminal_interface-curses__ads.htm#ref_723_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_207_7" HREF="terminal_interface-curses__ads.htm#ref_724_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_209_16">Wechochar</A></span> (<span class="symbol"><A NAME="ref_209_27" HREF="terminal_interface-curses__adb.htm#ref_209_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_210_27" HREF="terminal_interface-curses__adb.htm#ref_209_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wechochar, "wechochar"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_209_16">Wechochar</A> (<A HREF="terminal_interface-curses__ads.htm#ref_723_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_724_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_722_14">Add_With_Immediate_Echo</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_218_14" HREF="terminal_interface-curses__ads.htm#ref_728_14">Add_With_Immediate_Echo</A></span> + (<span class="symbol"><A NAME="ref_219_7" HREF="terminal_interface-curses__ads.htm#ref_729_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_220_7" HREF="terminal_interface-curses__ads.htm#ref_730_7">Ch</A></span> : Character) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_722_14">Add_With_Immediate_Echo</A> + (<A HREF="terminal_interface-curses__ads.htm#ref_729_7">Win</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_730_7">Ch</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>)); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_728_14">Add_With_Immediate_Echo</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_230_13" HREF="terminal_interface-curses__ads.htm#ref_740_13">Create</A></span> (<span class="symbol"><A NAME="ref_230_21" HREF="terminal_interface-curses__ads.htm#ref_741_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_231_21" HREF="terminal_interface-curses__ads.htm#ref_742_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_232_21" HREF="terminal_interface-curses__ads.htm#ref_743_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_233_21" HREF="terminal_interface-curses__ads.htm#ref_744_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_235_16">Newwin</A></span> (<span class="symbol"><A NAME="ref_235_24" HREF="terminal_interface-curses__adb.htm#ref_235_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_236_24" HREF="terminal_interface-curses__adb.htm#ref_235_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_237_24" HREF="terminal_interface-curses__adb.htm#ref_235_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_238_24" HREF="terminal_interface-curses__adb.htm#ref_235_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Newwin, "newwin"); + + <span class="symbol"><A NAME="ref_241_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_241_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_235_16">Newwin</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_741_7">Number_Of_Lines</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_742_7">Number_Of_Columns</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_743_7">First_Line_Position</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_744_7">First_Column_Position</A>)); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_241_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_241_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_740_13">Create</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_253_14" HREF="terminal_interface-curses__ads.htm#ref_759_14">Delete</A></span> (<span class="symbol"><A NAME="ref_253_22" HREF="terminal_interface-curses__ads.htm#ref_759_22">Win</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_255_16">Wdelwin</A></span> (<span class="symbol"><A NAME="ref_255_25" HREF="terminal_interface-curses__adb.htm#ref_255_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wdelwin, "delwin"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_255_16">Wdelwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_759_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__ads.htm#ref_759_22">Win</A> := <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_759_14">Delete</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_264_13" HREF="terminal_interface-curses__ads.htm#ref_765_13">Sub_Window</A></span> + (<span class="symbol"><A NAME="ref_265_7" HREF="terminal_interface-curses__ads.htm#ref_766_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_266_7" HREF="terminal_interface-curses__ads.htm#ref_767_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_267_7" HREF="terminal_interface-curses__ads.htm#ref_768_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_268_7" HREF="terminal_interface-curses__ads.htm#ref_769_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_269_7" HREF="terminal_interface-curses__ads.htm#ref_770_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_271_16">Subwin</A></span> + (<span class="symbol"><A NAME="ref_272_10" HREF="terminal_interface-curses__adb.htm#ref_271_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_273_10" HREF="terminal_interface-curses__adb.htm#ref_271_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_274_10" HREF="terminal_interface-curses__adb.htm#ref_271_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_275_10" HREF="terminal_interface-curses__adb.htm#ref_271_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_276_10" HREF="terminal_interface-curses__adb.htm#ref_271_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Subwin, "subwin"); + + <span class="symbol"><A NAME="ref_279_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_279_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_271_16">Subwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_766_7">Win</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_767_7">Number_Of_Lines</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_768_7">Number_Of_Columns</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_769_7">First_Line_Position</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_770_7">First_Column_Position</A>)); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_279_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_279_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_765_13">Sub_Window</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_292_13" HREF="terminal_interface-curses__ads.htm#ref_775_13">Derived_Window</A></span> + (<span class="symbol"><A NAME="ref_293_7" HREF="terminal_interface-curses__ads.htm#ref_776_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_294_7" HREF="terminal_interface-curses__ads.htm#ref_777_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_295_7" HREF="terminal_interface-curses__ads.htm#ref_778_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_296_7" HREF="terminal_interface-curses__ads.htm#ref_779_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_297_7" HREF="terminal_interface-curses__ads.htm#ref_780_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_299_16">Derwin</A></span> + (<span class="symbol"><A NAME="ref_300_10" HREF="terminal_interface-curses__adb.htm#ref_299_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_301_10" HREF="terminal_interface-curses__adb.htm#ref_299_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_302_10" HREF="terminal_interface-curses__adb.htm#ref_299_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_303_10" HREF="terminal_interface-curses__adb.htm#ref_299_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_304_10" HREF="terminal_interface-curses__adb.htm#ref_299_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Derwin, "derwin"); + + <span class="symbol"><A NAME="ref_307_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_307_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_299_16">Derwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_776_7">Win</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_777_7">Number_Of_Lines</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_778_7">Number_Of_Columns</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_779_7">First_Line_Position</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_780_7">First_Column_Position</A>)); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_307_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_307_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_775_13">Derived_Window</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_320_13" HREF="terminal_interface-curses__ads.htm#ref_785_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_320_24" HREF="terminal_interface-curses__ads.htm#ref_785_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_322_16">Dupwin</A></span> (<span class="symbol"><A NAME="ref_322_24" HREF="terminal_interface-curses__adb.htm#ref_322_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Dupwin, "dupwin"); + + <span class="symbol"><A NAME="ref_325_7">W</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__adb.htm#ref_322_16">Dupwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_785_24">Win</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_325_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_325_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_785_13">Duplicate</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_333_14" HREF="terminal_interface-curses__ads.htm#ref_790_14">Move_Window</A></span> (<span class="symbol"><A NAME="ref_333_27" HREF="terminal_interface-curses__ads.htm#ref_790_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_334_27" HREF="terminal_interface-curses__ads.htm#ref_791_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_335_27" HREF="terminal_interface-curses__ads.htm#ref_792_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_337_16">Mvwin</A></span> (<span class="symbol"><A NAME="ref_337_23" HREF="terminal_interface-curses__adb.htm#ref_337_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_338_23" HREF="terminal_interface-curses__adb.htm#ref_337_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_339_23" HREF="terminal_interface-curses__adb.htm#ref_337_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Mvwin, "mvwin"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_337_16">Mvwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_790_27">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_791_27">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_792_27">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_790_14">Move_Window</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_347_14" HREF="terminal_interface-curses__ads.htm#ref_797_14">Move_Derived_Window</A></span> (<span class="symbol"><A NAME="ref_347_35" HREF="terminal_interface-curses__ads.htm#ref_797_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_348_35" HREF="terminal_interface-curses__ads.htm#ref_798_35">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_349_35" HREF="terminal_interface-curses__ads.htm#ref_799_35">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_351_16">Mvderwin</A></span> (<span class="symbol"><A NAME="ref_351_26" HREF="terminal_interface-curses__adb.htm#ref_351_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_352_26" HREF="terminal_interface-curses__adb.htm#ref_351_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_353_26" HREF="terminal_interface-curses__adb.htm#ref_351_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Mvderwin, "mvderwin"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_351_16">Mvderwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_797_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_798_35">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_799_35">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_797_14">Move_Derived_Window</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_361_14" HREF="terminal_interface-curses__ads.htm#ref_814_14">Set_Synch_Mode</A></span> (<span class="symbol"><A NAME="ref_361_30" HREF="terminal_interface-curses__ads.htm#ref_814_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_362_30" HREF="terminal_interface-curses__ads.htm#ref_815_30">Mode</A></span> : Boolean := False) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_364_16">Syncok</A></span> (<span class="symbol"><A NAME="ref_364_24" HREF="terminal_interface-curses__adb.htm#ref_364_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_365_24" HREF="terminal_interface-curses__adb.htm#ref_364_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Syncok, "syncok"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_364_16">Syncok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_814_30">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_815_30">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_814_14">Set_Synch_Mode</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_373_14" HREF="terminal_interface-curses__ads.htm#ref_824_14">Add</A></span> (<span class="symbol"><A NAME="ref_373_19" HREF="terminal_interface-curses__ads.htm#ref_824_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_374_19" HREF="terminal_interface-curses__ads.htm#ref_825_19">Str</A></span> : String; + <span class="symbol"><A NAME="ref_375_19" HREF="terminal_interface-curses__ads.htm#ref_826_19">Len</A></span> : Integer := -1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_377_16">Waddnstr</A></span> (<span class="symbol"><A NAME="ref_377_26" HREF="terminal_interface-curses__adb.htm#ref_377_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_378_26" HREF="terminal_interface-curses__adb.htm#ref_377_16">Str</A></span> : char_array; + <span class="symbol"><A NAME="ref_379_26" HREF="terminal_interface-curses__adb.htm#ref_377_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Waddnstr, "waddnstr"); + + <span class="symbol"><A NAME="ref_382_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_825_19">Str</A>'Length); + <span class="symbol"><A NAME="ref_383_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_825_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_382_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_383_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_377_16">Waddnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_824_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_382_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_826_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_824_14">Add</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_391_14" HREF="terminal_interface-curses__ads.htm#ref_833_14">Add</A></span> + (<span class="symbol"><A NAME="ref_392_7" HREF="terminal_interface-curses__ads.htm#ref_833_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_393_7" HREF="terminal_interface-curses__ads.htm#ref_834_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_394_7" HREF="terminal_interface-curses__ads.htm#ref_835_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_395_7" HREF="terminal_interface-curses__ads.htm#ref_836_19">Str</A></span> : String; + <span class="symbol"><A NAME="ref_396_7" HREF="terminal_interface-curses__ads.htm#ref_837_19">Len</A></span> : Integer := -1) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_833_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_834_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_835_19">Column</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_824_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_833_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_836_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_837_19">Len</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_833_14">Add</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_403_14" HREF="terminal_interface-curses__ads.htm#ref_848_14">Add</A></span> + (<span class="symbol"><A NAME="ref_404_7" HREF="terminal_interface-curses__ads.htm#ref_848_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_405_7" HREF="terminal_interface-curses__ads.htm#ref_849_19">Str</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Attributed_String</A>; + <span class="symbol"><A NAME="ref_406_7" HREF="terminal_interface-curses__ads.htm#ref_850_19">Len</A></span> : Integer := -1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_408_16">Waddchnstr</A></span> (<span class="symbol"><A NAME="ref_408_28" HREF="terminal_interface-curses__adb.htm#ref_408_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_409_28" HREF="terminal_interface-curses__adb.htm#ref_408_16">Str</A></span> : chtype_array; + <span class="symbol"><A NAME="ref_410_28" HREF="terminal_interface-curses__adb.htm#ref_408_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Waddchnstr, "waddchnstr"); + + <span class="symbol"><A NAME="ref_413_7">Txt</A></span> : chtype_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_849_19">Str</A>'Length); + <b>begin</b> + <b>for</b> <span class="symbol"><A NAME="ref_415_11">Length</A></span> <b>in</b> 1 .. size_t (<A HREF="terminal_interface-curses__ads.htm#ref_849_19">Str</A>'Length) <b>loop</b> + <A HREF="terminal_interface-curses__adb.htm#ref_413_7">Txt</A> (<A HREF="terminal_interface-curses__adb.htm#ref_415_11">Length</A> - 1) := <A HREF="terminal_interface-curses__ads.htm#ref_849_19">Str</A> (Natural (<A HREF="terminal_interface-curses__adb.htm#ref_415_11">Length</A>)); + <b>end</b> <b>loop</b>; + <A HREF="terminal_interface-curses__adb.htm#ref_413_7">Txt</A> (<A HREF="terminal_interface-curses__ads.htm#ref_849_19">Str</A>'Length) := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_408_16">Waddchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_848_19">Win</A>, + <A HREF="terminal_interface-curses__adb.htm#ref_413_7">Txt</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_850_19">Len</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_848_14">Add</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_427_14" HREF="terminal_interface-curses__ads.htm#ref_857_14">Add</A></span> + (<span class="symbol"><A NAME="ref_428_7" HREF="terminal_interface-curses__ads.htm#ref_857_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_429_7" HREF="terminal_interface-curses__ads.htm#ref_858_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_430_7" HREF="terminal_interface-curses__ads.htm#ref_859_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_431_7" HREF="terminal_interface-curses__ads.htm#ref_860_19">Str</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Attributed_String</A>; + <span class="symbol"><A NAME="ref_432_7" HREF="terminal_interface-curses__ads.htm#ref_861_19">Len</A></span> : Integer := -1) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_857_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_858_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_859_19">Column</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_848_14">Add</A> (<A HREF="terminal_interface-curses__ads.htm#ref_857_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_860_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_861_19">Len</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_857_14">Add</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_439_14" HREF="terminal_interface-curses__ads.htm#ref_875_14">Border</A></span> + (<span class="symbol"><A NAME="ref_440_7" HREF="terminal_interface-curses__ads.htm#ref_876_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_441_7" HREF="terminal_interface-curses__ads.htm#ref_877_7">Left_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_442_7" HREF="terminal_interface-curses__ads.htm#ref_878_7">Right_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_443_7" HREF="terminal_interface-curses__ads.htm#ref_879_7">Top_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_444_7" HREF="terminal_interface-curses__ads.htm#ref_880_7">Bottom_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_445_7" HREF="terminal_interface-curses__ads.htm#ref_881_7">Upper_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_446_7" HREF="terminal_interface-curses__ads.htm#ref_882_7">Upper_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_447_7" HREF="terminal_interface-curses__ads.htm#ref_883_7">Lower_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_448_7" HREF="terminal_interface-curses__ads.htm#ref_884_7">Lower_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_450_16">Wborder</A></span> (<span class="symbol"><A NAME="ref_450_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_451_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">LS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_452_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">RS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_453_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">TS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_454_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">BS</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_455_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">ULC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_456_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">URC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_457_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">LLC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_458_25" HREF="terminal_interface-curses__adb.htm#ref_450_16">LRC</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wborder, "wborder"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_450_16">Wborder</A> (<A HREF="terminal_interface-curses__ads.htm#ref_876_7">Win</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_877_7">Left_Side_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_878_7">Right_Side_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_879_7">Top_Side_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_880_7">Bottom_Side_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_881_7">Upper_Left_Corner_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_882_7">Upper_Right_Corner_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_883_7">Lower_Left_Corner_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_884_7">Lower_Right_Corner_Symbol</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_875_14">Border</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_475_14" HREF="terminal_interface-curses__ads.htm#ref_891_14">Box</A></span> + (<span class="symbol"><A NAME="ref_476_7" HREF="terminal_interface-curses__ads.htm#ref_892_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_477_7" HREF="terminal_interface-curses__ads.htm#ref_893_7">Vertical_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_478_7" HREF="terminal_interface-curses__ads.htm#ref_894_7">Horizontal_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_875_14">Border</A> (<A HREF="terminal_interface-curses__ads.htm#ref_892_7">Win</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_893_7">Vertical_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#ref_893_7">Vertical_Symbol</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_894_7">Horizontal_Symbol</A>, <A HREF="terminal_interface-curses__ads.htm#ref_894_7">Horizontal_Symbol</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_891_14">Box</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_486_14" HREF="terminal_interface-curses__ads.htm#ref_899_14">Horizontal_Line</A></span> + (<span class="symbol"><A NAME="ref_487_7" HREF="terminal_interface-curses__ads.htm#ref_900_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_488_7" HREF="terminal_interface-curses__ads.htm#ref_901_7">Line_Size</A></span> : Natural; + <span class="symbol"><A NAME="ref_489_7" HREF="terminal_interface-curses__ads.htm#ref_902_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_491_16">Whline</A></span> (<span class="symbol"><A NAME="ref_491_24" HREF="terminal_interface-curses__adb.htm#ref_491_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_492_24" HREF="terminal_interface-curses__adb.htm#ref_491_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_493_24" HREF="terminal_interface-curses__adb.htm#ref_491_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Whline, "whline"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_491_16">Whline</A> (<A HREF="terminal_interface-curses__ads.htm#ref_900_7">Win</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_902_7">Line_Symbol</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_901_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_899_14">Horizontal_Line</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_504_14" HREF="terminal_interface-curses__ads.htm#ref_908_14">Vertical_Line</A></span> + (<span class="symbol"><A NAME="ref_505_7" HREF="terminal_interface-curses__ads.htm#ref_909_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_506_7" HREF="terminal_interface-curses__ads.htm#ref_910_7">Line_Size</A></span> : Natural; + <span class="symbol"><A NAME="ref_507_7" HREF="terminal_interface-curses__ads.htm#ref_911_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_509_16">Wvline</A></span> (<span class="symbol"><A NAME="ref_509_24" HREF="terminal_interface-curses__adb.htm#ref_509_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_510_24" HREF="terminal_interface-curses__adb.htm#ref_509_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_511_24" HREF="terminal_interface-curses__adb.htm#ref_509_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wvline, "wvline"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_509_16">Wvline</A> (<A HREF="terminal_interface-curses__ads.htm#ref_909_7">Win</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_911_7">Line_Symbol</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_910_7">Line_Size</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_908_14">Vertical_Line</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_523_13" HREF="terminal_interface-curses__ads.htm#ref_922_13">Get_Keystroke</A></span> (<span class="symbol"><A NAME="ref_523_28" HREF="terminal_interface-curses__ads.htm#ref_922_28">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_526_16">Wgetch</A></span> (<span class="symbol"><A NAME="ref_526_24" HREF="terminal_interface-curses__adb.htm#ref_526_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wgetch, "wgetch"); + + <span class="symbol"><A NAME="ref_529_7">C</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_526_16">Wgetch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_922_28">Win</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_529_7">C</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_89_4">Key_None</A>; + <b>else</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A> (<A HREF="terminal_interface-curses__adb.htm#ref_529_7">C</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_922_13">Get_Keystroke</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_538_14" HREF="terminal_interface-curses__ads.htm#ref_933_14">Undo_Keystroke</A></span> (<span class="symbol"><A NAME="ref_538_30" HREF="terminal_interface-curses__ads.htm#ref_933_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_540_16">Ungetch</A></span> (<span class="symbol"><A NAME="ref_540_25" HREF="terminal_interface-curses__adb.htm#ref_540_16">Ch</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Ungetch, "ungetch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_540_16">Ungetch</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_933_30">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_933_14">Undo_Keystroke</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_548_13" HREF="terminal_interface-curses__ads.htm#ref_938_13">Has_Key</A></span> (<span class="symbol"><A NAME="ref_548_22" HREF="terminal_interface-curses__ads.htm#ref_938_22">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_550_16">Haskey</A></span> (<span class="symbol"><A NAME="ref_550_24" HREF="terminal_interface-curses__adb.htm#ref_550_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Haskey, "has_key"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_550_16">Haskey</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_938_22">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_938_13">Has_Key</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_560_13" HREF="terminal_interface-curses__ads.htm#ref_945_13">Is_Function_Key</A></span> (<span class="symbol"><A NAME="ref_560_30" HREF="terminal_interface-curses__ads.htm#ref_945_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>) <b>return</b> Boolean + <b>is</b> + <span class="symbol"><A NAME="ref_562_7">L</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> := <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#ref_111_4">Key_F0</A>) + + Natural (<A HREF="terminal_interface-curses__ads.htm#ref_949_12">Function_Key_Number</A>'Last)); + <b>begin</b> + <b>if</b> (<A HREF="terminal_interface-curses__ads.htm#ref_945_30">Key</A> &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_111_4">Key_F0</A>) <b>and</b> <b>then</b> (<A HREF="terminal_interface-curses__ads.htm#ref_945_30">Key</A> &lt;= <A HREF="terminal_interface-curses__adb.htm#ref_562_7">L</A>) <b>then</b> + <b>return</b> True; + <b>else</b> + <b>return</b> False; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_945_13">Is_Function_Key</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_572_13" HREF="terminal_interface-curses__ads.htm#ref_952_13">Function_Key</A></span> (<span class="symbol"><A NAME="ref_572_27" HREF="terminal_interface-curses__ads.htm#ref_952_27">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_949_12">Function_Key_Number</A> + <b>is</b> + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_945_13">Is_Function_Key</A> (<A HREF="terminal_interface-curses__ads.htm#ref_952_27">Key</A>) <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_949_12">Function_Key_Number</A> (<A HREF="terminal_interface-curses__ads.htm#ref_952_27">Key</A> - <A HREF="terminal_interface-curses__ads.htm#ref_111_4">Key_F0</A>); + <b>else</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_952_13">Function_Key</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_583_13" HREF="terminal_interface-curses__ads.htm#ref_957_13">Function_Key_Code</A></span> (<span class="symbol"><A NAME="ref_583_32" HREF="terminal_interface-curses__ads.htm#ref_957_32">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_949_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A> + <b>is</b> + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A> (Natural (<A HREF="terminal_interface-curses__ads.htm#ref_111_4">Key_F0</A>) + Natural (<A HREF="terminal_interface-curses__ads.htm#ref_957_32">Key</A>)); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_957_13">Function_Key_Code</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_589_14" HREF="terminal_interface-curses__ads.htm#ref_971_14">Standout</A></span> (<span class="symbol"><A NAME="ref_589_24" HREF="terminal_interface-curses__ads.htm#ref_971_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_590_24" HREF="terminal_interface-curses__ads.htm#ref_972_24">On</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_592_16">wstandout</A></span> (<span class="symbol"><A NAME="ref_592_27" HREF="terminal_interface-curses__adb.htm#ref_592_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, wstandout, "wstandout"); + <b>function</b> <span class="symbol"><A NAME="ref_594_16">wstandend</A></span> (<span class="symbol"><A NAME="ref_594_27" HREF="terminal_interface-curses__adb.htm#ref_594_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, wstandend, "wstandend"); + + <span class="symbol"><A NAME="ref_597_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_972_24">On</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_597_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_592_16">wstandout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_971_24">Win</A>); + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_597_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_594_16">wstandend</A> (<A HREF="terminal_interface-curses__ads.htm#ref_971_24">Win</A>); + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_597_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_971_14">Standout</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_609_14" HREF="terminal_interface-curses__ads.htm#ref_977_14">Switch_Character_Attribute</A></span> + (<span class="symbol"><A NAME="ref_610_7" HREF="terminal_interface-curses__ads.htm#ref_978_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_611_7" HREF="terminal_interface-curses__ads.htm#ref_979_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_612_7" HREF="terminal_interface-curses__ads.htm#ref_980_7">On</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_614_16">Wattron</A></span> (<span class="symbol"><A NAME="ref_614_25" HREF="terminal_interface-curses__adb.htm#ref_614_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_615_25" HREF="terminal_interface-curses__adb.htm#ref_614_16">C_Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wattron, "wattr_on"); + <b>function</b> <span class="symbol"><A NAME="ref_617_16">Wattroff</A></span> (<span class="symbol"><A NAME="ref_617_26" HREF="terminal_interface-curses__adb.htm#ref_617_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_618_26" HREF="terminal_interface-curses__adb.htm#ref_617_16">C_Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wattroff, "wattr_off"); + <span class="comment"><EM>-- In Ada we use the On Boolean to control whether or not we want to</EM></span> + <span class="comment"><EM>-- switch on or off the attributes in the set.</EM></span> + <span class="symbol"><A NAME="ref_622_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_623_7">AC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_979_7">Attr</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_980_7">On</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_622_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_614_16">Wattron</A> (<A HREF="terminal_interface-curses__ads.htm#ref_978_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_623_7">AC</A>); + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_622_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_617_16">Wattroff</A> (<A HREF="terminal_interface-curses__ads.htm#ref_978_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_623_7">AC</A>); + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_622_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_977_14">Switch_Character_Attribute</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_637_14" HREF="terminal_interface-curses__ads.htm#ref_988_14">Set_Character_Attributes</A></span> + (<span class="symbol"><A NAME="ref_638_7" HREF="terminal_interface-curses__ads.htm#ref_989_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_639_7" HREF="terminal_interface-curses__ads.htm#ref_990_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_640_7" HREF="terminal_interface-curses__ads.htm#ref_991_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_642_16">Wattrset</A></span> (<span class="symbol"><A NAME="ref_642_26" HREF="terminal_interface-curses__adb.htm#ref_642_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_643_26" HREF="terminal_interface-curses__adb.htm#ref_642_16">C_Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wattrset, "wattrset"); <span class="comment"><EM>-- ??? wattr_set</EM></span> + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_642_16">Wattrset</A> (<A HREF="terminal_interface-curses__ads.htm#ref_989_7">Win</A>, (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_991_7">Color</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_990_7">Attr</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_988_14">Set_Character_Attributes</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_654_13" HREF="terminal_interface-curses__ads.htm#ref_997_13">Get_Character_Attribute</A></span> (<span class="symbol"><A NAME="ref_654_38" HREF="terminal_interface-curses__ads.htm#ref_998_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_657_16">Wattrget</A></span> (<span class="symbol"><A NAME="ref_657_26" HREF="terminal_interface-curses__adb.htm#ref_657_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_658_26" HREF="terminal_interface-curses__adb.htm#ref_657_16">Atr</A></span> : <b>access</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_659_26" HREF="terminal_interface-curses__adb.htm#ref_657_16">Col</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_660_26" HREF="terminal_interface-curses__adb.htm#ref_657_16">Opt</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wattrget, "wattr_get"); + + <span class="symbol"><A NAME="ref_663_7">Attr</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_664_7">Col</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_665_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_657_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#ref_998_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_663_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_664_7">Col</A>'<b>Access</b>, + System.Null_Address); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_665_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Ok</A> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_663_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>else</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_997_13">Get_Character_Attribute</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_675_13" HREF="terminal_interface-curses__ads.htm#ref_1003_13">Get_Character_Attribute</A></span> (<span class="symbol"><A NAME="ref_675_38" HREF="terminal_interface-curses__ads.htm#ref_1004_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_678_16">Wattrget</A></span> (<span class="symbol"><A NAME="ref_678_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_679_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Atr</A></span> : <b>access</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_680_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Col</A></span> : <b>access</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_681_26" HREF="terminal_interface-curses__adb.htm#ref_678_16">Opt</A></span> : System.Address) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wattrget, "wattr_get"); + + <span class="symbol"><A NAME="ref_684_7">Attr</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_685_7">Col</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_686_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_678_16">Wattrget</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1004_7">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_684_7">Attr</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_685_7">Col</A>'<b>Access</b>, + System.Null_Address); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_686_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_63_4">Curses_Ok</A> <b>then</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_684_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A>; + <b>else</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1003_13">Get_Character_Attribute</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_696_14" HREF="terminal_interface-curses__ads.htm#ref_1009_14">Set_Color</A></span> (<span class="symbol"><A NAME="ref_696_25" HREF="terminal_interface-curses__ads.htm#ref_1009_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_697_25" HREF="terminal_interface-curses__ads.htm#ref_1010_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_699_16">Wset_Color</A></span> (<span class="symbol"><A NAME="ref_699_28" HREF="terminal_interface-curses__adb.htm#ref_699_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_700_28" HREF="terminal_interface-curses__adb.htm#ref_699_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_701_28" HREF="terminal_interface-curses__adb.htm#ref_699_16">Opts</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Void_Ptr</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wset_Color, "wcolor_set"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_699_16">Wset_Color</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1009_25">Win</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1010_25">Pair</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_56_12">C_Void_Ptr</A> (System.Null_Address)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1009_14">Set_Color</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_712_14" HREF="terminal_interface-curses__ads.htm#ref_1016_14">Change_Attributes</A></span> + (<span class="symbol"><A NAME="ref_713_7" HREF="terminal_interface-curses__ads.htm#ref_1017_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_714_7" HREF="terminal_interface-curses__ads.htm#ref_1018_7">Count</A></span> : Integer := -1; + <span class="symbol"><A NAME="ref_715_7" HREF="terminal_interface-curses__ads.htm#ref_1019_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_716_7" HREF="terminal_interface-curses__ads.htm#ref_1020_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_718_16">Wchgat</A></span> (<span class="symbol"><A NAME="ref_718_24" HREF="terminal_interface-curses__adb.htm#ref_718_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_719_24" HREF="terminal_interface-curses__adb.htm#ref_718_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_720_24" HREF="terminal_interface-curses__adb.htm#ref_718_16">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_721_24" HREF="terminal_interface-curses__adb.htm#ref_718_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_722_24" HREF="terminal_interface-curses__adb.htm#ref_718_16">Opts</A></span> : System.Address := System.Null_Address) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wchgat, "wchgat"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_718_16">Wchgat</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1017_7">Win</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1018_7">Count</A>), + (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1019_7">Attr</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1020_7">Color</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1016_14">Change_Attributes</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_737_14" HREF="terminal_interface-curses__ads.htm#ref_1025_14">Change_Attributes</A></span> + (<span class="symbol"><A NAME="ref_738_7" HREF="terminal_interface-curses__ads.htm#ref_1026_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_739_7" HREF="terminal_interface-curses__ads.htm#ref_1027_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>'First; + <span class="symbol"><A NAME="ref_740_7" HREF="terminal_interface-curses__ads.htm#ref_1028_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>'First; + <span class="symbol"><A NAME="ref_741_7" HREF="terminal_interface-curses__ads.htm#ref_1029_7">Count</A></span> : Integer := -1; + <span class="symbol"><A NAME="ref_742_7" HREF="terminal_interface-curses__ads.htm#ref_1030_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_743_7" HREF="terminal_interface-curses__ads.htm#ref_1031_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1026_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1027_7">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1028_7">Column</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1016_14">Change_Attributes</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1026_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1029_7">Count</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1030_7">Attr</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1031_7">Color</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1025_14">Change_Attributes</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_750_14" HREF="terminal_interface-curses__ads.htm#ref_1041_14">Beep</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_752_16">Beeper</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Beeper, "beep"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_752_16">Beeper</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1041_14">Beep</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_760_14" HREF="terminal_interface-curses__ads.htm#ref_1046_14">Flash_Screen</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_762_16">Flash</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Flash, "flash"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_762_16">Flash</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1046_14">Flash_Screen</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_770_14" HREF="terminal_interface-curses__ads.htm#ref_1057_14">Set_Cbreak_Mode</A></span> (<span class="symbol"><A NAME="ref_770_31" HREF="terminal_interface-curses__ads.htm#ref_1057_31">SwitchOn</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_772_16">Cbreak</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Cbreak, "cbreak"); + <b>function</b> <span class="symbol"><A NAME="ref_774_16">NoCbreak</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, NoCbreak, "nocbreak"); + + <span class="symbol"><A NAME="ref_777_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1057_31">SwitchOn</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_777_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_772_16">Cbreak</A>; + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_777_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_774_16">NoCbreak</A>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_777_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1057_14">Set_Cbreak_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_789_14" HREF="terminal_interface-curses__ads.htm#ref_1063_14">Set_Raw_Mode</A></span> (<span class="symbol"><A NAME="ref_789_28" HREF="terminal_interface-curses__ads.htm#ref_1063_28">SwitchOn</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_791_16">Raw</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Raw, "raw"); + <b>function</b> <span class="symbol"><A NAME="ref_793_16">NoRaw</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, NoRaw, "noraw"); + + <span class="symbol"><A NAME="ref_796_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1063_28">SwitchOn</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_796_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_791_16">Raw</A>; + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_796_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_793_16">NoRaw</A>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_796_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1063_14">Set_Raw_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_808_14" HREF="terminal_interface-curses__ads.htm#ref_1069_14">Set_Echo_Mode</A></span> (<span class="symbol"><A NAME="ref_808_29" HREF="terminal_interface-curses__ads.htm#ref_1069_29">SwitchOn</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_810_16">Echo</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Echo, "echo"); + <b>function</b> <span class="symbol"><A NAME="ref_812_16">NoEcho</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, NoEcho, "noecho"); + + <span class="symbol"><A NAME="ref_815_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1069_29">SwitchOn</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_815_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_810_16">Echo</A>; + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_815_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_812_16">NoEcho</A>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_815_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1069_14">Set_Echo_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_827_14" HREF="terminal_interface-curses__ads.htm#ref_1075_14">Set_Meta_Mode</A></span> (<span class="symbol"><A NAME="ref_827_29" HREF="terminal_interface-curses__ads.htm#ref_1075_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_828_29" HREF="terminal_interface-curses__ads.htm#ref_1076_29">SwitchOn</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_830_16">Meta</A></span> (<span class="symbol"><A NAME="ref_830_22" HREF="terminal_interface-curses__adb.htm#ref_830_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_830_34" HREF="terminal_interface-curses__adb.htm#ref_830_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Meta, "meta"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_830_16">Meta</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1075_29">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1076_29">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1075_14">Set_Meta_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_838_14" HREF="terminal_interface-curses__ads.htm#ref_1081_14">Set_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_838_31" HREF="terminal_interface-curses__ads.htm#ref_1081_31">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_839_31" HREF="terminal_interface-curses__ads.htm#ref_1082_31">SwitchOn</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_841_16">Keypad</A></span> (<span class="symbol"><A NAME="ref_841_24" HREF="terminal_interface-curses__adb.htm#ref_841_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_841_36" HREF="terminal_interface-curses__adb.htm#ref_841_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Keypad, "keypad"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_841_16">Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1081_31">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1082_31">SwitchOn</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1081_14">Set_KeyPad_Mode</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_849_13" HREF="terminal_interface-curses__ads.htm#ref_1086_13">Get_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_849_30" HREF="terminal_interface-curses__ads.htm#ref_1086_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_852_16">Is_Keypad</A></span> (<span class="symbol"><A NAME="ref_852_27" HREF="terminal_interface-curses__adb.htm#ref_852_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Is_Keypad, "is_keypad"); + <b>begin</b> + <b>return</b> (<A HREF="terminal_interface-curses__adb.htm#ref_852_16">Is_Keypad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1086_30">Win</A>) /= <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1086_13">Get_KeyPad_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_858_14" HREF="terminal_interface-curses__ads.htm#ref_1094_14">Half_Delay</A></span> (<span class="symbol"><A NAME="ref_858_26" HREF="terminal_interface-curses__ads.htm#ref_1094_26">Amount</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1091_9">Half_Delay_Amount</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_860_16">Halfdelay</A></span> (<span class="symbol"><A NAME="ref_860_27" HREF="terminal_interface-curses__adb.htm#ref_860_16">Amount</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Halfdelay, "halfdelay"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_860_16">Halfdelay</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1094_26">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1094_14">Half_Delay</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_868_14" HREF="terminal_interface-curses__ads.htm#ref_1099_14">Set_Flush_On_Interrupt_Mode</A></span> + (<span class="symbol"><A NAME="ref_869_7" HREF="terminal_interface-curses__ads.htm#ref_1100_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_870_7" HREF="terminal_interface-curses__ads.htm#ref_1101_7">Mode</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_872_16">Intrflush</A></span> (<span class="symbol"><A NAME="ref_872_27" HREF="terminal_interface-curses__adb.htm#ref_872_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_872_41" HREF="terminal_interface-curses__adb.htm#ref_872_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Intrflush, "intrflush"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_872_16">Intrflush</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1100_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1101_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1099_14">Set_Flush_On_Interrupt_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_880_14" HREF="terminal_interface-curses__ads.htm#ref_1106_14">Set_Queue_Interrupt_Mode</A></span> + (<span class="symbol"><A NAME="ref_881_7" HREF="terminal_interface-curses__ads.htm#ref_1107_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_882_7" HREF="terminal_interface-curses__ads.htm#ref_1108_7">Flush</A></span> : Boolean := True) + <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_884_17">Qiflush</A></span>; + <b>pragma</b> Import (C, Qiflush, "qiflush"); + <b>procedure</b> <span class="symbol"><A NAME="ref_886_17">No_Qiflush</A></span>; + <b>pragma</b> Import (C, No_Qiflush, "noqiflush"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1107_7">Win</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1108_7">Flush</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_884_17">Qiflush</A>; + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_886_17">No_Qiflush</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1106_14">Set_Queue_Interrupt_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_899_14" HREF="terminal_interface-curses__ads.htm#ref_1114_14">Set_NoDelay_Mode</A></span> + (<span class="symbol"><A NAME="ref_900_7" HREF="terminal_interface-curses__ads.htm#ref_1115_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_901_7" HREF="terminal_interface-curses__ads.htm#ref_1116_7">Mode</A></span> : Boolean := False) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_903_16">Nodelay</A></span> (<span class="symbol"><A NAME="ref_903_25" HREF="terminal_interface-curses__adb.htm#ref_903_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_903_39" HREF="terminal_interface-curses__adb.htm#ref_903_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Nodelay, "nodelay"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_903_16">Nodelay</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1115_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1116_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1114_14">Set_NoDelay_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_911_14" HREF="terminal_interface-curses__ads.htm#ref_1123_14">Set_Timeout_Mode</A></span> (<span class="symbol"><A NAME="ref_911_32" HREF="terminal_interface-curses__ads.htm#ref_1123_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_912_32" HREF="terminal_interface-curses__ads.htm#ref_1124_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1120_9">Timeout_Mode</A>; + <span class="symbol"><A NAME="ref_913_32" HREF="terminal_interface-curses__ads.htm#ref_1125_32">Amount</A></span> : Natural) + <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_915_17">Wtimeout</A></span> (<span class="symbol"><A NAME="ref_915_27" HREF="terminal_interface-curses__adb.htm#ref_915_17">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_915_41" HREF="terminal_interface-curses__adb.htm#ref_915_17">Amount</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>); + <b>pragma</b> Import (C, Wtimeout, "wtimeout"); + + <span class="symbol"><A NAME="ref_918_7">Time</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1124_32">Mode</A> <b>is</b> + <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1120_26">Blocking</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_918_7">Time</A> := -1; + <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1120_36">Non_Blocking</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_918_7">Time</A> := 0; + <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1120_50">Delayed</A> =&gt; + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1125_32">Amount</A> = 0 <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__adb.htm#ref_918_7">Time</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1125_32">Amount</A>); + <b>end</b> <b>case</b>; + <A HREF="terminal_interface-curses__adb.htm#ref_915_17">Wtimeout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1123_32">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_918_7">Time</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1123_14">Set_Timeout_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_932_14" HREF="terminal_interface-curses__ads.htm#ref_1135_14">Set_Escape_Timer_Mode</A></span> + (<span class="symbol"><A NAME="ref_933_7" HREF="terminal_interface-curses__ads.htm#ref_1136_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_934_7" HREF="terminal_interface-curses__ads.htm#ref_1137_7">Timer_Off</A></span> : Boolean := False) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_936_16">Notimeout</A></span> (<span class="symbol"><A NAME="ref_936_27" HREF="terminal_interface-curses__adb.htm#ref_936_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_936_41" HREF="terminal_interface-curses__adb.htm#ref_936_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Notimeout, "notimeout"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_936_16">Notimeout</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1136_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1137_7">Timer_Off</A>))) + = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1135_14">Set_Escape_Timer_Mode</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_947_14" HREF="terminal_interface-curses__ads.htm#ref_1146_14">Set_NL_Mode</A></span> (<span class="symbol"><A NAME="ref_947_27" HREF="terminal_interface-curses__ads.htm#ref_1146_27">SwitchOn</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_949_16">NL</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, NL, "nl"); + <b>function</b> <span class="symbol"><A NAME="ref_951_16">NoNL</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, NoNL, "nonl"); + + <span class="symbol"><A NAME="ref_954_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1146_27">SwitchOn</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_954_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_949_16">NL</A>; + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_954_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_951_16">NoNL</A>; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_954_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1146_14">Set_NL_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_966_14" HREF="terminal_interface-curses__ads.htm#ref_1152_14">Clear_On_Next_Update</A></span> + (<span class="symbol"><A NAME="ref_967_7" HREF="terminal_interface-curses__ads.htm#ref_1153_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_968_7" HREF="terminal_interface-curses__ads.htm#ref_1154_7">Do_Clear</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_970_16">Clear_Ok</A></span> (<span class="symbol"><A NAME="ref_970_26" HREF="terminal_interface-curses__adb.htm#ref_970_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_970_38" HREF="terminal_interface-curses__adb.htm#ref_970_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Clear_Ok, "clearok"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_970_16">Clear_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1153_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1154_7">Do_Clear</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1152_14">Clear_On_Next_Update</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_978_14" HREF="terminal_interface-curses__ads.htm#ref_1159_14">Use_Insert_Delete_Line</A></span> + (<span class="symbol"><A NAME="ref_979_7" HREF="terminal_interface-curses__ads.htm#ref_1160_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_980_7" HREF="terminal_interface-curses__ads.htm#ref_1161_7">Do_Idl</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_982_16">IDL_Ok</A></span> (<span class="symbol"><A NAME="ref_982_24" HREF="terminal_interface-curses__adb.htm#ref_982_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_982_36" HREF="terminal_interface-curses__adb.htm#ref_982_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, IDL_Ok, "idlok"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_982_16">IDL_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1160_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1161_7">Do_Idl</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1159_14">Use_Insert_Delete_Line</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_990_14" HREF="terminal_interface-curses__ads.htm#ref_1166_14">Use_Insert_Delete_Character</A></span> + (<span class="symbol"><A NAME="ref_991_7" HREF="terminal_interface-curses__ads.htm#ref_1167_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_992_7" HREF="terminal_interface-curses__ads.htm#ref_1168_7">Do_Idc</A></span> : Boolean := True) + <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_994_17">IDC_Ok</A></span> (<span class="symbol"><A NAME="ref_994_25" HREF="terminal_interface-curses__adb.htm#ref_994_17">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_994_37" HREF="terminal_interface-curses__adb.htm#ref_994_17">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>); + <b>pragma</b> Import (C, IDC_Ok, "idcok"); + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_994_17">IDC_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1167_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1168_7">Do_Idc</A>))); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1166_14">Use_Insert_Delete_Character</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1000_14" HREF="terminal_interface-curses__ads.htm#ref_1173_14">Leave_Cursor_After_Update</A></span> + (<span class="symbol"><A NAME="ref_1001_7" HREF="terminal_interface-curses__ads.htm#ref_1174_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1002_7" HREF="terminal_interface-curses__ads.htm#ref_1175_7">Do_Leave</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1004_16">Leave_Ok</A></span> (<span class="symbol"><A NAME="ref_1004_26" HREF="terminal_interface-curses__adb.htm#ref_1004_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1004_38" HREF="terminal_interface-curses__adb.htm#ref_1004_16">Flag</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Leave_Ok, "leaveok"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1004_16">Leave_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1174_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1175_7">Do_Leave</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1173_14">Leave_Cursor_After_Update</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1012_14" HREF="terminal_interface-curses__ads.htm#ref_1180_14">Immediate_Update_Mode</A></span> + (<span class="symbol"><A NAME="ref_1013_7" HREF="terminal_interface-curses__ads.htm#ref_1181_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1014_7" HREF="terminal_interface-curses__ads.htm#ref_1182_7">Mode</A></span> : Boolean := False) + <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_1016_17">Immedok</A></span> (<span class="symbol"><A NAME="ref_1016_26" HREF="terminal_interface-curses__adb.htm#ref_1016_17">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1016_40" HREF="terminal_interface-curses__adb.htm#ref_1016_17">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>); + <b>pragma</b> Import (C, Immedok, "immedok"); + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1016_17">Immedok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1181_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1182_7">Mode</A>))); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1180_14">Immediate_Update_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1022_14" HREF="terminal_interface-curses__ads.htm#ref_1187_14">Allow_Scrolling</A></span> + (<span class="symbol"><A NAME="ref_1023_7" HREF="terminal_interface-curses__ads.htm#ref_1188_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1024_7" HREF="terminal_interface-curses__ads.htm#ref_1189_7">Mode</A></span> : Boolean := False) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1026_16">Scrollok</A></span> (<span class="symbol"><A NAME="ref_1026_26" HREF="terminal_interface-curses__adb.htm#ref_1026_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1026_40" HREF="terminal_interface-curses__adb.htm#ref_1026_16">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Scrollok, "scrollok"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1026_16">Scrollok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1188_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1189_7">Mode</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1187_14">Allow_Scrolling</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1034_13" HREF="terminal_interface-curses__ads.htm#ref_1193_13">Scrolling_Allowed</A></span> (<span class="symbol"><A NAME="ref_1034_32" HREF="terminal_interface-curses__ads.htm#ref_1193_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1037_16">Is_Scroll_Ok</A></span> (<span class="symbol"><A NAME="ref_1037_30" HREF="terminal_interface-curses__adb.htm#ref_1037_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Is_Scroll_Ok, "is_scrollok"); + <b>begin</b> + <b>return</b> (<A HREF="terminal_interface-curses__adb.htm#ref_1037_16">Is_Scroll_Ok</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1193_32">Win</A>) /= <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1193_13">Scrolling_Allowed</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1043_14" HREF="terminal_interface-curses__ads.htm#ref_1198_14">Set_Scroll_Region</A></span> + (<span class="symbol"><A NAME="ref_1044_7" HREF="terminal_interface-curses__ads.htm#ref_1199_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1045_7" HREF="terminal_interface-curses__ads.htm#ref_1200_7">Top_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1046_7" HREF="terminal_interface-curses__ads.htm#ref_1201_7">Bottom_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1048_16">Wsetscrreg</A></span> (<span class="symbol"><A NAME="ref_1048_28" HREF="terminal_interface-curses__adb.htm#ref_1048_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1049_28" HREF="terminal_interface-curses__adb.htm#ref_1048_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1050_28" HREF="terminal_interface-curses__adb.htm#ref_1048_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wsetscrreg, "wsetscrreg"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1048_16">Wsetscrreg</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1199_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1200_7">Top_Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1201_7">Bottom_Line</A>)) + = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1198_14">Set_Scroll_Region</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1060_14" HREF="terminal_interface-curses__ads.htm#ref_1211_14">Update_Screen</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1062_16">Do_Update</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Do_Update, "doupdate"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1062_16">Do_Update</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1211_14">Update_Screen</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1070_14" HREF="terminal_interface-curses__ads.htm#ref_1216_14">Refresh</A></span> (<span class="symbol"><A NAME="ref_1070_23" HREF="terminal_interface-curses__ads.htm#ref_1216_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1072_16">Wrefresh</A></span> (<span class="symbol"><A NAME="ref_1072_26" HREF="terminal_interface-curses__adb.htm#ref_1072_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wrefresh, "wrefresh"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1072_16">Wrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1216_23">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1216_14">Refresh</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1080_14" HREF="terminal_interface-curses__ads.htm#ref_1223_14">Refresh_Without_Update</A></span> + (<span class="symbol"><A NAME="ref_1081_7" HREF="terminal_interface-curses__ads.htm#ref_1224_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1083_16">Wnoutrefresh</A></span> (<span class="symbol"><A NAME="ref_1083_30" HREF="terminal_interface-curses__adb.htm#ref_1083_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wnoutrefresh, "wnoutrefresh"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1083_16">Wnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1224_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1223_14">Refresh_Without_Update</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1091_14" HREF="terminal_interface-curses__ads.htm#ref_1230_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1091_22" HREF="terminal_interface-curses__ads.htm#ref_1230_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1093_16">Redrawwin</A></span> (<span class="symbol"><A NAME="ref_1093_27" HREF="terminal_interface-curses__adb.htm#ref_1093_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Redrawwin, "redrawwin"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1093_16">Redrawwin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1230_22">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1230_14">Redraw</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1101_14" HREF="terminal_interface-curses__ads.htm#ref_1234_14">Redraw</A></span> + (<span class="symbol"><A NAME="ref_1102_7" HREF="terminal_interface-curses__ads.htm#ref_1234_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1103_7" HREF="terminal_interface-curses__ads.htm#ref_1235_22">Begin_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1104_7" HREF="terminal_interface-curses__ads.htm#ref_1236_22">Line_Count</A></span> : Positive) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1106_16">Wredrawln</A></span> (<span class="symbol"><A NAME="ref_1106_27" HREF="terminal_interface-curses__adb.htm#ref_1106_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1106_41" HREF="terminal_interface-curses__adb.htm#ref_1106_16">First</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; <span class="symbol"><A NAME="ref_1106_56" HREF="terminal_interface-curses__adb.htm#ref_1106_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wredrawln, "wredrawln"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1106_16">Wredrawln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1234_22">Win</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1235_22">Begin_Line</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1236_22">Line_Count</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1234_14">Redraw</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1119_14" HREF="terminal_interface-curses__ads.htm#ref_1245_14">Erase</A></span> (<span class="symbol"><A NAME="ref_1119_21" HREF="terminal_interface-curses__ads.htm#ref_1245_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1121_16">Werase</A></span> (<span class="symbol"><A NAME="ref_1121_24" HREF="terminal_interface-curses__adb.htm#ref_1121_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Werase, "werase"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1121_16">Werase</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1245_21">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Erase</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1129_14" HREF="terminal_interface-curses__ads.htm#ref_1251_14">Clear</A></span> (<span class="symbol"><A NAME="ref_1129_21" HREF="terminal_interface-curses__ads.htm#ref_1252_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1131_16">Wclear</A></span> (<span class="symbol"><A NAME="ref_1131_24" HREF="terminal_interface-curses__adb.htm#ref_1131_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wclear, "wclear"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1131_16">Wclear</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1252_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1251_14">Clear</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1139_14" HREF="terminal_interface-curses__ads.htm#ref_1258_14">Clear_To_End_Of_Screen</A></span> (<span class="symbol"><A NAME="ref_1139_38" HREF="terminal_interface-curses__ads.htm#ref_1259_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1141_16">Wclearbot</A></span> (<span class="symbol"><A NAME="ref_1141_27" HREF="terminal_interface-curses__adb.htm#ref_1141_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wclearbot, "wclrtobot"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1141_16">Wclearbot</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1259_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1258_14">Clear_To_End_Of_Screen</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1149_14" HREF="terminal_interface-curses__ads.htm#ref_1265_14">Clear_To_End_Of_Line</A></span> (<span class="symbol"><A NAME="ref_1149_36" HREF="terminal_interface-curses__ads.htm#ref_1266_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1151_16">Wcleareol</A></span> (<span class="symbol"><A NAME="ref_1151_27" HREF="terminal_interface-curses__adb.htm#ref_1151_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wcleareol, "wclrtoeol"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1151_16">Wcleareol</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1266_7">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1265_14">Clear_To_End_Of_Line</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1159_14" HREF="terminal_interface-curses__ads.htm#ref_1279_14">Set_Background</A></span> + (<span class="symbol"><A NAME="ref_1160_7" HREF="terminal_interface-curses__ads.htm#ref_1280_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1161_7" HREF="terminal_interface-curses__ads.htm#ref_1281_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_1163_17">WBackground</A></span> (<span class="symbol"><A NAME="ref_1163_30" HREF="terminal_interface-curses__adb.htm#ref_1163_17">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1163_42" HREF="terminal_interface-curses__adb.htm#ref_1163_17">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <b>pragma</b> Import (C, WBackground, "wbkgdset"); + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1163_17">WBackground</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1280_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1281_7">Ch</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1279_14">Set_Background</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1169_14" HREF="terminal_interface-curses__ads.htm#ref_1287_14">Change_Background</A></span> + (<span class="symbol"><A NAME="ref_1170_7" HREF="terminal_interface-curses__ads.htm#ref_1288_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1171_7" HREF="terminal_interface-curses__ads.htm#ref_1289_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1173_16">WChangeBkgd</A></span> (<span class="symbol"><A NAME="ref_1173_29" HREF="terminal_interface-curses__adb.htm#ref_1173_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1173_41" HREF="terminal_interface-curses__adb.htm#ref_1173_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, WChangeBkgd, "wbkgd"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1173_16">WChangeBkgd</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1288_7">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1289_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1287_14">Change_Background</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1182_13" HREF="terminal_interface-curses__ads.htm#ref_1296_13">Get_Background</A></span> (<span class="symbol"><A NAME="ref_1182_29" HREF="terminal_interface-curses__ads.htm#ref_1296_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1185_16">Wgetbkgd</A></span> (<span class="symbol"><A NAME="ref_1185_26" HREF="terminal_interface-curses__adb.htm#ref_1185_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Wgetbkgd, "getbkgd"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1185_16">Wgetbkgd</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1296_29">Win</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1296_13">Get_Background</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1191_14" HREF="terminal_interface-curses__ads.htm#ref_1323_14">Change_Lines_Status</A></span> (<span class="symbol"><A NAME="ref_1191_35" HREF="terminal_interface-curses__ads.htm#ref_1323_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1192_35" HREF="terminal_interface-curses__ads.htm#ref_1324_35">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1193_35" HREF="terminal_interface-curses__ads.htm#ref_1325_35">Count</A></span> : Positive; + <span class="symbol"><A NAME="ref_1194_35" HREF="terminal_interface-curses__ads.htm#ref_1326_35">State</A></span> : Boolean) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1196_16">Wtouchln</A></span> (<span class="symbol"><A NAME="ref_1196_26" HREF="terminal_interface-curses__adb.htm#ref_1196_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1197_26" HREF="terminal_interface-curses__adb.htm#ref_1196_16">Sta</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1198_26" HREF="terminal_interface-curses__adb.htm#ref_1196_16">Cnt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1199_26" HREF="terminal_interface-curses__adb.htm#ref_1196_16">Chg</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wtouchln, "wtouchln"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1196_16">Wtouchln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1323_35">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1324_35">Start</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1325_35">Count</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1326_35">State</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1323_14">Change_Lines_Status</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1209_14" HREF="terminal_interface-curses__ads.htm#ref_1312_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1209_21" HREF="terminal_interface-curses__ads.htm#ref_1312_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_1211_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1212_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1312_21">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1211_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1212_7">X</A>); + <b>pragma</b> Warnings (Off, <A HREF="terminal_interface-curses__adb.htm#ref_1212_7">X</A>); <span class="comment"><EM>-- unreferenced</EM></span> + <A HREF="terminal_interface-curses__ads.htm#ref_1323_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1312_21">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#ref_1211_7">Y</A>), True); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1312_14">Touch</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1219_14" HREF="terminal_interface-curses__ads.htm#ref_1307_14">Untouch</A></span> (<span class="symbol"><A NAME="ref_1219_23" HREF="terminal_interface-curses__ads.htm#ref_1307_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <span class="symbol"><A NAME="ref_1221_7">Y</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1222_7">X</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1307_23">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1221_7">Y</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1222_7">X</A>); + <b>pragma</b> Warnings (Off, <A HREF="terminal_interface-curses__adb.htm#ref_1222_7">X</A>); <span class="comment"><EM>-- unreferenced</EM></span> + <A HREF="terminal_interface-curses__ads.htm#ref_1323_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1307_23">Win</A>, 0, Positive (<A HREF="terminal_interface-curses__adb.htm#ref_1221_7">Y</A>), False); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1307_14">Untouch</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1229_14" HREF="terminal_interface-curses__ads.htm#ref_1316_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1229_21" HREF="terminal_interface-curses__ads.htm#ref_1316_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1230_21" HREF="terminal_interface-curses__ads.htm#ref_1317_21">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1231_21" HREF="terminal_interface-curses__ads.htm#ref_1318_21">Count</A></span> : Positive) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1323_14">Change_Lines_Status</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1316_21">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1317_21">Start</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1318_21">Count</A>, True); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1316_14">Touch</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1237_13" HREF="terminal_interface-curses__ads.htm#ref_1331_13">Is_Touched</A></span> + (<span class="symbol"><A NAME="ref_1238_7" HREF="terminal_interface-curses__ads.htm#ref_1331_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1239_7" HREF="terminal_interface-curses__ads.htm#ref_1332_25">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1241_16">WLineTouched</A></span> (<span class="symbol"><A NAME="ref_1241_30" HREF="terminal_interface-curses__adb.htm#ref_1241_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1241_42" HREF="terminal_interface-curses__adb.htm#ref_1241_16">L</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, WLineTouched, "is_linetouched"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1241_16">WLineTouched</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1331_25">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1332_25">Line</A>)) = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1331_13">Is_Touched</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1251_13" HREF="terminal_interface-curses__ads.htm#ref_1336_13">Is_Touched</A></span> + (<span class="symbol"><A NAME="ref_1252_7" HREF="terminal_interface-curses__ads.htm#ref_1336_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1254_16">WWinTouched</A></span> (<span class="symbol"><A NAME="ref_1254_29" HREF="terminal_interface-curses__adb.htm#ref_1254_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, WWinTouched, "is_wintouched"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1254_16">WWinTouched</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1336_25">Win</A>) = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1336_13">Is_Touched</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1264_14" HREF="terminal_interface-curses__ads.htm#ref_1345_14">Copy</A></span> + (<span class="symbol"><A NAME="ref_1265_7" HREF="terminal_interface-curses__ads.htm#ref_1346_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1266_7" HREF="terminal_interface-curses__ads.htm#ref_1347_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1267_7" HREF="terminal_interface-curses__ads.htm#ref_1348_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1268_7" HREF="terminal_interface-curses__ads.htm#ref_1349_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1269_7" HREF="terminal_interface-curses__ads.htm#ref_1350_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1270_7" HREF="terminal_interface-curses__ads.htm#ref_1351_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1271_7" HREF="terminal_interface-curses__ads.htm#ref_1352_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1272_7" HREF="terminal_interface-curses__ads.htm#ref_1353_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1273_7" HREF="terminal_interface-curses__ads.htm#ref_1354_7">Non_Destructive_Mode</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1275_16">Copywin</A></span> (<span class="symbol"><A NAME="ref_1275_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1276_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1277_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Str</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1278_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Slc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1279_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Dtr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1280_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Dlc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1281_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Dbr</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1282_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Drc</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1283_25" HREF="terminal_interface-curses__adb.htm#ref_1275_16">Ndm</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Copywin, "copywin"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1275_16">Copywin</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1346_7">Source_Window</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_1347_7">Destination_Window</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1348_7">Source_Top_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1349_7">Source_Left_Column</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1350_7">Destination_Top_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1351_7">Destination_Left_Column</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1352_7">Destination_Bottom_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1353_7">Destination_Right_Column</A>), + Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1354_7">Non_Destructive_Mode</A>) + ) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1345_14">Copy</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1301_14" HREF="terminal_interface-curses__ads.htm#ref_1359_14">Overwrite</A></span> + (<span class="symbol"><A NAME="ref_1302_7" HREF="terminal_interface-curses__ads.htm#ref_1359_25">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1303_7" HREF="terminal_interface-curses__ads.htm#ref_1360_25">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1305_16">Overwrite</A></span> (<span class="symbol"><A NAME="ref_1305_27" HREF="terminal_interface-curses__adb.htm#ref_1305_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1305_41" HREF="terminal_interface-curses__adb.htm#ref_1305_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Overwrite, "overwrite"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1305_16">Overwrite</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1359_25">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1360_25">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1359_14">Overwrite</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1313_14" HREF="terminal_interface-curses__ads.htm#ref_1365_14">Overlay</A></span> + (<span class="symbol"><A NAME="ref_1314_7" HREF="terminal_interface-curses__ads.htm#ref_1365_23">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1315_7" HREF="terminal_interface-curses__ads.htm#ref_1366_23">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1317_16">Overlay</A></span> (<span class="symbol"><A NAME="ref_1317_25" HREF="terminal_interface-curses__adb.htm#ref_1317_16">Src</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1317_39" HREF="terminal_interface-curses__adb.htm#ref_1317_16">Dst</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Overlay, "overlay"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1317_16">Overlay</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1365_23">Source_Window</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1366_23">Destination_Window</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1365_14">Overlay</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1326_14" HREF="terminal_interface-curses__ads.htm#ref_1375_14">Insert_Delete_Lines</A></span> + (<span class="symbol"><A NAME="ref_1327_7" HREF="terminal_interface-curses__ads.htm#ref_1376_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1328_7" HREF="terminal_interface-curses__ads.htm#ref_1377_7">Lines</A></span> : Integer := 1) <span class="comment"><EM>-- default is to insert one line above</EM></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1330_16">Winsdelln</A></span> (<span class="symbol"><A NAME="ref_1330_27" HREF="terminal_interface-curses__adb.htm#ref_1330_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1330_39" HREF="terminal_interface-curses__adb.htm#ref_1330_16">N</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Winsdelln, "winsdelln"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1330_16">Winsdelln</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1376_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1377_7">Lines</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1375_14">Insert_Delete_Lines</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1338_14" HREF="terminal_interface-curses__ads.htm#ref_1383_14">Delete_Line</A></span> (<span class="symbol"><A NAME="ref_1338_27" HREF="terminal_interface-curses__ads.htm#ref_1383_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1375_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1383_27">Win</A>, -1); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1383_14">Delete_Line</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1344_14" HREF="terminal_interface-curses__ads.htm#ref_1389_14">Insert_Line</A></span> (<span class="symbol"><A NAME="ref_1344_27" HREF="terminal_interface-curses__ads.htm#ref_1389_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1375_14">Insert_Delete_Lines</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1389_27">Win</A>, 1); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1389_14">Insert_Line</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_1351_14" HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A></span> + (<span class="symbol"><A NAME="ref_1352_7" HREF="terminal_interface-curses__ads.htm#ref_1400_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1353_7" HREF="terminal_interface-curses__ads.htm#ref_1401_7">Number_Of_Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_1354_7" HREF="terminal_interface-curses__ads.htm#ref_1402_7">Number_Of_Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1356_16">GetMaxY</A></span> (<span class="symbol"><A NAME="ref_1356_25" HREF="terminal_interface-curses__adb.htm#ref_1356_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetMaxY, "getmaxy"); + + <b>function</b> <span class="symbol"><A NAME="ref_1359_16">GetMaxX</A></span> (<span class="symbol"><A NAME="ref_1359_25" HREF="terminal_interface-curses__adb.htm#ref_1359_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetMaxX, "getmaxx"); + + <span class="symbol"><A NAME="ref_1362_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1356_16">GetMaxY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1400_7">Win</A>); + <span class="symbol"><A NAME="ref_1363_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1359_16">GetMaxX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1400_7">Win</A>); + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1401_7">Number_Of_Lines</A> := <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1362_7">Y</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1402_7">Number_Of_Columns</A> := <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1363_7">X</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1369_14" HREF="terminal_interface-curses__ads.htm#ref_1407_14">Get_Window_Position</A></span> + (<span class="symbol"><A NAME="ref_1370_7" HREF="terminal_interface-curses__ads.htm#ref_1408_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1371_7" HREF="terminal_interface-curses__ads.htm#ref_1409_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1372_7" HREF="terminal_interface-curses__ads.htm#ref_1410_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1374_16">GetBegY</A></span> (<span class="symbol"><A NAME="ref_1374_25" HREF="terminal_interface-curses__adb.htm#ref_1374_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetBegY, "getbegy"); + + <b>function</b> <span class="symbol"><A NAME="ref_1377_16">GetBegX</A></span> (<span class="symbol"><A NAME="ref_1377_25" HREF="terminal_interface-curses__adb.htm#ref_1377_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetBegX, "getbegx"); + + <span class="symbol"><A NAME="ref_1380_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1374_16">GetBegY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1408_7">Win</A>)); + <span class="symbol"><A NAME="ref_1381_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1377_16">GetBegX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1408_7">Win</A>)); + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1409_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1380_7">Y</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1410_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1381_7">X</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1407_14">Get_Window_Position</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1387_14" HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A></span> + (<span class="symbol"><A NAME="ref_1388_7" HREF="terminal_interface-curses__ads.htm#ref_1416_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1389_7" HREF="terminal_interface-curses__ads.htm#ref_1417_7">Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1390_7" HREF="terminal_interface-curses__ads.htm#ref_1418_7">Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1392_16">GetCurY</A></span> (<span class="symbol"><A NAME="ref_1392_25" HREF="terminal_interface-curses__adb.htm#ref_1392_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetCurY, "getcury"); + + <b>function</b> <span class="symbol"><A NAME="ref_1395_16">GetCurX</A></span> (<span class="symbol"><A NAME="ref_1395_25" HREF="terminal_interface-curses__adb.htm#ref_1395_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetCurX, "getcurx"); + + <span class="symbol"><A NAME="ref_1398_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1392_16">GetCurY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1416_7">Win</A>)); + <span class="symbol"><A NAME="ref_1399_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1395_16">GetCurX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1416_7">Win</A>)); + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1417_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1398_7">Y</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1418_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1399_7">X</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1405_14" HREF="terminal_interface-curses__ads.htm#ref_1423_14">Get_Origin_Relative_To_Parent</A></span> + (<span class="symbol"><A NAME="ref_1406_7" HREF="terminal_interface-curses__ads.htm#ref_1424_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1407_7" HREF="terminal_interface-curses__ads.htm#ref_1425_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1408_7" HREF="terminal_interface-curses__ads.htm#ref_1426_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1409_7" HREF="terminal_interface-curses__ads.htm#ref_1427_7">Is_Not_A_Subwindow</A></span> : <b>out</b> Boolean) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1411_16">GetParY</A></span> (<span class="symbol"><A NAME="ref_1411_25" HREF="terminal_interface-curses__adb.htm#ref_1411_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetParY, "getpary"); + + <b>function</b> <span class="symbol"><A NAME="ref_1414_16">GetParX</A></span> (<span class="symbol"><A NAME="ref_1414_25" HREF="terminal_interface-curses__adb.htm#ref_1414_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, GetParX, "getparx"); + + <span class="symbol"><A NAME="ref_1417_7">Y</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1411_16">GetParY</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1424_7">Win</A>); + <span class="symbol"><A NAME="ref_1418_7">X</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1414_16">GetParX</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1424_7">Win</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1417_7">Y</A> = -1 <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1425_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>'Last; + <A HREF="terminal_interface-curses__ads.htm#ref_1426_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>'Last; + <A HREF="terminal_interface-curses__ads.htm#ref_1427_7">Is_Not_A_Subwindow</A> := True; + <b>else</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1425_7">Top_Left_Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1417_7">Y</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1426_7">Top_Left_Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1418_7">X</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1427_7">Is_Not_A_Subwindow</A> := False; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1423_14">Get_Origin_Relative_To_Parent</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1431_13" HREF="terminal_interface-curses__ads.htm#ref_1438_13">New_Pad</A></span> (<span class="symbol"><A NAME="ref_1431_22" HREF="terminal_interface-curses__ads.htm#ref_1438_22">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_1432_22" HREF="terminal_interface-curses__ads.htm#ref_1439_22">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1434_16">Newpad</A></span> (<span class="symbol"><A NAME="ref_1434_24" HREF="terminal_interface-curses__adb.htm#ref_1434_16">Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; <span class="symbol"><A NAME="ref_1434_39" HREF="terminal_interface-curses__adb.htm#ref_1434_16">Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Newpad, "newpad"); + + <span class="symbol"><A NAME="ref_1437_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1437_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1434_16">Newpad</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1438_22">Lines</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1439_22">Columns</A>)); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1437_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1437_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1438_13">New_Pad</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1446_13" HREF="terminal_interface-curses__ads.htm#ref_1444_13">Sub_Pad</A></span> + (<span class="symbol"><A NAME="ref_1447_7" HREF="terminal_interface-curses__ads.htm#ref_1445_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1448_7" HREF="terminal_interface-curses__ads.htm#ref_1446_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_1449_7" HREF="terminal_interface-curses__ads.htm#ref_1447_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_1450_7" HREF="terminal_interface-curses__ads.htm#ref_1448_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1451_7" HREF="terminal_interface-curses__ads.htm#ref_1449_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1453_16">Subpad</A></span> + (<span class="symbol"><A NAME="ref_1454_10" HREF="terminal_interface-curses__adb.htm#ref_1453_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1455_10" HREF="terminal_interface-curses__adb.htm#ref_1453_16">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1456_10" HREF="terminal_interface-curses__adb.htm#ref_1453_16">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1457_10" HREF="terminal_interface-curses__adb.htm#ref_1453_16">First_Line_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1458_10" HREF="terminal_interface-curses__adb.htm#ref_1453_16">First_Column_Position</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>pragma</b> Import (C, Subpad, "subpad"); + + <span class="symbol"><A NAME="ref_1461_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1461_7">W</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1453_16">Subpad</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1445_7">Pad</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1446_7">Number_Of_Lines</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1447_7">Number_Of_Columns</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1448_7">First_Line_Position</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1449_7">First_Column_Position</A>)); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1461_7">W</A> = <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1461_7">W</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1444_13">Sub_Pad</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1474_14" HREF="terminal_interface-curses__ads.htm#ref_1454_14">Refresh</A></span> + (<span class="symbol"><A NAME="ref_1475_7" HREF="terminal_interface-curses__ads.htm#ref_1455_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1476_7" HREF="terminal_interface-curses__ads.htm#ref_1456_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1477_7" HREF="terminal_interface-curses__ads.htm#ref_1457_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1478_7" HREF="terminal_interface-curses__ads.htm#ref_1458_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1479_7" HREF="terminal_interface-curses__ads.htm#ref_1459_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1480_7" HREF="terminal_interface-curses__ads.htm#ref_1460_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1481_7" HREF="terminal_interface-curses__ads.htm#ref_1461_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1483_16">Prefresh</A></span> + (<span class="symbol"><A NAME="ref_1484_10" HREF="terminal_interface-curses__adb.htm#ref_1483_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1485_10" HREF="terminal_interface-curses__adb.htm#ref_1483_16">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1486_10" HREF="terminal_interface-curses__adb.htm#ref_1483_16">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1487_10" HREF="terminal_interface-curses__adb.htm#ref_1483_16">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1488_10" HREF="terminal_interface-curses__adb.htm#ref_1483_16">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1489_10" HREF="terminal_interface-curses__adb.htm#ref_1483_16">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1490_10" HREF="terminal_interface-curses__adb.htm#ref_1483_16">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Prefresh, "prefresh"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1483_16">Prefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1455_7">Pad</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1456_7">Source_Top_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1457_7">Source_Left_Column</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1458_7">Destination_Top_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1459_7">Destination_Left_Column</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1460_7">Destination_Bottom_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1461_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1454_14">Refresh</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1505_14" HREF="terminal_interface-curses__ads.htm#ref_1466_14">Refresh_Without_Update</A></span> + (<span class="symbol"><A NAME="ref_1506_7" HREF="terminal_interface-curses__ads.htm#ref_1467_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1507_7" HREF="terminal_interface-curses__ads.htm#ref_1468_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1508_7" HREF="terminal_interface-curses__ads.htm#ref_1469_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1509_7" HREF="terminal_interface-curses__ads.htm#ref_1470_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1510_7" HREF="terminal_interface-curses__ads.htm#ref_1471_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1511_7" HREF="terminal_interface-curses__ads.htm#ref_1472_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1512_7" HREF="terminal_interface-curses__ads.htm#ref_1473_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1514_16">Pnoutrefresh</A></span> + (<span class="symbol"><A NAME="ref_1515_10" HREF="terminal_interface-curses__adb.htm#ref_1514_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1516_10" HREF="terminal_interface-curses__adb.htm#ref_1514_16">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1517_10" HREF="terminal_interface-curses__adb.htm#ref_1514_16">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1518_10" HREF="terminal_interface-curses__adb.htm#ref_1514_16">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1519_10" HREF="terminal_interface-curses__adb.htm#ref_1514_16">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1520_10" HREF="terminal_interface-curses__adb.htm#ref_1514_16">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1521_10" HREF="terminal_interface-curses__adb.htm#ref_1514_16">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Pnoutrefresh, "pnoutrefresh"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1514_16">Pnoutrefresh</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1467_7">Pad</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1468_7">Source_Top_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1469_7">Source_Left_Column</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1470_7">Destination_Top_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1471_7">Destination_Left_Column</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1472_7">Destination_Bottom_Row</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1473_7">Destination_Right_Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1466_14">Refresh_Without_Update</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1536_14" HREF="terminal_interface-curses__ads.htm#ref_1478_14">Add_Character_To_Pad_And_Echo_It</A></span> + (<span class="symbol"><A NAME="ref_1537_7" HREF="terminal_interface-curses__ads.htm#ref_1479_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1538_7" HREF="terminal_interface-curses__ads.htm#ref_1480_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1540_16">Pechochar</A></span> (<span class="symbol"><A NAME="ref_1540_27" HREF="terminal_interface-curses__adb.htm#ref_1540_16">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1540_41" HREF="terminal_interface-curses__adb.htm#ref_1540_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Pechochar, "pechochar"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1540_16">Pechochar</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1479_7">Pad</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1480_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1478_14">Add_Character_To_Pad_And_Echo_It</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1549_14" HREF="terminal_interface-curses__ads.htm#ref_1483_14">Add_Character_To_Pad_And_Echo_It</A></span> + (<span class="symbol"><A NAME="ref_1550_7" HREF="terminal_interface-curses__ads.htm#ref_1484_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1551_7" HREF="terminal_interface-curses__ads.htm#ref_1485_7">Ch</A></span> : Character) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1478_14">Add_Character_To_Pad_And_Echo_It</A> + (<A HREF="terminal_interface-curses__ads.htm#ref_1484_7">Pad</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>'(<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1485_7">Ch</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>)); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1483_14">Add_Character_To_Pad_And_Echo_It</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1561_14" HREF="terminal_interface-curses__ads.htm#ref_1493_14">Scroll</A></span> (<span class="symbol"><A NAME="ref_1561_22" HREF="terminal_interface-curses__ads.htm#ref_1493_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1562_22" HREF="terminal_interface-curses__ads.htm#ref_1494_22">Amount</A></span> : Integer := 1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1564_16">Wscrl</A></span> (<span class="symbol"><A NAME="ref_1564_23" HREF="terminal_interface-curses__adb.htm#ref_1564_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1564_37" HREF="terminal_interface-curses__adb.htm#ref_1564_16">N</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wscrl, "wscrl"); + + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1564_16">Wscrl</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1493_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1494_22">Amount</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1493_14">Scroll</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1574_14" HREF="terminal_interface-curses__ads.htm#ref_1505_14">Delete_Character</A></span> (<span class="symbol"><A NAME="ref_1574_32" HREF="terminal_interface-curses__ads.htm#ref_1505_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1576_16">Wdelch</A></span> (<span class="symbol"><A NAME="ref_1576_24" HREF="terminal_interface-curses__adb.htm#ref_1576_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wdelch, "wdelch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1576_16">Wdelch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1505_32">Win</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1505_14">Delete_Character</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1584_14" HREF="terminal_interface-curses__ads.htm#ref_1510_14">Delete_Character</A></span> + (<span class="symbol"><A NAME="ref_1585_7" HREF="terminal_interface-curses__ads.htm#ref_1511_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1586_7" HREF="terminal_interface-curses__ads.htm#ref_1512_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1587_7" HREF="terminal_interface-curses__ads.htm#ref_1513_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1589_16">Mvwdelch</A></span> (<span class="symbol"><A NAME="ref_1589_26" HREF="terminal_interface-curses__adb.htm#ref_1589_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1590_26" HREF="terminal_interface-curses__adb.htm#ref_1589_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1591_26" HREF="terminal_interface-curses__adb.htm#ref_1589_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Mvwdelch, "mvwdelch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1589_16">Mvwdelch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1511_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1512_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1513_7">Column</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1510_14">Delete_Character</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1599_13" HREF="terminal_interface-curses__ads.htm#ref_1523_13">Peek</A></span> (<span class="symbol"><A NAME="ref_1599_19" HREF="terminal_interface-curses__ads.htm#ref_1523_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1602_16">Winch</A></span> (<span class="symbol"><A NAME="ref_1602_23" HREF="terminal_interface-curses__adb.htm#ref_1602_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Winch, "winch"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1602_16">Winch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1523_19">Win</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1523_13">Peek</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1608_13" HREF="terminal_interface-curses__ads.htm#ref_1529_13">Peek</A></span> + (<span class="symbol"><A NAME="ref_1609_7" HREF="terminal_interface-curses__ads.htm#ref_1530_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1610_7" HREF="terminal_interface-curses__ads.htm#ref_1531_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1611_7" HREF="terminal_interface-curses__ads.htm#ref_1532_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1613_16">Mvwinch</A></span> (<span class="symbol"><A NAME="ref_1613_25" HREF="terminal_interface-curses__adb.htm#ref_1613_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1614_25" HREF="terminal_interface-curses__adb.htm#ref_1613_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1615_25" HREF="terminal_interface-curses__adb.htm#ref_1613_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Mvwinch, "mvwinch"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1613_16">Mvwinch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1530_7">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1531_7">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1532_7">Column</A>)); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1529_13">Peek</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1621_14" HREF="terminal_interface-curses__ads.htm#ref_1542_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1621_22" HREF="terminal_interface-curses__ads.htm#ref_1542_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1622_22" HREF="terminal_interface-curses__ads.htm#ref_1543_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1624_16">Winsch</A></span> (<span class="symbol"><A NAME="ref_1624_24" HREF="terminal_interface-curses__adb.htm#ref_1624_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; <span class="symbol"><A NAME="ref_1624_38" HREF="terminal_interface-curses__adb.htm#ref_1624_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Winsch, "winsch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1624_16">Winsch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1542_22">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1543_22">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1542_14">Insert</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1632_14" HREF="terminal_interface-curses__ads.htm#ref_1548_14">Insert</A></span> + (<span class="symbol"><A NAME="ref_1633_7" HREF="terminal_interface-curses__ads.htm#ref_1548_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1634_7" HREF="terminal_interface-curses__ads.htm#ref_1549_22">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1635_7" HREF="terminal_interface-curses__ads.htm#ref_1550_22">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1636_7" HREF="terminal_interface-curses__ads.htm#ref_1551_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1638_16">Mvwinsch</A></span> (<span class="symbol"><A NAME="ref_1638_26" HREF="terminal_interface-curses__adb.htm#ref_1638_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1639_26" HREF="terminal_interface-curses__adb.htm#ref_1638_16">Lin</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1640_26" HREF="terminal_interface-curses__adb.htm#ref_1638_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1641_26" HREF="terminal_interface-curses__adb.htm#ref_1638_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Mvwinsch, "mvwinsch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1638_16">Mvwinsch</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1548_22">Win</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1549_22">Line</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1550_22">Column</A>), + <A HREF="terminal_interface-curses__ads.htm#ref_1551_22">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1548_14">Insert</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1653_14" HREF="terminal_interface-curses__ads.htm#ref_1560_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1653_22" HREF="terminal_interface-curses__ads.htm#ref_1560_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1654_22" HREF="terminal_interface-curses__ads.htm#ref_1561_22">Str</A></span> : String; + <span class="symbol"><A NAME="ref_1655_22" HREF="terminal_interface-curses__ads.htm#ref_1562_22">Len</A></span> : Integer := -1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1657_16">Winsnstr</A></span> (<span class="symbol"><A NAME="ref_1657_26" HREF="terminal_interface-curses__adb.htm#ref_1657_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1658_26" HREF="terminal_interface-curses__adb.htm#ref_1657_16">Str</A></span> : char_array; + <span class="symbol"><A NAME="ref_1659_26" HREF="terminal_interface-curses__adb.htm#ref_1657_16">Len</A></span> : Integer := -1) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Winsnstr, "winsnstr"); + + <span class="symbol"><A NAME="ref_1662_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1561_22">Str</A>'Length); + <span class="symbol"><A NAME="ref_1663_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1561_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1662_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1663_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1657_16">Winsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1560_22">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1662_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1562_22">Len</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1560_14">Insert</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1671_14" HREF="terminal_interface-curses__ads.htm#ref_1569_14">Insert</A></span> + (<span class="symbol"><A NAME="ref_1672_7" HREF="terminal_interface-curses__ads.htm#ref_1569_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1673_7" HREF="terminal_interface-curses__ads.htm#ref_1570_22">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1674_7" HREF="terminal_interface-curses__ads.htm#ref_1571_22">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1675_7" HREF="terminal_interface-curses__ads.htm#ref_1572_22">Str</A></span> : String; + <span class="symbol"><A NAME="ref_1676_7" HREF="terminal_interface-curses__ads.htm#ref_1573_22">Len</A></span> : Integer := -1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1678_16">Mvwinsnstr</A></span> (<span class="symbol"><A NAME="ref_1678_28" HREF="terminal_interface-curses__adb.htm#ref_1678_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1679_28" HREF="terminal_interface-curses__adb.htm#ref_1678_16">Line</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1680_28" HREF="terminal_interface-curses__adb.htm#ref_1678_16">Column</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1681_28" HREF="terminal_interface-curses__adb.htm#ref_1678_16">Str</A></span> : char_array; + <span class="symbol"><A NAME="ref_1682_28" HREF="terminal_interface-curses__adb.htm#ref_1678_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Mvwinsnstr, "mvwinsnstr"); + + <span class="symbol"><A NAME="ref_1685_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1572_22">Str</A>'Length); + <span class="symbol"><A NAME="ref_1686_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1572_22">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1685_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1686_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1678_16">Mvwinsnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1569_22">Win</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1570_22">Line</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1571_22">Column</A>), <A HREF="terminal_interface-curses__adb.htm#ref_1685_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1573_22">Len</A>)) + = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1569_14">Insert</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1696_14" HREF="terminal_interface-curses__ads.htm#ref_1585_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1696_20" HREF="terminal_interface-curses__ads.htm#ref_1585_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1697_20" HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1698_20" HREF="terminal_interface-curses__ads.htm#ref_1587_20">Len</A></span> : Integer := -1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1700_16">Winnstr</A></span> (<span class="symbol"><A NAME="ref_1700_25" HREF="terminal_interface-curses__adb.htm#ref_1700_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1701_25" HREF="terminal_interface-curses__adb.htm#ref_1700_16">Str</A></span> : char_array; + <span class="symbol"><A NAME="ref_1702_25" HREF="terminal_interface-curses__adb.htm#ref_1700_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Winnstr, "winnstr"); + + <span class="symbol"><A NAME="ref_1705_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1587_20">Len</A>; + <span class="symbol"><A NAME="ref_1706_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A>'Length); + <span class="symbol"><A NAME="ref_1707_7">Cnt</A></span> : Natural; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1705_7">N</A> &lt; 0 <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1705_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A>'Length; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1705_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A>'Length <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__adb.htm#ref_1706_7">Txt</A> (0) := <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char'First; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1700_16">Winnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1585_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1706_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1705_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + To_Ada (<A HREF="terminal_interface-curses__adb.htm#ref_1706_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1707_7">Cnt</A>, True); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1707_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A>'Length <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1707_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1586_20">Str</A>'Last) := (<b>others</b> =&gt; ' '); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1585_14">Peek</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1725_14" HREF="terminal_interface-curses__ads.htm#ref_1594_14">Peek</A></span> + (<span class="symbol"><A NAME="ref_1726_7" HREF="terminal_interface-curses__ads.htm#ref_1594_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1727_7" HREF="terminal_interface-curses__ads.htm#ref_1595_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1728_7" HREF="terminal_interface-curses__ads.htm#ref_1596_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1729_7" HREF="terminal_interface-curses__ads.htm#ref_1597_20">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1730_7" HREF="terminal_interface-curses__ads.htm#ref_1598_20">Len</A></span> : Integer := -1) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1594_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1595_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1596_20">Column</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1585_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1594_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1597_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1598_20">Len</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1594_14">Peek</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1737_14" HREF="terminal_interface-curses__ads.htm#ref_1609_14">Peek</A></span> + (<span class="symbol"><A NAME="ref_1738_7" HREF="terminal_interface-curses__ads.htm#ref_1609_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1739_7" HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Attributed_String</A>; + <span class="symbol"><A NAME="ref_1740_7" HREF="terminal_interface-curses__ads.htm#ref_1611_20">Len</A></span> : Integer := -1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1742_16">Winchnstr</A></span> (<span class="symbol"><A NAME="ref_1742_27" HREF="terminal_interface-curses__adb.htm#ref_1742_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1743_27" HREF="terminal_interface-curses__adb.htm#ref_1742_16">Str</A></span> : chtype_array; <span class="comment"><EM>-- out</EM></span> + <span class="symbol"><A NAME="ref_1744_27" HREF="terminal_interface-curses__adb.htm#ref_1742_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Winchnstr, "winchnstr"); + + <span class="symbol"><A NAME="ref_1747_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1611_20">Len</A>; + <span class="symbol"><A NAME="ref_1748_7">Txt</A></span> : <b>constant</b> chtype_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A>'Length) + := (0 =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>); + <span class="symbol"><A NAME="ref_1750_7">Cnt</A></span> : Natural := 0; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1747_7">N</A> &lt; 0 <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1747_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A>'Length; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1747_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A>'Length <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1742_16">Winchnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1609_20">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1748_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1747_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>for</b> <span class="symbol"><A NAME="ref_1761_11">To</A></span> <b>in</b> <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A>'<b>Range</b> <b>loop</b> + <b>exit</b> <b>when</b> <A HREF="terminal_interface-curses__adb.htm#ref_1748_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#ref_1750_7">Cnt</A>)) = <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1761_11">To</A>) := <A HREF="terminal_interface-curses__adb.htm#ref_1748_7">Txt</A> (size_t (<A HREF="terminal_interface-curses__adb.htm#ref_1750_7">Cnt</A>)); + <A HREF="terminal_interface-curses__adb.htm#ref_1750_7">Cnt</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1750_7">Cnt</A> + 1; + <b>end</b> <b>loop</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1750_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A>'Length <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1750_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1610_20">Str</A>'Last) := + (<b>others</b> =&gt; (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; ' ', + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>)); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1609_14">Peek</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1774_14" HREF="terminal_interface-curses__ads.htm#ref_1618_14">Peek</A></span> + (<span class="symbol"><A NAME="ref_1775_7" HREF="terminal_interface-curses__ads.htm#ref_1618_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1776_7" HREF="terminal_interface-curses__ads.htm#ref_1619_20">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1777_7" HREF="terminal_interface-curses__ads.htm#ref_1620_20">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1778_7" HREF="terminal_interface-curses__ads.htm#ref_1621_20">Str</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Attributed_String</A>; + <span class="symbol"><A NAME="ref_1779_7" HREF="terminal_interface-curses__ads.htm#ref_1622_20">Len</A></span> : Integer := -1) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1618_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1619_20">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1620_20">Column</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1609_14">Peek</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1618_20">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1621_20">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1622_20">Len</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1618_14">Peek</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1786_14" HREF="terminal_interface-curses__ads.htm#ref_1634_14">Get</A></span> (<span class="symbol"><A NAME="ref_1786_19" HREF="terminal_interface-curses__ads.htm#ref_1634_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1787_19" HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1788_19" HREF="terminal_interface-curses__ads.htm#ref_1636_19">Len</A></span> : Integer := -1) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1790_16">Wgetnstr</A></span> (<span class="symbol"><A NAME="ref_1790_26" HREF="terminal_interface-curses__adb.htm#ref_1790_16">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1791_26" HREF="terminal_interface-curses__adb.htm#ref_1790_16">Str</A></span> : char_array; + <span class="symbol"><A NAME="ref_1792_26" HREF="terminal_interface-curses__adb.htm#ref_1790_16">Len</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Wgetnstr, "wgetnstr"); + + <span class="symbol"><A NAME="ref_1795_7">N</A></span> : Integer := <A HREF="terminal_interface-curses__ads.htm#ref_1636_19">Len</A>; + <span class="symbol"><A NAME="ref_1796_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A>'Length); + <span class="symbol"><A NAME="ref_1797_7">Cnt</A></span> : Natural; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1795_7">N</A> &lt; 0 <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1795_7">N</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A>'Length; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1795_7">N</A> &gt; <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A>'Length <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__adb.htm#ref_1796_7">Txt</A> (0) := <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.char'First; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1790_16">Wgetnstr</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1634_19">Win</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1796_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1795_7">N</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + To_Ada (<A HREF="terminal_interface-curses__adb.htm#ref_1796_7">Txt</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1797_7">Cnt</A>, True); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1797_7">Cnt</A> &lt; <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A>'Length <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A> ((<A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A>'First + <A HREF="terminal_interface-curses__adb.htm#ref_1797_7">Cnt</A>) .. <A HREF="terminal_interface-curses__ads.htm#ref_1635_19">Str</A>'Last) := (<b>others</b> =&gt; ' '); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1634_14">Get</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1815_14" HREF="terminal_interface-curses__ads.htm#ref_1645_14">Get</A></span> + (<span class="symbol"><A NAME="ref_1816_7" HREF="terminal_interface-curses__ads.htm#ref_1645_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1817_7" HREF="terminal_interface-curses__ads.htm#ref_1646_19">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1818_7" HREF="terminal_interface-curses__ads.htm#ref_1647_19">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1819_7" HREF="terminal_interface-curses__ads.htm#ref_1648_19">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1820_7" HREF="terminal_interface-curses__ads.htm#ref_1649_19">Len</A></span> : Integer := -1) + <b>is</b> + <b>begin</b> + <A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1645_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1646_19">Line</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1647_19">Column</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1634_14">Get</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1645_19">Win</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1648_19">Str</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1649_19">Len</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1645_14">Get</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1827_14" HREF="terminal_interface-curses__ads.htm#ref_1670_14">Init_Soft_Label_Keys</A></span> + (<span class="symbol"><A NAME="ref_1828_7" HREF="terminal_interface-curses__ads.htm#ref_1671_7">Format</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1662_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1662_35">Three_Two_Three</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1830_16">Slk_Init</A></span> (<span class="symbol"><A NAME="ref_1830_26" HREF="terminal_interface-curses__adb.htm#ref_1830_16">Fmt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Init, "slk_init"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1830_16">Slk_Init</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1662_9">Soft_Label_Key_Format</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1671_7">Format</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1670_14">Init_Soft_Label_Keys</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1838_14" HREF="terminal_interface-curses__ads.htm#ref_1676_14">Set_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1838_34" HREF="terminal_interface-curses__ads.htm#ref_1676_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Number</A>; + <span class="symbol"><A NAME="ref_1839_34" HREF="terminal_interface-curses__ads.htm#ref_1677_34">Text</A></span> : String; + <span class="symbol"><A NAME="ref_1840_34" HREF="terminal_interface-curses__ads.htm#ref_1678_34">Fmt</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1667_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1667_33">Left</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1842_16">Slk_Set</A></span> (<span class="symbol"><A NAME="ref_1842_25" HREF="terminal_interface-curses__adb.htm#ref_1842_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1843_25" HREF="terminal_interface-curses__adb.htm#ref_1842_16">Txt</A></span> : char_array; + <span class="symbol"><A NAME="ref_1844_25" HREF="terminal_interface-curses__adb.htm#ref_1842_16">Fmt</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Set, "slk_set"); + + <span class="symbol"><A NAME="ref_1847_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1677_34">Text</A>'Length); + <span class="symbol"><A NAME="ref_1848_7">Len</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1677_34">Text</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1847_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_1848_7">Len</A>); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1842_16">Slk_Set</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1676_34">Label</A>), <A HREF="terminal_interface-curses__adb.htm#ref_1847_7">Txt</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1667_9">Label_Justification</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1678_34">Fmt</A>))) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1676_14">Set_Soft_Label_Key</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1858_14" HREF="terminal_interface-curses__ads.htm#ref_1683_14">Refresh_Soft_Label_Keys</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1860_16">Slk_Refresh</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Refresh, "slk_refresh"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1860_16">Slk_Refresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1683_14">Refresh_Soft_Label_Keys</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1868_14" HREF="terminal_interface-curses__ads.htm#ref_1688_14">Refresh_Soft_Label_Keys_Without_Update</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1870_16">Slk_Noutrefresh</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Noutrefresh, "slk_noutrefresh"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1870_16">Slk_Noutrefresh</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1688_14">Refresh_Soft_Label_Keys_Without_Update</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1878_14" HREF="terminal_interface-curses__ads.htm#ref_1693_14">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1878_34" HREF="terminal_interface-curses__ads.htm#ref_1693_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Number</A>; + <span class="symbol"><A NAME="ref_1879_34" HREF="terminal_interface-curses__ads.htm#ref_1694_34">Text</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1881_16">Slk_Label</A></span> (<span class="symbol"><A NAME="ref_1881_27" HREF="terminal_interface-curses__adb.htm#ref_1881_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Slk_Label, "slk_label"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1881_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1693_34">Label</A>)), <A HREF="terminal_interface-curses__ads.htm#ref_1694_34">Text</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1693_14">Get_Soft_Label_Key</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1887_13" HREF="terminal_interface-curses__ads.htm#ref_1698_13">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1887_33" HREF="terminal_interface-curses__ads.htm#ref_1698_33">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Number</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1889_16">Slk_Label</A></span> (<span class="symbol"><A NAME="ref_1889_27" HREF="terminal_interface-curses__adb.htm#ref_1889_16">Label</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Slk_Label, "slk_label"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1889_16">Slk_Label</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1698_33">Label</A>))); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1698_13">Get_Soft_Label_Key</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1895_14" HREF="terminal_interface-curses__ads.htm#ref_1704_14">Clear_Soft_Label_Keys</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1897_16">Slk_Clear</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Clear, "slk_clear"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1897_16">Slk_Clear</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1704_14">Clear_Soft_Label_Keys</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1905_14" HREF="terminal_interface-curses__ads.htm#ref_1709_14">Restore_Soft_Label_Keys</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1907_16">Slk_Restore</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Restore, "slk_restore"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1907_16">Slk_Restore</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1709_14">Restore_Soft_Label_Keys</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1915_14" HREF="terminal_interface-curses__ads.htm#ref_1714_14">Touch_Soft_Label_Keys</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1917_16">Slk_Touch</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Touch, "slk_touch"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1917_16">Slk_Touch</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1714_14">Touch_Soft_Label_Keys</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1925_14" HREF="terminal_interface-curses__ads.htm#ref_1719_14">Switch_Soft_Label_Key_Attributes</A></span> + (<span class="symbol"><A NAME="ref_1926_7" HREF="terminal_interface-curses__ads.htm#ref_1720_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_1927_7" HREF="terminal_interface-curses__ads.htm#ref_1721_7">On</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1929_16">Slk_Attron</A></span> (<span class="symbol"><A NAME="ref_1929_28" HREF="terminal_interface-curses__adb.htm#ref_1929_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Attron, "slk_attron"); + <b>function</b> <span class="symbol"><A NAME="ref_1931_16">Slk_Attroff</A></span> (<span class="symbol"><A NAME="ref_1931_29" HREF="terminal_interface-curses__adb.htm#ref_1931_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Attroff, "slk_attroff"); + + <span class="symbol"><A NAME="ref_1934_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_1935_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1720_7">Attr</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1721_7">On</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1934_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1929_16">Slk_Attron</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1935_7">Ch</A>); + <b>else</b> + <A HREF="terminal_interface-curses__adb.htm#ref_1934_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1931_16">Slk_Attroff</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1935_7">Ch</A>); + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1934_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1719_14">Switch_Soft_Label_Key_Attributes</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1949_14" HREF="terminal_interface-curses__ads.htm#ref_1727_14">Set_Soft_Label_Key_Attributes</A></span> + (<span class="symbol"><A NAME="ref_1950_7" HREF="terminal_interface-curses__ads.htm#ref_1728_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_1951_7" HREF="terminal_interface-curses__ads.htm#ref_1729_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1953_16">Slk_Attrset</A></span> (<span class="symbol"><A NAME="ref_1953_29" HREF="terminal_interface-curses__adb.htm#ref_1953_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Attrset, "slk_attrset"); + + <span class="symbol"><A NAME="ref_1956_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1728_7">Attr</A>, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_1729_7">Color</A>); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1953_16">Slk_Attrset</A> (<A HREF="terminal_interface-curses__adb.htm#ref_1956_7">Ch</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1727_14">Set_Soft_Label_Key_Attributes</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1965_13" HREF="terminal_interface-curses__ads.htm#ref_1734_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1967_16">Slk_Attr</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Slk_Attr, "slk_attr"); + + <span class="symbol"><A NAME="ref_1970_7">Attr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1967_16">Slk_Attr</A>; + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1970_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1734_13">Get_Soft_Label_Key_Attributes</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_1975_13" HREF="terminal_interface-curses__ads.htm#ref_1738_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1977_16">Slk_Attr</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Slk_Attr, "slk_attr"); + + <span class="symbol"><A NAME="ref_1980_7">Attr</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__adb.htm#ref_1977_16">Slk_Attr</A>; + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_1980_7">Attr</A>.<A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1738_13">Get_Soft_Label_Key_Attributes</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_1985_14" HREF="terminal_interface-curses__ads.htm#ref_1743_14">Set_Soft_Label_Key_Color</A></span> (<span class="symbol"><A NAME="ref_1985_40" HREF="terminal_interface-curses__ads.htm#ref_1743_40">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1987_16">Slk_Color</A></span> (<span class="symbol"><A NAME="ref_1987_27" HREF="terminal_interface-curses__adb.htm#ref_1987_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Slk_Color, "slk_color"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1987_16">Slk_Color</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1743_40">Pair</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1743_14">Set_Soft_Label_Key_Color</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1996_14" HREF="terminal_interface-curses__ads.htm#ref_1757_14">Enable_Key</A></span> (<span class="symbol"><A NAME="ref_1996_26" HREF="terminal_interface-curses__ads.htm#ref_1757_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>; + <span class="symbol"><A NAME="ref_1997_26" HREF="terminal_interface-curses__ads.htm#ref_1758_26">Enable</A></span> : Boolean := True) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_1999_16">Keyok</A></span> (<span class="symbol"><A NAME="ref_1999_23" HREF="terminal_interface-curses__adb.htm#ref_1999_16">Keycode</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_2000_23" HREF="terminal_interface-curses__adb.htm#ref_1999_16">On_Off</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Keyok, "keyok"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_1999_16">Keyok</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1757_26">Key</A>), <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1758_26">Enable</A>))) + = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1757_14">Enable_Key</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2010_14" HREF="terminal_interface-curses__ads.htm#ref_1767_14">Define_Key</A></span> (<span class="symbol"><A NAME="ref_2010_26" HREF="terminal_interface-curses__ads.htm#ref_1767_26">Definition</A></span> : String; + <span class="symbol"><A NAME="ref_2011_26" HREF="terminal_interface-curses__ads.htm#ref_1768_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2013_16">Defkey</A></span> (<span class="symbol"><A NAME="ref_2013_24" HREF="terminal_interface-curses__adb.htm#ref_2013_16">Def</A></span> : char_array; + <span class="symbol"><A NAME="ref_2014_24" HREF="terminal_interface-curses__adb.htm#ref_2013_16">Key</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Defkey, "define_key"); + + <span class="symbol"><A NAME="ref_2017_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_1767_26">Definition</A>'Length); + <span class="symbol"><A NAME="ref_2018_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_1767_26">Definition</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2017_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2018_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2013_16">Defkey</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2017_7">Txt</A>, <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1768_26">Key</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1767_14">Define_Key</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2026_14" HREF="terminal_interface-curses__ads.htm#ref_1793_14">Un_Control</A></span> (<span class="symbol"><A NAME="ref_2026_26" HREF="terminal_interface-curses__ads.htm#ref_1793_26">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_2027_26" HREF="terminal_interface-curses__ads.htm#ref_1794_26">Str</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2029_16">Unctrl</A></span> (<span class="symbol"><A NAME="ref_2029_24" HREF="terminal_interface-curses__adb.htm#ref_2029_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Unctrl, "unctrl"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2029_16">Unctrl</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1793_26">Ch</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1794_26">Str</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1793_14">Un_Control</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2035_13" HREF="terminal_interface-curses__ads.htm#ref_1798_13">Un_Control</A></span> (<span class="symbol"><A NAME="ref_2035_25" HREF="terminal_interface-curses__ads.htm#ref_1798_25">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2037_16">Unctrl</A></span> (<span class="symbol"><A NAME="ref_2037_24" HREF="terminal_interface-curses__adb.htm#ref_2037_16">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Unctrl, "unctrl"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2037_16">Unctrl</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1798_25">Ch</A>)); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1798_13">Un_Control</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2043_14" HREF="terminal_interface-curses__ads.htm#ref_1804_14">Delay_Output</A></span> (<span class="symbol"><A NAME="ref_2043_28" HREF="terminal_interface-curses__ads.htm#ref_1804_28">Msecs</A></span> : Natural) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2045_16">Delayoutput</A></span> (<span class="symbol"><A NAME="ref_2045_29" HREF="terminal_interface-curses__adb.htm#ref_2045_16">Msecs</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Delayoutput, "delay_output"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2045_16">Delayoutput</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1804_28">Msecs</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1804_14">Delay_Output</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2053_14" HREF="terminal_interface-curses__ads.htm#ref_1809_14">Flush_Input</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2055_16">Flushinp</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Flushinp, "flushinp"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2055_16">Flushinp</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> <span class="comment"><EM>-- docu says that never happens, but...</EM></span> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1809_14">Flush_Input</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_2063_13" HREF="terminal_interface-curses__ads.htm#ref_1818_13">Baudrate</A></span> <b>return</b> Natural + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2065_16">Baud</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Baud, "baudrate"); + <b>begin</b> + <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2065_16">Baud</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1818_13">Baudrate</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2071_13" HREF="terminal_interface-curses__ads.htm#ref_1823_13">Erase_Character</A></span> <b>return</b> Character + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2073_16">Erasechar</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Erasechar, "erasechar"); + <b>begin</b> + <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2073_16">Erasechar</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1823_13">Erase_Character</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2079_13" HREF="terminal_interface-curses__ads.htm#ref_1828_13">Kill_Character</A></span> <b>return</b> Character + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2081_16">Killchar</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Killchar, "killchar"); + <b>begin</b> + <b>return</b> Character'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2081_16">Killchar</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1828_13">Kill_Character</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2087_13" HREF="terminal_interface-curses__ads.htm#ref_1833_13">Has_Insert_Character</A></span> <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2089_16">Has_Ic</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Has_Ic, "has_ic"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2089_16">Has_Ic</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1833_13">Has_Insert_Character</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2099_13" HREF="terminal_interface-curses__ads.htm#ref_1838_13">Has_Insert_Line</A></span> <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2101_16">Has_Il</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Has_Il, "has_il"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2101_16">Has_Il</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1838_13">Has_Insert_Line</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2111_13" HREF="terminal_interface-curses__ads.htm#ref_1843_13">Supported_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2113_16">Termattrs</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, Termattrs, "termattrs"); + + <span class="symbol"><A NAME="ref_2116_7">Ch</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2113_16">Termattrs</A>; + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__adb.htm#ref_2116_7">Ch</A>.<A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1843_13">Supported_Attributes</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2121_14" HREF="terminal_interface-curses__ads.htm#ref_1848_14">Long_Name</A></span> (<span class="symbol"><A NAME="ref_2121_25" HREF="terminal_interface-curses__ads.htm#ref_1848_25">Name</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2123_16">Longname</A></span> <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Longname, "longname"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2123_16">Longname</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1848_25">Name</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1848_14">Long_Name</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2129_13" HREF="terminal_interface-curses__ads.htm#ref_1852_13">Long_Name</A></span> <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2131_16">Longname</A></span> <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Longname, "longname"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2131_16">Longname</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1852_13">Long_Name</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2137_14" HREF="terminal_interface-curses__ads.htm#ref_1858_14">Terminal_Name</A></span> (<span class="symbol"><A NAME="ref_2137_29" HREF="terminal_interface-curses__ads.htm#ref_1858_29">Name</A></span> : <b>out</b> String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2139_16">Termname</A></span> <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Termname, "termname"); + <b>begin</b> + <A HREF="terminal_interface-curses-aux__ads.htm#ref_91_14">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2139_16">Termname</A>, <A HREF="terminal_interface-curses__ads.htm#ref_1858_29">Name</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1858_14">Terminal_Name</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2145_13" HREF="terminal_interface-curses__ads.htm#ref_1862_13">Terminal_Name</A></span> <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2147_16">Termname</A></span> <b>return</b> chars_ptr; + <b>pragma</b> Import (C, Termname, "termname"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2147_16">Termname</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1862_13">Terminal_Name</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2153_14" HREF="terminal_interface-curses__ads.htm#ref_1883_14">Init_Pair</A></span> (<span class="symbol"><A NAME="ref_2153_25" HREF="terminal_interface-curses__ads.htm#ref_1883_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_412_12">Redefinable_Color_Pair</A>; + <span class="symbol"><A NAME="ref_2154_25" HREF="terminal_interface-curses__ads.htm#ref_1884_25">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_2155_25" HREF="terminal_interface-curses__ads.htm#ref_1885_25">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2157_16">Initpair</A></span> (<span class="symbol"><A NAME="ref_2157_26" HREF="terminal_interface-curses__adb.htm#ref_2157_16">Pair</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_2158_26" HREF="terminal_interface-curses__adb.htm#ref_2157_16">Fore</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_2159_26" HREF="terminal_interface-curses__adb.htm#ref_2157_16">Back</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Initpair, "init_pair"); + <b>begin</b> + <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1883_25">Pair</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_563_13">Number_Of_Color_Pairs</A> <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <b>if</b> Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1884_25">Fore</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_560_13">Number_Of_Colors</A> <b>or</b> <b>else</b> + Integer (<A HREF="terminal_interface-curses__ads.htm#ref_1885_25">Back</A>) &gt;= <A HREF="terminal_interface-curses__ads.htm#ref_560_13">Number_Of_Colors</A> + <b>then</b> + <b>raise</b> Constraint_Error; + <b>end</b> <b>if</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2157_16">Initpair</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1883_25">Pair</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1884_25">Fore</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1885_25">Back</A>)) + = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1883_14">Init_Pair</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2177_14" HREF="terminal_interface-curses__ads.htm#ref_1890_14">Pair_Content</A></span> (<span class="symbol"><A NAME="ref_2177_28" HREF="terminal_interface-curses__ads.htm#ref_1890_28">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>; + <span class="symbol"><A NAME="ref_2178_28" HREF="terminal_interface-curses__ads.htm#ref_1891_28">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_2179_28" HREF="terminal_interface-curses__ads.htm#ref_1892_28">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_2181_12">C_Short_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <b>function</b> <span class="symbol"><A NAME="ref_2182_16">Paircontent</A></span> (<span class="symbol"><A NAME="ref_2182_29" HREF="terminal_interface-curses__adb.htm#ref_2182_16">Pair</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_2183_29" HREF="terminal_interface-curses__adb.htm#ref_2182_16">Fp</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2181_12">C_Short_Access</A>; + <span class="symbol"><A NAME="ref_2184_29" HREF="terminal_interface-curses__adb.htm#ref_2182_16">Bp</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2181_12">C_Short_Access</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Paircontent, "pair_content"); + + <span class="symbol"><A NAME="ref_2187_7">F</A></span>, <span class="symbol"><A NAME="ref_2187_10">B</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2182_16">Paircontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1890_28">Pair</A>), <A HREF="terminal_interface-curses__adb.htm#ref_2187_7">F</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2187_10">B</A>'<b>Access</b>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1891_28">Fore</A> := <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2187_7">F</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1892_28">Back</A> := <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2187_10">B</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1890_14">Pair_Content</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2197_13" HREF="terminal_interface-curses__ads.htm#ref_1897_13">Has_Colors</A></span> <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2199_16">Hascolors</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Hascolors, "has_colors"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2199_16">Hascolors</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1897_13">Has_Colors</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2209_14" HREF="terminal_interface-curses__ads.htm#ref_1902_14">Init_Color</A></span> (<span class="symbol"><A NAME="ref_2209_26" HREF="terminal_interface-curses__ads.htm#ref_1902_26">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_2210_26" HREF="terminal_interface-curses__ads.htm#ref_1903_26">Red</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_2211_26" HREF="terminal_interface-curses__ads.htm#ref_1904_26">Green</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_2212_26" HREF="terminal_interface-curses__ads.htm#ref_1905_26">Blue</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2214_16">Initcolor</A></span> (<span class="symbol"><A NAME="ref_2214_27" HREF="terminal_interface-curses__adb.htm#ref_2214_16">Col</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_2215_27" HREF="terminal_interface-curses__adb.htm#ref_2214_16">Red</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_2216_27" HREF="terminal_interface-curses__adb.htm#ref_2214_16">Green</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <span class="symbol"><A NAME="ref_2217_27" HREF="terminal_interface-curses__adb.htm#ref_2214_16">Blue</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Initcolor, "init_color"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2214_16">Initcolor</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1902_26">Color</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1903_26">Red</A>), <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1904_26">Green</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1905_26">Blue</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1902_14">Init_Color</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2227_13" HREF="terminal_interface-curses__ads.htm#ref_1910_13">Can_Change_Color</A></span> <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2229_16">Canchangecolor</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>; + <b>pragma</b> Import (C, Canchangecolor, "can_change_color"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2229_16">Canchangecolor</A> = <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A> <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1910_13">Can_Change_Color</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2239_14" HREF="terminal_interface-curses__ads.htm#ref_1915_14">Color_Content</A></span> (<span class="symbol"><A NAME="ref_2239_29" HREF="terminal_interface-curses__ads.htm#ref_1915_29">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_2240_29" HREF="terminal_interface-curses__ads.htm#ref_1916_29">Red</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_2241_29" HREF="terminal_interface-curses__ads.htm#ref_1917_29">Green</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_2242_29" HREF="terminal_interface-curses__ads.htm#ref_1918_29">Blue</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_2244_12">C_Short_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2246_16">Colorcontent</A></span> (<span class="symbol"><A NAME="ref_2246_30" HREF="terminal_interface-curses__adb.htm#ref_2246_16">Color</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; <span class="symbol"><A NAME="ref_2246_47" HREF="terminal_interface-curses__adb.htm#ref_2246_16">R</A></span>, <span class="symbol"><A NAME="ref_2246_50" HREF="terminal_interface-curses__adb.htm#ref_2246_16">G</A></span>, <span class="symbol"><A NAME="ref_2246_53" HREF="terminal_interface-curses__adb.htm#ref_2246_16">B</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2244_12">C_Short_Access</A>) + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Colorcontent, "color_content"); + + <span class="symbol"><A NAME="ref_2250_7">R</A></span>, <span class="symbol"><A NAME="ref_2250_10">G</A></span>, <span class="symbol"><A NAME="ref_2250_13">B</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2246_16">Colorcontent</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_50_12">C_Short</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1915_29">Color</A>), <A HREF="terminal_interface-curses__adb.htm#ref_2250_7">R</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2250_10">G</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2250_13">B</A>'<b>Access</b>) = + <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1916_29">Red</A> := <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2250_7">R</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1917_29">Green</A> := <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2250_10">G</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1918_29">Blue</A> := <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2250_13">B</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1915_14">Color_Content</A>; + +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2264_14" HREF="terminal_interface-curses__ads.htm#ref_1930_14">Save_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_2264_32" HREF="terminal_interface-curses__ads.htm#ref_1930_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1927_9">Curses_Mode</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2266_16">Def_Prog_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Def_Prog_Mode, "def_prog_mode"); + <b>function</b> <span class="symbol"><A NAME="ref_2268_16">Def_Shell_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Def_Shell_Mode, "def_shell_mode"); + + <span class="symbol"><A NAME="ref_2271_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1930_32">Mode</A> <b>is</b> + <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1927_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2271_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2266_16">Def_Prog_Mode</A>; + <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1927_33">Shell</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2271_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2268_16">Def_Shell_Mode</A>; + <b>end</b> <b>case</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2271_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1930_14">Save_Curses_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2282_14" HREF="terminal_interface-curses__ads.htm#ref_1936_14">Reset_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_2282_33" HREF="terminal_interface-curses__ads.htm#ref_1936_33">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1927_9">Curses_Mode</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2284_16">Reset_Prog_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Reset_Prog_Mode, "reset_prog_mode"); + <b>function</b> <span class="symbol"><A NAME="ref_2286_16">Reset_Shell_Mode</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Reset_Shell_Mode, "reset_shell_mode"); + + <span class="symbol"><A NAME="ref_2289_7">Err</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>case</b> <A HREF="terminal_interface-curses__ads.htm#ref_1936_33">Mode</A> <b>is</b> + <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1927_25">Curses</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2289_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2284_16">Reset_Prog_Mode</A>; + <b>when</b> <A HREF="terminal_interface-curses__ads.htm#ref_1927_33">Shell</A> =&gt; <A HREF="terminal_interface-curses__adb.htm#ref_2289_7">Err</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2286_16">Reset_Shell_Mode</A>; + <b>end</b> <b>case</b>; + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2289_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1936_14">Reset_Curses_Mode</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2300_14" HREF="terminal_interface-curses__ads.htm#ref_1942_14">Save_Terminal_State</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2302_16">Savetty</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Savetty, "savetty"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2302_16">Savetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1942_14">Save_Terminal_State</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2310_14" HREF="terminal_interface-curses__ads.htm#ref_1947_14">Reset_Terminal_State</A></span> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2312_16">Resetty</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Resetty, "resetty"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2312_16">Resetty</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1947_14">Reset_Terminal_State</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2320_14" HREF="terminal_interface-curses__ads.htm#ref_1960_14">Rip_Off_Lines</A></span> (<span class="symbol"><A NAME="ref_2320_29" HREF="terminal_interface-curses__ads.htm#ref_1960_29">Lines</A></span> : Integer; + <span class="symbol"><A NAME="ref_2321_29" HREF="terminal_interface-curses__ads.htm#ref_1961_29">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1951_9">Stdscr_Init_Proc</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2323_16">Ripoffline</A></span> (<span class="symbol"><A NAME="ref_2323_28" HREF="terminal_interface-curses__adb.htm#ref_2323_16">Lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_2324_28" HREF="terminal_interface-curses__adb.htm#ref_2323_16">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1951_9">Stdscr_Init_Proc</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Ripoffline, "_nc_ripoffline"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2323_16">Ripoffline</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1960_29">Lines</A>), <A HREF="terminal_interface-curses__ads.htm#ref_1961_29">Proc</A>) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1960_14">Rip_Off_Lines</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2332_14" HREF="terminal_interface-curses__ads.htm#ref_1972_14">Set_Cursor_Visibility</A></span> (<span class="symbol"><A NAME="ref_2332_37" HREF="terminal_interface-curses__ads.htm#ref_1972_37">Visibility</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_1969_9">Cursor_Visibility</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2334_16">Curs_Set</A></span> (<span class="symbol"><A NAME="ref_2334_26" HREF="terminal_interface-curses__adb.htm#ref_2334_16">Curs</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Curs_Set, "curs_set"); + + <span class="symbol"><A NAME="ref_2337_7">Res</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <A HREF="terminal_interface-curses__adb.htm#ref_2337_7">Res</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2334_16">Curs_Set</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1969_9">Cursor_Visibility</A>'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_1972_37">Visibility</A>)); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2337_7">Res</A> /= <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1972_37">Visibility</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1969_9">Cursor_Visibility</A>'Val (<A HREF="terminal_interface-curses__adb.htm#ref_2337_7">Res</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1972_14">Set_Cursor_Visibility</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2345_14" HREF="terminal_interface-curses__ads.htm#ref_1977_14">Nap_Milli_Seconds</A></span> (<span class="symbol"><A NAME="ref_2345_33" HREF="terminal_interface-curses__ads.htm#ref_1977_33">Ms</A></span> : Natural) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2347_16">Napms</A></span> (<span class="symbol"><A NAME="ref_2347_23" HREF="terminal_interface-curses__adb.htm#ref_2347_16">Ms</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Napms, "napms"); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2347_16">Napms</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1977_33">Ms</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1977_14">Nap_Milli_Seconds</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_2355_13" HREF="terminal_interface-curses__ads.htm#ref_551_13">Lines</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2357_16">LINES_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + <b>pragma</b> Import (C, LINES_As_Function, "LINES_as_function"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2357_16">LINES_As_Function</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_551_13">Lines</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2363_13" HREF="terminal_interface-curses__ads.htm#ref_554_13">Columns</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2365_16">COLS_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + <b>pragma</b> Import (C, COLS_As_Function, "COLS_as_function"); + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2365_16">COLS_As_Function</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_554_13">Columns</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2371_13" HREF="terminal_interface-curses__ads.htm#ref_557_13">Tab_Size</A></span> <b>return</b> Natural + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2373_16">TABSIZE_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + <b>pragma</b> Import (C, TABSIZE_As_Function, "TABSIZE_as_function"); + + <b>begin</b> + <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2373_16">TABSIZE_As_Function</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_557_13">Tab_Size</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2380_13" HREF="terminal_interface-curses__ads.htm#ref_560_13">Number_Of_Colors</A></span> <b>return</b> Natural + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2382_16">COLORS_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + <b>pragma</b> Import (C, COLORS_As_Function, "COLORS_as_function"); + <b>begin</b> + <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2382_16">COLORS_As_Function</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_560_13">Number_Of_Colors</A>; + + <b>function</b> <span class="symbol"><A NAME="ref_2388_13" HREF="terminal_interface-curses__ads.htm#ref_563_13">Number_Of_Color_Pairs</A></span> <b>return</b> Natural + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2390_16">COLOR_PAIRS_As_Function</A></span> <b>return</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.int; + <b>pragma</b> Import (C, COLOR_PAIRS_As_Function, "COLOR_PAIRS_as_function"); + <b>begin</b> + <b>return</b> Natural (<A HREF="terminal_interface-curses__adb.htm#ref_2390_16">COLOR_PAIRS_As_Function</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_563_13">Number_Of_Color_Pairs</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2396_14" HREF="terminal_interface-curses__ads.htm#ref_1985_14">Transform_Coordinates</A></span> + (<span class="symbol"><A NAME="ref_2397_7" HREF="terminal_interface-curses__ads.htm#ref_1986_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_2398_7" HREF="terminal_interface-curses__ads.htm#ref_1987_7">Line</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_2399_7" HREF="terminal_interface-curses__ads.htm#ref_1988_7">Column</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_2400_7" HREF="terminal_interface-curses__ads.htm#ref_1989_7">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1984_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1984_33">From_Screen</A>) + <b>is</b> + <b>type</b> <span class="symbol"><A NAME="ref_2402_12">Int_Access</A></span> <b>is</b> <b>access</b> <b>all</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>function</b> <span class="symbol"><A NAME="ref_2403_16">Transform</A></span> (<span class="symbol"><A NAME="ref_2403_27" HREF="terminal_interface-curses__adb.htm#ref_2403_16">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_2404_27" HREF="terminal_interface-curses__adb.htm#ref_2403_16">Y</A></span>, <span class="symbol"><A NAME="ref_2404_30" HREF="terminal_interface-curses__adb.htm#ref_2403_16">X</A></span> : <A HREF="terminal_interface-curses__adb.htm#ref_2402_12">Int_Access</A>; + <span class="symbol"><A NAME="ref_2405_27" HREF="terminal_interface-curses__adb.htm#ref_2403_16">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, Transform, "wmouse_trafo"); + + <span class="symbol"><A NAME="ref_2408_7">X</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1988_7">Column</A>); + <span class="symbol"><A NAME="ref_2409_7">Y</A></span> : <b>aliased</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1987_7">Line</A>); + <span class="symbol"><A NAME="ref_2410_7">D</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A>; + <span class="symbol"><A NAME="ref_2411_7">R</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__ads.htm#ref_1989_7">Dir</A> = <A HREF="terminal_interface-curses__ads.htm#ref_1984_46">To_Screen</A> <b>then</b> + <A HREF="terminal_interface-curses__adb.htm#ref_2410_7">D</A> := 1; + <b>end</b> <b>if</b>; + <A HREF="terminal_interface-curses__adb.htm#ref_2411_7">R</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2403_16">Transform</A> (<A HREF="terminal_interface-curses__ads.htm#ref_1986_7">W</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2409_7">Y</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2408_7">X</A>'<b>Access</b>, <A HREF="terminal_interface-curses__adb.htm#ref_2410_7">D</A>); + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2411_7">R</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_67_4">Curses_False</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>else</b> + <A HREF="terminal_interface-curses__ads.htm#ref_1987_7">Line</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2409_7">Y</A>); + <A HREF="terminal_interface-curses__ads.htm#ref_1988_7">Column</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2408_7">X</A>); + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_1985_14">Transform_Coordinates</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2425_14" HREF="terminal_interface-curses__ads.htm#ref_2004_14">Use_Default_Colors</A></span> <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2426_16">C_Use_Default_Colors</A></span> <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, C_Use_Default_Colors, "use_default_colors"); + <span class="symbol"><A NAME="ref_2428_7">Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2426_16">C_Use_Default_Colors</A>; + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2428_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2004_14">Use_Default_Colors</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2435_14" HREF="terminal_interface-curses__ads.htm#ref_2009_14">Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2435_37" HREF="terminal_interface-curses__ads.htm#ref_2009_37">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2001_4">Default_Color</A>; + <span class="symbol"><A NAME="ref_2436_37" HREF="terminal_interface-curses__ads.htm#ref_2010_37">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2001_4">Default_Color</A>) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2438_16">C_Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2438_41" HREF="terminal_interface-curses__adb.htm#ref_2438_16">Fore</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_2439_41" HREF="terminal_interface-curses__adb.htm#ref_2438_16">Back</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, C_Assume_Default_Colors, "assume_default_colors"); + + <span class="symbol"><A NAME="ref_2442_7">Err</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := <A HREF="terminal_interface-curses__adb.htm#ref_2438_16">C_Assume_Default_Colors</A> (<A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2009_37">Fore</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2010_37">Back</A>)); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2442_7">Err</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2009_14">Assume_Default_Colors</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_2450_13" HREF="terminal_interface-curses__ads.htm#ref_2019_13">Curses_Version</A></span> <b>return</b> String + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2452_16">curses_versionC</A></span> <b>return</b> chars_ptr; + <b>pragma</b> Import (C, curses_versionC, "curses_version"); + <span class="symbol"><A NAME="ref_2454_7">Result</A></span> : <b>constant</b> chars_ptr := <A HREF="terminal_interface-curses__adb.htm#ref_2452_16">curses_versionC</A>; + <b>begin</b> + <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_96_13">Fill_String</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2454_7">Result</A>); + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2019_13">Curses_Version</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2459_14" HREF="terminal_interface-curses__ads.htm#ref_2032_14">Curses_Free_All</A></span> <b>is</b> + <b>procedure</b> <span class="symbol"><A NAME="ref_2460_17">curses_freeall</A></span>; + <b>pragma</b> Import (C, curses_freeall, "_nc_freeall"); + <b>begin</b> + <span class="comment"><EM>-- Use this only for testing: you cannot use curses after calling it,</EM></span> + <span class="comment"><EM>-- so it has to be the "last" thing done before exiting the program.</EM></span> + <span class="comment"><EM>-- This will not really free ALL of memory used by curses. That is</EM></span> + <span class="comment"><EM>-- because it cannot free the memory used for stdout's setbuf. The</EM></span> + <span class="comment"><EM>-- _nc_free_and_exit() procedure can do that, but it can be invoked</EM></span> + <span class="comment"><EM>-- safely only from C - and again, that only as the "last" thing done</EM></span> + <span class="comment"><EM>-- before exiting the program.</EM></span> + <A HREF="terminal_interface-curses__adb.htm#ref_2460_17">curses_freeall</A>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2032_14">Curses_Free_All</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_2473_13" HREF="terminal_interface-curses__ads.htm#ref_2024_13">Use_Extended_Names</A></span> (<span class="symbol"><A NAME="ref_2473_33" HREF="terminal_interface-curses__ads.htm#ref_2024_33">Enable</A></span> : Boolean) <b>return</b> Boolean + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2475_16">use_extended_namesC</A></span> (<span class="symbol"><A NAME="ref_2475_37" HREF="terminal_interface-curses__adb.htm#ref_2475_16">e</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, use_extended_namesC, "use_extended_names"); + + <span class="symbol"><A NAME="ref_2478_7">Res</A></span> : <b>constant</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> := + <A HREF="terminal_interface-curses__adb.htm#ref_2475_16">use_extended_namesC</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> (Boolean'Pos (<A HREF="terminal_interface-curses__ads.htm#ref_2024_33">Enable</A>))); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2478_7">Res</A> = <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2101_4">Curses_Bool_False</A>) <b>then</b> + <b>return</b> False; + <b>else</b> + <b>return</b> True; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2024_13">Use_Extended_Names</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2488_14" HREF="terminal_interface-curses__ads.htm#ref_2040_14">Screen_Dump_To_File</A></span> (<span class="symbol"><A NAME="ref_2488_35" HREF="terminal_interface-curses__ads.htm#ref_2040_35">Filename</A></span> : String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2490_16">scr_dump</A></span> (<span class="symbol"><A NAME="ref_2490_26" HREF="terminal_interface-curses__adb.htm#ref_2490_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, scr_dump, "scr_dump"); + <span class="symbol"><A NAME="ref_2492_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2040_35">Filename</A>'Length); + <span class="symbol"><A NAME="ref_2493_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2040_35">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2492_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2493_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2490_16">scr_dump</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2492_7">Txt</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2040_14">Screen_Dump_To_File</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2501_14" HREF="terminal_interface-curses__ads.htm#ref_2044_14">Screen_Restore_From_File</A></span> (<span class="symbol"><A NAME="ref_2501_40" HREF="terminal_interface-curses__ads.htm#ref_2044_40">Filename</A></span> : String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2503_16">scr_restore</A></span> (<span class="symbol"><A NAME="ref_2503_29" HREF="terminal_interface-curses__adb.htm#ref_2503_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, scr_restore, "scr_restore"); + <span class="symbol"><A NAME="ref_2505_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2044_40">Filename</A>'Length); + <span class="symbol"><A NAME="ref_2506_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2044_40">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2505_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2506_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2503_16">scr_restore</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2505_7">Txt</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2044_14">Screen_Restore_From_File</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2514_14" HREF="terminal_interface-curses__ads.htm#ref_2048_14">Screen_Init_From_File</A></span> (<span class="symbol"><A NAME="ref_2514_37" HREF="terminal_interface-curses__ads.htm#ref_2048_37">Filename</A></span> : String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2516_16">scr_init</A></span> (<span class="symbol"><A NAME="ref_2516_26" HREF="terminal_interface-curses__adb.htm#ref_2516_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, scr_init, "scr_init"); + <span class="symbol"><A NAME="ref_2518_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2048_37">Filename</A>'Length); + <span class="symbol"><A NAME="ref_2519_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2048_37">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2518_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2519_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2516_16">scr_init</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2518_7">Txt</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2048_14">Screen_Init_From_File</A>; + + <b>procedure</b> <span class="symbol"><A NAME="ref_2527_14" HREF="terminal_interface-curses__ads.htm#ref_2052_14">Screen_Set_File</A></span> (<span class="symbol"><A NAME="ref_2527_31" HREF="terminal_interface-curses__ads.htm#ref_2052_31">Filename</A></span> : String) + <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2529_16">scr_set</A></span> (<span class="symbol"><A NAME="ref_2529_25" HREF="terminal_interface-curses__adb.htm#ref_2529_16">f</A></span> : char_array) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, scr_set, "scr_set"); + <span class="symbol"><A NAME="ref_2531_7">Txt</A></span> : char_array (0 .. <A HREF="terminal_interface-curses__ads.htm#ref_2052_31">Filename</A>'Length); + <span class="symbol"><A NAME="ref_2532_7">Length</A></span> : size_t; + <b>begin</b> + To_C (<A HREF="terminal_interface-curses__ads.htm#ref_2052_31">Filename</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2531_7">Txt</A>, <A HREF="terminal_interface-curses__adb.htm#ref_2532_7">Length</A>); + <b>if</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> = <A HREF="terminal_interface-curses__adb.htm#ref_2529_16">scr_set</A> (<A HREF="terminal_interface-curses__adb.htm#ref_2531_7">Txt</A>) <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2052_14">Screen_Set_File</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2540_14" HREF="terminal_interface-curses__ads.htm#ref_2084_14">Resize</A></span> (<span class="symbol"><A NAME="ref_2540_22" HREF="terminal_interface-curses__ads.htm#ref_2084_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_2541_22" HREF="terminal_interface-curses__ads.htm#ref_2085_22">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_2542_22" HREF="terminal_interface-curses__ads.htm#ref_2086_22">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) <b>is</b> + <b>function</b> <span class="symbol"><A NAME="ref_2543_16">wresize</A></span> (<span class="symbol"><A NAME="ref_2543_25" HREF="terminal_interface-curses__adb.htm#ref_2543_16">win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_2544_25" HREF="terminal_interface-curses__adb.htm#ref_2543_16">lines</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <span class="symbol"><A NAME="ref_2545_25" HREF="terminal_interface-curses__adb.htm#ref_2543_16">columns</A></span> : <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>) <b>return</b> <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A>; + <b>pragma</b> Import (C, wresize); + <b>begin</b> + <b>if</b> <A HREF="terminal_interface-curses__adb.htm#ref_2543_16">wresize</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2084_22">Win</A>, + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2085_22">Number_Of_Lines</A>), + <A HREF="terminal_interface-curses-aux__ads.htm#ref_49_12">C_Int</A> (<A HREF="terminal_interface-curses__ads.htm#ref_2086_22">Number_Of_Columns</A>)) = <A HREF="terminal_interface-curses-aux__ads.htm#ref_64_4">Curses_Err</A> + <b>then</b> + <b>raise</b> <A HREF="terminal_interface-curses__ads.htm#ref_522_4">Curses_Exception</A>; + <b>end</b> <b>if</b>; + <b>end</b> <A HREF="terminal_interface-curses__ads.htm#ref_2084_14">Resize</A>; +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses__ads.htm new file mode 100644 index 0000000..8397847 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses__ads.htm @@ -0,0 +1,2121 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface.Curses --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1998-2011,2014 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.48 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>with</b> System.Storage_Elements; +<b>with</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C; <span class="comment"><EM>-- We need this for some assertions.</EM></span> + +<b>with</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>; + +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_48_28" HREF="terminal_interface-curses__adb.htm#ref_51_33">Curses</A></span> <b>is</b> + <b>pragma</b> Preelaborate (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>); + <b>pragma</b> Linker_Options ("-lncurses" &amp; <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_9_4">DFT_ARG_SUFFIX</A>); + + <span class="symbol"><A NAME="ref_52_4">Major_Version</A></span> : <b>constant</b> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_21_4">NCURSES_VERSION_MAJOR</A>; + <span class="symbol"><A NAME="ref_53_4">Minor_Version</A></span> : <b>constant</b> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_22_4">NCURSES_VERSION_MINOR</A>; + NC_Version : String <b>renames</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_23_4">Version</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_56_9">Window</A></span> <b>is</b> <b>private</b>; + <span class="symbol"><A NAME="ref_57_4">Null_Window</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_59_9">Line_Position</A></span> <b>is</b> <b>new</b> Integer; <span class="comment"><EM>-- line coordinate</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_60_9">Column_Position</A></span> <b>is</b> <b>new</b> Integer; <span class="comment"><EM>-- column coordinate</EM></span> + + <b>subtype</b> <span class="symbol"><A NAME="ref_62_12">Line_Count</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>'Last; + <span class="comment"><EM>-- Type to count lines. We do not allow null windows, so must be positive</EM></span> + <b>subtype</b> <span class="symbol"><A NAME="ref_64_12">Column_Count</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> <b>range</b> 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>'Last; + <span class="comment"><EM>-- Type to count columns. We do not allow null windows, so must be positive</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_67_9">Key_Code</A></span> <b>is</b> <b>new</b> Integer; + <span class="comment"><EM>-- That is anything including real characters, special keys and logical</EM></span> + <span class="comment"><EM>-- request codes.</EM></span> + + <span class="comment"><EM>-- FIXME: The "-1" should be Curses_Err</EM></span> + <b>subtype</b> <span class="symbol"><A NAME="ref_72_12">Real_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A> <b>range</b> -1 .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_99_4">KEY_MAX</A>; + <span class="comment"><EM>-- This are the codes that potentially represent a real keystroke.</EM></span> + <span class="comment"><EM>-- Not all codes may be possible on a specific terminal. To check the</EM></span> + <span class="comment"><EM>-- availability of a special key, the Has_Key function is provided.</EM></span> + + <b>subtype</b> <span class="symbol"><A NAME="ref_77_12">Special_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A> + <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>. <A HREF="terminal_interface-curses_constants__ads.htm#ref_98_4">KEY_MIN</A> - 1 .. <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>'Last; + <span class="comment"><EM>-- Type for a function- or special key number</EM></span> + + <b>subtype</b> <span class="symbol"><A NAME="ref_81_12">Normal_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A> <b>range</b> + Character'Pos (Character'First) .. Character'Pos (Character'Last); + <span class="comment"><EM>-- This are the codes for regular (incl. non-graphical) characters.</EM></span> + + <span class="comment"><EM>-- For those who like to use the original key names we produce them were</EM></span> + <span class="comment"><EM>-- they differ from the original.</EM></span> + + <span class="comment"><EM>-- Constants for function- and special keys</EM></span> + <span class="symbol"><A NAME="ref_89_4">Key_None</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_98_4">KEY_MIN</A> - 1; + <span class="symbol"><A NAME="ref_91_4">Key_Min</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_98_4">KEY_MIN</A>; + <span class="symbol"><A NAME="ref_93_4">Key_Break</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_104_4">KEY_BREAK</A>; + <span class="symbol"><A NAME="ref_95_4">KEY_DOWN</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_105_4">KEY_DOWN</A>; + Key_Cursor_Down : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_95_4">KEY_DOWN</A>; + <span class="symbol"><A NAME="ref_98_4">KEY_UP</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_106_4">KEY_UP</A>; + Key_Cursor_Up : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_98_4">KEY_UP</A>; + <span class="symbol"><A NAME="ref_101_4">KEY_LEFT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_107_4">KEY_LEFT</A>; + Key_Cursor_Left : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_101_4">KEY_LEFT</A>; + <span class="symbol"><A NAME="ref_104_4">KEY_RIGHT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_108_4">KEY_RIGHT</A>; + Key_Cursor_Right : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_104_4">KEY_RIGHT</A>; + <span class="symbol"><A NAME="ref_107_4">Key_Home</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_109_4">KEY_HOME</A>; + <span class="symbol"><A NAME="ref_109_4">Key_Backspace</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_110_4">KEY_BACKSPACE</A>; + <span class="symbol"><A NAME="ref_111_4">Key_F0</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_111_4">KEY_F0</A>; + <span class="symbol"><A NAME="ref_113_4">Key_F1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_112_4">KEY_F1</A>; + <span class="symbol"><A NAME="ref_115_4">Key_F2</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_113_4">KEY_F2</A>; + <span class="symbol"><A NAME="ref_117_4">Key_F3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_114_4">KEY_F3</A>; + <span class="symbol"><A NAME="ref_119_4">Key_F4</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_115_4">KEY_F4</A>; + <span class="symbol"><A NAME="ref_121_4">Key_F5</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_116_4">KEY_F5</A>; + <span class="symbol"><A NAME="ref_123_4">Key_F6</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_117_4">KEY_F6</A>; + <span class="symbol"><A NAME="ref_125_4">Key_F7</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_118_4">KEY_F7</A>; + <span class="symbol"><A NAME="ref_127_4">Key_F8</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_119_4">KEY_F8</A>; + <span class="symbol"><A NAME="ref_129_4">Key_F9</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_120_4">KEY_F9</A>; + <span class="symbol"><A NAME="ref_131_4">Key_F10</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_121_4">KEY_F10</A>; + <span class="symbol"><A NAME="ref_133_4">Key_F11</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_122_4">KEY_F11</A>; + <span class="symbol"><A NAME="ref_135_4">Key_F12</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_123_4">KEY_F12</A>; + <span class="symbol"><A NAME="ref_137_4">Key_F13</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_124_4">KEY_F13</A>; + <span class="symbol"><A NAME="ref_139_4">Key_F14</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_125_4">KEY_F14</A>; + <span class="symbol"><A NAME="ref_141_4">Key_F15</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_126_4">KEY_F15</A>; + <span class="symbol"><A NAME="ref_143_4">Key_F16</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_127_4">KEY_F16</A>; + <span class="symbol"><A NAME="ref_145_4">Key_F17</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_128_4">KEY_F17</A>; + <span class="symbol"><A NAME="ref_147_4">Key_F18</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_129_4">KEY_F18</A>; + <span class="symbol"><A NAME="ref_149_4">Key_F19</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_130_4">KEY_F19</A>; + <span class="symbol"><A NAME="ref_151_4">Key_F20</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_131_4">KEY_F20</A>; + <span class="symbol"><A NAME="ref_153_4">Key_F21</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_132_4">KEY_F21</A>; + <span class="symbol"><A NAME="ref_155_4">Key_F22</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_133_4">KEY_F22</A>; + <span class="symbol"><A NAME="ref_157_4">Key_F23</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_134_4">KEY_F23</A>; + <span class="symbol"><A NAME="ref_159_4">Key_F24</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_135_4">KEY_F24</A>; + <span class="symbol"><A NAME="ref_161_4">KEY_DL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_136_4">KEY_DL</A>; + Key_Delete_Line : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_161_4">KEY_DL</A>; + <span class="symbol"><A NAME="ref_164_4">KEY_IL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_137_4">KEY_IL</A>; + Key_Insert_Line : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_164_4">KEY_IL</A>; + <span class="symbol"><A NAME="ref_167_4">KEY_DC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_138_4">KEY_DC</A>; + Key_Delete_Char : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_167_4">KEY_DC</A>; + <span class="symbol"><A NAME="ref_170_4">KEY_IC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_139_4">KEY_IC</A>; + Key_Insert_Char : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_170_4">KEY_IC</A>; + <span class="symbol"><A NAME="ref_173_4">KEY_EIC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_140_4">KEY_EIC</A>; + Key_Exit_Insert_Mode : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_173_4">KEY_EIC</A>; + <span class="symbol"><A NAME="ref_176_4">KEY_CLEAR</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_141_4">KEY_CLEAR</A>; + Key_Clear_Screen : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_176_4">KEY_CLEAR</A>; + <span class="symbol"><A NAME="ref_179_4">KEY_EOS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_142_4">KEY_EOS</A>; + Key_Clear_End_Of_Screen : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_179_4">KEY_EOS</A>; + <span class="symbol"><A NAME="ref_182_4">KEY_EOL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_143_4">KEY_EOL</A>; + Key_Clear_End_Of_Line : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_182_4">KEY_EOL</A>; + <span class="symbol"><A NAME="ref_185_4">KEY_SF</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_144_4">KEY_SF</A>; + Key_Scroll_1_Forward : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_185_4">KEY_SF</A>; + <span class="symbol"><A NAME="ref_188_4">KEY_SR</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_145_4">KEY_SR</A>; + Key_Scroll_1_Backward : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_188_4">KEY_SR</A>; + <span class="symbol"><A NAME="ref_191_4">KEY_NPAGE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_146_4">KEY_NPAGE</A>; + Key_Next_Page : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_191_4">KEY_NPAGE</A>; + <span class="symbol"><A NAME="ref_194_4">KEY_PPAGE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_147_4">KEY_PPAGE</A>; + Key_Previous_Page : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_194_4">KEY_PPAGE</A>; + <span class="symbol"><A NAME="ref_197_4">KEY_STAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_148_4">KEY_STAB</A>; + Key_Set_Tab : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_197_4">KEY_STAB</A>; + <span class="symbol"><A NAME="ref_200_4">KEY_CTAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_149_4">KEY_CTAB</A>; + Key_Clear_Tab : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_200_4">KEY_CTAB</A>; + <span class="symbol"><A NAME="ref_203_4">KEY_CATAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_150_4">KEY_CATAB</A>; + Key_Clear_All_Tabs : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_203_4">KEY_CATAB</A>; + <span class="symbol"><A NAME="ref_206_4">KEY_ENTER</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_151_4">KEY_ENTER</A>; + Key_Enter_Or_Send : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_206_4">KEY_ENTER</A>; + <span class="symbol"><A NAME="ref_209_4">KEY_SRESET</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_152_4">KEY_SRESET</A>; + Key_Soft_Reset : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_209_4">KEY_SRESET</A>; + <span class="symbol"><A NAME="ref_212_4">Key_Reset</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_153_4">KEY_RESET</A>; + <span class="symbol"><A NAME="ref_214_4">Key_Print</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_154_4">KEY_PRINT</A>; + <span class="symbol"><A NAME="ref_216_4">KEY_LL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_155_4">KEY_LL</A>; + Key_Bottom : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_216_4">KEY_LL</A>; + <span class="symbol"><A NAME="ref_219_4">KEY_A1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_156_4">KEY_A1</A>; + Key_Upper_Left_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_219_4">KEY_A1</A>; + <span class="symbol"><A NAME="ref_222_4">KEY_A3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_157_4">KEY_A3</A>; + Key_Upper_Right_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_222_4">KEY_A3</A>; + <span class="symbol"><A NAME="ref_225_4">KEY_B2</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_158_4">KEY_B2</A>; + Key_Center_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_225_4">KEY_B2</A>; + <span class="symbol"><A NAME="ref_228_4">KEY_C1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_159_4">KEY_C1</A>; + Key_Lower_Left_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_228_4">KEY_C1</A>; + <span class="symbol"><A NAME="ref_231_4">KEY_C3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_160_4">KEY_C3</A>; + Key_Lower_Right_Of_Keypad : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_231_4">KEY_C3</A>; + <span class="symbol"><A NAME="ref_234_4">KEY_BTAB</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_161_4">KEY_BTAB</A>; + Key_Back_Tab : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_234_4">KEY_BTAB</A>; + <span class="symbol"><A NAME="ref_237_4">KEY_BEG</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_162_4">KEY_BEG</A>; + Key_Beginning : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_237_4">KEY_BEG</A>; + <span class="symbol"><A NAME="ref_240_4">Key_Cancel</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_163_4">KEY_CANCEL</A>; + <span class="symbol"><A NAME="ref_242_4">Key_Close</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_164_4">KEY_CLOSE</A>; + <span class="symbol"><A NAME="ref_244_4">Key_Command</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_165_4">KEY_COMMAND</A>; + <span class="symbol"><A NAME="ref_246_4">Key_Copy</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_166_4">KEY_COPY</A>; + <span class="symbol"><A NAME="ref_248_4">Key_Create</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_167_4">KEY_CREATE</A>; + <span class="symbol"><A NAME="ref_250_4">Key_End</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_168_4">KEY_END</A>; + <span class="symbol"><A NAME="ref_252_4">Key_Exit</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_169_4">KEY_EXIT</A>; + <span class="symbol"><A NAME="ref_254_4">Key_Find</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_170_4">KEY_FIND</A>; + <span class="symbol"><A NAME="ref_256_4">Key_Help</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_171_4">KEY_HELP</A>; + <span class="symbol"><A NAME="ref_258_4">Key_Mark</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_172_4">KEY_MARK</A>; + <span class="symbol"><A NAME="ref_260_4">Key_Message</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_173_4">KEY_MESSAGE</A>; + <span class="symbol"><A NAME="ref_262_4">Key_Move</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_174_4">KEY_MOVE</A>; + <span class="symbol"><A NAME="ref_264_4">Key_Next</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_175_4">KEY_NEXT</A>; + <span class="symbol"><A NAME="ref_266_4">Key_Open</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_176_4">KEY_OPEN</A>; + <span class="symbol"><A NAME="ref_268_4">Key_Options</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_177_4">KEY_OPTIONS</A>; + <span class="symbol"><A NAME="ref_270_4">Key_Previous</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_178_4">KEY_PREVIOUS</A>; + <span class="symbol"><A NAME="ref_272_4">Key_Redo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_179_4">KEY_REDO</A>; + <span class="symbol"><A NAME="ref_274_4">Key_Reference</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_180_4">KEY_REFERENCE</A>; + <span class="symbol"><A NAME="ref_276_4">Key_Refresh</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_181_4">KEY_REFRESH</A>; + <span class="symbol"><A NAME="ref_278_4">Key_Replace</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_182_4">KEY_REPLACE</A>; + <span class="symbol"><A NAME="ref_280_4">Key_Restart</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_183_4">KEY_RESTART</A>; + <span class="symbol"><A NAME="ref_282_4">Key_Resume</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_184_4">KEY_RESUME</A>; + <span class="symbol"><A NAME="ref_284_4">Key_Save</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_185_4">KEY_SAVE</A>; + <span class="symbol"><A NAME="ref_286_4">KEY_SBEG</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_186_4">KEY_SBEG</A>; + Key_Shift_Begin : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_286_4">KEY_SBEG</A>; + <span class="symbol"><A NAME="ref_289_4">KEY_SCANCEL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_187_4">KEY_SCANCEL</A>; + Key_Shift_Cancel : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_289_4">KEY_SCANCEL</A>; + <span class="symbol"><A NAME="ref_292_4">KEY_SCOMMAND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_188_4">KEY_SCOMMAND</A>; + Key_Shift_Command : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_292_4">KEY_SCOMMAND</A>; + <span class="symbol"><A NAME="ref_295_4">KEY_SCOPY</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_189_4">KEY_SCOPY</A>; + Key_Shift_Copy : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_295_4">KEY_SCOPY</A>; + <span class="symbol"><A NAME="ref_298_4">KEY_SCREATE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_190_4">KEY_SCREATE</A>; + Key_Shift_Create : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_298_4">KEY_SCREATE</A>; + <span class="symbol"><A NAME="ref_301_4">KEY_SDC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_191_4">KEY_SDC</A>; + Key_Shift_Delete_Char : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_301_4">KEY_SDC</A>; + <span class="symbol"><A NAME="ref_304_4">KEY_SDL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_192_4">KEY_SDL</A>; + Key_Shift_Delete_Line : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_304_4">KEY_SDL</A>; + <span class="symbol"><A NAME="ref_307_4">Key_Select</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_193_4">KEY_SELECT</A>; + <span class="symbol"><A NAME="ref_309_4">KEY_SEND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_194_4">KEY_SEND</A>; + Key_Shift_End : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_309_4">KEY_SEND</A>; + <span class="symbol"><A NAME="ref_312_4">KEY_SEOL</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_195_4">KEY_SEOL</A>; + Key_Shift_Clear_End_Of_Line : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_312_4">KEY_SEOL</A>; + <span class="symbol"><A NAME="ref_315_4">KEY_SEXIT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_196_4">KEY_SEXIT</A>; + Key_Shift_Exit : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_315_4">KEY_SEXIT</A>; + <span class="symbol"><A NAME="ref_318_4">KEY_SFIND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_197_4">KEY_SFIND</A>; + Key_Shift_Find : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_318_4">KEY_SFIND</A>; + <span class="symbol"><A NAME="ref_321_4">KEY_SHELP</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_198_4">KEY_SHELP</A>; + Key_Shift_Help : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_321_4">KEY_SHELP</A>; + <span class="symbol"><A NAME="ref_324_4">KEY_SHOME</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_199_4">KEY_SHOME</A>; + Key_Shift_Home : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_324_4">KEY_SHOME</A>; + <span class="symbol"><A NAME="ref_327_4">KEY_SIC</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_200_4">KEY_SIC</A>; + Key_Shift_Insert_Char : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_327_4">KEY_SIC</A>; + <span class="symbol"><A NAME="ref_330_4">KEY_SLEFT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_201_4">KEY_SLEFT</A>; + Key_Shift_Cursor_Left : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_330_4">KEY_SLEFT</A>; + <span class="symbol"><A NAME="ref_333_4">KEY_SMESSAGE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_202_4">KEY_SMESSAGE</A>; + Key_Shift_Message : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_333_4">KEY_SMESSAGE</A>; + <span class="symbol"><A NAME="ref_336_4">KEY_SMOVE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_203_4">KEY_SMOVE</A>; + Key_Shift_Move : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_336_4">KEY_SMOVE</A>; + <span class="symbol"><A NAME="ref_339_4">KEY_SNEXT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_204_4">KEY_SNEXT</A>; + Key_Shift_Next_Page : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_339_4">KEY_SNEXT</A>; + <span class="symbol"><A NAME="ref_342_4">KEY_SOPTIONS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_205_4">KEY_SOPTIONS</A>; + Key_Shift_Options : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_342_4">KEY_SOPTIONS</A>; + <span class="symbol"><A NAME="ref_345_4">KEY_SPREVIOUS</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_206_4">KEY_SPREVIOUS</A>; + Key_Shift_Previous_Page : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_345_4">KEY_SPREVIOUS</A>; + <span class="symbol"><A NAME="ref_348_4">KEY_SPRINT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_207_4">KEY_SPRINT</A>; + Key_Shift_Print : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_348_4">KEY_SPRINT</A>; + <span class="symbol"><A NAME="ref_351_4">KEY_SREDO</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_208_4">KEY_SREDO</A>; + Key_Shift_Redo : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_351_4">KEY_SREDO</A>; + <span class="symbol"><A NAME="ref_354_4">KEY_SREPLACE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_209_4">KEY_SREPLACE</A>; + Key_Shift_Replace : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_354_4">KEY_SREPLACE</A>; + <span class="symbol"><A NAME="ref_357_4">KEY_SRIGHT</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_210_4">KEY_SRIGHT</A>; + Key_Shift_Cursor_Right : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_357_4">KEY_SRIGHT</A>; + <span class="symbol"><A NAME="ref_360_4">KEY_SRSUME</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_211_4">KEY_SRSUME</A>; + Key_Shift_Resume : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_360_4">KEY_SRSUME</A>; + <span class="symbol"><A NAME="ref_363_4">KEY_SSAVE</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_212_4">KEY_SSAVE</A>; + Key_Shift_Save : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_363_4">KEY_SSAVE</A>; + <span class="symbol"><A NAME="ref_366_4">KEY_SSUSPEND</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_213_4">KEY_SSUSPEND</A>; + Key_Shift_Suspend : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_366_4">KEY_SSUSPEND</A>; + <span class="symbol"><A NAME="ref_369_4">KEY_SUNDO</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_214_4">KEY_SUNDO</A>; + Key_Shift_Undo : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_369_4">KEY_SUNDO</A>; + <span class="symbol"><A NAME="ref_372_4">Key_Suspend</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_215_4">KEY_SUSPEND</A>; + <span class="symbol"><A NAME="ref_374_4">Key_Undo</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_216_4">KEY_UNDO</A>; + <span class="symbol"><A NAME="ref_376_4">Key_Mouse</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_217_4">KEY_MOUSE</A>; + <span class="symbol"><A NAME="ref_378_4">Key_Resize</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_218_4">KEY_RESIZE</A>; + <span class="symbol"><A NAME="ref_380_4">Key_Max</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A> + := <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>'Last; + + <b>subtype</b> <span class="symbol"><A NAME="ref_383_12">User_Key_Code</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A> + <b>range</b> (<A HREF="terminal_interface-curses__ads.htm#ref_380_4">Key_Max</A> + 129) .. <A HREF="terminal_interface-curses__ads.htm#ref_67_9">Key_Code</A>'Last; + <span class="comment"><EM>-- This is reserved for user defined key codes. The range between Key_Max</EM></span> + <span class="comment"><EM>-- and the first user code is reserved for subsystems like menu and forms.</EM></span> + + <span class="comment"><EM>--------------------------------------------------------------------------</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_390_9">Color_Number</A></span> <b>is</b> <b>range</b> -1 .. Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Last); + <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>'Size <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Size; + <span class="comment"><EM>-- (n)curses uses a short for the color index</EM></span> + <span class="comment"><EM>-- The model is, that a Color_Number is an index into an array of</EM></span> + <span class="comment"><EM>-- (potentially) definable colors. Some of those indices are</EM></span> + <span class="comment"><EM>-- predefined (see below), although they may not really exist.</EM></span> + + <span class="symbol"><A NAME="ref_397_4">Black</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_69_4">COLOR_BLACK</A>; + <span class="symbol"><A NAME="ref_398_4">Red</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_70_4">COLOR_RED</A>; + <span class="symbol"><A NAME="ref_399_4">Green</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_71_4">COLOR_GREEN</A>; + <span class="symbol"><A NAME="ref_400_4">Yellow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_72_4">COLOR_YELLOW</A>; + <span class="symbol"><A NAME="ref_401_4">Blue</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_73_4">COLOR_BLUE</A>; + <span class="symbol"><A NAME="ref_402_4">Magenta</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_74_4">COLOR_MAGENTA</A>; + <span class="symbol"><A NAME="ref_403_4">Cyan</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_75_4">COLOR_CYAN</A>; + <span class="symbol"><A NAME="ref_404_4">White</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_76_4">COLOR_WHITE</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_406_9">RGB_Value</A></span> <b>is</b> <b>range</b> 0 .. Integer (<A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Last); + <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>'Size <b>use</b> <A HREF="interfac__ads.htm#ref_38_9">Interfaces</A>.C.short'Size; + <span class="comment"><EM>-- Some system may allow to redefine a color by setting RGB values.</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_410_9">Color_Pair</A></span> <b>is</b> <b>range</b> 0 .. 255; + <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'Size <b>use</b> 8; + <b>subtype</b> <span class="symbol"><A NAME="ref_412_12">Redefinable_Color_Pair</A></span> <b>is</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> <b>range</b> 1 .. 255; + <span class="comment"><EM>-- (n)curses reserves 1 Byte for the color-pair number. Color Pair 0</EM></span> + <span class="comment"><EM>-- is fixed (Black &amp; White). A color pair is simply a combination of</EM></span> + <span class="comment"><EM>-- two colors described by Color_Numbers, one for the foreground and</EM></span> + <span class="comment"><EM>-- the other for the background</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_418_9">Character_Attribute_Set</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_420_10">Stand_Out</A></span> : Boolean; + <span class="symbol"><A NAME="ref_421_10">Under_Line</A></span> : Boolean; + <span class="symbol"><A NAME="ref_422_10">Reverse_Video</A></span> : Boolean; + <span class="symbol"><A NAME="ref_423_10">Blink</A></span> : Boolean; + <span class="symbol"><A NAME="ref_424_10">Dim_Character</A></span> : Boolean; + <span class="symbol"><A NAME="ref_425_10">Bold_Character</A></span> : Boolean; + <span class="symbol"><A NAME="ref_426_10">Protected_Character</A></span> : Boolean; + <span class="symbol"><A NAME="ref_427_10">Invisible_Character</A></span> : Boolean; + <span class="symbol"><A NAME="ref_428_10">Alternate_Character_Set</A></span> : Boolean; + <span class="symbol"><A NAME="ref_429_10">Horizontal</A></span> : Boolean; + <span class="symbol"><A NAME="ref_430_10">Left</A></span> : Boolean; + <span class="symbol"><A NAME="ref_431_10">Low</A></span> : Boolean; + <span class="symbol"><A NAME="ref_432_10">Right</A></span> : Boolean; + <span class="symbol"><A NAME="ref_433_10">Top</A></span> : Boolean; + <span class="symbol"><A NAME="ref_434_10">Vertical</A></span> : Boolean; + <b>end</b> <b>record</b>; + + <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses__ads.htm#ref_420_10">Stand_Out</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_35_4">A_STANDOUT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_36_4">A_STANDOUT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_421_10">Under_Line</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_37_4">A_UNDERLINE_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_38_4">A_UNDERLINE_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_422_10">Reverse_Video</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_39_4">A_REVERSE_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_40_4">A_REVERSE_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_423_10">Blink</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_41_4">A_BLINK_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_42_4">A_BLINK_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_424_10">Dim_Character</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_43_4">A_DIM_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_44_4">A_DIM_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_425_10">Bold_Character</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_45_4">A_BOLD_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_46_4">A_BOLD_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_426_10">Protected_Character</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_47_4">A_PROTECT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_48_4">A_PROTECT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_427_10">Invisible_Character</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_49_4">A_INVIS_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_50_4">A_INVIS_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_428_10">Alternate_Character_Set</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_51_4">A_ALTCHARSET_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_52_4">A_ALTCHARSET_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_429_10">Horizontal</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_53_4">A_HORIZONTAL_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_54_4">A_HORIZONTAL_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_430_10">Left</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_55_4">A_LEFT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_56_4">A_LEFT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_431_10">Low</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_57_4">A_LOW_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_58_4">A_LOW_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_432_10">Right</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_59_4">A_RIGHT_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_60_4">A_RIGHT_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_433_10">Top</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_61_4">A_TOP_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_62_4">A_TOP_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_434_10">Vertical</A> <b>at</b> 0 <b>range</b> + <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_63_4">A_VERTICAL_First</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_64_4">A_VERTICAL_Last</A> - <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A>; + <b>end</b> <b>record</b>; + + <span class="symbol"><A NAME="ref_486_4">Normal_Video</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := (<b>others</b> =&gt; False); + + <b>type</b> <span class="symbol"><A NAME="ref_488_9">Attributed_Character</A></span> <b>is</b> + <b>record</b> + <span class="symbol"><A NAME="ref_490_10">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_491_10">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>; + <span class="symbol"><A NAME="ref_492_10">Ch</A></span> : Character; + <b>end</b> <b>record</b>; + <b>pragma</b> Convention (C_Pass_By_Copy, <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- This is the counterpart for the chtype in C.</EM></span> + + <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> <b>use</b> + <b>record</b> + <A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_29_4">A_CHARTEXT_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_30_4">A_CHARTEXT_Last</A>; + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_31_4">A_COLOR_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_32_4">A_COLOR_Last</A>; + <b>pragma</b> Warnings (Off); + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> <b>at</b> 0 <b>range</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_33_4">Attr_First</A> + .. <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_34_4">Attr_Last</A>; + <b>pragma</b> Warnings (On); + <b>end</b> <b>record</b>; + <b>for</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>'Size <b>use</b> <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_65_4">chtype_Size</A>; + + <span class="symbol"><A NAME="ref_510_4">Default_Character</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> + := (<A HREF="terminal_interface-curses__ads.htm#ref_492_10">Ch</A> =&gt; Character'First, + <A HREF="terminal_interface-curses__ads.htm#ref_491_10">Color</A> =&gt; <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First, + <A HREF="terminal_interface-curses__ads.htm#ref_490_10">Attr</A> =&gt; (<b>others</b> =&gt; False)); <span class="comment"><EM>-- preelaboratable Normal_Video</EM></span> + + <b>type</b> Attributed_String <b>is</b> <b>array</b> (Positive <b>range</b> &lt;&gt;) <b>of</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Convention (C, Attributed_String); + <span class="comment"><EM>-- In this binding we allow strings of attributed characters.</EM></span> + + <span class="comment"><EM>------------------</EM></span> + <span class="comment"><EM>-- Exceptions --</EM></span> + <span class="comment"><EM>------------------</EM></span> + <span class="symbol"><A NAME="ref_522_4">Curses_Exception</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_523_4">Wrong_Curses_Version</A></span> : <b>exception</b>; + + <span class="comment"><EM>-- Those exceptions are raised by the ETI (Extended Terminal Interface)</EM></span> + <span class="comment"><EM>-- subpackets for Menu and Forms handling.</EM></span> + <span class="comment"><EM>--</EM></span> + <span class="symbol"><A NAME="ref_528_4">Eti_System_Error</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_529_4">Eti_Bad_Argument</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_530_4">Eti_Posted</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_531_4">Eti_Connected</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_532_4">Eti_Bad_State</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_533_4">Eti_No_Room</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_534_4">Eti_Not_Posted</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_535_4">Eti_Unknown_Command</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_536_4">Eti_No_Match</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_537_4">Eti_Not_Selectable</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_538_4">Eti_Not_Connected</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_539_4">Eti_Request_Denied</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_540_4">Eti_Invalid_Field</A></span> : <b>exception</b>; + <span class="symbol"><A NAME="ref_541_4">Eti_Current</A></span> : <b>exception</b>; + + <span class="comment"><EM>--------------------------------------------------------------------------</EM></span> + <span class="comment"><EM>-- External C variables</EM></span> + <span class="comment"><EM>-- Conceptually even in C this are kind of constants, but they are</EM></span> + <span class="comment"><EM>-- initialized and sometimes changed by the library routines at runtime</EM></span> + <span class="comment"><EM>-- depending on the type of terminal. I believe the best way to model</EM></span> + <span class="comment"><EM>-- this is to use functions.</EM></span> + <span class="comment"><EM>--------------------------------------------------------------------------</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_551_13" HREF="terminal_interface-curses__adb.htm#ref_2355_13">Lines</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_551_13">Lines</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_554_13" HREF="terminal_interface-curses__adb.htm#ref_2363_13">Columns</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_554_13">Columns</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_557_13" HREF="terminal_interface-curses__adb.htm#ref_2371_13">Tab_Size</A></span> <b>return</b> Natural; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_557_13">Tab_Size</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_560_13" HREF="terminal_interface-curses__adb.htm#ref_2380_13">Number_Of_Colors</A></span> <b>return</b> Natural; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_560_13">Number_Of_Colors</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_563_13" HREF="terminal_interface-curses__adb.htm#ref_2388_13">Number_Of_Color_Pairs</A></span> <b>return</b> Natural; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_563_13">Number_Of_Color_Pairs</A>); + + <b>subtype</b> <span class="symbol"><A NAME="ref_566_12">ACS_Index</A></span> <b>is</b> Character <b>range</b> + Character'Val (0) .. Character'Val (127); + <b>function</b> <span class="symbol"><A NAME="ref_568_13">ACS_Map</A></span> (<span class="symbol"><A NAME="ref_568_22" HREF="terminal_interface-curses__ads.htm#ref_568_13">Index</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <b>pragma</b> Import (C, ACS_Map, "acs_map_as_function"); + + <span class="comment"><EM>-- Constants for several characters from the Alternate Character Set</EM></span> + <span class="comment"><EM>-- You must use these constants as indices into the ACS_Map function</EM></span> + <span class="comment"><EM>-- to get the corresponding attributed character at runtime</EM></span> + <span class="symbol"><A NAME="ref_574_4">ACS_Upper_Left_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_222_4">ACS_ULCORNER</A>); + <span class="symbol"><A NAME="ref_576_4">ACS_Lower_Left_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_223_4">ACS_LLCORNER</A>); + <span class="symbol"><A NAME="ref_578_4">ACS_Upper_Right_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_224_4">ACS_URCORNER</A>); + <span class="symbol"><A NAME="ref_580_4">ACS_Lower_Right_Corner</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_225_4">ACS_LRCORNER</A>); + <span class="symbol"><A NAME="ref_582_4">ACS_Left_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_226_4">ACS_LTEE</A>); + <span class="symbol"><A NAME="ref_584_4">ACS_Right_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_227_4">ACS_RTEE</A>); + <span class="symbol"><A NAME="ref_586_4">ACS_Bottom_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_228_4">ACS_BTEE</A>); + <span class="symbol"><A NAME="ref_588_4">ACS_Top_Tee</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_229_4">ACS_TTEE</A>); + <span class="symbol"><A NAME="ref_590_4">ACS_Horizontal_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_230_4">ACS_HLINE</A>); + <span class="symbol"><A NAME="ref_592_4">ACS_Vertical_Line</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_231_4">ACS_VLINE</A>); + <span class="symbol"><A NAME="ref_594_4">ACS_Plus_Symbol</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_232_4">ACS_PLUS</A>); + <span class="symbol"><A NAME="ref_596_4">ACS_Scan_Line_1</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_233_4">ACS_S1</A>); + <span class="symbol"><A NAME="ref_598_4">ACS_Scan_Line_9</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_234_4">ACS_S9</A>); + <span class="symbol"><A NAME="ref_600_4">ACS_Diamond</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_235_4">ACS_DIAMOND</A>); + <span class="symbol"><A NAME="ref_602_4">ACS_Checker_Board</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_236_4">ACS_CKBOARD</A>); + <span class="symbol"><A NAME="ref_604_4">ACS_Degree</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_237_4">ACS_DEGREE</A>); + <span class="symbol"><A NAME="ref_606_4">ACS_Plus_Minus</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_238_4">ACS_PLMINUS</A>); + <span class="symbol"><A NAME="ref_608_4">ACS_Bullet</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_239_4">ACS_BULLET</A>); + <span class="symbol"><A NAME="ref_610_4">ACS_Left_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_240_4">ACS_LARROW</A>); + <span class="symbol"><A NAME="ref_612_4">ACS_Right_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_241_4">ACS_RARROW</A>); + <span class="symbol"><A NAME="ref_614_4">ACS_Down_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_242_4">ACS_DARROW</A>); + <span class="symbol"><A NAME="ref_616_4">ACS_Up_Arrow</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_243_4">ACS_UARROW</A>); + <span class="symbol"><A NAME="ref_618_4">ACS_Board_Of_Squares</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_244_4">ACS_BOARD</A>); + <span class="symbol"><A NAME="ref_620_4">ACS_Lantern</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_245_4">ACS_LANTERN</A>); + <span class="symbol"><A NAME="ref_622_4">ACS_Solid_Block</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_246_4">ACS_BLOCK</A>); + <span class="symbol"><A NAME="ref_624_4">ACS_Scan_Line_3</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_247_4">ACS_S3</A>); + <span class="symbol"><A NAME="ref_626_4">ACS_Scan_Line_7</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_248_4">ACS_S7</A>); + <span class="symbol"><A NAME="ref_628_4">ACS_Less_Or_Equal</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_249_4">ACS_LEQUAL</A>); + <span class="symbol"><A NAME="ref_630_4">ACS_Greater_Or_Equal</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_250_4">ACS_GEQUAL</A>); + <span class="symbol"><A NAME="ref_632_4">ACS_PI</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_251_4">ACS_PI</A>); + <span class="symbol"><A NAME="ref_634_4">ACS_Not_Equal</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_252_4">ACS_NEQUAL</A>); + <span class="symbol"><A NAME="ref_636_4">ACS_Sterling</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_566_12">ACS_Index</A> + := Character'Val (<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_253_4">ACS_STERLING</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_initscr.3x.html">curs_initscr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Not implemented: newterm, set_term, delscreen</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_1">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_645_13">Standard_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">stdscr</A></EM></span> + <b>pragma</b> Import (C, Standard_Window, "stdscr_as_function"); + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_2">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_651_13">Current_Window</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">curscr</A></EM></span> + <b>pragma</b> Import (C, Current_Window, "curscr_as_function"); + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_651_13">Current_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_3">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_657_14" HREF="terminal_interface-curses__adb.htm#ref_98_14">Init_Screen</A></span>; + + <span class="comment"><EM>-- <A NAME="AFU_4">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_660_14">Init_Windows</A></span> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_657_14">Init_Screen</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">initscr()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_657_14">Init_Screen</A>); + <span class="comment"><EM>-- pragma Inline (Init_Windows);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_5">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_666_14" HREF="terminal_interface-curses__adb.htm#ref_111_14">End_Windows</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">endwin()</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_668_14">End_Screen</A></span> <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_666_14">End_Windows</A>; + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_666_14">End_Windows</A>); + <span class="comment"><EM>-- pragma Inline (End_Screen);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_6">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_673_13" HREF="terminal_interface-curses__adb.htm#ref_121_13">Is_End_Window</A></span> <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_initscr.3x.html">isendwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_673_13">Is_End_Window</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_move.3x.html">curs_move.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_7">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_682_14" HREF="terminal_interface-curses__adb.htm#ref_133_14">Move_Cursor</A></span> (<span class="symbol"><A NAME="ref_682_27" HREF="terminal_interface-curses__adb.htm#ref_133_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_683_27" HREF="terminal_interface-curses__adb.htm#ref_134_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_684_27" HREF="terminal_interface-curses__adb.htm#ref_135_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_move.3x.html">wmove()</A></EM></span> + <span class="comment"><EM>-- AKA: move()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_682_14">Move_Cursor</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_addch.3x.html">curs_addch.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_8">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_694_14" HREF="terminal_interface-curses__adb.htm#ref_148_14">Add</A></span> (<span class="symbol"><A NAME="ref_694_19" HREF="terminal_interface-curses__adb.htm#ref_148_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_695_19" HREF="terminal_interface-curses__adb.htm#ref_149_19">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">waddch()</A></EM></span> + <span class="comment"><EM>-- AKA: addch()</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_699_14" HREF="terminal_interface-curses__adb.htm#ref_160_14">Add</A></span> (<span class="symbol"><A NAME="ref_699_19" HREF="terminal_interface-curses__adb.htm#ref_160_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_700_19" HREF="terminal_interface-curses__adb.htm#ref_161_19">Ch</A></span> : Character); + <span class="comment"><EM>-- Add a single character at the current logical cursor position to</EM></span> + <span class="comment"><EM>-- the window. Use the current windows attributes.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_9">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_705_14" HREF="terminal_interface-curses__adb.htm#ref_170_14">Add</A></span> + (<span class="symbol"><A NAME="ref_706_7" HREF="terminal_interface-curses__adb.htm#ref_171_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_707_7" HREF="terminal_interface-curses__adb.htm#ref_172_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_708_7" HREF="terminal_interface-curses__adb.htm#ref_173_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_709_7" HREF="terminal_interface-curses__adb.htm#ref_174_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">mvwaddch()</A></EM></span> + <span class="comment"><EM>-- AKA: mvaddch()</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_713_14" HREF="terminal_interface-curses__adb.htm#ref_190_14">Add</A></span> + (<span class="symbol"><A NAME="ref_714_7" HREF="terminal_interface-curses__adb.htm#ref_191_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_715_7" HREF="terminal_interface-curses__adb.htm#ref_192_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_716_7" HREF="terminal_interface-curses__adb.htm#ref_193_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_717_7" HREF="terminal_interface-curses__adb.htm#ref_194_7">Ch</A></span> : Character); + <span class="comment"><EM>-- Move to the position and add a single character into the window</EM></span> + <span class="comment"><EM>-- There are more Add routines, so the Inline pragma follows later</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_10">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_722_14" HREF="terminal_interface-curses__adb.htm#ref_205_14">Add_With_Immediate_Echo</A></span> + (<span class="symbol"><A NAME="ref_723_7" HREF="terminal_interface-curses__adb.htm#ref_206_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_724_7" HREF="terminal_interface-curses__adb.htm#ref_207_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_addch.3x.html">wechochar()</A></EM></span> + <span class="comment"><EM>-- AKA: echochar()</EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_728_14" HREF="terminal_interface-curses__adb.htm#ref_218_14">Add_With_Immediate_Echo</A></span> + (<span class="symbol"><A NAME="ref_729_7" HREF="terminal_interface-curses__adb.htm#ref_219_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_730_7" HREF="terminal_interface-curses__adb.htm#ref_220_7">Ch</A></span> : Character); + <span class="comment"><EM>-- Add a character and do an immediate refresh of the screen.</EM></span> + <b>pragma</b> Inline (Add_With_Immediate_Echo); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_window.3x.html">curs_window.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not Implemented: wcursyncup</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_11">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_740_13" HREF="terminal_interface-curses__adb.htm#ref_230_13">Create</A></span> + (<span class="symbol"><A NAME="ref_741_7" HREF="terminal_interface-curses__adb.htm#ref_230_21">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_742_7" HREF="terminal_interface-curses__adb.htm#ref_231_21">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_743_7" HREF="terminal_interface-curses__adb.htm#ref_232_21">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_744_7" HREF="terminal_interface-curses__adb.htm#ref_233_21">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- Not Implemented: Default Number_Of_Lines, Number_Of_Columns</EM></span> + <span class="comment"><EM>-- the C version lets them be 0, see the man page.</EM></span> + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">newwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_740_13">Create</A>); + + <b>function</b> New_Window + (<span class="symbol"><A NAME="ref_751_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_752_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_753_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_754_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> + <b>renames</b> <A HREF="terminal_interface-curses__ads.htm#ref_740_13">Create</A>; + <span class="comment"><EM>-- pragma Inline (New_Window);</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_12">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_759_14" HREF="terminal_interface-curses__adb.htm#ref_253_14">Delete</A></span> (<span class="symbol"><A NAME="ref_759_22" HREF="terminal_interface-curses__adb.htm#ref_253_22">Win</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">delwin()</A></EM></span> + <span class="comment"><EM>-- Reset Win to Null_Window</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_759_14">Delete</A>); + + <span class="comment"><EM>-- <A NAME="AFU_13">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_765_13" HREF="terminal_interface-curses__adb.htm#ref_264_13">Sub_Window</A></span> + (<span class="symbol"><A NAME="ref_766_7" HREF="terminal_interface-curses__adb.htm#ref_265_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_767_7" HREF="terminal_interface-curses__adb.htm#ref_266_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_768_7" HREF="terminal_interface-curses__adb.htm#ref_267_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_769_7" HREF="terminal_interface-curses__adb.htm#ref_268_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_770_7" HREF="terminal_interface-curses__adb.htm#ref_269_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">subwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_765_13">Sub_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_14">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_775_13" HREF="terminal_interface-curses__adb.htm#ref_292_13">Derived_Window</A></span> + (<span class="symbol"><A NAME="ref_776_7" HREF="terminal_interface-curses__adb.htm#ref_293_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_777_7" HREF="terminal_interface-curses__adb.htm#ref_294_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_778_7" HREF="terminal_interface-curses__adb.htm#ref_295_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_779_7" HREF="terminal_interface-curses__adb.htm#ref_296_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_780_7" HREF="terminal_interface-curses__adb.htm#ref_297_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">derwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_775_13">Derived_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_15">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_785_13" HREF="terminal_interface-curses__adb.htm#ref_320_13">Duplicate</A></span> (<span class="symbol"><A NAME="ref_785_24" HREF="terminal_interface-curses__adb.htm#ref_320_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">dupwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_785_13">Duplicate</A>); + + <span class="comment"><EM>-- <A NAME="AFU_16">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_790_14" HREF="terminal_interface-curses__adb.htm#ref_333_14">Move_Window</A></span> (<span class="symbol"><A NAME="ref_790_27" HREF="terminal_interface-curses__adb.htm#ref_333_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_791_27" HREF="terminal_interface-curses__adb.htm#ref_334_27">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_792_27" HREF="terminal_interface-curses__adb.htm#ref_335_27">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_790_14">Move_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_17">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_797_14" HREF="terminal_interface-curses__adb.htm#ref_347_14">Move_Derived_Window</A></span> (<span class="symbol"><A NAME="ref_797_35" HREF="terminal_interface-curses__adb.htm#ref_347_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_798_35" HREF="terminal_interface-curses__adb.htm#ref_348_35">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_799_35" HREF="terminal_interface-curses__adb.htm#ref_349_35">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">mvderwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_797_14">Move_Derived_Window</A>); + + <span class="comment"><EM>-- <A NAME="AFU_18">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_804_14">Synchronize_Upwards</A></span> (<span class="symbol"><A NAME="ref_804_35" HREF="terminal_interface-curses__ads.htm#ref_804_14">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncup()</A></EM></span> + <b>pragma</b> Import (C, Synchronize_Upwards, "wsyncup"); + + <span class="comment"><EM>-- <A NAME="AFU_19">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_809_14">Synchronize_Downwards</A></span> (<span class="symbol"><A NAME="ref_809_37" HREF="terminal_interface-curses__ads.htm#ref_809_14">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">wsyncdown()</A></EM></span> + <b>pragma</b> Import (C, Synchronize_Downwards, "wsyncdown"); + + <span class="comment"><EM>-- <A NAME="AFU_20">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_814_14" HREF="terminal_interface-curses__adb.htm#ref_361_14">Set_Synch_Mode</A></span> (<span class="symbol"><A NAME="ref_814_30" HREF="terminal_interface-curses__adb.htm#ref_361_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_815_30" HREF="terminal_interface-curses__adb.htm#ref_362_30">Mode</A></span> : Boolean := False); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_window.3x.html">syncok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_814_14">Set_Synch_Mode</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_addstr.3x.html">curs_addstr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_21">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_824_14" HREF="terminal_interface-curses__adb.htm#ref_373_14">Add</A></span> (<span class="symbol"><A NAME="ref_824_19" HREF="terminal_interface-curses__adb.htm#ref_373_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_825_19" HREF="terminal_interface-curses__adb.htm#ref_374_19">Str</A></span> : String; + <span class="symbol"><A NAME="ref_826_19" HREF="terminal_interface-curses__adb.htm#ref_375_19">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">waddnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: waddstr()</EM></span> + <span class="comment"><EM>-- AKA: addnstr()</EM></span> + <span class="comment"><EM>-- AKA: addstr()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_22">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_833_14" HREF="terminal_interface-curses__adb.htm#ref_391_14">Add</A></span> (<span class="symbol"><A NAME="ref_833_19" HREF="terminal_interface-curses__adb.htm#ref_392_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_834_19" HREF="terminal_interface-curses__adb.htm#ref_393_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_835_19" HREF="terminal_interface-curses__adb.htm#ref_394_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_836_19" HREF="terminal_interface-curses__adb.htm#ref_395_7">Str</A></span> : String; + <span class="symbol"><A NAME="ref_837_19" HREF="terminal_interface-curses__adb.htm#ref_396_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_addstr.3x.html">mvwaddnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: mvwaddstr()</EM></span> + <span class="comment"><EM>-- AKA: mvaddnstr()</EM></span> + <span class="comment"><EM>-- AKA: mvaddstr()</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_addchstr.3x.html">curs_addchstr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_23">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_848_14" HREF="terminal_interface-curses__adb.htm#ref_403_14">Add</A></span> (<span class="symbol"><A NAME="ref_848_19" HREF="terminal_interface-curses__adb.htm#ref_404_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_849_19" HREF="terminal_interface-curses__adb.htm#ref_405_7">Str</A></span> : Attributed_String; + <span class="symbol"><A NAME="ref_850_19" HREF="terminal_interface-curses__adb.htm#ref_406_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">waddchnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: waddchstr()</EM></span> + <span class="comment"><EM>-- AKA: addchnstr()</EM></span> + <span class="comment"><EM>-- AKA: addchstr()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_24">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_857_14" HREF="terminal_interface-curses__adb.htm#ref_427_14">Add</A></span> (<span class="symbol"><A NAME="ref_857_19" HREF="terminal_interface-curses__adb.htm#ref_428_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_858_19" HREF="terminal_interface-curses__adb.htm#ref_429_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_859_19" HREF="terminal_interface-curses__adb.htm#ref_430_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_860_19" HREF="terminal_interface-curses__adb.htm#ref_431_7">Str</A></span> : Attributed_String; + <span class="symbol"><A NAME="ref_861_19" HREF="terminal_interface-curses__adb.htm#ref_432_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_addchstr.3x.html">mvwaddchnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: mvwaddchstr()</EM></span> + <span class="comment"><EM>-- AKA: mvaddchnstr()</EM></span> + <span class="comment"><EM>-- AKA: mvaddchstr()</EM></span> + <b>pragma</b> Inline (Add); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_border.3x.html">curs_border.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Not implemented: mvhline, mvwhline, mvvline, mvwvline</EM></span> + <span class="comment"><EM>-- | use Move_Cursor then Horizontal_Line or Vertical_Line</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_25">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_875_14" HREF="terminal_interface-curses__adb.htm#ref_439_14">Border</A></span> + (<span class="symbol"><A NAME="ref_876_7" HREF="terminal_interface-curses__adb.htm#ref_440_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_877_7" HREF="terminal_interface-curses__adb.htm#ref_441_7">Left_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_878_7" HREF="terminal_interface-curses__adb.htm#ref_442_7">Right_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_879_7" HREF="terminal_interface-curses__adb.htm#ref_443_7">Top_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_880_7" HREF="terminal_interface-curses__adb.htm#ref_444_7">Bottom_Side_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_881_7" HREF="terminal_interface-curses__adb.htm#ref_445_7">Upper_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_882_7" HREF="terminal_interface-curses__adb.htm#ref_446_7">Upper_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_883_7" HREF="terminal_interface-curses__adb.htm#ref_447_7">Lower_Left_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_884_7" HREF="terminal_interface-curses__adb.htm#ref_448_7">Lower_Right_Corner_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A> + ); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wborder()</A></EM></span> + <span class="comment"><EM>-- AKA: border()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_875_14">Border</A>); + + <span class="comment"><EM>-- <A NAME="AFU_26">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_891_14" HREF="terminal_interface-curses__adb.htm#ref_475_14">Box</A></span> + (<span class="symbol"><A NAME="ref_892_7" HREF="terminal_interface-curses__adb.htm#ref_476_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_893_7" HREF="terminal_interface-curses__adb.htm#ref_477_7">Vertical_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>; + <span class="symbol"><A NAME="ref_894_7" HREF="terminal_interface-curses__adb.htm#ref_478_7">Horizontal_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">box()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_891_14">Box</A>); + + <span class="comment"><EM>-- <A NAME="AFU_27">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_899_14" HREF="terminal_interface-curses__adb.htm#ref_486_14">Horizontal_Line</A></span> + (<span class="symbol"><A NAME="ref_900_7" HREF="terminal_interface-curses__adb.htm#ref_487_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_901_7" HREF="terminal_interface-curses__adb.htm#ref_488_7">Line_Size</A></span> : Natural; + <span class="symbol"><A NAME="ref_902_7" HREF="terminal_interface-curses__adb.htm#ref_489_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">whline()</A></EM></span> + <span class="comment"><EM>-- AKA: hline()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_899_14">Horizontal_Line</A>); + + <span class="comment"><EM>-- <A NAME="AFU_28">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_908_14" HREF="terminal_interface-curses__adb.htm#ref_504_14">Vertical_Line</A></span> + (<span class="symbol"><A NAME="ref_909_7" HREF="terminal_interface-curses__adb.htm#ref_505_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_910_7" HREF="terminal_interface-curses__adb.htm#ref_506_7">Line_Size</A></span> : Natural; + <span class="symbol"><A NAME="ref_911_7" HREF="terminal_interface-curses__adb.htm#ref_507_7">Line_Symbol</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A> := <A HREF="terminal_interface-curses__ads.htm#ref_510_4">Default_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_border.3x.html">wvline()</A></EM></span> + <span class="comment"><EM>-- AKA: vline()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_908_14">Vertical_Line</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_getch.3x.html">curs_getch.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not implemented: mvgetch, mvwgetch</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_29">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_922_13" HREF="terminal_interface-curses__adb.htm#ref_523_13">Get_Keystroke</A></span> (<span class="symbol"><A NAME="ref_922_28" HREF="terminal_interface-curses__adb.htm#ref_523_28">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">wgetch()</A></EM></span> + <span class="comment"><EM>-- AKA: getch()</EM></span> + <span class="comment"><EM>-- Get a character from the keyboard and echo it - if enabled - to the</EM></span> + <span class="comment"><EM>-- window.</EM></span> + <span class="comment"><EM>-- If for any reason (i.e. a timeout) we could not get a character the</EM></span> + <span class="comment"><EM>-- returned keycode is Key_None.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_922_13">Get_Keystroke</A>); + + <span class="comment"><EM>-- <A NAME="AFU_30">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_933_14" HREF="terminal_interface-curses__adb.htm#ref_538_14">Undo_Keystroke</A></span> (<span class="symbol"><A NAME="ref_933_30" HREF="terminal_interface-curses__adb.htm#ref_538_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">ungetch()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_933_14">Undo_Keystroke</A>); + + <span class="comment"><EM>-- <A NAME="AFU_31">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_938_13" HREF="terminal_interface-curses__adb.htm#ref_548_13">Has_Key</A></span> (<span class="symbol"><A NAME="ref_938_22" HREF="terminal_interface-curses__adb.htm#ref_548_22">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getch.3x.html">has_key()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_938_13">Has_Key</A>); + + <span class="comment"><EM>-- |</EM></span> + <span class="comment"><EM>-- | Some helper functions</EM></span> + <span class="comment"><EM>-- |</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_945_13" HREF="terminal_interface-curses__adb.htm#ref_560_13">Is_Function_Key</A></span> (<span class="symbol"><A NAME="ref_945_30" HREF="terminal_interface-curses__adb.htm#ref_560_30">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- Return True if the Key is a function key (i.e. one of F0 .. F63)</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_945_13">Is_Function_Key</A>); + + <b>subtype</b> <span class="symbol"><A NAME="ref_949_12">Function_Key_Number</A></span> <b>is</b> Integer <b>range</b> 0 .. 63; + <span class="comment"><EM>-- (n)curses allows for 64 function keys.</EM></span> + + <b>function</b> <span class="symbol"><A NAME="ref_952_13" HREF="terminal_interface-curses__adb.htm#ref_572_13">Function_Key</A></span> (<span class="symbol"><A NAME="ref_952_27" HREF="terminal_interface-curses__adb.htm#ref_572_27">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_949_12">Function_Key_Number</A>; + <span class="comment"><EM>-- Return the number of the function key. If the code is not a</EM></span> + <span class="comment"><EM>-- function key, a CONSTRAINT_ERROR will be raised.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_952_13">Function_Key</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_957_13" HREF="terminal_interface-curses__adb.htm#ref_583_13">Function_Key_Code</A></span> (<span class="symbol"><A NAME="ref_957_32" HREF="terminal_interface-curses__adb.htm#ref_583_32">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_949_12">Function_Key_Number</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>; + <span class="comment"><EM>-- Return the key code for a given function-key number.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_957_13">Function_Key_Code</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_attr.3x.html">curs_attr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Not implemented attr_off, wattr_off,</EM></span> + <span class="comment"><EM>-- | attr_on, wattr_on, attr_set, wattr_set</EM></span> + + <span class="comment"><EM>-- PAIR_NUMBER</EM></span> + <span class="comment"><EM>-- PAIR_NUMBER(c) is the same as c.Color</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_32">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_971_14" HREF="terminal_interface-curses__adb.htm#ref_589_14">Standout</A></span> (<span class="symbol"><A NAME="ref_971_24" HREF="terminal_interface-curses__adb.htm#ref_589_24">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_972_24" HREF="terminal_interface-curses__adb.htm#ref_590_24">On</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: wstandout()</EM></span> + <span class="comment"><EM>-- AKA: wstandend()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_33">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_977_14" HREF="terminal_interface-curses__adb.htm#ref_609_14">Switch_Character_Attribute</A></span> + (<span class="symbol"><A NAME="ref_978_7" HREF="terminal_interface-curses__adb.htm#ref_610_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_979_7" HREF="terminal_interface-curses__adb.htm#ref_611_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_980_7" HREF="terminal_interface-curses__adb.htm#ref_612_7">On</A></span> : Boolean := True); <span class="comment"><EM>-- if False we switch Off.</EM></span> + <span class="comment"><EM>-- Switches those Attributes set to true in the list.</EM></span> + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattron()</A></EM></span> + <span class="comment"><EM>-- AKA: wattroff()</EM></span> + <span class="comment"><EM>-- AKA: attron()</EM></span> + <span class="comment"><EM>-- AKA: attroff()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_34">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_988_14" HREF="terminal_interface-curses__adb.htm#ref_637_14">Set_Character_Attributes</A></span> + (<span class="symbol"><A NAME="ref_989_7" HREF="terminal_interface-curses__adb.htm#ref_638_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_990_7" HREF="terminal_interface-curses__adb.htm#ref_639_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_991_7" HREF="terminal_interface-curses__adb.htm#ref_640_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattrset()</A></EM></span> + <span class="comment"><EM>-- AKA: attrset()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_988_14">Set_Character_Attributes</A>); + + <span class="comment"><EM>-- <A NAME="AFU_35">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_997_13" HREF="terminal_interface-curses__adb.htm#ref_654_13">Get_Character_Attribute</A></span> + (<span class="symbol"><A NAME="ref_998_7" HREF="terminal_interface-curses__adb.htm#ref_654_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></span> + <span class="comment"><EM>-- AKA: attr_get()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_36">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1003_13" HREF="terminal_interface-curses__adb.htm#ref_675_13">Get_Character_Attribute</A></span> + (<span class="symbol"><A NAME="ref_1004_7" HREF="terminal_interface-curses__adb.htm#ref_675_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wattr_get()</A></EM></span> + <b>pragma</b> Inline (Get_Character_Attribute); + + <span class="comment"><EM>-- <A NAME="AFU_37">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1009_14" HREF="terminal_interface-curses__adb.htm#ref_696_14">Set_Color</A></span> (<span class="symbol"><A NAME="ref_1009_25" HREF="terminal_interface-curses__adb.htm#ref_696_25">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1010_25" HREF="terminal_interface-curses__adb.htm#ref_697_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wcolor_set()</A></EM></span> + <span class="comment"><EM>-- AKA: color_set()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1009_14">Set_Color</A>); + + <span class="comment"><EM>-- <A NAME="AFU_38">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1016_14" HREF="terminal_interface-curses__adb.htm#ref_712_14">Change_Attributes</A></span> + (<span class="symbol"><A NAME="ref_1017_7" HREF="terminal_interface-curses__adb.htm#ref_713_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1018_7" HREF="terminal_interface-curses__adb.htm#ref_714_7">Count</A></span> : Integer := -1; + <span class="symbol"><A NAME="ref_1019_7" HREF="terminal_interface-curses__adb.htm#ref_715_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_1020_7" HREF="terminal_interface-curses__adb.htm#ref_716_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">wchgat()</A></EM></span> + <span class="comment"><EM>-- AKA: chgat()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_39">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1025_14" HREF="terminal_interface-curses__adb.htm#ref_737_14">Change_Attributes</A></span> + (<span class="symbol"><A NAME="ref_1026_7" HREF="terminal_interface-curses__adb.htm#ref_738_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1027_7" HREF="terminal_interface-curses__adb.htm#ref_739_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>'First; + <span class="symbol"><A NAME="ref_1028_7" HREF="terminal_interface-curses__adb.htm#ref_740_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A> := <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>'First; + <span class="symbol"><A NAME="ref_1029_7" HREF="terminal_interface-curses__adb.htm#ref_741_7">Count</A></span> : Integer := -1; + <span class="symbol"><A NAME="ref_1030_7" HREF="terminal_interface-curses__adb.htm#ref_742_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_1031_7" HREF="terminal_interface-curses__adb.htm#ref_743_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_attr.3x.html">mvwchgat()</A></EM></span> + <span class="comment"><EM>-- AKA: mvchgat()</EM></span> + <b>pragma</b> Inline (Change_Attributes); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_beep.3x.html">curs_beep.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_40">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1041_14" HREF="terminal_interface-curses__adb.htm#ref_750_14">Beep</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">beep()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1041_14">Beep</A>); + + <span class="comment"><EM>-- <A NAME="AFU_41">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1046_14" HREF="terminal_interface-curses__adb.htm#ref_760_14">Flash_Screen</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_beep.3x.html">flash()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1046_14">Flash_Screen</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_inopts.3x.html">curs_inopts.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- | Not implemented : typeahead</EM></span> + <span class="comment"><EM>--</EM></span> + <span class="comment"><EM>-- <A NAME="AFU_42">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1057_14" HREF="terminal_interface-curses__adb.htm#ref_770_14">Set_Cbreak_Mode</A></span> (<span class="symbol"><A NAME="ref_1057_31" HREF="terminal_interface-curses__adb.htm#ref_770_31">SwitchOn</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">cbreak()</A></EM></span> + <span class="comment"><EM>-- AKA: nocbreak()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1057_14">Set_Cbreak_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_43">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1063_14" HREF="terminal_interface-curses__adb.htm#ref_789_14">Set_Raw_Mode</A></span> (<span class="symbol"><A NAME="ref_1063_28" HREF="terminal_interface-curses__adb.htm#ref_789_28">SwitchOn</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">raw()</A></EM></span> + <span class="comment"><EM>-- AKA: noraw()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1063_14">Set_Raw_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_44">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1069_14" HREF="terminal_interface-curses__adb.htm#ref_808_14">Set_Echo_Mode</A></span> (<span class="symbol"><A NAME="ref_1069_29" HREF="terminal_interface-curses__adb.htm#ref_808_29">SwitchOn</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">echo()</A></EM></span> + <span class="comment"><EM>-- AKA: noecho()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1069_14">Set_Echo_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_45">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1075_14" HREF="terminal_interface-curses__adb.htm#ref_827_14">Set_Meta_Mode</A></span> (<span class="symbol"><A NAME="ref_1075_29" HREF="terminal_interface-curses__adb.htm#ref_827_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1076_29" HREF="terminal_interface-curses__adb.htm#ref_828_29">SwitchOn</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">meta()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1075_14">Set_Meta_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_46">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1081_14" HREF="terminal_interface-curses__adb.htm#ref_838_14">Set_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_1081_31" HREF="terminal_interface-curses__adb.htm#ref_838_31">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1082_31" HREF="terminal_interface-curses__adb.htm#ref_839_31">SwitchOn</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">keypad()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1081_14">Set_KeyPad_Mode</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_1086_13" HREF="terminal_interface-curses__adb.htm#ref_849_13">Get_KeyPad_Mode</A></span> (<span class="symbol"><A NAME="ref_1086_30" HREF="terminal_interface-curses__adb.htm#ref_849_30">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> Boolean; + <span class="comment"><EM>-- This has no pendant in C. There you've to look into the WINDOWS</EM></span> + <span class="comment"><EM>-- structure to get the value. Bad practice, not repeated in Ada.</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_1091_9">Half_Delay_Amount</A></span> <b>is</b> <b>range</b> 1 .. 255; + + <span class="comment"><EM>-- <A NAME="AFU_47">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1094_14" HREF="terminal_interface-curses__adb.htm#ref_858_14">Half_Delay</A></span> (<span class="symbol"><A NAME="ref_1094_26" HREF="terminal_interface-curses__adb.htm#ref_858_26">Amount</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1091_9">Half_Delay_Amount</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">halfdelay()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1094_14">Half_Delay</A>); + + <span class="comment"><EM>-- <A NAME="AFU_48">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1099_14" HREF="terminal_interface-curses__adb.htm#ref_868_14">Set_Flush_On_Interrupt_Mode</A></span> + (<span class="symbol"><A NAME="ref_1100_7" HREF="terminal_interface-curses__adb.htm#ref_869_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1101_7" HREF="terminal_interface-curses__adb.htm#ref_870_7">Mode</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">intrflush()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1099_14">Set_Flush_On_Interrupt_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_49">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1106_14" HREF="terminal_interface-curses__adb.htm#ref_880_14">Set_Queue_Interrupt_Mode</A></span> + (<span class="symbol"><A NAME="ref_1107_7" HREF="terminal_interface-curses__adb.htm#ref_881_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1108_7" HREF="terminal_interface-curses__adb.htm#ref_882_7">Flush</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">qiflush()</A></EM></span> + <span class="comment"><EM>-- AKA: noqiflush()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1106_14">Set_Queue_Interrupt_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_50">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1114_14" HREF="terminal_interface-curses__adb.htm#ref_899_14">Set_NoDelay_Mode</A></span> + (<span class="symbol"><A NAME="ref_1115_7" HREF="terminal_interface-curses__adb.htm#ref_900_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1116_7" HREF="terminal_interface-curses__adb.htm#ref_901_7">Mode</A></span> : Boolean := False); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">nodelay()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1114_14">Set_NoDelay_Mode</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_1120_9">Timeout_Mode</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1120_26">Blocking</A></span>, <span class="symbol"><A NAME="ref_1120_36">Non_Blocking</A></span>, <span class="symbol"><A NAME="ref_1120_50">Delayed</A></span>); + + <span class="comment"><EM>-- <A NAME="AFU_51">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1123_14" HREF="terminal_interface-curses__adb.htm#ref_911_14">Set_Timeout_Mode</A></span> (<span class="symbol"><A NAME="ref_1123_32" HREF="terminal_interface-curses__adb.htm#ref_911_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1124_32" HREF="terminal_interface-curses__adb.htm#ref_912_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1120_9">Timeout_Mode</A>; + <span class="symbol"><A NAME="ref_1125_32" HREF="terminal_interface-curses__adb.htm#ref_913_32">Amount</A></span> : Natural); <span class="comment"><EM>-- in Milliseconds</EM></span> + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">wtimeout()</A></EM></span> + <span class="comment"><EM>-- AKA: timeout()</EM></span> + <span class="comment"><EM>-- Instead of overloading the semantic of the sign of amount, we</EM></span> + <span class="comment"><EM>-- introduce the Timeout_Mode parameter. This should improve</EM></span> + <span class="comment"><EM>-- readability. For Blocking and Non_Blocking, the Amount is not</EM></span> + <span class="comment"><EM>-- evaluated.</EM></span> + <span class="comment"><EM>-- We do not inline this procedure.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_52">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1135_14" HREF="terminal_interface-curses__adb.htm#ref_932_14">Set_Escape_Timer_Mode</A></span> + (<span class="symbol"><A NAME="ref_1136_7" HREF="terminal_interface-curses__adb.htm#ref_933_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1137_7" HREF="terminal_interface-curses__adb.htm#ref_934_7">Timer_Off</A></span> : Boolean := False); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inopts.3x.html">notimeout()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1135_14">Set_Escape_Timer_Mode</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_outopts.3x.html">curs_outopts.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_53">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1146_14" HREF="terminal_interface-curses__adb.htm#ref_947_14">Set_NL_Mode</A></span> (<span class="symbol"><A NAME="ref_1146_27" HREF="terminal_interface-curses__adb.htm#ref_947_27">SwitchOn</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">nl()</A></EM></span> + <span class="comment"><EM>-- AKA: nonl()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1146_14">Set_NL_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_54">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1152_14" HREF="terminal_interface-curses__adb.htm#ref_966_14">Clear_On_Next_Update</A></span> + (<span class="symbol"><A NAME="ref_1153_7" HREF="terminal_interface-curses__adb.htm#ref_967_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1154_7" HREF="terminal_interface-curses__adb.htm#ref_968_7">Do_Clear</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">clearok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1152_14">Clear_On_Next_Update</A>); + + <span class="comment"><EM>-- <A NAME="AFU_55">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1159_14" HREF="terminal_interface-curses__adb.htm#ref_978_14">Use_Insert_Delete_Line</A></span> + (<span class="symbol"><A NAME="ref_1160_7" HREF="terminal_interface-curses__adb.htm#ref_979_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1161_7" HREF="terminal_interface-curses__adb.htm#ref_980_7">Do_Idl</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idlok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1159_14">Use_Insert_Delete_Line</A>); + + <span class="comment"><EM>-- <A NAME="AFU_56">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1166_14" HREF="terminal_interface-curses__adb.htm#ref_990_14">Use_Insert_Delete_Character</A></span> + (<span class="symbol"><A NAME="ref_1167_7" HREF="terminal_interface-curses__adb.htm#ref_991_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1168_7" HREF="terminal_interface-curses__adb.htm#ref_992_7">Do_Idc</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">idcok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1166_14">Use_Insert_Delete_Character</A>); + + <span class="comment"><EM>-- <A NAME="AFU_57">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1173_14" HREF="terminal_interface-curses__adb.htm#ref_1000_14">Leave_Cursor_After_Update</A></span> + (<span class="symbol"><A NAME="ref_1174_7" HREF="terminal_interface-curses__adb.htm#ref_1001_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1175_7" HREF="terminal_interface-curses__adb.htm#ref_1002_7">Do_Leave</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">leaveok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1173_14">Leave_Cursor_After_Update</A>); + + <span class="comment"><EM>-- <A NAME="AFU_58">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1180_14" HREF="terminal_interface-curses__adb.htm#ref_1012_14">Immediate_Update_Mode</A></span> + (<span class="symbol"><A NAME="ref_1181_7" HREF="terminal_interface-curses__adb.htm#ref_1013_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1182_7" HREF="terminal_interface-curses__adb.htm#ref_1014_7">Mode</A></span> : Boolean := False); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">immedok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1180_14">Immediate_Update_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_59">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1187_14" HREF="terminal_interface-curses__adb.htm#ref_1022_14">Allow_Scrolling</A></span> + (<span class="symbol"><A NAME="ref_1188_7" HREF="terminal_interface-curses__adb.htm#ref_1023_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1189_7" HREF="terminal_interface-curses__adb.htm#ref_1024_7">Mode</A></span> : Boolean := False); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">scrollok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1187_14">Allow_Scrolling</A>); + + <b>function</b> <span class="symbol"><A NAME="ref_1193_13" HREF="terminal_interface-curses__adb.htm#ref_1034_13">Scrolling_Allowed</A></span> (<span class="symbol"><A NAME="ref_1193_32" HREF="terminal_interface-curses__adb.htm#ref_1034_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- There is no such function in the C interface.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1193_13">Scrolling_Allowed</A>); + + <span class="comment"><EM>-- <A NAME="AFU_60">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1198_14" HREF="terminal_interface-curses__adb.htm#ref_1043_14">Set_Scroll_Region</A></span> + (<span class="symbol"><A NAME="ref_1199_7" HREF="terminal_interface-curses__adb.htm#ref_1044_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1200_7" HREF="terminal_interface-curses__adb.htm#ref_1045_7">Top_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1201_7" HREF="terminal_interface-curses__adb.htm#ref_1046_7">Bottom_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_outopts.3x.html">wsetscrreg()</A></EM></span> + <span class="comment"><EM>-- AKA: setscrreg()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1198_14">Set_Scroll_Region</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_refresh.3x.html">curs_refresh.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_61">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1211_14" HREF="terminal_interface-curses__adb.htm#ref_1060_14">Update_Screen</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">doupdate()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1211_14">Update_Screen</A>); + + <span class="comment"><EM>-- <A NAME="AFU_62">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1216_14" HREF="terminal_interface-curses__adb.htm#ref_1070_14">Refresh</A></span> (<span class="symbol"><A NAME="ref_1216_23" HREF="terminal_interface-curses__adb.htm#ref_1070_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wrefresh()</A></EM></span> + <span class="comment"><EM>-- There is an overloaded Refresh for Pads.</EM></span> + <span class="comment"><EM>-- The Inline pragma appears there</EM></span> + <span class="comment"><EM>-- AKA: refresh()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_63">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1223_14" HREF="terminal_interface-curses__adb.htm#ref_1080_14">Refresh_Without_Update</A></span> + (<span class="symbol"><A NAME="ref_1224_7" HREF="terminal_interface-curses__adb.htm#ref_1081_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wnoutrefresh()</A></EM></span> + <span class="comment"><EM>-- There is an overloaded Refresh_Without_Update for Pads.</EM></span> + <span class="comment"><EM>-- The Inline pragma appears there</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_64">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1230_14" HREF="terminal_interface-curses__adb.htm#ref_1091_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1230_22" HREF="terminal_interface-curses__adb.htm#ref_1091_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">redrawwin()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_65">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1234_14" HREF="terminal_interface-curses__adb.htm#ref_1101_14">Redraw</A></span> (<span class="symbol"><A NAME="ref_1234_22" HREF="terminal_interface-curses__adb.htm#ref_1102_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1235_22" HREF="terminal_interface-curses__adb.htm#ref_1103_7">Begin_Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1236_22" HREF="terminal_interface-curses__adb.htm#ref_1104_7">Line_Count</A></span> : Positive); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_refresh.3x.html">wredrawln()</A></EM></span> + <b>pragma</b> Inline (Redraw); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_clear.3x.html">curs_clear.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_66">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1245_14" HREF="terminal_interface-curses__adb.htm#ref_1119_14">Erase</A></span> (<span class="symbol"><A NAME="ref_1245_21" HREF="terminal_interface-curses__adb.htm#ref_1119_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">werase()</A></EM></span> + <span class="comment"><EM>-- AKA: erase()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1245_14">Erase</A>); + + <span class="comment"><EM>-- <A NAME="AFU_67">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1251_14" HREF="terminal_interface-curses__adb.htm#ref_1129_14">Clear</A></span> + (<span class="symbol"><A NAME="ref_1252_7" HREF="terminal_interface-curses__adb.htm#ref_1129_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclear()</A></EM></span> + <span class="comment"><EM>-- AKA: clear()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1251_14">Clear</A>); + + <span class="comment"><EM>-- <A NAME="AFU_68">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1258_14" HREF="terminal_interface-curses__adb.htm#ref_1139_14">Clear_To_End_Of_Screen</A></span> + (<span class="symbol"><A NAME="ref_1259_7" HREF="terminal_interface-curses__adb.htm#ref_1139_38">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtobot()</A></EM></span> + <span class="comment"><EM>-- AKA: clrtobot()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1258_14">Clear_To_End_Of_Screen</A>); + + <span class="comment"><EM>-- <A NAME="AFU_69">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1265_14" HREF="terminal_interface-curses__adb.htm#ref_1149_14">Clear_To_End_Of_Line</A></span> + (<span class="symbol"><A NAME="ref_1266_7" HREF="terminal_interface-curses__adb.htm#ref_1149_36">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_clear.3x.html">wclrtoeol()</A></EM></span> + <span class="comment"><EM>-- AKA: clrtoeol()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1265_14">Clear_To_End_Of_Line</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_bkgd.3x.html">curs_bkgd.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_70">|</A></EM></span> + <span class="comment"><EM>-- TODO: we could have Set_Background(Window; Character_Attribute_Set)</EM></span> + <span class="comment"><EM>-- because in C it is common to see bkgdset(A_BOLD) or</EM></span> + <span class="comment"><EM>-- bkgdset(COLOR_PAIR(n))</EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1279_14" HREF="terminal_interface-curses__adb.htm#ref_1159_14">Set_Background</A></span> + (<span class="symbol"><A NAME="ref_1280_7" HREF="terminal_interface-curses__adb.htm#ref_1160_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1281_7" HREF="terminal_interface-curses__adb.htm#ref_1161_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdset()</A></EM></span> + <span class="comment"><EM>-- AKA: bkgdset()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1279_14">Set_Background</A>); + + <span class="comment"><EM>-- <A NAME="AFU_71">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1287_14" HREF="terminal_interface-curses__adb.htm#ref_1169_14">Change_Background</A></span> + (<span class="symbol"><A NAME="ref_1288_7" HREF="terminal_interface-curses__adb.htm#ref_1170_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1289_7" HREF="terminal_interface-curses__adb.htm#ref_1171_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgd()</A></EM></span> + <span class="comment"><EM>-- AKA: bkgd()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1287_14">Change_Background</A>); + + <span class="comment"><EM>-- <A NAME="AFU_72">|</A></EM></span> + <span class="comment"><EM>-- ? wbkgdget is not listed in curs_bkgd, getbkgd is thpough.</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1296_13" HREF="terminal_interface-curses__adb.htm#ref_1182_13">Get_Background</A></span> (<span class="symbol"><A NAME="ref_1296_29" HREF="terminal_interface-curses__adb.htm#ref_1182_29">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_bkgd.3x.html">wbkgdget()</A></EM></span> + <span class="comment"><EM>-- AKA: bkgdget()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1296_13">Get_Background</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_touch.3x.html">curs_touch.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_73">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1307_14" HREF="terminal_interface-curses__adb.htm#ref_1219_14">Untouch</A></span> (<span class="symbol"><A NAME="ref_1307_23" HREF="terminal_interface-curses__adb.htm#ref_1219_23">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">untouchwin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1307_14">Untouch</A>); + + <span class="comment"><EM>-- <A NAME="AFU_74">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1312_14" HREF="terminal_interface-curses__adb.htm#ref_1209_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1312_21" HREF="terminal_interface-curses__adb.htm#ref_1209_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchwin()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_75">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1316_14" HREF="terminal_interface-curses__adb.htm#ref_1229_14">Touch</A></span> (<span class="symbol"><A NAME="ref_1316_21" HREF="terminal_interface-curses__adb.htm#ref_1229_21">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1317_21" HREF="terminal_interface-curses__adb.htm#ref_1230_21">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1318_21" HREF="terminal_interface-curses__adb.htm#ref_1231_21">Count</A></span> : Positive); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">touchline()</A></EM></span> + <b>pragma</b> Inline (Touch); + + <span class="comment"><EM>-- <A NAME="AFU_76">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1323_14" HREF="terminal_interface-curses__adb.htm#ref_1191_14">Change_Lines_Status</A></span> (<span class="symbol"><A NAME="ref_1323_35" HREF="terminal_interface-curses__adb.htm#ref_1191_35">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1324_35" HREF="terminal_interface-curses__adb.htm#ref_1192_35">Start</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1325_35" HREF="terminal_interface-curses__adb.htm#ref_1193_35">Count</A></span> : Positive; + <span class="symbol"><A NAME="ref_1326_35" HREF="terminal_interface-curses__adb.htm#ref_1194_35">State</A></span> : Boolean); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">wtouchln()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1323_14">Change_Lines_Status</A>); + + <span class="comment"><EM>-- <A NAME="AFU_77">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1331_13" HREF="terminal_interface-curses__adb.htm#ref_1237_13">Is_Touched</A></span> (<span class="symbol"><A NAME="ref_1331_25" HREF="terminal_interface-curses__adb.htm#ref_1238_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1332_25" HREF="terminal_interface-curses__adb.htm#ref_1239_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_linetouched()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_78">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1336_13" HREF="terminal_interface-curses__adb.htm#ref_1251_13">Is_Touched</A></span> (<span class="symbol"><A NAME="ref_1336_25" HREF="terminal_interface-curses__adb.htm#ref_1252_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_touch.3x.html">is_wintouched()</A></EM></span> + <b>pragma</b> Inline (Is_Touched); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_overlay.3x.html">curs_overlay.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_79">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1345_14" HREF="terminal_interface-curses__adb.htm#ref_1264_14">Copy</A></span> + (<span class="symbol"><A NAME="ref_1346_7" HREF="terminal_interface-curses__adb.htm#ref_1265_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1347_7" HREF="terminal_interface-curses__adb.htm#ref_1266_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1348_7" HREF="terminal_interface-curses__adb.htm#ref_1267_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1349_7" HREF="terminal_interface-curses__adb.htm#ref_1268_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1350_7" HREF="terminal_interface-curses__adb.htm#ref_1269_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1351_7" HREF="terminal_interface-curses__adb.htm#ref_1270_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1352_7" HREF="terminal_interface-curses__adb.htm#ref_1271_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1353_7" HREF="terminal_interface-curses__adb.htm#ref_1272_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1354_7" HREF="terminal_interface-curses__adb.htm#ref_1273_7">Non_Destructive_Mode</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">copywin()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1345_14">Copy</A>); + + <span class="comment"><EM>-- <A NAME="AFU_80">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1359_14" HREF="terminal_interface-curses__adb.htm#ref_1301_14">Overwrite</A></span> (<span class="symbol"><A NAME="ref_1359_25" HREF="terminal_interface-curses__adb.htm#ref_1302_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1360_25" HREF="terminal_interface-curses__adb.htm#ref_1303_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overwrite()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1359_14">Overwrite</A>); + + <span class="comment"><EM>-- <A NAME="AFU_81">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1365_14" HREF="terminal_interface-curses__adb.htm#ref_1313_14">Overlay</A></span> (<span class="symbol"><A NAME="ref_1365_23" HREF="terminal_interface-curses__adb.htm#ref_1314_7">Source_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1366_23" HREF="terminal_interface-curses__adb.htm#ref_1315_7">Destination_Window</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_overlay.3x.html">overlay()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1365_14">Overlay</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_deleteln.3x.html">curs_deleteln.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_82">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1375_14" HREF="terminal_interface-curses__adb.htm#ref_1326_14">Insert_Delete_Lines</A></span> + (<span class="symbol"><A NAME="ref_1376_7" HREF="terminal_interface-curses__adb.htm#ref_1327_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1377_7" HREF="terminal_interface-curses__adb.htm#ref_1328_7">Lines</A></span> : Integer := 1); <span class="comment"><EM>-- default is to insert one line above</EM></span> + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsdelln()</A></EM></span> + <span class="comment"><EM>-- AKA: insdelln()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1375_14">Insert_Delete_Lines</A>); + + <span class="comment"><EM>-- <A NAME="AFU_83">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1383_14" HREF="terminal_interface-curses__adb.htm#ref_1338_14">Delete_Line</A></span> (<span class="symbol"><A NAME="ref_1383_27" HREF="terminal_interface-curses__adb.htm#ref_1338_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">wdeleteln()</A></EM></span> + <span class="comment"><EM>-- AKA: deleteln()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1383_14">Delete_Line</A>); + + <span class="comment"><EM>-- <A NAME="AFU_84">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1389_14" HREF="terminal_interface-curses__adb.htm#ref_1344_14">Insert_Line</A></span> (<span class="symbol"><A NAME="ref_1389_27" HREF="terminal_interface-curses__adb.htm#ref_1344_27">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_deleteln.3x.html">winsertln()</A></EM></span> + <span class="comment"><EM>-- AKA: insertln()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1389_14">Insert_Line</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_getyx.3x.html">curs_getyx.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_85">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1399_14" HREF="terminal_interface-curses__adb.htm#ref_1351_14">Get_Size</A></span> + (<span class="symbol"><A NAME="ref_1400_7" HREF="terminal_interface-curses__adb.htm#ref_1352_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1401_7" HREF="terminal_interface-curses__adb.htm#ref_1353_7">Number_Of_Lines</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_1402_7" HREF="terminal_interface-curses__adb.htm#ref_1354_7">Number_Of_Columns</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getmaxyx()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1399_14">Get_Size</A>); + + <span class="comment"><EM>-- <A NAME="AFU_86">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1407_14" HREF="terminal_interface-curses__adb.htm#ref_1369_14">Get_Window_Position</A></span> + (<span class="symbol"><A NAME="ref_1408_7" HREF="terminal_interface-curses__adb.htm#ref_1370_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1409_7" HREF="terminal_interface-curses__adb.htm#ref_1371_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1410_7" HREF="terminal_interface-curses__adb.htm#ref_1372_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getbegyx()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1407_14">Get_Window_Position</A>); + + <span class="comment"><EM>-- <A NAME="AFU_87">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1415_14" HREF="terminal_interface-curses__adb.htm#ref_1387_14">Get_Cursor_Position</A></span> + (<span class="symbol"><A NAME="ref_1416_7" HREF="terminal_interface-curses__adb.htm#ref_1388_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1417_7" HREF="terminal_interface-curses__adb.htm#ref_1389_7">Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1418_7" HREF="terminal_interface-curses__adb.htm#ref_1390_7">Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getyx()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1415_14">Get_Cursor_Position</A>); + + <span class="comment"><EM>-- <A NAME="AFU_88">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1423_14" HREF="terminal_interface-curses__adb.htm#ref_1405_14">Get_Origin_Relative_To_Parent</A></span> + (<span class="symbol"><A NAME="ref_1424_7" HREF="terminal_interface-curses__adb.htm#ref_1406_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1425_7" HREF="terminal_interface-curses__adb.htm#ref_1407_7">Top_Left_Line</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1426_7" HREF="terminal_interface-curses__adb.htm#ref_1408_7">Top_Left_Column</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1427_7" HREF="terminal_interface-curses__adb.htm#ref_1409_7">Is_Not_A_Subwindow</A></span> : <b>out</b> Boolean); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getyx.3x.html">getparyx()</A></EM></span> + <span class="comment"><EM>-- Instead of placing -1 in the coordinates as return, we use a Boolean</EM></span> + <span class="comment"><EM>-- to return the info that the window has no parent.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1423_14">Get_Origin_Relative_To_Parent</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_pad.3x.html">curs_pad.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_89">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1438_13" HREF="terminal_interface-curses__adb.htm#ref_1431_13">New_Pad</A></span> (<span class="symbol"><A NAME="ref_1438_22" HREF="terminal_interface-curses__adb.htm#ref_1431_22">Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_1439_22" HREF="terminal_interface-curses__adb.htm#ref_1432_22">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">newpad()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1438_13">New_Pad</A>); + + <span class="comment"><EM>-- <A NAME="AFU_90">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1444_13" HREF="terminal_interface-curses__adb.htm#ref_1446_13">Sub_Pad</A></span> + (<span class="symbol"><A NAME="ref_1445_7" HREF="terminal_interface-curses__adb.htm#ref_1447_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1446_7" HREF="terminal_interface-curses__adb.htm#ref_1448_7">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_1447_7" HREF="terminal_interface-curses__adb.htm#ref_1449_7">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>; + <span class="symbol"><A NAME="ref_1448_7" HREF="terminal_interface-curses__adb.htm#ref_1450_7">First_Line_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1449_7" HREF="terminal_interface-curses__adb.htm#ref_1451_7">First_Column_Position</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">subpad()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1444_13">Sub_Pad</A>); + + <span class="comment"><EM>-- <A NAME="AFU_91">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1454_14" HREF="terminal_interface-curses__adb.htm#ref_1474_14">Refresh</A></span> + (<span class="symbol"><A NAME="ref_1455_7" HREF="terminal_interface-curses__adb.htm#ref_1475_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1456_7" HREF="terminal_interface-curses__adb.htm#ref_1476_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1457_7" HREF="terminal_interface-curses__adb.htm#ref_1477_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1458_7" HREF="terminal_interface-curses__adb.htm#ref_1478_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1459_7" HREF="terminal_interface-curses__adb.htm#ref_1479_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1460_7" HREF="terminal_interface-curses__adb.htm#ref_1480_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1461_7" HREF="terminal_interface-curses__adb.htm#ref_1481_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">prefresh()</A></EM></span> + <b>pragma</b> Inline (Refresh); + + <span class="comment"><EM>-- <A NAME="AFU_92">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1466_14" HREF="terminal_interface-curses__adb.htm#ref_1505_14">Refresh_Without_Update</A></span> + (<span class="symbol"><A NAME="ref_1467_7" HREF="terminal_interface-curses__adb.htm#ref_1506_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1468_7" HREF="terminal_interface-curses__adb.htm#ref_1507_7">Source_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1469_7" HREF="terminal_interface-curses__adb.htm#ref_1508_7">Source_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1470_7" HREF="terminal_interface-curses__adb.htm#ref_1509_7">Destination_Top_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1471_7" HREF="terminal_interface-curses__adb.htm#ref_1510_7">Destination_Left_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1472_7" HREF="terminal_interface-curses__adb.htm#ref_1511_7">Destination_Bottom_Row</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1473_7" HREF="terminal_interface-curses__adb.htm#ref_1512_7">Destination_Right_Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pnoutrefresh()</A></EM></span> + <b>pragma</b> Inline (Refresh_Without_Update); + + <span class="comment"><EM>-- <A NAME="AFU_93">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1478_14" HREF="terminal_interface-curses__adb.htm#ref_1536_14">Add_Character_To_Pad_And_Echo_It</A></span> + (<span class="symbol"><A NAME="ref_1479_7" HREF="terminal_interface-curses__adb.htm#ref_1537_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1480_7" HREF="terminal_interface-curses__adb.htm#ref_1538_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_pad.3x.html">pechochar()</A></EM></span> + + <b>procedure</b> <span class="symbol"><A NAME="ref_1483_14" HREF="terminal_interface-curses__adb.htm#ref_1549_14">Add_Character_To_Pad_And_Echo_It</A></span> + (<span class="symbol"><A NAME="ref_1484_7" HREF="terminal_interface-curses__adb.htm#ref_1550_7">Pad</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1485_7" HREF="terminal_interface-curses__adb.htm#ref_1551_7">Ch</A></span> : Character); + <b>pragma</b> Inline (Add_Character_To_Pad_And_Echo_It); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_scroll.3x.html">curs_scroll.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_94">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1493_14" HREF="terminal_interface-curses__adb.htm#ref_1561_14">Scroll</A></span> (<span class="symbol"><A NAME="ref_1493_22" HREF="terminal_interface-curses__adb.htm#ref_1561_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1494_22" HREF="terminal_interface-curses__adb.htm#ref_1562_22">Amount</A></span> : Integer := 1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_scroll.3x.html">wscrl()</A></EM></span> + <span class="comment"><EM>-- AKA: scroll()</EM></span> + <span class="comment"><EM>-- AKA: scrl()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1493_14">Scroll</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_delch.3x.html">curs_delch.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_95">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1505_14" HREF="terminal_interface-curses__adb.htm#ref_1574_14">Delete_Character</A></span> (<span class="symbol"><A NAME="ref_1505_32" HREF="terminal_interface-curses__adb.htm#ref_1574_32">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">wdelch()</A></EM></span> + <span class="comment"><EM>-- AKA: delch()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_96">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1510_14" HREF="terminal_interface-curses__adb.htm#ref_1584_14">Delete_Character</A></span> + (<span class="symbol"><A NAME="ref_1511_7" HREF="terminal_interface-curses__adb.htm#ref_1585_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1512_7" HREF="terminal_interface-curses__adb.htm#ref_1586_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1513_7" HREF="terminal_interface-curses__adb.htm#ref_1587_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_delch.3x.html">mvwdelch()</A></EM></span> + <span class="comment"><EM>-- AKA: mvdelch()</EM></span> + <b>pragma</b> Inline (Delete_Character); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_inch.3x.html">curs_inch.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_97">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1523_13" HREF="terminal_interface-curses__adb.htm#ref_1599_13">Peek</A></span> (<span class="symbol"><A NAME="ref_1523_19" HREF="terminal_interface-curses__adb.htm#ref_1599_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>) + <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="comment"><EM>-- AKA: inch()</EM></span> + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">winch()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_98">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1529_13" HREF="terminal_interface-curses__adb.htm#ref_1608_13">Peek</A></span> + (<span class="symbol"><A NAME="ref_1530_7" HREF="terminal_interface-curses__adb.htm#ref_1609_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1531_7" HREF="terminal_interface-curses__adb.htm#ref_1610_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1532_7" HREF="terminal_interface-curses__adb.htm#ref_1611_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>) <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inch.3x.html">mvwinch()</A></EM></span> + <span class="comment"><EM>-- AKA: mvinch()</EM></span> + <span class="comment"><EM>-- More Peek's follow, pragma Inline appears later.</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_insch.3x.html">curs_insch.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_99">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1542_14" HREF="terminal_interface-curses__adb.htm#ref_1621_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1542_22" HREF="terminal_interface-curses__adb.htm#ref_1621_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1543_22" HREF="terminal_interface-curses__adb.htm#ref_1622_22">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_insch.3x.html">winsch()</A></EM></span> + <span class="comment"><EM>-- AKA: insch()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_100">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1548_14" HREF="terminal_interface-curses__adb.htm#ref_1632_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1548_22" HREF="terminal_interface-curses__adb.htm#ref_1633_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1549_22" HREF="terminal_interface-curses__adb.htm#ref_1634_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1550_22" HREF="terminal_interface-curses__adb.htm#ref_1635_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1551_22" HREF="terminal_interface-curses__adb.htm#ref_1636_7">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_insch.3x.html">mvwinsch()</A></EM></span> + <span class="comment"><EM>-- AKA: mvinsch()</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_insstr.3x.html">curs_insstr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_101">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1560_14" HREF="terminal_interface-curses__adb.htm#ref_1653_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1560_22" HREF="terminal_interface-curses__adb.htm#ref_1653_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1561_22" HREF="terminal_interface-curses__adb.htm#ref_1654_22">Str</A></span> : String; + <span class="symbol"><A NAME="ref_1562_22" HREF="terminal_interface-curses__adb.htm#ref_1655_22">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_insstr.3x.html">winsnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: winsstr()</EM></span> + <span class="comment"><EM>-- AKA: insnstr()</EM></span> + <span class="comment"><EM>-- AKA: insstr()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_102">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1569_14" HREF="terminal_interface-curses__adb.htm#ref_1671_14">Insert</A></span> (<span class="symbol"><A NAME="ref_1569_22" HREF="terminal_interface-curses__adb.htm#ref_1672_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1570_22" HREF="terminal_interface-curses__adb.htm#ref_1673_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1571_22" HREF="terminal_interface-curses__adb.htm#ref_1674_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1572_22" HREF="terminal_interface-curses__adb.htm#ref_1675_7">Str</A></span> : String; + <span class="symbol"><A NAME="ref_1573_22" HREF="terminal_interface-curses__adb.htm#ref_1676_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_insstr.3x.html">mvwinsnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: mvwinsstr()</EM></span> + <span class="comment"><EM>-- AKA: mvinsnstr()</EM></span> + <span class="comment"><EM>-- AKA: mvinsstr()</EM></span> + <b>pragma</b> Inline (Insert); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_instr.3x.html">curs_instr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_103">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1585_14" HREF="terminal_interface-curses__adb.htm#ref_1696_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1585_20" HREF="terminal_interface-curses__adb.htm#ref_1696_20">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1586_20" HREF="terminal_interface-curses__adb.htm#ref_1697_20">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1587_20" HREF="terminal_interface-curses__adb.htm#ref_1698_20">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">winnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: winstr()</EM></span> + <span class="comment"><EM>-- AKA: innstr()</EM></span> + <span class="comment"><EM>-- AKA: instr()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_104">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1594_14" HREF="terminal_interface-curses__adb.htm#ref_1725_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1594_20" HREF="terminal_interface-curses__adb.htm#ref_1726_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1595_20" HREF="terminal_interface-curses__adb.htm#ref_1727_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1596_20" HREF="terminal_interface-curses__adb.htm#ref_1728_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1597_20" HREF="terminal_interface-curses__adb.htm#ref_1729_7">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1598_20" HREF="terminal_interface-curses__adb.htm#ref_1730_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_instr.3x.html">mvwinnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: mvwinstr()</EM></span> + <span class="comment"><EM>-- AKA: mvinnstr()</EM></span> + <span class="comment"><EM>-- AKA: mvinstr()</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_inchstr.3x.html">curs_inchstr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_105">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1609_14" HREF="terminal_interface-curses__adb.htm#ref_1737_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1609_20" HREF="terminal_interface-curses__adb.htm#ref_1738_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1610_20" HREF="terminal_interface-curses__adb.htm#ref_1739_7">Str</A></span> : <b>out</b> Attributed_String; + <span class="symbol"><A NAME="ref_1611_20" HREF="terminal_interface-curses__adb.htm#ref_1740_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">winchnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: winchstr()</EM></span> + <span class="comment"><EM>-- AKA: inchnstr()</EM></span> + <span class="comment"><EM>-- AKA: inchstr()</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_106">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1618_14" HREF="terminal_interface-curses__adb.htm#ref_1774_14">Peek</A></span> (<span class="symbol"><A NAME="ref_1618_20" HREF="terminal_interface-curses__adb.htm#ref_1775_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1619_20" HREF="terminal_interface-curses__adb.htm#ref_1776_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1620_20" HREF="terminal_interface-curses__adb.htm#ref_1777_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1621_20" HREF="terminal_interface-curses__adb.htm#ref_1778_7">Str</A></span> : <b>out</b> Attributed_String; + <span class="symbol"><A NAME="ref_1622_20" HREF="terminal_interface-curses__adb.htm#ref_1779_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_inchstr.3x.html">mvwinchnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: mvwinchstr()</EM></span> + <span class="comment"><EM>-- AKA: mvinchnstr()</EM></span> + <span class="comment"><EM>-- AKA: mvinchstr()</EM></span> + <span class="comment"><EM>-- We do not inline the Peek procedures</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_getstr.3x.html">curs_getstr.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_107">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1634_14" HREF="terminal_interface-curses__adb.htm#ref_1786_14">Get</A></span> (<span class="symbol"><A NAME="ref_1634_19" HREF="terminal_interface-curses__adb.htm#ref_1786_19">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1635_19" HREF="terminal_interface-curses__adb.htm#ref_1787_19">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1636_19" HREF="terminal_interface-curses__adb.htm#ref_1788_19">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">wgetnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: wgetstr()</EM></span> + <span class="comment"><EM>-- AKA: getnstr()</EM></span> + <span class="comment"><EM>-- AKA: getstr()</EM></span> + <span class="comment"><EM>-- actually getstr is not supported because that results in buffer</EM></span> + <span class="comment"><EM>-- overflows.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_108">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1645_14" HREF="terminal_interface-curses__adb.htm#ref_1815_14">Get</A></span> (<span class="symbol"><A NAME="ref_1645_19" HREF="terminal_interface-curses__adb.htm#ref_1816_7">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1646_19" HREF="terminal_interface-curses__adb.htm#ref_1817_7">Line</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1647_19" HREF="terminal_interface-curses__adb.htm#ref_1818_7">Column</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1648_19" HREF="terminal_interface-curses__adb.htm#ref_1819_7">Str</A></span> : <b>out</b> String; + <span class="symbol"><A NAME="ref_1649_19" HREF="terminal_interface-curses__adb.htm#ref_1820_7">Len</A></span> : Integer := -1); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_getstr.3x.html">mvwgetnstr()</A></EM></span> + <span class="comment"><EM>-- AKA: mvwgetstr()</EM></span> + <span class="comment"><EM>-- AKA: mvgetnstr()</EM></span> + <span class="comment"><EM>-- AKA: mvgetstr()</EM></span> + <span class="comment"><EM>-- Get is not inlined</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_slk.3x.html">curs_slk.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- Not Implemented: slk_attr_on, slk_attr_off, slk_attr_set</EM></span> + + <b>type</b> <span class="symbol"><A NAME="ref_1662_9">Soft_Label_Key_Format</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1662_35">Three_Two_Three</A></span>, + <span class="symbol"><A NAME="ref_1663_35">Four_Four</A></span>, + <span class="symbol"><A NAME="ref_1664_35">PC_Style</A></span>, <span class="comment"><EM>-- ncurses specific</EM></span> + <span class="symbol"><A NAME="ref_1665_35">PC_Style_With_Index</A></span>); <span class="comment"><EM>-- "</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_1666_9">Label_Number</A></span> <b>is</b> <b>new</b> Positive <b>range</b> 1 .. 12; + <b>type</b> <span class="symbol"><A NAME="ref_1667_9">Label_Justification</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1667_33">Left</A></span>, <span class="symbol"><A NAME="ref_1667_39">Centered</A></span>, <span class="symbol"><A NAME="ref_1667_49">Right</A></span>); + + <span class="comment"><EM>-- <A NAME="AFU_109">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1670_14" HREF="terminal_interface-curses__adb.htm#ref_1827_14">Init_Soft_Label_Keys</A></span> + (<span class="symbol"><A NAME="ref_1671_7" HREF="terminal_interface-curses__adb.htm#ref_1828_7">Format</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1662_9">Soft_Label_Key_Format</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1662_35">Three_Two_Three</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_init()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1670_14">Init_Soft_Label_Keys</A>); + + <span class="comment"><EM>-- <A NAME="AFU_110">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1676_14" HREF="terminal_interface-curses__adb.htm#ref_1838_14">Set_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1676_34" HREF="terminal_interface-curses__adb.htm#ref_1838_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Number</A>; + <span class="symbol"><A NAME="ref_1677_34" HREF="terminal_interface-curses__adb.htm#ref_1839_34">Text</A></span> : String; + <span class="symbol"><A NAME="ref_1678_34" HREF="terminal_interface-curses__adb.htm#ref_1840_34">Fmt</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1667_9">Label_Justification</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1667_33">Left</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_set()</A></EM></span> + <span class="comment"><EM>-- We do not inline this procedure</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_111">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1683_14" HREF="terminal_interface-curses__adb.htm#ref_1858_14">Refresh_Soft_Label_Keys</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_refresh()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1683_14">Refresh_Soft_Label_Keys</A>); + + <span class="comment"><EM>-- <A NAME="AFU_112">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1688_14" HREF="terminal_interface-curses__adb.htm#ref_1868_14">Refresh_Soft_Label_Keys_Without_Update</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_noutrefresh()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1688_14">Refresh_Soft_Label_Keys_Without_Update</A>); + + <span class="comment"><EM>-- <A NAME="AFU_113">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1693_14" HREF="terminal_interface-curses__adb.htm#ref_1878_14">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1693_34" HREF="terminal_interface-curses__adb.htm#ref_1878_34">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Number</A>; + <span class="symbol"><A NAME="ref_1694_34" HREF="terminal_interface-curses__adb.htm#ref_1879_34">Text</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_114">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1698_13" HREF="terminal_interface-curses__adb.htm#ref_1887_13">Get_Soft_Label_Key</A></span> (<span class="symbol"><A NAME="ref_1698_33" HREF="terminal_interface-curses__adb.htm#ref_1887_33">Label</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1666_9">Label_Number</A>) <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_label()</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Get_Soft_Label_Key); + + <span class="comment"><EM>-- <A NAME="AFU_115">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1704_14" HREF="terminal_interface-curses__adb.htm#ref_1895_14">Clear_Soft_Label_Keys</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_clear()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1704_14">Clear_Soft_Label_Keys</A>); + + <span class="comment"><EM>-- <A NAME="AFU_116">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1709_14" HREF="terminal_interface-curses__adb.htm#ref_1905_14">Restore_Soft_Label_Keys</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_restore()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1709_14">Restore_Soft_Label_Keys</A>); + + <span class="comment"><EM>-- <A NAME="AFU_117">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1714_14" HREF="terminal_interface-curses__adb.htm#ref_1915_14">Touch_Soft_Label_Keys</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_touch()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1714_14">Touch_Soft_Label_Keys</A>); + + <span class="comment"><EM>-- <A NAME="AFU_118">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1719_14" HREF="terminal_interface-curses__adb.htm#ref_1925_14">Switch_Soft_Label_Key_Attributes</A></span> + (<span class="symbol"><A NAME="ref_1720_7" HREF="terminal_interface-curses__adb.htm#ref_1926_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="symbol"><A NAME="ref_1721_7" HREF="terminal_interface-curses__adb.htm#ref_1927_7">On</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attron()</A></EM></span> + <span class="comment"><EM>-- AKA: slk_attroff()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1719_14">Switch_Soft_Label_Key_Attributes</A>); + + <span class="comment"><EM>-- <A NAME="AFU_119">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1727_14" HREF="terminal_interface-curses__adb.htm#ref_1949_14">Set_Soft_Label_Key_Attributes</A></span> + (<span class="symbol"><A NAME="ref_1728_7" HREF="terminal_interface-curses__adb.htm#ref_1950_7">Attr</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A> := <A HREF="terminal_interface-curses__ads.htm#ref_486_4">Normal_Video</A>; + <span class="symbol"><A NAME="ref_1729_7" HREF="terminal_interface-curses__adb.htm#ref_1951_7">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A> := <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>'First); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attrset()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1727_14">Set_Soft_Label_Key_Attributes</A>); + + <span class="comment"><EM>-- <A NAME="AFU_120">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1734_13" HREF="terminal_interface-curses__adb.htm#ref_1965_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_121">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1738_13" HREF="terminal_interface-curses__adb.htm#ref_1975_13">Get_Soft_Label_Key_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_attr()</A></EM></span> + <b>pragma</b> Inline (Get_Soft_Label_Key_Attributes); + + <span class="comment"><EM>-- <A NAME="AFU_122">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1743_14" HREF="terminal_interface-curses__adb.htm#ref_1985_14">Set_Soft_Label_Key_Color</A></span> (<span class="symbol"><A NAME="ref_1743_40" HREF="terminal_interface-curses__adb.htm#ref_1985_40">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_slk.3x.html">slk_color()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1743_14">Set_Soft_Label_Key_Color</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/keybound.3x.html">keybound.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not Implemented: keybound</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/keyok.3x.html">keyok.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_123">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1757_14" HREF="terminal_interface-curses__adb.htm#ref_1996_14">Enable_Key</A></span> (<span class="symbol"><A NAME="ref_1757_26" HREF="terminal_interface-curses__adb.htm#ref_1996_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>; + <span class="symbol"><A NAME="ref_1758_26" HREF="terminal_interface-curses__adb.htm#ref_1997_26">Enable</A></span> : Boolean := True); + <span class="comment"><EM>-- AKA: <A HREF="../man/keyok.3x.html">keyok()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1757_14">Enable_Key</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/define_key.3x.html">define_key.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_124">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1767_14" HREF="terminal_interface-curses__adb.htm#ref_2010_14">Define_Key</A></span> (<span class="symbol"><A NAME="ref_1767_26" HREF="terminal_interface-curses__adb.htm#ref_2010_26">Definition</A></span> : String; + <span class="symbol"><A NAME="ref_1768_26" HREF="terminal_interface-curses__adb.htm#ref_2011_26">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_77_12">Special_Key_Code</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/define_key.3x.html">define_key()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1767_14">Define_Key</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_util.3x.html">curs_util.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- | Not implemented : filter, use_env</EM></span> + <span class="comment"><EM>-- | putwin, getwin are in the child package PutWin</EM></span> + <span class="comment"><EM>--</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_125">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1781_14" HREF="terminal_interface-curses__adb.htm#ref_90_14">Key_Name</A></span> (<span class="symbol"><A NAME="ref_1781_24" HREF="terminal_interface-curses__adb.htm#ref_90_24">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>; + <span class="symbol"><A NAME="ref_1782_24" HREF="terminal_interface-curses__adb.htm#ref_91_24">Name</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></span> + <span class="comment"><EM>-- The external name for a real keystroke.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_126">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1787_13" HREF="terminal_interface-curses__adb.htm#ref_62_13">Key_Name</A></span> (<span class="symbol"><A NAME="ref_1787_23" HREF="terminal_interface-curses__adb.htm#ref_62_23">Key</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_72_12">Real_Key_Code</A>) <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">keyname()</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <span class="comment"><EM>-- We do not inline this routine</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_127">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1793_14" HREF="terminal_interface-curses__adb.htm#ref_2026_14">Un_Control</A></span> (<span class="symbol"><A NAME="ref_1793_26" HREF="terminal_interface-curses__adb.htm#ref_2026_26">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>; + <span class="symbol"><A NAME="ref_1794_26" HREF="terminal_interface-curses__adb.htm#ref_2027_26">Str</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_128">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1798_13" HREF="terminal_interface-curses__adb.htm#ref_2035_13">Un_Control</A></span> (<span class="symbol"><A NAME="ref_1798_25" HREF="terminal_interface-curses__adb.htm#ref_2035_25">Ch</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_488_9">Attributed_Character</A>) <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">unctrl()</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Un_Control); + + <span class="comment"><EM>-- <A NAME="AFU_129">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1804_14" HREF="terminal_interface-curses__adb.htm#ref_2043_14">Delay_Output</A></span> (<span class="symbol"><A NAME="ref_1804_28" HREF="terminal_interface-curses__adb.htm#ref_2043_28">Msecs</A></span> : Natural); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">delay_output()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1804_14">Delay_Output</A>); + + <span class="comment"><EM>-- <A NAME="AFU_130">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1809_14" HREF="terminal_interface-curses__adb.htm#ref_2053_14">Flush_Input</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_util.3x.html">flushinp()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1809_14">Flush_Input</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_termattrs.3x.html">curs_termattrs.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_131">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1818_13" HREF="terminal_interface-curses__adb.htm#ref_2063_13">Baudrate</A></span> <b>return</b> Natural; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">baudrate()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1818_13">Baudrate</A>); + + <span class="comment"><EM>-- <A NAME="AFU_132">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1823_13" HREF="terminal_interface-curses__adb.htm#ref_2071_13">Erase_Character</A></span> <b>return</b> Character; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">erasechar()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1823_13">Erase_Character</A>); + + <span class="comment"><EM>-- <A NAME="AFU_133">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1828_13" HREF="terminal_interface-curses__adb.htm#ref_2079_13">Kill_Character</A></span> <b>return</b> Character; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">killchar()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1828_13">Kill_Character</A>); + + <span class="comment"><EM>-- <A NAME="AFU_134">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1833_13" HREF="terminal_interface-curses__adb.htm#ref_2087_13">Has_Insert_Character</A></span> <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_ic()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1833_13">Has_Insert_Character</A>); + + <span class="comment"><EM>-- <A NAME="AFU_135">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1838_13" HREF="terminal_interface-curses__adb.htm#ref_2099_13">Has_Insert_Line</A></span> <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">has_il()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1838_13">Has_Insert_Line</A>); + + <span class="comment"><EM>-- <A NAME="AFU_136">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1843_13" HREF="terminal_interface-curses__adb.htm#ref_2111_13">Supported_Attributes</A></span> <b>return</b> <A HREF="terminal_interface-curses__ads.htm#ref_418_9">Character_Attribute_Set</A>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termattrs()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1843_13">Supported_Attributes</A>); + + <span class="comment"><EM>-- <A NAME="AFU_137">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1848_14" HREF="terminal_interface-curses__adb.htm#ref_2121_14">Long_Name</A></span> (<span class="symbol"><A NAME="ref_1848_25" HREF="terminal_interface-curses__adb.htm#ref_2121_25">Name</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_138">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1852_13" HREF="terminal_interface-curses__adb.htm#ref_2129_13">Long_Name</A></span> <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">longname()</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Long_Name); + + <span class="comment"><EM>-- <A NAME="AFU_139">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1858_14" HREF="terminal_interface-curses__adb.htm#ref_2137_14">Terminal_Name</A></span> (<span class="symbol"><A NAME="ref_1858_29" HREF="terminal_interface-curses__adb.htm#ref_2137_29">Name</A></span> : <b>out</b> String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_140">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1862_13" HREF="terminal_interface-curses__adb.htm#ref_2145_13">Terminal_Name</A></span> <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_termattrs.3x.html">termname()</A></EM></span> + <span class="comment"><EM>-- Same as function</EM></span> + <b>pragma</b> Inline (Terminal_Name); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_color.3x.html">curs_color.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- COLOR_PAIR</EM></span> + <span class="comment"><EM>-- COLOR_PAIR(n) in C is the same as</EM></span> + <span class="comment"><EM>-- Attributed_Character(Ch =&gt; Nul, Color =&gt; n, Attr =&gt; Normal_Video)</EM></span> + <span class="comment"><EM>-- In C you often see something like c = c | COLOR_PAIR(n);</EM></span> + <span class="comment"><EM>-- This is equivalent to c.Color := n;</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_141">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1878_14">Start_Color</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">start_color()</A></EM></span> + <b>pragma</b> Import (C, Start_Color, "start_color"); + + <span class="comment"><EM>-- <A NAME="AFU_142">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1883_14" HREF="terminal_interface-curses__adb.htm#ref_2153_14">Init_Pair</A></span> (<span class="symbol"><A NAME="ref_1883_25" HREF="terminal_interface-curses__adb.htm#ref_2153_25">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_412_12">Redefinable_Color_Pair</A>; + <span class="symbol"><A NAME="ref_1884_25" HREF="terminal_interface-curses__adb.htm#ref_2154_25">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_1885_25" HREF="terminal_interface-curses__adb.htm#ref_2155_25">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_pair()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1883_14">Init_Pair</A>); + + <span class="comment"><EM>-- <A NAME="AFU_143">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1890_14" HREF="terminal_interface-curses__adb.htm#ref_2177_14">Pair_Content</A></span> (<span class="symbol"><A NAME="ref_1890_28" HREF="terminal_interface-curses__adb.htm#ref_2177_28">Pair</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_410_9">Color_Pair</A>; + <span class="symbol"><A NAME="ref_1891_28" HREF="terminal_interface-curses__adb.htm#ref_2178_28">Fore</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_1892_28" HREF="terminal_interface-curses__adb.htm#ref_2179_28">Back</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">pair_content()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1890_14">Pair_Content</A>); + + <span class="comment"><EM>-- <A NAME="AFU_144">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1897_13" HREF="terminal_interface-curses__adb.htm#ref_2197_13">Has_Colors</A></span> <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">has_colors()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1897_13">Has_Colors</A>); + + <span class="comment"><EM>-- <A NAME="AFU_145">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1902_14" HREF="terminal_interface-curses__adb.htm#ref_2209_14">Init_Color</A></span> (<span class="symbol"><A NAME="ref_1902_26" HREF="terminal_interface-curses__adb.htm#ref_2209_26">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_1903_26" HREF="terminal_interface-curses__adb.htm#ref_2210_26">Red</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_1904_26" HREF="terminal_interface-curses__adb.htm#ref_2211_26">Green</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_1905_26" HREF="terminal_interface-curses__adb.htm#ref_2212_26">Blue</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">init_color()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1902_14">Init_Color</A>); + + <span class="comment"><EM>-- <A NAME="AFU_146">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_1910_13" HREF="terminal_interface-curses__adb.htm#ref_2227_13">Can_Change_Color</A></span> <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">can_change_color()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1910_13">Can_Change_Color</A>); + + <span class="comment"><EM>-- <A NAME="AFU_147">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1915_14" HREF="terminal_interface-curses__adb.htm#ref_2239_14">Color_Content</A></span> (<span class="symbol"><A NAME="ref_1915_29" HREF="terminal_interface-curses__adb.htm#ref_2239_29">Color</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A>; + <span class="symbol"><A NAME="ref_1916_29" HREF="terminal_interface-curses__adb.htm#ref_2240_29">Red</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_1917_29" HREF="terminal_interface-curses__adb.htm#ref_2241_29">Green</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>; + <span class="symbol"><A NAME="ref_1918_29" HREF="terminal_interface-curses__adb.htm#ref_2242_29">Blue</A></span> : <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_406_9">RGB_Value</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_color.3x.html">color_content()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1915_14">Color_Content</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_kernel.3x.html">curs_kernel.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Not implemented: getsyx, setsyx</EM></span> + <span class="comment"><EM>--</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_1927_9">Curses_Mode</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1927_25">Curses</A></span>, <span class="symbol"><A NAME="ref_1927_33">Shell</A></span>); + + <span class="comment"><EM>-- <A NAME="AFU_148">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1930_14" HREF="terminal_interface-curses__adb.htm#ref_2264_14">Save_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_1930_32" HREF="terminal_interface-curses__adb.htm#ref_2264_32">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1927_9">Curses_Mode</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">def_prog_mode()</A></EM></span> + <span class="comment"><EM>-- AKA: def_shell_mode()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1930_14">Save_Curses_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_149">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1936_14" HREF="terminal_interface-curses__adb.htm#ref_2282_14">Reset_Curses_Mode</A></span> (<span class="symbol"><A NAME="ref_1936_33" HREF="terminal_interface-curses__adb.htm#ref_2282_33">Mode</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1927_9">Curses_Mode</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">reset_prog_mode()</A></EM></span> + <span class="comment"><EM>-- AKA: reset_shell_mode()</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1936_14">Reset_Curses_Mode</A>); + + <span class="comment"><EM>-- <A NAME="AFU_150">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1942_14" HREF="terminal_interface-curses__adb.htm#ref_2300_14">Save_Terminal_State</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">savetty()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1942_14">Save_Terminal_State</A>); + + <span class="comment"><EM>-- <A NAME="AFU_151">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1947_14" HREF="terminal_interface-curses__adb.htm#ref_2310_14">Reset_Terminal_State</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">resetty();</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1947_14">Reset_Terminal_State</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_1951_9">Stdscr_Init_Proc</A></span> <b>is</b> <b>access</b> + <b>function</b> (<span class="symbol"><A NAME="ref_1952_17" HREF="terminal_interface-curses__ads.htm#ref_1951_9">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A>; + <span class="symbol"><A NAME="ref_1953_17" HREF="terminal_interface-curses__ads.htm#ref_1951_9">Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>) <b>return</b> Integer; + <b>pragma</b> Convention (C, <A HREF="terminal_interface-curses__ads.htm#ref_1951_9">Stdscr_Init_Proc</A>); + <span class="comment"><EM>-- N.B.: the return value is actually ignored, but it seems to be</EM></span> + <span class="comment"><EM>-- a good practice to return 0 if you think all went fine</EM></span> + <span class="comment"><EM>-- and -1 otherwise.</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_152">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1960_14" HREF="terminal_interface-curses__adb.htm#ref_2320_14">Rip_Off_Lines</A></span> (<span class="symbol"><A NAME="ref_1960_29" HREF="terminal_interface-curses__adb.htm#ref_2320_29">Lines</A></span> : Integer; + <span class="symbol"><A NAME="ref_1961_29" HREF="terminal_interface-curses__adb.htm#ref_2321_29">Proc</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1951_9">Stdscr_Init_Proc</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">ripoffline()</A></EM></span> + <span class="comment"><EM>-- N.B.: to be more precise, this uses a ncurses specific enhancement of</EM></span> + <span class="comment"><EM>-- ripoffline(), in which the Lines argument absolute value is the</EM></span> + <span class="comment"><EM>-- number of lines to be ripped of. The official ripoffline() only</EM></span> + <span class="comment"><EM>-- uses the sign of Lines to remove a single line from bottom or top.</EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1960_14">Rip_Off_Lines</A>); + + <b>type</b> <span class="symbol"><A NAME="ref_1969_9">Cursor_Visibility</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1969_31">Invisible</A></span>, <span class="symbol"><A NAME="ref_1969_42">Normal</A></span>, <span class="symbol"><A NAME="ref_1969_50">Very_Visible</A></span>); + + <span class="comment"><EM>-- <A NAME="AFU_153">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1972_14" HREF="terminal_interface-curses__adb.htm#ref_2332_14">Set_Cursor_Visibility</A></span> (<span class="symbol"><A NAME="ref_1972_37" HREF="terminal_interface-curses__adb.htm#ref_2332_37">Visibility</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_1969_9">Cursor_Visibility</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">curs_set()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1972_14">Set_Cursor_Visibility</A>); + + <span class="comment"><EM>-- <A NAME="AFU_154">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_1977_14" HREF="terminal_interface-curses__adb.htm#ref_2345_14">Nap_Milli_Seconds</A></span> (<span class="symbol"><A NAME="ref_1977_33" HREF="terminal_interface-curses__adb.htm#ref_2345_33">Ms</A></span> : Natural); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_kernel.3x.html">napms()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_1977_14">Nap_Milli_Seconds</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Some useful helpers.</EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_1984_9">Transform_Direction</A></span> <b>is</b> (<span class="symbol"><A NAME="ref_1984_33">From_Screen</A></span>, <span class="symbol"><A NAME="ref_1984_46">To_Screen</A></span>); + <b>procedure</b> <span class="symbol"><A NAME="ref_1985_14" HREF="terminal_interface-curses__adb.htm#ref_2396_14">Transform_Coordinates</A></span> + (<span class="symbol"><A NAME="ref_1986_7" HREF="terminal_interface-curses__adb.htm#ref_2397_7">W</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_1987_7" HREF="terminal_interface-curses__adb.htm#ref_2398_7">Line</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_59_9">Line_Position</A>; + <span class="symbol"><A NAME="ref_1988_7" HREF="terminal_interface-curses__adb.htm#ref_2399_7">Column</A></span> : <b>in</b> <b>out</b> <A HREF="terminal_interface-curses__ads.htm#ref_60_9">Column_Position</A>; + <span class="symbol"><A NAME="ref_1989_7" HREF="terminal_interface-curses__adb.htm#ref_2400_7">Dir</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_1984_9">Transform_Direction</A> := <A HREF="terminal_interface-curses__ads.htm#ref_1984_33">From_Screen</A>); + <span class="comment"><EM>-- This procedure transforms screen coordinates into coordinates relative</EM></span> + <span class="comment"><EM>-- to the window and vice versa, depending on the Dir parameter.</EM></span> + <span class="comment"><EM>-- Screen coordinates are the position information for the physical device.</EM></span> + <span class="comment"><EM>-- An Curses_Exception will be raised if Line and Column are not in the</EM></span> + <span class="comment"><EM>-- Window or if you pass the Null_Window as argument.</EM></span> + <span class="comment"><EM>-- We do not inline this procedure</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/default_colors.3x.html">default_colors.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="symbol"><A NAME="ref_2001_4">Default_Color</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := -1; + + <span class="comment"><EM>-- <A NAME="AFU_155">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2004_14" HREF="terminal_interface-curses__adb.htm#ref_2425_14">Use_Default_Colors</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/default_colors.3x.html">use_default_colors()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_2004_14">Use_Default_Colors</A>); + + <span class="comment"><EM>-- <A NAME="AFU_156">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2009_14" HREF="terminal_interface-curses__adb.htm#ref_2435_14">Assume_Default_Colors</A></span> (<span class="symbol"><A NAME="ref_2009_37" HREF="terminal_interface-curses__adb.htm#ref_2435_37">Fore</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2001_4">Default_Color</A>; + <span class="symbol"><A NAME="ref_2010_37" HREF="terminal_interface-curses__adb.htm#ref_2436_37">Back</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_390_9">Color_Number</A> := <A HREF="terminal_interface-curses__ads.htm#ref_2001_4">Default_Color</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/default_colors.3x.html">assume_default_colors()</A></EM></span> + <b>pragma</b> Inline (<A HREF="terminal_interface-curses__ads.htm#ref_2009_14">Assume_Default_Colors</A>); + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_extend.3x.html">curs_extend.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_157">|</A></EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_2019_13" HREF="terminal_interface-curses__adb.htm#ref_2450_13">Curses_Version</A></span> <b>return</b> String; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_extend.3x.html">curses_version()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_158">|</A></EM></span> + <span class="comment"><EM>-- The returnvalue is the previous setting of the flag</EM></span> + <b>function</b> <span class="symbol"><A NAME="ref_2024_13" HREF="terminal_interface-curses__adb.htm#ref_2473_13">Use_Extended_Names</A></span> (<span class="symbol"><A NAME="ref_2024_33" HREF="terminal_interface-curses__adb.htm#ref_2473_33">Enable</A></span> : Boolean) <b>return</b> Boolean; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_extend.3x.html">use_extended_names()</A></EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_trace.3x.html">curs_trace.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_159">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2032_14" HREF="terminal_interface-curses__adb.htm#ref_2459_14">Curses_Free_All</A></span>; + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_trace.3x.html">_nc_freeall()</A></EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_scr_dump.3x.html">curs_scr_dump.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_160">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2040_14" HREF="terminal_interface-curses__adb.htm#ref_2488_14">Screen_Dump_To_File</A></span> (<span class="symbol"><A NAME="ref_2040_35" HREF="terminal_interface-curses__adb.htm#ref_2488_35">Filename</A></span> : String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_dump()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_161">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2044_14" HREF="terminal_interface-curses__adb.htm#ref_2501_14">Screen_Restore_From_File</A></span> (<span class="symbol"><A NAME="ref_2044_40" HREF="terminal_interface-curses__adb.htm#ref_2501_40">Filename</A></span> : String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_restore()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_162">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2048_14" HREF="terminal_interface-curses__adb.htm#ref_2514_14">Screen_Init_From_File</A></span> (<span class="symbol"><A NAME="ref_2048_37" HREF="terminal_interface-curses__adb.htm#ref_2514_37">Filename</A></span> : String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_init()</A></EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_163">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2052_14" HREF="terminal_interface-curses__adb.htm#ref_2527_14">Screen_Set_File</A></span> (<span class="symbol"><A NAME="ref_2052_31" HREF="terminal_interface-curses__adb.htm#ref_2527_31">Filename</A></span> : String); + <span class="comment"><EM>-- AKA: <A HREF="../man/curs_scr_dump.3x.html">scr_set()</A></EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_print.3x.html">curs_print.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not implemented: mcprint</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_printw.3x.html">curs_printw.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not implemented: printw, wprintw, mvprintw, mvwprintw, vwprintw,</EM></span> + <span class="comment"><EM>-- vw_printw</EM></span> + <span class="comment"><EM>-- Please use the Ada style Text_IO child packages for formatted</EM></span> + <span class="comment"><EM>-- printing. It does not make a lot of sense to map the printf style</EM></span> + <span class="comment"><EM>-- C functions to Ada.</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/curs_scanw.3x.html">curs_scanw.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not implemented: scanw, wscanw, mvscanw, mvwscanw, vwscanw, vw_scanw</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/resizeterm.3x.html">resizeterm.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- Not Implemented: resizeterm</EM></span> + + <span class="comment"><EM>-- |=====================================================================</EM></span> + <span class="comment"><EM>-- | Man page <A HREF="../man/wresize.3x.html">wresize.3x</A></EM></span> + <span class="comment"><EM>-- |=====================================================================</EM></span> + + <span class="comment"><EM>-- <A NAME="AFU_164">|</A></EM></span> + <b>procedure</b> <span class="symbol"><A NAME="ref_2084_14" HREF="terminal_interface-curses__adb.htm#ref_2540_14">Resize</A></span> (<span class="symbol"><A NAME="ref_2084_22" HREF="terminal_interface-curses__adb.htm#ref_2540_22">Win</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := <A HREF="terminal_interface-curses__ads.htm#ref_645_13">Standard_Window</A>; + <span class="symbol"><A NAME="ref_2085_22" HREF="terminal_interface-curses__adb.htm#ref_2541_22">Number_Of_Lines</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_62_12">Line_Count</A>; + <span class="symbol"><A NAME="ref_2086_22" HREF="terminal_interface-curses__adb.htm#ref_2542_22">Number_Of_Columns</A></span> : <A HREF="terminal_interface-curses__ads.htm#ref_64_12">Column_Count</A>); + <span class="comment"><EM>-- AKA: <A HREF="../man/wresize.3x.html">wresize()</A></EM></span> + +<b>private</b> + <b>type</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> <b>is</b> <b>new</b> System.Storage_Elements.Integer_Address; + <A HREF="terminal_interface-curses__ads.htm#ref_57_4">Null_Window</A> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_56_9">Window</A> := 0; + + <span class="comment"><EM>-- The next constants are generated and may be different on your</EM></span> + <span class="comment"><EM>-- architecture.</EM></span> + <span class="comment"><EM>--</EM></span> + + <span class="symbol"><A NAME="ref_2097_4">Sizeof_Bool</A></span> : <b>constant</b> := <A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_11_4">Sizeof_Bool</A>; + + <b>type</b> <span class="symbol"><A NAME="ref_2099_9">Curses_Bool</A></span> <b>is</b> <b>mod</b> 2 ** <A HREF="terminal_interface-curses__ads.htm#ref_2097_4">Sizeof_Bool</A>; + + <span class="symbol"><A NAME="ref_2101_4">Curses_Bool_False</A></span> : <b>constant</b> <A HREF="terminal_interface-curses__ads.htm#ref_2099_9">Curses_Bool</A> := 0; + +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses__ads.htm#ref_48_28">Curses</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses_constants__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses_constants__ads.htm new file mode 100644 index 0000000..d0d54dd --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface-curses_constants__ads.htm @@ -0,0 +1,401 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface-curses_constants.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface-curses_constants.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>-- Generated by the C program ./generate (source ./gen.c).</EM></span> +<span class="comment"><EM>-- Do not edit this file directly.</EM></span> +<span class="comment"><EM>-- The values provided here may vary on your system.</EM></span> + +<b>with</b> System; +<b>package</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<span class="symbol"><A NAME="ref_6_28">Curses_Constants</A></span> <b>is</b> + <b>pragma</b> Pure; + + <span class="symbol"><A NAME="ref_9_4">DFT_ARG_SUFFIX</A></span> : <b>constant</b> String := ""; + <span class="symbol"><A NAME="ref_10_4">Bit_Order</A></span> : <b>constant</b> System.Bit_Order := System.Low_Order_First; + <span class="symbol"><A NAME="ref_11_4">Sizeof_Bool</A></span> : <b>constant</b> := 8; + <span class="symbol"><A NAME="ref_12_4">OK</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_13_4">ERR</A></span> : <b>constant</b> := -1; + <b>pragma</b> Warnings (Off); <span class="comment"><EM>-- redefinition of Standard.True and False</EM></span> + <span class="symbol"><A NAME="ref_15_4">TRUE</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_16_4">FALSE</A></span> : <b>constant</b> := 0; + <b>pragma</b> Warnings (On); + + <span class="comment"><EM>-- Version of the ncurses library from extensions(3NCURSES)</EM></span> + + <span class="symbol"><A NAME="ref_21_4">NCURSES_VERSION_MAJOR</A></span> : <b>constant</b> := 6; + <span class="symbol"><A NAME="ref_22_4">NCURSES_VERSION_MINOR</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_23_4">Version</A></span> : <b>constant</b> String := "6.3"; + + <span class="comment"><EM>-- Character non-color attributes from attr(3NCURSES)</EM></span> + + <span class="comment"><EM>-- attr_t and chtype may be signed in C.</EM></span> + <b>type</b> <span class="symbol"><A NAME="ref_28_9">attr_t</A></span> <b>is</b> <b>mod</b> 2 ** 32; + <span class="symbol"><A NAME="ref_29_4">A_CHARTEXT_First</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_30_4">A_CHARTEXT_Last</A></span> : <b>constant</b> := 7; + <span class="symbol"><A NAME="ref_31_4">A_COLOR_First</A></span> : <b>constant</b> := 8; + <span class="symbol"><A NAME="ref_32_4">A_COLOR_Last</A></span> : <b>constant</b> := 15; + <span class="symbol"><A NAME="ref_33_4">Attr_First</A></span> : <b>constant</b> := 16; + <span class="symbol"><A NAME="ref_34_4">Attr_Last</A></span> : <b>constant</b> := 31; + <span class="symbol"><A NAME="ref_35_4">A_STANDOUT_First</A></span> : <b>constant</b> := 16; + <span class="symbol"><A NAME="ref_36_4">A_STANDOUT_Last</A></span> : <b>constant</b> := 16; + <span class="symbol"><A NAME="ref_37_4">A_UNDERLINE_First</A></span> : <b>constant</b> := 17; + <span class="symbol"><A NAME="ref_38_4">A_UNDERLINE_Last</A></span> : <b>constant</b> := 17; + <span class="symbol"><A NAME="ref_39_4">A_REVERSE_First</A></span> : <b>constant</b> := 18; + <span class="symbol"><A NAME="ref_40_4">A_REVERSE_Last</A></span> : <b>constant</b> := 18; + <span class="symbol"><A NAME="ref_41_4">A_BLINK_First</A></span> : <b>constant</b> := 19; + <span class="symbol"><A NAME="ref_42_4">A_BLINK_Last</A></span> : <b>constant</b> := 19; + <span class="symbol"><A NAME="ref_43_4">A_DIM_First</A></span> : <b>constant</b> := 20; + <span class="symbol"><A NAME="ref_44_4">A_DIM_Last</A></span> : <b>constant</b> := 20; + <span class="symbol"><A NAME="ref_45_4">A_BOLD_First</A></span> : <b>constant</b> := 21; + <span class="symbol"><A NAME="ref_46_4">A_BOLD_Last</A></span> : <b>constant</b> := 21; + <span class="symbol"><A NAME="ref_47_4">A_PROTECT_First</A></span> : <b>constant</b> := 24; + <span class="symbol"><A NAME="ref_48_4">A_PROTECT_Last</A></span> : <b>constant</b> := 24; + <span class="symbol"><A NAME="ref_49_4">A_INVIS_First</A></span> : <b>constant</b> := 23; + <span class="symbol"><A NAME="ref_50_4">A_INVIS_Last</A></span> : <b>constant</b> := 23; + <span class="symbol"><A NAME="ref_51_4">A_ALTCHARSET_First</A></span> : <b>constant</b> := 22; + <span class="symbol"><A NAME="ref_52_4">A_ALTCHARSET_Last</A></span> : <b>constant</b> := 22; + <span class="symbol"><A NAME="ref_53_4">A_HORIZONTAL_First</A></span> : <b>constant</b> := 25; + <span class="symbol"><A NAME="ref_54_4">A_HORIZONTAL_Last</A></span> : <b>constant</b> := 25; + <span class="symbol"><A NAME="ref_55_4">A_LEFT_First</A></span> : <b>constant</b> := 26; + <span class="symbol"><A NAME="ref_56_4">A_LEFT_Last</A></span> : <b>constant</b> := 26; + <span class="symbol"><A NAME="ref_57_4">A_LOW_First</A></span> : <b>constant</b> := 27; + <span class="symbol"><A NAME="ref_58_4">A_LOW_Last</A></span> : <b>constant</b> := 27; + <span class="symbol"><A NAME="ref_59_4">A_RIGHT_First</A></span> : <b>constant</b> := 28; + <span class="symbol"><A NAME="ref_60_4">A_RIGHT_Last</A></span> : <b>constant</b> := 28; + <span class="symbol"><A NAME="ref_61_4">A_TOP_First</A></span> : <b>constant</b> := 29; + <span class="symbol"><A NAME="ref_62_4">A_TOP_Last</A></span> : <b>constant</b> := 29; + <span class="symbol"><A NAME="ref_63_4">A_VERTICAL_First</A></span> : <b>constant</b> := 30; + <span class="symbol"><A NAME="ref_64_4">A_VERTICAL_Last</A></span> : <b>constant</b> := 30; + <span class="symbol"><A NAME="ref_65_4">chtype_Size</A></span> : <b>constant</b> := 32; + + <span class="comment"><EM>-- predefined color numbers from color(3NCURSES)</EM></span> + + <span class="symbol"><A NAME="ref_69_4">COLOR_BLACK</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_70_4">COLOR_RED</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_71_4">COLOR_GREEN</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_72_4">COLOR_YELLOW</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_73_4">COLOR_BLUE</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_74_4">COLOR_MAGENTA</A></span> : <b>constant</b> := 5; + <span class="symbol"><A NAME="ref_75_4">COLOR_CYAN</A></span> : <b>constant</b> := 6; + <span class="symbol"><A NAME="ref_76_4">COLOR_WHITE</A></span> : <b>constant</b> := 7; + + <span class="comment"><EM>-- ETI return codes from ncurses.h</EM></span> + + <span class="symbol"><A NAME="ref_80_4">E_OK</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_81_4">E_SYSTEM_ERROR</A></span> : <b>constant</b> := -1; + <span class="symbol"><A NAME="ref_82_4">E_BAD_ARGUMENT</A></span> : <b>constant</b> := -2; + <span class="symbol"><A NAME="ref_83_4">E_POSTED</A></span> : <b>constant</b> := -3; + <span class="symbol"><A NAME="ref_84_4">E_CONNECTED</A></span> : <b>constant</b> := -4; + <span class="symbol"><A NAME="ref_85_4">E_BAD_STATE</A></span> : <b>constant</b> := -5; + <span class="symbol"><A NAME="ref_86_4">E_NO_ROOM</A></span> : <b>constant</b> := -6; + <span class="symbol"><A NAME="ref_87_4">E_NOT_POSTED</A></span> : <b>constant</b> := -7; + <span class="symbol"><A NAME="ref_88_4">E_UNKNOWN_COMMAND</A></span> : <b>constant</b> := -8; + <span class="symbol"><A NAME="ref_89_4">E_NO_MATCH</A></span> : <b>constant</b> := -9; + <span class="symbol"><A NAME="ref_90_4">E_NOT_SELECTABLE</A></span> : <b>constant</b> := -10; + <span class="symbol"><A NAME="ref_91_4">E_NOT_CONNECTED</A></span> : <b>constant</b> := -11; + <span class="symbol"><A NAME="ref_92_4">E_REQUEST_DENIED</A></span> : <b>constant</b> := -12; + <span class="symbol"><A NAME="ref_93_4">E_INVALID_FIELD</A></span> : <b>constant</b> := -13; + <span class="symbol"><A NAME="ref_94_4">E_CURRENT</A></span> : <b>constant</b> := -14; + + <span class="comment"><EM>-- Input key codes not defined in any ncurses manpage</EM></span> + + <span class="symbol"><A NAME="ref_98_4">KEY_MIN</A></span> : <b>constant</b> := 257; + <span class="symbol"><A NAME="ref_99_4">KEY_MAX</A></span> : <b>constant</b> := 511; + <span class="symbol"><A NAME="ref_100_4">KEY_CODE_YES</A></span> : <b>constant</b> := 256; + + <span class="comment"><EM>-- Input key codes from getch(3NCURSES)</EM></span> + + <span class="symbol"><A NAME="ref_104_4">KEY_BREAK</A></span> : <b>constant</b> := 257; + <span class="symbol"><A NAME="ref_105_4">KEY_DOWN</A></span> : <b>constant</b> := 258; + <span class="symbol"><A NAME="ref_106_4">KEY_UP</A></span> : <b>constant</b> := 259; + <span class="symbol"><A NAME="ref_107_4">KEY_LEFT</A></span> : <b>constant</b> := 260; + <span class="symbol"><A NAME="ref_108_4">KEY_RIGHT</A></span> : <b>constant</b> := 261; + <span class="symbol"><A NAME="ref_109_4">KEY_HOME</A></span> : <b>constant</b> := 262; + <span class="symbol"><A NAME="ref_110_4">KEY_BACKSPACE</A></span> : <b>constant</b> := 263; + <span class="symbol"><A NAME="ref_111_4">KEY_F0</A></span> : <b>constant</b> := 264; + <span class="symbol"><A NAME="ref_112_4">KEY_F1</A></span> : <b>constant</b> := 265; + <span class="symbol"><A NAME="ref_113_4">KEY_F2</A></span> : <b>constant</b> := 266; + <span class="symbol"><A NAME="ref_114_4">KEY_F3</A></span> : <b>constant</b> := 267; + <span class="symbol"><A NAME="ref_115_4">KEY_F4</A></span> : <b>constant</b> := 268; + <span class="symbol"><A NAME="ref_116_4">KEY_F5</A></span> : <b>constant</b> := 269; + <span class="symbol"><A NAME="ref_117_4">KEY_F6</A></span> : <b>constant</b> := 270; + <span class="symbol"><A NAME="ref_118_4">KEY_F7</A></span> : <b>constant</b> := 271; + <span class="symbol"><A NAME="ref_119_4">KEY_F8</A></span> : <b>constant</b> := 272; + <span class="symbol"><A NAME="ref_120_4">KEY_F9</A></span> : <b>constant</b> := 273; + <span class="symbol"><A NAME="ref_121_4">KEY_F10</A></span> : <b>constant</b> := 274; + <span class="symbol"><A NAME="ref_122_4">KEY_F11</A></span> : <b>constant</b> := 275; + <span class="symbol"><A NAME="ref_123_4">KEY_F12</A></span> : <b>constant</b> := 276; + <span class="symbol"><A NAME="ref_124_4">KEY_F13</A></span> : <b>constant</b> := 277; + <span class="symbol"><A NAME="ref_125_4">KEY_F14</A></span> : <b>constant</b> := 278; + <span class="symbol"><A NAME="ref_126_4">KEY_F15</A></span> : <b>constant</b> := 279; + <span class="symbol"><A NAME="ref_127_4">KEY_F16</A></span> : <b>constant</b> := 280; + <span class="symbol"><A NAME="ref_128_4">KEY_F17</A></span> : <b>constant</b> := 281; + <span class="symbol"><A NAME="ref_129_4">KEY_F18</A></span> : <b>constant</b> := 282; + <span class="symbol"><A NAME="ref_130_4">KEY_F19</A></span> : <b>constant</b> := 283; + <span class="symbol"><A NAME="ref_131_4">KEY_F20</A></span> : <b>constant</b> := 284; + <span class="symbol"><A NAME="ref_132_4">KEY_F21</A></span> : <b>constant</b> := 285; + <span class="symbol"><A NAME="ref_133_4">KEY_F22</A></span> : <b>constant</b> := 286; + <span class="symbol"><A NAME="ref_134_4">KEY_F23</A></span> : <b>constant</b> := 287; + <span class="symbol"><A NAME="ref_135_4">KEY_F24</A></span> : <b>constant</b> := 288; + <span class="symbol"><A NAME="ref_136_4">KEY_DL</A></span> : <b>constant</b> := 328; + <span class="symbol"><A NAME="ref_137_4">KEY_IL</A></span> : <b>constant</b> := 329; + <span class="symbol"><A NAME="ref_138_4">KEY_DC</A></span> : <b>constant</b> := 330; + <span class="symbol"><A NAME="ref_139_4">KEY_IC</A></span> : <b>constant</b> := 331; + <span class="symbol"><A NAME="ref_140_4">KEY_EIC</A></span> : <b>constant</b> := 332; + <span class="symbol"><A NAME="ref_141_4">KEY_CLEAR</A></span> : <b>constant</b> := 333; + <span class="symbol"><A NAME="ref_142_4">KEY_EOS</A></span> : <b>constant</b> := 334; + <span class="symbol"><A NAME="ref_143_4">KEY_EOL</A></span> : <b>constant</b> := 335; + <span class="symbol"><A NAME="ref_144_4">KEY_SF</A></span> : <b>constant</b> := 336; + <span class="symbol"><A NAME="ref_145_4">KEY_SR</A></span> : <b>constant</b> := 337; + <span class="symbol"><A NAME="ref_146_4">KEY_NPAGE</A></span> : <b>constant</b> := 338; + <span class="symbol"><A NAME="ref_147_4">KEY_PPAGE</A></span> : <b>constant</b> := 339; + <span class="symbol"><A NAME="ref_148_4">KEY_STAB</A></span> : <b>constant</b> := 340; + <span class="symbol"><A NAME="ref_149_4">KEY_CTAB</A></span> : <b>constant</b> := 341; + <span class="symbol"><A NAME="ref_150_4">KEY_CATAB</A></span> : <b>constant</b> := 342; + <span class="symbol"><A NAME="ref_151_4">KEY_ENTER</A></span> : <b>constant</b> := 343; + <span class="symbol"><A NAME="ref_152_4">KEY_SRESET</A></span> : <b>constant</b> := 344; + <span class="symbol"><A NAME="ref_153_4">KEY_RESET</A></span> : <b>constant</b> := 345; + <span class="symbol"><A NAME="ref_154_4">KEY_PRINT</A></span> : <b>constant</b> := 346; + <span class="symbol"><A NAME="ref_155_4">KEY_LL</A></span> : <b>constant</b> := 347; + <span class="symbol"><A NAME="ref_156_4">KEY_A1</A></span> : <b>constant</b> := 348; + <span class="symbol"><A NAME="ref_157_4">KEY_A3</A></span> : <b>constant</b> := 349; + <span class="symbol"><A NAME="ref_158_4">KEY_B2</A></span> : <b>constant</b> := 350; + <span class="symbol"><A NAME="ref_159_4">KEY_C1</A></span> : <b>constant</b> := 351; + <span class="symbol"><A NAME="ref_160_4">KEY_C3</A></span> : <b>constant</b> := 352; + <span class="symbol"><A NAME="ref_161_4">KEY_BTAB</A></span> : <b>constant</b> := 353; + <span class="symbol"><A NAME="ref_162_4">KEY_BEG</A></span> : <b>constant</b> := 354; + <span class="symbol"><A NAME="ref_163_4">KEY_CANCEL</A></span> : <b>constant</b> := 355; + <span class="symbol"><A NAME="ref_164_4">KEY_CLOSE</A></span> : <b>constant</b> := 356; + <span class="symbol"><A NAME="ref_165_4">KEY_COMMAND</A></span> : <b>constant</b> := 357; + <span class="symbol"><A NAME="ref_166_4">KEY_COPY</A></span> : <b>constant</b> := 358; + <span class="symbol"><A NAME="ref_167_4">KEY_CREATE</A></span> : <b>constant</b> := 359; + <span class="symbol"><A NAME="ref_168_4">KEY_END</A></span> : <b>constant</b> := 360; + <span class="symbol"><A NAME="ref_169_4">KEY_EXIT</A></span> : <b>constant</b> := 361; + <span class="symbol"><A NAME="ref_170_4">KEY_FIND</A></span> : <b>constant</b> := 362; + <span class="symbol"><A NAME="ref_171_4">KEY_HELP</A></span> : <b>constant</b> := 363; + <span class="symbol"><A NAME="ref_172_4">KEY_MARK</A></span> : <b>constant</b> := 364; + <span class="symbol"><A NAME="ref_173_4">KEY_MESSAGE</A></span> : <b>constant</b> := 365; + <span class="symbol"><A NAME="ref_174_4">KEY_MOVE</A></span> : <b>constant</b> := 366; + <span class="symbol"><A NAME="ref_175_4">KEY_NEXT</A></span> : <b>constant</b> := 367; + <span class="symbol"><A NAME="ref_176_4">KEY_OPEN</A></span> : <b>constant</b> := 368; + <span class="symbol"><A NAME="ref_177_4">KEY_OPTIONS</A></span> : <b>constant</b> := 369; + <span class="symbol"><A NAME="ref_178_4">KEY_PREVIOUS</A></span> : <b>constant</b> := 370; + <span class="symbol"><A NAME="ref_179_4">KEY_REDO</A></span> : <b>constant</b> := 371; + <span class="symbol"><A NAME="ref_180_4">KEY_REFERENCE</A></span> : <b>constant</b> := 372; + <span class="symbol"><A NAME="ref_181_4">KEY_REFRESH</A></span> : <b>constant</b> := 373; + <span class="symbol"><A NAME="ref_182_4">KEY_REPLACE</A></span> : <b>constant</b> := 374; + <span class="symbol"><A NAME="ref_183_4">KEY_RESTART</A></span> : <b>constant</b> := 375; + <span class="symbol"><A NAME="ref_184_4">KEY_RESUME</A></span> : <b>constant</b> := 376; + <span class="symbol"><A NAME="ref_185_4">KEY_SAVE</A></span> : <b>constant</b> := 377; + <span class="symbol"><A NAME="ref_186_4">KEY_SBEG</A></span> : <b>constant</b> := 378; + <span class="symbol"><A NAME="ref_187_4">KEY_SCANCEL</A></span> : <b>constant</b> := 379; + <span class="symbol"><A NAME="ref_188_4">KEY_SCOMMAND</A></span> : <b>constant</b> := 380; + <span class="symbol"><A NAME="ref_189_4">KEY_SCOPY</A></span> : <b>constant</b> := 381; + <span class="symbol"><A NAME="ref_190_4">KEY_SCREATE</A></span> : <b>constant</b> := 382; + <span class="symbol"><A NAME="ref_191_4">KEY_SDC</A></span> : <b>constant</b> := 383; + <span class="symbol"><A NAME="ref_192_4">KEY_SDL</A></span> : <b>constant</b> := 384; + <span class="symbol"><A NAME="ref_193_4">KEY_SELECT</A></span> : <b>constant</b> := 385; + <span class="symbol"><A NAME="ref_194_4">KEY_SEND</A></span> : <b>constant</b> := 386; + <span class="symbol"><A NAME="ref_195_4">KEY_SEOL</A></span> : <b>constant</b> := 387; + <span class="symbol"><A NAME="ref_196_4">KEY_SEXIT</A></span> : <b>constant</b> := 388; + <span class="symbol"><A NAME="ref_197_4">KEY_SFIND</A></span> : <b>constant</b> := 389; + <span class="symbol"><A NAME="ref_198_4">KEY_SHELP</A></span> : <b>constant</b> := 390; + <span class="symbol"><A NAME="ref_199_4">KEY_SHOME</A></span> : <b>constant</b> := 391; + <span class="symbol"><A NAME="ref_200_4">KEY_SIC</A></span> : <b>constant</b> := 392; + <span class="symbol"><A NAME="ref_201_4">KEY_SLEFT</A></span> : <b>constant</b> := 393; + <span class="symbol"><A NAME="ref_202_4">KEY_SMESSAGE</A></span> : <b>constant</b> := 394; + <span class="symbol"><A NAME="ref_203_4">KEY_SMOVE</A></span> : <b>constant</b> := 395; + <span class="symbol"><A NAME="ref_204_4">KEY_SNEXT</A></span> : <b>constant</b> := 396; + <span class="symbol"><A NAME="ref_205_4">KEY_SOPTIONS</A></span> : <b>constant</b> := 397; + <span class="symbol"><A NAME="ref_206_4">KEY_SPREVIOUS</A></span> : <b>constant</b> := 398; + <span class="symbol"><A NAME="ref_207_4">KEY_SPRINT</A></span> : <b>constant</b> := 399; + <span class="symbol"><A NAME="ref_208_4">KEY_SREDO</A></span> : <b>constant</b> := 400; + <span class="symbol"><A NAME="ref_209_4">KEY_SREPLACE</A></span> : <b>constant</b> := 401; + <span class="symbol"><A NAME="ref_210_4">KEY_SRIGHT</A></span> : <b>constant</b> := 402; + <span class="symbol"><A NAME="ref_211_4">KEY_SRSUME</A></span> : <b>constant</b> := 403; + <span class="symbol"><A NAME="ref_212_4">KEY_SSAVE</A></span> : <b>constant</b> := 404; + <span class="symbol"><A NAME="ref_213_4">KEY_SSUSPEND</A></span> : <b>constant</b> := 405; + <span class="symbol"><A NAME="ref_214_4">KEY_SUNDO</A></span> : <b>constant</b> := 406; + <span class="symbol"><A NAME="ref_215_4">KEY_SUSPEND</A></span> : <b>constant</b> := 407; + <span class="symbol"><A NAME="ref_216_4">KEY_UNDO</A></span> : <b>constant</b> := 408; + <span class="symbol"><A NAME="ref_217_4">KEY_MOUSE</A></span> : <b>constant</b> := 409; + <span class="symbol"><A NAME="ref_218_4">KEY_RESIZE</A></span> : <b>constant</b> := 410; + + <span class="comment"><EM>-- alternate character codes (ACS) from addch(3NCURSES)</EM></span> + + <span class="symbol"><A NAME="ref_222_4">ACS_ULCORNER</A></span> : <b>constant</b> := 108; + <span class="symbol"><A NAME="ref_223_4">ACS_LLCORNER</A></span> : <b>constant</b> := 109; + <span class="symbol"><A NAME="ref_224_4">ACS_URCORNER</A></span> : <b>constant</b> := 107; + <span class="symbol"><A NAME="ref_225_4">ACS_LRCORNER</A></span> : <b>constant</b> := 106; + <span class="symbol"><A NAME="ref_226_4">ACS_LTEE</A></span> : <b>constant</b> := 116; + <span class="symbol"><A NAME="ref_227_4">ACS_RTEE</A></span> : <b>constant</b> := 117; + <span class="symbol"><A NAME="ref_228_4">ACS_BTEE</A></span> : <b>constant</b> := 118; + <span class="symbol"><A NAME="ref_229_4">ACS_TTEE</A></span> : <b>constant</b> := 119; + <span class="symbol"><A NAME="ref_230_4">ACS_HLINE</A></span> : <b>constant</b> := 113; + <span class="symbol"><A NAME="ref_231_4">ACS_VLINE</A></span> : <b>constant</b> := 120; + <span class="symbol"><A NAME="ref_232_4">ACS_PLUS</A></span> : <b>constant</b> := 110; + <span class="symbol"><A NAME="ref_233_4">ACS_S1</A></span> : <b>constant</b> := 111; + <span class="symbol"><A NAME="ref_234_4">ACS_S9</A></span> : <b>constant</b> := 115; + <span class="symbol"><A NAME="ref_235_4">ACS_DIAMOND</A></span> : <b>constant</b> := 96; + <span class="symbol"><A NAME="ref_236_4">ACS_CKBOARD</A></span> : <b>constant</b> := 97; + <span class="symbol"><A NAME="ref_237_4">ACS_DEGREE</A></span> : <b>constant</b> := 102; + <span class="symbol"><A NAME="ref_238_4">ACS_PLMINUS</A></span> : <b>constant</b> := 103; + <span class="symbol"><A NAME="ref_239_4">ACS_BULLET</A></span> : <b>constant</b> := 126; + <span class="symbol"><A NAME="ref_240_4">ACS_LARROW</A></span> : <b>constant</b> := 44; + <span class="symbol"><A NAME="ref_241_4">ACS_RARROW</A></span> : <b>constant</b> := 43; + <span class="symbol"><A NAME="ref_242_4">ACS_DARROW</A></span> : <b>constant</b> := 46; + <span class="symbol"><A NAME="ref_243_4">ACS_UARROW</A></span> : <b>constant</b> := 45; + <span class="symbol"><A NAME="ref_244_4">ACS_BOARD</A></span> : <b>constant</b> := 104; + <span class="symbol"><A NAME="ref_245_4">ACS_LANTERN</A></span> : <b>constant</b> := 105; + <span class="symbol"><A NAME="ref_246_4">ACS_BLOCK</A></span> : <b>constant</b> := 48; + <span class="symbol"><A NAME="ref_247_4">ACS_S3</A></span> : <b>constant</b> := 112; + <span class="symbol"><A NAME="ref_248_4">ACS_S7</A></span> : <b>constant</b> := 114; + <span class="symbol"><A NAME="ref_249_4">ACS_LEQUAL</A></span> : <b>constant</b> := 121; + <span class="symbol"><A NAME="ref_250_4">ACS_GEQUAL</A></span> : <b>constant</b> := 122; + <span class="symbol"><A NAME="ref_251_4">ACS_PI</A></span> : <b>constant</b> := 123; + <span class="symbol"><A NAME="ref_252_4">ACS_NEQUAL</A></span> : <b>constant</b> := 124; + <span class="symbol"><A NAME="ref_253_4">ACS_STERLING</A></span> : <b>constant</b> := 125; + + <span class="comment"><EM>-- Menu_Options from opts(3MENU)</EM></span> + + <span class="symbol"><A NAME="ref_257_4">O_ONEVALUE_First</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_258_4">O_ONEVALUE_Last</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_259_4">O_SHOWDESC_First</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_260_4">O_SHOWDESC_Last</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_261_4">O_ROWMAJOR_First</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_262_4">O_ROWMAJOR_Last</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_263_4">O_IGNORECASE_First</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_264_4">O_IGNORECASE_Last</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_265_4">O_SHOWMATCH_First</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_266_4">O_SHOWMATCH_Last</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_267_4">O_NONCYCLIC_First</A></span> : <b>constant</b> := 5; + <span class="symbol"><A NAME="ref_268_4">O_NONCYCLIC_Last</A></span> : <b>constant</b> := 5; + <span class="symbol"><A NAME="ref_269_4">Menu_Options_Size</A></span> : <b>constant</b> := 32; + + <span class="comment"><EM>-- Item_Options from menu_opts(3MENU)</EM></span> + + <span class="symbol"><A NAME="ref_273_4">O_SELECTABLE_First</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_274_4">O_SELECTABLE_Last</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_275_4">Item_Options_Size</A></span> : <b>constant</b> := 32; + + <span class="comment"><EM>-- Field_Options from field_opts(3FORM)</EM></span> + + <span class="symbol"><A NAME="ref_279_4">O_VISIBLE_First</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_280_4">O_VISIBLE_Last</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_281_4">O_ACTIVE_First</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_282_4">O_ACTIVE_Last</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_283_4">O_PUBLIC_First</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_284_4">O_PUBLIC_Last</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_285_4">O_EDIT_First</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_286_4">O_EDIT_Last</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_287_4">O_WRAP_First</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_288_4">O_WRAP_Last</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_289_4">O_BLANK_First</A></span> : <b>constant</b> := 5; + <span class="symbol"><A NAME="ref_290_4">O_BLANK_Last</A></span> : <b>constant</b> := 5; + <span class="symbol"><A NAME="ref_291_4">O_AUTOSKIP_First</A></span> : <b>constant</b> := 6; + <span class="symbol"><A NAME="ref_292_4">O_AUTOSKIP_Last</A></span> : <b>constant</b> := 6; + <span class="symbol"><A NAME="ref_293_4">O_NULLOK_First</A></span> : <b>constant</b> := 7; + <span class="symbol"><A NAME="ref_294_4">O_NULLOK_Last</A></span> : <b>constant</b> := 7; + <span class="symbol"><A NAME="ref_295_4">O_PASSOK_First</A></span> : <b>constant</b> := 8; + <span class="symbol"><A NAME="ref_296_4">O_PASSOK_Last</A></span> : <b>constant</b> := 8; + <span class="symbol"><A NAME="ref_297_4">O_STATIC_First</A></span> : <b>constant</b> := 9; + <span class="symbol"><A NAME="ref_298_4">O_STATIC_Last</A></span> : <b>constant</b> := 9; + <span class="symbol"><A NAME="ref_299_4">Field_Options_Size</A></span> : <b>constant</b> := 32; + + <span class="comment"><EM>-- Field_Options from opts(3FORM)</EM></span> + + <span class="symbol"><A NAME="ref_303_4">O_NL_OVERLOAD_First</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_304_4">O_NL_OVERLOAD_Last</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_305_4">O_BS_OVERLOAD_First</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_306_4">O_BS_OVERLOAD_Last</A></span> : <b>constant</b> := 1; + + <span class="comment"><EM>-- MEVENT structure from mouse(3NCURSES)</EM></span> + + <span class="symbol"><A NAME="ref_310_4">MEVENT_id_First</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_311_4">MEVENT_id_Last</A></span> : <b>constant</b> := 15; + <span class="symbol"><A NAME="ref_312_4">MEVENT_x_First</A></span> : <b>constant</b> := 32; + <span class="symbol"><A NAME="ref_313_4">MEVENT_x_Last</A></span> : <b>constant</b> := 63; + <span class="symbol"><A NAME="ref_314_4">MEVENT_y_First</A></span> : <b>constant</b> := 64; + <span class="symbol"><A NAME="ref_315_4">MEVENT_y_Last</A></span> : <b>constant</b> := 95; + <span class="symbol"><A NAME="ref_316_4">MEVENT_z_First</A></span> : <b>constant</b> := 96; + <span class="symbol"><A NAME="ref_317_4">MEVENT_z_Last</A></span> : <b>constant</b> := 127; + <span class="symbol"><A NAME="ref_318_4">MEVENT_bstate_First</A></span> : <b>constant</b> := 128; + <span class="symbol"><A NAME="ref_319_4">MEVENT_bstate_Last</A></span> : <b>constant</b> := 159; + <span class="symbol"><A NAME="ref_320_4">MEVENT_Size</A></span> : <b>constant</b> := 160; + + <span class="comment"><EM>-- mouse events from mouse(3NCURSES)</EM></span> + + <span class="symbol"><A NAME="ref_324_4">BUTTON1_RELEASED</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_325_4">BUTTON1_PRESSED</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_326_4">BUTTON1_CLICKED</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_327_4">BUTTON1_DOUBLE_CLICKED</A></span> : <b>constant</b> := 8; + <span class="symbol"><A NAME="ref_328_4">BUTTON1_TRIPLE_CLICKED</A></span> : <b>constant</b> := 16; + <span class="symbol"><A NAME="ref_329_4">all_events_button_1</A></span> : <b>constant</b> := 31; + <span class="symbol"><A NAME="ref_330_4">BUTTON2_RELEASED</A></span> : <b>constant</b> := 32; + <span class="symbol"><A NAME="ref_331_4">BUTTON2_PRESSED</A></span> : <b>constant</b> := 64; + <span class="symbol"><A NAME="ref_332_4">BUTTON2_CLICKED</A></span> : <b>constant</b> := 128; + <span class="symbol"><A NAME="ref_333_4">BUTTON2_DOUBLE_CLICKED</A></span> : <b>constant</b> := 256; + <span class="symbol"><A NAME="ref_334_4">BUTTON2_TRIPLE_CLICKED</A></span> : <b>constant</b> := 512; + <span class="symbol"><A NAME="ref_335_4">all_events_button_2</A></span> : <b>constant</b> := 992; + <span class="symbol"><A NAME="ref_336_4">BUTTON3_RELEASED</A></span> : <b>constant</b> := 1024; + <span class="symbol"><A NAME="ref_337_4">BUTTON3_PRESSED</A></span> : <b>constant</b> := 2048; + <span class="symbol"><A NAME="ref_338_4">BUTTON3_CLICKED</A></span> : <b>constant</b> := 4096; + <span class="symbol"><A NAME="ref_339_4">BUTTON3_DOUBLE_CLICKED</A></span> : <b>constant</b> := 8192; + <span class="symbol"><A NAME="ref_340_4">BUTTON3_TRIPLE_CLICKED</A></span> : <b>constant</b> := 16384; + <span class="symbol"><A NAME="ref_341_4">all_events_button_3</A></span> : <b>constant</b> := 31744; + <span class="symbol"><A NAME="ref_342_4">BUTTON4_RELEASED</A></span> : <b>constant</b> := 32768; + <span class="symbol"><A NAME="ref_343_4">BUTTON4_PRESSED</A></span> : <b>constant</b> := 65536; + <span class="symbol"><A NAME="ref_344_4">BUTTON4_CLICKED</A></span> : <b>constant</b> := 131072; + <span class="symbol"><A NAME="ref_345_4">BUTTON4_DOUBLE_CLICKED</A></span> : <b>constant</b> := 262144; + <span class="symbol"><A NAME="ref_346_4">BUTTON4_TRIPLE_CLICKED</A></span> : <b>constant</b> := 524288; + <span class="symbol"><A NAME="ref_347_4">all_events_button_4</A></span> : <b>constant</b> := 1015808; + <span class="symbol"><A NAME="ref_348_4">BUTTON_CTRL</A></span> : <b>constant</b> := 33554432; + <span class="symbol"><A NAME="ref_349_4">BUTTON_SHIFT</A></span> : <b>constant</b> := 67108864; + <span class="symbol"><A NAME="ref_350_4">BUTTON_ALT</A></span> : <b>constant</b> := 134217728; + <span class="symbol"><A NAME="ref_351_4">REPORT_MOUSE_POSITION</A></span> : <b>constant</b> := 268435456; + <span class="symbol"><A NAME="ref_352_4">ALL_MOUSE_EVENTS</A></span> : <b>constant</b> := 268435455; + + <span class="comment"><EM>-- trace selection from trace(3NCURSES)</EM></span> + + <span class="symbol"><A NAME="ref_356_4">TRACE_TIMES_First</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_357_4">TRACE_TIMES_Last</A></span> : <b>constant</b> := 0; + <span class="symbol"><A NAME="ref_358_4">TRACE_TPUTS_First</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_359_4">TRACE_TPUTS_Last</A></span> : <b>constant</b> := 1; + <span class="symbol"><A NAME="ref_360_4">TRACE_UPDATE_First</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_361_4">TRACE_UPDATE_Last</A></span> : <b>constant</b> := 2; + <span class="symbol"><A NAME="ref_362_4">TRACE_MOVE_First</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_363_4">TRACE_MOVE_Last</A></span> : <b>constant</b> := 3; + <span class="symbol"><A NAME="ref_364_4">TRACE_CHARPUT_First</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_365_4">TRACE_CHARPUT_Last</A></span> : <b>constant</b> := 4; + <span class="symbol"><A NAME="ref_366_4">TRACE_CALLS_First</A></span> : <b>constant</b> := 5; + <span class="symbol"><A NAME="ref_367_4">TRACE_CALLS_Last</A></span> : <b>constant</b> := 5; + <span class="symbol"><A NAME="ref_368_4">TRACE_VIRTPUT_First</A></span> : <b>constant</b> := 6; + <span class="symbol"><A NAME="ref_369_4">TRACE_VIRTPUT_Last</A></span> : <b>constant</b> := 6; + <span class="symbol"><A NAME="ref_370_4">TRACE_IEVENT_First</A></span> : <b>constant</b> := 7; + <span class="symbol"><A NAME="ref_371_4">TRACE_IEVENT_Last</A></span> : <b>constant</b> := 7; + <span class="symbol"><A NAME="ref_372_4">TRACE_BITS_First</A></span> : <b>constant</b> := 8; + <span class="symbol"><A NAME="ref_373_4">TRACE_BITS_Last</A></span> : <b>constant</b> := 8; + <span class="symbol"><A NAME="ref_374_4">TRACE_ICALLS_First</A></span> : <b>constant</b> := 9; + <span class="symbol"><A NAME="ref_375_4">TRACE_ICALLS_Last</A></span> : <b>constant</b> := 9; + <span class="symbol"><A NAME="ref_376_4">TRACE_CCALLS_First</A></span> : <b>constant</b> := 10; + <span class="symbol"><A NAME="ref_377_4">TRACE_CCALLS_Last</A></span> : <b>constant</b> := 10; + <span class="symbol"><A NAME="ref_378_4">TRACE_DATABASE_First</A></span> : <b>constant</b> := 11; + <span class="symbol"><A NAME="ref_379_4">TRACE_DATABASE_Last</A></span> : <b>constant</b> := 11; + <span class="symbol"><A NAME="ref_380_4">TRACE_ATTRS_First</A></span> : <b>constant</b> := 12; + <span class="symbol"><A NAME="ref_381_4">TRACE_ATTRS_Last</A></span> : <b>constant</b> := 12; + <span class="symbol"><A NAME="ref_382_4">Trace_Size</A></span> : <b>constant</b> := 32; +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>.<A HREF="terminal_interface-curses_constants__ads.htm#ref_6_28">Curses_Constants</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/ada/terminal_interface__ads.htm b/deps/ncurses-6.3/doc/html/ada/terminal_interface__ads.htm new file mode 100644 index 0000000..08b3879 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ada/terminal_interface__ads.htm @@ -0,0 +1,66 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<TITLE>terminal_interface.ads</TITLE> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +<style type="text/css"> +*.comment { + color: green; +} +*.symbol { + color: red; +} +</style> +</HEAD> +<BODY> +<HR><DIV style="text-align:center"><H1> File : terminal_interface.ads </H1></DIV><HR> +<PRE> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- <A HREF="http://www.gnat.com">GNAT</A> ncurses Binding --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Terminal_Interface --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- S P E C --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Copyright 2020 Thomas E. Dickey --</EM></span> +<span class="comment"><EM>-- Copyright 1999-2003,2006 Free Software Foundation, Inc. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Permission is hereby granted, free of charge, to any person obtaining a --</EM></span> +<span class="comment"><EM>-- copy of this software and associated documentation files (the --</EM></span> +<span class="comment"><EM>-- "Software"), to deal in the Software without restriction, including --</EM></span> +<span class="comment"><EM>-- without limitation the rights to use, copy, modify, merge, publish, --</EM></span> +<span class="comment"><EM>-- distribute, distribute with modifications, sublicense, and/or sell --</EM></span> +<span class="comment"><EM>-- copies of the Software, and to permit persons to whom the Software is --</EM></span> +<span class="comment"><EM>-- furnished to do so, subject to the following conditions: --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- The above copyright notice and this permission notice shall be included --</EM></span> +<span class="comment"><EM>-- in all copies or substantial portions of the Software. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS --</EM></span> +<span class="comment"><EM>-- OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF --</EM></span> +<span class="comment"><EM>-- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. --</EM></span> +<span class="comment"><EM>-- IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, --</EM></span> +<span class="comment"><EM>-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR --</EM></span> +<span class="comment"><EM>-- OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR --</EM></span> +<span class="comment"><EM>-- THE USE OR OTHER DEALINGS IN THE SOFTWARE. --</EM></span> +<span class="comment"><EM>-- --</EM></span> +<span class="comment"><EM>-- Except as contained in this notice, the name(s) of the above copyright --</EM></span> +<span class="comment"><EM>-- holders shall not be used in advertising or otherwise to promote the --</EM></span> +<span class="comment"><EM>-- sale, use or other dealings in this Software without prior written --</EM></span> +<span class="comment"><EM>-- authorization. --</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<span class="comment"><EM>-- Author: Juergen Pfeifer, 1996</EM></span> +<span class="comment"><EM>-- Version Control:</EM></span> +<span class="comment"><EM>-- @Revision: 1.15 @</EM></span> +<span class="comment"><EM>-- @Date: 2020/02/02 23:34:34 @</EM></span> +<span class="comment"><EM>-- Binding Version 01.00</EM></span> +<span class="comment"><EM>------------------------------------------------------------------------------</EM></span> +<b>package</b> <span class="symbol"><A NAME="ref_43_9">Terminal_Interface</A></span> <b>is</b> + <b>pragma</b> Pure (<A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>); +<span class="comment"><EM>--</EM></span> +<span class="comment"><EM>-- Everything is in the child units</EM></span> +<span class="comment"><EM>--</EM></span> +<b>end</b> <A HREF="terminal_interface__ads.htm#ref_43_9">Terminal_Interface</A>; +</PRE></BODY></HTML> diff --git a/deps/ncurses-6.3/doc/html/announce.html b/deps/ncurses-6.3/doc/html/announce.html new file mode 100644 index 0000000..a6040c4 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/announce.html @@ -0,0 +1,1831 @@ +<!-- + $Id: announce.html,v 1.66 2021/10/20 22:54:22 tom Exp $ + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * * + * 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>Announcing ncurses 6.3</title> + <link rel="author" href="mailto:bug-ncurses@gnu.org"> + <meta http-equiv="Content-Type" content= + "text/html; charset=us-ascii"> + <style type="text/css"> + p,li { max-width:700px; } + dd { max-width:630px; } + *.main-name { + font-style: italic; + font-variant: small-caps; + } + *.part-name { + font-family: "Andale Mono", "Monotype.com", monospace; + font-size: 12pt; + font-weight: bold; + } + *.demo-name { + font-family: "Andale Mono", "Monotype.com", monospace; + font-size: 10pt; + } + </style> +</head> +<body> + <h1 class="no-header">Announcing ncurses 6.3</h1> + + <h2><a name="h2-overview" id="h2-overview">Overview</a></h2> + + <p>The <span class="main-name">ncurses</span> (new curses) + library is a free software emulation of curses in System V + Release 4.0 (SVr4), and more. It uses terminfo format, supports + pads and color and multiple highlights and forms characters and + function-key mapping, and has all the other SVr4-curses + enhancements over BSD curses. SVr4 curses became the basis of + X/Open Curses.</p> + + <p>In mid-June 1995, the maintainer of 4.4BSD curses declared + that he considered 4.4BSD curses obsolete, and encouraged the + keepers of <span class="main-name">unix</span> releases such as + BSD/OS, FreeBSD and NetBSD to switch over to <span class= + "main-name">ncurses</span>.</p> + + <p>Since 1995, <span class="main-name">ncurses</span> has been + ported to many systems:</p> + + <ul> + <li>It is used in almost every system based on the Linux kernel + (aside from some embedded applications).</li> + + <li>It is used as the system curses library on OpenBSD, FreeBSD + and MacOS.</li> + + <li>It is used in environments such as Cygwin and MinGW. The + first of these was EMX on OS/2 Warp.</li> + + <li>It is used (though usually not as the <em>system</em> + curses) on all of the vendor <span class= + "main-name">unix</span> systems, e.g., AIX, HP-UX, IRIX64, SCO, + Solaris, Tru64.</li> + + <li>It should work readily on any ANSI/POSIX-conforming + <span class="main-name">unix</span>.</li> + </ul> + + <p>The distribution includes the library and support utilities, + including</p> + + <ul> + <li><a href="https://invisible-island.net/ncurses/man/captoinfo.1m.html"><span class= + "part-name">captoinfo</span></a>, a termcap conversion + tool</li> + + <li><a href="https://invisible-island.net/ncurses/man/clear.1.html"><span class= + "part-name">clear</span></a>, utility for clearing the + screen</li> + + <li><a href="https://invisible-island.net/ncurses/man/infocmp.1m.html"><span class= + "part-name">infocmp</span></a>, the terminfo decompiler</li> + + <li><a href="https://invisible-island.net/ncurses/man/tabs.1.html"><span class= + "part-name">tabs</span></a>, set tabs on a terminal</li> + + <li><a href="https://invisible-island.net/ncurses/man/tic.1m.html"><span class= + "part-name">tic</span></a>, the terminfo compiler</li> + + <li><a href="https://invisible-island.net/ncurses/man/toe.1m.html"><span class= + "part-name">toe</span></a>, list (table of) terminfo + entries</li> + + <li><a href="https://invisible-island.net/ncurses/man/tput.1.html"><span class= + "part-name">tput</span></a>, utility for retrieving terminal + capabilities in shell scripts</li> + + <li><a href="https://invisible-island.net/ncurses/man/tset.1.html"><span class= + "part-name">tset</span></a>, to initialize the terminal</li> + </ul> + + <p>Full manual pages are provided for the library and tools.</p> + + <p>The <span class="main-name">ncurses</span> distribution is + available at <span class="main-name">ncurses</span>' <a href= + "https://invisible-island.net/ncurses/">homepage</a>:</p> + + <blockquote> + <p><a href= + "ftp://ftp.invisible-island.net/ncurses/">ftp://ftp.invisible-island.net/ncurses/</a> + or<br> + <a href= + "https://invisible-mirror.net/archives/ncurses/">https://invisible-mirror.net/archives/ncurses/</a>&nbsp;.</p> + </blockquote> + + <p>It is also available via anonymous FTP at the GNU distribution + site</p> + + <blockquote> + <p><a href= + "ftp://ftp.gnu.org/gnu/ncurses/">ftp://ftp.gnu.org/gnu/ncurses/</a>&nbsp;.</p> + </blockquote> + + <h2><a name="h2-release-notes" id="h2-release-notes">Release + Notes</a></h2> + + <p>These notes are for <span class="main-name">ncurses</span> + 6.3, released <strong>October 21, 2021</strong>.</p> + + <p>This release is designed to be source-compatible with + <span class="main-name">ncurses</span> 5.0 through 6.2; 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 + to reflect improvements to the <span class= + "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>The most <a href="#h3-bug-fixes">important + bug-fixes/improvements</a> dealt with portability 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.2 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> + + <p>There are a few new features:</p> + + <ul> + <li> + <p>A new (experimental) driver, for the Windows Terminal + configuration is provided.</p> + </li> + + <li> + <p>A script is provided which enables <a href= + "https://invisible-island.net/ncurses/ncurses-openbsd.html">OpenBSD</a> users to + upgrade their system to use ncurses 6.3 (OpenBSD developers + are also invited to do this).</p> + </li> + </ul> + + <p>Additionally, to improve performance other changes (and + extensions) are provided in this release:</p> + + <ul> + <li> + <p>modify lib_mouse.c to check for out-of-range button + numbers, convert those to position reports.</p> + </li> + + <li> + <p>add sp-funcs for <a href= + "https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-erasechar_-erasewchar"> + erasewchar</a>, <a href= + "https://invisible-island.net/ncurses/man/curs_termattrs.3x.html#h3-killchar_-killwchar"> + killwchar</a>.</p> + </li> + </ul> + + <h4><a name="h4-fixes-library" id="h4-fixes-library">Other + improvements</a></h4> + + <p>These are revised features:</p> + + <ul> + <li>modify wgetnstr, wgetn_wstr to improve compatibility with + SVr4 curses in its treatment of interrupt and quit + characters</li> + </ul> + + <p>These were done to limit or ultimately deprecate features:</p> + + <ul> + <li> + <p>mark wgetch-events feature as deprecated.</p> + + <ul> + <li> + <p>prevent <tt>KEY_EVENT</tt> from appearing in + <tt>curses.h</tt> unless the configure option + <code>--enable-wgetch-events</code> is used.</p> + </li> + + <li> + <p>modify <tt>MKkey_defs.sh</tt> to hide ncurses' + definition of <tt>KEY_EVENTS</tt> to reduce <em>Visual + Studio C++</em> redefinition warnings.</p> + </li> + </ul> + </li> + + <li> + <p>reduce build-warnings by excluding ncurses-internals from + deprecation warnings.</p> + </li> + </ul> + + <p>These are improvements to existing features:</p> + + <ul> + <li> + <p>drop symbols <em>GCC_PRINTF</em> and <em>GCC_SCANF</em> + from &lt;curses.h&gt;, to simplify use.</p> + </li> + + <li> + <p>apply gcc format attribute to prototypes which use a + va_list parameter rather than a &ldquo;<tt>...</tt>&rdquo; + variable-length parameter list.</p> + </li> + + <li> + <p>modify &lt;term.h&gt; so that it is not necessary to + include &lt;curses.h&gt; before &lt;term.h&gt;.</p> + </li> + + <li> + <p>provide for wide-characters as background character in + wbkgrnd</p> + </li> + + <li> + <p>improve parameter-checking for tparm, adding function + _nc_tiparm() to handle the most-used case, which accepts only + numeric parameters.</p> + </li> + + <li> + <p>use return-value from <em>vsnprintf</em> to reallocate as + needed to allow for buffers larger than the screen size.</p> + </li> + + <li> + <p>add another <em>fflush(stdout)</em> in <em>_nc_flush</em> + to handle time-delays in the middle of strings such as flash + when the application uses low-level calls rather than + curses.</p> + </li> + </ul> + + <p>These are corrections to existing features:</p> + + <ul> + <li> + <p>add a check to guard against <em>repeat_char</em> emitting + digits which could be interpreted as BSD-style padding when + <tt>--enable-bsdpad</tt> is configured.</p> + </li> + + <li> + <p>check for screen size-change in <a href= + "https://invisible-island.net/ncurses/man/curs_scr_dump.3x.html">scr_init</a> and + <a href= + "https://invisible-island.net/ncurses/man/curs_scr_dump.3x.html">scr_restore</a>, in + case a screen dump does not match the current screen + dimensions</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:</p> + + <dl> + <dt><span class="part-name"><a href= + "https://invisible-island.net/ncurses/man/tabs.1.html">tabs</a></span> + </dt> + + <dd> + <ul> + <li> + <p>implement &ldquo;<tt>+m</tt>&rdquo; option</p> + </li> + </ul> + </dd> + + <dt><span class="part-name"><a href= + "https://invisible-island.net/ncurses/man/tic.1m.html">tic</a></span> + </dt> + + <dd> + <ul> + <li> + <p>add check for duplicate &ldquo;<tt>use=</tt>&rdquo; + clauses.</p> + </li> + + <li> + <p>add check to report instances where <tt>tparm</tt> + would detect an error in an expression.</p> + </li> + + <li> + <p>add user-defined capabilities from <em>mintty</em> to + <tt>Caps-ncurses</tt>, for checking consistency.</p> + </li> + + <li> + <p>improve warning when oc/op do not mention SGR 39/49 + for <em>xterm</em> compatible <code>XT</code> flag.</p> + </li> + + <li> + <p>improve checks for number of parameters of + <code>smglp</code>, <code>smgrp</code>, + <code>smgtp</code>, and <code>smgbp</code>.</p> + </li> + + <li> + <p>improve &ldquo;<tt>-c</tt>&rdquo; option to validate + the number and type of parameters and compare against + expected number/type before deciding which set of + parameter-lists to use in tparm calls.</p> + </li> + + <li> + <p>improve check for errors detected in + <code>tparm</code>.</p> + </li> + + <li> + <p>improve format of output, to ensure that the messages + contain only printable text.</p> + </li> + + <li> + <p>modify to eliminate unnecessary + &ldquo;<code>\</code>&rdquo; to escape + &ldquo;<code>:</code>&rdquo; in terminfo format.</p> + </li> + + <li> + <p>remove check that assumes that none or both + parameterized and non-parameterized margin-setting + capabilities are present.</p> + </li> + </ul> + </dd> + + <dt><span class="part-name"><a href= + "https://invisible-island.net/ncurses/man/toe.1m.html">toe</a></span> + </dt> + + <dd> + <ul> + <li> + <p>modify output of &ldquo;<tt>toe -as</tt>&rdquo; to + show first description found rather than the last.</p> + </li> + + <li> + <p>add a check to ensure that a &ldquo;termcap + file&rdquo; is text rather than binary.</p> + </li> + </ul> + </dd> + + <dt><span class="part-name"><a href= + "https://invisible-island.net/ncurses/man/tput.1.html">tput</a></span> + </dt> + + <dd> + <ul> + <li> + <p>modify to allow multiple commands per line.</p> + </li> + + <li> + <p>improve parameter-checking by analyzing all extended + string capabilities, e.g., as used in the <code>Cs</code> + and <code>Ms</code> capabilities of the <em>tmux</em> + description.</p> + </li> + + <li> + <p>make warning messages consistently using alias names + when those are used, rather than the underlying program's + name.</p> + </li> + + <li> + <p>improve usage message for aliases such as + <em>clear</em>, by eliminating <em>tput</em>-specific + portions.</p> + </li> + + <li> + <p>modify initialization to avoid opening + <tt>/dev/tty</tt> for cases other than + <em>reset/init</em>, e.g., for <em>clear</em>.</p> + </li> + </ul> + </dd> + </dl> + + <h4><a name="h4-examples" id="h4-examples">Examples</a></h4> + + <p>Along with the library and utilities, improvements were made + to the <a href= + "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a>. Most of + this activity aimed at improving the test-packages. A few changes + are more generally useful, e.g., for the main ncurses + test-program, and for analyzing traces using the + <em>tracemunch</em> script:</p> + + <ul> + <li> + <p>add &ldquo;<tt>-r</tt>&rdquo; option to the <em>dots</em> + test-programs, to help with scripting a performance + comparison.</p> + </li> + + <li> + <p>build-fix for <em>test_opaque</em>, for configurations + without opaque curses structs, e.g., ncurses 5.7.</p> + </li> + + <li> + <p>improve <em>tracemunch</em> logic for "RUN" + compaction.</p> + </li> + + <li> + <p>improve <em>tracemunch</em>'s coverage of form/menu/panel + libraries.</p> + </li> + + <li> + <p>improve <em>tracemunch</em>'s checking/reporting the type + for the first parameter, e.g., "WINDOW*" rather than + "#1".</p> + </li> + + <li> + <p>modify <em>tracemunch</em> and the panel library to show + readable traces for panel- and user-pointers.</p> + </li> + </ul> + + <p>There are other new demo/test programs and reusable + examples:</p> + + <dl> + <dt><span class="part-name"><em>back_ground</em></span> + </dt> + + <dd>to exercise the wide-character background functions.</dd> + + <dt><span class="part-name"><em>move_field</em></span> + </dt> + + <dd>to demonstrate <a href= + "https://invisible-island.net/ncurses/man/form_field.3x.html">move_field</a>, and a stub + for a corresponding demo of <a href= + "https://invisible-island.net/ncurses/man/form_field_new.3x.html">dup_field</a>.</dd> + + <dt><span class="part-name"><em>test_tparm</em></span> + </dt> + + <dd>for checking <em>tparm</em> changes.</dd> + </dl> + + <h3><a name="h3-database" id="h3-database">Terminal database</a></h3> + + <p>There are several new terminal descriptions:</p> + + <blockquote style="word-break:keep-all"> + <p><tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-absolute">absolute</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-att610_cvis">att610+cvis</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot">foot</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-foot-direct">foot-direct</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-hp98550-color">hp98550-color</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-hpterm-color2">hpterm-color2</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-hterm">hterm</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-hterm-256color">hterm-256color</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-linux-s">linux-s</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty_keypad">putty+keypad</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty_screen">putty+screen</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-putty-screen">putty-screen</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-screen.linux-s">screen.linux-s</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-scrt/securecrt">scrt/securecrt</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux-direct">tmux-direct</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt220_cvis">vt220+cvis</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt220_cvis8">vt220+cvis8</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt220_pcedit">vt220+pcedit</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt220_vtedit">vt220+vtedit</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt220-base">vt220-base</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt52_keypad">vt52+keypad</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_256color2">xterm+256color2</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_88color2">xterm+88color2</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-direct16">xterm-direct16</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-direct256">xterm-direct256</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_nofkeys">xterm+nofkeys</a></tt>, + and <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_nopcfkeys">xterm+nopcfkeys</a></tt>.</p> + </blockquote> + + <p>There are many changes to existing terminal descriptions. Some + were updates to several descriptions:</p> + + <ul> + <li>correct use-ordering in some <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-direct">xterm-direct</a> + flavors</li> + + <li>fix some sgr inconsistencies in <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-d230c">d230c</a>, <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-ibm6153">ibm6153</a>, + <a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-ibm6154">ibm6154</a>, + <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-ncrvt100an">ncrvt100an</a></li> + + <li>improve <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt50h">vt50h</a> and <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt52">vt52</a> based on + DECScope manual</li> + + <li>use <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-hp_arrows">hp+arrows</a> in a + few places</li> + + <li>use <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-hp_pfk-cr">hp+pfk-cr</a> in a + few places</li> + + <li>use <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt220_cvis">vt220+cvis</a> in + <tt>st</tt>, <tt>terminology</tt>, <tt>termite</tt> since they + ignore blinking-cursor detail in <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-att610_cvis">att610+cvis</a></li> + </ul> + + <p>while others affected specific descriptions. These were + retested, to take into account changes by their developers:</p> + + <blockquote> + <p><tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-kitty_common">kitty+common</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-mlterm3">mlterm3</a></tt>, + <tt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-ms-terminal">ms-terminal</a></tt></p> + </blockquote> + + <p>while these are specific fixes based on reviewing + documentation, user reports, or warnings from <span class= + "part-name">tic</span>:</p> + + <dl> + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-aaa_dec">aaa+dec</a>, + aaa+rv</dt> + + <dd>correct rmacs/smacs</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-aaa_rv">aaa+rv</a> + </dt> + + <dd>correct sgr</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-icl6404">icl6404</a> + </dt> + + <dd>correct csr</dd> + + <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-kitty">kitty</a> + </dt> + + <dd>use att610+cvis, xterm+tmux and ansi+enq</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-konsole-base">konsole-base</a> + </dt> + + <dd>re-enable "bel"</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-linux2.6">linux2.6</a> + </dt> + + <dd>fix pound-sign mapping in acsc</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-linux3.0">linux3.0</a> + </dt> + + <dd>modify to reflect default mapping of shift-tab by kbd + 1.14</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-pccons">pccons</a> + </dt> + + <dd>fill in some missing pieces, to make it comparable to the + vt220 entry</dd> + + <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-putty">putty</a> + </dt> + + <dd>use vt100+fnkeys, add rep</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-screen">screen</a> + </dt> + + <dd>use vt100+enq</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-terminator">terminator</a> + </dt> + + <dd>corrected tsl capability</dd> + + <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-ti916">ti916</a> + </dt> + + <dd>correct cup</dd> + + <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-tmux">tmux</a> + </dt> + + <dd>change kbs to ^?</dd> + + <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-vt220">vt220</a> + </dt> + + <dd>use vt220+cvis</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-vt420_lrmm">vt420+lrmm</a> + </dt> + + <dd>add smglp and smgrp</dd> + + <dt><a href="https://invisible-island.net/ncurses/terminfo.src.html#tic-vt420">vt420</a> + </dt> + + <dd>use vt420+lrmm</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-new">xterm-new</a> + </dt> + + <dd>add nel</dd> + + <dt><a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm-vt52">xterm-vt52</a> + </dt> + + <dd>use vt52+keypad</dd> + </dl> + + <p>A few entries use extensions (user-defined terminal + capabilities):</p> + + <ul> + <li>add shifted Linux console keys in <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-linux_sfkeys">linux+sfkeys</a> + entry for <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-screen.linux">screen.linux</a></li> + + <li>add Smulx to <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-alacritty">alacritty</a></li> + + <li>add kbeg to <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_keypad">xterm+keypad</a> + to accommodate termcap applications</li> + + <li>add extensions in <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-xterm_tmux">xterm+tmux</a> + and <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-ecma_strikeout">ecma+strikeout</a> + to <a href= + "https://invisible-island.net/ncurses/terminfo.src.html#tic-ms-terminal">ms-terminal</a>, + but cancel the non-working Cr and Ms capabilities</li> + </ul> + + <h3><a name="h3-documentation" id= + "h3-documentation">Documentation</a></h3> + + <p>As usual, this release</p> + + <ul> + <li> + <p>improves documentation by describing new features,</p> + </li> + + <li> + <p>attempts to improve the description of features which + users have found confusing</p> + </li> + + <li> + <p>fills in overlooked descriptions of features which were + described in the <a href="https://invisible-island.net/ncurses/NEWS.html">NEWS</a> file + but treated sketchily in manual pages.</p> + </li> + </ul> + + <p>In addition to providing background information to explain + these features and show how they evolved, there are corrections, + clarifications, etc.:</p> + + <ul> + <li> + <p>Corrections:</p> + + <ul> + <li> + <p>make <em>opts</em> extension for <a href= + "https://invisible-island.net/ncurses/man/curs_getcchar.3x.html#h3-getcchar"><tt>getcchar</tt></a> + work as documented for <a href= + "https://invisible-island.net/ncurses/announce-6.1.htmll#h4-new-library">ncurses + 6.1</a>, adding &ldquo;<tt>-g</tt>&rdquo; flag to + <em>demo_new_pair</em> to illustrate.</p> + </li> + + <li> + <p>modify <a href="https://invisible-island.net/ncurses/man/tset.1.html">tset</a> + &ldquo;-q&rdquo; option to refrain from modifying + terminal modes, to match the documentation.</p> + </li> + </ul> + </li> + + <li> + <p>New/improved history and portability sections:</p> + + <ul> + <li> + <p>improve documentation for <a href= + "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Parameterized-Strings"> + tparm</a> and static/dynamic variables.</p> + </li> + + <li> + <p>add history note to <a href= + "https://invisible-island.net/ncurses/man/curs_scanw.3x.html#h2-HISTORY">curs_scanw.3x</a> + for &lt;stdarg.h&gt; and &lt;varargs.h&gt;</p> + </li> + + <li> + <p>add history note to <a href= + "https://invisible-island.net/ncurses/man/curs_printw.3x.html#h2-HISTORY">curs_printw.3x</a> + for &lt;stdarg.h&gt; and &lt;varargs.h&gt;</p> + </li> + + <li> + <p>add portability note to <a href= + "https://invisible-island.net/ncurses/man/ncurses.3x.html#h3-Header-files">ncurses.3x</a> + regarding &lt;stdarg.h&gt;</p> + </li> + + <li> + <p>add historical notes to <a href= + "https://invisible-island.net/ncurses/man/tput.1.html#h2-HISTORY">tput</a>, + <a href="https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h2-HISTORY"> + curses-terminfo</a> and <a href= + "https://invisible-island.net/ncurses/man/curs_color.3x.html#h2-HISTORY">curses-color</a> + manpages based on source-code for SVr2, SVr3 and + SVr4.</p> + </li> + + <li> + <p>improve history section for <a href= + "https://invisible-island.net/ncurses/man/tset.1.html#h2-HISTORY">tset</a> manpage + based on the 1BSD tarball, which preceded BSD's SCCS + checkins by more than three years.</p> + </li> + </ul> + </li> + + <li> + <p>Other improvements:</p> + + <ul> + <li> + <p>explain in <a href= + "https://invisible-island.net/ncurses/man/ncurses.3x.html#h2-ALTERNATE-CONFIGURATIONS"> + ncurses.3x</a> that functions in the tinfo library do not + rely upon wide-characters.</p> + </li> + + <li> + <p>improve manual page for <a href= + "https://invisible-island.net/ncurses/man/panel.3x.html#h2-PORTABILITY">panel</a> + library, extending the portability section as well as + documenting error-returns.</p> + </li> + + <li> + <p>add section on margins to <a href= + "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Margins">terminfo.5</a>, + adapted from X/Open Curses.</p> + </li> + + <li> + <p>improve <a href= + "https://invisible-island.net/ncurses/man/term.5.html#h3-LEGACY-STORAGE-FORMAT">man/term.5</a> + section on legacy storage format.</p> + </li> + + <li> + <p>add a note in <a href= + "https://invisible-island.net/ncurses/man/terminfo.5.html#h3-Predefined-Capabilities"> + terminfo.5</a> explaining that no-parameter strings such + as <em><tt>sgr0</tt></em> or <em><tt>cnorm</tt></em> + should not be used with tparm.</p> + </li> + + <li> + <p>improve description of BSD-style padding in <a href= + "https://invisible-island.net/ncurses/man/curs_termcap.3x.html#h2-BUGS">curs_termcap.3x</a></p> + </li> + + <li> + <p>improve discussion of padding versus <tt>tparm</tt> + and <tt>tputs</tt> in <a href= + "https://invisible-island.net/ncurses/man/curs_terminfo.3x.html#h3-Formatting-Output"> + man/curs_terminfo.3x</a></p> + </li> + + <li> + <p>add a note in manual page to explain <a href= + "https://invisible-island.net/ncurses/man/curs_getch.3x.html#h3-Ungetting-characters"> + ungetch</a> vs <a href= + "https://invisible-island.net/ncurses/man/curs_get_wch.3x.html#h3-unget_wch">unget_wch</a>.</p> + </li> + + <li> + <p>improve description of error-returns in <a href= + "https://invisible-island.net/ncurses/man/curs_addch.3x.html#h2-RETURN-VALUE">waddch</a> + and <a href= + "https://invisible-island.net/ncurses/man/curs_addstr.3x.html#h2-RETURN-VALUE">waddnstr</a> + manual pages.</p> + </li> + </ul> + </li> + </ul> + + <p>There are no new manual pages (all of the manual page updates + are to existing pages).</p> + + <p>Some of the improvements are more subtle, relating to the way + the information is presented. For instance, hyphenation is + suppressed in the HTML files generated from manual pages because + an upgrade to <em>groff</em> gave noticeably poorer results, + interfering with the process of creating links between the + resulting webpages.</p> + + <h3><a name="h3-bug-fixes" id="h3-bug-fixes">Interesting + bug-fixes</a></h3> + + <p>While there were many bugs fixed during development of ncurses + 6.3, only a few (the reason for this release) were both important + and interesting. Most of the bug-fixes were for local issues + which did not affect compatibility across releases. Since those + are detailed in the <a href= + "https://invisible-island.net/ncurses/NEWS.html#t20211018">NEWS</a> file no elaboration is + needed here.</p> + + <p>The interesting bugs were:</p> + + <ul> + <li> + <p>modify <a href= + "https://invisible-island.net/ncurses/man/curs_bkgd.3x.html#h3-bkgd">wbkgd</a> and + <a href= + "https://invisible-island.net/ncurses/man/curs_bkgrnd.3x.html#h3-bkgrnd">wbkgrnd</a> to + avoid storing a null in the background character, because it + may be used in cases where the corresponding 0x80 is not + treated as a null.</p> + + <p>This was a regression introduced in ncurses 6.2 (<a href= + "https://lists.gnu.org/archive/html/bug-ncurses/2020-03/msg00000.html">reported</a> + on the mailing list), for which the workaround was to specify + a blank for the background character.</p> + </li> + + <li> + <p>remove output-related checks for <a href= + "https://invisible-island.net/ncurses/man/curs_outopts.3x.html">nl/nonl</a> (also + <a href= + "https://lists.gnu.org/archive/html/bug-ncurses/2020-09/msg00018.html"> + reported</a> on the mailing list).</p> + </li> + + <li> + <p>improve tparm implementation of <tt>%P</tt> and + <tt>%g</tt>, more closely matching SVr4 terminfo. Those + denote <em>static</em> and <em>dynamic</em> variables in + terminfo expressions.</p> + + <p>Exactly what those terms meant was never documented before + in any implementation of curses, aside from source code. + Unlike the other two fixes, the problem was discovered while + studying OpenBSD's version of <a href= + "https://invisible-island.net/ncurses/ncurses-openbsd.html#issue_tput">tset</a>.</p> + </li> + </ul> + + <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>There are no major changes. Several new options were added to + ease integration of packages with systems using different + versions of <em>GNAT</em> and <em>ncurses</em>. Also, + improvements were made to configure checks.</p> + + <h4><a name="h4-config-options" id= + "h4-config-options">Configuration options</a></h4> + + <p>There are a few new/modified configure options:</p> + + <dl> + <dt><tt>--enable-fvisibility</tt> + </dt> + + <dd> + <p>new configure option and check for <em>gcc</em> + <tt>-fvisibility=hidden</tt> feature</p> + </dd> + + <dt><tt>--enable-leaks</tt> + </dt> + + <dd> + <p>corrected to allow turning leak-checking off later in a + set of options.</p> + </dd> + + <dt><tt>--enable-stdnoreturn</tt> + </dt> + + <dd> + <p>new configure option makes the <code>_Noreturn</code> + keyword optional to ease transition.</p> + </dd> + + <dt><tt>--disable-pkg-ldflags</tt> + </dt> + + <dd> + <p>revised option also controls whether <code>$LDFLAGS</code> + from the build is provided in &ldquo;<tt>-config</tt>&rdquo; + and &ldquo;<tt>.pc</tt>&rdquo; files.</p> + </dd> + + <dt><tt>--disable-root-access</tt> + </dt> + + <dd> + <p>add configure option which tells ncurses to disallow most + file-opens by setuid processes.</p> + </dd> + + <dt><tt>--disable-wattr-macros</tt> + </dt> + + <dd> + <p>changed default to help packagers who reuse wide ncursesw + header file with non-wide ncurses library.</p> + </dd> + + <dt><tt>--with-pkg-config-libdir</tt> + </dt> + + <dd> + <p>revised option uses the actual search path from + <em>pkg-config</em> or <em>pkgconf</em> using the output from + <tt>--debug</tt>.</p> + </dd> + + <dt><tt>--with-ada-libname</tt><br> + <tt>--with-form-libname</tt><br> + <tt>--with-menu-libname</tt><br> + <tt>--with-panel-libname</tt> + </dt> + + <dd> + <p>new several <tt>--with-<em>xxx</em>-libname</tt> options, + to help with pkgsrc</p> + </dd> + </dl> + + <h3><a name="h3-portability" id="h3-portability">Portability</a></h3> + + <p>Many of the portability changes are implemented via the + configure script:</p> + + <ul> + <li> + <p>add a special case in the configure script to work around + one of the build-time breakages reported for <a href= + "https://invisible-island.net/ncurses/ncurses-openbsd.html">OpenBSD 6</a> here:</p> + + <blockquote> + <p><a href= + "https://www.mail-archive.com/bugs@openbsd.org/msg13200.html"> + https://www.mail-archive.com/bugs@openbsd.org/msg13200.html</a></p> + </blockquote> + </li> + + <li> + <p>modify configure check for <em>libtool</em> to prevent + accidental use of an OpenBSD program which uses the same + name.</p> + </li> + + <li> + <p>modify configuration checks for build-time tic/infocmp to + use <em>AC_CHECK_TOOL</em>. That can still be overridden by + <tt>--with-tic-path</tt> and <tt>--with-infocmp-path</tt> + when fallbacks are used, but even if not using fallbacks, the + improved check may help with cross-compiling.</p> + </li> + + <li> + <p>relax modification-time comparison in + <em>CF_LINK_FUNCS</em> to allow it to accept link() function + with NFS filesystems which change the mtime on the link + target, e.g., several BSD systems.</p> + </li> + + <li> + <p>modify configure check for c89/c99 aliases of + <em>clang</em> to use its <tt>-std</tt> option instead, + because some platforms, in particular macOS, do not provide + workable c89/c99 aliases.</p> + </li> + + <li> + <p>modify <em>CF_NCURSES_CONFIG</em> to work around + <em>Xcode</em>'s c99 "-W" option, which conflicts with + conventional use for passing linker options.</p> + </li> + + <li> + <p>modify configure scripts to filter out redefinitions of + _XOPEN_SOURCE, e.g., for NetBSD which generally supports 500, + but 600 is needed for ncursesw.</p> + </li> + </ul> + + <p>Here are some of the other portability fixes:</p> + + <ul> + <li> + <p>change configure-check and source-code for gcc's noreturn + attribute to assume it is a prefix rather than suffix, + matching c11's _Noreturn convention.</p> + </li> + + <li> + <p>modify mk-1st.awk to account for extra-suffix configure + option.</p> + </li> + + <li> + <p>build-fix for termsort module when configured with + termcap.</p> + </li> + + <li> + <p>modify configure script and makefiles to support ".PHONY" + make program feature.</p> + </li> + + <li> + <p>amend <em>libtool</em> configuration to add dependency for + install.tic, etc., in ncurses/Makefile on the lower-level + libraries.</p> + </li> + + <li> + <p>modify Ada95 source-generation utility to write to a file + given as parameter rather than to the standard output, + allowing builds with MinGW.</p> + </li> + + <li> + <p>amend tic/infocmp check to allow for the respective tool's + absence.</p> + </li> + + <li> + <p>build-fixes for gnat 10.1.1, whose gnatmake drops + integration with gprbuild.</p> + </li> + + <li> + <p>correct configure version-check/warning for g++ to allow + for 10.x</p> + </li> + </ul> + + <hr> + + <h2><a name="h2-features" id="h2-features">Features of + <span class="main-name">ncurses</span></a></h2> + + <p>The <span class="main-name">ncurses</span> package is fully + upward-compatible with SVr4 (System V Release 4) curses:</p> + + <ul> + <li> + <p>All of the SVr4 calls have been implemented (and are + documented).</p> + </li> + + <li> + <p><span class="main-name">ncurses</span> supports all of the + for SVr4 curses features including keyboard mapping, color, + forms-drawing with ACS characters, and automatic recognition + of keypad and function keys.</p> + </li> + + <li> + <p><span class="main-name">ncurses</span> provides these SVr4 + add-on libraries (not part of X/Open Curses):</p> + + <ul> + <li> + <p>the panels library, supporting a stack of windows with + backing store.</p> + </li> + + <li> + <p>the menus library, supporting a uniform but flexible + interface for menu programming.</p> + </li> + + <li> + <p>the form library, supporting data collection through + on-screen forms.</p> + </li> + </ul> + </li> + + <li> + <p><span class="main-name">ncurses</span>'s terminal database + is fully compatible with that used by SVr4 curses.</p> + + <ul> + <li> + <p><span class="main-name">ncurses</span> supports + user-defined capabilities which it can see, but which are + hidden from SVr4 curses applications using the + <em>same</em> terminal database.</p> + </li> + + <li> + <p>It can be optionally configured to match the format + used in related systems such as AIX and Tru64.</p> + </li> + + <li> + <p>Alternatively, <span class="main-name">ncurses</span> + can be configured to use hashed databases rather than the + directory of files used by SVr4 curses.</p> + </li> + </ul> + </li> + + <li> + <p>The <span class="main-name">ncurses</span> utilities have + options to allow you to filter terminfo entries for use with + less capable <em>curses</em>/<em>terminfo</em> versions such + as the HP-UX and AIX ports.</p> + </li> + </ul> + + <p>The <span class="main-name">ncurses</span> package also has + many useful extensions over SVr4:</p> + + <ul> + <li> + <p>The API is 8-bit clean and base-level conformant with the + X/OPEN curses specification, XSI curses (that is, it + implements all <em>BASE</em> level features, and most + <em>EXTENDED</em> features). It includes many function calls + not supported under SVr4 curses (but portability of all calls + is documented so you can use the SVr4 subset only).</p> + </li> + + <li> + <p>Unlike SVr3 curses, <span class="main-name">ncurses</span> + can write to the rightmost-bottommost corner of the screen if + your terminal has an insert-character capability.</p> + </li> + + <li> + <p>Ada95 and C++ bindings.</p> + </li> + + <li> + <p>Support for mouse event reporting with X Window xterm and + FreeBSD and OS/2 console windows.</p> + </li> + + <li> + <p>Extended mouse support via Alessandro Rubini's gpm + package.</p> + </li> + + <li> + <p>The function <code>wresize</code> allows you to resize + windows, preserving their data.</p> + </li> + + <li> + <p>The function <code>use_default_colors</code> allows you to + use the terminal's default colors for the default color pair, + achieving the effect of transparent colors.</p> + </li> + + <li> + <p>The functions <code>keyok</code> and + <code>define_key</code> allow you to better control the use + of function keys, e.g., disabling the <span class= + "main-name">ncurses</span> KEY_MOUSE, or by defining more + than one control sequence to map to a given key code.</p> + </li> + + <li> + <p>Support for direct-color terminals, such as modern + xterm.</p> + </li> + + <li> + <p>Support for 256-color terminals, such as modern xterm.</p> + </li> + + <li> + <p>Support for 16-color terminals, such as <em>aixterm</em> + and <em>modern xterm</em>.</p> + </li> + + <li> + <p>Better cursor-movement optimization. The package now + features a cursor-local-movement computation more efficient + than either BSD's or System V's.</p> + </li> + + <li> + <p>Super hardware scrolling support. The screen-update code + incorporates a novel, simple, and cheap algorithm that + enables it to make optimal use of hardware scrolling, + line-insertion, and line-deletion for screen-line movements. + This algorithm is more powerful than the 4.4BSD curses + <code>quickch</code> routine.</p> + </li> + + <li> + <p>Real support for terminals with the magic-cookie glitch. + The screen-update code will refrain from drawing a highlight + if the magic- cookie unattributed spaces required just before + the beginning and after the end would step on a non-space + character. It will automatically shift highlight boundaries + when doing so would make it possible to draw the highlight + without changing the visual appearance of the screen.</p> + </li> + + <li> + <p>It is possible to generate the library with a list of + pre-loaded fallback entries linked to it so that it can serve + those terminal types even when no terminfo tree or termcap + file is accessible (this may be useful for support of + screen-oriented programs that must run in single-user + mode).</p> + </li> + + <li> + <p>The <a href="https://invisible-island.net/ncurses/man/tic.1m.html"><span class= + "part-name">tic</span></a>/<a href= + "https://invisible-island.net/ncurses/man/captoinfo.1m.html">captoinfo</a> utility + provided with <span class="main-name">ncurses</span> has the + ability to translate many termcaps from the XENIX, IBM and + AT&amp;T extension sets.</p> + </li> + + <li> + <p>A BSD-like <a href= + "https://invisible-island.net/ncurses/man/tset.1.html"><span class= + "part-name">tset</span></a> utility is provided.</p> + </li> + + <li> + <p>The <span class="main-name">ncurses</span> library and + utilities will automatically read terminfo entries from + $HOME/.terminfo if it exists, and compile to that directory + if it exists and the user has no write access to the system + directory. This feature makes it easier for users to have + personal terminfo entries without giving up access to the + system terminfo directory.</p> + </li> + + <li> + <p>You may specify a path of directories to search for + compiled descriptions with the environment variable + TERMINFO_DIRS (this generalizes the feature provided by + TERMINFO under stock System V.)</p> + </li> + + <li> + <p>In terminfo source files, use capabilities may refer not + just to other entries in the same source file (as in System + V) but also to compiled entries in either the system terminfo + directory or the user's $HOME/.terminfo directory.</p> + </li> + + <li> + <p>The table-of-entries utility <a href= + "https://invisible-island.net/ncurses/man/toe.1m.html"><span class= + "part-name">toe</span></a> makes it easy for users to see + exactly what terminal types are available on the system.</p> + </li> + + <li> + <p>The library meets the XSI requirement that every macro + entry point has a corresponding function which may be linked + (and will be prototype-checked) if the macro definition is + disabled with <code>#undef</code>.</p> + </li> + + <li> + <p>Extensive documentation is provided (see the <em><a href= + "https://invisible-island.net/ncurses/ncurses.faq.html#additional_reading">Additional + Reading</a></em> section of the <em><a href= + "https://invisible-island.net/ncurses/ncurses.faq.html"><span class= + "main-name">ncurses</span> FAQ</a></em> for online + documentation).</p> + </li> + </ul> + + <h2><a name="h2-who-uses" id="h2-who-uses">Applications using + <span class="main-name">ncurses</span></a></h2> + + <p>The <span class="main-name">ncurses</span> distribution + includes a selection of test programs (including a few games). + These are available separately as <a href= + "https://invisible-island.net/ncurses/ncurses-examples.html">ncurses-examples</a></p> + + <p>The ncurses library has been tested with a wide variety of + applications including:</p> + + <blockquote> + <dl> + <dt><span class="part-name">aptitude</span> + </dt> + + <dd> + <p>FrontEnd to Apt, the debian package manager</p> + + <p><a href= + "https://wiki.debian.org/Aptitude">https://wiki.debian.org/Aptitude</a></p> + </dd> + + <dt><span class="part-name">cdk</span> + </dt> + + <dd> + <p>Curses Development Kit</p> + + <p><a href="https://invisible-island.net/cdk/">https://invisible-island.net/cdk/</a><br> + </p> + </dd> + + <dt><span class="part-name">ded</span> + </dt> + + <dd> + <p>directory-editor</p> + + <p><a href="https://invisible-island.net/ded/">https://invisible-island.net/ded/</a></p> + </dd> + + <dt><span class="part-name">dialog</span> + </dt> + + <dd> + <p>the underlying application used in Slackware's setup, + and the basis for similar install/configure applications on + many systems.</p> + + <p><a href="https://invisible-island.net/dialog/">https://invisible-island.net/dialog/</a></p> + </dd> + + <dt><span class="part-name">lynx</span> + </dt> + + <dd> + <p>the text WWW browser</p> + + <p><a href= + "https://lynx.invisible-island.net/">https://lynx.invisible-island.net/</a></p> + </dd> + + <dt><span class="part-name">mutt</span> + </dt> + + <dd> + <p>mail utility</p> + + <p><a href="http://www.mutt.org/">http://www.mutt.org/</a></p> + </dd> + + <dt><span class="part-name">ncftp</span> + </dt> + + <dd> + <p>file-transfer utility</p> + + <p><a href= + "https://www.ncftp.com/">https://www.ncftp.com/</a></p> + </dd> + + <dt><span class="part-name">nvi</span> + </dt> + + <dd> + <p>New vi uses ncurses.</p> + + <p><a href= + "https://sites.google.com/a/bostic.com/keithbostic/vi">https://sites.google.com/a/bostic.com/keithbostic/vi</a><br> + + </p> + </dd> + + <dt><span class="part-name">ranger</span> + </dt> + + <dd> + <p>A console file manager with VI key bindings in + <em>Python</em>.</p> + + <p><a href= + "https://ranger.github.io/">https://ranger.github.io/</a></p> + </dd> + + <dt><span class="part-name">tin</span> + </dt> + + <dd> + <p>newsreader, supporting color, MIME</p> + + <p><a href="http://www.tin.org/">http://www.tin.org/</a></p> + </dd> + + <dt><span class="part-name">vifm</span> + </dt> + + <dd> + <p>File manager with vi like keybindings</p> + + <p><a href="https://vifm.info/">https://vifm.info/</a></p> + </dd> + </dl> + </blockquote> + + <p>as well as some that use <span class= + "main-name">ncurses</span> for the terminfo support alone:</p> + + <blockquote> + <dl> + <dt><span class="part-name">minicom</span> + </dt> + + <dd> + <p>terminal emulator for serial modem connections</p> + + <p><a href= + "https://alioth.debian.org/projects/minicom/">https://alioth.debian.org/projects/minicom/</a></p> + </dd> + + <dt><span class="part-name">mosh</span> + </dt> + + <dd> + <p>a replacement for <code>ssh</code>.</p> + + <p><a href="https://mosh.org/">https://mosh.org/</a></p> + </dd> + + <dt><span class="part-name">tack</span> + </dt> + + <dd> + <p>terminfo action checker</p> + + <p><a href="https://invisible-island.net/ncurses/tack.html">https://invisible-island.net/ncurses/tack.html</a></p> + </dd> + + <dt><span class="part-name">tmux</span> + </dt> + + <dd> + <p>terminal multiplexor</p> + + <p><a href= + "https://github.com/tmux/tmux/wiki">https://github.com/tmux/tmux/wiki</a></p> + </dd> + + <dt><span class="part-name">vile</span> + </dt> + + <dd> + <p><em>vi-like-emacs</em> may be built to use the terminfo, + termcap or curses interfaces.</p> + + <p><a href="https://invisible-island.net/vile/">https://invisible-island.net/vile/</a></p> + </dd> + </dl> + </blockquote> + + <p>and finally, those which use only the termcap interface:</p> + + <blockquote> + <dl> + <dt><span class="part-name">emacs</span> + </dt> + + <dd> + <p>text editor</p> + + <p><a href= + "https://www.gnu.org/software/emacs/">https://www.gnu.org/software/emacs/</a></p> + </dd> + + <dt><span class="part-name">less</span> + </dt> + + <dd> + <p>The most commonly used <em>pager</em> (a program that + displays text files).</p> + + <p><a href= + "http://www.greenwoodsoftware.com/less/">http://www.greenwoodsoftware.com/less/</a></p> + </dd> + + <dt><span class="part-name">screen</span> + </dt> + + <dd> + <p>terminal multiplexor</p> + + <p><a href= + "https://www.gnu.org/software/screen/">https://www.gnu.org/software/screen/</a></p> + </dd> + + <dt><span class="part-name">vim</span> + </dt> + + <dd> + <p>text editor</p> + + <p><a href="https://www.vim.org/">https://www.vim.org/</a></p> + </dd> + </dl> + </blockquote> + + <h2><a name="h2-development" id="h2-development">Development + activities</a></h2> + + <p>Zeyd Ben-Halim started <span class="main-name">ncurses</span> + from a previous package pcurses, written by Pavel Curtis. Eric S. + Raymond continued development. J&uuml;rgen Pfeifer wrote most of + the form and menu libraries.</p> + + <p>Ongoing development work is done by <a href= + "mailto:dickey@invisible-island.net">Thomas E. Dickey</a>. Thomas + E. Dickey has acted as the maintainer for the Free Software + Foundation, which held a <a href= + "https://invisible-island.net/ncurses/ncurses-license.html">copyright on ncurses</a> for + releases 4.2 through 6.1. Following the release of ncurses 6.1, + effective as of release 6.2, copyright for ncurses reverted to + Thomas E. Dickey (see the <a href= + "https://invisible-island.net/ncurses/ncurses.faq.html#relicensed">ncurses FAQ</a> for + additional information).</p> + + <p>Contact the current maintainers at</p> + + <blockquote> + <a href="mailto:bug-ncurses@gnu.org">bug-ncurses@gnu.org</a> + </blockquote> + + <p>To join the ncurses mailing list, please write email to</p> + + <blockquote> + <a href= + "mailto:bug-ncurses-request@gnu.org">bug-ncurses-request@gnu.org</a> + </blockquote> + containing the line: + <blockquote> + <p><code>subscribe</code> + <em>&lt;name&gt;@&lt;host.domain&gt;</em></p> + </blockquote> + + <p>This list is open to anyone interested in helping with the + development and testing of this package.</p> + + <p>Beta versions of <span class="main-name">ncurses</span> are + made available at</p> + + <blockquote> + <p><a href= + "ftp://ftp.invisible-island.net/ncurses/current/">ftp://ftp.invisible-island.net/ncurses/current/</a> + and<br> + <a href= + "https://invisible-mirror.net/archives/ncurses/current/">https://invisible-mirror.net/archives/ncurses/current/</a>&nbsp;.</p> + </blockquote> + + <p>Patches to the current release are made available at</p> + + <blockquote> + <p><a href= + "ftp://ftp.invisible-island.net/ncurses/6.2/">ftp://ftp.invisible-island.net/ncurses/6.2/</a> + and<br> + <a href= + "https://invisible-mirror.net/archives/ncurses/6.2/">https://invisible-mirror.net/archives/ncurses/6.2/</a>&nbsp;.</p> + </blockquote> + + <p>There is an archive of the mailing list here:</p> + + <blockquote> + <p><a href= + "http://lists.gnu.org/archive/html/bug-ncurses">http://lists.gnu.org/archive/html/bug-ncurses</a> + (also <a href= + "https://lists.gnu.org/archive/html/bug-ncurses">https</a>)</p> + </blockquote> + + <h2><a name="h2-this-stuff" id="h2-this-stuff">Related + resources</a></h2> + + <p>The release notes make scattered references to these pages, + which may be interesting by themselves:</p> + + <ul> + <li><a href="https://invisible-island.net/ncurses/ncurses-license.html"><span class= + "main-name">ncurses</span> licensing</a></li> + + <li><a href="https://invisible-island.net/ncurses/ncurses-mapsyms.html">Symbol versioning + in <span class="main-name">ncurses</span></a></li> + + <li><a href="https://invisible-island.net/ncurses/ncurses-slang.html">Comments on + <span class="main-name">ncurses</span> versus <span class= + "main-name">slang</span> (S-Lang)</a></li> + + <li><a href="https://invisible-island.net/ncurses/ncurses-openbsd.html">Comments on + <span class="main-name">OpenBSD</span></a></li> + + <li><a href="https://invisible-island.net/ncurses/tack.html">tack &ndash; terminfo action + checker</a></li> + + <li><a href="https://invisible-island.net/ncurses/tctest.html">tctest &ndash; termcap + library checker</a></li> + + <li><a href= + "https://invisible-island.net/ncurses/ncurses.html#download_database">Terminal + Database</a></li> + </ul> + + <h2><a name="h2-other-stuff" id="h2-other-stuff">Other + resources</a></h2> + + <p>The distribution provides a newer version of the + terminfo-format terminal description file once maintained by + <a href="http://www.catb.org/~esr/terminfo/">Eric + Raymond</a>&nbsp;. Unlike the older version, the termcap and + terminfo data are provided in the same file, which also provides + several user-definable extensions beyond the X/Open + specification.</p> + + <p>You can find lots of information on terminal-related topics + not covered in the terminfo file at <a href= + "http://web.archive.org/web/*/http://www.cs.utk.edu/~shuford/terminal"> + Richard Shuford's archive</a>&nbsp;. The collection of computer + manuals at <a href= + "http://www.bitsavers.org/pdf/">bitsavers.org</a> has also been + useful.</p> + + <div class="nav"> + <ul> + <li><a href="#h2-overview">Overview</a></li> + + <li> + <a href="#h2-release-notes">Release Notes</a> + <ul> + <li> + <a href="#h3-library">Library improvements</a> + <ul> + <li><a href="#h4-new-library">New features</a></li> + + <li><a href="#h4-fixes-library">Other + improvements</a></li> + </ul> + </li> + + <li> + <a href="#h3-programs">Program improvements</a> + <ul> + <li><a href="#h4-utilities">Utilities</a></li> + + <li><a href="#h4-examples">Examples</a></li> + </ul> + </li> + + <li><a href="#h3-database">Terminal database</a></li> + + <li><a href="#h3-documentation">Documentation</a></li> + + <li><a href="#h3-bug-fixes">Interesting bug-fixes</a></li> + + <li> + <a href="#h3-config-config">Configuration changes</a> + <ul> + <li><a href="#h4-config-major">Major changes</a></li> + + <li><a href="#h4-config-options">Configuration + options</a></li> + </ul> + </li> + + <li><a href="#h3-portability">Portability</a></li> + </ul> + </li> + + <li><a href="#h2-features">Features of <span class= + "main-name">ncurses</span></a></li> + + <li><a href="#h2-who-uses">Applications using <span class= + "main-name">ncurses</span></a></li> + + <li><a href="#h2-development">Development activities</a></li> + + <li><a href="#h2-this-stuff">Related resources</a></li> + + <li><a href="#h2-other-stuff">Other resources</a></li> + </ul> + </div> +</body> +</html> diff --git a/deps/ncurses-6.3/doc/html/hackguide.html b/deps/ncurses-6.3/doc/html/hackguide.html new file mode 100644 index 0000000..71312a5 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/hackguide.html @@ -0,0 +1,969 @@ +<!-- + $Id: hackguide.html,v 1.33 2020/02/02 23:34:34 tom Exp $ + **************************************************************************** + * Copyright 2019,2020 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.2.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>A Hacker's Guide to NCURSES</h1> + + <h1>Contents</h1> + + <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> + + <h1><a name="abstract" id="abstract">Abstract</a></h1> + + <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> + + <h1><a name="objective" id="objective">Objective of the + Package</a></h1> + + <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 &mdash; stable and reliable code, wide + portability, good packaging, superior documentation.</li> + + <li>Featureful &mdash; 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 + &mdash; we cannot add features if it means breaking the portion + of the API corresponding to historical curses versions.</p> + + <h2><a name="whysvr4" id="whysvr4">Why System V Curses?</a></h2> + + <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> + + <h2><a name="extensions" id="extensions">How to Design + Extensions</a></h2> + + <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> + + <h1><a name="portability" id="portability">Portability and + Configuration</a></h1> + + <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> + + <h1><a name="documentation" id="documentation">Documentation + Conventions</a></h1> + + <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 <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> + + <h1><a name="bugtrack" id="bugtrack">How to Report Bugs</a></h1> + + <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> + subscribe &lt;name&gt;@&lt;host.domain&gt; +</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>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 &mdash; 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>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 &mdash; + a surprising number of the bugs we have seen are either + triggered or masked by these.</p> + </li> + + <li>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>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 &mdash; 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> + + <h1><a name="ncurslib" id="ncurslib">A Tour of the Ncurses + Library</a></h1> + + <h2><a name="loverview" id="loverview">Library Overview</a></h2> + + <p>Most of the library is superstructure &mdash; 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> + + <h2><a name="engine" id="engine">The Engine Room</a></h2> + + <h3><a name="input" id="input">Keyboard Input</a></h3> + + <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> + + <h3><a name="mouse" id="mouse">Mouse Events</a></h3> + + <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> + + <h3><a name="output" id="output">Output and Screen Updating</a></h3> + + <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> + + <h1><a name="fmnote" id="fmnote">The Forms and Menu Libraries</a></h1> + + <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> + + <h1><a name="tic" id="tic">A Tour of the Terminfo Compiler</a></h1> + + <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 + &ldquo;,&rdquo; or &ldquo;:&rdquo; 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> + + <h2><a name="nonuse" id="nonuse">Translation of + Non-<strong>use</strong> Capabilities</a></h2> + + <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> + + <h2><a name="uses" id="uses">Use Capability Resolution</a></h2> + + <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 &mdash; 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> + + <h2><a name="translation" id="translation">Source-Form + Translation</a></h2> + + <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> + + <h1><a name="utils" id="utils">Other Utilities</a></h1> + + <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> + + <h1><a name="style" id="style">Style Tips for Developers</a></h1> + + <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 &mdash; that is why the fifth + field (flags) is there.</p> + + <p>Have fun!</p> + + <h1><a name="port" id="port">Porting Hints</a></h1> + + <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 &ldquo;pure curses&rdquo;; + 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 &ldquo;pure curses&rdquo; 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 &lt;esr@snark.thyrsus.com&gt; + </address> + (Note: This is <em>not</em> the <a href="#bugtrack">bug + address</a>!) +</body> +</html> diff --git a/deps/ncurses-6.3/doc/html/index.html b/deps/ncurses-6.3/doc/html/index.html new file mode 100644 index 0000000..4837781 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/index.html @@ -0,0 +1,69 @@ +<!-- + $Id: index.html,v 1.9 2020/02/02 23:34:34 tom Exp $ + **************************************************************************** + * Copyright 2019,2020 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 Linux (vers 25 March 2009), see www.w3.org"> + + <title>Welcome to ncurses</title> + <link rel="author" href="mailto:bug-ncurses@gnu.org"> + <meta http-equiv="Content-Type" content= + "text/html; charset=us-ascii"> +</head> + +<body> + <h1>Welcome to ncurses</h1>From this index page you have access + to these further documents + + <ul> + <li>The <a href="announce.html">Announcement</a> of the current + version of ncurses.</li> + + <li>An <a href="ncurses-intro.html">Introduction</a> into + (n)curses programming.</li> + + <li>A <a href="hackguide.html">hackers guide</a> to + ncurses.</li> + + <li>A description of the <a href="Ada95.html">Ada95 + binding</a>, by J&uuml;rgen Pfeifer.</li> + + <li>A <a href="NCURSES-Programming-HOWTO.html">A short + tutorial</a>, by Pradeep Padala.</li> + </ul> + + <p>We also have HTML versions of all the ncurses <a href= + "man">manpages</a>.</p> +</body> +</html> diff --git a/deps/ncurses-6.3/doc/html/man/adacurses6-config.1.html b/deps/ncurses-6.3/doc/html/man/adacurses6-config.1.html new file mode 100644 index 0000000..66f34d8 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/adacurses6-config.1.html @@ -0,0 +1,146 @@ +<!-- + **************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2010-2014,2016 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. * + **************************************************************************** + * @Id: MKada_config.in,v 1.13 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>ADACURSES 1 User Commands</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">ADACURSES 1 User Commands</H1> +<PRE> +<STRONG>ADACURSES(1)</STRONG> User Commands <STRONG>ADACURSES(1)</STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + adacurses6-config - helper script for AdaCurses libraries + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>adacurses6-config</STRONG> [<EM>options</EM>] + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is a shell script which simplifies configuring an application to + use the AdaCurses library binding to ncurses. + + +</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> + <STRONG>--cflags</STRONG> + echos the gnat (Ada compiler) flags needed to compile with + AdaCurses. + + <STRONG>--libs</STRONG> echos the gnat libraries needed to link with AdaCurses. + + <STRONG>--version</STRONG> + echos the release+patchdate version of the ncurses libraries + used to configure and build AdaCurses. + + <STRONG>--help</STRONG> prints a list of the <STRONG>adacurses6-config</STRONG> script's options. + + If no options are given, <STRONG>adacurses6-config</STRONG> prints the combination of + <STRONG>--cflags</STRONG> and <STRONG>--libs</STRONG> that <STRONG>gnatmake</STRONG> expects (see example). + + +</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE> + For example, supposing that you want to compile the "Hello World!" + program for AdaCurses. Make a file named "hello.adb": + with Terminal_Interface.Curses; use Terminal_Interface.Curses; + + procedure Hello is + + Visibility : Cursor_Visibility := Invisible; + done : Boolean := False; + c : Key_Code; + + begin + + Init_Screen; + Set_Echo_Mode (False); + + Set_Cursor_Visibility (Visibility); + Set_Timeout_Mode (Standard_Window, Non_Blocking, 0); + + Move_Cursor (Line =&gt; Lines / 2, Column =&gt; (Columns - 12) / 2); + Add (Str =&gt; "Hello World!"); + + while not done loop + + c := Get_Keystroke (Standard_Window); + case c is + when Character'Pos ('q') =&gt; done := True; + when others =&gt; null; + end case; + + Nap_Milli_Seconds (50); + end loop; + + End_Windows; + + end Hello; + + Then, using + gnatmake `adacurses-config --cflags` hello -largs `adacurses- + config --libs` + + or (simpler): + gnatmake hello `adacurses-config` + + you will compile and link the program. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG>ADACURSES(1)</STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-OPTIONS">OPTIONS</a></li> +<li><a href="#h2-EXAMPLE">EXAMPLE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/captoinfo.1m.html b/deps/ncurses-6.3/doc/html/man/captoinfo.1m.html new file mode 100644 index 0000000..fc21e32 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/captoinfo.1m.html @@ -0,0 +1,227 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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. * + **************************************************************************** + * @Id: captoinfo.1m,v 1.30 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>captoinfo 1m</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">captoinfo 1m</H1> +<PRE> +<STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG> <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>captoinfo</STRONG> - convert a <EM>termcap</EM> description into a <EM>terminfo</EM> description + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>captoinfo</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>] [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> ... + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + <STRONG>captoinfo</STRONG> looks in each given text <EM>file</EM> for <STRONG>termcap</STRONG> descriptions. For + each one found, an equivalent <STRONG>terminfo</STRONG> description is written to + standard output. Termcap <STRONG>tc</STRONG> capabilities are translated directly to + terminfo <STRONG>use</STRONG> capabilities. + + If no <EM>file</EM> is given, then the environment variable <STRONG>TERMCAP</STRONG> is used for + the filename or entry. If <STRONG>TERMCAP</STRONG> is a full pathname to a file, only + the terminal whose name is specified in the environment variable <STRONG>TERM</STRONG> + is extracted from that file. If the environment variable <STRONG>TERMCAP</STRONG> is + not set, then the file <STRONG>/usr/share/terminfo</STRONG> is read. + + <STRONG>-v</STRONG> print out tracing information on standard error as the program + runs. + + <STRONG>-V</STRONG> print out the version of the program in use on standard error and + exit. + + <STRONG>-1</STRONG> cause the fields to print out one to a line. Otherwise, the + fields will be printed several to a line to a maximum width of 60 + characters. + + <STRONG>-w</STRONG> change the output to <EM>width</EM> characters. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /usr/share/terminfo Compiled terminal description database. + + +</PRE><H2><a name="h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></H2><PRE> + Some obsolete nonstandard capabilities will automatically be translated + into standard (SVr4/XSI Curses) terminfo capabilities by <STRONG>captoinfo</STRONG>. + Whenever one of these automatic translations is done, the program will + issue an notification to stderr, inviting the user to check that it has + not mistakenly translated a completely unknown and random capability + and/or syntax error. + + Nonstd Std From Terminfo + name name capability + ----------------------------------------------- + BO mr AT&amp;T enter_reverse_mode + CI vi AT&amp;T cursor_invisible + CV ve AT&amp;T cursor_normal + DS mh AT&amp;T enter_dim_mode + EE me AT&amp;T exit_attribute_mode + FE LF AT&amp;T label_on + FL LO AT&amp;T label_off + XS mk AT&amp;T enter_secure_mode + EN @7 XENIX key_end + GE ae XENIX exit_alt_charset_mode + GS as XENIX enter_alt_charset_mode + HM kh XENIX key_home + LD kL XENIX key_dl + PD kN XENIX key_npage + PN po XENIX prtr_off + PS pf XENIX prtr_on + PU kP XENIX key_ppage + + RT @8 XENIX kent + UP ku XENIX kcuu1 + KA k; Tek key_f10 + KB F1 Tek key_f11 + KC F2 Tek key_f12 + KD F3 Tek key_f13 + KE F4 Tek key_f14 + KF F5 Tek key_f15 + BC Sb Tek set_background + FC Sf Tek set_foreground + HS mh Iris enter_dim_mode + + XENIX termcap also used to have a set of extension capabilities for + forms drawing, designed to take advantage of the IBM PC high-half + graphics. They were as follows: + + Cap Graphic + ----------------------------- + G2 upper left + G3 lower left + G1 upper right + G4 lower right + GR pointing right + GL pointing left + GU pointing up + GD pointing down + GH horizontal line + GV vertical line + GC intersection + G6 upper left + G7 lower left + G5 upper right + G8 lower right + Gr tee pointing right + Gr tee pointing left + Gu tee pointing up + Gd tee pointing down + Gh horizontal line + Gv vertical line + Gc intersection + GG acs magic cookie count + + If the single-line capabilities occur in an entry, they will + automatically be composed into an <STRONG>acsc</STRONG> string. The double-line + capabilities and <STRONG>GG</STRONG> are discarded with a warning message. + + IBM's AIX has a terminfo facility descended from SVr1 terminfo but + incompatible with the SVr4 format. The following AIX extensions are + automatically translated: + + IBM XSI + ------------- + ksel kslt + kbtab kcbt + font0 s0ds + font1 s1ds + font2 s2ds + font3 s3ds + + Additionally, the AIX <EM>box1</EM> capability will be automatically translated + to an <STRONG>acsc</STRONG> string. + + Hewlett-Packard's terminfo library supports two nonstandard terminfo + capabilities <STRONG>meml</STRONG> (memory lock) and <STRONG>memu</STRONG> (memory unlock). These will + be discarded with a warning message. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + This utility is actually a link to <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, running in <EM>-I</EM> mode. You + can use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and <STRONG>-x</STRONG>. + + The verbose option is not identical to SVr4's. Under SVr4, instead of + following the <STRONG>-v</STRONG> with a trace level n, you repeat it n times. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + X/Open Curses, Issue 7 (2009) describes <STRONG>tic</STRONG> briefly, but omits this + program. SVr4 systems provide <STRONG>captoinfo</STRONG> as a separate application from + <STRONG>tic</STRONG>. + + NetBSD does not provide this application. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and + Thomas E. Dickey &lt;dickey@invisible-island.net&gt; + + + + <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-TRANSLATIONS-FROM-NONSTANDARD-CAPABILITIES">TRANSLATIONS FROM NONSTANDARD CAPABILITIES</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/clear.1.html b/deps/ncurses-6.3/doc/html/man/clear.1.html new file mode 100644 index 0000000..cc5b4e8 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/clear.1.html @@ -0,0 +1,171 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: clear.1,v 1.23 2020/02/02 23:34:34 tom Exp @ + * these would be fallbacks for DS/DE, + * but groff changed the meaning of the macros. +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>clear 1</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">clear 1</H1> +<PRE> +<STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> General Commands Manual <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>clear</STRONG> - clear the terminal screen + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>clear</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] [<STRONG>-V</STRONG>] [<STRONG>-x</STRONG>] + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + <STRONG>clear</STRONG> clears your screen if this is possible, including its scrollback + buffer (if the extended "E3" capability is defined). <STRONG>clear</STRONG> looks in + the environment for the terminal type given by the environment variable + <STRONG>TERM</STRONG>, and then in the <STRONG>terminfo</STRONG> database to determine how to clear the + screen. + + <STRONG>clear</STRONG> writes to the standard output. You can redirect the standard + output to a file (which prevents <STRONG>clear</STRONG> from actually clearing the + screen), and later <STRONG>cat</STRONG> the file to the screen, clearing it at that + point. + + +</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> + <STRONG>-T</STRONG> <EM>type</EM> + indicates the <EM>type</EM> of terminal. Normally this option is + unnecessary, because the default is taken from the environment + variable <STRONG>TERM</STRONG>. If <STRONG>-T</STRONG> is specified, then the shell variables <STRONG>LINES</STRONG> + and <STRONG>COLUMNS</STRONG> will also be ignored. + + <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and + exits. The options are as follows: + + <STRONG>-x</STRONG> do not attempt to clear the terminal's scrollback buffer using the + extended "E3" capability. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + A <STRONG>clear</STRONG> command appeared in 2.79BSD dated February 24, 1979. Later + that was provided in Unix 8th edition (1985). + + AT&amp;T adapted a different BSD program (<STRONG>tset</STRONG>) to make a new command + (<STRONG>tput</STRONG>), and used this to replace the <STRONG>clear</STRONG> command with a shell script + which calls <STRONG>tput</STRONG> <STRONG>clear</STRONG>, e.g., + + /usr/bin/tput ${1:+-T$1} clear 2&gt; /dev/null + exit + + In 1989, when Keith Bostic revised the BSD <STRONG>tput</STRONG> command to make it + similar to the AT&amp;T <STRONG>tput</STRONG>, he added a shell script for the <STRONG>clear</STRONG> + command: + + exec tput clear + + The remainder of the script in each case is a copyright notice. + + The ncurses <STRONG>clear</STRONG> command began in 1995 by adapting the original BSD + <STRONG>clear</STRONG> command (with terminfo, of course). + + The <STRONG>E3</STRONG> extension came later: + + <STRONG>o</STRONG> In June 1999, xterm provided an extension to the standard control + sequence for clearing the screen. Rather than clearing just the + visible part of the screen using + + printf '\033[2J' + + one could clear the <EM>scrollback</EM> using + + printf '\033[<STRONG>3</STRONG>J' + + This is documented in <EM>XTerm</EM> <EM>Control</EM> <EM>Sequences</EM> as a feature + originating with xterm. + + <STRONG>o</STRONG> A few other terminal developers adopted the feature, e.g., PuTTY in + 2006. + + <STRONG>o</STRONG> In April 2011, a Red Hat developer submitted a patch to the Linux + kernel, modifying its console driver to do the same thing. The + Linux change, part of the 3.0 release, did not mention xterm, + although it was cited in the Red Hat bug report (#683733) which led + to the change. + + <STRONG>o</STRONG> Again, a few other terminal developers adopted the feature. But + the next relevant step was a change to the <STRONG>clear</STRONG> program in 2013 to + incorporate this extension. + + <STRONG>o</STRONG> In 2013, the <STRONG>E3</STRONG> extension was overlooked in <STRONG>tput</STRONG> with the "clear" + parameter. That was addressed in 2016 by reorganizing <STRONG>tput</STRONG> to + share its logic with <STRONG>clear</STRONG> and <STRONG>tset</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7 + (POSIX.1-2008) nor X/Open Curses Issue 7 documents tset or reset. + + The latter documents <STRONG>tput</STRONG>, which could be used to replace this utility + either via a shell script or by an alias (such as a symbolic link) to + run <STRONG>tput</STRONG> as <STRONG>clear</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-OPTIONS">OPTIONS</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_add_wch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_add_wch.3x.html new file mode 100644 index 0000000..b71fc03 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_add_wch.3x.html @@ -0,0 +1,313 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2001-2015,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. * + **************************************************************************** + * @Id: curs_add_wch.3x,v 1.28 2020/10/17 23:10:38 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_add_wch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_add_wch 3x</H1> +<PRE> +<STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, <STRONG>echo_wchar</STRONG>, <STRONG>wecho_wchar</STRONG> - add + a complex character and rendition to a <STRONG>curses</STRONG> window, then advance the + cursor + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>add_wch(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wadd_wch(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvadd_wch(</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwadd_wch(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>echo_wchar(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wecho_wchar(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-add_wch">add_wch</a></H3><PRE> + The <STRONG>add_wch</STRONG>, <STRONG>wadd_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, and <STRONG>mvwadd_wch</STRONG> functions put the + complex character <EM>wch</EM> into the given window at its current position, + which is then advanced. These functions perform wrapping and special- + character processing as follows: + + <STRONG>o</STRONG> If <EM>wch</EM> refers to a spacing character, then any previous character + at that location is removed. A new character specified by <EM>wch</EM> is + placed at that location with rendition specified by <EM>wch</EM>. The + cursor then advances to the next spacing character on the screen. + + <STRONG>o</STRONG> If <EM>wch</EM> refers to a non-spacing character, all previous characters + at that location are preserved. The non-spacing characters of <EM>wch</EM> + are added to the spacing complex character, and the rendition + specified by <EM>wch</EM> is ignored. + + <STRONG>o</STRONG> If the character part of <EM>wch</EM> is a tab, newline, backspace or other + control character, the window is updated and the cursor moves as if + <STRONG>addch</STRONG> were called. + + +</PRE><H3><a name="h3-echo_wchar">echo_wchar</a></H3><PRE> + The <STRONG>echo_wchar</STRONG> function is functionally equivalent to a call to <STRONG>add_wch</STRONG> + followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>. Similarly, the <STRONG>wecho_wchar</STRONG> is + functionally equivalent to a call to <STRONG>wadd_wch</STRONG> followed by a call to + <STRONG>wrefresh</STRONG>. 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 *<STRONG>echo</STRONG>* + functions instead of their equivalents. + + +</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE> + Like <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>, <STRONG>addch_wch</STRONG> 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 <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>. + + <STRONG>ACS</STRONG> <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG> + <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG> + ------------------------------------------------------------------------ + WACS_BLOCK 0x25ae # 0 solid square block + WACS_BOARD 0x2592 # h board of squares + WACS_BTEE 0x2534 + v bottom tee + WACS_BULLET 0x00b7 o ~ bullet + WACS_CKBOARD 0x2592 : a checker board (stipple) + WACS_DARROW 0x2193 v . arrow pointing down + WACS_DEGREE 0x00b0 ' f degree symbol + + WACS_DIAMOND 0x25c6 + ` diamond + WACS_GEQUAL 0x2265 &gt; &gt; greater-than-or-equal-to + WACS_HLINE 0x2500 - q horizontal line + WACS_LANTERN 0x2603 # i lantern symbol + WACS_LARROW 0x2190 &lt; , arrow pointing left + WACS_LEQUAL 0x2264 &lt; y less-than-or-equal-to + WACS_LLCORNER 0x2514 + m lower left-hand corner + WACS_LRCORNER 0x2518 + j lower right-hand corner + 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 &gt; + arrow pointing right + 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 } pound-sterling symbol + WACS_TTEE 0x252c + w top tee + WACS_UARROW 0x2191 ^ - arrow pointing up + WACS_ULCORNER 0x250c + l upper left-hand corner + WACS_URCORNER 0x2510 + k upper right-hand corner + WACS_VLINE 0x2502 | x vertical line + + The wide-character configuration of ncurses also defines symbols for + thick lines (<STRONG>acsc</STRONG> "J" to "V"): + + <STRONG>ACS</STRONG> <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG> + <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG> + ----------------------------------------------------------------------- + WACS_T_BTEE 0x253b + V thick tee pointing up + WACS_T_HLINE 0x2501 - Q thick horizontal line + WACS_T_LLCORNER 0x2517 + M thick lower left corner + WACS_T_LRCORNER 0x251b + J thick lower right corner + WACS_T_LTEE 0x252b + T thick tee pointing right + WACS_T_PLUS 0x254b + N thick large plus + WACS_T_RTEE 0x2523 + U thick tee pointing left + WACS_T_TTEE 0x2533 + W thick tee pointing down + WACS_T_ULCORNER 0x250f + L thick upper left corner + WACS_T_URCORNER 0x2513 + K thick upper right corner + WACS_T_VLINE 0x2503 | X thick vertical line + + and for double-lines (<STRONG>acsc</STRONG> "A" to "I"): + + <STRONG>ACS</STRONG> <STRONG>Unicode</STRONG> <STRONG>ASCII</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG> + <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG> + ------------------------------------------------------------------------ + WACS_D_BTEE 0x2569 + H double tee pointing up + WACS_D_HLINE 0x2550 - R double horizontal line + WACS_D_LLCORNER 0x255a + D double lower left corner + WACS_D_LRCORNER 0x255d + A double lower right corner + WACS_D_LTEE 0x2560 + F double tee pointing right + WACS_D_PLUS 0x256c + E double large plus + WACS_D_RTEE 0x2563 + G double tee pointing left + WACS_D_TTEE 0x2566 + I double tee pointing down + WACS_D_ULCORNER 0x2554 + C double upper left corner + WACS_D_URCORNER 0x2557 + B double upper right corner + WACS_D_VLINE 0x2551 | Y double vertical line + + Unicode's descriptions for these characters differs slightly from + ncurses, by introducing the term "light" (along with less important + details). Here are its descriptions for the normal, thick, and double + horizontal lines: + + <STRONG>o</STRONG> U+2500 BOX DRAWINGS LIGHT HORIZONTAL + + <STRONG>o</STRONG> U+2501 BOX DRAWINGS HEAVY HORIZONTAL + + <STRONG>o</STRONG> U+2550 BOX DRAWINGS DOUBLE HORIZONTAL + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. + + X/Open does not define any error conditions. This implementation + returns an error + + <STRONG>o</STRONG> if the window pointer is null or + + <STRONG>o</STRONG> if it is not possible to add a complete character in the window. + + The latter may be due to different causes: + + <STRONG>o</STRONG> If <STRONG>scrollok</STRONG> 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 + + <STRONG>o</STRONG> 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. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>add_wch</STRONG>, <STRONG>mvadd_wch</STRONG>, <STRONG>mvwadd_wch</STRONG>, and <STRONG>echo_wchar</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + All of these functions are described in the XSI Curses standard, Issue + 4. The defaults specified for line-drawing characters apply in the + POSIX locale. + + X/Open Curses makes it clear that the WACS_ symbols should be defined + as a pointer to <STRONG>cchar_t</STRONG> data, e.g., in the discussion of <STRONG>border_set</STRONG>. A + few implementations are problematic: + + <STRONG>o</STRONG> NetBSD curses defines the symbols as a <STRONG>wchar_t</STRONG> within a <STRONG>cchar_t</STRONG>. + + <STRONG>o</STRONG> HPUX curses equates some of the <EM>ACS</EM><STRONG>_</STRONG> symbols to the analogous <EM>WACS</EM><STRONG>_</STRONG> + symbols as if the <EM>ACS</EM><STRONG>_</STRONG> symbols were wide characters. The + misdefined symbols are the arrows and other symbols which are not + used for line-drawing. + + X/Open Curses does not define 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. + + Not all Unicode-capable terminals provide support for VT100-style + alternate character sets (i.e., the <STRONG>acsc</STRONG> 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, HPUX, Solaris) use only + the <STRONG>acsc</STRONG> character-mapping to provide this feature. As a result, those + implementations can only use single-byte line-drawing characters. + Ncurses 5.3 (2002) provided a table of Unicode values to solve these + problems. NetBSD curses incorporated that table in 2010. + + In this implementation, the Unicode values are used instead of the + terminal description's <STRONG>acsc</STRONG> mapping as discussed in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> for the + environment variable <STRONG>NCURSES_NO_UTF8_ACS</STRONG>. In contrast, for the same + cases, the line-drawing characters described in <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> will use + only the ASCII default values. + + Having Unicode available does not solve all of the problems with line- + drawing for curses: + + <STRONG>o</STRONG> The closest Unicode equivalents to the VT100 graphics <EM>S1</EM>, <EM>S3</EM>, <EM>S7</EM> + and <EM>S9</EM> frequently are not displayed at the regular intervals which + the terminal used. + + <STRONG>o</STRONG> The <EM>lantern</EM> is a special case. It originated with the AT&amp;T 4410 + terminal in the early 1980s. There is no accessible documentation + depicting the lantern symbol on the AT&amp;T terminal. + + Lacking documentation, most readers assume that a <EM>storm</EM> <EM>lantern</EM> was + intended. But there are several possibilities, all with problems. + + 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. They are not storm lanterns, in any case. + + Most <EM>storm</EM> <EM>lanterns</EM> have a tapering glass chimney (to guard against + tipping); some have a wire grid protecting the chimney. + + For the tapering appearance, U+2603 was adequate. In use on a + terminal, no one can tell what the image represents. Unicode calls + it a snowman. + + Others have suggested these alternatives: &lt;section&gt; U+00A7 (section + mark), &lt;Theta&gt; U+0398 (theta), &lt;Phi&gt; U+03A6 (phi), &lt;delta&gt; U+03B4 + (delta), U+2327 (x in a rectangle), U+256C (forms double vertical + and horizontal), and U+2612 (ballot box with x). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, + <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG>putwc(3)</STRONG> + + + + <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-add_wch">add_wch</a></li> +<li><a href="#h3-echo_wchar">echo_wchar</a></li> +<li><a href="#h3-Line-Graphics">Line Graphics</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_add_wchstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_add_wchstr.3x.html new file mode 100644 index 0000000..deb49e1 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_add_wchstr.3x.html @@ -0,0 +1,137 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2002-2012,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. * + **************************************************************************** + * @Id: curs_add_wchstr.3x,v 1.15 2020/12/19 21:39:06 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_add_wchstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_add_wchstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>add_wchstr</STRONG>, <STRONG>add_wchnstr</STRONG>, <STRONG>wadd_wchstr</STRONG>, <STRONG>wadd_wchnstr</STRONG>, <STRONG>mvadd_wchstr</STRONG>, + <STRONG>mvadd_wchnstr</STRONG>, <STRONG>mvwadd_wchstr</STRONG>, <STRONG>mvwadd_wchnstr</STRONG> - add an array of complex + characters (and attributes) to a curses window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>add_wchstr(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>add_wchnstr(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wadd_wchstr(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wadd_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvadd_wchstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvadd_wchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwadd_wchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwadd_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions copy the (null-terminated) array of complex characters + <EM>wchstr</EM> into the window image structure starting at the current cursor + position. The four functions with <EM>n</EM> as the last argument copy at most + <EM>n</EM> elements, but no more than will fit on the line. If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the + whole array is copied, to the maximum number of characters that will + fit on the line. + + The window cursor is <EM>not</EM> advanced. These functions work faster than + <STRONG>waddnstr</STRONG>. On the other hand: + + <STRONG>o</STRONG> they do not perform checking (such as for the newline, backspace, + or carriage return characters), + + <STRONG>o</STRONG> they do not advance the current cursor position, + + <STRONG>o</STRONG> they do not expand other control characters to ^-escapes, and + + <STRONG>o</STRONG> they truncate the string if it crosses the right margin, rather + than wrapping it around to the new line. + + These functions end successfully on encountering a null <EM>cchar</EM><STRONG>_</STRONG><EM>t</EM>, 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. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. + + X/Open does not define any error conditions. This implementation re- + turns an error if the window pointer is null. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All functions except <STRONG>wadd_wchnstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These entry points are described in the XSI Curses standard, Issue 4. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG>. + + Comparable functions in the narrow-character (ncurses) library are de- + scribed in <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_addch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_addch.3x.html new file mode 100644 index 0000000..b19e72e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_addch.3x.html @@ -0,0 +1,327 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: curs_addch.3x,v 1.56 2021/06/17 21:30:22 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_addch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_addch 3x</H1> +<PRE> +<STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>addch</STRONG>, <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, <STRONG>echochar</STRONG>, <STRONG>wechochar</STRONG> - add a character + (with attributes) to a <STRONG>curses</STRONG> window, then advance the cursor + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>addch(const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>waddch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvaddch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwaddch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>echochar(const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wechochar(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-Adding-characters">Adding characters</a></H3><PRE> + The <STRONG>addch</STRONG>, <STRONG>waddch</STRONG>, <STRONG>mvaddch</STRONG> and <STRONG>mvwaddch</STRONG> routines put the character <EM>ch</EM> + into the given window at its current window position, which is then + advanced. They are analogous to <STRONG>putchar(3)</STRONG> in <STRONG>stdio(3)</STRONG>. If the + advance is at the right margin: + + <STRONG>o</STRONG> The cursor automatically wraps to the beginning of the next line. + + <STRONG>o</STRONG> At the bottom of the current scrolling region, and if <STRONG>scrollok</STRONG> is + enabled, the scrolling region is scrolled up one line. + + <STRONG>o</STRONG> If <STRONG>scrollok</STRONG> 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 + + If <EM>ch</EM> is a tab, newline, carriage return or backspace, the cursor is + moved appropriately within the window: + + <STRONG>o</STRONG> Backspace moves the cursor one character left; at the left edge of + a window it does nothing. + + <STRONG>o</STRONG> Carriage return moves the cursor to the window left margin on the + current line. + + <STRONG>o</STRONG> Newline does a <STRONG>clrtoeol</STRONG>, then moves the cursor to the window left + margin on the next line, scrolling the window if on the last line. + + <STRONG>o</STRONG> Tabs are considered to be at every eighth column. The tab interval + may be altered by setting the <STRONG>TABSIZE</STRONG> variable. + + If <EM>ch</EM> is any other nonprintable character, it is drawn in printable + form, i.e., the <STRONG>^</STRONG><EM>X</EM> notation used by <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>. Calling <STRONG>winch</STRONG> after + adding a nonprintable character does not return the character itself, + but instead returns the printable representation of the character. + + Video attributes can be combined with a character argument passed to + <STRONG>addch</STRONG> or related functions by logical-ORing them into the character. + (Thus, text, including attributes, can be copied from one place to + another using <STRONG><A HREF="curs_inch.3x.html">inch(3x)</A></STRONG> and <STRONG>addch</STRONG>.) See the <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> page for + values of predefined video attribute constants that can be usefully + OR'ed into characters. + + +</PRE><H3><a name="h3-Echoing-characters">Echoing characters</a></H3><PRE> + The <STRONG>echochar</STRONG> and <STRONG>wechochar</STRONG> routines are equivalent to a call to <STRONG>addch</STRONG> + followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>, or a call to <STRONG>waddch</STRONG> followed by a + call to <STRONG>wrefresh</STRONG>. The knowledge that only a single character is being + output is used and, for non-control characters, a considerable + performance gain may be seen by using these routines instead of their + equivalents. + + +</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE> + The following variables may be used to add line drawing characters to + the screen with routines of the <STRONG>addch</STRONG> family. The default character + listed below is used if the <STRONG>acsc</STRONG> capability does not define a terminal- + specific replacement for it, or if the terminal and locale + configuration requires Unicode but the library is unable to use + Unicode. + + The names are taken from VT100 nomenclature. + + <STRONG>ACS</STRONG> <STRONG>ACS</STRONG> <STRONG>acsc</STRONG> <STRONG>Glyph</STRONG> + <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>char</STRONG> <STRONG>Name</STRONG> + --------------------------------------------------------- + ACS_BLOCK # 0 solid square block + ACS_BOARD # h board of squares + ACS_BTEE + v bottom tee + ACS_BULLET o ~ bullet + ACS_CKBOARD : a checker board (stipple) + ACS_DARROW v . arrow pointing down + ACS_DEGREE ' f degree symbol + ACS_DIAMOND + ` diamond + ACS_GEQUAL &gt; &gt; greater-than-or-equal-to + ACS_HLINE - q horizontal line + ACS_LANTERN # i lantern symbol + ACS_LARROW &lt; , arrow pointing left + ACS_LEQUAL &lt; y less-than-or-equal-to + ACS_LLCORNER + m lower left-hand corner + ACS_LRCORNER + j lower right-hand corner + ACS_LTEE + t left tee + ACS_NEQUAL ! | not-equal + ACS_PI * { greek pi + ACS_PLMINUS # g plus/minus + ACS_PLUS + n plus + ACS_RARROW &gt; + arrow pointing right + ACS_RTEE + u right tee + ACS_S1 - o scan line 1 + ACS_S3 - p scan line 3 + ACS_S7 - r scan line 7 + ACS_S9 _ s scan line 9 + ACS_STERLING f } pound-sterling symbol + ACS_TTEE + w top tee + ACS_UARROW ^ - arrow pointing up + ACS_ULCORNER + l upper left-hand corner + ACS_URCORNER + k upper right-hand corner + ACS_VLINE | x vertical line + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success (the + SVr4 manuals specify only "an integer value other than <STRONG>ERR</STRONG>") upon + successful completion, unless otherwise noted in the preceding routine + descriptions. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + If it is not possible to add a complete character, an error is + returned: + + <STRONG>o</STRONG> If <STRONG>scrollok</STRONG> 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 + + <STRONG>o</STRONG> 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. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>addch</STRONG>, <STRONG>mvaddch</STRONG>, <STRONG>mvwaddch</STRONG>, and <STRONG>echochar</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + All these functions are described in the XSI Curses standard, Issue 4. + The defaults specified for forms-drawing characters apply in the POSIX + locale. + + +</PRE><H3><a name="h3-ACS-Symbols">ACS Symbols</a></H3><PRE> + X/Open Curses states that the <EM>ACS</EM><STRONG>_</STRONG> definitions are <STRONG>char</STRONG> constants. For + the wide-character implementation (see <STRONG>curs_add_wch</STRONG>), there are + analogous <EM>WACS</EM><STRONG>_</STRONG> definitions which are <STRONG>cchar_t</STRONG> constants. Some + implementations are problematic: + + <STRONG>o</STRONG> Some implementations define the ACS symbols to a constant (such as + Solaris), while others define those to entries in an array. + + This implementation uses an array <STRONG>acs_map</STRONG>, as done in SVr4 curses. + NetBSD also uses an array, actually named <STRONG>_acs_char</STRONG>, with a <STRONG>#define</STRONG> + for compatibility. + + <STRONG>o</STRONG> HPUX curses equates some of the <EM>ACS</EM><STRONG>_</STRONG> symbols to the analogous <EM>WACS</EM><STRONG>_</STRONG> + symbols as if the <EM>ACS</EM><STRONG>_</STRONG> symbols were wide characters. The + misdefined symbols are the arrows and other symbols which are not + used for line-drawing. + + <STRONG>o</STRONG> X/Open Curses (issues 2 through 7) has a typographical error for + the ACS_LANTERN symbol, equating its "VT100+ Character" to <STRONG>I</STRONG> + (capital I), while the header files for SVr4 curses and the various + implementations use <STRONG>i</STRONG> (lowercase). + + None of the terminal descriptions on Unix platforms use uppercase- + I, except for Solaris (i.e., <EM>screen</EM>'s terminal description, + apparently based on the X/Open documentation around 1995). On the + other hand, the terminal description <EM>gs6300</EM> (AT&amp;T PC6300 with EMOTS + Terminal Emulator) uses lowercase-i. + + Some ACS symbols (ACS_S3, ACS_S7, ACS_LEQUAL, ACS_GEQUAL, ACS_PI, + ACS_NEQUAL, ACS_STERLING) were not documented in any publicly released + System V. However, many publicly available terminfos include <STRONG>acsc</STRONG> + strings in which their key characters (pryz{|}) are embedded, and a + second-hand list of their character descriptions has come to light. + The ACS-prefixed names for them were invented for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>. + + The <EM>displayed</EM> values for the <EM>ACS</EM><STRONG>_</STRONG> and <EM>WACS</EM><STRONG>_</STRONG> constants depend on + + <STRONG>o</STRONG> the library configuration, i.e., <STRONG>ncurses</STRONG> versus <STRONG>ncursesw</STRONG>, where the + latter is capable of displaying Unicode while the former is not, + and + + <STRONG>o</STRONG> whether the <EM>locale</EM> uses UTF-8 encoding. + + In certain cases, the terminal is unable to display line-drawing + characters except by using UTF-8 (see the discussion of + <STRONG>NCURSES_NO_UTF8_ACS</STRONG> in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>). + + +</PRE><H3><a name="h3-Character-Set">Character Set</a></H3><PRE> + X/Open Curses assumes that the parameter passed to <STRONG>waddch</STRONG> contains a + single character. As discussed in <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, that character may + have been more than eight bits in an SVr3 or SVr4 implementation, but + in the X/Open Curses model, the details are not given. The important + distinction between SVr4 curses and X/Open Curses is that the non- + character information (attributes and color) was separated from the + character information which is packed in a <STRONG>chtype</STRONG> to pass to <STRONG>waddch</STRONG>. + + In this implementation, <STRONG>chtype</STRONG> holds an eight-bit character. But + ncurses allows multibyte characters to be passed in a succession of + calls to <STRONG>waddch</STRONG>. The other implementations do not do this; a call to + <STRONG>waddch</STRONG> passes exactly one character which may be rendered as one or + more cells on the screen depending on whether it is printable. + + Depending on the locale settings, ncurses will inspect the byte passed + in each call to <STRONG>waddch</STRONG>, and check if the latest call will continue a + multibyte sequence. When a character is <EM>complete</EM>, ncurses displays the + character and moves to the next position in the screen. + + If the calling application interrupts the succession of bytes in a + multibyte character by moving the current location (e.g., using <STRONG>wmove</STRONG>), + ncurses discards the partially built character, starting over again. + + For portability to other implementations, do not rely upon this + behavior: + + <STRONG>o</STRONG> check if a character can be represented as a single byte in the + current locale before attempting call <STRONG>waddch</STRONG>, and + + <STRONG>o</STRONG> call <STRONG>wadd_wch</STRONG> for characters which cannot be handled by <STRONG>waddch</STRONG>. + + +</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE> + The <STRONG>TABSIZE</STRONG> variable is implemented in SVr4 and other versions of + curses, but is not part of X/Open curses (see <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> for + more details). + + If <EM>ch</EM> is a carriage return, the cursor is moved to the beginning of the + current row of the window. This is true of other implementations, but + is not documented. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>, + <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>. + + Comparable functions in the wide-character (ncursesw) library are + described in <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Adding-characters">Adding characters</a></li> +<li><a href="#h3-Echoing-characters">Echoing characters</a></li> +<li><a href="#h3-Line-Graphics">Line Graphics</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-ACS-Symbols">ACS Symbols</a></li> +<li><a href="#h3-Character-Set">Character Set</a></li> +<li><a href="#h3-TABSIZE">TABSIZE</a></li> +</ul> +</li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_addchstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_addchstr.3x.html new file mode 100644 index 0000000..78abdeb --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_addchstr.3x.html @@ -0,0 +1,131 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,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. * + **************************************************************************** + * @Id: curs_addchstr.3x,v 1.22 2020/12/19 21:39:20 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_addchstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_addchstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>addchstr</STRONG>, <STRONG>addchnstr</STRONG>, <STRONG>waddchstr</STRONG>, <STRONG>waddchnstr</STRONG>, <STRONG>mvaddchstr</STRONG>, <STRONG>mvaddchnstr</STRONG>, + <STRONG>mvwaddchstr</STRONG>, <STRONG>mvwaddchnstr</STRONG> - add a string of characters (and attributes) + to a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>addchstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>addchnstr(const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>waddchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>waddchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvaddchstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvaddchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwaddchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwaddchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions copy the (null-terminated) <EM>chstr</EM> array into the window + image structure starting at the current cursor position. The four + functions with <EM>n</EM> as the last argument copy at most <EM>n</EM> elements, but no + more than will fit on the line. If <STRONG>n</STRONG>=<STRONG>-1</STRONG> then the whole array is + copied, to the maximum number of characters that will fit on the line. + + The window cursor is <EM>not</EM> advanced. These functions work faster than + <STRONG>waddnstr</STRONG>. On the other hand: + + <STRONG>o</STRONG> they do not perform checking (such as for the newline, backspace, + or carriage return characters), + + <STRONG>o</STRONG> they do not advance the current cursor position, + + <STRONG>o</STRONG> they do not expand other control characters to ^-escapes, and + + <STRONG>o</STRONG> they truncate the string if it crosses the right margin, rather + than wrapping it around to the new line. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. + + X/Open does not define any error conditions. This implementation re- + turns an error if the window pointer is null. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All functions except <STRONG>waddchnstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These entry points are described in the XSI Curses standard, Issue 4. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>. + + Comparable functions in the wide-character (ncursesw) library are de- + scribed in <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_addstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_addstr.3x.html new file mode 100644 index 0000000..71abb99 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_addstr.3x.html @@ -0,0 +1,135 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,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. * + **************************************************************************** + * @Id: curs_addstr.3x,v 1.23 2020/10/17 23:11:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_addstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_addstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>addstr</STRONG>, <STRONG>addnstr</STRONG>, <STRONG>waddstr</STRONG>, <STRONG>waddnstr</STRONG>, <STRONG>mvaddstr</STRONG>, <STRONG>mvaddnstr</STRONG>, <STRONG>mvwaddstr</STRONG>, + <STRONG>mvwaddnstr</STRONG> - add a string of characters to a <STRONG>curses</STRONG> window and advance + cursor + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>addstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>addnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>waddstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>waddnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvaddstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvaddnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwaddstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwaddnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str,</EM> <EM>int</EM> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions write the (null-terminated) character string <EM>str</EM> on the + given window. It is similar to calling <STRONG>waddch</STRONG> once for each byte in + the string. + + The <EM>mv</EM> functions perform cursor movement once, before writing any char- + acters. Thereafter, the cursor is advanced as a side-effect of writing + to the window. + + The four functions with <EM>n</EM> as the last argument write at most <EM>n</EM> bytes, + or until a terminating null is reached. If <EM>n</EM> is -1, then the entire + string will be added. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. + + X/Open does not define any error conditions. This implementation re- + turns an error + + <STRONG>o</STRONG> if the window pointer is null or + + <STRONG>o</STRONG> if the string pointer is null or + + <STRONG>o</STRONG> if the corresponding calls to <STRONG>waddch</STRONG> return an error. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. If an error is returned by the <STRONG>wmove</STRONG>, no + characters are added to the window. + + If an error is returned by <STRONG>waddch</STRONG> (e.g., because the window is not + large enough, or an illegal byte sequence was detected) only part of + the string may be added. Aside from that, there is a special case in + <STRONG>waddch</STRONG> where an error may be returned after successfully writing a + character to the lower-right corner of a window when <STRONG>scrollok</STRONG> is dis- + abled. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All of these functions except <STRONG>waddnstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_addwstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_addwstr.3x.html new file mode 100644 index 0000000..5285206 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_addwstr.3x.html @@ -0,0 +1,128 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2002-2012,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. * + **************************************************************************** + * @Id: curs_addwstr.3x,v 1.15 2020/10/17 23:12:22 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_addwstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_addwstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>addwstr</STRONG>, <STRONG>addnwstr</STRONG>, <STRONG>waddwstr</STRONG>, <STRONG>waddnwstr</STRONG>, <STRONG>mvaddwstr</STRONG>, <STRONG>mvaddnwstr</STRONG>, + <STRONG>mvwaddwstr</STRONG>, <STRONG>mvwaddnwstr</STRONG> - add a string of wide characters to a <STRONG>curses</STRONG> + window and advance cursor + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>addwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>addnwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>waddwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>waddnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvaddwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvaddnwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwaddwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwaddnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions write the characters of the (null-terminated) <STRONG>wchar_t</STRONG> + character string <EM>wstr</EM> on the given window. It is similar to construct- + ing a <STRONG>cchar_t</STRONG> for each wchar_t in the string, then calling <STRONG>wadd_wch</STRONG> for + the resulting <STRONG>cchar_t</STRONG>. + + The <EM>mv</EM> functions perform cursor movement once, before writing any char- + acters. Thereafter, the cursor is advanced as a side-effect of writing + to the window. + + The four functions with <EM>n</EM> as the last argument write at most <EM>n</EM> <STRONG>wchar_t</STRONG> + characters, or until a terminating null is reached. If <EM>n</EM> is -1, then + the entire string will be added. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. + + X/Open does not define any error conditions. This implementation re- + turns an error + + <STRONG>o</STRONG> if the window pointer is null or + + <STRONG>o</STRONG> if the string pointer is null or + + <STRONG>o</STRONG> if the corresponding calls to <STRONG>wadd_wch</STRONG> return an error. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All of these functions except <STRONG>waddnwstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_attr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_attr.3x.html new file mode 100644 index 0000000..13ead71 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_attr.3x.html @@ -0,0 +1,541 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_attr.3x,v 1.66 2020/02/02 23:34:34 tom Exp @ + * --------------------------------------------------------------------------- + * attr_get + * .br + * .br + * .br + * .br + * .br + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- + * --------------------------------------------------------------------------- +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_attr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_attr 3x</H1> +<PRE> +<STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>attr_get</STRONG>, <STRONG>wattr_get</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_set</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>wattr_off</STRONG>, <STRONG>attr_on</STRONG>, + <STRONG>wattr_on</STRONG>, <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>, <STRONG>chgat</STRONG>, + <STRONG>wchgat</STRONG>, <STRONG>mvchgat</STRONG>, <STRONG>mvwchgat</STRONG>, <STRONG>color_set</STRONG>, <STRONG>wcolor_set</STRONG>, <STRONG>standend</STRONG>, <STRONG>wstandend</STRONG>, + <STRONG>standout</STRONG>, <STRONG>wstandout</STRONG> - <STRONG>curses</STRONG> character and window attribute control + routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>attr_get(attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wattr_get(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>attr_set(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wattr_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>attr_off(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wattr_off(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wattr_on(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>attroff(int</STRONG> <EM>attrs);</EM> + <STRONG>int</STRONG> <STRONG>wattroff(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>attron(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wattron(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>attrset(int</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wattrset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>chgat(int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvchgat(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwchgat(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>int</EM> <EM>y,</EM> <EM>int</EM> <EM>x</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>n,</EM> <STRONG>attr_t</STRONG> <EM>attr</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>color_set(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wcolor_set(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts);</EM> + + <STRONG>int</STRONG> <STRONG>standend(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wstandend(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>standout(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wstandout(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines manipulate the current attributes of the named window, + which then apply to all characters that are written into the window + with <STRONG>waddch</STRONG>, <STRONG>waddstr</STRONG> and <STRONG>wprintw</STRONG>. Attributes are a property of the + character, and move with the character through any scrolling and in- + sert/delete line/character operations. To the extent possible, they + are displayed as appropriate modifications to the graphic rendition of + characters put on the screen. + + These routines do not affect the attributes used when erasing portions + of the window. See <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> for functions which modify the at- + tributes used for erasing and clearing. + + Routines which do not have a <STRONG>WINDOW*</STRONG> parameter apply to <STRONG>stdscr</STRONG>. For + example, <STRONG>attr_set</STRONG> is the <STRONG>stdscr</STRONG> variant of <STRONG>wattr_set</STRONG>. + + +</PRE><H3><a name="h3-Window-attributes">Window attributes</a></H3><PRE> + There are two sets of functions: + + <STRONG>o</STRONG> functions for manipulating the window attributes and color: <STRONG>wat-</STRONG> + <STRONG>tr_set</STRONG> and <STRONG>wattr_get</STRONG>. + + <STRONG>o</STRONG> functions for manipulating only the window attributes (not color): + <STRONG>wattr_on</STRONG> and <STRONG>wattr_off</STRONG>. + + The <STRONG>wattr_set</STRONG> function sets the current attributes of the given window + to <EM>attrs</EM>, with color specified by <EM>pair</EM>. + + Use <STRONG>wattr_get</STRONG> to retrieve attributes for the given window. + + Use <STRONG>attr_on</STRONG> and <STRONG>wattr_on</STRONG> to turn on window attributes, i.e., values + OR'd together in <EM>attr</EM>, without affecting other attributes. Use <STRONG>at-</STRONG> + <STRONG>tr_off</STRONG> and <STRONG>wattr_off</STRONG> to turn off window attributes, again values OR'd + together in <EM>attr</EM>, without affecting other attributes. + + +</PRE><H3><a name="h3-Legacy-window-attributes">Legacy window attributes</a></H3><PRE> + The X/Open window attribute routines which <EM>set</EM> or <EM>get</EM>, turn <EM>on</EM> or <EM>off</EM> + are extensions of older routines which assume that color pairs are OR'd + into the attribute parameter. These newer routines use similar names, + because X/Open simply added an underscore (<STRONG>_</STRONG>) for the newer names. + + The <STRONG>int</STRONG> datatype used in the legacy routines is treated as if it is the + same size as <STRONG>chtype</STRONG> (used by <STRONG><A HREF="curs_addch.3x.html">addch(3x)</A></STRONG>). It holds the common video at- + tributes (such as bold, reverse), as well as a few bits for color. + Those bits correspond to the <STRONG>A_COLOR</STRONG> symbol. The <STRONG>COLOR_PAIR</STRONG> macro pro- + vides a value which can be OR'd into the attribute parameter. For ex- + ample, as long as that value fits into the <STRONG>A_COLOR</STRONG> mask, then these + calls produce similar results: + + attrset(A_BOLD | COLOR_PAIR(<EM>pair</EM>)); + attr_set(A_BOLD, <EM>pair</EM>, NULL); + + However, if the value does not fit, then the <STRONG>COLOR_PAIR</STRONG> macro uses only + the bits that fit. For example, because in ncurses <STRONG>A_COLOR</STRONG> has eight + (8) bits, then <STRONG>COLOR_PAIR(</STRONG><EM>259</EM><STRONG>)</STRONG> is 4 (i.e., 259 is 4 more than the limit + 255). + + The <STRONG>PAIR_NUMBER</STRONG> macro extracts a pair number from an <STRONG>int</STRONG> (or <STRONG>chtype</STRONG>). + For example, the <EM>input</EM> and <EM>output</EM> values in these statements would be + the same: + + int value = A_BOLD | COLOR_PAIR(<EM>input</EM>); + int <EM>output</EM> = PAIR_NUMBER(value); + + The <STRONG>attrset</STRONG> routine is a legacy feature predating SVr4 curses but kept + in X/Open Curses for the same reason that SVr4 curses kept it: compati- + bility. + + The remaining <STRONG>attr</STRONG>* functions operate exactly like the corresponding + <STRONG>attr_</STRONG>* functions, except that they take arguments of type <STRONG>int</STRONG> rather + than <STRONG>attr_t</STRONG>. + + There is no corresponding <STRONG>attrget</STRONG> function as such in X/Open Curses, + although ncurses provides <STRONG>getattrs</STRONG> (see <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>). + + +</PRE><H3><a name="h3-Change-character-rendition">Change character rendition</a></H3><PRE> + The routine <STRONG>chgat</STRONG> changes the attributes of a given number of charac- + ters starting at the current cursor location of <STRONG>stdscr</STRONG>. It does not + update the cursor and does not perform wrapping. A character count of + -1 or greater than the remaining window width means to change at- + tributes all the way to the end of the current line. The <STRONG>wchgat</STRONG> func- + tion generalizes this to any window; the <STRONG>mvwchgat</STRONG> function does a cur- + sor move before acting. + + In these functions, the color <EM>pair</EM> argument is a color-pair index (as + in the first argument of <STRONG>init_pair</STRONG>, see <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>). + + +</PRE><H3><a name="h3-Change-window-color">Change window color</a></H3><PRE> + The routine <STRONG>color_set</STRONG> sets the current color of the given window to the + foreground/background combination described by the color <EM>pair</EM> parame- + ter. + + +</PRE><H3><a name="h3-Standout">Standout</a></H3><PRE> + The routine <STRONG>standout</STRONG> is the same as <STRONG>attron(A_STANDOUT)</STRONG>. The routine + <STRONG>standend</STRONG> is the same as <STRONG>attrset(A_NORMAL)</STRONG> or <STRONG>attrset(0)</STRONG>, that is, it + turns off all attributes. + + X/Open does not mark these "restricted", because + + <STRONG>o</STRONG> they have well established legacy use, and + + <STRONG>o</STRONG> there is no ambiguity about the way the attributes might be com- + bined with a color pair. + + +</PRE><H2><a name="h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></H2><PRE> + The following video attributes, defined in <STRONG>&lt;curses.h&gt;</STRONG>, can be passed to + the routines <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, and <STRONG>attrset</STRONG>, or OR'd with the characters + passed to <STRONG>addch</STRONG> (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>). + + <EM>Name</EM> <EM>Description</EM> + ----------------------------------------------------------------- + <STRONG>A_NORMAL</STRONG> Normal display (no highlight) + <STRONG>A_STANDOUT</STRONG> Best highlighting mode of the terminal. + <STRONG>A_UNDERLINE</STRONG> Underlining + <STRONG>A_REVERSE</STRONG> Reverse video + <STRONG>A_BLINK</STRONG> Blinking + <STRONG>A_DIM</STRONG> Half bright + <STRONG>A_BOLD</STRONG> Extra bright or bold + <STRONG>A_PROTECT</STRONG> Protected mode + <STRONG>A_INVIS</STRONG> Invisible or blank mode + <STRONG>A_ALTCHARSET</STRONG> Alternate character set + <STRONG>A_ITALIC</STRONG> Italics (non-X/Open extension) + <STRONG>A_CHARTEXT</STRONG> Bit-mask to extract a character + <STRONG>A_COLOR</STRONG> Bit-mask to extract a color (legacy routines) + + These video attributes are supported by <STRONG>attr_on</STRONG> and related functions + (which also support the attributes recognized by <STRONG>attron</STRONG>, etc.): + + <EM>Name</EM> <EM>Description</EM> + ----------------------------------------- + <STRONG>WA_HORIZONTAL</STRONG> Horizontal highlight + <STRONG>WA_LEFT</STRONG> Left highlight + <STRONG>WA_LOW</STRONG> Low highlight + <STRONG>WA_RIGHT</STRONG> Right highlight + <STRONG>WA_TOP</STRONG> Top highlight + <STRONG>WA_VERTICAL</STRONG> Vertical highlight + + 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 <STRONG>1</STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + These functions may be macros: + + <STRONG>attroff</STRONG>, <STRONG>wattroff</STRONG>, <STRONG>attron</STRONG>, <STRONG>wattron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>wattrset</STRONG>, <STRONG>standend</STRONG> + and <STRONG>standout</STRONG>. + + Color pair values can only be OR'd with attributes if the pair number + is less than 256. The alternate functions such as <STRONG>color_set</STRONG> can pass a + color pair value directly. However, ncurses ABI 4 and 5 simply OR this + value within the alternate functions. You must use ncurses ABI 6 to + support more than 256 color pairs. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + X/Open Curses is largely based on SVr4 curses, adding support for + "wide-characters" (not specific to Unicode). Some of the X/Open dif- + ferences from SVr4 curses address the way video attributes can be ap- + plied to wide-characters. But aside from that, <STRONG>attrset</STRONG> and <STRONG>attr_set</STRONG> + are similar. SVr4 curses provided the basic features for manipulating + video attributes. However, earlier versions of curses provided a part + of these features. + + As seen in 2.8BSD, curses assumed 7-bit characters, using the eighth + bit of a byte to represent the <EM>standout</EM> feature (often implemented as + bold and/or reverse video). The BSD curses library provided functions + <STRONG>standout</STRONG> and <STRONG>standend</STRONG> which were carried along into X/Open Curses due + to their pervasive use in legacy applications. + + Some terminals in the 1980s could support a variety of video at- + tributes, although the BSD curses library could do nothing with those. + System V (1983) provided an improved curses library. It defined the <STRONG>A_</STRONG> + symbols for use by applications to manipulate the other attributes. + There are few useful references for the chronology. + + Goodheart's book <EM>UNIX</EM> <EM>Curses</EM> <EM>Explained</EM> (1991) describes SVr3 (1987), + commenting on several functions: + + <STRONG>o</STRONG> the <STRONG>attron</STRONG>, <STRONG>attroff</STRONG>, <STRONG>attrset</STRONG> functions (and most of the functions + found in SVr4 but not in BSD curses) were introduced by System V, + + <STRONG>o</STRONG> the alternate character set feature with <STRONG>A_ALTCHARSET</STRONG> was added in + SVr2 and improved in SVr3 (by adding <STRONG>acs_map[]</STRONG>), + + <STRONG>o</STRONG> <STRONG>start_color</STRONG> and related color-functions were introduced by System + V.3.2, + + <STRONG>o</STRONG> pads, soft-keys were added in SVr3, and + + Goodheart did not mention the background character or the <STRONG>cchar_t</STRONG> type. + Those are respectively SVr4 and X/Open features. He did mention the <STRONG>A_</STRONG> + constants, but did not indicate their values. Those were not the same + in different systems, even for those marked as System V. + + Different Unix systems used different sizes for the bit-fields in + <STRONG>chtype</STRONG> for <EM>characters</EM> and <EM>colors</EM>, and took into account the different + integer sizes (32-bit versus 64-bit). + + This table showing the number of bits for <STRONG>A_COLOR</STRONG> and <STRONG>A_CHARTEXT</STRONG> 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 as well as clues such as the alter- + nate character set implementation. A 32-bit library can be used on a + 64-bit system, but not necessarily the reverse. + + <EM>Year</EM> <EM>System</EM> <EM>Arch</EM> <EM>Color</EM> <EM>Char</EM> <EM>Notes</EM> + ---------------------------------------------------------------- + 1992 Solaris 5.2 32 6 17 SVr4 curses + 1992 HPUX 9 32 no 8 SVr2 curses + 1992 AIX 3.2 32 no 23 SVr2 curses + 1994 OSF/1 r3 32 no 23 SVr2 curses + 1995 HP-UX 10.00 32 6 16 SVr3 "curses_colr" + 1995 HP-UX 10.00 32 6 8 SVr4, X/Open curses + 1995 Solaris 5.4 32/64 7 16 X/Open curses + 1996 AIX 4.2 32 7 16 X/Open curses + 1996 OSF/1 r4 32 6 16 X/Open curses + + 1997 HP-UX 11.00 32 6 8 X/Open curses + 2000 U/Win 32/64 7/31 16 uses <STRONG>chtype</STRONG> + + Notes: + + Regarding HP-UX, + + <STRONG>o</STRONG> HP-UX 10.20 (1996) added support for 64-bit PA-RISC processors + in 1996. + + <STRONG>o</STRONG> HP-UX 10.30 (1997) marked "curses_colr" obsolete. That version + of curses was dropped with HP-UX 11.30 in 2006. + + Regarding OSF/1 (and Tru64), + + <STRONG>o</STRONG> These used 64-bit hardware. Like ncurses, the OSF/1 curses in- + terface is not customized for 32-bit and 64-bit versions. + + <STRONG>o</STRONG> Unlike other systems which evolved from AT&amp;T code, OSF/1 provid- + ed a new implementation for X/Open curses. + + Regarding Solaris, + + <STRONG>o</STRONG> The initial release of Solaris was in 1992. + + <STRONG>o</STRONG> The <EM>xpg4</EM> (X/Open) curses was developed by MKS from 1990 to 1995. + Sun's copyright began in 1996. + + <STRONG>o</STRONG> Sun updated the X/Open curses interface after 64-bit support was + introduced in 1997, but did not modify the SVr4 curses inter- + face. + + Regarding U/Win, + + <STRONG>o</STRONG> Development of the curses library began in 1991, stopped in + 2000. + + <STRONG>o</STRONG> Color support was added in 1998. + + <STRONG>o</STRONG> The library uses only <STRONG>chtype</STRONG> (no <STRONG>cchar_t</STRONG>). + + Once X/Open curses was adopted in the mid-1990s, the constraint of a + 32-bit interface with many colors and wide-characters for <STRONG>chtype</STRONG> became + a moot point. The <STRONG>cchar_t</STRONG> structure (whose size and members are not + specified in X/Open Curses) could be extended as needed. + + Other interfaces are rarely used now: + + <STRONG>o</STRONG> BSD curses was improved slightly in 1993/1994 using Keith Bostic's + modification to make the library 8-bit clean for <STRONG>nvi</STRONG>. He moved + <EM>standout</EM> attribute to a structure member. + + The resulting 4.4BSD curses was replaced by ncurses over the next + ten years. + + <STRONG>o</STRONG> U/Win is rarely used now. + + +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + This implementation provides the <STRONG>A_ITALIC</STRONG> attribute for terminals which + have the <STRONG>enter_italics_mode</STRONG> (<STRONG>sitm</STRONG>) and <STRONG>exit_italics_mode</STRONG> (<STRONG>ritm</STRONG>) capa- + bilities. Italics are not mentioned in X/Open Curses. Unlike the oth- + er video attributes, <STRONG>A_ITALIC</STRONG> is unrelated to the <STRONG>set_attributes</STRONG> capa- + bilities. This implementation makes the assumption that <STRONG>exit_attri-</STRONG> + <STRONG>bute_mode</STRONG> may also reset italics. + + Each of the functions added by XSI Curses has a parameter <EM>opts</EM>, which + X/Open Curses still (after more than twenty years) documents as re- + served for future use, saying that it should be <STRONG>NULL</STRONG>. This implementa- + tion uses that parameter in ABI 6 for the functions which have a color- + pair parameter to support <EM>extended</EM> <EM>color</EM> <EM>pairs</EM>: + + <STRONG>o</STRONG> For functions which modify the color, e.g., <STRONG>wattr_set</STRONG>, if <EM>opts</EM> is + set it is treated as a pointer to <STRONG>int</STRONG>, and used to set the color + pair instead of the <STRONG>short</STRONG> <EM>pair</EM> parameter. + + <STRONG>o</STRONG> For functions which retrieve the color, e.g., <STRONG>wattr_get</STRONG>, if <EM>opts</EM> is + set it is treated as a pointer to <STRONG>int</STRONG>, and used to retrieve the + color pair as an <STRONG>int</STRONG> value, in addition retrieving it via the stan- + dard pointer to <STRONG>short</STRONG> parameter. + + The remaining functions which have <EM>opts</EM>, but do not manipulate color, + e.g., <STRONG>wattr_on</STRONG> and <STRONG>wattr_off</STRONG> are not used by this implementation except + to check that they are <STRONG>NULL</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are supported in the XSI Curses standard, Issue 4. The + standard defined the dedicated type for highlights, <STRONG>attr_t</STRONG>, which was + not defined in SVr4 curses. The functions taking <STRONG>attr_t</STRONG> arguments were + not supported under SVr4. + + Very old versions of this library did not force an update of the screen + when changing the attributes. Use <STRONG>touchwin</STRONG> to force the screen to + match the updated attributes. + + The XSI Curses standard states that whether the traditional functions + <STRONG>attron</STRONG>/<STRONG>attroff</STRONG>/<STRONG>attrset</STRONG> can manipulate attributes other than <STRONG>A_BLINK</STRONG>, + <STRONG>A_BOLD</STRONG>, <STRONG>A_DIM</STRONG>, <STRONG>A_REVERSE</STRONG>, <STRONG>A_STANDOUT</STRONG>, or <STRONG>A_UNDERLINE</STRONG> is "unspecified". + Under this implementation as well as SVr4 curses, these functions cor- + rectly manipulate all other highlights (specifically, <STRONG>A_ALTCHARSET</STRONG>, + <STRONG>A_PROTECT</STRONG>, and <STRONG>A_INVIS</STRONG>). + + XSI Curses added these entry points: + + <STRONG>attr_get</STRONG>, <STRONG>attr_on</STRONG>, <STRONG>attr_off</STRONG>, <STRONG>attr_set</STRONG>, <STRONG>wattr_on</STRONG>, <STRONG>wattr_off</STRONG>, <STRONG>wat-</STRONG> + <STRONG>tr_get</STRONG>, <STRONG>wattr_set</STRONG> + + The new functions are intended to work with a new series of highlight + macros prefixed with <STRONG>WA_</STRONG>. The older macros have direct counterparts in + the newer set of names: + + <EM>Name</EM> <EM>Description</EM> + ------------------------------------------------------------ + <STRONG>WA_NORMAL</STRONG> Normal display (no highlight) + <STRONG>WA_STANDOUT</STRONG> Best highlighting mode of the terminal. + <STRONG>WA_UNDERLINE</STRONG> Underlining + <STRONG>WA_REVERSE</STRONG> Reverse video + <STRONG>WA_BLINK</STRONG> Blinking + <STRONG>WA_DIM</STRONG> Half bright + <STRONG>WA_BOLD</STRONG> Extra bright or bold + <STRONG>WA_ALTCHARSET</STRONG> Alternate character set + + XSI curses does not assign values to these symbols, nor does it state + whether or not they are related to the similarly-named A_NORMAL, etc.: + + <STRONG>o</STRONG> The XSI curses standard specifies that each pair of corresponding + <STRONG>A_</STRONG> and <STRONG>WA_</STRONG>-using functions operates on the same current-highlight + information. + + <STRONG>o</STRONG> However, in some implementations, those symbols have unrelated val- + ues. + + For example, the Solaris <EM>xpg4</EM> (X/Open) curses declares <STRONG>attr_t</STRONG> to be + an unsigned short integer (16-bits), while <STRONG>chtype</STRONG> is a unsigned in- + teger (32-bits). The <STRONG>WA_</STRONG> symbols in this case are different from + the <STRONG>A_</STRONG> symbols because they are used for a smaller datatype which + does not represent <STRONG>A_CHARTEXT</STRONG> or <STRONG>A_COLOR</STRONG>. + + In this implementation (as in many others), the values happen to be + the same because it simplifies copying information between <STRONG>chtype</STRONG> + and <STRONG>cchar_t</STRONG> variables. + + The XSI standard extended conformance level adds new highlights <STRONG>A_HORI-</STRONG> + <STRONG>ZONTAL</STRONG>, <STRONG>A_LEFT</STRONG>, <STRONG>A_LOW</STRONG>, <STRONG>A_RIGHT</STRONG>, <STRONG>A_TOP</STRONG>, <STRONG>A_VERTICAL</STRONG> (and corresponding + <STRONG>WA_</STRONG> macros for each). As of August 2013, no known terminal provides + these highlights (i.e., via the <STRONG>sgr1</STRONG> capability). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>OK</STRONG> on success, or <STRONG>ERR</STRONG> on failure. + + X/Open does not define any error conditions. + + This implementation + + <STRONG>o</STRONG> returns an error if the window pointer is null. + + <STRONG>o</STRONG> returns an error if the color pair parameter for <STRONG>wcolor_set</STRONG> is out- + side the range 0..COLOR_PAIRS-1. + + <STRONG>o</STRONG> does not return an error if either of the parameters of <STRONG>wattr_get</STRONG> + used for retrieving attribute or color-pair values is <STRONG>NULL</STRONG>. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>, + <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Window-attributes">Window attributes</a></li> +<li><a href="#h3-Legacy-window-attributes">Legacy window attributes</a></li> +<li><a href="#h3-Change-character-rendition">Change character rendition</a></li> +<li><a href="#h3-Change-window-color">Change window color</a></li> +<li><a href="#h3-Standout">Standout</a></li> +</ul> +</li> +<li><a href="#h2-VIDEO-ATTRIBUTES">VIDEO ATTRIBUTES</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_beep.3x.html b/deps/ncurses-6.3/doc/html/man/curs_beep.3x.html new file mode 100644 index 0000000..f48c174 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_beep.3x.html @@ -0,0 +1,103 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2005,2010 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. * + **************************************************************************** + * @Id: curs_beep.3x,v 1.14 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_beep 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_beep 3x</H1> +<PRE> +<STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>beep</STRONG>, <STRONG>flash</STRONG> - <STRONG>curses</STRONG> bell and screen flash routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>beep(void);</STRONG> + <STRONG>int</STRONG> <STRONG>flash(void);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>beep</STRONG> and <STRONG>flash</STRONG> routines are used to alert the terminal user. The + routine <STRONG>beep</STRONG> sounds an audible alarm on the terminal, if possible; + otherwise it flashes the screen (visible bell). The routine <STRONG>flash</STRONG> + 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. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return <STRONG>OK</STRONG> if they succeed in beeping or flashing, <STRONG>ERR</STRONG> + otherwise. + + +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + SVr4's beep and flash routines always returned <STRONG>OK</STRONG>, so it was not + possible to tell when the beep or flash failed. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + Like SVr4, it specifies that they always return <STRONG>OK</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_bkgd.3x.html b/deps/ncurses-6.3/doc/html/man/curs_bkgd.3x.html new file mode 100644 index 0000000..be9dc1e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_bkgd.3x.html @@ -0,0 +1,193 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: curs_bkgd.3x,v 1.32 2021/06/17 21:30:22 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_bkgd 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_bkgd 3x</H1> +<PRE> +<STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>bkgdset</STRONG>, <STRONG>wbkgdset</STRONG>, <STRONG>bkgd</STRONG>, <STRONG>wbkgd</STRONG>, <STRONG>getbkgd</STRONG> - <STRONG>curses</STRONG> window background + manipulation routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>void</STRONG> <STRONG>bkgdset(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>wbkgdset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win,</EM> <EM>chtype</EM> <EM>ch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>bkgd(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + <STRONG>chtype</STRONG> <STRONG>getbkgd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-bkgdset">bkgdset</a></H3><PRE> + The <STRONG>bkgdset</STRONG> and <STRONG>wbkgdset</STRONG> routines manipulate the background of the + named window. The window background is a <STRONG>chtype</STRONG> consisting of any + combination of attributes (i.e., rendition) and a character. The + attribute part of the background is combined (OR'ed) with all non-blank + characters that are written into the window with <STRONG>waddch</STRONG>. Both the + character and attribute parts of the background are combined with the + blank characters. The background becomes a property of the character + and moves with the character through any scrolling and insert/delete + line/character operations. + + To the extent possible on a particular terminal, the attribute part of + the background is displayed as the graphic rendition of the character + put on the screen. + + +</PRE><H3><a name="h3-bkgd">bkgd</a></H3><PRE> + The <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> functions set the background property of the current + or specified window and then apply this setting to every character + position in that window. According to X/Open Curses, it should do + this: + + <STRONG>o</STRONG> The rendition of every character on the screen is changed to the + new background rendition. + + <STRONG>o</STRONG> Wherever the former background character appears, it is changed to + the new background character. + + Neither X/Open Curses nor the SVr4 manual pages give details about the + way the rendition of characters on the screen is updated when <STRONG>bkgd</STRONG> or + <STRONG>wbkgd</STRONG> is used to change the background character. + + This implementation, like SVr4 curses, does not store the background + and window attribute contributions to each cell separately. It updates + the rendition by comparing the character, non-color attributes and + colors contained in the background. For each cell in the window, + whether or not it is blank: + + <STRONG>o</STRONG> The library first compares the <EM>character</EM>, and if it matches the + current character part of the background, it replaces that with the + new background character. + + <STRONG>o</STRONG> The library then checks if the cell uses color, i.e., its color + pair value is nonzero. If not, it simply replaces the attributes + and color pair in the cell with those from the new background + character. + + <STRONG>o</STRONG> If the cell uses color, and that matches the color in the current + background, the library removes attributes which may have come from + the current background and adds attributes from the new background. + It finishes by setting the cell to use the color from the new + background. + + <STRONG>o</STRONG> If the cell uses color, and that does not match the color in the + current background, the library updates only the non-color + attributes, first removing those which may have come from the + current background, and then adding attributes from the new + background. + + If the background's character value is zero, a space is assumed. + + If the terminal does not support color, or if color has not been + started with <STRONG>start_color</STRONG>, the new background character's color + attribute will be ignored. + + +</PRE><H3><a name="h3-getbkgd">getbkgd</a></H3><PRE> + The <STRONG>getbkgd</STRONG> function returns the given window's current background + character/attribute pair. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. It + specifies that <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> return <STRONG>ERR</STRONG> on failure, but gives no + failure conditions. + + The routines <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> return the integer <STRONG>OK</STRONG>, unless the library + has not been initialized. + + In contrast, the SVr4.0 manual says <STRONG>bkgd</STRONG> and <STRONG>wbkgd</STRONG> may return <STRONG>OK</STRONG> "or a + non-negative integer if <STRONG>immedok</STRONG> is set", which refers to the return + value from <STRONG>wrefresh</STRONG> (used to implement the immediate repainting). The + SVr4 curses <STRONG>wrefresh</STRONG> returns the number of characters written to the + screen during the refresh. This implementation does not do that. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>bkgdset</STRONG> and <STRONG>bkgd</STRONG> may be macros. + + X/Open Curses mentions that the character part of the background must + be a single-byte value. This implementation, like SVr4, checks to + ensure that, and will reuse the old background character if the check + fails. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4 + (X/Open Curses). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-bkgdset">bkgdset</a></li> +<li><a href="#h3-bkgd">bkgd</a></li> +<li><a href="#h3-getbkgd">getbkgd</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_bkgrnd.3x.html b/deps/ncurses-6.3/doc/html/man/curs_bkgrnd.3x.html new file mode 100644 index 0000000..8e60e21 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_bkgrnd.3x.html @@ -0,0 +1,152 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2002-2015,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. * + **************************************************************************** + * @Id: curs_bkgrnd.3x,v 1.12 2020/10/17 23:13:15 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_bkgrnd 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_bkgrnd 3x</H1> +<PRE> +<STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>bkgrnd</STRONG>, <STRONG>wbkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, <STRONG>wbkgrndset</STRONG>, <STRONG>getbkgrnd</STRONG>, <STRONG>wgetbkgrnd</STRONG> - <STRONG>curses</STRONG> + window complex background manipulation routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>bkgrnd(</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wbkgrnd(</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + + <STRONG>void</STRONG> <STRONG>bkgrndset(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM> <STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>wbkgrndset(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>getbkgrnd(cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wgetbkgrnd(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-bkgrndset">bkgrndset</a></H3><PRE> + The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines manipulate the background of the + named window. The window background is a <STRONG>cchar_t</STRONG> consisting of any + combination of attributes (i.e., rendition) and a complex character. + The attribute part of the background is combined (OR'ed) with all non- + blank characters that are written into the window with <STRONG>waddch</STRONG>. Both + the character and attribute parts of the background are combined with + the blank characters. The background becomes a property of the + character and moves with the character through any scrolling and + insert/delete line/character operations. + + To the extent possible on a particular terminal, the attribute part of + the background is displayed as the graphic rendition of the character + put on the screen. + + +</PRE><H3><a name="h3-bkgrnd">bkgrnd</a></H3><PRE> + The <STRONG>bkgrnd</STRONG> and <STRONG>wbkgrnd</STRONG> functions set the background property of the + current or specified window and then apply this setting to every + character position in that window: + + <STRONG>o</STRONG> The rendition of every character on the screen is changed to the + new background rendition. + + <STRONG>o</STRONG> Wherever the former background character appears, it is changed to + the new background character. + + +</PRE><H3><a name="h3-getbkgrnd">getbkgrnd</a></H3><PRE> + The <STRONG>getbkgrnd</STRONG> function returns the given window's current background + character/attribute pair via the <STRONG>wch</STRONG> pointer. If the given window + pointer is null, the character is not updated (but no error returned). + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>bkgrnd</STRONG>, <STRONG>bkgrndset</STRONG>, and <STRONG>getbkgrnd</STRONG> may be macros. + + X/Open Curses does not provide details on how the rendition is changed. + This implementation follows the approach used in SVr4 curses, which is + explained in the manual page for <STRONG>wbkgd</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The <STRONG>bkgrndset</STRONG> and <STRONG>wbkgrndset</STRONG> routines do not return a value. + + Upon successful completion, the other functions return <STRONG>OK</STRONG>. Otherwise, + they return <STRONG>ERR</STRONG>: + + <STRONG>o</STRONG> A null window pointer is treated as an error. + + <STRONG>o</STRONG> A null character pointer is treated as an error. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4 + (X/Open Curses). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-bkgrndset">bkgrndset</a></li> +<li><a href="#h3-bkgrnd">bkgrnd</a></li> +<li><a href="#h3-getbkgrnd">getbkgrnd</a></li> +</ul> +</li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_border.3x.html b/deps/ncurses-6.3/doc/html/man/curs_border.3x.html new file mode 100644 index 0000000..e70367d --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_border.3x.html @@ -0,0 +1,161 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2007,2010 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. * + **************************************************************************** + * @Id: curs_border.3x,v 1.27 2020/10/18 00:33:06 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_border 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_border 3x</H1> +<PRE> +<STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>border</STRONG>, <STRONG>wborder</STRONG>, <STRONG>box</STRONG>, <STRONG>hline</STRONG>, <STRONG>whline</STRONG>, <STRONG>vline</STRONG>, <STRONG>wvline</STRONG>, <STRONG>mvhline</STRONG>, <STRONG>mvwhline</STRONG>, + <STRONG>mvvline</STRONG>, <STRONG>mvwvline</STRONG> - create <STRONG>curses</STRONG> borders, horizontal and vertical + lines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>border(chtype</STRONG> <EM>ls</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>rs</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ts</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>bs</EM><STRONG>,</STRONG> + <STRONG>chtype</STRONG> <EM>tl</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>tr</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>bl</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>br</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wborder(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ls</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>rs</EM><STRONG>,</STRONG> + <STRONG>chtype</STRONG> <EM>ts</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>bs</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>tl</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>tr</EM><STRONG>,</STRONG> + <STRONG>chtype</STRONG> <EM>bl</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>br</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>box(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>verch</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>horch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>hline(chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>whline(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>vline(chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wvline(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvhline(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwhline(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvvline(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwvline(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>border</STRONG>, <STRONG>wborder</STRONG> and <STRONG>box</STRONG> routines draw a box around the edges of a + window. Other than the window, each argument is a character with at- + tributes: + + <EM>ls</EM> - left side, + <EM>rs</EM> - right side, + <EM>ts</EM> - top side, + <EM>bs</EM> - bottom side, + <EM>tl</EM> - top left-hand corner, + <EM>tr</EM> - top right-hand corner, + <EM>bl</EM> - bottom left-hand corner, and + <EM>br</EM> - bottom right-hand corner. + + If any of these arguments is zero, then the corresponding default val- + ues (defined in <STRONG>curses.h</STRONG>) are used instead: + + <STRONG>ACS_VLINE</STRONG>, + <STRONG>ACS_VLINE</STRONG>, + <STRONG>ACS_HLINE</STRONG>, + <STRONG>ACS_HLINE</STRONG>, + <STRONG>ACS_ULCORNER</STRONG>, + <STRONG>ACS_URCORNER</STRONG>, + <STRONG>ACS_LLCORNER</STRONG>, + <STRONG>ACS_LRCORNER</STRONG>. + + <STRONG>box(</STRONG><EM>win</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>)</STRONG> is a shorthand for the following call: <STRONG>wbor-</STRONG> + <STRONG>der(</STRONG><EM>win</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <STRONG>0,</STRONG> <STRONG>0,</STRONG> <STRONG>0,</STRONG> <STRONG>0)</STRONG>. + + The <STRONG>hline</STRONG> and <STRONG>whline</STRONG> functions draw a horizontal (left to right) line + using <EM>ch</EM> starting at the current cursor position in the window. The + current cursor position is not changed. The line is at most <EM>n</EM> charac- + ters long, or as many as fit into the window. + + The <STRONG>vline</STRONG> and <STRONG>wvline</STRONG> functions draw a vertical (top to bottom) line us- + ing <EM>ch</EM> starting at the current cursor position in the window. The cur- + rent cursor position is not changed. The line is at most <EM>n</EM> characters + long, or as many as fit into the window. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>OK</STRONG>. The SVr4.0 manual says "or a non- + negative integer if <STRONG>immedok</STRONG> is set", but this appears to be an error. + + X/Open does not define any error conditions. This implementation re- + turns an error if the window pointer is null. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The borders generated by these functions are <EM>inside</EM> borders (this is + also true of SVr4 curses, though the fact is not documented). + + Note that <STRONG>border</STRONG> and <STRONG>box</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. The + standard specifies that they return <STRONG>ERR</STRONG> on failure, but specifies no + error conditions. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_border_set.3x.html b/deps/ncurses-6.3/doc/html/man/curs_border_set.3x.html new file mode 100644 index 0000000..fad5c0e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_border_set.3x.html @@ -0,0 +1,177 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2002-2011,2012 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. * + **************************************************************************** + * @Id: curs_border_set.3x,v 1.13 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_border_set 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_border_set 3x</H1> +<PRE> +<STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>border_set</STRONG>, <STRONG>wborder_set</STRONG>, <STRONG>box_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>whline_set</STRONG>, <STRONG>mvhline_set</STRONG>, + <STRONG>mvwhline_set</STRONG>, <STRONG>vline_set</STRONG>, <STRONG>wvline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG> - create + <STRONG>curses</STRONG> borders or lines using complex characters and renditions + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>border_set(</STRONG> + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ls</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>rs</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ts</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bs</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tr</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>br</EM> <STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wborder_set(</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*win</STRONG>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ls</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>rs</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ts</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bs</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>tr</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>bl</EM>, <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>br</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>box_set(</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*win</STRONG>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>verch</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>horch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>hline_set(</STRONG> + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>whline_set(</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvhline_set(</STRONG> + <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwhline_set(</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>, + <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>vline_set(</STRONG> + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wvline_set(</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvvline_set(</STRONG> + <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwvline_set(</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM>, + <STRONG>int</STRONG> <EM>y</EM>, <STRONG>int</STRONG> <EM>x</EM>, + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM>, <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>border_set</STRONG> and <STRONG>wborder_set</STRONG> functions draw a border around the edges + of the current or specified window. These functions do not change the + cursor position, and do not wrap. + + Other than the window, each argument is a complex character with at- + tributes: + <EM>ls</EM> - left side, + <EM>rs</EM> - right side, + <EM>ts</EM> - top side, + <EM>bs</EM> - bottom side, + <EM>tl</EM> - top left-hand corner, + <EM>tr</EM> - top right-hand corner, + <EM>bl</EM> - bottom left-hand corner, and + <EM>br</EM> - bottom right-hand corner. + + If any of these arguments is zero, then the corresponding default val- + ues (defined in <STRONG>curses.h</STRONG>) are used instead: + <STRONG>WACS_VLINE</STRONG>, + <STRONG>WACS_VLINE</STRONG>, + <STRONG>WACS_HLINE</STRONG>, + <STRONG>WACS_HLINE</STRONG>, + <STRONG>WACS_ULCORNER</STRONG>, + <STRONG>WACS_URCORNER</STRONG>, + <STRONG>WACS_LLCORNER</STRONG>, and + <STRONG>WACS_LRCORNER</STRONG>. + + <STRONG>box_set(</STRONG><EM>win</EM>, <EM>verch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>);</STRONG> is a shorthand for the following call: + + <STRONG>wborder_set(</STRONG><EM>win</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> <EM>verch</EM><STRONG>,</STRONG> + <EM>horch</EM><STRONG>,</STRONG> <EM>horch</EM><STRONG>,</STRONG> <STRONG>NULL,</STRONG> <STRONG>NULL,</STRONG> <STRONG>NULL,</STRONG> <STRONG>NULL);</STRONG> + + The <STRONG>*line_set</STRONG> functions use <EM>wch</EM> to draw a line starting at the current + cursor position in the window. The line is at most <EM>n</EM> characters long + or as many as fit into the window. The current cursor position is not + changed. + + The <STRONG>hline_set</STRONG>, <STRONG>mvhline_set</STRONG>, <STRONG>mvwhline_set</STRONG>, and <STRONG>whline_set</STRONG> functions draw + a line proceeding toward the last column of the same line. + + The <STRONG>vline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>wvline_set</STRONG> functions draw + a line proceeding toward the last line of the window. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>border_set</STRONG>, <STRONG>hline_set</STRONG>, <STRONG>mvhline_set</STRONG>, <STRONG>mvvline_set</STRONG>, <STRONG>mvwh-</STRONG> + <STRONG>line_set</STRONG>, <STRONG>mvwvline_set</STRONG>, and <STRONG>vline_set</STRONG> may be macros. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Upon successful completion, these functions return <STRONG>OK</STRONG>. Otherwise, they + return <STRONG>ERR</STRONG>. + + Functions using a window parameter return an error if it is null. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_clear.3x.html b/deps/ncurses-6.3/doc/html/man/curs_clear.3x.html new file mode 100644 index 0000000..a6e9441 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_clear.3x.html @@ -0,0 +1,149 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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. * + **************************************************************************** + * @Id: curs_clear.3x,v 1.20 2020/10/24 09:19:37 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_clear 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_clear 3x</H1> +<PRE> +<STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, <STRONG>wclrtobot</STRONG>, <STRONG>clrtoeol</STRONG>, <STRONG>wclrtoeol</STRONG> + - clear all or part of a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>erase(void);</STRONG> + <STRONG>int</STRONG> <STRONG>werase(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>clear(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wclear(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>clrtobot(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wclrtobot(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>clrtoeol(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wclrtoeol(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>erase</STRONG> and <STRONG>werase</STRONG> routines copy blanks to every position in the win- + dow, clearing the screen. + + The <STRONG>clear</STRONG> and <STRONG>wclear</STRONG> routines are like <STRONG>erase</STRONG> and <STRONG>werase</STRONG>, but they also + call <STRONG>clearok</STRONG>, so that the screen is cleared completely on the next call + to <STRONG>wrefresh</STRONG> for that window and repainted from scratch. + + The <STRONG>clrtobot</STRONG> and <STRONG>wclrtobot</STRONG> routines erase from the cursor to the end of + screen. That is, they erase all lines below the cursor in the window. + Also, the current line to the right of the cursor, inclusive, is + erased. + + The <STRONG>clrtoeol</STRONG> and <STRONG>wclrtoeol</STRONG> routines erase the current line to the right + of the cursor, inclusive, to the end of the current line. + + Blanks created by erasure have the current background rendition (as set + by <STRONG>wbkgdset</STRONG>) merged into them. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>OK</STRONG> on success and <STRONG>ERR</STRONG> on failure. + + X/Open defines no error conditions. In this implementation, + + <STRONG>o</STRONG> functions using a window pointer parameter return an error if it is + null + + <STRONG>o</STRONG> <STRONG>wclrtoeol</STRONG> returns an error if the cursor position is about to wrap. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>erase</STRONG>, <STRONG>werase</STRONG>, <STRONG>clear</STRONG>, <STRONG>wclear</STRONG>, <STRONG>clrtobot</STRONG>, and <STRONG>clrtoeol</STRONG> may be + macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. The + standard specifies that they return <STRONG>ERR</STRONG> on failure, but specifies no + error conditions. + + The SVr4.0 manual says that these functions could return "a non-nega- + tive integer if <STRONG>immedok</STRONG> is set", referring to the return-value of <STRONG>wre-</STRONG> + <STRONG>fresh</STRONG>. In that implementation, <STRONG>wrefresh</STRONG> would return a count of the + number of characters written to the terminal. + + Some historic curses implementations had, as an undocumented feature, + the ability to do the equivalent of <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touch-</STRONG> + <STRONG>win(stdscr)</STRONG> or <STRONG>clear(stdscr)</STRONG>. This will not work under ncurses. + + This implementation, and others such as Solaris, sets the current posi- + tion to 0,0 after erasing via <STRONG>werase</STRONG> and <STRONG>wclear</STRONG>. That fact is not doc- + umented in other implementations, and may not be true of implementa- + tions which were not derived from SVr4 source. + + Not obvious from the description, most implementations clear the screen + after <STRONG>wclear</STRONG> even for a subwindow or derived window. If you do not + want to clear the screen during the next <STRONG>wrefresh</STRONG>, use <STRONG>werase</STRONG> instead. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_color.3x.html b/deps/ncurses-6.3/doc/html/man/curs_color.3x.html new file mode 100644 index 0000000..22964c4 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_color.3x.html @@ -0,0 +1,564 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_color.3x,v 1.66 2021/09/04 19:42:20 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_color 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_color 3x</H1> +<PRE> +<STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>start_color</STRONG>, <STRONG>has_colors</STRONG>, <STRONG>can_change_color</STRONG>, <STRONG>init_pair</STRONG>, <STRONG>init_color</STRONG>, + <STRONG>init_extended_pair</STRONG>, <STRONG>init_extended_color</STRONG>, <STRONG>color_content</STRONG>, <STRONG>pair_content</STRONG>, + <STRONG>extended_color_content</STRONG>, <STRONG>extended_pair_content</STRONG>, <STRONG>reset_color_pairs</STRONG>, + <STRONG>COLOR_PAIR</STRONG>, <STRONG>PAIR_NUMBER</STRONG> - <STRONG>curses</STRONG> color manipulation routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>start_color(void);</STRONG> + + <STRONG>bool</STRONG> <STRONG>has_colors(void);</STRONG> + <STRONG>bool</STRONG> <STRONG>can_change_color(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>init_pair(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>f</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>init_color(short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>b</EM><STRONG>);</STRONG> + /* extensions */ + <STRONG>int</STRONG> <STRONG>init_extended_pair(int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>f</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>init_extended_color(int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>b</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>color_content(short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>r</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>g</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>pair_content(short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>f</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG> + /* extensions */ + <STRONG>int</STRONG> <STRONG>extended_color_content(int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>extended_pair_content(int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>f</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>b</EM><STRONG>);</STRONG> + + /* extensions */ + <STRONG>void</STRONG> <STRONG>reset_color_pairs(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>COLOR_PAIR(int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-Overview">Overview</a></H3><PRE> + <STRONG>curses</STRONG> supports color attributes on terminals with that capability. To + use these routines <STRONG>start_color</STRONG> must be called, usually right after + <STRONG>initscr</STRONG>. Colors are always used in pairs (referred to as color-pairs). + A color-pair consists of a foreground color (for characters) and a + background color (for the blank field on which the characters are dis- + played). A programmer initializes a color-pair with the routine + <STRONG>init_pair</STRONG>. After it has been initialized, <STRONG>COLOR_PAIR</STRONG>(<EM>n</EM>) can be used to + convert the pair to a video attribute. + + If a terminal is capable of redefining colors, the programmer can use + the routine <STRONG>init_color</STRONG> to change the definition of a color. The rou- + tines <STRONG>has_colors</STRONG> and <STRONG>can_change_color</STRONG> return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, depending + on whether the terminal has color capabilities and whether the program- + mer can change the colors. The routine <STRONG>color_content</STRONG> allows a program- + mer to extract the amounts of red, green, and blue components in an + initialized color. The routine <STRONG>pair_content</STRONG> allows a programmer to + find out how a given color-pair is currently defined. + + +</PRE><H3><a name="h3-Color-Rendering">Color Rendering</a></H3><PRE> + The <STRONG>curses</STRONG> library combines these inputs to produce the actual fore- + ground and background colors shown on the screen: + + <STRONG>o</STRONG> per-character video attributes (e.g., via <STRONG>waddch</STRONG>), + + <STRONG>o</STRONG> the window attribute (e.g., by <STRONG>wattrset</STRONG>), and + + <STRONG>o</STRONG> the background character (e.g., <STRONG>wbkgdset</STRONG>). + + Per-character and window attributes are usually set by a parameter con- + taining video attributes including a color pair value. Some functions + such as <STRONG>wattr_set</STRONG> use a separate parameter which is the color pair num- + ber. + + The background character is a special case: it includes a character + value, just as if it were passed to <STRONG>waddch</STRONG>. + + The <STRONG>curses</STRONG> library does the actual work of combining these color pairs + in an internal function called from <STRONG>waddch</STRONG>: + + <STRONG>o</STRONG> If the parameter passed to <STRONG>waddch</STRONG> is <EM>blank</EM>, and it uses the special + color pair 0, + + <STRONG>o</STRONG> <STRONG>curses</STRONG> next checks the window attribute. + + <STRONG>o</STRONG> If the window attribute does not use color pair 0, <STRONG>curses</STRONG> uses + the color pair from the window attribute. + + <STRONG>o</STRONG> Otherwise, <STRONG>curses</STRONG> uses the background character. + + <STRONG>o</STRONG> If the parameter passed to <STRONG>waddch</STRONG> is <EM>not</EM> <EM>blank</EM>, or it does not use + the special color pair 0, <STRONG>curses</STRONG> prefers the color pair from the + parameter, if it is nonzero. Otherwise, it tries the window attri- + bute next, and finally the background character. + + Some <STRONG>curses</STRONG> functions such as <STRONG>wprintw</STRONG> call <STRONG>waddch</STRONG>. Those do not com- + bine its parameter with a color pair. Consequently those calls use on- + ly the window attribute or the background character. + + +</PRE><H2><a name="h2-CONSTANTS">CONSTANTS</a></H2><PRE> + In <STRONG>&lt;curses.h&gt;</STRONG> the following macros are defined. These are the standard + colors (ISO-6429). <STRONG>curses</STRONG> also assumes that <STRONG>COLOR_BLACK</STRONG> is the default + background color for all terminals. + + <STRONG>COLOR_BLACK</STRONG> + <STRONG>COLOR_RED</STRONG> + <STRONG>COLOR_GREEN</STRONG> + <STRONG>COLOR_YELLOW</STRONG> + <STRONG>COLOR_BLUE</STRONG> + <STRONG>COLOR_MAGENTA</STRONG> + <STRONG>COLOR_CYAN</STRONG> + <STRONG>COLOR_WHITE</STRONG> + + Some terminals support more than the eight (8) "ANSI" colors. There + are no standard names for those additional colors. + + +</PRE><H2><a name="h2-VARIABLES">VARIABLES</a></H2><PRE> + +</PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE> + is initialized by <STRONG>start_color</STRONG> to the maximum number of colors the ter- + minal can support. + + +</PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE> + is initialized by <STRONG>start_color</STRONG> to the maximum number of color pairs the + terminal can support. + + +</PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE> + +</PRE><H3><a name="h3-start_color">start_color</a></H3><PRE> + The <STRONG>start_color</STRONG> routine requires no arguments. It must be called if + the programmer wants to use colors, and before any other color manipu- + lation routine is called. It is good practice to call this routine + right after <STRONG>initscr</STRONG>. <STRONG>start_color</STRONG> does this: + + <STRONG>o</STRONG> It initializes two global variables, <STRONG>COLORS</STRONG> and <STRONG>COLOR_PAIRS</STRONG> (re- + spectively defining the maximum number of colors and color-pairs + the terminal can support). + + <STRONG>o</STRONG> It initializes the special color pair <STRONG>0</STRONG> to the default foreground + and background colors. No other color pairs are initialized. + + <STRONG>o</STRONG> It restores the colors on the terminal to the values they had when + the terminal was just turned on. + + <STRONG>o</STRONG> If the terminal supports the <STRONG>initc</STRONG> (<STRONG>initialize_color</STRONG>) capability, + <STRONG>start_color</STRONG> initializes its internal table representing the red, + green, and blue components of the color palette. + + The components depend on whether the terminal uses CGA (aka "ANSI") + or HLS (i.e., the <STRONG>hls</STRONG> (<STRONG>hue_lightness_saturation</STRONG>) capability is + set). The table is initialized first for eight basic colors + (black, red, green, yellow, blue, magenta, cyan, and white), using + weights that depend upon the CGA/HLS choice. For "ANSI" colors the + weights are <STRONG>680</STRONG> or <STRONG>0</STRONG> depending on whether the corresponding red, + green, or blue component is used or not. That permits using <STRONG>1000</STRONG> + to represent bold/bright colors. After the initial eight colors + (if the terminal supports more than eight colors) the components + are initialized using the same pattern, but with weights of <STRONG>1000</STRONG>. + SVr4 uses a similar scheme, but uses <STRONG>1000</STRONG> for the components of the + initial eight colors. + + <STRONG>start_color</STRONG> does not attempt to set the terminal's color palette to + match its built-in table. An application may use <STRONG>init_color</STRONG> to al- + ter the internal table along with the terminal's color. + + These limits apply to color values and color pairs. Values outside + these limits are not legal, and may result in a runtime error: + + <STRONG>o</STRONG> <STRONG>COLORS</STRONG> corresponds to the terminal database's <STRONG>max_colors</STRONG> capabili- + ty, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>). + + <STRONG>o</STRONG> color values are expected to be in the range <STRONG>0</STRONG> to <STRONG>COLORS-1</STRONG>, inclu- + sive (including <STRONG>0</STRONG> and <STRONG>COLORS-1</STRONG>). + + <STRONG>o</STRONG> a special color value <STRONG>-1</STRONG> is used in certain extended functions to + denote the <EM>default</EM> <EM>color</EM> (see <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>). + + <STRONG>o</STRONG> <STRONG>COLOR_PAIRS</STRONG> corresponds to the terminal database's <STRONG>max_pairs</STRONG> capa- + bility, (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>). + + <STRONG>o</STRONG> legal color pair values are in the range <STRONG>1</STRONG> to <STRONG>COLOR_PAIRS-1</STRONG>, inclu- + sive. + + <STRONG>o</STRONG> color pair <STRONG>0</STRONG> is special; it denotes "no color". + + Color pair <STRONG>0</STRONG> is assumed to be white on black, but is actually what- + ever the terminal implements before color is initialized. It can- + not be modified by the application. + + +</PRE><H3><a name="h3-has_colors">has_colors</a></H3><PRE> + The <STRONG>has_colors</STRONG> routine requires no arguments. It returns <STRONG>TRUE</STRONG> if the + terminal can manipulate colors; otherwise, it returns <STRONG>FALSE</STRONG>. This rou- + tine facilitates writing terminal-independent programs. For example, a + programmer can use it to decide whether to use color or some other + video attribute. + + +</PRE><H3><a name="h3-can_change_color">can_change_color</a></H3><PRE> + The <STRONG>can_change_color</STRONG> routine requires no arguments. It returns <STRONG>TRUE</STRONG> if + the terminal supports colors and can change their definitions; other, + it returns <STRONG>FALSE</STRONG>. This routine facilitates writing terminal-indepen- + dent programs. + + +</PRE><H3><a name="h3-init_pair">init_pair</a></H3><PRE> + The <STRONG>init_pair</STRONG> routine changes the definition of a color-pair. It takes + three arguments: the number of the color-pair to be changed, the fore- + ground color number, and the background color number. For portable ap- + plications: + + <STRONG>o</STRONG> The first argument must be a legal color pair value. If default + colors are used (see <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG>) the upper limit is ad- + justed to allow for extra pairs which use a default color in fore- + ground and/or background. + + <STRONG>o</STRONG> The second and third arguments must be legal color values. + + If the color-pair was previously initialized, the screen is refreshed + and all occurrences of that color-pair are changed to the new defini- + tion. + + As an extension, ncurses allows you to set color pair <STRONG>0</STRONG> via the <STRONG>as-</STRONG> + <STRONG><A HREF="assume_default_colors.3x.html">sume_default_colors(3x)</A></STRONG> routine, or to specify the use of default col- + ors (color number <STRONG>-1</STRONG>) if you first invoke the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG> + routine. + + +</PRE><H3><a name="h3-init_extended_pair">init_extended_pair</a></H3><PRE> + Because <STRONG>init_pair</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that limits + color-pairs and color-values to 32767 on modern hardware. The exten- + sion <STRONG>init_extended_pair</STRONG> uses <STRONG>int</STRONG>s for the color-pair and color-value, + allowing a larger number of colors to be supported. + + +</PRE><H3><a name="h3-init_color">init_color</a></H3><PRE> + The <STRONG>init_color</STRONG> routine changes the definition of a color. It takes + four arguments: the number of the color to be changed followed by three + RGB values (for the amounts of red, green, and blue components). + + <STRONG>o</STRONG> The first argument must be a legal color value; default colors are + not allowed here. (See the section <STRONG>Colors</STRONG> for the default color + index.) + + <STRONG>o</STRONG> Each of the last three arguments must be a value in the range <STRONG>0</STRONG> + through <STRONG>1000</STRONG>. + + When <STRONG>init_color</STRONG> is used, all occurrences of that color on the screen + immediately change to the new definition. + + +</PRE><H3><a name="h3-init_extended_color">init_extended_color</a></H3><PRE> + Because <STRONG>init_color</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that limits + color-values and their red, green, and blue components to 32767 on mod- + ern hardware. The extension <STRONG>init_extended_color</STRONG> uses <STRONG>int</STRONG>s for the col- + or value and for setting the red, green, and blue components, allowing + a larger number of colors to be supported. + + +</PRE><H3><a name="h3-color_content">color_content</a></H3><PRE> + The <STRONG>color_content</STRONG> routine gives programmers a way to find the intensity + of the red, green, and blue (RGB) components in a color. It requires + four arguments: the color number, and three addresses of <STRONG>short</STRONG>s for + storing the information about the amounts of red, green, and blue com- + ponents in the given color. + + <STRONG>o</STRONG> The first argument must be a legal color value, i.e., <STRONG>0</STRONG> through + <STRONG>COLORS-1</STRONG>, inclusive. + + <STRONG>o</STRONG> The values that are stored at the addresses pointed to by the last + three arguments are in the range <STRONG>0</STRONG> (no component) through <STRONG>1000</STRONG> + (maximum amount of component), inclusive. + + +</PRE><H3><a name="h3-extended_color_content">extended_color_content</a></H3><PRE> + Because <STRONG>color_content</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that lim- + its color-values and their red, green, and blue components to 32767 on + modern hardware. The extension <STRONG>extended_color_content</STRONG> uses <STRONG>int</STRONG>s for + the color value and for returning the red, green, and blue components, + allowing a larger number of colors to be supported. + + +</PRE><H3><a name="h3-pair_content">pair_content</a></H3><PRE> + The <STRONG>pair_content</STRONG> routine allows programmers to find out what colors a + given color-pair consists of. It requires three arguments: the color- + pair number, and two addresses of <STRONG>short</STRONG>s for storing the foreground and + the background color numbers. + + <STRONG>o</STRONG> The first argument must be a legal color value, i.e., in the range + <STRONG>1</STRONG> through <STRONG>COLOR_PAIRS-1</STRONG>, inclusive. + + <STRONG>o</STRONG> The values that are stored at the addresses pointed to by the sec- + ond and third arguments are in the range <STRONG>0</STRONG> through <STRONG>COLORS</STRONG>, inclu- + sive. + + +</PRE><H3><a name="h3-extended_pair_content">extended_pair_content</a></H3><PRE> + Because <STRONG>pair_content</STRONG> uses signed <STRONG>short</STRONG>s for its parameters, that limits + color-pair and color-values to 32767 on modern hardware. The extension + <STRONG>extended_pair_content</STRONG> uses <STRONG>int</STRONG>s for the color pair and for returning + the foreground and background colors, allowing a larger number of col- + ors to be supported. + + +</PRE><H3><a name="h3-reset_color_pairs">reset_color_pairs</a></H3><PRE> + The extension <STRONG>reset_color_pairs</STRONG> tells ncurses to discard all of the + color-pair information which was set with <STRONG>init_pair</STRONG>. It also touches + the current- and standard-screens, allowing an application to switch + color palettes rapidly. + + +</PRE><H3><a name="h3-PAIR_NUMBER">PAIR_NUMBER</a></H3><PRE> + <STRONG>PAIR_NUMBER(</STRONG><EM>attrs</EM>) extracts the color value from its <EM>attrs</EM> parameter + and returns it as a color pair number. + + +</PRE><H3><a name="h3-COLOR_PAIR">COLOR_PAIR</a></H3><PRE> + Its inverse <STRONG>COLOR_PAIR(</STRONG><EM>n</EM><STRONG>)</STRONG> converts a color pair number to an attribute. + Attributes can hold color pairs in the range 0 to 255. If you need a + color pair larger than that, you must use functions such as <STRONG>attr_set</STRONG> + (which pass the color pair as a separate parameter) rather than the + legacy functions such as <STRONG>attrset</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The routines <STRONG>can_change_color</STRONG> and <STRONG>has_colors</STRONG> return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>. + + All other routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 + specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful com- + pletion. + + X/Open defines no error conditions. SVr4 does document some error con- + ditions which apply in general: + + <STRONG>o</STRONG> This implementation will return <STRONG>ERR</STRONG> on attempts to use color values + outside the range <STRONG>0</STRONG> to <STRONG>COLORS</STRONG>-1 (except for the default colors ex- + tension), or use color pairs outside the range <STRONG>0</STRONG> to <STRONG>COLOR_PAIRS-1</STRONG>. + + Color values used in <STRONG>init_color</STRONG> must be in the range <STRONG>0</STRONG> to <STRONG>1000</STRONG>. + + An error is returned from all functions if the terminal has not + been initialized. + + An error is returned from secondary functions such as <STRONG>init_pair</STRONG> if + <STRONG>start_color</STRONG> was not called. + + <STRONG>o</STRONG> SVr4 does much the same, except that it returns <STRONG>ERR</STRONG> from <STRONG>pair_con-</STRONG> + <STRONG>tent</STRONG> if the pair was not initialized using <STRONG>init_pairs</STRONG> and it re- + turns <STRONG>ERR</STRONG> from <STRONG>color_content</STRONG> if the terminal does not support + changing colors. + + This implementation does not return <STRONG>ERR</STRONG> for either case. + + Specific functions make additional checks: + + <STRONG>init_color</STRONG> + returns an error if the terminal does not support this feature, + e.g., if the <STRONG>initialize_color</STRONG> capability is absent from the + terminal description. + + <STRONG>start_color</STRONG> + returns an error if the color table cannot be allocated. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + In the <STRONG>ncurses</STRONG> implementation, there is a separate color activation + flag, color palette, color pairs table, and associated <STRONG>COLORS</STRONG> and <STRONG>COL-</STRONG> + <STRONG>OR_PAIRS</STRONG> counts for each screen; the <STRONG>start_color</STRONG> function only affects + the current screen. The SVr4/XSI interface is not really designed with + this in mind, and historical implementations may use a single shared + color palette. + + 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 <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG>. + + Several caveats apply on older x86 machines (e.g., i386, i486) with + VGA-compatible graphics: + + <STRONG>o</STRONG> COLOR_YELLOW is actually brown. To get yellow, use COLOR_YELLOW + combined with the <STRONG>A_BOLD</STRONG> attribute. + + <STRONG>o</STRONG> 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). + + <STRONG>o</STRONG> Color RGB values are not settable. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + SVr3.2 introduced color support to curses in 1987. + + SVr4 made internal changes, e.g., moving the storage for the color + state from <STRONG>SP</STRONG> (the <STRONG>SCREEN</STRONG> structure) to <STRONG>cur_term</STRONG> (the <STRONG>TERMINAL</STRONG> struc- + ture), but provided the same set of library functions. + + 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 <STRONG>chtype</STRONG> + data type (denoted by <STRONG>A_COLOR</STRONG>). + + Other implementations of curses had different limits: + + <STRONG>o</STRONG> PCCurses (1987-1990) provided for only eight (8) colors. + + <STRONG>o</STRONG> PDCurses (1992-present) inherited the 8-color limitation from PC- + Curses, but changed this to 256 in version 2.5 (2001), along with + changing <STRONG>chtype</STRONG> from 16-bits to 32-bits. + + <STRONG>o</STRONG> X/Open Curses (1992-present) added a new structure <STRONG>cchar_t</STRONG> to store + the character, attributes and color-pair values, allowing increased + range of color-pairs. Both color-pairs and color-values used a + signed <STRONG>short</STRONG>, limiting values to 15 bits. + + <STRONG>o</STRONG> ncurses (1992-present) uses eight bits for <STRONG>A_COLOR</STRONG> in <STRONG>chtype</STRONG> val- + ues. + + Version 5.3 provided a wide-character interface (2002), but left + color-pairs as part of the attributes-field. + + Since version 6 (2015), ncurses uses a separate <STRONG>int</STRONG> for color-pairs + in the <STRONG>cchar_t</STRONG> values. When those color-pair values fit in 8 bits, + ncurses allows color-pairs to be manipulated via the functions us- + ing <STRONG>chtype</STRONG> values. + + <STRONG>o</STRONG> NetBSD curses used 6 bits from 2000 (when colors were first sup- + ported) until 2004. At that point, NetBSD changed to use 10 bits. + As of 2021, that size is unchanged. Like ncurses before version 6, + the NetBSD color-pair information is stored in the attributes field + of <STRONG>cchar_t</STRONG>, limiting the number of color-pairs by the size of the + bitfield. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + This implementation satisfies XSI Curses's minimum maximums for <STRONG>COLORS</STRONG> + and <STRONG>COLOR_PAIRS</STRONG>. + + The <STRONG>init_pair</STRONG> routine accepts negative values of foreground and back- + ground color to support the <STRONG><A HREF="default_colors.3x.html">use_default_colors(3x)</A></STRONG> extension, but only + if that routine has been first invoked. + + The assumption that <STRONG>COLOR_BLACK</STRONG> is the default background color for all + terminals can be modified using the <STRONG><A HREF="default_colors.3x.html">assume_default_colors(3x)</A></STRONG> exten- + sion. + + This implementation checks the pointers, e.g., for the values returned + by <STRONG>color_content</STRONG> and <STRONG>pair_content</STRONG>, and will treat those as optional pa- + rameters when null. + + 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 <STRONG>short</STRONG> + 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 + <STRONG>short</STRONG> parameters, allowing applications to use larger color- and pair- + numbers. + + The <STRONG>reset_color_pairs</STRONG> function is an extension of ncurses. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>de-</STRONG> + <STRONG><A HREF="default_colors.3x.html">fault_colors(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Overview">Overview</a></li> +<li><a href="#h3-Color-Rendering">Color Rendering</a></li> +</ul> +</li> +<li><a href="#h2-CONSTANTS">CONSTANTS</a></li> +<li><a href="#h2-VARIABLES">VARIABLES</a> +<ul> +<li><a href="#h3-COLORS">COLORS</a></li> +<li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li> +</ul> +</li> +<li><a href="#h2-FUNCTIONS">FUNCTIONS</a> +<ul> +<li><a href="#h3-start_color">start_color</a></li> +<li><a href="#h3-has_colors">has_colors</a></li> +<li><a href="#h3-can_change_color">can_change_color</a></li> +<li><a href="#h3-init_pair">init_pair</a></li> +<li><a href="#h3-init_extended_pair">init_extended_pair</a></li> +<li><a href="#h3-init_color">init_color</a></li> +<li><a href="#h3-init_extended_color">init_extended_color</a></li> +<li><a href="#h3-color_content">color_content</a></li> +<li><a href="#h3-extended_color_content">extended_color_content</a></li> +<li><a href="#h3-pair_content">pair_content</a></li> +<li><a href="#h3-extended_pair_content">extended_pair_content</a></li> +<li><a href="#h3-reset_color_pairs">reset_color_pairs</a></li> +<li><a href="#h3-PAIR_NUMBER">PAIR_NUMBER</a></li> +<li><a href="#h3-COLOR_PAIR">COLOR_PAIR</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_delch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_delch.3x.html new file mode 100644 index 0000000..31c163a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_delch.3x.html @@ -0,0 +1,111 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2006,2010 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. * + **************************************************************************** + * @Id: curs_delch.3x,v 1.15 2020/10/24 09:36:43 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_delch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_delch 3x</H1> +<PRE> +<STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>delch</STRONG>, <STRONG>wdelch</STRONG>, <STRONG>mvdelch</STRONG>, <STRONG>mvwdelch</STRONG> - delete character under the cursor in + a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>delch(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wdelch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvdelch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwdelch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines delete the character under the cursor; all characters to + the right of the cursor on the same line are moved to the left one + position and the last character on the line is filled with a blank. + The cursor position does not change (after moving to <EM>y</EM>, <EM>x</EM>, if + specified). (This does not imply use of the hardware delete character + feature.) + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 + specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful + completion. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>delch</STRONG>, <STRONG>mvdelch</STRONG>, and <STRONG>mvwdelch</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. The + standard specifies that they return <STRONG>ERR</STRONG> on failure, but specifies no + error conditions. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_deleteln.3x.html b/deps/ncurses-6.3/doc/html/man/curs_deleteln.3x.html new file mode 100644 index 0000000..e2cdde0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_deleteln.3x.html @@ -0,0 +1,126 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2007,2010 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. * + **************************************************************************** + * @Id: curs_deleteln.3x,v 1.17 2020/10/18 00:28:51 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_deleteln 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_deleteln 3x</H1> +<PRE> +<STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>deleteln</STRONG>, <STRONG>wdeleteln</STRONG>, <STRONG>insdelln</STRONG>, <STRONG>winsdelln</STRONG>, <STRONG>insertln</STRONG>, <STRONG>winsertln</STRONG> - delete + and insert lines in a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>deleteln(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wdeleteln(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>insdelln(int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winsdelln(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>insertln(void);</STRONG> + <STRONG>int</STRONG> <STRONG>winsertln(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>deleteln</STRONG> and <STRONG>wdeleteln</STRONG> 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. The cursor position does not + change. + + The <STRONG>insdelln</STRONG> and <STRONG>winsdelln</STRONG> routines, for positive <EM>n</EM>, insert <EM>n</EM> lines + into the specified window above the current line. The <EM>n</EM> bottom lines + are lost. For negative <EM>n</EM>, delete <EM>n</EM> lines (starting with the one under + the cursor), and move the remaining lines up. The bottom <EM>n</EM> lines are + cleared. The current cursor position remains the same. + + The <STRONG>insertln</STRONG> and <STRONG>winsertln</STRONG> routines insert a blank line above the + current line and the bottom line is lost. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 + specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful + completion. + + X/Open defines no error conditions. In this implementation, if the + window parameter is null, an error is returned. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. The + standard specifies that they return <STRONG>ERR</STRONG> on failure, but specifies no + error conditions. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all but <STRONG>winsdelln</STRONG> may be macros. + + 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 <STRONG>idlok(...,</STRONG> <STRONG>TRUE)</STRONG> has been set on the current + window. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_extend.3x.html b/deps/ncurses-6.3/doc/html/man/curs_extend.3x.html new file mode 100644 index 0000000..1a84cf6 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_extend.3x.html @@ -0,0 +1,127 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1999-2010,2016 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: Thomas E. Dickey 1999-on + * @Id: curs_extend.3x,v 1.26 2021/03/13 13:43:05 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_extend 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_extend 3x</H1> +<PRE> +<STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>curses_version</STRONG>, <STRONG>use_extended_names</STRONG> - miscellaneous curses extensions + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>curses_version(void);</STRONG> + <STRONG>int</STRONG> <STRONG>use_extended_names(bool</STRONG> <EM>enable</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions are extensions to the curses library which do not fit + easily into other categories. + + +</PRE><H3><a name="h3-curses_version">curses_version</a></H3><PRE> + Use <STRONG>curses_version</STRONG> to get the version number, including patch level of + the library, prefixed by "ncurses", e.g., + + <STRONG>ncurses</STRONG> <STRONG>5.0.19991023</STRONG> + + +</PRE><H3><a name="h3-use_extended_names">use_extended_names</a></H3><PRE> + The <STRONG>use_extended_names</STRONG> 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 <STRONG>-x</STRONG> option of <STRONG>tic</STRONG> to compile + extended terminal definitions. However you can disable this feature to + ensure compatibility with other implementations of curses. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>curses_version</STRONG> returns a pointer to static memory; you should not free + this in your application. + + <STRONG>use_extended_names</STRONG> returns the previous state, allowing you to save + this and restore it. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>, <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, + <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>, <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, + <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey. + + + + <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-curses_version">curses_version</a></li> +<li><a href="#h3-use_extended_names">use_extended_names</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_get_wch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_get_wch.3x.html new file mode 100644 index 0000000..232e8a2 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_get_wch.3x.html @@ -0,0 +1,172 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2002-2016,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. * + **************************************************************************** + * @Id: curs_get_wch.3x,v 1.15 2021/05/22 22:33:19 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_get_wch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_get_wch 3x</H1> +<PRE> +<STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, <STRONG>mvwget_wch</STRONG>, <STRONG>unget_wch</STRONG> - get (or push + back) a wide character from curses terminal keyboard + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>get_wch(wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wget_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvget_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwget_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>unget_wch(const</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-wget_wch">wget_wch</a></H3><PRE> + The <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions read a char- + acter from the terminal associated with the current or specified win- + dow. In no-delay mode, if no input is waiting, the value <STRONG>ERR</STRONG> is re- + turned. In delay mode, the program waits until the system passes text + through to the program. Depending on the setting of <STRONG>cbreak</STRONG>, this is + after one character (cbreak mode), or after the first newline (nocbreak + mode). In half-delay mode, the program waits until the user types a + character or the specified timeout interval has elapsed. + + Unless <STRONG>noecho</STRONG> has been set, these routines echo the character into the + designated window. + + If the window is not a pad and has been moved or modified since the + last call to <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be called before another character + is read. + + If <STRONG>keypad</STRONG> is enabled, these functions respond to the pressing of a + function key by setting the object pointed to by <EM>wch</EM> to the keycode as- + signed to the function key, and returning <STRONG>KEY_CODE_YES</STRONG>. If a character + (such as escape) that could be the beginning of a function key is re- + ceived, curses sets a timer. If the remainder of the sequence does ar- + rive within the designated time, curses passes through the character; + otherwise, curses returns the function key value. For this reason, + many terminals experience a delay between the time a user presses the + escape key and the time the escape is returned to the program. + + The keycodes returned by these functions are the same as those returned + by <STRONG>wgetch</STRONG>: + + <STRONG>o</STRONG> The predefined function keys are listed in <STRONG>&lt;curses.h&gt;</STRONG> as macros + with values outside the range of 8-bit characters. Their names be- + gin with <STRONG>KEY_</STRONG>. + + <STRONG>o</STRONG> Other (user-defined) function keys which may be defined using <STRONG>de-</STRONG> + <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG> have no names, but also are expected to have values + outside the range of 8-bit characters. + + +</PRE><H3><a name="h3-unget_wch">unget_wch</a></H3><PRE> + The <STRONG>unget_wch</STRONG> function pushes the wide character <EM>wch</EM> back onto the head + of the input queue, so the wide character is returned by the next call + to <STRONG>get_wch</STRONG>. The pushback of one character is guaranteed. If the pro- + gram calls <STRONG>unget_wch</STRONG> too many times without an intervening call to + <STRONG>get_wch</STRONG>, the operation may fail. + + Unlike <STRONG>ungetch</STRONG> and <STRONG>wgetch</STRONG>, <STRONG>unget_wch</STRONG> cannot distinguish special charac- + ters returned by <STRONG>wget_wch</STRONG> from ordinary characters. An application can + push special keys which it may read via <STRONG>wget_wch</STRONG> by checking for the + <STRONG>KEY_CODE_YES</STRONG> result, and using <STRONG>ungetch</STRONG> for those special keys. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;curses.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;stdio.h&gt;</STRONG>. + + Applications should not define the escape key by itself as a single- + character function. + + When using <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, or <STRONG>mvwget_wch</STRONG>, applications + should not use <STRONG>nocbreak</STRONG> mode and <STRONG>echo</STRONG> mode at the same time. Depending + on the state of the tty driver when each character is typed, the pro- + gram may produce undesirable results. + + All functions except <STRONG>wget_wch</STRONG> and <STRONG>unget_wch</STRONG> may be macros. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + When <STRONG>get_wch</STRONG>, <STRONG>wget_wch</STRONG>, <STRONG>mvget_wch</STRONG>, and <STRONG>mvwget_wch</STRONG> functions successful- + ly report the pressing of a function key, they return <STRONG>KEY_CODE_YES</STRONG>. + When they successfully report a wide character, they return <STRONG>OK</STRONG>. Other- + wise, they return <STRONG>ERR</STRONG>. + + Upon successful completion, <STRONG>unget_wch</STRONG> returns <STRONG>OK</STRONG>. Otherwise, the func- + tion returns <STRONG>ERR</STRONG>. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, + <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-wget_wch">wget_wch</a></li> +<li><a href="#h3-unget_wch">unget_wch</a></li> +</ul> +</li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_get_wstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_get_wstr.3x.html new file mode 100644 index 0000000..8b781cc --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_get_wstr.3x.html @@ -0,0 +1,185 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2002-2012,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. * + **************************************************************************** + * @Id: curs_get_wstr.3x,v 1.21 2020/10/17 23:17:24 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_get_wstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_get_wstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>get_wstr</STRONG>, <STRONG>getn_wstr</STRONG>, <STRONG>wget_wstr</STRONG>, <STRONG>wgetn_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, + <STRONG>mvwget_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG> - get an array of wide characters from a + curses terminal keyboard + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>get_wstr(wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>getn_wstr(wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wget_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wgetn_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvget_wstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvgetn_wstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwget_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwgetn_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wint_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The effect of <STRONG>get_wstr</STRONG> is as though a series of calls to <STRONG><A HREF="curs_get_wch.3x.html">get_wch(3x)</A></STRONG> + were made, until a newline, other end-of-line, or end-of-file condition + is processed. An end-of-file condition is represented by <STRONG>WEOF</STRONG>, as de- + fined in <STRONG>&lt;wchar.h&gt;</STRONG>. The newline and end-of-line conditions are repre- + sented by the <STRONG>\n</STRONG> <STRONG>wchar_t</STRONG> value. In all instances, the end of the + string is terminated by a null <STRONG>wchar_t</STRONG>. The routine places resulting + values in the area pointed to by <EM>wstr</EM>. + + The user's erase and kill characters are interpreted. If keypad mode + is on for the window, <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG> are both considered + equivalent to the user's kill character. + + Characters input are echoed only if <STRONG>echo</STRONG> is currently on. In that + case, backspace is echoed as deletion of the previous character (typi- + cally a left motion). + + The effect of <STRONG>wget_wstr</STRONG> is as though a series of calls to <STRONG>wget_wch</STRONG> were + made. + + The effect of <STRONG>mvget_wstr</STRONG> is as though a call to <STRONG>move</STRONG> and then a series + of calls to <STRONG>get_wch</STRONG> were made. + + The effect of <STRONG>mvwget_wstr</STRONG> is as though a call to <STRONG>wmove</STRONG> and then a se- + ries of calls to <STRONG>wget_wch</STRONG> were made. + + The <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, and <STRONG>wgetn_wstr</STRONG> functions are + identical to the <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, and <STRONG>wget_wstr</STRONG> func- + tions, respectively, except that the <STRONG>*n_*</STRONG> versions read at most <EM>n</EM> char- + acters, letting the application prevent overflow of the input buffer. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Using <STRONG>get_wstr</STRONG>, <STRONG>mvget_wstr</STRONG>, <STRONG>mvwget_wstr</STRONG>, or <STRONG>wget_wstr</STRONG> to read a line + that overflows the array pointed to by <STRONG>wstr</STRONG> causes undefined results. + The use of <STRONG>getn_wstr</STRONG>, <STRONG>mvgetn_wstr</STRONG>, <STRONG>mvwgetn_wstr</STRONG>, or <STRONG>wgetn_wstr</STRONG>, respec- + tively, is recommended. + + These functions cannot return <STRONG>KEY_</STRONG> values because there is no way to + distinguish a <STRONG>KEY_</STRONG> value from a valid <STRONG>wchar_t</STRONG> value. + + All of these routines except <STRONG>wgetn_wstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All of these functions return <STRONG>OK</STRONG> upon successful completion. Other- + wise, they return <STRONG>ERR</STRONG>. + + Functions using a window parameter return an error if it is null. + + <STRONG>wgetn_wstr</STRONG> + returns an error if the associated call to <STRONG>wget_wch</STRONG> failed. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in The Single Unix Specification, Version + 2. No error conditions are defined. This implementation returns <STRONG>ERR</STRONG> + if the window pointer is null, or if the lower-level <STRONG>wget_wch</STRONG> call re- + turns an <STRONG>ERR</STRONG>. In the latter case, an <STRONG>ERR</STRONG> return without other data is + treated as an end-of-file condition, and the returned array contains a + <STRONG>WEOF</STRONG> followed by a null <STRONG>wchar_t</STRONG>. + + X/Open curses documented these functions to pass an array of <STRONG>wchar_t</STRONG> in + 1997, but that was an error because of this part of the description: + + The effect of <EM>get</EM><STRONG>_</STRONG><EM>wstr()</EM> is as though a series of calls to + <EM>get</EM><STRONG>_</STRONG><EM>wch()</EM> were made, until a newline character, end-of-line + character, or end-of-file character is processed. + + The latter function <EM>get</EM><STRONG>_</STRONG><EM>wch()</EM> can return a negative value, while + <STRONG>wchar_t</STRONG> is a unsigned type. All of the vendors implement this using + <STRONG>wint_t</STRONG>, following the standard. + + X/Open Curses, Issue 7 (2009) is unclear regarding whether the termi- + nating <EM>null</EM> <STRONG>wchar_t</STRONG> value is counted in the length parameter <EM>n</EM>. X/Open + Curses, Issue 7 revised the corresponding description of <STRONG>wgetnstr</STRONG> to + address this issue. The unrevised description of <STRONG>wget_nwstr</STRONG> can be in- + terpreted either way. This implementation counts the terminator in the + length. + + X/Open Curses does not specify what happens if the length <EM>n</EM> is nega- + tive. + + <STRONG>o</STRONG> For analogy with <STRONG>wgetnstr</STRONG>, ncurses 6.2 uses a limit (based on + <STRONG>LINE_MAX</STRONG>). + + <STRONG>o</STRONG> Some other implementations (such as Solaris xcurses) do the same, + while others (PDCurses) do not allow this. + + <STRONG>o</STRONG> NetBSD 7 curses imitates ncurses 6.1 in this regard, treating a <STRONG>-1</STRONG> + as an indefinite number of characters. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_getcchar.3x.html b/deps/ncurses-6.3/doc/html/man/curs_getcchar.3x.html new file mode 100644 index 0000000..b749f02 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_getcchar.3x.html @@ -0,0 +1,219 @@ +<!-- + **************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2001-2015,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. * + **************************************************************************** + * @Id: curs_getcchar.3x,v 1.25 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_getcchar 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_getcchar 3x</H1> +<PRE> +<STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>getcchar</STRONG>, <STRONG>setcchar</STRONG> - Get a wide character string and rendition from a + <STRONG>cchar_t</STRONG> or set a <STRONG>cchar_t</STRONG> from a wide-character string + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>getcchar(</STRONG> + <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>,</STRONG> + <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> + <STRONG>attr_t</STRONG> <STRONG>*</STRONG><EM>attrs</EM><STRONG>,</STRONG> + <STRONG>short</STRONG> <STRONG>*</STRONG><EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>,</STRONG> + <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>setcchar(</STRONG> + <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>,</STRONG> + <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>,</STRONG> + <STRONG>const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> + <STRONG>short</STRONG> <EM>color</EM><STRONG>_</STRONG><EM>pair</EM><STRONG>,</STRONG> + <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM> <STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-getcchar">getcchar</a></H3><PRE> + The <STRONG>getcchar</STRONG> function gets a wide-character string and rendition from a + <STRONG>cchar_t</STRONG> argument. When <EM>wch</EM> is not a null pointer, the <STRONG>getcchar</STRONG> + function does the following: + + <STRONG>o</STRONG> Extracts information from a <STRONG>cchar_t</STRONG> value <EM>wcval</EM> + + <STRONG>o</STRONG> Stores the character attributes in the location pointed to by <EM>attrs</EM> + + <STRONG>o</STRONG> Stores the color-pair in the location pointed to by <EM>color</EM><STRONG>_</STRONG><EM>pair</EM> + + <STRONG>o</STRONG> Stores the wide-character string, characters referenced by <EM>wcval</EM>, + into the array pointed to by <EM>wch</EM>. + + When <EM>wch</EM> is a null pointer, the <STRONG>getcchar</STRONG> function does the following: + + <STRONG>o</STRONG> Obtains the number of wide characters pointed to by <EM>wcval</EM> + + <STRONG>o</STRONG> Does not change the data referenced by <EM>attrs</EM> or <EM>color</EM><STRONG>_</STRONG><EM>pair</EM> + + +</PRE><H3><a name="h3-setcchar">setcchar</a></H3><PRE> + The <STRONG>setcchar</STRONG> function initializes the location pointed to by <EM>wcval</EM> by + using: + + <STRONG>o</STRONG> The character attributes in <EM>attrs</EM> + + <STRONG>o</STRONG> The color pair in <EM>color</EM><STRONG>_</STRONG><EM>pair</EM> + + <STRONG>o</STRONG> The wide-character string pointed to by <EM>wch</EM>. The string must be + L'\0' terminated, contain at most one spacing character, which must + be the first. + + Up to <STRONG>CCHARW_MAX</STRONG>-1 nonspacing characters may follow. Additional + nonspacing characters are ignored. + + The string may contain a single control character instead. In that + case, no nonspacing characters are allowed. + + +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + X/Open Curses documents the <EM>opts</EM> 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: + + <STRONG>o</STRONG> For functions which modify the color, e.g., <STRONG>setcchar</STRONG>, if <EM>opts</EM> is + set it is treated as a pointer to <STRONG>int</STRONG>, and used to set the color + pair instead of the <STRONG>short</STRONG> pair parameter. + + <STRONG>o</STRONG> For functions which retrieve the color, e.g., <STRONG>getcchar</STRONG>, if <EM>opts</EM> is + set it is treated as a pointer to <STRONG>int</STRONG>, and used to retrieve the + color pair as an <STRONG>int</STRONG> value, in addition retrieving it via the + standard pointer to <STRONG>short</STRONG> parameter. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The <EM>wcval</EM> argument may be a value generated by a call to <STRONG>setcchar</STRONG> or by + a function that has a <STRONG>cchar_t</STRONG> output argument. If <EM>wcval</EM> is constructed + by any other means, the effect is unspecified. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + When <EM>wch</EM> is a null pointer, <STRONG>getcchar</STRONG> returns the number of wide + characters referenced by <EM>wcval</EM>, including one for a trailing null. + + When <EM>wch</EM> is not a null pointer, <STRONG>getcchar</STRONG> returns <STRONG>OK</STRONG> upon successful + completion, and <STRONG>ERR</STRONG> otherwise. + + Upon successful completion, <STRONG>setcchar</STRONG> returns <STRONG>OK</STRONG>. Otherwise, it returns + <STRONG>ERR</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The <STRONG>CCHARW_MAX</STRONG> symbol is specific to ncurses. X/Open Curses does not + provide details for the layout of the <STRONG>cchar_t</STRONG> structure. It tells what + data are stored in it: + + <STRONG>o</STRONG> a spacing character (<STRONG>wchar_t</STRONG>, i.e., 32-bits). + + <STRONG>o</STRONG> non-spacing characters (again, <STRONG>wchar_t</STRONG>'s). + + <STRONG>o</STRONG> attributes (at least 16 bits, inferred from the various ACS- and + WACS-flags). + + <STRONG>o</STRONG> color pair (at least 16 bits, inferred from the <STRONG>unsigned</STRONG> <STRONG>short</STRONG> + type). + + The non-spacing characters are optional, in the sense that zero or more + may be stored in a <STRONG>cchar_t</STRONG>. XOpen/Curses specifies a limit: + + Implementations may limit the number of non-spacing characters that + can be associated with a spacing character, provided any limit is + at least 5. + + The Unix implementations at the time follow that limit: + + <STRONG>o</STRONG> AIX 4 and OSF1 4 use the same declaration with an array of 5 non- + spacing characters <EM>z</EM> and a single spacing character <EM>c</EM>. + + <STRONG>o</STRONG> HP-UX 10 uses an opaque structure with 28 bytes, which is large + enough for the 6 <STRONG>wchar_t</STRONG> values. + + <STRONG>o</STRONG> Solaris xpg4 curses uses a single array of 6 <STRONG>wchar_t</STRONG> values. + + This implementation's <STRONG>cchar_t</STRONG> was defined in 1995 using <STRONG>5</STRONG> for the total + of spacing and non-spacing characters (<STRONG>CCHARW_MAX</STRONG>). 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. + + 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. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + Functions: <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>wcwidth(3)</STRONG>. + + + + <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-getcchar">getcchar</a></li> +<li><a href="#h3-setcchar">setcchar</a></li> +</ul> +</li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_getch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_getch.3x.html new file mode 100644 index 0000000..f912849 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_getch.3x.html @@ -0,0 +1,408 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_getch.3x,v 1.57 2020/12/19 21:38:20 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_getch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_getch 3x</H1> +<PRE> +<STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, <STRONG>mvwgetch</STRONG>, <STRONG>ungetch</STRONG>, <STRONG>has_key</STRONG> - get (or push back) + characters from <STRONG>curses</STRONG> terminal keyboard + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>getch(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win);</EM> + + <STRONG>int</STRONG> <STRONG>mvgetch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwgetch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>ungetch(int</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + /* extension */ + <STRONG>int</STRONG> <STRONG>has_key(int</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-Reading-characters">Reading characters</a></H3><PRE> + The <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG> and <STRONG>mvwgetch</STRONG>, routines read a character from + the window. In no-delay mode, if no input is waiting, the value <STRONG>ERR</STRONG> is + returned. In delay mode, the program waits until the system passes + text through to the program. Depending on the setting of <STRONG>cbreak</STRONG>, this + is after one character (cbreak mode), or after the first newline + (nocbreak mode). In half-delay mode, the program waits until a charac- + ter is typed or the specified timeout has been reached. + + If <STRONG>echo</STRONG> is enabled, and the window is not a pad, then the character + will also be echoed into the designated window according to the follow- + ing rules: + + <STRONG>o</STRONG> If the character is the current erase character, left arrow, or + backspace, the cursor is moved one space to the left and that + screen position is erased as if <STRONG>delch</STRONG> had been called. + + <STRONG>o</STRONG> If the character value is any other <STRONG>KEY_</STRONG> define, the user is alert- + ed with a <STRONG>beep</STRONG> call. + + <STRONG>o</STRONG> If the character is a carriage-return, and if <STRONG>nl</STRONG> is enabled, it is + translated to a line-feed after echoing. + + <STRONG>o</STRONG> Otherwise the character is simply output to the screen. + + If the window is not a pad, and it has been moved or modified since the + last call to <STRONG>wrefresh</STRONG>, <STRONG>wrefresh</STRONG> will be called before another character + is read. + + +</PRE><H3><a name="h3-Keypad-mode">Keypad mode</a></H3><PRE> + If <STRONG>keypad</STRONG> is <STRONG>TRUE</STRONG>, and a function key is pressed, the token for that + function key is returned instead of the raw characters: + + <STRONG>o</STRONG> The predefined function keys are listed in <STRONG>&lt;curses.h&gt;</STRONG> as macros + with values outside the range of 8-bit characters. Their names be- + gin with <STRONG>KEY_</STRONG>. + + <STRONG>o</STRONG> Other (user-defined) function keys which may be defined using <STRONG>de-</STRONG> + <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG> have no names, but also are expected to have values + outside the range of 8-bit characters. + + Thus, a variable intended to hold the return value of a function key + must be of short size or larger. + + When a character that could be the beginning of a function key is re- + ceived (which, on modern terminals, means an escape character), <STRONG>curses</STRONG> + sets a timer. If the remainder of the sequence does not come in within + the designated time, the character is passed through; otherwise, the + function key value is returned. For this reason, many terminals expe- + rience a delay between the time a user presses the escape key and the + escape is returned to the program. + + In <STRONG>ncurses</STRONG>, the timer normally expires after the value in <STRONG>ESCDELAY</STRONG> (see + <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>). If <STRONG>notimeout</STRONG> is <STRONG>TRUE</STRONG>, the timer does not expire; + it is an infinite (or very large) value. Because function keys usually + begin with an escape character, the terminal may appear to hang in no- + timeout mode after pressing the escape key until another key is + pressed. + + +</PRE><H3><a name="h3-Ungetting-characters">Ungetting characters</a></H3><PRE> + The <STRONG>ungetch</STRONG> routine places <EM>ch</EM> back onto the input queue to be returned + by the next call to <STRONG>wgetch</STRONG>. There is just one input queue for all win- + dows. + + +</PRE><H3><a name="h3-Predefined-key-codes">Predefined key-codes</a></H3><PRE> + The following special keys are defined in <STRONG>&lt;curses.h&gt;</STRONG>. + + <STRONG>o</STRONG> Except for the special case <STRONG>KEY_RESIZE</STRONG>, it is necessary to enable + <STRONG>keypad</STRONG> for <STRONG>getch</STRONG> to return these codes. + + <STRONG>o</STRONG> Not all of these are necessarily supported on any particular termi- + nal. + + <STRONG>o</STRONG> The naming convention may seem obscure, with some apparent mis- + spellings (such as "RSUME" for "resume"). The names correspond to + the long terminfo capability names for the keys, and were defined + long ago, in the 1980s. + + <EM>Name</EM> <EM>Key</EM> <EM>name</EM> + ------------------------------------------------- + KEY_BREAK Break key + KEY_DOWN The four arrow keys ... + KEY_UP + KEY_LEFT + KEY_RIGHT + KEY_HOME Home key (upward+left arrow) + KEY_BACKSPACE Backspace + KEY_F0 Function keys; space for 64 keys + is reserved. + KEY_F(<EM>n</EM>) For 0 &lt;= <EM>n</EM> &lt;= 63 + KEY_DL Delete line + KEY_IL Insert line + KEY_DC Delete character + KEY_IC Insert char or enter insert mode + KEY_EIC Exit insert char mode + KEY_CLEAR Clear screen + KEY_EOS Clear to end of screen + KEY_EOL Clear to end of line + KEY_SF Scroll 1 line forward + KEY_SR Scroll 1 line backward (reverse) + KEY_NPAGE Next page + KEY_PPAGE Previous page + KEY_STAB Set tab + KEY_CTAB Clear tab + KEY_CATAB Clear all tabs + KEY_ENTER Enter or send + KEY_SRESET Soft (partial) reset + KEY_RESET Reset or hard reset + + KEY_PRINT Print or copy + KEY_LL Home down or bottom (lower left) + KEY_A1 Upper left of keypad + KEY_A3 Upper right of keypad + KEY_B2 Center of keypad + KEY_C1 Lower left of keypad + KEY_C3 Lower right of keypad + KEY_BTAB Back tab key + KEY_BEG Beg(inning) key + KEY_CANCEL Cancel key + KEY_CLOSE Close key + KEY_COMMAND Cmd (command) key + KEY_COPY Copy key + KEY_CREATE Create key + KEY_END End key + KEY_EXIT Exit key + KEY_FIND Find key + KEY_HELP Help key + KEY_MARK Mark key + KEY_MESSAGE Message key + KEY_MOUSE Mouse event read + KEY_MOVE Move key + KEY_NEXT Next object key + KEY_OPEN Open key + KEY_OPTIONS Options key + KEY_PREVIOUS Previous object key + KEY_REDO Redo key + KEY_REFERENCE Ref(erence) key + KEY_REFRESH Refresh key + KEY_REPLACE Replace key + KEY_RESIZE Screen resized + KEY_RESTART Restart key + KEY_RESUME Resume key + KEY_SAVE Save key + KEY_SBEG Shifted beginning key + KEY_SCANCEL Shifted cancel key + KEY_SCOMMAND Shifted command key + KEY_SCOPY Shifted copy key + KEY_SCREATE Shifted create key + KEY_SDC Shifted delete char key + KEY_SDL Shifted delete line key + KEY_SELECT Select key + KEY_SEND Shifted end key + KEY_SEOL Shifted clear line key + KEY_SEXIT Shifted exit key + KEY_SFIND Shifted find key + KEY_SHELP Shifted help key + KEY_SHOME Shifted home key + KEY_SIC Shifted input key + KEY_SLEFT Shifted left arrow key + KEY_SMESSAGE Shifted message key + KEY_SMOVE Shifted move key + KEY_SNEXT Shifted next key + KEY_SOPTIONS Shifted options key + KEY_SPREVIOUS Shifted prev key + KEY_SPRINT Shifted print key + KEY_SREDO Shifted redo key + KEY_SREPLACE Shifted replace key + KEY_SRIGHT Shifted right arrow + KEY_SRSUME Shifted resume key + KEY_SSAVE Shifted save key + KEY_SSUSPEND Shifted suspend key + KEY_SUNDO Shifted undo key + KEY_SUSPEND Suspend key + KEY_UNDO Undo key + + Keypad is arranged like this: + + +-----+------+-------+ + | <STRONG>A1</STRONG> | <STRONG>up</STRONG> | <STRONG>A3</STRONG> | + +-----+------+-------+ + |<STRONG>left</STRONG> | <STRONG>B2</STRONG> | <STRONG>right</STRONG> | + +-----+------+-------+ + | <STRONG>C1</STRONG> | <STRONG>down</STRONG> | <STRONG>C3</STRONG> | + +-----+------+-------+ + A few of these predefined values do <EM>not</EM> correspond to a real key: + + <STRONG>o</STRONG> <STRONG>KEY_RESIZE</STRONG> is returned when the <STRONG>SIGWINCH</STRONG> signal has been detected + (see <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG> and <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>). This code is returned + whether or not <STRONG>keypad</STRONG> has been enabled. + + <STRONG>o</STRONG> <STRONG>KEY_MOUSE</STRONG> is returned for mouse-events (see <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>). This + code relies upon whether or not <STRONG><A HREF="curs_inopts.3x.html">keypad(3x)</A></STRONG> has been enabled, be- + cause (e.g., with <EM>xterm</EM> mouse prototocol) ncurses must read escape + sequences, just like a function key. + + +</PRE><H3><a name="h3-Testing-key-codes">Testing key-codes</a></H3><PRE> + The <STRONG>has_key</STRONG> routine takes a key-code value from the above list, and re- + turns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> according to whether the current terminal type rec- + ognizes a key with that value. + + The library also supports these extensions: + + <STRONG>define_key</STRONG> + defines a key-code for a given string (see <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>). + + <STRONG>key_defined</STRONG> + checks if there is a key-code defined for a given string (see + <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and an integer value + other than <STRONG>ERR</STRONG> (<STRONG>OK</STRONG> in the case of <STRONG>ungetch</STRONG>) upon successful completion. + + <STRONG>ungetch</STRONG> + returns <STRONG>ERR</STRONG> if there is no more room in the FIFO. + + <STRONG>wgetch</STRONG> + returns <STRONG>ERR</STRONG> if the window pointer is null, or if its timeout + expires without having any data, or if the execution was inter- + rupted by a signal (<STRONG>errno</STRONG> will be set to <STRONG>EINTR</STRONG>). + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Use of the escape key by a programmer for a single character function + is discouraged, as it will cause a delay of up to one second while the + keypad code looks for a following function-key sequence. + + Some keys may be the same as commonly used control keys, e.g., <STRONG>KEY_EN-</STRONG> + <STRONG>TER</STRONG> versus control/M, <STRONG>KEY_BACKSPACE</STRONG> versus control/H. Some curses im- + plementations may differ according to whether they treat these control + keys specially (and ignore the terminfo), or use the terminfo defini- + tions. <STRONG>Ncurses</STRONG> uses the terminfo definition. If it says that <STRONG>KEY_EN-</STRONG> + <STRONG>TER</STRONG> is control/M, <STRONG>getch</STRONG> will return <STRONG>KEY_ENTER</STRONG> when you press control/M. + + Generally, <STRONG>KEY_ENTER</STRONG> denotes the character(s) sent by the <EM>Enter</EM> key on + the numeric keypad: + + <STRONG>o</STRONG> the terminal description lists the most useful keys, + + <STRONG>o</STRONG> the <EM>Enter</EM> key on the regular keyboard is already handled by the + standard ASCII characters for carriage-return and line-feed, + + <STRONG>o</STRONG> depending on whether <STRONG>nl</STRONG> or <STRONG>nonl</STRONG> was called, pressing "Enter" on the + regular keyboard may return either a carriage-return or line-feed, + and finally + + <STRONG>o</STRONG> "Enter or send" is the standard description for this key. + + When using <STRONG>getch</STRONG>, <STRONG>wgetch</STRONG>, <STRONG>mvgetch</STRONG>, or <STRONG>mvwgetch</STRONG>, nocbreak mode + (<STRONG>nocbreak</STRONG>) and echo mode (<STRONG>echo</STRONG>) should not be used at the same time. + Depending on the state of the tty driver when each character is typed, + the program may produce undesirable results. + + Note that <STRONG>getch</STRONG>, <STRONG>mvgetch</STRONG>, and <STRONG>mvwgetch</STRONG> may be macros. + + Historically, the set of keypad macros was largely defined by the ex- + tremely function-key-rich keyboard of the AT&amp;T 7300, aka 3B1, aka Sa- + fari 4. Modern personal computers usually have only a small subset of + these. IBM PC-style consoles typically support little more than + <STRONG>KEY_UP</STRONG>, <STRONG>KEY_DOWN</STRONG>, <STRONG>KEY_LEFT</STRONG>, <STRONG>KEY_RIGHT</STRONG>, <STRONG>KEY_HOME</STRONG>, <STRONG>KEY_END</STRONG>, <STRONG>KEY_NPAGE</STRONG>, + <STRONG>KEY_PPAGE</STRONG>, and function keys 1 through 12. The Ins key is usually + mapped to <STRONG>KEY_IC</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The *get* functions are described in the XSI Curses standard, Issue 4. + They read single-byte characters only. The standard specifies that + they return <STRONG>ERR</STRONG> on failure, but specifies no error conditions. + + The echo behavior of these functions on input of <STRONG>KEY_</STRONG> or backspace + characters was not specified in the SVr4 documentation. This descrip- + tion is adopted from the XSI Curses standard. + + The behavior of <STRONG>getch</STRONG> and friends in the presence of handled signals is + unspecified in the SVr4 and XSI Curses documentation. Under historical + curses implementations, it varied depending on whether the operating + system's implementation of handled signal receipt interrupts a <STRONG>read(2)</STRONG> + call in progress or not, and also (in some implementations) depending + on whether an input timeout or non-blocking mode has been set. + + <STRONG>KEY_MOUSE</STRONG> is mentioned in XSI Curses, along with a few related terminfo + capabilities, but no higher-level functions use the feature. The im- + plementation in ncurses is an extension. + + <STRONG>KEY_RESIZE</STRONG> is an extension first implemented for ncurses. NetBSD curs- + es later added this extension. + + Programmers concerned about portability should be prepared for either + of two cases: (a) signal receipt does not interrupt <STRONG>getch</STRONG>; (b) signal + receipt interrupts <STRONG>getch</STRONG> and causes it to return <STRONG>ERR</STRONG> with <STRONG>errno</STRONG> set to + <STRONG>EINTR</STRONG>. + + The <STRONG>has_key</STRONG> function is unique to <STRONG>ncurses</STRONG>. We recommend that any code + using it be conditionalized on the <STRONG>NCURSES_VERSION</STRONG> feature macro. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>, <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG>, <STRONG>curs_out-</STRONG> + <STRONG><A HREF="curs_outopts.3x.html">opts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>. + + Comparable functions in the wide-character (ncursesw) library are de- + scribed in <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Reading-characters">Reading characters</a></li> +<li><a href="#h3-Keypad-mode">Keypad mode</a></li> +<li><a href="#h3-Ungetting-characters">Ungetting characters</a></li> +<li><a href="#h3-Predefined-key-codes">Predefined key-codes</a></li> +<li><a href="#h3-Testing-key-codes">Testing key-codes</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_getstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_getstr.3x.html new file mode 100644 index 0000000..3460ac7 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_getstr.3x.html @@ -0,0 +1,236 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_getstr.3x,v 1.33 2021/05/22 21:36:35 tom Exp @ + * X/Open says also until EOf + * X/Open says then an EOS is added to the result + * X/Open doesn't mention n&lt;0 +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_getstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_getstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>getstr</STRONG>, <STRONG>getnstr</STRONG>, <STRONG>wgetstr</STRONG>, <STRONG>wgetnstr</STRONG>, <STRONG>mvgetstr</STRONG>, <STRONG>mvgetnstr</STRONG>, <STRONG>mvwgetstr</STRONG>, + <STRONG>mvwgetnstr</STRONG> - accept character strings from <STRONG>curses</STRONG> terminal keyboard + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>getstr(char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>getnstr(char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wgetstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wgetnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvgetstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwgetstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvgetnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwgetnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>getstr</STRONG> is equivalent to a series of calls to <STRONG>getch</STRONG>, until + a newline or carriage return is received (the terminating character is + not included in the returned string). The resulting value is placed in + the area pointed to by the character pointer <EM>str</EM>, followed by a NUL. + + The <STRONG>getnstr</STRONG> function reads from the <EM>stdscr</EM> default window. The other + functions, such as <STRONG>wgetnstr</STRONG>, read from the window given as a parameter. + + <STRONG>getnstr</STRONG> reads at most <EM>n</EM> characters, thus preventing a possible overflow + of the input buffer. Any attempt to enter more characters (other than + the terminating newline or carriage return) causes a beep. Function + keys also cause a beep and are ignored. + + The user's <EM>erase</EM> and <EM>kill</EM> characters are interpreted: + + <STRONG>o</STRONG> The <EM>erase</EM> character (e.g., <STRONG>^H</STRONG>) erases the character at the end of + the buffer, moving the cursor to the left. + + If <EM>keypad</EM> mode is on for the window, <STRONG>KEY_LEFT</STRONG> and <STRONG>KEY_BACKSPACE</STRONG> are + both considered equivalent to the user's erase character. + + <STRONG>o</STRONG> The <EM>kill</EM> character (e.g., <STRONG>^U</STRONG>) erases the entire buffer, leaving the + cursor at the beginning of the buffer. + + Characters input are echoed only if <STRONG>echo</STRONG> is currently on. In that + case, backspace is echoed as deletion of the previous character (typi- + cally a left motion). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and an <STRONG>OK</STRONG> (SVr4 speci- + fies only "an integer value other than <STRONG>ERR</STRONG>") upon successful comple- + tion. + + X/Open defines no error conditions. + + In this implementation, these functions return an error if the window + pointer is null, or if its timeout expires without having any data. + + This implementation provides an extension as well. If a <STRONG>SIGWINCH</STRONG> in- + terrupts the function, it will return <STRONG>KEY_RESIZE</STRONG> rather than <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>getstr</STRONG>, <STRONG>mvgetstr</STRONG>, and <STRONG>mvwgetstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + They read single-byte characters only. The standard does not define + any error conditions. This implementation returns <STRONG>ERR</STRONG> if the window + pointer is null, or if the lower-level <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> call returns an <STRONG>ERR</STRONG>. + + SVr3 and early SVr4 curses implementations did not reject function + keys; the SVr4.0 documentation claimed that "special keys" (such as + function keys, "home" key, "clear" key, <EM>etc</EM>.) are "interpreted", with- + out 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). + + The functions <STRONG>getnstr</STRONG>, <STRONG>mvgetnstr</STRONG>, and <STRONG>mvwgetnstr</STRONG> were present but not + documented in SVr4. + + X/Open Curses, Issue 5 (2007) stated that these functions "read at most + <EM>n</EM> 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 <EM>n</EM>-1 bytes" to allow for the terminating NUL. As of 2018, + some implementations do, some do not count it: + + <STRONG>o</STRONG> ncurses 6.1 and PDCurses do not count the NUL in the given limit, + while + + <STRONG>o</STRONG> Solaris SVr4 and NetBSD curses count the NUL as part of the limit. + + <STRONG>o</STRONG> Solaris xcurses provides both: its wide-character <STRONG>wget_nstr</STRONG> re- + serves a NUL, but its <STRONG>wgetnstr</STRONG> does not count the NUL consistently. + + In SVr4 curses, a negative value of <EM>n</EM> tells <STRONG>wgetnstr</STRONG> to assume that the + caller's buffer is large enough to hold the result, i.e., to act like + <STRONG>wgetstr</STRONG>. X/Open Curses does not mention this (or anything related to + negative or zero values of <EM>n</EM>), however most implementations use the + feature, with different limits: + + <STRONG>o</STRONG> Solaris SVr4 curses and PDCurses limit the result to 255 bytes. + Other Unix systems than Solaris are likely to use the same limit. + + <STRONG>o</STRONG> Solaris xcurses limits the result to <STRONG>LINE_MAX</STRONG> bytes. + + <STRONG>o</STRONG> NetBSD 7 assumes no particular limit for the result from <STRONG>wgetstr</STRONG>. + However, it limits the <STRONG>wgetnstr</STRONG> parameter <EM>n</EM> to ensure that it is + greater than zero. + + A comment in NetBSD's source code states that this is specified in + SUSv2. + + <STRONG>o</STRONG> ncurses (before 6.2) assumes no particular limit for the result + from <STRONG>wgetstr</STRONG>, and treats the <EM>n</EM> parameter of <STRONG>wgetnstr</STRONG> like SVr4 + curses. + + <STRONG>o</STRONG> ncurses 6.2 uses <STRONG>LINE_MAX</STRONG>, or a larger (system-dependent) value + which the <STRONG>sysconf</STRONG> function may provide. If neither <STRONG>LINE_MAX</STRONG> or + <STRONG>sysconf</STRONG> is available, ncurses uses the POSIX value for <STRONG>LINE_MAX</STRONG> (a + 2048 byte limit). In either case, it reserves a byte for the ter- + minating NUL. + + Although <STRONG>getnstr</STRONG> is equivalent to a series of calls to <STRONG>getch</STRONG>, it also + makes changes to the curses modes to allow simple editing of the input + buffer: + + <STRONG>o</STRONG> <STRONG>getnstr</STRONG> saves the current value of the <STRONG>nl</STRONG>, <STRONG>echo</STRONG>, <STRONG>raw</STRONG> and <STRONG>cbreak</STRONG> + modes, and sets <STRONG>nl</STRONG>, <STRONG>noecho</STRONG>, <STRONG>noraw</STRONG>, and <STRONG>cbreak</STRONG>. + + <STRONG>getnstr</STRONG> handles the echoing of characters, rather than relying on + the caller to set an appropriate mode. + + <STRONG>o</STRONG> It also obtains the <EM>erase</EM> and <EM>kill</EM> characters from <STRONG>erasechar</STRONG> and + <STRONG>killchar</STRONG>, respectively. + + <STRONG>o</STRONG> On return, <STRONG>getnstr</STRONG> restores the modes to their previous values. + + Other implementations differ in their treatment of special characters: + + <STRONG>o</STRONG> While they may set the <EM>echo</EM> mode, other implementations do not mod- + ify the <EM>raw</EM> mode, They may take the <EM>cbreak</EM> mode set by the caller + into account when deciding whether to handle echoing within <STRONG>getnstr</STRONG> + or as a side-effect of the <STRONG>getch</STRONG> calls. + + <STRONG>o</STRONG> The original ncurses (as pcurses in 1986) set <STRONG>noraw</STRONG> and <STRONG>cbreak</STRONG> when + accepting input for <STRONG>getnstr</STRONG>. That may have been done to make func- + tion- and cursor-keys work; it is not necessary with ncurses. + + Since 1995, ncurses has provided signal handlers for INTR and QUIT + (e.g., <STRONG>^C</STRONG> or <STRONG>^\</STRONG>). With the <STRONG>noraw</STRONG> and <STRONG>cbreak</STRONG> settings, those may + catch a signal and stop the program, where other implementations + allow one to enter those characters in the buffer. + + <STRONG>o</STRONG> Starting in 2021 (ncurses 6.3), <STRONG>getnstr</STRONG> sets <STRONG>raw</STRONG>, rather than <STRONG>noraw</STRONG> + and <STRONG>cbreak</STRONG> for better compatibility with SVr4-curses, e.g., allow- + ing one to enter a <STRONG>^C</STRONG> into the buffer. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_getyx.3x.html b/deps/ncurses-6.3/doc/html/man/curs_getyx.3x.html new file mode 100644 index 0000000..385eb8e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_getyx.3x.html @@ -0,0 +1,126 @@ +<!-- + **************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2007,2010 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. * + **************************************************************************** + * @Id: curs_getyx.3x,v 1.20 2020/10/24 09:38:43 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_getyx 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_getyx 3x</H1> +<PRE> +<STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG>, <STRONG>getmaxyx</STRONG> - get <STRONG>curses</STRONG> cursor and window + coordinates + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>void</STRONG> <STRONG>getyx(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>getparyx(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>getbegyx(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>getmaxyx(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>getyx</STRONG> macro places the current cursor position of the given window + in the two integer variables <EM>y</EM> and <EM>x</EM>. + + If <EM>win</EM> is a subwindow, the <STRONG>getparyx</STRONG> macro places the beginning + coordinates of the subwindow relative to the parent window into two + integer variables <EM>y</EM> and <EM>x</EM>. Otherwise, <STRONG>-1</STRONG> is placed into <EM>y</EM> and <EM>x</EM>. + + Like <STRONG>getyx</STRONG>, the <STRONG>getbegyx</STRONG> and <STRONG>getmaxyx</STRONG> macros store the current + beginning coordinates and size of the specified window. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The return values of these macros are undefined (i.e., they should not + be used as the right-hand side of assignment statements). + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All of these interfaces are macros. A "<STRONG>&amp;</STRONG>" is not necessary before the + variables <EM>y</EM> and <EM>x</EM>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The <STRONG>getyx</STRONG>, <STRONG>getparyx</STRONG>, <STRONG>getbegyx</STRONG> and <STRONG>getmaxyx</STRONG> macros are described in the + XSI Curses standard, Issue 4. + + This implementation also provides functions <STRONG>getbegx</STRONG>, <STRONG>getbegy</STRONG>, <STRONG>getcurx</STRONG>, + <STRONG>getcury</STRONG>, <STRONG>getmaxx</STRONG>, <STRONG>getmaxy</STRONG>, <STRONG>getparx</STRONG> and <STRONG>getpary</STRONG> for compatibility with + older versions of curses. + + Although X/Open Curses does not address this, many implementations + provide members of the WINDOW structure containing values corresponding + to these macros. For best portability, do not rely on using the data + in WINDOW, since some implementations make WINDOW opaque (do not allow + direct use of its members). + + Besides the problem of opaque structures, the data stored in like-named + members may not have like-values in different implementations. For + example, the WINDOW._maxx and WINDOW._maxy values in ncurses have (at + least since release 1.8.1) differed by one from some other + implementations. The difference is hidden by means of the macro + <STRONG>getmaxyx</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_in_wch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_in_wch.3x.html new file mode 100644 index 0000000..71cee61 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_in_wch.3x.html @@ -0,0 +1,108 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2002-2010,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. * + **************************************************************************** + * @Id: curs_in_wch.3x,v 1.10 2020/10/17 23:19:29 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_in_wch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_in_wch 3x</H1> +<PRE> +<STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>in_wch</STRONG>, <STRONG>mvin_wch</STRONG>, <STRONG>mvwin_wch</STRONG>, <STRONG>win_wch</STRONG> - extract a complex character and + rendition from a window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>in_wch(cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>win_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvin_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwin_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wcval</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions extract the complex character and rendition from the + current position in the named window into the <STRONG>cchar_t</STRONG> object referenced + by wcval. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + No errors are defined in the XSI Curses standard. This implementation + checks for null pointers, returns <STRONG>ERR</STRONG> in that case. Also, the <EM>mv</EM> + routines check for error moving the cursor, returning <STRONG>ERR</STRONG> in that case. + Otherwise they return <STRONG>OK</STRONG>. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all of these routines may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_in_wchstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_in_wchstr.3x.html new file mode 100644 index 0000000..748d073 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_in_wchstr.3x.html @@ -0,0 +1,121 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2002-2012,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. * + **************************************************************************** + * @Id: curs_in_wchstr.3x,v 1.14 2020/10/17 23:19:44 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_in_wchstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_in_wchstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>in_wchstr</STRONG>, <STRONG>in_wchnstr</STRONG>, <STRONG>win_wchstr</STRONG>, <STRONG>win_wchnstr</STRONG>, <STRONG>mvin_wchstr</STRONG>, + <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> - get an array of complex + characters and renditions from a curses window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>in_wchstr(cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>in_wchnstr(cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>win_wchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>win_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvin_wchstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvin_wchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwin_wchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwin_wchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wchstr</EM>, int <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions return an array of complex characters in <EM>wchstr</EM>, start- + ing at the current cursor position in the named window. Attributes + (rendition) are stored with the characters. + + The <STRONG>in_wchnstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG> and <STRONG>win_wchnstr</STRONG> fill the + array with at most <EM>n</EM> <STRONG>cchar_t</STRONG> elements. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all routines except <STRONG>win_wchnstr</STRONG> may be macros. + + Reading a line that overflows the array pointed to by <EM>wchstr</EM> with + <STRONG>in_wchstr</STRONG>, <STRONG>mvin_wchstr</STRONG>, <STRONG>mvwin_wchstr</STRONG> or <STRONG>win_wchstr</STRONG> causes undefined re- + sults. Therefore, the use of <STRONG>in_wchnstr</STRONG>, <STRONG>mvin_wchnstr</STRONG>, <STRONG>mvwin_wchnstr</STRONG>, + or <STRONG>win_wchnstr</STRONG> is recommended. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Upon successful completion, these functions return <STRONG>OK</STRONG>. Otherwise, they + return <STRONG>ERR</STRONG>. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses defines no error conditions. This implementation checks + for null pointers, returning <STRONG>ERR</STRONG> in that case. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + Functions: <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>, <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_inch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_inch.3x.html new file mode 100644 index 0000000..397664a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_inch.3x.html @@ -0,0 +1,154 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_inch.3x,v 1.26 2021/06/17 21:30:22 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_inch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_inch 3x</H1> +<PRE> +<STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>inch</STRONG>, <STRONG>winch</STRONG>, <STRONG>mvinch</STRONG>, <STRONG>mvwinch</STRONG> - get a character and attributes from a + <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>chtype</STRONG> <STRONG>inch(void);</STRONG> + <STRONG>chtype</STRONG> <STRONG>winch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>chtype</STRONG> <STRONG>mvinch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>chtype</STRONG> <STRONG>mvwinch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines return the character, of type <STRONG>chtype</STRONG>, 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 <STRONG>&lt;curses.h&gt;</STRONG> can be used with the <STRONG>&amp;</STRONG> (logical AND) operator to + extract the character or attributes alone. + + +</PRE><H3><a name="h3-Attributes">Attributes</a></H3><PRE> + The following bit-masks may be AND-ed with characters returned by + <STRONG>winch</STRONG>. + + <STRONG>A_CHARTEXT</STRONG> Bit-mask to extract character + <STRONG>A_ATTRIBUTES</STRONG> Bit-mask to extract attributes + <STRONG>A_COLOR</STRONG> Bit-mask to extract color-pair field information + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + The <STRONG>winch</STRONG> 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 <STRONG>winch</STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all of these routines may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + Very old systems (before standardization) provide a different function + with the same name: + + <STRONG>o</STRONG> The <STRONG>winch</STRONG> function was part of the original BSD curses library, + which stored a 7-bit character combined with the <EM>standout</EM> + attribute. + + In BSD curses, <STRONG>winch</STRONG> returned only the character (as an integer) + with the <EM>standout</EM> attribute removed. + + <STRONG>o</STRONG> System V curses added support for several video attributes which + could be combined with characters in the window. + + Reflecting this improvement, the function was altered to return the + character combined with all video attributes in a <STRONG>chtype</STRONG> value. + + X/Open Curses does not specify the size and layout of attributes, color + and character values in <STRONG>chtype</STRONG>; 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. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> + gives an overview of the WINDOW and <STRONG>chtype</STRONG> data types. + + <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + goes into more detail, pointing out portability problems and + constraints on the use of <STRONG>chtype</STRONG> for returning window information. + + <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> + describes comparable functions for the wide-character (ncursesw) + library. + + + + <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Attributes">Attributes</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_inchstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_inchstr.3x.html new file mode 100644 index 0000000..c0f0740 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_inchstr.3x.html @@ -0,0 +1,131 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_inchstr.3x,v 1.21 2020/10/18 00:24:36 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_inchstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_inchstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>inchstr</STRONG>, <STRONG>inchnstr</STRONG>, <STRONG>winchstr</STRONG>, <STRONG>winchnstr</STRONG>, <STRONG>mvinchstr</STRONG>, <STRONG>mvinchnstr</STRONG>, + <STRONG>mvwinchstr</STRONG>, <STRONG>mvwinchnstr</STRONG> - get a string of characters (and attributes) + from a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>inchstr(chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>inchnstr(chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvinchstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvinchnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinchstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinchnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <STRONG>*</STRONG><EM>chstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines return a NULL-terminated array of <STRONG>chtype</STRONG> quantities, + starting at the current cursor position in the named window and ending + at the right margin of the window. The four functions with <EM>n</EM> as the + last argument, return a leading substring at most <EM>n</EM> characters long + (exclusive of the trailing (chtype)0). Constants defined in <STRONG>&lt;curses.h&gt;</STRONG> + can be used with the <STRONG>&amp;</STRONG> (logical AND) operator to extract the character + or the attribute alone from any position in the <EM>chstr</EM> [see + <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>]. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and an integer value + other than <STRONG>ERR</STRONG> upon successful completion (the number of characters re- + trieved, exclusive of the trailing 0). + + X/Open Curses defines no error conditions. In this implementation: + + <STRONG>o</STRONG> If the <EM>win</EM> parameter is null, an error is returned, + + <STRONG>o</STRONG> If the <EM>chstr</EM> parameter is null, an error is returned, + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all routines except <STRONG>winchnstr</STRONG> may be macros. SVr4 does not + document whether the result string is zero-terminated; it does not doc- + ument whether a length limit argument includes any trailing 0; and it + does not document the meaning of the return value. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, 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 <STRONG>OK</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>. + + Comparable functions in the wide-character (ncursesw) library are de- + scribed in <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_initscr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_initscr.3x.html new file mode 100644 index 0000000..691d684 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_initscr.3x.html @@ -0,0 +1,278 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_initscr.3x,v 1.33 2020/10/17 23:20:48 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_initscr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_initscr 3x</H1> +<PRE> +<STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>initscr</STRONG>, <STRONG>newterm</STRONG>, <STRONG>endwin</STRONG>, <STRONG>isendwin</STRONG>, <STRONG>set_term</STRONG>, <STRONG>delscreen</STRONG> - <STRONG>curses</STRONG> screen + initialization and manipulation routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>WINDOW</STRONG> <STRONG>*initscr(void);</STRONG> + <STRONG>int</STRONG> <STRONG>endwin(void);</STRONG> + + <STRONG>bool</STRONG> <STRONG>isendwin(void);</STRONG> + + <STRONG>SCREEN</STRONG> <STRONG>*newterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>outfd</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>infd</EM><STRONG>);</STRONG> + <STRONG>SCREEN</STRONG> <STRONG>*set_term(SCREEN</STRONG> <STRONG>*</STRONG><EM>new</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>delscreen(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-initscr">initscr</a></H3><PRE> + <STRONG>initscr</STRONG> is normally the first <STRONG>curses</STRONG> routine to call when initializing + a program. A few special routines sometimes need to be called before + it; these are <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG>, <STRONG>filter</STRONG>, <STRONG>ripoffline</STRONG>, <STRONG>use_env</STRONG>. For multiple- + terminal applications, <STRONG>newterm</STRONG> may be called before <STRONG>initscr</STRONG>. + + The initscr code determines the terminal type and initializes all <STRONG>curs-</STRONG> + <STRONG>es</STRONG> data structures. <STRONG>initscr</STRONG> also causes the first call to <STRONG><A HREF="curscurs_refresh.3x.html">refresh(3x)</A></STRONG> + to clear the screen. If errors occur, <STRONG>initscr</STRONG> writes an appropriate + error message to standard error and exits; otherwise, a pointer is re- + turned to <STRONG>stdscr</STRONG>. + + +</PRE><H3><a name="h3-newterm">newterm</a></H3><PRE> + A program that outputs to more than one terminal should use the <STRONG>newterm</STRONG> + routine for each terminal instead of <STRONG>initscr</STRONG>. 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 <STRONG>newterm</STRONG>. The routine <STRONG>newterm</STRONG> should be called once for each termi- + nal. It returns a variable of type <STRONG>SCREEN</STRONG> <STRONG>*</STRONG> which should be saved as a + reference to that terminal. <STRONG>newterm</STRONG>'s arguments are + + <STRONG>o</STRONG> the <EM>type</EM> of the terminal to be used in place of <STRONG>$TERM</STRONG>, + + <STRONG>o</STRONG> a file pointer for output to the terminal, and + + <STRONG>o</STRONG> another file pointer for input from the terminal + + If the <EM>type</EM> parameter is <STRONG>NULL</STRONG>, <STRONG>$TERM</STRONG> will be used. + + +</PRE><H3><a name="h3-endwin">endwin</a></H3><PRE> + The program must also call <STRONG>endwin</STRONG> for each terminal being used before + exiting from <STRONG>curses</STRONG>. If <STRONG>newterm</STRONG> is called more than once for the same + terminal, the first terminal referred to must be the last one for which + <STRONG>endwin</STRONG> is called. + + A program should always call <STRONG>endwin</STRONG> before exiting or escaping from + <STRONG>curses</STRONG> mode temporarily. This routine + + <STRONG>o</STRONG> resets colors to correspond with the default color pair 0, + + <STRONG>o</STRONG> moves the cursor to the lower left-hand corner of the screen, + + <STRONG>o</STRONG> clears the remainder of the line so that it uses the default col- + ors, + + <STRONG>o</STRONG> sets the cursor to normal visibility (see <STRONG><A HREF="curs_kernel.3x.html">curs_set(3x)</A></STRONG>), + + <STRONG>o</STRONG> stops cursor-addressing mode using the <EM>exit</EM><STRONG>_</STRONG><EM>ca</EM><STRONG>_</STRONG><EM>mode</EM> terminal capa- + bility, + + <STRONG>o</STRONG> restores tty modes (see <STRONG><A HREF="curs_kernel.3x.html">reset_shell_mode(3x)</A></STRONG>). + + Calling <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> or <STRONG><A HREF="curs_refresh.3x.html">doupdate(3x)</A></STRONG> after a temporary escape causes the + program to resume visual mode. + + +</PRE><H3><a name="h3-isendwin">isendwin</a></H3><PRE> + The <STRONG>isendwin</STRONG> routine returns <STRONG>TRUE</STRONG> if <STRONG>endwin</STRONG> has been called without any + subsequent calls to <STRONG>wrefresh</STRONG>, and <STRONG>FALSE</STRONG> otherwise. + + +</PRE><H3><a name="h3-set_term">set_term</a></H3><PRE> + The <STRONG>set_term</STRONG> routine is used to switch between different terminals. + The screen reference <STRONG>new</STRONG> becomes the new current terminal. The previ- + ous terminal is returned by the routine. This is the only routine + which manipulates <STRONG>SCREEN</STRONG> pointers; all other routines affect only the + current terminal. + + +</PRE><H3><a name="h3-delscreen">delscreen</a></H3><PRE> + The <STRONG>delscreen</STRONG> routine frees storage associated with the <STRONG>SCREEN</STRONG> data + structure. The <STRONG>endwin</STRONG> routine does not do this, so <STRONG>delscreen</STRONG> should be + called after <STRONG>endwin</STRONG> if a particular <STRONG>SCREEN</STRONG> is no longer needed. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>endwin</STRONG> returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon successful com- + pletion. + + Routines that return pointers always return <STRONG>NULL</STRONG> on error. + + X/Open defines no error conditions. In this implementation + + <STRONG>o</STRONG> <STRONG>endwin</STRONG> returns an error if the terminal was not initialized. + + <STRONG>o</STRONG> <STRONG>newterm</STRONG> returns an error if it cannot allocate the data structures + for the screen, or for the top-level windows within the screen, + i.e., <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>, or <STRONG>stdscr</STRONG>. + + <STRONG>o</STRONG> <STRONG>set_term</STRONG> returns no error. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions were described in the XSI Curses standard, Issue 4. As + of 2015, the current document is X/Open Curses, Issue 7. + + +</PRE><H3><a name="h3-Differences">Differences</a></H3><PRE> + X/Open specifies that portable applications must not call <STRONG>initscr</STRONG> more + than once: + + <STRONG>o</STRONG> The portable way to use <STRONG>initscr</STRONG> is once only, using <STRONG>refresh</STRONG> (see + <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>) to restore the screen after <STRONG>endwin</STRONG>. + + <STRONG>o</STRONG> This implementation allows using <STRONG>initscr</STRONG> after <STRONG>endwin</STRONG>. + + Old versions of curses, e.g., BSD 4.4, may have returned a null pointer + from <STRONG>initscr</STRONG> when an error is detected, rather than exiting. It is + safe but redundant to check the return value of <STRONG>initscr</STRONG> in XSI Curses. + + +</PRE><H3><a name="h3-Unset-TERM-Variable">Unset TERM Variable</a></H3><PRE> + If the TERM variable is missing or empty, <STRONG>initscr</STRONG> uses the value "un- + known", which normally corresponds to a terminal entry with the <EM>generic</EM> + (<EM>gn</EM>) capability. Generic entries are detected by <STRONG>setupterm</STRONG> (see + <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>) and cannot be used for full-screen operation. Other + implementations may handle a missing/empty TERM variable differently. + + +</PRE><H3><a name="h3-Signal-Handlers">Signal Handlers</a></H3><PRE> + Quoting from X/Open Curses, section 3.1.1: + + <EM>Curses</EM> <EM>implementations</EM> <EM>may</EM> <EM>provide</EM> <EM>for</EM> <EM>special</EM> <EM>handling</EM> <EM>of</EM> <EM>the</EM> + <STRONG>SIGINT</STRONG><EM>,</EM> <STRONG>SIGQUIT</STRONG> <EM>and</EM> <STRONG>SIGTSTP</STRONG> <EM>signals</EM> <EM>if</EM> <EM>their</EM> <EM>disposition</EM> <EM>is</EM> + <STRONG>SIG_DFL</STRONG> <EM>at</EM> <EM>the</EM> <EM>time</EM> <STRONG>initscr</STRONG> <EM>is</EM> <EM>called</EM> <STRONG>...</STRONG> + + <EM>Any</EM> <EM>special</EM> <EM>handling</EM> <EM>for</EM> <EM>these</EM> <EM>signals</EM> <EM>may</EM> <EM>remain</EM> <EM>in</EM> <EM>effect</EM> <EM>for</EM> + <EM>the</EM> <EM>life</EM> <EM>of</EM> <EM>the</EM> <EM>process</EM> <EM>or</EM> <EM>until</EM> <EM>the</EM> <EM>process</EM> <EM>changes</EM> <EM>the</EM> <EM>disposi-</EM> + <EM>tion</EM> <EM>of</EM> <EM>the</EM> <EM>signal.</EM> + + <EM>None</EM> <EM>of</EM> <EM>the</EM> <EM>Curses</EM> <EM>functions</EM> <EM>are</EM> <EM>required</EM> <EM>to</EM> <EM>be</EM> <EM>safe</EM> <EM>with</EM> <EM>respect</EM> + <EM>to</EM> <EM>signals</EM> ... + + This implementation establishes signal handlers during initialization, + e.g., <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. Applications which must handle these signals + should set up the corresponding handlers <EM>after</EM> initializing the li- + brary: + + <STRONG>SIGINT</STRONG> + The handler <EM>attempts</EM> to cleanup the screen on exit. Although it + <EM>usually</EM> works as expected, there are limitations: + + <STRONG>o</STRONG> Walking the <STRONG>SCREEN</STRONG> list is unsafe, since all list management + is done without any signal blocking. + + <STRONG>o</STRONG> On systems which have <STRONG>REENTRANT</STRONG> turned on, <STRONG>set_term</STRONG> uses func- + tions which could deadlock or misbehave in other ways. + + <STRONG>o</STRONG> <STRONG>endwin</STRONG> calls other functions, many of which use stdio or other + library functions which are clearly unsafe. + + <STRONG>SIGTERM</STRONG> + This uses the same handler as <STRONG>SIGINT</STRONG>, with the same limitations. + It is not mentioned in X/Open Curses, but is more suitable for + this purpose than <STRONG>SIGQUIT</STRONG> (which is used in debugging). + + <STRONG>SIGTSTP</STRONG> + This handles the <EM>stop</EM> signal, used in job control. When resuming + the process, this implementation discards pending input with + <STRONG>flushinput</STRONG> (see <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>), and repaints the screen assuming + that it has been completely altered. It also updates the saved + terminal modes with <STRONG>def_shell_mode</STRONG> (see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>). + + <STRONG>SIGWINCH</STRONG> + This handles the window-size changes which were ignored in the + standardization efforts. The handler sets a (signal-safe) vari- + able which is later tested in <STRONG>wgetch</STRONG> (see <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>). If + <STRONG>keypad</STRONG> has been enabled for the corresponding window, <STRONG>wgetch</STRONG> re- + turns the key symbol <STRONG>KEY_RESIZE</STRONG>. At the same time, <STRONG>wgetch</STRONG> calls + <STRONG>resizeterm</STRONG> to adjust the standard screen <STRONG>stdscr</STRONG>, and update other + data such as <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG>curs_ter-</STRONG> + <STRONG><A HREF="curs_terminfo.3x.html">minfo(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-initscr">initscr</a></li> +<li><a href="#h3-newterm">newterm</a></li> +<li><a href="#h3-endwin">endwin</a></li> +<li><a href="#h3-isendwin">isendwin</a></li> +<li><a href="#h3-set_term">set_term</a></li> +<li><a href="#h3-delscreen">delscreen</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-Differences">Differences</a></li> +<li><a href="#h3-Unset-TERM-Variable">Unset TERM Variable</a></li> +<li><a href="#h3-Signal-Handlers">Signal Handlers</a></li> +</ul> +</li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_inopts.3x.html b/deps/ncurses-6.3/doc/html/man/curs_inopts.3x.html new file mode 100644 index 0000000..cba08b0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_inopts.3x.html @@ -0,0 +1,335 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_inopts.3x,v 1.33 2020/12/05 19:38:18 Benno.Schulenberg Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_inopts 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_inopts 3x</H1> +<PRE> +<STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>cbreak</STRONG>, <STRONG>nocbreak</STRONG>, <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>keypad</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, + <STRONG>nonl</STRONG>, <STRONG>nodelay</STRONG>, <STRONG>notimeout</STRONG>, <STRONG>raw</STRONG>, <STRONG>noraw</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>timeout</STRONG>, + <STRONG>wtimeout</STRONG>, <STRONG>typeahead</STRONG> - <STRONG>curses</STRONG> input options + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>cbreak(void);</STRONG> + <STRONG>int</STRONG> <STRONG>nocbreak(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>echo(void);</STRONG> + <STRONG>int</STRONG> <STRONG>noecho(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>intrflush(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>keypad(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>meta(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>nodelay(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>notimeout(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>nl(void);</STRONG> + <STRONG>int</STRONG> <STRONG>nonl(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>raw(void);</STRONG> + <STRONG>int</STRONG> <STRONG>noraw(void);</STRONG> + + <STRONG>void</STRONG> <STRONG>qiflush(void);</STRONG> + <STRONG>void</STRONG> <STRONG>noqiflush(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>halfdelay(int</STRONG> <EM>tenths</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>timeout(int</STRONG> <EM>delay</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>wtimeout(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>delay</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>typeahead(int</STRONG> <EM>fd</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>ncurses</STRONG> library provides several functions which 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. Win- + dow-specific settings are not automatically applied to new or derived + windows. An application must apply these to each window, if the same + behavior is needed. + + +</PRE><H3><a name="h3-cbreak_nocbreak">cbreak/nocbreak</a></H3><PRE> + Normally, the tty driver buffers typed characters until a newline or + carriage return is typed. The <STRONG>cbreak</STRONG> routine disables line buffering + and erase/kill character-processing (interrupt and flow control charac- + ters are unaffected), making characters typed by the user immediately + available to the program. The <STRONG>nocbreak</STRONG> routine returns the terminal to + normal (cooked) mode. + + Initially the terminal may or may not be in <STRONG>cbreak</STRONG> mode, as the mode is + inherited; therefore, a program should call <STRONG>cbreak</STRONG> or <STRONG>nocbreak</STRONG> explic- + itly. Most interactive programs using <STRONG>curses</STRONG> set the <STRONG>cbreak</STRONG> mode. + Note that <STRONG>cbreak</STRONG> overrides <STRONG>raw</STRONG>. [See <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion + of how these routines interact with <STRONG>echo</STRONG> and <STRONG>noecho</STRONG>.] + + +</PRE><H3><a name="h3-echo_noecho">echo/noecho</a></H3><PRE> + The <STRONG>echo</STRONG> and <STRONG>noecho</STRONG> routines control whether characters typed by the + user are echoed by <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG> as they are typed. Echoing by the tty + driver is always disabled, but initially <STRONG>getch</STRONG> is in echo mode, so + characters typed are echoed. Authors of most interactive programs pre- + fer to do their own echoing in a controlled area of the screen, or not + to echo at all, so they disable echoing by calling <STRONG>noecho</STRONG>. [See + <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> for a discussion of how these routines interact with + <STRONG>cbreak</STRONG> and <STRONG>nocbreak</STRONG>.] + + +</PRE><H3><a name="h3-halfdelay">halfdelay</a></H3><PRE> + The <STRONG>halfdelay</STRONG> routine is used for half-delay mode, which is similar to + <STRONG>cbreak</STRONG> mode in that characters typed by the user are immediately avail- + able to the program. However, after blocking for <EM>tenths</EM> tenths of sec- + onds, <STRONG>ERR</STRONG> is returned if nothing has been typed. The value of <EM>tenths</EM> + must be a number between 1 and 255. Use <STRONG>nocbreak</STRONG> to leave half-delay + mode. + + +</PRE><H3><a name="h3-intrflush">intrflush</a></H3><PRE> + If the <STRONG>intrflush</STRONG> option is enabled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), and an interrupt key + is pressed on the keyboard (interrupt, break, quit), all output in the + tty driver queue will be flushed, giving the effect of faster response + to the interrupt, but causing <STRONG>curses</STRONG> to have the wrong idea of what is + on the screen. Disabling the option (<EM>bf</EM> is <STRONG>FALSE</STRONG>) prevents the flush. + The default for the option is inherited from the tty driver settings. + The window argument is ignored. + + +</PRE><H3><a name="h3-keypad">keypad</a></H3><PRE> + The <STRONG>keypad</STRONG> option enables the keypad of the user's terminal. If en- + abled (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the user can press a function key (such as an arrow + key) and <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> returns a single value representing the function + key, as in <STRONG>KEY_LEFT</STRONG>. If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>curses</STRONG> does not treat + function keys specially and the program has to interpret the escape se- + quences 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 <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> is called. + The default value for keypad is <STRONG>FALSE</STRONG>. + + +</PRE><H3><a name="h3-meta">meta</a></H3><PRE> + Initially, whether the terminal returns 7 or 8 significant bits on in- + put depends on the control mode of the tty driver [see <STRONG>termios(3)</STRONG>]. To + force 8 bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>); this is equiva- + lent, under POSIX, to setting the CS8 flag on the terminal. To force 7 + bits to be returned, invoke <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>FALSE</STRONG>); this is equivalent, under + POSIX, to setting the CS7 flag on the terminal. The window argument, + <EM>win</EM>, is always ignored. If the terminfo capabilities <STRONG>smm</STRONG> (meta_on) and + <STRONG>rmm</STRONG> (meta_off) are defined for the terminal, <STRONG>smm</STRONG> is sent to the termi- + nal when <STRONG>meta</STRONG>(<EM>win</EM>, <STRONG>TRUE</STRONG>) is called and <STRONG>rmm</STRONG> is sent when <STRONG>meta</STRONG>(<EM>win</EM>, + <STRONG>FALSE</STRONG>) is called. + + +</PRE><H3><a name="h3-nl_nonl">nl/nonl</a></H3><PRE> + The <STRONG>nl</STRONG> and <STRONG>nonl</STRONG> routines control whether the underlying display device + translates the return key into newline on input. + + +</PRE><H3><a name="h3-nodelay">nodelay</a></H3><PRE> + The <STRONG>nodelay</STRONG> option causes <STRONG>getch</STRONG> to be a non-blocking call. If no input + is ready, <STRONG>getch</STRONG> returns <STRONG>ERR</STRONG>. If disabled (<EM>bf</EM> is <STRONG>FALSE</STRONG>), <STRONG>getch</STRONG> waits + until a key is pressed. + + +</PRE><H3><a name="h3-notimeout">notimeout</a></H3><PRE> + When interpreting an escape sequence, <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> sets a timer while + waiting for the next character. If <STRONG>notimeout(</STRONG><EM>win</EM>, <STRONG>TRUE</STRONG>) is called, + then <STRONG>wgetch</STRONG> does not set a timer. The purpose of the timeout is to + differentiate between sequences received from a function key and those + typed by a user. + + +</PRE><H3><a name="h3-raw_noraw">raw/noraw</a></H3><PRE> + The <STRONG>raw</STRONG> and <STRONG>noraw</STRONG> routines place the terminal into or out of raw mode. + Raw mode is similar to <STRONG>cbreak</STRONG> mode, in that characters typed are imme- + diately passed through to the user program. The differences are that + in raw mode, the 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 tty driver + that are not set by <STRONG>curses</STRONG>. + + +</PRE><H3><a name="h3-qiflush_noqiflush">qiflush/noqiflush</a></H3><PRE> + When the <STRONG>noqiflush</STRONG> routine is used, normal flush of input and output + queues associated with the <STRONG>INTR</STRONG>, <STRONG>QUIT</STRONG> and <STRONG>SUSP</STRONG> characters will not be + done [see <STRONG>termios(3)</STRONG>]. When <STRONG>qiflush</STRONG> is called, the queues will be + flushed when these control characters are read. You may want to call + <STRONG>noqiflush</STRONG> in a signal handler if you want output to continue as though + the interrupt had not occurred, after the handler exits. + + +</PRE><H3><a name="h3-timeout_wtimeout">timeout/wtimeout</a></H3><PRE> + The <STRONG>timeout</STRONG> and <STRONG>wtimeout</STRONG> routines set blocking or non-blocking read for + a given window. If <EM>delay</EM> is negative, blocking read is used (i.e., + waits indefinitely for input). If <EM>delay</EM> is zero, then non-blocking + read is used (i.e., read returns <STRONG>ERR</STRONG> if no input is waiting). If <EM>delay</EM> + is positive, then read blocks for <EM>delay</EM> milliseconds, and returns <STRONG>ERR</STRONG> + if there is still no input. Hence, these routines provide the same + functionality as <STRONG>nodelay</STRONG>, plus the additional capability of being able + to block for only <EM>delay</EM> milliseconds (where <EM>delay</EM> is positive). + + +</PRE><H3><a name="h3-typeahead">typeahead</a></H3><PRE> + The <STRONG>curses</STRONG> library does "line-breakout optimization" by looking for ty- + peahead periodically while updating the screen. If input is found, and + it is coming from a tty, the current update is postponed until <STRONG>re-</STRONG> + <STRONG><A HREF="refresh.3x.html">fresh(3x)</A></STRONG> or <STRONG>doupdate</STRONG> is called again. This allows faster response to + commands typed in advance. Normally, the input FILE pointer passed to + <STRONG>newterm</STRONG>, or <STRONG>stdin</STRONG> in the case that <STRONG>initscr</STRONG> was used, will be used to do + this typeahead checking. The <STRONG>typeahead</STRONG> routine specifies that the file + descriptor <EM>fd</EM> is to be used to check for typeahead instead. If <EM>fd</EM> is + -1, then no typeahead checking is done. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> + (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful + completion, unless otherwise noted in the preceding routine descrip- + tions. + + X/Open does not define 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 initial- + ized. Also, + + <STRONG>halfdelay</STRONG> + returns an error if its parameter is outside the range + 1..255. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + The ncurses library obeys the XPG4 standard and the historical practice + of the AT&amp;T curses implementations, in that the echo bit is cleared + when curses initializes the terminal state. BSD curses differed from + this slightly; it left the echo bit on at initialization, but the BSD + <STRONG>raw</STRONG> call turned it off as a side-effect. For best portability, set + <STRONG>echo</STRONG> or <STRONG>noecho</STRONG> explicitly just after initialization, even if your pro- + gram remains in cooked mode. + + The XSI Curses standard is ambiguous on the question of whether <STRONG>raw</STRONG> + should disable the CRLF translations controlled by <STRONG>nl</STRONG> and <STRONG>nonl</STRONG>. BSD + curses did turn off these translations; AT&amp;T curses (at least as late + as SVr1) did not. We chose to do so, on the theory that a programmer + requesting raw input wants a clean (ideally 8-bit clean) connection + that the operating system will not alter. + + When <STRONG>keypad</STRONG> is first enabled, ncurses loads the key-definitions for the + current terminal description. If the terminal description includes ex- + tended string capabilities, e.g., from using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>, then + ncurses also defines keys for the capabilities whose names begin with + "k". The corresponding keycodes are generated and (depending on previ- + ous loads of terminal descriptions) may differ from one execution of a + program to the next. The generated keycodes are recognized by the <STRONG>key-</STRONG> + <STRONG>name</STRONG> function (which will then return a name beginning with "k" denot- + ing the terminfo capability name rather than "K", used for curses key- + names). On the other hand, an application can use <STRONG>define_key</STRONG> to estab- + lish a specific keycode for a given string. This makes it possible for + an application to check for an extended capability's presence with + <STRONG>tigetstr</STRONG>, and reassign the keycode to match its own needs. + + Low-level applications can use <STRONG>tigetstr</STRONG> to obtain the definition of any + particular string capability. Higher-level applications which use the + curses <STRONG>wgetch</STRONG> 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 <STRONG>wgetch</STRONG> can return only one keycode. + Most curses implementations (including 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. In + ncurses, you may also have extended capabilities interpreted as key + definitions. These are loaded after the predefined keys, and if a ca- + pability's value is the same as a previously-loaded key definition, the + later definition is the one used. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>echo</STRONG>, <STRONG>noecho</STRONG>, <STRONG>halfdelay</STRONG>, <STRONG>intrflush</STRONG>, <STRONG>meta</STRONG>, <STRONG>nl</STRONG>, <STRONG>nonl</STRONG>, <STRONG>nodelay</STRONG>, + <STRONG>notimeout</STRONG>, <STRONG>noqiflush</STRONG>, <STRONG>qiflush</STRONG>, <STRONG>timeout</STRONG>, and <STRONG>wtimeout</STRONG> may be macros. + + The <STRONG>noraw</STRONG> and <STRONG>nocbreak</STRONG> calls follow historical practice in that they + attempt to restore to normal ("cooked") mode from raw and cbreak modes + respectively. Mixing raw/noraw and cbreak/nocbreak calls leads to tty + driver control states that are hard to predict or understand; it is not + recommended. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG>de-</STRONG> + <STRONG><A HREF="define_key.3x.html">fine_key(3x)</A></STRONG>, <STRONG>termios(3)</STRONG> + + + + <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-cbreak_nocbreak">cbreak/nocbreak</a></li> +<li><a href="#h3-echo_noecho">echo/noecho</a></li> +<li><a href="#h3-halfdelay">halfdelay</a></li> +<li><a href="#h3-intrflush">intrflush</a></li> +<li><a href="#h3-keypad">keypad</a></li> +<li><a href="#h3-meta">meta</a></li> +<li><a href="#h3-nl_nonl">nl/nonl</a></li> +<li><a href="#h3-nodelay">nodelay</a></li> +<li><a href="#h3-notimeout">notimeout</a></li> +<li><a href="#h3-raw_noraw">raw/noraw</a></li> +<li><a href="#h3-qiflush_noqiflush">qiflush/noqiflush</a></li> +<li><a href="#h3-timeout_wtimeout">timeout/wtimeout</a></li> +<li><a href="#h3-typeahead">typeahead</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_ins_wch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_ins_wch.3x.html new file mode 100644 index 0000000..65bfab0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_ins_wch.3x.html @@ -0,0 +1,102 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2002-2010,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. * + **************************************************************************** + * @Id: curs_ins_wch.3x,v 1.10 2020/10/18 00:22:21 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_ins_wch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_ins_wch 3x</H1> +<PRE> +<STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>ins_wch</STRONG>, <STRONG>mvins_wch</STRONG>, <STRONG>mvwins_wch</STRONG>, <STRONG>wins_wch</STRONG> - insert a complex character + and rendition into a window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + #include &lt;curses.h&gt; + + <STRONG>int</STRONG> <STRONG>ins_wch(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wins_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvins_wch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwins_wch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines, insert the complex character <EM>wch</EM> with rendition before + the character under the cursor. All characters to the right of the + cursor are moved one space to the right, with the possibility of the + rightmost character on the line being lost. The insertion operation + does not change the cursor position. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + If successful, these functions return <STRONG>OK</STRONG>. If not, they return <STRONG>ERR</STRONG>. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-ERRORS">ERRORS</a></H2><PRE> + No errors are defined. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-ERRORS">ERRORS</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_ins_wstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_ins_wstr.3x.html new file mode 100644 index 0000000..0aee76a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_ins_wstr.3x.html @@ -0,0 +1,124 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2002-2012,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. * + **************************************************************************** + * @Id: curs_ins_wstr.3x,v 1.11 2020/10/17 23:21:25 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_ins_wstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_ins_wstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>ins_wstr</STRONG>, <STRONG>ins_nwstr</STRONG>, <STRONG>wins_wstr</STRONG>, <STRONG>wins_nwstr</STRONG>, <STRONG>mvins_wstr</STRONG>, <STRONG>mvins_nwstr</STRONG>, + <STRONG>mvwins_wstr</STRONG>, <STRONG>mvwins_nwstr</STRONG> - insert a wide-character string into a + curses window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>ins_wstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr);</EM> + <STRONG>int</STRONG> <STRONG>ins_nwstr(const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wins_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wins_nwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvins_wstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvins_nwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwins_wstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwins_nwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines insert a <STRONG>wchar_t</STRONG> character string (as many characters as + will fit on the line) before the character under the cursor. All char- + acters to the right of the cursor are shifted right, with the possibil- + ity of the rightmost characters on the line being lost. No wrapping is + performed. The cursor position does not change (after moving to <EM>y</EM>, <EM>x</EM>, + if specified). The four routines with <EM>n</EM> as the last argument insert a + leading substring of at most <EM>n</EM> <STRONG>wchar_t</STRONG> characters. If <EM>n</EM> is less than + 1, the entire string is inserted. + + If a character in <EM>wstr</EM> is a tab, newline, carriage return or backspace, + the cursor is moved appropriately within the window. A newline also + does a <STRONG>clrtoeol</STRONG> before moving. Tabs are considered to be at every + eighth column. If a character in <EM>wstr</EM> is another control character, it + is drawn in the <STRONG>^</STRONG><EM>X</EM> notation. Calling <STRONG>win_wch</STRONG> after adding a control + character (and moving to it, if necessary) does not return the control + character, but instead returns a character in the ^-representation of + the control character. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all but wins_nwstr may be macros. + + If the first character in the string is a nonspacing character, these + functions will fail. XSI does not define what will happen if a non- + spacing character follows a control character. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Upon successful completion, these functions return <STRONG>OK</STRONG>. Otherwise, they + return <STRONG>ERR</STRONG>. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG>, <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_insch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_insch.3x.html new file mode 100644 index 0000000..c26261e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_insch.3x.html @@ -0,0 +1,116 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_insch.3x,v 1.19 2020/10/18 00:21:39 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_insch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_insch 3x</H1> +<PRE> +<STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>insch</STRONG>, <STRONG>winsch</STRONG>, <STRONG>mvinsch</STRONG>, <STRONG>mvwinsch</STRONG> - insert a character before cursor in + a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>insch(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winsch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvinsch(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinsch(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines insert the character <EM>ch</EM> before the character under the + cursor. All characters to the right of the cursor are moved one space + to the right, with the possibility of the rightmost character on the + line being lost. The insertion operation does not change the cursor + position. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> + (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful + completion, unless otherwise noted in the preceding routine + descriptions. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + These routines do not necessarily imply use of a hardware insert + character feature. + + Note that <STRONG>insch</STRONG>, <STRONG>mvinsch</STRONG>, and <STRONG>mvwinsch</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. + + Comparable functions in the wide-character (ncursesw) library are + described in <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_insstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_insstr.3x.html new file mode 100644 index 0000000..aa32c31 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_insstr.3x.html @@ -0,0 +1,127 @@ +<!-- + **************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_insstr.3x,v 1.27 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_insstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_insstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>insstr</STRONG>, <STRONG>insnstr</STRONG>, <STRONG>winsstr</STRONG>, <STRONG>winsnstr</STRONG>, <STRONG>mvinsstr</STRONG>, <STRONG>mvinsnstr</STRONG>, <STRONG>mvwinsstr</STRONG>, + <STRONG>mvwinsnstr</STRONG> - insert string before cursor in a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + <STRONG>int</STRONG> <STRONG>insstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>insnstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winsstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winsnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvinsstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvinsnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinsstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinsnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines insert a character string (as many characters as will + fit on the line) before the character under the cursor. All characters + to the right of the cursor are shifted right with the possibility of + the rightmost characters on the line being lost. The cursor position + does not change (after moving to <EM>y</EM>, <EM>x</EM>, if specified). The functions + with <EM>n</EM> as the last argument insert a leading substring of at most <EM>n</EM> + characters. If <EM>n</EM>&lt;=0, then the entire string is inserted. + + Special characters are handled as in <STRONG>addch</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> + (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") upon successful + completion, unless otherwise noted in the preceding routine + descriptions. + + X/Open defines no error conditions. In this implementation, if the + window parameter is null or the str parameter is null, an error is + returned. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all but <STRONG>winsnstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4, + which adds const qualifiers to the arguments. + + The Single Unix Specification, Version 2 states that <STRONG>insnstr</STRONG> and + <STRONG>winsnstr</STRONG> perform wrapping. This is probably an error, since it makes + this group of functions inconsistent. Also, no implementation of + curses documents this inconsistency. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_instr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_instr.3x.html new file mode 100644 index 0000000..b783e98 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_instr.3x.html @@ -0,0 +1,123 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_instr.3x,v 1.22 2020/10/18 00:18:27 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_instr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_instr 3x</H1> +<PRE> +<STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>instr</STRONG>, <STRONG>innstr</STRONG>, <STRONG>winstr</STRONG>, <STRONG>winnstr</STRONG>, <STRONG>mvinstr</STRONG>, <STRONG>mvinnstr</STRONG>, <STRONG>mvwinstr</STRONG>, <STRONG>mvwinnstr</STRONG> + - get a string of characters from a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>instr(char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>innstr(char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvinstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvinnstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinnstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines return a string of characters in <EM>str</EM>, extracted starting + at the current cursor position in the named window. Attributes are + stripped from the characters. The four functions with <EM>n</EM> as the last + argument return a leading substring at most <EM>n</EM> characters long + (exclusive of the trailing NUL). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All of the functions return <STRONG>ERR</STRONG> upon failure, or the number of + characters actually read into the string. + + X/Open Curses defines no error conditions. In this implementation: + + <STRONG>o</STRONG> If the <EM>win</EM> parameter is null, an error is returned, + + <STRONG>o</STRONG> If the <EM>chstr</EM> parameter is null, an error is returned, + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that all routines except <STRONG>winnstr</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + SVr4 does not document whether a length limit includes or excludes the + trailing NUL. + + The ncurses library extends the XSI description by allowing a negative + value for <EM>n</EM>. In this case, the functions return the string ending at + the right margin. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_inwstr.3x.html b/deps/ncurses-6.3/doc/html/man/curs_inwstr.3x.html new file mode 100644 index 0000000..411094f --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_inwstr.3x.html @@ -0,0 +1,118 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2002-2012,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. * + **************************************************************************** + * @Id: curs_inwstr.3x,v 1.14 2020/10/17 23:22:11 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_inwstr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_inwstr 3x</H1> +<PRE> +<STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>inwstr</STRONG>, <STRONG>innwstr</STRONG>, <STRONG>winwstr</STRONG>, <STRONG>winnwstr</STRONG>, <STRONG>mvinwstr</STRONG>, <STRONG>mvinnwstr</STRONG>, <STRONG>mvwinwstr</STRONG>, + <STRONG>mvwinnwstr</STRONG> - get a string of <STRONG>wchar_t</STRONG> characters from a curses window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>inwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>innwstr(wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>winnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvinwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvinnwstr(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwinnwstr(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>wstr</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines return a string of <STRONG>wchar_t</STRONG> wide characters in <EM>wstr</EM>, + extracted starting at the current cursor position in the named window. + + The four functions with <EM>n</EM> as the last argument return a leading + substring at most <EM>n</EM> characters long (exclusive of the trailing NUL). + Transfer stops at the end of the current line, or when <EM>n</EM> characters + have been stored at the location referenced by <EM>wstr</EM>. + + If the size <EM>n</EM> is not large enough to store a complete complex + character, an error is generated. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All routines except <STRONG>winnwstr</STRONG> may be macros. + + Each cell in the window holds a complex character (i.e., base- and + combining-characters) together with attributes and color. These + functions store only the wide characters, ignoring attributes and + color. Use <STRONG>in_wchstr</STRONG> to return the complex characters from a window. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return <STRONG>ERR</STRONG> upon failure. Upon successful completion, the + *<STRONG>inwstr</STRONG> routines return <STRONG>OK</STRONG>, and the *<STRONG>innwstr</STRONG> routines return the number + of characters read into the string. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG>, <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_kernel.3x.html b/deps/ncurses-6.3/doc/html/man/curs_kernel.3x.html new file mode 100644 index 0000000..f042412 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_kernel.3x.html @@ -0,0 +1,232 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_kernel.3x,v 1.29 2020/10/17 23:22:35 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_kernel 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_kernel 3x</H1> +<PRE> +<STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>, <STRONG>reset_shell_mode</STRONG>, + <STRONG>resetty</STRONG>, <STRONG>savetty</STRONG>, <STRONG>getsyx</STRONG>, <STRONG>setsyx</STRONG>, <STRONG>ripoffline</STRONG>, <STRONG>curs_set</STRONG>, <STRONG>napms</STRONG> - low- + level <STRONG>curses</STRONG> routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>def_prog_mode(void);</STRONG> + <STRONG>int</STRONG> <STRONG>def_shell_mode(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>reset_prog_mode(void);</STRONG> + <STRONG>int</STRONG> <STRONG>reset_shell_mode(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>resetty(void);</STRONG> + <STRONG>int</STRONG> <STRONG>savetty(void);</STRONG> + + <STRONG>void</STRONG> <STRONG>getsyx(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>setsyx(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>ripoffline(int</STRONG> <EM>line</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>init</EM><STRONG>)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>int));</STRONG> + <STRONG>int</STRONG> <STRONG>curs_set(int</STRONG> <EM>visibility</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>napms(int</STRONG> <EM>ms</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The following routines give low-level access to various <STRONG>curses</STRONG> capabil- + ities. These routines typically are used inside library routines. + + +</PRE><H3><a name="h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></H3><PRE> + The <STRONG>def_prog_mode</STRONG> and <STRONG>def_shell_mode</STRONG> routines save the current terminal + modes as the "program" (in <STRONG>curses</STRONG>) or "shell" (not in <STRONG>curses</STRONG>) state for + use by the <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG> routines. This is done + automatically by <STRONG>initscr</STRONG>. There is one such save area for each screen + context allocated by <STRONG>newterm</STRONG>. + + +</PRE><H3><a name="h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></H3><PRE> + The <STRONG>reset_prog_mode</STRONG> and <STRONG>reset_shell_mode</STRONG> routines restore the terminal + to "program" (in <STRONG>curses</STRONG>) or "shell" (out of <STRONG>curses</STRONG>) state. These are + done automatically by <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and, after an <STRONG>endwin</STRONG>, by <STRONG>doupdate</STRONG>, so + they normally are not called. + + +</PRE><H3><a name="h3-resetty_-savetty">resetty, savetty</a></H3><PRE> + The <STRONG>resetty</STRONG> and <STRONG>savetty</STRONG> routines save and restore the state of the ter- + minal modes. <STRONG>savetty</STRONG> saves the current state in a buffer and <STRONG>resetty</STRONG> + restores the state to what it was at the last call to <STRONG>savetty</STRONG>. + + +</PRE><H3><a name="h3-getsyx">getsyx</a></H3><PRE> + The <STRONG>getsyx</STRONG> routine returns the current coordinates of the <EM>virtual</EM> + <EM>screen</EM> cursor in <EM>y</EM> and <EM>x</EM>. If <STRONG>leaveok</STRONG> is currently <STRONG>TRUE</STRONG>, then <STRONG>-1</STRONG>,<STRONG>-1</STRONG> is + returned. If lines have been removed from the top of the screen, using + <STRONG>ripoffline</STRONG>, <EM>y</EM> and <EM>x</EM> include these lines; therefore, <EM>y</EM> and <EM>x</EM> should be + used only as arguments for <STRONG>setsyx</STRONG>. + + Few applications will use this feature, most use <STRONG>getyx</STRONG> instead. + + +</PRE><H3><a name="h3-setsyx">setsyx</a></H3><PRE> + The <STRONG>setsyx</STRONG> routine sets the <EM>virtual</EM> <EM>screen</EM> cursor to <EM>y</EM>, <EM>x</EM>. If <EM>y</EM> and <EM>x</EM> + are both <STRONG>-1</STRONG>, then <STRONG>leaveok</STRONG> is set. The two routines <STRONG>getsyx</STRONG> and <STRONG>setsyx</STRONG> + are designed to be used by a library routine, which manipulates <STRONG>curses</STRONG> + windows but does not want to change the current position of the pro- + gram's cursor. The library routine would call <STRONG>getsyx</STRONG> at the beginning, + do its manipulation of its own windows, do a <STRONG>wnoutrefresh</STRONG> on its win- + dows, call <STRONG>setsyx</STRONG>, and then call <STRONG>doupdate</STRONG>. + + Few applications will use this feature, most use <STRONG>wmove</STRONG> instead. + + +</PRE><H3><a name="h3-ripoffline">ripoffline</a></H3><PRE> + The <STRONG>ripoffline</STRONG> routine provides access to the same facility that + <STRONG>slk_init</STRONG> [see <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>] uses to reduce the size of the screen. + <STRONG>ripoffline</STRONG> must be called before <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> is called, to pre- + pare these initial actions: + + <STRONG>o</STRONG> If <EM>line</EM> is positive, a line is removed from the top of <STRONG>stdscr</STRONG>. + + <STRONG>o</STRONG> if <EM>line</EM> is negative, a line is removed from the bottom. + + When the resulting initialization is done inside <STRONG>initscr</STRONG>, the routine + <STRONG>init</STRONG> (supplied by the user) is called with two arguments: + + <STRONG>o</STRONG> a window pointer to the one-line window that has been allocated and + + <STRONG>o</STRONG> an integer with the number of columns in the window. + + Inside this initialization routine, the integer variables <STRONG>LINES</STRONG> and + <STRONG>COLS</STRONG> (defined in <STRONG>&lt;curses.h&gt;</STRONG>) are not guaranteed to be accurate and <STRONG>wre-</STRONG> + <STRONG>fresh</STRONG> or <STRONG>doupdate</STRONG> must not be called. It is allowable to call <STRONG>wnoutre-</STRONG> + <STRONG>fresh</STRONG> during the initialization routine. + + <STRONG>ripoffline</STRONG> can be called up to five times before calling <STRONG>initscr</STRONG> or + <STRONG>newterm</STRONG>. + + +</PRE><H3><a name="h3-curs_set">curs_set</a></H3><PRE> + The <STRONG>curs_set</STRONG> routine sets the cursor state to invisible, normal, or + very visible for <STRONG>visibility</STRONG> equal to <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG> respectively. If the + terminal supports the <EM>visibility</EM> requested, the previous <EM>cursor</EM> state + is returned; otherwise, <STRONG>ERR</STRONG> is returned. + + +</PRE><H3><a name="h3-napms">napms</a></H3><PRE> + The <STRONG>napms</STRONG> routine is used to sleep for <EM>ms</EM> milliseconds. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except for <STRONG>curs_set</STRONG>, these routines always return <STRONG>OK</STRONG>. + + <STRONG>curs_set</STRONG> returns the previous cursor state, or <STRONG>ERR</STRONG> if the requested + <EM>visibility</EM> is not supported. + + X/Open defines no error conditions. In this implementation + + <STRONG>def_prog_mode</STRONG>, <STRONG>def_shell_mode</STRONG>, <STRONG>reset_prog_mode</STRONG>, <STRONG>reset_shell_mode</STRONG> + return an error if the terminal was not initialized, or if the I/O + call to obtain the terminal settings fails. + + <STRONG>ripoffline</STRONG> + returns an error if the maximum number of ripped-off lines exceeds + the maximum (NRIPS = 5). + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>getsyx</STRONG> is a macro, so <STRONG>&amp;</STRONG> is not necessary before the variables + <EM>y</EM> and <EM>x</EM>. + + Older SVr4 man pages warn that the return value of <STRONG>curs_set</STRONG> "is cur- + rently incorrect". This implementation gets it right, but it may be + unwise to count on the correctness of the return value anywhere else. + + Both ncurses and SVr4 will call <STRONG>curs_set</STRONG> in <STRONG>endwin</STRONG> if <STRONG>curs_set</STRONG> has been + called to make the cursor other than normal, i.e., either invisible or + very visible. There is no way for ncurses to determine the initial + cursor state to restore that. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The <EM>virtual</EM> <EM>screen</EM> functions <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> are not described in the + XSI Curses standard, Issue 4. All other functions are as described in + XSI Curses. + + The SVr4 documentation describes <STRONG>setsyx</STRONG> and <STRONG>getsyx</STRONG> as having return + type int. This is misleading, as they are macros with no documented + semantics for the return value. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, + <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-def_prog_mode_-def_shell_mode">def_prog_mode, def_shell_mode</a></li> +<li><a href="#h3-reset_prog_mode_-reset_shell_mode">reset_prog_mode, reset_shell_mode</a></li> +<li><a href="#h3-resetty_-savetty">resetty, savetty</a></li> +<li><a href="#h3-getsyx">getsyx</a></li> +<li><a href="#h3-setsyx">setsyx</a></li> +<li><a href="#h3-ripoffline">ripoffline</a></li> +<li><a href="#h3-curs_set">curs_set</a></li> +<li><a href="#h3-napms">napms</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_legacy.3x.html b/deps/ncurses-6.3/doc/html/man/curs_legacy.3x.html new file mode 100644 index 0000000..181060c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_legacy.3x.html @@ -0,0 +1,140 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2007-2015,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. * + **************************************************************************** + * @Id: curs_legacy.3x,v 1.12 2020/10/18 00:16:04 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_legacy 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_legacy 3x</H1> +<PRE> +<STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG> <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + curs_legacy - get <STRONG>curses</STRONG> cursor and window coordinates, attributes + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>getattrs(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>getbegx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>getbegy(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>getcurx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>getcury(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>getmaxx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>getmaxy(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>getparx(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>getpary(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These legacy functions are simpler to use than the X/Open Curses + functions: + + <STRONG>o</STRONG> The <STRONG>getattrs</STRONG> function returns the same attribute data as <STRONG>wattr_get</STRONG>. + + However, <STRONG>getattrs</STRONG> returns an integer (actually a <STRONG>chtype</STRONG>), while + <STRONG>wattr_get</STRONG> returns the current color pair in a separate parameter. + In the wide-character library configuration, color pairs may not + fit into a <STRONG>chtype</STRONG>, so <STRONG>wattr_get</STRONG> is the only way to obtain the color + information. + + Because <STRONG>getattrs</STRONG> returns the attributes in a single parameter, it + would not be possible for an application to distinguish that from + <STRONG>ERR</STRONG> (a <EM>-1</EM>). If the window parameter is null, <STRONG>getattrs</STRONG> returns + <STRONG>A_NORMAL</STRONG> (zero). + + <STRONG>o</STRONG> The <STRONG>getbegy</STRONG> and <STRONG>getbegx</STRONG> functions return the same data as <STRONG>getbegyx</STRONG>. + + <STRONG>o</STRONG> The <STRONG>getcury</STRONG> and <STRONG>getcurx</STRONG> functions return the same data as <STRONG>getyx</STRONG>. + + <STRONG>o</STRONG> The <STRONG>getmaxy</STRONG> and <STRONG>getmaxx</STRONG> functions return the same data as <STRONG>getmaxyx</STRONG>. + + <STRONG>o</STRONG> The <STRONG>getpary</STRONG> and <STRONG>getparx</STRONG> functions return the same data as <STRONG>getparyx</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except as noted, these functions return an integer, or <STRONG>ERR</STRONG> if the + window parameter is null. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All of these interfaces are provided as macros and functions. The + macros are suppressed (and only the functions provided) when + <STRONG>NCURSES_OPAQUE</STRONG> is defined. The standard forms such as <STRONG>getyx</STRONG> 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 WINDOW structure. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions were supported on Version 7, BSD or System V + implementations. None of those implementations checked the window + parameter. + + The <STRONG>getattrs</STRONG> function and macro are defined to return a (signed) + integer for compatibility with those implementations although an + unsigned type would have been more appropriate. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_memleaks.3x.html b/deps/ncurses-6.3/doc/html/man/curs_memleaks.3x.html new file mode 100644 index 0000000..627bb72 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_memleaks.3x.html @@ -0,0 +1,134 @@ +<!-- + **************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2008-2010,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. * + **************************************************************************** + * @Id: curs_memleaks.3x,v 1.11 2021/01/02 23:47:51 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_memleaks 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_memleaks 3x</H1> +<PRE> +<STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG> <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>exit_curses</STRONG>, <STRONG>exit_terminfo</STRONG> - <STRONG>curses</STRONG> memory-leak checking + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + <STRONG>void</STRONG> <STRONG>exit_curses(int</STRONG> <EM>code</EM><STRONG>);</STRONG> + + <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG> + <STRONG>void</STRONG> <STRONG>exit_terminfo(int</STRONG> <EM>code</EM><STRONG>);</STRONG> + + /* deprecated (intentionally not declared in curses.h or term.h) */ + <STRONG>void</STRONG> <STRONG>_nc_freeall(void);</STRONG> + <STRONG>void</STRONG> <STRONG>_nc_free_and_exit(int</STRONG> <EM>code</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>_nc_free_tinfo(int</STRONG> <EM>code</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions are used to simplify analysis of memory leaks in the + ncurses library. + + Any implementation of curses must not free the memory associated with a + screen, since (even after calling <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>), it must be available for + use in the next call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>. There are also chunks of memory + held for performance reasons. That makes it hard to analyze curses ap- + plications for memory leaks. When using the specially configured de- + bugging version of the ncurses library, applications can call functions + which free those chunks of memory, simplifying the process of memory- + leak checking. + + Some of the functions are named with a "_nc_" prefix because they are + not intended for use in the non-debugging library: + + <STRONG>_nc_freeall</STRONG> + This frees (almost) all of the memory allocated by ncurses. + + <STRONG>_nc_free_and_exit</STRONG> + This frees the memory allocated by ncurses (like <STRONG>_nc_freeall</STRONG>), and + exits the program. It is preferred over <STRONG>_nc_freeall</STRONG> since some of + that memory may be required to keep the application running. Sim- + ply exiting (with the given exit-code) is safer. + + <STRONG>_nc_free_tinfo</STRONG> + Use this function if only the low-level terminfo functions (and + corresponding library) are used. Like <STRONG>_nc_free_and_exit</STRONG>, it exits + the program after freeing memory. + + The functions prefixed "_nc" are normally not available; they must be + configured into the library at build time using the <STRONG>--disable-leaks</STRONG> op- + tion. That compiles-in code that frees memory that normally would not + be freed. + + The <STRONG>exit_curses</STRONG> and <STRONG>exit_terminfo</STRONG> functions call <STRONG>_nc_free_and_exit</STRONG> and + <STRONG>_nc_free_tinfo</STRONG> if the library is configured to support memory-leak + checking. If the library is not configured to support memory-leak + checking, they simply call <STRONG>exit</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These functions do not return a value. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are not part of X/Open Curses; nor do other implementa- + tions of curses provide a similar feature. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_mouse.3x.html b/deps/ncurses-6.3/doc/html/man/curs_mouse.3x.html new file mode 100644 index 0000000..240f615 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_mouse.3x.html @@ -0,0 +1,394 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: curs_mouse.3x,v 1.53 2020/10/17 23:25:08 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_mouse 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_mouse 3x</H1> +<PRE> +<STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>has_mouse</STRONG>, <STRONG>getmouse</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>wenclose</STRONG>, <STRONG>mouse_trafo</STRONG>, + <STRONG>wmouse_trafo</STRONG>, <STRONG>mouseinterval</STRONG> - mouse interface through curses + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>typedef</STRONG> <STRONG>unsigned</STRONG> <STRONG>long</STRONG> <STRONG>mmask_t;</STRONG> + + <STRONG>typedef</STRONG> <STRONG>struct</STRONG> <STRONG>{</STRONG> + <STRONG>short</STRONG> <STRONG>id;</STRONG> <EM>/*</EM> <EM>ID</EM> <EM>to</EM> <EM>distinguish</EM> <EM>multiple</EM> <EM>devices</EM> <EM>*/</EM> + <STRONG>int</STRONG> <STRONG>x,</STRONG> <STRONG>y,</STRONG> <STRONG>z;</STRONG> <EM>/*</EM> <EM>event</EM> <EM>coordinates</EM> <EM>*/</EM> + <STRONG>mmask_t</STRONG> <STRONG>bstate;</STRONG> <EM>/*</EM> <EM>button</EM> <EM>state</EM> <EM>bits</EM> <EM>*/</EM> + <STRONG>}</STRONG> <STRONG>MEVENT;</STRONG> + + <STRONG>bool</STRONG> <STRONG>has_mouse(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>getmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>ungetmouse(MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG> + + <STRONG>mmask_t</STRONG> <STRONG>mousemask(mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG> + + <STRONG>bool</STRONG> <STRONG>wenclose(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + + <STRONG>bool</STRONG> <STRONG>mouse_trafo(int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>wmouse_trafo(const</STRONG> <STRONG>WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG> + <STRONG>int*</STRONG> <EM>pY</EM><STRONG>,</STRONG> <STRONG>int*</STRONG> <EM>pX</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>to</EM><STRONG>_</STRONG><EM>screen</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mouseinterval(int</STRONG> <EM>erval</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions provide an interface to mouse events from <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>. + Mouse events are represented by <STRONG>KEY_MOUSE</STRONG> pseudo-key values in the + <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> input stream. + + +</PRE><H3><a name="h3-mousemask">mousemask</a></H3><PRE> + To make mouse events visible, use the <STRONG>mousemask</STRONG> function. This will + set the mouse events to be reported. By default, no mouse events are + reported. The function will return a mask to indicate which of the + specified mouse events can be reported; on complete failure it returns + 0. If oldmask is non-NULL, this function fills the indicated location + with the previous value of the given window's mouse event mask. + + As a side effect, setting a zero mousemask may turn off the mouse + pointer; setting a nonzero mask may turn it on. Whether this happens + is device-dependent. + + +</PRE><H3><a name="h3-Mouse-events">Mouse events</a></H3><PRE> + Here are the mouse event type masks which may be defined: + + <EM>Name</EM> <EM>Description</EM> + --------------------------------------------------------------------- + BUTTON1_PRESSED mouse button 1 down + BUTTON1_RELEASED mouse button 1 up + BUTTON1_CLICKED mouse button 1 clicked + BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked + BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked + --------------------------------------------------------------------- + BUTTON2_PRESSED mouse button 2 down + BUTTON2_RELEASED mouse button 2 up + BUTTON2_CLICKED mouse button 2 clicked + + BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked + BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked + --------------------------------------------------------------------- + BUTTON3_PRESSED mouse button 3 down + BUTTON3_RELEASED mouse button 3 up + BUTTON3_CLICKED mouse button 3 clicked + BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked + BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked + --------------------------------------------------------------------- + BUTTON4_PRESSED mouse button 4 down + BUTTON4_RELEASED mouse button 4 up + BUTTON4_CLICKED mouse button 4 clicked + BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked + BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked + --------------------------------------------------------------------- + BUTTON5_PRESSED mouse button 5 down + BUTTON5_RELEASED mouse button 5 up + BUTTON5_CLICKED mouse button 5 clicked + BUTTON5_DOUBLE_CLICKED mouse button 5 double clicked + BUTTON5_TRIPLE_CLICKED mouse button 5 triple clicked + --------------------------------------------------------------------- + BUTTON_SHIFT shift was down during button state change + BUTTON_CTRL control was down during button state change + BUTTON_ALT alt was down during button state change + ALL_MOUSE_EVENTS report all button state changes + REPORT_MOUSE_POSITION report mouse movement + --------------------------------------------------------------------- + + +</PRE><H3><a name="h3-getmouse">getmouse</a></H3><PRE> + Once a class of mouse events has been made visible in a window, calling + the <STRONG>wgetch</STRONG> function on that window may return <STRONG>KEY_MOUSE</STRONG> as an indicator + that a mouse event has been queued. To read the event data and pop the + event off the queue, call <STRONG>getmouse</STRONG>. This function will return <STRONG>OK</STRONG> if a + mouse event is actually visible in the given window, <STRONG>ERR</STRONG> otherwise. + When <STRONG>getmouse</STRONG> returns <STRONG>OK</STRONG>, the data deposited as y and x in the event + structure coordinates will be screen-relative character-cell coordi- + nates. The returned state mask will have exactly one bit set to indi- + cate the event type. The corresponding data in the queue is marked in- + valid. A subsequent call to <STRONG>getmouse</STRONG> will retrieve the next older item + from the queue. + + +</PRE><H3><a name="h3-ungetmouse">ungetmouse</a></H3><PRE> + The <STRONG>ungetmouse</STRONG> function behaves analogously to <STRONG>ungetch</STRONG>. It pushes a + <STRONG>KEY_MOUSE</STRONG> event onto the input queue, and associates with that event + the given state data and screen-relative character-cell coordinates. + + +</PRE><H3><a name="h3-wenclose">wenclose</a></H3><PRE> + The <STRONG>wenclose</STRONG> function tests whether a given pair of screen-relative + character-cell coordinates is enclosed by a given window, returning + <STRONG>TRUE</STRONG> if it is and <STRONG>FALSE</STRONG> otherwise. It is useful for determining what + subset of the screen windows enclose the location of a mouse event. + + +</PRE><H3><a name="h3-wmouse_trafo">wmouse_trafo</a></H3><PRE> + The <STRONG>wmouse_trafo</STRONG> function transforms a given pair of coordinates from + stdscr-relative coordinates to coordinates relative to the given window + or vice versa. The resulting stdscr-relative coordinates are not al- + ways identical to window-relative coordinates due to the mechanism to + reserve lines on top or bottom of the screen for other purposes (see + the <STRONG>ripoffline</STRONG> and <STRONG><A HREF="curs_slk.3x.html">slk_init(3x)</A></STRONG> calls, for example). + + <STRONG>o</STRONG> If the parameter <STRONG>to_screen</STRONG> is <STRONG>TRUE</STRONG>, the pointers <STRONG>pY,</STRONG> <STRONG>pX</STRONG> must refer- + ence the coordinates of a location inside the window <STRONG>win</STRONG>. They are + converted to window-relative coordinates and returned through the + pointers. If the conversion was successful, the function returns + <STRONG>TRUE</STRONG>. + + <STRONG>o</STRONG> If one of the parameters was NULL or the location is not inside the + window, <STRONG>FALSE</STRONG> is returned. + + <STRONG>o</STRONG> If <STRONG>to_screen</STRONG> is <STRONG>FALSE</STRONG>, the pointers <STRONG>pY,</STRONG> <STRONG>pX</STRONG> must reference window- + relative coordinates. They are converted to stdscr-relative coor- + dinates if the window <STRONG>win</STRONG> encloses this point. In this case the + function returns <STRONG>TRUE</STRONG>. + + <STRONG>o</STRONG> If one of the parameters is NULL or the point is not inside the + window, <STRONG>FALSE</STRONG> is returned. The referenced coordinates are only re- + placed by the converted coordinates if the transformation was suc- + cessful. + + +</PRE><H3><a name="h3-mouse_trafo">mouse_trafo</a></H3><PRE> + The <STRONG>mouse_trafo</STRONG> function performs the same translation as <STRONG>wmouse_trafo</STRONG>, + using stdscr for <STRONG>win</STRONG>. + + +</PRE><H3><a name="h3-mouseinterval">mouseinterval</a></H3><PRE> + The <STRONG>mouseinterval</STRONG> function sets the maximum time (in thousands of a + second) that can elapse between press and release events for them to be + recognized as a click. Use <STRONG>mouseinterval(0)</STRONG> to disable click resolu- + tion. This function returns the previous interval value. Use <STRONG>mousein-</STRONG> + <STRONG>terval(-1)</STRONG> to obtain the interval without altering it. The default is + one sixth of a second. + + +</PRE><H3><a name="h3-has_mouse">has_mouse</a></H3><PRE> + The <STRONG>has_mouse</STRONG> function returns <STRONG>TRUE</STRONG> if the mouse driver has been suc- + cessfully initialized. + + Note that mouse events will be ignored when input is in cooked mode, + and will cause an error beep when cooked mode is being simulated in a + window by a function such as <STRONG>getstr</STRONG> that expects a linefeed for input- + loop termination. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>getmouse</STRONG> and <STRONG>ungetmouse</STRONG> return the integer <STRONG>ERR</STRONG> upon failure or <STRONG>OK</STRONG> upon + successful completion: + + <STRONG>getmouse</STRONG> + returns an error. + + <STRONG>o</STRONG> If no mouse driver was initialized, or if the mask parameter is + zero, + + <STRONG>o</STRONG> It also returns an error if no more events remain in the queue. + + <STRONG>ungetmouse</STRONG> + returns an error if the FIFO is full. + + <STRONG>mousemask</STRONG> returns the mask of reportable events. + + <STRONG>mouseinterval</STRONG> returns the previous interval value, unless the terminal + was not initialized. In that case, it returns the maximum interval + value (166). + + <STRONG>wenclose</STRONG> and <STRONG>wmouse_trafo</STRONG> are boolean functions returning <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG> + depending on their test result. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These calls were designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and are not found in SVr4 + curses, 4.4BSD curses, or any other previous version of curses. + + SVr4 curses had support for the mouse in a variant of <STRONG>xterm</STRONG>. It is + mentioned in a few places, but with no supporting documentation: + + <STRONG>o</STRONG> the "libcurses" manual page lists functions for this feature which + are prototyped in <STRONG>curses.h</STRONG>: + + extern int mouse_set(long int); + extern int mouse_on(long int); + extern int mouse_off(long int); + 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); + + <STRONG>o</STRONG> the "terminfo" manual page lists capabilities for the feature + + buttons btns BT Number of buttons on the mouse + get_mouse getm Gm Curses should get button events + key_mouse kmous Km 0631, Mouse event has occurred + mouse_info minfo Mi Mouse status information + req_mouse_pos reqmp RQ Request mouse position report + + <STRONG>o</STRONG> the interface made assumptions (as does ncurses) about the escape + sequences sent to and received from the terminal. + + For instance the SVr4 curses library used the <STRONG>get_mouse</STRONG> 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 <STRONG>req_mouse_pos</STRONG> capa- + bility. + + Those features required a terminal which had been modified to work + with curses. They were not part of the X Consortium's xterm. + + When developing the xterm mouse support for ncurses in September 1995, + Eric Raymond was uninterested in using the same interface due to its + lack of documentation. Later, in 1998, Mark Hesseling provided support + in PDCurses 2.3 using the SVr4 interface. PDCurses, however, does not + use video terminals, making it unnecessary to be concerned about com- + patibility with the escape sequences. + + The feature macro <STRONG>NCURSES_MOUSE_VERSION</STRONG> is provided so the preprocessor + can be used to test whether these features are present. If the inter- + face is changed, the value of <STRONG>NCURSES_MOUSE_VERSION</STRONG> will be increment- + ed. These values for <STRONG>NCURSES_MOUSE_VERSION</STRONG> may be specified when con- + figuring ncurses: + + 1 has definitions for reserved events. The mask uses 28 bits. + + 2 adds definitions for button 5, removes the definitions for re- + served events. The mask uses 29 bits. + + The order of the <STRONG>MEVENT</STRONG> structure members is not guaranteed. Addition- + al fields may be added to the structure in the future. + + Under <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, these calls are implemented using either xterm's + built-in mouse-tracking API or platform-specific drivers including + + <STRONG>o</STRONG> Alessandro Rubini's gpm server + + <STRONG>o</STRONG> FreeBSD sysmouse + + <STRONG>o</STRONG> OS/2 EMX + + If you are using an unsupported configuration, mouse events will not be + visible to <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> (and the <STRONG>mousemask</STRONG> function will always return + <STRONG>0</STRONG>). + + If the terminfo entry contains a <STRONG>XM</STRONG> string, this is used in the xterm + mouse driver to control the way the terminal is initialized for mouse + operation. The default, if <STRONG>XM</STRONG> is not found, corresponds to private + mode 1000 of xterm: + + \E[?1000%?%p1%{1}%=%th%el%; + + The mouse driver also recognizes a newer xterm private mode 1006, e.g., + + \E[?1006;1000%?%p1%{1}%=%th%el%; + + The <EM>z</EM> member in the event structure is not presently used. It is in- + tended for use with touch screens (which may be pressure-sensitive) or + with 3D-mice/trackballs/power gloves. + + The <STRONG>ALL_MOUSE_EVENTS</STRONG> class does not include <STRONG>REPORT_MOUSE_POSITION</STRONG>. + They are distinct. For example, in xterm, wheel/scrolling mice send + position reports as a sequence of presses of buttons 4 or 5 without + matching button-releases. + + +</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE> + Mouse events under xterm will not in fact be ignored during cooked + mode, if they have been enabled by <STRONG>mousemask</STRONG>. Instead, the xterm mouse + report sequence will appear in the string read. + + Mouse events under xterm will not be detected correctly in a window + with its keypad bit off, since they are interpreted as a variety of + function key. Your terminfo description should have <STRONG>kmous</STRONG> set to + "\E[M" (the beginning of the response from xterm for mouse clicks). + Other values for <STRONG>kmous</STRONG> are permitted, but under the same assumption, + i.e., it is the beginning of the response. + + Because there are no standard terminal responses that would serve to + identify terminals which support the xterm mouse protocol, <STRONG>ncurses</STRONG> as- + sumes that if <STRONG>kmous</STRONG> is defined in the terminal description, or if the + terminal description's primary name or aliases contain the string + "xterm", then the terminal may send mouse events. The <STRONG>kmous</STRONG> capability + is checked first, allowing the use of newer xterm mouse protocols such + as xterm's private mode 1006. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-mousemask">mousemask</a></li> +<li><a href="#h3-Mouse-events">Mouse events</a></li> +<li><a href="#h3-getmouse">getmouse</a></li> +<li><a href="#h3-ungetmouse">ungetmouse</a></li> +<li><a href="#h3-wenclose">wenclose</a></li> +<li><a href="#h3-wmouse_trafo">wmouse_trafo</a></li> +<li><a href="#h3-mouse_trafo">mouse_trafo</a></li> +<li><a href="#h3-mouseinterval">mouseinterval</a></li> +<li><a href="#h3-has_mouse">has_mouse</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-BUGS">BUGS</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_move.3x.html b/deps/ncurses-6.3/doc/html/man/curs_move.3x.html new file mode 100644 index 0000000..e2c6991 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_move.3x.html @@ -0,0 +1,102 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_move.3x,v 1.19 2020/10/24 09:39:41 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_move 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_move 3x</H1> +<PRE> +<STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>move</STRONG>, <STRONG>wmove</STRONG> - move <STRONG>curses</STRONG> window cursor + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>move(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wmove(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines move the cursor associated with the window to line <EM>y</EM> and + column <EM>x</EM>. This routine does not move the physical cursor of the termi- + nal until <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> is called. The position specified is relative to + the upper left-hand corner of the window, which is (0,0). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an + integer value other than <STRONG>ERR</STRONG>") upon successful completion. + + Specifically, they return an error if the window pointer is null, or if + the position is outside the window. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>move</STRONG> may be a macro. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_opaque.3x.html b/deps/ncurses-6.3/doc/html/man/curs_opaque.3x.html new file mode 100644 index 0000000..3515909 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_opaque.3x.html @@ -0,0 +1,163 @@ +<!-- + **************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-2014,2015 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. * + **************************************************************************** + * @Id: curs_opaque.3x,v 1.15 2020/10/24 09:41:22 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_opaque 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_opaque 3x</H1> +<PRE> +<STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>is_cleared</STRONG>, <STRONG>is_idlok</STRONG>, <STRONG>is_idcok</STRONG>, <STRONG>is_immedok</STRONG>, <STRONG>is_keypad</STRONG>, <STRONG>is_leaveok</STRONG>, + <STRONG>is_nodelay</STRONG>, <STRONG>is_notimeout</STRONG>, <STRONG>is_pad</STRONG>, <STRONG>is_scrollok</STRONG>, <STRONG>is_subwin</STRONG>, <STRONG>is_syncok</STRONG>, + <STRONG>wgetdelay</STRONG>, <STRONG>wgetparent</STRONG>, <STRONG>wgetscrreg</STRONG> - <STRONG>curses</STRONG> window properties + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>bool</STRONG> <STRONG>is_cleared(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_idcok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_idlok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_immedok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_keypad(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_leaveok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_nodelay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_notimeout(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_pad(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_scrollok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_subwin(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_syncok(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>wgetparent(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wgetdelay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wgetscrreg(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>bottom</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This implementation provides functions which return properties set in + the WINDOW structure, allowing it to be "opaque" if the symbol <STRONG>NCURS-</STRONG> + <STRONG>ES_OPAQUE</STRONG> is defined: + + <STRONG>is_cleared</STRONG> + returns the value set in <STRONG>clearok</STRONG> + + <STRONG>is_idcok</STRONG> + returns the value set in <STRONG>idcok</STRONG> + + <STRONG>is_idlok</STRONG> + returns the value set in <STRONG>idlok</STRONG> + + <STRONG>is_immedok</STRONG> + returns the value set in <STRONG>immedok</STRONG> + + <STRONG>is_keypad</STRONG> + returns the value set in <STRONG>keypad</STRONG> + + <STRONG>is_leaveok</STRONG> + returns the value set in <STRONG>leaveok</STRONG> + + <STRONG>is_nodelay</STRONG> + returns the value set in <STRONG>nodelay</STRONG> + + <STRONG>is_notimeout</STRONG> + returns the value set in <STRONG>notimeout</STRONG> + + <STRONG>is_pad</STRONG> + returns <STRONG>TRUE</STRONG> if the window is a pad i.e., created by <STRONG>newpad</STRONG> + + <STRONG>is_scrollok</STRONG> + returns the value set in <STRONG>scrollok</STRONG> + + <STRONG>is_subwin</STRONG> + returns <STRONG>TRUE</STRONG> if the window is a subwindow, i.e., created by <STRONG>subwin</STRONG> + or <STRONG>derwin</STRONG> + + <STRONG>is_syncok</STRONG> + returns the value set in <STRONG>syncok</STRONG> + + <STRONG>wgetdelay</STRONG> + returns the delay timeout as set in <STRONG>wtimeout</STRONG>. + + <STRONG>wgetparent</STRONG> + returns the parent WINDOW pointer for subwindows, or NULL for win- + dows having no parent. + + <STRONG>wgetscrreg</STRONG> + returns the top and bottom rows for the scrolling margin as set in + <STRONG>wsetscrreg</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Both a macro and a function are provided for each name. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on ncurses extensions be conditioned using NCURSES_VER- + SION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG>, <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_outopts.3x.html b/deps/ncurses-6.3/doc/html/man/curs_outopts.3x.html new file mode 100644 index 0000000..819134c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_outopts.3x.html @@ -0,0 +1,230 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_outopts.3x,v 1.33 2020/10/03 22:04:09 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_outopts 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_outopts 3x</H1> +<PRE> +<STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>clearok</STRONG>, <STRONG>idlok</STRONG>, <STRONG>idcok</STRONG>, <STRONG>immedok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, + <STRONG>scrollok</STRONG> - <STRONG>curses</STRONG> output options + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>clearok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>idlok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>idcok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>immedok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>leaveok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>scrollok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>setscrreg(int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wsetscrreg(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>top</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bot</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines set options that change the style of output within <STRONG>curs-</STRONG> + <STRONG>es</STRONG>. All options are initially <STRONG>FALSE</STRONG>, unless otherwise stated. It is + not necessary to turn these options off before calling <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG>. + + +</PRE><H3><a name="h3-clearok">clearok</a></H3><PRE> + If <STRONG>clearok</STRONG> is called with <STRONG>TRUE</STRONG> as argument, the next call to <STRONG>wrefresh</STRONG> + 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. If + the <EM>win</EM> argument to <STRONG>clearok</STRONG> is the global variable <STRONG>curscr</STRONG>, the next + call to <STRONG>wrefresh</STRONG> with any window causes the screen to be cleared and + repainted from scratch. + + +</PRE><H3><a name="h3-idlok">idlok</a></H3><PRE> + If <STRONG>idlok</STRONG> is called with <STRONG>TRUE</STRONG> as second argument, <STRONG>curses</STRONG> considers using + the hardware insert/delete line feature of terminals so equipped. + Calling <STRONG>idlok</STRONG> with <STRONG>FALSE</STRONG> as second argument disables use of line inser- + tion and deletion. This option should be enabled only if the applica- + tion needs insert/delete line, for example, for a screen editor. It is + disabled by default because insert/delete line tends to be visually an- + noying when used in applications where it is not really needed. If in- + sert/delete line cannot be used, <STRONG>curses</STRONG> redraws the changed portions of + all lines. + + +</PRE><H3><a name="h3-idcok">idcok</a></H3><PRE> + If <STRONG>idcok</STRONG> is called with <STRONG>FALSE</STRONG> as second argument, <STRONG>curses</STRONG> no longer con- + siders using the hardware insert/delete character feature of terminals + so equipped. Use of character insert/delete is enabled by default. + Calling <STRONG>idcok</STRONG> with <STRONG>TRUE</STRONG> as second argument re-enables use of character + insertion and deletion. + + +</PRE><H3><a name="h3-immedok">immedok</a></H3><PRE> + If <STRONG>immedok</STRONG> is called with <STRONG>TRUE</STRONG> <STRONG>as</STRONG> <STRONG>argument</STRONG>, any change in the window + image, such as the ones caused by <STRONG>waddch,</STRONG> <STRONG>wclrtobot,</STRONG> <STRONG>wscrl</STRONG>, etc., auto- + matically cause a call to <STRONG>wrefresh</STRONG>. However, it may degrade perfor- + mance considerably, due to repeated calls to <STRONG>wrefresh</STRONG>. It is disabled + by default. + + +</PRE><H3><a name="h3-leaveok">leaveok</a></H3><PRE> + Normally, the hardware cursor is left at the location of the window + cursor being refreshed. The <STRONG>leaveok</STRONG> option allows the cursor to be + left wherever the update happens to leave it. It is useful for appli- + cations where the cursor is not used, since it reduces the need for + cursor motions. + + +</PRE><H3><a name="h3-scrollok">scrollok</a></H3><PRE> + The <STRONG>scrollok</STRONG> 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 char- + acter of the last line. If disabled, (<EM>bf</EM> is <STRONG>FALSE</STRONG>), the cursor is left + on the bottom line. If enabled, (<EM>bf</EM> is <STRONG>TRUE</STRONG>), the window is scrolled + up one line (Note that to get the physical scrolling effect on the ter- + minal, it is also necessary to call <STRONG>idlok</STRONG>). + + +</PRE><H3><a name="h3-setscrreg_wsetscrreg">setscrreg/wsetscrreg</a></H3><PRE> + The <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> routines allow the application programmer + to set a software scrolling region in a window. The <EM>top</EM> and <EM>bot</EM> param- + eters 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 op- + tion and <STRONG>scrollok</STRONG> 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 <STRONG>idlok</STRONG> is + enabled and the terminal has either a scrolling region or insert/delete + line capability, they will probably be used by the output routines.) + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The functions <STRONG>setscrreg</STRONG> and <STRONG>wsetscrreg</STRONG> return <STRONG>OK</STRONG> upon success and <STRONG>ERR</STRONG> + upon failure. All other routines that return an integer always return + <STRONG>OK</STRONG>. + + X/Open Curses does not define any error conditions. + + In this implementation, + + <STRONG>o</STRONG> those functions that have a window pointer will return an error if + the window pointer is null + + <STRONG>o</STRONG> <STRONG>wsetscrreg</STRONG> returns an error if the scrolling region limits extend + outside the window. + + X/Open does not define any error conditions. This implementation re- + turns an error if the window pointer is null. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are described in the XSI Curses standard, Issue 4. + + From the outset, ncurses used <STRONG>nl</STRONG>/<STRONG>nonl</STRONG> to control the conversion of new- + lines to carriage return/line-feed on output as well as input. XSI + Curses documents only the use of these functions for input. This dif- + ference arose from converting the <EM>pcurses</EM> source (which used <STRONG>ioctl</STRONG> + calls with the <STRONG>sgttyb</STRONG> structure) to termios (i.e., the POSIX terminal + interface). In the former, both input and output were controlled via a + single option <STRONG>CRMOD</STRONG>, while the latter separates these features. Be- + cause that conversion interferes with output optimization, <STRONG>nl</STRONG>/<STRONG>nonl</STRONG> were + amended after ncurses 6.2 to eliminate their effect on output. + + Some historic curses implementations had, as an undocumented feature, + the ability to do the equivalent of <STRONG>clearok(...,</STRONG> <STRONG>1)</STRONG> by saying <STRONG>touch-</STRONG> + <STRONG>win(stdscr)</STRONG> or <STRONG>clear(stdscr)</STRONG>. This will not work under ncurses. + + Earlier System V curses implementations specified that with <STRONG>scrollok</STRONG> + enabled, any window modification triggering a scroll also forced a + physical refresh. XSI Curses does not require this, and <STRONG>ncurses</STRONG> avoids + doing it to perform better vertical-motion optimization at <STRONG>wrefresh</STRONG> + time. + + The XSI Curses standard does not mention that the cursor should be made + invisible as a side-effect of <STRONG>leaveok</STRONG>. SVr4 curses documentation does + this, but the code does not. Use <STRONG>curs_set</STRONG> to make the cursor invisi- + ble. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>clearok</STRONG>, <STRONG>leaveok</STRONG>, <STRONG>scrollok</STRONG>, <STRONG>idcok</STRONG>, and <STRONG>setscrreg</STRONG> may be + macros. + + The <STRONG>immedok</STRONG> routine is useful for windows that are used as terminal em- + ulators. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>, <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, + <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-clearok">clearok</a></li> +<li><a href="#h3-idlok">idlok</a></li> +<li><a href="#h3-idcok">idcok</a></li> +<li><a href="#h3-immedok">immedok</a></li> +<li><a href="#h3-leaveok">leaveok</a></li> +<li><a href="#h3-scrollok">scrollok</a></li> +<li><a href="#h3-setscrreg_wsetscrreg">setscrreg/wsetscrreg</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_overlay.3x.html b/deps/ncurses-6.3/doc/html/man/curs_overlay.3x.html new file mode 100644 index 0000000..31d8ed9 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_overlay.3x.html @@ -0,0 +1,128 @@ +<!-- + **************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2013,2015 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. * + **************************************************************************** + * @Id: curs_overlay.3x,v 1.19 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_overlay 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_overlay 3x</H1> +<PRE> +<STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>overlay</STRONG>, <STRONG>overwrite</STRONG>, <STRONG>copywin</STRONG> - overlay and manipulate overlapped <STRONG>curses</STRONG> + windows + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>overlay(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>overwrite(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>copywin(const</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>srcwin</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>dstwin</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dmincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>dmaxrow</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>dmaxcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>overlay</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-overlay_-overwrite">overlay, overwrite</a></H3><PRE> + The <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines overlay <EM>srcwin</EM> on top of <EM>dstwin</EM>. + <EM>scrwin</EM> and <EM>dstwin</EM> are not required to be the same size; only text where + the two windows overlap is copied. The difference is that <STRONG>overlay</STRONG> is + non-destructive (blanks are not copied) whereas <STRONG>overwrite</STRONG> is destruc- + tive. + + +</PRE><H3><a name="h3-copywin">copywin</a></H3><PRE> + The <STRONG>copywin</STRONG> routine provides a finer granularity of control over the + <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> routines. As in the <STRONG>prefresh</STRONG> routine, a rectan- + gle is specified in the destination window, (<EM>dminrow</EM>, <EM>dmincol</EM>) and + (<EM>dmaxrow</EM>, <EM>dmaxcol</EM>), and the upper-left-corner coordinates of the source + window, (<EM>sminrow</EM>, <EM>smincol</EM>). If the argument <EM>overlay</EM> is <STRONG>true</STRONG>, then + copying is non-destructive, as in <STRONG>overlay</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return an integer return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4 + only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com- + pletion. + + X/Open defines no error conditions. In this implementation, <STRONG>copywin</STRONG>, + <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> return an error if either of the window pointers + are null, or if some part of the window would be placed off-screen. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>overlay</STRONG> and <STRONG>overwrite</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses standard, Issue 4 describes these functions (adding the + const qualifiers). It further specifies their behavior in the presence + of characters with multibyte renditions (not yet supported in this im- + plementation). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-overlay_-overwrite">overlay, overwrite</a></li> +<li><a href="#h3-copywin">copywin</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_pad.3x.html b/deps/ncurses-6.3/doc/html/man/curs_pad.3x.html new file mode 100644 index 0000000..dbd8f63 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_pad.3x.html @@ -0,0 +1,257 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: curs_pad.3x,v 1.26 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_pad 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_pad 3x</H1> +<PRE> +<STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>newpad</STRONG>, <STRONG>subpad</STRONG>, <STRONG>prefresh</STRONG>, <STRONG>pnoutrefresh</STRONG>, <STRONG>pechochar</STRONG>, <STRONG>pecho_wchar</STRONG> - create + and display <STRONG>curses</STRONG> pads + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>WINDOW</STRONG> <STRONG>*newpad(int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*subpad(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>prefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>pnoutrefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pmincol</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>sminrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smincol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>smaxcol</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>pechochar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>pecho_wchar(WINDOW</STRONG> <STRONG>*</STRONG><EM>pad</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>wch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-newpad">newpad</a></H3><PRE> + The <STRONG>newpad</STRONG> routine creates and returns a pointer to a new pad data + structure with the given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>. + A pad is like a window, except that it is not restricted by the screen + size, and is not necessarily associated with a particular part of the + screen. Pads can be used when a large window is needed, and only a + part of the window will be on the screen at one time. Automatic re- + freshes of pads (e.g., from scrolling or echoing of input) do not oc- + cur. + + It is not legal to call <STRONG>wrefresh</STRONG> with a <EM>pad</EM> as an argument; the rou- + tines <STRONG>prefresh</STRONG> or <STRONG>pnoutrefresh</STRONG> should be called instead. Note that + these routines require additional parameters to specify the part of the + pad to be displayed and the location on the screen to be used for the + display. + + +</PRE><H3><a name="h3-subpad">subpad</a></H3><PRE> + The <STRONG>subpad</STRONG> routine creates and returns a pointer to a subwindow within + a pad with the given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>. Un- + like <STRONG>subwin</STRONG>, which uses screen coordinates, the window is at position + (<EM>begin</EM>_<EM>x</EM><STRONG>,</STRONG> <EM>begin</EM>_<EM>y</EM>) on the pad. The window is made in the middle of the + window <EM>orig</EM>, so that changes made to one window affect both windows. + During the use of this routine, it will often be necessary to call + <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>prefresh</STRONG>. + + +</PRE><H3><a name="h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></H3><PRE> + The <STRONG>prefresh</STRONG> and <STRONG>pnoutrefresh</STRONG> routines are analogous to <STRONG>wrefresh</STRONG> and + <STRONG>wnoutrefresh</STRONG> except that they relate to pads instead of windows. The + additional parameters are needed to indicate what part of the pad and + screen are involved. + + <STRONG>o</STRONG> The <EM>pminrow</EM> and <EM>pmincol</EM> parameters specify the upper left-hand cor- + ner of the rectangle to be displayed in the pad. + + <STRONG>o</STRONG> The <EM>sminrow</EM>, <EM>smincol</EM>, <EM>smaxrow</EM>, and <EM>smaxcol</EM> parameters specify the + edges of the rectangle to be displayed on the screen. + + The lower right-hand corner of the rectangle to be displayed in the pad + is calculated from the screen coordinates, since the rectangles must be + the same size. Both rectangles must be entirely contained within their + respective structures. Negative values of <EM>pminrow</EM>, <EM>pmincol</EM>, <EM>sminrow</EM>, + or <EM>smincol</EM> are treated as if they were zero. + + +</PRE><H3><a name="h3-pechochar">pechochar</a></H3><PRE> + The <STRONG>pechochar</STRONG> routine is functionally equivalent to a call to <STRONG>addch</STRONG> + followed by a call to <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>, a call to <STRONG>waddch</STRONG> followed by a call + to <STRONG>wrefresh</STRONG>, or a call to <STRONG>waddch</STRONG> followed by a call to <STRONG>prefresh</STRONG>. The + knowledge that only a single character is being output is taken into + consideration and, for non-control characters, a considerable perfor- + mance gain might be seen by using these routines instead of their + equivalents. In the case of <STRONG>pechochar</STRONG>, the last location of the pad on + the screen is reused for the arguments to <STRONG>prefresh</STRONG>. + + +</PRE><H3><a name="h3-pecho_wchar">pecho_wchar</a></H3><PRE> + The <STRONG>pecho_wchar</STRONG> function is the analogous wide-character form of <STRONG>pe-</STRONG> + <STRONG>chochar</STRONG>. It outputs one character to a pad and immediately refreshes + the pad. It does this by a call to <STRONG>wadd_wch</STRONG> followed by a call to <STRONG>pre-</STRONG> + <STRONG>fresh</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 + only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com- + pletion. + + Routines that return pointers return <STRONG>NULL</STRONG> on error, and set <STRONG>errno</STRONG> to + <STRONG>ENOMEM</STRONG>. + + X/Open does not define any error conditions. In this implementation + + <STRONG>prefresh</STRONG> and <STRONG>pnoutrefresh</STRONG> + return an error 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 maxi- + mum. + + <STRONG>pechochar</STRONG> + returns an error if the window is not really a pad, and the as- + sociated call to <STRONG>wechochar</STRONG> returns an error. + + <STRONG>pecho_wchar</STRONG> + returns an error if the window is not really a pad, and the as- + sociated call to <STRONG>wecho_wchar</STRONG> returns an error. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>pechochar</STRONG> may be a macro. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + BSD curses has no <EM>pad</EM> feature. + + SVr2 curses (1986) provided the <STRONG>newpad</STRONG> and related functions, document- + ing them in a single line each. SVr3 (1987) provided more extensive + documentation. + + The documentation does not explain the term <EM>pad</EM>. However, the Apollo + <EM>Aegis</EM> workstation operating system supported a graphical <EM>pad</EM> feature: + + <STRONG>o</STRONG> These graphical pads could be much larger than the computer's dis- + play. + + <STRONG>o</STRONG> The read-only output from a command could be scrolled back to in- + spect, and select text from the pad. + + The two uses may be related. + + The XSI Curses standard, Issue 4 describes these functions, without + significant change from the SVr3 documentation. It describes no error + conditions. The behavior of <STRONG>subpad</STRONG> if the parent window is not a pad + is undocumented, and is not checked by the vendor Unix implementations: + + <STRONG>o</STRONG> SVr4 curses sets a flag in the <STRONG>WINDOW</STRONG> structure in <STRONG>newpad</STRONG> which + tells if the window is a <EM>pad</EM>. + + However, it uses this information only in <STRONG>waddch</STRONG> (to decide if it + should call <STRONG>wrefresh</STRONG>) and <STRONG>wscrl</STRONG> (to avoid scrolling a pad), and + does not check in <STRONG>wrefresh</STRONG> to ensure that the pad is refreshed + properly. + + <STRONG>o</STRONG> Solaris X/Open Curses checks if a window is a pad in <STRONG>wnoutrefresh</STRONG>, + returning <STRONG>ERR</STRONG> in that case. + + However, it only sets the flag for subwindows if the parent window + is a pad. Its <STRONG>newpad</STRONG> function does not set this information. Con- + sequently, the check will never fail. + + It makes no comparable check in <STRONG>pnoutrefresh</STRONG>, though interestingly + enough, a comment in the source code states that the lack of a + check was an MKS extension. + + <STRONG>o</STRONG> NetBSD 7 curses sets a flag in the <STRONG>WINDOW</STRONG> structure for <STRONG>newpad</STRONG> and + <STRONG>subpad</STRONG>, using this to help with the distinction between <STRONG>wnoutre-</STRONG> + <STRONG>fresh</STRONG> and <STRONG>pnoutrefresh</STRONG>. + + It does not check for the case where a subwindow is created in a + pad using <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG>. + + The <STRONG>dupwin</STRONG> function returns a regular window when duplicating a + pad. Likewise, <STRONG>getwin</STRONG> always returns a window, even if the saved + data was from a pad. + + This implementation + + <STRONG>o</STRONG> sets a flag in the <STRONG>WINDOW</STRONG> structure for <STRONG>newpad</STRONG> and <STRONG>subpad</STRONG>, + + <STRONG>o</STRONG> allows a <STRONG>subwin</STRONG> or <STRONG>derwin</STRONG> call to succeed having a pad parent by + forcing the subwindow to be a pad, + + <STRONG>o</STRONG> checks in both <STRONG>wnoutrefresh</STRONG> and <STRONG>pnoutrefresh</STRONG> to ensure that pads + and windows are handled distinctly, and + + <STRONG>o</STRONG> ensures that <STRONG>dupwin</STRONG> and <STRONG>getwin</STRONG> treat pads versus windows consis- + tently. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>, <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-newpad">newpad</a></li> +<li><a href="#h3-subpad">subpad</a></li> +<li><a href="#h3-prefresh_-pnoutrefresh">prefresh, pnoutrefresh</a></li> +<li><a href="#h3-pechochar">pechochar</a></li> +<li><a href="#h3-pecho_wchar">pecho_wchar</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_print.3x.html b/deps/ncurses-6.3/doc/html/man/curs_print.3x.html new file mode 100644 index 0000000..52f1491 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_print.3x.html @@ -0,0 +1,115 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_print.3x,v 1.16 2020/10/24 09:25:14 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_print 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_print 3x</H1> +<PRE> +<STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>mcprint</STRONG> - ship binary data to printer + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>mcprint(char</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>len</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This function uses the <STRONG>mc5p</STRONG> or <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities, if they are + present, to ship given data to a printer attached to the terminal. + + Note that the <STRONG>mcprint</STRONG> 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). 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. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The <STRONG>mcprint</STRONG> function returns <STRONG>ERR</STRONG> if the write operation aborted for + some reason. In this case, <STRONG>errno</STRONG> will contain either an error + associated with <STRONG>write(2)</STRONG> or one of the following: + + ENODEV + Capabilities for printer redirection do not exist. + + ENOMEM + Couldn't allocate sufficient memory to buffer the printer write. + + When <STRONG>mcprint</STRONG> succeeds, it returns the number of characters actually + sent to the printer. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The <STRONG>mcprint</STRONG> call was designed for <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>, and is not found in SVr4 + curses, 4.4BSD curses, or any other previous version of curses. + + +</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE> + Padding in the <STRONG>mc5p</STRONG>, <STRONG>mc4</STRONG> and <STRONG>mc5</STRONG> capabilities will not be interpreted. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-BUGS">BUGS</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_printw.3x.html b/deps/ncurses-6.3/doc/html/man/curs_printw.3x.html new file mode 100644 index 0000000..6028260 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_printw.3x.html @@ -0,0 +1,159 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_printw.3x,v 1.28 2020/10/24 09:22:45 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_printw 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_printw 3x</H1> +<PRE> +<STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG>, <STRONG>mvwprintw</STRONG>, <STRONG>vwprintw</STRONG>, <STRONG>vw_printw</STRONG> - print + formatted output in <STRONG>curses</STRONG> windows + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>printw(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>wprintw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>mvprintw(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwprintw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>vw_printw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG> + + /* obsolete */ + <STRONG>int</STRONG> <STRONG>vwprintw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG>, <STRONG>mvprintw</STRONG> and <STRONG>mvwprintw</STRONG> routines are analogous to + <STRONG>printf</STRONG> [see <STRONG>printf(3)</STRONG>]. In effect, the string that would be output by + <STRONG>printf</STRONG> is output instead as though <STRONG>waddstr</STRONG> were used on the given win- + dow. + + The <STRONG>vwprintw</STRONG> and <STRONG>vw_printw</STRONG> routines are analogous to <STRONG>vprintf</STRONG> [see + <STRONG>printf(3)</STRONG>] and perform a <STRONG>wprintw</STRONG> using a variable argument list. The + third argument is a <STRONG>va_list</STRONG>, a pointer to a list of arguments, as de- + fined in <STRONG>&lt;stdarg.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 + only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com- + pletion. + + X/Open defines no error conditions. In this implementation, an error + may be returned if it cannot allocate enough memory for the buffer used + to format the results. It will return an error if the window pointer + is null. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + While <STRONG>printw</STRONG> was implemented in 4BSD, it was unused until 4.2BSD (which + used it in games). That early version of curses was before the ANSI C + standard. It did not use &lt;varargs.h&gt;, though that was available. In + 1991 (a couple of years after SVr4 was generally available, and after + the C standard was published), other developers updated the library, + using &lt;stdarg.h&gt; internally in 4.4BSD curses. Even with this improve- + ment, BSD curses did not use function prototypes (or even declare func- + tions) in the &lt;curses.h&gt; header until 1992. + + SVr2 documented <STRONG>printw</STRONG>, <STRONG>wprintw</STRONG> tersely as "printf on <EM>stdscr</EM>" and + tersely as "printf on <EM>win</EM>", respectively. + + SVr3 added <STRONG>mvprintw</STRONG>, and <STRONG>mvwprintw</STRONG>, with a three-line summary saying + that they were analogous to <STRONG>printf(3)</STRONG>, explaining that the string which + would be output from <STRONG>printf(3)</STRONG> would instead be output using <STRONG>waddstr</STRONG> on + the given window. SVr3 also added <STRONG>vwprintw</STRONG>, saying that the third pa- + rameter is a <STRONG>va_list</STRONG>, defined in &lt;varargs.h&gt;, and referring the reader + to the manual pages for <EM>varargs</EM> and <EM>vprintf</EM> for detailed descriptions. + + SVr4 added no new variations of <STRONG>printw</STRONG>, but provided for using + &lt;varargs.h&gt; or &lt;stdarg.h&gt; to define the <STRONG>va_list</STRONG> type. + + X/Open Curses added <STRONG>vw_printw</STRONG> to replace <STRONG>vwprintw</STRONG>, stating that its + <STRONG>va_list</STRONG> definition requires &lt;stdarg.h&gt;. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + In this implementation, <STRONG>vw_printw</STRONG> and <STRONG>vwprintw</STRONG> are equivalent, to sup- + port legacy applications. However, the latter (<STRONG>vwprintw</STRONG>) is obsolete: + + <STRONG>o</STRONG> The XSI Curses standard, Issue 4 described these functions. The + function <STRONG>vwprintw</STRONG> is marked TO BE WITHDRAWN, and is to be replaced + by a function <STRONG>vw_printw</STRONG> using the <STRONG>&lt;stdarg.h&gt;</STRONG> interface. + + <STRONG>o</STRONG> The Single Unix Specification, Version 2 states that <STRONG>vw_printw</STRONG> is + preferred to <STRONG>vwprintw</STRONG> since the latter requires including + <STRONG>&lt;varargs.h&gt;</STRONG>, which cannot be used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>. + This implementation uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because that header + is included in <STRONG>&lt;curses.h</STRONG>&gt;. + + <STRONG>o</STRONG> X/Open Curses, Issue 5 (December 2007) marked <STRONG>vwprintw</STRONG> (along with + <STRONG>vwscanw</STRONG> and the termcap interface) as withdrawn. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG>, <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, + <STRONG>printf(3)</STRONG>, <STRONG>vprintf(3)</STRONG>. + + + + <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_refresh.3x.html b/deps/ncurses-6.3/doc/html/man/curs_refresh.3x.html new file mode 100644 index 0000000..035591d --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_refresh.3x.html @@ -0,0 +1,182 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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. * + **************************************************************************** + * @Id: curs_refresh.3x,v 1.22 2020/10/24 09:43:49 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_refresh 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_refresh 3x</H1> +<PRE> +<STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>doupdate</STRONG>, <STRONG>redrawwin</STRONG>, <STRONG>refresh</STRONG>, <STRONG>wnoutrefresh</STRONG>, <STRONG>wredrawln</STRONG>, <STRONG>wrefresh</STRONG> - + refresh <STRONG>curses</STRONG> windows and lines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>refresh(void);</STRONG> + <STRONG>int</STRONG> <STRONG>wrefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wnoutrefresh(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>doupdate(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>redrawwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wredrawln(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>beg</EM><STRONG>_</STRONG><EM>line</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>num</EM><STRONG>_</STRONG><EM>lines</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-refresh_wrefresh">refresh/wrefresh</a></H3><PRE> + The <STRONG>refresh</STRONG> and <STRONG>wrefresh</STRONG> routines (or <STRONG>wnoutrefresh</STRONG> and <STRONG>doupdate</STRONG>) must + be called to get actual output to the terminal, as other routines mere- + ly manipulate data structures. The routine <STRONG>wrefresh</STRONG> copies the named + window to the <EM>physical</EM> <EM>screen</EM>, taking into account what is already + there to do optimizations. The <STRONG>refresh</STRONG> routine is the same, using <STRONG>std-</STRONG> + <STRONG>scr</STRONG> as the default window. Unless <STRONG>leaveok</STRONG> has been enabled, the physi- + cal cursor of the terminal is left at the location of the cursor for + that window. + + +</PRE><H3><a name="h3-wnoutrefresh_doupdate">wnoutrefresh/doupdate</a></H3><PRE> + The <STRONG>wnoutrefresh</STRONG> and <STRONG>doupdate</STRONG> routines allow multiple updates with more + efficiency than <STRONG>wrefresh</STRONG> alone. In addition to all the window struc- + tures, <STRONG>curses</STRONG> keeps two data structures representing the terminal + screen: + + <STRONG>o</STRONG> a <EM>physical</EM> <EM>screen</EM>, describing what is actually on the screen, and + + <STRONG>o</STRONG> a <EM>virtual</EM> <EM>screen</EM>, describing what the programmer wants to have on + the screen. + + The routine <STRONG>wrefresh</STRONG> works by + + <STRONG>o</STRONG> first calling <STRONG>wnoutrefresh</STRONG>, which copies the named window to the + <EM>virtual</EM> <EM>screen</EM>, and + + <STRONG>o</STRONG> then calling <STRONG>doupdate</STRONG>, which compares the <EM>virtual</EM> <EM>screen</EM> to the + <EM>physical</EM> <EM>screen</EM> and does the actual update. + + If the programmer wishes to output several windows at once, a series of + calls to <STRONG>wrefresh</STRONG> results in alternating calls to <STRONG>wnoutrefresh</STRONG> and + <STRONG>doupdate</STRONG>, causing several bursts of output to the screen. By first + calling <STRONG>wnoutrefresh</STRONG> for each window, it is then possible to call <STRONG>doup-</STRONG> + <STRONG>date</STRONG> once, resulting in only one burst of output, with fewer total + characters transmitted and less CPU time used. + + If the <EM>win</EM> argument to <STRONG>wrefresh</STRONG> is the <EM>physical</EM> <EM>screen</EM> (i.e., the glob- + al variable <STRONG>curscr</STRONG>), the screen is immediately cleared and repainted + from scratch. + + The phrase "copies the named window to the virtual screen" above is am- + biguous. What actually happens is that all <EM>touched</EM> (changed) lines in + the window are copied to the virtual screen. This affects programs + that use overlapping windows; it means that if two windows overlap, you + can refresh them in either order and the overlap region will be modi- + fied only when it is explicitly changed. (But see the section on + <STRONG>PORTABILITY</STRONG> below for a warning about exploiting this behavior.) + + +</PRE><H3><a name="h3-wredrawln_redrawwin">wredrawln/redrawwin</a></H3><PRE> + The <STRONG>wredrawln</STRONG> routine indicates to <STRONG>curses</STRONG> that some screen lines are + corrupted and should be thrown away before anything is written over + them. It touches the indicated lines (marking them changed). The rou- + tine <STRONG>redrawwin</STRONG> touches the entire window. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return an integer return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4 + only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com- + pletion. + + X/Open does not define any error conditions. In this implementation + + <STRONG>wnoutrefresh</STRONG> + returns an error if the window pointer is null, or if the win- + dow is really a pad. + + <STRONG>wredrawln</STRONG> + returns an error if the associated call to <STRONG>touchln</STRONG> returns an + error. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>refresh</STRONG> and <STRONG>redrawwin</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses standard, Issue 4 describes these functions. + + Whether <STRONG>wnoutrefresh</STRONG> copies to the virtual screen the entire contents + of a window or just its changed portions has never been well-documented + in historic curses versions (including SVr4). It might 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 <STRONG>touchwin</STRONG> + before the <STRONG>wnoutrefresh</STRONG> call to guarantee an entire-contents copy any- + where. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-refresh_wrefresh">refresh/wrefresh</a></li> +<li><a href="#h3-wnoutrefresh_doupdate">wnoutrefresh/doupdate</a></li> +<li><a href="#h3-wredrawln_redrawwin">wredrawln/redrawwin</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_scanw.3x.html b/deps/ncurses-6.3/doc/html/man/curs_scanw.3x.html new file mode 100644 index 0000000..d011449 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_scanw.3x.html @@ -0,0 +1,180 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_scanw.3x,v 1.28 2020/10/24 09:29:26 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_scanw 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_scanw 3x</H1> +<PRE> +<STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG>, <STRONG>mvwscanw</STRONG>, <STRONG>vwscanw</STRONG>, <STRONG>vw_scanw</STRONG> - convert formatted + input from a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>scanw(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>wscanw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>mvscanw(int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwscanw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + + <STRONG>int</STRONG> <STRONG>vw_scanw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG> + + /* obsolete */ + <STRONG>int</STRONG> <STRONG>vwscanw(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>fmt</EM><STRONG>,</STRONG> <STRONG>va_list</STRONG> <EM>varglist</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> and <STRONG>mvscanw</STRONG> routines are analogous to <STRONG>scanf</STRONG> [see + <STRONG>scanf(3)</STRONG>]. The effect of these routines is as though <STRONG>wgetstr</STRONG> were + called on the window, and the resulting line used as input for + <STRONG>sscanf(3)</STRONG>. Fields which do not map to a variable in the <EM>fmt</EM> field are + lost. + + The <STRONG>vwscanw</STRONG> and <STRONG>vw_scanw</STRONG> routines are analogous to <STRONG>vscanf(3)</STRONG>. They + perform a <STRONG>wscanw</STRONG> using a variable argument list. The third argument is + a <EM>va</EM><STRONG>_</STRONG><EM>list</EM>, a pointer to a list of arguments, as defined in <STRONG>&lt;stdarg.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>vwscanw</STRONG> returns <STRONG>ERR</STRONG> on failure and an integer equal to the number of + fields scanned on success. + + Applications may use the return value from the <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG>, <STRONG>mvscanw</STRONG> + and <STRONG>mvwscanw</STRONG> routines to determine the number of fields which were + mapped in the call. + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + While <STRONG>scanw</STRONG> was implemented in 4BSD, none of the BSD releases used it + until 4.4BSD (in a game). That early version of curses was before the + ANSI C standard. It did not use &lt;varargs.h&gt;, though that was + available. In 1991 (a couple of years after SVr4 was generally + available, and after the C standard was published), other developers + updated the library, using &lt;stdarg.h&gt; internally in 4.4BSD curses. + Even with this improvement, BSD curses did not use function prototypes + (or even declare functions) in the &lt;curses.h&gt; header until 1992. + + SVr2 documented <STRONG>scanw</STRONG>, <STRONG>wscanw</STRONG> tersely as "scanf through <EM>stdscr</EM>" and + tersely as "scanf through <EM>win</EM>", respectively. + + SVr3 added <STRONG>mvscanw</STRONG>, and <STRONG>mvwscanw</STRONG>, with a three-line summary saying that + they were analogous to <STRONG>scanf(3)</STRONG>, explaining that the string which would + be output from <STRONG>scanf(3)</STRONG> would instead be output using <STRONG>waddstr</STRONG> on the + given window. SVr3 also added <STRONG>vwscanw</STRONG>, saying that the third parameter + is a <STRONG>va_list</STRONG>, defined in &lt;varargs.h&gt;, and referring the reader to the + manual pages for <EM>varargs</EM> and <EM>vprintf</EM> for detailed descriptions. + (Because the SVr3 documentation does not mention <EM>vscanf</EM>, that reference + to <EM>vprintf</EM> may not be an error). + + SVr4 added no new variations of <STRONG>scanw</STRONG>, but provided for using + &lt;varargs.h&gt; or &lt;stdarg.h&gt; to define the <STRONG>va_list</STRONG> type. + + X/Open Curses added <STRONG>vw_scanw</STRONG> to replace <STRONG>vwscanw</STRONG>, stating that its + <STRONG>va_list</STRONG> definition requires &lt;stdarg.h&gt;. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + In this implementation, <STRONG>vw_scanw</STRONG> and <STRONG>vwscanw</STRONG> are equivalent, to support + legacy applications. However, the latter (<STRONG>vwscanw</STRONG>) is obsolete: + + <STRONG>o</STRONG> The XSI Curses standard, Issue 4 described these functions, noting + that the function <STRONG>vwscanw</STRONG> is marked TO BE WITHDRAWN, and is to be + replaced by a function <STRONG>vw_scanw</STRONG> using the <STRONG>&lt;stdarg.h&gt;</STRONG> interface. + + <STRONG>o</STRONG> The Single Unix Specification, Version 2 states that <STRONG>vw_scanw</STRONG> is + preferred to <STRONG>vwscanw</STRONG> since the latter requires including + <STRONG>&lt;varargs.h&gt;</STRONG>, which cannot be used in the same file as <STRONG>&lt;stdarg.h&gt;</STRONG>. + This implementation uses <STRONG>&lt;stdarg.h&gt;</STRONG> for both, because that header + is included in <STRONG>&lt;curses.h</STRONG>&gt;. + + <STRONG>o</STRONG> X/Open Curses, Issue 5 (December 2007) marked <STRONG>vwscanw</STRONG> (along with + <STRONG>vwprintw</STRONG> and the termcap interface) as withdrawn. + + Both XSI and The Single Unix Specification, Version 2 state that these + functions return <STRONG>ERR</STRONG> or <STRONG>OK</STRONG>. + + <STRONG>o</STRONG> Since the underlying <STRONG>scanf(3)</STRONG> can return the number of items + scanned, and the SVr4 code was documented to use this feature, this + is probably an editing error which was introduced in XSI, rather + than being done intentionally. + + <STRONG>o</STRONG> This implementation returns the number of items scanned, for + compatibility with SVr4 curses. As of 2018, NetBSD curses also + returns the number of items scanned. Both ncurses and NetBSD + curses call <STRONG>vsscanf</STRONG> to scan the string, which returns <STRONG>EOF</STRONG> on error. + + <STRONG>o</STRONG> Portable applications should only test if the return value is <STRONG>ERR</STRONG>, + since the <STRONG>OK</STRONG> value (zero) is likely to be misleading. + + One possible way to get useful results would be to use a "%n" + conversion at the end of the format string to ensure that something + was processed. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG>, <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, + <STRONG>scanf(3)</STRONG>. + + + + <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_scr_dump.3x.html b/deps/ncurses-6.3/doc/html/man/curs_scr_dump.3x.html new file mode 100644 index 0000000..71bc263 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_scr_dump.3x.html @@ -0,0 +1,150 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: curs_scr_dump.3x,v 1.17 2021/10/20 22:37:48 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_scr_dump 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_scr_dump 3x</H1> +<PRE> +<STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>scr_dump</STRONG>, <STRONG>scr_restore</STRONG>, <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG> - read (write) a <STRONG>curses</STRONG> screen + from (to) a file + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>scr_dump(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>scr_restore(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>scr_init(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>scr_set(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-scr_dump">scr_dump</a></H3><PRE> + The <STRONG>scr_dump</STRONG> routine dumps the current contents of the <EM>virtual</EM> <EM>screen</EM> + to the file <EM>filename</EM>. + + +</PRE><H3><a name="h3-scr_restore">scr_restore</a></H3><PRE> + The <STRONG>scr_restore</STRONG> routine sets the <EM>virtual</EM> <EM>screen</EM> to the contents of + <EM>filename</EM>, which must have been written using <STRONG>scr_dump</STRONG>. The next call + to <STRONG>doupdate</STRONG> restores the <EM>physical</EM> <EM>screen</EM> to the way it looked in the + dump file. + + +</PRE><H3><a name="h3-scr_init">scr_init</a></H3><PRE> + The <STRONG>scr_init</STRONG> routine reads in the contents of <EM>filename</EM> and uses them to + initialize the <STRONG>curses</STRONG> data structures about what the terminal currently + has on its screen. If the data is determined to be valid, <STRONG>curses</STRONG> bases + its next update of the screen on this information rather than clearing + the screen and starting from scratch. <STRONG>scr_init</STRONG> is used after <STRONG>initscr</STRONG> + or a <STRONG>system</STRONG> call to share the screen with another process which has + done a <STRONG>scr_dump</STRONG> after its <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> call. The data is declared in- + valid + + <STRONG>o</STRONG> if the terminfo capabilities <STRONG>rmcup</STRONG> and <STRONG>nrrmc</STRONG> exist, also + + <STRONG>o</STRONG> if the terminal has been written to since the preceding <STRONG>scr_dump</STRONG> + call. + + +</PRE><H3><a name="h3-scr_set">scr_set</a></H3><PRE> + The <STRONG>scr_set</STRONG> routine is a combination of <STRONG>scr_restore</STRONG> and <STRONG>scr_init</STRONG>. It + tells the program that the information in <EM>filename</EM> 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. + + To read (write) a window from (to) a file, use the <STRONG>getwin</STRONG> and <STRONG>putwin</STRONG> + routines [see <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>]. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> upon success. + + X/Open defines no error conditions. In this implementation, each will + return an error if the file cannot be opened. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>, and <STRONG>scr_restore</STRONG> may be macros. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses standard, Issue 4, describes these functions (adding the + const qualifiers). + + The SVr4 docs merely say under <STRONG>scr_init</STRONG> that the dump data is also con- + sidered invalid "if the time-stamp of the tty is old" but do not define + "old". + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, + <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>, <STRONG>system(3)</STRONG> + + + + <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-scr_dump">scr_dump</a></li> +<li><a href="#h3-scr_restore">scr_restore</a></li> +<li><a href="#h3-scr_init">scr_init</a></li> +<li><a href="#h3-scr_set">scr_set</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_scroll.3x.html b/deps/ncurses-6.3/doc/html/man/curs_scroll.3x.html new file mode 100644 index 0000000..0cf24be --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_scroll.3x.html @@ -0,0 +1,123 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2006,2010 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. * + **************************************************************************** + * @Id: curs_scroll.3x,v 1.19 2020/10/24 09:45:48 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_scroll 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_scroll 3x</H1> +<PRE> +<STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>scroll</STRONG>, <STRONG>scrl</STRONG>, <STRONG>wscrl</STRONG> - scroll a <STRONG>curses</STRONG> window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>scroll(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>scrl(int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wscrl(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>scroll</STRONG> routine scrolls the window up one line. This involves mov- + ing the lines in the window data structure. As an optimization, if the + scrolling region of the window is the entire screen, the <EM>physical</EM> + <EM>screen</EM> may be scrolled at the same time. + + For positive <EM>n</EM>, the <STRONG>scrl</STRONG> and <STRONG>wscrl</STRONG> routines scroll the window up <EM>n</EM> + lines (line <EM>i</EM>+<EM>n</EM> becomes <EM>i</EM>); otherwise scroll the window down <EM>n</EM> lines. + This involves moving the lines in the window character image structure. + The current cursor position is not changed. + + For these functions to work, scrolling must be enabled via <STRONG>scrollok</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return <STRONG>ERR</STRONG> upon failure, and <STRONG>OK</STRONG> (SVr4 only specifies "an + integer value other than <STRONG>ERR</STRONG>") upon successful completion. + + X/Open defines no error conditions. + + This implementation returns an error if the window pointer is null, or + if scrolling is not enabled in the window, e.g., with <STRONG>scrollok</STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>scrl</STRONG> and <STRONG>scroll</STRONG> may be macros. + + The SVr4 documentation says that the optimization of physically + scrolling immediately if the scroll region is the entire screen "is" + performed, not "may be" performed. This implementation deliberately + does not guarantee that this will occur, to leave open the possibility + of smarter optimization of multiple scroll actions on the next update. + + Neither the SVr4 nor the XSI documentation specify whether the current + attribute or current color-pair of blanks generated by the scroll func- + tion is zeroed. Under this implementation it is. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses standard, Issue 4 describes these functions. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_slk.3x.html b/deps/ncurses-6.3/doc/html/man/curs_slk.3x.html new file mode 100644 index 0000000..1e4f954 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_slk.3x.html @@ -0,0 +1,308 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_slk.3x,v 1.38 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_slk 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_slk 3x</H1> +<PRE> +<STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>slk_init</STRONG>, <STRONG>slk_set</STRONG>, <STRONG>slk_wset</STRONG>, <STRONG>slk_refresh</STRONG>, <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_label</STRONG>, + <STRONG>slk_clear</STRONG>, <STRONG>slk_restore</STRONG>, <STRONG>slk_touch</STRONG>, <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>, + <STRONG>slk_attroff</STRONG>, <STRONG>slk_attr_on</STRONG>, <STRONG>slk_attr_set</STRONG>, <STRONG>slk_attr_off</STRONG>, <STRONG>slk_attr</STRONG>, + <STRONG>slk_color</STRONG>, <STRONG>extended_slk_color</STRONG> - <STRONG>curses</STRONG> soft label routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>slk_init(int</STRONG> <EM>fmt</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>slk_set(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG> + /* extension */ + <STRONG>int</STRONG> <STRONG>slk_wset(int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG> + + <STRONG>char</STRONG> <STRONG>*slk_label(int</STRONG> <EM>labnum</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>slk_refresh(void);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_noutrefresh(void);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_clear(void);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_restore(void);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_touch(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>slk_attron(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attroff(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attrset(const</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attr_on(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attr_off(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attr_set(const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG> <EM>opts</EM><STRONG>);</STRONG> + + <STRONG>attr_t</STRONG> <STRONG>slk_attr(void);</STRONG> + + <STRONG>int</STRONG> <STRONG>slk_color(short</STRONG> <EM>pair</EM><STRONG>);</STRONG> + /* extension */ + <STRONG>int</STRONG> <STRONG>extended_slk_color(int</STRONG> <EM>pair</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The slk* functions manipulate the set of soft function-key labels that + exist on many terminals. For those terminals that do not have soft la- + bels, <STRONG>curses</STRONG> takes over the bottom line of <STRONG>stdscr</STRONG>, reducing the size of + <STRONG>stdscr</STRONG> and the variable <STRONG>LINES</STRONG>. <STRONG>curses</STRONG> standardizes on eight labels of + up to eight characters each. In addition to this, the ncurses imple- + mentation supports a mode where it simulates 12 labels of up to five + characters each. This is useful for PC-like enduser devices. ncurses + simulates this mode by taking over up to two lines at the bottom of the + screen; it does not try to use any hardware support for this mode. + + +</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE> + The <STRONG>slk_init</STRONG> routine must be called before <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> is + called. If <STRONG>initscr</STRONG> eventually uses a line from <STRONG>stdscr</STRONG> to emulate the + soft labels, then <EM>fmt</EM> determines how the labels are arranged on the + screen: + + <STRONG>0</STRONG> indicates a 3-2-3 arrangement of the labels. + + <STRONG>1</STRONG> indicates a 4-4 arrangement + + <STRONG>2</STRONG> indicates the PC-like 4-4-4 mode. + + <STRONG>3</STRONG> is again the PC-like 4-4-4 mode, but in addition an index line is + generated, helping the user to identify the key numbers easily. + + +</PRE><H3><a name="h3-Labels">Labels</a></H3><PRE> + The <STRONG>slk_set</STRONG> routine (and the <STRONG>slk_wset</STRONG> routine for the wide-character + library) has three parameters: + + <EM>labnum</EM> + is the label number, from <STRONG>1</STRONG> to <STRONG>8</STRONG> (12 for <EM>fmt</EM> in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> + or <STRONG>3</STRONG>); + + <EM>label</EM> + is be the string to put on the label, up to eight (five for <EM>fmt</EM> + in <STRONG>slk_init</STRONG> is <STRONG>2</STRONG> or <STRONG>3</STRONG>) characters in length. A null string or + a null pointer sets up a blank label. + + <EM>fmt</EM> is either <STRONG>0</STRONG>, <STRONG>1</STRONG>, or <STRONG>2</STRONG>, indicating whether the label is to be + left-justified, centered, or right-justified, respectively, + within the label. + + The <STRONG>slk_label</STRONG> routine returns the current label for label number <EM>lab-</EM> + <EM>num</EM>, with leading and trailing blanks stripped. + + +</PRE><H3><a name="h3-Screen-updates">Screen updates</a></H3><PRE> + The <STRONG>slk_refresh</STRONG> and <STRONG>slk_noutrefresh</STRONG> routines correspond to the <STRONG>wrefresh</STRONG> + and <STRONG>wnoutrefresh</STRONG> routines. + + The <STRONG>slk_clear</STRONG> routine clears the soft labels from the screen. + + The <STRONG>slk_restore</STRONG> routine restores the soft labels to the screen after a + <STRONG>slk_clear</STRONG> has been performed. + + The <STRONG>slk_touch</STRONG> routine forces all the soft labels to be output the next + time a <STRONG>slk_noutrefresh</STRONG> is performed. + + +</PRE><H3><a name="h3-Video-attributes">Video attributes</a></H3><PRE> + The <STRONG>slk_attron</STRONG>, <STRONG>slk_attrset</STRONG>, <STRONG>slk_attroff</STRONG> and <STRONG>slk_attr</STRONG> routines corre- + spond to <STRONG>attron</STRONG>, <STRONG>attrset</STRONG>, <STRONG>attroff</STRONG> and <STRONG>attr_get</STRONG>, respectively. They + have an effect only if soft labels are simulated on the bottom line of + the screen. The default highlight for soft keys is A_STANDOUT (as in + System V curses, which does not document this fact). + + +</PRE><H3><a name="h3-Colors">Colors</a></H3><PRE> + The <STRONG>slk_color</STRONG> routine corresponds to <STRONG>color_set</STRONG>. It has an effect only + if soft labels are simulated on the bottom line of the screen. + + Because <STRONG>slk_color</STRONG> accepts only <STRONG>short</STRONG> (signed 16-bit integer) values, + this implementation provides <STRONG>extended_slk_color</STRONG> which accepts an inte- + ger value, e.g., 32-bits. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 specifies only "an + integer value other than <STRONG>ERR</STRONG>") upon successful completion. + + X/Open defines no error conditions. In this implementation + + <STRONG>slk_attr</STRONG> + returns the attribute used for the soft keys. + + <STRONG>slk_attroff</STRONG>, <STRONG>slk_attron</STRONG>, <STRONG>slk_clear</STRONG>, <STRONG>slk_noutrefresh</STRONG>, <STRONG>slk_refresh</STRONG>, + <STRONG>slk_touch</STRONG> + return an error if the terminal or the softkeys were not ini- + tialized. + + <STRONG>slk_attrset</STRONG> + returns an error if the terminal or the softkeys were not ini- + tialized. + + <STRONG>slk_attr_set</STRONG> + returns an error if the terminal or the softkeys were not ini- + tialized, or the color pair is outside the range 0..COL- + OR_PAIRS-1. + + <STRONG>slk_color</STRONG> + returns an error if the terminal or the softkeys were not ini- + tialized, or the color pair is outside the range 0..COL- + OR_PAIRS-1. + + <STRONG>slk_init</STRONG> + returns an error if the format parameter is outside the range + 0..3. + + <STRONG>slk_label</STRONG> + returns <STRONG>NULL</STRONG> on error. + + <STRONG>slk_set</STRONG> + returns an error if the terminal or the softkeys were not ini- + tialized, or the <EM>labnum</EM> parameter is outside the range of label + counts, or if the format parameter is outside the range 0..2, + or if memory for the labels cannot be allocated. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + SVr3 introduced these functions: + slk_clear + slk_init + slk_label + slk_noutrefresh + slk_refresh + slk_restore + slk_set + slk_touch + + SVr4 added these functions: + slk_attroff + slk_attron + slk_attrset + slk_start + + X/Open Curses added these: + slk_attr_off + slk_attr_on + slk_attr_set + slk_color + slk_wset + + +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + X/Open Curses documents the <EM>opts</EM> 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. + + For functions which modify the color, e.g., <STRONG>slk_attr_set</STRONG>, if <EM>opts</EM> is + set it is treated as a pointer to <STRONG>int</STRONG>, and used to set the color + pair instead of the <STRONG>short</STRONG> pair parameter. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Most applications would use <STRONG>slk_noutrefresh</STRONG> because a <STRONG>wrefresh</STRONG> is like- + ly to follow soon. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses standard, Issue 4, described the soft-key functions, + with some differences from SVr4 curses: + + <STRONG>o</STRONG> It added functions like the SVr4 attribute-manipulation functions + <STRONG>slk_attron</STRONG>, <STRONG>slk_attroff</STRONG>, <STRONG>slk_attrset</STRONG>, but which use <STRONG>attr_t</STRONG> parame- + ters (rather than <STRONG>chtype</STRONG>), along with a reserved <EM>opts</EM> parameter. + + Two of these new functions (unlike the SVr4 functions) have no pro- + vision for color: <STRONG>slk_attr_on</STRONG> and <STRONG>slk_attr_off</STRONG>. + + The third function (<STRONG>slk_attr_set</STRONG>) has a color-pair parameter. + + <STRONG>o</STRONG> It added <STRONG>const</STRONG> qualifiers to parameters (unnecessarily), and + + <STRONG>o</STRONG> It added <STRONG>slk_color</STRONG>. + + The format codes <STRONG>2</STRONG> and <STRONG>3</STRONG> for <STRONG>slk_init</STRONG> and the function <STRONG>slk_attr</STRONG> are + specific to ncurses. + + 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 <STRONG>short</STRONG> + 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 + <STRONG>short</STRONG> parameters, allowing applications to use larger color- and pair- + numbers. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, + <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Initialization">Initialization</a></li> +<li><a href="#h3-Labels">Labels</a></li> +<li><a href="#h3-Screen-updates">Screen updates</a></li> +<li><a href="#h3-Video-attributes">Video attributes</a></li> +<li><a href="#h3-Colors">Colors</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_sp_funcs.3x.html b/deps/ncurses-6.3/doc/html/man/curs_sp_funcs.3x.html new file mode 100644 index 0000000..6e1b0fe --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_sp_funcs.3x.html @@ -0,0 +1,311 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2010-2015,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. * + **************************************************************************** + * @Id: curs_sp_funcs.3x,v 1.25 2021/05/22 22:12:46 tom Exp @ + * *************************************************************************** + * *************************************************************************** + * *************************************************************************** +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_sp_funcs 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_sp_funcs 3x</H1> +<PRE> +<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + curs_sp_funcs - <STRONG>curses</STRONG> screen-pointer extension + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>alloc_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>assume_default_colors_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>baudrate_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>beep_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>can_change_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>cbreak_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>color_content_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>curs_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>visibility</EM>); + <STRONG>int</STRONG> <STRONG>def_prog_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>def_shell_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>define_key_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>definition</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>keycode</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>delay_output_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ms</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>doupdate_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>echo_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>endwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>erasechar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>erasewchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>extended_color_content_sp(SCREEN</STRONG> <STRONG>*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>extended_pair_content_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>extended_slk_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>);</STRONG> + + <STRONG>void</STRONG> <STRONG>filter_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>find_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>flash_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>flushinp_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>free_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>get_escdelay_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>getmouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>MEVENT*</STRONG> <STRONG>event);</STRONG> + <STRONG>WINDOW*</STRONG> <STRONG>getwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>FILE*</STRONG> <EM>filep</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>halfdelay_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>tenths</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>has_colors_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + + <STRONG>bool</STRONG> <STRONG>has_ic_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>has_il_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>has_key_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>has_mouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>init_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>init_extended_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>color</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>r</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>g</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>b</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>init_extended_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>init_pair_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>intrflush_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_term_resized_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG> + + <STRONG>bool</STRONG> <STRONG>isendwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>key_defined_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>definition</EM><STRONG>);</STRONG> + <STRONG>char*</STRONG> <STRONG>keybound_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>count</EM><STRONG>);</STRONG> + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keyname_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>keyok_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>enable</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>killchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>killwchar_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG> + <STRONG>char*</STRONG> <STRONG>longname_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mcprint_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>len</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mouseinterval_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>erval</EM><STRONG>);</STRONG> + + <STRONG>mmask_t</STRONG> <STRONG>mousemask_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <EM>newmask</EM><STRONG>,</STRONG> <STRONG>mmask_t</STRONG> <STRONG>*</STRONG><EM>oldmask</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvcur_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newcol</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>napms_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ms</EM><STRONG>);</STRONG> + <STRONG>WINDOW*</STRONG> <STRONG>newpad_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nrows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>);</STRONG> + <STRONG>SCREEN*</STRONG> <STRONG>new_prescr(void);</STRONG> + <STRONG>SCREEN*</STRONG> <STRONG>newterm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>outfd</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>infd</EM><STRONG>);</STRONG> + <STRONG>WINDOW*</STRONG> <STRONG>newwin_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>nl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>nocbreak_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>noecho_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + + <STRONG>void</STRONG> <STRONG>nofilter_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>nonl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>noqiflush_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>noraw_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>pair_content_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>short*</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>qiflush_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>raw_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>reset_prog_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>reset_color_pairs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>reset_shell_mode_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>resetty_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>resize_term_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>resizeterm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>ripoffline_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>line</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>init</EM><STRONG>)(WINDOW*</STRONG> <EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>));</STRONG> + <STRONG>int</STRONG> <STRONG>savetty_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>scr_init_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>scr_restore_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>scr_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>filename</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>set_escdelay_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ms</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>set_tabsize_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>cols</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>slk_attr_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void*</STRONG><EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attrset_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>a</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attroff_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>a</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_attron_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>chtype</STRONG> <EM>a</EM><STRONG>);</STRONG> + <STRONG>attr_t</STRONG> <STRONG>slk_attr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_clear_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_init_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG> + <STRONG>char*</STRONG> <STRONG>slk_label_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>labnum</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_noutrefresh_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>slk_refresh_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_restore_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_set_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>labnum</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <EM>label</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fmt</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>slk_touch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>start_color_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>attr_t</STRONG> <STRONG>term_attrs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>chtype</STRONG> <STRONG>termattrs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>char*</STRONG> <STRONG>termname_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>typeahead_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fd</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>unget_wch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>ungetch_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>ungetmouse_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,MEVENT</STRONG> <STRONG>*</STRONG> <STRONG>event);</STRONG> + <STRONG>int</STRONG> <STRONG>use_default_colors_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>use_env_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>use_legacy_coding_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>level</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>use_tioctl_sp(SCREEN</STRONG> <STRONG>*</STRONG><EM>sp</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>vid_attr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>vid_puts_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG> <EM>opts</EM><STRONG>,</STRONG> <STRONG>NCURSES_SP_OUTC</STRONG> <EM>putc</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>vidattr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>vidputs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>NCURSES_SP_OUTC</STRONG> <EM>putc</EM><STRONG>);</STRONG> + <STRONG>wchar_t*</STRONG> <STRONG>wunctrl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG> + + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>FORM*</STRONG> <STRONG>new_form_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>FIELD</STRONG> <STRONG>**</STRONG><EM>fields</EM><STRONG>);</STRONG> + + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>MENU*</STRONG> <STRONG>new_menu_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>ITEM</STRONG> <STRONG>**</STRONG><EM>items</EM><STRONG>);</STRONG> + + <STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</STRONG> + + <STRONG>PANEL*</STRONG> <STRONG>ceiling_panel(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>PANEL*</STRONG> <STRONG>ground_panel(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>update_panels_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>);</STRONG> + + <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>del_curterm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>TERMINAL</STRONG> <STRONG>*</STRONG><EM>oterm</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>putp_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>restartterm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>NCURSES_CONST</STRONG> <STRONG>char*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG> + <STRONG>TERMINAL*</STRONG> <STRONG>set_curterm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>TERMINAL*</STRONG><EM>nterm</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tgetent_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>bp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>name</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tgetflag_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tgetnum_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + <STRONG>char*</STRONG> <STRONG>tgetstr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>**</STRONG><EM>area</EM><STRONG>);</STRONG> + <STRONG>char*</STRONG> <STRONG>tgoto_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>col</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>row</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tigetflag_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tigetnum_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + <STRONG>char*</STRONG> <STRONG>tigetstr_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + /* may instead use 9 long parameters */ + <STRONG>char*</STRONG> <STRONG>tparm_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>tputs_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>NCURSES_SP_OUTC</STRONG> <EM>putc</EM><STRONG>);</STRONG> + + <STRONG>#include</STRONG> <STRONG>&lt;unctrl.h&gt;</STRONG> + + <STRONG>NCURSES_CONST</STRONG> <STRONG>char*</STRONG> <STRONG>unctrl_sp(SCREEN*</STRONG> <EM>sp</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>c</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This implementation can be configured to provide a set of functions + which improve the ability to manage multiple screens. This feature can + be added to any of the configurations supported by ncurses; it adds new + entrypoints without changing the meaning of any of the existing ones. + + +</PRE><H3><a name="h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></H3><PRE> + Most of the functions are new versions of existing functions. A param- + eter is added at the front of the parameter list. It is a SCREEN + pointer. + + The existing functions all use the current screen, which is a static + variable. The extended functions use the specified screen, thereby re- + ducing the number of variables which must be modified to update multi- + ple screens. + + +</PRE><H3><a name="h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></H3><PRE> + Here are the new functions: + + ceiling_panel + this returns a pointer to the topmost panel in the given screen. + + ground_panel + this returns a pointer to the lowest panel in the given screen. + + new_prescr + when creating a new screen, the library uses static variables + which have been preset, e.g., by <STRONG><A HREF="curs_util.3x.html">use_env(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">filter(3x)</A></STRONG>, etc. + With the screen-pointer extension, there are situations where it + must create a current screen before the unextended library does. + The <STRONG>new_prescr</STRONG> function is used internally to handle these cases. + It is also provided as an entrypoint to allow applications to cus- + tomize the library initialization. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + This extension introduces some new names: + + NCURSES_SP_FUNCS + This is set to the library patch-level number. In the unextended + library, this is zero (0), to make it useful for checking if the + extension is provided. + + NCURSES_SP_NAME + The new functions are named using the macro <EM>NCURSES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>NAME</EM>, which + hides the actual implementation. Currently this adds a "_sp" suf- + fix to the name of the unextended function. This manual page in- + dexes the extensions showing the full name. However the proper + usage of these functions uses the macro, to provide for the possi- + bility of changing the naming convention for specific library con- + figurations. + + NCURSES_SP_OUTC + This is a new function-pointer type to use in the screen-pointer + functions where an <EM>NCURSES</EM><STRONG>_</STRONG><EM>OUTC</EM> is used in the unextended library. + + NCURSES_OUTC + This is a function-pointer type used for the cases where a func- + tion passes characters to the output stream, e.g., <STRONG><A HREF="curs_terminfo.3x.html">vidputs(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on ncurses extensions be conditioned using <EM>NCURS-</EM> + <EM>ES</EM><STRONG>_</STRONG><EM>SP</EM><STRONG>_</STRONG><EM>FUNCS</EM>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-IMPROVED-FUNCTIONS">IMPROVED FUNCTIONS</a></li> +<li><a href="#h3-NEW-FUNCTIONS">NEW FUNCTIONS</a></li> +</ul> +</li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_termattrs.3x.html b/deps/ncurses-6.3/doc/html/man/curs_termattrs.3x.html new file mode 100644 index 0000000..da6091c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_termattrs.3x.html @@ -0,0 +1,176 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: curs_termattrs.3x,v 1.15 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_termattrs 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_termattrs 3x</H1> +<PRE> +<STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>baudrate</STRONG>, <STRONG>erasechar</STRONG>, <STRONG>erasewchar</STRONG>, <STRONG>has_ic</STRONG>, <STRONG>has_il</STRONG>, <STRONG>killchar</STRONG>, <STRONG>killwchar</STRONG>, + <STRONG>longname</STRONG>, <STRONG>term_attrs</STRONG>, <STRONG>termattrs</STRONG>, <STRONG>termname</STRONG> - <STRONG>curses</STRONG> environment query + routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>baudrate(void);</STRONG> + <STRONG>char</STRONG> <STRONG>erasechar(void);</STRONG> + <STRONG>int</STRONG> <STRONG>erasewchar(wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>has_ic(void);</STRONG> + <STRONG>bool</STRONG> <STRONG>has_il(void);</STRONG> + <STRONG>char</STRONG> <STRONG>killchar(void);</STRONG> + <STRONG>int</STRONG> <STRONG>killwchar(wchar_t</STRONG> <STRONG>*</STRONG><EM>ch</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*longname(void);</STRONG> + <STRONG>attr_t</STRONG> <STRONG>term_attrs(void);</STRONG> + <STRONG>chtype</STRONG> <STRONG>termattrs(void);</STRONG> + <STRONG>char</STRONG> <STRONG>*termname(void);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-baudrate">baudrate</a></H3><PRE> + The <STRONG>baudrate</STRONG> routine returns the output speed of the terminal. The + number returned is in bits per second, for example <STRONG>9600</STRONG>, and is an + integer. + + +</PRE><H3><a name="h3-erasechar_-erasewchar">erasechar, erasewchar</a></H3><PRE> + The <STRONG>erasechar</STRONG> routine returns the user's current erase character. + + The <STRONG>erasewchar</STRONG> routine stores the current erase character in the + location referenced by <EM>ch</EM>. If no erase character has been defined, the + routine fails and the location referenced by <EM>ch</EM> is not changed. + + +</PRE><H3><a name="h3-has_is_-has_il">has_is, has_il</a></H3><PRE> + The <STRONG>has_ic</STRONG> routine is true if the terminal has insert- and delete- + character capabilities. + + The <STRONG>has_il</STRONG> 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 <STRONG>scrollok</STRONG>. + + +</PRE><H3><a name="h3-killchar_-killwchar">killchar, killwchar</a></H3><PRE> + The <STRONG>killchar</STRONG> routine returns the user's current line kill character. + + The <STRONG>killwchar</STRONG> routine stores the current line-kill character in the + location referenced by <EM>ch</EM>. If no line-kill character has been defined, + the routine fails and the location referenced by <EM>ch</EM> is not changed. + + +</PRE><H3><a name="h3-longname">longname</a></H3><PRE> + The <STRONG>longname</STRONG> 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 <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. The area is overwritten by each call to + <STRONG>newterm</STRONG> and is not restored by <STRONG>set_term</STRONG>, so the value should be saved + between calls to <STRONG>newterm</STRONG> if <STRONG>longname</STRONG> is going to be used with multiple + terminals. + + +</PRE><H3><a name="h3-termattrs_-term_attrs">termattrs, term_attrs</a></H3><PRE> + If a given terminal does not support a video attribute that an + application program is trying to use, <STRONG>curses</STRONG> may substitute a different + video attribute for it. The <STRONG>termattrs</STRONG> and <STRONG>term_attrs</STRONG> functions return + a logical <STRONG>OR</STRONG> of all video attributes supported by the terminal using <EM>A</EM><STRONG>_</STRONG> + and <EM>WA</EM><STRONG>_</STRONG> constants respectively. This information is useful when a + <STRONG>curses</STRONG> program needs complete control over the appearance of the + screen. + + +</PRE><H3><a name="h3-termname">termname</a></H3><PRE> + The <STRONG>termname</STRONG> routine returns the terminal name used by <STRONG>setupterm</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>longname</STRONG> and <STRONG>termname</STRONG> return <STRONG>NULL</STRONG> on error. + + Routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 + only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful + completion. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Note that <STRONG>termattrs</STRONG> may be a macro. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses standard, Issue 4 describes these functions. It changes + the return type of <STRONG>termattrs</STRONG> to the new type <STRONG>attr_t</STRONG>. Most versions of + curses truncate the result returned by <STRONG>termname</STRONG> to 14 characters. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-baudrate">baudrate</a></li> +<li><a href="#h3-erasechar_-erasewchar">erasechar, erasewchar</a></li> +<li><a href="#h3-has_is_-has_il">has_is, has_il</a></li> +<li><a href="#h3-killchar_-killwchar">killchar, killwchar</a></li> +<li><a href="#h3-longname">longname</a></li> +<li><a href="#h3-termattrs_-term_attrs">termattrs, term_attrs</a></li> +<li><a href="#h3-termname">termname</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_termcap.3x.html b/deps/ncurses-6.3/doc/html/man/curs_termcap.3x.html new file mode 100644 index 0000000..e3ed320 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_termcap.3x.html @@ -0,0 +1,344 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2017,2018 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. * + **************************************************************************** + * @Id: curs_termcap.3x,v 1.49 2021/04/03 21:17:09 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_termcap 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_termcap 3x</H1> +<PRE> +<STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>PC</STRONG>, <STRONG>UP</STRONG>, <STRONG>BC</STRONG>, <STRONG>ospeed</STRONG>, <STRONG>tgetent</STRONG>, <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG>, <STRONG>tgetstr</STRONG>, <STRONG>tgoto</STRONG>, <STRONG>tputs</STRONG> - + <STRONG>curses</STRONG> emulation of termcap + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG> + + <STRONG>extern</STRONG> <STRONG>char</STRONG> <STRONG>PC;</STRONG> + <STRONG>extern</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>UP;</STRONG> + <STRONG>extern</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>BC;</STRONG> + <STRONG>extern</STRONG> <STRONG>short</STRONG> <STRONG>ospeed;</STRONG> + + <STRONG>int</STRONG> <STRONG>tgetent(char</STRONG> <STRONG>*</STRONG><EM>bp</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>name</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tgetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>id</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tgetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>id</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*tgetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>id</EM><STRONG>,</STRONG> <STRONG>char</STRONG> <STRONG>**</STRONG><EM>area</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*tgoto(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>cap</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>col</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>row</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These routines are included as a conversion aid for programs that use + the <EM>termcap</EM> library. Their parameters are the same, but the routines + are emulated using the <EM>terminfo</EM> database. Thus, they can only be used + to query the capabilities of entries for which a terminfo entry has + been compiled. + + +</PRE><H3><a name="h3-INITIALIZATION">INITIALIZATION</a></H3><PRE> + The <STRONG>tgetent</STRONG> routine loads the entry for <EM>name</EM>. It returns: + + 1 on success, + + 0 if there is no such entry (or that it is a generic type, having + too little information for curses applications to run), and + + -1 if the terminfo database could not be found. + + This differs from the <EM>termcap</EM> library in two ways: + + <STRONG>o</STRONG> The emulation ignores the buffer pointer <EM>bp</EM>. The <EM>termcap</EM> li- + brary would store a copy of the terminal description in the area + referenced by this pointer. However, ncurses stores its termi- + nal descriptions in compiled binary form, which is not the same + thing. + + <STRONG>o</STRONG> There is a difference in return codes. The <EM>termcap</EM> library does + not check if the terminal description is marked with the <EM>generic</EM> + capability, or if the terminal description has cursor-address- + ing. + + +</PRE><H3><a name="h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></H3><PRE> + The <STRONG>tgetflag</STRONG> routine gets the boolean entry for <EM>id</EM>, or zero if it is + not available. + + The <STRONG>tgetnum</STRONG> routine gets the numeric entry for <EM>id</EM>, or -1 if it is not + available. + + The <STRONG>tgetstr</STRONG> routine returns the string entry for <EM>id</EM>, or zero if it is + not available. Use <STRONG>tputs</STRONG> to output the returned string. The <EM>area</EM> pa- + rameter is used as follows: + + <STRONG>o</STRONG> It is assumed to be the address of a pointer to a buffer managed + by the calling application. + + <STRONG>o</STRONG> However, ncurses checks to ensure that <STRONG>area</STRONG> is not NULL, and al- + so that the resulting buffer pointer is not NULL. If either + check fails, the <EM>area</EM> parameter is ignored. + + <STRONG>o</STRONG> If the checks succeed, ncurses also copies the return value to + the buffer pointed to by <EM>area</EM>, and the <EM>area</EM> value will be updat- + ed to point past the null ending this value. + + <STRONG>o</STRONG> The return value itself is an address in the terminal descrip- + tion which is loaded into memory. + + Only the first two characters of the <STRONG>id</STRONG> parameter of <STRONG>tgetflag</STRONG>, <STRONG>tgetnum</STRONG> + and <STRONG>tgetstr</STRONG> are compared in lookups. + + +</PRE><H3><a name="h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></H3><PRE> + The <STRONG>tgoto</STRONG> routine expands the given capability using the parameters. + + <STRONG>o</STRONG> Because the capability may have padding characters, the output of + <STRONG>tgoto</STRONG> should be passed to <STRONG>tputs</STRONG> rather than some other output func- + tion such as <STRONG>printf</STRONG>. + + <STRONG>o</STRONG> While <STRONG>tgoto</STRONG> is assumed to be used for the two-parameter cursor po- + sitioning capability, termcap applications also use it for single- + parameter capabilities. + + Doing this shows a quirk in <STRONG>tgoto</STRONG>: most hardware terminals use cur- + sor addressing with <EM>row</EM> first, but the original developers of the + termcap interface chose to put the <EM>column</EM> parameter first. The + <STRONG>tgoto</STRONG> function swaps the order of parameters. It does this also + for calls requiring only a single parameter. In that case, the + first parameter is merely a placeholder. + + <STRONG>o</STRONG> Normally the ncurses library is compiled with terminfo support. In + that case, <STRONG>tgoto</STRONG> uses <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> (a more capable formatter). + + However, <STRONG>tparm</STRONG> is not a <EM>termcap</EM> feature, and portable <EM>termcap</EM> ap- + plications should not rely upon its availability. + + The <STRONG>tputs</STRONG> routine is described on the <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> manual page. + It can retrieve capabilities by either termcap or terminfo name. + + +</PRE><H3><a name="h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></H3><PRE> + The variables <STRONG>PC</STRONG>, <STRONG>UP</STRONG> and <STRONG>BC</STRONG> are set by <STRONG>tgetent</STRONG> to the terminfo entry's + data for <STRONG>pad_char</STRONG>, <STRONG>cursor_up</STRONG> and <STRONG>backspace_if_not_bs</STRONG>, respectively. <STRONG>UP</STRONG> + is not used by ncurses. <STRONG>PC</STRONG> is used in the <STRONG>tdelay_output</STRONG> function. <STRONG>BC</STRONG> + is used in the <STRONG>tgoto</STRONG> emulation. The variable <STRONG>ospeed</STRONG> is set by ncurses + in a system-specific coding to reflect the terminal speed. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except where explicitly noted, routines that return an integer return + <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 only specifies "an integer value other + than <STRONG>ERR</STRONG>") upon successful completion. + + Routines that return pointers return <STRONG>NULL</STRONG> on error. + + +</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE> + If you call <STRONG>tgetstr</STRONG> to fetch <STRONG>ca</STRONG> or any other parameterized string, be + aware that it will be returned in terminfo notation, not the older and + not-quite-compatible termcap notation. This will not cause problems if + all you do with it is call <STRONG>tgoto</STRONG> or <STRONG>tparm</STRONG>, which both expand terminfo- + style strings as terminfo. (The <STRONG>tgoto</STRONG> function, if configured to sup- + port termcap, will check if the string is indeed terminfo-style by + looking for "%p" parameters or "$&lt;..&gt;" delays, and invoke a termcap- + style parser if the string does not appear to be terminfo). + + Because terminfo conventions for representing padding in string capa- + bilities differ from termcap's, users can be surprised: + + <STRONG>o</STRONG> <STRONG>tputs("50")</STRONG> in a terminfo system will put out a literal "50" rather + than busy-waiting for 50 milliseconds. + + <STRONG>o</STRONG> However, if ncurses is configured to support termcap, it may also + have been configured to support the BSD-style padding. + + In that case, <STRONG>tputs</STRONG> inspects strings passed to it, looking for dig- + its at the beginning of the string. + + <STRONG>tputs("50")</STRONG> in a termcap system may wait for 50 milliseconds rather + than put out a literal "50" + + Note that termcap has nothing analogous to terminfo's <STRONG>sgr</STRONG> string. One + consequence of this is that termcap applications assume <STRONG>me</STRONG> (terminfo + <STRONG>sgr0</STRONG>) does not reset the alternate character set. This implementation + checks for, and modifies the data shown to the termcap interface to ac- + commodate termcap's limitation in this respect. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + +</PRE><H3><a name="h3-Standards">Standards</a></H3><PRE> + These functions are provided for supporting legacy applications, and + should not be used in new programs: + + <STRONG>o</STRONG> The XSI Curses standard, Issue 4 describes these functions. Howev- + er, they are marked TO BE WITHDRAWN and may be removed in future + versions. + + <STRONG>o</STRONG> X/Open Curses, Issue 5 (December 2007) marked the termcap interface + (along with <STRONG>vwprintw</STRONG> and <STRONG>vwscanw</STRONG>) as withdrawn. + + Neither the XSI Curses standard nor the SVr4 man pages documented the + return values of <STRONG>tgetent</STRONG> correctly, though all three were in fact re- + turned ever since SVr1. In particular, an omission in the XSI Curses + documentation has been misinterpreted to mean that <STRONG>tgetent</STRONG> returns <STRONG>OK</STRONG> + or <STRONG>ERR</STRONG>. Because the purpose of these functions is to provide compati- + bility with the <EM>termcap</EM> library, that is a defect in XCurses, Issue 4, + Version 2 rather than in ncurses. + + +</PRE><H3><a name="h3-Compatibility-with-BSD-Termcap">Compatibility with BSD Termcap</a></H3><PRE> + External variables are provided for support of certain termcap applica- + tions. However, termcap applications' use of those variables is poorly + documented, e.g., not distinguishing between input and output. In par- + ticular, some applications are reported to declare and/or modify <STRONG>os-</STRONG> + <STRONG>peed</STRONG>. + + The comment that only the first two characters of the <STRONG>id</STRONG> parameter are + used escapes many application developers. The original BSD 4.2 termcap + library (and historical relics thereof) did not require a trailing null + NUL on the parameter name passed to <STRONG>tgetstr</STRONG>, <STRONG>tgetnum</STRONG> and <STRONG>tgetflag</STRONG>. + Some applications assume that the termcap interface does not require + the trailing NUL for the parameter name. Taking into account these is- + sues: + + <STRONG>o</STRONG> As a special case, <STRONG>tgetflag</STRONG> matched against a single-character + identifier provided that was at the end of the terminal descrip- + tion. You should not rely upon this behavior in portable programs. + This implementation disallows matches against single-character ca- + pability names. + + <STRONG>o</STRONG> This implementation disallows matches by the termcap interface + against extended capability names which are longer than two charac- + ters. + + The BSD termcap function <STRONG>tgetent</STRONG> returns the text of a termcap entry in + the buffer passed as an argument. This library (like other terminfo + implementations) does not store terminal descriptions as text. It sets + the buffer contents to a null-terminated string. + + +</PRE><H3><a name="h3-Other-Compatibility">Other Compatibility</a></H3><PRE> + This library includes a termcap.h header, for compatibility with other + implementations. But the header is rarely used because the other im- + plementations are not strictly compatible. + + The original BSD termcap (through 4.3BSD) had no header file which gave + function prototypes, because that was a feature of ANSI C. BSD termcap + was written several years before C was standardized. However, there + were two different termcap.h header files in the BSD sources: + + <STRONG>o</STRONG> One was used internally by the <EM>jove</EM> editor in 2BSD through 4.4BSD. + It defined global symbols for the termcap variables which it used. + + <STRONG>o</STRONG> The other appeared in 4.4BSD Lite Release 2 (mid-1993) as part of + <EM>libedit</EM> (also known as the <EM>editline</EM> library). The CSRG source his- + tory shows that this was added in mid-1992. The <EM>libedit</EM> header + file was used internally, as a convenience for compiling the <EM>edit-</EM> + <EM>line</EM> library. It declared function prototypes, but no global vari- + ables. + + The header file from <EM>libedit</EM> was added to NetBSD's termcap library in + mid-1994. + + Meanwhile, GNU termcap was under development, starting in 1990. The + first release (termcap 1.0) in 1991 included a termcap.h header. The + second release (termcap 1.1) in September 1992 modified the header to + use <STRONG>const</STRONG> for the function prototypes in the header where one would ex- + pect the parameters to be read-only. This was a difference versus the + original BSD termcap. The prototype for <STRONG>tputs</STRONG> also differed, but in + that instance, it was <EM>libedit</EM> which differed from BSD termcap. + + A copy of GNU termcap 1.3 was bundled with <EM>bash</EM> in mid-1993, to support + the <EM>readline</EM> library. + + A termcap.h file was provided in ncurses 1.8.1 (November 1993). That + reflected influence by <EM>emacs</EM> (rather than <EM>jove</EM>) and GNU termcap: + + <STRONG>o</STRONG> it provided declarations for a few global symbols used by <EM>emacs</EM> + + <STRONG>o</STRONG> it provided function prototypes (using <STRONG>const</STRONG>). + + <STRONG>o</STRONG> a prototype for <STRONG>tparam</STRONG> (a GNU termcap feature) was provided. + + Later (in mid-1996) the <STRONG>tparam</STRONG> function was removed from ncurses. As a + result, there are differences between any of the four implementations, + which must be taken into account by programs which can work with all + termcap library interfaces. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + https://invisible-island.net/ncurses/tctest.html + + + + <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-INITIALIZATION">INITIALIZATION</a></li> +<li><a href="#h3-CAPABILITY-VALUES">CAPABILITY VALUES</a></li> +<li><a href="#h3-FORMATTING-CAPABILITIES">FORMATTING CAPABILITIES</a></li> +<li><a href="#h3-GLOBAL-VARIABLES">GLOBAL VARIABLES</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-BUGS">BUGS</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-Standards">Standards</a></li> +<li><a href="#h3-Compatibility-with-BSD-Termcap">Compatibility with BSD Termcap</a></li> +<li><a href="#h3-Other-Compatibility">Other Compatibility</a></li> +</ul> +</li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_terminfo.3x.html b/deps/ncurses-6.3/doc/html/man/curs_terminfo.3x.html new file mode 100644 index 0000000..11c211d --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_terminfo.3x.html @@ -0,0 +1,621 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: curs_terminfo.3x,v 1.76 2021/09/04 19:58:03 tom Exp @ + * *************************************************************************** + * *************************************************************************** + * *************************************************************************** + * *************************************************************************** + * *************************************************************************** + * *************************************************************************** + * *************************************************************************** +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_terminfo 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_terminfo 3x</H1> +<PRE> +<STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>del_curterm</STRONG>, <STRONG>mvcur</STRONG>, <STRONG>putp</STRONG>, <STRONG>restartterm</STRONG>, <STRONG>set_curterm</STRONG>, <STRONG>setupterm</STRONG>, + <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG>, <STRONG>tigetstr</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tparm</STRONG>, <STRONG>tputs</STRONG>, <STRONG>vid_attr</STRONG>, + <STRONG>vid_puts</STRONG>, <STRONG>vidattr</STRONG>, <STRONG>vidputs</STRONG> - <STRONG>curses</STRONG> interfaces to terminfo database + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG> + + <STRONG>TERMINAL</STRONG> <STRONG>*cur_term;</STRONG> + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolnames[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolcodes[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolfnames[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numnames[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numcodes[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numfnames[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strnames[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strcodes[];</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strfnames[];</STRONG> + + <STRONG>int</STRONG> <STRONG>setupterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG> + <STRONG>TERMINAL</STRONG> <STRONG>*set_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>nterm</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>del_curterm(TERMINAL</STRONG> <STRONG>*</STRONG><EM>oterm</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>restartterm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>filedes</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>errret</EM><STRONG>);</STRONG> + + <STRONG>char</STRONG> <STRONG>*tparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + <STRONG>int</STRONG> <STRONG>tputs(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>affcnt</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG> + <STRONG>int</STRONG> <STRONG>putp(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>vidputs(chtype</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG> + <STRONG>int</STRONG> <STRONG>vidattr(chtype</STRONG> <EM>attrs</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>vid_puts(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>(*</STRONG><EM>putc</EM><STRONG>)(int));</STRONG> + <STRONG>int</STRONG> <STRONG>vid_attr(attr_t</STRONG> <EM>attrs</EM><STRONG>,</STRONG> <STRONG>short</STRONG> <EM>pair</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>opts</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>mvcur(int</STRONG> <EM>oldrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>oldcol</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>newrow</EM>, int <EM>newcol</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>tigetflag(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>tigetnum(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*tigetstr(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>capname</EM><STRONG>);</STRONG> + + <STRONG>char</STRONG> <STRONG>*tiparm(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These low-level routines must be called by programs that have to deal + directly with the <STRONG>terminfo</STRONG> database to handle certain terminal capabil- + ities, such as programming function keys. For all other functionality, + <STRONG>curses</STRONG> routines are more suitable and their use is recommended. + + None of these functions use (or are aware of) multibyte character + strings such as UTF-8: + + <STRONG>o</STRONG> capability names use the POSIX portable character set + + <STRONG>o</STRONG> capability string values have no associated encoding; they are + strings of 8-bit characters. + + +</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE> + Initially, <STRONG>setupterm</STRONG> should be called. The high-level curses functions + <STRONG>initscr</STRONG> and <STRONG>newterm</STRONG> call <STRONG>setupterm</STRONG> to initialize the low-level set of + terminal-dependent variables [listed in <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>]. + + Applications can use the terminal capabilities either directly (via + header definitions), or by special functions. The header files <STRONG>curs-</STRONG> + <STRONG>es.h</STRONG> and <STRONG>term.h</STRONG> should be included (in this order) to get the defini- + tions for these strings, numbers, and flags. + + The <STRONG>terminfo</STRONG> variables <STRONG>lines</STRONG> and <STRONG>columns</STRONG> are initialized by <STRONG>setupterm</STRONG> + as follows: + + <STRONG>o</STRONG> If <STRONG>use_env(FALSE)</STRONG> has been called, values for <STRONG>lines</STRONG> and <STRONG>columns</STRONG> + specified in <STRONG>terminfo</STRONG> are used. + + <STRONG>o</STRONG> Otherwise, if the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> 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 <STRONG>lines</STRONG> and <STRONG>columns</STRONG> specified in the <STRONG>terminfo</STRONG> database are + used. + + Parameterized strings should be passed through <STRONG>tparm</STRONG> to instantiate + them. All <STRONG>terminfo</STRONG> strings (including the output of <STRONG>tparm</STRONG>) should be + printed with <STRONG>tputs</STRONG> or <STRONG>putp</STRONG>. Call <STRONG>reset_shell_mode</STRONG> to restore the tty + modes before exiting [see <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>]. + + Programs which use cursor addressing should + + <STRONG>o</STRONG> output <STRONG>enter_ca_mode</STRONG> upon startup and + + <STRONG>o</STRONG> output <STRONG>exit_ca_mode</STRONG> before exiting. + + Programs which execute shell subprocesses should + + <STRONG>o</STRONG> call <STRONG>reset_shell_mode</STRONG> and output <STRONG>exit_ca_mode</STRONG> before the shell is + called and + + <STRONG>o</STRONG> output <STRONG>enter_ca_mode</STRONG> and call <STRONG>reset_prog_mode</STRONG> after returning from + the shell. + + The <STRONG>setupterm</STRONG> routine reads in the <STRONG>terminfo</STRONG> database, initializing the + <STRONG>terminfo</STRONG> structures, but does not set up the output virtualization + structures used by <STRONG>curses</STRONG>. These are its parameters: + + <EM>term</EM> is the terminal type, a character string. If <EM>term</EM> is null, the + environment variable <STRONG>TERM</STRONG> is used. + + <EM>filedes</EM> + is the file descriptor used for all output. + + <EM>errret</EM> + points to an optional location where an error status can be re- + turned to the caller. If <EM>errret</EM> is not null, then <STRONG>setupterm</STRONG> + returns <STRONG>OK</STRONG> or <STRONG>ERR</STRONG> and stores a status value in the integer + pointed to by <EM>errret</EM>. A return value of <STRONG>OK</STRONG> combined with sta- + tus of <STRONG>1</STRONG> in <EM>errret</EM> is normal. + + If <STRONG>ERR</STRONG> is returned, examine <EM>errret</EM>: + + <STRONG>1</STRONG> means that the terminal is hardcopy, cannot be used for + curses applications. + + <STRONG>setupterm</STRONG> determines if the entry is a hardcopy type by + checking the <STRONG>hc</STRONG> (<STRONG>hardcopy</STRONG>) capability. + + <STRONG>0</STRONG> means that the terminal could not be found, or that it is + a generic type, having too little information for curses + applications to run. + + <STRONG>setupterm</STRONG> determines if the entry is a generic type by + checking the <STRONG>gn</STRONG> (<STRONG>generic</STRONG>) capability. + + <STRONG>-1</STRONG> means that the <STRONG>terminfo</STRONG> database could not be found. + + If <EM>errret</EM> is null, <STRONG>setupterm</STRONG> prints an error message upon find- + ing an error and exits. Thus, the simplest call is: + + <STRONG>setupterm((char</STRONG> <STRONG>*)0,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0);</STRONG>, + + which uses all the defaults and sends the output to <STRONG>stdout</STRONG>. + + +</PRE><H3><a name="h3-The-Terminal-State">The Terminal State</a></H3><PRE> + The <STRONG>setupterm</STRONG> routine stores its information about the terminal in a + <STRONG>TERMINAL</STRONG> structure pointed to by the global variable <STRONG>cur_term</STRONG>. 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. + + If <STRONG>setupterm</STRONG> is called repeatedly for the same terminal type, it will + reuse the information. It maintains only one copy of a given termi- + nal's capabilities in memory. If it is called for different terminal + types, <STRONG>setupterm</STRONG> allocates new storage for each set of terminal capa- + bilities. + + The <STRONG>set_curterm</STRONG> routine sets <STRONG>cur_term</STRONG> to <EM>nterm</EM>, and makes all of the + <STRONG>terminfo</STRONG> boolean, numeric, and string variables use the values from + <EM>nterm</EM>. It returns the old value of <STRONG>cur_term</STRONG>. + + The <STRONG>del_curterm</STRONG> routine frees the space pointed to by <EM>oterm</EM> and makes + it available for further use. If <EM>oterm</EM> is the same as <STRONG>cur_term</STRONG>, refer- + ences to any of the <STRONG>terminfo</STRONG> boolean, numeric, and string variables + thereafter may refer to invalid memory locations until another <STRONG>se-</STRONG> + <STRONG>tupterm</STRONG> has been called. + + The <STRONG>restartterm</STRONG> routine is similar to <STRONG>setupterm</STRONG> and <STRONG>initscr</STRONG>, except + that it is called after restoring memory to a previous state (for exam- + ple, when reloading a game saved as a core image dump). <STRONG>restartterm</STRONG> + 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. Accordingly, <STRONG>restartterm</STRONG> saves various tty state bits, + calls <STRONG>setupterm</STRONG>, and then restores the bits. + + +</PRE><H3><a name="h3-Formatting-Output">Formatting Output</a></H3><PRE> + The <STRONG>tparm</STRONG> routine instantiates the string <EM>str</EM> with parameters <EM>pi</EM>. A + pointer is returned to the result of <EM>str</EM> with the parameters applied. + Application developers should keep in mind these quirks of the inter- + face: + + <STRONG>o</STRONG> Although <STRONG>tparm</STRONG>'s actual parameters may be integers or strings, the + prototype expects <STRONG>long</STRONG> (integer) values. + + <STRONG>o</STRONG> Aside from the <STRONG>set_attributes</STRONG> (<STRONG>sgr</STRONG>) capability, most terminal capa- + bilities require no more than one or two parameters. + + <STRONG>o</STRONG> Padding information is ignored by <STRONG>tparm</STRONG>; it is interpreted by + <STRONG>tputs</STRONG>. + + <STRONG>o</STRONG> The capability string is null-terminated. Use "\200" where an + ASCII NUL is needed in the output. + + <STRONG>tiparm</STRONG> is a newer form of <STRONG>tparm</STRONG> which uses <EM>&lt;stdarg.h&gt;</EM> rather than a + fixed-parameter list. Its numeric parameters are integers (int) rather + than longs. + + +</PRE><H3><a name="h3-Output-Functions">Output Functions</a></H3><PRE> + The <STRONG>tputs</STRONG> routine applies padding information (i.e., by interpreting + marker embedded in the terminfo capability such as "$&lt;5&gt;" as 5 mil- + liseconds) to the string <EM>str</EM> and outputs it: + + <STRONG>o</STRONG> The <EM>str</EM> parameter must be a terminfo string variable or the return + value from <STRONG>tparm</STRONG>, <STRONG>tiparm</STRONG>, <STRONG>tgetstr</STRONG>, or <STRONG>tgoto</STRONG>. + + The <STRONG>tgetstr</STRONG> and <STRONG>tgoto</STRONG> functions are part of the <EM>termcap</EM> interface, + which happens to share this function name with the <EM>terminfo</EM> inter- + face. + + <STRONG>o</STRONG> <EM>affcnt</EM> is the number of lines affected, or 1 if not applicable. + + <STRONG>o</STRONG> <EM>putc</EM> is a <STRONG>putchar</STRONG>-like routine to which the characters are passed, + one at a time. + + The <STRONG>putp</STRONG> routine calls <STRONG>tputs(</STRONG><EM>str</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>putchar)</STRONG>. The output of <STRONG>putp</STRONG> al- + ways goes to <STRONG>stdout</STRONG>, rather than the <EM>filedes</EM> specified in <STRONG>setupterm</STRONG>. + + The <STRONG>vidputs</STRONG> routine displays the string on the terminal in the video + attribute mode <EM>attrs</EM>, which is any combination of the attributes listed + in <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. The characters are passed to the <STRONG>putchar</STRONG>-like routine + <EM>putc</EM>. + + The <STRONG>vidattr</STRONG> routine is like the <STRONG>vidputs</STRONG> routine, except that it outputs + through <STRONG>putchar</STRONG>. + + The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines correspond to vidattr and vidputs, + respectively. They use a set of arguments for representing the video + attributes plus color, i.e., + + <STRONG>o</STRONG> <EM>attrs</EM> of type <STRONG>attr_t</STRONG> for the attributes and + + <STRONG>o</STRONG> <EM>pair</EM> of type <STRONG>short</STRONG> for the color-pair number. + + The <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> routines are designed to use the attribute + constants with the <EM>WA</EM><STRONG>_</STRONG> prefix. + + X/Open Curses reserves the <EM>opts</EM> argument for future use, saying that + applications must provide a null pointer for that argument. As an ex- + tension, this implementation allows <EM>opts</EM> to be used as a pointer to + <STRONG>int</STRONG>, which overrides the <EM>pair</EM> (<STRONG>short</STRONG>) argument. + + The <STRONG>mvcur</STRONG> routine provides low-level cursor motion. It takes effect + immediately (rather than at the next refresh). + + While <STRONG>putp</STRONG> and <STRONG>mvcur</STRONG> are low-level functions which do not use the high- + level curses state, they are declared in <STRONG>&lt;curses.h&gt;</STRONG> because SystemV did + this (see <STRONG>HISTORY</STRONG>). + + +</PRE><H3><a name="h3-Terminal-Capability-Functions">Terminal Capability Functions</a></H3><PRE> + The <STRONG>tigetflag</STRONG>, <STRONG>tigetnum</STRONG> and <STRONG>tigetstr</STRONG> routines return the value of the + capability corresponding to the <STRONG>terminfo</STRONG> <EM>capname</EM> passed to them, such + as <STRONG>xenl</STRONG>. The <EM>capname</EM> for each capability is given in the table column + entitled <EM>capname</EM> code in the capabilities section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + These routines return special values to denote errors. + + The <STRONG>tigetflag</STRONG> routine returns + + <STRONG>-1</STRONG> if <EM>capname</EM> is not a boolean capability, or + + <STRONG>0</STRONG> if it is canceled or absent from the terminal description. + + The <STRONG>tigetnum</STRONG> routine returns + + <STRONG>-2</STRONG> if <EM>capname</EM> is not a numeric capability, or + + <STRONG>-1</STRONG> if it is canceled or absent from the terminal description. + + The <STRONG>tigetstr</STRONG> routine returns + + <STRONG>(char</STRONG> <STRONG>*)-1</STRONG> + if <EM>capname</EM> is not a string capability, or + + <STRONG>0</STRONG> if it is canceled or absent from the terminal description. + + +</PRE><H3><a name="h3-Terminal-Capability-Names">Terminal Capability Names</a></H3><PRE> + These null-terminated arrays contain + + <STRONG>o</STRONG> the short terminfo names ("codes"), + + <STRONG>o</STRONG> the <STRONG>termcap</STRONG> names ("names"), and + + <STRONG>o</STRONG> the long terminfo names ("fnames") + + for each of the predefined <STRONG>terminfo</STRONG> variables: + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*boolnames[]</STRONG>, <STRONG>*boolcodes[]</STRONG>, <STRONG>*boolfnames[]</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*numnames[]</STRONG>, <STRONG>*numcodes[]</STRONG>, <STRONG>*numfnames[]</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*strnames[]</STRONG>, <STRONG>*strcodes[]</STRONG>, <STRONG>*strfnames[]</STRONG> + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return an integer return <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> (SVr4 + only specifies "an integer value other than <STRONG>ERR</STRONG>") upon successful com- + pletion, unless otherwise noted in the preceding routine descriptions. + + Routines that return pointers always return <STRONG>NULL</STRONG> on error. + + X/Open defines no error conditions. In this implementation + + <STRONG>del_curterm</STRONG> + returns an error if its terminal parameter is null. + + <STRONG>putp</STRONG> calls <STRONG>tputs</STRONG>, returning the same error-codes. + + <STRONG>restartterm</STRONG> + returns an error if the associated call to <STRONG>setupterm</STRONG> returns an + error. + + <STRONG>setupterm</STRONG> + returns an error if it cannot allocate enough memory, or create + the initial windows (stdscr, curscr, newscr). Other error con- + ditions are documented above. + + <STRONG>tputs</STRONG> + returns an error if the string parameter is null. It does not + detect I/O errors: X/Open states that <STRONG>tputs</STRONG> ignores the return + value of the output function <EM>putc</EM>. + + +</PRE><H3><a name="h3-Compatibility-macros">Compatibility macros</a></H3><PRE> + This implementation provides a few macros for compatibility with sys- + tems before SVr4 (see <STRONG>HISTORY</STRONG>). Those include <STRONG>crmode</STRONG>, <STRONG>fixterm</STRONG>, + <STRONG>gettmode</STRONG>, <STRONG>nocrmode</STRONG>, <STRONG>resetterm</STRONG>, <STRONG>saveterm</STRONG>, and <STRONG>setterm</STRONG>. + + In SVr4, those are found in <STRONG>&lt;curses.h&gt;</STRONG>, but except for <STRONG>setterm</STRONG>, are + likewise macros. The one function, <STRONG>setterm</STRONG>, is mentioned in the manual + page. The manual page notes that the <STRONG>setterm</STRONG> routine was replaced by + <STRONG>setupterm</STRONG>, stating that the call: + + <STRONG>setupterm(</STRONG><EM>term</EM><STRONG>,</STRONG> <STRONG>1,</STRONG> <STRONG>(int</STRONG> <STRONG>*)0)</STRONG> + + provides the same functionality as <STRONG>setterm(</STRONG><EM>term</EM><STRONG>)</STRONG>, and is not recommend- + ed for new programs. This implementation provides each of those sym- + bols as macros for BSD compatibility, + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + SVr2 introduced the terminfo feature. Its programming manual mentioned + these low-level functions: + + <STRONG>Function</STRONG> <STRONG>Description</STRONG> + ------------------------------------------------------------ + fixterm restore tty to "in curses" state + gettmode establish current tty modes + mvcur low level cursor motion + putp utility function that uses <STRONG>tputs</STRONG> to send char- + acters via <STRONG>putchar</STRONG>. + resetterm set tty modes to "out of curses" state + resetty reset tty flags to stored value + saveterm save current modes as "in curses" state + savetty store current tty flags + setterm establish terminal with given type + setupterm establish terminal with given type + tparm instantiate a string expression with parameters + tputs apply padding information to a string + vidattr like <STRONG>vidputs</STRONG>, but outputs through <STRONG>putchar</STRONG> + vidputs output a string to put terminal in a specified + video attribute mode + + The programming manual also mentioned functions provided for termcap + compatibility (commenting that they "may go away at a later date"): + + <STRONG>Function</STRONG> <STRONG>Description</STRONG> + ------------------------------------------------ + tgetent look up termcap entry for given <EM>name</EM> + tgetflag get boolean entry for given <EM>id</EM> + tgetnum get numeric entry for given <EM>id</EM> + tgetstr get string entry for given <EM>id</EM> + tgoto apply parameters to given capability + tputs apply padding to capability, calling + a function to put characters + + Early terminfo programs obtained capability values from the <STRONG>TERMINAL</STRONG> + structure initialized by <STRONG>setupterm</STRONG>. + + SVr3 extended terminfo by adding functions to retrieve capability val- + ues (like the termcap interface), and reusing tgoto and tputs: + + <STRONG>Function</STRONG> <STRONG>Description</STRONG> + ------------------------------------------- + tigetflag get boolean entry for given <EM>id</EM> + tigetnum get numeric entry for given <EM>id</EM> + tigetstr get string entry for given <EM>id</EM> + + SVr3 also replaced several of the SVr2 terminfo functions which had no + counterpart in the termcap interface, documenting them as obsolete: + + <STRONG>Function</STRONG> <STRONG>Replaced</STRONG> <STRONG>by</STRONG> + ----------------------------- + crmode cbreak + fixterm reset_prog_mode + gettmode N/A + nocrmode nocbreak + resetterm reset_shell_mode + saveterm def_prog_mode + setterm setupterm + + SVr3 kept the <STRONG>mvcur</STRONG>, <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> functions, along with <STRONG>putp</STRONG>, + <STRONG>tparm</STRONG> and <STRONG>tputs</STRONG>. The latter were needed to support padding, and han- + dling functions such as <STRONG>vidattr</STRONG> (which used more than the two parame- + ters supported by <STRONG>tgoto</STRONG>). + + SVr3 introduced the functions for switching between terminal descrip- + tions, e.g., <STRONG>set_curterm</STRONG>. Some of that was incremental improvements to + the SVr2 library: + + <STRONG>o</STRONG> The <STRONG>TERMINAL</STRONG> type definition was introduced in SVr3.01, for the + <STRONG>term</STRONG> structure provided in SVr2. + + <STRONG>o</STRONG> The various global variables such as <STRONG>boolnames</STRONG> were mentioned in + the programming manual at this point, though the variables were + provided in SVr2. + + SVr4 added the <STRONG>vid_attr</STRONG> and <STRONG>vid_puts</STRONG> functions. + + There are other low-level functions declared in the curses header files + on Unix systems, but none were documented. The functions marked "obso- + lete" remained in use by the Unix <STRONG>vi</STRONG> editor. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + +</PRE><H3><a name="h3-Legacy-functions">Legacy functions</a></H3><PRE> + X/Open notes that <STRONG>vidattr</STRONG> and <STRONG>vidputs</STRONG> may be macros. + + The function <STRONG>setterm</STRONG> is not described by X/Open and must be considered + non-portable. All other functions are as described by X/Open. + + +</PRE><H3><a name="h3-Legacy-data">Legacy data</a></H3><PRE> + <STRONG>setupterm</STRONG> copies the terminal name to the array <STRONG>ttytype</STRONG>. This is not + part of X/Open Curses, but is assumed by some applications. + + Other implementions may not declare the capability name arrays. Some + provide them without declaring them. X/Open does not specify them. + + Extended terminal capability names, e.g., as defined by <STRONG>tic</STRONG> <STRONG>-x</STRONG>, are not + stored in the arrays described here. + + +</PRE><H3><a name="h3-Output-buffering">Output buffering</a></H3><PRE> + Older versions of <STRONG>ncurses</STRONG> assumed that the file descriptor passed to + <STRONG>setupterm</STRONG> from <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> uses buffered I/O, and would write to + the corresponding stream. In addition to the limitation that the ter- + minal was left in block-buffered mode on exit (like System V curses), + it was problematic because <STRONG>ncurses</STRONG> did not allow a reliable way to + cleanup on receiving SIGTSTP. + + The current version (ncurses6) uses output buffers managed directly by + <STRONG>ncurses</STRONG>. Some of the low-level functions described in this manual page + write to the standard output. They are not signal-safe. The high-lev- + el functions in <STRONG>ncurses</STRONG> use alternate versions of these functions using + the more reliable buffering scheme. + + +</PRE><H3><a name="h3-Function-prototypes">Function prototypes</a></H3><PRE> + The X/Open Curses prototypes are based on the SVr4 curses header decla- + rations, which were defined at the same time the C language was first + standardized in the late 1980s. + + <STRONG>o</STRONG> X/Open Curses uses <STRONG>const</STRONG> less effectively than a later design + might, in some cases applying it needlessly to values are already + constant, and in most cases overlooking parameters which normally + would use <STRONG>const</STRONG>. Using constant parameters for functions which do + not use <STRONG>const</STRONG> may prevent the program from compiling. On the other + hand, <EM>writable</EM> <EM>strings</EM> are an obsolescent feature. + + As an extension, this implementation can be configured to change + the function prototypes to use the <STRONG>const</STRONG> keyword. The ncurses ABI + 6 enables this feature by default. + + <STRONG>o</STRONG> X/Open Curses prototypes <STRONG>tparm</STRONG> with a fixed number of parameters, + rather than a variable argument list. + + This implementation uses a variable argument list, but can be con- + figured to use the fixed-parameter list. Portable applications + should provide 9 parameters after the format; zeroes are fine for + this purpose. + + In response to review comments by Thomas E. Dickey, X/Open Curses + Issue 7 proposed the <STRONG>tiparm</STRONG> function in mid-2009. + + +</PRE><H3><a name="h3-Special-TERM-treatment">Special TERM treatment</a></H3><PRE> + If configured to use the terminal-driver, e.g., for the MinGW port, + + <STRONG>o</STRONG> <STRONG>setupterm</STRONG> interprets a missing/empty TERM variable as the special + value "unknown". + + <STRONG>o</STRONG> <STRONG>setupterm</STRONG> allows explicit use of the the windows console driver by + checking if $TERM is set to "#win32con" or an abbreviation of that + string. + + +</PRE><H3><a name="h3-Other-portability-issues">Other portability issues</a></H3><PRE> + In System V Release 4, <STRONG>set_curterm</STRONG> has an <STRONG>int</STRONG> return type and returns + <STRONG>OK</STRONG> or <STRONG>ERR</STRONG>. We have chosen to implement the X/Open Curses semantics. + + In System V Release 4, the third argument of <STRONG>tputs</STRONG> has the type <STRONG>int</STRONG> + <STRONG>(*putc)(char)</STRONG>. + + At least one implementation of X/Open Curses (Solaris) returns a value + other than <STRONG>OK</STRONG>/<STRONG>ERR</STRONG> from <STRONG>tputs</STRONG>. That returns the length of the string, + and does no error-checking. + + X/Open notes that after calling <STRONG>mvcur</STRONG>, the curses state may not match + the actual terminal state, and that an application should touch and re- + fresh the window before resuming normal curses calls. Both <STRONG>ncurses</STRONG> and + System V Release 4 curses implement <STRONG>mvcur</STRONG> using the SCREEN data allo- + cated in either <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG>. So though it is documented as a + terminfo function, <STRONG>mvcur</STRONG> is really a curses function which is not well + specified. + + X/Open states that the old location must be given for <STRONG>mvcur</STRONG>. This im- + plementation allows the caller to use -1's for the old ordinates. In + that case, the old location is unknown. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, + <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG>putc(3)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> + + + + <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Initialization">Initialization</a></li> +<li><a href="#h3-The-Terminal-State">The Terminal State</a></li> +<li><a href="#h3-Formatting-Output">Formatting Output</a></li> +<li><a href="#h3-Output-Functions">Output Functions</a></li> +<li><a href="#h3-Terminal-Capability-Functions">Terminal Capability Functions</a></li> +<li><a href="#h3-Terminal-Capability-Names">Terminal Capability Names</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a> +<ul> +<li><a href="#h3-Compatibility-macros">Compatibility macros</a></li> +</ul> +</li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-Legacy-functions">Legacy functions</a></li> +<li><a href="#h3-Legacy-data">Legacy data</a></li> +<li><a href="#h3-Output-buffering">Output buffering</a></li> +<li><a href="#h3-Function-prototypes">Function prototypes</a></li> +<li><a href="#h3-Special-TERM-treatment">Special TERM treatment</a></li> +<li><a href="#h3-Other-portability-issues">Other portability issues</a></li> +</ul> +</li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_threads.3x.html b/deps/ncurses-6.3/doc/html/man/curs_threads.3x.html new file mode 100644 index 0000000..2077b70 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_threads.3x.html @@ -0,0 +1,629 @@ +<!-- + **************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2008-2015,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. * + **************************************************************************** + * @Id: curs_threads.3x,v 1.27 2020/12/30 18:28:51 tom Exp @ + * *************************************************************************** + * *************************************************************************** +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_threads 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_threads 3x</H1> +<PRE> +<STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>curs_threads</STRONG> - <STRONG>curses</STRONG> thread support + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_WINDOW_CB)(WINDOW</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG> + <STRONG>typedef</STRONG> <STRONG>int</STRONG> <STRONG>(*NCURSES_SCREEN_CB)(SCREEN</STRONG> <STRONG>*,</STRONG> <STRONG>void</STRONG> <STRONG>*);</STRONG> + + <STRONG>int</STRONG> <STRONG>get_escdelay(void);</STRONG> + <STRONG>int</STRONG> <STRONG>set_escdelay(int</STRONG> <EM>ms</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>set_tabsize(int</STRONG> <EM>cols</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>use_screen(SCREEN</STRONG> <STRONG>*</STRONG><EM>scr</EM><STRONG>,</STRONG> <STRONG>NCURSES_SCREEN_CB</STRONG> <EM>func</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>use_window(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>NCURSES_WINDOW_CB</STRONG> <EM>func</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>data</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This implementation can be configured to provide rudimentary support + for multi-threaded applications. This makes a different set of li- + braries, e.g., <EM>libncursest</EM> since the binary interfaces are different. + + Rather than modify the interfaces to pass a thread specifier to each + function, it adds a few functions which can be used in any configura- + tion which hide the mutex's needed to prevent concurrent use of the + global variables when configured for threading. + + In addition to forcing access to members of the <STRONG>WINDOW</STRONG> structure to be + via functions (see <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>), it makes functions of the common + global variables, e.g., COLORS, COLOR_PAIRS, COLS, ESCDELAY, LINES, + TABSIZE curscr, newscr and ttytype. Those variables are maintained as + read-only values, stored in the <STRONG>SCREEN</STRONG> structure. + + Even this is not enough to make a thread-safe application using curses. + A multi-threaded application would be expected to have threads updating + separate windows (within the same device), or updating on separate + screens (on different devices). Also, a few of the global variables + are considered writable by some applications. The functions described + here address these special situations. + + The ESCDELAY and TABSIZE global variables are modified by some applica- + tions. To modify them in any configuration, use the <STRONG>set_escdelay</STRONG> or + <STRONG>set_tabsize</STRONG> functions. Other global variables are not modifiable. + + The <STRONG>get_escdelay</STRONG> function returns the value for ESCDELAY. + + The <STRONG>use_window</STRONG> and <STRONG>use_screen</STRONG> functions provide coarse granularity mu- + texes for their respective <STRONG>WINDOW</STRONG> and <STRONG>SCREEN</STRONG> parameters, and call a us- + er-supplied function, passing it a <EM>data</EM> parameter, and returning the + value from the user-supplied function to the application. + + +</PRE><H3><a name="h3-USAGE">USAGE</a></H3><PRE> + All of the ncurses library functions assume that the locale is not al- + tered during operation. In addition, they use data which is maintained + within a hierarchy of scopes. + + <STRONG>o</STRONG> global data, e.g., used in the low-level terminfo or termcap in- + terfaces. + + <STRONG>o</STRONG> terminal data, e.g., associated with a call to <EM>set</EM><STRONG>_</STRONG><EM>curterm</EM>. The + terminal data are initialized when screens are created. + + <STRONG>o</STRONG> screen data, e.g., associated with a call to <EM>newterm</EM> or <EM>initscr</EM>. + + <STRONG>o</STRONG> window data, e.g., associated with a call to <EM>newwin</EM> or <EM>subwin</EM>. + Windows are associated with screens. Pads are not necessarily + associated with a particular screen. + + Most curses applications operate on one or more windows within a + single screen. + + <STRONG>o</STRONG> reentrant, i.e., it uses only the data passed as parameters. + + This table lists the scope of data used for each symbol in the ncurses + library when it is configured to support threading: + + Symbol Scope + ------------------------------------------------------------- + BC global + COLORS screen (readonly) + COLOR_PAIR reentrant + COLOR_PAIRS screen (readonly) + COLS screen (readonly) + ESCDELAY screen (readonly, see <EM>set</EM><STRONG>_</STRONG><EM>escdelay</EM>) + LINES screen (readonly) + PAIR_NUMBER reentrant + PC global + SP global + TABSIZE screen (readonly) + UP global + acs_map screen (readonly) + add_wch window (stdscr) + add_wchnstr window (stdscr) + add_wchstr window (stdscr) + addch window (stdscr) + addchnstr window (stdscr) + addchstr window (stdscr) + addnstr window (stdscr) + addnwstr window (stdscr) + addstr window (stdscr) + addwstr window (stdscr) + assume_default_colors screen + attr_get window (stdscr) + attr_off window (stdscr) + attr_on window (stdscr) + attr_set window (stdscr) + attroff window (stdscr) + attron window (stdscr) + attrset window (stdscr) + baudrate screen + beep screen + bkgd window (stdscr) + bkgdset window (stdscr) + bkgrnd window (stdscr) + bkgrndset window (stdscr) + boolcodes global (readonly) + boolfnames global (readonly) + boolnames global (readonly) + border window (stdscr) + border_set window (stdscr) + box window (stdscr) + box_set window (stdscr) + can_change_color terminal + cbreak screen + chgat window (stdscr) + clear window (stdscr) + clearok window + clrtobot window (stdscr) + clrtoeol window (stdscr) + color_content screen + + color_set window (stdscr) + copywin window locks(source, target) + cur_term terminal + curs_set screen + curscr screen (readonly) + curses_version global (readonly) + def_prog_mode terminal + def_shell_mode terminal + define_key screen + del_curterm screen + delay_output screen + delch window (stdscr) + deleteln window (stdscr) + delscreen global locks(screenlist, screen) + delwin global locks(windowlist) + derwin screen + doupdate screen + dupwin screen locks(window) + echo screen + echo_wchar window (stdscr) + echochar window (stdscr) + endwin screen + erase window (stdscr) + erasechar window (stdscr) + erasewchar window (stdscr) + filter global + flash terminal + flushinp screen + get_wch screen (input-operation) + get_wstr screen (input-operation) + getattrs window + getbegx window + getbegy window + getbkgd window + getbkgrnd window + getcchar reentrant + getch screen (input-operation) + getcurx window + getcury window + getmaxx window + getmaxy window + getmouse screen (input-operation) + getn_wstr screen (input-operation) + getnstr screen (input-operation) + getparx window + getpary window + getstr screen (input-operation) + getwin screen (input-operation) + halfdelay screen + has_colors terminal + has_ic terminal + has_il terminal + has_key screen + hline window (stdscr) + hline_set window (stdscr) + idcok window + idlok window + immedok window + in_wch window (stdscr) + in_wchnstr window (stdscr) + in_wchstr window (stdscr) + inch window (stdscr) + inchnstr window (stdscr) + inchstr window (stdscr) + init_color screen + init_pair screen + + initscr global locks(screenlist) + innstr window (stdscr) + innwstr window (stdscr) + ins_nwstr window (stdscr) + ins_wch window (stdscr) + ins_wstr window (stdscr) + insch window (stdscr) + insdelln window (stdscr) + insertln window (stdscr) + insnstr window (stdscr) + insstr window (stdscr) + instr window (stdscr) + intrflush terminal + inwstr window (stdscr) + is_cleared window + is_idcok window + is_idlok window + is_immedok window + is_keypad window + is_leaveok window + is_linetouched window + is_nodelay window + is_notimeout window + is_scrollok window + is_syncok window + is_term_resized terminal + is_wintouched window + isendwin screen + key_defined screen + key_name global (static data) + keybound screen + keyname global (static data) + keyok screen + keypad window + killchar terminal + killwchar terminal + leaveok window + longname screen + mcprint terminal + meta screen + mouse_trafo window (stdscr) + mouseinterval screen + mousemask screen + move window (stdscr) + mvadd_wch window (stdscr) + mvadd_wchnstr window (stdscr) + mvadd_wchstr window (stdscr) + mvaddch window (stdscr) + mvaddchnstr window (stdscr) + mvaddchstr window (stdscr) + mvaddnstr window (stdscr) + mvaddnwstr window (stdscr) + mvaddstr window (stdscr) + mvaddwstr window (stdscr) + mvchgat window (stdscr) + mvcur screen + mvdelch window (stdscr) + mvderwin window (stdscr) + mvget_wch screen (input-operation) + mvget_wstr screen (input-operation) + mvgetch screen (input-operation) + mvgetn_wstr screen (input-operation) + mvgetnstr screen (input-operation) + mvgetstr screen (input-operation) + mvhline window (stdscr) + mvhline_set window (stdscr) + + mvin_wch window (stdscr) + mvin_wchnstr window (stdscr) + mvin_wchstr window (stdscr) + mvinch window (stdscr) + mvinchnstr window (stdscr) + mvinchstr window (stdscr) + mvinnstr window (stdscr) + mvinnwstr window (stdscr) + mvins_nwstr window (stdscr) + mvins_wch window (stdscr) + mvins_wstr window (stdscr) + mvinsch window (stdscr) + mvinsnstr window (stdscr) + mvinsstr window (stdscr) + mvinstr window (stdscr) + mvinwstr window (stdscr) + mvprintw window (stdscr) + mvscanw screen + mvvline window (stdscr) + mvvline_set window (stdscr) + mvwadd_wch window + mvwadd_wchnstr window + mvwadd_wchstr window + mvwaddch window + mvwaddchnstr window + mvwaddchstr window + mvwaddnstr window + mvwaddnwstr window + mvwaddstr window + mvwaddwstr window + mvwchgat window + mvwdelch window + mvwget_wch screen (input-operation) + mvwget_wstr screen (input-operation) + mvwgetch screen (input-operation) + mvwgetn_wstr screen (input-operation) + mvwgetnstr screen (input-operation) + mvwgetstr screen (input-operation) + mvwhline window + mvwhline_set window + mvwin window + mvwin_wch window + mvwin_wchnstr window + mvwin_wchstr window + mvwinch window + mvwinchnstr window + mvwinchstr window + mvwinnstr window + mvwinnwstr window + mvwins_nwstr window + mvwins_wch window + mvwins_wstr window + mvwinsch window + mvwinsnstr window + mvwinsstr window + mvwinstr window + mvwinwstr window + mvwprintw window + mvwscanw screen + mvwvline window + mvwvline_set window + napms reentrant + newpad global locks(windowlist) + newscr screen (readonly) + newterm global locks(screenlist) + newwin global locks(windowlist) + + nl screen + nocbreak screen + nodelay window + noecho screen + nofilter global + nonl screen + noqiflush terminal + noraw screen + notimeout window + numcodes global (readonly) + numfnames global (readonly) + numnames global (readonly) + ospeed global + overlay window locks(source, target) + overwrite window locks(source, target) + pair_content screen + pecho_wchar screen + pechochar screen + pnoutrefresh screen + prefresh screen + printw window + putp global + putwin window + qiflush terminal + raw screen + redrawwin window + refresh screen + reset_prog_mode screen + reset_shell_mode screen + resetty terminal + resize_term screen locks(windowlist) + resizeterm screen + restartterm screen + ripoffline global (static data) + savetty terminal + scanw screen + scr_dump screen + scr_init screen + scr_restore screen + scr_set screen + scrl window (stdscr) + scroll window + scrollok window + set_curterm screen + set_escdelay screen + set_tabsize screen + set_term global locks(screenlist, screen) + setcchar reentrant + setscrreg window (stdscr) + setupterm global + slk_attr screen + slk_attr_off screen + slk_attr_on screen + slk_attr_set screen + slk_attroff screen + slk_attron screen + slk_attrset screen + slk_clear screen + slk_color screen + slk_init screen + slk_label screen + slk_noutrefresh screen + slk_refresh screen + slk_restore screen + slk_set screen + slk_touch screen + + slk_wset screen + standend window + standout window + start_color screen + stdscr screen (readonly) + strcodes global (readonly) + strfnames global (readonly) + strnames global (readonly) + subpad window + subwin window + syncok window + term_attrs screen + termattrs screen + termname terminal + tgetent global + tgetflag global + tgetnum global + tgetstr global + tgoto global + tigetflag terminal + tigetnum terminal + tigetstr terminal + timeout window (stdscr) + touchline window + touchwin window + tparm global (static data) + tputs screen + trace global (static data) + ttytype screen (readonly) + typeahead screen + unctrl screen + unget_wch screen (input-operation) + ungetch screen (input-operation) + ungetmouse screen (input-operation) + untouchwin window + use_default_colors screen + use_env global (static data) + use_extended_names global (static data) + use_legacy_coding screen + use_screen global locks(screenlist, screen) + use_window global locks(windowlist, window) + vid_attr screen + vid_puts screen + vidattr screen + vidputs screen + vline window (stdscr) + vline_set window (stdscr) + vw_printw window + vw_scanw screen + vwprintw window + vwscanw screen + wadd_wch window + wadd_wchnstr window + wadd_wchstr window + waddch window + waddchnstr window + waddchstr window + waddnstr window + waddnwstr window + waddstr window + waddwstr window + wattr_get window + wattr_off window + wattr_on window + wattr_set window + wattroff window + + wattron window + wattrset window + wbkgd window + wbkgdset window + wbkgrnd window + wbkgrndset window + wborder window + wborder_set window + wchgat window + wclear window + wclrtobot window + wclrtoeol window + wcolor_set window + wcursyncup screen (affects window plus parents) + wdelch window + wdeleteln window + wecho_wchar window + wechochar window + wenclose window + werase window + wget_wch screen (input-operation) + wget_wstr screen (input-operation) + wgetbkgrnd window + wgetch screen (input-operation) + wgetdelay window + wgetn_wstr screen (input-operation) + wgetnstr screen (input-operation) + wgetparent window + wgetscrreg window + wgetstr screen (input-operation) + whline window + whline_set window + win_wch window + win_wchnstr window + win_wchstr window + winch window + winchnstr window + winchstr window + winnstr window + winnwstr window + wins_nwstr window + wins_wch window + wins_wstr window + winsch window + winsdelln window + winsertln window + winsnstr window + winsstr window + winstr window + winwstr window + wmouse_trafo window + wmove window + wnoutrefresh screen + wprintw window + wredrawln window + wrefresh screen + wresize window locks(windowlist) + wscanw screen + wscrl window + wsetscrreg window + wstandend window + wstandout window + wsyncdown screen (affects window plus parents) + wsyncup screen (affects window plus parents) + wtimeout window + wtouchln window + + wunctrl global (static data) + wvline window + wvline_set window + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These functions all return <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>, except as noted. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Both a macro and a function are provided for each name. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on ncurses extensions be conditioned using NCURSES_VER- + SION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-USAGE">USAGE</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_touch.3x.html b/deps/ncurses-6.3/doc/html/man/curs_touch.3x.html new file mode 100644 index 0000000..7f7f9ee --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_touch.3x.html @@ -0,0 +1,149 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: curs_touch.3x,v 1.24 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_touch 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_touch 3x</H1> +<PRE> +<STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>touchwin</STRONG>, <STRONG>touchline</STRONG>, <STRONG>untouchwin</STRONG>, <STRONG>wtouchln</STRONG>, <STRONG>is_linetouched</STRONG>, + <STRONG>is_wintouched</STRONG> - <STRONG>curses</STRONG> refresh control routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>touchline(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>start</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>count</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>touchwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>wtouchln(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>changed</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>untouchwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>bool</STRONG> <STRONG>is_linetouched(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>line</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>is_wintouched(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>touchwin</STRONG> and <STRONG>touchline</STRONG> routines throw away all optimization infor- + mation about which parts of the window have been touched, by pretending + that the entire window has been drawn on. This is sometimes necessary + when using overlapping windows, since a change to one window affects + the other window, but the records of which lines have been changed in + the other window do not reflect the change. The routine <STRONG>touchline</STRONG> only + pretends that <EM>count</EM> lines have been changed, beginning with line <EM>start</EM>. + + The <STRONG>untouchwin</STRONG> routine marks all lines in the window as unchanged since + the last call to <STRONG>wrefresh</STRONG>. + + The <STRONG>wtouchln</STRONG> routine makes <EM>n</EM> lines in the window, starting at line <EM>y</EM>, + look as if they have (<EM>changed</EM><STRONG>=1</STRONG>) or have not (<EM>changed</EM><STRONG>=0</STRONG>) been changed + since the last call to <STRONG>wrefresh</STRONG>. + + The <STRONG>is_linetouched</STRONG> and <STRONG>is_wintouched</STRONG> routines return <STRONG>TRUE</STRONG> if the speci- + fied line/window was modified since the last call to <STRONG>wrefresh</STRONG>; other- + wise they return <STRONG>FALSE</STRONG>. In addition, <STRONG>is_linetouched</STRONG> returns <STRONG>ERR</STRONG> if + <EM>line</EM> is not valid for the given window. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + All routines return the integer <STRONG>ERR</STRONG> upon failure and an integer value + other than <STRONG>ERR</STRONG> upon successful completion, unless otherwise noted in + the preceding routine descriptions. + + X/Open does not define any error conditions. In this implementation + + <STRONG>is_linetouched</STRONG> + returns an error if the window pointer is null, or if the line + number is outside the window. + + The constant <STRONG>ERR</STRONG> is distinct from <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG>, which are the + normal return values of this function. Because the function + returns a <STRONG>bool</STRONG>, returning <STRONG>ERR</STRONG> (which is neither <STRONG>TRUE</STRONG> nor <STRONG>FALSE</STRONG>) + may not be supported by the compiler. + + To provide error-checking and also match the X/Open function + prototype, the <STRONG>ERR</STRONG> is provided by a macro named <STRONG>is_linetouched</STRONG>. + The actual function returns <STRONG>FALSE</STRONG> when it detects an error. + + <STRONG>wtouchln</STRONG> + returns an error if the window pointer is null, or if the line + number is outside the window. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions were introduced by SVr4. The Solaris curses header + file, for instance, defines both an actual function and macro for each. + The macros give the same result as the actual functions. SVr4 curses + does not check the window parameter <EM>win</EM> to ensure that it is not <STRONG>NULL</STRONG>; + otherwise this implementation behaves the same as SVr4. + + The XSI Curses standard, Issue 4 describes these functions, but defines + no error conditions. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + All of these routines except <STRONG>wtouchln</STRONG> may be macros. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_trace.3x.html b/deps/ncurses-6.3/doc/html/man/curs_trace.3x.html new file mode 100644 index 0000000..658be0e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_trace.3x.html @@ -0,0 +1,280 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2000-2016,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. * + **************************************************************************** + * @Id: curs_trace.3x,v 1.21 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_trace 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_trace 3x</H1> +<PRE> +<STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>curses_trace</STRONG>, <STRONG>trace</STRONG>, <STRONG>_tracef</STRONG>, <STRONG>_traceattr</STRONG>, <STRONG>_traceattr2</STRONG>, <STRONG>_tracecchar_t</STRONG>, + <STRONG>_tracecchar_t2</STRONG>, <STRONG>_tracechar</STRONG>, <STRONG>_tracechtype</STRONG>, <STRONG>_tracechtype2</STRONG>, <STRONG>_nc_tracebits</STRONG>, + <STRONG>_tracedump</STRONG>, <STRONG>_tracemouse</STRONG> - <STRONG>curses</STRONG> debugging routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>unsigned</STRONG> <STRONG>curses_trace(const</STRONG> <STRONG>unsigned</STRONG> <EM>param</EM><STRONG>);</STRONG> + + <STRONG>void</STRONG> <STRONG>_tracef(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>format</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + + <STRONG>char</STRONG> <STRONG>*_traceattr(attr_t</STRONG> <EM>attr</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*_traceattr2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*_tracecchar_t(const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*_tracecchar_t2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>cchar_t</STRONG> <STRONG>*</STRONG><EM>string</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*_tracechar(int</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*_tracechtype(chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*_tracechtype2(int</STRONG> <EM>buffer</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>ch</EM><STRONG>);</STRONG> + + <STRONG>void</STRONG> <STRONG>_tracedump(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>label</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*_nc_tracebits(void);</STRONG> + <STRONG>char</STRONG> <STRONG>*_tracemouse(const</STRONG> <STRONG>MEVENT</STRONG> <STRONG>*</STRONG><EM>event</EM><STRONG>);</STRONG> + + /* deprecated */ + <STRONG>void</STRONG> <STRONG>trace(const</STRONG> <STRONG>unsigned</STRONG> <STRONG>int</STRONG> <EM>param</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <EM>curses</EM> <EM>trace</EM> routines are used for debugging the ncurses libraries, + as well as applications which use the ncurses libraries. Some limita- + tions apply: + + <STRONG>o</STRONG> Aside from <STRONG>curses_trace</STRONG>, the other functions are normally available + only with the debugging library e.g., <EM>libncurses</EM><STRONG>_</STRONG><EM>g.a</EM>. + + All of the trace functions may be compiled into any model (shared, + static, profile) by defining the symbol <STRONG>TRACE</STRONG>. + + <STRONG>o</STRONG> Additionally, the functions which use <STRONG>cchar_t</STRONG> are only available + with the wide-character configuration of the libraries. + + +</PRE><H3><a name="h3-Functions">Functions</a></H3><PRE> + The principal parts of this interface are + + <STRONG>o</STRONG> <STRONG>curses_trace</STRONG>, which selectively enables different tracing features, + and + + <STRONG>o</STRONG> <STRONG>_tracef</STRONG>, which writes formatted data to the <EM>trace</EM> file. + + The other functions either return a pointer to a string-area (allo- + cated by the corresponding function), or return no value (such as + <STRONG>_tracedump</STRONG>, which implements the screen dump for <STRONG>TRACE_UPDATE</STRONG>). + The caller should not free these strings, since the allocation is + reused on successive calls. To work around the problem of a single + string-area per function, some use a buffer-number parameter, + telling the library to allocate additional string-areas. + + The <STRONG>curses_trace</STRONG> function is always available, whether or not the other + trace functions are available: + + <STRONG>o</STRONG> If tracing is available, calling <STRONG>curses_trace</STRONG> with a nonzero param- + eter updates the trace mask, and returns the previous trace mask. + + When the trace mask is nonzero, ncurses creates the file "trace" in + the current directory for output. If the file already exists, no + tracing is done. + + <STRONG>o</STRONG> If tracing is not available, <STRONG>curses_trace</STRONG> returns zero (0). + + +</PRE><H3><a name="h3-Trace-Parameter">Trace Parameter</a></H3><PRE> + The trace parameter is formed by OR'ing values from the list of + <STRONG>TRACE_</STRONG><EM>xxx</EM> definitions in <STRONG>&lt;curses.h&gt;</STRONG>. These include: + + <STRONG>TRACE_DISABLE</STRONG> + turn off tracing by passing a zero parameter. + + The library flushes the output file, but retains an open file-de- + scriptor to the trace file so that it can resume tracing later if + a nonzero parameter is passed to the <STRONG>curses_trace</STRONG> function. + + <STRONG>TRACE_TIMES</STRONG> + trace user and system times of updates. + + <STRONG>TRACE_TPUTS</STRONG> + trace <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> calls. + + <STRONG>TRACE_UPDATE</STRONG> + trace update actions, old &amp; new screens. + + <STRONG>TRACE_MOVE</STRONG> + trace cursor movement and scrolling. + + <STRONG>TRACE_CHARPUT</STRONG> + trace all character outputs. + + <STRONG>TRACE_ORDINARY</STRONG> + trace all update actions. The old and new screen contents are + written to the trace file for each refresh. + + <STRONG>TRACE_CALLS</STRONG> + trace all curses calls. The parameters for each call are traced, + as well as return values. + + <STRONG>TRACE_VIRTPUT</STRONG> + trace virtual character puts, i.e., calls to <STRONG>addch</STRONG>. + + <STRONG>TRACE_IEVENT</STRONG> + trace low-level input processing, including timeouts. + + <STRONG>TRACE_BITS</STRONG> + trace state of TTY control bits. + + <STRONG>TRACE_ICALLS</STRONG> + trace internal/nested calls. + + <STRONG>TRACE_CCALLS</STRONG> + trace per-character calls. + + <STRONG>TRACE_DATABASE</STRONG> + trace read/write of terminfo/termcap data. + + <STRONG>TRACE_ATTRS</STRONG> + trace changes to video attributes and colors. + + <STRONG>TRACE_MAXIMUM</STRONG> + maximum trace level, enables all of the separate trace features. + + Some tracing features are enabled whenever the <STRONG>curses_trace</STRONG> parameter + is nonzero. Some features overlap. The specific names are used as a + guideline. + + +</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE> + These functions check the <STRONG>NCURSES_TRACE</STRONG> environment variable, to set + the tracing feature as if <STRONG>curses_trace</STRONG> was called: + + filter, initscr, new_prescr, newterm, nofilter, restartterm, + ripoffline, setupterm, slk_init, tgetent, use_env, + use_extended_names, use_tioctl + + +</PRE><H3><a name="h3-Command-line-Utilities">Command-line Utilities</a></H3><PRE> + The command-line utilities such as <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG> provide a verbose option + which extends the set of messages written using the <STRONG>curses_trace</STRONG> func- + tion. Both of these (<STRONG>-v</STRONG> and <STRONG>curses_trace</STRONG>) use the same variable + (<STRONG>_nc_tracing</STRONG>), which determines the messages which are written. + + Because the command-line utilities may call initialization functions + such as <STRONG>setupterm</STRONG>, <STRONG>tgetent</STRONG> or <STRONG>use_extended_names</STRONG>, some of their debug- + ging output may be directed to the <EM>trace</EM> file if the <STRONG>NCURSES_TRACE</STRONG> en- + vironment variable is set: + + <STRONG>o</STRONG> messages produced in the utility are written to the standard error. + + <STRONG>o</STRONG> messages produced by the underlying library are written to <EM>trace</EM>. + + If ncurses is built without tracing, none of the latter are produced, + and fewer diagnostics are provided by the command-line utilities. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines which return a value are designed to be used as parameters to + the <STRONG>_tracef</STRONG> routine. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These functions are not part of the XSI interface. Some other curses + implementations are known to have similar features, but they are not + compatible with ncurses: + + <STRONG>o</STRONG> SVr4 provided <STRONG>traceon</STRONG> and <STRONG>traceoff</STRONG>, to control whether debugging + information was written to the "trace" file. While the functions + were always available, this feature was only enabled if <STRONG>DEBUG</STRONG> was + defined when building the library. + + The SVr4 tracing feature is undocumented. + + <STRONG>o</STRONG> PDCurses provides <STRONG>traceon</STRONG> and <STRONG>traceoff</STRONG>, which (like SVr4) are al- + ways available, and enable tracing to the "trace" file only when a + debug-library is built. + + PDCurses has a short description of these functions, with a note + that they are not present in X/Open Curses, ncurses or NetBSD. It + does not mention SVr4, but the functions' inclusion in a header + file section labeled "Quasi-standard" hints at the origin. + + <STRONG>o</STRONG> NetBSD does not provide functions for enabling/disabling traces. + It uses environment variables <STRONG>CURSES_TRACE_MASK</STRONG> and <STRONG>CURS-</STRONG> + <STRONG>ES_TRACE_FILE</STRONG> to determine what is traced, and where the results + are written. This is available only when a debug-library is built. + + The NetBSD tracing feature is undocumented. + + A few ncurses functions are not provided when symbol versioning is + used: + + _nc_tracebits, _tracedump, _tracemouse + + The original <STRONG>trace</STRONG> routine was deprecated because it often conflicted + with application names. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Functions">Functions</a></li> +<li><a href="#h3-Trace-Parameter">Trace Parameter</a></li> +<li><a href="#h3-Initialization">Initialization</a></li> +<li><a href="#h3-Command-line-Utilities">Command-line Utilities</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_util.3x.html b/deps/ncurses-6.3/doc/html/man/curs_util.3x.html new file mode 100644 index 0000000..7e61efa --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_util.3x.html @@ -0,0 +1,393 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: curs_util.3x,v 1.60 2020/12/19 22:44:46 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_util 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_util 3x</H1> +<PRE> +<STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>delay_output</STRONG>, <STRONG>filter</STRONG>, <STRONG>flushinp</STRONG>, <STRONG>getwin</STRONG>, <STRONG>key_name</STRONG>, <STRONG>keyname</STRONG>, <STRONG>nofilter</STRONG>, + <STRONG>putwin</STRONG>, <STRONG>unctrl</STRONG>, <STRONG>use_env</STRONG>, <STRONG>use_tioctl</STRONG>, <STRONG>wunctrl</STRONG> - miscellaneous <STRONG>curses</STRONG> + utility routines + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*unctrl(chtype</STRONG> <EM>c</EM><STRONG>);</STRONG> + <STRONG>wchar_t</STRONG> <STRONG>*wunctrl(cchar_t</STRONG> <STRONG>*</STRONG><EM>c</EM><STRONG>);</STRONG> + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*keyname(int</STRONG> <EM>c</EM><STRONG>);</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*key_name(wchar_t</STRONG> <EM>w</EM><STRONG>);</STRONG> + + <STRONG>void</STRONG> <STRONG>filter(void);</STRONG> + <STRONG>void</STRONG> <STRONG>nofilter(void);</STRONG> + + <STRONG>void</STRONG> <STRONG>use_env(bool</STRONG> <EM>f</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>use_tioctl(bool</STRONG> <EM>f</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>putwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>FILE</STRONG> <STRONG>*</STRONG><EM>filep</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*getwin(FILE</STRONG> <STRONG>*</STRONG><EM>filep</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>delay_output(int</STRONG> <EM>ms</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>flushinp(void);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-unctrl">unctrl</a></H3><PRE> + The <STRONG>unctrl</STRONG> routine returns a character string which is a printable rep- + resentation of the character <EM>c</EM>, ignoring attributes. Control charac- + ters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation. Printing characters are dis- + played as is. The corresponding <STRONG>wunctrl</STRONG> returns a printable represen- + tation of a wide character. + + +</PRE><H3><a name="h3-keyname_key_name">keyname/key_name</a></H3><PRE> + The <STRONG>keyname</STRONG> routine returns a character string corresponding to the key + <EM>c</EM>: + + <STRONG>o</STRONG> Printable characters are displayed as themselves, e.g., a one-char- + acter string containing the key. + + <STRONG>o</STRONG> Control characters are displayed in the <STRONG>^</STRONG><EM>X</EM> notation. + + <STRONG>o</STRONG> DEL (character 127) is displayed as <STRONG>^?</STRONG>. + + <STRONG>o</STRONG> Values above 128 are either meta characters (if the screen has not + been initialized, or if <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> has been called with a <STRONG>TRUE</STRONG> param- + eter), shown in the <STRONG>M-</STRONG><EM>X</EM> notation, or are displayed as themselves. + In the latter case, the values may not be printable; this follows + the X/Open specification. + + <STRONG>o</STRONG> Values above 256 may be the names of the names of function keys. + + <STRONG>o</STRONG> Otherwise (if there is no corresponding name) the function returns + null, to denote an error. X/Open also lists an "UNKNOWN KEY" re- + turn value, which some implementations return rather than null. + + The corresponding <STRONG>key_name</STRONG> returns a character string corresponding to + the wide-character value <EM>w</EM>. The two functions do not return the same + set of strings; the latter returns null where the former would display + a meta character. + + +</PRE><H3><a name="h3-filter_nofilter">filter/nofilter</a></H3><PRE> + The <STRONG>filter</STRONG> routine, if used, must be called before <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> + are called. Calling <STRONG>filter</STRONG> causes these changes in initialization: + + <STRONG>o</STRONG> <STRONG>LINES</STRONG> is set to 1; + + <STRONG>o</STRONG> the capabilities <STRONG>clear</STRONG>, <STRONG>cud1</STRONG>, <STRONG>cud</STRONG>, <STRONG>cup</STRONG>, <STRONG>cuu1</STRONG>, <STRONG>cuu</STRONG>, <STRONG>vpa</STRONG> are dis- + abled; + + <STRONG>o</STRONG> the capability <STRONG>ed</STRONG> is disabled if <STRONG>bce</STRONG> is set; + + <STRONG>o</STRONG> and the <STRONG>home</STRONG> string is set to the value of <STRONG>cr</STRONG>. + + The <STRONG>nofilter</STRONG> routine cancels the effect of a preceding <STRONG>filter</STRONG> call. + That allows the caller to initialize a screen on a different device, + using a different value of <STRONG>$TERM</STRONG>. The limitation arises because the + <STRONG>filter</STRONG> routine modifies the in-memory copy of the terminal information. + + +</PRE><H3><a name="h3-use_env">use_env</a></H3><PRE> + The <STRONG>use_env</STRONG> routine, if used, should be called before <STRONG>initscr</STRONG> or + <STRONG>newterm</STRONG> are called (because those compute the screen size). It modi- + fies the way <STRONG>ncurses</STRONG> treats environment variables when determining the + screen size. + + <STRONG>o</STRONG> Normally <STRONG>ncurses</STRONG> looks first at the terminal database for the + screen size. + + If <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> for parameter, it stops here un- + less <STRONG>use_tioctl</STRONG> was also called with <STRONG>TRUE</STRONG> for parameter. + + <STRONG>o</STRONG> Then it asks for the screen size via operating system calls. If + successful, it overrides the values from the terminal database. + + <STRONG>o</STRONG> Finally (unless <STRONG>use_env</STRONG> was called with <STRONG>FALSE</STRONG> parameter), <STRONG>ncurses</STRONG> + examines the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> environment variables, using a value + in those to override the results from the operating system or ter- + minal database. + + <STRONG>Ncurses</STRONG> also updates the screen size in response to <STRONG>SIGWINCH</STRONG>, un- + less overridden by the <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> environment variables, + + +</PRE><H3><a name="h3-use_tioctl">use_tioctl</a></H3><PRE> + The <STRONG>use_tioctl</STRONG> routine, if used, should be called before <STRONG>initscr</STRONG> or + <STRONG>newterm</STRONG> are called (because those compute the screen size). After + <STRONG>use_tioctl</STRONG> is called with <STRONG>TRUE</STRONG> as an argument, <STRONG>ncurses</STRONG> modifies the + last step in its computation of screen size as follows: + + <STRONG>o</STRONG> checks if the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables are set to a + number greater than zero. + + <STRONG>o</STRONG> for each, <STRONG>ncurses</STRONG> updates the corresponding environment variable + with the value that it has obtained via operating system call or + from the terminal database. + + <STRONG>o</STRONG> <STRONG>ncurses</STRONG> re-fetches the value of the environment variables so that + it is still the environment variables which set the screen size. + + The <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> routines combine as summarized here: + + <EM>use</EM><STRONG>_</STRONG><EM>env</EM> <EM>use</EM><STRONG>_</STRONG><EM>tioctl</EM> <EM>Summary</EM> + ---------------------------------------------------------------- + TRUE FALSE This is the default behavior. <STRONG>ncurses</STRONG> + uses operating system calls unless over- + ridden by $LINES or $COLUMNS environment + variables. + + TRUE TRUE <STRONG>ncurses</STRONG> updates $LINES and $COLUMNS + based on operating system calls. + FALSE TRUE <STRONG>ncurses</STRONG> ignores $LINES and $COLUMNS, us- + es operating system calls to obtain + size. + FALSE FALSE <STRONG>ncurses</STRONG> relies on the terminal database + to determine size. + + +</PRE><H3><a name="h3-putwin_getwin">putwin/getwin</a></H3><PRE> + The <STRONG>putwin</STRONG> routine writes all data associated with window (or pad) <EM>win</EM> + into the file to which <EM>filep</EM> points. This information can be later re- + trieved using the <STRONG>getwin</STRONG> function. + + The <STRONG>getwin</STRONG> routine reads window related data stored in the file by + <STRONG>putwin</STRONG>. The routine then creates and initializes a new window using + that data. It returns a pointer to the new window. There are a few + caveats: + + <STRONG>o</STRONG> the data written is a copy of the <STRONG>WINDOW</STRONG> structure, and its associ- + ated character cells. The format differs between the wide-charac- + ter (<STRONG>ncursesw</STRONG>) and non-wide (<STRONG>ncurses</STRONG>) libraries. You can transfer + data between the two, however. + + <STRONG>o</STRONG> the retrieved window is always created as a top-level window (or + pad), rather than a subwindow. + + <STRONG>o</STRONG> the window's character cells contain the color pair <EM>value</EM>, but not + the actual color <EM>numbers</EM>. If cells in the retrieved window use + color pairs which have not been created in the application using + <STRONG>init_pair</STRONG>, they will not be colored when the window is refreshed. + + +</PRE><H3><a name="h3-delay_output">delay_output</a></H3><PRE> + The <STRONG>delay_output</STRONG> routine inserts an <EM>ms</EM> millisecond pause in output. + This routine should not be used extensively because padding characters + are used rather than a CPU pause. If no padding character is speci- + fied, this uses <STRONG>napms</STRONG> to perform the delay. + + +</PRE><H3><a name="h3-flushinp">flushinp</a></H3><PRE> + The <STRONG>flushinp</STRONG> routine throws away any typeahead that has been typed by + the user and has not yet been read by the program. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except for <STRONG>flushinp</STRONG>, routines that return an integer return <STRONG>ERR</STRONG> upon + failure and <STRONG>OK</STRONG> (SVr4 specifies only "an integer value other than <STRONG>ERR</STRONG>") + upon successful completion. + + Routines that return pointers return <STRONG>NULL</STRONG> on error. + + X/Open does not define any error conditions. In this implementation + + <STRONG>flushinp</STRONG> + returns an error if the terminal was not initialized. + + <STRONG>putwin</STRONG> + returns an error if the associated <STRONG>fwrite</STRONG> calls return an er- + ror. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + +</PRE><H3><a name="h3-filter">filter</a></H3><PRE> + The SVr4 documentation describes the action of <STRONG>filter</STRONG> only in the + vaguest terms. The description here is adapted from the XSI Curses + standard (which erroneously fails to describe the disabling of <STRONG>cuu</STRONG>). + + +</PRE><H3><a name="h3-keyname">keyname</a></H3><PRE> + The <STRONG>keyname</STRONG> function may return the names of user-defined string capa- + bilities which are defined in the terminfo entry via the <STRONG>-x</STRONG> option of + <STRONG>tic</STRONG>. 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. The <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function controls + whether this data is loaded when the terminal description is read by + the library. + + +</PRE><H3><a name="h3-nofilter_use_tioctl">nofilter/use_tioctl</a></H3><PRE> + The <STRONG>nofilter</STRONG> and <STRONG>use_tioctl</STRONG> routines are specific to <STRONG>ncurses</STRONG>. They + were not supported on Version 7, BSD or System V implementations. It + is recommended that any code depending on <STRONG>ncurses</STRONG> extensions be condi- + tioned using NCURSES_VERSION. + + +</PRE><H3><a name="h3-putwin_getwin">putwin/getwin</a></H3><PRE> + The <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG> functions have several issues with portability: + + <STRONG>o</STRONG> The files written and read by these functions use an implementa- + tion-specific format. Although the format is an obvious target for + standardization, it has been overlooked. + + Interestingly enough, according to the copyright dates in Solaris + source, the functions (along with <STRONG>scr_init</STRONG>, 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. + + <STRONG>o</STRONG> Most implementations simply dump the binary <STRONG>WINDOW</STRONG> structure to the + file. These include SVr4 curses, NetBSD and PDCurses, as well as + older <STRONG>ncurses</STRONG> versions. This implementation (as well as the X/Open + variant of Solaris curses, dated 1995) uses textual dumps. + + The implementations which use binary dumps use block-I/O (the + <STRONG>fwrite</STRONG> and <STRONG>fread</STRONG> 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. + + +</PRE><H3><a name="h3-unctrl_wunctrl">unctrl/wunctrl</a></H3><PRE> + The XSI Curses standard, Issue 4 describes these functions. It states + that <STRONG>unctrl</STRONG> and <STRONG>wunctrl</STRONG> will return a null pointer if unsuccessful, but + does not define any error conditions. This implementation checks for + three cases: + + <STRONG>o</STRONG> the parameter is a 7-bit US-ASCII code. This is the case that + X/Open Curses documented. + + <STRONG>o</STRONG> the parameter is in the range 128-159, i.e., a C1 control code. If + <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG> has been called with a <STRONG>2</STRONG> parameter, <STRONG>unctrl</STRONG> + returns the parameter, i.e., a one-character string with the param- + eter as the first character. Otherwise, it returns "~@", "~A", + etc., analogous to "^@", "^A", C0 controls. + + X/Open Curses does not document whether <STRONG>unctrl</STRONG> can be called before + initializing curses. This implementation permits that, and returns + the "~@", etc., values in that case. + + <STRONG>o</STRONG> parameter values outside the 0 to 255 range. <STRONG>unctrl</STRONG> returns a null + pointer. + + The strings returned by <STRONG>unctrl</STRONG> in this implementation are determined at + compile time, showing C1 controls from the upper-128 codes with a "~" + prefix rather than "^". Other implementations have different conven- + tions. 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 + <STRONG><A HREF="legacy_coding.3x.html">use_legacy_coding(3x)</A></STRONG> function allows the caller to change the output + of <STRONG>unctrl</STRONG>. + + Likewise, the <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> function allows the caller to change the output + of <STRONG>keyname</STRONG>, i.e., it determines whether to use the "M-" prefix for + "meta" keys (codes in the range 128 to 255). Both <STRONG>use_legacy_cod-</STRONG> + <STRONG><A HREF="use_legacy_coding.3x.html">ing(3x)</A></STRONG> and <STRONG><A HREF="curs_inopts.3x.html">meta(3x)</A></STRONG> succeed only after curses is initialized. X/Open + Curses does not document the treatment of codes 128 to 159. When + treating them as "meta" keys (or if <STRONG>keyname</STRONG> is called before initializ- + ing curses), this implementation returns strings "M-^@", "M-^A", etc. + + X/Open Curses documents <STRONG>unctrl</STRONG> as declared in <STRONG>&lt;unctrl.h&gt;</STRONG>, which <STRONG>ncurses</STRONG> + does. However, <STRONG>ncurses</STRONG>' <STRONG>&lt;curses.h&gt;</STRONG> includes <STRONG>&lt;unctrl.h&gt;</STRONG>, matching the + behavior of SVr4 curses. Other implementations may not do that. + + +</PRE><H3><a name="h3-use_env_use_tioctl">use_env/use_tioctl</a></H3><PRE> + If <STRONG>ncurses</STRONG> is configured to provide the sp-functions extension, the + state of <STRONG>use_env</STRONG> and <STRONG>use_tioctl</STRONG> may be updated before creating each + <EM>screen</EM> rather than once only (<STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>). This feature of + <STRONG>use_env</STRONG> is not provided by other implementation of curses. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>, <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG>, <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, + <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>legacy_cod-</STRONG> + <STRONG><A HREF="legacy_coding.3x.html">ing(3x)</A></STRONG>. + + + + <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-unctrl">unctrl</a></li> +<li><a href="#h3-keyname_key_name">keyname/key_name</a></li> +<li><a href="#h3-filter_nofilter">filter/nofilter</a></li> +<li><a href="#h3-use_env">use_env</a></li> +<li><a href="#h3-use_tioctl">use_tioctl</a></li> +<li><a href="#h3-putwin_getwin">putwin/getwin</a></li> +<li><a href="#h3-delay_output">delay_output</a></li> +<li><a href="#h3-flushinp">flushinp</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-filter">filter</a></li> +<li><a href="#h3-keyname">keyname</a></li> +<li><a href="#h3-nofilter_use_tioctl">nofilter/use_tioctl</a></li> +<li><a href="#h3-putwin_getwin">putwin/getwin</a></li> +<li><a href="#h3-unctrl_wunctrl">unctrl/wunctrl</a></li> +<li><a href="#h3-use_env_use_tioctl">use_env/use_tioctl</a></li> +</ul> +</li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_variables.3x.html b/deps/ncurses-6.3/doc/html/man/curs_variables.3x.html new file mode 100644 index 0000000..471b348 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_variables.3x.html @@ -0,0 +1,220 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2010-2015,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. * + **************************************************************************** + * @Id: curs_variables.3x,v 1.15 2020/04/18 14:29:07 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_variables 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_variables 3x</H1> +<PRE> +<STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>COLORS</STRONG>, <STRONG>COLOR_PAIRS</STRONG>, <STRONG>COLS</STRONG>, <STRONG>ESCDELAY</STRONG>, <STRONG>LINES</STRONG>, <STRONG>TABSIZE</STRONG>, <STRONG>curscr</STRONG>, <STRONG>newscr</STRONG>, + <STRONG>stdscr</STRONG> - <STRONG>curses</STRONG> global variables + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>COLOR_PAIRS;</STRONG> + <STRONG>int</STRONG> <STRONG>COLORS;</STRONG> + <STRONG>int</STRONG> <STRONG>COLS;</STRONG> + <STRONG>int</STRONG> <STRONG>ESCDELAY;</STRONG> + <STRONG>int</STRONG> <STRONG>LINES;</STRONG> + <STRONG>int</STRONG> <STRONG>TABSIZE;</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>curscr;</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>newscr;</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> <STRONG>stdscr;</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This page summarizes variables provided by the <STRONG>curses</STRONG> library. A more + complete description is given in the <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> manual page. + + Depending on the configuration, these may be actual variables, or + macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> and <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>) which provide read- + only access to <EM>curses</EM>'s state. In either case, applications should + treat them as read-only to avoid confusing the library. + + +</PRE><H3><a name="h3-COLOR_PAIRS">COLOR_PAIRS</a></H3><PRE> + After initializing curses, this variable contains the number of color + pairs which the terminal can support. Usually the number of color + pairs will be the product <STRONG>COLORS</STRONG>*<STRONG>COLORS</STRONG>, however this is not always + true: + + <STRONG>o</STRONG> a few terminals use HLS colors, which do not follow this rule + + <STRONG>o</STRONG> terminals supporting a large number of colors are limited by the + number of color pairs that can be represented in a <EM>signed</EM> <EM>short</EM> + value. + + +</PRE><H3><a name="h3-COLORS">COLORS</a></H3><PRE> + After initializing curses, this variable contains the number of colors + which the terminal can support. + + +</PRE><H3><a name="h3-COLS">COLS</a></H3><PRE> + After initializing curses, this variable contains the width of the + screen, i.e., the number of columns. + + +</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE> + This variable holds the number of milliseconds to wait after reading an + escape character, to distinguish between an individual escape character + entered on the keyboard from escape sequences sent by cursor- and func- + tion-keys (see <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>). + + +</PRE><H3><a name="h3-LINES">LINES</a></H3><PRE> + After initializing curses, this variable contains the height of the + screen, i.e., the number of lines. + + +</PRE><H3><a name="h3-TABSIZE">TABSIZE</a></H3><PRE> + This variable holds the number of columns used by the <EM>curses</EM> library + when converting a tab character to spaces as it adds the tab to a win- + dow (see <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG>. + + +</PRE><H3><a name="h3-The-Current-Screen">The Current Screen</a></H3><PRE> + This implementation of curses uses a special window <STRONG>curscr</STRONG> to record + its updates to the terminal screen. + + This is referred to as the "physical screen" in the <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages. + + +</PRE><H3><a name="h3-The-New-Screen">The New Screen</a></H3><PRE> + This implementation of curses uses a special window <STRONG>newscr</STRONG> to hold up- + dates to the terminal screen before applying them to <STRONG>curscr</STRONG>. + + This is referred to as the "virtual screen" in the <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG>, + <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> and <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> manual pages. + + +</PRE><H3><a name="h3-The-Standard-Screen">The Standard Screen</a></H3><PRE> + Upon initializing curses, a default window called <STRONG>stdscr</STRONG>, which is the + size of the terminal screen, is created. Many curses functions use + this window. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The curses library is initialized using either <STRONG><A HREF="curs_initscr.3x.html">initscr(3x)</A></STRONG>, or + <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>. + + If <STRONG>curses</STRONG> is configured to use separate curses/terminfo libraries, most + of these variables reside in the curses library. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + <STRONG>TABSIZE</STRONG> is a feature of SVr4 curses which is not documented by X/Open + curses. + + <STRONG>o</STRONG> In SVr4 curses, <STRONG>TABSIZE</STRONG> is initially set from the terminal descrip- + tion's <STRONG>init_tabs</STRONG> capability. After that, it can be altered by the + applications using SVr4 curses. + + SVr4 curses uses the current value of <STRONG>TABSIZE</STRONG> to compute the posi- + tion of tabstops for updating both the virtual screen with <STRONG>add-</STRONG> + <STRONG><A HREF="addch.3x.html">ch(3x)</A></STRONG> as well as the physical screen with <STRONG><A HREF="curs_terminfo.3x.html">mvcur(3x)</A></STRONG>. + + <STRONG>o</STRONG> This implementation uses the current value of <STRONG>TABSIZE</STRONG> only for up- + dating the virtual screen. It uses the terminal description's <STRONG>it</STRONG> + (<STRONG>init_tabs</STRONG>) capability for computing hardware tabs (i.e., tab stops + on the physical screen). + + <STRONG>o</STRONG> Other implementations differ. For instance, NetBSD curses allows + <STRONG>TABSIZE</STRONG> to be set through an environment variable. This implemen- + tation does not. + + NetBSD curses does not support hardware tabs; it uses the <STRONG>init_tabs</STRONG> + capability and the <STRONG>TABSIZE</STRONG> variable only for updating the virtual + screen. + + <STRONG>ESCDELAY</STRONG> is an extension in AIX curses: + + <STRONG>o</STRONG> In AIX, the units for <STRONG>ESCDELAY</STRONG> are <EM>fifths</EM> of a millisecond. + + <STRONG>o</STRONG> The default value for AIX's <STRONG>ESCDELAY</STRONG> is 0.1 seconds. + + <STRONG>o</STRONG> AIX also enforces a limit of 10,000 seconds for <STRONG>ESCDELAY</STRONG>; this im- + plementation currently has no upper limit. + + This implementation has long used <STRONG>ESCDELAY</STRONG> with units of milliseconds, + making it impossible to be completely compatible with AIX. Likewise, + most users have either decided to override the value, or rely upon its + default value. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, + <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + + + <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-COLOR_PAIRS">COLOR_PAIRS</a></li> +<li><a href="#h3-COLORS">COLORS</a></li> +<li><a href="#h3-COLS">COLS</a></li> +<li><a href="#h3-ESCDELAY">ESCDELAY</a></li> +<li><a href="#h3-LINES">LINES</a></li> +<li><a href="#h3-TABSIZE">TABSIZE</a></li> +<li><a href="#h3-The-Current-Screen">The Current Screen</a></li> +<li><a href="#h3-The-New-Screen">The New Screen</a></li> +<li><a href="#h3-The-Standard-Screen">The Standard Screen</a></li> +</ul> +</li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/curs_window.3x.html b/deps/ncurses-6.3/doc/html/man/curs_window.3x.html new file mode 100644 index 0000000..3f4c964 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/curs_window.3x.html @@ -0,0 +1,265 @@ +<!-- + **************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,2016 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. * + **************************************************************************** + * @Id: curs_window.3x,v 1.23 2021/06/17 21:11:08 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>curs_window 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">curs_window 3x</H1> +<PRE> +<STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>newwin</STRONG>, <STRONG>delwin</STRONG>, <STRONG>mvwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>dupwin</STRONG>, <STRONG>wsyncup</STRONG>, + <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create <STRONG>curses</STRONG> windows + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>WINDOW</STRONG> <STRONG>*newwin(</STRONG> + <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>delwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>x</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*subwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*derwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>orig</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>nlines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>ncols</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>begin</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>mvderwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>y</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>par</EM><STRONG>_</STRONG><EM>x</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*dupwin(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>wsyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>syncok(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>bf</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>wcursyncup(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>wsyncdown(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-newwin">newwin</a></H3><PRE> + Calling <STRONG>newwin</STRONG> creates and returns a pointer to a new window with the + given number of lines and columns. The upper left-hand corner of the + window is at + line <EM>begin</EM>_<EM>y</EM>, + column <EM>begin</EM>_<EM>x</EM> + + If either <EM>nlines</EM> or <EM>ncols</EM> is zero, they default to + <STRONG>LINES</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>y</EM> and + <STRONG>COLS</STRONG> <STRONG>-</STRONG> <EM>begin</EM>_<EM>x</EM>. + + A new full-screen window is created by calling <STRONG>newwin(0,0,0,0)</STRONG>. + + Regardless of the function used for creating a new window (e.g., + <STRONG>newwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>newpad</STRONG>), rather than a duplicate (with <STRONG>dupwin</STRONG>), + all of the window modes are initialized to the default values. These + functions set window modes after a window is created: + + idcok, idlok, immedok, keypad, leaveok, nodelay, scrollok, + setscrreg, syncok, wbkgdset, wbkgrndset, and wtimeout + + +</PRE><H3><a name="h3-delwin">delwin</a></H3><PRE> + Calling <STRONG>delwin</STRONG> deletes the named window, freeing all memory associated + with it (it does not actually erase the window's screen image). Sub- + windows must be deleted before the main window can be deleted. + + +</PRE><H3><a name="h3-mvwin">mvwin</a></H3><PRE> + Calling <STRONG>mvwin</STRONG> moves the window so that the upper left-hand corner is at + position (<EM>x</EM>, <EM>y</EM>). If the move would cause the window to be off the + screen, it is an error and the window is not moved. Moving subwindows + is allowed, but should be avoided. + + +</PRE><H3><a name="h3-subwin">subwin</a></H3><PRE> + Calling <STRONG>subwin</STRONG> creates and returns a pointer to a new window with the + given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>. The window is at + position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on the screen. The subwindow shares memory + with the window <EM>orig</EM>, so that changes made to one window will affect + both windows. When using this routine, it is necessary to call <STRONG>touch-</STRONG> + <STRONG>win</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>wrefresh</STRONG> on the subwindow. + + +</PRE><H3><a name="h3-derwin">derwin</a></H3><PRE> + Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except that <EM>begin</EM>_<EM>y</EM> and + <EM>begin</EM>_<EM>x</EM> are relative to the origin of the window <EM>orig</EM> rather than the + screen. There is no difference between the subwindows and the derived + windows. + + Calling <STRONG>mvderwin</STRONG> moves a derived window (or subwindow) inside its par- + ent window. The screen-relative parameters of the window are not + changed. This routine is used to display different parts of the parent + window at the same physical position on the screen. + + +</PRE><H3><a name="h3-dupwin">dupwin</a></H3><PRE> + Calling <STRONG>dupwin</STRONG> creates an exact duplicate of the window <EM>win</EM>. + + +</PRE><H3><a name="h3-wsyncup">wsyncup</a></H3><PRE> + Calling <STRONG>wsyncup</STRONG> touches all locations in ancestors of <EM>win</EM> that are + changed in <EM>win</EM>. If <STRONG>syncok</STRONG> is called with second argument <STRONG>TRUE</STRONG> then + <STRONG>wsyncup</STRONG> is called automatically whenever there is a change in the win- + dow. + + +</PRE><H3><a name="h3-wsyncdown">wsyncdown</a></H3><PRE> + The <STRONG>wsyncdown</STRONG> routine touches each location in <EM>win</EM> that has been + touched in any of its ancestor windows. This routine is called by <STRONG>wre-</STRONG> + <STRONG>fresh</STRONG>, so it should almost never be necessary to call it manually. + + +</PRE><H3><a name="h3-wcursyncup">wcursyncup</a></H3><PRE> + The routine <STRONG>wcursyncup</STRONG> updates the current cursor position of all the + ancestors of the window to reflect the current cursor position of the + window. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return an integer return the integer <STRONG>ERR</STRONG> upon failure and + <STRONG>OK</STRONG> (SVr4 only specifies "an integer value other than <STRONG>ERR</STRONG>") upon suc- + cessful completion. + + Routines that return pointers return <STRONG>NULL</STRONG> on error. + + X/Open defines no error conditions. In this implementation + + <STRONG>delwin</STRONG> + returns an error if the window pointer is null, or if the window + is the parent of another window. + + <STRONG>derwin</STRONG> + 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. + + <STRONG>dupwin</STRONG> + returns an error if the window pointer is null. + + This implementation also maintains a list of windows, and checks + that the pointer passed to <STRONG>delwin</STRONG> is one that it created, return- + ing an error if it was not.. + + <STRONG>mvderwin</STRONG> + returns an error if the window pointer is null, or if some part of + the window would be placed off-screen. + + <STRONG>mvwin</STRONG> + 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. + + <STRONG>newwin</STRONG> + will fail if either of its beginning ordinates is negative, or if + either the number of lines or columns is negative. + + <STRONG>syncok</STRONG> + returns an error if the window pointer is null. + + <STRONG>subwin</STRONG> + 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. + + 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 <STRONG>initscr</STRONG> or + <STRONG>newterm</STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + If many small changes are made to the window, the <STRONG>wsyncup</STRONG> option could + degrade performance. + + Note that <STRONG>syncok</STRONG> may be a macro. + + +</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE> + The subwindow functions (<STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>wsyncup</STRONG>, <STRONG>wsyncdown</STRONG>, + <STRONG>wcursyncup</STRONG>, <STRONG>syncok</STRONG>) are flaky, incompletely implemented, and not well + tested. + + The System V curses documentation is very unclear about what <STRONG>wsyncup</STRONG> + and <STRONG>wsyncdown</STRONG> actually do. It seems to imply that they are only sup- + posed to touch exactly those lines that are affected by ancestor + changes. The language here, and the behavior of the <STRONG>curses</STRONG> implementa- + tion, is patterned on the XPG4 curses standard. The weaker XPG4 spec + may result in slower updates. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The XSI Curses standard, Issue 4 describes these functions. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> + + + + <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-newwin">newwin</a></li> +<li><a href="#h3-delwin">delwin</a></li> +<li><a href="#h3-mvwin">mvwin</a></li> +<li><a href="#h3-subwin">subwin</a></li> +<li><a href="#h3-derwin">derwin</a></li> +<li><a href="#h3-dupwin">dupwin</a></li> +<li><a href="#h3-wsyncup">wsyncup</a></li> +<li><a href="#h3-wsyncdown">wsyncdown</a></li> +<li><a href="#h3-wcursyncup">wcursyncup</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-BUGS">BUGS</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/default_colors.3x.html b/deps/ncurses-6.3/doc/html/man/default_colors.3x.html new file mode 100644 index 0000000..ca1403b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/default_colors.3x.html @@ -0,0 +1,167 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2000-2011,2016 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: Thomas E. Dickey 1997,1999,2000,2005 + * @Id: default_colors.3x,v 1.31 2020/12/19 21:38:37 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>default_colors 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">default_colors 3x</H1> +<PRE> +<STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>use_default_colors</STRONG>, <STRONG>assume_default_colors</STRONG> - use terminal's default + colors + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>use_default_colors(void);</STRONG> + <STRONG>int</STRONG> <STRONG>assume_default_colors(int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>use_default_colors</STRONG> and <STRONG>assume_default_colors</STRONG> functions are + extensions to the curses library. They are used with terminals that + support ISO 6429 color, or equivalent. These terminals allow the + application to reset color to an unspecified default value (e.g., with + SGR 39 or SGR 49). + + Applications that paint a colored background over the whole screen do + not take advantage of SGR 39 and SGR 49. Some applications are + designed to work with the default background, using colors only for + text. For example, there are several implementations of the <STRONG>ls</STRONG> program + which use colors to denote different file types or permissions. These + "color ls" programs do not necessarily modify the background color, + typically using only the <STRONG>setaf</STRONG> terminfo capability to set the + foreground color. Full-screen applications that use default colors can + achieve similar visual effects. + + The first function, <STRONG>use_default_colors</STRONG> tells the curses library to + assign terminal default foreground/background colors to color number + -1. So init_pair(x,COLOR_RED,-1) will initialize pair x as red on + default background and init_pair(x,-1,COLOR_BLUE) will initialize pair + x as default foreground on blue. + + The other, <STRONG>assume_default_colors</STRONG> is a refinement which tells which + colors to paint for color pair 0. This function recognizes a special + color number -1, which denotes the default terminal color. + + The following are equivalent: + <EM>use</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors();</EM> + <EM>assume</EM><STRONG>_</STRONG><EM>default</EM><STRONG>_</STRONG><EM>colors(-1,-1);</EM> + + These are ncurses extensions. For other curses implementations, color + number -1 does not mean anything, just as for ncurses before a + successful call of <STRONG>use_default_colors</STRONG> or <STRONG>assume_default_colors</STRONG>. + + Other curses implementations do not allow an application to modify + color pair 0. They assume that the background is COLOR_BLACK, but do + not ensure that the color pair 0 is painted to match the assumption. + If your application does not use either <STRONG>use_default_colors</STRONG> or + <STRONG>assume_default_colors</STRONG> ncurses will paint a white foreground (text) with + black background for color pair 0. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These functions return the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. + They will fail if either the terminal does not support the <STRONG>orig_pair</STRONG> or + <STRONG>orig_colors</STRONG> capability. If the <STRONG>initialize_pair</STRONG> capability is not + found, this causes an error as well. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + Associated with this extension, the <STRONG>init_pair</STRONG> function accepts negative + arguments to specify default foreground or background colors. + + The <STRONG>use_default_colors</STRONG> function was added to support <EM>ded</EM>. This is a + full-screen application which uses curses to manage only part of the + screen. The bottom portion of the screen, which is of adjustable size, + is left uncolored to display the results from shell commands. The top + portion of the screen colors filenames using a scheme like the "color + ls" programs. Attempting to manage the background color of the screen + for this application would give unsatisfactory results for a variety of + reasons. This extension was devised after noting that color xterm (and + similar programs) provides a background color which does not + necessarily correspond to any of the ANSI colors. While a special + terminfo entry could be constructed using nine colors, there was no + mechanism provided within curses to account for the related <STRONG>orig_pair</STRONG> + and <STRONG>back_color_erase</STRONG> capabilities. + + The <STRONG>assume_default_colors</STRONG> function was added to solve a different + problem: support for applications which would use environment variables + and other configuration to bypass curses' notion of the terminal's + default colors, setting specific values. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG>ded(1)</STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey (from an analysis of the requirements for color xterm for + XFree86 3.1.2C, February 1996). + + + + <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/define_key.3x.html b/deps/ncurses-6.3/doc/html/man/define_key.3x.html new file mode 100644 index 0000000..edd8721 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/define_key.3x.html @@ -0,0 +1,107 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,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: Thomas E. Dickey 1997 + * @Id: define_key.3x,v 1.18 2020/10/24 09:52:54 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>define_key 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">define_key 3x</H1> +<PRE> +<STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>define_key</STRONG> - define a keycode + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>define_key(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>definition</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>keycode</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is an extension to the curses library. It permits an application + to define keycodes with their corresponding control strings, so that + the ncurses library will interpret them just as it would the predefined + codes in the terminfo database. + + If the given string is null, any existing definition for the keycode is + removed. Similarly, if the given keycode is negative or zero, any + existing string for the given definition is removed. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The keycode must be greater than zero, and the string non-null, + otherwise <STRONG>ERR</STRONG> is returned. <STRONG>ERR</STRONG> may also be returned if there is + insufficient memory to allocate the data to store the definition. If + no error is detected, <STRONG>OK</STRONG> is returned. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>, <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey. + + + + <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form.3x.html b/deps/ncurses-6.3/doc/html/man/form.3x.html new file mode 100644 index 0000000..dd6d574 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form.3x.html @@ -0,0 +1,275 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: form.3x,v 1.36 2020/12/12 16:34:33 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form 3x</H1> +<PRE> +<STRONG><A HREF="form.3x.html">form(3x)</A></STRONG> <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form</STRONG> - curses extension for programming forms + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>form</STRONG> library provides terminal-independent facilities for composing + form screens on character-cell terminals. The library includes: field + routines, which create and modify form fields; and form routines, which + group fields into forms, display forms on the screen, and handle + interaction with the user. + + The <STRONG>form</STRONG> library uses the <STRONG>curses</STRONG> libraries. To use the <STRONG>form</STRONG> library, + link with the options <STRONG>-lform</STRONG> <STRONG>-lcurses</STRONG>. + + Your program should set up the locale, e.g., + + <STRONG>setlocale(LC_ALL,</STRONG> <STRONG>"");</STRONG> + + so that input/output processing will work. + + A curses initialization routine such as <STRONG>initscr</STRONG> must be called before + using any of these functions. + + +</PRE><H3><a name="h3-Current-Default-Values-for-Field-Attributes">Current Default Values for Field Attributes</a></H3><PRE> + The <STRONG>form</STRONG> library maintains a default value for field attributes. You + can get or set this default by calling the appropriate <STRONG>set_</STRONG> or + retrieval routine with a <STRONG>NULL</STRONG> field pointer. Changing this default + with a <STRONG>set_</STRONG> function affects future field creations, but does not + change the rendering of fields already created. + + +</PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE> + The following table lists each <STRONG>form</STRONG> routine and the name of the manual + page on which it is described. Routines flagged with "*" are ncurses- + specific, not present in SVr4. + + <STRONG>curses</STRONG> Routine Name Manual Page Name + -------------------------------------------------- + current_field <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> + data_ahead <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG> + data_behind <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG> + dup_field <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> + dynamic_field_info <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG> + field_arg <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> + field_back <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> + field_buffer <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> + field_count <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> + field_fore <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> + field_index <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> + field_info <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG> + field_init <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + field_just <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG> + field_opts <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> + field_opts_off <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> + field_opts_on <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> + field_pad <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> + field_status <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> + field_term <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + field_type <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> + field_userptr <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG> + + form_driver <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG> + form_driver_w <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG>* + form_fields <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> + form_init <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + form_opts <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> + form_opts_off <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> + form_opts_on <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> + form_page <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> + form_request_by_name <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>* + form_request_name <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG>* + form_sub <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> + form_term <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + form_userptr <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG> + form_win <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> + free_field <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> + free_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> + free_form <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG> + link_field <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> + link_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> + move_field <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> + new_field <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> + new_fieldtype <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> + new_form <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG> + new_page <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG> + pos_form_cursor <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG> + post_form <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG> + scale_form <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> + set_current_field <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> + set_field_back <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> + set_field_buffer <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> + set_field_fore <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> + set_field_init <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + set_field_just <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG> + set_field_opts <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> + set_field_pad <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> + set_field_status <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> + set_field_term <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + set_field_type <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> + set_field_userptr <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG> + set_fieldtype_arg <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> + set_fieldtype_choice <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> + set_form_fields <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> + set_form_init <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + set_form_opts <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> + set_form_page <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> + set_form_sub <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> + set_form_term <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + set_form_userptr <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG> + set_form_win <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> + set_max_field <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> + set_new_page <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG> + unfocus_current_field <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG>* + unpost_form <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG> + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return pointers return <STRONG>NULL</STRONG> on error, and set <STRONG>errno</STRONG> to + the corresponding error-code returned by functions returning an + integer. Routines that return an integer return one of the following + error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_CONNECTED</STRONG> + The field is already connected to a form. + + <STRONG>E_INVALID_FIELD</STRONG> + Contents of a field are not valid. + + <STRONG>E_NOT_CONNECTED</STRONG> + No fields are connected to the form. + + <STRONG>E_NOT_POSTED</STRONG> + The form has not been posted. + + <STRONG>E_NO_ROOM</STRONG> + Form is too large for its window. + + <STRONG>E_POSTED</STRONG> + The form is already posted. + + <STRONG>E_REQUEST_DENIED</STRONG> + The form driver could not process the request. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_UNKNOWN_COMMAND</STRONG> + The form driver code saw an unknown request code. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header files + <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>. + + In your library list, libform.a should be before libncurses.a; that is, + you want to say "-lform -lncurses", not the other way around (which + would give you a link error when using static libraries). + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + The menu facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM> <EM>Interface</EM> + <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>. + + It is not part of X/Open Curses. + + Aside from ncurses, there are few implementations: + + <STRONG>o</STRONG> systems based on SVr4 source code, e.g., Solaris. + + <STRONG>o</STRONG> NetBSD curses. + + A few functions in this implementation are extensions added for + ncurses, but not provided by other implementations, e.g., + <STRONG>form_driver_w</STRONG>, <STRONG>unfocus_current_field</STRONG>. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric S. + Raymond. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed + descriptions of the entry points. + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Current-Default-Values-for-Field-Attributes">Current Default Values for Field Attributes</a></li> +<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_cursor.3x.html b/deps/ncurses-6.3/doc/html/man/form_cursor.3x.html new file mode 100644 index 0000000..12ae82e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_cursor.3x.html @@ -0,0 +1,117 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_cursor.3x,v 1.14 2020/10/18 00:15:29 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_cursor 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_cursor 3x</H1> +<PRE> +<STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG> <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>pos_form_cursor</STRONG> - position a form window cursor + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>pos_form_cursor(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>pos_form_cursor</STRONG> restores the cursor to the position + required for the forms driver to continue processing requests. This is + useful after <STRONG>curses</STRONG> routines have been called to do screen-painting in + response to a form operation. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + This routine returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_NOT_POSTED</STRONG> + The form has not been posted. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_cursor.3x.html">form_cursor(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_data.3x.html b/deps/ncurses-6.3/doc/html/man/form_data.3x.html new file mode 100644 index 0000000..84d50f0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_data.3x.html @@ -0,0 +1,103 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_data.3x,v 1.15 2020/10/18 00:15:00 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_data 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_data 3x</H1> +<PRE> +<STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG> <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>data_ahead</STRONG>, <STRONG>data_behind</STRONG> - test for off-screen data in given forms + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>bool</STRONG> <STRONG>data_ahead(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>data_behind(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>data_ahead</STRONG> tests whether there is off-screen data ahead in + the given form. It returns TRUE (1) or FALSE (0). + + The function <STRONG>data_behind</STRONG> tests whether there is off-screen data behind + in the given form. It returns TRUE (1) or FALSE (0). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_data.3x.html">form_data(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_driver.3x.html b/deps/ncurses-6.3/doc/html/man/form_driver.3x.html new file mode 100644 index 0000000..2804fab --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_driver.3x.html @@ -0,0 +1,306 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: form_driver.3x,v 1.35 2020/12/19 21:34:15 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_driver 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_driver 3x</H1> +<PRE> +<STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG> <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_driver</STRONG>, <STRONG>form_driver_w</STRONG> - command-processing loop of the form system + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>form_driver(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>form_driver_w(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>,</STRONG> <STRONG>wchar_t</STRONG> <EM>wch</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-form_driver">form_driver</a></H3><PRE> + Once a form has been posted (displayed), you should funnel input events + to it through <STRONG>form_driver</STRONG>. This routine has three major input cases: + + <STRONG>o</STRONG> The input is a form navigation request. Navigation request codes + are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which are distinct from the key- + and character codes returned by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>. + + <STRONG>o</STRONG> The input is a printable character. Printable characters (which + must be positive, less than 256) are checked according to the + program's locale settings. + + <STRONG>o</STRONG> The input is the KEY_MOUSE special key associated with an mouse + event. + + +</PRE><H3><a name="h3-form_driver_w">form_driver_w</a></H3><PRE> + This extension simplifies the use of the forms library using wide + characters. The input is either a key code (a request) or a wide + character returned by <STRONG><A HREF="curs_get_wch.3x.html">get_wch(3x)</A></STRONG>. The type must be passed as well, to + enable the library to determine whether the parameter is a wide + character or a request. + + +</PRE><H3><a name="h3-Form-driver-requests">Form-driver requests</a></H3><PRE> + The form driver requests are as follows: + + <EM>Name</EM> <EM>Description</EM> + --------------------------------------------------------------------- + REQ_BEG_FIELD Move to the beginning of the field. + REQ_BEG_LINE Move to the beginning of the line. + REQ_CLR_EOF Clear to end of field from cursor. + REQ_CLR_EOL Clear to end of line from cursor. + REQ_CLR_FIELD Clear the entire field. + REQ_DEL_CHAR Delete character at the cursor. + REQ_DEL_LINE Delete line at the cursor. + REQ_DEL_PREV Delete character before the cursor. + REQ_DEL_WORD Delete blank-delimited word at the cursor. + REQ_DOWN_CHAR Move down in the field. + REQ_DOWN_FIELD Move down to a field. + REQ_END_FIELD Move to the end of the field. + REQ_END_LINE Move to the end of the line. + REQ_FIRST_FIELD Move to the first field. + REQ_FIRST_PAGE Move to the first page. + REQ_INS_CHAR Insert a blank at the cursor. + REQ_INS_LINE Insert a blank line at the cursor. + REQ_INS_MODE Enter insert mode. + REQ_LAST_FIELD Move to the last field. + REQ_LAST_PAGE Move to the last field. + REQ_LEFT_CHAR Move left in the field. + REQ_LEFT_FIELD Move left to a field. + REQ_NEW_LINE Insert or overlay a new line. + REQ_NEXT_CHAR Move to the next char. + + REQ_NEXT_CHOICE Display next field choice. + REQ_NEXT_FIELD Move to the next field. + REQ_NEXT_LINE Move to the next line. + REQ_NEXT_PAGE Move to the next page. + REQ_NEXT_PAGE Move to the next page. + REQ_NEXT_WORD Move to the next word. + REQ_OVL_MODE Enter overlay mode. + REQ_PREV_CHAR Move to the previous char. + REQ_PREV_CHOICE Display previous field choice. + REQ_PREV_FIELD Move to the previous field. + REQ_PREV_LINE Move to the previous line. + REQ_PREV_PAGE Move to the previous page. + REQ_PREV_WORD Move to the previous word. + REQ_RIGHT_CHAR Move right in the field. + REQ_RIGHT_FIELD Move right to a field. + REQ_SCR_BCHAR Scroll the field backward a character. + REQ_SCR_BHPAGE Scroll the field backward half a page. + REQ_SCR_BLINE Scroll the field backward a line. + REQ_SCR_BPAGE Scroll the field backward a page. + REQ_SCR_FCHAR Scroll the field forward a character. + REQ_SCR_FHPAGE Scroll the field forward half a page. + REQ_SCR_FLINE Scroll the field forward a line. + REQ_SCR_FPAGE Scroll the field forward a page. + REQ_SCR_HBHALF Horizontal scroll the field backward half a line. + REQ_SCR_HBLINE Horizontal scroll the field backward a line. + REQ_SCR_HFHALF Horizontal scroll the field forward half a line. + REQ_SCR_HFLINE Horizontal scroll the field forward a line. + REQ_SFIRST_FIELD Move to the sorted first field. + REQ_SLAST_FIELD Move to the sorted last field. + REQ_SNEXT_FIELD Move to the sorted next field. + REQ_SPREV_FIELD Move to the sorted previous field. + REQ_UP_CHAR Move up in the field. + REQ_UP_FIELD Move up to a field. + REQ_VALIDATION Validate field. + + If the second argument is a printable character, the driver places it + in the current position in the current field. If it is one of the + forms requests listed above, that request is executed. + + +</PRE><H3><a name="h3-Field-validation">Field validation</a></H3><PRE> + The form library makes updates to the window associated with form + fields rather than directly to the field buffers. + + The form driver provides low-level control over updates to the form + fields. The form driver also provides for validating modified fields + to ensure that the contents meet whatever constraints an application + may attach using <STRONG>set_field_type</STRONG>. + + You can validate a field without making any changes to it using + <STRONG>REQ_VALIDATION</STRONG>. The form driver also validates a field in these cases: + + <STRONG>o</STRONG> a call to <STRONG>set_current_field</STRONG> attempts to move to a different field. + + <STRONG>o</STRONG> a call to <STRONG>set_current_page</STRONG> attempts to move to a different page of + the form. + + <STRONG>o</STRONG> a request attempts to move to a different field. + + <STRONG>o</STRONG> a request attempts to move to a different page of the form. + + In each case, the move fails if the field is invalid. + + If the modified field is valid, the form driver copies the modified + data from the window associated with the field to the field buffer. + + +</PRE><H3><a name="h3-Mouse-handling">Mouse handling</a></H3><PRE> + If the second argument is the KEY_MOUSE special key, the associated + mouse event is translated into one of the above pre-defined requests. + Currently only clicks in the user window (e.g., inside the form display + area or the decoration window) are handled. + + If you click above the display region of the form: + + a REQ_PREV_FIELD is generated for a single click, + + a REQ_PREV_PAGE is generated for a double-click and + + a REQ_FIRST_FIELD is generated for a triple-click. + + If you click below the display region of the form: + + a REQ_NEXT_FIELD is generated for a single click, + + a REQ_NEXT_PAGE is generated for a double-click and + + a REQ_LAST_FIELD is generated for a triple-click. + + If you click at an field inside the display area of the form: + + <STRONG>o</STRONG> the form cursor is positioned to that field. + + <STRONG>o</STRONG> If you double-click a field, the form cursor is positioned to + that field and <STRONG>E_UNKNOWN_COMMAND</STRONG> is returned. This return value + makes sense, because a double click usually means that an field- + specific action should be returned. It is exactly the purpose + of this return value to signal that an application specific + command should be executed. + + <STRONG>o</STRONG> If a translation into a request was done, <STRONG>form_driver</STRONG> returns + the result of this request. + + If you clicked outside the user window or the mouse event could not be + translated into a form request an <STRONG>E_REQUEST_DENIED</STRONG> is returned. + + +</PRE><H3><a name="h3-Application-defined-commands">Application-defined commands</a></H3><PRE> + If the second argument is neither printable nor one of the above pre- + defined form requests, the driver assumes it is an application-specific + command and returns <STRONG>E_UNKNOWN_COMMAND</STRONG>. Application-defined commands + should be defined relative to <STRONG>MAX_COMMAND</STRONG>, the maximum value of these + pre-defined requests. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>form_driver</STRONG> returns one of the following error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_NOT_POSTED</STRONG> + The form has not been posted. + + <STRONG>E_INVALID_FIELD</STRONG> + Contents of field is invalid. + + <STRONG>E_NOT_CONNECTED</STRONG> + No fields are connected to the form. + + <STRONG>E_REQUEST_DENIED</STRONG> + The form driver could not process the request. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_UNKNOWN_COMMAND</STRONG> + The form driver code saw an unknown request code. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>, <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG>, + <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header files + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_driver.3x.html">form_driver(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-form_driver">form_driver</a></li> +<li><a href="#h3-form_driver_w">form_driver_w</a></li> +<li><a href="#h3-Form-driver-requests">Form-driver requests</a></li> +<li><a href="#h3-Field-validation">Field validation</a></li> +<li><a href="#h3-Mouse-handling">Mouse handling</a></li> +<li><a href="#h3-Application-defined-commands">Application-defined commands</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field.3x.html b/deps/ncurses-6.3/doc/html/man/form_field.3x.html new file mode 100644 index 0000000..ca07472 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field.3x.html @@ -0,0 +1,137 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 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. * + **************************************************************************** + * @Id: form_field.3x,v 1.17 2020/10/24 09:10:45 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field 3x</H1> +<PRE> +<STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_field</STRONG> - make and break connections between fields and forms + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_fields(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>FIELD</STRONG> <STRONG>**</STRONG><EM>fields</EM><STRONG>);</STRONG> + <STRONG>FIELD</STRONG> <STRONG>**form_fields(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>field_count(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>move_field(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>frow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>fcol</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_form_fields</STRONG> changes the field pointer array of the + given <EM>form</EM>. The array must be terminated by a <STRONG>NULL</STRONG>. + + The function <STRONG>form_fields</STRONG> returns the field array of the given form. + + The function <STRONG>field_count</STRONG> returns the count of fields in <EM>form</EM>. + + The function <STRONG>move_field</STRONG> moves the given field (which must be + disconnected) to a specified location on the screen. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>form_fields</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It + does not set <STRONG>errno</STRONG>. + + The function <STRONG>field_count</STRONG> returns <STRONG>ERR</STRONG> if the <EM>form</EM> parameter is <STRONG>NULL</STRONG>. + + The functions <STRONG>set_form_fields</STRONG> and <STRONG>move_field</STRONG> return one of the + following codes on error: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_CONNECTED</STRONG> + The field is already connected to a form. + + <STRONG>E_POSTED</STRONG> + The form is already posted. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + The SVr4 forms library documentation specifies the <STRONG>field_count</STRONG> error + value as -1 (which is the value of <STRONG>ERR</STRONG>). + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field.3x.html">form_field(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_attributes.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_attributes.3x.html new file mode 100644 index 0000000..0ec75c6 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_attributes.3x.html @@ -0,0 +1,131 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2006,2010 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. * + **************************************************************************** + * @Id: form_field_attributes.3x,v 1.18 2020/10/18 00:14:20 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_attributes 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_attributes 3x</H1> +<PRE> +<STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_field_attributes</STRONG> - color and attribute control for form fields + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_fore(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attr</EM><STRONG>);</STRONG> + <STRONG>chtype</STRONG> <STRONG>field_fore(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_back(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attr</EM><STRONG>);</STRONG> + <STRONG>chtype</STRONG> <STRONG>field_back(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_pad(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pad</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>field_pad(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_field_fore</STRONG> sets the foreground attribute of <EM>field</EM>. + This is the highlight used to display the field contents. The function + <STRONG>field_fore</STRONG> returns the foreground attribute. The default is + <STRONG>A_STANDOUT</STRONG>. + + The function <STRONG>set_field_back</STRONG> sets the background attribute of <EM>form</EM>. This + is the highlight used to display the extent fields in the form. The + function <STRONG>field_back</STRONG> returns the background attribute. The default is + <STRONG>A_NORMAL</STRONG>. + + The function <STRONG>set_field_pad</STRONG> sets the character used to fill the field. + The function <STRONG>field_pad</STRONG> returns the given form's pad character. The + default is a blank. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed + descriptions of the entry points. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_attributes.3x.html">form_field_attributes(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_buffer.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_buffer.3x.html new file mode 100644 index 0000000..aabd869 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_buffer.3x.html @@ -0,0 +1,173 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: form_field_buffer.3x,v 1.27 2020/10/24 09:27:17 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_buffer 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_buffer 3x</H1> +<PRE> +<STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_field_buffer</STRONG> - field buffer control + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_buffer(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>buf</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>value</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*field_buffer(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>buffer</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_status(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>status</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>field_status(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_max_field(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>max</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_field_buffer</STRONG> sets the numbered buffer of the given + field to contain a given string: + + <STRONG>o</STRONG> Buffer 0 is the displayed value of the field. + + <STRONG>o</STRONG> Other numbered buffers may be allocated by applications through + the <STRONG>nbuf</STRONG> argument of (see <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG>) but are not + manipulated by the forms library. + + The function <STRONG>field_buffer</STRONG> returns a pointer to the contents of the + given numbered buffer: + + <STRONG>o</STRONG> The buffer contents always have the same length, and are padded + with trailing spaces as needed to ensure this length is the + same. + + <STRONG>o</STRONG> The buffer may contain leading spaces, depending on how it was + set. + + <STRONG>o</STRONG> The buffer contents are set with <STRONG>set_field_buffer</STRONG>, or as a side + effect of any editing operations on the corresponding field. + + <STRONG>o</STRONG> Editing operations are based on the <EM>window</EM> which displays the + field, rather than a <EM>string</EM>. The window contains only printable + characters, and is filled with blanks. If you want the raw + data, you must write your own routine that copies the value out + of the buffer and removes the leading and trailing spaces. + + <STRONG>o</STRONG> Because editing operations change the content of the buffer to + correspond to the window, you should not rely on using buffers + for long-term storage of form data. + + The function <STRONG>set_field_status</STRONG> sets the associated status flag of <EM>field</EM>; + <STRONG>field_status</STRONG> gets the current value. The status flag is set to a + nonzero value whenever the field changes. + + The function <STRONG>set_max_field</STRONG> sets the maximum size for a dynamic field. + An argument of 0 turns off any maximum size threshold for that field. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The <STRONG>field_buffer</STRONG> function returns NULL on error. It sets <STRONG>errno</STRONG> + according to their success: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + The <STRONG>field_status</STRONG> function returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>. + + The remaining routines return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed + descriptions of the entry points. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + + When configured for wide characters, <STRONG>field_buffer</STRONG> returns a pointer to + temporary storage (allocated and freed by the library). The + application should not attempt to modify the data. It will be freed on + the next call to <STRONG>field_buffer</STRONG> to return the same buffer. <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + The <STRONG>set_max_field</STRONG> function checks for an ncurses extension + <STRONG>O_INPUT_FIELD</STRONG> which allows a dynamic field to shrink if the new limit + is smaller than the current field size. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_buffer.3x.html">form_field_buffer(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_info.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_info.3x.html new file mode 100644 index 0000000..e107bfd --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_info.3x.html @@ -0,0 +1,130 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_field_info.3x,v 1.18 2020/10/17 23:35:05 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_info 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_info 3x</H1> +<PRE> +<STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG> <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>dynamic_field_info</STRONG>, <STRONG>field_info</STRONG> - retrieve field characteristics + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>field_info(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <STRONG>*</STRONG><EM>rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>cols</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <STRONG>*</STRONG><EM>frow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>fcol</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <STRONG>*</STRONG><EM>nrow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>nbuf</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>dynamic_field_info(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <STRONG>*</STRONG><EM>rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>cols</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>max</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>field_info</STRONG> returns the sizes and other attributes passed + in to the field at its creation time. The attributes are: height, + width, row of upper-left corner, column of upper-left corner, number + off-screen rows, and number of working buffers. + + The function <STRONG>dynamic_field_info</STRONG> returns the actual size of the field, + and its maximum possible size. If the field has no size limit, the + location addressed by the third argument will be set to 0. A field can + be made dynamic by turning off the <STRONG>O_STATIC</STRONG> option with <STRONG>field_opts_off</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed + descriptions of the entry points. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + A null (zero pointer) is accepted for any of the return values, to + ignore that value. Not all implementations allow this, e.g., Solaris + 2.7 does not. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_info.3x.html">form_field_info(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_just.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_just.3x.html new file mode 100644 index 0000000..4db92bf --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_just.3x.html @@ -0,0 +1,119 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_field_just.3x,v 1.18 2020/10/18 00:12:55 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_just 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_just 3x</H1> +<PRE> +<STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG> <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_field_just</STRONG>, <STRONG>field_just</STRONG> - retrieve field characteristics + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_just(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>justification</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>field_just(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_field_just</STRONG> sets the justification attribute of a + field; <STRONG>field_just</STRONG> returns a field's justification attribute. The + attribute may be one of NO_JUSTIFICATION, JUSTIFY_RIGHT, JUSTIFY_LEFT, + or JUSTIFY_CENTER. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>field_just</STRONG> returns one of: NO_JUSTIFICATION, + JUSTIFY_RIGHT, JUSTIFY_LEFT, or JUSTIFY_CENTER. + + The function <STRONG>set_field_just</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed + descriptions of the entry points. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_new.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_new.3x.html new file mode 100644 index 0000000..03ced38 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_new.3x.html @@ -0,0 +1,146 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_field_new.3x,v 1.24 2020/10/24 09:09:18 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_new 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_new 3x</H1> +<PRE> +<STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>new_field</STRONG>, <STRONG>dup_field</STRONG>, <STRONG>link_field</STRONG>, <STRONG>free_field</STRONG> - create and destroy form + fields + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>FIELD</STRONG> <STRONG>*new_field(int</STRONG> <EM>height</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>width</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>toprow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>leftcol</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>offscreen</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>nbuffers</EM><STRONG>);</STRONG> + <STRONG>FIELD</STRONG> <STRONG>*dup_field(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>toprow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>leftcol</EM><STRONG>);</STRONG> + <STRONG>FIELD</STRONG> <STRONG>*link_field(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>toprow</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>leftcol</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>free_field(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>new_field</STRONG> allocates a new field and initializes it from + the parameters given: height, width, row of upper-left corner, column + of upper-left corner, number off-screen rows, and number of additional + working buffers. + + The function <STRONG>dup_field</STRONG> duplicates a field at a new location. Most + attributes (including current contents, size, validation type, buffer + count, growth threshold, justification, foreground, background, pad + character, options, and user pointer) are copied. Field status and the + field page bit are not copied. + + The function <STRONG>link_field</STRONG> acts like <STRONG>dup_field</STRONG>, but the new field shares + buffers with its parent. Attribute data is separate. + + The function <STRONG>free_field</STRONG> de-allocates storage associated with a field. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The functions <STRONG>new_field</STRONG>, <STRONG>dup_field</STRONG>, <STRONG>link_field</STRONG> return <STRONG>NULL</STRONG> on error. + They set <STRONG>errno</STRONG> according to their success: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred, e.g., malloc failure. + + The function <STRONG>free_field</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_CONNECTED</STRONG> + field is connected. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + It may be unwise to count on the set of attributes copied by <STRONG>dup_field</STRONG> + being portable; the System V forms library documents are not very + explicit about what gets copied and what does not. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_new.3x.html">form_field_new(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_opts.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_opts.3x.html new file mode 100644 index 0000000..278af87 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_opts.3x.html @@ -0,0 +1,188 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2014,2015 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. * + **************************************************************************** + * @Id: form_field_opts.3x,v 1.27 2020/10/18 00:11:45 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_opts 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_opts 3x</H1> +<PRE> +<STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_field_opts</STRONG>, <STRONG>field_opts_on</STRONG>, <STRONG>field_opts_off</STRONG>, <STRONG>field_opts</STRONG> - set and get + field options + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_opts(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>Field_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>Field_Options</STRONG> <STRONG>field_opts(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>field_opts_on(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>Field_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>field_opts_off(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>Field_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_field_opts</STRONG> sets all the given field's option bits + (field option bits may be logically-OR'ed together). + + The function <STRONG>field_opts_on</STRONG> turns on the given option bits, and leaves + others alone. + + The function <STRONG>field_opts_off</STRONG> turns off the given option bits, and leaves + others alone. + + The function <STRONG>field_opts</STRONG> returns the field's current option bits. + + The following standard options are defined (all are on by default): + + O_ACTIVE + The field is visited during processing. If this option is off, + the field will not be reachable by navigation keys. Please notice + that an invisible field appears to be inactive also. + + O_AUTOSKIP + Skip to the next field when this one fills. + + O_BLANK + The field is cleared whenever a character is entered at the first + position. + + O_EDIT + The field can be edited. + + O_NULLOK + Allow a blank field. + + O_PASSOK + Validate field only if modified by user. + + O_PUBLIC + The field contents are displayed as data is entered. + + O_STATIC + Field buffers are fixed to field's original size. Turn this + option off to create a dynamic field. + + O_VISIBLE + The field is displayed. If this option is off, display of the + field is suppressed. + + O_WRAP + Words that do not fit on a line are wrapped to the next line. + Words are blank-separated. + + These extension options are defined (extensions are off by default): + + O_DYNAMIC_JUSTIFY + Permit dynamic fields to be justified, like static fields. + + O_NO_LEFT_STRIP + Preserve leading whitespace in the field buffer, which is normally + discarded. + + O_EDGE_INSERT_STAY + When inserting into a field up to the boundary position, + optionally delay the scrolling, so that the last inserted + character remains visible, but advance the cursor to reflect the + insertion. This allows the form library to display the inserted + character in one-character fields as well as allowing the library + to maintain consistent state. + + O_INPUT_FIELD + The <STRONG>set_max_field</STRONG> function checks for this extension, which allows + a dynamic field to shrink if the new limit is smaller than the + current field size. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except for <STRONG>field_opts</STRONG>, each routine returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_CURRENT</STRONG> + The field is the current field. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. <STRONG><A HREF="form_field_just.3x.html">form_field_just(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_opts.3x.html">form_field_opts(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_userptr.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_userptr.3x.html new file mode 100644 index 0000000..f134877 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_userptr.3x.html @@ -0,0 +1,113 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_field_userptr.3x,v 1.16 2020/10/24 09:06:33 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_userptr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_userptr 3x</H1> +<PRE> +<STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG> <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_field_userptr</STRONG>, <STRONG>field_userptr</STRONG> - associate application data with a + form field + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_userptr(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>userptr</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>*field_userptr(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + Every form field 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 that field. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>field_userptr</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It + does not set <STRONG>errno</STRONG>. + + The function <STRONG>set_field_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + The user pointer is a void pointer. We chose not to leave it as a char + pointer for SVr4 compatibility. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_userptr.3x.html">form_field_userptr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_field_validation.3x.html b/deps/ncurses-6.3/doc/html/man/form_field_validation.3x.html new file mode 100644 index 0000000..c278107 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_field_validation.3x.html @@ -0,0 +1,249 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: form_field_validation.3x,v 1.33 2020/12/12 19:57:55 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_field_validation 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_field_validation 3x</H1> +<PRE> +<STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_field_validation</STRONG> - data type validation for fields + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>void</STRONG> <STRONG>*field_arg(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*field_type(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>set_field_type(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>type</EM><STRONG>,</STRONG> <STRONG>...);</STRONG> + + /* predefined field types */ + <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ALNUM;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ALPHA;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_ENUM;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_INTEGER;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_NUMERIC;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_REGEXP;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*TYPE_IPV4;</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + By default, no validation is done on form fields. You can associate a + form with with a <EM>field</EM> <EM>type</EM>, making the form library validate input. + + +</PRE><H3><a name="h3-field_arg">field_arg</a></H3><PRE> + Returns a pointer to the field's argument block. The <EM>argument</EM> <EM>block</EM> is + an opaque structure containing a copy of the arguments provided in a + <STRONG>set_field_type</STRONG> call. + + +</PRE><H3><a name="h3-field_type">field_type</a></H3><PRE> + Returns a pointer to the <EM>field</EM> <EM>type</EM> associated with the form field, + i.e., by calling <STRONG>set_field_type</STRONG>. + + +</PRE><H3><a name="h3-set_field_type">set_field_type</a></H3><PRE> + The function <STRONG>set_field_type</STRONG> associates 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 <STRONG>set_field_type</STRONG>. + + Several field types are predefined by the form library. + + +</PRE><H3><a name="h3-Predefined-types">Predefined types</a></H3><PRE> + It is possible to set up new programmer-defined field types. Field + types are implemented via the <STRONG>FIELDTYPE</STRONG> data structure, which contains + several pointers to functions. + + See the <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> manual page, which describes functions which + can be used to construct a field-type dynamically. + + The predefined types are as follows: + + TYPE_ALNUM + Alphanumeric data. Required parameter: + + <STRONG>o</STRONG> a third <STRONG>int</STRONG> argument, a minimum field width. + + TYPE_ALPHA + Character data. Required parameter: + + <STRONG>o</STRONG> a third <STRONG>int</STRONG> argument, a minimum field width. + + TYPE_ENUM + Accept one of a specified set of strings. Required parameters: + + <STRONG>o</STRONG> a third <STRONG>(char</STRONG> <STRONG>**)</STRONG> argument pointing to a string list; + + <STRONG>o</STRONG> a fourth <STRONG>int</STRONG> flag argument to enable case-sensitivity; + + <STRONG>o</STRONG> a fifth <STRONG>int</STRONG> flag argument specifying whether a partial match + must be a unique one. If this flag is off, a prefix matches + the first of any set of more than one list elements with that + prefix. + + The library copies the string list, so you may use a list that + lives in automatic variables on the stack. + + TYPE_INTEGER + Integer data, parsable to an integer by <STRONG>atoi(3)</STRONG>. Required + parameters: + + <STRONG>o</STRONG> a third <STRONG>int</STRONG> argument controlling the precision, + + <STRONG>o</STRONG> a fourth <STRONG>long</STRONG> argument constraining minimum value, + + <STRONG>o</STRONG> a fifth <STRONG>long</STRONG> constraining maximum value. If the maximum value + is less than or equal to the minimum value, the range is + simply ignored. + + On return, the field buffer is formatted according to the <STRONG>printf</STRONG> + format specification ".*ld", where the "*" is replaced by the + precision argument. + + For details of the precision handling see <STRONG>printf(3)</STRONG>. + + TYPE_NUMERIC + Numeric data (may have a decimal-point part). Required + parameters: + + <STRONG>o</STRONG> a third <STRONG>int</STRONG> argument controlling the precision, + + <STRONG>o</STRONG> a fourth <STRONG>double</STRONG> argument constraining minimum value, + + <STRONG>o</STRONG> and a fifth <STRONG>double</STRONG> constraining maximum value. If your system + supports locales, the decimal point character must be the one + specified by your locale. If the maximum value is less than + or equal to the minimum value, the range is simply ignored. + + On return, the field buffer is formatted according to the <STRONG>printf</STRONG> + format specification ".*f", where the "*" is replaced by the + precision argument. + + For details of the precision handling see <STRONG>printf(3)</STRONG>. + + TYPE_REGEXP + Regular expression data. Required parameter: + + <STRONG>o</STRONG> a third argument, a regular expression <STRONG>(char</STRONG> <STRONG>*)</STRONG> string. The + data is valid if the regular expression matches it. + + Regular expressions are in the format of <STRONG>regcomp</STRONG> and <STRONG>regexec</STRONG>. + + The regular expression must match the whole field. If you have + for example, an eight character wide field, a regular expression + "^[0-9]*$" always means that you have to fill all eight positions + with digits. If you want to allow fewer digits, you may use for + example "^[0-9]* *$" which is good for trailing spaces (up to an + empty field), or "^ *[0-9]* *$" which is good for leading and + trailing spaces around the digits. + + TYPE_IPV4 + An Internet Protocol Version 4 address. Required parameter: + + <STRONG>o</STRONG> none + + The form library checks whether or not the buffer has the form + <EM>a.b.c.d</EM>, where <EM>a</EM>, <EM>b</EM>, <EM>c</EM>, and <EM>d</EM> are numbers in the range 0 to 255. + Trailing blanks in the buffer are ignored. The address itself is + not validated. + + This is an ncurses extension; this field type may not be available + in other curses implementations. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The functions <STRONG>field_type</STRONG> and <STRONG>field_arg</STRONG> return <STRONG>NULL</STRONG> on error. The + function <STRONG>set_field_type</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG>, <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-field_arg">field_arg</a></li> +<li><a href="#h3-field_type">field_type</a></li> +<li><a href="#h3-set_field_type">set_field_type</a></li> +<li><a href="#h3-Predefined-types">Predefined types</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_fieldtype.3x.html b/deps/ncurses-6.3/doc/html/man/form_fieldtype.3x.html new file mode 100644 index 0000000..386219b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_fieldtype.3x.html @@ -0,0 +1,215 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2006,2010 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. * + **************************************************************************** + * @Id: form_fieldtype.3x,v 1.28 2020/12/12 17:11:21 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_fieldtype 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_fieldtype 3x</H1> +<PRE> +<STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_fieldtype</STRONG> - define validation-field types + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>FIELDTYPE</STRONG> <STRONG>*new_fieldtype(</STRONG> + <STRONG>bool</STRONG> <STRONG>(*</STRONG> <STRONG>const</STRONG> <EM>field</EM><STRONG>_</STRONG><EM>check</EM><STRONG>)(FIELD</STRONG> <STRONG>*,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*),</STRONG> + <STRONG>bool</STRONG> <STRONG>(*</STRONG> <STRONG>const</STRONG> <EM>char</EM><STRONG>_</STRONG><EM>check</EM><STRONG>)(int,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*));</STRONG> + <STRONG>int</STRONG> <STRONG>free_fieldtype(FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>fieldtype</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_fieldtype_arg(</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>fieldtype</EM><STRONG>,</STRONG> + <STRONG>void</STRONG> <STRONG>*(*</STRONG> <STRONG>const</STRONG> <EM>make</EM><STRONG>_</STRONG><EM>arg</EM><STRONG>)(va_list</STRONG> <STRONG>*),</STRONG> + <STRONG>void</STRONG> <STRONG>*(*</STRONG> <STRONG>const</STRONG> <EM>copy</EM><STRONG>_</STRONG><EM>arg</EM><STRONG>)(const</STRONG> <STRONG>void</STRONG> <STRONG>*),</STRONG> + <STRONG>void</STRONG> <STRONG>(*</STRONG> <STRONG>const</STRONG> <EM>free</EM><STRONG>_</STRONG><EM>arg</EM><STRONG>)(void</STRONG> <STRONG>*));</STRONG> + <STRONG>int</STRONG> <STRONG>set_fieldtype_choice(</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>fieldtype</EM><STRONG>,</STRONG> + <STRONG>bool</STRONG> <STRONG>(*</STRONG> <STRONG>const</STRONG> <EM>next</EM><STRONG>_</STRONG><EM>choice</EM><STRONG>)(FIELD</STRONG> <STRONG>*,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*),</STRONG> + <STRONG>bool</STRONG> <STRONG>(*</STRONG> <STRONG>const</STRONG> <EM>prev</EM><STRONG>_</STRONG><EM>choice</EM><STRONG>)(FIELD</STRONG> <STRONG>*,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*));</STRONG> + + <STRONG>FIELDTYPE</STRONG> <STRONG>*link_fieldtype(FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>type1</EM><STRONG>,</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG><EM>type2</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-new_fieldtype">new_fieldtype</a></H3><PRE> + The function <STRONG>new_fieldtype</STRONG> creates a new field type usable for data + validation. Its parameters are function pointers: + + <EM>field</EM><STRONG>_</STRONG><EM>check</EM> + This function checks the validity of an entered data string + whenever the user attempts to leave a field. It has two + arguments: + + <STRONG>o</STRONG> The (FIELD *) argument is passed in so the validation + predicate can see the field's buffer, sizes and other + attributes. + + <STRONG>o</STRONG> The second argument is an argument-block structure, about + which more below. + + <EM>char</EM><STRONG>_</STRONG><EM>check</EM> + This function validates input characters as they are entered. The + form library passes it the character to be checked and a pointer + to an argument-block structure. + + +</PRE><H3><a name="h3-free_fieldtype">free_fieldtype</a></H3><PRE> + The <STRONG>free_fieldtype</STRONG> function frees the space allocated for a given + validation type by <STRONG>new_fieldtype</STRONG>. + + +</PRE><H3><a name="h3-set_fieldtype_arg">set_fieldtype_arg</a></H3><PRE> + The function <STRONG>set_fieldtype_arg</STRONG> associates three storage-management + functions with a field type: + + <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> + This function is automatically applied to the list of arguments + you give <STRONG>set_field_type</STRONG> when attaching validation to a field. It + stores the arguments in an allocated argument-block object which + is used when validating input. + + <EM>copy</EM><STRONG>_</STRONG><EM>arg</EM> + This function may be used by applications to copy argument-blocks. + + <EM>free</EM><STRONG>_</STRONG><EM>arg</EM> + Frees an argument-block structure. + + You must supply the <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> function. The other two are optional: you + may supply NULL for them. In this case, the form library assumes that + <EM>make</EM><STRONG>_</STRONG><EM>arg</EM> does not allocate memory but simply loads the argument into a + single scalar value. + + +</PRE><H3><a name="h3-set_fieldtype_choice">set_fieldtype_choice</a></H3><PRE> + The form driver requests <STRONG>REQ_NEXT_CHOICE</STRONG> and <STRONG>REQ_PREV_CHOICE</STRONG> assume + that the possible values of a field form an ordered set, and provide + the forms user with a way to move through the set. + + The <STRONG>set_fieldtype_choice</STRONG> function allows forms programmers to define + successor and predecessor functions for the field type. These + functions take the field pointer and an argument-block structure as + arguments. + + +</PRE><H3><a name="h3-link_fieldtype">link_fieldtype</a></H3><PRE> + The function <STRONG>link_fieldtype</STRONG> creates a new field type from the two given + types. They are connected by an logical 'OR'. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The pointer-valued routines return NULL on error. They set <STRONG>errno</STRONG> + according to their success: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred, e.g., malloc failure. + + The integer-valued routines return one of the following codes on error: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_CONNECTED</STRONG> + The field is already connected to a form. + + <STRONG>E_CURRENT</STRONG> + The field is the current field. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>, <STRONG><A HREF="form_field_validation.3x.html">form_field_validation(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-new_fieldtype">new_fieldtype</a></li> +<li><a href="#h3-free_fieldtype">free_fieldtype</a></li> +<li><a href="#h3-set_fieldtype_arg">set_fieldtype_arg</a></li> +<li><a href="#h3-set_fieldtype_choice">set_fieldtype_choice</a></li> +<li><a href="#h3-link_fieldtype">link_fieldtype</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_hook.3x.html b/deps/ncurses-6.3/doc/html/man/form_hook.3x.html new file mode 100644 index 0000000..db12999 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_hook.3x.html @@ -0,0 +1,139 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2007,2010 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. * + **************************************************************************** + * @Id: form_hook.3x,v 1.16 2020/10/18 00:06:29 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_hook 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_hook 3x</H1> +<PRE> +<STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_hook</STRONG> - set hooks for automatic invocation by applications + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_init(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>Form_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG> + <STRONG>Form_Hook</STRONG> <STRONG>field_init(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_field_term(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>Form_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG> + <STRONG>Form_Hook</STRONG> <STRONG>field_term(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_init(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>Form_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG> + <STRONG>Form_Hook</STRONG> <STRONG>form_init(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_term(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>Form_Hook</STRONG> <EM>func</EM><STRONG>);</STRONG> + <STRONG>Form_Hook</STRONG> <STRONG>form_term(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions make it possible to set hook functions to be called at + various points in the automatic processing of input event codes by + <STRONG>form_driver</STRONG>. + + The function <STRONG>set_field_init</STRONG> sets a hook to be called at form-post time + and each time the selected field changes (after the change). + <STRONG>field_init</STRONG> returns the current field init hook, if any (<STRONG>NULL</STRONG> if there + is no such hook). + + The function <STRONG>set_field_term</STRONG> sets a hook to be called at form-unpost + time and each time the selected field changes (before the change). + <STRONG>field_term</STRONG> returns the current field term hook, if any (<STRONG>NULL</STRONG> if there + is no such hook). + + The function <STRONG>set_form_init</STRONG> sets a hook to be called at form-post time + and just after a page change once it is posted. <STRONG>form_init</STRONG> returns the + current form init hook, if any (<STRONG>NULL</STRONG> if there is no such hook). + + The function <STRONG>set_form_term</STRONG> sets a hook to be called at form-unpost time + and just before a page change once it is posted. <STRONG>form_init</STRONG> returns the + current form term hook, if any (<STRONG>NULL</STRONG> if there is no such hook). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return pointers return <STRONG>NULL</STRONG> on error. Other routines + return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_hook.3x.html">form_hook(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_new.3x.html b/deps/ncurses-6.3/doc/html/man/form_new.3x.html new file mode 100644 index 0000000..59b09a0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_new.3x.html @@ -0,0 +1,130 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_new.3x,v 1.15 2020/10/24 09:02:26 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_new 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_new 3x</H1> +<PRE> +<STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG> <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>new_form</STRONG>, <STRONG>free_form</STRONG> - create and destroy forms + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>FORM</STRONG> <STRONG>*new_form(FIELD</STRONG> <STRONG>**</STRONG><EM>fields</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>free_form(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>new_form</STRONG> creates a new form connected to a specified field + pointer array (which must be <STRONG>NULL</STRONG>-terminated). + + The function <STRONG>free_form</STRONG> disconnects <EM>form</EM> from its field array and frees + the storage allocated for the form. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>new_form</STRONG> returns <STRONG>NULL</STRONG> on error. It sets <STRONG>errno</STRONG> according + to the function's success: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_CONNECTED</STRONG> + The field is already connected to a form. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred, e.g., malloc failure. + + The function <STRONG>free_form</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_POSTED</STRONG> + The form has already been posted. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_new.3x.html">form_new(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_new_page.3x.html b/deps/ncurses-6.3/doc/html/man/form_new_page.3x.html new file mode 100644 index 0000000..7a14ed6 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_new_page.3x.html @@ -0,0 +1,116 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_new_page.3x,v 1.17 2020/10/18 00:04:36 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_new_page 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_new_page 3x</H1> +<PRE> +<STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG> <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_new_page</STRONG>, <STRONG>new_page</STRONG> - form pagination functions + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_new_page(FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>new</EM><STRONG>_</STRONG><EM>page</EM><STRONG>_</STRONG><EM>flag</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>new_page(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_new_page</STRONG> sets or resets a flag marking the given field + as the beginning of a new page on its form. + + The function <STRONG>new_page</STRONG> is a predicate which tests if a given field marks + a page beginning on its form. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>new_page</STRONG> returns <STRONG>TRUE</STRONG> or <STRONG>FALSE</STRONG>. + + The function <STRONG>set_new_page</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_CONNECTED</STRONG> + The given field is already connected to a form. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "form_" for detailed + descriptions of the entry points. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_new_page.3x.html">form_new_page(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_opts.3x.html b/deps/ncurses-6.3/doc/html/man/form_opts.3x.html new file mode 100644 index 0000000..3c9d87f --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_opts.3x.html @@ -0,0 +1,132 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_opts.3x,v 1.17 2020/10/18 00:03:49 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_opts 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_opts 3x</H1> +<PRE> +<STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_form_opts</STRONG>, <STRONG>form_opts_on</STRONG>, <STRONG>form_opts_off</STRONG>, <STRONG>form_opts</STRONG> - set and get + form options + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_opts(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>Field_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>Field_Options</STRONG> <STRONG>form_opts(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>form_opts_on(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>Field_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>form_opts_off(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>Field_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_form_opts</STRONG> sets all the given form's option bits (form + option bits may be logically-OR'ed together). + + The function <STRONG>form_opts_on</STRONG> turns on the given option bits, and leaves + others alone. + + The function <STRONG>form_opts_off</STRONG> turns off the given option bits, and leaves + others alone. + + The function <STRONG>form_opts</STRONG> returns the form's current option bits. + + The following options are defined (all are on by default): + + O_NL_OVERLOAD + Overload the <STRONG>REQ_NEW_LINE</STRONG> forms driver request so that calling it + at the end of a field goes to the next field. + + O_BS_OVERLOAD + Overload the <STRONG>REQ_DEL_PREV</STRONG> forms driver request so that calling it + at the beginning of a field goes to the previous field. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except for <STRONG>form_opts</STRONG>, each routine returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_opts.3x.html">form_opts(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_page.3x.html b/deps/ncurses-6.3/doc/html/man/form_page.3x.html new file mode 100644 index 0000000..a1b3cad --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_page.3x.html @@ -0,0 +1,144 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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. * + **************************************************************************** + * @Id: form_page.3x,v 1.19 2020/10/18 00:02:44 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_page 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_page 3x</H1> +<PRE> +<STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_page</STRONG> - set and get form page number + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_current_field(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + <STRONG>FIELD</STRONG> <STRONG>*current_field(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>unfocus_current_field(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_page(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>n</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>form_page(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>field_index(const</STRONG> <STRONG>FIELD</STRONG> <STRONG>*</STRONG><EM>field</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_current_field</STRONG> sets the current field of the given + form; <STRONG>current_field</STRONG> returns the current field of the given form. + + The function <STRONG>unfocus_current_field</STRONG> removes the focus from the current + field of the form. In such state, inquiries via <STRONG>current_field</STRONG> shall + return a NULL pointer. + + The function <STRONG>set_form_page</STRONG> sets the form's page number (goes to page <EM>n</EM> + of the form). + + The function <STRONG>form_page</STRONG> returns the form's current page number. + + The function <STRONG>field_index</STRONG> returns the index of the field in the field + array of the form it is connected to. It returns <STRONG>ERR</STRONG> if the argument + is the null pointer or the field is not connected. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except for <STRONG>form_page</STRONG>, each routine returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_INVALID_FIELD</STRONG> + Contents of a field are not valid. + + <STRONG>E_REQUEST_DENIED</STRONG> + The form driver could not process the request. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + The <STRONG>unfocus_current_field</STRONG> function is an ncurses extension. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_page.3x.html">form_page(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_post.3x.html b/deps/ncurses-6.3/doc/html/man/form_post.3x.html new file mode 100644 index 0000000..3534f1e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_post.3x.html @@ -0,0 +1,133 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: form_post.3x,v 1.16 2020/10/18 00:01:05 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_post 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_post 3x</H1> +<PRE> +<STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG> <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>post_form</STRONG>, <STRONG>unpost_form</STRONG> - write or erase forms from associated + subwindows + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>post_form(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>unpost_form(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>post_form</STRONG> displays a form to its associated subwindow. To + trigger physical display of the subwindow, use <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> or some + equivalent <STRONG>curses</STRONG> routine (the implicit <STRONG>doupdate</STRONG> triggered by an <STRONG>curses</STRONG> + input request will do). + + The function <STRONG>unpost_form</STRONG> erases form from its associated subwindow. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_NOT_POSTED</STRONG> + The form has not been posted. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the form. + + <STRONG>E_NO_ROOM</STRONG> + Form is too large for its window. + + <STRONG>E_POSTED</STRONG> + The form has already been posted. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_post.3x.html">form_post(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_requestname.3x.html b/deps/ncurses-6.3/doc/html/man/form_requestname.3x.html new file mode 100644 index 0000000..91dea4a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_requestname.3x.html @@ -0,0 +1,124 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_requestname.3x,v 1.16 2020/12/12 16:37:14 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_requestname 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_requestname 3x</H1> +<PRE> +<STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG> <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_request_by_name</STRONG>, <STRONG>form_request_name</STRONG> - handle printable form request + names + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*form_request_name(int</STRONG> <EM>request</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>form_request_by_name(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>name</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-form_request_name">form_request_name</a></H3><PRE> + The function <STRONG>form_request_name</STRONG> returns the printable name of a form + request code. + + +</PRE><H3><a name="h3-form_request_name_by_name">form_request_name_by_name</a></H3><PRE> + The function <STRONG>form_request_by_name</STRONG> searches in the name-table for a + request with the given name and returns its request code. Otherwise + E_NO_MATCH is returned. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>form_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets <STRONG>errno</STRONG> to + <STRONG>E_BAD_ARGUMENT</STRONG>. + + <STRONG>form_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error. It does not set + <STRONG>errno</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_requestname.3x.html">form_requestname(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-form_request_name">form_request_name</a></li> +<li><a href="#h3-form_request_name_by_name">form_request_name_by_name</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_userptr.3x.html b/deps/ncurses-6.3/doc/html/man/form_userptr.3x.html new file mode 100644 index 0000000..bdc2f2d --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_userptr.3x.html @@ -0,0 +1,113 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: form_userptr.3x,v 1.19 2020/10/24 09:00:52 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_userptr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_userptr 3x</H1> +<PRE> +<STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG> <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_form_userptr</STRONG>, <STRONG>form_userptr</STRONG> - associate application data with a form + item + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_userptr(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>userptr</EM><STRONG>);</STRONG> + <STRONG>void*</STRONG> <STRONG>form_userptr(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + 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. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>form_userptr</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It + does not set <STRONG>errno</STRONG>. + + The function <STRONG>set_form_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + The user pointer is a void pointer. We chose not to leave it as a char + pointer for SVr4 compatibility. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_userptr.3x.html">form_userptr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_variables.3x.html b/deps/ncurses-6.3/doc/html/man/form_variables.3x.html new file mode 100644 index 0000000..218a09c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_variables.3x.html @@ -0,0 +1,133 @@ +<!-- + **************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2010-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. * + **************************************************************************** + * @Id: form_variables.3x,v 1.7 2020/12/12 14:45:16 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_variables 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_variables 3x</H1> +<PRE> +<STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG> <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>TYPE_ALNUM</STRONG>, <STRONG>TYPE_ALPHA</STRONG>, <STRONG>TYPE_ENUM</STRONG>, <STRONG>TYPE_INTEGER</STRONG>, <STRONG>TYPE_IPV4</STRONG>, + <STRONG>TYPE_NUMERIC</STRONG>, <STRONG>TYPE_REGEXP</STRONG> - form system global variables + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_ALNUM;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_ALPHA;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_ENUM;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_INTEGER;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_IPV4;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_NUMERIC;</STRONG> + <STRONG>FIELDTYPE</STRONG> <STRONG>*</STRONG> <STRONG>TYPE_REGEXP;</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These are building blocks for the form library, defining fields that + can be created using the <STRONG><A HREF="form_fieldtype.3x.html">form_fieldtype(3x)</A></STRONG> functions. Each provides + functions for field- and character-validation, according to the given + datatype. + + +</PRE><H3><a name="h3-TYPE_ALNUM">TYPE_ALNUM</a></H3><PRE> + This holds alphanumeric data. + + +</PRE><H3><a name="h3-TYPE_ALPHA">TYPE_ALPHA</a></H3><PRE> + This holds alphabetic data. + + +</PRE><H3><a name="h3-TYPE_ENUM">TYPE_ENUM</a></H3><PRE> + This holds an enumerated type. + + +</PRE><H3><a name="h3-TYPE_INTEGER">TYPE_INTEGER</a></H3><PRE> + This holds a decimal integer. + + +</PRE><H3><a name="h3-TYPE_IPV4">TYPE_IPV4</a></H3><PRE> + This holds an IPv4 internet address, e.g., "127.0.0.1". + + +</PRE><H3><a name="h3-TYPE_NUMERIC">TYPE_NUMERIC</a></H3><PRE> + This holds a decimal number, with optional sign and decimal point. + + +</PRE><H3><a name="h3-TYPE_REGEXP">TYPE_REGEXP</a></H3><PRE> + This holds a regular expression. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The <STRONG>TYPE_IPV4</STRONG> variable is an extension not provided by older implemen- + tations of the form library. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + + + <STRONG><A HREF="form_variables.3x.html">form_variables(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-TYPE_ALNUM">TYPE_ALNUM</a></li> +<li><a href="#h3-TYPE_ALPHA">TYPE_ALPHA</a></li> +<li><a href="#h3-TYPE_ENUM">TYPE_ENUM</a></li> +<li><a href="#h3-TYPE_INTEGER">TYPE_INTEGER</a></li> +<li><a href="#h3-TYPE_IPV4">TYPE_IPV4</a></li> +<li><a href="#h3-TYPE_NUMERIC">TYPE_NUMERIC</a></li> +<li><a href="#h3-TYPE_REGEXP">TYPE_REGEXP</a></li> +</ul> +</li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/form_win.3x.html b/deps/ncurses-6.3/doc/html/man/form_win.3x.html new file mode 100644 index 0000000..2c870e0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/form_win.3x.html @@ -0,0 +1,138 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2006,2010 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. * + **************************************************************************** + * @Id: form_win.3x,v 1.18 2020/10/18 00:00:32 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>form_win 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">form_win 3x</H1> +<PRE> +<STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>form_win</STRONG> - make and break form window and subwindow associations + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;form.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_win(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*form_win(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_form_sub(FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>sub</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*form_sub(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>scale_form(const</STRONG> <STRONG>FORM</STRONG> <STRONG>*</STRONG><EM>form</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>columns</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + Every form has an associated pair of <STRONG>curses</STRONG> windows. The form window + displays any title and border associated with the window; the form + subwindow displays the items of the form that are currently available + for selection. + + The first four functions get and set those windows. It is not + necessary to set either window; by default, the driver code uses <STRONG>stdscr</STRONG> + for both. + + In the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is treated as though it + were <STRONG>stsdcr</STRONG>. A form argument of <STRONG>NULL</STRONG> is treated as a request to change + the system default form window or subwindow. + + The function <STRONG>scale_form</STRONG> returns the minimum size required for the + subwindow of <EM>form</EM>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return pointers return <STRONG>NULL</STRONG> on error. Routines that + return an integer return one of the following error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_POSTED</STRONG> + The form has already been posted. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the form. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="form.3x.html">form(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;form.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V forms library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="form_win.3x.html">form_win(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/index.html b/deps/ncurses-6.3/doc/html/man/index.html new file mode 100644 index 0000000..07d986b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/index.html @@ -0,0 +1,126 @@ +<!-- + $Id: index.html,v 1.12 2020/02/02 23:34:34 tom Exp $ + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2001-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 Linux (vers 25 March 2009), see www.w3.org"> + + <title>NCURSES &ndash; Manual Pages</title> + <link rel="author" href="mailto:dickey@invisible-island.net"> + <meta http-equiv="Content-Type" content= + "text/html; charset=us-ascii"> +</head> + +<body> + <ul> + <li>Programs: + + <ul> + <li><a href="captoinfo.1m.html">captoinfo &ndash; convert a + termcap description into a terminfo description</a></li> + + <li><a href="clear.1.html">clear &ndash; clear the terminal + screen</a></li> + + <li><a href="infocmp.1m.html">infocmp &ndash; compare or + print out terminfo descriptions</a></li> + + <li><a href="infotocap.1m.html">infotocap &ndash; convert a + terminfo description into a termcap description</a></li> + + <li><a href="tabs.1.html">tabs &ndash; set tabs on a + terminal</a></li> + + <li><a href="tic.1m.html">tic &ndash; the terminfo + entry-description compiler</a></li> + + <li><a href="toe.1m.html">toe &ndash; table of (terminfo) + entries</a></li> + + <li><a href="tput.1.html">tput &ndash; initialize a + terminal or query terminfo database</a></li> + + <li><a href="tset.1.html">tset &ndash; terminal + initialization</a></li> + </ul> + </li> + + <li>Scripts: + + <ul> + <li><a href= + "adacurses6-config.1.html">adacurses*-config</a> &ndash; + helper script for AdaCurses libraries</li> + + <li><a href="ncurses6-config.1.html">ncurses*-config</a> + &ndash; helper script for ncurses libraries</li> + </ul> + </li> + + <li>Libraries: + + <ul> + <li><a href="ncurses.3x.html">ncurses &ndash; CRT screen + handling and optimization package</a></li> + + <li><a href="panel.3x.html">panel &ndash; panel stack + extension for curses</a></li> + + <li><a href="form.3x.html">form &ndash; curses extension + for programming forms</a></li> + + <li><a href="menu.3x.html">menu &ndash; curses extension + for programming menus</a></li> + </ul> + </li> + + <li>File formats: + + <ul> + <li><a href="terminfo.5.html">terminfo &ndash; terminal + capability data base</a></li> + + <li><a href="term.5.html">term &ndash; format of compiled + term file.</a></li> + + <li><a href="scr_dump.5.html">scr_dump &ndash; format of + curses screen dumps.</a></li> + + <li><a href="term.7.html">term &ndash; conventions for + naming terminal types</a></li> + </ul> + </li> + </ul> +</body> +</html> diff --git a/deps/ncurses-6.3/doc/html/man/infocmp.1m.html b/deps/ncurses-6.3/doc/html/man/infocmp.1m.html new file mode 100644 index 0000000..03b2568 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/infocmp.1m.html @@ -0,0 +1,551 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2017,2018 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. * + **************************************************************************** + * @Id: infocmp.1m,v 1.79 2021/08/15 20:01:31 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>infocmp 1m</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">infocmp 1m</H1> +<PRE> +<STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>infocmp</STRONG> - compare or print out <EM>terminfo</EM> descriptions + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>infocmp</STRONG> [<STRONG>-1CDEFGIKLTUVWcdegilnpqrtux</STRONG>] + [<STRONG>-v</STRONG> <EM>n</EM>] [<STRONG>-s</STRONG> <STRONG>d</STRONG>| <STRONG>i</STRONG>| <STRONG>l</STRONG>| <STRONG>c</STRONG>] [<STRONG>-Q</STRONG> <EM>n</EM>] [<STRONG>-R</STRONG> <STRONG>subset</STRONG>] + [<STRONG>-w</STRONG> <EM>width</EM>] [<STRONG>-A</STRONG> <EM>directory</EM>] [<STRONG>-B</STRONG> <EM>directory</EM>] + [<EM>termname</EM>...] + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + <STRONG>infocmp</STRONG> can be used to compare a binary <STRONG>terminfo</STRONG> entry with other + terminfo entries, rewrite a <STRONG>terminfo</STRONG> description to take advantage of + the <STRONG>use=</STRONG> terminfo field, or print out a <STRONG>terminfo</STRONG> description from the + binary file (<STRONG>term</STRONG>) 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. + + +</PRE><H3><a name="h3-Default-Options">Default Options</a></H3><PRE> + If no options are specified and zero or one <EM>termnames</EM> are specified, + the <STRONG>-I</STRONG> option will be assumed. If more than one <EM>termname</EM> is specified, + the <STRONG>-d</STRONG> option will be assumed. + + +</PRE><H3><a name="h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></H3><PRE> + <STRONG>infocmp</STRONG> compares the <STRONG>terminfo</STRONG> description of the first terminal + <EM>termname</EM> with each of the descriptions given by the entries for the + other terminal's <EM>termnames</EM>. If a capability is defined for only one of + the terminals, the value returned depends on the type of the + capability: + + <STRONG>o</STRONG> <STRONG>F</STRONG> for missing boolean variables + + <STRONG>o</STRONG> <STRONG>NULL</STRONG> for missing integer or string variables + + Use the <STRONG>-q</STRONG> option to show the distinction between <EM>absent</EM> and <EM>cancelled</EM> + capabilities. + + These options produce a list which you can use to compare two or more + terminal descriptions: + + <STRONG>-d</STRONG> produces a list of each capability that is <EM>different</EM> between two + entries. Each item in the list shows ":" after the capability + name, followed by the capability values, separated by a comma. + + <STRONG>-c</STRONG> produces a list of each capability that is <EM>common</EM> between two or + more entries. Missing capabilities are ignored. Each item in the + list shows "=" after the capability name, followed by the + capability value. + + The <STRONG>-u</STRONG> option provides a related output, showing the first + terminal description rewritten to use the second as a building + block via the "use=" clause. + + <STRONG>-n</STRONG> produces a list of each capability that is in <EM>none</EM> of the given + entries. Each item in the list shows "!" before the capability + name. + + Normally only the conventional capabilities are shown. Use the <STRONG>-x</STRONG> + option to add the BSD-compatibility capabilities (names prefixed + with "OT"). + + If no <EM>termnames</EM> are given, <STRONG>infocmp</STRONG> uses the environment variable + <STRONG>TERM</STRONG> for each of the <EM>termnames</EM>. + + +</PRE><H3><a name="h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></H3><PRE> + The <STRONG>-I</STRONG>, <STRONG>-L</STRONG>, and <STRONG>-C</STRONG> options will produce a source listing for each + terminal named. + + <STRONG>-I</STRONG> use the <STRONG>terminfo</STRONG> names + <STRONG>-L</STRONG> use the long C variable name listed in &lt;<STRONG>term.h</STRONG>&gt; + <STRONG>-C</STRONG> use the <STRONG>termcap</STRONG> names + <STRONG>-r</STRONG> when using <STRONG>-C</STRONG>, put out all capabilities in <STRONG>termcap</STRONG> form + <STRONG>-K</STRONG> modifies the <STRONG>-C</STRONG> option, improving BSD-compatibility. + + If no <EM>termnames</EM> are given, the environment variable <STRONG>TERM</STRONG> will be used + for the terminal name. + + The source produced by the <STRONG>-C</STRONG> option may be used directly as a <STRONG>termcap</STRONG> + entry, but not all parameterized strings can be changed to the <STRONG>termcap</STRONG> + format. <STRONG>infocmp</STRONG> will attempt to convert most of the parameterized + information, and anything not converted will be plainly marked in the + output and commented out. These should be edited by hand. + + For best results when converting to <STRONG>termcap</STRONG> format, you should use both + <STRONG>-C</STRONG> and <STRONG>-r</STRONG>. Normally a termcap description is limited to 1023 bytes. + <STRONG>infocmp</STRONG> trims away less essential parts to make it fit. If you are + converting to one of the (rare) termcap implementations which accept an + unlimited size of termcap, you may want to add the <STRONG>-T</STRONG> option. More + often however, you must help the termcap implementation, and trim + excess whitespace (use the <STRONG>-0</STRONG> option for that). + + All padding information for strings will be collected together and + placed at the beginning of the string where <STRONG>termcap</STRONG> expects it. + Mandatory padding (padding information with a trailing "/") will become + optional. + + All <STRONG>termcap</STRONG> variables no longer supported by <STRONG>terminfo</STRONG>, but which are + derivable from other <STRONG>terminfo</STRONG> variables, will be output. Not all + <STRONG>terminfo</STRONG> capabilities will be translated; only those variables which + were part of <STRONG>termcap</STRONG> will normally be output. Specifying the <STRONG>-r</STRONG> option + will take off this restriction, allowing all capabilities to be output + in <EM>termcap</EM> form. Normally you would use both the <STRONG>-C</STRONG> and <STRONG>-r</STRONG> options. + The actual format used incorporates some improvements for escaped + characters from terminfo format. For a stricter BSD-compatible + translation, use the <STRONG>-K</STRONG> option rather than <STRONG>-C</STRONG>. + + Note that because padding is collected to the beginning of the + capability, not all capabilities are output. Mandatory padding is not + supported. Because <STRONG>termcap</STRONG> strings are not as flexible, it is not + always possible to convert a <STRONG>terminfo</STRONG> string capability into an + equivalent <STRONG>termcap</STRONG> format. A subsequent conversion of the <STRONG>termcap</STRONG> file + back into <STRONG>terminfo</STRONG> format will not necessarily reproduce the original + <STRONG>terminfo</STRONG> source. + + Some common <STRONG>terminfo</STRONG> parameter sequences, their <STRONG>termcap</STRONG> equivalents, + and some terminal types which commonly have such sequences, are: + + <STRONG>terminfo</STRONG> <STRONG>termcap</STRONG> Representative Terminals + --------------------------------------------------------------- + <STRONG>%p1%c</STRONG> <STRONG>%.</STRONG> adm + <STRONG>%p1%d</STRONG> <STRONG>%d</STRONG> hp, ANSI standard, vt100 + <STRONG>%p1%'x'%+%c</STRONG> <STRONG>%+x</STRONG> concept + <STRONG>%i</STRONG> <STRONG>%i</STRONG>q ANSI standard, vt100 + <STRONG>%p1%?%'x'%&gt;%t%p1%'y'%+%;</STRONG> <STRONG>%&gt;xy</STRONG> concept + <STRONG>%p2</STRONG> is printed before <STRONG>%p1</STRONG> <STRONG>%r</STRONG> hp + + +</PRE><H3><a name="h3-Use_-Option-_-u_">Use= Option [-u]</a></H3><PRE> + The <STRONG>-u</STRONG> option produces a <STRONG>terminfo</STRONG> source description of the first + terminal <EM>termname</EM> which is relative to the sum of the descriptions + given by the entries for the other terminals <EM>termnames</EM>. It does this + by analyzing the differences between the first <EM>termname</EM> and the other + <EM>termnames</EM> and producing a description with <STRONG>use=</STRONG> fields for the other + terminals. In this manner, it is possible to retrofit generic terminfo + entries into a terminal's description. Or, if two similar terminals + exist, but were coded at different times or by different people so that + each description is a full description, using <STRONG>infocmp</STRONG> will show what + can be done to change one description to be relative to the other. + + A capability will be printed with an at-sign (@) if it no longer exists + in the first <EM>termname</EM>, but one of the other <EM>termname</EM> entries contains a + value for it. A capability's value will be printed if the value in the + first <EM>termname</EM> is not found in any of the other <EM>termname</EM> entries, or if + the first of the other <EM>termname</EM> entries that has this capability gives + a different value for the capability than that in the first <EM>termname</EM>. + + The order of the other <EM>termname</EM> entries is significant. Since the + terminfo compiler <STRONG>tic</STRONG> does a left-to-right scan of the capabilities, + specifying two <STRONG>use=</STRONG> entries that contain differing entries for the same + capabilities will produce different results depending on the order that + the entries are given in. <STRONG>infocmp</STRONG> will flag any such inconsistencies + between the other <EM>termname</EM> entries as they are found. + + Alternatively, specifying a capability <EM>after</EM> a <STRONG>use=</STRONG> entry that contains + that capability will cause the second specification to be ignored. + Using <STRONG>infocmp</STRONG> to recreate a description can be a useful check to make + sure that everything was specified correctly in the original source + description. + + Another error that does not cause incorrect compiled files, but will + slow down the compilation time, is specifying extra <STRONG>use=</STRONG> fields that + are superfluous. <STRONG>infocmp</STRONG> will flag any other <EM>termname</EM> <EM>use=</EM> fields that + were not needed. + + <STRONG>Changing</STRONG> <STRONG>Databases</STRONG> <STRONG>[-A</STRONG> <EM>directory</EM>] [-B <EM>directory</EM>] + Like other <STRONG>ncurses</STRONG> utilities, <STRONG>infocmp</STRONG> looks for the terminal + descriptions in several places. You can use the <STRONG>TERMINFO</STRONG> and + <STRONG>TERMINFO_DIRS</STRONG> environment variables to override the compiled-in default + list of places to search (see <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> for details). + + You can also use the options <STRONG>-A</STRONG> and <STRONG>-B</STRONG> to override the list of places + to search when comparing terminal descriptions: + + <STRONG>o</STRONG> The <STRONG>-A</STRONG> option sets the location for the first <EM>termname</EM> + + <STRONG>o</STRONG> The <STRONG>-B</STRONG> option sets the location for the other <EM>termnames</EM>. + + Using these options, it is possible to compare descriptions for a + terminal with the same name located in two different databases. For + instance, you can use this feature for comparing descriptions for the + same terminal created by different people. + + +</PRE><H3><a name="h3-Other-Options">Other Options</a></H3><PRE> + <STRONG>-0</STRONG> causes the fields to be printed on one line, without wrapping. + + <STRONG>-1</STRONG> causes the fields to be printed out one to a line. Otherwise, the + fields will be printed several to a line to a maximum width of 60 + characters. + + <STRONG>-a</STRONG> tells <STRONG>infocmp</STRONG> to retain commented-out capabilities rather than + discarding them. Capabilities are commented by prefixing them + with a period. + + <STRONG>-D</STRONG> tells <STRONG>infocmp</STRONG> to print the database locations that it knows about, + and exit. + + <STRONG>-E</STRONG> Dump the capabilities of the given terminal as tables, needed in + the C initializer for a TERMTYPE structure (the terminal + capability structure in the <STRONG>&lt;term.h&gt;</STRONG>). This option is useful for + preparing versions of the curses library hardwired for a given + terminal type. The tables are all declared static, and are named + according to the type and the name of the corresponding terminal + entry. + + Before ncurses 5.0, the split between the <STRONG>-e</STRONG> and <STRONG>-E</STRONG> options was + not needed; but support for extended names required making the + arrays of terminal capabilities separate from the TERMTYPE + structure. + + <STRONG>-e</STRONG> Dump the capabilities of the given terminal as a C initializer for + a TERMTYPE structure (the terminal capability structure in the + <STRONG>&lt;term.h&gt;</STRONG>). This option is useful for preparing versions of the + curses library hardwired for a given terminal type. + + <STRONG>-F</STRONG> compare terminfo files. This assumes that two following arguments + are filenames. The files are searched for pairwise matches + between entries, with two entries considered to match if any of + their names do. The report printed to standard output lists + entries with no matches in the other file, and entries with more + than one match. For entries with exactly one match it includes a + difference report. Normally, to reduce the volume of the report, + use references are not resolved before looking for differences, + but resolution can be forced by also specifying <STRONG>-r</STRONG>. + + <STRONG>-f</STRONG> Display complex terminfo strings which contain if/then/else/endif + expressions indented for readability. + + <STRONG>-G</STRONG> Display constant literals in decimal form rather than their + character equivalents. + + <STRONG>-g</STRONG> Display constant character literals in quoted form rather than + their decimal equivalents. + + <STRONG>-i</STRONG> Analyze the initialization (<STRONG>is1</STRONG>, <STRONG>is2</STRONG>, <STRONG>is3</STRONG>), and reset (<STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, + <STRONG>rs3</STRONG>), strings in the entry, as well as those used for + starting/stopping cursor-positioning mode (<STRONG>smcup</STRONG>, <STRONG>rmcup</STRONG>) as well + as starting/stopping keymap mode (<STRONG>smkx</STRONG>, <STRONG>rmkx</STRONG>). + + For each string, the code tries to analyze it into actions in + terms of the other capabilities in the entry, certain X3.64/ISO + 6429/ECMA-48 capabilities, and certain DEC VT-series private modes + (the set of recognized special sequences has been selected for + completeness over the existing terminfo database). Each report + line consists of the capability name, followed by a colon and + space, followed by a printable expansion of the capability string + with sections matching recognized actions translated into + {}-bracketed descriptions. + + Here is a list of the DEC/ANSI special sequences recognized: + + Action Meaning + ----------------------------------------- + RIS full reset + SC save cursor + RC restore cursor + LL home-down + RSR reset scroll region + ----------------------------------------- + DECSTR soft reset (VT320) + S7C1T 7-bit controls (VT220) + ----------------------------------------- + + ISO DEC G0 enable DEC graphics for G0 + ISO UK G0 enable UK chars for G0 + ISO US G0 enable US chars for G0 + ISO DEC G1 enable DEC graphics for G1 + ISO UK G1 enable UK chars for G1 + ISO US G1 enable US chars for G1 + ----------------------------------------- + DECPAM application keypad mode + DECPNM normal keypad mode + DECANSI enter ANSI mode + ----------------------------------------- + ECMA[+-]AM keyboard action mode + ECMA[+-]IRM insert replace mode + ECMA[+-]SRM send receive mode + ECMA[+-]LNM linefeed mode + ----------------------------------------- + DEC[+-]CKM application cursor keys + DEC[+-]ANM set VT52 mode + DEC[+-]COLM 132-column mode + DEC[+-]SCLM smooth scroll + DEC[+-]SCNM reverse video mode + DEC[+-]OM origin mode + DEC[+-]AWM wraparound mode + DEC[+-]ARM auto-repeat mode + + It also recognizes a SGR action corresponding to ANSI/ISO + 6429/ECMA Set Graphics Rendition, with the values NORMAL, BOLD, + UNDERLINE, BLINK, and REVERSE. All but NORMAL may be prefixed + with + + <STRONG>o</STRONG> "+" (turn on) or + + <STRONG>o</STRONG> "-" (turn off). + + An SGR0 designates an empty highlight sequence (equivalent to + {SGR:NORMAL}). + + <STRONG>-l</STRONG> Set output format to terminfo. + + <STRONG>-p</STRONG> Ignore padding specifications when comparing strings. + + <STRONG>-Q</STRONG> <EM>n</EM> Rather than show source in terminfo (text) format, print the + compiled (binary) format in hexadecimal or base64 form, depending + on the option's value: + + 1 hexadecimal + + 2 base64 + + 3 hexadecimal and base64 + + For example, this prints the compiled terminfo value as a string + which could be assigned to the <STRONG>TERMINFO</STRONG> environment variable: + + infocmp -0 -q -Q2 + + <STRONG>-q</STRONG> This makes the output a little shorter: + + <STRONG>o</STRONG> Make the comparison listing shorter by omitting subheadings, + and using "-" for absent capabilities, "@" for canceled rather + than "NULL". + + <STRONG>o</STRONG> However, show differences between absent and cancelled + capabilities. + + <STRONG>o</STRONG> Omit the "Reconstructed from" comment for source listings. + + <STRONG>-R</STRONG><EM>subset</EM> + Restrict output to a given subset. This option is for use with + archaic versions of terminfo like those on SVr1, Ultrix, or HP-UX + that do not support the full set of SVR4/XSI Curses terminfo; and + variants such as AIX that have their own extensions incompatible + with SVr4/XSI. + + <STRONG>o</STRONG> Available terminfo subsets are "SVr1", "Ultrix", "HP", and + "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for details. + + <STRONG>o</STRONG> You can also choose the subset "BSD" which selects only + capabilities with termcap equivalents recognized by 4.4BSD. + The <STRONG>-C</STRONG> option sets the "BSD" subset as a side-effect. + + <STRONG>o</STRONG> If you select any other value for <STRONG>-R</STRONG>, it is the same as no + subset, i.e., all capabilities are used. The <STRONG>-I</STRONG> option + likewise selects no subset as a side-effect. + + <STRONG>-s</STRONG> <EM>[d|i|l|c]</EM> + The <STRONG>-s</STRONG> option sorts the fields within each type according to the + argument below: + + <STRONG>d</STRONG> leave fields in the order that they are stored in the + <EM>terminfo</EM> database. + + <STRONG>i</STRONG> sort by <EM>terminfo</EM> name. + + <STRONG>l</STRONG> sort by the long C variable name. + + <STRONG>c</STRONG> sort by the <EM>termcap</EM> name. + + If the <STRONG>-s</STRONG> option is not given, the fields printed out will be + sorted alphabetically by the <STRONG>terminfo</STRONG> name within each type, + except in the case of the <STRONG>-C</STRONG> or the <STRONG>-L</STRONG> options, which cause the + sorting to be done by the <STRONG>termcap</STRONG> name or the long C variable + name, respectively. + + <STRONG>-T</STRONG> eliminates size-restrictions on the generated text. This is + mainly useful for testing and analysis, since the compiled + descriptions are limited (e.g., 1023 for termcap, 4096 for + terminfo). + + <STRONG>-t</STRONG> tells <STRONG>tic</STRONG> to discard commented-out capabilities. Normally when + translating from terminfo to termcap, untranslatable capabilities + are commented-out. + + <STRONG>-U</STRONG> tells <STRONG>infocmp</STRONG> to not post-process the data after parsing the + source file. This feature helps when comparing the actual + contents of two source files, since it excludes the inferences + that <STRONG>infocmp</STRONG> makes to fill in missing data. + + <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and + exits. + + <STRONG>-v</STRONG> <EM>n</EM> prints out tracing information on standard error as the program + runs. + + The optional parameter <EM>n</EM> is a number from 1 to 10, inclusive, + indicating the desired level of detail of information. If ncurses + is built without tracing support, the optional parameter is + ignored. + + <STRONG>-W</STRONG> By itself, the <STRONG>-w</STRONG> option will not force long strings to be + wrapped. Use the <STRONG>-W</STRONG> option to do this. + + <STRONG>-w</STRONG> <EM>width</EM> + changes the output to <EM>width</EM> characters. + + <STRONG>-x</STRONG> print information for user-defined capabilities (see <STRONG>user_caps(5)</STRONG>. + These are extensions to the terminfo repertoire which can be + loaded using the <STRONG>-x</STRONG> option of <STRONG>tic</STRONG>. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /usr/share/terminfo Compiled terminal description database. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + Although System V Release 2 provided a terminfo library, it had no + documented tool for decompiling the terminal descriptions. Tony Hansen + (AT&amp;T) wrote the first <STRONG>infocmp</STRONG> in early 1984, for System V Release 3. + + Eric Raymond used the AT&amp;T documentation in 1995 to provide an + equivalent <STRONG>infocmp</STRONG> for ncurses. In addition, he added a few new + features such as: + + <STRONG>o</STRONG> the <STRONG>-e</STRONG> option, to support <EM>fallback</EM> (compiled-in) terminal + descriptions + + <STRONG>o</STRONG> the <STRONG>-i</STRONG> option, to help with analysis + + Later, Thomas Dickey added the <STRONG>-x</STRONG> (user-defined capabilities) option, + and the <STRONG>-E</STRONG> option to support fallback entries with user-defined + capabilities. + + For a complete list, see the <EM>EXTENSIONS</EM> section. + + In 2010, Roy Marples provided an <STRONG>infocmp</STRONG> program for NetBSD. It is + less capable than the SVr4 or ncurses versions (e.g., it lacks the + sorting options documented in X/Open), but does include the <STRONG>-x</STRONG> option + adapted from ncurses. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + X/Open Curses, Issue 7 (2009) provides a description of <STRONG>infocmp</STRONG>. It + does not mention the options used for converting to termcap format. + + +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + The <STRONG>-0</STRONG>, <STRONG>-1</STRONG>, <STRONG>-E</STRONG>, <STRONG>-F</STRONG>, <STRONG>-G</STRONG>, <STRONG>-Q</STRONG>, <STRONG>-R</STRONG>, <STRONG>-T</STRONG>, <STRONG>-V</STRONG>, <STRONG>-a</STRONG>, <STRONG>-e</STRONG>, <STRONG>-f</STRONG>, <STRONG>-g</STRONG>, <STRONG>-i</STRONG>, <STRONG>-l</STRONG>, <STRONG>-p</STRONG>, <STRONG>-q</STRONG> + and <STRONG>-t</STRONG> options are not supported in SVr4 curses. + + SVr4 infocmp does not distinguish between absent and cancelled + capabilities. Also, it shows missing integer capabilities as <STRONG>-1</STRONG> (the + internal value used to represent missing integers). This + implementation shows those as "NULL", for consistency with missing + strings. + + The <STRONG>-r</STRONG> 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 <STRONG>-r</STRONG> <STRONG>-RBSD</STRONG>. + + +</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE> + The <STRONG>-F</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> should be a <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> mode. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, + <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>. + + https://invisible-island.net/ncurses/tctest.html + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and + Thomas E. Dickey &lt;dickey@invisible-island.net&gt; + + + + <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Default-Options">Default Options</a></li> +<li><a href="#h3-Comparison-Options-_-d_-_-c_-_-n_">Comparison Options [-d] [-c] [-n]</a></li> +<li><a href="#h3-Source-Listing-Options-_-I_-_-L_-_-C_-_-r_">Source Listing Options [-I] [-L] [-C] [-r]</a></li> +<li><a href="#h3-Use_-Option-_-u_">Use= Option [-u]</a></li> +<li><a href="#h3-Other-Options">Other Options</a></li> +</ul> +</li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-BUGS">BUGS</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/infotocap.1m.html b/deps/ncurses-6.3/doc/html/man/infotocap.1m.html new file mode 100644 index 0000000..49a32bd --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/infotocap.1m.html @@ -0,0 +1,118 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1999-2010,2016 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. * + **************************************************************************** + * @Id: infotocap.1m,v 1.17 2020/12/19 21:49:52 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>infotocap 1m</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">infotocap 1m</H1> +<PRE> +<STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG> <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>infotocap</STRONG> - convert a <EM>terminfo</EM> description into a <EM>termcap</EM> description + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>infotocap</STRONG> [<STRONG>-v</STRONG><EM>n</EM> <EM>width</EM>] [<STRONG>-V</STRONG>] [<STRONG>-1</STRONG>] [<STRONG>-w</STRONG> <EM>width</EM>] <EM>file</EM> ... + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + <STRONG>infotocap</STRONG> looks in each given text <EM>file</EM> for <STRONG>terminfo</STRONG> descriptions. For + each terminfo description found, an equivalent <STRONG>termcap</STRONG> description is + written to standard output. Terminfo <STRONG>use</STRONG> capabilities are translated + directly to termcap <STRONG>tc</STRONG> capabilities. + + <STRONG>-v</STRONG> print out tracing information on standard error as the program + runs. + + <STRONG>-V</STRONG> print out the version of the program in use on standard error and + exit. + + <STRONG>-1</STRONG> cause the fields to print out one to a line. Otherwise, the + fields will be printed several to a line to a maximum width of 60 + characters. + + <STRONG>-w</STRONG> change the output to <EM>width</EM> characters. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /usr/share/terminfo Compiled terminal description database. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + This utility is actually a link to <STRONG>tic</STRONG>, running in <EM>-C</EM> mode. You can + use other <STRONG>tic</STRONG> options such as <STRONG>-f</STRONG> and <STRONG>-x</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + None of X/Open Curses, Issue 7 (2009), SVr4 or NetBSD document this + application. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and + Thomas E. Dickey &lt;dickey@invisible-island.net&gt; + + + + <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/key_defined.3x.html b/deps/ncurses-6.3/doc/html/man/key_defined.3x.html new file mode 100644 index 0000000..9b77b3b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/key_defined.3x.html @@ -0,0 +1,100 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2003-2006,2010 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: Thomas E. Dickey 2003 + * @Id: key_defined.3x,v 1.10 2020/10/17 23:39:03 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>key_defined 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">key_defined 3x</H1> +<PRE> +<STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>key_defined</STRONG> - check if a keycode is defined + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>key_defined(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>definition</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is an extension to the curses library. It permits an application + to determine if a string is currently bound to any keycode. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + 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. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey. + + + + <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/keybound.3x.html b/deps/ncurses-6.3/doc/html/man/keybound.3x.html new file mode 100644 index 0000000..55f2d00 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/keybound.3x.html @@ -0,0 +1,103 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1999-2008,2010 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: Thomas E. Dickey 1999 + * @Id: keybound.3x,v 1.11 2020/10/17 23:39:30 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>keybound 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">keybound 3x</H1> +<PRE> +<STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG> <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>keybound</STRONG> - return definition of keycode + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>keybound(int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>count);</EM> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is an extension to the curses library. It permits an application + to determine the string which is defined in the terminfo for specific + keycodes. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The <EM>keycode</EM> parameter must be greater than zero, else NULL is returned. + If it does not correspond to a defined key, then NULL is returned. The + <EM>count</EM> 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. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>, <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey. + + + + <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/keyok.3x.html b/deps/ncurses-6.3/doc/html/man/keyok.3x.html new file mode 100644 index 0000000..1ce5358 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/keyok.3x.html @@ -0,0 +1,102 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,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: Thomas E. Dickey 1997 + * @Id: keyok.3x,v 1.15 2020/10/17 23:39:59 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>keyok 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">keyok 3x</H1> +<PRE> +<STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>keyok</STRONG> - enable or disable a keycode + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>keyok(int</STRONG> <EM>keycode</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>enable</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is an extension to the curses library. It permits an application + to disable specific keycodes, rather than use the <EM>keypad</EM> function to + disable all keycodes. Keys that have been disabled can be re-enabled. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The keycode must be greater than zero, else <STRONG>ERR</STRONG> is returned. If it + does not correspond to a defined key, then <STRONG>ERR</STRONG> is returned. If the + <EM>enable</EM> parameter is true, then the key must have been disabled, and + vice versa. Otherwise, the function returns <STRONG>OK</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey. + + + + <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/legacy_coding.3x.html b/deps/ncurses-6.3/doc/html/man/legacy_coding.3x.html new file mode 100644 index 0000000..ef4cfa0 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/legacy_coding.3x.html @@ -0,0 +1,115 @@ +<!-- + **************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2005-2016,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: Thomas E. Dickey + * @Id: legacy_coding.3x,v 1.9 2021/08/15 19:32:05 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>legacy_coding 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">legacy_coding 3x</H1> +<PRE> +<STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG> <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>use_legacy_coding</STRONG> - override locale-encoding checks + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>use_legacy_coding(int</STRONG> <EM>level</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>use_legacy_coding</STRONG> function is an extension to the curses library. + It allows the caller to change the result of <STRONG>unctrl</STRONG>, and suppress + related checks within the library that would normally cause nonprinting + characters to be rendered in visible form. This affects only 8-bit + characters. + + The <EM>level</EM> parameter controls the result: + + 0 the library functions normally, rendering nonprinting + characters as described in <STRONG>unctrl</STRONG>. + + 1 the library ignores <STRONG>isprintf</STRONG> for codes in the range + 160-255. + + 2 the library ignores <STRONG>isprintf</STRONG> for codes in the range + 128-255. It also modifies the output of <STRONG>unctrl</STRONG>, showing + codes in the range 128-159 as is. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + If the screen has not been initialized, or the <EM>level</EM> parameter is out + of range, the function returns <STRONG>ERR</STRONG>. Otherwise, it returns the previous + level: <STRONG>0</STRONG>, <STRONG>1</STRONG> or <STRONG>2</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + This routine is specific to ncurses. It was not supported on Version + 7, BSD or System V implementations. It is recommended that any code + depending on ncurses extensions be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="unctrl.3x.html">unctrl(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey (to support lynx's font-switching feature). + + + + <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu.3x.html b/deps/ncurses-6.3/doc/html/man/menu.3x.html new file mode 100644 index 0000000..0a74892 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu.3x.html @@ -0,0 +1,250 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-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. * + **************************************************************************** + * @Id: menu.3x,v 1.27 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu 3x</H1> +<PRE> +<STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>menu</STRONG> - curses extension for programming menus + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>menu</STRONG> library provides terminal-independent facilities for composing + menu systems on character-cell terminals. The library includes: item + routines, which create and modify menu items; and menu routines, which + group items into menus, display menus on the screen, and handle + interaction with the user. + + The <STRONG>menu</STRONG> library uses the <STRONG>curses</STRONG> libraries, and a curses initialization + routine such as <STRONG>initscr</STRONG> must be called before using any of these + functions. To use the <STRONG>menu</STRONG> library, link with the options <STRONG>-lmenu</STRONG> + <STRONG>-lcurses</STRONG>. + + +</PRE><H3><a name="h3-Current-Default-Values-for-Item-Attributes">Current Default Values for Item Attributes</a></H3><PRE> + The <STRONG>menu</STRONG> library maintains a default value for item attributes. You + can get or set this default by calling the appropriate <STRONG>get_</STRONG> or <STRONG>set_</STRONG> + routine with a <STRONG>NULL</STRONG> item pointer. Changing this default with a <STRONG>set_</STRONG> + function affects future item creations, but does not change the + rendering of items already created. + + +</PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE> + The following table lists each <STRONG>menu</STRONG> routine and the name of the manual + page on which it is described. + + <STRONG>curses</STRONG> Routine Name Manual Page Name + -------------------------------------------- + current_item <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> + free_item <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG> + free_menu <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG> + item_count <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> + item_description <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG> + item_index <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> + item_init <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + item_name <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG> + item_opts <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> + item_opts_off <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> + item_opts_on <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> + item_term <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + item_userptr <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG> + item_value <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG> + item_visible <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG> + menu_back <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + menu_driver <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG> + menu_fore <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + menu_format <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG> + menu_grey <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + menu_init <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + menu_items <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> + menu_mark <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG> + menu_opts <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> + menu_opts_off <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> + menu_opts_on <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> + menu_pad <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + menu_pattern <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG> + menu_request_by_name <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG> + menu_request_name <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG> + + menu_spacing <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG> + menu_sub <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> + menu_term <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + menu_userptr <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG> + menu_win <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> + new_item <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG> + new_menu <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG> + pos_menu_cursor <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG> + post_menu <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG> + scale_menu <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> + set_current_item <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> + set_item_init <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + set_item_opts <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> + set_item_term <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + set_item_userptr <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG> + set_item_value <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG> + set_menu_back <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + set_menu_fore <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + set_menu_format <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG> + set_menu_grey <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + set_menu_init <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + set_menu_items <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> + set_menu_mark <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG> + set_menu_opts <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> + set_menu_pad <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + set_menu_pattern <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG> + set_menu_spacing <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG> + set_menu_sub <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> + set_menu_term <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + set_menu_userptr <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG> + set_menu_win <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> + set_top_row <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> + top_row <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> + unpost_menu <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG> + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return pointers return <STRONG>NULL</STRONG> on error. Routines that + return an integer return one of the following error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_NO_MATCH</STRONG> + Character failed to match. + + <STRONG>E_NO_ROOM</STRONG> + Menu is too large for its window. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the menu. + + <STRONG>E_NOT_POSTED</STRONG> + The menu has not been posted. + + <STRONG>E_NOT_SELECTABLE</STRONG> + The designated item cannot be selected. + + <STRONG>E_POSTED</STRONG> + The menu is already posted. + + <STRONG>E_REQUEST_DENIED</STRONG> + The menu driver could not process the request. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_UNKNOWN_COMMAND</STRONG> + The menu driver code saw an unknown request code. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header files + <STRONG>&lt;curses.h&gt;</STRONG> and <STRONG>&lt;eti.h&gt;</STRONG>. + + In your library list, libmenu.a should be before libncurses.a; that is, + you should say "-lmenu -lncurses", not the other way around (which + would give a link-error when using static libraries). + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + The menu facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM> <EM>Interface</EM> + <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>. + + It is not part of X/Open Curses. + + Aside from ncurses, there are few implementations: + + <STRONG>o</STRONG> systems based on SVr4 source code, e.g., Solaris. + + <STRONG>o</STRONG> NetBSD curses. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric S. + Raymond. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for detailed + descriptions of the entry points. + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Current-Default-Values-for-Item-Attributes">Current Default Values for Item Attributes</a></li> +<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_attributes.3x.html b/deps/ncurses-6.3/doc/html/man/menu_attributes.3x.html new file mode 100644 index 0000000..b98ddd5 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_attributes.3x.html @@ -0,0 +1,140 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_attributes.3x,v 1.19 2020/10/17 23:58:58 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_attributes 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_attributes 3x</H1> +<PRE> +<STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>menu_back</STRONG>, <STRONG>menu_fore</STRONG>, <STRONG>menu_grey</STRONG>, <STRONG>menu_pad</STRONG>, <STRONG>set_menu_back</STRONG>, + <STRONG>set_menu_fore</STRONG>, <STRONG>set_menu_grey</STRONG>, <STRONG>set_menu_pad</STRONG> - color and attribute + control for menus + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_fore(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attr</EM><STRONG>);</STRONG> + <STRONG>chtype</STRONG> <STRONG>menu_fore(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_back(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attr</EM><STRONG>);</STRONG> + <STRONG>chtype</STRONG> <STRONG>menu_back(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_grey(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>chtype</STRONG> <EM>attr</EM><STRONG>);</STRONG> + <STRONG>chtype</STRONG> <STRONG>menu_grey(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_pad(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>pad</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>menu_pad(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_menu_fore</STRONG> sets the foreground attribute of <EM>menu</EM>. This + is the highlight used for selected menu items. <STRONG>menu_fore</STRONG> returns the + foreground attribute. The default is <STRONG>A_REVERSE</STRONG>. + + The function <STRONG>set_menu_back</STRONG> sets the background attribute of <EM>menu</EM>. This + is the highlight used for selectable (but not currently selected) menu + items. The function <STRONG>menu_back</STRONG> returns the background attribute. The + default is <STRONG>A_NORMAL</STRONG>. + + The function <STRONG>set_menu_grey</STRONG> sets the grey attribute of <EM>menu</EM>. This is the + highlight used for un-selectable menu items in menus that permit more + than one selection. The function <STRONG>menu_grey</STRONG> returns the grey attribute. + The default is <STRONG>A_UNDERLINE</STRONG>. + + The function <STRONG>set_menu_pad</STRONG> sets the character used to fill the space + between the name and description parts of a menu item. <STRONG>menu_pad</STRONG> + returns the given menu's pad character. The default is a blank. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> and related pages whose names begin "menu_" for detailed + descriptions of the entry points. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_attributes.3x.html">menu_attributes(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_cursor.3x.html b/deps/ncurses-6.3/doc/html/man/menu_cursor.3x.html new file mode 100644 index 0000000..266542e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_cursor.3x.html @@ -0,0 +1,117 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_cursor.3x,v 1.13 2020/10/17 23:41:31 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_cursor 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_cursor 3x</H1> +<PRE> +<STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG> <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>pos_menu_cursor</STRONG> - position a menu's cursor + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>pos_menu_cursor(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>pos_menu_cursor</STRONG> restores the cursor to the current + position associated with the menu's selected item. This is useful + after <STRONG>curses</STRONG> routines have been called to do screen-painting in + response to a menu select. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + This routine returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_NOT_POSTED</STRONG> + The menu has not been posted. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_cursor.3x.html">menu_cursor(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_driver.3x.html b/deps/ncurses-6.3/doc/html/man/menu_driver.3x.html new file mode 100644 index 0000000..f7000ae --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_driver.3x.html @@ -0,0 +1,251 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,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. * + **************************************************************************** + * @Id: menu_driver.3x,v 1.28 2020/12/19 21:33:37 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_driver 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_driver 3x</H1> +<PRE> +<STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG> <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>menu_driver</STRONG> - command-processing loop of the menu system + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>menu_driver(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>c</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + Once a menu has been posted (displayed), you should funnel input events + to it through <STRONG>menu_driver</STRONG>. This routine has three major input cases: + + <STRONG>o</STRONG> The input is a form navigation request. Navigation request codes + are constants defined in <STRONG>&lt;form.h&gt;</STRONG>, which are distinct from the key- + and character codes returned by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>. + + <STRONG>o</STRONG> The input is a printable character. Printable characters (which + must be positive, less than 256) are checked according to the + program's locale settings. + + <STRONG>o</STRONG> The input is the KEY_MOUSE special key associated with an mouse + event. + + The menu driver requests are as follows: + + REQ_LEFT_ITEM + Move left to an item. + + REQ_RIGHT_ITEM + Move right to an item. + + REQ_UP_ITEM + Move up to an item. + + REQ_DOWN_ITEM + Move down to an item. + + REQ_SCR_ULINE + Scroll up a line. + + REQ_SCR_DLINE + Scroll down a line. + + REQ_SCR_DPAGE + Scroll down a page. + + REQ_SCR_UPAGE + Scroll up a page. + + REQ_FIRST_ITEM + Move to the first item. + + REQ_LAST_ITEM + Move to the last item. + + REQ_NEXT_ITEM + Move to the next item. + + REQ_PREV_ITEM + Move to the previous item. + + REQ_TOGGLE_ITEM + Select/deselect an item. + + REQ_CLEAR_PATTERN + Clear the menu pattern buffer. + + REQ_BACK_PATTERN + Delete the previous character from the pattern buffer. + + REQ_NEXT_MATCH + Move to the next item matching the pattern match. + + REQ_PREV_MATCH + Move to the previous item matching the pattern match. + + If the second argument is a printable character, the code appends it to + the pattern buffer and attempts to move to the next item matching the + new pattern. If there is no such match, <STRONG>menu_driver</STRONG> returns <STRONG>E_NO_MATCH</STRONG> + and deletes the appended character from the buffer. + + If the second argument is one of the above pre-defined requests, the + corresponding action is performed. + + +</PRE><H3><a name="h3-MOUSE-HANDLING">MOUSE HANDLING</a></H3><PRE> + If the second argument is the KEY_MOUSE special key, the associated + mouse event is translated into one of the above pre-defined requests. + Currently only clicks in the user window (e.g., inside the menu display + area or the decoration window) are handled. + + If you click above the display region of the menu: + + <STRONG>o</STRONG> a REQ_SCR_ULINE is generated for a single click, + + <STRONG>o</STRONG> a REQ_SCR_UPAGE is generated for a double-click and + + <STRONG>o</STRONG> a REQ_FIRST_ITEM is generated for a triple-click. + + If you click below the display region of the menu: + + <STRONG>o</STRONG> a REQ_SCR_DLINE is generated for a single click, + + <STRONG>o</STRONG> a REQ_SCR_DPAGE is generated for a double-click and + + <STRONG>o</STRONG> a REQ_LAST_ITEM is generated for a triple-click. + + If you click at an item inside the display area of the menu: + + <STRONG>o</STRONG> the menu cursor is positioned to that item. + + <STRONG>o</STRONG> If you double-click an item a REQ_TOGGLE_ITEM is generated and + <STRONG>E_UNKNOWN_COMMAND</STRONG> is returned. This return value makes sense, + because a double click usually means that an item-specific action + should be returned. It is exactly the purpose of this return value + to signal that an application specific command should be executed. + + <STRONG>o</STRONG> If a translation into a request was done, <STRONG>menu_driver</STRONG> returns the + result of this request. + + If you clicked outside the user window or the mouse event could not be + translated into a menu request an <STRONG>E_REQUEST_DENIED</STRONG> is returned. + + +</PRE><H3><a name="h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></H3><PRE> + If the second argument is neither printable nor one of the above pre- + defined menu requests or KEY_MOUSE, the drive assumes it is an + application-specific command and returns <STRONG>E_UNKNOWN_COMMAND</STRONG>. + Application-defined commands should be defined relative to <STRONG>MAX_COMMAND</STRONG>, + the maximum value of these pre-defined requests. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>menu_driver</STRONG> return one of the following error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_NOT_POSTED</STRONG> + The menu has not been posted. + + <STRONG>E_UNKNOWN_COMMAND</STRONG> + The menu driver code saw an unknown request code. + + <STRONG>E_NO_MATCH</STRONG> + Character failed to match. + + <STRONG>E_REQUEST_DENIED</STRONG> + The menu driver could not process the request. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_getch.3x.html">getch(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header files + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. The support for mouse events + is ncurses specific. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-MOUSE-HANDLING">MOUSE HANDLING</a></li> +<li><a href="#h3-APPLICATION-DEFINED-COMMANDS">APPLICATION-DEFINED COMMANDS</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_format.3x.html b/deps/ncurses-6.3/doc/html/man/menu_format.3x.html new file mode 100644 index 0000000..da6e492 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_format.3x.html @@ -0,0 +1,130 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2015,2016 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. * + **************************************************************************** + * @Id: menu_format.3x,v 1.18 2020/10/17 23:43:11 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_format 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_format 3x</H1> +<PRE> +<STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG> <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_menu_format</STRONG>, <STRONG>menu_format</STRONG> - set and get menu sizes + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_format(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>cols</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>menu_format(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>cols</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_menu_format</STRONG> sets the maximum display size of the given + menu. If this size is too small to display all menu items, the menu + will be made scrollable. If this size is larger than the menus + subwindow and the subwindow is too small to display all menu items, + <STRONG>post_menu</STRONG> will fail. + + The default format is 16 rows, 1 column. Calling <STRONG>set_menu_format</STRONG> with + a null menu pointer will change this default. A zero row or column + argument to <STRONG>set_menu_format</STRONG> is interpreted as a request not to change + the current value. + + The function <STRONG>menu_format</STRONG> returns the maximum-size constraints for the + given menu into the storage addressed by <STRONG>rows</STRONG> and <STRONG>cols</STRONG>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_POSTED</STRONG> + The menu is already posted. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the menu. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_format.3x.html">menu_format(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_hook.3x.html b/deps/ncurses-6.3/doc/html/man/menu_hook.3x.html new file mode 100644 index 0000000..f7bda22 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_hook.3x.html @@ -0,0 +1,141 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2007,2010 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. * + **************************************************************************** + * @Id: menu_hook.3x,v 1.15 2020/10/17 23:44:57 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_hook 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_hook 3x</H1> +<PRE> +<STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>menu_hook</STRONG> - set hooks for automatic invocation by applications + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_item_init(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM> + <STRONG>Menu_Hook</STRONG> <STRONG>item_init(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM> + + <STRONG>int</STRONG> <STRONG>set_item_term(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM> + <STRONG>Menu_Hook</STRONG> <STRONG>item_term(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM> + + <STRONG>int</STRONG> <STRONG>set_menu_init(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM> + <STRONG>Menu_Hook</STRONG> <STRONG>menu_init(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM> + + <STRONG>int</STRONG> <STRONG>set_menu_term(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Hook</STRONG> <EM>func);</EM> + <STRONG>Menu_Hook</STRONG> <STRONG>menu_term(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu);</EM> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions make it possible to set hook functions to be called at + various points in the automatic processing of input event codes by + <STRONG>menu_driver</STRONG>. + + The function <STRONG>set_item_init</STRONG> sets a hook to be called at menu-post time + and each time the selected item changes (after the change). <STRONG>item_init</STRONG> + returns the current item init hook, if any (<STRONG>NULL</STRONG> if there is no such + hook). + + The function <STRONG>set_item_term</STRONG> sets a hook to be called at menu-unpost time + and each time the selected item changes (before the change). <STRONG>item_term</STRONG> + returns the current item term hook, if any (<STRONG>NULL</STRONG> if there is no such + hook). + + The function <STRONG>set_menu_init</STRONG> sets a hook to be called at menu-post time + and just after the top row on the menu changes once it is posted. + <STRONG>menu_init</STRONG> returns the current menu init hook, if any (<STRONG>NULL</STRONG> if there is + no such hook). + + The function <STRONG>set_menu_term</STRONG> sets a hook to be called at menu-unpost time + and just before the top row on the menu changes once it is posted. + <STRONG>menu_term</STRONG> returns the current menu term hook, if any (<STRONG>NULL</STRONG> if there is + no such hook). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return pointers return <STRONG>NULL</STRONG> on error. Other routines + return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_hook.3x.html">menu_hook(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_items.3x.html b/deps/ncurses-6.3/doc/html/man/menu_items.3x.html new file mode 100644 index 0000000..cb0eaba --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_items.3x.html @@ -0,0 +1,135 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,2015 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. * + **************************************************************************** + * @Id: menu_items.3x,v 1.17 2020/10/24 09:00:06 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_items 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_items 3x</H1> +<PRE> +<STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_menu_items</STRONG>, <STRONG>menu_items</STRONG>, <STRONG>item_count</STRONG> - make and break connections + between items and menus + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_items(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>ITEM</STRONG> <STRONG>**</STRONG><EM>items</EM><STRONG>);</STRONG> + <STRONG>ITEM</STRONG> <STRONG>**menu_items(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>item_count(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_menu_items</STRONG> changes the item pointer array of the given + <EM>menu</EM>. The array must be terminated by a <STRONG>NULL</STRONG>. + + The function <STRONG>menu_items</STRONG> returns the item array of the given menu. + + The function <STRONG>item_count</STRONG> returns the count of items in <EM>menu</EM>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>menu_items</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does + not set <STRONG>errno</STRONG>. + + The function <STRONG>item_count</STRONG> returns <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG> error return + value) if its <EM>menu</EM> parameter is <STRONG>NULL</STRONG>. + + The function <STRONG>set_menu_items</STRONG> returns one of the following codes on + error: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the menu. + + <STRONG>E_POSTED</STRONG> + The menu is already posted. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + The SVr4 menu library documentation specifies the <STRONG>item_count</STRONG> error + value as -1 (which is the value of <STRONG>ERR</STRONG>). + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_items.3x.html">menu_items(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_mark.3x.html b/deps/ncurses-6.3/doc/html/man/menu_mark.3x.html new file mode 100644 index 0000000..84b0db6 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_mark.3x.html @@ -0,0 +1,128 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_mark.3x,v 1.18 2020/10/24 08:59:04 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_mark 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_mark 3x</H1> +<PRE> +<STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG> <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_menu_mark</STRONG>, <STRONG>menu_mark</STRONG> - get and set the menu mark string + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_mark(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>mark</EM><STRONG>);</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*menu_mark(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + In order to make menu selections visible on older terminals without + highlighting or color capability, the menu library marks selected items + in a menu with a prefix string. + + The function <STRONG>set_menu_mark</STRONG> sets the mark string for the given menu. + Calling <STRONG>set_menu_mark</STRONG> with a null menu item will abolish the mark + string. Note that changing the length of the mark string for a menu + while the menu is posted is likely to produce unhelpful behavior. + + The default string is "-" (a dash). Calling <STRONG>set_menu_mark</STRONG> with a non- + <STRONG>NULL</STRONG> menu argument will change this default. + + The function <STRONG>menu_mark</STRONG> returns the menu's mark string (or <STRONG>NULL</STRONG> if there + is none). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>menu_mark</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does + not set <STRONG>errno</STRONG>. + + The function <STRONG>set_menu_mark</STRONG> may return the following error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_mark.3x.html">menu_mark(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_new.3x.html b/deps/ncurses-6.3/doc/html/man/menu_new.3x.html new file mode 100644 index 0000000..082882c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_new.3x.html @@ -0,0 +1,128 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_new.3x,v 1.18 2020/10/24 08:57:51 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_new 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_new 3x</H1> +<PRE> +<STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG> <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>new_menu</STRONG>, <STRONG>free_menu</STRONG> - create and destroy menus + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>MENU</STRONG> <STRONG>*new_menu(ITEM</STRONG> <STRONG>**</STRONG><EM>items</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>free_menu(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>new_menu</STRONG> creates a new menu connected to a specified item + pointer array (which must be <STRONG>NULL</STRONG>-terminated). + + The function <STRONG>free_menu</STRONG> disconnects <EM>menu</EM> from its item array and frees + the storage allocated for the menu. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>new_menu</STRONG> returns <STRONG>NULL</STRONG> on error. It sets <STRONG>errno</STRONG> according + to the function's failure: + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the menu. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred, e.g., malloc failure. + + The function <STRONG>free_menu</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_POSTED</STRONG> + The menu has already been posted. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_new.3x.html">menu_new(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_opts.3x.html b/deps/ncurses-6.3/doc/html/man/menu_opts.3x.html new file mode 100644 index 0000000..937c4cd --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_opts.3x.html @@ -0,0 +1,152 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2015,2016 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. * + **************************************************************************** + * @Id: menu_opts.3x,v 1.18 2020/10/17 23:46:35 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_opts 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_opts 3x</H1> +<PRE> +<STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_menu_opts</STRONG>, <STRONG>menu_opts_on</STRONG>, <STRONG>menu_opts_off</STRONG>, <STRONG>menu_opts</STRONG> - set and get + menu options + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_opts(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>Menu_Options</STRONG> <STRONG>menu_opts(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>menu_opts_on(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>menu_opts_off(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>Menu_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_menu_opts</STRONG> sets all the given menu's option bits (menu + option bits may be logically-OR'ed together). + + The function <STRONG>menu_opts_on</STRONG> turns on the given option bits, and leaves + others alone. + + The function <STRONG>menu_opts_off</STRONG> turns off the given option bits, and leaves + others alone. + + The function <STRONG>menu_opts</STRONG> returns the menu's current option bits. + + The following options are defined (all are on by default): + + O_ONEVALUE + Only one item can be selected for this menu. + + O_SHOWDESC + Display the item descriptions when the menu is posted. + + O_ROWMAJOR + Display the menu in row-major order. + + O_IGNORECASE + Ignore the case when pattern-matching. + + O_SHOWMATCH + Move the cursor to within the item name while pattern-matching. + + O_NONCYCLIC + Don't wrap around next-item and previous-item, requests to the + other end of the menu. + + O_MOUSE_MENU + If user clicks with the mouse and it does not fall on the + currently active menu, push <STRONG>KEY_MOUSE</STRONG> and the <STRONG>MEVENT</STRONG> data back on + the queue to allow processing in another part of the calling + program. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except for <STRONG>menu_opts</STRONG>, each routine returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_POSTED</STRONG> + The menu is already posted. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_pattern.3x.html b/deps/ncurses-6.3/doc/html/man/menu_pattern.3x.html new file mode 100644 index 0000000..d9ba95c --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_pattern.3x.html @@ -0,0 +1,132 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_pattern.3x,v 1.21 2020/10/18 00:41:14 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_pattern 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_pattern 3x</H1> +<PRE> +<STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG> <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_menu_pattern</STRONG>, <STRONG>menu_pattern</STRONG> - set and get a menu's pattern buffer + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_pattern(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>pattern</EM><STRONG>);</STRONG> + <STRONG>char</STRONG> <STRONG>*menu_pattern(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + Every menu has an associated pattern match buffer. As input events + that are printable characters come in, they are appended to this match + buffer and tested for a match, as described in <STRONG><A HREF="menu_driver.3x.html">menu_driver(3x)</A></STRONG>. + + The function <STRONG>set_menu_pattern</STRONG> sets the pattern buffer for the given + menu and tries to find the first matching item. If it succeeds, that + item becomes current; if not, the current item does not change. + + The function <STRONG>menu_pattern</STRONG> returns the pattern buffer of the given <EM>menu</EM>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>menu_pattern</STRONG> returns a pointer, which is <STRONG>NULL</STRONG> if the <EM>menu</EM> + parameter is <STRONG>NULL</STRONG>. Otherwise, it is a pointer to a string which is + empty if no pattern has been set. It does not set <STRONG>errno</STRONG>. + + The function <STRONG>set_menu_pattern</STRONG> may return the following error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to menu. + + <STRONG>E_NO_MATCH</STRONG> + Character failed to match. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_pattern.3x.html">menu_pattern(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_post.3x.html b/deps/ncurses-6.3/doc/html/man/menu_post.3x.html new file mode 100644 index 0000000..2930fb9 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_post.3x.html @@ -0,0 +1,135 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: menu_post.3x,v 1.19 2020/10/17 23:47:21 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_post 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_post 3x</H1> +<PRE> +<STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG> <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>post_menu</STRONG>, <STRONG>unpost_menu</STRONG> - write or erase menus from associated + subwindows + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>post_menu(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>unpost_menu(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>post_menu</STRONG> displays a menu to its associated subwindow. To + trigger physical display of the subwindow, use <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> or some + equivalent <STRONG>curses</STRONG> routine (the implicit <STRONG>doupdate</STRONG> triggered by an <STRONG>curses</STRONG> + input request will do). <STRONG>post_menu</STRONG> resets the selection status of all + items. + + The function <STRONG>unpost_menu</STRONG> erases menu from its associated subwindow. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_POSTED</STRONG> + The menu has already been posted. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_NO_ROOM</STRONG> + Menu is too large for its window. You should consider using + <STRONG>set_menu_format</STRONG> to solve the problem. + + <STRONG>E_NOT_POSTED</STRONG> + The menu has not been posted. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the menu. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_post.3x.html">menu_post(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_requestname.3x.html b/deps/ncurses-6.3/doc/html/man/menu_requestname.3x.html new file mode 100644 index 0000000..4d263ed --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_requestname.3x.html @@ -0,0 +1,113 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_requestname.3x,v 1.15 2020/10/18 00:40:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_requestname 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_requestname 3x</H1> +<PRE> +<STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG> <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>menu_request_by_name</STRONG>, <STRONG>menu_request_name</STRONG> - handle printable menu request + names + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*menu_request_name(int</STRONG> <EM>request</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>menu_request_by_name(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>name</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>menu_request_name</STRONG> returns the printable name of a menu + request code. + The function <STRONG>menu_request_by_name</STRONG> searches in the name-table for a + request with the given name and returns its request code. Otherwise + E_NO_MATCH is returned. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>menu_request_name</STRONG> returns <STRONG>NULL</STRONG> on error and sets <STRONG>errno</STRONG> to + <STRONG>E_BAD_ARGUMENT</STRONG>. + <STRONG>menu_request_by_name</STRONG> returns <STRONG>E_NO_MATCH</STRONG> on error. It does not set + <STRONG>errno</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_requestname.3x.html">menu_requestname(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_spacing.3x.html b/deps/ncurses-6.3/doc/html/man/menu_spacing.3x.html new file mode 100644 index 0000000..7e4b412 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_spacing.3x.html @@ -0,0 +1,127 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_spacing.3x,v 1.17 2020/10/17 23:48:53 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_spacing 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_spacing 3x</H1> +<PRE> +<STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG> <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_menu_spacing</STRONG>, <STRONG>menu_spacing</STRONG> - set and get spacing between menu + items. + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_spacing(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>spc</EM><STRONG>_</STRONG><EM>description</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>spc</EM><STRONG>_</STRONG><EM>rows</EM><STRONG>,</STRONG> + <STRONG>int</STRONG> <EM>spc</EM><STRONG>_</STRONG><EM>columns</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>menu_spacing(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> + <STRONG>int*</STRONG> <EM>spc</EM><STRONG>_</STRONG><EM>description</EM><STRONG>,</STRONG> + <STRONG>int*</STRONG> <EM>spc</EM><STRONG>_</STRONG><EM>rows</EM><STRONG>,</STRONG> + <STRONG>int*</STRONG> <EM>spc</EM><STRONG>_</STRONG><EM>columns</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_menu_spacing</STRONG> sets the spacing information for the + menu. Its parameter <STRONG>spc_description</STRONG> controls the number of spaces + between an item name and an item description. It must not be larger + than <STRONG>TABSIZE</STRONG>. The menu system puts in the middle of this spacing area + the pad character. The remaining parts are filled with spaces. The + <STRONG>spc_rows</STRONG> parameter controls the number of rows that are used for an + item. It must not be larger than 3. The menu system inserts the blank + lines between item rows, these lines will contain the pad character in + the appropriate positions. The <STRONG>spc_columns</STRONG> parameter controls the + number of blanks between columns of items. It must not be larger than + <STRONG>TABSIZE</STRONG>. A value of 0 for all the spacing values resets them to the + default, which is 1 for all of them. + The function <STRONG>menu_spacing</STRONG> passes back the spacing info for the menu. + If a pointer is NULL, this specific info is simply not returned. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Both routines return <STRONG>E_OK</STRONG> on success. <STRONG>set_menu_spacing</STRONG> may return + <STRONG>E_POSTED</STRONG> if the menu is posted, or <STRONG>E_BAD_ARGUMENT</STRONG> if one of the spacing + values is out of range. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_spacing.3x.html">menu_spacing(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_userptr.3x.html b/deps/ncurses-6.3/doc/html/man/menu_userptr.3x.html new file mode 100644 index 0000000..4a267be --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_userptr.3x.html @@ -0,0 +1,113 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: menu_userptr.3x,v 1.16 2020/10/18 00:39:49 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_userptr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_userptr 3x</H1> +<PRE> +<STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG> <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_menu_userptr</STRONG>, <STRONG>menu_userptr</STRONG> - associate application data with a menu + item + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_userptr(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>userptr</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>*menu_userptr(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + 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. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>menu_userptr</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does not set + <STRONG>errno</STRONG>. + + <STRONG>set_menu_userptr</STRONG> returns <STRONG>E_OK</STRONG> (success). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + The user pointer is a void pointer. We chose not to leave it as a char + pointer for SVr4 compatibility. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_userptr.3x.html">menu_userptr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/menu_win.3x.html b/deps/ncurses-6.3/doc/html/man/menu_win.3x.html new file mode 100644 index 0000000..6ada6b6 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/menu_win.3x.html @@ -0,0 +1,138 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2006,2010 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. * + **************************************************************************** + * @Id: menu_win.3x,v 1.15 2020/10/17 23:50:51 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>menu_win 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">menu_win 3x</H1> +<PRE> +<STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>menu_win</STRONG> - make and break menu window and subwindow associations + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_win(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*menu_win(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_menu_sub(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>sub</EM><STRONG>);</STRONG> + <STRONG>WINDOW</STRONG> <STRONG>*menu_sub(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>scale_menu(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu,</EM> <EM>int</EM> <EM>*rows</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <STRONG>*</STRONG><EM>columns);</EM> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + Every menu has an associated pair of <STRONG>curses</STRONG> windows. The menu window + displays any title and border associated with the window; the menu + subwindow displays the items of the menu that are currently available + for selection. + + The first four functions get and set those windows. It is not + necessary to set either window; by default, the driver code uses <STRONG>stdscr</STRONG> + for both. + + In the <STRONG>set_</STRONG> functions, window argument of <STRONG>NULL</STRONG> is treated as though it + were <STRONG>stsdcr</STRONG>. A menu argument of <STRONG>NULL</STRONG> is treated as a request to change + the system default menu window or subwindow. + + The function <STRONG>scale_menu</STRONG> returns the minimum size required for the + subwindow of <EM>menu</EM>. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return pointers return <STRONG>NULL</STRONG> on error. Routines that + return an integer return one of the following error codes: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_POSTED</STRONG> + The menu has already been posted. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the menu. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="menu_win.3x.html">menu_win(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/mitem_current.3x.html b/deps/ncurses-6.3/doc/html/man/mitem_current.3x.html new file mode 100644 index 0000000..df6aada --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/mitem_current.3x.html @@ -0,0 +1,143 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2006,2010 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. * + **************************************************************************** + * @Id: mitem_current.3x,v 1.20 2020/10/18 00:39:06 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>mitem_current 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">mitem_current 3x</H1> +<PRE> +<STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>mitem_current</STRONG> - set and get current_menu_item + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_current_item(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + <STRONG>ITEM</STRONG> <STRONG>*current_item(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_top_row(MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>row</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>top_row(const</STRONG> <STRONG>MENU</STRONG> <STRONG>*</STRONG><EM>menu</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>item_index(const</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_current_item</STRONG> sets the current item (the item on which + the menu cursor is positioned). <STRONG>current_item</STRONG> returns a pointer to the + current item in the given menu. + + The function <STRONG>set_top_row</STRONG> sets the top row of the menu to show the given + row (the top row is initially 0, and is reset to this value whenever + the <STRONG>O_ROWMAJOR</STRONG> option is toggled). The item leftmost on the given row + becomes current. The function <STRONG>top_row</STRONG> returns the number of the top + menu row being displayed. + + The function <STRONG>item_index</STRONG> returns the (zero-origin) index of <EM>item</EM> in the + menu's item pointer list. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + <STRONG>current_item</STRONG> returns a pointer (which may be <STRONG>NULL</STRONG>). It does not set + <STRONG>errno</STRONG>. + + <STRONG>top_row</STRONG> and <STRONG>item_index</STRONG> return <STRONG>ERR</STRONG> (the general <STRONG>curses</STRONG> error value) if + their <EM>menu</EM> parameter is <STRONG>NULL</STRONG>. + + <STRONG>set_current_item</STRONG> and <STRONG>set_top_row</STRONG> return one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_BAD_STATE</STRONG> + Routine was called from an initialization or termination function. + + <STRONG>E_NOT_CONNECTED</STRONG> + No items are connected to the menu. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + The SVr4 menu library documentation specifies the <STRONG>top_row</STRONG> and + <STRONG>index_item</STRONG> error value as -1 (which is the value of <STRONG>ERR</STRONG>). + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="mitem_current.3x.html">mitem_current(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/mitem_name.3x.html b/deps/ncurses-6.3/doc/html/man/mitem_name.3x.html new file mode 100644 index 0000000..637434a --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/mitem_name.3x.html @@ -0,0 +1,107 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: mitem_name.3x,v 1.14 2020/10/18 00:37:48 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>mitem_name 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">mitem_name 3x</H1> +<PRE> +<STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG> <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>item_name</STRONG>, <STRONG>item_description</STRONG> - get menu item name and description fields + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*item_name(const</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*item_description(const</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>item_name</STRONG> returns the name part of the given item. + The function <STRONG>item_description</STRONG> returns the description part of the given + item. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + These routines return a pointer (which may be <STRONG>NULL</STRONG>). They do not set + <STRONG>errno</STRONG>. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="mitem_name.3x.html">mitem_name(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/mitem_new.3x.html b/deps/ncurses-6.3/doc/html/man/mitem_new.3x.html new file mode 100644 index 0000000..bb3160d --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/mitem_new.3x.html @@ -0,0 +1,131 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: mitem_new.3x,v 1.19 2020/10/18 00:37:03 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>mitem_new 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">mitem_new 3x</H1> +<PRE> +<STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG> <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>new_item</STRONG>, <STRONG>free_item</STRONG> - create and destroy menu items + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>ITEM</STRONG> <STRONG>*new_item(const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>name</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG><EM>description</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>free_item(ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>new_item</STRONG> allocates a new item and initializes it from the + <STRONG>name</STRONG> and <STRONG>description</STRONG> pointers. Please notice that the item stores only + the pointers to the name and description. Those pointers must be valid + during the lifetime of the item. So you should be very careful with + names or descriptions allocated on the stack of some routines. + The function <STRONG>free_item</STRONG> de-allocates an item. Please notice that it is + the responsibility of the application to release the memory for the + name or the description of the item. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>new_item</STRONG> returns <STRONG>NULL</STRONG> on error. It sets <STRONG>errno</STRONG> according + to the function's failure: + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred, e.g., malloc failure. + + The function <STRONG>free_item</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_BAD_ARGUMENT</STRONG> + Routine detected an incorrect or out-of-range argument. + + <STRONG>E_CONNECTED</STRONG> + Item is connected to a menu. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="mitem_new.3x.html">mitem_new(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/mitem_opts.3x.html b/deps/ncurses-6.3/doc/html/man/mitem_opts.3x.html new file mode 100644 index 0000000..72b0f00 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/mitem_opts.3x.html @@ -0,0 +1,126 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: mitem_opts.3x,v 1.16 2020/10/17 23:52:26 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>mitem_opts 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">mitem_opts 3x</H1> +<PRE> +<STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_item_opts</STRONG>, <STRONG>item_opts_on</STRONG>, <STRONG>item_opts_off</STRONG>, <STRONG>item_opts</STRONG> - set and get + menu item options + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_item_opts(ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>,</STRONG> <STRONG>Item_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>Item_Options</STRONG> <STRONG>item_opts(const</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>item_opts_on(ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>,</STRONG> <STRONG>Item_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>item_opts_off(ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>,</STRONG> <STRONG>Item_Options</STRONG> <EM>opts</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The function <STRONG>set_item_opts</STRONG> sets all the given item's option bits (menu + option bits may be logically-OR'ed together). + + The function <STRONG>item_opts_on</STRONG> turns on the given option bits, and leaves + others alone. + + The function <STRONG>item_opts_off</STRONG> turns off the given option bits, and leaves + others alone. + + The function <STRONG>item_opts</STRONG> returns the item's current option bits. + + There is only one defined option bit mask, <STRONG>O_SELECTABLE</STRONG>. When this is + on, the item may be selected during menu processing. This option + defaults to on. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except for <STRONG>item_opts</STRONG>, each routine returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="mitem_opts.3x.html">mitem_opts(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/mitem_userptr.3x.html b/deps/ncurses-6.3/doc/html/man/mitem_userptr.3x.html new file mode 100644 index 0000000..1e9f29f --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/mitem_userptr.3x.html @@ -0,0 +1,113 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: mitem_userptr.3x,v 1.17 2020/10/18 00:36:16 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>mitem_userptr 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">mitem_userptr 3x</H1> +<PRE> +<STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG> <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_item_userptr</STRONG>, <STRONG>item_userptr</STRONG> - associate application data with a menu + item + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_item_userptr(ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>,</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>userptr</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>*item_userptr(const</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + 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 that field. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>item_userptr</STRONG> returns a pointer (possibly <STRONG>NULL</STRONG>). It does + not set <STRONG>errno</STRONG>. + + The <STRONG>set_item_userptr</STRONG> always returns <STRONG>E_OK</STRONG> (success). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + The user pointer is a void pointer. We chose not to leave it as a char + pointer for SVr4 compatibility. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="mitem_userptr.3x.html">mitem_userptr(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/mitem_value.3x.html b/deps/ncurses-6.3/doc/html/man/mitem_value.3x.html new file mode 100644 index 0000000..f900f12 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/mitem_value.3x.html @@ -0,0 +1,117 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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. * + **************************************************************************** + * @Id: mitem_value.3x,v 1.15 2020/10/17 23:53:24 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>mitem_value 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">mitem_value 3x</H1> +<PRE> +<STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG> <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>set_item_value</STRONG>, <STRONG>item_value</STRONG> - set and get menu item values + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>set_item_value(ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>,</STRONG> <STRONG>bool</STRONG> <EM>value</EM><STRONG>);</STRONG> + <STRONG>bool</STRONG> <STRONG>item_value(const</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + If you turn off the menu option <STRONG>O_ONEVALUE</STRONG> (e.g., with <STRONG>set_menu_opts</STRONG> or + <STRONG>menu_opts_off</STRONG>; see <STRONG><A HREF="menu_opts.3x.html">menu_opts(3x)</A></STRONG>), the menu becomes multi-valued; that + is, more than one item may simultaneously be selected. + + In a multi_valued menu, you can used <STRONG>set_item_value</STRONG> to select the given + menu item (second argument <STRONG>TRUE</STRONG>) or deselect it (second argument + <STRONG>FALSE</STRONG>). + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function <STRONG>set_item_value</STRONG> returns one of the following: + + <STRONG>E_OK</STRONG> The routine succeeded. + + <STRONG>E_SYSTEM_ERROR</STRONG> + System error occurred (see <STRONG>errno(3)</STRONG>). + + <STRONG>E_REQUEST_DENIED</STRONG> + The menu driver could not process the request. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="mitem_value.3x.html">mitem_value(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/mitem_visible.3x.html b/deps/ncurses-6.3/doc/html/man/mitem_visible.3x.html new file mode 100644 index 0000000..5336712 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/mitem_visible.3x.html @@ -0,0 +1,100 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998,2010 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. * + **************************************************************************** + * @Id: mitem_visible.3x,v 1.10 2020/10/17 23:53:55 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>mitem_visible 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">mitem_visible 3x</H1> +<PRE> +<STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG> <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>mitem_visible</STRONG> - check visibility of a menu item + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;menu.h&gt;</STRONG> + + <STRONG>bool</STRONG> <STRONG>item_visible(const</STRONG> <STRONG>ITEM</STRONG> <STRONG>*</STRONG><EM>item</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + A menu item is visible when it is in the portion of a posted menu that + is mapped onto the screen (if the menu is scrollable, in particular, + this portion will be smaller than the whole menu). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="menu.3x.html">menu(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The header file <STRONG>&lt;menu.h&gt;</STRONG> automatically includes the header file + <STRONG>&lt;curses.h&gt;</STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines emulate the System V menu library. They were not + supported on Version 7 or BSD versions. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Juergen Pfeifer. Manual pages and adaptation for new curses by Eric S. + Raymond. + + + + <STRONG><A HREF="mitem_visible.3x.html">mitem_visible(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/ncurses.3x.html b/deps/ncurses-6.3/doc/html/man/ncurses.3x.html new file mode 100644 index 0000000..f473109 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/ncurses.3x.html @@ -0,0 +1,1537 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: ncurses.3x,v 1.153 2021/08/22 17:17:16 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>ncurses 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">ncurses 3x</H1> +<PRE> +<STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>ncurses</STRONG> - CRT screen handling and optimization package + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>ncurses</STRONG> library routines give the user a terminal-independent + method of updating character screens with reasonable optimization. + This implementation is "new curses" (ncurses) and is the approved + replacement for 4.4BSD classic curses, which has been discontinued. + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + The <STRONG>ncurses</STRONG> library emulates the curses library of System V Release 4 + UNIX, and XPG4 (X/Open Portability Guide) curses (also known as XSI + curses). XSI stands for X/Open System Interfaces Extension. The + <STRONG>ncurses</STRONG> library is freely redistributable in source form. Differences + from the SVr4 curses are summarized under the <STRONG>EXTENSIONS</STRONG> and + <STRONG>PORTABILITY</STRONG> sections below and described in detail in the respective + <STRONG>EXTENSIONS</STRONG>, <STRONG>PORTABILITY</STRONG> and <STRONG>BUGS</STRONG> sections of individual man pages. + + The <STRONG>ncurses</STRONG> library also provides many useful extensions, i.e., + features which cannot be implemented by a simple add-on library but + which require access to the internals of the library. + + A program using these routines must be linked with the <STRONG>-lncurses</STRONG> + option, or (if it has been generated) with the debugging library + <STRONG>-lncurses_g</STRONG>. (Your system integrator may also have installed these + libraries under the names <STRONG>-lcurses</STRONG> and <STRONG>-lcurses_g</STRONG>.) The ncurses_g + library generates trace logs (in a file called "trace" in the current + directory) that describe curses actions. See also the section on + <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>. + + The <STRONG>ncurses</STRONG> package supports: overall screen, window and pad + manipulation; output to windows and pads; reading terminal input; + control over terminal and <STRONG>curses</STRONG> input and output options; environment + query routines; color manipulation; use of soft label keys; terminfo + capabilities; and access to low-level terminal-manipulation routines. + + +</PRE><H3><a name="h3-Initialization">Initialization</a></H3><PRE> + The library uses the locale which the calling program has initialized. + That is normally done with <STRONG>setlocale</STRONG>: + + <STRONG>setlocale(LC_ALL,</STRONG> <STRONG>"");</STRONG> + + If the locale is not initialized, the library assumes that characters + are printable as in ISO-8859-1, to work with certain legacy programs. + You should initialize the locale and not rely on specific details of + the library when the locale has not been setup. + + The function <STRONG>initscr</STRONG> or <STRONG>newterm</STRONG> must be called to initialize the + library before any of the other routines that deal with windows and + screens are used. The routine <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> must be called before + exiting. + + To get character-at-a-time input without echoing (most interactive, + screen oriented programs want this), the following sequence should be + used: + + <STRONG>initscr();</STRONG> <STRONG>cbreak();</STRONG> <STRONG>noecho();</STRONG> + + Most programs would additionally use the sequence: + + <STRONG>intrflush(stdscr,</STRONG> <STRONG>FALSE);</STRONG> + <STRONG>keypad(stdscr,</STRONG> <STRONG>TRUE);</STRONG> + + Before a <STRONG>curses</STRONG> program is run, the tab stops of the terminal should be + set and its initialization strings, if defined, must be output. This + can be done by executing the <STRONG>tput</STRONG> <STRONG>init</STRONG> command after the shell + environment variable <STRONG>TERM</STRONG> has been exported. <STRONG>tset(1)</STRONG> is usually + responsible for doing this. [See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for further details.] + + +</PRE><H3><a name="h3-Datatypes">Datatypes</a></H3><PRE> + The <STRONG>ncurses</STRONG> library permits manipulation of data structures, called + <EM>windows</EM>, which can be thought of as two-dimensional arrays of + characters representing all or part of a CRT screen. A default window + called <STRONG>stdscr</STRONG>, which is the size of the terminal screen, is supplied. + Others may be created with <STRONG>newwin</STRONG>. + + Note that <STRONG>curses</STRONG> does not handle overlapping windows, that's done by + the <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> library. This means that you can either use <STRONG>stdscr</STRONG> or + divide the screen into tiled windows and not using <STRONG>stdscr</STRONG> at all. + Mixing the two will result in unpredictable, and undesired, effects. + + Windows are referred to by variables declared as <STRONG>WINDOW</STRONG> <STRONG>*</STRONG>. These data + structures are manipulated with routines described here and elsewhere + in the <STRONG>ncurses</STRONG> manual pages. Among those, the most basic routines are + <STRONG>move</STRONG> and <STRONG>addch</STRONG>. More general versions of these routines are included + with names beginning with <STRONG>w</STRONG>, allowing the user to specify a window. + The routines not beginning with <STRONG>w</STRONG> affect <STRONG>stdscr</STRONG>. + + After using routines to manipulate a window, <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> is called, + telling <STRONG>curses</STRONG> to make the user's CRT screen look like <STRONG>stdscr</STRONG>. The + characters in a window are actually of type <STRONG>chtype</STRONG>, (character and + attribute data) so that other information about the character may also + be stored with each character. + + Special windows called <EM>pads</EM> may also be manipulated. These are windows + which are not constrained to the size of the screen and whose contents + need not be completely displayed. See <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> for more + information. + + In addition to drawing characters on the screen, video 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. Line drawing characters may be + specified to be output. On input, <STRONG>curses</STRONG> is also able to translate + arrow and function keys that transmit escape sequences into single + values. The video attributes, line drawing characters, and input + values use names, defined in <STRONG>&lt;curses.h&gt;</STRONG>, such as <STRONG>A_REVERSE</STRONG>, <STRONG>ACS_HLINE</STRONG>, + and <STRONG>KEY_LEFT</STRONG>. + + +</PRE><H3><a name="h3-Environment-variables">Environment variables</a></H3><PRE> + If the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> are set, or if the + program is executing in a window environment, line and column + information in the environment will override information read by + <EM>terminfo</EM>. This would affect a program running in an AT&amp;T 630 layer, + for example, where the size of a screen is changeable (see + <STRONG>ENVIRONMENT</STRONG>). + + If the environment variable <STRONG>TERMINFO</STRONG> is defined, any program using + <STRONG>curses</STRONG> checks for a local terminal definition before checking in the + standard place. For example, if <STRONG>TERM</STRONG> is set to <STRONG>att4424</STRONG>, then the + compiled terminal definition is found in + + <STRONG>/usr/share/terminfo/a/att4424</STRONG>. + + (The <STRONG>a</STRONG> is copied from the first letter of <STRONG>att4424</STRONG> to avoid creation of + huge directories.) However, if <STRONG>TERMINFO</STRONG> is set to <STRONG>$HOME/myterms</STRONG>, + <STRONG>curses</STRONG> first checks + + <STRONG>$HOME/myterms/a/att4424</STRONG>, + + and if that fails, it then checks + + <STRONG>/usr/share/terminfo/a/att4424</STRONG>. + + This is useful for developing experimental definitions or when write + permission in <STRONG>/usr/share/terminfo</STRONG> is not available. + + The integer variables <STRONG>LINES</STRONG> and <STRONG>COLS</STRONG> are defined in <STRONG>&lt;curses.h&gt;</STRONG> and will + be filled in by <STRONG>initscr</STRONG> with the size of the screen. The constants + <STRONG>TRUE</STRONG> and <STRONG>FALSE</STRONG> have the values <STRONG>1</STRONG> and <STRONG>0</STRONG>, respectively. + + The <STRONG>curses</STRONG> routines also define the <STRONG>WINDOW</STRONG> <STRONG>*</STRONG> variable <STRONG>curscr</STRONG> which is + used for certain low-level operations like clearing and redrawing a + screen containing garbage. The <STRONG>curscr</STRONG> can be used in only a few + routines. + + +</PRE><H3><a name="h3-Routine-and-Argument-Names">Routine and Argument Names</a></H3><PRE> + Many <STRONG>curses</STRONG> routines have two or more versions. The routines prefixed + with <STRONG>w</STRONG> require a window argument. The routines prefixed with <STRONG>p</STRONG> require + a pad argument. Those without a prefix generally use <STRONG>stdscr</STRONG>. + + The routines prefixed with <STRONG>mv</STRONG> require a <EM>y</EM> and <EM>x</EM> coordinate to move to + before performing the appropriate action. The <STRONG>mv</STRONG> routines imply a call + to <STRONG>move</STRONG> before the call to the other routine. The coordinate <EM>y</EM> always + refers to the row (of the window), and <EM>x</EM> always refers to the column. + The upper left-hand corner is always (0,0), not (1,1). + + The routines prefixed with <STRONG>mvw</STRONG> take both a window argument and <EM>x</EM> and <EM>y</EM> + coordinates. The window argument is always specified before the + coordinates. + + In each case, <EM>win</EM> is the window affected, and <EM>pad</EM> is the pad affected; + <EM>win</EM> and <EM>pad</EM> are always pointers to type <STRONG>WINDOW</STRONG>. + + Option setting routines require a Boolean flag <EM>bf</EM> with the value <STRONG>TRUE</STRONG> + or <STRONG>FALSE</STRONG>; <EM>bf</EM> is always of type <STRONG>bool</STRONG>. Most of the data types used in + the library routines, such as <STRONG>WINDOW</STRONG>, <STRONG>SCREEN</STRONG>, <STRONG>bool</STRONG>, and <STRONG>chtype</STRONG> are + defined in <STRONG>&lt;curses.h&gt;</STRONG>. Types used for the terminfo routines such as + <STRONG>TERMINAL</STRONG> are defined in <STRONG>&lt;term.h&gt;</STRONG>. + + This manual page describes functions which may appear in any + configuration of the library. There are two common configurations of + the library: + + <EM>ncurses</EM> + the "normal" library, which handles 8-bit characters. The + normal (8-bit) library stores characters combined with + attributes in <STRONG>chtype</STRONG> data. + + Attributes alone (no corresponding character) may be stored in + <STRONG>chtype</STRONG> or the equivalent <STRONG>attr_t</STRONG> data. In either case, the data + is stored in something like an integer. + + Each cell (row and column) in a <STRONG>WINDOW</STRONG> is stored as a <STRONG>chtype</STRONG>. + + <EM>ncursesw</EM> + the so-called "wide" library, which handles multibyte + characters (see the section on <STRONG>ALTERNATE</STRONG> <STRONG>CONFIGURATIONS</STRONG>). The + "wide" library includes all of the calls from the "normal" + library. It adds about one third more calls using data types + which store multibyte characters: + + <STRONG>cchar_t</STRONG> + corresponds to <STRONG>chtype</STRONG>. However it is a structure, because + more data is stored than can fit into an integer. The + characters are large enough to require a full integer + value - and there may be more than one character per cell. + The video attributes and color are stored in separate + fields of the structure. + + Each cell (row and column) in a <STRONG>WINDOW</STRONG> is stored as a + <STRONG>cchar_t</STRONG>. + + The <STRONG><A HREF="curs_getcchar.3x.html">setcchar(3x)</A></STRONG> and <STRONG><A HREF="curs_getcchar.3x.html">getcchar(3x)</A></STRONG> functions store and + retrieve the data from a <STRONG>cchar_t</STRONG> structure. + + <STRONG>wchar_t</STRONG> + stores a "wide" character. Like <STRONG>chtype</STRONG>, this may be an + integer. + + <STRONG>wint_t</STRONG> + stores a <STRONG>wchar_t</STRONG> or <STRONG>WEOF</STRONG> - not the same, though both may + have the same size. + + The "wide" library provides new functions which are analogous + to functions in the "normal" library. There is a naming + convention which relates many of the normal/wide variants: a + "_w" is inserted into the name. For example, <STRONG>waddch</STRONG> becomes + <STRONG>wadd_wch</STRONG>. + + +</PRE><H3><a name="h3-Routine-Name-Index">Routine Name Index</a></H3><PRE> + The following table lists the <STRONG>curses</STRONG> routines provided in the "normal" + and "wide" libraries and the names of the manual pages on which they + are described. Routines flagged with "*" are ncurses-specific, not + described by XPG4 or present in SVr4. + + <STRONG>curses</STRONG> Routine Name Manual Page Name + --------------------------------------------- + COLOR_PAIR <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + PAIR_NUMBER <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + add_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + add_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + add_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + addch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> + addchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + addchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + addnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + addnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + addstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + addwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + alloc_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>* + assume_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>* + attr_get <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + attr_off <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + attr_on <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + attr_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + attroff <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + attron <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + attrset <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + baudrate <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + beep <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> + bkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> + bkgdset <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> + bkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> + bkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> + border <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + + border_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + box <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + box_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + can_change_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + cbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + chgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + clear <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + clearok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + clrtobot <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + clrtoeol <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + color_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + color_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + copywin <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> + curs_set <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + curses_trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>* + curses_version <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>* + def_prog_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + def_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + define_key <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG>* + del_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + delay_output <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + delch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> + deleteln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> + delscreen <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> + delwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + derwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + doupdate <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + dupwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + echo <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + echo_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + echochar <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> + endwin <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> + erase <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + erasechar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + erasewchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + exit_curses <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>* + exit_terminfo <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG>* + extended_color_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* + extended_pair_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* + extended_slk_color <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>* + filter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + find_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>* + flash <STRONG><A HREF="curs_beep.3x.html">curs_beep(3x)</A></STRONG> + flushinp <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + free_pair <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG>* + get_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> + get_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + getattrs <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + getbegx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + getbegy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + getbegyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> + getbkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> + getbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> + getcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> + getch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> + getcurx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + getcury <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + getmaxx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + getmaxy <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + getmaxyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> + getmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + getn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + getnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + getparx <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + getpary <STRONG><A HREF="curs_legacy.3x.html">curs_legacy(3x)</A></STRONG>* + + getparyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> + getstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + getsyx <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + getwin <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + getyx <STRONG><A HREF="curs_getyx.3x.html">curs_getyx(3x)</A></STRONG> + halfdelay <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + has_colors <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + has_ic <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + has_il <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + has_key <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>* + has_mouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + hline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + hline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + idcok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + idlok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + immedok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + in_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> + in_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + in_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + inch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> + inchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + inchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + init_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + init_extended_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* + init_extended_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* + init_pair <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + initscr <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> + innstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + innwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + ins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + ins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> + ins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + insch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> + insdelln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> + insertln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> + insnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + insstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + instr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + intrflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + inwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + is_cleared <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_idcok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_idlok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_immedok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_keypad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_leaveok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_linetouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> + is_nodelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_notimeout <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_pad <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_scrollok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_subwin <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_syncok <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + is_term_resized <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>* + is_wintouched <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> + isendwin <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> + key_defined <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>* + key_name <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + keybound <STRONG><A HREF="keybound.3x.html">keybound(3x)</A></STRONG>* + keyname <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + keyok <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG>* + keypad <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + killchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + killwchar <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + leaveok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + + longname <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + mcprint <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG>* + meta <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + mouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + mouseinterval <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + mousemask <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + move <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> + mvadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + mvadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + mvadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + mvaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> + mvaddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + mvaddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + mvaddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + mvaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + mvaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + mvaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + mvchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + mvcur <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + mvdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> + mvderwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + mvget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> + mvget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + mvgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> + mvgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + mvgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + mvgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + mvhline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + mvhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + mvin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> + mvin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + mvin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + mvinch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> + mvinchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + mvinchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + mvinnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + mvinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + mvins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + mvins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> + mvins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + mvinsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> + mvinsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + mvinsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + mvinstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + mvinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + mvprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> + mvscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> + mvvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + mvvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + mvwadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + mvwadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + mvwadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + mvwaddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> + mvwaddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + mvwaddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + mvwaddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + mvwaddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + mvwaddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + mvwaddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + mvwchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + mvwdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> + mvwget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> + mvwget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + mvwgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> + mvwgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + + mvwgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + mvwgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + mvwhline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + mvwhline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + mvwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + mvwin_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> + mvwin_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + mvwin_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + mvwinch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> + mvwinchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + mvwinchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + mvwinnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + mvwinnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + mvwins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + mvwins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> + mvwins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + mvwinsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> + mvwinsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + mvwinsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + mvwinstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + mvwinwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + mvwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> + mvwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> + mvwvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + mvwvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + napms <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + newpad <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> + newterm <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> + newwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + nl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + nocbreak <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + nodelay <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + noecho <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + nofilter <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>* + nonl <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + noqiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + noraw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + notimeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + overlay <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> + overwrite <STRONG><A HREF="curs_overlay.3x.html">curs_overlay(3x)</A></STRONG> + pair_content <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + pecho_wchar <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG>* + pechochar <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> + pnoutrefresh <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> + prefresh <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> + printw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> + putp <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + putwin <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + qiflush <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + raw <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + redrawwin <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + refresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + reset_color_pairs <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>* + reset_prog_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + reset_shell_mode <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + resetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + resize_term <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>* + resizeterm <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>* + restartterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + ripoffline <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + savetty <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + scanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> + scr_dump <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> + scr_init <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> + scr_restore <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> + + scr_set <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG> + scrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> + scroll <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> + scrollok <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + set_curterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + set_term <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG> + setcchar <STRONG><A HREF="curs_getcchar.3x.html">curs_getcchar(3x)</A></STRONG> + setscrreg <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + setsyx <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> + setupterm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + slk_attr <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>* + slk_attr_off <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_attr_on <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_attr_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_attroff <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_attron <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_attrset <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_clear <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_color <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_init <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_label <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_noutrefresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_refresh <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_restore <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_set <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_touch <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> + slk_wset <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG>* + standend <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + standout <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + start_color <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> + subpad <STRONG><A HREF="curs_pad.3x.html">curs_pad(3x)</A></STRONG> + subwin <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + syncok <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + term_attrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + termattrs <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + termname <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> + tgetent <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> + tgetflag <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> + tgetnum <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> + tgetstr <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> + tgoto <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> + tigetflag <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + tigetnum <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + tigetstr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + timeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + tiparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>* + touchline <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> + touchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> + tparm <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + tputs <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> + tputs <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + trace <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG>* + typeahead <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + unctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + unget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> + ungetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> + ungetmouse <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + untouchwin <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> + use_default_colors <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>* + use_env <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + use_extended_names <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG>* + use_legacy_coding <STRONG><A HREF="legacy_coding.3x.html">legacy_coding(3x)</A></STRONG>* + use_tioctl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>* + vid_attr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + vid_puts <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + + vidattr <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + vidputs <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> + vline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + vline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + vw_printw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> + vw_scanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> + vwprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> + vwscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> + wadd_wch <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + wadd_wchnstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + wadd_wchstr <STRONG><A HREF="curs_add_wchstr.3x.html">curs_add_wchstr(3x)</A></STRONG> + waddch <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> + waddchnstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + waddchstr <STRONG><A HREF="curs_addchstr.3x.html">curs_addchstr(3x)</A></STRONG> + waddnstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + waddnwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + waddstr <STRONG><A HREF="curs_addstr.3x.html">curs_addstr(3x)</A></STRONG> + waddwstr <STRONG><A HREF="curs_addwstr.3x.html">curs_addwstr(3x)</A></STRONG> + wattr_get <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wattr_off <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wattr_on <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wattr_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wattroff <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wattron <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wattrset <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wbkgd <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> + wbkgdset <STRONG><A HREF="curs_bkgd.3x.html">curs_bkgd(3x)</A></STRONG> + wbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> + wbkgrndset <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> + wborder <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + wborder_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + wchgat <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wclear <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + wclrtobot <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + wclrtoeol <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + wcolor_set <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wcursyncup <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + wdelch <STRONG><A HREF="curs_delch.3x.html">curs_delch(3x)</A></STRONG> + wdeleteln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> + wecho_wchar <STRONG><A HREF="curs_add_wch.3x.html">curs_add_wch(3x)</A></STRONG> + wechochar <STRONG><A HREF="curs_addch.3x.html">curs_addch(3x)</A></STRONG> + wenclose <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + werase <STRONG><A HREF="curs_clear.3x.html">curs_clear(3x)</A></STRONG> + wget_wch <STRONG><A HREF="curs_get_wch.3x.html">curs_get_wch(3x)</A></STRONG> + wget_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + wgetbkgrnd <STRONG><A HREF="curs_bkgrnd.3x.html">curs_bkgrnd(3x)</A></STRONG> + wgetch <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> + wgetdelay <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + wgetn_wstr <STRONG><A HREF="curs_get_wstr.3x.html">curs_get_wstr(3x)</A></STRONG> + wgetnstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + wgetparent <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + wgetscrreg <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG>* + wgetstr <STRONG><A HREF="curs_getstr.3x.html">curs_getstr(3x)</A></STRONG> + whline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + whline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + win_wch <STRONG><A HREF="curs_in_wch.3x.html">curs_in_wch(3x)</A></STRONG> + win_wchnstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + win_wchstr <STRONG><A HREF="curs_in_wchstr.3x.html">curs_in_wchstr(3x)</A></STRONG> + winch <STRONG><A HREF="curs_inch.3x.html">curs_inch(3x)</A></STRONG> + winchnstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + winchstr <STRONG><A HREF="curs_inchstr.3x.html">curs_inchstr(3x)</A></STRONG> + winnstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + winnwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + wins_nwstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + wins_wch <STRONG><A HREF="curs_ins_wch.3x.html">curs_ins_wch(3x)</A></STRONG> + + wins_wstr <STRONG><A HREF="curs_ins_wstr.3x.html">curs_ins_wstr(3x)</A></STRONG> + winsch <STRONG><A HREF="curs_insch.3x.html">curs_insch(3x)</A></STRONG> + winsdelln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> + winsertln <STRONG><A HREF="curs_deleteln.3x.html">curs_deleteln(3x)</A></STRONG> + winsnstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + winsstr <STRONG><A HREF="curs_insstr.3x.html">curs_insstr(3x)</A></STRONG> + winstr <STRONG><A HREF="curs_instr.3x.html">curs_instr(3x)</A></STRONG> + winwstr <STRONG><A HREF="curs_inwstr.3x.html">curs_inwstr(3x)</A></STRONG> + wmouse_trafo <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG>* + wmove <STRONG><A HREF="curs_move.3x.html">curs_move(3x)</A></STRONG> + wnoutrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + wprintw <STRONG><A HREF="curs_printw.3x.html">curs_printw(3x)</A></STRONG> + wredrawln <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + wrefresh <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG> + wresize <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>* + wscanw <STRONG><A HREF="curs_scanw.3x.html">curs_scanw(3x)</A></STRONG> + wscrl <STRONG><A HREF="curs_scroll.3x.html">curs_scroll(3x)</A></STRONG> + wsetscrreg <STRONG><A HREF="curs_outopts.3x.html">curs_outopts(3x)</A></STRONG> + wstandend <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wstandout <STRONG><A HREF="curs_attr.3x.html">curs_attr(3x)</A></STRONG> + wsyncdown <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + wsyncup <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG> + wtimeout <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> + wtouchln <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG> + wunctrl <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> + wvline <STRONG><A HREF="curs_border.3x.html">curs_border(3x)</A></STRONG> + wvline_set <STRONG><A HREF="curs_border_set.3x.html">curs_border_set(3x)</A></STRONG> + + Depending on the configuration, additional sets of functions may be + available: + + <STRONG><A HREF="curs_memleaks.3x.html">curs_memleaks(3x)</A></STRONG> - curses memory-leak checking + + <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> - curses screen-pointer extension + + <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> - curses thread support + + <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> - curses debugging routines + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Routines that return an integer return <STRONG>ERR</STRONG> upon failure and an integer + value other than <STRONG>ERR</STRONG> upon successful completion, unless otherwise noted + in the routine descriptions. + + As a general rule, routines check for null pointers passed as + parameters, and handle this as an error. + + All macros return the value of the <STRONG>w</STRONG> version, except <STRONG>setscrreg</STRONG>, + <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, and <STRONG>getmaxyx</STRONG>. The return values of + <STRONG>setscrreg</STRONG>, <STRONG>wsetscrreg</STRONG>, <STRONG>getyx</STRONG>, <STRONG>getbegyx</STRONG>, and <STRONG>getmaxyx</STRONG> are undefined + (i.e., these should not be used as the right-hand side of assignment + statements). + + Functions with a "mv" prefix first perform a cursor movement using + <STRONG>wmove</STRONG>, and return an error if the position is outside the window, or if + the window pointer is null. Most "mv"-prefixed functions (except + variadic functions such as <STRONG>mvprintw</STRONG>) are provided both as macros and + functions. + + Routines that return pointers return <STRONG>NULL</STRONG> on error. + + +</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE> + The following environment symbols are useful for customizing the + runtime behavior of the <STRONG>ncurses</STRONG> library. The most important ones have + been already discussed in detail. + + +</PRE><H3><a name="h3-CC-command-character">CC command-character</a></H3><PRE> + When set, change occurrences of the command_character (i.e., the <STRONG>cmdch</STRONG> + capability) of the loaded terminfo entries to the value of this + variable. Very few terminfo entries provide this feature. + + Because this name is also used in development environments to represent + the C compiler's name, <STRONG>ncurses</STRONG> ignores it if it does not happen to be a + single character. + + +</PRE><H3><a name="h3-BAUDRATE">BAUDRATE</a></H3><PRE> + The debugging library checks this environment variable when the + application has redirected output to a file. The variable's numeric + value is used for the baudrate. If no value is found, <STRONG>ncurses</STRONG> uses + 9600. This allows testers to construct repeatable test-cases that take + into account costs that depend on baudrate. + + +</PRE><H3><a name="h3-COLUMNS">COLUMNS</a></H3><PRE> + Specify the width of the screen in characters. Applications running in + a windowing environment usually are able to obtain the width of the + window in which they are executing. If neither the <STRONG>COLUMNS</STRONG> value nor + the terminal's screen size is available, <STRONG>ncurses</STRONG> uses the size which + may be specified in the terminfo database (i.e., the <STRONG>cols</STRONG> capability). + + It is important that your application use a correct size for the + screen. This is not always possible because your application may be + running on a host which does not honor NAWS (Negotiations About Window + Size), or because you are temporarily running as another user. + However, setting <STRONG>COLUMNS</STRONG> and/or <STRONG>LINES</STRONG> overrides the library's use of + the screen size obtained from the operating system. + + Either <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> symbols may be specified independently. This + is mainly useful to circumvent legacy misfeatures of terminal + descriptions, e.g., xterm which commonly specifies a 65 line screen. + For best results, <STRONG>lines</STRONG> and <STRONG>cols</STRONG> should not be specified in a terminal + description for terminals which are run as emulations. + + Use the <STRONG>use_env</STRONG> function to disable all use of external environment + (but not including system calls) to determine the screen size. Use the + <STRONG>use_tioctl</STRONG> function to update <STRONG>COLUMNS</STRONG> or <STRONG>LINES</STRONG> to match the screen size + obtained from system calls or the terminal database. + + +</PRE><H3><a name="h3-ESCDELAY">ESCDELAY</a></H3><PRE> + Specifies the total time, in milliseconds, for which ncurses will await + a character sequence, e.g., a function key. The default value, 1000 + milliseconds, is enough for most uses. However, it is made a variable + to accommodate unusual applications. + + The most common instance where you may wish to change this value is to + work with slow hosts, e.g., running on a network. If the host cannot + read characters rapidly enough, it will have the same effect as if the + terminal did not send characters rapidly enough. The library will + still see a timeout. + + Note that xterm mouse events are built up from character sequences + received from the xterm. If your application makes heavy use of + multiple-clicking, you may wish to lengthen this default value because + the timeout applies to the composed multi-click event as well as the + individual clicks. + + In addition to the environment variable, this implementation provides a + global variable with the same name. Portable applications should not + rely upon the presence of ESCDELAY in either form, but setting the + environment variable rather than the global variable does not create + problems when compiling an application. + + +</PRE><H3><a name="h3-HOME">HOME</a></H3><PRE> + Tells <STRONG>ncurses</STRONG> where your home directory is. That is where it may read + and write auxiliary terminal descriptions: + + $HOME/.termcap + $HOME/.terminfo + + +</PRE><H3><a name="h3-LINES">LINES</a></H3><PRE> + Like COLUMNS, specify the height of the screen in characters. See + COLUMNS for a detailed description. + + +</PRE><H3><a name="h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></H3><PRE> + This applies only to the OS/2 EMX port. It specifies the order of + buttons on the mouse. OS/2 numbers a 3-button mouse inconsistently + from other platforms: + + 1 = left + 2 = right + 3 = middle. + + This variable lets you customize the mouse. The variable must be three + numeric digits 1-3 in any order, e.g., 123 or 321. If it is not + specified, <STRONG>ncurses</STRONG> uses 132. + + +</PRE><H3><a name="h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></H3><PRE> + Override the compiled-in assumption that the terminal's default colors + are white-on-black (see <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG>). You may set the + foreground and background color values with this environment variable + by proving a 2-element list: foreground,background. For example, to + tell ncurses to not assume anything about the colors, set this to + "-1,-1". To make it green-on-black, set it to "2,0". Any positive + value from zero to the terminfo <STRONG>max_colors</STRONG> value is allowed. + + +</PRE><H3><a name="h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></H3><PRE> + This applies only to the MinGW port of ncurses. + + The <STRONG>Console2</STRONG> program's handling of the Microsoft Console API call + <STRONG>CreateConsoleScreenBuffer</STRONG> is defective. Applications which use this + will hang. However, it is possible to simulate the action of this call + by mapping coordinates, explicitly saving and restoring the original + screen contents. Setting the environment variable <STRONG>NCGDB</STRONG> has the same + effect. + + +</PRE><H3><a name="h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></H3><PRE> + This applies only to ncurses configured to use the GPM interface. + + If present, the environment variable is a list of one or more terminal + names against which the <STRONG>TERM</STRONG> environment variable is matched. Setting + it to an empty value disables the GPM interface; using the built-in + support for xterm, etc. + + If the environment variable is absent, ncurses will attempt to open GPM + if <STRONG>TERM</STRONG> contains "linux". + + +</PRE><H3><a name="h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></H3><PRE> + <STRONG>Ncurses</STRONG> may use tabs as part of the cursor movement optimization. In + some cases, your terminal driver may not handle these properly. Set + this environment variable to disable the feature. You can also adjust + your <STRONG>stty</STRONG> settings to avoid the problem. + + +</PRE><H3><a name="h3-NCURSES_NO_MAGIC_COOKIE">NCURSES_NO_MAGIC_COOKIE</a></H3><PRE> + Some terminals use a magic-cookie feature which requires special + handling to make highlighting and other video attributes display + properly. You can suppress the highlighting entirely for these + terminals by setting this environment variable. + + +</PRE><H3><a name="h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></H3><PRE> + Most of the terminal descriptions in the terminfo database are written + for real "hardware" terminals. Many people use terminal emulators + which run in a windowing environment and use curses-based applications. + Terminal emulators can duplicate all of the important aspects of a + hardware terminal, but they do not have the same limitations. The + chief limitation of a hardware terminal from the standpoint of your + application is the management of dataflow, i.e., timing. Unless a + hardware terminal is interfaced into a terminal concentrator (which + does flow control), it (or your application) must manage dataflow, + preventing overruns. The cheapest solution (no hardware cost) is for + your program to do this by pausing after operations that the terminal + does slowly, such as clearing the display. + + As a result, many terminal descriptions (including the vt100) have + delay times embedded. You may wish to use these descriptions, but not + want to pay the performance penalty. + + Set the NCURSES_NO_PADDING environment variable to disable all but + mandatory padding. Mandatory padding is used as a part of special + control sequences such as <EM>flash</EM>. + + +</PRE><H3><a name="h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></H3><PRE> + This setting is obsolete. Before changes + + <STRONG>o</STRONG> started with 5.9 patch 20120825 and + + <STRONG>o</STRONG> continued though 5.9 patch 20130126 + + <STRONG>ncurses</STRONG> enabled buffered output during terminal initialization. This + was done (as in SVr4 curses) for performance reasons. For testing + purposes, both of <STRONG>ncurses</STRONG> and certain applications, this feature was + made optional. Setting the NCURSES_NO_SETBUF variable disabled output + buffering, leaving the output in the original (usually line buffered) + mode. + + In the current implementation, ncurses performs its own buffering and + does not require this workaround. It does not modify the buffering of + the standard output. + + The reason for the change was to make the behavior for interrupts and + other signals more robust. One drawback is that certain + nonconventional programs would mix ordinary stdio calls with ncurses + calls and (usually) work. This is no longer possible since ncurses is + not using the buffered standard output but its own output (to the same + file descriptor). As a special case, the low-level calls such as <STRONG>putp</STRONG> + still use the standard output. But high-level curses calls do not. + + +</PRE><H3><a name="h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></H3><PRE> + During initialization, the <STRONG>ncurses</STRONG> library checks for special cases + where VT100 line-drawing (and the corresponding alternate character set + capabilities) described in the terminfo are known to be missing. + Specifically, when running in a UTF-8 locale, the Linux console + emulator and the GNU screen program ignore these. Ncurses checks the + <STRONG>TERM</STRONG> environment variable for these. For other special cases, you + should set this environment variable. Doing this tells ncurses to use + Unicode values which correspond to the VT100 line-drawing glyphs. That + works for the special cases cited, and is likely to work for terminal + emulators. + + When setting this variable, you should set it to a nonzero value. + Setting it to zero (or to a nonnumber) disables the special check for + "linux" and "screen". + + As an alternative to the environment variable, ncurses checks for an + extended terminfo capability <STRONG>U8</STRONG>. This is a numeric capability which + can be compiled using <STRONG>tic</STRONG> <STRONG>-x</STRONG>. For example + + # linux console, if patched to provide working + # VT100 shift-in/shift-out, with corresponding font. + linux-vt100|linux console with VT100 line-graphics, + U8#0, use=linux, + + # uxterm with vt100Graphics resource set to false + xterm-utf8|xterm relying on UTF-8 line-graphics, + U8#1, use=xterm, + + The name "U8" is chosen to be two characters, to permit it to be used + by applications that use ncurses' termcap interface. + + +</PRE><H3><a name="h3-NCURSES_TRACE">NCURSES_TRACE</a></H3><PRE> + During initialization, the <STRONG>ncurses</STRONG> debugging library checks the + NCURSES_TRACE environment variable. If it is defined, to a numeric + value, <STRONG>ncurses</STRONG> calls the <STRONG>trace</STRONG> function, using that value as the + argument. + + The argument values, which are defined in <STRONG>curses.h</STRONG>, provide several + types of information. When running with traces enabled, your + application will write the file <STRONG>trace</STRONG> to the current directory. + + See <STRONG><A HREF="curs_trace.3x.html">curs_trace(3x)</A></STRONG> for more information. + + +</PRE><H3><a name="h3-TERM">TERM</a></H3><PRE> + Denotes your terminal type. Each terminal type is distinct, though + many are similar. + + <STRONG>TERM</STRONG> is commonly set by terminal emulators to help applications find a + workable terminal description. Some of those choose a popular + approximation, e.g., "ansi", "vt100", "xterm" rather than an exact fit. + Not infrequently, your application will have problems with that + approach, e.g., incorrect function-key definitions. + + If you set <STRONG>TERM</STRONG> in your environment, it has no effect on the operation + of the terminal emulator. It only affects the way applications work + within the terminal. Likewise, as a general rule (<STRONG>xterm</STRONG> being a rare + exception), terminal emulators which allow you to specify <STRONG>TERM</STRONG> as a + parameter or configuration value do not change their behavior to match + that setting. + + +</PRE><H3><a name="h3-TERMCAP">TERMCAP</a></H3><PRE> + If the <STRONG>ncurses</STRONG> library has been configured with <EM>termcap</EM> support, + <STRONG>ncurses</STRONG> will check for a terminal's description in termcap form if it + is not available in the terminfo database. + + The <STRONG>TERMCAP</STRONG> environment variable contains either a terminal description + (with newlines stripped out), or a file name telling where the + information denoted by the <STRONG>TERM</STRONG> environment variable exists. In either + case, setting it directs <STRONG>ncurses</STRONG> to ignore the usual place for this + information, e.g., /etc/termcap. + + +</PRE><H3><a name="h3-TERMINFO">TERMINFO</a></H3><PRE> + <STRONG>ncurses</STRONG> can be configured to read from multiple terminal databases. + The <STRONG>TERMINFO</STRONG> variable overrides the location for the default terminal + database. Terminal descriptions (in terminal format) are stored in + terminal databases: + + <STRONG>o</STRONG> Normally these are stored in a directory tree, using subdirectories + named by the first letter of the terminal names therein. + + This is the scheme used in System V, which legacy Unix systems use, + and the <STRONG>TERMINFO</STRONG> variable is used by <EM>curses</EM> applications on those + systems to override the default location of the terminal database. + + <STRONG>o</STRONG> If <STRONG>ncurses</STRONG> is built to use hashed databases, then each entry in + this list may be the path of a hashed database file, e.g., + + /usr/share/terminfo.db + + rather than + + /usr/share/terminfo/ + + 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, reading it directly rather than + using the terminfo library calls. + + <STRONG>o</STRONG> If <STRONG>ncurses</STRONG> is built with a support for reading termcap files + directly, then an entry in this list may be the path of a termcap + file. + + <STRONG>o</STRONG> If the <STRONG>TERMINFO</STRONG> variable begins with "hex:" or "b64:", <STRONG>ncurses</STRONG> uses + the remainder of that variable as a compiled terminal description. + You might produce the base64 format using <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>: + + TERMINFO="$(infocmp -0 -Q2 -q)" + export TERMINFO + + The compiled description is used if it corresponds to the terminal + identified by the <STRONG>TERM</STRONG> variable. + + Setting <STRONG>TERMINFO</STRONG> is the simplest, but not the only way to set location + of the default terminal database. The complete list of database + locations in order follows: + + <STRONG>o</STRONG> the last terminal database to which <STRONG>ncurses</STRONG> wrote, if any, is + searched first + + <STRONG>o</STRONG> the location specified by the TERMINFO environment variable + + <STRONG>o</STRONG> $HOME/.terminfo + + <STRONG>o</STRONG> locations listed in the TERMINFO_DIRS environment variable + + <STRONG>o</STRONG> one or more locations whose names are configured and compiled + into the ncurses library, i.e., + + <STRONG>o</STRONG> no default value (corresponding to the TERMINFO_DIRS + variable) + + <STRONG>o</STRONG> /usr/share/terminfo (corresponding to the TERMINFO variable) + + +</PRE><H3><a name="h3-TERMINFO_DIRS">TERMINFO_DIRS</a></H3><PRE> + Specifies a list of locations to search for terminal descriptions. + Each location in the list is a terminal database as described in the + section on the <STRONG>TERMINFO</STRONG> variable. The list is separated by colons + (i.e., ":") on Unix, semicolons on OS/2 EMX. + + There is no corresponding feature in System V terminfo; it is an + extension developed for <STRONG>ncurses</STRONG>. + + +</PRE><H3><a name="h3-TERMPATH">TERMPATH</a></H3><PRE> + If <STRONG>TERMCAP</STRONG> does not hold a file name then <STRONG>ncurses</STRONG> checks the <STRONG>TERMPATH</STRONG> + environment variable. This is a list of filenames separated by spaces + or colons (i.e., ":") on Unix, semicolons on OS/2 EMX. + + If the <STRONG>TERMPATH</STRONG> environment variable is not set, <STRONG>ncurses</STRONG> looks in the + files + + /etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, + + in that order. + + The library may be configured to disregard the following variables when + the current user is the superuser (root), or if the application uses + setuid or setgid permissions: + + $TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME. + + +</PRE><H2><a name="h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></H2><PRE> + Several different configurations are possible, depending on the + configure script options used when building <STRONG>ncurses</STRONG>. There are a few + main options whose effects are visible to the applications developer + using <STRONG>ncurses</STRONG>: + + --disable-overwrite + The standard include for <STRONG>ncurses</STRONG> is as noted in <STRONG>SYNOPSIS</STRONG>: + + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + This option is used to avoid filename conflicts when <STRONG>ncurses</STRONG> is + not the main implementation of curses of the computer. If <STRONG>ncurses</STRONG> + is installed disabling overwrite, it puts its headers in a + subdirectory, e.g., + + <STRONG>#include</STRONG> <STRONG>&lt;ncurses/curses.h&gt;</STRONG> + + It also omits a symbolic link which would allow you to use + <STRONG>-lcurses</STRONG> to build executables. + + --enable-widec + The configure script renames the library and (if the + <STRONG>--disable-overwrite</STRONG> 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 + + <STRONG>-lncurses</STRONG> + + you link with + + <STRONG>-lncursesw</STRONG> + + You must also enable the wide-character features in the header + file when compiling for the wide-character library to use the + extended (wide-character) functions. The symbol which enables + these features has changed since XSI Curses, Issue 4: + + <STRONG>o</STRONG> Originally, the wide-character feature required the symbol + <STRONG>_XOPEN_SOURCE_EXTENDED</STRONG> but that was only valid for XPG4 + (1996). + + <STRONG>o</STRONG> Later, that was deemed conflicting with <STRONG>_XOPEN_SOURCE</STRONG> defined + to 500. + + <STRONG>o</STRONG> As of mid-2018, none of the features in this implementation + require a <STRONG>_XOPEN_SOURCE</STRONG> feature greater than 600. However, + X/Open Curses, Issue 7 (2009) recommends defining it to 700. + + <STRONG>o</STRONG> Alternatively, you can enable the feature by defining + <STRONG>NCURSES_WIDECHAR</STRONG> with the caveat that some other header file + than <STRONG>curses.h</STRONG> may require a specific value for <STRONG>_XOPEN_SOURCE</STRONG> + (or a system-specific symbol). + + The <STRONG>curses.h</STRONG> file which is installed for the wide-character + library is designed to be compatible with the normal library's + header. Only the size of the <STRONG>WINDOW</STRONG> structure differs, and very + few applications require more than a pointer to <STRONG>WINDOW</STRONG>s. + + If the headers are installed allowing overwrite, the wide- + character library's headers should be installed last, to allow + applications to be built using either library from the same set of + headers. + + --with-pthread + The configure script renames the library. All of the library + names have a "t" appended to them (before any "w" added by + <STRONG>--enable-widec</STRONG>). + + The global variables such as <STRONG>LINES</STRONG> 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. + + --with-shared + + --with-normal + + --with-debug + + --with-profile + The shared and normal (static) library names differ by their + suffixes, e.g., <STRONG>libncurses.so</STRONG> and <STRONG>libncurses.a</STRONG>. The debug and + profiling libraries add a "_g" and a "_p" to the root names + respectively, e.g., <STRONG>libncurses_g.a</STRONG> and <STRONG>libncurses_p.a</STRONG>. + + --with-termlib + Low-level functions which do not depend upon whether the library + supports wide-characters, are provided in the tinfo library. + + 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. + + Those functions are described in these pages: + + <STRONG>o</STRONG> <STRONG><A HREF="curs_extend.3x.html">curs_extend(3x)</A></STRONG> - miscellaneous curses extensions + + <STRONG>o</STRONG> <STRONG><A HREF="curs_inopts.3x.html">curs_inopts(3x)</A></STRONG> - <STRONG>curses</STRONG> input options + + <STRONG>o</STRONG> <STRONG><A HREF="curs_kernel.3x.html">curs_kernel(3x)</A></STRONG> - low-level <STRONG>curses</STRONG> routines + + <STRONG>o</STRONG> <STRONG><A HREF="curs_termattrs.3x.html">curs_termattrs(3x)</A></STRONG> - <STRONG>curses</STRONG> environment query routines + + <STRONG>o</STRONG> <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG> - <STRONG>curses</STRONG> emulation of termcap + + <STRONG>o</STRONG> <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> - <STRONG>curses</STRONG> interfaces to terminfo database + + <STRONG>o</STRONG> <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG> - miscellaneous <STRONG>curses</STRONG> utility routines + + --with-trace + The <STRONG>trace</STRONG> 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. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /usr/share/tabset + directory containing initialization files for the terminal + capability database /usr/share/terminfo terminal capability + database + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> and related pages whose names begin "curs_" for detailed + routine descriptions. + <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG> + <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> for user-defined capabilities + + +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + The <STRONG>ncurses</STRONG> library can be compiled with an option (<STRONG>-DUSE_GETCAP</STRONG>) that + falls back to the old-style /etc/termcap file if the terminal setup + code cannot find a terminfo entry corresponding to <STRONG>TERM</STRONG>. Use of this + feature is not recommended, as it essentially includes an entire + termcap compiler in the <STRONG>ncurses</STRONG> startup code, at significant cost in + core and startup cycles. + + The <STRONG>ncurses</STRONG> library includes facilities for capturing mouse events on + certain terminals (including xterm). See the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual + page for details. + + The <STRONG>ncurses</STRONG> library includes facilities for responding to window + resizing events, e.g., when running in an xterm. See the + <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> and <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual pages for details. In addition, + the library may be configured with a <STRONG>SIGWINCH</STRONG> handler. + + The <STRONG>ncurses</STRONG> library extends the fixed set of function key capabilities + of terminals by allowing the application designer to define additional + key sequences at runtime. See the <STRONG><A HREF="define_key.3x.html">define_key(3x)</A></STRONG> <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG>, and + <STRONG><A HREF="keyok.3x.html">keyok(3x)</A></STRONG> manual pages for details. + + The <STRONG>ncurses</STRONG> library can exploit the capabilities of terminals which + implement the ISO-6429 SGR 39 and SGR 49 controls, which allow an + application to reset the terminal to its original foreground and + background colors. From the users' perspective, the application is + able to draw colored text on a background whose color is set + independently, providing better control over color contrasts. See the + <STRONG><A HREF="default_colors.3x.html">default_colors(3x)</A></STRONG> manual page for details. + + The <STRONG>ncurses</STRONG> library includes a function for directing application + output to a printer attached to the terminal device. See the + <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual page for details. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The <STRONG>ncurses</STRONG> library is intended to be BASE-level conformant with XSI + Curses. The EXTENDED XSI Curses functionality (including color + support) is supported. + + A small number of local differences (that is, individual differences + between the XSI Curses and <STRONG>ncurses</STRONG> calls) are described in <STRONG>PORTABILITY</STRONG> + sections of the library man pages. + + +</PRE><H3><a name="h3-Error-checking">Error checking</a></H3><PRE> + In many cases, X/Open Curses is vague about error conditions, omitting + some of the SVr4 documentation. + + Unlike other implementations, this one checks parameters such as + pointers to WINDOW structures to ensure they are not null. The main + reason for providing this behavior is 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 were detected. + Relying on this (or some other) extension will adversely affect the + portability of curses applications. + + +</PRE><H3><a name="h3-Extensions-versus-portability">Extensions versus portability</a></H3><PRE> + Most of the extensions provided by ncurses have not been standardized. + Some have been incorporated into other implementations, such as + PDCurses or NetBSD curses. Here are a few to consider: + + <STRONG>o</STRONG> The routine <STRONG>has_key</STRONG> is not part of XPG4, nor is it present in SVr4. + See the <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG> manual page for details. + + <STRONG>o</STRONG> The routine <STRONG>slk_attr</STRONG> is not part of XPG4, nor is it present in + SVr4. See the <STRONG><A HREF="curs_slk.3x.html">curs_slk(3x)</A></STRONG> manual page for details. + + <STRONG>o</STRONG> The routines <STRONG>getmouse</STRONG>, <STRONG>mousemask</STRONG>, <STRONG>ungetmouse</STRONG>, <STRONG>mouseinterval</STRONG>, and + <STRONG>wenclose</STRONG> relating to mouse interfacing are not part of XPG4, nor + are they present in SVr4. See the <STRONG><A HREF="curs_mouse.3x.html">curs_mouse(3x)</A></STRONG> manual page for + details. + + <STRONG>o</STRONG> The routine <STRONG>mcprint</STRONG> was not present in any previous curses + implementation. See the <STRONG><A HREF="curs_print.3x.html">curs_print(3x)</A></STRONG> manual page for details. + + <STRONG>o</STRONG> The routine <STRONG>wresize</STRONG> is not part of XPG4, nor is it present in SVr4. + See the <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> manual page for details. + + <STRONG>o</STRONG> The WINDOW structure's internal details can be hidden from + application programs. See <STRONG><A HREF="curs_opaque.3x.html">curs_opaque(3x)</A></STRONG> for the discussion of + <STRONG>is_scrollok</STRONG>, etc. + + <STRONG>o</STRONG> This implementation can be configured to provide rudimentary + support for multi-threaded applications. See <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG> for + details. + + <STRONG>o</STRONG> This implementation can also be configured to provide a set of + functions which improve the ability to manage multiple screens. + See <STRONG><A HREF="curs_sp_funcs.3x.html">curs_sp_funcs(3x)</A></STRONG> for details. + + +</PRE><H3><a name="h3-Padding-differences">Padding differences</a></H3><PRE> + In historic curses versions, delays embedded in the capabilities <STRONG>cr</STRONG>, + <STRONG>ind</STRONG>, <STRONG>cub1</STRONG>, <STRONG>ff</STRONG> and <STRONG>tab</STRONG> activated corresponding delay bits in the UNIX + tty driver. In this implementation, all padding is done by sending NUL + bytes. This method is slightly more expensive, but narrows the + interface to the UNIX kernel significantly and increases the package's + portability correspondingly. + + +</PRE><H3><a name="h3-Header-files">Header files</a></H3><PRE> + The header file <STRONG>&lt;curses.h&gt;</STRONG> automatically includes the header files + <STRONG>&lt;stdio.h&gt;</STRONG> and <STRONG>&lt;unctrl.h&gt;</STRONG>. + + X/Open Curses has more to say, but does not finish the story: + + The inclusion of &lt;curses.h&gt; may make visible all symbols from the + headers &lt;stdio.h&gt;, &lt;term.h&gt;, &lt;termios.h&gt;, and &lt;wchar.h&gt;. + + Here is a more complete story: + + <STRONG>o</STRONG> Starting with BSD curses, all implementations have included + &lt;stdio.h&gt;. + + BSD curses included &lt;curses.h&gt; and &lt;unctrl.h&gt; from an internal + header "curses.ext" ("ext" was a short name for <EM>externs</EM>). + + BSD curses used &lt;stdio.h&gt; internally (for <STRONG>printw</STRONG> and <STRONG>scanw</STRONG>), but + nothing in &lt;curses.h&gt; itself relied upon &lt;stdio.h&gt;. + + <STRONG>o</STRONG> SVr2 curses added <STRONG><A HREF="curs_initscr.3x.html">newterm(3x)</A></STRONG>, which relies upon &lt;stdio.h&gt;. That + is, the function prototype uses <STRONG>FILE</STRONG>. + + SVr4 curses added <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG>, which also use &lt;stdio.h&gt;. + + X/Open Curses documents all three of these functions. + + SVr4 curses and X/Open Curses do not require the developer to + include &lt;stdio.h&gt; before including &lt;curses.h&gt;. Both document + curses showing &lt;curses.h&gt; as the only required header. + + As a result, standard &lt;curses.h&gt; will always include &lt;stdio.h&gt;. + + <STRONG>o</STRONG> X/Open Curses is inconsistent with respect to SVr4 regarding + &lt;unctrl.h&gt;. + + As noted in <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>, ncurses includes &lt;unctrl.h&gt; from + &lt;curses.h&gt; (like SVr4). + + <STRONG>o</STRONG> X/Open's comments about &lt;term.h&gt; and &lt;termios.h&gt; may refer to HP-UX + and AIX: + + HP-UX curses includes &lt;term.h&gt; from &lt;curses.h&gt; to declare <STRONG>setupterm</STRONG> + in curses.h, but ncurses (and Solaris curses) do not. + + AIX curses includes &lt;term.h&gt; and &lt;termios.h&gt;. Again, ncurses (and + Solaris curses) do not. + + <STRONG>o</STRONG> X/Open says that &lt;curses.h&gt; <EM>may</EM> include &lt;term.h&gt;, but there is no + requirement that it do that. + + Some programs use functions declared in both &lt;curses.h&gt; and + &lt;term.h&gt;, and must include both headers in the same module. Very + old versions of AIX curses required including &lt;curses.h&gt; before + including &lt;term.h&gt;. + + Because ncurses header files include the headers needed to define + datatypes used in the headers, ncurses header files can be included + in any order. But for portability, you should include &lt;curses.h&gt; + before &lt;term.h&gt;. + + <STRONG>o</STRONG> X/Open Curses says <EM>"may</EM> <EM>make</EM> <EM>visible"</EM> because including a header + file does not necessarily make all symbols in it visible (there are + ifdef's to consider). + + For instance, in ncurses &lt;wchar.h&gt; <EM>may</EM> be included if the proper + symbol is defined, and if ncurses is configured for wide-character + support. If the header is included, its symbols may be made + visible. That depends on the value used for <STRONG>_XOPEN_SOURCE</STRONG> feature + test macro. + + <STRONG>o</STRONG> X/Open Curses documents one required header, in a special case: + &lt;stdarg.h&gt; before &lt;curses.h&gt; to prototype the <STRONG>vw_printw</STRONG> and + <STRONG>vw_scanw</STRONG> functions (as well as the obsolete the <STRONG>vwprintw</STRONG> and + <STRONG>vwscanw</STRONG> functions). Each of those uses a <STRONG>va_list</STRONG> parameter. + + The two obsolete functions were introduced in SVr3. The other + functions were introduced in X/Open Curses. In between, SVr4 + curses provided for the possibility that an application might + include either &lt;varargs.h&gt; or &lt;stdarg.h&gt;. Initially, that was done + by using <STRONG>void*</STRONG> for the <STRONG>va_list</STRONG> parameter. Later, a special type + (defined in &lt;stdio.h&gt;) was introduced, to allow for compiler type- + checking. That special type is always available, because &lt;stdio.h&gt; + is always included by &lt;curses.h&gt;. + + None of the X/Open Curses implementations require an application to + include &lt;stdarg.h&gt; before &lt;curses.h&gt; because they either have + allowed for a special type, or (like ncurses) include &lt;stdarg.h&gt; + directly to provide a portable interface. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + If standard output from a <STRONG>ncurses</STRONG> program is re-directed to something + which is not a tty, screen updates will be directed to standard error. + This was an undocumented feature of AT&amp;T System V Release 3 curses. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on pcurses + by Pavel Curtis. + + + + <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Initialization">Initialization</a></li> +<li><a href="#h3-Datatypes">Datatypes</a></li> +<li><a href="#h3-Environment-variables">Environment variables</a></li> +<li><a href="#h3-Routine-and-Argument-Names">Routine and Argument Names</a></li> +<li><a href="#h3-Routine-Name-Index">Routine Name Index</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a> +<ul> +<li><a href="#h3-CC-command-character">CC command-character</a></li> +<li><a href="#h3-BAUDRATE">BAUDRATE</a></li> +<li><a href="#h3-COLUMNS">COLUMNS</a></li> +<li><a href="#h3-ESCDELAY">ESCDELAY</a></li> +<li><a href="#h3-HOME">HOME</a></li> +<li><a href="#h3-LINES">LINES</a></li> +<li><a href="#h3-MOUSE_BUTTONS_123">MOUSE_BUTTONS_123</a></li> +<li><a href="#h3-NCURSES_ASSUMED_COLORS">NCURSES_ASSUMED_COLORS</a></li> +<li><a href="#h3-NCURSES_CONSOLE2">NCURSES_CONSOLE2</a></li> +<li><a href="#h3-NCURSES_GPM_TERMS">NCURSES_GPM_TERMS</a></li> +<li><a href="#h3-NCURSES_NO_HARD_TABS">NCURSES_NO_HARD_TABS</a></li> +<li><a href="#h3-NCURSES_NO_MAGIC_COOKIE">NCURSES_NO_MAGIC_COOKIE</a></li> +<li><a href="#h3-NCURSES_NO_PADDING">NCURSES_NO_PADDING</a></li> +<li><a href="#h3-NCURSES_NO_SETBUF">NCURSES_NO_SETBUF</a></li> +<li><a href="#h3-NCURSES_NO_UTF8_ACS">NCURSES_NO_UTF8_ACS</a></li> +<li><a href="#h3-NCURSES_TRACE">NCURSES_TRACE</a></li> +<li><a href="#h3-TERM">TERM</a></li> +<li><a href="#h3-TERMCAP">TERMCAP</a></li> +<li><a href="#h3-TERMINFO">TERMINFO</a></li> +<li><a href="#h3-TERMINFO_DIRS">TERMINFO_DIRS</a></li> +<li><a href="#h3-TERMPATH">TERMPATH</a></li> +</ul> +</li> +<li><a href="#h2-ALTERNATE-CONFIGURATIONS">ALTERNATE CONFIGURATIONS</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-Error-checking">Error checking</a></li> +<li><a href="#h3-Extensions-versus-portability">Extensions versus portability</a></li> +<li><a href="#h3-Padding-differences">Padding differences</a></li> +<li><a href="#h3-Header-files">Header files</a></li> +</ul> +</li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/ncurses6-config.1.html b/deps/ncurses-6.3/doc/html/man/ncurses6-config.1.html new file mode 100644 index 0000000..9e62696 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/ncurses6-config.1.html @@ -0,0 +1,132 @@ +<!-- + **************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2010 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. * + **************************************************************************** + * @Id: MKncu_config.in,v 1.5 2021/06/17 21:20:30 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>ncurses6-config 1</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">ncurses6-config 1</H1> +<PRE> +<STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG> General Commands Manual <STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + ncurses6-config - helper script for ncurses libraries + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>ncurses6-config</STRONG> [<EM>options</EM>] + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is a shell script which simplifies configuring applications + against a particular set of ncurses libraries. + + +</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> + <STRONG>--prefix</STRONG> + echos the package-prefix of ncurses + + <STRONG>--exec-prefix</STRONG> + echos the executable-prefix of ncurses + + <STRONG>--cflags</STRONG> + echos the C compiler flags needed to compile with ncurses + + <STRONG>--libs</STRONG> echos the libraries needed to link with ncurses + + <STRONG>--version</STRONG> + echos the release+patchdate version of ncurses + + <STRONG>--abi-version</STRONG> + echos the ABI version of ncurses + + <STRONG>--mouse-version</STRONG> + echos the mouse-interface version of ncurses + + <STRONG>--bindir</STRONG> + echos the directory containing ncurses programs + + <STRONG>--datadir</STRONG> + echos the directory containing ncurses data + + <STRONG>--includedir</STRONG> + echos the directory containing ncurses header files + + <STRONG>--libdir</STRONG> + echos the directory containing ncurses libraries + + <STRONG>--mandir</STRONG> + echos the directory containing ncurses manpages + + <STRONG>--terminfo</STRONG> + echos the $TERMINFO terminfo database path, e.g., + /usr/share/terminfo + + <STRONG>--terminfo-dirs</STRONG> + echos the $TERMINFO_DIRS directory list, e.g., + /usr/share/terminfo + + <STRONG>--termpath</STRONG> + echos the $TERMPATH termcap list, if support for termcap is + configured. + + <STRONG>--help</STRONG> prints this message + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="ncurses6-config.1.html">ncurses6-config(1)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-OPTIONS">OPTIONS</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/new_pair.3x.html b/deps/ncurses-6.3/doc/html/man/new_pair.3x.html new file mode 100644 index 0000000..12214be --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/new_pair.3x.html @@ -0,0 +1,187 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 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: Thomas E. Dickey + * @Id: new_pair.3x,v 1.16 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>new_pair 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">new_pair 3x</H1> +<PRE> +<STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG> <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>alloc_pair</STRONG>, <STRONG>find_pair</STRONG>, <STRONG>free_pair</STRONG> - new curses color-pair functions + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>alloc_pair(int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>find_pair(int</STRONG> <EM>fg</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>bg</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>free_pair(int</STRONG> <EM>pair</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + These functions are an extension to the curses library. They permit an + application to dynamically allocate a color pair using the + foreground/background colors rather than assign a fixed color pair + number, and return an unused pair to the pool. + + The number of colors may be related to the number of possible color + pairs for a given terminal, or it may not: + + <STRONG>o</STRONG> While almost all terminals allow setting the color <EM>attributes</EM> + independently, it is unlikely that your terminal allows you to + modify the attributes of a given character cell without rewriting + it. That is, the foreground and background colors are applied as a + pair. + + <STRONG>o</STRONG> Color pairs are the curses library's way of managing a color + palette on a terminal. If the library does not keep track of the + <EM>combinations</EM> of colors which are displayed, it will be inefficient. + + <STRONG>o</STRONG> For simple terminal emulators with only a few dozen color + combinations, it is convenient to use the maximum number of + combinations as the limit on color pairs: + + <STRONG>COLORS</STRONG> <EM>*</EM> <STRONG>COLORS</STRONG> + + <STRONG>o</STRONG> Terminals which support <EM>default</EM> <EM>colors</EM> distinct from "ANSI colors" + add to the possible combinations, producing this total: + + <EM>(</EM> <STRONG>COLORS</STRONG> <EM>+</EM> <EM>1</EM> <EM>)</EM> <EM>*</EM> <EM>(</EM> <STRONG>COLORS</STRONG> <EM>+</EM> <EM>1</EM> <EM>)</EM> + + <STRONG>o</STRONG> An application might use up to a few dozen color pairs to implement + a predefined color scheme. + + Beyond that lies in the realm of programs using the foreground and + background colors for "ASCII art" (or some other non-textual + application). + + Also beyond those few dozen pairs, the required size for a table to + represent the combinations grows rapidly with an increasing number + of colors. + + These functions allow a developer to let the screen library manage + color pairs. + + +</PRE><H3><a name="h3-alloc_pair">alloc_pair</a></H3><PRE> + The <STRONG>alloc_pair</STRONG> function accepts parameters for foreground and + background color, and checks if that color combination is already + associated with a color pair. + + <STRONG>o</STRONG> If the combination already exists, <STRONG>alloc_pair</STRONG> returns the existing + pair. + + <STRONG>o</STRONG> If the combination does not exist, <STRONG>alloc_pair</STRONG> allocates a new color + pair and returns that. + + <STRONG>o</STRONG> If the table fills up, <STRONG>alloc_pair</STRONG> discards the least-recently + allocated entry using <STRONG>free_pair</STRONG> and allocates a new color pair. + + All of the color pairs are allocated from a table of possible color + pairs. The size of the table is determined by the terminfo <EM>pairs</EM> + capability. The table is shared with <STRONG>init_pair</STRONG>; in fact <STRONG>alloc_pair</STRONG> + calls <STRONG>init_pair</STRONG> after updating the ncurses library's fast index to the + colors versus color pairs. + + +</PRE><H3><a name="h3-find_pair">find_pair</a></H3><PRE> + The <STRONG>find_pair</STRONG> function accepts parameters for foreground and background + color, and checks if that color combination is already associated with + a color pair, returning the pair number if it has been allocated. + Otherwise it returns -1. + + +</PRE><H3><a name="h3-free_pair">free_pair</a></H3><PRE> + Marks the given color pair as unused, i.e., like color pair 0. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The <STRONG>alloc_pair</STRONG> function returns a color pair number in the range 1 + through <STRONG>COLOR_PAIRS</STRONG>-1, unless it encounters an error updating its fast + index to the color pair values, preventing it from allocating a color + pair. In that case, it returns -1. + + The <STRONG>find_pair</STRONG> function returns a color pair number if the given color + combination has been associated with a color pair, or -1 if not. + + Likewise, <STRONG>free_pair</STRONG> returns <STRONG>OK</STRONG> unless it encounters an error updating + the fast index or if no such color pair is in use. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + These routines are specific to ncurses. They were not supported on + Version 7, BSD or System V implementations. It is recommended that any + code depending on them be conditioned using NCURSES_VERSION. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey. + + + + <STRONG><A HREF="new_pair.3x.html">new_pair(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-alloc_pair">alloc_pair</a></li> +<li><a href="#h3-find_pair">find_pair</a></li> +<li><a href="#h3-free_pair">free_pair</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/panel.3x.html b/deps/ncurses-6.3/doc/html/man/panel.3x.html new file mode 100644 index 0000000..24d5087 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/panel.3x.html @@ -0,0 +1,336 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: panel.3x,v 1.39 2020/02/15 21:06:40 tom Exp @ + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- + * --------- +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>panel 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">panel 3x</H1> +<PRE> +<STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + panel - panel stack extension for curses + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;panel.h&gt;</STRONG> + + <STRONG>cc</STRONG> <STRONG>[flags]</STRONG> <STRONG>sourcefiles</STRONG> <STRONG>-lpanel</STRONG> <STRONG>-lncurses</STRONG> + + <STRONG>PANEL</STRONG> <STRONG>*new_panel(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>bottom_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>top_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>show_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + <STRONG>void</STRONG> <STRONG>update_panels(void);</STRONG> + <STRONG>int</STRONG> <STRONG>hide_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + + <STRONG>WINDOW</STRONG> <STRONG>*panel_window(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>replace_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>,</STRONG> <STRONG>WINDOW</STRONG> <STRONG>*</STRONG><EM>window</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>move_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>starty</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>startx</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>panel_hidden(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + + <STRONG>PANEL</STRONG> <STRONG>*panel_above(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + <STRONG>PANEL</STRONG> <STRONG>*panel_below(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>set_panel_userptr(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>,</STRONG> <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*</STRONG><EM>ptr</EM><STRONG>);</STRONG> + <STRONG>const</STRONG> <STRONG>void</STRONG> <STRONG>*panel_userptr(const</STRONG> <STRONG>PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + + <STRONG>int</STRONG> <STRONG>del_panel(PANEL</STRONG> <STRONG>*</STRONG><EM>pan</EM><STRONG>);</STRONG> + + /* ncurses-extensions */ + <STRONG>PANEL</STRONG> <STRONG>*ground_panel(SCREEN</STRONG> <STRONG>*</STRONG><EM>sp</EM><STRONG>);</STRONG> + <STRONG>PANEL</STRONG> <STRONG>*ceiling_panel(SCREEN</STRONG> <STRONG>*</STRONG><EM>sp</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + Panels are <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG> windows with the added feature of depth. Panel + functions allow the use of stacked windows and ensure the proper + portions of each window and the curses <STRONG>stdscr</STRONG> window are hidden or + displayed when panels are added, moved, modified or removed. The set + of currently visible panels is the stack of panels. The <STRONG>stdscr</STRONG> window + is beneath all panels, and is not considered part of the stack. + + A window is associated with every panel. The panel routines enable you + to create, move, hide, and show panels, as well as position a panel at + any desired location in the stack. + + Panel routines are a functional layer added to <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, make only + high-level curses calls, and work anywhere terminfo curses does. + + +</PRE><H2><a name="h2-FUNCTIONS">FUNCTIONS</a></H2><PRE> + +</PRE><H3><a name="h3-bottom_panel">bottom_panel</a></H3><PRE> + <STRONG>bottom_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG> puts panel <EM>pan</EM> at the bottom of all panels. + + +</PRE><H3><a name="h3-ceiling_panel">ceiling_panel</a></H3><PRE> + <STRONG>ceiling_panel(</STRONG><EM>sp</EM><STRONG>)</STRONG> acts like <STRONG>panel_below(NULL)</STRONG>, for the given <STRONG>SCREEN</STRONG> <EM>sp</EM>. + + +</PRE><H3><a name="h3-del_panel">del_panel</a></H3><PRE> + <STRONG>del_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG> removes the given panel <EM>pan</EM> from the stack and + deallocates the <STRONG>PANEL</STRONG> structure (but not its associated window). + + +</PRE><H3><a name="h3-ground_panel">ground_panel</a></H3><PRE> + <STRONG>ground_panel(</STRONG><EM>sp</EM><STRONG>)</STRONG> acts like <STRONG>panel_above(NULL)</STRONG>, for the given <STRONG>SCREEN</STRONG> <EM>sp</EM>. + + +</PRE><H3><a name="h3-hide_panel">hide_panel</a></H3><PRE> + <STRONG>hide_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG> removes the given panel <EM>pan</EM> from the panel stack and + thus hides it from view. The <STRONG>PANEL</STRONG> structure is not lost, merely + removed from the stack. + + +</PRE><H3><a name="h3-move_panel">move_panel</a></H3><PRE> + <STRONG>move_panel(</STRONG><EM>pan</EM><STRONG>,</STRONG><EM>starty</EM><STRONG>,</STRONG><EM>startx</EM><STRONG>)</STRONG> moves the given panel <EM>pan</EM>'s window so + that its upper-left corner is at <EM>starty</EM>, <EM>startx</EM>. It does not change + the position of the panel in the stack. Be sure to use this function, + not <STRONG><A HREF="curs_window.3x.html">mvwin(3x)</A></STRONG>, to move a panel window. + + +</PRE><H3><a name="h3-new_panel">new_panel</a></H3><PRE> + <STRONG>new_panel(</STRONG><EM>win</EM><STRONG>)</STRONG> allocates a <STRONG>PANEL</STRONG> structure, associates it with <EM>win</EM>, + places the panel on the top of the stack (causes it to be displayed + above any other panel) and returns a pointer to the new panel. + + +</PRE><H3><a name="h3-panel_above">panel_above</a></H3><PRE> + <STRONG>panel_above(</STRONG><EM>pan</EM><STRONG>)</STRONG> returns a pointer to the panel above <EM>pan</EM>. If the + panel argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a pointer to the bottom panel + in the stack. + + +</PRE><H3><a name="h3-panel_below">panel_below</a></H3><PRE> + <STRONG>panel_below(</STRONG><EM>pan</EM><STRONG>)</STRONG> returns a pointer to the panel just below <EM>pan</EM>. If the + panel argument is <STRONG>(PANEL</STRONG> <STRONG>*)0</STRONG>, it returns a pointer to the top panel in + the stack. + + +</PRE><H3><a name="h3-panel_hidden">panel_hidden</a></H3><PRE> + <STRONG>panel_hidden(</STRONG><EM>pan</EM><STRONG>)</STRONG> returns <STRONG>TRUE</STRONG> if the panel <EM>pan</EM> is in the panel stack, + <STRONG>FALSE</STRONG> if it is not. If the panel is a null pointer, return <STRONG>ERR</STRONG>. + + +</PRE><H3><a name="h3-panel_userptr">panel_userptr</a></H3><PRE> + <STRONG>panel_userptr(</STRONG><EM>pan</EM><STRONG>)</STRONG> returns the user pointer for a given panel <EM>pan</EM>. + + +</PRE><H3><a name="h3-panel_window">panel_window</a></H3><PRE> + <STRONG>panel_window(</STRONG><EM>pan</EM><STRONG>)</STRONG> returns a pointer to the window of the given panel + <EM>pan</EM>. + + +</PRE><H3><a name="h3-replace_panel">replace_panel</a></H3><PRE> + <STRONG>replace_panel(</STRONG><EM>pan</EM><STRONG>,</STRONG><EM>window</EM><STRONG>)</STRONG> replaces the current window of panel <EM>pan</EM> with + <EM>window</EM> This is useful, for example if you want to resize a panel. In + <STRONG>ncurses</STRONG>, you can call <STRONG>replace_panel</STRONG> to resize a panel using a window + resized with <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>. It does not change the position of the panel + in the stack. + + +</PRE><H3><a name="h3-set_panel_userptr">set_panel_userptr</a></H3><PRE> + <STRONG>set_panel_userptr(</STRONG><EM>pan</EM><STRONG>,</STRONG><EM>ptr</EM><STRONG>)</STRONG> sets the panel's user pointer. + + +</PRE><H3><a name="h3-show_panel">show_panel</a></H3><PRE> + <STRONG>show_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG> makes a hidden panel visible by placing it on top of + the panels in the panel stack. See <STRONG>COMPATIBILITY</STRONG> below. + + +</PRE><H3><a name="h3-top_panel">top_panel</a></H3><PRE> + <STRONG>top_panel(</STRONG><EM>pan</EM><STRONG>)</STRONG> puts the given visible panel <EM>pan</EM> on top of all panels in + the stack. See <STRONG>COMPATIBILITY</STRONG> below. + + +</PRE><H3><a name="h3-update_panels">update_panels</a></H3><PRE> + <STRONG>update_panels()</STRONG> refreshes the <EM>virtual</EM> <EM>screen</EM> to reflect the relations + between the panels in the stack, but does not call <STRONG><A HREF="curs_refresh.3x.html">doupdate(3x)</A></STRONG> to + refresh the <EM>physical</EM> <EM>screen</EM>. Use this function and not <STRONG><A HREF="curs_refresh.3x.html">wrefresh(3x)</A></STRONG> or + <STRONG><A HREF="curs_refresh.3x.html">wnoutrefresh(3x)</A></STRONG>. + + <STRONG>update_panels</STRONG> may be called more than once before a call to <STRONG>doupdate</STRONG>, + but <STRONG>doupdate</STRONG> is the function responsible for updating the <EM>physical</EM> + <EM>screen</EM>. + + +</PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE> + Each routine that returns a pointer returns <STRONG>NULL</STRONG> if an error occurs. + Each routine that returns an int value returns <STRONG>OK</STRONG> if it executes + successfully and <STRONG>ERR</STRONG> if not. + + Except as noted, the <EM>pan</EM> and <EM>window</EM> parameters must be non-null. If + those are null, an error is returned. + + The <STRONG>move_panel</STRONG> function uses <STRONG><A HREF="curs_window.3x.html">mvwin(3x)</A></STRONG>, and will return an error if + <STRONG>mvwin</STRONG> returns an error. + + +</PRE><H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE> + Reasonable care has been taken to ensure compatibility with the + native panel facility introduced in System V (inspection of the SVr4 + manual pages suggests the programming interface is unchanged). The + <STRONG>PANEL</STRONG> data structures are merely similar. The programmer is + cautioned not to directly use <STRONG>PANEL</STRONG> fields. + + The functions <STRONG>show_panel</STRONG> and <STRONG>top_panel</STRONG> are identical in this + implementation, and work equally well with displayed or hidden panels. + In the native System V implementation, <STRONG>show_panel</STRONG> is intended for + making a hidden panel visible (at the top of the stack) and <STRONG>top_panel</STRONG> + is intended for making an already-visible panel move to the top of the + stack. You are cautioned to use the correct function to ensure + compatibility with native panel libraries. + + +</PRE><H2><a name="h2-NOTE">NOTE</a></H2><PRE> + In your library list, libpanel.a should be before libncurses.a; that + is, you should say "-lpanel -lncurses", not the other way around (which + would give a link-error with static libraries). + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The panel facility was documented in SVr4.2 in <EM>Character</EM> <EM>User</EM> <EM>Interface</EM> + <EM>Programming</EM> <EM>(UNIX</EM> <EM>SVR4.2)</EM>. + + It is not part of X/Open Curses. + + A few implementations exist: + + <STRONG>o</STRONG> Systems based on SVr4 source code, e.g., Solaris, provide this + library. + + <STRONG>o</STRONG> <STRONG>ncurses</STRONG> (since version 0.6 in 1993) and <STRONG>PDCurses</STRONG> (since version 2.2 + in 1995) provide a panel library whose common ancestor was a public + domain implementation by Warren Tucker published in <EM>u386mon</EM> 2.20 + (1990). + + According to Tucker, the SystemV panel library was first released + in SVr3.2 (1988), and his implementation helped with a port to + SVr3.1 (1987). + + Several developers have improved each of these; they are no longer + the same as Tucker's implementation. + + <STRONG>o</STRONG> NetBSD 8 (2018) has a panel library begun by Valery Ushakov in + 2015. This is based on the AT&amp;T documentation. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + panel.h interface for the panels library + + libpanel.a the panels library itself + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Originally written by Warren Tucker &lt;wht@n4hgf.mt-park.ga.us&gt;, + primarily to assist in porting <EM>u386mon</EM> to systems without a native + panels library. + + Repackaged for ncurses by Zeyd ben-Halim. + + Juergen Pfeifer and Thomas E. Dickey revised/improved the library. + + + + <STRONG><A HREF="panel.3x.html">panel(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-FUNCTIONS">FUNCTIONS</a> +<ul> +<li><a href="#h3-bottom_panel">bottom_panel</a></li> +<li><a href="#h3-ceiling_panel">ceiling_panel</a></li> +<li><a href="#h3-del_panel">del_panel</a></li> +<li><a href="#h3-ground_panel">ground_panel</a></li> +<li><a href="#h3-hide_panel">hide_panel</a></li> +<li><a href="#h3-move_panel">move_panel</a></li> +<li><a href="#h3-new_panel">new_panel</a></li> +<li><a href="#h3-panel_above">panel_above</a></li> +<li><a href="#h3-panel_below">panel_below</a></li> +<li><a href="#h3-panel_hidden">panel_hidden</a></li> +<li><a href="#h3-panel_userptr">panel_userptr</a></li> +<li><a href="#h3-panel_window">panel_window</a></li> +<li><a href="#h3-replace_panel">replace_panel</a></li> +<li><a href="#h3-set_panel_userptr">set_panel_userptr</a></li> +<li><a href="#h3-show_panel">show_panel</a></li> +<li><a href="#h3-top_panel">top_panel</a></li> +<li><a href="#h3-update_panels">update_panels</a></li> +</ul> +</li> +<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li> +<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li> +<li><a href="#h2-NOTE">NOTE</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/resizeterm.3x.html b/deps/ncurses-6.3/doc/html/man/resizeterm.3x.html new file mode 100644 index 0000000..9a099ea --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/resizeterm.3x.html @@ -0,0 +1,184 @@ +<!-- + **************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2015,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: Thomas E. Dickey 1996-on + * @Id: resizeterm.3x,v 1.28 2020/10/17 23:55:41 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>resizeterm 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">resizeterm 3x</H1> +<PRE> +<STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>is_term_resized</STRONG>, <STRONG>resize_term</STRONG>, <STRONG>resizeterm</STRONG> - change the curses terminal + size + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>bool</STRONG> <STRONG>is_term_resized(int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>resize_term(int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG> + <STRONG>int</STRONG> <STRONG>resizeterm(int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is an extension to the curses library. It provides callers with a + hook into the <STRONG>ncurses</STRONG> data to resize windows, primarily for use by + programs running in an X Window terminal (e.g., xterm). + + +</PRE><H3><a name="h3-resizeterm">resizeterm</a></H3><PRE> + The function <STRONG>resizeterm</STRONG> resizes the standard and current windows to the + specified dimensions, and adjusts other bookkeeping data used by the + <STRONG>ncurses</STRONG> library that record the window dimensions such as the <STRONG>LINES</STRONG> and + <STRONG>COLS</STRONG> variables. + + +</PRE><H3><a name="h3-resize_term">resize_term</a></H3><PRE> + Most of the work is done by the inner function <STRONG>resize_term</STRONG>. The outer + function <STRONG>resizeterm</STRONG> adds bookkeeping for the <STRONG>SIGWINCH</STRONG> handler, as well + as repainting the soft-key area (see <STRONG><A HREF="curs_slk.3x.html">slk_touch(3x)</A></STRONG>). + + When resizing the windows, <STRONG>resize_term</STRONG> blank-fills the areas that are + extended. The calling application should fill in these areas with + appropriate data. + + The <STRONG>resize_term</STRONG> function attempts to resize all windows. However, due + to the calling convention of pads, it is not possible to resize these + without additional interaction with the application. + + When resizing windows, <STRONG>resize_term</STRONG> recursively adjusts subwindows, + keeping them within the updated parent window's limits. If a top-level + window happens to extend to the screen's limits, then on resizing the + window, <STRONG>resize_term</STRONG> will keep the window extending to the corresponding + limit, regardless of whether the screen has shrunk or grown. + + +</PRE><H3><a name="h3-is_term_resized">is_term_resized</a></H3><PRE> + A support function <STRONG>is_term_resized</STRONG> is provided so that applications can + check if the <STRONG>resize_term</STRONG> function would modify the window structures. + It returns <STRONG>TRUE</STRONG> if the windows would be modified, and <STRONG>FALSE</STRONG> otherwise. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + Except as noted, these functions return the integer <STRONG>ERR</STRONG> upon failure + and <STRONG>OK</STRONG> on success. 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. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + While these functions are intended to be used to support a signal + handler (i.e., for <STRONG>SIGWINCH</STRONG>), care should be taken to avoid invoking + them in a context where <STRONG>malloc</STRONG> or <STRONG>realloc</STRONG> may have been interrupted, + since it uses those functions. + + If ncurses is configured to supply its own <STRONG>SIGWINCH</STRONG> handler, + + <STRONG>o</STRONG> on receipt of a <STRONG>SIGWINCH</STRONG>, the handler sets a flag + + <STRONG>o</STRONG> which is tested in <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG> and <STRONG>doupdate</STRONG>, + + <STRONG>o</STRONG> in turn, calling the <STRONG>resizeterm</STRONG> function, + + <STRONG>o</STRONG> which <STRONG>ungetch</STRONG>'s a <STRONG>KEY_RESIZE</STRONG> which will be read on the next call to + <STRONG>wgetch</STRONG>. + + The <STRONG>KEY_RESIZE</STRONG> alerts an application that the screen size has + changed, and that it should repaint special features such as pads + that cannot be done automatically. + + Calling <STRONG>resizeterm</STRONG> or <STRONG>resize_term</STRONG> directly from a signal handler is + unsafe. This indirect method is used to provide a safe way to + resize the ncurses data structures. + + If the environment variables <STRONG>LINES</STRONG> or <STRONG>COLUMNS</STRONG> are set, this overrides + the library's use of the window size obtained from the operating + system. Thus, even if a <STRONG>SIGWINCH</STRONG> is received, no screen size change + may be recorded. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + It is possible to resize the screen with SVr4 curses, by + + <STRONG>o</STRONG> exiting curses with <STRONG><A HREF="curs_initscr.3x.html">endwin(3x)</A></STRONG> and + + <STRONG>o</STRONG> resuming using <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG>. + + Doing that clears the screen and is visually distracting. + + This extension of ncurses was introduced in mid-1995. It was adopted + in NetBSD curses (2001) and PDCurses (2003). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="curs_getch.3x.html">curs_getch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey (from an equivalent function written in 1988 for BSD + curses). + + + + <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-resizeterm">resizeterm</a></li> +<li><a href="#h3-resize_term">resize_term</a></li> +<li><a href="#h3-is_term_resized">is_term_resized</a></li> +</ul> +</li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/scr_dump.5.html b/deps/ncurses-6.3/doc/html/man/scr_dump.5.html new file mode 100644 index 0000000..e01ea35 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/scr_dump.5.html @@ -0,0 +1,437 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 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. * + **************************************************************************** + * @Id: scr_dump.5,v 1.17 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>scr_dump 5</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">scr_dump 5</H1> +<PRE> +<STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG> File Formats Manual <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + scr_dump - format of curses screen-dumps. + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>scr_dump</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The curses library provides applications with the ability to write the + contents of a window to an external file using <STRONG>scr_dump</STRONG> or <STRONG>putwin</STRONG>, and + read it back using <STRONG>scr_restore</STRONG> or <STRONG>getwin</STRONG>. + + The <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG> functions do the work; while <STRONG>scr_dump</STRONG> and + <STRONG>scr_restore</STRONG> conveniently save and restore the whole screen, i.e., + <STRONG>stdscr</STRONG>. + + +</PRE><H3><a name="h3-ncurses6">ncurses6</a></H3><PRE> + A longstanding implementation of screen-dump was revised with ncurses6 + to remedy problems with the earlier approach: + + <STRONG>o</STRONG> A "magic number" is written to the beginning of the dump file, + allowing applications (such as <STRONG>file(1)</STRONG>) to recognize curses dump + files. + + Because ncurses6 uses a new format, that requires a new magic + number was unused by other applications. This 16-bit number was + unused: + + 0x8888 (octal "\210\210") + + but to be more certain, this 32-bit number was chosen: + + 0x88888888 (octal "\210\210\210\210") + + This is the pattern submitted to the maintainers of the <STRONG>file</STRONG> + program: + + # + # ncurses5 (and before) did not use a magic number, + # making screen dumps "data". + # + # ncurses6 (2015) uses this format, ignoring byte-order + 0 string \210\210\210\210ncurses ncurses6 screen image + # + + <STRONG>o</STRONG> The screen dumps are written in textual form, so that internal data + sizes are not directly related to the dump-format, and enabling the + library to read dumps from either narrow- or wide-character- + configurations. + + The <EM>narrow</EM> library configuration holds characters and video + attributes in a 32-bit <STRONG>chtype</STRONG>, while the <EM>wide-character</EM> library + stores this information in the <STRONG>cchar_t</STRONG> structure, which is much + larger than 32-bits. + + <STRONG>o</STRONG> It is possible to read a screen dump into a terminal with a + different screen-size, because the library truncates or fills the + screen as necessary. + + <STRONG>o</STRONG> The ncurses6 <STRONG>getwin</STRONG> reads the legacy screen dumps from ncurses5. + + +</PRE><H3><a name="h3-ncurses5-_legacy_">ncurses5 (legacy)</a></H3><PRE> + The screen-dump feature was added to ncurses in June 1995. While there + were fixes and improvements in succeeding years, the basic scheme was + unchanged: + + <STRONG>o</STRONG> The <STRONG>WINDOW</STRONG> structure was written in binary form. + + <STRONG>o</STRONG> The <STRONG>WINDOW</STRONG> structure refers to lines of data, which were written as + an array of binary data following the <STRONG>WINDOW</STRONG>. + + <STRONG>o</STRONG> When <STRONG>getwin</STRONG> restored the window, it would keep track of offsets + into the array of line-data and adjust the <STRONG>WINDOW</STRONG> structure which + was read back into memory. + + This is similar to Unix SystemV, but does not write a "magic number" to + identify the file format. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + There is no standard format for <STRONG>putwin</STRONG>. This section gives a brief + description of the existing formats. + + +</PRE><H3><a name="h3-X_Open-Curses">X/Open Curses</a></H3><PRE> + Refer to <EM>X/Open</EM> <EM>Curses,</EM> <EM>Issue</EM> <EM>7</EM> (2009). + + X/Open's documentation for <EM>enhanced</EM> <EM>curses</EM> says only: + + The <EM>getwin(</EM> <EM>)</EM> function reads window-related data stored in the file + by <EM>putwin(</EM> <EM>)</EM>. The function then creates and initializes a new + window using that data. + + The <EM>putwin(</EM> <EM>)</EM> function writes all data associated with <EM>win</EM> into the + <EM>stdio</EM> stream to which <EM>filep</EM> points, using an <STRONG>unspecified</STRONG> <STRONG>format</STRONG>. + This information can be retrieved later using <EM>getwin(</EM> <EM>)</EM>. + + In the mid-1990s when the X/Open Curses document was written, there + were still systems using older, less capable curses libraries (aside + from the BSD curses library which was not relevant to X/Open because it + did not meet the criteria for <EM>base</EM> <EM>curses</EM>). The document explained the + term "enhanced" as follows: + + <STRONG>o</STRONG> Shading is used to identify <EM>X/Open</EM> <EM>Enhanced</EM> <EM>Curses</EM> material, + relating to interfaces included to provide enhanced capabilities + for applications originally written to be compiled on systems + based on the UNIX operating system. Therefore, the features + described may not be present on systems that conform to <STRONG>XPG4</STRONG> <STRONG>or</STRONG> + <STRONG>to</STRONG> <STRONG>earlier</STRONG> <STRONG>XPG</STRONG> <STRONG>releases</STRONG>. The relevant reference pages may + provide additional or more specific portability warnings about + use of the material. + + In the foregoing, emphasis was added to <STRONG>unspecified</STRONG> <STRONG>format</STRONG> and to <STRONG>XPG4</STRONG> + <STRONG>or</STRONG> <STRONG>to</STRONG> <STRONG>earlier</STRONG> <STRONG>XPG</STRONG> <STRONG>releases</STRONG>, for clarity. + + +</PRE><H3><a name="h3-Unix-SystemV">Unix SystemV</a></H3><PRE> + Unix SystemV curses identified the file format by writing a "magic + number" at the beginning of the dump. The <STRONG>WINDOW</STRONG> data and the lines of + text follow, all in binary form. + + The Solaris curses source has these definitions: + + /* terminfo magic number */ + #define MAGNUM 0432 + + /* curses screen dump magic number */ + #define SVR2_DUMP_MAGIC_NUMBER 0433 + #define SVR3_DUMP_MAGIC_NUMBER 0434 + + That is, the feature was likely introduced in SVr2 (1984), and improved + in SVr3 (1987). The Solaris curses source has no magic number for SVr4 + (1989). Other operating systems (AIX and HPUX) use a magic number + which would correspond to this definition: + + /* curses screen dump magic number */ + #define SVR4_DUMP_MAGIC_NUMBER 0435 + + That octal number in bytes is 001, 035. Because most Unix vendors use + big-endian hardware, the magic number is written with the high-order + byte first, e.g., + + 01 35 + + After the magic number, the <STRONG>WINDOW</STRONG> structure and line-data are written + in binary format. While the magic number used by the Unix systems can + be seen using <STRONG>od(1)</STRONG>, none of the Unix systems documents the format used + for screen-dumps. + + The Unix systems do not use identical formats. While collecting + information for for this manual page, the <EM>savescreen</EM> test-program + produced dumps of different size (all on 64-bit hardware, on 40x80 + screens): + + <STRONG>o</STRONG> AIX (51817 bytes) + + <STRONG>o</STRONG> HPUX (90093 bytes) + + <STRONG>o</STRONG> Solaris 10 (13273 bytes) + + <STRONG>o</STRONG> ncurses5 (12888 bytes) + + +</PRE><H3><a name="h3-Solaris">Solaris</a></H3><PRE> + As noted above, Solaris curses has no magic number corresponding to + SVr4 curses. This is odd since Solaris was the first operating system + to pass the SVr4 guidelines. Solaris has two versions of curses: + + <STRONG>o</STRONG> The default curses library uses the SVr3 magic number. + + <STRONG>o</STRONG> There is an alternate curses library in <STRONG>/usr/xpg4</STRONG>. This uses a + textual format with no magic number. + + According to the copyright notice, the <EM>xpg4</EM> Solaris curses library + was developed by MKS (Mortice Kern Systems) from 1990 to 1995. + + Like ncurses6, there is a file-header with parameters. Unlike + ncurses6, the contents of the window are written piecemeal, with + coordinates and attributes for each chunk of text rather than + writing the whole window from top to bottom. + + +</PRE><H3><a name="h3-PDCurses">PDCurses</a></H3><PRE> + PDCurses added support for screen dumps in version 2.7 (2005). Like + Unix SystemV and ncurses5, it writes the <STRONG>WINDOW</STRONG> structure in binary, + but begins the file with its three-byte identifier "PDC", followed by a + one-byte version, e.g., + + "PDC\001" + + +</PRE><H3><a name="h3-NetBSD">NetBSD</a></H3><PRE> + As of April 2017, NetBSD curses does not support <STRONG>scr_dump</STRONG> and + <STRONG>scr_restore</STRONG> (or <STRONG>scr_init</STRONG>, <STRONG>scr_set</STRONG>), although it has <STRONG>putwin</STRONG> and <STRONG>getwin</STRONG>. + + Like ncurses5, NetBSD <STRONG>putwin</STRONG> does not identify its dumps with a useful + magic number. It writes + + <STRONG>o</STRONG> the curses shared library major and minor versions as the first two + bytes (e.g., 7 and 1), + + <STRONG>o</STRONG> followed by a binary dump of the <STRONG>WINDOW</STRONG>, + + <STRONG>o</STRONG> some data for wide-characters referenced by the <STRONG>WINDOW</STRONG> structure, + and + + <STRONG>o</STRONG> finally, lines as done by other implementations. + + +</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE> + Given a simple program which writes text to the screen (and for the + sake of example, limiting the screen-size to 10x20): + + #include &lt;curses.h&gt; + + int + main(void) + { + putenv("LINES=10"); + putenv("COLUMNS=20"); + initscr(); + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + init_pair(2, COLOR_RED, COLOR_BLACK); + bkgd(<STRONG>COLOR_PAIR(1)</STRONG>); + move(4, 5); + attron(A_BOLD); + addstr("Hello"); + move(5, 5); + attroff(A_BOLD); + attrset(A_REVERSE | <STRONG>COLOR_PAIR(2)</STRONG>); + addstr("World!"); + refresh(); + scr_dump("foo.out"); + endwin(); + return 0; + } + + When run using ncurses6, the output looks like this: + + \210\210\210\210ncurses 6.0.20170415 + _cury=5 + _curx=11 + _maxy=9 + _maxx=19 + _flags=14 + _attrs=\{REVERSE|C2} + flag=_idcok + _delay=-1 + _regbottom=9 + _bkgrnd=\{NORMAL|C1}\s + rows: + 1:\{NORMAL|C1}\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + 2:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + 3:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + 4:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + 5:\s\s\s\s\s\{BOLD}Hello\{NORMAL}\s\s\s\s\s\s\s\s\s\s + 6:\s\s\s\s\s\{REVERSE|C2}World!\{NORMAL|C1}\s\s\s\s\s\s\s\s\s + 7:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + 8:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + 9:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + 10:\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + + The first four octal escapes are actually nonprinting characters, while + the remainder of the file is printable text. You may notice: + + <STRONG>o</STRONG> The actual color pair values are not written to the file. + + <STRONG>o</STRONG> All characters are shown in printable form; spaces are "\s" to + ensure they are not overlooked. + + <STRONG>o</STRONG> Attributes are written in escaped curly braces, e.g., "\{BOLD}", + and may include a color-pair (C1 or C2 in this example). + + <STRONG>o</STRONG> The parameters in the header are written out only if they are + nonzero. When reading back, order does not matter. + + Running the same program with Solaris <EM>xpg4</EM> curses gives this dump: + + MAX=10,20 + BEG=0,0 + SCROLL=0,10 + VMIN=1 + VTIME=0 + FLAGS=0x1000 + FG=0,0 + BG=0,0, + 0,0,0,1, + 0,19,0,0, + 1,0,0,1, + 1,19,0,0, + 2,0,0,1, + 2,19,0,0, + 3,0,0,1, + 3,19,0,0, + 4,0,0,1, + 4,5,0x20,0,Hello + 4,10,0,1, + 4,19,0,0, + 5,0,0,1, + 5,5,0x4,2,World! + 5,11,0,1, + 5,19,0,0, + 6,0,0,1, + 6,19,0,0, + 7,0,0,1, + 7,19,0,0, + 8,0,0,1, + 8,19,0,0, + 9,0,0,1, + 9,19,0,0, + CUR=11,5 + + Solaris <STRONG>getwin</STRONG> requires that all parameters are present, and in the + same order. The <EM>xpg4</EM> curses library does not know about the <STRONG>bce</STRONG> (back + color erase) capability, and does not color the window background. + + On the other hand, the SVr4 curses library does know about the + background color. However, its screen dumps are in binary. Here is + the corresponding dump (using "od -t x1"): + + 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 + 0000060 00 00 00 80 00 00 20 00 00 00 ff ff ff ff 00 00 + 0000100 ff ff ff ff 00 00 00 00 20 80 00 00 20 80 00 00 + 0000120 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 + * + 0000620 20 80 00 00 20 80 00 00 20 80 00 00 48 80 00 04 + 0000640 65 80 00 04 6c 80 00 04 6c 80 00 04 6f 80 00 04 + 0000660 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 + * + 0000740 20 80 00 00 20 80 00 00 20 80 00 00 57 00 81 00 + 0000760 6f 00 81 00 72 00 81 00 6c 00 81 00 64 00 81 00 + 0001000 21 00 81 00 20 80 00 00 20 80 00 00 20 80 00 00 + 0001020 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 + * + 0001540 20 80 00 00 20 80 00 00 00 00 f6 d1 01 00 f6 d1 + 0001560 08 00 00 00 40 00 00 00 00 00 00 00 00 00 00 07 + 0001600 00 04 00 01 00 01 00 00 00 01 00 00 00 00 00 00 + 0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 + * + 0002371 + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="curs_scr_dump.3x.html">curs_scr_dump(3x)</A></STRONG>, <STRONG><A HREF="curs_util.3x.html">curs_util(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Thomas E. Dickey + extended screen-dump format for ncurses 6.0 (2015) + + Eric S. Raymond + screen dump feature in ncurses 1.9.2d (1995) + + + + <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-ncurses6">ncurses6</a></li> +<li><a href="#h3-ncurses5-_legacy_">ncurses5 (legacy)</a></li> +</ul> +</li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-X_Open-Curses">X/Open Curses</a></li> +<li><a href="#h3-Unix-SystemV">Unix SystemV</a></li> +<li><a href="#h3-Solaris">Solaris</a></li> +<li><a href="#h3-PDCurses">PDCurses</a></li> +<li><a href="#h3-NetBSD">NetBSD</a></li> +</ul> +</li> +<li><a href="#h2-EXAMPLE">EXAMPLE</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/tabs.1.html b/deps/ncurses-6.3/doc/html/man/tabs.1.html new file mode 100644 index 0000000..0833c81 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/tabs.1.html @@ -0,0 +1,280 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2008-2016,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. * + **************************************************************************** + * @Id: tabs.1,v 1.32 2021/10/16 13:37:43 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>tabs 1</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">tabs 1</H1> +<PRE> +<STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> General Commands Manual <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>tabs</STRONG> - set tabs on a terminal + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>tabs</STRONG> [<EM>options</EM>]] <EM>[tabstop-list]</EM> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>tabs</STRONG> program clears and sets tab-stops on the terminal. This uses + the terminfo <EM>clear</EM><STRONG>_</STRONG><EM>all</EM><STRONG>_</STRONG><EM>tabs</EM> and <EM>set</EM><STRONG>_</STRONG><EM>tab</EM> capabilities. If either is + absent, <STRONG>tabs</STRONG> is unable to clear/set tab-stops. The terminal should be + configured to use hard tabs, e.g., + + stty tab0 + + Like <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>tabs</STRONG> writes to the standard output. You can redirect + the standard output to a file (which prevents <STRONG>tabs</STRONG> from actually + changing the tabstops), and later <STRONG>cat</STRONG> the file to the screen, setting + tabstops at that point. + + These are hardware tabs, which cannot be queried rapidly by + applications running in the terminal, if at all. Curses and other + full-screen applications may use hardware tabs in optimizing their + output to the terminal. If the hardware tabstops differ from the + information in the terminal database, the result is unpredictable. + Before running curses programs, you should either reset tab-stops to + the standard interval + + tabs -8 + + or use the <STRONG>reset</STRONG> program, since the normal initialization sequences do + not ensure that tab-stops are reset. + + +</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> + +</PRE><H3><a name="h3-General-Options">General Options</a></H3><PRE> + <STRONG>-T</STRONG><EM>name</EM> + Tell <STRONG>tabs</STRONG> which terminal type to use. If this option is not + given, <STRONG>tabs</STRONG> will use the <STRONG>$TERM</STRONG> environment variable. If that is + not set, it will use the <EM>ansi+tabs</EM> entry. + + <STRONG>-d</STRONG> The debugging option shows a ruler line, followed by two data + lines. The first data line shows the expected tab-stops marked + with asterisks. The second data line shows the actual tab-stops, + marked with asterisks. + + <STRONG>-n</STRONG> This option tells <STRONG>tabs</STRONG> to check the options and run any debugging + option, but not to modify the terminal settings. + + <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and + exits. + + The <STRONG>tabs</STRONG> program processes a single list of tab stops. The last option + to be processed which defines a list is the one that determines the + list to be processed. + + +</PRE><H3><a name="h3-Implicit-Lists">Implicit Lists</a></H3><PRE> + Use a single number as an option, e.g., "<STRONG>-5</STRONG>" to set tabs at the given + interval (in this case 1, 6, 11, 16, 21, etc.). Tabs are repeated up + to the right margin of the screen. + + Use "<STRONG>-0</STRONG>" to clear all tabs. + + Use "<STRONG>-8</STRONG>" to set tabs to the standard interval. + + +</PRE><H3><a name="h3-Explicit-Lists">Explicit Lists</a></H3><PRE> + An explicit list can be defined after the options (this does not use a + "-"). The values in the list must be in increasing numeric order, and + greater than zero. They are separated by a comma or a blank, for + example, + + tabs 1,6,11,16,21 + tabs 1 6 11 16 21 + + Use a "+" to treat a number as an increment relative to the previous + value, e.g., + + tabs 1,+5,+5,+5,+5 + + which is equivalent to the 1,6,11,16,21 example. + + +</PRE><H3><a name="h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></H3><PRE> + POSIX defines several predefined lists of tab stops. + + <STRONG>-a</STRONG> Assembler, IBM S/370, first format + 1,10,16,36,72 + + <STRONG>-a2</STRONG> Assembler, IBM S/370, second format + 1,10,16,40,72 + + <STRONG>-c</STRONG> COBOL, normal format + 1,8,12,16,20,55 + + <STRONG>-c2</STRONG> COBOL compact format + 1,6,10,14,49 + + <STRONG>-c3</STRONG> COBOL compact format extended + 1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67 + + <STRONG>-f</STRONG> FORTRAN + 1,7,11,15,19,23 + + <STRONG>-p</STRONG> PL/I + 1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 + + <STRONG>-s</STRONG> SNOBOL + 1,10,55 + + <STRONG>-u</STRONG> UNIVAC 1100 Assembler + 1,12,20,44 + + +</PRE><H3><a name="h3-Margins">Margins</a></H3><PRE> + A few terminals provide the capability for changing their left/right + margins. The tabs program has an option to use this feature: + + <STRONG>+m</STRONG> <EM>margin</EM> + The effect depends on whether the terminal has the margin + capabilities: + + <STRONG>o</STRONG> If the terminal provides the capability for setting the left + margin, tabs uses this, and adjusts the available width for + tab-stops. + + <STRONG>o</STRONG> If the terminal does not provide the margin capabilities, tabs + imitates the effect, putting the tab stops at the appropriate + place on each line. The terminal's left-margin is not + modified. + + If the <EM>margin</EM> parameter is omitted, the default is 10. Use <STRONG>+m0</STRONG> to + reset the left margin, i.e., to the left edge of the terminal's + display. Before setting a left-margin, tabs resets the margin to + reduce problems which might arise on moving the cursor before the + current left-margin. + + When setting or resetting the left-margin, tabs may reset the right- + margin. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + <EM>IEEE</EM> <EM>Std</EM> <EM>1003.1/The</EM> <EM>Open</EM> <EM>Group</EM> <EM>Base</EM> <EM>Specifications</EM> <EM>Issue</EM> <EM>7</EM> + (POSIX.1-2008) describes a <STRONG>tabs</STRONG> utility. However + + <STRONG>o</STRONG> This standard describes a <STRONG>+m</STRONG> option, to set a terminal's left- + margin. Very few of the entries in the terminal database provide + the <STRONG>smgl</STRONG> (<STRONG>set_left_margin</STRONG>) or <STRONG>smglp</STRONG> (<STRONG>set_left_margin_parm</STRONG>) + capability needed to support the feature. + + <STRONG>o</STRONG> There is no counterpart in X/Open Curses Issue 7 for this utility, + unlike <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG>. + + The <STRONG>-d</STRONG> (debug) and <STRONG>-n</STRONG> (no-op) options are extensions not provided by + other implementations. + + A <STRONG>tabs</STRONG> utility appeared in PWB/Unix 1.0 (1977). There was a reduced + version of the <STRONG>tabs</STRONG> utility in Unix 7th edition and in 3BSD (1979). + The latter supported a single "-n" option (to cause the first tab stop + to be set on the left margin). That option is not documented by POSIX. + + The PWB/Unix <STRONG>tabs</STRONG> utility, which was included in System III (1980), + used built-in tables rather than the terminal database, to support a + half-dozen hardcopy terminal (printer) types. It also had built-in + logic to support the left-margin, as well as a feature for copying the + tab settings from a file. + + Later versions of Unix, e.g., SVr4, added support for the terminal + database, but kept the tables to support the printers. In an earlier + development effort, the tab-stop initialization provided by <STRONG>tset</STRONG> (1982) + and incorporated into <STRONG>tput</STRONG> uses the terminal database, + + The <STRONG>+m</STRONG> option was documented in the Base Specifications Issue 5 + (Unix98, 1997), and omitted in Issue 6 (Unix03, 2004) without + documenting the rationale, though an introductory comment <EM>"and</EM> + <EM>optionally</EM> <EM>adjusts</EM> <EM>the</EM> <EM>margin"</EM> remains, overlooked in the removal. The + documented <STRONG>tabs</STRONG> utility in Issues 6 and later has no mechanism for + setting margins. The <STRONG>+m</STRONG> option in this implementation differs from the + feature in SVr4 by using terminal capabilities rather than built-in + tables. + + POSIX documents no limits on the number of tab stops. Documentation + for other implementations states that there is a limit on the number of + tab stops (e.g., 20 in PWB/Unix's <STRONG>tabs</STRONG> utility). While some terminals + may not accept an arbitrary number of tab stops, this implementation + will attempt to set tab stops up to the right margin of the screen, if + the given list happens to be that long. + + The <EM>Rationale</EM> section of the POSIX documentation goes into some detail + about the ways the committee considered redesigning the <STRONG>tabs</STRONG> and <STRONG>tput</STRONG> + utilities, without proposing an improved solution. It comments that + + no known historical version of tabs supports the capability of + setting arbitrary tab stops. + + However, the <EM>Explicit</EM> <EM>Lists</EM> described in this manual page were + implemented in PWB/Unix. Those provide the capability of setting + abitrary tab stops. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-OPTIONS">OPTIONS</a> +<ul> +<li><a href="#h3-General-Options">General Options</a></li> +<li><a href="#h3-Implicit-Lists">Implicit Lists</a></li> +<li><a href="#h3-Explicit-Lists">Explicit Lists</a></li> +<li><a href="#h3-Predefined-Tab-Stops">Predefined Tab-Stops</a></li> +<li><a href="#h3-Margins">Margins</a></li> +</ul> +</li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/term.5.html b/deps/ncurses-6.3/doc/html/man/term.5.html new file mode 100644 index 0000000..941c2d8 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/term.5.html @@ -0,0 +1,414 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: term.5,v 1.40 2021/08/15 19:38:47 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>term 5</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">term 5</H1> +<PRE> +<STRONG><A HREF="term.5.html">term(5)</A></STRONG> File Formats Manual <STRONG><A HREF="term.5.html">term(5)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + term - format of compiled term file. + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>term</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-STORAGE-LOCATION">STORAGE LOCATION</a></H3><PRE> + Compiled terminfo descriptions are placed under the directory + <STRONG>/usr/share/terminfo</STRONG>. Two configurations are supported (when building + the <STRONG>ncurses</STRONG> libraries): + + <STRONG>directory</STRONG> <STRONG>tree</STRONG> + A two-level scheme is used to avoid a linear search of a huge UNIX + system directory: <STRONG>/usr/share/terminfo/c/name</STRONG> where <EM>name</EM> is the + name of the terminal, and <EM>c</EM> is the first character of <EM>name</EM>. Thus, + <EM>act4</EM> can be found in the file <STRONG>/usr/share/terminfo/a/act4</STRONG>. + Synonyms for the same terminal are implemented by multiple links + to the same compiled file. + + <STRONG>hashed</STRONG> <STRONG>database</STRONG> + 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, and records containing + only aliases pointing to the primary name. + + If built to write hashed databases, <STRONG>ncurses</STRONG> can still read + terminfo databases organized as a directory tree, but cannot write + entries into the directory tree. It can write (or rewrite) + entries in the hashed database. + + <STRONG>ncurses</STRONG> distinguishes the two cases in the TERMINFO and + TERMINFO_DIRS environment variable by assuming a directory tree + for entries that correspond to an existing directory, and hashed + database otherwise. + + +</PRE><H3><a name="h3-LEGACY-STORAGE-FORMAT">LEGACY STORAGE FORMAT</a></H3><PRE> + 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 or sign extension are made. + + The compiled file is created with the <STRONG>tic</STRONG> program, and read by the + routine <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>. The file is divided into six parts: + + a) <EM>header</EM>, + + b) <EM>terminal</EM> <EM>names</EM>, + + c) <EM>boolean</EM> <EM>flags</EM>, + + d) <EM>numbers</EM>, + + e) <EM>strings</EM>, and + + f) <EM>string</EM> <EM>table</EM>. + + The <EM>header</EM> section begins the file. This section contains six short + integers in the format described below. These integers are + + (1) the <EM>magic</EM> <EM>number</EM> (octal 0432); + + (2) the size, in bytes, of the <EM>terminal</EM> <EM>names</EM> section; + + (3) the number of bytes in the <EM>boolean</EM> <EM>flags</EM> section; + + (4) the number of short integers in the <EM>numbers</EM> section; + + (5) the number of offsets (short integers) in the <EM>strings</EM> section; + + (6) the size, in bytes, of the <EM>string</EM> <EM>table</EM>. + + The capabilities in the <EM>boolean</EM> <EM>flags</EM>, <EM>numbers</EM>, and <EM>strings</EM> sections + are in the same order as the file &lt;term.h&gt;. + + 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 VAX and PDP-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. + + Numbers in a terminal description, whether they are entries in the + <EM>numbers</EM> or <EM>strings</EM> 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: + + <STRONG>o</STRONG> If a capability is absent from this terminal, tic stores a -1 in + the corresponding table. + + The integer value -1 is represented by two bytes 0377, 0377. + Absent boolean values are represented by the byte 0 (false). + + <STRONG>o</STRONG> If a capability has been canceled from this terminal, tic stores a + -2 in the corresponding table. + + The integer value -2 is represented by two bytes 0377, 0376. + The boolean value -2 is represented by the byte 0376. + + <STRONG>o</STRONG> Other negative values are illegal. + + The <EM>terminal</EM> <EM>names</EM> section comes after the <EM>header</EM>. It contains the + first line of the terminfo description, listing the various names for + the terminal, separated by the "|" character. The <EM>terminal</EM> <EM>names</EM> + section is terminated with an ASCII NUL character. + + The <EM>boolean</EM> <EM>flags</EM> section has one byte for each flag. Boolean + capabilities are either 1 or 0 (true or false) according to whether the + terminal supports the given capability or not. + + Between the <EM>boolean</EM> <EM>flags</EM> section and the <EM>number</EM> section, a null byte + will be inserted, if necessary, to ensure that the <EM>number</EM> section + begins on an even byte This is a relic of the PDP-11's word-addressed + architecture, originally designed to avoid traps induced by addressing + a word on an odd byte boundary. All short integers are aligned on a + short word boundary. + + The <EM>numbers</EM> section is similar to the <EM>boolean</EM> <EM>flags</EM> section. Each + capability takes up two bytes, and is stored as a little-endian short + integer. + + The <EM>strings</EM> section is also similar. Each capability is stored as a + short integer. The capability value is an index into the <EM>string</EM> <EM>table</EM>. + + The <EM>string</EM> <EM>table</EM> is the last section. It contains all of the values of + string capabilities referenced in the <EM>strings</EM> section. Each string is + null-terminated. Special characters in ^X or \c notation are stored in + their interpreted form, not the printing representation. Padding + information $&lt;nn&gt; and parameter information %x are stored intact in + uninterpreted form. + + +</PRE><H3><a name="h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></H3><PRE> + The previous section describes the conventional terminfo 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. + + The <STRONG>ncurses</STRONG> 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. <STRONG>ncurses</STRONG> checks the + size, and if it exceeds that due to the predefined data, continues to + parse according to its own scheme. + + First, it reads the extended header (5 short integers): + + (1) count of extended boolean capabilities + + (2) count of extended numeric capabilities + + (3) count of extended string capabilities + + (4) count of the items in extended string table + + (5) size of the extended string table in bytes + + The count- and size-values for the extended string table include the + extended capability <EM>names</EM> as well as extended capability <EM>values</EM>. + + Using the counts and sizes, <STRONG>ncurses</STRONG> allocates arrays and reads data for + the extended capabilities in the same order as the header information. + + 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. + + Applications which manipulate terminal data can use the definitions + described in <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG> which associate the long capability + names with members of a <STRONG>TERMTYPE</STRONG> structure. + + +</PRE><H3><a name="h3-EXTENDED-NUMBER-FORMAT">EXTENDED NUMBER FORMAT</a></H3><PRE> + On occasion, 16-bit signed integers are not large enough. With <STRONG>ncurses</STRONG> + 6.1, a new format was introduced by making a few changes to the legacy + format: + + <STRONG>o</STRONG> a different magic number (octal 01036) + + <STRONG>o</STRONG> changing the type for the <EM>number</EM> array from signed 16-bit integers + to signed 32-bit integers. + + To maintain compatibility, the library presents the same data + structures to direct users of the <STRONG>TERMTYPE</STRONG> structure as in previous + formats. However, that cannot provide callers with the extended + numbers. The library uses a similar but hidden data structure + <STRONG>TERMTYPE2</STRONG> to provide data for the terminfo functions. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + +</PRE><H3><a name="h3-setupterm">setupterm</a></H3><PRE> + Note that it is possible for <STRONG>setupterm</STRONG> to expect a different set of + capabilities than are actually present in the file. Either the + database may have been updated since <STRONG>setupterm</STRONG> was recompiled + (resulting in extra unrecognized entries in the file) or the program + may have been recompiled more recently than the database was updated + (resulting in missing entries). The routine <STRONG>setupterm</STRONG> 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. + + +</PRE><H3><a name="h3-Binary-format">Binary format</a></H3><PRE> + X/Open Curses does not specify a format for the terminfo database. + UNIX System V curses used a directory-tree of binary files, one per + terminal description. + + 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 XSI + Curses extensions. See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for detailed discussion of terminfo + source compatibility issues. + + This implementation is by default compatible with the binary terminfo + format used by Solaris 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 ncurses with + different configuration options. + + +</PRE><H3><a name="h3-Magic-codes">Magic codes</a></H3><PRE> + 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 <STRONG>file</STRONG> 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 <STRONG><A HREF="scr_dump.5.html">scr_dump(5)</A></STRONG>). This implementation uses + 01036 as a continuation of that sequence, but with a different high- + order byte to avoid confusion. + + +</PRE><H3><a name="h3-The-TERMTYPE-structure">The TERMTYPE structure</a></H3><PRE> + Direct access to the <STRONG>TERMTYPE</STRONG> structure is provided for legacy + applications. Portable applications should use the <STRONG>tigetflag</STRONG> and + related functions described in <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> for reading terminal + capabilities. + + +</PRE><H3><a name="h3-Mixed-case-terminal-names">Mixed-case terminal names</a></H3><PRE> + A small number of terminal descriptions use uppercase characters in + their names. If the underlying filesystem ignores the difference + between uppercase and lowercase, <STRONG>ncurses</STRONG> represents the "first + character" of the terminal name used as the intermediate level of a + directory tree in (two-character) hexadecimal form. + + +</PRE><H2><a name="h2-EXAMPLE">EXAMPLE</a></H2><PRE> + As an example, here is a description for the Lear-Siegler ADM-3, a + popular though rather stupid early terminal: + + adm3a|lsi adm3a, + am, + cols#80, lines#24, + bel=^G, clear= 32$&lt;1&gt;, cr=^M, cub1=^H, cud1=^J, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + home=^^, ind=^J, + + + and a hexadecimal dump of the compiled terminal description: + + 0000 1a 01 10 00 02 00 03 00 82 00 31 00 61 64 6d 33 ........ ..1.adm3 + 0010 61 7c 6c 73 69 20 61 64 6d 33 61 00 00 01 50 00 a|lsi ad m3a...P. + 0020 ff ff 18 00 ff ff 00 00 02 00 ff ff ff ff 04 00 ........ ........ + 0030 ff ff ff ff ff ff ff ff 0a 00 25 00 27 00 ff ff ........ ..%.'... + 0040 29 00 ff ff ff ff 2b 00 ff ff 2d 00 ff ff ff ff ).....+. ..-..... + 0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 00d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 00e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 00f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 0100 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 0110 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ + 0120 ff ff ff ff ff ff 2f 00 07 00 0d 00 1a 24 3c 31 ....../. .....$&lt;1 + 0130 3e 00 1b 3d 25 70 31 25 7b 33 32 7d 25 2b 25 63 &gt;..=%p1% {32}%+%c + 0140 25 70 32 25 7b 33 32 7d 25 2b 25 63 00 0a 00 1e %p2%{32} %+%c.... + 0150 00 08 00 0c 00 0b 00 0a 00 ........ . + + + +</PRE><H2><a name="h2-LIMITS">LIMITS</a></H2><PRE> + Some limitations: + + <STRONG>o</STRONG> total compiled entries cannot exceed 4096 bytes in the legacy + format. + + <STRONG>o</STRONG> total compiled entries cannot exceed 32768 bytes in the extended + format. + + <STRONG>o</STRONG> the name field cannot exceed 128 bytes. + + Compiled entries are limited to 32768 bytes because offsets into the + <EM>strings</EM> <EM>table</EM> use two-byte integers. The legacy format could have + supported 32768-byte entries, but was limited a virtual memory page's + 4096 bytes. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /usr/share/terminfo/*/* compiled terminal capability database + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Thomas E. Dickey + extended terminfo format for ncurses 5.0 + hashed database support for ncurses 5.6 + extended number support for ncurses 6.1 + + Eric S. Raymond + documented legacy terminfo format, e.g., from pcurses. + + + + <STRONG><A HREF="term.5.html">term(5)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-STORAGE-LOCATION">STORAGE LOCATION</a></li> +<li><a href="#h3-LEGACY-STORAGE-FORMAT">LEGACY STORAGE FORMAT</a></li> +<li><a href="#h3-EXTENDED-STORAGE-FORMAT">EXTENDED STORAGE FORMAT</a></li> +<li><a href="#h3-EXTENDED-NUMBER-FORMAT">EXTENDED NUMBER FORMAT</a></li> +</ul> +</li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-setupterm">setupterm</a></li> +<li><a href="#h3-Binary-format">Binary format</a></li> +<li><a href="#h3-Magic-codes">Magic codes</a></li> +<li><a href="#h3-The-TERMTYPE-structure">The TERMTYPE structure</a></li> +<li><a href="#h3-Mixed-case-terminal-names">Mixed-case terminal names</a></li> +</ul> +</li> +<li><a href="#h2-EXAMPLE">EXAMPLE</a></li> +<li><a href="#h2-LIMITS">LIMITS</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/term.7.html b/deps/ncurses-6.3/doc/html/man/term.7.html new file mode 100644 index 0000000..e9d3512 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/term.7.html @@ -0,0 +1,231 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2011,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. * + **************************************************************************** + * @Id: term.7,v 1.30 2021/08/15 19:39:57 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>term 7</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">term 7</H1> +<PRE> +<STRONG><A HREF="term.7.html">term(7)</A></STRONG> Miscellaneous Information Manual <STRONG><A HREF="term.7.html">term(7)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + term - conventions for naming terminal types + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The environment variable <STRONG>TERM</STRONG> should normally contain the type name of + the terminal, console or display-device type you are using. This + information is critical for all screen-oriented programs, including + your editor and mailer. + + A default <STRONG>TERM</STRONG> value will be set on a per-line basis by either + <STRONG>/etc/inittab</STRONG> (e.g., System-V-like UNIXes) or <STRONG>/etc/ttys</STRONG> (BSD UNIXes). + This will nearly always suffice for workstation and microcomputer + consoles. + + If you use a dialup line, the type of device attached to it may vary. + Older UNIX systems pre-set a very dumb terminal type like "dumb" or + "dialup" on dialup lines. Newer ones may pre-set "vt100", reflecting + the prevalence of DEC VT100-compatible terminals and personal-computer + emulators. + + Modern telnets pass your <STRONG>TERM</STRONG> environment variable from the local side + to the remote one. There can be problems if the remote terminfo or + termcap entry for your type is not compatible with yours, but this + situation is rare and can almost always be avoided by explicitly + exporting "vt100" (assuming you are in fact using a VT100-superset + console, terminal, or terminal emulator). + + In any case, you are free to override the system <STRONG>TERM</STRONG> setting to your + taste in your shell profile. The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> utility may be of assistance; + you can give it a set of rules for deducing or requesting a terminal + type based on the tty device and baud rate. + + Setting your own <STRONG>TERM</STRONG> value may also be useful if you have created a + custom entry incorporating options (such as visual bell or reverse- + video) which you wish to override the system default type for your + line. + + Terminal type descriptions are stored as files of capability data + underneath /usr/share/terminfo. To browse a list of all terminal names + recognized by the system, do + + toe | more + + from your shell. These capability files are in a binary format + optimized for retrieval speed (unlike the old text-based <STRONG>termcap</STRONG> format + they replace); to examine an entry, you must use the <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> + command. Invoke it as follows: + + infocmp <EM>entry</EM><STRONG>_</STRONG><EM>name</EM> + + where <EM>entry</EM><STRONG>_</STRONG><EM>name</EM> is the name of the type you wish to examine (and the + name of its capability file the subdirectory of /usr/share/terminfo + named for its first letter). This command dumps a capability file in + the text format described by <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + The first line of a <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> description gives the names by which + terminfo knows a terminal, separated by "|" (pipe-bar) characters with + the last name field terminated by a comma. The first name field is the + type's <EM>primary</EM> <EM>name</EM>, and is the one to use when setting <STRONG>TERM</STRONG>. The last + name field (if distinct from the first) is actually a description of + the terminal type (it may contain blanks; the others must be single + words). Name fields between the first and last (if present) are + aliases for the terminal, usually historical names retained for + compatibility. + + There are some conventions for how to choose terminal primary names + that help keep them informative and unique. Here is a step-by-step + guide to naming terminals that also explains how to parse them: + + First, choose a root name. The root will consist of a lower-case + letter followed by up to seven lower-case letters or digits. You need + to avoid using punctuation characters in root names, because they are + used and interpreted as filenames and shell meta-characters (such as !, + $, *, ?, etc.) embedded in them may cause odd and unhelpful behavior. + The slash (/), or any other character that may be interpreted by + anyone's file system (\, $, [, ]), is especially dangerous (terminfo is + platform-independent, and choosing names with special characters could + someday make life difficult for users of a future port). The dot (.) + character is relatively safe as long as there is at most one per root + name; some historical terminfo names use it. + + The root name for a terminal or workstation console type should almost + always begin with a vendor prefix (such as <STRONG>hp</STRONG> for Hewlett-Packard, <STRONG>wy</STRONG> + for Wyse, or <STRONG>att</STRONG> for AT&amp;T terminals), or a common name of the terminal + line (<STRONG>vt</STRONG> for the VT series of terminals from DEC, or <STRONG>sun</STRONG> for Sun + Microsystems workstation consoles, or <STRONG>regent</STRONG> for the ADDS Regent + series. You can list the terminfo tree to see what prefixes are + already in common use. The root name prefix should be followed when + appropriate by a model number; thus <STRONG>vt100</STRONG>, <STRONG>hp2621</STRONG>, <STRONG>wy50</STRONG>. + + The root name for a PC-Unix console type should be the OS name, i.e., + <STRONG>linux</STRONG>, <STRONG>bsdos</STRONG>, <STRONG>freebsd</STRONG>, <STRONG>netbsd</STRONG>. It should <EM>not</EM> be <STRONG>console</STRONG> or any other + generic that might cause confusion in a multi-platform environment! If + a model number follows, it should indicate either the OS release level + or the console driver release level. + + The root name for a terminal emulator (assuming it does not fit one of + the standard ANSI or vt100 types) should be the program name or a + readily recognizable abbreviation of it (i.e., <STRONG>versaterm</STRONG>, <STRONG>ctrm</STRONG>). + + Following the root name, you may add any reasonable number of hyphen- + separated feature suffixes. + + 2p Has two pages of memory. Likewise 4p, 8p, etc. + + mc Magic-cookie. Some terminals (notably older Wyses) can only + support one attribute without magic-cookie lossage. Their base + entry is usually paired with another that has this suffix and uses + magic cookies to support multiple attributes. + + -am Enable auto-margin (right-margin wraparound). + + -m Mono mode - suppress color support. + + -na No arrow keys - termcap ignores arrow keys which are actually + there on the terminal, so the user can use the arrow keys locally. + + -nam No auto-margin - suppress am capability. + + -nl No labels - suppress soft labels. + + -nsl No status line - suppress status line. + + -pp Has a printer port which is used. + + -rv Terminal in reverse video mode (black on white). + + -s Enable status line. + + -vb Use visible bell (flash) rather than beep. + + -w Wide; terminal is in 132-column mode. + + Conventionally, if your terminal type is a variant intended to specify + a line height, that suffix should go first. So, for a hypothetical + FuBarCo model 2317 terminal in 30-line mode with reverse video, best + form would be <STRONG>fubar-30-rv</STRONG> (rather than, say, "fubar-rv-30"). + + Terminal types that are written not as standalone entries, but rather + as components to be plugged into other entries via <STRONG>use</STRONG> capabilities, + are distinguished by using embedded plus signs rather than dashes. + + Commands which use a terminal type to control display often accept a -T + option that accepts a terminal name argument. Such programs should + fall back on the <STRONG>TERM</STRONG> environment variable when no -T option is + specified. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + For maximum compatibility with older System V UNIXes, names and aliases + should be unique within the first 14 characters. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /usr/share/terminfo/?/* + compiled terminal capability database + + /etc/inittab + tty line initialization (AT&amp;T-like UNIXes) + + /etc/ttys + tty line initialization (BSD-like UNIXes) + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. + + + + <STRONG><A HREF="term.7.html">term(7)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/term_variables.3x.html b/deps/ncurses-6.3/doc/html/man/term_variables.3x.html new file mode 100644 index 0000000..a61911b --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/term_variables.3x.html @@ -0,0 +1,200 @@ +<!-- + **************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2010-2015,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. * + **************************************************************************** + * @Id: term_variables.3x,v 1.12 2020/02/02 23:34:34 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>term_variables 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">term_variables 3x</H1> +<PRE> +<STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG> <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>SP</STRONG>, <STRONG>acs_map</STRONG>, <STRONG>boolcodes</STRONG>, <STRONG>boolfnames</STRONG>, <STRONG>boolnames</STRONG>, <STRONG>cur_term</STRONG>, <STRONG>numcodes</STRONG>, + <STRONG>numfnames</STRONG>, <STRONG>numnames</STRONG>, <STRONG>strcodes</STRONG>, <STRONG>strfnames</STRONG>, <STRONG>strnames</STRONG>, <STRONG>ttytype</STRONG> - <STRONG>curses</STRONG> + terminfo global variables + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + <STRONG>#include</STRONG> <STRONG>&lt;term.h&gt;</STRONG> + + <STRONG>chtype</STRONG> <STRONG>acs_map[];</STRONG> + + <STRONG>SCREEN</STRONG> <STRONG>*</STRONG> <STRONG>SP;</STRONG> + + <STRONG>TERMINAL</STRONG> <STRONG>*</STRONG> <STRONG>cur_term;</STRONG> + + <STRONG>char</STRONG> <STRONG>ttytype[];</STRONG> + + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolcodes[];</STRONG> + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolfnames[];</STRONG> + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>boolnames[];</STRONG> + + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numcodes[];</STRONG> + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numfnames[];</STRONG> + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>numnames[];</STRONG> + + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strcodes[];</STRONG> + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strfnames[];</STRONG> + <STRONG>NCURSES_CONST</STRONG> <STRONG>char</STRONG> <STRONG>*</STRONG> <STRONG>const</STRONG> <STRONG>strnames[];</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This page summarizes variables provided by the <STRONG>curses</STRONG> library's low- + level terminfo interface. A more complete description is given in the + <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG> manual page. + + Depending on the configuration, these may be actual variables, or + macros (see <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>) which provide read-only access to <EM>curs-</EM> + <EM>es</EM>'s state. In either case, applications should treat them as read-on- + ly to avoid confusing the library. + + +</PRE><H3><a name="h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></H3><PRE> + After initializing the curses or terminfo interfaces, the <STRONG>acs_map</STRONG> array + holds information used to translate cells with the <STRONG>A_ALTCHARSET</STRONG> video + attribute into line-drawing characters. + + 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 &lt;curses.h&gt;. + + The comparable data for the wide-character library is a private vari- + able. + + +</PRE><H3><a name="h3-Current-Terminal-Data">Current Terminal Data</a></H3><PRE> + After initializing the curses or terminfo interfaces, the <STRONG>cur_term</STRONG> con- + tains data describing the current terminal. This variable is also set + as a side-effect of <STRONG><A HREF="curs_initscr.3x.html">set_term(3x)</A></STRONG> and <STRONG><A HREF="curs_initscr.3x.html">delscreen(3x)</A></STRONG>. + + It is possible to save a value of <STRONG>cur_term</STRONG> for subsequent use as a pa- + rameter to <STRONG>set_term</STRONG>, for switching between screens. Alternatively, one + can save the return value from <STRONG>newterm</STRONG> or <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to reuse in + <STRONG>set_term</STRONG>. + + +</PRE><H3><a name="h3-Terminfo-Names">Terminfo Names</a></H3><PRE> + The <STRONG><A HREF="tic.1m.html">tic(1)</A></STRONG> and <STRONG><A HREF="infocmp.1m.html">infocmp(1)</A></STRONG> programs use lookup tables for the long and + short names of terminfo capabilities, as well as the corresponding + names for termcap capabilities. These are available to other applica- + tions, although the hash-tables used by the terminfo and termcap func- + tions are not available. + + The long terminfo capability names use a "l" (ell) in their names: + <STRONG>boolfnames</STRONG>, <STRONG>numfnames</STRONG>, and <STRONG>strfnames</STRONG>. + + These are the short names for terminfo capabilities: <STRONG>boolnames</STRONG>, <STRONG>num-</STRONG> + <STRONG>names</STRONG>, and <STRONG>strnames</STRONG>. + + These are the corresponding names used for termcap descriptions: <STRONG>bool-</STRONG> + <STRONG>codes</STRONG>, <STRONG>numcodes</STRONG>, and <STRONG>strcodes</STRONG>. + + +</PRE><H3><a name="h3-Terminal-Type">Terminal Type</a></H3><PRE> + A terminal description begins with one or more terminal names separated + by "|" (vertical bars). On initialization of the curses or terminfo + interfaces, <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> copies the terminal names to the array <STRONG>tty-</STRONG> + <STRONG>type</STRONG>. + + +</PRE><H3><a name="h3-Terminfo-Names">Terminfo Names</a></H3><PRE> + In addition to the variables, <STRONG>&lt;term.h&gt;</STRONG> also defines a symbol for each + terminfo capability <EM>long</EM> <EM>name</EM>. These are in terms of the symbol <STRONG>CUR</STRONG>, + which is defined + + #define CUR ((TERMTYPE *)(cur_term))-&gt; + + These symbols provide a faster method of accessing terminfo capabili- + ties than using <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG>, etc. + + The actual definition of <STRONG>CUR</STRONG> depends upon the implementation, but each + terminfo library provides these long names defined to point into the + current terminal description loaded into memory. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The low-level terminfo interface is initialized using <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>. + The upper-level curses interface uses the low-level terminfo interface, + internally. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + X/Open Curses does not describe any of these except for <STRONG>cur_term</STRONG>. (The + inclusion of <STRONG>cur_term</STRONG> appears to be an oversight, since other compara- + ble low-level information is omitted by X/Open). + + Other implementations may have comparable variables. Some implementa- + tions provide the variables in their libraries, but omit them from the + header files. + + All implementations which provide terminfo interfaces add definitions + as described in the <STRONG>Terminfo</STRONG> <STRONG>Names</STRONG> section. Most, but not all, base + the definition upon the <STRONG>cur_term</STRONG> variable. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG><A HREF="curs_threads.3x.html">curs_threads(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + + + <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Alternate-Character-Set-Mapping">Alternate Character Set Mapping</a></li> +<li><a href="#h3-Current-Terminal-Data">Current Terminal Data</a></li> +<li><a href="#h3-Terminfo-Names">Terminfo Names</a></li> +<li><a href="#h3-Terminal-Type">Terminal Type</a></li> +<li><a href="#h3-Terminfo-Names">Terminfo Names</a></li> +</ul> +</li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/terminfo.5.html b/deps/ncurses-6.3/doc/html/man/terminfo.5.html new file mode 100644 index 0000000..0e20061 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/terminfo.5.html @@ -0,0 +1,2699 @@ +<!-- + * t + * DO NOT EDIT THIS FILE BY HAND! + * It is generated from terminfo.head, ./../include/Caps ./../include/Caps-ncurses, 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. + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: terminfo.head,v 1.41 2021/08/15 19:32:53 tom Exp @ + * Head of terminfo man page ends here + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: terminfo.tail,v 1.108 2021/10/09 23:13:23 tom Exp @ + *.in -2 + *.in +2 + *.in -2 + *.in +2 + *.TH +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>terminfo 5 File Formats</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">terminfo 5 File Formats</H1> +<PRE> +<STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> File Formats <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + terminfo - terminal capability database + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + /usr/share/terminfo/*/* + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + <EM>Terminfo</EM> is a database describing terminals, used by screen-oriented + programs such as <STRONG>nvi(1)</STRONG>, <STRONG>lynx(1)</STRONG>, <STRONG>mutt(1)</STRONG>, and other curses + applications, using high-level calls to libraries such as <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>. + It is also used via low-level calls by non-curses applications which + may be screen-oriented (such as <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>) or non-screen (such as + <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>). + + <EM>Terminfo</EM> describes terminals by giving a set of capabilities which they + have, by specifying how to perform screen operations, and by specifying + padding requirements and initialization sequences. + + This manual describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + +</PRE><H3><a name="h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></H3><PRE> + Entries in <EM>terminfo</EM> consist of a sequence of fields: + + <STRONG>o</STRONG> Each field ends with a comma "," (embedded commas may be escaped + with a backslash or written as "\054"). + + <STRONG>o</STRONG> White space between fields is ignored. + + <STRONG>o</STRONG> The first field in a <EM>terminfo</EM> entry begins in the first column. + + <STRONG>o</STRONG> Newlines and leading whitespace (spaces or tabs) may be used for + formatting entries for readability. These are removed from parsed + entries. + + The <STRONG>infocmp</STRONG> <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options rely on this to format if-then-else + expressions, or to enforce maximum line-width. The resulting + formatted terminal description can be read by <STRONG>tic</STRONG>. + + <STRONG>o</STRONG> The first field for each terminal gives the names which are known + for the terminal, separated by "|" characters. + + The first name given is the most common abbreviation for the + terminal (its primary name), the last name given should be a long + name fully identifying the terminal (see <STRONG><A HREF="curs_termattrs.3x.html">longname(3x)</A></STRONG>), and all + others are treated as synonyms (aliases) for the primary terminal + name. + + X/Open Curses advises that all names but the last should be in + lower case and contain no blanks; the last name may well contain + upper case and blanks for readability. + + This implementation is not so strict; it allows mixed case in the + primary name and aliases. If the last name has no embedded blanks, + it allows that to be both an alias and a verbose name (but will + warn about this ambiguity). + + <STRONG>o</STRONG> Lines beginning with a "#" in the first column are treated as + comments. + + While comment lines are legal at any point, the output of <STRONG>captoinfo</STRONG> + and <STRONG>infotocap</STRONG> (aliases for <STRONG>tic</STRONG>) will move comments so they occur + only between entries. + + Terminal names (except for the last, verbose entry) should be chosen + using the following conventions. The particular piece of hardware + making up the terminal should have a root name, thus "hp2621". This + name should not contain hyphens. Modes that the hardware can be in, or + user preferences, should be indicated by appending a hyphen and a mode + suffix. Thus, a vt100 in 132-column mode would be vt100-w. The + following suffixes should be used where possible: + + <STRONG>Suffix</STRONG> <STRONG>Meaning</STRONG> <STRONG>Example</STRONG> + -<EM>nn</EM> Number of lines on the screen aaa-60 + -<EM>n</EM>p Number of pages of memory c100-4p + -am With automargins (usually the default) vt100-am + -m Mono mode; suppress color ansi-m + -mc Magic cookie; spaces when highlighting wy30-mc + -na No arrow keys (leave them in local) c100-na + -nam Without automatic margins vt100-nam + -nl No status line att4415-nl + -ns No status line hp2626-ns + -rv Reverse video c100-rv + -s Enable status line vt100-s + -vb Use visible bell instead of beep wy370-vb + -w Wide mode (&gt; 80 columns, usually 132) vt100-w + + For more on terminal naming conventions, see the <STRONG><A HREF="term.7.html">term(7)</A></STRONG> manual page. + + +</PRE><H3><a name="h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></H3><PRE> + The terminfo entry consists of several <EM>capabilities</EM>, i.e., features + that the terminal has, or methods for exercising the terminal's + features. + + After the first field (giving the name(s) of the terminal entry), there + should be one or more <EM>capability</EM> fields. These are boolean, numeric or + string names with corresponding values: + + <STRONG>o</STRONG> Boolean capabilities are true when present, false when absent. + There is no explicit value for boolean capabilities. + + <STRONG>o</STRONG> Numeric capabilities have a "#" following the name, then an + unsigned decimal integer value. + + <STRONG>o</STRONG> String capabilities have a "=" following the name, then an string + of characters making up the capability value. + + String capabilities can be split into multiple lines, just as the + fields comprising a terminal entry can be split into multiple + lines. While blanks between fields are ignored, blanks embedded + within a string value are retained, except for leading blanks on a + line. + + Any capability can be <EM>canceled</EM>, i.e., suppressed from the terminal + entry, by following its name with "@" rather than a capability value. + + +</PRE><H3><a name="h3-Similar-Terminals">Similar Terminals</a></H3><PRE> + If there are two very similar terminals, one (the variant) can be + defined as being just like the other (the base) with certain + exceptions. In the definition of the variant, the string capability + <STRONG>use</STRONG> can be given with the name of the base terminal: + + <STRONG>o</STRONG> The capabilities given before <STRONG>use</STRONG> override those in the base type + named by <STRONG>use</STRONG>. + + <STRONG>o</STRONG> If there are multiple <STRONG>use</STRONG> capabilities, they are merged in reverse + order. That is, the rightmost <STRONG>use</STRONG> reference is processed first, + then the one to its left, and so forth. + + <STRONG>o</STRONG> Capabilities given explicitly in the entry override those brought + in by <STRONG>use</STRONG> references. + + A capability can be canceled by placing <STRONG>xx@</STRONG> to the left of the use + reference that imports it, where <EM>xx</EM> is the capability. For example, + the entry + + 2621-nl, smkx@, rmkx@, use=2621, + + defines a 2621-nl that does not have the <STRONG>smkx</STRONG> or <STRONG>rmkx</STRONG> capabilities, and + hence does not turn on the function key labels when in visual mode. + This is useful for different modes for a terminal, or for different + user preferences. + + An entry included via <STRONG>use</STRONG> can contain canceled capabilities, which have + the same effect as if those cancels were inline in the using terminal + entry. + + +</PRE><H3><a name="h3-Predefined-Capabilities">Predefined Capabilities</a></H3><PRE> + The following is a complete table of the capabilities included in a + terminfo description block and available to terminfo-using code. In + each line of the table, + + The <STRONG>variable</STRONG> is the name by which the programmer (at the terminfo + level) accesses the capability. + + The <STRONG>capname</STRONG> is the short name used in the text of the database, and is + used by a person updating the database. Whenever possible, capnames + are chosen to be the same as or similar to the ANSI X3.64-1979 standard + (now superseded by ECMA-48, which uses identical or very similar + names). Semantics are also intended to match those of the + specification. + + The termcap code is the old <STRONG>termcap</STRONG> capability name (some capabilities + are new, and have names which termcap did not originate). + + Capability names have no hard length limit, but an informal limit of 5 + characters has been adopted to keep them short and to allow the tabs in + the source file <STRONG>Caps</STRONG> to line up nicely. + + Finally, the description field attempts to convey the semantics of the + capability. You may find some codes in the description field: + + (P) indicates that padding may be specified + + #[1-9] in the description field indicates that the string is passed + through <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> with parameters as given (#<EM>i</EM>). + + If no parameters are listed in the description, passing the + string through <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> may give unexpected results, e.g., if + it contains percent (%%) signs. + + (P*) indicates that padding may vary in proportion to the number of + lines affected + + (#<EM>i</EM>) indicates the <EM>i</EM>th parameter. + + + These are the boolean capabilities: + + + <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG> + <STRONG>Booleans</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG> + + + + auto_left_margin bw bw cub1 wraps from + column 0 to last + column + auto_right_margin am am terminal has + automatic margins + back_color_erase bce ut screen erased with + background color + can_change ccc cc terminal can re- + define existing + colors + ceol_standout_glitch xhp xs standout not erased + by overwriting (hp) + col_addr_glitch xhpa YA only positive motion + for hpa/mhpa caps + cpi_changes_res cpix YF changing character + pitch changes + resolution + cr_cancels_micro_mode crxm YB using cr turns off + micro mode + dest_tabs_magic_smso xt xt tabs destructive, + magic so char + (t1061) + eat_newline_glitch xenl xn newline ignored + after 80 cols + (concept) + erase_overstrike eo eo can erase + overstrikes with a + blank + generic_type gn gn generic line type + hard_copy hc hc hardcopy terminal + hard_cursor chts HC cursor is hard to + see + has_meta_key km km Has a meta key + (i.e., sets 8th-bit) + has_print_wheel daisy YC printer needs + operator to change + character set + has_status_line hs hs has extra status + line + hue_lightness_saturation hls hl terminal uses only + HLS color notation + (Tektronix) + insert_null_glitch in in insert mode + distinguishes nulls + lpi_changes_res lpix YG changing line pitch + changes resolution + memory_above da da display may be + retained above the + screen + memory_below db db display may be + retained below the + screen + move_insert_mode mir mi safe to move while + in insert mode + move_standout_mode msgr ms safe to move while + in standout mode + needs_xon_xoff nxon nx padding will not + work, xon/xoff + required + no_esc_ctlc xsb xb beehive (f1=escape, + f2=ctrl C) + no_pad_char npc NP pad character does + not exist + non_dest_scroll_region ndscr ND scrolling region is + non-destructive + + non_rev_rmcup nrrmc NR smcup does not + reverse rmcup + over_strike os os terminal can + overstrike + prtr_silent mc5i 5i printer will not + echo on screen + row_addr_glitch xvpa YD only positive motion + for vpa/mvpa caps + semi_auto_right_margin sam YE printing in last + column causes cr + status_line_esc_ok eslok es escape can be used + on the status line + tilde_glitch hz hz cannot print ~'s + (Hazeltine) + transparent_underline ul ul underline character + overstrikes + xon_xoff xon xo terminal uses + xon/xoff handshaking + + These are the numeric capabilities: + + + <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG> + <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG> + columns cols co number of columns in + a line + init_tabs it it tabs initially every + # spaces + label_height lh lh rows in each label + label_width lw lw columns in each + label + lines lines li number of lines on + screen or page + lines_of_memory lm lm lines of memory if &gt; + line. 0 means varies + magic_cookie_glitch xmc sg number of blank + characters left by + smso or rmso + max_attributes ma ma maximum combined + attributes terminal + can handle + max_colors colors Co maximum number of + colors on screen + max_pairs pairs pa maximum number of + color-pairs on the + screen + maximum_windows wnum MW maximum number of + definable windows + no_color_video ncv NC video attributes + that cannot be used + with colors + num_labels nlab Nl number of labels on + screen + padding_baud_rate pb pb lowest baud rate + where padding needed + virtual_terminal vt vt virtual terminal + number (CB/unix) + width_status_line wsl ws number of columns in + status line + + The following numeric capabilities are present in the SVr4.0 term + structure, but are not yet documented in the man page. They came in + with SVr4's printer support. + + + + <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG> + <STRONG>Numeric</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG> + bit_image_entwining bitwin Yo number of passes for + each bit-image row + bit_image_type bitype Yp type of bit-image + device + buffer_capacity bufsz Ya numbers of bytes + buffered before + printing + buttons btns BT number of buttons on + mouse + dot_horz_spacing spinh Yc spacing of dots + horizontally in dots + per inch + dot_vert_spacing spinv Yb spacing of pins + vertically in pins + per inch + max_micro_address maddr Yd maximum value in + micro_..._address + max_micro_jump mjump Ye maximum value in + parm_..._micro + micro_col_size mcs Yf character step size + when in micro mode + micro_line_size mls Yg line step size when + in micro mode + number_of_pins npins Yh numbers of pins in + print-head + output_res_char orc Yi horizontal + resolution in units + per line + output_res_horz_inch orhi Yk horizontal + resolution in units + per inch + output_res_line orl Yj vertical resolution + in units per line + output_res_vert_inch orvi Yl vertical resolution + in units per inch + print_rate cps Ym print rate in + characters per + second + wide_char_size widcs Yn character step size + when in double wide + mode + + These are the string capabilities: + + + <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG> + <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG> + acs_chars acsc ac graphics charset + pairs, based on + vt100 + back_tab cbt bt back tab (P) + bell bel bl audible signal + (bell) (P) + carriage_return cr cr carriage return (P*) + (P*) + change_char_pitch cpi ZA Change number of + characters per inch + to #1 + change_line_pitch lpi ZB Change number of + lines per inch to #1 + change_res_horz chr ZC Change horizontal + resolution to #1 + + + change_res_vert cvr ZD Change vertical + resolution to #1 + change_scroll_region csr cs change region to + line #1 to line #2 + (P) + char_padding rmp rP like ip but when in + insert mode + clear_all_tabs tbc ct clear all tab stops + (P) + clear_margins mgc MC clear right and left + soft margins + clear_screen clear cl clear screen and + home cursor (P*) + clr_bol el1 cb Clear to beginning + of line + clr_eol el ce clear to end of line + (P) + clr_eos ed cd clear to end of + screen (P*) + column_address hpa ch horizontal position + #1, absolute (P) + command_character cmdch CC terminal settable + cmd character in + prototype !? + create_window cwin CW define a window #1 + from #2,#3 to #4,#5 + cursor_address cup cm move to row #1 + columns #2 + cursor_down cud1 do down one line + cursor_home home ho home cursor (if no + cup) + cursor_invisible civis vi make cursor + invisible + cursor_left cub1 le move left one space + cursor_mem_address mrcup CM memory relative + cursor addressing, + move to row #1 + columns #2 + cursor_normal cnorm ve make cursor appear + normal (undo + civis/cvvis) + cursor_right cuf1 nd non-destructive + space (move right + one space) + cursor_to_ll ll ll last line, first + column (if no cup) + cursor_up cuu1 up up one line + cursor_visible cvvis vs make cursor very + visible + define_char defc ZE Define a character + #1, #2 dots wide, + descender #3 + delete_character dch1 dc delete character + (P*) + delete_line dl1 dl delete line (P*) + dial_phone dial DI dial number #1 + dis_status_line dsl ds disable status line + display_clock dclk DK display clock + down_half_line hd hd half a line down + ena_acs enacs eA enable alternate + char set + enter_alt_charset_mode smacs as start alternate + character set (P) + enter_am_mode smam SA turn on automatic + margins + + enter_blink_mode blink mb turn on blinking + enter_bold_mode bold md turn on bold (extra + bright) mode + enter_ca_mode smcup ti string to start + programs using cup + enter_delete_mode smdc dm enter delete mode + enter_dim_mode dim mh turn on half-bright + mode + enter_doublewide_mode swidm ZF Enter double-wide + mode + enter_draft_quality sdrfq ZG Enter draft-quality + mode + enter_insert_mode smir im enter insert mode + enter_italics_mode sitm ZH Enter italic mode + enter_leftward_mode slm ZI Start leftward + carriage motion + enter_micro_mode smicm ZJ Start micro-motion + mode + enter_near_letter_quality snlq ZK Enter NLQ mode + enter_normal_quality snrmq ZL Enter normal-quality + mode + enter_protected_mode prot mp turn on protected + mode + enter_reverse_mode rev mr turn on reverse + video mode + enter_secure_mode invis mk turn on blank mode + (characters + invisible) + enter_shadow_mode sshm ZM Enter shadow-print + mode + enter_standout_mode smso so begin standout mode + enter_subscript_mode ssubm ZN Enter subscript mode + enter_superscript_mode ssupm ZO Enter superscript + mode + enter_underline_mode smul us begin underline mode + enter_upward_mode sum ZP Start upward + carriage motion + enter_xon_mode smxon SX turn on xon/xoff + handshaking + erase_chars ech ec erase #1 characters + (P) + exit_alt_charset_mode rmacs ae end alternate + character set (P) + exit_am_mode rmam RA turn off automatic + margins + exit_attribute_mode sgr0 me turn off all + attributes + exit_ca_mode rmcup te strings to end + programs using cup + exit_delete_mode rmdc ed end delete mode + exit_doublewide_mode rwidm ZQ End double-wide mode + exit_insert_mode rmir ei exit insert mode + exit_italics_mode ritm ZR End italic mode + exit_leftward_mode rlm ZS End left-motion mode + exit_micro_mode rmicm ZT End micro-motion + mode + exit_shadow_mode rshm ZU End shadow-print + mode + exit_standout_mode rmso se exit standout mode + exit_subscript_mode rsubm ZV End subscript mode + exit_superscript_mode rsupm ZW End superscript mode + exit_underline_mode rmul ue exit underline mode + exit_upward_mode rum ZX End reverse + character motion + + + exit_xon_mode rmxon RX turn off xon/xoff + handshaking + fixed_pause pause PA pause for 2-3 + seconds + flash_hook hook fh flash switch hook + flash_screen flash vb visible bell (may + not move cursor) + form_feed ff ff hardcopy terminal + page eject (P*) + from_status_line fsl fs return from status + line + goto_window wingo WG go to window #1 + hangup hup HU hang-up phone + init_1string is1 i1 initialization + string + init_2string is2 is initialization + string + init_3string is3 i3 initialization + string + init_file if if name of + initialization file + init_prog iprog iP path name of program + for initialization + initialize_color initc Ic initialize color #1 + to (#2,#3,#4) + initialize_pair initp Ip Initialize color + pair #1 to + fg=(#2,#3,#4), + bg=(#5,#6,#7) + insert_character ich1 ic insert character (P) + insert_line il1 al insert line (P*) + insert_padding ip ip insert padding after + inserted character + key_a1 ka1 K1 upper left of keypad + key_a3 ka3 K3 upper right of + keypad + key_b2 kb2 K2 center of keypad + key_backspace kbs kb backspace key + key_beg kbeg @1 begin key + key_btab kcbt kB back-tab key + key_c1 kc1 K4 lower left of keypad + key_c3 kc3 K5 lower right of + keypad + key_cancel kcan @2 cancel key + key_catab ktbc ka clear-all-tabs key + key_clear kclr kC clear-screen or + erase key + key_close kclo @3 close key + key_command kcmd @4 command key + key_copy kcpy @5 copy key + key_create kcrt @6 create key + key_ctab kctab kt clear-tab key + key_dc kdch1 kD delete-character key + key_dl kdl1 kL delete-line key + key_down kcud1 kd down-arrow key + key_eic krmir kM sent by rmir or smir + in insert mode + key_end kend @7 end key + key_enter kent @8 enter/send key + key_eol kel kE clear-to-end-of-line + key + key_eos ked kS clear-to-end-of- + screen key + key_exit kext @9 exit key + key_f0 kf0 k0 F0 function key + + key_f1 kf1 k1 F1 function key + key_f10 kf10 k; F10 function key + key_f11 kf11 F1 F11 function key + key_f12 kf12 F2 F12 function key + key_f13 kf13 F3 F13 function key + key_f14 kf14 F4 F14 function key + key_f15 kf15 F5 F15 function key + key_f16 kf16 F6 F16 function key + key_f17 kf17 F7 F17 function key + key_f18 kf18 F8 F18 function key + key_f19 kf19 F9 F19 function key + key_f2 kf2 k2 F2 function key + key_f20 kf20 FA F20 function key + key_f21 kf21 FB F21 function key + key_f22 kf22 FC F22 function key + key_f23 kf23 FD F23 function key + key_f24 kf24 FE F24 function key + key_f25 kf25 FF F25 function key + key_f26 kf26 FG F26 function key + key_f27 kf27 FH F27 function key + key_f28 kf28 FI F28 function key + key_f29 kf29 FJ F29 function key + key_f3 kf3 k3 F3 function key + key_f30 kf30 FK F30 function key + key_f31 kf31 FL F31 function key + key_f32 kf32 FM F32 function key + key_f33 kf33 FN F33 function key + key_f34 kf34 FO F34 function key + key_f35 kf35 FP F35 function key + key_f36 kf36 FQ F36 function key + key_f37 kf37 FR F37 function key + key_f38 kf38 FS F38 function key + key_f39 kf39 FT F39 function key + key_f4 kf4 k4 F4 function key + key_f40 kf40 FU F40 function key + key_f41 kf41 FV F41 function key + key_f42 kf42 FW F42 function key + key_f43 kf43 FX F43 function key + key_f44 kf44 FY F44 function key + key_f45 kf45 FZ F45 function key + key_f46 kf46 Fa F46 function key + key_f47 kf47 Fb F47 function key + key_f48 kf48 Fc F48 function key + key_f49 kf49 Fd F49 function key + key_f5 kf5 k5 F5 function key + key_f50 kf50 Fe F50 function key + key_f51 kf51 Ff F51 function key + key_f52 kf52 Fg F52 function key + key_f53 kf53 Fh F53 function key + key_f54 kf54 Fi F54 function key + key_f55 kf55 Fj F55 function key + key_f56 kf56 Fk F56 function key + key_f57 kf57 Fl F57 function key + key_f58 kf58 Fm F58 function key + key_f59 kf59 Fn F59 function key + key_f6 kf6 k6 F6 function key + key_f60 kf60 Fo F60 function key + key_f61 kf61 Fp F61 function key + key_f62 kf62 Fq F62 function key + key_f63 kf63 Fr F63 function key + key_f7 kf7 k7 F7 function key + key_f8 kf8 k8 F8 function key + key_f9 kf9 k9 F9 function key + key_find kfnd @0 find key + key_help khlp %1 help key + + key_home khome kh home key + key_ic kich1 kI insert-character key + key_il kil1 kA insert-line key + key_left kcub1 kl left-arrow key + key_ll kll kH lower-left key (home + down) + key_mark kmrk %2 mark key + key_message kmsg %3 message key + key_move kmov %4 move key + key_next knxt %5 next key + key_npage knp kN next-page key + key_open kopn %6 open key + key_options kopt %7 options key + key_ppage kpp kP previous-page key + key_previous kprv %8 previous key + key_print kprt %9 print key + key_redo krdo %0 redo key + key_reference kref &amp;1 reference key + key_refresh krfr &amp;2 refresh key + key_replace krpl &amp;3 replace key + key_restart krst &amp;4 restart key + key_resume kres &amp;5 resume key + key_right kcuf1 kr right-arrow key + key_save ksav &amp;6 save key + key_sbeg kBEG &amp;9 shifted begin key + key_scancel kCAN &amp;0 shifted cancel key + key_scommand kCMD *1 shifted command key + key_scopy kCPY *2 shifted copy key + key_screate kCRT *3 shifted create key + key_sdc kDC *4 shifted delete- + character key + key_sdl kDL *5 shifted delete-line + key + key_select kslt *6 select key + key_send kEND *7 shifted end key + key_seol kEOL *8 shifted clear-to- + end-of-line key + key_sexit kEXT *9 shifted exit key + key_sf kind kF scroll-forward key + key_sfind kFND *0 shifted find key + key_shelp kHLP #1 shifted help key + key_shome kHOM #2 shifted home key + key_sic kIC #3 shifted insert- + character key + key_sleft kLFT #4 shifted left-arrow + key + key_smessage kMSG %a shifted message key + key_smove kMOV %b shifted move key + key_snext kNXT %c shifted next key + key_soptions kOPT %d shifted options key + key_sprevious kPRV %e shifted previous key + key_sprint kPRT %f shifted print key + key_sr kri kR scroll-backward key + key_sredo kRDO %g shifted redo key + key_sreplace kRPL %h shifted replace key + key_sright kRIT %i shifted right-arrow + key + key_srsume kRES %j shifted resume key + key_ssave kSAV !1 shifted save key + key_ssuspend kSPD !2 shifted suspend key + key_stab khts kT set-tab key + key_sundo kUND !3 shifted undo key + key_suspend kspd &amp;7 suspend key + key_undo kund &amp;8 undo key + key_up kcuu1 ku up-arrow key + + keypad_local rmkx ke leave + 'keyboard_transmit' + mode + keypad_xmit smkx ks enter + 'keyboard_transmit' + mode + lab_f0 lf0 l0 label on function + key f0 if not f0 + lab_f1 lf1 l1 label on function + key f1 if not f1 + lab_f10 lf10 la label on function + key f10 if not f10 + lab_f2 lf2 l2 label on function + key f2 if not f2 + lab_f3 lf3 l3 label on function + key f3 if not f3 + lab_f4 lf4 l4 label on function + key f4 if not f4 + lab_f5 lf5 l5 label on function + key f5 if not f5 + lab_f6 lf6 l6 label on function + key f6 if not f6 + lab_f7 lf7 l7 label on function + key f7 if not f7 + lab_f8 lf8 l8 label on function + key f8 if not f8 + lab_f9 lf9 l9 label on function + key f9 if not f9 + label_format fln Lf label format + label_off rmln LF turn off soft labels + label_on smln LO turn on soft labels + meta_off rmm mo turn off meta mode + meta_on smm mm turn on meta mode + (8th-bit on) + micro_column_address mhpa ZY Like column_address + in micro mode + micro_down mcud1 ZZ Like cursor_down in + micro mode + micro_left mcub1 Za Like cursor_left in + micro mode + micro_right mcuf1 Zb Like cursor_right in + micro mode + micro_row_address mvpa Zc Like row_address #1 + in micro mode + micro_up mcuu1 Zd Like cursor_up in + micro mode + newline nel nw newline (behave like + cr followed by lf) + order_of_pins porder Ze Match software bits + to print-head pins + orig_colors oc oc Set all color pairs + to the original ones + orig_pair op op Set default pair to + its original value + pad_char pad pc padding char + (instead of null) + parm_dch dch DC delete #1 characters + (P*) + parm_delete_line dl DL delete #1 lines (P*) + parm_down_cursor cud DO down #1 lines (P*) + parm_down_micro mcud Zf Like + parm_down_cursor in + micro mode + parm_ich ich IC insert #1 characters + (P*) + + parm_index indn SF scroll forward #1 + lines (P) + parm_insert_line il AL insert #1 lines (P*) + parm_left_cursor cub LE move #1 characters + to the left (P) + parm_left_micro mcub Zg Like + parm_left_cursor in + micro mode + parm_right_cursor cuf RI move #1 characters + to the right (P*) + parm_right_micro mcuf Zh Like + parm_right_cursor in + micro mode + parm_rindex rin SR scroll back #1 lines + (P) + parm_up_cursor cuu UP up #1 lines (P*) + parm_up_micro mcuu Zi Like parm_up_cursor + in micro mode + pkey_key pfkey pk program function key + #1 to type string #2 + pkey_local pfloc pl program function key + #1 to execute string + #2 + pkey_xmit pfx px program function key + #1 to transmit + string #2 + plab_norm pln pn program label #1 to + show string #2 + print_screen mc0 ps print contents of + screen + prtr_non mc5p pO turn on printer for + #1 bytes + prtr_off mc4 pf turn off printer + prtr_on mc5 po turn on printer + pulse pulse PU select pulse dialing + quick_dial qdial QD dial number #1 + without checking + remove_clock rmclk RC remove clock + repeat_char rep rp repeat char #1 #2 + times (P*) + req_for_input rfi RF send next input char + (for ptys) + reset_1string rs1 r1 reset string + reset_2string rs2 r2 reset string + reset_3string rs3 r3 reset string + reset_file rf rf name of reset file + restore_cursor rc rc restore cursor to + position of last + save_cursor + row_address vpa cv vertical position #1 + absolute (P) + save_cursor sc sc save current cursor + position (P) + scroll_forward ind sf scroll text up (P) + scroll_reverse ri sr scroll text down (P) + select_char_set scs Zj Select character + set, #1 + set_attributes sgr sa define video + attributes #1-#9 + (PG9) + set_background setb Sb Set background color + #1 + set_bottom_margin smgb Zk Set bottom margin at + current line + + + set_bottom_margin_parm smgbp Zl Set bottom margin at + line #1 or (if smgtp + is not given) #2 + lines from bottom + set_clock sclk SC set clock, #1 hrs #2 + mins #3 secs + set_color_pair scp sp Set current color + pair to #1 + set_foreground setf Sf Set foreground color + #1 + set_left_margin smgl ML set left soft margin + at current + column. (ML is + not in BSD termcap). + set_left_margin_parm smglp Zm Set left (right) + margin at column #1 + set_right_margin smgr MR set right soft + margin at current + column + set_right_margin_parm smgrp Zn Set right margin at + column #1 + set_tab hts st set a tab in every + row, current columns + set_top_margin smgt Zo Set top margin at + current line + set_top_margin_parm smgtp Zp Set top (bottom) + margin at row #1 + set_window wind wi current window is + lines #1-#2 cols + #3-#4 + start_bit_image sbim Zq Start printing bit + image graphics + start_char_set_def scsd Zr Start character set + definition #1, with + #2 characters in the + set + stop_bit_image rbim Zs Stop printing bit + image graphics + stop_char_set_def rcsd Zt End definition of + character set #1 + subscript_characters subcs Zu List of + subscriptable + characters + superscript_characters supcs Zv List of + superscriptable + characters + tab ht ta tab to next 8-space + hardware tab stop + these_cause_cr docr Zw Printing any of + these characters + causes CR + to_status_line tsl ts move to status line, + column #1 + tone tone TO select touch tone + dialing + underline_char uc uc underline char and + move past it + up_half_line hu hu half a line up + user0 u0 u0 User string #0 + user1 u1 u1 User string #1 + user2 u2 u2 User string #2 + user3 u3 u3 User string #3 + user4 u4 u4 User string #4 + user5 u5 u5 User string #5 + user6 u6 u6 User string #6 + + user7 u7 u7 User string #7 + user8 u8 u8 User string #8 + user9 u9 u9 User string #9 + wait_tone wait WA wait for dial-tone + xoff_character xoffc XF XOFF character + xon_character xonc XN XON character + zero_motion zerom Zx No motion for + subsequent character + + The following string capabilities are present in the SVr4.0 term + structure, but were originally not documented in the man page. + + + <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG> + <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG> + alt_scancode_esc scesa S8 Alternate escape + for scancode + emulation + bit_image_carriage_return bicr Yv Move to beginning + of same row + bit_image_newline binel Zz Move to next row + of the bit image + bit_image_repeat birep Xy Repeat bit image + cell #1 #2 times + char_set_names csnm Zy Produce #1'th item + from list of + character set + names + code_set_init csin ci Init sequence for + multiple codesets + color_names colornm Yw Give name for + color #1 + define_bit_image_region defbi Yx Define rectangular + bit image region + device_type devt dv Indicate + language/codeset + support + display_pc_char dispc S1 Display PC + character #1 + end_bit_image_region endbi Yy End a bit-image + region + enter_pc_charset_mode smpch S2 Enter PC character + display mode + enter_scancode_mode smsc S4 Enter PC scancode + mode + exit_pc_charset_mode rmpch S3 Exit PC character + display mode + exit_scancode_mode rmsc S5 Exit PC scancode + mode + get_mouse getm Gm Curses should get + button events, + parameter #1 not + documented. + key_mouse kmous Km Mouse event has + occurred + mouse_info minfo Mi Mouse status + information + pc_term_options pctrm S6 PC terminal + options + pkey_plab pfxl xl Program function + key #1 to type + string #2 and show + string #3 + req_mouse_pos reqmp RQ Request mouse + position + + scancode_escape scesc S7 Escape for + scancode emulation + set0_des_seq s0ds s0 Shift to codeset 0 + (EUC set 0, ASCII) + set1_des_seq s1ds s1 Shift to codeset 1 + set2_des_seq s2ds s2 Shift to codeset 2 + set3_des_seq s3ds s3 Shift to codeset 3 + set_a_background setab AB Set background + color to #1, using + ANSI escape + set_a_foreground setaf AF Set foreground + color to #1, using + ANSI escape + set_color_band setcolor Yz Change to ribbon + color #1 + set_lr_margin smglr ML Set both left and + right margins to + #1, #2. (ML is + not in BSD + termcap). + set_page_length slines YZ Set page length to + #1 lines + set_tb_margin smgtb MT Sets both top and + bottom margins to + #1, #2 + + The XSI Curses standard added these hardcopy capabilities. They were + used in some post-4.1 versions of System V curses, e.g., Solaris 2.5 + and IRIX 6.x. Except for <STRONG>YI</STRONG>, the <STRONG>ncurses</STRONG> termcap names for them are + invented. According to the XSI Curses standard, they have no termcap + names. If your compiled terminfo entries use these, they may not be + binary-compatible with System V terminfo entries after SVr4.1; beware! + + + <STRONG>Variable</STRONG> <STRONG>Cap-</STRONG> <STRONG>TCap</STRONG> <STRONG>Description</STRONG> + <STRONG>String</STRONG> <STRONG>name</STRONG> <STRONG>Code</STRONG> + enter_horizontal_hl_mode ehhlm Xh Enter horizontal + highlight mode + enter_left_hl_mode elhlm Xl Enter left highlight + mode + enter_low_hl_mode elohlm Xo Enter low highlight + mode + enter_right_hl_mode erhlm Xr Enter right + highlight mode + enter_top_hl_mode ethlm Xt Enter top highlight + mode + enter_vertical_hl_mode evhlm Xv Enter vertical + highlight mode + set_a_attributes sgr1 sA Define second set of + video attributes + #1-#6 + set_pglen_inch slength YI Set page length to + #1 hundredth of an + inch (some + implementations use + sL for termcap). + + +</PRE><H3><a name="h3-User-Defined-Capabilities">User-Defined Capabilities</a></H3><PRE> + The preceding section listed the <EM>predefined</EM> 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 + capabilities. + + <STRONG>ncurses</STRONG> addresses this limitation by allowing user-defined + capabilities. The <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> programs provide the <STRONG>-x</STRONG> option for + this purpose. When <STRONG>-x</STRONG> is set, <STRONG>tic</STRONG> treats unknown capabilities as user- + defined. That is, if <STRONG>tic</STRONG> encounters a capability name which it does + not recognize, it infers its type (boolean, number or string) from the + syntax and makes an extended table entry for that capability. The + <STRONG><A HREF="curs_extend.3x.html">use_extended_names(3x)</A></STRONG> function makes this information conditionally + available to applications. The ncurses library provides the data + leaving most of the behavior to applications: + + <STRONG>o</STRONG> User-defined capability strings whose name begins with "k" are + treated as function keys. + + <STRONG>o</STRONG> The types (boolean, number, string) determined by <STRONG>tic</STRONG> can be + inferred by successful calls on <STRONG>tigetflag</STRONG>, etc. + + <STRONG>o</STRONG> If the capability name happens to be two characters, the capability + is also available through the termcap interface. + + 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. 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. + + +</PRE><H3><a name="h3-A-Sample-Entry">A Sample Entry</a></H3><PRE> + The following entry, describing an ANSI-standard terminal, is + representative of what a <STRONG>terminfo</STRONG> entry for a modern terminal typically + looks like. + + ansi|ansi/pc-term compatible with color, + am, mc5i, mir, msgr, + colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64, + acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260 + j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303 + u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=^M, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + el1=\E[1K, home=\E[H, hpa=\E[%i%p1%dG, ht=\E[I, hts=\EH, + ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=^J, + indn=\E[%p1%dS, invis=\E[8m, kbs=^H, kcbt=\E[Z, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, + mc4=\E[4i, mc5=\E[5i, nel=\r\E[S, op=\E[39;49m, + rep=%p1%c\E[%p2%{1}%-%db, rev=\E[7m, rin=\E[%p1%dT, + rmacs=\E[10m, rmpch=\E[10m, rmso=\E[m, rmul=\E[m, + s0ds=\E(B, s1ds=\E)B, s2ds=\E*B, s3ds=\E+B, + setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + sgr=\E[0;10%?%p1%t;7%; + %?%p2%t;4%; + %?%p3%t;7%; + %?%p4%t;5%; + %?%p6%t;1%; + %?%p7%t;8%; + %?%p9%t;11%;m, + sgr0=\E[0;10m, smacs=\E[11m, smpch=\E[11m, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, + u8=\E[?%[;0123456789]c, u9=\E[c, vpa=\E[%i%p1%dd, + + Entries may continue onto multiple lines by placing white space at the + beginning of each line except the first. Comments may be included on + lines beginning with "#". Capabilities in <EM>terminfo</EM> are of three types: + + <STRONG>o</STRONG> Boolean capabilities which indicate that the terminal has some + particular feature, + + <STRONG>o</STRONG> numeric capabilities giving the size of the terminal or the size of + particular delays, and + + <STRONG>o</STRONG> string capabilities, which give a sequence which can be used to + perform particular terminal operations. + + +</PRE><H3><a name="h3-Types-of-Capabilities">Types of Capabilities</a></H3><PRE> + All capabilities have names. For instance, the fact that ANSI-standard + terminals have <EM>automatic</EM> <EM>margins</EM> (i.e., an automatic return and line- + feed when the end of a line is reached) is indicated by the capability + <STRONG>am</STRONG>. Hence the description of ansi includes <STRONG>am</STRONG>. Numeric capabilities + are followed by the character "#" and then a positive value. Thus + <STRONG>cols</STRONG>, which indicates the number of columns the terminal has, gives the + value "80" for ansi. Values for numeric capabilities may be specified + in decimal, octal or hexadecimal, using the C programming language + conventions (e.g., 255, 0377 and 0xff or 0xFF). + + Finally, string valued capabilities, such as <STRONG>el</STRONG> (clear to end of line + sequence) are given by the two-character code, an "=", and then a + string ending at the next following ",". + + A number of escape sequences are provided in the string valued + capabilities for easy encoding of characters there: + + <STRONG>o</STRONG> Both <STRONG>\E</STRONG> and <STRONG>\e</STRONG> map to an ESCAPE character, + + <STRONG>o</STRONG> <STRONG>^x</STRONG> maps to a control-x for any appropriate <EM>x</EM>, and + + <STRONG>o</STRONG> the sequences + + <STRONG>\n</STRONG>, <STRONG>\l</STRONG>, <STRONG>\r</STRONG>, <STRONG>\t</STRONG>, <STRONG>\b</STRONG>, <STRONG>\f</STRONG>, and <STRONG>\s</STRONG> + + produce + + <EM>newline</EM>, <EM>line-feed</EM>, <EM>return</EM>, <EM>tab</EM>, <EM>backspace</EM>, <EM>form-feed</EM>, and <EM>space</EM>, + + respectively. + + X/Open Curses does not say what "appropriate <EM>x</EM>" 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, mapping to ASCII control codes in the range 0 through + 31. + + Other escapes include + + <STRONG>o</STRONG> <STRONG>\^</STRONG> for <STRONG>^</STRONG>, + + <STRONG>o</STRONG> <STRONG>\\</STRONG> for <STRONG>\</STRONG>, + + <STRONG>o</STRONG> <STRONG>\</STRONG>, for comma, + + <STRONG>o</STRONG> <STRONG>\:</STRONG> for <STRONG>:</STRONG>, + + <STRONG>o</STRONG> and <STRONG>\0</STRONG> for null. + + <STRONG>\0</STRONG> will produce \200, which does not terminate a string but behaves + as a null character on most terminals, providing CS7 is specified. + See <STRONG>stty(1)</STRONG>. + + The reason for this quirk is to maintain binary compatibility of + the compiled terminfo files with other implementations, e.g., the + SVr4 systems, which document this. Compiled terminfo files use + null-terminated strings, with no lengths. Modifying this would + require a new binary format, which would not work with other + implementations. + + Finally, characters may be given as three octal digits after a <STRONG>\</STRONG>. + + A delay in milliseconds may appear anywhere in a string capability, + enclosed in $&lt;..&gt; brackets, as in <STRONG>el</STRONG>=\EK$&lt;5&gt;, and padding characters + are supplied by <STRONG><A HREF="curs_terminfo.3x.html">tputs(3x)</A></STRONG> to provide this delay. + + <STRONG>o</STRONG> The delay must be a number with at most one decimal place of + precision; it may be followed by suffixes "*" or "/" or both. + + <STRONG>o</STRONG> A "*" indicates that the padding required is proportional to the + number of lines affected by the operation, and the amount given is + the per-affected-unit padding required. (In the case of insert + character, the factor is still the number of <EM>lines</EM> affected.) + + Normally, padding is advisory if the device has the <STRONG>xon</STRONG> capability; + it is used for cost computation but does not trigger delays. + + <STRONG>o</STRONG> A "/" suffix indicates that the padding is mandatory and forces a + delay of the given number of milliseconds even on devices for which + <STRONG>xon</STRONG> is present to indicate flow control. + + Sometimes individual capabilities must be commented out. To do this, + put a period before the capability name. For example, see the second + <STRONG>ind</STRONG> in the example above. + + +</PRE><H3><a name="h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></H3><PRE> + The <STRONG>ncurses</STRONG> library searches for terminal descriptions in several + places. It uses only the first description found. The library has a + compiled-in list of places to search which can be overridden by + environment variables. Before starting to search, <STRONG>ncurses</STRONG> eliminates + duplicates in its search list. + + <STRONG>o</STRONG> If the environment variable TERMINFO is set, it is interpreted as + the pathname of a directory containing the compiled description you + are working on. Only that directory is searched. + + <STRONG>o</STRONG> If TERMINFO is not set, <STRONG>ncurses</STRONG> will instead look in the directory + <STRONG>$HOME/.terminfo</STRONG> for a compiled description. + + <STRONG>o</STRONG> Next, if the environment variable TERMINFO_DIRS is set, <STRONG>ncurses</STRONG> + will interpret the contents of that variable as a list of colon- + separated directories (or database files) to be searched. + + An empty directory name (i.e., if the variable begins or ends with + a colon, or contains adjacent colons) is interpreted as the system + location <EM>/usr/share/terminfo</EM>. + + <STRONG>o</STRONG> Finally, <STRONG>ncurses</STRONG> searches these compiled-in locations: + + <STRONG>o</STRONG> a list of directories (no default value), and + + <STRONG>o</STRONG> the system terminfo directory, <EM>/usr/share/terminfo</EM> (the + compiled-in default). + + +</PRE><H3><a name="h3-Preparing-Descriptions">Preparing Descriptions</a></H3><PRE> + We now outline how to prepare descriptions of terminals. The most + effective way to prepare a terminal description is by imitating the + description of a similar terminal in <EM>terminfo</EM> and to build up a + description gradually, using partial descriptions with <EM>vi</EM> or some other + screen-oriented program to check that they are correct. Be aware that + a very unusual terminal may expose deficiencies in the ability of the + <EM>terminfo</EM> file to describe it or bugs in the screen-handling code of the + test program. + + To get the padding for insert line right (if the terminal manufacturer + did not document it) a severe test is to edit a large file at 9600 + baud, delete 16 or so lines from the middle of the screen, then hit the + "u" key several times quickly. If the terminal messes up, more padding + is usually needed. A similar test can be used for insert character. + + +</PRE><H3><a name="h3-Basic-Capabilities">Basic Capabilities</a></H3><PRE> + The number of columns on each line for the terminal is given by the + <STRONG>cols</STRONG> numeric capability. If the terminal is a CRT, then the number of + lines on the screen is given by the <STRONG>lines</STRONG> capability. If the terminal + wraps around to the beginning of the next line when it reaches the + right margin, then it should have the <STRONG>am</STRONG> capability. If the terminal + can clear its screen, leaving the cursor in the home position, then + this is given by the <STRONG>clear</STRONG> string capability. If the terminal + overstrikes (rather than clearing a position when a character is struck + over) then it should have the <STRONG>os</STRONG> capability. If the terminal is a + printing terminal, with no soft copy unit, give it both <STRONG>hc</STRONG> and <STRONG>os</STRONG>. (<STRONG>os</STRONG> + applies to storage scope terminals, such as TEKTRONIX 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 <STRONG>cr</STRONG>. (Normally + this will be carriage return, control/M.) If there is a code to + produce an audible signal (bell, beep, etc) give this as <STRONG>bel</STRONG>. + + If there is a code to move the cursor one position to the left (such as + backspace) that capability should be given as <STRONG>cub1</STRONG>. Similarly, codes + to move to the right, up, and down should be given as <STRONG>cuf1</STRONG>, <STRONG>cuu1</STRONG>, and + <STRONG>cud1</STRONG>. These local cursor motions should not alter the text they pass + over, for example, you would not normally use "<STRONG>cuf1</STRONG>= " because the + space would erase the character moved over. + + A very important point here is that the local cursor motions encoded in + <EM>terminfo</EM> are undefined at the left and top edges of a CRT terminal. + Programs should never attempt to backspace around the left edge, unless + <STRONG>bw</STRONG> is given, and never attempt to go up locally off the top. In order + to scroll text up, a program will go to the bottom left corner of the + screen and send the <STRONG>ind</STRONG> (index) string. + + To scroll text down, a program goes to the top left corner of the + screen and sends the <STRONG>ri</STRONG> (reverse index) string. The strings <STRONG>ind</STRONG> and <STRONG>ri</STRONG> + are undefined when not on their respective corners of the screen. + + Parameterized versions of the scrolling sequences are <STRONG>indn</STRONG> and <STRONG>rin</STRONG> + which have the same semantics as <STRONG>ind</STRONG> and <STRONG>ri</STRONG> except that they take one + parameter, and scroll that many lines. They are also undefined except + at the appropriate edge of the screen. + + The <STRONG>am</STRONG> capability tells whether the cursor sticks at the right edge of + the screen when text is output, but this does not necessarily apply to + a <STRONG>cuf1</STRONG> from the last column. The only local motion which is defined + from the left edge is if <STRONG>bw</STRONG> is given, then a <STRONG>cub1</STRONG> from the left edge + will move to the right edge of the previous row. If <STRONG>bw</STRONG> is not given, + the effect is undefined. This is useful for drawing a box around the + edge of the screen, for example. If the terminal has switch selectable + automatic margins, the <EM>terminfo</EM> file usually assumes that this is on; + i.e., <STRONG>am</STRONG>. If the terminal has a command which moves to the first + column of the next line, that command can be given as <STRONG>nel</STRONG> (newline). + It does not matter if the command clears the remainder of the current + line, so if the terminal has no <STRONG>cr</STRONG> and <STRONG>lf</STRONG> it may still be possible to + craft a working <STRONG>nel</STRONG> out of one or both of them. + + These capabilities suffice to describe hard-copy and "glass-tty" + terminals. Thus the model 33 teletype is described as + + 33|tty33|tty|model 33 teletype, + bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os, + + while the Lear Siegler ADM-3 is described as + + adm3|3|lsi adm3, + am, bel=^G, clear=^Z, cols#80, cr=^M, cub1=^H, cud1=^J, + ind=^J, lines#24, + + +</PRE><H3><a name="h3-Parameterized-Strings">Parameterized Strings</a></H3><PRE> + Cursor addressing and other strings requiring parameters in the + terminal are described by a parameterized string capability, with + <EM>printf</EM>-like escapes such as <EM>%x</EM> in it. For example, to address the + cursor, the <STRONG>cup</STRONG> capability is given, using two parameters: the row and + column to address to. (Rows 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 <STRONG>mrcup</STRONG>. + + The parameter mechanism uses a stack and special <STRONG>%</STRONG> codes to manipulate + it. Typically a sequence will push one of the parameters onto the + stack and then print it in some format. Print (e.g., "%d") is a + special case. Other operations, including "%t" pop their operand from + the stack. It is noted that more complex operations are often + necessary, e.g., in the <STRONG>sgr</STRONG> string. + + The <STRONG>%</STRONG> encodings have the following meanings: + + <STRONG>%%</STRONG> outputs "%" + + <STRONG>%</STRONG><EM>[[</EM>:<EM>]flags][width[.precision]][</EM><STRONG>doxXs</STRONG><EM>]</EM> + as in <STRONG>printf(3)</STRONG>, flags are <EM>[-+#]</EM> and <EM>space</EM>. Use a ":" to allow + the next character to be a "-" flag, avoiding interpreting "%-" as + an operator. + + %c print <EM>pop()</EM> like %c in <STRONG>printf</STRONG> + + <STRONG>%s</STRONG> print <EM>pop()</EM> like %s in <STRONG>printf</STRONG> + + <STRONG>%p</STRONG><EM>[1-9]</EM> + push <EM>i</EM>'th parameter + + <STRONG>%P</STRONG><EM>[a-z]</EM> + set dynamic variable <EM>[a-z]</EM> to <EM>pop()</EM> + + <STRONG>%g</STRONG><EM>[a-z]/</EM> + get dynamic variable <EM>[a-z]</EM> and push it + + <STRONG>%P</STRONG><EM>[A-Z]</EM> + set static variable <EM>[a-z]</EM> to <EM>pop()</EM> + + <STRONG>%g</STRONG><EM>[A-Z]</EM> + get static variable <EM>[a-z]</EM> and push it + + The terms "static" and "dynamic" are misleading. Historically, + these are simply two different sets of variables, whose values are + not reset between calls to <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>. However, that fact is not + documented in other implementations. Relying on it will adversely + impact portability to other implementations: + + <STRONG>o</STRONG> SVr2 curses supported <EM>dynamic</EM> variables. Those are set only + by a <STRONG>%P</STRONG> operator. A <STRONG>%g</STRONG> for a given variable without first + setting it with <STRONG>%P</STRONG> will give unpredictable results, because + dynamic variables are an uninitialized local array on the + stack in the <STRONG>tparm</STRONG> function. + + <STRONG>o</STRONG> SVr3.2 curses supported <EM>static</EM> variables. Those are an array + in the <STRONG>TERMINAL</STRONG> structure (declared in <STRONG>term.h</STRONG>), and are zeroed + automatically when the <STRONG>setupterm</STRONG> function allocates the data. + + <STRONG>o</STRONG> SVr4 curses made no further improvements to the <EM>dynamic/static</EM> + variable feature. + + <STRONG>o</STRONG> Solaris XPG4 curses does not distinguish between <EM>dynamic</EM> and + <EM>static</EM> variables. They are the same. Like SVr4 curses, XPG4 + curses does not initialize these explicitly. + + <STRONG>o</STRONG> Before version 6.3, ncurses stores both <EM>dynamic</EM> and <EM>static</EM> + variables in persistent storage, initialized to zeros. + + <STRONG>o</STRONG> Beginning with version 6.3, ncurses stores <EM>static</EM> and <EM>dynamic</EM> + variables in the same manner as SVr4. Unlike other + implementations, ncurses zeros dynamic variables before the + first <STRONG>%g</STRONG> or <STRONG>%P</STRONG> operator. + + <STRONG>%'</STRONG><EM>c</EM><STRONG>'</STRONG> char constant <EM>c</EM> + + <STRONG>%{</STRONG><EM>nn</EM><STRONG>}</STRONG> + integer constant <EM>nn</EM> + + <STRONG>%l</STRONG> push strlen(pop) + + <STRONG>%+</STRONG>, <STRONG>%-</STRONG>, <STRONG>%*</STRONG>, <STRONG>%/</STRONG>, <STRONG>%m</STRONG> + arithmetic (%m is <EM>mod</EM>): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM> + + <STRONG>%&amp;</STRONG>, <STRONG>%|</STRONG>, <STRONG>%^</STRONG> + bit operations (AND, OR and exclusive-OR): <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM> + + <STRONG>%=</STRONG>, <STRONG>%&gt;</STRONG>, <STRONG>%&lt;</STRONG> + logical operations: <EM>push(pop()</EM> <EM>op</EM> <EM>pop())</EM> + + <STRONG>%A</STRONG>, <STRONG>%O</STRONG> + logical AND and OR operations (for conditionals) + + <STRONG>%!</STRONG>, <STRONG>%~</STRONG> + unary operations (logical and bit complement): <EM>push(op</EM> <EM>pop())</EM> + + <STRONG>%i</STRONG> add 1 to first two parameters (for ANSI terminals) + + <STRONG>%?</STRONG> <EM>expr</EM> <STRONG>%t</STRONG> <EM>thenpart</EM> <STRONG>%e</STRONG> <EM>elsepart</EM> <STRONG>%;</STRONG> + This forms an if-then-else. The <STRONG>%e</STRONG> <EM>elsepart</EM> is optional. Usually + the <STRONG>%?</STRONG> <EM>expr</EM> part pushes a value onto the stack, and <STRONG>%t</STRONG> pops it + from the stack, testing if it is nonzero (true). If it is zero + (false), control passes to the <STRONG>%e</STRONG> (else) part. + + It is possible to form else-if's a la Algol 68: + <STRONG>%?</STRONG> c1 <STRONG>%t</STRONG> b1 <STRONG>%e</STRONG> c2 <STRONG>%t</STRONG> b2 <STRONG>%e</STRONG> c3 <STRONG>%t</STRONG> b3 <STRONG>%e</STRONG> c4 <STRONG>%t</STRONG> b4 <STRONG>%e</STRONG> <STRONG>%;</STRONG> + + where ci are conditions, bi are bodies. + + Use the <STRONG>-f</STRONG> option of <STRONG>tic</STRONG> or <STRONG>infocmp</STRONG> to see the structure of if- + then-else's. Some strings, e.g., <STRONG>sgr</STRONG> can be very complicated when + written on one line. The <STRONG>-f</STRONG> option splits the string into lines + with the parts indented. + + Binary operations are in postfix form with the operands in the usual + order. That is, to get x-5 one would use "%gx%{5}%-". <STRONG>%P</STRONG> and <STRONG>%g</STRONG> + variables are persistent across escape-string evaluations. + + Consider the HP2645, which, to get to row 3 and column 12, needs to be + sent \E&amp;a12c03Y padded for 6 milliseconds. Note that the order of the + rows and columns is inverted here, and that the row and column are + printed as two digits. Thus its <STRONG>cup</STRONG> capability is + "cup=6\E&amp;%p2%2dc%p1%2dY". + + The Microterm ACT-IV needs the current row and column sent preceded by + a <STRONG>^T</STRONG>, with the row and column simply encoded in binary, + "cup=^T%p1%c%p2%c". Terminals which use "%c" need to be able to + backspace the cursor (<STRONG>cub1</STRONG>), and to move the cursor up one line on the + screen (<STRONG>cuu1</STRONG>). This is necessary because it is not always safe to + transmit <STRONG>\n</STRONG> <STRONG>^D</STRONG> and <STRONG>\r</STRONG>, as the system may change or discard them. (The + library routines dealing with terminfo set tty modes so that tabs are + never expanded, so \t is safe to send. This turns out to be essential + for the Ann Arbor 4080.) + + A final example is the LSI ADM-3a, which uses row and column offset by + a blank character, thus "cup=\E=%p1%' '%+%c%p2%' '%+%c". After sending + "\E=", this pushes the first parameter, pushes the ASCII value for a + space (32), adds them (pushing the sum on the stack in place of the two + previous values) and outputs that value as a character. Then the same + is done for the second parameter. More complex arithmetic is possible + using the stack. + + +</PRE><H3><a name="h3-Cursor-Motions">Cursor Motions</a></H3><PRE> + If the terminal has a fast way to home the cursor (to very upper left + corner of screen) then this can be given as <STRONG>home</STRONG>; similarly a fast way + of getting to the lower left-hand corner can be given as <STRONG>ll</STRONG>; this may + involve going up with <STRONG>cuu1</STRONG> from the home position, but a program should + never do this itself (unless <STRONG>ll</STRONG> does) because it can make no assumption + about the effect of moving up from the home position. Note that the + home position is the same as addressing to (0,0): to the top left + corner of the screen, not of memory. (Thus, the \EH sequence on HP + terminals cannot be used for <STRONG>home</STRONG>.) + + If the terminal has row or column absolute cursor addressing, these can + be given as single parameter capabilities <STRONG>hpa</STRONG> (horizontal position + absolute) and <STRONG>vpa</STRONG> (vertical position absolute). Sometimes these are + shorter than the more general two parameter sequence (as with the + hp2645) and can be used in preference to <STRONG>cup</STRONG>. If there are + parameterized local motions (e.g., move <EM>n</EM> spaces to the right) these + can be given as <STRONG>cud</STRONG>, <STRONG>cub</STRONG>, <STRONG>cuf</STRONG>, and <STRONG>cuu</STRONG> with a single parameter + indicating how many spaces to move. These are primarily useful if the + terminal does not have <STRONG>cup</STRONG>, such as the TEKTRONIX 4025. + + If the terminal needs to be in a special mode when running a program + that uses these capabilities, the codes to enter and exit this mode can + be given as <STRONG>smcup</STRONG> and <STRONG>rmcup</STRONG>. This arises, for example, from terminals + like the Concept with more than one page of memory. If the terminal + has only memory relative cursor addressing and not screen relative + cursor addressing, a one screen-sized window must be fixed into the + terminal for cursor addressing to work properly. This is also used for + the TEKTRONIX 4025, where <STRONG>smcup</STRONG> sets the command character to be the + one used by terminfo. If the <STRONG>smcup</STRONG> sequence will not restore the + screen after an <STRONG>rmcup</STRONG> sequence is output (to the state prior to + outputting <STRONG>rmcup</STRONG>), specify <STRONG>nrrmc</STRONG>. + + +</PRE><H3><a name="h3-Margins">Margins</a></H3><PRE> + SVr4 (and X/Open Curses) list several string capabilities for setting + margins. Two were intended for use with terminals, and another six + were intended for use with printers. + + <STRONG>o</STRONG> The two terminal capabilities assume that the terminal may have the + capability of setting the left and/or right margin at the current + cursor column position. + + <STRONG>o</STRONG> The printer capabilities assume that the printer may have two types + of capability: + + <STRONG>o</STRONG> the ability to set a top and/or bottom margin using the current + line position, and + + <STRONG>o</STRONG> parameterized capabilities for setting the top, bottom, left, + right margins given the number of rows or columns. + + In practice, the categorization into "terminal" and "printer" is not + suitable: + + <STRONG>o</STRONG> The AT&amp;T SVr4 terminal database uses <STRONG>smgl</STRONG> four times, for AT&amp;T + hardware. + + Three of the four are printers. They lack the ability to set + left/right margins by specifying the column. + + <STRONG>o</STRONG> Other (non-AT&amp;T) terminals may support margins but using different + assumptions from AT&amp;T. + + For instance, the DEC VT420 supports left/right margins, but only + using a column parameter. As an added complication, the VT420 uses + two settings to fully enable left/right margins (left/right margin + mode, and origin mode). The former enables the margins, which + causes printed text to wrap within margins, but the latter is + needed to prevent cursor-addressing outside those margins. + + <STRONG>o</STRONG> Both DEC VT420 left/right margins are set with a single control + sequence. If either is omitted, the corresponding margin is set to + the left or right edge of the display (rather than leaving the + margin unmodified). + + These are the margin-related capabilities: + + <STRONG>Name</STRONG> <STRONG>Description</STRONG> + ------------------------------------------------------ + smgl Set left margin at current column + smgr Set right margin at current column + smgb Set bottom margin at current line + smgt Set top margin at current line + smgbp Set bottom margin at line <EM>N</EM> + smglp Set left margin at column <EM>N</EM> + smgrp Set right margin at column <EM>N</EM> + smgtp Set top margin at line <EM>N</EM> + smglr Set both left and right margins to <EM>L</EM> and <EM>R</EM> + smgtb Set both top and bottom margins to <EM>T</EM> and <EM>B</EM> + + When writing an application that uses these string capabilities, the + pairs should be first checked to see if each capability in the pair is + set or only one is set: + + <STRONG>o</STRONG> If both <STRONG>smglp</STRONG> and <STRONG>smgrp</STRONG> are set, each is used with a single + argument, <EM>N</EM>, that gives the column number of the left and right + margin, respectively. + + <STRONG>o</STRONG> If both <STRONG>smgtp</STRONG> and <STRONG>smgbp</STRONG> are set, each is used to set the top and + bottom margin, respectively: + + <STRONG>o</STRONG> <STRONG>smgtp</STRONG> is used with a single argument, <EM>N</EM>, the line number of the + top margin. + + <STRONG>o</STRONG> <STRONG>smgbp</STRONG> is used with two arguments, <EM>N</EM> and <EM>M</EM>, that give the line + number of the bottom margin, the first counting from the top of + the page and the second counting from the bottom. This + accommodates the two styles of specifying the bottom margin in + different manufacturers' printers. + + When designing a terminfo entry for a printer that has a settable + bottom margin, only the first or second argument should be used, + depending on the printer. When developing an application that uses + <STRONG>smgbp</STRONG> to set the bottom margin, both arguments must be given. + + Conversely, when only one capability in the pair is set: + + <STRONG>o</STRONG> If only one of <STRONG>smglp</STRONG> and <STRONG>smgrp</STRONG> is set, then it is used with two + arguments, the column number of the left and right margins, in that + order. + + <STRONG>o</STRONG> Likewise, if only one of <STRONG>smgtp</STRONG> and <STRONG>smgbp</STRONG> is set, then it is used + with two arguments that give the top and bottom margins, in that + order, counting from the top of the page. + + When designing a terminfo entry for a printer that requires setting + both left and right or top and bottom margins simultaneously, only + one capability in the pairs <STRONG>smglp</STRONG> and <STRONG>smgrp</STRONG> or <STRONG>smgtp</STRONG> and <STRONG>smgbp</STRONG> + should be defined, leaving the other unset. + + Except for very old terminal descriptions, e.g., those developed for + SVr4, the scheme just described should be considered obsolete. An + improved set of capabilities was added late in the SVr4 releases (<STRONG>smglr</STRONG> + and <STRONG>smgtb</STRONG>), which explicitly use two parameters for setting the + left/right or top/bottom margins. + + When setting margins, the line- and column-values are zero-based. + + The <STRONG>mgc</STRONG> string capability should be defined. Applications such as + <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG> rely upon this to reset all margins. + + +</PRE><H3><a name="h3-Area-Clears">Area Clears</a></H3><PRE> + If the terminal can clear from the current position to the end of the + line, leaving the cursor where it is, this should be given as <STRONG>el</STRONG>. If + the terminal can clear from the beginning of the line to the current + position inclusive, leaving the cursor where it is, this should be + given as <STRONG>el1</STRONG>. If the terminal can clear from the current position to + the end of the display, then this should be given as <STRONG>ed</STRONG>. <STRONG>Ed</STRONG> is only + defined from the first column of a line. (Thus, it can be simulated by + a request to delete a large number of lines, if a true <STRONG>ed</STRONG> is not + available.) + + +</PRE><H3><a name="h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></H3><PRE> + If the terminal can open a new blank line before the line where the + cursor is, this should be given as <STRONG>il1</STRONG>; this is done only from the + first position of a line. The cursor must then appear on the newly + blank line. If the terminal can delete the line which the cursor is + on, then this should be given as <STRONG>dl1</STRONG>; this is done only from the first + position on the line to be deleted. Versions of <STRONG>il1</STRONG> and <STRONG>dl1</STRONG> which take + a single parameter and insert or delete that many lines can be given as + <STRONG>il</STRONG> and <STRONG>dl</STRONG>. + + If the terminal has a settable scrolling region (like the vt100) the + command to set this can be described with the <STRONG>csr</STRONG> capability, which + takes two parameters: the top and bottom lines of the scrolling region. + The cursor position is, alas, undefined after using this command. + + It is possible to get the effect of insert or delete line using <STRONG>csr</STRONG> on + a properly chosen region; the <STRONG>sc</STRONG> and <STRONG>rc</STRONG> (save and restore cursor) + commands may be useful for ensuring that your synthesized insert/delete + string does not move the cursor. (Note that the <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG> library + does this synthesis automatically, so you need not compose + insert/delete strings for an entry with <STRONG>csr</STRONG>). + + Yet another way to construct insert and delete might be to use a + combination of index with the memory-lock feature found on some + terminals (like the HP-700/90 series, which however also has + insert/delete). + + Inserting lines at the top or bottom of the screen can also be done + using <STRONG>ri</STRONG> or <STRONG>ind</STRONG> on many terminals without a true insert/delete line, + and is often faster even on terminals with those features. + + The boolean <STRONG>non_dest_scroll_region</STRONG> should be set if each scrolling + window is effectively a view port on a screen-sized canvas. To test + for this capability, create a scrolling region in the middle of the + screen, write something to the bottom line, move the cursor to the top + of the region, and do <STRONG>ri</STRONG> followed by <STRONG>dl1</STRONG> or <STRONG>ind</STRONG>. If the data scrolled + off the bottom of the region by the <STRONG>ri</STRONG> re-appears, then scrolling is + non-destructive. System V and XSI Curses expect that <STRONG>ind</STRONG>, <STRONG>ri</STRONG>, <STRONG>indn</STRONG>, + and <STRONG>rin</STRONG> will simulate destructive scrolling; their documentation + cautions you not to define <STRONG>csr</STRONG> unless this is true. This <STRONG>curses</STRONG> + implementation is more liberal and will do explicit erases after + scrolling if <STRONG>ndsrc</STRONG> is defined. + + If the terminal has the ability to define a window as part of memory, + which all commands affect, it should be given as the parameterized + string <STRONG>wind</STRONG>. The four parameters are the starting and ending lines in + memory and the starting and ending columns in memory, in that order. + + If the terminal can retain display memory above, then the <STRONG>da</STRONG> capability + should be given; if display memory can be retained below, then <STRONG>db</STRONG> + should be given. These indicate that deleting a line or scrolling may + bring non-blank lines up from below or that scrolling back with <STRONG>ri</STRONG> may + bring down non-blank lines. + + +</PRE><H3><a name="h3-Insert_Delete-Character">Insert/Delete Character</a></H3><PRE> + There are two basic kinds of intelligent terminals with respect to + insert/delete character which can be described using <EM>terminfo.</EM> The + most common insert/delete character operations affect only the + characters on the current line and shift characters off the end of the + line rigidly. Other terminals, such as the Concept 100 and the Perkin + Elmer Owl, make a distinction between typed and untyped blanks on the + screen, shifting upon an insert or delete only to an untyped blank on + the screen which is either eliminated, or expanded to two untyped + blanks. + + You can determine the kind of terminal you have by clearing the screen + and then typing text separated by cursor motions. Type "abc def" + using local cursor motions (not spaces) between the "abc" and the + "def". Then position the cursor before the "abc" and put the terminal + in insert mode. If typing characters causes the rest of the line to + shift rigidly and characters to fall off the end, then your terminal + does not distinguish between blanks and untyped positions. If the + "abc" shifts over to the "def" which then move together around the end + of the current line and onto the next as you insert, you have the + second type of terminal, and should give the capability <STRONG>in</STRONG>, which + stands for "insert null". + + While these are two logically separate attributes (one line versus + multi-line insert mode, and special treatment of untyped spaces) we + have seen no terminals whose insert mode cannot be described with the + single attribute. + + Terminfo can describe both terminals which have an insert mode, and + terminals which send a simple sequence to open a blank position on the + current line. Give as <STRONG>smir</STRONG> the sequence to get into insert mode. Give + as <STRONG>rmir</STRONG> the sequence to leave insert mode. Now give as <STRONG>ich1</STRONG> any + sequence needed to be sent just before sending the character to be + inserted. Most terminals with a true insert mode will not give <STRONG>ich1</STRONG>; + terminals which send a sequence to open a screen position should give + it here. + + If your terminal has both, insert mode is usually preferable to <STRONG>ich1</STRONG>. + Technically, you should not give both unless the terminal actually + requires both to be used in combination. Accordingly, some non-curses + applications get confused if both are present; the symptom is doubled + characters in an update using insert. This requirement is now rare; + most <STRONG>ich</STRONG> sequences do not require previous smir, and most smir insert + modes do not require <STRONG>ich1</STRONG> before each character. Therefore, the new + <STRONG>curses</STRONG> actually assumes this is the case and uses either <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> or + <STRONG>ich</STRONG>/<STRONG>ich1</STRONG> as appropriate (but not both). If you have to write an entry + to be used under new curses for a terminal old enough to need both, + include the <STRONG>rmir</STRONG>/<STRONG>smir</STRONG> sequences in <STRONG>ich1</STRONG>. + + If post insert padding is needed, give this as a number of milliseconds + in <STRONG>ip</STRONG> (a string option). Any other sequence which may need to be sent + after an insert of a single character may also be given in <STRONG>ip</STRONG>. If your + terminal needs both to be placed into an "insert mode" and a special + code to precede each inserted character, then both <STRONG>smir</STRONG>/<STRONG>rmir</STRONG> and <STRONG>ich1</STRONG> + can be given, and both will be used. The <STRONG>ich</STRONG> capability, with one + parameter, <EM>n</EM>, will repeat the effects of <STRONG>ich1</STRONG> <EM>n</EM> times. + + If padding is necessary between characters typed while not in insert + mode, give this as a number of milliseconds padding in <STRONG>rmp</STRONG>. + + It is occasionally necessary to move around while in insert mode to + delete characters on the same line (e.g., if there is a tab after the + insertion position). If your terminal allows motion while in insert + mode you can give the capability <STRONG>mir</STRONG> to speed up inserting in this + case. Omitting <STRONG>mir</STRONG> will affect only speed. Some terminals (notably + Datamedia's) must not have <STRONG>mir</STRONG> because of the way their insert mode + works. + + Finally, you can specify <STRONG>dch1</STRONG> to delete a single character, <STRONG>dch</STRONG> with + one parameter, <EM>n</EM>, to delete <EM>n</EM> <EM>characters,</EM> and delete mode by giving + <STRONG>smdc</STRONG> and <STRONG>rmdc</STRONG> to enter and exit delete mode (any mode the terminal + needs to be placed in for <STRONG>dch1</STRONG> to work). + + A command to erase <EM>n</EM> characters (equivalent to outputting <EM>n</EM> blanks + without moving the cursor) can be given as <STRONG>ech</STRONG> with one parameter. + + +</PRE><H3><a name="h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></H3><PRE> + If your terminal has one or more kinds of display attributes, these can + be represented in a number of different ways. You should choose one + display form as <EM>standout</EM> <EM>mode</EM>, representing a good, high contrast, + easy-on-the-eyes, format for highlighting error messages and other + attention getters. (If you have a choice, reverse video plus half- + bright is good, or reverse video alone.) The sequences to enter and + exit standout mode are given as <STRONG>smso</STRONG> and <STRONG>rmso</STRONG>, respectively. If the + code to change into or out of standout mode leaves one or even two + blank spaces on the screen, as the TVI 912 and Teleray 1061 do, then + <STRONG>xmc</STRONG> should be given to tell how many spaces are left. + + Codes to begin underlining and end underlining can be given as <STRONG>smul</STRONG> and + <STRONG>rmul</STRONG> respectively. If the terminal has a code to underline the current + character and move the cursor one space to the right, such as the + Microterm Mime, this can be given as <STRONG>uc</STRONG>. + + Other capabilities to enter various highlighting modes include <STRONG>blink</STRONG> + (blinking) <STRONG>bold</STRONG> (bold or extra bright) <STRONG>dim</STRONG> (dim or half-bright) <STRONG>invis</STRONG> + (blanking or invisible text) <STRONG>prot</STRONG> (protected) <STRONG>rev</STRONG> (reverse video) <STRONG>sgr0</STRONG> + (turn off <EM>all</EM> attribute modes) <STRONG>smacs</STRONG> (enter alternate character set + mode) and <STRONG>rmacs</STRONG> (exit alternate character set mode). Turning on any of + these modes singly may or may not turn off other modes. + + If there is a sequence to set arbitrary combinations of modes, this + should be given as <STRONG>sgr</STRONG> (set attributes), taking 9 parameters. Each + parameter is either 0 or nonzero, as the corresponding attribute is on + or off. The 9 parameters are, in order: standout, underline, reverse, + blink, dim, bold, blank, protect, alternate character set. Not all + modes need be supported by <STRONG>sgr</STRONG>, only those for which corresponding + separate attribute commands exist. + + For example, the DEC vt220 supports most of the modes: + + <STRONG>tparm</STRONG> <STRONG>parameter</STRONG> <STRONG>attribute</STRONG> <STRONG>escape</STRONG> <STRONG>sequence</STRONG> + + none none \E[0m + p1 standout \E[0;1;7m + p2 underline \E[0;4m + p3 reverse \E[0;7m + p4 blink \E[0;5m + p5 dim not available + p6 bold \E[0;1m + p7 invis \E[0;8m + p8 protect not used + p9 altcharset ^O (off) ^N (on) + + We begin each escape sequence by turning off any existing modes, since + there is no quick way to determine whether they are active. Standout + is set up to be the combination of reverse and bold. The vt220 + terminal has a protect mode, though it is not commonly used in sgr + because it protects characters on the screen from the host's erasures. + The altcharset mode also is different in that it is either ^O or ^N, + depending on whether it is off or on. If all modes are turned on, the + resulting sequence is \E[0;1;4;5;7;8m^N. + + Some sequences are common to different modes. For example, ;7 is + output when either p1 or p3 is true, that is, if either standout or + reverse modes are turned on. + + Writing out the above sequences, along with their dependencies yields + + <STRONG>sequence</STRONG> <STRONG>when</STRONG> <STRONG>to</STRONG> <STRONG>output</STRONG> <STRONG>terminfo</STRONG> <STRONG>translation</STRONG> + + \E[0 always \E[0 + ;1 if p1 or p6 %?%p1%p6%|%t;1%; + ;4 if p2 %?%p2%|%t;4%; + ;5 if p4 %?%p4%|%t;5%; + ;7 if p1 or p3 %?%p1%p3%|%t;7%; + ;8 if p7 %?%p7%|%t;8%; + m always m + ^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%; + + Putting this all together into the sgr sequence gives: + + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%; + %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, + + Remember that if you specify sgr, you must also specify sgr0. Also, + some implementations rely on sgr being given if sgr0 is, Not all + terminfo entries necessarily have an sgr string, however. Many + terminfo entries are derived from termcap entries which have no sgr + string. The only drawback to adding an sgr string is that termcap also + assumes that sgr0 does not exit alternate character set mode. + + Terminals with the "magic cookie" glitch (<STRONG>xmc</STRONG>) deposit special + "cookies" when they receive mode-setting sequences, which affect the + display algorithm rather than having extra bits for each character. + Some terminals, such as the HP 2621, automatically leave standout mode + when they move to a new line or the cursor is addressed. Programs + using standout mode should exit standout mode before moving the cursor + or sending a newline, unless the <STRONG>msgr</STRONG> capability, asserting that it is + safe to move in standout mode, is present. + + If the terminal has a way of flashing the screen to indicate an error + quietly (a bell replacement) then this can be given as <STRONG>flash</STRONG>; it must + not move the cursor. + + If the cursor needs to be made more visible than normal when it is not + on the bottom line (to make, for example, a non-blinking underline into + an easier to find block or blinking underline) give this sequence as + <STRONG>cvvis</STRONG>. If there is a way to make the cursor completely invisible, give + that as <STRONG>civis</STRONG>. The capability <STRONG>cnorm</STRONG> should be given which undoes the + effects of both of these modes. + + If your terminal correctly generates underlined characters (with no + special codes needed) even though it does not overstrike, then you + should give the capability <STRONG>ul</STRONG>. If a character overstriking another + leaves both characters on the screen, specify the capability <STRONG>os</STRONG>. If + overstrikes are erasable with a blank, then this should be indicated by + giving <STRONG>eo</STRONG>. + + +</PRE><H3><a name="h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></H3><PRE> + If the terminal has a keypad that transmits codes when the keys are + pressed, this information can be given. Note that it is not possible + to handle terminals where the keypad only works in local (this applies, + for example, to the unshifted HP 2621 keys). If the keypad can be set + to transmit or not transmit, give these codes as <STRONG>smkx</STRONG> and <STRONG>rmkx</STRONG>. + Otherwise the keypad is assumed to always transmit. + + The codes sent by the left arrow, right arrow, up arrow, down arrow, + and home keys can be given as <STRONG>kcub1,</STRONG> <STRONG>kcuf1,</STRONG> <STRONG>kcuu1,</STRONG> <STRONG>kcud1,</STRONG> and <STRONG>khome</STRONG> + respectively. If there are function keys such as f0, f1, ..., f10, the + codes they send can be given as <STRONG>kf0,</STRONG> <STRONG>kf1,</STRONG> <STRONG>...,</STRONG> <STRONG>kf10</STRONG>. If these keys + have labels other than the default f0 through f10, the labels can be + given as <STRONG>lf0,</STRONG> <STRONG>lf1,</STRONG> <STRONG>...,</STRONG> <STRONG>lf10</STRONG>. + + The codes transmitted by certain other special keys can be given: + + <STRONG>o</STRONG> <STRONG>kll</STRONG> (home down), + + <STRONG>o</STRONG> <STRONG>kbs</STRONG> (backspace), + + <STRONG>o</STRONG> <STRONG>ktbc</STRONG> (clear all tabs), + + <STRONG>o</STRONG> <STRONG>kctab</STRONG> (clear the tab stop in this column), + + <STRONG>o</STRONG> <STRONG>kclr</STRONG> (clear screen or erase key), + + <STRONG>o</STRONG> <STRONG>kdch1</STRONG> (delete character), + + <STRONG>o</STRONG> <STRONG>kdl1</STRONG> (delete line), + + <STRONG>o</STRONG> <STRONG>krmir</STRONG> (exit insert mode), + + <STRONG>o</STRONG> <STRONG>kel</STRONG> (clear to end of line), + + <STRONG>o</STRONG> <STRONG>ked</STRONG> (clear to end of screen), + + <STRONG>o</STRONG> <STRONG>kich1</STRONG> (insert character or enter insert mode), + + <STRONG>o</STRONG> <STRONG>kil1</STRONG> (insert line), + + <STRONG>o</STRONG> <STRONG>knp</STRONG> (next page), + + <STRONG>o</STRONG> <STRONG>kpp</STRONG> (previous page), + + <STRONG>o</STRONG> <STRONG>kind</STRONG> (scroll forward/down), + + <STRONG>o</STRONG> <STRONG>kri</STRONG> (scroll backward/up), + + <STRONG>o</STRONG> <STRONG>khts</STRONG> (set a tab stop in this column). + + In addition, if the keypad has a 3 by 3 array of keys including the + four arrow keys, the other five keys can be given as <STRONG>ka1</STRONG>, <STRONG>ka3</STRONG>, <STRONG>kb2</STRONG>, + <STRONG>kc1</STRONG>, and <STRONG>kc3</STRONG>. These keys are useful when the effects of a 3 by 3 + directional pad are needed. + + Strings to program function keys can be given as <STRONG>pfkey</STRONG>, <STRONG>pfloc</STRONG>, and <STRONG>pfx</STRONG>. + A string to program screen labels should be specified as <STRONG>pln</STRONG>. Each of + these strings takes two parameters: the function key number to program + (from 0 to 10) and the string to program it with. Function key numbers + out of this range may program undefined keys in a terminal dependent + manner. The difference between the capabilities is that <STRONG>pfkey</STRONG> causes + pressing the given key to be the same as the user typing the given + string; <STRONG>pfloc</STRONG> causes the string to be executed by the terminal in + local; and <STRONG>pfx</STRONG> causes the string to be transmitted to the computer. + + The capabilities <STRONG>nlab</STRONG>, <STRONG>lw</STRONG> and <STRONG>lh</STRONG> define the number of programmable + screen labels and their width and height. If there are commands to + turn the labels on and off, give them in <STRONG>smln</STRONG> and <STRONG>rmln</STRONG>. <STRONG>smln</STRONG> is + normally output after one or more pln sequences to make sure that the + change becomes visible. + + +</PRE><H3><a name="h3-Tabs-and-Initialization">Tabs and Initialization</a></H3><PRE> + A few capabilities are used only for tabs: + + <STRONG>o</STRONG> If the terminal has hardware tabs, the command to advance to the + next tab stop can be given as <STRONG>ht</STRONG> (usually control/I). + + <STRONG>o</STRONG> A "back-tab" command which moves leftward to the preceding tab stop + can be given as <STRONG>cbt</STRONG>. + + 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 <STRONG>ht</STRONG> or <STRONG>cbt</STRONG> even if they are present, since + the user may not have the tab stops properly set. + + <STRONG>o</STRONG> If the terminal has hardware tabs which are initially set every <EM>n</EM> + spaces when the terminal is powered up, the numeric parameter <STRONG>it</STRONG> is + given, showing the number of spaces the tabs are set to. + + The <STRONG>it</STRONG> capability is normally used by the <STRONG>tset</STRONG> command to determine + whether to set the mode for hardware tab expansion, and whether to + set the tab stops. If the terminal has tab stops that can be saved + in non-volatile memory, the terminfo description can assume that + they are properly set. + + Other capabilities include + + <STRONG>o</STRONG> <STRONG>is1</STRONG>, <STRONG>is2</STRONG>, and <STRONG>is3</STRONG>, initialization strings for the terminal, + + <STRONG>o</STRONG> <STRONG>iprog</STRONG>, the path name of a program to be run to initialize the + terminal, + + <STRONG>o</STRONG> and <STRONG>if</STRONG>, the name of a file containing long initialization strings. + + These strings are expected to set the terminal into modes consistent + with the rest of the terminfo description. They are normally sent to + the terminal, by the <EM>init</EM> option of the <STRONG>tput</STRONG> program, each time the + user logs in. They will be printed in the following order: + + run the program + <STRONG>iprog</STRONG> + + output + <STRONG>is1</STRONG> and + <STRONG>is2</STRONG> + + set the margins using + <STRONG>mgc</STRONG> or + <STRONG>smglp</STRONG> and <STRONG>smgrp</STRONG> or + <STRONG>smgl</STRONG> and <STRONG>smgr</STRONG> + + set tabs using + <STRONG>tbc</STRONG> and <STRONG>hts</STRONG> + + print the file + <STRONG>if</STRONG> + + and finally output + <STRONG>is3</STRONG>. + + Most initialization is done with <STRONG>is2</STRONG>. Special terminal modes can be + set up without duplicating strings by putting the common sequences in + <STRONG>is2</STRONG> and special cases in <STRONG>is1</STRONG> and <STRONG>is3</STRONG>. + + A set of sequences that does a harder reset from a totally unknown + state can be given as <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rf</STRONG> and <STRONG>rs3</STRONG>, analogous to <STRONG>is1</STRONG> <STRONG>,</STRONG> <STRONG>is2</STRONG> <STRONG>,</STRONG> <STRONG>if</STRONG> + and <STRONG>is3</STRONG> respectively. These strings are output by <EM>reset</EM> option of + <STRONG>tput</STRONG>, or by the <STRONG>reset</STRONG> program (an alias of <STRONG>tset</STRONG>), which is used when + the terminal gets into a wedged state. Commands are normally placed in + <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG> <STRONG>rs3</STRONG> and <STRONG>rf</STRONG> only if they produce annoying effects on the screen + and are not necessary when logging in. For example, the command to set + the vt100 into 80-column mode would normally be part of <STRONG>is2</STRONG>, but it + causes an annoying glitch of the screen and is not normally needed + since the terminal is usually already in 80-column mode. + + The <STRONG>reset</STRONG> program writes strings including <STRONG>iprog</STRONG>, etc., in the same + order as the <EM>init</EM> program, using <STRONG>rs1</STRONG>, etc., instead of <STRONG>is1</STRONG>, etc. If + any of <STRONG>rs1</STRONG>, <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, or <STRONG>rf</STRONG> reset capability strings are missing, the + <STRONG>reset</STRONG> program falls back upon the corresponding initialization + capability string. + + If there are commands to set and clear tab stops, they can be given as + <STRONG>tbc</STRONG> (clear all tab stops) and <STRONG>hts</STRONG> (set a tab stop in the current column + of every row). If a more complex sequence is needed to set the tabs + than can be described by this, the sequence can be placed in <STRONG>is2</STRONG> or <STRONG>if</STRONG>. + + The <STRONG>tput</STRONG> <STRONG>reset</STRONG> command uses the same capability strings as the <STRONG>reset</STRONG> + command, although the two programs (<STRONG>tput</STRONG> and <STRONG>reset</STRONG>) provide different + command-line options. + + In practice, these terminfo capabilities are not often used in + initialization of tabs (though they are required for the <STRONG>tabs</STRONG> program): + + <STRONG>o</STRONG> Almost all hardware terminals (at least those which supported tabs) + initialized those to every <EM>eight</EM> columns: + + The only exception was the AT&amp;T 2300 series, which set tabs to + every <EM>five</EM> columns. + + <STRONG>o</STRONG> In particular, developers of the hardware terminals which are + commonly used as models for modern terminal emulators provided + documentation demonstrating that <EM>eight</EM> columns were the standard. + + <STRONG>o</STRONG> Because of this, the terminal initialization programs <STRONG>tput</STRONG> and <STRONG>tset</STRONG> + use the <STRONG>tbc</STRONG> (<STRONG>clear_all_tabs</STRONG>) and <STRONG>hts</STRONG> (<STRONG>set_tab</STRONG>) capabilities + directly only when the <STRONG>it</STRONG> (<STRONG>init_tabs</STRONG>) capability is set to a value + other than <EM>eight</EM>. + + +</PRE><H3><a name="h3-Delays-and-Padding">Delays and Padding</a></H3><PRE> + Many older and slower terminals do not support either XON/XOFF or DTR + handshaking, including hard copy terminals and some very archaic CRTs + (including, for example, DEC VT100s). These may require padding + characters after certain cursor motions and screen changes. + + If the terminal uses xon/xoff handshaking for flow control (that is, it + automatically emits ^S back to the host when its input buffers are + close to full), set <STRONG>xon</STRONG>. This capability suppresses the emission of + padding. You can also set it for memory-mapped console devices + effectively that do not have a speed limit. Padding information should + still be included so that routines can make better decisions about + relative costs, but actual pad characters will not be transmitted. + + If <STRONG>pb</STRONG> (padding baud rate) is given, padding is suppressed at baud rates + below the value of <STRONG>pb</STRONG>. If the entry has no padding baud rate, then + whether padding is emitted or not is completely controlled by <STRONG>xon</STRONG>. + + If the terminal requires other than a null (zero) character as a pad, + then this can be given as <STRONG>pad</STRONG>. Only the first character of the <STRONG>pad</STRONG> + string is used. + + +</PRE><H3><a name="h3-Status-Lines">Status Lines</a></H3><PRE> + Some terminals have an extra "status line" which is not normally used + by software (and thus not counted in the terminal's <STRONG>lines</STRONG> capability). + + The simplest case is a status line which is cursor-addressable but not + part of the main scrolling region on the screen; the Heathkit H19 has a + status line of this kind, as would a 24-line VT100 with a 23-line + scrolling region set up on initialization. This situation is indicated + by the <STRONG>hs</STRONG> capability. + + Some terminals with status lines need special sequences to access the + status line. These may be expressed as a string with single parameter + <STRONG>tsl</STRONG> which takes the cursor to a given zero-origin column on the status + line. The capability <STRONG>fsl</STRONG> must return to the main-screen cursor + positions before the last <STRONG>tsl</STRONG>. You may need to embed the string values + of <STRONG>sc</STRONG> (save cursor) and <STRONG>rc</STRONG> (restore cursor) in <STRONG>tsl</STRONG> and <STRONG>fsl</STRONG> to + accomplish this. + + The status line is normally assumed to be the same width as the width + of the terminal. If this is untrue, you can specify it with the + numeric capability <STRONG>wsl</STRONG>. + + A command to erase or blank the status line may be specified as <STRONG>dsl</STRONG>. + + The boolean capability <STRONG>eslok</STRONG> specifies that escape sequences, tabs, + etc., work ordinarily in the status line. + + The <STRONG>ncurses</STRONG> implementation does not yet use any of these capabilities. + They are documented here in case they ever become important. + + +</PRE><H3><a name="h3-Line-Graphics">Line Graphics</a></H3><PRE> + Many terminals have alternate character sets useful for forms-drawing. + Terminfo and <STRONG>curses</STRONG> have built-in support for most of the drawing + characters supported by the VT100, with some characters from the AT&amp;T + 4410v1 added. This alternate character set may be specified by the + <STRONG>acsc</STRONG> capability. + + <STRONG>Glyph</STRONG> <STRONG>ACS</STRONG> <STRONG>Ascii</STRONG> <STRONG>acsc</STRONG> <STRONG>acsc</STRONG> + <STRONG>Name</STRONG> <STRONG>Name</STRONG> <STRONG>Default</STRONG> <STRONG>Char</STRONG> <STRONG>Value</STRONG> + -------------------------------------------------------------------- + arrow pointing right ACS_RARROW &gt; + 0x2b + arrow pointing left ACS_LARROW &lt; , 0x2c + arrow pointing up ACS_UARROW ^ - 0x2d + arrow pointing down ACS_DARROW v . 0x2e + solid square block ACS_BLOCK # 0 0x30 + diamond ACS_DIAMOND + ` 0x60 + checker board (stipple) ACS_CKBOARD : a 0x61 + degree symbol ACS_DEGREE \ f 0x66 + plus/minus ACS_PLMINUS # g 0x67 + board of squares ACS_BOARD # h 0x68 + lantern symbol ACS_LANTERN # i 0x69 + lower right corner ACS_LRCORNER + j 0x6a + + upper right corner ACS_URCORNER + k 0x6b + upper left corner ACS_ULCORNER + l 0x6c + lower left corner ACS_LLCORNER + m 0x6d + large plus or crossover ACS_PLUS + n 0x6e + scan line 1 ACS_S1 ~ o 0x6f + scan line 3 ACS_S3 - p 0x70 + horizontal line ACS_HLINE - q 0x71 + scan line 7 ACS_S7 - r 0x72 + scan line 9 ACS_S9 _ s 0x73 + tee pointing right ACS_LTEE + t 0x74 + tee pointing left ACS_RTEE + u 0x75 + tee pointing up ACS_BTEE + v 0x76 + tee pointing down ACS_TTEE + w 0x77 + vertical line ACS_VLINE | x 0x78 + less-than-or-equal-to ACS_LEQUAL &lt; y 0x79 + greater-than-or-equal-to ACS_GEQUAL &gt; z 0x7a + greek pi ACS_PI * { 0x7b + not-equal ACS_NEQUAL ! | 0x7c + UK pound sign ACS_STERLING f } 0x7d + bullet ACS_BULLET o ~ 0x7e + + A few notes apply to the table itself: + + <STRONG>o</STRONG> X/Open Curses incorrectly states that the mapping for <EM>lantern</EM> is + uppercase "I" although Unix implementations use the lowercase "i" + mapping. + + <STRONG>o</STRONG> The DEC VT100 implemented graphics using the alternate character + set feature, temporarily switching <EM>modes</EM> and sending characters in + the range 0x60 (96) to 0x7e (126) (the <STRONG>acsc</STRONG> <STRONG>Value</STRONG> column in the + table). + + <STRONG>o</STRONG> The AT&amp;T terminal added graphics characters outside that range. + + Some of the characters within the range do not match the VT100; + presumably they were used in the AT&amp;T terminal: <EM>board</EM> <EM>of</EM> <EM>squares</EM> + replaces the VT100 <EM>newline</EM> symbol, while <EM>lantern</EM> <EM>symbol</EM> replaces + the VT100 <EM>vertical</EM> <EM>tab</EM> symbol. The other VT100 symbols for control + characters (<EM>horizontal</EM> <EM>tab</EM>, <EM>carriage</EM> <EM>return</EM> and <EM>line-feed</EM>) are not + (re)used in curses. + + The best way to define a new device's graphics set is to add a column + to a copy of this table for your terminal, giving the character which + (when emitted between <STRONG>smacs</STRONG>/<STRONG>rmacs</STRONG> switches) will be rendered as the + corresponding graphic. Then read off the VT100/your terminal character + pairs right to left in sequence; these become the ACSC string. + + +</PRE><H3><a name="h3-Color-Handling">Color Handling</a></H3><PRE> + The curses library functions <STRONG>init_pair</STRONG> and <STRONG>init_color</STRONG> manipulate the + <EM>color</EM> <EM>pairs</EM> and <EM>color</EM> <EM>values</EM> discussed in this section (see + <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG> for details on these and related functions). + + Most color terminals are either "Tektronix-like" or "HP-like": + + <STRONG>o</STRONG> Tektronix-like terminals have a predefined set of <EM>N</EM> colors (where <EM>N</EM> + is usually 8), and can set character-cell foreground and background + characters independently, mixing them into <EM>N</EM> * <EM>N</EM> color-pairs. + + <STRONG>o</STRONG> On HP-like terminals, the user must set each color pair up + separately (foreground and background are not independently + settable). Up to <EM>M</EM> color-pairs may be set up from 2*<EM>M</EM> different + colors. ANSI-compatible terminals are Tektronix-like. + + Some basic color capabilities are independent of the color method. The + numeric capabilities <STRONG>colors</STRONG> and <STRONG>pairs</STRONG> specify the maximum numbers of + colors and color-pairs that can be displayed simultaneously. The <STRONG>op</STRONG> + (original pair) string resets foreground and background colors to their + default values for the terminal. The <STRONG>oc</STRONG> 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 <STRONG>bce</STRONG>. + + While the curses library works with <EM>color</EM> <EM>pairs</EM> (reflecting the + inability of some devices to set foreground and background colors + independently), there are separate capabilities for setting these + features: + + <STRONG>o</STRONG> To change the current foreground or background color on a + Tektronix-type terminal, use <STRONG>setaf</STRONG> (set ANSI foreground) and <STRONG>setab</STRONG> + (set ANSI background) or <STRONG>setf</STRONG> (set foreground) and <STRONG>setb</STRONG> (set + background). These take one parameter, the color number. The SVr4 + documentation describes only <STRONG>setaf</STRONG>/<STRONG>setab</STRONG>; the XPG4 draft says that + "If the terminal supports ANSI escape sequences to set background + and foreground, they should be coded as <STRONG>setaf</STRONG> and <STRONG>setab</STRONG>, + respectively. + + <STRONG>o</STRONG> If the terminal supports other escape sequences to set background + and foreground, they should be coded as <STRONG>setf</STRONG> and <STRONG>setb</STRONG>, + respectively. The <STRONG>vidputs</STRONG> and the <STRONG><A HREF="curs_refresh.3x.html">refresh(3x)</A></STRONG> functions use the + <STRONG>setaf</STRONG> and <STRONG>setab</STRONG> capabilities if they are defined. + + The <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> and <STRONG>setf</STRONG>/<STRONG>setb</STRONG> capabilities take a single numeric + argument each. Argument values 0-7 of <STRONG>setaf</STRONG>/<STRONG>setab</STRONG> are portably defined + as follows (the middle column is the symbolic #define available in the + header for the <STRONG>curses</STRONG> or <STRONG>ncurses</STRONG> libraries). The terminal hardware is + free to map these as it likes, but the RGB values indicate normal + locations in color space. + + <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG> + black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0 + red <STRONG>COLOR_RED</STRONG> 1 max,0,0 + green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0 + yellow <STRONG>COLOR_YELLOW</STRONG> 3 max,max,0 + blue <STRONG>COLOR_BLUE</STRONG> 4 0,0,max + magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max + cyan <STRONG>COLOR_CYAN</STRONG> 6 0,max,max + white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max + + The argument values of <STRONG>setf</STRONG>/<STRONG>setb</STRONG> historically correspond to a different + mapping, i.e., + + <STRONG>Color</STRONG> <STRONG>#define</STRONG> <STRONG>Value</STRONG> <STRONG>RGB</STRONG> + black <STRONG>COLOR_BLACK</STRONG> 0 0, 0, 0 + blue <STRONG>COLOR_BLUE</STRONG> 1 0,0,max + green <STRONG>COLOR_GREEN</STRONG> 2 0,max,0 + cyan <STRONG>COLOR_CYAN</STRONG> 3 0,max,max + red <STRONG>COLOR_RED</STRONG> 4 max,0,0 + magenta <STRONG>COLOR_MAGENTA</STRONG> 5 max,0,max + yellow <STRONG>COLOR_YELLOW</STRONG> 6 max,max,0 + white <STRONG>COLOR_WHITE</STRONG> 7 max,max,max + + It is important to not confuse the two sets of color capabilities; + otherwise red/blue will be interchanged on the display. + + On an HP-like terminal, use <STRONG>scp</STRONG> with a color-pair number parameter to + set which color pair is current. + + Some terminals allow the <EM>color</EM> <EM>values</EM> to be modified: + + <STRONG>o</STRONG> On a Tektronix-like terminal, the capability <STRONG>ccc</STRONG> may be present to + indicate that colors can be modified. If so, the <STRONG>initc</STRONG> capability + will take a color number (0 to <STRONG>colors</STRONG> - 1)and three more parameters + which describe the color. These three parameters default to being + interpreted as RGB (Red, Green, Blue) values. If the boolean + capability <STRONG>hls</STRONG> is present, they are instead as HLS (Hue, Lightness, + Saturation) indices. The ranges are terminal-dependent. + + <STRONG>o</STRONG> On an HP-like terminal, <STRONG>initp</STRONG> may give a capability for changing a + color-pair value. It will take seven parameters; a color-pair + number (0 to <STRONG>max_pairs</STRONG> - 1), and two triples describing first + background and then foreground colors. These parameters must be + (Red, Green, Blue) or (Hue, Lightness, Saturation) depending on + <STRONG>hls</STRONG>. + + On some color terminals, colors collide with highlights. You can + register these collisions with the <STRONG>ncv</STRONG> capability. This is a bit-mask + of attributes not to be used when colors are enabled. The + correspondence with the attributes understood by <STRONG>curses</STRONG> is as follows: + + <STRONG>Attribute</STRONG> <STRONG>Bit</STRONG> <STRONG>Decimal</STRONG> <STRONG>Set</STRONG> <STRONG>by</STRONG> + A_STANDOUT 0 1 sgr + A_UNDERLINE 1 2 sgr + A_REVERSE 2 4 sgr + A_BLINK 3 8 sgr + A_DIM 4 16 sgr + A_BOLD 5 32 sgr + A_INVIS 6 64 sgr + A_PROTECT 7 128 sgr + A_ALTCHARSET 8 256 sgr + A_HORIZONTAL 9 512 sgr1 + A_LEFT 10 1024 sgr1 + A_LOW 11 2048 sgr1 + A_RIGHT 12 4096 sgr1 + A_TOP 13 8192 sgr1 + A_VERTICAL 14 16384 sgr1 + A_ITALIC 15 32768 sitm + + For example, on many IBM PC consoles, the underline attribute collides + with the foreground color blue and is not available in color mode. + These should have an <STRONG>ncv</STRONG> capability of 2. + + SVr4 curses does nothing with <STRONG>ncv</STRONG>, ncurses recognizes it and optimizes + the output in favor of colors. + + +</PRE><H3><a name="h3-Miscellaneous">Miscellaneous</a></H3><PRE> + If the terminal requires other than a null (zero) character as a pad, + then this can be given as pad. Only the first character of the pad + string is used. If the terminal does not have a pad character, specify + npc. Note that ncurses implements the termcap-compatible <STRONG>PC</STRONG> variable; + though the application may set this value to something other than a + null, ncurses will test <STRONG>npc</STRONG> first and use napms if the terminal has no + pad character. + + If the terminal can move up or down half a line, this can be indicated + with <STRONG>hu</STRONG> (half-line up) and <STRONG>hd</STRONG> (half-line down). This is primarily + useful for superscripts and subscripts on hard-copy terminals. If a + hard-copy terminal can eject to the next page (form feed), give this as + <STRONG>ff</STRONG> (usually control/L). + + If there is a command to repeat a given character a given number of + times (to save time transmitting a large number of identical + characters) this can be indicated with the parameterized string <STRONG>rep</STRONG>. + The first parameter is the character to be repeated and the second is + the number of times to repeat it. Thus, tparm(repeat_char, 'x', 10) is + the same as "xxxxxxxxxx". + + If the terminal has a settable command character, such as the TEKTRONIX + 4025, this can be indicated with <STRONG>cmdch</STRONG>. A prototype command character + is chosen which is used in all capabilities. This character is given + in the <STRONG>cmdch</STRONG> capability to identify it. The following convention is + supported on some UNIX systems: The environment is to be searched for a + <STRONG>CC</STRONG> variable, and if found, all occurrences of the prototype character + are replaced with the character in the environment variable. + + Terminal descriptions that do not represent a specific kind of known + terminal, such as <EM>switch</EM>, <EM>dialup</EM>, <EM>patch</EM>, and <EM>network</EM>, should include + the <STRONG>gn</STRONG> (generic) capability so that programs can complain that they do + not know how to talk to the terminal. (This capability does not apply + to <EM>virtual</EM> terminal descriptions for which the escape sequences are + known.) + + If the terminal has a "meta key" which acts as a shift key, setting the + 8th bit of any character transmitted, this fact can be indicated with + <STRONG>km</STRONG>. Otherwise, software will assume that the 8th bit is parity and it + will usually be cleared. If strings exist to turn this "meta mode" on + and off, they can be given as <STRONG>smm</STRONG> and <STRONG>rmm</STRONG>. + + If the terminal has more lines of memory than will fit on the screen at + once, the number of lines of memory can be indicated with <STRONG>lm</STRONG>. A value + of <STRONG>lm</STRONG>#0 indicates that the number of lines is not fixed, but that there + is still more memory than fits on the screen. + + If the terminal is one of those supported by the UNIX virtual terminal + protocol, the terminal number can be given as <STRONG>vt</STRONG>. + + Media copy strings which control an auxiliary printer connected to the + terminal can be given as <STRONG>mc0</STRONG>: print the contents of the screen, <STRONG>mc4</STRONG>: + turn off the printer, and <STRONG>mc5</STRONG>: turn on the printer. When the printer + is on, all text sent to the terminal will be sent to the printer. It + is undefined whether the text is also displayed on the terminal screen + when the printer is on. A variation <STRONG>mc5p</STRONG> takes one parameter, and + leaves the printer on for as many characters as the value of the + parameter, then turns the printer off. The parameter should not exceed + 255. All text, including <STRONG>mc4</STRONG>, is transparently passed to the printer + while an <STRONG>mc5p</STRONG> is in effect. + + +</PRE><H3><a name="h3-Glitches-and-Braindamage">Glitches and Braindamage</a></H3><PRE> + Hazeltine terminals, which do not allow "~" characters to be displayed + should indicate <STRONG>hz</STRONG>. + + Terminals which ignore a line-feed immediately after an <STRONG>am</STRONG> wrap, such + as the Concept and vt100, should indicate <STRONG>xenl</STRONG>. + + If <STRONG>el</STRONG> is required to get rid of standout (instead of merely writing + normal text on top of it), <STRONG>xhp</STRONG> should be given. + + Teleray terminals, where tabs turn all characters moved over to blanks, + should indicate <STRONG>xt</STRONG> (destructive tabs). Note: the variable indicating + this is now "dest_tabs_magic_smso"; in older versions, it was + teleray_glitch. This glitch is also taken to mean that it is not + possible to position the cursor on top of a "magic cookie", that to + erase standout mode it is instead necessary to use delete and insert + line. The ncurses implementation ignores this glitch. + + The Beehive Superbee, which is unable to correctly transmit the escape + or control/C characters, has <STRONG>xsb</STRONG>, indicating that the f1 key is used + for escape and f2 for control/C. (Only certain Superbees have this + problem, depending on the ROM.) Note that in older terminfo versions, + this capability was called "beehive_glitch"; it is now "no_esc_ctl_c". + + Other specific terminal problems may be corrected by adding more + capabilities of the form <STRONG>x</STRONG><EM>x</EM>. + + +</PRE><H3><a name="h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></H3><PRE> + Long terminfo entries are unlikely to be a problem; to date, no entry + has even approached terminfo's 4096-byte string-table maximum. + Unfortunately, the termcap translations are much more strictly limited + (to 1023 bytes), thus termcap translations of long terminfo entries can + cause problems. + + The man pages for 4.3BSD and older versions of <STRONG>tgetent</STRONG> instruct the + user to allocate a 1024-byte buffer for the termcap entry. The entry + gets null-terminated by the termcap library, so that makes the maximum + safe length for a termcap entry 1k-1 (1023) bytes. Depending on what + the application and the termcap library being used does, and where in + the termcap file the terminal type that <STRONG>tgetent</STRONG> is searching for is, + several bad things can happen. + + Some termcap libraries print a warning message or exit if they find an + entry that's longer than 1023 bytes; others do not; others truncate the + entries to 1023 bytes. Some application programs allocate more than + the recommended 1K for the termcap entry; others do not. + + Each termcap entry has two important sizes associated with it: before + "tc" expansion, and after "tc" expansion. "tc" is the capability that + tacks on another termcap entry to the end of the current one, to add on + its capabilities. If a termcap entry does not use the "tc" capability, + then of course the two lengths are the same. + + The "before tc expansion" length is the most important one, because it + affects more than just users of that particular terminal. This is the + length of the entry as it exists in /etc/termcap, minus the backslash- + newline pairs, which <STRONG>tgetent</STRONG> strips out while reading it. Some termcap + libraries strip off the final newline, too (GNU termcap does not). Now + suppose: + + <STRONG>o</STRONG> a termcap entry before expansion is more than 1023 bytes long, + + <STRONG>o</STRONG> and the application has only allocated a 1k buffer, + + <STRONG>o</STRONG> and the termcap library (like the one in BSD/OS 1.1 and GNU) reads + the whole entry into the buffer, no matter what its length, to see + if it is the entry it wants, + + <STRONG>o</STRONG> and <STRONG>tgetent</STRONG> is searching for a terminal type that either is the + long entry, appears in the termcap file after the long entry, or + does not appear in the file at all (so that <STRONG>tgetent</STRONG> has to search + the whole termcap file). + + Then <STRONG>tgetent</STRONG> will overwrite memory, perhaps its stack, and probably + core dump the program. Programs like telnet are particularly + vulnerable; modern telnets pass along values like the terminal type + automatically. The results are almost as undesirable with a termcap + library, like SunOS 4.1.3 and Ultrix 4.4, that prints warning messages + when it reads an overly long termcap entry. If a termcap library + truncates long entries, like OSF/1 3.0, it is immune to dying here but + will return incorrect data for the terminal. + + The "after tc expansion" length will have a similar effect to the + above, but only for people who actually set TERM to that terminal type, + since <STRONG>tgetent</STRONG> only does "tc" expansion once it is found the terminal + type it was looking for, not while searching. + + In summary, a termcap entry that is longer than 1023 bytes can cause, + on various combinations of termcap libraries and applications, a core + dump, warnings, or incorrect operation. If it is too long even before + "tc" expansion, it will have this effect even for users of some other + terminal types and users whose TERM variable does not have a termcap + entry. + + When in -C (translate to termcap) mode, the <STRONG>ncurses</STRONG> implementation of + <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> issues warning messages when the pre-tc length of a termcap + translation is too long. The -c (check) option also checks resolved + (after tc expansion) lengths. + + +</PRE><H3><a name="h3-Binary-Compatibility">Binary Compatibility</a></H3><PRE> + It is not wise to count on portability of binary terminfo entries + between commercial UNIX versions. The problem is that there are at + least two versions of terminfo (under HP-UX and AIX) 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 XSI Curses extensions. + + +</PRE><H2><a name="h2-EXTENSIONS">EXTENSIONS</a></H2><PRE> + Searching for terminal descriptions in <STRONG>$HOME/.terminfo</STRONG> and + TERMINFO_DIRS is not supported by older implementations. + + Some SVr4 <STRONG>curses</STRONG> implementations, and all previous to SVr4, do not + interpret the %A and %O operators in parameter strings. + + SVr4/XPG4 do not specify whether <STRONG>msgr</STRONG> licenses movement while in an + alternate-character-set mode (such modes may, among other things, map + CR and NL to characters that do not trigger local motions). The + <STRONG>ncurses</STRONG> implementation ignores <STRONG>msgr</STRONG> in <STRONG>ALTCHARSET</STRONG> mode. This raises + the possibility that an XPG4 implementation making the opposite + interpretation may need terminfo entries made for <STRONG>ncurses</STRONG> to have <STRONG>msgr</STRONG> + turned off. + + The <STRONG>ncurses</STRONG> library handles insert-character and insert-character modes + in a slightly non-standard way to get better update efficiency. See + the <STRONG>Insert/Delete</STRONG> <STRONG>Character</STRONG> subsection above. + + The parameter substitutions for <STRONG>set_clock</STRONG> and <STRONG>display_clock</STRONG> are not + documented in SVr4 or the XSI Curses standard. They are deduced from + the documentation for the AT&amp;T 505 terminal. + + Be careful assigning the <STRONG>kmous</STRONG> capability. The <STRONG>ncurses</STRONG> library wants + to interpret it as <STRONG>KEY_MOUSE</STRONG>, for use by terminals and emulators like + xterm that can return mouse-tracking information in the keyboard-input + stream. + + X/Open Curses does not mention italics. Portable applications must + assume that numeric capabilities are signed 16-bit values. This + includes the <EM>no</EM><STRONG>_</STRONG><EM>color</EM><STRONG>_</STRONG><EM>video</EM> (ncv) capability. The 32768 mask value + used for italics with ncv can be confused with an absent or cancelled + ncv. If italics should work with colors, then the ncv value must be + specified, even if it is zero. + + Different commercial ports of terminfo and curses support different + subsets of the XSI Curses standard and (in some cases) different + extension sets. Here is a summary, accurate as of October 1995: + + <STRONG>o</STRONG> <STRONG>SVR4,</STRONG> <STRONG>Solaris,</STRONG> <STRONG>ncurses</STRONG> -- These support all SVr4 capabilities. + + <STRONG>o</STRONG> <STRONG>SGI</STRONG> -- Supports the SVr4 set, adds one undocumented extended string + capability (<STRONG>set_pglen</STRONG>). + + <STRONG>o</STRONG> <STRONG>SVr1,</STRONG> <STRONG>Ultrix</STRONG> -- These support a restricted subset of terminfo + capabilities. The booleans end with <STRONG>xon_xoff</STRONG>; the numerics with + <STRONG>width_status_line</STRONG>; and the strings with <STRONG>prtr_non</STRONG>. + + <STRONG>o</STRONG> <STRONG>HP/UX</STRONG> -- Supports the SVr1 subset, plus the SVr[234] numerics + <STRONG>num_labels</STRONG>, <STRONG>label_height</STRONG>, <STRONG>label_width</STRONG>, plus function keys 11 + through 63, plus <STRONG>plab_norm</STRONG>, <STRONG>label_on</STRONG>, and <STRONG>label_off</STRONG>, plus some + incompatible extensions in the string table. + + <STRONG>o</STRONG> <STRONG>AIX</STRONG> -- Supports the SVr1 subset, plus function keys 11 through 63, + plus a number of incompatible string table extensions. + + <STRONG>o</STRONG> <STRONG>OSF</STRONG> -- Supports both the SVr4 set and the AIX extensions. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /usr/share/terminfo/?/* files containing terminal descriptions + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_color.3x.html">curs_color(3x)</A></STRONG>, + <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>, <STRONG>printf(3)</STRONG>, <STRONG><A HREF="term_variables.3x.html">term_variables(3x)</A></STRONG>. <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. + <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. Based on pcurses + by Pavel Curtis. + + + + <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Terminfo-Entry-Syntax">Terminfo Entry Syntax</a></li> +<li><a href="#h3-Terminfo-Capabilities-Syntax">Terminfo Capabilities Syntax</a></li> +<li><a href="#h3-Similar-Terminals">Similar Terminals</a></li> +<li><a href="#h3-Predefined-Capabilities">Predefined Capabilities</a></li> +<li><a href="#h3-User-Defined-Capabilities">User-Defined Capabilities</a></li> +<li><a href="#h3-A-Sample-Entry">A Sample Entry</a></li> +<li><a href="#h3-Types-of-Capabilities">Types of Capabilities</a></li> +<li><a href="#h3-Fetching-Compiled-Descriptions">Fetching Compiled Descriptions</a></li> +<li><a href="#h3-Preparing-Descriptions">Preparing Descriptions</a></li> +<li><a href="#h3-Basic-Capabilities">Basic Capabilities</a></li> +<li><a href="#h3-Parameterized-Strings">Parameterized Strings</a></li> +<li><a href="#h3-Cursor-Motions">Cursor Motions</a></li> +<li><a href="#h3-Margins">Margins</a></li> +<li><a href="#h3-Area-Clears">Area Clears</a></li> +<li><a href="#h3-Insert_delete-line-and-vertical-motions">Insert/delete line and vertical motions</a></li> +<li><a href="#h3-Insert_Delete-Character">Insert/Delete Character</a></li> +<li><a href="#h3-Highlighting_-Underlining_-and-Visible-Bells">Highlighting, Underlining, and Visible Bells</a></li> +<li><a href="#h3-Keypad-and-Function-Keys">Keypad and Function Keys</a></li> +<li><a href="#h3-Tabs-and-Initialization">Tabs and Initialization</a></li> +<li><a href="#h3-Delays-and-Padding">Delays and Padding</a></li> +<li><a href="#h3-Status-Lines">Status Lines</a></li> +<li><a href="#h3-Line-Graphics">Line Graphics</a></li> +<li><a href="#h3-Color-Handling">Color Handling</a></li> +<li><a href="#h3-Miscellaneous">Miscellaneous</a></li> +<li><a href="#h3-Glitches-and-Braindamage">Glitches and Braindamage</a></li> +<li><a href="#h3-Pitfalls-of-Long-Entries">Pitfalls of Long Entries</a></li> +<li><a href="#h3-Binary-Compatibility">Binary Compatibility</a></li> +</ul> +</li> +<li><a href="#h2-EXTENSIONS">EXTENSIONS</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/tic.1m.html b/deps/ncurses-6.3/doc/html/man/tic.1m.html new file mode 100644 index 0000000..4dff1db --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/tic.1m.html @@ -0,0 +1,500 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: tic.1m,v 1.80 2021/08/15 20:01:19 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>tic 1m</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">tic 1m</H1> +<PRE> +<STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>tic</STRONG> - the <EM>terminfo</EM> entry-description compiler + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>tic</STRONG> [<STRONG>-01CDGIKLNTUVWacfgqrstx</STRONG>] [<STRONG>-e</STRONG> <EM>names</EM>] [<STRONG>-o</STRONG> <EM>dir</EM>] [<STRONG>-Q</STRONG>[<EM>n</EM>]] [<STRONG>-R</STRONG> <EM>subset</EM>] + [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-w</STRONG>[<EM>n</EM>]] <EM>file</EM> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>tic</STRONG> command translates a <STRONG>terminfo</STRONG> file from source format into + compiled format. The compiled format is necessary for use with the + library routines in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>. + + As described in <STRONG><A HREF="term.5.html">term(5)</A></STRONG>, the database may be either a directory tree + (one file per terminal entry) or a hashed database (one record per + entry). The <STRONG>tic</STRONG> command writes only one type of entry, depending on + how it was built: + + <STRONG>o</STRONG> For directory trees, the top-level directory, e.g., + /usr/share/terminfo, specifies the location of the database. + + <STRONG>o</STRONG> 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", then that is used. + + The default name for the hashed database is the same as the default + directory name (only adding a ".db" suffix). + + In either case (directory or hashed database), <STRONG>tic</STRONG> will create the + container if it does not exist. For a directory, this would be the + "terminfo" leaf, versus a "terminfo.db" file. + + The results are normally placed in the system terminfo database + <STRONG>/usr/share/terminfo</STRONG>. The compiled terminal description can be placed + in a different terminfo database. There are two ways to achieve this: + + <STRONG>o</STRONG> First, you may override the system default either by using the <STRONG>-o</STRONG> + option, or by setting the variable <STRONG>TERMINFO</STRONG> in your shell + environment to a valid database location. + + <STRONG>o</STRONG> Secondly, if <STRONG>tic</STRONG> cannot write in <EM>/usr/share/terminfo</EM> or the + location specified using your TERMINFO variable, it looks for the + directory <EM>$HOME/.terminfo</EM> (or hashed database <EM>$HOME/.terminfo.db)</EM>; + if that location exists, the entry is placed there. + + Libraries that read terminfo entries are expected to check in + succession + + <STRONG>o</STRONG> a location specified with the TERMINFO environment variable, + + <STRONG>o</STRONG> <EM>$HOME/.terminfo</EM>, + + <STRONG>o</STRONG> directories listed in the TERMINFO_DIRS environment variable, + + <STRONG>o</STRONG> a compiled-in list of directories (no default value), and + + <STRONG>o</STRONG> the system terminfo database (<EM>/usr/share/terminfo</EM>). + + +</PRE><H3><a name="h3-ALIASES">ALIASES</a></H3><PRE> + This is the same program as infotocap and captoinfo; usually those are + linked to, or copied from this program: + + <STRONG>o</STRONG> When invoked as infotocap, tic sets the <STRONG>-I</STRONG> option. + + <STRONG>o</STRONG> When invoked as captoinfo, tic sets the <STRONG>-C</STRONG> option. + + +</PRE><H3><a name="h3-OPTIONS">OPTIONS</a></H3><PRE> + <STRONG>-0</STRONG> restricts the output to a single line + + <STRONG>-1</STRONG> restricts the output to a single column + + <STRONG>-a</STRONG> tells <STRONG>tic</STRONG> to retain commented-out capabilities rather than + discarding them. Capabilities are commented by prefixing them + with a period. This sets the <STRONG>-x</STRONG> 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. + Otherwise these are ignored. + + <STRONG>-C</STRONG> Force source translation to termcap format. Note: this differs + from the <STRONG>-C</STRONG> option of <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG> 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 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 <STRONG>-K</STRONG> option. + + If this is combined with <STRONG>-c</STRONG>, <STRONG>tic</STRONG> makes additional checks to + report cases where the terminfo values do not have an exact + equivalent in termcap form. For example: + + <STRONG>o</STRONG> <STRONG>sgr</STRONG> 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. + + <STRONG>o</STRONG> capabilities with more than one delay or with delays before + the end of the string will not convert completely. + + <STRONG>-c</STRONG> tells <STRONG>tic</STRONG> to only check <EM>file</EM> for errors, including syntax + problems and bad use-links. If you specify <STRONG>-C</STRONG> (<STRONG>-I</STRONG>) 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. + + <STRONG>tic</STRONG> 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 <STRONG>-x</STRONG> option are ignored. + + <STRONG>-D</STRONG> tells <STRONG>tic</STRONG> 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 <STRONG>tic</STRONG> 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. + + <STRONG>-e</STRONG> <EM>names</EM> + Limit writes and translations to the following comma-separated + list of terminals. If any name or alias of a terminal matches + one of the names in 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, this option may require <STRONG>-I</STRONG> or <STRONG>-C</STRONG>.) + + <STRONG>-f</STRONG> Display complex terminfo strings which contain + if/then/else/endif expressions indented for readability. + + <STRONG>-G</STRONG> Display constant literals in decimal form rather than their + character equivalents. + + <STRONG>-g</STRONG> Display constant character literals in quoted form rather than + their decimal equivalents. + + <STRONG>-I</STRONG> Force source translation to terminfo format. + + <STRONG>-K</STRONG> Suppress some longstanding ncurses extensions to termcap format, + e.g., "\s" for space. + + <STRONG>-L</STRONG> Force source translation to terminfo format using the long C + variable names listed in &lt;<STRONG>term.h</STRONG>&gt; + + <STRONG>-N</STRONG> Disable smart defaults. Normally, when translating from termcap + to terminfo, the compiler makes a number of assumptions about + the defaults of string capabilities <STRONG>reset1_string</STRONG>, + <STRONG>carriage_return</STRONG>, <STRONG>cursor_left</STRONG>, <STRONG>cursor_down</STRONG>, <STRONG>scroll_forward</STRONG>, <STRONG>tab</STRONG>, + <STRONG>newline</STRONG>, <STRONG>key_backspace</STRONG>, <STRONG>key_left</STRONG>, and <STRONG>key_down</STRONG>, then attempts to + use obsolete termcap capabilities to deduce correct values. It + also normally suppresses output of obsolete termcap capabilities + such as <STRONG>bs</STRONG>. This option forces a more literal translation that + also preserves the obsolete capabilities. + + <STRONG>-o</STRONG><EM>dir</EM> Write compiled entries to given database location. Overrides + the TERMINFO environment variable. + + <STRONG>-Q</STRONG><EM>n</EM> Rather than show source in terminfo (text) format, print the + compiled (binary) format in hexadecimal or base64 form, + depending on the option's value: + + 1 hexadecimal + + 2 base64 + + 3 hexadecimal and base64 + + <STRONG>-q</STRONG> Suppress comments and blank lines when showing translated + source. + + <STRONG>-R</STRONG><EM>subset</EM> + Restrict output to a given subset. This option is for use with + archaic versions of terminfo like those on SVr1, Ultrix, or HP- + UX that do not support the full set of SVR4/XSI Curses terminfo; + and outright broken ports like AIX 3.x that have their own + extensions incompatible with SVr4/XSI. Available subsets are + "SVr1", "Ultrix", "HP", "BSD" and "AIX"; see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for + details. + + <STRONG>-r</STRONG> Force entry resolution (so there are no remaining tc + capabilities) even when doing translation to termcap format. + This may be needed if you are preparing a termcap file for a + termcap library (such as GNU termcap through version 1.3 or BSD + termcap through 4.3BSD) that does not handle multiple tc + capabilities per entry. + + <STRONG>-s</STRONG> Summarize the compile by showing the database location into + which entries are written, and the number of entries which are + compiled. + + <STRONG>-T</STRONG> eliminates size-restrictions on the generated text. This is + mainly useful for testing and analysis, since the compiled + descriptions are limited (e.g., 1023 for termcap, 4096 for + terminfo). + + <STRONG>-t</STRONG> tells <STRONG>tic</STRONG> to discard commented-out capabilities. Normally when + translating from terminfo to termcap, untranslatable + capabilities are commented-out. + + <STRONG>-U</STRONG> tells <STRONG>tic</STRONG> 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. + + <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and + exits. + + <STRONG>-v</STRONG><EM>n</EM> specifies that (verbose) output be written to standard error trace + information showing <STRONG>tic</STRONG>'s progress. + + The optional parameter <EM>n</EM> is a number from 1 to 10, inclusive, + indicating the desired level of detail of information. If ncurses + is built without tracing support, the optional parameter is + ignored. If <EM>n</EM> is omitted, the default level is 1. If <EM>n</EM> is + specified and greater than 1, the level of detail is increased. + + The debug flag levels are as follows: + + 1 Names of files created and linked + + 2 Information related to the "use" facility + + 3 Statistics from the hashing algorithm + + 5 String-table memory allocations + + 7 Entries into the string-table + + 8 List of tokens encountered by scanner + + 9 All values computed in construction of the hash table + + If the debug level <EM>n</EM> is not given, it is taken to be one. + + <STRONG>-W</STRONG> By itself, the <STRONG>-w</STRONG> option will not force long strings to be + wrapped. Use the <STRONG>-W</STRONG> option to do this. + + If you specify both <STRONG>-f</STRONG> and <STRONG>-W</STRONG> options, the latter is ignored when + <STRONG>-f</STRONG> has already split the line. + + <STRONG>-w</STRONG><EM>n</EM> specifies the width of the output. The parameter is optional. If + it is omitted, it defaults to 60. + + <STRONG>-x</STRONG> Treat unknown capabilities as user-defined (see <STRONG>user_caps(5)</STRONG>). + That is, if you supply a capability name which <STRONG>tic</STRONG> 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. + + +</PRE><H3><a name="h3-PARAMETERS">PARAMETERS</a></H3><PRE> + <EM>file</EM> contains one or more <STRONG>terminfo</STRONG> terminal descriptions in source + format [see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>]. Each description in the file + describes the capabilities of a particular terminal. + + If <EM>file</EM> is "-", then the data is read from the standard input. + The <EM>file</EM> parameter may also be the path of a character-device. + + +</PRE><H3><a name="h3-PROCESSING">PROCESSING</a></H3><PRE> + All but one of the capabilities recognized by <STRONG>tic</STRONG> are documented in + <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. The exception is the <STRONG>use</STRONG> capability. + + When a <STRONG>use</STRONG>=<EM>entry</EM>-<EM>name</EM> field is discovered in a terminal entry currently + being compiled, <STRONG>tic</STRONG> reads in the binary from <STRONG>/usr/share/terminfo</STRONG> to + complete the entry. (Entries created from <EM>file</EM> will be used first. + <STRONG>tic</STRONG> duplicates the capabilities in <EM>entry</EM>-<EM>name</EM> for the current entry, + with the exception of those capabilities that explicitly are defined in + the current entry. + + When an entry, e.g., <STRONG>entry_name_1</STRONG>, contains a <STRONG>use=</STRONG><EM>entry</EM>_<EM>name</EM>_<EM>2</EM> field, + any canceled capabilities in <EM>entry</EM>_<EM>name</EM>_<EM>2</EM> must also appear in + <STRONG>entry_name_1</STRONG> before <STRONG>use=</STRONG> for these capabilities to be canceled in + <STRONG>entry_name_1</STRONG>. + + Total compiled entries cannot exceed 4096 bytes. The name field cannot + exceed 512 bytes. Terminal names exceeding the maximum alias length + (32 characters on systems with long filenames, 14 characters otherwise) + will be truncated to the maximum alias length and a warning message + will be printed. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + System V Release 2 provided a <STRONG>tic</STRONG> utility. It accepted a single + option: <STRONG>-v</STRONG> (optionally followed by a number). According to Ross + Ridge's comment in <EM>mytinfo</EM>, this version of <STRONG>tic</STRONG> was unable to represent + cancelled capabilities. + + System V Release 3 provided a different <STRONG>tic</STRONG> utility, written by Pavel + Curtis, (originally named "compile" in <EM>pcurses</EM>). This added an option + <STRONG>-c</STRONG> to check the file for errors, with the caveat that errors in "use=" + links would not be reported. System V Release 3 documented a few + warning messages which did not appear in <EM>pcurses</EM>. While the program + itself was changed little as development continued with System V + Release 4, the table of capabilities grew from 180 (<EM>pcurses</EM>) to 464 + (Solaris). + + In early development of ncurses (1993), Zeyd Ben-Halim used the table + from <EM>mytinfo</EM> to extend the <EM>pcurses</EM> table to 469 capabilities (456 + matched SVr4, 8 were only in SVr4, 13 were not in SVr4). Of those 13, + 11 were ultimately discarded (perhaps to match the draft of X/Open + Curses). The exceptions were <STRONG>memory_lock_above</STRONG> and <STRONG>memory_unlock</STRONG> (see + <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>). + + Eric Raymond incorporated parts of <EM>mytinfo</EM> into ncurses to implement + the termcap-to-terminfo source conversion, and extended that to begin + development of the corresponding terminfo-to-termcap source conversion, + Thomas Dickey completed that development over the course of several + years. + + In 1999, Thomas Dickey added the <STRONG>-x</STRONG> option to support user-defined + capabilities. + + In 2010, Roy Marples provided a <STRONG>tic</STRONG> program and terminfo library for + NetBSD. That implementation adapts several features from ncurses, + including <STRONG>tic</STRONG>'s <STRONG>-x</STRONG> option. + + The <STRONG>-c</STRONG> option tells <STRONG>tic</STRONG> to check for problems in the terminfo source + file. Continued development provides additional checks: + + <STRONG>o</STRONG> <EM>pcurses</EM> had 8 warnings + + <STRONG>o</STRONG> ncurses in 1996 had 16 warnings + + <STRONG>o</STRONG> Solaris (SVr4) curses has 28 warnings + + <STRONG>o</STRONG> NetBSD tic in 2019 has 19 warnings. + + <STRONG>o</STRONG> ncurses in 2019 has 96 warnings + + The checking done in ncurses' <STRONG>tic</STRONG> 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 ncurses' terminal database; 128 of those are + user-defined. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + X/Open Curses, Issue 7 (2009) provides a brief description of <STRONG>tic</STRONG>. It + lists one option: <STRONG>-c</STRONG>. The omission of <STRONG>-v</STRONG> is unexpected. The change + history states that the description is derived from True64 UNIX. + According to its manual pages, that system also supported the <STRONG>-v</STRONG> + option. + + Shortly after Issue 7 was released, Tru64 was discontinued. As of + 2019, the surviving implementations of <STRONG>tic</STRONG> are SVr4 (AIX, HP-UX and + Solaris), ncurses and NetBSD curses. The SVr4 <STRONG>tic</STRONG> programs all support + the <STRONG>-v</STRONG> option. The NetBSD <STRONG>tic</STRONG> program follows X/Open's documentation, + omitting the <STRONG>-v</STRONG> option. + + The X/Open rationale states that some implementations of <STRONG>tic</STRONG> read + terminal descriptions from the standard input if the <EM>file</EM> parameter is + omitted. None of these implementations do that. Further, it comments + that some may choose to read from "./terminfo.src" but that is + obsolescent behavior from SVr2, and is not (for example) a documented + feature of SVr3. + + +</PRE><H3><a name="h3-COMPATIBILITY">COMPATIBILITY</a></H3><PRE> + There is some evidence that historic <STRONG>tic</STRONG> implementations treated + description fields with no whitespace in them as additional aliases or + short names. This <STRONG>tic</STRONG> does not do that, but it does warn when + description fields may be treated that way and check them for dangerous + characters. + + +</PRE><H3><a name="h3-EXTENSIONS">EXTENSIONS</a></H3><PRE> + Unlike the SVr4 <STRONG>tic</STRONG> command, this implementation can actually compile + termcap sources. In fact, entries in terminfo and termcap syntax can + be mixed in a single source file. See <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for the list of + termcap names taken to be equivalent to terminfo names. + + The SVr4 manual pages are not clear on the resolution rules for <STRONG>use</STRONG> + capabilities. This implementation of <STRONG>tic</STRONG> will find <STRONG>use</STRONG> targets + anywhere in the source file, or anywhere in the file tree rooted at + <STRONG>TERMINFO</STRONG> (if <STRONG>TERMINFO</STRONG> is defined), or in the user's <EM>$HOME/.terminfo</EM> + database (if it exists), or (finally) anywhere in the system's file + tree of compiled entries. + + The error messages from this <STRONG>tic</STRONG> have the same format as GNU C error + messages, and can be parsed by GNU Emacs's compile facility. + + Aside from <STRONG>-c</STRONG> and <STRONG>-v</STRONG>, options are not portable: + + <STRONG>o</STRONG> Most of tic's options are not supported by SVr4 <STRONG>tic</STRONG>: + + <STRONG>-0</STRONG> <STRONG>-1</STRONG> <STRONG>-C</STRONG> <STRONG>-G</STRONG> <STRONG>-I</STRONG> <STRONG>-N</STRONG> <STRONG>-R</STRONG> <STRONG>-T</STRONG> <STRONG>-V</STRONG> <STRONG>-a</STRONG> <STRONG>-e</STRONG> <STRONG>-f</STRONG> <STRONG>-g</STRONG> <STRONG>-o</STRONG> <STRONG>-r</STRONG> <STRONG>-s</STRONG> <STRONG>-t</STRONG> <STRONG>-x</STRONG> + + <STRONG>o</STRONG> The NetBSD <STRONG>tic</STRONG> supports a few of the ncurses options + + <STRONG>-a</STRONG> <STRONG>-o</STRONG> <STRONG>-x</STRONG> + + and adds <STRONG>-S</STRONG> (a feature which does the same thing as infocmp's <STRONG>-e</STRONG> + and <STRONG>-E</STRONG> options). + + The SVr4 <STRONG>-c</STRONG> mode does not report bad "use=" links. + + System V does not compile entries to or read entries from your + <EM>$HOME/.terminfo</EM> database unless TERMINFO is explicitly set to it. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + <STRONG>/usr/share/terminfo/?/*</STRONG> + Compiled terminal description database. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, + <STRONG><A HREF="term.5.html">term(5)</A></STRONG>. <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG>. + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Eric S. Raymond &lt;esr@snark.thyrsus.com&gt; and + Thomas E. Dickey &lt;dickey@invisible-island.net&gt; + + + + <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-ALIASES">ALIASES</a></li> +<li><a href="#h3-OPTIONS">OPTIONS</a></li> +<li><a href="#h3-PARAMETERS">PARAMETERS</a></li> +<li><a href="#h3-PROCESSING">PROCESSING</a></li> +</ul> +</li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a> +<ul> +<li><a href="#h3-COMPATIBILITY">COMPATIBILITY</a></li> +<li><a href="#h3-EXTENSIONS">EXTENSIONS</a></li> +</ul> +</li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/toe.1m.html b/deps/ncurses-6.3/doc/html/man/toe.1m.html new file mode 100644 index 0000000..e95dcd2 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/toe.1m.html @@ -0,0 +1,192 @@ +<!-- + **************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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. * + **************************************************************************** + * @Id: toe.1m,v 1.34 2021/06/17 21:26:02 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>toe 1m</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">toe 1m</H1> +<PRE> +<STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>toe</STRONG> - table of (terminfo) entries + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>toe</STRONG> [<STRONG>-v</STRONG>[<EM>n</EM>]] [<STRONG>-ahsuUV</STRONG>] <EM>file...</EM> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + With no options, <STRONG>toe</STRONG> lists all available terminal types by primary name + with descriptions. File arguments specify the directories to be + scanned; if no such arguments are given, your default terminfo + directory is scanned. If you also specify the <STRONG>-h</STRONG> option, a directory + header will be issued as each directory is entered. + + There are other options intended for use by terminfo file maintainers: + + <STRONG>-a</STRONG> report on all of the terminal databases which ncurses would + search, rather than only the first one that it finds. + + If the <STRONG>-s</STRONG> is also given, <STRONG>toe</STRONG> adds a column to the report, + showing (like <STRONG>conflict(1)</STRONG>) which entries which belong to a given + terminal database. An "*" marks entries which differ, and "+" + marks equivalent entries. + + Without the <STRONG>-s</STRONG> option, <STRONG>toe</STRONG> does not attempt to merge duplicates + in its report + + <STRONG>-s</STRONG> sort the output by the entry names. + + <STRONG>-u</STRONG> <EM>file</EM> + says to write a report to the standard output, listing + dependencies in the given terminfo/termcap source file. The + report condenses the "use" relation: each line consists of the + primary name of a terminal that has use capabilities, followed + by a colon, followed by the whitespace-separated primary names + of all terminals which occur in those use capabilities, followed + by a newline + + <STRONG>-U</STRONG> <EM>file</EM> + says to write a report to the standard output, listing reverse + dependencies in the given terminfo/termcap source file. The + report reverses the "use" relation: each line consists of the + primary name of a terminal that occurs in use capabilities, + followed by a colon, followed by the whitespace-separated + primary names of all terminals which depend on it, followed by a + newline. + + <STRONG>-v</STRONG><EM>n</EM> specifies that (verbose) output be written to standard error, + showing <STRONG>toe</STRONG>'s progress. + + The optional parameter <EM>n</EM> is a number from 1 to 10, interpreted + as for <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>. If ncurses is built without tracing support, + the optional parameter is ignored. + + <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, + and exits. + + +</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE> + Without sorting, the <STRONG>-a</STRONG> option reports all of the names found in all of + the terminal databases found by the <STRONG>TERMINFO</STRONG> and <STRONG>TERMINFO_DIRS</STRONG> + environment variables: + + MtxOrb162 16x2 Matrix Orbital LCD display + MtxOrb204 20x4 Matrix Orbital LCD display + MtxOrb Generic Matrix Orbital LCD display + qvt101+ qume qvt 101 PLUS product + qvt119+-25 QVT 119 PLUS with 25 data lines + qansi-g QNX ANSI + qvt103 qume qvt 103 + qnxw QNX4 windows + qansi-w QNX ansi for windows + qnxm QNX4 with mouse events + qvt203-25-w QVT 203 PLUS with 25 by 132 columns + qansi-t QNX ansi without console writes + . . . + + Use the <STRONG>-a</STRONG> and <STRONG>-s</STRONG> options together to show where each terminal + description was found: + + --&gt; /usr/local/ncurses/share/terminfo + ----&gt; /usr/share/terminfo + *-+-: 9term Plan9 terminal emulator for X + *---: Eterm Eterm with xterm-style color support (X Window System) + *-*-: Eterm-256color Eterm with xterm 256-colors + *-*-: Eterm-88color Eterm with 88 colors + *-+-: MtxOrb Generic Matrix Orbital LCD display + *-+-: MtxOrb162 16x2 Matrix Orbital LCD display + *-+-: MtxOrb204 20x4 Matrix Orbital LCD display + *-*-: NCR260VT300WPP NCR 2900_260 vt300 wide mode pc+ kybd + *-+-: aaa ann arbor ambassador/30 lines + *-+-: aaa+dec ann arbor ambassador in dec vt100 mode + *-+-: aaa+rv ann arbor ambassador in reverse video + . . . + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + <STRONG>/usr/share/terminfo/?/*</STRONG> + Compiled terminal description database. + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + This utility is not provided by other implementations. There is no + relevant X/Open or POSIX standard for <STRONG>toe</STRONG>. + + The program name refers to a developer's pun: + + <STRONG>o</STRONG> <STRONG>tic</STRONG>, + + <STRONG>o</STRONG> <STRONG>tac</STRONG> (now <STRONG>tack</STRONG>), + + <STRONG>o</STRONG> <STRONG>toe</STRONG>. + + It replaced a <STRONG>-T</STRONG> option which was briefly supported by the ncurses + <STRONG>infocmp</STRONG> utility in 1995. + + The <STRONG>-a</STRONG> and <STRONG>-s</STRONG> options were added to <STRONG>toe</STRONG> several years later (2006 and + 2011, respectively). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="captoinfo.1m.html">captoinfo(1m)</A></STRONG>, <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="infotocap.1m.html">infotocap(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>, <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, + <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="toe.1m.html">toe(1m)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-EXAMPLES">EXAMPLES</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/tput.1.html b/deps/ncurses-6.3/doc/html/man/tput.1.html new file mode 100644 index 0000000..961edcb --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/tput.1.html @@ -0,0 +1,576 @@ +<!-- + * t + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: tput.1,v 1.72 2021/10/02 21:41:00 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>tput 1</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">tput 1</H1> +<PRE> +<STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> General Commands Manual <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>tput</STRONG>, <STRONG>reset</STRONG> - initialize a terminal or query terminfo database + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <EM>capname</EM> [<EM>parameters</EM>] + <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] [<STRONG>-x</STRONG>] <STRONG>clear</STRONG> + <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>init</STRONG> + <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>reset</STRONG> + <STRONG>tput</STRONG> [<STRONG>-T</STRONG><EM>type</EM>] <STRONG>longname</STRONG> + <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG>&lt;&lt;</STRONG> + <STRONG>tput</STRONG> <STRONG>-V</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + The <STRONG>tput</STRONG> utility uses the <STRONG>terminfo</STRONG> database to make the values of + terminal-dependent capabilities and information available to the shell + (see <STRONG>sh(1)</STRONG>), to initialize or reset the terminal, or return the long + name of the requested terminal type. The result depends upon the + capability's type: + + string + <STRONG>tput</STRONG> writes the string to the standard output. No trailing + newline is supplied. + + integer + <STRONG>tput</STRONG> writes the decimal value to the standard output, with a + trailing newline. + + boolean + <STRONG>tput</STRONG> simply sets the exit code (<STRONG>0</STRONG> for TRUE if the terminal has + the capability, <STRONG>1</STRONG> for FALSE if it does not), and writes nothing + to the standard output. + + Before using a value returned on the standard output, the application + should test the exit code (e.g., <STRONG>$?</STRONG>, see <STRONG>sh(1)</STRONG>) to be sure it is <STRONG>0</STRONG>. + (See the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> and <STRONG>DIAGNOSTICS</STRONG> sections.) For a complete list of + capabilities and the <EM>capname</EM> associated with each, see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + +</PRE><H3><a name="h3-Options">Options</a></H3><PRE> + <STRONG>-S</STRONG> allows more than one capability per invocation of <STRONG>tput</STRONG>. The + capabilities must be passed to <STRONG>tput</STRONG> from the standard input + instead of from the command line (see example). Only one + <EM>capname</EM> is allowed per line. The <STRONG>-S</STRONG> option changes the meaning + of the <STRONG>0</STRONG> and <STRONG>1</STRONG> boolean and string exit codes (see the EXIT CODES + section). + + Because some capabilities may use <EM>string</EM> parameters rather than + <EM>numbers</EM>, <STRONG>tput</STRONG> uses a table and the presence of parameters in its + input to decide whether to use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG>, and how to interpret + the parameters. + + <STRONG>-T</STRONG><EM>type</EM> indicates the <EM>type</EM> of terminal. Normally this option is + unnecessary, because the default is taken from the environment + variable <STRONG>TERM</STRONG>. If <STRONG>-T</STRONG> is specified, then the shell variables + <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> will also be ignored. + + <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, + and exits. + + <STRONG>-x</STRONG> do not attempt to clear the terminal's scrollback buffer using + the extended "E3" capability. + + +</PRE><H3><a name="h3-Commands">Commands</a></H3><PRE> + A few commands (<STRONG>init</STRONG>, <STRONG>reset</STRONG> and <STRONG>longname</STRONG>) are special; they are defined + by the <STRONG>tput</STRONG> program. The others are the names of <EM>capabilities</EM> from the + terminal database (see <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> for a list). Although <STRONG>init</STRONG> and + <STRONG>reset</STRONG> resemble capability names, <STRONG>tput</STRONG> uses several capabilities to + perform these special functions. + + <EM>capname</EM> + indicates the capability from the terminal database. + + If the capability is a string that takes parameters, the + arguments following the capability will be used as parameters + for the string. + + Most parameters are numbers. Only a few terminal capabilities + require string parameters; <STRONG>tput</STRONG> uses a table to decide which to + pass as strings. Normally <STRONG>tput</STRONG> uses <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> to perform the + substitution. If no parameters are given for the capability, + <STRONG>tput</STRONG> writes the string without performing the substitution. + + <STRONG>init</STRONG> If the terminal database is present and an entry for the user's + terminal exists (see <STRONG>-T</STRONG><EM>type</EM>, above), the following will occur: + + (1) first, <STRONG>tput</STRONG> retrieves the current terminal mode settings + for your terminal. It does this by successively testing + + <STRONG>o</STRONG> the standard error, + + <STRONG>o</STRONG> standard output, + + <STRONG>o</STRONG> standard input and + + <STRONG>o</STRONG> ultimately "/dev/tty" + + to obtain terminal settings. Having retrieved these + settings, <STRONG>tput</STRONG> remembers which file descriptor to use when + updating settings. + + (2) if the window size cannot be obtained from the operating + system, but the terminal description (or environment, e.g., + <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> variables specify this), update the + operating system's notion of the window size. + + (3) the terminal modes will be updated: + + <STRONG>o</STRONG> any delays (e.g., newline) specified in the entry will + be set in the tty driver, + + <STRONG>o</STRONG> tabs expansion will be turned on or off according to + the specification in the entry, and + + <STRONG>o</STRONG> if tabs are not expanded, standard tabs will be set + (every 8 spaces). + + (4) if present, the terminal's initialization strings will be + output as detailed in the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> section on <EM>Tabs</EM> <EM>and</EM> + <EM>Initialization</EM>, + + (5) output is flushed. + + If an entry does not contain the information needed for any of + these activities, that activity will silently be skipped. + + <STRONG>reset</STRONG> This is similar to <STRONG>init</STRONG>, with two differences: + + (1) before any other initialization, the terminal modes will be + reset to a "sane" state: + + <STRONG>o</STRONG> set cooked and echo modes, + + <STRONG>o</STRONG> turn off cbreak and raw modes, + + <STRONG>o</STRONG> turn on newline translation and + + <STRONG>o</STRONG> reset any unset special characters to their default + values + + (2) Instead of putting out <EM>initialization</EM> strings, the + terminal's <EM>reset</EM> strings will be output if present (<STRONG>rs1</STRONG>, + <STRONG>rs2</STRONG>, <STRONG>rs3</STRONG>, <STRONG>rf</STRONG>). If the <EM>reset</EM> strings are not present, but + <EM>initialization</EM> strings are, the <EM>initialization</EM> strings will + be output. + + Otherwise, <STRONG>reset</STRONG> acts identically to <STRONG>init</STRONG>. + + <STRONG>longname</STRONG> + If the terminal database is present and an entry for the user's + terminal exists (see <STRONG>-T</STRONG><EM>type</EM> above), then the long name of the + terminal will be put out. The long name is the last name in the + first line of the terminal's description in the <STRONG>terminfo</STRONG> + database [see <STRONG><A HREF="term.5.html">term(5)</A></STRONG>]. + + +</PRE><H3><a name="h3-Aliases">Aliases</a></H3><PRE> + <STRONG>tput</STRONG> handles the <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands specially: it allows + for the possibility that it is invoked by a link with those names. + + If <STRONG>tput</STRONG> is invoked by a link named <STRONG>reset</STRONG>, this has the same effect as + <STRONG>tput</STRONG> <STRONG>reset</STRONG>. The <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> utility also treats a link named <STRONG>reset</STRONG> + specially. + + Before ncurses 6.1, the two utilities were different from each other: + + <STRONG>o</STRONG> <STRONG>tset</STRONG> utility reset the terminal modes and special characters (not + done with <STRONG>tput</STRONG>). + + <STRONG>o</STRONG> On the other hand, <STRONG>tset</STRONG>'s repertoire of terminal capabilities for + resetting the terminal was more limited, i.e., only <STRONG>reset_1string</STRONG>, + <STRONG>reset_2string</STRONG> and <STRONG>reset_file</STRONG> in contrast to the tab-stops and + margins which are set by this utility. + + <STRONG>o</STRONG> The <STRONG>reset</STRONG> program is usually an alias for <STRONG>tset</STRONG>, because of this + difference with resetting terminal modes and special characters. + + With the changes made for ncurses 6.1, the <EM>reset</EM> feature of the two + programs is (mostly) the same. A few differences remain: + + <STRONG>o</STRONG> The <STRONG>tset</STRONG> program waits one second when resetting, in case it + happens to be a hardware terminal. + + <STRONG>o</STRONG> The two programs write the terminal initialization strings to + different streams (i.e., the standard error for <STRONG>tset</STRONG> and the + standard output for <STRONG>tput</STRONG>). + + <STRONG>Note:</STRONG> although these programs write to different streams, + redirecting their output to a file will capture only part of their + actions. The changes to the terminal modes are not affected by + redirecting the output. + + If <STRONG>tput</STRONG> is invoked by a link named <STRONG>init</STRONG>, this has the same effect as + <STRONG>tput</STRONG> <STRONG>init</STRONG>. Again, you are less likely to use that link because another + program named <STRONG>init</STRONG> has a more well-established use. + + +</PRE><H3><a name="h3-Terminal-Size">Terminal Size</a></H3><PRE> + Besides the special commands (e.g., <STRONG>clear</STRONG>), tput treats certain + terminfo capabilities specially: <STRONG>lines</STRONG> and <STRONG>cols</STRONG>. tput calls + <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG> to obtain the terminal size: + + <STRONG>o</STRONG> first, it gets the size from the terminal database (which generally + is not provided for terminal emulators which do not have a fixed + window size) + + <STRONG>o</STRONG> then it asks the operating system for the terminal's size (which + generally works, unless connecting via a serial line which does not + support <EM>NAWS</EM>: negotiations about window size). + + <STRONG>o</STRONG> finally, it inspects the environment variables <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> + which may override the terminal size. + + If the <STRONG>-T</STRONG> option is given tput ignores the environment variables by + calling <STRONG>use_tioctl(TRUE)</STRONG>, relying upon the operating system (or + finally, the terminal database). + + +</PRE><H2><a name="h2-EXAMPLES">EXAMPLES</a></H2><PRE> + <STRONG>tput</STRONG> <STRONG>init</STRONG> + Initialize the terminal according to the type of terminal in the + environmental variable <STRONG>TERM</STRONG>. This command should be included in + everyone's .profile after the environmental variable <STRONG>TERM</STRONG> has been + exported, as illustrated on the <STRONG>profile(5)</STRONG> manual page. + + <STRONG>tput</STRONG> <STRONG>-T5620</STRONG> <STRONG>reset</STRONG> + Reset an AT&amp;T 5620 terminal, overriding the type of terminal in + the environmental variable <STRONG>TERM</STRONG>. + + <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>0</STRONG> <STRONG>0</STRONG> + Send the sequence to move the cursor to row <STRONG>0</STRONG>, column <STRONG>0</STRONG> (the upper + left corner of the screen, usually known as the "home" cursor + position). + + <STRONG>tput</STRONG> <STRONG>clear</STRONG> + Echo the clear-screen sequence for the current terminal. + + <STRONG>tput</STRONG> <STRONG>cols</STRONG> + Print the number of columns for the current terminal. + + <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>cols</STRONG> + Print the number of columns for the 450 terminal. + + <STRONG>bold=`tput</STRONG> <STRONG>smso`</STRONG> <STRONG>offbold=`tput</STRONG> <STRONG>rmso`</STRONG> + Set the shell variables <STRONG>bold</STRONG>, to begin stand-out mode sequence, + and <STRONG>offbold</STRONG>, to end standout mode sequence, for the current + terminal. This might be followed by a prompt: <STRONG>echo</STRONG> <STRONG>"${bold}Please</STRONG> + <STRONG>type</STRONG> <STRONG>in</STRONG> <STRONG>your</STRONG> <STRONG>name:</STRONG> <STRONG>${offbold}\c"</STRONG> + + <STRONG>tput</STRONG> <STRONG>hc</STRONG> + Set exit code to indicate if the current terminal is a hard copy + terminal. + + <STRONG>tput</STRONG> <STRONG>cup</STRONG> <STRONG>23</STRONG> <STRONG>4</STRONG> + Send the sequence to move the cursor to row 23, column 4. + + <STRONG>tput</STRONG> <STRONG>cup</STRONG> + Send the terminfo string for cursor-movement, with no parameters + substituted. + + <STRONG>tput</STRONG> <STRONG>longname</STRONG> + Print the long name from the <STRONG>terminfo</STRONG> database for the type of + terminal specified in the environmental variable <STRONG>TERM</STRONG>. + + <STRONG>tput</STRONG> <STRONG>-S</STRONG> <STRONG>&lt;&lt;!</STRONG> + <STRONG>&gt;</STRONG> <STRONG>clear</STRONG> + <STRONG>&gt;</STRONG> <STRONG>cup</STRONG> <STRONG>10</STRONG> <STRONG>10</STRONG> + <STRONG>&gt;</STRONG> <STRONG>bold</STRONG> + <STRONG>&gt;</STRONG> <STRONG>!</STRONG> + + This example shows <STRONG>tput</STRONG> processing several capabilities in one + invocation. It clears the screen, moves the cursor to position + 10, 10 and turns on bold (extra bright) mode. The list is + terminated by an exclamation mark (<STRONG>!</STRONG>) on a line by itself. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + <STRONG>/usr/share/terminfo</STRONG> + compiled terminal description database + + <STRONG>/usr/share/tabset/*</STRONG> + tab settings for some terminals, in a format appropriate to be + output to the terminal (escape sequences that set margins and + tabs); for more information, see the <EM>Tabs</EM> <EM>and</EM> <EM>Initialization</EM>, + section of <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> + + +</PRE><H2><a name="h2-EXIT-CODES">EXIT CODES</a></H2><PRE> + If the <STRONG>-S</STRONG> option is used, <STRONG>tput</STRONG> checks for errors from each line, and if + any errors are found, will set the exit code to 4 plus the number of + lines with errors. If no errors are found, the exit code is <STRONG>0</STRONG>. No + indication of which line failed can be given so exit code <STRONG>1</STRONG> will never + appear. Exit codes <STRONG>2</STRONG>, <STRONG>3</STRONG>, and <STRONG>4</STRONG> retain their usual interpretation. If + the <STRONG>-S</STRONG> option is not used, the exit code depends on the type of + <EM>capname</EM>: + + <EM>boolean</EM> + a value of <STRONG>0</STRONG> is set for TRUE and <STRONG>1</STRONG> for FALSE. + + <EM>string</EM> a value of <STRONG>0</STRONG> is set if the <EM>capname</EM> is defined for this + terminal <EM>type</EM> (the value of <EM>capname</EM> is returned on standard + output); a value of <STRONG>1</STRONG> is set if <EM>capname</EM> is not defined for + this terminal <EM>type</EM> (nothing is written to standard output). + + <EM>integer</EM> + a value of <STRONG>0</STRONG> is always set, whether or not <EM>capname</EM> is defined + for this terminal <EM>type</EM>. To determine if <EM>capname</EM> is defined + for this terminal <EM>type</EM>, the user must test the value written + to standard output. A value of <STRONG>-1</STRONG> means that <EM>capname</EM> is not + defined for this terminal <EM>type</EM>. + + <EM>other</EM> <STRONG>reset</STRONG> or <STRONG>init</STRONG> may fail to find their respective files. In + that case, the exit code is set to 4 + <STRONG>errno</STRONG>. + + Any other exit code indicates an error; see the DIAGNOSTICS section. + + +</PRE><H2><a name="h2-DIAGNOSTICS">DIAGNOSTICS</a></H2><PRE> + <STRONG>tput</STRONG> prints the following error messages and sets the corresponding + exit codes. + + exit code error message + --------------------------------------------------------------------- + <STRONG>0</STRONG> (<EM>capname</EM> is a numeric variable that is not specified in + the <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG> database for this terminal type, e.g. + <STRONG>tput</STRONG> <STRONG>-T450</STRONG> <STRONG>lines</STRONG> and <STRONG>tput</STRONG> <STRONG>-Thp2621</STRONG> <STRONG>xmc</STRONG>) + <STRONG>1</STRONG> no error message is printed, see the <STRONG>EXIT</STRONG> <STRONG>CODES</STRONG> section. + <STRONG>2</STRONG> usage error + <STRONG>3</STRONG> unknown terminal <EM>type</EM> or no <STRONG>terminfo</STRONG> database + <STRONG>4</STRONG> unknown <STRONG>terminfo</STRONG> capability <EM>capname</EM> + <STRONG>&gt;4</STRONG> error occurred in -S + --------------------------------------------------------------------- + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + The <STRONG>tput</STRONG> command was begun by Bill Joy in 1980. The initial version + only cleared the screen. + + AT&amp;T System V provided a different <STRONG>tput</STRONG> command: + + <STRONG>o</STRONG> SVr2 provided a rudimentary <STRONG>tput</STRONG> which checked the parameter + against each predefined capability and returned the corresponding + value. This version of <STRONG>tput</STRONG> did not use <STRONG><A HREF="curs_terminfo.3x.html">tparm(3x)</A></STRONG> for the + capabilities which are parameterized. + + <STRONG>o</STRONG> SVr3 replaced that, a year later, by a more extensive program whose + <STRONG>init</STRONG> and <STRONG>reset</STRONG> subcommands (more than half the program) were + incorporated from the <STRONG>reset</STRONG> feature of BSD <STRONG>tset</STRONG> written by Eric + Allman. + + <STRONG>o</STRONG> SVr4 added color initialization using the <EM>orig</EM><STRONG>_</STRONG><EM>colors</EM> and + <EM>orig</EM><STRONG>_</STRONG><EM>pairs</EM> capabilities in the <STRONG>init</STRONG> subcommand. + + Keith Bostic replaced the BSD <STRONG>tput</STRONG> command in 1989 with a new + implementation based on the AT&amp;T System V program <STRONG>tput</STRONG>. Like the AT&amp;T + program, Bostic's version accepted some parameters named for <EM>terminfo</EM> + <EM>capabilities</EM> (<STRONG>clear</STRONG>, <STRONG>init</STRONG>, <STRONG>longname</STRONG> and <STRONG>reset</STRONG>). However (because he + had only termcap available), it accepted <EM>termcap</EM> <EM>names</EM> for other + capabilities. Also, Bostic's BSD <STRONG>tput</STRONG> did not modify the terminal I/O + modes as the earlier BSD <STRONG>tset</STRONG> had done. + + At the same time, Bostic added a shell script named "clear", which used + <STRONG>tput</STRONG> to clear the screen. + + Both of these appeared in 4.4BSD, becoming the "modern" BSD + implementation of <STRONG>tput</STRONG>. + + This implementation of <STRONG>tput</STRONG> began from a different source than AT&amp;T or + BSD: Ross Ridge's <EM>mytinfo</EM> package, published on <EM>comp.sources.unix</EM> in + December 1992. Ridge's program made more sophisticated use of the + terminal capabilities than the BSD program. Eric Raymond used that + <STRONG>tput</STRONG> program (and other parts of <EM>mytinfo</EM>) in ncurses in June 1995. + Using the portions dealing with terminal capabilities almost without + change, Raymond made improvements to the way the command-line + parameters were handled. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + This implementation of <STRONG>tput</STRONG> differs from AT&amp;T <STRONG>tput</STRONG> in two important + areas: + + <STRONG>o</STRONG> <STRONG>tput</STRONG> <EM>capname</EM> writes to the standard output. That need not be a + regular terminal. However, the subcommands which manipulate + terminal modes may not use the standard output. + + The AT&amp;T implementation's <STRONG>init</STRONG> and <STRONG>reset</STRONG> commands use the BSD + (4.1c) <STRONG>tset</STRONG> source, which manipulates terminal modes. It + successively tries standard output, standard error, standard input + before falling back to "/dev/tty" and finally just assumes a 1200Bd + terminal. When updating terminal modes, it ignores errors. + + Until changes made after ncurses 6.0, <STRONG>tput</STRONG> did not modify terminal + modes. <STRONG>tput</STRONG> now uses a similar scheme, using functions shared with + <STRONG>tset</STRONG> (and ultimately based on the 4.4BSD <STRONG>tset</STRONG>). If it is not able + to open a terminal, e.g., when running in <STRONG>cron</STRONG>, <STRONG>tput</STRONG> will return an + error. + + <STRONG>o</STRONG> AT&amp;T <STRONG>tput</STRONG> guesses the type of its <EM>capname</EM> operands by seeing if all + of the characters are numeric, or not. + + Most implementations which provide support for <EM>capname</EM> operands use + the <EM>tparm</EM> function to expand parameters in it. That function + expects a mixture of numeric and string parameters, requiring <STRONG>tput</STRONG> + to know which type to use. + + This implementation uses a table to determine the parameter types + for the standard <EM>capname</EM> operands, and an internal library function + to analyze nonstandard <EM>capname</EM> operands. + + Besides providing more reliable operation than AT&amp;T's utility, a + portability problem is introduced by this analysis: An OpenBSD + developer adapted the internal library function from ncurses to + port NetBSD's termcap-based <STRONG>tput</STRONG> to terminfo. That had been + modified to interpret multiple commands on a line. Portable + applications should not rely upon this feature; ncurses provides it + to support applications written specifically for OpenBSD. + + This implementation (unlike others) can accept both <EM>termcap</EM> and + <EM>terminfo</EM> names for the <EM>capname</EM> feature, if <EM>termcap</EM> support is compiled + in. However, the predefined <EM>termcap</EM> and <EM>terminfo</EM> names have two + ambiguities in this case (and the <EM>terminfo</EM> name is assumed): + + <STRONG>o</STRONG> The <EM>termcap</EM> name <STRONG>dl</STRONG> corresponds to the <EM>terminfo</EM> name <STRONG>dl1</STRONG> (delete + one line). + The <EM>terminfo</EM> name <STRONG>dl</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>DL</STRONG> (delete a + given number of lines). + + <STRONG>o</STRONG> The <EM>termcap</EM> name <STRONG>ed</STRONG> corresponds to the <EM>terminfo</EM> name <STRONG>rmdc</STRONG> (end + delete mode). + The <EM>terminfo</EM> name <STRONG>ed</STRONG> corresponds to the <EM>termcap</EM> name <STRONG>cd</STRONG> (clear to + end of screen). + + The <STRONG>longname</STRONG> and <STRONG>-S</STRONG> options, and the parameter-substitution features + used in the <STRONG>cup</STRONG> example, were not supported in BSD curses before + 4.3reno (1989) or in AT&amp;T/USL curses before SVr4 (1988). + + IEEE Std 1003.1/The Open Group Base Specifications Issue 7 + (POSIX.1-2008) documents only the operands for <STRONG>clear</STRONG>, <STRONG>init</STRONG> and <STRONG>reset</STRONG>. + There are a few interesting observations to make regarding that: + + <STRONG>o</STRONG> In this implementation, <STRONG>clear</STRONG> is part of the <EM>capname</EM> support. The + others (<STRONG>init</STRONG> and <STRONG>longname</STRONG>) do not correspond to terminal + capabilities. + + <STRONG>o</STRONG> Other implementations of <STRONG>tput</STRONG> on SVr4-based systems such as + Solaris, IRIX64 and HPUX as well as others such as AIX and Tru64 + provide support for <EM>capname</EM> operands. + + <STRONG>o</STRONG> A few platforms such as FreeBSD recognize termcap names rather than + terminfo capability names in their respective <STRONG>tput</STRONG> commands. Since + 2010, NetBSD's <STRONG>tput</STRONG> uses terminfo names. Before that, it (like + FreeBSD) recognized termcap names. + + Beginning in 2021, FreeBSD uses the ncurses <STRONG>tput</STRONG>, configured for + both terminfo (tested first) and termcap (as a fallback). + + Because (apparently) <EM>all</EM> of the certified Unix systems support the full + set of capability names, the reasoning for documenting only a few may + not be apparent. + + <STRONG>o</STRONG> X/Open Curses Issue 7 documents <STRONG>tput</STRONG> differently, with <EM>capname</EM> and + the other features used in this implementation. + + <STRONG>o</STRONG> That is, there are two standards for <STRONG>tput</STRONG>: 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 capabilities database. + + <STRONG>o</STRONG> While it is certainly possible to write a <STRONG>tput</STRONG> program without + using curses, none of the systems which have a curses + implementation provide a <STRONG>tput</STRONG> utility which does not provide the + <EM>capname</EM> feature. + + 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 (i.e., Unix features documented in SVID 3): + + <STRONG>o</STRONG> It assigns exit code 4 to "invalid operand", which may be the same + as <EM>unknown</EM> <EM>capability</EM>. For instance, the source code for Solaris' + xcurses uses the term "invalid" in this case. + + <STRONG>o</STRONG> It assigns exit code 255 to a numeric variable that is not + specified in the terminfo database. That likely is a documentation + error, confusing the <STRONG>-1</STRONG> written to the standard output for an + absent or cancelled numeric value versus an (unsigned) exit code. + + The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes + as ncurses. + + NetBSD curses documents different exit codes which do not correspond to + either ncurses or X/Open. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="tabs.1.html">tabs(1)</A></STRONG>, <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG>, <STRONG><A HREF="curs_termcap.3x.html">curs_termcap(3x)</A></STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>. + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="tput.1.html">tput(1)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Options">Options</a></li> +<li><a href="#h3-Commands">Commands</a></li> +<li><a href="#h3-Aliases">Aliases</a></li> +<li><a href="#h3-Terminal-Size">Terminal Size</a></li> +</ul> +</li> +<li><a href="#h2-EXAMPLES">EXAMPLES</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-EXIT-CODES">EXIT CODES</a></li> +<li><a href="#h2-DIAGNOSTICS">DIAGNOSTICS</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/tset.1.html b/deps/ncurses-6.3/doc/html/man/tset.1.html new file mode 100644 index 0000000..920ff01 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/tset.1.html @@ -0,0 +1,419 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + **************************************************************************** + * @Id: tset.1,v 1.58 2021/09/18 21:21:55 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>tset 1</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">tset 1</H1> +<PRE> +<STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> General Commands Manual <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>tset</STRONG>, <STRONG>reset</STRONG> - terminal initialization + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>tset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal</EM>] + <STRONG>reset</STRONG> [<STRONG>-IQVcqrsw</STRONG>] [<STRONG>-</STRONG>] [<STRONG>-e</STRONG> <EM>ch</EM>] [<STRONG>-i</STRONG> <EM>ch</EM>] [<STRONG>-k</STRONG> <EM>ch</EM>] [<STRONG>-m</STRONG> <EM>mapping</EM>] [<EM>terminal</EM>] + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-tset---initialization">tset - initialization</a></H3><PRE> + This program initializes terminals. + + First, <STRONG>tset</STRONG> retrieves the current terminal mode settings for your + terminal. It does this by successively testing + + <STRONG>o</STRONG> the standard error, + + <STRONG>o</STRONG> standard output, + + <STRONG>o</STRONG> standard input and + + <STRONG>o</STRONG> ultimately "/dev/tty" + + to obtain terminal settings. Having retrieved these settings, <STRONG>tset</STRONG> + remembers which file descriptor to use when updating settings. + + Next, <STRONG>tset</STRONG> determines the type of terminal that you are using. This + determination is done as follows, using the first terminal type found. + + 1. The <STRONG>terminal</STRONG> argument specified on the command line. + + 2. The value of the <STRONG>TERM</STRONG> environmental variable. + + 3. (BSD systems only.) The terminal type associated with the standard + error output device in the <EM>/etc/ttys</EM> file. (On System-V-like UNIXes + and systems using that convention, <EM>getty</EM> does this job by setting <STRONG>TERM</STRONG> + according to the type passed to it by <EM>/etc/inittab</EM>.) + + 4. The default terminal type, "unknown". + + If the terminal type was not specified on the command-line, the <STRONG>-m</STRONG> + option mappings are then applied (see the section <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> + for more information). Then, if the terminal type begins with a + question mark ("?"), the user is prompted for confirmation of the + terminal type. An empty response confirms the type, or, another type + can be entered to specify a new type. Once the terminal type has been + determined, the terminal description for the terminal is retrieved. If + no terminal description is found for the type, the user is prompted for + another terminal type. + + Once the terminal description is retrieved, + + <STRONG>o</STRONG> if the "<STRONG>-w</STRONG>" option is enabled, <STRONG>tset</STRONG> may update the terminal's + window size. + + If the window size cannot be obtained from the operating system, + but the terminal description (or environment, e.g., <STRONG>LINES</STRONG> and + <STRONG>COLUMNS</STRONG> variables specify this), use this to set the operating + system's notion of the window size. + + <STRONG>o</STRONG> if the "<STRONG>-c</STRONG>" option is enabled, the backspace, interrupt and line + kill characters (among many other things) are set + + <STRONG>o</STRONG> unless the "<STRONG>-I</STRONG>" option is enabled, the terminal and tab + <EM>initialization</EM> strings are sent to the standard error output, and + <STRONG>tset</STRONG> waits one second (in case a hardware reset was issued). + + <STRONG>o</STRONG> 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 standard error output. + + +</PRE><H3><a name="h3-reset---reinitialization">reset - reinitialization</a></H3><PRE> + When invoked as <STRONG>reset</STRONG>, <STRONG>tset</STRONG> sets the terminal modes to "sane" values: + + <STRONG>o</STRONG> sets cooked and echo modes, + + <STRONG>o</STRONG> turns off cbreak and raw modes, + + <STRONG>o</STRONG> turns on newline translation and + + <STRONG>o</STRONG> resets any unset special characters to their default values + + before doing the terminal initialization described above. Also, rather + than using the terminal <EM>initialization</EM> strings, it uses the terminal + <EM>reset</EM> strings. + + The <STRONG>reset</STRONG> command is useful after a program dies leaving a terminal in + an abnormal state: + + <STRONG>o</STRONG> you may have to type + + <EM>&lt;LF&gt;</EM><STRONG>reset</STRONG><EM>&lt;LF&gt;</EM> + + (the line-feed character is normally control-J) to get the terminal + to work, as carriage-return may no longer work in the abnormal + state. + + <STRONG>o</STRONG> Also, the terminal will often not echo the command. + + +</PRE><H2><a name="h2-OPTIONS">OPTIONS</a></H2><PRE> + The options are as follows: + + <STRONG>-c</STRONG> Set control characters and modes. + + <STRONG>-e</STRONG> <EM>ch</EM> + Set the erase character to <EM>ch</EM>. + + <STRONG>-I</STRONG> Do not send the terminal or tab initialization strings to the + terminal. + + <STRONG>-i</STRONG> <EM>ch</EM> + Set the interrupt character to <EM>ch</EM>. + + <STRONG>-k</STRONG> <EM>ch</EM> + Set the line kill character to <EM>ch</EM>. + + <STRONG>-m</STRONG> <EM>mapping</EM> + Specify a mapping from a port type to a terminal. See the section + <STRONG>TERMINAL</STRONG> <STRONG>TYPE</STRONG> <STRONG>MAPPING</STRONG> for more information. + + <STRONG>-Q</STRONG> Do not display any values for the erase, interrupt and line kill + characters. Normally <STRONG>tset</STRONG> displays the values for control + characters which differ from the system's default values. + + <STRONG>-q</STRONG> The terminal type is displayed to the standard output, and the + terminal is not initialized in any way. The option "-" by itself + is equivalent but archaic. + + <STRONG>-r</STRONG> Print the terminal type to the standard error output. + + <STRONG>-s</STRONG> Print the sequence of shell commands to initialize the environment + variable <STRONG>TERM</STRONG> to the standard output. See the section <STRONG>SETTING</STRONG> <STRONG>THE</STRONG> + <STRONG>ENVIRONMENT</STRONG> for details. + + <STRONG>-V</STRONG> reports the version of ncurses which was used in this program, and + exits. + + <STRONG>-w</STRONG> Resize the window to match the size deduced via <STRONG><A HREF="curs_terminfo.3x.html">setupterm(3x)</A></STRONG>. + Normally this has no effect, unless <STRONG>setupterm</STRONG> is not able to + detect the window size. + + The arguments for the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options may either be entered as + actual characters or by using the "hat" notation, i.e., control-h may + be specified as "^H" or "^h". + + If neither <STRONG>-c</STRONG> or <STRONG>-w</STRONG> is given, both options are assumed. + + +</PRE><H2><a name="h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></H2><PRE> + It is often desirable to enter the terminal type and information about + the terminal's capabilities into the shell's environment. This is done + using the <STRONG>-s</STRONG> option. + + When the <STRONG>-s</STRONG> option is specified, the commands to enter the information + into the shell's environment are written to the standard output. If + the <STRONG>SHELL</STRONG> environmental variable ends in "csh", the commands are for + <STRONG>csh</STRONG>, otherwise, they are for <STRONG>sh</STRONG>. Note, the <STRONG>csh</STRONG> commands set and unset + the shell variable <STRONG>noglob</STRONG>, leaving it unset. The following line in the + <STRONG>.login</STRONG> or <STRONG>.profile</STRONG> files will initialize the environment correctly: + + eval `tset -s options ... ` + + +</PRE><H2><a name="h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></H2><PRE> + When the terminal is not hardwired into the system (or the current + system information is incorrect) the terminal type derived from the + <EM>/etc/ttys</EM> file or the <STRONG>TERM</STRONG> environmental variable is often something + generic like <STRONG>network</STRONG>, <STRONG>dialup</STRONG>, or <STRONG>unknown</STRONG>. When <STRONG>tset</STRONG> is used in a + startup script it is often desirable to provide information about the + type of terminal used on such ports. + + The <STRONG>-m</STRONG> options maps from some set of conditions to a terminal type, + that is, to tell <STRONG>tset</STRONG> "If I'm on this port at a particular speed, guess + that I'm on that kind of terminal". + + The argument to the <STRONG>-m</STRONG> option consists of an optional port type, an + optional operator, an optional baud rate specification, an optional + colon (":") character and a terminal type. The port type is a string + (delimited by either the operator or the colon character). The + operator may be any combination of "&gt;", "&lt;", "@", and "!"; "&gt;" means + greater than, "&lt;" means less than, "@" means equal to and "!" inverts + the sense of the test. The baud rate is specified as a number and is + compared with the speed of the standard error output (which should be + the control terminal). The terminal type is a string. + + If the terminal type is not specified on the command line, the <STRONG>-m</STRONG> + mappings are applied to the terminal type. If the port type and baud + rate match the mapping, the terminal type specified in the mapping + replaces the current type. If more than one mapping is specified, the + first applicable mapping is used. + + For example, consider the following mapping: <STRONG>dialup&gt;9600:vt100</STRONG>. The + port type is dialup , the operator is &gt;, the baud rate specification is + 9600, and the terminal type is vt100. The result of this mapping is to + specify that if the terminal type is <STRONG>dialup</STRONG>, and the baud rate is + greater than 9600 baud, a terminal type of <STRONG>vt100</STRONG> will be used. + + If no baud rate is specified, the terminal type will match any baud + rate. If no port type is specified, the terminal type will match any + port type. For example, <STRONG>-m</STRONG> <STRONG>dialup:vt100</STRONG> <STRONG>-m</STRONG> <STRONG>:?xterm</STRONG> will cause any + dialup port, regardless of baud rate, to match the terminal type vt100, + and any non-dialup port type to match the terminal type ?xterm. Note, + because of the leading question mark, the user will be queried on a + default port as to whether they are actually using an xterm terminal. + + No whitespace characters are permitted in the <STRONG>-m</STRONG> option argument. + Also, to avoid problems with meta-characters, it is suggested that the + entire <STRONG>-m</STRONG> option argument be placed within single quote characters, and + that <STRONG>csh</STRONG> users insert a backslash character ("\") before any + exclamation marks ("!"). + + +</PRE><H2><a name="h2-HISTORY">HISTORY</a></H2><PRE> + A <STRONG>reset</STRONG> command appeared in 1BSD (March 1978), written by Kurt Shoens. + This program set the <EM>erase</EM> and <EM>kill</EM> characters to <STRONG>^H</STRONG> (backspace) and <STRONG>@</STRONG> + respectively. Mark Horton improved that in 3BSD (October 1979), adding + <EM>intr</EM>, <EM>quit</EM>, <EM>start</EM>/<EM>stop</EM> and <EM>eof</EM> characters as well as changing the + program to avoid modifying any user settings. That version of <STRONG>reset</STRONG> + did not use the termcap database. + + A separate <STRONG>tset</STRONG> command was provided in 1BSD by Eric Allman, using the + termcap database. Allman's comments in the source code indicate that + he began work in October 1977, continuing development over the next few + years. + + According to comments in the source code, the <STRONG>tset</STRONG> program was modified + in September 1980, to use logic copied from the 3BSD "reset" when it + was invoked as <STRONG>reset</STRONG>. This version appeared in 4.1cBSD, late in 1982. + + Other developers (e.g., Keith Bostic and Jim Bloom) continued to modify + <STRONG>tset</STRONG> until 4.4BSD was released in 1993. + + The <STRONG>ncurses</STRONG> implementation was lightly adapted from the 4.4BSD sources + for a terminfo environment by Eric S. Raymond &lt;esr@snark.thyrsus.com&gt;. + + +</PRE><H2><a name="h2-COMPATIBILITY">COMPATIBILITY</a></H2><PRE> + Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7 + (POSIX.1-2008) nor X/Open Curses Issue 7 documents <STRONG>tset</STRONG> or <STRONG>reset</STRONG>. + + The AT&amp;T <STRONG>tput</STRONG> utility (AIX, HPUX, Solaris) incorporated the terminal- + mode manipulation as well as termcap-based features such as resetting + tabstops from <STRONG>tset</STRONG> in BSD (4.1c), presumably with the intention of + making <STRONG>tset</STRONG> obsolete. However, each of those systems still provides + <STRONG>tset</STRONG>. In fact, the commonly-used <STRONG>reset</STRONG> utility is always an alias for + <STRONG>tset</STRONG>. + + The <STRONG>tset</STRONG> utility provides for backward-compatibility with BSD + environments (under most modern UNIXes, <STRONG>/etc/inittab</STRONG> and <STRONG>getty(1)</STRONG> can + set <STRONG>TERM</STRONG> appropriately for each dial-up line; this obviates what was + <STRONG>tset</STRONG>'s most important use). This implementation behaves like 4.4BSD + <STRONG>tset</STRONG>, with a few exceptions specified here. + + A few options are different because the <STRONG>TERMCAP</STRONG> variable is no longer + supported under terminfo-based <STRONG>ncurses</STRONG>: + + <STRONG>o</STRONG> The <STRONG>-S</STRONG> option of BSD <STRONG>tset</STRONG> no longer works; it prints an error + message to the standard error and dies. + + <STRONG>o</STRONG> The <STRONG>-s</STRONG> option only sets <STRONG>TERM</STRONG>, not <STRONG>TERMCAP</STRONG>. + + There was an undocumented 4.4BSD feature that invoking <STRONG>tset</STRONG> via a link + named "TSET" (or via any other name beginning with an upper-case + letter) set the terminal to use upper-case only. This feature has been + omitted. + + The <STRONG>-A</STRONG>, <STRONG>-E</STRONG>, <STRONG>-h</STRONG>, <STRONG>-u</STRONG> and <STRONG>-v</STRONG> options were deleted from the <STRONG>tset</STRONG> utility in + 4.4BSD. None of them were documented in 4.3BSD and all are of limited + utility at best. The <STRONG>-a</STRONG>, <STRONG>-d</STRONG>, and <STRONG>-p</STRONG> options are similarly not + documented or useful, but were retained as they appear to be in + widespread use. It is strongly recommended that any usage of these + three options be changed to use the <STRONG>-m</STRONG> option instead. The <STRONG>-a</STRONG>, <STRONG>-d</STRONG>, and + <STRONG>-p</STRONG> options are therefore omitted from the usage summary above. + + Very old systems, e.g., 3BSD, used a different terminal driver which + was replaced in 4BSD in the early 1980s. To accommodate these older + systems, the 4BSD <STRONG>tset</STRONG> provided a <STRONG>-n</STRONG> option to specify that the new + terminal driver should be used. This implementation does not provide + that choice. + + It is still permissible to specify the <STRONG>-e</STRONG>, <STRONG>-i</STRONG>, and <STRONG>-k</STRONG> options without + arguments, although it is strongly recommended that such usage be fixed + to explicitly specify the character. + + As of 4.4BSD, executing <STRONG>tset</STRONG> as <STRONG>reset</STRONG> no longer implies the <STRONG>-Q</STRONG> option. + Also, the interaction between the - option and the <EM>terminal</EM> argument in + some historic implementations of <STRONG>tset</STRONG> has been removed. + + The <STRONG>-c</STRONG> and <STRONG>-w</STRONG> options are not found in earlier implementations. + However, a different window size-change feature was provided in 4.4BSD. + + <STRONG>o</STRONG> In 4.4BSD, <STRONG>tset</STRONG> uses the window size from the termcap description + to set the window size if <STRONG>tset</STRONG> is not able to obtain the window + size from the operating system. + + <STRONG>o</STRONG> In ncurses, <STRONG>tset</STRONG> obtains the window size using <STRONG>setupterm</STRONG>, which may + be from the operating system, the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment + variables or the terminal description. + + Obtaining the window size from the terminal description is common to + both implementations, but considered obsolescent. Its only practical + use is for hardware terminals. Generally speaking, a window size would + be unset only if there were some problem obtaining the value from the + operating system (and <STRONG>setupterm</STRONG> would still fail). For that reason, + the <STRONG>LINES</STRONG> and <STRONG>COLUMNS</STRONG> environment variables may be useful for working + around window-size problems. Those have the drawback that if the + window is resized, those variables must be recomputed and reassigned. + To do this more easily, use the <STRONG><A HREF="resize.1.html">resize(1)</A></STRONG> program. + + +</PRE><H2><a name="h2-ENVIRONMENT">ENVIRONMENT</a></H2><PRE> + The <STRONG>tset</STRONG> command uses these environment variables: + + SHELL + tells <STRONG>tset</STRONG> whether to initialize <STRONG>TERM</STRONG> using <STRONG>sh</STRONG> or <STRONG>csh</STRONG> syntax. + + TERM Denotes your terminal type. Each terminal type is distinct, + though many are similar. + + TERMCAP + may denote the location of a termcap database. If it is not an + absolute pathname, e.g., begins with a "/", <STRONG>tset</STRONG> removes the + variable from the environment before looking for the terminal + description. + + +</PRE><H2><a name="h2-FILES">FILES</a></H2><PRE> + /etc/ttys + system port name to terminal type mapping database (BSD versions + only). + + /usr/share/terminfo + terminal capability database + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG>csh(1)</STRONG>, <STRONG>sh(1)</STRONG>, <STRONG>stty(1)</STRONG>, <STRONG><A HREF="curs_terminfo.3x.html">curs_terminfo(3x)</A></STRONG>, <STRONG>tty(4)</STRONG>, <STRONG><A HREF="terminfo.5.html">terminfo(5)</A></STRONG>, + <STRONG>ttys(5)</STRONG>, <STRONG>environ(7)</STRONG> + + This describes <STRONG>ncurses</STRONG> version 6.3 (patch 20211021). + + + + <STRONG><A HREF="tset.1.html">tset(1)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-tset---initialization">tset - initialization</a></li> +<li><a href="#h3-reset---reinitialization">reset - reinitialization</a></li> +</ul> +</li> +<li><a href="#h2-OPTIONS">OPTIONS</a></li> +<li><a href="#h2-SETTING-THE-ENVIRONMENT">SETTING THE ENVIRONMENT</a></li> +<li><a href="#h2-TERMINAL-TYPE-MAPPING">TERMINAL TYPE MAPPING</a></li> +<li><a href="#h2-HISTORY">HISTORY</a></li> +<li><a href="#h2-COMPATIBILITY">COMPATIBILITY</a></li> +<li><a href="#h2-ENVIRONMENT">ENVIRONMENT</a></li> +<li><a href="#h2-FILES">FILES</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/user_caps.5.html b/deps/ncurses-6.3/doc/html/man/user_caps.5.html new file mode 100644 index 0000000..0fd1f15 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/user_caps.5.html @@ -0,0 +1,409 @@ +<!-- + **************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 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. * + **************************************************************************** + * @Id: user_caps.5,v 1.17 2021/06/17 21:30:22 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>user_caps 5</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">user_caps 5</H1> +<PRE> +<STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> File Formats Manual <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + user_caps - user-defined terminfo capabilities + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>tic</STRONG> <STRONG>-x,</STRONG> <STRONG>infocmp</STRONG> <STRONG>-x</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + +</PRE><H3><a name="h3-Background">Background</a></H3><PRE> + Before ncurses 5.0, terminfo databases used a <EM>fixed</EM> <EM>repertoire</EM> 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. + + Most of the <EM>extensions</EM> 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: + + <STRONG>o</STRONG> The <EM>binary</EM> <EM>format</EM> itself is not described in the X/Open Curses + documentation. Only the <EM>source</EM> <EM>format</EM> is described. + + Library developers rely upon the SVr4 documentation, and reverse- + engineering the compiled terminfo files to match the binary format. + + <STRONG>o</STRONG> 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. + + The format cannot represent very large numeric capabilities, nor + can it represent large numbers of special keyboard definitions. + + <STRONG>o</STRONG> The tables of capability names differ between implementations. + + Although they <EM>may</EM> 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. + + While ncurses' 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, ncurses can be + configured with tables which match the terminal databases for AIX, + HP-UX or OSF/1, rather than the default Solaris-like configuration. + + <STRONG>o</STRONG> In SVr4 curses and ncurses, the terminal database is defined at + compile-time using a text file which lists the different terminal + capabilities. + + In principle, the text-file can be extended, but doing this + requires recompiling and reinstalling the library. The text-file + used in ncurses for terminal capabilities includes details for + various systems past the documented X/Open Curses features. For + example, ncurses supports these capabilities in each configuration: + + memory_lock + (meml) lock memory above cursor + + memory_unlock + (memu) unlock memory + + box_chars_1 + (box1) box characters primary set + + The memory lock/unlock capabilities were included because they were + used in the X11R6 terminal description for <STRONG>xterm</STRONG>. The <EM>box1</EM> + capability is used in tic to help with terminal descriptions + written for AIX. + + During the 1990s, some users were reluctant to use terminfo in spite of + its performance advantages over termcap: + + <STRONG>o</STRONG> The fixed repertoire prevented users from adding features for + unanticipated terminal improvements (or required them to reuse + existing capabilities as a workaround). + + <STRONG>o</STRONG> The limitation to 16-bit signed integers was also mentioned. + Because termcap stores everything as a string, it could represent + larger numbers. + + Although termcap's extensibility was rarely used (it was never the + <EM>speaker</EM> who had actually used the feature), the criticism had a point. + ncurses 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 <EM>user-defined</EM> <EM>capabilities</EM> because no modifications to the toolset's + predefined capability names are needed. + + The ncurses utilities <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> have a command-line option "-x" + to control whether the nonstandard capabilities are stored or + retrieved. A library function <STRONG>use_extended_names</STRONG> is provided for the + same purpose. + + When compiling a terminal database, if "-x" is set, <STRONG>tic</STRONG> will store a + user-defined capability if the capability name is not one of the + predefined names. + + Because ncurses provides a termcap library interface, these user- + defined capabilities may be visible to termcap applications: + + <STRONG>o</STRONG> The termcap interface (like all implementations of termcap) + requires that the capability names are 2-characters. + + When the capability is simple enough for use in a termcap + application, it is provided as a 2-character name. + + <STRONG>o</STRONG> 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. + + <STRONG>o</STRONG> 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, 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 + ncurses database uses a convention based on <STRONG>xterm</STRONG> to provide + extended special-key names. + + Fitting that into termcap's limitation of 2-character names would + be pointless. These extended keys are available only with + terminfo. + + +</PRE><H3><a name="h3-Recognized-capabilities">Recognized capabilities</a></H3><PRE> + The ncurses library uses the user-definable capabilities. While the + terminfo database may have other extensions, ncurses makes explicit + checks for these: + + AX <EM>boolean</EM>, asserts that the terminal interprets SGR 39 and SGR 49 + by resetting the foreground and background color, respectively, + to the default. + + This is a feature recognized by the <STRONG>screen</STRONG> program as well. + + E3 <EM>string</EM>, tells how to clear the terminal's scrollback buffer. + When present, the <STRONG><A HREF="clear.1.html">clear(1)</A></STRONG> program sends this before clearing the + terminal. + + The command "<STRONG>tput</STRONG> <STRONG>clear</STRONG>" does the same thing. + + RGB + <EM>boolean</EM>, <EM>number</EM> <STRONG>or</STRONG> <EM>string</EM>, to assert that the <STRONG>set_a_foreground</STRONG> + and <STRONG>set_a_background</STRONG> capabilities correspond to <EM>direct</EM> <EM>colors</EM>, + using an RGB (red/green/blue) convention. This capability allows + the <STRONG>color_content</STRONG> function to return appropriate values without + requiring the application to initialize colors using <STRONG>init_color</STRONG>. + + The capability type determines the values which ncurses sees: + + <EM>boolean</EM> + implies that the number of bits for red, green and blue are + the same. Using the maximum number of colors, ncurses adds + two, divides that sum by three, and assigns the result to red, + green and blue in that order. + + 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. + + <EM>number</EM> + tells ncurses what result to add to red, green and blue. If + ncurses runs out of bits, blue (and green) lose just as in the + <EM>boolean</EM> case. + + <EM>string</EM> + explicitly list the number of bits used for red, green and + blue components as a slash-separated list of decimal integers. + + Because there are several RGB encodings in use, applications + which make assumptions about the number of bits per color are + unlikely to work reliably. As a trivial case, for example, one + could define <STRONG>RGB#1</STRONG> to represent the standard eight ANSI colors, + i.e., one bit per color. + + U8 <EM>number</EM>, asserts that ncurses must use Unicode values for line- + drawing characters, and that it should ignore the alternate + character set capabilities when the locale uses UTF-8 encoding. + For more information, see the discussion of <STRONG>NCURSES_NO_UTF8_ACS</STRONG> + in <STRONG><A HREF="ncurses.3x.html">ncurses(3x)</A></STRONG>. + + Set this capability to a nonzero value to enable it. + + XM <EM>string</EM>, override ncurses's built-in string which enables/disables + <STRONG>xterm</STRONG> mouse mode. + + 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 it what was done with the mouse. + + The mouse protocol is enabled when the <EM>mask</EM> passed in the + <STRONG>mousemask</STRONG> function is nonzero. By default, ncurses handles the + responses for the X11 xterm mouse protocol. It also knows about + the <EM>SGR</EM> <EM>1006</EM> xterm mouse protocol, but must to be told to look + for this specifically. It will not be able to guess which mode + is used, because the responses are enough alike that only + confusion would result. + + The <STRONG>XM</STRONG> capability has a single parameter. If nonzero, the mouse + protocol should be enabled. If zero, the mouse protocol should + be disabled. 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 <EM>SGR</EM> <EM>1006</EM> xterm mouse protocol. + + 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 terminal database building blocks for this mouse feature also + have an experimental capability <EM>xm</EM>. 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. + + <EM>xm</EM> shows the format of the mouse responses. In this experimental + capability, the parameters are + + <EM>p1</EM> y-ordinate + + <EM>p2</EM> x-ordinate + + <EM>p3</EM> button + + <EM>p4</EM> state, e.g., pressed or released + + <EM>p5</EM> y-ordinate starting region + + <EM>p6</EM> x-ordinate starting region + + <EM>p7</EM> y-ordinate ending region + + <EM>p8</EM> x-ordinate ending region + + Here are examples from the terminal database for the most + commonly used xterm mouse protocols: + + xterm+x11mouse|X11 xterm mouse protocol, + kmous=\E[M, XM=\E[?1000%?%p1%{1}%=%th%el%;, + xm=\E[M + %?%p4%t%p3%e%{3}%;%' '%+%c + %p2%'!'%+%c + %p1%'!'%+%c, + + xterm+sm+1006|xterm SGR-mouse, + kmous=\E[&lt;, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;, + xm=\E[&lt;%i%p3%d; + %p1%d; + %p2%d; + %?%p4%tM%em%;, + + +</PRE><H3><a name="h3-Extended-key-definitions">Extended key-definitions</a></H3><PRE> + 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. + + Since 1999, <STRONG>xterm</STRONG> has supported <EM>shift</EM>, <EM>control</EM>, <EM>alt</EM>, and <EM>meta</EM> modifiers + which produce distinct special-key strings. In a terminal description, + ncurses has no special knowledge of the modifiers used. Applications + can use the <EM>naming</EM> <EM>convention</EM> established for <STRONG>xterm</STRONG> to find these + special keys in the terminal description. + + Starting with the curses convention that <EM>key</EM> <EM>names</EM> begin with "k" and + that shifted special keys are an uppercase name, ncurses' terminal + database defines these names to which a suffix is added: + + <EM>Name</EM> <EM>Description</EM> + --------------------------------------------------------------- + kDC special form of kdch1 (delete character) + kDN special form of kcud1 (cursor down) + kEND special form of kend (End) + kHOM special form of khome (Home) + kLFT special form of kcub1 (cursor-left or cursor-back) + kNXT special form of knext (Next, or Page-Down) + kPRV special form of kprev (Prev, or Page-Up) + kRIT special form of kcuf1 (cursor-right, or cursor-forward) + kUP special form of kcuu1 (cursor-up) + + These are the suffixes used to denote the modifiers: + + <EM>Value</EM> <EM>Description</EM> + ---------------------------------- + 2 Shift + 3 Alt + 4 Shift + Alt + 5 Control + 6 Shift + Control + 7 Alt + Control + 8 Shift + Alt + Control + 9 Meta + 10 Meta + Shift + 11 Meta + Alt + 12 Meta + Alt + Shift + 13 Meta + Ctrl + 14 Meta + Ctrl + Shift + 15 Meta + Ctrl + Alt + 16 Meta + Ctrl + Alt + Shift + + None of these are predefined; terminal descriptions can refer to <EM>names</EM> + which ncurses will allocate at runtime to <EM>key-codes</EM>. To use these keys + in an ncurses program, an application could do this: + + <STRONG>o</STRONG> using a list of extended key <EM>names</EM>, ask <STRONG><A HREF="curs_terminfo.3x.html">tigetstr(3x)</A></STRONG> for their + values, and + + <STRONG>o</STRONG> given the list of values, ask <STRONG><A HREF="key_defined.3x.html">key_defined(3x)</A></STRONG> for the <EM>key-code</EM> + which would be returned for those keys by <STRONG><A HREF="curs_getch.3x.html">wgetch(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + The "-x" extension feature of <STRONG>tic</STRONG> and <STRONG>infocmp</STRONG> has been adopted in + NetBSD curses. That implementation stores user-defined capabilities, + but makes no use of these capabilities itself. + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="infocmp.1m.html">infocmp(1m)</A></STRONG>, <STRONG><A HREF="tic.1m.html">tic(1m)</A></STRONG>. + + The terminal database section <EM>NCURSES</EM> <EM>USER-DEFINABLE</EM> <EM>CAPABILITIES</EM> + summarizes commonly-used user-defined capabilities which are used in + the terminal descriptions. Some of those features are mentioned in + <STRONG>screen(1)</STRONG> or <STRONG>tmux(1)</STRONG>. + + <EM>XTerm</EM> <EM>Control</EM> <EM>Sequences</EM> provides further information on the <STRONG>xterm</STRONG> + features which are used in these extended capabilities. + + +</PRE><H2><a name="h2-AUTHORS">AUTHORS</a></H2><PRE> + Thomas E. Dickey + beginning with ncurses 5.0 (1999) + + + + <STRONG><A HREF="user_caps.5.html">user_caps(5)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a> +<ul> +<li><a href="#h3-Background">Background</a></li> +<li><a href="#h3-Recognized-capabilities">Recognized capabilities</a></li> +<li><a href="#h3-Extended-key-definitions">Extended key-definitions</a></li> +</ul> +</li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHORS">AUTHORS</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/man/wresize.3x.html b/deps/ncurses-6.3/doc/html/man/wresize.3x.html new file mode 100644 index 0000000..d02a0a4 --- /dev/null +++ b/deps/ncurses-6.3/doc/html/man/wresize.3x.html @@ -0,0 +1,113 @@ +<!-- + **************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2015 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: Thomas E. Dickey 1996 + * @Id: wresize.3x,v 1.17 2020/10/17 23:56:38 tom Exp @ +--> +<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"> +<HTML> +<HEAD> +<meta http-equiv="Content-Type" content="text/html; charset=us-ascii"> +<meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts"> +<TITLE>wresize 3x</TITLE> +<link rel="author" href="mailto:bug-ncurses@gnu.org"> +<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> +</HEAD> +<BODY> +<H1 class="no-header">wresize 3x</H1> +<PRE> +<STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> + + + + +</PRE><H2><a name="h2-NAME">NAME</a></H2><PRE> + <STRONG>wresize</STRONG> - resize a curses window + + +</PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE> + <STRONG>#include</STRONG> <STRONG>&lt;curses.h&gt;</STRONG> + + <STRONG>int</STRONG> <STRONG>wresize(WINDOW</STRONG> <STRONG>*</STRONG><EM>win</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>lines</EM><STRONG>,</STRONG> <STRONG>int</STRONG> <EM>columns</EM><STRONG>);</STRONG> + + +</PRE><H2><a name="h2-DESCRIPTION">DESCRIPTION</a></H2><PRE> + This is an extension to the curses library. It reallocates storage for + an <STRONG>ncurses</STRONG> window to adjust its dimensions to the specified values. If + either dimension is larger than the current values, the window's data + is filled with blanks that have the current background rendition (as + set by <STRONG>wbkgdset</STRONG>) merged into them. + + +</PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE> + The function returns the integer <STRONG>ERR</STRONG> upon failure and <STRONG>OK</STRONG> on success. + It will fail if either of the dimensions less than or equal to zero, or + if an error occurs while (re)allocating memory for the window. + + +</PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE> + The only restriction placed on the dimensions is that they be greater + than zero. The dimensions are not compared to <STRONG>curses</STRONG> screen dimensions + to simplify the logic of <STRONG>resizeterm</STRONG>. The caller must ensure that the + window's dimensions fit within the actual screen dimensions. + + +</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE> + It is not possible to resize windows with SVr4 curses. + + This extension of ncurses was introduced in mid-1995. It was adopted + in NetBSD curses (2001) and PDCurses (2003). + + +</PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE> + <STRONG><A HREF="resizeterm.3x.html">resizeterm(3x)</A></STRONG>. + + +</PRE><H2><a name="h2-AUTHOR">AUTHOR</a></H2><PRE> + Thomas Dickey (from an equivalent function written in 1988 for BSD + curses). + + + + <STRONG><A HREF="wresize.3x.html">wresize(3x)</A></STRONG> +</PRE> +<div class="nav"> +<ul> +<li><a href="#h2-NAME">NAME</a></li> +<li><a href="#h2-SYNOPSIS">SYNOPSIS</a></li> +<li><a href="#h2-DESCRIPTION">DESCRIPTION</a></li> +<li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li> +<li><a href="#h2-NOTES">NOTES</a></li> +<li><a href="#h2-PORTABILITY">PORTABILITY</a></li> +<li><a href="#h2-SEE-ALSO">SEE ALSO</a></li> +<li><a href="#h2-AUTHOR">AUTHOR</a></li> +</ul> +</div> +</BODY> +</HTML> diff --git a/deps/ncurses-6.3/doc/html/ncurses-intro.html b/deps/ncurses-6.3/doc/html/ncurses-intro.html new file mode 100644 index 0000000..ebf2e2e --- /dev/null +++ b/deps/ncurses-6.3/doc/html/ncurses-intro.html @@ -0,0 +1,3446 @@ +<!-- + $Id: ncurses-intro.html,v 1.54 2020/02/02 23:34:34 tom Exp $ + **************************************************************************** + * Copyright 2019,2020 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.2.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>Writing Programs with NCURSES</h1> + + <blockquote> + by Eric S. Raymond and Zeyd M. Ben-Halim<br> + updates since release 1.9.9e by Thomas Dickey + </blockquote> + + <h1>Contents</h1> + + <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> + + <hr> + + <h1><a name="introduction" id="introduction">Introduction</a></h1> + + <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> + + <h2><a name="history" id="history">A Brief History of Curses</a></h2> + + <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&amp;T Bell Labs, and made an improved <code>termcap</code> + library called <code>terminfo</code> (i.e., + &ldquo;libterm&rdquo;), 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&amp;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&amp;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> + + <h2><a name="scope" id="scope">Scope of This Document</a></h2> + + <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 &ldquo;standout&rdquo; 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 &ldquo;magic + cookies&rdquo; 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> + &lt;zmbenhal@netcom.com&gt;. <a href= + "mailto:esr@snark.thyrsus.com">Eric S. Raymond</a> + &lt;esr@snark.thyrsus.com&gt; wrote many of the new features in + versions after 1.8.1 and wrote most of this introduction. + J&uuml;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> + + <h2><a name="terminology" id="terminology">Terminology</a></h2> + + <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> + + <h1><a name="curses" id="curses">The Curses Library</a></h1> + + <h2><a name="overview" id="overview">An Overview of Curses</a></h2> + + <h3><a name="compiling" id="compiling">Compiling Programs using + Curses</a></h3> + + <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> + #include &lt;curses.h&gt; +</pre> + + <p>at the top of the program source. The screen package uses the + Standard I/O library, so <code>&lt;curses.h&gt;</code> includes + <code>&lt;stdio.h&gt;</code>. <code>&lt;curses.h&gt;</code> also + includes <code>&lt;termios.h&gt;</code>, + <code>&lt;termio.h&gt;</code>, or <code>&lt;sgtty.h&gt;</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> + + <h3><a name="updating" id="updating">Updating the Screen</a></h3> + + <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 &ldquo;make it look + like this,&rdquo; and let the package implementation determine + the most efficient way to repaint the screen.</p> + + <h3><a name="stdscr" id="stdscr">Standard Windows and Function + Naming Conventions</a></h3> + + <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 &ldquo;w&rdquo; + 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 + &ldquo;mv&rdquo; and the desired (y, x) coordinates prepended to + the arguments to the function. For example, the calls</p> + + <pre> + move(y, x); + addch(ch); +</pre> + + <p>can be replaced by</p> + + <pre> + mvaddch(y, x, ch); +</pre> + + <p>and</p> + + <pre> + wmove(win, y, x); + waddch(win, ch); +</pre> + + <p>can be replaced by</p> + + <pre> + 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> + + <h3><a name="variables" id="variables">Variables</a></h3> + + <p>The <code>curses</code> library sets some variables describing + the terminal capabilities.</p> + + <pre> + 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 &ldquo;char&rdquo; (e.g., + <code>bool doneit;</code>)</dd> + + <dt><code>TRUE</code> + </dt> + + <dd>boolean &ldquo;true&rdquo; flag (1).</dd> + + <dt><code>FALSE</code> + </dt> + + <dd>boolean &ldquo;false&rdquo; 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> + + <h2><a name="using" id="using">Using the Library</a></h2> + + <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> +#include &lt;stdlib.h&gt; +#include &lt;curses.h&gt; +#include &lt;signal.h&gt; + +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-&gt;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> + + <h3><a name="starting" id="starting">Starting up</a></h3> + + <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> + + <h3><a name="output" id="output">Output</a></h3> + + <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> + + <h3><a name="input" id="input">Input</a></h3> + + <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 &ldquo;cooked&rdquo; 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> + + <h3><a name="formschars" id="formschars">Using Forms + Characters</a></h3> + + <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> + + <h3><a name="attributes" id="attributes">Character Attributes and + Color</a></h3> + + <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> + + <h3><a name="mouse" id="mouse">Mouse Interfacing</a></h3> + + <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> + + <h3><a name="finishing" id="finishing">Finishing Up</a></h3> + + <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> + + <h2><a name="functions" id="functions">Function Descriptions</a></h2> + + <p>We describe the detailed behavior of some important curses + functions here, as a supplement to the manual page + descriptions.</p> + + <h3><a name="init" id="init">Initialization and Wrapup</a></h3> + + <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> + + <h3><a name="flush" id="flush">Causing Output to the Terminal</a></h3> + + <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> + + <h3><a name="lowlevel" id="lowlevel">Low-Level Capability + Access</a></h3> + + <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> + + <h3><a name="debugging" id="debugging">Debugging</a></h3> + + <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 &ldquo;trace&rdquo; 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> + + <h2><a name="hints" id="hints">Hints, Tips, and Tricks</a></h2> + + <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> + + <h3><a name="caution" id="caution">Some Notes of Caution</a></h3> + + <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> + + <h3><a name="leaving" id="leaving">Temporarily Leaving NCURSES + Mode</a></h3> + + <p>Sometimes you will want to write a program that spends most of + its time in screen mode, but occasionally returns to ordinary + &ldquo;cooked&rdquo; 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> + 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> + + <h3><a name="xterm" id="xterm">Using NCURSES under XTERM</a></h3> + + <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> + + <h3><a name="screens" id="screens">Handling Multiple Terminal + Screens</a></h3> + + <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> + + <h3><a name="testing" id="testing">Testing for Terminal + Capabilities</a></h3> + + <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 + &ldquo;smart&rdquo; (cursor-addressable) or &ldquo;stupid&rdquo;. + 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> + + <h3><a name="tuning" id="tuning">Tuning for Speed</a></h3> + + <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> + + <h3><a name="special" id="special">Special Features of + NCURSES</a></h3> + + <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> + + <h2><a name="compat" id="compat">Compatibility with Older + Versions</a></h2> + + <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> + + <h3><a name="refbug" id="refbug">Refresh of Overlapping + Windows</a></h3> + + <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> + + <h3><a name="backbug" id="backbug">Background Erase</a></h3> + + <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> + + <h2><a name="xsifuncs" id="xsifuncs">XSI Curses Conformance</a></h2> + + <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> + + <h1><a name="panels" id="panels">The Panels Library</a></h1> + + <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&amp;T + System V. The version documented here is the <code>panel</code> + code distributed with <code>ncurses</code>.</p> + + <h2><a name="pcompile" id="pcompile">Compiling With the Panels + Library</a></h2> + + <p>Your panels-using modules must import the panels library + declarations with</p> + + <pre> + #include &lt;panel.h&gt; +</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> + + <h2><a name="poverview" id="poverview">Overview of Panels</a></h2> + + <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> + + <h2><a name="pstdscr" id="pstdscr">Panels, Input, and the + Standard Screen</a></h2> + + <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> + + <h2><a name="hiding" id="hiding">Hiding Panels</a></h2> + + <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> + + <h2><a name="pmisc" id="pmisc">Miscellaneous Other Facilities</a></h2> + + <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> + + <h1><a name="menu" id="menu">The Menu Library</a></h1> + + <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&amp;T + System V. The version documented here is the <code>menu</code> + code distributed with <code>ncurses</code>.</p> + + <h2><a name="mcompile" id="mcompile">Compiling With the menu + Library</a></h2> + + <p>Your menu-using modules must import the menu library + declarations with</p> + + <pre> + #include &lt;menu.h&gt; +</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> + + <h2><a name="moverview" id="moverview">Overview of Menus</a></h2> + + <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> + + <h2><a name="mselect" id="mselect">Selecting items</a></h2> + + <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> + + <h2><a name="mdisplay" id="mdisplay">Menu Display</a></h2> + + <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 &ldquo;raster-scan&rdquo; 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> + + <h2><a name="mwindows" id="mwindows">Menu Windows</a></h2> + + <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> + + <h2><a name="minput" id="minput">Processing Menu Input</a></h2> + + <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> + + <h2><a name="mmisc" id="mmisc">Miscellaneous Other Features</a></h2> + + <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> + + <h1><a name="form" id="form">The Forms Library</a></h1> + + <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&amp;T + System V. The version documented here is the <code>form</code> + code distributed with <code>ncurses</code>.</p> + + <h2><a name="fcompile" id="fcompile">Compiling With the form + Library</a></h2> + + <p>Your form-using modules must import the form library + declarations with</p> + + <pre> + #include &lt;form.h&gt; +</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> + + <h2><a name="foverview" id="foverview">Overview of Forms</a></h2> + + <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 &ldquo;process user + requests&rdquo; 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> + + <h2><a name="fcreate" id="fcreate">Creating and Freeing Fields + and Forms</a></h2> + + <p>The basic function for creating fields is + <code>new_field()</code>:</p> + + <pre> +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> +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> +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> +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> + + <h2><a name="fattributes" id="fattributes">Fetching and Changing + Field Attributes</a></h2> + + <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> + + <h3><a name="fsizes" id="fsizes">Fetching Size and Location + Data</a></h3> + + <p>You can retrieve field sizes and locations through:</p> + + <pre> +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> + + <h3><a name="flocation" id="flocation">Changing the Field + Location</a></h3> + + <p>It is possible to move a field's location on the screen:</p> + + <pre> +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> + + <h3><a name="fjust" id="fjust">The Justification Attribute</a></h3> + + <p>One-line fields may be unjustified, justified right, justified + left, or centered. Here is how you manipulate this attribute:</p> + + <pre> +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> + + <h3><a name="fdispatts" id="fdispatts">Field Display + Attributes</a></h3> + + <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> +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> + + <h3><a name="foptions" id="foptions">Field Option Bits</a></h3> + + <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> +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> + + <h2><a name="fstatus" id="fstatus">Field Status</a></h2> + + <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> +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> + + <h2><a name="fuser" id="fuser">Field User Pointer</a></h2> + + <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> +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> + + <h2><a name="fdynamic" id="fdynamic">Variable-Sized Fields</a></h2> + + <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> +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> + + <h2><a name="fvalidation" id="fvalidation">Field Validation</a></h2> + + <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> +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> + + <h3><a name="ftype_alpha" id="ftype_alpha">TYPE_ALPHA</a></h3> + + <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> +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> + + <h3><a name="ftype_alnum" id="ftype_alnum">TYPE_ALNUM</a></h3> + + <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> +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> + + <h3><a name="ftype_enum" id="ftype_enum">TYPE_ENUM</a></h3> + + <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> +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> + + <h3><a name="ftype_integer" id="ftype_integer">TYPE_INTEGER</a></h3> + + <p>This field type accepts an integer. It is set up as + follows:</p> + + <pre> +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> + + <h3><a name="ftype_numeric" id="ftype_numeric">TYPE_NUMERIC</a></h3> + + <p>This field type accepts a decimal number. It is set up as + follows:</p> + + <pre> +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> + + <h3><a name="ftype_regexp" id="ftype_regexp">TYPE_REGEXP</a></h3> + + <p>This field type accepts data matching a regular expression. It + is set up as follows:</p> + + <pre> +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> + + <h2><a name="fbuffer" id="fbuffer">Direct Field Buffer + Manipulation</a></h2> + + <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> +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> +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> + + <h2><a name="formattrs" id="formattrs">Attributes of Forms</a></h2> + + <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> +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> + + <h2><a name="fdisplay" id="fdisplay">Control of Form Display</a></h2> + + <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> +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> +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> +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> +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> + + <h2><a name="fdriver" id="fdriver">Input Processing in the Forms + Driver</a></h2> + + <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> +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> + + <h3><a name="fpage" id="fpage">Page Navigation Requests</a></h3> + + <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> + + <h3><a name="ffield" id="ffield">Inter-Field Navigation + Requests</a></h3> + + <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> + + <h3><a name="fifield" id="fifield">Intra-Field Navigation + Requests</a></h3> + + <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> + + <h3><a name="fscroll" id="fscroll">Scrolling Requests</a></h3> + + <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> + + <h3><a name="fedit" id="fedit">Editing Requests</a></h3> + + <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> + + <h3><a name="forder" id="forder">Order Requests</a></h3> + + <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> + + <h3><a name="fappcmds" id="fappcmds">Application Commands</a></h3> + + <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> + + <h2><a name="fhooks" id="fhooks">Field Change Hooks</a></h2> + + <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> +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> + + <h2><a href="#ffocus">Field Change Commands</a></h2> + + <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> +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> +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> + + <h2><a name="frmoptions" id="frmoptions">Form Options</a></h2> + + <p>Like fields, forms may have control option bits. They can be + changed or queried with these functions:</p> + + <pre> +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> + + <h2><a name="fcustom" id="fcustom">Custom Validation Types</a></h2> + + <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> + + <h3><a name="flinktypes" id="flinktypes">Union Types</a></h3> + + <p>The simplest way to create a custom data type is to compose it + from two preexisting ones:</p> + + <pre> +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> + + <h3><a name="fnewtypes" id="fnewtypes">New Field Types</a></h3> + + <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> +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> + + <h3><a name="fcheckargs" id="fcheckargs">Validation Function + Arguments</a></h3> + + <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> +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> + + <h3><a name="fcustorder" id="fcustorder">Order Functions For + Custom Types</a></h3> + + <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> +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> + + <h3><a name="fcustprobs" id="fcustprobs">Avoiding Problems</a></h3> + + <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/deps/ncurses-5.9/doc/ncurses-intro.doc b/deps/ncurses-6.3/doc/ncurses-intro.doc similarity index 95% rename from deps/ncurses-5.9/doc/ncurses-intro.doc rename to deps/ncurses-6.3/doc/ncurses-intro.doc index 85179d1..4e752ed 100644 --- a/deps/ncurses-5.9/doc/ncurses-intro.doc +++ b/deps/ncurses-6.3/doc/ncurses-intro.doc @@ -132,20 +132,36 @@ A Brief History of Curses Historically, the first ancestor of curses was the routines written to - provide screen-handling for the game rogue; these used the - already-existing termcap database facility for describing terminal + provide screen-handling for the vi editor; these used the termcap + 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. - - System III UNIX from Bell Labs featured a rewritten and much-improved - curses library. It introduced the terminfo format. 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, curses evolved to use more - facilities and offer more capabilities, going far beyond BSD curses in - power and flexibility. + 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). + + After graduation, one of those students went to work at AT&T Bell + Labs, and made an improved termcap library called terminfo (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 (tic) to compile the terminal descriptions. + As a general rule, AT&T did not identify the developers in the + 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). + + 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, curses evolved to use more facilities and offer more + capabilities, going far beyond BSD curses in power and flexibility. Scope of This Document @@ -153,7 +169,7 @@ Scope of This Document curses API with some clearly marked extensions. It includes the following System V curses features: * Support for multiple screen highlights (BSD curses could only - handle one `standout' highlight, usually reverse-video). + handle one "standout" highlight, usually reverse-video). * Support for line- and box-drawing using forms characters. * Recognition of function keys on input. * Color support. @@ -164,7 +180,7 @@ Scope of This Document 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 + even on terminals that leave "magic cookies" on the screen to mark changes in attributes. The ncurses package can also capture and use event reports from a @@ -242,8 +258,8 @@ An Overview of Curses standard screen) is provided by default to make changes on. A window is a purely internal representation. It is used to build and - store a potential image of a portion of the terminal. It doesn't bear - any necessary relation to what is really on the terminal screen; it's + 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. To make the section of physical screen corresponding to a window @@ -253,7 +269,7 @@ An Overview of Curses 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 + programmer can effectively say "make it look like this," and let the package implementation determine the most efficient way to repaint the screen. @@ -269,8 +285,8 @@ An Overview of Curses Many functions are defined to use stdscr as a default screen. For example, to add a character to stdscr, one calls addch() with the desired character as argument. To write to a different window. use the - routine waddch() (for `w'indow-specific addch()) is provided. This - convention of prepending function names with a `w' when they are to be + routine waddch() (for window-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. @@ -278,7 +294,7 @@ An Overview of Curses another, the routines move() and wmove() 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 + prefix "mv" and the desired (y, x) coordinates prepended to the arguments to the function. For example, the calls move(y, x); addch(ch); @@ -310,13 +326,13 @@ An Overview of Curses general usefulness: bool - boolean type, actually a `char' (e.g., bool doneit;) + boolean type, actually a "char" (e.g., bool doneit;) TRUE - boolean `true' flag (1). + boolean "true" flag (1). FALSE - boolean `false' flag (0). + boolean "false" flag (0). ERR error flag returned by routines on a failure (-1). @@ -332,6 +348,7 @@ Using the Library function names and parameters as mentioned above. Here is a sample program to motivate the discussion: +#include <stdlib.h> #include <curses.h> #include <signal.h> @@ -380,7 +397,7 @@ main(int argc, char *argv[]) /* process the command keystroke */ } - finish(0); /* we're done */ + finish(0); /* we are done */ } static void finish(int sig) @@ -410,7 +427,7 @@ static void finish(int sig) 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 scrollok(). If you want the cursor to be left in place after the last - change, use leaveok(). If this isn't done, refresh() will move the + change, use leaveok(). If this is not done, refresh() will move the cursor to the window's current (y, x) coordinates after updating it. You can create new windows of your own using the functions newwin(), @@ -453,8 +470,8 @@ static void finish(int sig) set, will call addch() 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 getch(); otherwise, the + the terminal has echoing enabled and is in ordinary "cooked" mode, one + or the other has to changed before calling getch(); otherwise, the program's output will be unpredictable. When you need to accept line-oriented input in a window, the functions @@ -498,7 +515,7 @@ static void finish(int sig) of the highlights you want into the character argument of an addch() call, or any other output call that takes a chtype argument. - The other is to set the current-highlight value. This is logical-or'ed + The other is to set the current-highlight value. This is logical-ORed with any highlight you specify the first way. You do this with the functions attron(), attroff(), and attrset(); see the manual pages for details. Color is a special kind of highlight. The package actually @@ -509,8 +526,8 @@ static void finish(int sig) range of eight non-conflicting values could have been used as the first arguments of the init_pair() values. - Once you've done an init_pair() that creates color-pair N, you can use - COLOR_PAIR(N) as a highlight that invokes that particular color + Once you have done an init_pair() that creates color-pair N, you can + use COLOR_PAIR(N) as a highlight that invokes that particular color combination. Note that COLOR_PAIR(N), for constant N, is itself a compile-time constant and can be used in initializers. @@ -549,11 +566,11 @@ static void finish(int sig) otherwise another mouse event might come in and make the first one inaccessible). - Each call to getmouse() fills a structure (the address of which you'll - 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. + Each call to getmouse() 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. The mouse structure contains two additional fields which may be significant in the future as ncurses interfaces to new kinds of @@ -566,7 +583,7 @@ static void finish(int sig) The class of visible events may be changed at any time via mousemask(). 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 don't make clicks visible, they + 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. @@ -700,7 +717,7 @@ Function Descriptions more terminals at once. Setupterm() also stores the names section of the terminal description in the global character array ttytype[]. Subsequent calls to setupterm() will overwrite - this array, so you'll have to save it yourself if need be. + this array, so you will have to save it yourself if need be. Debugging @@ -709,7 +726,7 @@ Function Descriptions trace() 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 + 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 TRACE_ defines in the curses.h file for @@ -739,7 +756,7 @@ Hints, Tips, and Tricks Some Notes of Caution If you find yourself thinking you need to use noraw() or nocbreak(), - think again and move carefully. It's probably better design to use + think again and move carefully. It is probably better design to use getstr() or one of its relatives to simulate cooked mode. The noraw() and nocbreak() functions try to restore cooked mode, but they may end up clobbering some control bits set before you started your @@ -747,7 +764,7 @@ Hints, Tips, and Tricks likely to hurt your application's usability with other curses libraries. - Bear in mind that refresh() is a synonym for wrefresh(stdscr). Don't + Bear in mind that refresh() is a synonym for wrefresh(stdscr). Do not try to mix use of stdscr with use of windows declared by newwin(); a refresh() call will blow them off the screen. The right way to handle this is to use subwin(), or not touch stdscr at all and tile your @@ -773,7 +790,7 @@ Hints, Tips, and Tricks Temporarily Leaving NCURSES Mode Sometimes you will want to write a program that spends most of its - time in screen mode, but occasionally returns to ordinary `cooked' + 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 ncurses. @@ -838,8 +855,8 @@ Hints, Tips, and Tricks tigetflag(), tigetnum(), and tigetstr() to do your testing. 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 + 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 tigetstr("cup") is non-NULL. Alternatively, you can include the term.h file and test the value of the macro cursor_address. @@ -847,8 +864,8 @@ Hints, Tips, and Tricks Tuning for Speed Use the addchstr() family of functions for fast screen-painting of - text when you know the text doesn't contain any control characters. - Try to make attribute changes infrequent on your screens. Don't use + 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 immedok() option! Special Features of NCURSES @@ -912,7 +929,7 @@ Compatibility with Older Versions 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's hard to + 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 @@ -996,8 +1013,8 @@ Overview of Panels in the proper order to resolve overlaps. The standard window, stdscr, is considered below all panels. - Details on the panels functions are available in the man pages. We'll - just hit the highlights here. + Details on the panels functions are available in the man pages. We + will just hit the highlights here. You create a panel from a window by calling new_panel() on a window pointer. It then becomes the top of the deck. The panel's window is @@ -1008,11 +1025,11 @@ Overview of Panels 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 replace_window. The new window may be of different size; the - panel code will re-compute all overlaps. This operation doesn't change - the panel's position in the deck. + panel code will re-compute all overlaps. This operation does not + change the panel's position in the deck. To move a panel's window, use move_panel(). The mvwin() function on - the panel's window isn't sufficient because it doesn't update the + 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. @@ -1027,12 +1044,12 @@ Overview of Panels Typically, you will want to call update_panels() and doupdate() just before accepting command input, once in each cycle of interaction with the user. If you call update_panels() after each and every panel - write, you'll generate a lot of unnecessary refresh activity and + write, you will generate a lot of unnecessary refresh activity and screen flicker. Panels, Input, and the Standard Screen - You shouldn't mix wnoutrefresh() or wrefresh() operations with panels + You should not mix wnoutrefresh() or wrefresh() operations with panels code; this will work only if the argument window is either in the top panel or unobscured by any other panels. @@ -1050,7 +1067,7 @@ Panels, Input, and the Standard Screen Hiding Panels - It's possible to remove a panel from the deck temporarily; use + It is possible to remove a panel from the deck temporarily; use hide_panel for this. Use show_panel() to render it visible again. The predicate function panel_hidden tests whether or not a panel is hidden. @@ -1061,7 +1078,7 @@ Hiding Panels Miscellaneous Other Facilities - It's possible to navigate the deck using the functions panel_above() + It is possible to navigate the deck using the functions panel_above() and panel_below. Handed a panel pointer, they return the panel above or below that panel. Handed NULL, they return the bottom-most or top-most panel. @@ -1155,7 +1172,7 @@ Menu Display 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' + (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 @@ -1221,7 +1238,7 @@ Processing Menu Input REQ_SCR_DPAGE, and REQ_SCR_UPAGE. The REQ_TOGGLE_ITEM selects or deselects the current item. It is for - use in multi-valued menus; if you use it with O_ONEVALUE on, you'll + use in multi-valued menus; if you use it with O_ONEVALUE on, you will get an error return (E_REQUEST_DENIED). Each menu has an associated pattern buffer. The menu_driver() logic @@ -1325,7 +1342,7 @@ Overview of Forms obviously designed to resemble that of the menu library wherever possible. - In forms programs, however, the `process user requests' is somewhat + 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. @@ -1347,7 +1364,7 @@ FIELD *new_field(int height, int width, /* new field size */ 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 stdscr by default but need not be - stdscr if you've done an explicit set_form_win() call. + stdscr if you have done an explicit set_form_win() call. 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 @@ -1592,7 +1609,7 @@ int field_status(FIELD *field); /* fetch mode of field */ Calling field_status() on a field not currently selected for input will return a correct value. Calling field_status() on a field that is currently selected for input may not necessarily give a correct field - status value, because entered data isn't necessarily copied to buffer + 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 field_status() either (1) in the field's exit validation check routine, (2) from the field's or form's @@ -1661,7 +1678,7 @@ Field Validation 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 doesn't match the validation type will fail. Some + 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. @@ -1695,10 +1712,10 @@ int set_field_type(FIELD *field, /* field to alter */ TYPE_ALPHA, /* type to associate */ int width); /* maximum width of field */ - The width argument sets a minimum width of data. Typically you'll want - to set this to the field width; if it's greater than the field width, - the validation check will always fail. A minimum width of zero makes - field completion optional. + The width 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. TYPE_ALNUM @@ -1710,9 +1727,9 @@ int set_field_type(FIELD *field, /* field to alter */ int width); /* maximum width of field */ The width argument sets a minimum width of data. As with TYPE_ALPHA, - typically you'll want to set this to the field width; if it's greater - than the field width, the validation check will always fail. A minimum - width of zero makes field completion optional. + 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. TYPE_ENUM @@ -1801,7 +1818,7 @@ char *field_buffer(FIELD *field, /* field to query */ int bufindex); /* number of buffer to query */ Normally, the state of the zero-numbered buffer for each field is set - by the user's editing actions on that field. It's sometimes useful to + 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: int set_field_buffer(FIELD *field, /* field to alter */ @@ -1816,7 +1833,7 @@ int set_field_buffer(FIELD *field, /* field to alter */ Calling field_buffer() on a field not currently selected for input will return a correct value. Calling field_buffer() on a field that is currently selected for input may not necessarily give a correct field - buffer value, because entered data isn't necessarily copied to buffer + 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 field_buffer() either (1) in the field's exit validation check routine, (2) from the field's @@ -1876,7 +1893,7 @@ Control of Form Display erased at post/unpost time. The inner window or subwindow is where the current form page is actually displayed. - In order to declare your own frame window for a form, you'll need to + 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: int scale_form(FORM *form, /* form to query */ @@ -2388,13 +2405,12 @@ FIELD *link_fieldtype(FIELDTYPE *type1, entered. * A field-validation function to be applied on exit from the field. - Here's how you do that: + Here is how you do that: 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 */ At least one of the arguments of new_fieldtype() must be non-NULL. The @@ -2418,7 +2434,7 @@ int free_fieldtype(FIELDTYPE *ftype); /* type to free */ 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'll call a pile) built from any of the + structure (which we will call a pile) built from any of the field-type-specific arguments passed to set_field_type(). If no such arguments are defined for the field type, this pile pointer argument will be NULL. @@ -2468,7 +2484,7 @@ int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */ Some custom field types are simply ordered in the same well-defined way that TYPE_ENUM is. For such types, it is possible to define successor and predecessor functions to support the REQ_NEXT_CHOICE and - REQ_PREV_CHOICE requests. Here's how: + REQ_PREV_CHOICE requests. Here is how: typedef int (*INTHOOK)(); /* pointer to function returning int */ int set_fieldtype_arg(FIELDTYPE *type, /* type to alter */ diff --git a/deps/ncurses-6.3/form/Makefile.in b/deps/ncurses-6.3/form/Makefile.in new file mode 100644 index 0000000..a950a3e --- /dev/null +++ b/deps/ncurses-6.3/form/Makefile.in @@ -0,0 +1,210 @@ +# $Id: Makefile.in,v 1.72 2021/07/03 15:45:33 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,2018 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: Thomas E. Dickey 1996-on +# +# Makefile for form source code. +# +# This makes the following: +# libraries (normal/debug/profile/shared) +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". +# +# The rules are organized to produce the libraries for the configured models, + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = @DFT_LWR_MODEL@ +DESTDIR = @DESTDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +PACKAGE = @PACKAGE@ + +LIBTOOL = @LIBTOOL@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ +LT_UNDEF = @LT_UNDEF@ + +INSTALL = @INSTALL@ +INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ +INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@ +INSTALL_DATA = @INSTALL_DATA@ + +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AWK = @AWK@ +LD = @LD@ +LN_S = @LN_S@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +CC = @CC@ +CPP = @CPP@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ + +INCDIR = $(top_srcdir)/include +BASE_DIR = $(top_srcdir)/ncurses +CPPFLAGS = -I$(BASE_DIR) -DHAVE_CONFIG_H -DBUILDING_FORM @CPPFLAGS@ + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +LINK = $(LIBTOOL_LINK) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + +SHLIB_DIRS = -L../lib +SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ + +RPATH_LIST = @RPATH_LIST@ +RESULTING_SYMS = @RESULTING_SYMS@ +VERSIONED_SYMS = @VERSIONED_SYMS@ +MK_SHARED_LIB = @MK_SHARED_LIB@ + +NCURSES_MAJOR = @NCURSES_MAJOR@ +NCURSES_MINOR = @NCURSES_MINOR@ +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ + +RANLIB = @LIB_PREP@ + +LIBRARIES = @Libs_To_Make@ + +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ +LINT_LIBS = -lform -lncurses @LIBS@ + +AUTO_SRC = \ + ../include/form.h + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +libs \ +install :: $(AUTO_SRC) $(LIBRARIES) + +sources : $(AUTO_SRC) + +$(DESTDIR)$(bindir) \ +$(DESTDIR)$(libdir) : + mkdir -p $@ + +# make copies to simplify include-paths while still keeping form's include +# file in this directory. +../include/form.h : $(srcdir)/form.h + -rm -f $@ + cp $(srcdir)/form.h $@ + +HEADER_DEPS = \ + ../include/curses.h \ + ../include/eti.h \ + ../include/mf_common.h \ + ../include/ncurses_cfg.h \ + ../include/ncurses_def.h \ + ../include/ncurses_dll.h \ + ../include/term.h \ + ../include/unctrl.h \ + $(BASE_DIR)/curses.priv.h \ + $(BASE_DIR)/new_pair.h \ + $(INCDIR)/nc_alloc.h \ + $(INCDIR)/nc_panel.h \ + $(INCDIR)/nc_string.h \ + $(INCDIR)/nc_termios.h \ + $(INCDIR)/nc_tparm.h \ + $(INCDIR)/term_entry.h \ + $(srcdir)/form.h \ + $(srcdir)/form.priv.h + +tags: + $(CTAGS) *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace + +clean :: mostlyclean + -rm -f $(AUTO_SRC) + +distclean :: clean + -rm -f Makefile + -rm -rf .libs *.dSYM + +realclean :: distclean + +../include/mf_common.h \ +../include/eti.h : + ( cd ../menu && $(MAKE) $@ ) + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-6.3/form/READ.ME b/deps/ncurses-6.3/form/READ.ME new file mode 100644 index 0000000..7c6ad97 --- /dev/null +++ b/deps/ncurses-6.3/form/READ.ME @@ -0,0 +1,43 @@ +------------------------------------------------------------------------------- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2003,2006 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. -- +------------------------------------------------------------------------------- +-- $Id: READ.ME,v 0.9 2021/06/17 21:20:30 tom Exp $ +------------------------------------------------------------------------------- + +This is a clone of the form library that is available with typical +System V curses implementations (ETI). + +It is modelled after the documentation that comes for this library with +a 386 based SVR4 implementation (ESIX). + +The development environment was and is an ELF based Linux system. + +For things that still need doing, see the TO-DO file in the top-level +directory. + +Juergen Pfeifer diff --git a/deps/ncurses-5.9/form/f_trace.c b/deps/ncurses-6.3/form/f_trace.c similarity index 87% rename from deps/ncurses-5.9/form/f_trace.c rename to deps/ncurses-6.3/form/f_trace.c index 6044e03..c8df81a 100644 --- a/deps/ncurses-5.9/form/f_trace.c +++ b/deps/ncurses-6.3/form/f_trace.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2004,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2004-2010,2016 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 * @@ -32,39 +33,40 @@ #include "form.priv.h" -MODULE_ID("$Id: f_trace.c,v 1.2 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: f_trace.c,v 1.6 2020/05/24 01:40:20 anonymous.maarten Exp $") -NCURSES_EXPORT(FIELD **) +FORM_EXPORT(FIELD **) _nc_retrace_field_ptr(FIELD **code) { T((T_RETURN("%p"), (void *)code)); return code; } -NCURSES_EXPORT(FIELD *) +FORM_EXPORT(FIELD *) _nc_retrace_field(FIELD *code) { T((T_RETURN("%p"), (void *)code)); return code; } -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_retrace_field_type(FIELDTYPE *code) { T((T_RETURN("%p"), (void *)code)); return code; } -NCURSES_EXPORT(FORM *) +FORM_EXPORT(FORM *) _nc_retrace_form(FORM *code) { T((T_RETURN("%p"), (void *)code)); return code; } -NCURSES_EXPORT(Form_Hook) +FORM_EXPORT(Form_Hook) _nc_retrace_form_hook(Form_Hook code) { - T((T_RETURN("%p"), code)); + TR_FUNC_BFR(1); + T((T_RETURN("%s"), TR_FUNC_ARG(0, code))); return code; } diff --git a/deps/ncurses-5.9/form/fld_arg.c b/deps/ncurses-6.3/form/fld_arg.c similarity index 89% rename from deps/ncurses-5.9/form/fld_arg.c rename to deps/ncurses-6.3/form/fld_arg.c index a07bdb1..2f6c477 100644 --- a/deps/ncurses-5.9/form/fld_arg.c +++ b/deps/ncurses-6.3/form/fld_arg.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_arg.c,v 1.12 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_arg.c,v 1.18 2020/12/11 22:05:24 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -60,18 +61,23 @@ MODULE_ID("$Id: fld_arg.c,v 1.12 2010/01/23 21:14:35 tom Exp $") | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid argument +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_fieldtype_arg(FIELDTYPE *typ, void *(*const make_arg)(va_list *), void *(*const copy_arg)(const void *), void (*const free_arg) (void *)) { - T((T_CALLED("set_fieldtype_arg(%p,%p,%p,%p)"), - (void *)typ, make_arg, copy_arg, free_arg)); + TR_FUNC_BFR(3); + + T((T_CALLED("set_fieldtype_arg(%p,%s,%s,%s)"), + (void *)typ, + TR_FUNC_ARG(0, make_arg), + TR_FUNC_ARG(1, copy_arg), + TR_FUNC_ARG(2, free_arg))); if (typ != 0 && make_arg != (void *)0) { - typ->status |= _HAS_ARGS; + SetStatus(typ, _HAS_ARGS); typ->makearg = make_arg; typ->copyarg = copy_arg; typ->freearg = free_arg; @@ -84,11 +90,11 @@ set_fieldtype_arg(FIELDTYPE *typ, | Facility : libnform | Function : void *field_arg(const FIELD *field) | -| Description : Retrieve pointer to the fields argument structure. +| Description : Retrieve pointer to the field's argument structure. | | Return Values : Pointer to structure or NULL if none is defined. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) +FORM_EXPORT(void *) field_arg(const FIELD *field) { T((T_CALLED("field_arg(%p)"), (const void *)field)); diff --git a/deps/ncurses-5.9/form/fld_attr.c b/deps/ncurses-6.3/form/fld_attr.c similarity index 86% rename from deps/ncurses-5.9/form/fld_attr.c rename to deps/ncurses-6.3/form/fld_attr.c index 0112f00..4ce6b1c 100644 --- a/deps/ncurses-5.9/form/fld_attr.c +++ b/deps/ncurses-6.3/form/fld_attr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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 * @@ -32,17 +33,17 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_attr.c,v 1.11 2010/01/23 21:12:08 tom Exp $") +MODULE_ID("$Id: fld_attr.c,v 1.15 2020/12/11 22:05:24 tom Exp $") /*---------------------------------------------------------------------------- Field-Attribute manipulation routines --------------------------------------------------------------------------*/ -/* "Template" macro to generate a function to set a fields attribute */ +/* "Template" macro to generate a function to set a field's attribute */ #define GEN_FIELD_ATTR_SET_FCT( name ) \ -NCURSES_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\ +FORM_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\ {\ int res = E_BAD_ARGUMENT;\ - T((T_CALLED("set_field_" #name "(%p,%s)"), field, _traceattr(attr)));\ + T((T_CALLED("set_field_" #name "(%p,%s)"), (void *)field, _traceattr(attr)));\ if ( attr==A_NORMAL || ((attr & A_ATTRIBUTES)==attr) )\ {\ Normalize_Field( field );\ @@ -62,9 +63,9 @@ NCURSES_IMPEXP int NCURSES_API set_field_ ## name (FIELD * field, chtype attr)\ RETURN(res);\ } -/* "Template" macro to generate a function to get a fields attribute */ +/* "Template" macro to generate a function to get a field's attribute */ #define GEN_FIELD_ATTR_GET_FCT( name ) \ -NCURSES_IMPEXP chtype NCURSES_API field_ ## name (const FIELD * field)\ +FORM_IMPEXP chtype NCURSES_API field_ ## name (const FIELD * field)\ {\ T((T_CALLED("field_" #name "(%p)"), (const void *) field));\ returnAttr( A_ATTRIBUTES & (Normalize_Field( field ) -> name) );\ @@ -87,7 +88,7 @@ GEN_FIELD_ATTR_SET_FCT(fore) | Facility : libnform | Function : chtype field_fore(const FIELD *) | -| Description : Retrieve fields foreground attribute +| Description : Retrieve field's foreground attribute | | Return Values : The foreground attribute +--------------------------------------------------------------------------*/ @@ -98,7 +99,7 @@ GEN_FIELD_ATTR_GET_FCT(fore) | Function : int set_field_back(FIELD *field, chtype attr) | | Description : Sets the background of the field used to display the -| fields extend. +| field's extend. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid attributes @@ -110,7 +111,7 @@ GEN_FIELD_ATTR_SET_FCT(back) | Facility : libnform | Function : chtype field_back(const | -| Description : Retrieve fields background attribute +| Description : Retrieve field's background attribute | | Return Values : The background attribute +--------------------------------------------------------------------------*/ diff --git a/deps/ncurses-5.9/form/fld_current.c b/deps/ncurses-6.3/form/fld_current.c similarity index 81% rename from deps/ncurses-5.9/form/fld_current.c rename to deps/ncurses-6.3/form/fld_current.c index ef9ec00..264007e 100644 --- a/deps/ncurses-5.9/form/fld_current.c +++ b/deps/ncurses-6.3/form/fld_current.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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 * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_current.c,v 1.12 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_current.c,v 1.16 2020/05/24 01:40:20 anonymous.maarten Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -47,7 +48,7 @@ MODULE_ID("$Id: fld_current.c,v 1.12 2010/01/23 21:14:35 tom Exp $") | E_INVALID_FIELD - current field can't be left | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_current_field(FORM *form, FIELD *field) { int err = E_OK; @@ -76,7 +77,7 @@ set_current_field(FORM *form, FIELD *field) { if (form->current != field) { - if (!_nc_Internal_Validation(form)) + if (form->current && !_nc_Internal_Validation(form)) { err = E_INVALID_FIELD; } @@ -102,6 +103,32 @@ set_current_field(FORM *form, FIELD *field) RETURN(err); } +/*--------------------------------------------------------------------------- +| Facility : libnform +| Function : int unfocus_current_field(FORM * form) +| +| Description : Removes focus from the current field. +| +| Return Values : E_OK - success +| E_BAD_ARGUMENT - invalid form pointer +| E_REQUEST_DENIED - there is no current field to unfocus ++--------------------------------------------------------------------------*/ +FORM_EXPORT(int) +unfocus_current_field(FORM *const form) +{ + T((T_CALLED("unfocus_current_field(%p)"), (const void *)form)); + if (form == 0) + { + RETURN(E_BAD_ARGUMENT); + } + else if (form->current == 0) + { + RETURN(E_REQUEST_DENIED); + } + _nc_Unset_Current_Field(form); + RETURN(E_OK); +} + /*--------------------------------------------------------------------------- | Facility : libnform | Function : FIELD *current_field(const FORM * form) @@ -110,7 +137,7 @@ set_current_field(FORM *form, FIELD *field) | | Return Values : Pointer to the current field. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) +FORM_EXPORT(FIELD *) current_field(const FORM *form) { T((T_CALLED("current_field(%p)"), (const void *)form)); @@ -127,7 +154,7 @@ current_field(const FORM *form) | Return Values : >= 0 : field index | -1 : fieldpointer invalid or field not connected +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) field_index(const FIELD *field) { T((T_CALLED("field_index(%p)"), (const void *)field)); diff --git a/deps/ncurses-5.9/form/fld_def.c b/deps/ncurses-6.3/form/fld_def.c similarity index 92% rename from deps/ncurses-5.9/form/fld_def.c rename to deps/ncurses-6.3/form/fld_def.c index 6d7bd34..51bdc64 100644 --- a/deps/ncurses-5.9/form/fld_def.c +++ b/deps/ncurses-6.3/form/fld_def.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2014 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 * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_def.c,v 1.38 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_def.c,v 1.44 2021/03/27 23:49:53 tom Exp $") /* this can't be readonly */ static FIELD default_field = @@ -53,7 +54,7 @@ static FIELD default_field = (int)' ', /* pad */ A_NORMAL, /* fore */ A_NORMAL, /* back */ - ALL_FIELD_OPTS, /* opts */ + STD_FIELD_OPTS, /* opts */ (FIELD *)0, /* snext */ (FIELD *)0, /* sprev */ (FIELD *)0, /* link */ @@ -65,8 +66,7 @@ static FIELD default_field = NCURSES_FIELD_EXTENSION }; -NCURSES_EXPORT_VAR(FIELD *) -_nc_Default_Field = &default_field; +FORM_EXPORT_VAR(FIELD *) _nc_Default_Field = &default_field; /*--------------------------------------------------------------------------- | Facility : libnform @@ -82,18 +82,17 @@ _nc_Default_Field = &default_field; | Return Values : Pointer to argument structure. Maybe NULL. | In case of an error in *err an error counter is increased. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(TypeArgument *) +FORM_EXPORT(TypeArgument *) _nc_Make_Argument(const FIELDTYPE *typ, va_list *ap, int *err) { TypeArgument *res = (TypeArgument *)0; - TypeArgument *p; if (typ != 0 && (typ->status & _HAS_ARGS) != 0) { assert(err != 0 && ap != (va_list *)0); if ((typ->status & _LINKED_TYPE) != 0) { - p = typeMalloc(TypeArgument, 1); + TypeArgument *p = typeMalloc(TypeArgument, 1); if (p != 0) { @@ -130,18 +129,17 @@ _nc_Make_Argument(const FIELDTYPE *typ, va_list *ap, int *err) | Return Values : Pointer to argument structure. Maybe NULL. | In case of an error in *err an error counter is increased. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(TypeArgument *) +FORM_EXPORT(TypeArgument *) _nc_Copy_Argument(const FIELDTYPE *typ, const TypeArgument *argp, int *err) { TypeArgument *res = (TypeArgument *)0; - TypeArgument *p; if (typ != 0 && (typ->status & _HAS_ARGS) != 0) { assert(err != 0 && argp != 0); if ((typ->status & _LINKED_TYPE) != 0) { - p = typeMalloc(TypeArgument, 1); + TypeArgument *p = typeMalloc(TypeArgument, 1); if (p != 0) { @@ -179,17 +177,19 @@ _nc_Copy_Argument(const FIELDTYPE *typ, const TypeArgument *argp, int *err) | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) +FORM_EXPORT(void) _nc_Free_Argument(const FIELDTYPE *typ, TypeArgument *argp) { if (typ != 0 && (typ->status & _HAS_ARGS) != 0) { if ((typ->status & _LINKED_TYPE) != 0) { - assert(argp != 0); - _nc_Free_Argument(typ->left, argp->left); - _nc_Free_Argument(typ->right, argp->right); - free(argp); + if (argp != 0) + { + _nc_Free_Argument(typ->left, argp->left); + _nc_Free_Argument(typ->right, argp->right); + free(argp); + } } else { @@ -210,7 +210,7 @@ _nc_Free_Argument(const FIELDTYPE *typ, TypeArgument *argp) | Return Values : TRUE - copy worked | FALSE - error occurred +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) +FORM_EXPORT(bool) _nc_Copy_Type(FIELD *dst, FIELD const *src) { int err = 0; @@ -245,7 +245,7 @@ _nc_Copy_Type(FIELD *dst, FIELD const *src) | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) +FORM_EXPORT(void) _nc_Free_Type(FIELD *field) { assert(field != 0); @@ -272,7 +272,7 @@ _nc_Free_Type(FIELD *field) | | Return Values : Pointer to the new field or NULL if failure. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) +FORM_EXPORT(FIELD *) new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf) { static const FIELD_CELL blank = BLANK; @@ -293,14 +293,14 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf) { T((T_CREATE("field %p"), (void *)New_Field)); *New_Field = default_field; - New_Field->rows = rows; - New_Field->cols = cols; + New_Field->rows = (short)rows; + New_Field->cols = (short)cols; New_Field->drows = rows + nrow; New_Field->dcols = cols; - New_Field->frow = frow; - New_Field->fcol = fcol; + New_Field->frow = (short)frow; + New_Field->fcol = (short)fcol; New_Field->nrow = nrow; - New_Field->nbuf = nbuf; + New_Field->nbuf = (short)nbuf; New_Field->link = New_Field; #if USE_WIDEC_SUPPORT @@ -352,7 +352,7 @@ new_field(int rows, int cols, int frow, int fcol, int nrow, int nbuf) | E_BAD_ARGUMENT - invalid field pointer | E_CONNECTED - field is connected +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) free_field(FIELD *field) { T((T_CALLED("free_field(%p)"), (void *)field)); diff --git a/deps/ncurses-5.9/form/fld_dup.c b/deps/ncurses-6.3/form/fld_dup.c similarity index 90% rename from deps/ncurses-5.9/form/fld_dup.c rename to deps/ncurses-6.3/form/fld_dup.c index b8e501b..e195df9 100644 --- a/deps/ncurses-5.9/form/fld_dup.c +++ b/deps/ncurses-6.3/form/fld_dup.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_dup.c,v 1.13 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_dup.c,v 1.18 2020/05/24 01:40:20 anonymous.maarten Exp $") /*--------------------------------------------------------------------------- | Facility : libnform @@ -47,7 +48,7 @@ MODULE_ID("$Id: fld_dup.c,v 1.13 2010/01/23 21:14:35 tom Exp $") | | Return Values : Pointer to the new field or NULL if failure +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) +FORM_EXPORT(FIELD *) dup_field(FIELD *field, int frow, int fcol) { FIELD *New_Field = (FIELD *)0; @@ -60,8 +61,8 @@ dup_field(FIELD *field, int frow, int fcol) { T((T_CREATE("field %p"), (void *)New_Field)); *New_Field = *_nc_Default_Field; - New_Field->frow = frow; - New_Field->fcol = fcol; + New_Field->frow = (short)frow; + New_Field->fcol = (short)fcol; New_Field->link = New_Field; New_Field->rows = field->rows; New_Field->cols = field->cols; @@ -79,13 +80,12 @@ dup_field(FIELD *field, int frow, int fcol) if (_nc_Copy_Type(New_Field, field)) { - size_t i, len; + 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 * 20))) { - for (i = 0; i < len; ++i) - New_Field->buf[i] = field->buf[i]; + memcpy(New_Field->buf, field->buf, len); returnField(New_Field); } } diff --git a/deps/ncurses-5.9/form/fld_ftchoice.c b/deps/ncurses-6.3/form/fld_ftchoice.c similarity index 88% rename from deps/ncurses-5.9/form/fld_ftchoice.c rename to deps/ncurses-6.3/form/fld_ftchoice.c index 3aac5be..dfaca14 100644 --- a/deps/ncurses-5.9/form/fld_ftchoice.c +++ b/deps/ncurses-6.3/form/fld_ftchoice.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -32,10 +33,10 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_ftchoice.c,v 1.12 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_ftchoice.c,v 1.18 2021/06/17 21:26:02 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_fieldtype_choice( | FIELDTYPE *typ, | bool (* const next_choice)(FIELD *,const void *), @@ -46,17 +47,22 @@ MODULE_ID("$Id: fld_ftchoice.c,v 1.12 2010/01/23 21:14:35 tom Exp $") | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid arguments +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_fieldtype_choice(FIELDTYPE *typ, bool (*const next_choice) (FIELD *, const void *), bool (*const prev_choice) (FIELD *, const void *)) { - T((T_CALLED("set_fieldtype_choice(%p,%p,%p)"), (void *)typ, next_choice, prev_choice)); + TR_FUNC_BFR(2); + + T((T_CALLED("set_fieldtype_choice(%p,%s,%s)"), + (void *)typ, + TR_FUNC_ARG(0, next_choice), + TR_FUNC_ARG(1, prev_choice))); if (!typ || !next_choice || !prev_choice) RETURN(E_BAD_ARGUMENT); - typ->status |= _HAS_CHOICE; + SetStatus(typ, _HAS_CHOICE); #if NCURSES_INTEROP_FUNCS typ->enum_next.onext = next_choice; typ->enum_prev.oprev = prev_choice; diff --git a/deps/ncurses-5.9/form/fld_ftlink.c b/deps/ncurses-6.3/form/fld_ftlink.c similarity index 89% rename from deps/ncurses-5.9/form/fld_ftlink.c rename to deps/ncurses-6.3/form/fld_ftlink.c index c2cd251..ed16920 100644 --- a/deps/ncurses-5.9/form/fld_ftlink.c +++ b/deps/ncurses-6.3/form/fld_ftlink.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,23 +33,23 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_ftlink.c,v 1.14 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_ftlink.c,v 1.18 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : FIELDTYPE *link_fieldtype( | FIELDTYPE *type1, | FIELDTYPE *type2) -| +| | Description : Create a new fieldtype built from the two given types. | They are connected by an logical 'OR'. -| If an error occurs, errno is set to +| If an error occurs, errno is set to | E_BAD_ARGUMENT - invalid arguments | E_SYSTEM_ERROR - system error (no memory) | | Return Values : Fieldtype pointer or NULL if error occurred. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2) { FIELDTYPE *nftyp = (FIELDTYPE *)0; @@ -62,11 +63,11 @@ link_fieldtype(FIELDTYPE *type1, FIELDTYPE *type2) { T((T_CREATE("fieldtype %p"), (void *)nftyp)); *nftyp = *_nc_Default_FieldType; - nftyp->status |= _LINKED_TYPE; + SetStatus(nftyp, _LINKED_TYPE); if ((type1->status & _HAS_ARGS) || (type2->status & _HAS_ARGS)) - nftyp->status |= _HAS_ARGS; + SetStatus(nftyp, _HAS_ARGS); if ((type1->status & _HAS_CHOICE) || (type2->status & _HAS_CHOICE)) - nftyp->status |= _HAS_CHOICE; + SetStatus(nftyp, _HAS_CHOICE); nftyp->left = type1; nftyp->right = type2; type1->ref++; diff --git a/deps/ncurses-5.9/form/fld_info.c b/deps/ncurses-6.3/form/fld_info.c similarity index 90% rename from deps/ncurses-5.9/form/fld_info.c rename to deps/ncurses-6.3/form/fld_info.c index 13fe8e7..bc8399d 100644 --- a/deps/ncurses-5.9/form/fld_info.c +++ b/deps/ncurses-6.3/form/fld_info.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,21 +33,21 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_info.c,v 1.11 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_info.c,v 1.16 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int field_info(const FIELD *field, | int *rows, int *cols, | int *frow, int *fcol, | int *nrow, int *nbuf) -| -| Description : Retrieve infos about the fields creation parameters. +| +| Description : Retrieve information about the field's creation parameters. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid field pointer +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) field_info(const FIELD *field, int *rows, int *cols, int *frow, int *fcol, @@ -77,18 +78,18 @@ field_info(const FIELD *field, } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int dynamic_field_info(const FIELD *field, | int *drows, int *dcols, | int *maxgrow) -| -| Description : Retrieve informations about a dynamic fields current +| +| Description : Retrieve information about a dynamic field's current | dynamic parameters. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid argument +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) dynamic_field_info(const FIELD *field, int *drows, int *dcols, int *maxgrow) { T((T_CALLED("dynamic_field_info(%p,%p,%p,%p)"), diff --git a/deps/ncurses-5.9/form/fld_just.c b/deps/ncurses-6.3/form/fld_just.c similarity index 88% rename from deps/ncurses-5.9/form/fld_just.c rename to deps/ncurses-6.3/form/fld_just.c index 58a1750..62253bc 100644 --- a/deps/ncurses-5.9/form/fld_just.c +++ b/deps/ncurses-6.3/form/fld_just.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,19 +33,19 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_just.c,v 1.12 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_just.c,v 1.17 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_field_just(FIELD *field, int just) -| -| Description : Set the fields type of justification. +| +| Description : Set the field's type of justification. | | Return Values : E_OK - success | E_BAD_ARGUMENT - one of the arguments was incorrect | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_field_just(FIELD *field, int just) { int res = E_BAD_ARGUMENT; @@ -59,7 +60,7 @@ set_field_just(FIELD *field, int just) Normalize_Field(field); if (field->just != just) { - field->just = just; + field->just = (short)just; res = _nc_Synchronize_Attributes(field); } else @@ -69,14 +70,14 @@ set_field_just(FIELD *field, int just) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int field_just( const FIELD *field ) -| -| Description : Retrieve the fields type of justification +| +| Description : Retrieve the field's type of justification | | Return Values : The justification type. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) field_just(const FIELD *field) { T((T_CALLED("field_just(%p)"), (const void *)field)); diff --git a/deps/ncurses-5.9/form/fld_link.c b/deps/ncurses-6.3/form/fld_link.c similarity index 92% rename from deps/ncurses-5.9/form/fld_link.c rename to deps/ncurses-6.3/form/fld_link.c index 18103be..c060458 100644 --- a/deps/ncurses-5.9/form/fld_link.c +++ b/deps/ncurses-6.3/form/fld_link.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,23 +33,23 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_link.c,v 1.12 2010/01/23 21:14:35 tom Exp $") +MODULE_ID("$Id: fld_link.c,v 1.17 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform -| Function : FIELD *link_field(FIELD *field, int frow, int fcol) -| +| Facility : libnform +| Function : FIELD *link_field(FIELD *field, int frow, int fcol) +| | Description : Duplicates the field at the specified position. The | new field shares its buffers with the original one, | the attributes are independent. | If an error occurs, errno is set to -| +| | E_BAD_ARGUMENT - invalid argument | E_SYSTEM_ERROR - system error | | Return Values : Pointer to the new field or NULL if failure +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) +FORM_EXPORT(FIELD *) link_field(FIELD *field, int frow, int fcol) { FIELD *New_Field = (FIELD *)0; @@ -61,8 +62,8 @@ link_field(FIELD *field, int frow, int fcol) { T((T_CREATE("field %p"), (void *)New_Field)); *New_Field = *_nc_Default_Field; - New_Field->frow = frow; - New_Field->fcol = fcol; + New_Field->frow = (short)frow; + New_Field->fcol = (short)fcol; New_Field->link = field->link; field->link = New_Field; diff --git a/deps/ncurses-5.9/form/fld_max.c b/deps/ncurses-6.3/form/fld_max.c similarity index 82% rename from deps/ncurses-5.9/form/fld_max.c rename to deps/ncurses-6.3/form/fld_max.c index 5ce918e..325541a 100644 --- a/deps/ncurses-5.9/form/fld_max.c +++ b/deps/ncurses-6.3/form/fld_max.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2013 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 * @@ -32,19 +33,19 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_max.c,v 1.10 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_max.c,v 1.18 2021/06/17 21:26:02 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_max_field(FIELD *field, int maxgrow) -| +| | Description : Set the maximum growth for a dynamic field. If maxgrow=0 | the field may grow to any possible size. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid argument +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_max_field(FIELD *field, int maxgrow) { T((T_CALLED("set_max_field(%p,%d)"), (void *)field, maxgrow)); @@ -57,18 +58,23 @@ set_max_field(FIELD *field, int maxgrow) if (maxgrow > 0) { - if ((single_line_field && (maxgrow < field->dcols)) || - (!single_line_field && (maxgrow < field->drows))) + if (((single_line_field && (maxgrow < field->dcols)) || + (!single_line_field && (maxgrow < field->drows))) && + !Field_Has_Option(field, O_INPUT_LIMIT)) RETURN(E_BAD_ARGUMENT); } field->maxgrow = maxgrow; - field->status &= ~_MAY_GROW; - if (!(field->opts & O_STATIC)) + /* shrink */ + if (maxgrow > 0 && Field_Has_Option(field, O_INPUT_LIMIT) && + field->dcols > maxgrow) + field->dcols = maxgrow; + ClrStatus(field, _MAY_GROW); + if (!((unsigned)field->opts & O_STATIC)) { if ((maxgrow == 0) || (single_line_field && (field->dcols < maxgrow)) || (!single_line_field && (field->drows < maxgrow))) - field->status |= _MAY_GROW; + SetStatus(field, _MAY_GROW); } } RETURN(E_OK); diff --git a/deps/ncurses-5.9/form/fld_move.c b/deps/ncurses-6.3/form/fld_move.c similarity index 89% rename from deps/ncurses-5.9/form/fld_move.c rename to deps/ncurses-6.3/form/fld_move.c index dfba22d..0d9ac4a 100644 --- a/deps/ncurses-5.9/form/fld_move.c +++ b/deps/ncurses-6.3/form/fld_move.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,20 +33,20 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_move.c,v 1.10 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_move.c,v 1.16 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int move_field(FIELD *field,int frow, int fcol) -| +| | Description : Moves the disconnected field to the new location in -| the forms subwindow. +| the form's subwindow. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid argument passed | E_CONNECTED - field is connected +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) move_field(FIELD *field, int frow, int fcol) { T((T_CALLED("move_field(%p,%d,%d)"), (void *)field, frow, fcol)); @@ -56,8 +57,8 @@ move_field(FIELD *field, int frow, int fcol) if (field->form) RETURN(E_CONNECTED); - field->frow = frow; - field->fcol = fcol; + field->frow = (short)frow; + field->fcol = (short)fcol; RETURN(E_OK); } diff --git a/deps/ncurses-5.9/form/fld_newftyp.c b/deps/ncurses-6.3/form/fld_newftyp.c similarity index 92% rename from deps/ncurses-5.9/form/fld_newftyp.c rename to deps/ncurses-6.3/form/fld_newftyp.c index 4351aed..c5848d5 100644 --- a/deps/ncurses-5.9/form/fld_newftyp.c +++ b/deps/ncurses-6.3/form/fld_newftyp.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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 * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_newftyp.c,v 1.19 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_newftyp.c,v 1.23 2020/05/24 01:40:20 anonymous.maarten Exp $") static FIELDTYPE default_fieldtype = { @@ -52,8 +53,8 @@ static FIELDTYPE default_fieldtype = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE *) -_nc_Default_FieldType = &default_fieldtype; +FORM_EXPORT_VAR(FIELDTYPE *) + _nc_Default_FieldType = &default_fieldtype; /*--------------------------------------------------------------------------- | Facility : libnform @@ -70,13 +71,18 @@ _nc_Default_FieldType = &default_fieldtype; | | Return Values : Fieldtype pointer or NULL if error occurred +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) new_fieldtype(bool (*const field_check) (FIELD *, const void *), bool (*const char_check) (int, const void *)) { FIELDTYPE *nftyp = (FIELDTYPE *)0; - T((T_CALLED("new_fieldtype(%p,%p)"), field_check, char_check)); + TR_FUNC_BFR(2); + + T((T_CALLED("new_fieldtype(%s,%s)"), + TR_FUNC_ARG(0, field_check), + TR_FUNC_ARG(1, char_check))); + if ((field_check) || (char_check)) { nftyp = typeMalloc(FIELDTYPE, 1); @@ -115,7 +121,7 @@ new_fieldtype(bool (*const field_check) (FIELD *, const void *), | E_CONNECTED - there are fields referencing the type | E_BAD_ARGUMENT - invalid fieldtype pointer +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) free_fieldtype(FIELDTYPE *typ) { T((T_CALLED("free_fieldtype(%p)"), (void *)typ)); diff --git a/deps/ncurses-5.9/form/fld_opts.c b/deps/ncurses-6.3/form/fld_opts.c similarity index 92% rename from deps/ncurses-5.9/form/fld_opts.c rename to deps/ncurses-6.3/form/fld_opts.c index a52f1e2..ab4d559 100644 --- a/deps/ncurses-5.9/form/fld_opts.c +++ b/deps/ncurses-6.3/form/fld_opts.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,16 +33,16 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_opts.c,v 1.12 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_opts.c,v 1.16 2021/06/17 21:20:30 tom Exp $") /*---------------------------------------------------------------------------- Field-Options manipulation routines --------------------------------------------------------------------------*/ /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_field_opts(FIELD *field, Field_Options opts) -| +| | Description : Turns on the named options for this field and turns | off all the remaining options. | @@ -50,7 +51,7 @@ MODULE_ID("$Id: fld_opts.c,v 1.12 2010/01/23 21:14:36 tom Exp $") | E_BAD_ARGUMENT - invalid options | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_field_opts(FIELD *field, Field_Options opts) { int res = E_BAD_ARGUMENT; @@ -64,14 +65,14 @@ set_field_opts(FIELD *field, Field_Options opts) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : Field_Options field_opts(const FIELD *field) -| -| Description : Retrieve the fields options. +| +| Description : Retrieve the field's options. | | Return Values : The options. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(Field_Options) +FORM_EXPORT(Field_Options) field_opts(const FIELD *field) { T((T_CALLED("field_opts(%p)"), (const void *)field)); @@ -80,10 +81,10 @@ field_opts(const FIELD *field) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int field_opts_on(FIELD *field, Field_Options opts) -| -| Description : Turns on the named options for this field and all the +| +| Description : Turns on the named options for this field and all the | remaining options are unchanged. | | Return Values : E_OK - success @@ -91,7 +92,7 @@ field_opts(const FIELD *field) | E_BAD_ARGUMENT - invalid options | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) field_opts_on(FIELD *field, Field_Options opts) { int res = E_BAD_ARGUMENT; @@ -108,10 +109,10 @@ field_opts_on(FIELD *field, Field_Options opts) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int field_opts_off(FIELD *field, Field_Options opts) -| -| Description : Turns off the named options for this field and all the +| +| Description : Turns off the named options for this field and all the | remaining options are unchanged. | | Return Values : E_OK - success @@ -119,7 +120,7 @@ field_opts_on(FIELD *field, Field_Options opts) | E_BAD_ARGUMENT - invalid options | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) field_opts_off(FIELD *field, Field_Options opts) { int res = E_BAD_ARGUMENT; diff --git a/deps/ncurses-5.9/form/fld_pad.c b/deps/ncurses-6.3/form/fld_pad.c similarity index 90% rename from deps/ncurses-5.9/form/fld_pad.c rename to deps/ncurses-6.3/form/fld_pad.c index 4f8ff1f..fdd803f 100644 --- a/deps/ncurses-5.9/form/fld_pad.c +++ b/deps/ncurses-6.3/form/fld_pad.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,12 +33,12 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_pad.c,v 1.10 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_pad.c,v 1.14 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_field_pad(FIELD *field, int ch) -| +| | Description : Set the pad character used to fill the field. This must | be a printable character. | @@ -45,7 +46,7 @@ MODULE_ID("$Id: fld_pad.c,v 1.10 2010/01/23 21:14:36 tom Exp $") | E_BAD_ARGUMENT - invalid field pointer or pad character | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_field_pad(FIELD *field, int ch) { int res = E_BAD_ARGUMENT; @@ -67,14 +68,14 @@ set_field_pad(FIELD *field, int ch) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int field_pad(const FIELD *field) -| -| Description : Retrieve the fields pad character. +| +| Description : Retrieve the field's pad character. | | Return Values : The pad character. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) field_pad(const FIELD *field) { T((T_CALLED("field_pad(%p)"), (const void *)field)); diff --git a/deps/ncurses-5.9/form/fld_page.c b/deps/ncurses-6.3/form/fld_page.c similarity index 87% rename from deps/ncurses-5.9/form/fld_page.c rename to deps/ncurses-6.3/form/fld_page.c index e4d18c5..6972d31 100644 --- a/deps/ncurses-5.9/form/fld_page.c +++ b/deps/ncurses-6.3/form/fld_page.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,19 +33,19 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_page.c,v 1.10 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_page.c,v 1.16 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_new_page(FIELD *field, bool new_page_flag) -| -| Description : Marks the field as the beginning of a new page of +| +| Description : Marks the field as the beginning of a new page of | the form. | | Return Values : E_OK - success | E_CONNECTED - field is connected +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_new_page(FIELD *field, bool new_page_flag) { T((T_CALLED("set_new_page(%p,%d)"), (void *)field, new_page_flag)); @@ -54,24 +55,24 @@ set_new_page(FIELD *field, bool new_page_flag) RETURN(E_CONNECTED); if (new_page_flag) - field->status |= _NEWPAGE; + SetStatus(field, _NEWPAGE); else - field->status &= ~_NEWPAGE; + ClrStatus(field, _NEWPAGE); RETURN(E_OK); } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : bool new_page(const FIELD *field) -| -| Description : Retrieve the info whether or not the field starts a -| new page on the form. +| +| Description : Retrieve the information whether or not the field starts +| a new page on the form. | | Return Values : TRUE - field starts a new page | FALSE - field doesn't start a new page +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) +FORM_EXPORT(bool) new_page(const FIELD *field) { T((T_CALLED("new_page(%p)"), (const void *)field)); diff --git a/deps/ncurses-5.9/form/fld_stat.c b/deps/ncurses-6.3/form/fld_stat.c similarity index 88% rename from deps/ncurses-5.9/form/fld_stat.c rename to deps/ncurses-6.3/form/fld_stat.c index 46f89e6..62d782e 100644 --- a/deps/ncurses-5.9/form/fld_stat.c +++ b/deps/ncurses-6.3/form/fld_stat.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,18 +33,18 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_stat.c,v 1.12 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_stat.c,v 1.18 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_field_status(FIELD *field, bool status) -| +| | Description : Set or clear the 'changed' indication flag for that -| fields primary buffer. +| field's primary buffer. | | Return Values : E_OK - success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_field_status(FIELD *field, bool status) { T((T_CALLED("set_field_status(%p,%d)"), (void *)field, status)); @@ -51,24 +52,24 @@ set_field_status(FIELD *field, bool status) Normalize_Field(field); if (status) - field->status |= _CHANGED; + SetStatus(field, _CHANGED); else - field->status &= ~_CHANGED; + ClrStatus(field, _CHANGED); RETURN(E_OK); } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : bool field_status(const FIELD *field) -| +| | Description : Retrieve the value of the 'changed' indication flag -| for that fields primary buffer. +| for that field's primary buffer. | | Return Values : TRUE - buffer has been changed | FALSE - buffer has not been changed +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) +FORM_EXPORT(bool) field_status(const FIELD *field) { T((T_CALLED("field_status(%p)"), (const void *)field)); diff --git a/deps/ncurses-5.9/form/fld_type.c b/deps/ncurses-6.3/form/fld_type.c similarity index 91% rename from deps/ncurses-5.9/form/fld_type.c rename to deps/ncurses-6.3/form/fld_type.c index 0b35b7e..c557e05 100644 --- a/deps/ncurses-5.9/form/fld_type.c +++ b/deps/ncurses-6.3/form/fld_type.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,12 +33,12 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_type.c,v 1.16 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_type.c,v 1.20 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_field_type(FIELD *field, FIELDTYPE *type,...) -| +| | Description : Associate the specified fieldtype with the field. | Certain field types take additional arguments. Look | at the spec of the field types ! @@ -45,8 +46,8 @@ MODULE_ID("$Id: fld_type.c,v 1.16 2010/01/23 21:14:36 tom Exp $") | Return Values : E_OK - success | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_field_type(FIELD *field, FIELDTYPE *type,...) +FORM_EXPORT(int) +set_field_type(FIELD *field, FIELDTYPE *type, ...) { va_list ap; int res = E_SYSTEM_ERROR; @@ -80,14 +81,14 @@ set_field_type(FIELD *field, FIELDTYPE *type,...) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : FIELDTYPE *field_type(const FIELD *field) -| +| | Description : Retrieve the associated fieldtype for this field. | | Return Values : Pointer to fieldtype of NULL if none is defined. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) field_type(const FIELD *field) { T((T_CALLED("field_type(%p)"), (const void *)field)); diff --git a/deps/ncurses-5.9/form/fld_user.c b/deps/ncurses-6.3/form/fld_user.c similarity index 88% rename from deps/ncurses-5.9/form/fld_user.c rename to deps/ncurses-6.3/form/fld_user.c index 30bcf7a..1b13e62 100644 --- a/deps/ncurses-5.9/form/fld_user.c +++ b/deps/ncurses-6.3/form/fld_user.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,18 +33,18 @@ #include "form.priv.h" -MODULE_ID("$Id: fld_user.c,v 1.16 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fld_user.c,v 1.20 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_field_userptr(FIELD *field, void *usrptr) -| +| | Description : Set the pointer that is reserved in any field to store -| application relevant informations +| application relevant information. | | Return Values : E_OK - on success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_field_userptr(FIELD *field, void *usrptr) { T((T_CALLED("set_field_userptr(%p,%p)"), (void *)field, (void *)usrptr)); @@ -53,16 +54,16 @@ set_field_userptr(FIELD *field, void *usrptr) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : void *field_userptr(const FIELD *field) -| +| | Description : Return the pointer that is reserved in any field to -| store application relevant informations. +| store application relevant information. | | Return Values : Value of pointer. If no such pointer has been set, | NULL is returned +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) +FORM_EXPORT(void *) field_userptr(const FIELD *field) { T((T_CALLED("field_userptr(%p)"), (const void *)field)); diff --git a/deps/ncurses-6.3/form/form.h b/deps/ncurses-6.3/form/form.h new file mode 100644 index 0000000..3b62e39 --- /dev/null +++ b/deps/ncurses-6.3/form/form.h @@ -0,0 +1,460 @@ +/**************************************************************************** + * Copyright 2018-2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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, 1995,1997 * + ****************************************************************************/ + +/* $Id: form.h,v 0.32 2021/06/17 21:26:02 tom Exp $ */ + +#ifndef FORM_H +#define FORM_H +/* *INDENT-OFF*/ + +#include <curses.h> +#include <eti.h> + +#ifdef __cplusplus + extern "C" { +#endif + +#if defined(BUILDING_FORM) +# define FORM_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT +#else +# define FORM_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT +#endif + +#define FORM_WRAPPED_VAR(type,name) extern FORM_IMPEXP type NCURSES_PUBLIC_VAR(name)(void) + +#define FORM_EXPORT(type) FORM_IMPEXP type NCURSES_API +#define FORM_EXPORT_VAR(type) FORM_IMPEXP type + +#ifndef FORM_PRIV_H +typedef void *FIELD_CELL; +#endif + +#ifndef NCURSES_FIELD_INTERNALS +#define NCURSES_FIELD_INTERNALS /* nothing */ +#endif + +typedef int Form_Options; +typedef int Field_Options; + + /********** + * _PAGE * + **********/ + +typedef struct pagenode +#if !NCURSES_OPAQUE_FORM +{ + short pmin; /* index of first field on page */ + short pmax; /* index of last field on page */ + short smin; /* index of top leftmost field on page */ + short smax; /* index of bottom rightmost field on page */ +} +#endif /* !NCURSES_OPAQUE_FORM */ +_PAGE; + + /********** + * FIELD * + **********/ + +typedef struct fieldnode +#if 1 /* not yet: !NCURSES_OPAQUE_FORM */ +{ + unsigned short status; /* flags */ + short rows; /* size in rows */ + short cols; /* size in cols */ + short frow; /* first row */ + short fcol; /* first col */ + int drows; /* dynamic rows */ + int dcols; /* dynamic cols */ + int maxgrow; /* maximum field growth */ + int nrow; /* off-screen rows */ + short nbuf; /* additional buffers */ + short just; /* justification */ + short page; /* page on form */ + short index; /* into form -> field */ + int pad; /* pad character */ + chtype fore; /* foreground attribute */ + chtype back; /* background attribute */ + Field_Options opts; /* options */ + struct fieldnode * snext; /* sorted order pointer */ + struct fieldnode * sprev; /* sorted order pointer */ + struct fieldnode * link; /* linked field chain */ + struct formnode * form; /* containing form */ + struct typenode * type; /* field type */ + void * arg; /* argument for type */ + FIELD_CELL * buf; /* field buffers */ + void * usrptr; /* user pointer */ + /* + * The wide-character configuration requires extra information. Because + * there are existing applications that manipulate the members of FIELD + * directly, we cannot make the struct opaque, except by changing the ABI. + * Offsets of members up to this point are the same in the narrow- and + * wide-character configuration. But note that the type of buf depends on + * the configuration, and is made opaque for that reason. + */ + NCURSES_FIELD_INTERNALS +} +#endif /* NCURSES_OPAQUE_FORM */ +FIELD; + + + /********* + * FORM * + *********/ + +typedef struct formnode +#if 1 /* not yet: !NCURSES_OPAQUE_FORM */ +{ + unsigned short status; /* flags */ + short rows; /* size in rows */ + short cols; /* size in cols */ + int currow; /* current row in field window */ + int curcol; /* current col in field window */ + int toprow; /* in scrollable field window */ + int begincol; /* in horiz. scrollable field */ + short maxfield; /* number of fields */ + short maxpage; /* number of pages */ + short curpage; /* index into page */ + Form_Options opts; /* options */ + WINDOW * win; /* window */ + WINDOW * sub; /* subwindow */ + WINDOW * w; /* window for current field */ + FIELD ** field; /* field [maxfield] */ + FIELD * current; /* current field */ + _PAGE * page; /* page [maxpage] */ + void * usrptr; /* user pointer */ + + void (*forminit)(struct formnode *); + void (*formterm)(struct formnode *); + void (*fieldinit)(struct formnode *); + void (*fieldterm)(struct formnode *); + +} +#endif /* !NCURSES_OPAQUE_FORM */ +FORM; + + + /************** + * FIELDTYPE * + **************/ + +typedef struct typenode +#if !NCURSES_OPAQUE_FORM +{ + unsigned short status; /* flags */ + long ref; /* reference count */ + struct typenode * left; /* ptr to operand for | */ + struct typenode * right; /* ptr to operand for | */ + + void* (*makearg)(va_list *); /* make fieldtype arg */ + void* (*copyarg)(const void *); /* copy fieldtype arg */ + void (*freearg)(void *); /* free fieldtype arg */ + +#if NCURSES_INTEROP_FUNCS + union { + bool (*ofcheck)(FIELD *,const void *); /* field validation */ + bool (*gfcheck)(FORM*,FIELD *,const void*); /* generic field validation */ + } fieldcheck; + union { + bool (*occheck)(int,const void *); /* character validation */ + bool (*gccheck)(int,FORM*, + FIELD*,const void*); /* generic char validation */ + } charcheck; + union { + bool (*onext)(FIELD *,const void *); /* enumerate next value */ + bool (*gnext)(FORM*,FIELD*,const void*); /* generic enumerate next */ + } enum_next; + union { + bool (*oprev)(FIELD *,const void *); /* enumerate prev value */ + bool (*gprev)(FORM*,FIELD*,const void*); /* generic enumerate prev */ + } enum_prev; + void* (*genericarg)(void*); /* Alternate Arg method */ +#else + bool (*fcheck)(FIELD *,const void *); /* field validation */ + bool (*ccheck)(int,const void *); /* character validation */ + + bool (*next)(FIELD *,const void *); /* enumerate next value */ + bool (*prev)(FIELD *,const void *); /* enumerate prev value */ +#endif +} +#endif /* !NCURSES_OPAQUE_FORM */ +FIELDTYPE; + +typedef void (*Form_Hook)(FORM *); + + /*************************** + * miscellaneous #defines * + ***************************/ + +/* field justification */ +#define NO_JUSTIFICATION (0) +#define JUSTIFY_LEFT (1) +#define JUSTIFY_CENTER (2) +#define JUSTIFY_RIGHT (3) + +/* field options */ +#define O_VISIBLE (0x0001U) +#define O_ACTIVE (0x0002U) +#define O_PUBLIC (0x0004U) +#define O_EDIT (0x0008U) +#define O_WRAP (0x0010U) +#define O_BLANK (0x0020U) +#define O_AUTOSKIP (0x0040U) +#define O_NULLOK (0x0080U) +#define O_PASSOK (0x0100U) +#define O_STATIC (0x0200U) +#define O_DYNAMIC_JUSTIFY (0x0400U) /* ncurses extension */ +#define O_NO_LEFT_STRIP (0x0800U) /* ncurses extension */ +#define O_EDGE_INSERT_STAY (0x1000U) /* ncurses extension */ +#define O_INPUT_LIMIT (0x2000U) /* ncurses extension */ + +/* form options */ +#define O_NL_OVERLOAD (0x0001U) +#define O_BS_OVERLOAD (0x0002U) + +/* form driver commands */ +#define REQ_NEXT_PAGE (KEY_MAX + 1) /* move to next page */ +#define REQ_PREV_PAGE (KEY_MAX + 2) /* move to previous page */ +#define REQ_FIRST_PAGE (KEY_MAX + 3) /* move to first page */ +#define REQ_LAST_PAGE (KEY_MAX + 4) /* move to last page */ + +#define REQ_NEXT_FIELD (KEY_MAX + 5) /* move to next field */ +#define REQ_PREV_FIELD (KEY_MAX + 6) /* move to previous field */ +#define REQ_FIRST_FIELD (KEY_MAX + 7) /* move to first field */ +#define REQ_LAST_FIELD (KEY_MAX + 8) /* move to last field */ +#define REQ_SNEXT_FIELD (KEY_MAX + 9) /* move to sorted next field */ +#define REQ_SPREV_FIELD (KEY_MAX + 10) /* move to sorted prev field */ +#define REQ_SFIRST_FIELD (KEY_MAX + 11) /* move to sorted first field */ +#define REQ_SLAST_FIELD (KEY_MAX + 12) /* move to sorted last field */ +#define REQ_LEFT_FIELD (KEY_MAX + 13) /* move to left to field */ +#define REQ_RIGHT_FIELD (KEY_MAX + 14) /* move to right to field */ +#define REQ_UP_FIELD (KEY_MAX + 15) /* move to up to field */ +#define REQ_DOWN_FIELD (KEY_MAX + 16) /* move to down to field */ + +#define REQ_NEXT_CHAR (KEY_MAX + 17) /* move to next char in field */ +#define REQ_PREV_CHAR (KEY_MAX + 18) /* move to prev char in field */ +#define REQ_NEXT_LINE (KEY_MAX + 19) /* move to next line in field */ +#define REQ_PREV_LINE (KEY_MAX + 20) /* move to prev line in field */ +#define REQ_NEXT_WORD (KEY_MAX + 21) /* move to next word in field */ +#define REQ_PREV_WORD (KEY_MAX + 22) /* move to prev word in field */ +#define REQ_BEG_FIELD (KEY_MAX + 23) /* move to first char in field */ +#define REQ_END_FIELD (KEY_MAX + 24) /* move after last char in fld */ +#define REQ_BEG_LINE (KEY_MAX + 25) /* move to beginning of line */ +#define REQ_END_LINE (KEY_MAX + 26) /* move after last char in line */ +#define REQ_LEFT_CHAR (KEY_MAX + 27) /* move left in field */ +#define REQ_RIGHT_CHAR (KEY_MAX + 28) /* move right in field */ +#define REQ_UP_CHAR (KEY_MAX + 29) /* move up in field */ +#define REQ_DOWN_CHAR (KEY_MAX + 30) /* move down in field */ + +#define REQ_NEW_LINE (KEY_MAX + 31) /* insert/overlay new line */ +#define REQ_INS_CHAR (KEY_MAX + 32) /* insert blank char at cursor */ +#define REQ_INS_LINE (KEY_MAX + 33) /* insert blank line at cursor */ +#define REQ_DEL_CHAR (KEY_MAX + 34) /* delete char at cursor */ +#define REQ_DEL_PREV (KEY_MAX + 35) /* delete char before cursor */ +#define REQ_DEL_LINE (KEY_MAX + 36) /* delete line at cursor */ +#define REQ_DEL_WORD (KEY_MAX + 37) /* delete word at cursor */ +#define REQ_CLR_EOL (KEY_MAX + 38) /* clear to end of line */ +#define REQ_CLR_EOF (KEY_MAX + 39) /* clear to end of field */ +#define REQ_CLR_FIELD (KEY_MAX + 40) /* clear entire field */ +#define REQ_OVL_MODE (KEY_MAX + 41) /* begin overlay mode */ +#define REQ_INS_MODE (KEY_MAX + 42) /* begin insert mode */ +#define REQ_SCR_FLINE (KEY_MAX + 43) /* scroll field forward a line */ +#define REQ_SCR_BLINE (KEY_MAX + 44) /* scroll field backward a line */ +#define REQ_SCR_FPAGE (KEY_MAX + 45) /* scroll field forward a page */ +#define REQ_SCR_BPAGE (KEY_MAX + 46) /* scroll field backward a page */ +#define REQ_SCR_FHPAGE (KEY_MAX + 47) /* scroll field forward half page */ +#define REQ_SCR_BHPAGE (KEY_MAX + 48) /* scroll field backward half page */ +#define REQ_SCR_FCHAR (KEY_MAX + 49) /* horizontal scroll char */ +#define REQ_SCR_BCHAR (KEY_MAX + 50) /* horizontal scroll char */ +#define REQ_SCR_HFLINE (KEY_MAX + 51) /* horizontal scroll line */ +#define REQ_SCR_HBLINE (KEY_MAX + 52) /* horizontal scroll line */ +#define REQ_SCR_HFHALF (KEY_MAX + 53) /* horizontal scroll half line */ +#define REQ_SCR_HBHALF (KEY_MAX + 54) /* horizontal scroll half line */ + +#define REQ_VALIDATION (KEY_MAX + 55) /* validate field */ +#define REQ_NEXT_CHOICE (KEY_MAX + 56) /* display next field choice */ +#define REQ_PREV_CHOICE (KEY_MAX + 57) /* display prev field choice */ + +#define MIN_FORM_COMMAND (KEY_MAX + 1) /* used by form_driver */ +#define MAX_FORM_COMMAND (KEY_MAX + 57) /* used by form_driver */ + +#if defined(MAX_COMMAND) +# if (MAX_FORM_COMMAND > MAX_COMMAND) +# error Something is wrong -- MAX_FORM_COMMAND is greater than MAX_COMMAND +# elif (MAX_COMMAND != (KEY_MAX + 128)) +# error Something is wrong -- MAX_COMMAND is already inconsistently defined. +# endif +#else +# define MAX_COMMAND (KEY_MAX + 128) +#endif + + /************************* + * standard field types * + *************************/ +extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA; +extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM; +extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM; +extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER; +extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC; +extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP; + + /************************************ + * built-in additional field types * + * They are not defined in SVr4 * + ************************************/ +extern FORM_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4; /* Internet IP Version 4 address */ + + /*********************** + * FIELDTYPE routines * + ***********************/ +extern FORM_EXPORT(FIELDTYPE *) new_fieldtype ( + bool (* const field_check)(FIELD *,const void *), + bool (* const char_check)(int,const void *)); +extern FORM_EXPORT(FIELDTYPE *) link_fieldtype( + FIELDTYPE *, FIELDTYPE *); + +extern FORM_EXPORT(int) free_fieldtype (FIELDTYPE *); +extern FORM_EXPORT(int) set_fieldtype_arg (FIELDTYPE *, + void * (* const make_arg)(va_list *), + void * (* const copy_arg)(const void *), + void (* const free_arg)(void *)); +extern FORM_EXPORT(int) set_fieldtype_choice (FIELDTYPE *, + bool (* const next_choice)(FIELD *,const void *), + bool (* const prev_choice)(FIELD *,const void *)); + + /******************* + * FIELD routines * + *******************/ +extern FORM_EXPORT(FIELD *) new_field (int,int,int,int,int,int); +extern FORM_EXPORT(FIELD *) dup_field (FIELD *,int,int); +extern FORM_EXPORT(FIELD *) link_field (FIELD *,int,int); + +extern FORM_EXPORT(int) free_field (FIELD *); +extern FORM_EXPORT(int) field_info (const FIELD *,int *,int *,int *,int *,int *,int *); +extern FORM_EXPORT(int) dynamic_field_info (const FIELD *,int *,int *,int *); +extern FORM_EXPORT(int) set_max_field ( FIELD *,int); +extern FORM_EXPORT(int) move_field (FIELD *,int,int); +extern FORM_EXPORT(int) set_field_type (FIELD *,FIELDTYPE *,...); +extern FORM_EXPORT(int) set_new_page (FIELD *,bool); +extern FORM_EXPORT(int) set_field_just (FIELD *,int); +extern FORM_EXPORT(int) field_just (const FIELD *); +extern FORM_EXPORT(int) set_field_fore (FIELD *,chtype); +extern FORM_EXPORT(int) set_field_back (FIELD *,chtype); +extern FORM_EXPORT(int) set_field_pad (FIELD *,int); +extern FORM_EXPORT(int) field_pad (const FIELD *); +extern FORM_EXPORT(int) set_field_buffer (FIELD *,int,const char *); +extern FORM_EXPORT(int) set_field_status (FIELD *,bool); +extern FORM_EXPORT(int) set_field_userptr (FIELD *, void *); +extern FORM_EXPORT(int) set_field_opts (FIELD *,Field_Options); +extern FORM_EXPORT(int) field_opts_on (FIELD *,Field_Options); +extern FORM_EXPORT(int) field_opts_off (FIELD *,Field_Options); + +extern FORM_EXPORT(chtype) field_fore (const FIELD *); +extern FORM_EXPORT(chtype) field_back (const FIELD *); + +extern FORM_EXPORT(bool) new_page (const FIELD *); +extern FORM_EXPORT(bool) field_status (const FIELD *); + +extern FORM_EXPORT(void *) field_arg (const FIELD *); + +extern FORM_EXPORT(void *) field_userptr (const FIELD *); + +extern FORM_EXPORT(FIELDTYPE *) field_type (const FIELD *); + +extern FORM_EXPORT(char *) field_buffer (const FIELD *,int); + +extern FORM_EXPORT(Field_Options) field_opts (const FIELD *); + + /****************** + * FORM routines * + ******************/ + +extern FORM_EXPORT(FORM *) new_form (FIELD **); + +extern FORM_EXPORT(FIELD **) form_fields (const FORM *); +extern FORM_EXPORT(FIELD *) current_field (const FORM *); + +extern FORM_EXPORT(WINDOW *) form_win (const FORM *); +extern FORM_EXPORT(WINDOW *) form_sub (const FORM *); + +extern FORM_EXPORT(Form_Hook) form_init (const FORM *); +extern FORM_EXPORT(Form_Hook) form_term (const FORM *); +extern FORM_EXPORT(Form_Hook) field_init (const FORM *); +extern FORM_EXPORT(Form_Hook) field_term (const FORM *); + +extern FORM_EXPORT(int) free_form (FORM *); +extern FORM_EXPORT(int) set_form_fields (FORM *,FIELD **); +extern FORM_EXPORT(int) field_count (const FORM *); +extern FORM_EXPORT(int) set_form_win (FORM *,WINDOW *); +extern FORM_EXPORT(int) set_form_sub (FORM *,WINDOW *); +extern FORM_EXPORT(int) set_current_field (FORM *,FIELD *); +extern FORM_EXPORT(int) unfocus_current_field (FORM *); +extern FORM_EXPORT(int) field_index (const FIELD *); +extern FORM_EXPORT(int) set_form_page (FORM *,int); +extern FORM_EXPORT(int) form_page (const FORM *); +extern FORM_EXPORT(int) scale_form (const FORM *,int *,int *); +extern FORM_EXPORT(int) set_form_init (FORM *,Form_Hook); +extern FORM_EXPORT(int) set_form_term (FORM *,Form_Hook); +extern FORM_EXPORT(int) set_field_init (FORM *,Form_Hook); +extern FORM_EXPORT(int) set_field_term (FORM *,Form_Hook); +extern FORM_EXPORT(int) post_form (FORM *); +extern FORM_EXPORT(int) unpost_form (FORM *); +extern FORM_EXPORT(int) pos_form_cursor (FORM *); +extern FORM_EXPORT(int) form_driver (FORM *,int); +# if NCURSES_WIDECHAR +extern FORM_EXPORT(int) form_driver_w (FORM *,int,wchar_t); +# endif +extern FORM_EXPORT(int) set_form_userptr (FORM *,void *); +extern FORM_EXPORT(int) set_form_opts (FORM *,Form_Options); +extern FORM_EXPORT(int) form_opts_on (FORM *,Form_Options); +extern FORM_EXPORT(int) form_opts_off (FORM *,Form_Options); +extern FORM_EXPORT(int) form_request_by_name (const char *); + +extern FORM_EXPORT(const char *) form_request_name (int); + +extern FORM_EXPORT(void *) form_userptr (const FORM *); + +extern FORM_EXPORT(Form_Options) form_opts (const FORM *); + +extern FORM_EXPORT(bool) data_ahead (const FORM *); +extern FORM_EXPORT(bool) data_behind (const FORM *); + +#if NCURSES_SP_FUNCS +extern FORM_EXPORT(FORM *) NCURSES_SP_NAME(new_form) (SCREEN*, FIELD **); +#endif + +#ifdef __cplusplus + } +#endif +/* *INDENT-ON*/ + +#endif /* FORM_H */ diff --git a/deps/ncurses-6.3/form/form.priv.h b/deps/ncurses-6.3/form/form.priv.h new file mode 100644 index 0000000..4cf3071 --- /dev/null +++ b/deps/ncurses-6.3/form/form.priv.h @@ -0,0 +1,312 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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, 1995,1997 * + ****************************************************************************/ + +/* $Id: form.priv.h,v 0.48 2021/06/17 21:30:22 tom Exp $ */ + +#ifndef FORM_PRIV_H +#define FORM_PRIV_H 1 +/* *INDENT-OFF*/ +#include "curses.priv.h" + +#define NCURSES_OPAQUE_FORM 0 + +#include "mf_common.h" + +#if USE_WIDEC_SUPPORT +#if HAVE_WCTYPE_H +#include <wctype.h> +#endif + +#ifndef MB_LEN_MAX +#define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */ +#endif + +#define FIELD_CELL NCURSES_CH_T + +#define NCURSES_FIELD_INTERNALS char** expanded; WINDOW *working; +#define NCURSES_FIELD_EXTENSION , (char **)0, (WINDOW *)0 + +#else + +#define FIELD_CELL char + +#define NCURSES_FIELD_EXTENSION /* nothing */ + +#endif + +#include "form.h" + + /*********************** + * Default objects * + ***********************/ +extern FORM_EXPORT_VAR(FORM *) _nc_Default_Form; +extern FORM_EXPORT_VAR(FIELD *) _nc_Default_Field; +extern FORM_EXPORT_VAR(FIELDTYPE *) _nc_Default_FieldType; + +/* form status values */ +#define _OVLMODE (0x04U) /* Form is in overlay mode */ +#define _WINDOW_MODIFIED (0x10U) /* Current field window has been modified */ +#define _FCHECK_REQUIRED (0x20U) /* Current field needs validation */ + +/* field status values */ +#define _CHANGED (0x01U) /* Field has been changed */ +#define _NEWTOP (0x02U) /* Vertical scrolling occurred */ +#define _NEWPAGE (0x04U) /* field begins new page of form */ +#define _MAY_GROW (0x08U) /* dynamic field may still grow */ + +/* fieldtype status values */ +#define _LINKED_TYPE (0x01U) /* Type is a linked type */ +#define _HAS_ARGS (0x02U) /* Type has arguments */ +#define _HAS_CHOICE (0x04U) /* Type has choice methods */ +#define _RESIDENT (0x08U) /* Type is built-in */ +#define _GENERIC (0x10U) /* A generic field type */ + +/* This are the field options required to be a selectable field in field + navigation requests */ +#define O_SELECTABLE (O_ACTIVE | O_VISIBLE) + +/* If form is NULL replace form argument by default-form */ +#define Normalize_Form(form) \ + ((form) = (form != 0) ? (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) + +#if NCURSES_SP_FUNCS +#define Get_Form_Screen(form) \ + ((form)->win ? _nc_screen_of((form->win)):CURRENT_SCREEN) +#else +#define Get_Form_Screen(form) CURRENT_SCREEN +#endif + +/* Retrieve form's window */ +#define Get_Form_Window(form) \ + ((form)->sub \ + ? (form)->sub \ + : ((form)->win \ + ? (form)->win \ + : StdScreen(Get_Form_Screen(form)))) + +/* Calculate the size for a single buffer for this field */ +#define Buffer_Length(field) ((field)->drows * (field)->dcols) + +/* Calculate the total size of all buffers for this field */ +#define Total_Buffer_Size(field) \ + ( (size_t)(Buffer_Length(field) + 1) * (size_t)(1+(field)->nbuf) * sizeof(FIELD_CELL) ) + +/* Logic to determine whether or not a field is single lined */ +#define Single_Line_Field(field) \ + (((field)->rows + (field)->nrow) == 1) + +#define Field_Has_Option(f,o) ((((unsigned)(f)->opts) & o) != 0) + +/* Logic to determine whether or not a field is selectable */ +#define Field_Is_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)==O_SELECTABLE) +#define Field_Is_Not_Selectable(f) (((unsigned)((f)->opts) & O_SELECTABLE)!=O_SELECTABLE) + +typedef struct typearg + { + struct typearg *left; + struct typearg *right; + } +TypeArgument; + +/* This is a dummy request code (normally invalid) to be used internally + with the form_driver() routine to position to the first active field + on the form +*/ +#define FIRST_ACTIVE_MAGIC (-291056) + +#define ALL_FORM_OPTS ( \ + O_NL_OVERLOAD |\ + O_BS_OVERLOAD ) + +#define STD_FIELD_OPTS (Field_Options)( \ + O_VISIBLE |\ + O_ACTIVE |\ + O_PUBLIC |\ + O_EDIT |\ + O_WRAP |\ + O_BLANK |\ + O_AUTOSKIP|\ + O_NULLOK |\ + O_PASSOK |\ + O_STATIC) + +#define ALL_FIELD_OPTS (Field_Options)( \ + STD_FIELD_OPTS |\ + O_DYNAMIC_JUSTIFY |\ + O_NO_LEFT_STRIP |\ + O_EDGE_INSERT_STAY |\ + O_INPUT_LIMIT) + +#define C_BLANK ' ' +#define is_blank(c) ((c)==C_BLANK) + +#define C_ZEROS '\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*); +extern FORM_EXPORT(bool) _nc_Copy_Type (FIELD*, FIELD const *); +extern FORM_EXPORT(void) _nc_Free_Type (FIELD *); + +extern FORM_EXPORT(int) _nc_Synchronize_Attributes (FIELD*); +extern FORM_EXPORT(int) _nc_Synchronize_Options (FIELD*, Field_Options); +extern FORM_EXPORT(int) _nc_Set_Form_Page (FORM*, int, FIELD*); +extern FORM_EXPORT(int) _nc_Refresh_Current_Field (FORM*); +extern FORM_EXPORT(FIELD *) _nc_First_Active_Field (FORM*); +extern FORM_EXPORT(bool) _nc_Internal_Validation (FORM*); +extern FORM_EXPORT(int) _nc_Set_Current_Field (FORM*, FIELD*); +extern FORM_EXPORT(int) _nc_Position_Form_Cursor (FORM*); +extern FORM_EXPORT(void) _nc_Unset_Current_Field(FORM *form); + +#if NCURSES_INTEROP_FUNCS +extern FORM_EXPORT(FIELDTYPE *) _nc_TYPE_INTEGER(void); +extern FORM_EXPORT(FIELDTYPE *) _nc_TYPE_ALNUM(void); +extern FORM_EXPORT(FIELDTYPE *) _nc_TYPE_ALPHA(void); +extern FORM_EXPORT(FIELDTYPE *) _nc_TYPE_ENUM(void); +extern FORM_EXPORT(FIELDTYPE *) _nc_TYPE_NUMERIC(void); +extern FORM_EXPORT(FIELDTYPE *) _nc_TYPE_REGEXP(void); +extern FORM_EXPORT(FIELDTYPE *) _nc_TYPE_IPV4(void); + +extern FORM_EXPORT(FIELDTYPE *) +_nc_generic_fieldtype(bool (*const field_check) (FORM*, + FIELD *, + const void *), + bool (*const char_check) (int, + FORM*, + FIELD*, + const void *), + bool (*const next)(FORM*,FIELD*,const void*), + bool (*const prev)(FORM*,FIELD*,const void*), + void (*freecallback)(void*)); +extern FORM_EXPORT(int) _nc_set_generic_fieldtype(FIELD*, FIELDTYPE*, int (*)(void**)); +extern FORM_EXPORT(WINDOW*) _nc_form_cursor(const FORM* , int* , int* ); + +#define INIT_FT_FUNC(func) {func} +#else +#define INIT_FT_FUNC(func) func +#endif + +extern FORM_EXPORT(void) _nc_get_fieldbuffer(FORM*, FIELD*, FIELD_CELL*); + +#if USE_WIDEC_SUPPORT +extern FORM_EXPORT(wchar_t *) _nc_Widen_String(char *, int *); +#endif + +#ifdef TRACE + +#define returnField(code) TRACE_RETURN1(code,field) +#define returnFieldPtr(code) TRACE_RETURN1(code,field_ptr) +#define returnForm(code) TRACE_RETURN1(code,form) +#define returnFieldType(code) TRACE_RETURN1(code,field_type) +#define returnFormHook(code) TRACE_RETURN1(code,form_hook) + +extern FORM_EXPORT(FIELD **) _nc_retrace_field_ptr (FIELD **); +extern FORM_EXPORT(FIELD *) _nc_retrace_field (FIELD *); +extern FORM_EXPORT(FIELDTYPE *) _nc_retrace_field_type (FIELDTYPE *); +extern FORM_EXPORT(FORM *) _nc_retrace_form (FORM *); +extern FORM_EXPORT(Form_Hook) _nc_retrace_form_hook (Form_Hook); + +#else /* !TRACE */ + +#define returnFieldPtr(code) return code +#define returnFieldType(code) return code +#define returnField(code) return code +#define returnForm(code) return code +#define returnFormHook(code) return code + +#endif /* TRACE/!TRACE */ + +/* + * Use Check_CTYPE_Field() to simplify FIELDTYPE's that use only the ccheck() + * function. + */ +#if USE_WIDEC_SUPPORT +#define Check_CTYPE_Field(result, buffer, width, ccheck) \ + while (*buffer && *buffer == ' ') \ + buffer++; \ + if (*buffer) \ + { \ + bool blank = FALSE; \ + int len; \ + int n; \ + wchar_t *list = _nc_Widen_String((char *)buffer, &len); \ + if (list != 0) \ + { \ + result = TRUE; \ + for (n = 0; n < len; ++n) \ + { \ + if (blank) \ + { \ + if (list[n] != ' ') \ + { \ + result = FALSE; \ + break; \ + } \ + } \ + else if (list[n] == ' ') \ + { \ + blank = TRUE; \ + result = (n + 1 >= width); \ + } \ + else if (!ccheck(list[n], NULL)) \ + { \ + result = FALSE; \ + break; \ + } \ + } \ + free(list); \ + } \ + } +#else +#define Check_CTYPE_Field(result, buffer, width, ccheck) \ + while (*buffer && *buffer == ' ') \ + buffer++; \ + if (*buffer) \ + { \ + unsigned char *s = buffer; \ + int l = -1; \ + while (*buffer && ccheck(*buffer, NULL)) \ + buffer++; \ + l = (int)(buffer - s); \ + while (*buffer && *buffer == ' ') \ + buffer++; \ + result = ((*buffer || (l < width)) ? FALSE : TRUE); \ + } +#endif +/* *INDENT-ON*/ + +#endif /* FORM_PRIV_H */ diff --git a/deps/ncurses-5.9/form/frm_cursor.c b/deps/ncurses-6.3/form/frm_cursor.c similarity index 92% rename from deps/ncurses-5.9/form/frm_cursor.c rename to deps/ncurses-6.3/form/frm_cursor.c index 7a4cd16..a54b483 100644 --- a/deps/ncurses-5.9/form/frm_cursor.c +++ b/deps/ncurses-6.3/form/frm_cursor.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,12 +33,12 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_cursor.c,v 1.10 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_cursor.c,v 1.13 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int pos_form_cursor(FORM * form) -| +| | Description : Moves the form window cursor to the location required | by the form driver to resume form processing. This may | be needed after the application calls a curses library @@ -48,7 +49,7 @@ MODULE_ID("$Id: frm_cursor.c,v 1.10 2010/01/23 21:14:36 tom Exp $") | E_BAD_ARGUMENT - Invalid form pointer | E_NOT_POSTED - Form is not posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) pos_form_cursor(FORM *form) { int res; diff --git a/deps/ncurses-5.9/form/frm_data.c b/deps/ncurses-6.3/form/frm_data.c similarity index 93% rename from deps/ncurses-5.9/form/frm_data.c rename to deps/ncurses-6.3/form/frm_data.c index 93917d5..940c32d 100644 --- a/deps/ncurses-5.9/form/frm_data.c +++ b/deps/ncurses-6.3/form/frm_data.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2013 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 * @@ -32,19 +33,19 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_data.c,v 1.15 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_data.c,v 1.21 2021/06/17 21:11:08 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : bool data_behind(const FORM *form) -| +| | Description : Check for off-screen data behind. This is nearly trivial | because the beginning of a field is fixed. | | Return Values : TRUE - there are off-screen data behind | FALSE - there are no off-screen data behind +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) +FORM_EXPORT(bool) data_behind(const FORM *form) { bool result = FALSE; @@ -69,12 +70,12 @@ data_behind(const FORM *form) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static char * Only_Padding( | WINDOW *w, | int len, | int pad) -| +| | Description : Test if 'length' cells starting at the current position | contain a padding character. | @@ -103,7 +104,7 @@ Only_Padding(WINDOW *w, int len, int pad) } } #else - cell = winch(w); + cell = (FIELD_CELL)winch(w); if (ChCharOf(cell) != ChCharOf(pad)) { result = FALSE; @@ -122,16 +123,16 @@ Only_Padding(WINDOW *w, int len, int pad) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : bool data_ahead(const FORM *form) -| +| | Description : Check for off-screen data ahead. This is more difficult -| because a dynamic field has a variable end. +| because a dynamic field has a variable end. | | Return Values : TRUE - there are off-screen data ahead | FALSE - there are no off-screen data ahead +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) +FORM_EXPORT(bool) data_ahead(const FORM *form) { bool result = FALSE; @@ -149,12 +150,11 @@ data_ahead(const FORM *form) if (Single_Line_Field(field)) { - int check_len; - pos = form->begincol + field->cols; while (pos < field->dcols) { - check_len = field->dcols - pos; + int check_len = field->dcols - pos; + if (check_len >= field->cols) check_len = field->cols; cursor_moved = TRUE; diff --git a/deps/ncurses-5.9/form/frm_def.c b/deps/ncurses-6.3/form/frm_def.c similarity index 91% rename from deps/ncurses-5.9/form/frm_def.c rename to deps/ncurses-6.3/form/frm_def.c index 86500f2..a9f21f2 100644 --- a/deps/ncurses-5.9/form/frm_def.c +++ b/deps/ncurses-6.3/form/frm_def.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_def.c,v 1.25 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_def.c,v 1.30 2021/03/27 23:49:58 tom Exp $") /* this can't be readonly */ static FORM default_form = @@ -61,14 +62,14 @@ static FORM default_form = NULL /* fieldterm */ }; -NCURSES_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form; - +FORM_EXPORT_VAR(FORM *) _nc_Default_Form = &default_form; + /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static FIELD *Insert_Field_By_Position( -| FIELD *new_field, +| FIELD *new_field, | FIELD *head ) -| +| | Description : Insert new_field into sorted fieldlist with head "head" | and return new head of sorted fieldlist. Sorting | criteria is (row,column). This is a circular list. @@ -112,9 +113,9 @@ Insert_Field_By_Position(FIELD *newfield, FIELD *head) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void Disconnect_Fields(FORM *form) -| +| | Description : Break association between form and array of fields. | | Return Values : - @@ -142,9 +143,9 @@ Disconnect_Fields(FORM *form) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static int Connect_Fields(FORM *form, FIELD **fields) -| +| | Description : Set association between form and array of fields. | | Return Values : E_OK - no error @@ -157,7 +158,6 @@ Connect_Fields(FORM *form, FIELD **fields) { int field_cnt, j; int page_nr; - int maximum_row_in_field, maximum_col_in_field; _PAGE *pg; T((T_CALLED("Connect_Fields(%p,%p)"), (void *)form, (void *)fields)); @@ -198,15 +198,18 @@ Connect_Fields(FORM *form, FIELD **fields) size of the form */ for (j = 0; j < field_cnt; j++) { + int maximum_row_in_field; + int maximum_col_in_field; + if (j == 0) - pg->pmin = j; + pg->pmin = (short)j; else { if (fields[j]->status & _NEWPAGE) { - pg->pmax = j - 1; + pg->pmax = (short)(j - 1); pg++; - pg->pmin = j; + pg->pmin = (short)j; } } @@ -214,14 +217,14 @@ Connect_Fields(FORM *form, FIELD **fields) maximum_col_in_field = fields[j]->fcol + fields[j]->cols; if (form->rows < maximum_row_in_field) - form->rows = maximum_row_in_field; + form->rows = (short)maximum_row_in_field; if (form->cols < maximum_col_in_field) - form->cols = maximum_col_in_field; + form->cols = (short)maximum_col_in_field; } - pg->pmax = field_cnt - 1; - form->maxfield = field_cnt; - form->maxpage = page_nr; + pg->pmax = (short)(field_cnt - 1); + form->maxfield = (short)field_cnt; + form->maxpage = (short)page_nr; /* Sort fields on form pages */ for (page_nr = 0; page_nr < form->maxpage; page_nr++) @@ -230,8 +233,8 @@ Connect_Fields(FORM *form, FIELD **fields) for (j = form->page[page_nr].pmin; j <= form->page[page_nr].pmax; j++) { - fields[j]->index = j; - fields[j]->page = page_nr; + fields[j]->index = (short)j; + fields[j]->page = (short)page_nr; fld = Insert_Field_By_Position(fields[j], fld); } if (fld) @@ -249,10 +252,10 @@ Connect_Fields(FORM *form, FIELD **fields) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static int Associate_Fields(FORM *form, FIELD **fields) -| -| Description : Set association between form and array of fields. +| +| Description : Set association between form and array of fields. | If there are fields, position to first active field. | | Return Values : E_OK - success @@ -282,9 +285,9 @@ Associate_Fields(FORM *form, FIELD **fields) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : FORM *new_form_sp(SCREEN* sp, FIELD** fields ) -| +| | Description : Create new form with given array of fields. | | Return Values : Pointer to form. NULL if error occurred. @@ -294,7 +297,7 @@ Associate_Fields(FORM *form, FIELD **fields) | E_CONNECTED - a field is already connected | E_SYSTEM_ERROR - not enough memory +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FORM *) +FORM_EXPORT(FORM *) NCURSES_SP_NAME(new_form) (NCURSES_SP_DCLx FIELD **fields) { int err = E_SYSTEM_ERROR; @@ -330,9 +333,9 @@ NCURSES_SP_NAME(new_form) (NCURSES_SP_DCLx FIELD **fields) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : FORM* new_form(FIELD** fields ) -| +| | Description : Create new form with given array of fields. | | Return Values : Pointer to form. NULL if error occurred. @@ -343,7 +346,7 @@ NCURSES_SP_NAME(new_form) (NCURSES_SP_DCLx FIELD **fields) | E_SYSTEM_ERROR - not enough memory +--------------------------------------------------------------------------*/ #if NCURSES_SP_FUNCS -NCURSES_EXPORT(FORM *) +FORM_EXPORT(FORM *) new_form(FIELD **fields) { return NCURSES_SP_NAME(new_form) (CURRENT_SCREEN, fields); @@ -351,16 +354,16 @@ new_form(FIELD **fields) #endif /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int free_form( FORM *form ) -| +| | Description : Release internal memory associated with form. | | Return Values : E_OK - no error | E_BAD_ARGUMENT - invalid form pointer | E_POSTED - form is posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) free_form(FORM *form) { T((T_CALLED("free_form(%p)"), (void *)form)); @@ -380,9 +383,9 @@ free_form(FORM *form) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_form_fields( FORM *form, FIELD **fields ) -| +| | Description : Set a new association of an array of fields to a form | | Return Values : E_OK - no error @@ -391,7 +394,7 @@ free_form(FORM *form) | E_POSTED - form is posted | E_SYSTEM_ERROR - not enough memory +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_form_fields(FORM *form, FIELD **fields) { FIELD **old; @@ -415,14 +418,14 @@ set_form_fields(FORM *form, FIELD **fields) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : FIELD **form_fields( const FORM *form ) -| +| | Description : Retrieve array of fields | | Return Values : Pointer to field array +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD **) +FORM_EXPORT(FIELD **) form_fields(const FORM *form) { T((T_CALLED("form_field(%p)"), (const void *)form)); @@ -430,14 +433,14 @@ form_fields(const FORM *form) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int field_count( const FORM *form ) -| +| | Description : Retrieve number of fields | | Return Values : Number of fields, -1 if none are defined +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) field_count(const FORM *form) { T((T_CALLED("field_count(%p)"), (const void *)form)); diff --git a/deps/ncurses-5.9/form/frm_driver.c b/deps/ncurses-6.3/form/frm_driver.c similarity index 88% rename from deps/ncurses-5.9/form/frm_driver.c rename to deps/ncurses-6.3/form/frm_driver.c index e0892bf..75656d6 100644 --- a/deps/ncurses-5.9/form/frm_driver.c +++ b/deps/ncurses-6.3/form/frm_driver.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -32,7 +33,7 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_driver.c,v 1.98 2010/05/01 21:11:43 tom Exp $") +MODULE_ID("$Id: frm_driver.c,v 1.135 2021/09/01 23:34:01 tom Exp $") /*---------------------------------------------------------------------------- This is the core module of the form library. It contains the majority @@ -99,9 +100,9 @@ Perhaps at some time we will make this configurable at runtime. #define GROW_IF_NAVIGATE (1) #if USE_WIDEC_SUPPORT -#define myADDNSTR(w, s, n) wadd_wchnstr(w, s, n) -#define myINSNSTR(w, s, n) wins_wchnstr(w, s, n) -#define myINNSTR(w, s, n) fix_wchnstr(w, s, n) +#define myADDNSTR(w, s, n) wide_waddnstr(w, s, n) +#define myINSNSTR(w, s, n) wide_winsnstr(w, s, n) +#define myINNSTR(w, s, n) wide_winnstr(w, s, n) #define myWCWIDTH(w, y, x) cell_width(w, y, x) #else #define myADDNSTR(w, s, n) waddnstr(w, s, n) @@ -130,34 +131,34 @@ static int FE_Delete_Previous(FORM *); /* Calculate the position of a single row in a field buffer */ #define Position_Of_Row_In_Buffer(field,row) ((row)*(field)->dcols) -/* Calculate start address for the fields buffer# N */ +/* Calculate start address for the field's buffer# N */ #define Address_Of_Nth_Buffer(field,N) \ ((field)->buf + (N)*(1+Buffer_Length(field))) -/* Calculate the start address of the row in the fields specified buffer# N */ +/* Calculate the start address of the row in the field's specified buffer# N */ #define Address_Of_Row_In_Nth_Buffer(field,N,row) \ (Address_Of_Nth_Buffer(field,N) + Position_Of_Row_In_Buffer(field,row)) -/* Calculate the start address of the row in the fields primary buffer */ +/* Calculate the start address of the row in the field's primary buffer */ #define Address_Of_Row_In_Buffer(field,row) \ Address_Of_Row_In_Nth_Buffer(field,0,row) -/* Calculate the start address of the row in the forms current field +/* Calculate the start address of the row in the form's current field buffer# N */ #define Address_Of_Current_Row_In_Nth_Buffer(form,N) \ Address_Of_Row_In_Nth_Buffer((form)->current,N,(form)->currow) -/* Calculate the start address of the row in the forms current field +/* Calculate the start address of the row in the form's current field primary buffer */ #define Address_Of_Current_Row_In_Buffer(form) \ Address_Of_Current_Row_In_Nth_Buffer(form,0) -/* Calculate the address of the cursor in the forms current field +/* Calculate the address of the cursor in the form's current field primary buffer */ #define Address_Of_Current_Position_In_Nth_Buffer(form,N) \ (Address_Of_Current_Row_In_Nth_Buffer(form,N) + (form)->curcol) -/* Calculate the address of the cursor in the forms current field +/* Calculate the address of the cursor in the form's current field buffer# N */ #define Address_Of_Current_Position_In_Buffer(form) \ Address_Of_Current_Position_In_Nth_Buffer(form,0) @@ -172,29 +173,30 @@ static int FE_Delete_Previous(FORM *); instead of a derived window because it contains invisible parts. This is true for non-public fields and for scrollable fields. */ #define Has_Invisible_Parts(field) \ - (!((field)->opts & O_PUBLIC) || \ + (!(Field_Has_Option(field, O_PUBLIC)) || \ Is_Scroll_Field(field)) /* Logic to decide whether or not a field needs justification */ #define Justification_Allowed(field) \ (((field)->just != NO_JUSTIFICATION) && \ (Single_Line_Field(field)) && \ - (((field)->dcols == (field)->cols) && \ - ((field)->opts & O_STATIC)) ) + ((Field_Has_Option(field, O_STATIC) && \ + ((field)->dcols == (field)->cols)) || \ + Field_Has_Option(field, O_DYNAMIC_JUSTIFY))) /* Logic to determine whether or not a dynamic field may still grow */ #define Growable(field) ((field)->status & _MAY_GROW) -/* Macro to set the attributes for a fields window */ +/* Macro to set the attributes for a field's window */ #define Set_Field_Window_Attributes(field,win) \ -( wbkgdset((win),(chtype)((field)->pad | (field)->back)), \ - (void) wattrset((win),(field)->fore) ) +( wbkgdset((win),(chtype)((chtype)((field)->pad) | (field)->back)), \ + (void) wattrset((win), (int)(field)->fore) ) /* Logic to decide whether or not a field really appears on the form */ #define Field_Really_Appears(field) \ ((field->form) &&\ (field->form->status & _POSTED) &&\ - (field->opts & O_VISIBLE) &&\ + (Field_Has_Option(field, O_VISIBLE)) &&\ (field->page == field->form->curpage)) /* Logic to determine whether or not we are on the first position in the @@ -215,10 +217,10 @@ static FIELD_CELL myZEROS; static void check_pos(FORM *form, int lineno) { - int y, x; - if (form && form->w) { + int y, x; + getyx(form->w, y, x); if (y != form->currow || x != form->curcol) { @@ -238,15 +240,36 @@ check_pos(FORM *form, int lineno) Wide-character special functions --------------------------------------------------------------------------*/ #if USE_WIDEC_SUPPORT -/* like winsnstr */ +/* add like waddnstr, but using cchar_t* rather than char* + */ +static int +wide_waddnstr(WINDOW *w, const cchar_t *s, int n) +{ + int rc = OK; + + while (n-- > 0) + { + if ((rc = wadd_wch(w, s)) != OK) + break; + ++s; + } + return rc; +} + +/* insert like winsnstr, but using cchar_t* rather than char* + * + * X/Open Curses has no close equivalent; inserts are done only with wchar_t + * strings. + */ static int -wins_wchnstr(WINDOW *w, cchar_t *s, int n) +wide_winsnstr(WINDOW *w, const cchar_t *s, int n) { int code = ERR; - int y, x; while (n-- > 0) { + int y, x; + getyx(w, y, x); if ((code = wins_wch(w, s++)) != OK) break; @@ -256,11 +279,13 @@ wins_wchnstr(WINDOW *w, cchar_t *s, int n) return code; } -/* win_wchnstr is inconsistent with winnstr, since it returns OK rather than - * the number of items transferred. +/* retrieve like winnstr, but using cchar_t*, rather than char*. + * + * X/Open Curses' closest equivalent, win_wchnstr(), is inconsistent with + * winnstr(), since it returns OK rather than the number of items transferred. */ static int -fix_wchnstr(WINDOW *w, cchar_t *s, int n) +wide_winnstr(WINDOW *w, cchar_t *s, int n) { int x; @@ -487,7 +512,6 @@ Buffer_To_Window(const FIELD *field, WINDOW *win) { int width, height; int y, x; - int len; int row; FIELD_CELL *pBuffer; @@ -501,6 +525,8 @@ Buffer_To_Window(const FIELD *field, WINDOW *win) row < height; row++, pBuffer += width) { + int len; + if ((len = (int)(After_End_Of_Data(pBuffer, width) - pBuffer)) > 0) { wmove(win, row, 0); @@ -524,7 +550,7 @@ Buffer_To_Window(const FIELD *field, WINDOW *win) | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) +FORM_EXPORT(void) _nc_get_fieldbuffer(FORM *form, FIELD *field, FIELD_CELL *buf) { int pad; @@ -601,8 +627,8 @@ Synchronize_Buffer(FORM *form) { if (form->status & _WINDOW_MODIFIED) { - form->status &= ~_WINDOW_MODIFIED; - form->status |= _FCHECK_REQUIRED; + ClrStatus(form, _WINDOW_MODIFIED); + SetStatus(form, _FCHECK_REQUIRED); Window_To_Buffer(form, form->current); wmove(form->w, form->currow, form->curcol); } @@ -653,7 +679,7 @@ Field_Grown(FIELD *field, int amount) growth = Minimum(field->maxgrow - field->dcols, growth); field->dcols += growth; if (field->dcols == field->maxgrow) - field->status &= ~_MAY_GROW; + ClrStatus(field, _MAY_GROW); } else { @@ -662,7 +688,7 @@ Field_Grown(FIELD *field, int amount) growth = Minimum(field->maxgrow - field->drows, growth); field->drows += growth; if (field->drows == field->maxgrow) - field->status &= ~_MAY_GROW; + ClrStatus(field, _MAY_GROW); } /* drows, dcols changed, so we get really the new buffer length */ new_buflen = Buffer_Length(field); @@ -674,7 +700,7 @@ Field_Grown(FIELD *field, int amount) field->drows = old_drows; if ((single_line_field && (field->dcols != field->maxgrow)) || (!single_line_field && (field->drows != field->maxgrow))) - field->status |= _MAY_GROW; + SetStatus(field, _MAY_GROW); } else { @@ -682,8 +708,6 @@ Field_Grown(FIELD *field, int amount) * realloc(). */ int i, j; - FIELD_CELL *old_bp; - FIELD_CELL *new_bp; result = TRUE; /* allow sharing of recovery on failure */ @@ -691,8 +715,9 @@ Field_Grown(FIELD *field, int amount) field->buf = newbuf; for (i = 0; i <= field->nbuf; i++) { - new_bp = Address_Of_Nth_Buffer(field, i); - old_bp = oldbuf + i * (1 + old_buflen); + FIELD_CELL *new_bp = Address_Of_Nth_Buffer(field, i); + FIELD_CELL *old_bp = oldbuf + i * (1 + old_buflen); + for (j = 0; j < old_buflen; ++j) new_bp[j] = old_bp[j]; while (j < new_buflen) @@ -753,7 +778,7 @@ Field_Grown(FIELD *field, int amount) (field->dcols != field->maxgrow)) || (!single_line_field && (field->drows != field->maxgrow))) - field->status |= _MAY_GROW; + SetStatus(field, _MAY_GROW); free(newbuf); } } @@ -802,7 +827,7 @@ Field_encloses(FIELD *field, int ry, int rx) | E_SYSTEM_ERROR - form has no current field or | field-window +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) _nc_Position_Form_Cursor(FORM *form) { FIELD *field; @@ -836,18 +861,20 @@ _nc_Position_Form_Cursor(FORM *form) | Facility : libnform | Function : int _nc_Refresh_Current_Field(FORM * form) | -| Description : Propagate the changes in the fields window to the +| Description : Propagate the changes in the field's window to the | window of the form. | | Return Values : E_OK - on success | E_BAD_ARGUMENT - invalid form pointer | E_SYSTEM_ERROR - general error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +static bool move_after_insert = TRUE; +FORM_EXPORT(int) _nc_Refresh_Current_Field(FORM *form) { WINDOW *formwin; FIELD *field; + bool is_public; T((T_CALLED("_nc_Refresh_Current_Field(%p)"), (void *)form)); @@ -860,102 +887,106 @@ _nc_Refresh_Current_Field(FORM *form) field = form->current; formwin = Get_Form_Window(form); - if (field->opts & O_PUBLIC) + is_public = Field_Has_Option(field, O_PUBLIC); + + if (Is_Scroll_Field(field)) { - if (Is_Scroll_Field(field)) + /* Again, in this case the fieldwin isn't derived from formwin, + so we have to perform a copy operation. */ + if (Single_Line_Field(field)) { - /* Again, in this case the fieldwin isn't derived from formwin, - so we have to perform a copy operation. */ - if (Single_Line_Field(field)) + /* horizontal scrolling */ + if (form->curcol < form->begincol) + form->begincol = form->curcol; + else { - /* horizontal scrolling */ - if (form->curcol < form->begincol) - form->begincol = form->curcol; - else - { - if (form->curcol >= (form->begincol + field->cols)) - form->begincol = form->curcol - field->cols + 1; - } - copywin(form->w, - formwin, - 0, - form->begincol, - field->frow, - field->fcol, - field->frow, - field->cols + field->fcol - 1, - 0); + if (form->curcol >= (form->begincol + field->cols)) + form->begincol = form->curcol - field->cols + + (move_after_insert ? 1 : 0); } - else + if (is_public) + copywin(form->w, + formwin, + 0, + form->begincol, + field->frow, + field->fcol, + field->frow, + field->cols + field->fcol - 1, + 0); + } + else + { + /* A multi-line, i.e. vertical scrolling field */ + int first_modified_row, first_unmodified_row; + + if (field->drows > field->rows) { - /* A multi-line, i.e. vertical scrolling field */ - int row_after_bottom, first_modified_row, first_unmodified_row; + int row_after_bottom = form->toprow + field->rows; - if (field->drows > field->rows) + if (form->currow < form->toprow) { - row_after_bottom = form->toprow + field->rows; - if (form->currow < form->toprow) - { - form->toprow = form->currow; - field->status |= _NEWTOP; - } - if (form->currow >= row_after_bottom) - { - form->toprow = form->currow - field->rows + 1; - field->status |= _NEWTOP; - } - if (field->status & _NEWTOP) - { - /* means we have to copy whole range */ - first_modified_row = form->toprow; - first_unmodified_row = first_modified_row + field->rows; - field->status &= ~_NEWTOP; - } - else - { - /* we try to optimize : finding the range of touched - lines */ - first_modified_row = form->toprow; - while (first_modified_row < row_after_bottom) - { - if (is_linetouched(form->w, first_modified_row)) - break; - first_modified_row++; - } - first_unmodified_row = first_modified_row; - while (first_unmodified_row < row_after_bottom) - { - if (!is_linetouched(form->w, first_unmodified_row)) - break; - first_unmodified_row++; - } - } + form->toprow = form->currow; + SetStatus(field, _NEWTOP); } - else + if (form->currow >= row_after_bottom) + { + form->toprow = form->currow - field->rows + 1; + SetStatus(field, _NEWTOP); + } + if (field->status & _NEWTOP) { + /* means we have to copy whole range */ first_modified_row = form->toprow; first_unmodified_row = first_modified_row + field->rows; + ClrStatus(field, _NEWTOP); + } + else + { + /* we try to optimize : finding the range of touched + lines */ + first_modified_row = form->toprow; + while (first_modified_row < row_after_bottom) + { + if (is_linetouched(form->w, first_modified_row)) + break; + first_modified_row++; + } + first_unmodified_row = first_modified_row; + while (first_unmodified_row < row_after_bottom) + { + if (!is_linetouched(form->w, first_unmodified_row)) + break; + first_unmodified_row++; + } } - if (first_unmodified_row != first_modified_row) - copywin(form->w, - formwin, - first_modified_row, - 0, - field->frow + first_modified_row - form->toprow, - field->fcol, - field->frow + first_unmodified_row - form->toprow - 1, - field->cols + field->fcol - 1, - 0); } - wsyncup(formwin); - } - else - { - /* if the field-window is simply a derived window, i.e. contains no - * invisible parts, the whole thing is trivial - */ - wsyncup(form->w); + else + { + first_modified_row = form->toprow; + first_unmodified_row = first_modified_row + field->rows; + } + if (first_unmodified_row != first_modified_row && is_public) + copywin(form->w, + formwin, + first_modified_row, + 0, + field->frow + first_modified_row - form->toprow, + field->fcol, + field->frow + first_unmodified_row - form->toprow - 1, + field->cols + field->fcol - 1, + 0); } + if (is_public) + wsyncup(formwin); + } + else + { + /* if the field-window is simply a derived window, i.e. contains no + * invisible parts, the whole thing is trivial + */ + if (is_public) + wsyncup(form->w); } untouchwin(form->w); returnCode(_nc_Position_Form_Cursor(form)); @@ -976,28 +1007,32 @@ Perform_Justification(FIELD *field, WINDOW *win) { FIELD_CELL *bp; int len; - int col = 0; - bp = Get_Start_Of_Data(field->buf, Buffer_Length(field)); + bp = (Field_Has_Option(field, O_NO_LEFT_STRIP) + ? field->buf + : Get_Start_Of_Data(field->buf, Buffer_Length(field))); len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp); if (len > 0) { - assert(win && (field->drows == 1) && (field->dcols == field->cols)); + int col = 0; - switch (field->just) - { - case JUSTIFY_LEFT: - break; - case JUSTIFY_CENTER: - col = (field->cols - len) / 2; - break; - case JUSTIFY_RIGHT: - col = field->cols - len; - break; - default: - break; - } + assert(win && (field->drows == 1)); + + if (field->cols - len >= 0) + switch (field->just) + { + case JUSTIFY_LEFT: + break; + case JUSTIFY_CENTER: + col = (field->cols - len) / 2; + break; + case JUSTIFY_RIGHT: + col = field->cols - len; + break; + default: + break; + } wmove(win, 0, col); myADDNSTR(win, bp, len); @@ -1019,9 +1054,14 @@ static void Undo_Justification(FIELD *field, WINDOW *win) { FIELD_CELL *bp; + int y, x; int len; - bp = Get_Start_Of_Data(field->buf, Buffer_Length(field)); + getyx(win, y, x); + + bp = (Field_Has_Option(field, O_NO_LEFT_STRIP) + ? field->buf + : Get_Start_Of_Data(field->buf, Buffer_Length(field))); len = (int)(After_End_Of_Data(field->buf, Buffer_Length(field)) - bp); if (len > 0) @@ -1030,6 +1070,7 @@ Undo_Justification(FIELD *field, WINDOW *win) wmove(win, 0, 0); myADDNSTR(win, bp, len); } + wmove(win, y, x); } /*--------------------------------------------------------------------------- @@ -1111,27 +1152,27 @@ Display_Or_Erase_Field(FIELD *field, bool bEraseFlag) return E_SYSTEM_ERROR; else { - if (field->opts & O_VISIBLE) + if (Field_Has_Option(field, O_VISIBLE)) { Set_Field_Window_Attributes(field, win); } else { - (void)wattrset(win, WINDOW_ATTRS(fwin)); + (void)wattrset(win, (int)WINDOW_ATTRS(fwin)); } werase(win); } if (!bEraseFlag) { - if (field->opts & O_PUBLIC) + if (Field_Has_Option(field, O_PUBLIC)) { if (Justification_Allowed(field)) Perform_Justification(field, win); else Buffer_To_Window(field, win); } - field->status &= ~_NEWTOP; + ClrStatus(field, _NEWTOP); } wsyncup(win); delwin(win); @@ -1170,18 +1211,18 @@ Synchronize_Field(FIELD *field) form->currow = form->curcol = form->toprow = form->begincol = 0; werase(form->w); - if ((field->opts & O_PUBLIC) && Justification_Allowed(field)) + if ((Field_Has_Option(field, O_PUBLIC)) && Justification_Allowed(field)) Undo_Justification(field, form->w); else Buffer_To_Window(field, form->w); - field->status |= _NEWTOP; + SetStatus(field, _NEWTOP); res = _nc_Refresh_Current_Field(form); } else res = Display_Field(field); } - field->status |= _CHANGED; + SetStatus(field, _CHANGED); return (res); } @@ -1202,7 +1243,6 @@ Synchronize_Linked_Fields(FIELD *field) { FIELD *linked_field; int res = E_OK; - int syncres; if (!field) return (E_BAD_ARGUMENT); @@ -1211,9 +1251,11 @@ Synchronize_Linked_Fields(FIELD *field) return (E_SYSTEM_ERROR); for (linked_field = field->link; - linked_field != field; + (linked_field != field) && (linked_field != 0); linked_field = linked_field->link) { + int syncres; + if (((syncres = Synchronize_Field(linked_field)) != E_OK) && (res == E_OK)) res = syncres; @@ -1225,7 +1267,7 @@ Synchronize_Linked_Fields(FIELD *field) | Facility : libnform | Function : int _nc_Synchronize_Attributes(FIELD * field) | -| Description : If a fields visual attributes have changed, this +| Description : If a field's visual attributes have changed, this | routine is called to propagate those changes to the | screen. | @@ -1233,12 +1275,11 @@ Synchronize_Linked_Fields(FIELD *field) | E_BAD_ARGUMENT - invalid field pointer | E_SYSTEM_ERROR - some severe basic error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) _nc_Synchronize_Attributes(FIELD *field) { FORM *form; int res = E_OK; - WINDOW *formwin; T((T_CALLED("_nc_Synchronize_Attributes(%p)"), (void *)field)); @@ -1256,7 +1297,7 @@ _nc_Synchronize_Attributes(FIELD *field) werase(form->w); wmove(form->w, form->currow, form->curcol); - if (field->opts & O_PUBLIC) + if (Field_Has_Option(field, O_PUBLIC)) { if (Justification_Allowed(field)) Undo_Justification(field, form->w); @@ -1265,14 +1306,16 @@ _nc_Synchronize_Attributes(FIELD *field) } else { - formwin = Get_Form_Window(form); + WINDOW *formwin = Get_Form_Window(form); + copywin(form->w, formwin, 0, 0, field->frow, field->fcol, - field->rows - 1, field->cols - 1, 0); + field->frow + field->rows - 1, + field->fcol + field->cols - 1, 0); wsyncup(formwin); Buffer_To_Window(field, form->w); - field->status |= _NEWTOP; /* fake refresh to paint all */ + SetStatus(field, _NEWTOP); /* fake refresh to paint all */ _nc_Refresh_Current_Field(form); } } @@ -1290,7 +1333,7 @@ _nc_Synchronize_Attributes(FIELD *field) | Function : int _nc_Synchronize_Options(FIELD * field, | Field_Options newopts) | -| Description : If a fields options have changed, this routine is +| Description : If a field's options have changed, this routine is | called to propagate these changes to the screen and | to really change the behavior of the field. | @@ -1299,7 +1342,7 @@ _nc_Synchronize_Attributes(FIELD *field) | E_CURRENT - field is the current one | E_SYSTEM_ERROR - some severe basic error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) _nc_Synchronize_Options(FIELD *field, Field_Options newopts) { Field_Options oldopts; @@ -1326,34 +1369,34 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts) field->opts = oldopts; returnCode(E_CURRENT); } - if ((form->curpage == field->page)) + if (form->curpage == field->page) { - if (changed_opts & O_VISIBLE) + if ((unsigned)changed_opts & O_VISIBLE) { - if (newopts & O_VISIBLE) + if ((unsigned)newopts & O_VISIBLE) res = Display_Field(field); else res = Erase_Field(field); } else { - if ((changed_opts & O_PUBLIC) && - (newopts & O_VISIBLE)) + if (((unsigned)changed_opts & O_PUBLIC) && + ((unsigned)newopts & O_VISIBLE)) res = Display_Field(field); } } } } - if (changed_opts & O_STATIC) + if ((unsigned)changed_opts & O_STATIC) { bool single_line_field = Single_Line_Field(field); int res2 = E_OK; - if (newopts & O_STATIC) + if ((unsigned)newopts & O_STATIC) { /* the field becomes now static */ - field->status &= ~_MAY_GROW; + ClrStatus(field, _MAY_GROW); /* if actually we have no hidden columns, justification may occur again */ if (single_line_field && @@ -1371,7 +1414,7 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts) (single_line_field && (field->dcols < field->maxgrow)) || (!single_line_field && (field->drows < field->maxgrow))) { - field->status |= _MAY_GROW; + SetStatus(field, _MAY_GROW); /* a field with justification now changes its behavior, so we must redisplay it */ if (single_line_field && @@ -1389,6 +1432,57 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts) returnCode(res); } +/* + * Removes the focus from the current field of the form. + */ +void +_nc_Unset_Current_Field(FORM *form) +{ + FIELD *field = form->current; + + _nc_Refresh_Current_Field(form); + if (Field_Has_Option(field, O_PUBLIC)) + { + if (field->drows > field->rows) + { + if (form->toprow == 0) + ClrStatus(field, _NEWTOP); + else + SetStatus(field, _NEWTOP); + } + else + { + if (Justification_Allowed(field)) + { + Window_To_Buffer(form, field); + werase(form->w); + Perform_Justification(field, form->w); + if (Field_Has_Option(field, O_DYNAMIC_JUSTIFY) && + (form->w->_parent == 0)) + { + copywin(form->w, + Get_Form_Window(form), + 0, + 0, + field->frow, + field->fcol, + field->frow, + field->cols + field->fcol - 1, + 0); + wsyncup(Get_Form_Window(form)); + } + else + { + wsyncup(form->w); + } + } + } + } + delwin(form->w); + form->w = (WINDOW *)0; + form->current = 0; +} + /*--------------------------------------------------------------------------- | Facility : libnform | Function : int _nc_Set_Current_Field(FORM * form, @@ -1401,7 +1495,7 @@ _nc_Synchronize_Options(FIELD *field, Field_Options newopts) | E_SYSTEM_ERROR - some severe basic error | E_NOT_CONNECTED - no fields are connected to the form +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) _nc_Set_Current_Field(FORM *form, FIELD *newfield) { FIELD *field; @@ -1409,7 +1503,7 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield) T((T_CALLED("_nc_Set_Current_Field(%p,%p)"), (void *)form, (void *)newfield)); - if (!form || !newfield || !form->current || (newfield->form != form)) + if (!form || !newfield || (newfield->form != form)) returnCode(E_BAD_ARGUMENT); if ((form->status & _IN_DRIVER)) @@ -1423,34 +1517,10 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield) if ((field != newfield) || !(form->status & _POSTED)) { - if ((form->w) && - (field->opts & O_VISIBLE) && + if (field && (form->w) && + (Field_Has_Option(field, O_VISIBLE)) && (field->form->curpage == field->page)) - { - _nc_Refresh_Current_Field(form); - if (field->opts & O_PUBLIC) - { - if (field->drows > field->rows) - { - if (form->toprow == 0) - field->status &= ~_NEWTOP; - else - field->status |= _NEWTOP; - } - else - { - if (Justification_Allowed(field)) - { - Window_To_Buffer(form, field); - werase(form->w); - Perform_Justification(field, form->w); - wsyncup(form->w); - } - } - } - delwin(form->w); - form->w = (WINDOW *)0; - } + _nc_Unset_Current_Field(form); field = newfield; @@ -1469,7 +1539,7 @@ _nc_Set_Current_Field(FORM *form, FIELD *newfield) delwin(form->w); form->w = new_window; - form->status &= ~_WINDOW_MODIFIED; + ClrStatus(form, _WINDOW_MODIFIED); Set_Field_Window_Attributes(field, form->w); if (Has_Invisible_Parts(field)) @@ -1998,7 +2068,7 @@ Vertical_Scrolling(int (*const fct) (FORM *), FORM *form) { res = fct(form); if (res == E_OK) - form->current->status |= _NEWTOP; + SetStatus(form->current, _NEWTOP); } return (res); } @@ -2356,7 +2426,6 @@ Insert_String(FORM *form, int row, FIELD_CELL *txt, int len) int datalen = (int)(After_End_Of_Data(bp, field->dcols) - bp); int freelen = field->dcols - datalen; int requiredlen = len + 1; - FIELD_CELL *split; int result = E_REQUEST_DENIED; if (freelen >= requiredlen) @@ -2365,7 +2434,7 @@ Insert_String(FORM *form, int row, FIELD_CELL *txt, int len) myINSNSTR(form->w, txt, len); wmove(form->w, row, len); myINSNSTR(form->w, &myBLANK, 1); - return E_OK; + result = E_OK; } else { @@ -2381,6 +2450,8 @@ Insert_String(FORM *form, int row, FIELD_CELL *txt, int len) if (row < (field->drows - 1)) { + FIELD_CELL *split; + split = After_Last_Whitespace_Character(bp, (int)(Get_Start_Of_Data(bp @@ -2404,8 +2475,8 @@ Insert_String(FORM *form, int row, FIELD_CELL *txt, int len) return E_OK; } } - return (result); } + return (result); } /*--------------------------------------------------------------------------- @@ -2430,7 +2501,7 @@ Wrapping_Not_Necessary_Or_Wrapping_Ok(FORM *form) int result = E_REQUEST_DENIED; bool Last_Row = ((field->drows - 1) == form->currow); - if ((field->opts & O_WRAP) && /* wrapping wanted */ + if ((Field_Has_Option(field, O_WRAP)) && /* wrapping wanted */ (!Single_Line_Field(field)) && /* must be multi-line */ (There_Is_No_Room_For_A_Char_In_Line(form)) && /* line is full */ (!Last_Row || Growable(field))) /* there are more lines */ @@ -2513,7 +2584,7 @@ Field_Editing(int (*const fct) (FORM *), FORM *form) editable fields. */ if ((fct == FE_Delete_Previous) && - (form->opts & O_BS_OVERLOAD) && + ((unsigned)form->opts & O_BS_OVERLOAD) && First_Position_In_Current_Field(form)) { res = Inter_Field_Navigation(FN_Previous_Field, form); @@ -2522,7 +2593,7 @@ Field_Editing(int (*const fct) (FORM *), FORM *form) { if (fct == FE_New_Line) { - if ((form->opts & O_NL_OVERLOAD) && + if (((unsigned)form->opts & O_NL_OVERLOAD) && First_Position_In_Current_Field(form)) { res = Inter_Field_Navigation(FN_Next_Field, form); @@ -2534,11 +2605,11 @@ Field_Editing(int (*const fct) (FORM *), FORM *form) else { /* From now on, everything must be editable */ - if (form->current->opts & O_EDIT) + if ((unsigned)form->current->opts & O_EDIT) { res = fct(form); if (res == E_OK) - form->status |= _WINDOW_MODIFIED; + SetStatus(form, _WINDOW_MODIFIED); } } } @@ -2571,7 +2642,7 @@ FE_New_Line(FORM *form) if (Last_Row && (!(Growable(field) && !Single_Line_Field(field)))) { - if (!(form->opts & O_NL_OVERLOAD)) + if (!((unsigned)form->opts & O_NL_OVERLOAD)) returnCode(E_REQUEST_DENIED); wmove(form->w, form->currow, form->curcol); wclrtoeol(form->w); @@ -2579,7 +2650,7 @@ FE_New_Line(FORM *form) handled in the generic routine. The reason is, that FN_Next_Field may fail, but the form is definitively changed */ - form->status |= _WINDOW_MODIFIED; + SetStatus(form, _WINDOW_MODIFIED); returnCode(Inter_Field_Navigation(FN_Next_Field, form)); } else @@ -2595,7 +2666,7 @@ FE_New_Line(FORM *form) wclrtoeol(form->w); form->currow++; form->curcol = 0; - form->status |= _WINDOW_MODIFIED; + SetStatus(form, _WINDOW_MODIFIED); returnCode(E_OK); } } @@ -2605,7 +2676,7 @@ FE_New_Line(FORM *form) if (Last_Row && !(Growable(field) && !Single_Line_Field(field))) { - if (!(form->opts & O_NL_OVERLOAD)) + if (!((unsigned)form->opts & O_NL_OVERLOAD)) returnCode(E_REQUEST_DENIED); returnCode(Inter_Field_Navigation(FN_Next_Field, form)); } @@ -2627,7 +2698,7 @@ FE_New_Line(FORM *form) wmove(form->w, form->currow, form->curcol); winsertln(form->w); myADDNSTR(form->w, bp, (int)(t - bp)); - form->status |= _WINDOW_MODIFIED; + SetStatus(form, _WINDOW_MODIFIED); returnCode(E_OK); } } @@ -2926,7 +2997,7 @@ static int EM_Overlay_Mode(FORM *form) { T((T_CALLED("EM_Overlay_Mode(%p)"), (void *)form)); - form->status |= _OVLMODE; + SetStatus(form, _OVLMODE); returnCode(E_OK); } @@ -2942,7 +3013,7 @@ static int EM_Insert_Mode(FORM *form) { T((T_CALLED("EM_Insert_Mode(%p)"), (void *)form)); - form->status &= ~_OVLMODE; + ClrStatus(form, _OVLMODE); returnCode(E_OK); } @@ -3111,7 +3182,7 @@ Check_Field(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp) { if (typ) { - if (field->opts & O_NULLOK) + if (Field_Has_Option(field, O_NULLOK)) { FIELD_CELL *bp = field->buf; @@ -3159,7 +3230,7 @@ Check_Field(FORM *form, FIELDTYPE *typ, FIELD *field, TypeArgument *argp) | Return Values : TRUE - field is valid | FALSE - field is invalid +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) +FORM_EXPORT(bool) _nc_Internal_Validation(FORM *form) { FIELD *field; @@ -3168,12 +3239,12 @@ _nc_Internal_Validation(FORM *form) Synchronize_Buffer(form); if ((form->status & _FCHECK_REQUIRED) || - (!(field->opts & O_PASSOK))) + (!(Field_Has_Option(field, O_PASSOK)))) { if (!Check_Field(form, field->type, field, (TypeArgument *)(field->arg))) return FALSE; - form->status &= ~_FCHECK_REQUIRED; - field->status |= _CHANGED; + ClrStatus(form, _FCHECK_REQUIRED); + SetStatus(field, _CHANGED); Synchronize_Linked_Fields(field); } return TRUE; @@ -3218,7 +3289,7 @@ FV_Validation(FORM *form) | | Description : Get the next field after the given field on the current | page. The order of fields is the one defined by the -| fields array. Only visible and active fields are +| field's array. Only visible and active fields are | counted. | | Return Values : Pointer to the next field. @@ -3253,7 +3324,7 @@ Next_Field_On_Page(FIELD *field) | | Return Values : Pointer to calculated field. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELD *) +FORM_EXPORT(FIELD *) _nc_First_Active_Field(FORM *form) { FIELD **last_on_page = &form->field[form->page[form->curpage].pmax]; @@ -3273,14 +3344,15 @@ _nc_First_Active_Field(FORM *form) do { field = (field == last_on_page) ? first : field + 1; - if (((*field)->opts & O_VISIBLE)) + if (Field_Has_Option(*field, O_VISIBLE)) break; } while (proposed != (*field)); proposed = *field; - if ((proposed == *last_on_page) && !(proposed->opts & O_VISIBLE)) + if ((proposed == *last_on_page) && + !((unsigned)proposed->opts & O_VISIBLE)) { /* This means, there is also no visible field on the page. So we propose the first one and hope the very best... @@ -3300,7 +3372,7 @@ _nc_First_Active_Field(FORM *form) | | Description : Get the previous field before the given field on the | current page. The order of fields is the one defined by -| the fields array. Only visible and active fields are +| the field's array. Only visible and active fields are | counted. | | Return Values : Pointer to the previous field. @@ -3434,10 +3506,10 @@ Right_Neighbor_Field(FIELD *field) | Function : static FIELD *Upper_Neighbor_Field(FIELD * field) | | Description : Because of the row-major nature of sorting the fields, -| it is more difficult to define whats the upper neighbor +| it is more difficult to define what the upper neighbor | field really means. We define that it must be on a | 'previous' line (cyclic order!) and is the rightmost -| field laying on the left side of the given field. If +| field lying on the left side of the given field. If | this set is empty, we take the first field on the line. | | Return Values : Pointer to the upper neighbor field. @@ -3484,7 +3556,7 @@ Upper_Neighbor_Field(FIELD *field) | Function : static FIELD *Down_Neighbor_Field(FIELD * field) | | Description : Because of the row-major nature of sorting the fields, -| its more difficult to define whats the down neighbor +| it is more difficult to define what the down neighbor | field really means. We define that it must be on a | 'next' line (cyclic order!) and is the leftmost | field laying on the right side of the given field. If @@ -3806,7 +3878,7 @@ FN_Down_Field(FORM *form) | E_BAD_ARGUMENT - invalid field pointer | E_SYSTEM_ERROR - some severe basic error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) _nc_Set_Form_Page(FORM *form, int page, FIELD *field) { int res = E_OK; @@ -3816,11 +3888,11 @@ _nc_Set_Form_Page(FORM *form, int page, FIELD *field) FIELD *last_field, *field_on_page; werase(Get_Form_Window(form)); - form->curpage = page; + form->curpage = (short)page; last_field = field_on_page = form->field[form->page[page].smin]; do { - if (field_on_page->opts & O_VISIBLE) + if ((unsigned)field_on_page->opts & O_VISIBLE) if ((res = Display_Field(field_on_page)) != E_OK) return (res); field_on_page = field_on_page->snext; @@ -3885,7 +3957,7 @@ Previous_Page_Number(const FORM *form) | that the field is left and a new field is entered. | So the field must be validated and the field init/term | hooks must be called. Because also the page is changed, -| the forms init/term hooks must be called also. +| the form's init/term hooks must be called also. | | Return Values : E_OK - success | E_INVALID_FIELD - field is invalid @@ -3981,6 +4053,94 @@ PN_Last_Page(FORM *form) Helper routines for the core form driver. --------------------------------------------------------------------------*/ +# if USE_WIDEC_SUPPORT +/*--------------------------------------------------------------------------- +| Facility : libnform +| Function : static int Data_Entry_w(FORM * form, wchar_t c) +| +| Description : Enter the wide character c into at the current +| position of the current field of the form. +| +| Return Values : E_OK - success +| E_REQUEST_DENIED - driver could not process the request +| E_SYSTEM_ERROR - ++--------------------------------------------------------------------------*/ +static int +Data_Entry_w(FORM *form, wchar_t c) +{ + FIELD *field = form->current; + int result = E_REQUEST_DENIED; + + T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c))); + if ((Field_Has_Option(field, O_EDIT)) +#if FIX_FORM_INACTIVE_BUG + && (Field_Has_Option(field, O_ACTIVE)) +#endif + ) + { + wchar_t given[2]; + cchar_t temp_ch; + + given[0] = c; + given[1] = 0; + setcchar(&temp_ch, given, 0, 0, (void *)0); + if ((Field_Has_Option(field, O_BLANK)) && + First_Position_In_Current_Field(form) && + !(form->status & _FCHECK_REQUIRED) && + !(form->status & _WINDOW_MODIFIED)) + werase(form->w); + + if (form->status & _OVLMODE) + { + wadd_wch(form->w, &temp_ch); + } + else + /* no _OVLMODE */ + { + bool There_Is_Room = Is_There_Room_For_A_Char_In_Line(form); + + if (!(There_Is_Room || + ((Single_Line_Field(field) && Growable(field))))) + RETURN(E_REQUEST_DENIED); + + if (!There_Is_Room && !Field_Grown(field, 1)) + RETURN(E_SYSTEM_ERROR); + + wins_wch(form->w, &temp_ch); + } + + if ((result = Wrapping_Not_Necessary_Or_Wrapping_Ok(form)) == E_OK) + { + bool End_Of_Field = (((field->drows - 1) == form->currow) && + ((field->dcols - 1) == form->curcol)); + + form->status |= _WINDOW_MODIFIED; + if (End_Of_Field && !Growable(field) && (Field_Has_Option(field, O_AUTOSKIP))) + result = Inter_Field_Navigation(FN_Next_Field, form); + else + { + if (End_Of_Field && Growable(field) && !Field_Grown(field, 1)) + result = E_SYSTEM_ERROR; + else + { + /* + * We have just added a byte to the form field. It may have + * been part of a multibyte character. If it was, the + * addch_used field is nonzero and we should not try to move + * to a new column. + */ + if (WINDOW_EXT(form->w, addch_used) == 0) + IFN_Next_Character(form); + + result = E_OK; + } + } + } + } + RETURN(result); +} +# endif + /*--------------------------------------------------------------------------- | Facility : libnform | Function : static int Data_Entry(FORM * form,int c) @@ -3999,13 +4159,13 @@ Data_Entry(FORM *form, int c) int result = E_REQUEST_DENIED; T((T_CALLED("Data_Entry(%p,%s)"), (void *)form, _tracechtype((chtype)c))); - if ((field->opts & O_EDIT) + if ((Field_Has_Option(field, O_EDIT)) #if FIX_FORM_INACTIVE_BUG - && (field->opts & O_ACTIVE) + && (Field_Has_Option(field, O_ACTIVE)) #endif ) { - if ((field->opts & O_BLANK) && + if ((Field_Has_Option(field, O_BLANK)) && First_Position_In_Current_Field(form) && !(form->status & _FCHECK_REQUIRED) && !(form->status & _WINDOW_MODIFIED)) @@ -4035,8 +4195,14 @@ Data_Entry(FORM *form, int c) bool End_Of_Field = (((field->drows - 1) == form->currow) && ((field->dcols - 1) == form->curcol)); - form->status |= _WINDOW_MODIFIED; - if (End_Of_Field && !Growable(field) && (field->opts & O_AUTOSKIP)) + if (Field_Has_Option(field, O_EDGE_INSERT_STAY)) + move_after_insert = !!(form->curcol + - form->begincol + - field->cols + + 1); + + SetStatus(form, _WINDOW_MODIFIED); + if (End_Of_Field && !Growable(field) && (Field_Has_Option(field, O_AUTOSKIP))) result = Inter_Field_Navigation(FN_Next_Field, form); else { @@ -4193,18 +4359,20 @@ static const Binding_Info bindings[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1] = | E_NOT_CONNECTED - no fields are connected to the form | E_UNKNOWN_COMMAND - command not known +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) form_driver(FORM *form, int c) { - const Binding_Info *BI = (Binding_Info *) 0; + const Binding_Info *BI = (Binding_Info *)0; int res = E_UNKNOWN_COMMAND; + move_after_insert = TRUE; + T((T_CALLED("form_driver(%p,%d)"), (void *)form, c)); if (!form) RETURN(E_BAD_ARGUMENT); - if (!(form->field)) + if (!(form->field) || !(form->current)) RETURN(E_NOT_CONNECTED); assert(form->page); @@ -4228,7 +4396,10 @@ form_driver(FORM *form, int c) if ((c >= MIN_FORM_COMMAND && c <= MAX_FORM_COMMAND) && ((bindings[c - MIN_FORM_COMMAND].keycode & Key_Mask) == c)) - BI = &(bindings[c - MIN_FORM_COMMAND]); + { + TR(TRACE_CALLS, ("form_request %s", form_request_name(c))); + BI = &(bindings[c - MIN_FORM_COMMAND]); + } if (BI) { @@ -4246,7 +4417,7 @@ form_driver(FORM *form, int c) NULL /* Choice Request is generic */ }; size_t nMethods = (sizeof(Generic_Methods) / sizeof(Generic_Methods[0])); - size_t method = (BI->keycode >> ID_Shft) & 0xffff; /* see ID_Mask */ + size_t method = (size_t)((BI->keycode >> ID_Shft) & 0xffff); /* see ID_Mask */ if ((method >= nMethods) || !(BI->cmd)) res = E_SYSTEM_ERROR; @@ -4255,9 +4426,13 @@ form_driver(FORM *form, int c) Generic_Method fct = Generic_Methods[method]; if (fct) - res = fct(BI->cmd, form); + { + res = fct(BI->cmd, form); + } else - res = (BI->cmd) (form); + { + res = (BI->cmd) (form); + } } } #ifdef NCURSES_MOUSE_VERSION @@ -4304,14 +4479,13 @@ form_driver(FORM *form, int c) } else if (wenclose(sub, event.y, event.x)) { /* Inside the area we try to find the hit item */ - int i; - ry = event.y; rx = event.x; if (wmouse_trafo(sub, &ry, &rx, FALSE)) { int min_field = form->page[form->curpage].pmin; int max_field = form->page[form->curpage].pmax; + int i; for (i = min_field; i <= max_field; ++i) { @@ -4360,6 +4534,194 @@ form_driver(FORM *form, int c) RETURN(res); } +# if USE_WIDEC_SUPPORT +/*--------------------------------------------------------------------------- +| Facility : libnform +| Function : int form_driver_w(FORM * form,int type,wchar_t c) +| +| Description : This is the workhorse of the forms system. +| +| Input is either a key code (request) or a wide char +| returned by e.g. get_wch (). The type must be passed +| as well,so that we are able to determine whether the char +| is a multibyte char or a request. + +| If it is a request, the form driver executes +| the request and returns the result. If it is data +| (printable character), it enters the data into the +| current position in the current field. If it is not +| recognized, the form driver assumes it is an application +| defined command and returns E_UNKNOWN_COMMAND. +| Application defined command should be defined relative +| to MAX_FORM_COMMAND, the maximum value of a request. +| +| Return Values : E_OK - success +| E_SYSTEM_ERROR - system error +| E_BAD_ARGUMENT - an argument is incorrect +| E_NOT_POSTED - form is not posted +| E_INVALID_FIELD - field contents are invalid +| E_BAD_STATE - called from inside a hook routine +| E_REQUEST_DENIED - request failed +| E_NOT_CONNECTED - no fields are connected to the form +| E_UNKNOWN_COMMAND - command not known ++--------------------------------------------------------------------------*/ +FORM_EXPORT(int) +form_driver_w(FORM *form, int type, wchar_t c) +{ + const Binding_Info *BI = (Binding_Info *)0; + int res = E_UNKNOWN_COMMAND; + + T((T_CALLED("form_driver(%p,%d)"), (void *)form, (int)c)); + + if (!form) + RETURN(E_BAD_ARGUMENT); + + if (!(form->field)) + RETURN(E_NOT_CONNECTED); + + assert(form->page); + + if (c == (wchar_t)FIRST_ACTIVE_MAGIC) + { + form->current = _nc_First_Active_Field(form); + RETURN(E_OK); + } + + assert(form->current && + form->current->buf && + (form->current->form == form) + ); + + if (form->status & _IN_DRIVER) + RETURN(E_BAD_STATE); + + if (!(form->status & _POSTED)) + RETURN(E_NOT_POSTED); + + /* check if this is a keycode or a (wide) char */ + if (type == KEY_CODE_YES) + { + if ((c >= MIN_FORM_COMMAND && c <= MAX_FORM_COMMAND) && + ((bindings[c - MIN_FORM_COMMAND].keycode & Key_Mask) == c)) + BI = &(bindings[c - MIN_FORM_COMMAND]); + } + + if (BI) + { + typedef int (*Generic_Method) (int (*const) (FORM *), FORM *); + static const Generic_Method Generic_Methods[] = + { + Page_Navigation, /* overloaded to call field&form hooks */ + Inter_Field_Navigation, /* overloaded to call field hooks */ + NULL, /* Intra-Field is generic */ + Vertical_Scrolling, /* Overloaded to check multi-line */ + Horizontal_Scrolling, /* Overloaded to check single-line */ + Field_Editing, /* Overloaded to mark modification */ + NULL, /* Edit Mode is generic */ + NULL, /* Field Validation is generic */ + NULL /* Choice Request is generic */ + }; + size_t nMethods = (sizeof(Generic_Methods) / sizeof(Generic_Methods[0])); + size_t method = (size_t)(BI->keycode >> ID_Shft) & 0xffff; /* see ID_Mask */ + + if ((method >= nMethods) || !(BI->cmd)) + res = E_SYSTEM_ERROR; + else + { + Generic_Method fct = Generic_Methods[method]; + + if (fct) + res = fct(BI->cmd, form); + else + res = (BI->cmd) (form); + } + } +#ifdef NCURSES_MOUSE_VERSION + else if (KEY_MOUSE == c) + { + MEVENT event; + WINDOW *win = form->win ? form->win : StdScreen(Get_Form_Screen(form)); + WINDOW *sub = form->sub ? form->sub : win; + + getmouse(&event); + if ((event.bstate & (BUTTON1_CLICKED | + BUTTON1_DOUBLE_CLICKED | + BUTTON1_TRIPLE_CLICKED)) + && wenclose(win, event.y, event.x)) + { /* we react only if the click was in the userwin, that means + * inside the form display area or at the decoration window. + */ + int ry = event.y, rx = event.x; /* screen coordinates */ + + res = E_REQUEST_DENIED; + if (mouse_trafo(&ry, &rx, FALSE)) + { /* rx, ry are now "curses" coordinates */ + if (ry < sub->_begy) + { /* we clicked above the display region; this is + * interpreted as "scroll up" request + */ + if (event.bstate & BUTTON1_CLICKED) + res = form_driver(form, REQ_PREV_FIELD); + else if (event.bstate & BUTTON1_DOUBLE_CLICKED) + res = form_driver(form, REQ_PREV_PAGE); + else if (event.bstate & BUTTON1_TRIPLE_CLICKED) + res = form_driver(form, REQ_FIRST_FIELD); + } + else if (ry > sub->_begy + sub->_maxy) + { /* we clicked below the display region; this is + * interpreted as "scroll down" request + */ + if (event.bstate & BUTTON1_CLICKED) + res = form_driver(form, REQ_NEXT_FIELD); + else if (event.bstate & BUTTON1_DOUBLE_CLICKED) + res = form_driver(form, REQ_NEXT_PAGE); + else if (event.bstate & BUTTON1_TRIPLE_CLICKED) + res = form_driver(form, REQ_LAST_FIELD); + } + else if (wenclose(sub, event.y, event.x)) + { /* Inside the area we try to find the hit item */ + ry = event.y; + rx = event.x; + if (wmouse_trafo(sub, &ry, &rx, FALSE)) + { + int min_field = form->page[form->curpage].pmin; + int max_field = form->page[form->curpage].pmax; + int i; + + for (i = min_field; i <= max_field; ++i) + { + FIELD *field = form->field[i]; + + if (Field_Is_Selectable(field) + && Field_encloses(field, ry, rx) == E_OK) + { + res = _nc_Set_Current_Field(form, field); + if (res == E_OK) + res = _nc_Position_Form_Cursor(form); + if (res == E_OK + && (event.bstate & BUTTON1_DOUBLE_CLICKED)) + res = E_UNKNOWN_COMMAND; + break; + } + } + } + } + } + } + else + res = E_REQUEST_DENIED; + } +#endif /* NCURSES_MOUSE_VERSION */ + else if (type == OK) + { + res = Data_Entry_w(form, c); + } + + _nc_Refresh_Current_Field(form); + RETURN(res); +} +# endif /* USE_WIDEC_SUPPORT */ + /*---------------------------------------------------------------------------- Field-Buffer manipulation routines. The effects of setting a buffer are tightly coupled to the core of the form @@ -4377,20 +4739,20 @@ form_driver(FORM *form, int c) | For dynamic fields this may grow the fieldbuffers if | the length of the value exceeds the current buffer | length. For buffer 0 only printable values are allowed. -| For static fields, the value needs not to be zero ter- -| minated. It is copied up to the length of the buffer. +| For static fields, the value must not be zero terminated. +| It is copied up to the length of the buffer. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid argument | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_field_buffer(FIELD *field, int buffer, const char *value) { FIELD_CELL *p; int res = E_OK; - unsigned int i; - unsigned int len; + int i; + int len; #if USE_WIDEC_SUPPORT FIELD_CELL *widevalue = 0; @@ -4408,7 +4770,7 @@ set_field_buffer(FIELD *field, int buffer, const char *value) /* for a growable field we must assume zero terminated strings, because somehow we have to detect the length of what should be copied. */ - unsigned int vlen = strlen(value); + int vlen = (int)strlen(value); if (vlen > len) { @@ -4448,10 +4810,10 @@ set_field_buffer(FIELD *field, int buffer, const char *value) } else { - for (i = 0; i < (unsigned)field->drows; ++i) + for (i = 0; i < field->drows; ++i) { - (void)mvwin_wchnstr(field->working, 0, i * field->dcols, - widevalue + (i * field->dcols), + (void)mvwin_wchnstr(field->working, 0, (int)i * field->dcols, + widevalue + ((int)i * field->dcols), field->dcols); } for (i = 0; i < len; ++i) @@ -4501,7 +4863,7 @@ set_field_buffer(FIELD *field, int buffer, const char *value) | | Return Values : Pointer to buffer or NULL if arguments were invalid. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(char *) +FORM_EXPORT(char *) field_buffer(const FIELD *field, int buffer) { char *result = 0; @@ -4512,7 +4874,7 @@ field_buffer(const FIELD *field, int buffer) { #if USE_WIDEC_SUPPORT FIELD_CELL *data = Address_Of_Nth_Buffer(field, buffer); - unsigned need = 0; + size_t need = 0; int size = Buffer_Length(field); int n; @@ -4526,7 +4888,7 @@ field_buffer(const FIELD *field, int buffer) init_mb(state); next = _nc_wcrtomb(0, data[n].chars[0], &state); - if (!isEILSEQ(next)) + if (next > 0) need += next; } } @@ -4569,7 +4931,7 @@ field_buffer(const FIELD *field, int buffer) | Convert a multibyte string to a wide-character string. The result must be | freed by the caller. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(wchar_t *) +FORM_EXPORT(wchar_t *) _nc_Widen_String(char *source, int *lengthp) { wchar_t *result = 0; @@ -4613,14 +4975,14 @@ _nc_Widen_String(char *source, int *lengthp) { result[need] = wch; } - passed += status; + passed += (size_t)status; ++need; } else { if (pass) { - result[need] = source[passed]; + result[need] = (wchar_t)source[passed]; } ++need; ++passed; @@ -4633,7 +4995,7 @@ _nc_Widen_String(char *source, int *lengthp) break; result = typeCalloc(wchar_t, need); - *lengthp = need; + *lengthp = (int)need; if (result == 0) break; } diff --git a/deps/ncurses-5.9/form/frm_hook.c b/deps/ncurses-6.3/form/frm_hook.c similarity index 93% rename from deps/ncurses-5.9/form/frm_hook.c rename to deps/ncurses-6.3/form/frm_hook.c index 7daa396..39d4d22 100644 --- a/deps/ncurses-5.9/form/frm_hook.c +++ b/deps/ncurses-6.3/form/frm_hook.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -32,20 +33,21 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_hook.c,v 1.15 2010/01/23 21:12:08 tom Exp $") +MODULE_ID("$Id: frm_hook.c,v 1.20 2020/05/24 01:40:20 anonymous.maarten Exp $") /* "Template" macro to generate function to set application specific hook */ #define GEN_HOOK_SET_FUNCTION( typ, name ) \ -NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (FORM *form, Form_Hook func)\ +FORM_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (FORM *form, Form_Hook func)\ {\ - T((T_CALLED("set_" #typ"_"#name"(%p,%p)"), form, func));\ + TR_FUNC_BFR(1); \ + T((T_CALLED("set_" #typ"_"#name"(%p,%s)"), (void *) form, TR_FUNC_ARG(0, func)));\ (Normalize_Form( form ) -> typ ## name) = func ;\ RETURN(E_OK);\ } /* "Template" macro to generate function to get application specific hook */ #define GEN_HOOK_GET_FUNCTION( typ, name ) \ -NCURSES_IMPEXP Form_Hook NCURSES_API typ ## _ ## name ( const FORM *form )\ +FORM_IMPEXP Form_Hook NCURSES_API typ ## _ ## name ( const FORM *form )\ {\ T((T_CALLED(#typ "_" #name "(%p)"), (const void *) form));\ returnFormHook( Normalize_Form( form ) -> typ ## name );\ diff --git a/deps/ncurses-5.9/form/frm_opts.c b/deps/ncurses-6.3/form/frm_opts.c similarity index 84% rename from deps/ncurses-5.9/form/frm_opts.c rename to deps/ncurses-6.3/form/frm_opts.c index 3557fcd..62e2beb 100644 --- a/deps/ncurses-5.9/form/frm_opts.c +++ b/deps/ncurses-6.3/form/frm_opts.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2013 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 * @@ -32,25 +33,25 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_opts.c,v 1.15 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_opts.c,v 1.21 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_form_opts(FORM *form, Form_Options opts) -| +| | Description : Turns on the named options and turns off all the | remaining options for that form. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_form_opts(FORM *form, Form_Options opts) { T((T_CALLED("set_form_opts(%p,%d)"), (void *)form, opts)); - opts &= ALL_FORM_OPTS; - if (opts & ~ALL_FORM_OPTS) + opts &= (Form_Options)ALL_FORM_OPTS; + if ((unsigned)opts & ~ALL_FORM_OPTS) RETURN(E_BAD_ARGUMENT); else { @@ -60,37 +61,37 @@ set_form_opts(FORM *form, Form_Options opts) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : Form_Options form_opts(const FORM *) -| +| | Description : Retrieves the current form options. | | Return Values : The option flags. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(Form_Options) +FORM_EXPORT(Form_Options) form_opts(const FORM *form) { T((T_CALLED("form_opts(%p)"), (const void *)form)); - returnCode((int)(Normalize_Form(form)->opts & ALL_FORM_OPTS)); + returnCode((Form_Options)((unsigned)Normalize_Form(form)->opts & ALL_FORM_OPTS)); } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int form_opts_on(FORM *form, Form_Options opts) -| -| Description : Turns on the named options; no other options are +| +| Description : Turns on the named options; no other options are | changed. | -| Return Values : E_OK - success +| Return Values : E_OK - success | E_BAD_ARGUMENT - invalid options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) form_opts_on(FORM *form, Form_Options opts) { T((T_CALLED("form_opts_on(%p,%d)"), (void *)form, opts)); - opts &= ALL_FORM_OPTS; - if (opts & ~ALL_FORM_OPTS) + opts &= (Form_Options)ALL_FORM_OPTS; + if ((unsigned)opts & ~ALL_FORM_OPTS) RETURN(E_BAD_ARGUMENT); else { @@ -100,22 +101,22 @@ form_opts_on(FORM *form, Form_Options opts) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int form_opts_off(FORM *form, Form_Options opts) -| -| Description : Turns off the named options; no other options are +| +| Description : Turns off the named options; no other options are | changed. | -| Return Values : E_OK - success +| Return Values : E_OK - success | E_BAD_ARGUMENT - invalid options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) form_opts_off(FORM *form, Form_Options opts) { T((T_CALLED("form_opts_off(%p,%d)"), (void *)form, opts)); - opts &= ALL_FORM_OPTS; - if (opts & ~ALL_FORM_OPTS) + opts &= (Form_Options)ALL_FORM_OPTS; + if ((unsigned)opts & ~ALL_FORM_OPTS) RETURN(E_BAD_ARGUMENT); else { diff --git a/deps/ncurses-5.9/form/frm_page.c b/deps/ncurses-6.3/form/frm_page.c similarity index 92% rename from deps/ncurses-5.9/form/frm_page.c rename to deps/ncurses-6.3/form/frm_page.c index 5a76ca9..ee8dd38 100644 --- a/deps/ncurses-5.9/form/frm_page.c +++ b/deps/ncurses-6.3/form/frm_page.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,12 +33,12 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_page.c,v 1.11 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_page.c,v 1.15 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_form_page(FORM * form,int page) -| +| | Description : Set the page number of the form. | | Return Values : E_OK - success @@ -46,7 +47,7 @@ MODULE_ID("$Id: frm_page.c,v 1.11 2010/01/23 21:14:36 tom Exp $") | E_INVALID_FIELD - current field can't be left | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_form_page(FORM *form, int page) { int err = E_OK; @@ -58,7 +59,7 @@ set_form_page(FORM *form, int page) if (!(form->status & _POSTED)) { - form->curpage = page; + form->curpage = (short)page; form->current = _nc_First_Active_Field(form); } else @@ -87,15 +88,15 @@ set_form_page(FORM *form, int page) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int form_page(const FORM * form) -| +| | Description : Return the current page of the form. | | Return Values : >= 0 : current page number | -1 : invalid form pointer +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) form_page(const FORM *form) { T((T_CALLED("form_page(%p)"), (const void *)form)); diff --git a/deps/ncurses-5.9/form/frm_post.c b/deps/ncurses-6.3/form/frm_post.c similarity index 91% rename from deps/ncurses-5.9/form/frm_post.c rename to deps/ncurses-6.3/form/frm_post.c index 8e29aff..ab88089 100644 --- a/deps/ncurses-5.9/form/frm_post.c +++ b/deps/ncurses-6.3/form/frm_post.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -32,12 +33,12 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_post.c,v 1.10 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_post.c,v 1.14 2020/05/24 01:40:20 anonymous.maarten Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int post_form(FORM * form) -| +| | Description : Writes the form into its associated subwindow. | | Return Values : E_OK - success @@ -47,7 +48,7 @@ MODULE_ID("$Id: frm_post.c,v 1.10 2010/01/23 21:14:36 tom Exp $") | E_NO_ROOM - form doesn't fit into subwindow | E_SYSTEM_ERROR - system error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) post_form(FORM *form) { WINDOW *formwin; @@ -69,7 +70,7 @@ post_form(FORM *form) if ((form->cols > getmaxx(formwin)) || (form->rows > getmaxy(formwin))) RETURN(E_NO_ROOM); - /* reset form->curpage to an invald value. This forces Set_Form_Page + /* reset form->curpage to an invalid value. This forces Set_Form_Page to do the page initialization which is required by post_form. */ page = form->curpage; @@ -77,7 +78,7 @@ post_form(FORM *form) if ((err = _nc_Set_Form_Page(form, page, form->current)) != E_OK) RETURN(err); - form->status |= _POSTED; + SetStatus(form, _POSTED); Call_Hook(form, forminit); Call_Hook(form, fieldinit); @@ -87,9 +88,9 @@ post_form(FORM *form) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int unpost_form(FORM * form) -| +| | Description : Erase form from its associated subwindow. | | Return Values : E_OK - success @@ -97,7 +98,7 @@ post_form(FORM *form) | E_NOT_POSTED - form isn't posted | E_BAD_STATE - called from a hook routine +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) unpost_form(FORM *form) { T((T_CALLED("unpost_form(%p)"), (void *)form)); @@ -117,7 +118,7 @@ unpost_form(FORM *form) werase(Get_Form_Window(form)); delwin(form->w); form->w = (WINDOW *)0; - form->status &= ~_POSTED; + ClrStatus(form, _POSTED); RETURN(E_OK); } diff --git a/deps/ncurses-6.3/form/frm_req_name.c b/deps/ncurses-6.3/form/frm_req_name.c new file mode 100644 index 0000000..8b76a8e --- /dev/null +++ b/deps/ncurses-6.3/form/frm_req_name.c @@ -0,0 +1,179 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2015 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, 1995,1997 * + ****************************************************************************/ + +/*************************************************************************** +* Module form_request_name * +* Routines to handle external names of menu requests * +***************************************************************************/ + +#include "form.priv.h" + +MODULE_ID("$Id: frm_req_name.c,v 1.23 2021/06/17 21:11:08 tom Exp $") + +#define DATA(s) { s } + +static const char request_names[MAX_FORM_COMMAND - MIN_FORM_COMMAND + 1][13] = +{ + DATA("NEXT_PAGE"), + DATA("PREV_PAGE"), + DATA("FIRST_PAGE"), + DATA("LAST_PAGE"), + + DATA("NEXT_FIELD"), + DATA("PREV_FIELD"), + DATA("FIRST_FIELD"), + DATA("LAST_FIELD"), + DATA("SNEXT_FIELD"), + DATA("SPREV_FIELD"), + DATA("SFIRST_FIELD"), + DATA("SLAST_FIELD"), + DATA("LEFT_FIELD"), + DATA("RIGHT_FIELD"), + DATA("UP_FIELD"), + DATA("DOWN_FIELD"), + + DATA("NEXT_CHAR"), + DATA("PREV_CHAR"), + DATA("NEXT_LINE"), + DATA("PREV_LINE"), + DATA("NEXT_WORD"), + DATA("PREV_WORD"), + DATA("BEG_FIELD"), + DATA("END_FIELD"), + DATA("BEG_LINE"), + DATA("END_LINE"), + DATA("LEFT_CHAR"), + DATA("RIGHT_CHAR"), + DATA("UP_CHAR"), + DATA("DOWN_CHAR"), + + DATA("NEW_LINE"), + DATA("INS_CHAR"), + DATA("INS_LINE"), + DATA("DEL_CHAR"), + DATA("DEL_PREV"), + DATA("DEL_LINE"), + DATA("DEL_WORD"), + DATA("CLR_EOL"), + DATA("CLR_EOF"), + DATA("CLR_FIELD"), + DATA("OVL_MODE"), + DATA("INS_MODE"), + DATA("SCR_FLINE"), + DATA("SCR_BLINE"), + DATA("SCR_FPAGE"), + DATA("SCR_BPAGE"), + DATA("SCR_FHPAGE"), + DATA("SCR_BHPAGE"), + DATA("SCR_FCHAR"), + DATA("SCR_BCHAR"), + DATA("SCR_HFLINE"), + DATA("SCR_HBLINE"), + DATA("SCR_HFHALF"), + DATA("SCR_HBHALF"), + + DATA("VALIDATION"), + DATA("NEXT_CHOICE"), + DATA("PREV_CHOICE") +}; + +#undef DATA + +#define A_SIZE (sizeof(request_names)/sizeof(request_names[0])) + +/*--------------------------------------------------------------------------- +| Facility : libnform +| Function : const char * form_request_name (int request); +| +| Description : Get the external name of a form request. +| +| Return Values : Pointer to name - on success +| NULL - on invalid request code ++--------------------------------------------------------------------------*/ +FORM_EXPORT(const char *) +form_request_name(int request) +{ + T((T_CALLED("form_request_name(%d)"), request)); + + if ((request < MIN_FORM_COMMAND) || (request > MAX_FORM_COMMAND)) + { + SET_ERROR(E_BAD_ARGUMENT); + returnCPtr((const char *)0); + } + else + returnCPtr(request_names[request - MIN_FORM_COMMAND]); +} + +/*--------------------------------------------------------------------------- +| Facility : libnform +| Function : int form_request_by_name (const char *str); +| +| Description : Search for a request with this name. +| +| Return Values : Request Id - on success +| E_NO_MATCH - request not found ++--------------------------------------------------------------------------*/ +FORM_EXPORT(int) +form_request_by_name(const char *str) +{ + /* because the table is so small, it doesn't really hurt + to run sequentially through it. + */ + size_t i = 0; + + T((T_CALLED("form_request_by_name(%s)"), _nc_visbuf(str))); + + if (str != 0 && (i = strlen(str)) != 0) + { + char buf[16]; /* longest name is 10 chars */ + + if (i > sizeof(buf) - 2) + i = sizeof(buf) - 2; + memcpy(buf, str, i); + buf[i] = '\0'; + + for (i = 0; buf[i] != '\0'; ++i) + { + buf[i] = (char)toupper(UChar(buf[i])); + } + + for (i = 0; i < A_SIZE; i++) + { + if (strcmp(request_names[i], buf) == 0) + returnCode(MIN_FORM_COMMAND + (int)i); + } + } + RETURN(E_NO_MATCH); +} + +/* frm_req_name.c ends here */ diff --git a/deps/ncurses-5.9/form/frm_scale.c b/deps/ncurses-6.3/form/frm_scale.c similarity index 92% rename from deps/ncurses-5.9/form/frm_scale.c rename to deps/ncurses-6.3/form/frm_scale.c index 27e154e..d53798e 100644 --- a/deps/ncurses-5.9/form/frm_scale.c +++ b/deps/ncurses-6.3/form/frm_scale.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,19 +33,19 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_scale.c,v 1.10 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_scale.c,v 1.13 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int scale_form( const FORM *form, int *rows, int *cols ) -| +| | Description : Retrieve size of form | | Return Values : E_OK - no error | E_BAD_ARGUMENT - invalid form pointer | E_NOT_CONNECTED - no fields connected to form +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) scale_form(const FORM *form, int *rows, int *cols) { T((T_CALLED("scale_form(%p,%p,%p)"), diff --git a/deps/ncurses-5.9/form/frm_sub.c b/deps/ncurses-6.3/form/frm_sub.c similarity index 90% rename from deps/ncurses-5.9/form/frm_sub.c rename to deps/ncurses-6.3/form/frm_sub.c index 1ab131a..8f1de09 100644 --- a/deps/ncurses-5.9/form/frm_sub.c +++ b/deps/ncurses-6.3/form/frm_sub.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -32,18 +33,18 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_sub.c,v 1.12 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_sub.c,v 1.15 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_form_sub(FORM *form, WINDOW *win) -| -| Description : Set the subwindow of the form to win. +| +| Description : Set the subwindow of the form to win. | | Return Values : E_OK - success | E_POSTED - form is posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_form_sub(FORM *form, WINDOW *win) { T((T_CALLED("set_form_sub(%p,%p)"), (void *)form, (void *)win)); @@ -65,14 +66,14 @@ set_form_sub(FORM *form, WINDOW *win) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : WINDOW *form_sub(const FORM *) -| +| | Description : Retrieve the window of the form. | | Return Values : The pointer to the Subwindow. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) +FORM_EXPORT(WINDOW *) form_sub(const FORM *form) { const FORM *f; diff --git a/deps/ncurses-5.9/form/frm_user.c b/deps/ncurses-6.3/form/frm_user.c similarity index 88% rename from deps/ncurses-5.9/form/frm_user.c rename to deps/ncurses-6.3/form/frm_user.c index 1375b5e..a4a2249 100644 --- a/deps/ncurses-5.9/form/frm_user.c +++ b/deps/ncurses-6.3/form/frm_user.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -32,18 +33,18 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_user.c,v 1.15 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_user.c,v 1.19 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_form_userptr(FORM *form, void *usrptr) -| +| | Description : Set the pointer that is reserved in any form to store -| application relevant informations +| application relevant information. | | Return Values : E_OK - on success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_form_userptr(FORM *form, void *usrptr) { T((T_CALLED("set_form_userptr(%p,%p)"), (void *)form, (void *)usrptr)); @@ -53,16 +54,16 @@ set_form_userptr(FORM *form, void *usrptr) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : void *form_userptr(const FORM *form) -| +| | Description : Return the pointer that is reserved in any form to -| store application relevant informations. +| store application relevant information. | | Return Values : Value of pointer. If no such pointer has been set, | NULL is returned +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) +FORM_EXPORT(void *) form_userptr(const FORM *form) { T((T_CALLED("form_userptr(%p)"), (const void *)form)); diff --git a/deps/ncurses-5.9/form/frm_win.c b/deps/ncurses-6.3/form/frm_win.c similarity index 90% rename from deps/ncurses-5.9/form/frm_win.c rename to deps/ncurses-6.3/form/frm_win.c index a65cc59..eeea27d 100644 --- a/deps/ncurses-5.9/form/frm_win.c +++ b/deps/ncurses-6.3/form/frm_win.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -32,18 +33,18 @@ #include "form.priv.h" -MODULE_ID("$Id: frm_win.c,v 1.16 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: frm_win.c,v 1.19 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int set_form_win(FORM *form,WINDOW *win) -| -| Description : Set the window of the form to win. +| +| Description : Set the window of the form to win. | | Return Values : E_OK - success | E_POSTED - form is posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) set_form_win(FORM *form, WINDOW *win) { T((T_CALLED("set_form_win(%p,%p)"), (void *)form, (void *)win)); @@ -65,14 +66,14 @@ set_form_win(FORM *form, WINDOW *win) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : WINDOW *form_win(const FORM *) -| +| | Description : Retrieve the window of the form. | | Return Values : The pointer to the Window or stdscr if there is none. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) +FORM_EXPORT(WINDOW *) form_win(const FORM *form) { WINDOW *result; diff --git a/deps/ncurses-5.9/form/fty_alnum.c b/deps/ncurses-6.3/form/fty_alnum.c similarity index 94% rename from deps/ncurses-5.9/form/fty_alnum.c rename to deps/ncurses-6.3/form/fty_alnum.c index cda23dc..854dc33 100644 --- a/deps/ncurses-5.9/form/fty_alnum.c +++ b/deps/ncurses-6.3/form/fty_alnum.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -34,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_alnum.c,v 1.24 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fty_alnum.c,v 1.29 2020/12/12 01:15:37 tom Exp $") #define thisARG alnumARG @@ -55,7 +56,7 @@ thisARG; static void * Generic_This_Type(void *arg) { - thisARG *argp = (thisARG *) 0; + thisARG *argp = (thisARG *)0; if (arg) { @@ -139,7 +140,7 @@ static bool Check_This_Character(int c, const void *argp GCC_UNUSED) { #if USE_WIDEC_SUPPORT - if (iswalnum((wint_t) c)) + if (iswalnum((wint_t)c)) return TRUE; #endif return (isalnum(UChar(c)) ? TRUE : FALSE); @@ -185,14 +186,14 @@ static FIELDTYPE typeTHIS = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALNUM = &typeTHIS; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALNUM = &typeTHIS; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_ALNUM(void) { return TYPE_ALNUM; diff --git a/deps/ncurses-5.9/form/fty_alpha.c b/deps/ncurses-6.3/form/fty_alpha.c similarity index 94% rename from deps/ncurses-5.9/form/fty_alpha.c rename to deps/ncurses-6.3/form/fty_alpha.c index 917a9e0..a37459a 100644 --- a/deps/ncurses-5.9/form/fty_alpha.c +++ b/deps/ncurses-6.3/form/fty_alpha.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -34,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_alpha.c,v 1.26 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fty_alpha.c,v 1.31 2020/12/12 01:15:37 tom Exp $") #define thisARG alphaARG @@ -55,7 +56,7 @@ thisARG; static void * Generic_This_Type(void *arg) { - thisARG *argp = (thisARG *) 0; + thisARG *argp = (thisARG *)0; if (arg) { @@ -139,7 +140,7 @@ static bool Check_This_Character(int c, const void *argp GCC_UNUSED) { #if USE_WIDEC_SUPPORT - if (iswalpha((wint_t) c)) + if (iswalpha((wint_t)c)) return TRUE; #endif return (isalpha(UChar(c)) ? TRUE : FALSE); @@ -185,14 +186,14 @@ static FIELDTYPE typeTHIS = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_ALPHA = &typeTHIS; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ALPHA = &typeTHIS; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_ALPHA(void) { return TYPE_ALPHA; diff --git a/deps/ncurses-5.9/form/fty_enum.c b/deps/ncurses-6.3/form/fty_enum.c similarity index 94% rename from deps/ncurses-5.9/form/fty_enum.c rename to deps/ncurses-6.3/form/fty_enum.c index d335164..16ffae1 100644 --- a/deps/ncurses-5.9/form/fty_enum.c +++ b/deps/ncurses-6.3/form/fty_enum.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -34,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_enum.c,v 1.26 2010/05/01 21:11:07 tom Exp $") +MODULE_ID("$Id: fty_enum.c,v 1.33 2021/06/17 21:11:08 tom Exp $") typedef struct { @@ -54,9 +55,9 @@ typedef struct enumParams; /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void *Generic_Enum_Type(void * arg) -| +| | Description : Allocate structure for enumeration type argument. | | Return Values : Pointer to argument structure or NULL on error @@ -65,7 +66,7 @@ static void * Generic_Enum_Type(void *arg) { enumARG *argp = (enumARG *)0; - enumParams *params = (enumParams *) arg; + enumParams *params = (enumParams *)arg; if (params) { @@ -76,7 +77,6 @@ Generic_Enum_Type(void *arg) int cnt = 0; char **kp = (char **)0; char **kwds = (char **)0; - char **kptarget; int ccase, cunique; T((T_CREATE("enumARG %p"), (void *)argp)); @@ -95,6 +95,8 @@ Generic_Enum_Type(void *arg) if (cnt > 0) { + char **kptarget; + /* We copy the keywords, because we can't rely on the fact that the caller doesn't relocate or free the memory used for the keywords (maybe he has GC) @@ -117,9 +119,9 @@ Generic_Enum_Type(void *arg) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void *Make_Enum_Type( va_list * ap ) -| +| | Description : Allocate structure for enumeration type argument. | | Return Values : Pointer to argument structure or NULL on error @@ -137,10 +139,10 @@ Make_Enum_Type(va_list *ap) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void *Copy_Enum_Type( const void * argp ) -| -| Description : Copy structure for enumeration type argument. +| +| Description : Copy structure for enumeration type argument. | | Return Values : Pointer to argument structure or NULL on error. +--------------------------------------------------------------------------*/ @@ -181,9 +183,9 @@ Copy_Enum_Type(const void *argp) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void Free_Enum_Type( void * argp ) -| +| | Description : Free structure for enumeration type argument. | | Return Values : - @@ -218,11 +220,11 @@ Free_Enum_Type(void *argp) #define EXACT 2 /*--------------------------------------------------------------------------- -| Facility : libnform -| Function : static int Compare(const unsigned char * s, +| Facility : libnform +| Function : static int Compare(const unsigned char * s, | const unsigned char * buf, | bool ccase ) -| +| | Description : Check whether or not the text in 'buf' matches the | text in 's', at least partial. | @@ -273,11 +275,11 @@ Compare(const unsigned char *s, const unsigned char *buf, } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static bool Check_Enum_Field( | FIELD * field, | const void * argp) -| +| | Description : Validate buffer content to be a valid enumeration value | | Return Values : TRUE - field is valid @@ -291,10 +293,11 @@ Check_Enum_Field(FIELD *field, const void *argp) bool unique = ((const enumARG *)argp)->checkunique; unsigned char *bp = (unsigned char *)field_buffer(field, 0); char *s, *t, *p; - int res; while (kwds && (s = (*kwds++))) { + int res; + if ((res = Compare((unsigned char *)s, bp, ccase)) != NOMATCH) { p = t = s; /* t is at least a partial match */ @@ -330,10 +333,10 @@ static const char *dummy[] = {(char *)0}; /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static bool Next_Enum(FIELD * field, | const void * argp) -| +| | Description : Check for the next enumeration value | | Return Values : TRUE - next value found and loaded @@ -367,11 +370,11 @@ Next_Enum(FIELD *field, const void *argp) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static bool Previous_Enum( | FIELD * field, | const void * argp) -| +| | Description : Check for the previous enumeration value | | Return Values : TRUE - previous value found and loaded @@ -424,15 +427,14 @@ static FIELDTYPE typeENUM = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE *) -TYPE_ENUM = &typeENUM; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_ENUM = &typeENUM; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_ENUM(void) { return TYPE_ENUM; diff --git a/deps/ncurses-5.9/form/fty_generic.c b/deps/ncurses-6.3/form/fty_generic.c similarity index 89% rename from deps/ncurses-5.9/form/fty_generic.c rename to deps/ncurses-6.3/form/fty_generic.c index 3e7a575..301c80a 100644 --- a/deps/ncurses-5.9/form/fty_generic.c +++ b/deps/ncurses-6.3/form/fty_generic.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2008-2012,2016 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 * @@ -34,36 +35,37 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_generic.c,v 1.5 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fty_generic.c,v 1.15 2021/03/27 23:49:53 tom Exp $") /* * This is not a full implementation of a field type, but adds some * support for higher level languages with some restrictions to interop - * with C language. Especially the collection of arguments for the + * with C language. In particular, the collection of arguments for the * various fieldtypes is not based on the vararg C mechanism, but on a - * iterator based callback mechanism that allowes the high level language + * iterator based callback mechanism that allows the high level language * to provide the arguments as a structure. Most languages have mechanisms * to layout structures so that they can be passed to C. + * * The languages can register a new generic fieldtype dynamically and store * a handle (key) to the calling object as an argument. Together with that * it can register a freearg callback, so that the high level language * remains in control of the memory management of the arguments they pass. * The design idea is, that the high-level language - typically a OO - * language like C# or Java, uses it's own dispatching mechanisms + * language like C# or Java, uses its own dispatching mechanisms * (polymorphism) to call the proper check routines responsible for the * argument type. So these language implement typically only one generic * fieldtype they register with the forms library using this call. * - * For that purpose we have extended the fieldtype struc by a new element - * that gets the arguments from a single struct passed by the caller. - * + * For that purpose we have extended the fieldtype structure by a new element + * that gets the arguments from a single struct passed by the caller. + * */ #if NCURSES_INTEROP_FUNCS /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void *Generic_This_Type( void * arg ) -| +| | Description : We interpret the passed arg just as a handle the | calling language uses to keep track of its allocated | argument structures. We can simply copy it back. @@ -89,7 +91,7 @@ Generic_This_Type(void *arg) | write a field_check and a char_check function and give | them as input to this call. A callback to allow the | release of the allocated memory must also be provided. -| For generic field types, we provide some more +| For generic field types, we provide some more | information about the field as parameters. | | If an error occurs, errno is set to @@ -98,7 +100,7 @@ Generic_This_Type(void *arg) | | Return Values : Fieldtype pointer or NULL if error occurred +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *), bool (*const char_check) (int, FORM *, FIELD *, const void *), @@ -109,8 +111,14 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *), int code = E_SYSTEM_ERROR; FIELDTYPE *res = (FIELDTYPE *)0; - T((T_CALLED("_nc_generic_fieldtype(%p,%p,%p,%p,%p)"), - field_check, char_check, next, prev, freecallback)); + TR_FUNC_BFR(5); + + T((T_CALLED("_nc_generic_fieldtype(%s,%s,%s,%s,%s)"), + TR_FUNC_ARG(0, field_check), + TR_FUNC_ARG(1, char_check), + TR_FUNC_ARG(2, next), + TR_FUNC_ARG(3, prev), + TR_FUNC_ARG(4, freecallback))); if (field_check || char_check) { @@ -119,7 +127,7 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *), if (res) { *res = *_nc_Default_FieldType; - res->status |= (_HAS_ARGS | _GENERIC); + SetStatus(res, (_HAS_ARGS | _GENERIC)); res->fieldcheck.gfcheck = field_check; res->charcheck.gccheck = char_check; res->genericarg = Generic_This_Type; @@ -139,16 +147,16 @@ _nc_generic_fieldtype(bool (*const field_check) (FORM *, FIELD *, const void *), } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static TypeArgument *GenericArgument( | const FIELDTYPE* typ, | int (*argiterator)(void**), | int* err) -| +| | Description : The iterator callback must browse through all fieldtype | parameters that have an argument associated with the | type. The iterator returns 1 if the operation to get -| the next element was successfull, 0 otherwise. If the +| the next element was successful, 0 otherwise. If the | iterator could move to the next argument, it fills | the void* pointer representing the argument into the | location provided as argument to the iterator. @@ -200,20 +208,20 @@ GenericArgument(const FIELDTYPE *typ, } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : int _nc_set_generic_fieldtype( | FIELD* field, | FIELDTYPE* ftyp, | int (*argiterator)(void**)) -| +| | Description : Assign the fieldtype to the field and use the iterator -| mechanism to get the arguments when a check is +| mechanism to get the arguments when a check is | performed. | | Return Values : E_OK if all went well | E_SYSTEM_ERROR if an error occurred +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +FORM_EXPORT(int) _nc_set_generic_fieldtype(FIELD *field, FIELDTYPE *ftyp, int (*argiterator) (void **)) @@ -258,23 +266,23 @@ _nc_set_generic_fieldtype(FIELD *field, } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : WINDOW* _nc_form_cursor( | FORM* form, | int *pRow, int *pCol) -| +| | Description : Get the current position of the form cursor position | We also return the field window | -| Return Values : The fields Window or NULL on error +| Return Values : The field's Window or NULL on error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) +FORM_EXPORT(WINDOW *) _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 != 0 && pRow != 0 && pCol != 0) { *pRow = form->currow; *pCol = form->curcol; diff --git a/deps/ncurses-5.9/form/fty_int.c b/deps/ncurses-6.3/form/fty_int.c similarity index 89% rename from deps/ncurses-5.9/form/fty_int.c rename to deps/ncurses-6.3/form/fty_int.c index e643ad9..c7e3135 100644 --- a/deps/ncurses-5.9/form/fty_int.c +++ b/deps/ncurses-6.3/form/fty_int.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -34,7 +35,7 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_int.c,v 1.25 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fty_int.c,v 1.33 2021/06/17 21:11:08 tom Exp $") #if USE_WIDEC_SUPPORT #define isDigit(c) (iswdigit((wint_t)(c)) || isdigit(UChar(c))) @@ -61,9 +62,9 @@ typedef struct integerPARM; /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void *Generic_This_Type( void * arg ) -| +| | Description : Allocate structure for integer type argument. | | Return Values : Pointer to argument structure or NULL on error @@ -71,8 +72,8 @@ integerPARM; static void * Generic_This_Type(void *arg) { - thisARG *argp = (thisARG *) 0; - thisARG *param = (thisARG *) arg; + thisARG *argp = (thisARG *)0; + thisARG *param = (thisARG *)arg; if (param) { @@ -88,9 +89,9 @@ Generic_This_Type(void *arg) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void *Make_This_Type( va_list * ap ) -| +| | Description : Allocate structure for integer type argument. | | Return Values : Pointer to argument structure or NULL on error @@ -108,10 +109,10 @@ Make_This_Type(va_list *ap) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void *Copy_This_Type(const void * argp) -| -| Description : Copy structure for integer type argument. +| +| Description : Copy structure for integer type argument. | | Return Values : Pointer to argument structure or NULL on error. +--------------------------------------------------------------------------*/ @@ -119,11 +120,12 @@ static void * Copy_This_Type(const void *argp) { const thisARG *ap = (const thisARG *)argp; - thisARG *result = (thisARG *) 0; + thisARG *result = (thisARG *)0; if (argp) { result = typeMalloc(thisARG, 1); + if (result) { T((T_CREATE("thisARG %p"), (void *)result)); @@ -134,9 +136,9 @@ Copy_This_Type(const void *argp) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static void Free_This_Type(void * argp) -| +| | Description : Free structure for integer type argument. | | Return Values : - @@ -149,11 +151,11 @@ Free_This_Type(void *argp) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static bool Check_This_Field( | FIELD * field, | const void * argp) -| +| | Description : Validate buffer content to be a valid integer value | | Return Values : TRUE - field is valid @@ -168,11 +170,9 @@ Check_This_Field(FIELD *field, const void *argp) int prec = argi->precision; unsigned char *bp = (unsigned char *)field_buffer(field, 0); char *s = (char *)bp; - long val; - char buf[100]; bool result = FALSE; - while (*bp && *bp == ' ') + while (*bp == ' ') bp++; if (*bp) { @@ -181,13 +181,14 @@ Check_This_Field(FIELD *field, const void *argp) #if USE_WIDEC_SUPPORT if (*bp) { - bool blank = FALSE; int len; - int n; wchar_t *list = _nc_Widen_String((char *)bp, &len); if (list != 0) { + bool blank = FALSE; + int n; + result = TRUE; for (n = 0; n < len; ++n) { @@ -225,7 +226,8 @@ Check_This_Field(FIELD *field, const void *argp) #endif if (result) { - val = atol(s); + long val = atol(s); + if (low < high) { if (val < low || val > high) @@ -233,7 +235,10 @@ Check_This_Field(FIELD *field, const void *argp) } if (result) { - sprintf(buf, "%.*ld", (prec > 0 ? prec : 0), val); + char buf[100]; + + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%.*ld", (prec > 0 ? prec : 0), val); set_field_buffer(field, 0, buf); } } @@ -242,11 +247,11 @@ Check_This_Field(FIELD *field, const void *argp) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static bool Check_This_Character( | int c, | const void * argp) -| +| | Description : Check a character for the integer type. | | Return Values : TRUE - character is valid @@ -276,14 +281,14 @@ static FIELDTYPE typeTHIS = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_INTEGER = &typeTHIS; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_INTEGER = &typeTHIS; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_INTEGER(void) { return TYPE_INTEGER; diff --git a/deps/ncurses-5.9/form/fty_ipv4.c b/deps/ncurses-6.3/form/fty_ipv4.c similarity index 90% rename from deps/ncurses-5.9/form/fty_ipv4.c rename to deps/ncurses-6.3/form/fty_ipv4.c index 8dc04f8..108f7b4 100644 --- a/deps/ncurses-5.9/form/fty_ipv4.c +++ b/deps/ncurses-6.3/form/fty_ipv4.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2006,2009 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 * @@ -34,14 +35,14 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_ipv4.c,v 1.10 2009/11/07 20:17:58 tom Exp $") +MODULE_ID("$Id: fty_ipv4.c,v 1.16 2021/06/17 21:11:08 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static bool Check_IPV4_Field( | FIELD * field, | const void * argp) -| +| | Description : Validate buffer content to be a valid IP number (Ver. 4) | | Return Values : TRUE - field is valid @@ -52,7 +53,7 @@ Check_IPV4_Field(FIELD *field, const void *argp GCC_UNUSED) { char *bp = field_buffer(field, 0); int num = 0, len; - unsigned int d1, d2, d3, d4; + unsigned int d1 = 0, d2 = 0, d3 = 0, d4 = 0; if (isdigit(UChar(*bp))) /* Must start with digit */ { @@ -69,11 +70,11 @@ Check_IPV4_Field(FIELD *field, const void *argp GCC_UNUSED) } /*--------------------------------------------------------------------------- -| Facility : libnform +| Facility : libnform | Function : static bool Check_IPV4_Character( -| int c, +| int c, | const void *argp ) -| +| | Description : Check a character for unsigned type or period. | | Return Values : TRUE - character is valid @@ -103,14 +104,14 @@ static FIELDTYPE typeIPV4 = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_IPV4 = &typeIPV4; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_IPV4 = &typeIPV4; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_IPV4(void) { return TYPE_IPV4; diff --git a/deps/ncurses-5.9/form/fty_num.c b/deps/ncurses-6.3/form/fty_num.c similarity index 92% rename from deps/ncurses-5.9/form/fty_num.c rename to deps/ncurses-6.3/form/fty_num.c index 4bd7132..34cef63 100644 --- a/deps/ncurses-5.9/form/fty_num.c +++ b/deps/ncurses-6.3/form/fty_num.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -34,13 +35,13 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_num.c,v 1.28 2010/01/23 21:14:36 tom Exp $") +MODULE_ID("$Id: fty_num.c,v 1.37 2021/03/27 23:49:58 tom Exp $") #if HAVE_LOCALE_H #include <locale.h> #endif -#if HAVE_LOCALE_H +#if HAVE_LOCALE_H && HAVE_LOCALECONV #define isDecimalPoint(c) ((c) == ((L && L->decimal_point) ? *(L->decimal_point) : '.')) #else #define isDecimalPoint(c) ((c) == '.') @@ -82,8 +83,8 @@ thisPARM; static void * Generic_This_Type(void *arg) { - thisARG *argn = (thisARG *) 0; - thisPARM *args = (thisPARM *) arg; + thisARG *argn = (thisARG *)0; + thisPARM *args = (thisPARM *)arg; if (args) { @@ -96,7 +97,7 @@ Generic_This_Type(void *arg) argn->low = args->low; argn->high = args->high; -#if HAVE_LOCALE_H +#if HAVE_LOCALE_H && HAVE_LOCALECONV argn->L = localeconv(); #else argn->L = NULL; @@ -138,11 +139,12 @@ static void * Copy_This_Type(const void *argp) { const thisARG *ap = (const thisARG *)argp; - thisARG *result = (thisARG *) 0; + thisARG *result = (thisARG *)0; if (argp) { result = typeMalloc(thisARG, 1); + if (result) { T((T_CREATE("thisARG %p"), (void *)result)); @@ -186,12 +188,10 @@ Check_This_Field(FIELD *field, const void *argp) int prec = argn->precision; unsigned char *bp = (unsigned char *)field_buffer(field, 0); char *s = (char *)bp; - double val = 0.0; struct lconv *L = argn->L; - char buf[64]; bool result = FALSE; - while (*bp && *bp == ' ') + while (*bp == ' ') bp++; if (*bp) { @@ -200,14 +200,15 @@ Check_This_Field(FIELD *field, const void *argp) #if USE_WIDEC_SUPPORT if (*bp) { - bool blank = FALSE; - int state = 0; int len; - int n; wchar_t *list = _nc_Widen_String((char *)bp, &len); if (list != 0) { + bool blank = FALSE; + int state = 0; + int n; + result = TRUE; for (n = 0; n < len; ++n) { @@ -263,7 +264,8 @@ Check_This_Field(FIELD *field, const void *argp) #endif if (result) { - val = atof(s); + double val = atof(s); + if (low < high) { if (val < low || val > high) @@ -271,7 +273,10 @@ Check_This_Field(FIELD *field, const void *argp) } if (result) { - sprintf(buf, "%.*f", (prec > 0 ? prec : 0), val); + char buf[64]; + + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%.*f", (prec > 0 ? prec : 0), val); set_field_buffer(field, 0, buf); } } @@ -322,14 +327,14 @@ static FIELDTYPE typeTHIS = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_NUMERIC = &typeTHIS; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_NUMERIC = &typeTHIS; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_NUMERIC(void) { return TYPE_NUMERIC; diff --git a/deps/ncurses-5.9/form/fty_regex.c b/deps/ncurses-6.3/form/fty_regex.c similarity index 83% rename from deps/ncurses-5.9/form/fty_regex.c rename to deps/ncurses-6.3/form/fty_regex.c index 2c0a4ca..62dcab5 100644 --- a/deps/ncurses-5.9/form/fty_regex.c +++ b/deps/ncurses-6.3/form/fty_regex.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2015 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 * @@ -34,10 +35,48 @@ #include "form.priv.h" -MODULE_ID("$Id: fty_regex.c,v 1.24 2010/01/23 21:14:37 tom Exp $") +MODULE_ID("$Id: fty_regex.c,v 1.33 2021/08/14 15:01:52 tom Exp $") -#if HAVE_REGEX_H_FUNCS /* We prefer POSIX regex */ +#if HAVE_REGEX_H_FUNCS || HAVE_LIB_PCRE2 /* We prefer POSIX regex */ + +#if HAVE_PCRE2POSIX_H +#include <pcre2posix.h> + +/* pcre2 used to provide its "POSIX" entrypoints using the same names as the + * standard ones in the C runtime, but that never worked because the linker + * would use the C runtime. Debian patched the library to fix this symbol + * conflict, but overlooked the header file, and Debian's patch was made + * obsolete when pcre2 was changed early in 2019 to provide different names. + * + * Here is a workaround to make the older version of Debian's package work. + */ +#if !defined(PCRE2regcomp) && defined(HAVE_PCRE2REGCOMP) + +#undef regcomp +#undef regexec +#undef regfree + +#ifdef __cplusplus +extern "C" +{ +#endif + PCRE2POSIX_EXP_DECL int PCRE2regcomp(regex_t *, const char *, int); + PCRE2POSIX_EXP_DECL int PCRE2regexec(const regex_t *, const char *, size_t, + regmatch_t *, int); + PCRE2POSIX_EXP_DECL void PCRE2regfree(regex_t *); +#ifdef __cplusplus +} /* extern "C" */ +#endif +#define regcomp(r,s,n) PCRE2regcomp(r,s,n) +#define regexec(r,s,n,m,x) PCRE2regexec(r,s,n,m,x) +#define regfree(r) PCRE2regfree(r) +#endif +/* end workaround... */ +#elif HAVE_PCREPOSIX_H +#include <pcreposix.h> +#else #include <regex.h> +#endif typedef struct { @@ -113,7 +152,7 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) if (rx) { - preg = typeMalloc(RegExp_Arg, 1); + preg = typeCalloc(RegExp_Arg, 1); if (preg) { @@ -123,9 +162,8 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) (REG_EXTENDED | REG_NOSUB | REG_NEWLINE))) { T((T_CREATE("regex_t %p"), (void *)preg->pRegExp)); - preg->refCount = typeMalloc(unsigned long, 1); - - *(preg->refCount) = 1; + if ((preg->refCount = typeMalloc(unsigned long, 1)) != 0) + *(preg->refCount) = 1; } else { @@ -151,9 +189,8 @@ Generic_RegularExpression_Type(void *arg MAYBE_UNUSED) T((T_CREATE("RegExp_Arg %p"), pArg)); pArg->compiled_expression = NULL; - pArg->refCount = typeMalloc(unsigned long, 1); - - *(pArg->refCount) = 1; + if ((pArg->refCount = typeMalloc(unsigned long, 1)) != 0) + *(pArg->refCount) = 1; do { @@ -266,6 +303,7 @@ Free_RegularExpression_Type(void *argp MAYBE_UNUSED) { free(ap->refCount); regfree(ap->pRegExp); + free(ap->pRegExp); } #elif HAVE_REGEXP_H_FUNCS | HAVE_REGEXPR_H_FUNCS if (ap->compiled_expression) @@ -333,14 +371,14 @@ static FIELDTYPE typeREGEXP = #endif }; -NCURSES_EXPORT_VAR(FIELDTYPE*) TYPE_REGEXP = &typeREGEXP; +FORM_EXPORT_VAR(FIELDTYPE *) TYPE_REGEXP = &typeREGEXP; #if NCURSES_INTEROP_FUNCS /* The next routines are to simplify the use of ncurses from - programming languages with restictions on interop with C level + programming languages with restrictions on interop with C level constructs (e.g. variable access or va_list + ellipsis constructs) */ -NCURSES_EXPORT(FIELDTYPE *) +FORM_EXPORT(FIELDTYPE *) _nc_TYPE_REGEXP(void) { return TYPE_REGEXP; diff --git a/deps/ncurses-6.3/form/headers b/deps/ncurses-6.3/form/headers new file mode 100644 index 0000000..0969e3f --- /dev/null +++ b/deps/ncurses-6.3/form/headers @@ -0,0 +1,33 @@ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998,2006 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: Thomas E. Dickey <dickey@clark.net> 1996 +# +$(srcdir)/form.h +# vile:makemode diff --git a/deps/ncurses-5.9/form/llib-lform b/deps/ncurses-6.3/form/llib-lform similarity index 81% rename from deps/ncurses-5.9/form/llib-lform rename to deps/ncurses-6.3/form/llib-lform index 2b6abdc..334f8cb 100644 --- a/deps/ncurses-5.9/form/llib-lform +++ b/deps/ncurses-6.3/form/llib-lform @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 1996-2005,2010 * + * Author: Thomas E. Dickey 1996-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -64,11 +65,11 @@ Form_Hook _nc_retrace_form_hook( #undef set_fieldtype_arg int set_fieldtype_arg( - FIELDTYPE *typ, + FIELDTYPE *typ, void *(*const make_arg)( - va_list *p1), + va_list *p1), void *(*const copy_arg)( - const void *p1), + const void *p1), void (*const free_arg)( void *p1)) { return(*(int *)0); } @@ -82,7 +83,7 @@ void *field_arg( #undef set_field_fore int set_field_fore( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -93,7 +94,7 @@ chtype field_fore( #undef set_field_back int set_field_back( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -106,10 +107,15 @@ chtype field_back( #undef set_current_field int set_current_field( - FORM *form, + FORM *form, FIELD *field) { return(*(int *)0); } +#undef unfocus_current_field +int unfocus_current_field( + FORM *const form) + { return(*(int *)0); } + #undef current_field FIELD *current_field( const FORM *form) @@ -127,27 +133,27 @@ FIELD *_nc_Default_Field; #undef _nc_Make_Argument TypeArgument *_nc_Make_Argument( - const FIELDTYPE *typ, - va_list *ap, + const FIELDTYPE *typ, + va_list *ap, int *err) { return(*(TypeArgument **)0); } #undef _nc_Copy_Argument TypeArgument *_nc_Copy_Argument( - const FIELDTYPE *typ, - const TypeArgument *argp, + const FIELDTYPE *typ, + const TypeArgument *argp, int *err) { return(*(TypeArgument **)0); } #undef _nc_Free_Argument void _nc_Free_Argument( - const FIELDTYPE *typ, + const FIELDTYPE *typ, TypeArgument *argp) { /* void */ } #undef _nc_Copy_Type NCURSES_BOOL _nc_Copy_Type( - FIELD *dst, + FIELD *dst, FIELD const *src) { return(*(NCURSES_BOOL *)0); } @@ -158,11 +164,11 @@ void _nc_Free_Type( #undef new_field FIELD *new_field( - int rows, - int cols, - int frow, - int fcol, - int nrow, + int rows, + int cols, + int frow, + int fcol, + int nrow, int nbuf) { return(*(FIELD **)0); } @@ -175,8 +181,8 @@ int free_field( #undef dup_field FIELD *dup_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -184,12 +190,12 @@ FIELD *dup_field( #undef set_fieldtype_choice int set_fieldtype_choice( - FIELDTYPE *typ, + FIELDTYPE *typ, NCURSES_BOOL (*const next_choice)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const prev_choice)( - FIELD *p1, + FIELD *p1, const void *p2)) { return(*(int *)0); } @@ -197,7 +203,7 @@ int set_fieldtype_choice( #undef link_fieldtype FIELDTYPE *link_fieldtype( - FIELDTYPE *type1, + FIELDTYPE *type1, FIELDTYPE *type2) { return(*(FIELDTYPE **)0); } @@ -205,20 +211,20 @@ FIELDTYPE *link_fieldtype( #undef field_info int field_info( - const FIELD *field, - int *rows, - int *cols, - int *frow, - int *fcol, - int *nrow, + const FIELD *field, + int *rows, + int *cols, + int *frow, + int *fcol, + int *nrow, int *nbuf) { return(*(int *)0); } #undef dynamic_field_info int dynamic_field_info( - const FIELD *field, - int *drows, - int *dcols, + const FIELD *field, + int *drows, + int *dcols, int *maxgrow) { return(*(int *)0); } @@ -226,7 +232,7 @@ int dynamic_field_info( #undef set_field_just int set_field_just( - FIELD *field, + FIELD *field, int just) { return(*(int *)0); } @@ -239,8 +245,8 @@ int field_just( #undef link_field FIELD *link_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -248,7 +254,7 @@ FIELD *link_field( #undef set_max_field int set_max_field( - FIELD *field, + FIELD *field, int maxgrow) { return(*(int *)0); } @@ -256,8 +262,8 @@ int set_max_field( #undef move_field int move_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(int *)0); } @@ -269,10 +275,10 @@ FIELDTYPE *_nc_Default_FieldType; #undef new_fieldtype FIELDTYPE *new_fieldtype( NCURSES_BOOL (*const field_check)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const char_check)( - int p1, + int p1, const void *p2)) { return(*(FIELDTYPE **)0); } @@ -285,7 +291,7 @@ int free_fieldtype( #undef set_field_opts int set_field_opts( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -296,13 +302,13 @@ Field_Options field_opts( #undef field_opts_on int field_opts_on( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } #undef field_opts_off int field_opts_off( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -310,7 +316,7 @@ int field_opts_off( #undef set_field_pad int set_field_pad( - FIELD *field, + FIELD *field, int ch) { return(*(int *)0); } @@ -323,7 +329,7 @@ int field_pad( #undef set_new_page int set_new_page( - FIELD *field, + FIELD *field, NCURSES_BOOL new_page_flag) { return(*(int *)0); } @@ -336,7 +342,7 @@ NCURSES_BOOL new_page( #undef set_field_status int set_field_status( - FIELD *field, + FIELD *field, NCURSES_BOOL status) { return(*(int *)0); } @@ -349,8 +355,8 @@ NCURSES_BOOL field_status( #undef set_field_type int set_field_type( - FIELD *field, - FIELDTYPE *type, + FIELD *field, + FIELDTYPE *type, ...) { return(*(int *)0); } @@ -363,7 +369,7 @@ FIELDTYPE *field_type( #undef set_field_userptr int set_field_userptr( - FIELD *field, + FIELD *field, void *usrptr) { return(*(int *)0); } @@ -398,7 +404,7 @@ FORM *_nc_Default_Form; #undef new_form_sp FORM *new_form_sp( - SCREEN *sp, + SCREEN *sp, FIELD **fields) { return(*(FORM **)0); } @@ -414,7 +420,7 @@ int free_form( #undef set_form_fields int set_form_fields( - FORM *form, + FORM *form, FIELD **fields) { return(*(int *)0); } @@ -432,8 +438,8 @@ int field_count( #undef _nc_get_fieldbuffer void _nc_get_fieldbuffer( - FORM *form, - FIELD *field, + FORM *form, + FIELD *field, char *buf) { /* void */ } @@ -454,13 +460,18 @@ int _nc_Synchronize_Attributes( #undef _nc_Synchronize_Options int _nc_Synchronize_Options( - FIELD *field, + FIELD *field, Field_Options newopts) { return(*(int *)0); } +#undef _nc_Unset_Current_Field +void _nc_Unset_Current_Field( + FORM *form) + { /* void */ } + #undef _nc_Set_Current_Field int _nc_Set_Current_Field( - FORM *form, + FORM *form, FIELD *newfield) { return(*(int *)0); } @@ -476,34 +487,34 @@ FIELD *_nc_First_Active_Field( #undef _nc_Set_Form_Page int _nc_Set_Form_Page( - FORM *form, - int page, + FORM *form, + int page, FIELD *field) { return(*(int *)0); } typedef struct { - int keycode; - int (*cmd) (FORM *); + int keycode; + int (*cmd) (FORM *); } Binding_Info; #undef form_driver int form_driver( - FORM *form, + FORM *form, int c) { return(*(int *)0); } #undef set_field_buffer int set_field_buffer( - FIELD *field, - int buffer, + FIELD *field, + int buffer, const char *value) { return(*(int *)0); } #undef field_buffer char *field_buffer( - const FIELD *field, + const FIELD *field, int buffer) { return(*(char **)0); } @@ -511,7 +522,7 @@ char *field_buffer( #undef set_field_init int set_field_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -522,7 +533,7 @@ Form_Hook field_init( #undef set_field_term int set_field_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -533,7 +544,7 @@ Form_Hook field_term( #undef set_form_init int set_form_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -544,7 +555,7 @@ Form_Hook form_init( #undef set_form_term int set_form_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -557,7 +568,7 @@ Form_Hook form_term( #undef set_form_opts int set_form_opts( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -568,13 +579,13 @@ Form_Options form_opts( #undef form_opts_on int form_opts_on( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } #undef form_opts_off int form_opts_off( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -582,7 +593,7 @@ int form_opts_off( #undef set_form_page int set_form_page( - FORM *form, + FORM *form, int page) { return(*(int *)0); } @@ -619,8 +630,8 @@ int form_request_by_name( #undef scale_form int scale_form( - const FORM *form, - int *rows, + const FORM *form, + int *rows, int *cols) { return(*(int *)0); } @@ -628,7 +639,7 @@ int scale_form( #undef set_form_sub int set_form_sub( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -641,7 +652,7 @@ WINDOW *form_sub( #undef set_form_userptr int set_form_userptr( - FORM *form, + FORM *form, void *usrptr) { return(*(int *)0); } @@ -654,7 +665,7 @@ void *form_userptr( #undef set_form_win int set_form_win( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -674,6 +685,10 @@ alnumARG; #undef TYPE_ALNUM FIELDTYPE *TYPE_ALNUM; +#undef _nc_TYPE_ALNUM +FIELDTYPE *_nc_TYPE_ALNUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_alpha.c */ typedef struct @@ -685,6 +700,10 @@ alphaARG; #undef TYPE_ALPHA FIELDTYPE *TYPE_ALPHA; +#undef _nc_TYPE_ALPHA +FIELDTYPE *_nc_TYPE_ALPHA(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_enum.c */ typedef struct @@ -707,11 +726,49 @@ enumParams; #undef TYPE_ENUM FIELDTYPE *TYPE_ENUM; +#undef _nc_TYPE_ENUM +FIELDTYPE *_nc_TYPE_ENUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_generic.c */ -#undef _nc_fty_generic -void _nc_fty_generic(void) - { /* void */ } +#undef _nc_generic_fieldtype +FIELDTYPE *_nc_generic_fieldtype( + NCURSES_BOOL (*const field_check)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const char_check)( + int p1, + FORM *p2, + FIELD *p3, + const void *p4), + NCURSES_BOOL (*const next)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const prev)( + FORM *p1, + FIELD *p2, + const void *p3), + void (*freecallback)( + void *p1)) + { return(*(FIELDTYPE **)0); } + +#undef _nc_set_generic_fieldtype +int _nc_set_generic_fieldtype( + FIELD *field, + FIELDTYPE *ftyp, + int (*argiterator)( + void **p1)) + { return(*(int *)0); } + +#undef _nc_form_cursor +WINDOW *_nc_form_cursor( + const FORM *form, + int *pRow, + int *pCol) + { return(*(WINDOW **)0); } /* ./fty_int.c */ @@ -734,13 +791,20 @@ integerPARM; #undef TYPE_INTEGER FIELDTYPE *TYPE_INTEGER; +#undef _nc_TYPE_INTEGER +FIELDTYPE *_nc_TYPE_INTEGER(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_ipv4.c */ + #undef TYPE_IPV4 FIELDTYPE *TYPE_IPV4; -/* ./fty_num.c */ +#undef _nc_TYPE_IPV4 +FIELDTYPE *_nc_TYPE_IPV4(void) + { return(*(FIELDTYPE **)0); } -#include <locale.h> +/* ./fty_num.c */ typedef struct { @@ -762,9 +826,11 @@ thisPARM; #undef TYPE_NUMERIC FIELDTYPE *TYPE_NUMERIC; -/* ./fty_regex.c */ +#undef _nc_TYPE_NUMERIC +FIELDTYPE *_nc_TYPE_NUMERIC(void) + { return(*(FIELDTYPE **)0); } -#include <regex.h> +/* ./fty_regex.c */ typedef struct { @@ -775,3 +841,7 @@ RegExp_Arg; #undef TYPE_REGEXP FIELDTYPE *TYPE_REGEXP; + +#undef _nc_TYPE_REGEXP +FIELDTYPE *_nc_TYPE_REGEXP(void) + { return(*(FIELDTYPE **)0); } diff --git a/deps/ncurses-5.9/form/llib-lformt b/deps/ncurses-6.3/form/llib-lformt similarity index 81% rename from deps/ncurses-5.9/form/llib-lformt rename to deps/ncurses-6.3/form/llib-lformt index 33de63c..d91b3f0 100644 --- a/deps/ncurses-5.9/form/llib-lformt +++ b/deps/ncurses-6.3/form/llib-lformt @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2010-2015,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2010 * + * Author: Thomas E. Dickey 2010-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -64,11 +65,11 @@ Form_Hook _nc_retrace_form_hook( #undef set_fieldtype_arg int set_fieldtype_arg( - FIELDTYPE *typ, + FIELDTYPE *typ, void *(*const make_arg)( - va_list *p1), + va_list *p1), void *(*const copy_arg)( - const void *p1), + const void *p1), void (*const free_arg)( void *p1)) { return(*(int *)0); } @@ -82,7 +83,7 @@ void *field_arg( #undef set_field_fore int set_field_fore( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -93,7 +94,7 @@ chtype field_fore( #undef set_field_back int set_field_back( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -106,10 +107,15 @@ chtype field_back( #undef set_current_field int set_current_field( - FORM *form, + FORM *form, FIELD *field) { return(*(int *)0); } +#undef unfocus_current_field +int unfocus_current_field( + FORM *const form) + { return(*(int *)0); } + #undef current_field FIELD *current_field( const FORM *form) @@ -127,27 +133,27 @@ FIELD *_nc_Default_Field; #undef _nc_Make_Argument TypeArgument *_nc_Make_Argument( - const FIELDTYPE *typ, - va_list *ap, + const FIELDTYPE *typ, + va_list *ap, int *err) { return(*(TypeArgument **)0); } #undef _nc_Copy_Argument TypeArgument *_nc_Copy_Argument( - const FIELDTYPE *typ, - const TypeArgument *argp, + const FIELDTYPE *typ, + const TypeArgument *argp, int *err) { return(*(TypeArgument **)0); } #undef _nc_Free_Argument void _nc_Free_Argument( - const FIELDTYPE *typ, + const FIELDTYPE *typ, TypeArgument *argp) { /* void */ } #undef _nc_Copy_Type NCURSES_BOOL _nc_Copy_Type( - FIELD *dst, + FIELD *dst, FIELD const *src) { return(*(NCURSES_BOOL *)0); } @@ -158,11 +164,11 @@ void _nc_Free_Type( #undef new_field FIELD *new_field( - int rows, - int cols, - int frow, - int fcol, - int nrow, + int rows, + int cols, + int frow, + int fcol, + int nrow, int nbuf) { return(*(FIELD **)0); } @@ -175,8 +181,8 @@ int free_field( #undef dup_field FIELD *dup_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -184,12 +190,12 @@ FIELD *dup_field( #undef set_fieldtype_choice int set_fieldtype_choice( - FIELDTYPE *typ, + FIELDTYPE *typ, NCURSES_BOOL (*const next_choice)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const prev_choice)( - FIELD *p1, + FIELD *p1, const void *p2)) { return(*(int *)0); } @@ -197,7 +203,7 @@ int set_fieldtype_choice( #undef link_fieldtype FIELDTYPE *link_fieldtype( - FIELDTYPE *type1, + FIELDTYPE *type1, FIELDTYPE *type2) { return(*(FIELDTYPE **)0); } @@ -205,20 +211,20 @@ FIELDTYPE *link_fieldtype( #undef field_info int field_info( - const FIELD *field, - int *rows, - int *cols, - int *frow, - int *fcol, - int *nrow, + const FIELD *field, + int *rows, + int *cols, + int *frow, + int *fcol, + int *nrow, int *nbuf) { return(*(int *)0); } #undef dynamic_field_info int dynamic_field_info( - const FIELD *field, - int *drows, - int *dcols, + const FIELD *field, + int *drows, + int *dcols, int *maxgrow) { return(*(int *)0); } @@ -226,7 +232,7 @@ int dynamic_field_info( #undef set_field_just int set_field_just( - FIELD *field, + FIELD *field, int just) { return(*(int *)0); } @@ -239,8 +245,8 @@ int field_just( #undef link_field FIELD *link_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -248,7 +254,7 @@ FIELD *link_field( #undef set_max_field int set_max_field( - FIELD *field, + FIELD *field, int maxgrow) { return(*(int *)0); } @@ -256,8 +262,8 @@ int set_max_field( #undef move_field int move_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(int *)0); } @@ -269,10 +275,10 @@ FIELDTYPE *_nc_Default_FieldType; #undef new_fieldtype FIELDTYPE *new_fieldtype( NCURSES_BOOL (*const field_check)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const char_check)( - int p1, + int p1, const void *p2)) { return(*(FIELDTYPE **)0); } @@ -285,7 +291,7 @@ int free_fieldtype( #undef set_field_opts int set_field_opts( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -296,13 +302,13 @@ Field_Options field_opts( #undef field_opts_on int field_opts_on( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } #undef field_opts_off int field_opts_off( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -310,7 +316,7 @@ int field_opts_off( #undef set_field_pad int set_field_pad( - FIELD *field, + FIELD *field, int ch) { return(*(int *)0); } @@ -323,7 +329,7 @@ int field_pad( #undef set_new_page int set_new_page( - FIELD *field, + FIELD *field, NCURSES_BOOL new_page_flag) { return(*(int *)0); } @@ -336,7 +342,7 @@ NCURSES_BOOL new_page( #undef set_field_status int set_field_status( - FIELD *field, + FIELD *field, NCURSES_BOOL status) { return(*(int *)0); } @@ -349,8 +355,8 @@ NCURSES_BOOL field_status( #undef set_field_type int set_field_type( - FIELD *field, - FIELDTYPE *type, + FIELD *field, + FIELDTYPE *type, ...) { return(*(int *)0); } @@ -363,7 +369,7 @@ FIELDTYPE *field_type( #undef set_field_userptr int set_field_userptr( - FIELD *field, + FIELD *field, void *usrptr) { return(*(int *)0); } @@ -398,7 +404,7 @@ FORM *_nc_Default_Form; #undef new_form_sp FORM *new_form_sp( - SCREEN *sp, + SCREEN *sp, FIELD **fields) { return(*(FORM **)0); } @@ -414,7 +420,7 @@ int free_form( #undef set_form_fields int set_form_fields( - FORM *form, + FORM *form, FIELD **fields) { return(*(int *)0); } @@ -432,8 +438,8 @@ int field_count( #undef _nc_get_fieldbuffer void _nc_get_fieldbuffer( - FORM *form, - FIELD *field, + FORM *form, + FIELD *field, char *buf) { /* void */ } @@ -454,13 +460,18 @@ int _nc_Synchronize_Attributes( #undef _nc_Synchronize_Options int _nc_Synchronize_Options( - FIELD *field, + FIELD *field, Field_Options newopts) { return(*(int *)0); } +#undef _nc_Unset_Current_Field +void _nc_Unset_Current_Field( + FORM *form) + { /* void */ } + #undef _nc_Set_Current_Field int _nc_Set_Current_Field( - FORM *form, + FORM *form, FIELD *newfield) { return(*(int *)0); } @@ -476,34 +487,34 @@ FIELD *_nc_First_Active_Field( #undef _nc_Set_Form_Page int _nc_Set_Form_Page( - FORM *form, - int page, + FORM *form, + int page, FIELD *field) { return(*(int *)0); } typedef struct { - int keycode; - int (*cmd) (FORM *); + int keycode; + int (*cmd) (FORM *); } Binding_Info; #undef form_driver int form_driver( - FORM *form, + FORM *form, int c) { return(*(int *)0); } #undef set_field_buffer int set_field_buffer( - FIELD *field, - int buffer, + FIELD *field, + int buffer, const char *value) { return(*(int *)0); } #undef field_buffer char *field_buffer( - const FIELD *field, + const FIELD *field, int buffer) { return(*(char **)0); } @@ -511,7 +522,7 @@ char *field_buffer( #undef set_field_init int set_field_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -522,7 +533,7 @@ Form_Hook field_init( #undef set_field_term int set_field_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -533,7 +544,7 @@ Form_Hook field_term( #undef set_form_init int set_form_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -544,7 +555,7 @@ Form_Hook form_init( #undef set_form_term int set_form_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -557,7 +568,7 @@ Form_Hook form_term( #undef set_form_opts int set_form_opts( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -568,13 +579,13 @@ Form_Options form_opts( #undef form_opts_on int form_opts_on( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } #undef form_opts_off int form_opts_off( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -582,7 +593,7 @@ int form_opts_off( #undef set_form_page int set_form_page( - FORM *form, + FORM *form, int page) { return(*(int *)0); } @@ -619,8 +630,8 @@ int form_request_by_name( #undef scale_form int scale_form( - const FORM *form, - int *rows, + const FORM *form, + int *rows, int *cols) { return(*(int *)0); } @@ -628,7 +639,7 @@ int scale_form( #undef set_form_sub int set_form_sub( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -641,7 +652,7 @@ WINDOW *form_sub( #undef set_form_userptr int set_form_userptr( - FORM *form, + FORM *form, void *usrptr) { return(*(int *)0); } @@ -654,7 +665,7 @@ void *form_userptr( #undef set_form_win int set_form_win( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -674,6 +685,10 @@ alnumARG; #undef TYPE_ALNUM FIELDTYPE *TYPE_ALNUM; +#undef _nc_TYPE_ALNUM +FIELDTYPE *_nc_TYPE_ALNUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_alpha.c */ typedef struct @@ -685,6 +700,10 @@ alphaARG; #undef TYPE_ALPHA FIELDTYPE *TYPE_ALPHA; +#undef _nc_TYPE_ALPHA +FIELDTYPE *_nc_TYPE_ALPHA(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_enum.c */ typedef struct @@ -707,11 +726,49 @@ enumParams; #undef TYPE_ENUM FIELDTYPE *TYPE_ENUM; +#undef _nc_TYPE_ENUM +FIELDTYPE *_nc_TYPE_ENUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_generic.c */ -#undef _nc_fty_generic -void _nc_fty_generic(void) - { /* void */ } +#undef _nc_generic_fieldtype +FIELDTYPE *_nc_generic_fieldtype( + NCURSES_BOOL (*const field_check)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const char_check)( + int p1, + FORM *p2, + FIELD *p3, + const void *p4), + NCURSES_BOOL (*const next)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const prev)( + FORM *p1, + FIELD *p2, + const void *p3), + void (*freecallback)( + void *p1)) + { return(*(FIELDTYPE **)0); } + +#undef _nc_set_generic_fieldtype +int _nc_set_generic_fieldtype( + FIELD *field, + FIELDTYPE *ftyp, + int (*argiterator)( + void **p1)) + { return(*(int *)0); } + +#undef _nc_form_cursor +WINDOW *_nc_form_cursor( + const FORM *form, + int *pRow, + int *pCol) + { return(*(WINDOW **)0); } /* ./fty_int.c */ @@ -734,13 +791,20 @@ integerPARM; #undef TYPE_INTEGER FIELDTYPE *TYPE_INTEGER; +#undef _nc_TYPE_INTEGER +FIELDTYPE *_nc_TYPE_INTEGER(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_ipv4.c */ + #undef TYPE_IPV4 FIELDTYPE *TYPE_IPV4; -/* ./fty_num.c */ +#undef _nc_TYPE_IPV4 +FIELDTYPE *_nc_TYPE_IPV4(void) + { return(*(FIELDTYPE **)0); } -#include <locale.h> +/* ./fty_num.c */ typedef struct { @@ -762,9 +826,11 @@ thisPARM; #undef TYPE_NUMERIC FIELDTYPE *TYPE_NUMERIC; -/* ./fty_regex.c */ +#undef _nc_TYPE_NUMERIC +FIELDTYPE *_nc_TYPE_NUMERIC(void) + { return(*(FIELDTYPE **)0); } -#include <regex.h> +/* ./fty_regex.c */ typedef struct { @@ -775,3 +841,7 @@ RegExp_Arg; #undef TYPE_REGEXP FIELDTYPE *TYPE_REGEXP; + +#undef _nc_TYPE_REGEXP +FIELDTYPE *_nc_TYPE_REGEXP(void) + { return(*(FIELDTYPE **)0); } diff --git a/deps/ncurses-5.9/form/llib-lformtw b/deps/ncurses-6.3/form/llib-lformtw similarity index 80% rename from deps/ncurses-5.9/form/llib-lformtw rename to deps/ncurses-6.3/form/llib-lformtw index 1063949..340bf59 100644 --- a/deps/ncurses-5.9/form/llib-lformtw +++ b/deps/ncurses-6.3/form/llib-lformtw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2010-2015,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2010 * + * Author: Thomas E. Dickey 2010-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -64,11 +65,11 @@ Form_Hook _nc_retrace_form_hook( #undef set_fieldtype_arg int set_fieldtype_arg( - FIELDTYPE *typ, + FIELDTYPE *typ, void *(*const make_arg)( - va_list *p1), + va_list *p1), void *(*const copy_arg)( - const void *p1), + const void *p1), void (*const free_arg)( void *p1)) { return(*(int *)0); } @@ -82,7 +83,7 @@ void *field_arg( #undef set_field_fore int set_field_fore( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -93,7 +94,7 @@ chtype field_fore( #undef set_field_back int set_field_back( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -106,10 +107,15 @@ chtype field_back( #undef set_current_field int set_current_field( - FORM *form, + FORM *form, FIELD *field) { return(*(int *)0); } +#undef unfocus_current_field +int unfocus_current_field( + FORM *const form) + { return(*(int *)0); } + #undef current_field FIELD *current_field( const FORM *form) @@ -127,27 +133,27 @@ FIELD *_nc_Default_Field; #undef _nc_Make_Argument TypeArgument *_nc_Make_Argument( - const FIELDTYPE *typ, - va_list *ap, + const FIELDTYPE *typ, + va_list *ap, int *err) { return(*(TypeArgument **)0); } #undef _nc_Copy_Argument TypeArgument *_nc_Copy_Argument( - const FIELDTYPE *typ, - const TypeArgument *argp, + const FIELDTYPE *typ, + const TypeArgument *argp, int *err) { return(*(TypeArgument **)0); } #undef _nc_Free_Argument void _nc_Free_Argument( - const FIELDTYPE *typ, + const FIELDTYPE *typ, TypeArgument *argp) { /* void */ } #undef _nc_Copy_Type NCURSES_BOOL _nc_Copy_Type( - FIELD *dst, + FIELD *dst, FIELD const *src) { return(*(NCURSES_BOOL *)0); } @@ -158,11 +164,11 @@ void _nc_Free_Type( #undef new_field FIELD *new_field( - int rows, - int cols, - int frow, - int fcol, - int nrow, + int rows, + int cols, + int frow, + int fcol, + int nrow, int nbuf) { return(*(FIELD **)0); } @@ -175,8 +181,8 @@ int free_field( #undef dup_field FIELD *dup_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -184,12 +190,12 @@ FIELD *dup_field( #undef set_fieldtype_choice int set_fieldtype_choice( - FIELDTYPE *typ, + FIELDTYPE *typ, NCURSES_BOOL (*const next_choice)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const prev_choice)( - FIELD *p1, + FIELD *p1, const void *p2)) { return(*(int *)0); } @@ -197,7 +203,7 @@ int set_fieldtype_choice( #undef link_fieldtype FIELDTYPE *link_fieldtype( - FIELDTYPE *type1, + FIELDTYPE *type1, FIELDTYPE *type2) { return(*(FIELDTYPE **)0); } @@ -205,20 +211,20 @@ FIELDTYPE *link_fieldtype( #undef field_info int field_info( - const FIELD *field, - int *rows, - int *cols, - int *frow, - int *fcol, - int *nrow, + const FIELD *field, + int *rows, + int *cols, + int *frow, + int *fcol, + int *nrow, int *nbuf) { return(*(int *)0); } #undef dynamic_field_info int dynamic_field_info( - const FIELD *field, - int *drows, - int *dcols, + const FIELD *field, + int *drows, + int *dcols, int *maxgrow) { return(*(int *)0); } @@ -226,7 +232,7 @@ int dynamic_field_info( #undef set_field_just int set_field_just( - FIELD *field, + FIELD *field, int just) { return(*(int *)0); } @@ -239,8 +245,8 @@ int field_just( #undef link_field FIELD *link_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -248,7 +254,7 @@ FIELD *link_field( #undef set_max_field int set_max_field( - FIELD *field, + FIELD *field, int maxgrow) { return(*(int *)0); } @@ -256,8 +262,8 @@ int set_max_field( #undef move_field int move_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(int *)0); } @@ -269,10 +275,10 @@ FIELDTYPE *_nc_Default_FieldType; #undef new_fieldtype FIELDTYPE *new_fieldtype( NCURSES_BOOL (*const field_check)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const char_check)( - int p1, + int p1, const void *p2)) { return(*(FIELDTYPE **)0); } @@ -285,7 +291,7 @@ int free_fieldtype( #undef set_field_opts int set_field_opts( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -296,13 +302,13 @@ Field_Options field_opts( #undef field_opts_on int field_opts_on( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } #undef field_opts_off int field_opts_off( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -310,7 +316,7 @@ int field_opts_off( #undef set_field_pad int set_field_pad( - FIELD *field, + FIELD *field, int ch) { return(*(int *)0); } @@ -323,7 +329,7 @@ int field_pad( #undef set_new_page int set_new_page( - FIELD *field, + FIELD *field, NCURSES_BOOL new_page_flag) { return(*(int *)0); } @@ -336,7 +342,7 @@ NCURSES_BOOL new_page( #undef set_field_status int set_field_status( - FIELD *field, + FIELD *field, NCURSES_BOOL status) { return(*(int *)0); } @@ -349,8 +355,8 @@ NCURSES_BOOL field_status( #undef set_field_type int set_field_type( - FIELD *field, - FIELDTYPE *type, + FIELD *field, + FIELDTYPE *type, ...) { return(*(int *)0); } @@ -363,7 +369,7 @@ FIELDTYPE *field_type( #undef set_field_userptr int set_field_userptr( - FIELD *field, + FIELD *field, void *usrptr) { return(*(int *)0); } @@ -398,7 +404,7 @@ FORM *_nc_Default_Form; #undef new_form_sp FORM *new_form_sp( - SCREEN *sp, + SCREEN *sp, FIELD **fields) { return(*(FORM **)0); } @@ -414,7 +420,7 @@ int free_form( #undef set_form_fields int set_form_fields( - FORM *form, + FORM *form, FIELD **fields) { return(*(int *)0); } @@ -432,8 +438,8 @@ int field_count( #undef _nc_get_fieldbuffer void _nc_get_fieldbuffer( - FORM *form, - FIELD *field, + FORM *form, + FIELD *field, cchar_t *buf) { /* void */ } @@ -454,13 +460,18 @@ int _nc_Synchronize_Attributes( #undef _nc_Synchronize_Options int _nc_Synchronize_Options( - FIELD *field, + FIELD *field, Field_Options newopts) { return(*(int *)0); } +#undef _nc_Unset_Current_Field +void _nc_Unset_Current_Field( + FORM *form) + { /* void */ } + #undef _nc_Set_Current_Field int _nc_Set_Current_Field( - FORM *form, + FORM *form, FIELD *newfield) { return(*(int *)0); } @@ -476,40 +487,47 @@ FIELD *_nc_First_Active_Field( #undef _nc_Set_Form_Page int _nc_Set_Form_Page( - FORM *form, - int page, + FORM *form, + int page, FIELD *field) { return(*(int *)0); } typedef struct { - int keycode; - int (*cmd) (FORM *); + int keycode; + int (*cmd) (FORM *); } Binding_Info; #undef form_driver int form_driver( - FORM *form, + FORM *form, int c) { return(*(int *)0); } +#undef form_driver_w +int form_driver_w( + FORM *form, + int type, + wchar_t c) + { return(*(int *)0); } + #undef set_field_buffer int set_field_buffer( - FIELD *field, - int buffer, + FIELD *field, + int buffer, const char *value) { return(*(int *)0); } #undef field_buffer char *field_buffer( - const FIELD *field, + const FIELD *field, int buffer) { return(*(char **)0); } #undef _nc_Widen_String wchar_t *_nc_Widen_String( - char *source, + char *source, int *lengthp) { return(*(wchar_t **)0); } @@ -517,7 +535,7 @@ wchar_t *_nc_Widen_String( #undef set_field_init int set_field_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -528,7 +546,7 @@ Form_Hook field_init( #undef set_field_term int set_field_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -539,7 +557,7 @@ Form_Hook field_term( #undef set_form_init int set_form_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -550,7 +568,7 @@ Form_Hook form_init( #undef set_form_term int set_form_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -563,7 +581,7 @@ Form_Hook form_term( #undef set_form_opts int set_form_opts( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -574,13 +592,13 @@ Form_Options form_opts( #undef form_opts_on int form_opts_on( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } #undef form_opts_off int form_opts_off( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -588,7 +606,7 @@ int form_opts_off( #undef set_form_page int set_form_page( - FORM *form, + FORM *form, int page) { return(*(int *)0); } @@ -625,8 +643,8 @@ int form_request_by_name( #undef scale_form int scale_form( - const FORM *form, - int *rows, + const FORM *form, + int *rows, int *cols) { return(*(int *)0); } @@ -634,7 +652,7 @@ int scale_form( #undef set_form_sub int set_form_sub( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -647,7 +665,7 @@ WINDOW *form_sub( #undef set_form_userptr int set_form_userptr( - FORM *form, + FORM *form, void *usrptr) { return(*(int *)0); } @@ -660,7 +678,7 @@ void *form_userptr( #undef set_form_win int set_form_win( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -680,6 +698,10 @@ alnumARG; #undef TYPE_ALNUM FIELDTYPE *TYPE_ALNUM; +#undef _nc_TYPE_ALNUM +FIELDTYPE *_nc_TYPE_ALNUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_alpha.c */ typedef struct @@ -691,6 +713,10 @@ alphaARG; #undef TYPE_ALPHA FIELDTYPE *TYPE_ALPHA; +#undef _nc_TYPE_ALPHA +FIELDTYPE *_nc_TYPE_ALPHA(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_enum.c */ typedef struct @@ -713,11 +739,49 @@ enumParams; #undef TYPE_ENUM FIELDTYPE *TYPE_ENUM; +#undef _nc_TYPE_ENUM +FIELDTYPE *_nc_TYPE_ENUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_generic.c */ -#undef _nc_fty_generic -void _nc_fty_generic(void) - { /* void */ } +#undef _nc_generic_fieldtype +FIELDTYPE *_nc_generic_fieldtype( + NCURSES_BOOL (*const field_check)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const char_check)( + int p1, + FORM *p2, + FIELD *p3, + const void *p4), + NCURSES_BOOL (*const next)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const prev)( + FORM *p1, + FIELD *p2, + const void *p3), + void (*freecallback)( + void *p1)) + { return(*(FIELDTYPE **)0); } + +#undef _nc_set_generic_fieldtype +int _nc_set_generic_fieldtype( + FIELD *field, + FIELDTYPE *ftyp, + int (*argiterator)( + void **p1)) + { return(*(int *)0); } + +#undef _nc_form_cursor +WINDOW *_nc_form_cursor( + const FORM *form, + int *pRow, + int *pCol) + { return(*(WINDOW **)0); } /* ./fty_int.c */ @@ -740,13 +804,20 @@ integerPARM; #undef TYPE_INTEGER FIELDTYPE *TYPE_INTEGER; +#undef _nc_TYPE_INTEGER +FIELDTYPE *_nc_TYPE_INTEGER(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_ipv4.c */ + #undef TYPE_IPV4 FIELDTYPE *TYPE_IPV4; -/* ./fty_num.c */ +#undef _nc_TYPE_IPV4 +FIELDTYPE *_nc_TYPE_IPV4(void) + { return(*(FIELDTYPE **)0); } -#include <locale.h> +/* ./fty_num.c */ typedef struct { @@ -768,9 +839,11 @@ thisPARM; #undef TYPE_NUMERIC FIELDTYPE *TYPE_NUMERIC; -/* ./fty_regex.c */ +#undef _nc_TYPE_NUMERIC +FIELDTYPE *_nc_TYPE_NUMERIC(void) + { return(*(FIELDTYPE **)0); } -#include <regex.h> +/* ./fty_regex.c */ typedef struct { @@ -781,3 +854,7 @@ RegExp_Arg; #undef TYPE_REGEXP FIELDTYPE *TYPE_REGEXP; + +#undef _nc_TYPE_REGEXP +FIELDTYPE *_nc_TYPE_REGEXP(void) + { return(*(FIELDTYPE **)0); } diff --git a/deps/ncurses-5.9/form/llib-lformw b/deps/ncurses-6.3/form/llib-lformw similarity index 80% rename from deps/ncurses-5.9/form/llib-lformw rename to deps/ncurses-6.3/form/llib-lformw index 30c24b5..199e26c 100644 --- a/deps/ncurses-5.9/form/llib-lformw +++ b/deps/ncurses-6.3/form/llib-lformw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2002-2015,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2002-2005,2010 * + * Author: Thomas E. Dickey 2002-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -64,11 +65,11 @@ Form_Hook _nc_retrace_form_hook( #undef set_fieldtype_arg int set_fieldtype_arg( - FIELDTYPE *typ, + FIELDTYPE *typ, void *(*const make_arg)( - va_list *p1), + va_list *p1), void *(*const copy_arg)( - const void *p1), + const void *p1), void (*const free_arg)( void *p1)) { return(*(int *)0); } @@ -82,7 +83,7 @@ void *field_arg( #undef set_field_fore int set_field_fore( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -93,7 +94,7 @@ chtype field_fore( #undef set_field_back int set_field_back( - FIELD *field, + FIELD *field, chtype attr) { return(*(int *)0); } @@ -106,10 +107,15 @@ chtype field_back( #undef set_current_field int set_current_field( - FORM *form, + FORM *form, FIELD *field) { return(*(int *)0); } +#undef unfocus_current_field +int unfocus_current_field( + FORM *const form) + { return(*(int *)0); } + #undef current_field FIELD *current_field( const FORM *form) @@ -127,27 +133,27 @@ FIELD *_nc_Default_Field; #undef _nc_Make_Argument TypeArgument *_nc_Make_Argument( - const FIELDTYPE *typ, - va_list *ap, + const FIELDTYPE *typ, + va_list *ap, int *err) { return(*(TypeArgument **)0); } #undef _nc_Copy_Argument TypeArgument *_nc_Copy_Argument( - const FIELDTYPE *typ, - const TypeArgument *argp, + const FIELDTYPE *typ, + const TypeArgument *argp, int *err) { return(*(TypeArgument **)0); } #undef _nc_Free_Argument void _nc_Free_Argument( - const FIELDTYPE *typ, + const FIELDTYPE *typ, TypeArgument *argp) { /* void */ } #undef _nc_Copy_Type NCURSES_BOOL _nc_Copy_Type( - FIELD *dst, + FIELD *dst, FIELD const *src) { return(*(NCURSES_BOOL *)0); } @@ -158,11 +164,11 @@ void _nc_Free_Type( #undef new_field FIELD *new_field( - int rows, - int cols, - int frow, - int fcol, - int nrow, + int rows, + int cols, + int frow, + int fcol, + int nrow, int nbuf) { return(*(FIELD **)0); } @@ -175,8 +181,8 @@ int free_field( #undef dup_field FIELD *dup_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -184,12 +190,12 @@ FIELD *dup_field( #undef set_fieldtype_choice int set_fieldtype_choice( - FIELDTYPE *typ, + FIELDTYPE *typ, NCURSES_BOOL (*const next_choice)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const prev_choice)( - FIELD *p1, + FIELD *p1, const void *p2)) { return(*(int *)0); } @@ -197,7 +203,7 @@ int set_fieldtype_choice( #undef link_fieldtype FIELDTYPE *link_fieldtype( - FIELDTYPE *type1, + FIELDTYPE *type1, FIELDTYPE *type2) { return(*(FIELDTYPE **)0); } @@ -205,20 +211,20 @@ FIELDTYPE *link_fieldtype( #undef field_info int field_info( - const FIELD *field, - int *rows, - int *cols, - int *frow, - int *fcol, - int *nrow, + const FIELD *field, + int *rows, + int *cols, + int *frow, + int *fcol, + int *nrow, int *nbuf) { return(*(int *)0); } #undef dynamic_field_info int dynamic_field_info( - const FIELD *field, - int *drows, - int *dcols, + const FIELD *field, + int *drows, + int *dcols, int *maxgrow) { return(*(int *)0); } @@ -226,7 +232,7 @@ int dynamic_field_info( #undef set_field_just int set_field_just( - FIELD *field, + FIELD *field, int just) { return(*(int *)0); } @@ -239,8 +245,8 @@ int field_just( #undef link_field FIELD *link_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(FIELD **)0); } @@ -248,7 +254,7 @@ FIELD *link_field( #undef set_max_field int set_max_field( - FIELD *field, + FIELD *field, int maxgrow) { return(*(int *)0); } @@ -256,8 +262,8 @@ int set_max_field( #undef move_field int move_field( - FIELD *field, - int frow, + FIELD *field, + int frow, int fcol) { return(*(int *)0); } @@ -269,10 +275,10 @@ FIELDTYPE *_nc_Default_FieldType; #undef new_fieldtype FIELDTYPE *new_fieldtype( NCURSES_BOOL (*const field_check)( - FIELD *p1, - const void *p2), + FIELD *p1, + const void *p2), NCURSES_BOOL (*const char_check)( - int p1, + int p1, const void *p2)) { return(*(FIELDTYPE **)0); } @@ -285,7 +291,7 @@ int free_fieldtype( #undef set_field_opts int set_field_opts( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -296,13 +302,13 @@ Field_Options field_opts( #undef field_opts_on int field_opts_on( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } #undef field_opts_off int field_opts_off( - FIELD *field, + FIELD *field, Field_Options opts) { return(*(int *)0); } @@ -310,7 +316,7 @@ int field_opts_off( #undef set_field_pad int set_field_pad( - FIELD *field, + FIELD *field, int ch) { return(*(int *)0); } @@ -323,7 +329,7 @@ int field_pad( #undef set_new_page int set_new_page( - FIELD *field, + FIELD *field, NCURSES_BOOL new_page_flag) { return(*(int *)0); } @@ -336,7 +342,7 @@ NCURSES_BOOL new_page( #undef set_field_status int set_field_status( - FIELD *field, + FIELD *field, NCURSES_BOOL status) { return(*(int *)0); } @@ -349,8 +355,8 @@ NCURSES_BOOL field_status( #undef set_field_type int set_field_type( - FIELD *field, - FIELDTYPE *type, + FIELD *field, + FIELDTYPE *type, ...) { return(*(int *)0); } @@ -363,7 +369,7 @@ FIELDTYPE *field_type( #undef set_field_userptr int set_field_userptr( - FIELD *field, + FIELD *field, void *usrptr) { return(*(int *)0); } @@ -398,7 +404,7 @@ FORM *_nc_Default_Form; #undef new_form_sp FORM *new_form_sp( - SCREEN *sp, + SCREEN *sp, FIELD **fields) { return(*(FORM **)0); } @@ -414,7 +420,7 @@ int free_form( #undef set_form_fields int set_form_fields( - FORM *form, + FORM *form, FIELD **fields) { return(*(int *)0); } @@ -432,8 +438,8 @@ int field_count( #undef _nc_get_fieldbuffer void _nc_get_fieldbuffer( - FORM *form, - FIELD *field, + FORM *form, + FIELD *field, cchar_t *buf) { /* void */ } @@ -454,13 +460,18 @@ int _nc_Synchronize_Attributes( #undef _nc_Synchronize_Options int _nc_Synchronize_Options( - FIELD *field, + FIELD *field, Field_Options newopts) { return(*(int *)0); } +#undef _nc_Unset_Current_Field +void _nc_Unset_Current_Field( + FORM *form) + { /* void */ } + #undef _nc_Set_Current_Field int _nc_Set_Current_Field( - FORM *form, + FORM *form, FIELD *newfield) { return(*(int *)0); } @@ -476,40 +487,47 @@ FIELD *_nc_First_Active_Field( #undef _nc_Set_Form_Page int _nc_Set_Form_Page( - FORM *form, - int page, + FORM *form, + int page, FIELD *field) { return(*(int *)0); } typedef struct { - int keycode; - int (*cmd) (FORM *); + int keycode; + int (*cmd) (FORM *); } Binding_Info; #undef form_driver int form_driver( - FORM *form, + FORM *form, int c) { return(*(int *)0); } +#undef form_driver_w +int form_driver_w( + FORM *form, + int type, + wchar_t c) + { return(*(int *)0); } + #undef set_field_buffer int set_field_buffer( - FIELD *field, - int buffer, + FIELD *field, + int buffer, const char *value) { return(*(int *)0); } #undef field_buffer char *field_buffer( - const FIELD *field, + const FIELD *field, int buffer) { return(*(char **)0); } #undef _nc_Widen_String wchar_t *_nc_Widen_String( - char *source, + char *source, int *lengthp) { return(*(wchar_t **)0); } @@ -517,7 +535,7 @@ wchar_t *_nc_Widen_String( #undef set_field_init int set_field_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -528,7 +546,7 @@ Form_Hook field_init( #undef set_field_term int set_field_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -539,7 +557,7 @@ Form_Hook field_term( #undef set_form_init int set_form_init( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -550,7 +568,7 @@ Form_Hook form_init( #undef set_form_term int set_form_term( - FORM *form, + FORM *form, Form_Hook func) { return(*(int *)0); } @@ -563,7 +581,7 @@ Form_Hook form_term( #undef set_form_opts int set_form_opts( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -574,13 +592,13 @@ Form_Options form_opts( #undef form_opts_on int form_opts_on( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } #undef form_opts_off int form_opts_off( - FORM *form, + FORM *form, Form_Options opts) { return(*(int *)0); } @@ -588,7 +606,7 @@ int form_opts_off( #undef set_form_page int set_form_page( - FORM *form, + FORM *form, int page) { return(*(int *)0); } @@ -625,8 +643,8 @@ int form_request_by_name( #undef scale_form int scale_form( - const FORM *form, - int *rows, + const FORM *form, + int *rows, int *cols) { return(*(int *)0); } @@ -634,7 +652,7 @@ int scale_form( #undef set_form_sub int set_form_sub( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -647,7 +665,7 @@ WINDOW *form_sub( #undef set_form_userptr int set_form_userptr( - FORM *form, + FORM *form, void *usrptr) { return(*(int *)0); } @@ -660,7 +678,7 @@ void *form_userptr( #undef set_form_win int set_form_win( - FORM *form, + FORM *form, WINDOW *win) { return(*(int *)0); } @@ -680,6 +698,10 @@ alnumARG; #undef TYPE_ALNUM FIELDTYPE *TYPE_ALNUM; +#undef _nc_TYPE_ALNUM +FIELDTYPE *_nc_TYPE_ALNUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_alpha.c */ typedef struct @@ -691,6 +713,10 @@ alphaARG; #undef TYPE_ALPHA FIELDTYPE *TYPE_ALPHA; +#undef _nc_TYPE_ALPHA +FIELDTYPE *_nc_TYPE_ALPHA(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_enum.c */ typedef struct @@ -713,11 +739,49 @@ enumParams; #undef TYPE_ENUM FIELDTYPE *TYPE_ENUM; +#undef _nc_TYPE_ENUM +FIELDTYPE *_nc_TYPE_ENUM(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_generic.c */ -#undef _nc_fty_generic -void _nc_fty_generic(void) - { /* void */ } +#undef _nc_generic_fieldtype +FIELDTYPE *_nc_generic_fieldtype( + NCURSES_BOOL (*const field_check)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const char_check)( + int p1, + FORM *p2, + FIELD *p3, + const void *p4), + NCURSES_BOOL (*const next)( + FORM *p1, + FIELD *p2, + const void *p3), + NCURSES_BOOL (*const prev)( + FORM *p1, + FIELD *p2, + const void *p3), + void (*freecallback)( + void *p1)) + { return(*(FIELDTYPE **)0); } + +#undef _nc_set_generic_fieldtype +int _nc_set_generic_fieldtype( + FIELD *field, + FIELDTYPE *ftyp, + int (*argiterator)( + void **p1)) + { return(*(int *)0); } + +#undef _nc_form_cursor +WINDOW *_nc_form_cursor( + const FORM *form, + int *pRow, + int *pCol) + { return(*(WINDOW **)0); } /* ./fty_int.c */ @@ -740,13 +804,20 @@ integerPARM; #undef TYPE_INTEGER FIELDTYPE *TYPE_INTEGER; +#undef _nc_TYPE_INTEGER +FIELDTYPE *_nc_TYPE_INTEGER(void) + { return(*(FIELDTYPE **)0); } + /* ./fty_ipv4.c */ + #undef TYPE_IPV4 FIELDTYPE *TYPE_IPV4; -/* ./fty_num.c */ +#undef _nc_TYPE_IPV4 +FIELDTYPE *_nc_TYPE_IPV4(void) + { return(*(FIELDTYPE **)0); } -#include <locale.h> +/* ./fty_num.c */ typedef struct { @@ -768,9 +839,11 @@ thisPARM; #undef TYPE_NUMERIC FIELDTYPE *TYPE_NUMERIC; -/* ./fty_regex.c */ +#undef _nc_TYPE_NUMERIC +FIELDTYPE *_nc_TYPE_NUMERIC(void) + { return(*(FIELDTYPE **)0); } -#include <regex.h> +/* ./fty_regex.c */ typedef struct { @@ -781,3 +854,7 @@ RegExp_Arg; #undef TYPE_REGEXP FIELDTYPE *TYPE_REGEXP; + +#undef _nc_TYPE_REGEXP +FIELDTYPE *_nc_TYPE_REGEXP(void) + { return(*(FIELDTYPE **)0); } diff --git a/deps/ncurses-6.3/form/modules b/deps/ncurses-6.3/form/modules new file mode 100644 index 0000000..47a3ddf --- /dev/null +++ b/deps/ncurses-6.3/form/modules @@ -0,0 +1,79 @@ +# $Id: modules,v 1.18 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2008,2010 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: Thomas E. Dickey 1995-on +# and: Juergen Pfeifer 2008 +# + +@ base +# Library objects +f_trace lib $(srcdir) $(HEADER_DEPS) +fld_arg lib $(srcdir) $(HEADER_DEPS) +fld_attr lib $(srcdir) $(HEADER_DEPS) +fld_current lib $(srcdir) $(HEADER_DEPS) +fld_def lib $(srcdir) $(HEADER_DEPS) +fld_dup lib $(srcdir) $(HEADER_DEPS) +fld_ftchoice lib $(srcdir) $(HEADER_DEPS) +fld_ftlink lib $(srcdir) $(HEADER_DEPS) +fld_info lib $(srcdir) $(HEADER_DEPS) +fld_just lib $(srcdir) $(HEADER_DEPS) +fld_link lib $(srcdir) $(HEADER_DEPS) +fld_max lib $(srcdir) $(HEADER_DEPS) +fld_move lib $(srcdir) $(HEADER_DEPS) +fld_newftyp lib $(srcdir) $(HEADER_DEPS) +fld_opts lib $(srcdir) $(HEADER_DEPS) +fld_pad lib $(srcdir) $(HEADER_DEPS) +fld_page lib $(srcdir) $(HEADER_DEPS) +fld_stat lib $(srcdir) $(HEADER_DEPS) +fld_type lib $(srcdir) $(HEADER_DEPS) +fld_user lib $(srcdir) $(HEADER_DEPS) +frm_cursor lib $(srcdir) $(HEADER_DEPS) +frm_data lib $(srcdir) $(HEADER_DEPS) +frm_def lib $(srcdir) $(HEADER_DEPS) +frm_driver lib $(srcdir) $(HEADER_DEPS) +frm_hook lib $(srcdir) $(HEADER_DEPS) +frm_opts lib $(srcdir) $(HEADER_DEPS) +frm_page lib $(srcdir) $(HEADER_DEPS) +frm_post lib $(srcdir) $(HEADER_DEPS) +frm_req_name lib $(srcdir) $(HEADER_DEPS) +frm_scale lib $(srcdir) $(HEADER_DEPS) +frm_sub lib $(srcdir) $(HEADER_DEPS) +frm_user lib $(srcdir) $(HEADER_DEPS) +frm_win lib $(srcdir) $(HEADER_DEPS) +fty_alnum lib $(srcdir) $(HEADER_DEPS) +fty_alpha lib $(srcdir) $(HEADER_DEPS) +fty_enum lib $(srcdir) $(HEADER_DEPS) +fty_generic lib $(srcdir) $(HEADER_DEPS) +fty_int lib $(srcdir) $(HEADER_DEPS) +fty_ipv4 lib $(srcdir) $(HEADER_DEPS) +fty_num lib $(srcdir) $(HEADER_DEPS) +fty_regex lib $(srcdir) $(HEADER_DEPS) + +# vile:makemode diff --git a/deps/ncurses-5.9/include/Caps b/deps/ncurses-6.3/include/Caps similarity index 78% rename from deps/ncurses-5.9/include/Caps rename to deps/ncurses-6.3/include/Caps index f9a8ebd..7bc00ea 100644 --- a/deps/ncurses-5.9/include/Caps +++ b/deps/ncurses-6.3/include/Caps @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,2016 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"), # @@ -29,12 +30,12 @@ # Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 # and: Eric S. Raymond <esr@snark.thyrsus.com> # -# $Id: Caps,v 1.37 2010/12/04 18:47:13 tom Exp $ +# $Id: Caps,v 1.48 2021/10/08 07:55:48 tom Exp $ # # This is the master termcap/terminfo capability table. # # This table is used to generate initializers for tables that drive tic, -# infocmp, and the library compilation code used to support the termcap +# infocmp, and the library compilation code used to support the termcap # compatibility hack. It is also used to generate the tabular portion of the # terminfo(5) man page; lines beginning with `#%' are passed through to become # the terminfo table. @@ -57,7 +58,7 @@ # # The codes following [Y-] in column 7 describe the versions of termcap which # use the given capability. This information is not used by the curses library -# proper; rather, it's there to help the terminfo maintainer avoid emitting +# proper; rather, it is there to help the terminfo maintainer avoid emitting # termcap entry translations that are more than 1023 bytes long (and tank a # lot of old termcap-using programs). The codes read as follows: # B = mentioned in the BSD man page for 4.4BSD curses @@ -97,8 +98,8 @@ # 3. List it in the standard table. You almost certainly do *not* want # to do this -- the capabilities in that one, and their order, have been # carefully chosen to be SVr4-binary-compatible when they're written out -# as a terminfo object, and breaking this would be bad. It's up the ncurses -# library what to do with the terminfo data after it's read in. +# as a terminfo object, and breaking this would be bad. It is up to the ncurses +# library what to do with the terminfo data after it is read in. # # 4. List it in the aliases table with an IGNORE target field. If you # do this, the capability will be ignored on input (though the user will @@ -107,7 +108,7 @@ # 5. List it in the extensions table. If you do this, the compiler will # silently accept the capability, but the curses library proper will never # see it (because it won't be written out as part of the terminfo object -# format). It's up to you what you have the compiler do with it. +# format). It is up to you what you have the compiler do with it. # # There are two opposite reasons to choose option 5. One is when you want # to eat the capability silently and discard it when doing translations @@ -119,14 +120,14 @@ # You'll need to write custom code, probably in postprocess_termcap() or # postprocess_terminfo(), to handle the translation. # -# CONTROLLING ENTRY LENGTH +# CONTROLLING ENTRY LENGTH # # Notes on specific elisions made to fit translations within 1023 bytes: # # Machines with IBM PC-like keyboards want to be able to define the following # keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap- # only environments for End or Home-Down), key_dc, and key_ic. This is also -# the set of keys the `joe' editor will be upset if it can't see. So don't +# the set of keys the `joe' editor will be upset if it can't see. So don't # trim those out of the set to be translated to termcap, or various users of # the termcap file will become irate. # @@ -147,7 +148,7 @@ # # It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap # translations go back over critical if we do this. As 4.4BSD curses fades -# into history and GNU termcap's application base shrinks towards being GNU +# into history and GNU termcap's application base shrinks towards being GNU # Emacs only, we'll probably elide out some BSD-only capabilities in order # to buy space for non-essentials Emacs is still using. Capabilities high # on that hit list: rc, sc, uc. @@ -166,7 +167,7 @@ #%The \fBcapname\fR is the short name used in the text of the database, #%and is used by a person updating the database. #%Whenever possible, capnames are chosen to be the same as or similar to -#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses +#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses #%identical or very similar names). Semantics are also intended to match #%those of the specification. #% @@ -188,8 +189,12 @@ #%indicates that padding may be specified #%.TP #%#[1-9] -#%in the description field indicates that the string is passed through tparm with -#%parms as given (#\fIi\fP). +#%in the description field indicates that the string is passed +#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP). +#%.IP +#%If no parameters are listed in the description, +#%passing the string through \fBtparm\fP(3X) may give unexpected results, +#%e.g., if it contains percent (%%) signs. #%.TP #%(P*) #%indicates that padding may vary in proportion to the number of @@ -227,7 +232,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode over_strike os bool os - - YBCG- terminal can overstrike status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061) -tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine) +tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine) transparent_underline ul bool ul - - YBCGE underline character overstrikes xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required @@ -271,7 +276,7 @@ num_labels nlab num Nl - - ----- number of labels on screen 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 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 @@ -596,7 +601,7 @@ key_f62 kf62 str Fq KEY_F(62) - ----E F62 function key key_f63 kf63 str Fr KEY_F(63) - ----E F63 function key clr_bol el1 str cb - - ----- Clear to beginning of line clear_margins mgc str MC - - ----- clear right and left soft margins -set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap). +set_left_margin smgl str ML - - ----- set left soft margin at current column. (ML is not in BSD termcap). set_right_margin smgr str MR - - ----- set right soft margin at current column label_format fln str Lf - - ----- label format set_clock sclk str SC - - ----- set clock, #1 hrs #2 mins #3 secs @@ -719,7 +724,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times bit_image_newline binel str Zz - - ----- Move to next row of the bit image bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row color_names colornm str Yw - - ----- Give name for color #1 -define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region +define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region end_bit_image_region endbi str Yy - - ----- End a bit-image region set_color_band setcolor str Yz - - ----- Change to ribbon color #1 set_page_length slines str YZ - - ----- Set page length to #1 lines @@ -738,11 +743,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%.ad #% #%.in .8i -#%The XSI Curses standard added these. They are some post-4.1 -#%versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x. -#%The \fBncurses\fR termcap names for them are invented; according to the -#%XSI Curses standard, they have no termcap names. If your compiled terminfo -#%entries use these, they may not be binary-compatible with System V terminfo +#%The XSI Curses standard added these hardcopy capabilities. +#%They were used in some post-4.1 versions of System V curses, +#%e.g., Solaris 2.5 and IRIX 6.x. +#%Except for \fBYI\fP, the \fBncurses\fR termcap names for them are invented. +#%According to the XSI Curses standard, they have no termcap names. +#%If your compiled terminfo entries use these, +#%they may not be binary-compatible with System V terminfo #%entries after SVr4.1; beware! #% #%.na @@ -760,7 +767,7 @@ enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6 -set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch +set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap). #%.TE #%.ad # @@ -824,7 +831,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # GNU termcap *does* include the following extended capability, Only the # now-obsolete Ann Arbor terminals used it. # -# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region +# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region # # The following comments describe capnames so ancient that I believe no # software uses them any longer. Some of these have to go because they @@ -841,9 +848,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # comma-separated list of capabilities for which there are corresponding keys. # The `kn' code is accepted but ignored. # -# The `ma' capability seems to have been designed to map between the rogue(2) -# motion keys (including jkhl) and characters emitted by arrow keys on some -# primitive pre-ANSI terminals. It's so obsolete it's fossilized... +# The `ma' capability was a 4.0BSD feature used by vi version 2. +# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. +# Besides being obsolete, that interpretation conflicts with max_attributes. # # Here is a description of memory_lock_above and memory_unlock: # "You can 'freeze' data on the screen by turning on Memory Lock in a line of @@ -869,14 +876,14 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V number_of_function_keys OTkn num kn - - -B-G- count of function keys other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps -arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys +arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I return_does_clr_eol OTxr bool xr - - YB--- return clears the line # tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch # -# mytinfo described this as a termcap capability, but it's not listed in the +# mytinfo described this as a termcap capability, but it is not listed in the # 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses # package, like System V, behaves as though it is always true. # @@ -885,7 +892,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # University of Waterloo termcap extensions (as described in mytinfo). # The `xl' termcap file clashes with a terminfo name; this ambiguity cannot # be resolved by a type check. The descriptions are guesses from what was -# in the mytinfo tables. +# in the mytinfo tables. # # key_interrupt_char OTki str ki - - ----- string set by interrupt key (?) # key_kill_char OTkk str kk - - ----- string set by kill key (?) @@ -934,7 +941,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # Gv 186 \272 M-: double vertical line # # The compiler will translate the single-line caps and discard the others -# (via IGNORE aliases further down). We don't want to do normal pad +# (via IGNORE aliases further down). We don't want to do normal pad # translation on these, they're often single-character printable ASCII # strings that happen to be numerics. There's awk code in parametrized.sh # that detects the acs_ prefix and uses it to suppress pad translation. @@ -956,303 +963,9 @@ acs_plus OTGC str GC - - ----- single intersection # # TERMINFO EXTENSION CAPABILITIES # -# This section is almost all comments. What it's mainly for is to describe -# what capabilities need to be squeezed out to get down to the XSI Curses -# standard set. They are flagged with K. -# -# HP extensions -# -# These extensions follow ptr_non (replacing everything after it) in HP -# terminfo files. Except for memory_lock and memory_unlock, they are -# functionally identical to SVr4 extensions, but they make the binary format -# different. Grrr.... +# (see Caps-ncurses for the complete set of comments) # memory_lock meml str ml - - ----K lock memory above cursor memory_unlock memu str mu - - ----K unlock memory -#plab_norm pln str pn - - ----- program label #1 to show string #2 -#label_on smln str LO - - ----- turn on soft labels -#label_off rmln str LF - - ----- turn off soft labels -#key_f11 kf11 str F1 - - ----- F11 function key -#key_f12 kf12 str F2 - - ----- F12 function key -#key_f13 kf13 str F3 - - ----- F13 function key -#key_f14 kf14 str F4 - - ----- F14 function key -#key_f15 kf15 str F5 - - ----- F15 function key -#key_f16 kf16 str F6 - - ----- F16 function key -#key_f17 kf17 str F7 - - ----- F17 function key -#key_f18 kf18 str F8 - - ----- F18 function key -#key_f19 kf19 str F9 - - ----- F19 function key -#key_f20 kf20 str FA - - ----- F20 function key -#key_f21 kf21 str FB - - ----- F21 function key -#key_f22 kf22 str FC - - ----- F22 function key -#key_f23 kf23 str FD - - ----- F23 function key -#key_f24 kf24 str FE - - ----- F24 function key -#key_f25 kf25 str FF - - ----- F25 function key -#key_f26 kf26 str FG - - ----- F26 function key -#key_f27 kf27 str FH - - ----- F27 function key -#key_f28 kf28 str FI - - ----- F28 function key -#key_f29 kf29 str FJ - - ----- F29 function key -#key_f30 kf30 str FK - - ----- F30 function key -#key_f31 kf31 str FL - - ----- F31 function key -#key_f32 kf32 str FM - - ----- F32 function key -#key_f33 kf33 str FN - - ----- F33 function key -#key_f34 kf34 str FO - - ----- F34 function key -#key_f35 kf35 str FP - - ----- F35 function key -#key_f36 kf36 str FQ - - ----- F36 function key -#key_f37 kf37 str FR - - ----- F37 function key -#key_f38 kf38 str FS - - ----- F38 function key -#key_f39 kf39 str FT - - ----- F39 function key -#key_f40 kf40 str FU - - ----- F40 function key -#key_f41 kf41 str FV - - ----- F41 function key -#key_f42 kf42 str FW - - ----- F42 function key -#key_f43 kf43 str FX - - ----- F43 function key -#key_f44 kf44 str FY - - ----- F44 function key -#key_f45 kf45 str FZ - - ----- F45 function key -#key_f46 kf46 str Fa - - ----- F46 function key -#key_f47 kf47 str Fb - - ----- F47 function key -#key_f48 kf48 str Fc - - ----- F48 function key -#key_f49 kf49 str Fd - - ----- F49 function key -#key_f50 kf50 str Fe - - ----- F50 function key -#key_f51 kf51 str Ff - - ----- F51 function key -#key_f52 kf52 str Fg - - ----- F52 function key -#key_f53 kf53 str Fh - - ----- F53 function key -#key_f54 kf54 str Fi - - ----- F54 function key -#key_f55 kf55 str Fj - - ----- F55 function key -#key_f56 kf56 str Fk - - ----- F56 function key -#key_f57 kf57 str Fl - - ----- F57 function key -#key_f58 kf58 str Fm - - ----- F58 function key -#key_f59 kf59 str Fn - - ----- F59 function key -#key_f60 kf60 str Fo - - ----- F60 function key -#key_f61 kf61 str Fp - - ----- F61 function key -#key_f62 kf62 str Fq - - ----- F62 function key -#key_f63 kf63 str Fr - - ----- F63 function key -# -# IBM extensions -# -# These extensions follow ptr_non (replacing everything after it) in IBM -# terminfo files. -# -# The places in the box[12] capabilities correspond to acsc characters, here is -# the mapping: -# -# box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE -# box1[2] = ACS_URCORNER -# box1[3] = ACS_VLINE -# box1[4] = ACS_LRCORNER -# box1[5] = ACS_LLCORNER -# box1[6] = ACS_TTEE -# box1[7] = ACS_RTEE -# box1[8] = ACS_BTEE -# box1[9] = ACS_LTEE -# box1[10] = ACS_PLUS -# -# The box2 characters are the double-line versions of these forms graphics. -# box_chars_1 box1 str bx - - ----K box characters primary set -#box_chars_2 box2 str by - - ----K box characters secondary set -#box_attr_1 batt1 str Bx - - ----K attributes for box1 -#box_attr_2 batt2 str By - - ----K attributes for box2 -#color_bg_0 colb0 str d0 - - ----K background color 0 -#color_bg_1 colb1 str d1 - - ----K background color 1 -#color_bg_2 colb2 str d2 - - ----K background color 2 -#color_bg_3 colb3 str d3 - - ----K background color 3 -#color_bg_4 colb4 str d4 - - ----K background color 4 -#color_bg_5 colb5 str d5 - - ----K background color 5 -#color_bg_6 colb6 str d6 - - ----K background color 6 -#color_bg_7 colb7 str d7 - - ----K background color 7 -#color_fg_0 colf0 str c0 - - ----K foreground color 0 -#color_fg_1 colf1 str c1 - - ----K foreground color 1 -#color_fg_2 colf2 str c2 - - ----K foreground color 2 -#color_fg_3 colf3 str c3 - - ----K foreground color 3 -#color_fg_4 colf4 str c4 - - ----K foreground color 4 -#color_fg_5 colf5 str c5 - - ----K foreground color 5 -#color_fg_6 colf6 str c6 - - ----K foreground color 6 -#color_fg_7 colf7 str c7 - - ----K foreground color 7 -#font_0 font0 str f0 - - ----- select font 0 -#font_1 font1 str f1 - - ----- select font 1 -#font_2 font2 str f2 - - ----- select font 2 -#font_3 font3 str f3 - - ----- select font 3 -#font_4 font4 str f4 - - ----K select font 4 -#font_5 font5 str f5 - - ----K select font 5 -#font_6 font6 str f6 - - ----K select font 6 -#font_7 font7 str f7 - - ----K select font 7 -#key_back_tab kbtab str k0 - - ----- backtab key -#key_do kdo str ki - - ----K do request key -#key_command kcmd str kd - - ----K command-request key -#key_command_pane kcpn str kW - - ----K command-pane key -#key_end kend str kw - - ----- end key -#key_help khlp str kq - - ----- help key -#key_newline knl str nl - - ----K newline key -#key_next_pane knpn str kv - - ----K next-pane key -#key_prev_cmd kppn str kp - - ----K previous-command key -#key_prev_pane kppn str kV - - ----K previous-pane key -#key_quit kquit str kQ - - ----K quit key -#key_select ksel str kU - - ----- select key -#key_scroll_left kscl str kz - - ----K scroll left -#key_scroll_right kscr str kZ - - ----K scroll right -#key_tab ktab str ko - - ----K tab key -#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input -#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output -#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input -#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output -#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input -#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output -#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input -#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output -#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input -#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output -#appl_defined_str apstr str za - - ----K application-defined string -# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in -# the IBM manual pages, so the cap name strings are guesses. The terminfo -# names are almost certainly right, the termcap ones almost certainly wrong. -#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input -#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output -#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input -#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output -#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input -#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output -#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input -#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output -# Undocumented capabilities end here -#key_sf1 ksf1 str S1 - - ----K special function key 1 -#key_sf2 ksf2 str S2 - - ----K special function key 2 -#key_sf3 ksf3 str S3 - - ----K special function key 3 -#key_sf4 ksf4 str S4 - - ----K special function key 4 -#key_sf5 ksf5 str S5 - - ----K special function key 5 -#key_sf6 ksf6 str S6 - - ----K special function key 6 -#key_sf7 ksf7 str S7 - - ----K special function key 7 -#key_sf8 ksf8 str S8 - - ----K special function key 8 -#key_sf9 ksf9 str S9 - - ----K special function key 9 -#key_sf10 ksf10 str SA - - ----K special function key 10 -# AIX version 3 documents different codes for F11, F12 and does not mention -# F13-F64. AIX version 4 uses the same naming for F0-F63 as above. -#key_f11 kf11 str k< - - ----- function key 11 -#key_f12 kf12 str k> - - ----- function key 12 -# Undocumented capabilities end here. -#key_action kact str kJ - - ----K sent by action key -# The IBM docs say these capabilities are for table-drawing, and are -# valid only for aixterm descriptions. -#enter_topline_mode topl str tp - - ----K start top-line mode -#enter_bottom_mode btml str bm - - ----K start bottom-line mode -#enter_rvert_mode rvert str rv - - ----K start right-vertical mode -#enter_lvert_mode lvert str lv - - ----K start left-vertical mode -# -############################################################################# -# -# ALIAS DECLARATIONS -# -# Here we set up aliases for translating extensions into standard terminfo. -# -#---------------------------------- Termcap aliases ------------------------- -# -# BSD aliases: -# -# This is a common error in many termcap files. We'll get notified during -# translation when this (or any other alias) fires. -# -capalias sb sr BSD scroll text down -# -# AT&T extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish the following mappings: -# -capalias BO mr AT&T enter_reverse_mode -capalias CI vi AT&T cursor_invisible -capalias CV ve AT&T cursor_normal -capalias DS mh AT&T enter_dim_mode -#capalias EE me AT&T exit_attribute_mode -capalias FE LF AT&T label_on -capalias FL LO AT&T label_off -capalias XS mk AT&T enter_secure_mode -# -# We comment out EE because the conflicting XENIX EE is more common in -# old entries. -# -# XENIX extensions: -# -# These are the ones we know how to translate directly: -# -capalias EE mh XENIX exit_attribute_mode -capalias GE ae XENIX exit_alt_charset_mode -capalias GS as XENIX enter_alt_charset_mode -capalias CF vi XENIX cursor_invis -capalias CO ve XENIX cursor_normal -capalias EN @7 XENIX key_end -capalias HM kh XENIX key_home -capalias LD kL XENIX key_dl -capalias PD kN XENIX key_npage -capalias PN po XENIX prtr_off -capalias PS pf XENIX prtr_on -capalias PU kP XENIX key_ppage -capalias RT @8 XENIX kent -capalias UP ku XENIX kcuu1 -capalias G6 IGNORE XENIX double-ACS_ULCORNER -capalias G7 IGNORE XENIX double-ACS_LLCORNER -capalias G5 IGNORE XENIX double-ACS_URCORNER -capalias G8 IGNORE XENIX double-ACS_LRCORNER -capalias Gr IGNORE XENIX double-ACS_LTEE -capalias Gr IGNORE XENIX double-ACS_RTEE -capalias Gu IGNORE XENIX double-ACS_BTEE -capalias Gd IGNORE XENIX double ACS_TTEE -capalias Gh IGNORE XENIX double-ACS_HLINE -capalias Gv IGNORE XENIX double-ACS_VLINE -capalias Gc IGNORE XENIX double-ACS_PLUS -capalias GG IGNORE XENIX acs-glitch -# -# IBM extensions: -# -capalias kq %1 IBM key_help -# -# Iris extensions: -# -capalias HS mh IRIS enter_dim_mode -# -# Tektronix extensions: -# -capalias KA k; Tek key_f10 -capalias KB F1 Tek key_f11 -capalias KC F2 Tek key_f12 -capalias KD F3 Tek key_f13 -capalias KE F4 Tek key_f14 -capalias KF F5 Tek key_f15 -capalias BC Sb Tek set_background -capalias FC Sf Tek set_foreground -# -# There are also the following: -# -# XENIX XENIX variable name name clash with terminfo? -# ----- ------------------- ------------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window -# HP ?? -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PL ?? -# PR ?? -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# WL key_word_left -# WR key_word_right -# -# If you know what any of the question-marked ones mean, please tell us. -# -#--------------------------------- Terminfo aliases ------------------------ -# -# IBM extensions: -# -infoalias font0 s0ds IBM set0_des_seq -infoalias font1 s1ds IBM set1_des_seq -infoalias font2 s2ds IBM set2_des_seq -infoalias font3 s3ds IBM set3_des_seq -infoalias kbtab kcbt IBM key_backtab -infoalias ksel kslt IBM key_select -# -# Some others are identical to SVr4/XPG4 capabilities, in particular: -# kcmd, kend, khlp, and kf11...kf63. -# ############################################################################# diff --git a/deps/ncurses-6.3/include/Caps-ncurses b/deps/ncurses-6.3/include/Caps-ncurses new file mode 100644 index 0000000..d8c8bac --- /dev/null +++ b/deps/ncurses-6.3/include/Caps-ncurses @@ -0,0 +1,461 @@ +############################################################################## +# Copyright 2019,2020 Thomas E. Dickey # +# # +# 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: Thomas E. Dickey +# +# $Id: Caps-ncurses,v 1.10 2020/09/29 19:05:19 tom Exp $ +# +############################################################################# +# +# TERMINFO EXTENSION CAPABILITIES +# +# This section is all comments (selected lines are copied/uncommented into +# specific "Caps" files). The section describes what capabilities need to be +# squeezed out to get down to the XSI Curses standard set. They are flagged +# with K. +# +# HP extensions +# +# These extensions follow ptr_non (replacing everything after it) in HP +# terminfo files. Except for memory_lock and memory_unlock, they are +# functionally identical to SVr4 extensions, but they make the binary format +# different. Grrr.... +# +#memory_lock meml str ml - - ----K lock memory above cursor +#memory_unlock memu str mu - - ----K unlock memory +#plab_norm pln str pn - - ----- program label #1 to show string #2 +#label_on smln str LO - - ----- turn on soft labels +#label_off rmln str LF - - ----- turn off soft labels +#key_f11 kf11 str F1 - - ----- F11 function key +#key_f12 kf12 str F2 - - ----- F12 function key +#key_f13 kf13 str F3 - - ----- F13 function key +#key_f14 kf14 str F4 - - ----- F14 function key +#key_f15 kf15 str F5 - - ----- F15 function key +#key_f16 kf16 str F6 - - ----- F16 function key +#key_f17 kf17 str F7 - - ----- F17 function key +#key_f18 kf18 str F8 - - ----- F18 function key +#key_f19 kf19 str F9 - - ----- F19 function key +#key_f20 kf20 str FA - - ----- F20 function key +#key_f21 kf21 str FB - - ----- F21 function key +#key_f22 kf22 str FC - - ----- F22 function key +#key_f23 kf23 str FD - - ----- F23 function key +#key_f24 kf24 str FE - - ----- F24 function key +#key_f25 kf25 str FF - - ----- F25 function key +#key_f26 kf26 str FG - - ----- F26 function key +#key_f27 kf27 str FH - - ----- F27 function key +#key_f28 kf28 str FI - - ----- F28 function key +#key_f29 kf29 str FJ - - ----- F29 function key +#key_f30 kf30 str FK - - ----- F30 function key +#key_f31 kf31 str FL - - ----- F31 function key +#key_f32 kf32 str FM - - ----- F32 function key +#key_f33 kf33 str FN - - ----- F33 function key +#key_f34 kf34 str FO - - ----- F34 function key +#key_f35 kf35 str FP - - ----- F35 function key +#key_f36 kf36 str FQ - - ----- F36 function key +#key_f37 kf37 str FR - - ----- F37 function key +#key_f38 kf38 str FS - - ----- F38 function key +#key_f39 kf39 str FT - - ----- F39 function key +#key_f40 kf40 str FU - - ----- F40 function key +#key_f41 kf41 str FV - - ----- F41 function key +#key_f42 kf42 str FW - - ----- F42 function key +#key_f43 kf43 str FX - - ----- F43 function key +#key_f44 kf44 str FY - - ----- F44 function key +#key_f45 kf45 str FZ - - ----- F45 function key +#key_f46 kf46 str Fa - - ----- F46 function key +#key_f47 kf47 str Fb - - ----- F47 function key +#key_f48 kf48 str Fc - - ----- F48 function key +#key_f49 kf49 str Fd - - ----- F49 function key +#key_f50 kf50 str Fe - - ----- F50 function key +#key_f51 kf51 str Ff - - ----- F51 function key +#key_f52 kf52 str Fg - - ----- F52 function key +#key_f53 kf53 str Fh - - ----- F53 function key +#key_f54 kf54 str Fi - - ----- F54 function key +#key_f55 kf55 str Fj - - ----- F55 function key +#key_f56 kf56 str Fk - - ----- F56 function key +#key_f57 kf57 str Fl - - ----- F57 function key +#key_f58 kf58 str Fm - - ----- F58 function key +#key_f59 kf59 str Fn - - ----- F59 function key +#key_f60 kf60 str Fo - - ----- F60 function key +#key_f61 kf61 str Fp - - ----- F61 function key +#key_f62 kf62 str Fq - - ----- F62 function key +#key_f63 kf63 str Fr - - ----- F63 function key +# +# IBM extensions +# +# These extensions follow ptr_non (replacing everything after it) in IBM +# terminfo files. +# +# The places in the box[12] capabilities correspond to acsc characters, here is +# the mapping: +# +# box1[0] = ACS_ULCORNER +# box1[1] = ACS_HLINE +# box1[2] = ACS_URCORNER +# box1[3] = ACS_VLINE +# box1[4] = ACS_LRCORNER +# box1[5] = ACS_LLCORNER +# box1[6] = ACS_TTEE +# box1[7] = ACS_RTEE +# box1[8] = ACS_BTEE +# box1[9] = ACS_LTEE +# box1[10] = ACS_PLUS +# +# The box2 characters are the double-line versions of these forms graphics. +# +#box_chars_1 box1 str bx - - ----K box characters primary set +#box_chars_2 box2 str by - - ----K box characters secondary set +#box_attr_1 batt1 str Bx - - ----K attributes for box1 +#box_attr_2 batt2 str By - - ----K attributes for box2 +#color_bg_0 colb0 str d0 - - ----K background color 0 +#color_bg_1 colb1 str d1 - - ----K background color 1 +#color_bg_2 colb2 str d2 - - ----K background color 2 +#color_bg_3 colb3 str d3 - - ----K background color 3 +#color_bg_4 colb4 str d4 - - ----K background color 4 +#color_bg_5 colb5 str d5 - - ----K background color 5 +#color_bg_6 colb6 str d6 - - ----K background color 6 +#color_bg_7 colb7 str d7 - - ----K background color 7 +#color_fg_0 colf0 str c0 - - ----K foreground color 0 +#color_fg_1 colf1 str c1 - - ----K foreground color 1 +#color_fg_2 colf2 str c2 - - ----K foreground color 2 +#color_fg_3 colf3 str c3 - - ----K foreground color 3 +#color_fg_4 colf4 str c4 - - ----K foreground color 4 +#color_fg_5 colf5 str c5 - - ----K foreground color 5 +#color_fg_6 colf6 str c6 - - ----K foreground color 6 +#color_fg_7 colf7 str c7 - - ----K foreground color 7 +#font_0 font0 str f0 - - ----- select font 0 +#font_1 font1 str f1 - - ----- select font 1 +#font_2 font2 str f2 - - ----- select font 2 +#font_3 font3 str f3 - - ----- select font 3 +#font_4 font4 str f4 - - ----K select font 4 +#font_5 font5 str f5 - - ----K select font 5 +#font_6 font6 str f6 - - ----K select font 6 +#font_7 font7 str f7 - - ----K select font 7 +#key_back_tab kbtab str k0 - - ----- backtab key +#key_do kdo str ki - - ----K do request key +#key_command kcmd str kd - - ----K command-request key +#key_command_pane kcpn str kW - - ----K command-pane key +#key_end kend str kw - - ----- end key +#key_help khlp str kq - - ----- help key +#key_newline knl str nl - - ----K newline key +#key_next_pane knpn str kv - - ----K next-pane key +#key_prev_cmd kppn str kp - - ----K previous-command key +#key_prev_pane kppn str kV - - ----K previous-pane key +#key_quit kquit str kQ - - ----K quit key +#key_select ksel str kU - - ----- select key +#key_scroll_left kscl str kz - - ----K scroll left +#key_scroll_right kscr str kZ - - ----K scroll right +#key_tab ktab str ko - - ----K tab key +#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input +#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output +#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input +#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output +#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input +#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output +#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input +#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output +#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input +#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output +#appl_defined_str apstr str za - - ----K application-defined string +# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in +# the IBM manual pages, so the cap name strings are guesses. The terminfo +# names are almost certainly right, the termcap ones almost certainly wrong. +#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input +#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output +#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input +#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output +#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input +#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output +#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input +#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output +# Undocumented capabilities end here +#key_sf1 ksf1 str S1 - - ----K special function key 1 +#key_sf2 ksf2 str S2 - - ----K special function key 2 +#key_sf3 ksf3 str S3 - - ----K special function key 3 +#key_sf4 ksf4 str S4 - - ----K special function key 4 +#key_sf5 ksf5 str S5 - - ----K special function key 5 +#key_sf6 ksf6 str S6 - - ----K special function key 6 +#key_sf7 ksf7 str S7 - - ----K special function key 7 +#key_sf8 ksf8 str S8 - - ----K special function key 8 +#key_sf9 ksf9 str S9 - - ----K special function key 9 +#key_sf10 ksf10 str SA - - ----K special function key 10 +# AIX version 3 documents different codes for F11, F12 and does not mention +# F13-F64. AIX version 4 uses the same naming for F0-F63 as above. +#key_f11 kf11 str k< - - ----- function key 11 +#key_f12 kf12 str k> - - ----- function key 12 +# Undocumented capabilities end here. +#key_action kact str kJ - - ----K sent by action key +# The IBM docs say these capabilities are for table-drawing, and are +# valid only for aixterm descriptions. +#enter_topline_mode topl str tp - - ----K start top-line mode +#enter_bottom_mode btml str bm - - ----K start bottom-line mode +#enter_rvert_mode rvert str rv - - ----K start right-vertical mode +#enter_lvert_mode lvert str lv - - ----K start left-vertical mode +# +############################################################################# +# +# ALIAS DECLARATIONS +# +# Here we set up aliases for translating extensions into standard terminfo. +# +#---------------------------------- Termcap aliases ------------------------- +# +# BSD aliases: +# +# This is a common error in many termcap files. We'll get notified during +# translation when this (or any other alias) fires. +# +capalias sb sr BSD scroll text down +# +# AT&T extensions: +# +# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of +# nonstandard capabilities. Its signature is the KM capability, used to name +# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this +# set. Comments in the original, and a little cross-checking with other AT&T +# documentation, seem to establish the following mappings: +# +capalias BO mr AT&T enter_reverse_mode +capalias CI vi AT&T cursor_invisible +capalias CV ve AT&T cursor_normal +capalias DS mh AT&T enter_dim_mode +#capalias EE me AT&T exit_attribute_mode +capalias FE LF AT&T label_on +capalias FL LO AT&T label_off +capalias XS mk AT&T enter_secure_mode +# +# We comment out EE because the conflicting XENIX EE is more common in +# old entries. +# +# XENIX extensions: +# +# These are the ones we know how to translate directly: +# +capalias EE mh XENIX exit_attribute_mode +capalias GE ae XENIX exit_alt_charset_mode +capalias GS as XENIX enter_alt_charset_mode +capalias CF vi XENIX cursor_invis +capalias CO ve XENIX cursor_normal +capalias EN @7 XENIX key_end +capalias HM kh XENIX key_home +capalias LD kL XENIX key_dl +capalias PD kN XENIX key_npage +capalias PN po XENIX prtr_off +capalias PS pf XENIX prtr_on +capalias PU kP XENIX key_ppage +capalias RT @8 XENIX kent +capalias UP ku XENIX kcuu1 +capalias G6 IGNORE XENIX double-ACS_ULCORNER +capalias G7 IGNORE XENIX double-ACS_LLCORNER +capalias G5 IGNORE XENIX double-ACS_URCORNER +capalias G8 IGNORE XENIX double-ACS_LRCORNER +capalias Gr IGNORE XENIX double-ACS_LTEE +capalias Gr IGNORE XENIX double-ACS_RTEE +capalias Gu IGNORE XENIX double-ACS_BTEE +capalias Gd IGNORE XENIX double ACS_TTEE +capalias Gh IGNORE XENIX double-ACS_HLINE +capalias Gv IGNORE XENIX double-ACS_VLINE +capalias Gc IGNORE XENIX double-ACS_PLUS +capalias GG IGNORE XENIX acs-glitch +# +# IBM extensions: +# +capalias kq %1 IBM key_help +# +# Iris extensions: +# +capalias HS mh IRIS enter_dim_mode +# +# Tektronix extensions: +# +capalias KA k; Tek key_f10 +capalias KB F1 Tek key_f11 +capalias KC F2 Tek key_f12 +capalias KD F3 Tek key_f13 +capalias KE F4 Tek key_f14 +capalias KF F5 Tek key_f15 +capalias BC Sb Tek set_background +capalias FC Sf Tek set_foreground +# +# There are also the following: +# +# XENIX XENIX variable name name clash with terminfo? +# ----- ------------------- ------------------------- +# CL key_char_left +# CR key_char_right +# CW key_change_window +# HP ?? +# LF key_linefeed label_off +# NU key_next_unlocked_cell +# PL ?? +# PR ?? +# RC key_recalc remove_clock +# RF key_toggle_ref req_for_input +# WL key_word_left +# WR key_word_right +# +# If you know what any of the question-marked ones mean, please tell us. +# +#--------------------------------- Terminfo aliases ------------------------ +# +# IBM extensions: +# +infoalias font0 s0ds IBM set0_des_seq +infoalias font1 s1ds IBM set1_des_seq +infoalias font2 s2ds IBM set2_des_seq +infoalias font3 s3ds IBM set3_des_seq +infoalias kbtab kcbt IBM key_backtab +infoalias ksel kslt IBM key_select +# +# Some others are identical to SVr4/XPG4 capabilities, in particular: +# kcmd, kend, khlp, and kf11...kf63. +# +############################################################################# +# This is a table of ncurses user-definable capabilities which applications +# developers may have used. ncurses may use the table to check consistency of +# types/parameters. Applications may have defined others (such as screen's +# LP and NF), but where a standard capability is available, those alternatives +# are not listed here. +# +used_by ncurses +userdef CO num n number of indexed colors overlaying RGB space +userdef E3 str - clears the terminal's scrollback buffer. +userdef RGB bool - use direct colors with 1/3 of color-pair bits per color. +userdef RGB num n use direct colors with given number of bits per color. +userdef RGB str - use direct colors with given bit-layout. +userdef TS str - like "tsl", but uses no parameter. +userdef U8 num n terminal does/does not support VT100 SI/SO when processing UTF-8 encoding. +userdef XM str n initialize alternate xterm mouse mode +userdef grbom str - disable real bold (not intensity bright) mode. +userdef gsbom str - enable real bold (not intensity bright) mode. +userdef xm str - mouse response, no parameters +userdef xm str n mouse response, p1 = y-ordinate +userdef xm str nn mouse response, p2 = x-ordinate +userdef xm str nnn mouse response, p3 = button +userdef xm str nnns mouse response, p4 = state, e.g., pressed or released +userdef xm str nnnsn mouse response, p5 = y-ordinate starting region +userdef xm str nnnsnn mouse response, p6 = x-ordinate starting region +userdef xm str nnnsnnn mouse response, p7 = y-ordinate ending region +userdef xm str nnnsnnnn mouse response, p8 = x-ordinate ending region +# +used_by mintty +userdef Rmol str - remove overline-mode +userdef Smol str - set overline-mode +userdef blink2 str - turn on rapid blinking +userdef norm str - turn off bold and half-bright mode +userdef opaq str - turn off blank mode +userdef setal str n set underline-color +userdef smul2 str - begin double underline mode +# +used_by screen +userdef AN bool - turn on autonuke. +userdef AX bool - understands ANSI set default fg/bg color (\E[39m / \E[49m). +userdef C0 str - use the string as a conversion table for font '0', like acsc. +userdef C8 bool - terminal shows bold as high-intensity colors. +userdef CE str - switch cursor-keys back to normal mode. +userdef CS str - switch cursor-keys to application mode. +userdef E0 str - switch charset 'G0' back to standard charset. Default is '\E(B'. +userdef G0 bool - terminal can deal with ISO 2022 font selection sequences. +userdef KJ str s set the encoding of the terminal. +userdef OL num n set the screen program's output buffer limit. +userdef S0 str s switch charset 'G0' to the specified charset. Default is '\E(%.'. +userdef TF bool - add missing capabilities to screen's termcap/info entry. (Set by default). +userdef WS str nn resize display. This capability has the desired width and height as arguments. SunView(tm) example: '\E[8;%d;%dt'. +userdef XC str s describe a translation of characters to strings depending on the current font. +userdef XT bool - terminal understands special xterm sequences (OSC, mouse tracking). +userdef Z0 str - change width to 132 columns. +userdef Z1 str - change width to 80 columns. +# +used_by tmux +userdef Cr str - restore the default cursor color. +userdef Cs str s set the cursor color. +userdef Csr str n change the cursor style, overriding Ss. +userdef Ms str ss store the current buffer in the host terminal's selection (clipboard). +userdef Se str - reset the cursor style to the terminal initial state. +userdef Smulx str n modify the appearance of underlines in VTE. +userdef Ss str n change the cursor style. +userdef rmxx str - reset ECMA-48 strikeout/crossed-out attributes. +userdef smxx str - set ECMA-48 strikeout/crossed-out attributes. +# +used_by xterm +userdef kDC3 str - alt delete-character +userdef kDC4 str - shift+alt delete-character +userdef kDC5 str - control delete-character +userdef kDC6 str - shift+control delete-character +userdef kDC7 str - alt+control delete-character +userdef kDN str - shift down-cursor +userdef kDN3 str - alt down-cursor +userdef kDN4 str - shift+alt down-cursor +userdef kDN5 str - control down-cursor +userdef kDN6 str - shift+control down-cursor +userdef kDN7 str - alt+control down-cursor +userdef kEND3 str - alt end +userdef kEND4 str - shift+alt end +userdef kEND5 str - control end +userdef kEND6 str - shift+control end +userdef kEND7 str - alt+control end +userdef kHOM3 str - alt home +userdef kHOM4 str - shift+alt home +userdef kHOM5 str - control home +userdef kHOM6 str - shift+control home +userdef kHOM7 str - alt+control home +userdef kIC3 str - alt insert-character +userdef kIC4 str - shift+alt insert-character +userdef kIC5 str - control insert-character +userdef kIC6 str - shift+control insert-character +userdef kIC7 str - alt+control insert-character +userdef kLFT3 str - alt left-cursor +userdef kLFT4 str - shift+alt left-cursor +userdef kLFT5 str - control left-cursor +userdef kLFT6 str - shift+control left-cursor +userdef kLFT7 str - alt+control left-cursor +userdef kNXT3 str - alt next +userdef kNXT4 str - shift+alt next +userdef kNXT5 str - control next +userdef kNXT6 str - shift+control next +userdef kNXT7 str - alt+control next +userdef kPRV3 str - alt previous +userdef kPRV4 str - shift+alt previous +userdef kPRV5 str - control previous +userdef kPRV6 str - shift+control previous +userdef kPRV7 str - alt+control previous +userdef kRIT3 str - alt right-cursor +userdef kRIT4 str - shift+alt right-cursor +userdef kRIT5 str - control right-cursor +userdef kRIT6 str - shift+control right-cursor +userdef kRIT7 str - alt+control right-cursor +userdef kUP str - shift up-cursor +userdef kUP3 str - alt up-cursor +userdef kUP4 str - shift+alt up-cursor +userdef kUP5 str - control up-cursor +userdef kUP6 str - shift+control up-cursor +userdef kUP7 str - alt+control up-cursor +userdef ka2 str - vt220-keypad extensions +userdef kb1 str - vt220-keypad extensions +userdef kb3 str - vt220-keypad extensions +userdef kc2 str - vt220-keypad extensions +############################################################################# diff --git a/deps/ncurses-5.9/include/Caps.aix4 b/deps/ncurses-6.3/include/Caps.aix4 similarity index 85% rename from deps/ncurses-5.9/include/Caps.aix4 rename to deps/ncurses-6.3/include/Caps.aix4 index 5864d7b..ee9f2cf 100644 --- a/deps/ncurses-5.9/include/Caps.aix4 +++ b/deps/ncurses-6.3/include/Caps.aix4 @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2001-2006,2010 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2001-2015,2016 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"), # @@ -28,13 +29,13 @@ # # Author: Thomas Dickey # -# $Id: Caps.aix4,v 1.8 2010/12/04 18:47:13 tom Exp $ +# $Id: Caps.aix4,v 1.20 2021/10/08 07:55:48 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with AIX 4.x's terminfo. # # This table is used to generate initializers for tables that drive tic, -# infocmp, and the library compilation code used to support the termcap +# infocmp, and the library compilation code used to support the termcap # compatibility hack. It is also used to generate the tabular portion of the # terminfo(5) man page; lines beginning with `#%' are passed through to become # the terminfo table. @@ -57,7 +58,7 @@ # # The codes following [Y-] in column 7 describe the versions of termcap which # use the given capability. This information is not used by the curses library -# proper; rather, it's there to help the terminfo maintainer avoid emitting +# proper; rather, it is there to help the terminfo maintainer avoid emitting # termcap entry translations that are more than 1023 bytes long (and tank a # lot of old termcap-using programs). The codes read as follows: # B = mentioned in the BSD man page for 4.4BSD curses @@ -97,8 +98,8 @@ # 3. List it in the standard table. You almost certainly do *not* want # to do this -- the capabilities in that one, and their order, have been # carefully chosen to be SVr4-binary-compatible when they're written out -# as a terminfo object, and breaking this would be bad. It's up the ncurses -# library what to do with the terminfo data after it's read in. +# as a terminfo object, and breaking this would be bad. It is up to the ncurses +# library what to do with the terminfo data after it is read in. # # 4. List it in the aliases table with an IGNORE target field. If you # do this, the capability will be ignored on input (though the user will @@ -107,7 +108,7 @@ # 5. List it in the extensions table. If you do this, the compiler will # silently accept the capability, but the curses library proper will never # see it (because it won't be written out as part of the terminfo object -# format). It's up to you what you have the compiler do with it. +# format). It is up to you what you have the compiler do with it. # # There are two opposite reasons to choose option 5. One is when you want # to eat the capability silently and discard it when doing translations @@ -119,14 +120,14 @@ # You'll need to write custom code, probably in postprocess_termcap() or # postprocess_terminfo(), to handle the translation. # -# CONTROLLING ENTRY LENGTH +# CONTROLLING ENTRY LENGTH # # Notes on specific elisions made to fit translations within 1023 bytes: # # Machines with IBM PC-like keyboards want to be able to define the following # keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap- # only environments for End or Home-Down), key_dc, and key_ic. This is also -# the set of keys the `joe' editor will be upset if it can't see. So don't +# the set of keys the `joe' editor will be upset if it can't see. So don't # trim those out of the set to be translated to termcap, or various users of # the termcap file will become irate. # @@ -147,7 +148,7 @@ # # It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap # translations go back over critical if we do this. As 4.4BSD curses fades -# into history and GNU termcap's application base shrinks towards being GNU +# into history and GNU termcap's application base shrinks towards being GNU # Emacs only, we'll probably elide out some BSD-only capabilities in order # to buy space for non-essentials Emacs is still using. Capabilities high # on that hit list: rc, sc, uc. @@ -166,7 +167,7 @@ #%The \fBcapname\fR is the short name used in the text of the database, #%and is used by a person updating the database. #%Whenever possible, capnames are chosen to be the same as or similar to -#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses +#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses #%identical or very similar names). Semantics are also intended to match #%those of the specification. #% @@ -188,8 +189,12 @@ #%indicates that padding may be specified #%.TP #%#[1-9] -#%in the description field indicates that the string is passed through tparm with -#%parms as given (#\fIi\fP). +#%in the description field indicates that the string is passed +#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP). +#%.IP +#%If no parameters are listed in the description, +#%passing the string through \fBtparm\fP(3X) may give unexpected results, +#%e.g., if it contains percent (%%) signs. #%.TP #%(P*) #%indicates that padding may vary in proportion to the number of @@ -227,7 +232,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode over_strike os bool os - - YBCG- terminal can overstrike status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061) -tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine) +tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine) transparent_underline ul bool ul - - YBCGE underline character overstrikes xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required @@ -271,7 +276,7 @@ num_labels nlab num Nl - - ----- number of labels on screen 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 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 @@ -476,7 +481,7 @@ prtr_non mc5p str pO - - -B-G-* turn on printer for #1 bytes # the mapping: # # box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE +# box1[1] = ACS_HLINE # box1[2] = ACS_URCORNER # box1[3] = ACS_VLINE # box1[4] = ACS_LRCORNER @@ -517,15 +522,15 @@ font_4 font4 str f4 - - ----K select font 4 font_5 font5 str f5 - - ----K select font 5 font_6 font6 str f6 - - ----K select font 6 font_7 font7 str f7 - - ----K select font 7 -key_back_tab kbtab str k0 - - ----K backtab key +key_back_tab kbtab str kO - - ----K backtab key key_do kdo str ki - - ----K do request key -key_command kcmd str kd - - ----K command-request key +key_command kcmd str @4 - - ----K command-request key key_command_pane kcpn str kW - - ----K command-pane key -key_end kend str kw KEY_END 0550 ----- end key -key_help khlp str kq - - ----- help key -key_newline knl str nl - - ----K newline key +key_end kend str @7 KEY_END 0550 ----- end key +key_help khlp str %1 - - ----- help key +key_newline knl str kn - - ----K newline key key_next_pane knpn str kv - - ----K next-pane key -key_prev_cmd kppn str kp - - ----K previous-command key +key_prev_cmd kpcmd str kp - - ----K previous-command key key_prev_pane kppn str kV - - ----K previous-pane key key_quit kquit str kQ - - ----K quit key key_select_aix ksel str kU - - ----- select key @@ -543,13 +548,13 @@ key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output appl_defined_str apstr str za - - ----K application-defined string -key_smap_in6 kmpf6 str kr - - ----K special mapped key 6 input +key_smap_in6 kmpf6 str Kr - - ----K special mapped key 6 input key_smap_out6 kmpt6 str KR - - ----K special mapped key 6 output -key_smap_in7 kmpf7 str ks - - ----K special mapped key 7 input +key_smap_in7 kmpf7 str Ks - - ----K special mapped key 7 input key_smap_out7 kmpt7 str KS - - ----K special mapped key 7 output -key_smap_in8 kmpf8 str kt - - ----K special mapped key 8 input +key_smap_in8 kmpf8 str Kt - - ----K special mapped key 8 input key_smap_out8 kmpt8 str KT - - ----K special mapped key 8 output -key_smap_in9 kmpf9 str ku - - ----K special mapped key 9 input +key_smap_in9 kmpf9 str Ku - - ----K special mapped key 9 input key_smap_out9 kmpt9 str KU - - ----K special mapped key 9 output key_sf1 ksf1 str S1 - - ----K special function key 1 key_sf2 ksf2 str S2 - - ----K special function key 2 @@ -698,7 +703,7 @@ key_sundo kUND str !3 KEY_SUNDO 0626 ----- shifted undo key req_for_input rfi str RF - - ----- send next input char (for ptys) clr_bol el1 str cb - - ----- Clear to beginning of line clear_margins mgc str MC - - ----- clear right and left soft margins -set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap). +set_left_margin smgl str ML - - ----- set left soft margin at current column. (ML is not in BSD termcap). set_right_margin smgr str MR - - ----- set right soft margin at current column label_format fln str Lf - - ----- label format set_clock sclk str SC - - ----- set clock, #1 hrs #2 mins #3 secs @@ -821,7 +826,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times bit_image_newline binel str Zz - - ----- Move to next row of the bit image bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row color_names colornm str Yw - - ----- Give name for color #1 -define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region +define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region end_bit_image_region endbi str Yy - - ----- End a bit-image region set_color_band setcolor str Yz - - ----- Change to ribbon color #1 set_page_length slines str YZ - - ----- Set page length to #1 lines @@ -840,11 +845,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%.ad #% #%.in .8i -#%The XSI Curses standard added these. They are some post-4.1 -#%versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x. -#%The \fBncurses\fR termcap names for them are invented; according to the -#%XSI Curses standard, they have no termcap names. If your compiled terminfo -#%entries use these, they may not be binary-compatible with System V terminfo +#%The XSI Curses standard added these hardcopy capabilities. +#%They were used in some post-4.1 versions of System V curses, +#%e.g., Solaris 2.5 and IRIX 6.x. +#%Except for \fBYI\fP, the \fBncurses\fR termcap names for them are invented. +#%According to the XSI Curses standard, they have no termcap names. +#%If your compiled terminfo entries use these, +#%they may not be binary-compatible with System V terminfo #%entries after SVr4.1; beware! #% #%.na @@ -855,14 +862,14 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%lw25 lw6 lw2 lw20. #%\fBVariable Cap- TCap Description\fR #%\fBString name Code\fR -enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode -enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode -enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode -enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode -enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode -enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode -set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6 -set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch +#enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode +#enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode +#enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode +#enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode +#enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode +#enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode +#set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6 +set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap). #%.TE #%.ad # @@ -926,7 +933,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # GNU termcap *does* include the following extended capability, Only the # now-obsolete Ann Arbor terminals used it. # -# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region +# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region # # The following comments describe capnames so ancient that I believe no # software uses them any longer. Some of these have to go because they @@ -943,9 +950,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # comma-separated list of capabilities for which there are corresponding keys. # The `kn' code is accepted but ignored. # -# The `ma' capability seems to have been designed to map between the rogue(2) -# motion keys (including jkhl) and characters emitted by arrow keys on some -# primitive pre-ANSI terminals. It's so obsolete it's fossilized... +# The `ma' capability was a 4.0BSD feature used by vi version 2. +# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. +# Besides being obsolete, that interpretation conflicts with max_attributes. # # Here is a description of memory_lock_above and memory_unlock: # "You can 'freeze' data on the screen by turning on Memory Lock in a line of @@ -971,14 +978,14 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V number_of_function_keys OTkn num kn - - -B-G- count of function keys other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps -arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys +arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I return_does_clr_eol OTxr bool xr - - YB--- return clears the line # tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch # -# mytinfo described this as a termcap capability, but it's not listed in the +# mytinfo described this as a termcap capability, but it is not listed in the # 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses # package, like System V, behaves as though it is always true. # @@ -987,7 +994,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # University of Waterloo termcap extensions (as described in mytinfo). # The `xl' termcap file clashes with a terminfo name; this ambiguity cannot # be resolved by a type check. The descriptions are guesses from what was -# in the mytinfo tables. +# in the mytinfo tables. # # key_interrupt_char OTki str ki - - ----- string set by interrupt key (?) # key_kill_char OTkk str kk - - ----- string set by kill key (?) @@ -1036,7 +1043,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # Gv 186 \272 M-: double vertical line # # The compiler will translate the single-line caps and discard the others -# (via IGNORE aliases further down). We don't want to do normal pad +# (via IGNORE aliases further down). We don't want to do normal pad # translation on these, they're often single-character printable ASCII # strings that happen to be numerics. There's awk code in parametrized.sh # that detects the acs_ prefix and uses it to suppress pad translation. @@ -1058,192 +1065,9 @@ acs_plus OTGC str GC - - ----- single intersection # # TERMINFO EXTENSION CAPABILITIES # -# This section is almost all comments. What it's mainly for is to describe -# what capabilities need to be squeezed out to get down to the XSI Curses -# standard set. They are flagged with K. -# -# HP extensions -# -# These extensions follow ptr_non (replacing everything after it) in HP -# terminfo files. Except for memory_lock and memory_unlock, they are -# functionally identical to SVr4 extensions, but they make the binary format -# different. Grrr.... +# (see Caps-ncurses for the complete set of comments) # memory_lock meml str ml - - ----K lock memory above cursor memory_unlock memu str mu - - ----K unlock memory -#plab_norm pln str pn - - ----- program label #1 to show string #2 -#label_on smln str LO - - ----- turn on soft labels -#label_off rmln str LF - - ----- turn off soft labels -#key_f11 kf11 str F1 - - ----- F11 function key -#key_f12 kf12 str F2 - - ----- F12 function key -#key_f13 kf13 str F3 - - ----- F13 function key -#key_f14 kf14 str F4 - - ----- F14 function key -#key_f15 kf15 str F5 - - ----- F15 function key -#key_f16 kf16 str F6 - - ----- F16 function key -#key_f17 kf17 str F7 - - ----- F17 function key -#key_f18 kf18 str F8 - - ----- F18 function key -#key_f19 kf19 str F9 - - ----- F19 function key -#key_f20 kf20 str FA - - ----- F20 function key -#key_f21 kf21 str FB - - ----- F21 function key -#key_f22 kf22 str FC - - ----- F22 function key -#key_f23 kf23 str FD - - ----- F23 function key -#key_f24 kf24 str FE - - ----- F24 function key -#key_f25 kf25 str FF - - ----- F25 function key -#key_f26 kf26 str FG - - ----- F26 function key -#key_f27 kf27 str FH - - ----- F27 function key -#key_f28 kf28 str FI - - ----- F28 function key -#key_f29 kf29 str FJ - - ----- F29 function key -#key_f30 kf30 str FK - - ----- F30 function key -#key_f31 kf31 str FL - - ----- F31 function key -#key_f32 kf32 str FM - - ----- F32 function key -#key_f33 kf33 str FN - - ----- F33 function key -#key_f34 kf34 str FO - - ----- F34 function key -#key_f35 kf35 str FP - - ----- F35 function key -#key_f36 kf36 str FQ - - ----- F36 function key -#key_f37 kf37 str FR - - ----- F37 function key -#key_f38 kf38 str FS - - ----- F38 function key -#key_f39 kf39 str FT - - ----- F39 function key -#key_f40 kf40 str FU - - ----- F40 function key -#key_f41 kf41 str FV - - ----- F41 function key -#key_f42 kf42 str FW - - ----- F42 function key -#key_f43 kf43 str FX - - ----- F43 function key -#key_f44 kf44 str FY - - ----- F44 function key -#key_f45 kf45 str FZ - - ----- F45 function key -#key_f46 kf46 str Fa - - ----- F46 function key -#key_f47 kf47 str Fb - - ----- F47 function key -#key_f48 kf48 str Fc - - ----- F48 function key -#key_f49 kf49 str Fd - - ----- F49 function key -#key_f50 kf50 str Fe - - ----- F50 function key -#key_f51 kf51 str Ff - - ----- F51 function key -#key_f52 kf52 str Fg - - ----- F52 function key -#key_f53 kf53 str Fh - - ----- F53 function key -#key_f54 kf54 str Fi - - ----- F54 function key -#key_f55 kf55 str Fj - - ----- F55 function key -#key_f56 kf56 str Fk - - ----- F56 function key -#key_f57 kf57 str Fl - - ----- F57 function key -#key_f58 kf58 str Fm - - ----- F58 function key -#key_f59 kf59 str Fn - - ----- F59 function key -#key_f60 kf60 str Fo - - ----- F60 function key -#key_f61 kf61 str Fp - - ----- F61 function key -#key_f62 kf62 str Fq - - ----- F62 function key -#key_f63 kf63 str Fr - - ----- F63 function key -# -############################################################################# -# -# ALIAS DECLARATIONS -# -# Here we set up aliases for translating extensions into standard terminfo. -# -#---------------------------------- Termcap aliases ------------------------- -# -# BSD aliases: -# -# This is a common error in many termcap files. We'll get notified during -# translation when this (or any other alias) fires. -# -capalias sb sr BSD scroll text down -# -# AT&T extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish the following mappings: -# -capalias BO mr AT&T enter_reverse_mode -capalias CI vi AT&T cursor_invisible -capalias CV ve AT&T cursor_normal -capalias DS mh AT&T enter_dim_mode -#capalias EE me AT&T exit_attribute_mode -capalias FE LF AT&T label_on -capalias FL LO AT&T label_off -capalias XS mk AT&T enter_secure_mode -# -# We comment out EE because the conflicting XENIX EE is more common in -# old entries. -# -# XENIX extensions: -# -# These are the ones we know how to translate directly: -# -capalias EE mh XENIX exit_attribute_mode -capalias GE ae XENIX exit_alt_charset_mode -capalias GS as XENIX enter_alt_charset_mode -capalias CF vi XENIX cursor_invis -capalias CO ve XENIX cursor_normal -capalias EN @7 XENIX key_end -capalias HM kh XENIX key_home -capalias LD kL XENIX key_dl -capalias PD kN XENIX key_npage -capalias PN po XENIX prtr_off -capalias PS pf XENIX prtr_on -capalias PU kP XENIX key_ppage -capalias RT @8 XENIX kent -capalias UP ku XENIX kcuu1 -capalias G6 IGNORE XENIX double-ACS_ULCORNER -capalias G7 IGNORE XENIX double-ACS_LLCORNER -capalias G5 IGNORE XENIX double-ACS_URCORNER -capalias G8 IGNORE XENIX double-ACS_LRCORNER -capalias Gr IGNORE XENIX double-ACS_LTEE -capalias Gr IGNORE XENIX double-ACS_RTEE -capalias Gu IGNORE XENIX double-ACS_BTEE -capalias Gd IGNORE XENIX double ACS_TTEE -capalias Gh IGNORE XENIX double-ACS_HLINE -capalias Gv IGNORE XENIX double-ACS_VLINE -capalias Gc IGNORE XENIX double-ACS_PLUS -capalias GG IGNORE XENIX acs-glitch -# -# IBM extensions: -# -capalias kq %1 IBM key_help -# -# Iris extensions: -# -capalias HS mh IRIS enter_dim_mode -# -# Tektronix extensions: -# -capalias KA k; Tek key_f10 -capalias KB F1 Tek key_f11 -capalias KC F2 Tek key_f12 -capalias KD F3 Tek key_f13 -capalias KE F4 Tek key_f14 -capalias KF F5 Tek key_f15 -capalias BC Sb Tek set_background -capalias FC Sf Tek set_foreground -# -# There are also the following: -# -# XENIX XENIX variable name name clash with terminfo? -# ----- ------------------- ------------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window -# HP ?? -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PL ?? -# PR ?? -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# WL key_word_left -# WR key_word_right -# -# If you know what any of the question-marked ones mean, please tell us. -# -#--------------------------------- Terminfo aliases ------------------------ -# -# IBM extensions: -# -infoalias font0 s0ds IBM set0_des_seq -infoalias font1 s1ds IBM set1_des_seq -infoalias font2 s2ds IBM set2_des_seq -infoalias font3 s3ds IBM set3_des_seq -infoalias kbtab kcbt IBM key_backtab -infoalias ksel kslt IBM key_select -# -# Some others are identical to SVr4/XPG4 capabilities, in particular: -# kcmd, kend, khlp, and kf11...kf63. # ############################################################################# diff --git a/deps/ncurses-5.9/include/Caps.hpux11 b/deps/ncurses-6.3/include/Caps.hpux11 similarity index 76% rename from deps/ncurses-5.9/include/Caps.hpux11 rename to deps/ncurses-6.3/include/Caps.hpux11 index 8dbe656..3c0444f 100644 --- a/deps/ncurses-5.9/include/Caps.hpux11 +++ b/deps/ncurses-6.3/include/Caps.hpux11 @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2002-2015,2016 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"), # @@ -28,13 +29,13 @@ # # Author: Thomas Dickey # -# $Id: Caps.hpux11,v 1.5 2010/12/04 18:47:13 tom Exp $ +# $Id: Caps.hpux11,v 1.18 2021/10/08 07:55:48 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with HPUX 11.x's terminfo. # # This table is used to generate initializers for tables that drive tic, -# infocmp, and the library compilation code used to support the termcap +# infocmp, and the library compilation code used to support the termcap # compatibility hack. It is also used to generate the tabular portion of the # terminfo(5) man page; lines beginning with `#%' are passed through to become # the terminfo table. @@ -57,7 +58,7 @@ # # The codes following [Y-] in column 7 describe the versions of termcap which # use the given capability. This information is not used by the curses library -# proper; rather, it's there to help the terminfo maintainer avoid emitting +# proper; rather, it is there to help the terminfo maintainer avoid emitting # termcap entry translations that are more than 1023 bytes long (and tank a # lot of old termcap-using programs). The codes read as follows: # B = mentioned in the BSD man page for 4.4BSD curses @@ -97,8 +98,8 @@ # 3. List it in the standard table. You almost certainly do *not* want # to do this -- the capabilities in that one, and their order, have been # carefully chosen to be SVr4-binary-compatible when they're written out -# as a terminfo object, and breaking this would be bad. It's up the ncurses -# library what to do with the terminfo data after it's read in. +# as a terminfo object, and breaking this would be bad. It is up to the ncurses +# library what to do with the terminfo data after it is read in. # # 4. List it in the aliases table with an IGNORE target field. If you # do this, the capability will be ignored on input (though the user will @@ -107,7 +108,7 @@ # 5. List it in the extensions table. If you do this, the compiler will # silently accept the capability, but the curses library proper will never # see it (because it won't be written out as part of the terminfo object -# format). It's up to you what you have the compiler do with it. +# format). It is up to you what you have the compiler do with it. # # There are two opposite reasons to choose option 5. One is when you want # to eat the capability silently and discard it when doing translations @@ -119,14 +120,14 @@ # You'll need to write custom code, probably in postprocess_termcap() or # postprocess_terminfo(), to handle the translation. # -# CONTROLLING ENTRY LENGTH +# CONTROLLING ENTRY LENGTH # # Notes on specific elisions made to fit translations within 1023 bytes: # # Machines with IBM PC-like keyboards want to be able to define the following # keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap- # only environments for End or Home-Down), key_dc, and key_ic. This is also -# the set of keys the `joe' editor will be upset if it can't see. So don't +# the set of keys the `joe' editor will be upset if it can't see. So don't # trim those out of the set to be translated to termcap, or various users of # the termcap file will become irate. # @@ -147,7 +148,7 @@ # # It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap # translations go back over critical if we do this. As 4.4BSD curses fades -# into history and GNU termcap's application base shrinks towards being GNU +# into history and GNU termcap's application base shrinks towards being GNU # Emacs only, we'll probably elide out some BSD-only capabilities in order # to buy space for non-essentials Emacs is still using. Capabilities high # on that hit list: rc, sc, uc. @@ -166,7 +167,7 @@ #%The \fBcapname\fR is the short name used in the text of the database, #%and is used by a person updating the database. #%Whenever possible, capnames are chosen to be the same as or similar to -#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses +#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses #%identical or very similar names). Semantics are also intended to match #%those of the specification. #% @@ -188,8 +189,12 @@ #%indicates that padding may be specified #%.TP #%#[1-9] -#%in the description field indicates that the string is passed through tparm with -#%parms as given (#\fIi\fP). +#%in the description field indicates that the string is passed +#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP). +#%.IP +#%If no parameters are listed in the description, +#%passing the string through \fBtparm\fP(3X) may give unexpected results, +#%e.g., if it contains percent (%%) signs. #%.TP #%(P*) #%indicates that padding may vary in proportion to the number of @@ -227,7 +232,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode over_strike os bool os - - YBCG- terminal can overstrike status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061) -tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine) +tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine) transparent_underline ul bool ul - - YBCGE underline character overstrikes xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking # end booleans for HPUX 9, 10 (non-color curses) @@ -273,7 +278,7 @@ num_labels nlab num Nl - - ----- number of labels on screen 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 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 @@ -298,7 +303,7 @@ dot_vert_spacing spinv num Yb - - ----- spacing of pins vertically in pins per dot_horz_spacing spinh num Yc - - ----- spacing of dots horizontally in dots per inch max_micro_address maddr num Yd - - ----- maximum value in micro_..._address max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro -micro_col_size mcs num Yf - - ----- character step size when in micro mode +micro_char_size mcs num Yf - - ----- character step size when in micro mode micro_line_size mls num Yg - - ----- line step size when in micro mode number_of_pins npins num Yh - - ----- numbers of pins in print-head output_res_char orc num Yi - - ----- horizontal resolution in units per line @@ -604,7 +609,7 @@ key_sundo kUND str !3 KEY_SUNDO 0626 ----- shifted undo key req_for_input rfi str RF - - ----- send next input char (for ptys) clr_bol el1 str cb - - ----- Clear to beginning of line clear_margins mgc str MC - - ----- clear right and left soft margins -set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap). +set_left_margin smgl str ML - - ----- set left soft margin at current column. (ML is not in BSD termcap). set_right_margin smgr str MR - - ----- set right soft margin at current column label_format fln str Lf - - ----- label format set_clock sclk str SC - - ----- set clock, #1 hrs #2 mins #3 secs @@ -727,7 +732,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times bit_image_newline binel str Zz - - ----- Move to next row of the bit image bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row color_names colornm str Yw - - ----- Give name for color #1 -define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region +define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region end_bit_image_region endbi str Yy - - ----- End a bit-image region set_color_band setcolor str Yz - - ----- Change to ribbon color #1 set_page_length slines str YZ - - ----- Set page length to #1 lines @@ -746,13 +751,17 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%.ad #% #%.in .8i -#%The XSI Curses standard added these. They are some post-4.1 -#%versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x. -#%The \fBncurses\fR termcap names for them are invented; according to the -#%XSI Curses standard, they have no termcap names. If your compiled terminfo -#%entries use these, they may not be binary-compatible with System V terminfo +#%The XSI Curses standard added these hardcopy capabilities. +#%They were used in some post-4.1 versions of System V curses, +#%e.g., Solaris 2.5 and IRIX 6.x. +#%Except for \fBYI\fP, the \fBncurses\fR termcap names for them are invented. +#%According to the XSI Curses standard, they have no termcap names. +#%If your compiled terminfo entries use these, +#%they may not be binary-compatible with System V terminfo #%entries after SVr4.1; beware! #% +#%AIX and Solaris do not provide termcap names for these; HPUX does. +#% #%.na #%.TS H #%center expand; @@ -761,20 +770,20 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%lw25 lw6 lw2 lw20. #%\fBVariable Cap- TCap Description\fR #%\fBString name Code\fR -set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch -enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode -enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode -enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode -enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode -enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode -enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode -set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6 -exit_horizontal_hl_mode rhhlm str XH - - ----K Exit horizontal highlight mode -exit_left_hl_mode rlhlm str XL - - ----K Exit left highlight mode -exit_low_hl_mode rlohlm str XO - - ----K Exit low highlight mode -exit_right_hl_mode rrhlm str XR - - ----K Exit right highlight mode -exit_top_hl_mode rthlm str XT - - ----K Exit top highlight mode -exit_vertical_hl_mode rvhlm str XV - - ----K Exit vertical highlight mode +set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap). +enter_horizontal_hl_mode ehhlm str Q1 - - ----- Enter horizontal highlight mode +enter_left_hl_mode elhlm str Q2 - - ----- Enter left highlight mode +enter_low_hl_mode elohlm str Q3 - - ----- Enter low highlight mode +enter_right_hl_mode erhlm str Q4 - - ----- Enter right highlight mode +enter_top_hl_mode ethlm str Q5 - - ----- Enter top highlight mode +enter_vertical_hl_mode evhlm str Q6 - - ----- Enter vertical highlight mode +set_a_attributes sgr1 str Q7 - - ----- Define second set of video attributes #1-#6 +exit_horizontal_hl_mode rmhhlm str Q8 - - ----K Exit horizontal highlight mode +exit_left_hl_mode rmlhlm str Q9 - - ----K Exit left highlight mode +exit_low_hl_mode rmlohlm str Qa - - ----K Exit low highlight mode +exit_right_hl_mode rmrhlm str Qb - - ----K Exit right highlight mode +exit_top_hl_mode rmthlm str Qc - - ----K Exit top highlight mode +exit_vertical_hl_mode rmvhlm str Qd - - ----K Exit vertical highlight mode #%.TE #%.ad # @@ -838,7 +847,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # GNU termcap *does* include the following extended capability, Only the # now-obsolete Ann Arbor terminals used it. # -# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region +# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region # # The following comments describe capnames so ancient that I believe no # software uses them any longer. Some of these have to go because they @@ -855,9 +864,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # comma-separated list of capabilities for which there are corresponding keys. # The `kn' code is accepted but ignored. # -# The `ma' capability seems to have been designed to map between the rogue(2) -# motion keys (including jkhl) and characters emitted by arrow keys on some -# primitive pre-ANSI terminals. It's so obsolete it's fossilized... +# The `ma' capability was a 4.0BSD feature used by vi version 2. +# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. +# Besides being obsolete, that interpretation conflicts with max_attributes. # # Here is a description of memory_lock_above and memory_unlock: # "You can 'freeze' data on the screen by turning on Memory Lock in a line of @@ -883,14 +892,14 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V number_of_function_keys OTkn num kn - - -B-G- count of function keys other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps -arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys +arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I return_does_clr_eol OTxr bool xr - - YB--- return clears the line # tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch # -# mytinfo described this as a termcap capability, but it's not listed in the +# mytinfo described this as a termcap capability, but it is not listed in the # 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses # package, like System V, behaves as though it is always true. # @@ -899,7 +908,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # University of Waterloo termcap extensions (as described in mytinfo). # The `xl' termcap file clashes with a terminfo name; this ambiguity cannot # be resolved by a type check. The descriptions are guesses from what was -# in the mytinfo tables. +# in the mytinfo tables. # # key_interrupt_char OTki str ki - - ----- string set by interrupt key (?) # key_kill_char OTkk str kk - - ----- string set by kill key (?) @@ -948,7 +957,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # Gv 186 \272 M-: double vertical line # # The compiler will translate the single-line caps and discard the others -# (via IGNORE aliases further down). We don't want to do normal pad +# (via IGNORE aliases further down). We don't want to do normal pad # translation on these, they're often single-character printable ASCII # strings that happen to be numerics. There's awk code in parametrized.sh # that detects the acs_ prefix and uses it to suppress pad translation. @@ -970,303 +979,8 @@ acs_plus OTGC str GC - - ----- single intersection # # TERMINFO EXTENSION CAPABILITIES # -# This section is almost all comments. What it's mainly for is to describe -# what capabilities need to be squeezed out to get down to the XSI Curses -# standard set. They are flagged with K. -# -# HP extensions -# -# These extensions follow ptr_non (replacing everything after it) in HP -# terminfo files. Except for memory_lock and memory_unlock, they are -# functionally identical to SVr4 extensions, but they make the binary format -# different. Grrr.... -# -#memory_lock meml str ml - - ----K memory lock above -#memory_unlock memu str mu - - ----K memory unlock -#plab_norm pln str pn - - ----- program label #1 to show string #2 -#label_on smln str LO - - ----- turn on soft labels -#label_off rmln str LF - - ----- turn off soft labels -#key_f11 kf11 str F1 - - ----- F11 function key -#key_f12 kf12 str F2 - - ----- F12 function key -#key_f13 kf13 str F3 - - ----- F13 function key -#key_f14 kf14 str F4 - - ----- F14 function key -#key_f15 kf15 str F5 - - ----- F15 function key -#key_f16 kf16 str F6 - - ----- F16 function key -#key_f17 kf17 str F7 - - ----- F17 function key -#key_f18 kf18 str F8 - - ----- F18 function key -#key_f19 kf19 str F9 - - ----- F19 function key -#key_f20 kf20 str FA - - ----- F20 function key -#key_f21 kf21 str FB - - ----- F21 function key -#key_f22 kf22 str FC - - ----- F22 function key -#key_f23 kf23 str FD - - ----- F23 function key -#key_f24 kf24 str FE - - ----- F24 function key -#key_f25 kf25 str FF - - ----- F25 function key -#key_f26 kf26 str FG - - ----- F26 function key -#key_f27 kf27 str FH - - ----- F27 function key -#key_f28 kf28 str FI - - ----- F28 function key -#key_f29 kf29 str FJ - - ----- F29 function key -#key_f30 kf30 str FK - - ----- F30 function key -#key_f31 kf31 str FL - - ----- F31 function key -#key_f32 kf32 str FM - - ----- F32 function key -#key_f33 kf33 str FN - - ----- F33 function key -#key_f34 kf34 str FO - - ----- F34 function key -#key_f35 kf35 str FP - - ----- F35 function key -#key_f36 kf36 str FQ - - ----- F36 function key -#key_f37 kf37 str FR - - ----- F37 function key -#key_f38 kf38 str FS - - ----- F38 function key -#key_f39 kf39 str FT - - ----- F39 function key -#key_f40 kf40 str FU - - ----- F40 function key -#key_f41 kf41 str FV - - ----- F41 function key -#key_f42 kf42 str FW - - ----- F42 function key -#key_f43 kf43 str FX - - ----- F43 function key -#key_f44 kf44 str FY - - ----- F44 function key -#key_f45 kf45 str FZ - - ----- F45 function key -#key_f46 kf46 str Fa - - ----- F46 function key -#key_f47 kf47 str Fb - - ----- F47 function key -#key_f48 kf48 str Fc - - ----- F48 function key -#key_f49 kf49 str Fd - - ----- F49 function key -#key_f50 kf50 str Fe - - ----- F50 function key -#key_f51 kf51 str Ff - - ----- F51 function key -#key_f52 kf52 str Fg - - ----- F52 function key -#key_f53 kf53 str Fh - - ----- F53 function key -#key_f54 kf54 str Fi - - ----- F54 function key -#key_f55 kf55 str Fj - - ----- F55 function key -#key_f56 kf56 str Fk - - ----- F56 function key -#key_f57 kf57 str Fl - - ----- F57 function key -#key_f58 kf58 str Fm - - ----- F58 function key -#key_f59 kf59 str Fn - - ----- F59 function key -#key_f60 kf60 str Fo - - ----- F60 function key -#key_f61 kf61 str Fp - - ----- F61 function key -#key_f62 kf62 str Fq - - ----- F62 function key -#key_f63 kf63 str Fr - - ----- F63 function key -# -# IBM extensions -# -# These extensions follow ptr_non (replacing everything after it) in IBM -# terminfo files. -# -# The places in the box[12] capabilities correspond to acsc characters, here is -# the mapping: -# -# box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE -# box1[2] = ACS_URCORNER -# box1[3] = ACS_VLINE -# box1[4] = ACS_LRCORNER -# box1[5] = ACS_LLCORNER -# box1[6] = ACS_TTEE -# box1[7] = ACS_RTEE -# box1[8] = ACS_BTEE -# box1[9] = ACS_LTEE -# box1[10] = ACS_PLUS -# -# The box2 characters are the double-line versions of these forms graphics. +# (see Caps-ncurses for the complete set of comments) # box_chars_1 box1 str bx - - ----K box characters primary set -#box_chars_2 box2 str by - - ----K box characters secondary set -#box_attr_1 batt1 str Bx - - ----K attributes for box1 -#box_attr_2 batt2 str By - - ----K attributes for box2 -#color_bg_0 colb0 str d0 - - ----K background color 0 -#color_bg_1 colb1 str d1 - - ----K background color 1 -#color_bg_2 colb2 str d2 - - ----K background color 2 -#color_bg_3 colb3 str d3 - - ----K background color 3 -#color_bg_4 colb4 str d4 - - ----K background color 4 -#color_bg_5 colb5 str d5 - - ----K background color 5 -#color_bg_6 colb6 str d6 - - ----K background color 6 -#color_bg_7 colb7 str d7 - - ----K background color 7 -#color_fg_0 colf0 str c0 - - ----K foreground color 0 -#color_fg_1 colf1 str c1 - - ----K foreground color 1 -#color_fg_2 colf2 str c2 - - ----K foreground color 2 -#color_fg_3 colf3 str c3 - - ----K foreground color 3 -#color_fg_4 colf4 str c4 - - ----K foreground color 4 -#color_fg_5 colf5 str c5 - - ----K foreground color 5 -#color_fg_6 colf6 str c6 - - ----K foreground color 6 -#color_fg_7 colf7 str c7 - - ----K foreground color 7 -#font_0 font0 str f0 - - ----- select font 0 -#font_1 font1 str f1 - - ----- select font 1 -#font_2 font2 str f2 - - ----- select font 2 -#font_3 font3 str f3 - - ----- select font 3 -#font_4 font4 str f4 - - ----K select font 4 -#font_5 font5 str f5 - - ----K select font 5 -#font_6 font6 str f6 - - ----K select font 6 -#font_7 font7 str f7 - - ----K select font 7 -#key_back_tab kbtab str k0 - - ----- backtab key -#key_do kdo str ki - - ----K do request key -#key_command kcmd str kd - - ----K command-request key -#key_command_pane kcpn str kW - - ----K command-pane key -#key_end kend str kw - - ----- end key -#key_help khlp str kq - - ----- help key -#key_newline knl str nl - - ----K newline key -#key_next_pane knpn str kv - - ----K next-pane key -#key_prev_cmd kppn str kp - - ----K previous-command key -#key_prev_pane kppn str kV - - ----K previous-pane key -#key_quit kquit str kQ - - ----K quit key -#key_select ksel str kU - - ----- select key -#key_scroll_left kscl str kz - - ----K scroll left -#key_scroll_right kscr str kZ - - ----K scroll right -#key_tab ktab str ko - - ----K tab key -#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input -#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output -#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input -#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output -#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input -#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output -#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input -#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output -#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input -#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output -#appl_defined_str apstr str za - - ----K application-defined string -# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in -# the IBM manual pages, so the cap name strings are guesses. The terminfo -# names are almost certainly right, the termcap ones almost certainly wrong. -#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input -#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output -#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input -#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output -#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input -#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output -#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input -#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output -# Undocumented capabilities end here -#key_sf1 ksf1 str S1 - - ----K special function key 1 -#key_sf2 ksf2 str S2 - - ----K special function key 2 -#key_sf3 ksf3 str S3 - - ----K special function key 3 -#key_sf4 ksf4 str S4 - - ----K special function key 4 -#key_sf5 ksf5 str S5 - - ----K special function key 5 -#key_sf6 ksf6 str S6 - - ----K special function key 6 -#key_sf7 ksf7 str S7 - - ----K special function key 7 -#key_sf8 ksf8 str S8 - - ----K special function key 8 -#key_sf9 ksf9 str S9 - - ----K special function key 9 -#key_sf10 ksf10 str SA - - ----K special function key 10 -# AIX version 3 documents different codes for F11, F12 and does not mention -# F13-F64. AIX version 4 uses the same naming for F0-F63 as above. -#key_f11 kf11 str k< - - ----- function key 11 -#key_f12 kf12 str k> - - ----- function key 12 -# Undocumented capabilities end here. -#key_action kact str kJ - - ----K sent by action key -# The IBM docs say these capabilities are for table-drawing, and are -# valid only for aixterm descriptions. -#enter_topline_mode topl str tp - - ----K start top-line mode -#enter_bottom_mode btml str bm - - ----K start bottom-line mode -#enter_rvert_mode rvert str rv - - ----K start right-vertical mode -#enter_lvert_mode lvert str lv - - ----K start left-vertical mode -# -############################################################################# -# -# ALIAS DECLARATIONS -# -# Here we set up aliases for translating extensions into standard terminfo. -# -#---------------------------------- Termcap aliases ------------------------- -# -# BSD aliases: -# -# This is a common error in many termcap files. We'll get notified during -# translation when this (or any other alias) fires. -# -capalias sb sr BSD scroll text down -# -# AT&T extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish the following mappings: -# -capalias BO mr AT&T enter_reverse_mode -capalias CI vi AT&T cursor_invisible -capalias CV ve AT&T cursor_normal -capalias DS mh AT&T enter_dim_mode -#capalias EE me AT&T exit_attribute_mode -capalias FE LF AT&T label_on -capalias FL LO AT&T label_off -capalias XS mk AT&T enter_secure_mode -# -# We comment out EE because the conflicting XENIX EE is more common in -# old entries. -# -# XENIX extensions: -# -# These are the ones we know how to translate directly: -# -capalias EE mh XENIX exit_attribute_mode -capalias GE ae XENIX exit_alt_charset_mode -capalias GS as XENIX enter_alt_charset_mode -capalias CF vi XENIX cursor_invis -capalias CO ve XENIX cursor_normal -capalias EN @7 XENIX key_end -capalias HM kh XENIX key_home -capalias LD kL XENIX key_dl -capalias PD kN XENIX key_npage -capalias PN po XENIX prtr_off -capalias PS pf XENIX prtr_on -capalias PU kP XENIX key_ppage -capalias RT @8 XENIX kent -capalias UP ku XENIX kcuu1 -capalias G6 IGNORE XENIX double-ACS_ULCORNER -capalias G7 IGNORE XENIX double-ACS_LLCORNER -capalias G5 IGNORE XENIX double-ACS_URCORNER -capalias G8 IGNORE XENIX double-ACS_LRCORNER -capalias Gr IGNORE XENIX double-ACS_LTEE -capalias Gr IGNORE XENIX double-ACS_RTEE -capalias Gu IGNORE XENIX double-ACS_BTEE -capalias Gd IGNORE XENIX double ACS_TTEE -capalias Gh IGNORE XENIX double-ACS_HLINE -capalias Gv IGNORE XENIX double-ACS_VLINE -capalias Gc IGNORE XENIX double-ACS_PLUS -capalias GG IGNORE XENIX acs-glitch -# -# IBM extensions: -# -capalias kq %1 IBM key_help -# -# Iris extensions: -# -capalias HS mh IRIS enter_dim_mode -# -# Tektronix extensions: -# -capalias KA k; Tek key_f10 -capalias KB F1 Tek key_f11 -capalias KC F2 Tek key_f12 -capalias KD F3 Tek key_f13 -capalias KE F4 Tek key_f14 -capalias KF F5 Tek key_f15 -capalias BC Sb Tek set_background -capalias FC Sf Tek set_foreground -# -# There are also the following: -# -# XENIX XENIX variable name name clash with terminfo? -# ----- ------------------- ------------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window -# HP ?? -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PL ?? -# PR ?? -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# WL key_word_left -# WR key_word_right -# -# If you know what any of the question-marked ones mean, please tell us. -# -#--------------------------------- Terminfo aliases ------------------------ -# -# IBM extensions: -# -infoalias font0 s0ds IBM set0_des_seq -infoalias font1 s1ds IBM set1_des_seq -infoalias font2 s2ds IBM set2_des_seq -infoalias font3 s3ds IBM set3_des_seq -infoalias kbtab kcbt IBM key_backtab -infoalias ksel kslt IBM key_select -# -# Some others are identical to SVr4/XPG4 capabilities, in particular: -# kcmd, kend, khlp, and kf11...kf63. # ############################################################################# diff --git a/deps/ncurses-5.9/include/Caps.keys b/deps/ncurses-6.3/include/Caps.keys similarity index 79% rename from deps/ncurses-5.9/include/Caps.keys rename to deps/ncurses-6.3/include/Caps.keys index 4d4fe30..09d7a47 100644 --- a/deps/ncurses-5.9/include/Caps.keys +++ b/deps/ncurses-6.3/include/Caps.keys @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2001-2006,2010 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2001-2015,2016 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"), # @@ -29,14 +30,14 @@ # Author: Thomas Dickey # and: Ilya Zakharevich # -# $Id: Caps.keys,v 1.4 2010/12/04 18:47:13 tom Exp $ +# $Id: Caps.keys,v 1.17 2021/10/08 07:55:48 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is illustrates an experimental extension to describe alt-, shift- and # control-modifiers applied to function and normal keys, as done on IBM pc's. # # This table is used to generate initializers for tables that drive tic, -# infocmp, and the library compilation code used to support the termcap +# infocmp, and the library compilation code used to support the termcap # compatibility hack. It is also used to generate the tabular portion of the # terminfo(5) man page; lines beginning with `#%' are passed through to become # the terminfo table. @@ -59,7 +60,7 @@ # # The codes following [Y-] in column 7 describe the versions of termcap which # use the given capability. This information is not used by the curses library -# proper; rather, it's there to help the terminfo maintainer avoid emitting +# proper; rather, it is there to help the terminfo maintainer avoid emitting # termcap entry translations that are more than 1023 bytes long (and tank a # lot of old termcap-using programs). The codes read as follows: # B = mentioned in the BSD man page for 4.4BSD curses @@ -99,8 +100,8 @@ # 3. List it in the standard table. You almost certainly do *not* want # to do this -- the capabilities in that one, and their order, have been # carefully chosen to be SVr4-binary-compatible when they're written out -# as a terminfo object, and breaking this would be bad. It's up the ncurses -# library what to do with the terminfo data after it's read in. +# as a terminfo object, and breaking this would be bad. It is up to the ncurses +# library what to do with the terminfo data after it is read in. # # 4. List it in the aliases table with an IGNORE target field. If you # do this, the capability will be ignored on input (though the user will @@ -109,7 +110,7 @@ # 5. List it in the extensions table. If you do this, the compiler will # silently accept the capability, but the curses library proper will never # see it (because it won't be written out as part of the terminfo object -# format). It's up to you what you have the compiler do with it. +# format). It is up to you what you have the compiler do with it. # # There are two opposite reasons to choose option 5. One is when you want # to eat the capability silently and discard it when doing translations @@ -121,14 +122,14 @@ # You'll need to write custom code, probably in postprocess_termcap() or # postprocess_terminfo(), to handle the translation. # -# CONTROLLING ENTRY LENGTH +# CONTROLLING ENTRY LENGTH # # Notes on specific elisions made to fit translations within 1023 bytes: # # Machines with IBM PC-like keyboards want to be able to define the following # keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap- # only environments for End or Home-Down), key_dc, and key_ic. This is also -# the set of keys the `joe' editor will be upset if it can't see. So don't +# the set of keys the `joe' editor will be upset if it can't see. So don't # trim those out of the set to be translated to termcap, or various users of # the termcap file will become irate. # @@ -149,7 +150,7 @@ # # It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap # translations go back over critical if we do this. As 4.4BSD curses fades -# into history and GNU termcap's application base shrinks towards being GNU +# into history and GNU termcap's application base shrinks towards being GNU # Emacs only, we'll probably elide out some BSD-only capabilities in order # to buy space for non-essentials Emacs is still using. Capabilities high # on that hit list: rc, sc, uc. @@ -168,7 +169,7 @@ #%The \fBcapname\fR is the short name used in the text of the database, #%and is used by a person updating the database. #%Whenever possible, capnames are chosen to be the same as or similar to -#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses +#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses #%identical or very similar names). Semantics are also intended to match #%those of the specification. #% @@ -190,8 +191,12 @@ #%indicates that padding may be specified #%.TP #%#[1-9] -#%in the description field indicates that the string is passed through tparm with -#%parms as given (#\fIi\fP). +#%in the description field indicates that the string is passed +#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP). +#%.IP +#%If no parameters are listed in the description, +#%passing the string through \fBtparm\fP(3X) may give unexpected results, +#%e.g., if it contains percent (%%) signs. #%.TP #%(P*) #%indicates that padding may vary in proportion to the number of @@ -229,11 +234,11 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode over_strike os bool os - - YBCG- terminal can overstrike status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061) -tilde_glitch hz bool hz - - YB-GE can't print ~'s (hazeltine) +tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine) transparent_underline ul bool ul - - YBCGE underline character overstrikes xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking -needs_xon_xoff nxon bool nx - - ----- padding won't work, xon/xoff required -prtr_silent mc5i bool 5i - - ----- printer won't echo on screen +needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required +prtr_silent mc5i bool 5i - - ----- printer will not echo on screen hard_cursor chts bool HC - - ----- cursor is hard to see non_rev_rmcup nrrmc bool NR - - ----- smcup does not reverse rmcup no_pad_char npc bool NP - - ----- pad character does not exist @@ -273,11 +278,11 @@ num_labels nlab num Nl - - ----- number of labels on screen 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 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 -no_color_video ncv num NC - - ----- video attributes that can't be used with colors +no_color_video ncv num NC - - ----- video attributes that cannot be used with colors #%.TE #%.ad #% @@ -598,7 +603,7 @@ key_f62 kf62 str Fq KEY_F(62) - ----E F62 function key key_f63 kf63 str Fr KEY_F(63) - ----E F63 function key clr_bol el1 str cb - - ----- Clear to beginning of line clear_margins mgc str MC - - ----- clear right and left soft margins -set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap). +set_left_margin smgl str ML - - ----- set left soft margin at current column. (ML is not in BSD termcap). set_right_margin smgr str MR - - ----- set right soft margin at current column label_format fln str Lf - - ----- label format set_clock sclk str SC - - ----- set clock, #1 hrs #2 mins #3 secs @@ -809,7 +814,7 @@ bit_image_repeat birep str Xy - - ----- Repeat bit image cell #1 #2 times bit_image_newline binel str Zz - - ----- Move to next row of the bit image bit_image_carriage_return bicr str Yv - - ----- Move to beginning of same row color_names colornm str Yw - - ----- Give name for color #1 -define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region +define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region end_bit_image_region endbi str Yy - - ----- End a bit-image region set_color_band setcolor str Yz - - ----- Change to ribbon color #1 set_page_length slines str YZ - - ----- Set page length to #1 lines @@ -828,11 +833,13 @@ alt_scancode_esc scesa str S8 - - ----- Alternate escape for scancode emulatio #%.ad #% #%.in .8i -#%The XSI Curses standard added these. They are some post-4.1 -#%versions of System V curses, e.g., Solaris 2.5 and IRIX 6.x. -#%The \fBncurses\fR termcap names for them are invented; according to the -#%XSI Curses standard, they have no termcap names. If your compiled terminfo -#%entries use these, they may not be binary-compatible with System V terminfo +#%The XSI Curses standard added these hardcopy capabilities. +#%They were used in some post-4.1 versions of System V curses, +#%e.g., Solaris 2.5 and IRIX 6.x. +#%Except for \fBYI\fP, the \fBncurses\fR termcap names for them are invented. +#%According to the XSI Curses standard, they have no termcap names. +#%If your compiled terminfo entries use these, +#%they may not be binary-compatible with System V terminfo #%entries after SVr4.1; beware! #% #%.na @@ -850,7 +857,7 @@ enter_right_hl_mode erhlm str Xr - - ----- Enter right highlight mode enter_top_hl_mode ethlm str Xt - - ----- Enter top highlight mode enter_vertical_hl_mode evhlm str Xv - - ----- Enter vertical highlight mode set_a_attributes sgr1 str sA - - ----- Define second set of video attributes #1-#6 -set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch +set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap). #%.TE #%.ad # @@ -914,7 +921,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # GNU termcap *does* include the following extended capability, Only the # now-obsolete Ann Arbor terminals used it. # -# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region +# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region # # The following comments describe capnames so ancient that I believe no # software uses them any longer. Some of these have to go because they @@ -931,9 +938,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # comma-separated list of capabilities for which there are corresponding keys. # The `kn' code is accepted but ignored. # -# The `ma' capability seems to have been designed to map between the rogue(2) -# motion keys (including jkhl) and characters emitted by arrow keys on some -# primitive pre-ANSI terminals. It's so obsolete it's fossilized... +# The `ma' capability was a 4.0BSD feature used by vi version 2. +# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. +# Besides being obsolete, that interpretation conflicts with max_attributes. # # Here is a description of memory_lock_above and memory_unlock: # "You can 'freeze' data on the screen by turning on Memory Lock in a line of @@ -959,14 +966,14 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V number_of_function_keys OTkn num kn - - -B-G- count of function keys other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps -arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys +arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I return_does_clr_eol OTxr bool xr - - YB--- return clears the line # tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch # -# mytinfo described this as a termcap capability, but it's not listed in the +# mytinfo described this as a termcap capability, but it is not listed in the # 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses # package, like System V, behaves as though it is always true. # @@ -975,7 +982,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # University of Waterloo termcap extensions (as described in mytinfo). # The `xl' termcap file clashes with a terminfo name; this ambiguity cannot # be resolved by a type check. The descriptions are guesses from what was -# in the mytinfo tables. +# in the mytinfo tables. # # key_interrupt_char OTki str ki - - ----- string set by interrupt key (?) # key_kill_char OTkk str kk - - ----- string set by kill key (?) @@ -1024,7 +1031,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # Gv 186 \272 M-: double vertical line # # The compiler will translate the single-line caps and discard the others -# (via IGNORE aliases further down). We don't want to do normal pad +# (via IGNORE aliases further down). We don't want to do normal pad # translation on these, they're often single-character printable ASCII # strings that happen to be numerics. There's awk code in parametrized.sh # that detects the acs_ prefix and uses it to suppress pad translation. @@ -1046,303 +1053,10 @@ acs_plus OTGC str GC - - ----- single intersection # # TERMINFO EXTENSION CAPABILITIES # -# This section is almost all comments. What it's mainly for is to describe -# what capabilities need to be squeezed out to get down to the XSI Curses -# standard set. They are flagged with K. -# -# HP extensions -# -# These extensions follow ptr_non (replacing everything after it) in HP -# terminfo files. Except for memory_lock and memory_unlock, they are -# functionally identical to SVr4 extensions, but they make the binary format -# different. Grrr.... +# (see Caps-ncurses for the complete set of comments) # memory_lock meml str ml - - ----K lock memory above cursor memory_unlock memu str mu - - ----K unlock memory -#plab_norm pln str pn - - ----- program label #1 to show string #2 -#label_on smln str LO - - ----- turn on soft labels -#label_off rmln str LF - - ----- turn off soft labels -#key_f11 kf11 str F1 - - ----- F11 function key -#key_f12 kf12 str F2 - - ----- F12 function key -#key_f13 kf13 str F3 - - ----- F13 function key -#key_f14 kf14 str F4 - - ----- F14 function key -#key_f15 kf15 str F5 - - ----- F15 function key -#key_f16 kf16 str F6 - - ----- F16 function key -#key_f17 kf17 str F7 - - ----- F17 function key -#key_f18 kf18 str F8 - - ----- F18 function key -#key_f19 kf19 str F9 - - ----- F19 function key -#key_f20 kf20 str FA - - ----- F20 function key -#key_f21 kf21 str FB - - ----- F21 function key -#key_f22 kf22 str FC - - ----- F22 function key -#key_f23 kf23 str FD - - ----- F23 function key -#key_f24 kf24 str FE - - ----- F24 function key -#key_f25 kf25 str FF - - ----- F25 function key -#key_f26 kf26 str FG - - ----- F26 function key -#key_f27 kf27 str FH - - ----- F27 function key -#key_f28 kf28 str FI - - ----- F28 function key -#key_f29 kf29 str FJ - - ----- F29 function key -#key_f30 kf30 str FK - - ----- F30 function key -#key_f31 kf31 str FL - - ----- F31 function key -#key_f32 kf32 str FM - - ----- F32 function key -#key_f33 kf33 str FN - - ----- F33 function key -#key_f34 kf34 str FO - - ----- F34 function key -#key_f35 kf35 str FP - - ----- F35 function key -#key_f36 kf36 str FQ - - ----- F36 function key -#key_f37 kf37 str FR - - ----- F37 function key -#key_f38 kf38 str FS - - ----- F38 function key -#key_f39 kf39 str FT - - ----- F39 function key -#key_f40 kf40 str FU - - ----- F40 function key -#key_f41 kf41 str FV - - ----- F41 function key -#key_f42 kf42 str FW - - ----- F42 function key -#key_f43 kf43 str FX - - ----- F43 function key -#key_f44 kf44 str FY - - ----- F44 function key -#key_f45 kf45 str FZ - - ----- F45 function key -#key_f46 kf46 str Fa - - ----- F46 function key -#key_f47 kf47 str Fb - - ----- F47 function key -#key_f48 kf48 str Fc - - ----- F48 function key -#key_f49 kf49 str Fd - - ----- F49 function key -#key_f50 kf50 str Fe - - ----- F50 function key -#key_f51 kf51 str Ff - - ----- F51 function key -#key_f52 kf52 str Fg - - ----- F52 function key -#key_f53 kf53 str Fh - - ----- F53 function key -#key_f54 kf54 str Fi - - ----- F54 function key -#key_f55 kf55 str Fj - - ----- F55 function key -#key_f56 kf56 str Fk - - ----- F56 function key -#key_f57 kf57 str Fl - - ----- F57 function key -#key_f58 kf58 str Fm - - ----- F58 function key -#key_f59 kf59 str Fn - - ----- F59 function key -#key_f60 kf60 str Fo - - ----- F60 function key -#key_f61 kf61 str Fp - - ----- F61 function key -#key_f62 kf62 str Fq - - ----- F62 function key -#key_f63 kf63 str Fr - - ----- F63 function key -# -# IBM extensions -# -# These extensions follow ptr_non (replacing everything after it) in IBM -# terminfo files. -# -# The places in the box[12] capabilities correspond to acsc characters, here is -# the mapping: -# -# box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE -# box1[2] = ACS_URCORNER -# box1[3] = ACS_VLINE -# box1[4] = ACS_LRCORNER -# box1[5] = ACS_LLCORNER -# box1[6] = ACS_TTEE -# box1[7] = ACS_RTEE -# box1[8] = ACS_BTEE -# box1[9] = ACS_LTEE -# box1[10] = ACS_PLUS -# -# The box2 characters are the double-line versions of these forms graphics. -# box_chars_1 box1 str bx - - ----K box characters primary set -#box_chars_2 box2 str by - - ----K box characters secondary set -#box_attr_1 batt1 str Bx - - ----K attributes for box1 -#box_attr_2 batt2 str By - - ----K attributes for box2 -#color_bg_0 colb0 str d0 - - ----K background color 0 -#color_bg_1 colb1 str d1 - - ----K background color 1 -#color_bg_2 colb2 str d2 - - ----K background color 2 -#color_bg_3 colb3 str d3 - - ----K background color 3 -#color_bg_4 colb4 str d4 - - ----K background color 4 -#color_bg_5 colb5 str d5 - - ----K background color 5 -#color_bg_6 colb6 str d6 - - ----K background color 6 -#color_bg_7 colb7 str d7 - - ----K background color 7 -#color_fg_0 colf0 str c0 - - ----K foreground color 0 -#color_fg_1 colf1 str c1 - - ----K foreground color 1 -#color_fg_2 colf2 str c2 - - ----K foreground color 2 -#color_fg_3 colf3 str c3 - - ----K foreground color 3 -#color_fg_4 colf4 str c4 - - ----K foreground color 4 -#color_fg_5 colf5 str c5 - - ----K foreground color 5 -#color_fg_6 colf6 str c6 - - ----K foreground color 6 -#color_fg_7 colf7 str c7 - - ----K foreground color 7 -#font_0 font0 str f0 - - ----- select font 0 -#font_1 font1 str f1 - - ----- select font 1 -#font_2 font2 str f2 - - ----- select font 2 -#font_3 font3 str f3 - - ----- select font 3 -#font_4 font4 str f4 - - ----K select font 4 -#font_5 font5 str f5 - - ----K select font 5 -#font_6 font6 str f6 - - ----K select font 6 -#font_7 font7 str f7 - - ----K select font 7 -#key_back_tab kbtab str k0 - - ----- backtab key -#key_do kdo str ki - - ----K do request key -#key_command kcmd str kd - - ----K command-request key -#key_command_pane kcpn str kW - - ----K command-pane key -#key_end kend str kw - - ----- end key -#key_help khlp str kq - - ----- help key -#key_newline knl str nl - - ----K newline key -#key_next_pane knpn str kv - - ----K next-pane key -#key_prev_cmd kppn str kp - - ----K previous-command key -#key_prev_pane kppn str kV - - ----K previous-pane key -#key_quit kquit str kQ - - ----K quit key -#key_select ksel str kU - - ----- select key -#key_scroll_left kscl str kz - - ----K scroll left -#key_scroll_right kscr str kZ - - ----K scroll right -#key_tab ktab str ko - - ----K tab key -#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input -#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output -#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input -#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output -#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input -#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output -#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input -#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output -#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input -#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output -#appl_defined_str apstr str za - - ----K application-defined string -# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in -# the IBM manual pages, so the cap name strings are guesses. The terminfo -# names are almost certainly right, the termcap ones almost certainly wrong. -#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input -#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output -#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input -#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output -#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input -#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output -#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input -#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output -# Undocumented capabilities end here -#key_sf1 ksf1 str S1 - - ----K special function key 1 -#key_sf2 ksf2 str S2 - - ----K special function key 2 -#key_sf3 ksf3 str S3 - - ----K special function key 3 -#key_sf4 ksf4 str S4 - - ----K special function key 4 -#key_sf5 ksf5 str S5 - - ----K special function key 5 -#key_sf6 ksf6 str S6 - - ----K special function key 6 -#key_sf7 ksf7 str S7 - - ----K special function key 7 -#key_sf8 ksf8 str S8 - - ----K special function key 8 -#key_sf9 ksf9 str S9 - - ----K special function key 9 -#key_sf10 ksf10 str SA - - ----K special function key 10 -# AIX version 3 documents different codes for F11, F12 and does not mention -# F13-F64. AIX version 4 uses the same naming for F0-F63 as above. -#key_f11 kf11 str k< - - ----- function key 11 -#key_f12 kf12 str k> - - ----- function key 12 -# Undocumented capabilities end here. -#key_action kact str kJ - - ----K sent by action key -# The IBM docs say these capabilities are for table-drawing, and are -# valid only for aixterm descriptions. -#enter_topline_mode topl str tp - - ----K start top-line mode -#enter_bottom_mode btml str bm - - ----K start bottom-line mode -#enter_rvert_mode rvert str rv - - ----K start right-vertical mode -#enter_lvert_mode lvert str lv - - ----K start left-vertical mode -# -############################################################################# -# -# ALIAS DECLARATIONS -# -# Here we set up aliases for translating extensions into standard terminfo. -# -#---------------------------------- Termcap aliases ------------------------- -# -# BSD aliases: -# -# This is a common error in many termcap files. We'll get notified during -# translation when this (or any other alias) fires. -# -capalias sb sr BSD scroll text down -# -# AT&T extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish the following mappings: -# -capalias BO mr AT&T enter_reverse_mode -capalias CI vi AT&T cursor_invisible -capalias CV ve AT&T cursor_normal -capalias DS mh AT&T enter_dim_mode -#capalias EE me AT&T exit_attribute_mode -capalias FE LF AT&T label_on -capalias FL LO AT&T label_off -capalias XS mk AT&T enter_secure_mode -# -# We comment out EE because the conflicting XENIX EE is more common in -# old entries. -# -# XENIX extensions: -# -# These are the ones we know how to translate directly: -# -capalias EE mh XENIX exit_attribute_mode -capalias GE ae XENIX exit_alt_charset_mode -capalias GS as XENIX enter_alt_charset_mode -capalias CF vi XENIX cursor_invis -capalias CO ve XENIX cursor_normal -capalias EN @7 XENIX key_end -capalias HM kh XENIX key_home -capalias LD kL XENIX key_dl -capalias PD kN XENIX key_npage -capalias PN po XENIX prtr_off -capalias PS pf XENIX prtr_on -capalias PU kP XENIX key_ppage -capalias RT @8 XENIX kent -capalias UP ku XENIX kcuu1 -capalias G6 IGNORE XENIX double-ACS_ULCORNER -capalias G7 IGNORE XENIX double-ACS_LLCORNER -capalias G5 IGNORE XENIX double-ACS_URCORNER -capalias G8 IGNORE XENIX double-ACS_LRCORNER -capalias Gr IGNORE XENIX double-ACS_LTEE -capalias Gr IGNORE XENIX double-ACS_RTEE -capalias Gu IGNORE XENIX double-ACS_BTEE -capalias Gd IGNORE XENIX double ACS_TTEE -capalias Gh IGNORE XENIX double-ACS_HLINE -capalias Gv IGNORE XENIX double-ACS_VLINE -capalias Gc IGNORE XENIX double-ACS_PLUS -capalias GG IGNORE XENIX acs-glitch -# -# IBM extensions: -# -capalias kq %1 IBM key_help -# -# Iris extensions: -# -capalias HS mh IRIS enter_dim_mode -# -# Tektronix extensions: -# -capalias KA k; Tek key_f10 -capalias KB F1 Tek key_f11 -capalias KC F2 Tek key_f12 -capalias KD F3 Tek key_f13 -capalias KE F4 Tek key_f14 -capalias KF F5 Tek key_f15 -capalias BC Sb Tek set_background -capalias FC Sf Tek set_foreground -# -# There are also the following: -# -# XENIX XENIX variable name name clash with terminfo? -# ----- ------------------- ------------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window -# HP ?? -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PL ?? -# PR ?? -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# WL key_word_left -# WR key_word_right -# -# If you know what any of the question-marked ones mean, please tell us. -# -#--------------------------------- Terminfo aliases ------------------------ -# -# IBM extensions: -# -infoalias font0 s0ds IBM set0_des_seq -infoalias font1 s1ds IBM set1_des_seq -infoalias font2 s2ds IBM set2_des_seq -infoalias font3 s3ds IBM set3_des_seq -infoalias kbtab kcbt IBM key_backtab -infoalias ksel kslt IBM key_select -# -# Some others are identical to SVr4/XPG4 capabilities, in particular: -# kcmd, kend, khlp, and kf11...kf63. # ############################################################################# diff --git a/deps/ncurses-5.9/include/Caps.osf1r5 b/deps/ncurses-6.3/include/Caps.osf1r5 similarity index 79% rename from deps/ncurses-5.9/include/Caps.osf1r5 rename to deps/ncurses-6.3/include/Caps.osf1r5 index 79dbf50..beb71c3 100644 --- a/deps/ncurses-5.9/include/Caps.osf1r5 +++ b/deps/ncurses-6.3/include/Caps.osf1r5 @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2002-2015,2016 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"), # @@ -28,13 +29,13 @@ # # Author: Thomas Dickey # -# $Id: Caps.osf1r5,v 1.5 2010/12/04 18:47:13 tom Exp $ +# $Id: Caps.osf1r5,v 1.16 2021/10/08 07:55:48 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with OSF/1 version 5 (Tru64) terminfo. # # This table is used to generate initializers for tables that drive tic, -# infocmp, and the library compilation code used to support the termcap +# infocmp, and the library compilation code used to support the termcap # compatibility hack. It is also used to generate the tabular portion of the # terminfo(5) man page; lines beginning with `#%' are passed through to become # the terminfo table. @@ -57,7 +58,7 @@ # # The codes following [Y-] in column 7 describe the versions of termcap which # use the given capability. This information is not used by the curses library -# proper; rather, it's there to help the terminfo maintainer avoid emitting +# proper; rather, it is there to help the terminfo maintainer avoid emitting # termcap entry translations that are more than 1023 bytes long (and tank a # lot of old termcap-using programs). The codes read as follows: # B = mentioned in the BSD man page for 4.4BSD curses @@ -97,8 +98,8 @@ # 3. List it in the standard table. You almost certainly do *not* want # to do this -- the capabilities in that one, and their order, have been # carefully chosen to be SVr4-binary-compatible when they're written out -# as a terminfo object, and breaking this would be bad. It's up the ncurses -# library what to do with the terminfo data after it's read in. +# as a terminfo object, and breaking this would be bad. It is up to the ncurses +# library what to do with the terminfo data after it is read in. # # 4. List it in the aliases table with an IGNORE target field. If you # do this, the capability will be ignored on input (though the user will @@ -107,7 +108,7 @@ # 5. List it in the extensions table. If you do this, the compiler will # silently accept the capability, but the curses library proper will never # see it (because it won't be written out as part of the terminfo object -# format). It's up to you what you have the compiler do with it. +# format). It is up to you what you have the compiler do with it. # # There are two opposite reasons to choose option 5. One is when you want # to eat the capability silently and discard it when doing translations @@ -119,14 +120,14 @@ # You'll need to write custom code, probably in postprocess_termcap() or # postprocess_terminfo(), to handle the translation. # -# CONTROLLING ENTRY LENGTH +# CONTROLLING ENTRY LENGTH # # Notes on specific elisions made to fit translations within 1023 bytes: # # Machines with IBM PC-like keyboards want to be able to define the following # keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap- # only environments for End or Home-Down), key_dc, and key_ic. This is also -# the set of keys the `joe' editor will be upset if it can't see. So don't +# the set of keys the `joe' editor will be upset if it can't see. So don't # trim those out of the set to be translated to termcap, or various users of # the termcap file will become irate. # @@ -147,7 +148,7 @@ # # It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap # translations go back over critical if we do this. As 4.4BSD curses fades -# into history and GNU termcap's application base shrinks towards being GNU +# into history and GNU termcap's application base shrinks towards being GNU # Emacs only, we'll probably elide out some BSD-only capabilities in order # to buy space for non-essentials Emacs is still using. Capabilities high # on that hit list: rc, sc, uc. @@ -166,7 +167,7 @@ #%The \fBcapname\fR is the short name used in the text of the database, #%and is used by a person updating the database. #%Whenever possible, capnames are chosen to be the same as or similar to -#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses +#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses #%identical or very similar names). Semantics are also intended to match #%those of the specification. #% @@ -188,8 +189,12 @@ #%indicates that padding may be specified #%.TP #%#[1-9] -#%in the description field indicates that the string is passed through tparm with -#%parms as given (#\fIi\fP). +#%in the description field indicates that the string is passed +#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP). +#%.IP +#%If no parameters are listed in the description, +#%passing the string through \fBtparm\fP(3X) may give unexpected results, +#%e.g., if it contains percent (%%) signs. #%.TP #%(P*) #%indicates that padding may vary in proportion to the number of @@ -227,7 +232,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode over_strike os bool os - - YBCG- terminal can overstrike status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061) -tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine) +tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine) transparent_underline ul bool ul - - YBCGE underline character overstrikes xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking back_color_erase bce bool ut - - ----- screen erased with background color @@ -280,7 +285,7 @@ max_colors colors num Co - - ----- maximum number of colors on screen max_micro_address maddr num Yd - - ----- maximum value in micro_..._address max_micro_jump mjump num Ye - - ----- maximum value in parm_..._micro max_pairs pairs num pa - - ----- maximum number of color-pairs on the screen -maximum_windows wnum num MW - - ----- maximum number of defineable windows +maximum_windows wnum num MW - - ----- maximum number of definable windows micro_col_size mcs num Yf - - ----- character step size when in micro mode micro_line_size mls num Yg - - ----- line step size when in micro mode no_color_video ncv num NC - - ----- video attributes that can not be used with colors @@ -574,7 +579,7 @@ clr_bol el1 str cb - - ----- Clear to beginning of line code_set_init csin str ci - - ----- Init sequence for multiple codesets color_names colornm str Yw - - ----- Give name for color #1 create_window cwin str CW - - ----- define a window #1 from #2,#3 to #4,#5 -define_bit_image_region defbi str Yx - - ----- Define rectangualar bit image region +define_bit_image_region defbi str Yx - - ----- Define rectangular bit image region define_char defc str ZE - - ----- Define a character #1, #2 dots wide, descender #3 device_type devt str dv - - ----- Indicate language/codeset support dial_phone dial str DI - - ----- dial number #1 @@ -738,7 +743,7 @@ set_clock sclk str SC - - ----- set clock, #1 hrs #2 mins #3 secs set_color_band setcolor str Yz - - ----- Change to ribbon color #1 set_color_pair scp str sp - - ----- Set current color pair to #1 set_foreground setf str Sf - - ----- Set foreground color #1 -set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap). +set_left_margin smgl str ML - - ----- set left soft margin at current column. (ML is not in BSD termcap). set_left_margin_parm smglp str Zm - - ----- Set left (right) margin at column #1 set_lr_margin smglr str ML - - ----- Set both left and right margins to #1, #2. (ML is not in BSD termcap). set_page_length slines str YZ - - ----- Set page length to #1 lines @@ -769,7 +774,7 @@ wait_tone wait str WA - - ----- wait for dial-tone xoff_character xoffc str XF - - ----- XOFF character xon_character xonc str XN - - ----- XON character zero_motion zerom str Zx - - ----- No motion for subsequent character -set_pglen_inch slength str sL - - ----- YI Set page length to #1 hundredth of an inch +set_pglen_inch slength str YI - - ----- Set page length to #1 hundredth of an inch (some implementations use sL for termcap). enter_horizontal_hl_mode ehhlm str Xh - - ----- Enter horizontal highlight mode enter_left_hl_mode elhlm str Xl - - ----- Enter left highlight mode enter_low_hl_mode elohlm str Xo - - ----- Enter low highlight mode @@ -834,7 +839,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # GNU termcap *does* include the following extended capability, Only the # now-obsolete Ann Arbor terminals used it. # -# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region +# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region # # The following comments describe capnames so ancient that I believe no # software uses them any longer. Some of these have to go because they @@ -851,9 +856,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # comma-separated list of capabilities for which there are corresponding keys. # The `kn' code is accepted but ignored. # -# The `ma' capability seems to have been designed to map between the rogue(2) -# motion keys (including jkhl) and characters emitted by arrow keys on some -# primitive pre-ANSI terminals. It's so obsolete it's fossilized... +# The `ma' capability was a 4.0BSD feature used by vi version 2. +# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. +# Besides being obsolete, that interpretation conflicts with max_attributes. # # Here is a description of memory_lock_above and memory_unlock: # "You can 'freeze' data on the screen by turning on Memory Lock in a line of @@ -879,14 +884,14 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V number_of_function_keys OTkn num kn - - -B-G- count of function keys other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps -arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys +arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I return_does_clr_eol OTxr bool xr - - YB--- return clears the line # tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch # -# mytinfo described this as a termcap capability, but it's not listed in the +# mytinfo described this as a termcap capability, but it is not listed in the # 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses # package, like System V, behaves as though it is always true. # @@ -895,7 +900,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # University of Waterloo termcap extensions (as described in mytinfo). # The `xl' termcap file clashes with a terminfo name; this ambiguity cannot # be resolved by a type check. The descriptions are guesses from what was -# in the mytinfo tables. +# in the mytinfo tables. # # key_interrupt_char OTki str ki - - ----- string set by interrupt key (?) # key_kill_char OTkk str kk - - ----- string set by kill key (?) @@ -944,7 +949,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # Gv 186 \272 M-: double vertical line # # The compiler will translate the single-line caps and discard the others -# (via IGNORE aliases further down). We don't want to do normal pad +# (via IGNORE aliases further down). We don't want to do normal pad # translation on these, they're often single-character printable ASCII # strings that happen to be numerics. There's awk code in parametrized.sh # that detects the acs_ prefix and uses it to suppress pad translation. @@ -966,303 +971,9 @@ acs_plus OTGC str GC - - ----- single intersection # # TERMINFO EXTENSION CAPABILITIES # -# This section is almost all comments. What it's mainly for is to describe -# what capabilities need to be squeezed out to get down to the XSI Curses -# standard set. They are flagged with K. -# -# HP extensions -# -# These extensions follow ptr_non (replacing everything after it) in HP -# terminfo files. Except for memory_lock and memory_unlock, they are -# functionally identical to SVr4 extensions, but they make the binary format -# different. Grrr.... +# (see Caps-ncurses for the complete set of comments) # memory_lock meml str ml - - ----K lock memory above cursor memory_unlock memu str mu - - ----K unlock memory -#plab_norm pln str pn - - ----- program label #1 to show string #2 -#label_on smln str LO - - ----- turn on soft labels -#label_off rmln str LF - - ----- turn off soft labels -#key_f11 kf11 str F1 - - ----- F11 function key -#key_f12 kf12 str F2 - - ----- F12 function key -#key_f13 kf13 str F3 - - ----- F13 function key -#key_f14 kf14 str F4 - - ----- F14 function key -#key_f15 kf15 str F5 - - ----- F15 function key -#key_f16 kf16 str F6 - - ----- F16 function key -#key_f17 kf17 str F7 - - ----- F17 function key -#key_f18 kf18 str F8 - - ----- F18 function key -#key_f19 kf19 str F9 - - ----- F19 function key -#key_f20 kf20 str FA - - ----- F20 function key -#key_f21 kf21 str FB - - ----- F21 function key -#key_f22 kf22 str FC - - ----- F22 function key -#key_f23 kf23 str FD - - ----- F23 function key -#key_f24 kf24 str FE - - ----- F24 function key -#key_f25 kf25 str FF - - ----- F25 function key -#key_f26 kf26 str FG - - ----- F26 function key -#key_f27 kf27 str FH - - ----- F27 function key -#key_f28 kf28 str FI - - ----- F28 function key -#key_f29 kf29 str FJ - - ----- F29 function key -#key_f30 kf30 str FK - - ----- F30 function key -#key_f31 kf31 str FL - - ----- F31 function key -#key_f32 kf32 str FM - - ----- F32 function key -#key_f33 kf33 str FN - - ----- F33 function key -#key_f34 kf34 str FO - - ----- F34 function key -#key_f35 kf35 str FP - - ----- F35 function key -#key_f36 kf36 str FQ - - ----- F36 function key -#key_f37 kf37 str FR - - ----- F37 function key -#key_f38 kf38 str FS - - ----- F38 function key -#key_f39 kf39 str FT - - ----- F39 function key -#key_f40 kf40 str FU - - ----- F40 function key -#key_f41 kf41 str FV - - ----- F41 function key -#key_f42 kf42 str FW - - ----- F42 function key -#key_f43 kf43 str FX - - ----- F43 function key -#key_f44 kf44 str FY - - ----- F44 function key -#key_f45 kf45 str FZ - - ----- F45 function key -#key_f46 kf46 str Fa - - ----- F46 function key -#key_f47 kf47 str Fb - - ----- F47 function key -#key_f48 kf48 str Fc - - ----- F48 function key -#key_f49 kf49 str Fd - - ----- F49 function key -#key_f50 kf50 str Fe - - ----- F50 function key -#key_f51 kf51 str Ff - - ----- F51 function key -#key_f52 kf52 str Fg - - ----- F52 function key -#key_f53 kf53 str Fh - - ----- F53 function key -#key_f54 kf54 str Fi - - ----- F54 function key -#key_f55 kf55 str Fj - - ----- F55 function key -#key_f56 kf56 str Fk - - ----- F56 function key -#key_f57 kf57 str Fl - - ----- F57 function key -#key_f58 kf58 str Fm - - ----- F58 function key -#key_f59 kf59 str Fn - - ----- F59 function key -#key_f60 kf60 str Fo - - ----- F60 function key -#key_f61 kf61 str Fp - - ----- F61 function key -#key_f62 kf62 str Fq - - ----- F62 function key -#key_f63 kf63 str Fr - - ----- F63 function key -# -# IBM extensions -# -# These extensions follow ptr_non (replacing everything after it) in IBM -# terminfo files. -# -# The places in the box[12] capabilities correspond to acsc characters, here is -# the mapping: -# -# box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE -# box1[2] = ACS_URCORNER -# box1[3] = ACS_VLINE -# box1[4] = ACS_LRCORNER -# box1[5] = ACS_LLCORNER -# box1[6] = ACS_TTEE -# box1[7] = ACS_RTEE -# box1[8] = ACS_BTEE -# box1[9] = ACS_LTEE -# box1[10] = ACS_PLUS -# -# The box2 characters are the double-line versions of these forms graphics. -# -#box_chars_1 box1 str bx - - ----K box characters primary set -#box_chars_2 box2 str by - - ----K box characters secondary set -#box_attr_1 batt1 str Bx - - ----K attributes for box1 -#box_attr_2 batt2 str By - - ----K attributes for box2 -#color_bg_0 colb0 str d0 - - ----K background color 0 -#color_bg_1 colb1 str d1 - - ----K background color 1 -#color_bg_2 colb2 str d2 - - ----K background color 2 -#color_bg_3 colb3 str d3 - - ----K background color 3 -#color_bg_4 colb4 str d4 - - ----K background color 4 -#color_bg_5 colb5 str d5 - - ----K background color 5 -#color_bg_6 colb6 str d6 - - ----K background color 6 -#color_bg_7 colb7 str d7 - - ----K background color 7 -#color_fg_0 colf0 str c0 - - ----K foreground color 0 -#color_fg_1 colf1 str c1 - - ----K foreground color 1 -#color_fg_2 colf2 str c2 - - ----K foreground color 2 -#color_fg_3 colf3 str c3 - - ----K foreground color 3 -#color_fg_4 colf4 str c4 - - ----K foreground color 4 -#color_fg_5 colf5 str c5 - - ----K foreground color 5 -#color_fg_6 colf6 str c6 - - ----K foreground color 6 -#color_fg_7 colf7 str c7 - - ----K foreground color 7 -#font_0 font0 str f0 - - ----- select font 0 -#font_1 font1 str f1 - - ----- select font 1 -#font_2 font2 str f2 - - ----- select font 2 -#font_3 font3 str f3 - - ----- select font 3 -#font_4 font4 str f4 - - ----K select font 4 -#font_5 font5 str f5 - - ----K select font 5 -#font_6 font6 str f6 - - ----K select font 6 -#font_7 font7 str f7 - - ----K select font 7 -#key_back_tab kbtab str k0 - - ----- backtab key -#key_do kdo str ki - - ----K do request key -#key_command kcmd str kd - - ----K command-request key -#key_command_pane kcpn str kW - - ----K command-pane key -#key_end kend str kw - - ----- end key -#key_help khlp str kq - - ----- help key -#key_newline knl str nl - - ----K newline key -#key_next_pane knpn str kv - - ----K next-pane key -#key_prev_cmd kppn str kp - - ----K previous-command key -#key_prev_pane kppn str kV - - ----K previous-pane key -#key_quit kquit str kQ - - ----K quit key -#key_select ksel str kU - - ----- select key -#key_scroll_left kscl str kz - - ----K scroll left -#key_scroll_right kscr str kZ - - ----K scroll right -#key_tab ktab str ko - - ----K tab key -#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input -#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output -#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input -#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output -#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input -#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output -#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input -#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output -#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input -#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output -#appl_defined_str apstr str za - - ----K application-defined string -# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in -# the IBM manual pages, so the cap name strings are guesses. The terminfo -# names are almost certainly right, the termcap ones almost certainly wrong. -#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input -#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output -#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input -#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output -#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input -#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output -#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input -#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output -# Undocumented capabilities end here -#key_sf1 ksf1 str S1 - - ----K special function key 1 -#key_sf2 ksf2 str S2 - - ----K special function key 2 -#key_sf3 ksf3 str S3 - - ----K special function key 3 -#key_sf4 ksf4 str S4 - - ----K special function key 4 -#key_sf5 ksf5 str S5 - - ----K special function key 5 -#key_sf6 ksf6 str S6 - - ----K special function key 6 -#key_sf7 ksf7 str S7 - - ----K special function key 7 -#key_sf8 ksf8 str S8 - - ----K special function key 8 -#key_sf9 ksf9 str S9 - - ----K special function key 9 -#key_sf10 ksf10 str SA - - ----K special function key 10 -# AIX version 3 documents different codes for F11, F12 and does not mention -# F13-F64. AIX version 4 uses the same naming for F0-F63 as above. -#key_f11 kf11 str k< - - ----- function key 11 -#key_f12 kf12 str k> - - ----- function key 12 -# Undocumented capabilities end here. -#key_action kact str kJ - - ----K sent by action key -# The IBM docs say these capabilities are for table-drawing, and are -# valid only for aixterm descriptions. -#enter_topline_mode topl str tp - - ----K start top-line mode -#enter_bottom_mode btml str bm - - ----K start bottom-line mode -#enter_rvert_mode rvert str rv - - ----K start right-vertical mode -#enter_lvert_mode lvert str lv - - ----K start left-vertical mode -# -############################################################################# -# -# ALIAS DECLARATIONS -# -# Here we set up aliases for translating extensions into standard terminfo. -# -#---------------------------------- Termcap aliases ------------------------- -# -# BSD aliases: -# -# This is a common error in many termcap files. We'll get notified during -# translation when this (or any other alias) fires. -# -capalias sb sr BSD scroll text down -# -# AT&T extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish the following mappings: -# -capalias BO mr AT&T enter_reverse_mode -capalias CI vi AT&T cursor_invisible -capalias CV ve AT&T cursor_normal -capalias DS mh AT&T enter_dim_mode -#capalias EE me AT&T exit_attribute_mode -capalias FE LF AT&T label_on -capalias FL LO AT&T label_off -capalias XS mk AT&T enter_secure_mode -# -# We comment out EE because the conflicting XENIX EE is more common in -# old entries. -# -# XENIX extensions: -# -# These are the ones we know how to translate directly: -# -capalias EE mh XENIX exit_attribute_mode -capalias GE ae XENIX exit_alt_charset_mode -capalias GS as XENIX enter_alt_charset_mode -capalias CF vi XENIX cursor_invis -capalias CO ve XENIX cursor_normal -capalias EN @7 XENIX key_end -capalias HM kh XENIX key_home -capalias LD kL XENIX key_dl -capalias PD kN XENIX key_npage -capalias PN po XENIX prtr_off -capalias PS pf XENIX prtr_on -capalias PU kP XENIX key_ppage -capalias RT @8 XENIX kent -capalias UP ku XENIX kcuu1 -capalias G6 IGNORE XENIX double-ACS_ULCORNER -capalias G7 IGNORE XENIX double-ACS_LLCORNER -capalias G5 IGNORE XENIX double-ACS_URCORNER -capalias G8 IGNORE XENIX double-ACS_LRCORNER -capalias Gr IGNORE XENIX double-ACS_LTEE -capalias Gr IGNORE XENIX double-ACS_RTEE -capalias Gu IGNORE XENIX double-ACS_BTEE -capalias Gd IGNORE XENIX double ACS_TTEE -capalias Gh IGNORE XENIX double-ACS_HLINE -capalias Gv IGNORE XENIX double-ACS_VLINE -capalias Gc IGNORE XENIX double-ACS_PLUS -capalias GG IGNORE XENIX acs-glitch -# -# IBM extensions: -# -capalias kq %1 IBM key_help -# -# Iris extensions: -# -capalias HS mh IRIS enter_dim_mode -# -# Tektronix extensions: -# -capalias KA k; Tek key_f10 -capalias KB F1 Tek key_f11 -capalias KC F2 Tek key_f12 -capalias KD F3 Tek key_f13 -capalias KE F4 Tek key_f14 -capalias KF F5 Tek key_f15 -capalias BC Sb Tek set_background -capalias FC Sf Tek set_foreground -# -# There are also the following: -# -# XENIX XENIX variable name name clash with terminfo? -# ----- ------------------- ------------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window -# HP ?? -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PL ?? -# PR ?? -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# WL key_word_left -# WR key_word_right -# -# If you know what any of the question-marked ones mean, please tell us. -# -#--------------------------------- Terminfo aliases ------------------------ -# -# IBM extensions: -# -infoalias font0 s0ds IBM set0_des_seq -infoalias font1 s1ds IBM set1_des_seq -infoalias font2 s2ds IBM set2_des_seq -infoalias font3 s3ds IBM set3_des_seq -infoalias kbtab kcbt IBM key_backtab -infoalias ksel kslt IBM key_select -# -# Some others are identical to SVr4/XPG4 capabilities, in particular: -# kcmd, kend, khlp, and kf11...kf63. # ############################################################################# diff --git a/deps/ncurses-5.9/include/Caps.uwin b/deps/ncurses-6.3/include/Caps.uwin similarity index 75% rename from deps/ncurses-5.9/include/Caps.uwin rename to deps/ncurses-6.3/include/Caps.uwin index 31020cd..af47de9 100644 --- a/deps/ncurses-5.9/include/Caps.uwin +++ b/deps/ncurses-6.3/include/Caps.uwin @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2001-2006,2010 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2001-2015,2016 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"), # @@ -28,13 +29,13 @@ # # Author: Thomas Dickey # -# $Id: Caps.uwin,v 1.5 2010/12/04 18:49:20 tom Exp $ +# $Id: Caps.uwin,v 1.15 2021/10/08 07:55:48 tom Exp $ # # This is an adaptation of ncurses' termcap/terminfo capability table, which # is designed to align with U/Win's terminfo. # # This table is used to generate initializers for tables that drive tic, -# infocmp, and the library compilation code used to support the termcap +# infocmp, and the library compilation code used to support the termcap # compatibility hack. It is also used to generate the tabular portion of the # terminfo(5) man page; lines beginning with `#%' are passed through to become # the terminfo table. @@ -57,7 +58,7 @@ # # The codes following [Y-] in column 7 describe the versions of termcap which # use the given capability. This information is not used by the curses library -# proper; rather, it's there to help the terminfo maintainer avoid emitting +# proper; rather, it is there to help the terminfo maintainer avoid emitting # termcap entry translations that are more than 1023 bytes long (and tank a # lot of old termcap-using programs). The codes read as follows: # B = mentioned in the BSD man page for 4.4BSD curses @@ -97,8 +98,8 @@ # 3. List it in the standard table. You almost certainly do *not* want # to do this -- the capabilities in that one, and their order, have been # carefully chosen to be SVr4-binary-compatible when they're written out -# as a terminfo object, and breaking this would be bad. It's up the ncurses -# library what to do with the terminfo data after it's read in. +# as a terminfo object, and breaking this would be bad. It is up to the ncurses +# library what to do with the terminfo data after it is read in. # # 4. List it in the aliases table with an IGNORE target field. If you # do this, the capability will be ignored on input (though the user will @@ -107,7 +108,7 @@ # 5. List it in the extensions table. If you do this, the compiler will # silently accept the capability, but the curses library proper will never # see it (because it won't be written out as part of the terminfo object -# format). It's up to you what you have the compiler do with it. +# format). It is up to you what you have the compiler do with it. # # There are two opposite reasons to choose option 5. One is when you want # to eat the capability silently and discard it when doing translations @@ -119,14 +120,14 @@ # You'll need to write custom code, probably in postprocess_termcap() or # postprocess_terminfo(), to handle the translation. # -# CONTROLLING ENTRY LENGTH +# CONTROLLING ENTRY LENGTH # # Notes on specific elisions made to fit translations within 1023 bytes: # # Machines with IBM PC-like keyboards want to be able to define the following # keys: key_npage, key_ppage, key_home, key_ll (which is used for in termcap- # only environments for End or Home-Down), key_dc, and key_ic. This is also -# the set of keys the `joe' editor will be upset if it can't see. So don't +# the set of keys the `joe' editor will be upset if it can't see. So don't # trim those out of the set to be translated to termcap, or various users of # the termcap file will become irate. # @@ -147,7 +148,7 @@ # # It would be nice to keep f11 and f12 for Emacs use, but a couple of termcap # translations go back over critical if we do this. As 4.4BSD curses fades -# into history and GNU termcap's application base shrinks towards being GNU +# into history and GNU termcap's application base shrinks towards being GNU # Emacs only, we'll probably elide out some BSD-only capabilities in order # to buy space for non-essentials Emacs is still using. Capabilities high # on that hit list: rc, sc, uc. @@ -166,7 +167,7 @@ #%The \fBcapname\fR is the short name used in the text of the database, #%and is used by a person updating the database. #%Whenever possible, capnames are chosen to be the same as or similar to -#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses +#%the ANSI X3.64-1979 standard (now superseded by ECMA-48, which uses #%identical or very similar names). Semantics are also intended to match #%those of the specification. #% @@ -188,8 +189,12 @@ #%indicates that padding may be specified #%.TP #%#[1-9] -#%in the description field indicates that the string is passed through tparm with -#%parms as given (#\fIi\fP). +#%in the description field indicates that the string is passed +#%through \fBtparm\fP(3X) with parameters as given (#\fIi\fP). +#%.IP +#%If no parameters are listed in the description, +#%passing the string through \fBtparm\fP(3X) may give unexpected results, +#%e.g., if it contains percent (%%) signs. #%.TP #%(P*) #%indicates that padding may vary in proportion to the number of @@ -227,7 +232,7 @@ move_standout_mode msgr bool ms - - YBCGE safe to move while in standout mode over_strike os bool os - - YBCG- terminal can overstrike status_line_esc_ok eslok bool es - - YB-G- escape can be used on the status line dest_tabs_magic_smso xt bool xt - - YBCGE tabs destructive, magic so char (t1061) -tilde_glitch hz bool hz - - YB-GE cannot print ~'s (hazeltine) +tilde_glitch hz bool hz - - YB-GE cannot print ~'s (Hazeltine) transparent_underline ul bool ul - - YBCGE underline character overstrikes xon_xoff xon bool xo - - YB--- terminal uses xon/xoff handshaking needs_xon_xoff nxon bool nx - - ----- padding will not work, xon/xoff required @@ -564,7 +569,7 @@ key_f62 kf62 str Fq KEY_F(62) - ----E F62 function key key_f63 kf63 str Fr KEY_F(63) - ----E F63 function key clr_bol el1 str cb - - ----- Clear to beginning of line clear_margins mgc str MC - - ----- clear right and left soft margins -set_left_margin smgl str ML - - ----- set left soft margin at current column. See smgl. (ML is not in BSD termcap). +set_left_margin smgl str ML - - ----- set left soft margin at current column. (ML is not in BSD termcap). set_right_margin smgr str MR - - ----- set right soft margin at current column device_type devt str dv - - ----- Indicate language/codeset support code_set_init csin str ci - - ----- Init sequence for multiple codesets @@ -650,7 +655,7 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # GNU termcap *does* include the following extended capability, Only the # now-obsolete Ann Arbor terminals used it. # -# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region +# gnu_change_scroll_region OTcS str cS - - ---GE alternate set scrolling region # # The following comments describe capnames so ancient that I believe no # software uses them any longer. Some of these have to go because they @@ -667,9 +672,9 @@ gnu_has_meta_key OTMT bool MT - - ----E has meta key # comma-separated list of capabilities for which there are corresponding keys. # The `kn' code is accepted but ignored. # -# The `ma' capability seems to have been designed to map between the rogue(2) -# motion keys (including jkhl) and characters emitted by arrow keys on some -# primitive pre-ANSI terminals. It's so obsolete it's fossilized... +# The `ma' capability was a 4.0BSD feature used by vi version 2. +# It consists of pairs of characters corresponding to kl, kr, ku, kd, and kh. +# Besides being obsolete, that interpretation conflicts with max_attributes. # # Here is a description of memory_lock_above and memory_unlock: # "You can 'freeze' data on the screen by turning on Memory Lock in a line of @@ -695,14 +700,14 @@ horizontal_tab_delay OTdT num dT - - YB-G- padding required for ^I # vertical_tab_delay OTdV num dV - - -B--- padding required for ^V number_of_function_keys OTkn num kn - - -B-G- count of function keys other_non_function_keys OTko str ko - - -B-G- list of self-mapped keycaps -arrow_key_map OTma str ma - - YBC-- map arrow keys rogue(1) motion keys +arrow_key_map OTma str ma - - YBC-- map motion-keys for vi version 2 # memory_lock_above OTml str ml - - -B--- lock visible screen memory above the current line # memory_unlock OTmu str mu - - -B--- unlock visible screen memory above the current line has_hardware_tabs OTpt bool pt - - YB--- has 8-char tabs invoked with ^I return_does_clr_eol OTxr bool xr - - YB--- return clears the line # tek_4025_insert_line OTxx bool xx - - -BC-- Tektronix 4025 insert-line glitch # -# mytinfo described this as a termcap capability, but it's not listed in the +# mytinfo described this as a termcap capability, but it is not listed in the # 4.4BSD man pages, and not found in the 4.4BSD termcap file. The ncurses # package, like System V, behaves as though it is always true. # @@ -711,7 +716,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # University of Waterloo termcap extensions (as described in mytinfo). # The `xl' termcap file clashes with a terminfo name; this ambiguity cannot # be resolved by a type check. The descriptions are guesses from what was -# in the mytinfo tables. +# in the mytinfo tables. # # key_interrupt_char OTki str ki - - ----- string set by interrupt key (?) # key_kill_char OTkk str kk - - ----- string set by kill key (?) @@ -760,7 +765,7 @@ return_does_clr_eol OTxr bool xr - - YB--- return clears the line # Gv 186 \272 M-: double vertical line # # The compiler will translate the single-line caps and discard the others -# (via IGNORE aliases further down). We don't want to do normal pad +# (via IGNORE aliases further down). We don't want to do normal pad # translation on these, they're often single-character printable ASCII # strings that happen to be numerics. There's awk code in parametrized.sh # that detects the acs_ prefix and uses it to suppress pad translation. @@ -782,303 +787,10 @@ acs_plus OTGC str GC - - ----- single intersection # # TERMINFO EXTENSION CAPABILITIES # -# This section is almost all comments. What it's mainly for is to describe -# what capabilities need to be squeezed out to get down to the XSI Curses -# standard set. They are flagged with K. -# -# HP extensions -# -# These extensions follow ptr_non (replacing everything after it) in HP -# terminfo files. Except for memory_lock and memory_unlock, they are -# functionally identical to SVr4 extensions, but they make the binary format -# different. Grrr.... +# (see Caps-ncurses for the complete set of comments) # memory_lock meml str ml - - ----K lock memory above cursor memory_unlock memu str mu - - ----K unlock memory -#plab_norm pln str pn - - ----- program label #1 to show string #2 -#label_on smln str LO - - ----- turn on soft labels -#label_off rmln str LF - - ----- turn off soft labels -#key_f11 kf11 str F1 - - ----- F11 function key -#key_f12 kf12 str F2 - - ----- F12 function key -#key_f13 kf13 str F3 - - ----- F13 function key -#key_f14 kf14 str F4 - - ----- F14 function key -#key_f15 kf15 str F5 - - ----- F15 function key -#key_f16 kf16 str F6 - - ----- F16 function key -#key_f17 kf17 str F7 - - ----- F17 function key -#key_f18 kf18 str F8 - - ----- F18 function key -#key_f19 kf19 str F9 - - ----- F19 function key -#key_f20 kf20 str FA - - ----- F20 function key -#key_f21 kf21 str FB - - ----- F21 function key -#key_f22 kf22 str FC - - ----- F22 function key -#key_f23 kf23 str FD - - ----- F23 function key -#key_f24 kf24 str FE - - ----- F24 function key -#key_f25 kf25 str FF - - ----- F25 function key -#key_f26 kf26 str FG - - ----- F26 function key -#key_f27 kf27 str FH - - ----- F27 function key -#key_f28 kf28 str FI - - ----- F28 function key -#key_f29 kf29 str FJ - - ----- F29 function key -#key_f30 kf30 str FK - - ----- F30 function key -#key_f31 kf31 str FL - - ----- F31 function key -#key_f32 kf32 str FM - - ----- F32 function key -#key_f33 kf33 str FN - - ----- F33 function key -#key_f34 kf34 str FO - - ----- F34 function key -#key_f35 kf35 str FP - - ----- F35 function key -#key_f36 kf36 str FQ - - ----- F36 function key -#key_f37 kf37 str FR - - ----- F37 function key -#key_f38 kf38 str FS - - ----- F38 function key -#key_f39 kf39 str FT - - ----- F39 function key -#key_f40 kf40 str FU - - ----- F40 function key -#key_f41 kf41 str FV - - ----- F41 function key -#key_f42 kf42 str FW - - ----- F42 function key -#key_f43 kf43 str FX - - ----- F43 function key -#key_f44 kf44 str FY - - ----- F44 function key -#key_f45 kf45 str FZ - - ----- F45 function key -#key_f46 kf46 str Fa - - ----- F46 function key -#key_f47 kf47 str Fb - - ----- F47 function key -#key_f48 kf48 str Fc - - ----- F48 function key -#key_f49 kf49 str Fd - - ----- F49 function key -#key_f50 kf50 str Fe - - ----- F50 function key -#key_f51 kf51 str Ff - - ----- F51 function key -#key_f52 kf52 str Fg - - ----- F52 function key -#key_f53 kf53 str Fh - - ----- F53 function key -#key_f54 kf54 str Fi - - ----- F54 function key -#key_f55 kf55 str Fj - - ----- F55 function key -#key_f56 kf56 str Fk - - ----- F56 function key -#key_f57 kf57 str Fl - - ----- F57 function key -#key_f58 kf58 str Fm - - ----- F58 function key -#key_f59 kf59 str Fn - - ----- F59 function key -#key_f60 kf60 str Fo - - ----- F60 function key -#key_f61 kf61 str Fp - - ----- F61 function key -#key_f62 kf62 str Fq - - ----- F62 function key -#key_f63 kf63 str Fr - - ----- F63 function key -# -# IBM extensions -# -# These extensions follow ptr_non (replacing everything after it) in IBM -# terminfo files. -# -# The places in the box[12] capabilities correspond to acsc characters, here is -# the mapping: -# -# box1[0] = ACS_ULCORNER -# box1[1] = ACS_HLINE -# box1[2] = ACS_URCORNER -# box1[3] = ACS_VLINE -# box1[4] = ACS_LRCORNER -# box1[5] = ACS_LLCORNER -# box1[6] = ACS_TTEE -# box1[7] = ACS_RTEE -# box1[8] = ACS_BTEE -# box1[9] = ACS_LTEE -# box1[10] = ACS_PLUS -# -# The box2 characters are the double-line versions of these forms graphics. -# box_chars_1 box1 str bx - - ----K box characters primary set -#box_chars_2 box2 str by - - ----K box characters secondary set -#box_attr_1 batt1 str Bx - - ----K attributes for box1 -#box_attr_2 batt2 str By - - ----K attributes for box2 -#color_bg_0 colb0 str d0 - - ----K background color 0 -#color_bg_1 colb1 str d1 - - ----K background color 1 -#color_bg_2 colb2 str d2 - - ----K background color 2 -#color_bg_3 colb3 str d3 - - ----K background color 3 -#color_bg_4 colb4 str d4 - - ----K background color 4 -#color_bg_5 colb5 str d5 - - ----K background color 5 -#color_bg_6 colb6 str d6 - - ----K background color 6 -#color_bg_7 colb7 str d7 - - ----K background color 7 -#color_fg_0 colf0 str c0 - - ----K foreground color 0 -#color_fg_1 colf1 str c1 - - ----K foreground color 1 -#color_fg_2 colf2 str c2 - - ----K foreground color 2 -#color_fg_3 colf3 str c3 - - ----K foreground color 3 -#color_fg_4 colf4 str c4 - - ----K foreground color 4 -#color_fg_5 colf5 str c5 - - ----K foreground color 5 -#color_fg_6 colf6 str c6 - - ----K foreground color 6 -#color_fg_7 colf7 str c7 - - ----K foreground color 7 -#font_0 font0 str f0 - - ----- select font 0 -#font_1 font1 str f1 - - ----- select font 1 -#font_2 font2 str f2 - - ----- select font 2 -#font_3 font3 str f3 - - ----- select font 3 -#font_4 font4 str f4 - - ----K select font 4 -#font_5 font5 str f5 - - ----K select font 5 -#font_6 font6 str f6 - - ----K select font 6 -#font_7 font7 str f7 - - ----K select font 7 -#key_back_tab kbtab str k0 - - ----- backtab key -#key_do kdo str ki - - ----K do request key -#key_command kcmd str kd - - ----K command-request key -#key_command_pane kcpn str kW - - ----K command-pane key -#key_end kend str kw - - ----- end key -#key_help khlp str kq - - ----- help key -#key_newline knl str nl - - ----K newline key -#key_next_pane knpn str kv - - ----K next-pane key -#key_prev_cmd kppn str kp - - ----K previous-command key -#key_prev_pane kppn str kV - - ----K previous-pane key -#key_quit kquit str kQ - - ----K quit key -#key_select ksel str kU - - ----- select key -#key_scroll_left kscl str kz - - ----K scroll left -#key_scroll_right kscr str kZ - - ----K scroll right -#key_tab ktab str ko - - ----K tab key -#key_smap_in1 kmpf1 str Kv - - ----K special mapped key 1 input -#key_smap_out1 kmpt1 str KV - - ----K special mapped key 1 output -#key_smap_in2 kmpf2 str Kw - - ----K special mapped key 2 input -#key_smap_out2 kmpt2 str KW - - ----K special mapped key 2 output -#key_smap_in3 kmpf3 str Kx - - ----K special mapped key 3 input -#key_smap_out3 kmpt3 str KX - - ----K special mapped key 3 output -#key_smap_in4 kmpf4 str Ky - - ----K special mapped key 4 input -#key_smap_out4 kmpt4 str KY - - ----K special mapped key 4 output -#key_smap_in5 kmpf5 str Kz - - ----K special mapped key 5 input -#key_smap_out5 kmpt5 str KZ - - ----K special mapped key 5 output -#appl_defined_str apstr str za - - ----K application-defined string -# The key_smap_in[6789] and key_smap_out[6789] capabilities aren't described in -# the IBM manual pages, so the cap name strings are guesses. The terminfo -# names are almost certainly right, the termcap ones almost certainly wrong. -#key_smap_in6 kmpf6 str k! - - ----K special mapped key 6 input -#key_smap_out6 kmpt6 str K@ - - ----K special mapped key 6 output -#key_smap_in7 kmpf7 str k# - - ----K special mapped key 7 input -#key_smap_out7 kmpt7 str K$ - - ----K special mapped key 7 output -#key_smap_in8 kmpf8 str k% - - ----K special mapped key 8 input -#key_smap_out8 kmpt8 str K^ - - ----K special mapped key 8 output -#key_smap_in9 kmpf9 str k& - - ----K special mapped key 9 input -#key_smap_out9 kmpt9 str K* - - ----K special mapped key 9 output -# Undocumented capabilities end here -#key_sf1 ksf1 str S1 - - ----K special function key 1 -#key_sf2 ksf2 str S2 - - ----K special function key 2 -#key_sf3 ksf3 str S3 - - ----K special function key 3 -#key_sf4 ksf4 str S4 - - ----K special function key 4 -#key_sf5 ksf5 str S5 - - ----K special function key 5 -#key_sf6 ksf6 str S6 - - ----K special function key 6 -#key_sf7 ksf7 str S7 - - ----K special function key 7 -#key_sf8 ksf8 str S8 - - ----K special function key 8 -#key_sf9 ksf9 str S9 - - ----K special function key 9 -#key_sf10 ksf10 str SA - - ----K special function key 10 -# AIX version 3 documents different codes for F11, F12 and does not mention -# F13-F64. AIX version 4 uses the same naming for F0-F63 as above. -#key_f11 kf11 str k< - - ----- function key 11 -#key_f12 kf12 str k> - - ----- function key 12 -# Undocumented capabilities end here. -#key_action kact str kJ - - ----K sent by action key -# The IBM docs say these capabilities are for table-drawing, and are -# valid only for aixterm descriptions. -#enter_topline_mode topl str tp - - ----K start top-line mode -#enter_bottom_mode btml str bm - - ----K start bottom-line mode -#enter_rvert_mode rvert str rv - - ----K start right-vertical mode -#enter_lvert_mode lvert str lv - - ----K start left-vertical mode -# -############################################################################# -# -# ALIAS DECLARATIONS -# -# Here we set up aliases for translating extensions into standard terminfo. -# -#---------------------------------- Termcap aliases ------------------------- -# -# BSD aliases: -# -# This is a common error in many termcap files. We'll get notified during -# translation when this (or any other alias) fires. -# -capalias sb sr BSD scroll text down -# -# AT&T extensions: -# -# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of -# nonstandard capabilities. Its signature is the KM capability, used to name -# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this -# set. Comments in the original, and a little cross-checking with other AT&T -# documentation, seem to establish the following mappings: -# -capalias BO mr AT&T enter_reverse_mode -capalias CI vi AT&T cursor_invisible -capalias CV ve AT&T cursor_normal -capalias DS mh AT&T enter_dim_mode -#capalias EE me AT&T exit_attribute_mode -capalias FE LF AT&T label_on -capalias FL LO AT&T label_off -capalias XS mk AT&T enter_secure_mode -# -# We comment out EE because the conflicting XENIX EE is more common in -# old entries. -# -# XENIX extensions: -# -# These are the ones we know how to translate directly: -# -capalias EE mh XENIX exit_attribute_mode -capalias GE ae XENIX exit_alt_charset_mode -capalias GS as XENIX enter_alt_charset_mode -capalias CF vi XENIX cursor_invis -capalias CO ve XENIX cursor_normal -capalias EN @7 XENIX key_end -capalias HM kh XENIX key_home -capalias LD kL XENIX key_dl -capalias PD kN XENIX key_npage -capalias PN po XENIX prtr_off -capalias PS pf XENIX prtr_on -capalias PU kP XENIX key_ppage -capalias RT @8 XENIX kent -capalias UP ku XENIX kcuu1 -capalias G6 IGNORE XENIX double-ACS_ULCORNER -capalias G7 IGNORE XENIX double-ACS_LLCORNER -capalias G5 IGNORE XENIX double-ACS_URCORNER -capalias G8 IGNORE XENIX double-ACS_LRCORNER -capalias Gr IGNORE XENIX double-ACS_LTEE -capalias Gr IGNORE XENIX double-ACS_RTEE -capalias Gu IGNORE XENIX double-ACS_BTEE -capalias Gd IGNORE XENIX double ACS_TTEE -capalias Gh IGNORE XENIX double-ACS_HLINE -capalias Gv IGNORE XENIX double-ACS_VLINE -capalias Gc IGNORE XENIX double-ACS_PLUS -capalias GG IGNORE XENIX acs-glitch -# -# IBM extensions: -# -capalias kq %1 IBM key_help -# -# Iris extensions: -# -capalias HS mh IRIS enter_dim_mode -# -# Tektronix extensions: -# -capalias KA k; Tek key_f10 -capalias KB F1 Tek key_f11 -capalias KC F2 Tek key_f12 -capalias KD F3 Tek key_f13 -capalias KE F4 Tek key_f14 -capalias KF F5 Tek key_f15 -capalias BC Sb Tek set_background -capalias FC Sf Tek set_foreground -# -# There are also the following: -# -# XENIX XENIX variable name name clash with terminfo? -# ----- ------------------- ------------------------- -# CL key_char_left -# CR key_char_right -# CW key_change_window -# HP ?? -# LF key_linefeed label_off -# NU key_next_unlocked_cell -# PL ?? -# PR ?? -# RC key_recalc remove_clock -# RF key_toggle_ref req_for_input -# WL key_word_left -# WR key_word_right -# -# If you know what any of the question-marked ones mean, please tell us. -# -#--------------------------------- Terminfo aliases ------------------------ -# -# IBM extensions: -# -infoalias font0 s0ds IBM set0_des_seq -infoalias font1 s1ds IBM set1_des_seq -infoalias font2 s2ds IBM set2_des_seq -infoalias font3 s3ds IBM set3_des_seq -infoalias kbtab kcbt IBM key_backtab -infoalias ksel kslt IBM key_select -# -# Some others are identical to SVr4/XPG4 capabilities, in particular: -# kcmd, kend, khlp, and kf11...kf63. # ############################################################################# diff --git a/deps/ncurses-5.9/include/MKhashsize.sh b/deps/ncurses-6.3/include/MKhashsize.sh similarity index 86% rename from deps/ncurses-5.9/include/MKhashsize.sh rename to deps/ncurses-6.3/include/MKhashsize.sh index 11b3111..8a534d4 100755 --- a/deps/ncurses-5.9/include/MKhashsize.sh +++ b/deps/ncurses-6.3/include/MKhashsize.sh @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 1998,2006 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 1998,2006 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"), # @@ -26,7 +27,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: MKhashsize.sh,v 1.7 2006/10/22 00:45:39 tom Exp $ +# $Id: MKhashsize.sh,v 1.9 2020/02/02 23:34:34 tom Exp $ # # MKhashsize.sh --- generate size include for hash functions # @@ -34,8 +35,8 @@ echo "/*" echo " * hashsize.h -- hash and token table constants" echo " */" -CAPS="${1-Caps}" -TABSIZE=`grep -v '^[ #]' $CAPS | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | wc -l` +test $# = 0 && set Caps +TABSIZE=`cat "$@" | grep -v '^[ #]' | grep -v "^$" | grep -v "^capalias"| grep -v "^infoalias" | grep -v "^userdef" | grep -v "^used_by" | wc -l` echo "" echo "#define CAPTABSIZE ${TABSIZE}" diff --git a/deps/ncurses-5.9/include/MKkey_defs.sh b/deps/ncurses-6.3/include/MKkey_defs.sh similarity index 85% rename from deps/ncurses-5.9/include/MKkey_defs.sh rename to deps/ncurses-6.3/include/MKkey_defs.sh index b3cb4f7..86d6891 100755 --- a/deps/ncurses-5.9/include/MKkey_defs.sh +++ b/deps/ncurses-6.3/include/MKkey_defs.sh @@ -1,7 +1,8 @@ #! /bin/sh -# $Id: MKkey_defs.sh,v 1.14 2003/12/06 17:10:09 tom Exp $ +# $Id: MKkey_defs.sh,v 1.21 2020/08/17 10:45:33 tom Exp $ ############################################################################## -# Copyright (c) 2001-2002,2003 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 2001-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"), # @@ -35,25 +36,26 @@ # Extract function-key definitions from the Caps file # : ${AWK-awk} -DATA=${1-Caps} + +test $# = 0 && set Caps data=data$$ pass1=pass1_$$ pass2=pass2_$$ pass3=pass3_$$ pass4=pass4_$$ -trap 'rm -f $data pass[1234]_$$' 0 1 2 5 15 +trap 'rm -f $data pass[1234]_$$' EXIT INT QUIT TERM HUP # change repeated tabs (used for readability) to single tabs (needed to make # awk see the right field alignment of the corresponding columns): -if sort -k 6 $DATA >$data 2>/dev/null +if sort -k 6 "$@" >$data 2>/dev/null then # POSIX - sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n -k 6 >$data -elif sort -n +5 $DATA >$data 2>/dev/null + sed -e 's/[ ][ ]*/ /g' "$@" |sort -n -k 6 >$data +elif sort -n +5 "$@" >$data 2>/dev/null then # SunOS (and SVr4, marked as obsolete but still recognized) - sed -e 's/[ ][ ]*/ /g' < $DATA |sort -n +5 >$data + sed -e 's/[ ][ ]*/ /g' "$@" |sort -n +5 >$data else echo "Your sort utility is broken. Please install one that works." >&2 exit 1 @@ -61,13 +63,14 @@ fi # add keys that we generate automatically: cat >>$data <<EOF -key_resize kr1 str R1 KEY_RESIZE + ----- Terminal resize event -key_event kv1 str V1 KEY_EVENT + ----- We were interrupted by an event +key_resize kr1 str R1 KEY_RESIZE + NCURSES_EXT_FUNCS Terminal resize event EOF +THIS=./`basename $0` + cat <<EOF /* - * These definitions were generated by $0 $DATA + * These definitions were generated by $THIS $* */ EOF @@ -121,6 +124,8 @@ BEGIN { /^#/ {next;} /^capalias/ {next;} /^infoalias/ {next;} +/^used_by/ {next;} +/^userdef/ {next;} $5 != "-" && $6 != "-" { if ($6 == "+") { @@ -136,6 +141,12 @@ $5 != "-" && $6 != "-" { maxkey = thiskey; if (pass == 2 || pass == 3) { showkey=sprintf(octal_fmt, thiskey); + ifdef = 0; + if (index($7,"NCURSES_") == 1) { + ifdef = 1; + printf "\n"; + printf "#ifdef %s\n", $7; + } if ($5 == "KEY_F(0)" ) { printf "#define " print_cols("KEY_F0", 16); @@ -154,6 +165,9 @@ $5 != "-" && $6 != "-" { printf " %s", $i print " */" } + if (ifdef != 0) { + printf "#endif\n"; + } } } END { diff --git a/deps/ncurses-6.3/include/MKncurses_def.sh b/deps/ncurses-6.3/include/MKncurses_def.sh new file mode 100755 index 0000000..81f39d2 --- /dev/null +++ b/deps/ncurses-6.3/include/MKncurses_def.sh @@ -0,0 +1,81 @@ +#! /bin/sh +# $Id: MKncurses_def.sh,v 1.4 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 2000,2003 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. # +############################################################################## +# +# MKncurses_def.sh -- generate fallback definitions for ncurses_cfg.h +# +# Author: Thomas E. Dickey 2000 +# +# Given the choice between constructs such as +# +# #if defined(foo) && foo +# #if foo +# +# we chose the latter. It is guaranteed by the language standard, and there +# appear to be no broken compilers that do not honor that detail. But some +# people want to use gcc's -Wundef option (corresponding to one of the less +# useful features in Watcom's compiler) to check for misspellings. So we +# generate a set of fallback definitions to quiet the warnings without making +# the code ugly. +# +DEFS="${1-ncurses_defs}" +cat <<EOF +/* + * This file is generated by $0 + */ + +#ifndef NC_DEFINE_H +#define NC_DEFINE_H 1 + +EOF + +${AWK-awk} <$DEFS ' +!/^[@#]/ { + if ( NF == 1 ) + { + print "#ifndef", $1 + print "#define", $1, "0" + print "#endif" + print "" + } else if ( NF != 0 ) { + print "#ifndef", $1 + printf "#define" + for (n = 1; n <= NF; n++) { + printf " %s", $n + } + print "" + print "#endif" + print "" + } +} +END { +print "#endif /* NC_DEFINE_H */" + } +' diff --git a/deps/ncurses-5.9/include/MKparametrized.sh b/deps/ncurses-6.3/include/MKparametrized.sh similarity index 79% rename from deps/ncurses-5.9/include/MKparametrized.sh rename to deps/ncurses-6.3/include/MKparametrized.sh index 2825c82..5d0cae1 100755 --- a/deps/ncurses-5.9/include/MKparametrized.sh +++ b/deps/ncurses-6.3/include/MKparametrized.sh @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 1998-2000,2006 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 1998-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"), # @@ -26,15 +27,18 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: MKparametrized.sh,v 1.6 2006/04/22 21:36:16 tom Exp $ +# $Id: MKparametrized.sh,v 1.10 2020/02/02 23:34:34 tom Exp $ # # MKparametrized.sh -- generate indirection vectors for various sort methods # # The output of this script is C source for an array specifying whether # termcap strings should undergo parameter and padding translation. # -CAPS="${1-Caps}" +[ $# = 0 ] && set - Caps + cat <<EOF +#ifndef PARAMETRIZED_H +#define PARAMETRIZED_H 1 /* * parametrized.h --- is a termcap capability parametrized? * @@ -52,11 +56,20 @@ EOF # XENIX acs_* capabilities. Maybe someday we'll dedicate a flag field for # this, that would be cleaner.... -${AWK-awk} <$CAPS ' -$3 != "str" {next;} -$1 ~ /^acs_/ {print "-1,\t/* ", $2, " */"; count++; next;} -$0 ~ /#[0-9]/ {print "1,\t/* ", $2, " */"; count++; next;} - {print "0,\t/* ", $2, " */"; count++;} -END {printf("} /* %d entries */;\n\n", count);} +cat "$@" | ${AWK-awk} ' + +/^#/ { next ; } +/^capalias/ { next ; } +/^infoalias/ { next ; } +/^used_by/ { next ; } +/^userdef/ { next ; } + +$3 != "str" {next;} +$1 ~ /^acs_/ {print "-1,\t/* ", $2, " */"; count++; next;} +$1 ~ /^label_format/ {print "-1,\t/* ", $2, " */"; count++; next;} +$0 ~ /#[0-9]/ {print "1,\t/* ", $2, " */"; count++; next;} + {print "0,\t/* ", $2, " */"; count++;} +END {printf("} /* %d entries */;\n\n", count);} ' +echo "#endif /* PARAMETRIZED_H */" diff --git a/deps/ncurses-6.3/include/MKterm.h.awk.in b/deps/ncurses-6.3/include/MKterm.h.awk.in new file mode 100644 index 0000000..e79840d --- /dev/null +++ b/deps/ncurses-6.3/include/MKterm.h.awk.in @@ -0,0 +1,416 @@ +# vile:awkmode +function declare_termtype(number,suffix) { + printf "typedef struct termtype%s { /* in-core form of terminfo data */\n", suffix; + print " char *term_names; /* str_table offset of term names */" + print " char *str_table; /* pointer to string table */" + print " NCURSES_SBOOL *Booleans; /* array of boolean values */" + printf " %-5s *Numbers; /* array of integer values */\n", number; + print " char **Strings; /* array of string offsets */" + print "" + print "#if NCURSES_XNAMES" + print " char *ext_str_table; /* pointer to extended string table */" + print " char **ext_Names; /* corresponding names */" + print "" + print " unsigned short num_Booleans;/* count total Booleans */"; + print " unsigned short num_Numbers; /* count total Numbers */"; + print " unsigned short num_Strings; /* count total Strings */"; + print "" + print " unsigned short ext_Booleans;/* count extensions to Booleans */"; + print " unsigned short ext_Numbers; /* count extensions to Numbers */"; + print " unsigned short ext_Strings; /* count extensions to Strings */"; + print "#endif /* NCURSES_XNAMES */" + print "" + printf "} TERMTYPE%s;\n", suffix; +} +BEGIN { + lcurl = "{"; + rcurl = "}"; + print "/****************************************************************************" + print " * Copyright 2018-2020,2021 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 *" + print " * copy of this software and associated documentation files (the *" + print " * \"Software\"), to deal in the Software without restriction, including *" + print " * without limitation the rights to use, copy, modify, merge, publish, *" + print " * distribute, distribute with modifications, sublicense, and/or sell *" + print " * copies of the Software, and to permit persons to whom the Software is *" + print " * furnished to do so, subject to the following conditions: *" + print " * *" + print " * The above copyright notice and this permission notice shall be included *" + print " * in all copies or substantial portions of the Software. *" + print " * *" + print " * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS *" + print " * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF *" + print " * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. *" + print " * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, *" + print " * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR *" + print " * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR *" + print " * THE USE OR OTHER DEALINGS IN THE SOFTWARE. *" + print " * *" + print " * Except as contained in this notice, the name(s) of the above copyright *" + print " * holders shall not be used in advertising or otherwise to promote the *" + print " * sale, use or other dealings in this Software without prior written *" + print " * authorization. *" + print " ****************************************************************************/" + print "" + print "/****************************************************************************/" + print "/* Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 */" + print "/* and: Eric S. Raymond <esr@snark.thyrsus.com> */" + print "/* and: Thomas E. Dickey 1995-on */" + print "/****************************************************************************/" + print "" + print "/* $Id: MKterm.h.awk.in,v 1.82 2021/09/24 17:02:46 tom Exp $ */" + print "" + print "/*" + print "** term.h -- Definition of struct term" + print "*/" + print "" + print "#ifndef NCURSES_TERM_H_incl" + print "#define NCURSES_TERM_H_incl 1" + print "" + print "#undef NCURSES_VERSION" + print "#define NCURSES_VERSION \"@NCURSES_MAJOR@.@NCURSES_MINOR@\"" + print "" + print "#include <ncurses_dll.h>" + print "" + print "#ifdef __cplusplus" + printf "extern \"C\" %s\n", lcurl; + print "#endif" + print "" + print "/* Make this file self-contained by providing defaults for the HAVE_TERMIO[S]_H" + print " * definition (based on the system for which this was configured)." + print " */" + print "" + print "#ifndef __NCURSES_H" + print "" + print "typedef struct screen SCREEN;" + print "" + print "#if @NCURSES_SP_FUNCS@" + print "#undef NCURSES_SP_FUNCS" + print "#define NCURSES_SP_FUNCS @NCURSES_PATCH@" + print "#undef NCURSES_SP_NAME" + print "#define NCURSES_SP_NAME(name) name##_sp" + print "" + print "/* Define the sp-funcs helper function */" + print "#undef NCURSES_SP_OUTC" + print "#define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC)" + print "typedef int (*NCURSES_SP_OUTC)(SCREEN*, int);" + print "#endif" + print "" + print "#endif /* __NCURSES_H */" + print "" + print "#undef NCURSES_CONST" + print "#define NCURSES_CONST @NCURSES_CONST@" + print "" + print "#undef NCURSES_SBOOL" + print "#define NCURSES_SBOOL @NCURSES_SBOOL@" + print "" + print "#undef NCURSES_USE_DATABASE" + print "#define NCURSES_USE_DATABASE @NCURSES_USE_DATABASE@" + print "" + print "#undef NCURSES_USE_TERMCAP" + print "#define NCURSES_USE_TERMCAP @NCURSES_USE_TERMCAP@" + print "" + print "#undef NCURSES_XNAMES" + print "#define NCURSES_XNAMES @NCURSES_XNAMES@" + print "" + print "/* We will 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 "" + 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 "" + print "#undef TERMIOS" + print "#define TERMIOS 1" + print "" + print "#include <termio.h>" + print "#define TTY struct termio" + print "" + print "#else /* !HAVE_TERMIO_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 "#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 "#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 "#define GET_TTY(fd, buf) gtty(fd, buf)" + print "#define SET_TTY(fd, buf) stty(fd, buf)" + print "#endif" + print "" + print "#ifndef GCC_NORETURN" + print "#define GCC_NORETURN /* nothing */" + print "#endif" + print "" + print "#define NAMESIZE 256" + print "" + print "/* The cast works because TERMTYPE is the first data in TERMINAL */" + print "#define CUR ((TERMTYPE *)(cur_term))->" + print "" +} + +$2 == "%%-STOP-HERE-%%" { + print "" + printf "#define BOOLWRITE %d\n", BoolCount + printf "#define NUMWRITE %d\n", NumberCount + printf "#define STRWRITE %d\n", StringCount + print "" + print "/* older synonyms for some capabilities */" + print "#define beehive_glitch no_esc_ctlc" + print "#define teleray_glitch dest_tabs_magic_smso" + print "" + print "/* HPUX-11 uses this name rather than the standard one */" + print "#ifndef micro_char_size" + print "#define micro_char_size micro_col_size" + print "#endif" + print "" + print "#ifdef __INTERNAL_CAPS_VISIBLE" +} + +/^#/ { next; } + +/^used_by/ { next ; } +/^userdef/ { next ; } + +$1 == "acs_chars" { + acsindex = StringCount; +} + +$3 == "bool" { + printf "#define %-30s CUR Booleans[%d]\n", $1, BoolCount++ +} + +$3 == "num" { + printf "#define %-30s CUR Numbers[%d]\n", $1, NumberCount++ +} + +$3 == "str" { + printf "#define %-30s CUR Strings[%d]\n", $1, StringCount++ +} + +END { + print "#endif /* __INTERNAL_CAPS_VISIBLE */" + print "" + print "" + print "/*" + print " * Predefined terminfo array sizes" + print " */" + printf "#define BOOLCOUNT %d\n", BoolCount + printf "#define NUMCOUNT %d\n", NumberCount + printf "#define STRCOUNT %d\n", StringCount + print "" + print "/* used by code for comparing entries */" + print "#define acs_chars_index ", acsindex + print "" + declare_termtype("short",""); + print "" + print "/*" + print " * The only reason these structures are visible is for read-only use." + print " * Programs which modify the data are not, never were, portable across" + print " * curses implementations." + print " *" + print " * The first field in TERMINAL is used in macros." + print " * The remaining fields are private." + print " */" + print "#ifdef NCURSES_INTERNALS" + print "" + print "#undef TERMINAL" + print "#define TERMINAL struct term" + print "TERMINAL;" + print "" + if (@NCURSES_EXT_COLORS@) { + declare_termtype("int","2"); + } else { + print "#undef TERMTYPE2" + print "#define TERMTYPE2 TERMTYPE" + } + print "#else" + print "" + print "typedef struct term { /* describe an actual terminal */" + print " TERMTYPE type; /* terminal type description */" + print "} TERMINAL;" + print "" + print "#endif /* NCURSES_INTERNALS */" + print "" + print "" + print "#if @BROKEN_LINKER@ && !@cf_cv_enable_reentrant@" + print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" + print "#elif @cf_cv_enable_reentrant@" + print "NCURSES_WRAPPED_VAR(TERMINAL *, cur_term);" + print "#define cur_term NCURSES_PUBLIC_VAR(cur_term())" + print "#else" + print "extern NCURSES_EXPORT_VAR(TERMINAL *) cur_term;" + print "#endif" + print "" + 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);" + print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, boolfnames);" + print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numnames);" + print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numcodes);" + print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, numfnames);" + print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strnames);" + print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strcodes);" + print "NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, strfnames);" + print "" + print "#define boolnames NCURSES_PUBLIC_VAR(boolnames())" + print "#define boolcodes NCURSES_PUBLIC_VAR(boolcodes())" + print "#define boolfnames NCURSES_PUBLIC_VAR(boolfnames())" + print "#define numnames NCURSES_PUBLIC_VAR(numnames())" + print "#define numcodes NCURSES_PUBLIC_VAR(numcodes())" + print "#define numfnames NCURSES_PUBLIC_VAR(numfnames())" + print "#define strnames NCURSES_PUBLIC_VAR(strnames())" + print "#define strcodes NCURSES_PUBLIC_VAR(strcodes())" + print "#define strfnames NCURSES_PUBLIC_VAR(strfnames())" + print "" + print "#else" + print "" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[];" + print "extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[];" + print "" + print "#endif" + print "" + print "/*" + print " * These entrypoints are used only by the ncurses utilities such as tic." + print " */" + print "#ifdef NCURSES_INTERNALS" + print "" + print "extern NCURSES_EXPORT(int) _nc_set_tty_mode (TTY *buf);" + print "extern NCURSES_EXPORT(int) _nc_read_entry2 (const char * const, char * const, TERMTYPE2 *const);" + print "extern NCURSES_EXPORT(int) _nc_read_file_entry (const char *const, TERMTYPE2 *);" + print "extern NCURSES_EXPORT(int) _nc_read_termtype (TERMTYPE2 *, char *, int);" + print "extern NCURSES_EXPORT(char *) _nc_first_name (const char *const);" + print "extern NCURSES_EXPORT(int) _nc_name_match (const char *const, const char *const, const char *const);" + print "extern NCURSES_EXPORT(char *) _nc_tiparm(int, const char *, ...);" + print "" + print "#endif /* NCURSES_INTERNALS */" + print "" + print "" + print "/*" + print " * These entrypoints are used by tack 1.07." + print " */" + print "extern NCURSES_EXPORT(const TERMTYPE *) _nc_fallback (const char *);" + print "extern NCURSES_EXPORT(int) _nc_read_entry (const char * const, char * const, TERMTYPE *const);" + print "" + print "/*" + print " * Normal entry points" + print " */" + print "extern NCURSES_EXPORT(TERMINAL *) set_curterm (TERMINAL *);" + print "extern NCURSES_EXPORT(int) del_curterm (TERMINAL *);" + print "" + print "/* miscellaneous entry points */" + print "extern NCURSES_EXPORT(int) restartterm (NCURSES_CONST char *, int, int *);" + print "extern NCURSES_EXPORT(int) setupterm (const char *,int,int *);" + print "" + print "/* terminfo entry points, also declared in curses.h */" + print "#if !defined(__NCURSES_H)" + print "extern NCURSES_EXPORT(char *) tigetstr (const char *);" + print "extern NCURSES_EXPORT_VAR(char) ttytype[];" + print "extern NCURSES_EXPORT(int) putp (const char *);" + print "extern NCURSES_EXPORT(int) tigetflag (const char *);" + print "extern NCURSES_EXPORT(int) tigetnum (const char *);" + print "" + print "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */" + print "extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */" + print "#else" + print "extern NCURSES_EXPORT(char *) tparm (const char *, long,long,long,long,long,long,long,long,long); /* special */" + print "#endif" + print "" + print "extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */" + print "" + print "#endif /* __NCURSES_H */" + print "" + print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */" + print "#if !defined(NCURSES_TERMCAP_H_incl)" + print "extern NCURSES_EXPORT(char *) tgetstr (const char *, char **);" + print "extern NCURSES_EXPORT(char *) tgoto (const char *, int, int);" + print "extern NCURSES_EXPORT(int) tgetent (char *, const char *);" + print "extern NCURSES_EXPORT(int) tgetflag (const char *);" + print "extern NCURSES_EXPORT(int) tgetnum (const char *);" + print "extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int));" + print "#endif /* NCURSES_TERMCAP_H_incl */" + print "" + print "/*" + print " * Include curses.h before term.h to enable these extensions." + print " */" + print "#if defined(NCURSES_SP_FUNCS) && (NCURSES_SP_FUNCS != 0)" + print "" + print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tigetstr) (SCREEN*, const char *);" + print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(putp) (SCREEN*, const char *);" + 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 "#if @NCURSES_TPARM_VARARGS@ /* NCURSES_TPARM_VARARGS */" + print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, ...); /* special */" + print "#else" + print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tparm) (SCREEN*, const char *, long,long,long,long,long,long,long,long,long); /* special */" + print "#endif" + print "" + print "/* termcap database emulation (XPG4 uses const only for 2nd param of tgetent) */" + print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgetstr) (SCREEN*, const char *, char **);" + print "extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(tgoto) (SCREEN*, const char *, int, int);" + print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetent) (SCREEN*, char *, const char *);" + print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetflag) (SCREEN*, const char *);" + print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tgetnum) (SCREEN*, const char *);" + print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(tputs) (SCREEN*, const char *, int, NCURSES_SP_OUTC);" + print "" + print "extern NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(set_curterm) (SCREEN*, TERMINAL *);" + print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(del_curterm) (SCREEN*, TERMINAL *);" + print "" + print "extern NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (SCREEN*, NCURSES_CONST char *, int, int *);" + print "#endif /* NCURSES_SP_FUNCS */" + print "" + print "/*" + print " * Debugging features." + print " */" + print "extern GCC_NORETURN NCURSES_EXPORT(void) exit_terminfo(int);" + print "" + print "#ifdef __cplusplus" + printf "%s\n", rcurl; + print "#endif" + print "" + print "#endif /* NCURSES_TERM_H_incl */" +} diff --git a/deps/ncurses-6.3/include/Makefile.in b/deps/ncurses-6.3/include/Makefile.in new file mode 100644 index 0000000..351383b --- /dev/null +++ b/deps/ncurses-6.3/include/Makefile.in @@ -0,0 +1,177 @@ +# $Id: Makefile.in,v 1.53 2021/07/03 18:56:51 tom Exp $ +############################################################################## +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 1998-2013,2015 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: Thomas E. Dickey 1996-on +# +# Makefile for ncurses source code. +# +# This makes/installs ncurses include-files +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +DESTDIR = @DESTDIR@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +includedir = @includedir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +AWK = @AWK@ +LN_S = @LN_S@ + +CC = @CC@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ +CPPFLAGS = -DHAVE_CONFIG_H -I. @CPPFLAGS@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +VERSION = @cf_cv_rel_version@ + +# The "Caps" file specifies the terminfo database format, as well as the list +# of function keys. +TERMINFO_CAPS = $(srcdir)/@TERMINFO_CAPS@ +CAPLIST = $(TERMINFO_CAPS) \ + $(srcdir)/Caps-ncurses + +# These files are generated by the configure script +CONFIG_SRC = \ + MKterm.h.awk \ + curses.head \ + ncurses_dll.h \ + termcap.h \ + unctrl.h + +# These files are generated by this makefile +AUTO_SRC = \ + curses.h \ + hashsize.h \ + ncurses_def.h \ + parametrized.h \ + config.h \ + term.h + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : depend +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +libs \ +depend \ +sources \ +install :: $(AUTO_SRC) + +curses.h : $(CAPLIST) \ + curses.head \ + $(srcdir)/curses.tail \ + $(srcdir)/MKkey_defs.sh + cat curses.head >$@ + AWK=$(AWK) $(SHELL) $(srcdir)/MKkey_defs.sh $(CAPLIST) >>$@ + $(SHELL) -c 'if test "@NCURSES_WGETCH_EVENTS@" = "1" ; then cat $(srcdir)/curses.events >>$@ ; fi' + $(SHELL) -c 'if test "@NCURSES_CH_T@" = "cchar_t" ; then cat $(srcdir)/curses.wide >>$@ ; fi' + cat $(srcdir)/curses.tail >>$@ + +term.h: $(CAPLIST) \ + MKterm.h.awk + $(AWK) -f MKterm.h.awk $(CAPLIST) > $@ + $(SHELL) $(srcdir)/edit_cfg.sh ../include/ncurses_cfg.h $@ + +hashsize.h: $(CAPLIST) \ + $(srcdir)/MKhashsize.sh + $(SHELL) $(srcdir)/MKhashsize.sh $(CAPLIST) >$@ + +ncurses_def.h: $(srcdir)/ncurses_defs $(srcdir)/MKncurses_def.sh + AWK=$(AWK) $(SHELL) $(srcdir)/MKncurses_def.sh $(srcdir)/ncurses_defs >$@ + +parametrized.h: $(CAPLIST) \ + $(srcdir)/MKparametrized.sh + AWK=$(AWK) $(SHELL) $(srcdir)/MKparametrized.sh $(CAPLIST) >$@ + +# This is required by pthread.h on MinGW +config.h: + touch $@ + +tags: + $(CTAGS) *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace + +clean :: mostlyclean + -rm -f $(AUTO_SRC) + -rm -rf *.dSYM + +distclean :: clean + -rm -f Makefile $(CONFIG_SRC) config.h + +realclean :: distclean + +# Verify that each header-file can be compiled without including another. +check: + @$(SHELL) -c "for header in *.h;\ + do \ + echo \"** testing \$${header}\" ; \ + echo \"#include <\$${header}>\" >headers.c; \ + echo \"int main(void) { return 0; }\" >>headers.c; \ + $(CC) -c $(CFLAGS) $(CPPFLAGS) headers.c; \ + done" + -@rm -f headers.* + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-5.9/include/capdefaults.c b/deps/ncurses-6.3/include/capdefaults.c similarity index 93% rename from deps/ncurses-5.9/include/capdefaults.c rename to deps/ncurses-6.3/include/capdefaults.c index da76cc1..0bdda14 100644 --- a/deps/ncurses-5.9/include/capdefaults.c +++ b/deps/ncurses-6.3/include/capdefaults.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2008 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2000,2008 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 * @@ -32,11 +33,11 @@ * and: Thomas E. Dickey 1996-on * ****************************************************************************/ -/* $Id: capdefaults.c,v 1.14 2008/11/16 00:19:59 juergen Exp $ */ +/* $Id: capdefaults.c,v 1.16 2021/09/04 10:52:55 tom Exp $ */ /* * Compute obsolete capabilities. The reason this is an include file is - * that the two places where it's needed want the macros to generate + * that the two places where it is needed require the macros to generate * offsets to different structures. See the file Caps for explanations of * these conversions. * diff --git a/deps/ncurses-6.3/include/curses.events b/deps/ncurses-6.3/include/curses.events new file mode 100644 index 0000000..25a2583 --- /dev/null +++ b/deps/ncurses-6.3/include/curses.events @@ -0,0 +1,55 @@ +/* $Id*/ +/* + * vile:cmode: + * This file is part of ncurses, designed to be appended after curses.h.in + * (see that file for the relevant copyright). + */ + +/* + * This is an extension to support events... + */ +#ifdef NCURSES_WGETCH_EVENTS +#if !defined(__BEOS__) || defined(__HAIKU__) + /* Fix _nc_timed_wait() on BEOS... */ +# define NCURSES_EVENT_VERSION 1 +#endif /* !defined(__BEOS__) */ + +/* + * Bits to set in _nc_event.data.flags + */ +# define _NC_EVENT_TIMEOUT_MSEC 1 +# define _NC_EVENT_FILE 2 +# define _NC_EVENT_FILE_READABLE 2 +# if 0 /* Not supported yet... */ +# define _NC_EVENT_FILE_WRITABLE 4 +# define _NC_EVENT_FILE_EXCEPTION 8 +# endif + +typedef struct +{ + int type; + union + { + long timeout_msec; /* _NC_EVENT_TIMEOUT_MSEC */ + struct + { + unsigned int flags; + int fd; + unsigned int result; + } fev; /* _NC_EVENT_FILE */ + } data; +} _nc_event; + +typedef struct +{ + int count; + int result_flags; /* _NC_EVENT_TIMEOUT_MSEC or _NC_EVENT_FILE_READABLE */ + _nc_event *events[1]; +} _nc_eventlist; + +extern NCURSES_EXPORT(int) wgetch_events (WINDOW *, _nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */ +extern NCURSES_EXPORT(int) wgetnstr_events (WINDOW *,char *,int,_nc_eventlist *) GCC_DEPRECATED(experimental option); /* experimental */ + +#define KEY_EVENT 0633 /* We were interrupted by an event */ + +#endif /* NCURSES_WGETCH_EVENTS */ diff --git a/deps/ncurses-6.3/include/curses.h.in b/deps/ncurses-6.3/include/curses.h.in new file mode 100644 index 0000000..6acf2d0 --- /dev/null +++ b/deps/ncurses-6.3/include/curses.h.in @@ -0,0 +1,1506 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* $Id: curses.h.in,v 1.277 2021/09/24 16:07:37 tom Exp $ */ + +#ifndef __NCURSES_H +#define __NCURSES_H + +/* + The symbols beginning NCURSES_ or USE_ are configuration choices. + A few of the former can be overridden by applications at compile-time. + Most of the others correspond to configure-script options (or checks + by the configure-script for features of the system on which it is built). + + These symbols can be overridden by applications at compile-time: + NCURSES_NOMACROS suppresses macro definitions in favor of functions + NCURSES_WATTR_MACROS suppresses wattr_* macro definitions + NCURSES_WIDECHAR is an alternative for declaring wide-character functions. + + These symbols are used only when building ncurses: + NCURSES_ATTR_T + NCURSES_FIELD_INTERNALS + NCURSES_INTERNALS + + These symbols are set by the configure script: + NCURSES_ENABLE_STDBOOL_H + NCURSES_EXPANDED + NCURSES_EXT_COLORS + NCURSES_EXT_FUNCS + NCURSES_EXT_PUTWIN + NCURSES_NO_PADDING + NCURSES_OSPEED_COMPAT + NCURSES_PATHSEP + NCURSES_REENTRANT + */ + +#define CURSES 1 +#define CURSES_H 1 + +/* These are defined only in curses.h, and are used for conditional compiles */ +#define NCURSES_VERSION_MAJOR @NCURSES_MAJOR@ +#define NCURSES_VERSION_MINOR @NCURSES_MINOR@ +#define NCURSES_VERSION_PATCH @NCURSES_PATCH@ + +/* This is defined in more than one ncurses header, for identification */ +#undef NCURSES_VERSION +#define NCURSES_VERSION "@NCURSES_MAJOR@.@NCURSES_MINOR@" + +/* + * Identify the mouse encoding version. + */ +#define NCURSES_MOUSE_VERSION @NCURSES_MOUSE_VERSION@ + +/* + * Definitions to facilitate DLL's. + */ +#include <ncurses_dll.h> + +/* + * Extra headers. + */ +#if @HAVE_STDINT_H@ +#include <stdint.h> +#endif + +#ifdef __cplusplus +#else +#if @HAVE_STDNORETURN_H@ +#include <stdnoreturn.h> +#undef GCC_NORETURN +#define GCC_NORETURN _Noreturn +#endif +#endif + +/* + * 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@ +#endif + +/* + * NCURSES_ATTR_T is used to quiet compiler warnings when building ncurses + * configured using --disable-macros. + */ +#ifndef NCURSES_ATTR_T +#define NCURSES_ATTR_T int +#endif + +/* + * Expands to 'const' if ncurses is configured using --enable-const. Note that + * doing so makes it incompatible with other implementations of X/Open Curses. + */ +#undef NCURSES_CONST +#define NCURSES_CONST @NCURSES_CONST@ + +#undef NCURSES_INLINE +#define NCURSES_INLINE @NCURSES_INLINE@ + +/* + * The standard type used for color values, and for color-pairs. The latter + * allows the curses library to enumerate the combinations of foreground and + * background colors used by an application, and is normally the product of the + * total foreground and background colors. + * + * X/Open uses "short" for both of these types, ultimately because they are + * numbers from the SVr4 terminal database, which uses 16-bit signed values. + */ +#undef NCURSES_COLOR_T +#define NCURSES_COLOR_T short + +#undef NCURSES_PAIRS_T +#define NCURSES_PAIRS_T short + +/* + * Definitions used to make WINDOW and similar structs opaque. + */ +#ifndef NCURSES_INTERNALS +#define NCURSES_OPAQUE @NCURSES_OPAQUE@ +#define NCURSES_OPAQUE_FORM @NCURSES_OPAQUE_FORM@ +#define NCURSES_OPAQUE_MENU @NCURSES_OPAQUE_MENU@ +#define NCURSES_OPAQUE_PANEL @NCURSES_OPAQUE_PANEL@ +#endif + +/* + * Definition used to optionally suppress wattr* macros to help with the + * transition from ncurses5 to ncurses6 by allowing the header files to + * be shared across development packages for ncursesw in both ABIs. + */ +#ifndef NCURSES_WATTR_MACROS +#define NCURSES_WATTR_MACROS @NCURSES_WATTR_MACROS@ +#endif + +/* + * The reentrant code relies on the opaque setting, but adds features. + */ +#ifndef NCURSES_REENTRANT +#define NCURSES_REENTRANT @cf_cv_enable_reentrant@ +#endif + +/* + * In certain environments, we must work around linker problems for data + */ +#undef NCURSES_BROKEN_LINKER +#if @BROKEN_LINKER@ +#define NCURSES_BROKEN_LINKER 1 +#endif + +/* + * Control whether bindings for interop support are added. + */ +#undef NCURSES_INTEROP_FUNCS +#define NCURSES_INTEROP_FUNCS @NCURSES_INTEROP_FUNCS@ + +/* + * The internal type used for window dimensions. + */ +#undef NCURSES_SIZE_T +#define NCURSES_SIZE_T @NCURSES_SIZE_T@ + +/* + * Control whether tparm() supports varargs or fixed-parameter list. + */ +#undef NCURSES_TPARM_VARARGS +#define NCURSES_TPARM_VARARGS @NCURSES_TPARM_VARARGS@ + +/* + * Control type used for tparm's arguments. While X/Open equates long and + * char* values, this is not always workable for 64-bit platforms. + */ +#undef NCURSES_TPARM_ARG +#define NCURSES_TPARM_ARG @NCURSES_TPARM_ARG@ + +/* + * Control whether ncurses uses wcwidth() for checking width of line-drawing + * characters. + */ +#undef NCURSES_WCWIDTH_GRAPHICS +#define NCURSES_WCWIDTH_GRAPHICS @NCURSES_WCWIDTH_GRAPHICS@ + +/* + * NCURSES_CH_T is used in building the library, but not used otherwise in + * this header file, since that would make the normal/wide-character versions + * of the header incompatible. + */ +#undef NCURSES_CH_T +#define NCURSES_CH_T @NCURSES_CH_T@ + +#if @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; +#endif + +/* + * We need FILE, etc. Include this before checking any feature symbols. + */ +#include <stdio.h> + +/* + * With XPG4, you must define _XOPEN_SOURCE_EXTENDED, it is redundant (or + * conflicting) when _XOPEN_SOURCE is 500 or greater. If NCURSES_WIDECHAR is + * not already defined, e.g., if the platform relies upon nonstandard feature + * test macros, define it at this point if the standard feature test macros + * indicate that it should be defined. + */ +#ifndef NCURSES_WIDECHAR +#if defined(_XOPEN_SOURCE_EXTENDED) || (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500)) +#define NCURSES_WIDECHAR 1 +#else +#define NCURSES_WIDECHAR 0 +#endif +#endif /* NCURSES_WIDECHAR */ + +#include <stdarg.h> /* we need va_list */ +#if NCURSES_WIDECHAR +#include <stddef.h> /* we want wchar_t */ +#endif + +/* X/Open and SVr4 specify that curses implements 'bool'. However, C++ may also + * implement it. If so, we must use the C++ compiler's type to avoid conflict + * with other interfaces. + * + * A further complication is that <stdbool.h> may declare 'bool' to be a + * different type, such as an enum which is not necessarily compatible with + * C++. If we have <stdbool.h>, make 'bool' a macro, so users may #undef it. + * Otherwise, let it remain a typedef to avoid conflicts with other #define's. + * In either case, make a typedef for NCURSES_BOOL which can be used if needed + * from either C or C++. + */ + +#undef TRUE +#define TRUE 1 + +#undef FALSE +#define FALSE 0 + +typedef @cf_cv_type_of_bool@ NCURSES_BOOL; + +#if @USE_CXX_BOOL@ /* __cplusplus, etc. */ + +/* use the C++ compiler's bool type */ +#define NCURSES_BOOL bool + +#else /* c89, c99, etc. */ + +#if NCURSES_ENABLE_STDBOOL_H +#include <stdbool.h> +/* use whatever the C compiler decides bool really is */ +#define NCURSES_BOOL bool +#else +/* there is no predefined bool - use our own */ +#undef bool +#define bool NCURSES_BOOL +#endif + +#endif /* !__cplusplus, etc. */ + +#ifdef __cplusplus +extern "C" { +#define NCURSES_CAST(type,value) static_cast<type>(value) +#else +#define NCURSES_CAST(type,value) (type)(value) +#endif + +#define NCURSES_OK_ADDR(p) (0 != NCURSES_CAST(const void *, (p))) + +/* + * X/Open attributes. In the ncurses implementation, they are identical to the + * A_ attributes. + */ +#define WA_ATTRIBUTES A_ATTRIBUTES +#define WA_NORMAL A_NORMAL +#define WA_STANDOUT A_STANDOUT +#define WA_UNDERLINE A_UNDERLINE +#define WA_REVERSE A_REVERSE +#define WA_BLINK A_BLINK +#define WA_DIM A_DIM +#define WA_BOLD A_BOLD +#define WA_ALTCHARSET A_ALTCHARSET +#define WA_INVIS A_INVIS +#define WA_PROTECT A_PROTECT +#define WA_HORIZONTAL A_HORIZONTAL +#define WA_LEFT A_LEFT +#define WA_LOW A_LOW +#define WA_RIGHT A_RIGHT +#define WA_TOP A_TOP +#define WA_VERTICAL A_VERTICAL + +#if @NCURSES_EXT_FUNCS@ +#define WA_ITALIC A_ITALIC /* ncurses extension */ +#endif + +/* colors */ +#define COLOR_BLACK 0 +#define COLOR_RED 1 +#define COLOR_GREEN 2 +#define COLOR_YELLOW 3 +#define COLOR_BLUE 4 +#define COLOR_MAGENTA 5 +#define COLOR_CYAN 6 +#define COLOR_WHITE 7 + +/* line graphics */ + +#if @BROKEN_LINKER@ || NCURSES_REENTRANT +NCURSES_WRAPPED_VAR(chtype*, acs_map); +#define acs_map NCURSES_PUBLIC_VAR(acs_map()) +#else +extern NCURSES_EXPORT_VAR(chtype) acs_map[]; +#endif + +#define NCURSES_ACS(c) (acs_map[NCURSES_CAST(unsigned char,(c))]) + +/* VT100 symbols begin here */ +#define ACS_ULCORNER NCURSES_ACS('l') /* upper left corner */ +#define ACS_LLCORNER NCURSES_ACS('m') /* lower left corner */ +#define ACS_URCORNER NCURSES_ACS('k') /* upper right corner */ +#define ACS_LRCORNER NCURSES_ACS('j') /* lower right corner */ +#define ACS_LTEE NCURSES_ACS('t') /* tee pointing right */ +#define ACS_RTEE NCURSES_ACS('u') /* tee pointing left */ +#define ACS_BTEE NCURSES_ACS('v') /* tee pointing up */ +#define ACS_TTEE NCURSES_ACS('w') /* tee pointing down */ +#define ACS_HLINE NCURSES_ACS('q') /* horizontal line */ +#define ACS_VLINE NCURSES_ACS('x') /* vertical line */ +#define ACS_PLUS NCURSES_ACS('n') /* large plus or crossover */ +#define ACS_S1 NCURSES_ACS('o') /* scan line 1 */ +#define ACS_S9 NCURSES_ACS('s') /* scan line 9 */ +#define ACS_DIAMOND NCURSES_ACS('`') /* diamond */ +#define ACS_CKBOARD NCURSES_ACS('a') /* checker board (stipple) */ +#define ACS_DEGREE NCURSES_ACS('f') /* degree symbol */ +#define ACS_PLMINUS NCURSES_ACS('g') /* plus/minus */ +#define ACS_BULLET NCURSES_ACS('~') /* bullet */ +/* Teletype 5410v1 symbols begin here */ +#define ACS_LARROW NCURSES_ACS(',') /* arrow pointing left */ +#define ACS_RARROW NCURSES_ACS('+') /* arrow pointing right */ +#define ACS_DARROW NCURSES_ACS('.') /* arrow pointing down */ +#define ACS_UARROW NCURSES_ACS('-') /* arrow pointing up */ +#define ACS_BOARD NCURSES_ACS('h') /* board of squares */ +#define ACS_LANTERN NCURSES_ACS('i') /* lantern symbol */ +#define ACS_BLOCK NCURSES_ACS('0') /* solid square block */ +/* + * These aren't documented, but a lot of System Vs have them anyway + * (you can spot pprryyzz{{||}} in a lot of AT&T terminfo strings). + * The ACS_names may not match AT&T's, our source didn't know them. + */ +#define ACS_S3 NCURSES_ACS('p') /* scan line 3 */ +#define ACS_S7 NCURSES_ACS('r') /* scan line 7 */ +#define ACS_LEQUAL NCURSES_ACS('y') /* less/equal */ +#define ACS_GEQUAL NCURSES_ACS('z') /* greater/equal */ +#define ACS_PI NCURSES_ACS('{') /* Pi */ +#define ACS_NEQUAL NCURSES_ACS('|') /* not equal */ +#define ACS_STERLING NCURSES_ACS('}') /* UK pound sign */ + +/* + * 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. + */ +#define ACS_BSSB ACS_ULCORNER +#define ACS_SSBB ACS_LLCORNER +#define ACS_BBSS ACS_URCORNER +#define ACS_SBBS ACS_LRCORNER +#define ACS_SBSS ACS_RTEE +#define ACS_SSSB ACS_LTEE +#define ACS_SSBS ACS_BTEE +#define ACS_BSSS ACS_TTEE +#define ACS_BSBS ACS_HLINE +#define ACS_SBSB ACS_VLINE +#define ACS_SSSS ACS_PLUS + +#undef ERR +#define ERR (-1) + +#undef OK +#define OK (0) + +/* values for the _flags member */ +#define _SUBWIN 0x01 /* is this a sub-window? */ +#define _ENDLINE 0x02 /* is the window flush right? */ +#define _FULLWIN 0x04 /* is the window full-screen? */ +#define _SCROLLWIN 0x08 /* bottom edge is at screen bottom? */ +#define _ISPAD 0x10 /* is this window a pad? */ +#define _HASMOVED 0x20 /* has cursor moved since last refresh? */ +#define _WRAPPED 0x40 /* cursor was just wrappped */ + +/* + * this value is used in the firstchar and lastchar fields to mark + * unchanged lines + */ +#define _NOCHANGE -1 + +/* + * this value is used in the oldindex field to mark lines created by insertions + * and scrolls. + */ +#define _NEWINDEX -1 + +#ifdef NCURSES_INTERNALS +#undef SCREEN +#define SCREEN struct screen +SCREEN; +#else +typedef struct screen SCREEN; +#endif + +typedef struct _win_st WINDOW; + +typedef chtype attr_t; /* ...must be at least as wide as chtype */ + +#if NCURSES_WIDECHAR + +#if @NCURSES_LIBUTF8@ +#ifdef mblen /* libutf8.h defines it w/o undefining first */ +#undef mblen +#endif +#include <libutf8.h> +#endif + +#if @NEED_WCHAR_H@ +#include <wchar.h> /* ...to get mbstate_t, etc. */ +#endif + +#if @NCURSES_WCHAR_T@ +typedef unsigned short wchar_t@NCURSES_OK_WCHAR_T@; +#endif + +#if @NCURSES_WINT_T@ +typedef unsigned int wint_t@NCURSES_OK_WCHAR_T@; +#endif + +/* + * cchar_t stores an array of CCHARW_MAX wide characters. The first is + * normally a spacing character. The others are non-spacing. If those + * (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@ +typedef struct +{ + attr_t attr; + wchar_t chars[CCHARW_MAX]; +#if @NCURSES_EXT_COLORS@ +#undef NCURSES_EXT_COLORS +#define NCURSES_EXT_COLORS @NCURSES_PATCH@ + int ext_color; /* color pair, must be more than 16-bits */ +#endif +} +cchar_t; + +#endif /* NCURSES_WIDECHAR */ + +#if !NCURSES_OPAQUE +struct ldat; + +struct _win_st +{ + NCURSES_SIZE_T _cury, _curx; /* current cursor position */ + + /* window location and size */ + NCURSES_SIZE_T _maxy, _maxx; /* maximums of x and y, NOT window size */ + NCURSES_SIZE_T _begy, _begx; /* screen coords of upper-left-hand corner */ + + short _flags; /* window state flags */ + + /* attribute tracking */ + attr_t _attrs; /* current attribute for non-space character */ + chtype _bkgd; /* current background char/attribute pair */ + + /* option values set by user */ + bool _notimeout; /* no time out on function-key entry? */ + bool _clear; /* consider all data in the window invalid? */ + bool _leaveok; /* OK to not reset cursor on exit? */ + bool _scroll; /* OK to scroll this window? */ + bool _idlok; /* OK to use insert/delete line? */ + bool _idcok; /* OK to use insert/delete char? */ + bool _immed; /* window in immed mode? (not yet used) */ + bool _sync; /* window in sync mode? */ + bool _use_keypad; /* process function keys into KEY_ symbols? */ + int _delay; /* 0 = nodelay, <0 = blocking, >0 = delay */ + + struct ldat *_line; /* the actual line data */ + + /* global screen state */ + NCURSES_SIZE_T _regtop; /* top line of scrolling region */ + NCURSES_SIZE_T _regbottom; /* bottom line of scrolling region */ + + /* these are used only if this is a sub-window */ + int _parx; /* x coordinate of this window in parent */ + int _pary; /* y coordinate of this window in parent */ + WINDOW *_parent; /* pointer to parent if a sub-window */ + + /* these are used only if this is a pad */ + struct pdat + { + NCURSES_SIZE_T _pad_y, _pad_x; + NCURSES_SIZE_T _pad_top, _pad_left; + NCURSES_SIZE_T _pad_bottom, _pad_right; + } _pad; + + NCURSES_SIZE_T _yoffset; /* real begy is _begy + _yoffset */ + +#if NCURSES_WIDECHAR + cchar_t _bkgrnd; /* current background char/attribute pair */ +#if @NCURSES_EXT_COLORS@ + int _color; /* current color-pair for non-space character */ +#endif +#endif +}; +#endif /* NCURSES_OPAQUE */ + +/* + * GCC (and some other compilers) define '__attribute__'; we're using this + * macro to alert the compiler to flag inconsistencies in printf/scanf-like + * function calls. Just in case '__attribute__' isn't defined, make a dummy. + * Old versions of G++ do not accept it anyway, at least not consistently with + * GCC. + */ +#if !(defined(__GNUC__) || defined(__GNUG__) || defined(__attribute__)) +#define __attribute__(p) /* nothing */ +#endif + +/* + * We cannot define these in ncurses_cfg.h, since they require parameters to be + * passed (that is non-portable). + */ +#ifndef GCC_PRINTFLIKE +#ifndef printf +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +#else +#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ +#endif +#endif + +#ifndef GCC_SCANFLIKE +#ifndef scanf +#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) +#else +#define GCC_SCANFLIKE(fmt,var) /*nothing*/ +#endif +#endif + +#ifndef GCC_NORETURN +#define GCC_NORETURN /* nothing */ +#endif + +#ifndef GCC_UNUSED +#define GCC_UNUSED /* nothing */ +#endif + +#undef GCC_DEPRECATED +#if (__GNUC__ - 0 > 3 || (__GNUC__ - 0 == 3 && __GNUC_MINOR__ - 0 >= 2)) && !defined(NCURSES_INTERNALS) +#define GCC_DEPRECATED(msg) __attribute__((deprecated)) +#else +#define GCC_DEPRECATED(msg) /* nothing */ +#endif + +/* + * Curses uses a helper function. Define our type for this to simplify + * extending it for the sp-funcs feature. + */ +typedef int (*NCURSES_OUTC)(int); + +/* + * Function prototypes. This is the complete X/Open Curses list of required + * functions. Those marked `generated' will have sources generated from the + * macro definitions later in this file, in order to satisfy XPG4.2 + * requirements. + */ + +extern NCURSES_EXPORT(int) addch (const chtype); /* generated */ +extern NCURSES_EXPORT(int) addchnstr (const chtype *, int); /* generated */ +extern NCURSES_EXPORT(int) addchstr (const chtype *); /* generated */ +extern NCURSES_EXPORT(int) addnstr (const char *, int); /* generated */ +extern NCURSES_EXPORT(int) addstr (const char *); /* generated */ +extern NCURSES_EXPORT(int) attroff (NCURSES_ATTR_T); /* generated */ +extern NCURSES_EXPORT(int) attron (NCURSES_ATTR_T); /* generated */ +extern NCURSES_EXPORT(int) attrset (NCURSES_ATTR_T); /* generated */ +extern NCURSES_EXPORT(int) attr_get (attr_t *, NCURSES_PAIRS_T *, void *); /* generated */ +extern NCURSES_EXPORT(int) attr_off (attr_t, void *); /* generated */ +extern NCURSES_EXPORT(int) attr_on (attr_t, void *); /* generated */ +extern NCURSES_EXPORT(int) attr_set (attr_t, NCURSES_PAIRS_T, void *); /* generated */ +extern NCURSES_EXPORT(int) baudrate (void); /* implemented */ +extern NCURSES_EXPORT(int) beep (void); /* implemented */ +extern NCURSES_EXPORT(int) bkgd (chtype); /* generated */ +extern NCURSES_EXPORT(void) bkgdset (chtype); /* generated */ +extern NCURSES_EXPORT(int) border (chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* generated */ +extern NCURSES_EXPORT(int) box (WINDOW *, chtype, chtype); /* generated */ +extern NCURSES_EXPORT(bool) can_change_color (void); /* implemented */ +extern NCURSES_EXPORT(int) cbreak (void); /* implemented */ +extern NCURSES_EXPORT(int) chgat (int, attr_t, NCURSES_PAIRS_T, const void *); /* generated */ +extern NCURSES_EXPORT(int) clear (void); /* generated */ +extern NCURSES_EXPORT(int) clearok (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(int) clrtobot (void); /* generated */ +extern NCURSES_EXPORT(int) clrtoeol (void); /* generated */ +extern NCURSES_EXPORT(int) color_content (NCURSES_COLOR_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*,NCURSES_COLOR_T*); /* implemented */ +extern NCURSES_EXPORT(int) color_set (NCURSES_PAIRS_T,void*); /* generated */ +extern NCURSES_EXPORT(int) COLOR_PAIR (int); /* generated */ +extern NCURSES_EXPORT(int) copywin (const WINDOW*,WINDOW*,int,int,int,int,int,int,int); /* implemented */ +extern NCURSES_EXPORT(int) curs_set (int); /* implemented */ +extern NCURSES_EXPORT(int) def_prog_mode (void); /* implemented */ +extern NCURSES_EXPORT(int) def_shell_mode (void); /* implemented */ +extern NCURSES_EXPORT(int) delay_output (int); /* implemented */ +extern NCURSES_EXPORT(int) delch (void); /* generated */ +extern NCURSES_EXPORT(void) delscreen (SCREEN *); /* implemented */ +extern NCURSES_EXPORT(int) delwin (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) deleteln (void); /* generated */ +extern NCURSES_EXPORT(WINDOW *) derwin (WINDOW *,int,int,int,int); /* implemented */ +extern NCURSES_EXPORT(int) doupdate (void); /* implemented */ +extern NCURSES_EXPORT(WINDOW *) dupwin (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) echo (void); /* implemented */ +extern NCURSES_EXPORT(int) echochar (const chtype); /* generated */ +extern NCURSES_EXPORT(int) erase (void); /* generated */ +extern NCURSES_EXPORT(int) endwin (void); /* implemented */ +extern NCURSES_EXPORT(char) erasechar (void); /* implemented */ +extern NCURSES_EXPORT(void) filter (void); /* implemented */ +extern NCURSES_EXPORT(int) flash (void); /* implemented */ +extern NCURSES_EXPORT(int) flushinp (void); /* implemented */ +extern NCURSES_EXPORT(chtype) getbkgd (WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getch (void); /* generated */ +extern NCURSES_EXPORT(int) getnstr (char *, int); /* generated */ +extern NCURSES_EXPORT(int) getstr (char *); /* generated */ +extern NCURSES_EXPORT(WINDOW *) getwin (FILE *); /* implemented */ +extern NCURSES_EXPORT(int) halfdelay (int); /* implemented */ +extern NCURSES_EXPORT(bool) has_colors (void); /* implemented */ +extern NCURSES_EXPORT(bool) has_ic (void); /* implemented */ +extern NCURSES_EXPORT(bool) has_il (void); /* implemented */ +extern NCURSES_EXPORT(int) hline (chtype, int); /* generated */ +extern NCURSES_EXPORT(void) idcok (WINDOW *, bool); /* implemented */ +extern NCURSES_EXPORT(int) idlok (WINDOW *, bool); /* implemented */ +extern NCURSES_EXPORT(void) immedok (WINDOW *, bool); /* implemented */ +extern NCURSES_EXPORT(chtype) inch (void); /* generated */ +extern NCURSES_EXPORT(int) inchnstr (chtype *, int); /* generated */ +extern NCURSES_EXPORT(int) inchstr (chtype *); /* generated */ +extern NCURSES_EXPORT(WINDOW *) initscr (void); /* implemented */ +extern NCURSES_EXPORT(int) init_color (NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T,NCURSES_COLOR_T); /* implemented */ +extern NCURSES_EXPORT(int) init_pair (NCURSES_PAIRS_T,NCURSES_COLOR_T,NCURSES_COLOR_T); /* implemented */ +extern NCURSES_EXPORT(int) innstr (char *, int); /* generated */ +extern NCURSES_EXPORT(int) insch (chtype); /* generated */ +extern NCURSES_EXPORT(int) insdelln (int); /* generated */ +extern NCURSES_EXPORT(int) insertln (void); /* generated */ +extern NCURSES_EXPORT(int) insnstr (const char *, int); /* generated */ +extern NCURSES_EXPORT(int) insstr (const char *); /* generated */ +extern NCURSES_EXPORT(int) instr (char *); /* generated */ +extern NCURSES_EXPORT(int) intrflush (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(bool) isendwin (void); /* implemented */ +extern NCURSES_EXPORT(bool) is_linetouched (WINDOW *,int); /* implemented */ +extern NCURSES_EXPORT(bool) is_wintouched (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(NCURSES_CONST char *) keyname (int); /* implemented */ +extern NCURSES_EXPORT(int) keypad (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(char) killchar (void); /* implemented */ +extern NCURSES_EXPORT(int) leaveok (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(char *) longname (void); /* implemented */ +extern NCURSES_EXPORT(int) meta (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(int) move (int, int); /* generated */ +extern NCURSES_EXPORT(int) mvaddch (int, int, const chtype); /* generated */ +extern NCURSES_EXPORT(int) mvaddchnstr (int, int, const chtype *, int); /* generated */ +extern NCURSES_EXPORT(int) mvaddchstr (int, int, const chtype *); /* generated */ +extern NCURSES_EXPORT(int) mvaddnstr (int, int, const char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvaddstr (int, int, const char *); /* generated */ +extern NCURSES_EXPORT(int) mvchgat (int, int, int, attr_t, NCURSES_PAIRS_T, const void *); /* generated */ +extern NCURSES_EXPORT(int) mvcur (int,int,int,int); /* implemented */ +extern NCURSES_EXPORT(int) mvdelch (int, int); /* generated */ +extern NCURSES_EXPORT(int) mvderwin (WINDOW *, int, int); /* implemented */ +extern NCURSES_EXPORT(int) mvgetch (int, int); /* generated */ +extern NCURSES_EXPORT(int) mvgetnstr (int, int, char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvgetstr (int, int, char *); /* generated */ +extern NCURSES_EXPORT(int) mvhline (int, int, chtype, int); /* generated */ +extern NCURSES_EXPORT(chtype) mvinch (int, int); /* generated */ +extern NCURSES_EXPORT(int) mvinchnstr (int, int, chtype *, int); /* generated */ +extern NCURSES_EXPORT(int) mvinchstr (int, int, chtype *); /* generated */ +extern NCURSES_EXPORT(int) mvinnstr (int, int, char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvinsch (int, int, chtype); /* generated */ +extern NCURSES_EXPORT(int) mvinsnstr (int, int, const char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvinsstr (int, int, const char *); /* generated */ +extern NCURSES_EXPORT(int) mvinstr (int, int, char *); /* generated */ +extern NCURSES_EXPORT(int) mvprintw (int,int, const char *,...) /* implemented */ + GCC_PRINTFLIKE(3,4); +extern NCURSES_EXPORT(int) mvscanw (int,int, const char *,...) /* implemented */ + GCC_SCANFLIKE(3,4); +extern NCURSES_EXPORT(int) mvvline (int, int, chtype, int); /* generated */ +extern NCURSES_EXPORT(int) mvwaddch (WINDOW *, int, int, const chtype); /* generated */ +extern NCURSES_EXPORT(int) mvwaddchnstr (WINDOW *, int, int, const chtype *, int);/* generated */ +extern NCURSES_EXPORT(int) mvwaddchstr (WINDOW *, int, int, const chtype *); /* generated */ +extern NCURSES_EXPORT(int) mvwaddnstr (WINDOW *, int, int, const char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvwaddstr (WINDOW *, int, int, const char *); /* generated */ +extern NCURSES_EXPORT(int) mvwchgat (WINDOW *, int, int, int, attr_t, NCURSES_PAIRS_T, const void *);/* generated */ +extern NCURSES_EXPORT(int) mvwdelch (WINDOW *, int, int); /* generated */ +extern NCURSES_EXPORT(int) mvwgetch (WINDOW *, int, int); /* generated */ +extern NCURSES_EXPORT(int) mvwgetnstr (WINDOW *, int, int, char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvwgetstr (WINDOW *, int, int, char *); /* generated */ +extern NCURSES_EXPORT(int) mvwhline (WINDOW *, int, int, chtype, int); /* generated */ +extern NCURSES_EXPORT(int) mvwin (WINDOW *,int,int); /* implemented */ +extern NCURSES_EXPORT(chtype) mvwinch (WINDOW *, int, int); /* generated */ +extern NCURSES_EXPORT(int) mvwinchnstr (WINDOW *, int, int, chtype *, int); /* generated */ +extern NCURSES_EXPORT(int) mvwinchstr (WINDOW *, int, int, chtype *); /* generated */ +extern NCURSES_EXPORT(int) mvwinnstr (WINDOW *, int, int, char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvwinsch (WINDOW *, int, int, chtype); /* generated */ +extern NCURSES_EXPORT(int) mvwinsnstr (WINDOW *, int, int, const char *, int); /* generated */ +extern NCURSES_EXPORT(int) mvwinsstr (WINDOW *, int, int, const char *); /* generated */ +extern NCURSES_EXPORT(int) mvwinstr (WINDOW *, int, int, char *); /* generated */ +extern NCURSES_EXPORT(int) mvwprintw (WINDOW*,int,int, const char *,...) /* implemented */ + GCC_PRINTFLIKE(4,5); +extern NCURSES_EXPORT(int) mvwscanw (WINDOW *,int,int, const char *,...) /* implemented */ + GCC_SCANFLIKE(4,5); +extern NCURSES_EXPORT(int) mvwvline (WINDOW *,int, int, chtype, int); /* generated */ +extern NCURSES_EXPORT(int) napms (int); /* implemented */ +extern NCURSES_EXPORT(WINDOW *) newpad (int,int); /* implemented */ +extern NCURSES_EXPORT(SCREEN *) newterm (const char *,FILE *,FILE *); /* implemented */ +extern NCURSES_EXPORT(WINDOW *) newwin (int,int,int,int); /* implemented */ +extern NCURSES_EXPORT(int) nl (void); /* implemented */ +extern NCURSES_EXPORT(int) nocbreak (void); /* implemented */ +extern NCURSES_EXPORT(int) nodelay (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(int) noecho (void); /* implemented */ +extern NCURSES_EXPORT(int) nonl (void); /* implemented */ +extern NCURSES_EXPORT(void) noqiflush (void); /* implemented */ +extern NCURSES_EXPORT(int) noraw (void); /* implemented */ +extern NCURSES_EXPORT(int) notimeout (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(int) overlay (const WINDOW*,WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) overwrite (const WINDOW*,WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) pair_content (NCURSES_PAIRS_T,NCURSES_COLOR_T*,NCURSES_COLOR_T*); /* implemented */ +extern NCURSES_EXPORT(int) PAIR_NUMBER (int); /* generated */ +extern NCURSES_EXPORT(int) pechochar (WINDOW *, const chtype); /* implemented */ +extern NCURSES_EXPORT(int) pnoutrefresh (WINDOW*,int,int,int,int,int,int);/* implemented */ +extern NCURSES_EXPORT(int) prefresh (WINDOW *,int,int,int,int,int,int); /* implemented */ +extern NCURSES_EXPORT(int) printw (const char *,...) /* implemented */ + GCC_PRINTFLIKE(1,2); +extern NCURSES_EXPORT(int) putwin (WINDOW *, FILE *); /* implemented */ +extern NCURSES_EXPORT(void) qiflush (void); /* implemented */ +extern NCURSES_EXPORT(int) raw (void); /* implemented */ +extern NCURSES_EXPORT(int) redrawwin (WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) refresh (void); /* generated */ +extern NCURSES_EXPORT(int) resetty (void); /* implemented */ +extern NCURSES_EXPORT(int) reset_prog_mode (void); /* implemented */ +extern NCURSES_EXPORT(int) reset_shell_mode (void); /* implemented */ +extern NCURSES_EXPORT(int) ripoffline (int, int (*)(WINDOW *, int)); /* implemented */ +extern NCURSES_EXPORT(int) savetty (void); /* implemented */ +extern NCURSES_EXPORT(int) scanw (const char *,...) /* implemented */ + GCC_SCANFLIKE(1,2); +extern NCURSES_EXPORT(int) scr_dump (const char *); /* implemented */ +extern NCURSES_EXPORT(int) scr_init (const char *); /* implemented */ +extern NCURSES_EXPORT(int) scrl (int); /* generated */ +extern NCURSES_EXPORT(int) scroll (WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) scrollok (WINDOW *,bool); /* implemented */ +extern NCURSES_EXPORT(int) scr_restore (const char *); /* implemented */ +extern NCURSES_EXPORT(int) scr_set (const char *); /* implemented */ +extern NCURSES_EXPORT(int) setscrreg (int,int); /* generated */ +extern NCURSES_EXPORT(SCREEN *) set_term (SCREEN *); /* implemented */ +extern NCURSES_EXPORT(int) slk_attroff (const chtype); /* implemented */ +extern NCURSES_EXPORT(int) slk_attr_off (const attr_t, void *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) slk_attron (const chtype); /* implemented */ +extern NCURSES_EXPORT(int) slk_attr_on (attr_t,void*); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) slk_attrset (const chtype); /* implemented */ +extern NCURSES_EXPORT(attr_t) slk_attr (void); /* implemented */ +extern NCURSES_EXPORT(int) slk_attr_set (const attr_t,NCURSES_PAIRS_T,void*); /* implemented */ +extern NCURSES_EXPORT(int) slk_clear (void); /* implemented */ +extern NCURSES_EXPORT(int) slk_color (NCURSES_PAIRS_T); /* implemented */ +extern NCURSES_EXPORT(int) slk_init (int); /* implemented */ +extern NCURSES_EXPORT(char *) slk_label (int); /* implemented */ +extern NCURSES_EXPORT(int) slk_noutrefresh (void); /* implemented */ +extern NCURSES_EXPORT(int) slk_refresh (void); /* implemented */ +extern NCURSES_EXPORT(int) slk_restore (void); /* implemented */ +extern NCURSES_EXPORT(int) slk_set (int,const char *,int); /* implemented */ +extern NCURSES_EXPORT(int) slk_touch (void); /* implemented */ +extern NCURSES_EXPORT(int) standout (void); /* generated */ +extern NCURSES_EXPORT(int) standend (void); /* generated */ +extern NCURSES_EXPORT(int) start_color (void); /* implemented */ +extern NCURSES_EXPORT(WINDOW *) subpad (WINDOW *, int, int, int, int); /* implemented */ +extern NCURSES_EXPORT(WINDOW *) subwin (WINDOW *, int, int, int, int); /* implemented */ +extern NCURSES_EXPORT(int) syncok (WINDOW *, bool); /* implemented */ +extern NCURSES_EXPORT(chtype) termattrs (void); /* implemented */ +extern NCURSES_EXPORT(char *) termname (void); /* implemented */ +extern NCURSES_EXPORT(void) timeout (int); /* generated */ +extern NCURSES_EXPORT(int) touchline (WINDOW *, int, int); /* generated */ +extern NCURSES_EXPORT(int) touchwin (WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) typeahead (int); /* implemented */ +extern NCURSES_EXPORT(int) ungetch (int); /* implemented */ +extern NCURSES_EXPORT(int) untouchwin (WINDOW *); /* generated */ +extern NCURSES_EXPORT(void) use_env (bool); /* implemented */ +extern NCURSES_EXPORT(void) use_tioctl (bool); /* implemented */ +extern NCURSES_EXPORT(int) vidattr (chtype); /* implemented */ +extern NCURSES_EXPORT(int) vidputs (chtype, NCURSES_OUTC); /* implemented */ +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); +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 */ + GCC_SCANFLIKE(2,0); +extern NCURSES_EXPORT(int) waddch (WINDOW *, const chtype); /* implemented */ +extern NCURSES_EXPORT(int) waddchnstr (WINDOW *,const chtype *,int); /* implemented */ +extern NCURSES_EXPORT(int) waddchstr (WINDOW *,const chtype *); /* generated */ +extern NCURSES_EXPORT(int) waddnstr (WINDOW *,const char *,int); /* implemented */ +extern NCURSES_EXPORT(int) waddstr (WINDOW *,const char *); /* generated */ +extern NCURSES_EXPORT(int) wattron (WINDOW *, int); /* generated */ +extern NCURSES_EXPORT(int) wattroff (WINDOW *, int); /* generated */ +extern NCURSES_EXPORT(int) wattrset (WINDOW *, int); /* generated */ +extern NCURSES_EXPORT(int) wattr_get (WINDOW *, attr_t *, NCURSES_PAIRS_T *, void *); /* generated */ +extern NCURSES_EXPORT(int) wattr_on (WINDOW *, attr_t, void *); /* implemented */ +extern NCURSES_EXPORT(int) wattr_off (WINDOW *, attr_t, void *); /* implemented */ +extern NCURSES_EXPORT(int) wattr_set (WINDOW *, attr_t, NCURSES_PAIRS_T, void *); /* generated */ +extern NCURSES_EXPORT(int) wbkgd (WINDOW *, chtype); /* implemented */ +extern NCURSES_EXPORT(void) wbkgdset (WINDOW *,chtype); /* implemented */ +extern NCURSES_EXPORT(int) wborder (WINDOW *,chtype,chtype,chtype,chtype,chtype,chtype,chtype,chtype); /* implemented */ +extern NCURSES_EXPORT(int) wchgat (WINDOW *, int, attr_t, NCURSES_PAIRS_T, const void *);/* implemented */ +extern NCURSES_EXPORT(int) wclear (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wclrtobot (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wclrtoeol (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wcolor_set (WINDOW*,NCURSES_PAIRS_T,void*); /* implemented */ +extern NCURSES_EXPORT(void) wcursyncup (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wdelch (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wdeleteln (WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) wechochar (WINDOW *, const chtype); /* implemented */ +extern NCURSES_EXPORT(int) werase (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wgetch (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wgetnstr (WINDOW *,char *,int); /* implemented */ +extern NCURSES_EXPORT(int) wgetstr (WINDOW *, char *); /* generated */ +extern NCURSES_EXPORT(int) whline (WINDOW *, chtype, int); /* implemented */ +extern NCURSES_EXPORT(chtype) winch (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) winchnstr (WINDOW *, chtype *, int); /* implemented */ +extern NCURSES_EXPORT(int) winchstr (WINDOW *, chtype *); /* generated */ +extern NCURSES_EXPORT(int) winnstr (WINDOW *, char *, int); /* implemented */ +extern NCURSES_EXPORT(int) winsch (WINDOW *, chtype); /* implemented */ +extern NCURSES_EXPORT(int) winsdelln (WINDOW *,int); /* implemented */ +extern NCURSES_EXPORT(int) winsertln (WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) winsnstr (WINDOW *, const char *,int); /* implemented */ +extern NCURSES_EXPORT(int) winsstr (WINDOW *, const char *); /* generated */ +extern NCURSES_EXPORT(int) winstr (WINDOW *, char *); /* generated */ +extern NCURSES_EXPORT(int) wmove (WINDOW *,int,int); /* implemented */ +extern NCURSES_EXPORT(int) wnoutrefresh (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wprintw (WINDOW *, const char *,...) /* implemented */ + GCC_PRINTFLIKE(2,3); +extern NCURSES_EXPORT(int) wredrawln (WINDOW *,int,int); /* implemented */ +extern NCURSES_EXPORT(int) wrefresh (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(int) wscanw (WINDOW *, const char *,...) /* implemented */ + GCC_SCANFLIKE(2,3); +extern NCURSES_EXPORT(int) wscrl (WINDOW *,int); /* implemented */ +extern NCURSES_EXPORT(int) wsetscrreg (WINDOW *,int,int); /* implemented */ +extern NCURSES_EXPORT(int) wstandout (WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) wstandend (WINDOW *); /* generated */ +extern NCURSES_EXPORT(void) wsyncdown (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(void) wsyncup (WINDOW *); /* implemented */ +extern NCURSES_EXPORT(void) wtimeout (WINDOW *,int); /* implemented */ +extern NCURSES_EXPORT(int) wtouchln (WINDOW *,int,int,int); /* implemented */ +extern NCURSES_EXPORT(int) wvline (WINDOW *,chtype,int); /* implemented */ + +/* + * These are also declared in <term.h>: + */ +extern NCURSES_EXPORT(int) tigetflag (const char *); /* implemented */ +extern NCURSES_EXPORT(int) tigetnum (const char *); /* implemented */ +extern NCURSES_EXPORT(char *) tigetstr (const char *); /* implemented */ +extern NCURSES_EXPORT(int) putp (const char *); /* implemented */ + +#if NCURSES_TPARM_VARARGS +extern NCURSES_EXPORT(char *) tparm (const char *, ...); /* special */ +#else +extern NCURSES_EXPORT(char *) tparm (const char *, NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG,NCURSES_TPARM_ARG); /* special */ +#endif + +extern NCURSES_EXPORT(char *) tiparm (const char *, ...); /* special */ + +/* + * These functions are not in X/Open, but we use them in macro definitions: + */ +extern NCURSES_EXPORT(int) getattrs (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getcurx (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getcury (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getbegx (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getbegy (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getmaxx (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getmaxy (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getparx (const WINDOW *); /* generated */ +extern NCURSES_EXPORT(int) getpary (const WINDOW *); /* generated */ + +/* + * vid_attr() was implemented originally based on a draft of X/Open curses. + */ +#if !NCURSES_WIDECHAR +#define vid_attr(a,pair,opts) vidattr(a) +#endif + +/* + * These functions are extensions - not in X/Open Curses. + */ +#if @NCURSES_EXT_FUNCS@ +#undef NCURSES_EXT_FUNCS +#define NCURSES_EXT_FUNCS @NCURSES_PATCH@ +typedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *); +typedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *); +extern NCURSES_EXPORT(bool) is_term_resized (int, int); +extern NCURSES_EXPORT(char *) keybound (int, int); +extern NCURSES_EXPORT(const char *) curses_version (void); +extern NCURSES_EXPORT(int) alloc_pair (int, int); +extern NCURSES_EXPORT(int) assume_default_colors (int, int); +extern NCURSES_EXPORT(int) define_key (const char *, int); +extern NCURSES_EXPORT(int) extended_color_content(int, int *, int *, int *); +extern NCURSES_EXPORT(int) extended_pair_content(int, int *, int *); +extern NCURSES_EXPORT(int) extended_slk_color(int); +extern NCURSES_EXPORT(int) find_pair (int, int); +extern NCURSES_EXPORT(int) free_pair (int); +extern NCURSES_EXPORT(int) get_escdelay (void); +extern NCURSES_EXPORT(int) init_extended_color(int, int, int, int); +extern NCURSES_EXPORT(int) init_extended_pair(int, int, int); +extern NCURSES_EXPORT(int) key_defined (const char *); +extern NCURSES_EXPORT(int) keyok (int, bool); +extern NCURSES_EXPORT(void) reset_color_pairs (void); +extern NCURSES_EXPORT(int) resize_term (int, int); +extern NCURSES_EXPORT(int) resizeterm (int, int); +extern NCURSES_EXPORT(int) set_escdelay (int); +extern NCURSES_EXPORT(int) set_tabsize (int); +extern NCURSES_EXPORT(int) use_default_colors (void); +extern NCURSES_EXPORT(int) use_extended_names (bool); +extern NCURSES_EXPORT(int) use_legacy_coding (int); +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); +extern NCURSES_EXPORT(void) nofilter(void); + +/* + * These extensions provide access to information stored in the WINDOW even + * when NCURSES_OPAQUE is set: + */ +extern NCURSES_EXPORT(WINDOW *) wgetparent (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_cleared (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_idcok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_idlok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_immedok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_keypad (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_leaveok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_nodelay (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_notimeout (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_pad (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_scrollok (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +extern NCURSES_EXPORT(bool) is_subwin (const WINDOW *); /* @GENERATED_EXT_FUNCS@ */ +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 +#define curses_version() NCURSES_VERSION +#endif + +/* + * Extra extension-functions, which pass a SCREEN pointer rather than using + * a global variable SP. + */ +#if @NCURSES_SP_FUNCS@ +#undef NCURSES_SP_FUNCS +#define NCURSES_SP_FUNCS @NCURSES_PATCH@ +#define NCURSES_SP_NAME(name) name##_sp + +/* Define the sp-funcs helper function */ +#define NCURSES_SP_OUTC NCURSES_SP_NAME(NCURSES_OUTC) +typedef int (*NCURSES_SP_OUTC)(SCREEN*, int); + +extern NCURSES_EXPORT(SCREEN *) new_prescr (void); /* implemented:SP_FUNC */ + +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(baudrate) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(beep) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(can_change_color) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(cbreak) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(curs_set) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(color_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(def_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(delay_output) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(doupdate) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(char) NCURSES_SP_NAME(erasechar) (SCREEN*);/* implemented:SP_FUNC */ +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(filter) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flash) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(flushinp) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(getwin) (SCREEN*, FILE *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(halfdelay) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_colors) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_il) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_color) (SCREEN*, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_pair) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T, NCURSES_COLOR_T); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(intrflush) (SCREEN*, WINDOW*, bool); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(NCURSES_CONST char *) NCURSES_SP_NAME(keyname) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(char) NCURSES_SP_NAME(killchar) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(longname) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mvcur) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (SCREEN*, int, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (SCREEN*, const char *, FILE *, FILE *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newwin) (SCREEN*, int, int, int, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nl) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nocbreak) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noecho) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(nonl) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(noraw) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(pair_content) (SCREEN*, NCURSES_PAIRS_T, NCURSES_COLOR_T*, NCURSES_COLOR_T*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(raw) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_prog_mode) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(reset_shell_mode) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resetty) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ripoffline) (SCREEN*, int, int (*)(WINDOW *, int)); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(savetty) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_init) (SCREEN*, const char *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_restore) (SCREEN*, const char *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(scr_set) (SCREEN*, const char *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (SCREEN*, const chtype); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (SCREEN*, const chtype); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (SCREEN*, const chtype); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (SCREEN*, const attr_t, NCURSES_PAIRS_T, void*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_color) (SCREEN*, NCURSES_PAIRS_T); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_init) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (SCREEN*, int, const char *, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(start_color) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(termattrs) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(ungetch) (SCREEN*, int); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(use_env) (SCREEN*, bool); /* implemented:SP_FUNC */ +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@ +extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(keybound) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ +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 */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_color_content) (SCREEN*, int, int *, int *, int *); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_pair_content) (SCREEN*, int, int *, int *); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(extended_slk_color) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(get_escdelay) (SCREEN*); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(find_pair) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(free_pair) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_color) (SCREEN*, int, int, int, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(init_extended_pair) (SCREEN*, int, int, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(is_term_resized) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(key_defined) (SCREEN*, const char *); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(keyok) (SCREEN*, int, bool); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(nofilter) (SCREEN*); /* implemented */ /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(reset_color_pairs) (SCREEN*); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resize_term) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(resizeterm) (SCREEN*, int, int); /* implemented:EXT_SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (SCREEN*, int); /* implemented:EXT_SP_FUNC */ +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 +#undef NCURSES_SP_FUNCS +#define NCURSES_SP_FUNCS 0 +#define NCURSES_SP_NAME(name) name +#define NCURSES_SP_OUTC NCURSES_OUTC +#endif + +/* attributes */ + +#define NCURSES_ATTR_SHIFT 8 +#define NCURSES_BITS(mask,shift) (NCURSES_CAST(chtype,(mask)) << ((shift) + NCURSES_ATTR_SHIFT)) + +#define A_NORMAL (@cf_cv_1UL@ - @cf_cv_1UL@) +#define A_ATTRIBUTES NCURSES_BITS(~(@cf_cv_1UL@ - @cf_cv_1UL@),0) +#define A_CHARTEXT (NCURSES_BITS(@cf_cv_1UL@,0) - @cf_cv_1UL@) +#define A_COLOR NCURSES_BITS(((@cf_cv_1UL@) << 8) - @cf_cv_1UL@,0) +#define A_STANDOUT NCURSES_BITS(@cf_cv_1UL@,8) +#define A_UNDERLINE NCURSES_BITS(@cf_cv_1UL@,9) +#define A_REVERSE NCURSES_BITS(@cf_cv_1UL@,10) +#define A_BLINK NCURSES_BITS(@cf_cv_1UL@,11) +#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) +#define A_INVIS NCURSES_BITS(@cf_cv_1UL@,15) +#define A_PROTECT NCURSES_BITS(@cf_cv_1UL@,16) +#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) +#define A_RIGHT NCURSES_BITS(@cf_cv_1UL@,20) +#define A_TOP NCURSES_BITS(@cf_cv_1UL@,21) +#define A_VERTICAL NCURSES_BITS(@cf_cv_1UL@,22) + +#if @NCURSES_EXT_FUNCS@ +#define A_ITALIC NCURSES_BITS(@cf_cv_1UL@,23) /* ncurses extension */ +#endif + +/* + * Most of the pseudo functions are macros that either provide compatibility + * with older versions of curses, or provide inline functionality to improve + * performance. + */ + +/* + * These pseudo functions are always implemented as macros: + */ + +#define getyx(win,y,x) (y = getcury(win), x = getcurx(win)) +#define getbegyx(win,y,x) (y = getbegy(win), x = getbegx(win)) +#define getmaxyx(win,y,x) (y = getmaxy(win), x = getmaxx(win)) +#define getparyx(win,y,x) (y = getpary(win), x = getparx(win)) + +#define getsyx(y,x) do { if (newscr) { \ + if (is_leaveok(newscr)) \ + (y) = (x) = -1; \ + else \ + getyx(newscr,(y), (x)); \ + } \ + } while(0) + +#define setsyx(y,x) do { if (newscr) { \ + if ((y) == -1 && (x) == -1) \ + leaveok(newscr, TRUE); \ + else { \ + leaveok(newscr, FALSE); \ + wmove(newscr, (y), (x)); \ + } \ + } \ + } while(0) + +#ifndef NCURSES_NOMACROS + +/* + * These miscellaneous pseudo functions are provided for compatibility: + */ + +#define wgetstr(w, s) wgetnstr(w, s, -1) +#define getnstr(s, n) wgetnstr(stdscr, s, (n)) + +#define setterm(term) setupterm(term, 1, (int *)0) + +#define fixterm() reset_prog_mode() +#define resetterm() reset_shell_mode() +#define saveterm() def_prog_mode() +#define crmode() cbreak() +#define nocrmode() nocbreak() +#define gettmode() + +/* It seems older SYSV curses versions define these */ +#if !NCURSES_OPAQUE +#define getattrs(win) NCURSES_CAST(int, NCURSES_OK_ADDR(win) ? (win)->_attrs : A_NORMAL) +#define getcurx(win) (NCURSES_OK_ADDR(win) ? (win)->_curx : ERR) +#define getcury(win) (NCURSES_OK_ADDR(win) ? (win)->_cury : ERR) +#define getbegx(win) (NCURSES_OK_ADDR(win) ? (win)->_begx : ERR) +#define getbegy(win) (NCURSES_OK_ADDR(win) ? (win)->_begy : ERR) +#define getmaxx(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxx + 1) : ERR) +#define getmaxy(win) (NCURSES_OK_ADDR(win) ? ((win)->_maxy + 1) : ERR) +#define getparx(win) (NCURSES_OK_ADDR(win) ? (win)->_parx : ERR) +#define getpary(win) (NCURSES_OK_ADDR(win) ? (win)->_pary : ERR) +#endif /* NCURSES_OPAQUE */ + +#define wstandout(win) (wattrset(win,A_STANDOUT)) +#define wstandend(win) (wattrset(win,A_NORMAL)) + +#define wattron(win,at) wattr_on(win, NCURSES_CAST(attr_t, at), NULL) +#define wattroff(win,at) wattr_off(win, NCURSES_CAST(attr_t, at), NULL) + +#if !NCURSES_OPAQUE +#if NCURSES_WATTR_MACROS +#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@ +#define wattrset(win,at) \ + (NCURSES_OK_ADDR(win) \ + ? ((win)->_color = NCURSES_CAST(int, PAIR_NUMBER(at)), \ + (win)->_attrs = NCURSES_CAST(attr_t, at), \ + OK) \ + : ERR) +#else +#define wattrset(win,at) \ + (NCURSES_OK_ADDR(win) \ + ? ((win)->_attrs = NCURSES_CAST(attr_t, at), \ + OK) \ + : ERR) +#endif +#endif /* NCURSES_WATTR_MACROS */ +#endif /* NCURSES_OPAQUE */ + +#define scroll(win) wscrl(win,1) + +#define touchwin(win) wtouchln((win), 0, getmaxy(win), 1) +#define touchline(win, s, c) wtouchln((win), s, c, 1) +#define untouchwin(win) wtouchln((win), 0, getmaxy(win), 0) + +#define box(win, v, h) wborder(win, v, v, h, h, 0, 0, 0, 0) +#define border(ls, rs, ts, bs, tl, tr, bl, br) wborder(stdscr, ls, rs, ts, bs, tl, tr, bl, br) +#define hline(ch, n) whline(stdscr, ch, (n)) +#define vline(ch, n) wvline(stdscr, ch, (n)) + +#define winstr(w, s) winnstr(w, s, -1) +#define winchstr(w, s) winchnstr(w, s, -1) +#define winsstr(w, s) winsnstr(w, s, -1) + +#if !NCURSES_OPAQUE +#define redrawwin(win) wredrawln(win, 0, (NCURSES_OK_ADDR(win) ? (win)->_maxy+1 : -1)) +#endif /* NCURSES_OPAQUE */ + +#define waddstr(win,str) waddnstr(win,str,-1) +#define waddchstr(win,str) waddchnstr(win,str,-1) + +/* + * These apply to the first 256 color pairs. + */ +#define COLOR_PAIR(n) (NCURSES_BITS((n), 0) & A_COLOR) +#define PAIR_NUMBER(a) (NCURSES_CAST(int,((NCURSES_CAST(unsigned long,(a)) & A_COLOR) >> NCURSES_ATTR_SHIFT))) + +/* + * pseudo functions for standard screen + */ + +#define addch(ch) waddch(stdscr,(ch)) +#define addchnstr(str,n) waddchnstr(stdscr,(str),(n)) +#define addchstr(str) waddchstr(stdscr,(str)) +#define addnstr(str,n) waddnstr(stdscr,(str),(n)) +#define addstr(str) waddnstr(stdscr,(str),-1) +#define attr_get(ap,cp,o) wattr_get(stdscr,(ap),(cp),(o)) +#define attr_off(a,o) wattr_off(stdscr,(a),(o)) +#define attr_on(a,o) wattr_on(stdscr,(a),(o)) +#define attr_set(a,c,o) wattr_set(stdscr,(a),(c),(o)) +#define attroff(at) wattroff(stdscr,(at)) +#define attron(at) wattron(stdscr,(at)) +#define attrset(at) wattrset(stdscr,(at)) +#define bkgd(ch) wbkgd(stdscr,(ch)) +#define bkgdset(ch) wbkgdset(stdscr,(ch)) +#define chgat(n,a,c,o) wchgat(stdscr,(n),(a),(c),(o)) +#define clear() wclear(stdscr) +#define clrtobot() wclrtobot(stdscr) +#define clrtoeol() wclrtoeol(stdscr) +#define color_set(c,o) wcolor_set(stdscr,(c),(o)) +#define delch() wdelch(stdscr) +#define deleteln() winsdelln(stdscr,-1) +#define echochar(c) wechochar(stdscr,(c)) +#define erase() werase(stdscr) +#define getch() wgetch(stdscr) +#define getstr(str) wgetstr(stdscr,(str)) +#define inch() winch(stdscr) +#define inchnstr(s,n) winchnstr(stdscr,(s),(n)) +#define inchstr(s) winchstr(stdscr,(s)) +#define innstr(s,n) winnstr(stdscr,(s),(n)) +#define insch(c) winsch(stdscr,(c)) +#define insdelln(n) winsdelln(stdscr,(n)) +#define insertln() winsdelln(stdscr,1) +#define insnstr(s,n) winsnstr(stdscr,(s),(n)) +#define insstr(s) winsstr(stdscr,(s)) +#define instr(s) winstr(stdscr,(s)) +#define move(y,x) wmove(stdscr,(y),(x)) +#define refresh() wrefresh(stdscr) +#define scrl(n) wscrl(stdscr,(n)) +#define setscrreg(t,b) wsetscrreg(stdscr,(t),(b)) +#define standend() wstandend(stdscr) +#define standout() wstandout(stdscr) +#define timeout(delay) wtimeout(stdscr,(delay)) +#define wdeleteln(win) winsdelln(win,-1) +#define winsertln(win) winsdelln(win,1) + +/* + * mv functions + */ + +#define mvwaddch(win,y,x,ch) (wmove((win),(y),(x)) == ERR ? ERR : waddch((win),(ch))) +#define mvwaddchnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),(n))) +#define mvwaddchstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddchnstr((win),(str),-1)) +#define mvwaddnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),(n))) +#define mvwaddstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : waddnstr((win),(str),-1)) +#define mvwchgat(win,y,x,n,a,c,o) (wmove((win),(y),(x)) == ERR ? ERR : wchgat((win),(n),(a),(c),(o))) +#define mvwdelch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wdelch(win)) +#define mvwgetch(win,y,x) (wmove((win),(y),(x)) == ERR ? ERR : wgetch(win)) +#define mvwgetnstr(win,y,x,str,n) (wmove((win),(y),(x)) == ERR ? ERR : wgetnstr((win),(str),(n))) +#define mvwgetstr(win,y,x,str) (wmove((win),(y),(x)) == ERR ? ERR : wgetstr((win),(str))) +#define mvwhline(win,y,x,c,n) (wmove((win),(y),(x)) == ERR ? ERR : whline((win),(c),(n))) +#define mvwinch(win,y,x) (wmove((win),(y),(x)) == ERR ? NCURSES_CAST(chtype, ERR) : winch(win)) +#define mvwinchnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winchnstr((win),(s),(n))) +#define mvwinchstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winchstr((win),(s))) +#define mvwinnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winnstr((win),(s),(n))) +#define mvwinsch(win,y,x,c) (wmove((win),(y),(x)) == ERR ? ERR : winsch((win),(c))) +#define mvwinsnstr(win,y,x,s,n) (wmove((win),(y),(x)) == ERR ? ERR : winsnstr((win),(s),(n))) +#define mvwinsstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winsstr((win),(s))) +#define mvwinstr(win,y,x,s) (wmove((win),(y),(x)) == ERR ? ERR : winstr((win),(s))) +#define mvwvline(win,y,x,c,n) (wmove((win),(y),(x)) == ERR ? ERR : wvline((win),(c),(n))) + +#define mvaddch(y,x,ch) mvwaddch(stdscr,(y),(x),(ch)) +#define mvaddchnstr(y,x,str,n) mvwaddchnstr(stdscr,(y),(x),(str),(n)) +#define mvaddchstr(y,x,str) mvwaddchstr(stdscr,(y),(x),(str)) +#define mvaddnstr(y,x,str,n) mvwaddnstr(stdscr,(y),(x),(str),(n)) +#define mvaddstr(y,x,str) mvwaddstr(stdscr,(y),(x),(str)) +#define mvchgat(y,x,n,a,c,o) mvwchgat(stdscr,(y),(x),(n),(a),(c),(o)) +#define mvdelch(y,x) mvwdelch(stdscr,(y),(x)) +#define mvgetch(y,x) mvwgetch(stdscr,(y),(x)) +#define mvgetnstr(y,x,str,n) mvwgetnstr(stdscr,(y),(x),(str),(n)) +#define mvgetstr(y,x,str) mvwgetstr(stdscr,(y),(x),(str)) +#define mvhline(y,x,c,n) mvwhline(stdscr,(y),(x),(c),(n)) +#define mvinch(y,x) mvwinch(stdscr,(y),(x)) +#define mvinchnstr(y,x,s,n) mvwinchnstr(stdscr,(y),(x),(s),(n)) +#define mvinchstr(y,x,s) mvwinchstr(stdscr,(y),(x),(s)) +#define mvinnstr(y,x,s,n) mvwinnstr(stdscr,(y),(x),(s),(n)) +#define mvinsch(y,x,c) mvwinsch(stdscr,(y),(x),(c)) +#define mvinsnstr(y,x,s,n) mvwinsnstr(stdscr,(y),(x),(s),(n)) +#define mvinsstr(y,x,s) mvwinsstr(stdscr,(y),(x),(s)) +#define mvinstr(y,x,s) mvwinstr(stdscr,(y),(x),(s)) +#define mvvline(y,x,c,n) mvwvline(stdscr,(y),(x),(c),(n)) + +/* + * Some wide-character functions can be implemented without the extensions. + */ +#if !NCURSES_OPAQUE +#define getbkgd(win) (NCURSES_OK_ADDR(win) ? ((win)->_bkgd) : 0) +#endif /* NCURSES_OPAQUE */ + +#define slk_attr_off(a,v) ((v) ? ERR : slk_attroff(a)) +#define slk_attr_on(a,v) ((v) ? ERR : slk_attron(a)) + +#if !NCURSES_OPAQUE +#if NCURSES_WATTR_MACROS +#if NCURSES_WIDECHAR && @NCURSES_EXT_COLORS@ +#define wattr_set(win,a,p,opts) \ + (NCURSES_OK_ADDR(win) \ + ? ((void)((win)->_attrs = ((a) & ~A_COLOR), \ + (win)->_color = (opts) ? *(int *)(opts) : (p)), \ + OK) \ + : ERR) +#define wattr_get(win,a,p,opts) \ + (NCURSES_OK_ADDR(win) \ + ? ((void)(NCURSES_OK_ADDR(a) \ + ? (*(a) = (win)->_attrs) \ + : OK), \ + (void)(NCURSES_OK_ADDR(p) \ + ? (*(p) = (NCURSES_PAIRS_T) (win)->_color) \ + : OK), \ + (void)(NCURSES_OK_ADDR(opts) \ + ? (*(int *)(opts) = (win)->_color) \ + : OK), \ + OK) \ + : ERR) +#else /* !(NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */ +#define wattr_set(win,a,p,opts) \ + (NCURSES_OK_ADDR(win) \ + ? ((void)((win)->_attrs = (((a) & ~A_COLOR) | \ + (attr_t)COLOR_PAIR(p))), \ + OK) \ + : ERR) +#define wattr_get(win,a,p,opts) \ + (NCURSES_OK_ADDR(win) \ + ? ((void)(NCURSES_OK_ADDR(a) \ + ? (*(a) = (win)->_attrs) \ + : OK), \ + (void)(NCURSES_OK_ADDR(p) \ + ? (*(p) = (NCURSES_PAIRS_T) PAIR_NUMBER((win)->_attrs)) \ + : OK), \ + OK) \ + : ERR) +#endif /* (NCURSES_WIDECHAR && NCURSES_EXE_COLORS) */ +#endif /* NCURSES_WATTR_MACROS */ +#endif /* NCURSES_OPAQUE */ + +/* + * X/Open curses deprecates SVr4 vwprintw/vwscanw, which are supposed to use + * varargs.h. It adds new calls vw_printw/vw_scanw, which are supposed to + * use POSIX stdarg.h. The ncurses versions of vwprintw/vwscanw already + * use stdarg.h, so... + */ +/* define vw_printw vwprintw */ +/* define vw_scanw vwscanw */ + +/* + * Export fallback function for use in C++ binding. + */ +#if !@HAVE_VSSCANF@ +#define vsscanf(a,b,c) _nc_vsscanf(a,b,c) +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_OPAQUE +#define is_cleared(win) (NCURSES_OK_ADDR(win) ? (win)->_clear : FALSE) +#define is_idcok(win) (NCURSES_OK_ADDR(win) ? (win)->_idcok : FALSE) +#define is_idlok(win) (NCURSES_OK_ADDR(win) ? (win)->_idlok : FALSE) +#define is_immedok(win) (NCURSES_OK_ADDR(win) ? (win)->_immed : FALSE) +#define is_keypad(win) (NCURSES_OK_ADDR(win) ? (win)->_use_keypad : FALSE) +#define is_leaveok(win) (NCURSES_OK_ADDR(win) ? (win)->_leaveok : FALSE) +#define is_nodelay(win) (NCURSES_OK_ADDR(win) ? ((win)->_delay == 0) : FALSE) +#define is_notimeout(win) (NCURSES_OK_ADDR(win) ? (win)->_notimeout : FALSE) +#define is_pad(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _ISPAD) != 0 : FALSE) +#define is_scrollok(win) (NCURSES_OK_ADDR(win) ? (win)->_scroll : FALSE) +#define is_subwin(win) (NCURSES_OK_ADDR(win) ? ((win)->_flags & _SUBWIN) != 0 : FALSE) +#define is_syncok(win) (NCURSES_OK_ADDR(win) ? (win)->_sync : FALSE) +#define wgetdelay(win) (NCURSES_OK_ADDR(win) ? (win)->_delay : 0) +#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 + +/* + * X/Open says this returns a bool; SVr4 also checked for out-of-range line. + * The macro provides compatibility: + */ +#define is_linetouched(w,l) ((!(w) || ((l) > getmaxy(w)) || ((l) < 0)) ? ERR : (is_linetouched)((w),(l))) + +#endif /* NCURSES_NOMACROS */ + +/* + * Public variables. + * + * Notes: + * a. ESCDELAY was an undocumented feature under AIX curses. + * It gives the ESC expire time in milliseconds. + * b. ttytype is needed for backward compatibility + */ +#if NCURSES_REENTRANT + +NCURSES_WRAPPED_VAR(WINDOW *, curscr); +NCURSES_WRAPPED_VAR(WINDOW *, newscr); +NCURSES_WRAPPED_VAR(WINDOW *, stdscr); +NCURSES_WRAPPED_VAR(char *, ttytype); +NCURSES_WRAPPED_VAR(int, COLORS); +NCURSES_WRAPPED_VAR(int, COLOR_PAIRS); +NCURSES_WRAPPED_VAR(int, COLS); +NCURSES_WRAPPED_VAR(int, ESCDELAY); +NCURSES_WRAPPED_VAR(int, LINES); +NCURSES_WRAPPED_VAR(int, TABSIZE); + +#define curscr NCURSES_PUBLIC_VAR(curscr()) +#define newscr NCURSES_PUBLIC_VAR(newscr()) +#define stdscr NCURSES_PUBLIC_VAR(stdscr()) +#define ttytype NCURSES_PUBLIC_VAR(ttytype()) +#define COLORS NCURSES_PUBLIC_VAR(COLORS()) +#define COLOR_PAIRS NCURSES_PUBLIC_VAR(COLOR_PAIRS()) +#define COLS NCURSES_PUBLIC_VAR(COLS()) +#define ESCDELAY NCURSES_PUBLIC_VAR(ESCDELAY()) +#define LINES NCURSES_PUBLIC_VAR(LINES()) +#define TABSIZE NCURSES_PUBLIC_VAR(TABSIZE()) + +#else + +extern NCURSES_EXPORT_VAR(WINDOW *) curscr; +extern NCURSES_EXPORT_VAR(WINDOW *) newscr; +extern NCURSES_EXPORT_VAR(WINDOW *) stdscr; +extern NCURSES_EXPORT_VAR(char) ttytype[]; +extern NCURSES_EXPORT_VAR(int) COLORS; +extern NCURSES_EXPORT_VAR(int) COLOR_PAIRS; +extern NCURSES_EXPORT_VAR(int) COLS; +extern NCURSES_EXPORT_VAR(int) ESCDELAY; +extern NCURSES_EXPORT_VAR(int) LINES; +extern NCURSES_EXPORT_VAR(int) TABSIZE; + +#endif + +/* + * Pseudo-character tokens outside ASCII range. The curses wgetch() function + * will return any given one of these only if the corresponding k- capability + * is defined in your terminal's terminfo entry. + * + * Some keys (KEY_A1, etc) are arranged like this: + * a1 up a3 + * left b2 right + * c1 down c3 + * + * A few key codes do not depend upon the terminfo entry. + */ +#define KEY_CODE_YES 0400 /* A wchar_t contains a key code */ +#define KEY_MIN 0401 /* Minimum curses key */ +#define KEY_BREAK 0401 /* Break key (unreliable) */ +#define KEY_SRESET 0530 /* Soft (partial) reset (unreliable) */ +#define KEY_RESET 0531 /* Reset or hard reset (unreliable) */ diff --git a/deps/ncurses-5.9/include/curses.tail b/deps/ncurses-6.3/include/curses.tail similarity index 96% rename from deps/ncurses-5.9/include/curses.tail rename to deps/ncurses-6.3/include/curses.tail index 098c898..1151449 100644 --- a/deps/ncurses-5.9/include/curses.tail +++ b/deps/ncurses-6.3/include/curses.tail @@ -1,4 +1,4 @@ -/* $Id: curses.tail,v 1.20 2010/03/28 19:10:55 tom Exp $ */ +/* $Id: curses.tail,v 1.26 2021/03/20 15:49:25 tom Exp $ */ /* * vile:cmode: * This file is part of ncurses, designed to be appended after curses.h.in @@ -111,7 +111,9 @@ extern NCURSES_EXPORT(mmask_t) NCURSES_SP_NAME(mousemask) (SCREEN*, mmask_t, mma extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mouseinterval) (SCREEN*, int); #endif +#ifndef NCURSES_NOMACROS #define mouse_trafo(y,x,to_screen) wmouse_trafo(stdscr,y,x,to_screen) +#endif /* other non-XSI functions */ @@ -126,14 +128,12 @@ extern NCURSES_EXPORT(int) NCURSES_SP_NAME(mcprint) (SCREEN*, char *, int); /* d /* Debugging : use with libncurses_g.a */ extern NCURSES_EXPORT(void) _tracef (const char *, ...) GCC_PRINTFLIKE(1,2); -extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *); extern NCURSES_EXPORT(char *) _traceattr (attr_t); extern NCURSES_EXPORT(char *) _traceattr2 (int, chtype); -extern NCURSES_EXPORT(char *) _nc_tracebits (void); extern NCURSES_EXPORT(char *) _tracechar (int); extern NCURSES_EXPORT(char *) _tracechtype (chtype); extern NCURSES_EXPORT(char *) _tracechtype2 (int, chtype); -#ifdef NCURSES_WIDECHAR +#if NCURSES_WIDECHAR #define _tracech_t _tracecchar_t extern NCURSES_EXPORT(char *) _tracecchar_t (const cchar_t *); #define _tracech_t2 _tracecchar_t2 @@ -142,8 +142,8 @@ extern NCURSES_EXPORT(char *) _tracecchar_t2 (int, const cchar_t *); #define _tracech_t _tracechtype #define _tracech_t2 _tracechtype2 #endif -extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *); -extern NCURSES_EXPORT(void) trace (const unsigned int); +extern NCURSES_EXPORT(void) trace (const unsigned) GCC_DEPRECATED("use curses_trace"); +extern NCURSES_EXPORT(unsigned) curses_trace (const unsigned); /* trace masks */ #define TRACE_DISABLE 0x0000 /* turn off tracing */ @@ -174,6 +174,8 @@ extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *); #define OPTIMIZE_ALL 0xff /* enable all optimizations (dflt) */ #endif +extern GCC_NORETURN NCURSES_EXPORT(void) exit_curses (int); + #include <unctrl.h> #ifdef __cplusplus diff --git a/deps/ncurses-6.3/include/curses.wide b/deps/ncurses-6.3/include/curses.wide new file mode 100644 index 0000000..33adb07 --- /dev/null +++ b/deps/ncurses-6.3/include/curses.wide @@ -0,0 +1,314 @@ +/* $Id: curses.wide,v 1.51 2021/05/22 20:28:29 tom Exp $ */ +/* + * vile:cmode: + * This file is part of ncurses, designed to be appended after curses.h.in + * (see that file for the relevant copyright). + */ +#define _XOPEN_CURSES 1 + +#if NCURSES_WIDECHAR + +extern NCURSES_EXPORT_VAR(cchar_t *) _nc_wacs; + +#define NCURSES_WACS(c) (&_nc_wacs[NCURSES_CAST(unsigned char,(c))]) + +#define WACS_BSSB NCURSES_WACS('l') +#define WACS_SSBB NCURSES_WACS('m') +#define WACS_BBSS NCURSES_WACS('k') +#define WACS_SBBS NCURSES_WACS('j') +#define WACS_SBSS NCURSES_WACS('u') +#define WACS_SSSB NCURSES_WACS('t') +#define WACS_SSBS NCURSES_WACS('v') +#define WACS_BSSS NCURSES_WACS('w') +#define WACS_BSBS NCURSES_WACS('q') +#define WACS_SBSB NCURSES_WACS('x') +#define WACS_SSSS NCURSES_WACS('n') + +#define WACS_ULCORNER WACS_BSSB +#define WACS_LLCORNER WACS_SSBB +#define WACS_URCORNER WACS_BBSS +#define WACS_LRCORNER WACS_SBBS +#define WACS_RTEE WACS_SBSS +#define WACS_LTEE WACS_SSSB +#define WACS_BTEE WACS_SSBS +#define WACS_TTEE WACS_BSSS +#define WACS_HLINE WACS_BSBS +#define WACS_VLINE WACS_SBSB +#define WACS_PLUS WACS_SSSS + +#define WACS_S1 NCURSES_WACS('o') /* scan line 1 */ +#define WACS_S9 NCURSES_WACS('s') /* scan line 9 */ +#define WACS_DIAMOND NCURSES_WACS('`') /* diamond */ +#define WACS_CKBOARD NCURSES_WACS('a') /* checker board */ +#define WACS_DEGREE NCURSES_WACS('f') /* degree symbol */ +#define WACS_PLMINUS NCURSES_WACS('g') /* plus/minus */ +#define WACS_BULLET NCURSES_WACS('~') /* bullet */ + + /* Teletype 5410v1 symbols */ +#define WACS_LARROW NCURSES_WACS(',') /* arrow left */ +#define WACS_RARROW NCURSES_WACS('+') /* arrow right */ +#define WACS_DARROW NCURSES_WACS('.') /* arrow down */ +#define WACS_UARROW NCURSES_WACS('-') /* arrow up */ +#define WACS_BOARD NCURSES_WACS('h') /* board of squares */ +#define WACS_LANTERN NCURSES_WACS('i') /* lantern symbol */ +#define WACS_BLOCK NCURSES_WACS('0') /* solid square block */ + + /* ncurses extensions */ +#define WACS_S3 NCURSES_WACS('p') /* scan line 3 */ +#define WACS_S7 NCURSES_WACS('r') /* scan line 7 */ +#define WACS_LEQUAL NCURSES_WACS('y') /* less/equal */ +#define WACS_GEQUAL NCURSES_WACS('z') /* greater/equal */ +#define WACS_PI NCURSES_WACS('{') /* Pi */ +#define WACS_NEQUAL NCURSES_WACS('|') /* not equal */ +#define WACS_STERLING NCURSES_WACS('}') /* UK pound sign */ + + /* double lines */ +#define WACS_BDDB NCURSES_WACS('C') +#define WACS_DDBB NCURSES_WACS('D') +#define WACS_BBDD NCURSES_WACS('B') +#define WACS_DBBD NCURSES_WACS('A') +#define WACS_DBDD NCURSES_WACS('G') +#define WACS_DDDB NCURSES_WACS('F') +#define WACS_DDBD NCURSES_WACS('H') +#define WACS_BDDD NCURSES_WACS('I') +#define WACS_BDBD NCURSES_WACS('R') +#define WACS_DBDB NCURSES_WACS('Y') +#define WACS_DDDD NCURSES_WACS('E') + +#define WACS_D_ULCORNER WACS_BDDB +#define WACS_D_LLCORNER WACS_DDBB +#define WACS_D_URCORNER WACS_BBDD +#define WACS_D_LRCORNER WACS_DBBD +#define WACS_D_RTEE WACS_DBDD +#define WACS_D_LTEE WACS_DDDB +#define WACS_D_BTEE WACS_DDBD +#define WACS_D_TTEE WACS_BDDD +#define WACS_D_HLINE WACS_BDBD +#define WACS_D_VLINE WACS_DBDB +#define WACS_D_PLUS WACS_DDDD + + /* thick lines */ +#define WACS_BTTB NCURSES_WACS('L') +#define WACS_TTBB NCURSES_WACS('M') +#define WACS_BBTT NCURSES_WACS('K') +#define WACS_TBBT NCURSES_WACS('J') +#define WACS_TBTT NCURSES_WACS('U') +#define WACS_TTTB NCURSES_WACS('T') +#define WACS_TTBT NCURSES_WACS('V') +#define WACS_BTTT NCURSES_WACS('W') +#define WACS_BTBT NCURSES_WACS('Q') +#define WACS_TBTB NCURSES_WACS('X') +#define WACS_TTTT NCURSES_WACS('N') + +#define WACS_T_ULCORNER WACS_BTTB +#define WACS_T_LLCORNER WACS_TTBB +#define WACS_T_URCORNER WACS_BBTT +#define WACS_T_LRCORNER WACS_TBBT +#define WACS_T_RTEE WACS_TBTT +#define WACS_T_LTEE WACS_TTTB +#define WACS_T_BTEE WACS_TTBT +#define WACS_T_TTEE WACS_BTTT +#define WACS_T_HLINE WACS_BTBT +#define WACS_T_VLINE WACS_TBTB +#define WACS_T_PLUS WACS_TTTT + +/* + * Function prototypes for wide-character operations. + * + * "generated" comments should include ":WIDEC" to make the corresponding + * functions ifdef'd in lib_gen.c + * + * "implemented" comments do not need this marker. + */ + +extern NCURSES_EXPORT(int) add_wch (const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) add_wchnstr (const cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) add_wchstr (const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) addnwstr (const wchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) addwstr (const wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) bkgrnd (const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(void) bkgrndset (const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) border_set (const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) box_set (WINDOW *, const cchar_t *, const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) echo_wchar (const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) erasewchar (wchar_t*); /* implemented */ +extern NCURSES_EXPORT(int) get_wch (wint_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) get_wstr (wint_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) getbkgrnd (cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) getcchar (const cchar_t *, wchar_t*, attr_t*, NCURSES_PAIRS_T*, void*); /* implemented */ +extern NCURSES_EXPORT(int) getn_wstr (wint_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) hline_set (const cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) in_wch (cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) in_wchnstr (cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) in_wchstr (cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) innwstr (wchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) ins_nwstr (const wchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) ins_wch (const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) ins_wstr (const wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) inwstr (wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(NCURSES_CONST char*) key_name (wchar_t); /* implemented */ +extern NCURSES_EXPORT(int) killwchar (wchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) mvadd_wch (int, int, const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvadd_wchnstr (int, int, const cchar_t *, int);/* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvadd_wchstr (int, int, const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvaddnwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvaddwstr (int, int, const wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvget_wch (int, int, wint_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvget_wstr (int, int, wint_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvgetn_wstr (int, int, wint_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvhline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvin_wch (int, int, cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvin_wchnstr (int, int, cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvin_wchstr (int, int, cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvinnwstr (int, int, wchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvins_nwstr (int, int, const wchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvins_wch (int, int, const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvins_wstr (int, int, const wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvinwstr (int, int, wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvvline_set (int, int, const cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwadd_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwadd_wchnstr (WINDOW *, int, int, const cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwadd_wchstr (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwaddnwstr (WINDOW *, int, int, const wchar_t *, int);/* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwaddwstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwget_wch (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwget_wstr (WINDOW *, int, int, wint_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwgetn_wstr (WINDOW *, int, int, wint_t *, int);/* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwhline_set (WINDOW *, int, int, const cchar_t *, int);/* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwin_wch (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwin_wchnstr (WINDOW *, int,int, cchar_t *,int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwin_wchstr (WINDOW *, int, int, cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwinnwstr (WINDOW *, int, int, wchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwins_nwstr (WINDOW *, int,int, const wchar_t *,int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwins_wch (WINDOW *, int, int, const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwins_wstr (WINDOW *, int, int, const wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwinwstr (WINDOW *, int, int, wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) mvwvline_set (WINDOW *, int,int, const cchar_t *,int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) pecho_wchar (WINDOW *, const cchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) setcchar (cchar_t *, const wchar_t *, const attr_t, NCURSES_PAIRS_T, const void *); /* implemented */ +extern NCURSES_EXPORT(int) slk_wset (int, const wchar_t *, int); /* implemented */ +extern NCURSES_EXPORT(attr_t) term_attrs (void); /* implemented */ +extern NCURSES_EXPORT(int) unget_wch (const wchar_t); /* implemented */ +extern NCURSES_EXPORT(int) vid_attr (attr_t, NCURSES_PAIRS_T, void *); /* implemented */ +extern NCURSES_EXPORT(int) vid_puts (attr_t, NCURSES_PAIRS_T, void *, NCURSES_OUTC); /* implemented */ +extern NCURSES_EXPORT(int) vline_set (const cchar_t *, int); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) wadd_wch (WINDOW *,const cchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) wadd_wchnstr (WINDOW *,const cchar_t *,int); /* implemented */ +extern NCURSES_EXPORT(int) wadd_wchstr (WINDOW *,const cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) waddnwstr (WINDOW *,const wchar_t *,int); /* implemented */ +extern NCURSES_EXPORT(int) waddwstr (WINDOW *,const wchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) wbkgrnd (WINDOW *,const cchar_t *); /* implemented */ +extern NCURSES_EXPORT(void) wbkgrndset (WINDOW *,const cchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) wborder_set (WINDOW *,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*,const cchar_t*); /* implemented */ +extern NCURSES_EXPORT(int) wecho_wchar (WINDOW *, const cchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) wget_wch (WINDOW *, wint_t *); /* implemented */ +extern NCURSES_EXPORT(int) wget_wstr (WINDOW *, wint_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) wgetbkgrnd (WINDOW *, cchar_t *); /* generated:WIDEC */ +extern NCURSES_EXPORT(int) wgetn_wstr (WINDOW *, wint_t *, int); /* implemented */ +extern NCURSES_EXPORT(int) whline_set (WINDOW *, const cchar_t *, int); /* implemented */ +extern NCURSES_EXPORT(int) win_wch (WINDOW *, cchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) win_wchnstr (WINDOW *, cchar_t *, int); /* implemented */ +extern NCURSES_EXPORT(int) win_wchstr (WINDOW *, cchar_t *); /* generated:WIDEC */ +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(wchar_t*) wunctrl (cchar_t *); /* implemented */ +extern NCURSES_EXPORT(int) wvline_set (WINDOW *, const cchar_t *, int); /* implemented */ + +#if NCURSES_SP_FUNCS +extern NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(term_attrs) (SCREEN*); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(erasewchar) (SCREEN*, wchar_t *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(killwchar) (SCREEN*, wchar_t *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(unget_wch) (SCREEN*, const wchar_t); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_attr) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(vid_puts) (SCREEN*, attr_t, NCURSES_PAIRS_T, void *, NCURSES_SP_OUTC); /* implemented:SP_FUNC */ +extern NCURSES_EXPORT(wchar_t*) NCURSES_SP_NAME(wunctrl) (SCREEN*, cchar_t *); /* implemented:SP_FUNC */ +#endif + +#ifndef NCURSES_NOMACROS + +/* + * XSI curses macros for XPG4 conformance. + */ +#define add_wch(c) wadd_wch(stdscr,(c)) +#define add_wchnstr(str,n) wadd_wchnstr(stdscr,(str),(n)) +#define add_wchstr(str) wadd_wchstr(stdscr,(str)) +#define addnwstr(wstr,n) waddnwstr(stdscr,(wstr),(n)) +#define addwstr(wstr) waddwstr(stdscr,(wstr)) +#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 echo_wchar(c) wecho_wchar(stdscr,(c)) +#define get_wch(c) wget_wch(stdscr,(c)) +#define get_wstr(t) wget_wstr(stdscr,(t)) +#define getbkgrnd(wch) wgetbkgrnd(stdscr,(wch)) +#define getn_wstr(t,n) wgetn_wstr(stdscr,(t),(n)) +#define hline_set(c,n) whline_set(stdscr,(c),(n)) +#define in_wch(c) win_wch(stdscr,(c)) +#define in_wchnstr(c,n) win_wchnstr(stdscr,(c),(n)) +#define in_wchstr(c) win_wchstr(stdscr,(c)) +#define innwstr(c,n) winnwstr(stdscr,(c),(n)) +#define ins_nwstr(t,n) wins_nwstr(stdscr,(t),(n)) +#define ins_wch(c) wins_wch(stdscr,(c)) +#define ins_wstr(t) wins_wstr(stdscr,(t)) +#define inwstr(c) winwstr(stdscr,(c)) +#define vline_set(c,n) wvline_set(stdscr,(c),(n)) +#define wadd_wchstr(win,str) wadd_wchnstr((win),(str),-1) +#define waddwstr(win,wstr) waddnwstr((win),(wstr),-1) +#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) + +#if !NCURSES_OPAQUE +#define wgetbkgrnd(win,wch) (NCURSES_OK_ADDR(wch) ? ((win) ? (*(wch) = (win)->_bkgrnd) : *(wch), OK) : ERR) +#endif + +#define mvadd_wch(y,x,c) mvwadd_wch(stdscr,(y),(x),(c)) +#define mvadd_wchnstr(y,x,s,n) mvwadd_wchnstr(stdscr,(y),(x),(s),(n)) +#define mvadd_wchstr(y,x,s) mvwadd_wchstr(stdscr,(y),(x),(s)) +#define mvaddnwstr(y,x,wstr,n) mvwaddnwstr(stdscr,(y),(x),(wstr),(n)) +#define mvaddwstr(y,x,wstr) mvwaddwstr(stdscr,(y),(x),(wstr)) +#define mvget_wch(y,x,c) mvwget_wch(stdscr,(y),(x),(c)) +#define mvget_wstr(y,x,t) mvwget_wstr(stdscr,(y),(x),(t)) +#define mvgetn_wstr(y,x,t,n) mvwgetn_wstr(stdscr,(y),(x),(t),(n)) +#define mvhline_set(y,x,c,n) mvwhline_set(stdscr,(y),(x),(c),(n)) +#define mvin_wch(y,x,c) mvwin_wch(stdscr,(y),(x),(c)) +#define mvin_wchnstr(y,x,c,n) mvwin_wchnstr(stdscr,(y),(x),(c),(n)) +#define mvin_wchstr(y,x,c) mvwin_wchstr(stdscr,(y),(x),(c)) +#define mvinnwstr(y,x,c,n) mvwinnwstr(stdscr,(y),(x),(c),(n)) +#define mvins_nwstr(y,x,t,n) mvwins_nwstr(stdscr,(y),(x),(t),(n)) +#define mvins_wch(y,x,c) mvwins_wch(stdscr,(y),(x),(c)) +#define mvins_wstr(y,x,t) mvwins_wstr(stdscr,(y),(x),(t)) +#define mvinwstr(y,x,c) mvwinwstr(stdscr,(y),(x),(c)) +#define mvvline_set(y,x,c,n) mvwvline_set(stdscr,(y),(x),(c),(n)) + +#define mvwadd_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wch((win),(c))) +#define mvwadd_wchnstr(win,y,x,s,n) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchnstr((win),(s),(n))) +#define mvwadd_wchstr(win,y,x,s) (wmove(win,(y),(x)) == ERR ? ERR : wadd_wchstr((win),(s))) +#define mvwaddnwstr(win,y,x,wstr,n) (wmove(win,(y),(x)) == ERR ? ERR : waddnwstr((win),(wstr),(n))) +#define mvwaddwstr(win,y,x,wstr) (wmove(win,(y),(x)) == ERR ? ERR : waddwstr((win),(wstr))) +#define mvwget_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wget_wch((win),(c))) +#define mvwget_wstr(win,y,x,t) (wmove(win,(y),(x)) == ERR ? ERR : wget_wstr((win),(t))) +#define mvwgetn_wstr(win,y,x,t,n) (wmove(win,(y),(x)) == ERR ? ERR : wgetn_wstr((win),(t),(n))) +#define mvwhline_set(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : whline_set((win),(c),(n))) +#define mvwin_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : win_wch((win),(c))) +#define mvwin_wchnstr(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : win_wchnstr((win),(c),(n))) +#define mvwin_wchstr(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : win_wchstr((win),(c))) +#define mvwinnwstr(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : winnwstr((win),(c),(n))) +#define mvwins_nwstr(win,y,x,t,n) (wmove(win,(y),(x)) == ERR ? ERR : wins_nwstr((win),(t),(n))) +#define mvwins_wch(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : wins_wch((win),(c))) +#define mvwins_wstr(win,y,x,t) (wmove(win,(y),(x)) == ERR ? ERR : wins_wstr((win),(t))) +#define mvwinwstr(win,y,x,c) (wmove(win,(y),(x)) == ERR ? ERR : winwstr((win),(c))) +#define mvwvline_set(win,y,x,c,n) (wmove(win,(y),(x)) == ERR ? ERR : wvline_set((win),(c),(n))) + +#endif /* NCURSES_NOMACROS */ + +#if defined(TRACE) || defined(NCURSES_TEST) +extern NCURSES_EXPORT(const char *) _nc_viswbuf(const wchar_t *); +extern NCURSES_EXPORT(const char *) _nc_viswibuf(const wint_t *); +#endif + +#endif /* NCURSES_WIDECHAR */ diff --git a/deps/ncurses-6.3/include/edit_cfg.sh b/deps/ncurses-6.3/include/edit_cfg.sh new file mode 100755 index 0000000..f7f1795 --- /dev/null +++ b/deps/ncurses-6.3/include/edit_cfg.sh @@ -0,0 +1,68 @@ +#!/bin/sh +# $Id: edit_cfg.sh,v 1.14 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2001,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: Thomas E. Dickey <dickey@clark.net> 1996,1997,2000 +# +# Edit the default value of the term.h file based on the autoconf-generated +# values: +# +# $1 = ncurses_cfg.h +# $2 = term.h +# +BAK=save$$ +TMP=edit$$ +trap "rm -f $BAK $TMP" 0 1 2 3 15 +for name in \ + HAVE_TCGETATTR \ + HAVE_TERMIOS_H \ + HAVE_TERMIO_H \ + BROKEN_LINKER +do + mv $2 $BAK + if ( grep "[ ]$name[ ]" $1 2>&1 >$TMP ) + then + value=1 + else + value=0 + fi + echo '** edit: '$name $value + sed \ + -e "s@#define ${name}.*\$@#define $name $value@" \ + -e "s@#if $name\$@#if $value /* $name */@" \ + -e "s@#if !$name\$@#if $value /* !$name */@" \ + $BAK >$2 + if (cmp -s $2 $BAK) + then + mv $BAK $2 + else + rm -f $BAK + fi +done diff --git a/deps/ncurses-5.9/include/hashed_db.h b/deps/ncurses-6.3/include/hashed_db.h similarity index 91% rename from deps/ncurses-5.9/include/hashed_db.h rename to deps/ncurses-6.3/include/hashed_db.h index 4dd3933..584fd96 100644 --- a/deps/ncurses-5.9/include/hashed_db.h +++ b/deps/ncurses-6.3/include/hashed_db.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2006-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 * @@ -31,19 +32,23 @@ ****************************************************************************/ /* - * $Id: hashed_db.h,v 1.5 2006/08/19 15:58:34 tom Exp $ + * $Id: hashed_db.h,v 1.9 2020/02/02 23:34:34 tom Exp $ */ #ifndef HASHED_DB_H #define HASHED_DB_H 1 +#include <ncurses_cfg.h> + #include <curses.h> #if USE_HASHED_DB +#define DB_DBM_HSEARCH 0 /* quiet gcc -Wundef with db6 */ + #include <db.h> -#ifndef DBN_SUFFIX +#ifndef DBM_SUFFIX #define DBM_SUFFIX ".db" #endif diff --git a/deps/ncurses-6.3/include/headers b/deps/ncurses-6.3/include/headers new file mode 100644 index 0000000..32e33fd --- /dev/null +++ b/deps/ncurses-6.3/include/headers @@ -0,0 +1,55 @@ +# $Id: headers,v 1.15 2020/08/29 18:51:13 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2012,2013 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: Thomas E. Dickey 1996-on +# +curses.h +unctrl.h +ncurses_dll.h + +# Support for termcap (and tic, etc.), which can be a separate library +@ termlib +term.h +termcap.h + +# Headers used only for tic, other programs using internal interfaces +@ ticlib +$(srcdir)/tic.h +$(srcdir)/term_entry.h +$(srcdir)/nc_tparm.h + +# Porting +@ port_win32con +$(srcdir)/ncurses_mingw.h +$(srcdir)/nc_mingw.h +@ port_win32 +$(srcdir)/win32_curses.h + +# vile:makemode diff --git a/deps/ncurses-6.3/include/nc_access.h b/deps/ncurses-6.3/include/nc_access.h new file mode 100644 index 0000000..2e893aa --- /dev/null +++ b/deps/ncurses-6.3/include/nc_access.h @@ -0,0 +1,80 @@ +/**************************************************************************** + * Copyright 2021 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ + +/* $Id: nc_access.h,v 1.2 2021/07/10 22:07:06 tom Exp $ */ + +#ifndef NC_ACCESS_included +#define NC_ACCESS_included 1 +/* *INDENT-OFF* */ + +#include <ncurses_cfg.h> +#include <curses.h> +#include <sys/types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/* + * Turn off this symbol to limit access to environment variables when root. + */ +#ifdef USE_ROOT_ENVIRON + +#define use_terminfo_vars() 1 + +#else + +#define use_terminfo_vars() _nc_env_access() +extern NCURSES_EXPORT(int) _nc_env_access (void); + +#endif + +/* + * Turn off this symbol to limit access to files when running setuid. + */ +#ifdef USE_ROOT_ACCESS + +#define safe_fopen(name,mode) fopen(name,mode) +#define safe_open3(name,flags,mode) open(name,flags,mode) + +#else + +#define safe_fopen(name,mode) fopen(name,mode) +#define safe_open3(name,flags,mode) open(name,flags,mode) +extern NCURSES_EXPORT(FILE *) _nc_safe_fopen (const char *, const char *); +extern NCURSES_EXPORT(int) _nc_safe_open3 (const char *, int, mode_t); + +#endif + +#ifdef __cplusplus +} +#endif + +/* *INDENT-ON* */ + +#endif /* NC_ACCESS_included */ diff --git a/deps/ncurses-5.9/include/nc_alloc.h b/deps/ncurses-6.3/include/nc_alloc.h similarity index 75% rename from deps/ncurses-5.9/include/nc_alloc.h rename to deps/ncurses-6.3/include/nc_alloc.h index da70906..3e5ca8d 100644 --- a/deps/ncurses-5.9/include/nc_alloc.h +++ b/deps/ncurses-6.3/include/nc_alloc.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-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 * @@ -29,10 +30,14 @@ /**************************************************************************** * Author: Thomas E. Dickey 1996-on * ****************************************************************************/ -/* $Id: nc_alloc.h,v 1.18 2010/11/20 22:59:49 tom Exp $ */ +/* $Id: nc_alloc.h,v 1.28 2021/03/20 16:07:29 tom Exp $ */ #ifndef NC_ALLOC_included #define NC_ALLOC_included 1 +/* *INDENT-OFF* */ + +#include <ncurses_cfg.h> +#include <curses.h> #ifdef __cplusplus extern "C" { @@ -68,19 +73,27 @@ extern "C" { #if HAVE_LIBDBMALLOC || HAVE_LIBDMALLOC || NO_LEAKS #define HAVE_NC_FREEALL 1 struct termtype; -extern NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_NORETURN; -extern NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_NORETURN; -extern NCURSES_EXPORT(void) _nc_free_tic(int) GCC_NORETURN; +extern GCC_NORETURN NCURSES_EXPORT(void) _nc_free_tinfo(int) GCC_DEPRECATED("use exit_terminfo"); + +#ifdef NCURSES_INTERNALS +extern GCC_NORETURN NCURSES_EXPORT(void) _nc_free_tic(int); extern NCURSES_EXPORT(void) _nc_free_tparm(void); -extern NCURSES_EXPORT(void) _nc_leaks_dump_entry(void); +extern void _nc_leaks_dump_entry(void); extern NCURSES_EXPORT(void) _nc_leaks_tic(void); #if NCURSES_SP_FUNCS -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC_NORETURN; +extern GCC_NORETURN NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int); +#endif +extern GCC_NORETURN NCURSES_EXPORT(void) _nc_free_and_exit(int); + +#else /* !NCURSES_INTERNALS */ +extern GCC_NORETURN NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_DEPRECATED("use exit_curses"); #endif -#define ExitProgram(code) _nc_free_and_exit(code) +#define ExitProgram(code) exit_curses(code) +#else +extern GCC_NORETURN NCURSES_EXPORT(void) _nc_free_and_exit(int) GCC_DEPRECATED("use exit_curses"); #endif /* NO_LEAKS, etc */ #ifndef HAVE_NC_FREEALL @@ -94,6 +107,7 @@ extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC /* doalloc.c */ extern NCURSES_EXPORT(void *) _nc_doalloc(void *, size_t); #if !HAVE_STRDUP +#undef strdup #define strdup _nc_strdup extern NCURSES_EXPORT(char *) _nc_strdup(const char *); #endif @@ -101,12 +115,14 @@ extern NCURSES_EXPORT(char *) _nc_strdup(const char *); /* entries.c */ extern NCURSES_EXPORT(void) _nc_leaks_tinfo(void); -#define typeMalloc(type,elts) (type *)malloc((elts)*sizeof(type)) -#define typeCalloc(type,elts) (type *)calloc((elts),sizeof(type)) -#define typeRealloc(type,elts,ptr) (type *)_nc_doalloc(ptr, (elts)*sizeof(type)) +#define typeMalloc(type,elts) (type *)malloc((size_t)(elts)*sizeof(type)) +#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)) #ifdef __cplusplus } #endif +/* *INDENT-ON* */ + #endif /* NC_ALLOC_included */ diff --git a/deps/ncurses-5.9/include/nc_mingw.h b/deps/ncurses-6.3/include/nc_mingw.h similarity index 81% rename from deps/ncurses-5.9/include/nc_mingw.h rename to deps/ncurses-6.3/include/nc_mingw.h index 3247003..6729b29 100644 --- a/deps/ncurses-5.9/include/nc_mingw.h +++ b/deps/ncurses-6.3/include/nc_mingw.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2008-2010,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 * @@ -27,19 +28,20 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas Dickey, 2008-on * - * * + * Author: Thomas Dickey, 2008-on * ****************************************************************************/ -/* $Id: nc_mingw.h,v 1.3 2010/09/25 22:16:12 juergen Exp $ */ +/* $Id: nc_mingw.h,v 1.9 2020/07/11 22:13:19 tom Exp $ */ #ifndef NC_MINGW_H #define NC_MINGW_H 1 +#ifdef _WIN32 + #ifdef WINVER # if WINVER < 0x0501 # error WINVER must at least be 0x0501 -# endif +# endif #else # define WINVER 0x0501 #endif @@ -51,9 +53,21 @@ #undef gettimeofday #define gettimeofday(tv,tz) _nc_gettimeofday(tv,tz) -#include <sys/time.h> /* for struct timeval */ +#if HAVE_SYS_TIME_H +#include <sys/time.h> /* for struct timeval */ +#endif + +#ifdef _MSC_VER +#include <winsock2.h> /* for struct timeval */ +#endif -extern int _nc_gettimeofday(struct timeval *, void *); +#ifdef __cplusplus +extern "C" { +#endif + +#include <ncurses_dll.h> + +NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *); #undef HAVE_GETTIMEOFDAY #define HAVE_GETTIMEOFDAY 1 @@ -63,7 +77,13 @@ extern int _nc_gettimeofday(struct timeval *, void *); #define getlogin() "username" #undef wcwidth -#define wcwidth(ucs) _nc_wcwidth(ucs) -extern int _nc_wcwidth(wchar_t); +#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs)) +NCURSES_EXPORT(int) _nc_wcwidth(wchar_t); + +#ifdef __cplusplus +} +#endif + +#endif /* _WIN32 */ #endif /* NC_MINGW_H */ diff --git a/deps/ncurses-5.9/include/nc_panel.h b/deps/ncurses-6.3/include/nc_panel.h similarity index 92% rename from deps/ncurses-5.9/include/nc_panel.h rename to deps/ncurses-6.3/include/nc_panel.h index 6a9ffea..60eb811 100644 --- a/deps/ncurses-5.9/include/nc_panel.h +++ b/deps/ncurses-6.3/include/nc_panel.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,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 * @@ -32,7 +33,7 @@ ****************************************************************************/ /* - * $Id: nc_panel.h,v 1.7 2009/07/04 18:20:02 tom Exp $ + * $Id: nc_panel.h,v 1.10 2020/02/02 23:34:34 tom Exp $ * * nc_panel.h * @@ -43,6 +44,9 @@ #ifndef NC_PANEL_H #define NC_PANEL_H 1 +#include <ncurses_cfg.h> +#include <curses.h> + #ifdef __cplusplus extern "C" { diff --git a/deps/ncurses-6.3/include/nc_string.h b/deps/ncurses-6.3/include/nc_string.h new file mode 100644 index 0000000..546aa06 --- /dev/null +++ b/deps/ncurses-6.3/include/nc_string.h @@ -0,0 +1,90 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2012-2013,2016 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: Thomas E. Dickey 2012 * + ****************************************************************************/ + +#ifndef STRING_HACKS_H +#define STRING_HACKS_H 1 + +#include <ncurses_cfg.h> + +#if HAVE_BSD_STRING_H +#include <bsd/string.h> +#endif + +/* + * $Id: nc_string.h,v 1.9 2021/04/25 00:10:43 tom Exp $ + * + * String-hacks. Use these macros to stifle warnings on (presumably) correct + * uses of strcat, strcpy and sprintf. + * + * By the way - + * A fundamental limitation of the interfaces (and frequent issue in bug + * reports using these functions) is that sizes are passed as unsigned values + * (with associated sign-extension problems), limiting their effectiveness + * when checking for buffer overflow. + */ + +#ifdef __cplusplus +#define NCURSES_VOID /* nothing */ +#else +#define NCURSES_VOID (void) +#endif + +#if USE_STRING_HACKS && HAVE_STRLCAT +#define _nc_STRCAT(d,s,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,n)) +#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,m)) +#else +#define _nc_STRCAT(d,s,n) NCURSES_VOID strcat((d),(s)) +#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strncat((d),(s),(n)) +#endif + +#if USE_STRING_HACKS && HAVE_STRLCPY +#define _nc_STRCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n)) +#define _nc_STRNCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n)) +#else +#define _nc_STRCPY(d,s,n) NCURSES_VOID strcpy((d),(s)) +#define _nc_STRNCPY(d,s,n) NCURSES_VOID strncpy((d),(s),(n)) +#endif + +#if USE_STRING_HACKS && HAVE_SNPRINTF +#ifdef __cplusplus +#define _nc_SPRINTF NCURSES_VOID snprintf +#else +#define _nc_SPRINTF NCURSES_VOID (snprintf) +#endif +#define _nc_SLIMIT(n) NCURSES_CAST(size_t,n), +#else +#define _nc_SPRINTF NCURSES_VOID sprintf +#define _nc_SLIMIT(n) /* nothing */ +#endif + +#endif /* STRING_HACKS_H */ diff --git a/deps/ncurses-6.3/include/nc_termios.h b/deps/ncurses-6.3/include/nc_termios.h new file mode 100644 index 0000000..13cc0af --- /dev/null +++ b/deps/ncurses-6.3/include/nc_termios.h @@ -0,0 +1,168 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2011-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: Thomas E. Dickey 2011 * + ****************************************************************************/ + +/* $Id: nc_termios.h,v 1.8 2020/08/29 20:53:19 tom Exp $ */ + +#ifndef NC_TERMIOS_included +#define NC_TERMIOS_included 1 + +#include <ncurses_cfg.h> + +#if HAVE_TERMIOS_H && HAVE_TCGETATTR + +#else /* !HAVE_TERMIOS_H */ + +#if HAVE_TERMIO_H + +/* Add definitions to make termio look like termios. + * But ifdef it, since there are some implementations + * that try to do this for us in a fake <termio.h>. + */ +#ifndef TCSADRAIN +#define TCSADRAIN TCSETAW +#endif +#ifndef TCSAFLUSH +#define TCSAFLUSH TCSETAF +#endif +#ifndef tcsetattr +#define tcsetattr(fd, cmd, arg) ioctl(fd, cmd, arg) +#endif +#ifndef tcgetattr +#define tcgetattr(fd, arg) ioctl(fd, TCGETA, arg) +#endif +#ifndef cfgetospeed +#define cfgetospeed(t) ((t)->c_cflag & CBAUD) +#endif +#ifndef TCIFLUSH +#define TCIFLUSH 0 +#endif +#ifndef tcflush +#define tcflush(fd, arg) ioctl(fd, TCFLSH, arg) +#endif + +#if defined(EXP_WIN32_DRIVER) +#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 + +#endif /* _WIN32 */ +#endif /* HAVE_TERMIO_H */ + +#endif /* HAVE_TERMIOS_H */ + +#endif /* NC_TERMIOS_included */ diff --git a/deps/ncurses-5.9/include/nc_tparm.h b/deps/ncurses-6.3/include/nc_tparm.h similarity index 81% rename from deps/ncurses-5.9/include/nc_tparm.h rename to deps/ncurses-6.3/include/nc_tparm.h index a8dbcac..943d947 100644 --- a/deps/ncurses-5.9/include/nc_tparm.h +++ b/deps/ncurses-6.3/include/nc_tparm.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2006-2012,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 * @@ -30,18 +31,25 @@ * Author: Thomas E. Dickey 2006 * ****************************************************************************/ -/* $Id: nc_tparm.h,v 1.5 2010/12/25 20:27:22 tom Exp $ */ +/* $Id: nc_tparm.h,v 1.11 2020/05/27 23:33:31 tom Exp $ */ #ifndef NC_TPARM_included #define NC_TPARM_included 1 +#include <ncurses_cfg.h> +#include <curses.h> + /* * Cast parameters past the formatting-string for tparm() to match the * assumption of the varargs code. */ #ifndef TPARM_ARG +#ifdef NCURSES_TPARM_ARG +#define TPARM_ARG NCURSES_TPARM_ARG +#else #define TPARM_ARG long #endif +#endif /* TPARAM_ARG */ #define TPARM_N(n) (TPARM_ARG)(n) @@ -66,8 +74,19 @@ #define TPARM_3(a,b,c,d) TPARM_4(a,b,c,d,0) #define TPARM_2(a,b,c) TPARM_3(a,b,c,0) #define TPARM_1(a,b) TPARM_2(a,b,0) -#define TPARM_1(a,b) TPARM_2(a,b,0) #define TPARM_0(a) TPARM_1(a,0) #endif +#ifdef NCURSES_INTERNALS +#define TIPARM_1(s,a) _nc_tiparm(1,s,a) +#define TIPARM_2(s,a,b) _nc_tiparm(2,s,a,b) +#define TIPARM_3(s,a,b,c) _nc_tiparm(3,s,a,b,c) +#define TIPARM_4(s,a,b,c,d) _nc_tiparm(4,s,a,b,c,d) +#define TIPARM_5(s,a,b,c,d,e) _nc_tiparm(5,s,a,b,c,d,e) +#define TIPARM_6(s,a,b,c,d,e,f) _nc_tiparm(6,s,a,b,c,d,e,f) +#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) +#endif + #endif /* NC_TPARM_included */ diff --git a/deps/ncurses-6.3/include/nc_win32.h b/deps/ncurses-6.3/include/nc_win32.h new file mode 100644 index 0000000..790e8df --- /dev/null +++ b/deps/ncurses-6.3/include/nc_win32.h @@ -0,0 +1,183 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2008-2010,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: Thomas Dickey, 2008-on * + ****************************************************************************/ + +/* $Id: nc_win32.h,v 1.9 2020/09/13 00:17:30 tom Exp $ */ + +#ifndef NC_WIN32_H +#define NC_WIN32_H 1 + +#if defined(_WIN32) || defined(_WIN64) + +#ifndef _NC_WINDOWS +#define _NC_WINDOWS +#endif + +#ifdef TERMIOS +#error TERMIOS must not be defined on Windows +#endif + +/* We no longer support WindowsXP. + Minimum requirement is Windows Vista or Server2008, + aka Windows NT 6.0 +*/ +#ifdef WINVER +# if WINVER < 0x0600 +# error WINVER must at least be 0x0600 +# endif +#else +# define WINVER 0x0600 +#endif + +#undef _NC_CHECK_MINTTY +#if WINVER >= 0x0600 +#define _NC_CHECK_MINTTY +#endif + +#include <windows.h> + +#if HAVE_SYS_TIME_H +#include <sys/time.h> /* for struct timeval */ +#endif + +#ifdef _NC_MSC +#include <winsock2.h> /* for struct timeval */ +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#include <ncurses_dll.h> + +#undef HAVE_GETTIMEOFDAY +#define HAVE_GETTIMEOFDAY 1 +extern NCURSES_EXPORT(int) _nc_gettimeofday(struct timeval *, void *); + +#undef wcwidth +#define wcwidth(ucs) _nc_wcwidth((wchar_t)(ucs)) +extern NCURSES_EXPORT(int) _nc_wcwidth(wchar_t); + +#ifdef EVENTLIST_2nd /* test.priv.h just needs the preceding */ + +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); + +#ifdef _NC_CHECK_MINTTY +extern NCURSES_EXPORT(int) _nc_console_checkmintty(int fd, LPHANDLE pMinTTY); +#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 \ + : no_terminal)), \ + NonEmpty(term_env)) + + /* + * Various Console mode definitions + */ + + /* Flags to enable virtual Terminal processing */ +#define VT_FLAG_OUT ENABLE_VIRTUAL_TERMINAL_PROCESSING +#define VT_FLAG_IN ENABLE_VIRTUAL_TERMINAL_INPUT + + /* Default flags for input/output modes */ +#define CONMODE_IN_DEFAULT (ENABLE_LINE_INPUT | ENABLE_PROCESSED_INPUT | ENABLE_WINDOW_INPUT | ENABLE_MOUSE_INPUT) +#define CONMODE_OUT_DEFAULT (ENABLE_PROCESSED_OUTPUT | DISABLE_NEWLINE_AUTO_RETURN | ENABLE_LVB_GRID_WORLDWIDE) + + /* Flags to reset from RAW/CBREAK */ +#define CONMODE_NORAW (ENABLE_PROCESSED_INPUT|ENABLE_LINE_INPUT) +#define CONMODE_NOCBREAK (ENABLE_LINE_INPUT) + + +#if defined(USE_TERM_DRIVER) && defined(USE_WIN32CON_DRIVER) +extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_WIN_DRIVER; +#endif + +#define CON_NUMPAIRS 64 +typedef struct { + BOOL initialized; + BOOL buffered; + BOOL window_only; + BOOL progMode; + BOOL isMinTTY; + BOOL isTermInfoConsole; + HANDLE out; + HANDLE inp; + HANDLE hdl; + HANDLE lastOut; + int numButtons; + LPDWORD ansi_map; + LPDWORD map; + LPDWORD rmap; + WORD pairs[CON_NUMPAIRS]; + COORD origin; + CHAR_INFO *save_screen; + COORD save_size; + SMALL_RECT save_region; + CONSOLE_SCREEN_BUFFER_INFO SBI; + CONSOLE_SCREEN_BUFFER_INFO save_SBI; + CONSOLE_CURSOR_INFO save_CI; + TTY 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 + +#endif /* _WIN32 || _WIN64 */ + +#endif /* NC_WIN32_H */ diff --git a/deps/ncurses-6.3/include/ncurses_cfg.hin b/deps/ncurses-6.3/include/ncurses_cfg.hin new file mode 100644 index 0000000..8d9ed81 --- /dev/null +++ b/deps/ncurses-6.3/include/ncurses_cfg.hin @@ -0,0 +1,74 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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: Thomas E. Dickey 1997-on * + ****************************************************************************/ +/* + * $Id: ncurses_cfg.hin,v 1.13 2020/03/08 12:37:59 tom Exp $ + * + * Both ncurses_cfg.h and ncurses_def.h are internal header-files used when + * building ncurses. + * + * This is a template-file used to generate the "ncurses_cfg.h" file. + * + * Rather than list every definition, the configuration script substitutes the + * definitions that it finds using 'sed'. You need a patch (original date + * 971222) to autoconf 2.12 or 2.13 to do this. + * + * See: + * https://invisible-island.net/autoconf/ + * ftp://ftp.invisible-island.net/autoconf/ + */ +#ifndef NC_CONFIG_H +#define NC_CONFIG_H +@DEFS@ + +#include <ncurses_def.h> + + /* The C compiler may not treat these properly but C++ has to */ +#ifdef __cplusplus +#undef const +#undef inline +#endif + + /* On HP-UX, the C compiler doesn't grok mbstate_t without + -D_XOPEN_SOURCE=500. However, this causes problems on + IRIX. So, we #define mbstate_t to int in configure.in + only for the C compiler if needed. */ +#ifndef __cplusplus +#ifdef NEED_MBSTATE_T_DEF +#define mbstate_t int +#endif +#endif + +/* + * vile:cmode + */ +#endif /* NC_CONFIG_H */ diff --git a/deps/ncurses-6.3/include/ncurses_defs b/deps/ncurses-6.3/include/ncurses_defs new file mode 100644 index 0000000..115f982 --- /dev/null +++ b/deps/ncurses-6.3/include/ncurses_defs @@ -0,0 +1,264 @@ +# $Id: ncurses_defs,v 1.97 2021/06/26 18:56:32 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 2000-2016,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. # +############################################################################## +# +# See "MKncurses_def.sh" for an explanation. +# +# (hint: don't try to define NDEBUG ;-) + +BROKEN_LINKER +BSD_TPUTS +CGETENT_CONST /* nothing */ +CPP_HAS_PARAM_INIT +CURSES_ACS_ARRAY acs_map +CURSES_WACS_ARRAY _nc_wacs +DECL_ERRNO +ETIP_NEEDS_MATH_H +GCC_NORETURN /* nothing */ +GCC_UNUSED /* nothing */ +HAVE_ALLOC_PAIR +HAVE_ASSUME_DEFAULT_COLORS +HAVE_BIG_CORE +HAVE_BSD_CGETENT +HAVE_BSD_SIGNAL_H +HAVE_BSD_STRING_H +HAVE_BTOWC +HAVE_BUILTIN_H +HAVE_CHGAT 1 +HAVE_COLOR_CONTENT 1 +HAVE_COLOR_SET 1 +HAVE_CONSISTENT_GETENV +HAVE_COPYWIN 1 +HAVE_CURSCR 1 +HAVE_CURSES_DATA_TABSIZE 1 +HAVE_CURSES_DATA_TTYTYPE 1 +HAVE_DELSCREEN 1 +HAVE_DERWIN 1 +HAVE_DIRENT_H +HAVE_DUPWIN 1 +HAVE_ERRNO +HAVE_EXIT_CURSES 1 +HAVE_EXIT_TERMINFO 1 +HAVE_FCNTL_H +HAVE_FILTER 1 +HAVE_FORM_H +HAVE_GETBEGX 1 +HAVE_GETCURX 1 +HAVE_GETCWD +HAVE_GETEGID +HAVE_GETEUID +HAVE_GETMAXX 1 +HAVE_GETNSTR +HAVE_GETOPT_H +HAVE_GETPARX 1 +HAVE_GETTIMEOFDAY +HAVE_GETTTYNAM +HAVE_GETWIN 1 +HAVE_GPM_H +HAVE_GPP_BUILTIN_H +HAVE_GXX_BUILTIN_H +HAVE_HALFDELAY 1 +HAVE_HAS_KEY +HAVE_INIT_EXTENDED_COLOR +HAVE_INTTYPES_H +HAVE_IOSTREAM +HAVE_ISASCII +HAVE_ISSETUGID +HAVE_LANGINFO_CODESET +HAVE_LIBC_H +HAVE_LIBDBMALLOC +HAVE_LIBDMALLOC +HAVE_LIBFORM +HAVE_LIBGPM +HAVE_LIBMENU +HAVE_LIBMPATROL +HAVE_LIBPANEL +HAVE_LIB_PCRE2 +HAVE_LIMITS_H +HAVE_LINK +HAVE_LOCALECONV +HAVE_LOCALE_H +HAVE_LONG_FILE_NAMES +HAVE_MATH_H +HAVE_MBLEN +HAVE_MBRLEN +HAVE_MBRTOWC +HAVE_MBSRTOWCS +HAVE_MBSTOWCS +HAVE_MBTOWC +HAVE_MENU_H +HAVE_MKSTEMP +HAVE_MVDERWIN 1 +HAVE_MVVLINE 1 +HAVE_MVWIN 1 +HAVE_MVWVLINE 1 +HAVE_NANOSLEEP +HAVE_NC_ALLOC_H +HAVE_NEWPAD 1 +HAVE_PANEL_H +HAVE_PCRE2POSIX_H +HAVE_PCREPOSIX_H +HAVE_POLL +HAVE_POLL_H +HAVE_PURIFY +HAVE_PUTENV +HAVE_PUTWC +HAVE_PUTWIN 1 +HAVE_REGEXPR_H_FUNCS +HAVE_REGEXP_H_FUNCS +HAVE_REGEX_H_FUNCS +HAVE_REMOVE +HAVE_RESET_COLOR_PAIRS +HAVE_RESIZETERM +HAVE_RESIZE_TERM +HAVE_RESTARTTERM 1 +HAVE_RIPOFFLINE 1 +HAVE_SCR_DUMP 1 +HAVE_SELECT +HAVE_SETBUF +HAVE_SETBUFFER +HAVE_SETFSUID +HAVE_SETENV +HAVE_SETUPTERM 1 +HAVE_SETVBUF +HAVE_SGTTY_H +HAVE_SIGACTION +HAVE_SIGVEC +HAVE_SIZECHANGE +HAVE_SLK_COLOR +HAVE_SLK_INIT 1 +HAVE_SNPRINTF +HAVE_STDINT_H +HAVE_STRDUP +HAVE_STRLCAT +HAVE_STRLCPY +HAVE_STRSTR +HAVE_SYMLINK +HAVE_SYSCONF +HAVE_SYS_BSDTYPES_H +HAVE_SYS_IOCTL_H +HAVE_SYS_PARAM_H +HAVE_SYS_POLL_H +HAVE_SYS_SELECT_H +HAVE_SYS_TERMIO_H +HAVE_SYS_TIMES_H +HAVE_SYS_TIME_H +HAVE_SYS_TIME_SELECT +HAVE_TCGETATTR +HAVE_TCGETPGRP +HAVE_TELL +HAVE_TERMATTRS 1 +HAVE_TERMCAP_H 1 +HAVE_TERMIOS_H +HAVE_TERMIO_H +HAVE_TERMNAME 1 +HAVE_TERM_ENTRY_H 1 +HAVE_TERM_H 1 +HAVE_TGETENT 1 +HAVE_TIGETNUM 1 +HAVE_TIGETSTR 1 +HAVE_TIMES +HAVE_TPUTS_SP +HAVE_TSEARCH +HAVE_TTYENT_H +HAVE_TYPEAHEAD 1 +HAVE_TYPEINFO +HAVE_TYPE_ATTR_T +HAVE_TYPE_SIGACTION +HAVE_UNCTRL_H 1 +HAVE_UNISTD_H +HAVE_UNLINK +HAVE_USE_DEFAULT_COLORS +HAVE_USE_ENV 1 +HAVE_USE_EXTENDED_NAMES +HAVE_USE_SCREEN +HAVE_USE_WINDOW +HAVE_VFSCANF +HAVE_VIDPUTS 1 +HAVE_VID_PUTS 1 +HAVE_VSNPRINTF +HAVE_VSSCANF +HAVE_VW_PRINTW 1 +HAVE_WCHGAT 1 +HAVE_WCSRTOMBS +HAVE_WCSTOMBS +HAVE_WCTOB +HAVE_WCTOMB +HAVE_WCTYPE_H +HAVE_WINSDELLN 1 +HAVE_WINSSTR 1 +HAVE_WORKING_POLL +HAVE_WRESIZE +HAVE_WSYNCDOWN 1 +HAVE__DOSCAN +HAVE__TRACEF +MIXEDCASE_FILENAMES +NCURSES_CHAR_EQ +NCURSES_EXPANDED +NCURSES_EXT_COLORS +NCURSES_EXT_FUNCS +NCURSES_EXT_PUTWIN +NCURSES_NO_PADDING +NCURSES_OSPEED_COMPAT +NCURSES_PATHSEP ':' +NCURSES_WIDECHAR +NEED_PTEM_H +NO_LEAKS +PURE_TERMINFO +STDC_HEADERS +SVR4_ACTION +SVR4_TERMIO +SYSTEM_NAME "unknown" +TERMINFO "none" +TERMPATH "none" +TIME_WITH_SYS_TIME +TYPEOF_CHTYPE +USE_COLORFGBG +USE_FOPEN_BIN_R +USE_GETCAP +USE_GETCAP_CACHE +USE_HARD_TABS +USE_HASHED_DB +USE_HASHMAP +USE_HOME_TERMINFO +USE_LINKS +USE_MY_MEMMOVE +USE_OK_BCOPY +USE_PTHREADS_EINTR +USE_RCS_IDS +USE_REENTRANT +USE_SAFE_SPRINTF +USE_SCROLL_HINTS +USE_SIGWINCH +USE_STRING_HACKS +USE_SYMLINKS +USE_SYSMOUSE +USE_WEAK_SYMBOLS +USE_WIDEC_SUPPORT +USE_XMC_SUPPORT diff --git a/deps/ncurses-6.3/include/ncurses_dll.h.in b/deps/ncurses-6.3/include/ncurses_dll.h.in new file mode 100644 index 0000000..437c54d --- /dev/null +++ b/deps/ncurses-6.3/include/ncurses_dll.h.in @@ -0,0 +1,99 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2009,2014 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. * + ****************************************************************************/ +/* $Id: ncurses_dll.h.in,v 1.17 2020/09/05 17:58:47 juergen Exp $ */ + +#ifndef NCURSES_DLL_H_incl +#define NCURSES_DLL_H_incl 1 + +/* + * MinGW gcc (unlike MSYS2 and Cygwin) should define _WIN32 and possibly _WIN64. + */ +#if defined(__MINGW64__) + +#ifndef _WIN64 +#define _WIN64 1 +#endif + +#elif defined(__MINGW32__) + +#ifndef _WIN32 +#define _WIN32 1 +#endif + +/* 2014-08-02 workaround for broken MinGW compiler. + * Oddly, only TRACE is mapped to trace - the other -D's are okay. + * suggest TDM as an alternative. + */ +#if (__GNUC__ == 4) && (__GNUC_MINOR__ == 8) + +#ifdef trace +#undef trace +#define TRACE +#endif + +#endif /* broken compiler */ + +#endif /* MingW */ + +/* + * For reentrant code, we map the various global variables into SCREEN by + * using functions to access them. + */ +#define NCURSES_PUBLIC_VAR(name) @NCURSES_WRAP_PREFIX@##name + +#if defined(BUILDING_NCURSES) +# define NCURSES_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT +#else +# define NCURSES_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT +#endif + +#define NCURSES_WRAPPED_VAR(type,name) extern NCURSES_IMPEXP type NCURSES_PUBLIC_VAR(name)(void) + +#define NCURSES_EXPORT(type) NCURSES_IMPEXP type NCURSES_API +#define NCURSES_EXPORT_VAR(type) NCURSES_IMPEXP type + +/* + * These symbols hide dllimport/dllexport, for compilers which care about it. + */ +#if defined(__CYGWIN__) || (defined(_WIN32) || defined(_WIN64)) +# if defined(NCURSES_STATIC) /* "static" here only implies "not-a-DLL" */ +# define NCURSES_EXPORT_GENERAL_IMPORT +# define NCURSES_EXPORT_GENERAL_EXPORT +# else +# define NCURSES_EXPORT_GENERAL_IMPORT __declspec(dllimport) +# define NCURSES_EXPORT_GENERAL_EXPORT __declspec(dllexport) +# endif +# define NCURSES_API __cdecl +#else +# define NCURSES_EXPORT_GENERAL_IMPORT +# define NCURSES_EXPORT_GENERAL_EXPORT +# define NCURSES_API /* FIXME: __attribute__ ((cdecl)) is only available on x86 */ +#endif + +#endif /* NCURSES_DLL_H_incl */ diff --git a/deps/ncurses-6.3/include/ncurses_mingw.h b/deps/ncurses-6.3/include/ncurses_mingw.h new file mode 100644 index 0000000..8b11272 --- /dev/null +++ b/deps/ncurses-6.3/include/ncurses_mingw.h @@ -0,0 +1,82 @@ +/**************************************************************************** + * 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/deps/ncurses-6.3/include/term_entry.h b/deps/ncurses-6.3/include/term_entry.h new file mode 100644 index 0000000..e2cf838 --- /dev/null +++ b/deps/ncurses-6.3/include/term_entry.h @@ -0,0 +1,237 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1998-on * + ****************************************************************************/ + +/* $Id: term_entry.h,v 1.61 2021/09/04 10:52:55 tom Exp $ */ + +/* + * term_entry.h -- interface to entry-manipulation code + */ + +#ifndef NCURSES_TERM_ENTRY_H_incl +#define NCURSES_TERM_ENTRY_H_incl 1 +/* *INDENT-OFF* */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <curses.h> +#include <term.h> + +/* + * These macros may be used by programs that know about TERMTYPE: + */ +#if NCURSES_XNAMES +#define NUM_BOOLEANS(tp) (tp)->num_Booleans +#define NUM_NUMBERS(tp) (tp)->num_Numbers +#define NUM_STRINGS(tp) (tp)->num_Strings +#define EXT_NAMES(tp,i,limit,index,table) (i >= limit) ? tp->ext_Names[index] : table[i] +#else +#define NUM_BOOLEANS(tp) BOOLCOUNT +#define NUM_NUMBERS(tp) NUMCOUNT +#define NUM_STRINGS(tp) STRCOUNT +#define EXT_NAMES(tp,i,limit,index,table) table[i] +#endif + +#define NUM_EXT_NAMES(tp) (unsigned) ((tp)->ext_Booleans + (tp)->ext_Numbers + (tp)->ext_Strings) + +#define for_each_boolean(n,tp) for(n = 0; n < NUM_BOOLEANS(tp); n++) +#define for_each_number(n,tp) for(n = 0; n < NUM_NUMBERS(tp); n++) +#define for_each_string(n,tp) for(n = 0; n < NUM_STRINGS(tp); n++) + +#if NCURSES_XNAMES +#define for_each_ext_boolean(n,tp) for(n = BOOLCOUNT; (int) n < (int) NUM_BOOLEANS(tp); n++) +#define for_each_ext_number(n,tp) for(n = NUMCOUNT; (int) n < (int) NUM_NUMBERS(tp); n++) +#define for_each_ext_string(n,tp) for(n = STRCOUNT; (int) n < (int) NUM_STRINGS(tp); n++) +#endif + +#define ExtBoolname(tp,i,names) EXT_NAMES(tp, i, BOOLCOUNT, (i - (tp->num_Booleans - tp->ext_Booleans)), names) +#define ExtNumname(tp,i,names) EXT_NAMES(tp, i, NUMCOUNT, (i - (tp->num_Numbers - tp->ext_Numbers)) + tp->ext_Booleans, names) +#define ExtStrname(tp,i,names) EXT_NAMES(tp, i, STRCOUNT, (i - (tp->num_Strings - tp->ext_Strings)) + (tp->ext_Numbers + tp->ext_Booleans), names) + +/* + * The remaining type-definitions and macros are used only internally by the + * ncurses utilities. + */ +#ifdef NCURSES_INTERNALS + +/* + * see db_iterator.c - this enumeration lists the places searched for a + * terminal description and defines the order in which they are searched. + */ +typedef enum { + dbdTIC = 0, /* special, used by tic when writing entry */ +#if NCURSES_USE_DATABASE + dbdEnvOnce, /* the $TERMINFO environment variable */ + dbdHome, /* $HOME/.terminfo */ + dbdEnvList, /* the $TERMINFO_DIRS environment variable */ + dbdCfgList, /* the compiled-in TERMINFO_DIRS value */ + dbdCfgOnce, /* the compiled-in TERMINFO value */ +#endif +#if NCURSES_USE_TERMCAP + dbdEnvOnce2, /* the $TERMCAP environment variable */ + dbdEnvList2, /* the $TERMPATH environment variable */ + dbdCfgList2, /* the compiled-in TERMPATH */ +#endif + dbdLAST +} DBDIRS; + +#define MAX_USES 32 +#define MAX_CROSSLINKS 16 + +typedef struct entry ENTRY; + +typedef struct { + char *name; + ENTRY *link; + long line; +} ENTRY_USES; + +struct entry { + TERMTYPE2 tterm; + unsigned nuses; + ENTRY_USES uses[MAX_USES]; + int ncrosslinks; + ENTRY *crosslinks[MAX_CROSSLINKS]; + long cstart; + long cend; + long startline; + ENTRY *next; + ENTRY *last; +}; + +extern NCURSES_EXPORT_VAR(ENTRY *) _nc_head; +extern NCURSES_EXPORT_VAR(ENTRY *) _nc_tail; +#define for_entry_list(qp) for (qp = _nc_head; qp; qp = qp->next) + +#define MAX_LINE 132 + +#define NULLHOOK (bool(*)(ENTRY *))0 + +/* + * Note that WANTED and PRESENT are not simple inverses! If a capability + * has been explicitly cancelled, it is not considered WANTED. + */ +#define WANTED(s) ((s) == ABSENT_STRING) +#define PRESENT(s) (((s) != ABSENT_STRING) && ((s) != CANCELLED_STRING)) + +#define ANDMISSING(p,q) \ + { \ + if (PRESENT(p) && !PRESENT(q)) \ + _nc_warning(#p " but no " #q); \ + } + +#define PAIRED(p,q) \ + { \ + if (PRESENT(q) && !PRESENT(p)) \ + _nc_warning(#q " but no " #p); \ + if (PRESENT(p) && !PRESENT(q)) \ + _nc_warning(#p " but no " #q); \ + } + +/* + * These entrypoints are used only by the ncurses utilities such as tic. + */ + +/* alloc_entry.c: elementary allocation code */ +extern NCURSES_EXPORT(ENTRY *) _nc_copy_entry (ENTRY *oldp); +extern NCURSES_EXPORT(char *) _nc_save_str (const char *const); +extern NCURSES_EXPORT(void) _nc_init_entry (ENTRY *const); +extern NCURSES_EXPORT(void) _nc_merge_entry (ENTRY *const, ENTRY *const); +extern NCURSES_EXPORT(void) _nc_wrap_entry (ENTRY *const, bool); + +/* alloc_ttype.c: elementary allocation code */ +extern NCURSES_EXPORT(void) _nc_align_termtype (TERMTYPE2 *, TERMTYPE2 *); + +/* free_ttype.c: elementary allocation code */ +extern NCURSES_EXPORT(void) _nc_free_termtype2 (TERMTYPE2 *); + +/* lib_termcap.c: trim sgr0 string for termcap users */ +extern NCURSES_EXPORT(char *) _nc_trim_sgr0 (TERMTYPE2 *); + +/* parse_entry.c: entry-parsing code */ +#if NCURSES_XNAMES +extern NCURSES_EXPORT_VAR(bool) _nc_user_definable; +extern NCURSES_EXPORT_VAR(bool) _nc_disable_period; +#endif +extern NCURSES_EXPORT(int) _nc_parse_entry (ENTRY *, int, bool); +extern NCURSES_EXPORT(int) _nc_capcmp (const char *, const char *); + +/* write_entry.c: writing an entry to the file system */ +extern NCURSES_EXPORT(void) _nc_set_writedir (const char *); +extern NCURSES_EXPORT(void) _nc_write_entry (TERMTYPE2 *const); +extern NCURSES_EXPORT(int) _nc_write_object (TERMTYPE2 *, char *, unsigned *, unsigned); + +/* comp_parse.c: entry list handling */ +extern NCURSES_EXPORT(void) _nc_read_entry_source (FILE*, char*, int, bool, bool (*)(ENTRY*)); +extern NCURSES_EXPORT(bool) _nc_entry_match (char *, char *); +extern NCURSES_EXPORT(int) _nc_resolve_uses (bool); /* obs 20040705 */ +extern NCURSES_EXPORT(int) _nc_resolve_uses2 (bool, bool); +extern NCURSES_EXPORT(void) _nc_free_entries (ENTRY *); +extern NCURSES_IMPEXP void (NCURSES_API *_nc_check_termtype)(TERMTYPE *); /* obs 20040705 */ +extern NCURSES_IMPEXP void (NCURSES_API *_nc_check_termtype2)(TERMTYPE2 *, bool); + +/* trace_xnames.c */ +extern NCURSES_EXPORT(void) _nc_trace_xnames (TERMTYPE *); + +#endif /* NCURSES_INTERNALS */ + +/* + * These entrypoints were used by tack before 1.08. + */ + +#undef NCURSES_TACK_1_08 +#ifdef NCURSES_INTERNALS +#define NCURSES_TACK_1_08 /* nothing */ +#else +#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08") +#endif + +/* alloc_ttype.c: elementary allocation code */ +extern NCURSES_EXPORT(void) _nc_copy_termtype (TERMTYPE *, const TERMTYPE *) NCURSES_TACK_1_08; + +/* lib_acs.c */ +extern NCURSES_EXPORT(void) _nc_init_acs (void) NCURSES_TACK_1_08; /* corresponds to traditional 'init_acs()' */ + +/* free_ttype.c: elementary allocation code */ +extern NCURSES_EXPORT(void) _nc_free_termtype (TERMTYPE *) NCURSES_TACK_1_08; + +#ifdef __cplusplus +} +#endif + +/* *INDENT-ON* */ + +#endif /* NCURSES_TERM_ENTRY_H_incl */ diff --git a/deps/ncurses-5.9/include/termcap.h.in b/deps/ncurses-6.3/include/termcap.h.in similarity index 85% rename from deps/ncurses-5.9/include/termcap.h.in rename to deps/ncurses-6.3/include/termcap.h.in index 6adc312..7b7c703 100644 --- a/deps/ncurses-5.9/include/termcap.h.in +++ b/deps/ncurses-6.3/include/termcap.h.in @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2000,2001 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 * @@ -31,7 +32,7 @@ * and: Eric S. Raymond <esr@snark.thyrsus.com> * ****************************************************************************/ -/* $Id: termcap.h.in,v 1.16 2001/03/24 21:53:27 tom Exp $ */ +/* $Id: termcap.h.in,v 1.20 2021/06/17 21:26:02 tom Exp $ */ #ifndef NCURSES_TERMCAP_H_incl #define NCURSES_TERMCAP_H_incl 1 @@ -48,23 +49,20 @@ extern "C" #include <sys/types.h> -#undef NCURSES_CONST -#define NCURSES_CONST @NCURSES_CONST@ - -#undef NCURSES_OSPEED -#define NCURSES_OSPEED @NCURSES_OSPEED@ +#undef NCURSES_OSPEED +#define NCURSES_OSPEED @NCURSES_OSPEED@ extern NCURSES_EXPORT_VAR(char) PC; extern NCURSES_EXPORT_VAR(char *) UP; extern NCURSES_EXPORT_VAR(char *) BC; -extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed; +extern NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed; #if !defined(NCURSES_TERM_H_incl) -extern NCURSES_EXPORT(char *) tgetstr (NCURSES_CONST char *, char **); +extern NCURSES_EXPORT(char *) tgetstr (const char *, char **); extern NCURSES_EXPORT(char *) tgoto (const char *, int, int); extern NCURSES_EXPORT(int) tgetent (char *, const char *); -extern NCURSES_EXPORT(int) tgetflag (NCURSES_CONST char *); -extern NCURSES_EXPORT(int) tgetnum (NCURSES_CONST char *); +extern NCURSES_EXPORT(int) tgetflag (const char *); +extern NCURSES_EXPORT(int) tgetnum (const char *); extern NCURSES_EXPORT(int) tputs (const char *, int, int (*)(int)); #endif diff --git a/deps/ncurses-6.3/include/tic.h b/deps/ncurses-6.3/include/tic.h new file mode 100644 index 0000000..36169f0 --- /dev/null +++ b/deps/ncurses-6.3/include/tic.h @@ -0,0 +1,397 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996 on * + ****************************************************************************/ + +/* + * $Id: tic.h,v 1.84 2021/08/21 00:24:45 tom Exp $ + * tic.h - Global variables and structures for the terminfo compiler. + */ + +#ifndef __TIC_H +#define __TIC_H +/* *INDENT-OFF* */ +#ifdef __cplusplus +extern "C" { +#endif + +#include <ncurses_cfg.h> + +#include <curses.h> /* for the _tracef() prototype, ERR/OK, bool defs */ + +/* +** The format of SVr2 compiled terminfo files is as follows: +** +** Header (12 bytes), containing information given below +** Names Section, containing the names of the terminal +** Boolean Section, containing the values of all of the +** boolean capabilities +** A null byte may be inserted here to make +** sure that the Number Section begins on an +** even word boundary. +** Number Section, containing the values of all of the numeric +** capabilities, each as a short integer +** String Section, containing short integer offsets into the +** String Table, one per string capability +** String Table, containing the actual characters of the string +** capabilities. +** +** In the SVr2 format, "short" means signed 16-bit numbers, which is sometimes +** inconvenient. The numbers are signed, to provide for absent and canceled +** values. ncurses6.1 introduced an extension to this compiled format, by +** making the Number Section a list of signed 32-bit integers. +** +** NOTE that all short integers in the file are stored using VAX/PDP-style +** byte-order, i.e., least-significant byte first. +** +** There is no structure definition here because it would only confuse +** matters. Terminfo format is a raw byte layout, not a structure +** dump. If you happen to be on a little-endian machine with 16-bit +** shorts that requires no padding between short members in a struct, +** then there is a natural C structure that captures the header, but +** not very helpfully. +*/ + +#define MAGIC 0432 /* first two bytes of a compiled entry */ +#define MAGIC2 01036 /* first two bytes of a compiled 32-bit entry */ + +#undef BYTE +#define BYTE(p,n) (unsigned char)((p)[n]) + +#define IS_NEG1(p) ((BYTE(p,0) == 0377) && (BYTE(p,1) == 0377)) +#define IS_NEG2(p) ((BYTE(p,0) == 0376) && (BYTE(p,1) == 0377)) +#define LOW_MSB(p) (BYTE(p,0) + 256*BYTE(p,1)) + +#define IS_TIC_MAGIC(p) (LOW_MSB(p) == MAGIC || LOW_MSB(p) == MAGIC2) + +#define quick_prefix(s) (!strncmp((s), "b64:", (size_t)4) || !strncmp((s), "hex:", (size_t)4)) + +/* + * The "maximum" here is misleading; XSI guarantees minimum values, which a + * given implementation may exceed. + */ +#define MAX_NAME_SIZE 512 /* maximum legal name field size (XSI:127) */ +#define MAX_ENTRY_SIZE1 4096 /* maximum legal entry size (SVr2) */ +#define MAX_ENTRY_SIZE2 32768 /* maximum legal entry size (ncurses6.1) */ + +#if NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR +#define MAX_ENTRY_SIZE MAX_ENTRY_SIZE2 +#else +#define MAX_ENTRY_SIZE MAX_ENTRY_SIZE1 +#endif + +/* + * The maximum size of individual name or alias is guaranteed in XSI to be at + * least 14, since that corresponds to the older filename lengths. Newer + * systems allow longer aliases, though not many terminal descriptions are + * written to use them. The MAX_ALIAS symbol is used for warnings. + */ +#if HAVE_LONG_FILE_NAMES +#define MAX_ALIAS 32 /* smaller than POSIX minimum for PATH_MAX */ +#else +#define MAX_ALIAS 14 /* SVr3 filename length */ +#endif + +/* location of user's personal info directory */ +#define PRIVATE_INFO "%s/.terminfo" /* plug getenv("HOME") into %s */ + +/* + * Some traces are designed to be used via tic's verbose option (and similar in + * infocmp and toe) rather than the 'trace()' function. So we use the bits + * above the normal trace() parameter as a debug-level. + */ + +#define MAX_DEBUG_LEVEL 15 +#define DEBUG_LEVEL(n) ((n) << TRACE_SHIFT) + +#define set_trace_level(n) \ + _nc_tracing &= DEBUG_LEVEL(MAX_DEBUG_LEVEL) \ + + DEBUG_LEVEL(MAX_DEBUG_LEVEL) - 1, \ + _nc_tracing |= DEBUG_LEVEL(n) + +#ifdef TRACE +#define DEBUG(n, a) if (_nc_tracing >= DEBUG_LEVEL(n)) _tracef a +#else +#define DEBUG(n, a) /*nothing*/ +#endif + +/* + * These are the types of tokens returned by the scanner. The first + * three are also used in the hash table of capability names. The scanner + * returns one of these values after loading the specifics into the global + * structure curr_token. + */ + +#define BOOLEAN 0 /* Boolean capability */ +#define NUMBER 1 /* Numeric capability */ +#define STRING 2 /* String-valued capability */ +#define CANCEL 3 /* Capability to be cancelled in following tc's */ +#define NAMES 4 /* The names for a terminal type */ +#define UNDEF 5 /* Undefined */ + +#define NO_PUSHBACK -1 /* used in pushtype to indicate no pushback */ + +/* + * The global structure in which the specific parts of a + * scanned token are returned. + */ + +struct token +{ + char *tk_name; /* name of capability */ + int tk_valnumber; /* value of capability (if a number) */ + char *tk_valstring; /* value of capability (if a string) */ +}; + +/* + * Offsets to string capabilities, with the corresponding functionkey codes. + */ +struct tinfo_fkeys { + unsigned offset; + chtype code; + }; + +typedef short HashValue; + +/* + * The file comp_captab.c contains an array of these structures, one per + * possible capability. These are indexed by a hash table array of pointers to + * the same structures for use by the parser. + */ +struct name_table_entry +{ + const char *nte_name; /* name to hash on */ + int nte_type; /* BOOLEAN, NUMBER or STRING */ + HashValue nte_index; /* index of associated variable in its array */ + HashValue nte_link; /* index in table of next hash, or -1 */ +}; + +/* + * Use this structure to hide differences between terminfo and termcap tables. + */ +typedef struct { + unsigned table_size; + const HashValue *table_data; + HashValue (*hash_of)(const char *); + int (*compare_names)(const char *, const char *); +} HashData; + +struct alias +{ + const char *from; + const char *to; + const char *source; +}; + +#define NOTFOUND ((struct name_table_entry *) 0) + +/* + * The file comp_userdefs.c contains an array of these structures, one per + * possible capability. These are indexed by a hash table array of pointers to + * the same structures for use by the parser. + */ +struct user_table_entry +{ + const char *ute_name; /* name to hash on */ + int ute_type; /* mask (BOOLEAN, NUMBER, STRING) */ + unsigned ute_argc; /* number of parameters */ + unsigned ute_args; /* bit-mask for string parameters */ + HashValue ute_index; /* index of associated variable in its array */ + HashValue ute_link; /* index in table of next hash, or -1 */ +}; + +/* + * The casts are required for correct sign-propagation with systems such as + * AIX, IRIX64, Solaris which default to unsigned characters. The C standard + * leaves this detail unspecified. + */ + +/* out-of-band values for representing absent capabilities */ +#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */ +#define ABSENT_NUMERIC (-1) +#define ABSENT_STRING (char *)0 + +/* out-of-band values for representing cancels */ +#define CANCELLED_BOOLEAN ((signed char)-2) /* 254 */ +#define CANCELLED_NUMERIC (-2) +#define CANCELLED_STRING (char *)(-1) + +#define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */ +#define VALID_NUMERIC(s) ((s) >= 0) +#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING) + +/* termcap entries longer than this may break old binaries */ +#define MAX_TERMCAP_LENGTH 1023 + +/* this is a documented limitation of terminfo */ +#define MAX_TERMINFO_LENGTH 4096 + +#ifndef TERMINFO +#define TERMINFO "/usr/share/terminfo" +#endif + +#ifdef NCURSES_TERM_ENTRY_H_incl + +/* + * These entrypoints are used only by the ncurses utilities such as tic. + */ +#ifdef NCURSES_INTERNALS +/* access.c */ +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(char *) _nc_basename (char *); +extern NCURSES_EXPORT(char *) _nc_rootname (char *); + +/* comp_captab.c */ +extern NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool); +extern NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool); +extern NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool); + +/* comp_hash.c: name lookup */ +extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_type_entry + (const char *, int, bool); +extern NCURSES_EXPORT(struct user_table_entry const *) _nc_find_user_entry + (const char *); + +/* comp_scan.c: lexical analysis */ +extern NCURSES_EXPORT(int) _nc_get_token (bool); +extern NCURSES_EXPORT(void) _nc_panic_mode (char); +extern NCURSES_EXPORT(void) _nc_push_token (int); +extern NCURSES_EXPORT_VAR(int) _nc_curr_col; +extern NCURSES_EXPORT_VAR(int) _nc_curr_line; +extern NCURSES_EXPORT_VAR(int) _nc_syntax; +extern NCURSES_EXPORT_VAR(int) _nc_strict_bsd; +extern NCURSES_EXPORT_VAR(long) _nc_comment_end; +extern NCURSES_EXPORT_VAR(long) _nc_comment_start; +extern NCURSES_EXPORT_VAR(long) _nc_curr_file_pos; +extern NCURSES_EXPORT_VAR(long) _nc_start_line; +#define SYN_TERMINFO 0 +#define SYN_TERMCAP 1 + +/* comp_error.c: warning & abort messages */ +extern NCURSES_EXPORT(const char *) _nc_get_source (void); +extern GCC_NORETURN NCURSES_EXPORT(void) _nc_err_abort (const char *const,...) GCC_PRINTFLIKE(1,2); +extern NCURSES_EXPORT(void) _nc_get_type (char *name); +extern NCURSES_EXPORT(void) _nc_set_source (const char *const); +extern NCURSES_EXPORT(void) _nc_set_type (const char *const); +extern GCC_NORETURN NCURSES_EXPORT(void) _nc_syserr_abort (const char *const,...) GCC_PRINTFLIKE(1,2); +extern NCURSES_EXPORT(void) _nc_warning (const char *const,...) GCC_PRINTFLIKE(1,2); +extern NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings; + +/* comp_scan.c */ +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); + +/* captoinfo.c: capability conversion */ +extern NCURSES_EXPORT(char *) _nc_captoinfo (const char *, const char *, int const); +extern NCURSES_EXPORT(char *) _nc_infotocap (const char *, const char *, int const); + +/* home_terminfo.c */ +extern NCURSES_EXPORT(char *) _nc_home_terminfo (void); + +/* init_keytry.c */ +#if BROKEN_LINKER +#define _nc_tinfo_fkeys _nc_tinfo_fkeysf() +extern NCURSES_EXPORT(const struct tinfo_fkeys *) _nc_tinfo_fkeysf (void); +#else +extern NCURSES_EXPORT_VAR(const struct tinfo_fkeys) _nc_tinfo_fkeys[]; +#endif + +/* lib_tparm.c */ +#define NUM_PARM 9 + +extern NCURSES_EXPORT_VAR(int) _nc_tparm_err; + +extern NCURSES_EXPORT(int) _nc_tparm_analyze(TERMINAL *, const char *, char **, int *); +extern NCURSES_EXPORT(void) _nc_reset_tparm(TERMINAL *); + +/* lib_trace.c */ +extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing; +extern NCURSES_EXPORT(const char *) _nc_visbuf (const char *); +extern NCURSES_EXPORT(const char *) _nc_visbuf2 (int, const char *); + +/* lib_tputs.c */ +extern NCURSES_EXPORT_VAR(int) _nc_nulls_sent; /* Add one for every null sent */ + +/* comp_main.c: compiler main */ +extern const char * _nc_progname; + +/* db_iterator.c */ +extern NCURSES_EXPORT(const char *) _nc_next_db(DBDIRS *, int *); +extern NCURSES_EXPORT(const char *) _nc_tic_dir (const char *); +extern NCURSES_EXPORT(void) _nc_first_db(DBDIRS *, int *); +extern NCURSES_EXPORT(void) _nc_last_db(void); + +/* write_entry.c */ +extern NCURSES_EXPORT(int) _nc_tic_written (void); + +#endif /* NCURSES_INTERNALS */ + +/* + * These entrypoints were used by tack before 1.08. + */ + +#undef NCURSES_TACK_1_08 +#ifdef NCURSES_INTERNALS +#define NCURSES_TACK_1_08 /* nothing */ +#else +#define NCURSES_TACK_1_08 GCC_DEPRECATED("upgrade to tack 1.08") +#endif + +/* comp_hash.c: name lookup */ +extern NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry + (const char *, const HashValue *) NCURSES_TACK_1_08; +extern NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool) NCURSES_TACK_1_08; + +/* comp_scan.c: lexical analysis */ +extern NCURSES_EXPORT(void) _nc_reset_input (FILE *, char *) NCURSES_TACK_1_08; + +/* comp_expand.c: expand string into readable form */ +extern NCURSES_EXPORT(char *) _nc_tic_expand (const char *, bool, int) NCURSES_TACK_1_08; + +/* comp_scan.c: decode string from readable form */ +extern NCURSES_EXPORT(int) _nc_trans_string (char *, char *) NCURSES_TACK_1_08; + +#endif /* NCURSES_TERM_ENTRY_H_incl */ + +#ifdef __cplusplus +} +#endif + +/* *INDENT-ON* */ +#endif /* __TIC_H */ diff --git a/deps/ncurses-5.9/include/unctrl.h.in b/deps/ncurses-6.3/include/unctrl.h.in similarity index 93% rename from deps/ncurses-5.9/include/unctrl.h.in rename to deps/ncurses-6.3/include/unctrl.h.in index e08bc81..f76f443 100644 --- a/deps/ncurses-5.9/include/unctrl.h.in +++ b/deps/ncurses-6.3/include/unctrl.h.in @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2001,2009 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 * @@ -39,7 +40,7 @@ * as ^?. Printable characters are displayed as is. */ -/* $Id: unctrl.h.in,v 1.11 2009/04/18 21:00:52 tom Exp $ */ +/* $Id: unctrl.h.in,v 1.12 2020/02/02 23:34:34 tom Exp $ */ #ifndef NCURSES_UNCTRL_H_incl #define NCURSES_UNCTRL_H_incl 1 diff --git a/deps/ncurses-6.3/include/win32_curses.h b/deps/ncurses-6.3/include/win32_curses.h new file mode 100644 index 0000000..0c807a0 --- /dev/null +++ b/deps/ncurses-6.3/include/win32_curses.h @@ -0,0 +1,75 @@ +/**************************************************************************** + * 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/deps/ncurses-5.9/install-sh b/deps/ncurses-6.3/install-sh similarity index 100% rename from deps/ncurses-5.9/install-sh rename to deps/ncurses-6.3/install-sh diff --git a/deps/ncurses-6.3/man/MKada_config.in b/deps/ncurses-6.3/man/MKada_config.in new file mode 100644 index 0000000..275b9fb --- /dev/null +++ b/deps/ncurses-6.3/man/MKada_config.in @@ -0,0 +1,124 @@ +.\"*************************************************************************** +.\" Copyright 2019-2020,2021 Thomas E. Dickey * +.\" Copyright 2010-2014,2016 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. * +.\"*************************************************************************** +.\" +.\" $Id: MKada_config.in,v 1.13 2021/06/17 21:26:02 tom Exp $ +.ds C adacurses@USE_CFG_SUFFIX@\-config +.TH ADACURSES "1" "" "" "User Commands" +.SH NAME +adacurses@USE_CFG_SUFFIX@\-config \- helper script for @ADA_LIBNAME@ libraries +.SH SYNOPSIS +.B \*C +[\fIoptions\fR] +.SH DESCRIPTION +This is a shell script which simplifies configuring an application to use +the @ADA_LIBNAME@ library binding to ncurses. +.SH OPTIONS +.TP +\fB\-\-cflags\fR +echos the gnat (Ada compiler) flags needed to compile with @ADA_LIBNAME@. +.TP +\fB\-\-libs\fR +echos the gnat libraries needed to link with @ADA_LIBNAME@. +.TP +\fB\-\-version\fR +echos the release+patchdate version of the ncurses libraries used +to configure and build @ADA_LIBNAME@. +.TP +\fB\-\-help\fR +prints a list of the \fB\*C\fP script's options. +.PP +If no options are given, \fB\*C\fP prints the combination +of +\fB\-\-cflags\fR and +\fB\-\-libs\fR +that \fBgnatmake\fP expects (see example). +.SH EXAMPLE +.PP +For example, supposing that you want to compile the "Hello World!" +program for @ADA_LIBNAME@. +Make a file named "hello.adb": +.RS +.nf +.ft CW +with Terminal_Interface.Curses; use Terminal_Interface.Curses; + +procedure Hello is + + Visibility : Cursor_Visibility := Invisible; + done : Boolean := False; + c : Key_Code; + +begin + + Init_Screen; + Set_Echo_Mode (False); + + Set_Cursor_Visibility (Visibility); + Set_Timeout_Mode (Standard_Window, Non_Blocking, 0); + + Move_Cursor (Line => Lines / 2, Column => (Columns - 12) / 2); + Add (Str => "Hello World!"); + + while not done loop + + c := Get_Keystroke (Standard_Window); + case c is + when Character'Pos ('q') => done := True; + when others => null; + end case; + + Nap_Milli_Seconds (50); + end loop; + + End_Windows; + +end Hello; +.fi +.RE +.PP +Then, using +.RS +.ft CW +gnatmake `adacurses-config --cflags` hello -largs `adacurses-config --libs` +.ft +.RE +.PP +or (simpler): +.RS +.ft CW +gnatmake hello `adacurses-config` +.ft +.RE +.PP +you will compile and link the program. +.SH "SEE ALSO" +\fBcurses\fR(3X) +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/man/MKncu_config.in b/deps/ncurses-6.3/man/MKncu_config.in similarity index 93% rename from deps/ncurses-5.9/man/MKncu_config.in rename to deps/ncurses-6.3/man/MKncu_config.in index 3de772c..ca68efd 100644 --- a/deps/ncurses-5.9/man/MKncu_config.in +++ b/deps/ncurses-6.3/man/MKncu_config.in @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2010 Free Software Foundation, Inc. * +.\" Copyright 2020,2021 Thomas E. Dickey * +.\" Copyright 2010 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 * @@ -26,12 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: MKncu_config.in,v 1.3 2010/03/06 22:29:17 tom Exp $ +.\" $Id: MKncu_config.in,v 1.5 2021/06/17 21:20:30 tom Exp $ .TH @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config 1 "" .SH NAME @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config \- helper script for ncurses libraries .SH SYNOPSIS -.B @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config +.B @LIB_NAME@@DFT_ARG_SUFFIX@@cf_cv_abi_version@-config [\fIoptions\fR] .SH DESCRIPTION This is a shell script which simplifies configuring applications against diff --git a/deps/ncurses-5.9/man/MKterminfo.sh b/deps/ncurses-6.3/man/MKterminfo.sh similarity index 83% rename from deps/ncurses-5.9/man/MKterminfo.sh rename to deps/ncurses-6.3/man/MKterminfo.sh index 3a99609..c79dbd8 100755 --- a/deps/ncurses-5.9/man/MKterminfo.sh +++ b/deps/ncurses-6.3/man/MKterminfo.sh @@ -1,10 +1,11 @@ #!/bin/sh -# $Id: MKterminfo.sh,v 1.12 2003/01/11 21:42:12 tom Exp $ +# $Id: MKterminfo.sh,v 1.18 2020/02/02 23:34:34 tom Exp $ # # MKterminfo.sh -- generate terminfo.5 from Caps tabular data # #*************************************************************************** -# Copyright (c) 1998,2002,2003 Free Software Foundation, Inc. * +# Copyright 2018-2019,2020 Thomas E. Dickey * +# Copyright 1998-2003,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 * @@ -50,25 +51,34 @@ if test "${LC_COLLATE+set}" = set; then LC_COLLATE=C; export LC_COLLATE; fi # head=$1 -caps=$2 -tail=$3 -cat <<'EOF' -'\" t -.\" DO NOT EDIT THIS FILE BY HAND! -.\" It is generated from terminfo.head, Caps, 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. +shift 1 +caps= +while test $# -gt 1 +do + caps="$caps $1" + shift 1 +done +tail=$1 +cat <<EOF +'\\" t +.\\" DO NOT EDIT THIS FILE BY HAND! +.\\" It is generated from terminfo.head, $caps, 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. EOF cat $head temp=temp$$ sorted=sorted$$ unsorted=unsorted$$ -trap "rm -f $sorted $temp $unsorted; exit 99" 1 2 5 15 +trap "code=\$?; rm -f $sorted $temp $unsorted; exit \$code" EXIT HUP INT QUIT TERM +rm -f $sorted $temp $unsorted -sed -n <$caps "\ +cat $caps | sed -n "\ /%%-STOP-HERE-%%/q +/^#%center/s, expand,, +/^#%lw25/s, lw6 , lw7 , /^#%/s/#%//p /^#/d s/[ ][ ]*/ /g @@ -105,6 +115,7 @@ done <$unsorted test $saved = yes && sort $temp >>$sorted sed -e 's/^\.\.$//' $sorted | tr "\005\006" "\012\134" -cat $tail -rm -f $sorted $temp $unsorted +sed -e '/^center expand;/s, expand,,' \ + -e '/^\.TS/,/^\\/s, lw[1-9][0-9]*\., l.,' \ + $tail diff --git a/deps/ncurses-6.3/man/Makefile.in b/deps/ncurses-6.3/man/Makefile.in new file mode 100644 index 0000000..2fd18f2 --- /dev/null +++ b/deps/ncurses-6.3/man/Makefile.in @@ -0,0 +1,106 @@ +# $Id: Makefile.in,v 1.52 2021/07/03 18:57:29 tom Exp $ +############################################################################## +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 1998-2013,2015 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: Thomas E. Dickey 1996,1997 +# +# Makefile for ncurses manual pages. +# +# NOTE: When you add or rename a man page, make sure you update both +# the top-level MANIFEST and any man/*.renames files! + +SHELL = @SHELL@ +VPATH = @srcdir@ + +DESTDIR = @DESTDIR@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ +datadir = @datadir@ +mandir = @mandir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : depend +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.man +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.man + +all \ +sources : terminfo.5 +depend : +tags : + +$(DESTDIR)$(mandir) : + mkdir -p $@ + +EDITARGS = $(DESTDIR)$(mandir) $(srcdir) terminfo.5 *-config.1 $(srcdir)/*.[0-9]* + +install install.man : terminfo.5 $(DESTDIR)$(mandir) + $(SHELL) ../edit_man.sh normal installing $(EDITARGS) + +uninstall uninstall.man : + -$(SHELL) ../edit_man.sh normal removing $(EDITARGS) + +# We compose terminfo.5 from the real sources... +CAPLIST = \ + $(srcdir)/../include/@TERMINFO_CAPS@ \ + $(srcdir)/../include/Caps-ncurses +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 + +mostlyclean : + -rm -f core tags TAGS *~ *.bak *.ln *.atac trace + +clean: mostlyclean + rm -f terminfo.5 + +../edit_man.sed : make_sed.sh @MANPAGE_RENAMES@ + $(SHELL) $(srcdir)/make_sed.sh @MANPAGE_RENAMES@ >../edit_man.sed + +distclean realclean: clean + rm -f Makefile *-config.1 ../edit_man.* ../man_alias.* diff --git a/deps/ncurses-5.9/man/captoinfo.1m b/deps/ncurses-6.3/man/captoinfo.1m similarity index 90% rename from deps/ncurses-5.9/man/captoinfo.1m rename to deps/ncurses-6.3/man/captoinfo.1m index c7a3364..4c46da6 100644 --- a/deps/ncurses-5.9/man/captoinfo.1m +++ b/deps/ncurses-6.3/man/captoinfo.1m @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2016 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 * @@ -27,14 +28,14 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: captoinfo.1m,v 1.25 2010/12/04 18:36:44 tom Exp $ +.\" $Id: captoinfo.1m,v 1.30 2020/02/02 23:34:34 tom Exp $ .TH @CAPTOINFO@ 1M "" .ds n 5 .ds d @TERMINFO@ .SH NAME \fB@CAPTOINFO@\fR \- convert a \fItermcap\fR description into a \fIterminfo\fR description .SH SYNOPSIS -\fB@CAPTOINFO@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR . . . +\fB@CAPTOINFO@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR ... .SH DESCRIPTION \fB@CAPTOINFO@\fR looks in each given text \fIfile\fR for \fBtermcap\fR descriptions. @@ -152,7 +153,7 @@ GG acs magic cookie count .TE .PP If the single-line capabilities occur in an entry, they will automatically -be composed into an \fIacsc\fR string. +be composed into an \fBacsc\fR string. The double-line capabilities and \fBGG\fR are discarded with a warning message. .PP @@ -174,18 +175,24 @@ font3 s3ds .TE .PP Additionally, the AIX \fIbox1\fR capability will be automatically translated to -an \fIacsc\fR string. +an \fBacsc\fR string. .PP Hewlett-Packard's terminfo library supports two nonstandard terminfo -capabilities \fImeml\fR (memory lock) and \fImemu\fR (memory unlock). +capabilities \fBmeml\fR (memory lock) and \fBmemu\fR (memory unlock). These will be discarded with a warning message. .SH NOTES This utility is actually a link to \fB@TIC@\fR(1M), running in \fI\-I\fR mode. You can use other \fB@TIC@\fR options such as \fB\-f\fR and \fB\-x\fR. .PP -The trace option is not identical to SVr4's. +The verbose option is not identical to SVr4's. Under SVr4, instead of following the \fB\-v\fR with a trace level n, you repeat it n times. +.SH PORTABILITY +X/Open Curses, Issue 7 (2009) describes \fBtic\fP briefly, +but omits this program. +SVr4 systems provide \fBcaptoinfo\fP as a separate application from \fBtic\fP. +.PP +NetBSD does not provide this application. .SH SEE ALSO \fB@INFOCMP@\fR(1M), \fBcurses\fR(3X), diff --git a/deps/ncurses-6.3/man/clear.1 b/deps/ncurses-6.3/man/clear.1 new file mode 100644 index 0000000..a79bdf1 --- /dev/null +++ b/deps/ncurses-6.3/man/clear.1 @@ -0,0 +1,163 @@ +.\"*************************************************************************** +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: clear.1,v 1.23 2020/02/02 23:34:34 tom Exp $ +.TH @CLEAR@ 1 "" +.\" these would be fallbacks for DS/DE, +.\" but groff changed the meaning of the macros. +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ds n 5 +.SH NAME +\fB@CLEAR@\fR \- clear the terminal screen +.SH SYNOPSIS +\fB@CLEAR@\fR [\fB\-T\fR\fItype\fR] [\fB\-V\fP] [\fB\-x\fP] +.br +.SH DESCRIPTION +\fB@CLEAR@\fR clears your screen if this is possible, +including its scrollback buffer +(if the extended \*(``E3\*('' capability is defined). +\fB@CLEAR@\fR looks in the environment for the terminal type +given by the environment variable \fBTERM\fP, +and then in the +\fBterminfo\fR database to determine how to clear the screen. +.PP +\fB@CLEAR@\fR writes to the standard output. +You can redirect the standard output to a file (which prevents +\fB@CLEAR@\fR from actually clearing the screen), +and later \fBcat\fP the file to the screen, clearing it at that point. +.SH OPTIONS +.PP +.TP 5 +.B \-T \fItype\fP +indicates the \fItype\fR of terminal. +Normally this option is +unnecessary, because the default is taken from the environment +variable \fBTERM\fR. +If \fB\-T\fR is specified, then the shell +variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored. +.TP +.B \-V +reports the version of ncurses which was used in this program, and exits. +The options are as follows: +.TP +.B \-x +do not attempt to clear the terminal's scrollback buffer +using the extended \*(``E3\*('' capability. +.SH HISTORY +A \fBclear\fP command appeared in 2.79BSD dated February 24, 1979. +Later that was provided in Unix 8th edition (1985). +.PP +AT&T adapted a different BSD program (\fBtset\fP) to make +a new command (\fBtput\fP), +and used this to replace the \fBclear\fP command with a shell script +which calls \fBtput clear\fP, e.g., +.NS +/usr/bin/tput ${1:+-T$1} clear 2> /dev/null +exit +.NE +.PP +In 1989, when Keith Bostic revised the BSD \fBtput\fP command +to make it similar to the AT&T \fBtput\fP, +he added a shell script for the \fBclear\fP command: +.NS +exec tput clear +.NE +.PP +The remainder of the script in each case is a copyright notice. +.PP +The ncurses \fBclear\fP command began in 1995 by adapting the original +BSD \fBclear\fP command (with terminfo, of course). +.PP +The \fBE3\fP extension came later: +.bP +In June 1999, xterm provided an extension to the standard control +sequence for clearing the screen. +Rather than clearing just the visible part of the screen using +.NS +printf '\\033[2J' +.NE +.IP +one could clear the \fIscrollback\fP using +.NS +printf '\\033[\fB3\fPJ' +.NE +.IP +This is documented in \fIXTerm Control Sequences\fP as a feature originating +with xterm. +.bP +A few other terminal developers adopted the feature, e.g., PuTTY in 2006. +.bP +In April 2011, a Red Hat developer submitted a patch to the Linux +kernel, modifying its console driver to do the same thing. +The Linux change, part of the 3.0 release, did not mention xterm, +although it was cited in the Red Hat bug report (#683733) +which led to the change. +.bP +Again, a few other terminal developers adopted the feature. +But the +next relevant step was a change to the \fBclear\fP program in 2013 +to incorporate this extension. +.bP +In 2013, the \fBE3\fP extension was overlooked in \fB@TPUT@\fP with +the \*(``clear\*('' parameter. +That was addressed in 2016 by reorganizing \fB@TPUT@\fP to share +its logic with \fB@CLEAR@\fP and \fB@TSET@\fP. +.SH PORTABILITY +Neither IEEE Std 1003.1/The Open Group Base Specifications Issue 7 +(POSIX.1-2008) nor X/Open Curses Issue 7 documents @TSET@ or @RESET@. +.PP +The latter documents \fBtput\fP, which could be used to replace this utility +either via a shell script or by an alias (such as a symbolic link) to +run \fB@TPUT@\fP as \fB@CLEAR@\fP. +.SH SEE ALSO +\fB@TPUT@\fR(1), \fBterminfo\fR(\*n) +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-6.3/man/curs_add_wch.3x b/deps/ncurses-6.3/man/curs_add_wch.3x new file mode 100644 index 0000000..4460208 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_add_wch.3x @@ -0,0 +1,334 @@ +.\"*************************************************************************** +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2001-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_add_wch.3x,v 1.28 2020/10/17 23:10:38 tom Exp $ +.TH curs_add_wch 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBadd_wch\fP, +\fBwadd_wch\fP, +\fBmvadd_wch\fP, +\fBmvwadd_wch\fP, +\fBecho_wchar\fP, +\fBwecho_wchar\fP \- add a complex character and rendition to a \fBcurses\fR window, then advance the cursor +.SH SYNOPSIS +.PP +\fB#include <curses.h>\fP +.sp +.B "int add_wch( const cchar_t *\fIwch\fB );" +.br +.B "int wadd_wch( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );" +.br +.B "int mvadd_wch( int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );" +.br +.B "int mvwadd_wch( WINDOW *\fIwin\fP, int \fIy\fP, int \fIx\fP, const cchar_t *\fIwch\fB );" +.sp +.B "int echo_wchar( const cchar_t *\fIwch\fB );" +.br +.B "int wecho_wchar( WINDOW *\fIwin\fP, const cchar_t *\fIwch\fB );" +.br +.SH DESCRIPTION +.SS add_wch +.PP +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: +.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 to +the next spacing character on the screen. +.bP +If \fIwch\fP refers to a non-spacing character, +all previous characters at that location are preserved. +The non-spacing characters of \fIwch\fP +are added to the spacing complex character, +and the rendition specified by \fIwch\fP is ignored. +.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\fR were called. +.SS echo_wchar +.PP +The \fBecho_wchar\fP +function is functionally equivalent to a call to +\fBadd_wch\fP +followed by a call to +\fBrefresh\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 \fBaddch\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 +\fBaddch\fP(3X). +.PP +.TS +l l l l l +l l l l l +_ _ _ _ _ +lw(1.5i) lw5 lw5 lw5 lw20. +\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR +\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR +WACS_BLOCK 0x25ae # 0 solid square block +WACS_BOARD 0x2592 # h board of squares +WACS_BTEE 0x2534 + v bottom tee +WACS_BULLET 0x00b7 o ~ bullet +WACS_CKBOARD 0x2592 : a checker board (stipple) +WACS_DARROW 0x2193 v . arrow pointing down +WACS_DEGREE 0x00b0 ' f degree symbol +WACS_DIAMOND 0x25c6 + ` diamond +WACS_GEQUAL 0x2265 > > greater-than-or-equal-to +WACS_HLINE 0x2500 \- q horizontal line +WACS_LANTERN 0x2603 # i lantern symbol +WACS_LARROW 0x2190 < , arrow pointing left +WACS_LEQUAL 0x2264 < y less-than-or-equal-to +WACS_LLCORNER 0x2514 + m lower left-hand corner +WACS_LRCORNER 0x2518 + j lower right-hand corner +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 > + arrow pointing right +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 } pound-sterling symbol +WACS_TTEE 0x252c + w top tee +WACS_UARROW 0x2191 ^ \- arrow pointing up +WACS_ULCORNER 0x250c + l upper left-hand corner +WACS_URCORNER 0x2510 + k upper right-hand corner +WACS_VLINE 0x2502 | x vertical line +.TE +.PP +The wide-character configuration of ncurses also defines symbols +for thick lines (\fBacsc\fP \*(``J\*('' to \*(``V\*(''): +.TS +l l l l l +l l l l l +_ _ _ _ _ +lw(1.5i) lw5 lw5 lw5 lw20. +\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR +\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR +WACS_T_BTEE 0x253b + V thick tee pointing up +WACS_T_HLINE 0x2501 - Q thick horizontal line +WACS_T_LLCORNER 0x2517 + M thick lower left corner +WACS_T_LRCORNER 0x251b + J thick lower right corner +WACS_T_LTEE 0x252b + T thick tee pointing right +WACS_T_PLUS 0x254b + N thick large plus +WACS_T_RTEE 0x2523 + U thick tee pointing left +WACS_T_TTEE 0x2533 + W thick tee pointing down +WACS_T_ULCORNER 0x250f + L thick upper left corner +WACS_T_URCORNER 0x2513 + K thick upper right corner +WACS_T_VLINE 0x2503 | X thick vertical line +.TE +.PP +and for double-lines (\fBacsc\fP \*(``A\*('' to \*(``I\*(''): +.PP +.TS +l l l l l +l l l l l +_ _ _ _ _ +lw(1.5i) lw5 lw5 lw5 lw20. +\fBACS\fR \fBUnicode\fP \fBASCII\fR \fBacsc\fP \fBGlyph\fR +\fBName\fR \fBDefault\fP \fBDefault\fR \fBchar\fP \fBName\fR +WACS_D_BTEE 0x2569 + H double tee pointing up +WACS_D_HLINE 0x2550 - R double horizontal line +WACS_D_LLCORNER 0x255a + D double lower left corner +WACS_D_LRCORNER 0x255d + A double lower right corner +WACS_D_LTEE 0x2560 + F double tee pointing right +WACS_D_PLUS 0x256c + E double large plus +WACS_D_RTEE 0x2563 + G double tee pointing left +WACS_D_TTEE 0x2566 + I double tee pointing down +WACS_D_ULCORNER 0x2554 + C double upper left corner +WACS_D_URCORNER 0x2557 + B double upper right corner +WACS_D_VLINE 0x2551 | Y double vertical line +.TE +.PP +Unicode's descriptions for these characters differs slightly from ncurses, +by introducing the term \*(``light\*('' (along with less important details). +Here are its descriptions for the normal, thick, and double horizontal lines: +.bP +U+2500 BOX DRAWINGS LIGHT HORIZONTAL +.bP +U+2501 BOX DRAWINGS HEAVY HORIZONTAL +.bP +U+2550 BOX DRAWINGS DOUBLE HORIZONTAL +.SH RETURN VALUE +.PP +All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success. +.PP +X/Open does not define any error conditions. +This implementation returns an error +.bP +if the window pointer is null or +.bP +if it is not possible to add a complete character in the window. +.PP +The latter may be due to different causes: +.bP +If \fBscrollok\fR 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 +.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. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +.PP +Note that +\fBadd_wch\fP, +\fBmvadd_wch\fP, +\fBmvwadd_wch\fP, and +\fBecho_wchar\fP +may be macros. +.SH PORTABILITY +.PP +All of these functions are described in the XSI Curses standard, Issue 4. +The defaults specified for line-drawing characters apply in the POSIX locale. +.PP +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\fR. +A few implementations are problematic: +.bP +NetBSD curses defines the symbols as a \fBwchar_t\fP within a \fBcchar_t\fP. +.bP +HPUX curses equates some of the \fIACS_\fP symbols +to the analogous \fIWACS_\fP symbols as if the \fIACS_\fP 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 define 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. +.PP +Not all Unicode-capable terminals provide support for VT100-style +alternate character sets (i.e., the \fBacsc\fP 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, HPUX, 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. +Ncurses 5.3 (2002) provided a table of Unicode values to solve these problems. +NetBSD 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 ncurses(3X) +for the environment variable \fBNCURSES_NO_UTF8_ACS\fP. +In contrast, for the same cases, the line-drawing characters +described in \fBcurs_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: +.bP +The closest Unicode equivalents to the +VT100 graphics \fIS1\fP, \fIS3\fP, \fIS7\fP and \fIS9\fP +frequently are not displayed at +the regular intervals which the terminal used. +.bP +The \fIlantern\fP 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 +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. +They are not storm lanterns, in any case. +.IP +Most \fIstorm lanterns\fP have a tapering glass chimney +(to guard against tipping); +some have a wire grid protecting the chimney. +.IP +For the tapering appearance, \[u2603] U+2603 was adequate. +In use on a terminal, no one can tell what the image represents. +Unicode calls it a snowman. +.IP +Others have suggested these alternatives: +\[sc] U+00A7 (section mark), +\[u0398] U+0398 (theta), +\[u03A6] U+03A6 (phi), +\[u03B4] U+03B4 (delta), +\[u2327] U+2327 (x in a rectangle), +\[u256C] U+256C (forms double vertical and horizontal), and +\[u2612] U+2612 (ballot box with x). +.SH SEE ALSO +.na +.PP +\fBcurses\fR(3X), +\fBcurs_addch\fR(3X), +\fBcurs_attr\fR(3X), +\fBcurs_clear\fR(3X), +\fBcurs_outopts\fR(3X), +\fBcurs_refresh\fR(3X), +\fBputwc\fR(3) diff --git a/deps/ncurses-6.3/man/curs_add_wchstr.3x b/deps/ncurses-6.3/man/curs_add_wchstr.3x new file mode 100644 index 0000000..c037be6 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_add_wchstr.3x @@ -0,0 +1,123 @@ +.\"*************************************************************************** +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2012,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_add_wchstr.3x,v 1.15 2020/12/19 21:39:06 tom Exp $ +.TH curs_add_wchstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBadd_wchstr\fR, +\fBadd_wchnstr\fR, +\fBwadd_wchstr\fR, +\fBwadd_wchnstr\fR, +\fBmvadd_wchstr\fR, +\fBmvadd_wchnstr\fR, +\fBmvwadd_wchstr\fR, +\fBmvwadd_wchnstr\fR \- add an array of complex characters (and attributes) to a curses window +.ad +.hy +.SH SYNOPSIS +.nf +\fB#include <curses.h>\fR +.PP +\fBint add_wchstr(const cchar_t *\fR\fIwchstr\fR\fB);\fR +.br +\fBint add_wchnstr(const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint wadd_wchstr(WINDOW *\fR \fIwin\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB);\fR +.br +\fBint wadd_wchnstr(WINDOW *\fR \fIwin\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR +.sp +\fBint mvadd_wchstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB);\fR +.br +\fBint mvadd_wchnstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint mvwadd_wchstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB);\fR +.br +\fBint mvwadd_wchnstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR +.fi +.SH DESCRIPTION +These functions copy the (null-terminated) +array of complex characters \fIwchstr\fR +into the window image structure +starting at the current cursor position. +The four functions with \fIn\fR as the last +argument copy at most \fIn\fR elements, +but no more than will fit on the line. +If \fBn\fR=\fB\-1\fR then the whole array is copied, +to the maximum number of characters that will fit on the line. +.PP +The window cursor is \fInot\fR advanced. +These functions work faster than \fBwaddnstr\fR. +On the other hand: +.bP +they do not perform checking +(such as for the newline, backspace, or carriage return characters), +.bP +they do not advance the current cursor position, +.bP +they do not expand other control characters to ^-escapes, 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 \fIcchar_t\fR, 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. +.SH RETURN VALUE +All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success. +.PP +X/Open does not define any error conditions. +This implementation returns an error +if the window pointer is null. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +All functions except \fBwadd_wchnstr\fR may be macros. +.SH PORTABILITY +These entry points are described in the XSI Curses standard, Issue 4. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_addwstr\fR(3X). +.PP +Comparable functions in the narrow-character (ncurses) library are +described in +\fBcurs_addchstr\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_addch.3x b/deps/ncurses-6.3/man/curs_addch.3x new file mode 100644 index 0000000..43f426a --- /dev/null +++ b/deps/ncurses-6.3/man/curs_addch.3x @@ -0,0 +1,314 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_addch.3x,v 1.56 2021/06/17 21:30:22 tom Exp $ +.TH curs_addch 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBaddch\fR, +\fBwaddch\fR, +\fBmvaddch\fR, +\fBmvwaddch\fR, +\fBechochar\fR, +\fBwechochar\fR \- add a character (with attributes) to a \fBcurses\fR window, then advance the cursor +.SH SYNOPSIS +\fB#include <curses.h>\fR +.PP +\fBint addch(const chtype \fP\fIch\fP\fB);\fR +.br +\fBint waddch(WINDOW *\fP\fIwin\fP\fB, const chtype \fP\fIch\fP\fB);\fR +.br +\fBint mvaddch(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const chtype \fP\fIch\fP\fB);\fR +.br +\fBint mvwaddch(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const chtype \fP\fIch\fP\fB);\fR +.sp +\fBint echochar(const chtype \fP\fIch\fP\fB);\fR +.br +\fBint wechochar(WINDOW *\fP\fIwin\fP\fB, const chtype \fP\fIch\fP\fB);\fR +.br +.SH DESCRIPTION +.SS Adding characters +The \fBaddch\fR, \fBwaddch\fR, \fBmvaddch\fR and \fBmvwaddch\fR routines put +the character \fIch\fR into the given window at its current window position, +which is then advanced. +They are analogous to \fBputchar\fR(3) in \fBstdio\fR(3). +If the advance is at the right margin: +.bP +The cursor automatically wraps to the beginning of the next line. +.bP +At the bottom of the current scrolling region, +and if \fBscrollok\fR is enabled, +the scrolling region is scrolled up one line. +.bP +If \fBscrollok\fR 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 +.PP +If \fIch\fR is a tab, newline, carriage return or backspace, +the cursor is moved appropriately within the window: +.bP +Backspace moves the cursor one character left; at the left +edge of a window it does nothing. +.bP +Carriage return moves the cursor to the window left margin on the current line. +.bP +Newline does a \fBclrtoeol\fR, +then moves the cursor to the window left margin on the next line, +scrolling the window if on the last line. +.bP +Tabs are considered to be at every eighth column. +The tab interval may be altered by setting the \fBTABSIZE\fR variable. +.PP +If \fIch\fR is any other nonprintable character, +it is drawn in printable form, +i.e., the \fB^\fR\fIX\fR notation used by \fBunctrl\fR(3X). +Calling \fBwinch\fR after adding a +nonprintable character does not return the character itself, +but instead returns the printable representation of the character. +.PP +Video attributes can be combined with a character argument passed to +\fBaddch\fR or related functions by logical-ORing them into the character. +(Thus, text, including attributes, can be copied from one place to another +using \fBinch\fR(3X) and \fBaddch\fR.) See the \fBcurs_attr\fR(3X) page for +values of predefined video attribute constants that can be usefully OR'ed +into characters. +.SS Echoing characters +.PP +The \fBechochar\fR and \fBwechochar\fR routines are equivalent to a call to +\fBaddch\fR followed by a call to \fBrefresh\fR(3X), or a call to \fBwaddch\fR +followed by a call to \fBwrefresh\fR. +The knowledge that only a single +character is being output is used and, for non-control characters, a +considerable performance gain may be seen by using these routines instead of +their equivalents. +.SS Line Graphics +The following variables may be used to add line drawing characters to the +screen with routines of the \fBaddch\fR family. +The default character listed +below is used if the \fBacsc\fR capability does not define a terminal-specific +replacement for it, +or if the terminal and locale configuration requires Unicode but the +library is unable to use Unicode. +.PP +The names are taken from VT100 nomenclature. +.PP +.TS +l l l l +l l l l +_ _ _ _ +l l l l. +\fBACS\fR \fBACS\fR \fBacsc\fP \fBGlyph\fR +\fBName\fR \fBDefault\fR \fBchar\fP \fBName\fR +ACS_BLOCK # 0 solid square block +ACS_BOARD # h board of squares +ACS_BTEE + v bottom tee +ACS_BULLET o ~ bullet +ACS_CKBOARD : a checker board (stipple) +ACS_DARROW v . arrow pointing down +ACS_DEGREE ' f degree symbol +ACS_DIAMOND + ` diamond +ACS_GEQUAL > > greater-than-or-equal-to +ACS_HLINE \- q horizontal line +ACS_LANTERN # i lantern symbol +ACS_LARROW < , arrow pointing left +ACS_LEQUAL < y less-than-or-equal-to +ACS_LLCORNER + m lower left-hand corner +ACS_LRCORNER + j lower right-hand corner +ACS_LTEE + t left tee +ACS_NEQUAL ! | not-equal +ACS_PI * { greek pi +ACS_PLMINUS # g plus/minus +ACS_PLUS + n plus +ACS_RARROW > + arrow pointing right +ACS_RTEE + u right tee +ACS_S1 \- o scan line 1 +ACS_S3 \- p scan line 3 +ACS_S7 \- r scan line 7 +ACS_S9 \&_ s scan line 9 +ACS_STERLING f } pound-sterling symbol +ACS_TTEE + w top tee +ACS_UARROW ^ \- arrow pointing up +ACS_ULCORNER + l upper left-hand corner +ACS_URCORNER + k upper right-hand corner +ACS_VLINE | x vertical line +.TE +.SH RETURN VALUE +All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success +(the SVr4 manuals specify only +\*(``an integer value other than \fBERR\fR\*('') upon successful completion, +unless otherwise noted in the preceding routine descriptions. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.PP +If it is not possible to add a complete character, +an error is returned: +.bP +If \fBscrollok\fR 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 +.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. +.SH NOTES +Note that \fBaddch\fR, \fBmvaddch\fR, \fBmvwaddch\fR, and +\fBechochar\fR may be macros. +.SH PORTABILITY +All these functions are described in the XSI Curses standard, Issue 4. +The defaults specified for forms-drawing characters apply in the POSIX locale. +.SS ACS Symbols +.LP +X/Open Curses states that the \fIACS_\fP definitions are \fBchar\fP constants. +For the wide-character implementation (see \fBcurs_add_wch\fP), +there are analogous \fIWACS_\fP definitions which are \fBcchar_t\fP constants. +Some implementations are problematic: +.bP +Some implementations define the ACS symbols to a constant +(such as Solaris), while others define those to entries in an array. +.IP +This implementation uses an array \fBacs_map\fP, as done in SVr4 curses. +NetBSD also uses an array, actually named \fB_acs_char\fP, with a \fB#define\fP +for compatibility. +.bP +HPUX curses equates some of the \fIACS_\fP symbols +to the analogous \fIWACS_\fP symbols as if the \fIACS_\fP symbols were +wide characters. +The misdefined symbols are the arrows +and other symbols which are not used for line-drawing. +.bP +X/Open Curses (issues 2 through 7) has a typographical error +for the ACS_LANTERN symbol, equating its \*(``VT100+ Character\*('' +to \fBI\fP (capital I), while the header files for SVr4 curses +and the various implementations use \fBi\fP (lowercase). +.IP +None of the terminal descriptions on Unix platforms use uppercase-I, +except for Solaris (i.e., \fIscreen\fP's terminal description, +apparently based on the X/Open documentation around 1995). +On the other hand, the terminal description \fIgs6300\fP +(AT&T PC6300 with EMOTS Terminal Emulator) uses lowercase-i. +.LP +Some ACS symbols +(ACS_S3, +ACS_S7, +ACS_LEQUAL, +ACS_GEQUAL, +ACS_PI, +ACS_NEQUAL, +ACS_STERLING) +were not documented in +any publicly released System V. +However, many publicly available terminfos +include \fBacsc\fR strings in which their key characters (pryz{|}) are +embedded, and a second-hand list of their character descriptions has come +to light. +The ACS-prefixed names for them were invented for \fBncurses\fR(3X). +.LP +The \fIdisplayed\fP values for the \fIACS_\fP and \fIWACS_\fP constants +depend on +.bP +the library configuration, i.e., \fBncurses\fP versus \fBncursesw\fP, +where the latter is capable of displaying Unicode while the former is not, and +.bP +whether the \fIlocale\fP uses UTF-8 encoding. +.LP +In certain cases, the terminal is unable to display line-drawing characters +except by using UTF-8 (see the discussion of \fBNCURSES_NO_UTF8_ACS\fP in +ncurses(3X)). +.SS Character Set +X/Open Curses assumes that the parameter passed to \fBwaddch\fP contains +a single character. +As discussed in \fBcurs_attr\fP(3X), that character may have been +more than eight bits in an SVr3 or SVr4 implementation, +but in the X/Open Curses model, the details are not given. +The important distinction between SVr4 curses and X/Open Curses is +that the non-character information (attributes and color) was +separated from the character information which is packed in a \fBchtype\fP +to pass to \fBwaddch\fP. +.PP +In this implementation, \fBchtype\fP holds an eight-bit character. +But ncurses allows multibyte characters to be passed in a succession +of calls to \fBwaddch\fP. +The other implementations do not do this; +a call to \fBwaddch\fP passes exactly one character +which may be rendered as one or more cells on the screen +depending on whether it is printable. +.PP +Depending on the locale settings, +ncurses will inspect the byte passed in each call to \fBwaddch\fP, +and check if the latest call will continue a multibyte sequence. +When a character is \fIcomplete\fP, +ncurses displays the character and moves to the next position in the screen. +.PP +If the calling application interrupts the succession of bytes in +a multibyte character by moving the current location (e.g., using \fBwmove\fP), +ncurses discards the partially built character, +starting over again. +.PP +For portability to other implementations, +do not rely upon this behavior: +.bP +check if a character can be represented as a single byte in the current locale +before attempting call \fBwaddch\fP, and +.bP +call \fBwadd_wch\fP for characters which cannot be handled by \fBwaddch\fP. +.SS TABSIZE +.LP +The \fBTABSIZE\fR variable is implemented in SVr4 and other versions of curses, +but is not part of X/Open curses +(see \fBcurs_variables\fR(3X) for more details). +.LP +If \fIch\fR is a carriage return, +the cursor is moved to the beginning of the current row of the window. +This is true of other implementations, but is not documented. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_attr\fR(3X), +\fBcurs_clear\fR(3X), +\fBcurs_inch\fR(3X), +\fBcurs_outopts\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_variables\fR(3X), +\fBputc\fR(3). +.PP +Comparable functions in the wide-character (ncursesw) library are +described in +\fBcurs_add_wch\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_addchstr.3x b/deps/ncurses-6.3/man/curs_addchstr.3x new file mode 100644 index 0000000..09d70d6 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_addchstr.3x @@ -0,0 +1,117 @@ +.\"*************************************************************************** +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2012,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_addchstr.3x,v 1.22 2020/12/19 21:39:20 tom Exp $ +.TH curs_addchstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBaddchstr\fR, +\fBaddchnstr\fR, +\fBwaddchstr\fR, +\fBwaddchnstr\fR, +\fBmvaddchstr\fR, +\fBmvaddchnstr\fR, +\fBmvwaddchstr\fR, +\fBmvwaddchnstr\fR \- add a string of characters (and attributes) to a \fBcurses\fR window +.ad +.hy +.SH SYNOPSIS +.nf +\fB#include <curses.h>\fR +.PP +\fBint addchstr(const chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint addchnstr(const chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint waddchstr(WINDOW *\fP\fIwin\fP\fB, const chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint waddchnstr(WINDOW *\fP\fIwin\fP\fB, const chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.sp +\fBint mvaddchstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint mvaddchnstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvwaddchstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint mvwaddchnstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.fi +.SH DESCRIPTION +These functions copy the (null-terminated) +\fIchstr\fR array +into the window image structure +starting at the current cursor position. +The four functions with \fIn\fR as the last +argument copy at most \fIn\fR elements, +but no more than will fit on the line. +If \fBn\fR=\fB\-1\fR then the whole array is copied, +to the maximum number of characters that will fit on the line. +.PP +The window cursor is \fInot\fR advanced. +These functions work faster than \fBwaddnstr\fR. +On the other hand: +.bP +they do not perform checking +(such as for the newline, backspace, or carriage return characters), +.bP +they do not advance the current cursor position, +.bP +they do not expand other control characters to ^-escapes, and +.bP +they truncate the string if it crosses the right margin, +rather than wrapping it around to the new line. +.SH RETURN VALUE +All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success. +.PP +X/Open does not define any error conditions. +This implementation returns an error +if the window pointer is null. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +All functions except \fBwaddchnstr\fR may be macros. +.SH PORTABILITY +These entry points are described in the XSI Curses standard, Issue 4. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_addstr\fR(3X). +.PP +Comparable functions in the wide-character (ncursesw) library are +described in +\fBcurs_add_wchstr\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_addstr.3x b/deps/ncurses-6.3/man/curs_addstr.3x new file mode 100644 index 0000000..6f280e6 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_addstr.3x @@ -0,0 +1,119 @@ +.\"*************************************************************************** +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2012,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_addstr.3x,v 1.23 2020/10/17 23:11:02 tom Exp $ +.TH curs_addstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBaddstr\fR, +\fBaddnstr\fR, +\fBwaddstr\fR, +\fBwaddnstr\fR, +\fBmvaddstr\fR, +\fBmvaddnstr\fR, +\fBmvwaddstr\fR, +\fBmvwaddnstr\fR \- add a string of characters to a \fBcurses\fR window and advance cursor +.ad +.hy +.SH SYNOPSIS +.nf +\fB#include <curses.h>\fR +.PP +\fBint addstr(const char *\fR\fIstr\fR\fB);\fR +.br +\fBint addnstr(const char *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint waddstr(WINDOW *\fR\fIwin\fR\fB, const char *\fR\fIstr\fR\fB);\fR +.br +\fBint waddnstr(WINDOW *\fR\fIwin\fR\fB, const char *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR +.sp +\fBint mvaddstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr\fR\fB);\fR +.br +\fBint mvaddnstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint mvwaddstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr\fR\fB);\fR +.br +\fBint mvwaddnstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const char *\fR\fIstr, int \fR\fIn\fR\fB);\fR +.fi +.SH DESCRIPTION +These functions write the (null-terminated) character string +\fIstr\fR on the given window. +It is similar to calling \fBwaddch\fR once for each byte in the string. +.PP +The \fImv\fR functions perform cursor movement once, before writing any +characters. +Thereafter, the cursor is advanced as a side-effect of writing to the window. +.PP +The four functions with \fIn\fR as the last argument +write at most \fIn\fR bytes, +or until a terminating null is reached. +If \fIn\fR is \-1, then the entire string will be added. +.SH RETURN VALUE +All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success. +.PP +X/Open does not define any error conditions. +This implementation returns an error +.bP +if the window pointer is null or +.bP +if the string pointer is null or +.bP +if the corresponding calls to \fBwaddch\fP return an error. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +If an error is returned by the \fBwmove\fP, +no characters are added to the window. +.PP +If an error is returned by \fBwaddch\fP +(e.g., +because the window is not large enough, +or an illegal byte sequence was detected) +only part of the string may be added. +Aside from that, +there is a special case in \fBwaddch\fP where an error may be +returned after successfully writing a character to the lower-right corner +of a window when \fBscrollok\fP is disabled. +.SH NOTES +All of these functions except \fBwaddnstr\fR may be macros. +.SH PORTABILITY +These functions are described in the XSI Curses standard, Issue 4. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_addch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_addwstr.3x b/deps/ncurses-6.3/man/curs_addwstr.3x similarity index 76% rename from deps/ncurses-5.9/man/curs_addwstr.3x rename to deps/ncurses-6.3/man/curs_addwstr.3x index 4e10d30..6f7c3db 100644 --- a/deps/ncurses-5.9/man/curs_addwstr.3x +++ b/deps/ncurses-6.3/man/curs_addwstr.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2012,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 * @@ -26,8 +27,16 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_addwstr.3x,v 1.10 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_addwstr.3x,v 1.15 2020/10/17 23:12:22 tom Exp $ .TH curs_addwstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .na .hy 0 .SH NAME @@ -52,7 +61,7 @@ \fBint waddwstr(WINDOW *\fR\fIwin\fR\fB, const wchar_t *\fR\fIwstr\fR\fB);\fR .br \fBint waddnwstr(WINDOW *\fR\fIwin\fR\fB, const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br +.sp \fBint mvaddwstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const wchar_t *\fR\fIwstr\fR\fB);\fR .br \fBint mvaddnwstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR @@ -62,31 +71,39 @@ \fBint mvwaddnwstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR .fi .SH DESCRIPTION -These routines write the characters of the +These functions write the characters of the (null-terminated) \fBwchar_t\fR character string \fIwstr\fR on the given window. It is similar to constructing a \fBcchar_t\fR for each wchar_t in the string, then calling \fBwadd_wch\fR for the resulting \fBcchar_t\fR. .PP -The \fImv\fR routines perform cursor movement once, before writing any +The \fImv\fR functions perform cursor movement once, before writing any characters. Thereafter, the cursor is advanced as a side-effect of writing to the window. .PP -The four routines with \fIn\fR as the last argument -write at most \fIn\fR \fBwchar_t\fR characters. -If \fIn\fR is \-1, then the entire string will be added, -up to the maximum number of characters that will fit on the line, +The four functions with \fIn\fR as the last argument +write at most \fIn\fR \fBwchar_t\fR characters, or until a terminating null is reached. -.SH RETURN VALUES -All routines return the integer \fBERR\fR upon failure and \fBOK\fR on success. +If \fIn\fR is \-1, then the entire string will be added. +.SH RETURN VALUE +All functions return the integer \fBERR\fR upon failure and \fBOK\fR on success. +.PP +X/Open does not define any error conditions. +This implementation returns an error +.bP +if the window pointer is null or +.bP +if the string pointer is null or +.bP +if the corresponding calls to \fBwadd_wch\fP return an error. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH NOTES -Note that all of these routines except \fBwaddnwstr\fR may be macros. +All of these functions except \fBwaddnwstr\fR may be macros. .SH PORTABILITY -All these entry points are described in the XSI Curses standard, Issue 4. +These functions are described in the XSI Curses standard, Issue 4. .SH SEE ALSO \fBcurses\fR(3X), \fBcurs_add_wch\fR(3X) diff --git a/deps/ncurses-6.3/man/curs_attr.3x b/deps/ncurses-6.3/man/curs_attr.3x new file mode 100644 index 0000000..8199977 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_attr.3x @@ -0,0 +1,605 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_attr.3x,v 1.66 2020/02/02 23:34:34 tom Exp $ +.TH curs_attr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.\" --------------------------------------------------------------------------- +.SH NAME +.\" attr_get +\fBattr_get\fR, +\fBwattr_get\fR, +\fBattr_set\fR, +\fBwattr_set\fR, +.\" .br +\fBattr_off\fR, +\fBwattr_off\fR, +\fBattr_on\fR, +\fBwattr_on\fR, +.\" .br +\fBattroff\fR, +\fBwattroff\fR, +\fBattron\fR, +\fBwattron\fR, +\fBattrset\fR, +\fBwattrset\fR, +.\" .br +\fBchgat\fR, +\fBwchgat\fR, +\fBmvchgat\fR, +\fBmvwchgat\fR, +.\" .br +\fBcolor_set\fR, +\fBwcolor_set\fR, +.\" .br +\fBstandend\fR, +\fBwstandend\fR, +\fBstandout\fR, +\fBwstandout\fR \- \fBcurses\fR character and window attribute control routines +.ad +.hy +.\" --------------------------------------------------------------------------- +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint attr_get(attr_t *\fP\fIattrs\fP\fB, short *\fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR +.br +\fBint wattr_get(WINDOW *\fP\fIwin\fP\fB, attr_t *\fP\fIattrs\fP\fB, short *\fP\fIpair\fP\fB,\fR \fBvoid *\fP\fIopts\fP\fB);\fR +.br +\fBint attr_set(attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR +.br +\fBint wattr_set(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void *\fP\fIopts\fP\fB);\fR +.sp +\fBint attr_off(attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR +.br +\fBint wattr_off(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR +.br +\fBint attr_on(attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR +.br +\fBint wattr_on(WINDOW *\fP\fIwin\fP\fB, attr_t \fP\fIattrs\fP\fB, void *\fP\fIopts\fP\fB);\fR +.sp +\fBint attroff(int \fP\fIattrs);\fR +.br +\fBint wattroff(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR +.br +\fBint attron(int \fP\fIattrs\fP\fB);\fR +.br +\fBint wattron(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR +.br +\fBint attrset(int \fP\fIattrs\fP\fB);\fR +.br +\fBint wattrset(WINDOW *\fP\fIwin\fP\fB, int \fP\fIattrs\fP\fB);\fR +.sp +\fBint chgat(int \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB, short \fP\fIpair\fP\fB,\fR \fBconst void *\fP\fIopts\fP\fB);\fR +.br +\fBint wchgat(WINDOW *\fP\fIwin\fP\fB,\fP + \fBint \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB,\fR \fBshort \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR +.br +\fBint mvchgat(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB,\fP + \fBint \fP\fIn\fP\fB, attr_t \fP\fIattr\fP\fB,\fR \fBshort \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR +.br +\fBint mvwchgat(WINDOW *\fP\fIwin, int \fP\fIy, int \fP\fIx\fP\fB,\fP + \fBint \fP\fIn,\fR \fBattr_t \fP\fIattr\fP\fB, short \fP\fIpair\fP\fB, const void *\fP\fIopts\fP\fB);\fR +.sp +\fBint color_set(short \fP\fIpair\fP\fB, void* \fP\fIopts\fP\fB);\fR +.br +\fBint wcolor_set(WINDOW *\fP\fIwin\fP\fB, short \fP\fIpair\fP\fB,\fR \fBvoid* \fP\fIopts);\fR +.sp +\fBint standend(void);\fR +.br +\fBint wstandend(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint standout(void);\fR +.br +\fBint wstandout(WINDOW *\fP\fIwin\fP\fB);\fR +.\" --------------------------------------------------------------------------- +.SH DESCRIPTION +.PP +These routines manipulate the current attributes of the named window, +which then apply to all characters that are written into +the window with \fBwaddch\fR, \fBwaddstr\fR and \fBwprintw\fR. +Attributes are +a property of the character, and move with the character through any scrolling +and insert/delete line/character operations. +To the extent possible, they are +displayed as appropriate modifications to the graphic rendition of characters +put on the screen. +.PP +These routines do not affect the attributes used +when erasing portions of the window. +See \fBcurs_bkgd\fR(3X) for functions which modify the attributes used for +erasing and clearing. +.PP +Routines which do not have a \fBWINDOW*\fP parameter apply to \fBstdscr\fP. +For example, +\fBattr_set\fP is the \fBstdscr\fP variant of \fBwattr_set\fP. +.\" --------------------------------------------------------------------------- +.SS Window attributes +.PP +There are two sets of functions: +.bP +functions for manipulating the window attributes and color: +\fBwattr_set\fP and \fBwattr_get\fP. +.bP +functions for manipulating only the window attributes (not color): +\fBwattr_on\fP and \fBwattr_off\fP. +.PP +The \fBwattr_set\fP function sets the current attributes +of the given window to \fIattrs\fP, with color specified by \fIpair\fP. +.PP +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, +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, +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. +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)). +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. +For example, +as long as that value fits into the \fBA_COLOR\fP mask, +then these calls produce similar results: +.NS +attrset(A_BOLD | COLOR_PAIR(\fIpair\fP)); +attr_set(A_BOLD, \fIpair\fP, NULL); +.NE +.PP +However, if the value does not fit, then the \fBCOLOR_PAIR\fP macro +uses only the bits that fit. +For example, because in ncurses \fBA_COLOR\fP has eight (8) bits, +then \fBCOLOR_PAIR(\fP\fI259\fP\fB)\fP 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). +For example, the \fIinput\fP and \fIoutput\fP values in these statements +would be the same: +.NS +int value = A_BOLD | COLOR_PAIR(\fIinput\fP); +int \fIoutput\fP = PAIR_NUMBER(value); +.NE +.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: +compatibility. +.PP +The remaining \fBattr\fR* functions operate exactly like the corresponding +\fBattr_\fR* functions, except that they take arguments of type \fBint\fR +rather than \fBattr_t\fR. +.PP +There is no corresponding \fBattrget\fP function as such in X/Open Curses, +although ncurses provides \fBgetattrs\fP (see curs_legacy(3X)). +.\" --------------------------------------------------------------------------- +.SS Change character rendition +.PP +The routine \fBchgat\fR changes the attributes of a given number of characters +starting at the current cursor location of \fBstdscr\fR. +It does not update +the cursor and does not perform wrapping. +A character count of \-1 or greater +than the remaining window width means to change attributes all the way to the +end of the current line. +The \fBwchgat\fR function generalizes this to any window; +the \fBmvwchgat\fR function does a cursor move before acting. +.PP +In these functions, +the color \fIpair\fP argument is a color-pair index +(as in the first argument of \fBinit_pair\fR, see \fBcurs_color\fR(3X)). +.\" --------------------------------------------------------------------------- +.SS Change window color +The routine \fBcolor_set\fR sets the current color of the given window to the +foreground/background combination described by the color \fIpair\fP parameter. +.\" --------------------------------------------------------------------------- +.SS Standout +.PP +The routine \fBstandout\fR is +the same as \fBattron(A_STANDOUT)\fR. +The routine \fBstandend\fR is the same +as \fBattrset(A_NORMAL)\fR or \fBattrset(0)\fR, that is, it turns off all +attributes. +.PP +X/Open does not mark these \*(``restricted\*('', because +.bP +they have well established legacy use, and +.bP +there is no ambiguity about the way the attributes +might be combined with a color pair. +.\" --------------------------------------------------------------------------- +.SH VIDEO ATTRIBUTES +The following video attributes, defined in \fB<curses.h>\fR, can be passed to +the routines \fBattron\fR, \fBattroff\fR, and \fBattrset\fR, or OR'd with the +characters passed to \fBaddch\fR (see \fBcurs_addch\fR(3X)). +.PP +.RS +.TS +l l +_ _ _ +l l . +\fIName\fR \fIDescription\fR +\fBA_NORMAL\fR Normal display (no highlight) +\fBA_STANDOUT\fR Best highlighting mode of the terminal. +\fBA_UNDERLINE\fR Underlining +\fBA_REVERSE\fR Reverse video +\fBA_BLINK\fR Blinking +\fBA_DIM\fR Half bright +\fBA_BOLD\fR Extra bright or bold +\fBA_PROTECT\fR Protected mode +\fBA_INVIS\fR Invisible or blank mode +\fBA_ALTCHARSET\fR Alternate character set +\fBA_ITALIC\fR Italics (non-X/Open extension) +\fBA_CHARTEXT\fR Bit-mask to extract a character +\fBA_COLOR\fR Bit-mask to extract a color (legacy routines) +.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.): +.RS +.TS +l l +_ _ _ +l l . +\fIName\fR \fIDescription\fR +\fBWA_HORIZONTAL\fR Horizontal highlight +\fBWA_LEFT\fR Left highlight +\fBWA_LOW\fR Low highlight +\fBWA_RIGHT\fR Right highlight +\fBWA_TOP\fR Top highlight +\fBWA_VERTICAL\fR 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\fR. +.\" --------------------------------------------------------------------------- +.SH NOTES +These functions may be macros: +.sp +.RS +\fBattroff\fR, \fBwattroff\fR, \fBattron\fR, \fBwattron\fR, +\fBattrset\fR, \fBwattrset\fR, \fBstandend\fR and \fBstandout\fR. +.RE +.PP +Color pair values can only be OR'd 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, ncurses ABI 4 and 5 simply OR this value +within the alternate functions. +You must use ncurses ABI 6 to support more than 256 color pairs. +.\" --------------------------------------------------------------------------- +.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. +.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. +.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. +.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. +.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). +.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 +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. +.RS +.TS +l l l l l l +_ _ _ _ _ _ +l l l l l l . +\fIYear\fR \fISystem\fR \fIArch\fP \fIColor\fR \fIChar\fR \fINotes\fR +1992 Solaris 5.2 32 6 17 SVr4 curses +1992 HPUX 9 32 no 8 SVr2 curses +1992 AIX 3.2 32 no 23 SVr2 curses +1994 OSF/1 r3 32 no 23 SVr2 curses +1995 HP-UX 10.00 32 6 16 SVr3 \*(``curses_colr\*('' +1995 HP-UX 10.00 32 6 8 SVr4, X/Open curses +1995 Solaris 5.4 32/64 7 16 X/Open curses +1996 AIX 4.2 32 7 16 X/Open curses +1996 OSF/1 r4 32 6 16 X/Open curses +1997 HP-UX 11.00 32 6 8 X/Open curses +2000 U/Win 32/64 7/31 16 uses \fBchtype\fP +.TE +.RE +.PP +Notes: +.RS 3 +.PP +Regarding HP-UX, +.bP +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. +.PP +Regarding OSF/1 (and Tru64), +.bP +These used 64-bit hardware. +Like ncurses, the OSF/1 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. +.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. +Sun's copyright began in 1996. +.bP +Sun updated the X/Open curses interface +after 64-bit support was introduced in 1997, +but did not modify the SVr4 curses interface. +.PP +Regarding U/Win, +.bP +Development of the 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). +.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 +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. +.PP +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. +He moved \fIstandout\fP attribute to a structure member. +.IP +The resulting 4.4BSD curses was replaced by ncurses over the next ten years. +.bP +U/Win is rarely used now. +.\" --------------------------------------------------------------------------- +.SH EXTENSIONS +.PP +This implementation provides the \fBA_ITALIC\fP attribute for terminals +which have the \fBenter_italics_mode\fP (\fBsitm\fP) +and \fBexit_italics_mode\fP (\fBritm\fP) capabilities. +Italics are not mentioned in X/Open Curses. +Unlike the other video attributes, \fBA_ITALIC\fP is unrelated +to the \fBset_attributes\fP capabilities. +This implementation makes the assumption that +\fBexit_attribute_mode\fP may also reset italics. +.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. +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, +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. +.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, +in addition +retrieving it via the standard pointer to \fBshort\fP parameter. +.PP +The remaining functions which have \fIopts\fP, +but do not manipulate color, +e.g., \fBwattr_on\fP and \fBwattr_off\fP +are not used by this implementation except to check that they are \fBNULL\fP. +.\" --------------------------------------------------------------------------- +.SH PORTABILITY +These functions are supported in the XSI Curses standard, Issue 4. +The standard defined the dedicated type for highlights, +\fBattr_t\fR, which was not defined in SVr4 curses. +The functions taking \fBattr_t\fR arguments were not supported under SVr4. +.PP +Very old versions of this library did not force an update of the screen +when changing the attributes. +Use \fBtouchwin\fR to force the screen to match the updated attributes. +.PP +The XSI Curses standard states that whether the traditional functions +\fBattron\fR/\fBattroff\fR/\fBattrset\fR can manipulate attributes other than +\fBA_BLINK\fR, \fBA_BOLD\fR, \fBA_DIM\fR, \fBA_REVERSE\fR, \fBA_STANDOUT\fR, or +\fBA_UNDERLINE\fR is \*(``unspecified\*(''. +Under this implementation as well as +SVr4 curses, these functions correctly manipulate all other highlights +(specifically, \fBA_ALTCHARSET\fR, \fBA_PROTECT\fR, and \fBA_INVIS\fR). +.PP +XSI Curses added these entry points: +.sp +.RS +\fBattr_get\fR, \fBattr_on\fR, +\fBattr_off\fR, \fBattr_set\fR, \fBwattr_on\fR, \fBwattr_off\fR, +\fBwattr_get\fR, \fBwattr_set\fR +.RE +.PP +The new functions are intended to work with +a new series of highlight macros prefixed with \fBWA_\fR. +The older macros have direct counterparts in the newer set of names: +.PP +.RS +.ne 9 +.TS +l l +_ _ _ +l l . +\fIName\fR \fIDescription\fR +\fBWA_NORMAL\fR Normal display (no highlight) +\fBWA_STANDOUT\fR Best highlighting mode of the terminal. +\fBWA_UNDERLINE\fR Underlining +\fBWA_REVERSE\fR Reverse video +\fBWA_BLINK\fR Blinking +\fBWA_DIM\fR Half bright +\fBWA_BOLD\fR Extra bright or bold +\fBWA_ALTCHARSET\fR Alternate character set +.TE +.RE +.PP +XSI curses does not assign values to these symbols, +nor does it state whether or not they are related to the +similarly-named A_NORMAL, etc.: +.bP +The XSI curses standard specifies that each pair of corresponding \fBA_\fR +and \fBWA_\fR-using functions operates on the same current-highlight +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). +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. +.PP +The XSI standard extended conformance level adds new highlights +\fBA_HORIZONTAL\fR, \fBA_LEFT\fR, \fBA_LOW\fR, \fBA_RIGHT\fR, \fBA_TOP\fR, +\fBA_VERTICAL\fR (and corresponding \fBWA_\fR macros for each). +As of August 2013, +no known terminal provides these highlights +(i.e., via the \fBsgr1\fP capability). +.\" --------------------------------------------------------------------------- +.SH RETURN VALUE +All routines return the integer \fBOK\fR on success, or \fBERR\fP on failure. +.PP +X/Open does not define any error conditions. +.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. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.\" --------------------------------------------------------------------------- +.SH SEE ALSO +.na +\fBcurses\fR(3X), +\fBcurs_addch\fR(3X), +\fBcurs_addstr\fR(3X), +\fBcurs_bkgd\fR(3X), +\fBcurs_printw\fR(3X), +\fBcurs_variables\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_beep.3x b/deps/ncurses-6.3/man/curs_beep.3x similarity index 88% rename from deps/ncurses-5.9/man/curs_beep.3x rename to deps/ncurses-6.3/man/curs_beep.3x index c6af6f0..bea861b 100644 --- a/deps/ncurses-5.9/man/curs_beep.3x +++ b/deps/ncurses-6.3/man/curs_beep.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2005,2010 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 * @@ -26,7 +27,7 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_beep.3x,v 1.12 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_beep.3x,v 1.14 2020/02/02 23:34:34 tom Exp $ .TH curs_beep 3X "" .SH NAME \fBbeep\fR, \fBflash\fR \- \fBcurses\fR bell and screen flash routines @@ -40,9 +41,12 @@ .SH DESCRIPTION The \fBbeep\fR and \fBflash\fR routines are used to alert the terminal user. The routine \fBbeep\fR sounds an audible alarm on the terminal, if possible; -otherwise it flashes the screen (visible bell). The routine \fBflash\fR -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 +otherwise it flashes the screen (visible bell). +The routine \fBflash\fR +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. .SH RETURN VALUE These routines return \fBOK\fR if they succeed in beeping or flashing, diff --git a/deps/ncurses-6.3/man/curs_bkgd.3x b/deps/ncurses-6.3/man/curs_bkgd.3x new file mode 100644 index 0000000..356eff4 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_bkgd.3x @@ -0,0 +1,161 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_bkgd.3x,v 1.32 2021/06/17 21:30:22 tom Exp $ +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.TH curs_bkgd 3X "" +.SH NAME +\fBbkgdset\fR, \fBwbkgdset\fR, +\fBbkgd\fR, \fBwbkgd\fR, +\fBgetbkgd\fR \- \fBcurses\fR window background manipulation routines +.SH SYNOPSIS +\fB#include <curses.h>\fR +.PP +\fBvoid bkgdset(chtype \fP\fIch\fP\fB);\fR +.br +\fBvoid wbkgdset(WINDOW *\fP\fIwin, chtype \fP\fIch\fP\fB);\fR +.sp +\fBint bkgd(chtype \fP\fIch\fP\fB);\fR +.br +\fBint wbkgd(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fR +.sp +\fBchtype getbkgd(WINDOW *\fP\fIwin\fP\fB);\fR +.br +.SH DESCRIPTION +.SS bkgdset +The \fBbkgdset\fR and \fBwbkgdset\fR routines manipulate the +background of the named window. +The window background is a \fBchtype\fR consisting of +any combination of attributes (i.e., rendition) and a character. +The attribute part of the background is combined (OR'ed) with all non-blank +characters that are written into the window with \fBwaddch\fR. +Both the character and attribute parts of the background are combined with +the blank characters. +The background becomes a property of the +character and moves with the character through any scrolling and +insert/delete line/character operations. +.PP +To the extent possible on a particular terminal, +the attribute part of the background is displayed +as the graphic rendition of the character put on the screen. +.SS bkgd +.PP +The \fBbkgd\fR and \fBwbkgd\fR functions +set the background property of the current or specified window +and then apply this setting to every character position in that window. +According to X/Open Curses, it should do this: +.PP +.bP +The rendition of every character on the screen is changed to +the new background rendition. +.bP +Wherever the former background character +appears, it is changed to the new background character. +.PP +Neither X/Open Curses nor the SVr4 manual pages give details about +the way the rendition of characters on the screen is updated when +\fBbkgd\fP or \fBwbkgd\fP is used to change the background character. +.PP +This implementation, like SVr4 curses, does not store the background +and window attribute contributions to each cell separately. +It updates the rendition by comparing the character, non-color attributes and +colors contained in the background. +For each cell in the window, whether or not it is blank: +.bP +The library first compares the \fIcharacter\fP, +and if it matches the current character part of the background, +it replaces that with the new background character. +.bP +The library then checks if the cell uses color, +i.e., its color pair value is nonzero. +If not, it simply replaces the attributes and color pair in the +cell with those from the new background character. +.bP +If the cell uses color, +and that matches the color in the current background, +the library removes attributes +which may have come from the current background +and adds attributes from the new background. +It finishes by setting the cell +to use the color from the new background. +.bP +If the cell uses color, +and that does not match the color in the current background, +the library updates only the non-color attributes, +first removing those which may have come from the current background, +and then adding attributes from the new background. +.PP +If the background's character value is zero, a space is assumed. +.PP +If the terminal does not support color, +or if color has not been started with \fBstart_color\fP, +the new background character's color attribute will be ignored. +.SS getbkgd +.PP +The \fBgetbkgd\fR function returns the given window's current background +character/attribute pair. +.SH RETURN VALUE +.PP +These functions are described in the XSI Curses standard, Issue 4. +It specifies that \fBbkgd\fR and \fBwbkgd\fR return \fBERR\fR on failure, +but gives no failure conditions. +.PP +The routines \fBbkgd\fR and \fBwbkgd\fR return the integer \fBOK\fR, +unless the library has not been initialized. +.PP +In contrast, +the SVr4.0 manual says \fBbkgd\fR and \fBwbkgd\fR may return \fBOK\fP +"or a non-negative integer if \fBimmedok\fR is set", +which refers to the return value from \fBwrefresh\fP +(used to implement the immediate repainting). +The SVr4 curses \fBwrefresh\fP returns the number of characters +written to the screen during the refresh. +This implementation does not do that. +.SH NOTES +.PP +Note that \fBbkgdset\fR and \fBbkgd\fR may be macros. +.PP +X/Open Curses mentions that the character part of the background must +be a single-byte value. +This implementation, like SVr4, checks to ensure that, +and will reuse the old background character if the check fails. +.SH PORTABILITY +.PP +These functions are described in the XSI Curses standard, Issue 4 +(X/Open Curses). +.SH SEE ALSO +.na +.PP +\fBcurses\fR(3X), +\fBcurs_addch\fR(3X), +\fBcurs_attr\fR(3X), +\fBcurs_outopts\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_bkgrnd.3x b/deps/ncurses-6.3/man/curs_bkgrnd.3x similarity index 83% rename from deps/ncurses-5.9/man/curs_bkgrnd.3x rename to deps/ncurses-6.3/man/curs_bkgrnd.3x index 43112a7..84a2984 100644 --- a/deps/ncurses-5.9/man/curs_bkgrnd.3x +++ b/deps/ncurses-6.3/man/curs_bkgrnd.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 2002-2015,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 * @@ -26,7 +27,11 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_bkgrnd.3x,v 1.4 2010/12/04 18:49:20 tom Exp $ +.\" $Id: curs_bkgrnd.3x,v 1.12 2020/10/17 23:13:15 tom Exp $ +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .TH curs_bkgrnd 3X "" .SH NAME \fBbkgrnd\fR, @@ -42,22 +47,25 @@ \fBint bkgrnd(\fR\fB const cchar_t *\fR\fIwch\fR\fB);\fR .br \fBint wbkgrnd(\fR\fB WINDOW *\fR\fIwin\fR\fB, const cchar_t *\fR\fIwch\fR\fB);\fR -.br +.sp \fBvoid bkgrndset(const cchar_t *\fR\fIwch\fR \fB);\fR .br \fBvoid wbkgrndset(WINDOW *\fR\fIwin\fR\fB, const cchar_t *\fR\fIwch\fR\fB);\fR -.br +.sp \fBint getbkgrnd(cchar_t *\fR\fIwch\fR\fB);\fR .br \fBint wgetbkgrnd(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwch\fR\fB);\fR .br .SH DESCRIPTION +.SS bkgrndset +.PP The \fBbkgrndset\fR and \fBwbkgrndset\fR routines manipulate the background of the named window. The window background is a \fBcchar_t\fR consisting of any combination of attributes (i.e., rendition) and a complex character. The attribute part of the background is combined (OR'ed) with all non-blank -characters that are written into the window with \fBwaddch\fR. Both +characters that are written into the window with \fBwaddch\fR. +Both the character and attribute parts of the background are combined with the blank characters. The background becomes a property of the @@ -67,34 +75,47 @@ insert/delete line/character operations. To the extent possible on a particular terminal, the attribute part of the background is displayed as the graphic rendition of the character put on the screen. +.SS bkgrnd .PP The \fBbkgrnd\fR and \fBwbkgrnd\fR functions set the background property of the current or specified window and then apply this setting to every character position in that window: -.RS -.PP +.bP The rendition of every character on the screen is changed to the new background rendition. -.PP +.bP Wherever the former background character appears, it is changed to the new background character. -.RE +.SS getbkgrnd .PP The \fBgetbkgrnd\fR function returns the given window's current background character/attribute pair via the \fBwch\fR pointer. -. +If the given window pointer is null, +the character is not updated (but no error returned). .SH NOTES Note that \fBbkgrnd\fR, \fBbkgrndset\fR, and \fBgetbkgrnd\fR may be macros. -.SH RETURN VALUES +.PP +X/Open Curses does not provide details on how the rendition is changed. +This implementation follows the approach used in SVr4 curses, +which is explained in the manual page for \fBwbkgd\fP. +.SH RETURN VALUE +.PP The \fBbkgrndset\fR and \fBwbkgrndset\fR routines do not return a value. .PP Upon successful completion, the other functions return \fBOK\fR. -Otherwise, they return \fBERR\fR. +Otherwise, they return \fBERR\fR: +.bP A null window pointer is treated as an error. +.bP +A null character pointer is treated as an error. +.SH PORTABILITY +.PP +These functions are described in the XSI Curses standard, Issue 4 +(X/Open Curses). .SH SEE ALSO \fBcurses\fR(3X), \fBcurs_bkgd\fR(3X) diff --git a/deps/ncurses-6.3/man/curs_border.3x b/deps/ncurses-6.3/man/curs_border.3x new file mode 100644 index 0000000..7b41da5 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_border.3x @@ -0,0 +1,163 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2007,2010 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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_border.3x,v 1.27 2020/10/18 00:33:06 tom Exp $ +.TH curs_border 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.na +.hy 0 +.SH NAME +\fBborder\fR, +\fBwborder\fR, +\fBbox\fR, +\fBhline\fR, +\fBwhline\fR, +\fBvline\fR, +\fBwvline\fR, +\fBmvhline\fR, +\fBmvwhline\fR, +\fBmvvline\fR, +\fBmvwvline\fR \- create \fBcurses\fR borders, horizontal and vertical lines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint border(chtype \fP\fIls\fP\fB, chtype \fP\fIrs\fP\fB, chtype \fP\fIts\fP\fB, chtype \fP\fIbs\fP\fB,\fR + \fBchtype \fP\fItl\fP\fB, chtype \fP\fItr\fP\fB, chtype \fP\fIbl\fP\fB, chtype \fP\fIbr\fP\fB);\fR +.br +\fBint wborder(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIls\fP\fB, chtype \fP\fIrs\fP\fB,\fR + \fBchtype \fP\fIts\fP\fB, chtype \fP\fIbs\fP\fB, chtype \fP\fItl\fP\fB, chtype \fP\fItr\fP\fB,\fR + \fBchtype \fP\fIbl\fP\fB, chtype \fP\fIbr\fP\fB);\fR +.sp +\fBint box(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIverch\fP\fB, chtype \fP\fIhorch\fP\fB);\fR +.sp +\fBint hline(chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint whline(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint vline(chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint wvline(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.sp +\fBint mvhline(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvwhline(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvvline(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvwvline(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype \fP\fIch\fP\fB, int \fP\fIn\fP\fB);\fR +.br +.SH DESCRIPTION +The \fBborder\fR, \fBwborder\fR and \fBbox\fR routines +draw a box around the edges of a window. +Other than the window, each argument is a character with attributes: +.sp +.RS +\fIls\fR \- left side, +.br +\fIrs\fR \- right side, +.br +\fIts\fR \- top side, +.br +\fIbs\fR \- bottom side, +.br +\fItl\fR \- top left-hand corner, +.br +\fItr\fR \- top right-hand corner, +.br +\fIbl\fR \- bottom left-hand corner, and +.br +\fIbr\fR \- bottom right-hand corner. +.RE +.PP +If any of these arguments is zero, then the corresponding +default values (defined in \fBcurses.h\fR) are used instead: +.sp +.RS +\fBACS_VLINE\fR, +.br +\fBACS_VLINE\fR, +.br +\fBACS_HLINE\fR, +.br +\fBACS_HLINE\fR, +.br +\fBACS_ULCORNER\fR, +.br +\fBACS_URCORNER\fR, +.br +\fBACS_LLCORNER\fR, +.br +\fBACS_LRCORNER\fR. +.RE +.PP +\fBbox(\fR\fIwin\fR\fB, \fR\fIverch\fR\fB, \fR\fIhorch\fR\fB)\fR is a shorthand +for the following call: \fBwborder(\fR\fIwin\fR\fB,\fR \fIverch\fR\fB,\fR +\fIverch\fR\fB,\fR \fIhorch\fR\fB,\fR \fIhorch\fR\fB, 0, 0, 0, 0)\fR. +.PP +The \fBhline\fR and \fBwhline\fR functions draw a horizontal (left to right) +line using \fIch\fR starting at the current cursor position in the window. +The +current cursor position is not changed. +The line is at most \fIn\fR characters +long, or as many as fit into the window. +.PP +The \fBvline\fR and \fBwvline\fR functions draw a vertical (top to bottom) line +using \fIch\fR starting at the current cursor position in the window. +The +current cursor position is not changed. +The line is at most \fIn\fR characters +long, or as many as fit into the window. +.SH RETURN VALUE +All routines return the integer \fBOK\fR. +The SVr4.0 manual says "or a +non-negative integer if \fBimmedok\fR is set", but this appears to be an error. +.PP +X/Open does not define any error conditions. +This implementation returns an error +if the window pointer is null. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +The borders generated by these functions are \fIinside\fR borders (this +is also true of SVr4 curses, though the fact is not documented). +.PP +Note that \fBborder\fR and \fBbox\fR may be macros. +.SH PORTABILITY +These functions are described in the XSI Curses standard, Issue 4. +The standard specifies that they return \fBERR\fR on failure, +but specifies no error conditions. +.SH SEE ALSO +\fBcurses\fR(3X), \fBcurs_outopts\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_border_set.3x b/deps/ncurses-6.3/man/curs_border_set.3x similarity index 94% rename from deps/ncurses-5.9/man/curs_border_set.3x rename to deps/ncurses-6.3/man/curs_border_set.3x index 8f831dd..b156b77 100644 --- a/deps/ncurses-5.9/man/curs_border_set.3x +++ b/deps/ncurses-6.3/man/curs_border_set.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2010,2011 Free Software Foundation, Inc. * +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2011,2012 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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_border_set.3x,v 1.10 2011/01/15 12:56:18 tom Exp $ +.\" $Id: curs_border_set.3x,v 1.13 2020/02/02 23:34:34 tom Exp $ .TH curs_border_set 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .na .hy 0 .SH NAME @@ -187,7 +192,7 @@ Note that \fBvline_set\fR may be macros. .br -.SH RETURN VALUES +.SH RETURN VALUE .PP Upon successful completion, these functions return \fBOK\fR. @@ -196,7 +201,7 @@ Otherwise, they return .PP Functions using a window parameter return an error if it is null. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH SEE ALSO diff --git a/deps/ncurses-5.9/man/curs_clear.3x b/deps/ncurses-6.3/man/curs_clear.3x similarity index 81% rename from deps/ncurses-5.9/man/curs_clear.3x rename to deps/ncurses-6.3/man/curs_clear.3x index 305c608..d86acbd 100644 --- a/deps/ncurses-5.9/man/curs_clear.3x +++ b/deps/ncurses-6.3/man/curs_clear.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2016 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 * @@ -26,10 +27,14 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_clear.3x,v 1.14 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_clear.3x,v 1.20 2020/10/24 09:19:37 tom Exp $ .TH curs_clear 3X "" .na .hy 0 +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fBerase\fR, \fBwerase\fR, @@ -42,23 +47,23 @@ .ad .hy .SH SYNOPSIS -\fB# include <curses.h>\fR +\fB#include <curses.h>\fR .sp \fBint erase(void);\fR .br -\fBint werase(WINDOW *win);\fR -.br +\fBint werase(WINDOW *\fP\fIwin\fP\fB);\fR +.sp \fBint clear(void);\fR .br -\fBint wclear(WINDOW *win);\fR -.br +\fBint wclear(WINDOW *\fP\fIwin\fP\fB);\fR +.sp \fBint clrtobot(void);\fR .br -\fBint wclrtobot(WINDOW *win);\fR -.br +\fBint wclrtobot(WINDOW *\fP\fIwin\fP\fB);\fR +.sp \fBint clrtoeol(void);\fR .br -\fBint wclrtoeol(WINDOW *win);\fR +\fBint wclrtoeol(WINDOW *\fP\fIwin\fP\fB);\fR .br .SH DESCRIPTION The \fBerase\fR and \fBwerase\fR routines copy blanks to every @@ -70,7 +75,8 @@ cleared completely on the next call to \fBwrefresh\fR for that window and repainted from scratch. .PP The \fBclrtobot\fR and \fBwclrtobot\fR routines erase from the cursor to the -end of screen. That is, they erase all lines below the cursor in the window. +end of screen. +That is, they erase all lines below the cursor in the window. Also, the current line to the right of the cursor, inclusive, is erased. .PP The \fBclrtoeol\fR and \fBwclrtoeol\fR routines erase the current line @@ -80,28 +86,38 @@ Blanks created by erasure have the current background rendition (as set by \fBwbkgdset\fR) merged into them. .SH RETURN VALUE All routines return the integer \fBOK\fR on success and \fBERR\fP on failure. -The SVr4.0 manual says "or a -non-negative integer if \fBimmedok\fR is set", but this appears to be an error. .PP X/Open defines no error conditions. In this implementation, -functions using a window pointer parameter return an error if it is null. +.bP +functions using a window pointer parameter return an error if it is null +.bP +\fBwclrtoeol\fP returns an error +if the cursor position is about to wrap. .SH NOTES Note that \fBerase\fR, \fBwerase\fR, \fBclear\fR, \fBwclear\fR, \fBclrtobot\fR, and \fBclrtoeol\fR may be macros. .SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. The +These functions are described in the XSI Curses standard, Issue 4. +The standard specifies that they return \fBERR\fR on failure, but specifies no error conditions. .PP +The SVr4.0 manual says that these functions could +return "a non-negative integer if \fBimmedok\fR 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. +.PP Some historic curses implementations had, as an undocumented feature, the ability to do the equivalent of \fBclearok(..., 1)\fR by saying -\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR. This will not work under +\fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR. +This will not work under ncurses. .PP This implementation, and others such as Solaris, sets the current position to 0,0 after erasing -via \fBwerase()\fP and \fBwclear()\fP. +via \fBwerase\fP and \fBwclear\fP. That fact is not documented in other implementations, and may not be true of implementations which were not derived from SVr4 source. diff --git a/deps/ncurses-6.3/man/curs_color.3x b/deps/ncurses-6.3/man/curs_color.3x new file mode 100644 index 0000000..2b8b607 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_color.3x @@ -0,0 +1,550 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_color.3x,v 1.66 2021/09/04 19:42:20 tom Exp $ +.TH curs_color 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ds n 5 +.na +.hy 0 +.SH NAME +\fBstart_color\fR, +\fBhas_colors\fR, +\fBcan_change_color\fR, +\fBinit_pair\fR, +\fBinit_color\fR, +\fBinit_extended_pair\fR, +\fBinit_extended_color\fR, +\fBcolor_content\fR, +\fBpair_content\fR, +\fBextended_color_content\fR, +\fBextended_pair_content\fR, +\fBreset_color_pairs\fR, +\fBCOLOR_PAIR\fR, +\fBPAIR_NUMBER\fR \- \fBcurses\fR color manipulation routines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint start_color(void);\fR +.sp +\fBbool has_colors(void);\fR +.br +\fBbool can_change_color(void);\fR +.sp +\fBint init_pair(short \fP\fIpair\fP\fB, short \fP\fIf\fP\fB, short \fP\fIb\fP\fB);\fR +.br +\fBint init_color(short \fP\fIcolor\fP\fB, short \fP\fIr\fP\fB, short \fP\fIg\fP\fB, short \fP\fIb\fP\fB);\fR +.br +/* extensions */ +.br +\fBint init_extended_pair(int \fP\fIpair\fP\fB, int \fP\fIf\fP\fB, int \fP\fIb\fP\fB);\fR +.br +\fBint init_extended_color(int \fP\fIcolor\fP\fB, int \fP\fIr\fP\fB, int \fP\fIg\fP\fB, int \fP\fIb\fP\fB);\fR +.sp +\fBint color_content(short \fP\fIcolor\fP\fB, short *\fP\fIr\fP\fB, short *\fP\fIg\fP\fB, short *\fP\fIb\fP\fB);\fR +.br +\fBint pair_content(short \fP\fIpair\fP\fB, short *\fP\fIf\fP\fB, short *\fP\fIb\fP\fB);\fR +.br +/* extensions */ +.br +\fBint extended_color_content(int \fP\fIcolor\fP\fB, int *\fP\fIr\fP\fB, int *\fP\fIg\fP\fB, int *\fP\fIb\fP\fB);\fR +.br +\fBint extended_pair_content(int \fP\fIpair\fP\fB, int *\fP\fIf\fP\fB, int *\fP\fIb\fP\fB);\fR +.sp +/* extensions */ +.br +\fBvoid reset_color_pairs(void);\fR +.sp +\fBint COLOR_PAIR(int \fP\fIn\fP\fB);\fR +.br +\fBPAIR_NUMBER(\fR\fIattrs\fR\fB);\fP +.br +.SH DESCRIPTION +.SS Overview +\fBcurses\fR supports color attributes on terminals with that capability. +To use these routines \fBstart_color\fR must be called, usually right after +\fBinitscr\fR. +Colors are always used in pairs (referred to as color-pairs). +A color-pair consists of a foreground color (for characters) and a background +color (for the blank field on which the characters are displayed). +A programmer initializes a color-pair with the routine \fBinit_pair\fR. +After it has been initialized, \fBCOLOR_PAIR\fR(\fIn\fR) +can be used to convert the pair to a video attribute. +.PP +If a terminal is capable of redefining colors, the programmer can use the +routine \fBinit_color\fR to change the definition of a color. +The routines \fBhas_colors\fR and \fBcan_change_color\fR +return \fBTRUE\fR or \fBFALSE\fR, +depending on whether the terminal has color capabilities and whether the +programmer can change the colors. +The routine \fBcolor_content\fR allows a +programmer to extract the amounts of red, green, and blue components in an +initialized color. +The routine \fBpair_content\fR allows a programmer to find +out how a given color-pair is currently defined. +.SS Color Rendering +The \fBcurses\fP library combines these inputs to produce the +actual foreground and background colors shown on the screen: +.bP +per-character video attributes (e.g., via \fBwaddch\fP), +.bP +the window attribute (e.g., by \fBwattrset\fP), and +.bP +the background character (e.g., \fBwbkgdset\fP). +.PP +Per-character and window attributes are usually set by a parameter containing +video attributes including a color pair value. +Some functions such as \fBwattr_set\fP use a separate parameter which +is the color pair number. +.PP +The background character is a special case: it includes a character value, +just as if it were passed to \fBwaddch\fP. +.PP +The \fBcurses\fP library does the actual work of combining these color +pairs in an internal function called from \fBwaddch\fP: +.bP +If the parameter passed to \fBwaddch\fP is \fIblank\fP, +and it uses the special color pair 0, +.RS +.bP +\fBcurses\fP next checks the window attribute. +.bP +If the window attribute does not use color pair 0, +\fBcurses\fP uses the color pair from the window attribute. +.bP +Otherwise, \fBcurses\fP uses the background character. +.RE +.bP +If the parameter passed to \fBwaddch\fP is \fInot blank\fP, +or it does not use the special color pair 0, +\fBcurses\fP prefers the color pair from the parameter, +if it is nonzero. +Otherwise, it tries the window attribute next, and finally the +background character. +.PP +Some \fBcurses\fP functions such as \fBwprintw\fP call \fBwaddch\fP. +Those do not combine its parameter with a color pair. +Consequently those calls use only the window attribute or +the background character. +.SH CONSTANTS +.PP +In \fB<curses.h>\fR the following macros are defined. +These are the standard colors (ISO-6429). +\fBcurses\fR also assumes that \fBCOLOR_BLACK\fR is the default +background color for all terminals. +.PP +.nf + \fBCOLOR_BLACK\fR + \fBCOLOR_RED\fR + \fBCOLOR_GREEN\fR + \fBCOLOR_YELLOW\fR + \fBCOLOR_BLUE\fR + \fBCOLOR_MAGENTA\fR + \fBCOLOR_CYAN\fR + \fBCOLOR_WHITE\fR +.fi +.PP +Some terminals support more than the eight (8) \*(``ANSI\*('' colors. +There are no standard names for those additional colors. +.SH VARIABLES +.SS COLORS +is initialized by \fBstart_color\fP to the maximum number of colors +the terminal can support. +.SS COLOR_PAIRS +is initialized by \fBstart_color\fP to the maximum number of color pairs +the terminal can support. +.SH FUNCTIONS +.SS start_color +The \fBstart_color\fR routine requires no arguments. +It must be called if the programmer wants to use colors, and before any other +color manipulation routine is called. +It is good practice to call this routine right after \fBinitscr\fR. +\fBstart_color\fR does this: +.bP +It initializes two global variables, \fBCOLORS\fR and +\fBCOLOR_PAIRS\fR (respectively defining the maximum number of colors +and color-pairs the terminal can support). +.bP +It initializes the special color pair \fB0\fP to the default foreground +and background colors. +No other color pairs are initialized. +.bP +It restores the colors on the terminal to the values +they had when the terminal was just turned on. +.bP +If the terminal supports the \fBinitc\fP (\fBinitialize_color\fP) capability, +\fBstart_color\fP +initializes its internal table representing the +red, green, and blue components of the color palette. +.IP +The components depend on whether the terminal uses +CGA (aka \*(``ANSI\*('') or +HLS (i.e., the \fBhls\fP (\fBhue_lightness_saturation\fP) capability is set). +The table is initialized first for eight basic colors +(black, red, green, yellow, blue, magenta, cyan, and white), +using weights that depend upon the CGA/HLS choice. +For \*(``ANSI\*('' colors the weights are \fB680\fP or \fB0\fP +depending on whether the corresponding +red, green, or blue component is used or not. +That permits using \fB1000\fP to represent bold/bright colors. +After the initial eight colors +(if the terminal supports more than eight colors) +the components are initialized using the same pattern, +but with weights of \fB1000\fP. +SVr4 uses a similar scheme, but uses \fB1000\fP +for the components of the initial eight colors. +.IP +\fBstart_color\fP does not attempt to set the terminal's color palette +to match its built-in table. +An application may use \fBinit_color\fP to alter the internal table +along with the terminal's color. +.PP +These limits apply to color values and color pairs. +Values outside these limits are not legal, and may result in a runtime error: +.bP +\fBCOLORS\fP corresponds to the terminal database's \fBmax_colors\fR capability, +(see \fBterminfo\fR(\*n)). +.bP +color values are expected to be in the range \fB0\fP to \fBCOLORS\-1\fP, +inclusive (including \fB0\fP and \fBCOLORS\-1\fP). +.bP +a special color value \fB\-1\fP is used in certain extended functions +to denote the \fIdefault color\fP (see \fBuse_default_colors\fP(3X)). +.bP +\fBCOLOR_PAIRS\fP corresponds to +the terminal database's \fBmax_pairs\fP capability, +(see \fBterminfo\fR(\*n)). +.bP +legal color pair values are in the range \fB1\fP to \fBCOLOR_PAIRS\-1\fP, +inclusive. +.bP +color pair \fB0\fP is special; it denotes \*(``no color\*(''. +.IP +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 +.PP +The \fBhas_colors\fR routine requires no arguments. +It returns \fBTRUE\fR if +the terminal can manipulate colors; otherwise, it returns \fBFALSE\fR. +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. +.SS can_change_color +.PP +The \fBcan_change_color\fR routine requires no arguments. +It returns \fBTRUE\fR if the terminal supports colors +and can change their definitions; +other, it returns \fBFALSE\fR. +This routine facilitates writing terminal-independent programs. +.SS init_pair +.PP +The \fBinit_pair\fR routine changes the definition of a color-pair. +It takes three arguments: +the number of the color-pair to be changed, the foreground +color number, and the background color number. +For portable applications: +.bP +The first argument must be a legal color pair value. +If default colors are used (see \fBuse_default_colors\fP(3X)) +the upper limit is adjusted to allow for extra pairs which use +a default color in foreground and/or background. +.bP +The second and third arguments must be legal color values. +.PP +If the color-pair was previously initialized, +the screen is refreshed and all occurrences of that color-pair +are changed to the new definition. +.PP +As an extension, ncurses allows you to set color pair \fB0\fP via +the \fBassume_default_colors\fR(3X) routine, or to specify the use of +default colors (color number \fB\-1\fR) if you first invoke the +\fBuse_default_colors\fR(3X) routine. +.SS init_extended_pair +.PP +Because \fBinit_pair\fP uses signed \fBshort\fPs for its parameters, +that limits color-pairs and color-values +to 32767 on modern hardware. +The extension \fBinit_extended_pair\fP uses \fBint\fPs +for the color-pair and color-value, +allowing a larger number of colors to be supported. +.SS init_color +.PP +The \fBinit_color\fR routine changes the definition of a color. +It takes four arguments: +the number of the color to be changed followed by three RGB values +(for the amounts of red, green, and blue components). +.bP +The first argument must be a legal color value; +default colors are not allowed here. +(See the section \fBColors\fR for the default color index.) +.bP +Each of the last three arguments +must be a value in the range \fB0\fP through \fB1000\fP. +.PP +When \fBinit_color\fR is used, all +occurrences of that color on the screen immediately change to the new +definition. +.SS init_extended_color +.PP +Because \fBinit_color\fP uses signed \fBshort\fPs for its parameters, +that limits color-values and their red, green, and blue components +to 32767 on modern hardware. +The extension \fBinit_extended_color\fP uses \fBint\fPs +for the color value and +for setting the red, green, and blue components, +allowing a larger number of colors to be supported. +.SS color_content +.PP +The \fBcolor_content\fR routine gives programmers a way to find the intensity +of the red, green, and blue (RGB) components in a color. +It requires four arguments: the color number, and three addresses +of \fBshort\fRs for storing +the information about the amounts of red, green, and blue components in the +given color. +.bP +The first argument must be a legal color value, i.e., +\fB0\fP through \fBCOLORS\-1\fP, inclusive. +.bP +The values that are stored at the addresses pointed to by the +last three arguments are in the range +\fB0\fP (no component) through \fB1000\fP +(maximum amount of component), inclusive. +.SS extended_color_content +.PP +Because \fBcolor_content\fP uses signed \fBshort\fPs for its parameters, +that limits color-values and their red, green, and blue components +to 32767 on modern hardware. +The extension \fBextended_color_content\fP uses \fBint\fPs +for the color value and +for returning the red, green, and blue components, +allowing a larger number of colors to be supported. +.SS pair_content +.PP +The \fBpair_content\fR routine allows programmers to find out what colors a +given color-pair consists of. +It requires three arguments: the color-pair +number, and two addresses of \fBshort\fRs for storing the foreground and the +background color numbers. +.bP +The first argument must be a legal color value, +i.e., in the range \fB1\fP through \fBCOLOR_PAIRS\-1\fR, inclusive. +.bP +The values that are stored at the addresses pointed +to by the second and third arguments are in the +range \fB0\fP through \fBCOLORS\fR, inclusive. +.SS extended_pair_content +.PP +Because \fBpair_content\fP uses signed \fBshort\fPs for its parameters, +that limits color-pair and color-values to 32767 on modern hardware. +The extension \fBextended_pair_content\fP uses \fBint\fPs +for the color pair and +for returning the foreground and background colors, +allowing a larger number of colors to be supported. +.SS reset_color_pairs +.PP +The extension \fBreset_color_pairs\fP tells ncurses to discard all +of the color-pair information which was set with \fBinit_pair\fP. +It also touches the current- and standard-screens, allowing an application to +switch color palettes rapidly. +.SS PAIR_NUMBER +.PP +\fBPAIR_NUMBER(\fR\fIattrs\fR) extracts the color +value from its \fIattrs\fP parameter and returns it as a color pair number. +.SS COLOR_PAIR +Its inverse \fBCOLOR_PAIR(\fR\fIn\fR\fB)\fR converts a color pair number +to an attribute. +Attributes can hold color pairs in the range 0 to 255. +If you need a color pair larger than that, you must use functions +such as \fBattr_set\fP (which pass the color pair as a separate parameter) +rather than the legacy functions such as \fBattrset\fP. +.SH RETURN VALUE +The routines \fBcan_change_color\fR and \fBhas_colors\fR return \fBTRUE\fR +or \fBFALSE\fR. +.PP +All other routines return the integer \fBERR\fR upon failure and an \fBOK\fR +(SVr4 specifies only \*(``an integer value +other than \fBERR\fR\*('') upon successful completion. +.PP +X/Open defines no error conditions. +SVr4 does document some error conditions which apply in general: +.bP +This implementation will return \fBERR\fR on attempts to +use color values outside the range \fB0\fP to \fBCOLORS\fP\-1 +(except for the default colors extension), +or use color pairs outside the range \fB0\fP to \fBCOLOR_PAIRS\-1\fP. +.IP +Color values used in \fBinit_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 \fBinit_pair\fP +if \fBstart_color\fP was not called. +.bP +SVr4 does much the same, except that +it returns \fBERR\fP from \fBpair_content\fP if the pair was not initialized +using \fBinit_pairs\fP +and +it returns \fBERR\fP from \fBcolor_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 +\fBinit_color\fP +returns an error if the terminal does not support +this feature, e.g., if the \fBinitialize_color\fP capability is absent +from the terminal description. +.TP 5 +\fBstart_color\fP +returns an error if the color table cannot be allocated. +.RE +.SH NOTES +In the \fBncurses\fR implementation, there is a separate color activation flag, +color palette, color pairs table, +and associated \fBCOLORS\fP and \fBCOLOR_PAIRS\fP counts +for each screen; the \fBstart_color\fR function only affects the current +screen. +The SVr4/XSI interface is not really designed with this in mind, and +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 \fBcurs_bkgd\fR(3X). +.PP +Several caveats apply on older x86 machines +(e.g., i386, i486) with VGA-compatible graphics: +.bP +COLOR_YELLOW is actually brown. +To get yellow, use COLOR_YELLOW combined with the \fBA_BOLD\fR 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). +.bP +Color RGB values are not settable. +.SH HISTORY +.PP +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 \fBSCREEN\fP structure) +to \fBcur_term\fP (the \fBTERMINAL\fP structure), +but provided the same set of library functions. +.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 \fBchtype\fP data type (denoted by \fBA_COLOR\fP). +.PP +Other implementations of curses had different limits: +.bP +PCCurses (1987-1990) provided for only eight (8) colors. +.bP +PDCurses (1992-present) inherited the 8-color limitation from PCCurses, +but changed this to 256 in version 2.5 (2001), +along with changing \fBchtype\fP from 16-bits to 32-bits. +.bP +X/Open Curses (1992-present) +added a new structure \fBcchar_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. +.bP +ncurses (1992-present) uses eight bits for \fBA_COLOR\fP in \fBchtype\fP values. +.IP +Version 5.3 provided a wide-character interface (2002), +but left color-pairs as part of the attributes-field. +.IP +Since version 6 (2015), +ncurses uses a separate \fBint\fP for color-pairs in the \fBcchar_t\fP values. +When those color-pair values fit in 8 bits, +ncurses allows color-pairs to be manipulated +via the functions using \fBchtype\fP values. +.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 ncurses before version 6, +the NetBSD color-pair information is stored in +the attributes field of \fBcchar_t\fP, limiting the number of color-pairs +by the size of the bitfield. +.SH PORTABILITY +This implementation satisfies XSI Curses's minimum maximums +for \fBCOLORS\fR and \fBCOLOR_PAIRS\fR. +.PP +The \fBinit_pair\fP routine accepts negative values of foreground +and background color to support the \fBuse_default_colors\fR(3X) extension, +but only if that routine has been first invoked. +.PP +The assumption that \fBCOLOR_BLACK\fR is the default +background color for all terminals can be modified using the +\fBassume_default_colors\fR(3X) extension. +.PP +This implementation checks the pointers, +e.g., for the values returned by +\fBcolor_content\fP and \fBpair_content\fP, +and will treat those as optional parameters when null. +.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, +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. +.PP +The \fBreset_color_pairs\fP function is an extension of ncurses. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_initscr\fR(3X), +\fBcurs_attr\fR(3X), +\fBcurs_variables\fR(3X), +\fBdefault_colors\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_delch.3x b/deps/ncurses-6.3/man/curs_delch.3x similarity index 81% rename from deps/ncurses-5.9/man/curs_delch.3x rename to deps/ncurses-6.3/man/curs_delch.3x index 6dfc0a0..86f0984 100644 --- a/deps/ncurses-5.9/man/curs_delch.3x +++ b/deps/ncurses-6.3/man/curs_delch.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2006,2010 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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_delch.3x,v 1.11 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_delch.3x,v 1.15 2020/10/24 09:36:43 tom Exp $ .TH curs_delch 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME \fBdelch\fR, \fBwdelch\fR, @@ -38,30 +43,33 @@ .sp \fBint delch(void);\fR .br -\fBint wdelch(WINDOW *win);\fR +\fBint wdelch(WINDOW *\fP\fIwin\fP\fB);\fR .br -\fBint mvdelch(int y, int x);\fR +\fBint mvdelch(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br -\fBint mvwdelch(WINDOW *win, int y, int x);\fR +\fBint mvwdelch(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br .SH DESCRIPTION These routines delete the character under the cursor; all characters to the right of the cursor on the same line are moved to the left one position and the -last character on the line is filled with a blank. The cursor position does -not change (after moving to \fIy\fR, \fIx\fR, if specified). (This does not +last character on the line is filled with a blank. +The cursor position does +not change (after moving to \fIy\fR, \fIx\fR, if specified). +(This does not imply use of the hardware delete character feature.) .SH RETURN VALUE All routines return the integer \fBERR\fR upon failure and an \fBOK\fR (SVr4 specifies only "an integer value other than \fBERR\fR") upon successful completion. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH NOTES Note that \fBdelch\fR, \fBmvdelch\fR, and \fBmvwdelch\fR may be macros. .SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. The +These functions are described in the XSI Curses standard, Issue 4. +The standard specifies that they return \fBERR\fR on failure, but specifies no error conditions. .SH SEE ALSO diff --git a/deps/ncurses-5.9/man/curs_deleteln.3x b/deps/ncurses-6.3/man/curs_deleteln.3x similarity index 81% rename from deps/ncurses-5.9/man/curs_deleteln.3x rename to deps/ncurses-6.3/man/curs_deleteln.3x index 83cbdec..391c800 100644 --- a/deps/ncurses-5.9/man/curs_deleteln.3x +++ b/deps/ncurses-6.3/man/curs_deleteln.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2007,2010 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 * @@ -26,7 +27,7 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_deleteln.3x,v 1.13 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_deleteln.3x,v 1.17 2020/10/18 00:28:51 tom Exp $ .TH curs_deleteln 3X "" .SH NAME \fBdeleteln\fR, @@ -40,26 +41,31 @@ .sp \fBint deleteln(void);\fR .br -\fBint wdeleteln(WINDOW *win);\fR -.br -\fBint insdelln(int n);\fR -.br -\fBint winsdelln(WINDOW *win, int n);\fR +\fBint wdeleteln(WINDOW *\fP\fIwin\fP\fB);\fR +.sp +\fBint insdelln(int \fP\fIn\fP\fB);\fR .br +\fBint winsdelln(WINDOW *\fP\fIwin\fP\fB, int \fP\fIn\fP\fB);\fR +.sp \fBint insertln(void);\fR .br -\fBint winsertln(WINDOW *win);\fR +\fBint winsertln(WINDOW *\fP\fIwin\fP\fB);\fR .br .SH DESCRIPTION The \fBdeleteln\fR and \fBwdeleteln\fR 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. The cursor position does not change. +The bottom line of the window is cleared. +The cursor position does not change. .PP The \fBinsdelln\fR and \fBwinsdelln\fR routines, for positive \fIn\fR, insert -\fIn\fR lines into the specified window above the current line. The \fIn\fR -bottom lines are lost. For negative \fIn\fR, delete \fIn\fR lines (starting -with the one under the cursor), and move the remaining lines up. The bottom -\fIn\fR lines are cleared. The current cursor position remains the same. +\fIn\fR lines into the specified window above the current line. +The \fIn\fR +bottom lines are lost. +For negative \fIn\fR, delete \fIn\fR lines (starting +with the one under the cursor), and move the remaining lines up. +The bottom +\fIn\fR lines are cleared. +The current cursor position remains the same. .PP The \fBinsertln\fR and \fBwinsertln\fR routines insert a blank line above the current line and the bottom line is lost. @@ -72,14 +78,16 @@ X/Open defines no error conditions. In this implementation, if the window parameter is null, an error is returned. .SH PORTABILITY -These functions are described in the XSI Curses standard, Issue 4. The +These functions are described in the XSI Curses standard, Issue 4. +The standard specifies that they return \fBERR\fR on failure, but specifies no error conditions. .SH NOTES Note that all but \fBwinsdelln\fR may be 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 +terminal. +In fact, they will not use hardware line delete/insert unless \fBidlok(..., TRUE)\fR has been set on the current window. .SH SEE ALSO \fBcurses\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_extend.3x b/deps/ncurses-6.3/man/curs_extend.3x similarity index 79% rename from deps/ncurses-5.9/man/curs_extend.3x rename to deps/ncurses-6.3/man/curs_extend.3x index 9a52f93..a316a6b 100644 --- a/deps/ncurses-5.9/man/curs_extend.3x +++ b/deps/ncurses-6.3/man/curs_extend.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1999-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1999-2010,2016 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 * @@ -28,8 +29,12 @@ .\" .\" Author: Thomas E. Dickey 1999-on .\" -.\" $Id: curs_extend.3x,v 1.19 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_extend.3x,v 1.26 2021/03/13 13:43:05 tom Exp $ .TH curs_extend 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME \fBcurses_version\fP, \fBuse_extended_names\fP \- miscellaneous curses extensions @@ -39,18 +44,22 @@ .sp \fBconst char * curses_version(void);\fP .br -\fBint use_extended_names(bool enable);\fP +\fBint use_extended_names(bool \fP\fIenable\fP\fB);\fP .SH DESCRIPTION These functions are extensions to the curses library which do not fit easily into other categories. +.SS curses_version .PP -Use -.I curses_version() -to get the version number, including patch level of the library, e.g., -.B 5.0.19991023 +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 +.SS use_extended_names .PP -The -.I 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 @@ -60,9 +69,18 @@ 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. +.SH RETURN VALUE +.PP +\fBcurses_version\fP returns a pointer to static memory; you should not free +this in your application. +.PP +\fBuse_extended_names\fP returns the previous state, allowing you to +save this and restore it. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH SEE ALSO \fBcurs_getch\fR(3X), diff --git a/deps/ncurses-5.9/man/curs_get_wch.3x b/deps/ncurses-6.3/man/curs_get_wch.3x similarity index 81% rename from deps/ncurses-5.9/man/curs_get_wch.3x rename to deps/ncurses-6.3/man/curs_get_wch.3x index fe49849..115f068 100644 --- a/deps/ncurses-5.9/man/curs_get_wch.3x +++ b/deps/ncurses-6.3/man/curs_get_wch.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 2002-2016,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 * @@ -26,14 +27,26 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_get_wch.3x,v 1.7 2010/08/14 23:31:42 tom Exp $ +.\" $Id: curs_get_wch.3x,v 1.15 2021/05/22 22:33:19 tom Exp $ .TH curs_get_wch 3X "" +.na +.hy 0 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fBget_wch\fR, \fBwget_wch\fR, \fBmvget_wch\fR, \fBmvwget_wch\fR, \fBunget_wch\fR \- get (or push back) a wide character from curses terminal keyboard +.ad +.hy .SH SYNOPSIS \fB#include <curses.h>\fR .sp @@ -44,9 +57,10 @@ \fBint mvget_wch(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR .br \fBint mvwget_wch(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwch\fR\fB);\fR -.br +.sp \fBint unget_wch(const wchar_t \fR\fIwch\fR\fB);\fR .SH DESCRIPTION +.SS wget_wch The \fBget_wch\fR, \fBwget_wch\fR, @@ -76,13 +90,8 @@ If \fBkeypad\fR is enabled, these functions respond to the pressing of a function key by setting the object pointed to by \fIwch\fR -to the corresponding -\fBKEY_\fR -value defined -in -\fB<curses.h>\fR -and returning -\fBKEY_CODE_YES\fR. +to the keycode assigned to the function key, +and returning \fBKEY_CODE_YES\fR. If a character (such as escape) that could be the beginning of a function key is received, curses sets a timer. If the remainder @@ -92,6 +101,18 @@ For this reason, many terminals experience a delay between the time a user presses the escape key and the time the escape is returned to the program. .PP +The keycodes returned by these functions are the same as those +returned by \fBwgetch\fP: +.bP +The predefined function +keys are listed in \fB<curses.h>\fR as macros with values outside the range +of 8-bit characters. +Their names begin with \fBKEY_\fR. +.bP +Other (user-defined) function keys +which may be defined using \fBdefine_key\fP(3X) have no names, +but also are expected to have values outside the range of 8-bit characters. +.SS unget_wch The \fBunget_wch\fR function pushes the wide character @@ -106,6 +127,14 @@ If the program calls too many times without an intervening call to \fBget_wch\fR, the operation may fail. +.PP +Unlike \fBungetch\fP and \fBwgetch\fP, +\fBunget_wch\fP cannot distinguish special characters +returned by \fBwget_wch\fP from ordinary characters. +An application can push special keys +which it may read via \fBwget_wch\fP +by checking for the \fBKEY_CODE_YES\fR result, +and using \fBungetch\fP for those special keys. .SH NOTES The header file \fB<curses.h>\fR @@ -132,7 +161,7 @@ is typed, the program may produce undesirable results. .PP All functions except \fBwget_wch\fR and \fBunget_wch\fR may be macros. -.SH RETURN VALUES +.SH RETURN VALUE When \fBget_wch\fR, \fBwget_wch\fR, @@ -153,7 +182,7 @@ returns Otherwise, the function returns \fBERR\fR. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH SEE ALSO diff --git a/deps/ncurses-6.3/man/curs_get_wstr.3x b/deps/ncurses-6.3/man/curs_get_wstr.3x new file mode 100644 index 0000000..112208a --- /dev/null +++ b/deps/ncurses-6.3/man/curs_get_wstr.3x @@ -0,0 +1,219 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2012,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_get_wstr.3x,v 1.21 2020/10/17 23:17:24 tom Exp $ +.TH curs_get_wstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBget_wstr\fR, +\fBgetn_wstr\fR, +\fBwget_wstr\fR, +\fBwgetn_wstr\fR, +\fBmvget_wstr\fR, +\fBmvgetn_wstr\fR, +\fBmvwget_wstr\fR, +\fBmvwgetn_wstr\fR \- get an array of wide characters from a curses terminal keyboard +.ad +.hy +.SH SYNOPSIS +.nf +\fB#include <curses.h>\fR +.sp +\fBint get_wstr(wint_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint getn_wstr(wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint wget_wstr(WINDOW *\fR\fIwin\fR\fB, wint_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint wgetn_wstr(WINDOW *\fR\fIwin\fR\fB, wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.sp +\fBint mvget_wstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint mvgetn_wstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint mvwget_wstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint mvwgetn_wstr(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wint_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.fi +.SH DESCRIPTION +The effect of +\fBget_wstr\fR +is as though a series of calls +to +\fBget_wch\fR(3X) +were made, until a newline, other end-of-line, +or end-of-file condition is processed. +An end-of-file condition is represented by \fBWEOF\fR, +as defined in \fB<wchar.h>\fR. +The newline and end-of-line conditions are represented +by the \fB\\n\fR \fBwchar_t\fR value. +In all instances, the end of the string is terminated by a null \fBwchar_t\fR. +The routine places resulting values in the area pointed to by \fIwstr\fR. +.PP +The user's erase and kill characters are interpreted. +If keypad +mode is on for the window, \fBKEY_LEFT\fR and \fBKEY_BACKSPACE\fR +are both considered equivalent to the user's kill character. +.PP +Characters input are echoed only if \fBecho\fR is currently on. +In that case, +backspace is echoed as deletion of the previous character (typically a left +motion). +.PP +The effect of +\fBwget_wstr\fR +is as though a series of +calls to +\fBwget_wch\fR +were made. +.PP +The effect of +\fBmvget_wstr\fR +is as though a call to +\fBmove\fR +and then a series of calls to +\fBget_wch\fR +were +made. +.PP +The effect of +\fBmvwget_wstr\fR +is as though a call to +\fBwmove\fR +and then a series of calls to +\fBwget_wch\fR +were made. +.PP +The +\fBgetn_wstr\fR, +\fBmvgetn_wstr\fR, +\fBmvwgetn_wstr\fR, and +\fBwgetn_wstr\fR +functions are identical +to the +\fBget_wstr\fR, +\fBmvget_wstr\fR, +\fBmvwget_wstr\fR, and +\fBwget_wstr\fR +functions, respectively, +except that the +\fB*n_*\fR +versions read at most +\fIn\fR +characters, letting the application prevent overflow of the +input buffer. +.SH NOTES +Using +\fBget_wstr\fR, +\fBmvget_wstr\fR, +\fBmvwget_wstr\fR, or +\fBwget_wstr\fR +to read a line that +overflows the array pointed to by +\fBwstr\fR +causes undefined +results. +The use of +\fBgetn_wstr\fR, +\fBmvgetn_wstr\fR, +\fBmvwgetn_wstr\fR, or +\fBwgetn_wstr\fR, respectively, is recommended. +.PP +These functions cannot return \fBKEY_\fR values because there +is no way to distinguish a \fBKEY_\fR value from a valid \fBwchar_t\fR value. +.PP +All of these routines except \fBwgetn_wstr\fR may be macros. +.SH RETURN VALUE +All of these functions return \fBOK\fR upon successful completion. +Otherwise, they return \fBERR\fR. +.PP +Functions using a window parameter return an error if it is null. +.RS +.TP 5 +\fBwgetn_wstr\fP +returns an error if the associated call to \fBwget_wch\fP failed. +.RE +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH PORTABILITY +These functions are described in The Single Unix Specification, Version 2. +No error conditions are defined. +This implementation returns \fBERR\fP if the window pointer is null, +or if the lower-level \fBwget_wch\fR 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\fR followed by a null \fBwchar_t\fR. +.PP +X/Open curses documented these functions to pass an array of \fBwchar_t\fR +in 1997, but that was an error because of this part of the description: +.RS +.PP +The effect of \fIget_wstr()\fP is as though a series of calls to +\fIget_wch()\fP were made, until a newline character, end-of-line character, or +end-of-file character is processed. +.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\fR, following the standard. +.PP +X/Open Curses, Issue 7 (2009) is unclear regarding whether +the terminating \fInull \fP\fBwchar_t\fP +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. +.PP +X/Open Curses does not specify what happens if the length \fIn\fP is negative. +.bP +For analogy with \fBwgetnstr\fP, +ncurses 6.2 uses a limit (based on \fBLINE_MAX\fP). +.bP +Some other implementations (such as Solaris xcurses) do the same, +while others (PDCurses) do not allow this. +.bP +NetBSD 7 curses imitates ncurses 6.1 in this regard, +treating a \fB\-1\fP as an indefinite number of characters. +.SH SEE ALSO +Functions: +\fBcurses\fR(3X), +\fBcurs_get_wch\fR(3X), +\fBcurs_getstr\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_getcchar.3x b/deps/ncurses-6.3/man/curs_getcchar.3x new file mode 100644 index 0000000..cc127e2 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_getcchar.3x @@ -0,0 +1,202 @@ +.\"*************************************************************************** +.\" Copyright 2019-2020,2021 Thomas E. Dickey * +.\" Copyright 2001-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_getcchar.3x,v 1.25 2021/06/17 21:26:02 tom Exp $ +.TH curs_getcchar 3X "" +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBgetcchar\fP, +\fBsetcchar\fP \- Get a wide character string and rendition from a \fBcchar_t\fP or set a \fBcchar_t\fP from a wide-character string +.SH SYNOPSIS +\fB#include <curses.h>\fP +.sp +\fBint getcchar(\fP +.br +.B " const cchar_t *\fIwcval\fP," +.br +.B " wchar_t *\fIwch\fP," +.br +.B " attr_t *\fIattrs\fP," +.br +.B " short *\fIcolor_pair\fP," +.br +.B " void *\fIopts\fP );" +.sp +.B "int setcchar(" +.br +.B " cchar_t *\fIwcval\fP," +.br +.B " const wchar_t *\fIwch\fP," +.br +.B " const attr_t \fIattrs\fP," +.br +.B " short \fIcolor_pair\fP," +.br +.B " const void *\fIopts\fP );" +.SH DESCRIPTION +.SS getcchar +.PP +The \fBgetcchar\fP function gets a wide-character string +and rendition from a \fBcchar_t\fP argument. +When \fIwch\fP is not a null pointer, +the \fBgetcchar\fP function does the following: +.bP +Extracts information from a \fBcchar_t\fP value \fIwcval\fP +.bP +Stores the character attributes in the location pointed to by \fIattrs\fP +.bP +Stores the color-pair in the location pointed to by \fIcolor_pair\fP +.bP +Stores the wide-character string, +characters referenced by \fIwcval\fP, into the array pointed to by \fIwch\fP. +.PP +When +\fIwch\fP +is a null pointer, the +\fBgetcchar\fP +function does the following: +.bP +Obtains the number of wide characters pointed to by \fIwcval\fP +.bP +Does not change the data referenced by +\fIattrs\fP +or +\fIcolor_pair\fP +.SS setcchar +.PP +The \fBsetcchar\fP function initializes the location pointed to by \fIwcval\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 \fIwch\fP. +The string must be L'\\0' terminated, +contain at most one spacing character, +which must be the first. +.IP +Up to \fBCCHARW_MAX\fP\-1 nonspacing characters may follow. +Additional nonspacing characters are ignored. +.IP +The string may contain a single control character instead. +In that case, no nonspacing characters are allowed. +.SH EXTENSIONS +.PP +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: +.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. +.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. +.SH NOTES +.PP +The \fIwcval\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 \fIwcval\fP is constructed by any other means, the effect is unspecified. +.SH RETURN VALUE +.PP +When \fIwch\fP is a null pointer, +\fBgetcchar\fP returns the number of wide characters referenced by +\fIwcval\fP, +including one for a trailing null. +.PP +When \fIwch\fP is not a null pointer, +\fBgetcchar\fP returns \fBOK\fP upon successful completion, +and \fBERR\fP otherwise. +.PP +Upon successful completion, \fBsetcchar\fP returns \fBOK\fP. +Otherwise, it returns \fBERR\fP. +.SH PORTABILITY +The \fBCCHARW_MAX\fP symbol is specific to ncurses. +X/Open Curses does not provide details for the layout of the \fBcchar_t\fP +structure. +It tells what data are stored in it: +.bP +a spacing character (\fBwchar_t\fP, i.e., 32-bits). +.bP +non-spacing characters (again, \fBwchar_t\fP's). +.bP +attributes (at least 16 bits, inferred from the various ACS- and WACS-flags). +.bP +color pair (at least 16 bits, inferred from the \fBunsigned short\fP type). +.PP +The non-spacing characters are optional, +in the sense that zero or more may be stored in a \fBcchar_t\fP. +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. +.RE +.PP +The Unix implementations at the time follow 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. +.bP +HP-UX\ 10 uses an opaque structure with 28 bytes, +which is large enough for the 6 \fBwchar_t\fP values. +.bP +Solaris xpg4 curses uses a single array of 6 \fBwchar_t\fP 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). +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. +.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. +.SH SEE ALSO +.PP +Functions: +\fBcurs_attr\fR(3X), +\fBcurs_color\fR(3X), +\fBcurses\fR(3X), +\fBwcwidth\fR(3). diff --git a/deps/ncurses-6.3/man/curs_getch.3x b/deps/ncurses-6.3/man/curs_getch.3x new file mode 100644 index 0000000..a8c4bc1 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_getch.3x @@ -0,0 +1,418 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_getch.3x,v 1.57 2020/12/19 21:38:20 tom Exp $ +.TH curs_getch 3X "" +.na +.hy 0 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBgetch\fR, +\fBwgetch\fR, +\fBmvgetch\fR, +\fBmvwgetch\fR, +\fBungetch\fR, +\fBhas_key\fR \- get (or push back) characters from \fBcurses\fR terminal keyboard +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.PP +\fBint getch(void);\fR +.br +\fBint wgetch(WINDOW *\fP\fIwin);\fR +.sp +\fBint mvgetch(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.br +\fBint mvwgetch(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.sp +\fBint ungetch(int \fP\fIch\fP\fB);\fR +.sp +/* extension */ +.br +\fBint has_key(int \fP\fIch\fP\fB);\fR +.br +.SH DESCRIPTION +.SS Reading characters +The \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR and \fBmvwgetch\fR, routines read +a character from the window. +In no-delay mode, if no input is waiting, the value \fBERR\fR is returned. +In delay mode, the program waits until the system +passes text through to the program. +Depending on the setting of \fBcbreak\fR, +this is after one character (cbreak mode), +or after the first newline (nocbreak mode). +In half-delay mode, +the program waits until a character is typed or the +specified timeout has been reached. +.PP +If \fBecho\fR is enabled, and the window is not a pad, +then the character will also be echoed into the +designated window according to the following rules: +.bP +If the character is the current erase character, left arrow, or backspace, +the cursor is moved one space to the left and that screen position is erased +as if \fBdelch\fR had been called. +.bP +If the character value is any other \fBKEY_\fR define, the user is alerted +with a \fBbeep\fR call. +.bP +If the character is a carriage-return, +and if \fBnl\fP is enabled, +it is translated to a line-feed after echoing. +.bP +Otherwise the character is simply output to the screen. +.PP +If the window is not a pad, and it has been moved or modified since the last +call to \fBwrefresh\fR, \fBwrefresh\fR will be called before another character +is read. +.SS Keypad mode +.PP +If \fBkeypad\fR is \fBTRUE\fR, and a function key is pressed, the token for +that function key is returned instead of the raw characters: +.bP +The predefined function +keys are listed in \fB<curses.h>\fR as macros with values outside the range +of 8-bit characters. +Their names begin with \fBKEY_\fR. +.bP +Other (user-defined) function keys which may be defined +using \fBdefine_key\fP(3X) +have no names, but also are expected to have values outside the range of +8-bit characters. +.PP +Thus, a variable +intended to hold the return value of a function key must be of short size or +larger. +.PP +When a character that could be the beginning of a function key is received +(which, on modern terminals, means an escape character), +\fBcurses\fR sets a timer. +If the remainder of the sequence does not come in within the designated +time, the character is passed through; +otherwise, the function key value is returned. +For this reason, many terminals experience a delay between the time +a user presses the escape key and the escape is returned to the program. +.PP +In \fBncurses\fP, the timer normally expires after +the value in \fBESCDELAY\fP (see \fBcurs_variables\fP(3X)). +If \fBnotimeout\fP is \fBTRUE\fP, the timer does not expire; +it is an infinite (or very large) value. +Because function keys usually begin with an escape character, +the terminal may appear to hang in notimeout mode after pressing the escape key +until another key is pressed. +.SS Ungetting characters +.PP +The \fBungetch\fR routine places \fIch\fR back onto the input queue to be +returned by the next call to \fBwgetch\fR. +There is just one input queue for all windows. +.PP +.SS Predefined key-codes +The following special keys are defined in \fB<curses.h>\fR. +.bP +Except for the special case \fBKEY_RESIZE\fP, +it is necessary to enable \fBkeypad\fR for \fBgetch\fP to return these codes. +.bP +Not all of these are necessarily supported on any particular terminal. +.bP +The naming convention may seem obscure, with some apparent +misspellings (such as \*(``RSUME\*('' for \*(``resume\*(''). +The names correspond to the long terminfo capability names for the keys, +and were defined long ago, in the 1980s. +.PP +.TS +center tab(/) ; +l l . +\fIName\fR/\fIKey\fR \fIname\fR +_ +KEY_BREAK/Break key +KEY_DOWN/The four arrow keys ... +KEY_UP +KEY_LEFT +KEY_RIGHT +KEY_HOME/Home key (upward+left arrow) +KEY_BACKSPACE/Backspace +KEY_F0/T{ +Function keys; space for 64 keys is reserved. +T} +KEY_F(\fIn\fR)/T{ +For 0 \(<= \fIn\fR \(<= 63 +T} +KEY_DL/Delete line +KEY_IL/Insert line +KEY_DC/Delete character +KEY_IC/Insert char or enter insert mode +KEY_EIC/Exit insert char mode +KEY_CLEAR/Clear screen +KEY_EOS/Clear to end of screen +KEY_EOL/Clear to end of line +KEY_SF/Scroll 1 line forward +KEY_SR/Scroll 1 line backward (reverse) +KEY_NPAGE/Next page +KEY_PPAGE/Previous page +KEY_STAB/Set tab +KEY_CTAB/Clear tab +KEY_CATAB/Clear all tabs +KEY_ENTER/Enter or send +KEY_SRESET/Soft (partial) reset +KEY_RESET/Reset or hard reset +KEY_PRINT/Print or copy +KEY_LL/Home down or bottom (lower left) +KEY_A1/Upper left of keypad +KEY_A3/Upper right of keypad +KEY_B2/Center of keypad +KEY_C1/Lower left of keypad +KEY_C3/Lower right of keypad +KEY_BTAB/Back tab key +KEY_BEG/Beg(inning) key +KEY_CANCEL/Cancel key +KEY_CLOSE/Close key +KEY_COMMAND/Cmd (command) key +KEY_COPY/Copy key +KEY_CREATE/Create key +KEY_END/End key +KEY_EXIT/Exit key +KEY_FIND/Find key +KEY_HELP/Help key +KEY_MARK/Mark key +KEY_MESSAGE/Message key +KEY_MOUSE/Mouse event read +KEY_MOVE/Move key +KEY_NEXT/Next object key +KEY_OPEN/Open key +KEY_OPTIONS/Options key +KEY_PREVIOUS/Previous object key +KEY_REDO/Redo key +KEY_REFERENCE/Ref(erence) key +KEY_REFRESH/Refresh key +KEY_REPLACE/Replace key +KEY_RESIZE/Screen resized +KEY_RESTART/Restart key +KEY_RESUME/Resume key +KEY_SAVE/Save key +KEY_SBEG/Shifted beginning key +KEY_SCANCEL/Shifted cancel key +KEY_SCOMMAND/Shifted command key +KEY_SCOPY/Shifted copy key +KEY_SCREATE/Shifted create key +KEY_SDC/Shifted delete char key +KEY_SDL/Shifted delete line key +KEY_SELECT/Select key +KEY_SEND/Shifted end key +KEY_SEOL/Shifted clear line key +KEY_SEXIT/Shifted exit key +KEY_SFIND/Shifted find key +KEY_SHELP/Shifted help key +KEY_SHOME/Shifted home key +KEY_SIC/Shifted input key +KEY_SLEFT/Shifted left arrow key +KEY_SMESSAGE/Shifted message key +KEY_SMOVE/Shifted move key +KEY_SNEXT/Shifted next key +KEY_SOPTIONS/Shifted options key +KEY_SPREVIOUS/Shifted prev key +KEY_SPRINT/Shifted print key +KEY_SREDO/Shifted redo key +KEY_SREPLACE/Shifted replace key +KEY_SRIGHT/Shifted right arrow +KEY_SRSUME/Shifted resume key +KEY_SSAVE/Shifted save key +KEY_SSUSPEND/Shifted suspend key +KEY_SUNDO/Shifted undo key +KEY_SUSPEND/Suspend key +KEY_UNDO/Undo key +.TE +.PP +Keypad is arranged like this: +.br +.TS +center allbox tab(/) ; +c c c . +\fBA1\fR/\fBup\fR/\fBA3\fR +\fBleft\fR/\fBB2\fR/\fBright\fR +\fBC1\fR/\fBdown\fR/\fBC3\fR +.TE +.sp +A few of these predefined values do \fInot\fP correspond to a real key: +.bP +.B KEY_RESIZE +is returned when the \fBSIGWINCH\fP signal has been detected +(see \fBinitscr\fP(3X) and \fBresizeterm\fR(3X)). +This code is returned whether or not \fBkeypad\fP has been enabled. +.bP +.B KEY_MOUSE +is returned for mouse-events (see \fBcurs_mouse\fR(3X)). +This code relies upon whether or not \fBkeypad\fP(3X) has been enabled, +because (e.g., with \fIxterm\fP mouse prototocol) ncurses must +read escape sequences, +just like a function key. +.SS Testing key-codes +.PP +The \fBhas_key\fR routine takes a key-code value from the above list, and +returns \fBTRUE\fP or \fBFALSE\fP according to whether +the current terminal type recognizes a key with that value. +.PP +The library also supports these extensions: +.RS 3 +.TP 5 +.B define_key +defines a key-code for a given string (see \fBdefine_key\fP(3X)). +.TP 5 +.B key_defined +checks if there is a key-code defined for a given +string (see \fBkey_defined\fP(3X)). +.RE +.PP +.SH RETURN VALUE +All routines return the integer \fBERR\fR upon failure and an integer value +other than \fBERR\fR (\fBOK\fR in the case of \fBungetch\fP) upon successful +completion. +.RS 3 +.TP 5 +\fBungetch\fP +returns \fBERR\fP +if there is no more room in the FIFO. +.TP +\fBwgetch\fP +returns \fBERR\fP +if the window pointer is null, or +if its timeout expires without having any data, or +if the execution was interrupted by a signal (\fBerrno\fR will be set to +\fBEINTR\fR). +.RE +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +Use of the escape key by a programmer for a single character function is +discouraged, as it will cause a delay of up to one second while the +keypad code looks for a following function-key sequence. +.PP +Some keys may be the same as commonly used control +keys, e.g., +\fBKEY_ENTER\fP versus control/M, +\fBKEY_BACKSPACE\fP versus control/H. +Some curses implementations may differ according to whether they +treat these control keys specially (and ignore the terminfo), or +use the terminfo definitions. +\fBNcurses\fR uses the terminfo definition. +If it says that \fBKEY_ENTER\fP is control/M, +\fBgetch\fR will return \fBKEY_ENTER\fP +when you press control/M. +.PP +Generally, \fBKEY_ENTER\fP denotes the character(s) sent by the \fIEnter\fP +key on the numeric keypad: +.bP +the terminal description lists the most useful keys, +.bP +the \fIEnter\fP key on the regular keyboard is already handled by +the standard ASCII characters for carriage-return and line-feed, +.bP +depending on whether \fBnl\fP or \fBnonl\fP was called, +pressing \*(``Enter\*('' on the regular keyboard +may return either a carriage-return or line-feed, and finally +.bP +\*(``Enter or send\*('' is the standard description for this key. +.PP +When using \fBgetch\fR, \fBwgetch\fR, \fBmvgetch\fR, or +\fBmvwgetch\fR, nocbreak mode (\fBnocbreak\fR) and echo mode +(\fBecho\fR) should not be used at the same time. +Depending on the +state of the tty driver when each character is typed, the program may +produce undesirable results. +.PP +Note that \fBgetch\fR, \fBmvgetch\fR, and \fBmvwgetch\fR may be macros. +.PP +Historically, the set of keypad macros was largely defined by the extremely +function-key-rich keyboard of the AT&T 7300, aka 3B1, aka Safari 4. +Modern +personal computers usually have only a small subset of these. +IBM PC-style +consoles typically support little more than \fBKEY_UP\fR, \fBKEY_DOWN\fR, +\fBKEY_LEFT\fR, \fBKEY_RIGHT\fR, \fBKEY_HOME\fR, \fBKEY_END\fR, +\fBKEY_NPAGE\fR, \fBKEY_PPAGE\fR, and function keys 1 through 12. +The Ins key +is usually mapped to \fBKEY_IC\fR. +.SH PORTABILITY +The *get* functions are described in the XSI Curses standard, Issue 4. +They +read single-byte characters only. +The standard specifies that they return +\fBERR\fR on failure, but specifies no error conditions. +.PP +The echo behavior of these functions on input of \fBKEY_\fR or backspace +characters was not specified in the SVr4 documentation. +This description is +adopted from the XSI Curses standard. +.PP +The behavior of \fBgetch\fR and friends in the presence of handled signals is +unspecified in the SVr4 and XSI Curses documentation. +Under historical curses +implementations, it varied depending on whether the operating system's +implementation of handled signal receipt interrupts a \fBread\fR(2) call in +progress or not, and also (in some implementations) depending on whether an +input timeout or non-blocking mode has been set. +.PP +\fBKEY_MOUSE\fP is mentioned in XSI Curses, along with a few related +terminfo capabilities, but no higher-level functions use the feature. +The implementation in ncurses is an extension. +.PP +\fBKEY_RESIZE\fP is an extension first implemented for ncurses. +NetBSD curses later added this extension. +.PP +Programmers concerned about portability should be prepared for either of two +cases: (a) signal receipt does not interrupt \fBgetch\fR; (b) signal receipt +interrupts \fBgetch\fR and causes it to return \fBERR\fP with \fBerrno\fR set to +\fBEINTR\fR. +.PP +The \fBhas_key\fR function is unique to \fBncurses\fR. +We recommend that +any code using it be conditionalized on the \fBNCURSES_VERSION\fR feature macro. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_inopts\fR(3X), +\fBcurs_mouse\fR(3X), +\fBcurs_move\fR(3X), +\fBcurs_outopts\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_variables\fR(3X), +\fBresizeterm\fR(3X). +.PP +Comparable functions in the wide-character (ncursesw) library are +described in +\fBcurs_get_wch\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_getstr.3x b/deps/ncurses-6.3/man/curs_getstr.3x new file mode 100644 index 0000000..4a1cc89 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_getstr.3x @@ -0,0 +1,246 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_getstr.3x,v 1.33 2021/05/22 21:36:35 tom Exp $ +.TH curs_getstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBgetstr\fR, +\fBgetnstr\fR, +\fBwgetstr\fR, +\fBwgetnstr\fR, +\fBmvgetstr\fR, +\fBmvgetnstr\fR, +\fBmvwgetstr\fR, +\fBmvwgetnstr\fR \- accept character strings from \fBcurses\fR terminal keyboard +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint getstr(char *\fP\fIstr\fP\fB);\fR +.br +\fBint getnstr(char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint wgetstr(WINDOW *\fP\fIwin\fP\fB, char *\fP\fIstr\fP\fB);\fR +.br +\fBint wgetnstr(WINDOW *\fP\fIwin\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.sp +\fBint mvgetstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB);\fR +.br +\fBint mvwgetstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB);\fR +.br +\fBint mvgetnstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvwgetnstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +.SH DESCRIPTION +The function \fBgetstr\fR is equivalent to a series of calls to \fBgetch\fR, +until a newline or carriage return is received (the terminating character is +not included in the returned string). +.\" X/Open says also until EOf +.\" X/Open says then an EOS is added to the result +.\" X/Open doesn't mention n<0 +The resulting value is placed in the +area pointed to by the character pointer \fIstr\fR, +followed by a NUL. +.PP +The \fBgetnstr\fR function reads +from the \fIstdscr\fR default window. +The other functions, such as \fBwgetnstr\fP, +read from the window given as a parameter. +.PP +\fBgetnstr\fR reads at most \fIn\fR characters, thus preventing a possible +overflow of the input buffer. +Any attempt to enter more characters (other +than the terminating newline or carriage return) causes a beep. +Function +keys also cause a beep and are ignored. +.PP +The user's \fIerase\fP and \fIkill\fP characters are interpreted: +.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\fR and \fBKEY_BACKSPACE\fR +are both considered equivalent to the user's erase character. +.bP +The \fIkill\fP character (e.g., \fB^U\fP) erases the entire buffer, +leaving the cursor at the beginning of the buffer. +.PP +Characters input are echoed only if \fBecho\fR is currently on. +In that case, +backspace is echoed as deletion of the previous character (typically a left +motion). +.SH RETURN VALUE +All routines return the integer \fBERR\fR upon failure and an \fBOK\fR (SVr4 +specifies only \*(``an integer value other than \fBERR\fR\*('') upon successful +completion. +.PP +X/Open defines no error conditions. +.PP +In this implementation, +these functions return an error +if the window pointer is null, or +if its timeout expires without having any data. +.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. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +Note that \fBgetstr\fR, \fBmvgetstr\fR, and \fBmvwgetstr\fR may be macros. +.SH PORTABILITY +These functions are described in the XSI Curses standard, Issue 4. +They read single-byte characters only. +The standard does not define any error conditions. +This implementation returns \fBERR\fP if the window pointer is null, +or if the lower-level \fBwgetch\fR(3X) call returns an \fBERR\fP. +.PP +SVr3 and early SVr4 curses implementations did not reject function keys; +the SVr4.0 documentation claimed that \*(``special keys\*('' +(such as function keys, +\*(``home\*('' key, +\*(``clear\*('' key, +\fIetc\fR.) 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). +.PP +The functions \fBgetnstr\fR, \fBmvgetnstr\fR, and \fBmvwgetnstr\fR were +present but not documented in SVr4. +.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 do, some do not count it: +.bP +ncurses 6.1 and PDCurses do not count the NUL in the given limit, while +.bP +Solaris SVr4 and NetBSD curses count the NUL as part of the limit. +.bP +Solaris xcurses provides both: +its wide-character \fBwget_nstr\fP reserves a NUL, +but its \fBwgetnstr\fP does not count the NUL consistently. +.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. +.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. +.bP +ncurses (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. +.bP +ncurses 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, +ncurses 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: +.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. +.bP +It also obtains the \fIerase\fP and \fIkill\fP characters +from \fBerasechar\fP and \fBkillchar\fP, respectively. +.bP +On return, \fBgetnstr\fP restores the modes to their previous values. +.PP +Other implementations differ in their treatment of special 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. +.bP +The original ncurses (as pcurses 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 ncurses. +.IP +Since 1995, ncurses has provided signal handlers for INTR and QUIT +(e.g., \fB^C\fP or \fB^\\\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. +.bP +Starting in 2021 (ncurses 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. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_getch\fR(3X), +\fBcurs_termattrs\fR(3X), +\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_getyx.3x b/deps/ncurses-6.3/man/curs_getyx.3x similarity index 88% rename from deps/ncurses-5.9/man/curs_getyx.3x rename to deps/ncurses-6.3/man/curs_getyx.3x index 980968e..e6ff670 100644 --- a/deps/ncurses-5.9/man/curs_getyx.3x +++ b/deps/ncurses-6.3/man/curs_getyx.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2020 Thomas E. Dickey * +.\" Copyright 1998-2007,2010 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 * @@ -26,7 +27,7 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_getyx.3x,v 1.18 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_getyx.3x,v 1.20 2020/10/24 09:38:43 tom Exp $ .TH curs_getyx 3X "" .SH NAME \fBgetyx\fR, @@ -36,13 +37,13 @@ .SH SYNOPSIS \fB#include <curses.h>\fR .sp -\fBvoid getyx(WINDOW *win, int y, int x);\fR +\fBvoid getyx(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br -\fBvoid getparyx(WINDOW *win, int y, int x);\fR +\fBvoid getparyx(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br -\fBvoid getbegyx(WINDOW *win, int y, int x);\fR +\fBvoid getbegyx(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br -\fBvoid getmaxyx(WINDOW *win, int y, int x);\fR +\fBvoid getmaxyx(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br .SH DESCRIPTION The \fBgetyx\fR macro places the current cursor position of the given window in diff --git a/deps/ncurses-5.9/man/curs_in_wch.3x b/deps/ncurses-6.3/man/curs_in_wch.3x similarity index 84% rename from deps/ncurses-5.9/man/curs_in_wch.3x rename to deps/ncurses-6.3/man/curs_in_wch.3x index 5f50e5a..e267899 100644 --- a/deps/ncurses-5.9/man/curs_in_wch.3x +++ b/deps/ncurses-6.3/man/curs_in_wch.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2010,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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_in_wch.3x,v 1.5 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_in_wch.3x,v 1.10 2020/10/17 23:19:29 tom Exp $ .TH curs_in_wch 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME \fBin_wch\fR, \fBmvin_wch\fR, @@ -38,23 +43,23 @@ .sp \fBint in_wch(cchar_t *\fR\fIwcval\fR\fB);\fR .br +\fBint win_wch(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwcval\fR\fB);\fR +.sp \fBint mvin_wch(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwcval\fR\fB);\fR .br \fBint mvwin_wch(WINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwcval\fR\fB);\fR -.br -\fBint win_wch(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwcval\fR\fB);\fR .SH DESCRIPTION These functions extract the complex character and rendition from the current position in the named window into the \fBcchar_t\fR object referenced by wcval. .SH RETURN VALUE No errors are defined in the XSI Curses standard. -This implementation checks for null pointers, returns ERR in that case. -Also, the \fImv\fR routines check for error moving the cursor, returning ERR -in that case. -Otherwise they return OK +This implementation checks for null pointers, returns \fBERR\fP in that case. +Also, the \fImv\fR routines check for error moving the cursor, +returning \fBERR\fP in that case. +Otherwise they return \fBOK\fP. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH NOTES diff --git a/deps/ncurses-5.9/man/curs_in_wchstr.3x b/deps/ncurses-6.3/man/curs_in_wchstr.3x similarity index 90% rename from deps/ncurses-5.9/man/curs_in_wchstr.3x rename to deps/ncurses-6.3/man/curs_in_wchstr.3x index 042abfd..4feae48 100644 --- a/deps/ncurses-5.9/man/curs_in_wchstr.3x +++ b/deps/ncurses-6.3/man/curs_in_wchstr.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2012,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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_in_wchstr.3x,v 1.8 2010/12/04 18:36:44 tom Exp $ +.\" $Id: curs_in_wchstr.3x,v 1.14 2020/10/17 23:19:44 tom Exp $ .TH curs_in_wchstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .na .hy 0 .SH NAME @@ -52,7 +57,7 @@ \fBint win_wchstr(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwchstr\fR\fB);\fR .br \fBint win_wchnstr(WINDOW *\fR\fIwin\fR\fB, cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br +.sp \fBint mvin_wchstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwchstr\fR\fB);\fR .br \fBint mvin_wchnstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, cchar_t *\fR\fIwchstr\fR\fB, int \fR\fIn\fR\fB);\fR @@ -92,25 +97,26 @@ with \fBmvwin_wchstr\fR or \fBwin_wchstr\fR -causes undefined results. Therefore, the use of +causes undefined results. +Therefore, the use of \fBin_wchnstr\fR, \fBmvin_wchnstr\fR, \fBmvwin_wchnstr\fR, or \fBwin_wchnstr\fR is recommended. -.SH RETURN VALUES +.SH RETURN VALUE Upon successful completion, these functions return \fBOK\fR. Otherwise, they return \fBERR\fR. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH PORTABILITY The XSI Curses defines no error conditions. This implementation checks for null pointers, -returning ERR in that case. +returning \fBERR\fP in that case. .SH SEE ALSO Functions: \fBcurses\fR(3X), diff --git a/deps/ncurses-6.3/man/curs_inch.3x b/deps/ncurses-6.3/man/curs_inch.3x new file mode 100644 index 0000000..1f271e3 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_inch.3x @@ -0,0 +1,119 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_inch.3x,v 1.26 2021/06/17 21:30:22 tom Exp $ +.TH curs_inch 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBinch\fR, +\fBwinch\fR, +\fBmvinch\fR, +\fBmvwinch\fR \- get a character and attributes from a \fBcurses\fR window +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBchtype inch(void);\fR +.br +\fBchtype winch(WINDOW *\fP\fIwin\fP\fB);\fR +.sp +\fBchtype mvinch(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.br +\fBchtype mvwinch(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.br +.SH DESCRIPTION +These routines return the character, of type \fBchtype\fR, 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>\fR can be used with the \fB&\fR (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\fR. +. +.TS +l l . +\fBA_CHARTEXT\fR Bit-mask to extract character +\fBA_ATTRIBUTES\fR Bit-mask to extract attributes +\fBA_COLOR\fR Bit-mask to extract color-pair field information +.TE +.SH RETURN VALUE +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.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 the XSI Curses standard, Issue 4. +.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. +.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. +.SH SEE ALSO +.TP 5 +\fBcurses\fR(3X) +gives an overview of the WINDOW and \fBchtype\fP data types. +.TP 5 +\fBcurs_attr\fR(3X) +goes into more detail, pointing out portability problems and +constraints on the use of \fBchtype\fP for returning window information. +.TP 5 +\fBcurs_in_wch\fR(3X) +describes comparable functions for the wide-character (ncursesw) library. diff --git a/deps/ncurses-6.3/man/curs_inchstr.3x b/deps/ncurses-6.3/man/curs_inchstr.3x new file mode 100644 index 0000000..332604e --- /dev/null +++ b/deps/ncurses-6.3/man/curs_inchstr.3x @@ -0,0 +1,114 @@ +.\"*************************************************************************** +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_inchstr.3x,v 1.21 2020/10/18 00:24:36 tom Exp $ +.TH curs_inchstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBinchstr\fR, +\fBinchnstr\fR, +\fBwinchstr\fR, +\fBwinchnstr\fR, +\fBmvinchstr\fR, +\fBmvinchnstr\fR, +\fBmvwinchstr\fR, +\fBmvwinchnstr\fR \- get a string of characters (and attributes) from a \fBcurses\fR window +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint inchstr(chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint inchnstr(chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint winchstr(WINDOW *\fP\fIwin\fP\fB, chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint winchnstr(WINDOW *\fP\fIwin\fP\fB, chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.sp +\fBint mvinchstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint mvinchnstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvwinchstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype *\fP\fIchstr\fP\fB);\fR +.br +\fBint mvwinchnstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype *\fP\fIchstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +.SH DESCRIPTION +These routines return a NULL-terminated array of \fBchtype\fR quantities, +starting at the current cursor position in the named window and ending at the +right margin of the window. +The four functions with \fIn\fR as +the last argument, return a leading substring at most \fIn\fR characters long +(exclusive of the trailing (chtype)0). +Constants defined in \fB<curses.h>\fR can be used with the \fB&\fR (logical +AND) operator to extract the character or the attribute alone from any position +in the \fIchstr\fR [see \fBcurs_inch\fR(3X)]. +.SH RETURN VALUE +All routines return the integer \fBERR\fR upon failure and an integer value +other than \fBERR\fR upon successful completion (the number of characters +retrieved, exclusive of the trailing 0). +.PP +X/Open Curses defines no error conditions. +In this implementation: +.bP +If the \fIwin\fP parameter is null, an error is returned, +.bP +If the \fIchstr\fP parameter is null, an error is returned, +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +Note that all routines except \fBwinchnstr\fR may be macros. +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. +.SH PORTABILITY +These functions are described in the XSI Curses standard, 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\fR. +.SH SEE ALSO +\fBcurses\fR(3X), \fBcurs_inch\fR(3X). +.PP +Comparable functions in the wide-character (ncursesw) library are +described in +\fBcurs_in_wchstr\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_initscr.3x b/deps/ncurses-6.3/man/curs_initscr.3x new file mode 100644 index 0000000..235a5aa --- /dev/null +++ b/deps/ncurses-6.3/man/curs_initscr.3x @@ -0,0 +1,260 @@ +.\"*************************************************************************** +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_initscr.3x,v 1.33 2020/10/17 23:20:48 tom Exp $ +.TH curs_initscr 3X "" +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.na +.hy 0 +.SH NAME +\fBinitscr\fR, +\fBnewterm\fR, +\fBendwin\fR, +\fBisendwin\fR, +\fBset_term\fR, +\fBdelscreen\fR \- \fBcurses\fR screen initialization and manipulation routines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBWINDOW *initscr(void);\fR +.br +\fBint endwin(void);\fR +.sp +\fBbool isendwin(void);\fR +.sp +\fBSCREEN *newterm(const char *\fP\fItype\fP\fB, FILE *\fP\fIoutfd\fP\fB, FILE *\fP\fIinfd\fP\fB);\fR +.br +\fBSCREEN *set_term(SCREEN *\fP\fInew\fP\fB);\fR +.br +\fBvoid delscreen(SCREEN* \fP\fIsp\fP\fB);\fR +.br +.SH DESCRIPTION +.SS initscr +\fBinitscr\fR is normally the first \fBcurses\fR routine to call when +initializing a program. +A few special routines sometimes need to be called before it; +these are \fBslk_init\fR(3X), \fBfilter\fR, \fBripoffline\fR, +\fBuse_env\fR. +For multiple-terminal applications, +\fBnewterm\fR may be called before \fBinitscr\fR. +.PP +The initscr code determines the terminal type and initializes all \fBcurses\fR +data structures. +\fBinitscr\fR also causes the first call to \fBrefresh\fR(3X) +to clear the screen. +If errors occur, \fBinitscr\fR writes an appropriate error +message to standard error and exits; +otherwise, a pointer is returned to \fBstdscr\fR. +.SS newterm +.PP +A program that outputs to more than one terminal should use the \fBnewterm\fR +routine for each terminal instead of \fBinitscr\fR. +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\fR. +The routine \fBnewterm\fR should be called once for each terminal. +It returns a variable of type \fBSCREEN *\fR which should be saved +as a reference to that terminal. +\fBnewterm\fP's arguments are +.bP +the \fItype\fR of the terminal to be used in place of \fB$TERM\fR, +.bP +a file pointer for output to the terminal, and +.bP +another file pointer for input from the terminal +.PP +If the \fItype\fR parameter is \fBNULL\fR, \fB$TERM\fR will be used. +.SS endwin +.PP +The program must also call +\fBendwin\fR for each terminal being used before exiting from \fBcurses\fR. +If \fBnewterm\fR is called more than once for the same terminal, the first +terminal referred to must be the last one for which \fBendwin\fR is called. +.PP +A program should always call \fBendwin\fR before exiting or escaping from +\fBcurses\fR mode temporarily. +This routine +.bP +resets colors to correspond with the default color pair 0, +.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, +.bP +sets the cursor to normal visibility (see \fBcurs_set\fP(3X)), +.bP +stops cursor-addressing mode using the \fIexit_ca_mode\fP terminal capability, +.bP +restores tty modes (see \fBreset_shell_mode\fP(3X)). +.PP +Calling \fBrefresh\fR(3X) or \fBdoupdate\fR(3X) after a +temporary escape causes the program to resume visual mode. +.SS isendwin +.PP +The \fBisendwin\fR routine returns \fBTRUE\fR if \fBendwin\fR has been +called without any subsequent calls to \fBwrefresh\fR, +and \fBFALSE\fR otherwise. +.SS set_term +.PP +The \fBset_term\fR routine is used to switch between different terminals. +The screen reference \fBnew\fR becomes the new current terminal. +The previous terminal is returned by the routine. +This is the only routine which manipulates \fBSCREEN\fR pointers; +all other routines affect only the current terminal. +.SS delscreen +.PP +The \fBdelscreen\fR routine frees storage associated with the +\fBSCREEN\fR data structure. +The \fBendwin\fR routine does not do +this, so \fBdelscreen\fR should be called after \fBendwin\fR if a +particular \fBSCREEN\fR is no longer needed. +.SH RETURN VALUE +\fBendwin\fR returns the integer \fBERR\fR upon failure and \fBOK\fR +upon successful completion. +.PP +Routines that return pointers always return \fBNULL\fR on error. +.PP +X/Open defines no error conditions. +In this implementation +.bP +\fBendwin\fP returns an error if the terminal was not initialized. +.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. +.bP +\fBset_term\fP +returns no error. +.SH PORTABILITY +These functions were described in the XSI Curses standard, Issue 4. +As of 2015, the current document is X/Open Curses, Issue 7. +.SS Differences +X/Open specifies that portable applications must not +call \fBinitscr\fR more than once: +.bP +The portable way to use \fBinitscr\fP is once only, +using \fBrefresh\fP (see curs_refresh(3X)) +to restore the screen after \fBendwin\fP. +.bP +This implementation allows using \fBinitscr\fP after \fBendwin\fP. +.PP +Old versions of curses, e.g., BSD 4.4, may have returned a null pointer +from \fBinitscr\fR when an error is detected, rather than exiting. +It is safe but redundant to check the return value of \fBinitscr\fR +in XSI Curses. +.SS Unset TERM Variable +.PP +If the TERM 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 +(see curs_terminfo(3X)) and cannot be used for full-screen operation. +Other implementations may handle a missing/empty TERM variable differently. +.SS Signal Handlers +.PP +Quoting from X/Open Curses, section 3.1.1: +.RS 5 +.PP +\fICurses implementations may provide for special handling of the \fBSIGINT\fP, +\fBSIGQUIT\fP and \fBSIGTSTP\fP signals +if their disposition is \fBSIG_DFL\fP at the time +\fBinitscr\fP is called \fP... +.PP +\fIAny special handling for these signals may remain in effect for the +life of the process or until the process changes the disposition of +the signal.\fP +.PP +\fINone of the Curses functions are required to be safe +with respect to signals \fP... +.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 cleanup the screen on exit. +Although it \fIusually\fP works as expected, there are limitations: +.RS 5 +.bP +Walking the \fBSCREEN\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 stdio 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 \fBflushinput\fP (see curs_util(3X)), and repaints the screen +assuming that it has been completely altered. +It also updates the saved terminal modes with \fBdef_shell_mode\fP +(see \fBcurs_kernel\fR(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 \fBwgetch\fP (see curs_getch(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. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_kernel\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_slk\fR(3X), +\fBcurs_terminfo\fR(3X), +\fBcurs_util\fR(3X), +\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_inopts.3x b/deps/ncurses-6.3/man/curs_inopts.3x new file mode 100644 index 0000000..d346017 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_inopts.3x @@ -0,0 +1,380 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_inopts.3x,v 1.33 2020/12/05 19:38:18 Benno.Schulenberg Exp $ +.TH curs_inopts 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.na +.hy 0 +.SH NAME +\fBcbreak\fR, +\fBnocbreak\fR, +\fBecho\fR, +\fBnoecho\fR, +\fBhalfdelay\fR, +\fBintrflush\fR, +\fBkeypad\fR, +\fBmeta\fR, +\fBnl\fR, +\fBnonl\fR, +\fBnodelay\fR, +\fBnotimeout\fR, +\fBraw\fR, +\fBnoraw\fR, +\fBqiflush\fR, +\fBnoqiflush\fR, +\fBtimeout\fR, +\fBwtimeout\fR, +\fBtypeahead\fR \- \fBcurses\fR input options +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.PP +\fBint cbreak(void);\fR +.br +\fBint nocbreak(void);\fR +.sp +\fBint echo(void);\fR +.br +\fBint noecho(void);\fR +.sp +\fBint intrflush(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBint keypad(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBint meta(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBint nodelay(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBint notimeout(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.sp +\fBint nl(void);\fR +.br +\fBint nonl(void);\fR +.sp +\fBint raw(void);\fR +.br +\fBint noraw(void);\fR +.sp +\fBvoid qiflush(void);\fR +.br +\fBvoid noqiflush(void);\fR +.sp +\fBint halfdelay(int \fP\fItenths\fP\fB);\fR +.br +\fBvoid timeout(int \fP\fIdelay\fP\fB);\fR +.br +\fBvoid wtimeout(WINDOW *\fP\fIwin\fP\fB, int \fP\fIdelay\fP\fB);\fR +.sp +\fBint typeahead(int \fP\fIfd\fP\fB);\fR +.br +.SH DESCRIPTION +The \fBncurses\fP library provides several functions which 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 needed. +.\" +.SS cbreak/nocbreak +Normally, the tty driver buffers typed characters until a newline or carriage +return is typed. +The \fBcbreak\fR 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 +program. +The \fBnocbreak\fR routine returns the terminal to normal (cooked) +mode. +.PP +Initially the terminal may or may not be in \fBcbreak\fR mode, as the mode is +inherited; therefore, a program should call \fBcbreak\fR or \fBnocbreak\fR +explicitly. +Most interactive programs using \fBcurses\fR set the \fBcbreak\fR +mode. +Note that \fBcbreak\fR overrides \fBraw\fR. +[See \fBcurs_getch\fR(3X) for a +discussion of how these routines interact with \fBecho\fR and \fBnoecho\fR.] +.\" +.SS echo/noecho +.PP +The \fBecho\fR and \fBnoecho\fR routines control whether characters typed by +the user are echoed by \fBgetch\fR(3X) as they are typed. +Echoing by the tty +driver is always disabled, but initially \fBgetch\fR 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, or not to echo at all, so +they disable echoing by calling \fBnoecho\fR. +[See \fBcurs_getch\fR(3X) for a +discussion of how these routines interact with \fBcbreak\fR and +\fBnocbreak\fR.] +.\" +.SS halfdelay +.PP +The \fBhalfdelay\fR routine is used for half-delay mode, which is similar to +\fBcbreak\fR mode in that characters typed by the user are immediately +available to the program. +However, after blocking for \fItenths\fR tenths of +seconds, \fBERR\fP is returned if nothing has been typed. +The value of \fItenths\fR +must be a number between 1 and 255. +Use \fBnocbreak\fR to leave half-delay +mode. +.\" +.SS intrflush +.PP +If the \fBintrflush\fR option is enabled (\fIbf\fR is \fBTRUE\fR), and an +interrupt key is pressed on the keyboard (interrupt, break, quit), all output in +the tty driver queue will be flushed, giving the effect of faster response to +the interrupt, but causing \fBcurses\fR to have the wrong idea of what is on +the screen. +Disabling the option (\fIbf\fR is \fBFALSE\fR) prevents the +flush. +The default for the option is inherited from the tty driver settings. +The window argument is ignored. +.\" +.SS keypad +.PP +The \fBkeypad\fR option enables the keypad of the user's terminal. +If +enabled (\fIbf\fR is \fBTRUE\fR), the user can press a function key +(such as an arrow key) and \fBwgetch\fR(3X) returns a single value +representing the function key, as in \fBKEY_LEFT\fR. +If disabled +(\fIbf\fR is \fBFALSE\fR), \fBcurses\fR 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 \fBwgetch\fR(3X) is +called. +The default value for keypad is \fBFALSE\fP. +.\" +.SS meta +.PP +Initially, whether the terminal returns 7 or 8 significant bits on +input depends on the control mode of the tty driver [see \fBtermios\fP(3)]. +To force 8 bits to be returned, invoke \fBmeta\fR(\fIwin\fR, +\fBTRUE\fR); this is equivalent, under POSIX, to setting the CS8 flag +on the terminal. +To force 7 bits to be returned, invoke +\fBmeta\fR(\fIwin\fR, \fBFALSE\fR); this is equivalent, under POSIX, +to setting the CS7 flag on the terminal. +The window argument, +\fIwin\fR, is always ignored. +If the terminfo capabilities \fBsmm\fR +(meta_on) and \fBrmm\fR (meta_off) are defined for the terminal, +\fBsmm\fR is sent to the terminal when \fBmeta\fR(\fIwin\fR, +\fBTRUE\fR) is called and \fBrmm\fR is sent when \fBmeta\fR(\fIwin\fR, +\fBFALSE\fR) is called. +.\" +.SS nl/nonl +.PP +The \fBnl\fR and \fBnonl\fR routines control whether the underlying display +device translates the return key into newline on input. +.\" +.SS nodelay +.PP +The \fBnodelay\fR option causes \fBgetch\fR to be a non-blocking call. +If no input is ready, \fBgetch\fR returns \fBERR\fR. +If disabled +(\fIbf\fR is \fBFALSE\fR), \fBgetch\fR waits until a key is pressed. +.SS notimeout +.PP +When interpreting an escape sequence, \fBwgetch\fR(3X) sets a timer +while waiting for the next character. +If \fBnotimeout(\fR\fIwin\fR, +\fBTRUE\fR) is called, then \fBwgetch\fR does not set a timer. +The +purpose of the timeout is to differentiate between sequences received +from a function key and those typed by a user. +.\" +.SS raw/noraw +.PP +The \fBraw\fR and \fBnoraw\fR routines place the terminal into or out of raw +mode. +Raw mode is similar to \fBcbreak\fR mode, in that characters typed are +immediately passed through to the user program. +The differences are that in +raw mode, the 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 tty driver that are not set by +\fBcurses\fR. +.\" +.SS qiflush/noqiflush +.PP +When the \fBnoqiflush\fR routine is used, normal flush of input and +output queues associated with the \fBINTR\fR, \fBQUIT\fR and +\fBSUSP\fR characters will not be done [see \fBtermios\fP(3)]. +When +\fBqiflush\fR is called, the queues will be flushed when these control +characters are read. +You may want to call \fBnoqiflush\fR in a signal +handler if you want output to continue as though the interrupt +had not occurred, after the handler exits. +.\" +.SS timeout/wtimeout +.PP +The \fBtimeout\fR and \fBwtimeout\fR routines set blocking or +non-blocking read for a given window. +If \fIdelay\fR is negative, +blocking read is used (i.e., waits indefinitely for +input). +If \fIdelay\fR is zero, then non-blocking read is used +(i.e., read returns \fBERR\fR if no input is waiting). +If +\fIdelay\fR is positive, then read blocks for \fIdelay\fR +milliseconds, and returns \fBERR\fR if there is still no input. +Hence, these routines provide the same functionality as \fBnodelay\fR, +plus the additional capability of being able to block for only +\fIdelay\fR milliseconds (where \fIdelay\fR is positive). +.\" +.SS typeahead +.PP +The \fBcurses\fR library does \*(``line-breakout optimization\*('' +by looking for typeahead periodically while updating the screen. +If input is found, and it is coming from a tty, +the current update is postponed until +\fBrefresh\fR(3X) or \fBdoupdate\fR is called again. +This allows faster response to commands typed in advance. +Normally, the input FILE +pointer passed to \fBnewterm\fR, or \fBstdin\fR in the case that +\fBinitscr\fR was used, will be used to do this typeahead checking. +The \fBtypeahead\fR routine specifies that the file descriptor +\fIfd\fR is to be used to check for typeahead instead. +If \fIfd\fR is +\-1, then no typeahead checking is done. +.\" +.SH RETURN VALUE +All routines that return an integer return \fBERR\fR upon failure and \fBOK\fP +(SVr4 specifies only \*(``an integer value other than \fBERR\fR\*('') +upon successful completion, +unless otherwise noted in the preceding routine descriptions. +.PP +X/Open does not define 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 +.TP 5 +\fBhalfdelay\fP +returns an error +if its parameter is outside the range 1..255. +.RE +.SH PORTABILITY +These functions are described in the XSI Curses standard, Issue 4. +.PP +The ncurses library obeys the XPG4 standard and the historical practice of the +AT&T curses implementations, in that the echo bit is cleared when curses +initializes the terminal state. +BSD curses differed from this slightly; it +left the echo bit on at initialization, but the BSD \fBraw\fR call turned it +off as a side-effect. +For best portability, set \fBecho \fPor \fBnoecho\fP explicitly +just after initialization, even if your program remains in cooked mode. +.PP +The XSI Curses standard is ambiguous on the question of whether \fBraw\fR +should disable the CRLF translations controlled by \fBnl\fR and \fBnonl\fR. +BSD curses did turn off these translations; AT&T curses (at least as late as +SVr1) did not. +We chose to do so, on the theory that a programmer requesting +raw input wants a clean (ideally 8-bit clean) connection that the operating +system will not alter. +.PP +When \fBkeypad\fP is first enabled, +ncurses loads the key-definitions for the current terminal description. +If the terminal description includes extended string capabilities, +e.g., from using the \fB\-x\fP option of \fB@TIC@\fP, +then ncurses also defines keys for the capabilities whose names +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 \fBkeyname\fP function +(which will then return a name beginning with \*(``k\*('' denoting the +terminfo capability name rather than \*(``K\*('', used for curses key-names). +On the other hand, an application can use \fBdefine_key\fP 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 \fBtigetstr\fP, +and reassign the keycode to match its own needs. +.PP +Low-level applications can use \fBtigetstr\fP to obtain the definition +of any particular string capability. +Higher-level applications which use the curses \fBwgetch\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 \fBwgetch\fP can return only one keycode. +Most curses implementations (including 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. +In 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. +.SH NOTES +Note that +\fBecho\fR, +\fBnoecho\fR, +\fBhalfdelay\fR, +\fBintrflush\fR, +\fBmeta\fR, +\fBnl\fR, +\fBnonl\fR, +\fBnodelay\fR, +\fBnotimeout\fR, +\fBnoqiflush\fR, +\fBqiflush\fR, +\fBtimeout\fR, and +\fBwtimeout\fR may be macros. +.PP +The \fBnoraw\fR and \fBnocbreak\fR calls follow historical practice in that +they attempt to restore to normal (\*(``cooked\*('') mode +from raw and cbreak modes respectively. +Mixing raw/noraw and cbreak/nocbreak calls leads to tty driver +control states that are hard to predict or understand; it is not recommended. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_getch\fR(3X), +\fBcurs_initscr\fR(3X), +\fBcurs_util\fR(3X), +\fBdefine_key\fR(3X), +\fBtermios\fR(3) diff --git a/deps/ncurses-5.9/man/curs_ins_wch.3x b/deps/ncurses-6.3/man/curs_ins_wch.3x similarity index 79% rename from deps/ncurses-5.9/man/curs_ins_wch.3x rename to deps/ncurses-6.3/man/curs_ins_wch.3x index 4c6a925..9b19a28 100644 --- a/deps/ncurses-5.9/man/curs_ins_wch.3x +++ b/deps/ncurses-6.3/man/curs_ins_wch.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2010,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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_ins_wch.3x,v 1.5 2010/12/04 18:38:55 tom Exp $ +.\" $Id: curs_ins_wch.3x,v 1.10 2020/10/18 00:22:21 tom Exp $ .TH curs_ins_wch 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME \fBins_wch\fR, \fBmvins_wch\fR, @@ -38,11 +43,11 @@ .sp \fBint ins_wch(const cchar_t *\fR\fIwch\fR\fB);\fR .br -\fBint wins_wch(WINDOW *\fR\fIwin, const cchar_t *\fR\fIwch\fR\fB);\fR -.br -\fBint mvins_wch(int \fR\fIy, int \fR\fIx, const cchar_t *\fR\fIwch\fR\fB);\fR +\fBint wins_wch(WINDOW *\fR\fIwin\fP\fB, const cchar_t *\fR\fIwch\fR\fB);\fR +.sp +\fBint mvins_wch(int \fR\fIy\fP\fB, int \fR\fIx\fP\fB, const cchar_t *\fR\fIwch\fR\fB);\fR .br -\fBint mvwins_wch(WINDOW *\fR\fIwin, int \fR\fIy, int \fR\fIx, const cchar_t *\fR\fIwch\fR\fB);\fR +\fBint mvwins_wch(WINDOW *\fR\fIwin\fP\fB, int \fR\fIy\fP\fB, int \fR\fIx\fP\fB, const cchar_t *\fR\fIwch\fR\fB);\fR .SH DESCRIPTION These routines, insert the complex character \fIwch\fR with rendition before the character under the cursor. @@ -50,10 +55,10 @@ All characters to the right of the cursor are moved one space to the right, with the possibility of the rightmost character on the line being lost. The insertion operation does not change the cursor position. .SH RETURN VALUE -If successful, these functions return OK. -If not, they return ERR. +If successful, these functions return \fBOK\fP. +If not, they return \fBERR\fP. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH ERRORS diff --git a/deps/ncurses-5.9/man/curs_ins_wstr.3x b/deps/ncurses-6.3/man/curs_ins_wstr.3x similarity index 90% rename from deps/ncurses-5.9/man/curs_ins_wstr.3x rename to deps/ncurses-6.3/man/curs_ins_wstr.3x index d016545..76c44fb 100644 --- a/deps/ncurses-5.9/man/curs_ins_wstr.3x +++ b/deps/ncurses-6.3/man/curs_ins_wstr.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. * +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2012,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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_ins_wstr.3x,v 1.6 2010/12/04 18:38:55 tom Exp $ +.\" $Id: curs_ins_wstr.3x,v 1.11 2020/10/17 23:21:25 tom Exp $ .TH curs_ins_wstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .na .hy 0 .SH NAME @@ -52,7 +57,7 @@ \fBint wins_wstr(WINDOW *\fR\fIwin\fR\fB, const wchar_t *\fR\fIwstr\fR\fB);\fR .br \fBint wins_nwstr(WINDOW *\fR\fIwin\fR\fB, const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR -.br +.sp \fBint mvins_wstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const wchar_t *\fR\fIwstr\fR\fB);\fR .br \fBint mvins_nwstr(int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, const wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR @@ -92,11 +97,11 @@ If the first character in the string is a nonspacing character, these functions will fail. XSI does not define what will happen if a nonspacing character follows a control character. -.SH RETURN VALUES -Upon successful completion, these functions return OK. -Otherwise, they return ERR. +.SH RETURN VALUE +Upon successful completion, these functions return \fBOK\fP. +Otherwise, they return \fBERR\fP. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH SEE ALSO diff --git a/deps/ncurses-5.9/man/curs_insch.3x b/deps/ncurses-6.3/man/curs_insch.3x similarity index 77% rename from deps/ncurses-5.9/man/curs_insch.3x rename to deps/ncurses-6.3/man/curs_insch.3x index 77e92ec..1b4e3ee 100644 --- a/deps/ncurses-5.9/man/curs_insch.3x +++ b/deps/ncurses-6.3/man/curs_insch.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_insch.3x,v 1.13 2010/12/04 18:38:55 tom Exp $ +.\" $Id: curs_insch.3x,v 1.19 2020/10/18 00:21:39 tom Exp $ .TH curs_insch 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME \fBinsch\fR, \fBwinsch\fR, @@ -36,25 +41,27 @@ .SH SYNOPSIS \fB#include <curses.h>\fR .sp -\fBint insch(chtype ch);\fR +\fBint insch(chtype \fP\fIch\fP\fB);\fR .br -\fBint winsch(WINDOW *win, chtype ch);\fR -.br -\fBint mvinsch(int y, int x, chtype ch);\fR +\fBint winsch(WINDOW *\fP\fIwin\fP\fB, chtype \fP\fIch\fP\fB);\fR +.sp +\fBint mvinsch(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype \fP\fIch\fP\fB);\fR .br -\fBint mvwinsch(WINDOW *win, int y, int x, chtype ch);\fR +\fBint mvwinsch(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, chtype \fP\fIch\fP\fB);\fR .br .SH DESCRIPTION These routines insert the character \fIch\fR before the character under the -cursor. All characters to the right of the cursor are moved one space to the +cursor. +All characters to the right of the cursor are moved one space to the right, with the possibility of the rightmost character on the line being lost. The insertion operation does not change the cursor position. .SH RETURN VALUE -All routines that return an integer return \fBERR\fR upon failure and OK (SVr4 -specifies only "an integer value other than \fBERR\fR") upon successful -completion, unless otherwise noted in the preceding routine descriptions. +All routines that return an integer return \fBERR\fR upon failure and \fBOK\fP +(SVr4 specifies only "an integer value other than \fBERR\fR") +upon successful completion, +unless otherwise noted in the preceding routine descriptions. .PP -Functions with a "mv" prefix first perform a cursor movement using +Functions with a \*(``mv\*('' prefix first perform a cursor movement using \fBwmove\fP, and return an error if the position is outside the window, or if the window pointer is null. .SH NOTES diff --git a/deps/ncurses-6.3/man/curs_insstr.3x b/deps/ncurses-6.3/man/curs_insstr.3x new file mode 100644 index 0000000..a4c8c62 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_insstr.3x @@ -0,0 +1,105 @@ +.\"*************************************************************************** +.\" Copyright 2019-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_insstr.3x,v 1.27 2021/06/17 21:26:02 tom Exp $ +.TH curs_insstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.SH NAME +\fBinsstr\fR, +\fBinsnstr\fR, +\fBwinsstr\fR, +\fBwinsnstr\fR, +\fBmvinsstr\fR, +\fBmvinsnstr\fR, +\fBmvwinsstr\fR, +\fBmvwinsnstr\fR \- insert string before cursor in a \fBcurses\fR window +.SH SYNOPSIS +\fB#include <curses.h>\fR +.br +\fBint insstr(const char *\fP\fIstr\fP\fB);\fR +.br +\fBint insnstr(const char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint winsstr(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIstr\fP\fB);\fR +.br +\fBint winsnstr(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.sp +\fBint mvinsstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIstr\fP\fB);\fR +.br +\fBint mvinsnstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvwinsstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIstr\fP\fB);\fR +.br +\fBint mvwinsnstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +.SH DESCRIPTION +These routines insert a character string +(as many characters as will fit on the line) +before the character under the cursor. +All characters to the right of the cursor are shifted right +with the possibility of the rightmost characters on the line being lost. +The cursor position does not change +(after moving to \fIy\fR, \fIx\fR, if specified). +The functions with \fIn\fR as the last argument +insert a leading substring of at most \fIn\fR characters. +If \fIn\fR<=0, then the entire string is inserted. +.PP +Special characters are handled as in \fBaddch\fP. +.SH RETURN VALUE +All routines that return an integer return \fBERR\fR upon failure and \fBOK\fP +(SVr4 specifies only "an integer value other than \fBERR\fR") +upon successful completion, +unless otherwise noted in the preceding routine descriptions. +.PP +X/Open defines no error conditions. +In this implementation, +if the window parameter is null or the str parameter is null, +an error is returned. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +Note that all but \fBwinsnstr\fR may be macros. +.SH PORTABILITY +These functions are described in the XSI Curses standard, Issue 4, which adds +const qualifiers to the arguments. +.LP +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. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_util\fR(3X), +\fBcurs_clear\fR(3X), +\fBcurs_inch\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_instr.3x b/deps/ncurses-6.3/man/curs_instr.3x new file mode 100644 index 0000000..7cc4b4b --- /dev/null +++ b/deps/ncurses-6.3/man/curs_instr.3x @@ -0,0 +1,99 @@ +.\"*************************************************************************** +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_instr.3x,v 1.22 2020/10/18 00:18:27 tom Exp $ +.TH curs_instr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBinstr\fR, +\fBinnstr\fR, +\fBwinstr\fR, +\fBwinnstr\fR, +\fBmvinstr\fR, +\fBmvinnstr\fR, +\fBmvwinstr\fR, +\fBmvwinnstr\fR \- get a string of characters from a \fBcurses\fR window +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint instr(char *\fP\fIstr\fP\fB);\fR +.br +\fBint innstr(char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint winstr(WINDOW *\fP\fIwin\fP\fB, char *\fP\fIstr\fP\fB);\fR +.br +\fBint winnstr(WINDOW *\fP\fIwin\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.sp +\fBint mvinstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB);\fR +.br +\fBint mvinnstr(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +\fBint mvwinstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB);\fR +.br +\fBint mvwinnstr(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, char *\fP\fIstr\fP\fB, int \fP\fIn\fP\fB);\fR +.br +.SH DESCRIPTION +These routines return a string of characters in \fIstr\fR, extracted starting +at the current cursor position in the named window. +Attributes are stripped from the characters. +The four +functions with \fIn\fR as the last argument return a leading substring at most +\fIn\fR characters long (exclusive of the trailing NUL). +.SH RETURN VALUE +All of the functions return \fBERR\fR upon failure, +or the number of characters actually read into the string. +.PP +X/Open Curses defines no error conditions. +In this implementation: +.bP +If the \fIwin\fP parameter is null, an error is returned, +.bP +If the \fIchstr\fP parameter is null, an error is returned, +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH NOTES +Note that all routines except \fBwinnstr\fR may be macros. +.SH PORTABILITY +SVr4 does not +document whether a length limit includes or excludes the trailing NUL. +.PP +The ncurses library extends the XSI description by allowing a negative +value for \fIn\fR. +In this case, the functions return the string ending at the right margin. +.SH SEE ALSO +\fBcurses\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_inwstr.3x b/deps/ncurses-6.3/man/curs_inwstr.3x new file mode 100644 index 0000000..b3899c4 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_inwstr.3x @@ -0,0 +1,106 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 2002-2012,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_inwstr.3x,v 1.14 2020/10/17 23:22:11 tom Exp $ +.TH curs_inwstr 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.SH NAME +\fBinwstr\fR, +\fBinnwstr\fR, +\fBwinwstr\fR, +\fBwinnwstr\fR, +\fBmvinwstr\fR, +\fBmvinnwstr\fR, +\fBmvwinwstr\fR, +\fBmvwinnwstr\fR \- get a string of \fBwchar_t\fR characters from a curses window +.SH SYNOPSIS +.nf +\fB#include <curses.h> \fR +.sp +\fBint inwstr(\fR\fBwchar_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint innwstr(\fR\fBwchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint winwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint winnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.sp +\fBint mvinwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint mvinnwstr(\fR\fBint \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.br +\fBint mvwinwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB);\fR +.br +\fBint mvwinnwstr(\fR\fBWINDOW *\fR\fIwin\fR\fB, int \fR\fIy\fR\fB, int \fR\fIx\fR\fB, wchar_t *\fR\fIwstr\fR\fB, int \fR\fIn\fR\fB);\fR +.fi +.SH DESCRIPTION +.PP +These routines return a string of \fBwchar_t\fR wide characters in \fIwstr\fR, +extracted starting at the current cursor position in the named window. +.PP +The four functions with \fIn\fR as the last argument return +a leading substring at most \fIn\fR characters long +(exclusive of the trailing NUL). +Transfer stops at the end of the current line, or when \fIn\fR characters have +been stored at the location referenced by \fIwstr\fR. +.PP +If the size \fIn\fR is not large enough to store a complete complex character, +an error is generated. +.SH NOTES +.PP +All routines except +\fBwinnwstr\fR +may be macros. +.PP +Each cell in the window holds a complex character (i.e., base- +and combining-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. +.SH RETURN VALUE +All routines return +\fBERR\fR +upon failure. +Upon +successful completion, the *\fBinwstr\fR +routines return +\fBOK\fR, and the *\fBinnwstr\fR +routines return the +number of characters read into the string. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_instr\fR(3X), +\fBcurs_in_wchstr\fR(3X) diff --git a/deps/ncurses-6.3/man/curs_kernel.3x b/deps/ncurses-6.3/man/curs_kernel.3x new file mode 100644 index 0000000..a4e6c80 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_kernel.3x @@ -0,0 +1,231 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_kernel.3x,v 1.29 2020/10/17 23:22:35 tom Exp $ +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.TH curs_kernel 3X "" +.na +.hy 0 +.SH NAME +\fBdef_prog_mode\fR, +\fBdef_shell_mode\fR, +\fBreset_prog_mode\fR, +\fBreset_shell_mode\fR, +\fBresetty\fR, +\fBsavetty\fR, +\fBgetsyx\fR, +\fBsetsyx\fR, +\fBripoffline\fR, +\fBcurs_set\fR, +\fBnapms\fR \- low-level \fBcurses\fR routines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint def_prog_mode(void);\fR +.br +\fBint def_shell_mode(void);\fR +.sp +\fBint reset_prog_mode(void);\fR +.br +\fBint reset_shell_mode(void);\fR +.sp +\fBint resetty(void);\fR +.br +\fBint savetty(void);\fR +.sp +\fBvoid getsyx(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.br +\fBvoid setsyx(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.sp +\fBint ripoffline(int \fP\fIline\fP\fB, int (*\fP\fIinit\fP\fB)(WINDOW *, int));\fR +.br +\fBint curs_set(int \fP\fIvisibility\fP\fB);\fR +.br +\fBint napms(int \fP\fIms\fP\fB);\fR +.br +.SH DESCRIPTION +The following routines give low-level access +to various \fBcurses\fR capabilities. +These routines typically are used inside library routines. +.SS def_prog_mode, def_shell_mode +.PP +The \fBdef_prog_mode\fR and \fBdef_shell_mode\fR routines save the +current terminal modes as the \*(``program\*('' (in \fBcurses\fR) or \*(``shell\*('' +(not in \fBcurses\fR) state for use by the \fBreset_prog_mode\fR and +\fBreset_shell_mode\fR routines. +This is done automatically by \fBinitscr\fR. +There is one such save area for each screen context +allocated by \fBnewterm\fR. +.SS reset_prog_mode, reset_shell_mode +.PP +The \fBreset_prog_mode\fR and \fBreset_shell_mode\fR routines restore +the terminal to \*(``program\*('' (in \fBcurses\fR) or \*(``shell\*('' (out of +\fBcurses\fR) state. +These are done automatically by \fBendwin\fR(3X) and, +after an \fBendwin\fR, by \fBdoupdate\fR, +so they normally are not called. +.SS resetty, savetty +.PP +The \fBresetty\fR and \fBsavetty\fR routines save and restore the +state of the terminal modes. +\fBsavetty\fR saves the current state in +a buffer and \fBresetty\fR restores the state to what it was at the +last call to \fBsavetty\fR. +.SS getsyx +.PP +The \fBgetsyx\fR routine returns the current coordinates +of the \fIvirtual screen\fP cursor in \fIy\fR and \fIx\fR. +If \fBleaveok\fR is currently \fBTRUE\fR, then +\fB\-1\fR,\fB\-1\fR is returned. +If lines have been removed from the top of the +screen, using \fBripoffline\fR, \fIy\fR and \fIx\fR include these lines; +therefore, \fIy\fR and \fIx\fR should be used only as arguments for +\fBsetsyx\fR. +.PP +Few applications will use this feature, +most use \fBgetyx\fP instead. +.SS setsyx +.PP +The \fBsetsyx\fR routine sets +the \fIvirtual screen\fP cursor to \fIy\fR, \fIx\fR. +If \fIy\fR and \fIx\fR are both \fB\-1\fR, then +\fBleaveok\fR is set. +The two routines \fBgetsyx\fR and \fBsetsyx\fR +are designed to be used by a library routine, which manipulates +\fBcurses\fR windows but does not want to change the current position +of the program's cursor. +The library routine would call \fBgetsyx\fR +at the beginning, do its manipulation of its own windows, do a +\fBwnoutrefresh\fR on its windows, call \fBsetsyx\fR, and then call +\fBdoupdate\fR. +.PP +Few applications will use this feature, +most use \fBwmove\fP instead. +.SS ripoffline +.PP +The \fBripoffline\fR routine provides access to the same facility that +\fBslk_init\fR [see \fBcurs_slk\fR(3X)] uses to reduce the size of the +screen. +\fBripoffline\fR must be called before \fBinitscr\fR or +\fBnewterm\fR is called, to prepare these initial actions: +.bP +If \fIline\fR is positive, a line is removed from the top of \fBstdscr\fR. +.bP +if \fIline\fR is negative, a line is removed from the bottom. +.PP +When the resulting initialization is done inside \fBinitscr\fR, the +routine \fBinit\fR (supplied by the user) is called with two +arguments: +.bP +a window pointer to the one-line window that has been +allocated and +.bP +an integer with the number of columns in the window. +.PP +Inside this initialization routine, the integer variables \fBLINES\fR +and \fBCOLS\fR (defined in \fB<curses.h>\fR) are not guaranteed to be +accurate and \fBwrefresh\fR or \fBdoupdate\fR must not be called. +It is allowable to call \fBwnoutrefresh\fR during the initialization routine. +.PP +\fBripoffline\fR can be called up to five times before calling \fBinitscr\fR or +\fBnewterm\fR. +.SS curs_set +.PP +The \fBcurs_set\fR routine sets the cursor state to invisible, +normal, or very visible for \fBvisibility\fR equal to \fB0\fR, +\fB1\fR, or \fB2\fR respectively. +If the terminal supports the \fIvisibility\fR requested, +the previous \fIcursor\fR state is returned; +otherwise, \fBERR\fR is returned. +.SS napms +.PP +The \fBnapms\fR routine is used to sleep for \fIms\fR milliseconds. +.SH RETURN VALUE +Except for \fBcurs_set\fR, these routines always return \fBOK\fR. +.PP +\fBcurs_set\fR +returns the previous cursor state, or \fBERR\fR if the +requested \fIvisibility\fR is not supported. +.PP +X/Open defines no error conditions. +In this implementation +.TP 5 +.na +.hy 0 +\fBdef_prog_mode\fR, \fBdef_shell_mode\fR, \fBreset_prog_mode\fR, \fBreset_shell_mode\fR +.hy +.ad +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 (NRIPS = 5). +.SH NOTES +Note that \fBgetsyx\fR is a macro, so \fB&\fR is not necessary before +the variables \fIy\fR and \fIx\fR. +.PP +Older SVr4 man pages warn that the return value +of \fBcurs_set\fR \*(``is currently incorrect\*(''. +This implementation gets it right, but it may be unwise to count +on the correctness of the return value anywhere else. +.PP +Both ncurses and SVr4 will call \fBcurs_set\fR in \fBendwin\fR +if \fBcurs_set\fR +has been called to make the cursor other than normal, i.e., either +invisible or very visible. +There is no way for ncurses to determine the initial cursor state to +restore that. +.SH PORTABILITY +The \fIvirtual screen\fP functions \fBsetsyx\fR and \fBgetsyx\fR +are not described in the XSI Curses standard, Issue 4. +All other functions are as described in XSI Curses. +.PP +The SVr4 documentation describes \fBsetsyx\fR and \fBgetsyx\fR +as having return type int. +This is misleading, as they are macros with no documented semantics +for the return value. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_initscr\fR(3X), +\fBcurs_outopts\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_scr_dump\fR(3X), +\fBcurs_slk\fR(3X), +\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_legacy.3x b/deps/ncurses-6.3/man/curs_legacy.3x new file mode 100644 index 0000000..c2eb86b --- /dev/null +++ b/deps/ncurses-6.3/man/curs_legacy.3x @@ -0,0 +1,108 @@ +.\"*************************************************************************** +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2007-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_legacy.3x,v 1.12 2020/10/18 00:16:04 tom Exp $ +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.TH curs_legacy 3X "" +.SH NAME +curs_legacy \- get \fBcurses\fP cursor and window coordinates, attributes +.SH SYNOPSIS +\fB#include <curses.h>\fP +.sp +\fBint getattrs(const WINDOW *\fP\fIwin\fP\fB);\fP +.sp +\fBint getbegx(const WINDOW *\fP\fIwin\fP\fB);\fP +.br +\fBint getbegy(const WINDOW *\fP\fIwin\fP\fB);\fP +.sp +\fBint getcurx(const WINDOW *\fP\fIwin\fP\fB);\fP +.br +\fBint getcury(const WINDOW *\fP\fIwin\fP\fB);\fP +.sp +\fBint getmaxx(const WINDOW *\fP\fIwin\fP\fB);\fP +.br +\fBint getmaxy(const WINDOW *\fP\fIwin\fP\fB);\fP +.sp +\fBint getparx(const WINDOW *\fP\fIwin\fP\fB);\fP +.br +\fBint getpary(const WINDOW *\fP\fIwin\fP\fB);\fP +.br +.SH DESCRIPTION +These legacy functions are simpler to use than the X/Open Curses functions: +.bP +The \fBgetattrs\fP function returns the same attribute data as \fBwattr_get\fP. +.IP +However, \fBgetattrs\fP returns an integer (actually a \fBchtype\fP), +while \fBwattr_get\fP returns the current color pair in a separate parameter. +In the wide-character library configuration, +color pairs may not fit into a \fBchtype\fP, +so \fBwattr_get\fP is the only way to obtain the color information. +.IP +Because \fBgetattrs\fP returns the attributes in a single parameter, +it would not be possible for an application to distinguish that from +\fBERR\fP (a \fI-1\fP). +If the window parameter is null, \fBgetattrs\fP returns \fBA_NORMAL\fP (zero). +.bP +The \fBgetbegy\fP and \fBgetbegx\fP functions return the same +data as \fBgetbegyx\fP. +.bP +The \fBgetcury\fP and \fBgetcurx\fP functions return the same +data as \fBgetyx\fP. +.bP +The \fBgetmaxy\fP and \fBgetmaxx\fP functions return the same +data as \fBgetmaxyx\fP. +.bP +The \fBgetpary\fP and \fBgetparx\fP functions return the same +data as \fBgetparyx\fP. +.SH RETURN VALUE +Except as noted, +these functions return an integer, +or \fBERR\fP if the window parameter is null. +.SH NOTES +All of these interfaces are provided as macros and functions. +The macros are suppressed (and only the functions provided) +when \fBNCURSES_OPAQUE\fP is defined. +The standard forms such as \fBgetyx\fP 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 WINDOW structure. +.SH PORTABILITY +These functions were supported on Version 7, BSD or System V implementations. +None of those implementations checked the window parameter. +.PP +The \fBgetattrs\fP function and macro are defined to return a (signed) integer +for compatibility with those implementations +although an unsigned type would have been more appropriate. +.SH SEE ALSO +\fBcurses\fP(3X), +\fBcurs_getyx\fP(3X), +\fBcurs_opaque\fP(3X) diff --git a/deps/ncurses-6.3/man/curs_memleaks.3x b/deps/ncurses-6.3/man/curs_memleaks.3x new file mode 100644 index 0000000..59bd3e8 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_memleaks.3x @@ -0,0 +1,106 @@ +.\"*************************************************************************** +.\" Copyright 2019-2020,2021 Thomas E. Dickey * +.\" Copyright 2008-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_memleaks.3x,v 1.11 2021/01/02 23:47:51 tom Exp $ +.TH curs_memleaks 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.na +.hy 0 +.SH NAME +\fBexit_curses\fP, +\fBexit_terminfo\fP \- \fBcurses\fR memory-leak checking +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.br +\fBvoid exit_curses(int \fP\fIcode\fP\fB);\fR +.sp +\fB#include <term.h>\fR +.br +\fBvoid exit_terminfo(int \fP\fIcode\fP\fB);\fR +.sp +/* deprecated (intentionally not declared in curses.h or term.h) */ +.br +\fBvoid _nc_freeall(void);\fR +.br +\fBvoid _nc_free_and_exit(int \fP\fIcode\fP\fB);\fR +.br +\fBvoid _nc_free_tinfo(int \fP\fIcode\fP\fB);\fR +.SH DESCRIPTION +These functions are used to simplify analysis of memory leaks in the ncurses +library. +.PP +Any implementation of curses must not free the memory associated with +a screen, since (even after calling \fBendwin\fP(3X)), it must be available +for use in the next call to \fBrefresh\fP(3X). +There are also chunks of memory held for performance reasons. +That makes it hard to analyze curses applications for memory leaks. +When using the specially configured debugging version of the ncurses library, +applications can call functions which free those chunks of memory, +simplifying the process of memory-leak checking. +.PP +Some of the functions are named with a \*(``_nc_\*('' prefix +because they are not intended for use in the non-debugging library: +.TP 5 +\fB_nc_freeall\fP +This frees (almost) all of the memory allocated by ncurses. +.TP 5 +\fB_nc_free_and_exit\fP +This frees the memory allocated by ncurses (like \fB_nc_freeall\fP), +and exits the program. +It is preferred over \fB_nc_freeall\fP since some of that memory +may be required to keep the application running. +Simply exiting (with the given exit-code) is safer. +.TP 5 +\fB_nc_free_tinfo\fP +Use this function if only the low-level terminfo functions (and +corresponding library) are used. +Like \fB_nc_free_and_exit\fP, it exits the program after freeing memory. +.PP +The functions prefixed \*(``_nc\*('' are normally not available; +they must be configured into the library +at build time using the \fB\-\-disable-leaks\fP option. +That compiles-in code that frees memory that normally would not be freed. +.PP +The \fBexit_curses\fP and \fBexit_terminfo\fP functions +call \fB_nc_free_and_exit\fP and \fB_nc_free_tinfo\fP if +the library is configured to support memory-leak checking. +If the library is not configured to support memory-leak checking, +they simply call \fBexit\fP. +.SH RETURN VALUE +These functions do not return a value. +.SH PORTABILITY +These functions are not part of X/Open Curses; +nor do other implementations of curses provide a similar feature. +.SH SEE ALSO +\fBcurses\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_mouse.3x b/deps/ncurses-6.3/man/curs_mouse.3x new file mode 100644 index 0000000..c18be3f --- /dev/null +++ b/deps/ncurses-6.3/man/curs_mouse.3x @@ -0,0 +1,416 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_mouse.3x,v 1.53 2020/10/17 23:25:08 tom Exp $ +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.TH curs_mouse 3X "" +.na +.hy 0 +.SH NAME +\fBhas_mouse\fR, +\fBgetmouse\fR, \fBungetmouse\fR, +\fBmousemask\fR, \fBwenclose\fR, +\fBmouse_trafo\fR, \fBwmouse_trafo\fR, +\fBmouseinterval\fR \- mouse interface through curses +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.PP +\fBtypedef unsigned long mmask_t;\fR +.PP +.nf +\fBtypedef struct {\fR +\fB short id; \fR\fI/* ID to distinguish multiple devices */\fR +\fB int x, y, z; \fR\fI/* event coordinates */\fR +\fB mmask_t bstate; \fR\fI/* button state bits */\fR +\fB} MEVENT;\fR +.fi +.PP +\fBbool has_mouse(void);\fR +.sp +\fBint getmouse(MEVENT *\fP\fIevent\fP\fB);\fR +.br +\fBint ungetmouse(MEVENT *\fP\fIevent\fP\fB);\fR +.sp +\fBmmask_t mousemask(mmask_t \fP\fInewmask\fP\fB, mmask_t *\fP\fIoldmask\fP\fB);\fR +.sp +\fBbool wenclose(const WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.sp +\fBbool mouse_trafo(int* \fP\fIpY\fP\fB, int* \fP\fIpX\fP\fB, bool \fP\fIto_screen\fP\fB);\fR +.br +\fBbool wmouse_trafo(const WINDOW* \fP\fIwin\fP\fB,\fR + \fBint* \fP\fIpY\fP\fB, int* \fP\fIpX\fP\fB, bool \fP\fIto_screen\fP\fB);\fR +.sp +\fBint mouseinterval(int \fP\fIerval\fP\fB);\fR +.br +.SH DESCRIPTION +These functions provide an interface to mouse events from +\fBncurses\fR(3X). +Mouse events are represented by \fBKEY_MOUSE\fR +pseudo-key values in the \fBwgetch\fR(3X) input stream. +.SS mousemask +.PP +To make mouse events visible, use the \fBmousemask\fR function. +This will set +the mouse events to be reported. +By default, no mouse events are reported. +The function will return a mask to indicate which of the specified mouse events +can be reported; on complete failure it returns 0. +If oldmask is non-NULL, +this function fills the indicated location with the previous value of the given +window's mouse event mask. +.PP +As a side effect, setting a zero mousemask may turn off the mouse pointer; +setting a nonzero mask may turn it on. +Whether this happens is device-dependent. +.SS Mouse events +.PP +Here are the mouse event type masks which may be defined: +.PP +.TS +l l +_ _ +l l. +\fIName\fR \fIDescription\fR +BUTTON1_PRESSED mouse button 1 down +BUTTON1_RELEASED mouse button 1 up +BUTTON1_CLICKED mouse button 1 clicked +BUTTON1_DOUBLE_CLICKED mouse button 1 double clicked +BUTTON1_TRIPLE_CLICKED mouse button 1 triple clicked +_ +BUTTON2_PRESSED mouse button 2 down +BUTTON2_RELEASED mouse button 2 up +BUTTON2_CLICKED mouse button 2 clicked +BUTTON2_DOUBLE_CLICKED mouse button 2 double clicked +BUTTON2_TRIPLE_CLICKED mouse button 2 triple clicked +_ +BUTTON3_PRESSED mouse button 3 down +BUTTON3_RELEASED mouse button 3 up +BUTTON3_CLICKED mouse button 3 clicked +BUTTON3_DOUBLE_CLICKED mouse button 3 double clicked +BUTTON3_TRIPLE_CLICKED mouse button 3 triple clicked +_ +BUTTON4_PRESSED mouse button 4 down +BUTTON4_RELEASED mouse button 4 up +BUTTON4_CLICKED mouse button 4 clicked +BUTTON4_DOUBLE_CLICKED mouse button 4 double clicked +BUTTON4_TRIPLE_CLICKED mouse button 4 triple clicked +_ +BUTTON5_PRESSED mouse button 5 down +BUTTON5_RELEASED mouse button 5 up +BUTTON5_CLICKED mouse button 5 clicked +BUTTON5_DOUBLE_CLICKED mouse button 5 double clicked +BUTTON5_TRIPLE_CLICKED mouse button 5 triple clicked +_ +BUTTON_SHIFT shift was down during button state change +BUTTON_CTRL control was down during button state change +BUTTON_ALT alt was down during button state change +ALL_MOUSE_EVENTS report all button state changes +REPORT_MOUSE_POSITION report mouse movement +_ +.TE +.SS getmouse +.PP +Once a class of mouse events has been made visible in a window, +calling the \fBwgetch\fR function on that window may return +\fBKEY_MOUSE\fR as an indicator that a mouse event has been queued. +To read the event data and pop the event off the queue, call +\fBgetmouse\fR. +This function will return \fBOK\fR if a mouse event +is actually visible in the given window, \fBERR\fR otherwise. +When \fBgetmouse\fR returns \fBOK\fR, 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 \fBgetmouse\fP will retrieve the next older +item from the queue. +.SS ungetmouse +.PP +The \fBungetmouse\fR function behaves analogously to \fBungetch\fR. +It pushes +a \fBKEY_MOUSE\fR event onto the input queue, and associates with that event +the given state data and screen-relative character-cell coordinates. +.SS wenclose +.PP +The \fBwenclose\fR 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. +.SS wmouse_trafo +.PP +The \fBwmouse_trafo\fR function transforms a given pair of coordinates +from stdscr-relative coordinates +to coordinates relative to the given window or vice versa. +The resulting stdscr-relative coordinates are not always identical +to window-relative coordinates due to the mechanism to reserve lines on top +or bottom of the screen for other purposes +(see the \fBripoffline\fP and \fBslk_init\fR(3X) calls, for example). +.bP +If the parameter \fBto_screen\fR is \fBTRUE\fR, the pointers +\fBpY, pX\fR must reference the coordinates of a location +inside the window \fBwin\fR. +They are converted to window-relative coordinates and returned +through the pointers. +If the conversion was successful, the function returns \fBTRUE\fR. +.bP +If one of the parameters was NULL or the location is +not inside the window, \fBFALSE\fR is returned. +.bP +If \fBto_screen\fR is +\fBFALSE\fR, the pointers \fBpY, pX\fR must reference window-relative +coordinates. +They are converted to stdscr-relative coordinates if the +window \fBwin\fR encloses this point. +In this case the function returns \fBTRUE\fR. +.bP +If one of the parameters is NULL or the point is not inside the +window, \fBFALSE\fR is returned. +The referenced coordinates +are only replaced by the converted coordinates if the transformation was +successful. +.SS mouse_trafo +.PP +The \fBmouse_trafo\fR function performs the same translation +as \fBwmouse_trafo\fR, +using stdscr for \fBwin\fR. +.SS mouseinterval +.PP +The \fBmouseinterval\fR function sets the maximum time (in thousands of a +second) that can elapse between press and release events for them to +be recognized as a click. +Use \fBmouseinterval(0)\fR to disable click resolution. +This function returns the previous interval value. +Use \fBmouseinterval(\-1)\fR to obtain the interval without altering it. +The default is one sixth of a second. +.SS has_mouse +.PP +The \fBhas_mouse\fP function returns \fBTRUE\fP if the mouse driver has been +successfully initialized. +.PP +Note that mouse events will be ignored when input is in cooked mode, and will +cause an error beep when cooked mode is being simulated in a window by a +function such as \fBgetstr\fR that expects a linefeed for input-loop +termination. +.SH RETURN VALUE +\fBgetmouse\fR and \fBungetmouse\fR +return the integer \fBERR\fR upon failure or \fBOK\fR +upon successful completion: +.RS 3 +.TP 5 +\fBgetmouse\fP +returns an error. +.bP +If no mouse driver was initialized, or +if the mask parameter is zero, +.bP +It also returns an error if no more events remain in the queue. +.TP 5 +\fBungetmouse\fP +returns an error if the FIFO is full. +.RE +.PP +\fBmousemask\fR +returns the mask of reportable events. +.PP +\fBmouseinterval\fR +returns the previous interval value, unless +the terminal was not initialized. +In that case, it returns the maximum interval value (166). +.PP +\fBwenclose\fR and \fBwmouse_trafo\fR +are boolean functions returning \fBTRUE\fR or \fBFALSE\fR depending +on their test result. +.SH PORTABILITY +These calls were designed for \fBncurses\fR(3X), and are not found in SVr4 +curses, 4.4BSD curses, or any other previous version of curses. +.PP +SVr4 curses had support for the mouse in a variant of \fBxterm\fP. +It is mentioned in a few places, but with no supporting documentation: +.bP +the \*(``libcurses\*('' manual page lists functions for this feature +which are prototyped in \fBcurses.h\fP: +.NS +extern int mouse_set(long int); +extern int mouse_on(long int); +extern int mouse_off(long int); +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); +.NE +.bP +the \*(``terminfo\*('' manual page lists capabilities for the feature +.NS +buttons btns BT Number of buttons on the mouse +get_mouse getm Gm Curses should get button events +key_mouse kmous Km 0631, Mouse event has occurred +mouse_info minfo Mi Mouse status information +req_mouse_pos reqmp RQ Request mouse position report +.NE +.bP +the interface made assumptions (as does ncurses) about the escape sequences +sent to and received from the terminal. +.IP +For instance +the SVr4 curses library used the \fBget_mouse\fP 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 \fBreq_mouse_pos\fP capability. +.IP +Those features required a terminal which had been modified to work with curses. +They were not part of the X Consortium's xterm. +.PP +When developing the xterm mouse support for ncurses in September 1995, +Eric Raymond was uninterested in using the same interface due to its +lack of documentation. +Later, in 1998, Mark Hesseling provided support in +PDCurses 2.3 using the SVr4 interface. +PDCurses, however, does not use video terminals, +making it unnecessary to be concerned about compatibility with the +escape sequences. +.PP +The feature macro \fBNCURSES_MOUSE_VERSION\fR is provided so the preprocessor +can be used to test whether these features are present. +If the interface is changed, the value of \fBNCURSES_MOUSE_VERSION\fR will be +incremented. +These values for \fBNCURSES_MOUSE_VERSION\fR may be +specified when configuring ncurses: +.RS 3 +.TP 3 +1 +has definitions for reserved events. +The mask uses 28 bits. +.TP 3 +2 +adds definitions for button 5, +removes the definitions for reserved events. +The mask uses 29 bits. +.RE +.PP +The order of the \fBMEVENT\fR structure members is not guaranteed. +Additional fields may be added to the structure in the future. +.PP +Under \fBncurses\fR(3X), these calls are implemented using either +xterm's built-in mouse-tracking API or +platform-specific drivers including +.RS 3 +.bP +Alessandro Rubini's gpm server +.bP +FreeBSD sysmouse +.bP +OS/2 EMX +.RE +.PP +If you are using an unsupported configuration, +mouse events will not be visible to +\fBncurses\fR(3X) (and the \fBmousemask\fR function will always +return \fB0\fR). +.PP +If the terminfo entry contains a \fBXM\fR string, +this is used in the xterm mouse driver to control the +way the terminal is initialized for mouse operation. +The default, if \fBXM\fR is not found, +corresponds to private mode 1000 of xterm: +.PP +.RS 3 +\\E[?1000%?%p1%{1}%=%th%el%; +.RE +.PP +The mouse driver also recognizes a newer xterm private mode 1006, e.g., +.PP +.RS 3 +\\E[?1006;1000%?%p1%{1}%=%th%el%; +.RE +.PP +The \fIz\fP member in the 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 \fBALL_MOUSE_EVENTS\fP class does not include \fBREPORT_MOUSE_POSITION\fP. +They are distinct. +For example, in xterm, +wheel/scrolling mice send position reports as a sequence of +presses of buttons 4 or 5 without matching button-releases. +.SH BUGS +Mouse events under xterm will not in fact be ignored during cooked mode, +if they have been enabled by \fBmousemask\fR. +Instead, the xterm mouse +report sequence will appear in the string read. +.PP +Mouse events under xterm will not be detected correctly in a window with +its keypad bit off, since they are interpreted as a variety of function key. +Your terminfo description should have \fBkmous\fR set to \*(``\\E[M\*('' +(the beginning of the response from xterm for mouse clicks). +Other values for \fBkmous\fR are permitted, +but under the same assumption, +i.e., it is the beginning of the response. +.PP +Because there are no standard terminal responses that would serve to identify +terminals which support the xterm mouse protocol, \fBncurses\fR assumes that +if \fBkmous\fR is defined in the terminal description, +or if the terminal description's primary name or aliases +contain the string \*(``xterm\*('', +then the terminal may send mouse events. +The \fBkmous\fP capability is checked first, +allowing the use of newer xterm mouse protocols +such as xterm's private mode 1006. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_kernel\fR(3X), +\fBcurs_slk\fR(3X), +\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_move.3x b/deps/ncurses-6.3/man/curs_move.3x similarity index 83% rename from deps/ncurses-5.9/man/curs_move.3x rename to deps/ncurses-6.3/man/curs_move.3x index 226595c..e0c1bf5 100644 --- a/deps/ncurses-5.9/man/curs_move.3x +++ b/deps/ncurses-6.3/man/curs_move.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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 * @@ -26,7 +27,7 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_move.3x,v 1.14 2010/12/04 18:40:45 tom Exp $ +.\" $Id: curs_move.3x,v 1.19 2020/10/24 09:39:41 tom Exp $ .TH curs_move 3X "" .na .hy 0 @@ -38,17 +39,19 @@ .SH SYNOPSIS \fB#include <curses.h>\fR .sp -\fBint move(int y, int x);\fR +\fBint move(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br -\fBint wmove(WINDOW *win, int y, int x);\fR +\fBint wmove(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR .br .SH DESCRIPTION These routines move the cursor associated with the window to line \fIy\fR and -column \fIx\fR. This routine does not move the physical cursor of the terminal -until \fBrefresh\fR is called. The position specified is relative to the upper +column \fIx\fR. +This routine does not move the physical cursor of the terminal +until \fBrefresh\fR(3X) is called. +The position specified is relative to the upper left-hand corner of the window, which is (0,0). .SH RETURN VALUE -These routines return \fBERR\fR upon failure and OK (SVr4 +These routines return \fBERR\fR upon failure and \fBOK\fP (SVr4 specifies only "an integer value other than \fBERR\fR") upon successful completion. .PP diff --git a/deps/ncurses-6.3/man/curs_opaque.3x b/deps/ncurses-6.3/man/curs_opaque.3x new file mode 100644 index 0000000..1d0cb55 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_opaque.3x @@ -0,0 +1,155 @@ +.\"*************************************************************************** +.\" Copyright 2020 Thomas E. Dickey * +.\" Copyright 2007-2014,2015 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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_opaque.3x,v 1.15 2020/10/24 09:41:22 tom Exp $ +.TH curs_opaque 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.na +.hy 0 +.SH NAME +\fBis_cleared\fR, +\fBis_idlok\fR, +\fBis_idcok\fR, +\fBis_immedok\fR, +\fBis_keypad\fR, +\fBis_leaveok\fR, +\fBis_nodelay\fR, +\fBis_notimeout\fR, +\fBis_pad\fR, +\fBis_scrollok\fR, +\fBis_subwin\fR, +\fBis_syncok\fR, +\fBwgetdelay\fR, +\fBwgetparent\fR, +\fBwgetscrreg\fR \- \fBcurses\fR window properties +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBbool is_cleared(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_idcok(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_idlok(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_immedok(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_keypad(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_leaveok(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_nodelay(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_notimeout(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_pad(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_scrollok(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_subwin(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBbool is_syncok(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBWINDOW * wgetparent(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint wgetdelay(const WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint wgetscrreg(const WINDOW *\fP\fIwin\fP\fB, int *\fP\fItop\fP\fB, int *\fP\fIbottom\fP\fB);\fR +.br +.SH DESCRIPTION +This implementation provides functions which return properties +set in the WINDOW structure, allowing it to be \*(``opaque\*('' if +the symbol \fBNCURSES_OPAQUE\fR is defined: +.TP 5 +\fBis_cleared\fR +returns the value set in \fBclearok\fR +.TP 5 +\fBis_idcok\fR +returns the value set in \fBidcok\fR +.TP 5 +\fBis_idlok\fR +returns the value set in \fBidlok\fR +.TP 5 +\fBis_immedok\fR +returns the value set in \fBimmedok\fR +.TP 5 +\fBis_keypad\fR +returns the value set in \fBkeypad\fR +.TP 5 +\fBis_leaveok\fR +returns the value set in \fBleaveok\fR +.TP 5 +\fBis_nodelay\fR +returns the value set in \fBnodelay\fR +.TP 5 +\fBis_notimeout\fR +returns the value set in \fBnotimeout\fR +.TP 5 +\fBis_pad\fR +returns \fBTRUE\fP if the window is a pad +i.e., created by \fBnewpad\fP +.TP 5 +\fBis_scrollok\fR +returns the value set in \fBscrollok\fR +.TP 5 +\fBis_subwin\fR +returns \fBTRUE\fP if the window is a subwindow, +i.e., created by \fBsubwin\fP or \fBderwin\fP +.TP 5 +\fBis_syncok\fR +returns the value set in \fBsyncok\fR +.TP 5 +\fBwgetdelay\fR +returns the delay timeout as set in \fBwtimeout\fP. +.TP 5 +\fBwgetparent\fR +returns the parent WINDOW pointer for subwindows, +or NULL for windows having no parent. +.TP 5 +\fBwgetscrreg\fR +returns the top and bottom rows for the scrolling margin +as set in \fBwsetscrreg\fP. +.SH RETURN VALUE +These functions all return \fBTRUE\fP or \fBFALSE\fP, except as noted. +.SH NOTES +Both a macro and a function are provided for each name. +.SH PORTABILITY +These routines are specific to ncurses. +They were not supported on Version 7, BSD or System V implementations. +It is recommended that any code depending on ncurses extensions +be conditioned using NCURSES_VERSION. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_inopts\fR(3X), +\fBcurs_outopts\fR(3X), +\fBcurs_window\fR(3X) diff --git a/deps/ncurses-5.9/man/curs_outopts.3x b/deps/ncurses-6.3/man/curs_outopts.3x similarity index 78% rename from deps/ncurses-5.9/man/curs_outopts.3x rename to deps/ncurses-6.3/man/curs_outopts.3x index 52c04cd..e4e7421 100644 --- a/deps/ncurses-5.9/man/curs_outopts.3x +++ b/deps/ncurses-6.3/man/curs_outopts.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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 * @@ -26,10 +27,14 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_outopts.3x,v 1.25 2010/12/04 18:38:55 tom Exp $ +.\" $Id: curs_outopts.3x,v 1.33 2020/10/03 22:04:09 tom Exp $ .TH curs_outopts 3X "" .na .hy 0 +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fBclearok\fR, \fBidlok\fR, @@ -38,39 +43,35 @@ \fBleaveok\fR, \fBsetscrreg\fR, \fBwsetscrreg\fR, -\fBscrollok\fR, -\fBnl\fR, -\fBnonl\fR \- \fBcurses\fR output options +\fBscrollok\fR \- \fBcurses\fR output options .ad .hy .SH SYNOPSIS \fB#include <curses.h>\fR .sp -\fBint clearok(WINDOW *win, bool bf);\fR -.br -\fBint idlok(WINDOW *win, bool bf);\fR -.br -\fBvoid idcok(WINDOW *win, bool bf);\fR -.br -\fBvoid immedok(WINDOW *win, bool bf);\fR +\fBint clearok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR .br -\fBint leaveok(WINDOW *win, bool bf);\fR +\fBint idlok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR .br -\fBint setscrreg(int top, int bot);\fR +\fBvoid idcok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR .br -\fBint wsetscrreg(WINDOW *win, int top, int bot);\fR +\fBvoid immedok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR .br -\fBint scrollok(WINDOW *win, bool bf);\fR +\fBint leaveok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR .br -\fBint nl(void);\fR +\fBint scrollok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.sp +\fBint setscrreg(int \fP\fItop\fP\fB, int \fP\fIbot\fP\fB);\fR .br -\fBint nonl(void);\fR +\fBint wsetscrreg(WINDOW *\fP\fIwin\fP\fB, int \fP\fItop\fP\fB, int \fP\fIbot\fP\fB);\fR .br .SH DESCRIPTION +.PP These routines set options that change the style of output within \fBcurses\fR. All options are initially \fBFALSE\fR, unless otherwise stated. -It is not necessary to turn these options off before calling \fBendwin\fR. +It is not necessary to turn these options off before calling \fBendwin\fR(3X). +.SS clearok .PP If \fBclearok\fR is called with \fBTRUE\fR as argument, the next call to \fBwrefresh\fR with this window will clear the screen completely and @@ -81,6 +82,7 @@ If the \fIwin\fR argument to \fBclearok\fR is the global variable \fBcurscr\fR, the next call to \fBwrefresh\fR with any window causes the screen to be cleared and repainted from scratch. +.SS idlok .PP If \fBidlok\fR is called with \fBTRUE\fR as second argument, \fBcurses\fR considers using the hardware insert/delete line feature of terminals so @@ -94,6 +96,7 @@ 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\fR redraws the changed portions of all lines. +.SS idcok .PP If \fBidcok\fR is called with \fBFALSE\fR as second argument, \fBcurses\fR no longer considers using the hardware insert/delete character feature of @@ -101,6 +104,7 @@ terminals so equipped. Use of character insert/delete is enabled by default. Calling \fBidcok\fR with \fBTRUE\fR as second argument re-enables use of character insertion and deletion. +.SS immedok .PP If \fBimmedok\fR is called with \fBTRUE as argument\fR, any change in the window image, such as the ones caused by \fBwaddch, wclrtobot, wscrl\fR, @@ -108,6 +112,7 @@ etc., automatically cause a call to \fBwrefresh\fR. However, it may degrade performance considerably, due to repeated calls to \fBwrefresh\fR. It is disabled by default. +.SS leaveok .PP Normally, the hardware cursor is left at the location of the window cursor being refreshed. @@ -115,6 +120,18 @@ The \fBleaveok\fR 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. +.SS scrollok +.PP +The \fBscrollok\fR 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\fR is \fBFALSE\fR), the cursor is left on the bottom +line. +If enabled, (\fIbf\fR is \fBTRUE\fR), 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\fR). +.SS setscrreg/wsetscrreg .PP The \fBsetscrreg\fR and \fBwsetscrreg\fR routines allow the application programmer to set a software scrolling region in a window. @@ -133,45 +150,20 @@ terminal, like that in the VT100. If \fBidlok\fR is enabled and the terminal has either a scrolling region or insert/delete line capability, they will probably be used by the output routines.) -.PP -The \fBscrollok\fR 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\fR is \fBFALSE\fR), the cursor is left on the bottom -line. -If enabled, (\fIbf\fR is \fBTRUE\fR), 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\fR). -.PP -The \fBnl\fR and \fBnonl\fR routines control whether the underlying display -device translates the return key into newline on input, and whether it -translates newline into return and line-feed on output (in either case, the -call \fBaddch('\\n')\fR does the equivalent of return and line feed on the -virtual screen). -Initially, these translations do occur. -If you disable them -using \fBnonl\fR, \fBcurses\fR will be able to make better use of the line-feed -capability, resulting in faster cursor motion. -Also, \fBcurses\fR will then be -able to detect the return key. .SH RETURN VALUE The functions \fBsetscrreg\fR and \fBwsetscrreg\fR return \fBOK\fR upon success and \fBERR\fR upon failure. All other routines that return an integer always return \fBOK\fR. .PP -X/Open does not define any error conditions. +X/Open Curses does not define any error conditions. .PP -In this implementation, those functions that have a window pointer -will return an error if the window pointer is null. -.RS -.TP 5 -.B wclrtoeol -returns an error -if the cursor position is about to wrap. -.TP 5 -.B wsetscrreg +In this implementation, +.bP +those functions that have a window pointer +will return an error if the window pointer is null +.bP +\fBwsetscrreg\fP returns an error if the scrolling region limits extend outside the window. .RE .PP @@ -181,19 +173,23 @@ if the window pointer is null. .SH PORTABILITY These functions are described in the XSI Curses standard, Issue 4. .PP -The XSI Curses standard is ambiguous on the question of whether \fBraw\fR() -should disable the CRLF translations controlled by \fBnl\fR() and \fBnonl\fR(). -BSD curses did turn off these translations; AT&T curses (at least as late as -SVr1) did not. -We choose to do so, on the theory that a programmer requesting -raw input wants a clean (ideally 8-bit clean) connection that the operating -system will not alter. +From the outset, ncurses used \fBnl\fP/\fBnonl\fP to control the conversion +of newlines to carriage return/line-feed on output as well as input. +XSI Curses documents only the use of these functions for input. +This difference arose from converting the \fIpcurses\fP source +(which used \fBioctl\fP calls with the \fBsgttyb\fP structure) +to termios (i.e., the POSIX terminal interface). +In the former, both input and output were controlled via a single +option \fBCRMOD\fP, +while the latter separates these features. +Because that conversion interferes with output optimization, +\fBnl\fP/\fBnonl\fP were amended after ncurses 6.2 +to eliminate their effect on output. .PP Some historic curses implementations had, as an undocumented feature, the ability to do the equivalent of \fBclearok(..., 1)\fR by saying \fBtouchwin(stdscr)\fR or \fBclear(stdscr)\fR. -This will not work under -ncurses. +This will not work under ncurses. .PP Earlier System V curses implementations specified that with \fBscrollok\fR enabled, any window modification triggering a scroll also forced a physical @@ -207,12 +203,17 @@ made invisible as a side-effect of \fBleaveok\fR. SVr4 curses documentation does this, but the code does not. Use \fBcurs_set\fR to make the cursor invisible. .SH NOTES -Note that \fBclearok\fR, \fBleaveok\fR, \fBscrollok\fR, \fBidcok\fR, \fBnl\fR, -\fBnonl\fR and \fBsetscrreg\fR may be macros. +Note that +\fBclearok\fR, +\fBleaveok\fR, +\fBscrollok\fR, +\fBidcok\fR, and +\fBsetscrreg\fR may be macros. .PP The \fBimmedok\fR routine is useful for windows that are used as terminal emulators. .SH SEE ALSO +.na \fBcurses\fR(3X), \fBcurs_addch\fR(3X), \fBcurs_clear\fR(3X), diff --git a/deps/ncurses-6.3/man/curs_overlay.3x b/deps/ncurses-6.3/man/curs_overlay.3x new file mode 100644 index 0000000..f80477f --- /dev/null +++ b/deps/ncurses-6.3/man/curs_overlay.3x @@ -0,0 +1,88 @@ +.\"*************************************************************************** +.\" Copyright 2020 Thomas E. Dickey * +.\" Copyright 1998-2013,2015 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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_overlay.3x,v 1.19 2020/02/02 23:34:34 tom Exp $ +.TH curs_overlay 3X "" +.na +.hy 0 +.SH NAME +\fBoverlay\fR, +\fBoverwrite\fR, +\fBcopywin\fR \- overlay and manipulate overlapped \fBcurses\fR windows +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint overlay(const WINDOW *\fP\fIsrcwin\fP\fB, WINDOW *\fP\fIdstwin\fP\fB);\fR +.br +\fBint overwrite(const WINDOW *\fP\fIsrcwin\fP\fB, WINDOW *\fP\fIdstwin\fP\fB);\fR +.br +\fBint copywin(const WINDOW *\fP\fIsrcwin\fP\fB, WINDOW *\fP\fIdstwin\fP\fB, int \fP\fIsminrow\fP\fB,\fR + \fBint \fP\fIsmincol\fP\fB, int \fP\fIdminrow\fP\fB, int \fP\fIdmincol\fP\fB, int \fP\fIdmaxrow\fP\fB,\fR + \fBint \fP\fIdmaxcol\fP\fB, int \fP\fIoverlay\fP\fB);\fR +.SH DESCRIPTION +.SS overlay, overwrite +The \fBoverlay\fR and \fBoverwrite\fR routines overlay \fIsrcwin\fR on +top of \fIdstwin\fR. +\fIscrwin\fR and \fIdstwin\fR are not required +to be the same size; only text where the two windows overlap is copied. +The difference is that \fBoverlay\fR is non-destructive +(blanks are not copied) whereas \fBoverwrite\fR is destructive. +.SS copywin +.PP +The \fBcopywin\fR routine provides a finer granularity of control over the +\fBoverlay\fR and \fBoverwrite\fR routines. +As in the \fBprefresh\fR routine, +a rectangle is specified in the destination window, (\fIdminrow\fR, +\fIdmincol\fR) and (\fIdmaxrow\fR, \fIdmaxcol\fR), and the upper-left-corner +coordinates of the source window, (\fIsminrow\fR, \fIsmincol\fR). +If the argument \fIoverlay\fR is \fBtrue\fR, +then copying is non-destructive, +as in \fBoverlay\fR. +.SH RETURN VALUE +Routines that return an integer return \fBERR\fR upon failure, and \fBOK\fR +(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful +completion. +.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. +.SH NOTES +Note that \fBoverlay\fR and \fBoverwrite\fR may be macros. +.SH PORTABILITY +The XSI Curses standard, Issue 4 describes these functions (adding the const +qualifiers). +It further specifies their behavior in the presence of characters +with multibyte renditions (not yet supported in this implementation). +.SH SEE ALSO +\fBcurses\fR(3X), \fBcurs_pad\fR(3X), \fBcurs_refresh\fR(3X) diff --git a/deps/ncurses-6.3/man/curs_pad.3x b/deps/ncurses-6.3/man/curs_pad.3x new file mode 100644 index 0000000..36fca52 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_pad.3x @@ -0,0 +1,242 @@ +.\"*************************************************************************** +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_pad.3x,v 1.26 2020/02/02 23:34:34 tom Exp $ +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.TH curs_pad 3X "" +.na +.hy 0 +.SH NAME +\fBnewpad\fR, +\fBsubpad\fR, +\fBprefresh\fR, +\fBpnoutrefresh\fR, +\fBpechochar\fR, +\fBpecho_wchar\fR \- create and display \fBcurses\fR pads +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBWINDOW *newpad(int \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB);\fR +.br +\fBWINDOW *subpad(WINDOW *\fP\fIorig\fP\fB, int \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR + \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR +.br +\fBint prefresh(WINDOW *\fP\fIpad\fP\fB, int \fP\fIpminrow\fP\fB, int \fP\fIpmincol\fP\fB,\fR + \fBint \fP\fIsminrow\fP\fB, int \fP\fIsmincol\fP\fB, int \fP\fIsmaxrow\fP\fB, int \fP\fIsmaxcol\fP\fB);\fR +.br +\fBint pnoutrefresh(WINDOW *\fP\fIpad\fP\fB, int \fP\fIpminrow\fP\fB, int \fP\fIpmincol\fP\fB,\fR + \fBint \fP\fIsminrow\fP\fB, int \fP\fIsmincol\fP\fB, int \fP\fIsmaxrow\fP\fB, int \fP\fIsmaxcol\fP\fB);\fR +.br +\fBint pechochar(WINDOW *\fP\fIpad\fP\fB, chtype \fP\fIch\fP\fB);\fR +.br +\fBint pecho_wchar(WINDOW *\fP\fIpad\fP\fB, const cchar_t *\fP\fIwch\fP\fB);\fR +.SH DESCRIPTION +.SS newpad +The \fBnewpad\fR routine creates and returns a pointer to a new pad data +structure with the given number of lines, \fInlines\fR, and columns, +\fIncols\fR. +A pad is like a window, except that it is not restricted by the +screen size, and is not necessarily associated with a particular part of the +screen. +Pads can be used when a large window is needed, and only a part of the +window will be on the screen at one time. +Automatic refreshes of pads +(e.g., from scrolling or echoing of input) do not occur. +.PP +It is not +legal to call \fBwrefresh\fR with a \fIpad\fR as an argument; the routines +\fBprefresh\fR or \fBpnoutrefresh\fR should be called instead. +Note that these +routines require additional parameters to specify the part of the pad to be +displayed and the location on the screen to be used for the display. +.SS subpad +.PP +The \fBsubpad\fR routine creates and returns a pointer to a subwindow within a +pad with the given number of lines, \fInlines\fR, and columns, \fIncols\fR. +Unlike \fBsubwin\fR, which uses screen coordinates, the window is at position +(\fIbegin\fR_\fIx\fR\fB,\fR \fIbegin\fR_\fIy\fR) on the pad. +The window is +made in the middle of the window \fIorig\fR, so that changes made to one window +affect both windows. +During the use of this routine, it will often be +necessary to call \fBtouchwin\fR or \fBtouchline\fR on \fIorig\fR before +calling \fBprefresh\fR. +.SS prefresh, pnoutrefresh +.PP +The \fBprefresh\fR and \fBpnoutrefresh\fR routines are analogous to +\fBwrefresh\fR and \fBwnoutrefresh\fR except that they relate to pads instead +of windows. +The additional parameters are needed to indicate what part of the +pad and screen are involved. +.bP +The \fIpminrow\fR and \fIpmincol\fR parameters specify the upper +left-hand corner of the rectangle to be displayed in the pad. +.bP +The \fIsminrow\fR, +\fIsmincol\fR, \fIsmaxrow\fR, and \fIsmaxcol\fR +parameters specify the edges of the +rectangle to be displayed on the screen. +.PP +The lower right-hand corner of the +rectangle to be displayed in the pad is calculated from the screen coordinates, +since the rectangles must be the same size. +Both rectangles must be entirely +contained within their respective structures. +Negative values of +\fIpminrow\fR, \fIpmincol\fR, \fIsminrow\fR, or \fIsmincol\fR are treated as if +they were zero. +.SS pechochar +.PP +The \fBpechochar\fR routine is functionally equivalent to a call to \fBaddch\fR +followed by a call to \fBrefresh\fR(3X), +a call to \fBwaddch\fR followed by a call +to \fBwrefresh\fR, or a call to \fBwaddch\fR followed by a call to +\fBprefresh\fR. +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 these routines instead of their +equivalents. +In the case of \fBpechochar\fR, the last location of the pad on +the screen is reused for the arguments to \fBprefresh\fR. +.SS pecho_wchar +.PP +The \fBpecho_wchar\fR function is the analogous wide-character +form of \fBpechochar\fR. +It outputs one character to a pad and immediately refreshes the pad. +It does this by a call to \fBwadd_wch\fR followed by a call to \fBprefresh\fR. +.SH RETURN VALUE +Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR +(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful +completion. +.PP +Routines that return pointers return \fBNULL\fR on error, and set \fBerrno\fR +to \fBENOMEM\fR. +.PP +X/Open does not define any error conditions. +In this implementation +.RS 3 +.TP 5 +\fBprefresh\fP and \fBpnoutrefresh\fP +return an error +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 \fBwechochar\fP returns an error. +.TP 5 +\fBpecho_wchar\fP +returns an error +if the window is not really a pad, and the associated call +to \fBwecho_wchar\fP returns an error. +.RE +.SH NOTES +Note that \fBpechochar\fR may be a macro. +.SH PORTABILITY +BSD curses has no \fIpad\fP feature. +.PP +SVr2 curses (1986) provided the \fBnewpad\fP and related functions, +documenting them in a single line each. +SVr3 (1987) provided more extensive documentation. +.PP +The documentation does not explain the term \fIpad\fP. +However, the Apollo \fIAegis\fP workstation operating system +supported a graphical \fIpad\fP 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, +and select text from the pad. +.PP +The two uses may be related. +.PP +The XSI Curses standard, Issue 4 describes these functions, +without significant change from the SVr3 documentation. +It describes no error conditions. +The behavior of \fBsubpad\fP if the parent window is not +a pad is undocumented, +and is not checked by the vendor Unix implementations: +.bP +SVr4 curses sets a flag in the \fBWINDOW\fP structure in \fBnewpad\fP +which tells if the window is a \fIpad\fP. +.IP +However, it uses this information only in +\fBwaddch\fP (to decide if it should call \fBwrefresh\fP) and +\fBwscrl\fP (to avoid scrolling a pad), +and does not check in \fBwrefresh\fP to ensure that the pad +is refreshed properly. +.bP +Solaris X/Open Curses checks if a window is a pad in \fBwnoutrefresh\fP, +returning \fBERR\fP in that case. +.IP +However, it only sets the flag for subwindows if the parent window is a pad. +Its \fBnewpad\fP function does not set this information. +Consequently, the check will never fail. +.IP +It makes no comparable check in \fBpnoutrefresh\fP, +though interestingly enough, a comment in the source code +states that the lack of a check was an MKS extension. +.bP +NetBSD 7 curses +sets a flag in the \fBWINDOW\fP structure for \fBnewpad\fP and \fBsubpad\fP, +using this to help with the distinction between \fBwnoutrefresh\fP +and \fBpnoutrefresh\fP. +.IP +It does not check for the case where a subwindow is created in +a pad using \fBsubwin\fP or \fBderwin\fP. +.IP +The \fBdupwin\fP function returns a regular window when duplicating a pad. +Likewise, \fBgetwin\fP always returns a window, even if the saved +data was from a pad. +.PP +This implementation +.bP +sets a flag in the \fBWINDOW\fP structure for \fBnewpad\fP and \fBsubpad\fP, +.bP +allows a \fBsubwin\fP or \fBderwin\fP call to succeed having a pad parent by +forcing the subwindow to be a pad, +.bP +checks in both \fBwnoutrefresh\fP and \fBpnoutrefresh\fP to ensure +that pads and windows are handled distinctly, and +.bP +ensures that \fBdupwin\fP and \fBgetwin\fP treat +pads versus windows consistently. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_touch\fR(3X), +\fBcurs_addch\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_print.3x b/deps/ncurses-6.3/man/curs_print.3x similarity index 85% rename from deps/ncurses-5.9/man/curs_print.3x rename to deps/ncurses-6.3/man/curs_print.3x index 31a4535..8bde817 100644 --- a/deps/ncurses-5.9/man/curs_print.3x +++ b/deps/ncurses-6.3/man/curs_print.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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 * @@ -26,29 +27,32 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_print.3x,v 1.10 2010/12/04 18:40:45 tom Exp $ +.\" $Id: curs_print.3x,v 1.16 2020/10/24 09:25:14 tom Exp $ .TH curs_print 3X "" .SH NAME \fBmcprint\fR \- ship binary data to printer .SH SYNOPSIS \fB#include <curses.h>\fR .sp -\fBint mcprint(char *data, int len);\fR +\fBint mcprint(char *\fP\fIdata\fP\fB, int \fP\fIlen\fP\fB);\fR .SH DESCRIPTION This function uses the \fBmc5p\fR or \fBmc4\fR and \fBmc5\fR capabilities, if they are present, to ship given data to a printer attached to the terminal. .PP Note that the \fBmcprint\fR code has no way to do flow control with the printer -or to know how much buffering it has. Your application is responsible for +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). Dot-matrix printers and +(typically about half of its nominal 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. . .SH RETURN VALUE The \fBmcprint\fR function returns \fBERR\fR if the write operation aborted -for some reason. In this case, errno will contain either an error associated -with \fBwrite(2)\fR or one of the following: +for some reason. +In this case, \fBerrno\fP will contain either an error associated +with \fBwrite\fP(2) or one of the following: .TP 5 ENODEV Capabilities for printer redirection do not exist. @@ -65,4 +69,4 @@ in SVr4 curses, 4.4BSD curses, or any other previous version of curses. Padding in the \fBmc5p\fR, \fBmc4\fR and \fBmc5\fR capabilities will not be interpreted. .SH SEE ALSO -\fBcurses\fR(3X)\fR +\fBcurses\fR(3X) diff --git a/deps/ncurses-6.3/man/curs_printw.3x b/deps/ncurses-6.3/man/curs_printw.3x new file mode 100644 index 0000000..4980517 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_printw.3x @@ -0,0 +1,154 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_printw.3x,v 1.28 2020/10/24 09:22:45 tom Exp $ +.TH curs_printw 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBprintw\fR, +\fBwprintw\fR, +\fBmvprintw\fR, +\fBmvwprintw\fR, +\fBvwprintw\fR, \fBvw_printw\fR \- print formatted output in \fBcurses\fR windows +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint printw(const char *\fP\fIfmt\fP\fB, ...);\fR +.br +\fBint wprintw(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fR +.br +\fBint mvprintw(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fR +.br +\fBint mvwprintw(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fR +.br +\fBint vw_printw(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIfmt\fP\fB, va_list \fP\fIvarglist\fP\fB);\fR +.sp +/* obsolete */ +.br +\fBint vwprintw(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIfmt\fP\fB, va_list \fP\fIvarglist\fP\fB);\fR +.SH DESCRIPTION +The \fBprintw\fR, \fBwprintw\fR, \fBmvprintw\fR and \fBmvwprintw\fR +routines are analogous to \fBprintf\fR [see \fBprintf\fR(3)]. +In +effect, the string that would be output by \fBprintf\fR is output +instead as though \fBwaddstr\fR were used on the given window. +.PP +The \fBvwprintw\fR and \fBvw_printw\fR routines are analogous +to \fBvprintf\fR [see \fBprintf\fR(3)] +and perform a \fBwprintw\fR using a variable argument list. +The third argument is a \fBva_list\fR, a pointer to a +list of arguments, as defined in \fB<stdarg.h>\fR. +.SH RETURN VALUE +Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR +(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful +completion. +.PP +X/Open defines no error conditions. +In this implementation, +an error may be returned if it cannot allocate enough memory for the +buffer used to format the results. +It will return an error if the window pointer is null. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH HISTORY +While \fBprintw\fP was implemented in 4BSD, +it was unused until 4.2BSD (which used it in games). +That early version of curses was before the ANSI C standard. +It did not use <varargs.h>, though that was available. +In 1991 (a couple of years after SVr4 was generally available, +and after the C standard was published), +other developers updated the library, +using <stdarg.h> internally in 4.4BSD curses. +Even with this improvement, +BSD curses did not use function prototypes (or even declare +functions) in the <curses.h> header until 1992. +.PP +SVr2 documented +\fBprintw\fP, +\fBwprintw\fP +tersely as \*(``printf on \fIstdscr\fP\*('' and +tersely as \*(``printf on \fIwin\fP\*('', respectively. +.PP +SVr3 added +\fBmvprintw\fP, and +\fBmvwprintw\fP, with a three-line summary saying that they were analogous +to \fBprintf\fP(3), +explaining that the string which would be output from \fBprintf\fP(3) would +instead be output using \fBwaddstr\fP on the given window. +SVr3 also added \fBvwprintw\fP, saying that the third parameter +is a \fBva_list\fP, defined in <varargs.h>, +and referring the reader to the manual pages for \fIvarargs\fP and +\fIvprintf\fP for detailed descriptions. +.PP +SVr4 added no new variations of \fBprintw\fP, +but provided for using <varargs.h> or <stdarg.h> to define the \fBva_list\fP +type. +.PP +X/Open Curses added \fBvw_printw\fP to replace \fBvwprintw\fP, +stating that its \fBva_list\fP definition requires <stdarg.h>. +.SH PORTABILITY +In this implementation, \fBvw_printw\fP and \fBvwprintw\fP are equivalent, +to support legacy applications. +However, the latter (\fBvwprintw\fP) is obsolete: +.bP +The XSI Curses standard, Issue 4 described these functions. +The function +\fBvwprintw\fR is marked TO BE WITHDRAWN, and is to be replaced by a function +\fBvw_printw\fR using the \fB<stdarg.h>\fR interface. +.bP +The Single Unix Specification, Version 2 states that +\fBvw_printw\fR is preferred to \fBvwprintw\fR since the latter requires +including \fB<varargs.h>\fR, which +cannot be used in the same file as \fB<stdarg.h>\fR. +This implementation uses \fB<stdarg.h>\fR for both, +because that header is included in \fB<curses.h\fR>. +.bP +X/Open Curses, Issue 5 (December 2007) marked \fBvwprintw\fP (along with +\fBvwscanw\fP and the termcap interface) as withdrawn. +.SH SEE ALSO +.na +\fBcurses\fR(3X), +\fBcurs_addstr\fR(3X), +\fBcurs_scanw\fR(3X), +\fBcurs_termcap\fP(3X), +\fBprintf\fR(3), +\fBvprintf\fR(3). diff --git a/deps/ncurses-6.3/man/curs_refresh.3x b/deps/ncurses-6.3/man/curs_refresh.3x new file mode 100644 index 0000000..4c4b8e7 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_refresh.3x @@ -0,0 +1,163 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2016 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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_refresh.3x,v 1.22 2020/10/24 09:43:49 tom Exp $ +.TH curs_refresh 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBdoupdate\fR, +\fBredrawwin\fR, +\fBrefresh\fR, +\fBwnoutrefresh\fR, +\fBwredrawln\fR, +\fBwrefresh\fR \- refresh \fBcurses\fR windows and lines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint refresh(void);\fR +.br +\fBint wrefresh(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint wnoutrefresh(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint doupdate(void);\fR +.sp +\fBint redrawwin(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint wredrawln(WINDOW *\fP\fIwin\fP\fB, int \fP\fIbeg_line\fP\fB, int \fP\fInum_lines\fP\fB);\fR +.br +.SH DESCRIPTION +.SS refresh/wrefresh +The \fBrefresh\fR and \fBwrefresh\fR routines (or \fBwnoutrefresh\fR and +\fBdoupdate\fR) must be called to get actual output to the terminal, +as other routines merely manipulate data structures. +The routine \fBwrefresh\fR copies +the named window to the \fIphysical screen\fP, +taking into account what is already there to do optimizations. +The \fBrefresh\fR routine is the +same, using \fBstdscr\fR as the default window. +Unless \fBleaveok\fR has been +enabled, the physical cursor of the terminal is left at the location of the +cursor for that window. +.SS wnoutrefresh/doupdate +.PP +The \fBwnoutrefresh\fR and \fBdoupdate\fR routines allow multiple updates with +more efficiency than \fBwrefresh\fR alone. +In addition to all the window +structures, \fBcurses\fR keeps two data structures representing the terminal +screen: +.bP +a \fIphysical screen\fP, describing what is actually on the screen, and +.bP +a \fIvirtual screen\fP, describing what the programmer wants to have on the screen. +.PP +The routine \fBwrefresh\fR works by +.bP +first calling \fBwnoutrefresh\fR, +which copies the named window to the \fIvirtual screen\fP, and +.bP +then calling \fBdoupdate\fR, which compares +the \fIvirtual screen\fP to the \fIphysical screen\fP +and does the actual update. +.PP +If the programmer wishes to output several windows at once, a series +of calls to \fBwrefresh\fR results in alternating calls to \fBwnoutrefresh\fR +and \fBdoupdate\fR, causing several bursts of output to the screen. +By first +calling \fBwnoutrefresh\fR for each window, it is then possible to call +\fBdoupdate\fR once, resulting in only one burst of output, with fewer total +characters transmitted and less CPU time used. +.PP +If the \fIwin\fR argument to +\fBwrefresh\fR is the \fIphysical screen\fP +(i.e., the global variable \fBcurscr\fR), +the screen is immediately cleared and repainted from scratch. +.PP +The phrase \*(``copies the named window +to the virtual screen\*('' above is ambiguous. +What actually happens is that all \fItouched\fR (changed) lines in the window +are copied to the virtual screen. +This affects programs that use overlapping +windows; it means that if two windows overlap, you can refresh them in either +order and the overlap region will be modified only when it is explicitly +changed. +(But see the section on \fBPORTABILITY\fR below for a warning about +exploiting this behavior.) +.SS wredrawln/redrawwin +.PP +The \fBwredrawln\fR routine indicates to \fBcurses\fR that some screen lines +are corrupted and should be thrown away before anything is written over them. +It touches the indicated lines (marking them changed). +The routine \fBredrawwin\fR touches the entire window. +.SH RETURN VALUE +Routines that return an integer return \fBERR\fR upon failure, and \fBOK\fR +(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful +completion. +.PP +X/Open does not define any error conditions. +In this implementation +.RS 3 +.TP 5 +\fBwnoutrefresh\fP +returns an error +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. +.RE +.SH NOTES +Note that \fBrefresh\fR and \fBredrawwin\fR may be macros. +.SH PORTABILITY +The XSI Curses standard, Issue 4 describes these functions. +.PP +Whether \fBwnoutrefresh\fR copies to the virtual screen the entire contents +of a window or just its changed portions has never been well-documented in +historic curses versions (including SVr4). +It might 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 \fBtouchwin\fR before the +\fBwnoutrefresh\fR call to guarantee an entire-contents copy anywhere. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_outopts\fR(3X) +\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_scanw.3x b/deps/ncurses-6.3/man/curs_scanw.3x new file mode 100644 index 0000000..1de9ad8 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_scanw.3x @@ -0,0 +1,169 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_scanw.3x,v 1.28 2020/10/24 09:29:26 tom Exp $ +.TH curs_scanw 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBscanw\fR, +\fBwscanw\fR, +\fBmvscanw\fR, +\fBmvwscanw\fR, +\fBvwscanw\fR, \fBvw_scanw\fR \- convert formatted input from a \fBcurses\fR window +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint scanw(const char *\fP\fIfmt\fP\fB, ...);\fR +.br +\fBint wscanw(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fR +.br +\fBint mvscanw(int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fR +.br +\fBint mvwscanw(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB, const char *\fP\fIfmt\fP\fB, ...);\fR +.sp +\fBint vw_scanw(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIfmt\fP\fB, va_list \fP\fIvarglist\fP\fB);\fR +.sp +/* obsolete */ +.br +\fBint vwscanw(WINDOW *\fP\fIwin\fP\fB, const char *\fP\fIfmt\fP\fB, va_list \fP\fIvarglist\fP\fB);\fR +.SH DESCRIPTION +The \fBscanw\fR, \fBwscanw\fR and \fBmvscanw\fR routines are analogous to +\fBscanf\fR [see \fBscanf\fR(3)]. +The effect of these routines is as though +\fBwgetstr\fR were called on the window, and the resulting line used as input +for \fBsscanf\fR(3). +Fields which do not map to a variable in the \fIfmt\fR +field are lost. +.PP +The \fBvwscanw\fR and \fBvw_scanw\fR routines are analogous to \fBvscanf\fR(3). +They perform a \fBwscanw\fR using a variable argument list. +The third argument is a \fIva_list\fR, +a pointer to a list of arguments, as defined in \fB<stdarg.h>\fR. +.SH RETURN VALUE +\fBvwscanw\fR returns \fBERR\fR on failure and an integer equal to the +number of fields scanned on success. +.PP +Applications may use the return value from the \fBscanw\fR, \fBwscanw\fR, +\fBmvscanw\fR and \fBmvwscanw\fR routines to determine the number of fields +which were mapped in the call. +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +.SH HISTORY +While \fBscanw\fP was implemented in 4BSD, +none of the BSD releases used it until 4.4BSD (in a game). +That early version of curses was before the ANSI C standard. +It did not use <varargs.h>, though that was available. +In 1991 (a couple of years after SVr4 was generally available, +and after the C standard was published), +other developers updated the library, +using <stdarg.h> internally in 4.4BSD curses. +Even with this improvement, +BSD curses did not use function prototypes (or even declare +functions) in the <curses.h> header until 1992. +.PP +SVr2 documented +\fBscanw\fP, +\fBwscanw\fP +tersely as \*(``scanf through \fIstdscr\fP\*('' and +tersely as \*(``scanf through \fIwin\fP\*('', respectively. +.PP +SVr3 added +\fBmvscanw\fP, and +\fBmvwscanw\fP, with a three-line summary saying that they were analogous +to \fBscanf\fP(3), +explaining that the string which would be output from \fBscanf\fP(3) would +instead be output using \fBwaddstr\fP on the given window. +SVr3 also added \fBvwscanw\fP, saying that the third parameter +is a \fBva_list\fP, defined in <varargs.h>, +and referring the reader to the manual pages for \fIvarargs\fP and +\fIvprintf\fP for detailed descriptions. +(Because the SVr3 documentation does not mention \fIvscanf\fP, +that reference to \fIvprintf\fP may not be an error). +.PP +SVr4 added no new variations of \fBscanw\fP, +but provided for using <varargs.h> or <stdarg.h> to define the \fBva_list\fP +type. +.PP +X/Open Curses added \fBvw_scanw\fP to replace \fBvwscanw\fP, +stating that its \fBva_list\fP definition requires <stdarg.h>. +.SH PORTABILITY +In this implementation, \fBvw_scanw\fP and \fBvwscanw\fP are equivalent, +to support legacy applications. +However, the latter (\fBvwscanw\fP) is obsolete: +.bP +The XSI Curses standard, Issue 4 described these functions, +noting that the function +\fBvwscanw\fR is marked TO BE WITHDRAWN, and is to be replaced by a function +\fBvw_scanw\fR using the \fB<stdarg.h>\fR interface. +.bP +The Single Unix Specification, Version 2 states that +\fBvw_scanw\fR is preferred to \fBvwscanw\fR since the latter requires +including \fB<varargs.h>\fR, which +cannot be used in the same file as \fB<stdarg.h>\fR. +This implementation uses \fB<stdarg.h>\fR for both, because that header +is included in \fB<curses.h\fR>. +.bP +X/Open Curses, Issue 5 (December 2007) marked \fBvwscanw\fP (along with +\fBvwprintw\fP and the termcap interface) as withdrawn. +.LP +Both XSI and The Single Unix Specification, Version 2 state that these +functions return \fBERR\fP or \fBOK\fP. +.bP +Since the underlying \fBscanf\fR(3) can return the number of items scanned, +and the SVr4 code was documented to use this feature, +this is probably an editing error which was introduced in XSI, +rather than being done intentionally. +.bP +This implementation returns the number of items scanned, +for compatibility with SVr4 curses. +As of 2018, NetBSD curses also returns the number of items scanned. +Both ncurses and NetBSD curses call \fBvsscanf\fP to scan the string, +which returns \fBEOF\fP on error. +.bP +Portable applications should only test if the return value is \fBERR\fP, +since the \fBOK\fP value (zero) is likely to be misleading. +.IP +One possible way to get useful results would be to use a "%n" conversion +at the end of the format string to ensure that something was processed. +.SH SEE ALSO +.na +\fBcurses\fR(3X), +\fBcurs_getstr\fR(3X), +\fBcurs_printw\fR(3X), +\fBcurs_termcap\fP(3X), +\fBscanf\fR(3). diff --git a/deps/ncurses-6.3/man/curs_scr_dump.3x b/deps/ncurses-6.3/man/curs_scr_dump.3x new file mode 100644 index 0000000..faa6144 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_scr_dump.3x @@ -0,0 +1,120 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_scr_dump.3x,v 1.17 2021/10/20 22:37:48 tom Exp $ +.TH curs_scr_dump 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBscr_dump\fR, +\fBscr_restore\fR, +\fBscr_init\fR, +\fBscr_set\fR \- read (write) a \fBcurses\fR screen from (to) a file +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint scr_dump(const char *\fP\fIfilename\fP\fB);\fR +.br +\fBint scr_restore(const char *\fP\fIfilename\fP\fB);\fR +.br +\fBint scr_init(const char *\fP\fIfilename\fP\fB);\fR +.br +\fBint scr_set(const char *\fP\fIfilename\fP\fB);\fR +.br +.SH DESCRIPTION +.SS scr_dump +.PP +The \fBscr_dump\fR routine dumps the current contents +of the \fIvirtual screen\fP +to the file \fIfilename\fR. +.SS scr_restore +.PP +The \fBscr_restore\fR routine sets the \fIvirtual screen\fP to the contents +of \fIfilename\fR, which must have been written using \fBscr_dump\fR. +The next call to \fBdoupdate\fR restores +the \fIphysical screen\fP to the way it looked in the dump file. +.SS scr_init +.PP +The \fBscr_init\fR routine reads in the contents of \fIfilename\fR and uses +them to initialize the \fBcurses\fR data structures about what the terminal +currently has on its screen. +If the data is determined to be valid, +\fBcurses\fR bases its next update of the screen on this information rather +than clearing the screen and starting from scratch. +\fBscr_init\fR is used +after \fBinitscr\fR or a \fBsystem\fR call to share +the screen with another process which has done a \fBscr_dump\fR after its +\fBendwin\fR(3X) call. +The data is declared invalid +.bP +if the terminfo capabilities \fBrmcup\fR and \fBnrrmc\fR exist, also +.bP +if the terminal has been written to since the preceding \fBscr_dump\fR call. +.SS scr_set +.PP +The \fBscr_set\fR routine is a combination of \fBscr_restore\fR and +\fBscr_init\fR. It tells the program that the information in \fIfilename\fR 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. +.PP +To read (write) a window from (to) a file, use the \fBgetwin\fR and +\fBputwin\fR routines [see \fBcurs_util\fR(3X)]. +.SH RETURN VALUE +All routines return the integer \fBERR\fR upon failure and \fBOK\fR +upon success. +.PP +X/Open defines no error conditions. +In this implementation, +each will return an error if the file cannot be opened. +.SH NOTES +Note that \fBscr_init\fR, \fBscr_set\fR, and \fBscr_restore\fR may be macros. +.SH PORTABILITY +The XSI Curses standard, Issue 4, describes these functions (adding the const +qualifiers). +.PP +The SVr4 docs merely say under \fBscr_init\fR that the dump data is also +considered invalid "if the time-stamp of the tty is old" but do not define +\*(``old\*(''. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_initscr\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_util\fR(3X), +\fBscr_dump\fR(5), +\fBsystem\fR(3) diff --git a/deps/ncurses-5.9/man/curs_scroll.3x b/deps/ncurses-6.3/man/curs_scroll.3x similarity index 85% rename from deps/ncurses-5.9/man/curs_scroll.3x rename to deps/ncurses-6.3/man/curs_scroll.3x index 2cb152d..d9e45f2 100644 --- a/deps/ncurses-5.9/man/curs_scroll.3x +++ b/deps/ncurses-6.3/man/curs_scroll.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2006,2010 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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_scroll.3x,v 1.15 2010/12/04 18:40:45 tom Exp $ +.\" $Id: curs_scroll.3x,v 1.19 2020/10/24 09:45:48 tom Exp $ .TH curs_scroll 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .na .hy 0 .SH NAME @@ -39,19 +44,19 @@ .SH SYNOPSIS \fB#include <curses.h>\fR .sp -\fBint scroll(WINDOW *win);\fR -.br -\fBint scrl(int n);\fR +\fBint scroll(WINDOW *\fP\fIwin\fP\fB);\fR +.sp +\fBint scrl(int \fP\fIn\fP\fB);\fR .br -\fBint wscrl(WINDOW *win, int n);\fR +\fBint wscrl(WINDOW *\fP\fIwin\fP\fB, int \fP\fIn\fP\fB);\fR .br .SH DESCRIPTION The \fBscroll\fR routine scrolls the window up one line. This involves moving the lines in the window data structure. As an optimization, if the scrolling -region of the window is the entire screen, the physical screen may be scrolled -at the same time. +region of the window is the entire screen, +the \fIphysical screen\fP may be scrolled at the same time. .PP For positive \fIn\fR, the \fBscrl\fR and \fBwscrl\fR routines scroll the window up \fIn\fR lines (line \fIi\fR+\fIn\fR becomes \fIi\fR); otherwise @@ -74,8 +79,8 @@ if scrolling is not enabled in the window, e.g., with \fBscrollok\fP. Note that \fBscrl\fR and \fBscroll\fR may be macros. .PP The SVr4 documentation says that the optimization of physically scrolling -immediately if the scroll region is the entire screen "is" performed, not -"may be" performed. +immediately if the scroll region is the entire screen \*(``is\*('' performed, not +\*(``may be\*('' performed. This implementation deliberately does not guarantee that this will occur, to leave open the possibility of smarter optimization of multiple scroll actions on the next update. diff --git a/deps/ncurses-6.3/man/curs_slk.3x b/deps/ncurses-6.3/man/curs_slk.3x new file mode 100644 index 0000000..d09d6c7 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_slk.3x @@ -0,0 +1,320 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_slk.3x,v 1.38 2021/06/17 21:26:02 tom Exp $ +.TH curs_slk 3X "" +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBslk_init\fR, +\fBslk_set\fR, +\fBslk_wset\fR, +\fBslk_refresh\fR, +\fBslk_noutrefresh\fR, +\fBslk_label\fR, +\fBslk_clear\fR, +\fBslk_restore\fR, +\fBslk_touch\fR, +\fBslk_attron\fR, +\fBslk_attrset\fR, +\fBslk_attroff\fR, +\fBslk_attr_on\fR, +\fBslk_attr_set\fR, +\fBslk_attr_off\fR, +\fBslk_attr\fR, +\fBslk_color\fR, +\fBextended_slk_color\fR \- \fBcurses\fR soft label routines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint slk_init(int \fP\fIfmt\fP\fB);\fR +.sp +\fBint slk_set(int \fP\fIlabnum\fP\fB, const char *\fP\fIlabel\fP\fB, int \fP\fIfmt\fP\fB);\fR +.br +/* extension */ +.br +\fBint slk_wset(int \fP\fIlabnum\fP\fB, const wchar_t *\fP\fIlabel\fP\fB, int \fP\fIfmt\fP\fB);\fR +.sp +\fBchar *slk_label(int \fP\fIlabnum\fP\fB);\fR +.sp +\fBint slk_refresh(void);\fR +.br +\fBint slk_noutrefresh(void);\fR +.br +\fBint slk_clear(void);\fR +.br +\fBint slk_restore(void);\fR +.br +\fBint slk_touch(void);\fR +.sp +\fBint slk_attron(const chtype \fP\fIattrs\fP\fB);\fR +.br +\fBint slk_attroff(const chtype \fP\fIattrs\fP\fB);\fR +.br +\fBint slk_attrset(const chtype \fP\fIattrs\fP\fB);\fR +.br +\fBint slk_attr_on(attr_t \fP\fIattrs\fP\fB, void* \fP\fIopts\fP\fB);\fR +.br +\fBint slk_attr_off(const attr_t \fP\fIattrs\fP\fB, void * \fP\fIopts\fP\fB);\fR +.br +\fBint slk_attr_set(const attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void* \fP\fIopts\fP\fB);\fR +.sp +\fBattr_t slk_attr(void);\fR +.sp +\fBint slk_color(short \fP\fIpair\fP\fB);\fR +.br +/* extension */ +.br +\fBint extended_slk_color(int \fP\fIpair\fP\fB);\fR +.SH DESCRIPTION +The slk* functions manipulate the set of soft function-key labels that exist on +many terminals. +For those terminals that do not have soft labels, +\fBcurses\fR takes over the bottom line of \fBstdscr\fR, reducing the size of +\fBstdscr\fR and the variable \fBLINES\fR. +\fBcurses\fR standardizes on eight +labels of up to eight characters each. +In addition to this, the ncurses +implementation supports a mode where it simulates 12 labels of up to five +characters each. +This is useful for PC-like enduser devices. +ncurses simulates this mode by taking over up to two lines at +the bottom of the screen; +it does not try to use any hardware support for this +mode. +.SS Initialization +.PP +The \fBslk_init\fR routine must be called before \fBinitscr\fR or \fBnewterm\fR +is called. +If \fBinitscr\fR eventually uses a line from \fBstdscr\fR to +emulate the soft labels, +then \fIfmt\fR determines how the labels are arranged on the screen: +.RS 3 +.TP 3 +.B 0 +indicates a 3\-2\-3 arrangement of +the labels. +.TP 3 +.B 1 +indicates a 4\-4 arrangement +.TP 3 +.B 2 +indicates the PC-like 4\-4\-4 mode. +.TP 3 +.B 3 +is again the PC-like 4\-4\-4 mode, +but in addition an index line is generated, helping the user to +identify the key numbers easily. +.RE +.SS Labels +.PP +The \fBslk_set\fR routine +(and the \fBslk_wset\fR routine for the wide-character library) +has three parameters: +.RS 3 +.TP 5 +.I labnum +is the label number, from \fB1\fR to \fB8\fR +(12 for \fIfmt\fP in \fBslk_init\fP is \fB2\fP or \fB3\fP); +.TP +.I label +is be the string to put on the label, +up to eight +(five for \fIfmt\fP in \fBslk_init\fP is \fB2\fP or \fB3\fP) +characters in length. +A null string or a null pointer sets up a blank label. +.TP +.I fmt +is either +\fB0\fR, \fB1\fR, or \fB2\fR, indicating whether the label is to be +left-justified, centered, or right-justified, respectively, within the +label. +.RE +.PP +The \fBslk_label\fR routine returns the current label for label number +\fIlabnum\fR, with leading and trailing blanks stripped. +.SS Screen updates +.PP +The \fBslk_refresh\fR and \fBslk_noutrefresh\fR routines correspond to +the \fBwrefresh\fR and \fBwnoutrefresh\fR routines. +.PP +The \fBslk_clear\fR routine clears the soft labels from the screen. +.PP +The \fBslk_restore\fR routine restores the soft labels to the screen +after a \fBslk_clear\fR has been performed. +.PP +The \fBslk_touch\fR routine forces all the soft labels to be output +the next time a \fBslk_noutrefresh\fR is performed. +.SS Video attributes +.PP +The +\fBslk_attron\fR, \fBslk_attrset\fR, \fBslk_attroff\fR and \fBslk_attr\fR +routines correspond to +\fBattron\fR, \fBattrset\fR, \fBattroff\fR and \fBattr_get\fR, respectively. +They have an effect only if soft labels are simulated on the bottom line of +the screen. +The default highlight for soft keys is A_STANDOUT (as in +System V curses, which does not document this fact). +.SS Colors +.PP +The \fBslk_color\fR routine corresponds to \fBcolor_set\fR. +It has an effect only +if soft labels are simulated on the bottom line of the screen. +.PP +Because \fBslk_color\fR accepts only \fBshort\fP (signed 16-bit integer) values, +this implementation provides +\fBextended_slk_color\fR which accepts an integer value, e.g., 32-bits. +. +.SH RETURN VALUE +These routines return \fBERR\fR upon failure +and \fBOK\fP (SVr4 specifies only "an integer value other than \fBERR\fR") +upon successful completion. +.PP +X/Open defines no error conditions. +In this implementation +.RS 3 +.TP 5 +\fBslk_attr\fR +returns the attribute used for the soft keys. +.TP 5 +.na +.hy 0 +\fBslk_attroff\fP, \fBslk_attron\fP, \fBslk_clear\fP, \fBslk_noutrefresh\fP, \fBslk_refresh\fP, \fBslk_touch\fP +.ad +.hy +return an error +if the terminal or the softkeys were not initialized. +.TP 5 +\fBslk_attrset\fP +returns an error +if the terminal or the softkeys were not initialized. +.TP 5 +\fBslk_attr_set\fP +returns an error +if the terminal or the softkeys were not initialized, or +the color pair is outside the range 0..COLOR_PAIRS\-1. +.TP 5 +\fBslk_color\fP +returns an error +if the terminal or the softkeys were not initialized, or +the color pair is outside the range 0..COLOR_PAIRS\-1. +.TP 5 +\fBslk_init\fR +returns an error +if the format parameter is outside the range 0..3. +.TP 5 +\fBslk_label\fR +returns \fBNULL\fR on error. +.TP 5 +\fBslk_set\fP +returns an error +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 +memory for the labels cannot be allocated. +.RE +.SH HISTORY +SVr3 introduced these functions: + slk_clear + slk_init + slk_label + slk_noutrefresh + slk_refresh + slk_restore + slk_set + slk_touch +.PP +SVr4 added these functions: + slk_attroff + slk_attron + slk_attrset + slk_start +.PP +X/Open Curses added these: + slk_attr_off + slk_attr_on + slk_attr_set + slk_color + slk_wset +.SH EXTENSIONS +.PP +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. +.PP +For functions which modify the color, e.g., \fBslk_attr_set\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. +.SH NOTES +Most applications would use \fBslk_noutrefresh\fR because a +\fBwrefresh\fR is likely to follow soon. +.SH PORTABILITY +The XSI Curses standard, Issue 4, described the soft-key functions, +with some differences from SVr4 curses: +.bP +It added functions like the SVr4 +attribute-manipulation functions \fBslk_attron\fR, +\fBslk_attroff\fR, \fBslk_attrset\fR, +but which use \fBattr_t\fR parameters (rather than \fBchtype\fP), +along with a reserved \fIopts\fP parameter. +.IP +Two of these new functions (unlike the SVr4 functions) have no provision +for color: \fBslk_attr_on\fP and \fBslk_attr_off\fP. +.IP +The third function (\fBslk_attr_set\fP) has a color-pair parameter. +.bP +It added \fBconst\fR qualifiers to parameters (unnecessarily), and +.bP +It added \fBslk_color\fP. +.PP +The format codes \fB2\fR and \fB3\fR for \fBslk_init\fR and the +function \fBslk_attr\fR are specific to ncurses. +.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, +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. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_attr\fR(3X), +\fBcurs_initscr\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_sp_funcs.3x b/deps/ncurses-6.3/man/curs_sp_funcs.3x new file mode 100644 index 0000000..c192e02 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_sp_funcs.3x @@ -0,0 +1,392 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 2010-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_sp_funcs.3x,v 1.25 2021/05/22 22:12:46 tom Exp $ +.TH curs_sp_funcs 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.na +.hy 0 +.SH NAME +curs_sp_funcs \- \fBcurses\fR screen-pointer extension +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.nf +.sp +\fBint alloc_pair_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIfg\fP\fB, int \fP\fIbg\fP\fB);\fR +.br +\fBint assume_default_colors_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIfg\fP\fB, int \fP\fIbg\fP\fB);\fR +.br +\fBint baudrate_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint beep_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBbool can_change_color_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint cbreak_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint color_content_sp(SCREEN* \fP\fIsp\fP\fB, short \fP\fIcolor\fP\fB, short* \fP\fIr\fP\fB, short* \fP\fIg\fP\fB, short* \fP\fIb\fP\fB);\fR +.br +\fBint curs_set_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIvisibility\fP);\fR +.br +\fBint def_prog_mode_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint def_shell_mode_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.sp +\fBint define_key_sp(SCREEN* \fP\fIsp\fP\fB, const char * \fP\fIdefinition\fP\fB, int \fP\fIkeycode\fP\fB);\fR +.br +\fBint delay_output_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIms\fP\fB);\fR +.br +\fBint doupdate_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint echo_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint endwin_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBchar erasechar_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint erasewchar_sp(SCREEN* \fP\fIsp\fP\fB, wchar_t *\fP\fIch\fP\fB);\fR +.br +\fBint extended_color_content_sp(SCREEN * \fP\fIsp\fP\fB, int \fP\fIcolor\fP\fB, int * \fP\fIr\fP\fB, int * \fP\fIg\fP\fB, int * \fP\fIb\fP\fB);\fR +.br +\fBint extended_pair_content_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIpair\fP\fB, int * \fP\fIfg\fP\fB, int * \fP\fIbg\fP\fB);\fR +.br +\fBint extended_slk_color_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIpair\fP\fB);\fR +.sp +\fBvoid filter_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint find_pair_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIfg\fP\fB, int \fP\fIbg\fP\fB);\fR +.br +\fBint flash_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint flushinp_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint free_pair_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIpair\fP\fB);\fR +.br +\fBint get_escdelay_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint getmouse_sp(SCREEN* \fP\fIsp\fP\fB, MEVENT* \fP\fBevent\fP\fB);\fR +.br +\fBWINDOW* getwin_sp(SCREEN* \fP\fIsp\fP\fB, FILE* \fP\fIfilep\fP\fB);\fR +.br +\fBint halfdelay_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fItenths\fP\fB);\fR +.br +\fBbool has_colors_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.sp +\fBbool has_ic_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBbool has_il_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint has_key_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIch\fP\fB);\fR +.br +\fBbool has_mouse_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint init_color_sp(SCREEN* \fP\fIsp\fP\fB, short \fP\fIcolor\fP\fB, short \fP\fIr\fP\fB, short \fP\fIg\fP\fB, short \fP\fIb\fP\fB);\fR +.br +\fBint init_extended_color_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIcolor\fP\fB, int \fP\fIr\fP\fB, int \fP\fIg\fP\fB, int \fP\fIb\fP\fB);\fR +.br +\fBint init_extended_pair_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIpair\fP\fB, int \fP\fIfg\fP\fB, int \fP\fIbg\fP\fB);\fR +.br +\fBint init_pair_sp(SCREEN* \fP\fIsp\fP\fB, short \fP\fIpair\fP\fB, short \fP\fIfg\fP\fB, short \fP\fIbg\fP\fB);\fR +.br +\fBint intrflush_sp(SCREEN* \fP\fIsp\fP\fB, WINDOW* \fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBbool is_term_resized_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR +.sp +\fBbool isendwin_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint key_defined_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIdefinition\fP\fB);\fR +.br +\fBchar* keybound_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIkeycode\fP\fB, int \fP\fIcount\fP\fB);\fR +.br +\fBNCURSES_CONST char * keyname_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIc\fP\fB);\fR +.br +\fBint keyok_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIkeycode\fP\fB, bool \fP\fIenable\fP\fB);\fR +.br +\fBchar killchar_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint killwchar_sp(SCREEN* \fP\fIsp\fP\fB, wchar_t *\fP\fIch\fP\fB);\fR +.br +\fBchar* longname_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint mcprint_sp(SCREEN* \fP\fIsp\fP\fB, char *\fP\fIdata\fP\fB, int \fP\fIlen\fP\fB);\fR +.br +\fBint mouseinterval_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIerval\fP\fB);\fR +.sp +\fBmmask_t mousemask_sp(SCREEN* \fP\fIsp\fP\fB, mmask_t \fP\fInewmask\fP\fB, mmask_t *\fP\fIoldmask\fP\fB);\fR +.br +\fBint mvcur_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIoldrow\fP\fB, int \fP\fIoldcol\fP\fB, int \fP\fInewrow\fP\fB, int \fP\fInewcol\fP\fB);\fR +.br +\fBint napms_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIms\fP\fB);\fR +.br +\fBWINDOW* newpad_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fInrows\fP\fB, int \fP\fIncols\fP\fB);\fR +.br +\fBSCREEN* new_prescr(void);\fR +.br +\fBSCREEN* newterm_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fItype\fP\fB, FILE *\fP\fIoutfd\fP\fB, FILE *\fP\fIinfd\fP\fB);\fR +.br +\fBWINDOW* newwin_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB, int \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR +.br +\fBint nl_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint nocbreak_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint noecho_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.sp +\fBvoid nofilter_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint nonl_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBvoid noqiflush_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint noraw_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint pair_content_sp(SCREEN* \fP\fIsp\fP\fB, short \fP\fIpair\fP\fB, short* \fP\fIfg\fP\fB, short* \fP\fIbg\fP\fB);\fR +.br +\fBvoid qiflush_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint raw_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint reset_prog_mode_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBvoid reset_color_pairs_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint reset_shell_mode_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.sp +\fBint resetty_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint resize_term_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR +.br +\fBint resizeterm_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR +.br +\fBint ripoffline_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIline\fP\fB, int (*\fP\fIinit\fP\fB)(WINDOW* \fP\fIwin\fP\fB, int \fP\fIfmt\fP\fB));\fR +.br +\fBint savetty_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint scr_init_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIfilename\fP\fB);\fR +.br +\fBint scr_restore_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIfilename\fP\fB);\fR +.br +\fBint scr_set_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIfilename\fP\fB);\fR +.br +\fBint set_escdelay_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIms\fP\fB);\fR +.br +\fBint set_tabsize_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIcols\fP\fB);\fR +.sp +\fBint slk_attr_set_sp(SCREEN* \fP\fIsp\fP\fB, const attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void*\fP\fIopts\fP\fB);\fR +.br +\fBint slk_attrset_sp(SCREEN* \fP\fIsp\fP\fB, const chtype \fP\fIa\fP\fB);\fR +.br +\fBint slk_attroff_sp(SCREEN* \fP\fIsp\fP\fB, const chtype \fP\fIa\fP\fB);\fR +.br +\fBint slk_attron_sp(SCREEN* \fP\fIsp\fP\fB, const chtype \fP\fIa\fP\fB);\fR +.br +\fBattr_t slk_attr_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint slk_clear_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint slk_color_sp(SCREEN* \fP\fIsp\fP\fB, short \fP\fIpair\fP\fB);\fR +.br +\fBint slk_init_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIfmt\fP\fB);\fR +.br +\fBchar* slk_label_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIlabnum\fP\fB);\fR +.br +\fBint slk_noutrefresh_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.sp +\fBint slk_refresh_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint slk_restore_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint slk_set_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIlabnum\fP\fB, const char * \fP\fIlabel\fP\fB, int \fP\fIfmt\fP\fB);\fR +.br +\fBint slk_touch_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint start_color_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBattr_t term_attrs_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBchtype termattrs_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBchar* termname_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBint typeahead_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIfd\fP\fB);\fR +.br +\fBint unget_wch_sp(SCREEN* \fP\fIsp\fP\fB, const wchar_t \fP\fIwch\fP\fB);\fR +.sp +\fBint ungetch_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIch\fP\fB);\fR +.br +\fBint ungetmouse_sp(SCREEN* \fP\fIsp\fP\fB,MEVENT * \fP\fBevent\fP\fB);\fR +.br +\fBint use_default_colors_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBvoid use_env_sp(SCREEN* \fP\fIsp\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBint use_legacy_coding_sp(SCREEN* \fP\fIsp\fP\fB, int \fP\fIlevel\fP\fB);\fR +.br +\fBvoid use_tioctl_sp(SCREEN *\fP\fIsp\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBint vid_attr_sp(SCREEN* \fP\fIsp\fP\fB, attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void * \fP\fIopts\fP\fB);\fR +.br +\fBint vid_puts_sp(SCREEN* \fP\fIsp\fP\fB, attr_t \fP\fIattrs\fP\fB, short \fP\fIpair\fP\fB, void * \fP\fIopts\fP\fB, NCURSES_SP_OUTC \fP\fIputc\fP\fB);\fR +.br +\fBint vidattr_sp(SCREEN* \fP\fIsp\fP\fB, chtype \fP\fIattrs\fP\fB);\fR +.br +\fBint vidputs_sp(SCREEN* \fP\fIsp\fP\fB, chtype \fP\fIattrs\fP\fB, NCURSES_SP_OUTC \fP\fIputc\fP\fB);\fR +.br +\fBwchar_t* wunctrl_sp(SCREEN* \fP\fIsp\fP\fB, cchar_t *\fP\fIch\fP\fB);\fR +.sp +\fB#include <form.h>\fR +.sp +\fBFORM* new_form_sp(SCREEN* \fP\fIsp\fP\fB, FIELD **\fP\fIfields\fP\fB);\fR +.sp +\fB#include <menu.h>\fR +.sp +\fBMENU* new_menu_sp(SCREEN* \fP\fIsp\fP\fB, ITEM **\fP\fIitems\fP\fB);\fR +.sp +\fB#include <panel.h>\fR +.sp +\fBPANEL* ceiling_panel(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBPANEL* ground_panel(SCREEN* \fP\fIsp\fP\fB);\fR +.br +\fBvoid update_panels_sp(SCREEN* \fP\fIsp\fP\fB);\fR +.sp +\fB#include <term.h>\fR +.sp +\fBint del_curterm_sp(SCREEN* \fP\fIsp\fP\fB, TERMINAL *\fP\fIoterm\fP\fB);\fR +.br +\fBint putp_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIstr\fP\fB);\fR +.br +\fBint restartterm_sp(SCREEN* \fP\fIsp\fP\fB, NCURSES_CONST char*\fP\fIterm\fP\fB, int \fP\fIfiledes\fP\fB, int *\fP\fIerrret\fP\fB);\fR +.br +\fBTERMINAL* set_curterm_sp(SCREEN* \fP\fIsp\fP\fB, TERMINAL*\fP\fInterm\fP\fB);\fR +.br +\fBint tgetent_sp(SCREEN* \fP\fIsp\fP\fB, char *\fP\fIbp\fP\fB, const char *\fP\fIname\fP\fB);\fR +.br +\fBint tgetflag_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIcapname\fP\fB);\fR +.br +\fBint tgetnum_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIcapname\fP\fB);\fR +.br +\fBchar* tgetstr_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIcapname\fP\fB, char **\fP\fIarea\fP\fB);\fR +.br +\fBchar* tgoto_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIcapname\fP\fB, int \fP\fIcol\fP\fB, int \fP\fIrow\fP\fB);\fR +.br +\fBint tigetflag_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIcapname\fP\fB);\fR +.br +\fBint tigetnum_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIcapname\fP\fB);\fR +.br +\fBchar* tigetstr_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIcapname\fP\fB);\fR +.br +/* may instead use 9 long parameters */ +.br +\fBchar* tparm_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIstr\fP\fB, ...);\fR +.br +\fBint tputs_sp(SCREEN* \fP\fIsp\fP\fB, const char *\fP\fIstr\fP\fB, int \fP\fIaffcnt\fP\fB, NCURSES_SP_OUTC \fP\fIputc\fP\fB);\fR +.sp +\fB#include <unctrl.h>\fR +.sp +\fBNCURSES_CONST char* unctrl_sp(SCREEN* \fP\fIsp\fP\fB, chtype \fP\fIc\fP\fB);\fR +.ad +.br +.SH DESCRIPTION +This implementation can be configured to provide a set of functions which +improve the ability to manage multiple screens. +This feature can be added to any of the configurations supported by ncurses; +it adds new entrypoints +without changing the meaning of any of the existing ones. +.PP +.\" *************************************************************************** +.SS IMPROVED FUNCTIONS +Most of the functions are new versions of existing functions. +A parameter is added at the front of the parameter list. +It is a SCREEN pointer. +.PP +The existing functions all use the current screen, +which is a static variable. +The extended functions use the specified screen, +thereby reducing the number of variables which must be modified +to update multiple screens. +.\" *************************************************************************** +.SS NEW FUNCTIONS +Here are the new functions: +.TP 5 +ceiling_panel +this returns a pointer to the topmost panel in the given screen. +.TP 5 +ground_panel +this returns a pointer to the lowest panel in the given screen. +.TP 5 +new_prescr +when creating a new screen, the library uses static variables which +have been preset, e.g., by \fBuse_env\fP(3X), \fBfilter\fP(3X), etc. +With the screen-pointer extension, +there are situations where it must create a current screen before +the unextended library does. +The \fBnew_prescr\fP function is used internally to handle these cases. +It is also provided as an entrypoint to allow applications to customize +the library initialization. +.\" *************************************************************************** +.SH NOTES +This extension introduces some new names: +.TP 5 +NCURSES_SP_FUNCS +This is set to the library patch-level number. +In the unextended library, this is zero (0), +to make it useful for checking if the extension is provided. +.TP 5 +NCURSES_SP_NAME +The new functions are named using the macro \fINCURSES_SP_NAME\fP, +which hides the actual implementation. +Currently this adds a \*(``_sp\*('' suffix to the name of the unextended function. +This manual page indexes the extensions showing the full name. +However the proper usage of these functions uses the macro, +to provide for the possibility of changing the naming convention +for specific library configurations. +.TP 5 +NCURSES_SP_OUTC +This is a new function-pointer type to use in the screen-pointer functions +where an \fINCURSES_OUTC\fP is used in the unextended library. +.TP 5 +NCURSES_OUTC +This is a function-pointer type used for the cases where a function passes +characters to the output stream, e.g., \fBvidputs\fP(3X). +.PP +.SH PORTABILITY +These routines are specific to ncurses. +They were not supported on Version 7, BSD or System V implementations. +It is recommended that any code depending on ncurses extensions +be conditioned using \fINCURSES_SP_FUNCS\fP. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_opaque\fR(3X), +\fBcurs_threads\fR(3X). diff --git a/deps/ncurses-5.9/man/curs_termattrs.3x b/deps/ncurses-6.3/man/curs_termattrs.3x similarity index 89% rename from deps/ncurses-5.9/man/curs_termattrs.3x rename to deps/ncurses-6.3/man/curs_termattrs.3x index 0f0294c..ec5ec38 100644 --- a/deps/ncurses-5.9/man/curs_termattrs.3x +++ b/deps/ncurses-6.3/man/curs_termattrs.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -26,7 +27,7 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_termattrs.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ +.\" $Id: curs_termattrs.3x,v 1.15 2020/02/02 23:34:34 tom Exp $ .TH curs_termattrs 3X "" .SH NAME \fBbaudrate\fR, @@ -66,9 +67,12 @@ \fBchar *termname(void);\fR .br .SH DESCRIPTION -The \fBbaudrate\fR routine returns the output speed of the terminal. The +.SS baudrate +The \fBbaudrate\fR routine returns the output speed of the terminal. +The number returned is in bits per second, for example \fB9600\fR, and is an integer. +.SS erasechar, erasewchar .PP The \fBerasechar\fR routine returns the user's current erase character. .PP @@ -76,14 +80,17 @@ The \fBerasewchar\fR routine stores the current erase character in the location referenced by \fIch\fR. If no erase character has been defined, the routine fails and the location referenced by \fIch\fR is not changed. +.SS has_is, has_il .PP The \fBhas_ic\fR routine is true if the terminal has insert- and delete- character capabilities. .PP The \fBhas_il\fR routine is true if the terminal has insert- and delete-line -capabilities, or can simulate them using scrolling regions. This might +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\fR. +.SS killchar, killwchar .PP The \fBkillchar\fR routine returns the user's current line kill character. .PP @@ -91,15 +98,19 @@ The \fBkillwchar\fR routine stores the current line-kill character in the location referenced by \fIch\fR. If no line-kill character has been defined, the routine fails and the location referenced by \fIch\fR is not changed. +.SS longname .PP The \fBlongname\fR 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 +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\fR or \fBnewterm\fR. The area is overwritten by each call to \fBnewterm\fR and is not restored by \fBset_term\fR, so the value should be saved between calls to \fBnewterm\fR if \fBlongname\fR is going to be used with multiple terminals. +.SS termattrs, term_attrs .PP If a given terminal does not support a video attribute that an application program is trying to use, \fBcurses\fR may substitute a @@ -109,6 +120,7 @@ return a logical \fBOR\fR of all video attributes supported by the terminal using \fIA_\fR and \fIWA_\fR constants respectively. This information is useful when a \fBcurses\fR program needs complete control over the appearance of the screen. +.SS termname .PP The \fBtermname\fR routine returns the terminal name used by \fBsetupterm\fR. .SH RETURN VALUE @@ -120,7 +132,8 @@ completion. .SH NOTES Note that \fBtermattrs\fR may be a macro. .SH PORTABILITY -The XSI Curses standard, Issue 4 describes these functions. It changes the +The XSI Curses standard, Issue 4 describes these functions. +It changes the return type of \fBtermattrs\fR to the new type \fBattr_t\fR. Most versions of curses truncate the result returned by \fBtermname\fR to 14 characters. diff --git a/deps/ncurses-6.3/man/curs_termcap.3x b/deps/ncurses-6.3/man/curs_termcap.3x new file mode 100644 index 0000000..94bed5b --- /dev/null +++ b/deps/ncurses-6.3/man/curs_termcap.3x @@ -0,0 +1,349 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2017,2018 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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_termcap.3x,v 1.49 2021/04/03 21:17:09 tom Exp $ +.TH curs_termcap 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.ds n 5 +.SH NAME +\fBPC\fR, +\fBUP\fR, +\fBBC\fR, +\fBospeed\fR, +\fBtgetent\fR, +\fBtgetflag\fR, +\fBtgetnum\fR, +\fBtgetstr\fR, +\fBtgoto\fR, +\fBtputs\fR \- \fBcurses\fR emulation of termcap +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.br +\fB#include <term.h>\fR +.sp +\fBextern char PC;\fR +.br +\fBextern char * UP;\fR +.br +\fBextern char * BC;\fR +.br +\fBextern @NCURSES_OSPEED@ ospeed;\fR +.sp +\fBint tgetent(char *\fP\fIbp\fP\fB, const char *\fP\fIname\fP\fB);\fR +.br +\fBint tgetflag(const char *\fP\fIid\fP\fB);\fR +.br +\fBint tgetnum(const char *\fP\fIid\fP\fB);\fR +.br +\fBchar *tgetstr(const char *\fP\fIid\fP\fB, char **\fP\fIarea\fP\fB);\fR +.br +\fBchar *tgoto(const char *\fP\fIcap\fP\fB, int \fP\fIcol\fP\fB, int \fP\fIrow\fP\fB);\fR +.br +\fBint tputs(const char *\fP\fIstr\fP\fB, int \fP\fIaffcnt\fP\fB, int (*\fP\fIputc\fP\fB)(int));\fR +.br +.SH DESCRIPTION +These routines are included as a conversion aid for programs that use +the \fItermcap\fR library. +Their parameters are the same, but the +routines are emulated using the \fIterminfo\fR database. +Thus, they +can only be used to query the capabilities of entries for which a +terminfo entry has been compiled. +.SS INITIALIZATION +.PP +The \fBtgetent\fR routine loads the entry for \fIname\fR. +It returns: +.RS 3 +.TP 3 +1 +on success, +.TP 3 +0 +if there is no such entry +(or that it is a generic type, having too little information for curses +applications to run), and +.TP 3 +\-1 +if the terminfo database could not be found. +.RE +.PP +This differs from the \fItermcap\fP library in two ways: +.RS 3 +.bP +The emulation ignores the buffer pointer \fIbp\fR. +The \fItermcap\fP library would store a copy of the terminal +description in the area referenced by this pointer. +However, ncurses stores its terminal descriptions in compiled +binary form, which is not the same thing. +.bP +There is a difference in return codes. +The \fItermcap\fP library does not check if the terminal +description is marked with the \fIgeneric\fP capability, +or if the terminal description has cursor-addressing. +.RE +.SS CAPABILITY VALUES +.PP +The \fBtgetflag\fR routine gets the boolean entry for \fIid\fR, +or zero if it is not available. +.PP +The \fBtgetnum\fR routine gets the numeric entry for \fIid\fR, +or \-1 if it is not available. +.PP +The \fBtgetstr\fR routine returns the string entry for \fIid\fR, +or zero if it is not available. +Use \fBtputs\fR to output the returned string. +The \fIarea\fP 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, ncurses checks to ensure that \fBarea\fP is not NULL, +and also that the resulting buffer pointer is not NULL. +If either check fails, the \fIarea\fP parameter is ignored. +.bP +If the checks succeed, ncurses also copies the return value to +the buffer pointed to by \fIarea\fR, +and the \fIarea\fR value will be updated to point past the null ending +this value. +.bP +The return value itself is an address in the terminal description which +is loaded into memory. +.RE +.PP +Only the first two characters of the \fBid\fR parameter of +\fBtgetflag\fR, +\fBtgetnum\fR and +\fBtgetstr\fR are compared in lookups. +.SS FORMATTING CAPABILITIES +.PP +The \fBtgoto\fR routine expands the given capability using the parameters. +.bP +Because the capability may have padding characters, +the output of \fBtgoto\fP should be passed to \fBtputs\fR +rather than some other output function such as \fBprintf\fP. +.bP +While \fBtgoto\fP is assumed to be used for the two-parameter +cursor positioning capability, +termcap applications also use it for single-parameter capabilities. +.IP +Doing this shows a quirk in \fBtgoto\fP: most hardware +terminals use cursor addressing with \fIrow\fP first, +but the original developers of the termcap interface chose to +put the \fIcolumn\fP parameter first. +The \fBtgoto\fP function swaps the order of parameters. +It does this also for calls requiring only a single parameter. +In that case, the first parameter is merely a placeholder. +.bP +Normally the ncurses library is compiled with terminfo support. +In that case, \fBtgoto\fP uses \fBtparm\fP(3X) (a more capable formatter). +.IP +However, \fBtparm\fP is not a \fItermcap\fP feature, +and portable \fItermcap\fP applications should not rely upon its availability. +.PP +The \fBtputs\fR routine is described on the \fBcurs_terminfo\fR(3X) manual +page. +It can retrieve capabilities by either termcap or terminfo name. +.SS GLOBAL VARIABLES +.PP +The variables +\fBPC\fR, +\fBUP\fR and +\fBBC\fR +are set by \fBtgetent\fR to the terminfo entry's data for +\fBpad_char\fR, +\fBcursor_up\fR and +\fBbackspace_if_not_bs\fR, +respectively. +\fBUP\fR is not used by ncurses. +\fBPC\fR is used in the \fBtdelay_output\fR function. +\fBBC\fR is used in the \fBtgoto\fR emulation. +The variable \fBospeed\fR is set by ncurses in a system-specific coding +to reflect the terminal speed. +. +.SH RETURN VALUE +Except where explicitly noted, +routines that return an integer return \fBERR\fR upon failure and \fBOK\fR +(SVr4 only specifies "an integer value other than \fBERR\fR") upon successful +completion. +.PP +Routines that return pointers return \fBNULL\fR on error. +.SH BUGS +If you call \fBtgetstr\fR to fetch \fBca\fR or any other parameterized string, +be aware that it will be returned in terminfo notation, not the older and +not-quite-compatible termcap notation. +This will not cause problems if all +you do with it is call \fBtgoto\fR or \fBtparm\fR, which both expand +terminfo-style strings as terminfo. +(The \fBtgoto\fR function, if configured to support termcap, will check +if the string is indeed terminfo-style by looking for "%p" parameters or +"$<..>" delays, and invoke a termcap-style parser if the string does not +appear to be terminfo). +.PP +Because terminfo conventions for representing padding in string capabilities +differ from termcap's, +users can be surprised: +.bP +\fBtputs("50")\fR in a terminfo system will put out a literal \*(``50\*('' +rather than busy-waiting for 50 milliseconds. +.bP +However, if ncurses is configured to support termcap, +it may also have been configured to support the BSD-style padding. +.IP +In that case, \fBtputs\fP inspects strings passed to it, +looking for digits at the beginning of the string. +.IP +\fBtputs("50")\fR in a termcap system may wait for 50 milliseconds +rather than put out a literal \*(``50\*('' +.PP +Note that termcap has nothing analogous to terminfo's \fBsgr\fR string. +One consequence of this is that termcap applications assume \fBme\fR +(terminfo \fBsgr0\fR) does not reset the alternate character set. +This implementation checks for, and modifies the data shown to the +termcap interface to accommodate termcap's limitation in this respect. +.SH PORTABILITY +.SS Standards +These functions are provided for supporting legacy applications, +and should not be used in new programs: +.bP +The XSI Curses standard, Issue 4 describes these functions. +However, they +are marked TO BE WITHDRAWN and may be removed in future versions. +.bP +X/Open Curses, Issue 5 (December 2007) marked the termcap interface +(along with \fBvwprintw\fP and \fBvwscanw\fP) as withdrawn. +.PP +Neither the XSI Curses standard nor the SVr4 man pages documented the return +values of \fBtgetent\fR correctly, though all three were in fact returned ever +since SVr1. +In particular, an omission in the XSI Curses documentation has been +misinterpreted to mean that \fBtgetent\fR returns \fBOK\fR or \fBERR\fR. +Because the purpose of these functions is to provide compatibility with +the \fItermcap\fR library, that is a defect in XCurses, Issue 4, Version 2 +rather than in ncurses. +.SS Compatibility with BSD Termcap +.PP +External variables are provided for support of certain termcap applications. +However, termcap applications' use of those variables is poorly documented, +e.g., not distinguishing between input and output. +In particular, some applications are reported to declare and/or +modify \fBospeed\fR. +.PP +The comment that only the first two characters of the \fBid\fR parameter +are used escapes many application developers. +The original BSD 4.2 termcap library (and historical relics thereof) +did not require a trailing null NUL on the parameter name passed +to \fBtgetstr\fP, \fBtgetnum\fP and \fBtgetflag\fP. +Some applications assume that the termcap interface does not require +the trailing NUL for the parameter name. +Taking into account these issues: +.bP +As a special case, +\fBtgetflag\fP matched against a single-character identifier +provided that was at the end of the terminal description. +You should not rely upon this behavior in portable programs. +This implementation disallows matches against single-character capability names. +.bP +This implementation disallows matches by the termcap interface against +extended capability names which are longer than two characters. +.PP +The BSD termcap function \fBtgetent\fP returns the text of a termcap +entry in the buffer passed as an argument. +This library (like other terminfo implementations) does not store +terminal descriptions as text. +It sets the buffer contents to a null-terminated string. +.SS Other Compatibility +This library includes a termcap.h header, +for compatibility with other implementations. +But the header is rarely used because the other implementations +are not strictly compatible. +.PP +The original BSD termcap (through 4.3BSD) had no header file which +gave function prototypes, because that was a feature of ANSI C. +BSD termcap was written several years before C was standardized. +However, there were two different termcap.h header files in the BSD +sources: +.bP +One was used internally by the \fIjove\fP editor in 2BSD through 4.4BSD. +It defined global symbols for the termcap variables which it used. +.bP +The other appeared in 4.4BSD Lite Release 2 (mid-1993) +as part of \fIlibedit\fP (also known as the \fIeditline\fP library). +The 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 \fIeditline\fP library. +It declared function prototypes, but no global variables. +.PP +The header file from \fIlibedit\fP was added to NetBSD's termcap +library in mid-1994. +.PP +Meanwhile, GNU termcap was under development, starting in 1990. +The first release (termcap 1.0) in 1991 included a termcap.h header. +The second release (termcap 1.1) in September 1992 modified the +header to use \fBconst\fP for the function prototypes in the header +where one would expect the parameters to be read-only. +This was a difference versus the original BSD termcap. +The prototype for \fBtputs\fP also differed, +but in that instance, it was \fIlibedit\fP which differed from BSD termcap. +.PP +A copy of GNU termcap 1.3 was bundled with \fIbash\fP in mid-1993, +to support the \fIreadline\fP library. +.PP +A termcap.h file was provided in ncurses 1.8.1 (November 1993). +That reflected influence by \fIemacs\fP (rather than \fIjove\fP) +and GNU termcap: +.bP +it provided declarations for a few global symbols used by \fIemacs\fP +.bP +it provided function prototypes (using \fBconst\fP). +.bP +a prototype for \fBtparam\fP (a GNU termcap feature) was provided. +.PP +Later (in mid-1996) the \fBtparam\fP function was removed from ncurses. +As a result, there are differences between any of the four implementations, +which must be taken into account by programs which can work with all +termcap library interfaces. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBputc\fR(3), +\fBterm_variables\fR(3X), +\fBterminfo\fR(\*n). +.sp +https://invisible-island.net/ncurses/tctest.html diff --git a/deps/ncurses-6.3/man/curs_terminfo.3x b/deps/ncurses-6.3/man/curs_terminfo.3x new file mode 100644 index 0000000..6bb5dc2 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_terminfo.3x @@ -0,0 +1,682 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_terminfo.3x,v 1.76 2021/09/04 19:58:03 tom Exp $ +.TH curs_terminfo 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ds n 5 +.na +.hy 0 +.SH NAME +\fBdel_curterm\fR, +\fBmvcur\fR, +\fBputp\fR, +\fBrestartterm\fR, +\fBset_curterm\fR, +\fBsetupterm\fR, +\fBtigetflag\fR, +\fBtigetnum\fR, +\fBtigetstr\fR, +\fBtiparm\fR, +\fBtparm\fR, +\fBtputs\fR, +\fBvid_attr\fR, +\fBvid_puts\fR, +\fBvidattr\fR, +\fBvidputs\fR \- \fBcurses\fR interfaces to terminfo database +.ad +.hy +.SH SYNOPSIS +.nf +\fB#include <curses.h>\fR +\fB#include <term.h>\fR +.sp +\fBTERMINAL *cur_term;\fR +.sp +\fBconst char * const boolnames[];\fP +\fBconst char * const boolcodes[];\fP +\fBconst char * const boolfnames[];\fP +\fBconst char * const numnames[];\fP +\fBconst char * const numcodes[];\fP +\fBconst char * const numfnames[];\fP +\fBconst char * const strnames[];\fP +\fBconst char * const strcodes[];\fP +\fBconst char * const strfnames[];\fP +.sp +\fBint setupterm(const char *\fR\fIterm\fR\fB, int \fR\fIfiledes\fR\fB, int *\fR\fIerrret\fR\fB);\fR +.br +\fBTERMINAL *set_curterm(TERMINAL *\fR\fInterm\fR\fB);\fR +.br +\fBint del_curterm(TERMINAL *\fR\fIoterm\fR\fB);\fR +.br +\fBint restartterm(const char *\fR\fIterm\fR\fB, int \fR\fIfiledes\fR\fB, int *\fR\fIerrret\fR\fB);\fR +.sp +\fBchar *tparm(const char *\fR\fIstr\fR\fB, ...);\fR +.br +\fBint tputs(const char *\fR\fIstr\fR\fB, int \fR\fIaffcnt\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR +.br +\fBint putp(const char *\fR\fIstr\fR\fB);\fR +.sp +\fBint vidputs(chtype \fR\fIattrs\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR +.br +\fBint vidattr(chtype \fR\fIattrs\fR\fB);\fR +.br +\fBint vid_puts(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB, int (*\fR\fIputc\fR\fB)(int));\fR +.br +\fBint vid_attr(attr_t \fR\fIattrs\fR\fB, short \fR\fIpair\fR\fB, void *\fR\fIopts\fR\fB);\fR +.sp +\fBint mvcur(int \fR\fIoldrow\fR\fB, int \fR\fIoldcol\fR\fB, int \fR\fInewrow\fR, int \fR\fInewcol\fR\fB);\fR +.sp +\fBint tigetflag(const char *\fR\fIcapname\fR\fB);\fR +.br +\fBint tigetnum(const char *\fR\fIcapname\fR\fB);\fR +.br +\fBchar *tigetstr(const char *\fR\fIcapname\fR\fB);\fR +.sp +\fBchar *tiparm(const char *\fR\fIstr\fR\fB, ...);\fR +.br +.fi +.SH DESCRIPTION +These low-level routines must be called by programs that have to deal +directly with the \fBterminfo\fR database to handle certain terminal +capabilities, such as programming function keys. +For all other +functionality, \fBcurses\fR routines are more suitable and their use is +recommended. +.PP +None of these functions use (or are aware of) multibyte character strings +such as UTF-8: +.bP +capability names use the POSIX portable character set +.bP +capability string values have no associated encoding; +they are strings of 8-bit characters. +.SS Initialization +.PP +Initially, \fBsetupterm\fR should be called. +The high-level curses functions \fBinitscr\fR and +\fBnewterm\fR call \fBsetupterm\fP to initialize the +low-level set of terminal-dependent variables +[listed in \fBterminfo\fR(\*n)]. +.PP +Applications can use the +terminal capabilities either directly (via header definitions), +or by special functions. +The header files \fBcurses.h\fR and \fBterm.h\fR should be included (in this +order) to get the definitions for these strings, numbers, and flags. +.PP +The \fBterminfo\fR variables +\fBlines\fR and \fBcolumns\fR are initialized by \fBsetupterm\fR as +follows: +.bP +If \fBuse_env(FALSE)\fR has been called, values for +\fBlines\fR and \fBcolumns\fR specified in \fBterminfo\fR are used. +.bP +Otherwise, if the environment variables \fBLINES\fR and \fBCOLUMNS\fR +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 \fBlines\fR and \fBcolumns\fR specified in the +\fBterminfo\fR database are used. +.PP +Parameterized strings should be passed through \fBtparm\fR to instantiate them. +All \fBterminfo\fR strings +(including the output of \fBtparm\fR) +should be printed +with \fBtputs\fR or \fBputp\fR. +Call \fBreset_shell_mode\fR to restore the +tty modes before exiting [see \fBcurs_kernel\fR(3X)]. +.PP +Programs which use +cursor addressing should +.bP +output \fBenter_ca_mode\fR upon startup and +.bP +output \fBexit_ca_mode\fR before exiting. +.PP +Programs which execute shell subprocesses should +.bP +call \fBreset_shell_mode\fR and +output \fBexit_ca_mode\fR before the shell +is called and +.bP +output \fBenter_ca_mode\fR and +call \fBreset_prog_mode\fR after returning from the shell. +.PP +The \fBsetupterm\fR routine reads in the \fBterminfo\fR database, +initializing the \fBterminfo\fR structures, but does not set up the +output virtualization structures used by \fBcurses\fR. +These are its parameters: +.RS 3 +.TP 5 +\fIterm\fP +is the terminal type, a character string. +If \fIterm\fR is null, the environment variable \fBTERM\fR is used. +.TP 5 +\fIfiledes\fP +is the file descriptor used for all output. +.TP 5 +\fIerrret\fP +points to an optional location where an error status can be returned to +the caller. +If \fIerrret\fR is not null, +then \fBsetupterm\fR returns \fBOK\fR or +\fBERR\fR and stores a status value in the integer pointed to by +\fIerrret\fR. +A return value of \fBOK\fR combined with status of \fB1\fR in \fIerrret\fR +is normal. +.IP +If \fBERR\fR is returned, examine \fIerrret\fR: +.RS +.TP 5 +.B 1 +means that the terminal is hardcopy, cannot be used for curses applications. +.IP +\fBsetupterm\fP determines if the entry is a hardcopy type by +checking the \fBhc\fP (\fBhardcopy\fP) capability. +.TP 5 +.B 0 +means that the terminal could not be found, +or that it is a generic type, +having too little information for curses applications to run. +.IP +\fBsetupterm\fP determines if the entry is a generic type by +checking the \fBgn\fP (\fBgeneric\fP) capability. +.TP 5 +.B \-1 +means that the \fBterminfo\fR database could not be found. +.RE +.IP +If \fIerrret\fR is +null, \fBsetupterm\fR prints an error message upon finding an error +and exits. +Thus, the simplest call is: +.sp + \fBsetupterm((char *)0, 1, (int *)0);\fR, +.sp +which uses all the defaults and sends the output to \fBstdout\fR. +.RE +.\" *************************************************************************** +.SS The Terminal State +.PP +The \fBsetupterm\fR routine stores its information about the terminal +in a \fBTERMINAL\fP structure pointed to by the global variable \fBcur_term\fP. +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. +.PP +If \fBsetupterm\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, +\fBsetupterm\fP allocates new storage for each set of terminal capabilities. +.PP +The \fBset_curterm\fR routine sets \fBcur_term\fR to +\fInterm\fR, and makes all of the \fBterminfo\fR boolean, numeric, and +string variables use the values from \fInterm\fR. +It returns the old value of \fBcur_term\fR. +.PP +The \fBdel_curterm\fR routine frees the space pointed to by +\fIoterm\fR and makes it available for further use. +If \fIoterm\fR is +the same as \fBcur_term\fR, references to any of the \fBterminfo\fR +boolean, numeric, and string variables thereafter may refer to invalid +memory locations until another \fBsetupterm\fR has been called. +.PP +The \fBrestartterm\fR routine is similar to \fBsetupterm\fR and \fBinitscr\fR, +except that it is called after restoring memory to a previous state (for +example, when reloading a game saved as a core image dump). +\fBrestartterm\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. +Accordingly, \fBrestartterm\fP saves various tty state bits, +calls \fBsetupterm\fP, and then restores the bits. +.\" *************************************************************************** +.SS Formatting Output +.PP +The \fBtparm\fR routine instantiates the string \fIstr\fR with +parameters \fIpi\fR. A pointer is returned to the result of \fIstr\fR +with the parameters applied. +Application developers should keep in mind these quirks of the interface: +.bP +Although \fBtparm\fP's actual parameters may be integers or strings, +the prototype expects \fBlong\fP (integer) values. +.bP +Aside from the \fBset_attributes\fP (\fBsgr\fP) capability, +most terminal capabilities require no more than one or two parameters. +.bP +Padding information is ignored by \fBtparm\fP; +it is interpreted by \fBtputs\fP. +.bP +The capability string is null-terminated. +Use \*(``\\200\*('' where an ASCII NUL is needed in the output. +.PP +\fBtiparm\fP is a newer form of \fBtparm\fP which uses \fI<stdarg.h>\fP +rather than a fixed-parameter list. +Its numeric parameters are integers (int) rather than longs. +.\" *************************************************************************** +.SS Output Functions +.PP +The \fBtputs\fR routine applies padding information +(i.e., by interpreting marker embedded in the terminfo capability +such as \*(``$<5>\*('' as 5 milliseconds) +to the string +\fIstr\fR and outputs it: +.bP +The \fIstr\fR parameter must be a terminfo string +variable or the return value from +\fBtparm\fR, \fBtiparm\fP, \fBtgetstr\fR, or \fBtgoto\fR. +.IP +The \fBtgetstr\fP and \fBtgoto\fP functions are part of the \fItermcap\fP +interface, +which happens to share this function name with the \fIterminfo\fP interface. +.bP +\fIaffcnt\fR is the number of lines affected, or 1 if +not applicable. +.bP +\fIputc\fR is a \fBputchar\fR-like routine to which +the characters are passed, one at a time. +.PP +The \fBputp\fR routine calls \fBtputs(\fR\fIstr\fR\fB, 1, putchar)\fR. +The output of \fBputp\fR always goes to \fBstdout\fR, rather than +the \fIfiledes\fR specified in \fBsetupterm\fR. +.PP +The \fBvidputs\fR routine displays the string on the terminal in the +video attribute mode \fIattrs\fR, which is any combination of the +attributes listed in \fBcurses\fR(3X). +The characters are passed to +the \fBputchar\fR-like routine \fIputc\fR. +.PP +The \fBvidattr\fR routine is like the \fBvidputs\fR routine, except +that it outputs through \fBputchar\fR. +.PP +The \fBvid_attr\fR and \fBvid_puts\fR routines correspond +to vidattr and vidputs, respectively. +They use a set of arguments for representing the video attributes plus color, +i.e., +.bP +\fIattrs\fP of type \fBattr_t\fP for the attributes and +.bP +\fIpair\fP of type \fBshort\fP for the color-pair number. +.PP +The \fBvid_attr\fR and \fBvid_puts\fR routines +are designed to use the attribute constants with the \fIWA_\fR prefix. +.PP +X/Open Curses reserves the \fIopts\fP argument for future use, +saying that applications must provide a null pointer for that argument. +As an extension, +this implementation allows \fIopts\fP to be used as a pointer to \fBint\fP, +which overrides the \fIpair\fP (\fBshort\fP) argument. +.PP +The \fBmvcur\fR routine provides low-level cursor motion. +It takes effect immediately (rather than at the next refresh). +.PP +While \fBputp\fR and \fBmvcur\fP are low-level functions which +do not use the high-level curses state, +they are declared in \fB<curses.h>\fP because SystemV did this +(see \fBHISTORY\fP). +.\" *************************************************************************** +.SS Terminal Capability Functions +.PP +The \fBtigetflag\fR, \fBtigetnum\fR and \fBtigetstr\fR routines return +the value of the capability corresponding to the \fBterminfo\fR +\fIcapname\fR passed to them, such as \fBxenl\fR. +The \fIcapname\fR for each capability is given in the table column entitled +\fIcapname\fR code in the capabilities section of \fBterminfo\fR(\*n). +.PP +These routines return special values to denote errors. +.PP +The \fBtigetflag\fR routine returns +.TP +\fB\-1\fR +if \fIcapname\fR is not a boolean capability, +or +.TP +\fB0\fR +if it is canceled or absent from the terminal description. +.PP +The \fBtigetnum\fR routine returns +.TP +\fB\-2\fR +if \fIcapname\fR is not a numeric capability, or +.TP +\fB\-1\fR +if it is canceled or absent from the terminal description. +.PP +The \fBtigetstr\fR routine returns +.TP +\fB(char *)\-1\fR +if \fIcapname\fR is not a string capability, +or +.TP +\fB0\fR +if it is canceled or absent from the terminal description. +.\" *************************************************************************** +.SS Terminal Capability Names +.PP +These null-terminated arrays contain +.bP +the short terminfo names (\*(``codes\*(''), +.bP +the \fBtermcap\fR names (\*(``names\*(''), and +.bP +the long terminfo names (\*(``fnames\*('') +.PP +for each of the predefined \fBterminfo\fR variables: +.sp +.RS +\fBconst char *boolnames[]\fR, \fB*boolcodes[]\fR, \fB*boolfnames[]\fR +.br +\fBconst char *numnames[]\fR, \fB*numcodes[]\fR, \fB*numfnames[]\fR +.br +\fBconst char *strnames[]\fR, \fB*strcodes[]\fR, \fB*strfnames[]\fR +.RE +.SH RETURN VALUE +Routines that return an integer return \fBERR\fR upon failure and \fBOK\fR +(SVr4 only specifies \*(``an integer value other than \fBERR\fR\*('') +upon successful completion, +unless otherwise noted in the preceding routine descriptions. +.PP +Routines that return pointers always return \fBNULL\fR on error. +.PP +X/Open defines no error conditions. +In this implementation +.RS 3 +.TP 5 +\fBdel_curterm\fP +returns an error +if its terminal parameter is null. +.TP 5 +\fBputp\fP +calls \fBtputs\fP, returning the same error-codes. +.TP 5 +\fBrestartterm\fP +returns an error +if the associated call to \fBsetupterm\fP returns an error. +.TP 5 +\fBsetupterm\fP +returns an error +if it cannot allocate enough memory, or +create the initial windows (stdscr, curscr, newscr). +Other error conditions are documented above. +.TP 5 +\fBtputs\fP +returns an error if the string parameter is null. +It does not detect I/O errors: +X/Open states that \fBtputs\fP ignores the return value +of the output function \fIputc\fP. +.RE +.\" *************************************************************************** +.SS Compatibility macros +This implementation provides a few macros for compatibility with systems +before SVr4 (see \fBHISTORY\fP). +Those include +\fBcrmode\fP, +\fBfixterm\fP, +\fBgettmode\fP, +\fBnocrmode\fP, +\fBresetterm\fP, +\fBsaveterm\fP, and +\fBsetterm\fP. +.PP +In SVr4, those are found in \fB<curses.h>\fP, +but except for \fBsetterm\fR, are likewise macros. +The one function, \fBsetterm\fR, is mentioned in the manual page. +The manual page notes that the \fBsetterm\fR routine +was replaced by \fBsetupterm\fR, stating that the call: +.sp + \fBsetupterm(\fR\fIterm\fR\fB, 1, (int *)0)\fR +.sp +provides the same functionality as \fBsetterm(\fR\fIterm\fR\fB)\fR, +and is not recommended for new programs. +This implementation provides each of those symbols +as macros for BSD compatibility, +.\" *************************************************************************** +.SH HISTORY +.PP +SVr2 introduced the terminfo feature. +Its programming manual mentioned these low-level functions: +.TS +l l +_ _ +l l. +\fBFunction\fR \fBDescription\fR +fixterm restore tty to \*(``in curses\*('' state +gettmode establish current tty modes +mvcur low level cursor motion +putp T{ +utility function that uses \fBtputs\fP to send characters via \fBputchar\fP. +T} +resetterm set tty modes to \*(``out of curses\*('' state +resetty reset tty flags to stored value +saveterm save current modes as \*(``in curses\*('' state +savetty store current tty flags +setterm establish terminal with given type +setupterm establish terminal with given type +tparm instantiate a string expression with parameters +tputs apply padding information to a string +vidattr like \fBvidputs\fP, but outputs through \fBputchar\fP +vidputs T{ +output a string to put terminal in a specified video attribute mode +T} +.TE +.PP +The programming manual also mentioned +functions provided for termcap compatibility +(commenting that they \*(``may go away at a later date\*(''): +.TS +l l +_ _ +l l. +\fBFunction\fR \fBDescription\fR +tgetent look up termcap entry for given \fIname\fP +tgetflag get boolean entry for given \fIid\fP +tgetnum get numeric entry for given \fIid\fP +tgetstr get string entry for given \fIid\fP +tgoto apply parameters to given capability +tputs T{ +apply padding to capability, calling a function to put characters +T} +.TE +.PP +Early terminfo programs obtained capability values from the +\fBTERMINAL\fP structure initialized by \fBsetupterm\fR. +.PP +SVr3 extended terminfo by adding functions to retrieve capability values +(like the termcap interface), +and reusing tgoto and tputs: +.TS +l l +_ _ +l l. +\fBFunction\fR \fBDescription\fR +tigetflag get boolean entry for given \fIid\fP +tigetnum get numeric entry for given \fIid\fP +tigetstr get string entry for given \fIid\fP +.TE +.PP +SVr3 also replaced several of the SVr2 terminfo functions +which had no counterpart in the termcap interface, +documenting them as obsolete: +.TS +l l +_ _ +l l. +\fBFunction\fR \fBReplaced by\fP +crmode cbreak +fixterm reset_prog_mode +gettmode N/A +nocrmode nocbreak +resetterm reset_shell_mode +saveterm def_prog_mode +setterm setupterm +.TE +.PP +SVr3 kept the \fBmvcur\fP, \fBvidattr\fP and \fBvidputs\fP functions, +along with \fBputp\fP, \fBtparm\fP and \fBtputs\fP. +The latter were needed to support padding, +and handling functions such as \fBvidattr\fP +(which used more than the two parameters supported by \fBtgoto\fP). +.PP +SVr3 introduced the functions for switching between terminal +descriptions, e.g., \fBset_curterm\fP. +Some of that was incremental improvements to the SVr2 library: +.bP +The \fBTERMINAL\fP type definition was introduced in SVr3.01, +for the \fBterm\fP structure provided in SVr2. +.bP +The various global variables such as \fBboolnames\fP were mentioned +in the programming manual at this point, +though the variables were provided in SVr2. +.PP +SVr4 added the \fBvid_attr\fP and \fBvid_puts\fP functions. +.PP +There are other low-level functions declared in the curses header files +on Unix systems, +but none were documented. +The functions marked \*(``obsolete\*('' remained in use +by the Unix \fBvi\fP editor. +.SH PORTABILITY +.SS Legacy functions +.PP +X/Open notes that \fBvidattr\fR and \fBvidputs\fR may be macros. +.PP +The function \fBsetterm\fR is not described by X/Open and must +be considered non-portable. +All other functions are as described by X/Open. +.SS Legacy data +.PP +\fBsetupterm\fP copies the terminal name to the array \fBttytype\fP. +This is not part of X/Open Curses, but is assumed by some applications. +.PP +Other implementions may not declare the capability name arrays. +Some provide them without declaring them. +X/Open does not specify them. +.PP +Extended terminal capability names, e.g., as defined by \fB@TIC@\ \-x\fP, +are not stored in the arrays described here. +.SS Output buffering +.PP +Older versions of \fBncurses\fP assumed that the file descriptor passed to +\fBsetupterm\fP from \fBinitscr\fP or \fBnewterm\fP uses buffered I/O, +and would write to the corresponding stream. +In addition to the limitation that the terminal was left in block-buffered +mode on exit (like System V curses), +it was problematic because \fBncurses\fP +did not allow a reliable way to cleanup on receiving SIGTSTP. +.PP +The current version (ncurses6) +uses output buffers managed directly by \fBncurses\fP. +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 \fBncurses\fP use +alternate versions of these functions +using the more reliable buffering scheme. +.SS Function prototypes +.PP +The X/Open Curses prototypes are based on the SVr4 curses header declarations, +which were defined at the same time the C language was first standardized in +the late 1980s. +.bP +X/Open Curses uses \fBconst\fP less effectively than a later design might, +in some cases applying it needlessly to values are already constant, +and in most cases overlooking parameters which normally would use \fBconst\fP. +Using constant parameters for functions which do not use \fBconst\fP +may prevent the program from compiling. +On the other hand, \fIwritable strings\fP are an obsolescent feature. +.IP +As an extension, this implementation can be configured to change the +function prototypes to use the \fBconst\fP keyword. +The ncurses ABI 6 enables this feature by default. +.bP +X/Open Curses prototypes \fBtparm\fR with a fixed number of parameters, +rather than a variable argument list. +.IP +This implementation uses a variable argument list, but can be +configured to use the fixed-parameter list. +Portable applications should provide 9 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 \fBtiparm\fP function in mid-2009. +.SS Special TERM treatment +.PP +If configured to use the terminal-driver, +e.g., for the MinGW port, +.bP +\fBsetupterm\fP interprets a missing/empty TERM variable as the +special value \*(``unknown\*(''. +.bP +\fBsetupterm\fP allows explicit use of the +the windows console driver by checking if $TERM is set to +\*(``#win32con\*('' or an abbreviation of that string. +.SS Other portability issues +.PP +In System V Release 4, \fBset_curterm\fR has an \fBint\fR return type and +returns \fBOK\fR or \fBERR\fR. We have chosen to implement the X/Open Curses +semantics. +.PP +In System V Release 4, the third argument of \fBtputs\fR has the type +\fBint (*putc)(char)\fR. +.PP +At least one implementation of X/Open Curses (Solaris) returns a value +other than \fBOK\fP/\fBERR\fP from \fBtputs\fP. +That returns the length of the string, and does no error-checking. +.PP +X/Open notes that after calling \fBmvcur\fR, the curses state may not match the +actual terminal state, and that an application should touch and refresh +the window before resuming normal curses calls. +Both \fBncurses\fP and System V Release 4 curses implement \fBmvcur\fR using +the SCREEN data allocated in either \fBinitscr\fR or \fBnewterm\fR. +So though it is documented as a terminfo function, +\fBmvcur\fR is really a curses function which is not well specified. +.PP +X/Open states that the old location must be given for \fBmvcur\fP. +This implementation allows the caller to use \-1's for the old ordinates. +In that case, the old location is unknown. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_initscr\fR(3X), +\fBcurs_kernel\fR(3X), +\fBcurs_termcap\fR(3X), +\fBcurs_variables\fR(3X), +\fBterm_variables\fR(3X), +\fBputc\fR(3), +\fBterminfo\fR(\*n) diff --git a/deps/ncurses-5.9/man/curs_threads.3x b/deps/ncurses-6.3/man/curs_threads.3x similarity index 95% rename from deps/ncurses-5.9/man/curs_threads.3x rename to deps/ncurses-6.3/man/curs_threads.3x index 4baa2a1..cb2da61 100644 --- a/deps/ncurses-5.9/man/curs_threads.3x +++ b/deps/ncurses-6.3/man/curs_threads.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2008,2010 Free Software Foundation, Inc. * +.\" Copyright 2020 Thomas E. Dickey * +.\" Copyright 2008-2015,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 * @@ -26,16 +27,16 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: curs_threads.3x,v 1.18 2010/12/04 18:38:55 tom Exp $ +.\" $Id: curs_threads.3x,v 1.27 2020/12/30 18:28:51 tom Exp $ .TH curs_threads 3X "" .de bP -.IP \(bu 4 +.ie n .IP \(bu 4 +.el .IP \(bu 2 .. .na .hy 0 .SH NAME -\fBuse_screen\fR, -\fBuse_window\fR \- \fBcurses\fR thread support +\fBcurs_threads\fR \- \fBcurses\fR thread support .ad .hy .SH SYNOPSIS @@ -44,16 +45,16 @@ \fBtypedef int (*NCURSES_WINDOW_CB)(WINDOW *, void *);\fR .br \fBtypedef int (*NCURSES_SCREEN_CB)(SCREEN *, void *);\fR -.br +.sp \fBint get_escdelay(void);\fR .br -\fBint set_escdelay(int size);\fR +\fBint set_escdelay(int \fP\fIms\fP\fB);\fR .br -\fBint set_tabsize(int size);\fR -.br -\fBint use_screen(SCREEN *scr, NCURSES_WINDOW_CB func, void *data);\fR +\fBint set_tabsize(int \fP\fIcols\fP\fB);\fR +.sp +\fBint use_screen(SCREEN *\fP\fIscr\fP\fB, NCURSES_SCREEN_CB \fP\fIfunc\fP\fB, void *\fP\fIdata\fP\fB);\fR .br -\fBint use_window(WINDOW *win, NCURSES_SCREEN_CB func, void *data);\fR +\fBint use_window(WINDOW *\fP\fIwin\fP\fB, NCURSES_WINDOW_CB \fP\fIfunc\fP\fB, void *\fP\fIdata\fP\fB);\fR .br .SH DESCRIPTION This implementation can be configured to provide rudimentary support @@ -67,7 +68,7 @@ configuration which hide the mutex's needed to prevent concurrent use of the global variables when configured for threading. .PP In addition to forcing access to members of the \fBWINDOW\fP structure -to be via functions (see \fBcurs_opaque\fP(3x)), +to be via functions (see \fBcurs_opaque\fP(3X)), it makes functions of the common global variables, e.g., COLORS, @@ -540,6 +541,7 @@ wget_wch/screen (input-operation) wget_wstr/screen (input-operation) wgetbkgrnd/window wgetch/screen (input-operation) +wgetdelay/window wgetn_wstr/screen (input-operation) wgetnstr/screen (input-operation) wgetparent/window @@ -587,7 +589,7 @@ wvline_set/window .TE .\" *************************************************************************** .SH RETURN VALUE -These functions all return TRUE or FALSE, except as noted. +These functions all return \fBTRUE\fP or \fBFALSE\fP, except as noted. .SH NOTES Both a macro and a function are provided for each name. .SH PORTABILITY diff --git a/deps/ncurses-6.3/man/curs_touch.3x b/deps/ncurses-6.3/man/curs_touch.3x new file mode 100644 index 0000000..8b0ca87 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_touch.3x @@ -0,0 +1,129 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_touch.3x,v 1.24 2021/06/17 21:26:02 tom Exp $ +.TH curs_touch 3X "" +.na +.hy 0 +.SH NAME +\fBtouchwin\fR, +\fBtouchline\fR, +\fBuntouchwin\fR, +\fBwtouchln\fR, +\fBis_linetouched\fR, +\fBis_wintouched\fR \- \fBcurses\fR refresh control routines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBint touchline(WINDOW *\fP\fIwin\fP\fB, int \fP\fIstart\fP\fB, int \fP\fIcount\fP\fB);\fR +.sp +\fBint touchwin(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint wtouchln(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIn\fP\fB, int \fP\fIchanged\fP\fB);\fR +.sp +\fBint untouchwin(WINDOW *\fP\fIwin\fP\fB);\fR +.sp +\fBbool is_linetouched(WINDOW *\fP\fIwin\fP\fB, int \fP\fIline\fP\fB);\fR +.br +\fBbool is_wintouched(WINDOW *\fP\fIwin\fP\fB);\fR +.br +.SH DESCRIPTION +The \fBtouchwin\fR and \fBtouchline\fR routines throw away all +optimization information about which parts of the window have been +touched, by pretending that the entire window has been drawn on. +This +is sometimes necessary when using overlapping windows, since a change +to one window affects the other window, but the records of which lines +have been changed in the other window do not reflect the change. +The +routine \fBtouchline\fR only pretends that \fIcount\fR lines have been +changed, beginning with line \fIstart\fR. +.PP +The \fBuntouchwin\fR routine marks all lines in the window as unchanged since +the last call to \fBwrefresh\fR. +.PP +The \fBwtouchln\fR routine makes \fIn\fR lines in the window, starting +at line \fIy\fR, look as if they have (\fIchanged\fR\fB=1\fR) or have +not (\fIchanged\fR\fB=0\fR) been changed since the last call to +\fBwrefresh\fR. +.PP +The \fBis_linetouched\fR and \fBis_wintouched\fR routines return +\fBTRUE\fR if the specified line/window was modified since the last +call to \fBwrefresh\fR; otherwise they return \fBFALSE\fR. In +addition, \fBis_linetouched\fR returns \fBERR\fR if \fIline\fR is not +valid for the given window. +.SH RETURN VALUE +All routines return the integer \fBERR\fR upon failure and an integer value +other than \fBERR\fR upon successful completion, unless otherwise noted in the +preceding routine descriptions. +.PP +X/Open does not define any error conditions. +In this implementation +.RS 3 +.TP 5 +\fBis_linetouched\fP +returns an error +if the window pointer is null, or +if the line number is outside the window. +.IP +The constant \fBERR\fP is distinct from \fBTRUE\fP and \fBFALSE\fP, +which are the normal return values of this function. +Because the function returns a \fBbool\fP, +returning \fBERR\fP (which is neither \fBTRUE\fP nor \fBFALSE\fP) +may not be supported by the compiler. +.IP +To provide error-checking and also match the X/Open function prototype, +the \fBERR\fP is provided by a macro named \fBis_linetouched\fP. +The actual function returns \fBFALSE\fP when it detects an error. +.TP 5 +\fBwtouchln\fP +returns an error +if the window pointer is null, or +if the line number is outside the window. +.RE +.SH PORTABILITY +.PP +These functions were introduced by SVr4. +The Solaris curses header file, +for instance, defines both an actual function and macro for each. +The macros give the same result as the actual functions. +SVr4 curses does not check the window parameter \fIwin\fP to ensure +that it is not \fBNULL\fP; +otherwise this implementation behaves the same as SVr4. +.PP +The XSI Curses standard, Issue 4 describes these functions, +but defines no error conditions. +.SH NOTES +All of these routines except \fBwtouchln\fR may be macros. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_variables\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_trace.3x b/deps/ncurses-6.3/man/curs_trace.3x new file mode 100644 index 0000000..513340a --- /dev/null +++ b/deps/ncurses-6.3/man/curs_trace.3x @@ -0,0 +1,290 @@ +.\"*************************************************************************** +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2000-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_trace.3x,v 1.21 2020/02/02 23:34:34 tom Exp $ +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.TH curs_trace 3X "" +.na +.hy 0 +.SH NAME +\fBcurses_trace\fR, +\fBtrace\fR, +\fB_tracef\fR, +\fB_traceattr\fR, +\fB_traceattr2\fR, +\fB_tracecchar_t\fR, +\fB_tracecchar_t2\fR, +\fB_tracechar\fR, +\fB_tracechtype\fR, +\fB_tracechtype2\fR, +\fB_nc_tracebits\fR, +\fB_tracedump\fR, +\fB_tracemouse\fR \- \fBcurses\fR debugging routines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBunsigned curses_trace(const unsigned \fP\fIparam\fP\fB);\fR +.sp +\fBvoid _tracef(const char *\fP\fIformat\fP\fB, ...);\fR +.sp +\fBchar *_traceattr(attr_t \fP\fIattr\fP\fB);\fR +.br +\fBchar *_traceattr2(int \fP\fIbuffer\fP\fB, chtype \fP\fIch\fP\fB);\fR +.br +\fBchar *_tracecchar_t(const cchar_t *\fP\fIstring\fP\fB);\fR +.br +\fBchar *_tracecchar_t2(int \fP\fIbuffer\fP\fB, const cchar_t *\fP\fIstring\fP\fB);\fR +.br +\fBchar *_tracechar(int \fP\fIch\fP\fB);\fR +.br +\fBchar *_tracechtype(chtype \fP\fIch\fP\fB);\fR +.br +\fBchar *_tracechtype2(int \fP\fIbuffer\fP\fB, chtype \fP\fIch\fP\fB);\fR +.sp +\fBvoid _tracedump(const char *\fP\fIlabel\fP\fB, WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBchar *_nc_tracebits(void);\fR +.br +\fBchar *_tracemouse(const MEVENT *\fP\fIevent\fP\fB);\fR +.sp +/* deprecated */ +.br +\fBvoid trace(const unsigned int \fP\fIparam\fP\fB);\fR +.SH DESCRIPTION +The \fIcurses trace\fR routines are used for debugging the ncurses libraries, +as well as applications which use the ncurses libraries. +Some limitations apply: +.bP +Aside from \fBcurses_trace\fP, +the other functions are normally available only with the debugging library +e.g., \fIlibncurses_g.a\fR. +.IP +All of the trace functions may be compiled into any model (shared, static, +profile) by defining the symbol \fBTRACE\fR. +.bP +Additionally, the functions which use \fBcchar_t\fP +are only available with the wide-character configuration of the libraries. +.SS Functions +The principal parts of this interface are +.bP +\fBcurses_trace\fR, which selectively enables different tracing features, and +.bP +\fB_tracef\fR, which writes formatted data to the \fItrace\fR file. +.IP +The other functions either return a pointer to a string-area +(allocated by the corresponding function), or return no value +(such as \fB_tracedump\fP, +which implements the screen dump for \fBTRACE_UPDATE\fP). +The caller should not free these strings, +since the allocation is reused on successive calls. +To work around the problem of a single string-area per function, +some use a buffer-number parameter, telling the library to allocate +additional string-areas. +.PP +The \fBcurses_trace\fR function is always available, +whether or not the other trace functions are available: +.bP +If tracing is available, +calling \fBcurses_trace\fR with a nonzero parameter +updates the trace mask, +and returns the previous trace mask. +.IP +When the trace mask is nonzero, +ncurses creates the file \*(``trace\*('' in the current directory for output. +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 +values from the list of \fBTRACE_\fP\fIxxx\fR definitions in \fB<curses.h>\fR. +These include: +.TP 5 +.B TRACE_DISABLE +turn off tracing by passing a zero parameter. +.IP +The library flushes the output file, +but retains an open file-descriptor to the trace file +so that it can resume tracing later if a nonzero parameter is passed +to the \fBcurses_trace\fP function. +.TP 5 +.B TRACE_TIMES +trace user and system times of updates. +.TP 5 +.B TRACE_TPUTS +trace \fBtputs\fP(3X) calls. +.TP 5 +.B TRACE_UPDATE +trace update actions, old & new screens. +.TP 5 +.B TRACE_MOVE +trace cursor movement and scrolling. +.TP 5 +.B TRACE_CHARPUT +trace all character outputs. +.TP 5 +.B TRACE_ORDINARY +trace all update actions. +The old and new screen contents are written to the trace file +for each refresh. +.TP 5 +.B TRACE_CALLS +trace all curses calls. +The parameters for each call are traced, as well as return values. +.TP 5 +.B TRACE_VIRTPUT +trace virtual character puts, i.e., calls to \fBaddch\fR. +.TP 5 +.B TRACE_IEVENT +trace low-level input processing, including timeouts. +.TP 5 +.B TRACE_BITS +trace state of TTY control bits. +.TP 5 +.B TRACE_ICALLS +trace internal/nested calls. +.TP 5 +.B TRACE_CCALLS +trace per-character calls. +.TP 5 +.B TRACE_DATABASE +trace read/write of terminfo/termcap data. +.TP 5 +.B TRACE_ATTRS +trace changes to video attributes and colors. +.TP 5 +.B TRACE_MAXIMUM +maximum trace level, enables all of the separate trace features. +.PP +Some tracing features are enabled whenever the \fBcurses_trace\fR parameter +is nonzero. +Some features overlap. +The specific names are used as a guideline. +.SS Initialization +These functions check the \fBNCURSES_TRACE\fP environment variable, +to set the tracing feature as if \fBcurses_trace\fP was called: +.RS 4 +.PP +.na +.hy 0 +filter, +initscr, +new_prescr, +newterm, +nofilter, +restartterm, +ripoffline, +setupterm, +slk_init, +tgetent, +use_env, +use_extended_names, +use_tioctl +.hy +.ad +.RE +.SS Command-line Utilities +.PP +The command-line utilities such as \fBtic\fP(1) provide a verbose option +which extends the set of messages written using the \fBcurses_trace\fP function. +Both of these (\fB\-v\fP and \fBcurses_trace\fP) +use the same variable (\fB_nc_tracing\fP), +which determines the messages which are written. +.PP +Because the command-line utilities may call initialization functions +such as \fBsetupterm\fP, \fBtgetent\fP or \fBuse_extended_names\fP, +some of their debugging output may be directed to the \fItrace\fP file +if the \fBNCURSES_TRACE\fP environment variable is set: +.bP +messages produced in the utility are written to the standard error. +.bP +messages produced by the underlying library are written to \fItrace\fP. +.PP +If ncurses is built without tracing, none of the latter are produced, +and fewer diagnostics are provided by the command-line utilities. +.SH RETURN VALUE +Routines which return a value are designed to be used as parameters +to the \fB_tracef\fR routine. +.SH PORTABILITY +These functions are not part of the XSI interface. +Some other curses implementations are known to +have similar features, +but they are not compatible with ncurses: +.bP +SVr4 provided \fBtraceon\fP and \fBtraceoff\fP, +to control whether debugging information was written +to the \*(``trace\*('' file. +While the functions were always available, +this feature was only enabled +if \fBDEBUG\fP was defined when building the library. +.IP +The SVr4 tracing feature is undocumented. +.bP +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, +with a note that they are not present in X/Open Curses, +ncurses or NetBSD. +It does not mention SVr4, +but the functions' inclusion in a header file section +labeled \*(``Quasi-standard\*('' hints at the origin. +.bP +NetBSD does not provide functions for enabling/disabling traces. +It uses environment variables +\fBCURSES_TRACE_MASK\fP and +\fBCURSES_TRACE_FILE\fP to determine what is traced, +and where the results are written. +This is available only when a debug-library is built. +.IP +The NetBSD tracing feature is undocumented. +.PP +A few ncurses functions are not provided when symbol versioning is used: +.RS 4 +.PP +_nc_tracebits, +_tracedump, +_tracemouse +.RE +.PP +The original \fBtrace\fP routine was deprecated because +it often conflicted with application names. +.SH SEE ALSO +\fBcurses\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_util.3x b/deps/ncurses-6.3/man/curs_util.3x new file mode 100644 index 0000000..f833803 --- /dev/null +++ b/deps/ncurses-6.3/man/curs_util.3x @@ -0,0 +1,407 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_util.3x,v 1.60 2020/12/19 22:44:46 tom Exp $ +.TH curs_util 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBdelay_output\fR, +\fBfilter\fR, +\fBflushinp\fR, +\fBgetwin\fR, +\fBkey_name\fR, +\fBkeyname\fR, +\fBnofilter\fR, +\fBputwin\fR, +\fBunctrl\fR, +\fBuse_env\fR, +\fBuse_tioctl\fR, +\fBwunctrl\fR \- miscellaneous \fBcurses\fR utility routines +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBconst char *unctrl(chtype \fP\fIc\fP\fB);\fR +.br +\fBwchar_t *wunctrl(cchar_t *\fP\fIc\fP\fB);\fR +.sp +\fBconst char *keyname(int \fP\fIc\fP\fB);\fR +.br +\fBconst char *key_name(wchar_t \fP\fIw\fP\fB);\fR +.sp +\fBvoid filter(void);\fR +.br +\fBvoid nofilter(void);\fR +.sp +\fBvoid use_env(bool \fP\fIf\fP\fB);\fR +.br +\fBvoid use_tioctl(bool \fP\fIf\fP\fB);\fR +.sp +\fBint putwin(WINDOW *\fP\fIwin\fP\fB, FILE *\fP\fIfilep\fP\fB);\fR +.br +\fBWINDOW *getwin(FILE *\fP\fIfilep\fP\fB);\fR +.sp +\fBint delay_output(int \fP\fIms\fP\fB);\fR +.br +\fBint flushinp(void);\fR +.br +.SH DESCRIPTION +.SS unctrl +.PP +The \fBunctrl\fR routine returns a character string which is a printable +representation of the character \fIc\fR, ignoring attributes. +Control characters are displayed in the \fB^\fR\fIX\fR notation. +Printing characters are displayed as is. +The corresponding \fBwunctrl\fR returns a printable representation of +a wide character. +.SS keyname/key_name +.PP +The \fBkeyname\fR routine returns a character string +corresponding to the key \fIc\fR: +.bP +Printable characters are displayed as themselves, +e.g., a one-character string containing the key. +.bP +Control characters are displayed in the \fB^\fR\fIX\fR notation. +.bP +DEL (character 127) is displayed as \fB^?\fP. +.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\-\fR\fIX\fR notation, +or are displayed as themselves. +In the latter case, the values may not be printable; +this follows the X/Open specification. +.bP +Values above 256 may be the names of the names of function keys. +.bP +Otherwise (if there is no corresponding name) 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\fR returns a character string corresponding +to the wide-character value \fIw\fR. +The two functions do not return the same set of strings; +the latter returns null where the former would display a meta character. +.SS filter/nofilter +.PP +The \fBfilter\fR routine, if used, must be called before \fBinitscr\fR or +\fBnewterm\fR are called. +Calling \fBfilter\fP causes these changes in initialization: +.bP +\fBLINES\fR is set to 1; +.bP +the capabilities +\fBclear\fR, +\fBcud1\fR, +\fBcud\fR, +\fBcup\fR, +\fBcuu1\fR, +\fBcuu\fR, +\fBvpa\fR +are disabled; +.bP +the capability \fBed\fP is disabled if \fBbce\fP is set; +.bP +and the \fBhome\fR string is set to the value of \fBcr\fR. +.PP +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 +.PP +The \fBuse_env\fR routine, if used, +should be called before \fBinitscr\fR or +\fBnewterm\fR are called +(because those compute the screen size). +It modifies the way \fBncurses\fP treats environment variables +when determining the screen size. +.bP +Normally \fBncurses\fP looks first at the terminal database for the screen size. +.IP +If \fBuse_env\fP was called with \fBFALSE\fP for parameter, +it stops here unless +\fBuse_tioctl\fP was also called with \fBTRUE\fP for parameter. +.bP +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), +\fBncurses\fP examines the \fBLINES\fR or \fBCOLUMNS\fR environment variables, +using a value in those to override the results +from the operating system or terminal database. +.IP +\fBNcurses\fP also updates the screen size in response to \fBSIGWINCH\fP, +unless overridden by the \fBLINES\fR or \fBCOLUMNS\fR environment variables, +.SS use_tioctl +.PP +The \fBuse_tioctl\fR routine, if used, +should be called before \fBinitscr\fR or \fBnewterm\fR are called +(because those compute the screen size). +After \fBuse_tioctl\fR is called with \fBTRUE\fR as an argument, +\fBncurses\fP modifies the last step in its computation +of screen size as follows: +.bP +checks if the \fBLINES\fR and \fBCOLUMNS\fR environment variables +are set to a number greater than zero. +.bP +for each, \fBncurses\fP updates the corresponding environment variable +with the value that it has obtained via operating system call +or from the terminal database. +.bP +\fBncurses\fP re-fetches the value of the environment variables so that +it is still the environment variables which set the screen size. +.PP +The \fBuse_env\fP and \fBuse_tioctl\fP routines combine as +summarized here: +.TS +center tab(/); +l l l +_ _ _ +lw7 lw7 lw40. +\fIuse_env\fR/\fIuse_tioctl\fR/\fISummary\fR +TRUE/FALSE/T{ +This is the default behavior. +\fBncurses\fP uses operating system calls +unless overridden by $LINES or $COLUMNS environment variables. +T} +TRUE/TRUE/T{ +\fBncurses\fP updates $LINES and $COLUMNS based on operating system calls. +T} +FALSE/TRUE/T{ +\fBncurses\fP ignores $LINES and $COLUMNS, +uses operating system calls to obtain size. +T} +FALSE/FALSE/T{ +\fBncurses\fP relies on the terminal database to determine size. +T} +.TE +.SS putwin/getwin +.PP +The \fBputwin\fR routine writes all data associated +with window (or pad) \fIwin\fR into +the file to which \fIfilep\fR points. +This information can be later retrieved +using the \fBgetwin\fR function. +.PP +The \fBgetwin\fR routine reads window related data stored in the file by +\fBputwin\fR. +The routine then creates and initializes a new window using that +data. +It returns a pointer to the new window. +There are a few caveats: +.bP +the data written is a copy of the \fBWINDOW\fP structure, +and its associated character cells. +The format differs between the wide-character (\fBncursesw\fP) and +non-wide (\fBncurses\fP) libraries. +You can transfer data between the two, however. +.bP +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 +created in the application using \fBinit_pair\fP, +they will not be colored when the window is refreshed. +.SS delay_output +.PP +The \fBdelay_output\fR routine inserts an \fIms\fR millisecond pause +in output. +This routine should not be used extensively because +padding characters are used rather than a CPU pause. +If no padding character is specified, +this uses \fBnapms\fR to perform the delay. +.SS flushinp +.PP +The \fBflushinp\fR 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\fR, routines that return an integer return \fBERR\fR +upon failure and \fBOK\fR (SVr4 specifies only "an integer value other than +\fBERR\fR") upon successful completion. +.PP +Routines that return pointers return \fBNULL\fR on error. +.PP +X/Open does not define any error conditions. +In this implementation +.RS 3 +.TP 5 +\fBflushinp\fR +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 +.SH PORTABILITY +.SS filter +.PP +The SVr4 documentation describes the action of \fBfilter\fR only in the vaguest +terms. +The description here is adapted from the XSI Curses standard (which +erroneously fails to describe the disabling of \fBcuu\fR). +.SS keyname +.PP +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 +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. +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 +.PP +The \fBnofilter\fP and \fBuse_tioctl\fP routines are specific to \fBncurses\fP. +They were not supported on Version 7, BSD or System V implementations. +It is recommended that any code depending on \fBncurses\fP extensions +be conditioned using NCURSES_VERSION. +.SS putwin/getwin +.PP +The \fBputwin\fP and \fBgetwin\fP functions have several issues with +portability: +.bP +The files written and read by these functions +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. +.bP +Most implementations simply dump the binary \fBWINDOW\fP structure to the file. +These include SVr4 curses, NetBSD and PDCurses, +as well as older \fBncurses\fP versions. +This implementation +(as well as the X/Open variant of Solaris 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. +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. +.SS unctrl/wunctrl +.PP +The XSI Curses standard, Issue 4 describes these functions. +It states that \fBunctrl\fR and \fBwunctrl\fR will return a null pointer if +unsuccessful, but does not define any error conditions. +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 as the first character. +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. +This implementation permits that, +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\fR in this implementation are determined +at compile time, +showing C1 controls from the upper-128 codes +with a \*(``~\*('' prefix rather than \*(``^\*(''. +Other implementations have different conventions. +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 +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., +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. +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. +.PP +X/Open Curses documents \fBunctrl\fP as declared in \fB<unctrl.h>\fP, +which \fBncurses\fP does. +However, \fBncurses\fP' \fB<curses.h>\fP includes \fB<unctrl.h>\fP, +matching the behavior of SVr4 curses. +Other implementations may not do that. +.SS use_env/use_tioctl +.PP +If \fBncurses\fP is configured to provide the sp-functions extension, +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\fR(3X)). +This feature of \fBuse_env\fP +is not provided by other implementation of curses. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_initscr\fR(3X), +\fBcurs_inopts\fR(3X), +\fBcurs_kernel\fR(3X), +\fBcurs_scr_dump\fR(3X), +\fBcurs_sp_funcs\fR(3X), +\fBcurs_variables\fR(3X), +\fBlegacy_coding\fR(3X). diff --git a/deps/ncurses-6.3/man/curs_variables.3x b/deps/ncurses-6.3/man/curs_variables.3x new file mode 100644 index 0000000..25294df --- /dev/null +++ b/deps/ncurses-6.3/man/curs_variables.3x @@ -0,0 +1,188 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 2010-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_variables.3x,v 1.15 2020/04/18 14:29:07 tom Exp $ +.TH curs_variables 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ds n 5 +.na +.hy 0 +.SH NAME +\fBCOLORS\fR, +\fBCOLOR_PAIRS\fR, +\fBCOLS\fR, +\fBESCDELAY\fR, +\fBLINES\fR, +\fBTABSIZE\fR, +\fBcurscr\fR, +\fBnewscr\fR, +\fBstdscr\fR +\- \fBcurses\fR global variables +.ad +.hy +.SH SYNOPSIS +.nf +\fB#include <curses.h>\fR +.PP +\fBint COLOR_PAIRS;\fR +.br +\fBint COLORS;\fR +.br +\fBint COLS;\fR +.br +\fBint ESCDELAY;\fR +.br +\fBint LINES;\fR +.br +\fBint TABSIZE;\fR +.br +\fBWINDOW * curscr;\fR +.br +\fBWINDOW * newscr;\fR +.br +\fBWINDOW * stdscr;\fR +.fi +.SH DESCRIPTION +This page summarizes variables provided by the \fBcurses\fP library. +A more complete description is given in the \fBcurses\fP(3X) manual page. +.PP +Depending on the configuration, these may be actual variables, +or macros (see \fBcurs_threads\fR(3X) and \fBcurs_opaque\fR(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. +.SS COLOR_PAIRS +After initializing curses, this variable contains the number of color pairs +which the terminal can support. +Usually the number of color pairs will be the product \fBCOLORS\fP*\fBCOLORS\fP, +however this is not always true: +.bP +a few terminals use HLS colors, which do not follow this rule +.bP +terminals supporting a large number of colors are limited by the number +of color pairs that can be represented in a \fIsigned short\fP value. +.SS COLORS +After initializing curses, this variable contains the number of colors +which the terminal can support. +.SS COLS +After initializing curses, this variable contains the width of the screen, +i.e., the number of columns. +.SS ESCDELAY +This variable holds the number of milliseconds to wait after reading an +escape character, +to distinguish between an individual escape character entered on the +keyboard from escape sequences sent by cursor- and function-keys +(see curses(3X)). +.SS LINES +After initializing curses, this variable contains the height of the screen, +i.e., the number of lines. +.SS TABSIZE +This variable holds the number of columns used by the \fIcurses\fP library +when converting a tab character to spaces as it adds the tab to a window +(see \fBcurs_addch\fP(3X). +.SS The Current Screen +This implementation of curses uses a special window \fBcurscr\fP to +record its updates to the terminal screen. +.PP +This is referred to as the \*(``physical screen\*('' in the +\fBcurs_refresh\fR(3X) and +\fBcurs_outopts\fR(3X) manual pages. +.SS The New Screen +This implementation of curses uses a special window \fBnewscr\fP to +hold updates to the terminal screen before applying them to \fBcurscr\fP. +.PP +This is referred to as the \*(``virtual screen\*('' in the +\fBcurs_kernel\fR(3X), +\fBcurs_refresh\fR(3X) and +\fBcurs_outopts\fR(3X) manual pages. +.SS The Standard Screen +Upon initializing curses, +a default window called \fBstdscr\fP, +which is the size of the terminal screen, is created. +Many curses functions use this window. +.SH NOTES +The curses library is initialized using either \fBinitscr\fR(3X), +or \fBnewterm\fR(3X). +.PP +If \fBcurses\fP is configured to use separate curses/terminfo libraries, +most of these variables reside in the curses library. +.SH PORTABILITY +\fBTABSIZE\fP is a feature of SVr4 curses +which is not documented by X/Open curses. +.bP +In SVr4 curses, \fBTABSIZE\fP is initially set from the terminal description's +\fBinit_tabs\fP capability. +After that, it can be altered by the applications using SVr4 curses. +.IP +SVr4 curses uses the current value of \fBTABSIZE\fP to +compute the position of tabstops for updating both +the virtual screen with \fBaddch\fP(3X) as well as +the physical screen with \fBmvcur\fP(3X). +.bP +This implementation uses the current value of \fBTABSIZE\fP only for +updating the virtual screen. +It uses the terminal description's \fBit\fP (\fBinit_tabs\fP) capability for +computing hardware tabs (i.e., tab stops on the physical screen). +.bP +Other implementations differ. +For instance, NetBSD curses allows \fBTABSIZE\fP to be set through +an environment variable. +This implementation does not. +.IP +NetBSD curses does not support hardware tabs; +it uses the \fBinit_tabs\fP capability and the \fBTABSIZE\fP variable +only for updating the virtual screen. +.PP +\fBESCDELAY\fP is an extension in AIX curses: +.bP +In AIX, the units for \fBESCDELAY\fP are \fIfifths\fP of a millisecond. +.bP +The default value for AIX's \fBESCDELAY\fP is 0.1 seconds. +.bP +AIX also enforces a limit of 10,000 seconds for \fBESCDELAY\fP; +this implementation currently has no upper limit. +.PP +This implementation has long used \fBESCDELAY\fP with units of milliseconds, +making it impossible to be completely compatible with AIX. +Likewise, most users have either decided to override the value, +or rely upon its default value. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_opaque\fR(3X), +\fBcurs_terminfo\fR(3X), +\fBcurs_threads\fR(3X), +\fBterm_variables\fR(3X), +\fBterminfo\fR(\*n). diff --git a/deps/ncurses-6.3/man/curs_window.3x b/deps/ncurses-6.3/man/curs_window.3x new file mode 100644 index 0000000..e5ea2aa --- /dev/null +++ b/deps/ncurses-6.3/man/curs_window.3x @@ -0,0 +1,263 @@ +.\"*************************************************************************** +.\" Copyright 2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2015,2016 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. * +.\"*************************************************************************** +.\" +.\" $Id: curs_window.3x,v 1.23 2021/06/17 21:11:08 tom Exp $ +.TH curs_window 3X "" +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.na +.hy 0 +.SH NAME +\fBnewwin\fR, +\fBdelwin\fR, +\fBmvwin\fR, +\fBsubwin\fR, +\fBderwin\fR, +\fBmvderwin\fR, +\fBdupwin\fR, +\fBwsyncup\fR, +\fBsyncok\fR, +\fBwcursyncup\fR, +\fBwsyncdown\fR \- create \fBcurses\fR windows +.ad +.hy +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBWINDOW *newwin(\fR + \fBint \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR + \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR +.br +\fBint delwin(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint mvwin(WINDOW *\fP\fIwin\fP\fB, int \fP\fIy\fP\fB, int \fP\fIx\fP\fB);\fR +.br +\fBWINDOW *subwin(WINDOW *\fP\fIorig\fP\fB,\fR + \fBint \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR + \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR +.br +\fBWINDOW *derwin(WINDOW *\fP\fIorig\fP\fB,\fR + \fBint \fP\fInlines\fP\fB, int \fP\fIncols\fP\fB,\fR + \fBint \fP\fIbegin_y\fP\fB, int \fP\fIbegin_x\fP\fB);\fR +.br +\fBint mvderwin(WINDOW *\fP\fIwin\fP\fB, int \fP\fIpar_y\fP\fB, int \fP\fIpar_x\fP\fB);\fR +.br +\fBWINDOW *dupwin(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBvoid wsyncup(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBint syncok(WINDOW *\fP\fIwin\fP\fB, bool \fP\fIbf\fP\fB);\fR +.br +\fBvoid wcursyncup(WINDOW *\fP\fIwin\fP\fB);\fR +.br +\fBvoid wsyncdown(WINDOW *\fP\fIwin\fP\fB);\fR +.br +.SH DESCRIPTION +.SS newwin +Calling \fBnewwin\fR creates and returns a pointer to a new window with the +given number of lines and columns. +The upper left-hand corner of the window is +at +.RS +line \fIbegin\fR_\fIy\fR, +.br +column \fIbegin\fR_\fIx\fR +.RE +.PP +If either +\fInlines\fR or \fIncols\fR is zero, they default to +.RS +\fBLINES \-\fR \fIbegin\fR_\fIy\fR and +.br +\fBCOLS \-\fR \fIbegin\fR_\fIx\fR. +.RE +.PP +A new full-screen window is created by calling \fBnewwin(0,0,0,0)\fR. +.PP +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: +.RS +.na +.PP +idcok, +idlok, +immedok, +keypad, +leaveok, +nodelay, +scrollok, +setscrreg, +syncok, +wbkgdset, +wbkgrndset, and +wtimeout +.RE +.ad +.SS delwin +.PP +Calling \fBdelwin\fR deletes the named window, freeing all memory +associated with it (it does not actually erase the window's screen +image). +Subwindows must be deleted before the main window can be deleted. +.SS mvwin +.PP +Calling \fBmvwin\fR moves the window so that the upper left-hand +corner is at position (\fIx\fR, \fIy\fR). +If the move would cause the window to be off the screen, +it is an error and the window is not moved. +Moving subwindows is allowed, but should be avoided. +.SS subwin +.PP +Calling \fBsubwin\fR creates and returns a pointer to a new window +with the given number of lines, \fInlines\fR, and columns, \fIncols\fR. +The window is at position (\fIbegin\fR_\fIy\fR, +\fIbegin\fR_\fIx\fR) on the screen. +The subwindow shares memory with the window \fIorig\fR, +so that changes made to one window +will affect both windows. +When using this routine, it is necessary to call +\fBtouchwin\fR or \fBtouchline\fR on \fIorig\fR before calling +\fBwrefresh\fR on the subwindow. +.SS derwin +.PP +Calling \fBderwin\fR is the same as calling \fBsubwin,\fR except that +\fIbegin\fR_\fIy\fR and \fIbegin\fR_\fIx\fR are relative to the origin +of the window \fIorig\fR rather than the screen. +There is no difference between the subwindows and the derived windows. +.PP +Calling \fBmvderwin\fR moves a derived window (or subwindow) +inside its parent window. +The screen-relative parameters of the window are not changed. +This routine is used to display different +parts of the parent window at the same physical position on the +screen. +.SS dupwin +.PP +Calling \fBdupwin\fR creates an exact duplicate of the window \fIwin\fR. +.SS wsyncup +.PP +Calling \fBwsyncup\fR touches all locations in ancestors of \fIwin\fR that are +changed in \fIwin\fR. +If \fBsyncok\fR is called with second argument +\fBTRUE\fR then \fBwsyncup\fR is called automatically whenever there is a +change in the window. +.SS wsyncdown +.PP +The \fBwsyncdown\fR routine touches each location in \fIwin\fR that has been +touched in any of its ancestor windows. +This routine is called by +\fBwrefresh\fR, so it should almost never be necessary to call it manually. +.SS wcursyncup +.PP +The routine \fBwcursyncup\fR 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\fR upon failure and +\fBOK\fR (SVr4 only specifies "an integer value other than \fBERR\fR") upon +successful completion. +.PP +Routines that return pointers return \fBNULL\fR on error. +.PP +X/Open defines no error conditions. +In this implementation +.TP 5 +\fBdelwin\fR +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. +.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. +.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. +.SH NOTES +If many small changes are made to the window, the \fBwsyncup\fR option could +degrade performance. +.PP +Note that \fBsyncok\fR may be a macro. +.SH BUGS +The subwindow functions (\fBsubwin\fR, \fBderwin\fR, \fBmvderwin\fR, +\fBwsyncup\fR, \fBwsyncdown\fR, \fBwcursyncup\fR, \fBsyncok\fR) are flaky, +incompletely implemented, and not well tested. +.PP +The System V curses documentation is very unclear about what \fBwsyncup\fR +and \fBwsyncdown\fR actually do. +It seems to imply that they are only +supposed to touch exactly those lines that are affected by ancestor changes. +The language here, and the behavior of the \fBcurses\fR implementation, +is patterned on the XPG4 curses standard. +The weaker XPG4 spec may result in slower updates. +.SH PORTABILITY +The XSI Curses standard, Issue 4 describes these functions. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_refresh\fR(3X), +\fBcurs_touch\fR(3X), +\fBcurs_variables\fR(3X) diff --git a/deps/ncurses-5.9/man/default_colors.3x b/deps/ncurses-6.3/man/default_colors.3x similarity index 76% rename from deps/ncurses-5.9/man/default_colors.3x rename to deps/ncurses-6.3/man/default_colors.3x index 0b85598..c1d1bf7 100644 --- a/deps/ncurses-5.9/man/default_colors.3x +++ b/deps/ncurses-6.3/man/default_colors.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 2000-2011,2016 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 * @@ -28,8 +29,12 @@ .\" .\" Author: Thomas E. Dickey 1997,1999,2000,2005 .\" -.\" $Id: default_colors.3x,v 1.23 2011/01/03 21:52:27 Tim.van.der.Molen Exp $ +.\" $Id: default_colors.3x,v 1.31 2020/12/19 21:38:37 tom Exp $ .TH default_colors 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME \fBuse_default_colors\fR, \fBassume_default_colors\fR \- use terminal's default colors @@ -38,12 +43,9 @@ .sp \fBint use_default_colors(void);\fP .br -\fBint assume_default_colors(int fg, int bg);\fP +\fBint assume_default_colors(int \fP\fIfg\fP\fB, int \fP\fIbg\fP\fB);\fP .SH DESCRIPTION -The -.I use_default_colors() -and -.I assume_default_colors() +The \fBuse_default_colors\fP and \fBassume_default_colors\fP functions are extensions to the curses library. They are used with terminals that support ISO 6429 color, or equivalent. These terminals allow the application to reset color to an unspecified @@ -55,21 +57,21 @@ Some applications are designed to work with the default background, using colors only for text. For example, there are several implementations of the \fBls\fP program which use colors to denote different file types or permissions. -These "color ls" programs do not necessarily modify the background color, -typically using only the \fIsetaf\fP terminfo capability to set the +These \*(``color ls\*('' programs do not necessarily modify the background color, +typically using only the \fBsetaf\fP terminfo capability to set the foreground color. Full-screen applications that use default colors can achieve similar visual effects. .PP -The first function, -.I use_default_colors() +The first function, \fBuse_default_colors\fP tells the curses library to assign terminal default -foreground/background colors to color number \-1. So init_pair(x,COLOR_RED,\-1) -will initialize pair x as red on default background and init_pair(x,\-1,COLOR_BLUE) will +foreground/background colors to color number \-1. +So init_pair(x,COLOR_RED,\-1) +will initialize pair x as red on default background +and init_pair(x,\-1,COLOR_BLUE) will initialize pair x as default foreground on blue. .PP -The other, -.I assume_default_colors() +The other, \fBassume_default_colors\fP is a refinement which tells which colors to paint for color pair 0. This function recognizes a special color number \-1, which denotes the default terminal color. @@ -85,34 +87,36 @@ The following are equivalent: These are ncurses extensions. For other curses implementations, color number \-1 does not mean anything, just as for ncurses before a -successful call of \fIuse_default_colors()\fP or \fIassume_default_colors()\fP. +successful call of \fBuse_default_colors\fP or \fBassume_default_colors\fP. .PP Other curses implementations do not allow an application to modify color pair 0. They assume that the background is COLOR_BLACK, but do not ensure that the color pair 0 is painted to match the assumption. If your application does not use either -.I use_default_colors() +.B use_default_colors or -.I assume_default_colors() +.B assume_default_colors ncurses will paint a white foreground (text) with black background for color pair 0. .SH RETURN VALUE -These functions return the integer \fBERR\fP upon failure and \fBOK\fP on success. +These functions return the integer \fBERR\fP upon failure +and \fBOK\fP on success. They will fail if either the terminal does not support -the \fIorig_pair\fP or \fIorig_colors\fP capability. -If the \fIinitialize_pair\fP capability is not found, this causes an +the \fBorig_pair\fP or \fBorig_colors\fP capability. +If the \fBinitialize_pair\fP capability is not found, this causes an error as well. .SH NOTES Associated with this extension, the \fBinit_pair\fR function accepts negative arguments to specify default foreground or background colors. .PP -The \fIuse_default_colors()\fP function was added to support \fIded\fP. +The \fBuse_default_colors\fP function was added to support \fIded\fP. This is a full-screen application which uses curses to manage only part -of the screen. The bottom portion of the screen, which is of adjustable +of the screen. +The bottom portion of the screen, which is of adjustable size, is left uncolored to display the results from shell commands. The top portion of the screen colors filenames using a scheme like the -"color ls" programs. +\*(``color ls\*('' programs. Attempting to manage the background color of the screen for this application would give unsatisfactory results for a variety of reasons. This extension was devised after @@ -120,19 +124,21 @@ noting that color xterm (and similar programs) provides a background color which does not necessarily correspond to any of the ANSI colors. While a special terminfo entry could be constructed using nine colors, there was no mechanism provided within curses to account for the related -\fIorig_pair\fP and \fIback_color_erase\fP capabilities. +\fBorig_pair\fP and \fBback_color_erase\fP capabilities. .PP -The \fIassume_default_colors()\fP function was added to solve +The \fBassume_default_colors\fP function was added to solve a different problem: support for applications which would use environment variables and other configuration to bypass curses' notion of the terminal's default colors, setting specific values. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH SEE ALSO -\fBcurs_color\fR(3X), -\fBded\fP(1). +\fBded\fP(1), +\fBcurs_color\fR(3X). .SH AUTHOR Thomas Dickey (from an analysis of the requirements for color xterm for XFree86 3.1.2C, February 1996). diff --git a/deps/ncurses-5.9/man/define_key.3x b/deps/ncurses-6.3/man/define_key.3x similarity index 83% rename from deps/ncurses-5.9/man/define_key.3x rename to deps/ncurses-6.3/man/define_key.3x index 18eaff8..d0dbe7f 100644 --- a/deps/ncurses-5.9/man/define_key.3x +++ b/deps/ncurses-6.3/man/define_key.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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 * @@ -28,14 +29,14 @@ .\" .\" Author: Thomas E. Dickey 1997 .\" -.\" $Id: define_key.3x,v 1.14 2010/12/04 18:49:20 tom Exp $ +.\" $Id: define_key.3x,v 1.18 2020/10/24 09:52:54 tom Exp $ .TH define_key 3X "" .SH NAME \fBdefine_key\fP \- define a keycode .SH SYNOPSIS \fB#include <curses.h>\fP .sp -\fBint define_key(const char *definition, int keycode);\fP +\fBint define_key(const char *\fP\fIdefinition\fP\fB, int \fP\fIkeycode\fP\fB);\fP .SH DESCRIPTION This is an extension to the curses library. It permits an application to define keycodes with their corresponding control @@ -48,13 +49,15 @@ Similarly, if the given keycode is negative or zero, any existing string for the given definition is removed. .SH RETURN VALUE The keycode must be greater than zero, and the string non-null, -otherwise ERR is returned. -ERR may also be returned if there is insufficient memory to allocate the +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, OK is returned. +If no error is detected, \fBOK\fP is returned. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH SEE ALSO \fBkeyok\fR(3X), diff --git a/deps/ncurses-5.9/man/form.3x b/deps/ncurses-6.3/man/form.3x similarity index 81% rename from deps/ncurses-5.9/man/form.3x rename to deps/ncurses-6.3/man/form.3x index 775c833..685ad71 100644 --- a/deps/ncurses-5.9/man/form.3x +++ b/deps/ncurses-6.3/man/form.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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 * @@ -27,8 +28,16 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form.3x,v 1.24 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form.3x,v 1.36 2020/12/12 16:34:33 tom Exp $ .TH form 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fBform\fR \- curses extension for programming forms .SH SYNOPSIS @@ -36,7 +45,8 @@ .br .SH DESCRIPTION The \fBform\fR library provides terminal-independent facilities for composing -form screens on character-cell terminals. The library includes: field +form screens on character-cell terminals. +The library includes: field routines, which create and modify form fields; and form routines, which group fields into forms, display forms on the screen, and handle interaction with the user. @@ -56,10 +66,12 @@ before using any of these functions. . .SS Current Default Values for Field Attributes . -The \fBform\fR library maintains a default value for field attributes. You +The \fBform\fR library maintains a default value for field attributes. +You can get or set this default by calling the appropriate \fBset_\fR or retrieval -routine with a \fBNULL\fR field pointer. Changing this default with a +routine with a \fBNULL\fR field pointer. +Changing this default with a \fBset_\fR function affects future field creations, but does not change the rendering of fields already created. . @@ -67,6 +79,8 @@ rendering of fields already created. . The following table lists each \fBform\fR routine and the name of the manual page on which it is described. +Routines flagged with \*(``*\*('' +are ncurses-specific, not present in SVr4. . .TS l l @@ -96,14 +110,15 @@ field_term \fBform_hook\fR(3X) field_type \fBform_field_validation\fR(3X) field_userptr \fBform_field_userptr\fR(3X) form_driver \fBform_driver\fR(3X) +form_driver_w \fBform_driver\fR(3X)* form_fields \fBform_field\fR(3X) form_init \fBform_hook\fR(3X) form_opts \fBform_opts\fR(3X) form_opts_off \fBform_opts\fR(3X) form_opts_on \fBform_opts\fR(3X) form_page \fBform_page\fR(3X) -form_request_by_name \fBform_requestname\fR(3X) -form_request_name \fBform_requestname\fR(3X) +form_request_by_name \fBform_requestname\fR(3X)* +form_request_name \fBform_requestname\fR(3X)* form_sub \fBform_win\fR(3X) form_term \fBform_hook\fR(3X) form_userptr \fBform_userptr\fR(3X) @@ -145,11 +160,12 @@ set_form_userptr \fBform_userptr\fR(3X) set_form_win \fBform_win\fR(3X) set_max_field \fBform_field_buffer\fR(3X) set_new_page \fBform_new_page\fR(3X) +unfocus_current_field \fBform_page\fR(3X)* unpost_form \fBform_post\fR(3X) .TE .SH RETURN VALUE Routines that return pointers return \fBNULL\fR on error, -and set errno to the corresponding error-code returned by functions +and set \fBerrno\fP to the corresponding error-code returned by functions returning an integer. Routines that return an integer return one of the following error codes: @@ -185,26 +201,44 @@ The form is already posted. The form driver could not process the request. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_UNKNOWN_COMMAND The form driver code saw an unknown request code. -.SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed -descriptions of the entry points. .SH NOTES The header file \fB<form.h>\fR automatically includes the header files \fB<curses.h>\fR and \fB<eti.h>\fR. .PP In your library list, libform.a should be before libncurses.a; that is, -you want to say `\-lform \-lncurses', not the other way around (which would -give you a link error using most linkers). +you want to say \*(``\-lform \-lncurses\*('', not the other way around +(which would give you a link error when using static libraries). .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. +.PP +The menu facility was documented in SVr4.2 in +\fICharacter User Interface Programming (UNIX SVR4.2)\fP. +.PP +It is not part of X/Open Curses. +.PP +Aside from ncurses, there are few implementations: +.bP +systems based on SVr4 source code, e.g., Solaris. +.bP +NetBSD curses. +.PP +A few functions in this implementation are extensions added for ncurses, +but not provided by other implementations, e.g., +\fBform_driver_w\fP, +\fBunfocus_current_field\fP. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric +Juergen Pfeifer. +Manual pages and adaptation for ncurses by Eric S. Raymond. .SH SEE ALSO +\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed +descriptions of the entry points. +.PP This describes \fBncurses\fR version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-5.9/man/form_cursor.3x b/deps/ncurses-6.3/man/form_cursor.3x similarity index 82% rename from deps/ncurses-5.9/man/form_cursor.3x rename to deps/ncurses-6.3/man/form_cursor.3x index ed4b420..cb9d1cd 100644 --- a/deps/ncurses-5.9/man/form_cursor.3x +++ b/deps/ncurses-6.3/man/form_cursor.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,18 +28,19 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_cursor.3x,v 1.14 2020/10/18 00:15:29 tom Exp $ .TH form_cursor 3X "" .SH NAME -\fBform_cursor\fR \- position a form window cursor +\fBpos_form_cursor\fR \- position a form window cursor .SH SYNOPSIS \fB#include <form.h>\fR -.br -int pos_form_cursor(FORM *form); +.sp +\fBint pos_form_cursor(FORM *\fP\fIform\fP\fB);\fP .br .SH DESCRIPTION The function \fBpos_form_cursor\fR restores the cursor to the position required -for the forms driver to continue processing requests. This is useful after +for the forms driver to continue processing requests. +This is useful after \fBcurses\fR routines have been called to do screen-painting in response to a form operation. .SH RETURN VALUE @@ -54,7 +56,7 @@ Routine detected an incorrect or out-of-range argument. The form has not been posted. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). . .SH SEE ALSO \fBcurses\fR(3X), \fBform\fR(3X). @@ -62,8 +64,9 @@ System error occurred (see \fBerrno\fR). The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_data.3x b/deps/ncurses-6.3/man/form_data.3x similarity index 78% rename from deps/ncurses-5.9/man/form_data.3x rename to deps/ncurses-6.3/man/form_data.3x index ed39bf5..8a56692 100644 --- a/deps/ncurses-5.9/man/form_data.3x +++ b/deps/ncurses-6.3/man/form_data.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,31 +28,35 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_data.3x,v 1.10 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_data.3x,v 1.15 2020/10/18 00:15:00 tom Exp $ .TH form_data 3X "" .SH NAME -\fBform_data\fR \- test for off-screen data in given forms +\fBdata_ahead\fP, +\fBdata_behind\fR \- test for off-screen data in given forms .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBbool data_ahead(const FORM *\fP\fIform\fP\fB);\fP .br -bool data_ahead(const FORM *form); -.br -bool data_behind(const FORM *form); +\fBbool data_behind(const FORM *\fP\fIform\fP\fB);\fP .br .SH DESCRIPTION The function \fBdata_ahead\fR tests whether there is off-screen data -ahead in the given form. It returns TRUE (1) or FALSE (0). +ahead in the given form. +It returns TRUE (1) or FALSE (0). .PP The function \fBdata_behind\fR tests whether there is off-screen data -behind in the given form. It returns TRUE (1) or FALSE (0). +behind in the given form. +It returns TRUE (1) or FALSE (0). .SH SEE ALSO \fBcurses\fR(3X), \fBform\fR(3X). .SH NOTES The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_driver.3x b/deps/ncurses-6.3/man/form_driver.3x new file mode 100644 index 0000000..9c096f9 --- /dev/null +++ b/deps/ncurses-6.3/man/form_driver.3x @@ -0,0 +1,271 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: form_driver.3x,v 1.35 2020/12/19 21:34:15 tom Exp $ +.TH form_driver 3X "" +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBform_driver\fR, +\fBform_driver_w\fR \- command-processing loop of the form system +.SH SYNOPSIS +\fB#include <form.h>\fR +.sp +\fBint form_driver(FORM *\fP\fIform\fP\fB, int \fP\fIc\fP\fB);\fP +.br +\fBint form_driver_w(FORM *\fP\fIform\fP\fB, int \fP\fIc\fP\fB, wchar_t \fP\fIwch\fP\fB);\fP +.br +.SH DESCRIPTION +.SS form_driver +Once a form has been posted (displayed), you should funnel input events to it +through \fBform_driver\fR. 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, +which are distinct from the key- and character codes returned +by \fBwgetch\fP(3X). +.bP +The input is a printable character. +Printable characters (which must be positive, less than 256) are +checked according to the program's locale settings. +.bP +The input is the KEY_MOUSE special key associated with an mouse event. +.SS form_driver_w +.PP +This extension simplifies the use of the forms library using wide characters. +The input is either a key code (a request) or a wide character +returned by \fBget_wch\fP(3X). +The type must be passed as well, +to enable the library to determine whether the parameter +is a wide character or a request. +.SS Form-driver requests +.PP +The form driver requests are as follows: +.TS +l l +_ _ +l l. +\fIName\fR \fIDescription\fR +REQ_BEG_FIELD Move to the beginning of the field. +REQ_BEG_LINE Move to the beginning of the line. +REQ_CLR_EOF Clear to end of field from cursor. +REQ_CLR_EOL Clear to end of line from cursor. +REQ_CLR_FIELD Clear the entire field. +REQ_DEL_CHAR Delete character at the cursor. +REQ_DEL_LINE Delete line at the cursor. +REQ_DEL_PREV Delete character before the cursor. +REQ_DEL_WORD Delete blank-delimited word at the cursor. +REQ_DOWN_CHAR Move down in the field. +REQ_DOWN_FIELD Move down to a field. +REQ_END_FIELD Move to the end of the field. +REQ_END_LINE Move to the end of the line. +REQ_FIRST_FIELD Move to the first field. +REQ_FIRST_PAGE Move to the first page. +REQ_INS_CHAR Insert a blank at the cursor. +REQ_INS_LINE Insert a blank line at the cursor. +REQ_INS_MODE Enter insert mode. +REQ_LAST_FIELD Move to the last field. +REQ_LAST_PAGE Move to the last field. +REQ_LEFT_CHAR Move left in the field. +REQ_LEFT_FIELD Move left to a field. +REQ_NEW_LINE Insert or overlay a new line. +REQ_NEXT_CHAR Move to the next char. +REQ_NEXT_CHOICE Display next field choice. +REQ_NEXT_FIELD Move to the next field. +REQ_NEXT_LINE Move to the next line. +REQ_NEXT_PAGE Move to the next page. +REQ_NEXT_PAGE Move to the next page. +REQ_NEXT_WORD Move to the next word. +REQ_OVL_MODE Enter overlay mode. +REQ_PREV_CHAR Move to the previous char. +REQ_PREV_CHOICE Display previous field choice. +REQ_PREV_FIELD Move to the previous field. +REQ_PREV_LINE Move to the previous line. +REQ_PREV_PAGE Move to the previous page. +REQ_PREV_WORD Move to the previous word. +REQ_RIGHT_CHAR Move right in the field. +REQ_RIGHT_FIELD Move right to a field. +REQ_SCR_BCHAR Scroll the field backward a character. +REQ_SCR_BHPAGE Scroll the field backward half a page. +REQ_SCR_BLINE Scroll the field backward a line. +REQ_SCR_BPAGE Scroll the field backward a page. +REQ_SCR_FCHAR Scroll the field forward a character. +REQ_SCR_FHPAGE Scroll the field forward half a page. +REQ_SCR_FLINE Scroll the field forward a line. +REQ_SCR_FPAGE Scroll the field forward a page. +REQ_SCR_HBHALF Horizontal scroll the field backward half a line. +REQ_SCR_HBLINE Horizontal scroll the field backward a line. +REQ_SCR_HFHALF Horizontal scroll the field forward half a line. +REQ_SCR_HFLINE Horizontal scroll the field forward a line. +REQ_SFIRST_FIELD Move to the sorted first field. +REQ_SLAST_FIELD Move to the sorted last field. +REQ_SNEXT_FIELD Move to the sorted next field. +REQ_SPREV_FIELD Move to the sorted previous field. +REQ_UP_CHAR Move up in the field. +REQ_UP_FIELD Move up to a field. +REQ_VALIDATION Validate field. +.TE +.PP +If the second argument is a printable character, the driver places it +in the current position in the current field. +If it is one of the forms +requests listed above, that request is executed. +.SS Field validation +The form library makes updates to the window associated +with form fields rather than directly to the field buffers. +.PP +The form driver provides low-level control over updates to the form fields. +The form driver also provides for validating modified fields +to ensure that the contents +meet whatever constraints an application may attach using \fBset_field_type\fP. +.PP +.PP +You can validate a field without making any changes to it using +\fBREQ_VALIDATION\fP. +The form driver also validates a field in these cases: +.bP +a call to \fBset_current_field\fP attempts to move to a different field. +.bP +a call to \fBset_current_page\fP attempts to move +to a different page of the form. +.bP +a request attempts to move to a different field. +.bP +a request attempts to move to a different page of the form. +.PP +In each case, the move fails if the field is invalid. +.PP +If the modified field is valid, the form driver copies the modified +data from the window associated with the field +to the field buffer. +.SS Mouse handling +.PP +If the second argument is the KEY_MOUSE special key, the associated +mouse event is translated into one of the above pre-defined requests. +Currently only clicks in the user window (e.g., inside the form display +area or the decoration window) are handled. +.PP +If you click above the display region of the form: +.RS 3 +.TP +a REQ_PREV_FIELD is generated for a single click, +.TP +a REQ_PREV_PAGE is generated for a double-click and +.TP +a REQ_FIRST_FIELD is generated for a triple-click. +.RE +.PP +If you click below the display region of the form: +.RS 3 +.TP +a REQ_NEXT_FIELD is generated for a single click, +.TP +a REQ_NEXT_PAGE is generated for a double-click and +.TP +a REQ_LAST_FIELD is generated for a triple-click. +.RE +.PP +If you click at an field inside the display area of the form: +.RS 3 +.bP +the form cursor is positioned to that field. +.bP +If you double-click a field, +the form cursor is positioned to that field +and \fBE_UNKNOWN_COMMAND\fR is returned. +This return value makes sense, +because a double click usually means that an field-specific action should +be returned. +It is exactly the purpose of this return value to signal that an +application specific command should be executed. +.bP +If a translation +into a request was done, \fBform_driver\fR returns the result of this request. +.RE +.PP +If you clicked outside the user window +or the mouse event could not be translated +into a form request an \fBE_REQUEST_DENIED\fR is returned. +.SS Application-defined commands +.PP +If the second argument is neither printable nor one of the above +pre-defined form requests, the driver assumes it is an application-specific +command and returns \fBE_UNKNOWN_COMMAND\fR. Application-defined commands +should be defined relative to \fBMAX_COMMAND\fR, the maximum value of these +pre-defined requests. +.SH RETURN VALUE +\fBform_driver\fR returns one of the following error codes: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_BAD_STATE +Routine was called from an initialization or termination function. +.TP 5 +.B E_NOT_POSTED +The form has not been posted. +.TP 5 +.B E_INVALID_FIELD +Contents of field is invalid. +.TP 5 +.B E_NOT_CONNECTED +No fields are connected to the form. +.TP 5 +.B E_REQUEST_DENIED +The form driver could not process the request. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.TP 5 +.B E_UNKNOWN_COMMAND +The form driver code saw an unknown request code. +. +.SH SEE ALSO +\fBcurses\fR(3X), +\fBform\fR(3X), +\fBform_fieldtype\fR(3X), +\fBform_field_buffer\fR(3X), +\fBform_field_validation\fR(3X), +\fBform_variables\fR(3X), +\fBgetch\fR(3X). +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header files +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field.3x b/deps/ncurses-6.3/man/form_field.3x similarity index 82% rename from deps/ncurses-5.9/man/form_field.3x rename to deps/ncurses-6.3/man/form_field.3x index 7a39a0c..01ff576 100644 --- a/deps/ncurses-5.9/man/form_field.3x +++ b/deps/ncurses-6.3/man/form_field.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2012 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 * @@ -27,20 +28,20 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field.3x,v 1.10 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_field.3x,v 1.17 2020/10/24 09:10:45 tom Exp $ .TH form_field 3X "" .SH NAME \fBform_field\fR \- make and break connections between fields and forms .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint set_form_fields(FORM *\fP\fIform\fP\fB, FIELD **\fP\fIfields\fP\fB);\fP .br -int set_form_fields(FORM *form, FIELD **fields); +\fBFIELD **form_fields(const FORM *\fP\fIform\fP\fB);\fP .br -FIELD **form_fields(const FORM *form); +\fBint field_count(const FORM *\fP\fIform\fP\fB);\fP .br -int field_count(const FORM *form); -.br -int move_field(FIELD *field, int frow, int fcol); +\fBint move_field(FIELD *\fP\fIfield\fP\fB, int \fP\fIfrow\fP\fB, int \fP\fIfcol\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_form_fields\fR changes the field pointer array of @@ -52,9 +53,9 @@ The function \fBfield_count\fR returns the count of fields in \fIform\fR. .PP The function \fBmove_field\fR moves the given field (which must be disconnected) to a specified location on the screen. -.SH RETURN VALUES +.SH RETURN VALUE The function \fBform_fields\fR returns a pointer (which may be \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP The function \fBfield_count\fR returns \fBERR\fR if the \fIform\fP parameter is \fBNULL\fP. @@ -75,18 +76,19 @@ The field is already connected to a form. The form is already posted. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .SH SEE ALSO \fBcurses\fR(3X), \fBform\fR(3X). .SH NOTES The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .PP The SVr4 forms library documentation specifies the \fBfield_count\fR error value as \-1 (which is the value of \fBERR\fR). .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_field_attributes.3x b/deps/ncurses-6.3/man/form_field_attributes.3x new file mode 100644 index 0000000..88778b1 --- /dev/null +++ b/deps/ncurses-6.3/man/form_field_attributes.3x @@ -0,0 +1,96 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2006,2010 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. * +.\"*************************************************************************** +.\" +.\" $Id: form_field_attributes.3x,v 1.18 2020/10/18 00:14:20 tom Exp $ +.TH form_field_attributes 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.SH NAME +\fBform_field_attributes\fR \- color and attribute control for form fields +.SH SYNOPSIS +\fB#include <form.h>\fR +.sp +\fBint set_field_fore(FIELD *\fP\fIfield\fP\fB, chtype \fP\fIattr\fP\fB);\fP +.br +\fBchtype field_fore(const FIELD *\fP\fIfield\fP\fB);\fP +.sp +\fBint set_field_back(FIELD *\fP\fIfield\fP\fB, chtype \fP\fIattr\fP\fB);\fP +.br +\fBchtype field_back(const FIELD *\fP\fIfield\fP\fB);\fP +.sp +\fBint set_field_pad(FIELD *\fP\fIfield\fP\fB, int \fP\fIpad\fP\fB);\fP +.br +\fBint field_pad(const FIELD *\fP\fIfield\fP\fB);\fP +.br +.SH DESCRIPTION +The function \fBset_field_fore\fR sets the foreground attribute of +\fIfield\fR. This is the highlight used to display the field contents. The +function \fBfield_fore\fR returns the foreground attribute. +The default is +\fBA_STANDOUT\fR. +.PP +The function \fBset_field_back\fR sets the background attribute of +\fIform\fR. This is the highlight used to display the extent fields in the +form. +The function \fBfield_back\fR returns the background attribute. +The +default is \fBA_NORMAL\fR. +.PP +The function \fBset_field_pad\fR sets the character used to fill the field. +The function \fBfield_pad\fR returns the given form's pad character. +The +default is a blank. +.SH RETURN VALUE +These routines return one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +. +.SH SEE ALSO +\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed +descriptions of the entry points. +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_buffer.3x b/deps/ncurses-6.3/man/form_field_buffer.3x similarity index 78% rename from deps/ncurses-5.9/man/form_field_buffer.3x rename to deps/ncurses-6.3/man/form_field_buffer.3x index b4ff8cb..98b2e42 100644 --- a/deps/ncurses-5.9/man/form_field_buffer.3x +++ b/deps/ncurses-6.3/man/form_field_buffer.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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 * @@ -27,25 +28,30 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_buffer.3x,v 1.19 2010/12/04 18:38:55 tom Exp $ +.\" $Id: form_field_buffer.3x,v 1.27 2020/10/24 09:27:17 tom Exp $ .TH form_field_buffer 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .de bP -.IP \(bu 4 +.ie n .IP \(bu 4 +.el .IP \(bu 2 .. .SH NAME \fBform_field_buffer\fR \- field buffer control .SH SYNOPSIS \fB#include <form.h>\fR .sp -int set_field_buffer(FIELD *field, int buf, const char *value); +\fBint set_field_buffer(FIELD *\fP\fIfield\fP\fB, int \fP\fIbuf\fP\fB, const char *\fP\fIvalue\fP\fB);\fP .br -char *field_buffer(const FIELD *field, int buffer); -.br -int set_field_status(FIELD *field, bool status); -.br -bool field_status(const FIELD *field); +\fBchar *field_buffer(const FIELD *\fP\fIfield\fP\fB, int \fP\fIbuffer\fP\fB);\fP +.sp +\fBint set_field_status(FIELD *\fP\fIfield\fP\fB, bool \fP\fIstatus\fP\fB);\fP .br -int set_max_field(FIELD *field, int max); +\fBbool field_status(const FIELD *\fP\fIfield\fP\fB);\fP +.sp +\fBint set_max_field(FIELD *\fP\fIfield\fP\fB, int \fP\fImax\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_field_buffer\fR sets the numbered buffer of the given field @@ -85,14 +91,15 @@ for long-term storage of form data. .RE .PP The function \fBset_field_status\fR sets the associated status flag of -\fIfield\fR; \fBfield_status\fR gets the current value. The status flag +\fIfield\fR; \fBfield_status\fR gets the current value. +The status flag is set to a nonzero value whenever the field changes. .PP The function \fBset_max_field\fR 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\fR function returns NULL on error. -It sets errno according to their success: +It sets \fBerrno\fP according to their success: .TP 5 .B E_OK The routine succeeded. @@ -108,12 +115,12 @@ The remaining routines return one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. .SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed +\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed descriptions of the entry points. .SH NOTES The header file \fB<form.h>\fR automatically includes the header file @@ -125,8 +132,13 @@ It will be freed on the next call to \fBfield_buffer\fP to return the same buffer. \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. +.PP +The \fBset_max_field\fP function checks for an ncurses extension +\fBO_INPUT_FIELD\fP which allows a dynamic field to shrink if the new +limit is smaller than the current field size. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_field_info.3x b/deps/ncurses-6.3/man/form_field_info.3x new file mode 100644 index 0000000..556c45b --- /dev/null +++ b/deps/ncurses-6.3/man/form_field_info.3x @@ -0,0 +1,92 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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. * +.\"*************************************************************************** +.\" +.\" $Id: form_field_info.3x,v 1.18 2020/10/17 23:35:05 tom Exp $ +.TH form_field_info 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.SH NAME +\fBdynamic_field_info\fP, +\fBfield_info\fR \- retrieve field characteristics +.SH SYNOPSIS +.nf +\fB#include <form.h>\fR +.sp +\fBint field_info(const FIELD *\fP\fIfield\fP\fB,\fP + \fBint *\fP\fIrows\fP\fB, int *\fP\fIcols\fP\fB,\fP + \fBint *\fP\fIfrow\fP\fB, int *\fP\fIfcol\fP\fB,\fP + \fBint *\fP\fInrow\fP\fB, int *\fP\fInbuf\fB);\fP +.sp +\fBint dynamic_field_info(const FIELD *\fP\fIfield\fP\fB,\fP + \fBint *\fP\fIrows\fP\fB, int *\fP\fIcols\fP\fB, int *\fImax\fB);\fP +.fi +.SH DESCRIPTION +The function \fBfield_info\fR returns the sizes and other attributes passed in +to the field at its creation time. +The attributes are: height, width, row of +upper-left corner, column of upper-left corner, number off-screen rows, and +number of working buffers. +.PP +The function \fBdynamic_field_info\fR returns the actual size of the field, and +its maximum possible size. +If the field has no size limit, the location +addressed by the third argument will be set to 0. +A field can be made dynamic +by turning off the \fBO_STATIC\fR option with \fBfield_opts_off\fR. +.SH RETURN VALUE +These routines return one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.SH SEE ALSO +\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed +descriptions of the entry points. +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.PP +A null (zero pointer) is accepted for any of the return values, +to ignore that value. +Not all implementations allow this, e.g., Solaris 2.7 does not. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_just.3x b/deps/ncurses-6.3/man/form_field_just.3x similarity index 78% rename from deps/ncurses-5.9/man/form_field_just.3x rename to deps/ncurses-6.3/man/form_field_just.3x index 2f223e9..d8fef76 100644 --- a/deps/ncurses-5.9/man/form_field_just.3x +++ b/deps/ncurses-6.3/man/form_field_just.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,21 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_just.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_field_just.3x,v 1.18 2020/10/18 00:12:55 tom Exp $ .TH form_field_just 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME -\fBform_field_just\fR \- retrieve field characteristics +\fBset_field_just\fR, +\fBfield_just\fP \- retrieve field characteristics .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint set_field_just(FIELD *\fP\fIfield\fP\fB, int \fP\fIjustification\fP\fB);\fP .br -int set_field_just(FIELD *field, int justification); -.br -int field_just(const FIELD *field); +\fBint field_just(const FIELD *\fP\fIfield\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_field_just\fR sets the justification attribute of @@ -54,19 +60,20 @@ The function \fBset_field_just\fR returns one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. .SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed +\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed descriptions of the entry points. .SH NOTES The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_new.3x b/deps/ncurses-6.3/man/form_field_new.3x similarity index 75% rename from deps/ncurses-5.9/man/form_field_new.3x rename to deps/ncurses-6.3/man/form_field_new.3x index 23a3516..1a240d0 100644 --- a/deps/ncurses-5.9/man/form_field_new.3x +++ b/deps/ncurses-6.3/man/form_field_new.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,42 +28,48 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_new.3x,v 1.18 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_field_new.3x,v 1.24 2020/10/24 09:09:18 tom Exp $ .TH form_field_new 3X "" .SH NAME -\fBform_field_new\fR \- create and destroy form fields +\fBnew_field\fR, +\fBdup_field\fR, +\fBlink_field\fR, +\fBfree_field\fR \- create and destroy form fields .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBFIELD *new_field(int \fP\fIheight\fP\fB, int \fP\fIwidth\fP\fB,\fP + \fBint \fP\fItoprow\fP\fB, int \fP\fIleftcol\fP\fB,\fP + \fBint \fP\fIoffscreen\fP\fB, int \fP\fInbuffers\fP\fB);\fP .br -FIELD *new_field(int height, int width, - int toprow, int leftcol, - int offscreen, int nbuffers); +\fBFIELD *dup_field(FIELD *\fP\fIfield\fP\fB, int \fP\fItoprow\fP\fB, int \fP\fIleftcol\fP\fB);\fP .br -FIELD *dup_field(FIELD *field, int toprow, int leftcol); +\fBFIELD *link_field(FIELD *\fP\fIfield\fP\fB, int \fP\fItoprow\fP\fB, int \fP\fIleftcol\fP\fB);\fP .br -FIELD *link_field(FIELD *field, int toprow, int leftcol); -.br -int free_field(FIELD *field); +\fBint free_field(FIELD *\fP\fIfield\fP\fB);\fP .br .SH DESCRIPTION The function \fBnew_field\fR allocates a new field and initializes it from the parameters given: height, width, row of upper-left corner, column of upper-left corner, number off-screen rows, and number of additional working buffers. .PP -The function \fBdup_field\fR duplicates a field at a new location. Most +The function \fBdup_field\fR duplicates a field at a new location. +Most attributes (including current contents, size, validation type, buffer count, growth threshold, justification, foreground, background, pad character, -options, and user pointer) are copied. Field status and the field page bit are +options, and user pointer) are copied. +Field status and the field page bit are not copied. .PP The function \fBlink_field\fR acts like \fBdup_field\fR, but the new field -shares buffers with its parent. Attribute data is separate. +shares buffers with its parent. +Attribute data is separate. .PP The function \fBfree_field\fR de-allocates storage associated with a field. .SH RETURN VALUE -The function, \fBnew_field\fR, \fBdup_field\fR, \fBlink_field\fR return +The functions \fBnew_field\fR, \fBdup_field\fR, \fBlink_field\fR return \fBNULL\fR on error. -They set errno according to their success: +They set \fBerrno\fP according to their success: .TP 5 .B E_OK The routine succeeded. @@ -89,12 +96,13 @@ field is connected. The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .PP It may be unwise to count on the set of attributes copied by \fBdup_field\fR being portable; the System V forms library documents are not very explicit about what gets copied and what does not. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_field_opts.3x b/deps/ncurses-6.3/man/form_field_opts.3x new file mode 100644 index 0000000..96338e2 --- /dev/null +++ b/deps/ncurses-6.3/man/form_field_opts.3x @@ -0,0 +1,150 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2014,2015 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. * +.\"*************************************************************************** +.\" +.\" $Id: form_field_opts.3x,v 1.27 2020/10/18 00:11:45 tom Exp $ +.TH form_field_opts 3X "" +.SH NAME +\fBset_field_opts\fP, +\fBfield_opts_on\fP, +\fBfield_opts_off\fP, +\fBfield_opts\fP \- set and get field options +.SH SYNOPSIS +\fB#include <form.h>\fR +.sp +\fBint set_field_opts(FIELD *\fP\fIfield\fP\fB, Field_Options \fP\fIopts\fP\fB);\fP +.br +\fBField_Options field_opts(const FIELD *\fP\fIfield\fP\fB);\fP +.sp +\fBint field_opts_on(FIELD *\fP\fIfield\fP\fB, Field_Options \fP\fIopts\fP\fB);\fP +.br +\fBint field_opts_off(FIELD *\fP\fIfield\fP\fB, Field_Options \fP\fIopts\fP\fB);\fP +.br +.SH DESCRIPTION +The function \fBset_field_opts\fR sets all the given field's option bits (field +option bits may be logically-OR'ed together). +.PP +The function \fBfield_opts_on\fR turns on the given option bits, and leaves +others alone. +.PP +The function \fBfield_opts_off\fR turns off the given option bits, and leaves +others alone. +.PP +The function \fBfield_opts\fR returns the field's current option bits. +.PP +The following standard options are defined (all are on by default): +.TP 5 +O_ACTIVE +The field is visited during processing. +If this option is off, the field will +not be reachable by navigation keys. +Please notice that an invisible field +appears to be inactive also. +.TP 5 +O_AUTOSKIP +Skip to the next field when this one fills. +.TP 5 +O_BLANK +The field is cleared whenever a character is entered at the first position. +.TP 5 +O_EDIT +The field can be edited. +.TP 5 +O_NULLOK +Allow a blank field. +.TP 5 +O_PASSOK +Validate field only if modified by user. +.TP 5 +O_PUBLIC +The field contents are displayed as data is entered. +.TP 5 +O_STATIC +Field buffers are fixed to field's original size. +Turn this option off to create a dynamic field. +.TP 5 +O_VISIBLE +The field is displayed. +If this option is off, display of the field is +suppressed. +.TP 5 +O_WRAP +Words that do not fit on a line are wrapped to the next line. +Words are +blank-separated. +.PP +These extension options are defined (extensions are off by default): +.TP 5 +O_DYNAMIC_JUSTIFY +Permit dynamic fields to be justified, like static fields. +.TP 5 +O_NO_LEFT_STRIP +Preserve leading whitespace in the field buffer, which is normally discarded. +.TP 5 +O_EDGE_INSERT_STAY +When inserting into a field up to the boundary position, +optionally delay the scrolling, +so that the last inserted character remains visible, +but advance the cursor to reflect the insertion. +This allows the form library to display the +inserted character in one-character fields +as well as allowing the library to maintain consistent state. +.TP 5 +O_INPUT_FIELD +The \fBset_max_field\fP function checks for this extension, +which allows a dynamic field to shrink if the new +limit is smaller than the current field size. +.SH RETURN VALUE +Except for \fBfield_opts\fR, each routine returns one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_CURRENT +The field is the current field. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.SH SEE ALSO +\fBcurses\fR(3X), +\fBform\fR(3X). +\fBform_field_just\fR(3X). +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_field_userptr.3x b/deps/ncurses-6.3/man/form_field_userptr.3x similarity index 79% rename from deps/ncurses-5.9/man/form_field_userptr.3x rename to deps/ncurses-6.3/man/form_field_userptr.3x index 898da97..5d3ab14 100644 --- a/deps/ncurses-5.9/man/form_field_userptr.3x +++ b/deps/ncurses-6.3/man/form_field_userptr.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,24 +28,25 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_field_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_field_userptr.3x,v 1.16 2020/10/24 09:06:33 tom Exp $ .TH form_field_userptr 3X "" .SH NAME -\fBform_field_userptr\fR \- associate application data with a form field +\fBset_field_userptr\fR, +\fBfield_userptr\fR \- associate application data with a form field .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint set_field_userptr(FIELD *\fP\fIfield\fP\fB, void *\fP\fIuserptr\fP\fB);\fP .br -int set_field_userptr(FIELD *field, void*userptr); -.br -void *field_userptr(const FIELD *field); -.br +\fBvoid *field_userptr(const FIELD *\fP\fIfield\fP\fB);\fP .SH DESCRIPTION Every form field 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 +(that is, the form-driver code leaves it alone). +These functions get and set that field. .SH RETURN VALUE The function \fBfield_userptr\fR returns a pointer (which may be \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP The function \fBset_field_userptr\fR returns \fBE_OK\fP (success). .SH SEE ALSO @@ -53,11 +55,12 @@ The function \fBset_field_userptr\fR returns \fBE_OK\fP (success). The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .PP The user pointer is a void pointer. We chose not to leave it as a char pointer for SVr4 compatibility. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_field_validation.3x b/deps/ncurses-6.3/man/form_field_validation.3x new file mode 100644 index 0000000..8ce9132 --- /dev/null +++ b/deps/ncurses-6.3/man/form_field_validation.3x @@ -0,0 +1,234 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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. * +.\"*************************************************************************** +.\" +.\" $Id: form_field_validation.3x,v 1.33 2020/12/12 19:57:55 tom Exp $ +.TH form_field_validation 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBform_field_validation\fR \- data type validation for fields +.SH SYNOPSIS +\fB#include <form.h>\fR +.sp +\fBvoid *field_arg(const FIELD *\fP\fIfield\fP\fB);\fP +.br +\fBFIELDTYPE *field_type(const FIELD *\fP\fIfield\fP\fB);\fP +.br +\fBint set_field_type(FIELD *\fP\fIfield\fP\fB, FIELDTYPE *\fP\fItype\fP\fB, ...);\fP +.sp +/* predefined field types */ +.br +\fBFIELDTYPE *TYPE_ALNUM;\fP +.br +\fBFIELDTYPE *TYPE_ALPHA;\fP +.br +\fBFIELDTYPE *TYPE_ENUM;\fP +.br +\fBFIELDTYPE *TYPE_INTEGER;\fP +.br +\fBFIELDTYPE *TYPE_NUMERIC;\fP +.br +\fBFIELDTYPE *TYPE_REGEXP;\fP +.br +\fBFIELDTYPE *TYPE_IPV4;\fP +.br +.SH DESCRIPTION +By default, no validation is done on form fields. +You can associate a form with with a \fIfield type\fP, +making the form library validate input. +.SS field_arg +Returns a pointer to the field's argument block. +The \fIargument block\fP is an opaque structure containing +a copy of the arguments provided in a \fBset_field_type\fP call. +.SS field_type +Returns a pointer to the \fIfield type\fP associated with the form field, +i.e., by calling \fBset_field_type\fP. +.SS set_field_type +The function \fBset_field_type\fR associates +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. +.SS Predefined types +.PP +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. +.PP +See the \fBform_fieldtype\fR(3X) manual page, +which describes functions which can be used to construct +a field-type dynamically. +.PP +The predefined types are as follows: +.TP 5 +TYPE_ALNUM +Alphanumeric data. +Required parameter: +.RS +.bP +a third \fBint\fR argument, a minimum field width. +.RE +.TP 5 +TYPE_ALPHA +Character data. +Required parameter: +.RS +.bP +a third \fBint\fR argument, a minimum field width. +.RE +.TP 5 +TYPE_ENUM +Accept one of a specified set of strings. +Required parameters: +.RS +.bP +a third \fB(char **)\fR argument pointing to a string list; +.bP +a fourth \fBint\fR flag argument to enable case-sensitivity; +.bP +a fifth \fBint\fR flag argument specifying whether a partial +match must be a unique one. +If this flag is off, a prefix matches the first +of any set of more than one list elements with that prefix. +.RE +.IP +The library copies the string list, +so you may use a list that lives in automatic variables on the stack. +.TP 5 +TYPE_INTEGER +Integer data, parsable to an integer by \fBatoi\fP(3). +Required parameters: +.RS +.bP +a third \fBint\fR argument controlling the precision, +.bP +a fourth \fBlong\fR argument constraining minimum value, +.bP +a fifth \fBlong\fR constraining maximum value. +If the maximum value is less than or equal to the minimum value, the range is +simply ignored. +.RE +.IP +On return, the field buffer is formatted according to the +\fBprintf\fR format specification \*(``.*ld\*('', +where the \*(``*\*('' is replaced by the precision argument. +.IP +For details of the precision handling see \fBprintf\fR(3). +.TP 5 +TYPE_NUMERIC +Numeric data (may have a decimal-point part). +Required parameters: +.RS +.bP +a third \fBint\fR argument controlling the precision, +.bP +a fourth \fBdouble\fR argument constraining minimum value, +.bP +and a fifth \fBdouble\fR constraining maximum value. +If your system supports locales, +the decimal point character must be the one specified by your locale. +If the maximum value is less than or equal to the minimum value, +the range is simply ignored. +.RE +.IP +On return, the field buffer is formatted according to the +\fBprintf\fR format specification \*(``.*f\*('', +where the \*(``*\*('' is replaced by the precision argument. +.IP +For details of the precision handling see \fBprintf\fR(3). +.TP 5 +TYPE_REGEXP +Regular expression data. +Required parameter: +.RS +.bP +a third argument, a regular expression \fB(char *)\fR string. +The data is valid if the regular expression matches it. +.RE +.IP +Regular expressions +are in the format of \fBregcomp\fR and \fBregexec\fR. +.IP +The regular expression must match the whole field. +If you have for example, an eight character wide field, +a regular expression "^[0\-9]*$" always +means that you have to fill all eight positions with digits. +If you want to allow fewer digits, +you may use for example "^[0\-9]* *$" which is good for +trailing spaces (up to an empty field), +or "^ *[0\-9]* *$" which is good for +leading and trailing spaces around the digits. +.TP 5 +TYPE_IPV4 +An Internet Protocol Version 4 address. +Required parameter: +.RS +.bP +none +.RE +.IP +The form library checks whether or not the buffer has the form \fIa.b.c.d\fP, +where \fIa\fP, \fIb\fP, \fIc\fP, and \fId\fP are numbers in the range 0 to 255. +Trailing blanks in the buffer are ignored. +The address itself is not validated. +.IP +This is an ncurses extension; +this field type may not be available in other curses implementations. +.SH RETURN VALUE +The functions \fBfield_type\fR and \fBfield_arg\fR return \fBNULL\fR on error. +The function \fBset_field_type\fR returns one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.SH SEE ALSO +\fBcurses\fR(3X), +\fBform\fR(3X), +\fBform_fieldtype\fR(3X), +\fBform_variables\fR(3X). +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_fieldtype.3x b/deps/ncurses-6.3/man/form_fieldtype.3x new file mode 100644 index 0000000..767c3fc --- /dev/null +++ b/deps/ncurses-6.3/man/form_fieldtype.3x @@ -0,0 +1,170 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2006,2010 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. * +.\"*************************************************************************** +.\" +.\" $Id: form_fieldtype.3x,v 1.28 2020/12/12 17:11:21 tom Exp $ +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.TH form_fieldtype 3X "" +.SH NAME +\fBform_fieldtype\fR \- define validation-field types +.SH SYNOPSIS +\fB#include <form.h>\fR +.sp +\fBFIELDTYPE *new_fieldtype(\fP + \fBbool (* const \fP\fIfield_check\fP\fB)(FIELD *, const void *),\fP + \fBbool (* const \fP\fIchar_check\fP\fB)(int, const void *));\fP +.br +\fBint free_fieldtype(FIELDTYPE *\fP\fIfieldtype\fP\fB);\fP +.sp +\fBint set_fieldtype_arg(\fP + \fBFIELDTYPE *\fP\fIfieldtype\fP\fB,\fP + \fBvoid *(* const \fP\fImake_arg\fP\fB)(va_list *),\fP + \fBvoid *(* const \fP\fIcopy_arg\fP\fB)(const void *),\fP + \fBvoid (* const \fP\fIfree_arg\fP\fB)(void *));\fP +.br +\fBint set_fieldtype_choice(\fP + \fBFIELDTYPE *\fP\fIfieldtype\fP\fB,\fP + \fBbool (* const \fP\fInext_choice\fP\fB)(FIELD *, const void *),\fP + \fBbool (* const \fP\fIprev_choice\fP\fB)(FIELD *, const void *));\fP +.sp +\fBFIELDTYPE *link_fieldtype(FIELDTYPE *\fP\fItype1\fP\fB,\fP + \fBFIELDTYPE *\fP\fItype2\fP\fB);\fP +.SH DESCRIPTION +.SS new_fieldtype +The function \fBnew_fieldtype\fR creates a new field type usable for data +validation. +Its parameters are function pointers: +.TP 5 +\fIfield_check\fR +This function checks the +validity of an entered data string whenever the user attempts to leave a field. +It has two arguments: +.RS +.bP +The (FIELD *) argument is passed in so the validation predicate can see the +field's buffer, sizes and other attributes. +.bP +The second argument is an +argument-block structure, about which more below. +.RE +.TP 5 +\fIchar_check\fR +This function validates input characters as they are entered. +The form library passes it the character to be checked +and a pointer to an argument-block structure. +.SS free_fieldtype +.PP +The \fBfree_fieldtype\fR function +frees the space allocated for a given validation type by \fBnew_fieldtype\fP. +.SS set_fieldtype_arg +.PP +The function \fBset_fieldtype_arg\fR associates +three storage-management functions with a field type: +.TP 5 +\fImake_arg\fR +This function is automatically applied to the +list of arguments you give \fBset_field_type\fR when attaching validation +to a field. +It stores the arguments in an allocated argument-block +object which is used when validating input. +.TP 5 +\fIcopy_arg\fR +This function may be used by applications to copy argument-blocks. +.TP 5 +\fIfree_arg\fR +Frees an argument-block structure. +.PP +You must supply the \fImake_arg\fR function. +The other two are optional: you may supply NULL for them. +In this case, the form library assumes +that \fImake_arg\fR does not allocate memory but simply loads the +argument into a single scalar value. +.SS set_fieldtype_choice +.PP +The form driver requests \fBREQ_NEXT_CHOICE\fR and \fBREQ_PREV_CHOICE\fR assume +that the possible values of a field form an ordered set, and provide the forms +user with a way to move through the set. +.PP +The \fBset_fieldtype_choice\fR +function allows forms programmers to define successor and predecessor functions +for the field type. +These functions take the field pointer and an +argument-block structure as arguments. +.SS link_fieldtype +.PP +The function \fBlink_fieldtype\fR creates +a new field type from the two given types. +They are connected by an logical 'OR'. +.SH RETURN VALUE +The pointer-valued routines return NULL on error. +They set \fBerrno\fP according to their success: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred, e.g., malloc failure. +.PP +The integer-valued routines return one of the following codes on +error: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_CONNECTED +The field is already connected to a form. +.TP 5 +.B E_CURRENT +The field is the current field. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.SH SEE ALSO +\fBcurses\fR(3X), +\fBform\fR(3X), +\fBform_field_validation\fR(3X). +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_hook.3x b/deps/ncurses-6.3/man/form_hook.3x new file mode 100644 index 0000000..e84aa97 --- /dev/null +++ b/deps/ncurses-6.3/man/form_hook.3x @@ -0,0 +1,101 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2007,2010 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. * +.\"*************************************************************************** +.\" +.\" $Id: form_hook.3x,v 1.16 2020/10/18 00:06:29 tom Exp $ +.TH form_hook 3X "" +.SH NAME +\fBform_hook\fR \- set hooks for automatic invocation by applications +.SH SYNOPSIS +\fB#include <form.h>\fR +.sp +\fBint set_field_init(FORM *\fP\fIform\fP\fB, Form_Hook \fP\fIfunc\fP\fB);\fP +.br +\fBForm_Hook field_init(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint set_field_term(FORM *\fP\fIform\fP\fB, Form_Hook \fP\fIfunc\fP\fB);\fP +.br +\fBForm_Hook field_term(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint set_form_init(FORM *\fP\fIform\fP\fB, Form_Hook \fP\fIfunc\fP\fB);\fP +.br +\fBForm_Hook form_init(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint set_form_term(FORM *\fP\fIform\fP\fB, Form_Hook \fP\fIfunc\fP\fB);\fP +.br +\fBForm_Hook form_term(const FORM *\fP\fIform\fP\fB);\fP +.br +.SH DESCRIPTION +These functions make it possible to set hook functions to be called at various +points in the automatic processing of input event codes by \fBform_driver\fR. +.PP +The function \fBset_field_init\fR sets a hook to be called at form-post time +and each time the selected field changes (after the change). +\fBfield_init\fR +returns the current field init hook, if any (\fBNULL\fR if there is no such +hook). +.PP +The function \fBset_field_term\fR sets a hook to be called at form-unpost time +and each time the selected field changes (before the change). +\fBfield_term\fR +returns the current field term hook, if any (\fBNULL\fR if there is no such +hook). +.PP +The function \fBset_form_init\fR sets a hook to be called at form-post time and +just after a page change once it is posted. +\fBform_init\fR returns the +current form init hook, if any (\fBNULL\fR if there is no such hook). +.PP +The function \fBset_form_term\fR sets a hook to be called at form-unpost time +and just before a page change once it is posted. +\fBform_init\fR +returns the current form term hook, if any (\fBNULL\fR if there is no such +hook). +.SH RETURN VALUE +Routines that return pointers return \fBNULL\fR on error. +Other routines +return one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.SH SEE ALSO +\fBcurses\fR(3X), \fBform\fR(3X). +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_new.3x b/deps/ncurses-6.3/man/form_new.3x similarity index 84% rename from deps/ncurses-5.9/man/form_new.3x rename to deps/ncurses-6.3/man/form_new.3x index b69f642..4739817 100644 --- a/deps/ncurses-5.9/man/form_new.3x +++ b/deps/ncurses-6.3/man/form_new.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_new.3x,v 1.9 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_new.3x,v 1.15 2020/10/24 09:02:26 tom Exp $ .TH form_new 3X "" .SH NAME -\fBform_new\fR \- create and destroy forms +\fBnew_form\fR, +\fBfree_form\fP \- create and destroy forms .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBFORM *new_form(FIELD **\fP\fIfields\fP\fB);\fP .br -FORM *new_form(FIELD **fields); -.br -int free_form(FORM *form); +\fBint free_form(FORM *\fP\fIform\fP\fB);\fP .br .SH DESCRIPTION The function \fBnew_form\fR creates a new form connected to a specified field @@ -46,7 +48,7 @@ The function \fBfree_form\fR disconnects \fIform\fR from its field array and frees the storage allocated for the form. .SH RETURN VALUE The function \fBnew_form\fR returns \fBNULL\fR on error. -It sets errno according to the function's success: +It sets \fBerrno\fP according to the function's success: .TP 5 .B E_OK The routine succeeded. @@ -76,8 +78,9 @@ The form has already been posted. The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_new_page.3x b/deps/ncurses-6.3/man/form_new_page.3x similarity index 77% rename from deps/ncurses-5.9/man/form_new_page.3x rename to deps/ncurses-6.3/man/form_new_page.3x index 635822d..478688f 100644 --- a/deps/ncurses-5.9/man/form_new_page.3x +++ b/deps/ncurses-6.3/man/form_new_page.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,21 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_new_page.3x,v 1.10 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_new_page.3x,v 1.17 2020/10/18 00:04:36 tom Exp $ .TH form_new_page 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .SH NAME -\fBform_new_page\fR \- form pagination functions +\fBset_new_page\fR, +\fBnew_page\fR \- form pagination functions .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint set_new_page(FIELD *\fP\fIfield\fP\fB, bool \fP\fInew_page_flag\fP\fB);\fP .br -int set_new_page(FIELD *field, bool new_page_flag); -.br -bool new_page(const FIELD *field); +\fBbool new_page(const FIELD *\fP\fIfield\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_new_page\fR sets or resets a flag marking the given field @@ -47,25 +53,23 @@ a page beginning on its form. .SH RETURN VALUE The function \fBnew_page\fR returns \fBTRUE\fR or \fBFALSE\fR. .PP -The function \fBset_new_page\fR return one of the following: +The function \fBset_new_page\fR returns one of the following: .TP 5 .B E_OK The routine succeeded. .TP 5 -.B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). -.TP 5 .B E_CONNECTED The given field is already connected to a form. .SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "form_" for detailed +\fBcurses\fR(3X) and related pages whose names begin \*(``form_\*('' for detailed descriptions of the entry points. .SH NOTES The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_opts.3x b/deps/ncurses-6.3/man/form_opts.3x similarity index 80% rename from deps/ncurses-5.9/man/form_opts.3x rename to deps/ncurses-6.3/man/form_opts.3x index f02cec6..db6c491 100644 --- a/deps/ncurses-5.9/man/form_opts.3x +++ b/deps/ncurses-6.3/man/form_opts.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,20 +28,23 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_opts.3x,v 1.17 2020/10/18 00:03:49 tom Exp $ .TH form_opts 3X "" .SH NAME +\fBset_form_opts\fP, +\fBform_opts_on\fP, +\fBform_opts_off\fP, \fBform_opts\fR \- set and get form options .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint set_form_opts(FORM *\fP\fIform\fP\fB, Field_Options \fP\fIopts\fP\fB);\fP .br -int set_form_opts(FORM *form, Field_Options opts); +\fBField_Options form_opts(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint form_opts_on(FORM *\fP\fIform\fP\fB, Field_Options \fP\fIopts\fP\fB);\fP .br -int form_opts_on(FORM *form, Field_Options opts); -.br -int form_opts_off(FORM *form, Field_Options opts); -.br -Field_Options form_opts(const FORM *form); +\fBint form_opts_off(FORM *\fP\fIform\fP\fB, Field_Options \fP\fIopts\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_form_opts\fR sets all the given form's option bits (form @@ -70,15 +74,16 @@ Except for \fBform_opts\fR, each routine returns one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .SH SEE ALSO \fBcurses\fR(3X), \fBform\fR(3X). .SH NOTES The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/form_page.3x b/deps/ncurses-6.3/man/form_page.3x new file mode 100644 index 0000000..da1c725 --- /dev/null +++ b/deps/ncurses-6.3/man/form_page.3x @@ -0,0 +1,101 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2016 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. * +.\"*************************************************************************** +.\" +.\" $Id: form_page.3x,v 1.19 2020/10/18 00:02:44 tom Exp $ +.TH form_page 3X "" +.SH NAME +\fBform_page\fR \- set and get form page number +.SH SYNOPSIS +\fB#include <form.h>\fR +.sp +\fBint set_current_field(FORM *\fP\fIform\fP\fB, FIELD *\fP\fIfield\fP\fB);\fP +.br +\fBFIELD *current_field(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint unfocus_current_field(FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint set_form_page(FORM *\fP\fIform\fP\fB, int \fP\fIn\fP\fB);\fP +.br +\fBint form_page(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint field_index(const FIELD *\fP\fIfield\fP\fB);\fP +.br +.SH DESCRIPTION +The function \fBset_current_field\fR sets the current field of the given +form; \fBcurrent_field\fR returns the current field of the given form. +.PP +The function \fBunfocus_current_field\fR removes the focus from the current +field of the form. +In such state, inquiries via \fBcurrent_field\fR shall return a NULL pointer. +.PP +The function \fBset_form_page\fR sets the form's page number (goes to page +\fIn\fR of the form). +.PP +The function \fBform_page\fR returns the form's current page number. +.PP +The function \fBfield_index\fR returns the index of the field in the +field array of the form it is connected to. +It returns \fBERR\fR if +the argument is the null pointer or the field is not connected. +.SH RETURN VALUE +Except for \fBform_page\fR, each routine returns one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_BAD_STATE +Routine was called from an initialization or termination function. +.TP 5 +.B E_INVALID_FIELD +Contents of a field are not valid. +.TP 5 +.B E_REQUEST_DENIED +The form driver could not process the request. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +. +.SH SEE ALSO +\fBcurses\fR(3X), \fBform\fR(3X). +.SH NOTES +The header file \fB<form.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V forms library. +They were not supported on +Version 7 or BSD versions. +.PP +The \fBunfocus_current_field\fP function is an ncurses extension. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_post.3x b/deps/ncurses-6.3/man/form_post.3x similarity index 82% rename from deps/ncurses-5.9/man/form_post.3x rename to deps/ncurses-6.3/man/form_post.3x index 4799d9d..c0e5baa 100644 --- a/deps/ncurses-5.9/man/form_post.3x +++ b/deps/ncurses-6.3/man/form_post.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2015,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 * @@ -27,20 +28,22 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_post.3x,v 1.9 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_post.3x,v 1.16 2020/10/18 00:01:05 tom Exp $ .TH form_post 3X "" .SH NAME -\fBform_post\fR \- write or erase forms from associated subwindows +\fBpost_form\fR, +\fBunpost_form\fR \- write or erase forms from associated subwindows .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint post_form(FORM *\fP\fIform\fP\fB);\fP .br -int post_form(FORM *form); -.br -int unpost_form(FORM *form); +\fBint unpost_form(FORM *\fP\fIform\fP\fB);\fP .br .SH DESCRIPTION -The function \fBpost_form\fR displays a form to its associated subwindow. To -trigger physical display of the subwindow, use \fBrefresh\fR or some equivalent +The function \fBpost_form\fR displays a form to its associated subwindow. +To trigger physical display of the subwindow, +use \fBrefresh\fR(3X) or some equivalent \fBcurses\fR routine (the implicit \fBdoupdate\fR triggered by an \fBcurses\fR input request will do). .PP @@ -70,7 +73,7 @@ Form is too large for its window. The form has already been posted. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). . .SH SEE ALSO \fBcurses\fR(3X), \fBform\fR(3X). @@ -78,8 +81,9 @@ System error occurred (see \fBerrno\fR). The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_requestname.3x b/deps/ncurses-6.3/man/form_requestname.3x similarity index 75% rename from deps/ncurses-5.9/man/form_requestname.3x rename to deps/ncurses-6.3/man/form_requestname.3x index 4a4e7eb..11e5c0f 100644 --- a/deps/ncurses-5.9/man/form_requestname.3x +++ b/deps/ncurses-6.3/man/form_requestname.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,38 +28,43 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_requestname.3x,v 1.16 2020/12/12 16:37:14 tom Exp $ .TH form_requestname 3X "" .SH NAME -\fBform_requestname\fR \- handle printable form request names +\fBform_request_by_name\fP, +\fBform_request_name\fR \- handle printable form request names .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBconst char *form_request_name(int \fP\fIrequest\fP\fB);\fP .br -const char *form_request_name(int request); -.br -int form_request_by_name(const char *name); +\fBint form_request_by_name(const char *\fP\fIname\fP\fB);\fP .br .SH DESCRIPTION +.SS form_request_name The function \fBform_request_name\fR returns the printable name of a form request code. -.br +.SS form_request_name_by_name The function \fBform_request_by_name\fR searches in the name-table for a request -with the given name and returns its request code. Otherwise E_NO_MATCH is returned. +with the given name and returns its request code. +Otherwise E_NO_MATCH is returned. .SH RETURN VALUE -\fBform_request_name\fR returns \fBNULL\fR on error and sets errno +\fBform_request_name\fR returns \fBNULL\fR on error and sets \fBerrno\fP to \fBE_BAD_ARGUMENT\fR. -.br +.PP \fBform_request_by_name\fR returns \fBE_NO_MATCH\fR on error. -It does not set errno. +It does not set \fBerrno\fP. .SH SEE ALSO \fBcurses\fR(3X), \fBform\fR(3X). .SH NOTES The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_userptr.3x b/deps/ncurses-6.3/man/form_userptr.3x similarity index 83% rename from deps/ncurses-5.9/man/form_userptr.3x rename to deps/ncurses-6.3/man/form_userptr.3x index bd29b54..5651a95 100644 --- a/deps/ncurses-5.9/man/form_userptr.3x +++ b/deps/ncurses-6.3/man/form_userptr.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_userptr.3x,v 1.13 2010/12/04 18:40:45 tom Exp $ +.\" $Id: form_userptr.3x,v 1.19 2020/10/24 09:00:52 tom Exp $ .TH form_userptr 3X "" .SH NAME +\fBset_form_userptr\fP, \fBform_userptr\fR \- associate application data with a form item .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint set_form_userptr(FORM *\fP\fIform\fP\fB, void *\fP\fIuserptr\fP\fB);\fP .br -int set_form_userptr(FORM *form, void *userptr); -.br -void* form_userptr(const FORM *form); +\fBvoid* form_userptr(const FORM *\fP\fIform\fP\fB);\fP .br .SH DESCRIPTION Every form and every form item has a field that can be used to hold @@ -44,7 +46,7 @@ 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\fR returns a pointer (which may be \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP The function \fBset_form_userptr\fR returns \fBE_OK\fP (success). .SH SEE ALSO @@ -53,11 +55,12 @@ The function \fBset_form_userptr\fR returns \fBE_OK\fP (success). The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .PP The user pointer is a void pointer. We chose not to leave it as a char pointer for SVr4 compatibility. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/form_variables.3x b/deps/ncurses-6.3/man/form_variables.3x similarity index 91% rename from deps/ncurses-5.9/man/form_variables.3x rename to deps/ncurses-6.3/man/form_variables.3x index 49f2876..0419cb7 100644 --- a/deps/ncurses-5.9/man/form_variables.3x +++ b/deps/ncurses-6.3/man/form_variables.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2010 Free Software Foundation, Inc. * +.\" Copyright 2020 Thomas E. Dickey * +.\" Copyright 2010-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 * @@ -26,9 +27,8 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_variables.3x,v 1.3 2010/12/04 18:38:55 tom Exp $ +.\" $Id: form_variables.3x,v 1.7 2020/12/12 14:45:16 tom Exp $ .TH form_variables 3X "" -.ds n 5 .na .hy 0 .SH NAME @@ -45,7 +45,6 @@ .SH SYNOPSIS .nf \fB#include <form.h>\fR -.br .PP \fBFIELDTYPE * TYPE_ALNUM;\fR \fBFIELDTYPE * TYPE_ALPHA;\fR @@ -54,11 +53,11 @@ \fBFIELDTYPE * TYPE_IPV4;\fR \fBFIELDTYPE * TYPE_NUMERIC;\fR \fBFIELDTYPE * TYPE_REGEXP;\fR -.br .fi .SH DESCRIPTION These are building blocks for the form library, -defining fields that can be created using \fBset_fieldtype\fP(3X). +defining fields that can be created using +the \fBform_fieldtype\fP(3X) functions. Each provides functions for field- and character-validation, according to the given datatype. .SS TYPE_ALNUM diff --git a/deps/ncurses-5.9/man/form_win.3x b/deps/ncurses-6.3/man/form_win.3x similarity index 76% rename from deps/ncurses-5.9/man/form_win.3x rename to deps/ncurses-6.3/man/form_win.3x index 32af49b..8d4a46d 100644 --- a/deps/ncurses-5.9/man/form_win.3x +++ b/deps/ncurses-6.3/man/form_win.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2006,2010 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 * @@ -27,29 +28,31 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: form_win.3x,v 1.13 2010/12/04 18:38:55 tom Exp $ +.\" $Id: form_win.3x,v 1.18 2020/10/18 00:00:32 tom Exp $ .TH form_win 3X "" .SH NAME \fBform_win\fR \- make and break form window and subwindow associations .SH SYNOPSIS \fB#include <form.h>\fR +.sp +\fBint set_form_win(FORM *\fP\fIform\fP\fB, WINDOW *\fP\fIwin\fP\fB);\fP .br -int set_form_win(FORM *form, WINDOW *win); +\fBWINDOW *form_win(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint set_form_sub(FORM *\fP\fIform\fP\fB, WINDOW *\fP\fIsub\fP\fB);\fP .br -WINDOW *form_win(const FORM *form); -.br -int set_form_sub(FORM *form, WINDOW *sub); -.br -WINDOW *form_sub(const FORM *form); -.br -int scale_form(const FORM *form, int *rows, int *columns); +\fBWINDOW *form_sub(const FORM *\fP\fIform\fP\fB);\fP +.sp +\fBint scale_form(const FORM *\fP\fIform\fP\fB, int *\fP\fIrows\fP\fB, int *\fP\fIcolumns\fP\fB);\fP .br .SH DESCRIPTION -Every form has an associated pair of \fBcurses\fR windows. The form window +Every form has an associated pair of \fBcurses\fR windows. +The form window displays any title and border associated with the window; the form subwindow displays the items of the form that are currently available for selection. .PP -The first four functions get and set those windows. It is not necessary to set +The first four functions get and set those windows. +It is not necessary to set either window; by default, the driver code uses \fBstdscr\fR for both. .PP In the \fBset_\fR functions, window argument of \fBNULL\fR is treated as though @@ -59,14 +62,15 @@ to change the system default form window or subwindow. The function \fBscale_form\fR returns the minimum size required for the subwindow of \fIform\fR. .SH RETURN VALUE -Routines that return pointers return \fBNULL\fR on error. Routines that return +Routines that return pointers return \fBNULL\fR on error. +Routines that return an integer return one of the following error codes: .TP 5 .B E_OK The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. @@ -84,8 +88,9 @@ No items are connected to the form. The header file \fB<form.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V forms library. They were not supported on +These routines emulate the System V forms library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/infocmp.1m b/deps/ncurses-6.3/man/infocmp.1m new file mode 100644 index 0000000..087796f --- /dev/null +++ b/deps/ncurses-6.3/man/infocmp.1m @@ -0,0 +1,644 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2017,2018 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. * +.\"*************************************************************************** +.\" +.\" $Id: infocmp.1m,v 1.79 2021/08/15 20:01:31 tom Exp $ +.TH @INFOCMP@ 1M "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.ds n 5 +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.ds d @TERMINFO@ +.SH NAME +\fB@INFOCMP@\fR \- compare or print out \fIterminfo\fR descriptions +.SH SYNOPSIS +\fB@INFOCMP@\fR [\fB\-\ +1\ +C\ +D\ +E\ +F\ +G\ +I\ +K\ +L\ +T\ +U\ +V\ +W\ +c\ +d\ +e\ +g\ +i\ +l\ +n\ +p\ +q\ +r\ +t\ +u\ +x\ +\fR] +.br + [\fB\-v\fR \fIn\fR] [\fB\-s d\fR| \fBi\fR| \fBl\fR| \fBc\fR] [\fB\-Q\fR \fIn\fR] [\fB\-R \fR\fBsubset\fR] +.br + [\fB\-w\fR\ \fIwidth\fR] [\fB\-A\fR\ \fIdirectory\fR] [\fB\-B\fR\ \fIdirectory\fR] +.br + [\fItermname\fR...] +.SH DESCRIPTION +\fB@INFOCMP@\fR can be used to compare a binary \fBterminfo\fR entry with other +terminfo entries, rewrite a \fBterminfo\fR description to take advantage of the +\fBuse=\fR terminfo field, or print out a \fBterminfo\fR description from the +binary file (\fBterm\fR) 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. +.SS Default Options +If no options are specified and zero or one \fItermnames\fR are specified, the +\fB\-I\fR option will be assumed. +If more than one \fItermname\fR is specified, +the \fB\-d\fR option will be assumed. +.SS Comparison Options [\-d] [\-c] [\-n] +\fB@INFOCMP@\fR compares the \fBterminfo\fR description of the first terminal +\fItermname\fR with each of the descriptions given by the entries for the other +terminal's \fItermnames\fR. +If a capability is defined for only one of the +terminals, the value returned depends on the type of the capability: +.bP +\fBF\fR for missing boolean variables +.bP +\fBNULL\fR 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\fR +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\fR +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\fR 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\fR +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 \fItermnames\fR are given, +\fB@INFOCMP@\fR uses the environment variable \fBTERM\fR +for each of the \fItermnames\fR. +.SS Source Listing Options [\-I] [\-L] [\-C] [\-r] +The \fB\-I\fR, \fB\-L\fR, and \fB\-C\fR options will produce +a source listing for each terminal named. +. +.TS +center tab(/) ; +l l . +\fB\-I\fR/use the \fBterminfo\fR names +\fB\-L\fR/use the long C variable name listed in <\fBterm.h\fR> +\fB\-C\fR/use the \fBtermcap\fR names +\fB\-r\fR/when using \fB\-C\fR, put out all capabilities in \fBtermcap\fR form +\fB\-K\fR/modifies the \fB\-C\fP option, improving BSD-compatibility. +.TE +.PP +If no \fItermnames\fR are given, the environment variable \fBTERM\fR will be +used for the terminal name. +.PP +The source produced by the \fB\-C\fR option may be used directly as a +\fBtermcap\fR entry, but not all parameterized strings can be changed to +the \fBtermcap\fR format. +\fB@INFOCMP@\fR will attempt to convert most of the +parameterized information, and anything not converted will be plainly marked in +the output and commented out. +These should be edited by hand. +.PP +For best results when converting to \fBtermcap\fP format, +you should use both \fB\-C\fP and \fB\-r\fP. +Normally a termcap description is limited to 1023 bytes. +\fB@INFOCMP@\fP trims away less essential parts to make it fit. +If you are converting to one of the (rare) termcap implementations +which accept an unlimited size of termcap, +you may want to add the \fB\-T\fP option. +More often however, you must help the termcap implementation, +and trim excess whitespace (use the \fB\-0\fP option for that). +.PP +All padding information for strings will be collected together and placed +at the beginning of the string where \fBtermcap\fR expects it. +Mandatory +padding (padding information with a trailing \*(``/\*('') will become optional. +.PP +All \fBtermcap\fR variables no longer supported by \fBterminfo\fR, but which +are derivable from other \fBterminfo\fR variables, will be output. +Not all +\fBterminfo\fR capabilities will be translated; only those variables which were +part of \fBtermcap\fR will normally be output. +Specifying the \fB\-r\fR option +will take off this restriction, allowing all capabilities to be output in +\fItermcap\fR form. +Normally you would use both the \fB\-C\fP and \fB\-r\fP options. +The actual format used incorporates some improvements for escaped characters +from terminfo format. +For a stricter BSD-compatible translation, use the \fB\-K\fR option +rather than \fB\-C\fP. +.PP +Note that because padding is collected to the beginning of the capability, not +all capabilities are output. +Mandatory padding is not supported. +Because +\fBtermcap\fR strings are not as flexible, it is not always possible to convert +a \fBterminfo\fR string capability into an equivalent \fBtermcap\fR format. +A subsequent conversion of the \fBtermcap\fR file +back into \fBterminfo\fR format +will not necessarily reproduce the original \fBterminfo\fR source. +.PP +Some common \fBterminfo\fR parameter sequences, their \fBtermcap\fR +equivalents, and some terminal types which commonly have such sequences, are: +. +.TS +center tab(/) ; +l c l +l l l. +\fBterminfo/termcap\fR/Representative Terminals += +\fB%p1%c/%.\fR/adm +\fB%p1%d/%d\fR/hp, ANSI standard, vt100 +\fB%p1%'x'%+%c/%+x\fR/concept +\fB%i/%i\fRq/ANSI standard, vt100 +\fB%p1%?%'x'%>%t%p1%'y'%+%;/%>xy\fR/concept +\fB%p2\fR is printed before \fB%p1/%r\fR/hp +.TE +.SS Use= Option [\-u] +The \fB\-u\fR option produces a \fBterminfo\fR source description of the first +terminal \fItermname\fR which is relative to the sum of the descriptions given +by the entries for the other terminals \fItermnames\fR. +It does this by +analyzing the differences between the first \fItermname\fR and the other +\fItermnames\fR and producing a description with \fBuse=\fR fields for the +other terminals. +In this manner, it is possible to retrofit generic terminfo +entries into a terminal's description. +Or, if two similar terminals exist, but +were coded at different times or by different people so that each description +is a full description, using \fB@INFOCMP@\fR +will show what can be done to change +one description to be relative to the other. +.PP +A capability will be printed with an at-sign (@) if it no longer exists in the +first \fItermname\fR, but one of the other \fItermname\fR entries contains a +value for it. +A capability's value will be printed if the value in the first +\fItermname\fR is not found in any of the other \fItermname\fR entries, or if +the first of the other \fItermname\fR entries that has this capability gives a +different value for the capability than that in the first \fItermname\fR. +.PP +The order of the other \fItermname\fR entries is significant. +Since the +terminfo compiler \fB@TIC@\fR does a left-to-right scan of the capabilities, +specifying two \fBuse=\fR entries that contain differing entries for the same +capabilities will produce different results depending on the order that the +entries are given in. +\fB@INFOCMP@\fR will flag any such inconsistencies between +the other \fItermname\fR entries as they are found. +.PP +Alternatively, specifying a capability \fIafter\fR a \fBuse=\fR entry that +contains that capability will cause the second specification to be ignored. +Using \fB@INFOCMP@\fR to recreate a description can be a useful check to make +sure that everything was specified correctly in the original source +description. +.PP +Another error that does not cause incorrect compiled files, but will slow down +the compilation time, is specifying extra \fBuse=\fR fields that are +superfluous. +\fB@INFOCMP@\fR will flag any other \fItermname use=\fR fields that +were not needed. +.SS Changing Databases [\-A \fIdirectory\fR] [\-B \fIdirectory\fR] +Like other \fBncurses\fP utilities, +\fB@INFOCMP@\fP looks for the terminal descriptions in several places. +You can use the \fBTERMINFO\fP and \fBTERMINFO_DIRS\fP environment variables +to override the compiled-in default list of places to search +(see \fBcurses\fP(3X) for details). +.PP +You can also use the options \fB\-A\fR +and \fB\-B\fR to override the list of places to search +when comparing terminal descriptions: +.bP +The \fB\-A\fR option sets the location for the first \fItermname\fR +.bP +The \fB\-B\fR option sets the location for the other \fItermnames\fR. +.PP +Using these options, it is possible to +compare descriptions for a terminal with the same name located in two different +databases. +For instance, +you can use this feature for comparing descriptions for the same terminal +created by different people. +.SS Other Options +.TP 5 +\fB\-0\fR +causes the fields to be printed on one line, without wrapping. +.TP 5 +\fB\-1\fR +causes the fields to be printed out one to a line. +Otherwise, +the fields will be printed several to a line to a maximum width +of 60 characters. +.TP +\fB\-a\fR +tells \fB@INFOCMP@\fP to retain commented-out capabilities +rather than discarding them. +Capabilities are commented by prefixing them with a period. +.TP +\fB\-D\fR +tells \fB@INFOCMP@\fP to print the database locations that it knows about, +and exit. +.TP 5 +\fB\-E\fR +Dump the capabilities of the given terminal as tables, needed in +the C initializer for a +TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR). +This option is useful for preparing versions of the curses library hardwired +for a given terminal type. +The tables are all declared static, and are named according to the type +and the name of the corresponding terminal entry. +.sp +Before ncurses 5.0, the split between the \fB\-e\fP and \fB\-E\fP +options was not needed; but support for extended names required making +the arrays of terminal capabilities separate from the TERMTYPE structure. +.TP 5 +\fB\-e\fR +Dump the capabilities of the given terminal as a C initializer for a +TERMTYPE structure (the terminal capability structure in the \fB<term.h>\fR). +This option is useful for preparing versions of the curses library hardwired +for a given terminal type. +.TP 5 +\fB\-F\fR +compare terminfo files. +This assumes that two following arguments are filenames. +The files are searched for pairwise matches between +entries, with two entries considered to match if any of their names do. +The report printed to standard output lists entries with no matches in +the other file, and entries with more than one match. +For entries +with exactly one match it includes a difference report. +Normally, +to reduce the volume of the report, use references are +not resolved before looking for differences, but resolution can be forced +by also specifying \fB\-r\fR. +.TP 5 +\fB\-f\fR +Display complex terminfo strings which contain if/then/else/endif expressions +indented for readability. +.TP 5 +\fB\-G\fR +Display constant literals in decimal form +rather than their character equivalents. +.TP 5 +\fB\-g\fR +Display constant character literals in quoted form +rather than their decimal equivalents. +.TP 5 +\fB\-i\fR +Analyze the initialization (\fBis1\fR, \fBis2\fR, \fBis3\fR), and reset +(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR), strings in the entry, +as well as those used for starting/stopping cursor-positioning mode +(\fBsmcup\fP, \fBrmcup\fP) as well as starting/stopping keymap mode +(\fBsmkx\fP, \fBrmkx\fP). +.IP +For each string, the +code tries to analyze it into actions in terms of the other capabilities in the +entry, certain X3.64/ISO 6429/ECMA\-48 capabilities, and certain DEC VT-series +private modes (the set of recognized special sequences has been selected for +completeness over the existing terminfo database). +Each report line consists +of the capability name, followed by a colon and space, followed by a printable +expansion of the capability string with sections matching recognized actions +translated into {}-bracketed descriptions. +.IP +Here is a list of the DEC/ANSI +special sequences recognized: +.TS +center tab(/) ; +l l +l l. +Action/Meaning += +RIS/full reset +SC/save cursor +RC/restore cursor +LL/home-down +RSR/reset scroll region += +DECSTR/soft reset (VT320) +S7C1T/7-bit controls (VT220) += +ISO DEC G0/enable DEC graphics for G0 +ISO UK G0/enable UK chars for G0 +ISO US G0/enable US chars for G0 +ISO DEC G1/enable DEC graphics for G1 +ISO UK G1/enable UK chars for G1 +ISO US G1/enable US chars for G1 += +DECPAM/application keypad mode +DECPNM/normal keypad mode +DECANSI/enter ANSI mode += +ECMA[+\-]AM/keyboard action mode +ECMA[+\-]IRM/insert replace mode +ECMA[+\-]SRM/send receive mode +ECMA[+\-]LNM/linefeed mode += +DEC[+\-]CKM/application cursor keys +DEC[+\-]ANM/set VT52 mode +DEC[+\-]COLM/132-column mode +DEC[+\-]SCLM/smooth scroll +DEC[+\-]SCNM/reverse video mode +DEC[+\-]OM/origin mode +DEC[+\-]AWM/wraparound mode +DEC[+\-]ARM/auto-repeat mode +.TE +.sp +It also recognizes a SGR action corresponding to ANSI/ISO 6429/ECMA Set +Graphics Rendition, with the values NORMAL, BOLD, UNDERLINE, BLINK, and +REVERSE. +All but NORMAL may be prefixed with +.RS +.bP +\*(``+\*('' (turn on) or +.bP +\*(``\-\*('' (turn off). +.RE +.IP +An SGR0 designates an empty highlight sequence (equivalent to {SGR:NORMAL}). +.TP 5 +\fB\-l\fR +Set output format to terminfo. +.TP 5 +\fB\-p\fR +Ignore padding specifications when comparing strings. +.TP 5 +\fB\-Q\fR \fIn\fR +Rather than show source in terminfo (text) format, +print the compiled (binary) format in hexadecimal or base64 form, +depending on the option's value: +.RS 8 +.TP 3 +1 +hexadecimal +.TP 3 +2 +base64 +.TP 3 +3 +hexadecimal and base64 +.RE +.IP +For example, this prints the compiled terminfo value as a string +which could be assigned to the \fBTERMINFO\fP environment variable: +.NS +@INFOCMP@ -0 -q -Q2 +.NE +.TP 5 +\fB\-q\fR +This makes the output a little shorter: +.RS +.bP +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. +.bP +Omit the \*(``Reconstructed from\*('' comment for source listings. +.RE +.TP 5 +\fB\-R\fR\fIsubset\fR +Restrict output to a given subset. +This option is for use with archaic +versions of terminfo like those on SVr1, Ultrix, or HP-UX that do not support +the full set of SVR4/XSI Curses terminfo; and variants such as AIX +that have their own extensions incompatible with SVr4/XSI. +.RS +.bP +Available terminfo +subsets are \*(``SVr1\*('', \*(``Ultrix\*('', \*(``HP\*('', and \*(``AIX\*(''; +see \fBterminfo\fR(\*n) for details. +.bP +You can also choose the subset \*(``BSD\*('' which selects only capabilities +with termcap equivalents recognized by 4.4BSD. +The \fB\-C\fP option sets the \*(``BSD\*('' subset as a side-effect. +.bP +If you select any other value for \fB\-R\fP, +it is the same as no subset, i.e., all capabilities are used. +The \fB\-I\fP option likewise selects no subset as a side-effect. +.RE +.TP +\fB\-s \fR\fI[d|i|l|c]\fR +The \fB\-s\fR option sorts the fields within each type according to the argument +below: +.br +.RS 5 +.TP 5 +\fBd\fR +leave fields in the order that they are stored in the \fIterminfo\fR database. +.TP 5 +\fBi\fR +sort by \fIterminfo\fR name. +.TP 5 +\fBl\fR +sort by the long C variable name. +.TP 5 +\fBc\fR +sort by the \fItermcap\fR name. +.RE +.IP +If the \fB\-s\fR option is not given, the fields printed out will be +sorted alphabetically by the \fBterminfo\fR name within each type, +except in the case of the \fB\-C\fR or the \fB\-L\fR options, which cause the +sorting to be done by the \fBtermcap\fR name or the long C variable +name, respectively. +.TP 5 +\fB\-T\fR +eliminates size-restrictions on the generated text. +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\fR +tells \fB@TIC@\fP to discard commented-out capabilities. +Normally when translating from terminfo to termcap, +untranslatable capabilities are commented-out. +.TP 5 +\fB\-U\fR +tells \fB@INFOCMP@\fP to not post-process the data +after parsing the source file. +This feature helps when comparing the actual contents of two source files, +since it excludes the inferences that \fB@INFOCMP@\fP makes to fill in missing +data. +.TP 5 +\fB\-V\fR +reports the version of ncurses which was used in this program, and exits. +.TP 5 +\fB\-v\fR \fIn\fR +prints out tracing information on standard error as the program runs. +.IP +The optional parameter \fIn\fR is a number from 1 to 10, inclusive, +indicating the desired level of detail of information. +If ncurses is built without tracing support, the optional parameter is ignored. +.TP +\fB\-W\fR +By itself, the \fB\-w\fP option will not force long strings to be wrapped. +Use the \fB\-W\fP option to do this. +.TP 5 +\fB\-w\fR \fIwidth\fR +changes the output to \fIwidth\fR characters. +.TP +\fB\-x\fR +print information for user-defined capabilities (see \fBuser_caps(\*n)\fP. +These are extensions to the terminfo repertoire which can be loaded +using the \fB\-x\fR option of \fB@TIC@\fP. +.SH FILES +.TP 20 +\*d +Compiled terminal description database. +.SH HISTORY +Although System V Release 2 provided a terminfo library, +it had no documented tool for decompiling the terminal descriptions. +Tony Hansen (AT&T) wrote the first \fBinfocmp\fP in early 1984, +for System V Release 3. +.PP +Eric Raymond used the AT&T documentation in 1995 to provide an equivalent +\fB@INFOCMP@\fP for ncurses. +In addition, he added a few new features such as: +.bP +the \fB\-e\fP option, to support \fIfallback\fP +(compiled-in) terminal descriptions +.bP +the \fB\-i\fP option, to help with analysis +.PP +Later, Thomas Dickey added the \fB\-x\fP (user-defined capabilities) +option, and the \fB\-E\fP option to support fallback entries with +user-defined capabilities. +.PP +For a complete list, see the \fIEXTENSIONS\fP section. +.PP +In 2010, Roy Marples provided an \fBinfocmp\fP program for NetBSD. +It is less capable than the SVr4 or ncurses versions +(e.g., it lacks the sorting options documented in X/Open), +but does include the \fB\-x\fP option adapted from ncurses. +.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. +.SH EXTENSIONS +The +\fB\-0\fR, +\fB\-1\fR, +\fB\-E\fR, +\fB\-F\fR, +\fB\-G\fR, +\fB\-Q\fR, +\fB\-R\fR, +\fB\-T\fR, +\fB\-V\fR, +\fB\-a\fR, +\fB\-e\fR, +\fB\-f\fR, +\fB\-g\fR, +\fB\-i\fR, +\fB\-l\fR, +\fB\-p\fR, +\fB\-q\fR and +\fB\-t\fR +options are not supported in SVr4 curses. +.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. +.PP +The \fB\-r\fR 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\fR \fB\-RBSD\fR. +.SH BUGS +The \fB\-F\fR option of \fB@INFOCMP@\fR(1M) should be a \fB@TOE@\fR(1M) mode. +.SH SEE ALSO +\fB@CAPTOINFO@\fR(1M), +\fB@INFOTOCAP@\fR(1M), +\fB@TIC@\fR(1M), +\fB@TOE@\fR(1M), +\fBcurses\fR(3X), +\fBterminfo\fR(\*n). +\fBuser_caps\fR(\*n). +.sp +https://invisible-island.net/ncurses/tctest.html +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). +.SH AUTHOR +Eric S. Raymond <esr@snark.thyrsus.com> +and +.br +Thomas E. Dickey <dickey@invisible-island.net> diff --git a/deps/ncurses-5.9/man/infotocap.1m b/deps/ncurses-6.3/man/infotocap.1m similarity index 87% rename from deps/ncurses-5.9/man/infotocap.1m rename to deps/ncurses-6.3/man/infotocap.1m index d9b44f0..2740b55 100644 --- a/deps/ncurses-5.9/man/infotocap.1m +++ b/deps/ncurses-6.3/man/infotocap.1m @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1999-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1999-2010,2016 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 * @@ -27,14 +28,14 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: infotocap.1m,v 1.11 2010/12/04 18:38:55 tom Exp $ +.\" $Id: infotocap.1m,v 1.17 2020/12/19 21:49:52 tom Exp $ .TH @INFOTOCAP@ 1M "" .ds n 5 .ds d @TERMINFO@ .SH NAME \fB@INFOTOCAP@\fR \- convert a \fIterminfo\fR description into a \fItermcap\fR description .SH SYNOPSIS -\fB@INFOTOCAP@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR . . . +\fB@INFOTOCAP@\fR [\fB\-v\fR\fIn\fR \fIwidth\fR] [\fB\-V\fR] [\fB\-1\fR] [\fB\-w\fR \fIwidth\fR] \fIfile\fR ... .SH DESCRIPTION \fB@INFOTOCAP@\fR looks in each given text \fIfile\fR for \fBterminfo\fR descriptions. @@ -61,12 +62,14 @@ change the output to \fIwidth\fR characters. \*d Compiled terminal description database. .SH NOTES -This utility is actually a link to \fI@TIC@\fR, running in \fI\-C\fR mode. -You can use other \fI@TIC@\fR options such as \fB\-f\fR and \fB\-x\fR. +This utility is actually a link to \fB@TIC@\fR, running in \fI\-C\fR mode. +You can use other \fB@TIC@\fR options such as \fB\-f\fR and \fB\-x\fR. +.SH PORTABILITY +None of X/Open Curses, Issue 7 (2009), SVr4 or NetBSD document this application. .SH SEE ALSO -\fBcurses\fR(3X), -\fB@TIC@\fR(1M), \fB@INFOCMP@\fR(1M), +\fB@TIC@\fR(1M), +\fBcurses\fR(3X), \fBterminfo\fR(\*n) .PP This describes \fBncurses\fR diff --git a/deps/ncurses-5.9/man/key_defined.3x b/deps/ncurses-6.3/man/key_defined.3x similarity index 84% rename from deps/ncurses-5.9/man/key_defined.3x rename to deps/ncurses-6.3/man/key_defined.3x index db6c531..c66c54c 100644 --- a/deps/ncurses-5.9/man/key_defined.3x +++ b/deps/ncurses-6.3/man/key_defined.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2003-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 2003-2006,2010 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 * @@ -28,14 +29,14 @@ .\" .\" Author: Thomas E. Dickey 2003 .\" -.\" $Id: key_defined.3x,v 1.6 2010/12/04 18:40:45 tom Exp $ +.\" $Id: key_defined.3x,v 1.10 2020/10/17 23:39:03 tom Exp $ .TH key_defined 3X "" .SH NAME \fBkey_defined\fP \- check if a keycode is defined .SH SYNOPSIS \fB#include <curses.h>\fP .sp -\fBint key_defined(const char *definition);\fP +\fBint key_defined(const char *\fP\fIdefinition\fP\fB);\fP .SH DESCRIPTION This is an extension to the curses library. It permits an application to determine if a string is currently bound @@ -43,10 +44,13 @@ to any keycode. .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. +If the string conflicts with longer strings +which are bound to keys, \-1 is returned. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH SEE ALSO \fBdefine_key\fR(3X). diff --git a/deps/ncurses-5.9/man/keybound.3x b/deps/ncurses-6.3/man/keybound.3x similarity index 87% rename from deps/ncurses-5.9/man/keybound.3x rename to deps/ncurses-6.3/man/keybound.3x index 5dd083a..d9a069e 100644 --- a/deps/ncurses-5.9/man/keybound.3x +++ b/deps/ncurses-6.3/man/keybound.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1999-2008,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1999-2008,2010 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 * @@ -28,14 +29,14 @@ .\" .\" Author: Thomas E. Dickey 1999 .\" -.\" $Id: keybound.3x,v 1.8 2010/12/04 18:49:20 tom Exp $ +.\" $Id: keybound.3x,v 1.11 2020/10/17 23:39:30 tom Exp $ .TH keybound 3X "" .SH NAME \fBkeybound\fP \- return definition of keycode .SH SYNOPSIS \fB#include <curses.h>\fP .sp -\fBchar * keybound(int keycode, int count);\fP +\fBchar * keybound(int \fP\fIkeycode\fP\fB, int \fP\fIcount);\fP .SH DESCRIPTION This is an extension to the curses library. It permits an application to determine the string which is defined @@ -48,8 +49,10 @@ through multiple definitions, counting from zero. When successful, the function returns a string which must be freed by the caller. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH SEE ALSO \fBdefine_key\fR(3X), diff --git a/deps/ncurses-5.9/man/keyok.3x b/deps/ncurses-6.3/man/keyok.3x similarity index 82% rename from deps/ncurses-5.9/man/keyok.3x rename to deps/ncurses-6.3/man/keyok.3x index 8eaf9a3..937450e 100644 --- a/deps/ncurses-5.9/man/keyok.3x +++ b/deps/ncurses-6.3/man/keyok.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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 * @@ -28,28 +29,30 @@ .\" .\" Author: Thomas E. Dickey 1997 .\" -.\" $Id: keyok.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: keyok.3x,v 1.15 2020/10/17 23:39:59 tom Exp $ .TH keyok 3X "" .SH NAME \fBkeyok\fP \- enable or disable a keycode .SH SYNOPSIS \fB#include <curses.h>\fP .sp -\fBint keyok(int keycode, bool enable);\fP +\fBint keyok(int \fP\fIkeycode\fP\fB, bool \fP\fIenable\fP\fB);\fP .SH DESCRIPTION This is an extension to the curses library. It permits an application to disable specific keycodes, rather than use the \fIkeypad\fP function to disable all keycodes. Keys that have been disabled can be re-enabled. .SH RETURN VALUE -The keycode must be greater than zero, else ERR is returned. -If it does not correspond to a defined key, then ERR is returned. +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 OK. +Otherwise, the function returns \fBOK\fP. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH SEE ALSO \fBdefine_key\fR(3X). diff --git a/deps/ncurses-5.9/man/legacy_coding.3x b/deps/ncurses-6.3/man/legacy_coding.3x similarity index 89% rename from deps/ncurses-5.9/man/legacy_coding.3x rename to deps/ncurses-6.3/man/legacy_coding.3x index fabb607..42c3dd6 100644 --- a/deps/ncurses-5.9/man/legacy_coding.3x +++ b/deps/ncurses-6.3/man/legacy_coding.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 2005-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2020,2021 Thomas E. Dickey * +.\" Copyright 2005-2016,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 * @@ -28,18 +29,16 @@ .\" .\" Author: Thomas E. Dickey .\" -.\" $Id: legacy_coding.3x,v 1.4 2010/12/04 18:49:20 tom Exp $ +.\" $Id: legacy_coding.3x,v 1.9 2021/08/15 19:32:05 tom Exp $ .TH legacy_coding 3X "" .SH NAME -\fBuse_legacy_coding\fR \- use terminal's default colors +\fBuse_legacy_coding\fR \- override locale-encoding checks .SH SYNOPSIS \fB#include <curses.h>\fP .sp -\fBint use_legacy_coding(int level);\fP +\fBint use_legacy_coding(int \fP\fIlevel\fP\fB);\fP .SH DESCRIPTION -The -.I use_legacy_coding() -function is an extension to the curses library. +The \fBuse_legacy_coding\fP function is an extension to the curses library. It allows the caller to change the result of \fBunctrl\fP, and suppress related checks within the library that would normally cause nonprinting characters to be rendered in visible form. @@ -71,6 +70,6 @@ It was not supported on Version 7, BSD or System V implementations. It is recommended that any code depending on ncurses extensions be conditioned using NCURSES_VERSION. .SH SEE ALSO -\fBunctrl\fR. +\fBunctrl\fR(3X). .SH AUTHOR Thomas Dickey (to support lynx's font-switching feature). diff --git a/deps/ncurses-5.9/man/make_sed.sh b/deps/ncurses-6.3/man/make_sed.sh similarity index 92% rename from deps/ncurses-5.9/man/make_sed.sh rename to deps/ncurses-6.3/man/make_sed.sh index f2afac9..30e3a77 100755 --- a/deps/ncurses-5.9/man/make_sed.sh +++ b/deps/ncurses-6.3/man/make_sed.sh @@ -1,7 +1,8 @@ #!/bin/sh -# $Id: make_sed.sh,v 1.9 2005/07/16 18:15:31 tom Exp $ +# $Id: make_sed.sh,v 1.12 2021/06/17 21:20:30 tom Exp $ ############################################################################## -# Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2005,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"), # @@ -45,7 +46,7 @@ UPPER=upper$$ SCRIPT=script$$ RESULT=result$$ rm -f $UPPER $SCRIPT $RESULT -trap "rm -f $COL.* $INPUT $UPPER $SCRIPT $RESULT" 0 1 2 5 15 +trap "rm -f $COL.* $INPUT $UPPER $SCRIPT $RESULT" 0 1 2 3 15 fgrep -v \# $1 | \ sed -e 's/[ ][ ]*/ /g' >$INPUT @@ -57,7 +58,7 @@ done for F in 2 4 do tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ <$COL.$F >$UPPER - mv $UPPER $COL.$F + mv $UPPER $COL.$F done paste $COL.* | \ sed -e 's/^/s\/\\</' \ diff --git a/deps/ncurses-5.9/man/man_db.renames b/deps/ncurses-6.3/man/man_db.renames similarity index 92% rename from deps/ncurses-5.9/man/man_db.renames rename to deps/ncurses-6.3/man/man_db.renames index e98fd69..fd44683 100644 --- a/deps/ncurses-5.9/man/man_db.renames +++ b/deps/ncurses-6.3/man/man_db.renames @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 1998-2015,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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: man_db.renames,v 1.47 2010/09/18 15:43:20 tom Exp $ +# $Id: man_db.renames,v 1.56 2020/02/02 23:34:34 tom Exp $ # Manual-page renamings for the man_db program # # Files: @@ -149,11 +150,13 @@ mitem_userptr.3x menu_userptr.3menu mitem_value.3x menu_value.3menu mitem_visible.3x menu_visible.3menu ncurses.3x ncurses.3ncurses +new_pair.3x new_pair.3ncurses panel.3x panel.3curses printf.3s printf.3 putc.3s putc.3 resizeterm.3x resizeterm.3ncurses scanf.3s scanf.3 +scr_dump.5 scr_dump.5 system.3s system.3 tabs.1 tabs.1 term.5 term.5 @@ -165,7 +168,7 @@ tic.1m tic.1 toe.1m toe.1 tput.1 tput.1 tset.1 tset.1 -vprintf.3s vprintf.3 +user_caps.5 user_caps.5 wresize.3x wresize.3ncurses # # Other: @@ -174,20 +177,24 @@ tack.1m tack.1 getty.1 getty.8 scanf.3 scanf.3 ttys.5 ttys.4 -termio.7 termios.3 system.3 system.3 regcomp.3x regcomp.3 regexec.3x regexec.3 +vprintf.3 vprintf.3 # -# Generated: +# The following are pages which may be generated depending on configuration: adacurses-config.1 adacurses-config.1 +adacurses5-config.1 adacurses5-config.1 +adacurses6-config.1 adacurses6-config.1 # ncurses5-config.1 ncurses5-config.1 ncursesw5-config.1 ncursesw5-config.1 +ncursest5-config.1 ncursest5-config.1 +ncursestw5-config.1 ncursestw5-config.1 # ncurses6-config.1 ncurses6-config.1 ncursesw6-config.1 ncursesw6-config.1 ncursest6-config.1 ncursest6-config.1 -ncurseswt6-config.1 ncurseswt6-config.1 +ncursestw6-config.1 ncursestw6-config.1 # # vile:cfgmode diff --git a/deps/ncurses-6.3/man/manhtml.aliases b/deps/ncurses-6.3/man/manhtml.aliases new file mode 100644 index 0000000..a9f18ca --- /dev/null +++ b/deps/ncurses-6.3/man/manhtml.aliases @@ -0,0 +1,69 @@ +# $Id: manhtml.aliases,v 1.19 2020/12/12 14:45:55 tom Exp $ +#*************************************************************************** +# Copyright 2019,2020 Thomas E. Dickey * +# Copyright 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. * +#*************************************************************************** +# Items in this list will be linked to the corresponding manpages by man2html +addch(3X) curs_addch(3X) +assume_default_colors(3X) default_colors(3X) +curs_set(3X) curs_kernel(3X) +delscreen(3X) curs_initscr(3X) +doupdate(3X) curs_refresh(3X) +endwin(3X) curs_initscr(3X) +filter(3X) curs_util(3X) +get_wch(3X) curs_get_wch(3X) +getcchar(3X) curs_getcchar(3X) +getch(3X) curs_getch(3X) +inch(3X) curs_inch(3X) +infocmp(1) infocmp(1M) +initscr(3X) curs_initscr(3X) +is_scrollok(3X) curs_opaque(3X) +keypad(3X) curs_inopts(3X) +longname(3X) curs_termattrs(3X) +meta(3X) curs_inopts(3X) +mvcur(3X) curs_terminfo(3X) +mvwin(3X) curs_window(3X) +newterm(3X) curs_initscr(3X) +refresh(3X) curs_refresh(3X) +reset_shell_mode(3X) curs_kernel(3X) +set_term(3X) curs_initscr(3X) +setcchar(3X) curs_getcchar(3X) +setupterm(3X) curs_terminfo(3X) +slk_init(3X) curs_slk(3X) +slk_touch(3X) curs_slk(3X) +tic(1) tic(1M) +tigetstr(3X) curs_terminfo(3X) +tparm(3X) curs_terminfo(3X) +tputs(3X) curs_terminfo(3X) +use_default_colors(3X) default_colors(3X) +use_env(3X) curs_util(3X) +use_extended_names(3X) curs_extend(3X) +use_legacy_coding(3X) legacy_coding(3X) +vidputs(3X) curs_terminfo(3X) +wgetch(3X) curs_getch(3X) +wnoutrefresh(3X) curs_refresh(3X) +wrefresh(3X) curs_refresh(3X) diff --git a/deps/ncurses-6.3/man/manhtml.externs b/deps/ncurses-6.3/man/manhtml.externs new file mode 100644 index 0000000..8787b2c --- /dev/null +++ b/deps/ncurses-6.3/man/manhtml.externs @@ -0,0 +1,67 @@ +# $Id: manhtml.externs,v 1.14 2020/04/18 09:48:50 tom Exp $ +# Items in this list will not be linked by man2html +#*************************************************************************** +# Copyright 2019,2020 Thomas E. Dickey * +# Copyright 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. * +#*************************************************************************** +ADACURSES(1) +COLOR_PAIR(1) +COLOR_PAIR(2) +COLOR_PAIR(3) +atoi(3) +conflict(1) +csh(1) +ded(1) +environ(7) +errno(3) +file(1) +getty(1) +lynx(1) +nvi(1) +mutt(1) +od(1) +printf(3) +profile(5) +putc(3) +putchar(3) +putwc(3) +read(2) +scanf(3) +screen(1) +sh(1) +sscanf(3) +stdio(3) +stty(1) +system(3) +termios(3) +tmux(1) +tty(4) +ttys(5) +vprintf(3) +vscanf(3) +wcwidth(3) +write(2) diff --git a/deps/ncurses-5.9/man/manlinks.sed b/deps/ncurses-6.3/man/manlinks.sed similarity index 93% rename from deps/ncurses-5.9/man/manlinks.sed rename to deps/ncurses-6.3/man/manlinks.sed index 78055b4..09b055f 100644 --- a/deps/ncurses-5.9/man/manlinks.sed +++ b/deps/ncurses-6.3/man/manlinks.sed @@ -1,6 +1,7 @@ -# $Id: manlinks.sed,v 1.13 2008/01/19 23:31:17 tom Exp $ +# $Id: manlinks.sed,v 1.15 2021/01/05 20:30:00 tom Exp $ ############################################################################## -# Copyright (c) 2000-2003,2008 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2000-2003,2008 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"), # @@ -40,10 +41,14 @@ s/^\.IX// s/\\f.//g s/[:,]/ /g # +# ignore C-style comments +s%/\*.*\*/%% +# # eliminate unnecessary whitespace, convert multiple blanks to single space s/^[ ][ ]*// s/[ ][ ]*$// s/[ ][ ]*/ /g +/^$/d # # convert ".SH" into a more manageable form s/\.SH[ ][ ]*/.SH_(/ diff --git a/deps/ncurses-5.9/man/menu.3x b/deps/ncurses-6.3/man/menu.3x similarity index 82% rename from deps/ncurses-5.9/man/menu.3x rename to deps/ncurses-6.3/man/menu.3x index ff3a19c..68117bc 100644 --- a/deps/ncurses-5.9/man/menu.3x +++ b/deps/ncurses-6.3/man/menu.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-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 * @@ -27,8 +28,16 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu.3x,v 1.21 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu.3x,v 1.27 2020/02/02 23:34:34 tom Exp $ .TH menu 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. .SH NAME \fBmenu\fR \- curses extension for programming menus .SH SYNOPSIS @@ -36,20 +45,24 @@ .br .SH DESCRIPTION The \fBmenu\fR library provides terminal-independent facilities for composing -menu systems on character-cell terminals. The library includes: item routines, +menu systems on character-cell terminals. +The library includes: item routines, which create and modify menu items; and menu routines, which group items into menus, display menus on the screen, and handle interaction with the user. .PP The \fBmenu\fR library uses the \fBcurses\fR libraries, and a curses initialization routine such as \fBinitscr\fR must be called before using any of -these functions. To use the \fBmenu\fR library, link with the options +these functions. +To use the \fBmenu\fR library, link with the options \fB\-lmenu \-lcurses\fR. . .SS Current Default Values for Item Attributes . -The \fBmenu\fR library maintains a default value for item attributes. You can +The \fBmenu\fR library maintains a default value for item attributes. +You can get or set this default by calling the appropriate \fBget_\fR or \fBset_\fR -routine with a \fBNULL\fR item pointer. Changing this default with a +routine with a \fBNULL\fR item pointer. +Changing this default with a \fBset_\fR function affects future item creations, but does not change the rendering of items already created. . @@ -128,7 +141,8 @@ top_row \fBmitem_current\fR(3X) unpost_menu \fBmenu_post\fR(3X) .TE .SH RETURN VALUE -Routines that return pointers return \fBNULL\fR on error. Routines that return +Routines that return pointers return \fBNULL\fR on error. +Routines that return an integer return one of the following error codes: .TP 5 .B E_OK @@ -162,26 +176,38 @@ The menu is already posted. The menu driver could not process the request. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_UNKNOWN_COMMAND The menu driver code saw an unknown request code. -.SH SEE ALSO -\fBcurses\fR(3X) and related pages whose names begin "menu_" for detailed -descriptions of the entry points. .SH NOTES The header file \fB<menu.h>\fR automatically includes the header files \fB<curses.h>\fR and \fB<eti.h>\fR. .PP In your library list, libmenu.a should be before libncurses.a; that is, -you want to say `\-lmenu \-lncurses', not the other way around (which would -usually give a link-error). +you should say \*(``\-lmenu \-lncurses\*('', not the other way around +(which would give a link-error when using static libraries). .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. +.PP +The menu facility was documented in SVr4.2 in +\fICharacter User Interface Programming (UNIX SVR4.2)\fP. +.PP +It is not part of X/Open Curses. +.PP +Aside from ncurses, there are few implementations: +.bP +systems based on SVr4 source code, e.g., Solaris. +.bP +NetBSD curses. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for ncurses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for ncurses by Eric S. Raymond. .SH SEE ALSO +\fBcurses\fR(3X) and related pages whose names begin \*(``menu_\*('' +for detailed descriptions of the entry points. +.PP This describes \fBncurses\fR version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-6.3/man/menu_attributes.3x b/deps/ncurses-6.3/man/menu_attributes.3x new file mode 100644 index 0000000..903e303 --- /dev/null +++ b/deps/ncurses-6.3/man/menu_attributes.3x @@ -0,0 +1,113 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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. * +.\"*************************************************************************** +.\" +.\" $Id: menu_attributes.3x,v 1.19 2020/10/17 23:58:58 tom Exp $ +.TH menu_attributes 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.SH NAME +\fBmenu_back\fR, +\fBmenu_fore\fR, +\fBmenu_grey\fR, +\fBmenu_pad\fR, +\fBset_menu_back\fR, +\fBset_menu_fore\fR, +\fBset_menu_grey\fR, +\fBset_menu_pad\fR \- color and attribute control for menus +.SH SYNOPSIS +\fB#include <menu.h>\fR +.sp +\fBint set_menu_fore(MENU *\fP\fImenu\fP\fB, chtype \fP\fIattr\fP\fB);\fP +.br +\fBchtype menu_fore(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint set_menu_back(MENU *\fP\fImenu\fP\fB, chtype \fP\fIattr\fP\fB);\fP +.br +\fBchtype menu_back(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint set_menu_grey(MENU *\fP\fImenu\fP\fB, chtype \fP\fIattr\fP\fB);\fP +.br +\fBchtype menu_grey(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint set_menu_pad(MENU *\fP\fImenu\fP\fB, int \fP\fIpad\fP\fB);\fP +.br +\fBint menu_pad(const MENU *\fP\fImenu\fP\fB);\fP +.br +.SH DESCRIPTION +The function \fBset_menu_fore\fR sets the foreground attribute of +\fImenu\fR. This is the highlight used for selected menu items. +\fBmenu_fore\fR returns the foreground attribute. +The default +is \fBA_REVERSE\fR. +.PP +The function \fBset_menu_back\fR sets the background attribute of +\fImenu\fR. This is the highlight used for selectable (but not currently +selected) menu items. +The function \fBmenu_back\fR returns the background +attribute. +The default is \fBA_NORMAL\fR. +.PP +The function \fBset_menu_grey\fR sets the grey attribute of \fImenu\fR. This is +the highlight used for un-selectable menu items in menus that permit more than +one selection. +The function \fBmenu_grey\fR returns the grey attribute. +The default is \fBA_UNDERLINE\fR. +.PP +The function \fBset_menu_pad\fR sets the character used to fill the space +between the name and description parts of a menu item. +\fBmenu_pad\fR returns +the given menu's pad character. +The default is a blank. +.SH RETURN VALUE +These routines return one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.SH SEE ALSO +\fBcurses\fR(3X) and related pages whose names begin \*(``menu_\*('' for detailed +descriptions of the entry points. +.SH NOTES +The header file \fB<menu.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V menu library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_cursor.3x b/deps/ncurses-6.3/man/menu_cursor.3x similarity index 82% rename from deps/ncurses-5.9/man/menu_cursor.3x rename to deps/ncurses-6.3/man/menu_cursor.3x index 66a835b..7a364eb 100644 --- a/deps/ncurses-5.9/man/menu_cursor.3x +++ b/deps/ncurses-6.3/man/menu_cursor.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,18 +28,19 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_cursor.3x,v 1.8 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_cursor.3x,v 1.13 2020/10/17 23:41:31 tom Exp $ .TH menu_cursor 3X "" .SH NAME -\fBmenu_cursor\fR \- position a menu's cursor +\fBpos_menu_cursor\fR \- position a menu's cursor .SH SYNOPSIS \fB#include <menu.h>\fR -.br -int pos_menu_cursor(const MENU *menu); +.sp +\fBint pos_menu_cursor(const MENU *\fP\fImenu\fP\fB);\fP .br .SH DESCRIPTION The function \fBpos_menu_cursor\fR restores the cursor to the current position -associated with the menu's selected item. This is useful after \fBcurses\fR +associated with the menu's selected item. +This is useful after \fBcurses\fR routines have been called to do screen-painting in response to a menu select. .SH RETURN VALUE This routine returns one of the following: @@ -47,7 +49,7 @@ This routine returns one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. @@ -60,8 +62,9 @@ The menu has not been posted. The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_driver.3x b/deps/ncurses-6.3/man/menu_driver.3x similarity index 86% rename from deps/ncurses-5.9/man/menu_driver.3x rename to deps/ncurses-6.3/man/menu_driver.3x index 1fe5001..e395358 100644 --- a/deps/ncurses-5.9/man/menu_driver.3x +++ b/deps/ncurses-6.3/man/menu_driver.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,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 * @@ -26,17 +27,18 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_driver.3x,v 1.20 2010/12/04 18:38:55 tom Exp $ +.\" $Id: menu_driver.3x,v 1.28 2020/12/19 21:33:37 tom Exp $ .TH menu_driver 3X "" .de bP -.IP \(bu 4 +.ie n .IP \(bu 4 +.el .IP \(bu 2 .. .SH NAME \fBmenu_driver\fR \- command-processing loop of the menu system .SH SYNOPSIS \fB#include <menu.h>\fR -.br -int menu_driver(MENU *menu, int c); +.sp +\fBint menu_driver(MENU *\fP\fImenu\fP\fB, int \fP\fIc\fP\fB);\fP .br .SH DESCRIPTION Once a menu has been posted (displayed), you should funnel input events to it @@ -44,7 +46,8 @@ through \fBmenu_driver\fR. 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, -which are distinct from the key- and character codes returned by \fBwgetch\fP. +which are distinct from the key- and character codes +returned by \fBwgetch\fP(3X). .bP The input is a printable character. Printable characters (which must be positive, less than 256) are @@ -107,7 +110,8 @@ Move to the previous item matching the pattern match. .PP If the second argument is a printable character, the code appends it to the pattern buffer and attempts to move to the next item matching -the new pattern. If there is no such match, \fBmenu_driver\fR returns +the new pattern. +If there is no such match, \fBmenu_driver\fR returns \fBE_NO_MATCH\fR and deletes the appended character from the buffer. .PP If the second argument is one of the above pre-defined requests, the @@ -150,12 +154,14 @@ application specific command should be executed. If a translation into a request was done, \fBmenu_driver\fR returns the result of this request. .PP -If you clicked outside the user window or the mouse event could not be translated +If you clicked outside the user window +or the mouse event could not be translated into a menu request an \fBE_REQUEST_DENIED\fR is returned. .SS APPLICATION-DEFINED COMMANDS .PP If the second argument is neither printable nor one of the above -pre-defined menu requests or KEY_MOUSE, the drive assumes it is an application-specific +pre-defined menu requests or KEY_MOUSE, +the drive assumes it is an application-specific command and returns \fBE_UNKNOWN_COMMAND\fR. Application-defined commands should be defined relative to \fBMAX_COMMAND\fR, the maximum value of these pre-defined requests. @@ -166,7 +172,7 @@ pre-defined requests. The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. @@ -187,14 +193,16 @@ Character failed to match. The menu driver could not process the request. .SH SEE ALSO \fBcurses\fR(3X), -\fBmenu\fR(3X), -\fBgetch\fR(3X). +\fBgetch\fR(3X), +\fBmenu\fR(3X). .SH NOTES The header file \fB<menu.h>\fR automatically includes the header files \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on -Version 7 or BSD versions. The support for mouse events is ncurses specific. +These routines emulate the System V menu library. +They were not supported on +Version 7 or BSD versions. +The support for mouse events is ncurses specific. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/menu_format.3x b/deps/ncurses-6.3/man/menu_format.3x new file mode 100644 index 0000000..d01f27e --- /dev/null +++ b/deps/ncurses-6.3/man/menu_format.3x @@ -0,0 +1,88 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2015,2016 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. * +.\"*************************************************************************** +.\" +.\" $Id: menu_format.3x,v 1.18 2020/10/17 23:43:11 tom Exp $ +.TH menu_format 3X "" +.SH NAME +\fBset_menu_format\fP, +\fBmenu_format\fP \- set and get menu sizes +.SH SYNOPSIS +\fB#include <menu.h>\fR +.sp +\fBint set_menu_format(MENU *\fP\fImenu\fP\fB, int \fP\fIrows\fP\fB, int \fP\fIcols\fP\fB);\fP +.br +\fBvoid menu_format(const MENU *\fP\fImenu\fP\fB, int *\fP\fIrows\fP\fB, int *\fP\fIcols\fP\fB);\fP +.br +.SH DESCRIPTION +The function \fBset_menu_format\fR sets the maximum display size of the given +menu. +If this size is too small to display all menu items, the menu will be +made scrollable. +If this size is larger than the menus subwindow and the +subwindow is too small to display all menu items, \fBpost_menu\fR will fail. +.PP +The default format is 16 rows, 1 column. +Calling \fBset_menu_format\fR with a +null menu pointer will change this default. +A zero row or column argument to +\fBset_menu_format\fR is interpreted as a request not to change the current +value. +.PP +The function \fBmenu_format\fR returns the maximum-size constraints for the +given menu into the storage addressed by \fBrows\fR and \fBcols\fR. +.SH RETURN VALUE +These routines returns one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_POSTED +The menu is already posted. +.TP 5 +.B E_NOT_CONNECTED +No items are connected to the menu. +.SH SEE ALSO +\fBcurses\fR(3X), \fBmenu\fR(3X). +.SH NOTES +The header file \fB<menu.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V menu library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/menu_hook.3x b/deps/ncurses-6.3/man/menu_hook.3x new file mode 100644 index 0000000..17a1036 --- /dev/null +++ b/deps/ncurses-6.3/man/menu_hook.3x @@ -0,0 +1,102 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2007,2010 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. * +.\"*************************************************************************** +.\" +.\" $Id: menu_hook.3x,v 1.15 2020/10/17 23:44:57 tom Exp $ +.TH menu_hook 3X "" +.SH NAME +\fBmenu_hook\fR \- set hooks for automatic invocation by applications +.SH SYNOPSIS +\fB#include <menu.h>\fR +.sp +\fBint set_item_init(MENU *\fP\fImenu\fP\fB, Menu_Hook \fP\fIfunc);\fP +.br +\fBMenu_Hook item_init(const MENU *\fP\fImenu);\fP +.sp +\fBint set_item_term(MENU *\fP\fImenu\fP\fB, Menu_Hook \fP\fIfunc);\fP +.br +\fBMenu_Hook item_term(const MENU *\fP\fImenu);\fP +.sp +\fBint set_menu_init(MENU *\fP\fImenu\fP\fB, Menu_Hook \fP\fIfunc);\fP +.br +\fBMenu_Hook menu_init(const MENU *\fP\fImenu);\fP +.sp +\fBint set_menu_term(MENU *\fP\fImenu\fP\fB, Menu_Hook \fP\fIfunc);\fP +.br +\fBMenu_Hook menu_term(const MENU *\fP\fImenu);\fP +.br +.SH DESCRIPTION +These functions make it possible to set hook functions to be called at various +points in the automatic processing of input event codes by \fBmenu_driver\fR. +.PP +The function \fBset_item_init\fR sets a hook to be called at menu-post time and +each time the selected item changes (after the change). +\fBitem_init\fR +returns the current item init hook, if any (\fBNULL\fR if there is no such +hook). +.PP +The function \fBset_item_term\fR sets a hook to be called at menu-unpost time +and each time the selected item changes (before the change). +\fBitem_term\fR +returns the current item term hook, if any (\fBNULL\fR if there is no such +hook). +.PP +The function \fBset_menu_init\fR 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\fR +returns the current menu init hook, if any (\fBNULL\fR if there is no such +hook). +.PP +The function \fBset_menu_term\fR 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\fR returns the current menu term hook, if any (\fBNULL\fR if there +is no such hook). +.SH RETURN VALUE +Routines that return pointers return \fBNULL\fR on error. +Other routines +return one of the following: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.SH SEE ALSO +\fBcurses\fR(3X), \fBmenu\fR(3X). +.SH NOTES +The header file \fB<menu.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V menu library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric +S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_items.3x b/deps/ncurses-6.3/man/menu_items.3x similarity index 81% rename from deps/ncurses-5.9/man/menu_items.3x rename to deps/ncurses-6.3/man/menu_items.3x index a9c5783..7c04243 100644 --- a/deps/ncurses-5.9/man/menu_items.3x +++ b/deps/ncurses-6.3/man/menu_items.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2012,2015 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 * @@ -27,18 +28,20 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_items.3x,v 1.9 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_items.3x,v 1.17 2020/10/24 09:00:06 tom Exp $ .TH menu_items 3X "" .SH NAME -\fBmenu_items\fR \- make and break connections between items and menus +\fBset_menu_items\fR, +\fBmenu_items\fR, +\fBitem_count\fP \- make and break connections between items and menus .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_menu_items(MENU *\fP\fImenu\fP\fB, ITEM **\fP\fIitems\fP\fB);\fP .br -int set_menu_items(MENU *menu, ITEM **items); +\fBITEM **menu_items(const MENU *\fP\fImenu\fP\fB);\fP .br -ITEM **menu_items(const MENU *menu); -.br -int item_count(const MENU *menu); +\fBint item_count(const MENU *\fP\fImenu\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_menu_items\fR changes the item pointer array of the given @@ -47,9 +50,9 @@ The function \fBset_menu_items\fR changes the item pointer array of the given The function \fBmenu_items\fR returns the item array of the given menu. .PP The function \fBitem_count\fR returns the count of items in \fImenu\fR. -.SH RETURN VALUES +.SH RETURN VALUE The function \fBmenu_items\fR returns a pointer (which may be \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP The function \fBitem_count\fR returns \fBERR\fR (the general \fBcurses\fR error return value) if its \fImenu\fP parameter is \fBNULL\fP. @@ -69,7 +72,7 @@ No items are connected to the menu. The menu is already posted. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). . .SH SEE ALSO \fBcurses\fR(3X), \fBmenu\fR(3X). @@ -77,11 +80,12 @@ System error occurred (see \fBerrno\fR). The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .PP The SVr4 menu library documentation specifies the \fBitem_count\fR error value as \-1 (which is the value of \fBERR\fR). .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_mark.3x b/deps/ncurses-6.3/man/menu_mark.3x similarity index 83% rename from deps/ncurses-5.9/man/menu_mark.3x rename to deps/ncurses-6.3/man/menu_mark.3x index 1425154..9601135 100644 --- a/deps/ncurses-5.9/man/menu_mark.3x +++ b/deps/ncurses-6.3/man/menu_mark.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_mark.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_mark.3x,v 1.18 2020/10/24 08:59:04 tom Exp $ .TH menu_mark 3X "" .SH NAME +\fBset_menu_mark\fP, \fBmenu_mark\fR \- get and set the menu mark string .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_menu_mark(MENU *\fP\fImenu\fP\fB, const char *\fP\fImark\fP\fB);\fP .br -int set_menu_mark(MENU *menu, const char *mark); -.br -const char *menu_mark(const MENU *menu); +\fBconst char *menu_mark(const MENU *\fP\fImenu\fP\fB);\fP .br .SH DESCRIPTION In order to make menu selections visible on older terminals without @@ -48,14 +50,15 @@ Calling \fBset_menu_mark\fR with a null menu item will abolish the mark string. 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\fR with +The default string is "\-" (a dash). +Calling \fBset_menu_mark\fR with a non-\fBNULL\fR menu argument will change this default. .PP The function \fBmenu_mark\fR returns the menu's mark string (or \fBNULL\fR if there is none). .SH RETURN VALUE The function \fBmenu_mark\fR returns a pointer (which may be \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP The function \fBset_menu_mark\fR may return the following error codes: .TP 5 @@ -66,15 +69,16 @@ The routine succeeded. Routine detected an incorrect or out-of-range argument. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .SH SEE ALSO \fBcurses\fR(3X), \fBmenu\fR(3X). .SH NOTES The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_new.3x b/deps/ncurses-6.3/man/menu_new.3x similarity index 83% rename from deps/ncurses-5.9/man/menu_new.3x rename to deps/ncurses-6.3/man/menu_new.3x index 1197654..3b04f93 100644 --- a/deps/ncurses-5.9/man/menu_new.3x +++ b/deps/ncurses-6.3/man/menu_new.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_new.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_new.3x,v 1.18 2020/10/24 08:57:51 tom Exp $ .TH menu_new 3X "" .SH NAME -\fBmenu_new\fR \- create and destroy menus +\fBnew_menu\fP, +\fBfree_menu\fR \- create and destroy menus .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBMENU *new_menu(ITEM **\fP\fIitems\fP\fB);\fP .br -MENU *new_menu(ITEM **items); -.br -int free_menu(MENU *menu); +\fBint free_menu(MENU *\fP\fImenu\fP\fB);\fP .br .SH DESCRIPTION The function \fBnew_menu\fR creates a new menu connected to a specified item @@ -46,7 +48,7 @@ The function \fBfree_menu\fR disconnects \fImenu\fR from its item array and frees the storage allocated for the menu. .SH RETURN VALUE The function \fBnew_menu\fR returns \fBNULL\fR on error. -It sets errno according to the function's failure: +It sets \fBerrno\fP according to the function's failure: .TP 5 .B E_NOT_CONNECTED No items are connected to the menu. @@ -60,7 +62,7 @@ The function \fBfree_menu\fR returns one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. @@ -73,8 +75,9 @@ The menu has already been posted. The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_opts.3x b/deps/ncurses-6.3/man/menu_opts.3x similarity index 77% rename from deps/ncurses-5.9/man/menu_opts.3x rename to deps/ncurses-6.3/man/menu_opts.3x index 5f4cb08..99e950e 100644 --- a/deps/ncurses-5.9/man/menu_opts.3x +++ b/deps/ncurses-6.3/man/menu_opts.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2015,2016 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 * @@ -27,20 +28,23 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_opts.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_opts.3x,v 1.18 2020/10/17 23:46:35 tom Exp $ .TH menu_opts 3X "" .SH NAME +\fBset_menu_opts\fP, +\fBmenu_opts_on\fP, +\fBmenu_opts_off\fP, \fBmenu_opts\fR \- set and get menu options .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_menu_opts(MENU *\fP\fImenu\fP\fB, Menu_Options \fP\fIopts\fP\fB);\fP .br -int set_menu_opts(MENU *menu, Menu_Options opts); +\fBMenu_Options menu_opts(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint menu_opts_on(MENU *\fP\fImenu\fP\fB, Menu_Options \fP\fIopts\fP\fB);\fP .br -int menu_opts_on(MENU *menu, Menu_Options opts); -.br -int menu_opts_off(MENU *menu, Menu_Options opts); -.br -Menu_Options menu_opts(const MENU *menu); +\fBint menu_opts_off(MENU *\fP\fImenu\fP\fB, Menu_Options \fP\fIopts\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_menu_opts\fR sets all the given menu's option bits (menu @@ -74,6 +78,12 @@ Move the cursor to within the item name while pattern-matching. O_NONCYCLIC Don't wrap around next-item and previous-item, requests to the other end of the menu. +.TP 5 +O_MOUSE_MENU +If user clicks with the mouse +and it does not fall on the currently active menu, +push \fBKEY_MOUSE\fP and the \fBMEVENT\fP data +back on the queue to allow processing in another part of the calling program. .SH RETURN VALUE Except for \fBmenu_opts\fR, each routine returns one of the following: .TP 5 @@ -81,7 +91,7 @@ Except for \fBmenu_opts\fR, each routine returns one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_POSTED The menu is already posted. @@ -91,8 +101,9 @@ The menu is already posted. The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/menu_pattern.3x b/deps/ncurses-6.3/man/menu_pattern.3x new file mode 100644 index 0000000..a24ffa0 --- /dev/null +++ b/deps/ncurses-6.3/man/menu_pattern.3x @@ -0,0 +1,92 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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. * +.\"*************************************************************************** +.\" +.\" $Id: menu_pattern.3x,v 1.21 2020/10/18 00:41:14 tom Exp $ +.TH menu_pattern 3X "" +.SH NAME +\fBset_menu_pattern\fP, +\fBmenu_pattern\fR \- set and get a menu's pattern buffer +.SH SYNOPSIS +\fB#include <menu.h>\fR +.sp +\fBint set_menu_pattern(MENU *\fP\fImenu\fP\fB, const char *\fP\fIpattern\fP\fB);\fP +.br +\fBchar *menu_pattern(const MENU *\fP\fImenu\fP\fB);\fP +.br +.SH DESCRIPTION +Every menu has an associated pattern match buffer. +As input events that are +printable characters come in, they are appended to this match buffer +and tested for a match, as described in \fBmenu_driver\fR(3X). +.PP +The function \fBset_menu_pattern\fR sets the pattern buffer for the given menu +and tries to find the first matching item. +If it succeeds, that item becomes +current; if not, the current item does not change. +.PP +The function \fBmenu_pattern\fR returns the pattern buffer of the given +\fImenu\fR. +.SH RETURN VALUE +The function \fBmenu_pattern\fR returns a pointer, +which is \fBNULL\fR if the \fImenu\fP parameter is \fBNULL\fP. +Otherwise, it is a pointer to a string which is empty +if no pattern has been set. +It does not set \fBerrno\fP. +.PP +The function \fBset_menu_pattern\fR may return the following error codes: +.TP 5 +.B E_OK +The routine succeeded. +.TP 5 +.B E_BAD_ARGUMENT +Routine detected an incorrect or out-of-range argument. +.TP 5 +.B E_BAD_STATE +Routine was called from an initialization or termination function. +.TP 5 +.B E_NOT_CONNECTED +No items are connected to menu. +.TP 5 +.B E_NO_MATCH +Character failed to match. +.TP 5 +.B E_SYSTEM_ERROR +System error occurred (see \fBerrno\fR(3)). +.SH SEE ALSO +\fBcurses\fR(3X), \fBmenu\fR(3X). +.SH NOTES +The header file \fB<menu.h>\fR automatically includes the header file +\fB<curses.h>\fR. +.SH PORTABILITY +These routines emulate the System V menu library. +They were not supported on +Version 7 or BSD versions. +.SH AUTHORS +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_post.3x b/deps/ncurses-6.3/man/menu_post.3x similarity index 77% rename from deps/ncurses-5.9/man/menu_post.3x rename to deps/ncurses-6.3/man/menu_post.3x index d09d0ca..6f14a45 100644 --- a/deps/ncurses-5.9/man/menu_post.3x +++ b/deps/ncurses-6.3/man/menu_post.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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 * @@ -27,22 +28,26 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_post.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_post.3x,v 1.19 2020/10/17 23:47:21 tom Exp $ .TH menu_post 3X "" .SH NAME -\fBmenu_post\fR \- write or erase menus from associated subwindows +\fBpost_menu\fR, +\fBunpost_menu\fR \- write or erase menus from associated subwindows .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint post_menu(MENU *\fP\fImenu\fP\fB);\fP .br -int post_menu(MENU *menu); -.br -int unpost_menu(MENU *menu); +\fBint unpost_menu(MENU *\fP\fImenu\fP\fB);\fP .br .SH DESCRIPTION -The function \fBpost_menu\fR displays a menu to its associated subwindow. To -trigger physical display of the subwindow, use \fBrefresh\fR or some equivalent +The function \fBpost_menu\fR displays a menu to its associated subwindow. +To +trigger physical display of the subwindow, +use \fBrefresh\fR(3X) or some equivalent \fBcurses\fR routine (the implicit \fBdoupdate\fR triggered by an \fBcurses\fR -input request will do). \fBpost_menu\fR resets the selection status of all items. +input request will do). +\fBpost_menu\fR resets the selection status of all items. .PP The function \fBunpost_menu\fR erases menu from its associated subwindow. .SH RETURN VALUE @@ -52,7 +57,7 @@ These routines return one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. @@ -64,8 +69,8 @@ The menu has already been posted. Routine was called from an initialization or termination function. .TP 5 .B E_NO_ROOM -Menu is too large for its window. You should consider to use -\fBset_menu_format()\fR to solve the problem. +Menu is too large for its window. +You should consider using \fBset_menu_format\fR to solve the problem. .TP 5 .B E_NOT_POSTED The menu has not been posted. @@ -78,8 +83,9 @@ No items are connected to the menu. The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_requestname.3x b/deps/ncurses-6.3/man/menu_requestname.3x similarity index 79% rename from deps/ncurses-5.9/man/menu_requestname.3x rename to deps/ncurses-6.3/man/menu_requestname.3x index d1957a2..d10874c 100644 --- a/deps/ncurses-5.9/man/menu_requestname.3x +++ b/deps/ncurses-6.3/man/menu_requestname.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_requestname.3x,v 1.9 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_requestname.3x,v 1.15 2020/10/18 00:40:34 tom Exp $ .TH menu_requestname 3X "" .SH NAME -\fBmenu_requestname\fR \- handle printable menu request names +\fBmenu_request_by_name\fP, +\fBmenu_request_name\fR \- handle printable menu request names .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBconst char *menu_request_name(int \fP\fIrequest\fP\fB);\fP .br -const char *menu_request_name(int request); -.br -int menu_request_by_name(const char *name); +\fBint menu_request_by_name(const char *\fP\fIname\fP\fB);\fP .br .SH DESCRIPTION The function \fBmenu_request_name\fR returns the printable name of a menu @@ -47,19 +49,21 @@ with the given name and returns its request code. Otherwise E_NO_MATCH is returned. .SH RETURN VALUE \fBmenu_request_name\fR returns \fBNULL\fR on error -and sets errno to \fBE_BAD_ARGUMENT\fR. +and sets \fBerrno\fP to \fBE_BAD_ARGUMENT\fR. .br \fBmenu_request_by_name\fR returns \fBE_NO_MATCH\fR on error. -It does not set errno. +It does not set \fBerrno\fP. .SH SEE ALSO \fBcurses\fR(3X), \fBmenu\fR(3X). .SH NOTES The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines are specific to ncurses. They were not supported on -Version 7, BSD or System V implementations. It is recommended that +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that any code depending on them be conditioned using NCURSES_VERSION. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_spacing.3x b/deps/ncurses-6.3/man/menu_spacing.3x similarity index 77% rename from deps/ncurses-5.9/man/menu_spacing.3x rename to deps/ncurses-6.3/man/menu_spacing.3x index 9e7c3ea..7d67f0b 100644 --- a/deps/ncurses-5.9/man/menu_spacing.3x +++ b/deps/ncurses-6.3/man/menu_spacing.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,40 +28,43 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_spacing.3x,v 1.12 2010/12/04 18:38:55 tom Exp $ +.\" $Id: menu_spacing.3x,v 1.17 2020/10/17 23:48:53 tom Exp $ .TH menu_spacing 3X "" .SH NAME -\fBmenu_spacing\fR \- Control spacing between menu items. +\fBset_menu_spacing\fP, +\fBmenu_spacing\fR \- set and get spacing between menu items. .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_menu_spacing(MENU *\fP\fImenu\fP\fB,\fP + \fBint \fP\fIspc_description\fP\fB,\fP + \fBint \fP\fIspc_rows\fP\fB,\fP + \fBint \fP\fIspc_columns\fP\fB);\fP .br -int set_menu_spacing(MENU *menu, - int spc_description, - int spc_rows, - int spc_columns); -.br -int menu_spacing(const MENU *menu, - int* spc_description, - int* spc_rows, - int* spc_columns); +\fBint menu_spacing(const MENU *\fP\fImenu\fP\fB,\fP + \fBint* \fP\fIspc_description\fP\fB,\fP + \fBint* \fP\fIspc_rows\fP\fB,\fP + \fBint* \fP\fIspc_columns\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_menu_spacing\fR sets the spacing information for the menu. -Its parameter \fBspc_description\fR controls the number of spaces between an item name and an item -description. +Its parameter \fBspc_description\fR controls the number of spaces +between an item name and an item description. It must not be larger than \fBTABSIZE\fR. The menu system puts in the middle of this spacing area the pad character. The remaining parts are filled with spaces. -The \fBspc_rows\fR parameter controls the number of rows that are used for an item. +The \fBspc_rows\fR parameter controls the number of rows +that are used for an item. It must not be larger than 3. The menu system inserts the blank lines between item rows, these lines will contain the pad character in the appropriate positions. -The \fBspc_columns\fR parameter controls the number of blanks between columns of items. -It must not be larger than TABSIZE. -A value of 0 for all the spacing values resets them to the default, which is 1 for all -of them. +The \fBspc_columns\fR parameter controls +the number of blanks between columns of items. +It must not be larger than \fBTABSIZE\fP. +A value of 0 for all the spacing values resets them to the default, +which is 1 for all of them. .br The function \fBmenu_spacing\fR passes back the spacing info for the menu. If a diff --git a/deps/ncurses-5.9/man/menu_userptr.3x b/deps/ncurses-6.3/man/menu_userptr.3x similarity index 83% rename from deps/ncurses-5.9/man/menu_userptr.3x rename to deps/ncurses-6.3/man/menu_userptr.3x index 0455fe3..afc393e 100644 --- a/deps/ncurses-5.9/man/menu_userptr.3x +++ b/deps/ncurses-6.3/man/menu_userptr.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_userptr.3x,v 1.10 2010/12/04 18:40:45 tom Exp $ +.\" $Id: menu_userptr.3x,v 1.16 2020/10/18 00:39:49 tom Exp $ .TH menu_userptr 3X "" .SH NAME +\fBset_menu_userptr\fP, \fBmenu_userptr\fR \- associate application data with a menu item .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_menu_userptr(MENU *\fP\fImenu\fP\fB, void *\fP\fIuserptr\fP\fB);\fP .br -int set_menu_userptr(MENU *menu, void *userptr); -.br -void *menu_userptr(const MENU *menu); +\fBvoid *menu_userptr(const MENU *\fP\fImenu\fP\fB);\fP .br .SH DESCRIPTION Every menu and every menu item has a field that can be used to hold @@ -44,7 +46,7 @@ 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\fR returns a pointer (which may be \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP \fBset_menu_userptr\fP returns \fBE_OK\fP (success). .SH SEE ALSO @@ -53,11 +55,12 @@ It does not set errno. The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .PP The user pointer is a void pointer. We chose not to leave it as a char pointer for SVr4 compatibility. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/menu_win.3x b/deps/ncurses-6.3/man/menu_win.3x similarity index 77% rename from deps/ncurses-5.9/man/menu_win.3x rename to deps/ncurses-6.3/man/menu_win.3x index 774eafa..ae764ec 100644 --- a/deps/ncurses-5.9/man/menu_win.3x +++ b/deps/ncurses-6.3/man/menu_win.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2006,2010 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 * @@ -27,29 +28,31 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: menu_win.3x,v 1.11 2010/12/04 18:38:55 tom Exp $ +.\" $Id: menu_win.3x,v 1.15 2020/10/17 23:50:51 tom Exp $ .TH menu_win 3X "" .SH NAME \fBmenu_win\fR \- make and break menu window and subwindow associations .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_menu_win(MENU *\fP\fImenu\fP\fB, WINDOW *\fP\fIwin\fP\fB);\fP .br -int set_menu_win(MENU *menu, WINDOW *win); +\fBWINDOW *menu_win(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint set_menu_sub(MENU *\fP\fImenu\fP\fB, WINDOW *\fP\fIsub\fP\fB);\fP .br -WINDOW *menu_win(const MENU *menu); -.br -int set_menu_sub(MENU *menu, WINDOW *sub); -.br -WINDOW *menu_sub(const MENU *menu); -.br -int scale_menu(const MENU *menu, int *rows, int *columns); +\fBWINDOW *menu_sub(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint scale_menu(const MENU *\fP\fImenu, int *\fP\fIrows\fP\fB, int *\fP\fIcolumns);\fP .br .SH DESCRIPTION -Every menu has an associated pair of \fBcurses\fR windows. The menu window +Every menu has an associated pair of \fBcurses\fR windows. +The menu window displays any title and border associated with the window; the menu subwindow displays the items of the menu that are currently available for selection. .PP -The first four functions get and set those windows. It is not necessary to set +The first four functions get and set those windows. +It is not necessary to set either window; by default, the driver code uses \fBstdscr\fR for both. .PP In the \fBset_\fR functions, window argument of \fBNULL\fR is treated as though @@ -59,14 +62,15 @@ to change the system default menu window or subwindow. The function \fBscale_menu\fR returns the minimum size required for the subwindow of \fImenu\fR. .SH RETURN VALUE -Routines that return pointers return \fBNULL\fR on error. Routines that return +Routines that return pointers return \fBNULL\fR on error. +Routines that return an integer return one of the following error codes: .TP 5 .B E_OK The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. @@ -84,8 +88,9 @@ No items are connected to the menu. The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/mitem_current.3x b/deps/ncurses-6.3/man/mitem_current.3x similarity index 78% rename from deps/ncurses-5.9/man/mitem_current.3x rename to deps/ncurses-6.3/man/mitem_current.3x index 86c9b47..4cd37b6 100644 --- a/deps/ncurses-5.9/man/mitem_current.3x +++ b/deps/ncurses-6.3/man/mitem_current.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2006,2010 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 * @@ -27,39 +28,42 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_current.3x,v 1.13 2010/12/04 18:40:45 tom Exp $ +.\" $Id: mitem_current.3x,v 1.20 2020/10/18 00:39:06 tom Exp $ .TH mitem_current 3X "" .SH NAME \fBmitem_current\fR \- set and get current_menu_item .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_current_item(MENU *\fP\fImenu\fP\fB, ITEM *\fP\fIitem\fP\fB);\fP .br -int set_current_item(MENU *menu, const ITEM *item); +\fBITEM *current_item(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint set_top_row(MENU *\fP\fImenu\fP\fB, int \fP\fIrow\fP\fB);\fP .br -ITEM *current_item(const MENU *menu); -.br -int set_top_row(MENU *menu, int row); -.br -int top_row(const MENU *menu); -.br -int item_index(const ITEM *item); +\fBint top_row(const MENU *\fP\fImenu\fP\fB);\fP +.sp +\fBint item_index(const ITEM *\fP\fIitem\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_current_item\fR sets the current item (the item on which -the menu cursor is positioned). \fBcurrent_item\fR returns a pointer to the +the menu cursor is positioned). +\fBcurrent_item\fR returns a pointer to the current item in the given menu. .PP The function \fBset_top_row\fR sets the top row of the menu to show the given row (the top row is initially 0, and is reset to this value whenever the -\fBO_ROWMAJOR\fR option is toggled). The item leftmost on the given row -becomes current. The function \fBtop_row\fR returns the number of the top menu +\fBO_ROWMAJOR\fR option is toggled). +The item leftmost on the given row +becomes current. +The function \fBtop_row\fR returns the number of the top menu row being displayed. .PP The function \fBitem_index\fR returns the (zero-origin) index of \fIitem\fR in the menu's item pointer list. .SH RETURN VALUE \fBcurrent_item\fR returns a pointer (which may be \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP \fBtop_row\fR and \fBitem_index\fR return \fBERR\fR (the general \fBcurses\fR error value) if their \fImenu\fP parameter is \fBNULL\fP. @@ -79,18 +83,19 @@ Routine was called from an initialization or termination function. No items are connected to the menu. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .SH SEE ALSO \fBcurses\fR(3X), \fBmenu\fR(3X). .SH NOTES The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .PP The SVr4 menu library documentation specifies the \fBtop_row\fR and \fBindex_item\fR error value as \-1 (which is the value of \fBERR\fR). .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/mitem_name.3x b/deps/ncurses-6.3/man/mitem_name.3x similarity index 83% rename from deps/ncurses-5.9/man/mitem_name.3x rename to deps/ncurses-6.3/man/mitem_name.3x index ff879e6..bf50cfd 100644 --- a/deps/ncurses-5.9/man/mitem_name.3x +++ b/deps/ncurses-6.3/man/mitem_name.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,16 +28,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_name.3x,v 1.8 2010/12/04 18:40:45 tom Exp $ +.\" $Id: mitem_name.3x,v 1.14 2020/10/18 00:37:48 tom Exp $ .TH mitem_name 3X "" .SH NAME -\fBmitem_name\fR \- get menu item name and description fields +\fBitem_name\fR, +\fBitem_description\fR \- get menu item name and description fields .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBconst char *item_name(const ITEM *\fP\fIitem\fP\fB);\fP .br -const char *item_name(const ITEM *item); -.br -const char *item_description(const ITEM *item); +\fBconst char *item_description(const ITEM *\fP\fIitem\fP\fB);\fP .br .SH DESCRIPTION The function \fBitem_name\fR returns the name part of the given item. @@ -45,7 +47,7 @@ The function \fBitem_description\fR returns the description part of the given item. .SH RETURN VALUE These routines return a pointer (which may be \fBNULL\fR). -They do not set errno. +They do not set \fBerrno\fP. .SH SEE ALSO \fBcurses\fR(3X), \fBmenu\fR(3X). .SH NOTES @@ -55,5 +57,5 @@ The header file \fB<menu.h>\fR automatically includes the header file These routines emulate the System V menu library. They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/mitem_new.3x b/deps/ncurses-6.3/man/mitem_new.3x similarity index 76% rename from deps/ncurses-5.9/man/mitem_new.3x rename to deps/ncurses-6.3/man/mitem_new.3x index 8e2449e..ce52044 100644 --- a/deps/ncurses-5.9/man/mitem_new.3x +++ b/deps/ncurses-6.3/man/mitem_new.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,30 +28,35 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_new.3x,v 1.12 2010/12/04 18:40:45 tom Exp $ +.\" $Id: mitem_new.3x,v 1.19 2020/10/18 00:37:03 tom Exp $ .TH mitem_new 3X "" .SH NAME -\fBmitem_new\fR \- create and destroy menu items +\fBnew_item\fP, +\fBfree_item\fR \- create and destroy menu items .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBITEM *new_item(const char *\fP\fIname\fP\fB, const char *\fP\fIdescription\fP\fB);\fP .br -ITEM *new_item(const char *name, const char *description); -.br -int free_item(ITEM *item); +\fBint free_item(ITEM *\fP\fIitem\fP\fB);\fP .br .SH DESCRIPTION The function \fBnew_item\fR allocates a new item and initializes it from the -\fBname\fR and \fBdescription\fR pointers. Please notice that the item stores -only the pointers to the name and description. Those pointers must be valid -during the lifetime of the item. So you should be very careful with names +\fBname\fR and \fBdescription\fR pointers. +Please notice that the item stores +only the pointers to the name and description. +Those pointers must be valid +during the lifetime of the item. +So you should be very careful with names or descriptions allocated on the stack of some routines. .br -The function \fBfree_item\fR de-allocates an item. Please notice that it +The function \fBfree_item\fR de-allocates an item. +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\fR returns \fBNULL\fR on error. -It sets errno according to the function's failure: +It sets \fBerrno\fP according to the function's failure: .TP 5 .B E_BAD_ARGUMENT Routine detected an incorrect or out-of-range argument. @@ -70,15 +76,16 @@ Routine detected an incorrect or out-of-range argument. Item is connected to a menu. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .SH SEE ALSO \fBcurses\fR(3X), \fBmenu\fR(3X). .SH NOTES The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/mitem_opts.3x b/deps/ncurses-6.3/man/mitem_opts.3x similarity index 76% rename from deps/ncurses-5.9/man/mitem_opts.3x rename to deps/ncurses-6.3/man/mitem_opts.3x index 37ea552..105f9de 100644 --- a/deps/ncurses-5.9/man/mitem_opts.3x +++ b/deps/ncurses-6.3/man/mitem_opts.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,20 +28,23 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_opts.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: mitem_opts.3x,v 1.16 2020/10/17 23:52:26 tom Exp $ .TH mitem_opts 3X "" .SH NAME -\fBmitem_opts\fR \- set and get menu item options +\fBset_item_opts\fP, +\fBitem_opts_on\fP, +\fBitem_opts_off\fP, +\fBitem_opts\fR \- set and get menu item options .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_item_opts(ITEM *\fP\fIitem\fP\fB, Item_Options \fP\fIopts\fP\fB);\fP .br -int set_item_opts(ITEM *item, Item_Options opts); +\fBItem_Options item_opts(const ITEM *\fP\fIitem\fP\fB);\fP +.sp +\fBint item_opts_on(ITEM *\fP\fIitem\fP\fB, Item_Options \fP\fIopts\fP\fB);\fP .br -int item_opts_on(ITEM *item, Item_Options opts); -.br -int item_opts_off(ITEM *item, Item_Options opts); -.br -Item_Options item_opts(const ITEM *item); +\fBint item_opts_off(ITEM *\fP\fIitem\fP\fB, Item_Options \fP\fIopts\fP\fB);\fP .br .SH DESCRIPTION The function \fBset_item_opts\fR sets all the given item's option bits (menu @@ -55,7 +59,8 @@ others alone. The function \fBitem_opts\fR returns the item's current option bits. .PP There is only one defined option bit mask, \fBO_SELECTABLE\fR. When this is -on, the item may be selected during menu processing. This option defaults +on, the item may be selected during menu processing. +This option defaults to on. .SH RETURN VALUE Except for \fBitem_opts\fR, each routine returns one of the following: @@ -64,15 +69,16 @@ Except for \fBitem_opts\fR, each routine returns one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .SH SEE ALSO \fBcurses\fR(3X), \fBmenu\fR(3X). .SH NOTES The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/mitem_userptr.3x b/deps/ncurses-6.3/man/mitem_userptr.3x similarity index 79% rename from deps/ncurses-5.9/man/mitem_userptr.3x rename to deps/ncurses-6.3/man/mitem_userptr.3x index 7b51ec5..3c3feb2 100644 --- a/deps/ncurses-5.9/man/mitem_userptr.3x +++ b/deps/ncurses-6.3/man/mitem_userptr.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -27,24 +28,26 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_userptr.3x,v 1.11 2010/12/04 18:40:45 tom Exp $ +.\" $Id: mitem_userptr.3x,v 1.17 2020/10/18 00:36:16 tom Exp $ .TH mitem_userptr 3X "" .SH NAME -\fBmitem_userptr\fR \- associate application data with a menu item +\fBset_item_userptr\fP, +\fBitem_userptr\fR \- associate application data with a menu item .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_item_userptr(ITEM *\fP\fIitem\fP\fB, void *\fP\fIuserptr\fP\fB);\fP .br -int set_item_userptr(ITEM *item, void *userptr); -.br -void *item_userptr(const ITEM *item); +\fBvoid *item_userptr(const ITEM *\fP\fIitem\fP\fB);\fP .br .SH DESCRIPTION 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 +(that is, the menu-driver code leaves it alone). +These functions get and set that field. .SH RETURN VALUE The function \fBitem_userptr\fR returns a pointer (possibly \fBNULL\fR). -It does not set errno. +It does not set \fBerrno\fP. .PP The \fBset_item_userptr\fP always returns \fBE_OK\fP (success). . @@ -54,11 +57,12 @@ The \fBset_item_userptr\fP always returns \fBE_OK\fP (success). The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .PP The user pointer is a void pointer. We chose not to leave it as a char pointer for SVr4 compatibility. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/mitem_value.3x b/deps/ncurses-6.3/man/mitem_value.3x similarity index 83% rename from deps/ncurses-5.9/man/mitem_value.3x rename to deps/ncurses-6.3/man/mitem_value.3x index 57cfc53..3dc20f1 100644 --- a/deps/ncurses-5.9/man/mitem_value.3x +++ b/deps/ncurses-6.3/man/mitem_value.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -26,16 +27,17 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_value.3x,v 1.10 2010/12/04 18:40:45 tom Exp $ +.\" $Id: mitem_value.3x,v 1.15 2020/10/17 23:53:24 tom Exp $ .TH mitem_value 3X "" .SH NAME -\fBmitem_value\fR \- set and get menu item values +\fBset_item_value\fP, +\fBitem_value\fP \- set and get menu item values .SH SYNOPSIS \fB#include <menu.h>\fR +.sp +\fBint set_item_value(ITEM *\fP\fIitem\fP\fB, bool \fP\fIvalue\fP\fB);\fP .br -int set_item_value(ITEM *item, bool value); -.br -bool item_value(const ITEM *item); +\fBbool item_value(const ITEM *\fP\fIitem\fP\fB);\fP .br .SH DESCRIPTION If you turn off the menu option \fBO_ONEVALUE\fR (e.g., with @@ -53,7 +55,7 @@ The function \fBset_item_value\fR returns one of the following: The routine succeeded. .TP 5 .B E_SYSTEM_ERROR -System error occurred (see \fBerrno\fR). +System error occurred (see \fBerrno\fR(3)). .TP 5 .B E_REQUEST_DENIED The menu driver could not process the request. @@ -63,8 +65,9 @@ The menu driver could not process the request. The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-5.9/man/mitem_visible.3x b/deps/ncurses-6.3/man/mitem_visible.3x similarity index 86% rename from deps/ncurses-5.9/man/mitem_visible.3x rename to deps/ncurses-6.3/man/mitem_visible.3x index 4ff9405..5e6d168 100644 --- a/deps/ncurses-5.9/man/mitem_visible.3x +++ b/deps/ncurses-6.3/man/mitem_visible.3x @@ -1,6 +1,7 @@ '\" t .\"*************************************************************************** -.\" Copyright (c) 1998,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998,2010 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 * @@ -27,14 +28,14 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: mitem_visible.3x,v 1.7 2010/12/04 18:40:45 tom Exp $ +.\" $Id: mitem_visible.3x,v 1.10 2020/10/17 23:53:55 tom Exp $ .TH mitem_visible 3X "" .SH NAME \fBmitem_visible\fR \- check visibility of a menu item .SH SYNOPSIS \fB#include <menu.h>\fR -.br -bool item_visible(const ITEM *item); +.sp +\fBbool item_visible(const ITEM *\fP\fIitem\fP\fB);\fP .br .SH DESCRIPTION A menu item is visible when it is in the portion of a posted menu that @@ -46,8 +47,9 @@ portion will be smaller than the whole menu). The header file \fB<menu.h>\fR automatically includes the header file \fB<curses.h>\fR. .SH PORTABILITY -These routines emulate the System V menu library. They were not supported on +These routines emulate the System V menu library. +They were not supported on Version 7 or BSD versions. .SH AUTHORS -Juergen Pfeifer. Manual pages and adaptation for new curses by Eric -S. Raymond. +Juergen Pfeifer. +Manual pages and adaptation for new curses by Eric S. Raymond. diff --git a/deps/ncurses-6.3/man/ncurses.3x b/deps/ncurses-6.3/man/ncurses.3x new file mode 100644 index 0000000..fb12794 --- /dev/null +++ b/deps/ncurses-6.3/man/ncurses.3x @@ -0,0 +1,1557 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: ncurses.3x,v 1.153 2021/08/22 17:17:16 tom Exp $ +.hy 0 +.TH ncurses 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.ds n 5 +.ds d @TERMINFO@ +.SH NAME +\fBncurses\fR \- CRT screen handling and optimization package +.SH SYNOPSIS +\fB#include <curses.h>\fR +.br +.SH DESCRIPTION +The \fBncurses\fR library routines give the user a terminal-independent method +of updating character screens with reasonable optimization. +This implementation is \*(``new curses\*('' (ncurses) and +is the approved replacement for +4.4BSD classic curses, which has been discontinued. +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). +.PP +The \fBncurses\fR library emulates the curses library of +System V Release 4 UNIX, +and XPG4 (X/Open Portability Guide) curses (also known as XSI curses). +XSI stands for X/Open System Interfaces Extension. +The \fBncurses\fR library is freely redistributable in source form. +Differences from the SVr4 +curses are summarized under the +\fBEXTENSIONS\fP and \fBPORTABILITY\fP sections below and +described in detail in the respective +\fBEXTENSIONS\fP, \fBPORTABILITY\fP and \fBBUGS\fP sections +of individual man pages. +.PP +The \fBncurses\fR library also provides many useful extensions, +i.e., features which cannot be implemented by a simple add-on library +but which require access to the internals of the library. +.PP +A program using these routines must be linked with the \fB\-lncurses\fR option, +or (if it has been generated) with the debugging library \fB\-lncurses_g\fR. +(Your system integrator may also have installed these libraries under +the names \fB\-lcurses\fR and \fB\-lcurses_g\fR.) +The ncurses_g library generates trace logs (in a file called \*(``trace\*('' in the +current directory) that describe curses actions. +See also the section on \fBALTERNATE CONFIGURATIONS\fP. +.PP +The \fBncurses\fR package supports: overall screen, window and pad +manipulation; output to windows and pads; reading terminal input; control over +terminal and \fBcurses\fR input and output options; environment query +routines; color manipulation; use of soft label keys; terminfo capabilities; +and access to low-level terminal-manipulation routines. +.SS Initialization +.PP +The library uses the locale which the calling program has initialized. +That is normally done with \fBsetlocale\fP: +.NS +\fBsetlocale(LC_ALL, "");\fP +.NE +.PP +If the locale is not initialized, +the library assumes that characters are printable as in ISO\-8859\-1, +to work with certain legacy programs. +You should initialize the locale and not rely on specific details of +the library when the locale has not been setup. +.PP +The function \fBinitscr\fR or \fBnewterm\fR +must be called to initialize the library +before any of the other routines that deal with windows +and screens are used. +The routine \fBendwin\fR(3X) must be called before exiting. +.PP +To get character-at-a-time input without echoing (most +interactive, screen oriented programs want this), the following +sequence should be used: +.NS +\fBinitscr(); cbreak(); noecho();\fR +.NE +.PP +Most programs would additionally use the sequence: +.NS +\fBintrflush(stdscr, FALSE);\fR +\fBkeypad(stdscr, TRUE);\fR +.NE +.PP +Before a \fBcurses\fR program is run, the tab stops of the terminal +should be set and its initialization strings, if defined, must be output. +This can be done by executing the \fB@TPUT@ init\fR command +after the shell environment variable \fBTERM\fR has been exported. +\fB@TSET@(1)\fR is usually responsible for doing this. +[See \fBterminfo\fR(\*n) for further details.] +.SS Datatypes +.PP +The \fBncurses\fR library permits manipulation of data structures, +called \fIwindows\fR, which can be thought of as two-dimensional +arrays of characters representing all or part of a CRT screen. +A default window called \fBstdscr\fR, which is the size of the terminal +screen, is supplied. +Others may be created with \fBnewwin\fR. +.PP +Note that \fBcurses\fR does not handle overlapping windows, that's done by +the \fBpanel\fR(3X) library. +This means that you can either use +\fBstdscr\fR or divide the screen into tiled windows and not using +\fBstdscr\fR at all. +Mixing the two will result in unpredictable, and undesired, effects. +.PP +Windows are referred to by variables declared as \fBWINDOW *\fR. +These data structures are manipulated with routines described here and +elsewhere in the \fBncurses\fR manual pages. +Among those, the most basic +routines are \fBmove\fR and \fBaddch\fR. +More general versions of +these routines are included with names beginning with \fBw\fR, +allowing the user to specify a window. +The routines not beginning +with \fBw\fR affect \fBstdscr\fR. +.PP +After using routines to manipulate a window, \fBrefresh\fR(3X) is called, +telling \fBcurses\fR to make the user's CRT screen look like +\fBstdscr\fR. +The characters in a window are actually of type +\fBchtype\fR, (character and attribute data) so that other information +about the character may also be stored with each character. +.PP +Special windows called \fIpads\fR may also be manipulated. +These are windows +which are not constrained to the size of the screen and whose contents need not +be completely displayed. +See \fBcurs_pad\fR(3X) for more information. +.PP +In addition to drawing characters on the screen, video 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. +Line drawing characters may be specified to be output. +On input, \fBcurses\fR is also able to translate arrow and function keys that +transmit escape sequences into single values. +The video attributes, line +drawing characters, and input values use names, defined in \fB<curses.h>\fR, +such as \fBA_REVERSE\fR, \fBACS_HLINE\fR, and \fBKEY_LEFT\fR. +.SS Environment variables +.PP +If the environment variables \fBLINES\fR and \fBCOLUMNS\fR are set, or if the +program is executing in a window environment, line and column information in +the environment will override information read by \fIterminfo\fR. +This would affect a program running in an AT&T 630 layer, +for example, where the size of a +screen is changeable (see \fBENVIRONMENT\fR). +.PP +If the environment variable \fBTERMINFO\fR is defined, any program using +\fBcurses\fR checks for a local terminal definition before checking in the +standard place. +For example, if \fBTERM\fR is set to \fBatt4424\fR, then the +compiled terminal definition is found in +.NS +\fB\*d/a/att4424\fR. +.NE +.PP +(The \fBa\fR is copied from the first letter of \fBatt4424\fR to avoid +creation of huge directories.) However, if \fBTERMINFO\fR is set to +\fB$HOME/myterms\fR, \fBcurses\fR first checks +.NS +\fB$HOME/myterms/a/att4424\fR, +.NE +.PP +and if that fails, it then checks +.NS +\fB\*d/a/att4424\fR. +.NE +.PP +This is useful for developing experimental definitions or when write +permission in \fB\*d\fR is not available. +.PP +The integer variables \fBLINES\fR and \fBCOLS\fR are defined in +\fB<curses.h>\fR and will be filled in by \fBinitscr\fR with the size of the +screen. +The constants \fBTRUE\fR and \fBFALSE\fR have the values \fB1\fR and +\fB0\fR, respectively. +.PP +The \fBcurses\fR routines also define the \fBWINDOW *\fR variable \fBcurscr\fR +which is used for certain low-level operations like clearing and redrawing a +screen containing garbage. +The \fBcurscr\fR can be used in only a few routines. +.\" +.SS Routine and Argument Names +Many \fBcurses\fR routines have two or more versions. +The routines prefixed with \fBw\fR require a window argument. +The routines prefixed with \fBp\fR require a pad argument. +Those without a prefix generally use \fBstdscr\fR. +.PP +The routines prefixed with \fBmv\fR require a \fIy\fR and \fIx\fR +coordinate to move to before performing the appropriate action. +The \fBmv\fR routines imply a call to \fBmove\fR before the call to the +other routine. +The coordinate \fIy\fR always refers to the row (of +the window), and \fIx\fR always refers to the column. +The upper left-hand corner is always (0,0), not (1,1). +.PP +The routines prefixed with \fBmvw\fR take both a window argument and +\fIx\fR and \fIy\fR coordinates. +The window argument is always specified before the coordinates. +.PP +In each case, \fIwin\fR is the window affected, and \fIpad\fR is the +pad affected; \fIwin\fR and \fIpad\fR are always pointers to type +\fBWINDOW\fR. +.PP +Option setting routines require a Boolean flag \fIbf\fR with the value +\fBTRUE\fR or \fBFALSE\fR; \fIbf\fR is always of type \fBbool\fR. +Most of the data types used in the library routines, +such as \fBWINDOW\fR, \fBSCREEN\fR, \fBbool\fR, and \fBchtype\fR +are defined in \fB<curses.h>\fR. +Types used for the terminfo routines such as +\fBTERMINAL\fR are defined in \fB<term.h>\fR. +.PP +This manual page describes functions which may appear in any configuration +of the library. +There are two common configurations of the library: +.RS 3 +.TP 5 +.I ncurses +the \*(``normal\*('' library, which handles 8-bit characters. +The normal (8-bit) library stores characters combined with attributes +in \fBchtype\fP data. +.IP +Attributes alone (no corresponding character) may be stored in \fBchtype\fP +or the equivalent \fBattr_t\fP data. +In either case, the data is stored in something like an integer. +.IP +Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBchtype\fP. +.TP 5 +.I ncursesw +the so-called \*(``wide\*('' library, which handles multibyte characters +(see the section on \fBALTERNATE CONFIGURATIONS\fP). +The \*(``wide\*('' library includes all of the calls +from the \*(``normal\*('' library. +It adds about one third more calls using data types which store +multibyte characters: +.RS 5 +.TP 5 +.B cchar_t +corresponds to \fBchtype\fP. +However it is a structure, because more data is stored than can fit into +an integer. +The characters are large enough to require a full integer value \- and there +may be more than one character per cell. +The video attributes and color are stored in separate fields of the structure. +.IP +Each cell (row and column) in a \fBWINDOW\fP is stored as a \fBcchar_t\fP. +.IP +The \fBsetcchar\fP(3X) and \fBgetcchar\fP(3X) +functions store and retrieve the data from +a \fBcchar_t\fP structure. +.TP 5 +.B wchar_t +stores a \*(``wide\*('' character. +Like \fBchtype\fP, this may be an integer. +.TP 5 +.B wint_t +stores a \fBwchar_t\fP or \fBWEOF\fP \- not the same, though both may have +the same size. +.RE +.IP +The \*(``wide\*('' library provides new functions which are analogous to +functions in the \*(``normal\*('' library. +There is a naming convention which relates many of the normal/wide variants: +a \*(``_w\*('' is inserted into the name. +For example, \fBwaddch\fP becomes \fBwadd_wch\fP. +.RE +.PP +.\" +.SS Routine Name Index +The following table lists the \fBcurses\fR routines provided in +the \*(``normal\*('' and \*(``wide\*('' libraries and the names of +the manual pages on which they are described. +Routines flagged with \*(``*\*('' +are ncurses-specific, not described by XPG4 or present in SVr4. +.PP +.TS +center tab(/); +l l +l l . +\fBcurses\fR Routine Name/Manual Page Name += +COLOR_PAIR/\fBcurs_color\fR(3X) +PAIR_NUMBER/\fBcurs_attr\fR(3X) +add_wch/\fBcurs_add_wch\fR(3X) +add_wchnstr/\fBcurs_add_wchstr\fR(3X) +add_wchstr/\fBcurs_add_wchstr\fR(3X) +addch/\fBcurs_addch\fR(3X) +addchnstr/\fBcurs_addchstr\fR(3X) +addchstr/\fBcurs_addchstr\fR(3X) +addnstr/\fBcurs_addstr\fR(3X) +addnwstr/\fBcurs_addwstr\fR(3X) +addstr/\fBcurs_addstr\fR(3X) +addwstr/\fBcurs_addwstr\fR(3X) +alloc_pair/\fBnew_pair\fR(3X)* +assume_default_colors/\fBdefault_colors\fR(3X)* +attr_get/\fBcurs_attr\fR(3X) +attr_off/\fBcurs_attr\fR(3X) +attr_on/\fBcurs_attr\fR(3X) +attr_set/\fBcurs_attr\fR(3X) +attroff/\fBcurs_attr\fR(3X) +attron/\fBcurs_attr\fR(3X) +attrset/\fBcurs_attr\fR(3X) +baudrate/\fBcurs_termattrs\fR(3X) +beep/\fBcurs_beep\fR(3X) +bkgd/\fBcurs_bkgd\fR(3X) +bkgdset/\fBcurs_bkgd\fR(3X) +bkgrnd/\fBcurs_bkgrnd\fR(3X) +bkgrndset/\fBcurs_bkgrnd\fR(3X) +border/\fBcurs_border\fR(3X) +border_set/\fBcurs_border_set\fR(3X) +box/\fBcurs_border\fR(3X) +box_set/\fBcurs_border_set\fR(3X) +can_change_color/\fBcurs_color\fR(3X) +cbreak/\fBcurs_inopts\fR(3X) +chgat/\fBcurs_attr\fR(3X) +clear/\fBcurs_clear\fR(3X) +clearok/\fBcurs_outopts\fR(3X) +clrtobot/\fBcurs_clear\fR(3X) +clrtoeol/\fBcurs_clear\fR(3X) +color_content/\fBcurs_color\fR(3X) +color_set/\fBcurs_attr\fR(3X) +copywin/\fBcurs_overlay\fR(3X) +curs_set/\fBcurs_kernel\fR(3X) +curses_trace/\fBcurs_trace\fR(3X)* +curses_version/\fBcurs_extend\fR(3X)* +def_prog_mode/\fBcurs_kernel\fR(3X) +def_shell_mode/\fBcurs_kernel\fR(3X) +define_key/\fBdefine_key\fR(3X)* +del_curterm/\fBcurs_terminfo\fR(3X) +delay_output/\fBcurs_util\fR(3X) +delch/\fBcurs_delch\fR(3X) +deleteln/\fBcurs_deleteln\fR(3X) +delscreen/\fBcurs_initscr\fR(3X) +delwin/\fBcurs_window\fR(3X) +derwin/\fBcurs_window\fR(3X) +doupdate/\fBcurs_refresh\fR(3X) +dupwin/\fBcurs_window\fR(3X) +echo/\fBcurs_inopts\fR(3X) +echo_wchar/\fBcurs_add_wch\fR(3X) +echochar/\fBcurs_addch\fR(3X) +endwin/\fBcurs_initscr\fR(3X) +erase/\fBcurs_clear\fR(3X) +erasechar/\fBcurs_termattrs\fR(3X) +erasewchar/\fBcurs_termattrs\fR(3X) +exit_curses/\fBcurs_memleaks\fR(3X)* +exit_terminfo/\fBcurs_memleaks\fR(3X)* +extended_color_content/\fBcurs_color\fR(3X)* +extended_pair_content/\fBcurs_color\fR(3X)* +extended_slk_color/\fBcurs_slk\fR(3X)* +filter/\fBcurs_util\fR(3X) +find_pair/\fBnew_pair\fR(3X)* +flash/\fBcurs_beep\fR(3X) +flushinp/\fBcurs_util\fR(3X) +free_pair/\fBnew_pair\fR(3X)* +get_wch/\fBcurs_get_wch\fR(3X) +get_wstr/\fBcurs_get_wstr\fR(3X) +getattrs/\fBcurs_attr\fR(3X) +getbegx/\fBcurs_legacy\fR(3X)* +getbegy/\fBcurs_legacy\fR(3X)* +getbegyx/\fBcurs_getyx\fR(3X) +getbkgd/\fBcurs_bkgd\fR(3X) +getbkgrnd/\fBcurs_bkgrnd\fR(3X) +getcchar/\fBcurs_getcchar\fR(3X) +getch/\fBcurs_getch\fR(3X) +getcurx/\fBcurs_legacy\fR(3X)* +getcury/\fBcurs_legacy\fR(3X)* +getmaxx/\fBcurs_legacy\fR(3X)* +getmaxy/\fBcurs_legacy\fR(3X)* +getmaxyx/\fBcurs_getyx\fR(3X) +getmouse/\fBcurs_mouse\fR(3X)* +getn_wstr/\fBcurs_get_wstr\fR(3X) +getnstr/\fBcurs_getstr\fR(3X) +getparx/\fBcurs_legacy\fR(3X)* +getpary/\fBcurs_legacy\fR(3X)* +getparyx/\fBcurs_getyx\fR(3X) +getstr/\fBcurs_getstr\fR(3X) +getsyx/\fBcurs_kernel\fR(3X) +getwin/\fBcurs_util\fR(3X) +getyx/\fBcurs_getyx\fR(3X) +halfdelay/\fBcurs_inopts\fR(3X) +has_colors/\fBcurs_color\fR(3X) +has_ic/\fBcurs_termattrs\fR(3X) +has_il/\fBcurs_termattrs\fR(3X) +has_key/\fBcurs_getch\fR(3X)* +has_mouse/\fBcurs_mouse\fR(3X)* +hline/\fBcurs_border\fR(3X) +hline_set/\fBcurs_border_set\fR(3X) +idcok/\fBcurs_outopts\fR(3X) +idlok/\fBcurs_outopts\fR(3X) +immedok/\fBcurs_outopts\fR(3X) +in_wch/\fBcurs_in_wch\fR(3X) +in_wchnstr/\fBcurs_in_wchstr\fR(3X) +in_wchstr/\fBcurs_in_wchstr\fR(3X) +inch/\fBcurs_inch\fR(3X) +inchnstr/\fBcurs_inchstr\fR(3X) +inchstr/\fBcurs_inchstr\fR(3X) +init_color/\fBcurs_color\fR(3X) +init_extended_color/\fBcurs_color\fR(3X)* +init_extended_pair/\fBcurs_color\fR(3X)* +init_pair/\fBcurs_color\fR(3X) +initscr/\fBcurs_initscr\fR(3X) +innstr/\fBcurs_instr\fR(3X) +innwstr/\fBcurs_inwstr\fR(3X) +ins_nwstr/\fBcurs_ins_wstr\fR(3X) +ins_wch/\fBcurs_ins_wch\fR(3X) +ins_wstr/\fBcurs_ins_wstr\fR(3X) +insch/\fBcurs_insch\fR(3X) +insdelln/\fBcurs_deleteln\fR(3X) +insertln/\fBcurs_deleteln\fR(3X) +insnstr/\fBcurs_insstr\fR(3X) +insstr/\fBcurs_insstr\fR(3X) +instr/\fBcurs_instr\fR(3X) +intrflush/\fBcurs_inopts\fR(3X) +inwstr/\fBcurs_inwstr\fR(3X) +is_cleared/\fBcurs_opaque\fR(3X)* +is_idcok/\fBcurs_opaque\fR(3X)* +is_idlok/\fBcurs_opaque\fR(3X)* +is_immedok/\fBcurs_opaque\fR(3X)* +is_keypad/\fBcurs_opaque\fR(3X)* +is_leaveok/\fBcurs_opaque\fR(3X)* +is_linetouched/\fBcurs_touch\fR(3X) +is_nodelay/\fBcurs_opaque\fR(3X)* +is_notimeout/\fBcurs_opaque\fR(3X)* +is_pad/\fBcurs_opaque\fR(3X)* +is_scrollok/\fBcurs_opaque\fR(3X)* +is_subwin/\fBcurs_opaque\fR(3X)* +is_syncok/\fBcurs_opaque\fR(3X)* +is_term_resized/\fBresizeterm\fR(3X)* +is_wintouched/\fBcurs_touch\fR(3X) +isendwin/\fBcurs_initscr\fR(3X) +key_defined/\fBkey_defined\fR(3X)* +key_name/\fBcurs_util\fR(3X) +keybound/\fBkeybound\fR(3X)* +keyname/\fBcurs_util\fR(3X) +keyok/\fBkeyok\fR(3X)* +keypad/\fBcurs_inopts\fR(3X) +killchar/\fBcurs_termattrs\fR(3X) +killwchar/\fBcurs_termattrs\fR(3X) +leaveok/\fBcurs_outopts\fR(3X) +longname/\fBcurs_termattrs\fR(3X) +mcprint/\fBcurs_print\fR(3X)* +meta/\fBcurs_inopts\fR(3X) +mouse_trafo/\fBcurs_mouse\fR(3X)* +mouseinterval/\fBcurs_mouse\fR(3X)* +mousemask/\fBcurs_mouse\fR(3X)* +move/\fBcurs_move\fR(3X) +mvadd_wch/\fBcurs_add_wch\fR(3X) +mvadd_wchnstr/\fBcurs_add_wchstr\fR(3X) +mvadd_wchstr/\fBcurs_add_wchstr\fR(3X) +mvaddch/\fBcurs_addch\fR(3X) +mvaddchnstr/\fBcurs_addchstr\fR(3X) +mvaddchstr/\fBcurs_addchstr\fR(3X) +mvaddnstr/\fBcurs_addstr\fR(3X) +mvaddnwstr/\fBcurs_addwstr\fR(3X) +mvaddstr/\fBcurs_addstr\fR(3X) +mvaddwstr/\fBcurs_addwstr\fR(3X) +mvchgat/\fBcurs_attr\fR(3X) +mvcur/\fBcurs_terminfo\fR(3X) +mvdelch/\fBcurs_delch\fR(3X) +mvderwin/\fBcurs_window\fR(3X) +mvget_wch/\fBcurs_get_wch\fR(3X) +mvget_wstr/\fBcurs_get_wstr\fR(3X) +mvgetch/\fBcurs_getch\fR(3X) +mvgetn_wstr/\fBcurs_get_wstr\fR(3X) +mvgetnstr/\fBcurs_getstr\fR(3X) +mvgetstr/\fBcurs_getstr\fR(3X) +mvhline/\fBcurs_border\fR(3X) +mvhline_set/\fBcurs_border_set\fR(3X) +mvin_wch/\fBcurs_in_wch\fR(3X) +mvin_wchnstr/\fBcurs_in_wchstr\fR(3X) +mvin_wchstr/\fBcurs_in_wchstr\fR(3X) +mvinch/\fBcurs_inch\fR(3X) +mvinchnstr/\fBcurs_inchstr\fR(3X) +mvinchstr/\fBcurs_inchstr\fR(3X) +mvinnstr/\fBcurs_instr\fR(3X) +mvinnwstr/\fBcurs_inwstr\fR(3X) +mvins_nwstr/\fBcurs_ins_wstr\fR(3X) +mvins_wch/\fBcurs_ins_wch\fR(3X) +mvins_wstr/\fBcurs_ins_wstr\fR(3X) +mvinsch/\fBcurs_insch\fR(3X) +mvinsnstr/\fBcurs_insstr\fR(3X) +mvinsstr/\fBcurs_insstr\fR(3X) +mvinstr/\fBcurs_instr\fR(3X) +mvinwstr/\fBcurs_inwstr\fR(3X) +mvprintw/\fBcurs_printw\fR(3X) +mvscanw/\fBcurs_scanw\fR(3X) +mvvline/\fBcurs_border\fR(3X) +mvvline_set/\fBcurs_border_set\fR(3X) +mvwadd_wch/\fBcurs_add_wch\fR(3X) +mvwadd_wchnstr/\fBcurs_add_wchstr\fR(3X) +mvwadd_wchstr/\fBcurs_add_wchstr\fR(3X) +mvwaddch/\fBcurs_addch\fR(3X) +mvwaddchnstr/\fBcurs_addchstr\fR(3X) +mvwaddchstr/\fBcurs_addchstr\fR(3X) +mvwaddnstr/\fBcurs_addstr\fR(3X) +mvwaddnwstr/\fBcurs_addwstr\fR(3X) +mvwaddstr/\fBcurs_addstr\fR(3X) +mvwaddwstr/\fBcurs_addwstr\fR(3X) +mvwchgat/\fBcurs_attr\fR(3X) +mvwdelch/\fBcurs_delch\fR(3X) +mvwget_wch/\fBcurs_get_wch\fR(3X) +mvwget_wstr/\fBcurs_get_wstr\fR(3X) +mvwgetch/\fBcurs_getch\fR(3X) +mvwgetn_wstr/\fBcurs_get_wstr\fR(3X) +mvwgetnstr/\fBcurs_getstr\fR(3X) +mvwgetstr/\fBcurs_getstr\fR(3X) +mvwhline/\fBcurs_border\fR(3X) +mvwhline_set/\fBcurs_border_set\fR(3X) +mvwin/\fBcurs_window\fR(3X) +mvwin_wch/\fBcurs_in_wch\fR(3X) +mvwin_wchnstr/\fBcurs_in_wchstr\fR(3X) +mvwin_wchstr/\fBcurs_in_wchstr\fR(3X) +mvwinch/\fBcurs_inch\fR(3X) +mvwinchnstr/\fBcurs_inchstr\fR(3X) +mvwinchstr/\fBcurs_inchstr\fR(3X) +mvwinnstr/\fBcurs_instr\fR(3X) +mvwinnwstr/\fBcurs_inwstr\fR(3X) +mvwins_nwstr/\fBcurs_ins_wstr\fR(3X) +mvwins_wch/\fBcurs_ins_wch\fR(3X) +mvwins_wstr/\fBcurs_ins_wstr\fR(3X) +mvwinsch/\fBcurs_insch\fR(3X) +mvwinsnstr/\fBcurs_insstr\fR(3X) +mvwinsstr/\fBcurs_insstr\fR(3X) +mvwinstr/\fBcurs_instr\fR(3X) +mvwinwstr/\fBcurs_inwstr\fR(3X) +mvwprintw/\fBcurs_printw\fR(3X) +mvwscanw/\fBcurs_scanw\fR(3X) +mvwvline/\fBcurs_border\fR(3X) +mvwvline_set/\fBcurs_border_set\fR(3X) +napms/\fBcurs_kernel\fR(3X) +newpad/\fBcurs_pad\fR(3X) +newterm/\fBcurs_initscr\fR(3X) +newwin/\fBcurs_window\fR(3X) +nl/\fBcurs_inopts\fR(3X) +nocbreak/\fBcurs_inopts\fR(3X) +nodelay/\fBcurs_inopts\fR(3X) +noecho/\fBcurs_inopts\fR(3X) +nofilter/\fBcurs_util\fR(3X)* +nonl/\fBcurs_inopts\fR(3X) +noqiflush/\fBcurs_inopts\fR(3X) +noraw/\fBcurs_inopts\fR(3X) +notimeout/\fBcurs_inopts\fR(3X) +overlay/\fBcurs_overlay\fR(3X) +overwrite/\fBcurs_overlay\fR(3X) +pair_content/\fBcurs_color\fR(3X) +pecho_wchar/\fBcurs_pad\fR(3X)* +pechochar/\fBcurs_pad\fR(3X) +pnoutrefresh/\fBcurs_pad\fR(3X) +prefresh/\fBcurs_pad\fR(3X) +printw/\fBcurs_printw\fR(3X) +putp/\fBcurs_terminfo\fR(3X) +putwin/\fBcurs_util\fR(3X) +qiflush/\fBcurs_inopts\fR(3X) +raw/\fBcurs_inopts\fR(3X) +redrawwin/\fBcurs_refresh\fR(3X) +refresh/\fBcurs_refresh\fR(3X) +reset_color_pairs/\fBcurs_color\fR(3X)* +reset_prog_mode/\fBcurs_kernel\fR(3X) +reset_shell_mode/\fBcurs_kernel\fR(3X) +resetty/\fBcurs_kernel\fR(3X) +resize_term/\fBresizeterm\fR(3X)* +resizeterm/\fBresizeterm\fR(3X)* +restartterm/\fBcurs_terminfo\fR(3X) +ripoffline/\fBcurs_kernel\fR(3X) +savetty/\fBcurs_kernel\fR(3X) +scanw/\fBcurs_scanw\fR(3X) +scr_dump/\fBcurs_scr_dump\fR(3X) +scr_init/\fBcurs_scr_dump\fR(3X) +scr_restore/\fBcurs_scr_dump\fR(3X) +scr_set/\fBcurs_scr_dump\fR(3X) +scrl/\fBcurs_scroll\fR(3X) +scroll/\fBcurs_scroll\fR(3X) +scrollok/\fBcurs_outopts\fR(3X) +set_curterm/\fBcurs_terminfo\fR(3X) +set_term/\fBcurs_initscr\fR(3X) +setcchar/\fBcurs_getcchar\fR(3X) +setscrreg/\fBcurs_outopts\fR(3X) +setsyx/\fBcurs_kernel\fR(3X) +setupterm/\fBcurs_terminfo\fR(3X) +slk_attr/\fBcurs_slk\fR(3X)* +slk_attr_off/\fBcurs_slk\fR(3X) +slk_attr_on/\fBcurs_slk\fR(3X) +slk_attr_set/\fBcurs_slk\fR(3X) +slk_attroff/\fBcurs_slk\fR(3X) +slk_attron/\fBcurs_slk\fR(3X) +slk_attrset/\fBcurs_slk\fR(3X) +slk_clear/\fBcurs_slk\fR(3X) +slk_color/\fBcurs_slk\fR(3X) +slk_init/\fBcurs_slk\fR(3X) +slk_label/\fBcurs_slk\fR(3X) +slk_noutrefresh/\fBcurs_slk\fR(3X) +slk_refresh/\fBcurs_slk\fR(3X) +slk_restore/\fBcurs_slk\fR(3X) +slk_set/\fBcurs_slk\fR(3X) +slk_touch/\fBcurs_slk\fR(3X) +slk_wset/\fBcurs_slk\fR(3X)* +standend/\fBcurs_attr\fR(3X) +standout/\fBcurs_attr\fR(3X) +start_color/\fBcurs_color\fR(3X) +subpad/\fBcurs_pad\fR(3X) +subwin/\fBcurs_window\fR(3X) +syncok/\fBcurs_window\fR(3X) +term_attrs/\fBcurs_termattrs\fR(3X) +termattrs/\fBcurs_termattrs\fR(3X) +termname/\fBcurs_termattrs\fR(3X) +tgetent/\fBcurs_termcap\fR(3X) +tgetflag/\fBcurs_termcap\fR(3X) +tgetnum/\fBcurs_termcap\fR(3X) +tgetstr/\fBcurs_termcap\fR(3X) +tgoto/\fBcurs_termcap\fR(3X) +tigetflag/\fBcurs_terminfo\fR(3X) +tigetnum/\fBcurs_terminfo\fR(3X) +tigetstr/\fBcurs_terminfo\fR(3X) +timeout/\fBcurs_inopts\fR(3X) +tiparm/\fBcurs_terminfo\fR(3X)* +touchline/\fBcurs_touch\fR(3X) +touchwin/\fBcurs_touch\fR(3X) +tparm/\fBcurs_terminfo\fR(3X) +tputs/\fBcurs_termcap\fR(3X) +tputs/\fBcurs_terminfo\fR(3X) +trace/\fBcurs_trace\fR(3X)* +typeahead/\fBcurs_inopts\fR(3X) +unctrl/\fBcurs_util\fR(3X) +unget_wch/\fBcurs_get_wch\fR(3X) +ungetch/\fBcurs_getch\fR(3X) +ungetmouse/\fBcurs_mouse\fR(3X)* +untouchwin/\fBcurs_touch\fR(3X) +use_default_colors/\fBdefault_colors\fR(3X)* +use_env/\fBcurs_util\fR(3X) +use_extended_names/\fBcurs_extend\fR(3X)* +use_legacy_coding/\fBlegacy_coding\fR(3X)* +use_tioctl/\fBcurs_util\fR(3X)* +vid_attr/\fBcurs_terminfo\fR(3X) +vid_puts/\fBcurs_terminfo\fR(3X) +vidattr/\fBcurs_terminfo\fR(3X) +vidputs/\fBcurs_terminfo\fR(3X) +vline/\fBcurs_border\fR(3X) +vline_set/\fBcurs_border_set\fR(3X) +vw_printw/\fBcurs_printw\fR(3X) +vw_scanw/\fBcurs_scanw\fR(3X) +vwprintw/\fBcurs_printw\fR(3X) +vwscanw/\fBcurs_scanw\fR(3X) +wadd_wch/\fBcurs_add_wch\fR(3X) +wadd_wchnstr/\fBcurs_add_wchstr\fR(3X) +wadd_wchstr/\fBcurs_add_wchstr\fR(3X) +waddch/\fBcurs_addch\fR(3X) +waddchnstr/\fBcurs_addchstr\fR(3X) +waddchstr/\fBcurs_addchstr\fR(3X) +waddnstr/\fBcurs_addstr\fR(3X) +waddnwstr/\fBcurs_addwstr\fR(3X) +waddstr/\fBcurs_addstr\fR(3X) +waddwstr/\fBcurs_addwstr\fR(3X) +wattr_get/\fBcurs_attr\fR(3X) +wattr_off/\fBcurs_attr\fR(3X) +wattr_on/\fBcurs_attr\fR(3X) +wattr_set/\fBcurs_attr\fR(3X) +wattroff/\fBcurs_attr\fR(3X) +wattron/\fBcurs_attr\fR(3X) +wattrset/\fBcurs_attr\fR(3X) +wbkgd/\fBcurs_bkgd\fR(3X) +wbkgdset/\fBcurs_bkgd\fR(3X) +wbkgrnd/\fBcurs_bkgrnd\fR(3X) +wbkgrndset/\fBcurs_bkgrnd\fR(3X) +wborder/\fBcurs_border\fR(3X) +wborder_set/\fBcurs_border_set\fR(3X) +wchgat/\fBcurs_attr\fR(3X) +wclear/\fBcurs_clear\fR(3X) +wclrtobot/\fBcurs_clear\fR(3X) +wclrtoeol/\fBcurs_clear\fR(3X) +wcolor_set/\fBcurs_attr\fR(3X) +wcursyncup/\fBcurs_window\fR(3X) +wdelch/\fBcurs_delch\fR(3X) +wdeleteln/\fBcurs_deleteln\fR(3X) +wecho_wchar/\fBcurs_add_wch\fR(3X) +wechochar/\fBcurs_addch\fR(3X) +wenclose/\fBcurs_mouse\fR(3X)* +werase/\fBcurs_clear\fR(3X) +wget_wch/\fBcurs_get_wch\fR(3X) +wget_wstr/\fBcurs_get_wstr\fR(3X) +wgetbkgrnd/\fBcurs_bkgrnd\fR(3X) +wgetch/\fBcurs_getch\fR(3X) +wgetdelay/\fBcurs_opaque\fR(3X)* +wgetn_wstr/\fBcurs_get_wstr\fR(3X) +wgetnstr/\fBcurs_getstr\fR(3X) +wgetparent/\fBcurs_opaque\fR(3X)* +wgetscrreg/\fBcurs_opaque\fR(3X)* +wgetstr/\fBcurs_getstr\fR(3X) +whline/\fBcurs_border\fR(3X) +whline_set/\fBcurs_border_set\fR(3X) +win_wch/\fBcurs_in_wch\fR(3X) +win_wchnstr/\fBcurs_in_wchstr\fR(3X) +win_wchstr/\fBcurs_in_wchstr\fR(3X) +winch/\fBcurs_inch\fR(3X) +winchnstr/\fBcurs_inchstr\fR(3X) +winchstr/\fBcurs_inchstr\fR(3X) +winnstr/\fBcurs_instr\fR(3X) +winnwstr/\fBcurs_inwstr\fR(3X) +wins_nwstr/\fBcurs_ins_wstr\fR(3X) +wins_wch/\fBcurs_ins_wch\fR(3X) +wins_wstr/\fBcurs_ins_wstr\fR(3X) +winsch/\fBcurs_insch\fR(3X) +winsdelln/\fBcurs_deleteln\fR(3X) +winsertln/\fBcurs_deleteln\fR(3X) +winsnstr/\fBcurs_insstr\fR(3X) +winsstr/\fBcurs_insstr\fR(3X) +winstr/\fBcurs_instr\fR(3X) +winwstr/\fBcurs_inwstr\fR(3X) +wmouse_trafo/\fBcurs_mouse\fR(3X)* +wmove/\fBcurs_move\fR(3X) +wnoutrefresh/\fBcurs_refresh\fR(3X) +wprintw/\fBcurs_printw\fR(3X) +wredrawln/\fBcurs_refresh\fR(3X) +wrefresh/\fBcurs_refresh\fR(3X) +wresize/\fBwresize\fR(3X)* +wscanw/\fBcurs_scanw\fR(3X) +wscrl/\fBcurs_scroll\fR(3X) +wsetscrreg/\fBcurs_outopts\fR(3X) +wstandend/\fBcurs_attr\fR(3X) +wstandout/\fBcurs_attr\fR(3X) +wsyncdown/\fBcurs_window\fR(3X) +wsyncup/\fBcurs_window\fR(3X) +wtimeout/\fBcurs_inopts\fR(3X) +wtouchln/\fBcurs_touch\fR(3X) +wunctrl/\fBcurs_util\fR(3X) +wvline/\fBcurs_border\fR(3X) +wvline_set/\fBcurs_border_set\fR(3X) +.TE +.PP +Depending on the configuration, +additional sets of functions may be available: +.RS 3 +.TP 5 +\fBcurs_memleaks\fP(3X) - curses memory-leak checking +.TP 5 +\fBcurs_sp_funcs\fP(3X) - curses screen-pointer extension +.TP 5 +\fBcurs_threads\fP(3X) - curses thread support +.TP 5 +\fBcurs_trace\fP(3X) - curses debugging routines +.RE +.SH RETURN VALUE +Routines that return an integer return \fBERR\fR upon failure and an +integer value other than \fBERR\fR upon successful completion, unless +otherwise noted in the routine descriptions. +.PP +As a general rule, routines check for null pointers passed as parameters, +and handle this as an error. +.PP +All macros return the value of the \fBw\fR version, except \fBsetscrreg\fR, +\fBwsetscrreg\fR, \fBgetyx\fR, \fBgetbegyx\fR, and \fBgetmaxyx\fR. +The return values of +\fBsetscrreg\fR, +\fBwsetscrreg\fR, +\fBgetyx\fR, +\fBgetbegyx\fR, and +\fBgetmaxyx\fR are undefined (i.e., these should not be used as the +right-hand side of assignment statements). +.PP +Functions with a \*(``mv\*('' prefix first perform a cursor movement using +\fBwmove\fP, and return an error if the position is outside the window, +or if the window pointer is null. +Most \*(``mv\*(''-prefixed functions +(except variadic functions such as \fBmvprintw\fP) +are provided both as macros and functions. +.PP +Routines that return pointers return \fBNULL\fR on error. +.SH ENVIRONMENT +.PP +The following environment symbols are useful for customizing the +runtime behavior of the \fBncurses\fR library. +The most important ones have been already discussed in detail. +.SS CC command-character +.PP +When set, change occurrences of the command_character +(i.e., the \fBcmdch\fP capability) +of the loaded terminfo entries to the value of this variable. +Very few terminfo entries provide this feature. +.PP +Because this name is also used in development environments to represent +the C compiler's name, \fBncurses\fR ignores it if it does not happen to +be a single character. +.SS BAUDRATE +.PP +The debugging library checks this environment variable when the application +has redirected output to a file. +The variable's numeric value is used for the baudrate. +If no value is found, \fBncurses\fR uses 9600. +This allows testers to construct repeatable test-cases +that take into account costs that depend on baudrate. +.SS COLUMNS +.PP +Specify the width of the screen in characters. +Applications running in a windowing environment usually are able to +obtain the width of the window in which they are executing. +If neither the \fBCOLUMNS\fP value nor the terminal's screen size is available, +\fBncurses\fR uses the size which may be specified in the terminfo database +(i.e., the \fBcols\fR capability). +.PP +It is important that your application use a correct size for the screen. +This is not always possible because your application may be +running on a host which does not honor NAWS (Negotiations About Window +Size), or because you are temporarily running as another user. +However, setting \fBCOLUMNS\fP and/or \fBLINES\fP overrides the library's +use of the screen size obtained from the operating system. +.PP +Either \fBCOLUMNS\fP or \fBLINES\fP symbols may be specified independently. +This is mainly useful to circumvent legacy misfeatures of terminal descriptions, +e.g., xterm which commonly specifies a 65 line screen. +For best results, \fBlines\fR and \fBcols\fR should not be specified in +a terminal description for terminals which are run as emulations. +.PP +Use the \fBuse_env\fR function to disable all use of external environment +(but not including system calls) to determine the screen size. +Use the \fBuse_tioctl\fR function to update \fBCOLUMNS\fP or \fBLINES\fP +to match the screen size obtained from system calls or the terminal database. +.SS ESCDELAY +.PP +Specifies the total time, in milliseconds, for which ncurses will +await a character sequence, e.g., a function key. +The default value, 1000 milliseconds, is enough for most uses. +However, it is made a variable to accommodate unusual applications. +.PP +The most common instance where you may wish to change this value +is to work with slow hosts, e.g., running on a network. +If the host cannot read characters rapidly enough, it will have the same +effect as if the terminal did not send characters rapidly enough. +The library will still see a timeout. +.PP +Note that xterm mouse events are built up from character sequences +received from the xterm. +If your application makes heavy use of multiple-clicking, you may +wish to lengthen this default value because the timeout applies +to the composed multi-click event as well as the individual clicks. +.PP +In addition to the environment variable, +this implementation provides a global variable with the same name. +Portable applications should not rely upon the presence of ESCDELAY +in either form, +but setting the environment variable rather than the global variable +does not create problems when compiling an application. +.SS HOME +Tells \fBncurses\fR where your home directory is. +That is where it may read and write auxiliary terminal descriptions: +.NS +$HOME/.termcap +$HOME/.terminfo +.NE +.SS LINES +.PP +Like COLUMNS, specify the height of the screen in characters. +See COLUMNS for a detailed description. +.SS MOUSE_BUTTONS_123 +.PP +This applies only to the OS/2 EMX port. +It specifies the order of buttons on the mouse. +OS/2 numbers a 3-button mouse inconsistently from other +platforms: +.NS +1 = left +.br +2 = right +.br +3 = middle. +.NE +.PP +This variable lets you customize the mouse. +The variable must be three numeric digits 1\-3 in any order, e.g., 123 or 321. +If it is not specified, \fBncurses\fR uses 132. +.SS NCURSES_ASSUMED_COLORS +.PP +Override the compiled-in assumption that the +terminal's default colors are white-on-black +(see \fBdefault_colors\fR(3X)). +You may set the foreground and background color values with this environment +variable by proving a 2-element list: foreground,background. +For example, to tell ncurses to not assume anything +about the colors, set this to "\-1,\-1". +To make it green-on-black, set it to "2,0". +Any positive value from zero to the terminfo \fBmax_colors\fR value is allowed. +.SS NCURSES_CONSOLE2 +This applies only to the MinGW port of ncurses. +.PP +The \fBConsole2\fP program's handling of the Microsoft Console API call +\fBCreateConsoleScreenBuffer\fP is defective. +Applications which use this will hang. +However, it is possible to simulate the action of this call by +mapping coordinates, +explicitly saving and restoring the original screen contents. +Setting the environment variable \fBNCGDB\fP has the same effect. +.SS NCURSES_GPM_TERMS +.PP +This applies only to ncurses configured to use the GPM interface. +.PP +If present, +the environment variable is a list of one or more terminal names +against which the \fBTERM\fP environment variable is matched. +Setting it to an empty value disables the GPM interface; +using the built-in support for xterm, etc. +.PP +If the environment variable is absent, +ncurses will attempt to open GPM if \fBTERM\fP contains \*(``linux\*(''. +.SS NCURSES_NO_HARD_TABS +.PP +\fBNcurses\fP may use tabs as part of the cursor movement optimization. +In some cases, +your terminal driver may not handle these properly. +Set this environment variable to disable the feature. +You can also adjust your \fBstty\fP settings to avoid the problem. +.SS NCURSES_NO_MAGIC_COOKIE +.PP +Some terminals use a magic-cookie feature which requires special handling +to make highlighting and other video attributes display properly. +You can suppress the highlighting entirely for these terminals by +setting this environment variable. +.SS NCURSES_NO_PADDING +.PP +Most of the terminal descriptions in the terminfo database are written +for real \*(``hardware\*('' terminals. +Many people use terminal emulators +which run in a windowing environment and use curses-based applications. +Terminal emulators can duplicate +all of the important aspects of a hardware terminal, but they do not +have the same limitations. +The chief limitation of a hardware terminal from the standpoint +of your application is the management of dataflow, i.e., timing. +Unless a hardware terminal is interfaced into a terminal concentrator +(which does flow control), +it (or your application) must manage dataflow, preventing overruns. +The cheapest solution (no hardware cost) +is for your program to do this by pausing after +operations that the terminal does slowly, such as clearing the display. +.PP +As a result, many terminal descriptions (including the vt100) +have delay times embedded. +You may wish to use these descriptions, +but not want to pay the performance penalty. +.PP +Set the NCURSES_NO_PADDING environment variable to disable all but mandatory +padding. +Mandatory padding is used as a part of special control +sequences such as \fIflash\fR. +.SS NCURSES_NO_SETBUF +This setting is obsolete. +Before changes +.RS 3 +.bP +started with 5.9 patch 20120825 +and +.bP +continued +though 5.9 patch 20130126 +.RE +.PP +\fBncurses\fR enabled buffered output during terminal initialization. +This was done (as in SVr4 curses) for performance reasons. +For testing purposes, both of \fBncurses\fR and certain applications, +this feature was made optional. +Setting the NCURSES_NO_SETBUF variable +disabled output buffering, leaving the output in the original (usually +line buffered) mode. +.PP +In the current implementation, +ncurses performs its own buffering and does not require this workaround. +It does not modify the buffering of the standard output. +.PP +The reason for the change was to make the behavior for interrupts and +other signals more robust. +One drawback is that certain nonconventional programs would mix +ordinary stdio calls with ncurses calls and (usually) work. +This is no longer possible since ncurses is not using +the buffered standard output but its own output (to the same file descriptor). +As a special case, the low-level calls such as \fBputp\fP still use the +standard output. +But high-level curses calls do not. +.SS NCURSES_NO_UTF8_ACS +.PP +During initialization, the \fBncurses\fR library +checks for special cases where VT100 line-drawing (and the corresponding +alternate character set capabilities) described in the terminfo are known +to be missing. +Specifically, when running in a UTF\-8 locale, +the Linux console emulator and the GNU screen program ignore these. +Ncurses checks the \fBTERM\fP environment variable for these. +For other special cases, you should set this environment variable. +Doing this tells ncurses to use Unicode values which correspond to +the VT100 line-drawing glyphs. +That works for the special cases cited, +and is likely to work for terminal emulators. +.PP +When setting this variable, you should set it to a nonzero value. +Setting it to zero (or to a nonnumber) +disables the special check for \*(``linux\*('' and \*(``screen\*(''. +.PP +As an alternative to the environment variable, +ncurses checks for an extended terminfo capability \fBU8\fP. +This is a numeric capability which can be compiled using \fB@TIC@\ \-x\fP. +For example +.RS 3 +.ft CW +.sp +.nf +# linux console, if patched to provide working +# VT100 shift-in/shift-out, with corresponding font. +linux-vt100|linux console with VT100 line-graphics, + U8#0, use=linux, +.sp +# uxterm with vt100Graphics resource set to false +xterm-utf8|xterm relying on UTF-8 line-graphics, + U8#1, use=xterm, +.fi +.ft +.RE +.PP +The name \*(``U8\*('' is chosen to be two characters, +to permit it to be used by applications that use ncurses' +termcap interface. +.SS NCURSES_TRACE +.PP +During initialization, the \fBncurses\fR debugging library +checks the NCURSES_TRACE environment variable. +If it is defined, to a numeric value, \fBncurses\fR calls the \fBtrace\fR +function, using that value as the argument. +.PP +The argument values, which are defined in \fBcurses.h\fR, provide several +types of information. +When running with traces enabled, your application will write the +file \fBtrace\fR to the current directory. +.PP +See \fBcurs_trace\fP(3X) for more information. +.SS TERM +.PP +Denotes your terminal type. +Each terminal type is distinct, though many are similar. +.PP +\fBTERM\fP is commonly set by terminal emulators to help +applications find a workable terminal description. +Some of those choose a popular approximation, e.g., +\*(``ansi\*('', \*(``vt100\*('', \*(``xterm\*('' rather than an exact fit. +Not infrequently, your application will have problems with that approach, +e.g., incorrect function-key definitions. +.PP +If you set \fBTERM\fP in your environment, +it has no effect on the operation of the terminal emulator. +It only affects the way applications work within the terminal. +Likewise, as a general rule (\fBxterm\fP being a rare exception), +terminal emulators which allow you to +specify \fBTERM\fP as a parameter or configuration value do +not change their behavior to match that setting. +.SS TERMCAP +If the \fBncurses\fR library has been configured with \fItermcap\fR +support, \fBncurses\fR will check for a terminal's description in +termcap form if it is not available in the terminfo database. +.PP +The \fBTERMCAP\fP environment variable contains +either a terminal description (with newlines stripped out), +or a file name telling where the information denoted by +the \fBTERM\fP environment variable exists. +In either case, setting it directs \fBncurses\fR to ignore +the usual place for this information, e.g., /etc/termcap. +.SS TERMINFO +.PP +\fBncurses\fP can be configured to read from multiple terminal databases. +The \fBTERMINFO\fP variable overrides the location for +the default terminal database. +Terminal descriptions (in terminal format) are stored in terminal databases: +.bP +Normally these are stored in a directory tree, +using subdirectories named by the first letter of the terminal names therein. +.IP +This is the scheme used in System V, which legacy Unix systems use, +and the \fBTERMINFO\fP variable is used by \fIcurses\fP applications on those +systems to override the default location of the terminal database. +.bP +If \fBncurses\fP is built to use hashed databases, +then each entry in this list may be the path of a hashed database file, e.g., +.NS +/usr/share/terminfo.db +.NE +.IP +rather than +.NS +/usr/share/terminfo/ +.NE +.IP +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, +reading it directly +rather than using the terminfo library calls. +.bP +If \fBncurses\fP is built with a support for reading termcap files +directly, then an entry in this list may be the path of a termcap file. +.bP +If the \fBTERMINFO\fP variable begins with +\*(``hex:\*('' or \*(``b64:\*('', +\fBncurses\fP uses the remainder of that variable as a compiled terminal +description. +You might produce the base64 format using \fBinfocmp\fP(1M): +.NS +TERMINFO="$(infocmp -0 -Q2 -q)" +export TERMINFO +.NE +.IP +The compiled description is used if it corresponds to the terminal identified +by the \fBTERM\fP variable. +.PP +Setting \fBTERMINFO\fP is the simplest, +but not the only way to set location of the default terminal database. +The complete list of database locations in order follows: +.RS 3 +.bP +the last terminal database to which \fBncurses\fR wrote, +if any, is searched first +.bP +the location specified by the TERMINFO environment variable +.bP +$HOME/.terminfo +.bP +locations listed in the TERMINFO_DIRS environment variable +.bP +one or more locations whose names are configured and compiled into the +ncurses library, i.e., +.RS 3 +.bP +@TERMINFO_DIRS@ (corresponding to the TERMINFO_DIRS variable) +.bP +@TERMINFO@ (corresponding to the TERMINFO variable) +.RE +.RE +.PP +.SS TERMINFO_DIRS +.PP +Specifies a list of locations to search for terminal descriptions. +Each location in the list is a terminal database as described in +the section on the \fBTERMINFO\fP variable. +The list is separated by colons (i.e., ":") on Unix, semicolons on OS/2 EMX. +.PP +There is no corresponding feature in System V terminfo; +it is an extension developed for \fBncurses\fP. +.SS TERMPATH +.PP +If \fBTERMCAP\fP does not hold a file name then \fBncurses\fR checks +the \fBTERMPATH\fP environment variable. +This is a list of filenames separated by spaces or colons (i.e., ":") on Unix, +semicolons on OS/2 EMX. +.PP +If the \fBTERMPATH\fP environment variable is not set, +\fBncurses\fR looks in the files +.NS +/etc/termcap, /usr/share/misc/termcap and $HOME/.termcap, +.NE +.PP +in that order. +.PP +The library may be configured to disregard the following variables when the +current user is the superuser (root), or if the application uses setuid or +setgid permissions: +.NS +$TERMINFO, $TERMINFO_DIRS, $TERMPATH, as well as $HOME. +.NE +.SH ALTERNATE CONFIGURATIONS +.PP +Several different configurations are possible, +depending on the configure script options used when building \fBncurses\fP. +There are a few main options whose effects are visible to the applications +developer using \fBncurses\fP: +.TP 5 +\-\-disable\-overwrite +The standard include for \fBncurses\fP is as noted in \fBSYNOPSIS\fP: +.NS +\fB#include <curses.h>\fR +.NE +.IP +This option is used to avoid filename conflicts when \fBncurses\fP +is not the main implementation of curses of the computer. +If \fBncurses\fP is installed disabling overwrite, it puts its headers in +a subdirectory, e.g., +.NS +\fB#include <ncurses/curses.h>\fR +.NE +.IP +It also omits a symbolic link which would allow you to use \fB\-lcurses\fP +to build executables. +.TP 5 +\-\-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 +.NS +\fB\-lncurses\fR +.NE +.IP +you link with +.NS +\fB\-lncursesw\fR +.NE +.IP +You must also enable the wide-character features in the header file +when compiling for the wide-character library +to use the extended (wide-character) functions. +The symbol which enables these features has changed since XSI Curses, Issue 4: +.RS +.bP +Originally, the wide-character feature required the symbol +\fB_XOPEN_SOURCE_EXTENDED\fP +but that was only valid for XPG4 (1996). +.bP +Later, that was deemed conflicting with \fB_XOPEN_SOURCE\fP defined to 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. +.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 +(or a system-specific symbol). +.RE +.IP +The \fBcurses.h\fP file which is installed for the wide-character +library is designed to be compatible with the normal library's header. +Only the size of the \fBWINDOW\fP structure differs, and very few +applications require more than a pointer to \fBWINDOW\fPs. +.IP +If the headers are installed allowing overwrite, +the wide-character library's headers should be installed last, +to allow applications to be built using either library +from the same set of headers. +.TP 5 +\-\-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). +.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. +.TP 5 +\-\-with\-shared +.TP +\-\-with\-normal +.TP +\-\-with\-debug +.TP +\-\-with\-profile +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. +.TP 5 +\-\-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. +.IP +Those functions are described in these pages: +.RS +.bP +\fBcurs_extend\fP(3X) \- miscellaneous curses extensions +.bP +\fBcurs_inopts\fR(3X) \- \fBcurses\fR input options +.bP +\fBcurs_kernel\fR(3X) \- low-level \fBcurses\fR routines +.bP +\fBcurs_termattrs\fR(3X) \- \fBcurses\fR environment query routines +.bP +\fBcurs_termcap\fR(3X) \- \fBcurses\fR emulation of termcap +.bP +\fBcurs_terminfo\fR(3X) \- \fBcurses\fR interfaces to terminfo database +.bP +\fBcurs_util\fR(3X) \- miscellaneous \fBcurses\fR utility routines +.RE +.TP 5 +\-\-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. +.SH FILES +.TP 5 +@DATADIR@/tabset +directory containing initialization files for the terminal capability database +@TERMINFO@ +terminal capability database +.SH SEE ALSO +\fBterminfo\fR(\*n) and related pages whose names begin +\*(``curs_\*('' for detailed routine descriptions. +.br +\fBcurs_variables\fR(3X) +.br +\fBuser_caps\fP(5) for user-defined capabilities +.SH EXTENSIONS +The \fBncurses\fR library can be compiled with an option (\fB\-DUSE_GETCAP\fR) +that falls back to the old-style /etc/termcap file if the terminal setup code +cannot find a terminfo entry corresponding to \fBTERM\fR. +Use of this feature +is not recommended, as it essentially includes an entire termcap compiler in +the \fBncurses\fR startup code, at significant cost in core and startup cycles. +.PP +The \fBncurses\fR library includes facilities for capturing mouse events on +certain terminals (including xterm). +See the \fBcurs_mouse\fR(3X) +manual page for details. +.PP +The \fBncurses\fR library includes facilities for responding to window +resizing events, e.g., when running in an xterm. +See the \fBresizeterm\fR(3X) +and \fBwresize\fR(3X) manual pages for details. +In addition, the library may be configured with a \fBSIGWINCH\fP handler. +.PP +The \fBncurses\fR library extends the fixed set of function key capabilities +of terminals by allowing the application designer to define additional +key sequences at runtime. +See the \fBdefine_key\fR(3X) +\fBkey_defined\fR(3X), +and \fBkeyok\fR(3X) manual pages for details. +.PP +The \fBncurses\fR library can exploit the capabilities of terminals which +implement the ISO\-6429 SGR 39 and SGR 49 controls, which allow an application +to reset the terminal to its original foreground and background colors. +From the users' perspective, the application is able to draw colored +text on a background whose color is set independently, providing better +control over color contrasts. +See the \fBdefault_colors\fR(3X) manual page for details. +.PP +The \fBncurses\fR library includes a function for directing application output +to a printer attached to the terminal device. +See the \fBcurs_print\fR(3X) manual page for details. +.SH PORTABILITY +The \fBncurses\fR library is intended to be BASE-level conformant with XSI +Curses. +The EXTENDED XSI Curses functionality +(including color support) is supported. +.PP +A small number of local differences (that is, individual differences between +the XSI Curses and \fBncurses\fR calls) are described in \fBPORTABILITY\fR +sections of the library man pages. +.SS Error checking +.PP +In many cases, X/Open Curses is vague about error conditions, +omitting some of the SVr4 documentation. +.PP +Unlike other implementations, this one checks parameters such as pointers +to WINDOW structures to ensure they are not null. +The main reason for providing this behavior is 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 were detected. +Relying on this (or some other) extension will adversely affect the +portability of curses applications. +.SS Extensions versus portability +.PP +Most of the extensions provided by ncurses have not been standardized. +Some have been incorporated into other implementations, such as +PDCurses or NetBSD curses. +Here are a few to consider: +.bP +The routine \fBhas_key\fR is not part of XPG4, nor is it present in SVr4. +See the \fBcurs_getch\fR(3X) manual page for details. +.bP +The routine \fBslk_attr\fR is not part of XPG4, nor is it present in SVr4. +See the \fBcurs_slk\fR(3X) manual page for details. +.bP +The routines \fBgetmouse\fR, \fBmousemask\fR, \fBungetmouse\fR, +\fBmouseinterval\fR, and \fBwenclose\fR relating to mouse interfacing are not +part of XPG4, nor are they present in SVr4. +See the \fBcurs_mouse\fR(3X) manual page for details. +.bP +The routine \fBmcprint\fR was not present in any previous curses implementation. +See the \fBcurs_print\fR(3X) manual page for details. +.bP +The routine \fBwresize\fR is not part of XPG4, nor is it present in SVr4. +See the \fBwresize\fR(3X) manual page for details. +.bP +The WINDOW structure's internal details can be hidden from application +programs. +See \fBcurs_opaque\fR(3X) for the discussion of \fBis_scrollok\fR, etc. +.bP +This implementation can be configured to provide rudimentary support +for multi-threaded applications. +See \fBcurs_threads\fR(3X) for details. +.bP +This implementation can also be configured to provide a set of functions which +improve the ability to manage multiple screens. +See \fBcurs_sp_funcs\fR(3X) for details. +.SS Padding differences +.PP +In historic curses versions, delays embedded in the capabilities \fBcr\fR, +\fBind\fR, \fBcub1\fR, \fBff\fR and \fBtab\fR activated corresponding delay +bits in the UNIX tty driver. +In this implementation, all padding is done by sending NUL bytes. +This method is slightly more expensive, but narrows the interface +to the UNIX kernel significantly and increases the package's portability +correspondingly. +.SS Header files +The header file \fB<curses.h>\fR automatically includes the header files +\fB<stdio.h>\fR and \fB<unctrl.h>\fR. +.PP +X/Open Curses has more to say, +but does not finish the story: +.RS 4 +.PP +The inclusion of <curses.h> may make visible all symbols +from the headers <stdio.h>, <term.h>, <termios.h>, and <wchar.h>. +.RE +.PP +Here is a more complete story: +.bP +Starting with BSD curses, all implementations have included <stdio.h>. +.IP +BSD curses included <curses.h> and <unctrl.h> from an internal header +"curses.ext" ("ext" was a short name for \fIexterns\fP). +.IP +BSD curses used <stdio.h> internally (for \fBprintw\fP and \fBscanw\fP), +but nothing in <curses.h> itself relied upon <stdio.h>. +.bP +SVr2 curses added \fBnewterm\fP(3X), which relies upon <stdio.h>. +That is, the function prototype uses \fBFILE\fP. +.IP +SVr4 curses added \fBputwin\fP and \fBgetwin\fP, which also use <stdio.h>. +.IP +X/Open Curses documents all three of these functions. +.IP +SVr4 curses and X/Open Curses do not require the developer to +include <stdio.h> before including <curses.h>. +Both document curses showing <curses.h> as the only required header. +.IP +As a result, standard <curses.h> will always include <stdio.h>. +.bP +X/Open Curses is inconsistent with respect to SVr4 regarding <unctrl.h>. +.IP +As noted in \fBcurs_util\fP(3X), ncurses includes <unctrl.h> from +<curses.h> (like SVr4). +.bP +X/Open's comments about <term.h> and <termios.h> may refer to HP-UX and AIX: +.IP +HP-UX curses includes <term.h> from <curses.h> +to declare \fBsetupterm\fP in curses.h, +but ncurses (and Solaris curses) do not. +.IP +AIX curses includes <term.h> and <termios.h>. +Again, ncurses (and Solaris curses) do not. +.bP +X/Open says that <curses.h> \fImay\fP include <term.h>, +but there is no requirement that it do that. +.IP +Some programs use functions declared in both <curses.h> and <term.h>, +and must include both headers in the same module. +Very old versions of AIX curses required including <curses.h> +before including <term.h>. +.IP +Because ncurses header files include the headers needed to +define datatypes used in the headers, +ncurses header files can be included in any order. +But for portability, you should include <curses.h> before <term.h>. +.bP +X/Open Curses says \fI"may make visible"\fP +because including a header file does not necessarily make all symbols +in it visible (there are ifdef's to consider). +.IP +For instance, in ncurses <wchar.h> \fImay\fP be included if +the proper symbol is defined, and if ncurses is configured for +wide-character support. +If the header is included, its symbols may be made visible. +That depends on the value used for \fB_XOPEN_SOURCE\fP +feature test macro. +.bP +X/Open Curses documents one required header, +in a special case: <stdarg.h> before <curses.h> to prototype +the \fBvw_printw\fP and \fBvw_scanw\fP functions +(as well as the obsolete +the \fBvwprintw\fP and \fBvwscanw\fP functions). +Each of those uses a \fBva_list\fP parameter. +.IP +The two obsolete functions were introduced in SVr3. +The other functions were introduced in X/Open Curses. +In between, SVr4 curses provided for the possibility that +an application might include either <varargs.h> or <stdarg.h>. +Initially, that was done by using \fBvoid*\fP for the \fBva_list\fP +parameter. +Later, a special type (defined in <stdio.h>) was introduced, +to allow for compiler type-checking. +That special type is always available, +because <stdio.h> is always included by <curses.h>. +.IP +None of the X/Open Curses implementations require an application +to include <stdarg.h> before <curses.h> because they either +have allowed for a special type, or (like ncurses) include <stdarg.h> +directly to provide a portable interface. +.SH NOTES +.PP +If standard output from a \fBncurses\fR program is re-directed to something +which is not a tty, screen updates will be directed to standard error. +This was an undocumented feature of AT&T System V Release 3 curses. +.SH AUTHORS +Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. +Based on pcurses by Pavel Curtis. diff --git a/deps/ncurses-6.3/man/new_pair.3x b/deps/ncurses-6.3/man/new_pair.3x new file mode 100644 index 0000000..98166a9 --- /dev/null +++ b/deps/ncurses-6.3/man/new_pair.3x @@ -0,0 +1,166 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 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: Thomas E. Dickey +.\" +.\" $Id: new_pair.3x,v 1.16 2021/06/17 21:26:02 tom Exp $ +.TH new_pair 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.SH NAME +\fBalloc_pair\fP, +\fBfind_pair\fP, +\fBfree_pair\fP \- new curses color-pair functions +.SH SYNOPSIS +\fB#include <curses.h>\fP +.sp +\fBint alloc_pair(int \fP\fIfg\fP\fB, int \fP\fIbg\fP\fB);\fP +.br +\fBint find_pair(int \fP\fIfg\fP\fB, int \fP\fIbg\fP\fB);\fP +.br +\fBint free_pair(int \fP\fIpair\fP\fB);\fP +.SH DESCRIPTION +These functions are an extension to the curses library. +They permit an application to dynamically allocate a color pair using +the foreground/background colors rather than assign a fixed color pair number, +and return an unused pair to the pool. +.PP +The number of colors may be related to the number of possible color +pairs for a given terminal, or it may not: +.bP +While almost all terminals allow setting the color \fIattributes\fP +independently, +it is unlikely that your terminal allows you to modify the attributes +of a given character cell without rewriting it. +That is, the foreground and background colors are applied as a pair. +.bP +Color pairs are the curses library's way of managing a color palette +on a terminal. +If the library does not keep track of the \fIcombinations\fP of +colors which are displayed, it will be inefficient. +.bP +For simple terminal emulators +with only a few dozen color combinations, +it is convenient to use the maximum number of combinations +as the limit on color pairs: +.NS +\fBCOLORS\fP\fI * \fP\fBCOLORS\fP +.NE +.bP +Terminals which support \fIdefault colors\fP distinct +from \*(``ANSI colors\*('' +add to the possible combinations, producing this total: +.NS +\fI( \fP\fBCOLORS\fP\fI + 1 ) * ( \fP\fBCOLORS\fP\fI + 1 )\fP +.NE +.bP +An application might use up to a few dozen color pairs to +implement a predefined color scheme. +.IP +Beyond that lies in the realm of programs using the foreground +and background colors for \*(``ASCII art\*('' +(or some other non-textual application). +.IP +Also beyond those few dozen pairs, the required size for a table +to represent the combinations grows rapidly with an increasing number of colors. +.IP +These functions allow a developer to let the screen library +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. +.bP +If the combination already exists, +\fBalloc_pair\fP returns the existing pair. +.bP +If the combination does not exist, +\fBalloc_pair\fP allocates a new color pair and returns that. +.bP +If the table fills up, \fBalloc_pair\fP discards the least-recently +allocated entry using \fBfree_pair\fP and allocates a new color pair. +.PP +All of the color pairs are allocated from a table of possible color pairs. +The size of the table is determined by the terminfo \fIpairs\fP capability. +The table is shared with \fBinit_pair\fP; +in fact \fBalloc_pair\fP calls \fBinit_pair\fP after +updating the ncurses library's fast index 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, +returning the pair number if it has been allocated. +Otherwise it returns \-1. +.SS free_pair +Marks the given color pair as unused, +i.e., like color pair 0. +.SH RETURN VALUE +.PP +The \fBalloc_pair\fP function returns a color pair number in the range +1 through \fBCOLOR_PAIRS\fP\-1, unless it encounters an error updating +its fast index to the color pair values, preventing it from allocating +a color pair. +In that case, it returns \-1. +.PP +The \fBfind_pair\fP function returns a color pair number if the +given color combination has been associated with a color pair, +or \-1 if not. +.PP +Likewise, \fBfree_pair\fP returns \fBOK\fP unless it encounters an +error updating the fast index or if no such color pair is in use. +.SH PORTABILITY +These routines are specific to ncurses. +They were not supported on +Version 7, BSD or System V implementations. +It is recommended that +any code depending on them be conditioned using NCURSES_VERSION. +.SH SEE ALSO +\fBcurs_color\fR(3X). +.SH AUTHOR +Thomas Dickey. diff --git a/deps/ncurses-6.3/man/panel.3x b/deps/ncurses-6.3/man/panel.3x new file mode 100644 index 0000000..932ef48 --- /dev/null +++ b/deps/ncurses-6.3/man/panel.3x @@ -0,0 +1,279 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: panel.3x,v 1.39 2020/02/15 21:06:40 tom Exp $ +.TH panel 3X "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +panel \- panel stack extension for curses +.SH SYNOPSIS +\fB#include <panel.h>\fR +.P +\fBcc [flags] sourcefiles \-lpanel \-lncurses\fR +.P +\fBPANEL *new_panel(WINDOW *\fIwin\fB);\fR +.sp +\fBint bottom_panel(PANEL *\fIpan\fB);\fR +.br +\fBint top_panel(PANEL *\fIpan\fB);\fR +.br +\fBint show_panel(PANEL *\fIpan\fB);\fR +.br +\fBvoid update_panels(void);\fR +.br +\fBint hide_panel(PANEL *\fIpan\fB);\fR +.sp +\fBWINDOW *panel_window(const PANEL *\fIpan\fB);\fR +.br +\fBint replace_panel(PANEL *\fIpan\fB, WINDOW *\fIwindow\fB);\fR +.br +\fBint move_panel(PANEL *\fIpan\fB, int \fIstarty\fB, int \fIstartx\fB);\fR +.br +\fBint panel_hidden(const PANEL *\fIpan\fB);\fR +.sp +\fBPANEL *panel_above(const PANEL *\fIpan\fB);\fR +.br +\fBPANEL *panel_below(const PANEL *\fIpan\fB);\fR +.sp +\fBint set_panel_userptr(PANEL *\fIpan\fB, const void *\fIptr\fB);\fR +.br +\fBconst void *panel_userptr(const PANEL *\fIpan\fB);\fR +.sp +\fBint del_panel(PANEL *\fIpan\fB);\fR +.sp +/* ncurses-extensions */ +.br +\fBPANEL *ground_panel(SCREEN *\fIsp\fB);\fR +.br +\fBPANEL *ceiling_panel(SCREEN *\fIsp\fB);\fR +.br +.SH DESCRIPTION +Panels are \fBcurses\fR(3X) windows with the added feature of +depth. +Panel functions allow the use of stacked windows and ensure +the proper portions of each window and the curses \fBstdscr\fR window are +hidden or displayed when panels are added, moved, modified or removed. +The set of currently visible panels is the stack of panels. +The +\fBstdscr\fR window is beneath all panels, and is not considered part +of the stack. +.P +A window is associated with every panel. +The panel routines enable +you to create, move, hide, and show panels, as well as position a +panel at any desired location in the stack. +.P +Panel routines are a functional layer added to \fBcurses\fR(3X), make only +high-level curses calls, and work anywhere terminfo curses does. +.SH FUNCTIONS +.\" --------- +.SS bottom_panel +\fBbottom_panel(\fIpan\fB)\fR +puts panel \fIpan\fP at the bottom of all panels. +.\" --------- +.SS ceiling_panel +\fBceiling_panel(\fIsp\fB)\fR +acts like \fBpanel_below(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP. +.\" --------- +.SS del_panel +\fBdel_panel(\fIpan\fB)\fR +removes the given panel \fIpan\fP from the stack and deallocates the +\fBPANEL\fR structure (but not its associated window). +.\" --------- +.SS ground_panel +\fBground_panel(\fIsp\fB)\fR +acts like \fBpanel_above(NULL)\fP, for the given \fBSCREEN\fP \fIsp\fP. +.\" --------- +.SS hide_panel +\fBhide_panel(\fIpan\fB)\fR +removes the given panel \fIpan\fP from the panel stack +and thus hides it from view. +The \fBPANEL\fR structure is not lost, merely removed from the stack. +.\" --------- +.SS move_panel +\fBmove_panel(\fIpan\fB,\fIstarty\fB,\fIstartx\fB)\fR +moves the given panel \fIpan\fP's window so that its upper-left corner is at +\fIstarty\fR, \fIstartx\fR. +It does not change the position of the panel in the stack. +Be sure to use this function, not \fBmvwin\fR(3X), to move a panel window. +.\" --------- +.SS new_panel +\fBnew_panel(\fIwin\fB)\fR allocates a \fBPANEL\fR structure, +associates it with \fIwin\fR, places the panel on the top of the stack +(causes it to be displayed above any other panel) and returns a +pointer to the new panel. +.\" --------- +.SS panel_above +\fBpanel_above(\fIpan\fB)\fR +returns a pointer to the panel above \fIpan\fP. +If the panel argument is +\fB(PANEL *)0\fR, it returns a pointer to the bottom panel in the stack. +.\" --------- +.SS panel_below +\fBpanel_below(\fIpan\fB)\fR +returns a pointer to the panel just below \fIpan\fP. +If the panel argument +is \fB(PANEL *)0\fR, it returns a pointer to the top panel in the stack. +.\" --------- +.SS panel_hidden +\fBpanel_hidden(\fIpan\fB)\fR +returns \fBTRUE\fP if the panel \fIpan\fP is in the panel stack, +\fBFALSE\fP if it is not. +If the panel is a null pointer, return \fBERR\fP. +.\" --------- +.SS panel_userptr +\fBpanel_userptr(\fIpan\fB)\fR +returns the user pointer for a given panel \fIpan\fP. +.\" --------- +.SS panel_window +\fBpanel_window(\fIpan\fB)\fR +returns a pointer to the window of the given panel \fIpan\fP. +.\" --------- +.SS replace_panel +\fBreplace_panel(\fIpan\fB,\fIwindow\fB)\fR +replaces the current window of panel \fIpan\fP with \fIwindow\fR +This is useful, for example if you want to resize a panel. +In \fBncurses\fR, you can call \fBreplace_panel\fR +to resize a panel using a window resized with \fBwresize\fR(3X). +It does not change the position of the panel in the stack. +.\" --------- +.SS set_panel_userptr +\fBset_panel_userptr(\fIpan\fB,\fIptr\fB)\fR +sets the panel's user pointer. +.\" --------- +.SS show_panel +\fBshow_panel(\fIpan\fB)\fR +makes a hidden panel visible by placing it on top of the panels in the +panel stack. +See \fBCOMPATIBILITY\fP below. +.\" --------- +.SS top_panel +\fBtop_panel(\fIpan\fB)\fR +puts the given visible panel \fIpan\fP on top of all panels in the stack. +See \fBCOMPATIBILITY\fP below. +.\" --------- +.SS update_panels +\fBupdate_panels()\fR +refreshes the \fIvirtual screen\fP to reflect the relations between the +panels in the stack, but does not call \fBdoupdate\fP(3X) to refresh the +\fIphysical screen\fP. +Use this function and not \fBwrefresh\fP(3X) or \fBwnoutrefresh\fP(3X). +.PP +\fBupdate_panels\fP may be called more than once before a call to +\fBdoupdate\fP, but \fBdoupdate\fP is the function responsible for updating +the \fIphysical screen\fP. +.SH DIAGNOSTICS +Each routine that returns a pointer returns \fBNULL\fR if an error +occurs. +Each routine that returns an int value returns \fBOK\fR if it +executes successfully and \fBERR\fR if not. +.PP +Except as noted, the \fIpan\fP and \fIwindow\fP parameters must be non-null. +If those are null, an error is returned. +.PP +The \fBmove_panel\fP function uses \fBmvwin\fP(3X), +and will return an error if \fBmvwin\fP returns an error. +.SH COMPATIBILITY +Reasonable care has been taken to ensure compatibility +with the native panel facility introduced in System V (inspection of +the SVr4 manual pages suggests the programming interface is unchanged). +The \fBPANEL\fR data structures are merely similar. +The programmer +is cautioned not to directly use \fBPANEL\fR fields. +.P +The functions \fBshow_panel\fR and \fBtop_panel\fR are identical +in this implementation, and work equally well with displayed or hidden +panels. +In the native System V implementation, \fBshow_panel\fR is +intended for making a hidden panel visible (at the top of the stack) +and \fBtop_panel\fR is intended for making an already-visible panel +move to the top of the stack. +You are cautioned to use the correct +function to ensure compatibility with native panel libraries. +.SH NOTE +In your library list, libpanel.a should be before libncurses.a; that is, +you should say \*(``\-lpanel \-lncurses\*('', not the other way around +(which would give a link-error with static libraries). +.SH PORTABILITY +.PP +The panel facility was documented in SVr4.2 in +\fICharacter User Interface Programming (UNIX SVR4.2)\fP. +.PP +It is not part of X/Open Curses. +.PP +A few implementations exist: +.bP +Systems based on SVr4 source code, +e.g., Solaris, provide this library. +.bP +\fBncurses\fP (since version 0.6 in 1993) +and \fBPDCurses\fP (since version 2.2 in 1995) +provide a panel library whose common ancestor +was a public domain implementation by Warren Tucker +published in \fIu386mon\fP 2.20 (1990). +.IP +According to Tucker, the SystemV panel library +was first released in SVr3.2 (1988), +and his implementation helped with a port to SVr3.1 (1987). +.IP +Several developers have improved each of these; +they are no longer the same as Tucker's implementation. +.bP +NetBSD 8 (2018) +has a panel library begun by Valery Ushakov in 2015. +This is based on the AT&T documentation. +.SH FILES +.P +panel.h +interface for the panels library +.P +libpanel.a +the panels library itself +.SH SEE ALSO +\fBcurses\fR(3X), +\fBcurs_variables\fR(3X), +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). +.SH AUTHOR +.PP +Originally written by Warren Tucker <wht@n4hgf.mt-park.ga.us>, +primarily to assist in porting \fIu386mon\fP to systems without a native +panels library. +.PP +Repackaged for ncurses by Zeyd ben-Halim. +.PP +Juergen Pfeifer and Thomas E. Dickey revised/improved the library. diff --git a/deps/ncurses-6.3/man/resizeterm.3x b/deps/ncurses-6.3/man/resizeterm.3x new file mode 100644 index 0000000..ae5106e --- /dev/null +++ b/deps/ncurses-6.3/man/resizeterm.3x @@ -0,0 +1,143 @@ +.\"*************************************************************************** +.\" Copyright 2018-2019,2020 Thomas E. Dickey * +.\" Copyright 1998-2015,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: Thomas E. Dickey 1996-on +.\" +.\" $Id: resizeterm.3x,v 1.28 2020/10/17 23:55:41 tom Exp $ +.TH resizeterm 3X "" +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fBis_term_resized\fR, +\fBresize_term\fR, +\fBresizeterm\fR \- change the curses terminal size +.SH SYNOPSIS +\fB#include <curses.h>\fR +.sp +\fBbool is_term_resized(int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR +.br +\fBint resize_term(int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR +.br +\fBint resizeterm(int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR +.SH DESCRIPTION +.PP +This is an extension to the curses library. +It provides callers with a hook into the \fBncurses\fR data to resize windows, +primarily for use by programs running in an X Window terminal (e.g., xterm). +.SS resizeterm +.PP +The function \fBresizeterm\fR resizes the standard and current windows +to the specified dimensions, and adjusts other bookkeeping data used by +the \fBncurses\fR library that record the window dimensions +such as the \fBLINES\fP and \fBCOLS\fP variables. +.SS resize_term +.PP +Most of the work is done by the inner function \fBresize_term\fR. +The outer function \fBresizeterm\fR adds bookkeeping +for the \fBSIGWINCH\fP handler, +as well as repainting the soft-key area (see \fBslk_touch\fP(3X)). +.PP +When resizing the windows, +\fBresize_term\fR blank-fills the areas that are extended. +The calling application should fill in these areas with appropriate data. +.PP +The \fBresize_term\fR function attempts to resize all windows. +However, due to the calling convention of pads, +it is not possible to resize these +without additional interaction with the application. +.PP +When resizing windows, \fBresize_term\fR recursively adjusts subwindows, +keeping them within the updated parent window's limits. +If a top-level window happens to extend to the screen's limits, +then on resizing the window, \fBresize_term\fR will keep the window +extending to the corresponding limit, regardless of whether the +screen has shrunk or grown. +.SS is_term_resized +.PP +A support function \fBis_term_resized\fR is provided so that applications +can check if the \fBresize_term\fR function would modify the window structures. +It returns \fBTRUE\fP if the windows would be modified, +and \fBFALSE\fP otherwise. +.SH RETURN VALUE +Except as noted, these functions return +the integer \fBERR\fR upon failure and \fBOK\fR on success. +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 \fBSIGWINCH\fP), care should be taken to avoid invoking them in a +context where \fBmalloc\fR or \fBrealloc\fR may have been interrupted, +since it uses those functions. +.PP +If ncurses is configured to supply its own \fBSIGWINCH\fP handler, +.bP +on receipt of a \fBSIGWINCH\fP, the handler sets a flag +.bP +which is tested in \fBwgetch\fP(3X) and \fBdoupdate\fP, +.bP +in turn, calling the \fBresizeterm\fR function, +.bP +which \fBungetch\fP's a \fBKEY_RESIZE\fR which +will be read on the next call to \fBwgetch\fR. +.IP +The \fBKEY_RESIZE\fP alerts an application that the screen size has changed, +and that it should repaint special features such as pads that cannot +be done automatically. +.IP +Calling \fBresizeterm\fP or \fBresize_term\fP +directly from a signal handler is unsafe. +This indirect method is used to provide a safe way to resize the ncurses +data structures. +.PP +If the environment variables \fBLINES\fP or \fBCOLUMNS\fP are set, +this overrides the library's use of the window size obtained from +the operating system. +Thus, even if a \fBSIGWINCH\fP is received, +no screen size change may be recorded. +.SH PORTABILITY +.PP +It is possible to resize the screen with SVr4 curses, +by +.bP +exiting curses with \fBendwin\fP(3X) and +.bP +resuming using \fBrefresh\fP(3X). +.PP +Doing that clears the screen and is visually distracting. +.PP +This extension of ncurses was introduced in mid-1995. +It was adopted in NetBSD curses (2001) and PDCurses (2003). +.SH SEE ALSO +\fBcurs_getch\fR(3X), +\fBcurs_variables\fR(3X), +\fBwresize\fR(3X). +.SH AUTHOR +Thomas Dickey (from an equivalent function written in 1988 for BSD curses). diff --git a/deps/ncurses-6.3/man/scr_dump.5 b/deps/ncurses-6.3/man/scr_dump.5 new file mode 100644 index 0000000..43ee58c --- /dev/null +++ b/deps/ncurses-6.3/man/scr_dump.5 @@ -0,0 +1,429 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 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. * +.\"*************************************************************************** +.\" +.\" $Id: scr_dump.5,v 1.17 2021/06/17 21:26:02 tom Exp $ +.TH scr_dump 5 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +scr_dump \- format of curses screen-dumps. +.SH SYNOPSIS +.B scr_dump +.SH DESCRIPTION +.PP +The curses library provides applications with the ability to write the +contents of a window to an external file using \fBscr_dump\fP or \fBputwin\fP, +and read it back using \fBscr_restore\fP or \fBgetwin\fP. +.PP +The \fBputwin\fP and \fBgetwin\fP functions do the work; +while \fBscr_dump\fP and \fBscr_restore\fP conveniently save and restore +the whole screen, i.e., \fBstdscr\fP. +.SS ncurses6 +.PP +A longstanding implementation of screen-dump was +revised with ncurses6 to remedy problems with the earlier approach: +.bP +A \*(``magic number\*('' is written to the beginning of the dump file, +allowing applications (such as \fBfile\fP(1)) to recognize curses dump files. +.IP +Because ncurses6 uses a new format, +that requires a new magic number +was unused by other applications. +This 16-bit number was unused: +.NS +0x8888 (octal \*(``\\210\\210\*('') +.NE +.IP +but to be more certain, this 32-bit number was chosen: +.NS +0x88888888 (octal \*(``\\210\\210\\210\\210\*('') +.NE +.IP +This is the pattern submitted to the maintainers of the \fBfile\fP program: +.NS +# +# ncurses5 (and before) did not use a magic number, +# making screen dumps "data". +# +# ncurses6 (2015) uses this format, ignoring byte-order +0 string \\210\\210\\210\\210ncurses ncurses6 screen image +# +.NE +.bP +The screen dumps are written in textual form, +so that internal data sizes are not directly related to the dump-format, and +enabling the library to read dumps from either narrow- or wide-character- +configurations. +.IP +The \fInarrow\fP library configuration holds characters and video attributes +in a 32-bit \fBchtype\fP, while the \fIwide-character\fP library stores +this information in the \fBcchar_t\fP structure, which is much larger than +32-bits. +.bP +It is possible to read a screen dump into a terminal with a different +screen-size, +because the library truncates or fills the screen as necessary. +.bP +The ncurses6 \fBgetwin\fP reads the legacy screen dumps from ncurses5. +.SS ncurses5 (legacy) +.PP +The screen-dump feature was added to ncurses in June 1995. +While there were fixes and improvements in succeeding years, +the basic scheme was unchanged: +.bP +The \fBWINDOW\fP structure was written in binary form. +.bP +The \fBWINDOW\fP structure refers to lines of data, +which were written as an array of binary data following the \fBWINDOW\fP. +.bP +When \fBgetwin\fP restored the window, +it would keep track of offsets into the array of line-data +and adjust the \fBWINDOW\fP structure which was read back into memory. +.PP +This is similar to Unix SystemV, +but does not write a \*(``magic number\*('' to identify the file format. +.SH PORTABILITY +.PP +There is no standard format for \fBputwin\fP. +This section gives a brief description of the existing formats. +.SS X/Open Curses +.PP +Refer to \fIX/Open Curses, Issue 7\fP (2009). +.PP +X/Open's documentation for \fIenhanced curses\fP says only: +.RS 3 +.PP +The \fIgetwin(\ ) \fPfunction reads window-related data +stored in the file by \fIputwin(\ )\fP. +The function +then creates and initializes a new window using that data. +.PP +The \fIputwin(\ )\fP function writes all data associated +with \fIwin\fP into the \fIstdio\fP stream to which \fIfilep\fP +points, using an \fBunspecified format\fP. +This information can be retrieved later using \fIgetwin(\ )\fP. +.RE +.PP +In the mid-1990s when the X/Open Curses document was written, +there were still systems using older, less capable curses libraries +(aside from the BSD curses library which was not relevant to X/Open +because it did not meet the criteria for \fIbase curses\fP). +The document explained the term \*(``enhanced\*('' as follows: +.RS 3 +.bP +Shading is used to identify \fIX/Open Enhanced Curses\fP material, +relating to interfaces included to provide enhanced capabilities +for applications originally written to be compiled on systems +based on the UNIX operating system. +Therefore, the features described may not be present on systems +that conform to \fBXPG4 or to earlier XPG releases\fP. +The relevant reference pages may provide additional +or more specific portability warnings about use of the material. +.RE +.PP +In the foregoing, emphasis was added to \fBunspecified format\fP +and to \fBXPG4 or to earlier XPG releases\fP, +for clarity. +.SS Unix SystemV +.PP +Unix SystemV curses identified the file format by writing a +\*(``magic number\*('' at the beginning of the dump. +The \fBWINDOW\fP data and the lines of text follow, all in binary form. +.PP +The Solaris curses source has these definitions: +.NS +/* terminfo magic number */ +#define MAGNUM 0432 + +/* curses screen dump magic number */ +#define SVR2_DUMP_MAGIC_NUMBER 0433 +#define SVR3_DUMP_MAGIC_NUMBER 0434 +.NE +.PP +That is, the feature was likely introduced in SVr2 (1984), +and improved in SVr3 (1987). +The Solaris curses source has no magic number for SVr4 (1989). +Other operating systems (AIX and HPUX) use a magic number which would +correspond to this definition: +.NS +/* curses screen dump magic number */ +#define SVR4_DUMP_MAGIC_NUMBER 0435 +.NE +.PP +That octal number in bytes is 001, 035. +Because most Unix vendors use big-endian hardware, +the magic number is written with the high-order byte first, e.g., +.NS +\001\035 +.NE +.PP +After the magic number, the \fBWINDOW\fP structure and line-data are +written in binary format. +While the magic number used by the Unix systems can be seen using \fBod\fP(1), +none of the Unix systems documents the format used for screen-dumps. +.PP +The Unix systems do not use identical formats. +While collecting information for for this manual page, +the \fIsavescreen\fP test-program +produced dumps of different size +(all on 64-bit hardware, on 40x80 screens): +.bP +AIX (51817 bytes) +.bP +HPUX (90093 bytes) +.bP +Solaris 10 (13273 bytes) +.bP +ncurses5 (12888 bytes) +.SS Solaris +.PP +As noted above, Solaris curses has no magic number corresponding +to SVr4 curses. +This is odd since Solaris was the first operating system +to pass the SVr4 guidelines. +Solaris has two versions of curses: +.bP +The default curses library uses the SVr3 magic number. +.bP +There is an alternate curses library in \fB/usr/xpg4\fP. +This uses a textual format with no magic number. +.IP +According to the copyright notice, the \fIxpg4\fP Solaris curses library was +developed by MKS (Mortice Kern Systems) from 1990 to 1995. +.IP +Like ncurses6, there is a file-header with parameters. +Unlike ncurses6, the contents of the window are written piecemeal, +with coordinates and attributes for each chunk of text rather +than writing the whole window from top to bottom. +.SS PDCurses +.PP +PDCurses added support for screen dumps in version 2.7 (2005). +Like Unix SystemV and ncurses5, +it writes the \fBWINDOW\fP structure in binary, +but begins the file with its three-byte identifier \*(``PDC\*('', +followed by a one-byte version, +e.g., +.NS + \*(``PDC\\001\*('' +.NE +.SS NetBSD +.PP +As of April 2017, NetBSD curses does +not support \fBscr_dump\fP and \fBscr_restore\fP +(or \fBscr_init\fP, \fBscr_set\fP), +although it has \fBputwin\fP and \fBgetwin\fP. +.PP +Like ncurses5, NetBSD \fBputwin\fP does not identify its dumps with a +useful magic number. +It writes +.bP +the curses shared library major and minor versions +as the first two bytes (e.g., 7 and 1), +.bP +followed by a binary dump of the \fBWINDOW\fP, +.bP +some data for wide-characters referenced by the \fBWINDOW\fP structure, and +.bP +finally, lines as done by other implementations. +.SH EXAMPLE +.PP +Given a simple program which writes text to the screen +(and for the sake of example, limiting the screen-size to 10x20): +.NS +#include <curses.h> + +int +main(void) +{ + putenv("LINES=10"); + putenv("COLUMNS=20"); + initscr(); + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + init_pair(2, COLOR_RED, COLOR_BLACK); + bkgd(COLOR_PAIR(1)); + move(4, 5); + attron(A_BOLD); + addstr("Hello"); + move(5, 5); + attroff(A_BOLD); + attrset(A_REVERSE | COLOR_PAIR(2)); + addstr("World!"); + refresh(); + scr_dump("foo.out"); + endwin(); + return 0; +} +.NE +.PP +When run using ncurses6, the output looks like this: +.NS +\\210\\210\\210\\210ncurses 6.0.20170415 +_cury=5 +_curx=11 +_maxy=9 +_maxx=19 +_flags=14 +_attrs=\\{REVERSE|C2} +flag=_idcok +_delay=-1 +_regbottom=9 +_bkgrnd=\\{NORMAL|C1}\\s +rows: +1:\\{NORMAL|C1}\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +2:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +3:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +4:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +5:\\s\\s\\s\\s\\s\\{BOLD}Hello\\{NORMAL}\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +6:\\s\\s\\s\\s\\s\\{REVERSE|C2}World!\\{NORMAL|C1}\\s\\s\\s\\s\\s\\s\\s\\s\\s +7:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +8:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +9:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +10:\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s\\s +.NE +.PP +The first four octal escapes are actually nonprinting characters, +while the remainder of the file is printable text. +You may notice: +.bP +The actual color pair values are not written to the file. +.bP +All characters are shown in printable form; spaces are \*(``\\s\*('' to +ensure they are not overlooked. +.bP +Attributes are written in escaped curly braces, e.g., \*(``\\{BOLD}\*('', +and may include a color-pair (C1 or C2 in this example). +.bP +The parameters in the header are written out only if they are nonzero. +When reading back, order does not matter. +.ne 10 +.PP +Running the same program with Solaris \fIxpg4\fP curses gives this dump: +.NS +MAX=10,20 +BEG=0,0 +SCROLL=0,10 +VMIN=1 +VTIME=0 +FLAGS=0x1000 +FG=0,0 +BG=0,0, +0,0,0,1, +0,19,0,0, +1,0,0,1, +1,19,0,0, +2,0,0,1, +2,19,0,0, +3,0,0,1, +3,19,0,0, +4,0,0,1, +4,5,0x20,0,Hello +4,10,0,1, +4,19,0,0, +5,0,0,1, +5,5,0x4,2,World! +5,11,0,1, +5,19,0,0, +6,0,0,1, +6,19,0,0, +7,0,0,1, +7,19,0,0, +8,0,0,1, +8,19,0,0, +9,0,0,1, +9,19,0,0, +CUR=11,5 +.NE +.PP +Solaris \fBgetwin\fP requires that all parameters are present, and +in the same order. +The \fIxpg4\fP curses library does not know about the \fBbce\fP +(back color erase) capability, and does not color the window background. +.ne 10 +.PP +On the other hand, the SVr4 curses library does know about the background color. +However, its screen dumps are in binary. +Here is the corresponding dump (using \*(``od -t x1\*(''): +.NS +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 +0000060 00 00 00 80 00 00 20 00 00 00 ff ff ff ff 00 00 +0000100 ff ff ff ff 00 00 00 00 20 80 00 00 20 80 00 00 +0000120 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 +* +0000620 20 80 00 00 20 80 00 00 20 80 00 00 48 80 00 04 +0000640 65 80 00 04 6c 80 00 04 6c 80 00 04 6f 80 00 04 +0000660 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 +* +0000740 20 80 00 00 20 80 00 00 20 80 00 00 57 00 81 00 +0000760 6f 00 81 00 72 00 81 00 6c 00 81 00 64 00 81 00 +0001000 21 00 81 00 20 80 00 00 20 80 00 00 20 80 00 00 +0001020 20 80 00 00 20 80 00 00 20 80 00 00 20 80 00 00 +* +0001540 20 80 00 00 20 80 00 00 00 00 f6 d1 01 00 f6 d1 +0001560 08 00 00 00 40 00 00 00 00 00 00 00 00 00 00 07 +0001600 00 04 00 01 00 01 00 00 00 01 00 00 00 00 00 00 +0001620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 +* +0002371 +.NE +.SH SEE ALSO +.PP +\fBcurs_scr_dump\fR(3X), +\fBcurs_util\fR(3X). +.SH AUTHORS +.PP +Thomas E. Dickey +.br +extended screen-dump format for ncurses 6.0 (2015) +.sp +Eric S. Raymond +.br +screen dump feature in ncurses 1.9.2d (1995) diff --git a/deps/ncurses-6.3/man/tabs.1 b/deps/ncurses-6.3/man/tabs.1 new file mode 100644 index 0000000..c6a2127 --- /dev/null +++ b/deps/ncurses-6.3/man/tabs.1 @@ -0,0 +1,293 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 2008-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: tabs.1,v 1.32 2021/10/16 13:37:43 tom Exp $ +.TH @TABS@ 1 "" +.ds n 5 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.SH NAME +\fB@TABS@\fR \- set tabs on a terminal +.SH SYNOPSIS +\fB@TABS@\fR [\fIoptions\fR]] \fI[tabstop-list]\fR +.SH DESCRIPTION +.PP +The \fB@TABS@\fP program clears and sets tab-stops on the terminal. +This uses the terminfo \fIclear_all_tabs\fP and \fIset_tab\fP capabilities. +If either is absent, \fB@TABS@\fP is unable to clear/set tab-stops. +The terminal should be configured to use hard tabs, e.g., +.NS +stty tab0 +.NE +.PP +Like \fB@CLEAR@\fR(1), \fB@TABS@\fR writes to the standard output. +You can redirect the standard output to a file (which prevents +\fB@TABS@\fR from actually changing the tabstops), +and later \fBcat\fP the file to the screen, setting tabstops at that point. +.PP +These are hardware tabs, which cannot be queried rapidly by applications +running in the terminal, if at all. +Curses and other full-screen applications may use hardware tabs +in optimizing their output to the terminal. +If the hardware tabstops differ from the information in the terminal +database, the result is unpredictable. +Before running curses programs, +you should either reset tab-stops to the standard interval +.NS +tabs -8 +.NE +.PP +or use the \fB@RESET@\fP program, +since the normal initialization sequences do not ensure that tab-stops +are reset. +.SH OPTIONS +.SS General Options +.TP 5 +.BI \-T "name" +Tell \fB@TABS@\fP which terminal type to use. +If this option is not given, \fB@TABS@\fP will use the \fB$TERM\fP +environment variable. +If that is not set, it will use the \fIansi+tabs\fP entry. +.TP 5 +.B \-d +The debugging option shows a ruler line, followed by two data lines. +The first data line shows the expected tab-stops marked with asterisks. +The second data line shows the actual tab-stops, marked with asterisks. +.TP 5 +.B \-n +This option tells \fB@TABS@\fP to check the options and run any debugging +option, but not to modify the terminal settings. +.TP +\fB\-V\fR +reports the version of ncurses which was used in this program, and exits. +.PP +The \fB@TABS@\fP program processes a single list of tab stops. +The last option to be processed which defines a list is the one that +determines the list to be processed. +.SS Implicit Lists +Use a single number as an option, +e.g., \*(``\fB\-5\fP\*('' to set tabs at the given +interval (in this case 1, 6, 11, 16, 21, etc.). +Tabs are repeated up to the right margin of the screen. +.PP +Use \*(``\fB\-0\fP\*('' to clear all tabs. +.PP +Use \*(``\fB\-8\fP\*('' to set tabs to the standard interval. +.SS Explicit Lists +An explicit list can be defined after the options +(this does not use a \*(``\-\*(''). +The values in the list must be in increasing numeric order, +and greater than zero. +They are separated by a comma or a blank, for example, +.NS +tabs 1,6,11,16,21 +.br +tabs 1 6 11 16 21 +.NE +.PP +Use a \*(``+\*('' to treat a number +as an increment relative to the previous value, +e.g., +.NS +tabs 1,+5,+5,+5,+5 +.NE +.PP +which is equivalent to the 1,6,11,16,21 example. +.SS Predefined Tab-Stops +POSIX defines several predefined lists of tab stops. +.TP 5 +.B \-a +Assembler, IBM S/370, first format +.br +1,10,16,36,72 +.TP 5 +.B \-a2 +Assembler, IBM S/370, second format +.br +1,10,16,40,72 +.TP 5 +.B \-c +COBOL, normal format +.br +1,8,12,16,20,55 +.TP 5 +.B \-c2 +COBOL compact format +.br +1,6,10,14,49 +.TP 5 +.B \-c3 +COBOL compact format extended +.br +1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67 +.TP 5 +.B \-f +FORTRAN +.br +1,7,11,15,19,23 +.TP 5 +.B \-p +PL/I +.br +1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61 +.TP 5 +.B \-s +SNOBOL +.br +1,10,55 +.TP 5 +.B \-u +UNIVAC 1100 Assembler +.br +1,12,20,44 +.SS Margins +A few terminals provide the capability for changing their left/right margins. +The @TABS@ program has an option to use this feature: +.TP 5 +.BI \+m \ margin +The effect depends on whether the terminal has the margin capabilities: +.RS +.bP +If the terminal provides the capability for setting the left margin, +@TABS@ uses this, and adjusts the available width for tab-stops. +.bP +If the terminal does not provide the margin capabilities, +@TABS@ imitates the effect, putting the tab stops at the appropriate +place on each line. +The terminal's left-margin is not modified. +.RE +.IP +If the \fImargin\fP parameter is omitted, the default is 10. +Use \fB\+m0\fP to reset the left margin, +i.e., to the left edge of the terminal's display. +Before setting a left-margin, +@TABS@ resets the margin to reduce problems which might arise +on moving the cursor before the current left-margin. +.PP +When setting or resetting the left-margin, +@TABS@ may reset the right-margin. +.SH PORTABILITY +.PP +\fIIEEE Std 1003.1/The Open Group Base Specifications Issue 7\fP (POSIX.1-2008) +describes a \fBtabs\fP utility. +However +.bP +This standard describes a \fB+m\fP option, to set a terminal's left-margin. +Very few of the entries in the terminal database provide the +\fBsmgl\fP (\fBset_left_margin\fP) or +\fBsmglp\fP (\fBset_left_margin_parm\fP) +capability needed to support the feature. +.bP +There is no counterpart in X/Open Curses Issue 7 for this utility, +unlike \fB@TPUT@\fP(1). +.PP +The \fB\-d\fP (debug) and \fB\-n\fP (no-op) options are extensions not provided +by other implementations. +.PP +A \fBtabs\fP utility appeared in PWB/Unix 1.0 (1977). +There was a reduced version of the \fBtabs\fP utility +in Unix 7th edition and in 3BSD (1979). +The latter supported a single \*(``\-n\*('' option +(to cause the first tab stop to be set on the left margin). +That option is not documented by POSIX. +.PP +The PWB/Unix \fBtabs\fP utility, which was included in System III (1980), +used built-in tables rather than the terminal database, +to support a half-dozen hardcopy terminal (printer) types. +It also had built-in logic to support the left-margin, +as well as a feature for copying the tab settings from a file. +.PP +Later versions of Unix, e.g., SVr4, +added support for the terminal database, +but kept the tables to support the printers. +In an earlier development effort, +the tab-stop initialization provided by \fBtset\fP (1982) +and incorporated into \fBtput\fP uses the terminal database, +.PP +The \fB\+m\fP option was documented +in the Base Specifications Issue 5 (Unix98, 1997), +and omitted in Issue 6 (Unix03, 2004) without documenting the rationale, +though an introductory comment +\fI\*(``and optionally adjusts the margin\*(''\fP remains, +overlooked in the removal. +The documented \fBtabs\fP utility in Issues 6 and later has no mechanism +for setting margins. +The \fB\+m\fP option in this implementation differs from the feature +in SVr4 by using terminal capabilities rather than built-in tables. +.PP +POSIX documents no limits on the number of tab stops. +Documentation for other implementations states that there is a limit on the +number of tab stops +(e.g., 20 in PWB/Unix's \fBtabs\fP utility). +While some terminals may not accept an arbitrary number +of tab stops, this implementation will attempt to set tab stops up to the +right margin of the screen, if the given list happens to be that long. +.PP +The \fIRationale\fP section of the POSIX documentation goes into some +detail about the ways the committee considered redesigning the +\fBtabs\fP and \fBtput\fP utilities, +without proposing an improved solution. +It comments that +.RS 5 +.PP +no known historical version of tabs supports the capability of setting +arbitrary tab stops. +.RE +.PP +However, the \fIExplicit Lists\fP described in this manual page +were implemented in PWB/Unix. +Those provide the capability of setting abitrary tab stops. +.SH SEE ALSO +\fB@INFOCMP@\fR(1M), +\fB@TSET@\fR(1), +\fBcurses\fR(3X), +\fBterminfo\fR(\*n). +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-6.3/man/term.5 b/deps/ncurses-6.3/man/term.5 new file mode 100644 index 0000000..3a4a1d0 --- /dev/null +++ b/deps/ncurses-6.3/man/term.5 @@ -0,0 +1,417 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: term.5,v 1.40 2021/08/15 19:38:47 tom Exp $ +.TH term 5 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ds n 5 +.ds d @TERMINFO@ +.SH NAME +term \- format of compiled term file. +.SH SYNOPSIS +.B term +.SH DESCRIPTION +.SS STORAGE LOCATION +Compiled terminfo descriptions are placed under the directory \fB\*d\fP. +Two configurations are supported (when building the \fBncurses\fP libraries): +.TP 5 +.B directory tree +A two-level scheme is used to avoid a linear search +of a huge \s-1UNIX\s+1 system directory: \fB\*d/c/name\fP where +.I name +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. +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, +and records containing only aliases pointing to the primary name. +.IP +If built to write hashed databases, +\fBncurses\fP can still read terminfo databases organized as a directory tree, +but cannot write entries into the directory tree. +It can write (or rewrite) entries in the hashed database. +.IP +\fBncurses\fP distinguishes the two cases in the TERMINFO and TERMINFO_DIRS +environment variable by assuming a directory tree for entries that +correspond to an existing directory, +and 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 +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. +.RE +.PP +The \fIheader\fP section begins the file. +This section contains six short integers in the format +described below. +These integers are +.RS 5 +.TP 5 +(1) the \fImagic number\fP (octal 0432); +.TP 5 +(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; +.TP 5 +(6) the size, in bytes, of the \fIstring table\fP. +.RE +.PP +The capabilities in the +\fIboolean flags\fP, +\fInumbers\fP, and +\fIstrings\fP +sections are in the same order as the file <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. +.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: +.bP +If a capability is absent from this terminal, +@TIC@ stores a \-1 in the corresponding table. +.IP +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. +.IP +The integer value \-2 is represented by two bytes 0377, 0376. +.br +The boolean value \-2 is represented by the byte 0376. +.br +.bP +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, +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) +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, +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 +by addressing a word on an odd byte boundary. +All short integers are aligned on a short word boundary. +.PP +The \fInumbers\fP section is similar to the \fIboolean flags\fP section. +Each capability takes up two bytes, +and is stored as a little-endian short integer. +.PP +The \fIstrings\fP section is also similar. +Each capability is stored as a short integer. +The capability value is an index into the \fIstring table\fP. +.PP +The \fIstring table\fP is the last section. +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. +.SS EXTENDED STORAGE FORMAT +The previous section describes the conventional terminfo 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. +.PP +The \fBncurses\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. +\fBncurses\fP checks the size, +and if it exceeds that due to the predefined data, +continues to parse according to its own scheme. +.PP +First, it reads the extended header (5 short integers): +.RS 5 +.TP 5 +(1) +count of extended boolean capabilities +.TP 5 +(2) +count of extended numeric capabilities +.TP 5 +(3) +count of extended string capabilities +.TP 5 +(4) +count of the items in extended string table +.TP 5 +(5) +size of the extended string table in bytes +.RE +.PP +The count- and size-values for the extended string table +include the extended capability \fInames\fP as well as +extended capability \fIvalues\fP. +.PP +Using the counts and sizes, \fBncurses\fP 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. +.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. +. +.SS EXTENDED NUMBER FORMAT +.PP +On occasion, 16-bit signed integers are not large enough. +With \fBncurses\fP 6.1, a new format was introduced by making a few changes +to the legacy format: +.bP +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. +.SH PORTABILITY +.SS setupterm +.PP +Note that it is possible for +.B setupterm +to expect a different set of capabilities +than are actually present in the file. +Either the database may have been updated since +.B setupterm +was recompiled +(resulting in extra unrecognized entries in the file) +or the program may have been recompiled more recently +than the database was updated +(resulting in missing entries). +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. +.SS Binary format +.PP +X/Open Curses does not specify a format for the terminfo database. +UNIX System V 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 XSI Curses extensions. +See \fBterminfo\fR(\*n) for detailed +discussion of terminfo source compatibility issues. +.PP +This implementation is by default compatible with the binary +terminfo format used by Solaris 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 ncurses +with different configuration options. +.SS Magic codes +.PP +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 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)). +This implementation uses 01036 as a continuation of that sequence, +but with a different high-order byte to avoid confusion. +.SS The TERMTYPE structure +.PP +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. +.SS Mixed-case terminal names +.PP +A small number of terminal descriptions use uppercase characters in +their names. +If the underlying filesystem ignores the difference between +uppercase and lowercase, +\fBncurses\fP represents the \*(``first character\*('' +of the terminal name used as +the intermediate level of a directory tree in (two-character) hexadecimal form. +.SH EXAMPLE +As an example, here is a description for the Lear-Siegler +ADM\-3, a popular though rather stupid early terminal: +.NS +adm3a|lsi adm3a, + am, + cols#80, lines#24, + bel=^G, clear=\032$<1>, cr=^M, cub1=^H, cud1=^J, + cuf1=^L, cup=\\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + home=^^, ind=^J, +.NS +.PP +and a hexadecimal dump of the compiled terminal description: +.NS +.ft CW +\s-20000 1a 01 10 00 02 00 03 00 82 00 31 00 61 64 6d 33 ........ ..1.adm3 +0010 61 7c 6c 73 69 20 61 64 6d 33 61 00 00 01 50 00 a|lsi ad m3a...P. +0020 ff ff 18 00 ff ff 00 00 02 00 ff ff ff ff 04 00 ........ ........ +0030 ff ff ff ff ff ff ff ff 0a 00 25 00 27 00 ff ff ........ ..%.'... +0040 29 00 ff ff ff ff 2b 00 ff ff 2d 00 ff ff ff ff ).....+. ..-..... +0050 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +0060 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +0070 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +0080 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +0090 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +00a0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +00b0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +00c0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +00d0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +00e0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +00f0 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +0100 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +0110 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ........ ........ +0120 ff ff ff ff ff ff 2f 00 07 00 0d 00 1a 24 3c 31 ....../. .....$<1 +0130 3e 00 1b 3d 25 70 31 25 7b 33 32 7d 25 2b 25 63 >..=%p1% {32}%+%c +0140 25 70 32 25 7b 33 32 7d 25 2b 25 63 00 0a 00 1e %p2%{32} %+%c.... +0150 00 08 00 0c 00 0b 00 0a 00 ........ .\s+2 +.ft R +.NE +.sp +.SH LIMITS +Some limitations: +.bP +total compiled entries cannot exceed 4096 bytes in the legacy format. +.bP +total compiled entries cannot exceed 32768 bytes in the extended format. +.bP +the name field cannot exceed 128 bytes. +.PP +Compiled entries are limited to 32768 bytes because offsets into the +\fIstrings table\fP use two-byte integers. +The legacy format could have supported 32768-byte entries, +but was limited a virtual memory page's 4096 bytes. +.SH FILES +\*d/*/* compiled terminal capability database +.SH SEE ALSO +\fBcurses\fR(3X), \fBterminfo\fR(\*n). +.SH AUTHORS +Thomas E. Dickey +.br +extended terminfo format for ncurses 5.0 +.br +hashed database support for ncurses 5.6 +.br +extended number support for ncurses 6.1 +.sp +Eric S. Raymond +.br +documented legacy terminfo format, e.g., from pcurses. diff --git a/deps/ncurses-5.9/man/term.7 b/deps/ncurses-6.3/man/term.7 similarity index 78% rename from deps/ncurses-5.9/man/term.7 rename to deps/ncurses-6.3/man/term.7 index 78aa095..4e66ee7 100644 --- a/deps/ncurses-5.9/man/term.7 +++ b/deps/ncurses-6.3/man/term.7 @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2007,2010 Free Software Foundation, Inc. * +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2011,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 * @@ -26,8 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: term.7,v 1.22 2010/12/04 18:41:07 tom Exp $ +.\" $Id: term.7,v 1.30 2021/08/15 19:39:57 tom Exp $ .TH term 7 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' .ds n 5 .ds d @TERMINFO@ .SH NAME @@ -35,7 +40,8 @@ term \- conventions for naming terminal types .SH DESCRIPTION .PP The environment variable \fBTERM\fR should normally contain the type name of -the terminal, console or display-device type you are using. This information +the terminal, console or display-device type you are using. +This information is critical for all screen-oriented programs, including your editor and mailer. .PP A default \fBTERM\fR value will be set on a per-line basis by either @@ -43,19 +49,23 @@ A default \fBTERM\fR value will be set on a per-line basis by either or \fB/etc/ttys\fR (BSD UNIXes). This will nearly always suffice for workstation and microcomputer consoles. .PP -If you use a dialup line, the type of device attached to it may vary. Older -UNIX systems pre-set a very dumb terminal type like `dumb' or `dialup' on -dialup lines. Newer ones may pre-set `vt100', reflecting the prevalence of DEC +If you use a dialup line, the type of device attached to it may vary. +Older UNIX systems pre-set a very dumb terminal type +like \*(``dumb\*('' or \*(``dialup\*('' on dialup lines. +Newer ones may pre-set \*(``vt100\*('', reflecting the prevalence of DEC VT100-compatible terminals and personal-computer emulators. .PP Modern telnets pass your \fBTERM\fR environment variable from the local side to -the remote one. There can be problems if the remote terminfo or termcap entry +the remote one. +There can be problems if the remote terminfo or termcap entry for your type is not compatible with yours, but this situation is rare and -can almost always be avoided by explicitly exporting `vt100' (assuming you -are in fact using a VT100-superset console, terminal, or terminal emulator.) +can almost always be avoided by explicitly exporting \*(``vt100\*('' +(assuming you are in fact using a VT100-superset console, +terminal, or terminal emulator). .PP In any case, you are free to override the system \fBTERM\fR setting to your -taste in your shell profile. The \fBtset\fP(1) utility may be of assistance; +taste in your shell profile. +The \fB@TSET@\fP(1) utility may be of assistance; you can give it a set of rules for deducing or requesting a terminal type based on the tty device and baud rate. .PP @@ -64,11 +74,13 @@ custom entry incorporating options (such as visual bell or reverse-video) 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. To browse a list of all terminal names recognized by the system, do +\*d. +To browse a list of all terminal names recognized by the system, do .sp @TOE@ | more .sp -from your shell. These capability files are in a binary format optimized for +from your shell. +These capability files are in a binary format optimized for retrieval speed (unlike the old text-based \fBtermcap\fR format they replace); to examine an entry, you must use the \fB@INFOCMP@\fR(1M) command. Invoke it as follows: @@ -77,30 +89,39 @@ Invoke it as follows: .sp where \fIentry_name\fR 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). This command dumps a capability file in the text format described by +letter). +This command dumps a capability file in the text format described by \fBterminfo\fR(\*n). .PP The first line of a \fBterminfo\fR(\*n) description gives the names by which -terminfo knows a terminal, separated by `|' (pipe-bar) characters with the last -name field terminated by a comma. The first name field is the type's +terminfo knows a terminal, +separated by \*(``|\*('' (pipe-bar) characters with the last +name field terminated by a comma. +The first name field is the type's \fIprimary name\fR, and is the one to use when setting \fBTERM\fR. The last name field (if distinct from the first) is actually a description of the -terminal type (it may contain blanks; the others must be single words). Name +terminal type (it may contain blanks; the others must be single words). +Name fields between the first and last (if present) are aliases for the terminal, usually historical names retained for compatibility. .PP There are some conventions for how to choose terminal primary names that help -keep them informative and unique. Here is a step-by-step guide to naming +keep them informative and unique. +Here is a step-by-step guide to naming terminals that also explains how to parse them: .PP -First, choose a root name. The root will consist of a lower-case letter -followed by up to seven lower-case letters or digits. You need to avoid using +First, choose a root name. +The root will consist of a lower-case letter +followed by up to seven lower-case letters or digits. +You need to avoid using punctuation characters in root names, because they are used and interpreted as filenames and shell meta-characters (such as !, $, *, ?, etc.) embedded in them -may cause odd and unhelpful behavior. The slash (/), or any other character +may cause odd and unhelpful behavior. +The slash (/), or any other character that may be interpreted by anyone's file system (\e, $, [, ]), is especially dangerous (terminfo is platform-independent, and choosing names with special -characters could someday make life difficult for users of a future port). The +characters could someday make life difficult for users of a future port). +The dot (.) character is relatively safe as long as there is at most one per root name; some historical terminfo names use it. .PP @@ -127,11 +148,14 @@ Following the root name, you may add any reasonable number of hyphen-separated feature suffixes. .TP 5 2p -Has two pages of memory. Likewise 4p, 8p, etc. +Has two pages of memory. +Likewise 4p, 8p, etc. .TP 5 mc -Magic-cookie. Some terminals (notably older Wyses) can only support one -attribute without magic-cookie lossage. Their base entry is usually paired +Magic-cookie. +Some terminals (notably older Wyses) can only support one +attribute without magic-cookie lossage. +Their base entry is usually paired with another that has this suffix and uses magic cookies to support multiple attributes. .TP 5 @@ -167,19 +191,21 @@ Enable status line. Use visible bell (flash) rather than beep. .TP 5 \-w -Wide; terminal is in 132 column mode. +Wide; terminal is in 132-column mode. .PP Conventionally, if your terminal type is a variant intended to specify a -line height, that suffix should go first. So, for a hypothetical FuBarCo +line height, that suffix should go first. +So, for a hypothetical FuBarCo model 2317 terminal in 30-line mode with reverse video, best form would be -\fBfubar\-30\-rv\fR (rather than, say, `fubar\-rv\-30'). +\fBfubar\-30\-rv\fR (rather than, say, \*(``fubar\-rv\-30\*(''). .PP Terminal types that are written not as standalone entries, but rather as components to be plugged into other entries via \fBuse\fP capabilities, are distinguished by using embedded plus signs rather than dashes. .PP Commands which use a terminal type to control display often accept a \-T -option that accepts a terminal name argument. Such programs should fall back +option that accepts a terminal name argument. +Such programs should fall back on the \fBTERM\fR environment variable when no \-T option is specified. .SH PORTABILITY For maximum compatibility with older System V UNIXes, names and aliases @@ -187,7 +213,7 @@ should be unique within the first 14 characters. .SH FILES .TP 5 \*d/?/* -compiled terminal capability data base +compiled terminal capability database .TP 5 /etc/inittab tty line initialization (AT&T-like UNIXes) diff --git a/deps/ncurses-6.3/man/term_variables.3x b/deps/ncurses-6.3/man/term_variables.3x new file mode 100644 index 0000000..0abaf09 --- /dev/null +++ b/deps/ncurses-6.3/man/term_variables.3x @@ -0,0 +1,194 @@ +.\"*************************************************************************** +.\" Copyright 2019,2020 Thomas E. Dickey * +.\" Copyright 2010-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: term_variables.3x,v 1.12 2020/02/02 23:34:34 tom Exp $ +.TH term_variables 3X "" +.ds n 5 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.na +.hy 0 +.SH NAME +\fBSP\fP, +\fBacs_map\fP, +\fBboolcodes\fP, +\fBboolfnames\fP, +\fBboolnames\fP, +\fBcur_term\fP, +\fBnumcodes\fP, +\fBnumfnames\fP, +\fBnumnames\fP, +\fBstrcodes\fP, +\fBstrfnames\fP, +\fBstrnames\fP, +\fBttytype\fP +\- \fBcurses\fR terminfo global variables +.ad +.hy +.SH SYNOPSIS +.nf +\fB#include <curses.h>\fR +.br +\fB#include <term.h>\fR +.PP +\fBchtype acs_map[];\fR +.sp +\fBSCREEN * SP;\fR +.sp +\fBTERMINAL * cur_term;\fR +.sp +\fBchar ttytype[];\fR +.sp +\fBNCURSES_CONST char * const boolcodes[];\fR +.br +\fBNCURSES_CONST char * const boolfnames[];\fR +.br +\fBNCURSES_CONST char * const boolnames[];\fR +.sp +\fBNCURSES_CONST char * const numcodes[];\fR +.br +\fBNCURSES_CONST char * const numfnames[];\fR +.br +\fBNCURSES_CONST char * const numnames[];\fR +.sp +\fBNCURSES_CONST char * const strcodes[];\fR +.br +\fBNCURSES_CONST char * const strfnames[];\fR +.br +\fBNCURSES_CONST char * const strnames[];\fR +.br +.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. +.PP +Depending on the configuration, these may be actual variables, +or macros (see \fBcurs_threads\fR(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. +.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. +.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>. +.PP +The comparable data for the wide-character library is a private variable. +.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). +.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. +.SS Terminfo Names +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. +These are available to other applications, +although the hash-tables used by +the terminfo and termcap functions are not available. +.PP +The long terminfo capability names use a \*(``l\*('' (ell) 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. +.\" +.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. +.\" +.SS Terminfo Names +.PP +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, +which is defined +.PP +.nf +.ft CW +#define CUR ((TERMTYPE *)(cur_term))-> +.fi +.ft R +.PP +These symbols provide a faster method of accessing terminfo capabilities +than using \fBtigetstr\fR(3X), etc. +.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. +.\" +.SH NOTES +The low-level terminfo interface is initialized using +.hy 0 +\fBsetupterm\fR(3X). +.hy +The upper-level curses interface uses the low-level terminfo interface, +internally. +.\" +.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). +.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. +.SH SEE ALSO +.hy 0 +\fBcurses\fR(3X), +\fBcurs_terminfo\fR(3X), +\fBcurs_threads\fR(3X), +\fBterminfo\fR(\*n). +.hy diff --git a/deps/ncurses-6.3/man/terminfo.head b/deps/ncurses-6.3/man/terminfo.head new file mode 100644 index 0000000..15be24e --- /dev/null +++ b/deps/ncurses-6.3/man/terminfo.head @@ -0,0 +1,227 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: terminfo.head,v 1.41 2021/08/15 19:32:53 tom Exp $ +.TH terminfo 5 "" "" "File Formats" +.ds n 5 +.ds d @TERMINFO@ +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.SH NAME +terminfo \- terminal capability database +.SH SYNOPSIS +\*d/*/* +.SH DESCRIPTION +.I Terminfo +is a database describing terminals, +used by screen-oriented programs such as +\fBnvi\fR(1), +\fBlynx\fR(1), +\fBmutt\fR(1), +and other curses applications, +using high-level calls to libraries such as \fBcurses\fR(3X). +It is also used via low-level calls by non-curses applications +which may be screen-oriented (such as \fB@CLEAR@\fP(1)) +or non-screen (such as \fB@TABS@\fP(1)). +.PP +.I Terminfo +describes terminals by giving a set of capabilities which they +have, by specifying how to perform screen operations, and by +specifying padding requirements and initialization sequences. +.PP +This manual describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). +.SS Terminfo Entry Syntax +.PP +Entries in +.I terminfo +consist of a sequence of fields: +.bP +Each field ends with a comma \*(``,\*('' +(embedded commas may be +escaped with a backslash or written as \*(``\\054\*(''). +.bP +White space between fields is ignored. +.bP +The first field in a \fIterminfo\fP entry begins in the first column. +.bP +Newlines and leading whitespace (spaces or tabs) +may be used for formatting entries for readability. +These are removed from parsed entries. +.IP +The \fB@INFOCMP@\fP \fB\-f\fP and \fB\-W\fP options rely on this to +format if-then-else expressions, +or to enforce maximum line-width. +The resulting formatted terminal description can be read by \fB@TIC@\fP. +.bP +The first field for each terminal gives the names which are known for the +terminal, separated by \*(``|\*('' characters. +.IP +The first name given is the most common abbreviation for the terminal +(its primary name), +the last name given should be a long name fully identifying the terminal +(see \fBlongname\fP(3X)), +and all others are treated as synonyms (aliases) for the primary terminal name. +.IP +X/Open Curses advises that all names but the last should be in lower case +and contain no blanks; +the last name may well contain upper case and blanks for readability. +.IP +This implementation is not so strict; +it allows mixed case in the primary name and aliases. +If the last name has no embedded blanks, +it allows that to be both an alias and a verbose name +(but will warn about this ambiguity). +.bP +Lines beginning with a \*(``#\*('' in the first column are treated as comments. +.IP +While comment lines are legal at any point, the output of \fB@CAPTOINFO@\fP +and \fB@INFOTOCAP@\fP (aliases for \fB@TIC@\fP) +will move comments so they occur only between entries. +.PP +Terminal names (except for the last, verbose entry) should +be chosen using the following conventions. +The particular piece of hardware making up the terminal should +have a root name, thus \*(``hp2621\*(''. +This name should not contain hyphens. +Modes that the hardware can be in, or user preferences, should +be indicated by appending a hyphen and a mode suffix. +Thus, a vt100 in 132-column mode would be vt100\-w. +The following suffixes should be used where possible: +.PP +.TS +center ; +l c l +l l l. +\fBSuffix Meaning Example\fP +\-\fInn\fP Number of lines on the screen aaa\-60 +\-\fIn\fPp Number of pages of memory c100\-4p +\-am With automargins (usually the default) vt100\-am +\-m Mono mode; suppress color ansi\-m +\-mc Magic cookie; spaces when highlighting wy30\-mc +\-na No arrow keys (leave them in local) c100\-na +\-nam Without automatic margins vt100\-nam +\-nl No status line att4415\-nl +\-ns No status line hp2626\-ns +\-rv Reverse video c100\-rv +\-s Enable status line vt100\-s +\-vb Use visible bell instead of beep wy370\-vb +\-w Wide mode (> 80 columns, usually 132) vt100\-w +.TE +.PP +For more on terminal naming conventions, see the \fBterm\fP(7) manual page. +.SS Terminfo Capabilities Syntax +.PP +The terminfo entry consists of several \fIcapabilities\fP, +i.e., features that the terminal has, +or methods for exercising the terminal's features. +.PP +After the first field (giving the name(s) of the terminal entry), +there should be one or more \fIcapability\fP fields. +These are boolean, numeric or string names with corresponding values: +.bP +Boolean capabilities are true when present, false when absent. +There is no explicit value for boolean capabilities. +.bP +Numeric capabilities have a \*(``#\*('' following the name, +then an unsigned decimal integer value. +.bP +String capabilities have a \*(``=\*('' following the name, +then an string of characters making up the capability value. +.IP +String capabilities can be split into multiple lines, +just as the fields comprising a terminal entry can be +split into multiple lines. +While blanks between fields are ignored, +blanks embedded within a string value are retained, +except for leading blanks on a line. +.PP +Any capability can be \fIcanceled\fP, +i.e., suppressed from the terminal entry, +by following its name with \*(``@\*('' +rather than a capability value. +.SS Similar Terminals +.PP +If there are two very similar terminals, one (the variant) can be defined as +being just like the other (the base) with certain exceptions. +In the +definition of the variant, the string capability \fBuse\fR can be given with +the name of the base terminal: +.bP +The capabilities given before +.B use +override those in the base type named by +.BR use . +.bP +If there are multiple \fBuse\fR capabilities, they are merged in reverse order. +That is, the rightmost \fBuse\fR reference is processed first, then the one to +its left, and so forth. +.bP +Capabilities given explicitly in the entry override +those brought in by \fBuse\fR references. +.PP +A capability can be canceled by placing \fBxx@\fR to the left of the +use reference that imports it, where \fIxx\fP is the capability. +For example, the entry +.RS +.PP +2621\-nl, smkx@, rmkx@, use=2621, +.RE +.PP +defines a 2621\-nl that does not have the \fBsmkx\fR or \fBrmkx\fR capabilities, +and hence does not turn on the function key labels when in visual mode. +This is useful for different modes for a terminal, or for different +user preferences. +.PP +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 +.\" Head of terminfo man page ends here +.ps -1 diff --git a/deps/ncurses-6.3/man/terminfo.tail b/deps/ncurses-6.3/man/terminfo.tail new file mode 100644 index 0000000..d3cbbf3 --- /dev/null +++ b/deps/ncurses-6.3/man/terminfo.tail @@ -0,0 +1,2076 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: terminfo.tail,v 1.108 2021/10/09 23:13:23 tom 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 +capabilities. +.PP +\fBncurses\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 +and makes an extended table entry for that capability. +The \fBuse_extended_names\fP(3X) function makes this information +conditionally available to applications. +The ncurses library provides the data leaving most of the behavior +to applications: +.bP +User-defined capability strings whose name begins +with \*(``k\*('' are treated as function keys. +.bP +The types (boolean, number, string) determined by \fB@TIC@\fP +can be inferred by successful calls on \fBtigetflag\fP, etc. +.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. +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. +. +.SS A Sample Entry +. +The following entry, describing an ANSI-standard terminal, is representative +of what a \fBterminfo\fR entry for a modern terminal typically looks like. +.PP +.nf +.ft CW +\s-2ansi|ansi/pc-term compatible with color, + am, mc5i, mir, msgr, + colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64, + acsc=+\\020\\,\\021-\\030.^Y0\\333`\\004a\\261f\\370g\\361h\\260 + j\\331k\\277l\\332m\\300n\\305o~p\\304q\\304r\\304s_t\\303 + u\\264v\\301w\\302x\\263y\\363z\\362{\\343|\\330}\\234~\\376, + bel=^G, blink=\\E[5m, bold=\\E[1m, cbt=\\E[Z, clear=\\E[H\\E[J, + cr=^M, cub=\\E[%p1%dD, cub1=\\E[D, cud=\\E[%p1%dB, cud1=\\E[B, + cuf=\\E[%p1%dC, cuf1=\\E[C, cup=\\E[%i%p1%d;%p2%dH, + cuu=\\E[%p1%dA, cuu1=\\E[A, dch=\\E[%p1%dP, dch1=\\E[P, + dl=\\E[%p1%dM, dl1=\\E[M, ech=\\E[%p1%dX, ed=\\E[J, el=\\E[K, + el1=\\E[1K, home=\\E[H, hpa=\\E[%i%p1%dG, ht=\\E[I, hts=\\EH, + ich=\\E[%p1%d@, il=\\E[%p1%dL, il1=\\E[L, ind=^J, + indn=\\E[%p1%dS, invis=\\E[8m, kbs=^H, kcbt=\\E[Z, kcub1=\\E[D, + kcud1=\\E[B, kcuf1=\\E[C, kcuu1=\\E[A, khome=\\E[H, kich1=\\E[L, + mc4=\\E[4i, mc5=\\E[5i, nel=\\r\\E[S, op=\\E[39;49m, + rep=%p1%c\\E[%p2%{1}%-%db, rev=\\E[7m, rin=\\E[%p1%dT, + rmacs=\\E[10m, rmpch=\\E[10m, rmso=\\E[m, rmul=\\E[m, + s0ds=\\E(B, s1ds=\\E)B, s2ds=\\E*B, s3ds=\\E+B, + setab=\\E[4%p1%dm, setaf=\\E[3%p1%dm, + sgr=\\E[0;10%?%p1%t;7%; + %?%p2%t;4%; + %?%p3%t;7%; + %?%p4%t;5%; + %?%p6%t;1%; + %?%p7%t;8%; + %?%p9%t;11%;m, + sgr0=\\E[0;10m, smacs=\\E[11m, smpch=\\E[11m, smso=\\E[7m, + smul=\\E[4m, tbc=\\E[3g, u6=\\E[%i%d;%dR, u7=\\E[6n, + u8=\\E[?%[;0123456789]c, u9=\\E[c, vpa=\\E[%i%p1%dd, +.fi +.ft R +.PP +Entries may continue onto multiple lines by placing white space at +the beginning of each line except the first. +Comments may be included on lines beginning with \*(``#\*(''. +Capabilities in +.I terminfo +are of three types: +.bP +Boolean capabilities which indicate that the terminal has +some particular feature, +.bP +numeric capabilities giving the size of the terminal +or the size of particular delays, and +.bP +string +capabilities, which give a sequence which can be used to perform particular +terminal operations. +.PP +.SS Types of Capabilities +.PP +All capabilities have names. +For instance, the fact that +ANSI-standard terminals have +.I "automatic margins" +(i.e., an automatic return and line-feed +when the end of a line is reached) is indicated by the capability \fBam\fR. +Hence the description of ansi includes \fBam\fR. +Numeric capabilities are followed by the character \*(``#\*('' and then a positive value. +Thus \fBcols\fR, which indicates the number of columns the terminal has, +gives the value \*(``80\*('' for ansi. +Values for numeric capabilities may be specified in decimal, octal or hexadecimal, +using the C programming language conventions (e.g., 255, 0377 and 0xff or 0xFF). +.PP +Finally, string valued capabilities, such as \fBel\fR (clear to end of line +sequence) are given by the two-character code, an \*(``=\*('', and then a string +ending at the next following \*(``,\*(''. +.PP +A number of escape sequences are provided in the string valued capabilities +for easy encoding of characters there: +.bP +Both \fB\eE\fR and \fB\ee\fR +map to an \s-1ESCAPE\s0 character, +.bP +\fB^x\fR maps to a control-x for any appropriate \fIx\fP, and +.bP +the sequences +.RS 6 +.PP +\fB\en\fP, \fB\el\fP, \fB\er\fP, \fB\et\fP, \fB\eb\fP, \fB\ef\fP, and \fB\es\fR +.RE +.IP +produce +.RS 6 +.PP +\fInewline\fP, \fIline-feed\fP, \fIreturn\fP, \fItab\fP, \fIbackspace\fP, \fIform-feed\fP, and \fIspace\fP, +.RE +.IP +respectively. +.PP +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, +mapping to ASCII control codes in the range 0 through 31. +.PP +Other escapes include +.bP +\fB\e^\fR for \fB^\fR, +.bP +\fB\e\e\fR for \fB\e\fR, +.bP +\fB\e\fR, for comma, +.bP +\fB\e:\fR for \fB:\fR, +.bP +and \fB\e0\fR for null. +.IP +\fB\e0\fR will produce \e200, which does not terminate a string but behaves +as a null character on most terminals, providing CS7 is specified. +See \fBstty\fP(1). +.IP +The reason for this quirk is to maintain binary compatibility of the +compiled terminfo files with other implementations, +e.g., the SVr4 systems, which document this. +Compiled terminfo files use null-terminated strings, with no lengths. +Modifying this would require a new binary format, +which would not work with other implementations. +.PP +Finally, characters may be given as three octal digits after a \fB\e\fR. +.PP +A delay in milliseconds may appear anywhere in a string capability, enclosed in +$<..> brackets, as in \fBel\fP=\eEK$<5>, +and padding characters are supplied by \fBtputs\fP(3X) +to provide this delay. +.bP +The delay must be a number with at most one decimal +place of precision; it may be followed by suffixes \*(``*\*('' or \*(``/\*('' or both. +.bP +A \*(``*\*('' +indicates that the padding required is proportional to the number of lines +affected by the operation, and the amount given is the per-affected-unit +padding required. +(In the case of insert character, the factor is still the +number of \fIlines\fP affected.) +.IP +Normally, padding is advisory if the device has the \fBxon\fR +capability; it is used for cost computation but does not trigger delays. +.bP +A \*(``/\*('' +suffix indicates that the padding is mandatory and forces a delay of the given +number of milliseconds even on devices for which \fBxon\fR is present to +indicate flow control. +.PP +Sometimes individual capabilities must be commented out. +To do this, put a period before the capability name. +For example, see the second +.B ind +in the example above. +.br +.ne 5 +.PP +.SS Fetching Compiled Descriptions +.PP +The \fBncurses\fP library searches for terminal descriptions in several places. +It uses only the first description found. +The library has a compiled-in list of places to search +which can be overridden by environment variables. +Before starting to search, +\fBncurses\fP eliminates duplicates in its search list. +.bP +If the environment variable TERMINFO is set, it is interpreted as the pathname +of a directory containing the compiled description you are working on. +Only that directory is searched. +.bP +If TERMINFO is not set, +\fBncurses\fR will instead look in the directory \fB$HOME/.terminfo\fR +for a compiled description. +.bP +Next, if the environment variable TERMINFO_DIRS is set, +\fBncurses\fR will interpret the contents of that variable +as a list of colon-separated directories (or database files) to be searched. +.IP +An empty directory name (i.e., if the variable begins or ends +with a colon, or contains adjacent colons) +is interpreted as the system location \fI\*d\fR. +.bP +Finally, \fBncurses\fP searches these compiled-in locations: +.RS +.bP +a list of directories (@TERMINFO_DIRS@), and +.bP +the system terminfo directory, \fI\*d\fR (the compiled-in default). +.RE +.SS Preparing Descriptions +.PP +We now outline how to prepare descriptions of terminals. +The most effective way to prepare a terminal description is by imitating +the description of a similar terminal in +.I terminfo +and to build up a description gradually, using partial descriptions +with +.I vi +or some other screen-oriented program to check that they are correct. +Be aware that a very unusual terminal may expose deficiencies in +the ability of the +.I terminfo +file to describe it +or bugs in the screen-handling code of the test program. +.PP +To get the padding for insert line right (if the terminal manufacturer +did not document it) a severe test is to edit a large file at 9600 baud, +delete 16 or so lines from the middle of the screen, then hit the \*(``u\*('' +key several times quickly. +If the terminal messes up, more padding is usually needed. +A similar test can be used for insert character. +.PP +.SS Basic Capabilities +.PP +The number of columns on each line for the terminal is given by the +\fBcols\fR numeric capability. +If the terminal is a \s-1CRT\s0, then the +number of lines on the screen is given by the \fBlines\fR capability. +If the terminal wraps around to the beginning of the next line when +it reaches the right margin, then it should have the \fBam\fR capability. +If the terminal can clear its screen, leaving the cursor in the home +position, then this is given by the \fBclear\fR string capability. +If the terminal overstrikes +(rather than clearing a position when a character is struck over) +then it should have the \fBos\fR capability. +If the terminal is a printing terminal, with no soft copy unit, +give it both +.B hc +and +.BR os . +.RB ( os +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 +.BR cr . +(Normally this will be carriage return, control/M.) +If there is a code to produce an audible signal (bell, beep, etc) +give this as +.BR bel . +.PP +If there is a code to move the cursor one position to the left +(such as backspace) that capability should be given as +.BR cub1 . +Similarly, codes to move to the right, up, and down should be +given as +.BR cuf1 , +.BR cuu1 , +and +.BR cud1 . +These local cursor motions should not alter the text they pass over, +for example, you would not normally use \*(``\fBcuf1\fP=\ \*('' because the +space would erase the character moved over. +.PP +A very important point here is that the local cursor motions encoded +in +.I terminfo +are undefined at the left and top edges of a \s-1CRT\s0 terminal. +Programs should never attempt to backspace around the left edge, +unless +.B bw +is given, +and never attempt to go up locally off the top. +In order to scroll text up, a program will go to the bottom left corner +of the screen and send the +.B ind +(index) string. +.PP +To scroll text down, a program goes to the top left corner +of the screen and sends the +.B ri +(reverse index) string. +The strings +.B ind +and +.B ri +are undefined when not on their respective corners of the screen. +.PP +Parameterized versions of the scrolling sequences are +.B indn +and +.B rin +which have the same semantics as +.B ind +and +.B ri +except that they take one parameter, and scroll that many lines. +They are also undefined except at the appropriate edge of the screen. +.PP +The \fBam\fR capability tells whether the cursor sticks at the right +edge of the screen when text is output, but this does not necessarily +apply to a +.B cuf1 +from the last column. +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. +If +.B bw +is not given, the effect is undefined. +This is useful for drawing a box around the edge of the screen, for example. +If the terminal has switch selectable automatic margins, +the +.I terminfo +file usually assumes that this is on; i.e., \fBam\fR. +If the terminal has a command which moves to the first column of the next +line, that command can be given as +.B nel +(newline). +It does not matter if the command clears the remainder of the current line, +so if the terminal has no +.B cr +and +.B lf +it may still be possible to craft a working +.B nel +out of one or both of them. +.PP +These capabilities suffice to describe hard-copy and \*(``glass-tty\*('' terminals. +Thus the model 33 teletype is described as +.PP +.DT +.nf +.ft CW +.\".in -2 +\s-133\||\|tty33\||\|tty\||\|model 33 teletype, + bel=^G, cols#72, cr=^M, cud1=^J, hc, ind=^J, os,\s+1 +.\".in +2 +.ft R +.fi +.PP +while the Lear Siegler \s-1ADM-3\s0 is described as +.PP +.DT +.nf +.ft CW +.\".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 +.ft R +.fi +.PP +.SS Parameterized Strings +.PP +Cursor addressing and other strings requiring parameters +in the terminal are described by a +parameterized string capability, +with \fIprintf\fP-like escapes such as \fI%x\fR 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 +physical screen visible to the user, not to any unseen memory.) +If the terminal has memory relative cursor addressing, +that can be indicated by +.BR mrcup . +.PP +The parameter mechanism uses a stack and special \fB%\fP codes +to manipulate it. +Typically a sequence will push one of the +parameters onto the stack and then print it in some format. +Print (e.g., \*(``%d\*('') is a special case. +Other operations, including \*(``%t\*('' pop their operand from the stack. +It is noted that more complex operations are often necessary, +e.g., in the \fBsgr\fP string. +.PP +The \fB%\fR encodings have the following meanings: +.PP +.TP 5 +\fB%%\fP +outputs \*(``%\*('' +.TP +\fB%\fP\fI[[\fP:\fI]flags][width[.precision]][\fP\fBdoxXs\fP\fI]\fP +as in \fBprintf\fP(3), flags are \fI[\-+#]\fP and \fIspace\fP. +Use a \*(``:\*('' to allow the next character to be a \*(``\-\*('' flag, +avoiding interpreting \*(``%\-\*('' as an operator. +.TP +\f(CW%c\fP +print \fIpop()\fP like %c in \fBprintf\fP +.TP +\fB%s\fP +print \fIpop()\fP like %s in \fBprintf\fP +.TP +\fB%p\fP\fI[1\-9]\fP +push \fIi\fP'th parameter +.TP +\fB%P\fP\fI[a\-z]\fP +set dynamic variable \fI[a\-z]\fP to \fIpop()\fP +.TP +\fB%g\fP\fI[a\-z]/\fP +get dynamic variable \fI[a\-z]\fP and push it +.TP +\fB%P\fP\fI[A\-Z]\fP +set static variable \fI[a\-z]\fP to \fIpop()\fP +.TP +\fB%g\fP\fI[A\-Z]\fP +get static variable \fI[a\-z]\fP and push it +.IP +The terms \*(``static\*('' and \*(``dynamic\*('' are misleading. +Historically, these are simply two different sets of variables, +whose values are not reset between calls to \fBtparm\fP(3X). +However, that fact is not documented in other implementations. +Relying on it will adversely impact portability to other implementations: +.RS +.bP +SVr2 curses supported \fIdynamic\fP variables. +Those are set only by a \fB%P\fP operator. +A \fB%g\fP for a given variable without first setting it with \fB%P\fP +will give unpredictable results, because dynamic variables are +an uninitialized local array on the stack in the \fBtparm\fP function. +.bP +SVr3.2 curses supported \fIstatic\fP variables. +Those are an array in the \fBTERMINAL\fP +structure (declared in \fBterm.h\fP), +and are zeroed automatically when the \fBsetupterm\fP function +allocates the data. +.bP +SVr4 curses made no further improvements +to the \fIdynamic/static\fP variable feature. +.bP +Solaris XPG4 curses does not distinguish between \fIdynamic\fP and +\fIstatic\fP variables. +They are the same. +Like SVr4 curses, XPG4 curses does not initialize these explicitly. +.bP +Before version 6.3, ncurses stores both \fIdynamic\fP and \fIstatic\fP +variables in persistent storage, initialized to zeros. +.bP +Beginning with version 6.3, ncurses stores \fIstatic\fP and \fIdynamic\fP +variables in the same manner as SVr4. +Unlike other implementations, ncurses zeros dynamic variables +before the first \fB%g\fP or \fB%P\fP operator. +.RE +.TP +\fB%\(aq\fP\fIc\fP\fB\(aq\fP +char constant \fIc\fP +.TP +\fB%{\fP\fInn\fP\fB}\fP +integer constant \fInn\fP +.TP +\fB%l\fP +push strlen(pop) +.TP +\fB%+\fP, \fB%\-\fP, \fB%*\fP, \fB%/\fP, \fB%m\fP +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 +.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) +.TP +\fB%!\fP, \fB%~\fP +unary operations (logical and bit complement): \fIpush(op pop())\fP +.TP +\fB%i\fP +add 1 to first two parameters (for ANSI terminals) +.TP +\fB%?\fP \fIexpr\fP \fB%t\fP \fIthenpart\fP \fB%e\fP \fIelsepart\fP \fB%;\fP +This forms an if-then-else. +The \fB%e\fP \fIelsepart\fP is optional. +Usually the \fB%?\fP \fIexpr\fP part pushes a value onto the stack, +and \fB%t\fP pops it from the stack, testing if it is nonzero (true). +If it is zero (false), control passes to the \fB%e\fP (else) part. +.IP +It is possible to form else-if's a la Algol 68: +.RS +\fB%?\fP c\d1\u \fB%t\fP b\d1\u \fB%e\fP c\d2\u \fB%t\fP b\d2\u \fB%e\fP c\d3\u \fB%t\fP b\d3\u \fB%e\fP c\d4\u \fB%t\fP b\d4\u \fB%e\fP \fB%;\fP +.RE +.IP +where c\di\u are conditions, b\di\u are bodies. +.IP +Use the \fB\-f\fP option of \fB@TIC@\fP or \fB@INFOCMP@\fP to see +the structure of if-then-else's. +Some strings, e.g., \fBsgr\fP can be very complicated when written +on one line. +The \fB\-f\fP option splits the string into lines with the parts indented. +.PP +Binary operations are in postfix form with the operands in the usual order. +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 +to be sent \eE&a12c03Y padded for 6 milliseconds. +Note that the order +of the rows and columns is inverted here, and that the row and column +are printed as two digits. +Thus its \fBcup\fR capability is \*(``cup=6\eE&%p2%2dc%p1%2dY\*(''. +.PP +The Microterm \s-1ACT-IV\s0 needs the current row and column sent +preceded by a \fB^T\fR, with the row and column simply encoded in binary, +\*(``cup=^T%p1%c%p2%c\*(''. +Terminals which use \*(``%c\*('' need to be able to +backspace the cursor (\fBcub1\fR), +and to move the cursor up one line on the screen (\fBcuu1\fR). +This is necessary because it is not always safe to transmit \fB\en\fR +\fB^D\fR and \fB\er\fR, as the system may change or discard them. +(The library routines dealing with terminfo set tty modes so that +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 \*(``cup=\eE=%p1%\(aq \(aq%+%c%p2%\(aq \(aq%+%c\*(''. +After sending \*(``\eE=\*('', this pushes the first parameter, pushes the +ASCII value for a space (32), adds them (pushing the sum on the stack +in place of the two previous values) and outputs that value as a character. +Then the same is done for the second parameter. +More complex arithmetic is possible using the stack. +.PP +.SS Cursor Motions +.PP +If the terminal has a fast way to home the cursor +(to very upper left corner of screen) then this can be given as +\fBhome\fR; similarly a fast way of getting to the lower left-hand corner +can be given as \fBll\fR; this may involve going up with \fBcuu1\fR +from the home position, +but a program should never do this itself (unless \fBll\fR does) because it +can make no assumption about the effect of moving up from the home position. +Note that the home position is the same as addressing to (0,0): +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, +these can be given as single parameter capabilities +.B hpa +(horizontal position absolute) +and +.B vpa +(vertical position absolute). +Sometimes these are shorter than the more general two parameter +sequence (as with the hp2645) and can be used in preference to +.BR cup . +If there are parameterized local motions (e.g., move +.I n +spaces to the right) these can be given as +.BR cud , +.BR cub , +.BR cuf , +and +.B cuu +with a single parameter indicating how many spaces to move. +These are primarily useful if the terminal does not have +.BR cup , +such as the \s-1TEKTRONIX\s+1 4025. +.PP +If the terminal needs to be in a special mode when running +a program that uses these capabilities, +the codes to enter and exit this mode can be given as \fBsmcup\fR and \fBrmcup\fR. +This arises, for example, from terminals like the Concept with more than +one page of memory. +If the terminal has only memory relative cursor addressing and not screen +relative cursor addressing, a one screen-sized window must be fixed into +the terminal for cursor addressing to work properly. +This is also used for the \s-1TEKTRONIX\s+1 4025, +where +.B smcup +sets the command character to be the one used by terminfo. +If the \fBsmcup\fP sequence will not restore the screen after an +\fBrmcup\fP sequence is output (to the state prior to outputting +\fBrmcup\fP), specify \fBnrrmc\fP. +.PP +.SS Margins +SVr4 (and X/Open Curses) +list several string capabilities for setting margins. +Two were intended for use with terminals, +and another six were intended for use with printers. +.bP +The two terminal capabilities assume that the terminal may have +the capability of setting the left and/or right margin at the current +cursor column position. +.bP +The printer capabilities assume that the printer may have +two types of capability: +.RS +.bP +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. +.RE +.RE +.PP +In practice, the categorization into \*(``terminal\*('' and \*(``printer\*('' +is not suitable: +.bP +The AT&T SVr4 terminal database uses \fBsmgl\fP four times, +for AT&T hardware. +.IP +Three of the four are printers. +They lack the ability to set left/right margins by specifying the column. +.bP +Other (non-AT&T) terminals may support margins +but using different assumptions from AT&T. +.IP +For instance, the DEC VT420 supports left/right margins, +but only using a column parameter. +As an added complication, the VT420 uses two settings to fully enable +left/right margins (left/right margin mode, and origin mode). +The former enables the margins, which causes printed text +to wrap within margins, but the latter is needed to prevent +cursor-addressing outside those margins. +.bP +Both DEC VT420 left/right margins are set with a single control sequence. +If either is omitted, the corresponding margin is set to the left or +right edge of the display (rather than leaving the margin unmodified). +.PP +These are the margin-related capabilities: +.TS +center; +l l +_ _ +lw8 lw18. +\fBName Description\fP +smgl Set left margin at current column +smgr Set right margin at current column +smgb Set bottom margin at current line +smgt Set top margin at current line +smgbp Set bottom margin at line \fIN\fP +smglp Set left margin at column \fIN\fP +smgrp Set right margin at column \fIN\fP +smgtp Set top margin at line \fIN\fP +smglr Set both left and right margins to \fIL\fP and \fIR\fP +smgtb Set both top and bottom margins to \fIT\fP and \fIB\fP +.TE +.PP +When writing an application that +uses these string capabilities, +the pairs should be first checked to see +if each capability in the pair is set or only one is set: +.bP +If both \fBsmglp\fP and \fBsmgrp\fP are set, +each is used with a single argument, \fIN\fP, +that gives the column number of the left and right margin, respectively. +.bP +If both \fBsmgtp\fP and \fBsmgbp\fP are set, +each is used to set the top and bottom margin, +respectively: +.RS 4 +.bP +\fBsmgtp\fP is used with a single argument, \fIN\fP, +the line number of the top margin. +.bP +\fBsmgbp\fP is used with two arguments, \fIN\fP and \fIM\fP, +that give the line number of the bottom margin, +the first counting from the top of the +page and the second counting from the bottom. +This accommodates the two styles of specifying +the bottom margin in different manufacturers' printers. +.RE +.IP +When designing a terminfo entry for a +printer that has a settable bottom margin, +only the first or second argument should be used, depending on the printer. +When developing an application that uses \fBsmgbp\fP to set the bottom margin, +both arguments must be given. +.PP +Conversely, when only one capability in the pair is set: +.bP +If only one of \fBsmglp\fP and \fBsmgrp\fP is set, +then it is used with two arguments, +the column number of the left and right margins, in that order. +.bP +Likewise, if only one of \fBsmgtp\fP and \fBsmgbp\fP is set, then it +is used with two arguments that give the top and bottom margins, +in that order, counting from the top of the page. +.IP +When designing a terminfo entry for a printer that requires setting both +left and right or top and bottom margins simultaneously, +only one capability in the pairs +\fBsmglp\fP and \fBsmgrp\fP or +\fBsmgtp\fP and \fBsmgbp\fP should be defined, +leaving the other unset. +.PP +Except for very old terminal descriptions, e.g., those developed for SVr4, +the scheme just described should be considered obsolete. +An improved set of capabilities was added late in the SVr4 releases +(\fBsmglr\fP and \fBsmgtb\fP), +which explicitly use two parameters for setting the left/right or top/bottom +margins. +.PP +When setting margins, the line- and column-values are zero-based. +.PP +The \fBmgc\fP string capability should be defined. +Applications such as \fBtabs\fP(1) rely upon this to reset all margins. +.\" +.SS Area Clears +.PP +If the terminal can clear from the current position to the end of the +line, leaving the cursor where it is, this should be given as \fBel\fR. +If the terminal can clear from the beginning of the line to the current +position inclusive, leaving +the cursor where it is, this should be given as \fBel1\fP. +If the terminal can clear from the current position to the end of the +display, then this should be given as \fBed\fR. +\fBEd\fR is only defined from the first column of a line. +(Thus, it can be simulated by a request to delete a large number of lines, +if a true +.B ed +is not available.) +.PP +.\" +.SS Insert/delete line and vertical motions +.PP +If the terminal can open a new blank line before the line where the cursor +is, this should be given as \fBil1\fR; this is done only from the first +position of a line. +The cursor must then appear on the newly blank line. +If the terminal can delete the line which the cursor is on, then this +should be given as \fBdl1\fR; this is done only from the first position on +the line to be deleted. +Versions of +.B il1 +and +.B dl1 +which take a single parameter and insert or delete that many lines can +be given as +.B il +and +.BR dl . +.PP +If the terminal has a settable scrolling region (like the vt100) +the command to set this can be described with the +.B csr +capability, which takes two parameters: +the top and bottom lines of the scrolling region. +The cursor position is, alas, undefined after using this command. +.PP +It is possible to get the effect of insert or delete line using +.B csr +on a properly chosen region; the +.B sc +and +.B rc +(save and restore cursor) commands may be useful for ensuring that +your synthesized insert/delete string does not move the cursor. +(Note that the \fBncurses\fR(3X) library does this synthesis +automatically, so you need not compose insert/delete strings for +an entry with \fBcsr\fR). +.PP +Yet another way to construct insert and delete might be to use a combination of +index with the memory-lock feature found on some terminals (like the HP\-700/90 +series, which however also has insert/delete). +.PP +Inserting lines at the top or bottom of the screen can also be +done using +.B ri +or +.B ind +on many terminals without a true insert/delete line, +and is often faster even on terminals with those features. +.PP +The boolean \fBnon_dest_scroll_region\fR should be set if each scrolling +window is effectively a view port on a screen-sized canvas. +To test for +this capability, create a scrolling region in the middle of the screen, +write something to the bottom line, move the cursor to the top of the region, +and do \fBri\fR followed by \fBdl1\fR or \fBind\fR. +If the data scrolled +off the bottom of the region by the \fBri\fR re-appears, then scrolling +is non-destructive. +System V and XSI Curses expect that \fBind\fR, \fBri\fR, +\fBindn\fR, and \fBrin\fR will simulate destructive scrolling; their +documentation cautions you not to define \fBcsr\fR unless this is true. +This \fBcurses\fR implementation is more liberal and will do explicit erases +after scrolling if \fBndsrc\fR is defined. +.PP +If the terminal has the ability to define a window as part of +memory, which all commands affect, +it should be given as the parameterized string +.BR wind . +The four parameters are the starting and ending lines in memory +and the starting and ending columns in memory, in that order. +.PP +If the terminal can retain display memory above, then the +\fBda\fR capability should be given; if display memory can be retained +below, then \fBdb\fR should be given. +These indicate +that deleting a line or scrolling may bring non-blank lines up from below +or that scrolling back with \fBri\fR may bring down non-blank lines. +.PP +.SS Insert/Delete Character +.PP +There are two basic kinds of intelligent terminals with respect to +insert/delete character which can be described using +.I terminfo. +The most common insert/delete character operations affect only the characters +on the current line and shift characters off the end of the line rigidly. +Other terminals, such as the Concept 100 and the Perkin Elmer Owl, make +a distinction between typed and untyped blanks on the screen, shifting +upon an insert or delete only to an untyped blank on the screen which is +either eliminated, or expanded to two untyped blanks. +.PP +You can determine the +kind of terminal you have by clearing the screen and then typing +text separated by cursor motions. +Type \*(``abc\ \ \ \ def\*('' using local +cursor motions (not spaces) between the \*(``abc\*('' and the \*(``def\*(''. +Then position the cursor before the \*(``abc\*('' and put the terminal in insert +mode. +If typing characters causes the rest of the line to shift +rigidly and characters to fall off the end, then your terminal does +not distinguish between blanks and untyped positions. +If the \*(``abc\*('' +shifts over to the \*(``def\*('' which then move together around the end of the +current line and onto the next as you insert, you have the second type of +terminal, and should give the capability \fBin\fR, which stands for +\*(``insert null\*(''. +.PP +While these are two logically separate attributes (one line versus multi-line +insert mode, and special treatment of untyped spaces) we have seen no +terminals whose insert mode cannot be described with the single attribute. +.PP +Terminfo can describe both terminals which have an insert mode, and terminals +which send a simple sequence to open a blank position on the current line. +Give as \fBsmir\fR the sequence to get into insert mode. +Give as \fBrmir\fR the sequence to leave insert mode. +Now give as \fBich1\fR any sequence needed to be sent just before sending +the character to be inserted. +Most terminals with a true insert mode +will not give \fBich1\fR; terminals which send a sequence to open a screen +position should give it here. +.PP +If your terminal has both, insert mode is usually preferable to \fBich1\fR. +Technically, you should not give both unless the terminal actually requires +both to be used in combination. +Accordingly, some non-curses applications get +confused if both are present; the symptom is doubled characters in an update +using insert. +This requirement is now rare; most \fBich\fR sequences do not +require previous smir, and most smir insert modes do not require \fBich1\fR +before each character. +Therefore, the new \fBcurses\fR actually assumes this +is the case and uses either \fBrmir\fR/\fBsmir\fR or \fBich\fR/\fBich1\fR as +appropriate (but not both). +If you have to write an entry to be used under +new curses for a terminal old enough to need both, include the +\fBrmir\fR/\fBsmir\fR sequences in \fBich1\fR. +.PP +If post insert padding is needed, give this as a number of milliseconds +in \fBip\fR (a string option). +Any other sequence which may need to be +sent after an insert of a single character may also be given in \fBip\fR. +If your terminal needs both to be placed into an \*(``insert mode\*('' and +a special code to precede each inserted character, then both +.BR smir / rmir +and +.B ich1 +can be given, and both will be used. +The +.B ich +capability, with one parameter, +.IR n , +will repeat the effects of +.B ich1 +.I n +times. +.PP +If padding is necessary between characters typed while not +in insert mode, give this as a number of milliseconds padding in \fBrmp\fP. +.PP +It is occasionally necessary to move around while in insert mode +to delete characters on the same line (e.g., if there is a tab after +the insertion position). +If your terminal allows motion while in +insert mode you can give the capability \fBmir\fR to speed up inserting +in this case. +Omitting \fBmir\fR will affect only speed. +Some terminals +(notably Datamedia's) must not have \fBmir\fR because of the way their +insert mode works. +.PP +Finally, you can specify +.B dch1 +to delete a single character, +.B dch +with one parameter, +.IR n , +to delete +.I n characters, +and delete mode by giving \fBsmdc\fR and \fBrmdc\fR +to enter and exit delete mode (any mode the terminal needs to be placed +in for +.B dch1 +to work). +.PP +A command to erase +.I n +characters (equivalent to outputting +.I n +blanks without moving the cursor) +can be given as +.B ech +with one parameter. +.PP +.SS "Highlighting, Underlining, and Visible Bells" +.PP +If your terminal has one or more kinds of display attributes, +these can be represented in a number of different ways. +You should choose one display form as +\f2standout mode\fR, +representing a good, high contrast, easy-on-the-eyes, +format for highlighting error messages and other attention getters. +(If you have a choice, reverse video plus half-bright is good, +or reverse video alone.) +The sequences to enter and exit standout mode +are given as \fBsmso\fR and \fBrmso\fR, respectively. +If the code to change into or out of standout +mode leaves one or even two blank spaces on the screen, +as the TVI 912 and Teleray 1061 do, +then \fBxmc\fR should be given to tell how many spaces are left. +.PP +Codes to begin underlining and end underlining can be given as \fBsmul\fR +and \fBrmul\fR respectively. +If the terminal has a code to underline the current character and move +the cursor one space to the right, +such as the Microterm Mime, +this can be given as \fBuc\fR. +.PP +Other capabilities to enter various highlighting modes include +.B blink +(blinking) +.B bold +(bold or extra bright) +.B dim +(dim or half-bright) +.B invis +(blanking or invisible text) +.B prot +(protected) +.B rev +(reverse video) +.B sgr0 +(turn off +.I all +attribute modes) +.B smacs +(enter alternate character set mode) +and +.B rmacs +(exit alternate character set mode). +Turning on any of these modes singly may or may not turn off other modes. +.PP +If there is a sequence to set arbitrary combinations of modes, +this should be given as +.B sgr +(set attributes), +taking 9 parameters. +Each parameter is either 0 or nonzero, as the corresponding attribute is on or off. +The 9 parameters are, in order: +standout, underline, reverse, blink, dim, bold, blank, protect, alternate +character set. +Not all modes need be supported by +.BR sgr , +only those for which corresponding separate attribute commands exist. +.PP +For example, the DEC vt220 supports most of the modes: +.PP +.TS +center; +l l l +l l l +lw18 lw14 lw18. +\fBtparm parameter attribute escape sequence\fP + +none none \\E[0m +p1 standout \\E[0;1;7m +p2 underline \\E[0;4m +p3 reverse \\E[0;7m +p4 blink \\E[0;5m +p5 dim not available +p6 bold \\E[0;1m +p7 invis \\E[0;8m +p8 protect not used +p9 altcharset ^O (off) ^N (on) +.TE +.PP +We begin each escape sequence by turning off any existing modes, since +there is no quick way to determine whether they are active. +Standout is set up to be the combination of reverse and bold. +The vt220 terminal has a protect mode, +though it is not commonly used in sgr +because it protects characters on the screen from the host's erasures. +The altcharset mode also is different in that it is either ^O or ^N, +depending on whether it is off or on. +If all modes are turned on, the resulting sequence is \\E[0;1;4;5;7;8m^N. +.PP +Some sequences are common to different modes. +For example, ;7 is output when either p1 or p3 is true, that is, if +either standout or reverse modes are turned on. +.PP +Writing out the above sequences, along with their dependencies yields +.PP +.ne 11 +.TS +center; +l l l +l l l +lw18 lw14 lw18. +\fBsequence when to output terminfo translation\fP + +.ft CW +\\E[0 always \\E[0 +;1 if p1 or p6 %?%p1%p6%|%t;1%; +;4 if p2 %?%p2%|%t;4%; +;5 if p4 %?%p4%|%t;5%; +;7 if p1 or p3 %?%p1%p3%|%t;7%; +;8 if p7 %?%p7%|%t;8%; +m always m +^N or ^O if p9 ^N, else ^O %?%p9%t^N%e^O%; +.ft R +.TE +.PP +Putting this all together into the sgr sequence gives: +.PP +.ft CW +.nf + sgr=\\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p4%t;5%; + %?%p1%p3%|%t;7%;%?%p7%t;8%;m%?%p9%t\\016%e\\017%;, +.fi +.ft R +.PP +Remember that if you specify sgr, you must also specify sgr0. +Also, some implementations rely on sgr being given if sgr0 is, +Not all terminfo entries necessarily have an sgr string, however. +Many terminfo entries are derived from termcap entries +which have no sgr string. +The only drawback to adding an sgr string is that termcap also +assumes that sgr0 does not exit alternate character set mode. +.PP +Terminals with the \*(``magic cookie\*('' glitch +.RB ( xmc ) +deposit special \*(``cookies\*('' when they receive mode-setting sequences, +which affect the display algorithm rather than having extra bits for +each character. +Some terminals, such as the HP 2621, automatically leave standout +mode when they move to a new line or the cursor is addressed. +Programs using standout mode should exit standout mode before +moving the cursor or sending a newline, +unless the +.B msgr +capability, asserting that it is safe to move in standout mode, is present. +.PP +If the terminal has +a way of flashing the screen to indicate an error quietly (a bell replacement) +then this can be given as \fBflash\fR; it must not move the cursor. +.PP +If the cursor needs to be made more visible than normal when it is +not on the bottom line (to make, for example, a non-blinking underline into an +easier to find block or blinking underline) +give this sequence as +.BR cvvis . +If there is a way to make the cursor completely invisible, give that as +.BR civis . +The capability +.B cnorm +should be given which undoes the effects of both of these modes. +.PP +If your terminal correctly generates underlined characters +(with no special codes needed) +even though it does not overstrike, +then you should give the capability \fBul\fR. +If a character overstriking another leaves both characters on the screen, +specify the capability \fBos\fP. +If overstrikes are erasable with a blank, +then this should be indicated by giving \fBeo\fR. +.PP +.SS Keypad and Function Keys +.PP +If the terminal has a keypad that transmits codes when the keys are pressed, +this information can be given. +Note that it is not possible to handle +terminals where the keypad only works in local (this applies, for example, +to the unshifted HP 2621 keys). +If the keypad can be set to transmit or not transmit, +give these codes as \fBsmkx\fR and \fBrmkx\fR. +Otherwise the keypad is assumed to always transmit. +.PP +The codes sent by the left arrow, right arrow, up arrow, down arrow, +and home keys can be given as +\fBkcub1, kcuf1, kcuu1, kcud1, \fRand\fB khome\fR respectively. +If there are function keys such as f0, f1, ..., f10, the codes they send +can be given as \fBkf0, kf1, ..., kf10\fR. +If these keys have labels other than the default f0 through f10, the labels +can be given as \fBlf0, lf1, ..., lf10\fR. +.PP +The codes transmitted by certain other special keys can be given: +.bP +.B kll +(home down), +.bP +.B kbs +(backspace), +.bP +.B ktbc +(clear all tabs), +.bP +.B kctab +(clear the tab stop in this column), +.bP +.B kclr +(clear screen or erase key), +.bP +.B kdch1 +(delete character), +.bP +.B kdl1 +(delete line), +.bP +.B krmir +(exit insert mode), +.bP +.B kel +(clear to end of line), +.bP +.B ked +(clear to end of screen), +.bP +.B kich1 +(insert character or enter insert mode), +.bP +.B kil1 +(insert line), +.bP +.B knp +(next page), +.bP +.B kpp +(previous page), +.bP +.B kind +(scroll forward/down), +.bP +.B kri +(scroll backward/up), +.bP +.B khts +(set a tab stop in this column). +.PP +In addition, if the keypad has a 3 by 3 array of keys including the four +arrow keys, the other five keys can be given as +.BR ka1 , +.BR ka3 , +.BR kb2 , +.BR kc1 , +and +.BR kc3 . +These keys are useful when the effects of a 3 by 3 directional pad are needed. +.PP +Strings to program function keys can be given as +.BR pfkey , +.BR pfloc , +and +.BR pfx . +A string to program screen labels should be specified as \fBpln\fP. +Each of these strings takes two parameters: the function key number to +program (from 0 to 10) and the string to program it with. +Function key numbers out of this range may program undefined keys in +a terminal dependent manner. +The difference between the capabilities is that +.B pfkey +causes pressing the given key to be the same as the user typing the +given string; +.B pfloc +causes the string to be executed by the terminal in local; and +.B pfx +causes the string to be transmitted to the computer. +.PP +The capabilities \fBnlab\fP, \fBlw\fP and \fBlh\fP +define the number of programmable +screen labels and their width and height. +If there are commands to turn the labels on and off, +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. +.PP +.SS Tabs and Initialization +.PP +A few capabilities are used only for tabs: +.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). +.bP +A \*(``back-tab\*('' command which moves leftward to the preceding tab stop can +be given as +.BR cbt . +.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 +or +.B cbt +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 +.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. +.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. +If the terminal has tab stops that can be saved in non-volatile memory, +the terminfo description can assume that they are properly set. +.PP +Other capabilities +include +.bP +.BR is1 , +.BR is2 , +and +.BR is3 , +initialization strings for the terminal, +.bP +.BR iprog , +the path name of a program to be run to initialize the terminal, +.bP +and \fBif\fR, the name of a file containing long initialization strings. +.PP +These strings are expected to set the terminal into modes consistent +with the rest of the terminfo description. +They are normally sent to the terminal, by the +.I init +option of the \fB@TPUT@\fP program, each time the user logs in. +They will be printed in the following order: +.RS +.TP +run the program +.B iprog +.TP +output +.br +\fBis1\fP and +.br +\fBis2\fP +.TP +set the margins using +\fBmgc\fP or +.br +\fBsmglp\fP and \fBsmgrp\fP or +.br +\fBsmgl\fP and \fBsmgr\fP +.TP +set tabs using +.B tbc +and +.B hts +.TP +print the file +\fBif\fP +.TP +and finally output +\fBis3\fP. +.RE +.PP +Most initialization is done with +.BR is2 . +Special terminal modes can be set up without duplicating strings +by putting the common sequences in +.B is2 +and special cases in +.B is1 +and +.BR is3 . +.PP +A set of sequences that does a harder reset from a totally unknown state +can be given as +.BR rs1 , +.BR rs2 , +.B rf +and +.BR rs3 , +analogous to +.B is1 , +.B is2 , +.B if +and +.B is3 +respectively. +These strings are output +by \fIreset\fP option of \fB@TPUT@\fP, +or by the \fB@RESET@\fP program +(an alias of \fB@TSET@\fP), +which is used when the terminal gets into a wedged state. +Commands are normally placed in +.BR rs1 , +.B rs2 +.B rs3 +and +.B rf +only if they produce annoying effects on the screen and are not +necessary when logging in. +For example, the command to set the vt100 into 80-column mode would +normally be part of +.BR is2 , +but it causes an annoying glitch of the screen and is not normally +needed since the terminal is usually already in 80-column mode. +.PP +The \fB@RESET@\fP program writes strings including +.BR iprog , +etc., in the same order as the +.I init +program, using +.BR rs1 , +etc., instead of +.BR is1 , +etc. +If any of +.BR rs1 , +.BR rs2 , +.BR rs3 , +or +.B rf +reset capability strings are missing, +the \fB@RESET@\fP program +falls back upon the corresponding initialization capability string. +.PP +If there are commands to set and clear tab stops, they can be given as +.B tbc +(clear all tab stops) +and +.B hts +(set a tab stop in the current column of every row). +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 +or +.BR if . +.PP +The \fB@TPUT@ reset\fP command uses the same capability strings +as the \fB@RESET@\fP command, +although the two programs (\fB@TPUT@\fP and \fB@RESET@\fP) +provide different command-line options. +.PP +In practice, these terminfo capabilities are not often used in +initialization of tabs +(though they are required for the \fB@TABS@\fP program): +.bP +Almost all hardware terminals (at least those which supported tabs) +initialized those to every \fIeight\fP columns: +.IP +The only exception was the AT&T 2300 series, +which set tabs to every \fIfive\fP columns. +.bP +In particular, developers of the hardware terminals which are commonly used +as models for modern terminal emulators provided documentation demonstrating +that \fIeight\fP columns were the standard. +.bP +Because of this, the terminal initialization programs +\fB@TPUT@\fP and \fB@TSET@\fP +use the +\fBtbc\fP (\fBclear_all_tabs\fP) and +\fBhts\fP (\fBset_tab\fP) capabilities directly +only when the \fBit\fP (\fBinit_tabs\fP) capability +is set to a value other than \fIeight\fP. +.SS Delays and Padding +.PP +Many older and slower terminals do not support either XON/XOFF or DTR +handshaking, including hard copy terminals and some very archaic CRTs +(including, for example, DEC VT100s). +These may require padding characters +after certain cursor motions and screen changes. +.PP +If the terminal uses xon/xoff handshaking for flow control (that is, +it automatically emits ^S back to the host when its input buffers are +close to full), set +.BR xon . +This capability suppresses the emission of padding. +You can also set it +for memory-mapped console devices effectively that do not have a speed limit. +Padding information should still be included so that routines can +make better decisions about relative costs, but actual pad characters will +not be transmitted. +.PP +If \fBpb\fR (padding baud rate) is given, padding is suppressed at baud rates +below the value of \fBpb\fR. +If the entry has no padding baud rate, then +whether padding is emitted or not is completely controlled by \fBxon\fR. +.PP +If the terminal requires other than a null (zero) character as a pad, +then this can be given as \fBpad\fR. +Only the first character of the +.B pad +string is used. +.PP +.SS Status Lines +Some terminals have an extra \*(``status line\*('' which is not normally used by +software (and thus not counted in the terminal's \fBlines\fR capability). +.PP +The simplest case is a status line which is cursor-addressable but not +part of the main scrolling region on the screen; the Heathkit H19 has +a status line of this kind, as would a 24-line VT100 with a 23-line +scrolling region set up on initialization. +This situation is indicated +by the \fBhs\fR capability. +.PP +Some terminals with status lines need special sequences to access the +status line. +These may be expressed as a string with single parameter +\fBtsl\fR which takes the cursor to a given zero-origin column on the +status line. +The capability \fBfsl\fR must return to the main-screen +cursor positions before the last \fBtsl\fR. +You may need to embed the +string values of \fBsc\fR (save cursor) and \fBrc\fR (restore cursor) +in \fBtsl\fR and \fBfsl\fR to accomplish this. +.PP +The status line is normally assumed to be the same width as the width +of the terminal. +If this is untrue, you can specify it with the numeric +capability \fBwsl\fR. +.PP +A command to erase or blank the status line may be specified as \fBdsl\fR. +.PP +The boolean capability \fBeslok\fR specifies that escape sequences, tabs, +etc., work ordinarily in the status line. +.PP +The \fBncurses\fR implementation does not yet use any of these capabilities. +They are documented here in case they ever become important. +.PP +.SS Line Graphics +.PP +Many terminals have alternate character sets useful for forms-drawing. +Terminfo and \fBcurses\fR have built-in support +for most of the drawing characters +supported by the VT100, with some characters from the AT&T 4410v1 added. +This alternate character set may be specified by the \fBacsc\fR capability. +.PP +.TS H +center expand; +l l l l l +l l l l l +_ _ _ _ _ +lw25 lw10 lw6 lw6 lw6. +.\".TH +\fBGlyph ACS Ascii acsc acsc\fR +\fBName Name Default Char Value\fR +arrow pointing right ACS_RARROW > + 0x2b +arrow pointing left ACS_LARROW < , 0x2c +arrow pointing up ACS_UARROW ^ \- 0x2d +arrow pointing down ACS_DARROW v . 0x2e +solid square block ACS_BLOCK # 0 0x30 +diamond ACS_DIAMOND + ` 0x60 +checker board (stipple) ACS_CKBOARD : a 0x61 +degree symbol ACS_DEGREE \e f 0x66 +plus/minus ACS_PLMINUS # g 0x67 +board of squares ACS_BOARD # h 0x68 +lantern symbol ACS_LANTERN # i 0x69 +lower right corner ACS_LRCORNER + j 0x6a +upper right corner ACS_URCORNER + k 0x6b +upper left corner ACS_ULCORNER + l 0x6c +lower left corner ACS_LLCORNER + m 0x6d +large plus or crossover ACS_PLUS + n 0x6e +scan line 1 ACS_S1 ~ o 0x6f +scan line 3 ACS_S3 \- p 0x70 +horizontal line ACS_HLINE \- q 0x71 +scan line 7 ACS_S7 \- r 0x72 +scan line 9 ACS_S9 \&_ s 0x73 +tee pointing right ACS_LTEE + t 0x74 +tee pointing left ACS_RTEE + u 0x75 +tee pointing up ACS_BTEE + v 0x76 +tee pointing down ACS_TTEE + w 0x77 +vertical line ACS_VLINE | x 0x78 +less-than-or-equal-to ACS_LEQUAL < y 0x79 +greater-than-or-equal-to ACS_GEQUAL > z 0x7a +greek pi ACS_PI * { 0x7b +not-equal ACS_NEQUAL ! | 0x7c +UK pound sign ACS_STERLING f } 0x7d +bullet ACS_BULLET o ~ 0x7e +.TE +.PP +A few notes apply to the table itself: +.bP +X/Open Curses incorrectly states that the mapping for \fIlantern\fP is +uppercase \*(``I\*('' although Unix implementations use the +lowercase \*(``i\*('' mapping. +.bP +The DEC VT100 implemented graphics using the alternate character set +feature, temporarily switching \fImodes\fP and sending characters +in the range 0x60 (96) to 0x7e (126) +(the \fBacsc Value\fP column in the table). +.bP +The AT&T terminal added graphics characters outside that range. +.IP +Some of the characters within the range do not match the VT100; +presumably they were used in the AT&T terminal: +\fIboard of squares\fP replaces the VT100 \fInewline\fP symbol, while +\fIlantern symbol\fP replaces the VT100 \fIvertical tab\fP symbol. +The other VT100 symbols for control characters (\fIhorizontal tab\fP, +\fIcarriage return\fP and \fIline-feed\fP) are not (re)used in curses. +.PP +The best way to define a new device's graphics set is to add a column +to a copy of this table for your terminal, giving the character which +(when emitted between \fBsmacs\fR/\fBrmacs\fR switches) will be rendered +as the corresponding graphic. +Then read off the VT100/your terminal +character pairs right to left in sequence; these become the ACSC string. +.PP +.SS Color Handling +.PP +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). +.PP +Most color terminals are either \*(``Tektronix-like\*('' or \*(``HP-like\*('': +.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. +.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. +.PP +Some basic color capabilities are independent of the color method. +The numeric +capabilities \fBcolors\fR and \fBpairs\fR specify the maximum numbers of colors +and color-pairs that can be displayed simultaneously. +The \fBop\fR (original +pair) string resets foreground and background colors to their default values +for the terminal. +The \fBoc\fR 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\fR. +.PP +While the 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: +.bP +To change the current foreground or background color on a Tektronix-type +terminal, use \fBsetaf\fR (set ANSI foreground) and \fBsetab\fR (set ANSI +background) or \fBsetf\fR (set foreground) and \fBsetb\fR (set background). +These take one parameter, the color number. +The SVr4 documentation describes +only \fBsetaf\fR/\fBsetab\fR; the XPG4 draft says that "If the terminal +supports ANSI escape sequences to set background and foreground, they should +be coded as \fBsetaf\fR and \fBsetab\fR, respectively. +.bP +If the terminal +supports other escape sequences to set background and foreground, they should +be coded as \fBsetf\fR and \fBsetb\fR, respectively. +The \fBvidputs\fR and the \fBrefresh\fP(3X) functions +use the \fBsetaf\fR and \fBsetab\fR capabilities if they are defined. +.PP +The \fBsetaf\fR/\fBsetab\fR and \fBsetf\fR/\fBsetb\fR capabilities take a +single numeric argument each. +Argument values 0-7 of \fBsetaf\fR/\fBsetab\fR are portably defined as +follows (the middle column is the symbolic #define available in the header for +the \fBcurses\fR or \fBncurses\fR libraries). +The terminal hardware is free to +map these as it likes, but the RGB values indicate normal locations in color +space. +.PP +.TS H +center; +l c c c +l l n l. +\fBColor #define Value RGB\fR +black \fBCOLOR_BLACK\fR 0 0, 0, 0 +red \fBCOLOR_RED\ \fR 1 max,0,0 +green \fBCOLOR_GREEN\fR 2 0,max,0 +yellow \fBCOLOR_YELLOW\fR 3 max,max,0 +blue \fBCOLOR_BLUE\fR 4 0,0,max +magenta \fBCOLOR_MAGENTA\fR 5 max,0,max +cyan \fBCOLOR_CYAN\fR 6 0,max,max +white \fBCOLOR_WHITE\fR 7 max,max,max +.TE +.PP +The argument values of \fBsetf\fR/\fBsetb\fR historically correspond to +a different mapping, i.e., +.TS H +center; +l c c c +l l n l. +\fBColor #define Value RGB\fR +black \fBCOLOR_BLACK\fR 0 0, 0, 0 +blue \fBCOLOR_BLUE\fR 1 0,0,max +green \fBCOLOR_GREEN\fR 2 0,max,0 +cyan \fBCOLOR_CYAN\fR 3 0,max,max +red \fBCOLOR_RED\ \fR 4 max,0,0 +magenta \fBCOLOR_MAGENTA\fR 5 max,0,max +yellow \fBCOLOR_YELLOW\fR 6 max,max,0 +white \fBCOLOR_WHITE\fR 7 max,max,max +.TE +.PP +It is important to not confuse the two sets of color capabilities; +otherwise red/blue will be interchanged on the display. +.PP +On an HP-like terminal, use \fBscp\fR with a color-pair number parameter to set +which color pair is current. +.PP +Some terminals allow the \fIcolor values\fP to be modified: +.bP +On a Tektronix-like terminal, the capability \fBccc\fR may be present to +indicate that colors can be modified. +If so, the \fBinitc\fR capability will +take a color number (0 to \fBcolors\fR \- 1)and three more parameters which +describe the color. +These three parameters default to being interpreted as RGB +(Red, Green, Blue) values. +If the boolean capability \fBhls\fR is present, +they are instead as HLS (Hue, Lightness, Saturation) indices. +The ranges are +terminal-dependent. +.bP +On an HP-like terminal, \fBinitp\fR may give a capability for changing a +color-pair value. +It will take seven parameters; a color-pair number (0 to +\fBmax_pairs\fR \- 1), and two triples describing first background and then +foreground colors. +These parameters must be (Red, Green, Blue) or +(Hue, Lightness, Saturation) depending on \fBhls\fR. +.PP +On some color terminals, colors collide with highlights. +You can register +these collisions with the \fBncv\fR capability. +This is a bit-mask of +attributes not to be used when colors are enabled. +The correspondence with the +attributes understood by \fBcurses\fR is as follows: +.PP +.TS +center; +l l l l +lw20 lw2 lw10 lw10. +\fBAttribute Bit Decimal Set by\fR +A_STANDOUT 0 1 sgr +A_UNDERLINE 1 2 sgr +A_REVERSE 2 4 sgr +A_BLINK 3 8 sgr +A_DIM 4 16 sgr +A_BOLD 5 32 sgr +A_INVIS 6 64 sgr +A_PROTECT 7 128 sgr +A_ALTCHARSET 8 256 sgr +A_HORIZONTAL 9 512 sgr1 +A_LEFT 10 1024 sgr1 +A_LOW 11 2048 sgr1 +A_RIGHT 12 4096 sgr1 +A_TOP 13 8192 sgr1 +A_VERTICAL 14 16384 sgr1 +A_ITALIC 15 32768 sitm +.TE +.PP +For example, on many IBM PC consoles, the underline attribute collides with the +foreground color blue and is not available in color mode. +These should have +an \fBncv\fR capability of 2. +.PP +SVr4 curses does nothing with \fBncv\fR, ncurses recognizes it and optimizes +the output in favor of colors. +.PP +.SS Miscellaneous +If the terminal requires other than a null (zero) character as a pad, then this +can be given as pad. +Only the first character of the pad string is used. +If the terminal does not have a pad character, specify npc. +Note that ncurses implements the termcap-compatible \fBPC\fR variable; +though the application may set this value to something other than +a null, ncurses will test \fBnpc\fR first and use napms if the terminal +has no pad character. +.PP +If the terminal can move up or down half a line, +this can be indicated with +.B hu +(half-line up) +and +.B hd +(half-line down). +This is primarily useful for superscripts and subscripts on hard-copy terminals. +If a hard-copy terminal can eject to the next page (form feed), give this as +.B ff +(usually control/L). +.PP +If there is a command to repeat a given character a given number of +times (to save time transmitting a large number of identical characters) +this can be indicated with the parameterized string +.BR rep . +The first parameter is the character to be repeated and the second +is the number of times to repeat it. +Thus, tparm(repeat_char, \(aqx\(aq, 10) is the same as \*(``xxxxxxxxxx\*(''. +.PP +If the terminal has a settable command character, such as the \s-1TEKTRONIX\s+1 4025, +this can be indicated with +.BR cmdch . +A prototype command character is chosen which is used in all capabilities. +This character is given in the +.B cmdch +capability to identify it. +The following convention is supported on some UNIX systems: +The environment is to be searched for a +.B CC +variable, and if found, all +occurrences of the prototype character are replaced with the character +in the environment variable. +.PP +Terminal descriptions that do not represent a specific kind of known +terminal, such as +.IR switch , +.IR dialup , +.IR patch , +and +.IR network , +should include the +.B gn +(generic) capability so that programs can complain that they do not know +how to talk to the terminal. +(This capability does not apply to +.I virtual +terminal descriptions for which the escape sequences are known.) +.PP +If the terminal has a \*(``meta key\*('' which acts as a shift key, +setting the 8th bit of any character transmitted, this fact can +be indicated with +.BR km . +Otherwise, software will assume that the 8th bit is parity and it +will usually be cleared. +If strings exist to turn this \*(``meta mode\*('' on and off, they +can be given as +.B smm +and +.BR rmm . +.PP +If the terminal has more lines of memory than will fit on the screen +at once, the number of lines of memory can be indicated with +.BR lm . +A value of +.BR lm #0 +indicates that the number of lines is not fixed, +but that there is still more memory than fits on the screen. +.PP +If the terminal is one of those supported by the \s-1UNIX\s+1 virtual +terminal protocol, the terminal number can be given as +.BR vt . +.PP +Media copy +strings which control an auxiliary printer connected to the terminal +can be given as +.BR mc0 : +print the contents of the screen, +.BR mc4 : +turn off the printer, and +.BR mc5 : +turn on the printer. +When the printer is on, all text sent to the terminal will be sent +to the printer. +It is undefined whether the text is also displayed on the terminal screen +when the printer is on. +A variation +.B mc5p +takes one parameter, and leaves the printer on for as many characters +as the value of the parameter, then turns the printer off. +The parameter should not exceed 255. +All text, including +.BR mc4 , +is transparently passed to the printer while an +.B mc5p +is in effect. +.PP +.SS Glitches and Braindamage +.PP +Hazeltine terminals, which do not allow \*(``~\*('' characters to be displayed should +indicate \fBhz\fR. +.PP +Terminals which ignore a line-feed immediately after an \fBam\fR wrap, +such as the Concept and vt100, +should indicate \fBxenl\fR. +.PP +If +.B el +is required to get rid of standout +(instead of merely writing normal text on top of it), +\fBxhp\fP should be given. +.PP +Teleray terminals, where tabs turn all characters moved over to blanks, +should indicate \fBxt\fR (destructive tabs). +Note: the variable indicating this is now \*(``dest_tabs_magic_smso\*(''; in +older versions, it was teleray_glitch. +This glitch is also taken to mean that it is not possible to position +the cursor on top of a \*(``magic cookie\*('', +that to erase standout mode it is instead necessary to use +delete and insert line. +The ncurses implementation ignores this glitch. +.PP +The Beehive Superbee, which is unable to correctly transmit the escape +or control/C characters, has +.BR xsb , +indicating that the f1 key is used for escape and f2 for control/C. +(Only certain Superbees have this problem, depending on the ROM.) +Note that in older terminfo versions, this capability was called +\*(``beehive_glitch\*(''; it is now \*(``no_esc_ctl_c\*(''. +.PP +Other specific terminal problems may be corrected by adding more +capabilities of the form \fBx\fR\fIx\fR. +.PP +.SS Pitfalls of Long Entries +.PP +Long terminfo entries are unlikely to be a problem; to date, no entry has even +approached terminfo's 4096-byte string-table maximum. +Unfortunately, the termcap +translations are much more strictly limited (to 1023 bytes), thus termcap translations +of long terminfo entries can cause problems. +.PP +The man pages for 4.3BSD and older versions of \fBtgetent\fP instruct the user to +allocate a 1024-byte buffer for the termcap entry. +The entry gets null-terminated by +the termcap library, so that makes the maximum safe length for a termcap entry +1k\-1 (1023) bytes. +Depending on what the application and the termcap library +being used does, and where in the termcap file the terminal type that \fBtgetent\fP +is searching for is, several bad things can happen. +.PP +Some termcap libraries print a warning message or exit if they find an +entry that's longer than 1023 bytes; others do not; others truncate the +entries to 1023 bytes. +Some application programs allocate more than +the recommended 1K for the termcap entry; others do not. +.PP +Each termcap entry has two important sizes associated with it: before +\*(``tc\*('' expansion, and after \*(``tc\*('' expansion. +\*(``tc\*('' is the capability that +tacks on another termcap entry to the end of the current one, to add +on its capabilities. +If a termcap entry does not use the \*(``tc\*('' +capability, then of course the two lengths are the same. +.PP +The \*(``before tc expansion\*('' length is the most important one, because it +affects more than just users of that particular terminal. +This is the +length of the entry as it exists in /etc/termcap, minus the +backslash-newline pairs, which \fBtgetent\fP strips out while reading it. +Some termcap libraries strip off the final newline, too (GNU termcap does not). +Now suppose: +.bP +a termcap entry before expansion is more than 1023 bytes long, +.bP +and the application has only allocated a 1k buffer, +.bP +and the termcap library (like the one in BSD/OS 1.1 and GNU) reads +the whole entry into the buffer, no matter what its length, to see +if it is the entry it wants, +.bP +and \fBtgetent\fP is searching for a terminal type that either is the +long entry, appears in the termcap file after the long entry, or +does not appear in the file at all (so that \fBtgetent\fP has to search +the whole termcap file). +.PP +Then \fBtgetent\fP will overwrite memory, perhaps its stack, and probably core dump +the program. +Programs like telnet are particularly vulnerable; modern telnets +pass along values like the terminal type automatically. +The results are almost +as undesirable with a termcap library, like SunOS 4.1.3 and Ultrix 4.4, that +prints warning messages when it reads an overly long termcap entry. +If a +termcap library truncates long entries, like OSF/1 3.0, it is immune to dying +here but will return incorrect data for the terminal. +.PP +The \*(``after tc expansion\*('' length will have a similar effect to the +above, but only for people who actually set TERM to that terminal +type, since \fBtgetent\fP only does \*(``tc\*('' expansion once it is found the +terminal type it was looking for, not while searching. +.PP +In summary, a termcap entry that is longer than 1023 bytes can cause, +on various combinations of termcap libraries and applications, a core +dump, warnings, or incorrect operation. +If it is too long even before +\*(``tc\*('' expansion, it will have this effect even for users of some other +terminal types and users whose TERM variable does not have a termcap +entry. +.PP +When in \-C (translate to termcap) mode, the \fBncurses\fR implementation of +\fB@TIC@\fR(1M) issues warning messages when the pre-tc length of a termcap +translation is too long. +The \-c (check) option also checks resolved (after tc +expansion) lengths. +.SS Binary Compatibility +It is not wise to count on portability of binary terminfo entries between +commercial UNIX versions. +The problem is that there are at least two versions +of terminfo (under HP\-UX and AIX) 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 XSI Curses extensions. +.SH EXTENSIONS +.PP +Searching for terminal descriptions in +\fB$HOME/.terminfo\fR and TERMINFO_DIRS +is not supported by older implementations. +.PP +Some SVr4 \fBcurses\fR implementations, and all previous to SVr4, do not +interpret the %A and %O operators in parameter strings. +.PP +SVr4/XPG4 do not specify whether \fBmsgr\fR licenses movement while in +an alternate-character-set mode (such modes may, among other things, map +CR and NL to characters that do not trigger local motions). +The \fBncurses\fR implementation ignores \fBmsgr\fR in \fBALTCHARSET\fR +mode. +This raises the possibility that an XPG4 +implementation making the opposite interpretation may need terminfo +entries made for \fBncurses\fR to have \fBmsgr\fR turned off. +.PP +The \fBncurses\fR library handles insert-character and insert-character modes +in a slightly non-standard way to get better update efficiency. +See +the \fBInsert/Delete Character\fR subsection above. +.PP +The parameter substitutions for \fBset_clock\fR and \fBdisplay_clock\fR are +not documented in SVr4 or the XSI Curses standard. +They are deduced from the +documentation for the AT&T 505 terminal. +.PP +Be careful assigning the \fBkmous\fR capability. +The \fBncurses\fR library wants to interpret it as \fBKEY_MOUSE\fR, +for use by terminals and emulators like xterm +that can return mouse-tracking information in the keyboard-input stream. +.PP +X/Open Curses does not mention italics. +Portable applications must assume that numeric capabilities are +signed 16-bit values. +This includes the \fIno_color_video\fP (ncv) capability. +The 32768 mask value used for italics with ncv can be confused with +an absent or cancelled ncv. +If italics should work with colors, +then the ncv value must be specified, even if it is zero. +.PP +Different commercial ports of terminfo and curses support different subsets of +the XSI Curses standard and (in some cases) different extension sets. +Here +is a summary, accurate as of October 1995: +.bP +\fBSVR4, Solaris, ncurses\fR \-\- +These support all SVr4 capabilities. +.bP +\fBSGI\fR \-\- +Supports the SVr4 set, adds one undocumented extended string +capability (\fBset_pglen\fR). +.bP +\fBSVr1, Ultrix\fR \-\- +These support a restricted subset of terminfo capabilities. +The booleans end with \fBxon_xoff\fR; +the numerics with \fBwidth_status_line\fR; +and the strings with \fBprtr_non\fR. +.bP +\fBHP/UX\fR \-\- +Supports the SVr1 subset, plus the SVr[234] numerics \fBnum_labels\fR, +\fBlabel_height\fR, \fBlabel_width\fR, plus function keys 11 through 63, plus +\fBplab_norm\fR, \fBlabel_on\fR, and \fBlabel_off\fR, plus some incompatible +extensions in the string table. +.bP +\fBAIX\fR \-\- +Supports the SVr1 subset, plus function keys 11 through 63, plus a number +of incompatible string table extensions. +.bP +\fBOSF\fR \-\- +Supports both the SVr4 set and the AIX extensions. +.SH FILES +.TP 25 +\*d/?/* +files containing terminal descriptions +.SH SEE ALSO +\fB@INFOCMP@\fR(1M), +\fB@TABS@\fR(1), +\fB@TIC@\fR(1M), +\fBcurses\fR(3X), +\fBcurs_color\fR(3X), +\fBcurs_variables\fR(3X), +\fBprintf\fR(3), +\fBterm_variables\fR(3X). +\fBterm\fR(\*n). +\fBuser_caps\fR(5). +.SH AUTHORS +Zeyd M. Ben-Halim, Eric S. Raymond, Thomas E. Dickey. +Based on pcurses by Pavel Curtis. diff --git a/deps/ncurses-6.3/man/tic.1m b/deps/ncurses-6.3/man/tic.1m new file mode 100644 index 0000000..17aa03f --- /dev/null +++ b/deps/ncurses-6.3/man/tic.1m @@ -0,0 +1,591 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: tic.1m,v 1.80 2021/08/15 20:01:19 tom Exp $ +.TH @TIC@ 1M "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.ds n 5 +.ds d @TERMINFO@ +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fB@TIC@\fR \- the \fIterminfo\fR entry-description compiler +.SH SYNOPSIS +\fB@TIC@\fR +[\fB\-\ +0\ +1\ +C\ +D\ +G\ +I\ +K\ +L\ +N\ +T\ +U\ +V\ +W\ +a\ +c\ +f\ +g\ +q\ +r\ +s\ +t\ +x\ +\fR] +[\fB\-e\fR \fInames\fR] +[\fB\-o\fR \fIdir\fR] +[\fB\-Q\fR[\fIn\fR]] +[\fB\-R\fR \fIsubset\fR] +[\fB\-v\fR[\fIn\fR]] +[\fB\-w\fR[\fIn\fR]] +\fIfile\fR +.br +.SH DESCRIPTION +The \fB@TIC@\fR command translates a \fBterminfo\fR file from source +format into compiled format. +The compiled format is necessary for use with +the library routines in \fBncurses\fR(3X). +.PP +As described in \fBterm\fR(\*n), the database may be either a directory +tree (one file per terminal entry) or a hashed database (one record per entry). +The \fB@TIC@\fR 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, +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", +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). +.PP +In either case (directory or hashed database), +\fB@TIC@\fP will create the container if it does not exist. +For a directory, this would be the \*(``terminfo\*('' leaf, +versus a "terminfo.db" file. +.PP +The results are normally placed in the system terminfo database \fB\*d\fR. +The compiled terminal description can be placed +in a different terminfo 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 \fBTERMINFO\fR +in your shell environment to a valid database location. +.bP +Secondly, if \fB@TIC@\fR cannot write in \fI\*d\fR +or the location specified using your TERMINFO variable, +it looks for the directory \fI$HOME/.terminfo\fR +(or hashed database \fI$HOME/.terminfo.db)\fR; +if that location exists, the entry is placed there. +.PP +Libraries that read terminfo entries are expected to check in succession +.bP +a location specified with the TERMINFO environment variable, +.bP +\fI$HOME/.terminfo\fR, +.bP +directories listed in the TERMINFO_DIRS environment variable, +.bP +a compiled-in list of directories (@TERMINFO_DIRS@), and +.bP +the system terminfo database (\fI\*d\fR). +.SS ALIASES +.PP +This is the same program as @INFOTOCAP@ and @CAPTOINFO@; +usually those are linked to, or copied from this program: +.bP +When invoked as @INFOTOCAP@, @TIC@ sets the \fB\-I\fP option. +.bP +When invoked as @CAPTOINFO@, @TIC@ sets the \fB\-C\fP option. +.SS OPTIONS +.TP +\fB\-0\fR +restricts the output to a single line +.TP +\fB\-1\fR +restricts the output to a single column +.TP +\fB\-a\fR +tells \fB@TIC@\fP to retain commented-out capabilities rather than discarding +them. +Capabilities are commented by prefixing them with a period. +This sets the \fB\-x\fR 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. +Otherwise these are ignored. +.TP +\fB\-C\fR +Force source translation to termcap format. +Note: this differs from the \fB\-C\fR +option of \fB@INFOCMP@\fR(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 +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\fR option. +.IP +If this is combined with \fB\-c\fR, \fB@TIC@\fR makes additional checks +to report cases where the terminfo values do not have an exact equivalent +in termcap form. +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. +.RE +.TP +\fB\-c\fR +tells \fB@TIC@\fP to only check \fIfile\fR for errors, +including syntax problems and bad use-links. +If you specify \fB\-C\fR (\fB\-I\fR) 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. +.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. +.TP +\fB\-D\fR +tells \fB@TIC@\fP 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 +according to the rules summarized above, +it will print a diagnostic and exit with an error rather than +printing a list of database locations. +.TP +\fB\-e \fR\fInames\fR +Limit writes and translations to the following comma-separated list of +terminals. +If any name or alias of a terminal matches one of the names in +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, +this option may require \fB\-I\fR or \fB\-C\fR.) +.TP +\fB\-f\fR +Display complex terminfo strings which contain if/then/else/endif expressions +indented for readability. +.TP +\fB\-G\fR +Display constant literals in decimal form +rather than their character equivalents. +.TP +\fB\-g\fR +Display constant character literals in quoted form +rather than their decimal equivalents. +.TP +\fB\-I\fR +Force source translation to terminfo format. +.TP +\fB\-K\fR +Suppress some longstanding ncurses extensions to termcap format, +e.g., "\\s" for space. +.TP +\fB\-L\fR +Force source translation to terminfo format +using the long C variable names listed in <\fBterm.h\fR> +.TP +\fB\-N\fR +Disable smart defaults. +Normally, when translating from termcap to terminfo, the compiler makes +a number of assumptions about the defaults of string capabilities +\fBreset1_string\fR, \fBcarriage_return\fR, \fBcursor_left\fR, +\fBcursor_down\fR, \fBscroll_forward\fR, \fBtab\fR, \fBnewline\fR, +\fBkey_backspace\fR, \fBkey_left\fR, and \fBkey_down\fR, then attempts +to use obsolete termcap capabilities to deduce correct values. +It also +normally suppresses output of obsolete termcap capabilities such as \fBbs\fR. +This option forces a more literal translation that also preserves the +obsolete capabilities. +.TP +\fB\-o\fR\fIdir\fR +Write compiled entries to given database location. +Overrides the TERMINFO environment variable. +.TP +\fB\-Q\fR\fIn\fR +Rather than show source in terminfo (text) format, +print the compiled (binary) format in hexadecimal or base64 form, +depending on the option's value: +.RS 8 +.TP 3 +1 +hexadecimal +.TP 3 +2 +base64 +.TP 3 +3 +hexadecimal and base64 +.RE +.TP +\fB\-q\fR +Suppress comments and blank lines when showing translated source. +.TP +\fB\-R\fR\fIsubset\fR +Restrict output to a given subset. +This option is for use with archaic +versions of terminfo like those on SVr1, Ultrix, or HP-UX that do not support +the full set of SVR4/XSI Curses terminfo; and outright broken ports like AIX 3.x +that have their own extensions incompatible with SVr4/XSI. +Available subsets +are \*(``SVr1\*('', \*(``Ultrix\*('', \*(``HP\*('', \*(``BSD\*('' and \*(``AIX\*(''; +see \fBterminfo\fR(\*n) for details. +.TP +\fB\-r\fR +Force entry resolution (so there are no remaining tc capabilities) even +when doing translation to termcap format. +This may be needed if you are +preparing a termcap file for a termcap library (such as GNU termcap through +version 1.3 or BSD termcap through 4.3BSD) that does not handle multiple +tc capabilities per entry. +.TP +\fB\-s\fR +Summarize the compile by showing the database location into which entries +are written, and the number of entries which are compiled. +.TP +\fB\-T\fR +eliminates size-restrictions on the generated text. +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\fR +tells \fB@TIC@\fP to discard commented-out capabilities. +Normally when translating from terminfo to termcap, +untranslatable capabilities are commented-out. +.TP 5 +\fB\-U\fR +tells \fB@TIC@\fP 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 +\fB\-V\fR +reports the version of ncurses which was used in this program, and exits. +.TP +\fB\-v\fR\fIn\fR +specifies that (verbose) output be written to standard error trace +information showing \fB@TIC@\fR's progress. +.IP +The optional parameter \fIn\fR is a number from 1 to 10, inclusive, +indicating the desired level of detail of information. +If ncurses is built without tracing support, the optional parameter is ignored. +If \fIn\fR is omitted, the default level is 1. +If \fIn\fR is specified and greater than 1, the level of +detail is increased. +.RS +.PP +The debug flag levels are as follows: +.TP +1 +Names of files created and linked +.TP +2 +Information related to the \*(``use\*('' facility +.TP +3 +Statistics from the hashing algorithm +.TP +5 +String-table memory allocations +.TP +7 +Entries into the string-table +.TP +8 +List of tokens encountered by scanner +.TP +9 +All values computed in construction of the hash table +.LP +If the debug level \fIn\fR is not given, it is taken to be one. +.RE +.TP +\fB\-W\fR +By itself, the \fB\-w\fP option will not force long strings to be wrapped. +Use the \fB\-W\fP option to do this. +.IP +If you specify both \fB\-f\fP and \fB\-W\fP options, +the latter is ignored when \fB\-f\fP has already split the line. +.TP +\fB\-w\fR\fIn\fR +specifies the width of the output. +The parameter is optional. +If it is omitted, it defaults to 60. +.TP +\fB\-x\fR +Treat unknown capabilities as user-defined (see \fBuser_caps(\*n)\fP). +That is, if you supply a capability name which \fB@TIC@\fP 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\fR +contains one or more \fBterminfo\fR terminal descriptions in source +format [see \fBterminfo\fR(\*n)]. +Each description in the file +describes the capabilities of a particular terminal. +.IP +If \fIfile\fR is \*(``-\*('', then the data is read from the standard input. +The \fIfile\fR parameter may also be the path of a character-device. +.SS PROCESSING +.PP +All but one of the capabilities recognized by \fB@TIC@\fR are documented +in \fBterminfo\fR(\*n). +The exception is the \fBuse\fR capability. +.PP +When a \fBuse\fR=\fIentry\fR\-\fIname\fR field is discovered in a +terminal entry currently being compiled, \fB@TIC@\fR reads in the binary +from \fB\*d\fR to complete the entry. +(Entries created from +\fIfile\fR will be used first. +\fB@TIC@\fR duplicates the capabilities in +\fIentry\fR\-\fIname\fR for the current entry, with the exception of +those capabilities that explicitly are defined in the current entry. +.PP +When an entry, e.g., \fBentry_name_1\fR, contains a +\fBuse=\fR\fIentry\fR_\fIname\fR_\fI2\fR field, any canceled +capabilities in \fIentry\fR_\fIname\fR_\fI2\fR must also appear in +\fBentry_name_1\fR before \fBuse=\fR for these capabilities to be +canceled in \fBentry_name_1\fR. +.PP +Total compiled entries cannot exceed 4096 bytes. +The name field cannot +exceed 512 bytes. +Terminal names exceeding the maximum alias length +(32 characters on systems with long filenames, 14 characters otherwise) +will be truncated to the maximum alias length +and a warning message will be printed. +.SH HISTORY +.PP +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. +.PP +System V Release 3 provided a different \fBtic\fP utility, +written by Pavel Curtis, +(originally named \*(``compile\*('' in \fIpcurses\fP). +This added an option \fB\-c\fP to check the file for +errors, with the caveat that errors in \*(``use=\*('' links +would not be reported. +System V Release 3 documented a few warning messages which +did not appear in \fIpcurses\fP. +While the program itself was changed little as development +continued with System V Release 4, +the table of capabilities grew from 180 (\fIpcurses\fP) to 464 (Solaris). +.PP +In early development of ncurses (1993), +Zeyd Ben-Halim used the table from \fImytinfo\fP to +extend the \fIpcurses\fP table to 469 capabilities +(456 matched SVr4, 8 were only in SVr4, 13 were not in SVr4). +Of those 13, 11 were ultimately discarded +(perhaps to match the draft of X/Open Curses). +The exceptions were +\fBmemory_lock_above\fP and +\fBmemory_unlock\fP (see \fBuser_caps\fP(5)). +.PP +Eric Raymond incorporated parts of \fImytinfo\fP into ncurses +to implement the termcap-to-terminfo source conversion, +and extended that to begin development of +the corresponding terminfo-to-termcap source conversion, +Thomas Dickey completed that development over the course of several years. +.PP +In 1999, Thomas Dickey added the \fB\-x\fP option +to support user-defined capabilities. +.PP +In 2010, Roy Marples provided a \fBtic\fP program +and terminfo library for NetBSD. +That implementation adapts several features from ncurses, +including \fB@TIC@\fP's \fB\-x\fP option. +.PP +The \fB\-c\fP option tells \fB@TIC@\fP to check for problems in the +terminfo source file. +Continued development provides additional checks: +.bP +\fIpcurses\fP had 8 warnings +.bP +ncurses in 1996 had 16 warnings +.bP +Solaris (SVr4) curses has 28 warnings +.bP +NetBSD tic in 2019 has 19 warnings. +.bP +ncurses in 2019 has 96 warnings +.PP +The checking done in ncurses' \fB@TIC@\fP 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 ncurses' terminal database; +128 of those are user-defined. +.SH PORTABILITY +.PP +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 True64 UNIX. +According to its manual pages, that system also supported the \fB\-v\fP option. +.PP +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), +ncurses +and NetBSD curses. +The SVr4 \fBtic\fP programs all support the \fB\-v\fP option. +The NetBSD \fBtic\fP program follows X/Open's documentation, +omitting the \fB\-v\fP option. +.PP +The X/Open rationale states that some implementations of \fBtic\fP +read terminal descriptions from the standard input if the \fIfile\fP +parameter is omitted. +None of these implementations do that. +Further, it comments that some may choose to read from \*(''./terminfo.src\*('' +but that is obsolescent behavior from SVr2, +and is not (for example) a documented feature of SVr3. +.SS COMPATIBILITY +There is some evidence that historic \fB@TIC@\fR implementations treated +description fields with no whitespace in them as additional aliases or +short names. +This \fB@TIC@\fR does not do that, but it does warn when +description fields may be treated that way and check them for dangerous +characters. +.SS EXTENSIONS +Unlike the SVr4 \fB@TIC@\fR command, this implementation can actually +compile termcap sources. +In fact, entries in terminfo and termcap syntax can +be mixed in a single source file. +See \fBterminfo\fR(\*n) for the list of +termcap names taken to be equivalent to terminfo names. +.PP +The SVr4 manual pages are not clear on the resolution rules for \fBuse\fR +capabilities. +This implementation of \fB@TIC@\fR will find \fBuse\fR targets anywhere +in the source file, or anywhere in the file tree rooted at \fBTERMINFO\fR (if +\fBTERMINFO\fR is defined), +or in the user's \fI$HOME/.terminfo\fR database +(if it exists), +or (finally) anywhere in the system's file tree of +compiled entries. +.PP +The error messages from this \fB@TIC@\fR 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: +.bP +Most of @TIC@'s options +are not supported by SVr4 \fBtic\fP: +.sp +.RS +\fB\-0\fR +\fB\-1\fR +\fB\-C\fR +\fB\-G\fR +\fB\-I\fR +\fB\-N\fR +\fB\-R\fR +\fB\-T\fR +\fB\-V\fR +\fB\-a\fR +\fB\-e\fR +\fB\-f\fR +\fB\-g\fR +\fB\-o\fR +\fB\-r\fR +\fB\-s\fR +\fB\-t\fR +\fB\-x\fR +.RE +.bP +The NetBSD \fBtic\fP supports a few of the ncurses options +.sp +.RS +\fB\-a\fP +\fB\-o\fP +\fB\-x\fP +.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). +.PP +The SVr4 \fB\-c\fR mode does not report bad \*(``use=\*('' links. +.PP +System V does not compile entries to or read entries from your +\fI$HOME/.terminfo\fR database unless TERMINFO is explicitly set to it. +.SH FILES +.TP 5 +\fB\*d/?/*\fR +Compiled terminal description database. +.SH SEE ALSO +\fB@CAPTOINFO@\fR(1M), +\fB@INFOCMP@\fR(1M), +\fB@INFOTOCAP@\fR(1M), +\fB@TOE@\fR(1M), +\fBcurses\fR(3X), +\fBterm\fR(\*n). +\fBterminfo\fR(\*n). +\fBuser_caps\fR(\*n). +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). +.SH AUTHOR +Eric S. Raymond <esr@snark.thyrsus.com> +and +.br +Thomas E. Dickey <dickey@invisible-island.net> diff --git a/deps/ncurses-6.3/man/toe.1m b/deps/ncurses-6.3/man/toe.1m new file mode 100644 index 0000000..44d5cdd --- /dev/null +++ b/deps/ncurses-6.3/man/toe.1m @@ -0,0 +1,194 @@ +.\"*************************************************************************** +.\" Copyright 2019-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2015,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. * +.\"*************************************************************************** +.\" +.\" $Id: toe.1m,v 1.34 2021/06/17 21:26:02 tom Exp $ +.TH @TOE@ 1M "" +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.ds n 5 +.ds d @TERMINFO@ +.SH NAME +\fB@TOE@\fR \- table of (terminfo) entries +.SH SYNOPSIS +\fB@TOE@\fR [\fB\-v\fR[\fIn\fR]] [\fB\-ahsuUV\fR] \fIfile...\fR +.br +.SH DESCRIPTION +.PP +With no options, +\fB@TOE@\fR lists all available terminal types by primary name +with descriptions. +File arguments specify the directories to be scanned; if no +such arguments are given, +your default terminfo directory is scanned. +If you also specify the \fB\-h\fR option, +a directory header will be issued as each +directory is entered. +.PP +There are other options intended for use by terminfo file maintainers: +.TP +\fB\-a\fR +report on all of the terminal databases which ncurses would search, +rather than only the first one that it finds. +.IP +If the \fB\-s\fR is also given, \fB@TOE@\fR +adds a column to the report, +showing (like \fBconflict\fP(1)) which entries which +belong to a given terminal database. +An "*" marks entries which differ, and "+" marks equivalent entries. +.IP +Without the \fB\-s\fP option, \fB@TOE@\fR does not attempt to merge +duplicates in its report +.TP +\fB\-s\fR +sort the output by the entry names. +.TP +\fB\-u\fR \fIfile\fR +says to write a report to the standard output, +listing dependencies in the given terminfo/termcap source file. +The report condenses the \*(``use\*('' relation: +each line consists of the primary name of a terminal that +has use capabilities, +followed by a colon, +followed by the +whitespace-separated primary names of all terminals which occur in those use +capabilities, +followed by a newline +.TP +\fB\-U\fR \fIfile\fR +says to write a report to the standard output, +listing reverse dependencies in the given terminfo/termcap source file. +The report reverses the \*(``use\*('' relation: +each line consists of the primary name of a +terminal that occurs in use capabilities, +followed by a colon, +followed by the +whitespace-separated primary names of all terminals which depend on it, +followed by a newline. +.TP +\fB\-v\fR\fIn\fR +specifies that (verbose) output be written to standard error, +showing \fB@TOE@\fR's progress. +.IP +The optional parameter \fIn\fR is a number from 1 to 10, +interpreted as for \fB@TIC@\fR(1M). +If ncurses is built without tracing support, the optional parameter is ignored. +.TP +\fB\-V\fR +reports the version of ncurses which was used in this program, +and exits. +.SH EXAMPLES +.PP +Without sorting, the \fB\-a\fP option reports all of the names found +in all of the terminal databases found by the \fBTERMINFO\fP and +\fBTERMINFO_DIRS\fP environment variables: +.NS +MtxOrb162 16x2 Matrix Orbital LCD display +MtxOrb204 20x4 Matrix Orbital LCD display +MtxOrb Generic Matrix Orbital LCD display +qvt101+ qume qvt 101 PLUS product +qvt119+-25 QVT 119 PLUS with 25 data lines +qansi-g QNX ANSI +qvt103 qume qvt 103 +qnxw QNX4 windows +qansi-w QNX ansi for windows +qnxm QNX4 with mouse events +qvt203-25-w QVT 203 PLUS with 25 by 132 columns +qansi-t QNX ansi without console writes +\&.\ .\ . +.NE +.PP +Use the \fB\-a\fP and \fB\-s\fP options together to show where each terminal +description was found: +.NS +--> /usr/local/ncurses/share/terminfo +----> /usr/share/terminfo +*-+-: 9term Plan9 terminal emulator for X +*---: Eterm Eterm with xterm-style color support (X Window System) +*-*-: Eterm-256color Eterm with xterm 256-colors +*-*-: Eterm-88color Eterm with 88 colors +*-+-: MtxOrb Generic Matrix Orbital LCD display +*-+-: MtxOrb162 16x2 Matrix Orbital LCD display +*-+-: MtxOrb204 20x4 Matrix Orbital LCD display +*-*-: NCR260VT300WPP NCR 2900_260 vt300 wide mode pc+ kybd +*-+-: aaa ann arbor ambassador/30 lines +*-+-: aaa+dec ann arbor ambassador in dec vt100 mode +*-+-: aaa+rv ann arbor ambassador in reverse video +\&.\ .\ . +.NE +.SH FILES +.TP 5 +\fB\*d/?/*\fR +Compiled terminal description database. +.SH HISTORY +This utility is not provided by other implementations. +There is no relevant X/Open or POSIX standard for \fB@TOE@\fP. +.PP +The program name refers to a developer's pun: +.bP +\fBtic\fP, +.bP +\fBtac\fP (now \fBtack\fP), +.bP +\fBtoe\fP. +.PP +It replaced a \fB\-T\fP option which was briefly supported by +the ncurses \fBinfocmp\fP utility in 1995. +.PP +The \fB\-a\fP and \fB\-s\fP options were added to +\fB@TOE@\fR several years later (2006 and 2011, respectively). +.SH SEE ALSO +\fB@CAPTOINFO@\fR(1M), +\fB@INFOCMP@\fR(1M), +\fB@INFOTOCAP@\fR(1M), +\fB@TIC@\fR(1M), +\fBcurses\fR(3X), +\fBterminfo\fR(\*n). +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-6.3/man/tput.1 b/deps/ncurses-6.3/man/tput.1 new file mode 100644 index 0000000..0834e44 --- /dev/null +++ b/deps/ncurses-6.3/man/tput.1 @@ -0,0 +1,620 @@ +'\" t +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: tput.1,v 1.72 2021/10/02 21:41:00 tom Exp $ +.TH @TPUT@ 1 "" +.ds d @TERMINFO@ +.ds n 1 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fB@TPUT@\fR, \fBreset\fR \- initialize a terminal or query terminfo database +.SH SYNOPSIS +\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fIcapname\fR [\fIparameters\fR] +.br +\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] [\fB\-x\fP] \fBclear\fR +.br +\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBinit\fR +.br +\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBreset\fR +.br +\fB@TPUT@\fR [\fB\-T\fR\fItype\fR] \fBlongname\fR +.br +\fB@TPUT@ \-S\fR \fB<<\fR +.br +\fB@TPUT@ \-V\fR +.br +.SH DESCRIPTION +The \fB@TPUT@\fR utility uses the \fBterminfo\fR database to make the +values of terminal-dependent capabilities and information available to +the shell (see \fBsh\fR(1)), to initialize or reset the terminal, or +return the long name of the requested terminal type. +The result depends upon the capability's type: +.RS 3 +.TP 5 +string +\fB@TPUT@\fR writes the string to the standard output. +No trailing newline is supplied. +.TP +integer +\fB@TPUT@\fR writes the decimal value to the standard output, +with a trailing newline. +.TP +boolean +\fB@TPUT@\fR simply sets the exit code +(\fB0\fR for TRUE if the terminal has the capability, +\fB1\fR for FALSE if it does not), +and writes nothing to the standard output. +.RE +.PP +Before using a value returned on the standard output, +the application should test the exit code +(e.g., \fB$?\fR, see \fBsh\fR(1)) to be sure it is \fB0\fR. +(See the \fBEXIT CODES\fR and \fBDIAGNOSTICS\fR sections.) +For a complete list of capabilities +and the \fIcapname\fR associated with each, see \fBterminfo\fR(5). +.SS Options +.TP +\fB\-S\fR +allows more than one capability per invocation of \fB@TPUT@\fR. The +capabilities must be passed to \fB@TPUT@\fR from the standard input +instead of from the command line (see example). +Only one \fIcapname\fR is allowed per line. +The \fB\-S\fR option changes the +meaning of the \fB0\fR and \fB1\fR boolean and string exit codes (see the +EXIT CODES section). +.IP +Because some capabilities may use +\fIstring\fP parameters rather than \fInumbers\fP, +\fB@TPUT@\fR uses a table and the presence of parameters in its input +to decide whether to use \fBtparm\fR(3X), +and how to interpret the parameters. +.TP +\fB\-T\fR\fItype\fR +indicates the \fItype\fR of terminal. +Normally this option is +unnecessary, because the default is taken from the environment +variable \fBTERM\fR. +If \fB\-T\fR is specified, then the shell +variables \fBLINES\fR and \fBCOLUMNS\fR will also be ignored. +.TP +\fB\-V\fR +reports the version of ncurses which was used in this program, and exits. +.TP +.B \-x +do not attempt to clear the terminal's scrollback buffer +using the extended \*(``E3\*('' capability. +.SS Commands +A few commands (\fBinit\fP, \fBreset\fP and \fBlongname\fP) are +special; they are defined by the \fB@TPUT@\fP program. +The others are the names of \fIcapabilities\fP from the terminal database +(see \fBterminfo\fR(5) for a list). +Although \fBinit\fP and \fBreset\fP resemble capability names, +\fB@TPUT@\fP uses several capabilities to perform these special functions. +.TP +\fIcapname\fR +indicates the capability from the terminal database. +.IP +If the capability is a string that takes parameters, the arguments +following the capability will be used as parameters for the string. +.IP +Most parameters are numbers. +Only a few terminal capabilities require string parameters; +\fB@TPUT@\fR uses a table to decide which to pass as strings. +Normally \fB@TPUT@\fR uses \fBtparm\fR(3X) to perform the substitution. +If no parameters are given for the capability, +\fB@TPUT@\fR writes the string without performing the substitution. +.TP +\fBinit\fR +If the terminal database is present and an entry for the user's +terminal exists (see \fB\-T\fR\fItype\fR, above), the following will +occur: +.RS +.TP 5 +(1) +first, \fB@TPUT@\fR retrieves the current terminal mode settings +for your terminal. +It does this by successively testing +.RS +.bP +the standard error, +.bP +standard output, +.bP +standard input and +.bP +ultimately \*(``/dev/tty\*('' +.RE +.IP +to obtain terminal settings. +Having retrieved these settings, \fB@TPUT@\fP remembers which +file descriptor to use when updating settings. +.TP +(2) +if the window size cannot be obtained from the operating system, +but the terminal description (or environment, e.g., \fBLINES\fP +and \fBCOLUMNS\fP variables specify this), +update the operating system's notion of the window size. +.TP +(3) +the terminal modes will be updated: +.RS +.bP +any delays (e.g., newline) specified in the entry will +be set in the tty driver, +.bP +tabs expansion will be turned on or off according to +the specification in the entry, and +.bP +if tabs are not expanded, +standard tabs will be set (every 8 spaces). +.RE +.TP +(4) +if present, the terminal's initialization strings will be +output as detailed in the \fBterminfo\fR(5) section on +.IR "Tabs and Initialization" , +.TP +(5) +output is flushed. +.RE +.IP +If an entry does not +contain the information needed for any of these activities, +that activity will silently be skipped. +.TP +\fBreset\fR +This is similar to \fBinit\fP, with two differences: +.RS +.TP 5 +(1) +before any other initialization, +the terminal modes will be reset to a \*(``sane\*('' state: +.RS +.bP +set cooked and echo modes, +.bP +turn off cbreak and raw modes, +.bP +turn on newline translation and +.bP +reset any unset special characters to their default values +.RE +.TP 5 +(2) +Instead of putting out \fIinitialization\fP strings, the terminal's +\fIreset\fP strings will be output if present +(\fBrs1\fR, \fBrs2\fR, \fBrs3\fR, \fBrf\fR). +If the \fIreset\fP strings are not present, but \fIinitialization\fP +strings are, the \fIinitialization\fP strings will be output. +.RE +.IP +Otherwise, \fBreset\fR acts identically to \fBinit\fR. +.TP +\fBlongname\fR +If the terminal database is present and an entry for the +user's terminal exists (see \fB\-T\fR\fItype\fR above), then the long name +of the terminal will be put out. +The long name is the last +name in the first line of the terminal's description in the +\fBterminfo\fR database [see \fBterm\fR(5)]. +.SS Aliases +\fB@TPUT@\fR handles the \fBclear\fP, \fBinit\fP and \fBreset\fP +commands specially: +it allows for the possibility that it is invoked by a link with those names. +.PP +If \fB@TPUT@\fR is invoked by a link named \fBreset\fR, this has the +same effect as \fB@TPUT@ reset\fR. +The \fB@TSET@\fR(\*n) utility also treats a link named \fBreset\fP specially. +.PP +Before ncurses 6.1, the two utilities were different from each other: +.bP +\fB@TSET@\fP utility reset the terminal modes and special characters +(not done with \fB@TPUT@\fP). +.bP +On the other hand, \fB@TSET@\fP's repertoire of terminal capabilities for +resetting the terminal was more limited, +i.e., only \fBreset_1string\fP, \fBreset_2string\fP and \fBreset_file\fP +in contrast to the tab-stops and margins which are set by this utility. +.bP +The \fBreset\fP program is usually an alias for \fB@TSET@\fP, +because of this difference with resetting terminal modes and special characters. +.PP +With the changes made for ncurses 6.1, the \fIreset\fP feature of the +two programs is (mostly) the same. +A few differences remain: +.bP +The \fB@TSET@\fP program waits one second when resetting, +in case it happens to be a hardware terminal. +.bP +The two programs write the terminal initialization strings +to different streams (i.e., the standard error for \fB@TSET@\fP and the +standard output for \fB@TPUT@\fP). +.IP +\fBNote:\fP although these programs write to different streams, +redirecting their output to a file will capture only part of their actions. +The changes to the terminal modes are not affected by redirecting the output. +.PP +If \fB@TPUT@\fR is invoked by a link named \fBinit\fR, this has the +same effect as \fB@TPUT@ init\fR. +Again, you are less likely to use that link because another program +named \fBinit\fP has a more well-established use. +.SS Terminal Size +.PP +Besides the special commands (e.g., \fBclear\fP), +@TPUT@ treats certain terminfo capabilities specially: +\fBlines\fP and \fBcols\fP. +@TPUT@ calls \fBsetupterm\fP(3X) to obtain the terminal size: +.bP +first, it gets the size from the terminal database +(which generally is not provided for terminal emulators +which do not have a fixed window size) +.bP +then it asks the operating system for the terminal's size +(which generally works, unless connecting via a serial line which +does not support \fINAWS\fP: negotiations about window size). +.bP +finally, it inspects the environment variables \fBLINES\fP and \fBCOLUMNS\fP +which may override the terminal size. +.PP +If the \fB\-T\fP option is given +@TPUT@ ignores the environment variables by calling \fBuse_tioctl(TRUE)\fP, +relying upon the operating system (or finally, the terminal database). +.SH EXAMPLES +.TP 5 +\fB@TPUT@ init\fR +Initialize the terminal according to the type of +terminal in the environmental variable \fBTERM\fR. This +command should be included in everyone's .profile after +the environmental variable \fBTERM\fR has been exported, as +illustrated on the \fBprofile\fR(5) manual page. +.TP 5 +\fB@TPUT@ \-T5620 reset\fR +Reset an AT&T 5620 terminal, overriding the type of +terminal in the environmental variable \fBTERM\fR. +.TP 5 +\fB@TPUT@ cup 0 0\fR +Send the sequence to move the cursor to row \fB0\fR, column \fB0\fR +(the upper left corner of the screen, usually known as the \*(``home\*('' +cursor position). +.TP 5 +\fB@TPUT@ clear\fR +Echo the clear-screen sequence for the current terminal. +.TP 5 +\fB@TPUT@ cols\fR +Print the number of columns for the current terminal. +.TP 5 +\fB@TPUT@ \-T450 cols\fR +Print the number of columns for the 450 terminal. +.TP 5 +\fBbold=`@TPUT@ smso` offbold=`@TPUT@ rmso`\fR +Set the shell variables \fBbold\fR, to begin stand-out mode +sequence, and \fBoffbold\fR, to end standout mode sequence, +for the current terminal. +This might be followed by a +prompt: \fBecho "${bold}Please type in your name: ${offbold}\\c"\fR +.TP 5 +\fB@TPUT@ hc\fR +Set exit code to indicate if the current terminal is a hard copy terminal. +.TP 5 +\fB@TPUT@ cup 23 4\fR +Send the sequence to move the cursor to row 23, column 4. +.TP 5 +\fB@TPUT@ cup\fR +Send the terminfo string for cursor-movement, with no parameters substituted. +.TP 5 +\fB@TPUT@ longname\fR +Print the long name from the \fBterminfo\fR database for the +type of terminal specified in the environmental +variable \fBTERM\fR. +.PP +.RS 5 +\fB@TPUT@ \-S <<!\fR +.br +\fB> clear\fR +.br +\fB> cup 10 10\fR +.br +\fB> bold\fR +.br +\fB> !\fR +.RE +.TP 5 +\& +This example shows \fB@TPUT@\fR processing several capabilities +in one invocation. +It clears the screen, +moves the cursor to position 10, 10 +and turns on bold (extra bright) mode. +The list is terminated by an exclamation mark (\fB!\fR) on a line by itself. +.SH FILES +.TP +\fB\*d\fR +compiled terminal description database +.TP +\fB@DATADIR@/tabset/*\fR +tab settings for some terminals, in a format +appropriate to be output to the terminal (escape +sequences that set margins and tabs); for more +information, see the +.IR "Tabs and Initialization" , +section of \fBterminfo\fR(5) +.SH EXIT CODES +If the \fB\-S\fR option is used, +\fB@TPUT@\fR checks for errors from each line, +and if any errors are found, will set the exit code to 4 plus the +number of lines with errors. +If no errors are found, the exit code is \fB0\fR. +No indication of which line failed can be given so +exit code \fB1\fR will never appear. +Exit codes \fB2\fR, \fB3\fR, and +\fB4\fR retain their usual interpretation. +If the \fB\-S\fR option is not used, +the exit code depends on the type of \fIcapname\fR: +.RS 3 +.TP +.I boolean +a value of \fB0\fR is set for TRUE and \fB1\fR for FALSE. +.TP +.I string +a value of \fB0\fR is set if the +\fIcapname\fR is defined for this terminal \fItype\fR (the value of +\fIcapname\fR is returned on standard output); +a value of \fB1\fR is set if \fIcapname\fR +is not defined for this terminal \fItype\fR +(nothing is written to standard output). +.TP +.I integer +a value of \fB0\fR is always set, +whether or not \fIcapname\fR is defined for this terminal \fItype\fR. +To determine if \fIcapname\fR is defined for this terminal \fItype\fR, +the user must test the value written to standard output. +A value of \fB\-1\fR +means that \fIcapname\fR is not defined for this terminal \fItype\fR. +.TP +.I other +\fBreset\fR or \fBinit\fR may fail to find their respective files. +In that case, the exit code is set to 4 + \fBerrno\fR. +.RE +.PP +Any other exit code indicates an error; see the DIAGNOSTICS section. +.SH DIAGNOSTICS +\fB@TPUT@\fR prints the following error messages and sets the corresponding exit +codes. +.PP +.ne 15 +.TS +l l. +exit code error message += +\fB0\fR T{ +(\fIcapname\fR is a numeric variable that is not specified in the +\fBterminfo\fR(5) database for this terminal type, e.g. +\fB@TPUT@ \-T450 lines\fR and \fB@TPUT@ \-Thp2621 xmc\fR) +T} +\fB1\fR no error message is printed, see the \fBEXIT CODES\fR section. +\fB2\fR usage error +\fB3\fR unknown terminal \fItype\fR or no \fBterminfo\fR database +\fB4\fR unknown \fBterminfo\fR capability \fIcapname\fR +\fB>4\fR error occurred in \-S += +.TE +.SH HISTORY +The \fBtput\fP command was begun by Bill Joy in 1980. +The initial version only cleared the screen. +.PP +AT&T System V provided a different \fBtput\fP command: +.bP +SVr2 provided a rudimentary \fBtput\fP +which checked the parameter against each +predefined capability and returned the corresponding value. +This version of \fBtput\fP did not use \fBtparm\fP(3X) for +the capabilities which are parameterized. +.bP +SVr3 replaced that, a year later, by a more extensive program +whose \fBinit\fP and \fBreset\fP subcommands +(more than half the program) were incorporated from +the \fBreset\fP feature of BSD \fBtset\fP written by Eric Allman. +.bP +SVr4 added color initialization using the \fIorig_colors\fP and +\fIorig_pairs\fP capabilities in the \fBinit\fP subcommand. +.PP +Keith Bostic replaced the BSD \fBtput\fP command in 1989 +with a new implementation +based on the AT&T System V program \fBtput\fP. +Like the AT&T program, Bostic's version +accepted some parameters named for \fIterminfo capabilities\fP +(\fBclear\fP, \fBinit\fP, \fBlongname\fP and \fBreset\fP). +However (because he had only termcap available), +it accepted \fItermcap names\fP for other capabilities. +Also, Bostic's BSD \fBtput\fP did not modify the terminal I/O modes +as the earlier BSD \fBtset\fP had done. +.PP +At the same time, Bostic added a shell script named \*(``clear\*('', +which used \fBtput\fP to clear the screen. +.PP +Both of these appeared in 4.4BSD, +becoming the \*(``modern\*('' BSD implementation of \fBtput\fP. +.PP +This implementation of \fBtput\fP began from a different source than +AT&T or BSD: Ross Ridge's \fImytinfo\fP package, published on +\fIcomp.sources.unix\fP in December 1992. +Ridge's program made more sophisticated use of the terminal capabilities +than the BSD program. +Eric Raymond used that \fBtput\fP program +(and other parts of \fImytinfo\fP) in ncurses in June 1995. +Using the portions dealing with terminal capabilities +almost without change, +Raymond made improvements to the way the command-line parameters +were handled. +.SH PORTABILITY +.PP +This implementation of \fBtput\fP differs from AT&T \fBtput\fP in +two important areas: +.bP +\fB@TPUT@\fP \fIcapname\fP writes to the standard output. +That need not be a regular terminal. +However, the subcommands which manipulate terminal modes +may not use the standard output. +.IP +The AT&T implementation's \fBinit\fP and \fBreset\fP commands +use the BSD (4.1c) \fBtset\fP source, which manipulates terminal modes. +It successively tries standard output, standard error, standard input +before falling back to \*(``/dev/tty\*('' and finally just assumes +a 1200Bd terminal. +When updating terminal modes, it ignores errors. +.IP +Until changes made after ncurses 6.0, +\fB@TPUT@\fP did not modify terminal modes. +\fB@TPUT@\fP now uses a similar scheme, +using functions shared with \fB@TSET@\fP +(and ultimately based on the 4.4BSD \fBtset\fP). +If it is not able to open a terminal, e.g., when running in \fBcron\fP, +\fB@TPUT@\fP will return an error. +.bP +AT&T \fBtput\fP guesses the type of its \fIcapname\fP operands by seeing if +all of the characters are numeric, or not. +.IP +Most implementations which provide support for \fIcapname\fR operands +use the \fItparm\fP function to expand parameters in it. +That function expects a mixture of numeric and string parameters, +requiring \fB@TPUT@\fP to know which type to use. +.IP +This implementation uses a table to determine the parameter types for +the standard \fIcapname\fR operands, and an internal library +function to analyze nonstandard \fIcapname\fR operands. +.IP +Besides providing more reliable operation than AT&T's utility, +a portability problem is introduced by this analysis: +An OpenBSD developer adapted the internal library function from ncurses +to port NetBSD's termcap-based \fBtput\fP to terminfo. +That had been modified to interpret multiple commands on a line. +Portable applications should not rely upon this feature; +ncurses provides it to support applications written +specifically for OpenBSD. +.PP +This implementation (unlike others) can accept both \fItermcap\fP +and \fIterminfo\fP names for the \fIcapname\fP feature, +if +\fItermcap\fR support is compiled in. +However, the predefined \fItermcap\fP and \fIterminfo\fP names have two +ambiguities in this case (and the \fIterminfo\fP name is assumed): +.bP +The \fItermcap\fP name \fBdl\fP corresponds to +the \fIterminfo\fP name \fBdl1\fP (delete one line). +.br +The \fIterminfo\fP name \fBdl\fP corresponds to +the \fItermcap\fP name \fBDL\fP (delete a given number of lines). +.bP +The \fItermcap\fP name \fBed\fP corresponds to +the \fIterminfo\fP name \fBrmdc\fP (end delete mode). +.br +The \fIterminfo\fP name \fBed\fP corresponds to +the \fItermcap\fP name \fBcd\fP (clear to end of screen). +.PP +The \fBlongname\fR and \fB\-S\fR options, and the parameter-substitution +features used in the \fBcup\fR example, +were not supported in BSD curses before 4.3reno (1989) or in +AT&T/USL curses before SVr4 (1988). +.PP +IEEE Std 1003.1/The Open Group Base Specifications Issue 7 (POSIX.1-2008) +documents only the operands for \fBclear\fP, \fBinit\fP and \fBreset\fP. +There are a few interesting observations to make regarding that: +.bP +In this implementation, \fBclear\fP is part of the \fIcapname\fR support. +The others (\fBinit\fP and \fBlongname\fP) do not correspond to terminal +capabilities. +.bP +Other implementations of \fBtput\fP on +SVr4-based systems such as Solaris, IRIX64 and HPUX +as well as others such as AIX and Tru64 +provide support for \fIcapname\fR operands. +.bP +A few platforms such as FreeBSD recognize termcap names rather +than terminfo capability names in their respective \fBtput\fP commands. +Since 2010, NetBSD's \fBtput\fP uses terminfo names. +Before that, it (like FreeBSD) recognized termcap names. +.IP +Beginning in 2021, FreeBSD uses the ncurses \fBtput\fP, +configured for both terminfo (tested first) and termcap (as a fallback). +.PP +Because (apparently) \fIall\fP of the certified Unix systems +support the full set of capability names, the reasoning for documenting +only a few may not be apparent. +.bP +X/Open Curses Issue 7 documents \fBtput\fP differently, with \fIcapname\fP +and the other features used in this implementation. +.bP +That is, there are two standards for \fBtput\fP: +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 capabilities database. +.bP +While it is certainly possible to write a \fBtput\fP program +without using curses, +none of the systems which have a curses implementation provide +a \fBtput\fP utility which does not provide the \fIcapname\fP feature. +.PP +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 +(i.e., Unix features documented in SVID 3): +.bP +It assigns exit code 4 to \*(``invalid operand\*('', +which may be the same as \fIunknown capability\fP. +For instance, the source code for Solaris' xcurses uses the term +\*(``invalid\*('' in this case. +.bP +It assigns exit code 255 to a numeric variable that is not specified in +the terminfo database. +That likely is a documentation error, +confusing the \fB\-1\fP written to the standard output for an absent +or cancelled numeric value versus an (unsigned) exit code. +.PP +The various Unix systems (AIX, HPUX, Solaris) use the same exit-codes +as ncurses. +.PP +NetBSD curses documents different exit codes which do not correspond +to either ncurses or X/Open. +.SH SEE ALSO +\fB@CLEAR@\fR(\*n), +\fBstty\fR(1), +\fB@TABS@\fR(\*n), +\fB@TSET@\fR(\*n), +\fBcurs_termcap\fR(3X), +\fBterminfo\fR(5). +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-6.3/man/tset.1 b/deps/ncurses-6.3/man/tset.1 new file mode 100644 index 0000000..063f506 --- /dev/null +++ b/deps/ncurses-6.3/man/tset.1 @@ -0,0 +1,438 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 1998-2016,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. * +.\"*************************************************************************** +.\" +.\" $Id: tset.1,v 1.58 2021/09/18 21:21:55 tom Exp $ +.TH @TSET@ 1 "" +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +\fB@TSET@\fR, \fB@RESET@\fR \- terminal initialization +.SH SYNOPSIS +\fB@TSET@\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR] +.br +\fB@RESET@\fR [\fB\-IQVcqrsw\fR] [\fB\-\fR] [\fB\-e\fR \fIch\fR] [\fB\-i\fR \fIch\fR] [\fB\-k\fR \fIch\fR] [\fB\-m\fR \fImapping\fR] [\fIterminal\fR] +.SH DESCRIPTION +.SS tset - initialization +This program initializes terminals. +.PP +First, \fB@TSET@\fR retrieves the current terminal mode settings +for your terminal. +It does this by successively testing +.bP +the standard error, +.bP +standard output, +.bP +standard input and +.bP +ultimately \*(``/dev/tty\*('' +.PP +to obtain terminal settings. +Having retrieved these settings, \fB@TSET@\fP remembers which +file descriptor to use when updating settings. +.PP +Next, \fB@TSET@\fP determines the type of terminal that you are using. +This determination is done as follows, using the first terminal type found. +.PP +1. The \fBterminal\fR argument specified on the command line. +.PP +2. The value of the \fBTERM\fR environmental variable. +.PP +3. (BSD systems only.) The terminal type associated with the standard +error output device in the \fI/etc/ttys\fR file. +(On System\-V-like UNIXes and systems using that convention, +\fIgetty\fR does this job by setting +\fBTERM\fR according to the type passed to it by \fI/etc/inittab\fR.) +.PP +4. The default terminal type, \*(``unknown\*(''. +.PP +If the terminal type was not specified on the command-line, the \fB\-m\fR +option mappings are then applied (see the section +.B TERMINAL TYPE MAPPING +for more information). +Then, if the terminal type begins with a question mark (\*(``?\*(''), the +user is prompted for confirmation of the terminal type. +An empty +response confirms the type, or, another type can be entered to specify +a new type. +Once the terminal type has been determined, +the terminal description for the terminal is retrieved. +If no terminal description is found +for the type, the user is prompted for another terminal type. +.PP +Once the terminal description is retrieved, +.bP +if the \*(``\fB\-w\fP\*('' option is enabled, \fB@TSET@\fP may update +the terminal's window size. +.IP +If the window size cannot be obtained from the operating system, +but the terminal description (or environment, e.g., \fBLINES\fP +and \fBCOLUMNS\fP variables specify this), +use this to set the operating system's notion of the window size. +.bP +if the \*(``\fB\-c\fP\*('' option is enabled, +the backspace, interrupt and line kill characters +(among many other things) are set +.bP +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). +.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 +standard error output. +.SS reset - reinitialization +.PP +When invoked as \fB@RESET@\fR, \fB@TSET@\fR sets the terminal +modes to \*(``sane\*('' values: +.bP +sets 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 +.PP +before +doing the terminal initialization described above. +Also, rather than using the terminal \fIinitialization\fP strings, +it uses the terminal \fIreset\fP strings. +.PP +The \fB@RESET@\fP command is useful +after a program dies leaving a terminal in an abnormal state: +.bP +you may have to type +.sp + \fI<LF>\fP\fB@RESET@\fP\fI<LF>\fP +.sp +(the line-feed character is normally control-J) to get the terminal +to work, as carriage-return may no longer work in the abnormal state. +.bP +Also, the terminal will often not echo the command. +.SH OPTIONS +.PP +The options are as follows: +.TP 5 +.B \-c +Set control characters and modes. +.TP 5 +.BI \-e\ ch +Set the erase character to \fIch\fR. +.TP +.B \-I +Do not send the terminal or tab initialization strings to the terminal. +.TP +.BI \-i\ ch +Set the interrupt character to \fIch\fR. +.TP +.BI \-k\ ch +Set the line kill character to \fIch\fR. +.TP +.BI \-m\ mapping +Specify a mapping from a port type to a terminal. +See the section +.B TERMINAL TYPE MAPPING +for more information. +.TP +.B \-Q +Do not display any values for the erase, interrupt and line kill characters. +Normally \fB@TSET@\fR displays the values for control characters which +differ from the system's default values. +.TP +.B \-q +The terminal type is displayed to the standard output, and the terminal is +not initialized in any way. +The option \*(``\-\*('' by itself is equivalent but archaic. +.TP +.B \-r +Print the terminal type to the standard error output. +.TP +.B \-s +Print the sequence of shell commands to initialize the environment variable +\fBTERM\fR to the standard output. +See the section +.B SETTING THE ENVIRONMENT +for details. +.TP +.B \-V +reports the version of ncurses which was used in this program, and exits. +.TP +.B \-w +Resize the window to match the size deduced via \fBsetupterm\fP(3X). +Normally this has no effect, +unless \fBsetupterm\fP is not able to detect the window size. +.PP +The arguments for the \fB\-e\fR, \fB\-i\fR, and \fB\-k\fR +options may either be entered as actual characters +or by using the \*(``hat\*('' +notation, i.e., control-h may be specified as \*(``^H\*('' or \*(``^h\*(''. +.PP +If neither \fB\-c\fP or \fB\-w\fP is given, both options are assumed. +. +.SH SETTING THE ENVIRONMENT +It is often desirable to enter the terminal type and information about +the terminal's capabilities into the shell's environment. +This is done using the \fB\-s\fR option. +.PP +When the \fB\-s\fR option is specified, the commands to enter the information +into the shell's environment are written to the standard output. +If +the \fBSHELL\fR environmental variable ends in \*(``csh\*('', the commands +are for \fBcsh\fR, otherwise, they are for \fBsh\fR. +Note, the \fBcsh\fR commands set and unset the shell variable +\fBnoglob\fR, leaving it unset. +The following line in the \fB.login\fR +or \fB.profile\fR files will initialize the environment correctly: +.sp + eval \`@TSET@ \-s options ... \` +. +.SH TERMINAL TYPE MAPPING +When the terminal is not hardwired into the system (or the current +system information is incorrect) the terminal type derived from the +\fI/etc/ttys\fR file or the \fBTERM\fR environmental variable is often +something generic like \fBnetwork\fR, \fBdialup\fR, or \fBunknown\fR. +When \fB@TSET@\fR is used in a startup script it is often desirable to +provide information about the type of terminal used on such ports. +.PP +The \fB\-m\fR options maps +from some set of conditions to a terminal type, that is, to +tell \fB@TSET@\fR +\*(``If I'm on this port at a particular speed, +guess that I'm on that kind of terminal\*(''. +.PP +The argument to the \fB\-m\fR option consists of an optional port type, an +optional operator, an optional baud rate specification, an optional +colon (\*(``:\*('') character and a terminal type. +The port type is a +string (delimited by either the operator or the colon character). +The operator may be any combination of +\*(``>\*('', +\*(``<\*('', +\*(``@\*('', +and \*(``!\*(''; +\*(``>\*('' means greater than, +\*(``<\*('' means less than, +\*(``@\*('' means equal to and +\*(``!\*('' inverts the sense of the test. +The baud rate is specified as a number and is compared with the speed +of the standard error output (which should be the control terminal). +The terminal type is a string. +.PP +If the terminal type is not specified on the command line, the \fB\-m\fR +mappings are applied to the terminal type. +If the port type and baud +rate match the mapping, the terminal type specified in the mapping +replaces the current type. +If more than one mapping is specified, the +first applicable mapping is used. +.PP +For example, consider the following mapping: \fBdialup>9600:vt100\fR. +The port type is dialup , the operator is >, the baud rate +specification is 9600, and the terminal type is vt100. +The result of +this mapping is to specify that if the terminal type is \fBdialup\fR, +and the baud rate is greater than 9600 baud, a terminal type of +\fBvt100\fR will be used. +.PP +If no baud rate is specified, the terminal type will match any baud rate. +If no port type is specified, the terminal type will match any port type. +For example, \fB\-m dialup:vt100 \-m :?xterm\fR +will cause any dialup port, regardless of baud rate, to match the terminal +type vt100, and any non-dialup port type to match the terminal type ?xterm. +Note, because of the leading question mark, the user will be +queried on a default port as to whether they are actually using an xterm +terminal. +.PP +No whitespace characters are permitted in the \fB\-m\fR option argument. +Also, to avoid problems with meta-characters, it is suggested that the +entire \fB\-m\fR option argument be placed within single quote characters, +and that \fBcsh\fR users insert a backslash character (\*(``\e\*('') before +any exclamation marks (\*(``!\*(''). +.SH HISTORY +.PP +A \fBreset\fP command appeared in 1BSD (March 1978), written by Kurt Shoens. +This program set the \fIerase\fP and \fIkill\fP characters +to \fB^H\fP (backspace) and \fB@\fP respectively. +Mark Horton improved that in 3BSD (October 1979), adding +\fIintr\fP, \fIquit\fP, \fIstart\fP/\fIstop\fP and \fIeof\fP characters +as well as changing the program to avoid modifying any user settings. +That version of \fBreset\fP did not use the termcap database. +.PP +A separate \fBtset\fP command was provided in 1BSD by Eric Allman, +using the termcap database. +Allman's comments in the source code indicate +that he began work in October 1977, +continuing development over the next few years. +.PP +According to comments in the source code, +the \fBtset\fP program was modified in September 1980, +to use logic copied from the 3BSD \*(``reset\*('' +when it was invoked as \fBreset\fP. +This version appeared in 4.1cBSD, late in 1982. +.PP +Other developers (e.g., Keith Bostic and Jim Bloom) +continued to modify \fBtset\fP until 4.4BSD was released in 1993. +.PP +The \fBncurses\fR implementation +was lightly adapted from the 4.4BSD sources for a terminfo environment by Eric +S. Raymond <esr@snark.thyrsus.com>. +.SH COMPATIBILITY +.PP +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. +.PP +The AT&T \fBtput\fP utility (AIX, HPUX, Solaris) +incorporated the terminal-mode manipulation as well as termcap-based features +such as resetting tabstops from \fBtset\fP in BSD (4.1c), +presumably with the intention of making \fBtset\fP obsolete. +However, each of those systems still provides \fBtset\fP. +In fact, the commonly-used \fBreset\fP utility +is always an alias for \fBtset\fP. +.PP +The \fB@TSET@\fR utility provides for backward-compatibility with BSD +environments (under most modern UNIXes, \fB/etc/inittab\fR and \fBgetty\fR(1) +can set \fBTERM\fR appropriately for each dial-up line; this obviates what was +\fB@TSET@\fR's most important use). +This implementation behaves like 4.4BSD +\fBtset\fP, with a few exceptions specified here. +.PP +A few options are different +because the \fBTERMCAP\fR variable +is no longer supported under terminfo-based \fBncurses\fR: +.bP +The \fB\-S\fR option of BSD \fBtset\fP no longer works; +it prints an error message to the standard error and dies. +.bP +The \fB\-s\fR option only sets \fBTERM\fR, not \fBTERMCAP\fP. +.PP +There was an undocumented 4.4BSD feature +that invoking \fBtset\fP via a link named +\*(``TSET\*('' (or via any other name beginning with an upper-case letter) +set the terminal to use upper-case only. +This feature has been omitted. +.PP +The \fB\-A\fR, \fB\-E\fR, \fB\-h\fR, \fB\-u\fR and \fB\-v\fR +options were deleted from the \fB@TSET@\fR +utility in 4.4BSD. +None of them were documented in 4.3BSD and all are +of limited utility at best. +The \fB\-a\fR, \fB\-d\fR, and \fB\-p\fR options are similarly +not documented or useful, but were retained as they appear to be in +widespread use. +It is strongly recommended that any usage of these +three options be changed to use the \fB\-m\fR option instead. +The \fB\-a\fP, \fB\-d\fP, and \fB\-p\fR options +are therefore omitted from the usage summary above. +.PP +Very old systems, e.g., 3BSD, used a different terminal driver which +was replaced in 4BSD in the early 1980s. +To accommodate these older systems, the 4BSD \fB@TSET@\fP provided a +\fB\-n\fP option to specify that the new terminal driver should be used. +This implementation does not provide that choice. +.PP +It is still permissible to specify the \fB\-e\fR, \fB\-i\fR, +and \fB\-k\fR options without arguments, +although it is strongly recommended that such usage be fixed to +explicitly specify the character. +.PP +As of 4.4BSD, +executing \fB@TSET@\fR as \fB@RESET@\fR no longer implies the \fB\-Q\fR option. +Also, the interaction between the \- option and the \fIterminal\fR +argument in some historic implementations of \fB@TSET@\fR has been removed. +.PP +The \fB\-c\fP and \fB\-w\fP options are not found in earlier implementations. +However, a different window size-change feature was provided in 4.4BSD. +.bP +In 4.4BSD, \fBtset\fP uses the window size from the termcap description +to set the window size if \fBtset\fP is not able to obtain the window +size from the operating system. +.bP +In ncurses, \fB@TSET@\fR obtains the window size using +\fBsetupterm\fP, which may be from +the operating system, +the \fBLINES\fP and \fBCOLUMNS\fP environment variables or +the terminal description. +.PP +Obtaining the window size from the terminal description is common to +both implementations, but considered obsolescent. +Its only practical use is for hardware terminals. +Generally speaking, a window size would be unset only if there were +some problem obtaining the value from the operating system +(and \fBsetupterm\fP would still fail). +For that reason, the \fBLINES\fP and \fBCOLUMNS\fP environment variables +may be useful for working around window-size problems. +Those have the drawback that if the window is resized, +those variables must be recomputed and reassigned. +To do this more easily, use the \fBresize\fP(1) program. +.SH ENVIRONMENT +The \fB@TSET@\fR command uses these environment variables: +.TP 5 +SHELL +tells \fB@TSET@\fP whether to initialize \fBTERM\fP using \fBsh\fP or +\fBcsh\fP syntax. +.TP 5 +TERM +Denotes your terminal type. +Each terminal type is distinct, though many are similar. +.TP 5 +TERMCAP +may denote the location of a termcap database. +If it is not an absolute pathname, e.g., begins with a \*(``/\*('', +\fB@TSET@\fP removes the variable from the environment before looking +for the terminal description. +.SH FILES +.TP 5 +/etc/ttys +system port name to terminal type mapping database (BSD versions only). +.TP +@TERMINFO@ +terminal capability database +.SH SEE ALSO +.hy 0 +\fBcsh\fP(1), +\fBsh\fP(1), +\fBstty\fP(1), +\fBcurs_terminfo\fP(3X), +\fBtty\fP(4), +\fBterminfo\fP(5), +\fBttys\fP(5), +\fBenviron\fP(7) +.hy +.PP +This describes \fBncurses\fR +version @NCURSES_MAJOR@.@NCURSES_MINOR@ (patch @NCURSES_PATCH@). diff --git a/deps/ncurses-6.3/man/user_caps.5 b/deps/ncurses-6.3/man/user_caps.5 new file mode 100644 index 0000000..4cc1e16 --- /dev/null +++ b/deps/ncurses-6.3/man/user_caps.5 @@ -0,0 +1,439 @@ +.\"*************************************************************************** +.\" Copyright 2018-2020,2021 Thomas E. Dickey * +.\" Copyright 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. * +.\"*************************************************************************** +.\" +.\" $Id: user_caps.5,v 1.17 2021/06/17 21:30:22 tom Exp $ +.TH user_caps 5 +.ie \n(.g .ds `` \(lq +.el .ds `` `` +.ie \n(.g .ds '' \(rq +.el .ds '' '' +.de NS +.ie n .sp +.el .sp .5 +.ie n .in +4 +.el .in +2 +.nf +.ft C \" Courier +.. +.de NE +.fi +.ft R +.ie n .in -4 +.el .in -2 +.. +.de bP +.ie n .IP \(bu 4 +.el .IP \(bu 2 +.. +.SH NAME +user_caps \- user-defined terminfo capabilities +.SH SYNOPSIS +.B @TIC@ -x, @INFOCMP@ -x +.SH DESCRIPTION +.SS Background +.PP +Before ncurses 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. +.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: +.bP +The \fIbinary format\fP itself is not described +in the X/Open Curses documentation. +Only the \fIsource format\fP is described. +.IP +Library developers rely upon the SVr4 documentation, +and reverse-engineering the compiled terminfo 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, +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. +.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. +.IP +While ncurses' 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, ncurses can be configured with tables which match the +terminal databases for AIX, HP-UX or OSF/1, +rather than the default Solaris-like configuration. +.bP +In SVr4 curses and ncurses, +the terminal database is defined at compile-time using a text file +which 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 ncurses for terminal capabilities includes +details for various systems past the documented X/Open Curses features. +For example, ncurses supports these capabilities in each configuration: +.RS 8 +.TP 5 +memory_lock +(meml) +lock memory above cursor +.TP 5 +memory_unlock +(memu) +unlock memory +.TP 5 +box_chars_1 +(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. +The \fIbox1\fP capability is used in @TIC@ to help 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: +.bP +The fixed repertoire prevented users from adding features +for unanticipated terminal improvements +(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, +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), +the criticism had a point. +ncurses 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. +.PP +The ncurses 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. +.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. +.PP +Because ncurses provides a termcap library interface, +these user-defined capabilities may be visible to termcap applications: +.bP +The termcap interface (like all implementations of termcap) +requires that the capability names are 2-characters. +.IP +When the capability is simple enough for use in a termcap application, +it is provided as a 2-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. +.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, +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 ncurses database uses a convention based on \fBxterm\fP to +provide extended special-key names. +.IP +Fitting that into termcap's limitation of 2-character names +would be pointless. +These extended keys are available only with terminfo. +.SS Recognized capabilities +.PP +The ncurses library uses the user-definable capabilities. +While the terminfo database may have other extensions, +ncurses makes explicit checks for these: +.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. +.IP +This is a feature recognized by the \fBscreen\fP program 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. +.IP +The command \*(``\fBtput clear\fP\*('' does the same thing. +.TP 3 +RGB +\fIboolean\fP, \fInumber\fP \fBor\fP \fIstring\fP, +to assert that the +\fBset_a_foreground\fP and +\fBset_a_background\fP capabilities correspond to \fIdirect colors\fP, +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. +.IP +The capability type determines the values which 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, +ncurses adds two, divides that sum by three, and assigns the result +to red, 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. +.TP 3 +\fInumber\fP +tells ncurses what result to add to red, green and blue. +If ncurses runs out of bits, +blue (and green) lose just as in the \fIboolean\fP case. +.TP 3 +\fIstring\fP +explicitly list the number of bits used for red, green and blue components +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 +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. +.TP 3 +U8 +\fInumber\fP, +asserts that ncurses must use Unicode values for line-drawing characters, +and that it should ignore the alternate character set capabilities +when the locale uses UTF-8 encoding. +For more information, see the discussion of +\fBNCURSES_NO_UTF8_ACS\fP in \fBncurses\fP(3X). +.IP +Set this capability to a nonzero value to enable it. +.TP 3 +XM +\fIstring\fP, +override ncurses's built-in string which +enables/disables \fBxterm\fP mouse mode. +.IP +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 it what +was done with the mouse. +.IP +The mouse protocol is enabled when +the \fImask\fP passed in the \fBmousemask\fP function is nonzero. +By default, ncurses 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, +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. +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. +.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. +.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. +.IP +\fIxm\fP shows the format of the mouse responses. +In this experimental capability, the parameters are +.RS 5 +.TP 5 +.I p1 +y-ordinate +.TP 5 +.I p2 +x-ordinate +.TP 5 +.I p3 +button +.TP 5 +.I p4 +state, e.g., pressed or released +.TP 5 +.I p5 +y-ordinate starting region +.TP 5 +.I p6 +x-ordinate starting region +.TP 5 +.I p7 +y-ordinate ending region +.TP 5 +.I p8 +x-ordinate ending region +.RE +.IP +Here are examples from the terminal database for the most commonly used +xterm mouse protocols: +.IP +.nf + xterm+x11mouse|X11 xterm mouse protocol, + kmous=\\E[M, XM=\\E[?1000%?%p1%{1}%=%th%el%;, + xm=\\E[M + %?%p4%t%p3%e%{3}%;%'\ '%+%c + %p2%'!'%+%c + %p1%'!'%+%c, + + xterm+sm+1006|xterm SGR-mouse, + kmous=\\E[<, XM=\\E[?1006;1000%?%p1%{1}%=%th%el%;, + xm=\\E[<%i%p3%d; + %p1%d; + %p2%d; + %?%p4%tM%em%;, +.fi +. +.SS Extended key-definitions +.PP +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 has supported +\fIshift\fP, \fIcontrol\fP, \fIalt\fP, and \fImeta\fP modifiers which produce +distinct special-key strings. +In a terminal description, ncurses has no special knowledge of the +modifiers used. +Applications can use the \fInaming convention\fP established for \fBxterm\fP +to find these special keys in the terminal description. +.PP +Starting with the curses convention that \fIkey names\fP begin with \*(``k\*('' +and that shifted special keys are an uppercase name, +ncurses' terminal database defines these names to which a suffix is added: +.RS 5 +.TS +tab(/) ; +l l . +\fIName\fR/\fIDescription\fR +_ +kDC/special form of kdch1 (delete character) +kDN/special form of kcud1 (cursor down) +kEND/special form of kend (End) +kHOM/special form of khome (Home) +kLFT/special form of kcub1 (cursor-left or cursor-back) +kNXT/special form of knext (Next, or Page-Down) +kPRV/special form of kprev (Prev, or Page-Up) +kRIT/special form of kcuf1 (cursor-right, or cursor-forward) +kUP/special form of kcuu1 (cursor-up) +.TE +.RE +.PP +These are the suffixes used to denote the modifiers: +.RS 5 +.TS +tab(/) ; +l l . +\fIValue\fR/\fIDescription\fR +_ +2/Shift +3/Alt +4/Shift + Alt +5/Control +6/Shift + Control +7/Alt + Control +8/Shift + Alt + Control +9/Meta +10/Meta + Shift +11/Meta + Alt +12/Meta + Alt + Shift +13/Meta + Ctrl +14/Meta + Ctrl + Shift +15/Meta + Ctrl + Alt +16/Meta + Ctrl + Alt + Shift +.TE +.RE +.PP +None of these are predefined; terminal descriptions can refer to \fInames\fP +which ncurses will allocate at runtime to \fIkey-codes\fP. +To use these keys in an ncurses program, an application could do this: +.bP +using a list of extended key \fInames\fP, +ask \fBtigetstr\fP(3X) for their values, and +.bP +given the list of values, +ask \fBkey_defined\fP(3X) for the \fIkey-code\fP which +would be returned for those keys by \fBwgetch\fP(3X). +.PP +.\" +.SH PORTABILITY +.PP +The \*(``\-x\*('' extension feature of \fB@TIC@\fP and \fB@INFOCMP@\fP +has been adopted in NetBSD curses. +That implementation stores user-defined capabilities, +but makes no use of these capabilities itself. +.\" +.SH SEE ALSO +.PP +\fB@INFOCMP@\fR(1M), +\fB@TIC@\fR(1M). +.PP +The terminal database section +.I "NCURSES USER-DEFINABLE CAPABILITIES" +summarizes commonly-used user-defined capabilities +which are used in the terminal descriptions. +Some of those features are mentioned in \fBscreen\fR(1) or \fBtmux\fR(1). +.PP +.I "XTerm Control Sequences" +provides further information on the \fBxterm\fP features +which are used in these extended capabilities. +.\" +.SH AUTHORS +.PP +Thomas E. Dickey +.br +beginning with ncurses 5.0 (1999) diff --git a/deps/ncurses-5.9/man/wresize.3x b/deps/ncurses-6.3/man/wresize.3x similarity index 84% rename from deps/ncurses-5.9/man/wresize.3x rename to deps/ncurses-6.3/man/wresize.3x index 0832450..54c1fc6 100644 --- a/deps/ncurses-5.9/man/wresize.3x +++ b/deps/ncurses-6.3/man/wresize.3x @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * +.\" Copyright 2018,2020 Thomas E. Dickey * +.\" Copyright 1998-2010,2015 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 * @@ -28,17 +29,17 @@ .\" .\" Author: Thomas E. Dickey 1996 .\" -.\" $Id: wresize.3x,v 1.13 2010/12/04 18:40:45 tom Exp $ +.\" $Id: wresize.3x,v 1.17 2020/10/17 23:56:38 tom Exp $ .TH wresize 3X "" .SH NAME \fBwresize\fR \- resize a curses window .SH SYNOPSIS \fB#include <curses.h>\fR .sp -\fBint wresize(WINDOW *win, int lines, int columns);\fR +\fBint wresize(WINDOW *\fP\fIwin\fP\fB, int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR .SH DESCRIPTION -This is an extension to the curses library. -It reallocates storage for an \fBncurses\fR +This is an extension to the curses library. +It reallocates storage for an \fBncurses\fR window to adjust its dimensions to the specified values. If either dimension is larger than the current values, the window's data is filled with blanks that have the current background rendition @@ -53,6 +54,12 @@ The dimensions are not compared to \fBcurses\fR screen dimensions to simplify the logic of \fBresizeterm\fR. The caller must ensure that the window's dimensions fit within the actual screen dimensions. +.SH PORTABILITY +.PP +It is not possible to resize windows with SVr4 curses. +.PP +This extension of ncurses was introduced in mid-1995. +It was adopted in NetBSD curses (2001) and PDCurses (2003). .SH SEE ALSO \fBresizeterm\fR(3X). .SH AUTHOR diff --git a/deps/ncurses-6.3/menu/Makefile.in b/deps/ncurses-6.3/menu/Makefile.in new file mode 100644 index 0000000..b623bf0 --- /dev/null +++ b/deps/ncurses-6.3/menu/Makefile.in @@ -0,0 +1,212 @@ +# $Id: Makefile.in,v 1.71 2021/07/03 15:45:33 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,2018 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: Thomas E. Dickey 1996-on +# +# Makefile for menu source code. +# +# This makes the following: +# libraries (normal/debug/profile/shared) +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". +# +# The rules are organized to produce the libraries for the configured models, + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = @DFT_LWR_MODEL@ +DESTDIR = @DESTDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +PACKAGE = @PACKAGE@ + +LIBTOOL = @LIBTOOL@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ +LT_UNDEF = @LT_UNDEF@ + +INSTALL = @INSTALL@ +INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ +INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@ +INSTALL_DATA = @INSTALL_DATA@ + +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AWK = @AWK@ +LD = @LD@ +LN_S = @LN_S@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +CC = @CC@ +CPP = @CPP@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ + +INCDIR = $(top_srcdir)/include +BASE_DIR = $(top_srcdir)/ncurses +CPPFLAGS = -I$(BASE_DIR) -DHAVE_CONFIG_H -DBUILDING_MENU @CPPFLAGS@ + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +LINK = $(LIBTOOL_LINK) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + +SHLIB_DIRS = -L../lib +SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ + +RPATH_LIST = @RPATH_LIST@ +RESULTING_SYMS = @RESULTING_SYMS@ +VERSIONED_SYMS = @VERSIONED_SYMS@ +MK_SHARED_LIB = @MK_SHARED_LIB@ + +NCURSES_MAJOR = @NCURSES_MAJOR@ +NCURSES_MINOR = @NCURSES_MINOR@ +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ + +RANLIB = @LIB_PREP@ + +LIBRARIES = @Libs_To_Make@ + +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ +LINT_LIBS = -lmenu -lncurses @LIBS@ + +AUTO_SRC = \ + ../include/menu.h \ + ../include/eti.h \ + ../include/mf_common.h + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +libs \ +install :: $(AUTO_SRC) $(LIBRARIES) + +sources : $(AUTO_SRC) + +$(DESTDIR)$(bindir) \ +$(DESTDIR)$(libdir) : + mkdir -p $@ + +# make copies to simplify include-paths while still keeping menu's include +# file in this directory. +../include/menu.h : $(srcdir)/menu.h + -rm -f $@ + cp $(srcdir)/menu.h $@ +../include/eti.h : $(srcdir)/eti.h + -rm -f $@ + cp $(srcdir)/eti.h $@ +../include/mf_common.h : $(srcdir)/mf_common.h + -rm -f $@ + cp $(srcdir)/mf_common.h $@ + +HEADER_DEPS = \ + ../include/curses.h \ + ../include/ncurses_cfg.h \ + ../include/ncurses_def.h \ + ../include/ncurses_dll.h \ + ../include/term.h \ + ../include/unctrl.h \ + $(BASE_DIR)/curses.priv.h \ + $(BASE_DIR)/new_pair.h \ + $(INCDIR)/nc_alloc.h \ + $(INCDIR)/nc_panel.h \ + $(INCDIR)/nc_string.h \ + $(INCDIR)/nc_termios.h \ + $(INCDIR)/nc_tparm.h \ + $(INCDIR)/term_entry.h \ + $(srcdir)/menu.priv.h \ + $(AUTO_SRC) + +tags: + $(CTAGS) *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace + +clean :: mostlyclean + -rm -f $(AUTO_SRC) + -rm -rf .libs *.dSYM + +distclean :: clean + -rm -f Makefile + +realclean :: distclean + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-6.3/menu/READ.ME b/deps/ncurses-6.3/menu/READ.ME new file mode 100644 index 0000000..8c78037 --- /dev/null +++ b/deps/ncurses-6.3/menu/READ.ME @@ -0,0 +1,43 @@ +------------------------------------------------------------------------------- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2003,2006 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. -- +------------------------------------------------------------------------------- +-- $Id: READ.ME,v 1.11 2021/06/17 21:20:30 tom Exp $ +------------------------------------------------------------------------------- + +This is a clone of the menu library that is available with typical +System V curses implementations (ETI). + +It is modelled after the documentation that comes for this library with +a 386 based SVR4 implementation (ESIX). + +The development environment was and is an ELF based Linux system. + +For things that still need doing, see the TO-DO file in the top-level +directory. + +Juergen Pfeifer diff --git a/deps/ncurses-6.3/menu/eti.h b/deps/ncurses-6.3/menu/eti.h new file mode 100644 index 0000000..3c3302d --- /dev/null +++ b/deps/ncurses-6.3/menu/eti.h @@ -0,0 +1,55 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2002,2003 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, 1995,1997 * + ****************************************************************************/ + +/* $Id: eti.h,v 1.9 2020/02/02 23:34:34 tom Exp $ */ + +#ifndef NCURSES_ETI_H_incl +#define NCURSES_ETI_H_incl 1 + +#define E_OK (0) +#define E_SYSTEM_ERROR (-1) +#define E_BAD_ARGUMENT (-2) +#define E_POSTED (-3) +#define E_CONNECTED (-4) +#define E_BAD_STATE (-5) +#define E_NO_ROOM (-6) +#define E_NOT_POSTED (-7) +#define E_UNKNOWN_COMMAND (-8) +#define E_NO_MATCH (-9) +#define E_NOT_SELECTABLE (-10) +#define E_NOT_CONNECTED (-11) +#define E_REQUEST_DENIED (-12) +#define E_INVALID_FIELD (-13) +#define E_CURRENT (-14) + +#endif diff --git a/deps/ncurses-6.3/menu/headers b/deps/ncurses-6.3/menu/headers new file mode 100644 index 0000000..2f058aa --- /dev/null +++ b/deps/ncurses-6.3/menu/headers @@ -0,0 +1,34 @@ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998,2006 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: Thomas E. Dickey <dickey@clark.net> 1996 +# +$(srcdir)/eti.h +$(srcdir)/menu.h +# vile:makemode diff --git a/deps/ncurses-5.9/menu/llib-lmenu b/deps/ncurses-6.3/menu/llib-lmenu similarity index 91% rename from deps/ncurses-5.9/menu/llib-lmenu rename to deps/ncurses-6.3/menu/llib-lmenu index 13ecaf8..67f6822 100644 --- a/deps/ncurses-5.9/menu/llib-lmenu +++ b/deps/ncurses-6.3/menu/llib-lmenu @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 1996-2005,2010 * + * Author: Thomas E. Dickey 1996-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -37,7 +38,7 @@ #undef set_menu_fore int set_menu_fore( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -48,7 +49,7 @@ chtype menu_fore( #undef set_menu_back int set_menu_back( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -59,7 +60,7 @@ chtype menu_back( #undef set_menu_grey int set_menu_grey( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -72,9 +73,9 @@ chtype menu_grey( #undef _nc_menu_cursor_pos int _nc_menu_cursor_pos( - const MENU *menu, - const ITEM *item, - int *pY, + const MENU *menu, + const ITEM *item, + int *pY, int *pX) { return(*(int *)0); } @@ -87,14 +88,14 @@ int pos_menu_cursor( #undef _nc_Match_Next_Character_In_Item_Name int _nc_Match_Next_Character_In_Item_Name( - MENU *menu, - int ch, + MENU *menu, + int ch, ITEM **item) { return(*(int *)0); } #undef menu_driver int menu_driver( - MENU *menu, + MENU *menu, int c) { return(*(int *)0); } @@ -102,15 +103,15 @@ int menu_driver( #undef set_menu_format int set_menu_format( - MENU *menu, - int rows, + MENU *menu, + int rows, int cols) { return(*(int *)0); } #undef menu_format void menu_format( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { /* void */ } @@ -123,7 +124,7 @@ ITEM _nc_Default_Item; #undef _nc_Connect_Items NCURSES_BOOL _nc_Connect_Items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(NCURSES_BOOL *)0); } @@ -154,8 +155,8 @@ void _nc_Show_Menu( #undef _nc_New_TopRow_and_CurrentItem void _nc_New_TopRow_and_CurrentItem( - MENU *menu, - int new_toprow, + MENU *menu, + int new_toprow, ITEM *new_current_item) { /* void */ } @@ -163,7 +164,7 @@ void _nc_New_TopRow_and_CurrentItem( #undef set_menu_init int set_menu_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -174,7 +175,7 @@ Menu_Hook menu_init( #undef set_menu_term int set_menu_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -185,7 +186,7 @@ Menu_Hook menu_term( #undef set_item_init int set_item_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -196,7 +197,7 @@ Menu_Hook item_init( #undef set_item_term int set_item_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -209,7 +210,7 @@ Menu_Hook item_term( #undef set_current_item int set_current_item( - MENU *menu, + MENU *menu, ITEM *item) { return(*(int *)0); } @@ -239,7 +240,7 @@ const char *item_description( #undef new_item ITEM *new_item( - const char *name, + const char *name, const char *description) { return(*(ITEM **)0); } @@ -250,7 +251,7 @@ int free_item( #undef set_menu_mark int set_menu_mark( - MENU *menu, + MENU *menu, const char *mark) { return(*(int *)0); } @@ -263,19 +264,19 @@ const char *menu_mark( #undef set_item_opts int set_item_opts( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_off int item_opts_off( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_on int item_opts_on( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } @@ -288,7 +289,7 @@ Item_Options item_opts( #undef set_top_row int set_top_row( - MENU *menu, + MENU *menu, int row) { return(*(int *)0); } @@ -301,7 +302,7 @@ int top_row( #undef set_item_userptr int set_item_userptr( - ITEM *item, + ITEM *item, void *userptr) { return(*(int *)0); } @@ -314,7 +315,7 @@ void *item_userptr( #undef set_item_value int set_item_value( - ITEM *item, + ITEM *item, NCURSES_BOOL value) { return(*(int *)0); } @@ -334,7 +335,7 @@ NCURSES_BOOL item_visible( #undef set_menu_items int set_menu_items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(int *)0); } @@ -352,7 +353,7 @@ int item_count( #undef new_menu_sp MENU *new_menu_sp( - SCREEN *sp, + SCREEN *sp, ITEM **items) { return(*(MENU **)0); } @@ -370,19 +371,19 @@ int free_menu( #undef set_menu_opts int set_menu_opts( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_off int menu_opts_off( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_on int menu_opts_on( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } @@ -395,7 +396,7 @@ Menu_Options menu_opts( #undef set_menu_pad int set_menu_pad( - MENU *menu, + MENU *menu, int pad) { return(*(int *)0); } @@ -413,7 +414,7 @@ char *menu_pattern( #undef set_menu_pattern int set_menu_pattern( - MENU *menu, + MENU *menu, const char *p) { return(*(int *)0); } @@ -421,7 +422,7 @@ int set_menu_pattern( #undef _nc_Post_Item void _nc_Post_Item( - const MENU *menu, + const MENU *menu, const ITEM *item) { /* void */ } @@ -456,8 +457,8 @@ int menu_request_by_name( #undef scale_menu int scale_menu( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { return(*(int *)0); } @@ -465,17 +466,17 @@ int scale_menu( #undef set_menu_spacing int set_menu_spacing( - MENU *menu, - int s_desc, - int s_row, + MENU *menu, + int s_desc, + int s_row, int s_col) { return(*(int *)0); } #undef menu_spacing int menu_spacing( - const MENU *menu, - int *s_desc, - int *s_row, + const MENU *menu, + int *s_desc, + int *s_row, int *s_col) { return(*(int *)0); } @@ -483,7 +484,7 @@ int menu_spacing( #undef set_menu_sub int set_menu_sub( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } @@ -528,7 +529,7 @@ Menu_Options _nc_retrace_menu_opts( #undef set_menu_userptr int set_menu_userptr( - MENU *menu, + MENU *menu, void *userptr) { return(*(int *)0); } @@ -541,7 +542,7 @@ void *menu_userptr( #undef set_menu_win int set_menu_win( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } diff --git a/deps/ncurses-5.9/menu/llib-lmenut b/deps/ncurses-6.3/menu/llib-lmenut similarity index 91% rename from deps/ncurses-5.9/menu/llib-lmenut rename to deps/ncurses-6.3/menu/llib-lmenut index 951719f..0a0d059 100644 --- a/deps/ncurses-5.9/menu/llib-lmenut +++ b/deps/ncurses-6.3/menu/llib-lmenut @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2010 * + * Author: Thomas E. Dickey 2010-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -37,7 +38,7 @@ #undef set_menu_fore int set_menu_fore( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -48,7 +49,7 @@ chtype menu_fore( #undef set_menu_back int set_menu_back( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -59,7 +60,7 @@ chtype menu_back( #undef set_menu_grey int set_menu_grey( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -72,9 +73,9 @@ chtype menu_grey( #undef _nc_menu_cursor_pos int _nc_menu_cursor_pos( - const MENU *menu, - const ITEM *item, - int *pY, + const MENU *menu, + const ITEM *item, + int *pY, int *pX) { return(*(int *)0); } @@ -87,14 +88,14 @@ int pos_menu_cursor( #undef _nc_Match_Next_Character_In_Item_Name int _nc_Match_Next_Character_In_Item_Name( - MENU *menu, - int ch, + MENU *menu, + int ch, ITEM **item) { return(*(int *)0); } #undef menu_driver int menu_driver( - MENU *menu, + MENU *menu, int c) { return(*(int *)0); } @@ -102,15 +103,15 @@ int menu_driver( #undef set_menu_format int set_menu_format( - MENU *menu, - int rows, + MENU *menu, + int rows, int cols) { return(*(int *)0); } #undef menu_format void menu_format( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { /* void */ } @@ -123,7 +124,7 @@ ITEM _nc_Default_Item; #undef _nc_Connect_Items NCURSES_BOOL _nc_Connect_Items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(NCURSES_BOOL *)0); } @@ -154,8 +155,8 @@ void _nc_Show_Menu( #undef _nc_New_TopRow_and_CurrentItem void _nc_New_TopRow_and_CurrentItem( - MENU *menu, - int new_toprow, + MENU *menu, + int new_toprow, ITEM *new_current_item) { /* void */ } @@ -163,7 +164,7 @@ void _nc_New_TopRow_and_CurrentItem( #undef set_menu_init int set_menu_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -174,7 +175,7 @@ Menu_Hook menu_init( #undef set_menu_term int set_menu_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -185,7 +186,7 @@ Menu_Hook menu_term( #undef set_item_init int set_item_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -196,7 +197,7 @@ Menu_Hook item_init( #undef set_item_term int set_item_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -209,7 +210,7 @@ Menu_Hook item_term( #undef set_current_item int set_current_item( - MENU *menu, + MENU *menu, ITEM *item) { return(*(int *)0); } @@ -239,7 +240,7 @@ const char *item_description( #undef new_item ITEM *new_item( - const char *name, + const char *name, const char *description) { return(*(ITEM **)0); } @@ -250,7 +251,7 @@ int free_item( #undef set_menu_mark int set_menu_mark( - MENU *menu, + MENU *menu, const char *mark) { return(*(int *)0); } @@ -263,19 +264,19 @@ const char *menu_mark( #undef set_item_opts int set_item_opts( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_off int item_opts_off( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_on int item_opts_on( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } @@ -288,7 +289,7 @@ Item_Options item_opts( #undef set_top_row int set_top_row( - MENU *menu, + MENU *menu, int row) { return(*(int *)0); } @@ -301,7 +302,7 @@ int top_row( #undef set_item_userptr int set_item_userptr( - ITEM *item, + ITEM *item, void *userptr) { return(*(int *)0); } @@ -314,7 +315,7 @@ void *item_userptr( #undef set_item_value int set_item_value( - ITEM *item, + ITEM *item, NCURSES_BOOL value) { return(*(int *)0); } @@ -334,7 +335,7 @@ NCURSES_BOOL item_visible( #undef set_menu_items int set_menu_items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(int *)0); } @@ -352,7 +353,7 @@ int item_count( #undef new_menu_sp MENU *new_menu_sp( - SCREEN *sp, + SCREEN *sp, ITEM **items) { return(*(MENU **)0); } @@ -370,19 +371,19 @@ int free_menu( #undef set_menu_opts int set_menu_opts( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_off int menu_opts_off( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_on int menu_opts_on( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } @@ -395,7 +396,7 @@ Menu_Options menu_opts( #undef set_menu_pad int set_menu_pad( - MENU *menu, + MENU *menu, int pad) { return(*(int *)0); } @@ -413,7 +414,7 @@ char *menu_pattern( #undef set_menu_pattern int set_menu_pattern( - MENU *menu, + MENU *menu, const char *p) { return(*(int *)0); } @@ -421,7 +422,7 @@ int set_menu_pattern( #undef _nc_Post_Item void _nc_Post_Item( - const MENU *menu, + const MENU *menu, const ITEM *item) { /* void */ } @@ -456,8 +457,8 @@ int menu_request_by_name( #undef scale_menu int scale_menu( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { return(*(int *)0); } @@ -465,17 +466,17 @@ int scale_menu( #undef set_menu_spacing int set_menu_spacing( - MENU *menu, - int s_desc, - int s_row, + MENU *menu, + int s_desc, + int s_row, int s_col) { return(*(int *)0); } #undef menu_spacing int menu_spacing( - const MENU *menu, - int *s_desc, - int *s_row, + const MENU *menu, + int *s_desc, + int *s_row, int *s_col) { return(*(int *)0); } @@ -483,7 +484,7 @@ int menu_spacing( #undef set_menu_sub int set_menu_sub( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } @@ -528,7 +529,7 @@ Menu_Options _nc_retrace_menu_opts( #undef set_menu_userptr int set_menu_userptr( - MENU *menu, + MENU *menu, void *userptr) { return(*(int *)0); } @@ -541,7 +542,7 @@ void *menu_userptr( #undef set_menu_win int set_menu_win( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } diff --git a/deps/ncurses-5.9/menu/llib-lmenutw b/deps/ncurses-6.3/menu/llib-lmenutw similarity index 91% rename from deps/ncurses-5.9/menu/llib-lmenutw rename to deps/ncurses-6.3/menu/llib-lmenutw index 0cd559e..0a0d059 100644 --- a/deps/ncurses-5.9/menu/llib-lmenutw +++ b/deps/ncurses-6.3/menu/llib-lmenutw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2010 * + * Author: Thomas E. Dickey 2010-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -37,7 +38,7 @@ #undef set_menu_fore int set_menu_fore( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -48,7 +49,7 @@ chtype menu_fore( #undef set_menu_back int set_menu_back( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -59,7 +60,7 @@ chtype menu_back( #undef set_menu_grey int set_menu_grey( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -72,9 +73,9 @@ chtype menu_grey( #undef _nc_menu_cursor_pos int _nc_menu_cursor_pos( - const MENU *menu, - const ITEM *item, - int *pY, + const MENU *menu, + const ITEM *item, + int *pY, int *pX) { return(*(int *)0); } @@ -87,14 +88,14 @@ int pos_menu_cursor( #undef _nc_Match_Next_Character_In_Item_Name int _nc_Match_Next_Character_In_Item_Name( - MENU *menu, - int ch, + MENU *menu, + int ch, ITEM **item) { return(*(int *)0); } #undef menu_driver int menu_driver( - MENU *menu, + MENU *menu, int c) { return(*(int *)0); } @@ -102,15 +103,15 @@ int menu_driver( #undef set_menu_format int set_menu_format( - MENU *menu, - int rows, + MENU *menu, + int rows, int cols) { return(*(int *)0); } #undef menu_format void menu_format( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { /* void */ } @@ -123,7 +124,7 @@ ITEM _nc_Default_Item; #undef _nc_Connect_Items NCURSES_BOOL _nc_Connect_Items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(NCURSES_BOOL *)0); } @@ -154,8 +155,8 @@ void _nc_Show_Menu( #undef _nc_New_TopRow_and_CurrentItem void _nc_New_TopRow_and_CurrentItem( - MENU *menu, - int new_toprow, + MENU *menu, + int new_toprow, ITEM *new_current_item) { /* void */ } @@ -163,7 +164,7 @@ void _nc_New_TopRow_and_CurrentItem( #undef set_menu_init int set_menu_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -174,7 +175,7 @@ Menu_Hook menu_init( #undef set_menu_term int set_menu_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -185,7 +186,7 @@ Menu_Hook menu_term( #undef set_item_init int set_item_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -196,7 +197,7 @@ Menu_Hook item_init( #undef set_item_term int set_item_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -209,7 +210,7 @@ Menu_Hook item_term( #undef set_current_item int set_current_item( - MENU *menu, + MENU *menu, ITEM *item) { return(*(int *)0); } @@ -237,11 +238,9 @@ const char *item_description( /* ./m_item_new.c */ -#include <wctype.h> - #undef new_item ITEM *new_item( - const char *name, + const char *name, const char *description) { return(*(ITEM **)0); } @@ -252,7 +251,7 @@ int free_item( #undef set_menu_mark int set_menu_mark( - MENU *menu, + MENU *menu, const char *mark) { return(*(int *)0); } @@ -265,19 +264,19 @@ const char *menu_mark( #undef set_item_opts int set_item_opts( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_off int item_opts_off( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_on int item_opts_on( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } @@ -290,7 +289,7 @@ Item_Options item_opts( #undef set_top_row int set_top_row( - MENU *menu, + MENU *menu, int row) { return(*(int *)0); } @@ -303,7 +302,7 @@ int top_row( #undef set_item_userptr int set_item_userptr( - ITEM *item, + ITEM *item, void *userptr) { return(*(int *)0); } @@ -316,7 +315,7 @@ void *item_userptr( #undef set_item_value int set_item_value( - ITEM *item, + ITEM *item, NCURSES_BOOL value) { return(*(int *)0); } @@ -336,7 +335,7 @@ NCURSES_BOOL item_visible( #undef set_menu_items int set_menu_items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(int *)0); } @@ -354,7 +353,7 @@ int item_count( #undef new_menu_sp MENU *new_menu_sp( - SCREEN *sp, + SCREEN *sp, ITEM **items) { return(*(MENU **)0); } @@ -372,19 +371,19 @@ int free_menu( #undef set_menu_opts int set_menu_opts( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_off int menu_opts_off( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_on int menu_opts_on( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } @@ -397,7 +396,7 @@ Menu_Options menu_opts( #undef set_menu_pad int set_menu_pad( - MENU *menu, + MENU *menu, int pad) { return(*(int *)0); } @@ -415,7 +414,7 @@ char *menu_pattern( #undef set_menu_pattern int set_menu_pattern( - MENU *menu, + MENU *menu, const char *p) { return(*(int *)0); } @@ -423,7 +422,7 @@ int set_menu_pattern( #undef _nc_Post_Item void _nc_Post_Item( - const MENU *menu, + const MENU *menu, const ITEM *item) { /* void */ } @@ -458,8 +457,8 @@ int menu_request_by_name( #undef scale_menu int scale_menu( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { return(*(int *)0); } @@ -467,17 +466,17 @@ int scale_menu( #undef set_menu_spacing int set_menu_spacing( - MENU *menu, - int s_desc, - int s_row, + MENU *menu, + int s_desc, + int s_row, int s_col) { return(*(int *)0); } #undef menu_spacing int menu_spacing( - const MENU *menu, - int *s_desc, - int *s_row, + const MENU *menu, + int *s_desc, + int *s_row, int *s_col) { return(*(int *)0); } @@ -485,7 +484,7 @@ int menu_spacing( #undef set_menu_sub int set_menu_sub( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } @@ -530,7 +529,7 @@ Menu_Options _nc_retrace_menu_opts( #undef set_menu_userptr int set_menu_userptr( - MENU *menu, + MENU *menu, void *userptr) { return(*(int *)0); } @@ -543,7 +542,7 @@ void *menu_userptr( #undef set_menu_win int set_menu_win( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } diff --git a/deps/ncurses-5.9/menu/llib-lmenuw b/deps/ncurses-6.3/menu/llib-lmenuw similarity index 91% rename from deps/ncurses-5.9/menu/llib-lmenuw rename to deps/ncurses-6.3/menu/llib-lmenuw index 0998f9b..d5566d4 100644 --- a/deps/ncurses-5.9/menu/llib-lmenuw +++ b/deps/ncurses-6.3/menu/llib-lmenuw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2002-2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2002-2005,2010 * + * Author: Thomas E. Dickey 2002-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -37,7 +38,7 @@ #undef set_menu_fore int set_menu_fore( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -48,7 +49,7 @@ chtype menu_fore( #undef set_menu_back int set_menu_back( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -59,7 +60,7 @@ chtype menu_back( #undef set_menu_grey int set_menu_grey( - MENU *menu, + MENU *menu, chtype attr) { return(*(int *)0); } @@ -72,9 +73,9 @@ chtype menu_grey( #undef _nc_menu_cursor_pos int _nc_menu_cursor_pos( - const MENU *menu, - const ITEM *item, - int *pY, + const MENU *menu, + const ITEM *item, + int *pY, int *pX) { return(*(int *)0); } @@ -87,14 +88,14 @@ int pos_menu_cursor( #undef _nc_Match_Next_Character_In_Item_Name int _nc_Match_Next_Character_In_Item_Name( - MENU *menu, - int ch, + MENU *menu, + int ch, ITEM **item) { return(*(int *)0); } #undef menu_driver int menu_driver( - MENU *menu, + MENU *menu, int c) { return(*(int *)0); } @@ -102,15 +103,15 @@ int menu_driver( #undef set_menu_format int set_menu_format( - MENU *menu, - int rows, + MENU *menu, + int rows, int cols) { return(*(int *)0); } #undef menu_format void menu_format( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { /* void */ } @@ -123,7 +124,7 @@ ITEM _nc_Default_Item; #undef _nc_Connect_Items NCURSES_BOOL _nc_Connect_Items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(NCURSES_BOOL *)0); } @@ -154,8 +155,8 @@ void _nc_Show_Menu( #undef _nc_New_TopRow_and_CurrentItem void _nc_New_TopRow_and_CurrentItem( - MENU *menu, - int new_toprow, + MENU *menu, + int new_toprow, ITEM *new_current_item) { /* void */ } @@ -163,7 +164,7 @@ void _nc_New_TopRow_and_CurrentItem( #undef set_menu_init int set_menu_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -174,7 +175,7 @@ Menu_Hook menu_init( #undef set_menu_term int set_menu_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -185,7 +186,7 @@ Menu_Hook menu_term( #undef set_item_init int set_item_init( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -196,7 +197,7 @@ Menu_Hook item_init( #undef set_item_term int set_item_term( - MENU *menu, + MENU *menu, Menu_Hook func) { return(*(int *)0); } @@ -209,7 +210,7 @@ Menu_Hook item_term( #undef set_current_item int set_current_item( - MENU *menu, + MENU *menu, ITEM *item) { return(*(int *)0); } @@ -237,11 +238,9 @@ const char *item_description( /* ./m_item_new.c */ -#include <wctype.h> - #undef new_item ITEM *new_item( - const char *name, + const char *name, const char *description) { return(*(ITEM **)0); } @@ -252,7 +251,7 @@ int free_item( #undef set_menu_mark int set_menu_mark( - MENU *menu, + MENU *menu, const char *mark) { return(*(int *)0); } @@ -265,19 +264,19 @@ const char *menu_mark( #undef set_item_opts int set_item_opts( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_off int item_opts_off( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } #undef item_opts_on int item_opts_on( - ITEM *item, + ITEM *item, Item_Options opts) { return(*(int *)0); } @@ -290,7 +289,7 @@ Item_Options item_opts( #undef set_top_row int set_top_row( - MENU *menu, + MENU *menu, int row) { return(*(int *)0); } @@ -303,7 +302,7 @@ int top_row( #undef set_item_userptr int set_item_userptr( - ITEM *item, + ITEM *item, void *userptr) { return(*(int *)0); } @@ -316,7 +315,7 @@ void *item_userptr( #undef set_item_value int set_item_value( - ITEM *item, + ITEM *item, NCURSES_BOOL value) { return(*(int *)0); } @@ -336,7 +335,7 @@ NCURSES_BOOL item_visible( #undef set_menu_items int set_menu_items( - MENU *menu, + MENU *menu, ITEM **items) { return(*(int *)0); } @@ -354,7 +353,7 @@ int item_count( #undef new_menu_sp MENU *new_menu_sp( - SCREEN *sp, + SCREEN *sp, ITEM **items) { return(*(MENU **)0); } @@ -372,19 +371,19 @@ int free_menu( #undef set_menu_opts int set_menu_opts( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_off int menu_opts_off( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } #undef menu_opts_on int menu_opts_on( - MENU *menu, + MENU *menu, Menu_Options opts) { return(*(int *)0); } @@ -397,7 +396,7 @@ Menu_Options menu_opts( #undef set_menu_pad int set_menu_pad( - MENU *menu, + MENU *menu, int pad) { return(*(int *)0); } @@ -415,7 +414,7 @@ char *menu_pattern( #undef set_menu_pattern int set_menu_pattern( - MENU *menu, + MENU *menu, const char *p) { return(*(int *)0); } @@ -423,7 +422,7 @@ int set_menu_pattern( #undef _nc_Post_Item void _nc_Post_Item( - const MENU *menu, + const MENU *menu, const ITEM *item) { /* void */ } @@ -458,8 +457,8 @@ int menu_request_by_name( #undef scale_menu int scale_menu( - const MENU *menu, - int *rows, + const MENU *menu, + int *rows, int *cols) { return(*(int *)0); } @@ -467,17 +466,17 @@ int scale_menu( #undef set_menu_spacing int set_menu_spacing( - MENU *menu, - int s_desc, - int s_row, + MENU *menu, + int s_desc, + int s_row, int s_col) { return(*(int *)0); } #undef menu_spacing int menu_spacing( - const MENU *menu, - int *s_desc, - int *s_row, + const MENU *menu, + int *s_desc, + int *s_row, int *s_col) { return(*(int *)0); } @@ -485,7 +484,7 @@ int menu_spacing( #undef set_menu_sub int set_menu_sub( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } @@ -530,7 +529,7 @@ Menu_Options _nc_retrace_menu_opts( #undef set_menu_userptr int set_menu_userptr( - MENU *menu, + MENU *menu, void *userptr) { return(*(int *)0); } @@ -543,7 +542,7 @@ void *menu_userptr( #undef set_menu_win int set_menu_win( - MENU *menu, + MENU *menu, WINDOW *win) { return(*(int *)0); } diff --git a/deps/ncurses-5.9/menu/m_attribs.c b/deps/ncurses-6.3/menu/m_attribs.c similarity index 88% rename from deps/ncurses-5.9/menu/m_attribs.c rename to deps/ncurses-6.3/menu/m_attribs.c index c41d558..a9275d0 100644 --- a/deps/ncurses-5.9/menu/m_attribs.c +++ b/deps/ncurses-6.3/menu/m_attribs.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_attribs.c,v 1.16 2010/01/23 21:16:54 tom Exp $") +MODULE_ID("$Id: m_attribs.c,v 1.20 2021/06/17 21:20:30 tom Exp $") /* Macro to redraw menu if it is posted and changed */ #define Refresh_Menu(menu) \ @@ -49,9 +50,9 @@ MODULE_ID("$Id: m_attribs.c,v 1.16 2010/01/23 21:16:54 tom Exp $") /* "Template" macro to generate a function to set a menus attribute */ #define GEN_MENU_ATTR_SET_FCT( name ) \ -NCURSES_IMPEXP int NCURSES_API set_menu_ ## name (MENU* menu, chtype attr) \ +MENU_EXPORT(int) NCURSES_API set_menu_ ## name (MENU* menu, chtype attr) \ {\ - T((T_CALLED("set_menu_" #name "(%p,%s)"), menu, _traceattr(attr))); \ + T((T_CALLED("set_menu_" #name "(%p,%s)"), (void *) menu, _traceattr(attr))); \ if (!(attr==A_NORMAL || (attr & A_ATTRIBUTES)==attr))\ RETURN(E_BAD_ARGUMENT);\ if (menu && ( menu -> name != attr))\ @@ -65,76 +66,76 @@ NCURSES_IMPEXP int NCURSES_API set_menu_ ## name (MENU* menu, chtype attr) \ /* "Template" macro to generate a function to get a menu's attribute */ #define GEN_MENU_ATTR_GET_FCT( name ) \ -NCURSES_IMPEXP chtype NCURSES_API menu_ ## name (const MENU * menu)\ +MENU_EXPORT(chtype) NCURSES_API menu_ ## name (const MENU * menu)\ {\ T((T_CALLED("menu_" #name "(%p)"), (const void *) menu));\ returnAttr(Normalize_Menu( menu ) -> name);\ } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_fore(MENU *menu, chtype attr) -| +| | Description : Set the attribute for selectable items. In single- | valued menus this is used to highlight the current | item ((i.e. where the cursor is), in multi-valued | menus this is used to highlight the selected items. | | Return Values : E_OK - success -| E_BAD_ARGUMENT - an invalid value has been passed +| E_BAD_ARGUMENT - an invalid value has been passed +--------------------------------------------------------------------------*/ GEN_MENU_ATTR_SET_FCT(fore) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : chtype menu_fore(const MENU* menu) -| +| | Description : Return the attribute used for selectable items that | are current (single-valued menu) or selected (multi- -| valued menu). +| valued menu). | | Return Values : Attribute value +--------------------------------------------------------------------------*/ GEN_MENU_ATTR_GET_FCT(fore) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_back(MENU *menu, chtype attr) -| +| | Description : Set the attribute for selectable but not yet selected | items. | -| Return Values : E_OK - success +| Return Values : E_OK - success | E_BAD_ARGUMENT - an invalid value has been passed +--------------------------------------------------------------------------*/ GEN_MENU_ATTR_SET_FCT(back) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : chtype menu_back(const MENU *menu) -| +| | Description : Return the attribute used for selectable but not yet -| selected items. +| selected items. | | Return Values : Attribute value +--------------------------------------------------------------------------*/ GEN_MENU_ATTR_GET_FCT(back) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_grey(MENU *menu, chtype attr) -| +| | Description : Set the attribute for unselectable items. | | Return Values : E_OK - success -| E_BAD_ARGUMENT - an invalid value has been passed +| E_BAD_ARGUMENT - an invalid value has been passed +--------------------------------------------------------------------------*/ GEN_MENU_ATTR_SET_FCT(grey) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : chtype menu_grey(const MENU *menu) -| +| | Description : Return the attribute used for non-selectable items | | Return Values : Attribute value diff --git a/deps/ncurses-5.9/menu/m_cursor.c b/deps/ncurses-6.3/menu/m_cursor.c similarity index 88% rename from deps/ncurses-5.9/menu/m_cursor.c rename to deps/ncurses-6.3/menu/m_cursor.c index 9891de4..b9b301d 100644 --- a/deps/ncurses-5.9/menu/m_cursor.c +++ b/deps/ncurses-6.3/menu/m_cursor.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_cursor.c,v 1.22 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_cursor.c,v 1.26 2021/03/27 23:46:29 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -49,16 +50,16 @@ MODULE_ID("$Id: m_cursor.c,v 1.22 2010/01/23 21:20:10 tom Exp $") | E_BAD_ARGUMENT - invalid menu | E_NOT_POSTED - Menu is not posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_menu_cursor_pos(const MENU * menu, const ITEM * item, int *pY, int *pX) +MENU_EXPORT(int) +_nc_menu_cursor_pos(const MENU *menu, const ITEM *item, int *pY, int *pX) { if (!menu || !pX || !pY) return (E_BAD_ARGUMENT); else { - if ((ITEM *) 0 == item) + if ((ITEM *)0 == item) item = menu->curitem; - assert(item != (ITEM *) 0); + assert(item != (ITEM *)0); if (!(menu->status & _POSTED)) return (E_NOT_POSTED); @@ -79,19 +80,19 @@ _nc_menu_cursor_pos(const MENU * menu, const ITEM * item, int *pY, int *pX) | E_BAD_ARGUMENT - invalid menu | E_NOT_POSTED - Menu is not posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -pos_menu_cursor(const MENU * menu) +MENU_EXPORT(int) +pos_menu_cursor(const MENU *menu) { - WINDOW *win, *sub; int x = 0, y = 0; - int err = _nc_menu_cursor_pos(menu, (ITEM *) 0, &y, &x); + int err = _nc_menu_cursor_pos(menu, (ITEM *)0, &y, &x); T((T_CALLED("pos_menu_cursor(%p)"), (const void *)menu)); if (E_OK == err) { - win = Get_Menu_UserWin(menu); - sub = menu->usersub ? menu->usersub : win; + WINDOW *win = Get_Menu_UserWin(menu); + WINDOW *sub = menu->usersub ? menu->usersub : win; + assert(win && sub); if ((menu->opt & O_SHOWMATCH) && (menu->pindex > 0)) diff --git a/deps/ncurses-5.9/menu/m_driver.c b/deps/ncurses-6.3/menu/m_driver.c similarity index 95% rename from deps/ncurses-5.9/menu/m_driver.c rename to deps/ncurses-6.3/menu/m_driver.c index deeff47..cf2ef2f 100644 --- a/deps/ncurses-5.9/menu/m_driver.c +++ b/deps/ncurses-6.3/menu/m_driver.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_driver.c,v 1.29 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_driver.c,v 1.37 2021/03/27 23:46:29 tom Exp $") /* Macros */ @@ -47,7 +48,7 @@ MODULE_ID("$Id: m_driver.c,v 1.29 2010/01/23 21:20:10 tom Exp $") /* Add a new character to the match pattern buffer */ #define Add_Character_To_Pattern(menu,ch) \ - { (menu)->pattern[((menu)->pindex)++] = (ch);\ + { (menu)->pattern[((menu)->pindex)++] = (char) (ch);\ (menu)->pattern[(menu)->pindex] = '\0'; } /*--------------------------------------------------------------------------- @@ -114,9 +115,9 @@ Is_Sub_String( | Return Values : E_OK - an item matching the pattern was found | E_NO_MATCH - nothing found +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +MENU_EXPORT(int) _nc_Match_Next_Character_In_Item_Name -(MENU * menu, int ch, ITEM ** item) +(MENU *menu, int ch, ITEM **item) { bool found = FALSE, passed = FALSE; int idx, last; @@ -138,7 +139,7 @@ _nc_Match_Next_Character_In_Item_Name /* we artificially position one item back, because in the do...while loop we start with the next item. This means, that with a new pattern search we always start the scan with the actual item. If - we do a NEXT_PATTERN oder PREV_PATTERN search, we start with the + we do a NEXT_PATTERN or PREV_PATTERN search, we start with the one after or before the actual item. */ if (--idx < 0) idx = menu->nitems - 1; @@ -208,8 +209,8 @@ _nc_Match_Next_Character_In_Item_Name | E_BAD_STATE - menu is in user hook routine | E_NOT_POSTED - menu is not posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -menu_driver(MENU * menu, int c) +MENU_EXPORT(int) +menu_driver(MENU *menu, int c) { #define NAVIGATE(dir) \ if (!item->dir)\ @@ -219,7 +220,7 @@ menu_driver(MENU * menu, int c) int result = E_OK; ITEM *item; - int my_top_row, rdiff; + int my_top_row; T((T_CALLED("menu_driver(%p,%d)"), (void *)menu, c)); @@ -238,6 +239,8 @@ menu_driver(MENU * menu, int c) if ((c > KEY_MAX) && (c <= MAX_MENU_COMMAND)) { + int rdiff; + if (!((c == REQ_BACK_PATTERN) || (c == REQ_NEXT_MATCH) || (c == REQ_PREV_MATCH))) { @@ -488,16 +491,20 @@ menu_driver(MENU * menu, int c) } else if (wenclose(sub, event.y, event.x)) { /* Inside the area we try to find the hit item */ - int i, x, y, err; + int x, y; ry = event.y; rx = event.x; if (wmouse_trafo(sub, &ry, &rx, FALSE)) { + int i; + for (i = 0; i < menu->nitems; i++) { - err = _nc_menu_cursor_pos(menu, menu->items[i], - &y, &x); + int err = _nc_menu_cursor_pos(menu, + menu->items[i], + &y, &x); + if (E_OK == err) { if ((ry == y) && @@ -530,14 +537,22 @@ menu_driver(MENU * menu, int c) } } else - result = E_REQUEST_DENIED; + { + if (menu->opt & O_MOUSE_MENU) + ungetmouse(&event); /* let someone else handle this */ + result = E_REQUEST_DENIED; + } } #endif /* NCURSES_MOUSE_VERSION */ else result = E_UNKNOWN_COMMAND; } - if (E_OK == result) + if (item == 0) + { + result = E_BAD_STATE; + } + else if (E_OK == result) { /* Adjust the top row if it turns out that the current item unfortunately doesn't appear in the menu window */ diff --git a/deps/ncurses-5.9/menu/m_format.c b/deps/ncurses-6.3/menu/m_format.c similarity index 87% rename from deps/ncurses-5.9/menu/m_format.c rename to deps/ncurses-6.3/menu/m_format.c index 8e68a03..65adfc6 100644 --- a/deps/ncurses-5.9/menu/m_format.c +++ b/deps/ncurses-6.3/menu/m_format.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_format.c,v 1.16 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_format.c,v 1.22 2021/03/27 23:46:29 tom Exp $") #define minimum(a,b) ((a)<(b) ? (a): (b)) @@ -55,10 +56,9 @@ MODULE_ID("$Id: m_format.c,v 1.16 2010/01/23 21:20:10 tom Exp $") | E_NOT_CONNECTED - there are no items connected | E_POSTED - the menu is already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_format(MENU * menu, int rows, int cols) +MENU_EXPORT(int) +set_menu_format(MENU *menu, int rows, int cols) { - int total_rows, total_cols; T((T_CALLED("set_menu_format(%p,%d,%d)"), (void *)menu, rows, cols)); @@ -67,6 +67,8 @@ set_menu_format(MENU * menu, int rows, int cols) if (menu) { + int total_rows, total_cols; + if (menu->status & _POSTED) RETURN(E_POSTED); @@ -81,8 +83,8 @@ set_menu_format(MENU * menu, int rows, int cols) if (menu->pattern) Reset_Pattern(menu); - menu->frows = rows; - menu->fcols = cols; + menu->frows = (short)rows; + menu->fcols = (short)cols; assert(rows > 0 && cols > 0); total_rows = (menu->nitems - 1) / cols + 1; @@ -90,21 +92,21 @@ set_menu_format(MENU * menu, int rows, int cols) minimum(menu->nitems, cols) : (menu->nitems - 1) / total_rows + 1; - menu->rows = total_rows; - menu->cols = total_cols; - menu->arows = minimum(total_rows, rows); + menu->rows = (short)total_rows; + menu->cols = (short)total_cols; + menu->arows = (short)minimum(total_rows, rows); menu->toprow = 0; menu->curitem = *(menu->items); assert(menu->curitem); - menu->status |= _LINK_NEEDED; + SetStatus(menu, _LINK_NEEDED); _nc_Calculate_Item_Length_and_Width(menu); } else { if (rows > 0) - _nc_Default_Menu.frows = rows; + _nc_Default_Menu.frows = (short)rows; if (cols > 0) - _nc_Default_Menu.fcols = cols; + _nc_Default_Menu.fcols = (short)cols; } RETURN(E_OK); @@ -119,8 +121,8 @@ set_menu_format(MENU * menu, int rows, int cols) | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -menu_format(const MENU * menu, int *rows, int *cols) +MENU_EXPORT(void) +menu_format(const MENU *menu, int *rows, int *cols) { if (rows) *rows = Normalize_Menu(menu)->frows; diff --git a/deps/ncurses-5.9/menu/m_global.c b/deps/ncurses-6.3/menu/m_global.c similarity index 84% rename from deps/ncurses-5.9/menu/m_global.c rename to deps/ncurses-6.3/menu/m_global.c index 90f6f25..4ec08c5 100644 --- a/deps/ncurses-5.9/menu/m_global.c +++ b/deps/ncurses-6.3/menu/m_global.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2014 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 * @@ -37,11 +38,11 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_global.c,v 1.25 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_global.c,v 1.33 2021/03/27 23:46:29 tom Exp $") static char mark[] = "-"; /* *INDENT-OFF* */ -NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = { +MENU_EXPORT_VAR(MENU) _nc_Default_Menu = { 16, /* Nr. of chars high */ 1, /* Nr. of chars wide */ 16, /* Nr. of items high */ @@ -53,7 +54,7 @@ NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = { 0, /* length of widest description */ 1, /* length of mark */ 1, /* length of one item */ - 1, /* Spacing for descriptor */ + 1, /* Spacing for descriptor */ 1, /* Spacing for columns */ 1, /* Spacing for rows */ (char *)0, /* buffer used to store match chars */ @@ -68,7 +69,7 @@ NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = { 0, /* Top row of menu */ (chtype)A_REVERSE, /* Attribute for selection */ (chtype)A_NORMAL, /* Attribute for nonselection */ - (chtype)A_UNDERLINE, /* Attribute for inactive */ + (chtype)A_UNDERLINE, /* Attribute for inactive */ ' ', /* Pad character */ (Menu_Hook)0, /* Menu init */ (Menu_Hook)0, /* Menu term */ @@ -77,10 +78,10 @@ NCURSES_EXPORT_VAR(MENU) _nc_Default_Menu = { (void *)0, /* userptr */ mark, /* mark */ ALL_MENU_OPTS, /* options */ - 0 /* status */ + 0 /* status */ }; -NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = { +MENU_EXPORT_VAR(ITEM) _nc_Default_Item = { { (char *)0, 0 }, /* name */ { (char *)0, 0 }, /* description */ (MENU *)0, /* Pointer to parent menu */ @@ -98,50 +99,50 @@ NCURSES_EXPORT_VAR(ITEM) _nc_Default_Item = { /* *INDENT-ON* */ /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : static void ComputeMaximum_NameDesc_Lenths(MENU *menu) -| +| | Description : Calculates the maximum name and description lengths | of the items connected to the menu | | Return Values : - +--------------------------------------------------------------------------*/ NCURSES_INLINE static void -ComputeMaximum_NameDesc_Lengths(MENU * menu) +ComputeMaximum_NameDesc_Lengths(MENU *menu) { unsigned MaximumNameLength = 0; unsigned MaximumDescriptionLength = 0; ITEM **items; - unsigned check; assert(menu && menu->items); for (items = menu->items; *items; items++) { - check = _nc_Calculate_Text_Width(&((*items)->name)); + unsigned check = (unsigned)_nc_Calculate_Text_Width(&((*items)->name)); + if (check > MaximumNameLength) MaximumNameLength = check; - check = _nc_Calculate_Text_Width(&((*items)->description)); + check = (unsigned)_nc_Calculate_Text_Width(&((*items)->description)); if (check > MaximumDescriptionLength) MaximumDescriptionLength = check; } - menu->namelen = MaximumNameLength; - menu->desclen = MaximumDescriptionLength; + menu->namelen = (short)MaximumNameLength; + menu->desclen = (short)MaximumDescriptionLength; T(("ComputeMaximum_NameDesc_Lengths %d,%d", menu->namelen, menu->desclen)); } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : static void ResetConnectionInfo(MENU *, ITEM **) -| -| Description : Reset all informations in the menu and the items in +| +| Description : Reset all information in the menu and the items in | the item array that indicates a connection | | Return Values : - +--------------------------------------------------------------------------*/ NCURSES_INLINE static void -ResetConnectionInfo(MENU * menu, ITEM ** items) +ResetConnectionInfo(MENU *menu, ITEM **items) { ITEM **item; @@ -149,18 +150,18 @@ ResetConnectionInfo(MENU * menu, ITEM ** items) for (item = items; *item; item++) { (*item)->index = 0; - (*item)->imenu = (MENU *) 0; + (*item)->imenu = (MENU *)0; } if (menu->pattern) free(menu->pattern); menu->pattern = (char *)0; menu->pindex = 0; - menu->items = (ITEM **) 0; + menu->items = (ITEM **)0; menu->nitems = 0; } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : bool _nc_Connect_Items(MENU *menu, ITEM **items) | | Description : Connect the items in the item array to the menu. @@ -170,14 +171,15 @@ ResetConnectionInfo(MENU * menu, ITEM ** items) | Return Values : TRUE - successful connection | FALSE - connection failed +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -_nc_Connect_Items(MENU * menu, ITEM ** items) +MENU_EXPORT(bool) +_nc_Connect_Items(MENU *menu, ITEM **items) { - ITEM **item; unsigned int ItemCount = 0; if (menu && items) { + ITEM **item; + for (item = items; *item; item++) { if ((*item)->imenu) @@ -195,7 +197,7 @@ _nc_Connect_Items(MENU * menu, ITEM ** items) { (*item)->value = FALSE; } - (*item)->index = ItemCount++; + (*item)->index = (short)ItemCount++; (*item)->imenu = menu; } } @@ -206,7 +208,7 @@ _nc_Connect_Items(MENU * menu, ITEM ** items) if (ItemCount != 0) { menu->items = items; - menu->nitems = ItemCount; + menu->nitems = (short)ItemCount; ComputeMaximum_NameDesc_Lengths(menu); if ((menu->pattern = typeMalloc(char, (unsigned)(1 + menu->namelen)))) { @@ -218,37 +220,37 @@ _nc_Connect_Items(MENU * menu, ITEM ** items) } } - /* If we fall through to this point, we have to reset all items connection + /* If we fall through to this point, we have to reset all items connection and inform about a reject connection */ ResetConnectionInfo(menu, items); return (FALSE); } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void _nc_Disconnect_Items(MENU *menu) -| +| | Description : Disconnect the menus item array from the menu | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Disconnect_Items(MENU * menu) +MENU_EXPORT(void) +_nc_Disconnect_Items(MENU *menu) { if (menu && menu->items) ResetConnectionInfo(menu, menu->items); } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int _nc_Calculate_Text_Width(const TEXT * item) -| +| | Description : Calculate the number of columns for a TEXT. | | Return Values : the width +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -_nc_Calculate_Text_Width(const TEXT * item /*FIXME: limit length */ ) +MENU_EXPORT(int) +_nc_Calculate_Text_Width(const TEXT *item /*FIXME: limit length */ ) { #if USE_WIDEC_SUPPORT int result = item->length; @@ -256,7 +258,7 @@ _nc_Calculate_Text_Width(const TEXT * item /*FIXME: limit length */ ) T((T_CALLED("_nc_menu_text_width(%p)"), (const void *)item)); if (result != 0 && item->str != 0) { - int count = mbstowcs(0, item->str, 0); + int count = (int)mbstowcs(0, item->str, 0); wchar_t *temp = 0; if (count > 0 @@ -288,26 +290,22 @@ _nc_Calculate_Text_Width(const TEXT * item /*FIXME: limit length */ ) */ #if USE_WIDEC_SUPPORT static int -calculate_actual_width(MENU * menu, bool name) +calculate_actual_width(MENU *menu, bool name) { int width = 0; - int check = 0; - ITEM **items; assert(menu && menu->items); if (menu->items != 0) { + ITEM **items; + for (items = menu->items; *items; items++) { - if (name) - { - check = _nc_Calculate_Text_Width(&((*items)->name)); - } - else - { - check = _nc_Calculate_Text_Width(&((*items)->description)); - } + int check = (name + ? _nc_Calculate_Text_Width(&((*items)->name)) + : _nc_Calculate_Text_Width(&((*items)->description))); + if (check > width) width = check; } @@ -328,22 +326,22 @@ calculate_actual_width(MENU * menu, bool name) #endif /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void _nc_Calculate_Item_Length_and_Width(MENU *menu) -| +| | Description : Calculate the length of an item and the width of the | whole menu. | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Calculate_Item_Length_and_Width(MENU * menu) +MENU_EXPORT(void) +_nc_Calculate_Item_Length_and_Width(MENU *menu) { int l; assert(menu); - menu->height = 1 + menu->spc_rows * (menu->arows - 1); + menu->height = (short)(1 + menu->spc_rows * (menu->arows - 1)); l = calculate_actual_width(menu, TRUE); l += menu->marklen; @@ -354,10 +352,10 @@ _nc_Calculate_Item_Length_and_Width(MENU * menu) l += menu->spc_desc; } - menu->itemlen = l; + menu->itemlen = (short)l; l *= menu->cols; l += (menu->cols - 1) * menu->spc_cols; /* for the padding between the columns */ - menu->width = l; + menu->width = (short)l; T(("_nc_CalculateItem_Length_and_Width columns %d, item %d, width %d", menu->cols, @@ -366,21 +364,21 @@ _nc_Calculate_Item_Length_and_Width(MENU * menu) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void _nc_Link_Item(MENU *menu) -| +| | Description : Statically calculate for every item its four neighbors. | This depends on the orientation of the menu. This | static approach simplifies navigation in the menu a lot. | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Link_Items(MENU * menu) +MENU_EXPORT(void) +_nc_Link_Items(MENU *menu) { if (menu && menu->items && *(menu->items)) { - int i, j; + int i; ITEM *item; int Number_Of_Items = menu->nitems; int col = 0, row = 0; @@ -388,7 +386,7 @@ _nc_Link_Items(MENU * menu) int Last_in_Column; bool cycle = (menu->opt & O_NONCYCLIC) ? FALSE : TRUE; - menu->status &= ~_LINK_NEEDED; + ClrStatus(menu, _LINK_NEEDED); if (menu->opt & O_ROWMAJOR) { @@ -407,14 +405,14 @@ _nc_Link_Items(MENU * menu) (cycle ? menu->items[(Last_in_Row >= Number_Of_Items) ? Number_Of_Items - 1 : Last_in_Row] : - (ITEM *) 0); + (ITEM *)0); item->right = ((col < (Number_Of_Columns - 1)) && ((i + 1) < Number_Of_Items) )? menu->items[i + 1] : (cycle ? menu->items[row * Number_Of_Columns] : - (ITEM *) 0 + (ITEM *)0 ); Last_in_Column = (menu->rows - 1) * Number_Of_Columns + col; @@ -423,16 +421,16 @@ _nc_Link_Items(MENU * menu) (cycle ? menu->items[(Last_in_Column >= Number_Of_Items) ? Number_Of_Items - 1 : Last_in_Column] : - (ITEM *) 0); + (ITEM *)0); item->down = ((i + Number_Of_Columns) < Number_Of_Items) ? menu->items[i + Number_Of_Columns] : (cycle ? menu->items[(row + 1) < menu->rows ? Number_Of_Items - 1 : col] : - (ITEM *) 0); - item->x = col; - item->y = row; + (ITEM *)0); + item->x = (short)col; + item->y = (short)row; if (++col == Number_Of_Columns) { row++; @@ -443,6 +441,7 @@ _nc_Link_Items(MENU * menu) else { int Number_Of_Rows = menu->rows; + int j; for (j = 0; j < Number_Of_Items; j++) { @@ -455,12 +454,12 @@ _nc_Link_Items(MENU * menu) (cycle ? (Last_in_Column >= Number_Of_Items) ? menu->items[Last_in_Column - Number_Of_Rows] : menu->items[Last_in_Column] : - (ITEM *) 0); + (ITEM *)0); item->right = ((i + Number_Of_Rows) < Number_Of_Items) ? menu->items[i + Number_Of_Rows] : - (cycle ? menu->items[row] : (ITEM *) 0); + (cycle ? menu->items[row] : (ITEM *)0); Last_in_Row = col * Number_Of_Rows + (Number_Of_Rows - 1); @@ -470,7 +469,7 @@ _nc_Link_Items(MENU * menu) menu->items[(Last_in_Row >= Number_Of_Items) ? Number_Of_Items - 1 : Last_in_Row] : - (ITEM *) 0); + (ITEM *)0); item->down = (row < (Number_Of_Rows - 1)) ? @@ -479,11 +478,11 @@ _nc_Link_Items(MENU * menu) (col - 1) * Number_Of_Rows + row + 1]) : (cycle ? menu->items[col * Number_Of_Rows] : - (ITEM *) 0 + (ITEM *)0 ); - item->x = col; - item->y = row; + item->x = (short)col; + item->y = (short)row; if ((++row) == Number_Of_Rows) { col++; @@ -495,22 +494,22 @@ _nc_Link_Items(MENU * menu) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void _nc_Show_Menu(const MENU* menu) -| +| | Description : Update the window that is associated with the menu | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Show_Menu(const MENU * menu) +MENU_EXPORT(void) +_nc_Show_Menu(const MENU *menu) { - WINDOW *win; - int maxy, maxx; - assert(menu); if ((menu->status & _POSTED) && !(menu->status & _IN_DRIVER)) { + WINDOW *win; + int maxy, maxx; + /* adjust the internal subwindow to start on the current top */ assert(menu->sub); mvderwin(menu->sub, menu->spc_rows * menu->toprow, 0); @@ -530,31 +529,31 @@ _nc_Show_Menu(const MENU * menu) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void _nc_New_TopRow_and_CurrentItem( -| MENU *menu, -| int new_toprow, +| MENU *menu, +| int new_toprow, | ITEM *new_current_item) -| +| | Description : Redisplay the menu so that the given row becomes the | top row and the given item becomes the new current | item. | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) +MENU_EXPORT(void) _nc_New_TopRow_and_CurrentItem( - MENU * menu, + MENU *menu, int new_toprow, - ITEM * new_current_item) + ITEM *new_current_item) { - ITEM *cur_item; - bool mterm_called = FALSE; - bool iterm_called = FALSE; - assert(menu); if (menu->status & _POSTED) { + ITEM *cur_item; + bool mterm_called = FALSE; + bool iterm_called = FALSE; + if (new_current_item != menu->curitem) { Call_Hook(menu, itemterm); @@ -568,7 +567,9 @@ _nc_New_TopRow_and_CurrentItem( cur_item = menu->curitem; assert(cur_item); - menu->toprow = new_toprow; + menu->toprow = (short)(((menu->rows - menu->frows) >= 0) + ? min(menu->rows - menu->frows, new_toprow) + : 0); menu->curitem = new_current_item; if (mterm_called) @@ -590,7 +591,9 @@ _nc_New_TopRow_and_CurrentItem( } else { /* if we are not posted, this is quite simple */ - menu->toprow = new_toprow; + menu->toprow = (short)(((menu->rows - menu->frows) >= 0) + ? min(menu->rows - menu->frows, new_toprow) + : 0); menu->curitem = new_current_item; } } diff --git a/deps/ncurses-5.9/menu/m_hook.c b/deps/ncurses-6.3/menu/m_hook.c similarity index 89% rename from deps/ncurses-5.9/menu/m_hook.c rename to deps/ncurses-6.3/menu/m_hook.c index 6125d05..c7d9fe9 100644 --- a/deps/ncurses-5.9/menu/m_hook.c +++ b/deps/ncurses-6.3/menu/m_hook.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -37,29 +38,30 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_hook.c,v 1.15 2010/01/23 21:16:54 tom Exp $") +MODULE_ID("$Id: m_hook.c,v 1.21 2021/06/17 21:26:02 tom Exp $") /* "Template" macro to generate function to set application specific hook */ #define GEN_HOOK_SET_FUNCTION( typ, name ) \ -NCURSES_IMPEXP int NCURSES_API set_ ## typ ## _ ## name (MENU *menu, Menu_Hook func )\ +MENU_EXPORT(int) NCURSES_API set_ ## typ ## _ ## name (MENU *menu, Menu_Hook func )\ {\ - T((T_CALLED("set_" #typ "_" #name "(%p,%p)"), menu, func));\ + TR_FUNC_BFR(1);\ + T((T_CALLED("set_" #typ "_" #name "(%p,%s)"), (void *) menu, TR_FUNC_ARG(0, func)));\ (Normalize_Menu(menu) -> typ ## name = func );\ RETURN(E_OK);\ } /* "Template" macro to generate function to get application specific hook */ #define GEN_HOOK_GET_FUNCTION( typ, name ) \ -NCURSES_IMPEXP Menu_Hook NCURSES_API typ ## _ ## name ( const MENU *menu )\ +MENU_EXPORT(Menu_Hook) NCURSES_API typ ## _ ## name ( const MENU *menu )\ {\ T((T_CALLED(#typ "_" #name "(%p)"), (const void *) menu));\ returnMenuHook(Normalize_Menu(menu) -> typ ## name);\ } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_init(MENU *menu, void (*f)(MENU *)) -| +| | Description : Set user-exit which is called when menu is posted | or just after the top row changes. | @@ -68,11 +70,11 @@ NCURSES_IMPEXP Menu_Hook NCURSES_API typ ## _ ## name ( const MENU *menu )\ GEN_HOOK_SET_FUNCTION(menu, init) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void (*)(MENU *) menu_init(const MENU *menu) -| +| | Description : Return address of user-exit function which is called -| when a menu is posted or just after the top row +| when a menu is posted or just after the top row | changes. | | Return Values : Menu init function address or NULL @@ -80,9 +82,9 @@ GEN_HOOK_SET_FUNCTION(menu, init) GEN_HOOK_GET_FUNCTION(menu, init) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_term (MENU *menu, void (*f)(MENU *)) -| +| | Description : Set user-exit which is called when menu is unposted | or just before the top row changes. | @@ -91,11 +93,11 @@ GEN_HOOK_GET_FUNCTION(menu, init) GEN_HOOK_SET_FUNCTION(menu, term) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void (*)(MENU *) menu_term(const MENU *menu) -| +| | Description : Return address of user-exit function which is called -| when a menu is unposted or just before the top row +| when a menu is unposted or just before the top row | changes. | | Return Values : Menu finalization function address or NULL @@ -103,9 +105,9 @@ GEN_HOOK_SET_FUNCTION(menu, term) GEN_HOOK_GET_FUNCTION(menu, term) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_item_init (MENU *menu, void (*f)(MENU *)) -| +| | Description : Set user-exit which is called when menu is posted | or just after the current item changes. | @@ -114,11 +116,11 @@ GEN_HOOK_GET_FUNCTION(menu, term) GEN_HOOK_SET_FUNCTION(item, init) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void (*)(MENU *) item_init (const MENU *menu) -| +| | Description : Return address of user-exit function which is called -| when a menu is posted or just after the current item +| when a menu is posted or just after the current item | changes. | | Return Values : Item init function address or NULL @@ -126,9 +128,9 @@ GEN_HOOK_SET_FUNCTION(item, init) GEN_HOOK_GET_FUNCTION(item, init) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_item_term (MENU *menu, void (*f)(MENU *)) -| +| | Description : Set user-exit which is called when menu is unposted | or just before the current item changes. | @@ -137,11 +139,11 @@ GEN_HOOK_GET_FUNCTION(item, init) GEN_HOOK_SET_FUNCTION(item, term) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void (*)(MENU *) item_init (const MENU *menu) -| +| | Description : Return address of user-exit function which is called -| when a menu is unposted or just before the current item +| when a menu is unposted or just before the current item | changes. | | Return Values : Item finalization function address or NULL diff --git a/deps/ncurses-5.9/menu/m_item_cur.c b/deps/ncurses-6.3/menu/m_item_cur.c similarity index 89% rename from deps/ncurses-5.9/menu/m_item_cur.c rename to deps/ncurses-6.3/menu/m_item_cur.c index 18b1a27..ed76518 100644 --- a/deps/ncurses-5.9/menu/m_item_cur.c +++ b/deps/ncurses-6.3/menu/m_item_cur.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,18 +38,18 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_cur.c,v 1.18 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_item_cur.c,v 1.22 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_current_item(MENU *menu, const ITEM *item) -| +| | Description : Make the item the current item | | Return Values : E_OK - success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_current_item(MENU * menu, ITEM * item) +MENU_EXPORT(int) +set_current_item(MENU *menu, ITEM *item) { T((T_CALLED("set_current_item(%p,%p)"), (void *)menu, (void *)item)); @@ -81,30 +82,30 @@ set_current_item(MENU * menu, ITEM * item) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : ITEM *current_item(const MENU *menu) -| +| | Description : Return the menus current item | | Return Values : Item pointer or NULL if failure +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(ITEM *) -current_item(const MENU * menu) +MENU_EXPORT(ITEM *) +current_item(const MENU *menu) { T((T_CALLED("current_item(%p)"), (const void *)menu)); - returnItem((menu && menu->items) ? menu->curitem : (ITEM *) 0); + returnItem((menu && menu->items) ? menu->curitem : (ITEM *)0); } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int item_index(const ITEM *) -| +| | Description : Return the logical index of this item. | | Return Values : The index or ERR if this is an invalid item pointer +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -item_index(const ITEM * item) +MENU_EXPORT(int) +item_index(const ITEM *item) { T((T_CALLED("item_index(%p)"), (const void *)item)); returnCode((item && item->imenu) ? item->index : ERR); diff --git a/deps/ncurses-5.9/menu/m_item_nam.c b/deps/ncurses-6.3/menu/m_item_nam.c similarity index 90% rename from deps/ncurses-5.9/menu/m_item_nam.c rename to deps/ncurses-6.3/menu/m_item_nam.c index 3ed1d37..ce74531 100644 --- a/deps/ncurses-5.9/menu/m_item_nam.c +++ b/deps/ncurses-6.3/menu/m_item_nam.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,33 +38,33 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_nam.c,v 1.15 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_item_nam.c,v 1.19 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : char *item_name(const ITEM *item) -| +| | Description : Return name of menu item | | Return Values : See above; returns NULL if item is invalid +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(const char *) -item_name(const ITEM * item) +MENU_EXPORT(const char *) +item_name(const ITEM *item) { T((T_CALLED("item_name(%p)"), (const void *)item)); returnCPtr((item) ? item->name.str : (char *)0); } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : char *item_description(const ITEM *item) -| +| | Description : Returns description of item | | Return Values : See above; Returns NULL if item is invalid +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(const char *) -item_description(const ITEM * item) +MENU_EXPORT(const char *) +item_description(const ITEM *item) { T((T_CALLED("item_description(%p)"), (const void *)item)); returnCPtr((item) ? item->description.str : (char *)0); diff --git a/deps/ncurses-5.9/menu/m_item_new.c b/deps/ncurses-6.3/menu/m_item_new.c similarity index 88% rename from deps/ncurses-5.9/menu/m_item_new.c rename to deps/ncurses-6.3/menu/m_item_new.c index 1debc2b..28b71ca 100644 --- a/deps/ncurses-5.9/menu/m_item_new.c +++ b/deps/ncurses-6.3/menu/m_item_new.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020-2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -44,12 +45,12 @@ #endif #endif -MODULE_ID("$Id: m_item_new.c,v 1.30 2010/01/23 21:20:11 tom Exp $") +MODULE_ID("$Id: m_item_new.c,v 1.38 2021/06/17 21:26:02 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : bool Is_Printable_String(const char *s) -| +| | Description : Checks whether or not the string contains only printable | characters. | @@ -62,7 +63,7 @@ Is_Printable_String(const char *s) int result = TRUE; #if USE_WIDEC_SUPPORT - int count = mbstowcs(0, s, 0); + int count = (int)mbstowcs(0, s, 0); wchar_t *temp = 0; assert(s); @@ -74,7 +75,7 @@ Is_Printable_String(const char *s) mbstowcs(temp, s, (unsigned)count); for (n = 0; n < count; ++n) - if (!iswprint((wint_t) temp[n])) + if (!iswprint((wint_t)temp[n])) { result = FALSE; break; @@ -97,16 +98,16 @@ Is_Printable_String(const char *s) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : ITEM *new_item(char *name, char *description) -| +| | Description : Create a new item with name and description. Return | a pointer to this new item. | N.B.: an item must(!) have a name. | | Return Values : The item pointer or NULL if creation failed. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(ITEM *) +MENU_EXPORT(ITEM *) new_item(const char *name, const char *description) { ITEM *item; @@ -117,23 +118,25 @@ new_item(const char *name, const char *description) if (!name || (*name == '\0') || !Is_Printable_String(name)) { - item = (ITEM *) 0; + item = (ITEM *)0; SET_ERROR(E_BAD_ARGUMENT); } else { item = typeCalloc(ITEM, 1); + if (item) { + T((T_CREATE("item %p"), (void *)item)); *item = _nc_Default_Item; /* hope we have struct assignment */ - item->name.length = strlen(name); + item->name.length = (unsigned short)strlen(name); item->name.str = name; if (description && (*description != '\0') && Is_Printable_String(description)) { - item->description.length = strlen(description); + item->description.length = (unsigned short)strlen(description); item->description.str = description; } else @@ -149,18 +152,18 @@ new_item(const char *name, const char *description) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int free_item(ITEM *item) -| -| Description : Free the allocated storage for this item. +| +| Description : Free the allocated storage for this item. | N.B.: a connected item can't be freed. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid value has been passed -| E_CONNECTED - item is still connected to a menu +| E_CONNECTED - item is still connected to a menu +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -free_item(ITEM * item) +MENU_EXPORT(int) +free_item(ITEM *item) { T((T_CALLED("free_item(%p)"), (void *)item)); @@ -176,31 +179,31 @@ free_item(ITEM * item) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_mark( MENU *menu, const char *mark ) -| +| | Description : Set the mark string used to indicate the current | item (single-valued menu) or the selected items | (multi-valued menu). -| The mark argument may be NULL, in which case no +| The mark argument may be NULL, in which case no | marker is used. -| This might be a little bit tricky, because this may -| affect the geometry of the menu, which we don't allow +| This might be a little bit tricky, because this may +| affect the geometry of the menu, which we don't allow | if it is already posted. | | Return Values : E_OK - success | E_BAD_ARGUMENT - an invalid value has been passed | E_SYSTEM_ERROR - no memory to store mark +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_mark(MENU * menu, const char *mark) +MENU_EXPORT(int) +set_menu_mark(MENU *menu, const char *mark) { - unsigned l; + short l; T((T_CALLED("set_menu_mark(%p,%s)"), (void *)menu, _nc_visbuf(mark))); if (mark && (*mark != '\0') && Is_Printable_String(mark)) - l = strlen(mark); + l = (short)strlen(mark); else l = 0; @@ -213,7 +216,7 @@ set_menu_mark(MENU * menu, const char *mark) { /* If the menu is already posted, the geometry is fixed. Then we can only accept a mark with exactly the same length */ - if (menu->marklen != (int)l) + if (menu->marklen != l) RETURN(E_BAD_ARGUMENT); } menu->marklen = l; @@ -222,14 +225,13 @@ set_menu_mark(MENU * menu, const char *mark) menu->mark = strdup(mark); if (menu->mark) { - strcpy(menu->mark, mark); if (menu != &_nc_Default_Menu) - menu->status |= _MARK_ALLOCATED; + SetStatus(menu, _MARK_ALLOCATED); } else { menu->mark = old_mark; - menu->marklen = (old_mark != 0) ? strlen(old_mark) : 0; + menu->marklen = (short)((old_mark != 0) ? strlen(old_mark) : 0); RETURN(E_SYSTEM_ERROR); } } @@ -258,15 +260,15 @@ set_menu_mark(MENU * menu, const char *mark) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : char *menu_mark(const MENU *menu) -| +| | Description : Return a pointer to the marker string | | Return Values : The marker string pointer or NULL if no marker defined +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(const char *) -menu_mark(const MENU * menu) +MENU_EXPORT(const char *) +menu_mark(const MENU *menu) { T((T_CALLED("menu_mark(%p)"), (const void *)menu)); returnPtr(Normalize_Menu(menu)->mark); diff --git a/deps/ncurses-5.9/menu/m_item_opt.c b/deps/ncurses-6.3/menu/m_item_opt.c similarity index 89% rename from deps/ncurses-5.9/menu/m_item_opt.c rename to deps/ncurses-6.3/menu/m_item_opt.c index 91385da..495e409 100644 --- a/deps/ncurses-5.9/menu/m_item_opt.c +++ b/deps/ncurses-6.3/menu/m_item_opt.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,12 +38,12 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_opt.c,v 1.18 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_item_opt.c,v 1.22 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu -| Function : int set_item_opts(ITEM *item, Item_Options opts) -| +| Facility : libnmenu +| Function : int set_item_opts(ITEM *item, Item_Options opts) +| | Description : Set the options of the item. If there are relevant | changes, the item is connected and the menu is posted, | the menu will be redisplayed. @@ -50,8 +51,8 @@ MODULE_ID("$Id: m_item_opt.c,v 1.18 2010/01/23 21:20:10 tom Exp $") | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid item options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_item_opts(ITEM * item, Item_Options opts) +MENU_EXPORT(int) +set_item_opts(ITEM *item, Item_Options opts) { T((T_CALLED("set_menu_opts(%p,%d)"), (void *)item, opts)); @@ -85,16 +86,16 @@ set_item_opts(ITEM * item, Item_Options opts) } /*--------------------------------------------------------------------------- -| Facility : libnmenu -| Function : int item_opts_off(ITEM *item, Item_Options opts) -| +| Facility : libnmenu +| Function : int item_opts_off(ITEM *item, Item_Options opts) +| | Description : Switch of the options for this item. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -item_opts_off(ITEM * item, Item_Options opts) +MENU_EXPORT(int) +item_opts_off(ITEM *item, Item_Options opts) { ITEM *citem = item; /* use a copy because set_item_opts must detect @@ -113,16 +114,16 @@ item_opts_off(ITEM * item, Item_Options opts) } /*--------------------------------------------------------------------------- -| Facility : libnmenu -| Function : int item_opts_on(ITEM *item, Item_Options opts) -| +| Facility : libnmenu +| Function : int item_opts_on(ITEM *item, Item_Options opts) +| | Description : Switch on the options for this item. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -item_opts_on(ITEM * item, Item_Options opts) +MENU_EXPORT(int) +item_opts_on(ITEM *item, Item_Options opts) { ITEM *citem = item; /* use a copy because set_item_opts must detect @@ -142,15 +143,15 @@ item_opts_on(ITEM * item, Item_Options opts) } /*--------------------------------------------------------------------------- -| Facility : libnmenu -| Function : Item_Options item_opts(const ITEM *item) -| +| Facility : libnmenu +| Function : Item_Options item_opts(const ITEM *item) +| | Description : Switch of the options for this item. | | Return Values : Items options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(Item_Options) -item_opts(const ITEM * item) +MENU_EXPORT(Item_Options) +item_opts(const ITEM *item) { T((T_CALLED("item_opts(%p)"), (const void *)item)); returnItemOpts(ALL_ITEM_OPTS & Normalize_Item(item)->opt); diff --git a/deps/ncurses-5.9/menu/m_item_top.c b/deps/ncurses-6.3/menu/m_item_top.c similarity index 91% rename from deps/ncurses-5.9/menu/m_item_top.c rename to deps/ncurses-6.3/menu/m_item_top.c index 752e20d..68303c7 100644 --- a/deps/ncurses-5.9/menu/m_item_top.c +++ b/deps/ncurses-6.3/menu/m_item_top.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,30 +38,28 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_top.c,v 1.11 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_item_top.c,v 1.16 2021/06/17 21:11:08 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_top_row(MENU *menu, int row) -| +| | Description : Makes the specified row the top row in the menu | | Return Values : E_OK - success | E_BAD_ARGUMENT - not a menu pointer or invalid row | E_NOT_CONNECTED - there are no items for the menu +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_top_row(MENU * menu, int row) +MENU_EXPORT(int) +set_top_row(MENU *menu, int row) { - ITEM *item; - T((T_CALLED("set_top_row(%p,%d)"), (void *)menu, row)); if (menu) { if (menu->status & _IN_DRIVER) RETURN(E_BAD_STATE); - if (menu->items == (ITEM **) 0) + if (menu->items == (ITEM **)0) RETURN(E_NOT_CONNECTED); if ((row < 0) || (row > (menu->rows - menu->arows))) @@ -71,6 +70,8 @@ set_top_row(MENU * menu, int row) if (row != menu->toprow) { + ITEM *item; + if (menu->status & _LINK_NEEDED) _nc_Link_Items(menu); @@ -84,15 +85,15 @@ set_top_row(MENU * menu, int row) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int top_row(const MENU *) -| +| | Description : Return the top row of the menu | | Return Values : The row number or ERR if there is no row +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -top_row(const MENU * menu) +MENU_EXPORT(int) +top_row(const MENU *menu) { T((T_CALLED("top_row(%p)"), (const void *)menu)); if (menu && menu->items && *(menu->items)) diff --git a/deps/ncurses-5.9/menu/m_item_use.c b/deps/ncurses-6.3/menu/m_item_use.c similarity index 88% rename from deps/ncurses-5.9/menu/m_item_use.c rename to deps/ncurses-6.3/menu/m_item_use.c index 8cf294b..52d087e 100644 --- a/deps/ncurses-5.9/menu/m_item_use.c +++ b/deps/ncurses-6.3/menu/m_item_use.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,19 +38,19 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_use.c,v 1.17 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_item_use.c,v 1.21 2020/12/12 00:38:08 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_item_userptr(ITEM *item, void *userptr) -| +| | Description : Set the pointer that is reserved in any item to store -| application relevant informations. +| application relevant information. | | Return Values : E_OK - success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_item_userptr(ITEM * item, void *userptr) +MENU_EXPORT(int) +set_item_userptr(ITEM *item, void *userptr) { T((T_CALLED("set_item_userptr(%p,%p)"), (void *)item, (void *)userptr)); Normalize_Item(item)->userptr = userptr; @@ -57,17 +58,17 @@ set_item_userptr(ITEM * item, void *userptr) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void *item_userptr(const ITEM *item) -| +| | Description : Return the pointer that is reserved in any item to store -| application relevant informations. +| application relevant information. | | Return Values : Value of the pointer. If no such pointer has been set, | NULL is returned. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) -item_userptr(const ITEM * item) +MENU_EXPORT(void *) +item_userptr(const ITEM *item) { T((T_CALLED("item_userptr(%p)"), (const void *)item)); returnVoidPtr(Normalize_Item(item)->userptr); diff --git a/deps/ncurses-5.9/menu/m_item_val.c b/deps/ncurses-6.3/menu/m_item_val.c similarity index 90% rename from deps/ncurses-5.9/menu/m_item_val.c rename to deps/ncurses-6.3/menu/m_item_val.c index 337dbfc..3163f4b 100644 --- a/deps/ncurses-5.9/menu/m_item_val.c +++ b/deps/ncurses-6.3/menu/m_item_val.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,30 +38,28 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_val.c,v 1.15 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_item_val.c,v 1.20 2021/06/17 21:11:08 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_item_value(ITEM *item, int value) -| +| | Description : Programmatically set the item's selection value. This is | only allowed if the item is selectable at all and if | it is not connected to a single-valued menu. | If the item is connected to a posted menu, the menu -| will be redisplayed. +| will be redisplayed. | | Return Values : E_OK - success | E_REQUEST_DENIED - not selectable or single valued menu +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_item_value(ITEM * item, bool value) +MENU_EXPORT(int) +set_item_value(ITEM *item, bool value) { - MENU *menu; - T((T_CALLED("set_item_value(%p,%d)"), (void *)item, value)); if (item) { - menu = item->imenu; + MENU *menu = item->imenu; if ((!(item->opt & O_SELECTABLE)) || (menu && (menu->opt & O_ONEVALUE))) @@ -86,16 +85,16 @@ set_item_value(ITEM * item, bool value) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : bool item_value(const ITEM *item) -| +| | Description : Return the selection value of the item | | Return Values : TRUE - if item is selected | FALSE - if item is not selected +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -item_value(const ITEM * item) +MENU_EXPORT(bool) +item_value(const ITEM *item) { T((T_CALLED("item_value(%p)"), (const void *)item)); returnBool((Normalize_Item(item)->value) ? TRUE : FALSE); diff --git a/deps/ncurses-5.9/menu/m_item_vis.c b/deps/ncurses-6.3/menu/m_item_vis.c similarity index 92% rename from deps/ncurses-5.9/menu/m_item_vis.c rename to deps/ncurses-6.3/menu/m_item_vis.c index ff84740..9ae4fdb 100644 --- a/deps/ncurses-5.9/menu/m_item_vis.c +++ b/deps/ncurses-6.3/menu/m_item_vis.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,20 +38,20 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_item_vis.c,v 1.16 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_item_vis.c,v 1.20 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : bool item_visible(const ITEM *item) -| +| | Description : A item is visible if it currently appears in the | subwindow of a posted menu. | | Return Values : TRUE if visible | FALSE if invisible +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(bool) -item_visible(const ITEM * item) +MENU_EXPORT(bool) +item_visible(const ITEM *item) { MENU *menu; diff --git a/deps/ncurses-5.9/menu/m_items.c b/deps/ncurses-6.3/menu/m_items.c similarity index 88% rename from deps/ncurses-5.9/menu/m_items.c rename to deps/ncurses-6.3/menu/m_items.c index 5397685..ecc5e2f 100644 --- a/deps/ncurses-5.9/menu/m_items.c +++ b/deps/ncurses-6.3/menu/m_items.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2005,2010 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 * @@ -37,12 +38,12 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_items.c,v 1.17 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_items.c,v 1.21 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_items(MENU *menu, ITEM **items) -| +| | Description : Sets the item pointer array connected to menu. | | Return Values : E_OK - success @@ -52,8 +53,8 @@ MODULE_ID("$Id: m_items.c,v 1.17 2010/01/23 21:20:10 tom Exp $") | E_BAD_ARGUMENT - An incorrect menu or item array was | passed to the function +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_items(MENU * menu, ITEM ** items) +MENU_EXPORT(int) +set_menu_items(MENU *menu, ITEM **items) { T((T_CALLED("set_menu_items(%p,%p)"), (void *)menu, (void *)items)); @@ -77,31 +78,31 @@ set_menu_items(MENU * menu, ITEM ** items) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : ITEM **menu_items(const MENU *menu) -| +| | Description : Returns a pointer to the item pointer array of the menu | | Return Values : NULL on error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(ITEM **) -menu_items(const MENU * menu) +MENU_EXPORT(ITEM **) +menu_items(const MENU *menu) { T((T_CALLED("menu_items(%p)"), (const void *)menu)); - returnItemPtr(menu ? menu->items : (ITEM **) 0); + returnItemPtr(menu ? menu->items : (ITEM **)0); } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int item_count(const MENU *menu) -| +| | Description : Get the number of items connected to the menu. If the -| menu pointer is NULL we return -1. +| menu pointer is NULL we return -1. | | Return Values : Number of items or -1 to indicate error. +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -item_count(const MENU * menu) +MENU_EXPORT(int) +item_count(const MENU *menu) { T((T_CALLED("item_count(%p)"), (const void *)menu)); returnCode(menu ? menu->nitems : -1); diff --git a/deps/ncurses-5.9/menu/m_new.c b/deps/ncurses-6.3/menu/m_new.c similarity index 90% rename from deps/ncurses-5.9/menu/m_new.c rename to deps/ncurses-6.3/menu/m_new.c index 79f9292..be17558 100644 --- a/deps/ncurses-5.9/menu/m_new.c +++ b/deps/ncurses-6.3/menu/m_new.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -37,12 +38,12 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_new.c,v 1.21 2010/01/23 21:20:11 tom Exp $") +MODULE_ID("$Id: m_new.c,v 1.27 2021/06/17 21:26:02 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : MENU* _nc_new_menu(SCREEN*, ITEM **items) -| +| | Description : Creates a new menu connected to the item pointer | array items and returns a pointer to the new menu. | The new menu is initialized with the values from the @@ -50,8 +51,8 @@ MODULE_ID("$Id: m_new.c,v 1.21 2010/01/23 21:20:11 tom Exp $") | | Return Values : NULL on error +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(MENU *) -NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items) +MENU_EXPORT(MENU *) +NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM **items) { int err = E_SYSTEM_ERROR; MENU *menu = typeCalloc(MENU, 1); @@ -59,6 +60,7 @@ NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items) T((T_CALLED("new_menu(%p,%p)"), (void *)SP_PARM, (void *)items)); if (menu) { + T((T_CREATE("menu %p"), (void *)menu)); *menu = _nc_Default_Menu; menu->status = 0; menu->rows = menu->frows; @@ -76,7 +78,7 @@ NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items) { err = E_NOT_CONNECTED; free(menu); - menu = (MENU *) 0; + menu = (MENU *)0; } else err = E_OK; @@ -90,9 +92,9 @@ NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : MENU *new_menu(ITEM **items) -| +| | Description : Creates a new menu connected to the item pointer | array items and returns a pointer to the new menu. | The new menu is initialized with the values from the @@ -101,26 +103,26 @@ NCURSES_SP_NAME(new_menu) (NCURSES_SP_DCLx ITEM ** items) | Return Values : NULL on error +--------------------------------------------------------------------------*/ #if NCURSES_SP_FUNCS -NCURSES_EXPORT(MENU *) -new_menu(ITEM ** items) +MENU_EXPORT(MENU *) +new_menu(ITEM **items) { return NCURSES_SP_NAME(new_menu) (CURRENT_SCREEN, items); } #endif /*--------------------------------------------------------------------------- -| Facility : libnmenu -| Function : int free_menu(MENU *menu) -| -| Description : Disconnects menu from its associated item pointer +| Facility : libnmenu +| Function : int free_menu(MENU *menu) +| +| Description : Disconnects menu from its associated item pointer | array and frees the storage allocated for the menu. | | Return Values : E_OK - success | E_BAD_ARGUMENT - Invalid menu pointer passed | E_POSTED - Menu is already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -free_menu(MENU * menu) +MENU_EXPORT(int) +free_menu(MENU *menu) { T((T_CALLED("free_menu(%p)"), (void *)menu)); if (!menu) diff --git a/deps/ncurses-5.9/menu/m_opts.c b/deps/ncurses-6.3/menu/m_opts.c similarity index 93% rename from deps/ncurses-5.9/menu/m_opts.c rename to deps/ncurses-6.3/menu/m_opts.c index bc6924b..bbf9459 100644 --- a/deps/ncurses-5.9/menu/m_opts.c +++ b/deps/ncurses-6.3/menu/m_opts.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_opts.c,v 1.20 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_opts.c,v 1.23 2020/12/12 00:38:08 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -52,8 +53,8 @@ MODULE_ID("$Id: m_opts.c,v 1.20 2010/01/23 21:20:10 tom Exp $") | E_BAD_ARGUMENT - invalid menu options | E_POSTED - menu is already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_opts(MENU * menu, Menu_Options opts) +MENU_EXPORT(int) +set_menu_opts(MENU *menu, Menu_Options opts) { T((T_CALLED("set_menu_opts(%p,%d)"), (void *)menu, opts)); @@ -85,7 +86,7 @@ set_menu_opts(MENU * menu, Menu_Options opts) { ITEM **item; - if (((item = menu->items) != (ITEM **) 0)) + if (((item = menu->items) != (ITEM **)0)) for (; *item; item++) (*item)->value = FALSE; } @@ -112,8 +113,8 @@ set_menu_opts(MENU * menu, Menu_Options opts) | E_BAD_ARGUMENT - invalid options | E_POSTED - menu is already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -menu_opts_off(MENU * menu, Menu_Options opts) +MENU_EXPORT(int) +menu_opts_off(MENU *menu, Menu_Options opts) { MENU *cmenu = menu; /* use a copy because set_menu_opts must detect @@ -145,8 +146,8 @@ menu_opts_off(MENU * menu, Menu_Options opts) | E_BAD_ARGUMENT - invalid menu options | E_POSTED - menu is already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -menu_opts_on(MENU * menu, Menu_Options opts) +MENU_EXPORT(int) +menu_opts_on(MENU *menu, Menu_Options opts) { MENU *cmenu = menu; /* use a copy because set_menu_opts must detect @@ -173,8 +174,8 @@ menu_opts_on(MENU * menu, Menu_Options opts) | | Return Values : Menu options +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(Menu_Options) -menu_opts(const MENU * menu) +MENU_EXPORT(Menu_Options) +menu_opts(const MENU *menu) { T((T_CALLED("menu_opts(%p)"), (const void *)menu)); returnMenuOpts(ALL_MENU_OPTS & Normalize_Menu(menu)->opt); diff --git a/deps/ncurses-5.9/menu/m_pad.c b/deps/ncurses-6.3/menu/m_pad.c similarity index 89% rename from deps/ncurses-5.9/menu/m_pad.c rename to deps/ncurses-6.3/menu/m_pad.c index caa2f9e..008e19a 100644 --- a/deps/ncurses-5.9/menu/m_pad.c +++ b/deps/ncurses-6.3/menu/m_pad.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_pad.c,v 1.12 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_pad.c,v 1.17 2021/06/17 21:20:30 tom Exp $") /* Macro to redraw menu if it is posted and changed */ #define Refresh_Menu(menu) \ @@ -48,20 +49,20 @@ MODULE_ID("$Id: m_pad.c,v 1.12 2010/01/23 21:20:10 tom Exp $") } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_pad(MENU* menu, int pad) -| +| | Description : Set the character to be used to separate the item name -| from its description. This must be a printable +| from its description. This must be a printable | character. | | Return Values : E_OK - success | E_BAD_ARGUMENT - an invalid value has been passed +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_pad(MENU * menu, int pad) +MENU_EXPORT(int) +set_menu_pad(MENU *menu, int pad) { - bool do_refresh = (menu != (MENU *) 0); + bool do_refresh = (menu != (MENU *)0); T((T_CALLED("set_menu_pad(%p,%d)"), (void *)menu, pad)); @@ -69,7 +70,7 @@ set_menu_pad(MENU * menu, int pad) RETURN(E_BAD_ARGUMENT); Normalize_Menu(menu); - menu->pad = pad; + menu->pad = (unsigned char)pad; if (do_refresh) Refresh_Menu(menu); @@ -78,15 +79,15 @@ set_menu_pad(MENU * menu, int pad) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int menu_pad(const MENU *menu) -| +| | Description : Return the value of the padding character | | Return Values : The pad character +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -menu_pad(const MENU * menu) +MENU_EXPORT(int) +menu_pad(const MENU *menu) { T((T_CALLED("menu_pad(%p)"), (const void *)menu)); returnCode(Normalize_Menu(menu)->pad); diff --git a/deps/ncurses-5.9/menu/m_pattern.c b/deps/ncurses-6.3/menu/m_pattern.c similarity index 92% rename from deps/ncurses-5.9/menu/m_pattern.c rename to deps/ncurses-6.3/menu/m_pattern.c index 1764d05..6fbef23 100644 --- a/deps/ncurses-5.9/menu/m_pattern.c +++ b/deps/ncurses-6.3/menu/m_pattern.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2006,2010 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 * @@ -37,12 +38,12 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_pattern.c,v 1.16 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_pattern.c,v 1.20 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : char *menu_pattern(const MENU *menu) -| +| | Description : Return the value of the pattern buffer. | | Return Values : NULL - if there is no pattern buffer allocated @@ -50,8 +51,8 @@ MODULE_ID("$Id: m_pattern.c,v 1.16 2010/01/23 21:20:10 tom Exp $") | pattern is stored | PatternString - as expected +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(char *) -menu_pattern(const MENU * menu) +MENU_EXPORT(char *) +menu_pattern(const MENU *menu) { static char empty[] = ""; @@ -60,9 +61,9 @@ menu_pattern(const MENU * menu) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_pattern(MENU *menu, const char *p) -| +| | Description : Set the match pattern for a menu and position to the | first item that matches. | @@ -72,8 +73,8 @@ menu_pattern(const MENU * menu) | E_NOT_CONNECTED - no items connected to menu | E_NO_MATCH - no item matches pattern +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_pattern(MENU * menu, const char *p) +MENU_EXPORT(int) +set_menu_pattern(MENU *menu, const char *p) { ITEM *matchitem; int matchpos; diff --git a/deps/ncurses-5.9/menu/m_post.c b/deps/ncurses-6.3/menu/m_post.c similarity index 82% rename from deps/ncurses-5.9/menu/m_post.c rename to deps/ncurses-6.3/menu/m_post.c index 1f0b623..1dbd6b8 100644 --- a/deps/ncurses-5.9/menu/m_post.c +++ b/deps/ncurses-6.3/menu/m_post.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_post.c,v 1.29 2010/05/01 19:18:27 tom Exp $") +MODULE_ID("$Id: m_post.c,v 1.36 2021/05/08 20:20:01 tom Exp $") /*--------------------------------------------------------------------------- | Facility : libnmenu @@ -48,8 +49,8 @@ MODULE_ID("$Id: m_post.c,v 1.29 2010/05/01 19:18:27 tom Exp $") | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Post_Item(const MENU * menu, const ITEM * item) +MENU_EXPORT(void) +_nc_Post_Item(const MENU *menu, const ITEM *item) { int i; chtype ch; @@ -57,7 +58,6 @@ _nc_Post_Item(const MENU * menu, const ITEM * item) int count = 0; bool isfore = FALSE, isback = FALSE, isgrey = FALSE; int name_len; - int desc_len; assert(menu->win); @@ -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, menu->back); + wattron(menu->win, (int)menu->back); 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, menu->fore); + wattron(menu->win, (int)menu->fore); isfore = TRUE; } waddstr(menu->win, menu->mark); if (isfore) { - wattron(menu->win, menu->fore); + wattron(menu->win, (int)menu->fore); 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, menu->back); + wattroff(menu->win, (int)menu->back); 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, menu->grey); + wattron(menu->win, (int)menu->grey); isgrey = TRUE; } else { if (item->value || item == menu->curitem) { - wattron(menu->win, menu->fore); + wattron(menu->win, (int)menu->fore); isfore = TRUE; } else { - wattron(menu->win, menu->back); + wattron(menu->win, (int)menu->back); isback = TRUE; } } @@ -131,6 +131,7 @@ _nc_Post_Item(const MENU * menu, const ITEM * item) { int m = menu->spc_desc / 2; int cy = -1, cx = -1; + int desc_len; for (ch = ' ', i = 0; i < menu->spc_desc; i++) { @@ -158,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, menu->grey); + wattroff(menu->win, (int)menu->grey); else if (isfore) - wattroff(menu->win, menu->fore); - wattron(menu->win, menu->back); + wattroff(menu->win, (int)menu->fore); + wattron(menu->win, (int)menu->back); for (j = 1; j < menu->spc_rows; j++) { if ((item_y + j) < getmaxy(menu->win)) @@ -175,17 +176,17 @@ _nc_Post_Item(const MENU * menu, const ITEM * item) } wmove(menu->win, ncy, ncx); if (!isback) - wattroff(menu->win, menu->back); + wattroff(menu->win, (int)menu->back); } } /* Remove attributes */ if (isfore) - wattroff(menu->win, menu->fore); + wattroff(menu->win, (int)menu->fore); if (isback) - wattroff(menu->win, menu->back); + wattroff(menu->win, (int)menu->back); if (isgrey) - wattroff(menu->win, menu->grey); + wattroff(menu->win, (int)menu->grey); } /*--------------------------------------------------------------------------- @@ -196,11 +197,11 @@ _nc_Post_Item(const MENU * menu, const ITEM * item) | | Return Values : - +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void) -_nc_Draw_Menu(const MENU * menu) +MENU_EXPORT(void) +_nc_Draw_Menu(const MENU *menu) { ITEM *item = menu->items[0]; - ITEM *lasthor, *lastvert; + ITEM *lastvert; ITEM *hitem; int y = 0; chtype s_bkgd; @@ -212,45 +213,50 @@ _nc_Draw_Menu(const MENU * menu) werase(menu->win); wbkgdset(menu->win, s_bkgd); - lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : item; + lastvert = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : item; - do + if (item != NULL) { - wmove(menu->win, y, 0); - - hitem = item; - lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *) 0 : hitem; - do { - _nc_Post_Item(menu, hitem); + ITEM *lasthor; + + wmove(menu->win, y, 0); - wattron(menu->win, menu->back); - if (((hitem = hitem->right) != lasthor) && hitem) + hitem = item; + lasthor = (menu->opt & O_NONCYCLIC) ? (ITEM *)0 : hitem; + + do { - int i, j, cy, cx; - chtype ch = ' '; + _nc_Post_Item(menu, hitem); - getyx(menu->win, cy, cx); - for (j = 0; j < menu->spc_rows; j++) + wattron(menu->win, (int)menu->back); + if (((hitem = hitem->right) != lasthor) && hitem) { - wmove(menu->win, cy + j, cx); - for (i = 0; i < menu->spc_cols; i++) + int i, j, cy, cx; + chtype ch = ' '; + + getyx(menu->win, cy, cx); + for (j = 0; j < menu->spc_rows; j++) { - waddch(menu->win, ch); + wmove(menu->win, cy + j, cx); + for (i = 0; i < menu->spc_cols; i++) + { + waddch(menu->win, ch); + } } + wmove(menu->win, cy, cx + menu->spc_cols); } - wmove(menu->win, cy, cx + menu->spc_cols); } - } - while (hitem && (hitem != lasthor)); - wattroff(menu->win, menu->back); + while (hitem && (hitem != lasthor)); + wattroff(menu->win, (int)menu->back); - item = item->down; - y += menu->spc_rows; + item = item->down; + y += menu->spc_rows; + } + while (item && (item != lastvert)); } - while (item && (item != lastvert)); } /*--------------------------------------------------------------------------- @@ -266,8 +272,8 @@ _nc_Draw_Menu(const MENU * menu) | E_BAD_STATE - Menu in userexit routine | E_POSTED - Menu already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -post_menu(MENU * menu) +MENU_EXPORT(int) +post_menu(MENU *menu) { T((T_CALLED("post_menu(%p)"), (void *)menu)); @@ -282,7 +288,6 @@ post_menu(MENU * menu) if (menu->items && *(menu->items)) { - int y; int h = 1 + menu->spc_rows * (menu->rows - 1); WINDOW *win = Get_Menu_Window(menu); @@ -290,7 +295,8 @@ post_menu(MENU * menu) if ((menu->win = newpad(h, menu->width))) { - y = (maxy >= h) ? h : maxy; + int y = (maxy >= h) ? h : maxy; + if (y >= menu->height) y = menu->height; if (!(menu->sub = subpad(menu->win, y, menu->width, 0, 0))) @@ -305,7 +311,7 @@ post_menu(MENU * menu) else RETURN(E_NOT_CONNECTED); - menu->status |= _POSTED; + SetStatus(menu, _POSTED); if (!(menu->opt & O_ONEVALUE)) { @@ -338,8 +344,8 @@ post_menu(MENU * menu) | E_BAD_STATE - menu in userexit routine | E_NOT_POSTED - menu is not posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -unpost_menu(MENU * menu) +MENU_EXPORT(int) +unpost_menu(MENU *menu) { WINDOW *win; @@ -369,7 +375,7 @@ unpost_menu(MENU * menu) delwin(menu->win); menu->win = (WINDOW *)0; - menu->status &= ~_POSTED; + ClrStatus(menu, _POSTED); RETURN(E_OK); } diff --git a/deps/ncurses-5.9/menu/m_req_name.c b/deps/ncurses-6.3/menu/m_req_name.c similarity index 80% rename from deps/ncurses-5.9/menu/m_req_name.c rename to deps/ncurses-6.3/menu/m_req_name.c index cad8758..c72116f 100644 --- a/deps/ncurses-5.9/menu/m_req_name.c +++ b/deps/ncurses-6.3/menu/m_req_name.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2015 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 * @@ -37,41 +38,43 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_req_name.c,v 1.21 2009/10/10 16:17:23 tom Exp $") +MODULE_ID("$Id: m_req_name.c,v 1.27 2021/06/17 21:11:08 tom Exp $") -static const char *request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1] = +#define DATA(s) { s } + +static const char request_names[MAX_MENU_COMMAND - MIN_MENU_COMMAND + 1][14] = { - "LEFT_ITEM", - "RIGHT_ITEM", - "UP_ITEM", - "DOWN_ITEM", - "SCR_ULINE", - "SCR_DLINE", - "SCR_DPAGE", - "SCR_UPAGE", - "FIRST_ITEM", - "LAST_ITEM", - "NEXT_ITEM", - "PREV_ITEM", - "TOGGLE_ITEM", - "CLEAR_PATTERN", - "BACK_PATTERN", - "NEXT_MATCH", - "PREV_MATCH" + DATA("LEFT_ITEM"), + DATA("RIGHT_ITEM"), + DATA("UP_ITEM"), + DATA("DOWN_ITEM"), + DATA("SCR_ULINE"), + DATA("SCR_DLINE"), + DATA("SCR_DPAGE"), + DATA("SCR_UPAGE"), + DATA("FIRST_ITEM"), + DATA("LAST_ITEM"), + DATA("NEXT_ITEM"), + DATA("PREV_ITEM"), + DATA("TOGGLE_ITEM"), + DATA("CLEAR_PATTERN"), + DATA("BACK_PATTERN"), + DATA("NEXT_MATCH"), + DATA("PREV_MATCH") }; #define A_SIZE (sizeof(request_names)/sizeof(request_names[0])) /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : const char * menu_request_name (int request); -| +| | Description : Get the external name of a menu request. | | Return Values : Pointer to name - on success | NULL - on invalid request code +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(const char *) +MENU_EXPORT(const char *) menu_request_name(int request) { T((T_CALLED("menu_request_name(%d)"), request)); @@ -85,37 +88,41 @@ menu_request_name(int request) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int menu_request_by_name (const char *str); -| +| | Description : Search for a request with this name. | | Return Values : Request Id - on success | E_NO_MATCH - request not found +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) +MENU_EXPORT(int) menu_request_by_name(const char *str) { /* because the table is so small, it doesn't really hurt to run sequentially through it. */ - unsigned int i = 0; - char buf[16]; + size_t i = 0; T((T_CALLED("menu_request_by_name(%s)"), _nc_visbuf(str))); - if (str) + if (str != 0 && (i = strlen(str)) != 0) { - strncpy(buf, str, sizeof(buf)); - while ((i < sizeof(buf)) && (buf[i] != '\0')) + char buf[16]; + + if (i > sizeof(buf) - 2) + i = sizeof(buf) - 2; + memcpy(buf, str, i); + buf[i] = '\0'; + + for (i = 0; buf[i] != '\0'; ++i) { buf[i] = (char)toupper(UChar(buf[i])); - i++; } for (i = 0; i < A_SIZE; i++) { - if (strncmp(request_names[i], buf, sizeof(buf)) == 0) + if (strcmp(request_names[i], buf) == 0) returnCode(MIN_MENU_COMMAND + (int)i); } } diff --git a/deps/ncurses-5.9/menu/m_scale.c b/deps/ncurses-6.3/menu/m_scale.c similarity index 90% rename from deps/ncurses-5.9/menu/m_scale.c rename to deps/ncurses-6.3/menu/m_scale.c index 068a1cc..9e7f81d 100644 --- a/deps/ncurses-5.9/menu/m_scale.c +++ b/deps/ncurses-6.3/menu/m_scale.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,21 +38,21 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_scale.c,v 1.10 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_scale.c,v 1.14 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int scale_menu(const MENU *menu) -| +| | Description : Returns the minimum window size necessary for the -| subwindow of menu. +| subwindow of menu. | | Return Values : E_OK - success | E_BAD_ARGUMENT - invalid menu pointer | E_NOT_CONNECTED - no items are connected to menu +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -scale_menu(const MENU * menu, int *rows, int *cols) +MENU_EXPORT(int) +scale_menu(const MENU *menu, int *rows, int *cols) { T((T_CALLED("scale_menu(%p,%p,%p)"), (const void *)menu, diff --git a/deps/ncurses-5.9/menu/m_spacing.c b/deps/ncurses-6.3/menu/m_spacing.c similarity index 89% rename from deps/ncurses-5.9/menu/m_spacing.c rename to deps/ncurses-6.3/menu/m_spacing.c index 1cfa2e1..76f8d5c 100644 --- a/deps/ncurses-5.9/menu/m_spacing.c +++ b/deps/ncurses-6.3/menu/m_spacing.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -37,7 +38,7 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_spacing.c,v 1.18 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_spacing.c,v 1.22 2020/12/12 00:38:14 tom Exp $") #define MAX_SPC_DESC ((TABSIZE) ? (TABSIZE) : 8) #define MAX_SPC_COLS ((TABSIZE) ? (TABSIZE) : 8) @@ -51,8 +52,8 @@ MODULE_ID("$Id: m_spacing.c,v 1.18 2010/01/23 21:20:10 tom Exp $") | | Return Values : E_OK - on success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_spacing(MENU * menu, int s_desc, int s_row, int s_col) +MENU_EXPORT(int) +set_menu_spacing(MENU *menu, int s_desc, int s_row, int s_col) { MENU *m; /* split for ATAC workaround */ @@ -70,9 +71,9 @@ set_menu_spacing(MENU * menu, int s_desc, int s_row, int s_col) ((s_col < 0) || (s_col > MAX_SPC_COLS))) RETURN(E_BAD_ARGUMENT); - m->spc_desc = s_desc ? s_desc : 1; - m->spc_rows = s_row ? s_row : 1; - m->spc_cols = s_col ? s_col : 1; + m->spc_desc = (short)(s_desc ? s_desc : 1); + m->spc_rows = (short)(s_row ? s_row : 1); + m->spc_cols = (short)(s_col ? s_col : 1); _nc_Calculate_Item_Length_and_Width(m); RETURN(E_OK); @@ -86,8 +87,8 @@ set_menu_spacing(MENU * menu, int s_desc, int s_row, int s_col) | | Return Values : E_OK - on success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -menu_spacing(const MENU * menu, int *s_desc, int *s_row, int *s_col) +MENU_EXPORT(int) +menu_spacing(const MENU *menu, int *s_desc, int *s_row, int *s_col) { const MENU *m; /* split for ATAC workaround */ diff --git a/deps/ncurses-5.9/menu/m_sub.c b/deps/ncurses-6.3/menu/m_sub.c similarity index 91% rename from deps/ncurses-5.9/menu/m_sub.c rename to deps/ncurses-6.3/menu/m_sub.c index 37529a0..a055245 100644 --- a/deps/ncurses-5.9/menu/m_sub.c +++ b/deps/ncurses-6.3/menu/m_sub.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -37,19 +38,19 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_sub.c,v 1.12 2010/01/23 21:20:11 tom Exp $") +MODULE_ID("$Id: m_sub.c,v 1.16 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_sub(MENU *menu, WINDOW *win) -| +| | Description : Sets the subwindow of the menu. | | Return Values : E_OK - success | E_POSTED - menu is already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_sub(MENU * menu, WINDOW *win) +MENU_EXPORT(int) +set_menu_sub(MENU *menu, WINDOW *win) { T((T_CALLED("set_menu_sub(%p,%p)"), (void *)menu, (void *)win)); @@ -81,15 +82,15 @@ set_menu_sub(MENU * menu, WINDOW *win) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : WINDOW* menu_sub(const MENU *menu) -| +| | Description : Returns a pointer to the subwindow of the menu | | Return Values : NULL on error, otherwise a pointer to the window +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) -menu_sub(const MENU * menu) +MENU_EXPORT(WINDOW *) +menu_sub(const MENU *menu) { const MENU *m = Normalize_Menu(menu); diff --git a/deps/ncurses-5.9/menu/m_trace.c b/deps/ncurses-6.3/menu/m_trace.c similarity index 84% rename from deps/ncurses-5.9/menu/m_trace.c rename to deps/ncurses-6.3/menu/m_trace.c index 094ff86..331236c 100644 --- a/deps/ncurses-5.9/menu/m_trace.c +++ b/deps/ncurses-6.3/menu/m_trace.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2004-2005,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2004-2010,2016 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 * @@ -32,44 +33,45 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_trace.c,v 1.4 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_trace.c,v 1.9 2020/12/12 00:38:14 tom Exp $") -NCURSES_EXPORT(ITEM *) -_nc_retrace_item(ITEM * code) +MENU_EXPORT(ITEM *) +_nc_retrace_item(ITEM *code) { T((T_RETURN("%p"), (void *)code)); return code; } -NCURSES_EXPORT(ITEM **) -_nc_retrace_item_ptr(ITEM ** code) +MENU_EXPORT(ITEM **) +_nc_retrace_item_ptr(ITEM **code) { T((T_RETURN("%p"), (void *)code)); return code; } -NCURSES_EXPORT(Item_Options) +MENU_EXPORT(Item_Options) _nc_retrace_item_opts(Item_Options code) { T((T_RETURN("%d"), code)); return code; } -NCURSES_EXPORT(MENU *) -_nc_retrace_menu(MENU * code) +MENU_EXPORT(MENU *) +_nc_retrace_menu(MENU *code) { T((T_RETURN("%p"), (void *)code)); return code; } -NCURSES_EXPORT(Menu_Hook) +MENU_EXPORT(Menu_Hook) _nc_retrace_menu_hook(Menu_Hook code) { - T((T_RETURN("%p"), code)); + TR_FUNC_BFR(1); + T((T_RETURN("%s"), TR_FUNC_ARG(0, code))); return code; } -NCURSES_EXPORT(Menu_Options) +MENU_EXPORT(Menu_Options) _nc_retrace_menu_opts(Menu_Options code) { T((T_RETURN("%d"), code)); diff --git a/deps/ncurses-5.9/menu/m_userptr.c b/deps/ncurses-6.3/menu/m_userptr.c similarity index 87% rename from deps/ncurses-5.9/menu/m_userptr.c rename to deps/ncurses-6.3/menu/m_userptr.c index a7359c9..72f2d4c 100644 --- a/deps/ncurses-5.9/menu/m_userptr.c +++ b/deps/ncurses-6.3/menu/m_userptr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2004,2010 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 * @@ -37,19 +38,19 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_userptr.c,v 1.17 2010/01/23 21:20:10 tom Exp $") +MODULE_ID("$Id: m_userptr.c,v 1.21 2020/12/12 00:38:14 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_userptr(MENU *menu, void *userptr) -| +| | Description : Set the pointer that is reserved in any menu to store -| application relevant informations. +| application relevant information. | | Return Values : E_OK - success +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_userptr(MENU * menu, void *userptr) +MENU_EXPORT(int) +set_menu_userptr(MENU *menu, void *userptr) { T((T_CALLED("set_menu_userptr(%p,%p)"), (void *)menu, (void *)userptr)); Normalize_Menu(menu)->userptr = userptr; @@ -57,17 +58,17 @@ set_menu_userptr(MENU * menu, void *userptr) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : void *menu_userptr(const MENU *menu) -| +| | Description : Return the pointer that is reserved in any menu to -| store application relevant informations. +| store application relevant information. | | Return Values : Value of the pointer. If no such pointer has been set, | NULL is returned +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(void *) -menu_userptr(const MENU * menu) +MENU_EXPORT(void *) +menu_userptr(const MENU *menu) { T((T_CALLED("menu_userptr(%p)"), (const void *)menu)); returnVoidPtr(Normalize_Menu(menu)->userptr); diff --git a/deps/ncurses-5.9/menu/m_win.c b/deps/ncurses-6.3/menu/m_win.c similarity index 91% rename from deps/ncurses-5.9/menu/m_win.c rename to deps/ncurses-6.3/menu/m_win.c index d88fa67..4bb64e6 100644 --- a/deps/ncurses-5.9/menu/m_win.c +++ b/deps/ncurses-6.3/menu/m_win.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -37,19 +38,19 @@ #include "menu.priv.h" -MODULE_ID("$Id: m_win.c,v 1.17 2010/01/23 21:20:11 tom Exp $") +MODULE_ID("$Id: m_win.c,v 1.21 2021/06/17 21:20:30 tom Exp $") /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : int set_menu_win(MENU *menu, WINDOW *win) -| +| | Description : Sets the window of the menu. | | Return Values : E_OK - success | E_POSTED - menu is already posted +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(int) -set_menu_win(MENU * menu, WINDOW *win) +MENU_EXPORT(int) +set_menu_win(MENU *menu, WINDOW *win) { T((T_CALLED("set_menu_win(%p,%p)"), (void *)menu, (void *)win)); @@ -81,15 +82,15 @@ set_menu_win(MENU * menu, WINDOW *win) } /*--------------------------------------------------------------------------- -| Facility : libnmenu +| Facility : libnmenu | Function : WINDOW* menu_win(const MENU*) -| +| | Description : Returns pointer to the window of the menu | | Return Values : NULL on error, otherwise pointer to window +--------------------------------------------------------------------------*/ -NCURSES_EXPORT(WINDOW *) -menu_win(const MENU * menu) +MENU_EXPORT(WINDOW *) +menu_win(const MENU *menu) { const MENU *m = Normalize_Menu(menu); diff --git a/deps/ncurses-6.3/menu/menu.h b/deps/ncurses-6.3/menu/menu.h new file mode 100644 index 0000000..e5a5372 --- /dev/null +++ b/deps/ncurses-6.3/menu/menu.h @@ -0,0 +1,281 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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, 1995,1997 * + ****************************************************************************/ + +/* $Id: menu.h,v 1.26 2020/12/12 00:38:02 tom Exp $ */ + +#ifndef ETI_MENU +#define ETI_MENU + +#ifdef AMIGA +#define TEXT TEXT_ncurses +#endif + +#include <curses.h> +#include <eti.h> + +#ifdef __cplusplus +extern "C" +{ +#endif + +#if defined(BUILDING_MENU) +# define MENU_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT +#else +# define MENU_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT +#endif + +#define MENU_WRAPPED_VAR(type,name) extern MENU_IMPEXP type NCURSES_PUBLIC_VAR(name)(void) + +#define MENU_EXPORT(type) MENU_IMPEXP type NCURSES_API +#define MENU_EXPORT_VAR(type) MENU_IMPEXP type + + typedef int Menu_Options; + typedef int Item_Options; + +/* Menu options: */ +#define O_ONEVALUE (0x01) +#define O_SHOWDESC (0x02) +#define O_ROWMAJOR (0x04) +#define O_IGNORECASE (0x08) +#define O_SHOWMATCH (0x10) +#define O_NONCYCLIC (0x20) +#define O_MOUSE_MENU (0x40) + +/* Item options: */ +#define O_SELECTABLE (0x01) + +#if !NCURSES_OPAQUE_MENU + typedef struct + { + const char *str; + unsigned short length; + } + TEXT; +#endif /* !NCURSES_OPAQUE_MENU */ + + struct tagMENU; + + typedef struct tagITEM +#if !NCURSES_OPAQUE_MENU + { + TEXT name; /* name of menu item */ + TEXT description; /* description of item, optional in display */ + struct tagMENU *imenu; /* Pointer to parent menu */ + void *userptr; /* Pointer to user defined per item data */ + Item_Options opt; /* Item options */ + short index; /* Item number if connected to a menu */ + short y; /* y and x location of item in menu */ + short x; + bool value; /* Selection value */ + + struct tagITEM *left; /* neighbor items */ + struct tagITEM *right; + struct tagITEM *up; + struct tagITEM *down; + + } +#endif /* !NCURSES_OPAQUE_MENU */ + ITEM; + + typedef void (*Menu_Hook) (struct tagMENU *); + + typedef struct tagMENU +#if 1 /* not yet: !NCURSES_OPAQUE_MENU */ + { + short height; /* Nr. of chars high */ + short width; /* Nr. of chars wide */ + short rows; /* Nr. of items high */ + short cols; /* Nr. of items wide */ + short frows; /* Nr. of formatted items high */ + short fcols; /* Nr. of formatted items wide */ + short arows; /* Nr. of items high (actual) */ + short namelen; /* Max. name length */ + short desclen; /* Max. description length */ + short marklen; /* Length of mark, if any */ + short itemlen; /* Length of one item */ + short spc_desc; /* Spacing for descriptor */ + short spc_cols; /* Spacing for columns */ + short spc_rows; /* Spacing for rows */ + char *pattern; /* Buffer to store match chars */ + short pindex; /* Index into pattern buffer */ + WINDOW *win; /* Window containing menu */ + WINDOW *sub; /* Subwindow for menu display */ + WINDOW *userwin; /* User's window */ + WINDOW *usersub; /* User's subwindow */ + ITEM **items; /* array of items */ + short nitems; /* Nr. of items in menu */ + ITEM *curitem; /* Current item */ + short toprow; /* Top row of menu */ + chtype fore; /* Selection attribute */ + chtype back; /* Nonselection attribute */ + chtype grey; /* Inactive attribute */ + unsigned char pad; /* Pad character */ + + Menu_Hook menuinit; /* User hooks */ + Menu_Hook menuterm; + Menu_Hook iteminit; + Menu_Hook itemterm; + + void *userptr; /* Pointer to menus user data */ + char *mark; /* Pointer to marker string */ + + Menu_Options opt; /* Menu options */ + unsigned short status; /* Internal state of menu */ + } +#endif /* !NCURSES_OPAQUE_MENU */ + MENU; + +/* Define keys */ + +#define REQ_LEFT_ITEM (KEY_MAX + 1) +#define REQ_RIGHT_ITEM (KEY_MAX + 2) +#define REQ_UP_ITEM (KEY_MAX + 3) +#define REQ_DOWN_ITEM (KEY_MAX + 4) +#define REQ_SCR_ULINE (KEY_MAX + 5) +#define REQ_SCR_DLINE (KEY_MAX + 6) +#define REQ_SCR_DPAGE (KEY_MAX + 7) +#define REQ_SCR_UPAGE (KEY_MAX + 8) +#define REQ_FIRST_ITEM (KEY_MAX + 9) +#define REQ_LAST_ITEM (KEY_MAX + 10) +#define REQ_NEXT_ITEM (KEY_MAX + 11) +#define REQ_PREV_ITEM (KEY_MAX + 12) +#define REQ_TOGGLE_ITEM (KEY_MAX + 13) +#define REQ_CLEAR_PATTERN (KEY_MAX + 14) +#define REQ_BACK_PATTERN (KEY_MAX + 15) +#define REQ_NEXT_MATCH (KEY_MAX + 16) +#define REQ_PREV_MATCH (KEY_MAX + 17) + +#define MIN_MENU_COMMAND (KEY_MAX + 1) +#define MAX_MENU_COMMAND (KEY_MAX + 17) + +/* + * Some AT&T code expects MAX_COMMAND to be out-of-band not + * just for menu commands but for forms ones as well. + */ +#if defined(MAX_COMMAND) +# if (MAX_MENU_COMMAND > MAX_COMMAND) +# error Something is wrong -- MAX_MENU_COMMAND is greater than MAX_COMMAND +# elif (MAX_COMMAND != (KEY_MAX + 128)) +# error Something is wrong -- MAX_COMMAND is already inconsistently defined. +# endif +#else +# define MAX_COMMAND (KEY_MAX + 128) +#endif + +/* --------- prototypes for libmenu functions ----------------------------- */ + + extern MENU_EXPORT(ITEM **) menu_items(const MENU *); + extern MENU_EXPORT(ITEM *) current_item(const MENU *); + extern MENU_EXPORT(ITEM *) new_item(const char *, const char *); + + extern MENU_EXPORT(MENU *) new_menu(ITEM **); + + extern MENU_EXPORT(Item_Options) item_opts(const ITEM *); + extern MENU_EXPORT(Menu_Options) menu_opts(const MENU *); + + extern MENU_EXPORT(Menu_Hook) item_init(const MENU *); + extern MENU_EXPORT(Menu_Hook) item_term(const MENU *); + extern MENU_EXPORT(Menu_Hook) menu_init(const MENU *); + extern MENU_EXPORT(Menu_Hook) menu_term(const MENU *); + + extern MENU_EXPORT(WINDOW *) menu_sub(const MENU *); + extern MENU_EXPORT(WINDOW *) menu_win(const MENU *); + + extern MENU_EXPORT(const char *) item_description(const ITEM *); + extern MENU_EXPORT(const char *) item_name(const ITEM *); + extern MENU_EXPORT(const char *) menu_mark(const MENU *); + extern MENU_EXPORT(const char *) menu_request_name(int); + + extern MENU_EXPORT(char *) menu_pattern(const MENU *); + + extern MENU_EXPORT(void *) menu_userptr(const MENU *); + extern MENU_EXPORT(void *) item_userptr(const ITEM *); + + extern MENU_EXPORT(chtype) menu_back(const MENU *); + extern MENU_EXPORT(chtype) menu_fore(const MENU *); + extern MENU_EXPORT(chtype) menu_grey(const MENU *); + + extern MENU_EXPORT(int) free_item(ITEM *); + extern MENU_EXPORT(int) free_menu(MENU *); + extern MENU_EXPORT(int) item_count(const MENU *); + extern MENU_EXPORT(int) item_index(const ITEM *); + extern MENU_EXPORT(int) item_opts_off(ITEM *, Item_Options); + extern MENU_EXPORT(int) item_opts_on(ITEM *, Item_Options); + extern MENU_EXPORT(int) menu_driver(MENU *, int); + extern MENU_EXPORT(int) menu_opts_off(MENU *, Menu_Options); + extern MENU_EXPORT(int) menu_opts_on(MENU *, Menu_Options); + extern MENU_EXPORT(int) menu_pad(const MENU *); + extern MENU_EXPORT(int) pos_menu_cursor(const MENU *); + extern MENU_EXPORT(int) post_menu(MENU *); + extern MENU_EXPORT(int) scale_menu(const MENU *, int *, int *); + extern MENU_EXPORT(int) set_current_item(MENU *menu, ITEM *item); + extern MENU_EXPORT(int) set_item_init(MENU *, Menu_Hook); + extern MENU_EXPORT(int) set_item_opts(ITEM *, Item_Options); + extern MENU_EXPORT(int) set_item_term(MENU *, Menu_Hook); + extern MENU_EXPORT(int) set_item_userptr(ITEM *, void *); + extern MENU_EXPORT(int) set_item_value(ITEM *, bool); + extern MENU_EXPORT(int) set_menu_back(MENU *, chtype); + extern MENU_EXPORT(int) set_menu_fore(MENU *, chtype); + extern MENU_EXPORT(int) set_menu_format(MENU *, int, int); + extern MENU_EXPORT(int) set_menu_grey(MENU *, chtype); + extern MENU_EXPORT(int) set_menu_init(MENU *, Menu_Hook); + extern MENU_EXPORT(int) set_menu_items(MENU *, ITEM **); + extern MENU_EXPORT(int) set_menu_mark(MENU *, const char *); + extern MENU_EXPORT(int) set_menu_opts(MENU *, Menu_Options); + extern MENU_EXPORT(int) set_menu_pad(MENU *, int); + extern MENU_EXPORT(int) set_menu_pattern(MENU *, const char *); + extern MENU_EXPORT(int) set_menu_sub(MENU *, WINDOW *); + extern MENU_EXPORT(int) set_menu_term(MENU *, Menu_Hook); + extern MENU_EXPORT(int) set_menu_userptr(MENU *, void *); + extern MENU_EXPORT(int) set_menu_win(MENU *, WINDOW *); + extern MENU_EXPORT(int) set_top_row(MENU *, int); + extern MENU_EXPORT(int) top_row(const MENU *); + extern MENU_EXPORT(int) unpost_menu(MENU *); + extern MENU_EXPORT(int) menu_request_by_name(const char *); + extern MENU_EXPORT(int) set_menu_spacing(MENU *, int, int, int); + extern MENU_EXPORT(int) menu_spacing(const MENU *, int *, int *, int *); + + extern MENU_EXPORT(bool) item_value(const ITEM *); + extern MENU_EXPORT(bool) item_visible(const ITEM *); + + extern MENU_EXPORT(void) menu_format(const MENU *, int *, int *); + +#if NCURSES_SP_FUNCS + extern MENU_EXPORT(MENU *) NCURSES_SP_NAME(new_menu) (SCREEN *, ITEM **); +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* ETI_MENU */ diff --git a/deps/ncurses-6.3/menu/menu.priv.h b/deps/ncurses-6.3/menu/menu.priv.h new file mode 100644 index 0000000..0bc6147 --- /dev/null +++ b/deps/ncurses-6.3/menu/menu.priv.h @@ -0,0 +1,164 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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, 1995,1997 * + ****************************************************************************/ + +/* $Id: menu.priv.h,v 1.29 2020/05/24 01:40:20 anonymous.maarten Exp $ */ + +/*************************************************************************** +* Module menu.priv.h * +* Top level private header file for all libnmenu modules * +***************************************************************************/ + +#ifndef MENU_PRIV_H_incl +#define MENU_PRIV_H_incl 1 +/* *INDENT-OFF* */ + +#include "curses.priv.h" + +#define NCURSES_OPAQUE_MENU 0 + +#include "mf_common.h" +#include "menu.h" + +/* Backspace code */ +#define BS (8) + +extern MENU_EXPORT_VAR(ITEM) _nc_Default_Item; +extern MENU_EXPORT_VAR(MENU) _nc_Default_Menu; + +/* Normalize item to default if none was given */ +#define Normalize_Item( item ) ((item)=(item)?(item):&_nc_Default_Item) + +/* 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) + +/* Normalize menu window */ +#define Get_Menu_Window( menu ) \ + ((menu)->usersub ? (menu)->usersub : Get_Menu_UserWin(menu)) + +/* menu specific status flags */ +#define _LINK_NEEDED (0x04) +#define _MARK_ALLOCATED (0x08) + +#define ALL_MENU_OPTS ( \ + O_ONEVALUE | \ + O_SHOWDESC | \ + O_ROWMAJOR | \ + O_IGNORECASE | \ + O_SHOWMATCH | \ + O_NONCYCLIC | \ + O_MOUSE_MENU ) + +#define ALL_ITEM_OPTS (O_SELECTABLE) + +/* Move to the window position of an item and draw it */ +#define Move_And_Post_Item(menu,item) \ + {wmove((menu)->win,(menu)->spc_rows*(item)->y,((menu)->itemlen+(menu)->spc_cols)*(item)->x);\ + _nc_Post_Item((menu),(item));} + +#define Move_To_Current_Item(menu,item) \ + if ( (item) != (menu)->curitem)\ + {\ + Move_And_Post_Item(menu,item);\ + Move_And_Post_Item(menu,(menu)->curitem);\ + } + +/* This macro ensures, that the item becomes visible, if possible with the + specified row as the top row of the window. If this is not possible, + the top row will be adjusted and the value is stored in the row argument. +*/ +#define Adjust_Current_Item(menu,row,item) \ + { if ((item)->y < row) \ + row = (short) (item)->y; \ + if ( (item)->y >= (row + (menu)->arows) ) \ + row = (short) (( (item)->y < ((menu)->rows - row) ) \ + ? (item)->y \ + : (menu)->rows - (menu)->arows); \ + _nc_New_TopRow_and_CurrentItem(menu,row,item); } + +/* Reset the match pattern buffer */ +#define Reset_Pattern(menu) \ + { (menu)->pindex = 0; \ + (menu)->pattern[0] = '\0'; } + +#define UChar(c) ((unsigned char)(c)) + +/* Internal functions. */ +extern MENU_EXPORT(void) _nc_Draw_Menu (const MENU *); +extern MENU_EXPORT(void) _nc_Show_Menu (const MENU *); +extern MENU_EXPORT(void) _nc_Calculate_Item_Length_and_Width (MENU *); +extern MENU_EXPORT(int) _nc_Calculate_Text_Width(const TEXT *); +extern MENU_EXPORT(void) _nc_Post_Item (const MENU *, const ITEM *); +extern MENU_EXPORT(bool) _nc_Connect_Items (MENU *, ITEM **); +extern MENU_EXPORT(void) _nc_Disconnect_Items (MENU *); +extern MENU_EXPORT(void) _nc_New_TopRow_and_CurrentItem (MENU *,int, ITEM *); +extern MENU_EXPORT(void) _nc_Link_Items (MENU *); +extern MENU_EXPORT(int) _nc_Match_Next_Character_In_Item_Name (MENU*,int,ITEM**); +extern MENU_EXPORT(int) _nc_menu_cursor_pos (const MENU* menu, const ITEM* item, + int* pY, int* pX); + +#ifdef TRACE + +#define returnItem(code) TRACE_RETURN1(code,item) +#define returnItemPtr(code) TRACE_RETURN1(code,item_ptr) +#define returnItemOpts(code) TRACE_RETURN1(code,item_opts) +#define returnMenu(code) TRACE_RETURN1(code,menu) +#define returnMenuHook(code) TRACE_RETURN1(code,menu_hook) +#define returnMenuOpts(code) TRACE_RETURN1(code,menu_opts) + +extern MENU_EXPORT(ITEM *) _nc_retrace_item (ITEM *); +extern MENU_EXPORT(ITEM **) _nc_retrace_item_ptr (ITEM **); +extern MENU_EXPORT(Item_Options) _nc_retrace_item_opts (Item_Options); +extern MENU_EXPORT(MENU *) _nc_retrace_menu (MENU *); +extern MENU_EXPORT(Menu_Hook) _nc_retrace_menu_hook (Menu_Hook); +extern MENU_EXPORT(Menu_Options) _nc_retrace_menu_opts (Menu_Options); + +#else /* !TRACE */ + +#define returnItem(code) return code +#define returnItemPtr(code) return code +#define returnItemOpts(code) return code +#define returnMenu(code) return code +#define returnMenuHook(code) return code +#define returnMenuOpts(code) return code + +#endif /* TRACE/!TRACE */ +/* *INDENT-ON* */ + +#endif /* MENU_PRIV_H_incl */ diff --git a/deps/ncurses-6.3/menu/mf_common.h b/deps/ncurses-6.3/menu/mf_common.h new file mode 100644 index 0000000..fcbd565 --- /dev/null +++ b/deps/ncurses-6.3/menu/mf_common.h @@ -0,0 +1,98 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2005,2012 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, 1995,1997 * + ****************************************************************************/ + +/* $Id: mf_common.h,v 0.25 2020/02/02 23:34:34 tom Exp $ */ + +/* Common internal header for menu and form library */ + +#ifndef MF_COMMON_H_incl +#define MF_COMMON_H_incl 1 + +#include <ncurses_cfg.h> +#include <curses.h> + +#include <stdlib.h> +#include <sys/types.h> +#include <assert.h> +#include <string.h> +#include <ctype.h> +#include <errno.h> + +#if DECL_ERRNO +extern int errno; +#endif + +/* in case of debug version we ignore the suppression of assertions */ +#ifdef TRACE +# ifdef NDEBUG +# undef NDEBUG +# endif +#endif + +#include <nc_alloc.h> + +#if USE_RCS_IDS +#define MODULE_ID(id) static const char Ident[] = id; +#else +#define MODULE_ID(id) /*nothing */ +#endif + +/* Maximum regular 8-bit character code */ +#define MAX_REGULAR_CHARACTER (0xff) + +#define SET_ERROR(code) (errno=(code)) +#define GET_ERROR() (errno) + +#ifdef TRACE +#define RETURN(code) returnCode( SET_ERROR(code) ) +#else +#define RETURN(code) return( SET_ERROR(code) ) +#endif + +/* The few common values in the status fields for menus and forms */ +#define _POSTED (0x01U) /* menu or form is posted */ +#define _IN_DRIVER (0x02U) /* menu or form is processing hook routine */ + +#define SetStatus(target,mask) (target)->status |= (unsigned short) (mask) +#define ClrStatus(target,mask) (target)->status = (unsigned short) (target->status & (~mask)) + +/* Call object hook */ +#define Call_Hook( object, handler ) \ + if ( (object) != 0 && ((object)->handler) != (void *) 0 )\ + {\ + SetStatus(object, _IN_DRIVER);\ + (object)->handler(object);\ + ClrStatus(object, _IN_DRIVER);\ + } + +#endif /* MF_COMMON_H_incl */ diff --git a/deps/ncurses-6.3/menu/modules b/deps/ncurses-6.3/menu/modules new file mode 100644 index 0000000..80ffb35 --- /dev/null +++ b/deps/ncurses-6.3/menu/modules @@ -0,0 +1,64 @@ +# $Id: modules,v 1.19 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2006,2010 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: Thomas E. Dickey 1996-on +# + +@ base +# Library objects +m_attribs lib $(srcdir) $(HEADER_DEPS) +m_cursor lib $(srcdir) $(HEADER_DEPS) +m_driver lib $(srcdir) $(HEADER_DEPS) +m_format lib $(srcdir) $(HEADER_DEPS) +m_global lib $(srcdir) $(HEADER_DEPS) +m_hook lib $(srcdir) $(HEADER_DEPS) +m_item_cur lib $(srcdir) $(HEADER_DEPS) +m_item_nam lib $(srcdir) $(HEADER_DEPS) +m_item_new lib $(srcdir) $(HEADER_DEPS) +m_item_opt lib $(srcdir) $(HEADER_DEPS) +m_item_top lib $(srcdir) $(HEADER_DEPS) +m_item_use lib $(srcdir) $(HEADER_DEPS) +m_item_val lib $(srcdir) $(HEADER_DEPS) +m_item_vis lib $(srcdir) $(HEADER_DEPS) +m_items lib $(srcdir) $(HEADER_DEPS) +m_new lib $(srcdir) $(HEADER_DEPS) +m_opts lib $(srcdir) $(HEADER_DEPS) +m_pad lib $(srcdir) $(HEADER_DEPS) +m_pattern lib $(srcdir) $(HEADER_DEPS) +m_post lib $(srcdir) $(HEADER_DEPS) +m_req_name lib $(srcdir) $(HEADER_DEPS) +m_scale lib $(srcdir) $(HEADER_DEPS) +m_spacing lib $(srcdir) $(HEADER_DEPS) +m_sub lib $(srcdir) $(HEADER_DEPS) +m_trace lib $(srcdir) $(HEADER_DEPS) +m_userptr lib $(srcdir) $(HEADER_DEPS) +m_win lib $(srcdir) $(HEADER_DEPS) + +# vile:makemode diff --git a/deps/ncurses-6.3/misc/Makefile.in b/deps/ncurses-6.3/misc/Makefile.in new file mode 100644 index 0000000..befbb02 --- /dev/null +++ b/deps/ncurses-6.3/misc/Makefile.in @@ -0,0 +1,225 @@ +# $Id: Makefile.in,v 1.78 2021/07/03 19:07:50 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2016,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: Thomas E. Dickey 1996-on +# +# Makefile for ncurses miscellany directory +# +# This makes/installs the terminfo database +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". +# +# The rules are organized to produce the libraries for the configured models, +# and the programs with the configured default model. + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES : + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +CF_MFLAGS = @cf_cv_makeflags@ +@SET_MAKE@ + +DESTDIR = @DESTDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +tabsetdir = $(datadir)/tabset +ticdir = @TERMINFO@ +ticfile = $(ticdir).db +source = @TERMINFO_SRC@ + +INSTALL = @INSTALL@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ + +PKG_CONFIG_LIBDIR = @PKG_CONFIG_LIBDIR@ + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : depend +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.data +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.data +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +depend \ +sources :: + +@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@ $(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@ fi; done' ) +install.data :: + @echo "finished $@" + +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) + +# Make a list of the files that gen-pkgconfig might create: +@MAKE_PC_FILES@PC_FILES = \ +@MAKE_PC_FILES@ @LIB_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \ +@MAKE_PC_FILES@ @TINFO_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \ +@MAKE_PC_FILES@ @TICS_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \ +@MAKE_PC_FILES@ @PANEL_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \ +@MAKE_PC_FILES@ @MENU_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \ +@MAKE_PC_FILES@ @FORM_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc \ +@MAKE_PC_FILES@ @CXX_NAME@@USE_ARG_SUFFIX@@PC_MODULE_SUFFIX@.pc + +# some packagers prefer to be able to construct pc-files on servers where +# pkg-config is not installed. Work around that by creating the library +# directory during this rule: +@MAKE_PC_FILES@install \ +@MAKE_PC_FILES@install.libs :: pc-files +@MAKE_PC_FILES@ @$(SHELL) -c 'case "x$(DESTDIR)$(PKG_CONFIG_LIBDIR)" in \ +@MAKE_PC_FILES@ x/*) \ +@MAKE_PC_FILES@ mkdir -p $(DESTDIR)$(PKG_CONFIG_LIBDIR); \ +@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@ done \ +@MAKE_PC_FILES@ ;; \ +@MAKE_PC_FILES@ *) \ +@MAKE_PC_FILES@ echo "...skip actual install: no destination was given" ; \ +@MAKE_PC_FILES@ ;; \ +@MAKE_PC_FILES@ esac' + +@MAKE_PC_FILES@all \ +@MAKE_PC_FILES@sources :: pc-files +@MAKE_PC_FILES@pc-files : +@MAKE_PC_FILES@ $(SHELL) ./gen-pkgconfig +@MAKE_PC_FILES@ -touch $@ + +terminfo.tmp : run_tic.sed $(source) + echo '** adjusting tabset paths' + sed -f run_tic.sed $(source) >terminfo.tmp + +run_tic.sed : + WHICH_XTERM=@WHICH_XTERM@ \ + XTERM_KBS=@XTERM_KBS@ \ + datadir=${datadir} \ + $(SHELL) $(srcdir)/gen_edit.sh >$@ + +$(DESTDIR)$(bindir) \ +$(DESTDIR)$(libdir) \ +$(DESTDIR)$(datadir) \ +$(DESTDIR)$(tabsetdir) : + 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) + +uninstall.libs : + -rm -f $(DESTDIR)$(bindir)/$(NCURSES_CONFIG) +@MAKE_PC_FILES@ @$(SHELL) -c 'case x$(DESTDIR)$(PKG_CONFIG_LIBDIR) in \ +@MAKE_PC_FILES@ x/*) \ +@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@ done \ +@MAKE_PC_FILES@ ;; \ +@MAKE_PC_FILES@ esac' + +tags : + +@MAKE_UPPER_TAGS@TAGS : + +mostlyclean : +@MAKE_DATABASE@ -rm -f terminfo.tmp +@MAKE_DATABASE@ -rm -f run_tic.sed +@MAKE_PC_FILES@ -rm -f pc-files $(PC_FILES) + -rm -f core tags TAGS *~ *.bak *.ln *.atac trace + +clean :: mostlyclean + +distclean : clean +@MAKE_PC_FILES@ -rm -f gen-pkgconfig + -rm -f Makefile run_tic.sh ncurses-config + +realclean : distclean + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-5.9/misc/chkdef.cmd b/deps/ncurses-6.3/misc/chkdef.cmd similarity index 92% rename from deps/ncurses-5.9/misc/chkdef.cmd rename to deps/ncurses-6.3/misc/chkdef.cmd index fa91dce..a80230d 100644 --- a/deps/ncurses-5.9/misc/chkdef.cmd +++ b/deps/ncurses-6.3/misc/chkdef.cmd @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998,2006 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /* - * $Id: chkdef.cmd,v 1.3 2006/04/22 23:14:50 tom Exp $ + * $Id: chkdef.cmd,v 1.4 2020/02/02 23:34:34 tom Exp $ * * Author: Juan Jose Garcia Ripoll <worm@arrakis.es>. * Webpage: http://www.arrakis.es/~worm/ diff --git a/deps/ncurses-5.9/misc/cleantic.cmd b/deps/ncurses-6.3/misc/cleantic.cmd similarity index 90% rename from deps/ncurses-5.9/misc/cleantic.cmd rename to deps/ncurses-6.3/misc/cleantic.cmd index 6859de3..b09ba57 100644 --- a/deps/ncurses-5.9/misc/cleantic.cmd +++ b/deps/ncurses-6.3/misc/cleantic.cmd @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998,2006 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /* - * $Id: cleantic.cmd,v 1.4 2006/04/22 23:14:50 tom Exp $ + * $Id: cleantic.cmd,v 1.5 2020/02/02 23:34:34 tom Exp $ * * Author: Juan Jose Garcia Ripoll <worm@arrakis.es>. * Webpage: http://www.arrakis.es/~worm/ diff --git a/deps/ncurses-5.9/misc/cmpdef.cmd b/deps/ncurses-6.3/misc/cmpdef.cmd similarity index 93% rename from deps/ncurses-5.9/misc/cmpdef.cmd rename to deps/ncurses-6.3/misc/cmpdef.cmd index 5bb8f6c..cd22f2d 100644 --- a/deps/ncurses-5.9/misc/cmpdef.cmd +++ b/deps/ncurses-6.3/misc/cmpdef.cmd @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998,2006 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /* - * $Id: cmpdef.cmd,v 1.3 2006/04/22 23:14:50 tom Exp $ + * $Id: cmpdef.cmd,v 1.4 2020/02/02 23:34:34 tom Exp $ * * Author: Juan Jose Garcia Ripoll <worm@arrakis.es>. * Webpage: http://www.arrakis.es/~worm/ diff --git a/deps/ncurses-5.9/misc/csort b/deps/ncurses-6.3/misc/csort similarity index 91% rename from deps/ncurses-5.9/misc/csort rename to deps/ncurses-6.3/misc/csort index 42faaf3..c39c295 100755 --- a/deps/ncurses-5.9/misc/csort +++ b/deps/ncurses-6.3/misc/csort @@ -1,7 +1,8 @@ #!/bin/sh -# $Id: csort,v 1.2 2002/10/19 21:42:09 tom Exp $ +# $Id: csort,v 1.4 2021/09/04 15:55:29 tom Exp $ ############################################################################## -# Copyright (c) 2002 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2002 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"), # @@ -33,4 +34,4 @@ LANG=C; export LANG LANGUAGE=C; export LANGUAGE LC_ALL=C; export LC_ALL LC_CTYPE=C; export LC_CTYPE -sort $* +sort "$@" diff --git a/deps/ncurses-5.9/misc/emx.src b/deps/ncurses-6.3/misc/emx.src similarity index 98% rename from deps/ncurses-5.9/misc/emx.src rename to deps/ncurses-6.3/misc/emx.src index 4720066..901c7b5 100644 --- a/deps/ncurses-5.9/misc/emx.src +++ b/deps/ncurses-6.3/misc/emx.src @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 1998-2003,2006 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2003,2006 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: emx.src,v 1.9 2006/04/22 21:46:17 tom Exp $ +# $Id: emx.src,v 1.12 2020/02/02 23:34:34 tom Exp $ # This is a reformatted copy of the terminfo source for OS/2 EMX from # Juan Jose Garcia Ripoll <worm@arrakis.es>. # http://www.arrakis.es/~worm/ @@ -183,7 +184,7 @@ ansi-mini|any ansi terminal with pessimistic assumptions, # # This completely describes the sequences specified in the DOS 2.1 ANSI.SYS # documentation (except for the keyboard key reassignment feature, which -# doen't fit the <pfkey> model well). The klone+acs sequences were valid +# doesn't fit the <pfkey> model well). The klone+acs sequences were valid # though undocumented. The <pfkey> capability is untested but should work for # keys F1-F10 (%p1 values outside this range will yield unpredictable results). # From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995 @@ -330,7 +331,7 @@ emx-base|DOS special keys, # mb <-> blink turn on blinking # md <-> bold turn on extra bright (bold) mode # mr <-> rev turn on reverse video mode -# me <-> sgr0 turn off all atributes +# me <-> sgr0 turn off all attributes # # On my terminal, \E[4m looks dim. ansi-emx|ANSI.SYS color, diff --git a/deps/ncurses-5.9/misc/form.def b/deps/ncurses-6.3/misc/form.def similarity index 100% rename from deps/ncurses-5.9/misc/form.def rename to deps/ncurses-6.3/misc/form.def diff --git a/deps/ncurses-5.9/misc/form.ref b/deps/ncurses-6.3/misc/form.ref similarity index 100% rename from deps/ncurses-5.9/misc/form.ref rename to deps/ncurses-6.3/misc/form.ref diff --git a/deps/ncurses-6.3/misc/gen-pkgconfig.in b/deps/ncurses-6.3/misc/gen-pkgconfig.in new file mode 100644 index 0000000..a45dd54 --- /dev/null +++ b/deps/ncurses-6.3/misc/gen-pkgconfig.in @@ -0,0 +1,244 @@ +#!@SHELL@ +# $Id: gen-pkgconfig.in,v 1.52 2021/08/07 21:36:33 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 2009-2015,2018 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: Thomas E. Dickey +# +# The complete configure script for ncurses is the ncurses5-config (or similar +# name, depending on the flavor, e.g., ncursesw5-config, ncurses6-config, etc). +# That provides more information than pkg-config, and is the portable and +# recommended solution. +# +# For each library, generate a ".pc" file which depends on the base ncurses +# library, except that the tinfo library does not depend on ncurses. +LIB_NAME=@LIB_NAME@ +TINFO_NAME=@TINFO_NAME@ +PANEL_NAME=@PANEL_NAME@ +MENU_NAME=@MENU_NAME@ +FORM_NAME=@FORM_NAME@ +CXX_NAME=@CXX_NAME@ + +DFT_DEP_SUFFIX=@DFT_DEP_SUFFIX@ +TINFO_ARG_SUFFIX=@TINFO_ARG_SUFFIX@ +CXX_LIB_SUFFIX=@CXX_LIB_SUFFIX@ + +suffix=@PC_MODULE_SUFFIX@ +prefix="@prefix@" +exec_prefix="@exec_prefix@" +includedir="@includedir@@includesubdir@" +libdir="@libdir@" + +RPATH_LIST=@RPATH_LIST@ +PRIVATE_LIBS="@PRIVATE_LIBS@" + +show_prefix='@prefix@' +show_exec_prefix='@exec_prefix@' +show_includedir='@includedir@@includesubdir@' +show_libdir='@libdir@' + +MAIN_LIBRARY="${LIB_NAME}@USE_ARG_SUFFIX@" +SUB_LIBRARY="${TINFO_ARG_SUFFIX}" + +CXX_LIBRARY="${CXX_NAME}@USE_ARG_SUFFIX@" +FORM_LIBRARY="${FORM_NAME}@USE_ARG_SUFFIX@" +MENU_LIBRARY="${MENU_NAME}@USE_ARG_SUFFIX@" +PANEL_LIBRARY="${PANEL_NAME}@USE_ARG_SUFFIX@" + +CFLAGS="@PKG_CFLAGS@" +if [ "$includedir" != "/usr/include" ]; then + includetop=`echo "$includedir" | sed -e 's,/include/[^/]*$,/include,'` + [ "$includetop" = "/usr/include" ] && includetop="$includedir" + CFLAGS="$CFLAGS -I\${includedir}" + if [ "x$includetop" != "x$includedir" ] + then + CFLAGS="$CFLAGS -I${includetop}" + fi +fi + +lib_flags= +for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ @LIBS@ +do + case $opt in + -l*) # LIBS is handled specially below + continue + ;; + -specs*) # ignore linker specs-files which were used to build library + continue + ;; + -Wl,-z,*) # ignore flags used to manipulate shared image + continue + ;; + -Wl,--dynamic-linker*) # ignore ELF interpreter + continue + ;; + -L*) + lib_check=`echo "x$opt" | sed -e 's/^.-L//'` + [ -d "$lib_check" ] || continue + case "$lib_check" in + @LD_SEARCHPATH@) # skip standard libdir + if [ "$lib_check" = "$libdir" ] + then + lib_first=yes + IFS_save="$IFS" + IFS='|' + LIBDIRS="@LD_SEARCHPATH@" + for lib_check in $LIBDIRS + do + if [ -d "$lib_check" ] + then + if [ "$lib_check" != "$libdir" ] + then + lib_first=no + fi + break + fi + done + IFS="$IFS_save" + [ $lib_first = yes ] && continue + found=no + for check in $lib_flags + do + if [ "x$check" = "x$opt" ] + then + found=yes + break + fi + done + [ $found = yes ] && continue + : + else + continue + fi + ;; + *) + found=no + for check in $lib_flags + do + if [ "x$check" = "x$opt" ] + then + found=yes + break + fi + done + [ $found = yes ] && continue + ;; + esac + ;; + esac + lib_flags="$lib_flags $opt" +done + +# Check if we should specify the tinfo library explicitly so that terminfo +# functions or curses variables (which also reside in tinfo) can be linked +# using the -lncurses option. +NEED_TINFO=no +if [ "x@TINFO_LIBS@" != "x" ] && \ + [ "x$TINFO_ARG_SUFFIX" != "x$MAIN_LIBRARY" ] +then + NEED_TINFO=yes +fi + +# The "URL" feature came in pkg-config 0.17 +USEURL="" +CFGVER=`pkg-config --version 2>/dev/null |head -n 1 | awk -F. '/0.[0-9][0-9]/{print $2;}'` +# A missing version should simply fail, but some packagers insist on building +# packages on machines which do not actually have the tools they depend on at +# runtime. +[ -z "$CFGVER" ] && CFGVER=30 +[ $CFGVER -ge 17 ] || USEURL="#" + +for name in @PC_MODULES_TO_MAKE@ +do + name="${name}" + case $name in + form*) name="$FORM_LIBRARY" ;; + menu*) name="$MENU_LIBRARY" ;; + panel*) name="$PANEL_LIBRARY" ;; + ncurses++*) name="$CXX_LIBRARY" ;; + esac + LIBS="-l$name" + + desc="ncurses @NCURSES_MAJOR@.@NCURSES_MINOR@" + reqs= + + if [ $name = $MAIN_LIBRARY ]; then + desc="$desc library" + [ $NEED_TINFO = yes ] && LIBS="$LIBS -l$TINFO_ARG_SUFFIX" + [ -n "@LIBS@" ] && LIBS="$LIBS @LIBS@" + elif [ $name = $SUB_LIBRARY ]; then + desc="$desc terminal interface library" + elif expr $name : ".*${CXX_NAME}.*" >/dev/null ; then + reqs="$PANEL_LIBRARY${suffix}, $MENU_LIBRARY${suffix}, $FORM_LIBRARY${suffix}, $MAIN_LIBRARY${suffix}" + desc="$desc add-on library" + else + reqs="$MAIN_LIBRARY${suffix}" + desc="$desc add-on library" + fi + + if [ $name != $SUB_LIBRARY ] && \ + [ $SUB_LIBRARY != $MAIN_LIBRARY ] && \ + [ $name != $TINFO_NAME ] && \ + [ $NEED_TINFO != yes ] ; then + [ -n "$reqs" ] && reqs="$reqs, " + reqs="${reqs}${SUB_LIBRARY}${suffix}" + fi + + if [ $name = $MAIN_LIBRARY ] + then + main_libs="$PRIVATE_LIBS" + else + main_libs= + fi + + echo "** creating ${name}${suffix}.pc" + cat >${name}${suffix}.pc <<EOF +# pkg-config file generated by `basename $0` +# vile:makemode + +prefix=$show_prefix +exec_prefix=$show_exec_prefix +libdir=$show_libdir +includedir=$show_includedir +abi_version=@cf_cv_abi_version@ +major_version=@NCURSES_MAJOR@ +version=@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@ + +Name: ${name}${suffix} +Description: $desc +Version: \${version} +${USEURL}URL: https://invisible-island.net/ncurses +Requires.private: $reqs +Libs: $lib_flags $LIBS +Libs.private: @LIBS@ $main_libs +Cflags: $CFLAGS +EOF + +done +# vile:shmode ts=4 sw=4 diff --git a/deps/ncurses-6.3/misc/gen_edit.sh b/deps/ncurses-6.3/misc/gen_edit.sh new file mode 100755 index 0000000..0c41611 --- /dev/null +++ b/deps/ncurses-6.3/misc/gen_edit.sh @@ -0,0 +1,119 @@ +#!/bin/sh +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2004-2011,2012 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: 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 +# be installed. +# +# Assumes: +# The leaf directory names (lib, tabset, terminfo) +# + +linux_dft=linux2.2 + +: "${datadir=/usr/share}" +: "${WHICH_LINUX=$linux_dft}" +: "${WHICH_XTERM=xterm-new}" +: "${XTERM_KBS=BS}" + +# 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 +cat <<EOF +s%/usr/share/tabset%$TABSET%g +EOF +fi + +if test "$WHICH_XTERM" != "xterm-new" ; then +echo "** using $WHICH_XTERM terminal description for XTerm entry" >&2 +cat <<EOF +/^# This is xterm for ncurses/,/^$/{ + s/use=xterm-new,/use=$WHICH_XTERM,/ +} +EOF +fi + +if test "$XTERM_KBS" != "BS" ; then +echo "** using DEL for XTerm backspace-key" >&2 +cat <<EOF +/^xterm+kbs|fragment for backspace key/,/^#/{ + s/kbs=^H,/kbs=^?,/ +} +EOF +fi + +# Work around incompatibities built into Linux console. The 2.6 series added +# a patch to fixup the SI/SO behavior, which is closer to vt100, but the older +# kernels do not recognize those controls. All of the kernels recognize the +# older flavor of rmacs/smacs, but beginning in the late 1990s, changes made +# as part of implementing UTF-8 prevent using those for line-drawing when the +# console is in UTF-8 mode. Taking into account the fact that it took about +# ten years to provide (and distribute) the 2.6 series' change for SI/SO, the +# default remains "linux2.2". +case x$WHICH_LINUX in #(vi +xauto) + system=`uname -s 2>/dev/null` + if test "x$system" = xLinux + then + case x`uname -r` in + x1.*) + WHICH_LINUX=linux-c + ;; + x2.[0-4]*) + WHICH_LINUX=linux2.2 + ;; + *) + WHICH_LINUX=linux3.0 + ;; + esac + else + WHICH_LINUX=$linux_dft + fi + ;; +xlinux*) + # allow specific setting + ;; +*) + WHICH_LINUX=$linux_dft + ;; +esac + +if test $WHICH_LINUX != $linux_dft +then +echo "** using $WHICH_LINUX terminal description for Linux console" >&2 +cat <<EOF +/^# This is Linux console for ncurses/,/^$/{ + s/use=$linux_dft,/use=$WHICH_LINUX,/ +} +EOF +fi diff --git a/deps/ncurses-6.3/misc/magic b/deps/ncurses-6.3/misc/magic new file mode 100644 index 0000000..0fab004 --- /dev/null +++ b/deps/ncurses-6.3/misc/magic @@ -0,0 +1,91 @@ +# $Id: magic,v 1.3 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 2015,2018 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. # +############################################################################## +# for reference, from file 5.30: +#------------------------------------------------------------------------------ +# @File: terminfo,v 1.7 2016/03/17 21:02:29 christos Exp @ +# terminfo: file(1) magic for terminfo +# +# URL: https://invisible-island.net/ncurses/man/term.5.html +# URL: https://invisible-island.net/ncurses/man/scr_dump.5.html +# +# Workaround for Targa image type by Joerg Jenderek +# GRR: line below too general as it catches also +# Targa image type 1 with 26 long identification field +# and HELP.DSK +0 string \032\001 +# 5th character of terminal name list, but not Targa image pixel size (15 16 24 32) +>16 ubyte >32 +# namelist, if more than 1 separated by "|" like "st|stterm| simpleterm 0.4.1" +>>12 regex \^[a-zA-Z0-9][a-zA-Z0-9.][^|]* Compiled terminfo entry "%-s" +!:mime application/x-terminfo +# no extension +#!:ext +# +#------------------------------------------------------------------------------ +# The following was added for ncurses6 development: +#------------------------------------------------------------------------------ +# +0 string \036\002 +# imitate the legacy compiled-format, to get the entry-name printed +>16 ubyte >32 +# namelist, if more than 1 separated by "|" like "st|stterm| simpleterm 0.4.1" +>>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, SystemV screen dumps do not. They came later, and that detail was +# overlooked. +# +# AIX and HPUX use the SVr4 big-endian format +# Solaris uses the SVr3 formats (sparc and x86 differ endian-ness) +0 beshort 0433 SVr2 curses screen image, big-endian +0 beshort 0434 SVr3 curses screen image, big-endian +0 beshort 0435 SVr4 curses screen image, big-endian +# +0 leshort 0433 SVr2 curses screen image, little-endian +0 leshort 0434 SVr3 curses screen image, little-endian +0 leshort 0435 SVr4 curses screen image, little-endian +# +# Rather than SVr4, Solaris "xcurses" writes this header: +0 regex \^MAX=[0-9]+,[0-9]+$ +>1 regex \^BEG=[0-9]+,[0-9]+$ +>2 regex \^SCROLL=[0-9]+,[0-9]+$ +>3 regex \^VMIN=[0-9]+$ +>4 regex \^VTIME=[0-9]+$ +>5 regex \^FLAGS=0x[[:xdigit:]]+$ +>6 regex \^FG=[0-9],[0-9]+$ +>7 regex \^BG=[0-9]+,[0-9]+, Solaris xcurses screen image +# +# ncurses5 (and before) did not use a magic number, making screen dumps "data". +# ncurses6 (2015) uses this format, ignoring byte-order +0 string \210\210\210\210ncurses ncurses6 screen image +# +# PDCurses added this in 2005 +0 string PDC\001 PDCurses screen image diff --git a/deps/ncurses-5.9/misc/makedef.cmd b/deps/ncurses-6.3/misc/makedef.cmd similarity index 92% rename from deps/ncurses-5.9/misc/makedef.cmd rename to deps/ncurses-6.3/misc/makedef.cmd index 68a3569..129ca83 100644 --- a/deps/ncurses-5.9/misc/makedef.cmd +++ b/deps/ncurses-6.3/misc/makedef.cmd @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2006 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998,2006 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /* - * $Id: makedef.cmd,v 1.5 2006/04/22 23:14:50 tom Exp $ + * $Id: makedef.cmd,v 1.7 2021/09/04 10:52:55 tom Exp $ * * Author: Juan Jose Garcia Ripoll <worm@arrakis.es>. * Webpage: http://www.arrakis.es/~worm/ @@ -118,12 +119,12 @@ do while queued() > 0 * it has a valid code that we store * we mark that code as used * ELIF (it has no number) THEN - * (it's a new symbol) + * (it is a new symbol) * we increase the counter of defined symbols * we assign it the special number 0 * (later on it'll be assigned an unused export code) * ELSE - * this symbol was in the old DLL and it's no longer + * this symbol was in the old DLL and it is no longer * here, so we skip it. */ select diff --git a/deps/ncurses-5.9/misc/makellib b/deps/ncurses-6.3/misc/makellib similarity index 86% rename from deps/ncurses-5.9/misc/makellib rename to deps/ncurses-6.3/misc/makellib index 0460407..fb3d3b7 100755 --- a/deps/ncurses-5.9/misc/makellib +++ b/deps/ncurses-6.3/misc/makellib @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 1998,2000 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998,2000 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"), # @@ -29,7 +30,7 @@ # # Author: Thomas E. Dickey 1996,1997,2000 # -# $Id: makellib,v 1.8 2000/10/28 21:37:10 tom Exp $ +# $Id: makellib,v 1.11 2021/09/04 15:49:38 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 @@ -44,7 +45,7 @@ # a. On a few systems, you'll have to manually-edit the llib-lXXX file # to get a usable lint-library (not all C-preprocessors work well). # b. The system's lint utility won't recognize -lXXX as a lint-library -# (Use tdlint as a wrapper; it's designed for this). +# (Use tdlint as a wrapper; it is designed for this). # # Parameters: # $1 = library name @@ -67,7 +68,7 @@ while test $# != 0 do case $1 in -L*) - DST="$DST `echo $1|sed -e 's/^-L//'`" + DST="$DST `echo "$1"|sed -e 's/^-L//'`" ;; -*) OPT="$OPT $1" @@ -93,8 +94,8 @@ then llib="llib-l$LLIB" fi -if test ! -f $llib ; then - if ( make $llib ) +if test ! -f "$llib" ; then + if ( make "$llib" ) then : else @@ -102,39 +103,39 @@ if test ! -f $llib ; then fi fi -rm -f $llib.ln $llib.c +rm -f "$llib.ln" "$llib.c" TARGET=$LLIB case "$ARCH" in AIX) CREATE="-uvxo$LLIB -Nn4000" TARGET=$llib.c - ln $llib $TARGET + ln "$llib" "$TARGET" ;; Solaris) CREATE="-C$llib" TARGET=$llib.c - ln $llib $TARGET + ln "$llib" "$TARGET" ;; FreeBSD) CREATE="-g -z -C$LLIB" TARGET=$llib.c - ln $llib $TARGET + ln "$llib" "$TARGET" ;; CLIX) CREATE="-DLINTLIBRARY -vxo$LLIB" TARGET=$llib.c - ln $llib $TARGET + ln "$llib" "$TARGET" ;; IRIX*) CREATE="-DLINTLIBRARY -vxyo$LLIB" TARGET=$llib.c - ln $llib $TARGET + ln "$llib" "$TARGET" ;; UNIX_SV) CREATE="-DLINTLIBRARY -vxyo$LLIB" TARGET=$llib.c - ln $llib $TARGET + ln "$llib" "$TARGET" ;; *) echo "Sorry. I do not know how to build a lint-library for $ARCH" @@ -144,24 +145,24 @@ esac echo OPT "$OPT" echo TARGET "$TARGET" echo LIBNAME "$llib" -if ( lint $CREATE $OPT $TARGET ) +if ( lint "$CREATE" "$OPT" "$TARGET" ) then - if test -f $llib.ln + if test -f "$llib.ln" then for p in $HOME/lib $HOME/lib/$ARCH $HOME/lib/$ARCH/lint do - if test ! -d $p + if test ! -d "$p" then - mkdir $p + mkdir "$p" fi done for p in $DST do - cp $llib.ln $p/ + cp "$llib.ln" "$p/" done - rm -f $llib.ln + rm -f "$llib.ln" fi fi if test "x$TARGET" = "x$llib.c" ; then - rm -f $TARGET + rm -f "$TARGET" fi diff --git a/deps/ncurses-5.9/misc/menu.def b/deps/ncurses-6.3/misc/menu.def similarity index 100% rename from deps/ncurses-5.9/misc/menu.def rename to deps/ncurses-6.3/misc/menu.def diff --git a/deps/ncurses-5.9/misc/menu.ref b/deps/ncurses-6.3/misc/menu.ref similarity index 100% rename from deps/ncurses-5.9/misc/menu.ref rename to deps/ncurses-6.3/misc/menu.ref diff --git a/deps/ncurses-6.3/misc/ncu2openbsd b/deps/ncurses-6.3/misc/ncu2openbsd new file mode 100755 index 0000000..b066a10 --- /dev/null +++ b/deps/ncurses-6.3/misc/ncu2openbsd @@ -0,0 +1,1286 @@ +#!/usr/bin/env perl +# $Id: ncu2openbsd,v 1.65 2021/10/03 18:52:22 tom Exp $ +# ----------------------------------------------------------------------------- +# Copyright 2021 by Thomas E. Dickey +# +# All Rights Reserved +# +# 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, 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 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. +# ----------------------------------------------------------------------------- +# https://invisible-island.net/ncurses/ncurses-openbsd.html +# +# Update the OpenBSD source-tree given an ncurses tarball or build-tree. + +use strict; +use warnings; + +use Getopt::Std; +use Cwd; +use Cwd 'abs_path'; +use File::Path qw/ remove_tree /; +use File::Temp qw/ tempdir /; + +$| = 1; + +our ( $opt_d, $opt_n, $opt_r, $opt_t, $opt_v, $opt_x ); +our $source_dir; +our $target_dir; +our $update_dir; +our $backup_dir; + +our $tempdir = tempdir( CLEANUP => 1 ); +my $current = getcwd; +my $working = $current; + +our $generated_by = "generated by: ncu2openbsd"; + +our %setup_dir = qw( + lib/libcurses ncurses + lib/libform form + lib/libmenu menu + lib/libpanel panel + usr.bin/infocmp progs + usr.bin/tabs progs + usr.bin/tic progs + usr.bin/toe progs + usr.bin/tput progs + usr.bin/tset progs + share/termtypes misc +); + +our %generated = qw( + codes.c 1 + comp_captab.c 1 + comp_userdefs.c 1 + expanded.c 1 + fallback.c 1 + init_keytry.h 1 + keys.list 1 + lib_gen.c 1 + lib_keyname.c 1 + make_hash 1 + make_keys 1 + names.c 1 + termsort.c 1 + unctrl.c 1 +); + +our %definitions = qw( + CAPTOINFO captoinfo + DATADIR /usr/share + INFOCMP infocmp + INFOTOCAP infotocap + NCURSES_MAJOR 5 + NCURSES_MINOR 7 + NCURSES_OSPEED int + NCURSES_PATCH 20081102 + TERMINFO /usr/share/terminfo + TIC tic + TOE toe + TPUT tput + TSET tset +); + +sub patchdate() { + return $definitions{"NCURSES_PATCH"}; +} + +sub failed($) { + chdir $current; + printf STDERR "? %s\n", $_[0]; + exit; +} + +sub verbose($) { + my $text = shift; + printf "%s\n", $text if ($opt_v); +} + +sub read_file($) { + my $name = shift; + open( my $fp, $name ) || &failed("cannot open $name"); + my (@input) = <$fp>; + chomp @input; + close($fp); + return @input; +} + +sub read_dir($) { + my $path = shift; + my @result; + if ( opendir( my $dh, $path ) ) { + my @data = sort readdir($dh); + closedir $dh; + for my $d ( 0 .. $#data ) { + next if ( $data[$d] =~ /^\.(\.)?$/ ); + next if ( -l $path . "/" . $data[$d] ); + $result[ $#result + 1 ] = $data[$d]; + } + } + return @result; +} + +sub rename_dir($$) { + my $src = shift; + my $dst = shift; + printf "%% mv %s -> %s\n", $src, $dst if ($opt_v); + rename $src, $dst unless ($opt_n); +} + +sub check_sourcedir($) { + my $path = shift; + &failed("not a directory: $path") unless ( -d $path ); + my $full = abs_path($path); + chdir $full; + &failed("not an ncurses source-tree: $path") + unless ( -f "NEWS" and -f "dist.mk" ); + $source_dir = $full; +} + +sub unpack($) { + my $path = shift; + my $full = abs_path($path); + my $command = ""; + if ( $path =~ /\.tgz$/ or $path =~ /\.tar\.gz$/ ) { + $command = "tar xzf %s"; + } + elsif ( $path =~ /\.zip$/ ) { + $command = "unzip -q %s"; + } + else { + &failed("not a gzip'd tarball or zip-file: $path"); + } + chdir $tempdir; + system( sprintf( $command, $full ) ); + + # there should be exactly one subdirectory -- the source-tree + my @data = &read_dir("."); + &failed("found no subdirectories of $path") if ( $#data < 0 ); + &failed( "too many subdirectories: " . $data[0] . " vs " . $data[1] ) + if ( $#data > 0 ); + &check_sourcedir( $data[0] ); +} + +sub remove_dir($) { + my $tree = shift; + if ( -d $tree ) { + printf "%% rm -rf %s\n", $tree if ($opt_v); + remove_tree( $tree, $opt_v ? 1 : 0, 1 ) unless ($opt_n); + } +} + +sub copy_CVS($) { + my $leaf = shift; + my $src = $target_dir . $leaf . "/CVS"; + my $dst = $update_dir . $leaf . "/CVS"; + my $verbose = $opt_v ? "v" : ""; + if ( -d $src and !-d $dst ) { + my $mid = $update_dir . $leaf; + mkdir $mid unless ( -d $mid ); + mkdir $dst unless ( -d $dst ); + system("cp -a$verbose $src/* $dst/"); + } +} + +sub is_tic_code($) { + my $item = shift; + my $result = 0; + $result = 1 + if ( + $item =~ /^(capconvert + |tic + |dump + |progs + |termsort + |transform + |MKtermsort)/x + ); + return $result; +} + +sub is_ident($$) { + my $name = shift; + my $text = shift; + my $code = 0; + $code = 1 if ( $text =~ /\$$name:.*\$/ ); + return $code; +} + +# We "could", filter out differences with ident's using the diff -I option, +# but in practice, that is cumbersome. +sub munge_ident($) { + my $target = shift; + my $source = $target; + $source =~ s/\.update\b//; + &failed("bug at $source") if ( $source eq $target ); + return unless ( -f $source ); + my @source = &read_file($source); + my @target = &read_file($target); + my $old_id = ""; + my $gap_id = 0; + my $new_id = ""; + my $skipit = -1; + + for my $n ( 0 .. $#source ) { + if ( &is_ident( "OpenBSD", $source[$n] ) ) { + $old_id = $source[$n]; + $skipit = $n + 1; + } + elsif ( &is_ident( "Id", $source[$n] ) ) { + $new_id = $source[$n]; + last; + } + elsif ( $n == $skipit ) { + $source[$n] =~ s/\s+$//; + if ( $source[$n] eq "" ) { + $gap_id = $source[$n]; + } + elsif ( $source[$n] eq '.\"' ) { + $gap_id = $source[$n]; + } + } + } + if ( $old_id ne "" ) { + my @update; + my $tables = &uses_tables($target); + $update[ $#update + 1 ] = $target[0] if ($tables); + $update[ $#update + 1 ] = $old_id; + $update[ $#update + 1 ] = $gap_id unless ( $gap_id eq 0 ); + for my $n ( $tables .. $#target ) { + if ( &is_ident( "Id", $target[$n] ) ) { + $update[ $#update + 1 ] = $new_id; + } + else { + $update[ $#update + 1 ] = $target[$n]; + } + } + system("chmod u+w $target"); + if ( open my $fp, ">", $target ) { + for my $n ( 0 .. $#update ) { + printf $fp "%s\n", $update[$n]; + } + close $fp; + system("chmod u-w $target"); + } + } +} + +# ncurses manual pages provide for renaming the utilities, normally as part of +# the scripts provided in its sources. OpenBSD developers do not use those. +sub munge_docs($) { + my $path = shift; + my @data = &read_file($path); + my $done = 0; + for my $n ( 0 .. $#data ) { + my $text = $data[$n]; + $text =~ s/\b1M\b/1/g; + $text =~ s/\b3X\b/3/g; + $text =~ s/\bcurs_(term(info|cap)\s*3\b)/$1/g; + $text =~ s/(\\fB)curs_(term(info|cap)\\f[RP]\(3\))/$1$2/g; + my $left = ""; + while ( $text =~ /@[[:alnum:]_]+@/ ) { + my $next = index( $text, "@" ); + last if ( $next < 0 ); + $left .= substr( $text, 0, $next++ ); + $text = substr( $text, $next ); + $next = index( $text, "@" ); + last if ( $next < 0 ); + my $word = substr( $text, 0, $next ); + if ( $word =~ /^[[:alnum:]_]+/ ) { + + if ( $definitions{$word} ) { + $word = $definitions{$word}; + } + else { + $word = "?"; + } + $left .= $word; + $text = substr( $text, $next + 1 ); + } + else { + &failed("unexpected definition @$word@"); + } + } + $text = $left . $text; + if ( $text ne $data[$n] ) { + $done++; + $data[$n] = $text; + } + } + if ($done) { + system("chmod u+w $path"); + if ( open my $fp, ">", $path ) { + for my $n ( 0 .. $#data ) { + printf $fp "%s\n", $data[$n]; + } + close $fp; + system("chmod u-w $path"); + } + } +} + +sub copy_file($$) { + my $src = shift; + my $dst = shift; + my $verbose = $opt_v ? "v" : ""; + if ( -d $dst ) { + my $leaf = $src; + $leaf =~ s,^.*/,,; + $dst .= "/" . $leaf; + } + system("chmod u+w $dst") if ( -f $dst ); + system("cp -a$verbose $src $dst"); + &munge_ident($dst); +} + +sub copy_code($) { + my $src = shift; + my $dst = shift; + &copy_CVS( substr( $dst, length($update_dir) ) ); + printf ".. copying files for $dst\n"; + my @data = &read_dir($src); + printf ".. %d entries\n", $#data + 1; + my $verbose = $opt_v ? "v" : ""; + for my $d ( 0 .. $#data ) { + my $item = $data[$d]; + my $src_item = $src . "/" . $item; + next if ( -d $src_item ); + next if ( -l $src_item ); + next if ( $item =~ /^\.(\.)?$/ ); + next if ( $item =~ /\.(bak|in|log|status)$/ ); + next if ( $item =~ /^llib-/ ); + next if ( $item =~ /^modules/ ); + next if ( $item =~ /^[fm]_trace\.c/ and not $opt_t ); + next + if ( $item =~ /^Makefile/ and index( $update_dir, "/share/" ) < 0 ); + next if ( $item =~ /^README/ ); + next if ( $item eq "headers" ); + next if ( $generated{$item} ); + next if ( $item eq "link_test.c" ); + + if ( index( $dst, "/usr.bin/" ) >= 0 ) { + next if ( $item =~ /^(clear)/ ); # OpenBSD uses "tput clear" + my $prog = $dst; + $prog =~ s%^.*/%%; + $prog =~ s/(update|backup)//; + $prog .= "c"; + if ( $dst =~ /infocmp/ ) { + next if ( $item ne $prog ); + } + elsif ( $dst =~ /tabs/ ) { + next if ( $item ne $prog ); + } + elsif ( $dst =~ /tic/ ) { + next if ( &is_tic_code($item) == 0 ); + } + elsif ( $dst =~ /toe/ ) { + next if ( $item ne $prog ); + } + elsif ( $dst =~ /tput/ ) { + next if ( $item ne $prog ); + } + elsif ( $dst =~ /tset/ ) { + next if ( $item ne $prog ); + } + else { + next; + } + } + system( sprintf( "cp -a$verbose %s %s/%s", $src_item, $dst, $item ) ); + &munge_ident("$dst/$item"); + } +} + +# Checking if nroff supports tables is a long-obsolete issue, and is not really +# necessary, except to match OpenBSD's source-tree. +sub uses_tables($) { + my $docs = shift; + my @docs = &read_file($docs); + my $code = 0; + for my $n ( 0 .. $#docs ) { + if ( $docs[$n] =~ /^[.']\\"\s+t\b.*/ ) { + $code = 1; + last; + } + elsif ( $docs[$n] =~ /^\./ ) { + last; + } + } + return $code; +} + +sub copy_1doc($$) { + my $docs = shift; + my $src = "$source_dir/man/$docs"; + my $dst = "$update_dir/$docs"; + $src .= "m" if ( -f "${src}m" ); + $dst =~ s/x$//; + if ( $dst =~ /\.3/ ) { + $dst =~ s/\bncurses/curses/ if ( $dst =~ /ncurses\./ ); + $dst =~ s/\bcurs_// if ( $dst =~ /_term(cap|info)\./ ); + } + &copy_file( $src, $dst ); + &munge_docs($dst); +} + +sub copy_docs($) { + my $docs = shift; + if ( index( $update_dir, "/usr.bin/" ) >= 0 ) { + &copy_1doc( $docs . ".1" ); + if ( $docs eq "tic" ) { + &copy_1doc("captoinfo.1"); + &copy_1doc("infotocap.1"); + } + } + else { + my @docs = &read_dir("$source_dir/man"); + if ( $docs eq "curses" ) { + for my $n ( 0 .. $#docs ) { + next if ( $docs[$n] eq "Makefile" ); + next if ( $docs[$n] eq "make_sed.sh" ); + next if ( $docs[$n] eq "man_db.renames" ); + next if ( $docs[$n] eq "manlinks.sed" ); + next if ( $docs[$n] =~ /\.(1|head|tail|in)/ ); + next if ( $docs[$n] =~ /^(form|menu|mitem|panel)/ ); + &copy_1doc( $docs[$n] ); + } + } + elsif ( $docs eq "form" ) { + for my $n ( 0 .. $#docs ) { + next unless ( $docs[$n] =~ /^form/ ); + &copy_1doc( $docs[$n] ); + } + } + elsif ( $docs eq "menu" ) { + for my $n ( 0 .. $#docs ) { + next unless ( $docs[$n] =~ /^(menu|mitem)/ ); + &copy_1doc( $docs[$n] ); + } + } + elsif ( $docs eq "panel" ) { + for my $n ( 0 .. $#docs ) { + next unless ( $docs[$n] =~ /^panel/ ); + &copy_1doc( $docs[$n] ); + } + } + } +} + +sub setup_dir($) { + my $dst = shift; + &failed("no definition for $dst") + unless ( defined $setup_dir{$dst} or $opt_r ); + $target_dir = sprintf( "%s/%s", $opt_d, $dst ); + $update_dir = $target_dir . ".update"; + $backup_dir = $target_dir . ".backup"; + my $result = 0; + if ($opt_r) { + &remove_dir($update_dir); + if ( $target_dir =~ /\/(tabs|toe)$/ ) { + &remove_dir($target_dir); + } + elsif ( -d $backup_dir ) { + &remove_dir($target_dir); + &rename_dir( $backup_dir, $target_dir ); + } + } + else { + &remove_dir($update_dir); + mkdir $update_dir; + + # reuse the shared-library version, assuming ABI=5 would involve at + # most a minor-version bump. + &copy_file( "$target_dir/shlib_version", $update_dir ) + if ( $dst =~ /^lib\// ); + &copy_code( $source_dir . "/" . $setup_dir{$dst}, $update_dir ) + unless ( $setup_dir{$dst} eq "misc" ); + $result = 1; + } + return $result; +} + +sub do_build($) { + my $command = shift; + printf "%% %s\n", $command if ($opt_v); + system($command); +} + +sub finish_dir() { + printf "** $target_dir\n"; + system("diff -Naurb $target_dir $update_dir | diffstat -n 30") + if ( -d $target_dir ); + if ($opt_n) { + &do_build("cd $update_dir && make -n") if ($opt_x); + } + else { + if ( -d $backup_dir ) { + printf STDERR "? backup directory exists: %s\n", $backup_dir; + } + else { + &rename_dir( $target_dir, $backup_dir ); + &rename_dir( $update_dir, $target_dir ); + } + &do_build("cd $target_dir && make") if ($opt_x); + } +} + +################################################################################ + +sub only_c_files($) { + my @data = @{ $_[0] }; + my %data; + for my $n ( 0 .. $#data ) { + my $text = $data[$n]; + $data{$text}++ if ( $text =~ /\.c$/ ); + } + return sort keys %data; +} + +sub makefile_list($$$) { + my @data = @{ $_[0] }; + my $name = $_[1]; + my $skip = $_[2]; + my %data; + my $state = 0; + for my $n ( 0 .. $#data ) { + my $text = $data[$n]; + $text =~ s/^\s+//; + next if ( index( $text, $skip ) == 0 ); + $text =~ s/\s+=/=/; + $text =~ s/=\s+/=/; + $text =~ s/\s*\\//; + $state = 1 if ( $text =~ /^${name}=/ ); + next unless ( $state == 1 ); + + if ( index( $text, "(trace)" ) >= 0 and not $opt_t ) { + next unless ( $text =~ /\b(lib_trace|visbuf)\.c$/ ); + } + if ( not $opt_t ) { + next if ( $text =~ /\b[fm]_trace\.c$/ ); + } + $text =~ s/^.*=//; + $text =~ s/\$o/.o/g; + $text =~ s/^.*\///; + next if ( $text eq "link_test.c" ); + next if ( $text eq "mf_common.h" ); + next if ( $text eq "transform.h" ); + $data{$text}++ if ( $text ne "" ); + last if ( $data[$n] !~ /\\$/ ); + } + return sort keys %data; +} + +sub manpage_list($) { + my $path = shift; + my @data = &read_dir($path); + my %data; + for my $n ( 0 .. $#data ) { + my $text = $data[$n]; + $data{$text}++ if ( $text =~ /\.\d$/ ); + } + return sort keys %data; +} + +sub columns_of($) { + my $string = shift; + my $result = 0; + for my $n ( 0 .. length($string) - 1 ) { + my $c = substr( $string, $n, 1 ); + if ( $c eq "\t" ) { + $result |= 7; + $result++; + } + elsif ( $c eq "\n" ) { + $result = 0; + } + else { + ++$result; + } + } + return $result; +} + +sub format_list($$) { + my $name = $_[0]; + my @data = @{ $_[1] }; + my $keep = ( defined $_[2] ) ? 1 : 0; + my $base; + my $fill; + if ( length($name) >= 9 ) { + $fill = " "; + $base = length($name) + 1; + } + else { + $base = 9; + $fill = "\t"; + } + my $result = sprintf( "%s%s", $name, $fill ); + if ( $keep == 0 ) { + my %data; + for my $n ( 0 .. $#data ) { + $data{ $data[$n] } = 1 if ( defined $data[$n] ); + } + @data = sort keys %data; + } + for my $n ( 0 .. $#data ) { + my $data = $data[$n]; + my $col = &columns_of($result); + my $add = 1 + length($data); + if ( ( $col + $add ) > 76 ) { + $result .= " " if ( $col > $base ); + $base = 9; + $fill = "\t"; + $result .= "\\\n" . $fill . $data; + } + else { + $result .= " " if ( $col > $base ); + $result .= $data; + } + } + return $result; +} + +################################################################################ + +sub compare_makefiles($) { + if ($opt_v) { + my $newfile = shift; + my $bakfile = + ( -d $backup_dir ? $backup_dir : $target_dir ) . "/Makefile"; + system("diff -u $bakfile $newfile") if ( -f $bakfile ); + } +} + +# The curses makefile has to build build-time utilities and generate source. +sub gen_1st_makefile() { + my $libname = "curses"; + my $oldfile = "$source_dir/n$libname/Makefile"; + my @oldfile = &read_file($oldfile); + + my $newfile = "$update_dir/Makefile"; + open( my $fp, ">", $newfile ) || &failed("cannot open $newfile"); + my @subdirs = ( + '${.CURDIR}/base', '${.CURDIR}/tinfo', + '${.CURDIR}/tty', '${.CURDIR}/widechar' + ); + $subdirs[ $#subdirs + 1 ] = '${.CURDIR}/trace' if ($opt_t); + printf $fp <<EOF; +# $generated_by + +LIB= $libname + +# Uncomment this to enable tracing in libcurses +#CURSESTRACE=-DTRACE + +# This is used to compile terminal info directly into the library +FALLBACK_LIST= + +# XXX - should be defined elsewhere +AWK?= /usr/bin/awk + +# Search in subdirs +EOF + printf $fp "%s\n", &format_list( ".PATH:", \@subdirs ); + + my @autosrc = &makefile_list( \@oldfile, "AUTO_SRC", "?" ); + my @auto_cc = &only_c_files( \@autosrc ); + printf $fp "%s\n", &format_list( "SRCS=", \@auto_cc ); + + my @sources = &makefile_list( \@oldfile, "C_SRC", "./" ); + printf $fp "%s\n", &format_list( "SRCS+=", \@sources ); + + printf $fp <<EOF; + +HOSTCFLAGS?= \${CFLAGS} +HOSTLDFLAGS?= \${LDFLAGS} +HOSTCFLAGS+= -I. -I\${.CURDIR} \${CURSESTRACE} +CFLAGS+= -I. -I\${.CURDIR} \${CURSESTRACE} -D_XOPEN_SOURCE_EXTENDED -DNDEBUG + +EOF + my @manpages = &manpage_list($update_dir); + printf $fp "%s\n", &format_list( "MAN=", \@manpages ); + + $autosrc[ $#autosrc++ ] = "make_hash"; + $autosrc[ $#autosrc++ ] = "make_keys"; + printf $fp "%s\n", &format_list( "GENERATED=", \@autosrc ); + printf $fp <<EOF; + +CAPLIST = \${.CURDIR}/Caps +USE_BIG_STRINGS = 1 + +CLEANFILES+= \${GENERATED} + +BUILDFIRST = \${GENERATED} + +includes: + \@cmp -s \${DESTDIR}/usr/include/ncurses.h \${.CURDIR}/curses.h || \\ + \${INSTALL} \${INSTALL_COPY} -m 444 -o \$(BINOWN) -g \$(BINGRP) \\ + \${.CURDIR}/curses.h \${DESTDIR}/usr/include/ncurses.h + \@cd \${.CURDIR}; for i in ncurses_dll.h unctrl.h term.h termcap.h; do \\ + cmp -s \$\$i \${DESTDIR}/usr/include/\$\$i || \\ + \${INSTALL} \${INSTALL_COPY} -m 444 -o \$(BINOWN) -g \$(BINGRP) \$\$i \\ + \${DESTDIR}/usr/include; done + +keys.list: \${.CURDIR}/tinfo/MKkeys_list.sh + sh \${.CURDIR}/tinfo/MKkeys_list.sh \${.CURDIR}/Caps | sort > \${.TARGET} + +fallback.c: \${.CURDIR}/tinfo/MKfallback.sh + sh \${.CURDIR}/tinfo/MKfallback.sh /usr/share/terminfo \${.CURDIR}/../../share/termtypes/termtypes.master \$(FALLBACK_LIST) > \${.TARGET} + +lib_gen.c: \${.CURDIR}/base/MKlib_gen.sh + sh \${.CURDIR}/base/MKlib_gen.sh "\${CC} -E -P -I\${.CURDIR}" \\ + "\${AWK}" generated < \${.CURDIR}/curses.h > lib_gen.c + +init_keytry.h: make_keys keys.list + ./make_keys keys.list > \${.TARGET} + +make_keys: \${.CURDIR}/tinfo/make_keys.c \${.CURDIR}/curses.priv.h names.c + \${HOSTCC} \${LDSTATIC} \${HOSTCFLAGS} \${HOSTLDFLAGS} \\ + -o \${.TARGET} \${.CURDIR}/tinfo/make_keys.c \${LDADD} +EOF + + if ( &patchdate >= 20090808 ) { + printf $fp <<EOF; +make_hash: \${.CURDIR}/tinfo/make_hash.c \\ + \${.CURDIR}/curses.priv.h \\ + \${.CURDIR}/hashsize.h + \${HOSTCC} \${LDSTATIC} \${HOSTCFLAGS} -DMAIN_PROGRAM \${HOSTLDFLAGS} \\ + -o \${.TARGET} \${.CURDIR}/tinfo/make_hash.c \${LDADD} +EOF + } + else { + printf $fp <<EOF; +make_hash: \${.CURDIR}/tinfo/comp_hash.c \\ + \${.CURDIR}/curses.priv.h \\ + \${.CURDIR}/hashsize.h + \${HOSTCC} \${LDSTATIC} \${HOSTCFLAGS} -DMAIN_PROGRAM \${HOSTLDFLAGS} \\ + -o \${.TARGET} \${.CURDIR}/tinfo/comp_hash.c \${LDADD} +EOF + } + + if ( &patchdate >= 20190309 ) { + printf $fp <<EOF; +CAPLIST += \${.CURDIR}/Caps-ncurses + +comp_userdefs.c: make_hash \\ + \${.CURDIR}/hashsize.h \\ + \${.CURDIR}/tinfo/MKuserdefs.sh + sh \${.CURDIR}/tinfo/MKuserdefs.sh \${AWK} \${USE_BIG_STRINGS} \${CAPLIST} > \${.TARGET} +EOF + } + printf $fp <<EOF; + +expanded.c: \${.CURDIR}/term.h \${.CURDIR}/curses.priv.h \\ + \${.CURDIR}/ncurses_cfg.h \${.CURDIR}/tty/MKexpanded.sh + sh \${.CURDIR}/tty/MKexpanded.sh "\${CC} -E -P" \${CPPFLAGS} > \${.TARGET} + +comp_captab.c: make_hash + sh \${.CURDIR}/tinfo/MKcaptab.sh \${AWK} \${USE_BIG_STRINGS} \\ + \${.CURDIR}/tinfo/MKcaptab.awk \${CAPLIST} > \${.TARGET} + +lib_keyname.c: keys.list \${.CURDIR}/base/MKkeyname.awk + \${AWK} -f \${.CURDIR}/base/MKkeyname.awk \\ + bigstrings=\${USE_BIG_STRINGS} \\ + keys.list > \${.TARGET} + +names.c: \${.CURDIR}/tinfo/MKnames.awk + \${AWK} -f \${.CURDIR}/tinfo/MKnames.awk \\ + bigstrings=\${USE_BIG_STRINGS} \\ + \${CAPLIST} > \${.TARGET} +codes.c: \${.CURDIR}/tinfo/MKcodes.awk + \${AWK} -f \${.CURDIR}/tinfo/MKcodes.awk \\ + bigstrings=\${USE_BIG_STRINGS} \\ + \${CAPLIST} > \${.TARGET} + +unctrl.c: \${.CURDIR}/base/MKunctrl.awk + echo | \${AWK} -f \${.CURDIR}/base/MKunctrl.awk bigstrings=1 > \${.TARGET} + +.include <bsd.own.mk> + +# Link libtermlib, libtermcap to libcurses so we don't break people's Makefiles +afterinstall: + -cd \${DESTDIR}\${LIBDIR}; \\ + for i in \${_LIBS}; do \\ + ln -f \$\$i `echo \$\$i | sed 's/curses/termlib/'`; \\ + ln -f \$\$i `echo \$\$i | sed 's/curses/termcap/'`; \\ + ln -f \$\$i `echo \$\$i | sed 's/curses/ncurses/'`; \\ + ln -f \$\$i `echo \$\$i | sed 's/curses/ncursesw/'`; \\ + done + +.include <bsd.lib.mk> +EOF + close $fp; + &compare_makefiles($newfile); +} + +sub gen_lib_makefile($) { + my $libname = shift; + my $oldfile = "$source_dir/$libname/Makefile"; + my @oldfile = &read_file($oldfile); + + # in ncurses, header-files are quasi-generated, because the original + # header file for form/menu/panel lives in the source-directory, but is + # copied to the include-directory with "make sources". + my @headers = &makefile_list( \@oldfile, "AUTO_SRC", "?" ); + + # The C source is more straightforward. + my @sources = &makefile_list( \@oldfile, "C_SRC", "?" ); + my $newfile = "$update_dir/Makefile"; + open( my $fp, ">", $newfile ) || &failed("cannot open $newfile"); + printf $fp <<EOF; +# $generated_by + +LIB= $libname +EOF + + printf $fp "%s\n", &format_list( "SRCS=", \@sources ); + printf $fp "%s\n", &format_list( "HDRS=", \@headers ); + my $includes = '-I${.CURDIR}/../libcurses'; + $includes .= ' -I${.CURDIR}/../libmenu' if ( $libname eq "form" ); + printf $fp <<EOF; +CFLAGS+=$includes -D_XOPEN_SOURCE_EXTENDED -DNDEBUG +EOF + my @manpages = &manpage_list($update_dir); + printf $fp "%s\n", &format_list( "MAN=", \@manpages ); + printf $fp <<EOF; + +includes: + \@cd \$\{.CURDIR}; for i in \$\{HDRS}; do \\ + cmp -s \$\$i \${DESTDIR}/usr/include/\$\$i || \\ + \${INSTALL} \${INSTALL_COPY} -m 444 -o \$(BINOWN) -g \$(BINGRP) \$\$i \\ + \${DESTDIR}/usr/include; done + +.include <bsd.own.mk> + +afterinstall: + -cd \${DESTDIR}\${LIBDIR}; \\ + for i in \${_LIBS}; do \\ + ln -f \$\$i `echo \$\$i | sed 's/${libname}/${libname}w/'`; \\ + done + +.include <bsd.lib.mk> +EOF + close $fp; + &compare_makefiles($newfile); +} + +sub gen_bin_makefile($) { + my $binname = shift; + my $oldfile = "$source_dir/progs/Makefile"; + my @oldfile = &read_file($oldfile); + my $newfile = "$update_dir/Makefile"; + + open( my $fp, ">", $newfile ) || &failed("cannot open $newfile"); + my @sources = ("$binname.c"); + my @links = (); + my @autosrc = &makefile_list( \@oldfile, "AUTO_SRC", "?" ); + + my $tput_ver = 0; + my $use_dump_entry = 0; + my $use_termsort = 0; + my $use_tparm_type = 0; + my $use_transform = 0; + + $use_dump_entry = 1 if ( $binname eq "infocmp" or $binname eq "tic" ); + $use_termsort = 1 if ( $use_dump_entry or $binname eq "tput" ); + + if ( &patchdate >= 20090314 ) { + $use_transform = 1 if ( $binname =~ /^(tic|tput|tset)/ ); + } + if ( &patchdate >= 20140521 ) { + $use_tparm_type = 1 if ( $binname =~ /^(tic|tput)$/ ); + } + if ( &patchdate >= 20160806 ) { + $tput_ver = &patchdate; + } + + $sources[ ++$#sources ] = "dump_entry.c" if ($use_dump_entry); + $sources[ ++$#sources ] = "tparm_type.c" if ($use_tparm_type); + $sources[ ++$#sources ] = "transform.c" if ($use_transform); + + $autosrc[ ++$#autosrc ] = "termsort.c" if ($use_termsort); + + # transform.h also is generated, but OpenBSD checked-in a copy + + if ( $binname eq "tic" ) { + $links[ ++$#links ] = "captoinfo"; + $links[ ++$#links ] = "infotocap"; + } + elsif ( $binname eq "tabs" ) { + $sources[ ++$#sources ] = "tty_settings.c" if ( $tput_ver >= 20161224 ); + } + elsif ( $binname eq "tput" ) { + $sources[ ++$#sources ] = "clear_cmd.c" if ( $tput_ver >= 20161022 ); + $sources[ ++$#sources ] = "reset_cmd.c" if ( $tput_ver >= 20160806 ); + $sources[ ++$#sources ] = "tty_settings.c" if ( $tput_ver >= 20161224 ); + $links[ ++$#links ] = "clear"; + } + elsif ( $binname eq "tset" ) { + $sources[ ++$#sources ] = "reset_cmd.c" if ( $tput_ver >= 20160806 ); + $sources[ ++$#sources ] = "tty_settings.c" if ( $tput_ver >= 20161224 ); + $links[ ++$#links ] = "reset"; + } + + printf $fp <<EOF; +# $generated_by + +PROG= $binname +EOF + printf $fp "%s\n", &format_list( "SRCS=", \@sources ); + printf $fp <<EOF; +CURSES= \${.CURDIR}/../../lib/libcurses +DPADD= \${LIBCURSES} +LDADD= -L\${CURSES} -lcurses\t# in-tree link to add _nc_strict_bsd, etc +EOF + if ( $#links >= 0 ) { + my @bin_links; + for my $n ( 0 .. $#links ) { + $bin_links[ ++$#bin_links ] = '${BINDIR}/' . $binname; + $bin_links[ ++$#bin_links ] = '${BINDIR}/' . $links[$n]; + } + printf $fp "%s\n", &format_list( "LINKS=", \@bin_links, 1 ); + } + my $ticfix = '${.CURDIR}/'; + if ( $binname eq "tic" ) { + printf $fp <<EOF; +CFLAGS+= -I\${CURSES} -I\${.CURDIR} -I. +EOF + } + else { + $ticfix = '${TIC}/'; + printf $fp <<EOF; +TIC= \${.CURDIR}/../tic +CFLAGS+= -I\${CURSES} -I\${TIC} -I\${.CURDIR} -I. +.PATH: \${TIC} +EOF + } + printf $fp "%s\n", &format_list( "CLEANFILES+=", \@autosrc ); + if ($use_dump_entry) { + printf $fp <<EOF; + +dump_entry.o: termsort.c +EOF + } + if ($use_termsort) { + printf $fp <<EOF; + +termsort.c: ${ticfix}MKtermsort.sh + sh ${ticfix}MKtermsort.sh awk \${CURSES}/Caps > \${.TARGET} +EOF + } + printf $fp <<EOF; + +.include <bsd.prog.mk> +EOF + close $fp; + + &compare_makefiles($newfile); +} + +################################################################################ + +sub setup_lib_libcurses() { + if ( &setup_dir("lib/libcurses") ) { + &copy_code( "$source_dir/ncurses/base", "$update_dir/base" ); + &copy_code( "$source_dir/ncurses/tinfo", "$update_dir/tinfo" ); + &copy_code( "$source_dir/ncurses/tty", "$update_dir/tty" ); + &copy_code( "$source_dir/ncurses/widechar", "$update_dir/widechar" ); + &copy_file( "$source_dir/include/Caps", $update_dir ); + &copy_file( "$source_dir/include/capdefaults.c", $update_dir ); + &copy_file( "$source_dir/include/curses.h", $update_dir ); + &copy_file( "$source_dir/include/hashed_db.h", $update_dir ); + &copy_file( "$source_dir/include/hashsize.h", $update_dir ); + &copy_file( "$source_dir/include/nc_alloc.h", $update_dir ); + &copy_file( "$source_dir/include/nc_panel.h", $update_dir ); + &copy_file( "$source_dir/include/nc_tparm.h", $update_dir ); + &copy_file( "$source_dir/include/ncurses_cfg.h", $update_dir ); + &copy_file( "$source_dir/include/ncurses_def.h", $update_dir ); + &copy_file( "$source_dir/include/ncurses_dll.h", $update_dir ); + &copy_file( "$source_dir/include/parametrized.h", $update_dir ); + &copy_file( "$source_dir/include/term.h", $update_dir ); + &copy_file( "$source_dir/include/termcap.h", $update_dir ); + &copy_file( "$source_dir/include/term_entry.h", $update_dir ); + &copy_file( "$source_dir/include/tic.h", $update_dir ); + &copy_file( "$source_dir/include/unctrl.h", $update_dir ); + &copy_file( "$source_dir/man/terminfo.5", $update_dir ); + &copy_docs("curses"); + + &verbose(".. work around a bug in /bin/sh in OpenBSD"); + system( "sed -i" + . " -e 's,^shift,test \$# != 0 \\&\\& shift,'" + . " $update_dir/tinfo/MKfallback.sh" ); + + # OpenBSD dropped support for sys/ttydev.h, without mentioning the + # system version. Just trim it. + &verbose(".. work around mishandled sys/ttydef.h"); + system( "sed -i" + . " -e '/__FreeBSD_version/s,|| defined(__OpenBSD__),,'" + . " $update_dir/tinfo/lib_baudrate.c" ); + + if ($opt_t) { + &copy_code( "$source_dir/ncurses/trace", "$update_dir/trace" ); + } + else { + &copy_file( "$source_dir/ncurses/trace/lib_trace.c", $update_dir ); + &copy_file( "$source_dir/ncurses/trace/visbuf.c", $update_dir ); + } + &copy_file( "$source_dir/include/nc_termios.h", $update_dir ) + if ( &patchdate >= 20110625 ); + &copy_file( "$source_dir/include/nc_string.h", $update_dir ) + if ( &patchdate >= 20120222 ); + &copy_file( "$source_dir/include/nc_access.h", $update_dir ) + if ( &patchdate >= 20210626 ); + &copy_file( "$source_dir/include/Caps-ncurses", $update_dir ) + if ( &patchdate >= 20190302 ); + &gen_1st_makefile; + &finish_dir; + } +} + +sub setup_lib_libform() { + if ( &setup_dir("lib/libform") ) { + &copy_docs("form"); + &gen_lib_makefile("form"); + &finish_dir; + } +} + +sub setup_lib_libmenu() { + if ( &setup_dir("lib/libmenu") ) { + &copy_docs("menu"); + &gen_lib_makefile("menu"); + &finish_dir; + } +} + +sub setup_lib_libpanel() { + if ( &setup_dir("lib/libpanel") ) { + &copy_docs("panel"); + &gen_lib_makefile("panel"); + &finish_dir; + } +} + +sub setup_bin_infocmp() { + if ( &setup_dir("usr.bin/infocmp") ) { + &copy_docs("infocmp"); + &gen_bin_makefile("infocmp"); + &finish_dir; + } +} + +sub setup_bin_tabs() { + if ( &setup_dir("usr.bin/tabs") ) { + &copy_docs("tabs"); + &gen_bin_makefile("tabs"); + &finish_dir; + } +} + +sub setup_bin_tic() { + if ( &setup_dir("usr.bin/tic") ) { + if ( &patchdate >= 20140521 ) { + &copy_file( "$source_dir/progs/tparm_type.c", $update_dir ); + &copy_file( "$source_dir/progs/tparm_type.h", $update_dir ); + } + + # shared files for tput/tset + if ( &patchdate >= 20160806 ) { + &copy_file( "$source_dir/progs/reset_cmd.c", $update_dir ); + &copy_file( "$source_dir/progs/reset_cmd.h", $update_dir ); + } + if ( &patchdate >= 20161022 ) { + &copy_file( "$source_dir/progs/clear_cmd.c", $update_dir ); + &copy_file( "$source_dir/progs/clear_cmd.h", $update_dir ); + } + if ( &patchdate >= 20161224 ) { + &copy_file( "$source_dir/progs/tty_settings.c", $update_dir ); + &copy_file( "$source_dir/progs/tty_settings.h", $update_dir ); + } + &copy_docs("tic"); + &gen_bin_makefile("tic"); + &finish_dir; + } +} + +sub setup_bin_toe() { + if ( &setup_dir("usr.bin/toe") ) { + &copy_docs("toe"); + &gen_bin_makefile("toe"); + &finish_dir; + } +} + +sub setup_bin_tput() { + if ( &setup_dir("usr.bin/tput") ) { + &copy_docs("tput"); + &gen_bin_makefile("tput"); + &finish_dir; + } +} + +sub setup_bin_tset() { + if ( &setup_dir("usr.bin/tset") ) { + &copy_docs("tset"); + &gen_bin_makefile("tset"); + &finish_dir; + } +} + +sub setup_terminfo() { + if ( &setup_dir("share/termtypes") ) { + &copy_code( $target_dir, $update_dir ); + &copy_file( "$source_dir/misc/terminfo.src", + "$update_dir/termtypes.master" ); + + # build the terminfo database using the in-tree tic. + # This is always best practice, but for ncurses 6.2 in particular is + # required. + my $prog = abs_path("$target_dir/../../usr.bin/tic"); + my $libs = abs_path("$target_dir/../../lib/libcurses"); + if ( defined $prog and defined $libs ) { + $prog .= "/tic"; + &verbose(".. changing makefile to use in-tree tic"); + system( "sed -i -E " + . "-e 's,(TIC=).*,\\1\t$prog,' " + . "-e 's,(\\\${TIC}),LD_LIBRARY_PATH=$libs \\1,' " + . "$update_dir/Makefile" ); + } + &finish_dir; + } +} + +sub configure_tree() { + return if ( -f "ncurses/Makefile" ); + my @search = ( "/usr/share/terminfo", "/usr/local/share/terminfo" ); + my @prefix = ("./configure"); + $prefix[ ++$#prefix ] = "--with-abi-version=5" + if ( &patchdate >= 20150502 ); + my @options = ( + "--with-ospeed=int", # + "--with-shared", # + "--without-normal", # + "--without-debug", # + "--with-terminfo-dirs=" . join( ':', @search ), # + "--without-ada", # + "--disable-hard-tabs", # + "--enable-const", # + "--enable-getcap", # + "--enable-bsdpad", # + "--enable-signed-char", # + "--enable-termcap", # + "--enable-widec" + ); + $options[ ++$#options ] = "--with-trace" if ($opt_t); + $options[ ++$#options ] = "--enable-string-hacks" + if ( &patchdate >= 20120225 ); + system( join( ' ', @prefix ) . ' ' . join( ' ', @options ) ); + &failed("problem with configuring") unless ( -f "ncurses/Makefile" ); + + system("make sources"); + + # OpenBSD developers edit the generated file and do not regen it when + # doing upgrades. This script reflects those edits. + system( "sed -i" . " -E" + . " -e '/TYPEOF_CHTYPE/s,int,long,'" + . " -e '/USE_TERMCAP/d'" + . " -e '/HAVE_LIB(FORM|MENU|PANEL)/s,^(.*)\$,/* \\1 */,'" + . " -e 's/TERMPATH.*/PURE_TERMINFO 0/'" + . " -e '/SYSTEM_NAME/s,\[0-9.\]+,,'" + . " include/ncurses_cfg.h" ); +} + +sub get_definitions() { + my @data = &read_file("dist.mk"); + for my $n ( 0 .. $#data ) { + my $text = $data[$n]; + $text =~ s/^\s*//; + next unless ( $text =~ /^NCURSES.*=/ ); + $text =~ s/\s*=\s+/=/; + my $name = $text; + $name =~ s/=.*//; + my $value = $text; + $value =~ s/^[^=]*=//; + $value =~ s/\s.*//; + $definitions{$name} = $value; + } +} + +sub setup_all_dirs() { + printf "** %s all build-directories\n", $opt_r ? "removing" : "setting up"; + &get_definitions; + &configure_tree unless ($opt_r); + &setup_lib_libcurses; + &setup_lib_libmenu; + &setup_lib_libform; # build after libmenu, for mf_common.h + &setup_lib_libpanel; + &setup_bin_tic; # do this first, for shared headers + &setup_bin_infocmp; + &setup_bin_tabs if ( -f "$source_dir/progs/tabs.c" ); + &setup_bin_toe; + &setup_bin_tput; + &setup_bin_tset; + &setup_terminfo; +} + +sub usage() { + print <<EOF; +Usage: ncu2openbsd [options] [sourcetree] + +Options: + -d DST specify destination (default: /usr/src) + -n no-op, do not update destination + -r remove update, restore sources from ".orig" + -t enable ncurses trace + -v verbose + -x build each directory after setting up +EOF + exit; +} + +$Getopt::Std::STANDARD_HELP_VERSION = 1; +&getopts('d:nrtvx') || &usage(); +$opt_d = "/usr/src" unless ($opt_d); +&usage() unless ( $#ARGV <= 0 ); + +if ( $#ARGV == 0 ) { + if ( -f $ARGV[0] ) { + printf "** unpacking sources: %s\n", $ARGV[0]; + &unpack( $ARGV[0] ); + } + else { + &check_sourcedir( $ARGV[0] ); + } +} +else { + &check_sourcedir("."); +} + +&setup_all_dirs; + +# move out of temp-directory to allow cleanup. +chdir $current; + +1; diff --git a/deps/ncurses-6.3/misc/ncurses-config.in b/deps/ncurses-6.3/misc/ncurses-config.in new file mode 100644 index 0000000..7b02ac2 --- /dev/null +++ b/deps/ncurses-6.3/misc/ncurses-config.in @@ -0,0 +1,328 @@ +#!@SHELL@ +# $Id: ncurses-config.in,v 1.50 2021/08/07 21:36:14 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 2006-2015,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: Thomas E. Dickey, 2006-on + +LANG=C; export LANG +LANGUAGE=C; export LANGUAGE +LC_ALL=C; export LC_ALL +LC_CTYPE=C; export LC_CTYPE + +prefix="@prefix@" +exec_prefix="@exec_prefix@" + +bindir="@bindir@" +includedir="@includedir@" +libdir="@libdir@" +datarootdir="@datarootdir@" +datadir="@datadir@" +mandir="@mandir@" + +THIS="@LIB_NAME@@USE_LIB_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. +if [ -n "$RPATH_LIST" ] +then + save_IFS="$IFS" + IFS='@PATH_SEPARATOR@' + filtered= + for item in $RPATH_LIST + do + case "$item" in + ./*|../*|*/..|*/../*) + ;; + *) + [ -n "$filtered" ] && filtered="${filtered}@PATH_SEPARATOR@" + filtered="${filtered}${item}" + ;; + esac + done + IFS="$save_IFS" + # if the result is empty, there is little we can do to fix it + RPATH_LIST="$filtered" +fi + +# with --disable-overwrite, we installed into a subdirectory, but transformed +# the headers to include like this: +# <ncurses@LIB_SUFFIX@/curses.h> +if [ x@WITH_OVERWRITE@ = xno ]; then + case $includedir in + $prefix/include/ncurses@LIB_SUFFIX@@EXTRA_SUFFIX@) + includedir=`echo "$includedir" | sed -e 's,/[^/]*$,,'` + ;; + esac +fi + +LIBS="@LIBS@" +if [ "@TINFO_NAME@" = "@LIB_NAME@" ]; then + LIBS="-l${THIS} $LIBS" +else + LIBS="-l${THIS} -l${TINFO_LIB} $LIBS" +fi + +# Ignore -L options which do not correspond to an actual directory, or which +# are standard library directories (i.e., the linker is supposed to search +# those directories). +# +# There is no portable way to find the list of standard library directories. +# Require a POSIX shell anyway, to keep this simple. +lib_flags= +for opt in -L$libdir @EXTRA_PKG_LDFLAGS@ $LIBS +do + case $opt in + -specs*) # ignore linker specs-files which were used to build library + continue + ;; + -Wl,-z,*) # ignore flags used to manipulate shared image + continue + ;; + -Wl,--dynamic-linker*) # ignore ELF interpreter + continue + ;; + -L*) + lib_check=`echo "x$opt" | sed -e 's/^.-L//'` + [ -d "$lib_check" ] || continue + case "$lib_check" in + @LD_SEARCHPATH@) # skip standard libdir + if [ "$lib_check" = "$libdir" ] + then + lib_first=yes + IFS_save="$IFS" + IFS='|' + LIBDIRS="@LD_SEARCHPATH@" + for lib_check in $LIBDIRS + do + if [ -d "$lib_check" ] + then + if [ "$lib_check" != "$libdir" ] + then + lib_first=no + fi + break + fi + done + IFS="$IFS_save" + [ $lib_first = yes ] && continue + found=no + for check in $lib_flags + do + if [ "x$check" = "x$opt" ] + then + found=yes + break + fi + done + [ $found = yes ] && continue + : + else + continue + fi + ;; + *) + found=no + for check in $lib_flags + do + if [ "x$check" = "x$opt" ] + then + found=yes + break + fi + done + [ $found = yes ] && continue + ;; + esac + ;; + esac + lib_flags="$lib_flags $opt" +done + +[ $# = 0 ] && exec @SHELL@ $0 --error + +while [ $# -gt 0 ]; do + case "$1" in + # basic configuration + --prefix) + echo "$prefix" + ;; + --exec-prefix) + echo "$exec_prefix" + ;; + # 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 + ;; + --libs) + OPTS= + for opt in $lib_flags + do + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + done + printf "%s\n" "$OPTS" + ;; + --libs-only-L) + OPTS= + for opt in $lib_flags + do + case "x$opt" in + x-L*) + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + ;; + esac + done + printf "%s\n" "$OPTS" + ;; + --libs-only-l) + OPTS= + for opt in $lib_flags + do + case "x$opt" in + x-l*) + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + ;; + esac + done + printf "%s\n" "$OPTS" + ;; + --libs-only-other) + OPTS= + for opt in $lib_flags + do + case "x$opt" in + x-[lL]*) + ;; + *) + [ -n "$OPTS" ] && OPTS="$OPTS " + OPTS="${OPTS}${opt}" + ;; + esac + done + printf "%s\n" "$OPTS" + ;; + # identification + --version) + echo "@NCURSES_MAJOR@.@NCURSES_MINOR@.@NCURSES_PATCH@" + ;; + --abi-version) + echo "@cf_cv_abi_version@" + ;; + --mouse-version) + echo "@NCURSES_MOUSE_VERSION@" + ;; + # locations + --bindir) + echo "${bindir}" + ;; + --datadir) + echo "${datadir}" + ;; + --includedir) + INCS= + if [ "x@WITH_OVERWRITE@" = xno ]; then + INCS="${includesubdir}" + elif [ "${includedir}" != /usr/include ]; then + INCS="${includedir}" + fi + echo $INCS + ;; + --libdir) + echo "${libdir}" + ;; + --mandir) + echo "${mandir}" + ;; + --terminfo) + echo "@TERMINFO@" + ;; + --terminfo-dirs) + echo "@TERMINFO_DIRS@" + ;; + --termpath) + echo "@TERMPATH@" + ;; + # general info + --help) + cat <<ENDHELP +Usage: `basename $0` [options] + +Options: + --prefix echos the package-prefix of ${THIS} + --exec-prefix echos the executable-prefix of ${THIS} + + --cflags echos the C compiler flags needed to compile with ${THIS} + --libs echos the libraries needed to link with ${THIS} + + --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 + + --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} + + --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 + + --help prints this message +ENDHELP + ;; + --error|*) + @SHELL@ $0 --help 1>&2 + exit 1 + ;; + esac + shift +done +# vi:ts=4 sw=4 +# vile:shmode diff --git a/deps/ncurses-5.9/misc/ncurses.def b/deps/ncurses-6.3/misc/ncurses.def similarity index 100% rename from deps/ncurses-5.9/misc/ncurses.def rename to deps/ncurses-6.3/misc/ncurses.def diff --git a/deps/ncurses-5.9/misc/ncurses.ref b/deps/ncurses-6.3/misc/ncurses.ref similarity index 100% rename from deps/ncurses-5.9/misc/ncurses.ref rename to deps/ncurses-6.3/misc/ncurses.ref diff --git a/deps/ncurses-5.9/misc/ncurses.supp b/deps/ncurses-6.3/misc/ncurses.supp similarity index 95% rename from deps/ncurses-5.9/misc/ncurses.supp rename to deps/ncurses-6.3/misc/ncurses.supp index bca582c..29511ea 100644 --- a/deps/ncurses-5.9/misc/ncurses.supp +++ b/deps/ncurses-6.3/misc/ncurses.supp @@ -1,6 +1,7 @@ -# $Id: ncurses.supp,v 1.7 2008/09/20 18:43:42 tom Exp $ +# $Id: ncurses.supp,v 1.8 2020/02/02 23:34:34 tom Exp $ ############################################################################## -# Copyright (c) 2008 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 2008 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"), # diff --git a/deps/ncurses-5.9/misc/panel.def b/deps/ncurses-6.3/misc/panel.def similarity index 100% rename from deps/ncurses-5.9/misc/panel.def rename to deps/ncurses-6.3/misc/panel.def diff --git a/deps/ncurses-5.9/misc/panel.ref b/deps/ncurses-6.3/misc/panel.ref similarity index 100% rename from deps/ncurses-5.9/misc/panel.ref rename to deps/ncurses-6.3/misc/panel.ref diff --git a/deps/ncurses-5.9/misc/run_tic.in b/deps/ncurses-6.3/misc/run_tic.in similarity index 84% rename from deps/ncurses-5.9/misc/run_tic.in rename to deps/ncurses-6.3/misc/run_tic.in index c34302a..b335b48 100644 --- a/deps/ncurses-5.9/misc/run_tic.in +++ b/deps/ncurses-6.3/misc/run_tic.in @@ -1,7 +1,8 @@ #!@SHELL@ -# $Id: run_tic.in,v 1.32 2011/02/23 23:30:15 tom Exp $ +# $Id: run_tic.in,v 1.38 2020/02/15 15:30:53 tom Exp $ ############################################################################## -# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 2000-2012,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"), # @@ -36,20 +37,21 @@ # Assumes: # The leaf directory names (lib, tabset, terminfo) # -echo '** Building terminfo database, please wait...' +echo "** Building terminfo database, please wait..." # # The script is designed to be run from the misc/Makefile as # make install.data -: ${suffix:=@PROG_EXT@} +: ${suffix:=@EXEEXT@} : ${DESTDIR:=@DESTDIR@} : ${prefix:=@prefix@} : ${exec_prefix:=@exec_prefix@} : ${bindir:=@bindir@} : ${top_srcdir:=@top_srcdir@} : ${srcdir:=@srcdir@} +: ${datarootdir:=@datarootdir@} : ${datadir:=@datadir@} -: ${TIC_PATH:=@TIC_PATH@} +: ${TIC_PATH:=@TIC@} : ${ticdir:=@TERMINFO@} : ${source:=@TERMINFO_SRC@} : ${LN_S:="@LN_S@"} @@ -83,7 +85,7 @@ then fi elif test "$TIC_PATH" = unknown then - echo '? no tic program found' + echo "? no tic program found" exit 1 fi else @@ -104,11 +106,12 @@ SHLIB_HOST=@host_os@ export SHLIB_HOST # don't use user's TERMINFO variable -TERMINFO=${DESTDIR}$ticdir ; export TERMINFO +unset TERMINFO_DIRS +TERMINFO="${DESTDIR}$ticdir" ; export 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%'` +TICDIR=`echo "$TERMINFO" | sed -e 's%/share/\([^/]*\)$%/lib/\1%'` # Parent directory may not exist, which would confuse the install for hashed # database. Fix. @@ -122,7 +125,13 @@ 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. -( test -d "$TERMINFO" && cd $TERMINFO && rm -fr ? 2>/dev/null ) +if test -d "$TERMINFO" +then + ( cd "$TERMINFO" && rm -fr ? 2>/dev/null ) +elif test -f "$TERMINFO.db" +then + ( rm -f "$TERMINFO.db" 2>/dev/null ) +fi if test "$ext_funcs" = 1 ; then cat <<EOF @@ -136,11 +145,12 @@ Running $TIC_PATH to install $TERMINFO ... document, and install the terminfo without the -x option. EOF -if ( $TIC_PATH -x -s -o $TERMINFO $source ) +$TIC_PATH -V +if ( $TIC_PATH -x -s -o "$TERMINFO" $source ) then - echo '** built new '$TERMINFO + echo "** built new $TERMINFO" else - echo '? tic could not build '$TERMINFO + echo "? tic could not build $TERMINFO" exit 1 fi else @@ -155,11 +165,12 @@ Running $TIC_PATH to install $TERMINFO ... document, and install the terminfo without the -x option. EOF -if ( $TIC_PATH -s -o $TERMINFO $source ) +$TIC_PATH -V +if ( $TIC_PATH -s -o "$TERMINFO" $source ) then - echo '** built new '$TERMINFO + echo "** built new $TERMINFO" else - echo '? tic could not build '$TERMINFO + echo "? tic could not build $TERMINFO" exit 1 fi fi @@ -169,12 +180,12 @@ fi # 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 ) + ( rm -f "$TICDIR" 2>/dev/null ) + if ( cd "$TICDIR" 2>/dev/null ) then - cd $TICDIR + cd "$TICDIR" TICDIR=`pwd` - if test $TICDIR != $TERMINFO ; then + if test "$TICDIR "!= "$TERMINFO "; 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." @@ -189,11 +200,11 @@ if test "$TICDIR" != "$TERMINFO" ; then if test "$RELATIVE" != "$ticdir" ; then RELATIVE=../`echo $ticdir|sed -e 's%^'$prefix'/%%' -e 's%^/%%'` fi - if ( @LN_S@ $RELATIVE $TICDIR ) + if ( @LN_S@ "$RELATIVE" "$TICDIR" ) then - echo '** sym-linked '$TICDIR' for compatibility' + echo "** sym-linked $TICDIR for compatibility" else - echo '** could not sym-link '$TICDIR' for compatibility' + echo "** could not sym-link $TICDIR for compatibility" fi fi fi diff --git a/deps/ncurses-5.9/misc/shlib b/deps/ncurses-6.3/misc/shlib similarity index 95% rename from deps/ncurses-5.9/misc/shlib rename to deps/ncurses-6.3/misc/shlib index a3ed810..7b93d17 100755 --- a/deps/ncurses-5.9/misc/shlib +++ b/deps/ncurses-6.3/misc/shlib @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 1998-2003,2005 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2005,2007 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"), # @@ -29,7 +30,7 @@ # # Author: Thomas E. Dickey <dickey@clark.net> 1996 # -# $Id: shlib,v 1.11 2007/01/13 17:09:52 tom Exp $ +# $Id: shlib,v 1.14 2021/09/04 15:55:29 tom Exp $ # Use this script as a wrapper when running executables linked to shared # libraries on systems that use the $LD_LIBRARY_PATH variable and don't embed # the soname's path within the linked executable (such as IRIX), e.g, @@ -80,7 +81,7 @@ q="" for p in lib ../lib ../../lib ../../../lib do if test -d $p; then - q=`cd $p; pwd` + q=`cd $p || exit; pwd` break elif test -f configure && test ! -d ../$p ; then break @@ -101,7 +102,7 @@ if test -n "$q" ; then elif test -n "$LD_LIBRARY_PATH"; then system=unix else - for r in $q/*.* + for r in "$q"/*.* do if test -f "$r" then diff --git a/deps/ncurses-5.9/misc/tabset/std b/deps/ncurses-6.3/misc/tabset/std similarity index 100% rename from deps/ncurses-5.9/misc/tabset/std rename to deps/ncurses-6.3/misc/tabset/std diff --git a/deps/ncurses-5.9/misc/tabset/stdcrt b/deps/ncurses-6.3/misc/tabset/stdcrt similarity index 100% rename from deps/ncurses-5.9/misc/tabset/stdcrt rename to deps/ncurses-6.3/misc/tabset/stdcrt diff --git a/deps/ncurses-5.9/misc/tabset/vt100 b/deps/ncurses-6.3/misc/tabset/vt100 similarity index 100% rename from deps/ncurses-5.9/misc/tabset/vt100 rename to deps/ncurses-6.3/misc/tabset/vt100 diff --git a/deps/ncurses-5.9/misc/tabset/vt300 b/deps/ncurses-6.3/misc/tabset/vt300 similarity index 100% rename from deps/ncurses-5.9/misc/tabset/vt300 rename to deps/ncurses-6.3/misc/tabset/vt300 diff --git a/deps/ncurses-5.9/misc/tdlint b/deps/ncurses-6.3/misc/tdlint similarity index 85% rename from deps/ncurses-5.9/misc/tdlint rename to deps/ncurses-6.3/misc/tdlint index c0e652b..8ff5a40 100755 --- a/deps/ncurses-5.9/misc/tdlint +++ b/deps/ncurses-6.3/misc/tdlint @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 1998 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998,2000 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"), # @@ -29,7 +30,7 @@ # # Author: Thomas E. Dickey <dickey@clark.net> 1996 # -# $Id: tdlint,v 1.5 2000/10/28 20:53:36 tom Exp $ +# $Id: tdlint,v 1.8 2021/09/04 15:55:29 tom Exp $ # # Lint-script that allows user's own lint libraries, in addition to the ones # installed in the system. @@ -44,16 +45,16 @@ if test -z "$ARCH" ; then exit 1 else case $ARCH in - AIX) set - $* -Nn4000 + AIX) set - "$@" -Nn4000 ;; - IRIX) set - $* -n -lc + IRIX) set - "$@" -n -lc ;; - FreeBSD) set - $* -g -p -u -v -z + FreeBSD) set - "$@" -g -p -u -v -z ;; SunOS) case `uname -r` in 5.*) ARCH=Solaris - set - $* -n -lc + set - "$@" -n -lc ;; esac ;; @@ -62,7 +63,7 @@ fi # LIBDIR=$HOME/lib/$ARCH/lint ;export LIBDIR for p in $HOME/lib/$ARCH/lint /usr/lib/lint /usr/lib do - if [ -d $p ] + if [ -d "$p" ] then DIRS="$DIRS $p" fi @@ -73,15 +74,15 @@ do case $1 in -D*\"*) ;; -L*) - DIRS="`echo $1|sed -e 's/^-L//'` $DIRS" + DIRS="`echo "$1"|sed -e 's/^-L//'` $DIRS" ;; -l*) - lib="llib-l`echo $1 | sed -e 's/^-l//'`.ln" + lib="llib-l`echo "$1" | sed -e 's/^-l//'`.ln" found=no for p in $DIRS do - echo -n testing $p/$lib - if [ -f $p/$lib ] + printf "testing %s" "$p/$lib" + if [ -f "$p/$lib" ] then LIBS="$LIBS $p/$lib" echo " (ok)" @@ -110,4 +111,4 @@ do shift done # -eval lint $OPT $FILES $LIBS +exec lint $OPT $FILES $LIBS diff --git a/deps/ncurses-6.3/misc/terminfo.src b/deps/ncurses-6.3/misc/terminfo.src new file mode 100644 index 0000000..080b46d --- /dev/null +++ b/deps/ncurses-6.3/misc/terminfo.src @@ -0,0 +1,27276 @@ +######## TERMINAL TYPE DESCRIPTIONS SOURCE FILE +# +# This version of terminfo.src is distributed with ncurses and is maintained +# by Thomas E. Dickey (TD). +# +# Report bugs and new terminal descriptions to +# bug-ncurses@gnu.org +# +# $Revision: 1.943 $ +# $Date: 2021/10/14 00:40:38 $ +# +# 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 +# stopped updates several years ago); we have decided to not change the header +# unless there is also a change in content. +# +# To further muddy the waters, it is noted that changes to this file as part of +# maintenance of ncurses (since 1996) are generally conceded to be copyright +# under the ncurses MIT-style license. That was the effect of the agreement +# which the principal authors of ncurses made in 1998. However, since much of +# the file itself is of unknown authorship (and the disclaimer below makes it +# obvious that Raymond cannot or will not convey rights over those parts), +# there is no explicit copyright notice on the file itself. +# +# It would also be a nuisance to split the file into unknown/known authorship +# and move pieces as they are maintained, since many of the maintenance changes +# have been small corrections to Raymond's translations to/from termcap format, +# correcting the data but not the accompanying annotations. +# +# In any case, note that almost half of this file is not data but annotations +# which reflect creative effort. Furthermore, the structure of entries to +# reuse common chunks also is creative (and subject to copyright). Finally, +# some portions of the data are derivative work under a compatible MIT-style +# license from xterm. +# +#------------------------------------------------------------------------------ +# https://invisible-island.net/ncurses/ncurses.faq.html#terminfo_copying +# https://invisible-island.net/personal/copyrights.html#removing_notes +#------------------------------------------------------------------------------ +# +# Version 10.2.1 +# terminfo syntax +# +# Eric S. Raymond (current maintainer) +# John Kunze, Berkeley +# Craig Leres, Berkeley +# +# Please e-mail changes to terminfo@thyrsus.com; the old termcap@berkeley.edu +# address is no longer valid. The latest version can always be found at +# <http://www.tuxedo.org/terminfo>. +# +# PURPOSE OF THIS FILE: +# +# This file describes the capabilities of various character-cell terminals, +# as needed by software such as screen-oriented editors. +# +# Other terminfo and termcap files exist, supported by various OS vendors +# or as relics of various older versions of UNIX. This one is the longest +# and most comprehensive one in existence. It subsumes not only the entirety +# of the historical 4.4BSD, GNU, System V and SCO termcap files and the BRL +# termcap file, but also large numbers of vendor-maintained termcap and +# terminfo entries more complete and carefully tested than those in historical +# termcap/terminfo versions. +# +# Pointers to related resources (including the ncurses distribution) may +# be found at <http://www.tuxedo.org/terminfo>. +# +# INTERNATIONALIZATION: +# +# This file uses only the US-ASCII character set (no ISO8859 characters). +# +# This file assumes a US-ASCII character set. If you need to fix this, start +# by global-replacing \E(B and \E)B with the appropriate ISO 6429 enablers +# for your character set. \E(A and \E)A enables the British character set +# with the pound sign at position 2/3. +# +# In a Japanese-processing environment using EUC/Japanese or Shift-JIS, +# C1 characters are considered the first-byte set of the Japanese encodings, +# so \E)0 should be avoided in <enacs> and initialization strings. +# +# FILE FORMAT: +# +# The version you are looking at may be in any of three formats: master +# (terminfo with OT capabilities), stock terminfo, or termcap. You can tell +# which by the format given in the header above. +# +# The master format is accepted and generated by the terminfo tools in the +# ncurses suite; it differs from stock (System V-compatible) terminfo only +# in that it admits a group of capabilities (prefixed `OT') equivalent to +# various obsolete termcap capabilities. You can, thus, convert from master +# to stock terminfo simply by filtering with `sed "/OT[^,]*,/s///"'; but if +# you have ncurses `tic -I' is nicer (among other things, it automatically +# outputs entries in a canonical form). +# +# The termcap version is generated automatically from the master version +# using tic -C. This filtering leaves in the OT capabilities under their +# original termcap names. All translated entries fit within the 1023-byte +# string-table limit of archaic termcap libraries except where explicitly +# noted below. Note that the termcap translation assumes that your termcap +# library can handle multiple tc capabilities in an entry. 4.4BSD has this +# capability. Older versions of GNU termcap, through 1.3, do not. +# +# For details on these formats, see terminfo(5) in the ncurses distribution, +# and termcap(5) in the 4.4BSD Unix Programmer's Manual. Be aware that 4.4BSD +# curses has been declared obsolete by the caretakers of the 4.4BSD sources +# as of June 1995; they are encouraging everyone to migrate to ncurses. +# +# Note: unlike some other distributed terminfo files (Novell Unix & SCO's), +# no entry in this file has embedded comments. This is so source translation +# to termcap only has to carry over leading comments. Also, no name field +# contains embedded whitespace (such whitespace confuses rdist). +# +# Further note: older versions of this file were often installed with an editor +# script (reorder) that moved the most common terminal types to the front of +# the file. This should no longer be necessary, as the file is now ordered +# roughly by type frequency with ANSI/VT100 and other common types up front. +# +# Some information has been merged in from terminfo files distributed by +# USL and SCO (see COPYRIGHTS AND OTHER DELUSIONS below). Much information +# comes from vendors who maintain official terminfos for their hardware +# (notably DEC and Wyse). +# +# A detailed change history is included at the end of this file. +# +# FILE ORGANIZATION: +# +# Comments in this file begin with # - they cannot appear in the middle +# of a terminfo/termcap entry (this feature had to be sacrificed in order +# to allow standard terminfo and termcap syntax to be generated cleanly from +# the master format). Individual capabilities are commented out by +# placing a period between the colon and the capability name. +# +# The file is divided up into major sections (headed by lines beginning with +# the string "########") and minor sections (beginning with "####"); do +# +# grep "^####" <file> | more +# +# to see a listing of section headings. The intent of the divisions is +# (a) to make it easier to find things, and (b) to order the database so +# that important and frequently-encountered terminal types are near the +# front (so that you'll get reasonable search efficiency from a linear +# search of the termcap form even if you don't use reorder). Minor sections +# usually correspond to manufacturers or standard terminal classes. +# Parenthesized words following manufacturer names are type prefixes or +# product line names used by that manufacturers. +# +# HOW TO READ THE ENTRIES: +# +# The first name in an entry is the canonical name for the model or +# type, last entry is a verbose description. Others are mnemonic synonyms for +# the terminal. +# +# Terminal names look like <manufacturer> <model> - <modes/options> +# The part to the left of the dash, if a dash is present, describes the +# particular hardware of the terminal. The part to the right may be used +# for flags indicating special ROMs, extra memory, particular terminal modes, +# or user preferences. +# +# All names should be in lower case, for consistency in typing. +# +# The following are conventionally used suffixes: +# -2p Has two pages of memory. Likewise 4p, 8p, etc. +# -am Enable auto-margin. +# -m Monochrome. Suppress color support +# -mc Magic-cookie. Some terminals (notably older Wyses) can +# only support one attribute without magic-cookie lossage. +# Their base entry is usually paired with another that +# uses magic cookies to support multiple attributes. +# -nam No auto-margin - suppress <am> capability +# -nl No labels - suppress soft labels +# -ns No status line - suppress status line +# -rv Terminal in reverse video mode (black on white) +# -s Enable status line. +# -vb Use visible bell (<flash>) rather than <bel>. +# -w Wide - in 132 column mode. +# If a name has multiple suffixes and one is a line height, that one should +# go first. Thus `aaa-30-s-rv' is recommended over `aaa-s-rv-30'. +# +# Entries with embedded plus signs are designed to be included through use/tc +# capabilities, not used as standalone entries. +# +# To avoid search clashes, some older all-numeric names for terminals have +# been removed (i.e., "33" for the Model 33 Teletype, "2621" for the HP2621). +# All primary names of terminals now have alphanumeric prefixes. +# +# Comments marked "esr" are mostly results of applying the termcap-compiler +# code packaged with ncurses and contemplating the resulting error messages. +# In many cases, these indicated obvious fixes to syntax garbled by the +# composers. In a few cases, I was able to deduce corrected forms for garbled +# capabilities by looking at context. All the information in the original +# entries is preserved in the comments. +# +# In the comments, terminfo capability names are bracketed with <> (angle +# brackets). Termcap capability names are bracketed with :: (colons). +# +# INTERPRETATION OF USER CAPABILITIES +# +# The System V Release 4 and XPG4 terminfo format defines ten string +# capabilities for use by applications, <u0>...<u9>. In this file, we use +# certain of these capabilities to describe functions which are not covered +# by terminfo. The mapping is as follows: +# +# u9 terminal enquire string (equiv. to ANSI/ECMA-48 DA) +# u8 terminal answerback description +# u7 cursor position request (equiv. to VT100/ANSI/ECMA-48 DSR 6) +# u6 cursor position report (equiv. to ANSI/ECMA-48 CPR) +# +# The terminal enquire string <u9> should elicit an answerback response +# from the terminal. Common values for <u9> will be ^E (on older ASCII +# terminals) or \E[c (on newer VT100/ANSI/ECMA-48-compatible terminals). +# +# The cursor position request (<u7>) string should elicit a cursor position +# report. A typical value (for VT100 terminals) is \E[6n. +# +# The terminal answerback description (u8) must consist of an expected +# answerback string. The string may contain the following scanf(3)-like +# escapes: +# +# %c Accept any character +# %[...] Accept any number of characters in the given set +# +# The cursor position report (<u6>) string must contain two scanf(3)-style +# %d format elements. The first of these must correspond to the Y coordinate +# and the second to the %d. If the string contains the sequence %i, it is +# taken as an instruction to decrement each value after reading it (this is +# the inverse sense from the cup string). The typical CPR value is +# \E[%i%d;%dR (on VT100/ANSI/ECMA-48-compatible terminals). +# +# These capabilities are used by tack(1m), the terminfo action checker +# (distributed with ncurses 5.0). +# +# TABSET FILES +# +# All the entries in this file have been edited to assume that the tabset +# files directory is /usr/share/tabset, in conformance with the File Hierarchy +# Standard for Linux and open-source BSD systems. Some vendors (notably Sun) +# use /usr/lib/tabset or (more recently) /usr/share/lib/tabset. +# +# No curses package we know of actually uses these files. If their location +# is an issue, you will have to hand-patch the file locations before compiling +# this file. +# +# REQUEST FOR CONTACT INFORMATION AND HISTORICAL MATERIAL +# +# As the ANSI/ECMA-48 standard and variants take firmer hold, and as +# character-cell terminals are increasingly replaced by X displays, much of +# this file is becoming a historical document (this is part of the reason for +# the new organization, which puts ANSI types, xterm, Unix consoles, +# and vt100 up front in confidence that this will catch 95% of new hardware). +# +# For the terminal types still alive, I'd like to have manufacturer's +# contact data (Internet address and/or snail-mail + phone). +# +# I'm also interested in enriching the comments so that the latter portions of +# the file do in fact become a potted history of VDT technology as seen by +# UNIX hackers. Ideally, I'd like the headers for each manufacturer to +# include its live/dead/out-of-the-business status, and for as many +# terminal types as possible to be tagged with information like years +# of heaviest use, popularity, and interesting features. +# +# I'm especially interested in identifying the obscure entries listed under +# `Miscellaneous obsolete terminals, manufacturers unknown' before the tribal +# wisdom about them gets lost. If you know a lot about obscure old terminals, +# please go to the terminfo resource page, grab the UFO file (ufo.ti), and +# eyeball it for things you can identify and describe. +# +# If you have been around long enough to contribute, please read the file +# with this in mind and send me your annotations. +# +# COPYRIGHTS AND OTHER DELUSIONS +# +# The BSD ancestor of this file had a standard Regents of the University of +# California copyright with dates from 1980 to 1993. +# +# Some information has been merged in from a terminfo file SCO distributes. +# It has an obnoxious boilerplate copyright which I'm ignoring because they +# took so much of the content from the ancestral BSD versions of this file +# and didn't attribute it, thereby violating the BSD Regents' copyright. +# +# Not that anyone should care. However many valid functions copyrights may +# serve, putting one on a termcap/terminfo file with hundreds of anonymous +# contributors makes about as much sense as copyrighting a wall-full of +# graffiti -- it's legally dubious, ethically bogus, and patently ridiculous. +# +# This file deliberately has no copyright. It belongs to no one and everyone. +# If you claim you own it, you will merely succeed in looking like a fool. +# Use it as you like. Use it at your own risk. Copy and redistribute freely. +# There are no guarantees anywhere. Svaha! +# + +######## ANSI, UNIX CONSOLE, AND SPECIAL TYPES +# +# This section describes terminal classes and brands that are still +# quite common. +# + +#### Specials +# +# Special "terminals". These are used to label tty lines when you don't +# know what kind of terminal is on it. The characteristics of an unknown +# terminal are the lowest common denominator - they look about like a ti 700. +# + +dumb|80-column dumb tty, + am, + cols#80, + bel=^G, cr=\r, cud1=\n, ind=\n, +unknown|unknown terminal type, + gn, use=dumb, +lpr|printer|line printer, + OTbs, hc, os, + cols#132, lines#66, + bel=^G, cr=\r, cub1=^H, cud1=\n, ff=^L, ind=\n, +glasstty|classic glass tty interpreting ASCII control characters, + OTbs, am, + cols#80, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, ht=^I, kcub1=^H, + kcud1=\n, nel=\r\n, .kbs=^H, + +vanilla|dumb tty, + OTbs, + bel=^G, cr=\r, cud1=\n, ind=\n, + +# This is almost the same as "dumb", but with no prespecified width. +# DEL and ^C are hardcoded to act as kill characters. +# ^D acts as a line break (just like newline). +# It also interprets +# \033];xxx\007 +# for compatibility with xterm -TD +9term|Plan9 terminal emulator for X, + am, + OTnl=\n, bel=^G, cud1=\n, + +#### ANSI.SYS/ISO 6429/ECMA-48 Capabilities +# +# See the end-of-file comment for more on these. +# + +# ANSI capabilities are broken up into pieces, so that a terminal +# implementing some ANSI subset can use many of them. +ansi+local1|ANSI normal-mode cursor-keys, + cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A, +ansi+local|ANSI normal-mode parameterized cursor-keys, + cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, + cuu=\E[%p1%dA, use=ansi+local1, +ansi+tabs|ANSI tab-stops, + cbt=\E[Z, ht=^I, hts=\EH, tbc=\E[3g, +ansi+inittabs|ANSI initial tab-stops, + it#8, use=ansi+tabs, +ansi+erase|ANSI clear screen/line, + clear=\E[H\E[J, ed=\E[J, el=\E[K, +ansi+rca|ANSI relative cursor-addressing, + hpa=\E[%p1%{1}%+%dG, vpa=\E[%p1%{1}%+%dd, +ansi+rca2|ANSI relative cursor-addressing, + hpa=\E[%i%p1%dG, vpa=\E[%i%p1%dd, +ansi+cup|ANSI absolute cursor-addressing, + cup=\E[%i%p1%d;%p2%dH, home=\E[H, +ansi+rep|ANSI repeat-character, + rep=%p1%c\E[%p2%{1}%-%db, +ansi+idl1|ANSI insert/delete one line, + dl1=\E[M, il1=\E[L, +ansi+idl|ANSI insert/delete lines, + dl=\E[%p1%dM, il=\E[%p1%dL, use=ansi+idl1, +ansi+idc1|ANSI insert/delete one character, + dch1=\E[P, ich1=\E[@, rmir=\E[4l, smir=\E[4h, +ansi+idc|ANSI insert/delete characters, + dch=\E[%p1%dP, ich=\E[%p1%d@, use=ansi+idc1, +ansi+arrows|ANSI normal-mode cursor-keys, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + khome=\E[H, +ansi+sgr|ANSI graphic renditions, + blink=\E[5m, invis=\E[8m, rev=\E[7m, + sgr=\E[0%?%p3%t;7%;%?%p4%t;5%;%?%p7%t;8%;m, + sgr0=\E[0m, +ansi+sgrso|ANSI standout only, + rmso=\E[m, smso=\E[7m, +ansi+sgrul|ANSI underline only, + rmul=\E[m, smul=\E[4m, +ansi+sgrbold|ANSI graphic renditions; assuming terminal has bold; not dim, + bold=\E[1m, + sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1; + %;%?%p7%t8;%;m, + use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, +ansi+sgrdim|ANSI graphic renditions; assuming terminal has dim; not bold, + dim=\E[2m, + sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p5%t2; + %;%?%p7%t8;%;m, + use=ansi+sgr, use=ansi+sgrso, use=ansi+sgrul, + +# ECMA-48 does not specify scroll-regions, but most people consider it to be +# "ANSI" because it is widely-supported. See ecma+index for the standard form. +ansi+csr|ANSI scroll-region plus cursor save & restore, + csr=\E[%i%p1%d;%p2%dr, rc=\E8, sc=\E7, + +# The normal (ANSI) flavor of "media copy" building block asserts that +# characters sent to the printer do not echo on the screen. DEC terminals +# can also be put into autoprinter mode, where each line is sent to the +# printer as you move off that line, e.g., by a carriage return. +ansi+pp|ANSI printer port, + mc5i, + mc0=\E[i, mc4=\E[4i, mc5=\E[5i, +dec+pp|DEC autoprinter mode, + mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, + +# The IBM PC alternate character set. Plug this into any Intel console entry. +# We use \E[11m for rmacs rather than \E[12m so the <acsc> string can use the +# ROM graphics for control characters such as the diamond, up- and down-arrow. +# This works with the System V, Linux, and BSDI consoles. It's a safe bet this +# will work with any Intel console, they all seem to have inherited \E[11m +# from the ANSI.SYS de-facto standard. +klone+acs|alternate character set for ansi.sys displays, + 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, + rmacs=\E[10m, smacs=\E[11m, + +# Highlight controls corresponding to the ANSI.SYS standard. Most +# console drivers for Intel boxes obey these. Makes the same assumption +# about \E[11m as klone+acs. True ANSI/ECMA-48 would have <rmso=\E[27m>, +# <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, + +# Most Intel boxes do not treat "invis" (invisible) text. +klone+sgr8|attribute control for ansi.sys displays, + invis=\E[8m, + sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6 + %t;1%;%?%p7%t;8%;%?%p9%t;11%;m, + use=klone+sgr, + +# Highlight controls corresponding to the ANSI.SYS standard. *All* +# console drivers for Intel boxes obey these. Does not assume \E[11m will +# work; uses \E[12m instead, which is pretty bulletproof but loses you the ACS +# diamond and arrow characters under curses. +klone+sgr-dumb|attribute control for ansi.sys displays (no ESC [ 11 m), + blink=\E[5m, bold=\E[1m, invis=\E[8m, rev=\E[7m, 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%;%?%p7%t;8%;%?%p9%t;12%;m, + sgr0=\E[0;10m, smacs=\E[12m, smso=\E[7m, smul=\E[4m, + use=klone+acs, + +# KOI8-R (RFC1489) acs (alternate character set) +# From: Qing Long <qinglong@Bolizm.ihep.su>, 24 Feb 1996. +klone+koi8acs|alternate character set for ansi.sys displays with KOI8 charset, + acsc=+\020\,\021-\036.^_0\215`\004a\237f\234g\232h\222i + \220j\205k\203l\202m\204n\212o\213p\216q\0r\217s\214t + \206u\207v\210w\211x\201y\230z\231{\267|\274}L~ + \225, + rmacs=\E[10m, smacs=\E[11m, + +# ANSI.SYS color control. The setab/setaf caps depend on the coincidence +# between SVr4/XPG4's color numbers and ANSI.SYS attributes. Here are longer +# but equivalent strings that don't rely on that coincidence: +# 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}%=%t3%e%p1%d%;m, +# The DOS 5 manual asserts that these sequences meet the ISO 6429 standard. +# They match a subset of ECMA-48. +klone+color|color control for ansi.sys and ISO6429-compatible displays, + colors#8, ncv#3, pairs#64, + op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + +# This is better than klone+color, it doesn't assume white-on-black as the +# default color pair, but many `ANSI' terminals don't grok the <op> cap. +ecma+color|color control for ECMA-48-compatible terminals, + AX, + colors#8, ncv#3, pairs#64, + op=\E[39;49m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + +ecma+italics|ECMA-48 italics, + ritm=\E[23m, sitm=\E[3m, + +# 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, + +ecma+strikeout|ECMA-48 strikeout/crossed-out, + rmxx=\E[29m, smxx=\E[9m, + +# ECMA-48 does not include the VT100 indexing and scroll-margins. It has its +# own variation. +ecma+index|ECMA-48 scroll up/down, + indn=\E[%p1%dS, rin=\E[%p1%dT, + +# For comparison, here are all the capabilities implied by the Intel +# Binary Compatibility Standard (level 2) that fit within terminfo. +# For more detail on this rather pathetic standard, see the comments +# near the end of this file. +ibcs2|Intel Binary Compatibility Standard prescriptions, + cbt=\E[Z, clear=\Ec, cub=\E[%p1%dD, cub1=\E[1D, + cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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=ecma+index, + +#### ANSI/ECMA-48 terminals and terminal emulators +# +# See near the end of this file for details on ANSI conformance. +# Don't mess with these entries! Lots of other entries depend on them! +# +# This section lists entries in a least-capable to most-capable order. +# if you're in doubt about what `ANSI' matches yours, try them in that +# order and back off from the first that breaks. + +# ansi-mr is for ANSI terminals with ONLY relative cursor addressing +# and more than one page of memory. It uses local motions instead of +# direct cursor addressing, and makes almost no assumptions. It does +# assume auto margins, no padding and/or xon/xoff, and a 24x80 screen. +ansi-mr|mem rel cup ansi, + am, xon, + cols#80, lines#24, use=vanilla, use=ansi+erase, + use=ansi+local1, + +# ansi-mini is a bare minimum ANSI terminal. This should work on anything, but +# beware of screen size problems and memory relative cursor addressing. +ansi-mini|any ansi terminal with pessimistic assumptions, + am, xon, + cols#80, lines#24, use=vanilla, use=ansi+cup, + use=ansi+erase, + +# ansi-mtabs adds relative addressing and minimal tab support +ansi-mtabs|any ansi terminal with pessimistic assumptions, + it#8, + ht=^I, use=ansi-mini, use=ansi+local1, + +# ANSI X3.64 from emory!mlhhh (Hugh Hansard) via BRL +# +# The following is an entry for the full ANSI 3.64 (1977). It lacks +# padding, but most terminals using the standard are "fast" enough +# not to require any -- even at 9600 bps. If you encounter problems, +# try including the padding specifications. +# +# Note: the :as: and :ae: specifications are not implemented here, for +# the available termcap documentation does not make clear WHICH alternate +# character set to specify. ANSI 3.64 seems to make allowances for several. +# Please make the appropriate adjustments to fit your needs -- that is +# if you will be using alternate character sets. +# +# There are very few terminals running the full ANSI 3.64 standard, +# so I could only test this entry on one verified terminal (Visual 102). +# I would appreciate the results on other terminals sent to me. +# +# Please report comments, changes, and problems to: +# +# U.S. MAIL: Hugh Hansard +# Box: 22830 +# Emory University +# Atlanta, GA. 30322. +# +# USENET {akgua,msdc,sb1,sb6,gatech}!emory!mlhhh. +# +# (Added vt100 <rc>,<sc> to quiet a tic warning --esr) +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, csr=\E[%i%p1%d;%p2%dr, + cub1=^H, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu1=\E[A, dch1=\E[P, dl1=\E[M$<5*/>, ed=\E[J, el=\E[K, + home=\E[H, ht=^I, il1=\E[L$<5*/>, ind=\ED, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, + kf2=\EOR, kf4=\EOS, khome=\E[H, nel=\r\ED, rc=\E8, ri=\EM, + rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, smir=\E[4h, + smso=\E[7m, smul=\E[4m, + +# Procomm and some other ANSI emulations don't recognize all of the ANSI- +# standard capabilities. This entry deletes <cuu>, <cuf>, <cud>, <cub>, and +# <vpa>/<hpa> capabilities, forcing curses to use repetitions of <cuu1>, +# <cuf1>, <cud1> and <cub1>. Also deleted <ich> and <ich1>, as QModem up to +# 5.03 doesn't recognize these. Finally, we delete <rep> and <ri>, which seem +# to confuse many emulators. On the other hand, we can count on these programs +# doing <rmacs>/<smacs>/<sgr>. Older versions of this entry featured +# <invis=\E[9m>, but <invis=\E[8m> now seems to be more common under +# ANSI.SYS influence. +# From: Eric S. Raymond <esr@snark.thyrsus.com> Oct 30 1995 +pcansi-m|pcansi-mono|ibm-pc terminal programs claiming to be ansi (mono mode), + OTbs, am, mir, msgr, + cols#80, it#8, lines#24, + bel=^G, cbt=\E[Z, clear=\E[H\E[J, cr=\r, cub1=\E[D, + cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, + hts=\EH, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, tbc=\E[3g, + use=klone+sgr-dumb, +pcansi-25-m|pcansi25m|ibm-pc terminal programs with 25 lines (mono mode), + lines#25, use=pcansi-m, +pcansi-33-m|pcansi33m|ibm-pc terminal programs with 33 lines (mono mode), + lines#33, use=pcansi-m, +pcansi-43-m|ansi43m|ibm-pc terminal programs with 43 lines (mono mode), + lines#43, use=pcansi-m, +# The color versions. All PC emulators do color... +pcansi|ibm-pc terminal programs claiming to be ansi, + use=klone+color, use=pcansi-m, +pcansi-25|pcansi25|ibm-pc terminal programs with 25 lines, + lines#25, use=pcansi, +pcansi-33|pcansi33|ibm-pc terminal programs with 33 lines, + lines#33, use=pcansi, +pcansi-43|pcansi43|ibm-pc terminal programs with 43 lines, + lines#43, use=pcansi, + +# ansi-m -- full ANSI X3.64 with ANSI.SYS-compatible attributes, no color. +# If you want pound signs rather than dollars, replace `B' with `A' +# in the <s0ds>, <s1ds>, <s2ds>, and <s3ds> capabilities. +# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995 +ansi-m|ansi-mono|ANSI X3.64-1979 terminal with ANSI.SYS compatible attributes, + mc5i, + cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, + cuu=\E[%p1%dA, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, tbc=\E[3g, + vpa=\E[%i%p1%dd, use=ecma+index, use=pcansi-m, + +ansi+enq|ncurses extension for ANSI ENQ, + u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?%[;0123456789]c, + u9=\E[c, + +# ansi -- this terminfo expresses the largest subset of X3.64 that will fit in +# standard terminfo. Assumes ANSI.SYS-compatible attributes and color. +# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 6 1995 +ansi|ansi/pc-term compatible with color, + use=ansi+enq, use=ecma+color, use=klone+sgr8, use=ansi-m, + +# ansi-generic is a vanilla ANSI terminal. This is assumed to implement +# all the normal ANSI stuff with no extensions. It assumes +# insert/delete line/char is there, so it won't work with +# vt100 clones. It assumes video attributes for bold, blink, +# underline, and reverse, which won't matter much if the terminal +# can't do some of those. Padding is assumed to be zero, which +# shouldn't hurt since xon/xoff is assumed. +ansi-generic|ansiterm|generic ansi standard terminal, + am, xon, + cols#80, lines#24, use=vanilla, use=ansi+csr, use=ansi+cup, + use=ansi+rca, use=ansi+erase, use=ansi+tabs, + use=ansi+local, use=ansi+idc, use=ansi+idl, use=ansi+rep, + use=ansi+sgrbold, use=ansi+arrows, + +#### DOS ANSI.SYS variants +# +# This completely describes the sequences specified in the DOS 2.1 ANSI.SYS +# documentation (except for the keyboard key reassignment feature, which +# doesn't fit the <pfkey> model well). The klone+acs sequences were valid +# though undocumented. The <pfkey> capability is untested but should work for +# keys F1-F10 (%p1 values outside this range will yield unpredictable results). +# From: Eric S. Raymond <esr@snark.thyrsus.com> Nov 7 1995 +# +# DOS 2.0 (January 1983) documented these features in +# Chapter 13, "Using Extended Screen and Keyboard Control" -TD +ansi.sys-old|ANSI.SYS under PC-DOS 2.0, + OTbs, am, mir, msgr, xon, + cols#80, lines#25, + clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, u6=\E[%i%d;%dR, + u7=\E[6n, use=klone+color, use=klone+sgr8, + +# Keypad: Home=\0G Up=\0H PrPag=\0I +# ka1,kh kcuu1 kpp,ka3 +# +# Left=\0K 5=\0L Right=\0M +# kcub1 kb2 kcuf1 +# +# End=\0O Down=\0P NxPag=\0Q +# kc1,kend kcud1 kc3,knp +# +# Ins=\0R Del=\0S +# kich1 kdch1 +# +# On keyboard with 12 function keys, +# shifted f-keys: F13-F24 +# control f-keys: F25-F36 +# alt f-keys: F37-F48 +# The shift/control/alt keys do not modify each other, but alt overrides both, +# and control overrides shift. +# +# <pfkey> capability for F1-F48 -TD +ansi.sys|ANSI.SYS 3.1 and later versions, + el=\E[K, ka1=\0G, ka3=\0I, kb2=\0L, kbs=^H, kc1=\0O, kc3=\0Q, + kcbt=\0^O, kcub1=\0K, kcud1=\0P, kcuf1=\0M, kcuu1=\0H, + kdch1=\0S, kend=\0O, kf1=\0;, kf10=\0D, kf11=\0\205, + kf12=\0\206, kf13=\0T, kf14=\0U, kf15=\0V, kf16=\0W, + kf17=\0X, kf18=\0Y, kf19=\0Z, kf2=\0<, kf20=\0[, kf21=\0\\, + kf22=\0], kf23=\0\207, kf24=\0\210, kf25=\0\^, kf26=\0_, + kf27=\0`, kf28=\0a, kf29=\0b, kf3=\0=, kf30=\0c, kf31=\0d, + kf32=\0e, kf33=\0f, kf34=\0g, kf35=\0\211, kf36=\0\212, + kf37=\0h, kf38=\0i, kf39=\0j, kf4=\0>, kf40=\0k, kf41=\0l, + kf42=\0m, kf43=\0n, kf44=\0o, kf45=\0p, kf46=\0q, + kf47=\0\213, kf48=\0\214, kf5=\0?, kf6=\0@, kf7=\0A, kf8=\0B, + kf9=\0C, khome=\0G, kich1=\0R, knp=\0Q, kpp=\0I, + pfkey=\E[0;%?%p1%{11}%<%t%':'%e%p1%{13}%<%t%'z'%e%p1%{23}%< + %t%'G'%e%p1%{25}%<%t%'p'%e%p1%'#'%<%t%'E'%e%p1%'%'%<%t + %'f'%e%p1%'/'%<%t%'C'%e%{92}%;%p1%+%d;%p2"%s"p, + use=ansi.sys-old, + +# +# Define IBM PC keypad keys for vi as per MS-Kermit while using ANSI.SYS. +# This should only be used when the terminal emulator cannot redefine the keys. +# Since redefining keys with ansi.sys also affects PC-DOS programs, the key +# definitions must be restored. If the terminal emulator is quit while in vi +# or others using <smkx>/<rmkx>, the keypad will not be defined as per PC-DOS. +# The PgUp and PgDn are prefixed with ESC so that tn3270 can be used on Unix +# (^U and ^D are already defined for tn3270). The ESC is safe for vi but it +# does "beep". ESC ESC i is used for Ins to avoid tn3270 ESC i for coltab. +# Note that <kcub1> is always BS, because PC-dos can tolerate this change. +# Caution: vi is limited to 256 string bytes, longer crashes or weirds out vi. +# Consequently the End keypad key could not be set (it is relatively safe and +# actually useful because it sends ^@ O, which beeps and opens a line above). +ansi.sysk|ansisysk|PC-DOS 3.1 ANSI.SYS with keypad redefined for vi, + is2=U2\sPC-DOS\s3.1\sANSI.SYS\swith\skeypad\sredefined\sfor + \svi\s9-29-86\n\E[;75;8p, + rmkx=\E[;71;0;71p\E[;72;0;72p\E[;73;0;73p\E[;77;0;77p\E[;80; + 0;80p\E[;81;0;81p\E[;82;0;82p\E[;83;0;83p, + smkx=\E[;71;30p\E[;72;11p\E[;73;27;21p\E[;77;12p\E[;80;10p + \E[;81;27;4p\E[;82;27;27;105p\E[;83;127p, + use=ansi.sys, +# +# Adds ins/del line/character, hence vi reverse scrolls/inserts/deletes nicer. +nansi.sys|nansisys|PC-DOS Public Domain NANSI.SYS, + dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L, + is2=U3 PC-DOS Public Domain NANSI.SYS 9-23-86\n, + use=ansi.sys, +# +# See ansi.sysk and nansi.sys above. +nansi.sysk|nansisysk|PC-DOS Public Domain NANSI.SYS with keypad redefined for vi, + dch1=\E[1P, dl1=\E[1M, ich1=\E[1@, il1=\E[1L, + is2=U4\sPC-DOS\sPublic\sDomain\sNANSI.SYS\swith\skeypad + \sredefined\sfor\svi\s9-29-86\n\E[;75;8p, + use=ansi.sysk, + +#### Atari ST terminals + +# From Guido Flohr <gufl0000@stud.uni-sb.de>. +# +tw52|tw52-color|Toswin window manager with color, + bce, + colors#16, pairs#0x100, + oc=\Eb?\Ec0, op=\Eb?\Ec0, + setab=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1 + %{48}%+%c, + setaf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1 + %{48}%+%c, + setb=\Ec%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1 + %{48}%+%c, + setf=\Eb%?%p1%{0}%=%t?%e%p1%{7}%=%t0%e%p1%{15}%=%t7%e%p1 + %{48}%+%c, + use=tw52-m, +tw52-m|Toswin window manager monochrome, + ul, + ma#999, + bold=\Eya, dch1=\Ea, dim=\EyB, + is2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, rev=\EyP, rmso=\EzQ, + rmul=\EzH, rs2=\Ev\Eq\Ez_\Ee\Ei\Eb?\Ec0, sgr0=\Ez_, + smso=\EyQ, smul=\EyH, use=at-m, +tt52|Atari TT medium and high resolution, + lines#30, use=at-color, +st52-color|at-color|atari-color|atari_st-color|Atari ST with color, + bce, + colors#16, pairs#0x100, + is2=\Ev\Eq\Ee\Eb1\Ec0, rs2=\Ev\Eq\Ee\Eb1\Ec0, + setab=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3} + %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1 + %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e + %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14} + %=%t6%e?, + setaf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3} + %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1 + %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e + %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14} + %=%t6%e?, + setb=\Ec%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3} + %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1 + %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e + %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%= + %t6%e?, + setf=\Eb%?%p1%{0}%=%t1%e%p1%{1}%=%t2%e%p1%{2}%=%t3%e%p1%{3} + %=%t>%e%p1%{4}%=%t4%e%p1%{5}%=%t7%e%p1%{6}%=%t5%e%p1 + %{7}%=%t0%e%p1%{8}%=%t8%e%p1%{9}%=%t9%e%p1%{10}%=%t:%e + %p1%{11}%=%t;%e%p1%{12}%=%t<%e%p1%{13}%=%t=%e%p1%{14}%= + %t6%e?, + use=st52, +st52|st52-m|at|at-m|atari|atari-m|atari_st|atarist-m|Atari ST, + am, eo, mir, npc, + cols#80, it#8, lines#24, + bel=^G, civis=\Ef, clear=\EE, cnorm=\Ee, cr=\r, cub1=\ED, + cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, el1=\Eo, home=\EH, ht=^I, + il1=\EL, ind=\n, is2=\Ev\Eq\Ee, kLFT=\Ed, kRIT=\Ec, kbs=^H, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=^?, + kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, kf13=\Er, kf14=\Es, + kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, kf19=\Ex, kf2=\EQ, + kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, kf6=\EU, kf7=\EV, kf8=\EW, + kf9=\EX, khlp=\EH, khome=\EE, kich1=\EI, knp=\Eb, kpp=\Ea, + kund=\EK, nel=\r\n, rc=\Ek, rev=\Ep, ri=\EI, rmso=\Eq, + rs2=\Ev\Eq\Ee, sc=\Ej, sgr0=\Eq, smso=\Ep, +tw100|Toswin vt100 window manager, + eo, mir, msgr, xon, + colors#8, cols#80, it#8, lines#24, pairs#64, vt#3, + acsc=++\,\,--..00II``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, civis=\Ef, + clear=\E[2J\E[H, cnorm=\Ee, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\EB, + cuf=\E[%p1%dC, cuf1=\EC, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, 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, kbs=^H, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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, 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, rc=\E8, 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>, + sc=\E7, + 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' + %=%t3%e7%;m, + setf=\E[3%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' + %=%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, +# The entries for stv52 and stv52pc probably need a revision. +stv52|MiNT virtual console, + am, msgr, + cols#80, it#8, lines#30, + bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, + cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.", + dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, + ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, + kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, + kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, + kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, + kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, + op=\Eb@\EcO, rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, + rmso=\Eq, rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, + smcup=\Ev\Ee\Ez_, smso=\Ep, smul=\EyH, +stv52pc|MiNT virtual console with PC charset, + am, msgr, + cols#80, it#8, lines#30, + acsc=+\257\,\256-\^.v0\333I\374`\177a\260f\370g\361h\261j + \331k\277l\332m\300n\305o\377p-q\304r-s_t+u+v+w+x\263y + \363z\362{\343|\366}\234~\371, + bel=^G, blink=\Er, bold=\EyA, civis=\Ef, clear=\EE, + cnorm=\E. \Ee, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E.", + dim=\Em, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, + ind=\n$<2*/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kdch1=^?, kf1=\EP, kf10=\EY, kf11=\Ep, kf12=\Eq, + kf13=\Er, kf14=\Es, kf15=\Et, kf16=\Eu, kf17=\Ev, kf18=\Ew, + kf19=\Ex, kf2=\EQ, kf20=\Ey, kf3=\ER, kf4=\ES, kf5=\ET, + kf6=\EU, kf7=\EV, kf8=\EW, kf9=\EX, khlp=\EH, khome=\EE, + kich1=\EI, knp=\Eb, kpp=\Ea, kund=\EK, nel=\r\n$<2*/>, + rev=\Ep, ri=\EI$<2*/>, rmcup=\Ev\E. \Ee\Ez_, rmso=\Eq, + rmul=\EzH, rs1=\Ez_\Eb@\EcA, sgr0=\Ez_, smcup=\Ev\Ee\Ez_, + smso=\Ep, smul=\EyH, + +# From: Simson L. Garfinkel <simsong@media-lab.mit.edu> +atari-old|Atari st, + OTbs, am, + cols#80, it#8, lines#25, + clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, + ed=\EJ, el=\EK, ht=^I, il1=\EL, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, ri=\EI, rmso=\Eq, sgr0=\Eq, smso=\Ep, +# UniTerm terminal program for the Atari ST: 49-line VT220 emulation mode +# From: Paul M. Aoki <aoki@ucbvax.berkeley.edu> +uniterm|uniterm49|UniTerm VT220 emulator with 49 lines, + lines#49, + is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;49r\E[49;1H, use=vt220-base, +# MiNT VT52 emulation. 80 columns, 25 rows. +# MiNT is Now TOS, the operating system which comes with all Ataris now +# (mainly Atari Falcon). This termcap is for the VT52 emulation you get +# under tcsh/zsh/bash/sh/ksh/ash/csh when you run MiNT in `console' mode +# From: Per Persson <pp@gnu.ai.mit.edu>, 27 Feb 1996 +st52-old|Atari ST with VT52 emulation, + am, km, + cols#80, lines#25, + bel=^G, civis=\Ef, clear=\EH\EJ, cnorm=\Ee, cr=\r, cub1=\ED, + cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=\EA, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, il1=\EL, + ind=\n, ka1=\E#7, ka3=\E#5, kb2=\E#9, kbs=^H, kc1=\E#1, + kc3=\E#3, kclr=\E#7, kcub1=\E#K, kcud1=\E#P, kcuf1=\E#M, + kcuu1=\E#H, kf0=\E#D, kf1=\E#;, kf2=\E#<, kf3=\E#=, kf4=\E#>, + kf5=\E#?, kf6=\E#@, kf7=\E#A, kf8=\E#B, kf9=\E#C, khome=\E#G, + kil1=\E#R, kind=\E#2, kri=\E#8, lf0=f10, nel=\r\n, rc=\Ek, + ri=\EI, rmcup=, rmso=\Eq, rs1=\Ez_\Eb@\EcA, sc=\Ej, sgr0=\Eq, + smcup=\Ee, smso=\Ep, + +#### BeOS +# +# BeOS entry for Terminal program Seems to be almost ANSI +beterm|BeOS Terminal, + am, eo, mir, msgr, xenl, xon, + colors#8, cols#80, it#8, lines#25, ncv#5, pairs#64, + bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, + hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, kspd=^Z, nel=\r\n, op=\E[m, rc=\E8, + rev=\E[7m, ri=\EM, rmir=\E[4l, rmkx=\E[?4l, rmso=\E[m, + rmul=\E[24m, rs1=\Ec, sc=\E7, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, setb=\E[%p1%{40}%+%cm, + setf=\E[%p1%{30}%+%cm, sgr0=\E[0;10m, smir=\E[4h, + 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=vt220+pcedit, + +#### Linux consoles +# + +# This entry is good for the 1.2.13 or later version of the Linux console. +# +# *************************************************************************** +# * * +# * WARNING: * +# * Linuxes come with a default keyboard mapping kcbt=^I. This entry, in * +# * response to user requests, assumes kcbt=\E[Z, the ANSI/ECMA reverse-tab * +# * character. Here are the keymap replacement lines that will set this up: * +# * * +# keycode 15 = Tab Tab +# alt keycode 15 = Meta_Tab +# shift keycode 15 = F26 +# string F26 ="\033[Z" +# * * +# * This has to use a key slot which is unfortunate (any unused one will * +# * do, F26 is the higher-numbered one). The change ought to be built * +# * into the kernel tables. * +# * * +# *************************************************************************** +# +# All linux kernels since 1.2.13 (at least) set the screen size +# themselves; this entry assumes that capability. +# +linux-basic|Linux console, + am, bce, eo, mir, msgr, xenl, xon, + it#8, ncv#18, U8#1, + 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, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, 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, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, + el=\E[K, el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, home=\E[H, + hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, ind=\n, kb2=\E[G, kbs=^?, kcbt=\E[Z, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, kmous=\E[M, kspd=^Z, nel=\r\n, + rc=\E8, rev=\E[7m, ri=\EM, rmam=\E[?7l, rmir=\E[4l, + rmso=\E[27m, rmul=\E[24m, 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%;%?%p9%t;11%;m, + smam=\E[?7h, smir=\E[4h, smul=\E[4m, tbc=\E[3g, + vpa=\E[%i%p1%dd, use=vt220+pcedit, use=vt102+enq, + use=klone+sgr, use=ecma+color, use=linux+sfkeys, + +linux+decid|ncurses extension for Linux console DECID, + u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?6c, u9=\EZ, + +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~, + +linux-m|Linux console no color, + colors@, pairs@, + setab@, setaf@, setb@, setf@, use=linux, + +# The 1.3.x kernels add color-change capabilities; if yours doesn't have this +# and it matters, turn off <ccc>. The %02x escape used to implement this is +# not supposedly back-portable to older SV curses (although it has worked fine +# on Solaris for several years) and not supported in ncurses versions before +# 1.9.9. +linux-c-nc|Linux console with color-change, + ccc, + initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/ + %02x%p4%{255}%*%{1000}%/%02x, + oc=\E]R, use=linux-basic, +# From: Dennis Henriksen <opus@osrl.dk>, 9 July 1996 +linux-c|Linux console 1.3.6+ for older ncurses, + ccc, + initc=\E]P%?%p1%{9}%>%t%p1%{10}%-%'a'%+%c%e%p1%d%;%p2%{255} + %*%{1000}%/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a' + %+%c%e%gx%d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a' + %+%c%e%gx%d%;%p3%{255}%*%{1000}%/%Pr%gr%{16}%/%Px%?%gx + %{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%gr%{15}%&%Px%?%gx + %{9}%>%t%gx%{10}%-%'a'%+%c%e%gx%d%;%p4%{255}%*%{1000} + %/%Pr%gr%{16}%/%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx + %d%;%gr%{15}%&%Px%?%gx%{9}%>%t%gx%{10}%-%'a'%+%c%e%gx + %d%;, + oc=\E]R, use=linux-basic, + +# The 2.2.x kernels add a private mode that sets the cursor type; use that to +# get a block cursor for cvvis. +# reported by Frank Heckenbach <frank@g-n-u.de>. +linux2.2|Linux 2.2.x console, + civis=\E[?25l\E[?1c, cnorm=\E[?25h\E[?0c, + cvvis=\E[?25h\E[?8c, use=linux-c-nc, + +# Linux 2.6.x has a fix for SI/SO to work with UTF-8 encoding added here: +# http://lkml.iu.edu/hypermail/linux/kernel/0602.2/0738.html +# Although the kernel has mappings for these, they were not in the default +# font (tested with Debian and Fedora): +# '`' diamond +# '~' scan line 1 +# 'p' scan line 3 +# 'r' scan line 7 +# '_' scan line 9 +# +# The fix for SI/SO is part of a configurable (i.e., "optional") kernel feature +# misleadingly called CONFIG_CONSOLE_TRANSLATIONS. Disabling that not only +# omits the line-drawing using SI/SO, but also part/all of the Unicode feature: +# +# https://cateee.net/lkddb/web-lkddb/CONSOLE_TRANSLATIONS.html +# "This enables support for font mapping and Unicode translation on virtual consoles." +# +# This mailing list thread in July 2008 illustrates: +# +# https://marc.info/?t=121734656700005&r=1&w=4 +# "commit a29ccf6f823a84d89e1c7aaaf221cf7282022024 break console on slackware 12.1" +# +# The change which made it configurable was to reduce the size for use in +# embedded systems. Some background is found in +# +# https://lwn.net/Articles/284767/ +# "An interview with the new embedded maintainers" +linux2.6|Linux 2.6.x console, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, + enacs=\E)0, rmacs=^O, + sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 + %t;2%;%?%p6%t;1%;m%?%p9%t\016%e\017%;, + sgr0=\E[m\017, smacs=^N, use=linux2.2, + +# The 3.0 kernel adds support for clearing scrollback buffer (capability E3). +# It is the same as xterm's erase-saved-lines feature. +# +# Linux 3.0 was released in July 2011. The keyboard utilities (kbd) are +# used for configuring its keyboard mappings. +# +# kbd 1.14 was released before that (January 2008), but due to its placement +# late in the Linux 2.6.x series had no immediate effect for most users. That +# provided a default mapping for shift-tab to the (misnamed) Meta_Tab, i.e., +# the same as Alt-Tab. +# +# The suggested mapping for the conventional \E[Z is provided in this entry as +# an extended key to lessen user surprise -TD +linux3.0|Linux 3.0 kernels, + kcbt=\E^I, E3=\E[3J, kcbt2=\E[Z, use=linux2.6, + +# This is Linux console for ncurses. +linux|Linux console, + use=linux3.0, + +# Subject: linux 2.6.26 vt back_color_erase +# Changes to the Linux console driver broke bce model as reported in +# https://bugzilla.novell.com/show_bug.cgi?id=418613 +# apparently from +# http://lkml.org/lkml/2008/4/26/305 +# http://lkml.org/lkml/2008/10/3/66 +linux2.6.26|Linux console w/o bce, + bce@, use=linux2.6, + +# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file +linux-nic|Linux with ich/ich1 suppressed for non-curses programs, + ich@, ich1@, use=linux, + +# This assumes you have used setfont(8) to load one of the Linux koi8-r fonts. +# acsc entry from Pavel Roskin" <pavel@absolute.spb.su>, 29 Sep 1997. +linux-koi8|Linux with koi8 alternate character set, + acsc=+\020\,\021-\030.^Y0\215`\004a\221f\234g\237h\220i + \276j\205k\203l\202m\204n\212o~p\0q\0r\0s_t\206u\207v + \211w\210x\201y\230z\231{\267|\274~\224, + use=linux, use=klone+koi8acs, + +# Another entry for KOI8-r with Qing Long's acsc. +# (which one better complies with the standard?) +linux-koi8r|Linux with koi8-r alternate character set, + use=linux, use=klone+koi8acs, + +# Entry for the latin1 and latin2 fonts +linux-lat|Linux with latin1 or latin2 alternate character set, + acsc=+\020\,\021-\030.^Y0\333`\004a\013f\370g\361h\260i + \316j\211k\214l\206m\203n\305o~p\304q\212r\304s_t\207u + \215v\301w\302x\205y\363z\362{\343|\330}\234~\376, + use=linux, + +# This uses graphics from VT codeset instead of from cp437. +# reason: cp437 (aka "straight to font") is not functional under luit. +# from: Andrey V Lukyanov <land@long.yar.ru>. +linux-vt|Linux console using VT codes for graphics, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz~~, + rmacs=\E(K, rmpch@, sgr@, sgr0=\E[0m\E(K\017, smacs=\E(0, + smpch@, use=linux, + +# This is based on the Linux console (relies on the console to perform some +# 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,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|jfbterm|Kanji ON Linux console, + ccc@, hs, + civis@, cnorm@, cvvis@, dsl=\E[?H, flash@, fsl=\E[?F, initc@, + initp@, kcbt@, oc@, op=\E[37;40m, rs1=\Ec, tsl=\E[?T, + use=linux, + +# FbTerm +# Another variant. There are two parts (src, src/lib) with the latter +# comprising the escape-sequence parsing. The copyright notice on that +# says it is based on GTerm by Timothy Miller. +# +# The original developer "dragchan" has left, but as of March 2017 there is +# (still dead) code from May 2015 here: +# https://github.com/izmntuk/fbterm +# +# The acsc string may be incorrect. +# +# Not used here, the program recognizes escapes for italic, underline and +# dim, rendering those as green, cyan and gray respectively. +fbterm|FbTerm for Linux with framebuffer, + colors#0x100, pairs#0x10000, + 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, + initc=\E[3;%p1%d;%p2%d;%p3%d;%p4%d}, rmacs=\E[10m, + setab=\E[2;%p1%d}, setaf=\E[1;%p1%d}, + 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, + sgr0=\E[0;10m, smacs=\E[11m, use=linux, + +# 16-color linux console entry; this works with a 256-character +# console font but bright background colors turn into dim ones when +# you use a 512-character console font. This uses bold for bright +# foreground colors and blink for bright background colors. +# +# Interestingly, the original version of this entry in 2009 used a documented +# (but nonstandard) SGR 21, which was supported in the Linux console since 1992 +# as an equivalent for SGR 22. Long after (early 2018), someone modified the +# console driver to make it ignore SGR 21 because the ECMA-48 standard +# suggested a different use for that particular code: +# +# https://github.com/torvalds/linux/commit/65d9982d7e523a1a8e7c9af012da0d166f72fc56#diff-7da3c215d12c9f6b88e1a37d38b116f0 +# +# Two years later, someone (unfamiliar with ECMA-48 this time) documented it: +# +# https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/commit/man4/console_codes.4?id=a133a6bc03d751a424fe0a4adea2198757599615 +# +# For background, refer to the report on bug-ncurses: +# +# https://lists.gnu.org/archive/html/bug-ncurses/2019-10/msg00059.html +linux-16color|Linux console with 16 colors, + colors#16, ncv#42, pairs#0x100, + setab=\E[4%p1%{8}%m%d%?%p1%{7}%>%t;5%e;25%;m, + setaf=\E[3%p1%{8}%m%d%?%p1%{7}%>%t;1%e;22%;m, + use=linux, + +# bterm (bogl 0.1.18) +# Implementation is in bogl-term.c +# Key capabilities from linux terminfo entry +# +# Notes: +# bterm only supports acs using wide-characters, has case for these: qjxamlkut +# bterm does not support sgr, since it only processes one parameter -TD +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, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, 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, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + sgr0=\E[0m, smacs=^N, smso=\E[7m, smul=\E[4m, + use=vt220+pcedit, use=vt220+cvis, + +#### Mach +# + +# From: Matthew Vernon <mcv21@pick.sel.cam.ac.uk> +mach|Mach console, + am, km, + cols#80, it#8, lines#25, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r, + cub=\E[%p1%dD, 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, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n, + kbs=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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, khome=\E[H, 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, +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, + +# From: Samuel Thibault +# Source: git://git.sv.gnu.org/hurd/gnumach.git +# Files: i386/i386at/kd.c +# +# Added nel, hpa, sgr and removed rmacs, smacs based on source -TD +mach-gnu|GNU Mach, + acsc=+>\,<-\^.v0\333`+a\261f\370g\361h\260i#j\331k\277l + \332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x + \263y\363z\362{\343|\330}\234~\376, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, ech=\E[%p1%dX, + el1=\E[1K, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@, + invis=\E[8m, nel=\EE, + sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t; + 2%;%?%p6%t;1%;%?%p7%t;8%;m, + use=ecma+index, use=mach, + +mach-gnu-color|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, + +# From: Marcus Brinkmann +# http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/ +# +# Comments in the original are summarized here: +# +# hurd uses 8-bit characters (km). +# +# Although it doesn't do XON/XOFF, we don't want padding characters (xon). +# +# Regarding compatibility to vt100: hurd doesn't specify <xenl>, as we don't +# have the eat_newline_glitch. It doesn't support setting or removing tab +# stops (hts/tbc). +# +# hurd uses ^H instead of \E[D for cub1, as only ^H implements <bw> and it is +# one byte instead three. +# +# <ich1> is not included because hurd has insert mode. +# +# hurd doesn't use ^J for scrolling, because this could put things into the +# scrollback buffer. +# +# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode. +# This is a GNU extension. +# +# The original has commented-out ncv, but is restored here. +# +# Reading the source, RIS resets cnorm, but not xmous. +hurd|The GNU Hurd console server, + am, bce, bw, eo, km, mir, msgr, xenl, xon, + colors#8, it#8, ncv#18, pairs#64, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\Ec, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + el1=\E[1K, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, + ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, + invis=\E[8m, kb2=\E[G, kbs=^?, kcbt=\E[Z, kcub1=\EOD, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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~, + kich1=\E[2~, kmous=\E[M, kspd=^Z, nel=\r\n, op=\E[39;49m, + rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m, rmir=\E[4l, + rmso=\E[27m, rmul=\E[24m, rs1=\EM\E[?1000l, sc=\E7, + 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%;%?%p5%t; + 2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;11%;m, + sgr0=\E[0m, smacs=\E[11m, smir=\E[4h, smso=\E[7m, + smul=\E[4m, vpa=\E[%i%p1%dd, grbom=\E[>1l, gsbom=\E[>1h, + use=vt220+pcedit, use=ecma+index, use=ecma+italics, + use=vt220+cvis, + +#### QNX +# + +# QNX 4.0 Console +# Michael's original version of this entry had <am@>, <smcup=\Ei>, +# <rmcup=\Eh\ER>; this was so terminfo applications could write the lower +# right corner without triggering a scroll. The ncurses terminfo library can +# handle this case with the <ich1> capability, and prefers <am> for better +# optimization. Bug: The <op> capability resets attributes. +# From: Michael Hunter <mphunter@qnx.com> 30 Jul 1996 +# (removed: <sgr=%?%p1%t\E<%;%p2%t\E[%;%p3%t\E(%;%p4%t\E{%;%p6%t\E<%;,>) +qnx|qnx4|QNX console, + daisy, km, mir, msgr, xhpa, xt, + colors#8, cols#80, it#4, lines#25, ncv#3, pairs#8, + acsc=O\333a\261j\331k\277l\332m\300n\305o\337q\304s\334t + \303u\264v\301w\302x\263, + bel=^G, blink=\E{, bold=\E<, civis=\Ey0, clear=\EH\EJ, + cnorm=\Ey1, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ey2, + dch1=\Ef, dl1=\EF, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\Ee, + il1=\EE, ind=\n, kBEG=\377\356, kCAN=\377\263, + kCMD=\377\267, kCPY=\377\363, kCRT=\377\364, + kDL=\377\366, kEND=\377\301, kEOL=\377\311, + kEXT=\377\367, kFND=\377\370, kHLP=\377\371, + kHOM=\377\260, kIC=\377\340, kLFT=\377\264, + kMOV=\377\306, kMSG=\377\304, kNXT=\377\272, + kOPT=\377\372, kPRT=\377\275, kPRV=\377\262, + kRDO=\377\315, kRES=\377\374, kRIT=\377\266, + kRPL=\377\373, kSAV=\377\307, kSPD=\377\303, + kUND=\377\337, kbeg=\377\300, kcan=\377\243, kcbt=\377\0, + kclo=\377\343, kclr=\377\341, kcmd=\377\245, + kcpy=\377\265, kcrt=\377\305, kctab=\377\237, + kcub1=\377\244, kcud1=\377\251, kcuf1=\377\246, + kcuu1=\377\241, kdch1=\377\254, kdl1=\377\274, + ked=\377\314, kel=\377\310, kend=\377\250, kent=\377\320, + kext=\377\270, kf1=\377\201, kf10=\377\212, + kf11=\377\256, kf12=\377\257, kf13=\377\213, + kf14=\377\214, kf15=\377\215, kf16=\377\216, + kf17=\377\217, kf18=\377\220, kf19=\377\221, + kf2=\377\202, kf20=\377\222, kf21=\377\223, + kf22=\377\224, kf23=\377\333, kf24=\377\334, + kf25=\377\225, kf26=\377\226, kf27=\377\227, + kf28=\377\230, kf29=\377\231, kf3=\377\203, + kf30=\377\232, kf31=\377\233, kf32=\377\234, + kf33=\377\235, kf34=\377\236, kf35=\377\276, + kf36=\377\277, kf37=\377\321, kf38=\377\322, + kf39=\377\323, kf4=\377\204, kf40=\377\324, + kf41=\377\325, kf42=\377\326, kf43=\377\327, + kf44=\377\330, kf45=\377\331, kf46=\377\332, + kf47=\377\316, kf48=\377\317, kf5=\377\205, kf6=\377\206, + kf7=\377\207, kf8=\377\210, kf9=\377\211, kfnd=\377\346, + khlp=\377\350, khome=\377\240, khts=\377\342, + kich1=\377\253, kil1=\377\273, kind=\377\261, + kmov=\377\351, kmrk=\377\355, kmsg=\377\345, + knp=\377\252, knxt=\377\312, kopn=\377\357, + kopt=\377\353, kpp=\377\242, kprt=\377\255, + kprv=\377\302, krdo=\377\336, kref=\377\354, + kres=\377\360, krfr=\377\347, kri=\377\271, + krmir=\377\313, krpl=\377\362, krst=\377\352, + ksav=\377\361, kslt=\377\247, kspd=\377\335, + ktbc=\377\344, kund=\377\365, mvpa=\E!%p1%02d, op=\ER, + rep=\Eg%p2%{32}%+%c%p1%c, rev=\E(, ri=\EI, rmcup=\Eh\ER, + rmso=\E), rmul=\E], rs1=\ER, setb=\E@%p1%Pb%gb%gf%d%d, + setf=\E@%p1%Pf%gb%gf%d%d, sgr0=\E}\E]\E>\E), smcup=\Ei, + smso=\E(, smul=\E[, +# +# +qnxt|qnxt4|QNX4 terminal, + crxm, use=qnx4, +# +qnxm|QNX4 with mouse events, + maddr#1, + chr=\E/, cvr=\E", is1=\E/0t, mcub=\E/>1h, mcub1=\E/>7h, + mcud=\E/>1h, mcud1=\E/>1l\E/>9h, mcuf=\E/>1h\E/>9l, + mcuf1=\E/>7l, mcuu=\E/>6h, mcuu1=\E/>6l, rmicm=\E/>2l, + smicm=\E/>2h, use=qnx4, +# +qnxw|QNX4 windows, + xvpa, use=qnxm, +# +# Monochrome QNX4 terminal or console. Setting this terminal type will +# allow an application running on a color console to behave as if it +# were a monochrome terminal. Output will be through stdout instead of +# console writes because the term routines will recognize that the +# terminal name starts with 'qnxt'. +# +qnxtmono|Monochrome QNX4 terminal or console, + colors@, pairs@, + scp@, use=qnx4, + +# From: Federico Bianchi <bianchi@pc-arte2.arte.unipi.it>, 1 Jul 1998 +# (esr: commented out <scp> and <rmcup> to avoid warnings.) +# (TD: derive from original qnx4 entry) +qnxt2|QNX 2.15 serial terminal, + am, + civis@, cnorm@, cvvis@, dch1@, ich1@, kRES@, kRPL@, kUND@, kspd@, + rep@, rmcup@, rmso=\E>, setb@, setf@, smcup@, smso=\E<, use=qnx4, + +# QNX ANSI terminal definition +qansi-g|QNX ANSI, + am, eslok, hs, xon, + colors#8, cols#80, it#8, lines#25, ncv#19, pairs#64, wsl#80, + acsc=Oa``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + 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, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[1M, dsl=\E[r, ech=\E[%p1%dX, ed=\E[J, + el=\E[K, el1=\E[1K\E[X, flash=\E[?5h$<200>\E[?5l, + fsl=\E[?6h\E8, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, + ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, il1=\E[1L, + ind=\E[S, invis=\E[9m, + is2=\E>\E[?1l\E[?7h\E[0;10;39;49m, is3=\E(B\E)0, + kBEG=\ENn, kCAN=\E[s, kCMD=\E[t, kCPY=\ENs, kCRT=\ENt, + kDL=\ENv, kEXT=\ENw, kFND=\ENx, kHLP=\ENy, kHOM=\E[h, + kLFT=\E[d, kNXT=\E[u, kOPT=\ENz, kPRV=\E[v, kRIT=\E[c, + kbs=^H, kcan=\E[S, kcbt=\E[Z, kclo=\ENc, kclr=\ENa, + kcmd=\E[G, kcpy=\E[g, kctab=\E[z, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, 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~, + 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, + khome=\E[H, khts=\ENb, kich1=\E[@, kil1=\E[`, kind=\E[a, + kmov=\ENi, kmrk=\ENm, kmsg=\ENe, knp=\E[U, kopn=\ENo, + kopt=\ENk, 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, + rev=\E[7m, ri=\E[T, rmacs=^O, rmam=\E[?7l, rmso=\E[27m, + rmul=\E[24m, 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} + %=%t3%e%p1%d%;m, + 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%;%?%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, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, + tsl=\E7\E1;24r\E[?6l\E[25;%i%p1%dH, use=ansi+rep, + use=att610+cvis0, use=ecma+index, +# +qansi|QNX ansi with console writes, + daisy, xhpa, use=qansi-g, +# +qansi-t|QNX ansi without console writes, + crxm, use=qansi, +# +qansi-m|QNX ansi with mouse, + maddr#1, + chr=\E[, cvr=\E], is1=\E[0t, mcub=\E[>1h, mcub1=\E[>7h, + mcud=\E[>1h, mcud1=\E[>1l\E[>9h, mcuf=\E[>1h\E[>9l, + mcuf1=\E[>7l, mcuu=\E[>6h, mcuu1=\E[>6l, rmicm=\E[>2l, + smicm=\E[>2h, use=qansi, +# +qansi-w|QNX ansi for windows, + xvpa, use=qansi-m, + +#### SCO consoles + +# SCO console and SOS-Syscons console for 386bsd +# (scoansi: had unknown capabilities +# :Gc=N:Gd=K:Gh=M:Gl=L:Gu=J:Gv=\072:\ +# :GC=E:GD=B:GH=D:GL=\64:GU=A:GV=\63:GR=C: +# :G1=?:G2=Z:G3=@:G4=Y:G5=;:G6=I:G7=H:G8=<:\ +# :CW=\E[M:NU=\E[N:RF=\E[O:RC=\E[P:\ +# :WL=\E[S:WR=\E[T:CL=\E[U:CR=\E[V:\ +# I renamed GS/GE/HM/EN/PU/PD/RT and added klone+sgr-dumb, based +# on the <smacs>=\E[12m -- esr) +# +# 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: +# F13-F24 are shifted F1-F12 +# F25-F36 are control F1-F12 +# F37-F48 are shift+control F1-F12 +# +# hpa/vpa work in the console, but not in scoterm: +# hpa=\E[%p1%dG, +# vpa=\E[%p1%dd, +# +# SCO's terminfo uses +# kLFT=\E[d, +# kRIT=\E[c, +# which do not work (console or scoterm). +# +# Console documents only 3 attributes can be set with SGR (so we don't use sgr). +scoansi-old|SCO Extended ANSI standard crt (5.0.5), + OTbs, am, bce, eo, xon, + colors#8, cols#80, it#8, lines#25, pairs#64, + acsc=+/\,.-\230.\2310[5566778899::;;<<==>>FFGGHHIIJJKKLLMMNN + OOPPQQRRSSTTUUVVWWXX`\204a0fxgqh2jYk?lZm@nEqDtCu4vAwBx3 + 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, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[=0;12C, dch=\E[%p1%dP, + dch1=\E[P, dispc=\E[=%p1%dg, dl=\E[%p1%dM, dl1=\E[M, + 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[@, il=\E[%p1%dL, il1=\E[L, + ind=\E[S, invis=\E[8m, kbeg=\E[E, kbs=^H, kcbt=\E[Z, + 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, 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, khome=\E[H, 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, + 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=ecma+index, +scoansi-new|SCO Extended ANSI standard crt (5.0.6), + km, + civis=\E[=0c, cnorm=\E[=1c, csr=\E[%i%p1%d;%p2%dr, + cvvis=\E[=2c, mgc=\E[=r, oc=\E[51m, op=\E[50m, + rep=\E[%p1%d;%p2%db, rmm=\E[=11L, + sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p6%t;1%;%? + %p7%t;8%;%?%p9%t;12%e;10%;m, + smgb=\E[=1;0m, smgbp=\E[=1;%i%p1%dm, + smglp=\E[=2;%i%p1%dm, smgr=\E[=3;0m, + smgrp=\E[=3;%i%p1%dm, smgt=\E[=0;0m, + smgtp=\E[=0;%i%p1%dm, smm=\E[=10L, + wind=\E[%i%p1%d;%p2%d;%i%p3%d;%p4%dr, + use=scoansi-old, +# make this easy to change... +scoansi|SCO Extended ANSI standard crt, + use=scoansi-old, + +#### SGI consoles + +# Sent by Stefan Stapelberg <stefan@rent-a-guru.de>, 24 Feb 1997, this is +# from SGI's terminfo database. SGI's entry shows F9-F12 with the codes +# for the application keypad mode. We have added iris-ansi-ap rather than +# change the original to keypad mode. +# +# (iris-ansi: added rmam/smam based on init string -- esr) +# +# This entry, and those derived from it, is used in xwsh (also known as +# winterm). Some capabilities that do not fit into the terminfo model +# include the shift- and control-functionkeys: +# +# F1-F12 generate different codes when shift or control modifiers are used. +# For example: +# F1 \E[001q +# shift F1 \E[013q +# control-F1 \E[025q +# +# In application keypad mode, F9-F12 generate codes like vt100 PF1-PF4, i.e., +# \EOP to \EOS. The shifted and control modifiers still do the same thing. +# +# The cursor keys also have different codes: +# control-up \E[162q +# control-down \E[165q +# control-left \E[159q +# control-right \E[168q +# +# shift-up \E[161q +# shift-down \E[164q +# shift-left \E[158q +# shift-right \E[167q +# +# control-tab \[072q +# +iris-ansi|iris-ansi-net|IRIS emulating 40 line ANSI terminal (almost VT100), + am, + 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, cub=\E[%p1%dD, + cub1=\E[D, 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, cvvis=\E[10/y\E[=1h\E[=2l\E[=6h, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, kend=\E[146q, + kent=\r, kf1=\E[001q, kf10=\E[010q, kf11=\E[011q, + kf12=\E[012q, kf2=\E[002q, kf3=\E[003q, kf4=\E[004q, + kf5=\E[005q, kf6=\E[006q, kf7=\E[007q, kf8=\E[008q, + kf9=\E[009q, khome=\E[H, 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, +iris-ansi-ap|IRIS ANSI in application-keypad mode, + is2=\E[?1l\E=\E[?7h, kent=\EOM, kf10=\E[010q, + kf11=\E[011q, kf12=\E[012q, kf9=\E[009q, use=iris-ansi, + +# 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@, rc=\E8, rmul=\E[24m, rs1=\Ec, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, + use=ecma+italics, use=vt100+enq, use=klone+color, + use=iris-ansi-ap, + +#### OpenBSD consoles +# +# From: Alexei Malinin <Alexei.Malinin@mail.ru>; October, 2011. +# +# The following terminal descriptions for the AMD/Intel PC console +# were prepared based on information contained in the OpenBSD-4.9 +# termtypes.master and wscons(4) & vga(4) manuals (2010, November). +# +# Added bce based on testing with tack -TD +# Added several capabilities to pccon+base, reading wsemul_vt100_subr.c -TD +# Changed kbs to DEL and removed keys that duplicate stty settings -TD +# +# Notes from testing with vttest: +# fails wrapping test +# no 8-bit controls +# identifies as vt200 with selective erase, but does not implement DECSCA +# 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=^?, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\E[3~, 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~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, + krfr=^R, +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, + sgr=\E[0%?%p1%p3%|%t;7%;%?%p6%t;1%;%?%p2%t;4%;m, + sgr0=\E[m, smso=\E[7m, +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, + 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, +# underline renders as color +pccon+colors|ANSI colors for OpenBSD PC console, + bce, + colors#8, ncv#2, pairs#64, + op=\E[49;39m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, +# OpenBSD uses wscons, +# + which 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, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, 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, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\ED, nel=\EE, rc=\E8, ri=\EM, + rmam=\E[?7l, rmul=\E[24m, rs2=\Ec, sc=\E7, smam=\E[?7h, + smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, +pccon0-m|OpenBSD PC console without colors & with simple ASCII pseudographics, + use=pccon+sgr+acs0, use=pccon+base, use=pccon+keys, +pccon0|OpenBSD PC console with simple ASCII pseudographics, + use=pccon0-m, use=pccon+colors, +pccon-m|OpenBSD PC console without colors, + use=pccon+base, use=pccon+sgr+acs, use=pccon+keys, + use=ansi+enq, use=vt220+cvis, +pccon|OpenBSD PC console, + use=pccon-m, use=pccon+colors, + +#### NetBSD consoles +# +# pcvt termcap database entries (corresponding to release 3.31) +# Author's last edit-date: [Fri Sep 15 20:29:10 1995] +# +# (For the terminfo master file, I translated these into terminfo syntax. +# Then I dropped all the pseudo-HP entries. we don't want and can't use +# the :Xs: flag. Then I split :is: into a size-independent <is1> and a +# size-dependent <is2>. Finally, I added <rmam>/<smam> -- esr) + +# NOTE: <ich1> has been taken out of this entry. for reference, it should +# be <ich1=\E[@>. For discussion, see ICH/ICH1 VERSUS RMIR/SMIR below. +# (esr: added <civis> and <cnorm> to resolve NetBSD Problem Report #4583) +pcvtXX|pcvt vt200 emulator (DEC VT220), + am, km, mir, msgr, xenl, + it#8, vt#3, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, 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@, + il=\E[%p1%dL, il1=\E[L, ind=\ED, + is1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^?, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + 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, rc=\E8, 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, sc=\E7, + 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=ecma+index, use=vt220+cvis, + +# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor) +# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and +# 50 lines entries; 80 columns +pcvt25|DEC vt220 emulation with 25 lines, + cols#80, lines#25, + is2=\E[1;25r\E[25;1H, use=pcvtXX, +pcvt28|DEC vt220 emulation with 28 lines, + cols#80, lines#28, + is2=\E[1;28r\E[28;1H, use=pcvtXX, +pcvt35|DEC vt220 emulation with 35 lines, + cols#80, lines#35, + is2=\E[1;35r\E[35;1H, use=pcvtXX, +pcvt40|DEC vt220 emulation with 40 lines, + cols#80, lines#40, + is2=\E[1;40r\E[40;1H, use=pcvtXX, +pcvt43|DEC vt220 emulation with 43 lines, + cols#80, lines#43, + is2=\E[1;43r\E[43;1H, use=pcvtXX, +pcvt50|DEC vt220 emulation with 50 lines, + cols#80, lines#50, + is2=\E[1;50r\E[50;1H, use=pcvtXX, + +# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor) +# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and +# 50 lines entries; 132 columns +pcvt25w|DEC vt220 emulation with 25 lines and 132 cols, + cols#132, lines#25, + is2=\E[1;25r\E[25;1H, use=pcvtXX, +pcvt28w|DEC vt220 emulation with 28 lines and 132 cols, + cols#132, lines#28, + is2=\E[1;28r\E[28;1H, use=pcvtXX, +pcvt35w|DEC vt220 emulation with 35 lines and 132 cols, + cols#132, lines#35, + is2=\E[1;35r\E[35;1H, use=pcvtXX, +pcvt40w|DEC vt220 emulation with 40 lines and 132 cols, + cols#132, lines#40, + is2=\E[1;40r\E[40;1H, use=pcvtXX, +pcvt43w|DEC vt220 emulation with 43 lines and 132 cols, + cols#132, lines#43, + is2=\E[1;43r\E[43;1H, use=pcvtXX, +pcvt50w|DEC vt220 emulation with 50 lines and 132 cols, + cols#132, lines#50, + is2=\E[1;50r\E[50;1H, use=pcvtXX, + +# 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, + +# Terminfo entries to enable the use of the ncurses library in colour on a +# NetBSD-arm32 console (only tested on a RiscPC). +# Created by Dave Millen <dmill@globalnet.co.uk> 22.07.98 +# modified codes for setf/setb to setaf/setab, then to klone+color, corrected +# typo in invis - TD +arm100|arm100-am|Arm(RiscPC) ncurses compatible (for 640x480), + am, bce, msgr, xenl, xon, + cols#80, it#8, lines#30, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, + cuf=\E[%p1%dC, cuf1=\E[C$<2>, + cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, + cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, + enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, + invis=\E[8m$<2>, ka1=\E[q, ka3=\E[s, kb2=\E[r, kbs=^H, + kc1=\E[p, kc3=\E[n, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kent=\E[M, kf0=\E[y, kf1=\E[P, kf10=\E[x, + kf2=\E[Q, kf3=\E[R, kf4=\E[S, kf5=\E[t, kf6=\E[u, kf7=\E[v, + kf8=\E[l, kf9=\E[w, rc=\E8, 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, + sc=\E7, + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 + %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<2>, + sgr0=\E[m\017$<2>, smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, + smso=\E[7m$<2>, smul=\E[4m$<2>, tbc=\E[3g, use=ecma+sgr, + use=klone+color, + +arm100-w|arm100-wam|Arm(RiscPC) ncurses compatible (for 1024x768), + cols#132, lines#50, use=arm100, + +# NetBSD/x68k console vt200 emulator. This port runs on a 68K machine +# manufactured by Sharp for the Japanese market. +# From Minoura Makoto <minoura@netlaputa.or.jp>, 12 May 1996 +x68k|x68k-ite|NetBSD/x68k ITE, + cols#96, lines#32, + kclr=\E[9~, khlp=\E[28~, use=vt220-base, + +# <tv@pobox.com>: +# Entry for the DNARD OpenFirmware console, close to ANSI but not quite. +# +# (still unfinished, but good enough so far.) +ofcons|DNARD OpenFirmware console, + bw, + cols#80, lines#30, + bel=^G, blink=\2335m, bold=\2331m, clear=^L, cr=\r, + cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B, + cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, + cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P, + dim=\2332m, dl=\233%p1%dM, dl1=\233M, ed=\233J, el=\233K, + flash=^G, ht=^I, ich=\233%p1%d@, ich1=\233@, il=\233%p1%dL, + il1=\233L, ind=\n, invis=\2338m, kbs=^H, kcub1=\233D, + kcud1=\233B, kcuf1=\233C, kcuu1=\233A, kdch1=\233P, + kf1=\2330P, kf10=\2330M, kf2=\2330Q, kf3=\2330W, + kf4=\2330x, kf5=\2330t, kf6=\2330u, kf7=\2330q, kf8=\2330r, + kf9=\2330p, knp=\233/, kpp=\233?, nel=\r\n, rev=\2337m, + rmso=\2330m, rmul=\2330m, + sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t2%;%?%p7%t8 + %;%?%p1%p3%|%t;7%;m, + sgr0=\2330m, smso=\2337m, smul=\2334m, + +# NetBSD "wscons" emulator in vt220 mode. +# This entry is based on the NetBSD termcap entry, correcting the ncv value. +# The emulator renders underlined text in red. Colors are otherwise usable. +# +# Testing the emulator and reading the source code (NetBSD 2.0), it appears +# that "vt220" is inaccurate. There are a few vt220-features, but most of the +# vt220 screens in vttest do not work with this emulator. For instance, it +# identifies itself (primary DA response) as a vt220 with selective erase. But +# the selective erase feature does not work. The secondary response is copied +# from Kermit's emulation of vt220, does not correspond to actual vt220. At +# the level of detail in a termcap, it is a passable emulator, since ECH does +# work. Don't use it on a VMS system -TD +wsvt25|NetBSD wscons in 25 line DEC VT220 mode, + bce, msgr, + colors#8, cols#80, it#8, lines#25, ncv#2, pairs#64, + is2=\E[r\E[25;1H, kdch1=\E[3~, 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~, khome=\E[7~, op=\E[m, rs1=\Ec, + setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=vt220, + +wsvt25m|NetBSD wscons in 25 line DEC VT220 mode with Meta, + km, use=wsvt25, + +# NetBSD 6.x still uses wscons, with minor changes (2014/02/22) -TD +# +# TERM is by default vt100 for the console, wsvt25 for other ttys. +# Initial testing set TERM=xterm, based on comments by developers, found too +# many differences to continue in that path. However, test-results may be +# useful to people curious about compatibility with xterm. +# +# Testing with tack: +# ----------------- +# Failed: cbt, bel, flash, cvvis, smul (color), blink, invis +# There is color-bleeding in the color-pairs screen. +# Attributes do not work with color +# Failed: vpa/hpa +# Failed: kf1-kf4, kf13-kf48, khome, kend +# (effectively xterm-r6 for function-keys) +# None of the function or cursor key-modifiers are encoded. +# Console hangs in the smm/rmm test if TERM=xterm, does not show test +# +# Testing with vttest: +# ------------------- +# Identifies as vt220 with selective erase +# (however, selective erase refers to DECSCA, SPA) +# Does not implement vt52 +# Uses spaces to simulate double-size characters +# Does not support 8-bit controls +# Does not support VT220 reports +# Does not support send/receive mode +# Supports ECH (like rxvt) +# Does not support DECSCA +# Does not support any of the ISO-6429 cursor-movement +# Does not support any of the ISO-6429 miscellaneous tests +# (SL/SR also leave unexpected char on screen too) +# Background does not change in menu 11.6.9 (SGR 22-27) +# None of the xterm special features tests work +netbsd6|NetBSD wscons in 25 line DEC VT100 mode, + kbs=^?, use=wsvt25, + +# `rasterconsole' provided by 4.4BSD, NetBSD and OpenBSD on SPARC, and +# DECstation/pmax. +rcons|BSD rasterconsole, + use=sun-il, +# Color version of above. Color currently only provided by NetBSD. +rcons-color|BSD rasterconsole with ANSI color, + bce, + colors#8, pairs#64, + op=\E[m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=rcons, + +# mgterm -- MGL/MGL2, MobileGear Graphic Library +# for PocketBSD,PocketLinux,NetBSD/{hpcmips,mac68k} +# -- the setf/setb are probably incorrect, more likely setaf/setab -TD +# -- compare with cons25w +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, clear=\E[H\E[J, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, dl=\E[%p1%dM, + dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, + home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E, + kbs=^H, kcbt=\E[Z, 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, 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, khome=\E[H, + 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, + setb=\E[4%p1%dm, setf=\E[3%p1%dm, sgr0=\E[m, smso=\E[7m, + vpa=\E[%i%p1%dd, use=ecma+index, + +#### FreeBSD console entries +# +# From: Andrey Chernov <ache@astral.msk.su> 29 Mar 1996 +# Andrey Chernov maintains the FreeBSD termcap distributions. +# +# Note: Users of FreeBSD 2.1.0 and older versions must either upgrade +# or comment out the :cb: capability in the console entry. +# +# Alexander Lukyanov reports: +# I have seen FreeBSD-2.1.5R... The old el1 bug changed, but it is still there. +# Now el1 clears not only to the line beginning, but also a large chunk +# of previous line. But there is another bug - ech does not work at all. +# + +# for syscons +# common entry without semigraphics +# Bug: The <op> capability resets attributes. +# Bug? The ech and el1 attributes appear to move the cursor in some cases; for +# instance el1 does if the cursor is moved to the right margin first. Removed +# by T.Dickey 97/5/3 (ech=\E[%p1%dX, el1=\E[1K) +# +# Setting colors turns off reverse; we cannot guarantee order, so use ncv. +# Note that this disables standout with color. +# +# The emulator sends difference strings based on shift- and control-keys, +# like scoansi: +# F13-F24 are shifted F1-F12 +# F25-F36 are control F1-F12 +# F37-F48 are shift+control F1-F12 +cons25w|ansiw|ansi80x25-raw|FreeBSD console (25-line raw mode), + am, bce, bw, eo, msgr, npc, + colors#8, cols#80, it#8, lines#25, ncv#21, pairs#64, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cnorm=\E[=0C, cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, + cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[=1C, dch=\E[%p1%dP, dch1=\E[P, dim=\E[30;1m, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kb2=\E[E, + kbs=^H, kcbt=\E[Z, 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, 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, + khome=\E[H, 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, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, + 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=ecma+index, +cons25|ansis|ansi80x25|FreeBSD console (25-line ansi mode), + acsc=-\030.^Y0\333`\004a\260f\370g\361h\261i\025j\331k\277l + \332m\300n\305q\304t\303u\264v\301w\302x\263y\363z\362~ + \371, + use=cons25w, +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, +cons30|ansi80x30|FreeBSD console (30-line ansi mode), + lines#30, use=cons25, +cons30-m|ansi80x30-mono|FreeBSD console (30-line mono ansi mode), + lines#30, use=cons25-m, +cons43|ansi80x43|FreeBSD console (43-line ansi mode), + lines#43, use=cons25, +cons43-m|ansi80x43-mono|FreeBSD console (43-line mono ansi mode), + lines#43, use=cons25-m, +cons50|ansil|ansi80x50|FreeBSD console (50-line ansi mode), + lines#50, use=cons25, +cons50-m|ansil-mono|ansi80x50-mono|FreeBSD console (50-line mono ansi mode), + lines#50, use=cons25-m, +cons60|ansi80x60|FreeBSD console (60-line ansi mode), + lines#60, use=cons25, +cons60-m|ansi80x60-mono|FreeBSD console (60-line mono ansi mode), + lines#60, use=cons25-m, +cons25r|pc3r|ibmpc3r|cons25-koi8-r|FreeBSD console w/koi8-r cyrillic, + acsc=-\030.^Y0\215`\004a\220f\234h\221i\025j\205k\203l\202m + \204n\212q\0t\206u\207v\211w\210x\201y\230z\231~ + \225, + 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@, + 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, +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), + lines#50, use=cons25r-m, +cons60r|cons60-koi8r|FreeBSD console w/koi8-r cyrillic (60 lines), + lines#60, use=cons25r, +cons60r-m|cons60-koi8r-m|FreeBSD console w/koi8-r cyrillic (60-line mono), + lines#60, use=cons25r-m, +# ISO 8859-1 FreeBSD console +cons25l1|cons25-iso8859|FreeBSD console w/iso 8859-1 chars, + acsc=+\253\,\273-\030.\031`\201a\202f\207g\210i\247j\213k + \214l\215m\216n\217o\220p\221q\222r\223s\224t\225u + \226v\227w\230x\231y\232z\233~\237, + 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, +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), + lines#50, use=cons25l1-m, +cons60l1|cons60-iso|FreeBSD console w/iso 8859-1 chars (60 lines), + lines#60, use=cons25l1, +cons60l1-m|cons60-iso-m|FreeBSD console w/iso 8859-1 chars (60-line mono), + lines#60, use=cons25l1-m, + +# Starting with FreeBSD 8, an alternative configuration for syscons is provided, +# which is intended to be xterm-compatible. See for example +# http://svnweb.freebsd.org/base/stable/8/sys/dev/syscons/ +# in particular scterm-teken.c +# +# For FreeBSD 9 and 10: +# -------------------- +# The /etc/ttys entries for console and other ttys are all configured to set +# TERM=xterm. +# +# Testing with tack: +# There is no VT100 line-drawing (uses +'s and -'s) +# Shifted f1-f12 give cons25 codes, rather than xterm function-keys +# +# Testing with vttest: +# Menu 2 diamonds don't work, blink ditto, light background ditto +# The terminal identifies itself as VT100 with AVO +# There is no VT52 support +# There is no doublesize character support +# The terminal supports ECH (like rxvt) +# The terminal does not support send/receive mode +# The terminal supports all of the ISO-6429 cursor-movement +# The terminal supports some of the ISO-6429 miscellaneous tests +# (SL/SR also leave unexpected char on screen too) +# +# Considering cons25 as a base, the line-drawing mostly works, but is missing +# the cells which happen to have ASCII control-character values: +# - ^X arrow pointing up +# . ^Y arrow pointing down +# i ^Y lantern +# ` ^D diamond +# +# Those are removed from this entry's acsc string to avoid confusion. +# The resulting description provides correct line-drawing and function-keys -TD +teken|syscons with teken, + bw@, mir, xenl, + 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, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kend=\E[F, 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~, khome=\E[H, kich1=\E[2~, knp=\E[6~, + kpp=\E[5~, rmir=\E[4l, smir=\E[4h, tbc=\E[3g, + u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, + vpa=\E[%i%p1%dd, use=vt220+cvis, use=cons25, + +#### 386BSD and BSD/OS Consoles +# + +# This was the original 386BSD console entry (I think). +# Some places it's named oldpc3|oldibmpc3. +# From: Alex R.N. Wetmore <aw2t@andrew.cmu.edu> +origpc3|origibmpc3|IBM PC 386BSD console, + OTbs, am, bw, eo, xon, + cols#80, lines#25, + acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x + \263, + bold=\E[7m, clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K, + home=\E[H, ind=\E[S, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, khome=\E[Y, ri=\E[T, rmso=\E[1;0x\E[2;7x, + rmul=\E[1;0x\E[2;7x, sgr0=\E[m\E[1;0x\E[2;7x, + smso=\E[1;7x\E[2;0x, smul=\E[1;7x\E[2;0x, + +# description of BSD/386 console emulator in version 1.0 (supplied by BSDI) +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, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kich1=\E[L, kll=\E[F, + knp=\E[G, kpp=\E[I, nel=\r\n, sgr0=\E[=R, + +# Description of BSD/OS console emulator in version 1.1, 2.0, 2.1 +# Note, the emulator supports many of the additional console features +# listed in the iBCS2 (e.g. character-set selection) though not all +# are described here. This entry really ought to be upgraded. +# Also note, the console will also work with fewer lines after doing +# "stty rows NN", e.g. to use 24 lines. +# (Color support from Kevin Rosenberg <kevin@cyberport.com>, 2 May 1996) +# Bug: The <op> capability resets attributes. +bsdos-pc|IBM PC BSD/OS console, + sgr=\E[0;10%?%p1%t;7%;%?%p2%t;1%;%?%p3%t;7%;%?%p4%t;5%;%?%p6 + %t;1%;%?%p7%t;8%;%?%p9%t;11%;m, + use=bsdos-pc-nobold, + +bsdos-pc-nobold|BSD/OS PC console w/o bold, + use=klone+color, use=bsdos-pc-m, + +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, cub=\E[%p1%dD, 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, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, + il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, 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=klone+sgr8, + +# Old names for BSD/OS PC console used in releases before 4.1. +pc3|BSD/OS on the PC console, + use=bsdos-pc-nobold, +ibmpc3|pc3-bold|BSD/OS on the PC console with bold instead of underline, + use=bsdos-pc, + +# BSD/OS on the SPARC +bsdos-sparc|Sun SPARC BSD/OS console, + use=sun, + +# BSD/OS on the PowerPC +bsdos-ppc|PowerPC BSD/OS console, + use=bsdos-pc, + + +#### DEC VT52 +# (<acsc>/<rmacs>/<smacs> capabilities aren't in DEC's official entry -- esr) +# +# Actually (TD pointed this out at the time the acsc string was added): +# vt52 shouldn't define full acsc since most of the cells don't match. +# see vt100 manual page A-31. This is the list that does match: +# f degree +# g plus/minus +# h right-arrow +# k down-arrow +# m scan-1 +# o scan-3 +# q scan-5 +# s scan-7 +# The line-drawing happens to work in several terminal emulators, but should +# not be used as a guide to the capabilities of the vt52. Note in particular +# that vt52 does not support line-drawing characters (the scan-X values refer +# to a crude plotting feature) -TD +vt52|DEC vt52, + OTbs, + it#8, lines#24, + acsc=+h.k0affggolpnqprrss, home=\EH, kbs=^H, nel=\r\n, + ri=\EI, rmacs=\EG, rmkx=\E>, smacs=\EF, smkx=\E=, u8=\E/[KL], + use=vt50h, + +# This is more likely the "vt52" that you would see in emulation, i.e., no +# keypad, no graphics. +vt52-basic|vt52 for emulators, + cols#80, it#8, lines#24, + bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK, + home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, nel=\r\n, ri=\EI, + +#### DEC VT100 and compatibles +# +# DEC terminals from the vt100 forward are collected here. Older DEC terminals +# and micro consoles can be found in the `obsolete' section. More details on +# the relationship between the VT100 and ANSI X3.64/ISO 6429/ECMA-48 may be +# found near the end of this file. +# +# Except where noted, these entries are DEC's official terminfos. +# Contact Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support +# Engineering for more information. Updated terminfos and termcaps +# are kept available at ftp://gatekeeper.dec.com/pub/DEC/termcaps. +# +# In October 1995 DEC sold its terminals business, including the VT and Dorio +# line and trademark, to SunRiver Data Systems. SunRiver has since changed +# its name to Boundless Technologies; see http://www.boundless.com. +# + +# NOTE: Any VT100 emulation, whether in hardware or software, almost +# certainly includes what DEC called the `Level 1 editing extension' codes; +# only the very oldest VT100s lacked these and there probably aren't any of +# those left alive. To capture these, use one of the VT102 entries. +# +# Note that the <xenl> glitch in vt100 is not quite the same as on the Concept, +# since the cursor is left in a different position while in the +# weird state (concept at beginning of next line, vt100 at end +# of this line) so all versions of vi before 3.7 don't handle +# <xenl> right on vt100. The correct way to handle <xenl> is when +# you output the char in column 80, immediately output CR LF +# and then assume you are in column 1 of the next line. If <xenl> +# is on, am should be on too. +# +# I assume you have smooth scroll off or are at a slow enough baud +# rate that it doesn't matter (1200? or less). Also this assumes +# that you set auto-nl to "on", if you set it off use vt100-nam +# below. +# +# The padding requirements listed here are guesses. It is strongly +# recommended that xon/xoff be enabled, as this is assumed here. +# +# The vt100 uses <rs2> and <rf> rather than <is2>/<tbc>/<hts> because the +# tab settings are in non-volatile memory and don't need to be +# reset upon login. Also setting the number of columns glitches +# the screen annoyingly. You can type "reset" to get them set. +# +# The VT100 series terminals have cursor ("arrows") keys which can operate +# in two different modes: Cursor Mode and Application Mode. Cursor Mode +# is the reset state, and is assumed to be the normal state. Application +# Mode is the "set" state. In Cursor Mode, the cursor keys transmit +# "Esc [ {code}" sequences, conforming to ANSI standards. In Application +# Mode, the cursor keys transmit "Esc O <code>" sequences. Application Mode +# was provided primarily as an aid to the porting of VT52 applications. It is +# assumed that the cursor keys are normally in Cursor Mode, and expected that +# applications such as vi will always transmit the <smkx> string. Therefore, +# the definitions for the cursor keys are made to match what the terminal +# transmits after the <smkx> string is transmitted. If the <smkx> string +# is a null string or is not defined, then cursor keys are assumed to be in +# "Cursor Mode", and the cursor keys definitions should match that assumption, +# else the application may fail. It is also expected that applications will +# always transmit the <rmkx> string to the terminal before they exit. +# +# The VT100 series terminals have an auxiliary keypad, commonly referred to as +# the "Numeric Keypad", because it is a cluster of numeric and function keys. +# The Numeric Keypad which can operate in two different modes: Numeric Mode and +# Application Mode. Numeric Mode is the reset state, and is assumed to be +# the normal state. Application Mode is the "set" state. In Numeric Mode, +# the numeric and punctuation keys transmit ASCII 7-bit characters, and the +# Enter key transmits the same as the Return key (Note: the Return key +# can be configured to send either LF (\015) or CR LF). In Application Mode, +# all the keypad keys transmit "Esc O {code}" sequences. The PF1 - PF4 keys +# always send the same "Esc O {code}" sequences. It is assumed that the keypad +# is normally in Numeric Mode. If an application requires that the keypad be +# in Application Mode then it is expected that the user, or the application, +# will set the TERM environment variable to point to a terminfo entry which has +# defined the <smkx> string to include the codes that switch the keypad into +# Application Mode, and the terminfo entry will also define function key +# fields to match the Application Mode control codes. If the <smkx> string +# is a null string or is not defined, then the keypad is assumed to be in +# Numeric Mode. If the <smkx> string switches the keypad into Application +# Mode, it is expected that the <rmkx> string will contain the control codes +# necessary to reset the keypad to "Normal" mode, and it is also expected that +# applications which transmit the <smkx> string will also always transmit the +# <rmkx> string to the terminal before they exit. +# +# Here's a diagram of the VT100 keypad keys with their bindings. +# The top line is the name of the key (some DEC keyboards have the keys +# labelled somewhat differently, like GOLD instead of PF1, but this is +# the most "official" name). The second line is the escape sequence it +# generates in Application Keypad mode (where "$" means the ESC +# character). The third line contains two items, first the mapping of +# the key in terminfo, and then in termcap. +# _______________________________________ +# | PF1 | PF2 | PF3 | PF4 | +# | $OP | $OQ | $OR | $OS | +# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_| +# | 7 8 9 - | +# | $Ow | $Ox | $Oy | $Om | +# |_kf9__k9_|_kf10_k;_|_kf0__k0_|_________| +# | 4 | 5 | 6 | , | +# | $Ot | $Ou | $Ov | $Ol | +# |_kf5__k5_|_kf6__k6_|_kf7__k7_|_kf8__k8_| +# | 1 | 2 | 3 | | +# | $Oq | $Or | $Os | enter | +# |_ka1__K1_|_kb2__K2_|_ka3__K3_| $OM | +# | 0 | . | | +# | $Op | $On | | +# |___kc1_______K4____|_kc3__K5_|_kent_@8_| +# +# Note however, that the arrangement of the 5-key ka1-kc3 do not follow the +# terminfo guidelines. That is a compromise used to assign the remaining +# keys on the keypad to kf5-kf0, used on older systems with legacy termcap +# support: +vt100+keypad|DEC vt100 numeric keypad no fkeys, + ka1=\EOq, ka3=\EOs, kb2=\EOr, kc1=\EOp, kc3=\EOn, +vt100+pfkeys|DEC vt100 numeric keypad, + kent=\EOM, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, + use=vt100+keypad, +vt100+fnkeys|DEC vt100 numeric keypad, + kf0=\EOy, kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, + kf9=\EOw, use=vt100+pfkeys, +# +# A better adaptation to modern keyboards such as the PC's, which have a dozen +# function keys and the keypad 2,4,6,8 keys are labeled with arrows keys, is to +# use the 5-key arrangement to model the arrow keys as suggested in the +# terminfo guidelines: +# _______________________________________ +# | PF1 | PF2 | PF3 | PF4 | +# | $OP | $OQ | $OR | $OS | +# |_kf1__k1_|_kf2__k2_|_kf3__k3_|_kf4__k4_| +# | 7 8 9 - | +# | $Ow | $Ox | $Oy | $Om | +# |_ka1__K1_|_________|_ka3__K3_|_________| +# | 4 | 5 | 6 | , | +# | $Ot | $Ou | $Ov | $Ol | +# |_________|_kb2__K2_|_________|_________| +# | 1 | 2 | 3 | | +# | $Oq | $Or | $Os | enter | +# |_kc1__K4_|_________|_kc3__K5_| $OM | +# | 0 | . | | +# | $Op | $On | | +# |___________________|_________|_kent_@8_| +# +vt220+keypad|DEC vt220 numeric keypad, + ka1=\EOw, ka3=\EOy, kb2=\EOu, kc1=\EOq, kc3=\EOs, kent=\EOM, + kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, ka2=\EOx, kb1=\EOt, + kb3=\EOv, kc2=\EOr, +# +vt100+enq|ncurses extension for vt100-style ENQ, + u8=\E[?1;2c, use=ansi+enq, +vt102+enq|ncurses extension for vt102-style ENQ, + u8=\E[?6c, use=ansi+enq, +# +# And here, for those of you with orphaned VT100s lacking documentation, is +# a description of the soft switches invoked when you do `Set Up'. +# +# Scroll 0-Jump Shifted 3 0-# +# | 1-Smooth | 1-British pound sign +# | Autorepeat 0-Off | Wrap Around 0-Off +# | | 1-On | | 1-On +# | | Screen 0-Dark Bkg | | New Line 0-Off +# | | | 1-Light Bkg | | | 1-On +# | | | Cursor 0-Underline | | | Interlace 0-Off +# | | | | 1-Block | | | | 1-On +# | | | | | | | | +# 1 1 0 1 1 1 1 1 0 1 0 0 0 0 1 0 <--Standard Settings +# | | | | | | | | +# | | | Auto XON/XOFF 0-Off | | | Power 0-60 Hz +# | | | 1-On | | | 1-50 Hz +# | | ANSI/VT52 0-VT52 | | Bits Per Char. 0-7 Bits +# | | 1-ANSI | | 1-8 Bits +# | Keyclick 0-Off | Parity 0-Off +# | 1-On | 1-On +# Margin Bell 0-Off Parity Sense 0-Odd +# 1-On 1-Even +# +# The following SET-UP modes are assumed for normal operation: +# ANSI_MODE AUTO_XON/XOFF_ON NEWLINE_OFF 80_COLUMNS +# WRAP_AROUND_ON JUMP_SCROLL_OFF +# Other SET-UP modes may be set for operator convenience or communication +# requirements; I recommend +# AUTOREPEAT_ON BLOCK_CURSOR MARGIN_BELL_OFF SHIFTED_3_# +# Unless you have a graphics add-on such as Digital Engineering's VT640 +# (and even then, whenever it can be arranged!) you should set +# INTERLACE_OFF +# +# (vt100: I added <rmam>/<smam> based on the init string, also <OTbs>. -- esr) +vt100|vt100-am|DEC vt100 (w/advanced video), + OTbs, mc5i, xenl, xon, + vt#3, + csr=\E[%i%p1%d;%p2%dr, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, + mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rmam=\E[?7l, + rmkx=\E[?1l\E>, rs2=\E<\E>\E[?3;4;5l\E[?7;8h\E[r, + sc=\E7, + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 + %;m%?%p9%t\016%e\017%;$<2>, + smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m$<2>, + use=vt100+4bsd, use=vt100+fnkeys, +vt100+4bsd|DEC vt100 from 4.0BSD, + am, msgr, + cols#80, it#8, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>, + cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, + cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, + enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + rev=\E[7m$<2>, ri=\EM$<5>, rmacs=^O, 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, smso=\E[1;7m$<2>, + smul=\E[4m$<2>, tbc=\E[3g, +vt100nam|vt100-nam|vt100 no automargins, + am@, xenl@, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt100-am, +vt100-vb|DEC vt100 (w/advanced video) & no beep, + bel@, flash=\E[?5h$<100/>\E[?5l, use=vt100, + +# Ordinary vt100 in 132 column ("wide") mode. +vt100-w|vt100-w-am|DEC vt100 132 cols (w/advanced video), + cols#132, lines#24, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-am, +vt100-w-nam|vt100-nam-w|DEC vt100 132 cols (w/advanced video no automargin), + cols#132, lines#14, vt@, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=vt100-nam, + +# 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, +vt100-nav-w|vt100-w-nav|DEC vt100 132 cols 14 lines (no advanced video option), + cols#132, lines#14, use=vt100-nav, + +# vt100 with one of the 24 lines used as a status line. +# We put the status line on the top. +vt100-s|vt100-s-top|vt100-top-s|vt100 for use with top sysline, + eslok, hs, + lines#23, + clear=\E[2;1H\E[J$<50>, csr=\E[%i%i%p1%d;%p2%dr, + cup=\E[%i%p1%{1}%+%d;%p2%dH$<5>, dsl=\E7\E[1;24r\E8, + fsl=\E8, home=\E[2;1H, is2=\E7\E[2;24r\E8, + tsl=\E7\E[1;%p1%dH\E[1K, use=vt100-am, + +# Status line at bottom. +# Clearing the screen will clobber status line. +vt100-s-bot|vt100-bot-s|vt100 for use with bottom sysline, + eslok, hs, + lines#23, + dsl=\E7\E[1;24r\E8, fsl=\E8, is2=\E[1;23r\E[23;1H, + tsl=\E7\E[24;%p1%dH\E[1K, use=vt100-am, + +# Most of the `vt100' emulators out there actually emulate a vt102 +# 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, + use=vt100, +vt102-w|DEC vt102 in wide mode, + cols#132, + rs3=\E[?3h, use=vt102, + +# Many brain-dead PC comm programs that pretend to be `vt100-compatible' +# fail to interpret the ^O and ^N escapes properly. Symptom: the <sgr0> +# string in the canonical vt100 entry above leaves the screen littered +# with little snowflake or star characters (IBM PC ROM character \017 = ^O) +# after highlight turnoffs. This entry should fix that, and even leave +# ACS support working, at the cost of making multiple-highlight changes +# slightly more expensive. +# From: Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995 +vt102-nsgr|vt102 no sgr (use if you see snowflakes after highlight changes), + sgr@, sgr0=\E[m, use=vt102, + +# VT125 Graphics CRT. Clear screen also erases graphics +# Some vt125's came configured with vt102 support. +vt125|vt125 graphics terminal, + mir, + clear=\E[H\E[2J\EPpS(E)\E\\$<50>, use=vt100, + +# This isn't a DEC entry, it came from University of Wisconsin. +# (vt131: I added <rmam>/<smam> based on the init string, also <OTbs> -- esr) +vt131|DEC vt131, + OTbs, am, xenl, + cols#80, it#8, lines#24, vt#3, + bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, + clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub1=^H, cud1=\n, 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, rc=\E8, 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, sc=\E7, + sgr0=\E[m$<2/>, smam=\E[?7h, smkx=\E[?1h\E=, + smso=\E[7m$<2/>, smul=\E[4m$<2/>, + +# 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 +# manual and from the ANSI standard, this describes the actual +# terminal. I've never actually used a vt132 myself, so this +# is untested. +# +vt132|DEC vt132, + xenl, + dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, + ip=$<7>, rmir=\E[4h, smir=\E[4l, use=vt100, + +# This vt220 description maps F5--F9 to the second block of function keys +# at the top of the keyboard. The "DO" key is used as F10 to avoid conflict +# with the key marked (ESC) on the vt220. See vt220d for an alternate mapping. +# PF1--PF4 are used as F1--F4. +# +# added msgr -TD +vt220-old|vt200-old|DEC VT220 in vt100 emulation mode, + OTbs, OTpt, am, mir, msgr, xenl, xon, + cols#80, lines#24, vt#3, + OTnl=\n, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH$<10>, cuu1=\E[A, dch1=\E[P, + dl1=\E[M, ed=\E[J$<50>, el=\E[K$<3>, home=\E[H, ht=^I, + if=/usr/share/tabset/vt100, il1=\E[L, ind=\ED$<20/>, + is2=\E[1;24r\E[24;1H, 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~, kich1=\E[2~, rc=\E8, 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, + sc=\E7, + 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=vt220+pcedit, use=vt220+cvis, + +# Here's a picture of the Sun/PC editing keypad: +# +--------+--------+--------+ +# | Insert | Home | PageUp | +# +--------+--------+--------+ +# | Delete | End | PageDn | +# +--------+--------+--------+ +# +# VT220 emulators such as xterm, using PC-keyboards use a different layout than +# the VT220 keyboard: +# VT220 PC +# ----- -- +# Prev PageUp +# Next PageDn +# Insert Insert +# Remove Delete +# Find Home +# Select End +vt220+pcedit|editing-keypad for vt220 using PC keyboard, + kdch1=\E[3~, kend=\E[4~, khome=\E[1~, kich1=\E[2~, + knp=\E[6~, kpp=\E[5~, +vt220+vtedit|editing-keypad for vt220 using DEC keyboard, + kdch1=\E[3~, kfnd=\E[1~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, + kslt=\E[4~, + +# A much better description of the VT200/220; used to be vt220-8 +# changed rmacs/smacs from shift-in/shift-out to vt200-old's explicit G0/G1 +# designation to accommodate bug in pcvt -TD +# +# Here's a picture of the VT220 editing keypad: +# +--------+--------+--------+ +# | Find | Insert | Remove | +# +--------+--------+--------+ +# | Select | Prev | Next | +# +--------+--------+--------+ +# +# Still, this is a "base" entry. Software emulators commonly leave out the +# DECTCEM feature -TD +vt220-base|DEC VT220 as emulated, + OTbs, am, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, + flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH, + ich=\E[%p1%d@, if=/usr/share/tabset/vt100, + il=\E[%p1%dL, il1=\E[L, 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, kdch1=\E[3~, 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, + rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B$<4>, rmam=\E[?7l, + rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\E[?3l, sc=\E7, + 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=vt220+vtedit, + use=ansi+pp, use=ansi+enq, +vt220|vt200|DEC vt220, + use=vt220+cvis, use=vt220-base, +vt220-w|vt200-w|DEC vt220 in wide mode, + cols#132, + rs3=\E[?3h, use=vt220, +vt220-8bit|vt220-8|vt200-8bit|vt200-8|DEC vt220/200 in 8-bit mode, + OTbs, am, mc5i, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=\r, + csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=^H, + cud=\233%p1%dB, cud1=\n, cuf=\233%p1%dC, cuf1=\233C, + cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\233A, + dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, + ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, enacs=\E)0, + flash=\233?5h$<200/>\233?5l, home=\233H, ht=^I, hts=\EH, + ich=\233%p1%d@, if=/usr/share/tabset/vt100, + 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, + 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, + +# vt220d: +# This vt220 description regards F6--F10 as the second block of function keys +# at the top of the keyboard. This mapping follows the description given +# in the VT220 Programmer Reference Manual and agrees with the labeling +# on some terminals that emulate the vt220. There is no support for an F5. +# 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, + +vt220-nam|v200-nam|VT220 in vt100 mode with no auto margins, + am@, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, use=vt220, + +# vt220 termcap written Tue Oct 25 20:41:10 1988 by Alex Latzko +# (not an official DEC entry!) +# The problem with real vt220 terminals is they don't send escapes when in +# in vt220 mode. This can be gotten around two ways. 1> don't send +# escapes or 2> put the vt220 into vt100 mode and use all the nifty +# features of vt100 advanced video which it then has. +# +# This entry takes the view of putting a vt220 into vt100 mode so +# you can use the escape key in emacs and everything else which needs it. +# +# You probably don't want to use this on a VMS machine since VMS will think +# it has a vt220 and will get fouled up coming out of emacs +# +# From: Alexander Latzko <latzko@marsenius.rutgers.edu>, 30 Dec 1996 +# (Added vt100 <rc>,<sc> to quiet a tic warning -- esr) +# added msgr -TD +vt200-js|vt220-js|DEC vt200 series with jump scroll, + am, msgr, + cols#80, + bel=^G, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu1=\E[A, dch1=\E[P, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, + ht=^I, il1=\E[L, 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, rc=\E8, + rf=/usr/share/tabset/vt100, ri=\EM, rmdc=, rmir=\E[4l, + rmkx=\E[?1l\E>, rmso=\E[27m$<5/>, rmul=\E[24m, + rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, smdc=, + smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m$<5/>, smul=\E[4m, + use=vt220+cvis, + +# This was DEC's vt320. Use the purpose-built one below instead +#vt320|DEC VT320 in vt100 emulation mode, +# use=vt220, + +# Use v320n for SCO's LYRIX. Otherwise, use Adam Thompson's vt320-nam. +# +vt320nam|v320n|DEC VT320 in vt100 emul. mode with NO AUTO WRAP mode, + am@, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h, + use=vt220-base, + +# These entries are not DEC's official ones, they were purpose-built for the +# VT320. Here are the designer's notes: +# <kel> is end on a PC kbd. Actually 'select' on a VT. Mapped to +# 'Erase to End of Field'... since nothing seems to use 'end' anyways... +# khome is Home on a PC kbd. Actually 'FIND' on a VT. +# Things that use <knxt> usually use tab anyways... and things that don't use +# tab usually use <knxt> instead... +# kprv is same as tab - Backtab is useless... +# I left out <sgr> because of its RIDICULOUS complexity, +# and the resulting fact that it causes the termcap translation of the entry +# to SMASH the 1k-barrier... +# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995 +# (vt320: uncommented <fsl> --esr) +vt320|vt300|DEC vt320 7 bit terminal, + am, hs, mir, msgr, xenl, + cols#80, lines#24, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I, + hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, + is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, + kbs=^?, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + 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, rc=\E8, 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, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, + sc=\E7, + 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=dec+pp, use=vt220+cvis, use=vt220+keypad, use=dec+sl, + use=ansi+enq, +vt320-nam|vt300-nam|DEC vt320 7 bit terminal with no am to make SAS happy, + am@, + is2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, use=vt320, +# We have to init 132-col mode, not 80-col mode. +vt320-w|vt300-w|DEC vt320 wide 7 bit terminal, + cols#132, wsl#132, + is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r\E[24;1H, use=vt320, +vt320-w-nam|vt300-w-nam|DEC vt320 wide 7 bit terminal with no am, + am@, + is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;24r\E[24;1H, use=vt320-w, + +# VT330 and VT340 -- These are ReGIS and SIXEL graphics terminals +# which are pretty much a superset of the VT320. They have the +# host writable status line, yet another different DRCS matrix size, +# and such, but they add the DEC Technical character set, Multiple text +# pages, selectable length pages, and the like. The difference between +# the vt330 and vt340 is that the former has only 2 planes and a monochrome +# monitor, the latter has 4 planes and a color monitor. These terminals +# support VT131 and ANSI block mode, but as with much of these things, +# termcap/terminfo doesn't deal with these features. +# +# Note that this entry is are set up in what was the standard way for GNU +# Emacs v18 terminal modes to deal with the cursor keys in that the arrow +# keys were switched into application mode at the same time the numeric pad +# is switched into application mode. This changes the definitions of the +# arrow keys. Emacs v19 is smarter and mines its keys directly out of +# your termcap or terminfo entry, +# +# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993 +# (vt340: string capability "sb=\E[M" corrected to "sr"; +# also, added <rmam>/<smam> based on the init string -- esr) +vt340|dec-vt340|vt330|dec-vt330|DEC vt340 graphics terminal with 24 line page, + am, eslok, hs, 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, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J, el=\E[K, + flash=\E[?5h$<200/>\E[?5l, fsl=\E[$}, home=\E[H, ht=^I, + hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, 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, rc=\E8, 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, sc=\E7, + 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=vt220+cvis, + +# Left/right margins are supported in xterm since patch #279 (2012/05/10) +vt420+lrmm|VT420 left/right margins, + mgc=\E[?69l, smglp=\E[?69h\E[%i%p1%ds, + smglr=\E[?69h\E[%i%p1%d;%p2%ds, + smgrp=\E[?69h\E[%i;%p1%ds, + +# DEC doesn't supply a vt400 description, so we add Daniel Glasser's +# (originally written with vt420 as its primary name, and usable for it). +# +# VT400/420 -- This terminal is a superset of the vt320. It adds the multiple +# text pages and long text pages with selectable length of the vt340, along +# with left and right margins, rectangular area text copy, fill, and erase +# operations, selected region character attribute change operations, +# page memory and rectangle checksums, insert/delete column, reception +# macros, and other features too numerous to remember right now. TERMCAP +# can only take advantage of a few of these added features. +# +# Note that this entry is set up in what was the standard way for GNU +# Emacs v18 terminal modes to deal with the cursor keys in that the arrow +# keys were switched into application mode at the same time the numeric pad +# is switched into application mode. This changes the definitions of the +# arrow keys. Emacs v19 is smarter and mines its keys directly out of +# your termcap entry, +# +# From: Daniel Glasser <dag@persoft.persoft.com>, 13 Oct 1993 +# (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, hs, 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, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + dsl=\E[2$~\r\E[1$}\E[K\E[$}, ed=\E[J$<10/>, + el=\E[K$<4/>, flash=\E[?5h$<200/>\E[?5l, fsl=\E[$}, + home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, 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, rc=\E8, 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<\E[?3l\E[!p\E[?7h, sc=\E7, + 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=dec+sl, use=vt220+cvis, + +# (vt420: I removed <kf0>, it collided with <kf10>. I also restored +# a missing <sc> -- esr) +# add msgr and other capabilities from vt220 -TD +vt420|DEC VT420, + am, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<10>, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J$<50>, + el=\E[K$<3>, el1=\E[1K, enacs=\E)0, + flash=\E[?5h$<200/>\E[?5l, home=\E[H, ht=^I, hts=\EH, + ich=\E[%p1%d@, if=/usr/share/tabset/vt300, + il=\E[%p1%dL, il1=\E[L, 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, rc=\E8, 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, sc=\E7, + 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=vt220+vtedit, use=ansi+pp, use=dec+sl, use=ansi+enq, + use=vt220+cvis, use=vt420+lrmm, + +# 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 +# straightforward (keys 1-5 are not defined on real terminals, though some +# emulators define these): +# +# if (key < 16) then value = key; +# else if (key < 21) then value = key + 1; +# else if (key < 25) then value = key + 2; +# else if (key < 27) then value = key + 3; +# else if (key < 30) then value = key + 4; +# else value = key + 5; +# +# The string must be the hexadecimal equivalent, e.g., "5052494E" for "PRINT". +# There's no provision in terminfo for emitting a string in this format, so the +# application has to know it. +# +vt420pc|DEC VT420 w/PC keyboard, + kdch1=^?, kend=\E[4~, kf1=\E[11~, 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~, + 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, + 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, + +vt420pcdos|DEC VT420 w/PC for DOS Merge, + lines#25, + dispc=%?%p1%{19}%=%t\E\023\021%e%p1%{32}%<%t\E%p1%c%e%p1 + %{127}%=%t\E\177%e%p1%c%;, + pctrm@, + rmsc=\E[?0;0r\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr@, + 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, + use=vt420, + +vt510|DEC VT510, + use=vt420, +vt510pc|DEC VT510 w/PC keyboard, + use=vt420pc, +vt510pcdos|DEC VT510 w/PC for DOS Merge, + use=vt420pcdos, + +# VT520/VT525 +# +# The VT520 is a monochrome text terminal capable of managing up to +# four independent sessions in the terminal. It has multiple ANSI +# emulations (VT520, VT420, VT320, VT220, VT100, VT PCTerm, SCO Console) +# and ASCII emulations (WY160/60, PCTerm, 50/50+, 150/120, TVI 950, +# 925 910+, ADDS A2). This terminfo data is for the ANSI emulations only. +# +# Terminal Set-Up is entered by pressing [F3], [Caps Lock]/[F3] or +# [Alt]/[Print Screen] depending upon which keyboard and which +# terminal mode is being used. If Set-Up has been disabled or +# assigned to an unknown key, Set-Up may be entered by pressing +# [F3] as the first key after power up, regardless of keyboard type. +vt520|DEC VT520, + use=ansi+rca, use=vt420, use=ansi+tabs, + +vt525|DEC VT525, + use=vt520, + +# I just got a brand new Boundless VT520 with that company's "ANSI 2011" +# Keyboard, which replaces the old LK41R-AA keyboard. +# +# In trying to get the function keys to work, I had to cobble my own +# terminfo.src entry, since the existing vt520 entry doesn't include most of +# the function keys. If I blend the entries for "vt420f" and "vt220+keypad" +# I seem to get them all -Mike Gran +vt520ansi|Boundless VT520 ANSI, + use=ansi+rca, use=vt420f, use=vt220+keypad, + use=ansi+tabs, + +#### VT100 emulations + +# John Hawkinson <jhawk@MIT.EDU> tells us that the EWAN telnet for Windows +# (the best Windows telnet as of September 1995) presents the name `dec-vt100' +# to telnetd. Michael Deutschmann <ldeutsch@mail.netshop.net> informs us +# that this works best with a stock vt100 entry. +dec-vt100|EWAN telnet's vt100 emulation, + use=vt100, + +# From: Adrian Garside <94ajg2@eng.cam.ac.uk>, 19 Nov 1996 +dec-vt220|DOS tnvt200 terminal emulator, + am@, use=vt220, + +# Zstem340 is an (IMHO) excellent VT emulator for PC's. I recommend it to +# anyone who needs PC VT340 emulation. (or anything below that level, for +# that matter -- DEC's ALL-in-1 seems happy with it, as does INFOPLUS's +# RDBM systems, it includes ReGIS and Sixel support! I'm impressed... +# I can send the address if requested. +# (z340: changed garbled \E[5?l to \E[?5l, DEC smooth scroll off -- esr) +# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995 +z340|ZSTEM vt340 terminal emulator 132col 42line, + lines#42, + is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h\E[1;42r\E[42;1H, use=vt320-w, +z340-nam|ZSTEM vt340 terminal emulator 132col 42line (no automatic margins), + am@, + is2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?7l\E[?8h\E[1;42r\E[42;1H, use=z340, + +# expect-5.44.1.15/example/tkterm +# a minimal subset of a vt100 (compare with "news-unk). +# +# 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, + +######## APPLE + +#### Terminal.app + +# nsterm*|Apple_Terminal - AppKit Terminal.app +# +# Terminal.app is a Terminal emulator bundled with NeXT's NeXTSTEP and +# OPENSTEP/Mach operating systems, and with Apple's Rhapsody, Mac OS X +# Server and Mac OS X operating systems. There is also a +# "terminal.app" in GNUstep, but I believe it to be an unrelated +# codebase and I have not attempted to describe it here. +# +# For NeXTSTEP, OPENSTEP/Mach, Rhapsody and Mac OS X Server 1.0, you +# are pretty much on your own. Use "nsterm-7-m" and hope for the best. +# You might also try "nsterm-7" and "nsterm-old" if you suspect your +# version supports color. +# +# To determine the version of Terminal.app you're using by running: +# +# echo "$TERM_PROGRAM" "$TERM_PROGRAM_VERSION" +# +# For Apple_Terminal v309+, use "nsterm-256color" (or "nsterm-bce") +# +# For Apple_Terminal v200+, use "nsterm-16color" (a.k.a. "nsterm") +# +# For Apple_Terminal v71+/v100+, use "nsterm-bce". +# +# For Apple_Terminal v51+, use "nsterm-7-c" or "nsterm-7-c-s". +# +# For Apple_Terminal v41+, use "nsterm-old", or "nsterm-s". +# +# For all earlier versions (Apple_Terminal), try "nsterm-7-m" +# (monochrome) or "nsterm-7" (color); "nsterm-7-m-s" and "nsterm-7-s" +# might work too, but really you're on your own here since these +# systems are very obsolete and I can't test them. I do welcome +# patches, though :). + +# Other Terminals: +# +# For GNUstep_Terminal, you're probably best off using "linux" or +# writing your own terminfo. + +# For MacTelnet, you're on your own. It's a different codebase, and +# seems to be somewhere between "vt102", "ncsa" and "xterm-color". + +# For iTerm.app, see "iterm". + +# +# The AppKit Terminal.app descriptions all have names beginning with +# "nsterm". Note that the statusline (-s) versions use the window +# titlebar as a phony status line, and may produce warnings during +# compilation as a result ("tsl uses 0 parameters, expected 1".) +# Ignore these warnings, or even ignore these entries entirely. Apps +# which need to position the cursor or do other fancy stuff inside the +# status line won't work with these entries. They're primarily useful +# for programs like Pine which provide simple notifications in the +# status line. Please note that non-ASCII characters don't work right +# in the status line, since Terminal.app incorrectly interprets their +# Unicode codepoints as MacRoman codepoints (in earlier Mac OS X +# versions) or only accepts status lines consisting entirely of +# characters from the first 256 Unicode positions (including C1 but +# not C0 or DEL.) +# +# The Mythology* of AppKit Terminal.app: +# +# In the days of NeXTSTEP 0.x and 1.x there were two incompatible +# bundled terminal emulators, Shell and Terminal. Scott Hess wrote a +# shareware replacement for Terminal called "Stuart" which NeXT bought +# and used as the basis for the Terminal.app in NeXTSTEP 2+, +# OPENSTEP/Mach, Apple Rhapsody, Mac OS X Server 1.0, and Mac OS X. I +# don't know the TERM_PROGRAM and TERM_PROGRAM_VERSION settings or +# capabilities for the early versions, but I believe that the +# TERM_PROGRAM_VERSION may have been reset at some point. +# +# The early versions were tailored to the NeXT character set. Sometime +# after the Apple acquisition the encoding was switched to MacRoman +# (initially with serious altcharset bugs due to incomplete conversion +# of the old NeXT code,) and then later to UTF-8. Also sometime during +# or just prior to the early days of Mac OS X, the Terminal grew ANSI +# 8-color support (initially buggy when combined with attributes, but +# that was later fixed.) More recently, around Mac OS X version 10.3 +# or so (Terminal.app v100+) xterm-like 16-color support was added. In +# some versions (for instance 133-1 which shipped with Mac OS X +# version 10.4) this suffered from the <bce> bug, but that seems to +# have been fixed in Mac OS X version 10.5 (Terminal.app v240.2+). +# +# In the early days of Mac OS X the terminal was fairly buggy and +# would routinely crash under load. Many of these bugs seem to have +# been fixed around Mac OS X version 10.3 (Terminal.app v100+) but +# some may still remain. This change seems to correspond to +# Terminal.app reporting "xterm-color" as $TERM rather than "vt100" as +# it did previously. +# +# * This may correspond with what actually happened, but I don't +# know. It is based on guesswork, hearsay, private correspondence, +# 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 +# +# [2] NeXTSTEP entry from Wikipedia, the free encyclopedia +# https://secure.wikimedia.org/wikipedia/en/wiki/Nextstep +# +# * Renamed the AppKit Terminal.app entry from "Apple_Terminal" to +# "nsterm" to comply with the name length and case conventions and +# limitations of various software packages [notably Solaris terminfo +# and UNIX.] A single Apple_Terminal alias is retained for +# backwards-compatibility. +# +# * Added function key support (F1-F4). These only work in Terminal.app +# version 51, hopefully the capabilities won't cause problems for people +# using version 41. +# +# * Added "full color" (-c) entries which support the 16-color mode in +# version 51. +# +# * By default, version 51 uses UTF-8 encoding with broken altcharset +# support, so "ASCII" (-7) entries without altcharset support were +# added. + +# nsterm - AppKit Terminal.app +# +# Apple's Mac OS X includes a Terminal.app derived from the old NeXT +# Terminal.app. It is a partial VT100 emulation with some xterm-like +# extensions. This terminfo was written to describe versions 41 +# (shipped with Mac OS X version 10.0) and 51 (shipped with Mac OS X +# version 10.1) of Terminal.app. +# +# Terminal.app runs under the Mac OS X Quartz windowing system (and +# other AppKit-supported windowing systems.) On the Mac OS X machine I +# use, the executable for Terminal.app is: +# /Applications/Utilities/Terminal.app/Contents/MacOS/Terminal +# +# If you're looking for a description of the full-screen system +# console which runs under Apple's Darwin operating system on PowerPC +# platforms, see the "xnuppc" entry instead. +# +# There were no function keys in version 41. In version 51, there are +# four working function keys (F1, F2, F3 and F4.) The function keys +# are included in all of these entries. +# +# It does not support mouse pointer position reporting. Under some +# circumstances the cursor can be positioned using option-click; this +# works by comparing the cursor position and the selected position, +# and simulating enough cursor-key presses to move the cursor to the +# selected position. This technique fails in all but the simplest +# applications. +# +# It provides partial ANSI color support (background colors interacted +# badly with bold in version 41, though, as reflected in :ncv:.) The +# monochrome (-m) entries are useful if you've disabled color support +# or use a monochrome monitor. The full color (-c) entries are useful +# in version 51, which doesn't exhibit the background color bug. They +# also enable an xterm-compatible 16-color mode. +# +# The configurable titlebar is set using xterm-compatible sequences; +# it is used as a status bar in the statusline (-s) entries. Its width +# depends on font sizes and window sizes, but 50 characters seems to +# be the default for an 80x24 window. +# +# The MacRoman character encoding is used for some of the alternate +# characters in the "MacRoman" entries; the "ASCII" (-7) entries +# disable alternate character set support entirely, and the "VT100" +# (-acs) entries rely instead on Terminal.app's own buggy VT100 +# graphics emulation, which seems to think the character encoding is +# the old NeXT charset instead of MacRoman. The "ASCII" (-7) entries +# are useful in Terminal.app version 51, which supports UTF-8 and +# other ASCII-compatible character encodings but does not correctly +# implement VT100 graphics; once VT100 graphics are correctly +# implemented in Terminal.app, the "VT100" (-acs) entries should be +# usable in any ASCII-compatible character encoding [except perhaps +# in UTF-8, where some experts argue for disallowing alternate +# characters entirely.] +# +# Terminal.app reports "vt100" as the terminal type, but exports +# several environment variables which may aid detection in a shell +# profile (i.e. .profile or .login): +# +# TERM=vt100 +# TERM_PROGRAM=Apple_Terminal +# TERM_PROGRAM_VERSION=41 # in Terminal.app version 41 +# TERM_PROGRAM_VERSION=51 # in Terminal.app version 51 +# +# For example, the following Bourne shell script would detect the +# correct terminal type: +# +# if [ :"$TERM" = :"vt100" -a :"$TERM_PROGRAM" = :"Apple_Terminal" ] +# then +# export TERM +# if [ :"$TERM_PROGRAM_VERSION" = :41 ] +# then +# TERM="nsterm-old" +# else +# TERM="nsterm-c-7" +# fi +# fi +# +# In a C shell derivative, this would be accomplished by: +# +# if ( $?TERM && $?TERM_PROGRAM && $?TERM_PROGRAM_VERSION) then +# if ( :"$TERM" == :"vt100" && :"$TERM_PROGRAM" == :"Apple_Terminal" ) then +# if ( :"$TERM_PROGRAM_VERSION" == :41 ) then +# setenv TERM "nsterm-old" +# else +# setenv TERM "nsterm-c-7" +# endif +# endif +# endif + +# The '+' entries are building blocks +nsterm+7|AppKit Terminal.app v41+ basic capabilities w/ASCII charset, + am, bw, msgr, xenl, xon, + cols#80, it#8, lines#24, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + 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, il=\E[%p1%dL, il1=\E[L, + ind=\n, invis=\E[8m, kbs=^?, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, kent=\EOM, rc=\E8, rev=\E[7m, ri=\EM, + rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, + sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? + %p5%t;2%;%?%p7%t;8%;m, + sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, use=vt100+enq, use=vt100+pfkeys, + +nsterm+acs|AppKit Terminal.app v41+ basic capabilities w/VT100 alternate-charset, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + enacs=\E(B\E)0, 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, use=nsterm+7, + +nsterm+mac|AppKit Terminal.app v41+ basic capabilities w/MacRoman alternate-charset, + acsc=+\335\,\334-\366.\3770#`\327a:f\241g\261h#i + \360jjkkllmmnno\370p\370q\321rrssttuuvvwwxxy\262z\263{ + \271|\255}\243~\245, + enacs=\E(B\E)0, 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, use=nsterm+7, + +# compare with xterm+sl-twm +nsterm+s|AppKit Terminal.app v41+ status-line (window titlebar) support, + wsl#50, use=xterm+sl-twm, + +nsterm+c|AppKit Terminal.app v51+ full color support (including 16 colors), + op=\E[0m, use=ibm+16color, + +nsterm+c41|AppKit Terminal.app v41 color support, + colors#8, ncv#37, pairs#64, + op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + +# These are different combinations of the building blocks + +# ASCII charset (-7) +nsterm-m-7|nsterm-7-m|AppKit Terminal.app v41+ w/ASCII charset (monochrome), + use=nsterm+7, + +nsterm-m-s-7|nsterm-7-m-s|AppKit Terminal.app v41+ w/ASCII charset (monochrome w/statusline), + use=nsterm+s, use=nsterm+7, + +nsterm-7|AppKit Terminal.app v41+ w/ASCII charset (color), + use=nsterm+c41, use=nsterm+7, + +nsterm-7-c|nsterm-c-7|AppKit Terminal.app v51+ w/ASCII charset (full color), + use=nsterm+c, use=nsterm+7, + +nsterm-s-7|nsterm-7-s|AppKit Terminal.app v41+ w/ASCII charset (color w/statusline), + use=nsterm+s, use=nsterm+c41, use=nsterm+7, + +nsterm-c-s-7|nsterm-7-c-s|AppKit Terminal.app v51+ w/ASCII charset (full color w/statusline), + use=nsterm+s, use=nsterm+c, use=nsterm+7, + +# VT100 alternate-charset (-acs) +nsterm-m-acs|nsterm-acs-m|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome), + use=nsterm+acs, + +nsterm-m-s-acs|nsterm-acs-m-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (monochrome w/statusline), + use=nsterm+s, use=nsterm+acs, + +nsterm-acs|AppKit Terminal.app v41+ w/VT100 alternate-charset (color), + use=nsterm+c41, use=nsterm+acs, + +nsterm-c-acs|nsterm-acs-c|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color), + use=nsterm+c, use=nsterm+acs, + +nsterm-s-acs|nsterm-acs-s|AppKit Terminal.app v41+ w/VT100 alternate-charset (color w/statusline), + use=nsterm+s, use=nsterm+c41, use=nsterm+acs, + +nsterm-c-s-acs|nsterm-acs-c-s|AppKit Terminal.app v51+ w/VT100 alternate-charset (full color w/statusline), + use=nsterm+s, use=nsterm+c, use=nsterm+acs, + +# MacRoman charset +nsterm-m|AppKit Terminal.app v41+ w/MacRoman charset (monochrome), + use=nsterm+mac, + +nsterm-m-s|AppKit Terminal.app v41+ w/MacRoman charset (monochrome w/statusline), + use=nsterm+s, use=nsterm+mac, + +nsterm-old|AppKit Terminal.app v41+ w/MacRoman charset (color), + use=nsterm+c41, use=nsterm+mac, + +nsterm-c|AppKit Terminal.app v51+ w/MacRoman charset (full color), + use=nsterm+c, use=nsterm+mac, + +nsterm-s|AppKit Terminal.app v41+ w/MacRoman charset (color w/statusline), + use=nsterm+s, use=nsterm+c41, use=nsterm+mac, + +nsterm-c-s|AppKit Terminal.app v51+ w/MacRoman charset (full color w/statusline), + use=nsterm+s, use=nsterm+c, use=nsterm+mac, + +# In Mac OS X version 10.5 the format of the preferences has changed +# and a new, more complex technique is needed, e.g., +# +# python -c 'import sys,objc;NSUserDefaults=objc.lookUpClass( +# "NSUserDefaults");ud=NSUserDefaults.alloc(); +# ud.init();prefs=ud.persistentDomainForName_( +# "com.apple.Terminal");prefs["Window Settings"][ +# prefs["Default Window Settings"]]["TerminalType" +# ]=sys.argv[1];ud.setPersistentDomain_forName_(prefs, +# "com.apple.Terminal")' nsterm-16color +# +# and it is still not settable from the preferences dialog. This is +# tracked under rdar://problem/7365108 and rdar://problem/7365134 +# in Apple's bug reporter. +# +# In OS X 10.5 (Leopard) the TERM which can be set in the preferences dialog +# defaults to xterm-color. Alternative selections are ansi, dtterm, rxvt, +# vt52, vt100, vt102 and xterm. +nsterm-16color|AppKit Terminal.app v240.2+ with Mac OS X version 10.5, + bw@, mir, npc, + dch=\E[%p1%dP, dch1=\E[P, flash=\E[?5h$<200/>\E[?5l, + hpa=\E[%i%p1%dG, ich=\E[%p1%d@, ich1=\E[@, 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~, rmcup=\E[2J\E[?47l\E8, + rmir=\E[4l, smcup=\E7\E[?47h, smir=\E[4h, + vpa=\E[%i%p1%dd, kLFT5=\E[5D, kRIT5=\E[5C, + use=nsterm-c-s-acs, use=vt220+cvis, + +# 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 +# version 10.5 does not. +# +# This entry is based on newsgroup comments by Alain Bench, Christian Ebert, +# and D P Schreber comparing to nsterm-c-s-acs. +# +# In Mac OS X version 10.4 and earlier, D P Schreber notes that $TERM +# can be set in Terminal.app, e.g., +# +# defaults write com.apple.Terminal TermCapString nsterm-bce +# +# and that it is not set in Terminal's preferences dialog. +# +# Modified for OS X 10.8, omitting bw based on testing with tack -TD +# +# Notes: +# * The terminal description matches the default settings. +# * The keyboard is configurable via a dialog. +# * By default khome, kend, knext and kprev are honored only with a +# shift-modifier. +# * There are bindings for control left/right arrow (but not up/down). +# Added those to nsterm-16color, which is the version used for OS X 10.6 +# * "Allow VT100 application keypage mode" is by default disabled. +# There is no way to press keypad-comma unless application mode is enabled +# and used. +# * 132-column mode stopped working during vttest's tests. Consider it broken. +# * CHT, REP, SU, SD are buggy. +# * ECH works (also in Leopard), but is not used here for compatibility. +# * The terminal preferences dialog replaces xterm-color by xterm-16color and +# xterm-256color. However, it adds "nsterm", so it is possible to use the +# nsterm entry from this file to override the MacPorts (20110404) or +# system (20081102) copy of this file. +# + In OS X 10.8 (Mountain Lion) the TERM which can be set in the preferences +# dialog defaults to xterm-256color. Alternative selections are ansi, +# dtterm, rxvt, vt52, vt100, vt102, xterm and xterm-16color. However, +# the menu says "Declare terminal as" without promising to actually emulate +# the corresponding terminals. Indeed, changing TERM does not affect the +# emulation itself. This means that +# + the function-keys do not match for dtterm for kf1-kf4 as well as +# khome/kend +# + the color model is the same for each setting of TERM (does not match +# ansi or dtterm). +# + the shift/control/meta key modifiers from rxvt and xterm variants are not +# recognised except for a few special cases, i.e., kRIT5 and kLFT5. +# + the vt52 emulation does not give a usable shell because screen-clearing +# does not work as expected. +# + selecting "xterm" or "xterm-16color" sets TERM to "xterm-256color". +# + OSX 10.9 (Yosemite) added more extended keys in the default configuration +# as well as unmasking F10 (which had been used in the window manager). Those +# keys are listed in this entry. +nsterm-bce|AppKit Terminal.app v71+/v100.1.8+ with Mac OS X version 10.3/10.4 (bce), + bce, use=nsterm-16color, + +# This is tested with OS X 10.8 (Mountain Lion), 2012/08/11 +# TERM_PROGRAM_VERSION=309 +# 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, + +# removed bogus kDC7 -TD +nsterm-build326|Terminal.app in OS X 10.9, + kDC=\E[3;2~, kLFT=\E[1;2D, kRIT=\E[1;2C, kcbt=\E[Z, + kf18=\E[32~, kDC5=\E[3;5~, kLFT3=\Eb, kLFT5=\E[1;5D, + kRIT3=\Ef, kRIT5=\E[1;5C, use=nsterm-build309, + +# actually "343.7" +nsterm-build343|Terminal.app in OS X 10.10, + kend=\EOF, khome=\EOH, use=nsterm-build326, + +# reviewed Terminal.app in El Capitan (version 2.6 build 361) -TD +# Using vttest: +# + no vt52 mode for cursor keys, though vt52 screen works in vttest +# + f1-f4 map to pf1-pf4 +# + no vt220 support aside from DECTCEM and ECH +# + there are no protected areas. Forget about anything above vt220. +# + in ECMA-48 cursor movement, VPR and HPR fail. Others work. +# + vttest color 11.6.4 and 11.6.5 (bce for ED/EL and ECH/indexing) are bce +# + but bce fails for 11.6.7.2 (test repeat). +# + SD (11.6.7.3) also fails, but SL/SR/SU work. +# + 11.6.6 (test insert/delete char/line with bce) has several failures. +# + normal (not X10 or Highlight tracking) mouse now works. +# + mouse any-event works +# + mouse button-event works +# + in alternate screen: +# mode 47/48 work +# mode 1047 fails to restore cursor position (do not use) +# mode 1049 fails to restore screen contents (do not use) +# + dtterm window-modify operations work (some messages are not printed) +# + dtterm window-report gives size of window in characters/pixels as +# well as state of window. +# Using tack: +# + there is no difference between cnorm/cvvis +# + has dim/invis/blink (no protect of course) +# + most function keys with shift/control modifiers give beep +# (user can configure, but out-of-the-box is what I record) +# + shift-F5 is \E[25~ through shift-F12 is \E[34~ (skips \E[30~ between +# F8 and F9). +# + kLFT5/kRIT5 work, but not up/down with control-modifier +# + kLFT/kRIT work, but not up/down with shift-modifier +# + there are a few predefined bindings with Alt, but no clear pattern. +# + uses alt-key as UTF-8 "meta" something like xterm altSendsEscape +# Using ncurses test-program with xterm-new: +# + no italics +# Using xterm's scripts: +# + palette for 256-colors is hardcoded. +# + no support for "dynamic colors" +# + no support for tcap-query. +nsterm-build361|Terminal.app in OS X 10.11, + XT, + kmous=\E[M, use=nsterm-build343, + +# reviewed Terminal.app in High Sierra (version 2.8 build 400) -TD +# Comparing with build361, little has changed, except that italics work. +# Direct-color is not supported, by the way. +# +# 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, + +# This is an alias which should always point to the "current" version +nsterm|nsterm-256color|Apple_Terminal|AppKit Terminal.app, + use=nsterm-build400, + +#### iTerm, iTerm2 + +# iTerm 0.10 +# +# iTerm.app from http://iterm.sourceforge.net/ is an alternative (and more +# featureful) terminal emulator for Mac OS X. It is similar enough in +# capabilities to nsterm-16color that I have derived this description from that +# one, but as far as I know they share no code. Many of the features are +# user-configurable, but I attempt only to describe the default configuration +# (B. Sittler). +# +# According to its documentation, iTerm uses terminfo to obtain function key +# definitions. For example, if it is started with TERM=xterm, it uses key +# definitions from that terminal description from the local OSX machine. Those +# $TERM settings may be augmented using the bookmark and profile dialogs. +# However, the behavior seen with tack does not agree with either the terminfo +# description or the function keys in its "xterm" profile. +# +# NOTES: +# with vttest: +# reports primary DA as VT100 with AVO: \E[?1;2c +# reports secondary DA as "\E[>0;95;c" +# supports blink and underline +# displays bold text as red +# recognizes all dtterm controls for modifying/querying window +# resizing via escape sequence is very slow +# supports X11R5 mouse (no X10) and XFree86 mouse (button- and event-tracking) +# supports X11R5 alternate screen and XFree86 1049 (no 1047/1048) +# supports CHA, VPA, VPR, but no other ECMA-48 cursor movement such as HPA +# with tack: +# . +# with ncurses test-program: +# ncurses 'k' has problem in second screen; light background does not fill +# with xterm scripts +# can display/alter xterm-256color cube +# can display/alter xterm-88color cube +iTerm.app|iterm|iTerm.app terminal emulator for Mac OS X, + am, bce, hs, mir, msgr, npc, xenl, xon, + cols#80, it#8, lines#24, wsl#50, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, el1=\E[1K, enacs=\E(B\E)0, + flash=\E[?5h$<200/>\E[?5l, home=\E[H, hpa=\E[%i%p1%dG, + ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, ind=\n, kLFT=\E[1;2D, kRIT=\E[1;2C, kbs=^?, + kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kdch1=\E[3~, kend=\EOF, kent=\EOM, 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=\EOH, knp=\E[6~, kpp=\E[5~, op=\E[0m, rc=\E8, + rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, + rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E[?1l\E>, + rmso=\E[m, rmul=\E[m, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, + 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, smacs=^N, smam=\E[?7h, smcup=\E7\E[?47h, + smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, vpa=\E[%i%p1%dd, kEND5=\E[1;5F, kHOM5=\E[1;5H, + use=ansi+enq, use=xterm+sl-twm, use=vt100+keypad, + use=xterm+x11mouse, use=xterm+256setaf, use=vt220+cvis, + +# iTerm2 3.0.15 +# +# 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". +# +# NOTES: +# with vttest: +# reports primary DA as VT100 with AVO: \E[?1;2c +# reports secondary DA as "\E[>0;95;0c" +# numeric keypad application mode does not work +# by default, dtterm window-modifications are ignored +# by default, dtterm window-reports return, but icon as "L", window as "l" +# supports SD/SU, no REP, SL, SR +# supports CBT, CHA, VPA, CNL, CPL, VPR (no HPA, CHT, HPR) +# no improvement to XFree86 1047/1048 modes +# with tack: +# in meta-mode, imitates xterm, sending UTF-8 +# special-key modifiers based on xterm use incompatible default for alt/meta +# with ncurses test-program: +# no italics +# no improvement to ncurses 'k' +# with xterm scripts: +# acolors.sh works +# +# Italic text did not work initially, apparently because upgrading did not +# add/change that preference (set in Preferences, Profiles, Text). A new +# install of iTerm 3.0.15 provides italics by default (blinking text is an +# option in the preferences dialog). +# +# 2018/01/21: found xterm+sm+1006 did not work with version 3.1.5 +# 2018/05/19: xterm+sm+1006 seems to work with 3.1.6beta -TD +iTerm2.app|iterm2|terminal emulator for Mac OS X, + blink=\E[5m, cbt=\E[Z, dim=\E[2m, kEND=\E[1;2F, + kHOM=\E[1;2H, ka1@, ka3@, kb2@, kc1@, kc3@, kent@, 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~, 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, + use=xterm+alt+title, use=ecma+italics, use=iterm, + +# xnuppc - Darwin PowerPC Console (a.k.a. "darwin") +# +# On PowerPC platforms, Apple's Darwin operating system uses a +# full-screen system console derived from a NetBSD framebuffer +# console. It is an ANSI-style terminal, and is not really VT-100 +# compatible. +# +# Under Mac OS X, this is the system console driver used while in +# single-user mode [reachable by holding down Command-S during the +# boot process] and when logged in using console mode [reachable by +# typing ">console" at the graphical login prompt.] +# +# If you're looking for a description of the Terminal.app terminal +# emulator which runs under the Mac OS X Quartz windowing system (and +# other AppKit-supported windowing systems,) see the "nsterm" +# entry instead. +# +# NOTE: Under Mac OS X version 10.1, the default login window does not +# prompt for user name, instead requiring an icon to be selected from +# a list of known users. Since the special ">console" login is not in +# this list, you must make one of two changes in the Login Window +# panel of the Login section of System Prefs to make the special +# ">console" login accessible. The first option is to enable 'Show +# "Other User" in list for network users', which will add a special +# "Other..." icon to the graphical login panel. Selecting "Other..." +# will present the regular graphical login prompt. The second option +# is to change the 'Display Login Window as:' setting to 'Name and +# password entry fields', which replaces the login panel with a +# graphical login prompt. +# +# There are no function keys, at least not in Darwin 1.3. +# +# It has no mouse support. +# +# It has full ANSI color support, and color combines correctly with +# all three supported attributes: bold, inverse-video and underline. +# However, bold colored text is almost unreadable (bolding is +# accomplished using shifting and or-ing, and looks smeared) so bold +# has been excluded from the list of color-compatible attributes +# [using (ncv)]. The monochrome entry (-m) is useful if you use a +# monochrome monitor. +# +# There is one serious bug with this terminal emulation's color +# support: repositioning the cursor onto a cell with non-matching +# colors obliterates that cell's contents, replacing it with a blank +# and displaying a colored cursor in the "current" colors. There is +# no complete workaround at present [other than using the monochrome +# (-m) entries,] but removing the (msgr) capability seemed to help. +# +# The "standout" chosen was simple reverse-video, although a colorful +# standout might be more aesthetically pleasing. Similarly, the bold +# chosen is the terminal's own smeared bold, although a simple +# color-change might be more readable. The color-bold (-b) entries +# uses magenta colored text for bolding instead. The fancy color (-f +# and -f2) entries use color for bold, standout and underlined text +# (underlined text is still underlined, though.) +# +# Apparently the terminal emulator does support a VT-100-style +# alternate character set, but all the alternate character set +# positions have been left blank in the font. For this reason, no +# alternate character set capabilities have been included in this +# description. The console driver appears to be ASCII-only, so (enacs) +# has been excluded [although the VT-100 sequence does work.] +# +# The default Mac OS X and Darwin installation reports "vt100" as the +# terminal type, and exports no helpful environment variables. To fix +# this, change the "console" entry in /etc/ttys from "vt100" to +# "xnuppc-WxH", where W and H are the character dimensions of your +# console (see below.) +# +# The font used by the terminal emulator is apparently one originally +# drawn by Ka-Ping Yee, and uses 8x16-pixel characters. This +# file includes descriptions for the following geometries: +# +# Pixels Characters Entry Name (append -m for monochrome) +# ------------------------------------------------------------------- +# 640x400 80x25 xnuppc-80x25 +# 640x480 80x30 xnuppc-80x30 +# 720x480 90x30 xnuppc-90x30 +# 800x600 100x37 xnuppc-100x37 +# 896x600 112x37 xnuppc-112x37 +# 1024x640 128x40 xnuppc-128x40 +# 1024x768 128x48 xnuppc-128x48 +# 1152x768 144x48 xnuppc-144x48 +# 1280x1024 160x64 xnuppc-160x64 +# 1600x1024 200x64 xnuppc-200x64 +# 1600x1200 200x75 xnuppc-200x75 +# 2048x1536 256x96 xnuppc-256x96 +# +# The basic "xnuppc" entry includes no size information, and the +# emulator includes no reporting capability, so you'll be at the mercy +# of the TTY device (which reports incorrectly on my hardware.) The +# color-bold entries do not include size information. + +# The '+' entries are building blocks +xnuppc+basic|Darwin PowerPC console basic capabilities, + am, bce, mir, xenl, + it#8, + bold=\E[1m, clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dsl=\E]2;\007, ed=\E[J, el=\E[K, + el1=\E[1K, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^?, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, + rev=\E[7m, ri=\EM, rmam=\E[?7l, rmkx=\E[?1l\E>, rmso=\E[m, + rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, + sc=\E7, + sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, + sgr0=\E[m, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, use=vt100+keypad, + +xnuppc+c|Darwin PowerPC console ANSI color support, + colors#8, ncv#32, pairs#64, + op=\E[37;40m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + +xnuppc+b|Darwin PowerPC console color-bold support, + ncv#32, + bold=\E[35m, + sgr=\E[0%?%p6%t;35%;%?%p2%t;4%;%?%p1%p3%|%t;7%;m, + use=xnuppc+basic, + +xnuppc+f|Darwin PowerPC console fancy color support, + ncv#35, + sgr=\E[0%?%p6%t;35%;%?%p2%t;36;4%;%?%p1%t;33;44%;%?%p3%t;7%; + m, + smso=\E[33;44m, smul=\E[36;4m, use=xnuppc+b, + +xnuppc+f2|Darwin PowerPC console alternate fancy color support, + ncv#35, + bold=\E[33m, + sgr=\E[0%?%p6%t;33%;%?%p2%t;34%;%?%p1%t;31;47%;%?%p3%t;7%;m, + smso=\E[31;47m, smul=\E[34m, use=xnuppc+basic, + +# Building blocks for specific screen sizes +xnuppc+80x25|Darwin PowerPC console 80x25 support (640x400 pixels), + cols#80, lines#25, + +xnuppc+80x30|Darwin PowerPC console 80x30 support (640x480 pixels), + cols#80, lines#30, + +xnuppc+90x30|Darwin PowerPC console 90x30 support (720x480 pixels), + cols#90, lines#30, + +xnuppc+100x37|Darwin PowerPC console 100x37 support (800x600 pixels), + cols#100, lines#37, + +xnuppc+112x37|Darwin PowerPC console 112x37 support (896x600 pixels), + cols#112, lines#37, + +xnuppc+128x40|Darwin PowerPC console 128x40 support (1024x640 pixels), + cols#128, lines#40, + +xnuppc+128x48|Darwin PowerPC console 128x48 support (1024x768 pixels), + cols#128, lines#48, + +xnuppc+144x48|Darwin PowerPC console 144x48 support (1152x768 pixels), + cols#144, lines#48, + +xnuppc+160x64|Darwin PowerPC console 160x64 support (1280x1024 pixels), + cols#160, lines#64, + +xnuppc+200x64|Darwin PowerPC console 200x64 support (1600x1024 pixels), + cols#200, lines#64, + +xnuppc+200x75|Darwin PowerPC console 200x75 support (1600x1200 pixels), + cols#200, lines#75, + +xnuppc+256x96|Darwin PowerPC console 256x96 support (2048x1536 pixels), + cols#0x100, lines#96, + +# These are different combinations of the building blocks + +xnuppc-m|darwin-m|Darwin PowerPC console (monochrome), + use=xnuppc+basic, + +xnuppc|darwin|Darwin PowerPC console (color), + use=xnuppc+c, use=xnuppc+basic, + +xnuppc-m-b|darwin-m-b|Darwin PowerPC console (monochrome w/color-bold), + use=xnuppc+b, + +xnuppc-b|darwin-b|Darwin PowerPC console (color w/color-bold), + use=xnuppc+b, use=xnuppc+c, + +xnuppc-m-f|darwin-m-f|Darwin PowerPC console (fancy monochrome), + use=xnuppc+f, + +xnuppc-f|darwin-f|Darwin PowerPC console (fancy color), + use=xnuppc+f, use=xnuppc+c, + +xnuppc-m-f2|darwin-m-f2|Darwin PowerPC console (alternate fancy monochrome), + use=xnuppc+f2, + +xnuppc-f2|darwin-f2|Darwin PowerPC console (alternate fancy color), + use=xnuppc+f2, use=xnuppc+c, + +# Combinations for specific screen sizes +xnuppc-80x25-m|darwin-80x25-m|Darwin PowerPC console (monochrome) 80x25, + use=xnuppc+80x25, use=xnuppc+basic, + +xnuppc-80x25|darwin-80x25|Darwin PowerPC console (color) 80x25, + use=xnuppc+c, use=xnuppc+80x25, use=xnuppc+basic, + +xnuppc-80x30-m|darwin-80x30-m|Darwin PowerPC console (monochrome) 80x30, + use=xnuppc+80x30, use=xnuppc+basic, + +xnuppc-80x30|darwin-80x30|Darwin PowerPC console (color) 80x30, + use=xnuppc+c, use=xnuppc+80x30, use=xnuppc+basic, + +xnuppc-90x30-m|darwin-90x30-m|Darwin PowerPC console (monochrome) 90x30, + use=xnuppc+90x30, use=xnuppc+basic, + +xnuppc-90x30|darwin-90x30|Darwin PowerPC console (color) 90x30, + use=xnuppc+c, use=xnuppc+90x30, use=xnuppc+basic, + +xnuppc-100x37-m|darwin-100x37-m|Darwin PowerPC console (monochrome) 100x37, + use=xnuppc+100x37, use=xnuppc+basic, + +xnuppc-100x37|darwin-100x37|Darwin PowerPC console (color) 100x37, + use=xnuppc+c, use=xnuppc+100x37, use=xnuppc+basic, + +xnuppc-112x37-m|darwin-112x37-m|Darwin PowerPC console (monochrome) 112x37, + use=xnuppc+112x37, use=xnuppc+basic, + +xnuppc-112x37|darwin-112x37|Darwin PowerPC console (color) 112x37, + use=xnuppc+c, use=xnuppc+112x37, use=xnuppc+basic, + +xnuppc-128x40-m|darwin-128x40-m|Darwin PowerPC console (monochrome) 128x40, + use=xnuppc+128x40, use=xnuppc+basic, + +xnuppc-128x40|darwin-128x40|Darwin PowerPC console (color) 128x40, + use=xnuppc+c, use=xnuppc+128x40, use=xnuppc+basic, + +xnuppc-128x48-m|darwin-128x48-m|Darwin PowerPC console (monochrome) 128x48, + use=xnuppc+128x48, use=xnuppc+basic, + +xnuppc-128x48|darwin-128x48|Darwin PowerPC console (color) 128x48, + use=xnuppc+c, use=xnuppc+128x48, use=xnuppc+basic, + +xnuppc-144x48-m|darwin-144x48-m|Darwin PowerPC console (monochrome) 144x48, + use=xnuppc+144x48, use=xnuppc+basic, + +xnuppc-144x48|darwin-144x48|Darwin PowerPC console (color) 144x48, + use=xnuppc+c, use=xnuppc+144x48, use=xnuppc+basic, + +xnuppc-160x64-m|darwin-160x64-m|Darwin PowerPC console (monochrome) 160x64, + use=xnuppc+160x64, use=xnuppc+basic, + +xnuppc-160x64|darwin-160x64|Darwin PowerPC console (color) 160x64, + use=xnuppc+c, use=xnuppc+160x64, use=xnuppc+basic, + +xnuppc-200x64-m|darwin-200x64-m|Darwin PowerPC console (monochrome) 200x64, + use=xnuppc+200x64, use=xnuppc+basic, + +xnuppc-200x64|darwin-200x64|Darwin PowerPC console (color) 200x64, + use=xnuppc+c, use=xnuppc+200x64, use=xnuppc+basic, + +xnuppc-200x75-m|darwin-200x75-m|Darwin PowerPC console (monochrome) 200x75, + use=xnuppc+200x75, use=xnuppc+basic, + +xnuppc-200x75|darwin-200x75|Darwin PowerPC console (color) 200x75, + use=xnuppc+c, use=xnuppc+200x75, use=xnuppc+basic, + +xnuppc-256x96-m|darwin-256x96-m|Darwin PowerPC console (monochrome) 256x96, + use=xnuppc+256x96, use=xnuppc+basic, + +xnuppc-256x96|darwin-256x96|Darwin PowerPC console (color) 256x96, + use=xnuppc+c, use=xnuppc+256x96, use=xnuppc+basic, + +######## DOS/WINDOWS +# CRT is shareware. It implements some xterm features, including mouse. +crt|crt-vt220|CRT 2.3 emulating VT220, + bce, msgr, + ncv@, + hts=\EH, use=vt100+enq, use=vt220-base, use=ecma+color, + +# SecureCRT 8.7.3.2279 +# 8.7.3 was released 2020/08/11 +# (eval 2021/02/05) +# VanDyke Software, Inc. +# +# Advertised features: +# Xterm 24-bit color +# Xterm 256-color +# Double-size characters +# Xterm extensions for mouse support and changing title bar +# Emulates VT100, VT102, VT220, VT320, Linux console, SCO ANSI, +# 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 +# +# Default: +# Emulate "Xterm", using "ANSI with 256color" +# TERM=xterm-256color +# +# vttest: +# DA1 \E[?62;1;2;6;7;8;9c (vt220 with DRCS and NRCS) +# DA2 \E[>1;136;0c +# double-sized characters do not work +# Menu-1 fails (window resizes to 132-columns, but does not repaint) +# NRCS fails (tried French, but none of the replacements worked) +# VT100 line-drawing works, except the C/R, etc., are an hline. +# VT52 works except for S8C1T bug. +# RIS hangs the terminal. +# Local SRM does not echo. +# Some of the VT320/VT220 status reports work, not locator or DECXCPR +# DECUDK works if I press shift. +# Fails CHT, CNL, CPL +# Does not honor bce with ECH +# ERM/SPA does not work +# REP has 11 +'s except for final 2 +'s, like PuTTY. +# Fails SL/SR +# DECRPM does not respond. +# dtterm modify/report operations do not work +# Alternate screen works. +# Mouse: +# highlight tracking does not work. +# any event tracking does not work, but +# button event tracking does work. +# DEC locator does not work. +# SGR coordinates does not work. +# ncurses: +# reset6 does reset to 80-columns +# ncurses RGB edit does not work. +# direct colors don't work, probably needs semicolons. +# tack: +# blink works, but not dim or invis +# no italics or crossed-out +# scripts: +# 256color handles "-r" option (but test/ncurses menu d does not alter) +# dynamic colors queries do not work, though it seems some can be set. +# resize.pl gets no reply, resize.sh needs fix for no reply. +scrt|securecrt|SecureCRT emulating xterm-256color, + bce@, km@, npc, + bel@, cvvis@, kcbt=\E[Z, kent=\EOM, use=vt220+pcedit, + use=xterm+256setaf, use=ecma+index, use=ansi+rep, + use=xterm+keypad, use=xterm+pcfkeys, use=xterm-basic, + +# Absolute Telnet +# (eval 2021/02/20) +# 11.24 was released 2020/08/13 +# Celestial Software +# +# Advertised features: +# Emacs compatibility mode (Meta Keys can be enabled for left/right ALT) +# Double-size characters +# Xterm extensions for mouse support +# Emulates VT52, VT100, VT220, VT320, ansi, xterm, qnx, scoansi, +# ANSIBBS, WYSE60, TeleVideo 950. +# +# Default: +# TERM=xterm +# +# vttest: +# 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 +# + VT100 double-sized characters work +# menu-1 autowrap does not work +# supports blinking text +# VT220 DECSCA last screen (ignoring ECH, etc), leaves fill on top/left +# VT220 device status reports fail, except operating status +# 8-bit controls work +# xterm alternate screen recognized, but cursor restored incorrectly +# xterm mouse (normal, any event, button event) works +# xterm highlight-mouse does not work properly, confused with any-event +# does not recognize SGR-mouse mode +# supports xterm window-modifiny/reporting controls +# supports ECMA-48 cursor movement except HPR +# supports REP and SD, but not ECMA-48 SL, SR, SU +# tack: +# italics and crossed-out do not work +# supports xterm-style modified function-keys, using X11R6 F1-F4. +# does not support modified cursor-keys or editing-keys +# uses VT220-style Home/End +# if alt-keys are enabled, +# meta-mode sends escape rather than shifting, in 7-bit mode +# meta-mode does the expected shifting in 8-bit mode +# scripts: +# supports 256-colors, including changing palette (ncurses menu d works) +# supports UTF-8, but honors VT100 line-drawing +absolute|Absolute Telnet emulating xterm, + kcbt=\E[Z, use=ecma+index, use=ansi+rep, + use=vt220+pcedit, use=xterm+keypad, use=xterm+app, + use=xterm+pcf0, use=xterm+256color, use=xterm+x11mouse, + use=xterm-basic, + +#### PuTTY +# PuTTY 0.74 (27 June 2020) +# http://www.chiark.greenend.org.uk/~sgtatham/putty/ +# +# PuTTY 0.73 (September 2019) +# Testing with tack: +# does not implement italics +# does not implement cross-out text +# its settings dialog allows some of the VT100 line-drawing tests to pass +# (not the padding test, though) +# Testing with vttest: +# xterm mouse modes are incomplete: X10, highlight, any-event, and focus in/out modes are not implemented. +# does not implement protected areas +# does not implement SL/SR +# +# PuTTY 0.71 (March 2019) provided a workable "rep" capability. It also +# changed longstanding keypad assignments, so that these no longer apply: +# kLFT=\E[D, kRIT=\E[C, kb2=\E[G, +# +# PuTTY recognized xterm's 1006 mouse mode in late 2015; subsequent release was +# in 2017 (0.70) -TD +# +# Comparing with 0.51, vttest is much better (only a few problems with the +# cursor position reports and wrapping). +# +# PuTTY 0.51 (14 December 2000) +# +# This emulates vt100 + vt52 (plus a few vt220 features: ech, SRM, DECTCEM, as +# well as SCO and Atari, color palettes from Linux console). Reading the code, +# it is intended to be VT102 plus selected features. By default, it sets $TERM +# to xterm, which is incorrect, since several features are misimplemented: +# +# Alt+key always sends ESC+key, so 'km' capability is removed. +# +# Control responses, wrapping and tabs are buggy, failing a couple of +# screens in vttest. +# +# xterm mouse support is not implemented (unreleased version may). +# +# Several features such as backspace/delete are optional; this entry documents +# the default behavior. None of the combinations of keyboard settings match +# those used for xterm -TD +# +# PuTTY recognizes xterm's 1049 mode for switching to/from alternate screen, +# but implements it incorrectly as mentioned here: +# http://stackoverflow.com/questions/24613237/terminal-retains-bg-color-after-closing-vim-using-color-scheme-and-putty-256co/37869114#37869114 +putty|PuTTY terminal emulator, + am, bce, bw, ccc, mir, msgr, xenl, xon, XT, + colors#8, it#8, ncv#22, pairs#64, U8#1, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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 + \342\231\253\E%%@%e%p1%{15}%=%t\E%%G\342\230\274\E%%@ + %e%p1%{27}%=%t\E%%G\342\206\220\E%%@%e%p1%{155}%=%t\E + %%G\340\202\242\E%%@%e%p1%c%;, + dl=\E[%p1%dM, dl1=\E[M, 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, il=\E[%p1%dL, il1=\E[L, 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, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, + kcuu1=\EOA, kind=\E[B, kri=\E[A, kspd=^Z, nel=\r\n, oc=\E]R, + op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, + rmam=\E[?7l, rmcup=\E[2J\E[?47l, rmir=\E[4l, + rmkx=\E[?1l\E>, rmpch=\E[10m, rmso=\E[27m, rmul=\E[24m, + rs2=\E<\E["p\E[50;6"p\Ec\E[?3l\E]R\E[?1000l, + s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, sc=\E7, + 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, smacs=^N, smam=\E[?7h, smcup=\E[?47h, + smir=\E[4h, smkx=\E[?1h\E=, smpch=\E[11m, smso=\E[7m, + smul=\E[4m, vpa=\E[%i%p1%dd, E3=\E[3J, use=vt220+pcedit, + use=ansi+tabs, use=ansi+rep, use=ecma+index, + use=xterm+sm+1006, use=putty+fnkeys, use=vt102+enq, + use=xterm+sl, use=vt100+fnkeys, use=putty+keypad, + use=vt220+cvis, +putty+keypad|PuTTY numeric keypad, + kp1=\EOq, kp2=\EOr, kp3=\EOs, kp4=\EOt, kp5=\EOu, kp6=\EOv, + kp7=\EOw, kp8=\EOx, kp9=\EOy, kpADD=\EOl, kpDIV=\EOQ, + kpDOT=\EOn, kpMUL=\EOR, kpNUM=\EOP, kpSUB=\EOS, kpZRO=\EOp, + +vt100-putty|Reset PuTTY to pure vt100, + rs2=\E<\E["p\Ec\E[?3l\E]R\E[40"p\E[61"p\E[50;1;2"p, + use=vt100, +putty-256color|PuTTY 0.58 with xterm 256-colors, + use=xterm+256setaf, use=putty, +putty-noapp|putty with cursor keys in normal mode, + kLFT=\EOD, kRIT=\EOC, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kind=\EOB, kri=\EOA, rmkx=\E>, smkx=\E=, + use=putty, + +# One of the keyboard selections is "VT100+". +# pterm (the X11 port) uses shifted F1-F10 as F11-F20 +putty-vt100|VT100+ keyboard layout, + use=putty+fnkeys+vt100, use=putty, + +putty-sco|putty with SCO function keys, + use=putty+fnkeys+sco, use=putty, + +# PuTTY has more than one section in its Keyboard configuration: +# a) backspace/delete, which we ignore since that choice largely depends on +# whether one matches Unix and BSD or Linux. +# b) home/end keys, also ignored because the "rxvt" setting sends keys which +# are unrelated to rxvt's actual settings. +# c) function keys and keypad - this is the interesting part. None of the +# selections match any of their respective namesakes, but they are shown +# here to help users who expect that the selections do what is implied. +# +# This is the default setting for PuTTY +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~, + +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, + +putty+fnkeys+vt400|VT400 fn-keys for PuTTY, + use=putty+fnkeys+esc, + +# 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, + +# Unlike xterm-sco, this leaves kmous ambiguous with kf1. +# +# Use modifiers to obtain function keys past 12: +# F1-F12 - normal +# F13-F24 - shift +# F25-F36 - control/alt +# 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, + 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, khome=\E[H, + kich1=\E[L, knp=\E[G, kpp=\E[I, + +#### mintty +# https://github.com/mintty/mintty +# +# Originally a fork (and reduction) of PuTTY, this has grown from 15ksloc in +# 2013 to 41ksloc in 2020. That is still smaller than PuTTY (160ksloc), but +# larger than rxvt (31ksloc) and slightly smaller than rxvt-unicode (42ksloc). +# +# Version 3.0 responds to DA as a VT400, however it does not implement the +# application keypad. The assignment of cursor-keys versus modifiers differs +# from xterm (alt-left and alt-right send modifier 7, i.e., alt+control). +# +# Thomas Wolff suggested these extensions: +# blink2 turn on rapid blinking +# blink0 turn off blinking +# norm turn off bold and half-bright mode +# opaq turn off blank mode +# smul2 begin double underline mode +# smol begin overline mode +# rmol exit overline mode +# Font0 use default font +# Font1 use alternative font 1 +# ... +# Font10 use alternative font 10 +# setal set (under)line color +# ol set default (under)line color +# overs overstrike (print characters over each other) +# +# but see vte-2018 (use Smol/Rmol rather than smol/rmol). +mintty|Cygwin Terminal, + setal=\E[5%p1%dm, use=xterm+256color, + use=mintty+common, +mintty-direct|Cygwin Terminal direct-color, + setal=\E[%?%p1%{8}%<%t5%p1%d%e58:2::%p1%{65536}%/%d:%p1 + %{256}%/%{255}%&%d:%p1%{255}%&%d%;m, + use=xterm+direct, use=mintty+common, +mintty+common|shared capabilities for mintty, + km@, npc, + kcbt=\E[Z, kent=\EOM, rmm@, rmpch=\E[10m, + rs1=\Ec\E]104\007, rshm=\E[22m, rsubm=\E[75m, + 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=ansi+rep, + use=ecma+strikeout, use=ecma+index, use=vt420+lrmm, + use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm+tmux, + use=ecma+italics, use=xterm-basic, +# 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: +# Font0=\E[10m, +# Font1=\E[11m, +# Font2=\E[12m, +# Font3=\E[13m, +# Font4=\E[14m, +# Font5=\E[15m, +# Font6=\E[16m, +# Font7=\E[17m, +# Font8=\E[18m, +# Font9=\E[19m, +# Font10=\E[20m, +# blink0=\E[25m, +# ol=\E[59m, +# overs=\E[8\:7m, + +#### TeraTerm + +# This entry is for Tera Term Pro version 2.3, for MS-Windows 95/NT written by +# T. Teranishi dated Mar 10, 1998. It is a free software terminal emulator +# (communication program) which supports: +# +# - Serial port connections. +# - TCP/IP (telnet) connections. +# - VT100 emulation, and selected VT200/300 emulation. +# - TEK4010 emulation. +# - File transfer protocols (Kermit, XMODEM, ZMODEM, B-PLUS and +# Quick-VAN). +# - Scripts using the "Tera Term Language". +# - Japanese and Russian character sets. +# +# The program does not come with terminfo or termcap entries. However, the +# emulation (testing with vttest and ncurses) is reasonably close to vt100 (no +# vt52 or doublesize character support; blinking is done with color). Besides +# the HPA, VPA extensions it also implements CPL and CNL. +# +# All of the function keys can be remapped. This description shows the default +# mapping, as installed. Both vt100 PF1-PF4 keys and quasi-vt220 F1-F4 keys +# are supported. F13-F20 are obtained by shifting F3-F10. The editing keypad +# is laid out like vt220, rather than the face codes on the PC keyboard, i.e, +# kfnd Insert +# kslt Delete +# kich1 Home +# kdch1 PageUp +# kpp End +# knp PageDown +# +# ANSI colors are implemented, but cannot be combined with video attributes +# except for reverse. +# +# No fonts are supplied with the program, so the acsc string is chosen to +# correspond with the default Microsoft terminal font. +# +# Tera Term recognizes some xterm sequences, including those for setting and +# retrieving the window title, and for setting the window size (i.e., using +# "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, + km, + 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 + \264v\301w\302x\263y\363z\362{\343|\330}\234~\376, + 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, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, + el=\E[K, el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, + hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[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~, 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=vt220+vtedit, + use=vt100+enq, use=klone+color, use=vt100, + use=vt220+cvis, + +# Version 4.59 has regular vt100 line-drawing (so it is no longer necessary +# to choose a Windows OEM font). +# +# Testing with tack: +# - it does not have xenl (suppress that) +# - underline seems to work with color (modify ncv). +# Testing with vttest: +# - wrapping differs from vt100 (menu 1). +# - it recognizes xterm's X10 and normal mouse tracking, but none of the +# other flavors. +# - it recognizes the dtterm window controls for reporting size in +# characters and pixels. +# - it passes SIGWINCH. +teraterm4.59|Tera Term Pro, + bce, xenl@, + ncv#41, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + kmous=\E[M, use=teraterm2.3, + +# Version 4.97 +# +# Testing with tack: +# - no bell (flash works) +# - bold is yellow, blink is red. +# - default keyboard sends ^? for Delete, can be configured for kdch1 +# - no meta mode +# Testing with vttest: +# + autowrap has problems... +# + color-tests for bce feature match xterm's behavior +# + handles most of xterm's mouse-controls other than highlight-tracking. +# xterm's SGR 1006 works. +# + partial support for DEC locator-events +# + implements ECMA-48 SD/SU, but not REP, SL/SR. +# + has a "Tek" window, but does not work with vttest's examples +# + supports the dtterm window modify/report controls +# + responds to DECRQM and DECRQSS controls, but not consistent with DSR +# e.g., for VT220 +# + VT220 screen-display tests are ok +# + no VT52 support +# Other tests: +# + 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, + XT, use=ecma+color, use=xterm+sm+1006, use=teraterm4.59, +teraterm-256color|TeraTerm with xterm 256-colors, + use=xterm+256setaf, use=teraterm, + +teraterm|Tera Term, + use=teraterm4.97, + +#### Command prompt + +# Tested with WinNT 4.0, the telnet application assumes the screensize is +# 25x80. This entry uses the 'Terminal' font, to get line-drawing characters. +# +# Other notes: +# a) Fails tack's cup (cursor-addressing) test, though cup works well enough +# for casual (occasional) use. Also fails several of the vttest screens, +# but that is not unusual for vt100 "emulators". +# b) Does not implement vt100 keypad +# c) Recognizes a subset of vt52 controls. +ms-vt100|MS telnet imitating DEC vt100, + lines#25, + 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, + ka1@, ka3@, kb2@, kc1@, kc3@, kent@, kf0@, kf1@, kf10@, kf2@, kf3@, kf4@, + kf5@, kf6@, kf7@, kf8@, kf9@, tbc@, use=vt102+enq, use=vt100, + +# Tested with Windows 2000, the telnet application runs in a console window, +# also using 'Terminal' font. +# +# Other notes: +# a) This version has no function keys or numeric keypad. Unlike the older +# version, the numeric keypad is entirely ignored. +# b) The program sets $TERM to "ansi", which of course is inaccurate. +ms-vt100-color|vtnt|windows 2000 ansi (sic), + bce, + dch=\E[%p1%dP, ich=\E[%p1%d@, use=ecma+color, + use=ms-vt100, + +# Based on comments from Federico Bianchi: +# +# vt100+ is basically a VT102-noSGR with ANSI.SYS colors and a different +# scheme for PF keys. +# +# and PuTTY wishlist: +# +# The modifiers are represented as the codes listed above, prefixed to +# the normal sequences. If the modifier is pressed alone, its sequence +# is transmitted twice in succession. If multiple modifiers apply, +# they're transmitted in the order shift, control, alt. +# +# Shift \E^S +# Alt \E^A, +# Ctrl \E^C, +ms-vt100+|vt100+|windows XP vt100+ (sic), + kdch1=\E-, kend=\Ek, kf1=\E1, kf10=\E0, kf11=\E!, kf12=\E@, + kf13=\E\023\E1, kf14=\E\023\E2, kf15=\E\023\E3, + kf16=\E\023\E4, kf17=\E\023\E5, kf18=\E\023\E6, + kf19=\E\023\E7, kf2=\E2, kf20=\E\023\E8, kf21=\E\023\E9, + kf22=\E\023\E0, kf23=\E\023\E!, kf24=\E\023\E@, + kf25=\E\003\E1, kf26=\E\003\E2, kf27=\E\003\E3, + kf28=\E\003\E4, kf29=\E\003\E5, kf3=\E3, kf30=\E\003\E6, + kf31=\E\003\E7, kf32=\E\003\E8, kf33=\E\003\E9, + kf34=\E\003\E0, kf35=\E\003\E!, kf36=\E\003\E@, + kf37=\E\001\E1, kf38=\E\001\E2, kf39=\E\001\E3, kf4=\E4, + kf40=\E\001\E4, kf41=\E\001\E5, kf42=\E\001\E6, + kf43=\E\001\E7, kf44=\E\001\E8, kf45=\E\001\E9, + kf46=\E\001\E0, kf47=\E\001\E!, kf48=\E\001\E@, kf5=\E5, + kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, khome=\Eh, kich1=\E+, + knp=\E/, kpp=\E?, use=ms-vt100-color, + +ms-vt-utf8|vt-utf8|UTF-8 flavor of vt100+, + use=ms-vt100+, + +# Windows Terminal (Preview) +# https://github.com/microsoft/terminal +# +# Windows 10 21H1 +# Version 1.9.1942.0 +# +# This has longstanding issues with CR/LF mapping, e.g., +# - first reported by Juergen Pfeifer August 13, 2020, with workaround +# - Windows Terminal #8303 "Updates to ms-terminal terminal type in terminfo to +# 1.4 from 0.2" +# - Windows Terminal #6733 "Midnight Commander (mc) output is screwed when +# using the 'ms-terminal' as $TERM" +# +# still seen in testing during May-July 2021. As a workaround, this terminal +# description sets cud1 to an escape sequence rather than just \r. +# +# Using TERM=xterm-256color shows a number of problems. +# A few are seen only in the WSL2 environment. +# +# tack: +# - flash does not work. +# - video attribute blink does not work. +# - video attribute invis does not work in WSL2. +# - italics sitm/ritm do not work in WSL2. +# - crossed-out smxx/rmxx do not work in WSL2. +# - reloading colors via initp interchanges red/blue. +# - does not implement OSC 104, which is used for resetting colors in xterm. +# - does not support numeric keypad application mode. +# - control-modifier (without alt/shift) does not work for special keys. +# - meta-key sends escape character rather than acting as a meta key. +# +# vttest: +# - identifies itself as a VT100. +# - cursor movement (menu 1) does not work properly, e.g., for wrapping. +# - does not support 8-bit controls. +# - does not support VT420 rectangles. +# - does not support VT420 left/right margins. +# - ECMA-48 cursor-movement works. +# - does not support X10 mouse, or mouse highlight tracking. +# - SGR mouse mode 1006 works. +# - any-event mouse mode shows no focus-in/focus-out events. +# - alternate screen 47/48 modes do not work, nor do 1047/1048. +# - alternate screen 1049 mode works. +# - none of the window report/modify operations work. +# - none of the DECRPM/DECRQM reporting operations work. +# +# xterm: +# - 256colors2.pl -r, -i and -q options work. +# - dynamic colors do not work. +# - paste64.pl does not work, i.e., bracketed-paste. +# - tcapquery.pl does not work. +# +# Windows 10 1903 +# Version 0.2.1831.0 +# +# The task manager shows this as "OpenConsole.exe", which differs +# from the "Windows Command Processor" used for the command-prompt. +# +# The settings dialog does not work (unless the end user expects to open +# profiles.json in Visual Studio). There is no documentation, of course. +# +# Testing via an ssh connection, using openssh: +# - the program sets TERM to cygwin if the tab is set to PowerShell, +# and to xterm-256color if "Legacy". However, in the latter, more tests +# fail in vttest, which does not pay attention to TERM. +# vttest: +# - menu 1 (tests for cursor movement) misbehaves like command-prompt +# - primary DA says this is a vanilla VT100 +# - does not flush response to primary DA, leaving a ^M on the end when +# the PowerShell tab is used. Both the "Legacy" tab and the command-prompt +# work properly in this test. +# - in the generic VT100 tests, there are problems with character sets +# (diamond shows as a double-width character, DEL as two replacement-chars). +# - outside of the generic VT100 tests, the program does poorly because most +# of the features are missing. +# - ECH does not work properly +# - a few generic xterm features are supported (set window title), but +# others are missing (such as the mouse). +# - the cursor visible/invisible works in the PowerShell tab, not in "Legacy" +# tack: +# - blink, dim, bold, invis, protect do not work +# - bce works (but per vttest, with ED, EL, not ECH) +# - does not support keypad application mode +# - implements most of the xterm modified keys; sometimes modifiers are ignored +# or simply incorrect +# - sends escape+key rather than implementing meta mode +# other: +# - 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, + npc, + cud1=\E[B, kcbt=\E[Z, rmkx=\E[?1l, rmm@, smkx=\E[?1h, smm@, + Cr@, Ms@, 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, + +#### Visual Studio +# Visual Studio Code 1.45.0 uses xterm.js 12.8.1 (see https://xtermjs.org/). +# +# vttest: +# - fixes menu 1 problem with wrapping +# - supports DECALN +# - fixes menu 8 problem with delete-character +# - REP, SL/SL work +# - keypad application mode still does not work; PF1-PF4 are not assigned. +# - DECRQM/DECRPM do not work +# - xterm mouse features: +# - SGR coordinates work; the other modes do not (see vscode #96058) +# - focus-events are not sent +# - mouse highlight tracking does not send button event +# tack/other: +# - little or no change since previous review +# +# Visual Studio Code 1.35.1 uses xterm.js (see https://xtermjs.org/). +# https://code.visualstudio.com/docs/editor/integrated-terminal +# +# This sets TERM to xterm-256color, which is a little more successful than +# Windows Terminal. +# +# vttest: +# - menu 1 (cursor movement) has problems with wrapping +# - claims to be a VT100 with AVO, but copies xterm #276's secondary response +# - menu 8 (insert/delete char/line) has problem with delete-character +# - like Windows Terminal, fails the ECH test: neither supports DECALN +# However, the bce test with ECH works. +# - does not support keypad application mode +# - supports most xterm mode controls (except DEC Locator Events) +# - REP, SL/SL do not work, but SD/SU work. +# - the alternate-screen tests fail because it does not support DECALN +# - window modify/report is not supported +# - supports some VT320 presentation reports +# tack: +# - does not support blinking text +# - implements most of the xterm modified keys, with some exceptions: +# - pageup/pagedown do not send escapes +# - alt cursor left/right send escape-b and escape-f +# - sends UTF-8 like xterm for meta mode +# other: +# - mouse mode is not reset by reset-sequence +# - supports italics and dim, but not cross-out or double-underline +# - 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=xterm+256setaf, + use=ecma+index, use=xterm+sm+1006, use=xterm+pcfkeys, + use=ecma+italics, use=xterm-basic, +vscode-direct|Visual Studio Code with direct-colors, + use=xterm+indirect, use=vscode, + +######## X TERMINAL EMULATORS +#### XTERM +# +# You can add the following line to your .Xdefaults to change the terminal type +# set by the xterms you start up to my-xterm: +# +# *termName: my-xterm +# +# System administrators can change the default entry for xterm instances +# by adding a similar line to /usr/X11/lib/X11/app-defaults/XTerm. In either +# case, xterm will detect and reject an invalid terminal type, falling back +# to the default of xterm. +# + +# X10/6.6 11/7/86, minus alternate screen, plus (csr) +# (xterm: ":MT:" changed to ":km:"; added <smam>/<rmam> based on init string; +# removed (hs, eslok, tsl=\E[?E\E[?%i%dT, fsl=\E[?F, dsl=\E[?E) +# as these seem not to work -- esr) +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, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, + il1=\E[L, 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, +# Compatible with the R5 xterm +# (from the XFree86 3.2 distribution, <blink=@> removed) +# added khome/kend, rmir/smir, rmul/smul, hts based on the R5 xterm code - TD +# corrected typos in rs2 string - TD +# added u6-u9 -TD +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, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, ind=\n, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, 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, rc=\E8, rev=\E[7m, ri=\EM, + rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rs2=\E>\E[?1;3;4;5;6l\E[4l\E[?7h\E[m\E[r\E[2J\E[H, + sc=\E7, + sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 + %;m, + sgr0=\E[m, smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, use=vt220+pcedit, use=vt100+enq, + use=xterm+kbs, +# Compatible with the R6 xterm +# (from XFree86 3.2 distribution, <acsc> and <it> added, <blink@> removed) +# added khome/kend, hts based on the R6 xterm code - TD +# (khome/kend do not actually work in X11R5 or X11R6, but many people use this +# for compatibility with other emulators). +xterm-r6|xterm X11R6 version, + OTbs, am, km, mir, msgr, xenl, + cols#80, it#8, lines#24, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, enacs=\E)0, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, + il1=\E[L, 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, + rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8, + rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rs2=\E[m\E[?7h\E[4l\E>\E7\E[r\E[?1;3;4;6l\E8, sc=\E7, + sgr0=\E[m, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, + smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + use=vt220+vtedit, use=xterm+kbs, use=vt100+enq, +xterm-old|antique xterm version, + use=xterm-r6, +# The monochrome version began as a copy of "xtermm" (from Solaris), and was +# initially part of the xterm sources (in XFree86). But "xterm" continued to +# grow, while "xterm-mono" had none of the newer features. Additionally, +# inheriting from "xtermm" runs into several problems, including different +# function keys as well as the fact that the mouse support is not compatible. +# This entry restores the original intent, intentionally not an alias to +# simplify maintenance -TD +xterm-mono|monochrome xterm, + use=xterm-r6, +# This is the base xterm entry for the xterm supplied with XFree86 3.2 & up. +# The name has been changed and some aliases have been removed. +xterm-xf86-v32|xterm terminal emulator (XFree86 3.2 Window System), + OTbs, am, bce, km, mir, msgr, xenl, XT, + cols#80, it#8, lines#24, ncv@, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + 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, + ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, ind=\n, + is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, + kbeg=\EOE, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + 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~, khome=\EOH, kich1=\E[2~, kmous=\E[M, knp=\E[6~, + kpp=\E[5~, kslt=\E[4~, meml=\El, memu=\Em, rc=\E8, rev=\E[7m, + ri=\EM, rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, + rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, rmul=\E[24m, + rs1=^O, rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>, + sc=\E7, + 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} + %=%t3%e%p1%d%;m, + 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, smcup=\E7\E[?47h, + smir=\E[4h, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, vpa=\E[%i%p1%dd, use=xterm+kbs, use=vt100+enq, + use=ecma+color, use=vt220+cvis, use=vt220+keypad, + +# 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, + +# This version was released in XFree86 3.3.3 (November 1998). +# Besides providing printer support, it exploits a new feature that allows +# xterm to use terminfo-based descriptions with the titeInhibit resource. +# -- the distribution contained incorrect khome/kend values -TD +xterm-xf86-v333|xterm terminal emulator (XFree86 3.3.3 Window System), + blink=\E[5m, ich1@, invis=\E[8m, + is2=\E[!p\E[?3;4l\E[4l\E>, kdch1=\E[3~, kfnd@, kslt@, + rmcup=\E[?1047l\E[?1048l, rs1=\Ec, + rs2=\E[!p\E[?3;4l\E[4l\E>, + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 + %;%?%p7%t;8%;m%?%p9%t\016%e\017%;, + smcup=\E[?1048h\E[?1047h, use=ansi+pp, + use=xterm-xf86-v33, + +# This version was released in XFree86 4.0. +xterm-xf86-v40|xterm terminal emulator (XFree86 4.0 Window System), + npc, + kDC=\E[3;5~, kEND=\EO5F, kHOM=\EO5H, kIC=\E[2;5~, + kLFT=\EO5D, kNXT=\E[6;5~, kPRV=\E[5;5~, kRIT=\EO5C, ka1@, + ka3@, kb2=\EOE, kc1@, kc3@, kcbt=\E[Z, kdch1=\E[3~, kend=\EOF, + 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~, 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~, khome=\EOH, + sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;m%? + %p9%t\016%e\017%;, + use=xterm+alt1049, use=xterm-xf86-v333, + +# This version was released in XFree86 4.3. +xterm-xf86-v43|xterm terminal emulator (XFree86 4.3 Window System), + 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, + kbeg@, + sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? + %p7%t;8%;m%?%p9%t\016%e\017%;, + use=xterm-xf86-v40, + +# Controlling the cursor-visibility is not a "new" feature, but was generally +# neglected in terminal emulators until the mid-1990s. These would work for +# the hardware terminals, or for more recent emulators, e.g., xterm. +vt220+cvis|DECTCEM VT220 cursor-visibility, + civis=\E[?25l, cnorm=\E[?25h, +vt220+cvis8|8-bit DECTCEM VT220 cursor-visibility, + civis=\233?25l, cnorm=\233?25h, +# The cvvis capability was unused in the SVr4 terminal descriptions for the +# AT&T terminals, and there are no available documents as of 2021 which can +# provide that it would have worked. The first block is used for those 1980s +# terminals; the second is used for terminals whose behavior can be verified. +att610+cvis0|AT&T 610 cursor-visibility, + civis=\E[?25l, cnorm=\E[?25h\E[?12l, +att610+cvis|xterm cursor-visibility in XFree86 4.4, + civis=\E[?25l, cnorm=\E[?12l\E[?25h, cvvis=\E[?12;25h, + +# This version was released in XFree86 4.4. +xterm-xf86-v44|xterm terminal emulator (XFree86 4.4 Window System), + use=att610+cvis, use=ecma+index, use=xterm-xf86-v43, + +xterm-xfree86|xterm terminal emulator (XFree86), + use=xterm-xf86-v44, + +xterm+nofkeys|building block for xterm fkey-variants, + npc, + kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index, + use=ansi+rep, use=ecma+strikeout, use=vt420+lrmm, + use=xterm+sm+1006, use=xterm+tmux, use=ecma+italics, + use=xterm+keypad, use=xterm-basic, + +# This version reflects the current xterm features. +xterm-new|modern xterm terminal emulator, + npc, + kcbt=\E[Z, kent=\EOM, nel=\EE, use=ecma+index, + use=ansi+rep, use=ecma+strikeout, use=xterm+pcfkeys, + use=xterm+nofkeys, + +# This fragment is for people who cannot agree on what the backspace key +# should send. +xterm+kbs|fragment for backspace key, + kbs=^H, +# +# This fragment describes as much of XFree86 xterm's "pc-style" function +# keys as will fit into terminfo's 60 function keys. +# From ctlseqs.ms: +# Code Modifiers +# --------------------------------- +# 2 Shift +# 3 Alt +# 4 Shift + Alt +# 5 Control +# 6 Shift + Control +# 7 Alt + Control +# 8 Shift + Alt + Control +# --------------------------------- +# The meta key may also be used as a modifier in this scheme, adding another +# bit to the parameter. +xterm+pcfkeys|fragment for PC-style fkeys, + use=xterm+app, use=xterm+pcf2, use=xterm+pcc2, + use=xterm+pce2, + +# The xterm ctrlFKeys resource defaults to 10, so without the "pc-style" +# feature, e.g., setting the modifyCursorKeys and modifyFunctionKeys resources +# to -1 to disable them, one gets 42 function-keys on a 12-function-key +# keyboard, e.g., +# kf1 = \E[11~ +# kf11 shift f1 = \E[23~ +# 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~, + +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+app|fragment with cursor keys in application mode, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\EOF, + khome=\EOH, +# +# The "PC-style" modifier scheme was introduced in xterm patch #94 (1999/3/27) +# and revised in xterm patch #167 (2002/8/24). Some other terminal emulators +# copied the earlier scheme, as noted in the "use=" clauses in this file. +# +# The original assignments from patch #94 for cursor-keys had some technical +# issues: +# +# A parameter for a function-key to represent a modifier is just more +# bits. But for a cursor-key it may change the behavior of the +# application. For instance, emacs decodes the first parameter of a +# cursor-key as a repeat count. +# +# A parameterized string should (really) not begin with SS3 (\EO). +# Rather, CSI (\E[) should be used. +# +# For these reasons, the original assignments were deprecated. For +# compatibility reasons, they are still available as a setting of xterm's +# modifyCursorKeys resource. These fragments list the modified cursor-keys +# that might apply to xterm+pcfkeys with different values of that resource. +# +# These entries will have warnings when checking with tic because the kri/kind +# capabilities duplicate the kUP/kDN extensions. This is intentional, though +# not part of the original plan. The changes for xterm patch #206 (2005/11/3) +# show that kri/kind were seen much later as part of a set including kLFT/kRIT: +# +# * modify xterm-new terminfo entry to use capabilities for shifted +# scroll forward/reverse as shifted cursor up/down. +# +# In the 1980s when terminfo was defined, the developers made more of +# a distinction between shifted up/down versus shifted left/right since most +# terminals can index (scroll up/down), while few can scroll left/right. +xterm+pcc3|fragment with modifyCursorKeys:3, + kLFT=\E[>1;2D, kRIT=\E[>1;2C, kind=\E[>1;2B, + kri=\E[>1;2A, kDN=\E[>1;2B, kDN3=\E[>1;3B, kDN4=\E[>1;4B, + kDN5=\E[>1;5B, kDN6=\E[>1;6B, kDN7=\E[>1;7B, + 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, kUP3=\E[>1;3A, + kUP4=\E[>1;4A, kUP5=\E[>1;5A, kUP6=\E[>1;6A, + kUP7=\E[>1;7A, + +xterm+pcc2|fragment with modifyCursorKeys:2, + kLFT=\E[1;2D, kRIT=\E[1;2C, kind=\E[1;2B, kri=\E[1;2A, + kDN=\E[1;2B, kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B, + kDN6=\E[1;6B, kDN7=\E[1;7B, 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, kUP3=\E[1;3A, + kUP4=\E[1;4A, kUP5=\E[1;5A, kUP6=\E[1;6A, kUP7=\E[1;7A, + +xterm+pcc1|fragment with modifyCursorKeys:1, + kLFT=\E[2D, kRIT=\E[2C, kind=\E[2B, kri=\E[2A, kDN=\E[2B, + kDN3=\E[3B, kDN4=\E[4B, kDN5=\E[5B, kDN6=\E[6B, kDN7=\E[7B, + kLFT3=\E[3D, kLFT4=\E[4D, kLFT5=\E[5D, kLFT6=\E[6D, + kLFT7=\E[7D, kRIT3=\E[3C, kRIT4=\E[4C, kRIT5=\E[5C, + kRIT6=\E[6C, kRIT7=\E[7C, kUP=\E[2A, kUP3=\E[3A, + kUP4=\E[4A, kUP5=\E[5A, kUP6=\E[6A, kUP7=\E[7A, + +xterm+pcc0|fragment with modifyCursorKeys:0, + kLFT=\EO2D, kRIT=\EO2C, kind=\EO2B, kri=\EO2A, kDN=\EO2B, + kDN3=\EO3B, kDN4=\EO4B, kDN5=\EO5B, kDN6=\EO6B, kDN7=\EO7B, + kLFT3=\EO3D, kLFT4=\EO4D, kLFT5=\EO5D, kLFT6=\EO6D, + kLFT7=\EO7D, kRIT3=\EO3C, kRIT4=\EO4C, kRIT5=\EO5C, + kRIT6=\EO6C, kRIT7=\EO7C, kUP=\EO2A, kUP3=\EO3A, + kUP4=\EO4A, kUP5=\EO5A, kUP6=\EO6A, kUP7=\EO7A, + +# +# Here are corresponding fragments from xterm patch #216: +# +xterm+pcf0|fragment with modifyFunctionKeys:0, + kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, + kf13=\EO2P, kf14=\EO2Q, kf15=\EO2R, kf16=\EO2S, + 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=\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, + kf5=\E[15~, 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~, kf6=\E[17~, kf60=\E[24;3~, kf61=\EO4P, + kf62=\EO4Q, kf63=\EO4R, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, +# +xterm+pcf2|fragment with modifyFunctionKeys:2, + kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, + 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~, 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, kf5=\E[15~, 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~, kf6=\E[17~, kf60=\E[24;3~, + kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~, + kf8=\E[19~, kf9=\E[20~, +# +# Chunks from xterm #230: +xterm+pce2|fragment with modifyCursorKeys:2, + kDC=\E[3;2~, kEND=\E[1;2F, kHOM=\E[1;2H, kIC=\E[2;2~, + kNXT=\E[6;2~, kPRV=\E[5;2~, kich1=\E[2~, knp=\E[6~, + kpp=\E[5~, kDC3=\E[3;3~, kDC4=\E[3;4~, kDC5=\E[3;5~, + kDC6=\E[3;6~, kDC7=\E[3;7~, kEND3=\E[1;3F, kEND4=\E[1;4F, + kEND5=\E[1;5F, kEND6=\E[1;6F, kEND7=\E[1;7F, + kHOM3=\E[1;3H, kHOM4=\E[1;4H, kHOM5=\E[1;5H, + kHOM6=\E[1;6H, kHOM7=\E[1;7H, kIC3=\E[2;3~, kIC4=\E[2;4~, + kIC5=\E[2;5~, kIC6=\E[2;6~, kIC7=\E[2;7~, kNXT3=\E[6;3~, + kNXT4=\E[6;4~, kNXT5=\E[6;5~, kNXT6=\E[6;6~, + kNXT7=\E[6;7~, kPRV3=\E[5;3~, kPRV4=\E[5;4~, + kPRV5=\E[5;5~, kPRV6=\E[5;6~, kPRV7=\E[5;7~, + use=xterm+edit, + +xterm+edit|fragment for 6-key editing-keypad, + kdch1=\E[3~, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, + use=xterm+pc+edit, + +xterm+pc+edit|fragment for pc-style editing keypad, + kend=\E[4~, khome=\E[1~, + +xterm+vt+edit|fragment for vt220-style editing keypad, + kfnd=\E[1~, kslt=\E[4~, + +# These variations for alternate-screen and title-stacking were introduced by +# xterm patch #331: +xterm+noalt|xterm without altscreen, + rmcup@, smcup@, + +xterm+alt1049|xterm 90 feature, + rmcup=\E[?1049l, smcup=\E[?1049h, + +xterm+titlestack|xterm 251 feature, + rmcup=\E[23;0;0t, smcup=\E[22;0;0t, + +xterm+alt+title|xterm 90 and 251 features combined, + rmcup=\E[?1049l\E[23;0;0t, smcup=\E[?1049h\E[22;0;0t, + +# https://invisible-island.net/xterm/xterm.faq.html#xterm_keypad +# +# Xterm's emulation of the VT100 numeric keypad on a PC-keyboard runs into the +# problem that the keypad layout is different, and that the natural choice for +# PF1 is NumLock (which happens to be reserved for other use). To work around +# that, PF1-PF4 are emulated via F1-F4, which leaves the "/", "*" and "+" not +# directly related to VT100. +# +# With the VT220 keypad block that uses the 1-9 keys as suggested in +# terminfo(5), the other keys can be handled with user-defined capabilities: +# +# _______________________________________ +# | NumLock | / | * | - | +# | | $Oo | $Oj | $OS | +# |_________|__kpDIV__|__kpMUL__|__kpSUB__| +# | 7 8 9 | + | +# | $Ow | $Ox | $Oy | $Ok | +# |_ka1__K1_|_________|_ka3__K3_| kpADD | +# | 4 | 5 | 6 | | +# | $Ot | $Ou | $Ov | | +# |_________|_kb2__K2_|_________|_________| +# | 1 | 2 | 3 | | +# | $Oq | $Or | $Os | | +# |_kc1__K4_|_________|_kc3__K5_| enter | +# | 0 | . | $OM | +# | $Op | $On | | +# |_______kpZRO_______|__kpDOT__|_kent_@8_| +# +# ka2, kb1, kb3 and kc2 are extensions, as are the mixed-case names. +# There are no termcap equivalents for these extensions. +# +# kpCMA (comma) is used here for the VT100 keypad, which xterm emulates with +# shifted-keypad-plus, though normally that invokes a font-size change. +# +# Old versions of xterm, e.g., xterm-xfree86, documented \EOE as kb2, which +# does not fit into this layout. The extension kp5 fits, but is not visible +# to termcap applications. As an alternative, kbeg (which does have a termcap +# equivalent) is provided. +# +xterm+keypad|xterm emulating VT100/VT220 numeric keypad, + kbeg=\EOE, kp5=\EOE, kpADD=\EOk, kpCMA=\EOl, kpDIV=\EOo, + kpDOT=\EOn, kpMUL=\EOj, kpSUB=\EOm, kpZRO=\EOp, + use=vt220+keypad, +# +# Those chunks use the new-style (the xterm oldFunctionKeys resource is false). +# Alternatively, the same scheme with old-style function keys as in xterm-r6 +# is shown here (because that is used in mrxvt and mlterm): +xterm+r6f2|xterm with oldFunctionKeys and modifyFunctionKeys:2, + kf1=\E[11~, kf13=\E[11;2~, kf14=\E[12;2~, kf15=\E[13;2~, + kf16=\E[14;2~, kf2=\E[12~, kf25=\E[11;5~, kf26=\E[12;5~, + kf27=\E[13;5~, kf28=\E[14;5~, kf3=\E[13~, kf37=\E[11;6~, + kf38=\E[12;6~, kf39=\E[13;6~, kf4=\E[14~, kf40=\E[14;6~, + kf49=\E[11;3~, kf50=\E[12;3~, kf51=\E[13;3~, + kf52=\E[14;3~, kf61=\E[11;4~, kf62=\E[12;4~, + kf63=\E[13;4~, use=xterm+pcf2, +# +# This chunk is used for building the VT220/Sun/PC keyboard variants. +xterm-basic|modern xterm terminal emulator - common, + OTbs, am, bce, mir, msgr, xenl, AX, XT, + colors#8, cols#80, it#8, lines#24, pairs#64, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + 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, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, 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, + ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, + ind=\n, invis=\E[8m, is2=\E[!p\E[?3;4l\E[4l\E>, + kmous=\E[M, meml=\El, memu=\Em, op=\E[39;49m, rc=\E8, + 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, + rs2=\E[!p\E[?3;4l\E[4l\E>, sc=\E7, 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} + %=%t3%e%p1%d%;m, + 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, smacs=\E(0, smam=\E[?7h, smir=\E[4h, + smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + vpa=\E[%i%p1%dd, E3=\E[3J, use=ansi+pp, use=xterm+kbs, + use=xterm+alt+title, use=ansi+enq, use=att610+cvis, + use=xterm+meta, + +xterm+meta|meta mode for xterm, + km, + rmm=\E[?1034l, smm=\E[?1034h, + +# From: David J. MacKenzie <djm@va.pubnix.com>, 14 Nov 1997 +# In retrospect, something like xterm-r6 was intended here -TD +xterm-xi|xterm on XI Graphics Accelerated X under BSD/OS 3.1, + rmso=\E[m, rmul=\E[m, use=xterm-xf86-v33, + +#### XTERM Colors + +# 16-colors is one of the variants of XFree86 3.3 xterm, updated for 4.0 +# (T.Dickey) +# +# If configured to support 88- or 256-colors (which is fairly common in 2009), +# xterm also recognizes the control sequences for initc -TD +xterm-16color|xterm with 16 colors like aixterm, + ccc, + initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%* + %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, + use=xterm+osc104, use=ibm+16color, use=xterm-new, + +# 256-colors is a compile-time feature of XFree86 xterm beginning with +# xterm patch #111 (1999/7/10) -TD +xterm+256color|original xterm 256-color feature, + ccc, + colors#0x100, pairs#0x10000, + initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%* + %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, + oc=\E]104\007, + 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, + setb@, setf@, + +# The semicolon separator used in xterm+256color does not follow the ECMA-48 +# standard. Since patch #282 (in 2012), xterm has supported both the legacy +# subparameter separator (semicolon) and the standard (colon). +# +# The xterm FAQ gives some of the history: +# https://invisible-island.net/xterm/xterm.faq.html#color_by_number +xterm+256color2|xterm 256-color feature, + 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, + use=xterm+256color, + +# xterm OSC 104 resets the color palette. Using it as part of xterm+256color +# has the drawback that some of the xterm-alikes which use that building block +# require a different approach to rs1 -TD +xterm+osc104|reset color palette, + oc=\E]104\007, rs1=\Ec\E]104\007, + +# palette is hardcoded... +xterm+256setaf|xterm 256-color (set-only), + ccc@, + colors#0x100, pairs#0x10000, + initc@, op=\E[39;49m, + 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, + setb@, setf@, + +# 88-colors is a compile-time feature of XFree86 xterm beginning with +# xterm patch #115 (1999/9/18) -TD +# +# Note that the escape sequences used are the same as for 256-colors - xterm +# has a different table of default color resource values. If built for +# 256-colors, it can still handle an 88-color palette by using the initc +# capability. +# +# At this time (2007/7/14), except for rxvt 2.7.x, none of the other terminals +# which support the xterm+256color feature support the associated initc +# capability. So it is cancelled in the entries which use this and/or the +# xterm+256color block. +# +# The default color palette for the 256- and 88-colors are different. A +# given executable will have one palette (perhaps compiled-in). If the program +# supports xterm's control sequence, it can be programmed using initc. +xterm+88color|original xterm 88-color feature, + colors#88, pairs#7744, use=xterm+256color, + +xterm+88color2|xterm 88-color feature, + colors#88, pairs#7744, use=xterm+256color2, + +# These variants of XFree86 3.9.16 xterm are built as a configure option. +xterm-256color|xterm with 256 colors, + use=xterm+osc104, use=xterm+256color, use=xterm-new, +xterm-88color|xterm with 88 colors, + use=xterm+osc104, use=xterm+88color, + use=xterm-256color, + +# Emacs 26.1 and later support direct color mode in terminals, using a +# combination of user-defined capabilities and ncurses-dependent function +# calls. We will not include that here. +# +# Here is a first revision, which (disregarding the reuse of colors 1-7 which +# is of interest only to the numerically illiterate), is compatible with other +# terminal descriptions written for curses. It relies upon the extended range +# for numeric capabilities provided in ncurses 6.1: +xterm+direct2|xterm with direct-color indexing, + RGB, + colors#0x1000000, pairs#0x10000, CO#8, + initc@, op=\E[39;49m, + setab=\E[%?%p1%{8}%<%t4%p1%d%e48:2:%p1%{65536}%/%d:%p1%{256} + %/%{255}%&%d:%p1%{255}%&%d%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e38:2:%p1%{65536}%/%d:%p1%{256} + %/%{255}%&%d:%p1%{255}%&%d%;m, + setb@, setf@, +xterm-direct2|xterm with direct-color indexing (old), + use=xterm+direct2, use=xterm+titlestack, use=xterm, + +# That in turn had a problem: in the original patch submitted for KDE konsole +# in 2006, the submitter and the developer alike overlooked a "color space +# identifier" parameter. This version provides for that parameter: +xterm+direct|xterm with direct-color indexing, + RGB, + colors#0x1000000, pairs#0x10000, CO#8, + initc@, op=\E[39;49m, + setab=\E[%?%p1%{8}%<%t4%p1%d%e48:2::%p1%{65536}%/%d:%p1 + %{256}%/%{255}%&%d:%p1%{255}%&%d%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e38:2::%p1%{65536}%/%d:%p1 + %{256}%/%{255}%&%d:%p1%{255}%&%d%;m, + setb@, setf@, +xterm-direct|xterm with direct-color indexing, + use=xterm+direct, use=xterm, + +# Here are corresponding flavors for terminals which could use the feature: +iterm2-direct|iTerm2 with direct-color indexing, + use=xterm+direct, use=iterm2, +mlterm-direct|mlterm with direct-color indexing, + use=xterm+direct, use=mlterm, + +# Meanwhile, in KDE #107487, the patch submitter and the developer both saw +# that xterm's original implementation should have used colons for the +# subparameter separators, but chose not to correct this in konsole. As of +# late 2017, konsole still accepts only the nonstandard semicolon delimiters. +xterm+indirect|xterm with direct-color indexing (old), + RGB, + colors#0x1000000, pairs#0x10000, + initc@, op=\E[39;49m, + setab=\E[%?%p1%{8}%<%t4%p1%d%e48;2;%p1%{65536}%/%d;%p1%{256} + %/%{255}%&%d;%p1%{255}%&%d%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e38;2;%p1%{65536}%/%d;%p1%{256} + %/%{255}%&%d;%p1%{255}%&%d%;m, + setb@, setf@, +konsole-direct|konsole with direct-color indexing, + use=xterm+indirect, use=konsole, +st-direct|simpleterm with direct-color indexing, + use=xterm+indirect, use=st, +vte-direct|VTE with direct-color indexing, + use=xterm+indirect, use=vte, +# reportedly in Apple's Mohave (fall 2018), but untested -TD +nsterm-direct|nsterm with direct-color indexing, + use=xterm+indirect, use=nsterm, + +# As for others (commenting at the time of release for ncurses 6.1): +# + Apple's Terminal.app does not recognize either form of the direct-color +# sequences. +# + Cygwin's mintty recognizes xterm's original implementation, does okay with +# the colors. Like vte, it is a subset of xterm, although different +# omissions/reservations of modified-keys are seen in testing. +# + PuTTY 0.70 seems to recognize xterm's original implementation but does +# nothing useful with the colors. +# + Teraterm 4.97, like PuTTY (no good). +# + terminology 0.91 recognizes xterm's original implementation, but does +# nothing useful with it. + +# Reviewing after ncurses 6.2: +# + Apple's Terminal.app is unchanged, has no support for direct color: +# Catalina 10.15.5 Terminal.app 2.10 (433) +# Mohave 10.14.6 - Terminal.app 2.9.5 (421.2) +# + Cygwin's mintty 3.1.7 works with colon/semicolon +# + PuTTY 0.73 works with semicolon +# + Teraterm 4.105 works with semicolon +# + terminology 1.7.0 works with colon/semicolon. + +# Other variants are possible, e.g., by using more of xterm's indexed color +# palette, though the intrusion of indexed colors on the direct-color space +# would be more noticeable. + +xterm+direct16|xterm with direct-color indexing, + CO#16, + setab=\E[%?%p1%{8}%<%t4%p1%d%e%?%p1%{16}%<%t%p1%{92}%+%d%e48 + :2::%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%& + %d%;%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e%?%p1%{16}%<%t%p1%'R'%+%d%e38: + 2::%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%d + %;%;m, + setb@, setf@, use=xterm+direct, + +xterm-direct16|xterm with direct-colors and 16 indexed colors, + use=xterm+direct16, use=xterm, + +xterm+direct256|xterm with direct-color indexing, + CO#0x100, + setab=\E[%?%p1%{8}%<%t4%p1%d%e%p1%{16}%<%t10%p1%{8}%-%d%e%? + %p1%{256}%<%t48;5;%p1%d%e48:2::%p1%{65536}%/%d:%p1 + %{256}%/%{255}%&%d:%p1%{255}%&%d%;%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%d%e%p1%{16}%<%t9%p1%{8}%-%d%e%? + %p1%{256}%<%t38;5;%p1%d%e38:2::%p1%{65536}%/%d:%p1 + %{256}%/%{255}%&%d:%p1%{255}%&%d%;%;m, + setb@, setf@, use=xterm+direct, + +xterm-direct256|xterm with direct-colors and 256 indexed colors, + use=xterm+direct256, use=xterm, + +#### XTERM Features + +# This chunk is based on suggestions by Ailin Nemui and Nicholas Marriott, who +# asked for some of xterm's advanced features to be added to its terminfo +# entry. It defines extended capabilities not found in standard terminfo or +# termcap. These are useful in tmux, for instance, hence the name. +# +# One caveat in adding extended capabilities in ncurses is that if the names +# are longer than two characters, then they will not be visible through the +# termcap interface. +# +# Ms modifies the selection/clipboard. Its parameters are +# p1 = the storage unit (clipboard, selection or cut buffer) +# p2 = the base64-encoded clipboard content. +# +# Ss is used to set the cursor style as described by the DECSCUSR +# function to a block or underline. +# Se resets the cursor style to the terminal power-on default. +# +# Cs and Cr set and reset the cursor colour. +xterm+tmux|advanced xterm features used in tmux, + Cr=\E]112\007, Cs=\E]12;%p1%s\007, + Ms=\E]52;%p1%s;%p2%s\007, Se=\E[2 q, Ss=\E[%p1%d q, +xterm+tmux2|advanced xterm features used in tmux, + Cr=\E]112\E\\, Cs=\E]12;%p1%s\E\\, + Ms=\E]52;%p1%s;%p2%s\E\\, Se=\E[ q, Ss=\E[%p1%d q, + +# This is another variant, for XFree86 4.0 xterm (T.Dickey) +# This is an 8-bit version of xterm, which emulates DEC vt220 with ANSI color. +# To use it, your decTerminalID resource must be set to 200 or above. +# +# HTS \E H \210 +# RI \E M \215 +# SS3 \E O \217 +# CSI \E [ \233 +# +xterm-8bit|xterm terminal emulator 8-bit controls (X Window System), + OTbs, am, bce, km, mc5i, mir, msgr, npc, xenl, AX, + colors#8, cols#80, it#8, lines#24, pairs#64, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\2335m, bold=\2331m, cbt=\233Z, + civis=\233?25l, clear=\233H\2332J, + cnorm=\233?25l\233?25h, cr=\r, csr=\233%i%p1%d;%p2%dr, + cub=\233%p1%dD, cub1=^H, cud=\233%p1%dB, cud1=\n, + cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, + cuu=\233%p1%dA, cuu1=\233A, cvvis=\233?12;25h, + dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, + ech=\233%p1%dX, ed=\233J, el=\233K, el1=\2331K, + flash=\233?5h$<100/>\233?5l, home=\233H, + hpa=\233%i%p1%dG, ht=^I, hts=\210, ich=\233%p1%d@, + il=\233%p1%dL, il1=\233L, ind=\n, invis=\2338m, + is2=\E[62"p\E\sG\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r + \E8, + ka1=\217w, ka3=\217u, kb2=\217y, kbeg=\217E, kc1=\217q, + kc3=\217s, kcbt=\233Z, kcub1=\217D, kcud1=\217B, + kcuf1=\217C, kcuu1=\217A, kdch1=\2333~, kend=\2334~, + kent=\217M, kf1=\23311~, kf10=\23321~, kf11=\23323~, + kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, + kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, + kf2=\23312~, kf20=\23334~, kf3=\23313~, kf4=\23314~, + kf5=\23315~, kf6=\23317~, kf7=\23318~, kf8=\23319~, + kf9=\23320~, khome=\2331~, kich1=\2332~, kmous=\233M, + knp=\2336~, kpp=\2335~, mc0=\233i, mc4=\2334i, mc5=\2335i, + meml=\El, memu=\Em, op=\23339;49m, rc=\E8, rev=\2337m, + ri=\215, rmacs=\E(B, rmam=\233?7l, rmcup=\233?1049l, + rmir=\2334l, rmkx=\233?1l\E>, rmso=\23327m, rmul=\23324m, + rs1=\Ec, + rs2=\E[62"p\E\sG\233m\233?7h\E>\E7\233?1;3;4;6l\2334l\233r + \E8, + sc=\E7, setab=\2334%p1%dm, setaf=\2333%p1%dm, + setb=\2334%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1 + %{6}%=%t3%e%p1%d%;m, + setf=\2333%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1 + %{6}%=%t3%e%p1%d%;m, + sgr=\2330%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%? + %p7%t;8%;m%?%p9%t\E(0%e\E(B%;, + sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, + smcup=\233?1049h, smir=\2334h, smkx=\233?1h\E=, + smso=\2337m, smul=\2334m, tbc=\2333g, u6=\233[%i%d;%dR, + u7=\E[6n, u8=\233[?%[;0123456789]c, u9=\E[c, + vpa=\233%i%p1%dd, use=xterm+kbs, + +# Note: normally xterm supports modified function-keys as described in +# XTerm - "Other" modified keys +# https://invisible-island.net/xterm/modified-keys.html +# +# However, xterm-hp, xterm-sco and xterm-sun assume no modifiers. Here is +# a simple script which demonstrates these descriptions: +# #!/bin/sh +# export TERM=xterm-$1 +# xterm \ +# -kt $1 \ +# -fs 16 -fa mono \ +# -title $TERM \ +# -tn $TERM \ +# -xrm '*modifyCursorKeys:-1' \ +# -xrm '*modifyFunctionKeys:-1' \ +# -e tack +# e.g., "foo sun" if the script is named "foo" -TD +xterm-hp|xterm with hpterm function keys, + kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + kdch1=\EP, kend=\EF, khome=\Eh, kich1=\EQ, knp=\ES, kpp=\ET, + use=hp+pfk-cr, use=xterm+nofkeys, use=xterm+nopcfkeys, + +xterm-sco|xterm with SCO function keys, + 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, + 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, khome=\E[H, + kich1=\E[L, kmous=\E[>M, knp=\E[G, kpp=\E[I, + use=xterm+nofkeys, + +# The xterm-new description has all of the features, but is not completely +# compatible with vt220. If you are using a Sun or PC keyboard, set the +# sunKeyboard resource to true: +# + maps the editing keypad +# + interprets control-function-key as a second array of keys, so a +# 12-fkey keyboard can support vt220's 20-fkeys. +# + maps numeric keypad "+" to ",". +# + uses DEC-style control sequences for the application keypad. +# +xterm-vt220|xterm emulating vt220, + npc, + kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kend=\E[4~, kent=\EOM, 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~, kich1=\E[2~, + kmous=\E[M, knp=\E[6~, kpp=\E[5~, 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+sm+1006, use=xterm+tmux, use=xterm+keypad, + use=xterm-basic, + +xterm-vt52|xterm emulating DEC vt52, + cols#80, it#8, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, clear=\EH\EJ, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EY%p1%' '%+%c%p2%' '%+%c, cuu1=\EA, ed=\EJ, el=\EK, + home=\EH, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, nel=\r\n, ri=\EI, rmacs=\EG, smacs=\EF, + use=xterm+kbs, use=vt52+keypad, + +xterm-noapp|xterm with cursor keys in normal mode, + rmcup@, rmkx=\E>, smcup@, smkx=\E=, use=xterm+noapp, + use=xterm, + +xterm-24|vs100|xterms|xterm terminal emulator (X Window System), + lines#24, use=xterm-old, + +# This is xterm for ncurses. +xterm|xterm terminal emulator (X Window System), + use=xterm-new, + +# This entry assumes that xterm's handling of VT100 SI/SO is disabled by +# setting the vt100Graphics resource to false. +xterm-utf8|xterm with no VT100 line-drawing in UTF-8 mode, + U8#1, use=xterm, + +# These building-blocks allow access to the X titlebar and icon name as a +# status line. There are a few problems in using them in entries: +# +# a) tsl should have a parameter to denote the column on which to transfer to +# the status line. +# b) the "0" code for xterm updates both icon-title and window title. Some +# window managers such as twm (and possibly window managers descended from +# it such as tvtwm, ctwm, and vtwm) track windows by icon-name. Thus, you +# don't want to mess with icon-name when using those window managers. +# +# The extension "TS" is preferable, because it does not accept a parameter. +# However, if you are using a non-extended terminfo, "TS" is not visible. +xterm+sl|access X title line and icon name, + hs, + dsl=\E]0;\007, fsl=^G, tsl=\E]0;, TS=\E]0;, +xterm+sl-twm|access X title line (pacify twm-descended window managers), + hs, + dsl=\E]2;\007, fsl=^G, tsl=\E]2;, TS=\E]2;, + +# In contrast, this block can be used for a DEC vt320 and up. There are two +# controls used. +# +# DECSASD (select active status display) +# \E[0$} Main display +# \E[1$} Status line +# +# DECSSDT (select status line type) +# \E[0$~ No status line +# \E[1$~ Indicator status line +# \E[2$~ Host-writable status line +# +# The building block assumes that the terminal always shows something at the +# status line (either the indicator, or status line). That is because if no +# status line is used, then the terminal makes that line part of the user +# window, changing its size without notice. +# +# Because there is no "esl" (enable status line) capability, the "tsl" +# capability ensures that the status line is host-writable. A DEC terminal +# will clear the status line when changing from indicator to host-writable +# mode. +# +# Once on the status line, the row part of cursor addressing is ignored. Since +# tsl expects a parameter (to specify the column), the shortest addressing that +# can be used for this purpose is HPA, e.g., \E[5d to go to column 5. +# +dec+sl|DEC VTxx status line, + eslok, hs, + dsl=\E[1$~, fsl=\E[0$}, tsl=\E[2$~\E[1$}\E[%i%p1%d`, + +# +# The following xterm variants don't depend on your base version +# +# xterm with bold instead of underline +xterm-bold|xterm terminal emulator (X11R6 Window System) standout w/bold, + sgr=%?%p9%t\016%e\017%;B\E[0%?%p6%t;1%;%?%p2%t;1%;%?%p1%p3%| + %t;7%;m, + smso=\E[7m, smul=\E[1m, use=xterm-old, + +# See the note on ICH/ICH1 VERSUS RMIR/SMIR near the end of file +xterm-nic|xterm with ich/ich1 suppressed for non-curses programs, + ich@, ich1@, use=xterm, +# From: Mark Sheppard <kimble@mistral.co.uk>, 4 May 1996 +xterm1|xterm terminal emulator ignoring the alternate screen buffer, + rmcup@, smcup@, use=xterm, + +#### XTERM Mouse +# The xterm mouse protocol is used by other terminal emulators. +# In this section, two extended capabilities are used to illustrate the mouse +# protocol: XM and xm. The "XM" capability is recognized by ncurses to allow +# enabling/disabling other mouse protocols. 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. + +# Here is the "original" xterm mouse protocol. +# +# First seen in X10.3, February 1986, this likely dates from 1985 based on the +# copyright dates in the sources. A comment in charproc.c notes "MIT bogus +# sequence", referring to the fact that it does not correspond to a "real" +# terminal. The mouse responses for the X10 protocol are sent only for +# button-presses. +xterm+x10mouse|X10 xterm mouse protocol, + kmous=\E[M, XM=\E[?9%?%p1%{1}%=%th%el%;, + xm=\E[M%p3%' '%+%c%p2%'!'%+%c%p1%'!'%+%c, +xterm-x10mouse|X10 xterm mouse, + use=xterm+x10mouse, use=xterm, + +# Here is the conventional xterm mouse protocol, introduced with X11R1 in +# September 1987. +# +# The mouse responses for the X11 protocol covered button releases, as well as +# modifiers: +# shift 4 +# alt/meta 8 (technically the "mod1" mask, because X11 has no such keys) +# control 16 +# +# The modifiers are not reflected in this description because as used in xterm +# they are normally inaccessible because the translations resources assign +# shift and control to other features. However, they are important because +# they take up space in the first byte of the response. The other bits of this +# byte are used to encode the button number for both presses and releases. +# In the X11 protocol, any button-release is encoded with "3" (the lowest 2 +# bits in the byte). Later work on XFree86 xterm used the remaining 3 bits to +# provide additional features, e.g., wheel mouse. +# +# X11R1's xterm also supported an "emacs" mouse protocol, with final character +# "t" or "T", which was activated by double-clicking. The "t" response was +# used when the starting/ending positions were the same. +# +# X11R3 (February 1988) added the highlight/tracking mode. +# +# X11R4 (December 1989) added the control sequences document, listing the +# control sequences for the X10/X11 protocols without descriptions. It also +# mentioned the "emacs" ("T") response. Comments in button.c referred to the +# X11 protocol as "DEC vt200 compatible", although DEC offered no such terminal. +# +# X11R5 (November 1993) gave a description of the mouse protocol. +# +# X11R6 (January 1995) moved the control sequences document out of the xterm +# source-directory to xc/doc/specs/xterm, polishing the formatting but adding +# no new information. +xterm+x11mouse|X11 xterm mouse protocol, + kmous=\E[M, XM=\E[?1000%?%p1%{1}%=%th%el%;, + xm=\E[M%?%p4%t%p3%e%{3}%;%'\s'%+%c%p2%'!'%+%c%p1%'!'%+%c, +xterm-x11mouse|X11 mouse, + use=xterm+x11mouse, use=xterm, + +# Here is a suggested description of the xterm highlighting protocol. +# A more complicated example could be constructed to account for the "t" +# response. +xterm+x11hilite|X11 xterm mouse protocol with highlight, + kmous=\E[M, XM=\E[?1001%?%p1%{1}%=%th%el%;, + xm=\E[%p6%'!'%+%p5%'!'%+%c%p8%'!'%+%c%p7%'!'%+%c%p2%'!'%+%c + %p1%'!'%+%cT, +xterm-x11hilite|X11 mouse with highlight, + use=xterm+x11mouse, use=xterm, + +# The preceding were the sources from X Consortium. Other sources (or patches) +# were available. Starting in mid-1995, XFree86 developers collected some of +# those changes and began improvements, e.g., to support color. This was, by +# the way, around the same time that rxvt developers began implementing color, +# though dates (and attributions) are not well documented. I became interested +# in xterm in late 1995, and involved in early 1996. To complete the picture, +# CDE's dtterm was introduced around the same time, with no mouse protocol -TD + +# xterm patch #83 (1998/10/7), added Jason Bacon's changes to provide an +# "any-event" mouse mode. +xterm+sm+1002|xterm any-event mouse, + kmous=\E[M, XM=\E[?1002%?%p1%{1}%=%th%el%;, +xterm-1002|xterm any-event mouse, + use=xterm+sm+1002, use=xterm, + +xterm+sm+1003|testing xterm-mouse, + kmous=\E[M, XM=\E[?1003%?%p1%{1}%=%th%el%;, + +xterm-1003|testing xterm-mouse, + use=xterm+sm+1003, use=xterm, + +# xterm patch #116 (1999/9/25) added Stephen P Wall's changes to support DEC +# locator mode. + +# xterm patch #120 (1999/10/28) added my change to support wheel mouse, by +# dropping support for the X11 mouse protocol's shift-modifier and using +# available bits in the first byte of the response to encode buttons 4 and 5. +# xterm patch #126 (2000/2/8) amended that change to avoid conflicting with +# older configurations which might have used the obsolete modifiers. + +# xterm patch #262 (2010/8/30) added Ryan Johnson's changes to provide a mode +# where the coordinates in the mouse response would be encoded in UTF-8, +# thereby extending the range of coordinates past 222=(255-33). This is the +# "1005" mouse mode. +xterm+sm+1005|xterm UTF-8 mouse, + kmous=\E[M, XM=\E[?1005;1000%?%p1%{1}%=%th%el%;, + xm=\E[M%?%p4%t3%e%p3%'\s'%+%c%;%p2%'!'%+%u%p1%'!'%+%u, +xterm-1005|xterm UTF-8 mouse, + use=xterm+sm+1005, use=xterm, + +# xterm patch #277 (2012/1/7) provides a mode where the mouse response uses +# SGR-style parameters. +# +# Someone stated that the 1005 mouse mode would not be handled properly in luit. +# (By the way, this is a problem with the X11 protocol). A more plausible +# criticism is that the responses provided by the 1005 mode are not distinct +# from the non-1005 responses. +# +# As an alternative (and fixing the longstanding limitation of X11 mouse +# protocol regarding button-releases), I provided the 1006 mode, referring +# to it as "SGR 1006" since the replies resemble the SGR control string: +xterm+sm+1006|xterm SGR-mouse, + kmous=\E[<, XM=\E[?1006;1000%?%p1%{1}%=%th%el%;, + xm=\E[<%i%p3%d;%p1%d;%p2%d;%?%p4%tM%em%;, +xterm-1006|xterm SGR-mouse, + use=xterm+sm+1006, use=xterm, + +#### KTERM +# (kterm: this had extension capabilities ":KJ:TY=ascii:" -- esr) +# (kterm should not invoke DEC Graphics as the alternate character set +# -- Kenji Rikitake) +# (proper setting of enacs, smacs, rmacs makes kterm to use DEC Graphics +# -- MATSUMOTO Shoji) +# kterm implements acsc via built-in table of X Drawable's +kterm|kterm kanji terminal emulator (X window system), + eslok, hs, XT, + ncv@, + acsc=``aajjkkllmmnnooppqqrrssttuuvvwwxx~~, + csr=\E[%i%p1%d;%p2%dr, dsl=\E[?H, enacs=, fsl=\E[?F, + kmous=\E[M, rc=\E8, rmacs=\E(B, rmam=\E[?7l, sc=\E7, + 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, + tsl=\E[?E\E[?%i%p1%dT, use=xterm-r6, use=ecma+color, +kterm-color|kterm-co|kterm with ANSI colors, + ncv@, use=kterm, use=ecma+color, + +#### Other XTERM + +# These (xtermc and xtermm) are distributed with Solaris. They refer to a +# variant of xterm which is apparently no longer supported, but are interesting +# because they illustrate SVr4 curses mouse controls - T.Dickey +xtermm|xterm terminal emulator (monochrome), + OTbs, am, km, mir, msgr, xenl, + btns#3, cols#80, it#8, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink@, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, + 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, getm=\E[%p1%dY, + home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcub1=\EOD, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kend=\E[Y, kf0=\EOy, + kf10=\EOY, kf11=\EOZ, kf12=\EOA, kf5=\EOT, kf6=\EOU, + kf7=\EOV, kf8=\EOW, kf9=\EOX, khome=\E[H, kmous=\E[^_, + knp=\E[U, kpp=\E[V, rc=\E8, reqmp=\E[492Z, rev=\E[7m, ri=\EM, + rmacs=^O, rmcup=\E@0\E[?4r, rmso=\E[m, + rs1=\E>\E[1;3;4;5;6l\E[?7h\E[m\E[r\E[2J\E[H, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, + 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, smcup=\E@0\E[?4s\E[?4h\E@1, + smso=\E[7m, tbc=\E[3g, use=vt100+fnkeys, + +xtermc|xterm terminal emulator (color), + colors#8, ncv#7, pairs#64, + op=\E[100m, 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} + %=%t3%e%p1%d%;m, + use=xtermm, + +# From: David J. MacKenzie <djm@va.pubnix.com> 20 Apr 1995 +# Here's a termcap entry I've been using for xterm_color, which comes +# with BSD/OS 2.0, and the X11R6 contrib tape too I think. Besides the +# color stuff, I also have a status line defined as the window manager +# title bar. [I have translated it to terminfo -- ESR] +xterm-pcolor|xterm with color used for highlights and status line, + wsl#40, + bold=\E[1;43m, rev=\E[7;34m, + sgr=%?%p9%t\016%e\017%;\E[0%?%p6%t;1;43%;%?%p2%t;4;42%;%?%p1 + %t;7;31%;%?%p3%t;7;34%;m, + smso=\E[7;31m, smul=\E[4;42m, use=xterm+sl, use=xterm-r6, + +# This describes the capabilities of color_xterm, an xterm variant from +# before ECMA-64 color support was folded into the main-line xterm release. +# This entry is straight from color_xterm's maintainer. +# From: Jacob Mandelson <jlm@ugcs.caltech.edu>, 09 Nov 1996 +# The README's with the distribution also say that it supports SGR 21, 24, 25 +# and 27, but they are not present in the terminfo or termcap. +color_xterm|cx|cx100|color_xterm color terminal emulator for X, + OTbs, am, km, mir, msgr, xenl, XT, + cols#80, it#8, lines#65, ncv@, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, el1=\E[1K, enacs=\E(B\E)0, home=\E[H, ht=^I, + ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n, + is1=\E[r\E[m\E[?7h\E[?4;6l\E[4l, kbs=^H, kcub1=\EOD, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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~, khome=\E[7~, kich1=\E[2~, + kmous=\E[M, knp=\E[6~, kpp=\E[5~, rc=\E8, rev=\E[7m, ri=\EM, + rmacs=^O, rmam=\E[?7l, rmcup=\E>\E[?41;1r, rmir=\E[4l, + rmso=\E[27m, rmul=\E[24m, + rs1=\E(B\017\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l\E<, + sc=\E7, + 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=ecma+color, use=vt220+keypad, + +# The 'nxterm' distributed with Redhat Linux 5.2 is a slight rehack of +# xterm-sb_right-ansi-3d, which implements ANSI colors, but does not support +# SGR 39 or 49. SGR 0 does reset colors (along with everything else). This +# description is "compatible" with color_xterm, rxvt and XFree86 xterm, except +# that each of those implements the home, end, delete keys differently. +# +# Redhat Linux 6.x distributes XFree86 xterm as "nxterm", which uses bce +# colors; note that this is not compatible with the 5.2 version. +# csw (2002-05-15): make xterm-color primary instead of nxterm, to +# match XFree86's xterm.terminfo usage and prevent circular links +xterm-color|nxterm|generic color xterm, + ncv@, + op=\E[m, use=xterm-r6, use=klone+color, + +# This entry describes an xterm with Sun-style function keys enabled +# via the X resource setting "xterm*sunFunctionKeys:true" +# To understand <kf11>/<kf12> note that L1,L2 and F11,F12 are the same. +# The <kf13>...<kf20> keys are L3-L10. We don't set <kf16=\E[197z> +# because we want it to be seen as <kcpy>. +# The <kf31>...<kf45> keys are R1-R15. We treat some of these in accordance +# with their Sun keyboard labels instead. +# From: Simon J. Gerraty <sjg@zen.void.oz.au> 10 Jan 1996 +xterm-sun|xterm with sunFunctionKeys true, + kb2=\E[218z, kcpy=\E[197z, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3z, kend=\E[220z, + kent=\EOM, kf1=\E[224z, kf10=\E[233z, kf11=\E[192z, + kf12=\E[193z, kf13=\E[194z, kf14=\E[195z, kf15=\E[196z, + kf17=\E[198z, kf18=\E[199z, kf19=\E[200z, kf2=\E[225z, + kf20=\E[201z, kf3=\E[226z, kf31=\E[208z, kf32=\E[209z, + kf33=\E[210z, kf34=\E[211z, kf35=\E[212z, kf36=\E[213z, + kf38=\E[215z, kf4=\E[227z, kf40=\E[217z, kf42=\E[219z, + kf44=\E[221z, kf45=\E[222z, kf46=\E[234z, kf47=\E[235z, + kf5=\E[228z, kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, + kf9=\E[232z, kfnd=\E[200z, khlp=\E[196z, khome=\E[214z, + kich1=\E[2z, knp=\E[222z, kpp=\E[216z, kund=\E[195z, + use=xterm+nofkeys, use=xterm+nopcfkeys, +xterms-sun|small (80x24) xterm with sunFunctionKeys true, + cols#80, lines#24, use=xterm-sun, + +#### GNOME (VTE) +# 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=xterm-color, + +# GNOME Terminal 1.4.0.4 (Redhat 7.2) +# +# This implements a subset of vt102 with a random selection of features from +# other terminals such as color and function-keys. +# +# shift-f1 to shift-f10 are f11 to f20 +# +# NumLock changes the application keypad to approximate vt100 keypad, except +# that there is no escape sequence matching comma (,). +# +# Other defects observed: +# vt100 LNM mode is not implemented. +# vt100 80/132 column mode is not implemented. +# vt100 DECALN is not implemented. +# vt100 DECSCNM mode is not implemented, so flash does not work. +# vt100 TBC (tab reset) is not implemented. +# xterm alternate screen controls do not restore cursor position properly +# it hangs in tack after running function-keys test. +gnome-rh72|GNOME Terminal, + bce, km@, + kdch1=\E[3~, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, + 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=xterm-color, + +# GNOME Terminal 2.0.1 (Redhat 8.0) +# +# Documentation now claims it implements vt220 (which is demonstrably false). +# However, it does implement ECH, which is a vt220 feature. And there are +# workable vt100 LNM, DECALN, DECSNM modes, making it possible to display +# more of its bugs using vttest. +# +# However, note that bce and msgr are broken in this release. Tabs (tbc and +# hts) are broken as well. Sometimes flash (as in xterm-new) works. +# +# kf1 and kf10 are not tested since they're assigned (hardcoded?) to menu +# operations. Shift-tab generates a distinct sequence so it can be argued +# that it implements kcbt. +gnome-rh80|GNOME Terminal, + bce@, msgr@, + ech=\E[%p1%dX, flash=\E[?5h$<100/>\E[?5l, kbs=^?, + kcbt=\E^I, op=\E[39;49m, use=gnome-rh72, + +# GNOME Terminal 2.2.1 (Redhat 9.0) +# +# bce and msgr are repaired. +gnome-rh90|GNOME Terminal, + bce, msgr, XT, + hpa=\E[%i%p1%dG, kDC=\E[3;2~, kLFT=\EO2D, kRIT=\EO2C, + kb2=\E[E, kcbt=\E[Z, kend=\EOF, khome=\EOH, tbc=\E[3g, + vpa=\E[%i%p1%dd, 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. +gnome-fc5|GNOME Terminal, + rs1=\Ec, + rs2=\E7\E[r\E8\E[m\E[?7h\E[!p\E[?1;3;4;6l\E[4l\E>\E[?1000l + \E[?25h, + use=ansi+enq, use=xterm+pcc0, use=gnome-rh90, + +# GNOME Terminal 2.18.1 (2007 snapshot) +# +# For any "recent" version of gnome-terminal, it is futile to attempt to +# support modifiers on cursor- and keypad keys because the program usually +# is hardcoded to set $TERM to "xterm", and on startup, it builds a subset +# of the keys (which more/less correspond to the termcap values), and will +# interpret those according to the $TERM value, but others not in the +# terminfo according to some constantly changing set of hacker guidelines -TD +vte-2007|VTE in GNOME Terminal snapshot 2.18.1, + use=xterm+pcc2, use=vt220+cvis, use=gnome-fc5, +gnome-2007|GNOME Terminal snapshot 2.18.1, + use=vte-2007, + +# GNOME Terminal 2.22.3 (2008 snapshot) +# +# In vttest, it claims to be a vt220 with national replacement character-sets, +# but aside from the identifier string, implements only a small fraction of +# vt220's behavior, which will make it less usable on a VMS system (unclear +# what the intent of the developer is, since the NRC feature exposed in vttest +# by this change does not work). +vte-2008|VTE in GNOME Terminal snapshot 2.22.3, + use=vte+pcfkeys, use=vte-2007, +gnome-2008|GNOME Terminal snapshot 2.22.3, + use=vte-2008, + +# GNOME Terminal 3.6.0 (2012) +# VTE 0.34.1 was marked in git 2012-10-15 (three days after patch was applied +# in ncurses). It inherited from gnome-fc5, which broke the modified forms +# of f1-f4 -TD +# +# 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, + 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+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. +gnome-2012|GNOME Terminal 3.6.0, + use=vte-2012, + +# Before 2008, GNOME terminal could automatically use the contents of the +# "xterm" terminfo to supply key information which is not built into the +# program. With 2.22.3, this list was built into the program (which addressed +# the inadvertent use of random terminfo data, though using a set of values +# which did not correspond to any that xterm produced - still not solving the +# problem that GNOME terminal hardcoded the $TERM variable as "xterm"). +# +# terminfo modifier code keys +# kf13-kf24 shift 2 F1 to F12 +# kf25-kf36 control 5 F1 to F12 +# kf37-kf48 shift/control 6 F1 to F12 +# kf49-kf60 alt 3 F1 to F12 +# kf61-kf63 shift-alt 4 F1 to F3 +# +# The parameters with \EO (SS3) are technically an error, since SS3 should have +# no parameters. This appears to be rote copying based on xterm+pcc0. +vte+pcfkeys|VTE's variation on xterm+pcfkeys, + kf1=\EOP, kf13=\EO1;2P, kf14=\EO1;2Q, kf15=\EO1;2R, + kf16=\EO1;2S, kf2=\EOQ, kf25=\EO1;5P, kf26=\EO1;5Q, + kf27=\EO1;5R, kf28=\EO1;5S, kf3=\EOR, kf37=\EO1;6P, + kf38=\EO1;6Q, kf39=\EO1;6R, kf4=\EOS, kf40=\EO1;6S, + kf49=\EO1;3P, kf50=\EO1;3Q, kf51=\EO1;3R, kf52=\EO1;3S, + kf61=\EO1;4P, kf62=\EO1;4Q, kf63=\EO1;4R, + use=xterm+pcfkeys, +gnome+pcfkeys|VTE's variation on xterm+pcfkeys, + use=vte+pcfkeys, + +# deprecated - use "vte" for newer versions +gnome|GNOME Terminal, + use=vte-2012, +gnome-256color|GNOME Terminal with xterm 256-colors, + use=xterm+256color, use=gnome, + +# relevant changes were made in January 2014, and later. +# +# Originally VTE was promoted as a library able to emulate any terminal by +# reading its terminal description. In practice, that never got beyond the +# ability to read definitions of special keys (function-, editing-, cursor). +# +# Before 2014, VTE had a termcap reader (originally pointing to a private copy +# of a termcap file derived from xterm). That was incomplete because it did +# not have any of the modifier-key information used for xterm's function-, +# editing-, and cursor-keys. Having its own reader was unnecessary since +# ncurses provides that information; used since xterm patch #225 in 2007. +# +# During April/May 2014, a few bug reports (e.g., gnome #169295, gnome #728900, +# gnome #730137) dealt with attempts to recast that termcap reader as library +# calls, then attempting to adapt a chunk of code from ncurses (src/vteti.c), +# abandoning that and finally constructing a table to match xterm's default +# behavior, e.g., for "xterm+pcfkeys". +vte-2014|VTE 0.35.1, + ncv@, + cbt=\E[Z, el1=\E[1K, flash=\E[?5h$<100/>\E[?5l, + ich=\E[%p1%d@, kent=\EOM, use=ecma+index, + use=xterm+sm+1006, use=xterm+pcfkeys, use=vte-2012, + +# As of January 2018, this was the most recent release, +# e.g., with gnome-terminal 3.26.2 +vte-2017|VTE 0.50.2, + use=ecma+strikeout, use=vte-2014, + +# VTE 0.51.2 and gnome-terminal 3.28.2 copied a feature from KovId's TTY +# late in 2017 for changing the appearance of underlines, which was +# incorporated into Debian and Fedora testing-packages in February and March +# 2018, respectively. Overline (Smol/Rmol) has been supported since December +# 2017. +vte-2018|VTE 0.51.2, + Rmol=\E[55m, Smol=\E[53m, Smulx=\E[4:%p1%dm, + use=vte-2017, + +vte|VTE aka GNOME Terminal, + use=vte-2018, + +vte-256color|VTE with xterm 256-colors, + use=xterm+256color, use=vte, + +# XFCE Terminal 0.2.5.4beta2 +# +# This is based on some of the same source code, e.g., the VTE library, as +# gnome-terminal, but has fewer features, fails more screens in vttest. +# Since most of the terminfo-related behavior is due to the VTE library, +# the terminfo is the same as gnome-terminal. +xfce|Xfce Terminal, + use=vte-2008, + +# HTERM +# +# https://hterm.org +# +# A terminal written in JavaScript, which can provide xterm-like terminal +# emulation in a browser such as Google Chrome, or in Chome OS. +# +# https://chromium.googlesource.com/apps/libapps/+/master/nassh/doc/FAQ.md +# +# Tested with Secure Shell App version 0.39 in Chrome 89.0.4389.90, found that +# the numeric keypad escapes are missing -TD +hterm|Chromium hterm, + npc, + U8#1, + kcbt=\E[Z, kent=\EOM, nel=\EE, use=xterm+osc104, + use=ecma+index, use=ansi+rep, use=ecma+strikeout, + use=vt420+lrmm, use=xterm+sm+1006, use=xterm+tmux, + use=ecma+italics, use=xterm+pcfkeys, use=xterm-basic, +hterm-256color|Chromium hterm with xterm 256-colors, + use=xterm+256color2, use=hterm, + +# TERMITE +# +# https://github.com/thestinger/termite +# +# A review requires install of Arch Linux since Fedora and Debian don't have +# this program. It uses "vte3-ng" (a conflicting package), which is here: +# https://github.com/thestinger/vte-ng +# which (based on the default branch setting) seems to be a fork of vte +# 0.48.2, and is noted as such in Arch: +# https://aur.archlinux.org/packages/vte3-ng/ +# It won't be merged: +# https://bugzilla.gnome.org/show_bug.cgi?id=679658#c10 +# https://bugzilla.gnome.org/show_bug.cgi?id=78291 +# but perhaps made obsolete. +# +# The entry as given was mislabeled "xterm-termite" (it is not xterm), and +# was mostly cut/paste from xterm-256color, but since VTE does not actually +# implement several of the features in that terminal description, this one is +# trimmed to eliminate those. Also, since it is a slightly older version of +# VTE, it lacks a few more features (again, trimmed). +termite|VTE-based terminal, + am, ccc, km, mir, msgr, npc, xenl, + cols#80, it#8, lines#24, ncv@, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, + bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, 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, + ht=^I, hts=\EH, ind=\n, invis=\E[8m, + is2=\E[!p\E[?3;4l\E[4l\E>, kb2=\EOE, kbs=^?, kcbt=\E[Z, + kent=\EOM, kmous=\E[M, rc=\E8, 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>, sc=\E7, + 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, tbc=\E[3g, vpa=\E[%i%p1%dd, + use=xterm+alt1049, use=ecma+index, use=ansi+idc, + use=ansi+idl, use=ansi+enq, use=ecma+italics, + use=xterm+256color, use=ecma+color, use=vt220+cvis, + use=xterm+pcfkeys, use=xterm+sl-twm, + +#### Other GNOME +# Multi-Gnome-Terminal 1.6.2 +# +# This does not use VTE, and does have different behavior (compare xfce and +# gnome). +mgt|Multi GNOME Terminal, + use=ecma+index, use=xterm-xf86-v333, + +#### KDE +# This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce +# or not is debatable). +kvt|KDE terminal, + bce, km@, + kdch1=^?, kend=\E[F, khome=\E[H, use=xterm-color, + +# Konsole 1.0.1 (2001/11/25) +# (formerly known as kvt) +# +# This program hardcodes $TERM to 'xterm', which is not accurate. However, to +# simplify this entry (and point out why konsole isn't xterm), we base this on +# xterm-r6. The default keyboard appears to be 'linux'. +# +# Notes: +# a) konsole implements several features from XFree86 xterm, though none of +# that is documented - except of course in its source code - apparently +# because its implementors are unaccustomed to reading documentation - as +# evidenced by the sparse and poorly edited documentation distributed with +# konsole. Some features such as the 1049 private mode are recognized but +# incorrectly implemented as a duplicate of the 47 private mode. +# b) even with the "vt100 (historical)" keyboard setting, the numeric keypad +# sends PC-style escapes rather than vt100. +# c) fails vttest menu 3 (Test of character sets) because it does not properly +# parse some control sequences. Also fails vttest Primary Device Attributes +# by sending a bogus code (in the source it says it's supposed to be a +# vt220, which is doubly incorrect because it does not implement vt220 +# control sequences except for a few special cases). Treat it as a +# mildly-broken vt102. +# +# Update for konsole 1.3.2: +# The 1049 private mode works (but see the other xterm screens in vttest). +# Primary Device Attributes now returns the code for a vt100 with advanced +# video option. Perhaps that's intended to be a "mildly-broken vt102". +# +# Updated for konsole 1.6.4: +# add konsole-solaris +# +# Updated for konsole 1.6.6: +# add control-key modifiers for function-keys, etc. +# +# Updated for konsole 2.3 (October 2008): +# vttest menu 1 shows that both konsole and gnome terminal do wrapping +# different from xterm (and vt100's). They have the same behavior in +# this detail, but it is unclear which copies the other. +# +# Deferred update for konsole 2.10 (late 2012): +# add SGR 1006 mouse +# +# Updated for konsole 2.12.4 (late 2013): +# add sitm/ritm +# +# Updated for konsole 16.07 (mid 2016): +# add dim, invis, strikeout +# (also overline, which is too rarely used to provide as an extension) +# +# Updated for konsole 17.12.0 (late 2017): +# +# Re-enable "bel", since it is latent in the source-code even though KDE config +# often hides the feature (2020/5/30) +konsole-base|KDE console window, + bce, km@, npc, XT, + ncv@, + blink=\E[5m, dim=\E[2m, ech=\E[%p1%dX, + flash=\E[?5h$<100/>\E[?5l, hpa=\E[%i%p1%dG, + invis=\E[8m, kbs=^?, kdch1=\E[3~, 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, + 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, + use=ecma+index, use=xterm+sm+1006, use=ecma+strikeout, + use=ecma+italics, use=ecma+color, use=xterm-r6, + use=vt220+cvis, + +# 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. +# +# The main difference between the two keytabs was that the developer equated +# "vt100" with xterm, and noticed that the Linux console's F1-F5 differed from +# that. For the same reason, the home/end keys differ. A VT100 had none of +# that. The otherwise identical keytabs have definitions to model the VT52 +# cursor-keys and the VT100 cursor-keys with application versus normal modes. +# +# An "x11r5" keytab (displayed in the menu as "X11 R5") was added in January +# 2001, and shortly after retitled to "XFree 3.x.x". Both it and "vt100" were +# dropped from the install in June 2008. +# +# The default keytab added in January 2000 was originally titled "X11 R6", +# and likewise retitled to "XFree 4". +# +# A "solaris" keytab was added in Febrary 2005, copying the "vt100" keytab +# and changing backspace to ^H, removing that keytab's attempt to model the +# VT100 keypad and VT52 (KDE #20459). +# +# The developers made changes to the default and linux keytabs. Comparing +# the original and 2018 versions using diffstat: +# default: 119 added, 147 deleted, 28 unchanged +# linux: 47 added, 28 deleted, 104 unchanged +# +# Most of the change for the default keytab was to make konsole act more like +# xterm. That was a feature named AnyMod which came in May 2005 for KDE #92749 +# (see also Redhat #122815). Later, in June 2007 the compiled-in keytab was +# made an external file (like "linux" and "solaris"), and some further +# refinement made. But there are still flaws in the scheme. +# +# Essentially AnyMod maps the xterm "PC-style" modifier codes such as 2 for +# Shift into a placeholder in the table entries. That works well if all of the +# modified keys are modified in the same way. But xterm does not do that. The +# first 4 function keys are used in xterm to support the VT100 PF1-PF4 keypad +# keys. For example, F2 sends \EOQ in both terminals because of this feature. +# But a shifted F2 (F14=F2+12) differs like this, in infocmp's listing: +# kf14: '\E[1;2Q', '\EO2Q'. +# +# In effect, a quarter of konsole's function-keys are different from xterm. +# +# It is not a simple blunder: +# a) xterm patch #121 (November 1999), providing the first version of the +# PC-style modifiers would send \EO2Q +# b) xterm patch #216 (July 2006) amended this and other details, provided +# better documentation for the modifiers and made the behavior configurable, +# e.g., using the modifyFunctionKeys resource. The reason why it sends +# \E[1;2Q is that \E[O2Q is not a legal ECMA-48 control sequence. The +# changelog points this out as "avoid sending SS3 with parameters". +# c) That came after AnyMod was introduced, but still early enough that one +# might expect konsole's developers to followup. Twelve years later that +# has yet to happen. +# +# As of 2018, konsole still provides 3 keyboard profiles ("XFree 4", "linux", +# "solaris"). +konsole-linux|KDE console window with Linux keyboard, + kf1=\E[[A, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf13@, + kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E[[B, kf20@, + kf3=\E[[C, kf4=\E[[D, kf5=\E[[E, kf6=\E[17~, kf7=\E[18~, + kf8=\E[19~, kf9=\E[20~, use=konsole-base, +konsole-solaris|KDE console window with Solaris keyboard, + kbs=^H, kend=\E[4~, khome=\E[1~, use=konsole-vt100, + +# Obsolete: x11r5.keymap +# KDE's "XFree86 3.x.x" keyboard was obviously based on reading the xterm +# terminfo at the time rather than testing the code. +konsole-xf3x|KDE console window with keyboard for XFree86 3.x xterm, + kend=\E[4~, khome=\E[1~, use=konsole-vt100, + +# The value for kbs (see konsole-vt100) reflects local customization rather +# than the settings used for XFree86 xterm. +konsole-xf4x|KDE console window with keyboard for XFree86 4.x xterm, + kend=\EOF, khome=\EOH, use=konsole+pcfkeys, + use=konsole-vt100, + +konsole+pcfkeys|konsole subset of xterm+pcfkeys, + kcbt=\E[Z, use=xterm+pcc2, use=xterm+pcf0, + use=xterm+pce2, + +# Obsolete: vt100.keymap +# KDE's "vt100" keyboard has no relationship to any terminal that DEC made, but +# 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, + kbs=^?, kdch1=\E[3~, 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, + +# 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 +# that it was never installed. +konsole-vt420pc|KDE console window with vt420 pc keyboard, + kbs=^H, kdch1=^?, use=konsole-vt100, + +# make a default entry for konsole +konsole|KDE console window, + use=konsole-xf4x, + +# These were written for ncurses: +konsole-16color|klone of xterm-16color, + ncv#32, use=ibm+16color, use=konsole, +konsole-256color|KDE console window with xterm 256-colors, + use=xterm+256setaf, use=konsole, + +#### MLTERM +# https://github.com/arakiken/mlterm + +mlterm|multi lingual terminal emulator, + use=mlterm3, + +# Tested mlterm 3.9.0 (2020/09/19): +# ncurses: +# - has blinking text +# - has italics +# - has invisible-text +# tack: +# - has crossed-out text +# - does not support palette reset with OSC 104 +# - testing the function-keys is difficult because the terminal is +# preconfigured to set many of the modified keys to special functions, e.g., +# - shift-F1 and shift-F2 are bound to a split-screen feature +# - control-F1 and control-F2 is bound to a new-terminal feature +# vttest: +# - primary response says it is a VT340 (ReGIS and Sixel). +# - has partial support for double-size characters. +# - character-set tests do not work. +# - DEC locator works. +# - 1006-mouse works. +# - focus-events do not work reliably. +# - numeric keypad escapes do not work. +# - back-color erase works +# other: +# - title-stack works. +# - doesn't respond to 8-bit controls. +# - 256-color palette initializing works. +# - DECSTR soft-reset is documented. +# +# Tested mlterm 3.3.8 (2018/01/21): +# found xterm+sm+1006 did not work with version 3.3.8 +# soft-reset DECSTR is in sources since 2017/09/19. +# +# Tested mlterm 3.2.2 (2014/03/22): +# mlterm 3.x made further changes, but they were not reflected in the included +# mlterm.ti (which was dropped in 2015). This entry has been based on testing +# with ncurses, tack and vttest -TD +mlterm3|multi lingual terminal emulator, + bce, AX, + blink=\E[5m, flash=\E[?5h$<100/>\E[?5l, invis=\E[8m, + 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%;, + 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, + use=xterm+alt+title, use=xterm+sm+1006, + use=vt100+pfkeys, use=mlterm2, + +# This is mlterm 2.9.3's mlterm.ti, with some additions/corrections -TD +# +# It is nominally a vt102 emulator, with features borrowed from rxvt and +# xterm. +# +# The function keys are numbered based on shift/control/alt modifiers, except +# that the control-modifier itself is used to spawn a new copy of mlterm (the +# "-P" option). So control/F1 to control/F12 may not be usable, depending on +# how it is configured. +# +# kf1 to kf12 \E[11~ to \E[24~ +# shift kf1 to kf12 \E[11;2~ to \E[24;2~ +# alt kf1 to kf12 \E[11;3~ to \E[24;3~ +# shift/alt kf1 to kf12 \E[11;4~ to \E[24;4~ +# control kf1 to kf12 \E[11;5~ to \E[24;5~ (maybe) +# control/shift kf1 to kf12 \E[11;6~ to \E[24;6~ +# control/alt kf1 to kf12 \E[11;7~ to \E[24;7~ +# control/shift/alt kf1 to kf12 \E[11;8~ to \E[24;8~ +# +mlterm2|multi lingual terminal emulator, + am, eslok, km, mc5i, mir, msgr, npc, xenl, XT, + colors#8, cols#80, it#8, lines#24, pairs#64, + acsc=00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=, + home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, + is2=\E7\E[r\E[m\E[?7h\E[?1;3;4;6l\E[4l\E8\E>, kbs=^?, + kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kend=\EOF, kent=\EOM, khome=\EOH, kind=\EO1;2B, kmous=\E[M, + kri=\EO1;2A, mc0=\E[i, nel=\EE, op=\E[39;49m, rc=\E8, + 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, + rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;3;4;6l\E[4l\E>\E[?1000l, + sc=\E7, 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, tbc=\E[3g, + u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\E[c, + vpa=\E[%i%p1%dd, 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 +# (when available), it could use the extended names introduced for xterm. +mlterm+pcfkeys|fragment for PC-style fkeys, + kLFT=\EO1;2D, kNXT=\E[6;2~, kPRV=\E[5;2~, kRIT=\EO1;2C, + kDN=\EO1;2B, kDN3=\EO1;3B, kDN4=\EO1;4B, kDN5=\EO1;5B, + kDN6=\EO1;6B, kDN7=\EO1;7B, kIC5=\E[2;5~, kIC6=\E[2;6~, + kLFT3=\EO1;3D, kLFT4=\EO1;4D, kLFT5=\EO1;5D, + kLFT6=\EO1;6D, kLFT7=\EO1;7D, kNXT5=\E[6;5~, + kNXT6=\E[6;6~, kPRV5=\E[5;5~, kPRV6=\E[5;6~, + kRIT3=\EO1;3C, kRIT4=\EO1;4C, kRIT5=\EO1;5C, + kRIT6=\EO1;6C, kRIT7=\EO1;7C, kUP=\EO1;2A, kUP3=\EO1;3A, + kUP4=\EO1;4A, kUP5=\EO1;5A, kUP6=\EO1;6A, kUP7=\EO1;7A, + +mlterm-256color|mlterm 3.0 with xterm 256-colors, + use=xterm+256color, use=mlterm, + +#### RXVT +# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997 +# Updated: Oezguer Kesim <kesim@math.fu-berlin.de> 02 Nov 1997 +# Notes: +# rxvt 2.21b uses +# smacs=\E(B\E)U^N, rmacs=\E(B\E)0^O, +# but some applications don't work with that. +# It also has an AIX extension +# box2=lqkxjmwuvtn, +# and +# ech=\E[%p1%dX, +# but the latter does not work correctly. +# +# The distributed terminfo says it implements hpa and vpa, but they are not +# implemented correctly, using relative rather than absolute positioning. +# +# rxvt is normally configured to look for "xterm" or "xterm-color" as $TERM. +# Since rxvt is not really compatible with xterm, it should be configured as +# "rxvt" or "rxvt-color". +# +# removed dch/dch1 because they are inconsistent with bce/ech -TD +# remove km as per tack test -TD +rxvt-basic|rxvt terminal base (X Window System), + OTbs, am, bce, eo, mir, msgr, xenl, xon, XT, + cols#80, it#8, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H, + ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, + 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=^H, + kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, + rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, 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, + s0ds=\E(B, s1ds=\E(0, sc=\E7, + 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, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, + smkx=\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, use=vt100+enq, + use=rxvt+pcfkeys, use=vt220+cvis, use=vt220+keypad, +# Key Codes from rxvt reference: +# +# Note: Shift + F1-F10 generates F11-F20 +# +# For the keypad, use Shift to temporarily override Application-Keypad +# setting use Num_Lock to toggle Application-Keypad setting if Num_Lock +# is off, escape sequences toggle Application-Keypad setting. +# Also note that values of Home, End, Delete may have been compiled +# differently on your system. +# +# Normal Shift Control Ctrl+Shift +# Tab ^I ESC [ Z ^I ESC [ Z +# BackSpace ^H ^? ^? ^? +# Find ESC [ 1 ~ ESC [ 1 $ ESC [ 1 ^ ESC [ 1 @ +# Insert ESC [ 2 ~ paste ESC [ 2 ^ ESC [ 2 @ +# Execute ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ +# Select ESC [ 4 ~ ESC [ 4 $ ESC [ 4 ^ ESC [ 4 @ +# Prior ESC [ 5 ~ scroll-up ESC [ 5 ^ ESC [ 5 @ +# Next ESC [ 6 ~ scroll-down ESC [ 6 ^ ESC [ 6 @ +# Home ESC [ 7 ~ ESC [ 7 $ ESC [ 7 ^ ESC [ 7 @ +# End ESC [ 8 ~ ESC [ 8 $ ESC [ 8 ^ ESC [ 8 @ +# Delete ESC [ 3 ~ ESC [ 3 $ ESC [ 3 ^ ESC [ 3 @ +# F1 ESC [ 11 ~ ESC [ 23 ~ ESC [ 11 ^ ESC [ 23 ^ +# F2 ESC [ 12 ~ ESC [ 24 ~ ESC [ 12 ^ ESC [ 24 ^ +# F3 ESC [ 13 ~ ESC [ 25 ~ ESC [ 13 ^ ESC [ 25 ^ +# F4 ESC [ 14 ~ ESC [ 26 ~ ESC [ 14 ^ ESC [ 26 ^ +# F5 ESC [ 15 ~ ESC [ 28 ~ ESC [ 15 ^ ESC [ 28 ^ +# F6 ESC [ 17 ~ ESC [ 29 ~ ESC [ 17 ^ ESC [ 29 ^ +# F7 ESC [ 18 ~ ESC [ 31 ~ ESC [ 18 ^ ESC [ 31 ^ +# F8 ESC [ 19 ~ ESC [ 32 ~ ESC [ 19 ^ ESC [ 32 ^ +# F9 ESC [ 20 ~ ESC [ 33 ~ ESC [ 20 ^ ESC [ 33 ^ +# F10 ESC [ 21 ~ ESC [ 34 ~ ESC [ 21 ^ ESC [ 34 ^ +# F11 ESC [ 23 ~ ESC [ 23 $ ESC [ 23 ^ ESC [ 23 @ +# F12 ESC [ 24 ~ ESC [ 24 $ ESC [ 24 ^ ESC [ 24 @ +# F13 ESC [ 25 ~ ESC [ 25 $ ESC [ 25 ^ ESC [ 25 @ +# F14 ESC [ 26 ~ ESC [ 26 $ ESC [ 26 ^ ESC [ 26 @ +# F15 (Help) ESC [ 28 ~ ESC [ 28 $ ESC [ 28 ^ ESC [ 28 @ +# F16 (Menu) ESC [ 29 ~ ESC [ 29 $ ESC [ 29 ^ ESC [ 29 @ +# F17 ESC [ 31 ~ ESC [ 31 $ ESC [ 31 ^ ESC [ 31 @ +# F18 ESC [ 32 ~ ESC [ 32 $ ESC [ 32 ^ ESC [ 32 @ +# F19 ESC [ 33 ~ ESC [ 33 $ ESC [ 33 ^ ESC [ 33 @ +# F20 ESC [ 34 ~ ESC [ 34 $ ESC [ 34 ^ ESC [ 34 @ +# +# Application +# Up ESC [ A ESC [ a ESC O a ESC O A +# Down ESC [ B ESC [ b ESC O b ESC O B +# Right ESC [ C ESC [ c ESC O c ESC O C +# Left ESC [ D ESC [ d ESC O d ESC O D +# KP_Enter ^M ESC O M +# KP_F1 ESC O P ESC O P +# KP_F2 ESC O Q ESC O Q +# KP_F3 ESC O R ESC O R +# KP_F4 ESC O S ESC O S +# XK_KP_Multiply * ESC O j +# XK_KP_Add + ESC O k +# XK_KP_Separator , ESC O l +# XK_KP_Subtract - ESC O m +# XK_KP_Decimal . ESC O n +# XK_KP_Divide / ESC O o +# XK_KP_0 0 ESC O p +# XK_KP_1 1 ESC O q +# XK_KP_2 2 ESC O r +# XK_KP_3 3 ESC O s +# XK_KP_4 4 ESC O t +# XK_KP_5 5 ESC O u +# XK_KP_6 6 ESC O v +# XK_KP_7 7 ESC O w +# XK_KP_8 8 ESC O x +# XK_KP_9 9 ESC O y +# +# The source-code for rxvt actually defines mappings for F21-F35, using +# "ESC [ 35 ~" to "ESC [ 49 ~". Keyboards with more than 12 function keys +# are rare, so this entry uses the shift- and control-modifiers as in +# xterm+pcfkeys to define keys past F12. +# +# kIC is normally not used, since rxvt performs a paste for that (shifted +# insert), unless private mode 35 is set. +# +# kDN, kDN5, kDN6, etc are extensions based on the names from xterm+pcfkeys -TD +# Removed kDN6, etc (control+shift) since rxvt does not implement this -TD +rxvt+pcfkeys|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~, 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$, kf23=\E[11\^, kf24=\E[12\^, + kf25=\E[13\^, kf26=\E[14\^, kf27=\E[15\^, kf28=\E[17\^, + kf29=\E[18\^, kf3=\E[13~, kf30=\E[19\^, kf31=\E[20\^, + kf32=\E[21\^, kf33=\E[23\^, kf34=\E[24\^, kf35=\E[25\^, + kf36=\E[26\^, kf37=\E[28\^, kf38=\E[29\^, kf39=\E[31\^, + kf4=\E[14~, kf40=\E[32\^, kf41=\E[33\^, kf42=\E[34\^, + kf43=\E[23@, kf44=\E[24@, kf5=\E[15~, kf6=\E[17~, + kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[7~, kind=\E[a, + kri=\E[b, kDC5=\E[3\^, kDC6=\E[3@, kDN=\E[b, kDN5=\EOb, + kEND5=\E[8\^, kEND6=\E[8@, 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, + +# 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! +# caen!batcomputer!theory.TC.Cornell.EDU!mdw +# From: nation@rocket.sanders.com (Robert Nation) +# Newsgroups: comp.os.linux.announce +# Subject: xvt upload +# Date: 16 Apr 1993 18:13:07 GMT +# Organization: Cornell Theory Center +# Lines: 13 +# Approved: linux-announce@tc.cornell.edu (Matt Welsh) +# Message-ID: <1qmsvj$pvj@fitz.TC.Cornell.EDU> +# NNTP-Posting-Host: theory.tc.cornell.edu +# Keywords: xvt, xterm, Xwindows +# Originator: mdw@theory.TC.Cornell.EDU +# +# Rxvt has been uploaded to /pub/Linux/Incoming/rxvt.tar.z and +# rxvt.README on sunsite.unc.edu. +# +# Xvt is an xterm replacement which uses a little less memory, and is +# suitable for use on machines with small memories. Tek4010 support +# is removed. +# +# Modifications were made by Rob Nation (nation@rocket.sanders.lockheed.com) +# to make it a little more compact, and to add and remove certain features. +# +# +# -- +# Send submissions for comp.os.linux.announce to: linux-announce@tc.cornell.edu +#------------------------------------------------------------------------------ +# +# Though its change-log does not mention this, John Davis has stated that he +# was the author of the changes to use the bce ("new color model") which was +# incorporated into rxvt 2.11 (June 15, 1995). The change-log does not give +# dates, nor give developer's names. Initial color support was added for rxvt +# "2.0", which was sometime in 1994. +# +# rxvt had usable color support with 2.16 (April 2, 1996), with some help by my +# work on vttest, as well as bug reports to Mark Olesen. For instance, the fix +# mentioned here +# https://web.archive.org/web/20141016124430/http://web.archiveorange.com/archive/v/6ETvLb5wHtbbzCaS4S9J +# was from one of my bug-reports -TD +# +# While the color model both for xterm and rxvt was based on Linux console, +# Olesen (or possibly Davis) diverged in one respect from Linux's bce color +# behavior: inserting/deleting characters does not fill the newly empty cell +# with the default background color. +rxvt|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, +rxvt-color|rxvt terminal emulator (X Window System), + use=rxvt, +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, + use=xterm+88color, use=rxvt, +rxvt-xpm|rxvt terminal emulator (X Window System), + use=rxvt, +rxvt-cygwin|rxvt terminal emulator (X Window System) on cygwin, + acsc=+\257\,\256-\^0\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, + use=rxvt, +rxvt-cygwin-native|rxvt terminal emulator (native MS Window System port) on cygwin, + acsc=+\257\,\256-\^0\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~\376, + use=rxvt-cygwin, + +# This variant is supposed to work with rxvt 2.7.7 when compiled with +# NO_BRIGHTCOLOR defined. rxvt needs more work... +rxvt-16color|rxvt with 16 colors like aixterm, + ncv#32, use=ibm+16color, use=rxvt, + +#### MRXVT +# mrxvt 0.5.4 +# +# mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which +# makes its function-keys different from other flavors of rxvt -TD +# +# Testing with tack: +# + made custom description (below) to work, though it sets TERM=xterm. +# +# Testing with vttest: +# + While "based on" rxvt, some of the basic functionality is broken. The +# window collapses to a single line when running several of the screens +# in vttest, e.g., the tests for cursor movement, screen features, +# double-sized characters. +# + The vt52 test works properly, but this is an exception. Due to the +# other bug(s) most of vttest is untestable. +# + the color test using ECH shows a gap in the bce model, like rxvt. +# +# Testing with xterm "vttest" scripts: +# + resize.pl does not work because mrxvt does implement CSI 18 t +# (not in rxvt, but not documented by mrxvt) but not CSI 19 t. +# + none of the "dynamic colors" (OSC colors) scripts work. +mrxvt|multitabbed rxvt, + XT, + kEND=\E[8;2~, kHOM=\E[7;2~, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kend=\E[8~, khome=\E[7~, + kEND3=\E[8;3~, kEND4=\E[8;4~, kEND5=\E[8;5~, + kEND6=\E[8;6~, kEND7=\E[8;7~, kHOM3=\E[7;3~, + kHOM4=\E[7;4~, kHOM5=\E[7;5~, kHOM6=\E[7;6~, + kHOM7=\E[7;7~, use=xterm+r6f2, use=xterm+pcfkeys, + use=rxvt, + +mrxvt-256color|multitabbed rxvt with 256 colors, + use=xterm+256color, use=mrxvt, + +#### ETERM +# From: Michael Jennings <mej@valinux.com> +# +# Eterm 0.9.3 +# +# removed kf0 which conflicts with kf10 -TD +# remove cvvis which conflicts with cnorm -TD +# Eterm does not implement control/shift cursor keys such as kDN6, or kPRV/kNXT +# but does otherwise follow the rxvt+pcfkeys model -TD +# remove nonworking flash -TD +# remove km as per tack test -TD +Eterm|Eterm-color|Eterm with xterm-style color support (X Window System), + am, bce, bw, eo, mc5i, mir, msgr, xenl, xon, XT, + btns#5, cols#80, it#8, lines#24, lm#0, ncv@, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, + home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, 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, kNXT@, + kPRV@, ka1=\E[7~, ka3=\E[5~, kb2=\EOu, kbeg=\EOu, kbs=^H, + kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, + mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, + rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, 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, + sc=\E7, + 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, smcup=\E7\E[?47h, + smir=\E[4h, smkx=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + vpa=\E[%i%p1%dd, use=vt100+enq, use=rxvt+pcfkeys, + use=ecma+color, use=vt220+cvis, + +Eterm-256color|Eterm with xterm 256-colors, + use=xterm+256color, use=Eterm, + +Eterm-88color|Eterm with 88 colors, + use=xterm+88color, use=Eterm, + +#### ATERM +# 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, + +#### XITERM +# xiterm 0.5-5.2 +# This is not based on xterm's source... +# vttest shows several problems with keyboard, cursor-movements. +# see also https://invisible-island.net/xterm/xterm.faq.html#bug_xiterm +xiterm|internationalized terminal emulator for X, + km@, + kbs=^?, kdch1=\E[3~, use=klone+color, use=xterm-r6, + + +#### HPTERM +# HP ships this (HPUX 9 and 10), except for the pb#9600 which was merged in +# from BSD termcap. (hpterm: added empty <acsc>, we have no idea what ACS +# chars look like --esr) +hpterm|X-hpterm|HP X11 terminal emulator, + am, da, db, mir, xhp, xon, + cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, pb#9600, xmc#0, + acsc=, bel=^G, bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r, + cub1=^H, cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, + cuu1=\EA, dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK, + hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=\n, kbs=^H, + kclr=\EJ, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, + khts=\E1, kich1=\EQ, kil1=\EL, knp=\EU, kpp=\EV, krmir=\ER, + ktbc=\E3, meml=\El, memu=\Em, + pfkey=\E&f%p1%dk%p2%l%dL%p2%s, + pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, + pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, + pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET, + rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, rmso=\E&d@, + rmul=\E&d@, + sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+ + %p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, + sgr0=\E&d@\017, smacs=^N, smir=\EQ, smkx=\E&s1A, + smln=\E&jB, smso=\E&dJ, smul=\E&dD, tbc=\E3, + vpa=\E&a%p1%dY, use=hp+pfk-cr, use=hp+arrows, +# HPUX 11 provides a color version. +hpterm-color|HP X11 terminal emulator with color, + ccc, + colors#64, pairs#8, + home=\E&a0y0C, + initp=\E&v%p2%da%p3%db%p4%dc%p5%dx%p6%dy%p7%dz%p1%dI, + op=\E&v0S, scp=\E&v%p1%dS, use=hpterm, + +# http://bitsavers.trailing-edge.com/pdf/hp/9000_hpux/1986/97089-90081_198611_Facilities_for_Series_200_300_and_500.pdf +# http://bitsavers.trailing-edge.com/pdf/hp/9000_hpux/1987/97089-90081_198709_Facilities_for_Series_200_300_and_500_HP-UX_Concepts_and_Tutorials.pdf +# +# 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. +# +# Possibly: +# http://bitsavers.trailing-edge.com/pdf/hp/9000_hpux/1986/97089-90042_198608_HP-UX_Concepts_and_Tutorials.pdf +# +# HP300_Series_ITE.pdf +# +# This version, which came from Martin Trusler, was tested with lynx using +# ncurses 5.4 +hpterm-color2|X-hpterm-color2|HP X11 terminal emulator with color, + OTbs, am, ccc, da, db, km, mir, xhp, + colors#8, cols#80, it#8, lh#2, lines#24, lm#0, lw#8, nlab#8, + pairs#8, xmc#0, + acsc=+>\,<-\^.v0\374``a\374f\372g\376h\374j+k+l+m+n+o-q-s-t+ + u+v+w+x|y<z>{*|!}\273~\362, + bel=^G, bold=\E&dD, cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H, + cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, + dch1=\EP, dim=\E&dH, dl1=\EM, ed=\EJ$<1>, el=\EK, + home=\E&a0y0C, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, + ind=\ES, + initp=\E&v0m%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e. + %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1 + %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%= + %t1%e.%p7%d%;z%p1%dI, + is1=\EH\EJ, kbs=^H, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ, + kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, knp=\EU, kpp=\EV, + krmir=\ER, ktbc=\E3, meml=\El, memu=\Em, + oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5 + I\E&v1b1c6I\E&v1x1y7I, + op=\E&v0S, pfkey=\E&f%p1%dk%p2%l%dL%p2%s, + pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, + pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, + pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET, + rmacs=^O, rmam=\E&s1C, rmcup=\E&s0A, rmir=\ER, rmkx=\E&s0A, + rmln=\E&j@, rmm=\E&k0I, rmso=\E&d@, rmul=\E&d@, rs1=\EE, + scp=\E&v%p1%dS, + sgr=\E&d%p1%p3%|%{2}%*%p2%p6%|%{4}%*%+%p5%{8}%*%+%{64}%+%c%? + %p9%t%'\016'%c%e%'\017'%c%;, + sgr0=\E&d@\017, smacs=^N, smam=\E&s0C, smcup=\E&s1A, + smir=\EQ, smkx=\E&s1A, smln=\E&jB, smm=\E&k1I, smso=\E&dB, + smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, use=hp+pfk-cr, + use=hp+arrows, +#### EMU +# This is for the extensible terminal emulator on the X11R6 contrib tape. +# It corresponds to emu's internal emulation: +# emu -term emu +# emu's default sets TERM to "xterm", but that doesn't work well -TD +# fixes: remove bogus rmacs/smacs, change oc to op, add bce, am -TD +# fixes: add civis, cnorm, sgr -TD +emu|emu native mode, + am, bce, mir, msgr, xon, + colors#15, cols#80, it#8, lines#24, pairs#64, vt#200, + acsc=61a\202f\260g2j\213k\214l\215m\216n\217o\220q\222s + \224t\225u\226v\227w\230x\231~\244, + bel=^G, blink=\EW, bold=\EU, civis=\EZ, clear=\EP\EE0;0;, + cnorm=\Ea, cr=\r, csr=\Ek%p1%d;%p2%d;, cub=\Eq-%p1%d;, + cub1=^H, cud=\Ep%p1%d;, cud1=\EB, cuf=\Eq%p1%d;, cuf1=\EC, + cup=\EE%p1%d;%p2%d;, cuu=\Ep-%p1%d;, cuu1=\EA, + dch=\EI%p1%d;, dch1=\EI1;, dl=\ER%p1%d;, dl1=\ER1;, + ech=\Ej%p1%d;, ed=\EN, el=\EK, el1=\EL, home=\EE0;0;, ht=^I, + hts=\Eh, il=\EQ%p1%d;, il1=\EQ1;, ind=\EG, + is2=\ES\Er0;\Es0;, kbs=^H, kcub1=\EC, kcud1=\EB, kcuf1=\ED, + kcuu1=\EA, kdch1=^?, kent=\r, kf0=\EF00, kf1=\EF01, + kf10=\EF10, kf11=\EF11, kf12=\EF12, kf13=\EF13, kf14=\EF14, + kf15=\EF15, kf16=\EF16, kf17=\EF17, kf18=\EF18, kf19=\EF19, + kf2=\EF02, kf20=\EF20, kf3=\EF03, kf4=\EF04, kf5=\EF05, + kf6=\EF06, kf7=\EF07, kf8=\EF08, kf9=\EF09, kfnd=\Efind, + kich1=\Eins, knp=\Enext, kpp=\Eprior, kslt=\Esel, + op=\Es0;\Er0;, rev=\ET, ri=\EF, rmir=\EX, rmso=\ES, rmul=\ES, + rs2=\ES\Es0;\Er0;, setab=\Es%i%p1%d;, + setaf=\Er%i%p1%d;, + sgr=\ES%?%p1%t\ET%;%?%p2%t\EV%;%?%p3%t\ET%;%?%p4%t\EW%;%?%p6 + %t\EU%;, + sgr0=\ES, smir=\EY, smso=\ET, smul=\EV, tbc=\Ej, + +# vt220 Terminfo entry for the Emu emulation, corresponds to +# emu -term vt220 +# with NumLock set (to make the keypad transmit kf0-kf9). +# fixes: add am, xenl, corrected sgr0 -TD +emu-220|Emu-220 (vt200-7bit mode), + am, xenl, xon, + 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, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[1D, + cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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, 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, + kcuu1=\E[A, kent=\EOM, kf0=\EOp, kf1=\EOq, kf10=\EOl, + kf11=\EOm, kf12=\EOn, kf13=\EOP, kf14=\EOQ, kf15=\EOR, + kf16=\EOS, kf2=\EOr, kf26=\E[17~, kf27=\E[18~, kf28=\E[19~, + kf29=\E[20~, kf3=\EOs, kf30=\E[21~, kf34=\E[26~, + kf37=\E[31~, kf38=\E[32~, kf39=\E[33~, kf4=\EOt, + kf40=\E[34~, kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, + kf9=\EOy, khlp=\E[28~, rc=\E8, rev=\E[0;7m, ri=\EM, rmacs=^O, + rmcup=\E>, rmkx=\E>, rmso=\E[m, rmul=\E[m, + rs2=\E[4l\E[34l\E[?1l\E[?3l\E[?5l\E[?7h, sc=\E7, + sgr=\E[0%?%p1%t;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, smcup=\E[?1l\E=, smkx=\E=, + smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, use=vt220+vtedit, + use=vt220+cvis, + +#### MVTERM +# A commercial product, Reportedly a version of Xterm with an OPEN LOOK UI, +# print interface, ANSI X3.64 colour escape sequences, etc. Newsgroup postings +# indicate that it emulates more than one terminal, but incompletely. +# +# This is adapted from a FreeBSD bug-report by Daniel Rudy <dcrudy@pacbell.net> +# It is based on vt102's entry, with some subtle differences, but also +# has status line +# supports ANSI colors (except for 'op' string) +# apparently implements alternate screen like xterm +# does not use padding, of course. +mvterm|vv100|SwitchTerm aka mvTERM, + am, eslok, hs, km, mir, msgr, xenl, xon, + colors#8, cols#80, it#8, lines#24, pairs#64, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + dsl=\E[?E, ed=\E[J, el=\E[K, el1=\E[1K$<3>, enacs=\E(B\E)0, + fsl=\E[?F, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf0=\EOy, + kf10=\EOx, kf5=\EOt, kf6=\EOu, kf7=\EOv, kf8=\EOl, kf9=\EOw, + op=\E[100m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, + rmcup=\E[2J\E[?47l\E8, rmkx=\E[?1l\E>, rmso=\E[m, + rmul=\E[m, + rs2=\E>\E[1;3;4;5;6l\E[?7h\E[100m\E[m\E[r\E[2J\E[H, + sc=\E7, 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, smacs=^N, smcup=\E7\E[?47h, + smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + tsl=\E[?E\E[?%i%p1%dT, use=vt100+fnkeys, + +#### MTERM +# +# This application is available by email from <mouse@Rodents.Montreal.QC.CA>. +# +# "mterm -type ansi" sets $TERM to "ansi" +mterm-ansi|ANSI emulation, + am, bw, mir, msgr, + it#8, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, + el=\E[K, home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, + il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m, + is2=\E)0\017, kbs=^H, nel=\EE, rev=\E[7m, ri=\E[T, rmacs=^O, + rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, + 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, smir=\E[4h, smso=\E[7m, + smul=\E[4m, vpa=\E[%i%p1%dd, use=ecma+index, +# mterm normally sets $TERM to "mterm" +mterm|mouse-sun|Der Mouse term, + am, bw, mir, + it#8, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=^N, cuf1=^S, + cup=\006%p1%d.%p2%d., cuu1=^X, dch1=^Y, dl1=^K, ed=^B, el=^C, + home=^P, ht=^I, il1=^A, ind=^U, kbs=^H, ll=^R, nel=\r^U, ri=^W, + rmir=^O, rmso=^T, smir=^Q, smso=^V, +# "mterm -type decansi" sets $TERM to "decansi" +# +# note: kdch1, kfnd, kslt are in the source code, but do not work -TD +decansi|ANSI emulation with DEC compatibility hacks, + am, mir, msgr, xenl, + colors#8, it#8, pairs#64, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, enacs=\E(B\E)0, + home=\E[H, hpa=\E[%i%p1%d`, ht=^I, ich1=, il=\E[%p1%dL, + il1=\E[L, ind=\E[S, invis=\E[8m, 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, rc=\E8, rev=\E[7m, + ri=\E[T, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, + rmso=\E[27m, rmul=\E[24m, sc=\E7, 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, smir=\E[4h, + smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, u6=\E[%i%d;%dR, + u7=\E[6n, vpa=\E[%i%p1%dd, use=vt220+vtedit, + use=ecma+index, use=vt220+cvis, + +#### VWM +# http://vwm.sourceforge.net/ +# +# VWM 2.0.2 (2009-05-01) +# vwmterm is a terminal emulator written for the VWM console window manager. +# This version is obsolete, replaced by libvterm in 2.1.0 (2009-10-23). +vwmterm|(vwm term), + am, bce, ccc, mir, msgr, npc, xenl, xon, + colors#8, pairs#64, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[?25h, dim=\E[2m, + ed=\E[J, el=\E[K, home=\E[H, il1=\E[L, ind=\n, invis=\E[8m, + 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~, rev=\E[7m, rmacs=\E[10m, + 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=vt220+cvis, use=xterm+alt1049, + +#### MGR +# +# MGR is a Bell Labs window system lighter-weight than X. +# These entries describe MGR's xterm-equivalent. +# They are courtesy of Vincent Broman <broman@nosc.mil> 14 Jan 1997 +# + +mgr|Bellcore MGR (non X) window system terminal emulation, + am, km, xon, + bel=^G, bold=\E2n, civis=\E9h, clear=^L, cnorm=\Eh, cr=\r, + csr=\E%p1%d;%p2%dt, cub1=^H, cud1=\Ef, cuf1=\Er, + cup=\E%p2%d;%p1%dM, cuu1=\Eu, cvvis=\E0h, + dch=\E%p1%dE$<5>, dch1=\EE, dl=\E%p1%dd$<3*>, + dl1=\Ed$<3>, ed=\EC, el=\Ec, hd=\E1;2f, ht=^I, hu=\E1;2u, + ich=\E%p1%dA$<5>, ich1=\EA, il=\E%p1%da$<3*>, + il1=\Ea$<3>, ind=\n, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, nel=\r\n, rev=\E1n, rmam=\E5S, + rmso=\E0n, rmul=\E0n, sgr0=\E0n, smam=\E5s, smso=\E1n, + smul=\E4n, +mgr-sun|Mgr window with Sun keyboard, + ka1=\E[214z, ka3=\E[216z, kb2=\E[218z, kc1=\E[220z, + kc3=\E[222z, kcpy=\E[197z, kend=\E[220z, kent=\E[250z, + kf1=\E[224z, kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, + kf2=\E[225z, kf3=\E[226z, kf4=\E[227z, kf5=\E[228z, + kf6=\E[229z, kf7=\E[230z, kf8=\E[231z, kf9=\E[232z, + kfnd=\E[200z, khlp=\E[207z, khome=\E[214z, knp=\E[222z, + 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, + +#### SIMPLETERM +# st.suckless.org + +st|stterm| simpleterm, + use=st-0.8, + +# Reviewed 0.8.2: +# In tack, +# there is some problem turning off line-drawing +# shift+control function-keys do nothing; shift+control cursor keys work +# the padding tests make the terminal non-functional. +# In vttest, +# SD/SU work +# SL/SR/REP do not work +# ECMA-48 cursor movement works, e.g., CHA, CBT, etc. +# +# This entry discards the ccc/initc capabilities from st-0.7 because they +# belong in st-256color. +st-0.8|simpleterm 0.7, + dim=\E[2m, kcbt@, kent@, oc=\E]104\007, + 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, + Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B, + kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~, + kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~, + kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A, + use=ecma+strikeout, use=st-0.6, + +# Reviewed 0.7: +# dim is intermittent, sometimes works, sometimes does not +# italics may show up with yellow color +# has control cursor-keys, alt cursor-keys, still no combinations +# has control pageup/down +# tmux extensions, see TERMINFO EXTENSIONS in tmux(1) +# Se and Ss are implemented in the source-code, but the terminfo +# provided with the source is incorrect, since Se/Ss are mis-coded +# as booleans rather than strings. +st-0.7|simpleterm 0.7, + ccc, + dim=\E[2m, + initc=\E]4;%p1%d;rgb:%p2%{255}%*%{1000}%/%2.2X/%p3%{255}%* + %{1000}%/%2.2X/%p4%{255}%*%{1000}%/%2.2X\E\\, + kcbt@, kent@, oc=\E]104\007, + 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, + Ms=\E]52;%p1%s;%p2%s\007, kDN3=\E[1;3B, kDN5=\E[1;5B, + kLFT3=\E[1;3D, kLFT5=\E[1;5D, kNXT3=\E[6;3~, + kNXT5=\E[6;5~, kPRV3=\E[5;3~, kPRV5=\E[5;5~, + kRIT3=\E[1;3C, kRIT5=\E[1;5C, kUP3=\E[1;3A, kUP5=\E[1;5A, + use=ecma+strikeout, use=st-0.6, + +# st-0.4.1 +# +# This version uses a table which supports a single modifier (a subset of +# xterm's keys, using the same scheme). Because it supports only a single +# modifier in this table, function keys f36-f48 are normally unavailable +# because they are assigned to modifier-4. +# +# The program assigns TERM to match the program name (the upstream source says +# "st", but Debian renames it to "stterm"). +# +# The source includes two entries which are not useful here: +# st-meta| simpleterm with meta key, +# st-meta-256color| simpleterm with meta key and 256 colors, +# because st's notion of "meta" does not correspond to the terminfo definition. +# Rather, it acts like xterm - when the meta feature is disabled. +# +# Removed invis -TD +# Added eo, removed ul -TD +# +# Reviewed st 0.5: +# implements control-modifier, but not control-shift for special keys +# implements alt-modifier, but not alt-shift for special keys +# +# Reviewed st 0.6: +# http://git.suckless.org/st/log/st.info +# Tmux unofficial extensions, see TERMINFO EXTENSIONS in tmux(1) +# still has no function keys past kf36 (no combinations of modifiers) +# no application keypad mode, e.g, kent. +st-0.6|simpleterm 0.6, + am, bce, hs, mir, msgr, npc, xenl, XT, + colors#8, cols#80, it#8, lines#24, pairs#64, + acsc=+C\,D-A.B0E``aaffgghFiGjjkkllmmnnooppqqrrssttuuvvwwxxyy + zz{{||}}~~, + 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, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)0, + flash=\E[?5h$<100/>\E[?5l, fsl=^G, home=\E[H, + hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, + 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~, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + kdl1=\E[3;2~, ked=\E[1;5F, kel=\E[1;2F, kent=\EOM, + kf1=\EOP, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, + 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~, 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, kf5=\E[15~, 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~, kf6=\E[17~, kf60=\E[24;3~, + kf61=\E[1;4P, kf62=\E[1;4Q, kf63=\E[1;4R, kf7=\E[18~, + kf8=\E[19~, kf9=\E[20~, 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, rc=\E8, + rev=\E[7m, 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, + sc=\E7, 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} + %=%t3%e%p1%d%;m, + 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[0m, smacs=\E(0, smir=\E[4h, smkx=\E[?1h\E=, + smso=\E[7m, smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, + u7=\E[6n, u8=\E[?1;2c, u9=\E[c, vpa=\E[%i%p1%dd, Se=\E[2 q, + Ss=\E[%p1%d q, use=vt220+pcedit, use=ecma+index, + use=xterm+alt1049, use=vt220+cvis, use=xterm+sl, + use=ecma+italics, +# +# st-0.1.1 +# +# Note: the original terminfo description uses leading blank to persuade +# ncurses to use "st" as its name. Proper fix for that is to use "st" as an +# alias. +# +# Reading the code shows it should work for aixterm 16-colors +# - added st-16color +# +# Using tack: +# - set eo (erase-overstrike) +# - set xenl +# - tbc doesn't work +# - hts works +# - cbt doesn't work +# - shifted cursor-keys send sequences like rxvt +# - sgr referred to unimplemented "invis" mode. +# Fixes: add eo and xenl per tack, remove nonworking cbt, hts and tbc, invis +simpleterm|old-st|simpleterm 0.1.1, + am, eo, mir, msgr, ul, xenl, + colors#8, cols#80, it#8, lines#24, ncv#3, pairs#64, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, 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, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%i%p1%dG, + ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^?, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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~, op=\E[37;40m, rc=\E8, + rev=\E[7m, rmacs=\E(B, rmso=\E[m, rmul=\E[m, sc=\E7, + 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[0m, smacs=\E(0, smso=\E[7m, smul=\E[4m, + use=vt220+cvis, use=ecma+index, +st-16color|stterm-16color|simpleterm with 16-colors, + use=ibm+16color, use=st, +# Tested with st 0.8.2 +# The issue with the titlebar is fixed, though st is very slow. +# In st 0.7, 256 colors "works", but when running xterm's test-scripts, some +# garbage is shown in the titlebar. +# +# terminal wants to use TERM=stterm-256color, but that is longer than 14 +# characters, making the choice nonportable. +st-256color|stterm-256color|simpleterm with 256 colors, + use=xterm+256color, use=st, + +#### TERMINATOR +# https://github.com/software-jessies-org/jessies/wiki/Terminator +# +# Tested using the Debian package org.jessies.terminator 6.104.3256 on 64-bit +# Debian/current -TD (2011/8/20) +# +# There were some packaging problems: +# a) using Java, the program starts off using 50Mb, and climbs from there, +# up to 114Mb after testing (no scrollback). +# b) it insists on reinstalling its terminal description in $HOME/.terminfo +# (two copies, just in case the host happens to be Mac OS X). +# I deleted this after testing with tack. +# +# Issues/features found with tack: +# a) tbc does not work (implying that hts also is broken). +# Comparing with the tabs utility shows a problem with the last tabstop on +# a line. +# b) has xterm-style shifted function-key strings +# meta also is used, but control is ignored. +# c) has xterm-style modifiers for cursor keys (shift, control, shift+control, +# meta) +# d) some combinations of shift/control send xterm-style sequences for +# insert/delete/home/end. +# e) numeric keypad sends only numbers (compare with vttest). +# f) meta mode (km) is not implemented. +# +# Issues found with ncurses test-program: +# a) bce is inconsistently implemented +# b) widths of Unicode values above 256 do not always agree with wcwidth. +# +# Checked with vttest, found low degree of compatibility there. +# +# Checked with xterm's scripts, found that the 256-color palette is fixed. +# +# Fixes: +# a) add sgr string +# b) corrected sgr0 to reset alternate character set +# c) modified smacs/rmacs to use SCS rather than SI/SO +# d) removed bce +# e) removed km +# +# Revisiting in May 2019, the Debian package was no longer available, and a +# developer-provided ".deb" does not work. However, a usable Windows ".msi" +# (which relies upon Cygwin) can be tested. The developers provide a terminfo, +# but some of the features it lists do not work reliably (bce, italics, invis). +# +# tack: +# tbc fails +# invis attribute fails +# key-definitions could be expanded, with some work: +# + supports xterm-style cursor key-modifiers for shift +# + supports xterm-style function key-modifiers for shift,control,alt +# + supports xterm-style editing key-modifiers for shift,control,alt +# (kbs=^?) +# ncurses test-program: +# "C" menu shows that bce implementation is incomplete +# italics did not work +# dim worked once in tack, but not in ncurses test-program +# "F" thick-line characters do not display +# vttest: +# terminal does not respond to 80/132-column switching +# wrapping at the right margin is erratic +# there are several problems in the cursor-movements and screen-features +# no vt52, no double-sized characters +# Device attributes response says it is a vanilla VT100 +# does not respond to xterm mouse controls +# alternate screen tests do not fill the screen, return wrong position +# window modify/report operations do not work +# miscellaneous ISO-6429 tests, e.g., REP, do not work +# CBT, CHT, HPR, CNL,CPL, VPR do not work +# +# removed the cancel for "hs", removed cbt, invis, corrected sgr -TD +# use xterm+256setaf, etc -TD +terminator|Terminator no line wrap, + bce, eo, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, lm#0, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, 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, + il=\E[%p1%dL, il1=\E[L, 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=^?, + 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~, 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~, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E(B, + rmir=\E[4l, rmso=\E[27m, rmul=\E[24m, rs1=\Ec, + rs2=\E[!p\E[?3;4l\E[4l\E>, s0ds=\E(B, s1ds=\E(0, sc=\E7, + 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, tsl=\E]2;, vpa=\E[%i%p1%dd, + use=vt220+pcedit, use=ecma+italics, use=ecma+index, + use=xterm+256setaf, use=xterm+sl-twm, + use=xterm+alt1049, use=vt220+cvis, + +#### TERMINOLOGY +# https://www.enlightenment.org/about-terminology +# https://github.com/borisfaure/terminology +# +# 2014/10/14: +# Tested terminology-0.3.0, 0.6.1, using tack and vttest. This is not a vt100 +# emulator, nor is it compatible with xterm, but it uses a few features from +# both -TD +# +# General comments: +# cursor does not fill on focus +# there are pervasive problems with clearing/erasing parts of the screen +# resizing the window causes it to stop listening to the keyboard +# tack - +# doesn't understand vt100 CPR needed for resize +# no CBT +# no cvvis +# has invis +# no blink +# uses bce model for colors, but (see below) fails the vttest screens +# has partial support for 256color feature. +# tack function-keys (a subset of xterm+pcf0), and +# tack cursor-keys (a subset of xterm+pce2): +# ctrl+shift (ignored) +# 2 shift +# shift-alt modifier -> shift (2) +# 3 alt +# 4 +# 5 ctrl +# tack modifiers did not work for fkeys in 0.3.0; subset works in 0.6.1 +# ctrl + khome/kend works - none of the other modifiers do +# vttest - +# spits lots of messages from termptyesc.c especially in vttest. +# no 132-column mode +# fails menu 1, 2 (definitely not vt100-compatible) +# primary (claims vt420 with several options, apparently none work) and +# secondary report says (perhaps... vt420): \E[>41;285;0c +# CHA, HPR, VPA, CNL, CPL work +# BCE with ED/EL - fail +# BCE with ECH/indexing - fail +# SD/SU work +# unlike teken, background light/dark works +# can set title +# X10 and Normal mouse work +# Any-event mouse works +# Mouse button-event works +# +# This description uses xterm+pcf0, which is misleading because the program +# does not handle combinations of modifiers - but listing them all would +# involve more effort than its developers spent -TD +terminology-0.6.1|EFL-based terminal emulator, + mc5i@, + blink@, ed@, el@, el1@, invis=\E[8m, kLFT=\E[1;2D, + kRIT=\E[1;2C, kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, + kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, + kind=\E[1;2B, kri=\E[1;2A, + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p7%t;8 + %;m%?%p9%t\016%e\017%;$<2>, + vpa=\E[%i%p1%dd, kDC3=\E[3;3~, kDC4=\E[3;4~, + kDC5=\E[3;5~, kDC6=\E[3;6~, kDC7=\E[3;7~, kDN=\E[1;2B, + kDN3=\E[1;3B, kDN4=\E[1;4B, kDN5=\E[1;5B, kDN6=\E[1;6B, + kDN7=\E[1;7B, kEND5=\E[1;5F, kHOM5=\E[1;5H, + 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=xterm+pcf0, use=vt100, + use=xterm+256setaf, + +# 2017-11-11 +# Tested terminology 1.0.0 +# +# tack - +# Shifted cursor-keys send nothing, but xterm modifiers for control+shift +# and control+alt were added like xterm+pcc2 +# Editing keys have some features from xterm+pce2 +# Changed from xterm+pcf0 to xterm+pcf2 +# +# vttest - +# REP, SL, SR fail +# +# Aside from the partial fixes for function/cursor/editing keys, no improvement +# in other tests versus 0.6.1 +terminology-1.0.0|EFL-based terminal emulator, + dim=\E[2m, flash=\E[?5h$<100/>\E[?5l, kend=\E[OF, + khome=\E[OH, rmacs=\E(B, + sgr=%?%p9%t\E(0%e\E(B%;\E[0%?%p6%t;1%;%?%p5%t;2%;%?%p2%t;4%; + %?%p1%p3%|%t;7%;%?%p7%t;8%;m$<2>, + sgr0=\E(B\E[m, smacs=\E(0, use=ecma+italics, + use=vt220+cvis, use=xterm+x11mouse, use=xterm+pce2, + use=xterm+pcf2, use=xterm+pcc2, use=terminology-0.6.1, + +# 2020/12/26: +# Tested terminology 1.8.1 using tack and vttest. +# tack - +# flash does not work +# italics and crossed-out text work +# no meta mode +# vttest - +# DA1 says this is a VT420 with 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 +# left/right margins do not work +# most of DECSCUSR works +# most problems with bce are fixed. +terminology-1.8.1|EFL-based terminal emulator, + km@, + cvvis@, flash@, initc@, kcbt=\E[Z, rmm@, smm@, Ms@, + use=ecma+index, use=xterm+256setaf, use=ansi+rep, + use=ecma+strikeout, use=xterm+sm+1006, + use=xterm+pcfkeys, use=xterm+tmux, use=vt220+cvis, + use=ecma+italics, use=xterm-basic, + +terminology|EFL-based terminal emulator, + use=terminology-1.8.1, + +######## OPENGL CLIENTS + +#### Alacritty +# https://github.com/jwilm/alacritty +# Version 0.6.0 (2020/11/25) +# Version 0.4.0 (2019/11/25) +# Version 0.3.3 (2019/08/03) +# Version 0.2.1 (2018/10/03) +# Project started in 2016/02, uses Rust and OpenGL, and in contrast to (most X +# terminal programs) is not designed to run with a remote server. +# +# Packaged in Arch Linux - +# vttest: +# initial screensize 24x80 +# no DECCOLM (does not switch between 80/132 columns) +# otherwise, passes wrapping test +# no DECSCNM +# identifies as a vt102 +# numeric keypad does not send expected codes (seen in 0.4.0) +# passes bce test +# vt220: +# ECH works in 0.3.3 (0.2.1 left text on right margin) +# no SRM, DECSCA +# vt320: +# fails DECXCPR +# does not implement any of the DECRQM/DECRPM controls +# does not implement any of the DECRQSS controls +# vt420: +# no DECLRMM +# no DECBI, DECFI +# other: +# fails CHT, otherwise ECMA-48 cursor movement ok +# fails ERM/SPA, SL, SR, passes REP, SD, SU +# xterm: +# no X10 mouse +# has normal and highlight mouse +# has any-event and button-event mouse +# + does support SGR-mouse +# + does not correctly support focus in/out events (seen in 0.4.0) +# cursor-position wrong after alternate-screen (fixed in 0.4.0) +# none of the dtterm controls work +# tack: +# bell and flash do not work +# blink does not work +# italics and crossed-out work (latter did not work in 0.2.1) +# function-keys work up (tested combinations which window manager allows) +# treats meta as escape-prefix +# +# The program sources include "alacritty" and "alacritty-direct", which are +# copied from "xterm-256color" and "xterm-direct" (but using semicolon for +# subparameter delimiter). Refactored here to use ncurses building blocks -TD +alacritty|alacritty terminal emulator, + rs1=\Ec\E]104\007, use=xterm+256color, + use=alacritty+common, + +alacritty-direct|alacritty with direct color indexing, + use=xterm+indirect, use=alacritty+common, + +# cancel km, since it is not actually meta mode -TD +# added ecma+strikeout in 0.3.3 -TD +# added xterm+sl-twm in 0.3.3 -TD +alacritty+common|base fragment for alacritty, + km@, npc, + kb2=\EOE, kbs=^?, kcbt=\E[Z, kent=\EOM, Se=\E[0 q, + Smulx=\E[4:%p1%dm, use=ecma+index, 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, use=xterm+pcc2, + use=xterm+pcf2, + +#### Kitty +# https://github.com/kovidgoyal/kitty +# Project started in 2016/10 (see alacritty), but is a Python script rather +# than Rust, using OpenGL. The same caveats regarding remote connections +# apply. This is not an X terminal, though (like alacritty), it copies +# features from xterm. +# +# Regarding the name "kitty", that is a pun, reflected in the description. +# But see +# http://www.9bis.net/kitty/ +# https://github.com/kovidgoyal/kitty/issues/9 +# https://github.com/kovidgoyal/kitty/issues/1025 +# and +# http://lists.gnu.org/archive/html/bug-ncurses/2018-09/msg00005.html +# https://github.com/kovidgoyal/kitty/issues/879 +# +# Version 0.19.1 +# changes since 0.13.3: +# vttest +# ISO-6429 +# REP works, though using unspecified behavior +# xterm +# xterm's SGR-mouse mode is recognized. +# does recognize original alternate-screen +# bug: mouse focus in/out does not work. +# bug: X10 mouse mode responds like any-event +# bug: highlight-tracking does not work; terminal hangs. +# +# tack +# rs1 adds an empty string for resetting title- and other OSC-strings. +# italics work +# +# Version 0.13.3 +# Notes: +# initial screensize 71x22 +# does not respond to "resize -s" +# resizing with window manager gives no clues +# vttest +# does not switch between 80/132 columns +# fails wrapping test, copying vte/rxvt +# no reverse-background, no blink +# claims to be vt200: +# primary \E[?62;c +# secondary \E[>1;4000;12c +# however - +# no GR in the locking-shifts screen +# no NRCS or ISO-2022, anyway +# no VT52 +# VT220: +# has DECTCEM, ECH, but no SRM and DECSCA +# has operating condition report, none of the others +# VT320: +# has SU/SD +# DECRQSS ok for DECSTBM, SGR, none of the others +# no status-line +# VT420: +# DECXCPR device status works, none of the others +# no left/right margins +# has DECCARA, but not DECERA, DECFRA, DECRARA, DECSERA +# inside of DECCARA is uncolored +# line-drawing with DECCARA does not work +# aside from left/right margins, editing sequences look ok +# no DECFI, DECBI +# color: +# fails ECH test for bce +# ISO-6429 +# fails REP, SL, SL, but other cursor-movement ok +# xterm: +# does not recognize original alternate-screen +# cursor-position wrong after alternate-screen +# has normal mouse, any-event, any-button, but +# no X10 mouse +# no mouse-highlight tracking +# no DEC locator +# dtterm - only supports report-size chars/pixels +# recognizes tcap-query +# tack: +# flash doesn't work +# italics do not work +# bce should be set (but see vttest) +#* developer's terminfo stopped at kf25, but the program continues, +# copying xterm for the rest of the control+fkey sequence +# (but only one modifier is supported, like iTerm2). +#* it omitted shifted pageup/down +#* control+editing keys work +# In contrast to function-keys, some additional modifier combinations +# act like xterm for the editing/cursor-keys, e.g., alt+shift. While +# the implementation is incomplete, the building-blocks are consistent +# with what has been implemented -TD +# DECKPAM does not work -TD +#* ka1, ka3, kc1, kc3 were bogus (removed) +#* meta sends escape (removed kmm) -TD +#* cvvis does not make cursor "more visible" -TD +kitty|KovId's TTY, + use=xterm+256color, use=kitty+common, +kitty-direct|KovId's TTY using direct colors, + oc=\E]104\007, use=xterm+direct2, use=kitty+common, +kitty+common|KovId's TTY common properties, + am, mc5i, mir, msgr, npc, xenl, + cols#80, it#8, lines#24, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, + bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, 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, + ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, + ind=\n, kbs=^?, kcbt=\E[Z, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kend=\EOF, kf1=\EOP, + kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, 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~, kf4=\EOS, + kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, + khome=\EOH, kich1=\E[2~, kind=\E[1;2B, knp=\E[6~, + kpp=\E[5~, kri=\E[1;2A, op=\E[39;49m, rc=\E8, 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, sc=\E7, + 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, tbc=\E[3g, + vpa=\E[%i%p1%dd, use=ansi+enq, use=ansi+rep, + use=xterm+sm+1006, use=ecma+index, use=xterm+sl-twm, + use=ecma+strikeout, use=xterm+pce2, use=xterm+pcc2, + use=ecma+italics, use=xterm+alt1049, use=att610+cvis, + use=xterm+tmux, + +######## WAYLAND CLIENTS + +#### Foot +# https://codeberg.org/dnkl/foot/ +# Version 1.8.2 +# +# This identifies as a VT220 with 4=sixel and 22=color, however: +# tack: +# bell does not work +# status-line does not work because foot does not set the window title +# sends escape when meta key is used, whether or not smm/rmm enabled +# vttest: +# wrap-test fails +# no application-mode for numeric keypad (unless private mode 1035 is set) +# no NRCS +# no VT52 +# no SRM +# protected areas do not work +# SU/SD work, SL/SR do not +# DECRPM responds, but not the corresponding ANSI reports. +# 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 +# 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 +# + does not report buttons 6/7 +# alternate-screen works +foot|foot terminal emulator, + oc=\E]104\E\\, use=xterm+256color2, use=foot+base, + +foot-direct|foot with direct color indexing, + use=xterm+direct, use=foot+base, + +foot+base|foot base fragment, + am, bce, bw, hs, mir, msgr, npc, xenl, AX, XT, + cols#80, it#8, lines#24, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, 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, invis=\E[8m, + is2=\E[!p\E[?3;4l\E[4l\E>, kbs=^?, kcbt=\E[Z, + oc=\E]104\E\\, op=\E[39;49m, 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>, + 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, smacs=\E(0, smam=\E[?7h, smkx=\E[?1h\E=, + smso=\E[7m, smul=\E[4m, 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=ecma+index, use=ecma+italics, + use=ecma+strikeout, use=xterm+alt+title, + use=xterm+pcfkeys, use=xterm+sm+1006, use=xterm+tmux2, + +######## WEB CLIENTS + +#### DomTerm +# https://domterm.org +# +# Quoting its webpage: +# The domterm command runs a server that manages sessions (usually shell +# processes). The user interface and terminal emulation is handled by a +# JavaScript library that can run in a regular web browser or an embedded +# browser such as Electron, using Web Sockets to talk to the server. +# +# 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 current code (2019/07/06) with Fedora 30: +# tack +# no flash +# no beep +# no dim +# no blink +# no invis +# no italics +# ok smxx/rmxx +# bce screen shows diagonal lines... +# kf6 sends nothing +# kf11 toggles maximize +# cursor-key application mode works +# numeric keypad application does not work; keys always send face-codes +# sends utf-8 for meta, like xterm +# vttest +# has problems with menu #1 (wrapping) +# DA = vt200 with 132 columns, color +# DA2 = 990, 100300 ("\E[>990;100300;0c") +# no VT52, no double-size characters +# vt220 ECH test works, SRM, DECSCA do not +# S7C1T/S8C1t does not work +# DECUDK does not work +# CNL does not work; the other ECMA-48 cursor-movement tests work +# REP sort-of works (does not match xterm) +# SD/SU work, but not SL/SR +# window reporting: works for size in chars/pixels, but not other tests +# X10 mouse clicks work -- but return 4 rather than 1 for codes +# any-event mouse mode acts like any-button mode +# implements SGR mouse-mode +# other: +# does not implement initc +# does accept either colons or semicolon in 38/48 SGR. +domterm|DomTerm web client, + npc, + 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=xterm+256setaf, use=ecma+index, + use=xterm+sm+1006, use=xterm+pcfkeys, use=xterm-basic, + +######## UNIX VIRTUAL TERMINALS, VIRTUAL CONSOLES, AND TELNET CLIENTS +# + +# Columbus UNIX virtual terminal. This terminal also appears in +# UNIX 4.0 and successors as line discipline 1 (?), but is +# undocumented and does not really work quite right. +cbunix|cb unix virtual terminal, + OTbs, am, da, db, + cols#80, lines#24, lm#0, + bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EG%p2%c%p1%c, cuu1=\EA, dch1=\EM, dl1=\EN, ed=\EL, + el=\EK, ich1=\EO, il1=\EP, ind=\n, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, khome=\EE, rmso=\Eb^D, rmul=\Eb^A, + smso=\Ea^D, smul=\Ea^A, +# (vremote: removed obsolete ":nl@:" -- esr) +vremote|virtual remote terminal, + am@, + cols#79, use=cbunix, + +pty|4bsd pseudo teletype, + cup=\EG%p1%{32}%+%c%p2%{32}%+%c, rmso=\Eb$, rmul=\Eb!, + smso=\Ea$, smul=\Ea!, use=cbunix, + +#### Emacs + +# https://www.emacswiki.org/emacs/AnsiTerm +# https://github.com/emacs-mirror/emacs/blob/master/lisp/term.el +# +# The codes supported by the term.el terminal emulation in GNU Emacs 19.30 +eterm|gnu emacs term.el terminal emulation, + am, mir, xenl, + cols#80, lines#24, + bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, rev=\E[7m, + rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m, + sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m, + smul=\E[4m, + +# 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, + am, mir, msgr, xenl, + colors#8, cols#80, lines#24, pairs#64, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kbs=^?, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmir=\E[4l, + rmso=\E[27m, rmul=\E[24m, rs1=\Ec, sc=\E7, + 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, smir=\E[4h, smso=\E[7m, smul=\E[4m, + u6=\E[%i%d;%dR, u7=\E[6n, use=vt220+pcedit, + +# shell.el can "do" color, though not nearly as well. +# +# seen here: +# http://unix.stackexchange.com/questions/237943/changing-colors-used-by-ls-does-not-work-in-emacs-shell-mode +# +# and +# https://lists.gnu.org/archive/html/bug-gnu-emacs/2012-08/msg00481.html +# https://github.com/emacs-mirror/emacs/blob/master/lisp/shell.el +# https://github.com/emacs-mirror/emacs/blob/master/lisp/ansi-color.el +# +# however, as tested with Emacs 24.5.1, the result is buggy, losing overlays +# frequently. The contemporaneous term.el aka ansi-term does not "support" +# italics but does not lose the color information -TD 2017/01/28. +dumb-emacs-ansi|Emacs dumb terminal with ANSI color codes, + am, hc, + colors#8, it#8, ncv#13, pairs#64, + bold=\E[1m, cud1=\n, ht=^I, ind=\n, op=\E[39;49m, + rmul=\E[24m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + sgr0=\E[m, smul=\E[4m, use=ecma+italics, + +#### Screen + +# Entries for use by the `screen' program by Juergen Weigert, +# Michael Schroeder, Oliver Laumann. The screen and +# screen-w entries came with version 3.7.1. The screen2 and screen3 entries +# come from University of Wisconsin and may be older. +# (screen: added <cnorm> on ANSI model -- esr) +# +# 'screen' defines extensions to termcap. Some are used in its terminal +# description: +# G0 (bool) Terminal can deal with ISO 2022 font selection sequences. +# AX (bool) Does understand ANSI set default fg/bg color +# (\E[39m / \E[49m). +# S0 (str) Switch charset 'G0' to the specified charset. +# E0 (str) Switch charset 'G0' back to standard charset. +# +# Initially tested with screen 3.09.08 +# +# According to its manual page +# +# Screen is a full-screen window manager that multiplexes a physical +# terminal between several processes (typically interactive shells). Each +# virtual terminal provides the functions of a DEC VT100 terminal and, in +# addition, several control functions from the ISO 6429 (ECMA 48, ANSI +# X3.64) and ISO 2022 standards (e.g. insert/delete line and support for +# multiple character sets). +# +# However, there is a design error in its support for video highlights. The +# program uses a table (rendlist) which equates the SGR codes to terminal +# capabilities. That, and color-decoding are hardcoded in screen; its behavior +# is modified only by the presence or absence of the corresponding capabilities. +# Not by their values. +# +# If screen sets the TERMCAP variable, it uses hardcoded strings which +# correspond to the rendlist table. +# +# The table gives this information: +# +# SGR capability +# --- --------- +# 1 bold +# 2 dim +# 3 standout +# 4 underline +# 5 blink +# - (unused 6) +# 7 reverse +# - (unused 8-21) +# 22 reset bold, standout and dim +# 23 reset standout +# 24 reset underline +# 25 reset blink +# - (unused 26) +# 27 reset reverse +# +# ECMA-48 differs from this: 3 and 23 set and reset italics, respectively. +# ECMA-48 does not define "standout" - that is a termcap/terminfo abstraction. +# Without some redesign of screen, it is not possible to extend the set of +# capabilities. Substitution would be possible, e.g., sending italics in +# place of underline. +# +# Because screen uses hard-coded parsing, it does not check if two capabilities +# use the same value. For example, changing standout to be the same as any of +# the other capabilities will confuse screen. Curses applications which use +# sgr are not impacted (because that usually resets all capabilities before +# setting any), but termcap applications do not use sgr -TD +# +# The "screen" entry should use ecma+index rather than just indn, but tmux +# defaults to using "screen". For background, screen supported ecma+index +# since 1994 (i.e., screen 3.0.5), stating that it was an obscure code used by +# the (Siemens Nixdorf) 97801 terminal. It was not shown in the termcap or +# terminfo entries (which list about 60% of the control sequences). +screen|VT 100/ANSI X3.64 virtual terminal, + OTbs, OTpt, am, km, mir, msgr, xenl, G0, + colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, U8#1, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, + clear=\E[H\E[J, cnorm=\E[34h\E[?25h, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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=\EM, + cvvis=\E[34l, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG, + ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, + ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^H, kcbt=\E[Z, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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~, kmous=\E[M, nel=\EE, rc=\E8, rev=\E[7m, ri=\EM, + rmacs=^O, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[23m, + rmul=\E[24m, rs2=\Ec\E[?1000l\E[?25h, sc=\E7, + 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, smacs=^N, smir=\E[4h, smkx=\E[?1h\E=, + smso=\E[3m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, + E0=\E(B, S0=\E(%p1%c, use=vt220+pcedit, + use=xterm+alt1049, use=ecma+color, use=vt100+enq, +# The bce and status-line entries are from screen 3.9.13 (and require some +# changes to .screenrc). +screen-bce|VT 100/ANSI X3.64 virtual terminal with bce, + bce, + ech@, use=screen4, +screen-s|VT 100/ANSI X3.64 virtual terminal with hardstatus line, + dsl=\E_\E\\, fsl=\E\\, tsl=\E_, use=screen4, + +# ====================================================================== +# Entries for GNU Screen with 16 colors. +# Those variations permit to benefit from 16 colors palette, and from +# bold font and blink attribute separated from bright colors. But they +# are less portable than the generic "screen" 8 color entries: Their +# usage makes real sense only if the terminals you attach and reattach +# do all support 16 color palette. + +screen-16color|GNU Screen with 16 colors, + use=ibm+16color, use=screen4, + +screen-16color-s|GNU Screen with 16 colors and status line, + use=ibm+16color, use=screen-s, + +screen-16color-bce|GNU Screen with 16 colors and BCE, + use=ibm+16color, use=screen-bce, + +screen-16color-bce-s|GNU Screen with 16 colors using BCE and status line, + bce, use=ibm+16color, use=screen-s, + +# ====================================================================== +# Entries for GNU Screen 4.02 with --enable-colors256. + +screen-256color|GNU Screen with 256 colors, + use=xterm+256setaf, use=screen4, + +screen-256color-s|GNU Screen with 256 colors and status line, + use=xterm+256setaf, use=screen-s, + +screen-256color-bce|GNU Screen with 256 colors and BCE, + bce, use=xterm+256setaf, use=screen-bce, + +screen-256color-bce-s|GNU Screen with 256 colors using BCE and status line, + bce, use=xterm+256setaf, use=screen-s, + +screen.xterm-256color|GNU Screen with xterm using 256 colors, + use=xterm+256setaf, use=screen.xterm-new, + +screen.konsole-256color|GNU Screen with konsole using 256 colors, + use=xterm+256setaf, use=screen.konsole, + +screen.vte-256color|GNU Screen with vte using 256 colors, + use=xterm+256setaf, use=screen.vte, + +screen.putty-256color|GNU Screen with putty using 256 colors, + use=xterm+256setaf, use=screen.putty, + +screen.mlterm-256color|GNU Screen with mlterm using 256 colors, + use=xterm+256setaf, use=screen.mlterm, + +# ====================================================================== + +# Read the fine manpage: +# 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 +# no such entry exists, screen tries "screen" (or "screen-w" +# 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 +# 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@, + +# See explanation before "screen" entry. Cancel italics so that applications +# do not assume screen supports the feature. Add this tweak to entries which +# extend screen for terminals which do support italics. +screen+italics|screen cannot support italics, + ritm@, sitm@, +# +# Here are a few customized entries which are useful -TD +# +# Notes: +# (a) screen does not support invis. +# (b) screen's implementation of bw is incorrect according to tack. +# (c) screen appears to hardcode the strings for khome/kend, making it +# necessary to override the "use=" clause's values (screen+fkeys). +# (d) screen sets $TERMCAP to a termcap-formatted copy of the 'screen' entry, +# which is NOT the same as the terminfo screen.<term>. +# (e) when screen finds one of these customized entries, it sets $TERM to +# match. Hence, no "screen.xterm" entry is provided, since that would +# create heartburn for people running remote xterm's. +# (f) screen does not support rep. +# +# xterm (-xfree86 or -r6) does not normally support kIC, kNXT and kPRV +# since the default translations override the built-in keycode +# translation. They are suppressed here to show what is tested by tack. +screen.xterm-xfree86|screen.xterm-new|screen customized for modern xterm, + bce@, bw, + invis@, kIC@, kNXT@, kPRV@, meml@, memu@, rep@, + 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%;m, + E3@, use=screen+italics, use=screen+fkeys, + use=xterm+x11mouse, use=xterm-new, +#:screen.xterm|screen for modern xterm, +#: use=screen.xterm-new, +# xterm-r6 does not really support khome/kend unless it is propped up by +# the translations resource. +screen.xterm-r6|screen customized for X11R6 xterm, + bw, use=xterm+x11mouse, use=screen+fkeys, use=xterm-r6, +# Color applications running in screen and TeraTerm do not play well together +# on Solaris because Sun's curses implementation gets confused. +screen.teraterm|disable ncv in teraterm, + ncv#127, + 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, + use=screen+fkeys, use=xterm+x11mouse, use=screen4, +# Other terminals +screen.rxvt|screen in rxvt, + bw, XT, + cvvis@, flash@, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, + kcuu1=\EOA, use=screen+fkeys, use=vt100+enq, + use=rxvt+pcfkeys, use=xterm+x11mouse, use=vt220+keypad, + use=screen4, +screen.Eterm|screen in Eterm, + use=xterm+x11mouse, use=screen+fkeys, use=Eterm, +screen.mrxvt|screen in mrxvt, + use=xterm+x11mouse, use=screen+fkeys, use=mrxvt, +screen.vte|screen in any VTE-based terminal, + use=xterm+x11mouse, use=screen+italics, + use=screen+fkeys, use=vte, +screen.gnome|screen in GNOME Terminal, + use=xterm+x11mouse, use=screen+italics, + use=screen+fkeys, use=gnome, +screen.konsole|screen in KDE console window, + use=xterm+x11mouse, use=screen+italics, + use=screen+fkeys, use=konsole, +# fix the backspace key +screen.linux|screen.linux-s|screen in Linux console, + bw, + kbs=^?, kcbt@, use=linux+sfkeys, use=xterm+x11mouse, + use=screen+fkeys, use=screen4, +screen.mlterm|screen in mlterm, + use=xterm+x11mouse, use=screen+fkeys, use=mlterm, +screen.putty|screen in putty, + use=xterm+x11mouse, use=screen+fkeys, use=putty, + +# The default "screen" entry is reasonably portable, but not optimal for the +# most widely-used terminal emulators. The "bce" capability is supported in +# screen since 3.9.13, and when used, will require fewer characters to be sent +# to the terminal for updates. +# +# If you are using only terminals which support bce, then you can use this +# feature in your screen configuration. +# +# Adding these lines to your ".screenrc" file will allow using these customized +# entries: +# term screen-bce +# bce on +# defbce on +screen-bce.xterm-new|screen optimized for modern xterm, + bce, + ech@, use=screen+italics, use=screen.xterm-new, +screen-bce.rxvt|screen optimized for rxvt, + bce, + ech@, use=screen.rxvt, +screen-bce.Eterm|screen optimized for Eterm, + bce, + ech@, use=screen.Eterm, +screen-bce.mrxvt|screen optimized for mrxvt, + bce, + ech@, use=screen.mrxvt, +screen-bce.gnome|screen optimized for GNOME-Terminal, + bce, + ech@, use=screen+italics, use=screen.gnome, +screen-bce.konsole|screen optimized for KDE console window, + bce, + ech@, use=screen+italics, use=screen.konsole, +screen-bce.linux|screen optimized for Linux console, + bce, + ech@, use=screen.linux, + +screen-w|VT 100/ANSI X3.64 virtual terminal with 132 cols, + cols#132, use=screen4, + +screen2|old VT 100/ANSI X3.64 virtual terminal, + cols#80, it#8, lines#24, + cbt=\E[Z, clear=\E[2J\E[H, cr=\r, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL, + il1=\E[L, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, 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, rmir=\E[4l, rmso=\E[23m, + rmul=\E[24m, rs1=\Ec, sc=\E7, sgr0=\E[m, smir=\E[4h, + smso=\E[3m, smul=\E[4m, tbc=\E[3g, +# (screen3: removed unknown ":xv:LP:G0:" -- esr) +screen3|older VT 100/ANSI X3.64 virtual terminal, + km, mir, msgr, + cols#80, it#8, lines#24, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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=\EM, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, 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, rc=\E8, rev=\E[7m, ri=\EM, + rmir=\E[4l, rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs1=\Ec, + sc=\E7, sgr0=\E[m, smir=\E[4h, smkx=\E=, smso=\E[3m, + smul=\E[4m, tbc=\E[3g, + +# 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 +# release is 4.6.2 (October 2017). +screen4|VT 100/ANSI X3.64 virtual terminal, + use=ecma+index, use=screen, + +# As of March 2019, screen 5.0 has not been released. +# +# However, +# +# 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. +# +# 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, + 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=screen4, + +#### Tmux + +# tmux is mostly compatible with screen, but has support for italics, and some +# of the xterm cursor bits. +# +# However, unlike screen, tmux has no provision for using derived terminal +# descriptions. When screen starts, it looks for a suitable "inner" terminal +# such as "screen.$TERM" to correspond to the outer terminal's quirks. The +# various entries such as screen.xterm-new provide a way to more closely +# match the terminal. +tmux|tmux terminal multiplexer, + invis=\E[8m, kbs=^?, rmso=\E[27m, + 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, + use=ecma+italics, use=ecma+strikeout, use=xterm+edit, + use=xterm+pcfkeys, use=xterm+sl, use=xterm+tmux, + use=screen, + +tmux-256color|tmux with 256 colors, + use=xterm+256setaf, use=tmux, + +tmux-direct|tmux with direct-color indexing, + setal=\E[%?%p1%{8}%<%t5%p1%d%e58:2::%p1%{65536}%/%d:%p1 + %{256}%/%{255}%&%d:%p1%{255}%&%d%;m, + use=xterm+direct, use=tmux, + +#### Dvtm + +# dvtwm 0.15 +# http://www.brain-dump.org/projects/dvtm/ +# +# + This uses ncurses to manage the display, including support for italics and +# default-colors. +# + However, default-colors are incomplete: do not set bce. +# + It does not implement flash (since no \e[?5h) +# + Do not set XT: dvtm knows about OSC 0 and 2, but not 1. +# Oddly enough, if $TERM contains "linux", it attempts to set the title. +# + Some of the program is cut/paste from rxvt-unicode, e.g., the ACS table. +# + The built-in table of function-keys (based on rxvt) is incomplete (ends +# with kf22). +# + It also omits the shifted cursor- and editing-keypad keys. +# However, it is confused by xterm's shifted cursor- and editing-keypad keys +# (and passes those through without interpretation) +# and may simply pass-through rxvt's, making it appear to work. +# In other cases such as kf23 and up, no pass-through is done. +# + Most of the mode-settings in the initialization/reset strings are not +# implemented; dvtm copies its description from rxvt. +dvtm|dynamic virtual terminal manager, + am, eo, mir, msgr, xenl, AX, + colors#8, cols#80, it#8, lines#24, ncv@, pairs#64, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)0, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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, + 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, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, op=\E[39;49m, + rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8, + rmir=\E[4l, 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, + s0ds=\E(B, s1ds=\E(0, sc=\E7, 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%;m%? + %p9%t\016%e\017%;, + sgr0=\E[m\017, smacs=^N, smcup=\E7\E[?47h, smir=\E[4h, + smso=\E[7m, smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, + use=vt220+vtedit, use=vt220+cvis, use=ecma+italics, + +dvtm-256color|dynamic virtual terminal manager with 256 colors, + colors#0x100, pairs#0x10000, + 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, + use=dvtm, + +#### NCSA Telnet + +# Francesco Potorti <F.Potorti@cnuce.cnr.it>: +# NCSA telnet is one of the most used telnet clients for the Macintosh. It has +# been maintained until recently by the National Center for Supercomputer +# Applications, and it is feature rich, stable and free. It can be downloaded +# from www.ncsa.edu. This terminfo description file is based on xterm-vt220, +# xterm+sl, and the docs at NCSA. It works well. +# +# NCSA Telnet 2.6 for Macintosh in vt220 8-bit emulation mode +# The terminal options should be set as follows: +# Xterm sequences ON +# use VT wrap mode ON +# use Emacs arrow keys OFF +# CTRL-COMND is Emacs meta ON +# 8 bit mode ON +# answerback string: "ncsa-vt220-8" +# setup keys: all disabled +# +# Application mode is not used. +# +# Other special mappings: +# Apple VT220 +# HELP Find +# HOME Insert here +# PAGEUP Remove +# DEL Select +# END Prev Screen +# PAGEDOWN Next Screen +# +# Though it supports ANSI color, NCSA Telnet uses color to represent blinking +# text. +# +# The status-line manipulation is a mapping of the xterm-compatible control +# sequences for setting the window-title. So you must use tsl and fsl in +# pairs, since the latter ends the string that is loaded to the window-title. +ncsa-m|ncsa-vt220-8|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, + am, km, mir, msgr, xenl, + acsc=``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, 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, + il=\E[%p1%dL, il1=\E[L, ind=\n$<150*>, + is2=\E7\E[r\E[m\E[?7h\E[?1;4;6l\E[4l\E8\E>, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\E[4~, kend=\E[5~, kf1=\E[17~, kf10=\E[28~, + kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, kf14=\E[33~, + kf15=\E[34~, kf2=\E[18, kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, + 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, + rc=\E8, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EM, + rmacs=\E(B, rmam=\E[?7l, rmcup=\E[2J\E8, rmir=\E[4l, + rmso=\E[27m, rmul=\E[24m, + rs2=\E7\E[r\E8\E[m\E[?7h\E[?1;4;6l\E[4l\E>, sc=\E7, + 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, smacs=\E(0, smam=\E[?7h, smcup=\E7, + smir=\E[4h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + u8=\E[?62;1;6c, use=vt220+cvis, use=xterm+sl, + use=ansi+enq, +ncsa|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, + use=ncsa-m, use=klone+color, +ncsa-ns|NCSA Telnet 2.7 for Macintosh in vt220-8 mode, + hs@, + dsl@, fsl@, tsl@, use=ncsa, +ncsa-m-ns|NCSA Telnet 2.6 for Macintosh in vt220-8 mode, + hs@, + dsl@, fsl@, tsl@, use=ncsa-m, +# alternate -TD: +# The documented function-key mapping refers to the Apple Extended Keyboard +# (e.g., NCSA Telnet's F1 corresponds to a VT220 F6). We use the VT220-style +# codes, however, since the numeric keypad (VT100) PF1-PF4 are available on +# 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, + +#### Pilot Pro Palm-Top +# +# Termcap for Top Gun Telnet and SSH on the Palm Pilot. +# https://web.archive.org/web/20051103015726/http://www.ai/~iang/TGssh/ +pilot|tgtelnet|Top Gun Telnet on the Palm Pilot Professional, + OTbs, am, xenl, + cols#39, lines#16, + bel=^G, clear=\Ec, cr=\r, cub1=^H, cud1=\n, + cup=\Em%p1%{32}%+%c%p2%{32}%+%c, home=\Em\s\s, ht=^I, + ind=\n, kbs=^H, kcub1=^H, kcud1=\n, knp=^L, kpp=^K, nel=\Em~\s, + rmso=\EB, smso=\Eb, + +# From: Federico Bianchi <bianchi@www.arte.unipi.it> +# These entries are for the Embeddable Linux Kernel System (ELKS) +# project - an heavily stripped down Linux to be run on 16 bit +# boxes or, eventually, to be used in embedded systems - and have been +# adapted from the stock ELKS termcap. The project itself looks stalled, +# and the latest improvements I know of date back to March 2000. +# +# To cope with the ELKS dumb console I added an "elks-glasstty" entry; +# as an added bonus, this deals with all the capabilities common to +# both VT52 and ANSI (or, eventually, "special") modes. + +elks-glasstty|ELKS glass-TTY capabilities, + OTbs, am, + cols#80, it#8, lines#25, + bel=^G, cr=\r, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, + nel=\r\n, + +elks-vt52|ELKS vt52 console, + clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\EK, + home=\EH, use=elks-glasstty, + +elks-ansi|ELKS ANSI console, + clear=\E[H\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, + rmso=\E[m, smso=\E[7m, 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. + +elks|default ELKS console, + use=elks-vt52, + +# Project SIBO (for Psion 3 palmtops) console is identical to the ELKS +# one but in screen size + +sibo|ELKS SIBO console, + cols#61, it#8, lines#20, use=elks-vt52, + +######## COMMERCIAL WORKSTATION CONSOLES +# + +#### Alpha consoles +# + +# This is from the OSF/1 Release 1.0 termcap file +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, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, + nel=\r\n, rev=\E[7m, rmso=\E[m, sgr0=\E[m, smso=\E[7m, + +#### Sun consoles +# + +# :is1: resets scrolling region in case a previous user had used "tset vt100" +oldsun|Sun Microsystems Workstation console, + OTbs, am, km, mir, msgr, + cols#80, it#8, lines#34, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, + dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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, +# From: Alexander Lukyanov <lav@video.yars.free.net>, 14 Nov 1995 +# <lines> capability later corrected by J.T. Conklin <jtc@cygnus.com> +# SGR 1, 4 aren't supported - removed bold/underline (T.Dickey 17 Jan 1998) +sun-il|Sun Microsystems console with working insert-line, + am, km, msgr, + cols#80, lines#34, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, + dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, + kb2=\E[218z, kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kdch1=^?, kend=\E[220z, kf1=\E[224z, + kf10=\E[233z, kf11=\E[234z, kf12=\E[235z, kf2=\E[225z, + 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, +# On some versions of CGSIX framebuffer firmware (SparcStation 5), <il1>/<il> +# flake out on the last line. Unfortunately, without them the terminal has no +# way to scroll. +sun-cgsix|sun-ss5|Sun SparcStation 5 console, + il@, il1@, use=sun-il, +# If you are using an SS5, change the sun definition to use sun-ss5. +sun|sun1|sun2|Sun Microsystems Inc. workstation console, + use=sun-il, + +sun+sl|Sun Workstation window status line, + hs, + dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, + +# From: <john@ucbrenoir> Tue Sep 24 13:14:44 1985 +sun-s|Sun Microsystems Workstation window with status line, + hs, + dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun, +sun-e-s|sun-s-e|Sun Microsystems Workstation with status hacked for emacs, + hs, + dsl=\E]l\E\\, fsl=\E\\, tsl=\E]l, use=sun-e, +sun-48|Sun 48-line window, + cols#80, lines#48, use=sun, +sun-34|Sun 34-line window, + cols#80, lines#34, use=sun, +sun-24|Sun 24-line window, + cols#80, lines#24, use=sun, +sun-17|Sun 17-line window, + cols#80, lines#17, use=sun, +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, +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, + lines#35, + rmcup=\E[>4h, smcup=\E[>4l, use=sun, +sun-type4|Sun Workstation console with type 4 keyboard, + kcub1=\E[217z, kcud1=\E[221z, kcuf1=\E[219z, + 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 +# 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. +# 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. +# +# Since the documentation and terminfo do not agree, see also current code at +# https://web.archive.org/web/20091231042744/http://src.opensolaris.org/source/xref/onnv/onnv-gate/usr/src/uts/common/io/tem_safe.c +# +# That (actually a different driver which "supports" sun-color) also supports +# these features: +# vpa=\E[%i%p1%dd +# hpa=\E[%i%p1%d` +# cbt=\E[Z +# dim=\E[2m +# blink=\E[5m +# It supports bold, but not underline -TD (2009-09-19) +sun-color|Sun Microsystems Workstation console with color support (IA systems), + colors#8, ncv#3, pairs#64, + bold=\E[1m, cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, + cuu=\E[%p1%dA, home=\E[H, op=\E[0m, rs2=\E[s, + 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} + %=%t3%e%p1%d%;m, + sgr=\E[0%?%p6%t;1%;%?%p1%p3%|%t;7%;m, sgr0=\E[m, + smso=\E[7m, use=sun, + +#### Iris consoles +# + +# (wsiris: this had extension capabilities +# :HS=\E7F2:HE=\E7F7:\ +# :CT#2:CZ=*Bblack,red,green,yellow,blue,magenta,cyan,*Fwhite: +# See the note on Iris extensions near the end of this file. +# Finally, removed suboptimal <clear>=\EH\EJ and added <cud1> & +# <flash> from BRL -- esr) +wsiris|iris40|IRIS emulating a 40 line Visual 50 (approximately), + OTbs, OTnc, OTpt, am, + OTkn#3, cols#80, it#8, lines#40, + OTnl=\EB, bel=^G, clear=\Ev, cnorm=\E>, cub1=^H, cud1=\EB, + cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, + cvvis=\E;, dim=\E7F2, dl1=\EM, ed=\EJ, el=\EK, + flash=\E7F4\E7B1\013\E7F7\E7B0, home=\EH, ht=^I, il1=\EL, + ind=\n, is2=\E7B0\E7F7\E7C2\E7R3, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, kf0=\E0, kf1=\E1, kf2=\E2, kf3=\E3, + kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, kf9=\E9, ri=\EI, + rmso=\E0@, rmul=\E7R3\E0@, sgr0=\E7F7, smso=\E9P, + smul=\E7R2\E9P, + +#### NeWS consoles +# +# Console terminal windows under the NeWS (Sun's Display Postscript windowing +# environment). Note: these have nothing to do with Sony's News workstation +# line. +# + +# Entry for NeWS's psterm from Eric Messick & Hugh Daniel +# (psterm: unknown ":sl=\EOl:el=\ENl:" removed -- esr) +psterm|psterm-basic|NeWS psterm-80x34, + OTbs, am, hs, km, ul, + cols#80, it#8, lines#34, + blink=\EOb, bold=\EOd, clear=^L, csr=\EE%p1%d;%p2%d;, + cub1=\ET, cud1=\EP, cuf1=\EV, cup=\E%p1%d;%p2%d;, cuu1=\EY, + dch1=\EF, dl1=\EK, ed=\EB, el=\EC, flash=\EZ, fsl=\ENl, + home=\ER, ht=^I, il1=\EA, ind=\EW, is1=\EN*, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ll=\EU, rc=^\, rev=\EOr, + ri=\EX, rmcup=\ENt, rmir=\ENi, rmso=\ENo, rmul=\ENu, sc=^], + sgr0=\EN*, smcup=\EOt, smir=\EOi, smso=\EOo, smul=\EOu, + tsl=\EOl, +psterm-96x48|NeWS psterm 96x48, + cols#96, lines#48, use=psterm, +psterm-90x28|NeWS psterm 90x28, + cols#90, lines#28, use=psterm, +psterm-80x24|NeWS psterm 80x24, + cols#80, lines#24, use=psterm, +# This is a faster termcap for psterm. Warning: if you use this termcap, +# some control characters you type will do strange things to the screen. +# (psterm-fast: unknown ":sl=^Ol:el=^Nl:" -- esr) +psterm-fast|NeWS psterm fast version (flaky ctrl chars), + OTbs, am, hs, km, ul, + cols#80, it#8, lines#34, + blink=^Ob, bold=^Od, clear=^L, csr=\005%p1%d;%p2%d;, + cub1=^T, cud1=^P, cuf1=^V, cup=\004%p1%d;%p2%d;, cuu1=^Y, + dch1=^F, dl1=^K, ed=^B, el=^C, flash=^Z, fsl=^Nl, home=^R, ht=^I, + il1=^A, ind=^W, is1=^N*, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, ll=^U, rc=^\, rev=^Or, ri=^X, rmcup=^Nt, rmir=^Ni, + rmso=^No, rmul=^Nu, sc=^], sgr0=^N*, smcup=^Ot, smir=^Oi, + smso=^Oo, smul=^Ou, tsl=^Ol, + +#### NeXT consoles +# +# Use `glasstty' for the Workspace application +# + +# From: Dave Wetzel <dave@turbocat.snafu.de> 22 Dec 1995 +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, +nextshell|NeXT Shell application, + am, + cols#80, + bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, kbs=^H, kcub1=^H, + kcud1=\n, nel=\r\n, + +#### Sony NEWS workstations +# + +# (news-unk: this had :KB=news: -- esr) +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, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, + ed=\E[J, el=\E[K, home=\E[H, ht=^I, + if=/usr/share/tabset/vt100, il=\E[%p1%dL, il1=\E[L, + 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, rc=\E8, rev=\E[7m, ri=\EM, + rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[r, sc=\E7, + sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, +# +# (news-29: this had :TY=ascii: --esr) +news-29|Sony NEWS vt100 emulator with 29 lines, + lines#29, use=news-unk, +# (news-29-euc: this had :TY=euc: --esr) +news-29-euc|Sony NEWS vt100 emulator with 29 lines and EUC, + use=news-29, +# (news-29-sjis: this had :TY=sjis: --esr) +news-29-sjis|Sony NEWS vt100 emulator with 29 lines and SJIS, + use=news-29, +# +# (news-33: this had :TY=ascii: --esr) +news-33|Sony NEWS vt100 with 33 lines, + lines#33, use=news-unk, +# (news-33-euc: this had :TY=euc: --esr) +news-33-euc|Sony NEWS vt100 with 33 lines and EUC, + use=news-33, +# (news-33-sjis: this had :TY=sjis: --esr) +news-33-sjis|Sony NEWS vt100 with 33 lines and SJIS, + use=news-33, +# +# (news-42: this had :TY=ascii: --esr) +news-42|Sony NEWS vt100 with 42 lines, + lines#42, use=news-unk, +# (news-42-euc: this had :TY=euc: --esr) +news-42-euc|Sony NEWS vt100 with 42 lines and EUC, + use=news-42, +# (news-42-sjis: this had :TY=sjis: --esr) +news-42-sjis|Sony NEWS vt100 with 42 lines and SJIS, + use=news-42, +# +# NEWS-OS old termcap entry +# +# (news-old-unk: this had :KB=news:TY=sjis: --esr) +news-old-unk|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, csr=\E[%i%p1%d;%p2%dr, 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, rc=\E8, rev=\E[7m, ri=\EM, + rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, + sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, +# +# (nwp512: this had :DE=^H:, which I think means <OTbs> --esr) +nwp512|news|nwp514|news40|vt100-bm|old Sony vt100 emulator 40 lines, + OTbs, + lines#40, + is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40 + r\E8, + use=news-old-unk, +# +# (nwp512-a: this had :TY=ascii: and the alias vt100-bm --esr) +nwp512-a|nwp514-a|news-a|news42|news40-a|Sony vt100 emulator 42 line, + lines#42, + is2=\E[?7h\E[?1l\E[?3l\E7\E[1;42r\E8, + use=news-old-unk, +# +# (nwp-512-o: this had :KB=nwp410:DE=^H: I interpret the latter as <OTbs>. --esr) +nwp512-o|nwp514-o|news-o|news40-o|vt100-bm-o|Sony vt100 emulator 40 lines, + OTbs, + lines#40, + is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;40 + r\E8, + use=news-old-unk, +# +# (nwp513: this had :DE=^H: and the alias vt100-bm --esr) +nwp513|nwp518|nwe501|newscbm|news31|Sony vt100 emulator 33 lines, + OTbs, + lines#31, + is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31 + r\E8, + use=news-old-unk, +# +# (nwp513-a: this had :TY=ascii: and :DE=^H:, which I interpret as <OTbs>; --esr) +# also the alias vt100-bm. +nwp513-a|nwp518-a|nwe501-a|nwp251-a|newscbm-a|news31-a|newscbm33|news33|old Sony vt100 emulator 33 lines, + OTbs, + lines#33, + is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;33 + r\E8, + use=news-old-unk, +# +# (nwp513-o: had :DE=^H:, I think that's <OTbs>; also the alias vt100-bm --esr) +nwp513-o|nwp518-o|nwe501-o|nwp251-o|newscbm-o|news31-o|old Sony vt100 emulator 33 lines, + OTbs, + lines#31, + is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;31 + r\E8, + use=news-old-unk, +# +# (news28: this had :DE=^H:, I think that's <OTbs>, and :KB=nws1200: --esr) +news28|Sony vt100 emulator 28 lines, + OTbs, + lines#28, + is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;28 + r\E8, + use=news-old-unk, +# +# (news29: this had :TY=ascii:KB=nws1200:\ --esr) +news29|news28-a|Sony vt100 emulator 29 lines, + lines#29, + is2=\E7\E[r\E8\EE\EE\EE\EM\EM\EM\E[?7h\E[?1l\E[?3l\E7\E[1;29 + r\E8, + use=news-old-unk, +# +# (news511: this had :TY=sjis: --esr) +nwp511|nwp-511|nwp-511 vt100, + OTbs, OTpt, am, xenl, + cols#80, lines#24, + clear=\E[;H\E[2J$<20/>, cub1=\E[D, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A$<2/>, dl1=\E[M, + 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/>, + rs2=\E7\E[r\E8\E[?5l\E[?1l\E>\E[?7h\E[?8h, + smso=\E[7m$<2/>, smul=\E[4m$<2/>, +# (news517: this had :TY=sjis:. --esr) +nwp517|nwp-517|nwp-517 vt200 80 cols 30 rows, + eslok, hs, + cols#80, lines#30, + OTi2=\E[2$~\n, dsl=\E[1$~, fsl=\E[0$}, + is2=\E7\E[r\E8\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, + tsl=\E[1$}\E[;%df, 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$}, + 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, + +#### Common Desktop Environment +# + +# This ships with Sun's CDE in Solaris 2.5 +# Corrected Sun Aug 9 1998 by Alexander V. Lukyanov <lav@video.yars.free.net> +dtterm|CDE desktop terminal, + am, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, lm#0, ncv@, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, home=\E[H, + ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, + ind=\ED, invis=\E[8m, 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, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, + rmam=\E[?7l, rmir=\E[4l, rmso=\E[22;27m, rmul=\E[24m, + sc=\E7, + 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=vt220+vtedit, + use=vt220+cvis, use=ecma+color, + +######## Non-Unix Consoles +# + +#### EMX termcap.dat compatibility modes +# +# Also (possibly only EMX, so we don't put it in ansi.sys, etc): set the +# no_color_video to inform the application that standout(1), underline(2) +# reverse(4) and invisible(64) don't work with color. +emx-base|DOS special keys, + bce, bw, + it#8, ncv#71, + bel=^G, use=ansi.sys, + +# Except for the "-emx" suffixes, these are as distributed with EMX 0.9b, +# a Unix-style environment used on OS/2. (Note that the suffix makes some +# names longer than 14 characters, the nominal maximum). +# +# Removed: rmacs=\E[10m, smacs=\E[11m, because OS/2 does not implement acs. +ansi-emx|ANSI.SYS color, + am, bce, eo, mir, msgr, xon, + colors#8, cols#80, it#8, lines#25, pairs#64, + bel=^G, blink=\E[5m, bold=\E[1m, + clear=\E[1;33;44m\E[H\E[J, cr=\r, cub1=^H, cud1=\n, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + dch=\E[%p1%dp, ed=\E[J, el=\E[K, + flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH, + ich=\E[%p1%d@, ich1=\E[@, ind=\n, kb2=\E[G, kbs=^H, kf0=\0D, + kll=\0O, kspd=^Z, nel=\r\n, rev=\E[5;37;41m, rmir=\E[4l, + rmpch=\E[10m, rmso=\E[0;44m\E[1;33m, + rmul=\E[0;44m\E[1;33m, rs1=\Ec, setab=\E[4%p1%dm, + setaf=\E[3%p1%dm, sgr0=\E[0m\E[1;33;44m, smir=\E[4h, + smpch=\E[11m, smso=\E[0;31;47m, smul=\E[1;31;44m, + tbc=\E[3g, u8=\E[?6c, u9=\E[c, use=vt220+cvis, + use=emx-base, +# nice colors for Emacs (white on blue, mode line white on cyan) +ansi-color-2-emx|ANSI.SYS color 2, + clear=\E[0;37;44m\E[H\E[J, rev=\E[1;37;46m, + rmso=\E[0;37;44m, rmul=\E[0;37;44m, rs1=\Ec, + setaf=\E[3%p1%dm, sgr0=\E[0;37;44m, smso=\E[1;37;46m, + smul=\E[1;36;44m, use=ansi-emx, +# nice colors for Emacs (white on black, mode line black on cyan) +ansi-color-3-emx|ANSI.SYS color 3, + clear=\E[0;37;40m\E[H\E[J, rev=\E[1;37;46m, + rmso=\E[0;37;40m, rmul=\E[0;37;40m, rs1=\Ec, + setaf=\E[3%p1%dm, sgr0=\E[0;10m, smso=\E[1;37;46m, + smul=\E[0;36;40m, use=ansi-emx, +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>, cub1=\E[D, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, + +#### Cygwin + +# Use this for cygwin32 (tested with beta 19.1) +# underline is colored bright magenta +# shifted kf1-kf12 are kf11-kf22 +cygwinB19|ANSI emulation for cygwin32, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, rmam@, smam@, use=vt220+pcedit, + use=ansi.sys, + +# Use this for cygwin (tested with version 1.1.0). +# I've combined pcansi and linux. Some values of course were different and +# I've indicated which of these were and which I used. +# Cheers, earnie_boyd@yahoo.com +# several changes based on running with tack and comparing with older entry -TD +# more changes from csw: +# add cbt [backtab] +# remove eo [erase overstrike with blank] +# change clear was \E[H\E[J now \E[2J (faster?) +# remove cols +# remove lines +# remove ncv#3 [colors collide with highlights, bitmask] not applicable +# to MSDOS box? +# add cub [cursor back param] +# add cuf [cursor forward param] +# add cuu [cursor up param] +# add cud [cursor down param] +# add hs [has status line] +# add fsl [return from status line] +# add tsl [go to status line] +# add smacs [Start alt charset] (not sure if this works) +# add rmacs [End alt charset] (ditto) +# add smcup [enter_ca_mode] (save console; thanks Corinna) +# add rmcup [exit_ca_mode] (restore console; thanks Corinna) +# add kb2 [center of keypad] +# add u8 [user string 8] \E[?6c +# add el [clear to end of line] \E[K +# Notes: +# cnorm [make cursor normal] not implemented +# flash [flash] not implemented +# blink [blink] not implemented very usefully in cygwin? \E[5m +# dim [dim] not implemented very usefully in cygwin? \E[2m +# cub1 [cursor back 1] typically \E[D, but ^H is faster? +# kNXT [shifted next key] not implemented +# kPRV [shifted prev key] not implemented +# khome [home key] really is \E[1~ NOT \E[H +# tbc [clear tab stops] not implemented +# xenl [newline ignored after 80 cols] messes up last line? Ehud Karni +# smpch [Start PC charset] is \E[11m, same as smacs +# rmpch [End PC charset] is \E[10m, same as rmacs +# mir [move in insert mode] fails in tack? +# bce [back color erase] causes problems with change background color? +# cvvis [make cursor very visible] causes a stackdump when testing with +# testcurs using the output option? \E[?25h\E[?8c +# civis [make cursor invisible] causes everything to stackdump? \E[?25l\E[?1c +# ech [erase characters param] broken \E[%p1%dX +# kcbt [back-tab key] not implemented in cygwin? \E[Z +# +# 2005/11/12 -TD +# Remove cbt since it does not work in current cygwin +# Add 'mir' and 'in' flags based on tack +cygwin|ANSI emulation for Cygwin, + am, hs, mir, msgr, xon, + 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, clear=\E[H\E[J, cr=\r, cub=\E[%p1%dD, + cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, + cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, fsl=^G, home=\E[H, + hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kb2=\E[G, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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~, kspd=^Z, nel=\r\n, + op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, rmacs=\E[10m, + rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, 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, + 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, smacs=\E[11m, smcup=\E7\E[?47h, + smir=\E[4h, smpch=\E[11m, smso=\E[7m, smul=\E[4m, tsl=\E];, + vpa=\E[%i%p1%dd, use=vt220+pcedit, use=vt102+enq, + +# I've supplied this so that you can help test new values and add other +# features. Cheers, earnie_boyd@yahoo.com. +# +# Some features are from pcansi. The op value is from linux. Function-keys +# are from linux. These have been tested not to cause problems. xenl was in +# this list, but DOES cause problems so it has been removed +cygwinDBG|Debug Version for Cygwin, + am, eo, mir, msgr, xon, + colors#8, cols#80, it#8, lines#24, ncv#3, 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, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, + el1=\E[1K, flash=\E[?5h$<200/>\E[?5l, home=\E[H, + hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, kNXT=\E[6$, + kPRV=\E[5$, kb2=\E[G, kbs=^H, kcbt=\E[Z, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, + kspd=^Z, nel=\r\n, op=\E[39;49m, rc=\E8, rev=\E[7m, ri=\EM, + rmacs=\E[10m, rmir=\E[4l, rmso=\E[m, rmul=\E[m, + 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%;%?%p4%t;5%;%?%p5 + %t;2%;%?%p6%t;1%;%?%p7%t;8%;%?%p9%t;12%;m, + sgr0=\E[0;10m, smacs=\E[11m, smir=\E[4h, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, vpa=\E[%i%p1%dd, use=vt220+pcedit, + use=vt220+cvis, use=vt102+enq, + +#### DJGPP + +# Key definitions: +# The encodings for unshifted arrow keys, F1-F12, Home, Insert, etc. match the +# encodings used by other x86 environments. All others are invented for DJGPP. +# Oddly enough, while several combinations of modifiers are tabulated, there is +# none for shifted cursor keys. +# +# F1 \E[[A +# F2 \E[[B +# F3 \E[[C +# F4 \E[[D +# F5 \E[[E +# F6 \E[17~ +# F7 \E[18~ +# F8 \E[19~ +# F9 \E[20~ +# F10 \E[21~ +# F11 \E[23~ +# F12 \E[24~ +# +# Delete \E[3~ +# Down Arrow \E[B +# End \E[4~ +# Home \E[1~ +# Insert \E[2~ +# Left Arrow \E[D +# Page Down \E[6~ +# Page Up \E[5~ +# Right Arrow \E[C +# Up Arrow \E[A +# +# Shift-F1 \E[25~ +# Shift-F2 \E[26~ +# Shift-F3 \E[27~ +# Shift-F4 \E[28~ +# Shift-F5 \E[29~ +# Shift-F6 \E[30~ +# Shift-F7 \E[31~ +# Shift-F8 \E[32~ +# Shift-F9 \E[33~ +# Shift-F10 \E[34~ +# Shift-F11 \E[35~ +# Shift-F12 \E[36~ +# +# Ctrl-F1 \E[47~ +# Ctrl-F2 \E[48~ +# Ctrl-F3 \E[49~ +# Ctrl-F4 \E[50~ +# Ctrl-F5 \E[51~ +# Ctrl-F6 \E[52~ +# Ctrl-F7 \E[53~ +# Ctrl-F8 \E[54~ +# Ctrl-F9 \E[55~ +# Ctrl-F10 \E[56~ +# Ctrl-F11 \E[57~ +# Ctrl-F12 \E[58~ +# +# Ctrl-Delete \E[43~ +# Ctrl-Down Arrow \E[38~ +# Ctrl-End \E[44~ +# Ctrl-Home \E[41~ +# Ctrl-Insert \E[42~ +# Ctrl-Left Arrow \E[39~ +# Ctrl-Page Down \E[46~ +# Ctrl-Page Up \E[45~ +# Ctrl-Right Arrow \E[40~ +# Ctrl-Up Arrow \E[37~ +# +# Alt-F1 \E[59~ +# Alt-F2 \E[60~ +# Alt-F3 \E[61~ +# Alt-F4 \E[62~ +# Alt-F5 \E[63~ +# Alt-F6 \E[64~ +# Alt-F7 \E[65~ +# Alt-F8 \E[66~ +# Alt-F9 \E[67~ +# Alt-F10 \E[68~ +# Alt-F11 \E[79~ +# Alt-F12 \E[80~ +# +# Alt-Delete \E[65~ +# Alt-Down Arrow \E[60~ +# Alt-End \E[66~ +# Alt-Home \E[41~ +# Alt-Insert \E[64~ +# Alt-Left Arrow \E[61~ +# Alt-Page Down \E[68~ +# Alt-Page Up \E[67~ +# Alt-Right Arrow \E[62~ +# Alt-Up Arrow \E[59~ +# +# Also: +# 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~ +djgpp|ANSI emulation for DJGPP alpha, + 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, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[1v, + clear=\E[H\E[J, cnorm=\E[v, cr=\r, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, + home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, invis=\E[8m, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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~, nel=\r\n, op=\E[37;40m, + rev=\E[7m, ri=\E[T, rmso=\E[m, 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=vt220+pcedit, use=ecma+index, + +djgpp203|entry for DJGPP 2.03, + OTbs, am, + cols#80, it#8, lines#25, + bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, + kcud1=\n, nel=\r\n, + +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, cub=\E[%p1%dD, + cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, + cuu1=\E[A, cvvis=\E[2v, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, ind=\E[S, invis=\E[8m, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, 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=vt220+pcedit, use=ecma+index, + +#### U/Win + +# This is tested using U/Win's telnet. Scrolling is omitted because it is +# buggy. Another odd bug appears when displaying "~" in alternate character +# set (the emulator spits out error messages). Compare with att6386 -TD +uwin|U/Win 3.2 console, + am, eo, in, msgr, xenl, xon, + colors#8, it#8, ncv#58, pairs#64, + 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, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + cub1=^H, cud1=\n, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, home=\E[H, ht=^I, + hts=\EH, ich=\E[%p1%d@, ich1=\E[@, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, kich1=\E[@, nel=\r\n, op=\E[39;49m, + rc=\E8, rev=\E[7m, rmacs=\E[10m, rmir=\E[4l, rmpch=\E[10m, + rmso=\E[27m, rmul=\E[m, rs1=\Ec\E]R, sc=\E7, + setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0;10m, + smacs=\E[11m, smir=\E[4h, smpch=\E[11m, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, u6=\E[%i%d;%dR, u7=\E[6n, + use=vt220+cvis, + +#### Microsoft (miscellaneous) + +# This entry fits the Windows NT console when the _POSIX_TERM environment +# variable is set to 'on'. While the Windows NT POSIX console is seldom used, +# the Telnet client supplied with both the Windows for WorkGroup 3.11 TCP/IP +# stack and the Win32 (i.e., Windows 95 and Windows NT 3.1 or later) operating +# systems is not, and (surprise!) they match very well. +# +# See: MS Knowledge Base item Q108581, dated 13-MAY-1997, titled "Setting Up +# VI POSIX Editor for Windows NT 3.1". True to Microsoft form, not only +# are the installation instructions a pile of mind-numbing bureaucratese, +# but the termcap entry is actually broken and unusable as given; the :do: +# capability is misspelled "d". +# +# To use this, you need to a bunch of environment variables: +# +# SET _POSIX_TERM=on +# SET TERM=ansi +# SET TERMCAP=location of termcap file in POSIX file format +# which is case-sensitive. +# e.g. SET TERMCAP=//D/RESKIT35/posix/termcap +# SET TMP=//C/TEMP +# +# Important note: setting the TMP environment variable in POSIX style renders +# it incompatible with a lot of other applications, including Visual C++. So +# you should have a separate command window just for vi. All the other +# variables may be permanently set in the Control Panel\System applet. +# +# You can find out more about the restrictions of this facility at +# <https://jeffpar.github.io/kbarchive/kb/108/Q108581/> +# +# From: Federico Bianchi <bianchi@magna.cisid.unipi.it>, 15 Jan 1997 +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, +# From: jew@venus.sunquest.com +# Date: 19 Feb 93 23:41:07 GMT +# Here's a combination of ansi and vt100 termcap +# entries that works nearly perfectly for me +# (Gateway 2000 Handbook and Microsoft Works 3.0): +pcmw|PC running Microsoft Works, + am, xenl, + cols#80, it#8, lines#24, vt#3, + bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, + clear=\E[;H\E[2J$<50/>, cr=\r, cub1=^H, cud1=\n, + 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$<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/>, + 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/>, + +# From: Federico Bianchi +# This is the entry for the OpenNT terminal. +# The ntconsole name is for backward compatibility. +# This is for OpenNT 2.0 and later. +# Later OpenNT was renamed to Interix. +# +# Presently it is distributed by Microsoft as Services For Unix (SFU). +# The 3.5 beta contained ncurses 4.2 (that is header files and executables, +# the documentation dated from 1.9.9e) -TD +# +# For a US keyboard, with 12 function-kecbt=\E[Z, ys, +# kf1-kf12 are unmodifiedcbt=\E[Z, cbt=\E[Z, +# kf13-kf24 use the shift-key +# kf25-kf36 use the left alt-key +# kf37-kf38 use the control-key +# kf49-kf60 use the shift- and control-keys +# The shifted cursor keys send the sequences originally used for kf61-kf64: +# down=\EF+ (kf61) +# up=\EF- (kf62) +# left=\EF^ (unassigned) +# right=\EF$ (kf64) + +interix|opennt|opennt-25|ntconsole|ntconsole-25|OpenNT-term compatible with color, + am, bce, msgr, + cols#80, it#8, lines#25, + 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, cub=\E[%p1%dD, + cub1=\E[D, 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, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, + home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\E[S, + kLFT=\EF\^, kRIT=\EF$, kbs=^H, kcbt=\E[Z, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, + khome=\E[H, 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=ecma+index, use=klone+color, + +opennt-35|ntconsole-35|OpenNT-term35 compatible with color, + lines#35, use=opennt, + +opennt-50|ntconsole-50|OpenNT-term50 compatible with color, + lines#50, use=opennt, + +opennt-60|ntconsole-60|OpenNT-term60 compatible with color, + lines#60, use=opennt, + +opennt-100|ntconsole-100|OpenNT-term100 compatible with color, + lines#100, use=opennt, + +# OpenNT wide terminals +opennt-w|opennt-25-w|ntconsole-w|ntconsole-25-w|OpenNT-term-w compat with color, + cols#125, use=opennt, + +opennt-35-w|ntconsole-35-w|OpenNT-term35-w compatible with color, + lines#35, use=opennt-w, + +opennt-50-w|ntconsole-50-w|OpenNT-term50-w compatible with color, + lines#50, use=opennt-w, + +opennt-60-w|ntconsole-60-w|OpenNT-term60-w compatible with color, + lines#60, use=opennt-w, + +opennt-w-vt|opennt-25-w-vt|ntconsole-w-vt|ntconsole-25-w-vt|OpenNT-term-w-vt compat with color, + cols#132, use=opennt, + +# OpenNT terminals with no smcup/rmcup (names match termcap entries) +interix-nti|opennt-nti|opennt-25-nti|ntconsole-25-nti|OpenNT-nti compatible with color, + rmcup@, smcup@, use=opennt, + +opennt-35-nti|ntconsole-35-nti|OpenNT-term35-nti compatible with color, + lines#35, use=opennt-nti, + +opennt-50-nti|ntconsole-50-nti|OpenNT-term50-nti compatible with color, + lines#50, use=opennt-nti, + +opennt-60-nti|ntconsole-60-nti|OpenNT-term60-nti compatible with color, + lines#60, use=opennt-nti, + +opennt-100-nti|ntconsole-100-nti|OpenNT-term100-nti compatible with color, + lines#100, use=opennt-nti, + +######## COMMON TERMINAL TYPES +# +# This section describes terminal classes and maker brands that are still +# quite common, but have proprietary command sets not blessed by ANSI. +# + +#### Altos +# +# Altos made a moderately successful line of UNIX boxes. In 1990 they were +# bought out by Acer, a major Taiwanese manufacturer of PC-clones. +# Acer has a web site at http://www.acer.com. +# +# Altos descriptions from Ted Mittelstaedt <tedm@agora.rain.com> 4 Sep 1993 +# His comments suggest they were shipped with the system. +# + +# (altos2: had extension capabilities +# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ +# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ +# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ +# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: +# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\ +# :YU=^AQ\r:YD=^AR\r:YR=^AS\r:YL=^AT\r:\ +# :HL=^AP\r:SP=\E[i:\ +# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T:\ +# :LO=\E[0q:LC=\E[5q:LL=\E[6q:\ +# Comparison with the k* capabilities makes it obvious that the c* things are +# shift keys. I have renamed them to keys 32 and up accordingly. Also, +# :sr: was given as a boolean-- esr) +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, + is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kDL=^Am\r, + kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=^AM\r, kel=^AN\r, + kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r, + kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r, + 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, +# (altos3: had extension capabilities +# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ +# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ +# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ +# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: +# :XU=^Aq\r:XD=^Ar\r:XR=^As\r:XL=^At\r:\ +# :HL=^AP\r:SP=\E[i:\ +# :IS=\E[@:DE=\E[P:IL=\E[L:NS=\E[S:PS=\E[T: +altos3|altos5|alt3|alt5|altos-3|altos-5|Altos III or V, + blink=\E[5p, ri=\EM, sgr0=\E[p, use=altos2, +altos4|alt4|altos-4|Altos IV, + use=wy50, +# (altos7: had extension capabilities: +# :GG#0:GI=\EH8:GF=\EH7:\ +# :c0=^A`\r:c1=^Aa\r:c2=^Ab\r:c3=^Ac\r:\ +# :c4=^Ad\r:c5=^Ae\r:c6=^Af\r:c7=^Ag\r:\ +# :c8=^Ah\r:c9=^Ai\r:cA=^Aj\r:cB=^Ak\r:\ +# :cC=^Al\r:cD=^Am\r:cE=^An\r:cF=^Ao\r: +# Comparison with the k* capabilities makes it obvious that the c* things are +# shift keys. I have renamed them to keys 32 and up accordingly. I have +# also made this entry relative to adm12 in order to give it an <sgr>. The +# <invis> imported by use=adm+sgr may work, let me know. -- esr) +altos7|alt7|Altos VII, + am, mir, + cols#80, lines#24, xmc#0, + acsc=j5k3l2m1n8q:t4u9v=w0x6, blink=\EG2, bold=\EGt, + clear=\E+^^, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dim=\EGp, dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, il1=\EE, + ind=\n, invis=\EG1, + is2=\E`:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Eu\E~2, kDL=^Am\r, + kEOL=^An\r, kbs=^H, kcbt=^AK\r, kclr=^AL\r, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=^AM\r, kel=^AN\r, + kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf32=^A`\r, + kf33=^Aa\r, kf34=^Ab\r, kf35=^Ac\r, kf36=^Ad\r, kf37=^Ae\r, + 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=^^, kil1=^AJ\r, kind=^AO\r, + knp=\EK, kpp=\EJ, mc4=\EJ, mc5=\Ed#, nel=\r\n, ri=\Ej, + rmir=\Er, smir=\Eq, use=adm+sgr, +altos7pc|alt7pc|Altos PC VII, + kend=\ET, use=altos7, + +#### Hewlett-Packard (hp) +# +# Hewlett-Packard +# 8000 Foothills Blvd +# Roseville, CA 95747 +# Vox: 1-(916)-785-4363 (Technical response line for VDTs) +# 1-(800)-633-3600 (General customer support) +# +# +# As of March 1998, HP no longer has any terminals in production. +# The 700 series (22, 32, 41, 44, 92, 94, 96, 98) is still being +# supported (they still have parts). So are the 2392a and 2394a. +# See the WORKSTATION CONSOLES section for the 700s. +# + +# Generic HP terminal - this should (hopefully) work on any HP terminal. +hpgeneric|hp|Hewlett-Packard generic terminal, + OTbs, OTpt, am, da, db, mir, xhp, + cols#80, lines#24, lm#0, vt#6, + bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\E&a%p2%dc%p1%dY$<6>, cuu1=\EA, dch1=\EP, dl1=\EM, + ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, + ind=\n, kbs=^H, kcbt=\Ei, rmir=\ER, rmso=\E&d@, rmul=\E&d@, + sgr0=\E&d@, smir=\EQ, smso=\E&dJ, smul=\E&dD, tbc=\E3, + vpa=\E&a%p1%dY, + +hp110|Hewlett-Packard model 110 portable, + lines#16, use=hpgeneric, + +hp+pfk+cr|HP function keys with CR, + kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, + kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, + +hp+pfk-cr|HP function keys w/o CR, + kf1=\Ep, kf2=\Eq, kf3=\Er, kf4=\Es, kf5=\Et, kf6=\Eu, kf7=\Ev, + kf8=\Ew, + +# The hp2621s use the same keys for the arrows and function keys, +# but not separate escape sequences. These definitions allow the +# user to use those keys as arrow keys rather than as function +# keys. +hp+pfk+arrows|HP alternate arrow definitions, + kcub1=\Eu\r, kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1@, + kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, khome=\Ep\r, kind=\Er\r, + kll=\Eq\r, kri=\Es\r, + +hp+arrows|HP arrow definitions, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, + kind=\ES, kll=\EF, kri=\ET, + +# Generic stuff from the HP 262x series +# +hp262x|HP 262x terminals, + xhp, + blink=\E&dA, dch1=\EP$<2>, ed=\EJ, ht=\011$<2>, ind=\ES, + invis=\E&dS, ip=$<2>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, + kich1=\EQ, kil1=\EL, kind=\ES, knp=\EU, kpp=\EV, kri=\ET, + krmir=\ER, rev=\E&dB, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, + sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%| + %;%?%p4%t%{65}%|%;%c, + sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, + +# Note: no <home> on HPs since that homes to top of memory, not screen. +# 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 +# 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. +# +# Note: there are newer ROMs for 2621's that allow you to set +# strap A so the regular arrow keys xmit \EA, etc, as with the +# 2645. However, even with this strap set, the terminal stops +# xmitting if you reset it, until you unset and reset the strap! +# Since there is no way to set/unset the strap with an escape +# sequence, we don't use it in the default. +# If you like, you can use 2621-ba (brain-damaged arrow keys). +hp2621-ba|HP 2621 w/new rom and strap A set, + rmkx@, smkx@, use=hp+arrows, use=hp2621, + +# hp2621 with function labels. Most of the time they are off, +# but inside vi, the function key labels appear. You have to +# hold down shift to get them to xmit. +hp2621|hp2621a|hp2621A|2621|2621a|2621A|hp2621-wl|2621-wl|HP 2621 w/labels, + is2=\E&jA\r, rmkx=\E&jA, use=hp2621-fl, +hp2621-fl|HP 2621, + xhp@, xon, + pb#19200, + cbt=\Ei, cup=\E&a%p2%dc%p1%dY, dch1=\EP$<2>, ht=\011$<2>, + ip=$<2>, is2=\E&j@\r, rmkx=\E&j@, rmso=\E&d@, rmul=\E&d@, + sgr0=\E&d@, smkx=\E&jB, smso=\E&dD, smul=\E&dD, + use=hp+pfk+cr, use=hpgeneric, + +# To use hp2621p printer, setenv TERM=2621p, PRINTER=2612p +hp2621p|HP 2621 with printer, + mc4=\E&p13C, mc5=\E&p11C, use=hp2621, + +hp2621p-a|hp2621p with fn as arrows, + use=hp+pfk+arrows, use=hp2621p, + +# hp2621 with k45 keyboard +hp2621-k45|hp2621k45|k45|HP 2621 with 45 keyboard, + kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + khome=\Eh, rmkx=\E&s0A, smkx=\E&s1A, use=hp2621, + +# 2621 using all 48 lines of memory, only 24 visible at any time. +hp2621-48|HP 48 line 2621, + lines#48, + cup=\E&a%p2%dc%p1%dR, home=\EH, vpa=\E&a%p1%dR, + use=hp2621, + +# 2621 with no labels ever. Also prevents vi delays on escape. +hp2621-nl|HP 2621 with no labels, + kcub1@, kcud1@, kcuf1@, kcuu1@, khome@, rmkx@, smkx@, + use=hp2621-fl, + +# Needed for UCB ARPAVAX console, since lsi-11 expands tabs +# (wrong). +# +hp2621-nt|HP 2621 w/no tabs, + ht@, use=hp2621, + +# Hp 2624 B with 4 or 10 pages of memory. +# +# Some assumptions are made with this entry. These settings are +# NOT set up by the initialization strings. +# +# Port Configuration +# RecvPace=Xon/Xoff +# XmitPace=Xon/Xoff +# StripNulDel=Yes +# +# Terminal Configuration +# InhHndShk=Yes +# InhDC2=Yes +# XmitFnctn(A)=No +# InhEolWrp=No +# +# Note: the 2624 DOES have a true <home>, believe it or not! +# +# The 2624 has an "error line" to which messages can be sent. +# This is CLOSE to what is expected for a "status line". However, +# after a message is sent to the "error line", the next carriage +# return is EATEN and the "error line" is turned back off again! +# So I guess we can't define <hs>, <eslok>, <wsl>, <dsl>, <fsl>, <tsl>. +# +# This entry supports emacs (and any other program that uses raw +# mode) at 4800 baud and less. I couldn't get the padding right +# for 9600. +# +# (hp2624: replaced NUL sequences in flash with mandatory pauses -- esr) +hp2624|hp2624a|hp2624b|hp2624b-4p|Hewlett Packard 2624 B, + da, db, + lm#96, + flash=\E&w13F$<66/>\E&w12F$<66/>\E&w13F$<66/>\E&w12F, use=hp+labels, use=scrhp, + +# This hp2626 entry does not use any of the fancy windowing stuff +# of the 2626. +# +# Indeed, terminfo does not yet handle such stuff. Since changing +# any window clears memory, it is probably not possible to use +# this for screen opt. +# +# ed is incredibly slow most of the time - I am guessing at the +# exact padding. Since the terminal uses xoff/xon this is intended +# only for cost computation, so that the terminal will prefer el +# or even dl1 which is probably faster! +# +# \ED\EJ\EC hack for ed from Ed Bradford - apparently ed is only +# extra slow on the last line of the window. +# +# The padding probably should be changed. +# +hp2626|hp2626a|hp2626p|HP 2626, + da, db, + lm#0, pb#19200, + ed=\ED\EJ$<500>\EC, indn=\E&r%p1%dD, ip=$<4>, + is2=\E&j@\r, rin=\E&r%p1%dU, use=hp+pfk-cr, + use=hp+labels, use=scrhp, + +# This entry is for sysline. It allocates a 23 line window with +# a 115 line workspace for regular use, and a 1 line window for +# the status line. +# +# This assumes port 2 is being used. +# Turn off horizontal line, Create ws #1 with 115 lines, +# Create ws #2 with 1 line, Create window #1 lines 1-23, +# Create window #2 lines 24-24, Attach cursor to workspace #1. +# Note that this clears the tabs so it must be done by tset before +# it sets the tabs. +# +hp2626-s|HP 2626 using only 23 lines, + eslok, hs, + lines#23, + fsl=\E&d@\E&w7f2p1I\E&w4f1I, + is1=\E&q3t0{0H\s\E&w0f115n1I\s\E&w0f1n2I\s\E&w2f1i0d0u22l0S + \s\E&w2f2i0d23u23l0S\s\E&w7f2p1I\s\r, + tsl=\E&w7f2p2I\E&w4f2I\r\EK\E&a%p1%dC, use=hp2626, +# Force terminal back to 24 lines after being 23. +hp2626-ns|HP 2626 using all 24 lines, + is1=\E&q3t0{0H\s\E&w0f118n1I\s\E&w0f1n2I\s\E&w2f1i0d0u23l0S + \s\E&w3f2I\s\E&w7f2p1I\s\r, + use=hp2626, +# Various entries useful for small windows on 2626. +hp2626-12|Hewlett-Packard 2626 12 lines, + lines#12, use=hp2626, +hp2626-12x40|Hewlett-Packard 2626 12 lines 40 columns, + cols#40, lines#12, use=hp2626, +hp2626-x40|Hewlett-Packard 2626 40 columns, + cols#40, use=hp2626, +hp2626-12-s|Hewlett-Packard 2626 11 lines plus status, + lines#11, use=hp2626-s, + +# +# hp2627 color tubes from University of Wisconsin +# +hp2627a-rev|HP 2627 with reverse video colors, + cr=\r, cud1=\n, ht=^I, ind=\n, + is2=\E&v0m1a0b0c1x1y1z1i0a0b1c1x1y1z0i0S\E&j@\r\E3 + \r, + kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmul=\E&v0S\E&d@, + smul=\E&dD\E&v1S, use=hp2621-nl, +hp2627a|HP 2627 color terminal with no labels, + cr=\r, cud1=\n, ht=^I, ind=\n, + is2=\E&v0m1a1b0c1i0a1b1c2i1a0b0c0i0S\E&j@\r\E3\r, + kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, rmso=\E&v0S, + rmul=\E&v0S\E&d@, smso=\E&v2S, smul=\E&dD\E&v1S, + use=hp2621-nl, +hp2627c|HP 2627 color (cyan) terminal with no labels, + cr=\r, cud1=\n, ht=^I, ind=\n, + is2=\E&v0m1a0b0c2i1a1b0c1i0a1b1c0i0S\E&j@\r\E3\r, + kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, use=hp2627a, + +# hp2640a doesn't have the Y cursor addressing feature, and C is +# memory relative instead of screen relative, as we need. +# +hp2640a|HP 2640a, + cup@, rmkx@, smkx@, use=hp2645, + +hp2640b|hp2644a|HP 264x series, + rmkx@, smkx@, use=hp2645, + +# (hp2641a: removed unknown :gu: -- esr) +hp2641a|hp2645a|hp2647a|HP 264?A series BRL entry, + am, da, db, mir, xhp, + cols#80, lines#24, + bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM, + ed=\EJ, el=\EK, hpa=\E&a%p1%2dC, ht=^I, + if=/usr/share/tabset/std, il1=\EL, ind=\n, + is2=\EE$<500/>, kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, + rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB, + vpa=\E&a%p1%2dY, + +# This terminal should be used at 4800 baud or less. It needs padding for +# plain characters at 9600, I guessed at an appropriate cr delay. It really +# wants ^E/^F handshaking, but that doesn't work well even if you write +# software to support it. +hp2645|hp45|HP 2645 series, + pb#9600, + blink=\E&dA, cr=\r$<20>, dim=\E&dH, kctab=\E2, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, + ked=\EJ, kel=\EK, khome=\Eh, khts=\E1, kich1=\EQ, kil1=\EL, + kind=\ES, knp=\EU, kpp=\EV, kri=\ET, krmir=\ER, rev=\E&dB, + rmkx=\E&s0A, + sgr=\E&d%{64}%?%p1%t%{66}%|%;%?%p2%t%{68}%|%;%?%p3%t%{66}%| + %;%?%p4%t%{65}%|%;%?%p5%t%{72}%|%;%?%p6%t%{66}%|%;%c, + sgr0=\E&d@, smkx=\E&s1A, smul=\E&dD, use=hpgeneric, +# You should use this terminal at 4800 baud or less. +hp2648|hp2648a|HP 2648a graphics terminal, + clear=\EH\EJ$<50>, cup=\E&a%p2%dc%p1%dY$<20>, + dch1=\EP$<7>, ip=$<5>, use=hp2645, + +# The HP 150 terminal is a fairly vanilla HP terminal, with the +# clreol standout problem. It also has graphics capabilities and +# a touch screen, which we don't describe here. +hp150|Hewlett Packard Model 150, + OTbs, use=hp2622, + +# HP 2382a terminals, "the little ones." They don't have any +# alternate character set support and sending out ^N/^O will +# leave the screen blank. +hp2382a|hp2382|Hewlett Packard 2382a, + da, db, + lh#1, lm#48, + acsc@, + pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t\s%;%p2 + %s, + rmacs@, + sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga + %+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+ + %Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64} + %+%e%{64}%;%;%c, + sgr0=\E&d@, smacs@, use=hp+labels, use=scrhp, + +hp2621-a|hp2621a-a|hp2621 with fn as arrows, + use=hp+pfk+arrows, use=hp2621-fl, + +# newer hewlett packard terminals + +newhpkeyboard|generic entry for HP extended keyboard, + kbs=^H, kcbt=\Ei, kclr=\EJ, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kdch1=\EP, kdl1=\EM, ked=\EJ, kel=\EK, khome=\Eh, + kich1=\EQ, kil1=\EL, kind=\ET, kll=\EF, knp=\EU, kpp=\EV, + kri=\ES, krmir=\ER, rmkx=\E&s0A, smkx=\E&s1A, + use=hp+pfk-cr, + +newhp|generic entry for new Hewlett Packard terminals, + am, bw, mir, xhp, xon, + cols#80, lines#24, pb#4800, + acsc=2[3@4>5I9(:'JSKWLQMAO#P$Q;R!S"T1U2V4W3X:Y+Z*dHjGkTlRmFn + /q\,t5u6v8w7x., + bel=^G, blink=\E&dA, bold=\E&dF, cbt=\Ei, cr=\r, cub1=^H, + cud1=\n, cuf1=\EC, cuu1=\EA, dch1=\EP$<2>, dim=\E&dH, + dl1=\EM, ed=\EJ, el=\EK, ht=\011$<2>, hts=\E1, il1=\EL, ind=\n, + invis=\E&dS, ip=$<2>, is1=\E&jB$<8>, nel=\r\n, + pfkey=\E&f0a%p1%dk0d%p2%l%dL%p2%s, + pfloc=\E&f1a%p1%dk0d%p2%l%dL%p2%s, + pfx=\E&f2a%p1%dk0d%p2%l%dL%p2%s, rev=\E&dB, ri=\ET, + rmacs=^O, rmir=\ER, rmso=\E&d@, rmul=\E&d@, rs1=\Eg, + sgr=\E&d%{0}%Pa%?%p4%t%{1}%ga%+%Pa%;%?%p1%p3%|%p6%|%t%{2}%ga + %+%Pa%;%?%p2%p6%|%t%{4}%ga%+%Pa%;%?%p1%p5%|%t%{8}%ga%+ + %Pa%;%?%p7%t%?%ga%ts%ga%{64}%+%e%{83}%;%e%?%ga%t%ga%{64} + %+%e%{64}%;%;%c%?%p9%t\016%e\017%;, + sgr0=\E&d@\017, smacs=^N, smir=\EQ, smso=\E&dJ, smul=\E&dD, + tbc=\E3, use=newhpkeyboard, + +memhp|memory relative addressing for new HP ttys, + vt#6, + clear=\EH\EJ$<40>, cub=\E&a-%p1%dC, cud=\E&a+%p1%dR, + cuf=\E&a+%p1%dC, cup=\E&a%p1%dr%p2%dC, cuu=\E&a-%p1%dR, + home=\EH, hpa=\E&a%p1%dC, ll=\E&a23R\r, + mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dR, use=newhp, + +scrhp|screen relative addressing for new HP ttys, + clear=\E&a0c0Y\EJ$<40>, cub=\E&a-%p1%dC, + cud=\E&a+%p1%dR, cuf=\E&a+%p1%dC, + cup=\E&a%p1%dy%p2%dC$<10>, cuu=\E&a-%p1%dR, + home=\E&a0y0C, hpa=\E&a%p1%dC, ll=\E&a0y0C\EA, + mrcup=\E&a%p1%dr%p2%dC, vpa=\E&a%p1%dY, use=newhp, + +# (hp+labels: added label values from a BRL termcap -- esr) +hp+labels|"standard" label info for new HP ttys, + lh#2, lw#8, nlab#8, + lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, lf7=f8, + pln=\E&f2a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d0L%?%ga%!%t\s%;%p2 + %s, + rmln=\E&j@, smln=\E&jB, + +hp+printer|"standard" printer info for HP ttys, + ff=\E&p4u0C, mc0=\EH\E&p4dF, mc4=\E&p13C, mc5=\E&p11C, + + +# The new hp2621b is kind of a cross between the old 2621 and the +# new 262x series of machines. It has dip-switched options. +# The firmware has a bug in it such that if you give it a null +# length label, the following character is eaten! +hp2621b|HP 2621b with old style keyboard, + lh#1, lm#48, lw#8, nlab#8, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, + kind=\ET, kll=\EF, kri=\ES, + pln=\E&f0a%p1%dk%p2%l%Pa%?%ga%t%ga%d%e1%;d3L%?%ga%!%t%{32}%c + %;%p2%s\E%{111}%p1%+%c\r, + smln=\E&jB, use=hp2621, + +hp2621b-p|HP 2621b with printer, + use=hp+printer, use=hp2621b, + +# hp2621b - new 2621b with new extended keyboard +# these are closer to the new 26xx series than the other 2621b +hp2621b-kx|HP 2621b with extended keyboard, + use=newhpkeyboard, use=hp2621b, + +hp2621b-kx-p|HP 2621b with new keyboard & printer, + use=hp+printer, use=hp2621b-kx, + +# Some assumptions are made in the following entries. +# These settings are NOT set up by the initialization strings. +# +# Port Configuration +# RecvPace=Xon/Xoff XmitPace=Xon/Xoff StripNulDel=Yes +# +# Terminal Configuration +# InhHndShk(G)=Yes InhDC2(H)=Yes +# XmitFnctn(A)=No InhEolWrp=No +# +# +# Hp 2622a & hp2623a display and graphics terminals +# +hp2622|hp2622a|HP 2622, + da, db, + lm#0, pb#19200, + is2=\E&dj@\r, use=hp+pfk-cr, use=hp+labels, use=scrhp, + +# The 2623 is a 2622 with extra graphics hardware. +hp2623|hp2623a|HP 2623, + use=hp2622, + +hp2624b-p|hp2624b-4p-p|Hewlett Packard 2624 B with printer, + use=hp+printer, use=hp2624, + +# The hewlett packard B can have an optional extra 6 pages of memory. +hp2624-10p|hp2624a-10p|hp2624b-10p|Hewlett Packard 2624 B w/ 10 pages of memory, + lm#240, use=hp2624, + +hp2624b-10p-p|Hewlett Packard 2624 B w/ extra memory & printer, + lm#240, use=hp2624b-p, + +# Color manipulations for HP terminals +hp+color|HP with colors, + ccc, + colors#16, ncv#17, pairs#7, + initp=\E&v%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e. + %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1 + %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%= + %t1%e.%p7%d%;z%p1%dI, + oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5 + I\E&v1b1c6I\E&v1x1y7I, + op=\E&v0S, scp=\E&v%p1%dS, + +# <is2> sets the screen to be 80 columns wide +hp2397a|hp2397|Hewlett Packard 2397A color terminal, + is2=\E&w6f80X, use=memhp, use=hp+labels, use=hp+color, + +# HP 700/44 Setup parameters: +# Terminal Mode HP-PCterm +# Inhibit Auto Wrap NO +# Status Line Host Writable +# PC Character Set YES +# Twenty-Five Line Mode YES +# XON/XOFF @128 or 64 (sc) +# Keycode Mode NO or YES (sc) +# Backspace Key BS or BS/DEL +# +# <is2> sets pcterm; autowrap; 25 lines; pc char set; prog DEL key; +# \E\\? does not turn off keycode mode +# <smsc> sets alternate start/stop; keycode on +hpansi|hp700|Hewlett Packard 700/44 in HP-PCterm mode, + am, eo, xenl, xon, + 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, cub1=\E[D, + cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + 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[44"p\E[?7h\E[>10h\E[>12h\EP1;1|3/7F\E\\, + kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, 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=vt220+cvis, +# +# (hp2392: copied <rmir> here from hpex -- esr) +hp2392|239x series, + cols#80, + cbt=\Ei, cup=\E&a%p1%dy%p2%dC, kf1=\Ep\r, kf2=\Eq\r, + kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, + kf8=\Ew\r, khome=\Eh, kind=\EU, knp=\Eu, kpp=\Ev, kri=\EV, + rmir=\ER, rmul=\E&d@, smir=\EQ, smul=\E&dD, vpa=\E&a%p1%dY, + use=hpsub, + +hpsub|HP terminals -- capability subset, + am, da, db, mir, xhp, xon, + lines#24, + bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cuu1=\EA, dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, + ht=^I, if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n, + is2=\E&s1A\E<\E&k0\\, kbs=^H, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, khome=\Eh, rmkx=\E&s0A, rmso=\E&d@, + sgr0=\E&d@, smkx=\E&s1A, smso=\E&dB, + +# hpex: +# May be used for most 24 x 80 hp terminals, +# but has no padding added, so may allow runover in some terminals at high +# baud rates. Will not work for hp2640a or hp2640b terminals, hp98x6 and +# hp98x5 terminal emulators or hp98x6 consoles. +# Adds xy-cursor addressing, vertical cursor addressing, home, +# last line, and underline capabilities. +# +# (hpex: removed memory-lock capabilities ":ml=\El:mu=\Em:", +# moved <rmir> here from hpsub -- esr) +hpex|HP extended capabilities, + cr=\r, cud1=\n, cup=\E&a%p1%dy%p2%dC, ht=^I, ind=\n, kbs=^H, + kcub1=^H, kcud1=\n, nel=\r\n, rmir=\ER, rmul=\E&d@, smir=\EQ, + smul=\E&dD, vpa=\E&a%p1%dY, use=hpsub, + +# From: Ville Sulko <Ville.Sulko@bip.atk.tpo.fi>, 05 Aug 1996 +hp2|hpex2|Hewlett-Packard extended capabilities newer version, + am, da, db, mir, xhp, + cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, xmc#0, + bel=^G, clear=\E&a0y0C\EJ, cr=\r, cub1=^H, cud1=\EB, + cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, + dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, + il1=\EL, ind=\n, kbs=^H, kclr=\EJ, kctab=\E2, kdch1=\EP, + kdl1=\EM, ked=\EJ, kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, + knp=\EU, kpp=\EV, krmir=\ER, ktbc=\E3, meml=\El, memu=\Em, + pfkey=\E&f%p1%dk%p2%l%dL%p2%s, + pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, + pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, + pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rmir=\ER, rmkx=\E&s0A, + rmln=\E&j@, rmso=\E&d@, rmul=\E&d@, + sgr=\E&d%?%p7%t%{115}%c%;%p1%p3%|%p6%|%{2}%*%p2%{4}%*%+%p4%+ + %p5%{8}%*%+%{64}%+%c%?%p9%t%'\016'%c%e%'\017'%c%;, + sgr0=\E&d@\017, smir=\EQ, smkx=\E&s1A, smln=\E&jB, + smso=\E&dB, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, + use=hp+pfk-cr, use=hp+arrows, + +# HP 236 console +# From: <ddavis@ic.berkeley.edu> +hp236|hp236 internal terminal emulator, + OTbs, am, + cols#80, lines#24, + clear=\EF, cnorm=\EDE, cub1=^H, + cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\EDB, + dch1=\EJ, dl1=\EH, el=\EK, ich1=\EI, il1=\EG, rmso=\ECI, + sgr0=\ECI, smso=\EBI, + +# This works on a hp300 console running Utah 4.3 BSD +# From: Craig Leres <leres@okeeffe.berkeley.edu> +hp300h|HP Catseye console, + OTbs, am, da, db, mir, xhp, + cols#128, lines#51, lm#0, xmc#0, + bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r, cub1=^H, cud1=\EB, + cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, + dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, + if=/usr/share/tabset/stdcrt, il1=\EL, ind=\n, kbs=^H, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\Eh, + rmir=\ER, rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, + smir=\EQ, smkx=\E&s1A, smso=\E&dB, smul=\E&dD, tbc=\E3, + vpa=\E&a%p1%dY, +# From: Greg Couch <gregc@ernie.berkeley.edu> +hp9837|hp98720|hp98721|HP 9000/300 workstations, + OTbs, am, da, db, mir, xhp, + cols#128, it#8, lines#46, lm#0, + bel=^G, cbt=\Ei, clear=\E&a0y0C\EJ, cub1=^H, cud1=\EB, + cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, + dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, + il1=\EL, ind=\n, is2=\E&v0m1b0i&j@, kbs=^H, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\EP, kdl1=\EM, + ked=\EJ, kel=\EK, khome=\Eh, kich1=\EQ, kil1=\EL, knp=\EU, + kpp=\EV, rmir=\ER, rmkx=\E&s0A, rmso=\E&v0S, rmul=\E&d@, + sgr0=\E&d@, smir=\EQ, smkx=\E&s1A, smso=\E&v5S, smul=\E&dD, + tbc=\E3, vpa=\E&a%p1%dY, +# HP 9845 desktop computer from BRL +# (hp9845: removed unknown capability :gu: -- esr) +hp9845|HP 9845, + OTbs, am, da, db, eo, mir, xhp, + cols#80, lines#21, + OTbc=\ED, clear=\EH\EJ, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\E&a%p2%2dc%p1%2dY, cuu1=\EA, dch1=\EP, dl1=\EM, + ed=\EJ, el=\EK, if=/usr/share/tabset/std, il1=\EL, + rmir=\ER, rmso=\E&d@, smir=\EQ, smso=\E&dB, +# From: Charles A. Finnell of MITRE <finnell@mitre.org>, developed 07SEP90 +# (hp98550: replaced /usr/share/tabset/9837 with std because <it#8>,<hts=\E1>; +# added empty <acsc> to avoid warnings re <smacs>/<rmacs> --esr) +hp98550|hp98550a|HP 9000 Series 300 color console, + OTbs, am, da, db, mir, xhp, + cols#128, it#8, lines#49, lm#0, + acsc=, bel=^G, blink=\E&dA, bold=\E&dJ, cbt=\Ei, civis=\E*dR, + clear=\EH\EJ, cnorm=\E*dQ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\E&a%p1%dy%p2%dC, cuu1=\EA, dch1=\EP, dim=\E&dH, + dl1=\EM, ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=^I, hts=\E1, + if=/usr/share/tabset/std, il1=\EL, ind=\n, invis=\E&ds, + kbs=^H, kclr=\EJ, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ, + kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, kll=\EF, knp=\EU, + kpp=\EV, krmir=\ER, ktbc=\E3, rev=\E&dJ, rmacs=^O, rmir=\ER, + rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smacs=^N, + smir=\EQ, smkx=\E&s1A, smso=\E&dJ, smul=\E&dD, tbc=\E3, + vpa=\E&a%p1%dY, use=hp+pfk-cr, use=hp+arrows, + +# From: Martin Trusler +hp98550-color|hp98550a-color|HP 9000 Series 300 color console, + OTbs, am, ccc, da, db, km, mir, xhp, + colors#8, cols#128, it#8, lh#2, lines#49, lm#0, lw#8, nlab#8, + pairs#8, xmc#0, + acsc=+>\,<-\^.v0\374``a\374f\372g\376h\374j+k+l+m+n+o-q-s-t+ + u+v+w+x|y<z>{*|!}\273~\362, + bel=^G, bold=\E&dD, cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H, + cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, + dch1=\EP, dl1=\EM, ed=\EJ, el=\EK, home=\E&a0y0C, + hpa=\E&a%p1%dC, ht=^I, hts=\E1, il1=\EL, ind=\ES, + initp=\E&v0m%?%p2%{1000}%=%t1%e.%p2%d%;a%?%p3%{1000}%=%t1%e. + %p3%d%;b%?%p4%{1000}%=%t1%e.%p4%d%;c%?%p5%{1000}%=%t1 + %e.%p5%d%;x%?%p6%{1000}%=%t1%e.%p6%d%;y%?%p7%{1000}%= + %t1%e.%p7%d%;z%p1%dI, + is1=\EH\EJ, kbs=^H, kctab=\E2, kdch1=\EP, kdl1=\EM, ked=\EJ, + kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, kll=\EF, knp=\EU, + kpp=\EV, krmir=\ER, ktbc=\E3, meml=\El, memu=\Em, + oc=\E&v0m1a1b1c0I\E&v1a1I\E&v1b2I\E&v1a1b3I\E&v1c4I\E&v1a1c5 + I\E&v1b1c6I\E&v1x1y7I, + op=\E&v0S, pfkey=\E&f%p1%dk%p2%l%dL%p2%s, + pfloc=\E&f1a%p1%dk%p2%l%dL%p2%s, + pfx=\E&f2a%p1%dk%p2%l%dL%p2%s, + pln=\E&f%p1%dk%p2%l%dd0L%p2%s, rev=\E&dB, ri=\ET, + rmacs=^O, rmam=\E&s1C, rmcup=\E&s0A, rmir=\ER, rmkx=\E&s0A, + rmln=\E&j@, rmm=\E&k0I, rmso=\E&d@, rmul=\E&d@, rs1=\EE, + scp=\E&v%p1%dS, + sgr=\E&d%p1%p3%|%{2}%*%p2%p6%|%{4}%*%+%{64}%+%c%?%p9%t%' + \016'%c%e%'\017'%c%;, + sgr0=\E&d@\017, smacs=^N, smam=\E&s0C, smcup=\E&s1A, + smir=\EQ, smkx=\E&s1A, smln=\E&jB, smm=\E&k1I, smso=\E&dB, + smul=\E&dD, tbc=\E3, u6=\Ea%dc%dR\r, u7=\Ea, + u8=\E%[0123456789/], u9=\E*s1\^, vpa=\E&a%p1%dY, + use=hp+pfk-cr, use=hp+arrows, + +# From: Victor Duchovni <vic@fine.princeton.edu> +# (hp700-wy: removed obsolete ":nl=^J:"; +# replaced /usr/share/tabset/hp700-wy with std because <it#8>,<hts=\E1> -- esr) +hp700-wy|HP700/41 emulating wyse30, + OTbs, am, bw, mir, msgr, + cols#80, it#8, lines#24, xmc#1, + cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=^V, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET$<10/>, home=^^, ht=^I, hts=\E1, + if=/usr/share/tabset/stdcrt, il1=\EE$<0.7*/>, + is1=\E~"\EC\Er\E(\EG0\003\E`9\E`1, kbs=^?, kcbt=\EI, + kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, ked=\EY, + kel=\ET, khome=^^, khts=\EI, kich1=\Eq, krmir=\Er, ll=^^^K, + ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>, + sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>, + smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c, +hp70092|hp70092a|hp70092A|HP 700/92, + am, da, db, xhp, + cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, + acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA, + bold=\E&dB, cbt=\Ei, clear=\E&a0y0C\EJ, cr=\r, cub1=^H, + cud1=\EB, cuf1=\EC, cup=\E&a%p1%dy%p2%dC, cuu1=\EA, + dch1=\EP, dim=\E&dH, dl1=\EM, el=\EK, hpa=\E&a%p1%dC, ht=^I, + hts=\E1, il1=\EL, kbs=^H, kclr=\EJ, kctab=\E2, kdch1=\EP, + kdl1=\EM, ked=\EJ, kel=\EK, khts=\E1, kich1=\EQ, kil1=\EL, + kll=\EF, knp=\EU, kpp=\EV, krmir=\ER, ktbc=\E3, rev=\E&dB, + ri=\ET, rmacs=^O, rmir=\ER, rmkx=\E&s0A, rmln=\E&j@, + rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smacs=^N, smir=\EQ, + smkx=\E&s1A, smln=\E&jB, smso=\E&dJ, smul=\E&dD, tbc=\E3, + vpa=\E&a%p1%dY, use=hp+pfk-cr, use=hp+arrows, + +bobcat|sbobcat|HP 9000 model 300 console, + am, da, db, mir, xhp, + cols#128, it#8, lines#47, xmc#0, + cbt=\Ei, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\E&a%p1%dy%p2%dC$<6/>, cuu1=\EA, dch1=\EP, + dl1=\EM$<10*/>, ed=\EJ, el=\EK, hpa=\E&a%p1%dC$<6/>, ht=^I, + il1=\EL$<10*/>, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, khome=\Eh, nel=\r\n, rmir=\ER, + rmkx=\E&s0A, rmso=\E&d@, rmul=\E&d@, sgr0=\E&d@, smir=\EQ, + smkx=\E&s1A, smso=\E&dB, smul=\E&dD, vpa=\E&a%p1%dY$<6/>, +gator-t|HP 9000 model 237 emulating extra-tall AAA, + lines#94, use=gator, +gator|HP 9000 model 237 emulating AAA, + bw, km, mir, ul, + cols#128, it#8, lines#47, + bel=^G, cbt=\E[Z, clear=\E[H\E[J, 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, ed=\E[J, el=\E[K, home=\E[H, 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, +gator-52|HP 9000 model 237 emulating VT52, + cols#128, lines#47, use=vt52-basic, +gator-52t|HP 9000 model 237 emulating extra-tall VT52, + lines#94, use=gator-52, + +#### Honeywell-Bull +# +# From: Michael Haardt <michael@gandalf.moria> 11 Jan 93 +# + +# Honeywell Bull terminal. Its cursor and function keys send single +# control characters and it has standout/underline glitch. Most programs +# do not like these features/bugs. Visual bell is realized by flashing the +# "keyboard locked" LED. +dku7003-dumb|Honeywell Bull DKU 7003 dumb mode, + cols#80, lines#25, + clear=^]^_, cr=\r, cub1=^Y, cud1=^K, cuf1=^X, + cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, ed=^_, el=\E[K, + flash=\E[2h\E[2l, home=^], ht=^I, ind=\n, kbs=^H, kcub1=^Y, + kcud1=^K, kcuf1=^X, kcuu1=^Z, khome=^], nel=\r\n, +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, + +#### Lear-Siegler (LSI adm) +# +# These guys are long since out of the terminals business, but +# in 1995 many current terminals still have an adm type as one of their +# emulations (usually their stupidest, and usually labeled adm3, though +# these `adm3' emulations normally have adm3a+ capabilities). +# +# WARNING: Some early ADM terminals (including the ADM3 and ADM5) had a +# `diagnostic feature' that sending them a ^G while pin 22 (`Ring Indicator') +# was being held to ground would trigger a send of the top line on the screen. +# A quick fix might be to drop back to a cheesy 4-wire cable with pin 22 +# hanging in the air. (Thanks to Eric Fischer, <eric@fudge.uchicago.edu>, +# for clearing up this point.) + +adm1a|adm1|LSI adm1a, + am, + cols#80, lines#24, + bel=^G, clear=\E;$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, home=^^, + ind=\n, +adm2|LSI adm2, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET, home=^^, ich1=\EQ, il1=\EE, ind=\n, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, +# (adm3: removed obsolete ":ma=^K^P:" -- esr) +adm3|LSI adm3, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, ind=\n, +# The following ADM-3A switch settings are assumed for normal operation: +# SPACE U/L_DISP CLR_SCRN 24_LINE +# CUR_CTL LC_EN AUTO_NL FDX +# Other switches may be set for operator convenience or communication +# requirements. I recommend +# DISABLE_KB_LOCK LOCAL_OFF 103 202_OFF +# ETX_OFF EOT_OFF +# Most of these terminals required an option ROM to support lower case display. +# Open the case and look at the motherboard; if you see an open 24-pin DIP +# socket, you may be out of luck. +# +# (adm3a: some capabilities merged in from BRl entry -- esr) +adm3a|LSI adm3a, + OTbs, am, + cols#80, lines#24, + OTma=^K^P, OTnl=\n, bel=^G, clear=\032$<1/>, cr=\r, cub1=^H, + cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, home=^^, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^L, + kcuu1=^K, rs2=^N, +adm3a+|adm3a plus, + kbs=^H, use=adm3a, +# (adm5: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" & duplicate ":do=^J:" -- esr) +adm5|LSI adm5, + xmc#1, + bel=^G, cr=\r, cud1=\n, ed=\EY, el=\ET, kbs=^H, khome=^^, + rmso=\EG, smso=\EG, use=adm3a+, +# A lot of terminals other than adm11s use these. Wherever you see +# use=adm+sgr with some of its capabilities disabled, try the +# disabled ones. They may well work but not have been documented or +# expressed in the using entry. We'd like to cook up an <sgr> but the +# <rmacs>/<smacs> sequences of the using entries vary too much. +adm+sgr|adm style highlight capabilities, + invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, sgr0=\EG0, + smso=\EG4, smul=\EG8, +# LSI ADM-11 from George William Hartwig, Jr. <geo@BRL-TGR.ARPA> via BRL +# Status line additions from Stephen J. Muir <stephen%comp.lancs.ac.uk@ucl-cs> +# <khome> from <stephen%comp.lancs.ac.uk@ucl-cs.arpa>. <clear> could also +# be ^Z, according to his entry. +# (adm11: <smul>=\EG4 was obviously erroneous because it also said +# <rev>=\EG4. Looking at other ADMs confirms this -- esr) +adm11|LSI ADM-11, + OTbs, am, hs, + OTkn#8, cols#80, lines#24, + OTnl=\n, bel=^G, blink=\EG2, clear=\E*, cr=\r, cub1=^H, + cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, dsl=\Eh, ed=\EY, el=\ET, fsl=\E(\r, home=^^, ht=^I, + kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf1=^A@\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, kf8=^AG\r, khome=^^, nel=\r\n, tsl=\EF\E), + use=adm+sgr, +# From: Andrew Scott Beals <bandy@lll-crg.ARPA> +# Corrected by Olaf Siebert <rhialto@polder.ubc.kun.nl>, 11 May 1995 +# Supervisor mode info by Ari Wuolle, <awuolle@delta.hut.fi>, 27 Aug 1996 +# (adm12: removed obsolete ":kn:ma=j^Jk^P^K^Pl ^R^L^L :". This formerly had +# <is2>=\Eq but that looked wrong; this <is2> is from Dave Yost <esquire!yost> +# via BRL. That entry asserted <xmc#1>, but I've left that out because +# neither earlier nor later ADMSs have it -- esr) +# +# You will need to get into the supervisor setup before you can set +# baudrate etc. for your ADM-12+. Press Shift-Ctrl-Setup and you should +# see a lot more setup options. +# +# While in supervisor setup you can also use following codes: +# +# Ctrl-P Personality character selections (configure for example what +# arrow keys send, if I recall correctly) +# Ctrl-T tabs 1-80 use left&right to move and up to set and +# Ctrl-V tabs 81-158 down to clear tab. Shift-Ctrl-M sets right margin at cursor +# Ctrl-B Binary setup (probably not needed. I think that everything can +# be set using normal setup) +# Ctrl-A Answerback mode (enter answerback message) +# Ctrl-U User friendly mode (normal setup) +# Ctrl-D Defaults entire setup and function keys from EPROM tables +# Ctrl-S Save both setup and functions keys. Takes from 6 to 10 seconds. +# Ctrl-R Reads both setup and functions keys from NVM. +# Shift-Ctrl-X Unlock keyboard and cancel received X-OFF status +# +# ADM-12+ supports hardware handshaking, but it is DTR/CTS as opposed to +# RTS/CTS used nowadays with virtually every modem and computer. 19200 +# bps works fine with hardware flow control. +# +# The following null-modem cable should fix this and enable you to use +# RTS/CTS handshaking (which Linux supports, use CRTSCTS setting). Also +# set ADM-12+ for DTR handshaking from supervisor setup. +# +# PC Serial ADM-12+ +# -------- ------- +# 2 - 3 +# 3 - 2 +# 4 - 5 +# 5 - 20 +# 6,8 - 4 +# 7 - 7 +# 20 - 6,8 +# +adm12|LSI adm12, + OTbs, OTpt, am, mir, + OTug#1, cols#80, it#8, lines#24, + bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, + is2=\E0\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s + \s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s + \s\s\E1\s\s\s\s\s\s\s\s\E1\s\s\s\s\s\s\s\s\E1, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, + kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, + kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, smir=\Eq, tbc=\E0, + use=adm+sgr, +# (adm20: removed obsolete ":kn#7:" -- esr) +adm20|Lear Siegler adm20, + OTbs, am, + cols#80, it#8, lines#24, + bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cuf1=^L, + cup=\E=%i%p2%{31}%+%c%p1%{31}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET, home=^^, ht=^I, ich1=\EQ, il1=\EE, + kf1=^A, kf2=^B, kf3=^W, kf4=^D, kf5=^E, kf6=^X, kf7=^Z, rmso=\E(, + sgr0=\E(, smso=\E), +adm21|Lear Siegler adm21, + xmc#1, + bel=^G, cr=\r, cud1=\n, dch1=\EW, dl1=\ER$<30*>, ed=\EY, + el=\ET, ich1=\EQ, il1=\EE$<30*>, ind=\n, invis@, kbs=^H, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, + use=adm+sgr, use=adm3a, +# (adm22: ":em=:" was an obvious typo for ":ei=:"; also, +# removed obsolete ":kn#7:ma=j^Jk^P^K^Pl ^R^L^L :"; +# removed bogus-looking \200 from before <cup>. -- esr) +adm22|LSI adm22, + OTbs, am, + cols#80, lines#24, + bel=^G, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\Ey, el=\Et, home=^^, ht=\Ei, ich1=\EQ, il1=\EE, + is2=\E%\014\014\014\016\003\0\003\002\003\002\0\0\0\0\0\0\0 + \0\0\0\0, + kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf1=^A@\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, khome=^^, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, + lf6=F6, lf7=F7, rmso=\E(, sgr0=\E(, smso=\E), +# ADM 31 DIP Switches +# +# This information comes from two versions of the manual for the +# Lear-Siegler ADM 31. +# +# Main board: +# rear of case +# +-||||-------------------------------------+ +# + S1S2 ||S + +# + ||3 + +# + + +# + ||S + +# + ||4 + +# + + +# + + +# + + +# + + +# + + +# +-+ +-+ +# + + +# + S5 S6 S7 + +# + == == == + +# +----------------------------------------------+ +# front of case (keyboard) +# +# S1 - Data Rate - Modem +# S2 - Data Rate - Printer +# ------------------------ +# Data Rate Setting +# ------------------- +# 50 0 0 0 0 +# 75 1 0 0 0 +# 110 0 1 0 0 +# 134.5 1 1 0 0 +# 150 0 0 1 0 +# 300 1 0 1 0 +# 600 0 1 1 0 +# 1200 1 1 1 0 +# 1800 0 0 0 1 +# 2000 1 0 0 1 +# 2400 0 1 0 1 +# 3600 1 1 0 1 +# 4800 0 0 1 1 +# 7200 1 0 1 1 +# 9600 0 1 1 1 +# x 1 1 1 1 +# +# S3 - Interface/Printer/Attributes +# --------------------------------- +# Printer Busy Control +# sw1 sw2 sw3 +# --------------- +# off off off Busy not active, CD disabled +# off off on Busy not active, CD enabled +# off on off Busy active on J5-20, CD disabled +# on off off Busy active on J5-19, CD disabled - Factory Set. +# on off on Busy active on J5-19, CD enabled +# +# sw4 Used in conjunction with S4 for comm interface control - Fact 0 +# +# sw5 Secondary Channel Control (Hardware implementation only) - Fact 0 +# +# sw6 ON enables printer BUSY active LOW - Factory Setting +# OFF enables printer BUSY active HIGH - If set to this, ADM31 senses +# +# sw7 ON - steady cursor - Factory Setting +# OFF - blinking cursor +# +# sw8 ON causes selected attribute character to be displayed +# OFF causes SPACE to be displayed instead - Factory Setting +# +# S4 - Interface +# -------------- +# Modem Interface +# S3 S4 S4 S4 S4 +# sw4 sw1 sw2 sw3 sw4 +# --------------------------- +# OFF ON OFF ON OFF Enable RS-232C interface, Direct Connect and +# Current Loop disabled - Factory Setting +# ON ON OFF ON OFF Enable Current Loop interface, Direct Connect +# disabled +# OFF OFF ON OFF ON Enable Direct Connect interface, RS-232C and +# Current Loop Disabled +# +# sw5 ON disables dot stretching mode - Factory Setting +# OFF enables dot stretching mode +# sw6 ON enables blanking function +# OFF enables underline function - Factory Setting +# sw7 ON causes NULLS to be displayed as NULLS +# OFF causes NULLS to be displayed as SPACES - Factory Setting +# +# S5 - Word Structure +# ------------------- +# sw1 ON enables BREAK key - Factory Setting +# OFF disables BREAK key +# sw2 ON selects 50Hz monitor refresh rate +# OFF selects 60Hz monitor refresh rate - Factory Setting +# +# Modem Port Selection +# sw3 sw4 sw5 +# --------------- +# ON ON ON Selects 7 DATA bits, even parity, 2 STOP bits +# OFF ON ON Selects 7 DATA bits, odd parity, 2 STOP bits +# ON OFF ON Selects 7 DATA bits, even parity, 1 STOP bit - Factory Set. +# OFF OFF ON Selects 7 DATA bits, odd parity, 1 STOP bit +# ON ON OFF Selects 8 DATA bits, no parity, 2 STOP bits +# OFF ON OFF Selects 8 DATA bits, no parity, 1 STOP bit +# ON OFF OFF Selects 8 DATA bits, even parity, 1 STOP bit +# OFF OFF OFF Selects 8 DATA bits, odd parity, 1 STOP bit +# +# sw6 ON sends bit 8 a 1 (mark) +# OFF sends bit 8 as 0 (space) - Factory Setting +# sw7 ON selects Block Mode +# OFF selects Conversation Mode - Factory Setting +# sw8 ON selects Full Duplex operation +# OFF selects Half Duplex operation - Factory Setting +# +# S6 - Printer +# ------------ +# sw1, sw2, sw6, sw7 Reserved - Factory 0 +# +# Printer Port Selection +# same as Modem above, bit 8 (when 8 DATA bits) is always = 0 +# +# sw8 ON enables Printer Port +# OFF disables Printer Port - Factory Setting +# +# S7 - Polling Address +# -------------------- +# sw1-7 Establish ASCII character which designates terminal polling address +# ON = logic 0 +# OFF = logic 1 - Factory Setting +# sw8 ON enables Polling Option +# OFF disables Polling Option - Factory Setting +# +# +# On some older adm31s, S4 does not exist, and S5-sw6 is not defined. +# +# This adm31 entry uses underline as the standout mode. +# If the adm31 gives you trouble with standout mode, check the DIP switch in +# position 6, bank @c11, 25% from back end of the circuit board. Should be +# OFF. If there is no such switch, you have an old adm31 and must use oadm31. +# (adm31: removed obsolete ":ma=j^Jk^P^K^Pl ^R^L^L :" -- esr) +adm31|LSI adm31 with sw6 set for underline mode, + OTbs, am, mir, + cols#80, lines#24, + bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, ind=\n, is2=\Eu\E0, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, + kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, + kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, rmir=\Er, rmso=\EG0, + rmul=\EG0, sgr0=\EG0, smir=\Eq, smso=\EG1, smul=\EG1, +adm31-old|o31|old adm31, + rmul@, smso=\EG4, smul@, use=adm31, +# LSI ADM-36 from Col. George L. Sicherman <gloria!colonel> via BRL +adm36|LSI ADM36, + OTbs, OTpt, + OTkn#4, + if=/usr/share/tabset/vt100, + is2=\E<\E>\E[6;?2;?7;?8h\E[4;20;?1;?3;?4;?5;?6;?18;?19l, use=vt100+4bsd, +# (adm42: removed obsolete ":ma=^K^P:" -- esr) +adm42|LSI adm42, + OTbs, am, + cols#80, lines#24, + bel=^G, cbt=\EI, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ht=^I, + il1=\EE$<270>, ind=\n, invis@, ip=$<6*>, kcub1=^H, kcud1=\n, + kcuf1=^L, kcuu1=^K, khome=^^, pad=^?, rmir=\Er, rmul@, + smir=\Eq, smul@, use=adm+sgr, +# The following termcap for the Lear Siegler ADM-42 leaves the +# "system line" at the bottom of the screen blank (for those who +# find it distracting otherwise) +adm42-ns|LSI adm-42 with no system line, + cbt=\EI\EF \011, clear=\E;\EF \011, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<6>\EF \011, + dch1=\EW\EF \011, dl1=\ER\EF \011, ed=\EY\EF \011, + el=\ET\EF \011, il1=\EE\EF \011, rmir=\Er\EF \011, + smir=\Eq\EF \011, use=adm42, +# ADM 1178 terminal -- rather like an ADM-42. Manual is dated March 1 1985. +# The insert mode of this terminal is commented out because it's broken for our +# purposes in that it will shift the position of every character on the page, +# not just the cursor line! +# From: Michael Driscoll <fenris@lightspeed.net> 10 July 1996 +adm1178|1178|LSI adm1178, + am, + cols#80, lines#24, xmc#1, + bel=^G, bold=\E(, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + cvvis=\EC\E3 \E3(, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, + home=^^, ht=^I, il1=\EE, ind=\n, ip=$<6*/>, kbs=^H, kcub1=^H, + kcud1=\n, nel=\r\n, pad=^?, rev=\EG4, rmso=\EG0, rmul=\EG0, + sgr0=\E), smso=\EG4, smul=\EG1, + +#### Prime +# +# Yes, Prime made terminals. These entries were posted by Kevin J. Cummings +# <cummings@primerd.prime.com> on 14 Dec 1992 and lightly edited by esr. +# Prime merged with ComputerVision in the late 1980s; you can reach them at: +# +# ComputerVision Services +# 500 Old Connecticut Path +# Framingham, Mass. +# + +# Standout mode is dim reverse-video. +pt100|pt200|wren|fenix|Prime pt100/pt200, + am, bw, mir, msgr, + cols#80, it#8, lines#24, + cbt=\E[Z, clear=\E?, cr=\r, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\ED, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E0%p1%{33}%+%c%p2%{33}%+%c, cuu=\E[%p1%dA, + cuu1=\EM, 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, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E$A, nel=\r\n, + rmcup=, rmir=\E[4l, rmkx=\E[>13l, rmso=\E[m, rmul=\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, +pt100w|pt200w|wrenw|fenixw|Prime pt100/pt200 in 132-column mode, + cols#132, + cup=\E[%i%p1%d;%p2%dH, use=pt100, +pt250|Prime PT250, + rmso@, smso@, use=pt100, +pt250w|Prime PT250 in 132-column mode, + rmso@, smso@, use=pt100w, + +#### Qume (qvt) +# +# Qume, Inc. +# 3475-A North 1st Street +# San Jose CA 95134 +# Vox: (800)-457-4447 +# Fax: (408)-473-1510 +# Net: josed@techsupp.wyse.com (Jose D'Oliveira) +# +# Qume was bought by Wyse, but still (as of early 1995) has its own support +# group and production division. +# +# Discontinued Qume models: +# +# The qvt101 and qvt102 listed here are long obsolete; so is the qvt101+ +# built to replace them, and a qvt119+ which was a 101+ with available wide +# mode (132 columns). There was a qvt103 which added vt100/vt131 emulations +# and an ANSI-compatible qvt203 that replaced it. Qume started producing +# ANSI-compatible terminals with the qvt323 and qvt61. +# +# Current Qume models (as of February 1995): +# +# All current Qume terminals have ANSI-compatible operation modes. +# Qume is still producing the qvt62, which features emulations for other +# popular lines such as ADDS, and dual-host capabilities. The qvt82 is +# designed for use as a SCO ANSI terminal. The qvt70 is a color terminal +# with many emulations including Wyse370, Wyse 325, etc. Their newest +# model is the qvt520, which is vt420-compatible. +# +# There are some ancient printing Qume terminals under `Daisy Wheel Printers' +# +# If you inherit a Qume without docs, try Ctrl-Shift-Setup to enter its +# setup mode. Shift-s should be a configuration save to NVRAM. + +qvt101|qvt108|Qume qvt 101 and QVT 108, + xmc#1, use=qvt101+, + +# This used to have <cvvis=\E.2> but no <cnorm> or <civis>. The BSD termcap +# file had <cvvis=\EM4 \200\200\200>. I've done the safe thing and yanked +# both. The <rev> is from BSD, which also claimed bold=\E( and dim=\E). +# What seems to be going on here is that this entry was designed so that +# the normal highlight is bold and standout is dim plus something else +# (reverse-video maybe? But then, are there two <rev> sequences?) +# +# Added kdch1, kil1, kdl1 based on screenshot -TD: +# http://www.vintagecomputer.net/qume/qvt-108/qume_qvt-108_keyboard.jpg +qvt101+|qvt101p|Qume qvt 101 PLUS product, + am, bw, hs, ul, + cols#80, lines#24, xmc#0, + bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=\r, cub1=^H, cud1=\n, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\EY, el=\ET, + flash=\Eb$<200>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1, + ich1=\EQ, il1=\EE, ind=\n, invis@, kbs=^H, kcbt=\EI, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, + kel=\ET, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, kf3=^AB\r, + kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, + kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, mc4=\EA, mc5=\E@, + rmso=\E(, smso=\E0P\E), tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, +qvt102|Qume qvt 102, + cnorm=\E., use=qvt101, +# (qvt103: added <rmam>/<smam> based on init string -- esr) +qvt103|Qume qvt 103, + am, xenl, xon, + cols#80, it#8, lines#24, vt#3, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[2J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, + cuf=\E[%p1%dC, cuf1=\E[C$<2>, + cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, + 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, rc=\E8, + 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, sc=\E7, + 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, +qvt103-w|Qume qvt103 132 cols, + cols#132, lines#24, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt103, +qvt119+|qvt119p|qvt119|Qume qvt 119 and 119PLUS terminals, + am, hs, mir, msgr, + cols#80, lines#24, xmc#0, + bel=^G, cbt=\EI, clear=\E*1, cnorm=\E.4, cr=\r, cub1=^H, + cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, + el=\Et, flash=\En0$<200>\En1, fsl=\r, home=^^, ht=^I, + hts=\E1, il1=\EE, ind=\n, is2=\EDF\EC\EG0\Er\E(\E%EX, + kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^AI\r, + kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, + kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, + mc4=\EA, mc5=\E@, ri=\EJ, rmir=\Er, smir=\Eq, smul=\EG8, + tbc=\E3, tsl=\Eg\Ef, use=adm+sgr, +qvt119+-25|qvt119p-25|QVT 119 PLUS with 25 data lines, + lines#25, use=qvt119+, +qvt119+-w|qvt119p-w|qvt119-w|QVT 119 and 119 PLUS in 132 column mode, + cols#132, + is2=\EDF\EC\EG0\Er\E(\E%\EX\En4, use=qvt119+, +qvt119+-25-w|qvt119p-25-w|qvt119-25-w|QVT 119 and 119 PLUS 132 by 25, + lines#25, use=qvt119+, +qvt203|qvt203+|Qume qvt 203 Plus, + dch1=\E[P$<7>, dl1=\E[M$<99>, il1=\E[L$<99>, ind=\n$<30>, + ip=$<7>, kf0=\E[29~, kf1=\E[17~, kf2=\E[18~, kf3=\E[19~, + kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, + kf9=\E[28~, rmir=\E[4l, smir=\E[4h, use=qvt103, +qvt203-w|qvt203-w-am|Qume qvt 203 PLUS in 132 cols (w/advanced video), + cols#132, lines#24, + rs2=\E>\E[?3h\E[?4l\E[?5l\E[?8h, use=qvt203, +# +# Since a command is present for enabling 25 data lines, +# a specific terminfo entry may be generated for the 203. +# If one is desired for the QVT 119 PLUS then 25 lines must +# be selected in the status line (setup line 9). +# +qvt203-25|QVT 203 PLUS with 25 by 80 column mode, + cols#80, lines#25, + is2=\E[=40h\E[?3l, use=qvt203, +qvt203-25-w|QVT 203 PLUS with 25 by 132 columns, + cols#132, lines#25, + rs2=\E[?3h\E[=40h, use=qvt203, + +#### TeleVideo (tvi) +# +# TeleVideo +# 550 East Brokaw Road +# PO Box 49048 95161 +# San Jose CA 95112 +# Vox: (408)-954-8333 +# Fax: (408)-954-0623 +# +# +# These require incredible amounts of padding. +# +# All of these terminals (912 to 970 and the tvipt) are discontinued. Newer +# TeleVideo terminals are ANSI and PC-ANSI compatible. + +tvi803|TeleVideo 803, + clear=\E*$<10>, use=tvi950, + +# Vanilla tvi910 -- W. Gish <cswarren@violet> 10/29/86 +# Switch settings are: +# +# S1 1 2 3 4 +# D D D D 9600 +# D D D U 50 +# D D U D 75 +# D D U U 110 +# D U D D 135 +# D U D U 150 +# D U U D 300 +# D U U U 600 +# U D D D 1200 +# U D D U 1800 +# U D U D 2400 +# U D U U 3600 +# U U D D 4800 +# U U D U 7200 +# U U U D 9600 +# U U U U 19200 +# +# S1 5 6 7 8 +# U D X D 7N1 (data bits, parity, stop bits) (X means ignored) +# U D X U 7N2 +# U U D D 7O1 +# U U D U 7O2 +# U U U D 7E1 +# U U U U 7E2 +# D D X D 8N1 +# D D X U 8N2 +# D U D D 8O1 +# D U U U 8E2 +# +# S1 9 Autowrap +# U on +# D off +# +# S1 10 CR/LF +# U do CR/LF when CR received +# D do CR when CR received +# +# S2 1 Mode +# U block +# D conversational +# +# S2 2 Duplex +# U half +# D full +# +# S2 3 Hertz +# U 50 +# D 60 +# +# S2 4 Edit mode +# U local +# D duplex +# +# S2 5 Cursor type +# U underline +# D block +# +# S2 6 Cursor down key +# U send ^J +# D send ^V +# +# S2 7 Screen colour +# U green on black +# D black on green +# +# S2 8 DSR status (pin 6) +# U disconnected +# D connected +# +# S2 9 DCD status (pin 8) +# U disconnected +# D duplex +# +# S2 10 DTR status (pin 20) +# U disconnected +# D duplex +# (tvi910: removed obsolete ":ma=^Kk^Ll^R^L:"; added <khome>, <cub1>, <cud1>, +# <ind>, <hpa>, <vpa>, <am>, <msgr> from SCO entry -- esr) +tvi910|TeleVideo model 910, + OTbs, am, msgr, + cols#80, it#8, lines#24, xmc#1, + bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET, + home=\E=^A^A, hpa=\E]%p1%{32}%+%c, ht=^I, + if=/usr/share/tabset/stdcrt, ind=\n, invis@, kbs=^H, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kf0=^AI\r, kf1=^A@\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, + vpa=\E[%p1%{32}%+%c, use=adm+sgr, +# From: Alan R. Rogers <rogers%albany@csnet-relay> +# as subsequently hacked over by someone at SCO +# (tvi910+: removed obsolete ":ma=^K^P^L :" -- esr) +# +# Here are the 910+'s DIP switches (U = up, D = down, X = don't care): +# +# S1 1 2 3 4: +# D D D D 9600 D D D U 50 D D U D 75 D D U U 110 +# D U D D 135 D U D U 150 D U U D 300 D U U U 600 +# U D D D 1200 U D D U 1800 U D U D 2400 U D U U 3600 +# U U D D 4800 U U D U 7200 U U U D 9600 U U U U 19200 +# +# S1 5 6 7 8: +# U D X D 7N1 U D X U 7N2 U U D D 7O1 U U D U 7O2 +# U U U D 7E1 U U U U 7E2 D D X D 8N1 D D X U 8N2 +# D U D D 8O1 D U U U 8E2 +# +# S1 9 Autowrap (U = on, D = off) +# S1 10 CR/LF (U = CR/LF on CR received, D = CR on CR received) +# S2 1 Mode (U = block, D = conversational) +# S2 2 Duplex (U = half, D = full) +# S2 3 Hertz (U = 50, D = 60) +# S2 4 Edit mode (U = local, D = duplex) +# S2 5 Cursor type (U = underline, D = block) +# S2 6 Cursor down key (U = send ^J, D = send ^V) +# S2 7 Screen colour (U = green on black, D = black on green) +# S2 8 DSR status (pin 6) (U = disconnected, D = connected) +# S2 9 DCD status (pin 8) (U = disconnected, D = connected) +# S2 10 DTR status (pin 20) (U = disconnected, D = connected) +# +tvi910+|TeleVideo 910+, + dch1=\EW, dl1=\ER$<33*>, home=^^, ich1=\EQ, il1=\EE$<33*>, + kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, + kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, + ll=\E=7\s, use=tvi910, + +# (tvi912: removed obsolete ":ma=^K^P^L :", added <flash> and +# <khome> from BRL entry -- esr) +tvi912|tvi914|tvi920|old TeleVideo 912/914/920, + OTbs, OTpt, am, msgr, + cols#80, it#8, lines#24, xmc#1, + bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER$<33*>, ed=\Ey, el=\ET, flash=\Eb$<50/>\Ed, home=^^, + ht=^I, hts=\E1, ich1=\EQ, if=/usr/share/tabset/stdcrt, + il1=\EE$<33*>, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, + kcuu1=^K, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, + kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, + kf9=^AH\r, khome=^^, rmso=\Ek, rmul=\Em, smso=\Ej, smul=\El, + tbc=\E3, +# We got some new tvi912c terminals that act really weird on the regular +# termcap, so one of our gurus worked this up. Seems that cursor +# addressing is broken. +tvi912cc|tvi912 at Cowell College, + cup@, use=tvi912c, + +# tvi{912,920}[bc] - TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C +# From: Benjamin C. W. Sittler +# +# Someone has put a scanned copy of the manual online at: +# http://vt100.net/televideo/912b-om/ +# (https://vt100.net/manx/details/6,5484) +# +# These terminals were produced ca. 1979, and had a 12" monochrome +# screen, supported 75-9600 baud (no handshaking), monochrome, 7-bit +# ASCII, and were generally similar to adm3a but with attributes +# (including some with magic cookies), fancy half-duplex mode, and +# different bugs. +# +# Some operations require truly incredible amounts of padding. The +# insert_line (<il1>) and delete_line (<dl1>) operations in particular +# are so slow as to be nearly unusable. +# +# There may or may not have been a separate, earlier series of 912/920 +# terminals (without the "B" and "C" suffix); I have never seen one, +# and the manual only describes the "B" and "C" series. The 912 and 920 +# are quite distinct from the 914 and 924, which were much nicer non- +# magic-cookie terminals similar to the 950. +# +# This is a new description for the following TeleVideo terminals, +# distinguished chiefly by their keyboards: +# +# TVI-912B - very odd layout, no function keys (84 keys) +# TVI-920B - typewriter layout, no function keys (103 keys) +# TVI-912C - very odd layout, function keys F1-F11 (82 keys) +# TVI-920C - typewriter layout, function keys F1-F11 (101 keys) +# +# To choose a setting for the TERM variable, start with the model: +# +# Model || base name +# ----------||----------- +# TVI-912B || tvi912b +# TVI-912C || tvi912c +# TVI-920B || tvi920b +# TVI-920C || tvi920c +# +# Then add a suffix from the following table describing installed options +# and how you'd like to use the terminal: +# +# Use Video | Second | Visual | Magic | Page || feature +# Attributes | Page | Bell | Cookies | Print || suffix +# ------------|--------|--------|---------|-------||--------- +# No | No | N/A | N/A | No || -unk +# No | No | N/A | N/A | Yes || -p +# No | Yes | No | N/A | No || -2p-unk +# No | Yes | No | N/A | Yes || -2p-p +# No | Yes | Yes | N/A | No || -vb-unk +# No | Yes | Yes | N/A | Yes || -vb-p +# Yes | No | N/A | No | N/A || +# Yes | No | N/A | Yes | N/A || -mc +# Yes | Yes | No | No | N/A || -2p +# Yes | Yes | No | Yes | N/A || -2p-mc +# Yes | Yes | Yes | No | N/A || -vb +# Yes | Yes | Yes | Yes | N/A || -vb-mc +# +# So e.g. a model 920 C with second page memory option, visual bell +# and no magic cookies would be tvi920c-vb; a model 912 B without the +# second page memory option and using magic cookies would be +# tvi912b-mc +# +# PADDING +# +# At 9600 baud, the terminal is prone to overflow its input buffer +# during complex operations (insert/delete +# character/line/screen/page), and it does not signal this over the +# RS232 cable. The typical symptom of an overrun is that the terminal +# starts beeping, and output becomes garbled. +# +# The padding delays in this terminfo were derived using tack(1) +# running on a Linux box connected to a TVI-920C with a later-model +# (A49C1-style) ROM running at 9600 baud, so your mileage may +# vary. The numbers below seem to give the terminal enough time so +# that it doesn't overflow its input buffer and start losing +# characters. +# +# KEYS +# +# If you want to use the FUNCT key on a tvi912[bc], use the +# corresponding tvi920[bc] terminfo with FUNCT + ... equivalents from +# the following table (these also work on the 920 series): +# +# Unshifted Function Keys: +# +# Key | capname|| Equivalent +# -----|--------||------------ +# F1 | <kf1> || FUNCT + @ +# F2 | <kf2> || FUNCT + A +# F3 | <kf3> || FUNCT + B +# F4 | <kf4> || FUNCT + C +# F5 | <kf5> || FUNCT + D +# F6 | <kf6> || FUNCT + E +# F7 | <kf7> || FUNCT + F +# F8 | <kf8> || FUNCT + G +# F9 | <kf9> || FUNCT + H +# F10 | <kf10> || FUNCT + I +# F11 | <kf11> || FUNCT + J +# +# Shifted Function Keys: +# +# SHIFT + Key | capname|| Equivalent +# -------------|--------||------------ +# SHIFT + F1 | <kf12> || FUNCT + ` +# SHIFT + F2 | <kf13> || FUNCT + a +# SHIFT + F3 | <kf14> || FUNCT + b +# SHIFT + F4 | <kf15> || FUNCT + c +# SHIFT + F5 | <kf16> || FUNCT + d +# SHIFT + F6 | <kf17> || FUNCT + e +# SHIFT + F7 | <kf18> || FUNCT + f +# SHIFT + F8 | <kf19> || FUNCT + g +# SHIFT + F9 | <kf20> || FUNCT + h +# SHIFT + F10 | <kf21> || FUNCT + i +# SHIFT + F11 | <kf22> || FUNCT + j +# +# PORTS AND SWITCH SETTINGS +# +# Here are the switch settings for the TVI-912B/TVI-920B and +# TVI-912C/TVI-920C: +# +# S1 (Line), and S3 (Printer) baud rates -- put one, and only one, switch down: +# 2: 9600 3: 4800 4: 2400 5: 1200 +# 6: 600 7: 300 8: 150 9: 75 +# 10: 110 +# +# S2 UART/Terminal options: +# Up Down +# 1: Not used Not allowed +# 2: Alternate character set Standard character set +# 3: Full duplex Half duplex +# 4: 50 Hz refresh 60 Hz refresh +# 5: No parity Send parity +# 6: 2 stop bits 1 stop bit +# 7: 8 data bits 7 data bits +# 8: Not used Not allowed on Rev E or lower +# 9: Even parity Odd parity +# 10: Steady cursor Blinking cursor +# (On Rev E or lower, use W25 instead of switch 10.) +# +# S5 UART/Terminal options: +# Open Closed +# 1: P3-6 Not connected DSR received on P3-6 +# 2: P3-8 Not connected DCD received on P3-8 +# +# 3 Open, 4 Open: P3-20 Not connected +# 3 Open, 4 Closed: DTR on when terminal is on +# 3 Closed, 4 Open: DTR is connected to RTS +# 3 Closed, 4 Closed: Not allowed +# +# 5 Closed: HDX printer (hardware control) Rev. K with extension port off, +# all data transmitted out of the modem port (P3) will also be +# transmitted out of the printer port (P4). +# +# 6 Open, 7 Open: Not allowed +# 6 Open, 7 Closed: 20ma current loop input +# 6 Closed, 7 Open: RS232 input +# 6 Closed, 7 Closed: Not allowed +# +# Jumper options: +# If the jumper is installed, the effect will occur (the next time the terminal +# is switched on). +# +# S4/W31: Enables automatic LF upon receipt of CR from +# remote or keyboard. +# S4/W32: Enables transmission of EOT at the end of Send. If not +# installed, a carriage return is sent. +# S4/W33: Disables automatic carriage return in column 80. +# S4/W34: Selects Page Print Mode as initial condition. If not +# installed, Extension Mode is selected. +# +# NON-STANDARD CAPABILITIES +# +# Sending <u9> or <u7> returns a cursor position report in the format +# YX\r, where Y and X are as in <cup>. This format is described in +# <u8> and <u6>, but it's not clear how one should write an +# appropriate scanf string, since we need to subtract %' ' from the +# character after reading it. The <u9> capability is used by tack(1) +# to synchronize during padding tests, and seems to work for that +# purpose. +# +# This description also includes the obsolete termcap capabilities +# has_hardware_tabs (<OTpt>) and backspaces_with_bs (<OTbs>). +# +# FEATURES NOT YET DESCRIBED IN THIS TERMINFO +# +# The FUNCT modifier actually works with every normal key by sending +# ^AX\r, where X is the sequence normally sent by that key. This is a +# sort of meta key not currently describable in terminfo. +# +# There are quite a few other keys (especially on the 920 models,) but +# they are for the most part only useful in block mode. +# +# These terminals have lots of forms manipulation features, mainly +# useful in block mode, including "clear X to nulls" (vs. "clear X to +# spaces"; nulls are sentinels for "send X" operations); "send X" +# operations for uploading all or part of the screen; and block-mode +# editing keys (they don't send escape sequences, but manipulate video +# memory directly). Block mode is used for local editing, and protect +# mode (in conjunction with the "write protect" attribute, +# a.k.a. half-intensity outside of protect mode) is used to control +# which parts of the screen are edited/sent/printed (by <mc0>). +# +# There are at least two major families of ROM, "early" and +# A49B1/A49C1; the major difference seems to be that the latter ROMs +# support a few extra escape sequences for manipulating the off-screen +# memory page, and for sending whole pages back to the host (mainly +# useful in block mode.) The descriptions in this file don't use any +# of those sequences: set cursor position including page (\E-PYX, +# where P is \s for page 0 and ! for page 1 [actually only the LSB of +# P is taken into account, so e.g. 0 and 1 work too,] and Y and X are +# as in <cup>); read cursor position (\E/), which is analogous to <u9> +# and returns PYX\r, where P is \s for page 0 or ! for page 1, and YX +# are as in <cup>, and some "send page" features mainly useful for +# forms manipulation. +# +# The keyboard enable (\E") and disable (\E#) sequences are unused, +# except that a terminal reset (<is2>) enables the keyboard. +# +# Auto-flip mode (\Ev) is likely faster than the scrolling mode (\Ew) +# enabled in <is2>, but auto-flip is very jarring so we don't use it. +# +# BUGS +# +# At least up to the A49B1 and A49C1 ROMs, there are no \Eb and \Ed +# sequences (I infer that in some TeleVideo terminal they may invert +# and uninvert the display) so the <flash> sequence given here is a +# cheesy page-flip instead. +# +# The back_tab (<cbt>) sequence (\EI) doesn't work according to +# tack(1), so it is not included in the descriptions below. +# +# It's not clear whether auto_left_margin (<bw>) flag should be set +# for these terminals; tack says yes, so it is set here, but this +# differs from other descriptions I've seen. +# +# Extension print mode (<mc5>) echoes all characters to the printer +# port [in addition to displaying them] except for the page print mode +# sequence (<mc4>); this is a slight violation of the terminfo +# definition for <mc5> but I don't expect it to cause problems. We +# reset to page print mode in <rs1> since it may have been enabled +# accidentally. +# +# The descriptions with plus signs (+) are building blocks. + +tvi912b-unk|tvi912c-unk|TeleVideo TVI-912B or TVI-912C (no attributes), + OTbs, OTpt, am, bw, + cols#80, it#8, lines#24, + bel=^G, clear=\032$<50>, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%' '%+%c%p2%' '%+%c, cuu1=^K, dch1=\EW$<30>, + dl1=\ER$<1*>$<100>, ed=\Ey$<2*>$<10>, el=\ET$<15>, + home=^^, ht=^I, hts=\E1, ich1=\EQ$<30>, + if=/usr/share/tabset/stdcrt, il1=\EE$<1*>$<100>, + ind=\n$<10>, is2=\Ew\EA\E'\E"\E(, kcub1=^H, kcud1=\n, + kcuf1=^L, kcuu1=^K, kdch1=^?, kent=\r, khome=^^, mc4=\EA, + mc5=\E@, rs1=\Ek\010\Em\010\Eq\032, tbc=\E3, u6=%c%c\r, + u7=\E?, u8=%c%c\r, u9=\E?, + +# This isn't included in the basic capabilities because it is +# typically unusable in combination with the full range of video +# attributes, since the magic cookie attributes turn into ASCII +# control characters, and the half-intensity ("protected") attribute +# converts all affected characters to spaces. + +tvi912b+printer|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C page print support, + mc0=\EP, + +# This uses half-intensity mode (<dim>) for standout (<smso>), and +# exposes no other attributes (half-intensity is the only attribute +# that does not generate a magic cookie.) + +tvi912b+dim|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C half-intensity attribute support, + msgr, + dim=\E), rmso=\E(, sgr=\E%?%p1%p5%|%t)%e(%;, sgr0=\E(, + smso=\E), + +# Full magic-cookie attribute support, with half-intensity reverse +# video for standout. Note that we add a space in the <dim> sequence +# to give a consistent magic-cookie count. Also note that <sgr> uses +# backspacing (in the TVI-supported order) to apply all requested +# attributes with only a single magic cookie. + +tvi912b+mc|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C full magic-cookie attribute support, + xmc#1, + blink=\E\^, dim=\E)\s, invis=\E_, rev=\Ej, rmso=\E(\Ek, + rmul=\Em, + sgr=\E%?%p1%p5%|%t)%e(%;\s\010\E%?%p1%p3%|%tj%ek%;\010\E%? + %p2%tl%em%;\010\E%?%p7%t_%e%?%p4%t\^%eq%;%;, + sgr0=\E(\Ek\010\Em\010\Eq, smso=\E)\Ej, smul=\El, + +# This uses the second page memory option to save & restore screen +# contents. If your terminal is missing the option, this description +# should still work, but that has not been tested. + +tvi912b+2p|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option support, + flash=\EK$<100>\EK, rmcup=\032$<50>\EK\E=7\s, + smcup=\EK\032$<50>\E(\Ek\010\Em\010\Eq\032$<50>, + +# This simulates flashing by briefly toggling to the other page +# (kludge!) + +tvi912b+vb|TeleVideo TVI-912B/TVI-920B and TVI-912C/TVI-920C second page memory option "visible bell" support, + bel=\EK$<100>\EK, use=tvi912b+2p, + +# Function keys (<kf12> .. <kf22> are shifted <kf1> .. <kf11>) + +tvi920b+fn|TeleVideo TVI-920B and TVI-920C function key support, + kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^A`\r, kf13=^Aa\r, + kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, kf17=^Ae\r, kf18=^Af\r, + kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, kf21=^Ai\r, kf22=^Aj\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, + +# Combinations of the basic building blocks + +tvi912b-2p-unk|tvi912c-2p-unk|tvi912b-unk-2p|tvi912c-unk-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes), + use=tvi912b+2p, use=tvi912b-unk, + +tvi912b-vb-unk|tvi912c-vb-unk|tvi912b-unk-vb|tvi912c-unk-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes), + use=tvi912b+vb, use=tvi912b-unk, + +tvi912b-p|tvi912c-p|TeleVideo TVI-912B or TVI-912C (no attributes; page print), + use=tvi912b+printer, use=tvi912b-unk, + +tvi912b-2p-p|tvi912c-2p-p|tvi912b-p-2p|tvi912c-p-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; no attributes; page print), + use=tvi912b+2p, use=tvi912b+printer, use=tvi912b-unk, + +tvi912b-vb-p|tvi912c-vb-p|tvi912b-p-vb|tvi912c-p-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; no attributes; page print), + use=tvi912b+vb, use=tvi912b+printer, use=tvi912b-unk, + +tvi912b-2p|tvi912c-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; half-intensity attribute), + use=tvi912b+2p, use=tvi912b+dim, use=tvi912b-unk, + +tvi912b-2p-mc|tvi912c-2p-mc|tvi912b-mc-2p|tvi912c-mc-2p|TeleVideo TVI-912B or TVI-912C (second page memory option; magic cookies), + use=tvi912b+2p, use=tvi912b+mc, use=tvi912b-unk, + +tvi912b-vb|tvi912c-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; half-intensity attribute), + use=tvi912b+vb, use=tvi912b+dim, use=tvi912b-unk, + +tvi912b-vb-mc|tvi912c-vb-mc|tvi912b-mc-vb|tvi912c-mc-vb|TeleVideo TVI-912B or TVI-912C (second page memory option "visible bell"; magic cookies), + use=tvi912b+vb, use=tvi912b+mc, use=tvi912b-unk, + +tvi912b|tvi912c|TeleVideo TVI-912B or TVI-912C (half-intensity attribute), + use=tvi912b+dim, use=tvi912b-unk, + +tvi912b-mc|tvi912c-mc|TeleVideo TVI-912B or TVI-912C (magic cookies), + use=tvi912b+mc, use=tvi912b-unk, + +tvi920b-unk|tvi920c-unk|TeleVideo TVI-920B or TVI-920C (no attributes), + use=tvi920b+fn, use=tvi912b-unk, + +tvi920b-2p-unk|tvi920c-2p-unk|tvi920b-unk-2p|tvi920c-unk-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes), + use=tvi920b+fn, use=tvi912b+2p, use=tvi912b-unk, + +tvi920b-vb-unk|tvi920c-vb-unk|tvi920b-unk-vb|tvi920c-unk-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes), + use=tvi920b+fn, use=tvi912b+vb, use=tvi912b-unk, + +tvi920b-p|tvi920c-p|TeleVideo TVI-920B or TVI-920C (no attributes; page print), + use=tvi920b+fn, use=tvi912b+printer, use=tvi912b-unk, + +tvi920b-2p-p|tvi920c-2p-p|tvi920b-p-2p|tvi920c-p-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; no attributes; page print), + use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+printer, + use=tvi912b-unk, + +tvi920b-vb-p|tvi920c-vb-p|tvi920b-p-vb|tvi920c-p-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; no attributes; page print), + use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+printer, + use=tvi912b-unk, + +tvi920b-2p|tvi920c-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; half-intensity attribute), + use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+dim, + use=tvi912b-unk, + +tvi920b-2p-mc|tvi920c-2p-mc|tvi920b-mc-2p|tvi920c-mc-2p|TeleVideo TVI-920B or TVI-920C (second page memory option; magic cookies), + use=tvi920b+fn, use=tvi912b+2p, use=tvi912b+mc, + use=tvi912b-unk, + +tvi920b-vb|tvi920c-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; half-intensity attribute), + use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+dim, + use=tvi912b-unk, + +tvi920b-vb-mc|tvi920c-vb-mc|tvi920b-mc-vb|tvi920c-mc-vb|TeleVideo TVI-920B or TVI-920C (second page memory option "visible bell"; magic cookies), + use=tvi920b+fn, use=tvi912b+vb, use=tvi912b+mc, + use=tvi912b-unk, + +tvi920b|tvi920c|TeleVideo TVI-920B or TVI-920C (half-intensity attribute), + use=tvi920b+fn, use=tvi912b+dim, use=tvi912b-unk, + +tvi920b-mc|tvi920c-mc|TeleVideo TVI-920B or TVI-920C (magic cookies), + use=tvi920b+fn, use=tvi912b+mc, use=tvi912b-unk, + +# TeleVideo 921 and variants +# From: Tim Theisen <tim@cs.wisc.edu> 22 Sept 1995 +# (tvi921: removed :ko=bt: before translation, I see no backtab cap; +# also added empty <acsc> to suppress tic warning -- esr) +tvi921|TeleVideo model 921 with sysline same as page & real vi function, + OTbs, OTpt, am, hs, xenl, xhp, + cols#80, lines#24, xmc#0, + acsc=, clear=^Z, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K, + cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY, + el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ, + if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n, invis@, + is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, kcub1=^H, + kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER$<1*/>, + ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, nel=\r\n, rmacs=\E%%, + rmir=, smacs=\E$, smir=, tsl=\Ef\EG0, use=adm+sgr, +# without the beeper +# (tvi92B: removed :ko=bt: before translation, I see no backtab cap; +# also added empty <acsc> to suppress tic warning -- esr) +tvi92B|TeleVideo model 921 with sysline same as page & real vi function & no beeper, + am, hs, xenl, xhp, + cols#80, lines#24, xmc#0, + acsc=, clear=^Z, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<3/>, cuu1=^K, + cvvis=\E.2, dch1=\EW, dl1=\ER$<1*/>, dsl=\Ef\r\Eg, ed=\EY, + el=\ET, flash=\Eb$<200/>\Ed, fsl=\Eg, home=^^, ht=^I, + ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n, + invis@, is2=\El\E"\EF1\E.3\017\EA\E<, kbs=^H, kclr=^Z, + kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, + kdl1=\ER$<1*/>, ked=\EY, kel=\ET, kich1=\EQ, kil1=\EE, + nel=\r\n, rmacs=\E%%, smacs=\E$, tsl=\Ef\EG0, use=adm+sgr, +# (tvi92D: removed :ko=bt: before translation, I see no backtab cap -- esr) +tvi92D|tvi92B with DTR instead of XON/XOFF & better padding, + dl1=\ER$<2*/>, il1=\EE$<2*/>, + is2=\El\E"\EF1\E.3\016\EA\E<, kdl1=\ER$<2*/>, + kil1=\EE$<2*/>, use=tvi92B, + +# (tvi924: This used to have <dsl=\Es0>, <fsl=\031>. I put the new strings +# in from a BSD termcap file because it looks like they do something the +# old ones skip -- esr) +tvi924|TeleVideo tvi924, + am, bw, hs, in, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, wsl#80, xmc#0, + bel=^G, blink=\EG2, cbt=\EI, civis=\E.0, clear=\E*0, + cnorm=\E.3, cr=\r, csr=\E_%p1%{32}%+%c%p2%{32}%+%c, + cub1=^H, cud1=^V, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, cvvis=\E.1, + dch1=\EW, dl1=\ER, dsl=\Es0\Ef\031, ed=\Ey, el=\Et, + flash=\Eb$<200>\Ed, fsl=\031\Es1, home=^^, ht=^I, hts=\E1, + ich1=\EQ, if=/usr/share/tabset/stdcrt, il1=\EE, ind=\n, + invis@, is1=\017\E%\E'\E(\EDF\EC\EG0\EN0\Es0\Ev0, + kbs=^H, kclr=\E*0, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, + kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf0=^A@\r, kf1=^AA\r, + kf10=^AJ\r, kf11=^AK\r, kf12=^AL\r, kf13=^AM\r, kf14=^AN\r, + kf15=^AO\r, kf2=^AB\r, kf3=^AC\r, kf4=^AD\r, kf5=^AE\r, + kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, kf9=^AI\r, khome=^^, + kich1=\EQ, kil1=\EE, lf0=F1, lf1=F2, lf10=F11, lf2=F3, lf3=F4, + lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, + pfkey=\E|%p1%{49}%+%c%p2%s\031, ri=\Ej, tbc=\E3, tsl=\Ef, + use=adm+sgr, + +# TVI925 DIP switches. In each of these, D = Down and U = Up, +# +# Here are the settings for the external (baud) switches (S1): +# +# Position Baud +# 7 8 9 10 [Printer] +# 1 2 3 4 [Main RS232] +# ----------------------------------------------------- +# D D D D 9600 +# D D D U 50 +# D D U D 75 +# D D U U 110 +# D U D D 135 +# D U D U 150 +# D U U D 300 +# D U U U 600 +# U D D D 1200 +# U D D U 1800 +# U D U D 2400 +# U D U U 3600 +# U U D D 4800 +# U U D U 7200 +# U U U D 9600 +# U U U U 19200 +# +# +# Settings for word length and stop-bits (S1) +# +# Position Description +# 5 6 +# --------------------------- +# U - 7-bit word +# D - 8-bit word +# - U 2 stop bits +# - D 1 stop bit +# +# +# S2 (external) settings +# +# Position Up Dn Description +# -------------------------------------------- +# 1 X Local edit +# X Duplex edit (transmit editing keys) +# -------------------------------------------- +# 2 X 912/920 emulation +# X 925 +# -------------------------------------------- +# 3 X +# 4 X No parity +# 5 X +# -------------------------------------------- +# 3 X +# 4 X Odd parity +# 5 X +# -------------------------------------------- +# 3 X +# 4 X Even parity +# 5 X +# -------------------------------------------- +# 3 X +# 4 X Mark parity +# 5 X +# -------------------------------------------- +# 3 X +# 4 X Space parity +# 5 X +# -------------------------------------------- +# 6 X White on black display +# X Black on white display +# -------------------------------------------- +# 7 X Half Duplex +# 8 X +# -------------------------------------------- +# 7 X Full Duplex +# 8 X +# -------------------------------------------- +# 7 X Block mode +# 8 X +# -------------------------------------------- +# 9 X 50 Hz +# X 60 Hz +# -------------------------------------------- +# 10 X CR/LF (Auto LF) +# X CR only +# +# S3 (internal switch) settings: +# +# Position Up Dn Description +# -------------------------------------------- +# 1 X Keyclick off +# X Keyclick on +# -------------------------------------------- +# 2 X English +# 3 X +# -------------------------------------------- +# 2 X German +# 3 X +# -------------------------------------------- +# 2 X French +# 3 X +# -------------------------------------------- +# 2 X Spanish +# 3 X +# -------------------------------------------- +# 4 X Blinking block cursor +# 5 X +# -------------------------------------------- +# 4 X Blinking underline cursor +# 5 X +# -------------------------------------------- +# 4 X Steady block cursor +# 5 X +# -------------------------------------------- +# 4 X Steady underline cursor +# 5 X +# -------------------------------------------- +# 6 X Screen blanking timer (ON) +# X Screen blanking timer (OFF) +# -------------------------------------------- +# 7 X Page attributes +# X Line attributes +# -------------------------------------------- +# 8 X DCD disconnected +# X DCD connected +# -------------------------------------------- +# 9 X DSR disconnected +# X DSR connected +# -------------------------------------------- +# 10 X DTR Disconnected +# X DTR connected +# -------------------------------------------- +# +# (tvi925: BSD has <clear=\E*>. I got <is2> and <ri> from there -- esr) +tvi925|TeleVideo 925, + OTbs, am, bw, hs, ul, + cols#80, lines#24, xmc#1, + bel=^G, cbt=\EI, clear=^Z, cnorm=\E.4, cr=\r, cub1=^H, cud1=^V, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + cvvis=\E.2, dch1=\EW, dl1=\ER, dsl=\Eh, ed=\EY, el=\ET, + flash=\Eb$<200>\Ed, fsl=\r\Eg, home=^^, ht=^I, hts=\E1, + ich1=\EQ, il1=\EE, ind=\n, invis@, is2=\El\E", kbs=^H, kclr=^Z, + kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, + ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, + kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, + kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, ri=\Ej, tbc=\E3, + tsl=\Eh\Ef, use=adm+sgr, +# TeleVideo 925 from Mitch Bradley <sun!wmb> via BRL +# to avoid "magic cookie" standout glitch: +tvi925-hi|TeleVideo Model 925 with half intensity standout mode, + xmc@, + kbs=^H, kcub1=^H, kcud1=\n, rmso=\E(, smso=\E), use=tvi925, + +# From: Todd Litwin <litwin@litwin.jpl.nasa.gov> 28 May 1993 +# Originally Tim Curry, Univ. of Central Fla., <duke!ucf-cs!tim> 5/21/82 +# for additional capabilities, +# The following tvi descriptions from B:pjphar and virus!mike +# is for all 950s. It sets the following attributes: +# full duplex (\EDF) write protect off (\E() +# conversation mode (\EC) graphics mode off (\E%) +# white on black (\Ed) auto page flip off (\Ew) +# turn off status line (\Eg) clear status line (\Ef\r) +# normal video (\E0) monitor mode off (\EX or \Eu) +# edit mode (\Er) load blank char to space (\Ee\040) +# line edit mode (\EO) enable buffer control (^O) +# protect mode off (\E\047) duplex edit keys (\El) +# program unshifted send key to send line all (\E016) +# program shifted send key to send line unprotected (\E004) +# set the following to nulls: +# field delimiter (\Ex0\200\200) +# line delimiter (\Ex1\200\200) +# start-protected field delimiter (\Ex2\200\200) +# end-protected field delimiter (\Ex3\200\200) +# set end of text delimiter to carriage return/null (\Ex4\r\200) +# +# TVI 950 Switch Setting Reference Charts +# +# TABLE 1: +# +# S1 1 2 3 4 5 6 7 8 9 10 +# +-----------------------+-----+-----+-----------------------+ +# | Computer Baud Rate |Data |Stop | Printer Baud Rate | +# | |Bits |Bits | | +# +------+-----------------------+-----+-----+-----------------------+ +# | Up | See | 7 | 2 | See | +# +------+-----------------------+-----+-----+-----------------------+ +# | Down | TABLE 2 | 8 | 1 | TABLE 2 | +# +------+-----------------------+-----+-----+-----------------------+ +# +# +# S2 1 2 3 4 5 6 7 8 9 10 +# +-----+-----+-----------------+-----+-----------+-----+-----+ +# |Edit |Cursr| Parity |Video|Transmiss'n| Hz |Click| +# +------+-----+-----+-----------------+-----+-----------+-----+-----+ +# | Up | Dplx|Blink| See |GonBk| See | 60 | Off | +# +------+-----+-----+-----------------+-----+-----------+-----+-----+ +# | Down |Local|St'dy| TABLE 3 |BkonG| CHART | 50 | On | +# +------+-----+-----+-----------------+-----+-----------+-----+-----+ +# +# TABLE 2: +# +# +-----------+-----+-----+-----+-----+-----------+ +# | Display | 1 | 2 | 3 | 4 | Baud | +# +-----------+-----+-----+-----+-----+ | +# | Printer | 7 | 8 | 9 | 10 | Rate | +# +-----------+-----+-----+-----+-----+-----------+ +# | D | D | D | D | 9600 | +# | U | D | D | D | 50 | +# | D | U | D | D | 75 | +# | U | U | D | D | 110 | +# | D | D | U | D | 135 | +# | U | D | U | D | 150 | +# | D | U | U | D | 300 | +# | U | U | U | D | 600 | +# | D | D | D | U | 1200 | +# | U | D | D | U | 1800 | +# | D | U | D | U | 2400 | +# | U | U | D | U | 3600 | +# | D | D | U | U | 4800 | +# | U | D | U | U | 7200 | +# | D | U | U | U | 9600 | +# | U | U | U | U | 19200 | +# +-----+-----+-----+-----+-----------+ +# +# TABLE 3: +# +-----+-----+-----+-----------+ +# | 3 | 4 | 5 | Parity | +# +-----+-----+-----+-----------+ +# | X | X | D | None | +# | D | D | U | Odd | +# | D | U | U | Even | +# | U | D | U | Mark | +# | U | U | U | Space | +# +-----+-----+-----+-----------+ +# X = don't care +# +# CHART: +# +-----+-----+-----------------+ +# | 7 | 8 | Communication | +# +-----+-----+-----------------+ +# | D | D | Half Duplex | +# | D | U | Full Duplex | +# | U | D | Block | +# | U | U | Local | +# +-----+-----+-----------------+ +# +# (tvi950: early versions had obsolete ":ma=^Vj^Kk^Hh^Ll^^H:". +# I also inserted <ich1> and <kich1>; the :ko: string indicated that <ich> +# should be present and all tvi native modes use the same string for this. +# Finally, note that BSD has cud1=^V. -- esr) +# +# TVI 950 has 11 function-keys -TD +tvi950|TeleVideo 950, + OTbs, am, hs, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, xmc#1, + acsc=jHkGlFmEnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, clear=\E*, + cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, dsl=\Eg\Ef\r, ed=\Ey, el=\Et, flash=\Eb$<200/>\Ed, + fsl=\r, home=^^, ht=^I, hts=\E1, ich1=\EQ, il1=\EE, ind=\n, + invis@, + is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\El + \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0 + \Ef\r, + kbs=^H, kcbt=\EI, kclr=\E*, kcub1=^H, kcud1=^V, kcuf1=^L, + kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\Ey, kel=\Et, kf1=^A@\r, + kf10=^AI\r, kf11=^AJ\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, + kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, + khome=^^, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, ri=\Ej, + rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, tbc=\E3, + tsl=\Eg\Ef, kF1=^A`\r, kF10=^Ai\r, kF11=^Aj\r, kF2=^Aa\r, + kF3=^Ab\r, kF4=^Ac\r, kF5=^Ad\r, kF6=^Ae\r, kF7=^Af\r, + kF8=^Ag\r, kF9=^Ah\r, use=adm+sgr, +# +# is for 950 with two pages adds the following: +# set 48 line page (\E\\2) +# place cursor at page 0, line 24, column 1 (\E-07 ) +# set local (no send) edit keys (\Ek) +# +# two page 950 adds the following: +# when entering ex, set 24 line page (\E\\1) +# when exiting ex, reset 48 line page (\E\\2) +# place cursor at 0,24,1 (\E-07 ) +# set duplex (send) edit keys (\El) when entering vi +# set local (no send) edit keys (\Ek) when exiting vi +# +tvi950-2p|TeleVideo 950 w/2 pages, + is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek + \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0 + \E\\2\E-07\s\011, + rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, + smkx=\El, use=tvi950, +# +# is for 950 with four pages adds the following: +# set 96 line page (\E\\3) +# place cursor at page 0, line 24, column 1 (\E-07 ) +# +# four page 950 adds the following: +# when entering ex, set 24 line page (\E\\1) +# when exiting ex, reset 96 line page (\E\\3) +# place cursor at 0,24,1 (\E-07 ) +# +tvi950-4p|TeleVideo 950 w/4 pages, + is2=\EDF\EC\Ed\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek + \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0 + \E\\3\E-07\s\011, + rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, + smkx=\El, use=tvi950, +# +# <is2> for reverse video 950 changes the following: +# set reverse video (\Ed) +# +# set vb accordingly (\Ed ...delay... \Eb) +# +tvi950-rv|TeleVideo 950 rev video, + flash=\Ed$<200/>\Eb, + is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\El + \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r + \0, + use=tvi950, + +# tvi950-rv-2p uses the appropriate entries from 950-2p and 950-rv +tvi950-rv-2p|TeleVideo 950 rev video w/2 pages, + flash=\Ed$<200/>\Eb, + is2=\EDF\EC\Eb\EG0\Eg\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek + \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0 + \E\\2\E-07\s, + rmcup=\E\\2\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, + smkx=\El, use=tvi950, + +# tvi950-rv uses the appropriate entries from 950-4p and 950-rv +tvi950-rv-4p|TeleVideo 950 rev video w/4 pages, + flash=\Ed$<200/>\Eb, + is2=\EDF\EC\Eb\EG0\Er\EO\E'\E(\E%\Ew\EX\Ee\s\017\011\Ek + \E016\E004\Ex0\0\0\Ex1\0\0\Ex2\0\0\011\Ex3\0\0\Ex4\r\0 + \E\\3\E-07\s, + rmcup=\E\\3\E-07\s, rmkx=\Ek, smcup=\E\\1\E-07\s, + smkx=\El, use=tvi950, +# From: Andreas Stolcke <stolcke@icsi.berkeley.edu> +# (tvi955: removed obsolete ":ma:=^Vj^Kk^Hh^Ll^^H"; +# removed incorrect (and overridden) ":do=^J:"; fixed broken continuations in +# the :rs: string, inserted the <ich> implied by the termcap :ko: string. Note +# the :ko: string had :cl: in it, which means that one of the original +# <clear=\E*>, <kclr=\EY> had to be wrong; set <kclr=\E*> because that's what +# the 950 has. Finally, corrected the <kel> string to match the 950 and what +# ko implies -- esr) +# If the BSD termcap file was right, <cup=\E=%p1%{32}%+%c%p2%{32}%+%c> would +# also work. +tvi955|TeleVideo 955, + OTbs, mc5i, msgr@, + it#8, xmc@, + acsc=0_`RjHkGlFmEnIoPqKsQtMuLvOwNxJ, blink=\EG2, + civis=\E.0, cnorm=\E.2, cud1=^V, cup=\E[%i%p1%d;%p2%dH, + cvvis=\E.1, dim=\E[=5h, ind@, invis=\EG1, + is2=\E[=3l\EF1\Ed\EG0\E[=5l\E%\El, kctab=\E2, khts=\E1, + knp=\EK, kpp=\EJ, krmir=\EQ, ktbc=\E3, mc0=\EP, rmacs=\E%, + rmam=\E[=7l, rmxon=^N, + rs1=\EDF\EC\Eg\Er\EO\E'\E(\Ew\EX\Ee\s\017\E0P\E6\0\E0p\E4\0 + \Ef\r, + sgr0=\EG0\E[=5l, smacs=\E$, smam=\E[=7h, smxon=^O, + use=tvi950, +tvi955-w|955-w|TeleVideo 955 w/132 cols, + cols#132, + is2=\E[=3h\EF1\Ed\EG0\E[=5l\E%\El, use=tvi955, +# use half-intensity as normal mode, full intensity as <bold> +tvi955-hb|955-hb|TeleVideo 955 half-bright, + bold=\E[=5l, dim@, is2=\E[=3l\EF1\Ed\EG0\E[=5h\E%\El, + sgr0=\EG0\E[=5h, use=tvi955, +# From: Humberto Appleton <beto@cs.utexas.edu>, 880521 UT Austin +# (tvi970: removed ":sg#0:"; removed <rmso>=\E[m, <rmul>=\E[m; +# added <am>/<csr>/<home>/<hpa>/<vpa>/<smcup>/<rmcup> from BRL. +# According to BRL we could have <rmkx>=\E>, <smkx>=\E= but I'm not sure what +# it does to the function keys. I deduced <rmam>/<smam>. +# also added empty <acsc> to suppress tic warning, -- esr) +tvi970|TeleVideo 970, + OTbs, OTpt, am, da, db, mir, msgr, + 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, + is2=\E<\E[?21l\E[19h\E[1Q\E[10l\E[7l\E[H\E[2J, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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, khome=\E[H, 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, +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, + use=tvi970, +tvi970-2p|TeleVideo 970 with using 2 pages of memory, + rmcup=\E[H\E[J\E[V, smcup=\E[U\E[?20l\E[?7h\E[1Q, + use=tvi970, +# Works with vi and rogue. NOTE: Esc v sets autowrap on, Esc u sets 80 chars +# per line (rather than 40), Esc K chooses the normal character set. Not sure +# padding is needed, but adapted from the tvi920c termcap. The <smso> and +# <smul> strings are klutzy, but at least use no screen space. +# (tvipt: removed obsolete ":ma=^Kk^Ll^R^L:". I wish we knew <rmam>, +# its absence means <smam>=\Ev isn't safe to use. -- esr) +# From: Gene Rochlin <armsis@amber.berkeley.edu> 9/19/84. +# The <ed>/<kf0>/<kf1>/<khome>/<mc4>, and <mc5> caps are from BRL, which says: +# F1 and F2 should be programmed as ^A and ^B; required for UNIFY. +tvipt|TeleVideo personal terminal, + OTbs, am, + cols#80, lines#24, + cbt=\EI, clear=^Z, cub1=^H, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER$<5*>, + ed=\EY, el=\ET, home=^^, if=/usr/share/tabset/stdcrt, + il1=\EE$<5*>, is2=\Ev\Eu\EK, kbs=^H, kcub1=^H, kcud1=\n, + kcuf1=^L, kcuu1=^K, kf0=^A, kf1=^B, khome=^^, mc4=^T, mc5=^R, + rmso=\EF, rmul=\EF, smso=\EG1@A\EH, smul=\EG1B@\EH, +# From: Nathan Peterson <nathan@sco.com>, 03 Sep 1996 +tvi9065|TeleVideo 9065, + am, bw, chts, hs, mc5i, mir, msgr, xenl, xon, + cols#80, it#8, lh#1, lines#25, lm#0, lw#9, ma#4, nlab#8, vt#0, + wnum#0, wsl#30, + acsc='r0_jhkglfmeniopqksqtmulvownxj, bel=^G, + blink=\EG2, bold=\EG\,, cbt=\EI, civis=\E.0, clear=^Z, + cnorm=\E.3, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, + cub1=^H, cud=\E[%p1%dB, cud1=^V, cuf=\E[%p1%dC, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu=\E[%p1%dA, + cuu1=^K, cvvis=\E.2, dch=\E[%p1%dP, dch1=\EW, dim=\EGp, + dl=\E[%p1%dM, dl1=\ER, dsl=\E_30\r, ech=\E[%p1%d@, ed=\EY, + el=\ET, flash=\Eb$<15>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1, + ich=\E[%p1%d@, if=/usr/share/tabset/stdcrt, + il=\E[%p1%dL, il1=\EE, ind=\n, invis=\EG1, ip=$<3>, + is1=\E"\E%\E'\E(\EG@\EO\EX\E[=5l\E[=6l\E[=7h\Ed\Er, + is2=\EF2\EG0\E\\L, is3=\E<\E[=4l\E[=8h, kHOM=\E\s\s\s, + kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, + kdch1=\EW, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, kf12=^AK\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, ll=\E[25;1H, + mc0=\E[0;0i, mc4=\Ea, mc5=\E`, nel=\r\n, + pfkey=\E|%p1%{48}%+%c3%p2%s\031, + pfloc=\E|%p1%{48}%+%c2%p2%s\031, + pfx=\E|%p1%{48}%+%c1%p2%s\031, + pln=\E_%p1%{63}%+%c%p2%s\r, prot=\E&, + rep=\E[%p2%db%p1%c, rev=\EG4, + rf=/usr/share/tabset/stdcrt, ri=\Ej, rmacs=\E%%, + rmam=\E[=7l, rmcup=\E.3\Er\E[1;25r\E[25;0H, rmdc=\0, + rmir=\Er, rmln=\E[4;1v, rmso=\EG0, rmul=\EG0, rmxon=^N, + rs1=\EC\EDF\E[0;0v\E[8;1v\E[=65l, + rs2=\E.b\E[10;20v\E[14;1v\E[3;0v\E[7;0v\E[=11.h\E[=12.h\E[=1 + 3.h\E[=14.h\E[=15l\E[=20h\E[=60l\E[=61h\E[=9l\E[=10l\E[= + 21l\E[=23l\E[=3l\E_40\E_50\En\Ew\Ee\s\Ex0\0\0\Ex1\0\0 + \Ex2\0\0\Ex3\0\0\Ex4\0\0\E1, + rs3=\E[=19h\E.3\E9\E0O\0\0\0\0\0\E0o\0\0\0\0\0\E0J\177\0\0 + \0\0, + sgr=\EG0%?%p1%t\EGt%;%?%p2%t\EG8%;%?%p3%t\EG4%;%?%p4%t\EG2%; + %?%p5%t\EGp%;%?%p6%t\EG\,%;%?%p7%t\EG1%;%?%p8%t\E&%;%? + %p9%t\E$%e\E%%%;, + sgr0=\EG0\E%, smacs=\E$, smam=\E=7h, smcup=\E.2, smdc=\Er, + smir=\Eq, smln=\E[4;2v, smso=\EGt, smul=\EG8, smxon=^O, + tbc=\E3, tsl=\E[4;1v\E_30, uc=\EG8\EG0, use=ecma+index, + +#### Visual (vi) +# +# In September 1993, Visual Technology of Westboro, Massachusetts, +# merged with White Pine Software of Nashua, New Hampshire. +# +# White Pine Software may be contacted at +1 603/886-9050. +# Or visit White Pine on the World Wide Web at URL http://www.wpine.com. +# + +# Visual 50 from Beau Shekita, BTL-Whippany <whuxlb!ejs> +# Recently I hacked together the following termcap for Visual +# Technology's Visual 50 terminal. It's a slight modification of +# the vt52 termcap. +# It's intended to run when the Visual 50 is in vt52 emulation mode +# (I know what you're thinking; if it's emulating a vt52, then why +# another termcap? Well, it turns out that the Visual 50 can handle +# <dl1> and db(?) among other things, which the vt52 can't) +# The termcap works OK for the most part. The only problem is on +# character inserts. The whole line gets painfully redrawn for each +# character typed. Any suggestions? +# Beau's entry is combined with the vi50 entry from University of Wisconsin. +# Note especially the <il1> function. <kf4>-<kf6> are really l4-l6 in +# disguise; <kf7>-<kf9> are really l1-l3. +vi50|Visual 50, + OTbs, OTpt, am, da, db, msgr, + cols#80, it#8, lines#24, + OTnl=\n, bel=^G, cbt=\Ez$<4/>, clear=\EH\EJ, cr=\r, cub1=^H, + cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=\EA, dl1=\EM$<3*/>, ed=\EJ, el=\EK$<16/>, home=\EH, + ht=^I, il1=\EL, ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, kf1=\EP, kf2=\EQ, kf3=\ER, kf4=\EV, + kf5=\EE, kf6=\E], kf7=\EL, kf8=\Ev, kf9=\EM, khome=\EH, + nel=\r\n, ri=\EI, rmso=\ET, rmul=\EW, smso=\EU, smul=\ES, +# this one was BSD & SCO's vi50 +vi50adm|Visual 50 in adm3a mode, + am, msgr, + cols#80, it#8, lines#24, + bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\EM, + ed=\Ek, el=\EK, home=\EH, ht=^I, il1=\EL, ind=\n, kbs=^H, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, + rmso=\ET, smso=\EU, +# From: Jeff Siegal <jbs@quiotix.com> +vi55|Visual 55, + OTbs, am, mir, msgr, + cols#80, it#8, lines#24, + clear=\Ev, csr=\E_%p1%{65}%+%c%p2%{65}%+%c, cub1=^H, + cud1=\n, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=\EA, dch1=\Ew, dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, + il1=\EL, is2=\Ev\E_AX\Eb\EW\E9P\ET, kbs=^H, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EI, rmir=\Eb, rmso=\ET, + smir=\Ea, smso=\EU, + +# Visual 200 from BRL +# The following switch settings are assumed for normal operation: +# FULL_DUPLEX SCROLL CR +# AUTO_NEW_LINE_ON VISUAL_200_EMULATION_MODE +# Other switches may be set for operator convenience or communication +# requirements. +# Character insertion is kludged in order to get around the "beep" misfeature. +# (This cap is commented out because <smir>/<rmir> is more efficient -- esr) +# Supposedly "4*" delays should be used for <il1>, <ed>, <clear>, <dch1>, +# and <dl1> strings, but we seem to get along fine without them. +vi200|Visual 200, + OTbs, OTpt, am, mir, msgr, + OTkn#10, cols#80, it#8, lines#24, + acsc=+h.kffggjmkllsmenbq`tnuovcwdxa}r, bel=^G, cbt=\Ez, + clear=\Ev, cnorm=\Ec, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ed, + dch1=\EO, dim=\E4, dl1=\EM, ed=\Ey, el=\Ex, home=\EH, ht=^I, + hts=\E1, il1=\EL, ind=\n, invis=\Ea, kbs=^H, kclr=\Ev, + kctab=\E2, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + kdch1=\EO, kdl1=\EM, ked=\EJ, kel=\Et, kf0=\E?p, kf1=\E?q, + kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w, + kf8=\E?x, kf9=\E?y, khome=\EH, khts=\E1, kich1=\Ei, kil1=\EL, + krmir=\Ej, mc0=\EH\E], mc4=\EX, mc5=\EW, ri=\EI, rmacs=\EG, + rmkx=\E>, rmso=\E3, rs1=\E3\Eb\Ej\E\El\EG\Ec\Ek\EX, + sgr0=\E3\Eb, smacs=\EF, smkx=\E=, smso=\E4, tbc=\Eg, +# The older Visuals didn't come with function keys. This entry uses +# <smkx> and <rmkx> so that the keypad keys can be used as function keys. +# If your version of vi doesn't support function keys you may want +# to use vi200-f. +vi200-f|Visual 200 no function keys, + is2=\E3\Eb\Ej\E\\\El\EG\Ed\Ek, kf0=\E?p, kf1=\E?q, + kf2=\E?r, kf3=\E?s, kf4=\E?t, kf5=\E?u, kf6=\E?v, kf7=\E?w, + kf8=\E?x, kf9=\E?y, rmkx=\E>, rmso@, smkx=\E=, smso@, + use=vi200, +vi200-rv|Visual 200 reverse video, + cnorm@, cvvis@, ri@, rmso=\E3, smso=\E4, use=vi200, + +# the function keys are programmable but we don't reprogram them to their +# default values with <is2> because programming them is very verbose. maybe +# an initialization file should be made for the 300 and they could be stuck +# in it. +# (vi300: added <rmam>/<smam> based on init string -- esr) +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, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + dch1=\E[P$<40>, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, + il1=\E[L, 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, +# some of the vi300s have older firmware that has the command +# sequence for setting editing extent reversed. +vi300-old|Visual 300 with old firmware (set edit extent reversed), + is2=\E[7s\E[2;3;4;20;?5;?6l\E[12;?7h\E[2Q\E[0;1(D\E[8s, use=vi300, + +# Visual 500 prototype entry from University of Wisconsin. +# The best place to look for the escape sequences is page A1-1 of the +# Visual 500 manual. The initialization sequence given here may be +# overkill, but it does leave out some of the initializations which can +# be done with the menus in set-up mode. +# The :xp: line below is so that emacs can understand the padding requirements +# of this slow terminal. :xp: is 10 time the padding factor. +# (vi500: removed unknown :xp#4: termcap; +# also added empty <acsc> to suppress tic warning -- esr) +vi500|Visual 500, + am, mir, msgr, + cols#80, it#8, lines#33, + acsc=, cbt=\Ez$<4/>, clear=\Ev$<6*/>, cr=\r, + csr=\E(%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\EB, + cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, + dch1=\EO$<3*/>, dl1=\EM$<3*/>, ed=\Ey$<3*/>, + el=\Ex$<16/>, home=\EH, ht=\011$<8/>, il1=\EL\Ex$<3*/>, + ind=\n, + is2=\E3\E\001\E\007\E\003\Ek\EG\Ed\EX\El\E>\Eb\E\\, + kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + khome=\EH, nel=\r\n, rmacs=^O, rmir=\Ej, rmso=\E^G, + rmul=\E^C, smacs=^N, smir=\Ei, smso=\E^H, smul=\E^D, + +# The visual 550 is a visual 300 with Tektronix graphics, +# and with 33 lines. clear screen is modified here to +# also clear the graphics. +vi550|Visual 550 ansi x3.64, + lines#33, + clear=\030\E[H\E[2J, use=vi300, + +vi603|visual603|Visual 603, + hs, mir, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, + csr=\E[%i%p1%d;%p2%dr, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, + dsl=\EP2;1~\E\\, ed=\E[J, el=\E[K, fsl=\E\\, il1=\E[L, + 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=vt100+4bsd, + +#### Wyse (wy) +# +# Wyse Technology +# 3471 North First Street +# San Jose, CA 95134 +# Vox: (408)-473-1200 +# Fax: (408) 473-1222 +# Web: http://www.wyse.com +# +# Wyse sales can be reached by phone at 1-800-GET-WYSE. Tech support is at +# (800)-800-WYSE (option 5 gets you a human). There's a Web page at the +# obvious address, <http://www.wyse.com>. They keep terminfo entries at +# https://web.archive.org/web/19970712022641/http://www.wyse.co.uk/support/appnotes/idxappnt.htm +# +# +# Wyse bought out Link Technology, Inc. in 1990 and closed it down in 1995. +# They now own the Qume and Amdek brands, too. So these are the people to +# talk with about all Link, Qume, and Amdek terminals. +# +# These entries include a few small fixes. +# I canceled the bel capacities in the vb entries. +# I made two trivial syntax fixes in the wyse30 entry. +# I made some entries relative to adm+sgr. +# +# +# Note: The wyse75, wyse85, and wyse99 have been discontinued. + +# Although the Wyse 30 can support more than one attribute +# it requires magic cookies to do so. Many applications do not +# function well with magic cookies. The following terminfo uses +# the protect mode to support one attribute (dim) without cookies. +# If more than one attribute is needed then the wy30-mc terminfo +# should be used. +# +wy30|wyse30|Wyse 30, + am, bw, hs, mc5i, mir, msgr, xon, + cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45, + acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, cbt=\EI, + civis=\E`0, clear=\E+$<80>, cnorm=\E`1, cr=\r, cub1=^H, + cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, dch1=\EW$<10>, dim=\E`7\E), dl1=\ER$<1>, + dsl=\EF\r, ed=\EY$<80>, el=\ET, flash=\E`8$<100/>\E`9, + fsl=\r, home=^^, ht=\011$<1>, hts=\E1, il1=\EE$<2>, + ind=\n$<2>, ip=$<2>, is2=\E'\E(\E\^3\E`9\016\024, + kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L, + kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, + kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, + kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=^^, kich1=\EQ, + kil1=\EE, knp=\EK, kpp=\EJ, krpl=\Er, ll=^^^K, mc0=\EP, mc4=^T, + mc5=^X, nel=\r\n, pfx=\Ez%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), ri=\Ej$<3>, + rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, + sgr=%?%p1%p5%p8%|%|%t\E`7\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, + sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, + smso=\E`7\E), tbc=\E0, tsl=\EF, +# +# This terminal description uses the non-hidden attribute mode +# (with magic cookie). +# +# (wy30-mc: added <smcup> to suppress tic warning --esr) +wy30-mc|wyse30-mc|Wyse 30 with magic cookies, + msgr@, + ma@, xmc#1, + blink=\EG2, dim=\EGp, prot=\EG0\E), rmacs=\EG0\EH\003, + rmcup=\EG0, rmso=\EG0, + sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%? + %p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8 + %t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, + sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, + smso=\EG4, use=wy30, use=adm+sgr, +# The mandatory pause used by <flash> does not work with +# older versions of terminfo. If you see this effect then +# unset xon and delete the / from the delay. +# i.e. change $<100/> to $<100> +wy30-vb|wyse30-vb|Wyse 30 visible bell, + bel@, use=wy30, +# +# The Wyse 50 can support one attribute (e.g. Dim, Inverse, +# Normal) without magic cookies by using the protect mode. +# The following description uses this feature, but when more +# than one attribute is put on the screen at once, all attributes +# will be changed to be the same as the last attribute given. +# The Wyse 50 can support more attributes when used with magic +# cookies. The wy50-mc terminal description uses magic cookies +# to correctly handle multiple attributes on a screen. +# +wy50|wyse50|Wyse 50, + am, bw, hs, mc5i, mir, msgr, xon, + cols#80, lh#1, lines#24, lw#8, ma#1, nlab#8, wsl#45, + acsc=a;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, cbt=\EI, + civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r, cub1=^H, + cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, dch1=\EW$<1>, dim=\E`7\E), dl1=\ER, dsl=\EF\r, + ed=\EY$<20>, el=\ET, flash=\E`8$<100/>\E`9, fsl=\r, + home=^^, ht=^I, hts=\E1, il1=\EE, ind=\n$<2>, ip=$<1>, + is1=\E`:\E`9$<30>, is2=\016\024\E'\E(, kHOM=\E{, kbs=^H, + kcbt=\EI, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, + kdl1=\ER, ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, + kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, + kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, + kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, + kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, + ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=\r\n, + pfx=\Ez%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E`7\E), rev=\E`6\E), + ri=\Ej, rmacs=\EH^C, rmir=\Er, rmln=\EA11, rmso=\E(, + sgr=%?%p1%p3%|%t\E`6\E)%e%p5%p8%|%t\E`7\E)%e\E(%;%?%p9%t\EH + \002%e\EH\003%;, + sgr0=\E(\EH\003, smacs=\EH^B, smir=\Eq, smln=\EA10, + smso=\E`6\E), tbc=\E0, tsl=\EF, kF1=^A`\r, kF10=^Ai\r, + kF11=^Aj\r, kF12=^Ak\r, kF13=^Al\r, kF14=^Am\r, kF15=^An\r, + kF16=^Ao\r, kF2=^Aa\r, kF3=^Ab\r, kF4=^Ac\r, kF5=^Ad\r, + kF6=^Ae\r, kF7=^Af\r, kF8=^Ag\r, kF9=^Ah\r, +# +# This terminal description uses the non-hidden attribute mode +# (with magic cookie). +# +# The mandatory pause used by flash does not work with some +# older versions of terminfo. If you see this effect then +# unset <xon> and delete the / from the delay. +# i.e. change $<100/> to $<100> +# (wy50-mc: added <smcup> to suppress tic warning --esr) +wy50-mc|wyse50-mc|Wyse 50 with magic cookies, + msgr@, + ma@, xmc#1, + blink=\EG2, dim=\EGp, prot=\EG0\E), rev=\EG4, + rmacs=\EG0\EH\003, rmcup=\EG0, rmso=\EG0, + sgr=\EG%{48}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{4}%|%;%? + %p4%t%{2}%|%;%?%p1%p5%|%t%{64}%|%;%?%p7%t%{1}%|%;%c%?%p8 + %t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;, + sgr0=\EG0\E(\EH\003, smacs=\EG0\EH\002, smcup=, + smso=\EGt, use=wy50, use=adm+sgr, +wy50-vb|wyse50-vb|Wyse 50 visible bell, + bel@, use=wy50, +wy50-w|wyse50-w|Wyse 50 132-column, + cols#132, lw#7, nlab#16, wsl#97, + cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, + use=wy50, +wy50-wvb|wyse50-wvb|Wyse 50 132-column visible bell, + bel@, use=wy50-w, + +# +# The Wyse 350 is a Wyse 50 with color. +# Unfortunately this means that it has magic cookies. +# The color attributes are designed to overlap the reverse, dim and +# underline attributes. This is nice for monochrome applications +# because you can make underline stuff green (or any other color) +# but for true color applications it's not so hot because you cannot +# mix color with reverse, dim or underline. +# To further complicate things one of the attributes must be +# black (either the foreground or the background). In reverse video +# the background changes color with black letters. In normal video +# the foreground changes colors on a black background. +# This terminfo uses some of the more advanced features of curses +# to display both color and blink. In the final analysis I am not +# sure that the wy350 runs better with this terminfo than it does +# with the wy50 terminfo (with user adjusted colors). +# +# The mandatory pause used by flash does not work with +# older versions of terminfo. If you see this effect then +# unset xon and delete the / from the delay. +# i.e. change $<100/> to $<100> +# +# Bug: The <op> capability resets attributes. +wy350|wyse350|Wyse 350, + am, bw, hs, mc5i, mir, xon, + colors#8, cols#80, lh#1, lines#24, lw#8, ncv#55, nlab#8, pairs#8, + wsl#45, xmc#1, + acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, + cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r, + cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<1>, + dim=\EGp, dl1=\ER, dsl=\EF\r, ed=\EY$<20>, el=\ET, + flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=^I, hts=\E1, + il1=\EE, ind=\n$<2>, ip=$<1>, is1=\E`:\E`9$<30>, + is2=\016\024\E'\E(, is3=\E%?, kHOM=\E{, kbs=^H, kcbt=\EI, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, + ked=\EY, kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, + kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, + kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, + kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, + kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, + ll=^^^K, mc0=\EP, mc4=^T, mc5=^X, nel=\r\n, oc=\E%?, op=\EG0, + pfx=\Ez%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\EG0\E), ri=\Ej, + rmacs=\EG0\EH\003, rmir=\Er, rmln=\EA11, setb=, + setf=%?%p1%{0}%=%t%{76}%e%p1%{1}%=%t%{64}%e%p1%{2}%=%t%{8}%e + %p1%{3}%=%t%{72}%e%p1%{4}%=%t%{4}%e%p1%{5}%=%t%{68}%e + %p1%{6}%=%t%{12}%e%p1%{7}%=%t%{0}%;%PC\EG%gC%gA%+%{48} + %+%c, + sgr=%{0}%?%p4%t%{2}%|%;%?%p7%t%{1}%|%;%PA\EG%?%gC%t%gC%e%{0} + %?%p1%t%{4}%|%;%?%p2%t%{8}%|%;%?%p3%t%{4}%|%;%?%p5%t + %{64}%|%;%;%gA%+%{48}%+%c%?%p8%t\E)%e\E(%;%?%p9%t\EH + \002%e\EH\003%;, + sgr0=\EG0\E(\EH\003%{0}%PA%{0}%PC, smacs=\EG0\EH\002, + smir=\Eq, smln=\EA10, tbc=\E0, tsl=\EF, use=adm+sgr, +wy350-vb|wyse350-vb|Wyse 350 visible bell, + bel@, use=wy350, +wy350-w|wyse350-w|Wyse 350 132-column, + cols#132, lw#7, nlab#16, wsl#97, + cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<2>, is1=\E`;\E`9$<30>, + use=wy350, +wy350-wvb|wyse350-wvb|Wyse 350 132-column visible bell, + bel@, use=wy350-w, +# +# This terminfo description is untested. +# The wyse100 emulates an adm31, so the adm31 entry should work. +# +wy100|Wyse 100, + hs, mir, + cols#80, lines#24, xmc#1, + bel=^G, clear=\E;, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, dsl=\EA31, ed=\EY, el=\ET, fsl=\r, il1=\EE, ind=\n, + invis@, is2=\Eu\E0, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, + kcuu1=^K, kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, + kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, khome=\E{, + rmir=\Er, smir=\Eq, tsl=\EF, use=adm+sgr, +# +# The Wyse 120/150 has most of the features of the Wyse 60. +# This terminal does not need padding up to 9600 baud! +# <msgr> should be set but the clear screen fails when in +# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear +# then set <msgr>. +# +wy120|wyse120|wy150|wyse150|Wyse 120/150, + am, bw, hs, km, mc5i, mir, msgr, xon, + cols#80, it#8, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45, + acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, + bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>, + cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>, + dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>, + flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=\011$<1>, + hts=\E1, il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1, + is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016 + \024\El, + is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, + kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, + kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, + kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, + mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, + pfloc=\EZ2%p1%{63}%+%c%p2%s\177, + pfx=\EZ1%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, + rmacs=\EcD, rmam=\Ed., rmcup=\Ew1, rmir=\Er, rmln=\EA11, + rmxon=\Ec20, rs1=\E~!\E~4$<30>, rs2=\EeF\E`:$<70>, + rs3=\EwG\Ee($<100>, + sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8} + %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t + %{64}%|%;%?%p7%t%{1}%|%;%c, + sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, + smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, + tbc=\E0, tsl=\EF, use=adm+sgr, +# +wy120-w|wyse120-w|wy150-w|wyse150-w|Wyse 120/150 132-column, + cols#132, lw#7, nlab#16, wsl#97, + cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>, + rs2=\E`;$<70>, use=wy120, +# +wy120-25|wyse120-25|wy150-25|wyse150-25|Wyse 120/150 80-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<100>, use=wy120, +# +wy120-25-w|wyse120-25-w|wy150-25-w|wyse150-25-w|Wyse 120/150 132-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<100>, use=wy120-w, +# +wy120-vb|wyse120-vb|wy150-vb|wyse150-vb|Wyse 120/150 visible bell, + bel@, use=wy120, +# +wy120-w-vb|wy120-wvb|wyse120-wvb|wy150-w-vb|wyse150-w-vb|Wyse 120/150 132-column visible bell, + bel@, use=wy120-w, +# +# The Wyse 60 is like the Wyse 50 but with more padding. +# The reset strings are slow and the pad times very depending +# on other parameters such as font loading. I have tried +# to follow the following outline: +# +# <rs1> -> set personality +# <rs2> -> set number of columns +# <rs3> -> set number of lines +# <is1> -> select the proper font +# <is2> -> do the initialization +# <is3> -> set up display memory (2 pages) +# +# The Wyse 60's that have vt100 emulation are slower than the +# older Wyse 60's. This change happened mid-1987. +# The capabilities effected are <dch1> <dl1> <il1> <ind> <ri> +# +# The meta key is only half right. This terminal will return the +# high order bit set when you hit CTRL-function_key +# +# It may be useful to assign two function keys with the +# values \E=(\s look at old data in page 1 +# \E=W, look at bottom of page 1 +# where \s is a space ( ). +# +# Note: +# The Wyse 60 runs faster when the XON/XOFF +# handshake is turned off. +# +# (wy60: we use \E{ rather than ^^ for home (both are documented) to avoid +# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr) +wy60|wyse60|Wyse 60, + am, bw, hs, km, mc5i, mir, msgr, + cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#45, + acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, + bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<100>, + cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW$<11>, dclk=\E`b, dim=\EGp, dl1=\ER$<5>, dsl=\EF\r, + ed=\EY$<100>, el=\ET, flash=\E`8$<100/>\E`9, fsl=\r, + home=\E{, ht=\011$<1>, hts=\E1, il1=\EE$<4>, ind=\n$<5>, + ip=$<3>, is1=\EcB0\EcC1, + is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016 + \024\El, + is3=\EwJ\Ew1$<150>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, + kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, + kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, + kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, + mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<3>, + pfloc=\EZ2%p1%{63}%+%c%p2%s\177, + pfx=\EZ1%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, + rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew1, rmir=\Er, + rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<150>, + rs2=\EeG$<150>, rs3=\EwG\Ee($<200>, + sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8} + %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t + %{64}%|%;%?%p7%t%{1}%|%;%c, + sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, + smcup=\Ew0, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, + tbc=\E0, tsl=\EF, kF1=^A`\r, kF10=^Ai\r, kF11=^Aj\r, + kF12=^Ak\r, kF13=^Al\r, kF14=^Am\r, kF15=^An\r, kF16=^Ao\r, + kF2=^Aa\r, kF3=^Ab\r, kF4=^Ac\r, kF5=^Ad\r, kF6=^Ae\r, + kF7=^Af\r, kF8=^Ag\r, kF9=^Ah\r, use=adm+sgr, +# +wy60-w|wyse60-w|Wyse 60 132-column, + cols#132, lw#7, nlab#16, wsl#97, + cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<16>, ip=$<5>, + rs2=\EeF$<150>\E`;$<150>, use=wy60, +# +wy60-25|wyse60-25|Wyse 60 80-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<200>, use=wy60, +wy60-25-w|wyse60-25-w|Wyse 60 132-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<200>, use=wy60-w, +# +wy60-42|wyse60-42|Wyse 60 80-column 42-lines, + lines#42, + clear=\E+$<260>, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<2>, + dch1=\EW$<16>, dl1=\ER$<11>, ed=\Ey$<260>, il1=\EE$<11>, + ind=\n$<9>, ip=$<5>, is1=\EcB2\EcC3, nel=\r\n$<6>, + ri=\Ej$<10>, rs3=\Ee*$<150>, use=wy60, +wy60-42-w|wyse60-42-w|Wyse 60 132-column 42-lines, + cols#132, lw#7, nlab#16, wsl#97, + clear=\E+$<260>, cup=\Ea%i%p1%dR%p2%dC$<2>, + dch1=\EW$<19>, ed=\Ey$<260>, home=\036$<2>, ip=$<6>, + nel=\r\n$<11>, rs2=\EeF$<150>\E`;$<150>, use=wy60-42, +# +wy60-43|wyse60-43|Wyse 60 80-column 43-lines, + lh@, lines#43, lw@, nlab@, + pln@, rs3=\Ee+$<150>, use=wy60-42, +wy60-43-w|wyse60-43-w|Wyse 60 132-column 43-lines, + lh@, lines#43, lw@, nlab@, + pln@, rs3=\Ee+$<150>, use=wy60-42-w, +# +wy60-vb|wyse60-vb|Wyse 60 visible bell, + bel@, use=wy60, +wy60-w-vb|wy60-wvb|wyse60-wvb|Wyse 60 132-column visible bell, + bel@, use=wy60-w, + +# The Wyse-99GT looks at lot like the Wyse 60 except that it +# does not have the 42/43 line mode. In the Wyse-60 the "lines" +# setup parameter controls the number of lines on the screen. +# For the Wyse 99GT the "lines" setup parameter controls the +# number of lines in a page. The screen can display 25 lines max. +# The Wyse-99GT also has personalities for the VT220 and +# Tektronix 4014. But this has no bearing on the native mode. +# +# (msgr) should be set but the clear screen fails when in +# alt-charset mode. Try \EcE\s\s\E+\s if the screen is really clear +# then set msgr, else use msgr@. +# +# u0 -> enter Tektronix mode +# u1 -> exit Tektronix mode +# +wy99gt|wyse99gt|Wyse 99gt, + msgr@, + clear=\E+$<130>, dch1=\EW$<7>, dl1=\ER$<4>, ed=\Ey$<130>, + el=\Et$<5>, flash=\E`8$<100/>\E`9, ht=\011$<1>, + il1=\EE$<4>, ind=\n$<4>, ip=$<2>, is3=\Ew0$<20>, nel@, + ri=\Ej$<3>, rmcup=\Ew0, rs2=\E`:$<150>, smcup=\Ew1, + u0=\E~>\E8, u1=\E[42h, use=wy60, +# +wy99gt-w|wyse99gt-w|Wyse 99gt 132-column, + cols#132, lw#7, nlab#16, wsl#97, + clear=\E+$<160>, cup=\Ea%i%p1%dR%p2%dC$<2>, + dch1=\EW$<9>, ed=\Ey$<160>, ip=$<4>, rs2=\E`;$<150>, + use=wy99gt, +# +wy99gt-25|wyse99gt-25|Wyse 99gt 80-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs2=\E`:$<150>, rs3=\EwG\Ee)$<200>, use=wy99gt, +# +wy99gt-25-w|wyse99gt-25-w|Wyse 99gt 132-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs2=\E`;$<150>, use=wy99gt-w, +# +wy99gt-vb|wyse99gt-vb|Wyse 99gt visible bell, + bel@, use=wy99gt, +# +wy99gt-w-vb|wy99gt-wvb|wyse99gt-wvb|Wyse 99gt 132-column visible bell, + bel@, use=wy99gt-w, + +# Can't set tabs! Other bugs (ANSI mode only): +# - can't redefine function keys (anyway, key redefinition in ANSI mode +# is too much complex to be described); +# - meta key can't be described (the terminal forgets it when reset); +# The xon-xoff handshaking can't be disabled while in ansi personality, so +# emacs can't work at speed greater than 9600 baud. No padding is needed at +# this speed. +# dch1 has been commented out because it causes annoying glittering when +# vi deletes one character at the beginning of a line with tabs in it. +# dch makes sysgen(1M) have a horrible behaviour when deleting +# a screen and makes screen(1) behave badly, so it is disabled too. The nice +# thing is that vi goes crazy if smir-rmir are present and both dch-dch1 are +# not, so smir and rmir are commented out as well. +# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998 +wy99-ansi|Wyse WY-99GT in ansi mode (int'l PC keyboard), + am, km, mc5i, mir, msgr, xenl, + cols#80, it#8, lines#25, vt#3, + acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, + clear=\E[H\E[J$<200>, cnorm=\E[34h\E[?25h, cr=\r, + csr=\E[%i%p1%d;%p2%dr, 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, dl=\E[%p1%dM, dl1=\E[M, + 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@, il=\E[%p1%dL, + il1=\E[L, ind=\n$<1>, invis=\E[8m, + 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, + 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, + mc4=\E[4i, mc5=\E[5i, nel=\EE, prot=\E[1"q, rc=\E8, + rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, + rmkx=\E[?1l, rmso=\E[27m, rmul=\E[24m, + 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, + sc=\E7, + 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, smso=\E[7m, smul=\E[4m, vpa=\E[%i%p1%dd, + +# This is the american terminal. Here tabs work fine. +# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998 +wy99a-ansi|Wyse WY-99GT in ansi mode (US PC keyboard), + hts=\EH, is3=\E[?5l, rs3=\E[?5l, tbc=\E[3g, use=wy99-ansi, + +# This terminal (firmware version 02) has a lot of bugs: +# - can't set tabs; +# - other bugs in ANSI modes (see above). +# This description disables handshaking when using cup. This is because +# GNU emacs doesn't like Xon-Xoff handshaking. This means the terminal +# cannot be used at speeds greater than 9600 baud, because at greater +# speeds handshaking is needed even for character sending. If you use +# DTR handshaking, you can use even greater speeds. +# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998 +wy99f|wy99fgt|wy-99fgt|Wyse WY-99GT (int'l PC keyboard), + am, bw, hs, km, mc5i, mir, msgr, xon, + cols#80, it#8, lines#25, wsl#46, + acsc='x+y.w_vi~j(k'l&m%n)o9q*s8t-u.v\,w+x=, bel=^G, + blink=\EG2, cbt=\EI, civis=\E`0, clear=\E'\E(\032, + cnorm=\E`4\E`1, cr=\r, cub1=^H, cud1=\Ej, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + cvvis=\E`2\E`1, dch1=\EW, dim=\EGp, dl1=\ER, dsl=\EF\r, + ed=\EY$<8*>, el=\ET$<8>, enacs=\Ec@1J$<2000>, + flash=\E\^1$<30/>\E\^0, fsl=\r, home=^^, ht=^I, il1=\EE, + ind=\n, invis=\EG3, + is2=\Eu\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E`9\E + \^0\E`1\E`4\Ee.\E`:\Ee1\EG0\E(\Ed/\Ee4\Ed*\EO\E`I\Er\Ee" + \EcD\024, + ka1=^^, ka3=\EJ, kbs=^H, kc1=\ET, kc3=\EK, kcbt=\EI, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, + kf11=^AJ\r, kf12=^AK\r, kf13=^A`\r, kf14=^Aa\r, kf15=^Ab\r, + kf16=^Ac\r, kf17=^Ad\r, kf18=^Ae\r, kf19=^Af\r, kf2=^AA\r, + kf20=^Ag\r, kf21=^Ah\r, kf22=^Ai\r, kf23=^Aj\r, kf24=^Ak\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, kprt=\EP, mc0=\EP, mc4=^T, mc5=\Ed#, + nel=^_, prot=\E), rev=\EG4, ri=\Ej, rmacs=\EcD, rmam=\Ed., + rmcup=\Ec21\Ec31, rmir=\Er, rmso=\EG0, rmxon=\Ec20\Ec30, + rs2=\Eu\E~4\Ee6\EC\EDF\Ec21\Ec31\Ec62\Ec72\Ee;\016\E'\EeL\E` + 9\E\^0\E`1\E`4\Ee.\E`:\Ee)\Ew\EwG\Ew0\Ee1\EG0\E(\Ed/ + \Ee4\Ed*\EO\E`I\Er\Ee"\Ec@0B\EcD\024, + sgr=\E(\EG%{48}%?%p1%p3%O%t%{4}%+%;%?%p2%t%{8}%+%;%?%p4%t + %{2}%+%;%?%p5%t%{64}%+%;%?%p7%t%{1}%+%;%c%?%p8%t\E)%;%? + %p9%t\EcE%e\EcD%;, + sgr0=\E(\EG0, smacs=\EcE, smam=\Ed/, smcup=\Ec20\Ec30, + smir=\Eq, smso=\EG4, smxon=\Ec21\Ec31, tsl=\EF, + +# This is the american terminal. Here tabs work. +# From: Francesco Potorti` <F.Potorti@cnuce.cnr.it>, 24 Aug 1998 +wy99fa|wy99fgta|wy-99fgta|Wyse WY-99GT (US PC keyboard), + hts=\E1, tbc=\E0, use=wy99f, + +# +# The Wyse 160 is combination of the WY-60 and the WY-99gt. +# The reset strings are slow and the pad times very depending +# on other parameters such as font loading. I have tried +# to follow the following outline: +# +# <rs1> -> set personality +# <rs2> -> set number of columns +# <rs3> -> set number of lines +# <is1> -> select the proper font +# <is2> -> do the initialization +# <is3> -> set up display memory (2 pages) +# +# The display memory may be used for either text or graphics. +# When "Display Memory = Shared" the terminal will have more pages +# but garbage may be left on the screen when you switch from +# graphics to text. If "Display Memory = Unshared" then the +# text area will be only one page long. +# +# (wy160: we use \E{ rather than ^^ for home (both are documented) to avoid +# a bug reported by Robert Dunn, <rcdii@inlink.com> -- esr) +wy160|wyse160|Wyse 160, + am, bw, hs, km, mc5i, mir, msgr, + cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#38, + acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, + bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<30>, + cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<5>, + dclk=\E`b, dim=\EGp, dl1=\ER$<1>, dsl=\EF\r, ed=\EY$<30>, + el=\ET$<5>, flash=\E`8$<100/>\E`9, fsl=\r, home=\E{, ht=^I, + hts=\E1, il1=\EE$<1>, ind=\n$<1>, ip=$<2>, is1=\EcB0\EcC1, + is2=\Ed$\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016 + \024\El, + is3=\Ew0$<100>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, + kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, + kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, + kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=\E{^K, + mc0=\EP, mc4=^T, mc5=\Ed#, nel=\r\n$<1>, + pfloc=\EZ2%p1%{63}%+%c%p2%s\177, + pfx=\EZ1%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<1>, + rmacs=\EcD, rmam=\Ed., rmclk=\E`c, rmcup=\Ew0, rmir=\Er, + rmln=\EA11, rmxon=\Ec20, rs1=\E~!\E~4$<70>, + rs2=\E`:$<100>, rs3=\EwG\Ee($<140>, + sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8} + %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t + %{64}%|%;%?%p7%t%{1}%|%;%c, + sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, + smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, smxon=\Ec21, + tbc=\E0, tsl=\EF, use=adm+sgr, +# +wy160-w|wyse160-w|Wyse 160 132-column, + cols#132, lw#7, nlab#16, wsl#90, + cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<9>, + rs2=\EeF$<150>\E`;$<150>, use=wy160, +# +wy160-25|wyse160-25|Wyse 160 80-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<200>, use=wy160, +wy160-25-w|wyse160-25-w|Wyse 160 132-column 25-lines, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<200>, use=wy160-w, +# +wy160-42|wyse160-42|Wyse 160 80-column 42-lines, + lines#42, + clear=\E+$<50>, dl1=\ER$<2>, ed=\Ey$<50>, il1=\EE$<2>, + ind=\n$<2>, is1=\EcB2\EcC3, nel=\r\n$<2>, ri=\Ej$<2>, + rs3=\Ee*$<150>, use=wy160, +wy160-42-w|wyse160-42-w|Wyse 160 132-column 42-lines, + cols#132, lw#7, nlab#16, wsl#90, + cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<8>, ip=$<3>, + rs2=\EeF$<150>\E`;$<150>, use=wy160-42, +# +wy160-43|wyse160-43|Wyse 160 80-column 43-lines, + lh@, lines#43, lw@, nlab@, + pln@, rs3=\Ee+$<150>, use=wy160-42, +wy160-43-w|wyse160-43-w|Wyse 160 132-column 43-lines, + lh@, lines#43, lw@, nlab@, + pln@, rs3=\Ee+$<150>, use=wy160-42-w, +# +wy160-vb|wyse160-vb|Wyse 160 visible bell, + bel@, use=wy160, +wy160-w-vb|wy160-wvb|wyse160-wvb|Wyse 160 132-column visible bell, + bel@, use=wy160-w, +# +# The Wyse 75 is a vt100 lookalike without advanced video. +# +# The Wyse 75 can support one attribute (e.g. Dim, Inverse, +# Underline) without magic cookies. The following description +# uses this capability, but when more than one attribute is +# put on the screen at once, all attributes will be changed +# to be the same as the last attribute given. +# The Wyse 75 can support more attributes when used with magic +# cookies. The wy75-mc terminal description uses magic cookies +# to correctly handle multiple attributes on a screen. +# +wy75|wyse75|Wyse 75, + am, hs, mc5i, mir, msgr, xenl, xon, + cols#80, lines#24, ma#1, pb#1201, wsl#78, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, cbt=\E[Z, clear=\E[H\E[J$<30>, cr=\r, + csr=\E[%i%p1%d;%p2%dr$<2>, cub=\E[%p1%dD, 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, + 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, ht=^I, hts=\EH, 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, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, khome=\E[H, kich1=\E[@, kil1=\E[L, knp=\E[6~, + kpp=\E[5~, kprt=\E[?5i, kslt=\E[4~, mc0=\E[0i, mc4=\E[4i, + mc5=\E[5i, 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, + tbc=\E[3g, tsl=\E[>\,\001, use=vt220+cvis, + use=vt220+keypad, +# +# This terminal description uses the non-hidden attribute mode +# (with magic cookie). +# +wy75-mc|wyse75-mc|Wyse 75 with magic cookies, + msgr@, + ma@, xmc#1, + blink=\E[2p, dim=\E[1p, invis=\E[4p, is3=\E[m\E[p, + rev=\E[16p, rmacs=\E[0p\017, rmso=\E[0p, rmul=\E[0p, + sgr=\E[%{0}%?%p2%p6%|%t%{8}%|%;%?%p1%p3%|%p6%|%t%{16}%|%;%? + %p4%t%{2}%|%;%?%p1%p5%|%t%{1}%|%;%?%p7%t%{4}%|%;%dp%?%p9 + %t\016%e\017%;, + sgr0=\E[0p\017, smacs=\E[0p\016, smso=\E[17p, smul=\E[8p, + use=wy75, +wy75-vb|wyse75-vb|Wyse 75 with visible bell, + pb@, + bel@, use=wy75, +wy75-w|wyse75-w|Wyse 75 in 132 column mode, + cols#132, wsl#130, + rs2=\E[35h\E[?3h$<80>, use=wy75, +wy75-wvb|wyse75-wvb|Wyse 75 with visible bell 132 columns, + pb@, + bel@, use=wy75-w, +# +# Wyse 85 emulating a vt220 7 bit mode. +# 24 line screen with status line. +# +# The vt220 mode permits more function keys but it wipes out +# the escape key. I strongly recommend that <f11> be set to +# escape (esc). +# The terminal may have to be set for 8 data bits and 2 stop +# bits for the arrow keys to work. +# The Wyse 85 runs faster with XON/XOFF enabled. Also the +# <dch> and <ich> work best when XON/XOFF is set. <ich> and +# <dch> leave trash on the screen when used without XON/XOFF. +# +wy85|wyse85|Wyse 85, + am, hs, mc5i, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + clear=\E[H\E[J$<110>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<1>, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP$<3*>, + dch1=\E[P$<3>, dim=\E[2m, dl=\E[%p1%dM$<3*>, + dl1=\E[M$<3>, dsl=\E[40l, ech=\E[%p1%dX, ed=\E[J$<110>, + el=\E[K$<1>, el1=\E[1K, enacs=\E)0, + flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8, + home=\E[H, ht=\011$<1>, hts=\EH, ich=\E[%p1%d@$<4*>, + il=\E[%p1%dL$<5*>, il1=\E[L$<5>, ind=\n$<3>, invis=\E[8m, + 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, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\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~, + 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, mc4=\E[4i, mc5=\E[5i, rc=\E8, + rev=\E[7m, ri=\EM$<3>, 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$<70>, rs3=\E[?5l, 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, smacs=^N, smam=\E[?7h, smir=\E[4h, + smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+vtedit, + use=vt220+cvis, use=vt220+keypad, +# +# Wyse 85 with visual bell. +wy85-vb|wyse85-vb|Wyse 85 with visible bell, + bel@, flash=\E[30h\E\,$<300/>\E[30l, use=wy85, +# +# Wyse 85 in 132-column mode. +wy85-w|wyse85-w|Wyse 85 in 132-column mode, + cols#132, wsl#132, + rs2=\E[35h$<70/>\E[?3h, use=wy85, +# +# Wyse 85 in 132-column mode with visual bell. +wy85-wvb|wyse85-wvb|Wyse 85 with visible bell 132-columns, + bel@, use=wy85-w, + +# From: Kevin Turner <kevint@aracnet.com>, 12 Jul 1998 +# This copes with an apparent firmware bug in the wy85. He writes: +# "What I did was change leave the terminal cursor keys set to Normal +# (instead of application), and change \E[ to \233 for all the keys in +# terminfo. At one point, I found some reference indicating that this +# terminal bug (not sending \E[) was acknowledged by Wyse (so it's not just +# me), but I can't find that and the server under my bookmark to "Wyse +# Technical" isn't responding. So there's the question of whether the wy85 +# terminfo should reflect the manufacturer's intended behaviour of the terminal +# or the actual." +wy85-8bit|wyse85-8bit|Wyse 85 in 8-bit mode, + am, hs, mc5i, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + clear=\E[H\E[J$<110>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH$<1>, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP$<3*>, + dch1=\E[P$<3>, dim=\E[2m, dl=\E[%p1%dM$<3*>, + dl1=\E[M$<3>, dsl=\E[40l, ech=\E[%p1%dX, ed=\E[J$<110>, + el=\E[K$<1>, el1=\E[1K, enacs=\E)0, + flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8, + home=\E[H, ht=\011$<1>, hts=\EH, ich=\E[%p1%d@$<4*>, + il=\E[%p1%dL$<5*>, il1=\E[L$<5>, ind=\n$<3>, invis=\E[8m, + 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, ka1=\EOw, ka3=\EOy, kb2=\EOu, + kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\233D, kcud1=\233B, + kcuf1=\233C, kcuu1=\233A, kdch1=\2333~, kent=\EOM, + kf1=\EOP, kf10=\23321~, kf11=\23323~, kf12=\23324~, + kf13=\23325~, kf14=\23326~, kf15=\23328~, kf16=\23329~, + 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=\23326~, kich1=\2332~, knp=\2336~, kpp=\2335~, + kslt=\2334~, lf1=PF1, lf2=PF2, lf3=PF3, lf4=PF4, mc0=\E[0i, + mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM$<3>, + 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$<70>, + rs3=\E[?5l, 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, smacs=^N, smam=\E[?7h, smir=\E[4h, + smkx=\E[?1l\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + tsl=\E[40h\E7\E[25;%i%p1%dH, use=vt220+cvis, +# +# Wyse 185 emulating a vt320 7 bit mode. +# +# This terminal always displays 25 lines. These lines may be used +# as 24 data lines and a terminal status line (top or bottom) or +# 25 data lines. The 48 and 50 line modes change the page size +# and not the number of lines on the screen. +# +# The Compose Character key can be used as a meta key if changed +# by set-up. +# +wy185|wyse185|Wyse 185, + am, hs, km, mc5i, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, + clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r, + csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, 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, + 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>, + dsl=\E7\E[99;0H\E[K\E8, ech=\E[%p1%dX, ed=\E[J$<40>, + el=\E[K, el1=\E[1K, enacs=\E)0, + flash=\E[30h\E\,$<100/>\E[30l, fsl=\E[1;24r\E8, + home=\E[H, hpa=\E[%i%p1%d`, ht=^I, hts=\EH, + ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, il1=\E[L$<3>, + ind=\n$<2>, invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, 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~, + 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~, khome=\E[26~, lf1=PF1, lf2=PF2, lf3=PF3, + lf4=PF4, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, + ri=\EM$<2>, rmacs=^O, 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, + 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=, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, tsl=\E7\E[99;%i%p1%dH, vpa=\E[%i%p1%dd, + use=vt220+vtedit, use=vt220+keypad, +# +# Wyse 185 with 24 data lines and top status (terminal status) +wy185-24|wyse185-24|Wyse 185 with 24 data lines, + hs@, + dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, + use=wy185, +# +# Wyse 185 with visual bell. +wy185-vb|wyse185-vb|Wyse 185+flash, + bel@, use=wy185, +# +# Wyse 185 in 132-column mode. +wy185-w|wyse185-w|Wyse 185 in 132-column mode, + cols#132, wsl#132, + dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, + ip=$<7>, rs2=\E[35h\E[?3h, use=wy185, +# +# Wyse 185 in 132-column mode with visual bell. +wy185-wvb|wyse185-wvb|Wyse 185+flash+132 cols, + bel@, use=wy185-w, + +# wy325 terminfo entries +# Done by Joe H. Davis 3-9-92 + +# lines 25 columns 80 +# +wy325|wyse325|Wyse epc, + am, bw, hs, mc5i, mir, + cols#80, lh#1, lines#24, lw#8, nlab#8, pb#9601, wsl#45, + acsc=+/\,.0[a2fxgqh1ihjYk?lZm@nEqDtCu4vAwBx3yszr{c~~, + bel=^G, blink=\EG2, cbt=\EI, civis=\E`0, clear=\E+$<50>, + cnorm=\E`1, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW$<7>, + dim=\EGp, dl1=\ER$<3>, dsl=\EF\r, ed=\EY$<50>, el=\ET$<4>, + flash=\E`8$<100/>\E`9, fsl=\r, home=^^, ht=^I, hts=\E1, + il1=\EE$<3>, ind=\n$<3>, ip=$<2>, is1=\EcB0\EcC1, + is2=\EcD\E'\Er\EH\003\Ed/\EO\Ee1\Ed*\E`@\E`9\E`1\016\024 + \El, + is3=\Ew0$<16>, kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, + kel=\ET, kent=\E7, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, + kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, kf16=^AO\r, + kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, + kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\Eq, + kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, ll=^^^K, + mc0=\EP, mc4=^T, mc5=\Ed#, + pfloc=\EZ2%p1%{63}%+%c%p2%s\177, + pfx=\EZ1%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<2>, + rmacs=\EcD, rmam=\Ed., rmcup=\Ew0, rmir=\Er, rmln=\EA11, + rs1=\E~!\E~4$<30>, rs2=\EeF\E`:$<70>, + rs3=\EwG\Ee($<100>, + sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EcE%e\EcD%;\EG%{48}%?%p2%t%{8} + %|%;%?%p1%p3%|%p6%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%|%t + %{64}%|%;%?%p7%t%{1}%|%;%c, + sgr0=\E(\EH\003\EG0\EcD, smacs=\EcE, smam=\Ed/, + smcup=\Ew1, smir=\Eq, smln=\EA10, smso=\EGt, tbc=\E0, + tsl=\EF, use=adm+sgr, + +# +# lines 24 columns 80 vb +# +wy325-vb|wyse325-vb|Wyse-325 with visual bell, + bel@, use=wy325, + +# +# lines 24 columns 132 +# +wy325-w|wyse325-w|wy325w-24|Wyse-325 in wide mode, + cols#132, lw#7, nlab#16, wsl#97, + cup=\Ea%i%p1%dR%p2%dC, dch1=\EW$<12>, ip=$<4>, + rs2=\E`;$<70>, use=wy325, +# +# lines 25 columns 80 +# +wy325-25|wyse325-25|wy325-80|wyse-325|Wyse-325 25 lines, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<100>, use=wy325, +# +# lines 25 columns 132 +# +wy325-25w|wyse325-25w|Wyse-325 132 columns, + lh@, lines#25, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, +# +# lines 25 columns 132 vb +# +wy325-w-vb|wy325-wvb|wyse325-wvb|Wyse-325 wide mode reverse video, + bel@, use=wy325-w, + +# +# lines 42 columns 80 +# +wy325-42|wyse325-42|Wyse-325 42 lines, + lh@, lines#42, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<100>, use=wy325, +# +# lines 42 columns 132 +# +wy325-42w|wyse325-42w|Wyse-325 42 lines wide mode, + lh@, lines#42, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, +# +# lines 42 columns 132 vb +# +wy325-42w-vb|wy325-42wvb|Wyse-325 42 lines wide mode visual bell, + bel@, use=wy325-w, +# +# lines 43 columns 80 +# +wy325-43|wyse325-43|Wyse-325 43 lines, + lh@, lines#43, lw@, nlab@, + pln@, use=wy325, +# +# lines 43 columns 132 +# +wy325-43w|wyse325-43w|Wyse-325 43 lines wide mode, + lh@, lines#43, lw@, nlab@, + pln@, rs3=\EwG\Ee)$<100>, use=wy325-w, +# +# lines 43 columns 132 vb +# +wy325-43w-vb|wy325-43wvb|Wyse-325 43 lines wide mode visual bell, + bel@, use=wy325-w, + +# Wyse 370 -- 24 line screen with status line. +# +# The terminal may have to be set for 8 data bits and 2 stop +# bits for the arrow keys to work. +# +# If you change keyboards the terminal will send different +# escape sequences. +# The following definition is for the basic terminal without +# function keys. +# +# <u0> -> enter Tektronix 4010/4014 mode +# <u1> -> exit Tektronix 4010/4014 mode +# <u2> -> enter ASCII mode (from any ANSI mode) +# <u3> -> exit ASCII mode (goto native ANSI mode) +# <u4> -> enter Tek 4207 ANSI mode (from any ANSI mode) +# <u5> -> exit Tek 4207 mode (goto native ANSI mode) +# +# Bug: The <op> capability resets attributes. +wy370-nk|Wyse 370 without function keys, + am, ccc, hs, mc5i, mir, msgr, xenl, xon, + colors#64, cols#80, it#8, lines#24, ncv#48, pairs#64, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, + clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH$<1>, cuu=\E[%p1%dA, cuu1=\E[A, + 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, ech=\E[%p1%dX$<.1*>, ed=\E[J$<40>, + el=\E[K$<10>, el1=\E[1K$<12>, enacs=\E)0, + flash=\E[30h\E\,$<300/>\E[30l, fsl=\E[1;24r\E8, + home=\E[H, hpa=\E[%i%p1%d`, ht=\011$<1>, hts=\EH, + ich=\E[%p1%d@$<1*>, il=\E[%p1%dL$<2*>, il1=\E[L$<2>, + ind=\n$<2>, + initc=\E[66;%p1%d;%?%p2%{250}%<%t%{0}%e%p2%{500}%<%t%{16}%e + %p2%{750}%<%t%{32}%e%{48}%;%?%p3%{250}%<%t%{0}%e%p3 + %{500}%<%t%{4}%e%p3%{750}%<%t%{8}%e%{12}%;%?%p4%{250} + %<%t%{0}%e%p4%{500}%<%t%{1}%e%p4%{750}%<%t%{2}%e%{3}%; + %{1}%+%+%+%dw, + invis=\E[8m, ip=$<1>, is1=\E[90;1"p\E[?5W$<6>, + is2=\E[2;4;20;30;40l\E[?1;10;16l\E[12h\E[?7;8;25h, + is3=\E>\017\E)0\E(B\E[63;0w\E[m, mc0=\E[0i, mc4=\E[4i, + mc5=\E[5i, + 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, rc=\E8, rev=\E[7m, 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, sc=\E7, 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=, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, 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, +# +# 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, + kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, 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~, khome=\E[H, kich1=\EOP, kil1=\EOP, + knp=\E[U, kpp=\E[V, use=wy370-nk, +# +# Function key set for the VT-320 (and wy85) compatible keyboard +# +wy370-105k|Wyse 370 with 105 key keyboard, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\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~, 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=vt220+vtedit, use=wy370-nk, + use=vt220+keypad, +# +# Function key set for the PC compatible keyboard +# +wy370-EPC|Wyse 370 with 102 key keyboard, + kbs=^H, kcbt=\E[Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, 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~, + khome=\E[H, kich1=\E[2~, knp=\E[U, kpp=\E[V, use=wy370-nk, +# +# Wyse 370 with visual bell. +wy370-vb|Wyse 370 with visible bell, + bel@, use=wy370, +# +# Wyse 370 in 132-column mode. +wy370-w|Wyse 370 in 132-column mode, + cols#132, wsl#132, + rs2=\E[35h\E[?3h$<70>, use=wy370, +# +# Wyse 370 in 132-column mode with visual bell. +wy370-wvb|Wyse 370 with visible bell 132-columns, + flash=\E[30h\E\,$<300/>\E[30l, use=wy370-w, +wy370-rv|Wyse 370 reverse video, + rs3=\E[32h\E[?5h, use=wy370, +# +# Wyse 99gt Tektronix 4010/4014 emulator, +# +wy99gt-tek|Wyse 99gt Tektronix 4010/4014 emulator, + am, os, + cols#74, lines#35, + bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s, + cup=\035%{3040}%{89}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31} + %&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004} + %/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/ + %{31}%&%{64}%+%c\037, + cuu1=^K, ff=^L, + hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH + \037, + home=^]7`x @\037, + hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD + \037, + is2=\E8, nel=\r\n, u0=\E~>\E8, u1=\E[42h, +# +# Wyse 160 Tektronix 4010/4014 emulator, +# +wy160-tek|Wyse 160 Tektronix 4010/4014 emulator, + cup=\035%{3103}%{91}%p1%*%-%Py%p2%{55}%*%Px%gy%{128}%/%{31} + %&%{32}%+%c%gy%{3}%&%{4}%*%gx%{3}%&%+%{96}%+%c%gy%{004} + %/%{31}%&%{96}%+%c%gx%{128}%/%{31}%&%{32}%+%c%gx%{004}%/ + %{31}%&%{64}%+%c\037, + home=^]8`g @\037, use=wy99gt-tek, +# +# Wyse 370 Tektronix 4010/4014 emulator, +# +wy370-tek|Wyse 370 Tektronix 4010/4014 emulator, + am, os, + cols#80, lines#36, + bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s, + cup=\035%{775}%{108}%p1%*%{5}%/%-%Py%p2%{64}%*%{4}%+%{5}%/ + %Px%gy%{32}%/%{31}%&%{32}%+%c%gy%{31}%&%{96}%+%c%gx%{32} + %/%{31}%&%{32}%+%c%gx%{31}%&%{64}%+%c\037, + cuu1=^K, ff=^L, + hd=\036HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH + \037, + home=^]8g @\037, + hu=\036DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD + \037, + is2=\E8, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^I, kcuu1=^K, + nel=\r\n, u0=\E[?38h\E8, u1=\E[?38l\E)0, + +# Vendor-supplied Wyse entries end here. + +# +#TITLE: TERMINFO ENTRY WY520 +#DATE: 8/5/93 +# The WY520 terminfo is based on the WY285 entry published on the WYSE +# BBS with the addition of more function keys and special keys. +# +# rs1 -> set personality +# rs2 -> set number of columns +# rs3 -> set number of lines +# is1 -> select the proper font +# is2 -> do the initialization +# is3 -> If this string is empty then rs3 gets sent. +# +# Wyse 520 emulating a vt420 7 bit mode with default ANSI keyboard +# - The BS key is programmed to generate BS in smcup since +# is2 doesn't seem to work. +# - Remove and shift/Remove: delete a character +# - Insert : enter insert mode +# - Find : delete to end of file +# - Select : clear a line +# - F11, F12, F13: send default sequences (not ESC, BS, LF) +# - F14 : Home key +# - Bottom status line (host writable line) is used. +# - smkx,rmkx are removed because this would put the numeric +# keypad in Dec application mode which doesn't seem to work +# with SCO applications. +# +wy520|wyse520|Wyse 520, + am, hs, km, mc5i, mir, xenl, xon, + cols#80, it#8, lines#24, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[?25l, + clear=\E[H\E[J$<40>, cnorm=\E[34h\E[?25h, cr=\r, + csr=\E[%i%p1%d;%p2%dr$<20>, cub=\E[%p1%dD, 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, + 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`, ht=^I, + hts=\EH, ich=\E[%p1%d@$<2>, il=\E[%p1%dL$<3*>, + il1=\E[L$<3>, ind=\n$<2>, invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[1~, kel=\E[4~, + kent=\EOM, 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, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, + ri=\EM$<2>, rmacs=^O, rmam=\E[?7l, rmcup=\E[ R, rmir=\E[4l, + rmso=\E[m, 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, + 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, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, tsl=\E[2$~\E[1$}\E[%i%p1%d`, + vpa=\E[%i%p1%dd, use=vt220+vtedit, use=vt220+keypad, +# +# Wyse 520 with 24 data lines and status (terminal status) +wy520-24|wyse520-24|Wyse 520 with 24 data lines, + hs@, + dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, + use=wy520, +# +# Wyse 520 with visual bell. +wy520-vb|wyse520-vb|Wyse 520 with visible bell, + flash=\E[30h\E\,$<100/>\E[30l, use=wy520, +# +# Wyse 520 in 132-column mode. +wy520-w|wyse520-w|Wyse 520 in 132-column mode, + cols#132, wsl#132, + dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, + ip=$<7>, rs2=\E[35h\E[?3h, use=wy520, +# +# Wyse 520 in 132-column mode with visual bell. +wy520-wvb|wyse520-wvb|Wyse 520 with visible bell 132-columns, + flash=\E[30h\E\,$<100/>\E[30l, use=wy520-w, +# +# +# Wyse 520 emulating a vt420 7 bit mode. +# The DEL key is programmed to generate BS in is2. +# With EPC keyboard. +# - 'End' key will clear till end of line on EPC keyboard +# - Shift/End : ignored. +# - Insert : enter insert mode. +# - Delete : delete a character (have to change interrupt character +# 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, +# +# Wyse 520 with 24 data lines and status (terminal status) +# with EPC keyboard. +wy520-epc-24|wyse520-pc-24|Wyse 520 with 24 data lines and EPC keyboard, + hs@, + dsl@, fsl@, rs3=\E[?5l\E[47h\E[40l\E[1;24r, tsl@, + use=wy520-epc, +# +# Wyse 520 with visual bell. +wy520-epc-vb|wyse520-pc-vb|Wyse 520 with visible bell and EPC keyboard, + flash=\E[30h\E\,$<100/>\E[30l, use=wy520-epc, +# +# Wyse 520 in 132-column mode. +wy520-epc-w|wyse520-epc-w|Wyse 520 in 132-column mode with EPC keyboard, + cols#132, wsl#132, + dch=\E[%p1%dP$<7>, dch1=\E[P$<7>, ich=\E[%p1%d@$<7>, + ip=$<7>, rs2=\E[35h\E[?3h, use=wy520-epc, +# +# Wyse 520 in 132-column mode with visual bell. +wy520-epc-wvb|wyse520-p-wvb|Wyse 520 with visible bell 132-columns and EPC keyboard, + flash=\E[30h\E\,$<100/>\E[30l, use=wy520-epc-w, +# +# Wyse 520 in 80-column, 36 lines +wy520-36|wyse520-36|Wyse 520 with 36 data lines, + hs@, + lines#36, + dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, + use=wy520, +# +# Wyse 520 in 80-column, 48 lines +wy520-48|wyse520-48|Wyse 520 with 48 data lines, + hs@, + lines#48, + dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, + use=wy520, +# +# Wyse 520 in 132-column, 36 lines +wy520-36w|wyse520-36w|Wyse 520 with 132 columns and 36 data lines, + cols#132, wsl#132, + rs2=\E[?3h, + rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, + use=wy520-36, +# +# Wyse 520 in 132-column, 48 lines +wy520-48w|wyse520-48w|Wyse 520 with 48 data lines, + cols#132, wsl#132, + rs2=\E[?3h, + rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, + use=wy520-48, +# +# +# Wyse 520 in 80-column, 36 lines with EPC keyboard +wy520-36pc|wyse520-36pc|Wyse 520 with 36 data lines and EPC keyboard, + hs@, + lines#36, + dsl@, fsl@, rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r, tsl@, + use=wy520-epc, +# +# Wyse 520 in 80-column, 48 lines with EPC keyboard +wy520-48pc|wyse520-48pc|Wyse 520 with 48 data lines and EPC keyboard, + hs@, + lines#48, + dsl@, fsl@, rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r, tsl@, + use=wy520-epc, +# +# Wyse 520 in 132-column, 36 lines with EPC keyboard +wy520-36wpc|wyse520-36wpc|Wyse 520 with 36 data lines and EPC keyboard, + cols#132, wsl#132, + rs2=\E[?3h, + rs3=\E[?5l\E[36*|\E[36t\E[40l\E[1;36r\E[132$|, + use=wy520-36pc, +# +# Wyse 520 in 132-column, 48 lines with EPC keyboard +wy520-48wpc|wyse520-48wpc|Wyse 520 with 48 data lines and EPC keyboard, + cols#132, wsl#132, + rs2=\E[?3h, + rs3=\E[?5l\E[48*|\E[48t\E[40l\E[1;48r\E[132$|, + use=wy520-48pc, + +# From: John Gilmore <hoptoad!gnu@lll-crg.arpa> +# (wyse-vp: removed <if=/usr/share/tabset/wyse-adds>, there's no such +# file and we don't know what <hts> is -- esr) +wyse-vp|Wyse 50 in ADDS Viewpoint emulation mode with "enhance" on, + OTbs, am, + cols#80, it#8, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EW, + dl1=\El, ed=\Ek, el=\EK, home=^A, ht=^I, il1=\EM, ind=\n, + is2=\E`:\E`9\017\Er, kbs=^H, kcub1=^U, kcud1=\n, kcuf1=^F, + kcuu1=^Z, khome=^A, ll=^A^Z, nel=\r\n, rmir=\Er, rmso=^O, + rmul=^O, rs1=\E`:\E`9\017\Er, sgr0=^O, smir=\Eq, smso=^N, + smul=^N, + +wy75ap|wyse75ap|wy-75ap|wyse-75ap|Wyse WY-75 Applications and Cursor keypad, + is2=\E[1;24r\E[?10;3l\E[?1;25h\E[4l\E[m\E(B\E=, + kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + khome=\EOH, rmkx=\E[?1l\E>$<10/>, smkx=\E[?1h\E=$<10/>, + use=wy75, + +# From: Eric Freudenthal <freudent@eric.ultra.nyu.edu> +wy100q|Wyse 100 for Quotron, + OTbs, + cols#80, lines#24, xmc#1, + cbt=\EI, clear=^Z, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET, home=^^, il1=\EE, invis@, + is2=\E`:\0\EC\EDF\E0\E'\E(\EA21, kcub1=^H, kcud1=\n, + kcuf1=^L, kcuu1=^K, ri=\Ej, rmir=\Er, smir=\Eq, use=adm+sgr, + +#### Kermit terminal emulations +# +# Obsolete Kermit versions may be listed in the section describing obsolete +# non-ANSI terminal emulators later in the file. +# + +# KERMIT standard all versions. +# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. +# (kermit: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr) +# From: greg small <gts@populi.berkeley.edu> 9-25-84 +kermit|standard kermit, + OTbs, + cols#80, lines#24, + clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, + el=\EK, home=\EH, is2=K0 Standard Kermit 9-25-84\n, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, +kermit-am|standard kermit plus auto-margin, + am, + is2=K1 Standard Kermit plus Automatic Margins\n, + use=kermit, +# IBMPC Kermit 1.2. +# Bugs: <ed>, <el>: do not work except at beginning of line! <clear> does +# not work, but fake with :cl=\EH\EJ (since :cd=\EJ: works at beginning of +# line). +# From: greg small <gts@populi.berkeley.edu> 8-30-84 +pckermit|pckermit12|UCB IBMPC Kermit 1.2, + am, + lines#25, + clear=\EH\EJ, ed@, el@, + is2=K2 UCB IBMPC Kermit 1.2 8-30-84\n, use=kermit, +# IBMPC Kermit 1.20 +# Cannot use line 25, now acts funny like ansi special scrolling region. +# Initialization must escape from that region by cursor position to line 24. +# Cannot use character insert because 1.20 goes crazy if insert at col 80. +# Does not use :am: because autowrap is lost when kermit dropped and restarted. +# From: greg small <gts@populi.berkeley.edu> 12-19-84 +pckermit120|UCB IBMPC Kermit 1.20, + it#8, lines#24, + cud1=\EB, cvvis=\EO\Eq\EEK3, dch1=\EN, dl1=\EM, ht=^I, + il1=\EL, + is2=\EO\Eq\EJ\EY7\sK3\sUCB\sIBMPC\sKermit\s1.20\s\s12-19-84 + \n, + rmir@, rmso=\Eq, smir@, smso=\Ep, use=kermit, +# MS-DOS Kermit 2.27 for the IBMPC +# Straight ascii keyboard. :sr=\EI: not avail. many versions + bug prone in vi. +# Cannot use line 25, now acts funny like ansi special scrolling region. +# Initialization must escape from that region by cursor position to line 24. +# Does not use am: because autowrap is lost when kermit dropped and restarted. +# Reverse video for standout like H19. +# (msk227: removed obsolete ":ma=^Hh^Jj^Kk^Ll^^H:" -- esr) +# From: greg small <gts@populi.berkeley.edu> 3-17-85 +msk227|mskermit227|MS-DOS Kermit 2.27 for the IBMPC, + OTbs, am@, + cols#80, it#8, lines#24, + clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, + cvvis=\EO\Eq\EG\EwK4, dch1=\EN, dl1=\EM, ed=\EJ, el=\EK, + home=\EH, ht=^I, il1=\EL, + is2=\EO\Eq\EG\Ew\EJ\EY7\sK4\sMS\sKermit\s2.27\sfor\sthe + \sIBMPC\s3-17-85\n, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, rc=\Ek, + rmir=\EO, rmso=\Eq, sc=\Ej, smir=\E@, smso=\Ep, +# MS-DOS Kermit 2.27 with automatic margins +# From: greg small <gts@populi.berkeley.edu> 3-17-85 +msk227am|mskermit227am|UCB MS-DOS Kermit 2.27 with automatic margins, + am, + cvvis=\EO\Eq\EG\EvK5, + 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. +# (msk22714: removed obsolete ":kn#10:" -- esr) +# From: greg small <gts@populi.berkeley.edu> 3-17-85 +msk22714|mskermit22714|UCB MS-DOS Kermit 2.27 UCB 227.14 IBM PC, + am, + bold=\E[1m, cvvis=\EO\Eq\EG\EvK6, + 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, +# 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. +# (vt320-k3: I added <rmam>/<smam> based on the init string -- esr) +vt320-k3|MS-Kermit 3.00's vt320 emulation, + am, eslok, hs, km, mir, msgr, xenl, + cols#80, it#8, lines#49, pb#9600, vt#3, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cmdch=\E, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + dsl=\E[0$~, ech=\E[%p1%dX, ed=\E[J, el=\E[K, + flash=\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[?5l\E[?5h$<100/>\E[ + ?5l, + fsl=\E[0$}, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, + ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, 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, 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, rc=\E8, + 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$~, + sc=\E7, 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=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 +# (I removed a bogus boolean :mo: and added <msgr>, <smam>, <rmam> -- esr) +vt320-k311|DEC vt320 series as defined by kermit 3.11, + am, eslok, hs, mir, msgr, xenl, xon, + 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, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + 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@, il=\E[%p1%dL, 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, rc=\E8, 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, sc=\E7, 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=vt220+cvis, + +######## NON-ANSI TERMINAL EMULATIONS +# + +#### Avatar +# +# These entries attempt to describe Avatar, a terminal emulation used with +# MS-DOS bulletin-board systems. It was designed to give ANSI-like +# capabilities, but with cheaper (shorter) control sequences. Messy design, +# excessively dependent on PC idiosyncrasies, but apparently rather popular +# in the BBS world. +# +# No color support. Avatar doesn't fit either of the Tektronix or HP color +# models that terminfo knows about. An Avatar color attribute is the +# low 7 bits of the IBM-PC display-memory attribute. Bletch. +# +# I wrote these entries while looking at the Avatar spec. I don't have +# the facilities to test them. Let me know if they work, or don't. +# +# Avatar escapes not used by these entries (because maybe you're smarter +# and more motivated than I am and can figure out how to wrap terminfo +# around some of them, and because they are weird enough to be funny): +# level 0: +# ^L -- clear window/reset current attribute to default +# ^V^A%p1%c -- set current color attribute, parameter decodes as follows: +# +# bit: 6 5 4 3 2 1 0 +# | | | | | +# +---+---+ | +---+---+ +# | | | +# | | foreground color +# | foreground intensity +# background color +# level 0+: +# ^V^J%p1%c%p2%c%p3%c%p4%c%p5%c -- scroll (p2,p3) to (p4,p5) up by p1 lines +# ^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 ^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. +# The pattern can contain Avatar console codes, +# including other ^V ^Y patterns. +# level 1: +# ^V^O -- clockwise mode on; turn print direction right each time you +# hit a window edge (yes, really). Turned off by CR +# ^V^P -- no-op +# ^V^Q%c -- query the driver +# ^V^R -- driver reset +# ^V^S -- Sound tone (PC-specific) +# ^V^T -- change highlight at current cursor position to %c +# ^V^U%p1%c%p2%c -- highlight window <a> with attribute <b> +# ^V^V%p1%c%p2%c%p3%c%p4%c%p5%c +# -- define window +# +# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995 +# (The <blink>/<bold>/<rev>/<smacs>/<smul>/<smso> capabilities exist only to +# tell ncurses that the corresponding highlights exist; it should use <sgr>, +# which is the only method that will actually work for multiple highlights.) +# +# Update by TD - 2004: half of this was inconsistent. Found documentation +# and repaired most of the damage. sgr0 is probably incorrect, but the +# available documentation gives no clues for a workable string. +avatar0|avatar terminal emulator level 0, + am, bce, msgr, + cols#80, it#8, lines#25, + blink=^V^B, bold=^V^A^P, cr=\r, cub1=^V^E, cud1=^V^D, + cuf1=^V^F, cup=\026\010%p1%c%p2%c, cuu1=^V^C, el=^V^G, + ind=\n, invis=^V^A\0, rep=\031%p1%c%p2%c, rev=^V^Ap, + rmacs@, rs2=^L, + sgr=%?%p1%p2%|%p3%|%p6%|%p7%|%t\026\001%?%p7%t%{128}%e%{0}%? + %p1%t%{112}%|%;%?%p2%t%{1}%|%;%?%p3%t%{112}%|%;%?%p6%t + %{16}%|%;%;%c%;%?%p4%t\026\002%;, + sgr0=^V^A^G, smacs@, smso=^V^Ap, smul=^V^A^A, + use=klone+acs, +# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995 +avatar0+|avatar terminal emulator level 0+, + dch1=^V^N, rmir=\026\n\0\0\0\0, smir=^V^I, use=avatar0, +# From: Eric S. Raymond <esr@snark.thyrsus.com> 1 Nov 1995 +avatar|avatar1|avatar terminal emulator level 1, + civis=^V'^B, cnorm=^V'^A, cvvis=^V^C, dl1=^V-, il1=^V+, + rmam=^V", rmir=^V^P, smam=^V$, use=avatar0+, + +#### RBcomm +# +# RBComm is a lean and mean terminal emulator written by the Interrupt List +# maintainer, Ralf Brown. It was fairly popular in the late DOS years (early +# '90s), especially in the BBS world, and still has some loyal users due to +# its very small memory footprint and to a cute macro language. +rbcomm|IBM PC with RBcomm and EMACS keybindings, + am, bw, mir, msgr, xenl, + cols#80, it#8, lines#25, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=^L, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=^C, cuf1=^B, + cup=\037%p2%{32}%+%c%p1%{32}%+%c, cuu1=^^, dch1=^W, + dl=\E[%p1%dM, dl1=^Z, ech=\E[%p1%dX, ed=^F5, el=^P^P, ht=^I, + il=\E[%p1%dL, il1=^K, ind=\ED, invis=\E[8m, + is2=\017\035\E(B\E)0\E[?7h\E[?3l\E[>8g, kbs=^H, + kcub1=^B, kcud1=^N, kcuf1=^F, kcuu1=^P, khome=^A, nel=\r\ED, + rc=\E8, rep=\030%p1%c%p2%c, rev=^R, ri=\EM, rmcup=, rmdc=, + rmir=^], rmkx=\E>, rmso=^U, rmul=^U, + rs1=\017\E(B\E)0\025\E[?3l\E[>8g, sc=\E7, sgr0=\E[m, + smcup=, smdc=, smir=^\, smkx=\E=, smso=^R, smul=^T, + use=vt220+cvis, +rbcomm-nam|IBM PC with RBcomm without autowrap, + am@, + bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n, + is2=\017\035\E(B\E)0\E[?7l\E[?3l\E[>8g, kbs=^H, + kcub1=^H, kcud1=\n, nel=\r\n, use=rbcomm, +rbcomm-w|IBM PC with RBcomm in 132 column mode, + cols#132, + bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n, + is2=\017\035\E(B\E)0\E[?7h\E[?3h\E[>8g, kbs=^H, + kcub1=^H, kcud1=\n, nel=\r\n, use=rbcomm, + +######## LCD DISPLAYS +# + +#### Matrix Orbital +# from: Eric Z. Ayers (eric@ale.org) +# +# Matrix Orbital 20x4 LCD display +# Command Character is 0xFE (decimal 254, octal 376) +# +# On this device, cursor addressability isn't possible. The LCD expects: +# 0xfe G <col> <row> +# for cup: %p1 == row and %p2 is column +# +# 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"'. +# +# Alas, there is no cursor upline capability on this display. +# +# These entries add some 'sanity stuff' to the clear function. That is, it +# does a 'clear' and also turns OFF auto scroll, turns ON Auto Line Wrapping, +# and turns off the cursor blinking and stuff like that. +# +# NOTE: calling 'beep' turns on the backlight (bell) +# NOTE: calling 'flash' turns it on and back off (visual bell) +# +MtxOrb|generic Matrix Orbital LCD display, + bel=\376B\001, clear=\376X\376C\376R\376K\376T, + cnorm=\376K\376T, cub1=\376L, cuf1=\376M, + flash=\376B\001$<200>\376F, home=\376H, +MtxOrb204|20x4 Matrix Orbital LCD display, + cols#20, lines#4, use=MtxOrb, +MtxOrb162|16x2 Matrix Orbital LCD display, + cols#16, lines#2, use=MtxOrb, +# The end + +######## OLDER TERMINAL TYPES +# +# This section is devoted to older commercial terminal brands that are now +# discontinued, but known to be still in use or represented by emulations. +# + +#### AT&T (att, tty) +# +# This section also includes Teletype-branded VDTs. +# +# The AT&T/Teletype terminals group was sold to SunRiver Data Systems (now +# Boundless Technologies); for details, see the header comment on the ADDS +# section. +# +# These are AT&T's official terminfo entries. All-caps aliases have been +# removed. +# +att2300|sv80|AT&T 2300 Video Information Terminal 80 column mode, + am, eo, mir, msgr, xon, + cols#80, it#8, lines#24, + bel=^G, clear=\E[H\E[J, cr=\r, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, kbs=^H, kcbt=\E[Z, kclr=\E[J, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, + 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, +att2350|AT&T 2350 Video Information Terminal 80 column mode, + mc0@, mc4@, mc5@, use=att2300, + +# Must setup RETURN KEY - CR, REC'VD LF - INDEX. +# Seems upward compatible with vt100, plus ins/del line/char. +# On sgr, the protection parameter is ignored. +# No check is made to make sure that only 3 parameters are output. +# standout= reverse + half-intensity = 3 | 5. +# bold= reverse + underline = 2 | 3. +# note that half-bright blinking doesn't look different from normal blinking. +# NOTE:you must program the function keys first, label second! +# (att4410: a BSD entry has been seen with the following capabilities: +# <is2=\E[?6l>, <kf1=\EOc>, <kf2=\EOd>, <kf3=\EOe>, <kf4=\EOg>, +# <kf6=\EOh>, <kf7=\EOi>, <kf8=\EOj>, -- esr) +att5410v1|att4410v1|tty5410v1|AT&T 4410/5410 80 columns - version 1, + am, hs, mir, msgr, xon, + cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, + acsc=++\,\,--..00``aaffgghhjjkkllmmnnooppqqrrssttuuvvwwxxyyz + z{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[2;7m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dim=\E[2m, + dl1=\E[M, ed=\E[J, el=\E[K, fsl=\E8, home=\E[H, ht=^I, + ich1=\E[@, il1=\E[L, ind=\n, invis=\E[8m, 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 + \s\EOS\E[5;03q\s\s\sf5\s\s\s\s\s\s\s\s\s\s\s\EOT\E[6;03q + \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, + kbs=^H, kclr=\E[2J, 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, khome=\E[H, 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, rc=\E8, rev=\E[7m, ri=\EM, + rmacs=^O, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, + sc=\E7, + 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, smso=\E[7m, smul=\E[4m, + tsl=\E7\E[25;%p1%{1}%+%dH, + +att4410v1-w|att5410v1-w|tty5410v1-w|AT&T 4410/5410 132 columns - version 1, + cols#132, wsl#132, + is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att5410v1, + +att4410|att5410|tty5410|AT&T 4410/5410 80 columns - version 2, + OTbs, + pfx=\E[%p1%d;%p2%l%02dq f%p1%d %p2%s, + use=att5410v1, + +att5410-w|att4410-w|4410-w|tty5410-w|5410-w|AT&T 4410/5410 in 132 column mode, + cols#132, wsl#132, + is1=\E[?3h\E)0, rs2=\Ec\E[?3h\E[2;0y, use=att4410, + +# 5410 in terms of a vt100 +# (v5410: added <rmam>/<smam> based on init string -- esr) +v5410|att5410 in terms of a vt100, + am, mir, msgr, xon, + cols#80, it#8, lines#24, vt#3, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + 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, rc=\E8, 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, + sc=\E7, + 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=vt100+fnkeys, + +# +# Teletype Model 5420 -- A souped up 5410, with multiple windows, +# even! the 5420 has three modes: scroll, window or page mode +# this terminfo should work in scroll or window mode, but doesn't +# take advantage of any of the differences between them. +# +# Has memory below (2 lines!) +# 3 pages of memory (plus some spare) +# The 5410 sequences for <cup>, <cvvis>, <dch>, <dl>, <ech>, <flash>, <home>, +# <hpa>, <hts> would work for these, but these work in both scroll and window +# mode... Unset insert character so insert mode works +# <is1> sets 80 column mode, +# <is2> escape sequence: +# 1) turn off all fonts +# 2) function keys off, keyboard lock off, control display off, +# insert mode off, erasure mode off, +# 3) full duplex, monitor mode off, send graphics off, nl on lf off +# 4) reset origin mode +# 5) set line wraparound +# 6) exit erasure mode, positional attribute mode, and erasure extent mode +# 7) clear margins +# 8) program ENTER to transmit ^J, +# We use \212 to program the ^J because a bare ^J will get translated by +# UNIX into a CR/LF. The enter key is needed for AT&T uOMS. +# 1 2 3 4 5 6 7 8 +# <is3> set screen color to black, +# No representation in terminfo for the delete word key: kdw1=\Ed +# Key capabilities assume the power-up send sequence... +# This <rmcup> is not strictly necessary, but it helps maximize +# memory usefulness: <rmcup=\Ez>, +# Alternate sgr0: <sgr0=\E[m\EW^O>, +# Alternate sgr: <sgr=\E[%?%p1%t2;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5%t;2%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t^N%e^O%;>, +# smkx programs the SYS PF keys to send a set sequence. +# It also sets up labels f1, f2, ..., f8, and sends edit keys. +# This string causes them to send the strings <kf1>-<kf8> +# when pressed in SYS PF mode. +# (att4415: I added <rmam>/<smam> based on the init string -- esr) +att4415|tty5420|att5420|AT&T 4415/5420 80 cols, + OTbs, db, mir, xon, + lh#2, lm#78, lw#8, nlab#8, wsl#55, + cbt=\E[Z, clear=\E[x\E[J, cnorm=\E[11;0j, cub=\E[%p1%dD, + cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dx, + cuu=\E[%p1%dA, cvvis=\E[11;1j, dch=\E[%p1%dP, + dl=\E[%p1%dM, ech=\E[%p1%ds\E[%p1%dD, + flash=\E[?5h$<200>\E[?5l, home=\E[x, + hpa=\E[%p1%{1}%+%dG, hts=\EH, ich=\E[%p1%d@, ich1@, + il=\E[%p1%dL, indn=\E[%p1%dE, is1=\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[21;1j\212, + is3=\E[?5l, kbeg=\Et, kcbt=\E[Z, kdch1=\E[P, kdl1=\E[M, + kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, kf2=\EOd, + kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, + kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U, + kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, + lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?2i, mc4=\E[?9i, + mc5=\E[?4i, mrcup=\E[%i%p1%d;%p2%dt, + pfx=\E[%p1%d;%p2%l%02dq F%p1%d %p2%s, + pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, + rin=\E[%p1%dF, rmam=\E[?7l, rmir=\E[4l, + rmkx=\E[19;0j\E[21;1j\212, rmln=\E|, + sgr=\E[0%?%p1%p5%|%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1 + %|%p6%|%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[19;1j\E[21;4j\Eent, smln=\E~, tbc=\E[3g, + tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, + use=att4410, + +att4415-w|tty5420-w|att5420-w|AT&T 4415/5420 132 cols, + cols#132, lm#54, wsl#97, + is1=\E[?3h$<100>, use=att4415, + +att4415-rv|tty5420-rv|att5420-rv|AT&T 4415/5420 80 cols/rv, + flash=\E[?5l$<200>\E[?5h, is3=\E[?5h, use=att4415, + +att4415-w-rv|tty5420-w-rv|att5420-w-rv|AT&T 4415/5420 132 cols/rv, + cols#132, lm#54, wsl#97, + flash=\E[?5l$<200>\E[?5h, is1=\E[?3h$<100>, is3=\E[?5h, + use=att4415, + +# Note that this mode permits programming USER PF KEYS and labels +# However, when you program user pf labels you have to reselect +# user pf keys to make them appear! +att4415+nl|tty5420+nl|att5420+nl|generic AT&T 4415/5420 changes for not changing labels, + kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, + pfx=\E[%p1%d;%p2%l%02d;0;1q\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s + \s%p2%s, + pln=\E[%p1%d;0;0;1q%p2%:-16.16s, + +att4415-nl|tty5420-nl|att5420-nl|AT&T 4415/5420 without changing labels, + kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, + use=att4415, + +att4415-rv-nl|tty5420-rv-nl|att5420-rv-nl|AT&T 4415/5420 reverse video without changing labels, + kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, + use=att4415-rv, + +att4415-w-nl|tty5420-w-nl|att5420-w-nl|AT&T 4415/5420 132 cols without changing labels, + kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, + use=att4415-w, + +att4415-w-rv-n|tty5420-w-rv-n|att5420-w-rv-n|AT&T 4415/5420 132 cols reverse without changing labels, + kf1@, kf2@, kf3@, kf4@, kf5@, kf6@, kf7@, kf8@, use=att4415+nl, + use=att4415-w-rv, + +att5420_2|AT&T 5420 model 2 80 cols, + am, db, hs, mir, msgr, xon, + cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + blink=\E[5m, cbt=\E[1Z, clear=\EH\EJ, cnorm=\E[11;0j, + cr=\EG, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[1B, cuf=\E[%p1%dC, cuf1=\E[1C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[1A, + cvvis=\E[11;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, 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, ht=^I, hts=\EH, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, + indn=\E[%p1%dE, invis=\E[8m, + 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, + kbeg=\Et, kbs=^H, kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, + kel=\E[2K, kend=\Ez, kent=\n, kf1=\EOc, kf2=\EOd, kf3=\EOe, + kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, khome=\E[H, + kich1=\E[4h, kil1=\E[L, kind=\E[T, kll=\Eu, knp=\E[U, + kpp=\E[V, kri=\E[S, lf1=F1, lf2=F2, lf3=F3, lf4=F4, lf5=F5, + lf6=F6, lf7=F7, lf8=F8, ll=\Ew, mc0=\E[?;2i, mc4=\E[4i, + mc5=\E[5i, mrcup=\E[%i%p1%d;%p2%dt, nel=\r\n, + pfx=\E[%p1%d;%p2%l%02dq\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s\s%p2 + %s\E~, + pln=\E[%p1%d;0;0;0q%p2%:-16.16s\E~, prot=\EV, rc=\E8, + rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmkx=\E[19;0j, + rmln=\E|, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, + sc=\E7, + 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~, + smso=\E[7m, smul=\E[4m, tbc=\E[3g, + tsl=\E7\E[25;%p1%{8}%+%dH, vpa=\E[%p1%{1}%+%dd, +att5420_2-w|AT&T 5420 model 2 in 132 column mode, + cols#132, + is1=\E[0;23r\Ex\Ey\E[2;0j\E[3;3j\E[4;0j\E[5;1j\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, + use=att5420_2, + +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, cub=\E[%p1%dD, + cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, + cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, home=\E[H, + ich=\E[%p1%d@, ich1=\E[1@, il=\E[%p1%dL, 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, kf11=\E[n, kf12=\E[o, kf13=\E[H, kf14=\E[I, + kf15=\E[J, 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, +att4418-w|att5418-w|AT&T 5418 132 cols, + cols#132, + is1=\E[?3h, use=att5418, + +att4420|tty4420|Teletype 4420, + OTbs, da, db, eo, msgr, ul, xon, + cols#80, lines#24, lm#72, + bel=^G, clear=\EH\EJ, cr=\EG, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, + dl1=\EM, ed=\EJ, el=\Ez, home=\EH, il1=\EL, ind=\EH\EM\EY7\s, + kcbt=\EO, kclr=\EJ, kcub1=^H, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kdch1=\EP, kdl1=\EM, kf0=\EU, kf3=\E@, khome=\EH, + kich1=\E\^, kil1=\EL, kind=\ES, kri=\ET, + lf0=segment advance, lf3=cursor tab, rmdc@, rmso=\E~, + rmul=\EZ, smdc@, smso=\E}, smul=\E\\, + +# The following is a terminfo entry for the Teletype 4424 +# asynchronous keyboard-display terminal. It supports +# the vi editor. The terminal must be set up as follows, +# +# HIGHLIGHT DEFINITION 3-TONE +# DISPLAY FUNCTION GROUP III +# +# The second entry below provides limited (a la adm3a) +# operation under GROUP II. +# +# This must be used with DISPLAY FUNCTION GROUP I or III +# and HIGHLIGHT DEFINITION 3-TONE +# The terminal has either bold or blink, depending on options +# +# (att4424: commented out <smcup>=\E[1m, we don't need bright locked on -- esr) +att4424|tty4424|Teletype 4424, + OTbs, am, xon, + cols#80, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E3, bold=\E3, cbt=\EO, clear=\E[H\E[2J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\EB, cuf=\E[%p1%dC, cuf1=\EC, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, 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, + kbs=^H, kclr=\EJ, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, + khome=\E[H, 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, + +att4424-1|tty4424-1|Teletype 4424 in display function group I, + kclr@, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome@, + use=att4424, + +# This entry is not one of AT&T's official ones, it was translated from the +# 4.4BSD termcap file. The highlight strings are different from att4424. +# I have no idea why this is -- older firmware version, maybe? +# The following two lines are the comment originally attached to the entry: +# This entry appears to avoid the top line - I have no idea why. +# From: jwb Wed Mar 31 13:25:09 1982 remote from ihuxp +att4424m|tty4424m|Teletype 4424M, + am, da, db, mir, + cols#80, it#8, lines#23, + 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, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, + kf4=\EOS, khome=\E[H, nel=\r\n, ri=\ET, rmso=\E[m, rmul=\E[m, + sgr0=\E[m, smso=\E[7m, smul=\E[4m, + +# The Teletype 5425 is really version 2 of the Teletype 5420. It +# is quite similar, except for some minor differences. No page +# mode, for example, so all of the <cup> sequences used above have +# to change back to what's being used for the 5410. Many of the +# option settings have changed their numbering as well. +# +# This has been tested on a preliminary model. +# +# (att5425: added <rmam>/<smam> based on the init string -- esr) +att5425|tty5425|att4425|AT&T 4425/5425, + am, da, db, hs, mir, msgr, xenl, xon, + cols#80, it#8, lh#2, lines#24, lm#78, lw#8, nlab#8, wsl#55, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, + clear=\E[H\E[J, cnorm=\E[12;0j, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + cvvis=\E[12;1j, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%ds\E[%p1%dD, ed=\E[J, + el=\E[K, el1=\E[1K, enacs=\E(B\E)0, + flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, + hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, indn=\E[%p1%dE, + invis=\E[8m, 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, kbs=^H, kcbt=\E[Z, kclr=\E[J, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, + kdl1=\E[M, kel=\E[2K, kend=\Ez, kent=\Eent, kf1=\EOc, + kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, kf6=\EOh, kf7=\EOi, + kf8=\EOj, khome=\E[H, kich1=\E[4h, kil1=\E[L, kind=\E[T, + kri=\E[S, ll=\E[24H, mc0=\E[?2i, mc4=\E[?9i, mc5=\E[?4i, + nel=\r\n, + pfx=\E[%p1%d;%p2%l%02dq F%p1%1d %p2%s, + pln=\E[%p1%d;0;0;0q%p2%:-16.16s, prot=\EV, rc=\E8, + rev=\E[7m, ri=\EM, rin=\E[%p1%dF, rmacs=^O, rmam=\E[?7l, + rmir=\E[4l, rmkx=\E[21;0j\E[25;1j\212, rmln=\E|, + rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l\E[2;0y, sc=\E7, + sgr=\E[0%?%p5%p6%|%t;2%;%?%p2%t;4%;%?%p4%t;5%;%?%p3%p1%|%p6 + %|%t;7%;%?%p7%t;8%;m%?%p8%t\EV%;%?%p9%t\016%e\017%;, + sgr0=\E[m\017, smacs=^N, smam=\E[?7h, smir=\E[4h, + smkx=\E[21;1j\E[25;4j\Eent\E~, smln=\E~, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, tsl=\E7\E[25;%p1%{8}%+%dH, + vpa=\E[%p1%{1}%+%dd, + +att5425-nl|tty5425-nl|att4425-nl|AT&T 4425/5425 80 columns no labels, + smkx=\E[21;1j\E[25;4j\Eent, use=att4425, + +att5425-w|att4425-w|tty5425-w|Teletype 4425/5425 in 132 column mode, + cols#132, lm#54, wsl#97, + is1=\E[?3h$<100>, use=tty5425, + +# (att4426: his had bogus capabilities: :ri=\EM:, :ri=\E[1U:. +# I also added <rmam>/<smam> -- esr) +att4426|tty4426|Teletype 4426S, + am, da, db, xon, + 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, cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\EP, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[0K, home=\E[H, + hpa=\E[%p1%dG, ht=^I, hts=\E1, ich=\E[%p1%d@, ich1=\E\^, + il=\E[%p1%dL, il1=\EL, ind=\n, is1=\Ec\E[?7h, + is2=\E[m\E[1;24r, kbs=^H, kcbt=\EO, kclr=\E[2J, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, 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=ecma+index, + +# Terminfo entry for the AT&T 510 A Personal Terminal +# Function keys 9 - 16 are available only after the +# screen labeled (soft keys/action blocks) are labeled. Function key +# 9 corresponds to the leftmost touch target on the screen, +# function key 16 corresponds to the rightmost. +# +# This entry is based on one done by Ernie Rice at Summit, NJ and +# changed by Anne Gallup, Skokie, IL, ttrdc!anne +att510a|bct510a|AT&T 510A Personal Terminal, + am, mir, msgr, xenl, xon, + cols#80, lh#2, lines#24, lw#7, nlab#8, + acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, + civis=\E[11;0|, clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, + dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, + el=\E[0K, el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, ht=^I, + hts=\EH, il=\E[%p1%dL, il1=\E[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, 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, + 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, + 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, tbc=\E[3g, + +# Terminfo entry for the AT&T 510 D Personal Terminal +# Function keys 9 through 16 are accessed by bringing up the +# system blocks. +# Function key 9 corresponds to the leftmost touch target on the screen, +# function key 16 corresponds to the rightmost. +# +# There are problems with soft key labeling. These are due to +# strangenesses in the native terminal that are impossible to +# describe in a terminfo. +att510d|bct510d|AT&T 510D Personal Terminal, + am, da, db, mir, msgr, xenl, xon, + cols#80, lh#2, lines#24, lm#48, lw#7, nlab#8, + acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, + clear=\E[H\E[J, cnorm=\E[11;3|, cr=\r, cub=\E[%p1%dD, + cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, + cuu1=\E[A, cvvis=\E[11;2|, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[0K, + el1=\E[1K, enacs=\E(B\E)1, ff=^L, home=\E[H, + hpa=\E[%p1%{1}%+%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\n, invis=\E[8m, + 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, rev=\E[7m, ri=\EM, + rmacs=^O, rmir=\E[4l, rmkx=\E[19;0|, rmln=\E<, rmso=\E[m, + rmul=\E[m, 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?, smso=\E[7m, smul=\E[4m, + smxon=\E[29;0|, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, + use=ansi+rep, use=ecma+index, + +# (att500: I merged this with the att513 entry, att500 just used att513 -- esr) +att500|att513|AT&T 513 using page mode, + am, chts, mir, msgr, xenl, xon, + cols#80, lh#2, lines#24, lw#8, nlab#8, + acsc=+g\,h-f.e`bhrisjjkkllmmnnqqttuuvvwwxx{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[2;7m, cbt=\E[Z, + clear=\E[H\E[J, cnorm=\E[11;0|, cr=\r, + csr=%i\E[%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + cvvis=\E[11;1|, dch=\E[%p1%dP, dch1=\E[P$<1>, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)1, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, + hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n, + indn=\E[%p1%dE, invis=\E[8m, + 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, + kFND=\EOX, kHLP=\EOM, kHOM=\ENM, kIC=\ENJ, kLFT=\ENK, + kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, kOPT=\EOR, kPRT=\EOZ, + kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, kRIT=\ENL, kRPL=\EOY, + kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, kbs=^H, kcan=\EOw, + kcbt=\E[Z, kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, + kcrt=\EOn, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\Eent, + kext=\EOk, kf1=\EOc, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, + kf6=\EOh, kf7=\EOi, kf8=\EOj, kfnd=\EOx, khlp=\EOm, + khome=\E[H, kich1=\ENj, kind=\E[S, kmov=\ENc, kmrk=\ENi, + kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, + kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, + kres=\EOq, krfr=\ENa, kri=\E[T, krpl=\EOy, krst=\EOB, + ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, ll=\E#2, + mc0=\E[?98l\E[0i, mc4=\E[?98l\E[?8i, mc5=\E[?98l\E[?4i, + nel=\EE, + pfkey=\E[%p1%d;%p2%l%d;3;0p\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s + \s%p2%s, + pfloc=\E[%p1%d;%p2%l%d;2;0p\s\s\sF%p1%d\s\s\s\s\s\s\s\s\s\s + \s%p2%s, + pfx=\E[%p1%d;%p2%l%d;1;0p F%p1%d %p2%s, + pln=\E[%p1%dp%p2%:-16s, rc=\E8, rev=\E[7m, ri=\EM, + rin=\E[%p1%dF, rmacs=^O, rmir=\E[4l, + rmkx=\E[19;0|\E[21;1|\212, rmln=\E<, rmso=\E[m, + rmul=\E[m, + rs1=\E?\E[3;3|\E[10;0|\E[21;1|\212\E[6;1|\E[1{\E[?99l\E[2;0| + \E[6;1|\E[8;0|\E[19;0|\E[1{\E[?99l, + rs2=\E[5;0|, sc=\E7, + 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?, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, use=ansi+rep, + +# 01-07-88 +# printer must be set to EMUL ANSI to accept ESC codes +# <cuu1> stops at top margin +# <is1> sets cpi 10,lpi 6,form 66,left 1,right 132,top 1,bottom 66,font +# and alt font ascii,wrap on,tabs cleared +# <is2> disables newline on LF,Emphasized off +# The <u0> capability sets form length +att5310|att5320|AT&T Model 53210 or 5320 matrix printer, + xhpa, xvpa, + bufsz#0x2000, cols#132, cps#120, it#8, lines#66, orc#10, + orhi#100, orl#12, orvi#72, + cpi=%?%p1%{10}%=%t\E[w%e%p1%{12}%=%t\E[2w%e%p1%{5}%=%t\E[5w + %e%p1%{13}%=%p1%{14}%=%O%t\E[3w%e%p1%{16}%=%p1%{17}%=%O + %t\E[4w%e%p1%{6}%=%t\E[6w%e%p1%{7}%=%t\E[7w%e%p1%{8}%=%t + \E[8w%;, + cr=\r, + csnm=%?%p1%{0}%=%tusascii%e%p1%{1}%=%tenglish%e%p1%{2}%=%tfi + nnish%e%p1%{3}%=%tjapanese%e%p1%{4}%=%tnorwegian%e%p1 + %{5}%=%tswedish%e%p1%{6}%=%tgermanic%e%p1%{7}%=%tfrench + %e%p1%{8}%=%tcanadian_french%e%p1%{9}%=%titalian%e%p1 + %{10}%=%tspanish%e%p1%{11}%=%tline%e%p1%{12}%=%tsecurit + y%e%p1%{13}%=%tebcdic%e%p1%{14}%=%tapl%e%p1%{15}%=%tmos + aic%;, + cud=\E[%p1%de, cud1=\n, cuf=\E[%p1%da, cuf1=\s, cuu1=\EM, + ff=^L, hpa=\E[%p1%d`, ht=^I, is1=\Ec, is2=\E[20l\r, + lpi=%?%p1%{2}%=%t\E[4z%e%p1%{3}%=%t\E[5z%e%p1%{4}%=%t\E[6z%e + %p1%{6}%=%t\E[z%e%p1%{8}%=%t\E[2z%e%p1%{12}%=%t\E[3z%;, + rshm=\E[m, + scs=%?%p1%{0}%=%t\E(B%e%p1%{1}%=%t\E(A%e%p1%{2}%=%t\E(C%e%p1 + %{3}%=%t\E(D%e%p1%{4}%=%t\E(E%e%p1%{5}%=%t\E(H%e%p1%{6} + %=%t\E(K%e%p1%{7}%=%t\E(R%e%p1%{8}%=%t\E(Q%e%p1%{9}%=%t + \E(Y%e%p1%{10}%=%t\E(Z%e%p1%{11}%=%t\E(0%e%p1%{12}%=%t + \E(1%e%p1%{13}%=%t\E(3%e%p1%{14}%=%t\E(8%e%p1%{15}%=%t + \E(}%;, + smgbp=\E[;%p1%dr, smglp=\E[%{1}%p1%+%ds, + smgrp=\E[;%{1}%p1%+%ds, smgtp=\E[%p1%dr, sshm=\E[5m, + u0=\E[%p1%dt, vpa=\E[%p1%dd, + +# Teletype 5620, firmware version 1.1 (8;7;3) or earlier from BRL +# The following SET-UP modes are assumed for normal operation: +# CR_DEF=CR NL_DEF=INDEX DUPLEX=FULL +# Other SET-UP modes may be set for operator convenience or communication +# requirements. This termcap description is for the Resident Terminal Mode. +# No delays specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +# The BRL entry also said: UNSAFE :ll=\E[70H: +att5620-1|tty5620-1|dmd1|Teletype 5620 with old ROMs, + am, xon, + cols#88, it#8, lines#70, vt#3, + bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, + dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, + home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, ind=\n, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, kll=\E[70;1H, nel=\r\n, + rc=\E8, ri=\E[T, rs1=\Ec, sc=\E7, use=ecma+index, + +# 5620 terminfo (2.0 or later ROMS with char attributes) +# The following SET-UP modes are assumed for normal operation: +# DUPLEX=FULL GEN_FLOW=ON NEWLINE=INDEX RETURN=CR +# Other SET-UP modes may be set for operator convenience or communication +# requirements. This termcap description is for Resident Terminal Mode. No +# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +# assumptions: <ind> (scroll forward one line) is only done at screen bottom +# Be aware that older versions of the dmd have a firmware bug that affects +# parameter defaulting; for this terminal, the 0 in \E[0m is not optional. +# <msgr> is from an otherwise inferior BRL for this terminal. That entry +# also has <ll>=\E[70H commented out and marked unsafe. +# For more, see the 5620 FAQ maintained by David Breneman <daveb@dgtl.com>. +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, clear=\E[H\E[J, cr=\r, cub1=^H, + cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\E[S, kbs=^H, + kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + khome=\E[H, 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=ecma+index, +att5620-24|tty5620-24|dmd-24|Teletype dmd 5620 in a 24x80 layer, + lines#24, use=att5620, +att5620-34|tty5620-34|dmd-34|Teletype dmd 5620 in a 34x80 layer, + lines#34, use=att5620, +# 5620 layer running the "S" system's downloaded graphics handler: +att5620-s|tty5620-s|layer|vitty|AT&T 5620 S layer, + OTbs, OTpt, am, + cols#80, it#8, lines#72, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, + cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=^K, dl1=\ED, + el=\EK, flash=\E^G, ht=^I, il1=\EI, ind=\n, kbs=^H, kclr=\E[2J, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, + kll=\E[70;1H, + +# Entries for <kf15> thru <kf28> refer to the shifted system pf keys. +# +# Entries for <kf29> thru <kf46> refer to the alternate keypad mode +# keys: = * / + 7 8 9 - 4 5 6 , 1 2 3 0 . ENTER +att605|AT&T 605 80 column 102key keyboard, + am, eo, xon, + cols#80, lines#24, lw#8, nlab#8, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch=\E[%p1%dP, + dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K, el1=\E[1K, fsl=\E8, ht=^I, ich=\E[%p1%d@, ich1=\E[@, + il1=\E[L, 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[ @, kbs=^H, kcbt=\E[Z, kclr=\E[2J, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, + kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, kf11=\ENq, + kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, + kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, + kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, + kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, + kf30=\EOQ, kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, + kf35=\EOy, kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, + kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, + kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, + kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, kich1=\E[@, + kil1=\E[L, kind=\E[S, knp=\E[U, kpp=\E[V, ll=\E[24H, + mc4=\E[?4i, 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, rmir=\E[4l, rmln=\E[2p, rmso=\E[m, rmul=\E[m, + rs2=\Ec\E[?3l, sc=\E7, sgr0=\E[m\017, smacs=\E)0\016, + smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m, + tsl=\E7\E[25;%i%p1%dx, +att605-pc|AT&T 605 in pc term mode, + acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x + \263, + cbt=\E[Z, cub1=\E[D, cud1=\E[B, cuf1=\E[C, cuu1=\E[A, + dch1=\E[P, dl1=\E[M, ich1=\E[@, il1=\E[L, kcbt=\E[Z, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, + kdl1=\E[M, kend=\E[F, kf1=\E[M, kf10=\E[V, kf2=\E[N, + kf3=\E[O, kf4=\E[P, kf5=\E[Q, kf6=\E[R, kf7=\E[S, kf8=\E[T, + kf9=\E[U, khome=\E[H, kich1=\E[@, knp=\E[G, kpp=\E[I, + rmsc=\E[50;0|$<400>, smsc=\E[?11l\E[50;1|$<250>, + xoffc=g, xonc=e, use=att605, +att605-w|AT&T 605-w 132 column 102 key keyboard, + cols#132, wsl#132, + is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h\E(B\E)0, use=att605, +# (att610: I added <rmam>/<smam> based on the init string. I also +# added <indn> and <rin> because the BSD file says the att615s have them, +# and the 615 is like a 610 with a big keyboard, and most of their other +# smart terminals support the same sequence -- esr) +att610|AT&T 610; 80 column; 98key keyboard, + am, eslok, hs, mir, msgr, xenl, xon, + cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I, + ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, + invis=\E[8m, + is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)0, + is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H, + kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, + kf13=\ENs, kf14=\ENt, kf2=\EOd, kf3=\EOe, kf4=\EOf, kf5=\EOg, + kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, + kind=\E[S, kri=\E[T, ll=\E[24H, mc4=\E[?4i, 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, + ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmln=\E[2p, + rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7, + 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[p, smso=\E[7m, smul=\E[4m, tsl=\E7\E[25;%i%p1%dx, + use=ecma+index, use=att610+cvis0, +att610-w|AT&T 610; 132 column; 98key keyboard, + cols#132, wsl#132, + is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, + use=att610, + +att610-103k|AT&T 610; 80 column; 103key keyboard, + kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, + kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, + kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, + kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, + kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, + kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, + kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\r, + kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf9@, kfnd=\EOx, + khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, kmsg=\EOl, + knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, kpp=\E[V, + kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, kres=\EOq, + krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, ksav=\EOo, + kslt=\ENI, kspd=\EOp, kund=\EOs, use=att610, +att610-103k-w|AT&T 610; 132 column; 103key keyboard, + cols#132, wsl#132, + is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, + use=att610-103k, +att615|AT&T 615; 80 column; 98key keyboard, + kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, + kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, + kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS, + kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, + kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, + kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, + kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610, +att615-w|AT&T 615; 132 column; 98key keyboard, + kLFT=\E[ A, kRIT=\E[ @, kf15=\EOC, kf16=\EOD, kf17=\EOE, + kf18=\EOF, kf19=\EOG, kf20=\EOH, kf21=\EOI, kf22=\EOJ, + kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, kf27=\ENS, + kf28=\ENT, kf29=\EOP, kf30=\EOQ, kf31=\EOR, kf32=\EOS, + kf33=\EOw, kf34=\EOx, kf35=\EOy, kf36=\EOm, kf37=\EOt, + kf38=\EOu, kf39=\EOv, kf40=\EOl, kf41=\EOq, kf42=\EOr, + kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, use=att610-w, +att615-103k|AT&T 615; 80 column; 103key keyboard, + kLFT=\E[ A, kRIT=\E[ @, use=att610-103k, +att615-103k-w|AT&T 615; 132 column; 103key keyboard, + kLFT=\E[ A, kRIT=\E[ @, use=att610-103k-w, +# (att620: I added <rmam>/<smam> based on the init string and +# <rin>/<indn> from a BSD termcap -- esr) +att620|AT&T 620; 80 column; 98key keyboard, + am, eslok, hs, mir, msgr, xenl, xon, + cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + flash=\E[?5h$<200>\E[?5l, fsl=\E8, home=\E[H, ht=^I, + ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, + invis=\E[8m, + is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h, + is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ A, kRIT=\E[ @, kbs=^H, + kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, + kf13=\ENs, kf14=\ENt, kf15=\EOC, kf16=\EOD, kf17=\EOE, + kf18=\EOF, kf19=\EOG, kf2=\EOd, kf20=\EOH, kf21=\EOI, + kf22=\EOJ, kf23=\ENO, kf24=\ENP, kf25=\ENQ, kf26=\ENR, + kf27=\ENS, kf28=\ENT, kf29=\EOP, kf3=\EOe, kf30=\EOQ, + kf31=\EOR, kf32=\EOS, kf33=\EOw, kf34=\EOx, kf35=\EOy, + kf36=\EOm, kf37=\EOt, kf38=\EOu, kf39=\EOv, kf4=\EOf, + kf40=\EOl, kf41=\EOq, kf42=\EOr, kf43=\EOs, kf44=\EOp, + kf45=\EOn, kf46=\EOM, kf5=\EOg, kf6=\EOh, kf7=\EOi, kf8=\EOj, + kf9=\ENo, khome=\E[H, kind=\E[S, kri=\E[T, ll=\E[24H, + mc4=\E[?4i, 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, + ri=\EM, rmacs=\E(B\017, rmam=\E[?7l, rmir=\E[4l, + rmln=\E[2p, rmso=\E[m, rmul=\E[m, rs2=\Ec\E[?3l, sc=\E7, + 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\E)0\016%e\E(B\017%;, + sgr0=\E[m\E(B\017, smacs=\E)0\016, smam=\E[?7h, + smir=\E[4h, smln=\E[p, smso=\E[7m, smul=\E[4m, + tsl=\E7\E[25;%i%p1%dx, use=ecma+index, + use=att610+cvis0, +att620-w|AT&T 620; 132 column; 98key keyboard, + cols#132, wsl#132, + is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, + use=att620, +att620-103k|AT&T 620; 80 column; 103key keyboard, + kBEG=\ENB, kCAN=\EOW, kCMD=\EOU, kCPY=\END, kCRT=\EON, + kDC=\ENF, kDL=\ENE, kEND=\ENN, kEOL=\EOA, kEXT=\EOK, + kFND=\EOX, kHLP=\EOM, kMOV=\ENC, kMSG=\EOL, kNXT=\ENH, + kOPT=\EOR, kPRT=\EOZ, kPRV=\ENG, kRDO=\EOT, kRES=\EOQ, + kRPL=\EOY, kSAV=\EOO, kSPD=\EOP, kUND=\EOS, kbeg=\E9, + kcan=\EOw, kclo=\EOV, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, + kdch1=\ENf, kdl1=\ENe, kel=\EOa, kend=\E0, kent=\r, + kext=\EOk, kf10@, kf11@, kf12@, kf13@, kf14@, kf15@, kf16@, kf17@, + kf18@, kf19@, kf20@, kf21@, kf22@, kf23@, kf24@, kf25@, kf26@, kf27@, + kf28@, kf29@, kf30@, kf31@, kf32@, kf33@, kf34@, kf35@, kf36@, kf37@, + kf38@, kf39@, kf40@, kf41@, kf42@, kf43@, kf44@, kf45@, kf46@, kf9@, + kfnd=\EOx, khlp=\EOm, kich1=\ENj, kmov=\ENc, kmrk=\ENi, + kmsg=\EOl, knp=\E[U, knxt=\ENh, kopn=\EOv, kopt=\EOr, + kpp=\E[V, kprt=\EOz, kprv=\ENg, krdo=\EOt, kref=\EOb, + kres=\EOq, krfr=\ENa, krmir=\ENj, krpl=\EOy, krst=\EOB, + ksav=\EOo, kslt=\ENI, kspd=\EOp, kund=\EOs, use=att620, + +att620-103k-w|AT&T 620; 132 column; 103key keyboard, + cols#132, wsl#132, + is1=\E[8;0|\E[?4;5;13;15l\E[13;20l\E[?3;7h\E[12h, + use=att620-103k, + +# AT&T (formerly Teletype) 630 Multi-Tasking Graphics terminal +# The following SETUP modes are assumed for normal operation: +# Local_Echo=Off Gen_Flow=On Return=CR Received_Newline=LF +# Font_Size=Large Non-Layers_Window_Cols=80 +# Non-Layers_Window_Rows=60 +# Other SETUP modes may be set for operator convenience or communication +# requirements. Some capabilities assume a printer attached to the Aux EIA +# port. This termcap description is for the Fixed Non-Layers Window. No +# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +# (att630: added <ich1>, <blink> and <dim> from a BSD termcap file -- esr) +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, clear=\E[H\E[J, cr=\r, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, + el1=\E[1K, home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, + il=\E[%p1%dL, il1=\E[L, ind=\ED, is2=\E[m, kbs=^H, kcbt=\E[Z, + kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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, khome=\E[H, + 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, + rmir=\E[4l, rmso=\E[m, rmul=\E[m, 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, smir=\E[4h, smso=\E[7m, smul=\E[4m, + use=ecma+index, +att630-24|5630-24|5630DMD-24|630MTG-24|AT&T 630 windowing terminal 24 lines, + lines#24, use=att630, + +# This is the att700 entry for 700 native emulation of the AT&T 700 +# terminal. Comments are relative to changes from the 605V2 entry and +# att730 on which the entry is based. Comments show the terminfo +# capability name, termcap name, and description. +# +# Here is what's going onm in the init string: +# ESC [ 50;4| set 700 native mode (really is 605) +# x ESC [ 56;ps| set lines to 24: ps=0; 40: ps=1 (plus status line) +# ESC [ 53;0| set GenFlow to Xon/Xoff +# ESC [ 8 ;0| set CR on NL +# x ESC [ ? 3 l/h set workspace: 80 col(l); 132 col(h) +# ESC [ ? 4 l jump scroll +# ESC [ ? 5 l/h video: normal (l); reverse (h) +# ESC [ ?13 l Labels on +# ESC [ ?15 l parity check = no +# ESC [ 13 l monitor mode off +# ESC [ 20 l LF on NL (not CRLF on NL) +# ESC [ ? 7 h autowrap on +# ESC [ 12 h local echo off +# ESC ( B GO = ASCII +# ESC ) 0 G1 = Special Char & Line Drawing +# ESC [ ? 31 l Set 7 bit controls +# +# Note: Most terminals, especially the 600 family use Reverse Video for +# standout mode. DEC also uses reverse video. The VT100 uses bold in addition +# Assume we should stay with reverse video for 70.. However, the 605V2 exits +# standout mode with \E[m (all normal attributes). The 730 entry simply +# exits reverse video which would leave other current attributes intact. It +# was assumed the 730 entry to be more correct so rmso has changed. The +# 605V2 has no sequences to turn individual attributes off, thus its setting +# and the rmso/smso settings from the 730. +# +# Note: For the same reason as above in rmso I changed exit under-score mode +# to specifically turn off underscore, rather than return to all normal +# attributes +# +# Note: The following pkey_xmit is taken from the 605V2 which contained the +# capability as pfxl. It was changed here to pfx since pfxl +# will only compile successfully with Unix 4.0 tic. Also note that pfx only +# allows strings to be parameters and label values must be programmed as +# constant strings. Supposedly the pfxl of Version 4.0 allows both labels +# and strings to be parameters. The 605V2 pfx entry should be examined later +# in this regard. For reference the 730 pfxl entry is shown here for comparison +# 730 pfx entry: +# pfxl=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25}%<%tq\s\s\s +# SYS\s\s\s\s\sF%p1%:-2d\s\s%e;0;3q%;%p2%s, +# +# (for 4.0 tic) +# pfxl=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, +# +# (for <4.0 tic) +# pfx=\E[%p1%d;%p2%l%02dq%?%p1%{9}%<%t F%p1%1d %;%p2%s, +# +# From the AT&T 705 Multi-tasking terminal user's guide Page 8-8,8-9 +# +# Port1 Interface +# +# modular 10 pin Connector +# Left side Right side +# Pin 1 2 3 4 5 6 7 8 9 10 +# +# Key (notch) at bottom +# +# Pin 1 DSR +# 3 DCD +# 4 DTR +# 5 Sig Ground +# 6 RD +# 7 SD +# 8 CTS +# 9 RTS +# 10 Frame Ground +# +# The manual is 189 pages and is loaded with details about the escape codes, +# etc..... Available from AT&T CIC 800-432-6600... +# ask for Document number 999-300-660.. +# +att700|AT&T 700 24x80 column display w/102key keyboard, + am, eslok, hs, mir, msgr, xenl, xon, + cols#80, it#8, lh#2, lines#24, lw#8, nlab#8, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fln=4\,4, + fsl=\E8, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, + il=\E[%p1%dL, il1=\E[L, ind=\ED, invis=\E[8m, + 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[ @, kbs=^H, kcbt=\E[Z, + kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\E[P, kdl1=\E[M, kend=\E[24;1H, kf1=\EOc, kf10=\ENp, + kf11=\ENq, kf12=\ENr, kf13=\ENs, kf14=\ENt, kf15=\EOC, + kf16=\EOD, kf17=\EOE, kf18=\EOF, kf19=\EOG, kf2=\EOd, + kf20=\EOH, kf21=\EOI, kf22=\EOJ, kf23=\ENO, kf24=\ENP, + kf25=\ENQ, kf26=\ENR, kf27=\ENS, kf28=\ENT, kf29=\EOq, + kf3=\EOe, kf30=\EOr, kf31=\EOs, kf32=\EOt, kf33=\EOu, + kf34=\EOv, kf35=\EOw, kf36=\EOx, kf37=\EOy, kf38=\EOu, + kf39=\EOv, kf4=\EOf, kf40=\EOl, kf41=\EOq, kf42=\EOr, + kf43=\EOs, kf44=\EOp, kf45=\EOn, kf46=\EOM, kf5=\EOg, + kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, + kich1=\E[@, kil1=\E[L, knp=\E[U, kpp=\E[V, ll=\E[24H, + mc0=\E[i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE, + 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, rc=\E8, rev=\E[7m, + 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|, + sc=\E7, + 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, smso=\E[7m, + smul=\E[4m, smxon=\E[53;0|, tbc=\E[3g, + tsl=\E7\E[99;%i%p1%dx, use=ansi+rep, use=att610+cvis0, + +# This entry was modified 3/13/90 by JWE. +# fixes include additions of <enacs>, correcting <rep>, and modification +# of <kHOM>. (See comments below) +# att730 has status line of 80 chars +# These were commented out: <indn=\E[%p1%dS>, <rin=\E[%p1%dT>, +# the <kf25> and up keys are used for shifted system Fkeys +# NOTE: JWE 3/13/90 The 98 key keyboard translation for shift/HOME is +# currently the same as <khome> (unshifted HOME or \E[H). On the 102, 102+1 +# and 122 key keyboards, the 730's translation is \E[2J. For consistency +# <kHOM> has been commented out. The user can uncomment <kHOM> if using the +# 102, 102+1, or 122 key keyboards +# kHOM=\E[2J, +# (att730: I added <rmam>/<smam> based on the init string -- esr) +att730|AT&T 730 windowing terminal, + am, da, db, eslok, hs, mir, msgr, npc, xenl, xon, + cols#80, it#8, lh#2, lines#60, lm#0, lw#8, nlab#24, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[?12;25h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, + enacs=\E(B\E)0, flash=\E[?5h$<200>\E[?5l, fsl=\E8, + home=\E[H, ht=^I, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, + ind=\ED, invis=\E[8m, + is1=\E[8;0|\E[?3;4;5;13;15l\E[13;20l\E[?7h\E[12h\E(B\E)B, + is2=\E[m\017, is3=\E(B\E)0, kLFT=\E[ @, kRIT=\E[ A, kbs=^H, + kcbt=\E[Z, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kf1=\EOc, kf10=\ENp, kf11=\ENq, kf12=\ENr, + kf13=\ENs, kf14=\ENt, kf15=\ENu, kf16=\ENv, kf17=\ENw, + kf18=\ENx, kf19=\ENy, kf2=\EOd, kf20=\ENz, kf21=\EN{, + kf22=\EN|, kf23=\EN}, kf24=\EN~, kf25=\EOC, kf26=\EOD, + kf27=\EOE, kf28=\EOF, kf29=\EOG, kf3=\EOe, kf30=\EOH, + kf31=\EOI, kf32=\EOJ, kf33=\ENO, kf34=\ENP, kf35=\ENQ, + kf36=\ENR, kf37=\ENS, kf38=\ENT, kf39=\EOU, kf4=\EOf, + kf40=\EOV, kf41=\EOW, kf42=\EOX, kf43=\EOY, kf44=\EOZ, + kf45=\EO[, kf46=\EO\s, kf47=\EO], kf48=\EO\^, kf5=\EOg, + kf6=\EOh, kf7=\EOi, kf8=\EOj, kf9=\ENo, khome=\E[H, + kich1=\E[@, kil1=\E[L, kind=\E[S, kri=\E[T, + mc0=\E[?19h\E[0i, mc4=\E[?4i, mc5=\E[?5i, nel=\EE, + pfx=\E[%?%p1%{25}%<%t%p1%e%p1%{24}%-%;%d;%p2%l%02d%?%p1%{25} + %<%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, rc=\E8, rev=\E[7m, + 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, + sc=\E7, + 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, smso=\E[7m, smul=\E[4m, smxon=\E[?21h, + swidm=\E#6, tsl=\E7\E[;%i%p1%dx, use=ansi+rep, + use=att610+cvis0, +att730-41|730MTG-41|AT&T 730-41 windowing terminal Version, + lines#41, use=att730, +att730-24|730MTG-24|AT&T 730-24 windowing terminal Version, + lines#24, use=att730, +att730r|730MTGr|AT&T 730 rev video windowing terminal Version, + flash=\E[?5l$<200>\E[?5h, + is1=\E[8;0|\E[?3;4;13;15l\E[?5h\E[13;20l\E[?7h\E[12h\E(B\E)B, use=att730, +att730r-41|730MTG-41r|AT&T 730r-41 rev video windowing terminal Version, + lines#41, use=att730r, +att730r-24|730MTGr-24|AT&T 730r-24 rev video windowing terminal Version, + lines#24, use=att730r, + +# The following represents the screen layout along with the associated +# bezel buttons for the 5430/pt505 terminal. The "kf" designations do +# not appear on the screen but are shown to reference the bezel buttons. +# The "CMD", "MAIL", and "REDRAW" buttons are shown in their approximate +# position relative to the screen. +# +# +# +# +----------------------------------------------------------------+ +# | | +# XXXX | kf0 kf24 | XXXX +# | | +# | | +# XXXX | kf1 kf23 | XXXX +# | | +# | | +# XXXX | kf2 kf22 | XXXX +# | | +# | | +# XXXX | kf3 kf21 | XXXX +# | | +# | | +# XXXX | kf4 kf20 | XXXX +# | | +# | | +# XXXX | kf5 kf19 | XXXX +# | | +# | | +# XXXX | kf6 kf18 | XXXX +# | | +# | | +# XXXX | | XXXX +# | | +# | | +# +----------------------------------------------------------------+ +# +# XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX XXXX +# +# Note: XXXX represents the screen buttons +# CMD REDRAW +# +# MAIL +# +# version 1 note: +# The character string sent by key 'kf26' may be user programmable +# to send either \E[16s, or \E[26s. +# The character string sent by key 'krfr' may be user programmable +# to send either \E[17s, or \E[27s. +# +# Depression of the "CMD" key sends \E! (kcmd) +# Depression of the "MAIL" key sends \E[26s (kf26) +# "REDRAW" same as "REFRESH" (krfr) +# +# "kf" functions adds carriage return to output string if terminal is in +# 'new line' mode. +# +# The following are functions not covered in the table above: +# +# Set keyboard character (SKC): \EPn1;Pn2w +# Pn1= 0 Back Space key +# Pn1= 1 Break key +# Pn2= Program char (hex) +# +# Screen Definition (SDF): \E[Pn1;Pn2;Pn3;Pn4;Pn5t +# Pn1= Window number (1-39) +# Pn2-Pn5= Y;X;Y;X coordinates +# +# Screen Selection (SSL): \E[Pnu +# Pn= Window number +# +# Set Terminal Modes (SM): \E[Pnh +# Pn= 3 Graphics mode +# Pn= > Cursor blink +# Pn= < Enter new line mode +# Pn= = Enter reverse insert/replace mode +# Pn= ? Enter no scroll mode +# +# Reset Terminal Mode (RM): \E[Pnl +# Pn= 3 Exit graphics mode +# Pn= > Exit cursor blink +# Pn= < Exit new line mode +# Pn= = Exit reverse insert/replace mode +# Pn= ? Exit no scroll mode +# +# Screen Status Report (SSR): \E[Pnp +# Pn= 0 Request current window number +# Pn= 1 Request current window dimensions +# +# Device Status Report (DSR): \E[6n Request cursor position +# +# Call Status Report (CSR): \E[Pnv +# Pn= 0 Call failed +# Pn= 1 Call successful +# +# Transparent Button String (TBS): \E[Pn1;Pn2;Pn3;{string +# Pn1= Button number to be loaded +# Pn2= Character count of "string" +# Pn3= Key mode being loaded: +# 0= Unshifted +# 1= Shifted +# 2= Control +# String= Text string (15 chars max) +# +# Screen Number Report (SNR): \E[Pnp +# Pn= Screen number +# +# Screen Dimension Report (SDR): \E[Pn1;Pn2r +# Pn1= Number of rows available in window +# Pn2= Number of columns available in window +# +# Cursor Position Report (CPR): \E[Pn1;Pn2R +# Pn1= "Y" Position of cursor +# Pn2= "X" Position of cursor +# +# Request Answer Back (RAB): \E[c +# +# Answer Back Response (ABR): \E[?;*;30;VSV +# *= 0 No printer available +# *= 2 Printer available +# V= Software version number +# SV= Software sub version number +# (printer-available field not documented in v1) +# +# Screen Alignment Aid: \En +# +# Bell (lower pitch): \E[x +# +# Dial Phone Number: \EPdstring\ +# string= Phone number to be dialed +# +# Set Phone Labels: \EPpstring\ +# string= Label for phone buttons +# +# Set Clock: \EPchour;minute;second\ +# +# Position Clock: \EPsY;X\ +# Y= "Y" coordinate +# X= "X" coordinate +# +# Delete Clock: \Epr\ +# +# Programming The Function Buttons: \EPfPn;string\ +# Pn= Button number (00-06, 18-24) +# (kf00-kf06, kf18-kf24) +# string= Text to sent on button depression +# +# The following in version 2 only: +# +# Request For Local Directory Data: \EPp12;\ +# +# Local Directory Data to host: \EPp11;LOCAL...DIRECTORY...DATA\ +# +# Request for Local Directory Data in print format: \EPp13;\ +# +# Enable 'Prt on Line' mode: \022 (DC2) +# +# Disable 'Prt on Line' mode: \024 (DC4) +# + +# 05-Aug-86: +# The following Terminfo entry describes functions which are supported by +# the AT&T 5430/pt505 terminal software version 2 and later. +att505|pt505|att5430|gs5430|AT&T Personal Terminal 505 or 5430 GETSET terminal, + am, xon, + cols#80, it#8, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[2J\E[H, + cnorm=\E[>l, cr=\r, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[>h, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[0J, el=\E[0K, el1=\E[2K, home=\E[H, ht=^I, + il=\E[%p1%dL, il1=\E[L, ind=\n, + is1=\EPr\\E[0u\E[2J\E[0;0H\E[m\E[3l\E[<l\E[4l\E[>l\E[=l\E[?l, + kbs=^H, kcmd=\E!, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kf0=\E[00s, kf1=\E[01s, kf18=\E[18s, + kf19=\E[19s, kf2=\E[02s, kf20=\E[20s, kf21=\E[21s, + kf22=\E[22s, kf23=\E[23s, kf24=\E[24s, kf26=\E[26s, + 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, + +# The following Terminfo entry describes functions which are supported by +# the AT&T 5430/pt505 terminal software version 1. +att505-24|pt505-24|gs5430-24|AT&T PT505 or 5430 GETSET version 1 24 lines, + lines#24, + mc4@, mc5@, rc@, rmam@, sc@, smam@, use=att505, +tt505-22|pt505-22|gs5430-22|AT&T PT505 or 5430 GETSET version 1 22 lines, + lines#22, use=att505, +# +#### ------------------ TERMINFO FILE CAN BE SPLIT HERE --------------------- +# This cut mark helps make life less painful for people running ncurses tic +# on machines with relatively little RAM. The file can be broken in half here +# cleanly and compiled in sections -- no `use' references cross this cut +# going forward. +# + +#### Ampex (Dialogue) +# +# Yes, these are the same people who are better-known for making audio- and +# videotape. I'm told they are located in Redwood City, CA. +# + +# From: <cbosg!ucbvax!SRC:george> Fri Sep 11 22:38:32 1981 +# (ampex80: some capabilities merged in from SCO's entry -- esr) +ampex80|a80|d80|dialogue|dialogue80|Ampex dialogue 80, + OTbs, am, bw, ul, + cols#80, it#8, lines#24, + bel=^G, cbt=\EI, clear=\E*$<75>, cr=\r, cub1=^H, cud1=\n, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW, dl1=\ER$<5*>, ed=\Ey, el=\Et, ht=^I, hts=\E1, + ich1=\EQ, il1=\EE$<5*>, ind=\n, is2=\EA, rmso=\Ek, rmul=\Em, + smso=\Ej, smul=\El, tbc=\E3, +# This entry was from somebody anonymous, Tue Aug 9 20:11:37 1983, who wrote: +ampex175|Ampex d175, + am, + cols#80, lines#24, + bel=^G, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\Ey, el=\Et, home=^^, ich1=\EQ, il1=\EE, ind=\n, + is2=\EX\EA\EF, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, + kdch1=\EW, kdl1=\ER, khome=^^, kich1=\EQ, kil1=\EE, ll=^^^K, + rmcup=\EF, rmso=\Ek, rmul=\Em, smcup=\EN, smso=\Ej, smul=\El, +# No backspace key in the main QWERTY cluster. Fortunately, it has a +# NEWLINE/PAGE key just above RETURN that sends a strange single-character +# code. Given a suitable Unix (one that lets you set an echo-erase-as-BS-SP-BS +# mode), this key can be used as the erase key; I find I like this. Because +# some people and some systems may not, there is another termcap ("ampex175") +# that suppresses this little eccentricity by omitting the relevant capability. +ampex175-b|Ampex d175 using left arrow for erase, + kbs=^_, use=ampex175, +# From: Richard Bascove <atd!dsd!rcb@ucbvax.berkeley.edu> +# (ampex210: removed obsolete ":kn#10:" -- esr) +ampex210|a210|Ampex a210, + OTbs, am, hs, xenl, + cols#80, it#8, lines#24, xmc#1, + cbt=\EI, clear=\E*, cub1=^H, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\Ey, el=\Et, flash=\EU\EX\EU\EX\EU\EX\EU\EX, + fsl=\E.2, home=^^, ht=^I, ich1=\EQ, + if=/usr/share/tabset/std, il1=\EE, invis@, + is2=\EC\Eu\E'\E(\El\EA\E%\E{\E.2\EG0\Ed\En, kcub1=^H, + kcud1=^V, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A1\r, + kf2=^A2\r, kf3=^A3\r, kf4=^A4\r, kf5=^A5\r, kf6=^A6\r, + kf7=^A7\r, kf8=^A8\r, kf9=^A9\r, khome=^^, + tsl=\E.0\Eg\E}\Ef, use=adm+sgr, +# (ampex219: I added <rmam>/<smam> based on the init string, added <cvvis> +# from ampex219w, added <cnorm>=\E[?3l, irresistibly suggested by <cvvis>, +# and moved the padding to be *after* the caps -- esr) +ampex219|ampex-219|amp219|Ampex with automargins, + hs, xenl, + cols#80, it#8, lines#24, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, cbt=\E[Z, + clear=\E[H\E[2J$<50>, cnorm=\E[?3l, cr=\r, + csr=%i\E[%p1%2d;%p2%2dr, cub1=^H, cud1=\E[B, + cuf1=\E[C$<2>, cup=\E[%i%p1%d;%p2%dH$<5>, + cuu1=\E[A$<2>, cvvis=\E[?3h, dim=\E[1m, ed=\E[J$<50>, + el=\E[K$<3>, home=\E[H, ht=^I, ind=\n, + is2=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\E[21~, + kf1=\E[7~, kf2=\E[8~, kf3=\E[9~, kf4=\E[10~, kf5=\E[11~, + kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, kf9=\E[20~, khome=\E[H, + rev=\E[7m, ri=\EM$<5>, rmam=\E[?7l, rmkx=\E>, + rmso=\E[m$<2>, rmul=\E[m$<2>, sgr0=\E[m$<2>, smam=\E[?7h, + smkx=\E=, smso=\E[7m$<2>, smul=\E[4m$<2>, +ampex219w|ampex-219w|amp219w|Ampex 132 cols, + cols#132, lines#24, + bel=^G, cr=\r, cud1=\n, ind=\n, + is2=\E>\E[?3h\E[?4l\E[?5l\E[?7h\E[?8h, use=ampex219, +# (ampex232: removed <if=/usr/share/tabset/ampex>, no file and no <hts> --esr) +ampex232|ampex-232|Ampex Model 232, + am, + cols#80, lines#24, xmc#1, + cbt=\EI, civis=\E.0, clear=\E+, cnorm=\E.4, cub1=^H, cud1=^V, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW, dl1=\ER$<5*/>, ed=\EY, el=\ET, + flash=\Eb$<200/>\Ed, ht=^I, ich1=\EQ, il1=\EE$<5*/>, + invis@, is2=\Eg\El, kbs=^H, kcub1=^H, kcud1=^V, kcuf1=^L, + kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, + kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, + kf9=^AI\r, khome=^^, use=adm+sgr, +# (ampex: removed <if=/usr/share/tabset/amp-132>, no file and no <hts> -- esr) +ampex232w|Ampex Model 232 / 132 columns, + cols#132, lines#24, + is2=\E\034Eg\El, use=ampex232, + +#### Ann Arbor (aa) +# +# Ann Arbor made dream terminals for hackers -- large screen sizes and huge +# numbers of function keys. At least some used monitors in portrait mode, +# allowing up to 76-character screen heights! They were reachable at: +# +# Ann Arbor Terminals +# 6175 Jackson Road +# Ann Arbor, MI 48103 +# (313)-663-8000 +# +# But in 1996 the phone number reaches some kitschy retail shop, and Ann Arbor +# can't be found on the Web; I fear they're long dead. R.I.P. +# + + +# Originally from Mike O'Brien@Rand and Howard Katseff at Bell Labs. +# Highly modified 6/22 by Mike O'Brien. +# split out into several for the various screen sizes by dave-yost@rand +# Modifications made 3/82 by Mark Horton +# Modified by Tom Quarles at UCB for greater efficiency and more diversity +# status line moved to top of screen, <flash> removed 5/82 +# Some unknown person at SCO then hacked the init strings to make them more +# efficient. +# +# assumes the following setup: +# A menu: 0000 1010 0001 0000 +# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 +# C menu: 56 66 0 0 9600 0110 1100 +# D menu: 0110 1001 1 0 +# +# Briefly, the settings are for the following modes: +# (values are for bit set/clear with * indicating our preference +# and the value used to test these termcaps) +# Note that many of these settings are irrelevant to the terminfo +# and are just set to the default mode of the terminal as shipped +# by the factory. +# +# A menu: 0000 1010 0001 0000 +# Block/underline cursor* +# blinking/nonblinking cursor* +# key click/no key click* +# bell/no bell at column 72* +# +# key pad is cursor control*/key pad is numeric +# return and line feed/return for <cr> key * +# repeat after .5 sec*/no repeat +# repeat at 25/15 chars per sec. * +# +# hold data until pause pressed/process data unless pause pressed* +# slow scroll/no slow scroll* +# Hold in area/don't hold in area* +# functions keys have default*/function keys disabled on powerup +# +# show/don't show position of cursor during page transmit* +# unused +# unused +# unused +# +# B menu: 9600 0100 1000 0000 0000 1000 0000 17 19 +# Baud rate (9600*) +# +# 2 bits of parity - 00=odd,01=even*,10=space,11=mark +# 1 stop bit*/2 stop bits +# parity error detection off*/on +# +# keyboard local/on line* +# half/full duplex* +# disable/do not disable keyboard after data transmission* +# +# transmit entire page/stop transmission at cursor* +# transfer/do not transfer protected characters* +# transmit all characters/transmit only selected characters* +# transmit all selected areas/transmit only 1 selected area* +# +# transmit/do not transmit line separators to host* +# transmit/do not transmit page tab stops tabs to host* +# transmit/do not transmit column tab stop tabs to host* +# transmit/do not transmit graphics control (underline,inverse..)* +# +# enable*/disable auto XON/XOFF control +# require/do not require receipt of a DC1 from host after each LF* +# pause key acts as a meta key/pause key is pause* +# unused +# +# unused +# unused +# unused +# unused +# +# XON character (17*) +# XOFF character (19*) +# +# C menu: 56 66 0 0 9600 0110 1100 +# number of lines to print data on (printer) (56*) +# +# number of lines on a sheet of paper (printer) (66*) +# +# left margin (printer) (0*) +# +# number of pad chars on new line to printer (0*) +# +# printer baud rate (9600*) +# +# printer parity: 00=odd,01=even*,10=space,11=mark +# printer stop bits: 2*/1 +# print/do not print guarded areas* +# +# new line is: 01=LF,10=CR,11=CRLF* +# unused +# unused +# +# D menu: 0110 1001 1 0 +# LF is newline/LF is down one line, same column* +# wrap to preceding line if move left from col 1*/don't wrap +# wrap to next line if move right from col 80*/don't wrap +# backspace is/is not destructive* +# +# display*/ignore DEL character +# display will not/will scroll* +# page/column tab stops* +# erase everything*/erase unprotected only +# +# editing extent: 0=display,1=line*,2=field,3=area +# +# unused +# + +annarbor4080|aa4080|Ann Arbor 4080, + OTbs, am, + cols#80, lines#40, + bel=^G, clear=\014$<2>, cr=\r, cub1=^H, cud1=\n, cuf1=^_, + cup=\017%p2%{10}%/%{16}%*%p2%{10}%m%+%c%p1%?%p1%{19}%>%t + %{12}%+%;%{64}%+%c, + cuu1=^N, home=^K, ht=^I, hts=^]^P1, ind=\n, kbs=^^, kcub1=^H, + kcud1=\n, kcuf1=^_, kcuu1=^N, khome=^K, tbc=^\^P^P, + +# Strange Ann Arbor terminal from BRL +aas1901|Ann Arbor K4080 w/S1901 mod, + am, + cols#80, lines#40, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^_, cuu1=^N, + home=^K, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, ll=^O\0c, + nel=\r\n, + +# If you're using the GNU termcap library, add +# :cS=\E[%p1%d;%p2%d;%p3%d;%p4%dp: +# to these capabilities. This is the nonstandard GNU termcap scrolling +# capability, arguments are: +# 1. Total number of lines on the screen. +# 2. Number of lines above desired scroll region. +# 3. Number of lines below (outside of) desired scroll region. +# 4. Total number of lines on the screen, the same as the first parameter. +# The generic Ann Arbor entry is the only one that uses this. +aaa+unk|aaa-unk|Ann Arbor Ambassador (internal - don't use this directly), + OTbs, am, km, mc5i, mir, xon, + cols#80, it#8, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + clear=\E[H\E[J$<156>, cr=\r, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, + el=\E[K$<5>, home=\E[H, hpa=\E[%p1%{1}%+%dG, ht=^I, + hts=\EH, ich=\E[%p1%d@$<4*>, ich1=\E[@$<4>, il=\E[%p1%dL, + il1=\E[L$<3>, ind=^K, invis=\E[8m, is1=\E[m\E7\E[H\E9\E8, + is3=\E[1Q\E[>20;30l\EP`+x~M\E\\, kbs=^H, kcbt=\E[Z, + kclr=\E[J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\E[P, kdl1=\E[M, kf1=\EOA, kf10=\EOJ, kf11=\EOK, + kf12=\EOL, kf13=\EOM, kf14=\EON, kf15=\EOO, kf16=\EOP, + kf17=\EOQ, kf18=\EOR, kf19=\EOS, kf2=\EOB, kf20=\EOT, + kf21=\EOU, kf22=\EOV, kf23=\EOW, kf24=\EOX, kf3=\EOC, + kf4=\EOD, kf5=\EOE, kf6=\EOF, kf7=\EOG, kf8=\EOH, kf9=\EOI, + khome=\E[H, kich1=\E[@, kil1=\E[L, krmir=\E6, mc0=\E[0i, + mc4=^C, mc5=\E[v, mc5p=\E[%p1%dv, rc=\E8, rev=\E[7m, + rmkx=\EP`>y~[[J`8xy~[[A`4xy~[[D`6xy~[[C`2xy~[[B\E + \\, + rmm=\E[>52l, rmso=\E[m, rmul=\E[m, sc=\E7, + sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1; + %;%?%p7%t8;%;m, + sgr0=\E[m, + smkx=\EP`>z~[[J`8xz~[[A`4xz~[[D`6xz~[[C`2xz~[[B\E + \\, + smm=\E[>52h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + vpa=\E[%p1%{1}%+%dd, use=ansi+rep, + +aaa+rv|Ann Arbor Ambassador in reverse video, + blink=\E[5;7m, bold=\E[1;7m, invis=\E[7;8m, + is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m, + rs1=\E[H\E[7m\E[J$<156>, + sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p2%|%p3%!%|%t7 + ;%;%?%p7%t8;%;m\016, + sgr0=\E[7m\016, smso=\E[m, smul=\E[4;7m, +# Ambassador with the DEC option, for partial vt100 compatibility. +aaa+dec|Ann Arbor Ambassador in DEC vt100 mode, + acsc=aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}, + csr=\E[%i%p1%d;%p2%dr, enacs=\E(B\E)0, rmacs=^O, + sgr=\E[%?%p2%t4;%;%?%p4%t5;%;%?%p6%t1;%;%?%p1%p3%|%!%t7;%;%? + %p7%t8;%;m%?%p9%t\016%e\017%;, + smacs=^N, +aaa-18|Ann Arbor Ambassador/18 lines, + lines#18, + is2=\E7\E[60;0;0;18p\E8, + rmcup=\E[60;0;0;18p\E[60;1H\E[K, smcup=\E[18;0;0;18p, + use=aaa+unk, +aaa-18-rv|Ann Arbor Ambassador/18 lines+reverse video, + use=aaa+rv, use=aaa-18, +aaa-20|Ann Arbor Ambassador/20 lines, + lines#20, + is2=\E7\E[60;0;0;20p\E8, + rmcup=\E[60;0;0;20p\E[60;1H\E[K, smcup=\E[20;0;0;20p, + use=aaa+unk, +aaa-22|Ann Arbor Ambassador/22 lines, + lines#22, + is2=\E7\E[60;0;0;22p\E8, + rmcup=\E[60;0;0;22p\E[60;1H\E[K, smcup=\E[22;0;0;22p, + use=aaa+unk, +aaa-24|Ann Arbor Ambassador/24 lines, + lines#24, + is2=\E7\E[60;0;0;24p\E8, + rmcup=\E[60;0;0;24p\E[60;1H\E[K, smcup=\E[24;0;0;24p, + use=aaa+unk, +aaa-24-rv|Ann Arbor Ambassador/24 lines+reverse video, + use=aaa+rv, use=aaa-24, +aaa-26|Ann Arbor Ambassador/26 lines, + lines#26, + is2=\E7\E[60;0;0;26p\E8, + rmcup=\E[60;0;0;26p\E[26;1H\E[K, + smcup=\E[H\E[J$<156>\E[26;0;0;26p, use=aaa+unk, +aaa-28|Ann Arbor Ambassador/28 lines, + lines#28, + is2=\E7\E[60;0;0;28p\E8, + 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, + 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, +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, + rmcup=\E[60;1;0;30p\E[59;1H\E[K, + smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s, +aaa-s-rv-ctxt|aaa-30-s-rv-ct|Ann Arbor Ambassador/30 lines+status+save context+reverse video, + rmcup=\E[60;1;0;30p\E[59;1H\E[K, + smcup=\E[30;1H\E[K\E[30;1;0;30p, use=aaa-30-s-rv, +aaa|aaa-30|ambas|ambassador|Ann Arbor Ambassador/30 lines, + lines#30, + is2=\E7\E[60;0;0;30p\E8, + rmcup=\E[60;0;0;30p\E[30;1H\E[K, + smcup=\E[H\E[J$<156>\E[30;0;0;30p, use=aaa+unk, +aaa-30-rv|aaa-rv|Ann Arbor Ambassador/30 lines in reverse video, + use=aaa+rv, use=aaa-30, +aaa-30-ctxt|aaa-ctxt|Ann Arbor Ambassador/30 lines; saving context, + rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p, + use=aaa-30, +aaa-30-rv-ctxt|aaa-rv-ctxt|Ann Arbor Ambassador/30 lines reverse video; saving context, + rmcup=\E[60;0;0;30p\E[60;1H\E[K, smcup=\E[30;0;0;30p, + use=aaa+rv, use=aaa-30, +aaa-36|Ann Arbor Ambassador/36 lines, + lines#36, + is2=\E7\E[60;0;0;36p\E8, + rmcup=\E[60;0;0;36p\E[36;1H\E[K, + smcup=\E[H\E[J$<156>\E[36;0;0;36p, use=aaa+unk, +aaa-36-rv|Ann Arbor Ambassador/36 lines+reverse video, + use=aaa+rv, use=aaa-36, +aaa-40|Ann Arbor Ambassador/40 lines, + lines#40, + is2=\E7\E[60;0;0;40p\E8, + rmcup=\E[60;0;0;40p\E[40;1H\E[K, + smcup=\E[H\E[J$<156>\E[40;0;0;40p, use=aaa+unk, +aaa-40-rv|Ann Arbor Ambassador/40 lines+reverse video, + use=aaa+rv, use=aaa-40, +aaa-48|Ann Arbor Ambassador/48 lines, + lines#48, + is2=\E7\E[60;0;0;48p\E8, + rmcup=\E[60;0;0;48p\E[48;1H\E[K, + smcup=\E[H\E[J$<156>\E[48;0;0;48p, use=aaa+unk, +aaa-48-rv|Ann Arbor Ambassador/48 lines+reverse video, + use=aaa+rv, use=aaa-48, +aaa-60-s|Ann Arbor Ambassador/59 lines+status, + eslok, hs, + lines#59, + dsl=\E7\E[60;0;0;60p\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;60p\E8, + tsl=\E[>51h\E[1;%p1%dH\E[2K, use=aaa+unk, +aaa-60-s-rv|Ann Arbor Ambassador/59 lines+status+reverse video, + use=aaa+rv, use=aaa-60-s, +aaa-60-dec-rv|Ann Arbor Ambassador/DEC mode+59 lines+status+rev video, + use=aaa+dec, use=aaa+rv, use=aaa-60-s, +aaa-60|Ann Arbor Ambassador/60 lines, + lines#60, + is2=\E7\E[60;0;0;60p\E[1Q\E[m\E[>20;30l\E8, + use=aaa+unk, +aaa-60-rv|Ann Arbor Ambassador/60 lines+reverse video, + use=aaa+rv, use=aaa-60, +aaa-db|Ann Arbor Ambassador 30/destructive backspace, + OTbs@, + cub1=\E[D, is3=\E[1Q\E[m\E[>20l\E[>30h, use=aaa-30, + +guru|guru-33|guru+unk|Ann Arbor guru/33 lines 80 cols, + lines#33, + flash=\E[>59h$<100>\E[>59l, + is2=\E7\E[255;0;0;33;80;80p\E8\E[J, is3=\E[>59l, + rmcup=\E[255p\E[255;1H\E[K, smcup=\E[33p, use=aaa+unk, +guru+rv|guru changes for reverse video, + flash=\E[>59l$<100>\E[>59h, is3=\E[>59h, +guru-rv|guru-33-rv|Ann Arbor guru/33 lines+reverse video, + use=guru+rv, use=guru-33, +guru+s|guru status line, + eslok, hs, + dsl=\E7\E[;0p\E[1;1H\E[K\E[H\E8\r\n\E[K, fsl=\E[>51l, + rmcup=\E[255;1p\E[255;1H\E[K, smcup=, + tsl=\E[>51h\E[1;%p1%dH\E[2K, +guru-nctxt|guru with no saved context, + smcup=\E[H\E[J$<156>\E[33p\E[255;1H\E[K, use=guru, +guru-s|guru-33-s|Ann Arbor guru/33 lines+status, + lines#32, + is2=\r\n\E[A\E7\E[255;1;0;33;80;80p\E8\E[J, + smcup=\E[33;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, +guru-24|Ann Arbor guru 24 lines, + cols#80, lines#24, + is2=\E7\E[255;0;0;24;80;80p\E8\E[J, smcup=\E[24p, + use=guru+unk, +guru-44|Ann Arbor guru 44 lines, + cols#97, lines#44, + is2=\E7\E[255;0;0;44;97;100p\E8\E[J, smcup=\E[44p, + use=guru+unk, +guru-44-s|Ann Arbor guru/44 lines+status, + lines#43, + is2=\r\n\E[A\E7\E[255;1;0;44;80;80p\E8\E[J, + smcup=\E[44;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, +guru-76|guru with 76 lines by 89 cols, + cols#89, lines#76, + is2=\E7\E[255;0;0;76;89;100p\E8\E[J, smcup=\E[76p, + use=guru+unk, +guru-76-s|Ann Arbor guru/76 lines+status, + cols#89, lines#75, + is2=\r\n\E[A\E7\E[255;1;0;76;89;100p\E8\E[J, + smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, +guru-76-lp|guru-lp|guru with page bigger than line printer, + cols#134, lines#76, + is2=\E7\E[255;0;0;76;134;134p\E8\E[J, smcup=\E[76p, + use=guru+unk, +guru-76-w|guru 76 lines by 178 cols, + cols#178, lines#76, + is2=\E7\E[255;0;0;76;178;178p\E8\E[J, smcup=\E[76p, + use=guru+unk, +guru-76-w-s|Ann Arbor guru/76 lines+status+wide, + cols#178, lines#75, + is2=\r\n\E[A\E7\E[255;1;0;76;178;178p\E8\E[J, + smcup=\E[76;1p\E[255;1H\E[K, use=guru+s, use=guru+unk, +guru-76-wm|guru 76 lines by 178 cols with 255 cols memory, + cols#178, lines#76, + is2=\E7\E[255;0;0;76;178;255p\E8\E[J, smcup=\E[76p, + use=guru+unk, +aaa-rv-unk|Ann Arbor unknown type, + lh#0, lw#0, nlab#0, + blink=\E[5;7m, bold=\E[1;7m, home=\E[H, invis=\E[7;8m, + is1=\E[7m\E7\E[H\E9\E8, rev=\E[m, rmso=\E[7m, rmul=\E[7m, + rs1=\E[H\E[7m\E[J, + sgr=\E[%?%p6%t1;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p1%!%t + 7;%;%?%p7%t8;%;m, + sgr0=\E[7m, smso=\E[m, smul=\E[4;7m, + +#### Applied Digital Data Systems (adds) +# +# ADDS itself is long gone. ADDS was bought by NCR, and the same group made +# ADDS and NCR terminals. When AT&T and NCR merged, the engineering for +# terminals was merged again. Then AT&T sold the terminal business to +# SunRiver, which later changed its name to Boundless Technologies. The +# engineers from Teletype, AT&T terminals, ADDS, and NCR (who are still there +# as of early 1995) are at: +# +# Boundless Technologies +# 100 Marcus Boulevard +# Hauppauge, NY 11788-3762 +# Vox: (800)-231-5445 +# Fax: (516)-342-7378 +# Web: http://boundless.com +# +# Their voice mail used to describe the place as "SunRiver (formerly ADDS)". +# In 1995 Boundless acquired DEC's terminals business. +# + +# Regent: lowest common denominator, works on all regents. +# (regent: renamed ":bc:" to ":le:" -- esr) +regent|Adds Regent Series, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^U, cud1=\n, cuf1=^F, cuu1=^Z, + home=\EY\s\s, ind=\n, ll=^A, +# Regent 100 has a bug where if computer sends escape when user is holding +# down shift key it gets confused, so we avoid escape. +regent100|Adds Regent 100, + xmc#1, + bel=^G, + cup=\013%p1%'\s'%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, + kf0=^B1\r, kf1=^B2\r, kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, + kf5=^B6\r, kf6=^B7\r, kf7=^B8\r, lf0=F1, lf1=F2, lf2=F3, + lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, + sgr0=\E0@, smso=\E0P, smul=\E0`, use=regent, +regent20|Adds Regent 20, + bel=^G, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, ed=\Ek, el=\EK, + use=regent, +regent25|Adds Regent 25, + bel=^G, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z, khome=^A, + use=regent20, +regent40|Adds Regent 40, + xmc#1, + bel=^G, dl1=\El$<2*>, il1=\EM$<2*>, kf1=^B1\r, kf2=^B2\r, + kf3=^B3\r, kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r, + kf8=^B8\r, lf0=F1, lf1=F2, lf2=F3, lf3=F4, lf4=F5, lf5=F6, + lf6=F7, lf7=F8, rmso=\E0@, rmul=\E0@, sgr0=\E0@, smso=\E0P, + smul=\E0`, use=regent25, +regent40+|Adds Regent 40+, + is2=\EB, use=regent40, +# It uses a different code for mapping acs vs dim/blink. +regent60|regent200|adds200|Adds Regent 60, + acsc=jLkDl@mHnhq`tXuTv\\wPxd, dch1=\EE, ed=\Ek, + is2=\EV\EB, kbs=^H, kcbt=\EO, kdch1=\EE, kich1=\EF, + krmir=\EF, rmacs=\E2, rmir=\EF, rmso=\ER\E0@\EV, smacs=\E1, + smir=\EF, smso=\ER\E0P\EV, kF1=^B!\r, kF2=^B"\r, kF3=^B#\r, + kF4=^B$\r, kF5=^B%\r, kF6=^B&\r, kF7=^B'\r, kF8=^B(\r, + use=regent40+, +# From: <edward@onyx.berkeley.edu> Thu Jul 9 09:27:33 1981 +# (viewpoint: added <kcuf1>, function key, and <dl1> capabilities -- esr) +viewpoint|addsviewpoint|ADDS Viewpoint, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=^L, cnorm=\017\E0`, cr=\r, cub1=^H, cud1=\n, + cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, + cvvis=\017\E0P, dl1=\El, ed=\Ek$<16.1*>, el=\EK$<16>, + ind=\n, is2=\017\E0`, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z, + kf0=^B1, kf2=^B2, kf3=^B!, kf4=^B", kf5=^B#, khome=^A, ll=^A, + rmso=^O, rmul=^O, sgr0=^O, smso=^N, smul=^N, +# Some viewpoints have bad ROMs that foo up on ^O +screwpoint|ADDS Viewpoint with ^O bug, + cvvis@, rmso@, rmul@, smso@, smul@, use=viewpoint, + +# From: Jay S. Rouman <jsr@dexter.mi.org> 5 Jul 92 +# The <civis>/<cnorm>/<sgr>/<sgr0> strings were added by ESR from specs. +# Theory; the vp3a+ wants \E0%c to set highlights, where normal=01000000, +# underline=01100000, rev=01010000, blink=01000010,dim=01000001, +# invis=01000100 and %c is the logical or of desired attributes. +# There is also a `tag bit' enabling attributes, set by \E) and unset by \E(. +# +# Update by TD - 2004: +# Adapted from +# https://web.archive.org/web/19990922005103/http://www.cs.utk.edu/~shuford/terminal/adds_viewpoint_news.txt +# +# COMMANDS ASCII CODE +# +# Address, Absolute ESC,=,row,column +# Beep BEL +# Aux Port Enable ESC,@ +# Aux Port Disable ESC,A +# Backspace BS +# Cursor back BS +# Cursor down LF +# Cursor forward FF +# Cursor home RS +# Cursor up VT +# Cursor suppress ETB +# Cursor enable CAN +# Erase to end of line ESC,T +# Erase to end of page ESC,Y +# Erase screen SUB +# Keyboard lock SI +# Keyboard unlock SO +# Read current cursor position ESC,? +# Set Attribute ESC,0,x (see below for values of x) +# Tag bit reset ESC,( +# Tag bit set ESC,) +# Transparent Print on ESC,3 +# Transparent Print off ESC,4 +# +# +# ATTRIBUTES +# +# Normal @ 0100 +# Half Intensity A 0101 +# Blinking B 0102 +# Half Intensity Blinking C 0103 +# Reverse Video P 0120 +# Reverse Video Half Intensity Q 0121 +# Reverse Video Blinking R 0122 +# Reverse Video Half Intensity +# Blinking S 0123 +# Underlined ` 0140 +# Underlined Half Intensity a 0141 +# Underlined Blinking b 0142 +# Underlined Half Intensity +# Blinking c 0143 +# Video suppress D 0104 +vp3a+|viewpoint3a+|ADDS Viewpoint 3a+, + am, bw, + cols#80, it#8, lines#24, + blink=\E0B\E), civis=^W, clear=\E*$<80>, cnorm=^X, cr=\r, + cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dim=\E0A\E), + ed=\EY$<80>, el=\ET, home=^^, ht=^I, ind=\n, invis=\E0D\E), + kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, + nel=\r\n, rev=\E0P\E), rmso=\E(, + sgr=%?%p1%p2%|%p3%|%p4%|%p5%|%p7%|%t\E0%{64}%?%p1%t%{17}%|%; + %?%p2%t%{32}%|%;%?%p3%t%{16}%|%;%?%p4%t%{2}%|%;%?%p5%t + %{1}%|%;%c%?%p7%tD%;\E)%e\E(%;, + sgr0=\E(, smso=\E0Q\E), smul=\E0`\E), +vp60|viewpoint60|addsvp60|ADDS Viewpoint60, + use=regent40, +# +# adds viewpoint 90 - from cornell +# Note: emacs sends ei occasionally to insure the terminal is out of +# insert mode. This unfortunately puts the viewpoint90 IN insert +# mode. A hack to get around this is <ich1=\EF\s\EF^U>. (Also, +# - :ei=:im=: must be present in the termcap translation.) +# - <xhp> indicates glitch that attributes stick to location +# - <msgr> means it's safe to move in standout mode +# - <clear=\EG\Ek>: clears screen and visual attributes without affecting +# the status line +# Function key and label capabilities merged in from SCO. +vp90|viewpoint90|ADDS Viewpoint 90, + OTbs, bw, msgr, xhp, + cols#80, lines#24, + clear=\EG\Ek, cub1=^H, cud1=\n, cuf1=^F, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dch1=\EE, + dl1=\El, ed=\Ek, el=\EK, home=\EY\s\s, ht=^I, + ich1=\EF \EF\025, ind=\n, kbs=^H, kcub1=^U, kcud1=\n, + kcuf1=^F, kcuu1=^Z, kf0=^B1\r, kf1=^B2\r, kf10=^B;\r, + kf2=^B3\r, kf3=^B4\r, kf4=^B5\r, kf5=^B6\r, kf6=^B7\r, + kf7=^B8\r, kf8=^B9\r, kf9=^B:\r, khome=^A, lf0=F1, lf1=F2, + lf10=F11, lf2=F3, lf3=F4, lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, + lf9=F10, ll=^A, rmso=\ER\E0@\EV, rmul=\ER\E0@\EV, + sgr0=\ER\E0@\EV, smso=\ER\E0Q\EV, smul=\ER\E0`\EV, +# Note: if return acts weird on a980, check internal switch #2 +# on the top chip on the CONTROL pc board. +adds980|a980|ADDS Consul 980, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\014$<1>\013@, cr=\r, cub1=^H, cud1=\n, + cuf1=\E^E01, cup=\013%p1%{64}%+%c\E\005%p2%2d, + dl1=\E\017$<13>, il1=\E\016$<13>, ind=\n, kf0=\E0, kf1=\E1, + kf2=\E2, kf3=\E3, kf4=\E4, kf5=\E5, kf6=\E6, kf7=\E7, kf8=\E8, + kf9=\E9, rmso=^O, sgr0=^O, smso=^Y^^^N, + +#### C. Itoh Electronics +# +# As of 1995 these people no longer make terminals (they're still in the +# printer business). Their terminals were all clones of the DEC VT series. +# They're located in Orange County, CA. +# + +# CIT 80 - vt-52 emulator, the termcap has been modified to remove +# the delay times and do an auto tab set rather than the indirect +# file used in vt100. +cit80|cit-80|citoh 80, + OTbs, am, + cols#80, lines#24, + clear=\E[H\EJ, cr=\r, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\EJ, el=\EK, ff=^L, + ind=\n, is2=\E>, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, + kcuu1=\EOA, rmkx=\E[?1l\E>, smkx=\E[?1h\E=, +# From: Tim Wood <mtxinu!sybase!tim> Fri Sep 27 09:39:12 PDT 1985 +# (cit101: added <rmam>/<smam> based on init string, merged this with c101 -- esr) +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, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + 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, + 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, +# CIE Terminals CIT-101e from Geoff Kuenning <callan!geoff> via BRL +# The following termcap entry was created from the Callan cd100 entry. The +# last two lines (with the capabilities in caps) are used by RM-cobol to allow +# full selection of combinations of reverse video, underline, and blink. +# (cit101e: removed unknown :f0=\EOp:f1=\EOq:f2=\EOr:f3=\EOs:f4=\EOt:f5=\EOu:\ +# f6=\EOv:f7=\EOw:f8=\EOx:f9=\EOy:AB=\E[0;5m:AL=\E[m:AR=\E[0;7m:AS=\E[0;5;7m:\ +# :NB=\E[0;1;5m:NM=\E[0;1m:NR=\E[0;1;7m:NS=\E[0;1;5;7m: -- esr) +cit101e|C. Itoh CIT-101e, + OTbs, OTpt, am, mir, msgr, + cols#80, it#8, lines#24, + acsc=, clear=\E[H\E[J, cnorm=, csr=\E[%i%p1%2d;%p2%2dr, + cub1=\E[D, cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, + cuu1=\E[A, cvvis=\E[?1l\E[?4l\E[?7h, dch1=\E[P, dl1=\E[M, + ed=\E[J, el=\E[K, 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, 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, +# From: David S. Lawyer, June 1997: +# The CIT 101-e was made in Japan in 1983-4 and imported by CIE +# Terminals in Irvine, CA. It was part of CITOH Electronics. In the +# late 1980's CIT Terminals went out of business. +# There is no need to use the initialization string is=... (by invoking +# tset or setterm etc.) provided that the terminal has been manually set +# up (and the setup saved with ^S) to be compatible with this termcap. To be +# compatible it should be in ANSI mode (not VT52). A set-up that +# works is to set all the manually settable stuff to factory defaults +# by pressing ^D in set-up mode. Then increase the brightness with the +# up-arrow key since the factory default will likely be dim on an old +# terminal. Then change any options you want (provided that they are +# compatible with the termcap). For my terminal I set: Screen +# Background: light; Keyclicks: silent; Auto wraparound: on; CRT saver: +# on. I also set up mine for parity (but you may not need it). Then +# save the setup with ^S. +# (cit101e-rv: added empty <rmcup> to suppress a tic warning. --esr) +cit101e-rv|C.Itoh CIT-101e (sets reverse video), + am, eo, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, + OTnl=\EM, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + civis=\E[1v, clear=\E[H\E[J, cnorm=\E[0;3;4v, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[3;5v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h, + home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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, rc=\E8, + rev=\E[7m, ri=\EM, rmcup=, rmir=\E[4l, rmso=\E[m, rmul=\E[m, + rs1=\Ec\E[?7h\E[>5g, sc=\E7, sgr0=\E[m, + smcup=\E[>5g\E[?7h\E[?5h, smir=\E[4h, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, u6=\E[%i%p1%d;%p2%dR, u7=\E[6n, + u8=\E[?6c, u9=\E[c, use=ecma+index, +cit101e-n|CIT-101e w/o am, + am@, + cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=\n, + use=cit101e, +cit101e-132|CIT-101e with 132 cols, + cols#132, + kbs=^H, kcub1=^H, kcud1=\n, use=cit101e, +cit101e-n132|CIT-101e with 132 cols w/o am, + am@, + cols#132, + cvvis=\E[?1l\E[?4l\E[?7l, kbs=^H, kcub1=^H, kcud1=\n, + use=cit101e, +# CIE Terminals CIT-500 from BRL +# The following SET-UP modes are assumed for normal operation: +# GENERATE_XON/XOFF:YES DUPLEX:FULL NEWLINE:OFF +# AUTOWRAP:ON MODE:ANSI SCREEN_LENGTH:64_LINES +# DSPLY_CNTRL_CODES?NO PAGE_WIDTH:80 EDIT_MODE:OFF +# Other SET-UP modes may be set for operator convenience or communication +# requirements. +# Hardware tabs are assumed to be set every 8 columns; they can be set up +# by the "reset", "tset", or "tabs" utilities. No delays are specified; use +# "stty ixon -ixany" to enable DC3/DC1 flow control! +# (cit500: I added <rmam>/<smam> based on the init string -- esr) +cit500|CIE Terminals CIT-500, + OTbs, OTpt, mir, msgr, xon, + OTkn#10, cols#80, it#8, lines#64, vt#3, + acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, 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=\EM, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ed=\EJ, el=\EK, home=\E[H, ht=^I, hts=\EH, il=\E[%p1%dL, + il1=\E[L, ind=\n, is2=\E<\E)0, kbs=^H, kcbt=\E[Z, kcub1=\EOD, + kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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, rc=\E8, rev=\E[7m, + ri=\EM, rmacs=^O, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, + rmso=\E[m, rmul=\E[m, + rs1=\E<\E2\E[20l\E[?6l\E[r\E[m\E[q\E(B\017\E)0\E>, + sc=\E7, sgr0=\E[m, smacs=^N, smam=\E[?7h, smir=\E[4h, + smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + +# C. Itoh printers begin here +citoh|ci8510|8510|C.Itoh 8510a, + cols#80, it#8, + bold=\E!, cub1@, + is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073., + rep=\ER%p2%03d%p1%c, ri=\Er, rmul=\EY, sgr0=\E"\EY, + smul=\EX, use=lpr, +citoh-pica|citoh in pica, + is1=\EN, use=citoh, +citoh-elite|citoh in elite, + cols#96, + is1=\EE, + is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089 + ., + use=citoh, +citoh-comp|citoh in compressed, + cols#136, + is1=\EQ, + is2=\E(009\,017\,025\,033\,041\,049\,057\,065\,073\,081\,089 + \,097\,105\,113\,121\,129., + use=citoh, +# citoh has infinite cols because we don't want lp ever inserting \n\t**. +citoh-prop|citoh-ps|ips|citoh in proportional spacing mode, + cols#0x7fff, + is1=\EP, use=citoh, +citoh-6lpi|citoh in 6 lines per inch mode, + is3=\EA, use=citoh, +citoh-8lpi|citoh in 8 lines per inch mode, + lines#88, + is3=\EB, use=citoh, + +#### Control Data (cdc) +# + +cdc456|CDC 456 terminal, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=^Y^X, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E1%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dl1=\EJ, ed=^X, + el=^V, home=^Y, il1=\EL, ind=\n, + +# Assorted CDC terminals from BRL (improvements by DAG & Ferd Brundick) +cdc721|CDC Viking, + OTbs, am, + cols#80, lines#24, + clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, + cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=\n, kcuf1=^I, + kcuu1=^W, khome=^Y, +cdc721ll|CDC Viking with long lines, + OTbs, am, + cols#132, lines#24, + clear=^L, cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, + cuu1=^W, el=^K, home=^Y, kcub1=^H, kcud1=\n, kcuf1=^I, + kcuu1=^W, khome=^Y, +# (cdc752: the BRL entry had :ll=\E1 ^Z: commented out +cdc752|CDC 752, + OTbs, am, bw, xhp, + cols#80, lines#24, + bel=^G, clear=\030\E1\s\s, cr=\r, cub1=^H, cud1=\n, cuf1=^U, + cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, el=^V, + home=\E1\s\s, ind=\n, ll=^Y, rs1=\E1 \030\002\003\017, +# CDC 756 +# The following switch/key settings are assumed for normal operation: +# 96 chars SCROLL FULL duplex not BLOCK +# Other switches may be set according to communication requirements. +# Insert/delete-character cannot be used, as the whole display is affected. +# "so" & "se" are commented out until jove handles "sg" correctly. +cdc756|CDC 756, + OTbs, am, bw, + OTkn#10, cols#80, lines#24, + bel=^G, clear=^Y^X, cr=\r, cub1=^H, cud1=\n, cuf1=^U, + cup=\E1%p2%{32}%+%c%p1%{32}%+%c, cuu1=^Z, + dl1=\EJ$<6*/>, ed=^X, el=^V, home=^Y, il1=\EL$<6*/>, ind=\n, + kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^Z, kdch1=\EI, + kdl1=\EL, ked=^X, kel=^V, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, + kf4=\EE, kf5=\EF, kf6=\EG, kf7=\EH, kf8=\Ea, kf9=\Eb, khome=^Y, + khts=^O, kich1=\EK, kil1=\EL, lf0=F1, lf1=F2, lf2=F3, lf3=F4, + lf4=F5, lf5=F6, lf6=F7, lf7=F8, lf8=F9, lf9=F10, ll=^Y^Z, + rs1=^Y^X^B^C^O, +# +# CDC 721 from Robert Viduya, Ga. Tech. <ihnp4!gatech!gitpyr!robert> via BRL. +# +# Part of the long initialization string defines the "DOWN" key to the left +# 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 +# cursor. Termcap doesn't have the capability (as far as I could tell) to +# handle the 721 in 132 column mode. +# +# (cdc721: changed :ri: to :sr: -- esr) +cdc721-esc|Control Data 721, + OTbs, OTpt, am, bw, msgr, xon, + OTkn#10, cols#80, it#8, lines#30, + bel=^G, blink=^N, cbt=^^^K, clear=^L, cub1=^H, cud1=^Z, + cuf1=^X, cup=\002%p2%{32}%+%c%p1%{32}%+%c, cuu1=^W, + dch1=^^N, dim=^\, dl1=^^Q, ed=^^P, el=^K, home=^Y, hts=^^^RW, + ich1=^^O, il1=^^R, ind=\036W =\036U, invis=^^^R[, + is2=\036\022B\003\036\035\017\022\025\035\036E\036\022H\036 + \022J\036\022L\036\022N\036\022P\036\022Q\036\022\036 + \022\^\036\022b\036\022i\036W\s=\036\022Z\036\011C1-`\s` + !k/o, + kbs=^H, kcub1=^H, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^q, + kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, kf6=^^w, kf7=^^x, + kf8=^^y, kf9=^^z, khome=^Y, ll=^B =, rev=^^D, + ri=\036W =\036V, rmir=, rmkx=^^^Rl, rmso=^^E, rmul=^], + sgr0=^O^U^]^^E^^^R\\, smir=, smkx=^^^Rk, smso=^^D, smul=^\, + tbc=^^^RY, + +#### Getronics +# +# Getronics is a Dutch electronics company that at one time was called +# `Geveke' and made async terminals; but (according to the company itself!) +# they've lost all their documentation on the command set. The hardware +# documentation suggests the terminals were actually manufactured by a +# Taiwanese electronics company named Cal-Comp. There are known +# to have been at least two models, the 33 and the 50. +# + +# The 50 seems to be a top end vt220 clone, with the addition of a higher +# screen resolution, a larger screen, at least 1 page of memory above and +# below the screen, apparently pages of memory right and left of the screen +# which can be panned, and about 75 function keys (15 function keys x normal, +# shift, control, func A, func B). It also has more setup possibilities than +# the vt220. The monitor case is dated November 1978 and the keyboard case is +# May 1982. +# +# The vt100 emulation works as is. The entry below describes the rather +# non-conformant (but more featureful) ANSI mode. +# +# From: Stephen Peterson <stv@utrecht.ow.nl>, 27 May 1995 +visa50|Geveke VISA 50 terminal in ANSI 80 character mode, + bw, mir, msgr, + 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, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dX, dch1=\E[X, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5h$<100/>\E[?5l, + home=\E[H, hpa=\E[%i%p1%dG, ht=^I, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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, kbs=^H, kc1=\EOR, kc3=\EOS, + kcub1=\E[D, kcud1=\E[A, kcuf1=\E[C, kcuu1=\E[A, kdch1=^?, + kdl1=\EOS, kf0=\E010, kf1=\E001, kf10=\E011, kf2=\E002, + kf3=\E003, kf4=\E004, kf5=\E005, kf6=\E006, kf7=\E007, + kf8=\E008, kf9=\E009, khome=\E[f, lf2=A delete char, + lf3=A insert line, lf4=A delete line, lf5=A clear, + lf6=A ce of/cf gn, lf7=A print, lf8=A on-line, + lf9=A funcl0=A send, nel=\r\n, rev=\E[7m, rmacs=\E[3l, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E>, rmso=\E[0;2m, + rmul=\E[0m, sgr0=\E[0;2m, smacs=\E3h, smam=\E?7h, + smir=\E[4h, smkx=\E=, smso=\E[2;7m, smul=\E[4m, tbc=\E[3g, + vpa=\E[%i%p1%dd, + +#### Human Designed Systems (Concept) +# +# Human Designed Systems +# 400 Fehley Drive +# King of Prussia, PA 19406 +# Vox: (610)-277-8300 +# Fax: (610)-275-5739 +# Net: support@hds.com +# +# John Martin <john@hds.com> is their termcap expert. They're mostly out of +# the character-terminal business now (1995) and making X terminals. In +# particular, the whole `Concept' line described here was discontinued long +# ago. +# + +# From: <vax135!hpk> Sat Jun 27 07:41:20 1981 +# Extensive changes to c108 by arpavax:eric Feb 1982 +# Some unknown person at SCO then translated it to terminfo. +# +# There seem to be a number of different versions of the C108 PROMS +# (with bug fixes in its Z-80 program). +# +# The first one that we had would lock out the keyboard of you +# sent lots of short lines (like /usr/dict/words) at 9600 baud. +# Try that on your C108 and see if it sends a ^S when you type it. +# If so, you have an old version of the PROMs. +# +# You should configure the C108 to send ^S/^Q before running this. +# It is much faster (at 9600 baud) than the c100 because the delays +# are not fixed. +# new status line display entries for c108-8p: +# <is3> - init str #3 - setup term for status display - +# set programmer mode, select window 2, define window at last +# line of memory, set bkgnd stat mesg there, select window 0. +# +# <tsl> - to status line - select window 2, home cursor, erase to +# end-of-window, 1/2 bright on, goto(line#0, col#?) +# +# <fsl> - from status line - 1/2 bright off, select window 0 +# +# <dsl> - disable status display - set bkgnd status mesg with +# illegal window # +# +# There are probably more function keys that should be added but +# I don't know what they are. +# +# No delays needed on c108 because of ^S/^Q handshaking +# +c108|concept108|c108-8p|concept108-8p|Concept 108 w/8 pages, + is3=\EU\E\sz"\Ev\001\177\s!p\E\s;"\E\sz\s\Ev\s\s\001\177p + \Ep\n, + rmcup=\Ev \001\177p\Ep\r\n, use=c108-4p, +c108-4p|concept108-4p|Concept 108 w/4 pages, + OTbs, eslok, hs, xon, + pb@, + acsc=jEkTl\\mMqLxU, cnorm=\Ew, cr=\r, + cup=\Ea%p1%?%p1%{95}%>%t\001%{96}%-%;%{32}%+%c%p2%?%p2%{95} + %>%t\001%{96}%-%;%{32}%+%c, + cvvis=\EW, dch1=\E 1$<16*>, dsl=\E ;\177, fsl=\Ee\E z\s, + ind=\n, is1=\EK\E!\E F, + is3=\EU\E z"\Ev\177 !p\E ;"\E z \Ev \001 p\Ep\n, + rmacs=\Ej\s, rmcup=\Ev \001 p\Ep\r\n, smacs=\Ej!, + smcup=\EU\Ev 8p\Ep\r\E\025, + tsl=\E z"\E?\E\005\EE\Ea %+\s, use=c100, +c108-rv|c108-rv-8p|Concept 108 w/8 pages in reverse video, + rmcup=\Ev \002 p\Ep\r\n, smcup=\EU\Ev 8p\Ep\r, + use=c108-rv-4p, +c108-rv-4p|concept108rv4p|Concept 108 w/4 pages in reverse video, + flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, smso=\EE, + use=c108-4p, +c108-w|c108-w-8p|concept108-w-8|concept108-w8p|Concept 108 w/8 pages in wide mode, + cols#132, + is1=\E F\E", rmcup=\Ev ^A0\001D\Ep\r\n, + smcup=\EU\Ev 8\001D\Ep\r, use=c108-8p, + +# Concept 100: +# These have only window relative cursor addressing, not screen +# relative. To get it to work right here, smcup/rmcup (which +# were invented for the concept) lock you into a one page +# window for screen style programs. +# +# To get out of the one page window, we use a clever trick: +# we set the window size to zero ("\Ev " in rmcup) which the +# terminal recognizes as an error and resets the window to all +# of memory. +# +# This trick works on c100 but does not on c108, sigh. +# +# Some tty drivers use cr3 for concept, others use nl3, hence +# the delays on cr and ind below. This padding is only needed at +# 9600 baud and up. One or the other is commented out depending on +# local conventions. +# +# 2 ms padding on <rmcup> isn't always enough. 6 works fine. Maybe +# less than 6 but more than 2 will work. +# +# Note: can't use function keys f7-f10 because they are +# indistinguishable from arrow keys (!), also, del char and +# clear eol use xon/xoff so they probably won't work very well. +# +# Also note that we don't define insrt/del char/delline/eop/send +# because they don't transmit unless we reset them - I figured +# it was a bad idea to clobber their definitions. +# +# The <mc5> sequence changes the escape character to ^^ so that +# escapes will be passed through to the printer. Only trouble +# is that ^^ won't be - ^^ was chosen to be unlikely. +# Unfortunately, if you're sending raster bits through to be +# plotted, any character you choose will be likely, so we lose. +# +# \EQ"\EY(^W (send anything from printer to host, for xon/xoff) +# cannot be # in is2 because it will hang a c100 with no printer +# if sent twice. +c100|concept100|concept|c104|c100-4p|HDS Concept 100, + OTbs, am, eo, mir, ul, xenl, + cols#80, lines#24, pb#9600, vt#8, + bel=^G, blink=\EC, clear=\E?\E\005$<2*>, cr=$<9>\r, + cub1=^H, cud1=\n, cuf1=\E=, + cup=\Ea%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E;, + dch1=\E\021$<16*>, dim=\EE, dl1=\E\002$<3*>, + ed=\E\005$<16*>, el=\E\025$<16>, flash=\Ek$<200>\EK, + ht=\011$<8>, il1=\E\022$<3*>, ind=\n, invis=\EH, ip=$<16*>, + is1=\EK, + is2=\EU\Ef\E7\E5\E8\El\ENH\E\0\Eo&\0\Eo'\E\Eo!\0\E\007!\E + \010A@\s\E4#:"\E:a\E4#;"\E:b\E4#<"\E:c, + is3=\Ev $<6>\Ep\n, kbs=^H, kcbt=\E', kctab=\E_, + kcub1=\E>, kcud1=\E<, kcuf1=\E=, kcuu1=\E;, kdch1=\E^Q, + kdl1=\E^B, ked=\E^C, kel=\E^S, kf1=\E5, kf2=\E6, kf3=\E7, + kf4=\E8, kf5=\E9, kf6=\E:a, kf7=\E:b, kf8=\E:c, khome=\E?, + khts=\E], kich1=\E^P, kil1=\E^R, kind=\E[, knp=\E-, kpp=\E., + kri=\E\\, krmir=\E\0, mc4=\036o \E\EQ!\EYP\027, + mc5=\EQ"\EY(\027\EYD\Eo \036, prot=\EI, + rep=\Er%p1%c%p2%{32}%+%c$<.2*>, rev=\ED, + rmcup=\Ev $<6>\Ep\r\n, rmir=\E\s\s, rmkx=\Ex, + rmso=\Ed, rmul=\Eg, sgr0=\EN@, + smcup=\EU\Ev 8p\Ep\r\E\025$<16>, smir=\E^P, smkx=\EX, + smso=\ED, smul=\EG, +c100-rv|c100-rv-4p|concept100-rv|Concept 100 reverse video, + cnorm@, cvvis@, flash=\EK$<200>\Ek, is1=\Ek, rmso=\Ee, + smso=\EE, use=c100, +oc100|oconcept|c100-1p|old 1-page Concept 100, + in, + is3@, use=c100, + +# From: Walter Skorski <walt@genetics1.JMP.TJU.EDU>, 16-oct-1996. +# Lots of notes, originally inline, but ncurses doesn't grok that. +# +# am: not available in power on mode, but turned on with \E[=107;207h in +# is2=. Also, \E=124l in is2= could have been used to prevent needing +# to specify xenl:, but that would have rendered the last space on the +# last line useless. +# bw: Not available in power on mode, but turned on with \E[=107;207h in +# is2=. +# clear: Could be done with \E[2J alone, except that vi (and probably most +# other programs) assume that this also homes the cursor. +# dsl: Go to window 2, go to the beginning of the line, use a line feed to +# scroll the window, and go back to window 1. +# is2: the string may cause a warning to be issued by tic that it +# found a very long line and that it suspects that a comma is missing +# somewhere. This warning can be ignored (unless it comes up more than +# once). The initialization string contains the following commands: +# +# [Setup mode items changed from factory defaults:] +# \E)0 set alternate character set to +# graphics +# ^O set character set to default +# [In case it wasn't] +# \E[m turn off all attributes +# [In case they weren't off] +# \E[=107; cursor wrap and +# 207h character wrap on +# \E[90;3u set Fkey definitions to "transmit" +# defaults +# \E[92;3u set cursor key definitions to +# "transmit" defaults +# \E[43;1u set shift F13 to transmit... +# \177\E$P\177 +# \E[44;1u set shift F14 to transmit... +# \177\E$Q\177 +# \E[45;1u set shift F15 to transmit... +# \177\E$R\177 +# \E[46;1u set shift F16 to transmit... +# \177\E$S\177 +# \E[200;1u set shift up to transmit... +# \177\E$A\177 +# \E[201;1u set shift down to transmit... +# \177\E$B\177 +# \E[202;1u set shift right to transmit... +# \177\E$C\177 +# \E[203;1u set shift left to transmit... +# \177\E$D\177 +# \E[204;1u set shift home to transmit... +# \177\E$H\177 +# \E[212;1u set backtab to transmit... +# \177\E$I\177 +# \E[213;1u set shift backspace to transmit... +# \177\E$^H\177 +# \E[214;1u set shift del to transmit... +# "\E$\177" +# [Necessary items not mentioned in setup mode:] +# \E[2!w move to window 2 +# \E[25;25w define window as line 25 of memory +# \E[!w move to window 1 +# \E[2*w show current line of window 2 as +# status line +# \E[2+x set meta key to use high bit +# \E[;3+} move underline to bottom of character +# +# All Fkeys are set to their default transmit definitions with \E[90;3u +# in is2=. IMPORTANT: to use this terminal definition, the "quit" stty +# setting MUST be redefined or deactivated, because the default is +# contained in almost all of this terminal's Fkey strings! If for some +# reason "quit" cannot be altered, the Fkeys can, but it would be +# necessary to change ^| to ^] in all of these definitions, and add +# \E[2;029!t to is2. +# lines: is set to 24 because this terminal refuses to treat the 25th +# line normally. +# ll: Not available in power on mode, but turned on with \E[=107;207h in +# is2=. +# lm: Pointless, given that this definition locks a single screen of +# memory into view, but what the hey... +# rmso: Could use \E[1;7!{ to turn off only bold and reverse (leaving any +# other attributes alone), but some programs expect this to turn off +# everything. +# rmul: Could use \E[4!{ to turn off only underline (leaving any other +# attributes alone), but some programs expect this to turn off +# everything. +# sgr: Attributes are set on this terminal with the string \E[ followed by +# a list of attribute code numbers (in decimal, separated by +# semicolons), followed by the character m. The attribute code +# numbers are: +# 1 for bold; +# 2 for dim (which is ignored in power on mode); +# 4 for underline; +# 5 for blinking; +# 7 for inverse; +# 8 for not displayable; and +# =99 for protected (except that there are strange side +# effects to protected characters which make them inadvisable). +# The mapping of terminfo parameters to attributes is as follows: +# %p1 (standout) = bold and inverse together; +# %p2 (underline) = underline; +# %p3 (reverse) = inverse; +# %p4 (blink) = blinking; +# %p5 (dim) is ignored; +# %p6 (bold) = bold; +# %p7 (invisible) = not displayable; +# %p8 (protected) is ignored; and +# %p9 (alt char set) = alt char set. +# The code to do this is: +# \E[0 OUTPUT \E[0 +# %?%p1%p6%O IF (standout; bold) OR +# %t;1 THEN OUTPUT ;1 +# %; ENDIF +# %?%p2 IF underline +# %t;4 THEN OUTPUT ;4 +# %; ENDIF +# %?%p4 IF blink +# %t;5 THEN OUTPUT ;5 +# %; ENDIF +# %?%p1%p3%O IF (standout; reverse) OR +# %t;7 THEN OUTPUT ;7 +# %; ENDIF +# %?%p7 IF invisible +# %t;8 THEN OUTPUT ;8 +# %; ENDIF +# m OUTPUT m +# %?%p9 IF altcharset +# %t^N THEN OUTPUT ^N +# %e^O ELSE OUTPUT ^O +# %; ENDIF +# sgr0: Everything is turned off (including alternate character set), since +# there is no way of knowing what it is that the program wants turned +# off. +# smul: The "underline" attribute is reconfigurable to an overline or +# strike-through, or (as done with \E[;3+} in is2=), to a line at the true +# bottom of the character cell. This was done to allow for more readable +# underlined characters, and to be able to distinguish between an +# underlined space, an underscore, and an underlined underscore. +# xenl: Terminal can be configured to not need this, but this "glitch" +# behavior is actually preferable with autowrap terminals. +# +# Parameters kf31= thru kf53= actually contain the strings sent by the shifted +# Fkeys. There are no parameters for shifted Fkeys in terminfo. The is2 +# string modifies the 'O' in kf43 to kf46 to a '$'. +# +# kcbt was originally ^I but redefined in is2=. +# kHOM was \E[H originally but redefined in is2=, as were a number of +# other keys. +# kDC was originally \177 but redefined in is2=. +# +# kbs: Shift was also ^H originally but redefined as \E$^H in is2=. +# tsl: Go to window 2, then do an hpa=. +# +#------- flash=\E[8;3!}^G\E[3;3!} +#------- flash=\E[?5h$<100>\E[?5l +# There are two ways to flash the screen, both of which have their drawbacks. +# The first is to set the bell mode to video, transmit a bell character, and +# set the bell mode back - but to what? There is no way of knowing what the +# user's old bell setting was before we messed with it. Worse, the command to +# set the bell mode also sets the key click volume, and there is no way to say +# "leave that alone", or to know what it's set to, either. +# The second way to do a flash is to set the screen to inverse video, pad for a +# tenth of a second, and set it back - but like before, there's no way to know +# that the screen wasn't ALREADY in inverse video, or that the user may prefer +# it that way. The point is moot anyway, since vi (and probably other +# programs) assume that by defining flash=, you want the computer to use it +# INSTEAD of bel=, rather than as a secondary type of signal. +# +#------- cvvis=\E[+{ +# The is the power on setting, which is also as visible as the cursor +# gets. +#------- wind=\E[%i%p1%d;%p2%d;%p3%{1}%+%d;%p4%{1}%+%dw +# Windowing is possible, but not defined here because it is also used to +# emulate status line functions. Allowing a program to set a window could +# clobber the status line or render it unusable. There is additional memory, +# but screen scroll functions are destructive and do not make use of it. +# +#------- dim= Not available in power on mode. +# You have a choice of defining low intensity characters as "half bright" and +# high intensity as "normal", or defining low as "normal" and high as "bold". +# No matter which you choose, only one of either "half bright" or "bold" is +# available at any time, so taking the time to override the default is +# pointless. +# +#------- prot=\E[=0;99m +# Not defined, because it appears to have some strange side effects. +#------- pfkey=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%; +#------- pfloc=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%du\177%p2%s\177%; +#------- pfx=%?%p1%{24}%<%p1%{30}%>%p1%{54}%<%A%O%t\E[%p1%d;1u\177%p2%s\177%; +# Available, but making them available to programs is inadvisable. +# The code to do this is: +# %?%p1%{24}%< IF ((key; 24) <; +# %p1%{30}%> ((key; 30) >; +# %p1%{54}%< (key; 54) < +# %A ) AND +# %O ) OR +# [that is, "IF key < 24 OR (key > 30 AND key < 54)",] +# %t\E[ THEN OUTPUT \E[ +# %p1%d OUTPUT (key) as decimal +# [next line applies to pfx only] +# ;1 OUTPUT ;1 +# u OUTPUT u +# \177 OUTPUT \177 +# %p2%s OUTPUT (string) as string +# \177 OUTPUT \177 +# [DEL chosen as delimiter, but could be any character] +# [implied: ELSE do nothing] +# %; ENDIF +# +#------- rs2= +# Not defined since anything it might do could be done faster and easier with +# either Meta-Shift-Reset or the main power switch. +# +#------- smkx=\E[1!z +#------- rmkx=\E[!z +# These sequences apply to the cursor and setup keys only, not to the +# numeric keypad. But it doesn't matter anyway, since making these +# available to programs is inadvisable. +# For the key definitions below, all sequences beginning with \E$ are +# custom and programmed into the terminal via is2. \E$ also has no +# meaning to any other terminal. +# +#------- cmdch=\E[;%p1%d!t +# Available, but making it available to programs is inadvisable. +#------- smxon=\E[1*q +# Available, but making it available to programs is inadvisable. +# Terminal will send XON/XOFF on buffer overflow. +#------- rmxon=\E[*q +# Available, but making it available to programs is inadvisable. +# Terminal will not notify on buffer overflow. +#------- smm=\E[2+x +#------- rmm=\E[+x +# Available, but making them available to programs is inadvisable. +# +# Printing: +# It's not made clear in the manuals, but based on other ansi/vt type +# terminals, it's a good guess that this terminal is capable of both +# "transparent print" (which doesn't copy data to the screen, and +# therefore needs mc5i: specified to say so) and "auxiliary print" +# (which does duplicate printed data on the screen, in which case mc4= +# and mc5= should use the \E[?4i and \E[?5i strings instead). + +hds200|Human Designed Systems HDS200, + am, bw, eslok, hs, km, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, lm#0, + acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, + blink=\E[0;5m, bold=\E[0;1m, cbt=\E[Z, civis=\E[6+{, + clear=\E[H\E[J, cnorm=\E[+{, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + dsl=\E[2!w\r\n\E[!w, ed=\E[J, el=\E[K, el1=\E[1K, + fsl=\E[!w, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, + ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, 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 + \E[202;1u\177\E$C\177\E[203;1u\177\E$D\177\E[204;1u\177 + \E$H\177\E[212;1u\177\E$I\177\E[213;1u\177\E$\010\177\E[ + 214;1u"\E$\177"\E[2!w\E[25;25w\E[!w\E[2*w\E[2+x\E[;3+}, + kDC=\E$^?, kHOM=\E$H, kLFT=\E$D, kRIT=\E$C, kbs=^H, + kcbt=\E$I, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=^?, kent=\r, kf1=^\001\r, kf10=^\010\r, kf11=^\011\r, + kf12=^\012\r, kf13=\EOP, kf14=\EOQ, kf15=\EOR, kf16=\EOS, + kf17=^\017\r, kf18=^\018\r, kf19=^\019\r, kf2=^\002\r, + kf20=^\020\r, kf21=^\021\r, kf22=^\022\r, kf23=^\023\r, + kf3=^\003\r, kf31=^\031\r, kf32=^\032\r, kf33=^\033\r, + kf34=^\034\r, kf35=^\035\r, kf36=^\036\r, kf37=^\037\r, + kf38=^\038\r, kf39=^\039\r, kf4=^\004\r, kf40=^\040\r, + kf41=^\041\r, kf42=^\042\r, kf43=\E$P, kf44=\E$Q, + kf45=\E$R, kf46=\E$S, kf47=^\047\r, kf48=^\048\r, + kf49=^\049\r, kf5=^\005\r, kf50=^\050\r, kf51=^\051\r, + kf52=^\052\r, kf53=^\053\r, kf6=^\006\r, kf7=^\007\r, + kf8=^\008\r, kf9=^\009\r, khome=\E[H, kind=\E[T, knp=\E[U, + kpp=\E[V, kri=\E[S, ll=\E[H\E[A, nel=\E[E, rc=\E8, + rev=\E[0;7m, ri=\EM, rmacs=^O, rmir=\E[4l, rmso=\E[m\017, + rmul=\E[m\017, sc=\E7, + 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, tbc=\E[3g, tsl=\E[2!w\E[%i%p1%dG, + vpa=\E[%i%p1%dd, use=ansi+pp, + +# <ht> through <el> included to specify padding needed in raw mode. +# (avt-ns: added empty <acsc> to suppress a tic warning --esr) +avt-ns|Concept AVT no status line, + OTbs, am, eo, mir, ul, xenl, xon, + cols#80, it#8, lines#24, lm#192, + acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + clear=\E[H\E[J$<38>, cnorm=\E[=119l, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, + cvvis=\E[=119h, dch1=\E[P, 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>, hts=\EH, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL$<4*>, il1=\E[L$<4>, ind=\n$<8>, + invis=\E[8m, 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, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=\E\002\r, ked=\E\004\r, kf1=\EOP, kf2=\EOQ, kf3=\EOR, + kf4=\EOS, khome=\E[H, 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, rc=\E8, rev=\E[7m, ri=\EM$<4>, rmacs=\016$<1>, + rmcup=\E[w\E2\r\n, rmir=\E[4l, rmkx=\E[!z\E[0;2u, + rmso=\E[7!{, rmul=\E[4!{, sc=\E7, + sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1; + %;%?%p7%t8;%;%?%p8%t99;%;m%?%p5%t\E[1!{%;%?%p9%t\017%e + \016%;$<1>, + sgr0=\E[m\016$<1>, smacs=\017$<1>, + smcup=\E[=4l\E[1;24w\E2\r, smir=\E[4h, + smkx=\E[1!z\E[0;3u, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + vpa=\E[%p1%{1}%+%dd, use=ansi+rep, +avt-rv-ns|Concept AVT in reverse video mode/no status line, + flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, + use=avt-ns, +avt-w-ns|Concept AVT in 132 column mode/no status line, + is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, + use=avt-ns, +avt-w-rv-ns|Concept AVT in 132 column mode/no status line/reverse video, + flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, + smcup=\E[H\E[1;24;1;132w, use=avt-ns, + +# Concept AVT with status line. We get the status line using the +# "Background status line" feature of the terminal. We swipe the +# first line of memory in window 2 for the status line, keeping +# 191 lines of memory and 24 screen lines for regular use. +# The first line is used instead of the last so that this works +# on both 4 and 8 page AVTs. (Note the lm#191 or 192 - this +# assumes an 8 page AVT but lm isn't currently used anywhere.) +# +avt+s|Concept AVT status line changes, + eslok, hs, + lm#191, + dsl=\E[0*w, fsl=\E[1;1!w, + is3=\E[2w\E[2!w\E[1;1;1;80w\E[H\E[2*w\E[1!w\E2\r\n, + rmcup=\E[2w\E2\r\n, smcup=\E[2;25w\E2\r, + tsl=\E[2;1!w\E[;%p1%dH\E[2K, +avt|avt-s|concept-avt|Concept AVT w/80 columns, + use=avt+s, use=avt-ns, +avt-rv|avt-rv-s|Concept AVT reverse video w/sl, + flash=\E[=205l$<200>\E[=205h, is1=\E[=103l\E[=205h, + use=avt+s, use=avt-ns, +avt-w|avt-w-s|Concept AVT 132 cols+status, + is1=\E[=103h\E[=205l, smcup=\E[H\E[1;24;1;132w, + use=avt+s, use=avt-ns, +avt-w-rv|avt-w-rv-s|Concept AVT wide+status+rv, + flash=\E[=205l$<200>\E[=205h, is1=\E[=103h\E[=205h, + smcup=\E[H\E[1;24;1;132w, use=avt+s, use=avt-ns, + +#### Contel Business Systems. +# + +# Contel c300 and c320 terminals. +contel300|contel320|c300|Contel Business Systems C-300 or C-320, + am, in, xon, + cols#80, lines#24, xmc#1, + bel=^G, clear=\EK, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, + dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>, + el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH, + hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=\n, ip=$<5.5*>, + kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD, + kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA, + rmso=\E!\0, sgr0=\E!\0, smso=\E!\r, tbc=\E3, +# Contel c301 and c321 terminals. +contel301|contel321|c301|c321|Contel Business Systems C-301 or C-321, + flash@, ich1@, ip@, rmso=\E!\0$<20>, smso=\E!\r$<20>, + use=contel300, + +#### Data General (dg) +# +# According to James Carlson <carlson@xylogics.com> writing in January 1995, +# the terminals group at Data General was shut down in 1991; all these +# terminals have thus been discontinued. +# +# DG terminals have function keys that respond to the SHIFT and CTRL keys, +# e.g., SHIFT-F1 generates a different code from F1. To number the keys +# sequentially, first the unmodified key codes are listed as F1 through F15. +# Then their SHIFT versions are listed as F16 through F30, their CTRL versions +# are listed as F31 through F45, and their CTRL-SHIFT versions are listed as +# F46 through F60. This is done in the private "includes" below whose names +# start with "dgkeys+". +# +# DG terminals generally support 8 bit characters. For each of these terminals +# two descriptions are supplied: +# 1) A default description for 8 bits/character communications, which +# uses the default DG international character set and keyboard codes. +# 2) A description with suffix "-7b" for 7 bits/character communications. +# This description must use the NON-DEFAULT native keyboard language. + +# Unmodified fkeys (kf1-kf11), Shift fkeys (kf12-kf22), Ctrl fkeys (kf23-kf33), +# Ctrl/Shift fdkeys (kf34-kf44). + +dgkeys+8b|Private entry describing DG terminal 8-bit ANSI mode special keys, + ka1=\233020z, ka3=\233021z, kc1=\233022z, kc3=\233023z, + kclr=\2332J, kcub1=\233D, kcud1=\233B, kcuf1=\233C, + kcuu1=\233A, kel=\233K, kf1=\233001z, kf10=\233010z, + kf11=\233011z, kf12=\233012z, kf13=\233013z, + kf14=\233014z, kf15=\233000z, kf16=\233101z, + kf17=\233102z, kf18=\233103z, kf19=\233104z, + kf2=\233002z, kf20=\233105z, kf21=\233106z, + kf22=\233107z, kf23=\233108z, kf24=\233109z, + kf25=\233110z, kf26=\233111z, kf27=\233112z, + kf28=\233113z, kf29=\233114z, kf3=\233003z, + kf30=\233100z, kf31=\233201z, kf32=\233202z, + kf33=\233203z, kf34=\233204z, kf35=\233205z, + kf36=\233206z, kf37=\233207z, kf38=\233208z, + kf39=\233209z, kf4=\233004z, kf40=\233210z, + kf41=\233211z, kf42=\233212z, kf43=\233213z, + kf44=\233214z, kf45=\233200z, kf46=\233301z, + kf47=\233302z, kf48=\233303z, kf49=\233304z, + kf5=\233005z, kf50=\233305z, kf51=\233306z, + kf52=\233307z, kf53=\233308z, kf54=\233309z, + kf55=\233310z, kf56=\233311z, kf57=\233312z, + kf58=\233313z, kf59=\233314z, kf6=\233006z, + kf60=\233300z, kf7=\233007z, kf8=\233008z, kf9=\233009z, + khome=\233H, kprt=\233i, + +dgkeys+7b|Private entry describing DG terminal 7-bit ANSI mode special keys, + ka1=\E[020z, ka3=\E[021z, kc1=\E[022z, kc3=\E[023z, + kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kel=\E[K, kf1=\E[001z, kf10=\E[010z, kf11=\E[011z, + kf12=\E[012z, kf13=\E[013z, kf14=\E[014z, kf15=\E[000z, + kf16=\E[101z, kf17=\E[102z, kf18=\E[103z, kf19=\E[104z, + kf2=\E[002z, kf20=\E[105z, kf21=\E[106z, kf22=\E[107z, + kf23=\E[108z, kf24=\E[109z, kf25=\E[110z, kf26=\E[111z, + kf27=\E[112z, kf28=\E[113z, kf29=\E[114z, kf3=\E[003z, + kf30=\E[100z, kf31=\E[201z, kf32=\E[202z, kf33=\E[203z, + kf34=\E[204z, kf35=\E[205z, kf36=\E[206z, kf37=\E[207z, + kf38=\E[208z, kf39=\E[209z, kf4=\E[004z, kf40=\E[210z, + kf41=\E[211z, kf42=\E[212z, kf43=\E[213z, kf44=\E[214z, + kf45=\E[200z, kf46=\E[301z, kf47=\E[302z, kf48=\E[303z, + kf49=\E[304z, kf5=\E[005z, kf50=\E[305z, kf51=\E[306z, + kf52=\E[307z, kf53=\E[308z, kf54=\E[309z, kf55=\E[310z, + kf56=\E[311z, kf57=\E[312z, kf58=\E[313z, kf59=\E[314z, + kf6=\E[006z, kf60=\E[300z, kf7=\E[007z, kf8=\E[008z, + kf9=\E[009z, khome=\E[H, kprt=\E[i, + +dgkeys+11|Private entry describing 11 minimal-subset DG mode special keys, + kclr=^L, kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kel=^K, + kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^a, kf13=^^b, kf14=^^c, + kf15=^^d, kf16=^^e, kf17=^^f, kf18=^^g, kf19=^^h, kf2=^^r, + kf20=^^i, kf21=^^j, kf22=^^k, kf23=^^1, kf24=^^2, kf25=^^3, + kf26=^^4, kf27=^^5, kf28=^^6, kf29=^^7, kf3=^^s, kf30=^^8, + kf31=^^9, kf32=^^:, kf33=^^;, kf34=^^!, kf35=^^", kf36=^^#, + kf37=^^$, kf38=^^%%, kf39=^^&, kf4=^^t, kf40=^^', kf41=^^(, + kf42=^^), kf43=^^*, kf44=^^+, kf5=^^u, kf6=^^v, kf7=^^w, + kf8=^^x, kf9=^^y, khome=^H, + +dgkeys+15|Private entry describing 15 DG mode special keys, + kHOM=^^^H, kLFT=^^^Y, kRIT=^^^X, ka1=^^\\, ka3=^^], kc1=^^\^, + kc3=^^_, kf1=^^q, kf10=^^z, kf11=^^{, kf12=^^|, kf13=^^}, + kf14=^^~, kf15=^^p, kf16=^^a, kf17=^^b, kf18=^^c, kf19=^^d, + kf2=^^r, kf20=^^e, kf21=^^f, kf22=^^g, kf23=^^h, kf24=^^i, + kf25=^^j, kf26=^^k, kf27=^^l, kf28=^^m, kf29=^^n, kf3=^^s, + kf30=^^`, kf31=^^1, kf32=^^2, kf33=^^3, kf34=^^4, kf35=^^5, + kf36=^^6, kf37=^^7, kf38=^^8, kf39=^^9, kf4=^^t, kf40=^^:, + kf41=^^;, kf42=^^<, kf43=^^=, kf44=^^>, kf45=^^0, kf46=^^!, + kf47=^^", kf48=^^#, kf49=^^$, kf5=^^u, kf50=^^%%, kf51=^^&, + kf52=^^', kf53=^^(, kf54=^^), kf55=^^*, kf56=^^+, kf57=^^\,, + kf58=^^-, kf59=^^., kf6=^^v, kf60=^^\s, kf7=^^w, kf8=^^x, + kf9=^^y, + +# Data General color terminals use the "Tektronix" color model. The total +# number of colors varies with the terminal model, as does support for +# attributes used in conjunction with color. + +# Removed u7, u8 definitions since they conflict with tack: +# Preserve user-defined colors in at least some cases. +# u7=^^Fh, +# Default is ACM mode. +# u8=^^F}20^^Fi^^F}21, +# +dgunix+fixed|Fixed color info for DG D430C terminals in DG-UNIX mode, + bce, + colors#16, ncv#53, pairs#0x100, + op=\036Ad\036Bd, + setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1 + %{4}%&%t%{1}%|%;%;%{48}%+%c, + setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1 + %{4}%&%t%{1}%|%;%;%{48}%+%c, + setb=\036B%p1%{48}%+%c, setf=\036A%p1%{48}%+%c, + +dg+fixed|Fixed color info for DG D430C terminals in DG mode, + use=dgunix+fixed, + +# Video attributes are coordinated using static variables set by "sgr", then +# checked by "op", "seta[bf]", and "set[bf]" to refresh the attribute settings. +# (D=dim, U=underline, B=blink, R=reverse.) +dg+color8|Color info for Data General D220 and D230C terminals in ANSI mode, + bce, + colors#8, ncv#16, pairs#64, + op=\E[%?%gD%t2;%;%?%gU%t4;%;%?%gB%t5;%;%?%gR%t7;%;m, + setab=\E[4%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, + setaf=\E[3%p1%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, + setb=\E[4%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%; + %d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, + setf=\E[3%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1%{4}%&%t%{1}%|%; + %d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%;%?%gR%t;7%;m, + +dg+color|Color info for Data General D470C terminals in ANSI mode, + colors#16, ncv#53, pairs#0x100, + setab=\E[%?%p1%{8}%<%t4%p1%e=%p1%{2}%&%?%p1%{1}%&%t%{4}%|%; + %?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t + ;5%;%?%gR%t;7%;m, + setaf=\E[%?%p1%{8}%<%t3%p1%e<%p1%{2}%&%?%p1%{1}%&%t%{4}%|%; + %?%p1%{4}%&%t%{1}%|%;%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t + ;5%;%?%gR%t;7%;m, + setb=\E[%?%p1%{8}%<%t4%e=%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%? + %p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%; + %?%gR%t;7%;m, + setf=\E[%?%p1%{8}%<%t3%e<%;%p1%{2}%&%?%p1%{1}%&%t%{4}%|%;%? + %p1%{4}%&%t%{1}%|%;%d%?%gD%t;2%;%?%gU%t;4%;%?%gB%t;5%; + %?%gR%t;7%;m, + 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, + +dgmode+color|Color info for Data General D470C terminals in DG mode, + colors#16, pairs#0x100, + setab=\036B%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1 + %{4}%&%t%{1}%|%;%;%{48}%+%c, + setaf=\036A%p1%?%p1%{8}%<%t%{2}%&%?%p1%{1}%&%t%{4}%|%;%?%p1 + %{4}%&%t%{1}%|%;%;%{48}%+%c, + 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}%* + %{1000}%/%02X, + oc=\036RG01A00FF00000000\036RG01B00000000FF00 + \036RG01C007F00000000\036RG01D000000007F00, + op=\036RF4831A\036RF2E31B\036RF1D31C\036RF3F31D, + scp=\036RG2%p1%02X, + +# Colors are in the order: normal, reverse, dim, dim + reverse. +dg+ccc|Configurable color info for DG D430C terminals in DG mode, + bce, ccc, + colors#52, ncv#53, pairs#26, + initp=\036RG0%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c%p2%{255} + %*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c + %p3%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga%{16}%m + %{48}%+%c%p4%{255}%*%{1000}%/%Pa%ga%{16}%/%{48}%+%c%ga + %{16}%m%{48}%+%c%p5%{255}%*%{1000}%/%Pa%ga%{16}%/%{48} + %+%c%ga%{16}%m%{48}%+%c%p6%{255}%*%{1000}%/%Pa%ga%{16} + %/%{48}%+%c%ga%{16}%m%{48}%+%c%p7%{255}%*%{1000}%/%Pa + %ga%{16}%/%{48}%+%c%ga%{16}%m%{48}%+%c, + oc=\036RG01:00??00000000\036RG01;00000000??00\036RG01<007?00 + 000000\036RG01=000000007?00, + op=\036RF4831:\036RF2>31;\036RF1=31<\036RF3?31=, + scp=\036RG2%p1%{16}%/%{48}%+%c%p1%{16}%m%{48}%+%c, + +# The generic DG terminal type (an 8-bit-clean subset of the 6053) +# Initialization string 1 sets: +# ^R - vertical scrolling enabled +# ^C - blinking enabled +dg-generic|generic Data General terminal in DG mode, + am, bw, msgr, xon, + cols#80, lines#24, + bel=^G, blink=^N, clear=^L, cr=\r, cub1=^Y, cud1=^Z, cuf1=^X, + cup=\020%p2%c%p1%c, cuu1=^W, dim=^\, el=^K, ind=\n, is1=^R^C, + mc0=^Q, nel=\n, rmso=^], rmul=^U, sgr0=^O^U^], smso=^\, + smul=^T, use=dgkeys+11, + +# According to the 4.4BSD termcap file, the dg200 <cup> should be the +# termcap equivalent of \020%p2%{128}%+%c%p1%{128}%+%c (in termcap +# notation that's "^P%r%+\200%+\200"). Those \200s are suspicious, +# maybe they were originally nuls (which would fit). + +dg200|Data General DASHER 200, + OTbs, am, bw, + cols#80, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^Y, cud1=^Z, cuf1=^X, + cup=\020%p2%c%p1%c, cuu1=^W, el=^K, home=^H, ind=\n, + kcub1=^Y, kcud1=^Z, kcuf1=^X, kcuu1=^W, kf0=^^z, kf1=^^q, + kf2=^^r, kf3=^^s, kf4=^^t, kf5=^^u, kf6=^^v, kf7=^^w, kf8=^^x, + kf9=^^y, khome=^H, lf0=f10, nel=\n, rmso=^^E, rmul=^U, + smso=^^D, smul=^T, + +# Data General 210/211 (and 410?) from Lee Pearson (umich!lp) via BRL +dg210|dg-ansi|Data General 210/211, + am, + cols#80, lines#24, + OTnl=\E[B, clear=\E[2J, cub1=\E[D, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, +# From: Peter N. Wan <ihnp4!gatech!gacsr!wan> +# courtesy of Carlos Rucalde of Vantage Software, Inc. +# (dg211: this had <cup=\020%r%.%>., which was an ancient termcap hangover. +# I suspect the d200 function keys actually work on the dg211, check it out.) +dg211|Data General d211, + cnorm=^L, cvvis=^L^R, ht=^I, ind@, kbs=^Y, kf0@, kf1@, kf2@, kf3@, + kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, lf0@, nel=\r^Z, rmcup=^L, + rmso=\036E$<0/>, smcup=^L^R, smso=\036D$<5/>, use=dg200, + +# dg450 from Cornell (not official) +dg450|dg6134|Data General 6134, + cub1@, cuf1=^X, use=dg200, + +# Not official... +# Note: lesser Dasher terminals will not work with vi because vi insists upon +# having a command to move straight down from any position on the bottom line +# and scroll the screen up, or a direct vertical scroll command. The 460 and +# above have both, the D210/211, for instance, has neither. We must use ANSI +# mode rather than DG mode because standard UNIX tty drivers assume that ^H is +# backspace on all terminals. This is not so in DG mode. +# (dg460-ansi: removed obsolete ":kn#6:"; also removed ":mu=\EW:", on the +# grounds that there is no matching ":ml:" +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, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, 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, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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, khome=\E[H, 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, + 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, u6=\E[%d;%dR, + u7=\E[6n, u8=\E[5n, u9=\E[0n, +# From: Wayne Throop <mcnc!rti-sel!rtp47!throopw> (not official) +# Data General 605x +# Ought to work for a Model 6242, Type D210 as well as a 605x. +# Note that the cursor-down key transmits ^Z. Job control users, beware! +# This also matches a posted description of something called a `Dasher 100' +# so there's a dg100 alias here. +# (dg6053: the 4.4BSD file had <cub1=^H>, <cud1=^J>, <cuf1=^S>. -- esr) +dg6053-old|dg100|Data General 6053, + OTbs, am, bw, ul, + cols#80, lines#24, + OTbc=^Y, bel=^G, clear=^L, cnorm=^L, cr=\r, cub1=^Y, cud1=^Z, + cuf1=^X, cup=\020%p2%c%p1%c, cuu1=^W, cvvis=^L^R, el=^K, + home=^H, ht=^I, is2=^R, kbs=^Y, kcub1=^Y, kcud1=^Z, kcuf1=^X, + kcuu1=^W, kf0=^^q, kf1=^^r, kf2=^^s, kf3=^^t, kf4=^^u, kf5=^^v, + kf6=^^w, kf7=^^x, kf8=^^y, kf9=^^z, khome=^H, rmcup=^L, + rmso=\0^^E, rmul=^U, smcup=^L^R, smso=\0\0\0\0\0\036D, + smul=^T, + +# (Some performance can be gained over the generic DG terminal type) +dg6053|6053|6053-dg|dg605x|605x|605x-dg|d2|d2-dg|Data General DASHER 6053, + xon@, + home=\020\0\0, ll=^P\0^W, use=dg-generic, + +# Like 6053, but adds reverse video and more keypad and function keys. +d200|d200-dg|Data General DASHER D200, + bold=^^D^T, home@, ll@, rev=^^D, rmso=^^E^], + sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4 + %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;, + sgr0=^O^U^]^^E, smso=^^D^\, use=dgkeys+15, use=dg6053, + +# DASHER D210 series terminals in ANSI mode. +# Reverse video, no insert/delete character/line, 7 bits/character only. +# +# Initialization string 1 sets: +# <0 - scrolling enabled +# <1 - blink enabled +# <4 - print characters regardless of attributes +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, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, 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, + 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=dgkeys+7b, + +# DASHER D210 series terminals in DG mode. +# Like D200, but adds clear to end-of-screen and needs XON/XOFF. +d210-dg|d214-dg|Data General DASHER D210 series in DG mode, + xon, + ed=^^FF, use=d200-dg, + +# DASHER D211 series terminals in ANSI mode. +# Like the D210, but with 8-bit characters and local printer support. +# +# Initialization string 2 sets: +# \E[2;1;1;1v +# 2;1 - 8 bit operations +# 1;1 - 8 bit (international) keyboard language +# \E(B - default primary character set (U.S. ASCII) +# \E)4 - default secondary character set (international) +# ^O - primary character set +# +d211|d215|Data General DASHER D211 series, + km, + is2=\E[2;1;1;1v\E(B\E)4\017, mc0=\E[i, use=dgkeys+8b, + use=d210, + +# Initialization string 2 sets: +# \E[2;0;1;0v +# 2;0 - 7 bit operations +# 1;0 - 7 bit (native) keyboard language +# \E(0 - default character set (the keyboard native language) +# ^O - primary character set +d211-7b|d215-7b|Data General DASHER D211 series in 7 bit mode, + km@, + is2=\E[2;0;1;0v\E(0\017, use=dgkeys+7b, use=d211, + +# Like the D210 series, but adds support for 8-bit characters. +# +# Reset string 2 sets: +# ^^N - secondary character set +# ^^FS0> - 8 bit international character set +# ^^O - primary character set +# ^^FS00 - default character set (matching the native keyboard language) +# +d211-dg|d215-dg|Data General DASHER D211 series in DG mode, + km, + rs2=\036N\036FS0>\036O\036FS00, use=d210-dg, + +d216-dg|d216e-dg|d216+dg|d216e+dg|d217-dg|Data General DASHER D216 series in DG mode, + use=d211-dg, + +# Enhanced DG mode with changes to be more UNIX compatible. +d216-unix|d216e-unix|d216+|d216e+|Data General DASHER D216+ in DG-UNIX mode, + mc5i, + it#8, + acsc=a\177j$k"l!m#n)q+t'u&v(w%x*, blink=^^PI, + clear=^^PH, cub1=^^PD, cud1=^^PB, cuf1=^^PC, cuu1=^^PA, + el=^^PE, home=^^PF, hpa=\020%p1%c\177, ht=^I, ind=\n, + is1=^R^C^^P@1, is3=^^Fz0, kHOM=^^Pf, kLFT=^^Pd, kPRT=^^P1, + kRIT=^^Pc, kclr=^^PH, kcub1=^^PD, kcud1=^^PB, kcuf1=^^PC, + kcuu1=^^PA, kel=^^PE, khome=^^PF, kprt=^^P0, mc0=^^F?9, + mc4=^^Fa, mc5=^^F`, rmacs=\036FS00, + rs2=\036N\036FS0E\036O\036FS00, + sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%; + \036P%?%p4%tI%eJ%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t1 + 1%e00%;, + sgr0=\036PJ\025\035\036E\036FS00, smacs=\036FS11, + vpa=\020\177%p1%c, use=dgkeys+15, use=d216-dg, +d216-unix-25|d216+25|Data General DASHER D216+ in DG-UNIX mode with 25 lines, + lines#25, + is3=^^Fz2, use=d216+, + +d217-unix|Data General DASHER D217 in DG-UNIX mode, + use=d216-unix, +d217-unix-25|Data General DASHER D217 in DG-UNIX mode with 25 lines, + use=d216-unix-25, + +# DASHER D220 color terminal in ANSI mode. +# Like the D470C but with fewer colors and screen editing features. +# +# Initialization string 1 sets: +# \E[<0;<1;<4l +# <0 - scrolling enabled +# <1 - blink enabled +# <4 - print characters regardless of attributes +# \E[m - all attributes off +# Reset string 1 sets: +# \Ec - initial mode defaults (RIS) +# +d220|Data General DASHER D220, + mc5i@, + dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, + use=dg+color8, use=d470c, + +d220-7b|Data General DASHER D220 in 7 bit mode, + mc5i@, + dl@, dl1@, il@, il1@, is1=\E[<0;<1;<4l\E[m, mc4@, mc5@, rs1=\Ec, + use=dg+color8, use=d470c-7b, + +# Initialization string 3 sets: +# - default cursor (solid rectangle) +# Reset string 2 sets: +# ^^N - secondary character set +# ^^FS0> - 8 bit international character set +# ^^O - primary character set +# ^^FS00 - default character set (matching the native keyboard language) +# +d220-dg|Data General DASHER D220 color terminal in DG mode, + mc5i@, + dl1@, home@, il1@, is2@, is3=^^FQ2, ll@, mc4@, mc5@, rs1@, + rs2=\036N\036FS0>\036O\036FS00, use=dgmode+color8, + use=d470c-dg, + +# DASHER D230C color terminal in ANSI mode. +# Like the D220 but with minor ANSI compatibility improvements. +# +d230c|d230|Data General DASHER D230C, + blink=\E[5;50m, bold=\E[4;7;50m, dim=\E[2;50m, nel=\r\n, + rev=\E[7;50m, rmkx=\E[2;1v, rmso=\E[50m, rmul=\E[50m, + sgr=\E[%?%p1%p3%|%p6%|%t7;%{1}%e%{0}%;%PR%?%p4%t5;%{1}%e%{0} + %;%PB%?%p2%p6%|%t4;%{1}%e%{0}%;%PU%?%p1%p5%|%t2;%{1}%e + %{0}%;%PD50m\E)%?%p9%t6\016%e4\017%;, + sgr0=\E[50m\E)4\017, smkx=\E[2;0v, smso=\E[2;7;50m, + smul=\E[4;50m, use=dgkeys+7b, use=d220, + +d230c-dg|d230-dg|Data General DASHER D230C in DG mode, + use=d220-dg, + +# DASHER D400/D450 series terminals. +# These add intelligent features like insert/delete to the D200 series. +# +# Initialization string 2 sets: +# ^^FQ2 - default cursor (solid rectangle) +# ^^FW - character protection disabled +# ^^FJ - normal (80 column) mode +# ^^F\^ - horizontal scrolling enabled (for alignment) +# ^^FX004? - margins at columns 0 and 79 +# ^^F] - horizontal scrolling disabled +# ^^O - primary character set +# ^^FS00 - default character set (the keyboard native language) +# - (should reset scrolling regions, but that glitches the screen) +# Reset string 1 sets: +# ^^FA - all terminal defaults except scroll rate +# Reset string 2 sets: +# ^^F] - horizontal scrolling disabled +# ^^FT0 - jump scrolling +# +d400|d400-dg|d450|d450-dg|Data General DASHER D400/D450 series, + mc5i, + acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=^^FQ0, cnorm=^^FQ2, + dch1=^^K, dl1=^^FI, enacs=\036N\036FS11\036O, home=^^FG, + hpa=\020%p1%c\177, ich1=^^J, il1=^^FH, + is2=\036FQ2\036FW\036FJ\036F\^\036FX004?\036F]\036O + \036FS00, + ll=^^FG^W, mc4=^^Fa, mc5=^^F`, ri=^^I, rmacs=^^O, rs1=^^FA, + rs2=\036F]\036FT0, + sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4 + %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036%?%p9%tN%eO%;, + sgr0=^O^U^]^^E^^O, smacs=^^N, vpa=\020\177%p1%c, + use=d210-dg, + +# DASHER D410/D460 series terminals in ANSI mode. +# These add a large number of intelligent terminal features. +# +# Initialization string 1 sets: +# \E[<0;<1;<2;<4l +# <0 - scrolling enabled +# <1 - blink enabled +# <2 - horizontal scrolling enabled (for alignment) +# <4 - print characters regardless of attributes +# \E[5;0v - normal (80 column) mode +# \E[1;1;80w - margins at columns 1 and 80 +# \E[1;6;<2h +# 1 - print all characters even if protected +# 6 - character protection disabled +# <2 - horizontal scrolling disabled +# - (should reset scrolling regions, but that glitches the screen) +# +# Initialization string 2 sets: +# \E[3;2;2;1;1;1v +# 3;2 - default cursor (solid rectangle) +# 2;1 - 8 bit operations +# 1;1 - international keyboard language +# \E(B - default primary character set (U.S. ASCII) +# \E)4 - default secondary character set (international) +# ^O - primary character set +# +# Reset string 1 sets: +# \Ec - initial mode defaults (RIS) +# \E[<2h - horizontal scrolling disabled +# +# Reset string 2 sets: +# \E[4;0;2;1;1;1v +# 4;0 - jump scrolling +# 2;1 - 8 bit operations +# 1;1 - 8 bit (international) keyboard language +# \E(B - default primary character set (U.S. ASCII) +# \E)4 - default secondary character set (international) +# +d410|d411|d460|d461|Data General DASHER D410/D460 series, + mc5i, + acsc=j$k"l!m#n)q+t'u&v(w%x*, civis=\E[3;0v, + cnorm=\E[3;2v, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, + is1=\E[<0;<1;<2;<4l\E[5;0v\E[1;1;80w\E[1;6;<2h, + is2=\E[3;2;2;1;1;1v\E(B\E)4\017, mc4=\E[4i, mc5=\E[5i, + ri=\EM, rmacs=\E)4\017, rs1=\Ec\E[<2h, + rs2=\E[4;0;2;1;1;1v\E(B\E)4, + sgr=\E[%?%p1%t2;7%;%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p1%p5 + %|%t2;%;%?%p6%t4;7;%;m\E)%?%p9%t6\016%e4\017%;, + sgr0=\E[m\E)4\017, smacs=\E)6\016, use=d211, + +# Initialization string 2 sets: +# \E[3;2;2;0;1;0v +# 3;2 - default cursor (solid rectangle) +# 2;0 - 7 bit operations +# 1;0 - 7 bit (native) keyboard language +# \E(0 - default character set (the keyboard native language) +# ^O - primary character set +# +# Reset string 2 sets: +# \E[4;0;2;0;1;0v +# 4;0 - jump scrolling +# 2;0 - 7 bit operations +# 1;0 - 7 bit (native) keyboard language +# \E(0 - default character set (the keyboard native language) +# +d410-7b|d411-7b|d460-7b|d461-7b|Data General DASHER D410/D460 series in 7 bit mode, + km@, + enacs=\E)6, is2=\E[3;2;2;0;1;0v\E(0\017, rmacs=^O, + rs2=\E[4;0;2;0;1;0v\E(0, + sgr=\E[%?%p1%p5%|%t2;%;%?%p2%p6%|%t4;%;%?%p1%p3%|%p6%|%t7;%; + %?%p4%t5;%;m%?%p9%t\016%e\017%;, + sgr0=\E[m\017, smacs=^N, use=dgkeys+7b, use=d410, + +d410-dg|d460-dg|d411-dg|d461-dg|Data General DASHER D410/D460 series in DG mode, + km, + enacs@, rmacs=\036FS00, + sgr=\036%?%p1%p3%|%p6%|%tD%eE%;%?%p2%p6%|%t\024%e\025%;%?%p4 + %t\016%e\017%;%?%p1%p5%|%t\034%e\035%;\036FS%?%p9%t11%e0 + 0%;, + sgr0=\017\025\035\036E\036FS00, smacs=\036FS11, + use=d400-dg, + +# DASHER D410/D460 series terminals in wide (126 columns) ANSI mode. +# +# Initialization string 1 sets: +# \E[<0;<1;<2;<4l +# <0 - scrolling enabled +# <1 - blink enabled +# <2 - horizontal scrolling enabled (for alignment) +# <4 - print characters regardless of attributes +# \E[5;1v - compressed (135 column) mode +# \E[1;1;126 - margins at columns 1 and 126 +# \E[1;6;<2h +# 1 - print all characters even if protected +# 6 - character protection disabled +# <2 - horizontal scrolling disabled +# - (should reset scrolling regions, but that glitches the screen) +# +# Reset string 1 sets: +# \Ec - initial mode defaults (RIS) +# \E[5;1v - compressed (135 column) mode +# \E[1;1;126w - margins at columns 1 and 126 +# \E[<2h - horizontal scrolling disabled +# +d410-w|d411-w|d460-w|d461-w|Data General DASHER D410/D460 series in wide mode, + cols#126, + is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, + rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410, + +d410-7b-w|d411-7b-w|d460-7b-w|d461-7b-w|Data General DASHER D410/D460 series in wide 7 bit mode, + cols#126, + is1=\E[<0;<1;<2;<4l\E[5;1v\E[1;1;126w\E[1;6;<2h, + rs1=\Ec\E[5;1v\E[1;1;126w\E[<2h, use=d410-7b, + +d412-dg|d462-dg|d462e-dg|d412+dg|d462+dg|d413-dg|d463-dg|Data General DASHER D412/D462 series in DG mode, + use=d410-dg, + +# These add intelligent features like scrolling regions. +d412-unix|d462-unix|d412+|d462+|Data General DASHER D412+/D462+ series in Unix mode, + civis=^^FQ0, clear=^^FE, cnorm=^^FQ5, + cup=\036FP%p2%2.2X%p1%2.2X, dch1=^^K, dl1=^^FI, + home=^^FG, hpa=\036FP%p1%2.2XFF, ich1=^^J, il1=^^FH, + is2=\036FQ5\036FW\036FJ\036F\^\036FX004F\036O + \036FS00, + ll=\036FG\036PA, mc0=^A, rc=\036F}11, ri=^^I, + rs1=\036FA\036FT0, rs2=^^P@1, sc=\036F}10, + vpa=\036FPFF%p1%2.2X, + wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2 + %>%t000%;\036FX%p3%2.2X%p4%2.2X, + use=d216+, +d412-unix-w|d462-unix-w|d412+w|d462+w|Data General DASHER D412+/D462+ series in wide Unix mode, + cols#132, + is2=\036FQ5\036FW\036FK\036F\^\036FX0083\036O + \036FS00, + rs2=\036P@1\036FK\036FX0083, + wind=\036FB%?%p1%t%p1%2.2X1%;%p2%p1%-%{1}%+%2.2X1%?%{23}%p2 + %>%t001%;\036FX%p3%2.2X%p4%2.2X, + use=d412-unix, +d412-unix-25|d462-unix-25|d412+25|d462+25|Data General DASHER D412+/D462+ series in Unix mode with 25 lines, + lines#25, + is3=^^Fz2, + wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{24}%p2 + %>%t000%;\036FX%p3%2.2X%p4%2.2X, + use=d462+, +d412-unix-s|d462-unix-s|d412+s|d462+s|Data General DASHER D412+/D462+ in Unix mode with status line, + eslok, hs, + clear=\036FG\036PH, fsl=\036F}01\022, + is3=\036Fz2\036F}00\036FB180000\036F}01, ll@, + tsl=\036F}00\036FP%p1%2.2X18\036PG, + wind=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2 + %>%t%{23}%p2%-%2.2X0%;000\036FX%p3%2.2X%p4%2.2X, + use=d462+, + +# Relative cursor motions are confined to the current window, +# which is not what the scrolling region specification expects. +# Thus, relative vertical cursor positioning must be deleted. +d412-unix-sr|d462-unix-sr|d412+sr|d462+sr|Data General DASHER D412+/D462+ in Unix mode with scrolling region, + csr=\036FB%?%p1%t%p1%2.2X0%;%p2%p1%-%{1}%+%2.2X0%?%{23}%p2%> + %t000%;, + cud1@, cuu1@, ll@, use=d462+, + +d413-unix|d463-unix|Data General DASHER D413/D463 series in DG-UNIX mode, + use=d412-unix, +d413-unix-w|d463-unix-w|Data General DASHER D413/D463 series in wide DG-UNIX mode, + use=d412-unix-w, +d413-unix-25|d463-unix-25|Data General DASHER D413/D463 series in DG-UNIX mode with 25 lines, + use=d412-unix-25, +d413-unix-s|d463-unix-s|Data General DASHER D413/D463 in DG-UNIX mode with status line, + use=d412-unix-s, +d413-unix-sr|d463-unix-sr|Data General DASHER D413/D463 in DG-UNIX mode with scrolling region, + use=d412-unix-sr, + +d414-unix|d464-unix|Data General D414/D464 in DG-UNIX mode, + use=d413-unix, +d414-unix-w|d464-unix-w|Data General D414/D464 in wide DG-UNIX mode, + use=d413-unix-w, +d414-unix-25|d464-unix-25|Data General D414/D464 in DG-UNIX mode with 25 lines, + use=d413-unix-25, +d414-unix-s|d464-unix-s|Data General D414/D464 in DG-UNIX mode with status line, + use=d413-unix-s, +d414-unix-sr|d464-unix-sr|Data General D414/D464 in DG-UNIX mode with scrolling region, + use=d413-unix-sr, + +d430c-dg|d430-dg|Data General D430C in DG mode, + use=d413-dg, use=dg+fixed, +d430c-dg-ccc|d430-dg-ccc|Data General D430C in DG mode with configurable colors, + use=d413-dg, use=dg+ccc, + +d430c-unix|d430-unix|Data General D430C in DG-UNIX mode, + use=d413-unix, use=dgunix+fixed, +d430c-unix-w|d430-unix-w|Data General D430C in wide DG-UNIX mode, + use=d413-unix-w, use=dgunix+fixed, +d430c-unix-25|d430-unix-25|Data General D430C in DG-UNIX mode with 25 lines, + use=d413-unix-25, use=dgunix+fixed, +d430c-unix-s|d430-unix-s|Data General D430C in DG-UNIX mode with status line, + use=d413-unix-s, use=dgunix+fixed, +d430c-unix-sr|d430-unix-sr|Data General D430C in DG-UNIX mode with scrolling region, + use=d413-unix-sr, use=dgunix+fixed, +d430c-unix-ccc|d430-unix-ccc|Data General D430C in DG-UNIX mode with configurable colors, + use=d413-unix, use=dgunix+ccc, +d430c-unix-w-ccc|d430-unix-w-ccc|Data General D430C in wide DG-UNIX mode with configurable colors, + use=d413-unix-w, use=dgunix+ccc, +d430c-unix-25-ccc|d430-unix-25-ccc|Data General D430C in DG-UNIX mode with 25 lines and configurable colors, + use=d413-unix-25, use=dgunix+ccc, +d430c-unix-s-ccc|d430-unix-s-ccc|Data General D430C in DG-UNIX mode with status line and configurable colors, + use=d413-unix-s, use=dgunix+ccc, +d430c-unix-sr-ccc|d430-unix-sr-ccc|Data General D430C in DG-UNIX mode with scrolling region and configurable colors, + use=d413-unix-sr, use=dgunix+ccc, + +# DASHER D470C color terminal in ANSI mode. +# Like the D460 but with 16 colors and without a compressed mode. +# +# Initialization string 1 sets: +# \E[<0;<1;<2;<4l +# <0 - scrolling enabled +# <1 - blink enabled +# <2 - horizontal scrolling enabled (for alignment) +# <4 - print characters regardless of attributes +# \E[1;1;80w - margins at columns 1 and 80 +# \E[1;6;<2h +# 1 - print all characters even if protected +# 6 - character protection disabled +# <2 - horizontal scrolling disabled +# - (should reset scrolling regions, but that glitches the screen) +# +d470c|d470|Data General DASHER D470C, + is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, + sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t + 2;7;%;%?%p5%t2;%;m\E)%?%p9%t6\016%e4\017%;, + use=dg+color, use=d460, + +d470c-7b|d470-7b|Data General DASHER D470C in 7 bit mode, + is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, + sgr=\E[%?%p3%t7;%;%?%p4%t5;%;%?%p2%t4;%;%?%p6%t4;7;%;%?%p1%t + 2;7;%;%?%p5%t2;%;m%?%p9%t\016%e\017%;, + use=dg+color, use=d460-7b, + +# Initialization string 2 sets: +# ^^FQ2 - default cursor (solid rectangle) +# ^^FW - character protection disabled +# ^^F\^ - horizontal scrolling enabled (for alignment) +# ^^FX004? - margins at columns 0 and 79 +# ^^F] - horizontal scrolling disabled +# ^^O - primary character set +# ^^FS00 - default character set (the keyboard native language) +# - (should reset scrolling regions, but that glitches the screen) +# +d470c-dg|d470-dg|Data General DASHER D470C in DG mode, + is2=\036FQ2\036FW\036F\^\036FX004?\036F]\036O + \036FS00, + use=dgmode+color, use=d460-dg, + +# DASHER D555 terminal in ANSI mode. +# Like a D411, but has an integrated phone. +d555|Data General DASHER D555, + use=d411, +d555-7b|Data General DASHER D555 in 7-bit mode, + use=d411-7b, +d555-w|Data General DASHER D555 in wide mode, + use=d411-w, +d555-7b-w|Data General DASHER D555 in wide 7-bit mode, + use=d411-7b-w, +d555-dg|Data General DASHER D555 series in DG mode, + use=d411-dg, + +# DASHER D577 terminal in ANSI mode. +# Like a D411, but acts as a keyboard for serial printers ("KSR" modes). +d577|Data General DASHER D577, + use=d411, +d577-7b|Data General DASHER D577 in 7-bit mode, + use=d411-7b, +d577-w|Data General DASHER D577 in wide mode, + use=d411-w, +d577-7b-w|Data General DASHER D577 in wide 7-bit mode, + use=d411-7b-w, + +d577-dg|d578-dg|Data General DASHER D577/D578 series in DG mode, + use=d411-dg, + +# DASHER D578 terminal. +# Like a D577, but without compressed mode; like a D470C in this respect. +# +# Initialization string 1 sets: +# \E[<0;<1;<2;<4l +# <0 - scrolling enabled +# <1 - blink enabled +# <2 - horizontal scrolling enabled (for alignment) +# <4 - print characters regardless of attributes +# \E[1;1;80w - margins at columns 1 and 80 +# \E[1;6;<2h +# 1 - print all characters even if protected +# 6 - character protection disabled +# <2 - horizontal scrolling disabled +# - (should reset scrolling regions, but that glitches the screen) +# +d578|Data General DASHER D578, + is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577, +d578-7b|Data General DASHER D578 in 7-bit mode, + is1=\E[<0;<1;<2;<4l\E[1;1;80w\E[1;6;<2h, use=d577-7b, + +#### Datamedia (dm) +# +# Datamedia was headquartered in Nashua, New Hampshire until it went +# out of business in 1993, but the ID plates on the terminals referred +# to the factory in Pennsauken, NJ. The factory was sold to a PCB board +# manufacturer which threw out all information about the terminals. +# + +cs10|colorscan|Datamedia Color Scan 10, + msgr, + cols#80, lines#24, + bel=^G, clear=\E[H\E[J, cr=\r, cub1=^H, cud1=\n, cuf1=\E[C, + cup=\E[%i%p1%02d;%p2%02dH, cuu1=\E[A, ed=\E[J, el=\E[K, + 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, +cs10-w|Datamedia Color Scan 10 with 132 columns, + cols#132, + cup=\E[%i%p1%02d;%p2%03dH, use=cs10, + +# (dm1520: removed obsolete ":ma=^\ ^_^P^YH:" -- esr) +dm1520|dm1521|Datamedia 1520, + OTbs, am, xenl, + cols#80, it#8, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^\, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], + home=^Y, ht=^I, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^\, kcuu1=^_, + khome=^Y, +# dm2500: this terminal has both <ich> and <smir>. Applications using +# termcap/terminfo directly (rather than through ncurses) might be confused. +dm2500|datamedia2500|Datamedia 2500, + OTbs, OTnc, + cols#80, lines#24, + bel=^G, clear=^^^^^?, cub1=^H, cud1=\n, cuf1=^\, + cup=\014%p2%{96}%^%c%p1%{96}%^%c, cuu1=^Z, + dch1=\020\010\030\035$<10*>, + dl1=\020\032\030\035$<10*>, el=^W, home=^B, + ich1=\020\034\030\035$<10*>, + il1=\020\n\030\035\030\035$<15>, ind=\n, pad=\377, + rmdc=^X^], rmir=\377\377\030\035$<10>, rmso=^X^], + smdc=^P, smir=^P, smso=^N, +# dmchat is like DM2500, but DOES need "all that padding" (jcm 1/31/82) +# also, has a meta-key. +# From: <goldberger@su-csli.arpa> +# (dmchat: ":MT:" changed to ":km:" -- esr) +dmchat|dmchat version of Datamedia 2500, + km, + dl1=\020\032\030\035$<2/>, + il1=\020\n\030\035\030\035$<1*/>, use=dm2500, +# (dm3025: ":MT:" changed to ":km:" -- esr) +dm3025|Datamedia 3025a, + OTbs, km, + cols#80, it#8, lines#24, + bel=^G, clear=\EM$<2>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, + dch1=\010$<6>, dl1=\EP\EA\EQ$<130>, ed=\EJ$<2>, el=\EK, + home=\EH, ht=^I, il1=\EP\n\EQ$<130>, ind=\n, ip=$<6>, + is2=\EQ\EU\EV, rmdc=\EQ, rmir=\EQ, rmso=\EO0, smdc=\EP, + smir=\EP, smso=\EO1, +dm3045|Datamedia 3045a, + OTbs, am, eo, km@, ul, xenl, + dch1=\EB$<6>, dl1@, il1@, is2=\EU\EV, kcuf1=\EC, kcuu1=\EA, + kf0=\Ey\r, kf1=\Ep\r, kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, + kf5=\Et\r, kf6=\Eu\r, kf7=\Ev\r, kf8=\Ew\r, kf9=\Ex\r, + khome=\EH, pad=^?, rmdc@, rmir=\EP, rmso@, smdc@, smso@, + use=dm3025, +# Datamedia DT80 soft switches: +# 1 0=Jump 1=Smooth +# Autorepeat 0=off 1=on +# Screen 0=Dark 1=light +# Cursor 0=u/l 1=block +# +# 2 Margin Bell 0=off 1=on +# Keyclick 0=off 1=on +# ANSI/VT52 0=VT52 1=ANSI +# Xon/Xoff 0=Off 1=On +# +# 3 Shift3 0=Hash 1=UK Pound +# Wrap 0=Off 1=On +# Newline 0=Off 1=On +# Interlace 0=Off 1=On +# +# 4 Parity 0=Odd 1=Even +# Parity 0=Off 1=On +# Bits/Char 0=7 1=8 +# Power 0=60Hz 1=50Hz +# +# 5 Line Interface 0=EIA 1=Loop +# Aux Interface 0=EIA 1=Loop +# Local Copy 0=Off 1=On +# Spare +# +# 6 Aux Parity 0=Odd 1=Even +# Aux Parity 0=Off 1=On +# Aux Bits/Char 0=7 1=8 +# CRT Saver 0=Off 1=On +# dm80/1 is a vt100 lookalike, but it doesn't seem to need any padding. +dm80|dmdt80|dt80|Datamedia dt80/1, + clear=\E[2J\E[H, cud1=\n, cuf1=\E[C, + cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, ed=\E[J, el=\E[K, + home=\E[H, 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, +# 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 +# reverse video. +dm80w|dmdt80w|dt80w|Datamedia dt80/1 in 132 char mode, + cols#132, + clear=\E[H\E[2J$<50/>, cud1=\n, + cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<5/>, + ed=\E[0J$<20/>, el=\E[0K$<20/>, use=dm80, +# From: Adam Thompson <athompso@pangea.ca> Sept 10 1995 +dt80-sas|Datamedia DT803/DTX for SAS usage, + am, bw, + cols#80, lines#24, + acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, + bel=^G, clear=^L, cr=\r, + csr=\E=%p1%{32}%+%c%{32}%c\E#1\E=%p2%{32}%+%c%{32}%c\E#2, + cub1=^H, cud1=\EB, cuf1=^\, + cup=\E=%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, dl1=\EM, ed=^K, + el=^], ff=^L, home=^Y, ht=^I, hts=\E'1, il1=\EL, ind=\EB, + is2=\E)0\E<\EP\E'0\E$2, kclr=^L, kcub1=^H, kcud1=\n, + kcuf1=^\, kcuu1=^_, ked=^K, kel=^], khome=^Y, mc4=^O, mc5=^N, + rev=\E$2\004, ri=\EI, rmacs=\EG, rmso=^X, sgr0=^X, smacs=\EF, + smso=\E$2\004, tbc=\E'0, + +# Datamedia Excel 62, 64 from Gould/SEL UTX/32 via BRL +# These aren't end-all Excel termcaps; but do insert/delete char/line +# and name some of the extra function keys. (Mike Feldman ccvaxa!feldman) +# The naming convention has been bent somewhat, with the use of E? (where +# E is for 'Excel') as # a name. This was done to distinguish the entries +# from the other Datamedias in use here, and yet to associate a model of +# the Excel terminals with the regular datamedia terminals that share +# major characteristics. +excel62|excel64|Datamedia Excel 62, + dch1=\E[P, kbs=^H, kcub1=^H, kcud1=\n, kf5=\EOu, kf6=\EOv, + kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h, + use=dt80, +excel62-w|excel64-w|Datamedia Excel 62 in 132 char mode, + dch1=\E[P, kbs=^H, kcub1=^H, kcud1=\n, kf5=\EOu, kf6=\EOv, + kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, smir=\E[4h, + use=dt80w, +excel62-rv|excel64-rv|Datamedia Excel 62 in reverse video mode, + dch1=\E[P, flash=\E[?5l\E[?5h, kbs=^H, kcub1=^H, kcud1=\n, + kf5=\EOu, kf6=\EOv, kf7=\EOw, kf8=\EOx, kf9=\EOy, rmir=\E[4l, + smir=\E[4h, use=dt80, + +#### Falco +# +# Falco Data Products +# 440 Potrero Avenue +# Sunnyvale, CA 940864-196 +# Vox: (800)-325-2648 +# Fax: (408)-745-7860 +# Net: techsup@charm.sys.falco.com +# +# Current Falco models as of 1995 are generally ANSI-compatible and support +# emulations of DEC VT-series, Wyse, and TeleVideo types. +# + +# Test version for Falco ts-1. See <arpavax.hickman@ucb> for info +# This terminal was released around 1983 and was discontinued long ago. +# The standout and underline highlights are the same. +falco|ts1|ts-1|Falco ts-1, + OTbs, am, + cols#80, it#8, lines#24, + bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET\EG0\010, home=^^, ht=^I, il1=\EE, + ind=\n, is2=\Eu\E3, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, + kf0=^A0\r, rmir=\Er, rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, + smir=\Eq, smso=\Eg1, smul=\Eg1, +falco-p|ts1p|ts-1p|Falco ts-1 with paging option, + OTbs, am, da, db, mir, msgr, ul, + cols#80, it#8, lines#24, + bel=^G, cbt=\EI, clear=\E*, cr=\r, cub1=^H, cud1=\E[B, + cuf1=\E[C, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E[A, + dch1=\EW, dl1=\ER, ed=\EY, el=\ET\EG0\010\Eg0, ht=^I, + il1=\EE, ind=\n, is2=\EZ\E3\E_c, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rmcup=\E_b, rmir=\Er, + rmso=\Eg0, rmul=\Eg0, sgr0=\Eg0, smcup=\E_d, smir=\Eq, + smso=\Eg4, smul=\Eg1, +# (ts100: I added <rmam>/<smam> based on the init string -- esr) +ts100|ts100-sp|Falco ts100-sp, + am, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, + cuf=\E[%p1%dC, cuf1=\E[C$<2>, + cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, + cuu1=\E[A$<2>, dch1=\E~W, dl1=\E~R, 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~Q, il1=\E~E, ind=\n, is1=\E~)\E~ea, + kbs=^H, kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, + rc=\E8, 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, sc=\E7, + 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=vt100+fnkeys, +ts100-ctxt|Falco ts-100 saving context, + rmcup=\E~_b, smcup=\E~_d\E[2J, use=ts100, + +#### Florida Computer Graphics +# + +# Florida Computer Graphics Beacon System, using terminal emulator program +# "host.com", as provided by FCG. This description is for an early release +# of the "host" program. Known bug: <ed> clears the whole screen, so it's +# commented out. + +# From: David Bryant <cbosg!djb> 1/7/83 +beacon|FCG Beacon System, + am, da, db, + cols#80, lines#32, + bel=\ESTART\r\E37\r\EEND\r$<1>, + blink=\ESTART\r\E61\,1\r\EEND\r, clear=\EZ$<10>, cr=\r, + cub1=^H, cud1=\n, cuf1=\EV, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=\EU, + dch1=\EW, dl1=\ER, el=\ET, home=\EH$<10>, ich1=\EQ, il1=\EE, + ind=\n, rev=\ESTART\r\E59\,1\r\EEND\r, rmcup=, + rmso=\ESTART\r\E70\,0\r\EEND\r$<20>, + rmul=\ESTART\r\E60\,0\r\EEND\r, + sgr0=\ESTART\r\E78\r\E70\,0\r\EEND\r$<20>, + smcup=\ESTART\r\E2\,0\r\E12\r\EEND\r$<10>, + smso=\ESTART\r\E70\,6\r\EEND\r$<20>, + smul=\ESTART\r\E60\,1\r\EEND\r, + +#### Fluke +# + +# The f1720a differences from ANSI: no auto margin, destructive +# tabs, # of lines, funny highlighting and underlining +f1720|f1720a|fluke 1720A, + xt, + cols#80, lines#16, xmc#1, + bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, + +#### Liberty Electronics (Freedom) +# +# Liberty Electronics +# 48089 Fremont Blvd +# Fremont CA 94538 +# Vox: (510)-623-6000 +# Fax: (510)-623-7021 + +# From: <faletti@berkeley.edu> +# (f100: added empty <acsc> to suppress a tic warning; +# made this relative to adm+sgr -- note that <invis> isn't +# known to work for f100 but does on the f110. --esr) +f100|freedom|freedom100|freedom model 100, + OTbs, am, bw, hs, mir, msgr, xon, + cols#80, lines#24, + acsc=, bel=^G, cbt=\EI, clear=^Z, cr=\r, cub1=^H, cud1=\n, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW, dl1=\ER$<11.5*>, dsl=\Eg\Ef\r, ed=\EY, el=\ET, + flash=\Eb$<200>\Ed, fsl=\r, home=^^, hpa=\E]%p1%{32}%+%c, + ht=^I, hts=\E1, il1=\EE$<8.5*>, ind=\n, ip=$<6>, + is2=\Eg\Ef\r\Ed, kbs=^H, kcbt=\EI, kcub1=^H, kcud1=^V, + kcuf1=^L, kcuu1=^K, kf1=^A@\r, kf10=^AI\r, kf2=^AA\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, khome=^^, ri=\Ej, rmacs=\E$, rmir=\Er, + smacs=\E%%, smir=\Eq, tbc=\E3, tsl=\Eg\Ef, + vpa=\E[%p1%{32}%+%c, use=adm+sgr, +f100-rv|freedom-rv|freedom 100 in reverse video, + flash=\Ed$<200>\Eb, is2=\Eg\Ef\r\Eb, use=f100, +# The f110 and f200 have problems with vi(1). They use the ^V +# 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!!! +# +# f110/f200 users will have to decide whether +# to lose the down cursor key or the quoting capability. We will opt +# initially for leaving the quoting capability out, since use of VI +# is not generally applicable to most interactive applications +# (f110: added <ht>, <khome> & <kcbt> from f100 -- esr) +f110|freedom110|Liberty Freedom 110, + bw@, eslok, + it#8, wsl#80, + blink=\EG2, bold=\EG0, civis=\E.1, cnorm=\E.2, cud1=^V, + dim=\EG@, dl1=\ER, dsl=\Ef\r, flash=\Eb$<200/>\Ed, il1=\EE, + ip@, is2@, kclr=^^, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, + kf0=^AI\r, kf10@, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, + ri=\EJ, rmacs=\E%%, rmir=\Er\EO, smacs=\E$, smir=\EO\Eq, + smso=\EG<, tsl=\Ef, use=f100, +f110-14|Liberty Freedom 110 14inch, + dch1@, use=f110, +f110-w|Liberty Freedom 110 - 132 cols, + cols#132, use=f110, +f110-14w|Liberty Freedom 110 14in/132 cols, + cols#132, + dch1@, use=f110, +# (f200: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr) +f200|freedom200|Liberty Freedom 200, + OTbs, am, eslok, hs, mir, msgr, xon, + cols#80, it#8, lines#24, wsl#80, + acsc=, bel=^G, blink=\EG2, bold=\EG0, cbt=\EI, civis=\E.0, + clear=^Z, cnorm=\E.1, cr=\r, + csr=\Em0%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=^V, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, + flash=\Eo$<200/>\En, fsl=\r, home=^^, + hpa=\E]%p1%{32}%+%c, hts=\E1, il1=\EE, ind=\n, kbs=^H, + kclr=^^, kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, + kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, kich1=\EQ, kil1=\EE, mc4=\Ea, mc5=\E`, + ri=\EJ, rmacs=\E%%, rmir=\Er, smacs=\E$, smir=\Eq, smso=\EG<, + tbc=\E3, tsl=\Ef, vpa=\E[%p1%{32}%+%c, use=adm+sgr, +f200-w|Liberty Freedom 200 - 132 cols, + cols#132, use=f200, +# The f200 has the ability to reprogram the down cursor key. The key is +# reprogrammed to ^J (linefeed). This value is remembered in non-volatile RAM, +# so powering the terminal off and on will not cause the change to be lost. +f200vi|Liberty Freedom 200 for vi, + flash=\Eb$<200/>\Ed, kcud1=\n, use=f200, +f200vi-w|Liberty Freedom 200 - 132 cols for vi, + cols#132, use=f200vi, + +#### GraphOn (go) +# +# Graphon Corporation +# 544 Division Street +# Campbell, CA 95008 +# Vox: (408)-370-4080 +# Fax: (408)-370-5047 +# Net: troy@graphon.com (Troy Morrison) +# +# +# The go140 and go225 have been discontinued. GraphOn now makes X terminals, +# including one odd hybrid that starts out life on power-up as a character +# terminal, than can be switched to X graphics mode (driven over the serial +# line) by an escape sequence. No info on this beast yet. +# (go140: I added <rmam>/<smam> based on the init string -- esr) +go140|graphon go-140, + OTbs, + cols#80, it#8, lines#24, + clear=\E[H\E[2J$<10/>, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, + ed=\E[J$<10/>, el=\E[K, ht=^I, + if=/usr/share/tabset/vt100, il1=\E[L, + 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, +go140w|graphon go-140 in 132 column mode, + am, + cols#132, + is2=\E<\E=\E[?3h\E[?7h\E(B\E[J\E7\E[;r\E8\E[m\E[q, + use=go140, +# Hacked up vt200 termcap to handle GO-225/VT220 +# From: <edm@nwnexus.WA.COM> +# (go225: I added <rmam>/<smam> based on the init string -- esr) +go225|go-225|Graphon 225, + OTbs, am, mir, xenl, + cols#80, it#8, lines#25, vt#3, + blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, + csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\n, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, + ed=\E[J, el=\E[K, home=\E[H, ht=^I, il1=\E[L, ind=\ED, + is2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, + kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, rc=\E8, 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, + sc=\E7, 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, + +#### Harris (Beehive) +# +# Bletch. These guys shared the Terminal Brain Damage laurels with Hazeltine. +# Their terminal group is ancient history now (1995) though the parent +# company is still in business. +# + +# Beehive documentation is undated and marked Preliminary and has no figures +# so we must have early Superbee2 (Model 600, according to phone conversation +# with mfr.). It has proved reliable except for some missing padding +# (notably after \EK and <nl> at bottom of screen). +# +# The key idea is that AEP mode is poison for <cup> & that US's in +# the local memory should be avoided like the plague. That means +# that the 2048 character local buffer is used as 25 lines of 80 +# characters, period. No scrolling local memory, folks. It also +# appears that we cannot use naked INS LINE feature since it uses +# US. The sbi fakes <il1> with an 80-space insert that may be too +# slow at low speeds; also spaces get converted to \040 which is +# too long for some programs (not vi). DEL LINE is ok but slow. +# +# The <nl> string is designed for last line of screen ONLY; cup to +# 25th line corrects the motion inherent in scrolling to Page 1. +# +# There is one understood bug. It is that the screen appears to +# pop to a new (blank) page after a <nel>, or leave a half-line +# ellipsis to a quad that is the extra 48 memory locations. The +# data received is dumped into memory but not displayed. Not to +# worry if <cup> is being used; the lines not displayed will be, +# whenever the cursor is moved up there. Since <cup> is addressed +# relative to MEMORY of window, nothing is lost; but beware of +# relative cursor motion (<cuu1>,<cud1>,<cuf1>,<cub1>). Recommended, +# therefore, is setenv MORE -c . +# +# WARNING: Not all features tested. +# +# Timings are assembled from 3 sources. Some timings may reflect +# SB2/Model 300 that were used if more conservative. +# Tested on a Model 600 at 1200 and 9600 bd. +# +# The BACKSPACEkb option is cute. The NEWLINE key, so cleverly +# placed on the keyboard and useless because of AEP, is made +# into a backspace key. In use ESC must be pressed twice (to send) +# and sending ^C must be prefixed by ESC to avoid that weird +# transmit mode associated with ENTER key. +# +# IF TERMINAL EVER GOES CATATONIC with the cursor buzzing across +# the screen, then it has dropped into ENTER mode; hit +# RESET--ONLINE--!tset. +# +# As delivered this machine has a FATAL feature that will throw +# it into that strange transmit state (SPOW) if the space bar is +# hit after a CR is received, but before receiving a LF (or a +# few others). +# +# The circuits MUST be modified to eliminate the SPOW latch. +# This is done by strapping on chip A46 of the I/O board; cut +# the p.c. connection to Pin 5 and strap Pin 5 to Pin 8 of that +# chip. This mod has been checked out on a Mod 600 of Superbee II. +# With this modification absurdly high timings on cr are +# unnecessary. +# +# NOTE WELL that the rear panel switch should be set to CR/LF, +# not AEP! +# +sb1|Beehive SuperBee, + OTbs, am, bw, da, db, mir, ul, xsb, + cols#80, lines#25, xmc#1, + bel=^G, cbt=\E`$<650>, clear=\EH$<1>\EJ$<3>, cr=$<1>\r, + cub1=^H, cud1=\n, cuf1=\EC$<3>, cup=\EF%p2%03d%p1%03d, + cuu1=\EA$<3>, dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, + el=\EK$<3>, home=\EH$<1>, ht=^I, hts=\E1, + il1=\EN\EL$<3>\EQ\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + \s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s\s + \s\s\s\s\s\EP$<3>\s\EO\ER\EA$<3>, + ind=\n, is2=\EE$<3>\EX\EZ\EO\Eb\Eg\ER, kbs=^_, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdl1=\EM, ked=\EJ, kel=\EK, + kf0=\E2, kf9=\E1, khome=\EH, kich1=\EQ\EO, krmir=\ER, + lf0=TAB CLEAR, lf9=TAB SET, rmcup=, rmir=\ER, rmso=\E_3, + rmul=\E_3, sgr0=\E_3, smcup=\EO, smir=\EQ\EO, smso=\E_1, + smul=\E_0, tbc=\E3, use=hp+pfk-cr, +sbi|superbee|Beehive SuperBee at Indiana U., + xsb, + cr=\r$<1>, il1=\EN$<1>\EL$<9>\EQ \EP$<9> \EO\ER\EA, + use=sb1, +# Alternate (older) description of Superbee - f1=escape, f2=^C. +# Note: there are at least 3 kinds of superbees in the world. The sb1 +# holds onto escapes and botches ^C's. The sb2 is the best of the 3. +# The sb3 puts garbage on the bottom of the screen when you scroll with +# the switch in the back set to CRLF instead of AEP. This description +# is tested on the sb2 but should work on all with either switch setting. +# The f1/f2 business is for the sb1 and the <xsb> can be taken out for +# the other two if you want to try to hit that tiny escape key. +# This description is tricky: being able to use cup depends on there being +# 2048 bytes of memory and the hairy <nl> string. +superbee-xsb|Beehive SuperBee, + am, da, db, xsb, + cols#80, it#8, lines#25, + clear=\EH\EJ$<3>, cnorm=\n, cr=\r$<1000>, cub1=^H, cud1=\n, + cuf1=\EC, cup=\EF%p2%3d%p1%3d, cuu1=\EA$<3>, + dch1=\EP$<3>, dl1=\EM$<100>, ed=\EJ$<3>, el=\EK$<3>, + home=\EH, ht=^I, hts=\E1, + ind=\n\0\0\0\n\0\0\0\EA\EK\0\0\0\ET\ET, is2=\EH\EJ, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, + rmso=\E_3, sgr0=\E_3, smso=\E_1, tbc=\E3, use=hp+pfk-cr, +# This loses on lines > 80 chars long, use at your own risk +superbeeic|SuperBee with insert char, + ich1=, rmir=\ER, smir=\EQ, use=superbee-xsb, +sb2|sb3|fixed SuperBee, + xsb@, use=superbee, + +#### Beehive Medical Electronics +# +# Steve Seymour <srseymour@mindspring.com> writes (Wed, 03 Feb 1999): +# Regarding your question though; Beehive terminals weren't made by Harris. +# They were made by Beehive Medical Electronics in Utah. They went out of +# business in the early '80s. +# +# (OK, then, I don't know why a couple of these say "Harris Beehive".) +# + +# Reports are that most of these Beehive entries (except superbee) have not +# been tested and do not work right. <rmso> is a trouble spot. Be warned. + +# (bee: <ich1> was empty, which is obviously bogus -- esr) +beehive|bee|Harris Beehive, + OTbs, am, mir, + cols#80, lines#24, + cbt=\E>, clear=\EE, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, + dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, kbs=^H, kcbt=\E>, + kclr=\EE, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + kdch1=\EP, kdl1=\EM, kel=\EK, khome=\EH, kich1=\EQ, kil1=\EL, + krmir=\E@, rmir=\E@, rmso=\Ed@, rmul=\Ed@, sgr0=\Ed@, + smir=\EQ, smso=\EdP, smul=\Ed`, +# set tab is ^F, clear (one) tab is ^V, no way to clear all tabs. +# good grief - does this entry make :sg:/:ug: when it doesn't have to? +# look at those spaces in <rmso>/<smso>. Seems strange to me... +# (beehive: <if=/usr/share/tabset/beehive> removed, no such file. If you +# really care, cook up one using ^F -- esr) +beehive3|bh3m|beehiveIIIm|Harris Beehive 3m, + OTbs, am, + cols#80, it#8, lines#20, + bel=^G, clear=^E^R, cr=\r, cub1=^H, cud1=\n, cuf1=^L, cuu1=^K, + dl1=\021$<350>, ed=^R, el=^P, home=^E, ht=^I, hts=^F, + il1=\023$<160>, ind=\n, ll=^E^K, rmso=\s^_, smso=^]\s, +beehive4|bh4|Beehive 4, + am, + cols#80, lines#24, + bel=^G, clear=\EE, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC, + cuu1=\EA, ed=\EJ, el=\EK, home=\EH, ind=\n, +# There was an early Australian kit-built computer called a "Microbee". +# It's not clear whether this is for one of those or for a relative +# of the Beehive. +microb|microbee|Micro Bee series, + OTbs, am, + cols#80, it#8, lines#24, + bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EF%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, + el=\EK, ht=^I, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kf9=\Ex, khome=\EH, rmso=\Ed@, rmul=\Ed@, + sgr0=\Ed@, smso=\s\EdP, smul=\Ed`, use=hp+pfk-cr, + +# 8675, 8686, and bee from Cyrus Rahman +# (8675: changed k10, k11...k16 to k;, F1...F6 -- esr) +ha8675|Harris 8675, + is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU, kf1=^F, + kf10=\Ed, kf11=^W, kf12=\ER, kf13=\EE, kf14=\EI, kf15=\Ei, + kf16=\Eg, kf2=^P, kf3=^N, kf4=^V, kf5=\n, kf6=^T, kf7=^H, kf8=^?, + kf9=\Ee, use=bee, +# (8686: changed k10, k11...k16 to k;, F1...F6; fixed broken continuation +# in :is: -- esr) +ha8686|Harris 8686, + is2=\ES\E#\E*\Eh\Em\E?\E1\E9\E@\EX\EU\E"*Z01\E"8F35021B7C83# + \E"8F45021B7D83#\E"8F55021B7E83#\E"8F65021B7F83#\E"8F750 + 21B7383#\E"8F851BD7#\E"8F95021B7083#\E"8FA5021B7183#\E"8 + FB5021B7283#, + kf1=^B\Ep^C, kf10=\Ej, kf11=\EW, kf12=^B\E{^C, + kf13=^B\E|^C, kf14=^B\E}^C, kf15=^B\E~^C, kf16=^B\E^?^C, + kf2=^B\Eq^C, kf3=^B\Er^C, kf4=^B\Es^C, kf5=\E3, kf6=\EI, + kf7=\ER, kf8=\EJ, kf9=\E(, use=bee, + +#### Hazeltine +# +# Hazeltine appears to be out of the terminal business as of 1995. These +# guys were co-owners of the Terminal Brain Damage Hall Of Fame along with +# Harris. They have a hazeltine.com domain (but no web page there ) and can +# be reached at: +# +# Hazeltine +# 450 East Pulaski Road +# Greenlawn, New York 11740 +# +# As late as 1993, manuals for the terminal product line could still be +# purchased from: +# +# TRW Customer Service Division +# 15 Law Drive +# P.O. Box 2076 +# Fairfield, NJ 07007-2078 +# +# 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>. +# + +# Since <cuf1> is blank, when you want to erase something you +# are out of luck. You will have to do ^L's a lot to +# redraw the screen. h1000 is untested. It doesn't work in +# vi - this terminal is too dumb for even vi. (The code is +# there but it isn't debugged for this case.) +hz1000|Hazeltine 1000, + OTbs, + cols#80, lines#12, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\s, home=^K, + ind=\n, +# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981 +hz1420|Hazeltine 1420, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\E^\, cr=\r, cub1=^H, cud1=\n, cuf1=^P, + cup=\E\021%p2%c%p1%{32}%+%c, cuu1=\E^L, dl1=\E^S, + ed=\E^X, el=\E^O, ht=^N, il1=\E^Z, ind=\n, rmso=\E^Y, + smso=\E^_, +# New "safe" cursor movement (11/87) from <cgs@umd5.umd.edu>. Prevents +# freakout with out-of-range args and tn3270. No hz since it needs to +# receive tildes. +hz1500|Hazeltine 1500, + OTbs, am, hz, + cols#80, lines#24, + bel=^G, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P, + cup=~\021%p2%p2%?%{30}%>%t%{32}%+%;%{96}%+%c%p1%{96}%+%c, + cuu1=~^L, dl1=~\023$<40>, ed=~\030$<10>, el=~^O, home=~^R, + il1=~\032$<40>, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^P, + kcuu1=~^L, khome=~^R, rmso=~^Y, smso=~^_, +# h1510 assumed to be in sane escape mode. Else use h1500. +# (h1510: early versions of this entry apparently had "<rmso=\E^_>, +# <smso=\E^Y>, but these caps were commented out in 8.3; also, +# removed incorrect and overridden ":do=^J:" -- esr) +hz1510|Hazeltine 1510, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\E^\, cr=\r, cub1=^H, cud1=\E^K, cuf1=^P, + cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, ed=\E^X, + el=\E^O, il1=\E^Z, ind=\n, +# Hazeltine 1520 +# The following switch settings are assumed for normal operation: +# FULL CR U/L_CASE ESCAPE +# FORMAT_OFF EOM_A_OFF EOM_B_OFF WRAPAROUND_ON +# Other switches may be set for operator convenience or communication +# requirements. +hz1520|Hazeltine 1520, + OTbs, am, bw, msgr, + cols#80, lines#24, + bel=^G, bold=\E^_, clear=\E^\, cr=\r, cub1=^H, cud1=\n, + cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, + ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, ind=\n, kbs=^H, + kclr=\E^\, kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, + kdl1=\E^S, ked=\E^X, kel=\E^O, khome=\E^R, kil1=\E^Z, + rmso=\E^Y, rs1=\E$\E\005\E?\E\031, sgr0=\E^Y, smso=\E^_, +# This version works with the escape switch off +# (h1520: removed incorrect and overridden ":do=^J:" -- esr) +hz1520-noesc|Hazeltine 1520, + am, hz, + cols#80, lines#24, + bel=^G, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P, + cup=~\021%p2%c%p1%c$<1>, cuu1=~^L, dl1=~^S, ed=~^X, el=~^O, + home=~^R, il1=~^Z, ind=\n, rmso=~^Y, smso=~^_, +# Note: the h1552 appears to be the first Hazeltine terminal which +# is not braindamaged. It has tildes and backprimes and everything! +# Be sure the auto lf/cr switch is set to cr. +hz1552|Hazeltine 1552, + OTbs, + cud1=\n, dl1=\EO, il1=\EE, lf1=blue, lf2=red, lf3=green, + use=vt52, +hz1552-rv|Hazeltine 1552 reverse video, + cud1=\n, rmso=\ET, smso=\ES, use=hz1552, +# Note: h2000 won't work well because of a clash between upper case and ~'s. +hz2000|Hazeltine 2000, + OTbs, OTnc, am, + cols#74, lines#27, + bel=^G, clear=~\034$<6>, cub1=^H, cud1=\n, + cup=~\021%p2%c%p1%c, dl1=~\023$<6>, home=~^R, + il1=~\032$<6>, ind=\n, pad=^?, +# Date: Fri Jul 23 10:27:53 1982. Some unknown person wrote: +# I tested this termcap entry for the Hazeltine Esprit with vi. It seems +# to work ok. There is one problem though if one types a lot of garbage +# characters very fast vi seems not able to keep up and hangs while trying +# to insert. That's in insert mode while trying to insert in the middle of +# a line. It might be because the Esprit doesn't have insert char and delete +# char as a built in function. Vi has to delete to end of line and then +# redraw the rest of the line. +esprit|Hazeltine Esprit I, + OTbs, am, bw, + cols#80, lines#24, + bel=^G, cbt=\E^T, clear=\E^\, cr=\r, cub1=^H, cud1=\E^K, + cuf1=^P, cup=\E\021%p2%c%p1%c, cuu1=\E^L, dl1=\E^S, + ed=\E^W, el=\E^O, home=\E^R, il1=\E^Z, ind=\n, is2=\E?, kbs=^H, + kcub1=^H, kcud1=\E^K, kcuf1=^P, kcuu1=\E^L, kf0=^B0\n, + kf1=^B1\n, kf2=^B2\n, kf3=^B3\n, kf4=^B4\n, kf5=^B5\n, + kf6=^B6\n, kf7=^B7\n, kf8=^B8\n, kf9=^B9\n, khome=\E^R, + lf0=0, lf1=1, lf2=2, lf3=3, lf4=4, lf5=5, lf6=6, lf7=7, lf8=8, lf9=9, + rmkx=\E>, rmso=\E^Y, smkx=\E<, smso=\E^_, +esprit-am|Hazeltine esprit auto-margin, + am, use=esprit, +# Hazeltine Modular-1 from Cliff Shackelton <ittvax!ittral!shackelt> via BRL +# Vi it seems always wants to send a control J for "do" and it turned out +# that the terminal would work somewhat if the auto LF/CR was turned off. +# (hmod1: removed :dn=~^K: -- esr) +hmod1|Hazeltine Modular 1, + OTbs, am, hz, + cols#80, lines#24, + bel=^G, cbt=~^T, clear=~^\, cr=\r, cub1=^H, cud1=~^K, cuf1=^P, + cup=~\021%p2%c%p1%c, cuu1=~^L, dl1=~^S, home=~^R, il1=~^Z, + ind=\n, kcub1=^H, kcud1=~^K, kcuf1=^P, kcuu1=~^L, khome=~^R, + rc=~^Q, rmso=~^Y, sc=~^E, sgr0=~^Y, smso=~^_, +# +# Hazeltine Executive 80 Model 30 (1554?) +# from Will Martin <control@ALMSA-1.ARPA> via BRL +# Like VT100, except for different "am" behavior. +hazel|exec80|h80|he80|Hazeltine Executive 80, + OTbs, OTpt, am, + cols#80, it#8, lines#24, vt#3, + OTnl=\n, bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, + clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub1=^H, cud1=\n, 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, rc=\E8, 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, sc=\E7, + sgr0=\E[m$<2/>, smkx=\E[?1h\E=, smso=\E[7m$<2/>, + smul=\E[4m$<2/>, + +#### IBM +# + +ibm327x|line mode IBM 3270 style, + gn, + clear=\r\n, el=\r, home=\r, + +ibm3101|i3101|IBM 3101-10, + OTbs, am, xon, + cols#80, lines#24, + bel=^G, clear=\EK, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, + el=\EI, home=\EH, hts=\E0, ind=\n, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, nel=\r\n, tbc=\EH, +ibm3151|IBM 3151 display, + is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B, + sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%; + %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t + %{80}%|%;%c%?%p9%t\E>A%e\E>B%;, + sgr0=\E4@\E>B, smacs=\E>A, smcup=\E>B, use=ibm3162, +# From: Mark Easter <marke@fsi-ssd.csg.ssd.fsi.com> 29 Oct 1992 +# removed kend, knp, kpp -TD +# +# From: Stephen Powell <zlinuxman@wowway.com> 23 Apr 2015 +# Added ich1 (kich1 without ich1 doesn't make sense). +# Added il1 (kil1 without il1 doesn't make sense). +# Added xon (terminal uses XON/XOFF flow control). +# +ibm3161|ibm3163|wy60-316X|wyse60-316X|IBM 3161/3163 display, + OTbs, am, mir, msgr, xon, + cols#80, it#8, lines#24, + acsc=j\352k\353l\354m\355n\356q\361t\364u\365v\366w\367x + \370, + bel=^G, blink=\E4D, bold=\E4H, clear=\EH\EJ, cr=\r, cub1=\ED, + cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, + ich1=\EP \010, il1=\EN, ind=\n, invis=\E4P, kbs=^H, kcbt=\E2, + kclr=\EL\r, kctab=\E1, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kdch1=\EQ, kdl1=\EO, ked=\EJ, kel=\EI, kf1=\Ea\r, + kf10=\Ej\r, kf11=\Ek\r, kf12=\El\r, kf13=\E!a\r, + kf14=\E!b\r, kf15=\E!c\r, kf16=\E!d\r, kf17=\E!e\r, + kf18=\E!f\r, kf19=\E!g\r, kf2=\Eb\r, kf20=\E!h\r, + kf21=\E!i\r, kf22=\E!j\r, kf23=\E!k\r, kf24=\E!l\r, + kf3=\Ec\r, kf4=\Ed\r, kf5=\Ee\r, kf6=\Ef\r, kf7=\Eg\r, + kf8=\Eh\r, kf9=\Ei\r, khome=\EH, khts=\E0, kich1=\EP \010, + kil1=\EN, ktbc=\E 1, mc4=^P^T, mc5=^P^R, rev=\E4A, + rmcup=\E>A, rmso=\E4@, rmul=\E4@, + sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%; + %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t + %{80}%|%;%c%?%p9%t\E>A%e\E<@%;, + sgr0=\E4@\E<@, smcup=\E>A, smso=\E4A, smul=\E4B, + +ibm3161-C|IBM 3161-C NLS terminal using cartridge, + rmcup=\E>B, s0ds=\E>B, s1ds=\E>A, smcup=\E>B, use=ibm3161, +# +# From: Stephen Powell <zlinuxman@wowway.com> 23 Apr 2015 +# Deleted il1. (il1 will now be inherited from ibm3161-C, which inherits +# it from ibm3161. +# +ibm3162|IBM 3162 display, + blink=\E4$a, bold=\E4(a, invis=\E40a, rev=\E4!a, + rmso=\E4>b, rmul=\E4=b, sgr0=\E4@, smso=\E4!a, smul=\E4"a, + use=ibm3161-C, + +# This really should not use setab/setaf, but it is clear that the +# original terminfo does not toggle red/blue colors as in setb/setf. +ibm3164|i3164|IBM 3164, + msgr, + colors#8, pairs#64, + op=\E4 "@, rmcup=\E!9(N\E>B, s0ds=\E>B, s1ds=\E>A, + setab=\E4 %p1%{64}%+%c, + setaf=\E4%?%p1%t %p1%{32}%+%c%e!'%;@, + smcup=\E!9/N\E>B, use=ibm3161, + +ibm5151|wy60-AT|wyse60-AT|IBM 5151 Monochrome display, + am, bw, msgr, xon, + cols#80, it#8, lines#25, + acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x + \263, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + cub=\E[%p1%dD, 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, dl=\E[%p1%dM, + dl1=\E[M, ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, + hpa=\E[%i%p1%dG, il=\E[%p1%dL, il1=\E[L, ind=\E[S, + invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z, kclr=\E[144q, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, + kich1=\E[139q, kil1=\E[140q, kind=\E[151q, knp=\E[154q, + kpp=\E[150q, kri=\E[155q, krmir=\E[4l, rev=\E[7m, ri=\E[T, + rmir=\E[4l, rmso=\E[m, rmul=\E[m, rs2=\Ec, + sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 + %;%?%p7%t;8%;m, + sgr0=\E[0m, smir=\E[4h, smso=\E[7m, smul=\E[4m, + use=ecma+index, + +ibmaed|IBM Experimental display, + OTbs, am, eo, msgr, + cols#80, it#8, lines#52, + clear=\EH\EK, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, + dl1=\EO, ed=\EJ, el=\EI, flash=\EG, home=\EH, ht=^I, ich1=\EP, + il1=\EN, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + rmso=\E0, sgr0=\E0, smso=\E0, +ibm-apl|apl|IBM apl terminal simulator, + lines#25, use=dm1520, +# (ibmmono: this had an unknown `sb' boolean, I changed it to `bs'. +# Also it had ":I0=f10:" which pretty obviously should be "l0=f10" -- esr) +ibmmono|IBM workstation monochrome, + eslok, hs, + bold=\EZ, dl1=\EM, dsl=\Ej\EY8 \EI\Ek, fsl=\Ek, il1=\EL, + invis=\EF\Ef0;\Eb0;, kbs=^H, kf0=\E<, kf1=\ES, kf2=\ET, + kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EY, + khome=\EH, kich1=\0, kind=\EE, knp=\EE, kpp=\Eg, kri=\EG, + lf0=f10, rev=\Ep, ri=\EA, rmso=\Ez, rmul=\Ew, + sgr0=\Ew\Eq\Ez\EB, smso=\EZ, smul=\EW, tsl=\Ej\EY8%+ \Eo, + use=ibm3101, +ibmega|IBM Enhanced Color Display, + cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, + nel=\r\n, use=ibmmono, +# This color scheme is assumed in some recent IBM terminal descriptions +# (green on black, emulated on a 16-color terminal). +ibm+color|IBM color definitions, + colors#8, ncv#3, pairs#64, + op=\E[32m\E[40m, + setb=\E[%?%p1%{0}%=%t40m%e%p1%{1}%=%t41m%e%p1%{2}%=%t42m%e + %p1%{3}%=%t43m%e%p1%{4}%=%t44m%e%p1%{5}%=%t45m%e%p1%{6} + %=%t46m%e%p1%{7}%=%t107m%;, + setf=\E[%?%p1%{0}%=%t30m%e%p1%{1}%=%t31m%e%p1%{2}%=%t32m%e + %p1%{3}%=%t33m%e%p1%{4}%=%t34m%e%p1%{5}%=%t35m%e%p1%{6} + %=%t36m%e%p1%{7}%=%t97m%;, +ibm+16color|IBM aixterm color definitions, + colors#16, pairs#0x100, + setab=\E[%?%p1%{8}%<%t%p1%{40}%+%e%p1%{92}%+%;%dm, + setaf=\E[%?%p1%{8}%<%t%p1%{30}%+%e%p1%{82}%+%;%dm, + setb=%p1%{8}%/%{6}%*%{4}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e + %ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, + setf=%p1%{8}%/%{6}%*%{3}%+\E[%d%p1%{8}%m%Pa%?%ga%{1}%=%t4%e + %ga%{3}%=%t6%e%ga%{4}%=%t1%e%ga%{6}%=%t3%e%ga%d%;m, +ibm5154|IBM 5154 Color display, + colors#8, ncv@, pairs#64, + bold@, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, + use=ibm+color, +ibmega-c|ibm5154-c|IBM Enhanced Color Display with standout and underline, + rmso=\EB, rmul=\EB, smso=\EF\Ef3;, smul=\EF\Ef2;, + use=ibmmono, +ibmvga-c|IBM VGA display color termcap, + cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, + nel=\r\n, use=ibmega-c, +ibmvga|IBM VGA display, + cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, kcud1=\n, + nel=\r\n, use=ibmega, +# ibmapa* and ibmmono entries come from ACIS 4.3 distribution +rtpc|ibmapa16|IBM 6155 Extended Monochrome Graphics Display, + lines#32, + dsl=\Ej\EY@ \EI\Ek, tsl=\Ej\EY@%+ \Eo, use=ibmmono, +ibm6155|IBM 6155 Black & White display, + blink@, bold@, use=ibm5151, +# Advanced Monochrome (6153) and Color (6154) Graphics Display: +ibmapa8c|ibmapa8|IBM 6154 Advanced Graphics Display, + lines#31, + dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, use=ibmmono, +ibmapa8c-c|ibm6154-c|IBM 6154 Advanced Color Graphics Display, + lines#31, + dim=\EF\Ef7;, dsl=\Ej\EY? \EI\Ek, tsl=\Ej\EY?%+ \Eo, + use=ibmega-c, +ibm6154|IBM 6154 Color displays, + blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, + sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p7%t;8%;%?%p6%t;1 + 2%;m, + sgr0=\E[0;10m, use=ibm5154, +ibm6153|IBM 6153 Black & White display, + blink@, bold=\E[12m, s0ds=\E[10m, s1ds=\E[11m, s2ds=\E[12m, + sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p7%t;8%;%?%p6%t;1 + 2%;m, + sgr0=\E[0;10m, use=ibm5151, +ibm6153-90|IBM 6153 Black & White display, + cols#90, lines#36, + blink@, bold@, use=ibm5151, +ibm6153-40|IBM 6153 Black & White display, + cols#40, lines#12, use=ibm6153-90, +ibm8512|ibm8513|IBM color VGA Terminal, + am, mir, msgr, + cols#80, it#8, lines#25, + acsc=jjkkllmmnnqqttuuvvwwxx, blink=\E[5m, bold=\E[1m, + clear=\E[H\E[J, cub1=\E[D, cud1=\n, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, il=\E[%p1%dL, + il1=\E[L, is2=\Eb\E[m\017\E[?7h, kcud1=\E[B, kcuu1=\E[A, + kf0=\E[010q, 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, khome=\E[H, rc=\E[u, rev=\E[7m, + rmacs=^O, rmam=\E[?7l, rmcup=\E[20h, rmdc=\E[4l, + rmir=\E[4l, rmso=\E[m, rmul=\E[m, + rs1=\Eb\E[m\017\E[?7h\E[H\E[J, sc=\E[s, sgr0=\E[m, + smacs=^N, smam=\E[?7h, smcup=\E[20;4l\E[?7h\Eb, + smdc=\E[4h, smir=\E[4h, smso=\E[7m, smul=\E[4m, + use=ibm8503, +hft-c|HFT with Color, + colors#8, pairs#64, + acsc=jjkkllmmnnqqttuuvvwwxx, s0ds=\E(B, s1ds=\E(0, + setab=\E[4%p1%dm, setaf=\E[3%p1%dm, sgr0=\E[0m\E(B, + use=ibm5151, use=ibm+color, +hft-c-old|HFT with Color PC850, + colors#8, pairs#64, + setab=\E[4%p1%dm, setaf=\E[3%p1%dm, use=ibm5151, + use=ibm+color, +hft-old|AIWS High Function Terminal, + am, xon, + cols#80, lines#25, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, 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, ed=\E[J, el=\E[K, home=\E[H, + ht=^I, ich1=\E[@, il1=\E[L, ind=\n, invis=\E[8m, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + 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, khome=\E[H, 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=ibm+color, +ibm-system1|system1|IBM system/1 computer, + am, xt, + cols#80, lines#24, + bel=^G, clear=^Z, cub1=^H, cuf1=^\, + cup=\005%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, home=^K, + ind=\n, +# lft-pc850 : IBM Low Function Terminal Device +# lft "supports" underline, bold, and blink in the sense that the lft code +# sets all the right bits. HOWEVER, depending upon the adapter, these +# attributes may or may not be supported by the device driver. +lft|lft-pc850|LFT-PC850|IBM LFT PC850 Device, + am, bw, msgr, xon, + cols#80, it#8, lines#25, + acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x + \263, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, cub=\E[%p1%dD, 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, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ech=\E[%p1%dX, ed=\E[2J, el=\E[0K, + home=\E[H, hpa=\E[%i%p1%dG, ich=\E[%p1%d@, il=\E[%p1%dL, + il1=\E[L, ind=\ED, invis=\E[8m, is2=\Ec, kbs=^H, kcbt=\E[Z, + kclr=\E[144q, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, 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, khome=\E[H, kich1=\E[139q, kil1=\E[140q, + kind=\E[151q, knp=\E[154q, kpp=\E[150q, kri=\E[155q, + krmir=\E[4l, rev=\E[7m, ri=\EL, rmacs=\E(B, rmir=\E[4l, + rmso=\E[0m, rmul=\E[0m, rs2=\Ec, + 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%;, + sgr0=\E[0m, smacs=\E(0, smir=\E[4h, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, use=ecma+index, +# "Megapel" refers to the display adapter, which was used with the IBM RT +# aka IBM 6150. +ibm5081|hft|IBM Megapel Color display, + acsc=jjkkllmmnnqqttuuvvwwxx, blink@, bold@, s0ds=\E(B, + s1ds=\E(0, sgr0=\E[0m\E(B, use=ibm5154, +ibm5081-c|ibmmpel-c|IBM 5081 1024x1024 256/4096 Megapel enhanced color display, + eslok, hs, + lines#33, + dsl=\Ej\EYA \EI\Ek, fsl=\Ek, tsl=\Ej\EYA%+ \Eo, + use=ibmega-c, +ibm8503|ibm8507|ibm8604|IBM 8503 B & W VGA display, + use=hft-c, +ibm8514|IBM 8514/a color VGA display, + eslok, hs, + dsl=\Ej\EYI \EI\Ek, fsl=\Ek, tsl=\Ej\EYI%+ \Eo, use=hft, +ibm8514-c|IBM 8514 color display with standout and underline, + eslok, hs, + lines#41, + cr=\r, cud1=\n, dsl=\Ej\EYI \EI\Ek, fsl=\Ek, ht=^I, ind=\n, + kbs=^H, kcub1=^H, kcud1=\n, nel=\r\n, tsl=\Ej\EYI%+ \Eo, + use=ibmega-c, + +# +# AIX entries. IBM ships these with AIX 3.2.5. +# -- added rc, sc based on manpage -TD +# -- added rmacs, smacs based on manpage -TD +# Note that we could use ibm+16color, but that is not how IBM defines this one. +aixterm|IBM Aixterm Terminal Emulator, + eslok, hs, + acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, + fsl=\E[?F, rc=\E8, ri@, rmacs=\E(B, s0ds=\E(B, s1ds=\E(0, + sc=\E7, + sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7 + %t;8%;m%?%p9%t\E(0%e\E(B%;, + sgr0=\E[0;10m\E(B, smacs=\E(0, tsl=\E[?%p1%dT, + use=ibm6154, +aixterm-m|IBM AIXterm Monochrome Terminal Emulator, + eslok, hs, + acsc=jjkkllmmnnqqttuuvvwwxx, bold=\E[1m, dsl=\E[?E, + fsl=\E[?F, ri@, s0ds=\E(B, s1ds=\E(0, + sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7 + %t;8%;m%?%p9%t\E(0%e\E(B%;, + sgr0=\E[0;10m\E(B, tsl=\E[?%p1%dT, use=ibm6153, +aixterm-m-old|old IBM AIXterm Monochrome Terminal Emulator, + eslok, hs, + bold=\E[1m, dsl=\E[?E, fsl=\E[?F, ri@, + sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7 + %t;8%;m, + tsl=\E[?%p1%dT, use=ibm6153, +jaixterm|IBM Kanji Aixterm Terminal Eemulator, + acsc@, rmacs@, + sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8 + %;m, + sgr0=\E[m, smacs@, use=aixterm, +jaixterm-m|IBM Kanji AIXterm Monochrome Terminal Emulator, + acsc@, rmacs@, + sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p6%t;1%;%?%p7%t;8 + %;m, + sgr0=\E[m, smacs@, use=aixterm-m, + +# This flavor is adapted from xterm, in turn from aixterm documentation -TD +aixterm-16color|IBM Aixterm Terminal Emulator with 16 colors, + use=ibm+16color, use=aixterm, + +#### Infoton/General Terminal Corp. +# + +# gt100 sounds like something DEC would come out with. Let's hope they don't. +i100|gt100|gt100a|General Terminal 100A (formerly Infoton 100), + OTbs, am, + cols#80, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\Ef%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dl1=\EM, + ed=\EJ, el=\EK, flash=\Eb$<200/>\Ea, home=\EH, il1=\EL, + ind=\n, rmso=\Ea, smso=\Eb, + +i400|Infoton 400, + OTbs, am, + 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, + +# (addrinfo: removed obsolete ":bc=^Z:" -- esr) +addrinfo|cursor-addressable Infoton, + cup=\037%p1%c%p2%c, home=^H, use=infoton, + +# "VISTAR II/HZ Technical Users Manual" (May 1975). +# +infoton2|cursor-addressable Infoton VISTAR II, + cup=~\021%p2%c%p1%c, home=^H, use=infoton, + +# "VISTAR Technical User's Manual" (October 1972). +# +# (infoton: used to have the no-ops <lh#0>, <lw#0>, <nlab#0> -- esr) +infoton|Infoton VISTAR, + am, + cols#80, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^Z, cud1=\n, cuf1=^Y, cuu1=^\, + ed=^K, ind=\n, ll=^H^\, + +# The ICL6402 was actually the Kokusai Display System 6402. +# The 6404 was the KDS7372 (color version of the 6402). +# +# ICL6404 control codes follow: +# +#code function +#~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +#ctrl-A set SOM position at cursor position +#ctrl-G Bell +#ctrl-H Backspace +#ctrl-I Horizontal tab +#ctrl-J Linefeed +#ctrl-K Cursor up +#ctrl-L Cursor right +#ctrl-M Carriage return +#ctrl-N Disable xon/xoff to host +#ctrl-O Enable xon/xoff to host +#ctrl-R Enable bidirectional mode +#ctrl-T Disable bidirectional mode +#ctrl-V Cursor down +#ctrl-Z Clear unprotected data to insert char +#ctrl-^ Cursor home +#ctrl-_ Newline +# +#ESC lead-in char for multiple character command +# +#ESC space R execute power on sequence +#ESC ! p1 p2 define scroll region: +# p1 = scroll top line: 20h - 37h +# p1 = scroll bottom line: 20h - 37h +#ESC " unlock keyboard +#ESC # lock keyboard +#ESC $ Semi-graphics mode on +#ESC % Semi-graphics mode off +#ESC & protect mode on +#ESC ' protect mode off +#ESC ( write protect mode off (full intensity) +#ESC ) write protect mode on (half intensity) +# +#ESC * clear screen +#ESC + clear unprotected data to insert char +#ESC , clear unprotected data to half intensity spaces +#ESC - p1 p2 p3 p4 address cursor to page, row, column: +# p1 = page number 0 - 3 +# p2 = row 20h - 7fh +# p3 = column (lo) 20h - 7fh +# p4 = column (hi) 20h - 21h (only 132 col) +#ESC . p1 set cursor style: +# p1 = 0 invisible cursor +# p1 = 1 block blinking cursor +# p1 = 2 block steady cursor +# p1 = 3 underline blinking cursor +# p1 = 4 underline steady cursor +#ESC / transmit cursor location (page, row, column) +#ESC 0 p1 p2 p3 p4 program edit key: +# p1 = edit key code: '@'-'S', '`'-'s' +# p2 p3 p4 = program data (3 bytes) +# +#ESC 1 set tab +#ESC 2 clear tab at cursor +#ESC 3 clear all tabs +#ESC 4 send unprotect line to cursor +#ESC 5 send unprotect page to cursor +#ESC 6 send line to cursor +#ESC 7 send page to cursor +#ESC 8 n set scroll mode: +# n = 0 set jump scroll +# n = 1 set smooth scroll +#ESC 9 n control display: +# n = 0 display off +# n = 1 display on +#ESC : clear unprotected data to null +#ESC ; clear unprotected data to insert char +# +#ESC < keyclick on +#ESC = p1 p2 address cursor to row, column +# p1 = row 20h - 7fh +# p2 = column (lo) 20h - 7fh +# p3 = column (hi) 20h - 21h (only 132 col) +#ESC > keyclick off +#ESC ? transmit cursor location (row, column) +# +#ESC @ copy print mode on +#ESC A copy print mode off +#ESC B block mode on +#ESC C block mode off (conversation mode) +#ESC D F set full duplex +#ESC D H set half duplex +#ESC E line insert +#ESC F p1 p2 set page colour (p1 = f/grnd, p2 = b/grnd) +# 0 = black, 1 = red, 2 = green, 3 = yellow +# 4 = blue, 5 = magenta, 6 = cyan, 7 = white +#ESC G n set serial field attribute (n = 30h - 3Fh) +#ESC H n full graphics mode: +# n = 0 exit full graphics mode +# n = 1 enter full graphics mode +#ESC I back tab +#ESC J back page +#ESC K forward page +# +#ESC L unformatted page print +#ESC M L move window left (132 col mode only) +#ESC M R move window right (132 col mode only) +#ESC N set page edit (clear line edit) +#ESC O set line edit (clear page edit) +#ESC P formatted page print +#ESC Q character insert +#ESC R line delete +#ESC S send message unprotected only +#ESC T erase line to insert char +#ESC U set monitor mode (see ESC X, ESC u) +# +#ESC V n select video attribute mode: +# n = 0 serial field attribute mode +# n = 1 parallel character attribute mode +#ESC V 2 n define line attribute: +# n = 0 single width single height +# n = 1 single width double height +# n = 2 double width single height +# n = 3 double width double height +#ESC V 3 n select character font: +# n = 0 system font +# n = 1 user defined font +#ESC V 4 n select screen mode: +# n = 0 page screen mode +# n = 1 virtual screen mode +#ESC V 5 n control mouse mode: +# n = 0 disable mouse +# n = 1 enable sample mode +# n = 2 send mouse information +# n = 3 enable request mode +#ESC W character delete +#ESC X clear monitor mode (see ESC U, ESC u) +#ESC Y erase page to insert char +# +#ESC Z n send user/status line: +# n = 0 send user line +# n = 1 send status line +# n = 2 send terminal ID +#ESC [ p1 p2 p3 set character attribute (parallel char mode): +# p1: 0 = normal +# 1 = blank +# 2 = blink +# 3 = blink blank (= blank) +# 4 = reverse +# 5 = reverse blank +# 6 = reverse blink +# 7 = reverse blink blank (= reverse blank) +# 8 = underline +# 9 = underline blank +# : = underline blink +# ; = underline blink blank +# < = reverse underline +# = = reverse underline blank +# > = reverse underline blink +# ? = reverse underline blink blank +# p2, p3: f/grnd, b/grnd colour +# (see ESC F for colours) +# use ZZ for mono, eg. +# ESC [ 0 Z Z for normal +# ESC [ 4 Z Z for inverse etc. +# +#ESC \ n set page size: +# n = 1 24 lines/page +# n = 2 48 lines/page +# n = 3 72 lines/page +# n = 4 96 lines/page +#ESC ] n set Wordstar mode: +# n = 0 normal (KDS7372) mode +# n = 1 Wordstar mode +# +#ESC b set foreground colour screen +# +#ESC c n enter self-test mode: +# n = 0 exit self test mode +# n = 1 ROM test +# n = 2 RAM test +# n = 3 NVRAM test +# n = 4 screen display test +# n = 5 main/printer port test +# n = 6 mouse port test +# n = 7 graphics board test +# n = 8 graphics memory test +# n = 9 display all 'E' +# n = : display all 'H' +#ESC d set background colour screen +# +#ESC e n program insert char (n = insert char) +#ESC f text CR load user status line with 'text' +# +#ESC g display user status line on 25th line +#ESC h display system status line on 25th line +#ESC i tab +#ESC j reverse linefeed +#ESC k n duplex/local edit mode: +# n = 0 duplex edit mode +# n = 1 local edit mode +#ESC l n select virtual screen: +# n = 0 screen 1 +# n = 1 screen 2 +#ESC m save current config to NVRAM +#ESC n p1 select display screen: +# p1 = 0 screen 1 +# p1 = 1 screen 2 +# p1 = 2 screen 3 +# p1 = 3 screen 4 +#ESC o p1 p2 set characters/line and attribute: +# p1 = 0 80 chars/line +# +#ESC o p1 p2 set characters/line and attribute: +# p1 = 0 80 chars/line +# p1 = 1 132 chars/line +# p2 = 0 single width single height +# p2 = 1 single width double height +# p2 = 2 double width single height +# p2 = 3 double width double height +# +#ESC q insert mode on +#ESC r edit mode on +#ESC s send message all +#ESC t erase line to null +#ESC u clear monitor mode (see ESC U, ESC X) +#ESC v autopage mode on +#ESC w autopage mode off +#ESC x p1 p2 p3 define delimiter code... +#ESC y erase page to null +# +#ESC z 2 p1 p2 p3 p4 draw quadrangle: +# p1 = starting row +# p2 = starting column +# p3 = end row +# p4 = end column +# +#ESC { p1 p2 p3 p4 configure main port +# (baud, stop bits, parity, word length) +# +#ESC | p1 p2 text Ctrl-Y program function key with 'text': +# p1 = function key code: +# '1' - ';' normal f1- f11 +# '<' - 'F' shifted f1 - f11 +# p2 = program mode: +# 1 = FDX +# 2 = LOC +# 3 = HDX +# Ctrl-Y = terminator +# (use Ctrl-P to escape ^P, ^Y ) +# +#ESC } p1 p2 p3 p4 configure printer port +# (baud, stop bits, parity, word length) +#ESC ~ send system status +# +# Codes and info from Peter Disdale <pete@pdlmail.demon.co.uk> 12 May 1997 +# +# Entry is by esr going solely on above information and is UNTESTED. +# This actually looks a lot like a TeleVideo 9xx. +# This entry uses page 0 and is monochrome; I'm not brave enough to try +# to make color work without a test terminal. The <am> capability is a guess. +# The initialization string sets conversation mode, blinking underline cursor, +# full duplex, parallel attribute mode, display user status line, white +# foreground, black background, normal highlight. +# +icl6404|kds7372|icl6402|kds6402|ICL 6404 aka Kokusai Display Systems 7372, + OTbs, am, hs, + cols#80, lines#24, + bel=^G, blink=\E[2ZZ, cbt=\EI, civis=\E.0, clear=\E*, + cnorm=\E.3, cr=\r, csr=\E!%p1%{32}%+%c%p2%{32}%+%c, + cub1=^H, cud1=^V, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{80}%m%{32}%+%c%p2%{80}%>%{32}%+%c, + cuu1=^K, cvvis=\E.1, dch1=\EW, dl1=\ER, home=^^, ht=^I, + hts=\E1, il1=\EE, invis=\E[1ZZ, + is1=\EC\E.3\EDF\EV1\Eg\E[0ZZ, nel=^_, rev=\E[4ZZ, + rmir=\Er, rmso=\E[%gh%{4}%^%Ph%gh%dZZ, + rmul=\E[%gh%{8}%^%Ph%gh%dZZ, rs2=\Eo1, + sgr=\E[%'0'%?%p1%t%'8'%|%;%?%p2%t%'8'%|%;%?%p3%t%'4'%|%;%? + %p4%t%'2'%|%;%?%p7%t%'1'%|%;%cZZ, + sgr0=\E[0ZZ, smir=\Eq, smso=\E[8ZZ, smul=\E[8ZZ, tbc=\E3, +icl6404-w|kds7372-w|ICL 6404 aka Kokusai Display Systems 7372 132 cols, + rs2=\Eo1, use=icl6404, + +#### Interactive Systems Corp +# +# ISC used to sell OEMed and customized hardware to support ISC UNIX. +# ISC UNIX still exists in 1995, but ISC itself is no more; they got +# bought out by Sun. +# + +# From: <cithep!eric> Wed Sep 16 08:06:44 1981 +# (intext: removed obsolete ":ma=^K^P^R^L^L ::bc=^_:", also the +# ":le=^_:" later overridden -- esr) +intext|Interactive Systems Corporation modified owl 1200, + OTbs, am, + cols#80, it#8, lines#24, xmc#1, + bel=^G, cbt=^Y, clear=\014$<132>, cr=\r, cub1=^H, cud1=\n, + cuf1=^^, cup=\017%p1%{32}%+%c%p2%{32}%+%c, cuu1=^\, + dch1=\022$<5.5*>, dl1=\021$<5.5*>, ed=\026J$<5.5*>, + el=^Kp^R, ht=^I, il1=\020$<5.5*>, ind=\n, ip=$<5.5*>, kbs=^H, + kcub1=^_, kcud1=\n, kcuf1=^^, kcuu1=^\, kf0=^VJ\r, kf1=^VA\r, + kf2=^VB\r, kf3=^VC\r, kf4=^VD\r, kf5=^VE\r, kf6=^VF\r, + kf7=^VG\r, kf8=^VH\r, kf9=^VI\r, khome=^Z, rmir=^V<, + rmkx=^V9, rmso=^V#\s, smir=^V;, smkx=\036:\264\026%%, + smso=^V$\,, +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, cub1=\E[D, + cud1=\E[B, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + dch1=\E[P, dl1=\E[M, 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, + 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, + +#### Kimtron (abm, kt) +# +# Kimtron seems to be history, but as March 1998 these people are still +# offering repair services for Kimtron equipment: +# +# Com/Pair Monitor Service +# 1105 N. Cliff Ave. +# Sioux Falls, South Dakota 57103 +# +# WATS voice: 1-800/398-4946 +# POTS fax: +1 605/338-8709 +# POTS voice: +1 605/338-9650 +# Email: <compair@sd.cybernex.net> +# Internet/Web: <http://www.com-pair.com> +# +# Kimtron entries include (undocumented) codes for: enter dim mode, +# enter bold mode, enter reverse mode, turn off all attributes. +# + +# Kimtron ABM 85 added by Dual Systems +# (abm85: removed duplicated ":kd=^J:" -- esr) +abm85|Kimtron ABM 85, + OTbs, am, bw, msgr, + cols#80, it#8, lines#24, xmc#1, + cbt=\EI, clear=\E*, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\Ey, el=\Et, ht=^I, + if=/usr/share/tabset/stdcrt, il1=\EE, + is2=\EC\EX\Eg\En\E%\Er\E(\Ek\Em\Eq, kbs=^H, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, rmir=\Er, rmso=\Ek, + rmul=\Em, smir=\EQ, smso=\Ej, smul=\El, +# Kimtron ABM 85H added by Dual Systems. +# Some notes about the abm85h entries: +# 1) there are several firmware revs of 85H in the world. Use abm85h-old for +# firmware revs prior to SP51 +# 2) Make sure to use abm85h entry if the terminal is in 85h mode and the +# abm85e entry if it is in tvi920 emulation mode. They are incompatible +# in some places and NOT software settable i.e., <is2> can't fix it) +# 3) In 85h mode, the arrow keys and special functions transmit when +# the terminal is in dup-edit, and work only locally in local-edit. +# Vi won't swallow `del char' for instance, but <smcup> turns on +# dup-edit anyway so that the arrow keys will work right. If the +# arrow keys don't work the way you like, change <smcup>, <rmcup>, and +# <is2>. Note that 920E mode does not have software commands to toggle +# between dup and local edit, so you get whatever was set last on the +# terminal. +# 4) <flash> attribute is nice, but seems too slow to work correctly +# (\Eb<pad>\Ed) +# 5) Make sure `hidden' attributes are selected. If `embedded' attributes +# are selected, the <xmc@> entry should be removed. +# 6) auto new-line should be on (selectable from setup mode only) +# +# From: Erik Fair <fair@ucbarpa> Sun Oct 27 07:21:05 1985 +abm85h|Kimtron ABM 85H native mode, + hs, + xmc@, + bel=^G, cnorm=\E.4, cvvis=\E.2, dim=\E), dsl=\Ee, flash@, + fsl=\r, invis@, + is2=\EC\EN\EX\024\016\EA\Ea\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r + \EG0\Ed\E.4\El, + kcud1=^V, sgr0=\E(\EG0, smir=\EZ, tsl=\Eg\Ef, use=adm+sgr, + use=abm85, +abm85e|Kimtron ABM 85H in 920E mode, + xmc@, + bel=^G, dim=\E), flash@, + is2=\EC\EX\EA\E%\E9\Ee\Er\En\E"\E}\E'\E(\Ef\r\Ek\Eq + \Em, + rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, +abm85h-old|oabm85h|o85h|Kimtron ABM 85H with old firmware rev., + xmc@, + bel=^G, dim=\E), + is2=\E}\EC\EX\Ee\En\E%\Er\E(\Ek\Em\Eq\Ed\ET\EC\E9 + \EF, + rev=\Ej, sgr0=\E(\Ek, smir=\EZ, use=abm85, +# From: <malman@bbn-vax.arpa> +# (kt7: removed obsolete :ma=^V^J^L :" -- esr) +kt7|kimtron model kt-7, + OTbs, am, + cols#80, it#8, lines#24, + cbt=\EI, clear=^Z, cub1=^H, cud1=^V, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET, fsl=\Eg, home=^^, ht=^I, ich1=\EQ, + if=/usr/share/tabset/stdcrt, il1=\EE, invis@, is2=\El\E", + kbs=^H, kcbt=\EI, kclr=^Z, kcub1=^H, kcud1=^V, kcuf1=^L, + kcuu1=^K, kdch1=\EW, kdl1=\ER, ked=\EY, kel=\ET, kf0=^AI\r, + kf1=^A@\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, + kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, + kich1=\EQ, kil1=\EE, tsl=\Ef, use=adm+sgr, +# Renamed TB=^I to :ta:, BE=^G to :bl:, BS=^H to :kb:, N to :kS: (based on the +# other kt7 entry and the adjacent key capabilities). Removed EE which is +# identical to :mh:. Removed :ES=\EGD: which is some kind of highlight +# but we can't figure out what. +kt7ix|kimtron model kt-7 or 70 in IX mode, + am, bw, + cols#80, it#8, lines#25, + acsc=jYk?lZm@nEqDt4uCvAwBx3, bel=^G, blink=\EG2, cbt=\EI, + civis=\E.0, clear=\E*, cnorm=\E.3, cr=\r, cub1=^H, cud1=^V, + cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW, dim=\EG@, dl1=\ER, dsl=\Ef\r, ed=\EY, el=\ET, fsl=\r, + home=^^, ht=^I, ich1=\EQ, il1=\EE, ind=\n, + is2=\EG0\E s\017\E~, kbs=^H, kcbt=\EI, kclr=\E*, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdl1=\ER, + ked=\EY, kel=\ET, kend=\EY, kf0=^AI\r, kf1=^A@\r, kf2=^AA\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, khome=^^, kich1=\EQ, kil1=\EE, knp=\EJ, + nel=\r\n, pulse=\EK, rmacs=\E%%, rmir=, rmso=\EG0, rmul=\EG0, + sgr0=\EG0, smacs=\E$, smir=, smso=\EG4, smul=\EG8, tsl=\Ef, + +#### Microdata/MDIS +# +# This was a line of terminals made by McDonnell-Douglas Information Systems. +# These entries come direct from MDIS documentation. I have edited them only +# to move primary names of the form p[0-9] * to aliases, and to comment out +# <rmacs>/<smacs> in a couple of entries without <acsc> strings. I have +# also removed the change history; the last version indicates this is +# version 4.3 by A.Barkus, September 1990 (earliest entry is October 1989). +# + +# McDonnell Information Systems Terminal Family History +# ========================================= +# +# Prism-1, Prism-2 and P99: +# Ancient Microdata and CMC terminals, vaguely like Adds Regent 25. +# +# Prism-4 and Prism-5: +# Slightly less ancient range of Microdata terminals. Follow-on from +# Prism-2, but with many enhancements. P5 has eight display pages. +# +# Prism-6: +# A special terminal for use with library systems, primarily in Germany. +# Limited numbers. Similar functionality to P5 (except attributes?). +# +# Prism-7, Prism-8 and Prism-9: +# More recent range of MDIS terminals, in which P7 and P8 +# replace the P4 & P5, with added functionality, and P9 is the flagship. +# The P9 has two emulation modes - P8 and ANSI - and includes a +# large number of the DEC VT220 control sequences. Both +# P8 and P9 support 80c/24ln/8pg and 132cl/24li/4pg formats. +# +# Prism-12 and Prism-14: +# Latest range, functionally very similar to the P9. The P14 has a +# black-on-white overscanning screen. +# +# The terminfo definitions given here are: +# +# p2 - Prism-2 (or Prism-1 or P99). +# +# p4 - Prism-4 (and older P7s & P8s). +# p5 - Prism-5 (or Prism-6). +# +# p7 - Prism-7. +# p8 - Prism-8 (in national or multinational mode). +# p8-w - 132 column version of p8. +# p9 - Prism-9 in ANSI mode. +# p9-w - 132 column version of p9. +# p9-8 - Prism-9 in Prism-8 emulation mode. +# p9-8-w - As p9-8, but with 132 columns. +# +# p12 - Prism-12 in ANSI mode. +# p12-w - 132 column version of p12. +# p12-m - Prism-12 in MDC emulation mode. +# p12-m-w - As p12-m, but with 132 columns. +# p14 - Prism-14 in ANSI mode. +# p14-w - 132 column version of p14. +# p14-m - Prism-14 in MDC emulation mode. +# p14-m-w - As p14-m, but with 132 columns. +# +# p2: Prism-2 +# ----------- +# +# Includes Prism-1 and basic P99 without SP or MP loaded. +# The simplest form of Prism-type terminal. +# Basic cursor movement and clearing operations only. +# No video attributes. +# Notes: +# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next +# value up, followed by backspace. +# +prism2|MDC Prism-2, + am, bw, msgr, + cols#80, lines#24, + bel=^G, clear=\014$<20>, cr=\r, cub1=^H, cud1=\n, cuf1=^F, + cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%? + %{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, + cuu1=^Z, ed=\EJ, el=\EK, home=^A, + hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc + %=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, + ind=\n, kbs=^H, khome=^A, vpa=\013%p1%{32}%+%c, + +# p4: Prism-4 +# ----------- +# +# Includes early versions of P7 & P8. +# Basic family definition for most Prisms (except P2 and P9 ANSI). +# Notes: +# Horizontal cursor qualifiers of NUL, XON and XOFF are mapped to the next +# value up, followed by backspace. +# Cursor key definitions removed because they interfere with vi and csh keys. +# +prism4|p4|P4|MDC Prism-4, + am, bw, hs, mc5i, msgr, + cols#80, lines#24, wsl#72, xmc#1, + bel=^G, blink=^CB, civis=\035\344, clear=\014$<20>, + cnorm=\035\342, cr=\r, cub1=^H, cud1=\n, cuf1=^F, + cup=\013%p1%{32}%+%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%Pc%? + %{17}%gc%=%{19}%gc%=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, + cuu1=^Z, dim=^CA, dsl=\035\343\035\345, ed=\EJ, el=\EK, + fsl=\035\345, home=^A, + hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%Pc%?%{17}%gc%=%{19}%gc + %=%|%gc%!%|%t%{1}%gc%+%c%{8}%e%gc%;%c, + ind=\n, invis=^CH, kbs=^H, khome=^A, mc0=\EU, mc4=\ET, mc5=\ER, + rev=^CD, rmso=^C\s, rmul=^C\s, + sgr=\003%{64}%?%p1%p3%|%t%{4}%+%;%?%p2%t%{16}%+%;%?%p4%t%{2} + %+%;%?%p5%t%{1}%+%;%?%p7%t%{8}%+%;%c%?%p9%t\016%e\017%;, + sgr0=^C\s, smso=^CD, smul=^CP, tsl=\035\343, + vpa=\013%p1%{32}%+%c, + +# p5: Prism-5 +# ----------- +# +# Same definition as p4. Includes Prism-6 (not tested!). +# Does not use any multi-page features. +# +prism5|p5|P5|MDC Prism-5, + use=p4, + +# p7: Prism-7 +# ----------- +# +# Similar definition to p4. Uses ANSI cursor motion to avoid network problems. +# Notes: +# Use p4 for very early models of P7. +# Rev-index removed; can't send nulls to terminal in 8-bit modes. +# +prism7|p7|P7|MDC Prism-7, + cup=\E[%i%p1%d;%p2%dH, hpa@, vpa@, use=p4, + +# p8: Prism-8 +# ----------- +# +# Similar definition to p7. Uses ANSI cursor motion to avoid network problems. +# Supports national and multinational character sets. +# Notes: +# Alternate char set operations only work in multinational mode. +# Use p4 for very early models of P8. +# Rev-index removed; can't send nulls to terminal in 8-bit modes. +# (esr: commented out <smacs>/<rmacs> because there's no <acsc>) +# +prism8|p8|P8|MDC Prism-8, + cup=\E[%i%p1%d;%p2%dH, hpa=\E[%i%p1%d`, is2=\E[<12h, + vpa=\E[%i%p1%dd, use=p4, + +# p8-w: Prism-8 in 132 column mode +# -------------------------------- +# +# 'Wide' version of p8. +# Notes: +# Rev-index removed; can't send nulls to terminal in 8-bit modes. +# +prism8-w|p8-w|P8-W|MDC Prism-8 in 132 column mode, + cols#132, + is2=\E[<12h\E[<14h, use=p8, + +# p9: Prism-9 in ANSI mode +# ------------------------- +# +# The "flagship" model of this generation of terminals. +# ANSI X3.64 (ISO 6429) standard sequences, plus many DEC VT220 ones. +# Notes: +# Tabs only reset by "reset". Otherwise assumes default (8 cols). +# Fixes to deal with terminal firmware bugs: +# . 'ri' uses insert-line since rev index doesn't always +# . 'sgr0' has extra '0' since esc[m fails +# . 'fsl' & 'dsl' use illegal char since cr is actioned wrong on line 25 +# Not covered in the current definition: +# . Labels +# . Programming Fn keys +# . Graphic characters (defaults correctly to vt100) +# . Padding values (sets xon) +# (esr: commented out <smacs>/<rmacs> because there's no <acsc>) +# +prism9|p9|P9|MDC Prism-9 in ANSI mode, + am, bw, hs, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, wsl#72, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[<4l, + clear=^L, cnorm=\E[<4h, cr=\r, csr=\E[%i%p1%d;%p2%d%%v, + cub=\E[%p1%dD, 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, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, dsl=\E[%}\024, ech=\E[%p1%dX, + ed=\E[J$<10>, el=\E[K, fsl=^T, home=\E[H, hpa=\E[%i%p1%d`, + ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n, + is2=\E[&p\E[<12l\E F, kbs=^H, kclr=^L, 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~, 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[H, 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, + 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, + tbc=\E[3g, tsl=\E[%i%p1%d%%}, vpa=\E[%i%p1%dd, + use=ansi+pp, + +# p9-w: Prism-9 in 132 column mode +# -------------------------------- +# +# 'Wide' version of p9. +# +prism9-w|p9-w|P9-W|MDC Prism-9 in 132 column mode, + cols#132, + is2=\E[&p\E[<12l\E F\E[<14h, + rs2=\E[&p\E[<12l\E F\E[<14h, use=p9, + +# p9-8: Prism-9 in P8 mode +# ------------------------ +# +# P9 terminal in P8 emulation mode. +# Similar to p8 definition. +# Insertion and deletion operations possible. +# +prism9-8|p9-8|P9-8|MDC Prism-9 in P8 mode, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8, + +# p9-8-w: Prism-9 in P8 and 132 column modes +# ------------------------------------------ +# +# P9 terminal in P8 emulation mode and 132 column mode. +# +prism9-8-w|p9-8-w|P9-8-W|MDC Prism-9 in Prism 8 emulation and 132 column mode, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, use=p8-w, + +# p12: Prism-12 in ANSI mode +# --------------------------- +# +# See p9 definition. +# +prism12|p12|P12|MDC Prism-12 in ANSI mode, + use=p9, + +# p12-w: Prism-12 in 132 column mode +# ---------------------------------- +# +# 'Wide' version of p12. +# +prism12-w|p12-w|P12-W|MDC Prism-12 in 132 column mode, + use=p9-w, + +# p12-m: Prism-12 in MDC emulation mode +# ------------------------------------- +# +# P12 terminal in MDC emulation mode. +# Similar to p8 definition. +# Insertion and deletion operations possible. +# +prism12-m|p12-m|P12-M|MDC Prism-12 in MDC emulation mode, + use=p9-8, + +# p12-m-w: Prism-12 in MDC emulation and 132 column modes +# ------------------------------------------------------- +# +# P12 terminal in MDC emulation mode and 132 column mode. +# +prism12-m-w|p12-m-w|P12-M-W|MDC Prism-12 in MDC emulation and 132 column mode, + use=p9-8-w, + +# p14: Prism-14 in ANSI mode +# --------------------------- +# +# See p9 definition. +# +prism14|p14|P14|MDC Prism-14 in ANSI mode, + use=p9, + +# p14-w: Prism-14 in 132 column mode +# ---------------------------------- +# +# 'Wide' version of p14. +# +prism14-w|p14-w|P14-W|MDC Prism-14 in 132 column mode, + use=p9-w, + +# p14-m: Prism-14 in MDC emulation mode +# ------------------------------------- +# +# P14 terminal in MDC emulation mode. +# Similar to p8 definition. +# Insertion and deletion operations possible. +# +prism14-m|p14-m|P14-M|MDC Prism-14 in MDC emulation mode, + use=p9-8, + +# p14-m-w: Prism-14 in MDC emulation and 132 column modes +# ------------------------------------------------------- +# +# P14 terminal in MDC emulation mode and 132 column mode. +# +prism14-m-w|p14-m-w|P14-M-W|MDC Prism-14 in MDC emulation and 132 column mode, + use=p9-8-w, + +# End of McDonnell Information Systems Prism definitions + +# These things were popular in the Pick database community at one time +# From: George Land <georgeland@aol.com> 24 Sep 1996 +p8gl|prism8gl|McDonnell-Douglas Prism-8 alternate definition, + am, bw, hs, mir, + cols#80, lines#24, ma#1, wsl#78, xmc#1, + bel=^G, blink=^CB, clear=^L, cr=\r, cub1=^U, cud1=\n, cuf1=^F, + cup=\E[%i%p1%d;%p2%dH, cuu1=^Z, dch1=\s^H, dim=^CA, dl1=^P, + ed=\EJ, el=\EK, home=^A, ind=\n, invis=^CH, kbs=^H, kcub1=^U, + kcud1=\n, kcuf1=^F, kcuu1=^Z, kdch1=\s^H, kdl1=^P, ked=\EJ, + kel=\EK, kf1=^A@\r, kf10=^AI\r, kf12=^AJ\r, kf13=^AK\r, + kf14=^AL\r, kf15=^AM\r, kf16=^AN\r, kf17=^AO\r, kf2=^AA\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, khome=^A, lf1=F1, lf10=F10, lf2=F2, + lf3=F3, lf4=F4, lf5=F5, lf6=F6, lf7=F7, lf8=F8, lf9=F9, nel=\n\r, + pad=\0, rev=^CD, rmso=^C\s, rmul=^C\s, sgr0=^C\s, smso=^CE, + smul=^C0, + +#### Microterm (act, mime) +# +# The mime1 entries refer to the Microterm Mime I or Mime II. +# The default mime is assumed to be in enhanced act iv mode. +# + +# New "safe" cursor movement (5/87) from <reuss@umd5.umd.edu>. Prevents +# freakout with out-of-range args on Sytek multiplexors. No <smso=^N> and +# <rmso=^N> since it gets confused and it's too dim anyway. No <ich1> +# since Sytek insists ^S means xoff. +# (act4: found ":ic=2^S:ei=:im=:ip=.1*^V:" commented out in 8.3 -- esr) +act4|microterm|microterm act iv, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\014$<12/>, cr=\r, cub1=^H, cud1=^K, cuf1=^X, + cup=\024%p1%{24}%+%c%p2%p2%?%{47}%>%t%{48}%+%;%{80}%+%c, + cuu1=^Z, dch1=\004$<.1*/>, dl1=\027$<2.3*/>, + ed=\037$<2.2*/>, el=\036$<.1*/>, home=^], + il1=\001<2.3*/>, ind=\n, kcub1=^H, kcud1=^K, kcuf1=^X, + kcuu1=^Z, +# The padding on :sr: and :ta: for act5 and mime is a guess and not final. +# The act 5 has hardware tabs, but they are in columns 8, 16, 24, 32, 41 (!)... +# (microterm5: removed obsolete ":ma==^Z^P^Xl^Kj:" -- esr) +act5|microterm5|microterm act v, + kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, ri=\EH$<3>, uc=^H\EA, + use=act4, +# Mimes using brightness for standout. Half bright is really dim unless +# you turn up the brightness so far that lines show up on the screen. +mime-fb|full bright mime1, + is2=^S\E, rmso=^S, smso=^Y, use=mime, +mime-hb|half bright mime1, + is2=^Y\E, rmso=^Y, smso=^S, use=mime, +# (mime: removed obsolete ":ma=^X ^K^J^Z^P:"; removed ":do=^K:" that overrode +# the more plausible ":do=^J:" -- esr) +# uc was at one time disabled to get around a curses bug, be wary of it +mime|mime1|mime2|mimei|mimeii|microterm mime1, + OTbs, am, + cols#80, it#8, lines#24, vt#9, + bel=^G, clear=^]^C, cr=\r, cub1=^H, cud1=\n, cuf1=^X, + cup=\024%p1%{24}%+%c%p2%p2%?%{32}%>%t%{48}%+%;%{80}%+%c, + cuu1=^Z, dl1=\027$<80>, ed=^_, el=^^, home=^], ht=\011$<2>, + il1=\001$<80>, ind=\n, is2=^S\E^Q, kcub1=^H, kcud1=^K, + kcuf1=^X, kcuu1=^Z, ri=\022$<3>, uc=^U, +# These termcaps (for mime2a) put the terminal in low intensity mode +# since high intensity mode is so obnoxious. +mime2a-s|microterm mime2a (emulating an enhanced Soroc iq120), + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EI, dch1=\ED, + dl1=\027$<20*>, ed=\EJ$<20*>, el=\EK, home=^^, + il1=\001$<20*>, ind=\n, ip=$<2>, is2=\E), kcub1=^H, kcud1=\n, + kcuf1=^L, kcuu1=^K, ri=\EI, rmir=^Z, rmso=\E;, rmul=\E7, + smir=\EE, smso=\E:, smul=\E6, +# This is the preferred mode (but ^X can't be used as a kill character) +mime2a|mime2a-v|microterm mime2a (emulating an enhanced vt52), + OTbs, + cols#80, it#8, lines#24, + bel=^G, clear=\EL, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=^N, + dl1=\027$<20*>, ed=\EQ$<20*>, el=\EP, home=\EH, ht=^I, + il1=\001$<20*>, ind=\n, ip=$<2>, is2=^Y, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, ri=\EA, rmir=^Z, rmso=\E9, + rmul=\E5, smir=^O, smso=\E8, smul=\E4, +# (mime3a: removed obsolete ":ma=^X ^K^J^Z^P:" -- esr) +mime3a|mime1 emulating 3a, + am@, + kcub1=^H, kcud1=^K, kcuf1=^X, kcuu1=^Z, use=adm3a, +mime3ax|mime-3ax|mime1 emulating enhanced 3a, + it#8, + dl1=\027$<80>, ed=^_, el=^X, ht=\011$<3>, il1=\001$<80>, + use=mime3a, +# Wed Mar 9 18:53:21 1983 +# We run our terminals at 2400 baud, so there might be some timing problems at +# higher speeds. The major improvements in this model are the terminal now +# scrolls down and insert mode works without redrawing the rest of the line +# to the right of the cursor. This is done with a bit of a kludge using the +# exit graphics mode to get out of insert, but it does not appear to hurt +# anything when using vi at least. If you have some users using act4s with +# programs that use curses and graphics mode this could be a problem. +mime314|mm314|mime 314, + am, + cols#80, lines#24, + clear=^L, cub1=^H, cuf1=^X, cup=\024%p1%c%p2%c, cuu1=^Z, + dch1=^D, dl1=^W, ed=^_, el=^^, home=^], ht=^I, il1=^A, kcub1=^H, + kcud1=^K, kcuf1=^X, kcuu1=^Z, rmir=^V, smir=^S, +# Microterm mime 340 from University of Wisconsin +mm340|mime340|mime 340, + cols#80, lines#24, + clear=\032$<12/>, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\E#$<2.1*/>, dl1=\EV$<49.6/>, ed=\037$<2*/>, + el=\EL$<2.1/>, ht=^I, il1=\EU$<46/>, ind=\n, is2=\E\,, + kbs=^H, kcub1=^H, kcud1=\n, kcuu1=^K, nel=\r\n, +# This came from University of Wisconsin marked "astro termcap for jooss". +# (mt4520-rv: removed obsolete ":kn#4:" and incorrect ":ri=\E[C:"; +# also added <rmam>/<smam> based on the init string -- esr) +mt4520-rv|micro-term 4520 reverse video, + am, hs, msgr, xenl, xon, + cols#80, it#8, lines#24, wsl#80, + bel=^G, clear=\E[H\E[J, cnorm=\E[0V\E8, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E7\E[0U, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, flash=\E[?5l$<200/>\E[?5h, + fsl=\E[?5l\E[?5h, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, + ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E[H, + ll=\E[24;1H, nel=\EE, rc=\E8, rf=/usr/share/tabset/vt100, + ri=\EM, rmam=\E[?7l, rmso=\E[0m, rmul=\E[24m, + rs1=\E(B\E[2l\E>\E[20l\E[?3l\E[?5h\E[?7h\E[H\E[J, + sc=\E7, sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, + tbc=\E[g, tsl=\E[25;1H, + +# Fri Aug 5 08:11:57 1983 +# This entry works for the ergo 4000 with the following setups: +# ansi,wraparound,newline disabled, xon/xoff disabled in both +# setup a & c. +# +# WARNING!!! There are multiple versions of ERGO 4000 microcode +# Be advised that very early versions DO NOT WORK RIGHT !! +# Microterm does have a ROM exchange program- use it or lose big +# (ergo400: added <rmam>/<smam> based on the init string -- esr) +ergo4000|microterm ergo 4000, + da, db, msgr, + cols#80, lines#66, + bel=^G, clear=\E[H\E[2J$<80>, cr=\r, cub1=^H, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + dch1=\E[1P$<80>, dl1=\E[1M$<5*>, 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>, + smam=\E[?7m, smir=\E[4h$<6>, smkx=\E=$<4>, + smso=\E[7m$<20>, + +#### NCR +# +# NCR's terminal group was merged with AT&T's when AT&T bought the company. +# For what happened to that group, see the ADDS section. +# +# There is an NCR4103 terminal that's just a re-badged Wyse-50. +# + +# The following vendor-supplied termcaps were captured from the Boundless +# Technologies site, 8 March 1998. I removed all-upper-case names that were +# identical, except for case, to lower-case ones. I also uncommented the acsc +# capabilities.X +# +# The Intecolor emulation of the NCR 2900/260C color terminal is basically a +# DEC vt200/300 with color capabilities added. +ncr260intan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, + colors#8, pairs#64, + op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + use=ncr260vt300an, +# The Intecolor emulation of the NCR 2900/260C color terminal is basically a +# DEC vt200/300 with color capabilities added. +ncr260intwan|NCR Intecolor emulation of the 2900_260C with an ANSI keyboard, + colors#8, pairs#64, + op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + use=ncr260vt300wan, +# The Intecolor emulation of the NCR 2900/260C color terminal is basically a +# DEC vt200/300 with color capabilities added. +ncr260intpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard, + colors#8, pairs#64, + op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + use=ncr260vt300pp, +# The Intecolor emulation of the NCR 2900/260C color terminal is basically a +# DEC vt200/300 with color capabilities added. +ncr260intwpp|NCR Intecolor emulation of the 2900_260C with a PC+ keyboard in 132 column mode, + colors#8, pairs#64, + op=\E[0m, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, + use=ncr260vt300wpp, +# This definition for ViewPoint supports several attributes. This means +# that it has magic cookies (extra spaces where the attributes begin). +# Some applications do not function well with magic cookies. The System +# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. +# If supporting various attributes is not vital, 'xmc#1' and the extra +# attributes can be removed. +# Mapping to ASCII character set ('acsc' capability) can also be +# restored if needed. +ncr260vppp|NCR 2900_260 viewpoint, + am, bw, hs, km, mc5i, mir, msgr, xon, + cols#80, lines#24, nlab#32, xmc#1, + acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2, + cbt=\EI, civis=\E`0, clear=\014$<40>, cnorm=\E`5, + cr=\r$<2>, cub1=\010$<2>, cud1=\n$<2>, cuf1=\006$<2>, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5>, cuu1=\032$<2>, + dch1=\EW$<2>, dim=\EGp, dl1=\El$<2>, dsl=\E`c, ed=\Ek$<2>, + el=\EK$<2>, fsl=\r, home=\036$<2>, ht=^I, hts=\E1, + il1=\EM$<2>, ind=\n$<2>, invis=\EG1, + is2=\Ee6\E~%$<100>\E+\E`:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0 + \EcC1\Ee7$<100>, + kDC=\El, kEND=\Ek, kHOM=^A, kPRT=\E7, kRIT=^F, ka1=^A, ka3=\EJ, + kbs=^H, kc1=\ET, kc3=\EJ, kcub1=^U, kcud1=\n, kcuf1=^F, + kcuu1=^Z, kdch1=\EW, kend=\EK, kf1=^B1\r, kf10=^B:\r, + kf11=^B;\r, kf12=^B<\r, kf13=^B=\r, kf14=^B>\r, kf15=^B?\r, + kf16=^B@\r, kf17=^B!\r, kf18=^B"\r, kf19=^B#\r, kf2=^B2\r, + kf20=^B$\r, kf21=^B%^M, kf22=^B&\r, kf23=^B'\r, kf24=^B(\r, + kf25=^B)\r, kf26=^B*\r, kf27=^B+\r, kf28=\002\,\r, + kf29=^B-\r, kf3=^B3\r, kf30=^B.\r, kf31=^B/\r, kf32=^B0\r, + kf4=^B4\r, kf5=^B5\r, kf6=^B6\r, kf7=^B7\r, kf8=^B8\r, + kf9=^B9\r, khome=^A, kich1=\Eq, knp=\EJ, kpp=\EJ, kprt=\EP, + ll=\001$<5>, mc0=\EP$<100>, mc4=^T, mc5=^R, + mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<5>, + nel=\037$<2>, rev=\EG4, ri=\Ej$<2>, rmacs=\EcB0\EH\003, + rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, + rs2=\Ee6\E~%$<100>\E+\E`:\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0 + \EcC1\Ee7$<100>, + sgr0=\EG0\EH\003, smacs=\EcB1\EH\002, smir=\Eq, + smso=\EG4, smul=\EG8, smxon=\Ec21, tsl=\EF, +ncr260vpwpp|NCR 2900_260 viewpoint wide mode, + cols#132, + cup=\Ea%i%p1%dR%p2%dC$<30>, + is2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0 + \EcC1\Ee7$<100>, + rs2=\Ee6\E~%$<100>\E+\E`;\Ed/\E`1\EO\Ee4\Ec@0@\Ec@1A\EcB0 + \EcC1\Ee7$<100>, + use=ncr260vppp, +ncr260vt100an|NCR 2900_260 vt100 with ansi kybd, + am, hs, mir, msgr, xenl, xon, + cols#80, lines#24, nlab#32, + acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, + blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>, + cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD$<5>, + cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, cud1=\E[B$<5>, + cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, + cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, + cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, + dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, + ech=\E[%p1%dX, ed=\E[0J$<5>, el=\E[0K$<3>, el1=\E[1K$<3>, + fsl=\E[0$}, home=\E[H$<1>, hpa=\E[%p1%dG$<40>, ht=^I, + hts=\EH, ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, + il1=\E[L$<5>, ind=\ED$<5>, indn=\E[%p1%dE$<5>, + invis=\E[8m, + 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, + khlp=\E[28~, kich1=\E[2~, krdo=\E[29~, nel=\EE$<5>, rc=\E8, + rev=\E[7m, ri=\EM$<5>, rmacs=^O, rmir=\E[4l, + rmkx=\E[?1l\E>, rmso=\E[0m, rmul=\E[0m, + 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, + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 + %;%?%p7%t;8%;m%?%p9%t\016%e\017%;$<20>, + sgr0=\E[0m\017$<20>, smacs=^N, smir=\E[4h, + smkx=\E[?1h\E=, smso=\E[1;7m, smul=\E[4m, tbc=\E[3g, + tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, use=vt220+vtedit, + use=vt220+cvis, use=vt220+keypad, +ncr260vt100wan|NCR 2900_260 vt100 wide mode ansi kybd, + cols#132, + cup=\E[%i%p1%d;%p2%dH$<30>, + is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + use=ncr260vt100an, +ncr260vt100pp|NCR 2900_260 vt100 with PC+ kybd, + is2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, + kend=\E[5~, khome=\E[2~, kich1=\E[1~, knp=\E[6~, kpp=\E[3~, + lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, + rs2=\E[!p\E[?7;19;67h\E[?1;3;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + smkx=\E=, use=ncr260vt100an, +ncr260vt100wpp|NCR 2900_260 vt100 wide mode pc+ kybd, + cols#132, + cup=\E[%i%p1%d;%p2%dH$<30>, + is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + use=ncr260vt100pp, +ncr260vt200an|NCR 2900_260 vt200 with ansi kybd, + am, hs, mir, msgr, xenl, xon, + cols#80, lines#24, nlab#32, + acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, + blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>, + cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr$<5>, + cub=\E[%p1%dD$<5>, cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, + cud1=\E[B$<5>, cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, + cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, + cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, + dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, + ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, + fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, + ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, + ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, + 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~, kf2=\EOQ, + 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~, kf3=\EOR, kf30=\E[5~, kf31=\E[6~, + kf32=\E[7~, kf33=\E[8~, kf34=\E[9~, kf35=\E[10~, kf4=\EOS, + 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, rev=\E[7m, ri=\EM$<5>, rmacs=\017$<20>, + rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, rmso=\E[27m, + rmul=\E[24m, + 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, + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 + %;%?%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=, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, + use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad, +ncr260vt200wan|NCR 2900_260 vt200 wide mode ansi kybd, + cols#132, + cup=\E[%i%p1%d;%p2%dH$<30>, + is2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, + rs2=\E[!p\E[?3;7;19;67h\E[?4l\E(B\E)0\017\E[2J\E[1;1H$<200>, use=ncr260vt200an, +ncr260vt200pp|NCR 2900_260 vt200 with pc+ kybd, + ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, + kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, + lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, + use=ncr260vt200an, +ncr260vt200wpp|NCR 2900_260 vt200 wide mode pc+ kybd, + cols#132, + cup=\E[%i%p1%d;%p2%dH$<30>, + is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E(B\E)0\017\E[2J\E[1;1H\E>$< + 200>, + use=ncr260vt200pp, +ncr260vt300an|NCR 2900_260 vt300 with ansi kybd, + am, hs, mir, msgr, xenl, xon, + cols#80, lines#24, nlab#32, + acsc=``aaffggjjkkllmmnnooqqssttuuvvwwxx~~, bel=^G, + blink=\E[5m, bold=\E[1m, clear=\E[2J\E[1;1H$<20>, + cr=\r$<1>, csr=\E[%i%p1%d;%p2%dr$<5>, + cub=\E[%p1%dD$<5>, cub1=\E[D$<5>, cud=\E[%p1%dB$<5>, + cud1=\E[B$<5>, cuf=\E[%p1%dC$<5>, cuf1=\E[C$<5>, + cup=\E[%i%p1%d;%p2%dH$<10>, cuu=\E[%p1%dA$<5>, + cuu1=\E[A$<5>, dch=\E[%p1%dP$<5>, dch1=\E[1P$<5>, + dl=\E[%p1%dM$<5>, dl1=\E[M$<5>, dsl=\E[0$~\E[1$~, + ech=\E[%p1%dX$<5>, ed=\E[0J, el=\E[0K$<5>, el1=\E[1K$<5>, + fsl=\E[0$}, home=\E[H, hpa=\E[%p1%dG$<40>, ht=^I, hts=\EH, + ich=\E[%p1%d@$<5>, il=\E[%p1%dL$<5>, il1=\E[L$<5>, + ind=\ED$<5>, indn=\E[%p1%dE$<5>, invis=\E[8m, + 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, rev=\E[7m, ri=\EM$<5>, + rmacs=\017$<20>, rmam=\E[?7l, rmir=\E[4l, rmkx=\E[?1l\E>, + rmso=\E[27m, rmul=\E[24m, + 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, + sgr=\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5 + %;%?%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=, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, tsl=\E[2$~\E[1$}, vpa=\E[%p1%dd$<40>, + use=vt220+vtedit, use=vt220+cvis, use=vt220+keypad, +ncr260vt300wan|NCR 2900_260 vt300 wide mode ansi kybd, + cols#132, + cup=\E[%i%p1%d;%p2%dH$<30>, + is2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1 + H$<200>, + rs2=\E[!p\E[?3;7;19;67h\E[?4l\E[1;0%w\E(B\E)0\017\E[2J\E[1;1 + H$<200>, + use=ncr260vt300an, +ncr260vt300pp|NCR 2900_260 vt300 with pc+ kybd, + ka1=\E[H, ka3=\EOu, kb2=\E[V, kc3=\E[U, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[4~, + kend=\E[1~, khome=\E[H, kich1=\E[2~, knp=\E[6~, kpp=\E[5~, + lf1=pf1, lf2=pf2, lf3=pf3, lf4=pf4, rmkx=\E>, smkx=\E=, + use=ncr260vt300an, +NCR260VT300WPP|ncr260vt300wpp|NCR 2900_260 vt300 wide mode pc+ kybd, + cols#132, + cup=\E[%i%p1%d;%p2%dH$<30>, + is2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1 + ;1H\E>$<200>, + rs2=\E[!p\E[?3;7;19;67h\E[?1;4l\E[1;0%w\E(B\E)0\017\E[2J\E[1 + ;1H\E>$<200>, + use=ncr260vt300pp, +# This terminfo file contains color capabilities for the Wyse325 emulation of +# the NCR 2900/260C color terminal. Because of the structure of the command +# (escape sequence) used to set color attributes, one of the fore/background +# colors must be preset to a given value. I have set the background color to +# black. The user can change this setup by altering the last section of the +# 'setf' definition. The escape sequence to set color attributes is +# ESC d y <foreground_color> <background_color> 1 +# In addition, the background color can be changed through the desk accessories. +# The capability 'op' sets colors to green on black (default combination). +# +# NOTE: The NCR Unix System Administrator's Shell will not function properly +# if the 'pairs' capability is defined. Un-Comment the 'pairs' +# capability and recompile if you wish to have it included. +# +ncr260wy325pp|NCR 2900_260 Wyse 325, + am, bw, hs, km, mc5i, mir, msgr, xon, + colors#16, cols#80, lines#24, ncv#33, nlab#32, + acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2, + cbt=\EI, civis=\E`0, clear=\E*$<10>, cnorm=\E`1, cr=\r, + cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, + cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, + ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<5>, ht=^I, + hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, + 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, + 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, + rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9 + \Ee7$<100>, + setb=\s, + setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51} + %e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54} + %e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{64}%e%p1%{8}%=%t%{57} + %e%p1%{9}%=%t%{58}%e%p1%{10}%=%t%{59}%e%p1%{11}%=%t + %{60}%e%p1%{12}%=%t%{61}%e%p1%{13}%=%t%{62}%e%p1%{14}%= + %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, + tsl=\EF, +ncr260wy325wpp|NCR 2900_260 Wyse 325 wide mode, + cols#132, + cup=\Ea%i%p1%dR%p2%dC$<30>, + is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9 + \Ee7$<100>, + rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9 + \Ee7$<100>, + use=ncr260wy325pp, +# This definition for Wyse 350 supports several attributes. This means +# that it has magic cookies (extra spaces where the attributes begin). +# Some applications do not function well with magic cookies. The System +# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. +# If supporting various attributes is not vital, 'xmc#1' and the extra +# attributes can be removed. +# Mapping to ASCII character set ('acsc' capability) can also be +# restored if needed. +# In addition, color capabilities have been added to this file. The drawback, +# however, is that the background color has to be black. The foreground colors +# are numbered 0 through 15. +# +# NOTE: The NCR Unix System Administrator's Shell does not function properly +# with the 'pairs' capability defined as below. If you wish to +# have it included, Un-comment it and recompile (using 'tic'). +# +ncr260wy350pp|NCR 2900_260 Wyse 350, + am, bw, hs, km, mc5i, mir, msgr, xon, + colors#16, cols#80, lines#24, ncv#33, nlab#32, pairs#16, xmc#1, + acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2, + cbt=\EI, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r, + cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<40>, cuu1=\013$<5>, + cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, + ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<10>, ht=^I, + hts=\E1, il1=\EE$<5>, ind=\n$<5>, invis=\EG1, + 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{, kPRT=\E7, kRIT=^L, ka1=^^, 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$<10>, mc4=^T, mc5=^R, + mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<20>, + nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH\003\EcB0, + rmam=\Ed., rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, + rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E"\Ee4\Ex@\E`9 + \Ee7$<100>, + setb=\s, + setf=%?%p1%{0}%=%t%{49}%e%p1%{1}%=%t%{50}%e%p1%{2}%=%t%{51} + %e%p1%{3}%=%t%{52}%e%p1%{4}%=%t%{53}%e%p1%{5}%=%t%{54} + %e%p1%{6}%=%t%{55}%e%p1%{7}%=%t%{102}%e%p1%{8}%=%t%{97} + %e%p1%{9}%=%t%{98}%e%p1%{10}%=%t%{99}%e%p1%{11}%=%t + %{101}%e%p1%{12}%=%t%{106}%e%p1%{13}%=%t%{110}%e%p1 + %{14}%=%t%{111}%e%p1%{15}%=%t%{56}%;\Em0%c$<100>, + sgr0=\EG0\EH\003\EcD, smacs=\EH\002\EcB1, smam=\Ed/, + smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0, + tsl=\EF, +ncr260wy350wpp|NCR 2900_260 Wyse 350 wide mode, + cols#132, + cup=\Ea%i%p1%dR%p2%dC$<30>, + is2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9 + \Ee7$<200>, + rs2=\Ee6\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E"\Ee4\Ex@\E`9 + \Ee7$<200>, + use=ncr260wy350pp, +# This definition for Wyse 50+ supports several attributes. This means +# that it has magic cookies (extra spaces where the attributes begin). +# Some applications do not function well with magic cookies. The System +# Administrator's Shell in NCR Unix SVR4 1.03 is one such application. +# If supporting various attributes is not vital, 'xmc#1' and the extra +# attributes can be removed. +# Mapping to ASCII character set ('acsc' capability) can also be +# restored if needed. +# (ncr260wy50+pp: originally contained commented-out +# <acsc=j5k3l2m1n8q:t4u9v=w0x6>, as well as the commented-out one there -- esr) +ncr260wy50+pp|NCR 2900_260 Wyse 50+, + am, bw, hs, km, mc5i, mir, msgr, xon, + cols#80, lines#24, nlab#32, xmc#1, + acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, + cbt=\EI$<5>, civis=\E`0, clear=\E+$<20>, cnorm=\E`1, cr=\r, + cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<30>, cuu1=\013$<5>, + cvvis=\E`5, dch1=\EW$<50>, dim=\EGp, dl1=\ER$<5>, dsl=\E`c, + ed=\EY$<5>, el=\ET$<5>, fsl=\r, home=\036$<10>, + ht=\011$<5>, hts=\E1$<5>, il1=\EE$<5>, ind=\n$<5>, + invis=\EG1, + is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E" + \Ee4\Ex@\E`9\Ee7$<100>, + kDC=\ER, kEND=\EY, kHOM=\E{, kPRT=\E7, kRIT=^L, ka1=^^, 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$<10>, 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^C, rmam=\Ed., + rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, + rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E" + \Ee4\Ex@\E`9\Ee7$<100>, + sgr0=\EG0\EH\003$<15>, smacs=\EH^B, smam=\Ed/, smir=\Eq, + smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<5>, tsl=\EF, +ncr260wy50+wpp|NCR 2900_260 Wyse 50+ wide mode, + cols#132, + cup=\Ea%i%p1%dR%p2%dC$<30>, + is2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E" + \Ee4\Ex@\E`9\Ee7$<200>, + rs2=\Ee6\E~"$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E" + \Ee4\Ex@\E`9\Ee7$<200>, + use=ncr260wy50+pp, +ncr260wy60pp|NCR 2900_260 Wyse 60, + am, bw, hs, km, mc5i, mir, msgr, xon, + cols#80, lines#24, nlab#32, + acsc=07a?h;j5k3l2m1n8q:t4u9v=w0x6, bel=^G, blink=\EG2, + cbt=\EI$<15>, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, + cr=\r, cub1=\010$<5>, cud1=\n$<5>, cuf1=\014$<5>, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<10>, cuu1=\013$<5>, + cvvis=\E`5, dch1=\EW$<50>, dl1=\ER$<5>, dsl=\E`c, + ed=\Ey$<5>, el=\Et$<5>, fsl=\r, home=\036$<25>, + ht=\011$<15>, hts=\E1$<15>, il1=\EE$<5>, ind=\n$<5>, + invis=\EG1, + is2=\Ee6\E~4$<100>\E+\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$<15>, 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, + mrcup=\Ew@%p1%{48}%+%c%p2%{32}%+%c%p3%{32}%+%c$<30>, + nel=\037$<5>, rev=\EG4, ri=\Ej$<5>, rmacs=\EH^C, rmam=\Ed., + rmir=\Er, rmso=\EG0, rmul=\EG0, rmxon=\Ec20, + rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`:\E`@\E~!\E" + \Ee4\Ex@\E`9\Ee7$<100>, + sgr0=\EG0\EcB0\EcD$<15>, smacs=\EH^B, smam=\Ed/, + smir=\Eq, smso=\EGt, smul=\EG8, smxon=\Ec21, tbc=\E0$<15>, + tsl=\EF, +ncr260wy60wpp|NCR 2900_260 Wyse 60 wide mode, + cols#132, + cup=\Ea%i%p1%dR%p2%dC$<30>, + is2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E" + \Ee4\Ex@\E`9\Ee7$<100>, + rs2=\Ee6\E~4$<100>\E+\Ed/\Ee1\Ed*\Er\EO\E`1\E`;\E`@\E~!\E" + \Ee4\Ex@\E`9\Ee7$<100>, + use=ncr260wy60pp, +ncr160vppp|NCR 2900_160 viewpoint, + use=ncr260vppp, +ncr160vpwpp|NCR 2900_160 viewpoint wide mode, + use=ncr260vpwpp, +ncr160vt100an|NCR 2900_160 vt100 with ansi kybd, + use=ncr260vt100an, +ncr160vt100pp|NCR 2900_160 vt100 with PC+ kybd, + use=ncr260vt100pp, +ncr160vt100wan|NCR 2900_160 vt100 wide mode ansi kybd, + use=ncr260vt100wan, +ncr160vt100wpp|NCR 2900_160 vt100 wide mode pc+ kybd, + use=ncr260vt100wpp, +ncr160vt200an|NCR 2900_160 vt200 with ansi kybd, + use=ncr260vt200an, +ncr160vt200pp|NCR 2900_160 vt200 with pc+ kybd, + use=ncr260vt200pp, +ncr160vt200wan|NCR 2900_160 vt200 wide mode ansi kybd, + use=ncr260vt200wan, +ncr160vt200wpp|NCR 2900_160 vt200 wide mode pc+ kybd, + use=ncr260vt200wpp, +ncr160vt300an|NCR 2900_160 vt300 with ansi kybd, + use=ncr260vt300an, +ncr160vt300pp|NCR 2900_160 vt300 with pc+ kybd, + use=ncr260vt300pp, +ncr160vt300wan|NCR 2900_160 vt300 wide mode ansi kybd, + use=ncr260vt300wan, +ncr160vt300wpp|NCR 2900_160 vt300 wide mode pc+ kybd, + use=ncr260vt300wpp, +ncr160wy50+pp|NCR 2900_160 Wyse 50+, + use=ncr260wy50+pp, +ncr160wy50+wpp|NCR 2900_160 Wyse 50+ wide mode, + use=ncr260wy50+wpp, +ncr160wy60pp|NCR 2900_160 Wyse 60, + use=ncr260wy60pp, +ncr160wy60wpp|NCR 2900_160 Wyse 60 wide mode, + use=ncr260wy60wpp, +ncrvt100an|ncrvt100pp|NCR vt100 for the 2900 terminal, + am, hs, mc5i, mir, msgr, xon, + cols#80, it#8, lines#24, nlab#32, + acsc=``aaffgghhiijjkkllmmnnqqttuuvvwwxxyyzz~~, + bel=^G, blink=\E[5m$<30>, bold=\E[1m$<30>, + clear=\E[2J\E[1;1H$<300>, cr=\r, + csr=\E[%i%p1%d;%p2%dr$<100>, cub=\E[%p1%dD$<30>, + cub1=\E[D$<2>, cud=\E[%p1%dB$<30>, cud1=\E[B$<2>, + cuf=\E[%p1%dC$<30>, cuf1=\E[C$<2>, + cup=\E[%i%p1%d;%p2%dH$<100>, cuu=\E[%p1%dA$<30>, + cuu1=\E[A$<2>, dch=\E[%p1%dP$<40>, dch1=\E[1P$<10>, + dl=\E[%p1%dM$<70>, dl1=\E[M$<40>, dsl=\E[31l$<25>, + ed=\E[0J$<300>, el=\E[0K$<30>, el1=\E[1K$<30>, + enacs=\E(B\E)0$<40>, fsl=1$<10>, home=\E[H$<2>$<80>, + ht=^I, hts=\EH, 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, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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>, + 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, + sgr=%?%p9%t\016%e\017%;\E[0%?%p1%p6%|%t;1%;%?%p2%t;4%;%?%p1 + %p3%|%t;7%;%?%p4%t;5%;m$<120>, + 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>, +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>, + rs2=\Ec\E[12;31h\E[?4;5;10l\E?3;6;7;19;25h\E[33;34l\E[0m\E(B + \E)0\E%/0n\E[P\031$<200>, + use=ncrvt100an, +# +# Vendor-supplied NCR termcaps end here + +# NCR7900 DIP switches: +# +# Switch A: +# 1-4 - Baud Rate +# 5 - Parity (Odd/Even) +# 6 - Don't Send or Do Send Spaces +# 7 - Parity Enable +# 8 - Stop Bits (One/Two) +# +# Switch B: +# 1 - Upper/Lower Shift +# 2 - Typewriter Shift +# 3 - Half Duplex / Full Duplex +# 4 - Light/Dark Background +# 5-6 - Carriage Return Without / With Line Feed +# 7 - Extended Mode +# 8 - Suppress Keyboard Display +# +# Switch C: +# 1 - End of line entry disabled/enabled +# 2 - Conversational mode / (Local?) Mode +# 3 - Control characters displayed / not displayed +# 4 - (2-wire?) / 4-wire communications +# 5 - RTS on and off for each character +# 6 - (50Hz?) / 60 Hz +# 7 - Exit after level zero diagnostics +# 8 - RS-232 interface +# +# Switch D: +# 1 - Reverse Channel (yes / no) +# 2 - Manual answer (no / yes) +# 3-4 - Cursor appearance +# 5 - Communication Rate +# 6 - Enable / Disable EXT turnoff +# 7 - Enable / Disable CR turnoff +# 8 - Enable / Disable backspace +# +# Since each attribute parameter is 0 or 1, we shift each attribute (standout, +# reverse, blink, dim, and underline) the appropriate number of bits (by +# multiplying the 0 or 1 by a correct factor to shift) so the bias character, +# '@' is (effectively) "or"ed with each attribute to generate the proper third +# character in the <ESC>0 sequence. The <sgr> string implements the following +# equation: +# +# ((((('@' + P5) | (P4 << 1)) | (P3 << 3)) | (P2 << 4)) | (p1 * 17)) => +# ((((('@' + P5) + (P4 << 1)) + (P3 << 3)) + (P2 << 4)) + (p1 * 17)) +# +# Where: P1 <==> Standout attribute parameter +# P2 <==> Underline attribute parameter +# P3 <==> Reverse attribute parameter +# P4 <==> Blink attribute parameter +# P5 <==> Dim attribute parameter +# From <root@goliath.un.atlantaga.NCR.COM>, init string hacked by SCO. +ncr7900i|ncr7900|n7900|NCR 7900 model 1, + am, bw, ul, + cols#80, lines#24, xmc#1, + bel=^G, blink=\E0B, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F, + cup=\E1%p2%c%p1%c, cuu1=^Z, dim=\E0A, ed=\Ek, el=\EK, ind=\n, + is2=\E0@\010\E3\E4\E7, kcub1=^U, kcud1=\n, kcuf1=^F, + kcuu1=^Z, khome=^A, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=\E0@, + rmul=\E0@, + sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17} + %*%+%c, + sgr0=\E0@, smso=\E0Q, smul=\E0`, +ncr7900iv|NCR 7900 model 4, + am, bw, eslok, hs, + cols#80, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, + cup=\013%p1%{64}%+%c\E\005%p2%02d, dl1=\E^O, dsl=\Ey1, + fsl=\Ek\Ey5, home=\013@\E^E00, il1=\E^N, ind=\n, kbs=^H, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\ES, kf2=\ET, + kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, + khome=\EH, lf6=blue, lf7=red, lf8=white, nel=\r\n, + tsl=\Ej\Ex5\Ex1\EY8%p1%{32}%+%c\Eo, +# Warning: This terminal will lock out the keyboard when it receives a CTRL-D. +# The user can enter a CTRL-B to get out of this locked state. +# In <hpa>, we want to output the character given by the formula: +# ((col / 10) * 16) + (col % 10) where "col" is "p1" +ncr7901|NCR 7901 model, + am, bw, ul, + cols#80, lines#24, + bel=^G, blink=\E0B, civis=^W, clear=^L, cnorm=^X, cr=\r, + cub1=^H, cud1=\n, cuf1=^F, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, dim=\E0A, + ed=\Ek, el=\EK, + hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, ind=\n, + is2=\E4^O, kclr=^L, kcub1=^U, kcud1=\n, kcuf1=^F, kcuu1=^Z, + khome=^H, ll=^A, mc4=^T, mc5=^R, rev=\E0P, rmso=^O, rmul=^O, + sgr=\E0%p5%{64}%+%p4%{2}%*%+%p3%{16}%*%+%p2%{32}%*%+%p1%{17} + %*%+%c\016, + sgr0=^O, smso=\E0Q\016, smul=\E0`\016, + vpa=\013%p1%{64}%+%c, + +# Newbury Data Recording Limited (Newbury Data) +# +# Have been manufacturing and reselling various peripherals for a long time +# They don't make terminals anymore, but are still in business (in 2007). +# Their e-mail address is at ndsales@newburydata.co.uk +# and their post address is: +# +# Newbury Data Recording Ltd, +# Premier Park, Road One, +# Winsford, Cheshire, CW7 3PT +# +# Their technical support is still good, they sent me for free a printed copy +# of the 9500 user manual and I got it just 1 week after I first contacted them +# (in 2005)! + +# NDR 9500 +# Manufactured in the early/mid eighties, behaves almost the same as a +# TeleVideo 950. Take a 950, change its cabinet for a more 80s-ish one (but +# keep the same keyboard layout), add an optional 25-line mode, replace the DIP +# switches with a menu and remove the "lock line" feature (ESC ! 1 and ESC ! +# 2), here is the NDR 9500. Even the line-lock, albeit disabled, is +# recognized: if you type in "ESC !", the next (third) character is not +# echoed, showing that the terminal was actually waiting for a parameter! +ndr9500|nd9500|Newbury Data 9500, + am, bw, hs, mc5i, mir, msgr, ul, xon, + cols#80, lines#24, wsl#79, + acsc=jDkClBmAnIqKtMuLvOwNxJ, bel=^G, cbt=\EI, civis=\E.0, + clear=\E;, cnorm=\E.1, cr=\r, cub1=^H, cud1=^V, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dim=\E), dl1=\ER, dsl=\Eh, ed=\EY, el=\ET, + flash=\Eb$<50/>\Ed, fsl=\r, home=^^, ht=^I, hts=\E1, + ich1=\EQ, il1=\EE, ind=\n, is2=\Ew\E'\EDF\El\Er\EO, + kDC=\Er, kDL=\EO, kEOL=\Et, kIC=\Eq, kcbt=\EI, kclr=^Z, + kcub1=^H, kcud1=^V, kcuf1=^L, kcuu1=^K, kdch1=\EW, kdl1=\ER, + ked=\EY, kel=\ET, kent=\r, kf1=^A@\r, kf10=^AI\r, kf11=^AJ\r, + kf12=^A`\r, kf13=^Aa\r, kf14=^Ab\r, kf15=^Ac\r, kf16=^Ad\r, + kf17=^Ae\r, kf18=^Af\r, kf19=^Ag\r, kf2=^AA\r, kf20=^Ah\r, + kf21=^Ai\r, kf22=^Aj\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, + kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, + kich1=\EQ, kil1=\EE, kprt=\EP, mc4=\Ea, mc5=\E`, nel=^_, + pfloc=\E|%{48}%p1%+%c2%p2%s\031, + pfx=\E|%{48}%p1%+%c1%p2%s\031, prot=\E), ri=\Ej, + rmacs=\E%%, rmir=\Er, rmso=\E(, rmxon=^N, + sgr=\EG0\E%%%%\E(%?%p1%p5%p8%|%|%t\E)%;%?%p9%t\E$%;, + sgr0=\EG0\E%%\E(, smacs=\E$, smir=\Eq, smso=\E), smxon=^O, + tbc=\E3, tsl=\Eg\Ef\011%p1%{32}%+%c, .kbs=^H, + +ndr9500-nl|NDR 9500 with no status line, + hs@, + wsl@, + dsl@, fsl@, tsl@, use=ndr9500, + +ndr9500-25|NDR 9500 with 25th line enabled, + lines#25, use=ndr9500, + +ndr9500-25-nl|NDR 9500 with 25 lines and no status line, + lines#25, use=ndr9500-nl, + +ndr9500-mc|NDR 9500 with magic cookies (enables underline inverse video invisible and blink), + msgr@, + xmc#1, + blink=\EG2, invis=\EG1, rev=\EG4, rmso=\EG0, rmul=\EG0, + sgr=\E%%\E(%?%p5%p8%|%t\E)%;%?%p9%t\E$%;\EG%{48}%?%p7%t%{1} + %+%;%?%p4%t%{2}%+%;%?%p3%p1%|%t%{4}%+%;%?%p2%t%{8}%+%;%c, + sgr0=\EG0\E%%\E(, smso=\EG4, smul=\EG8, use=ndr9500, + +ndr9500-25-mc|NDR 500 with 25 lines and magic cookies, + lines#25, use=ndr9500-mc, + +ndr9500-mc-nl|NDR 9500 with magic cookies and no status line, + hs@, + wsl@, + dsl@, fsl@, tsl@, use=ndr9500-mc, + +ndr9500-25-mc-nl|NDR 9500 with 25 lines and magic cookies and no status line, + lines#25, use=ndr9500-mc-nl, + +#### Perkin-Elmer (Owl) +# +# These are official terminfo entries from within Perkin-Elmer. +# + +bantam|pe550|pe6100|Perkin Elmer 550, + OTbs, + cols#80, lines#24, + bel=^G, clear=\EK$<20>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, + el=\EI$<20>, home=\EH, ind=\n, ll=\EH\EA, +fox|pe1100|Perkin Elmer 1100, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\EH\EJ$<132>, cr=\r, cub1=^H, cud1=\n, + cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, + ed=\EJ$<5.5*>, el=\EI, flash=\020\002$<200/>\020\003, + home=\EH, hts=\E1, ind=\n, ll=\EH\EA, tbc=\E3, +owl|pe1200|Perkin Elmer 1200, + OTbs, am, in, + cols#80, lines#24, + bel=^G, clear=\EH\EJ$<132>, cr=\r, cub1=^H, cud1=\n, + cuf1=\EC, cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, + dch1=\EO$<5.5*>, dl1=\EM$<5.5*>, ed=\EJ$<5.5*>, + el=\EI$<5.5>, flash=\020\002$<200/>\020\003, home=\EH, + hts=\E1, ich1=\EN, il1=\EL$<5.5*>, ind=\n, ip=$<5.5*>, + kbs=^H, kf0=\ERJ, kf1=\ERA, kf2=\ERB, kf3=\ERC, kf4=\ERD, + kf5=\ERE, kf6=\ERF, kf7=\ERG, kf8=\ERH, kf9=\ERI, ll=\EH\EA, + rmso=\E!\0, sgr0=\E!\0, smso=\E!^H, tbc=\E3, +pe1251|pe6300|pe6312|Perkin Elmer 1251, + am, + cols#80, it#8, lines#24, pb#300, vt#8, xmc#1, + bel=^G, clear=\EK$<332>, cr=\r, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EX%p1%{32}%+%c\EY%p2%{32}%+%c, cuu1=\EA, + ed=\EJ$<20*>, el=\EI$<10*>, home=\EH, hts=\E1, ind=\n, + kf0=\ERA, kf1=\ERB, kf10=\ERK, kf2=\ERC, kf3=\ERD, kf4=\ERE, + kf5=\ERF, kf6=\ERG, kf7=\ERH, kf8=\ERI, kf9=\ERJ, tbc=\E3, +# (pe7000m: this had +# rmul=\E!\0, smul=\E!\040, +# which is probably wrong, it collides with kf0 +pe7000m|Perkin Elmer 7000 series monochrome monitor, + am, + cols#80, lines#24, + bel=^G, cbt=\E!Y, clear=\EK, cr=\r, cub1=\ED, cud1=\EB, + cuf1=\EC, cup=\ES%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, + ed=\EJ, el=\EI, home=\EH, ind=\n, + is1=\E!\0\EW 7o\Egf\ES7\s, kbs=^H, kcub1=\E!V, + kcud1=\E!U, kcuf1=\E!W, kcuu1=\E!T, kf0=\E!\0, kf1=\E!^A, + kf10=\E!\n, kf2=\E!^B, kf3=\E!^C, kf4=\E!^D, kf5=\E!^E, + kf6=\E!^F, kf7=\E!^G, kf8=\E!^H, kf9=\E!^I, khome=\E!S, + ll=\ES7\s, ri=\ER, +pe7000c|Perkin Elmer 7000 series colour monitor, + is1=\E!\0\EW 7o\Egf\Eb0\Ec7\ES7\s, rmso=\Eb0, + rmul=\E!\0, smso=\Eb2, smul=\E!\s, use=pe7000m, + +#### Sperry Univac +# +# Sperry Univac has merged with Burroughs to form Unisys. +# + +# This entry is for the Sperry UTS30 terminal running the TTY +# utility under control of CP/M Plus 1R1. The functionality +# provided is comparable to the DEC vt100. +# (uts30: I added <rmam>/<smam> based on the init string -- esr) +uts30|Sperry UTS30 with cp/m@1R1, + am, bw, hs, + cols#80, lines#24, wsl#40, + 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, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, 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, il1=\EN, + ind=\n, indn=\E[%p1%dB, is2=\E[U 7\E[24;1H, kbs=^H, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, khome=\E[H, + rc=\EX, rev=\E[7m, rf=/usr/share/tabset/vt100, ri=\EI, + rin=\E[%p1%dA, rmacs=\Ed, rmam=\E[?7l, rmso=\E[m, + rmul=\E[m, rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, + sc=\EW, sgr0=\E[m, smacs=\EF, smam=\E[?7m, smso=\E[7m, + smul=\E[4m, tsl=\E], uc=\EPB, + +#### Tandem +# +# Tandem builds these things for use with its line of fault-tolerant +# transaction-processing computers. They aren't generally available +# on the merchant market, and so are fairly uncommon. +# + +tandem6510|adm3a repackaged by Tandem, + use=adm3a, + +# A funny series of terminal that TANDEM uses. The actual model numbers +# have a fourth digit after 653 that designates minor variants. These are +# natively block-mode and rather ugly, but they have a character mode which +# this doubtless(?) exploits. There is a 6520 that is slightly dumber. +# (tandem653: had ":sb=\ES:", probably someone's mistake for sf; also, +# removed <if=/usr/share/tabset/tandem653>, no such file -- esr) +tandem653|t653x|Tandem 653x multipage terminal, + OTbs, am, da, db, hs, + cols#80, lines#24, wsl#64, xmc#1, + clear=\EI, cub1=^H, cud1=\n, cuf1=\EC, + cup=\023%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dsl=\Eo\r, + ed=\EJ, el=\EK, fsl=\r, home=\EH, ind=\ES, ri=\ET, rmso=\E6\s, + rmul=\E6\s, sgr0=\E6\s, smso=\E6$, smul=\E60, tsl=\Eo, + +#### Tandy/Radio Shack +# +# Tandy has a line of VDTs distinct from its microcomputers. +# + +dmterm|deskmate terminal, + am, bw, + cols#80, lines#24, + bel=^G, civis=\EG5, clear=\Ej, cnorm=\EG6, cr=\r, cub1=^H, + cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=\EA, dch1=\ES, dl1=\ER, ed=\EJ, el=\EK, home=\EH, ht=^I, + ich1=\EQ, il1=\EP, ind=\EX, invis@, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, kf0=\E1, kf1=\E2, kf2=\E3, kf3=\E4, + kf4=\E5, kf5=\E6, kf6=\E7, kf7=\E8, kf8=\E9, kf9=\E0, + khome=\EH, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, + lf6=f7, lf7=f8, lf8=f9, lf9=f10, ll=\EE, rmul@, smul@, + use=adm+sgr, +dt100|dt-100|Tandy DT-100 terminal, + xon, + 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, cud1=\E[B, + cuf1=\E[C, cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, + 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=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, + acsc=jjkkllmmnnqqttuuvvwwxx, bel=^G, clear=\E[H\E[2J, + cr=\r, csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, + cuf1=\E[C, cup=\010\E[%i%p1%d;%p2%dH, cuu1=\E[A, + 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=vt220+cvis, +pt210|TRS-80 PT-210 printing terminal, + hc, os, + cols#80, + bel=^G, cr=\r, cud1=\n, ind=\n, + +#### Tektronix (tek) +# +# Tektronix tubes are graphics terminals. Most of them use modified +# oscilloscope technology incorporating a long-persistence green phosphor, +# and support vector graphics on a main screen with an attached "dialogue +# area" for interactive text. +# + +tek|tek4012|Tektronix 4012, + OTbs, os, + cols#75, lines#35, + bel=^G, clear=\E\014$<1000>, cr=\r, cub1=^H, cud1=\n, + ff=\014$<1000>, is2=\E^O, +# (tek4013: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr) +tek4013|Tektronix 4013, + acsc=, rmacs=\E^O, smacs=\E^N, use=tek4012, +tek4014|Tektronix 4014, + cols#81, lines#38, + is2=\E\017\E9, use=tek4012, +# (tek4015: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr) +tek4015|Tektronix 4015, + acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014, +tek4014-sm|Tektronix 4014 in small font, + cols#121, lines#58, + is2=\E\017\E:, use=tek4014, +# (tek4015-sm: added <acsc> to suppress tic warnings re <smacs>/<rmacs> --esr) +tek4015-sm|Tektronix 4015 in small font, + acsc=, rmacs=\E^O, smacs=\E^N, use=tek4014-sm, +# Tektronix 4023 from Andrew Klossner <orca!andrew.tektronix@csnet-relay> +# +# You need to have "stty nl2" in effect. Some versions of tset(1) know +# how to set it for you. +# +# It's got the Magic Cookie problem around stand-out mode. If you can't +# live with Magic Cookie, remove the :so: and :se: fields and do without +# reverse video. If you like reverse video stand-out mode but don't want +# it to flash, change the letter 'H' to 'P' in the :so: field. +tek4023|Tektronix 4023, + OTbs, am, + OTdN#4, cols#80, lines#24, vt#4, xmc#1, + OTnl=\n, bel=^G, clear=\E\014$<4/>, cr=\r, cub1=^H, cud1=\n, + cuf1=^I, cup=\034%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, + rmso=^_@, smso=^_P, +# It is recommended that you run the 4025 at 4800 baud or less; +# various bugs in the terminal appear at 9600. It wedges at the +# bottom of memory (try "cat /usr/dict/words"); ^S and ^Q typed +# on keyboard don't work. You have to hit BREAK twice to get +# one break at any speed - this is a documented feature. +# Can't use cursor motion because it's memory relative, and +# because it only works in the workspace, not the monitor. +# Same for home. Likewise, standout only works in the workspace. +# +# <el> was commented out since vi and rogue seem to work better +# simulating it with lots of spaces! +# +# <il1> and <il> had 145ms of padding, but that slowed down vi's ^U +# and didn't seem necessary. +# +tek4024|tek4025|tek4027|Tektronix 4024/4025/4027, + OTbs, am, da, db, + cols#80, it#8, lines#34, lm#0, + bel=^G, clear=\037era\r\n\n, cmdch=^_, cr=\r, + cub=\037lef %p1%d\r, cub1=^H, cud=\037dow %p1%d\r, + cud1=^F\n, cuf=\037rig %p1%d\r, cuf1=\037rig\r, + cuu=\037up %p1%d\r, cuu1=^K, dch1=\037dch\r, + dl=\037dli %p1%d\r\006, dl1=\037dli\r\006, + ed=\037dli 50\r, ht=^I, ich1=\037ich\r \010, + il=\037up\r\037ili %p1%d\r, il1=\037up\r\037ili\r, + ind=^F\n, + is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r, + rmkx=\037lea\sp2\r\037lea\sp4\r\037lea\sp6\r\037lea\sp8\r + \037lea\sf5\r, + smkx=\037lea\sp4\s/h/\r\037lea\sp8\s/k/\r\037lea\sp6\s/\s/ + \r\037lea\sp2\s/j/\r\037lea\sf5\s/H/\r, +tek4025-17|Tektronix 4025 17 line window, + lines#17, use=tek4025, +tek4025-17-ws|Tektronix 4025 17 line window in workspace, + is2=!com\s31\r\n\037sto\s9\s17\s25\s33\s41\s49\s57\s65\s73 + \r\037wor\s17\r\037mon\s17\r, + rmcup=\037mon h\r, rmso=\037att s\r, smcup=\037wor h\r, + smso=\037att e\r, use=tek4025-17, +tek4025-ex|tek4027-ex|Tektronix 4025/4027 w/!, + is2=\037com 33\r\n!sto 9 17 25 33 41 49 57 65 73\r, + rmcup=\037com 33\r, smcup=!com 31\r, use=tek4025, +# Tektronix 4025a +# From: Doug Gwyn <gwyn@brl-smoke.ARPA> +# The following status modes are assumed for normal operation (replace the +# initial "!" by whatever the current command character is): +# !COM 29 # NOTE: changes command character to GS (^]) +# ^]DUP +# ^]ECH R +# ^]EOL +# ^]RSS T +# ^]SNO N +# ^]STO 9 17 25 33 41 49 57 65 73 +# Other modes may be set according to communication requirements. +# If the command character is inadvertently changed, termcap can't restore it. +# Insert-character cannot be made to work on both top and bottom rows. +# Clear-to-end-of-display emulation via !DLI 988 is too grotty to use, alas. +# There also seems to be a problem with vertical motion, perhaps involving +# delete/insert-line, following a typed carriage return. This terminal sucks. +# Delays not specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +# (tek4025a: removed obsolete ":xx:". This may mean the tek4025a entry won't +# work any more. -- esr) +tek4025a|Tektronix 4025A, + OTbs, OTpt, am, bw, da, db, xon, + cols#80, it#8, lines#34, + bel=^G, cbt=\035bac;, clear=\035era;\n\035rup;, cmdch=^], + cr=\r, cub=\035lef %p1%d;, cub1=^H, cud=\035dow %p1%d;, + cud1=\n, cuf=\035rig %p1%d;, cuf1=\035rig;, + cuu=\035up %p1%d;, cuu1=^K, dch=\035dch %p1%d;, + dch1=\035dch;, dl=\035dli %p1%d;, dl1=\035dli;, + el=\035dch 80;, hpa=\r\035rig %p1%d;, ht=^I, + il1=\013\035ili;, ind=\n, indn=\035dow %p1%d;, + rs2=!com\s29\035del\s0\035rss\st\035buf\035buf\sn\035cle + \035dis\035dup\035ech\sr\035eol\035era\sg\035for\sn + \035pad\s203\035pad\s209\035sno\sn\035sto\s9\s17\s25 + \s33\s41\s49\s57\s65\s73\035wor\s0;, + tbc=\035sto;, +# From: cbosg!teklabs!davem Wed Sep 16 21:11:41 1981 +# Here's the command file that I use to get rogue to work on the 4025. +# It should work with any program using the old curses (e.g. it better +# not try to scroll, or cursor addressing won't work. Also, you can't +# see the cursor.) +# (This "learns" the arrow keys for rogue. I have adapted it for termcap - mrh) +tek4025-cr|Tektronix 4025 for curses and rogue, + OTbs, am, + cols#80, it#8, lines#33, + clear=\037era;, cub1=^H, cud1=^F\n, cuf1=\037rig;, + cup=\037jum%i%p1%d\,%p2%d;, cuu1=^K, ht=^I, ind=^F\n, + is2=!com 31\r\n\037sto 9 17 25 33 41 49 57 65 73\r, + rmcup=\037wor 0, smcup=\037wor 33h, +# next two lines commented out since curses only allows 128 chars, sigh. +# :ti=\037lea p1/b/\037lea p2/j/\037lea p3/n/\037lea p4/h/\037lea p5/ /\037lea p6/l/\037lea p7/y/\037lea p8/k/\037lea p9/u/\037lea p./f/\037lea pt/`era w/13\037lea p0/s/\037wor 33h:\ +# :te=\037lea p1\037lea p2\037lea p3\037lea p4\037lea pt\037lea p5\037lea p6\037lea p7\037lea p8\037lea p9/la/13\037lea p.\037lea p0\037wor 0: +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, + acsc=, bel=^G, blink=\E[=3;<7m, bold=\E[=7;<4m, cbt=\E[Z, + clear=\E[2J\E[H, cr=\r, cub1=\E[1D, cud1=\E[1B, cuf1=\E[1C, + cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[1A, dch1=\E[1P, + dim=\E[=1;<6m, dl1=\E[1M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, + il1=\E[1L, ind=\E[S, invis=\E[=6;<5, is1=\E%!1\E[m, + is2=\E%!1\E[?6141\E[m, kbs=^H, kcub1=\E[1D, kcud1=\E[1B, + kcuf1=\E[1C, kcuu1=\E[1A, rev=\E[=1;<3m, ri=\E[T, + rmacs=\E[m, rmcup=, rmir=\E[4l, rmso=\E[=0;<1m, + rmul=\E[=0;<1m, sgr0=\E[=0;<1m, smacs=\E[1m, + smcup=\E%!1\E[?6l\E[2J, smir=\E[4h, smso=\E[=2;<3m, + smul=\E[=5;<2m, tbc=\E[1g, + +# (tek4105-30: I added <rmam>/<smam> based on the init string -- esr) +tek4105-30|Tektronix 4015 emulating 30 line vt100, + am, mir, msgr, xenl, xon, + cols#80, it#8, lines#30, vt#3, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m$<2>, bold=\E[1m$<2>, + clear=\E[H\E[J$<50>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, + cuf=\E[%p1%dC, cuf1=\E[C$<2>, + cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, + cuu1=\E[A$<2>, ed=\E[J$<50>, el=\E[K$<3>, el1=\E[1K$<3>, + enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, ind=\n, kbs=^H, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, rc=\E8, + 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, sc=\E7, + 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=vt100+fnkeys, + +# Tektronix 4105 from BRL +# The following setup modes are assumed for normal operation: +# CODE ansi CRLF no DABUFFER 141 +# DAENABLE yes DALINES 30 DAMODE replace +# DAVISIBILITY yes ECHO no EDITMARGINS 1 30 +# FLAGGING input INSERTREPLACE replace LFCR no +# ORIGINMODE relative PROMPTMODE no SELECTCHARSET G0 B +# SELECTCHARSET G1 0 TABS -2 +# Other setup modes may be set for operator convenience or communication +# requirements; I recommend +# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes +# BYPASSCANCEL <LF> CURSORKEYMODE no DAINDEX 1 0 0 +# EOFSTRING '' EOLSTRING <CR> EOMCHARS <CR> <NU> +# GAMODE overstrike GCURSOR 0 100 0 GSPEED 10 1 +# IGNOREDEL no KEYEXCHAR <DL> NVDEFINE -53 "<NU>" +# PROMPTSTRING '' QUEUESIZE 2460 WINDOW 0 0 4095 3132 +# XMTDELAY 0 +# and factory color maps. After setting these modes, save them with NVSAVE. No +# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +# "IC" cannot be used in combination with "im" & "ei". +# "tek4105a" is just a guess: +tek4105a|Tektronix 4105, + OTbs, OTpt, msgr, xon, + OTkn#8, cols#80, it#8, lines#30, vt#3, + acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J, + cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, 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=\EM, cvvis=\E%!0\ETD70\E%!1, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, + il=\E[%p1%dL, il1=\E[L, 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, rc=\E8, 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, + 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>, + sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, + smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + use=ecma+index, + +# +# Tektronix 4106/4107/4109 from BRL +# The following setup modes are assumed for normal operation: +# CODE ansi COLUMNMODE 80 CRLF no +# DABUFFER 141 DAENABLE yes DALINES 32 +# DAMODE replace DAVISIBILITY yes ECHO no +# EDITMARGINS 1 32 FLAGGING input INSERTREPLACE replace +# LFCR no LOCKKEYBOARD no ORIGINMODE relative +# PROMPTMODE no SELECTCHARSET G0 B SELECTCHARSET G1 0 +# TABS -2 +# Other setup modes may be set for operator convenience or communication +# requirements; I recommend +# ACURSOR 1 0 AUTOREPEAT yes AUTOWRAP yes +# BYPASSCANCEL <LF> CURSORKEYMODE no DAINDEX 1 0 0 +# EOFSTRING '' EOLSTRING <CR> EOMCHARS <CR> <NU> +# GAMODE overstrike GCURSOR 0 100 0 GSPEED 9 3 +# IGNOREDEL no KEYEXCHAR <DL> NVDEFINE -53 "<NU>" +# PROMPTSTRING '' QUEUESIZE 2620 WINDOW 0 0 4095 3132 +# XMTDELAY 0 +# and factory color maps. After setting these modes, save them with NVSAVE. No +# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +# "IC" cannot be used in combination with "im" & "ei". +tek4106brl|tek4107brl|tek4109brl|Tektronix 4106 4107 or 4109, + msgr, xon, + cols#80, it#8, lines#32, vt#3, + acsc=, bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, + civis=\E%!0\ETD00\E%!1, clear=\E[H\E[J, + cnorm=\E%!0\ETD10\E%!1, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, 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=\EM, cvvis=\E%!0\ETD70\E%!1, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, home=\E[H, ht=^I, hts=\EH, + il=\E[%p1%dL, il1=\E[L, 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, rc=\E8, 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, + 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>, + sc=\E7, sgr0=\E[m, smacs=^N, smcup=\E[?6l, smir=\E[4h, + smkx=\E[?1h\E=, smso=\E[7;42m, smul=\E[4m, tbc=\E[3g, + use=ecma+index, + +# Refer to: +# TEK Programmer's Reference +# Part No. 070-4893-00 +# Product Group 18 +# 4107/4109 Computer Display Terminal +# November 1983 +# +# Tektronix 4107/4109 interpret 4 modes using "\E%!" followed by a code: +# 0 selects Tek mode, i.e., \E%!0 +# 1 selects ANSI mode +# 2 selects ANSI edit-mode +# 3 selects VT52 mode +# +# One odd thing about the description (which has been unchanged since the 90s) +# is that the cursor addressing is using VT52 mode, and a few others use the +# VT52's non-CSI versions of ANSI, e.g., \EJ. A possible explanation is that +# the developer used Emacs, which misuses cvvis (this description sets VT52 +# mode in that capability). +tek4107|tek4109|Tektronix terminals 4107 4109, + OTbs, am, mir, msgr, ul, xenl, xt, + cols#79, it#8, lines#29, + bel=^G, blink=\E%!1\E[5m$<2>\E%!0, + bold=\E%!1\E[1m$<2>\E%!0, clear=\ELZ, cnorm=\E%!0, cr=\r, + cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\E%!3, + dim=\E%!1\E[<0m$<2>\E%!0, ed=\EJ, el=\EK, ht=^I, ind=\n, + kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + rev=\E%!1\E[7m$<2>\E%!0, ri=\EI, + rmso=\E%!1\E[m$<2>\E%!0, rmul=\E%!1\E[m$<2>\E%!0, + sgr=\E%%!1\E[%?%p1%t;7;5%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%; + %?%p5%t<0%;%?%p6%t;1%;m$<2>\E%%!0, + sgr0=\E%!1\E[m$<2>\E%!0, smso=\E%!1\E[7;5m$<2>\E%!0, + smul=\E%!1\E[4m$<2>\E%!0, +# Tektronix 4207 with sysline. In the ancestral termcap file this was 4107-s; +# see the note attached to tek4207. +tek4207-s|Tektronix 4207 with sysline but no memory, + eslok, hs, + dsl=\E7\E[?6l\E[2K\E[?6h\E8, fsl=\E[?6h\E8, + is1=\E%!1\E[2;32r\E[132D\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, + is2=\E7\E[?6l\E[2K\E[?6h\E8, + tsl=\E7\E[?6l\E[2K\E[;%i%df, use=tek4107, + +# The 4110 series may be a wonderful graphics series, but they make the 4025 +# look good for screen editing. In the dialog area, you can't move the cursor +# off the bottom line. Out of the dialog area, ^K moves it up, but there +# is no way to scroll. +# +# Note that there is a floppy for free from Tek that makes the +# 4112 emulate the vt52 (use the vt52 termcap). There is also +# an expected enhancement that will use ANSI standard sequences. +# +# 4112 in non-dialog area pretending to scroll. It really wraps +# but vi is said to work (more or less) in this mode. +# +# 'vi' works reasonably well with this entry. +# +otek4112|o4112-nd|otek4113|otek4114|old Tektronix 4110 series, + am, + cols#80, lines#34, + bel=^G, clear=\E^L, cr=\r, cub1=^H, cud1=\n, cuu1=^K, ind=\n, + rmcup=\EKA1\ELV1, smcup=\EKA0\ELV0\EMG0, +# The 4112 with the ANSI compatibility enhancement +tek4112|tek4114|Tektronix 4110 series, + OTbs, am, db, + 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, +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 +# previously \0410 and \0411 sequences...I don't *think* they were supposed +# to be 4-digit octal -- esr) +tek4113|Tektronix 4113 color graphics with 5 line dialog area, + OTbs, am, da, eo, + cols#80, lines#5, + clear=\ELZ, cub1=^H, cud1=\n, cuf1=\ELM1 \ELM0, + flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4 + \ERBA4\ERBA4\ERB0, + is2=\EKA1\ELL5\ELV0\ELV1, uc=\010\ELM1_\ELM0, +tek4113-34|Tektronix 4113 color graphics with 34 line dialog area, + lines#34, + is2=\EKA1\ELLB2\ELV0\ELV1, use=tek4113, +# :ns: left off to allow vi visual mode. APL font (:as=\E^N:/:ae=\E^O:) not +# supported here. :uc: is slow, but looks nice. Suggest setenv MORE -up . +# :vb: needs enough delay to let you see the background color being toggled. +tek4113-nd|Tektronix 4113 color graphics with no dialog area, + OTbs, am, eo, + cols#80, it#8, lines#34, + clear=\E^L, cub1=^H, cud1=\n, cuf1=^I, cuu1=^K, + cvvis=\ELZ\EKA0, + flash=\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4\ERBA4 + \ERBA4\ERBA4\ERB0, + home=\ELF7l\177 @, ht=^I, is2=\ELZ\EKA0\ELF7l\177 @, + ll=\ELF hl @, rmso=\EMT1, smso=\EMT2, uc=\010\EMG1_\EMG0, +# This entry is from Tek. Inc. (Brian Biehl) +# (tek4115: :bc: renamed to :le:, <rmam>/<smam> added based on init string -- esr) +otek4115|Tektronix 4115, + OTbs, am, da, db, eo, + cols#80, it#8, lines#34, + cbt=\E[Z, clear=\E[H\E[2J, + cnorm=\E%!0\ELBG8\E%!1\E[34;1H, cub1=\E[D, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, + 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, + 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, +tek4115|newer Tektronix 4115 entry with more ANSI capabilities, + am, xon, + cols#80, lines#34, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[J, + cr=\r, cub=\E[%p1%dD, 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, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, hpa=\E[%p1%{1}%+%dG, + ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, ind=\n, invis=\E[8m, kbs=^H, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, rev=\E[7m, + rmam=\E[?7l, rmso=\E[m, rmul=\E[m, + sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1; + %;%?%p7%t8;%;m, + sgr0=\E[m, smam=\E[?7h, smso=\E[7m, smul=\E[4m, tbc=\E[3g, + vpa=\E[%p1%{1}%+%dd, use=ansi+rep, +# The tek4125 emulates a vt100 incorrectly - the scrolling region +# command is ignored. The following entry replaces <csr> with the needed +# <il>, <il>, and <smir>; removes some cursor pad commands that the tek4125 +# chokes on; and adds a lot of initialization for the Tektronix dialog area. +# Note that this entry uses all 34 lines and sets the cursor color to green. +# Steve Jacobson 8/85 +# (tek4125: there were two "\!"s in the is that I replaced with "\E!"; +# commented out, <smir>=\E1 because there's no <rmir> -- esr) +tek4125|Tektronix 4125, + lines#34, + csr@, dl1=\E[1M, il1=\E[1L, + is2=\E%\E!0\EQD1\EUX03\EKA\ELBB2\ELCE0\ELI100\ELJ2\ELLB2 + \ELM0\ELS1\ELX00\ELV1\E%\E!1\E>\E[?3l\E[?4l\E[?5l\E[?7h + \E[?8h, + rc@, sc@, smkx=\E=, use=vt100+4bsd, + +# From: <jcoker@ucbic> +# (tek4207: This was the termcap file's entry for the 4107/4207, but SCO +# supplied another, less capable 4107 entry. So we'll use that for 4107 and +# note that if jcoker wasn't confused you may be able to use this one. +# I merged in <msgr>,<ind>,<ri>,<invis>,<tbc> from a BRL entry -- esr) +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, + 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, + +# From: <carolyn@dali.berkeley.edu> Thu Oct 31 12:54:27 1985 +# (tek4404: There was a "\!" in <smcup> that I replaced with "\E!". +# Tab had been given as \E2I,that must be the tab-set capability -- esr) +tek4404|Tektronix 4404, + OTbs, + cols#80, it#8, lines#32, + blink=\E[5m, 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, 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, rc=\E8, + rmcup=\E[1;1H\E[0J\E[?6h\E[?1l, rmir=\E[4l, + rmkx=\E[?1h, rmso=\E[27m, rmul=\E[m, sc=\E7, 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, +# Some unknown person wrote: +# I added the is string - straight Unix has ESC ; in the login +# string which sets a ct8500 into monitor mode (aka 4025 snoopy +# mode). The is string here cleans up a few things (but not +# everything). +ct8500|Tektronix ct8500, + am, bw, da, db, + cols#80, lines#25, + bel=^G, cbt=\E^I, clear=\E^E, cr=\r, cub1=^H, cud1=\n, + cuf1=\ES, cup=\E|%p1%{32}%+%c%p2%{32}%+%c, cuu1=\ER, + dch1=\E^], dl1=\E\r, ed=\E^U, el=\E^T, ht=^I, ich1=\E^\, + il1=\E^L, ind=\n, is2=\037\EZ\Ek, ri=\E^A, rmso=\E\s, + rmul=\E\s, sgr0=\E\s, smso=\E$, smul=\E!, + +# Tektronix 4205 terminal. +# +# am is not defined because the wrap around occurs not when the char. +# is placed in the 80'th column, but when we are attempting to type +# the 81'st character on the line. (esr: hmm, this is like the vt100 +# version of xenl, perhaps am + xenl would work!) +# +# Bold, dim, and standout are simulated by colors and thus not allowed +# with colors. The Tektronix color table is mapped into the RGB color +# table by setf/setb. All colors are reset to factory specifications by oc. +# The <initc> cap uses RGB notation to define colors. for arguments 1-3 the +# interval (0-1000) is broken into 8 smaller sub-intervals (125). Each sub- +# interval then maps into pre-defined value. +tek4205|Tektronix 4205, + ccc, mir, msgr, + 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, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + 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, + 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}%< + %tA?%e%p2%{500}%<%tC8%e%p2%{625}%<%tD4%e%p2%{750}%<%tE + 1%e%p2%{875}%<%tE:%eF4%;%?%p3%{125}%<%t0%e%p3%{250}%< + %tA2%e%p3%{375}%<%tA?%e%p3%{500}%<%tC8%e%p3%{625}%<%tD + 4%e%p3%{750}%<%tE1%e%p3%{875}%<%tE:%eF4%;%?%p4%{125}%< + %t0%e%p4%{250}%<%tA2%e%p4%{375}%<%tA?%e%p4%{500}%<%tC8 + %e%p4%{625}%<%tD4%e%p4%{750}%<%tE1%e%p4%{875}%<%tE:%eF + 4%;\E%%!1, + invis=\E[=6;<5, is1=\E%!0\ETM1\E%!1\E[m, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kf0=\EOA, + kf1=\EOB, kf2=\EOC, kf3=\EOD, kf4=\EP, kf5=\EQ, kf6=\ER, + kf7=\ES, + 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, + 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%;, + setf=\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%;, + 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, + +#### Teletype (tty) +# +# These are the hardcopy Teletypes from before AT&T bought the company, +# clattering electromechanical dinosaurs in Bakelite cases that printed on +# pulpy yellow roll paper. If you remember these you go back a ways. +# Teletype-branded VDTs are listed in the AT&T section. +# +# The earliest UNIXes were designed to use these clunkers; nroff and a few +# other programs still default to emitting codes for the Model 37. +# + +tty33|tty35|model 33 or 35 teletype, + hc, os, xon, + cols#72, + bel=^G, cr=\r, cud1=\n, ind=\n, +tty37|model 37 teletype, + OTbs, hc, os, xon, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E7, hd=\E9, hu=\E8, + ind=\n, + +# There are known to be at least three flavors of the tty40, all seem more +# like IBM half duplex forms fillers than ASCII terminals. They have lots of +# awful braindamage, such as printing a visible newline indicator after each +# newline. The 40-1 is a half duplex terminal and is hopeless. The 40-2 is +# braindamaged but has hope and is described here. The 40-4 is a 3270 +# lookalike and beyond hope. The terminal has visible bell but I don't know +# it - it's null here to prevent it from showing the BL character. +# There is an \EG in <nl> because of a bug in old vi (if stty says you have +# a "newline" style terminal (-crmode) vi figures all it needs is nl +# to get crlf, even if <cr> is not ^M.) +# (tty40: removed obsolete ":nl=\EG\EB:", it's just do+cr -- esr) +tty40|ds40|ds40-2|dataspeed40|Teletype dataspeed 40/2, + OTbs, xon, + cols#80, lines#24, + clear=\EH$<20>\EJ$<80>, cr=\EG, cub1=^H, cud1=\EB, + cuf1=\EC, cuu1=\E7, dch1=\EP$<50>, dl1=\EM$<50>, + ed=\EJ$<75>, home=\EH$<10>, ht=\E@$<10>, hts=\E1, + ich1=\E\^$<50>, il1=\EL$<50>, ind=\ES$<20>, kbs=^], + kcub1=^H, mc4=^T, mc5=\022$<2000>, ri=\ET$<10>, rmso=\E4, + rs2=\023\ER$<60>, smso=\E3, tbc=\EH\E2$<80>, +tty43|model 43 teletype, + OTbs, am, hc, os, xon, + cols#132, + bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n, kbs=^H, + +#### Tymshare +# + +# You can add <is2=\E<> to put this 40-column mode, though I can't +# for the life of me think why anyone would want to. +scanset|sc410|sc415|Tymshare Scan Set, + am, bw, msgr, + cols#80, lines#24, + acsc=j%k4l<m-q\,x5, bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, + cud1=\n, cuf1=^I, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, ed=\EJ, el=\EK, home=\EH, ind=\n, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, mc0=\E;3, mc4=\E;0, + mc5=\E;0, rc=^C, rmacs=^O, rs1=\E>, sc=^B, smacs=^N, + +#### Volker-Craig (vc) +# +# If you saw a Byte Magazine cover with a terminal on it during the early +# 1980s, it was probably one of these. Carl Helmers liked them because +# they could crank 19.2 and were cheap (that is, he liked them until he tried +# to program one...) +# + +# Missing in vc303a and vc303 descriptions: they scroll 2 lines at a time +# every other linefeed. +vc303|vc103|vc203|Volker-Craig 303, + OTbs, OTns, am, + cols#80, lines#24, + bel=^G, clear=\014$<40>, cr=\r, cub1=^H, cud1=\n, cuf1=^I, + cuu1=^N, home=\013$<40>, kcub1=^H, kcud1=\n, kcuf1=^I, + kcuu1=^N, ll=\017$<1>W, +vc303a|vc403a|Volker-Craig 303a, + clear=\030$<40>, cuf1=^U, cuu1=^Z, el=\026$<20>, + home=\031$<40>, kcuf1=^U, kcuu1=^Z, ll=^P, use=vc303, +# (vc404: removed obsolete ":ma=^Z^P^U :" -- esr) +vc404|Volker-Craig 404, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\030$<40>, cr=\r, cub1=^H, cud1=\n, cuf1=^U, + cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, + ed=\027$<40>, el=\026$<20>, home=\031$<40>, ind=\n, + kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^Z, +vc404-s|Volker-Craig 404 w/standout mode, + cud1=\n, rmso=^O, smso=^N, use=vc404, +# From: <wolfgang@cs.sfu.ca> +# (vc414: merged in cup/dl1/home from an old vc414h-noxon) +vc414|vc414h|Volker-Craig 414H in sane escape mode., + OTbs, am, + cols#80, lines#24, + clear=\E\034$<40>, cud1=\E^K, cuf1=^P, + cup=\E\021%p2%c%p1%c$<40>, cuu1=\E^L, dch1=\E3, + dl1=\E\023$<40>, ed=\E^X, el=\E\017$<10/>, home=\E^R, + ich1=\E:, il1=\E\032$<40>, kcub1=^H, kcud1=\E^K, kcuf1=^P, + kcuu1=\E^L, kf0=\EA, kf1=\EB, kf2=\EC, kf3=\ED, kf4=\EE, + kf5=\EF, kf6=\EG, kf7=\EH, khome=\E^R, lf0=PF1, lf1=PF2, + lf2=PF3, lf3=PF4, lf4=PF5, lf5=PF6, lf6=PF7, lf7=PF8, + rmso=\E^_, smso=\E^Y, +vc415|Volker-Craig 415, + clear=^L, use=vc404, + +######## OBSOLETE PERSONAL-MICRO CONSOLES AND EMULATIONS +# + +#### IBM PC and clones +# + +# The pcplot IBM-PC terminal emulation program is really messed up. It is +# supposed to emulate a vt-100, but emulates the wraparound bug incorrectly, +# doesn't support scrolling regions, ignores add line commands, and ignores +# delete line commands. Consequently, the resulting behavior looks like a +# crude adm3a-type terminal. +# Steve Jacobson 8/85 +pcplot|pc-plot terminal emulation program, + xenl@, + csr@, dl@, dl1@, il@, il1@, rc@, sc@, use=vt100+4bsd, +# KayPro II from Richard G Turner <rturner at Darcom-Hq.ARPA> +# I've found that my KayPro II, running MDM730, continues to emulate an +# ADM-3A terminal, just like I was running TERM.COM. On our 4.2 UNIX +# system the following termcap entry works well: +# I have noticed a couple of minor glitches, but nothing I can't work +# around. (I added two capabilities from the BRL entry -- esr) +kaypro|kaypro2|kaypro II, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\032$<1/>, cr=\r, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dl1=\ER, ed=^W, + el=^X, home=^^, il1=\EE, ind=\n, kcud1=\n, kcuf1=^L, kcuu1=^K, + +# From IBM, Thu May 5 19:35:27 1983 +# (ibmpc: commented out <smir>=\200R because we don't know <rmir> -- esr) +ibm-pc|ibm5051|5051|IBM Personal Computer (no ANSI.SYS), + OTbs, am, + cols#80, lines#24, + bel=^G, clear=^L^K, cr=\r^^, cub1=^], cud1=\n, cuf1=^\, + cuu1=^^, home=^K, ind=\n$<10>, kcud1=^_, + +ibmpc|wy60-PC|wyse60-PC|IBM PC/XT running PC/IX, + OTbs, am, bw, eo, hs, km, msgr, ul, + cols#80, it#8, lines#24, + acsc=j\331k\277l\332m\300n\305q\304t\303u\264v\301w\302x + \263, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\Ec, cr=\r, + cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, 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, kbs=^H, + kcbt=^], kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kdch1=^?, kend=\E[Y, kf1=\240, kf10=\251, kf2=\241, kf3=\242, + kf4=\243, kf5=\244, kf6=\245, kf7=\246, kf8=\247, kf9=\250, + khome=\E[H, 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, + rmso=\E[m, rmul=\E[m, + sgr=\E[%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t;1 + %;%?%p7%t30;40%;m, + sgr0=\E[m, smso=\E[7m, smul=\E[4m, + +#### Apple II +# +# Apple II firmware console first, then various 80-column cards and +# terminal emulators. For two cents I'd toss all these in the UFO file +# along with the 40-column apple entries. +# + +# From: brsmith@umn-cs.cs.umn.edu (Brian R. Smith) via BRL +# 'it#8' tells UNIX that you have tabs every 8 columns. This is a +# function of TIC, not the firmware. +# The clear key on a IIgs will do something like clear-screen, +# depending on what you're in. +appleIIgs|appleIIe|appleIIc|Apple 80 column firmware interface, + OTbs, am, bw, eo, msgr, + cols#80, it#8, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^\, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], + home=^Y, ht=^I, ind=^W, kbs=^H, kclr=^X, kcub1=^H, kcud1=\n, + kcuf1=^U, kcuu1=^K, kdch1=^?, nel=\r^W, ri=^V, rmso=^N, + smso=^O, +# Apple //e with 80-column card, entry from BRL +# The modem interface is permitted to discard LF (maybe DC1), otherwise +# passing characters to the 80-column firmware via COUT (PR#3 assumed). +# Auto-wrap does not work right due to newline scrolling delay, which also +# requires that you set "stty cr2". +# Note: Cursor addressing is only available via the Pascal V1.1 entry, +# not via the BASIC PR#3 hook. All this nonsense can be avoided only by +# using a terminal emulation program instead of the built-in firmware. +apple2e|Apple //e, + bw, msgr, + cols#80, lines#24, + bel=^G, clear=\014$<100/>, cub1=^H, cud1=\n, cuu1=^_, + ed=\013$<4*/>, el=\035$<4/>, home=^Y, ht=^I, ind=^W, + is2=^R^N, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^U, kcuu1=^K, + nel=\r$<100/>, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N, + smso=^O, +# mcvax!vu44!vu45!wilcke uses the "ap" entry together with Ascii Express Pro +# 4.20, with incoming and outgoing terminals both on 0, emulation On. +apple2e-p|Apple //e via Pascal, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, kbs=^H, kcub1=^H, + kcud1=\n, use=apple2e, +# (ASCII Express) MouseTalk "Standard Apple //" emulation from BRL +# Enable DC3/DC1 flow control with "stty ixon -ixany". +apple-ae|ASCII Express, + OTbs, am, bw, msgr, nxon, xon, + cols#80, it#8, lines#24, + bel=\007$<500/>, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^U, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], + home=^Y, ind=^W, is2=^R^N, kclr=^X, kcub1=^H, kcud1=\n, + kcuf1=^U, kcuu1=^K, rev=^O, ri=^V, rmso=^N, rs1=^R^N, sgr0=^N, + smso=^O, +appleII|Apple II plus, + OTbs, am, + cols#80, it#8, lines#24, + clear=^L, cnorm=^TC2, cub1=^H, cud1=\n, cuf1=^\, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, cvvis=^TC6, + ed=^K, el=^], flash=\024G1$<200/>\024T1, home=\E^Y, ht=^I, + is2=^TT1^N, kcud1=\n, kcuf1=^U, rmso=^N, sgr0=^N, smso=^O, +# Originally by Gary Ford 21NOV83 +# From: <ee178aci%sdcc7@SDCSVAX.ARPA> Fri Oct 11 21:27:00 1985 +apple-80|Apple II with smarterm 80 col, + OTbs, am, bw, + cols#80, lines#24, + cbt=^R, clear=\014$<10*/>, cr=\r$<10*/>, cub1=^H, cud1=\n, + cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, + ed=\013$<10*/>, el=\035$<10/>, home=^Y, +apple-soroc|Apple emulating Soroc 120, + am, + cols#80, lines#24, + bel=^G, clear=\E*$<300>, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EY, el=\ET, + home=^^, ind=\n, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, +# From Peter Harrison, Computer Graphics Lab, San Francisco +# ucbvax!ucsfmis!harrison .....uucp +# ucbvax!ucsfmis!harrison@BERKELEY .......ARPA +# "These two work. If you don't have the inverse video chip for the +# Apple with videx then remove the :so: and :se: fields." +# (apple-videx: this used to be called DaleApple -- esr) +apple-videx|Apple with videx videoterm 80 column board with inverse video, + OTbs, am, xenl, + cols#80, it#8, lines#24, + clear=\014$<300/>, cub1=^H, cud1=\n, cuf1=^\, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], + home=^Y, ht=^I, kcub1=^H, kcud1=\n, kcuf1=^U, khome=^Y, + rmso=^Z2, sgr0=^Z2, smso=^Z3, +# My system [for reference] : Apple ][+, 64K, Ultraterm display card, +# Apple Cat ][ 212 modem, + more all +# controlled by ASCII Express: Pro. +# From Dave Shaver <isucs1!shaver> +apple-uterm-vb|Videx Ultraterm for Apple micros with Visible Bell, + OTbs, am, eo, xt, + cols#80, lines#24, + acsc=, clear=^L, cuf1=^\, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], + flash=^W35^W06, home=^Y, + is2=^V4^W06\017\rVisible Bell Installed.\016\r\n, + rmso=^N, smso=^O, +apple-uterm|Ultraterm for Apple micros, + OTbs, am, eo, xt, + cols#80, lines#24, + acsc=, clear=^L, cuf1=^\, + cup=\036%p2%{32}%+%c%p1%{32}%+%c, cuu1=^_, ed=^K, el=^], + home=^Y, is2=^V4^W06\016, rmso=^N, smso=^O, +# from trwrba!bwong (Bradley W. Wong): +# +# This entry assumes that you are using an apple with the UCSD Pascal +# language card. SYSTEM.MISCINFO is assumed to be the same as that +# supplied with the standard apple except that screenwidth should be set +# using SETUP to 80 columns. Note that the right arrow is not mapped in +# this termcap entry. This is because that key, on the Apple, transmits +# a ^U and would thus preempt the more useful "up" function of vi. +# +# HMH 2/23/81 +apple80p|80-column apple with Pascal card, + am, bw, + cols#80, lines#24, + clear=^Y^L, cuf1=^\:, cup=\036%p2%{32}%+%c%p1%{32}%+%c, + cuu1=^_, ed=^K, el=^], home=^Y, kcub1=^H, +# +# Apple II+ equipped with Videx 80 column card +# +# Terminfo from ihnp4!ihu1g!djc1 (Dave Christensen) via BRL; +# manually converted by D A Gwyn +# +# DO NOT use any terminal emulation with this data base, it works directly +# with the Videx card. This has been tested with vi 1200 baud and works fine. +# +# This works great for vi, except I've noticed in pre-R2, ^U will scroll back +# 1 screen, while in R2 ^U doesn't. +# For inverse alternate character set add: +# <smacs>=^O:<rmacs>=^N: +# (apple-v: added it#8 -- esr) +apple-videx2|Apple II+ w/ Videx card (similar to Datamedia h1520), + am, xenl, + cols#80, it#8, lines#24, + bel=\007$<100/>, clear=\014$<16*/>, cr=\r, cub1=^H, + cud1=\n, cuf1=^\, cup=\036%p2%{32}%+%c%p1%{32}%+%c, + cuu1=^_, ed=\013$<16*/>, el=^], home=^Y, ht=\011$<8/>, + ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^\, kcuu1=^_, + khome=^Y, rmso=^Z2, smso=^Z3, +apple-videx3|vapple|Apple II with 80 col card, + OTbs, am, + cols#80, lines#24, + clear=\Ev, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, el=\Ex, + home=\EH, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + kf0=\EP, kf1=\EQ, kf2=\ER, kf3=\E\s, kf4=\E!, kf5=\E", kf6=\E#, + kf7=\E$, kf8=\E%%, kf9=\E&, khome=\EH, +#From: decvax!cbosgd!cbdkc1!mww Mike Warren via BRL +aepro|Apple II+ running ASCII Express Pro--vt52, + OTbs, + cols#80, lines#24, + clear=\014$<300/>, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, + el=\EK, home=\EH, +# UCSD addition: Yet another termcap from Brian Kantor's Micro Munger Factory +apple-vm80|ap-vm80|Apple with viewmax-80, + OTbs, + cols#80, lines#24, + clear=\014$<300/>, cuf1=^\:, + cup=\036%p1%{32}%+%c%p2%{32}%+%c$<100/>, cuu1=^_, + ed=\013$<300/>, el=^], home=\031$<200/>, + +#### Apple Lisa & Macintosh +# + +# (lisa: changed <cvvis> to <cnorm> -- esr) +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, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, +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, + +# lisaterm from ulysses!gamma!epsilon!mb2c!jed (John E. Duncan III) via BRL; +# <is2> revised by Ferd Brundick <fsbrn@BRL.ARPA> +# +# These entries assume that the 'Auto Wraparound' is enabled. +# Xon-Xoff flow control should also be enabled. +# +# The vt100 uses :rs2: and :rf: rather than :is2:/:tbc:/:hts: because the tab +# settings are in non-volatile memory and don't need to be reset upon login. +# Also setting the number of columns glitches the screen annoyingly. +# You can type "reset" to get them set. +# +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, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, 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, 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, rc=\E8, + rev=\E[7m, ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rs1=\E>\E[?1l\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;24r, + sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, +# Lisaterm in 132 column ("wide") mode. +lisaterm-w|Apple Lisa with Lisaterm in 132 column mode, + cols#132, + kbs=^H, kcub1=^H, kcud1=\n, use=lisaterm, +# Although MacTerminal has insert/delete line, it is commented out here +# since it is much faster and cleaner to use the "lock scrolling region" +# method of inserting and deleting lines due to the MacTerminal implementation. +# Also, the "Insert/delete ch" strings have an extra character appended to them +# due to a bug in MacTerminal V1.1. Blink is disabled since it is not +# supported by MacTerminal. +mac|macintosh|Macintosh with MacTerminal, + xenl, + OTdN#30, + blink@, dch1=\E[P$<7/>, ich1=\E[@$<9/>, ip=$<7/>, use=lisa, +# Lisaterm in 132 column ("wide") mode. +mac-w|macterminal-w|Apple Macintosh with MacTerminal in 132 column mode, + cols#132, use=mac, + +#### Radio Shack/Tandy +# + +# (coco3: This had "ta" used incorrectly as a boolean and bl given as "bl#7". +# I read these as mistakes for ":it#8:" and ":bl=\007:" respectively -- esr) +# From: <{pbrown,ctl}@ocf.berkeley.edu> 12 Mar 90 +coco3|os9LII|Tandy CoCo3 24*80 OS9 Level II, + OTbs, am, + cols#80, it#8, lines#24, + bel=^G, blink=^_", bold=\E:^A, civis=^E\s, + clear=\014$<5*/>, cnorm=^E!, cub1=^H, cud1=\n, cuf1=^F, + cup=\002%p2%{32}%+%c%p1%{32}%+%c$<2/>, cuu1=^I, + dl1=^_1, ed=^K, el=^D, home=^A, il1=^_0, kcub1=^H, kcud1=\n, + kcuf1=^I, kcuu1=^L, rev=^_\s, rmso=^_!, rmul=^_#, + sgr0=\037!\E:\0, smso=^_\s, smul=^_", +# (trs2: removed obsolete ":nl=^_:" -- esr) +trs2|trsII|trs80II|Radio Shack Model II using P&T CP/M, + OTbs, am, msgr, + cols#80, it#8, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=^_, cuf1=^], + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^^, dl1=^K, ed=^B, + el=^A, home=^F, ht=^I, il1=^D, ind=\n, kbs=^H, kcub1=^\, + kcud1=^_, kcuf1=^], kcuu1=^^, rmso=^O, sgr0=^O, smso=^N, +# From: Kevin Braunsdorf <ksb@mentor.cc.purdue.edu> +# (This had extension capabilities +# :BN=\E[?33h:BF=\E[?33l:UC=\E[_ q:BC=\E[\177 q:\ +# :CN=\ERC:CF=\ERc:NR=\ERD:NM=\ER@: +# I also deleted the unnecessary ":kn#2:", ":sg#0:" -- esr) +trs16|trs-80 model 16 console, + OTbs, am, + cols#80, it#8, lines#24, + acsc=jak`l_mbquvewcxs, bel=^G, civis=\ERc, clear=^L, + cnorm=\ERC, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, + dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL, + ind=\n, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + kf0=^A, kf1=^B, kf2=^D, kf3=^L, kf4=^U, kf5=^P, kf6=^N, kf7=^S, + khome=^W, lf0=f1, lf1=f2, lf2=f3, lf3=f4, lf4=f5, lf5=f6, lf6=f7, + lf7=f8, mc4=\E]+, mc5=\E]=, rmacs=\ERg, rmso=\ER@, sgr0=\ER@, + smacs=\ERG, smso=\ERD, + +#### Commodore Business Machines +# +# Formerly located in West Chester, PA; went spectacularly bust in 1994 +# after years of shaky engineering and egregious mismanagement. Made one +# really nice machine (the Amiga) and boatloads of nasty ones (PET, C-64, +# C-128, VIC-20). The C-64 is said to have been the most popular machine +# ever (most units sold); they can still be found gathering dust in closets +# everywhere. +# + +# From: Kent Polk <kent@swrinde.nde.swri.edu>, 30 May 90 +# Added a few more entries, converted caret-type control sequence (^x) entries +# to '\0xx' entries since a couple of people mentioned losing '^x' sequences. +# Corrections by Ty Sarna <tsarna@endicor.com>, Sat Feb 28 18:55:15 1998 +# +# :as:, :ae: Support for alternate character sets. +# :ve=\E[\040p:vi=\E[\060\040p: cursor visible/invisible. +# :xn: vt100 kludginess at column 80/NEWLINE ignore after 80 cols(Concept) +# This one appears to fix a problem I always had with a line ending +# at 'width+1' (I think) followed by a blank line in vi. The blank +# line tended to disappear and reappear depending on how the screen +# was refreshed. Note that this is probably needed only if you use +# something like a Dnet Fterm with the window sized to some peculiar +# dimension larger than 80 columns. +# :k0=\E9~: map F10 to k0 - could have F0-9 -> k0-9, but ... F10 was 'k;' +# (amiga: removed obsolete :kn#10:, +# also added empty <acsc> to suppress a warning --esr) +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, clear=\E[H\E[J, cnorm=\E[ p, cub=\E[%p1%dD, + cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, + cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, 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=ecma+index, + +# From: Hans Verkuil <hans@wyst.hobby.nl>, 4 Dec 1995 +# (amiga: added empty <acsc> to suppress a warning. +# I'm told this entry screws up badly with AS225, the Amiga +# TCP/IP package once from Commodore, and now sold by InterWorks.--esr) +amiga-h|Hans Verkuil's Amiga ANSI, + OTbs, bw, msgr, + cols#80, lines#24, + acsc=, bel=^G, blink=\2337;2m, bold=\2331m, cbt=\233Z, + civis=\2330 p, clear=\233H\233J, cnorm=\233 p, cr=\r, + cub=\233%p1%dD, cub1=\233D, cud=\233%p1%dB, cud1=\233B, + cuf=\233%p1%dC, cuf1=\233C, cup=\233%i%p1%d;%p2%dH, + cuu=\233%p1%dA, cuu1=\233A, dch=\233%p1%dP, dch1=\233P, + dim=\2332m, ech=\233%p1%dP, ed=\233J, el=\233K, flash=^G, + home=\233H, ht=^I, ich=\233%p1%d@, ich1=\233@, ind=\233S, + indn=\233%p1%dS, invis=\2338m, is2=\23320l, kbs=^H, + kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, + kdch1=^?, kf0=\2339~, kf1=\2330~, kf2=\2331~, kf3=\2332~, + kf4=\2333~, kf5=\2334~, kf6=\2335~, kf7=\2336~, kf8=\2337~, + kf9=\2338~, nel=\233B\r, rev=\2337m, ri=\233T, + rin=\233%p1%dT, rmacs=^O, rmcup=\233?7h, rmso=\2330m, + rmul=\2330m, rs1=\Ec, sgr0=\2330m, smacs=^N, smcup=\233?7l, + smso=\2337m, smul=\2334m, + +# From: Henning 'Faroul' Peters <Faroul@beyond.kn-bremen.de>, 25 Sep 1999 +# +# Pavel Fedin added +# Home Shift+Left +# End Shift+Right +# PgUp Shift+Up +# PgDn Shift+Down +amiga-8bit|Amiga ANSI using 8-bit controls, + acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L, + ind=\204, indn@, kend=\233 @, khome=\233 A, knp=\233S, + kpp=\233T, ri=\215, rin@, use=amiga-h, + +# From: Ruediger Kuhlmann <terminfo@ruediger-kuhlmann.de>, 18 Jul 2000 +# requires use of appropriate preferences settings. +amiga-vnc|Amiga using VNC console (black on light gray), + am, da, db, msgr, ndscr, + btns#1, colors#16, cols#80, lines#24, lm#0, ncv#0, pairs#0x100, + bel=^G, blink=\E[7;2m, bold=\E[1m, civis=\E[0p, + clear=\E[H\E[J, cnorm=\E[p\E[>?6l, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\E[>?6h, dch=\E[%p1%dP, dch1=\E[P, dim=\E[2m, + dl=\E[%p1%dM, dl1=\E[1M, ed=\E[J, el=\E[K, flash=^G, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[1L, ind=\ED, + invis=\E8m, + is2=\E[>?2;18l\E[>?26;?6;20;>?15;?7;>?22;>?8h, + kbs=^H, kcbt=\233Z, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, + kcuu1=\E[A, kdch1=^?, 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~, 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, + 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=ecma+index, + +# MorphOS on Genesi Pegasos +# By Pavel Fedin <sonic_amiga@rambler.ru> +morphos|MorphOS on Genesi Pegasos, + acsc=, dl=\233%p1%dM, dl1=\233M, il=\233%p1%dL, il1=\233L, + ind=\204, indn@, kend=\23345~, kf11=\23320~, kf12=\23321~, + khome=\23344~, kich1=\23340~, knp=\23342~, kpp=\23341~, + ri=\215, rin@, use=amiga-h, + +# Commodore B-128 microcomputer from Doug Tyrol <det@HEL-ACE.ARPA> +# I'm trying to write a termcap for a commodore b-128, and I'm +# having a little trouble. I've had to map most of my control characters +# to something that unix will accept (my delete-char is a ctrl-t, etc), +# and create some functions (like cm), but thats life. +# The problem is with the arrow keys - right, and up work fine, but +# left deletes the previous character and down I just can't figure out. +# Jove knows what I want, but I don't know what it's sending to me (it +# isn't thats bound to next-line in jove). +# Anybody got any ideas? Here's my termcap. +# DAG -- I changed his "^n" entries to "\n"; see if that works. +# +commodore|b-128|Commodore B-128 micro, + am, bw, + OTdN#20, cols#80, lines#24, pb#150, + OTbc=^H, OTnl=\r, clear=\E\006$<10/>, cr=\r, cud1=\n, + cuf1=^F, cup=\E\013%p1%2d\,%p2%2d\,$<20/>, cuu1=^P, + dch1=\177$<10*/>, dl1=\Ed$<10*/>, el=\Eq$<10/>, + home=\E^E, ht=\011$<5/>, ich1=\E\n$<5/>, il1=\Ei$<10/>, + kcub1=^B, kcud1=\n, kcuf1=^F, kcuu1=^P, khome=\E^E, rmir=, + smir=, + +#### North Star +# +# North Star Advantage from Lt. Fickie <brl-ibd!fickie> via BRL +northstar|North Star Advantage, + OTbs, + cols#80, lines#24, + clear=\004$<200/>, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1/>, ed=\017$<200/>, + el=\016$<200/>, home=\034\032$<200/>, + +#### Osborne +# +# Thu Jul 7 03:55:16 1983 +# +# As an aside, be careful; it may sound like an anomaly on the +# Osborne, but with the 80-column upgrade, it's too easy to +# enter lines >80 columns! +# +# I've already had several comments... +# The Osborne-1 with the 80-col option is capable of being +# 52, 80, or 104 characters wide; default to 80 for compatibility +# with most systems. +# +# The tab is destructive on the Ozzie; make sure to 'stty -tabs'. +osborne-w|osborne1-w|Osborne I in 104-column mode, + msgr, ul, xt, + cols#104, lines#24, + bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, el=\ET, ich1=\EQ, il1=\EE, ind=\n, kcub1=^H, kcud1=\n, + kcuf1=^L, kcuu1=^K, rmso=\E(, rmul=\Em, smso=\E), smul=\El, +# Osborne I from ptsfa!rhc (Robert Cohen) via BRL +osborne|osborne1|Osborne I in 80-column mode, + OTbs, am, mir, msgr, ul, xhp, + OTdB#4, cols#80, lines#24, + clear=^Z, cub1=\010$<4>, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, + dch1=\EW$<4/>, dl1=\ER, el=\ET, il1=\EE, is2=^Z, kbs=^H, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, rmir=, rmso=\E), + rmul=\Em, smir=\EQ, smso=\E(, smul=\El, +# +# Osborne Executive definition from BRL +# Similar to tvi920 +# Added by David Milligan and Tom Smith (SMU) +osexec|Osborne executive, + OTbs, am, + OTug#1, cols#80, lines#24, xmc#1, + OTnl=\n, bel=^G, clear=^Z, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dl1=\ER, ed=\EY, el=\ET, home=^^, hts=\E1, ich1=\EQ, il1=\EE, + is2=\Eq\Ek\Em\EA\Ex0, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, + kcuu1=^K, kf0=^A@\r, kf1=^AA\r, kf2=^AB\r, kf3=^AC\r, + kf4=^AD\r, kf5=^AE\r, kf6=^AF\r, kf7=^AG\r, kf8=^AH\r, + kf9=^AI\r, rmir=, rmso=\Ek, rmul=\Em, smir=, smso=\Ej, + smul=\El, tbc=\E3, + +#### Console types for obsolete UNIX clones +# +# Coherent, Minix, Venix, and several lesser-known kin were OSs for 8088 +# machines that tried to emulate the UNIX look'n'feel. Coherent and Venix +# were commercial, Minix an educational tool sold in conjunction with a book. +# Memory-segmentation limits and a strong tendency to look like V7 long after +# it was obsolete made all three pretty lame. Venix croaked early. Coherent +# and Minix were ported to 32-bit Intel boxes, only to be run over by a +# steamroller named `Linux' (which, to be fair, traces some lineage to Minix). +# Coherent's vendor, the Mark Williams Company, went belly-up in 1994. There +# are also, I'm told, Minix ports that ran on Amiga and Atari machines and +# even as single processes under SunOS and the Macintosh OS. +# + +# See +# https://web.archive.org/web/20120703021949/http://www.minix3.org/manpages/html4/console.html +minix|minix console (v3), + 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~, + 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~, + 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~, + 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, + +minix-3.0|minix console (v3.0), + use=ecma+color, use=minix-1.7, + +# See +# https://web.archive.org/web/20030914201935/http://www.minix-vmd.org/pub/Minix-vmd/1.7.0/wwwman/man4/console.4.html +# This is the entry provided with minix 1.7.4, with bogus :ri: removed. +minix-1.7|minix console (v1.7), + am, xenl, + cols#80, it#8, lines#25, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, el1=\E[2K, + home=\E[H, ht=^I, ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, ind=\n, is2=\E[0m, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kf0=\E[Y, kf1=\E[V, kf2=\E[U, + kf3=\E[T, kf4=\E[S, kf5=\E[G, khome=\E[H, lf0=End, lf1=PgUp, + lf2=PgDn, lf3=Num +, lf4=Num -, lf5=Num 5, nel=\r\n, + rev=\E[7m, ri=\EM, rmso=\E[0m, rmul=\E[0m, sgr0=\E[0m, + smso=\E[7m, smul=\E[4m, +# Corrected Jan 14, 1997 by Vincent Broman <broman@nosc.mil> +minix-old|minix-1.5|minix console (v1.5), + xon, + cols#80, it#8, lines#25, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[0J, cr=\r, + cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[0J, el=\E[K, home=\E[H, ht=^I, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, + kbs=^H, kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, + kf0=\E[Y, kf1=\E[V, kf2=\E[U, kf3=\E[T, kf4=\E[S, kf5=\E[G, + khome=\E[H, nel=\r\n, rev=\E[7m, ri=\EM, rmso=\E[0m, + rmul=\E[0m, sgr0=\E[0m, smso=\E[7m, smul=\E[4m, +# The linewrap option can be specified by editing /usr/include/minix/config.h +# before recompiling the minix 1.5 kernel. +minix-old-am|minix console with linewrap, + am, use=minix-old, + +pc-minix|minix console on an Intel box, + use=klone+acs, use=minix-3.0, + +# According to the Coherent 2.3 manual, the PC console is similar +# to a z19. The differences seem to be (1) 25 lines, (2) no status +# line, (3) standout is broken, (4) ins/del line is broken, (5) +# has blinking and bold. +pc-coherent|pcz19|coherent|IBM PC console running Coherent, + am, mir, + cols#80, it#8, lines#25, + bel=^G, clear=\EE, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EN, + ed=\EJ, el=\EK, home=\EH, ht=^I, ind=\n, kbs=^H, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, ri=\EI, rmir=\EO, + rmso=\Eq, sgr0=\Eq, smir=\E@, smso=\Ep, + +# According to the Venix 1.1 manual, the PC console is similar +# to a DEC vt52. Differences seem to be (1) arrow keys send +# different strings, (2) enhanced standout, (3) added insert/delete line. +# Note in particular that it doesn't have automatic margins. +# There are other keys (f1-f10, kpp, knp, kcbt, kich1, kdch1) but they +# not described here because this derives from an old termcap entry. +pc-venix|venix|IBM PC console running Venix, + cols#80, it#8, lines#25, + bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, + ed=\EJ, el=\EK, ht=^I, il1=\EL, ind=\n, kbs=^H, kcub1=\EK, + kcud1=\EP, kcuf1=\EM, kcuu1=\EH, khome=\EG, ri=\EI, + +#### Miscellaneous microcomputer consoles +# +# If you know anything more about any of these, please tell me. +# + +# The MAI Basic Four computer was obsolete at the end of the 1980s. +# It may be used as a terminal by putting it in "line" mode as seen on +# one of the status lines. +# Initialization is similar to CIT80. <is2> will set ANSI mode for you. +# Hardware tabs set by <if> at 8-spacing. Auto line wrap causes glitches so +# wrap mode is reset by <cvvis>. Using <ind>=\E[S caused errors so I +# used \ED instead. +# From: bf347@lafn.org (David Lawyer), 28 Jun 1997 +mai|basic4|MAI Basic Four in ansi mode, + am, da, db, mir, msgr, + cols#82, it#8, lines#25, + bel=^G, blink=\E[5m, bold=\E[1m, clear=^]^_, cnorm=\E[?7h, + cr=\r, csr=\E[%i%p1%d;%p2%dr, 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, + 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, rc=\E8, rev=\E[7m, ri=\E[T, + rmir=\E[4l, rmso=\E[m, rmul=\E[m, sc=\E7, sgr0=\E[m, + smir=\E[4h, smso=\E[7m, smul=\E[4m, +# basis from Peter Harrison, Computer Graphics Lab, San Francisco +# ucbvax!ucsfmis!harrison ...uucp / ucbvax!ucsfmis!harrison@BERKELEY ...ARPA +# +# On Sat, 7 Aug 1999, Torsten Jerzembeck <toje@nightingale.ms.sub.org> wrote: +# The Basis 108 was a Apple II clone, manufactured by the "Basis +# Mikrocomputer GmbH" in Munster, Germany (the company still exists today, +# about 1,5 km from where I live, but doesn't build own computers any +# more). A Basis 108 featured a really heavy (cast aluminium?) case, was +# equipped with one or two 5.25" disk drives, had a monochrome and colour +# video output for a TV set or a dedicated monitor and several slots for +# Apple II cards. Basis 108 were quite popular at german schools before +# the advent of the IBM PC. They run, for example, the UCSD Pascal +# development system (which I used even in 1993 to program the steering +# and data recording for our school's experimental solar panel :), Apple DOS +# or CP/M. +# (basis: removed obsolete ":ma=^K^P^R^L^L :nl=5000*^J:" -- esr) +basis|BASIS108 computer with terminal translation table active, + clear=\E*$<300/>, cud1=\n$<5000/>, ed=\EY, el=\ET, kbs=^H, + kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, rmso=\E), sgr0=\E), + smso=\E(, use=adm3a, +# luna's BMC terminal emulator +luna|luna68k|LUNA68K Bitmap console, + cols#88, lines#46, use=ansi-mini, +megatek|pegasus workstation terminal emulator, + am, os, + cols#83, lines#60, +# The Xerox 820 was a Z80 micro with a snazzy XEROX PARC-derived +# interface (pre-Macintosh by several years) that went nowhere. +xerox820|x820|Xerox 820, + am, + cols#80, lines#24, + bel=^G, clear=\032$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^Q, el=^X, + home=^^, ind=\n, + +#### Videotex and teletext +# + +# \E\:1} switch to te'le'informatique mode (ascii terminal/ISO 6429) +# \E[?3l 80 columns +# \E[?4l scrolling on +# \E[12h local echo off +# \Ec reset: G0 U.S. charset (to get #,@,{,},...), 80 cols, clear screen +# \E)0 G1 DEC set (line graphics) +# +# From: Igor Tamitegama <igor@ppp1493-ft.teaser.fr>, 18 Jan 1997 +m2-nam|minitel|minitel-2|minitel-2-nam|France Telecom Minitel 2 mode te'le'informatique, + OTbs, eslok, hs, xenl, + cols#80, it#8, lines#24, wsl#72, xmc#0, + acsc=aaffggjjkkllmmnnooqqssttuuvvwwxx, bel=^G, + blink=\E[5m, bold=\E[1m, civis=\E[<1h, clear=\E[H\E[J, + cnorm=\E[<1l, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub=\E[%p1%dD, cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, flash=^G, fsl=\n, + home=\E[H, ht=^I, il=\E[%p1%dL, il1=\E[L, ind=\n, ip=$<7/>, + is1=\E:1}\Ec\E[?4l\E[12h, is2=\Ec\E[12h\E)0, + is3=\E[?3l, kbs=^H, kclr=\E[2J, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, + kich1=\E[4h, kil1=\E[4l, knp=\EOn, kpp=\EOR, ll=\E[24;80H, + mc0=\E[i, nel=\r\n, rc=\E8, 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, sc=\E7, sgr0=\E[m, + smacs=^N, smir=\E[4h, smso=\E[7m, smul=\E[4m, tsl=^_@A, + u6=\E[%i%d;%dR, u7=\E[6n, + +# From: Alexandre Montaron <canal@mygale.org>, 18 Jun 1998, updated 19 Sep 2016 +# +minitel1|minitel 1, + am, bw, eslok, hs, hz, .msgr, G0, + colors#8, cols#40, lines#24, pairs#8, .ncv#16, + acsc=j+k+l+m+n+o~q`s_t+u+v+w+x|, bel=^G, blink=\EH, + civis=^T, clear=^L, cnorm=^Q, cr=\r, cub1=^H, cud1=\n, cuf1=^I, + cup=\037%p1%'A'%+%c%p2%'A'%+%c, cuu1=^K, + dsl=\037@A\030\n, el=^X, + flash=\037@A\EW \177\022\177\022P\r\030\n, fsl=\n, + home=^^, ind=\n, is2=\E;`ZQ\E:iC\E:iE\021, kbs=^SG, + kcan=^SE, kend=^SI, kent=^SA, khlp=^SD, knp=^SH, kpp=^SB, + krfr=^SC, nel=\r\n, op=\EG, rep=%p1%c\022%p2%'?'%+%c, + rev=\E], ri=^K, rmso=\E\\, + rs2=\024\037XA\030\n\030\n\030\n\030\n\030\n\030\n\030\n + \030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\n + \030\n\030\n\030\n\030\n\030\n\030\n\030\n\030\014 + \021, + setab=\0, setaf=\E%p1%'@'%+%c, setb=\0, + setf=\E%?%p1%{1}%=%tD%e%p1%{3}%=%tF%e%p1%{4}%=%tA%e%p1%{6}%= + %tC%e%p1%'@'%+%c%;, + sgr=%?%p1%t\E]%;%?%p3%t\E]%;%?%p4%t\EH%;, + sgr0=\EI\E\\\EG, smso=\E], tsl=\037@%p1%'A'%+%c, + u6=\037%c%'A'%-%c%'A'%-, u7=\Ea, + u8=\001%[BCDEFGHIJKLbcresdfg0123456789]\004, u9=\E9{, + .dim=\EB, .hup=\E9g, .rs2=^L, .u8=^ABr4^D, + C0=`>a9f!j%k4l<m-n=p#q\,rpt=u5v-w<x5yvzy|l~$, E0=^O, + S0=^N, + XC=B\031%\,\241!\,\242"\,\243#\,\244$\,\245%\,\246&\,\247'\, + \250(\,\253+\,\257P\,\2600\,\2611\,\2622\,\2633\,\2655\, + \2677\,\272k\,\273;\,\274<\,\275=\,\276>\,\277?\,\300AA\, + \301BA\,\302CA\,\303DA\,\304HA\,\305JA\,\306a\,\307KC\, + \310AE\,\311BE\,\312CE\,\313HE\,\314AI\,\315BI\,\316CI\, + \317HI\,\320b\,\321DN\,\322AO\,\323BO\,\324CO\,\325DO\, + \326HO\,\3274\,\330i\,\331AU\,\332BU\,\333CU\,\334HU\, + \335BY\,\336l\,\337{\,\340Aa\,\341Ba\,\342Ca\,\343Da\, + \344Ha\,\345Ja\,\346q\,\347Kc\,\350Ae\,\351Be\,\352Ce\, + \353He\,\354Ai\,\355Bi\,\356Ci\,\357Hi\,\360r\,\361Dn\, + \362Ao\,\363Bo\,\364Co\,\365Do\,\366Ho\,\3678\,\370y\, + \371Au\,\372Bu\,\373Cu\,\374Hu\,\375By\,\376|\,\377Hy\, + \252c\,\,0\017\031%\016\,}#\,f0\,g1\,\\\,\\\,\,+.\,./\,0 + \177\,--, +minitel1b|minitel 1-bistandard (in 40cols mode), + mir, + cub=\E[%p1%dD, cud=\E[%p1%dB, cuf=\E[%p1%dC, + cuu=\E[%p1%dA, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el1=\E[1K, il=\E[%p1%dL, il1=\E[L, + is1=\E;iYA\E;jYC, kbs@, kcan@, kclr=\E[2J, kctab=^I, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, + kdl1=\E[M, kent@, kf1=^SD, kf10=^Y0, kf11=^Y1, kf12=^Y/, + kf13=^Y{1, kf14=^Y{2, kf15=^Y{3, kf16=^Y{4, kf17=^Y{5, + kf18=^Y{6, kf19=^Y{7, kf2=^SC, kf20=^Y{8, kf21=^Y{9, + kf22=^Y{0, kf23=^Y{*, kf24=^Y{#, kf3=^SF, kf4=^SA, kf5=^SG, + kf6=^SE, kf7=^Y8, kf8=^Y\,, kf9=^Y., khlp@, khome=\E[H, + kich1=\E[4h, kil1=\E[L, krfr@, lf1=Guide, lf2=Repetition, + lf3=Sommaire, lf4=Envoi, lf5=Correction, lf6=Annulation, + rmir=\E[4l, smir=\E[4h, + u8=\001%[ABCPtuvwxyz0123456789:;<=>?]\004, + .ich=\E[%p1%d@, .ich1=\E[@, .kLFT=\E[P, .kRIT=\E[4h, + .kb2=^Y{g, .kcbt=^Y{i, .kel=^X, .mc0=\E:|k, .rmkx=\E;jYA, + .rs1=\E[4l\E[2l, .smkx=\E;iYA\E;jYC, .u8=^ACu<^D, + use=minitel1, +# rmkx posait des problemes (logout en sortant de vi). +minitel1b-80|minitel 1-bistandard (standard teleinformatique), + am@, bw@, eslok@, hz@, msgr, G0, + colors@, cols#80, it#8, pairs@, + acsc@, blink=\E[5m, bold=\E[1m, civis=\037@A\024\n, + clear=\E[H\E[J, cnorm=\037@A\021\n, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, el=\E[K, home=\E[H, + ht=^I, ind=\ED, is1@, is2@, kbs=\EOl, kcan=\EOQ, kend=\E)4\r, + kent=\EOM, kf1=\EOq, kf10=\EOp, kf11=\EOP1, kf12=\EOP2, + kf13=\EOP3, kf14=\EOP4, kf15=\EOP5, kf16=\EOP6, kf17=\EOP7, + kf18=\EOP8, kf19=\EOP9, kf2=\EOr, kf20=\EOP0, kf21=\EOP*, + 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, + 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 + \011\011%;%?%ga%{15}%>%t\011\011\011\011\011\011\011 + \011%;%;, + u6@, u7@, u8@, u9@, .acsc=}#f[, .enacs=^O, .kb2=\EOPg, + .kcbt=\EOPi, .ll=\E[24H, .mc0=\E[i, .rmacs=^O, .rs2=\Ec, + .sgr=\E[%?%p1%t7;%;%?%p2%t4;%;%?%p3%t7;%;%?%p4%t5;%;%?%p6%t1 + ;%;m, + .smacs=^N, C0=}#f[j+k+l+m+n+o~q=s_t+u+v+w+x!0\032, + E0=^O, S0=^N, + XC=B\016%\017\,\243#\,\247]\,\260[\,\340@\,\347\\\\\,\351{\, + \350}\,\371|\,\300A\,\301A\,\302A\,\303A\,\304A\,\305A\, + \306E\,\307C\,\310E\,\311E\,\312E\,\313E\,\314I\,\315I\, + \316I\,\317I\,\320D\,\321N\,\322O\,\323O\,\324O\,\325O\, + \326O\,\331U\,\332U\,\333U\,\334U\,\335Y\,\337s\,\341a\, + \342a\,\343a\,\344a\,\345a\,\346e\,\352e\,\353e\,\354i\, + \355i\,\356i\,\357i\,\360d\,\361n\,\362o\,\363o\,\364o\, + \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, + +minitel1-nb|minitel 1 (40cols) noir & blanc sans couleurs avec bold et dim ..., + colors@, pairs@, + bold=\EG, clear=^L\EB, + cup=\037%p1%'A'%+%c%p2%'A'%+%c\EB, dim=\ED, home=^^\EB, + op@, rs2=^L\EB, setab@, setaf@, setb@, setf@, + sgr=%?%p1%p3%O%t\E]%;%?%p4%t\EH%;%?%p5%t\ED%;%?%p6%t\EG%;, + sgr0=\EI\E\\\EB, tsl=\037@%p1%'A'%+%c\EB, .invis=\E@, + use=minitel1, + +minitel1b-nb|minitel 1b (40cols) noir & blanc sans couleurs avec bold et dim ..., + msgr, + colors@, pairs@, + acsc=`>a9f!j%k4l<m-n=p#q\,rpt=u5v-w<x5yvzy|l~$, + bold=\EG, clear=^L\EB, cup=\E[%i%p1%d;%p2%dH, dim=\ED, + home=^^\EB, kend=\E)4\r, kf1=\E$4\r, kf2=\E#4\r, + kf3=\E&4\r, kf4=\E!4\r, kf5=\E'4\r, kf6=\E/4\r, knp=\E(4\r, + kpp=\E"4\r, op@, rmacs=^O, rs2=^L\EB, setab@, setaf@, setb@, + setf@, + sgr=%?%p1%p3%O%t\E]%;%?%p4%t\EH%;%?%p5%t\ED%;%?%p6%t\EG%;, + sgr0=\EI\E\\\EB, smacs=^N, tsl=\037@%p1%'A'%+%c\EB, + u8=\001%[ABCPpqrstuvwxyz{|}~\177]\004\r, .invis=\E@, + .u8=\001Cu|\004r, use=minitel1b, + +# Note: +# +# Faire, Fnct T puis "/" (TS+"?") pour activer les touches en 40cols : +# +# TS+Connexion/Fin(Fin),Retour(Page Up),Suite(Page Down),Guide(F1), +# Repetition(F2),Sommaire(F3),Envoi(F4),Correction(F5),Annulation(F6), +# Ctrl+7(F7),Ctrl+8(F8),Ctrl+9(F9),Ctrl+0(F10),Ctrl+*(F11),Ctrl+#(F12). +# +# Ctrl+Suite-1(F13), Ctrl+Suite-2(F14), Ctrl+Suite-3(F15), +# Ctrl+Suite-4(F16), Ctrl+Suite-5(F17), Ctrl+Suite-6(F18), +# Ctrl+Suite-7(F19), Ctrl+Suite-8(F20), Ctrl+Suite-9(F21), +# Ctrl+Suite-0(F22), Ctrl+Suite-*(F23), Ctrl+Suite-#(F24). +# +# Fonctionne par exemple avec Midnight Commander (mc). + +minitel2-80|minitel 2 (80cols) avec filets vt100 (DEC), + G0, + acsc=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}}, + enacs=\E)0, rmacs=^O, smacs=^N, u6=\E[%i%d;%dR, + C0=ffggjjkkllmmnnooqqssttuuvvwwxxyyzz||}}, E0=^O, + S0=\E)0\016, + XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261 + \E(3g\,\265\E(3Y\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276 + \E(3Q\,\277\E(3Z\,\300A\,\301A\,\302A\,\303A\,\304\E(3R\, + \305A\,\306E\,\307C\,\310E\,\311\E(3S\,\312E\,\313E\, + \314\E(3T\,\315I\,\316I\,\317I\,\320D\,\321\E(3W\,\322\E( + 3U\,\323O\,\324O\,\325O\,\326O\,\327x\,\331U\,\332U\, + \333U\,\334\E(3V\,\335Y\,\337\E(3{\,\340\E(3A\,\341a\, + \342\E(3B\,\343a\,\344\E(3C\,\345a\,\346e\,\347\E(R\\\\\, + \350\E(3E\,\351\E(3D\,\352\E(3F\,\353\E(3G\,\354i\,\355i + \,\356\E(3H\,\357\E(3I\,\360d\,\361\E(3X\,\362o\,\363o\, + \364\E(3J\,\365o\,\366\E(3K\,\367\E(3h\,\371\E(3L\,\372u + \,\373\E(3M\,\374\E(3N\,\375y\,\377y\,\,0\E)3%\E)0\,\\\,m + \,+k\,.l\,0\177\,-j, + use=minitel12-80, + +minitel12-80|minitel 12 (80cols), + G0, + civis=\E[<1h, cnorm=\E[<1l, is2=\E[12h, u6=\E[%i%d;%dH, + u7=\E[6n, + .acsc=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0 + \177, + .enacs=\E)3, .rmacs=^O, .rs3=\E[?4l, .scs=\E(%p1%c, + .smacs=^N, + C0=ffggj+k+l+m+n+ovq-swt+u+v+w+xx}}\,m+k.l-j0\177, + E0=^O, S0=\E)3\016, + XC=B%\E(B\,\243\E(3}\,\247\E(R[\,\257\E(3v\,\260\E(3f\,\261 + \E(3g\,\267\E(3~\,\274\E(3O\,\275\E(3P\,\276\E(3Q\,\300A + \,\301A\,\302A\,\303A\,\304A\,\305A\,\306E\,\307C\,\310E + \,\311E\,\312E\,\313E\,\314I\,\315I\,\316I\,\317I\,\320D + \,\321N\,\322O\,\323O\,\324O\,\325O\,\326O\,\327x\,\331U + \,\332U\,\333U\,\334U\,\335Y\,\337\E(3{\,\340\E(3A\, + \341a\,\342\E(3B\,\343a\,\344\E(3C\,\345a\,\346e\,\347\E( + R\\\\\,\350\E(3E\,\351\E(3D\,\352\E(3F\,\353\E(3G\,\354i + \,\355i\,\356\E(3H\,\357\E(3I\,\360d\,\361n\,\362o\, + \363o\,\364\E(3J\,\365o\,\366\E(3K\,\367\E(3h\,\371\E(3L + \,\372u\,\373\E(3M\,\374\E(3N\,\375y\,\377y\,\,0\E)3%\E)0 + \,\\\,m\,+k\,.l\,0\177\,-j, + use=minitel1b-80, + +# +# Add these in your ~/.screenrc for inputting some special glyphs like french +# accentuated chars in 40 cols mode: +# +# bindkey ^YA digraph '`' # Saisi accent grave. +# bindkey ^YB digraph "'" # Saisi accent aigu. +# bindkey ^YC digraph '^' # Saisi accent circonflexe. +# bindkey ^YH digraph '"' # Saisi accent trema. +# +# bindkey ^Y# stuff \243 # Livre. +# bindkey "^Y\047" stuff \247 # Paragraphe. +# bindkey ^Yj stuff \306 # AE +# bindkey ^Yz stuff \346 # ae +# bindkey ^YKc stuff \347 # c cedille. +# + +screen.minitel1|Screen specific for minitel1, + ncv@, + acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy + yzz||}}~~, + bel=\007\E\^ \E\\, bold@, csr@, flash=\Eg\E\^ \E\\, kmous@, + rmul@, smul@, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\EZ, + use=xterm+x11mouse, use=screen4, + +screen.minitel1b|Screen specific for minitel1b, + kclr=\E[2J, kdl1=\E[M, kf13=^Y{1, kf14=^Y{2, kf15=^Y{3, + kf16=^Y{4, kf17=^Y{5, kf18=^Y{6, kf19=^Y{7, kf20=^Y{8, + kf21=^Y{9, kf22=^Y{0, kf23=^Y{*, kf24=^Y{#, kil1=\E[L, + use=screen.minitel1, + +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, + use=screen.minitel1b, + +screen.minitel1-nb|Screen specific for minitel1-nb, + colors@, ncv@, pairs@, + bold=\E[1m, dim=\E[2m, op@, setab@, setaf@, setb@, setf@, + use=screen.minitel1, + +screen.minitel1b-nb|Screen specific for minitel1b-nb, + colors@, ncv@, pairs@, + bold=\E[1m, dim=\E[2m, op@, setab@, setaf@, setb@, setf@, + use=screen.minitel1b, + +# From: Alexandre Montaron, 29 Sep 2016 + +linux-m1|Linux Minitel 1 "like" Couleurs, + am, bw@, ccc, mir, msgr, xenl, + colors#8, it#8, ncv#16, pairs#64, + acsc=a\261f\370g\361h\260j\274k\273l\311m\310n\316q\315t + \314u\271v\312w\313x\272y\363z\362{\343|\252~\372, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + 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, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, + ech=\E[%p1%dX, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E)U, + flash=\E[?5h$<100/>\E[?5l, home=\E[H, hpa=\E[%i%p1%d`, + ht=^I, hts=\EH, il=\E[%p1%dL, il1=\E[L, ind=\n, + initc=\E]P%p1%{15}%&%X%p2%{255}%&%02X%p3%{255}%&%02X%p4 + %{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, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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~, kil1=\E\E[B, + kmous=\E[M, nel=\EE, oc=\E]R\E]P3FFFF80, op=\E[39;49m, + rc=\E8, 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], + sc=\E7, setab=\E[4%p1%dm, setaf=\E[3%p1%dm, 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, + 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 + \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\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=vt220+pcedit, use=vt220+cvis, use=linux+decid, + +# 1. Using double-shapes for vt100 graphical chars (eg: mc). +# 2. Native brown color corrected to good yellow color. +# 3. Adding "Insert" and "Delete Line" keys as ESC Up and ESC Down arrow keys. +# 4. Suppressed nonexistent underlined mode (normally as bright). +# 5. ich/ich1 not filled because of non-curses programs. +#-- +# 6. Suppressed nonexistent invisible mode. +#(7.)Adding forgotten "cub/cud/cuf/cuu" sequences deplacement. + +linux-m1b|Linux Minitel 1B "like" Monochrome (Gris/Blanc/Noir+Dim), + ccc@, + colors@, ncv@, pairs@, + acsc@, bold=\E[33m, enacs@, initc@, + is2=\E]R\E]P1A9A9A9\E]P2A9A9A9\E]P3FFFFFF\E]P4A9A9A9\E]P5A9A + 9A9\E]P6A9A9A9\E]P9FFFFFF\E]PAFFFFFF\E]PBFFFFFF\E]PCFFFF + FF\E]PDFFFFFF\E]PEFFFFFF\E[?2c, + oc@, op@, rmacs@, setab=^A, setaf=^A, smacs@, .setab@, .setaf@, + .smcup=\E]R\E]P1A9A9A9\E]P2A9A9A9\E]P3FFFFFF\E]P4A9A9A9\E]P5 + A9A9A9\E]P6A9A9A9\E]P9FFFFFF\E]PAFFFFFF\E]PBFFFFFF\E] + PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF\E[?2c, + use=linux-m1, + +linux-m2|Linux Minitel 2 "like" Couleurs (Vert/Blanc/Noir+Bleu), + ccc@, + colors@, ncv@, pairs@, + acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu + uvvwwxxyyzz{{||}}~~, + bold=\E[33m, cnorm=\E[?2c\E[?25h, cvvis=\E[?8c\E[?25h, + enacs=\E)0, initc@, + is2=\E]R\E]P100A900\E]P200A900\E]P3FFFFFF\E]P400A900\E]P500A + 900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E]PAFFFF + FF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF\E]PFFFFFF + F\E[;37m, + oc@, op@, rmacs=^O, setab=^A, setaf=^A, sgr0=\E[;37m, smacs=^N, + .setab@, .setaf@, + .smcup=\E]R\E]P100A900\E]P200A900\E]P3FFFFFF\E]P400A900\E]P5 + 00A900\E]P600A900\E]P700A900\E]P80000FF\E]P9FFFFFF\E] + PAFFFFFF\E]PBFFFFFF\E]PCFFFFFF\E]PDFFFFFF\E]PEFFFFFF + \E]PFFFFFFF\E[;37m, + use=linux-m1, + +# From: Alexandre Montaron, 27 May 2020 +linux-s|Linux console with added status line at bottom, + hs, + clear=\E[255;255H\E[A\E[1J\E[H, csr@, + dsl=\E7\E[255H\E[K\E8, ed@, fsl=\E8, + iprog=\sbash\s-c\s'echo\s-ne\s"\E[?6l\E[255H\E[A\E[6n"\s; + \sread\s-d\sR\sTMP\s;\sLINES=`echo\s$TMP\s|\scut\s-f1 + \s-d\s";"\s|\scut\s-f2\s-d\s"["`\s;\sstty\srows\s$LINE + S\s;\secho\s-ne\s"\E[;"$LINES"r\E[J"', + rs1=\E]R, tsl=\E7\E[255;%p1%dH, .rc@, .sc@, use=linux, + +# Screen entries counterpart : + +screen.linux-m1|Linux m1 specific for screen, + ncv@, + dim=\E[2m, kbs=^?, 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@, u6=\E[%i%d;%dR, u7=\E[6n, u8=\E[?1;2c, u9=\EZ, + 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 + \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\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=xterm+x11mouse, use=screen4, + +screen.linux-m1b|Linux m1b specific for screen, + colors@, pairs@, + op@, setab@, setaf@, setb@, setf@, use=screen.linux-m1, + +screen.linux-m2|Linux m2 specific for screen, + acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu + uvvwwxxyyzz{{||}}~~, + use=screen.linux-m1b, + +# Putty : + +putty-m1|Putty Minitel 1 "like" Couleurs, + hs, + dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, + kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m, + smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S, + use=putty+screen, use=xterm+sl-twm, use=ecma+index, + use=linux-m1, + +putty-m1b|Putty Minitel 1B "like" Monochrome (Gris/Blanc/Noir), + hs, + dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, + kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m, + smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S, + use=putty+screen, use=xterm+sl-twm, use=ecma+index, + use=linux-m1b, + +putty-m2|Putty Minitel 2 "like" Couleurs (Vert/Blanc/Noir), + hs, + acsc=``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{ + {||}}~~, + dim@, kf1=\E[11~, kf2=\E[12~, kf3=\E[13~, kf4=\E[14~, + kf5=\E[15~, rmcup=\E[2J\E[?47l\E8, rmul=\E[24m, + smcup=\E7\E[?47h, smul=\E[4m, .E3=\E[300S, + use=putty+screen, use=xterm+sl-twm, use=ecma+index, + use=linux-m2, + +putty+screen|PuTTY with screen resizing extensions, + .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, + +screen.putty-m1|Putty m1 specific for screen, + dim@, rmul=\E[24m, smul=\E[4m, E3@, use=screen.linux-m1, + +screen.putty-m1b|Putty m1b specific for screen, + colors@, pairs@, + op@, setab@, setaf@, setb@, setf@, use=screen.putty-m1, + +screen.putty-m2|Putty m2 specific for screen, + acsc=++\,\,--..00``aabbccddeeffgghhiijjkkllmmnnooppqqrrssttu + uvvwwxxyyzz{{||}}~~, + use=screen.putty-m1b, +# From: Alexandre Montaron, 19 Nov 2015, updated 19 Sep 2016 +# +# He comments: +# viewdata lacks a true cup capability, +# so I achieved it with home and cud1/cuf1 sequences only ! +viewdata|Prestel/Viewdata terminals, + am, bw, eslok, hz, + cols#40, lines#24, + bel=^G, civis=^T, clear=^L, cnorm=^Q, cr=\r, cub1=^H, cud1=\n, + cuf1=^I, + cup=\036%?%p1%{07}%>%t\n\n\n\n\n\n\n\n%;%?%p1%{15}%>%t\n\n + \n\n\n\n\n\n%;%?%p1%{4}%&%t\n\n\n\n%;%?%p1%{2}%&%t\n\n%; + %?%p1%{1}%&%t\n%;%?%p2%{07}%>%t\011\011\011\011\011\011 + \011\011%;%?%p2%{15}%>%t\011\011\011\011\011\011\011 + \011%;%?%p2%{23}%>%t\011\011\011\011\011\011\011\011%;%? + %p2%{31}%>%t\011\011\011\011\011\011\011\011%;%?%p2%{4} + %&%t\011\011\011\011%;%?%p2%{2}%&%t\011\011%;%?%p2%{1}%& + %t\011%;, + cuu1=^K, home=^^, nel=\r\n, rs2=^L, .el=^X, .ind=\n, + .rep=%p1%c\022%p2%'?'%+%c, .ri=^K, + +viewdata-o|optimized version of Viewdata Prestel/Viewdata terminals, + cup=\036%p1%?%p2%{20}%>%t%?%p1%{23}%=%t%Pa%{1}%e%{1}%+%;%; + %Pa%?%ga%{13}%<%t%?%ga%{07}%>%t\n\n\n\n\n\n\n\n%;%?%ga + %{4}%&%t\n\n\n\n%;%?%ga%{2}%&%t\n\n%;%?%ga%{1}%&%t\n%;%e + %{24}%ga%-%Pa%?%ga%{07}%>%t\013\013\013\013\013\013\013 + \013%;%?%ga%{4}%&%t\013\013\013\013%;%?%ga%{2}%&%t\013 + \013%;%?%ga%{1}%&%t\013%;%;%?%p2%{21}%<%t%?%p2%{07}%>%t + \011\011\011\011\011\011\011\011%;%?%p2%{15}%>%t\011 + \011\011\011\011\011\011\011%;%?%p2%{4}%&%t\011\011\011 + \011%;%?%p2%{2}%&%t\011\011%;%?%p2%{1}%&%t\011%;%e%{40} + %p2%-%Pa%?%ga%{07}%>%t\010\010\010\010\010\010\010\010%; + %?%ga%{15}%>%t\010\010\010\010\010\010\010\010%;%?%ga + %{4}%&%t\010\010\010\010%;%?%ga%{2}%&%t\010\010%;%?%ga + %{1}%&%t\010%;%?%p1%{23}%=%t\013%;%;, + .ll=^^^K, use=viewdata, + +# Samples with TERM=viewdata and TERM=viewdata-rv: http://canal.chez.com/blog/ + +viewdata-rv|Prestel/Viewdata terminals with reverse capabilitie (as green), + xmc#1, + rmso=\EG, smso=\EB, use=viewdata-o, + +######## OBSOLETE VDT TYPES +# +# These terminals are *long* dead -- these entries are retained for +# historical interest only. + +#### Amtek Business Machines +# + +# (abm80: early versions of this entry apparently had ":se=\E^_:so=\E^Y", +# but these caps were commented out in 8.3; also, removed overridden +# ":do=^J:" -- esr) +abm80|amtek business machines 80, + OTbs, am, bw, + cols#80, lines#24, + cbt=^T, clear=\E^\, cub1=^H, cud1=\E^K, cuf1=^P, + cup=\E\021%p2%{32}%+%c%p1%{32}%+%c, cuu1=\E^L, + dl1=\E^S, ed=\E^X, el=\E^O, home=\E^R, il1=\E^Z, + +#### Bell Labs blit terminals +# +# These were AT&T's official entries. The 5620 FAQ maintained by +# David Breneman <daveb@dgtl.com> has this to say: +# +# Actually, in the beginning was the Jerq, and the Jerq was white with a +# green face, and Locanthi and Pike looked upon the Jerq and said the Jerq +# was good. But lo, upon the horizon loomed a mighty management-type person +# (known now only by the initials VP) who said, the mighty Jerq must stay +# alone, and could not go forth into the world. So Locanthi and Pike put the +# Jerq to sleep, cloned its parts, and the Blit was brought forth unto the +# world. And the Jerq lived the rest of its days in research, but never +# strayed from those paths. +# +# In all seriousness, the Blit was originally known as the Jerq, but when +# it started to be shown outside of the halls of the Bell Labs Research +# organization, the management powers that be decided that the name could +# not remain. So it was renamed to be Blit. This was in late 1981. +# +# (The AT&T 5620 was the commercialized Blit. Its successors were the 630, +# 730, and 730+.) +# + +blit|jerq|blit running teletype rom, + am, eo, ul, xon, + cols#87, it#8, lines#72, + bel=^G, clear=^L, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC, + cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, + dch=\Ee%p1%{32}%+%c, dch1=\Ee!, dl=\EE%p1%{32}%+%c, + dl1=\EE!, el=\EK, ht=^I, ich=\Ef%p1%{32}%+%c, ich1=\Ef!, + il=\EF%p1%{32}%+%c, il1=\EF!, ind=\n, kbs=^H, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf1=\Ex, kf2=\Ey, kf3=\Ez, + +# (cbblit: here's a BSD termcap that says <cud1=\EG> -- esr) +cbblit|fixterm|blit running columbus code, + cols#88, + ed=\EJ, flash=\E^G, ich1@, mc4=^T, mc5=^R, mc5p=\EP%p1%03d, + rmir=\ER, rmso=\EV!, rmul=\EV", smir=\EQ, smso=\EU!, + smul=\EU", use=blit, + +oblit|ojerq|first version of blit rom, + am, da, db, eo, mir, ul, xon, + cols#88, it#8, lines#72, + bel=^G, clear=^L, cr=\r, cub1=\ED, cud1=\n, cuf1=\EC, + cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\EO, + dl=\Ee%p1%{32}%+%c, dl1=\EE, ed=\EJ, el=\EK, flash=\E^G, + ht=^I, il=\Ef%p1%{32}%+%c, il1=\EF, ind=\n, kbs=^H, rmir=\ER, + smir=\EQ, + +#### Bolt, Beranek & Newman (bbn) +# +# The BitGraph was a product of the now-defunct BBN Computer Corporation. +# The parent company, best known as the architects of the Internet, is +# still around. +# +# Jeff DelPapa <dp@world.std.com> writes: +# The bitgraph was a large white box that contained a monochrome bitmap +# display, and a 68000 to run it. You could download code and run it on +# the cpu, it had 128kb (I think) of memory. I used one in the late +# 70's, sure beat a vt100. It had one strange feature tho -- it used +# the cpu to bitblt pixels to scroll, it took longer than the refresh +# rate, and looked like a rubber sheet stretching, then snapping +# upwards. It had everything the early mac had, except a floppy drive a +# small screen (it had a 17" crisp beauty) and a real OS. They (Bolt +# Beranek and Neuman) sold at most a few hundred of them to the real +# world. DOD may have bought more... +# + +# Entries for the BitGraph terminals. The problem +# with scrolling in vi can only be fixed by getting BBN to put +# smarter scroll logic in the terminal or changing vi or padding +# scrolls with about 500 ms delay. +# +# I always thought the problem was related to the terminal +# counting newlines in its input buffer before scrolling and +# then moving the screen that much. Then vi comes along and +# paints lines in on the bottom line of the screen, so you get +# this big white gap. + +bitgraph|bg2.0nv|bg3.10nv|BBN BitGraph 2.0 or later (normal video), + flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, + use=bg2.0, +bg2.0rv|bg3.10rv|BBn BitGraph 2.0 (reverse video), + flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, + use=bg2.0, +bg2.0|bg3.10|BBN BitGraph 2.0 or later (no init), + OTbs, xenl, + cols#85, lines#64, + bel=^G, clear=\E[H\E[J$<150>, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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, rc=\E8, rmkx=\E>, rmso=\E[m, sc=\E7, + sgr0=\E[m, smkx=\E=, smso=\E[7m, + +bg1.25rv|BBN BitGraph 1.25 (reverse video), + flash=\E[?5l$<200/>\E[?5h, is2=\E>\E[?5h\E[?7h, + use=bg1.25, +bg1.25nv|BBN BitGraph 1.25 (normal video), + flash=\E[?5h$<200/>\E[?5l, is2=\E>\E[?5l\E[?7h, + use=bg1.25, +# (bg1.25: I added <rmam>/<smam> based on the init string -- esr) +bg1.25|BBN BitGraph 1.25, + cols#85, lines#64, + bel=^G, clear=\E[H\E[J$<150>, cr=\r, cub1=^H, cud1=\E[B, + cuf1=\E[C, cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, + dl1=\E[M$<2*>, ed=\E[J$<150>, el=\E[K$<2>, ht=^I, + il1=\E[L$<2*>, ind=\n$<280>, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, 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, + +#### Bull (bq, dku, vip) +# +# (Adapted for terminfo; AIX extension capabilities translated -- esr) + +#============================================# +# BULL QUESTAR 210 `SDP' terminals emulation # +#============================================# +# +# Description written by R.K.Saunders (Bull Transac) +# +# Modifications written by F. Girard (Bull MTS) +# 19-05-87 V02.00.01 +# 17-12-87 V02.00.02 +# 15-09-89 V02.00.05 +# +# Typical technical selections F1 (modes SDP/ROLL): +# ------------------------------------------------------- +# | 01 02 03 04 05 06 07 08 09 10 | +# | 1010 0011 1010 0110 0110 0001 0100 0000 0000 0000 | +# | | +# | 11 12 13 14 15 16 17 18 19 20 | +# | 0000 0110 100? 0000 0000 0000 0001 0000 0000 0001 | +# | | +# | 21 22 23 24 25 26 27 28 29 30 | +# | 0011 0000 0001 1000 0000 0000 0000 0000 0000 0000 | +# | | +# | 31 32 33 34 35 36 37 38 39 40 | +# | 1010 0011 0000 0000 0000 0000 0000 0000 0000 0000 | +# ------------------------------------------------------- +# Typical firmware identification F5 "etat 6": +# P287.02.04b (AZERTY) +# P297.11.04 (24-pin: 2732) or P798.11.04 (28-pin: 2764) +# P298.03.03 (monochrome) or P374.03.02 (colour) +# +# SM SDP mode (VIP command): ^[[?=h +# RIS (erases screen): ^[c +# DMI disable keyboard: ^[` +# SM double rendition mode: ^[[?>h +# RM solicited status mode: ^[[5l +# RM character mode: ^[[>l +# RM echoplex mode: ^[[12l +# RM column tab mode: ^[[18l +# RM forbid SS2 keyboard mode: ^[[?<l +# SM scroll mode: ^[[=h +# FCF enable XON/XOFF: ^[P1s^[\ +# MTL select end msg character: ^[[^Wp +# EMI enable keyboard: ^[b +# RIS retour etat initial: ^[c +# enable FC keypad: ^[[?<h, +# MPW map status line window: ^[PY99:98^[\ +# SCP select status line: ^[[0;98v +# ED erase entire partition: ^[[2J +# SCP select main partition: ^[[v +# SM character insertion mode: ^[[4h +# RM character replacement mode: ^[[4l +# COO cursor on: ^[[r +# COO cursor off: ^[[1r +# SGR dim (turquoise) rev attr: ^[[2;7m +# SGR Data normal attr: ^[[m +# SO Line-graphic mode ON: ^N +# SI Line-graphic mode OFF: ^O +# MC start routing to printer: ^[[5i +# MC stop routing to printer: ^M^[[4i +# + +# 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, + cols#80, it#8, lines#24, wsl#80, + acsc=``aaffggj)k\,l&m#n/ooppq*rrsst'u-v+w.x%yyzz{{||}}~~, + bel=^G, blink=\E[0;5m, cbt=\E[Z, civis=\E[1r, clear=\E[2J, + cnorm=\E[r, cr=\r, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, + cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%df, + cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, + dim=\E[0;2m, dl=\E[%p1%dM, dl1=\E[M, + dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[v, ed=\E[J, el=\E[K, + fsl=\E[v, home=\E[H, ht=\E[I, hts=\EH, il=\E[%p1%dL, + il1=\E[L, 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, kbs=^H, kcbt=\E[Z, kctab=\E[g, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[P, kdl1=\E[M, + ked=\E[J, kel=\E[K, kf1=\E[1u\027, kf2=\E[2u\027, + kf3=\E[3u\027, kf4=\E[4u\027, kf5=\E[5u\027, + kf6=\E[6u\027, kf7=\E[7u\027, kf8=\E[8u\027, khome=\E[H, + khts=\EH, kil1=\E[L, krmir=\E[4l, ll=\E[H\E[A, mc0=\E[0i, + mc4=\r\E[4i, mc5=\E[5i, rev=\E[0;7m, rmacs=^O, + rmcup=\E[0;98v\E[2J\E[v, rmir=\E[4l, rmso=\E[m, + rmul=\E[m, rs2=\E[?=h\Ec, s0ds=^O, s1ds=^N, + sgr=\E[0%?%p1%p3%|%t;7%;%?%p2%t;4%;%?%p4%t;5%;%?%p5%t;2%;%? + %p7%t;8%;m%?%p9%t\016%e\017%;, + sgr0=\E[m\017, smacs=^N, smcup=\E[?>h\EPY99:98\E\\, + smir=\E[4h, smso=\E[0;7m, smul=\E[0;4m, tbc=\E[3g, + tsl=\EPY99:98\E\\\E[0;98v\E[2;7m, +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, + use=tws-generic, +tws2103|xdku|Bull Questar tws2103, + ht=^I, use=tws-generic, +tws2103-sna|dku7103-sna|Bull Questar tws2103 for SNA, + ht=^I, use=tws2102-sna, +dku7102-old|Bull Questar 200 DKU7102 (microcode version < 6), + clear=\E[2J\E[H, cup@, dl@, dl1@, + dsl=\EPY99:98\E\\\E[0;98v\E[2J\E[H\E[v, el=\E[K\E[m, + il@, il1@, tsl=\EPY99:98\E\\\E[0;98v\E[H\E[2;7m, + use=tws-generic, +dku7202|Bull Questar 200 DKU7202 (colour/character attributes), + blink=\E[0;2;4m, dim=\E[0;5m, ht=^I, is3=\E[?3h\Eb, + sgr=\E[0%?%p1%t;2;4;5;7%;%?%p3%t;7%;%?%p2%t;2%;%?%p4%t;2;4%; + %?%p5%t;5%;%?%p7%t;8%;m%?%p9%t\016%e\017%;, + smso=\E[0;4;5;7m, smul=\E[0;2m, use=tws-generic, + +#=========================================================# +# BULL QUESTAR 303 & 310 `DEC VT 320' terminals emulation # +#=========================================================# +# +# Description written by J. Staerck (BULL SA) +# Copyright (c) 1989 BULL SA +#--------------------------------------------------------------------------- +# This entry is used for terminals with vt320 emulation mode +# and following set-up : +# 8 bit ISO Latin Character Set (ISO 8859-1), +# 7 bit Control Characters, +# 80 columns screen. +# Hereafter are some DEC vt terminals' commands. (valid on vt200 and 300) +# They are used in string capabilities with vt220-320 emulation mode. +# In the following DEC definitions, two kinds of terminfo databases are +# provided : +# 1. the first with Command Sequence Introducer starting with escape +# sequence in 7 bits characters ex. ESC [ : 2 chars. in 7-bit mode. +# 2. the second with Command Sequence Introducer starting with escape +# sequence in 8 bits characters ex. ESC [ : 1 char. 'CSI' =x9B. +# Soft Terminal Reset esc [ ! p +# RIS (erases screen): esc c +# DECKPNM numeric keypad mode: esc > +# DECKPAM applic. keypad mode: esc = +# DECSTBM Scrolling region: esc [ r +# SCS select G0 = US: esc ( B +# SCS select G1 = line-graphic: esc ) 0 +# Select 7-bit C1 controls: esc sp F +# Select 8-bit C1 controls: esc sp G +# Select cursor home: esc [ H +# Select erase screen: esc [ J +# SM KAM lock keyboard: esc [ 2 h +# RM KAM unlock keyboard: esc [ 2 l +# SM SRM local echo off: esc [ 1 2 h +# RM SRM local echo on: esc [ 1 2 l +# SM LNM New line : esc [ 2 0 h +# RM LNM return = CR only: esc [ 2 0 l +# SM DECCKM cursor keys mode: esc [ ? 1 h +# RM DECCKM appli. keys mode: esc [ ? 1 l +# SM DECANM ANSI mode on: esc [ ? 2 h +# RM DECANM ANSI mode off: esc [ ? 2 l +# SM DECCOLM 132-column screen: esc [ ? 3 h +# RM DECCOLM 80-column screen: esc [ ? 3 l +# SM DECSCLM Smooth scroll: esc [ ? 4 h +# RM DECSCLM Jump scroll: esc [ ? 4 l +# SM DECSCNM screen light backgr. esc [ ? 5 h +# RM DECSCNM screen dark backgr. esc [ ? 5 l +# SM DECOM move within margins: esc [ ? 6 h +# RM DECOM move outside margins: esc [ ? 6 l +# SM DECAWM auto right margin: esc [ ? 7 h +# RM DECAWM auto right margin: esc [ ? 7 l +# SM DECARM auto repeat: esc [ ? 8 h +# RM DECARM auto repeat: esc [ ? 8 l +# DECSASD Select active main: esc [ 0 $ } +# DECSASD Select active status: esc [ 1 $ } +# DECSSDT Select status none: esc [ 0 $ ~ +# DECSSDT Select status indic.: esc [ 1 $ ~ +# DECSSDT Select status host-wr: esc [ 2 $ ~ +# SM DECTCEM Visible cursor: esc [ ? 2 5 h +# RM DECTCEM Invisible cursor: esc [ ? 2 5 l +# SM DECNCRM 7 bits NCR set: esc [ ? 4 2 h +# RM DECNCRM Multi or ISO latin: esc [ ? 4 2 l +# SM DECNKM numeric keypad mode: esc [ ? 6 6 h +# RM DECNKM numeric keypad appl.: esc [ ? 6 6 l +# SM DECKBUM clavier informatique esc [ ? 6 8 h +# RM DECKBUM clavier bureautique: esc [ ? 6 8 l +# DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 " p +# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 0 " p +# or DECSCL vt300 mode 8-bit ctrl: esc [ 6 3 ; 2 " p +# DECSCL vt300 mode 7-bit ctrl: esc [ 6 3 ; 1 " p +# Char. and Line attributes: esc [ Ps ... Ps m +# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse +# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off +# + +# This entry covers BQ303, BQ306, BQ310, Q303, Q306, Q310 +bq300|Bull vt320 ISO Latin 1 80 columns terminal, + am, eo, eslok, hs, km, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=\E[D, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, + dsl=\E[1$}\E[2$~\n\E[0$}, ech=\E[%p1%dX, ed=\E[J, + el=\E[K, el1=\E[1K, enacs=\E(B\E)0, + flash=\E[?5h$<50>\E[?5l, fsl=\E[0$}, home=\E[H, ht=^I, + hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\ED, + is1=\E[63;1"p\E[2h, + 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, kbs=^H, kc1=\EOq, kc3=\EOs, 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~, 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, + rc=\E8, 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, + sc=\E7, + 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, tbc=\E[3g, tsl=\E[1$}\E[2$~, + use=vt220+vtedit, use=ansi+pp, use=vt220+cvis, +bq300-rv|Bull vt320 reverse 80 columns, + flash=\E[?5l$<50>\E[?5h, + is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4 + l, + use=bq300, +bq300-w|Bull vt320 132 columns, + cols#132, wsl#132, + is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4 + l, + rs2=\E[?3h, use=bq300, +bq300-w-rv|Bull vt320 reverse mode 132 columns, + cols#132, wsl#132, + flash=\E[?5l$<50>\E[?5h, + is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4 + l, + rs2=\E[?3h, use=bq300, + +# This entry is used for terminals with vt320 emulation mode +# and following set-up : +# 8 bit ISO Latin Character Set (ISO 8859-1), +# 8 bit Control Characters, (CSI coded as x9B for ESC [) +# 80 columns screen. +# Soft Terminal Reset csi ! p +# RIS (erases screen): esc c +# DECKPNM numeric keypad mode: esc > +# DECKPAM applic. keypad mode: esc = +# DECSTBM Scrolling region: esc [ r +# SCS select G0 = US: esc ( B +# SCS select G1 = line-graphic: esc ) 0 +# Select 7-bit C1 controls: esc sp F +# Select 8-bit C1 controls: esc sp G +# Select cursor home: csi H +# Select erase screen: csi J +# SM KAM lock keyboard: csi 2 h +# RM KAM unlock keyboard: csi 2 l +# SM SRM local echo off: csi 1 2 h +# RM SRM local echo on: csi 1 2 l +# SM LNM New line : csi 2 0 h +# RM LNM return = CR only: csi 2 0 l +# SM DECCKM cursor keys mode: csi ? 1 h +# RM DECCKM appli. keys mode: csi ? 1 l +# SM DECANM ANSI mode on: csi ? 2 h +# RM DECANM ANSI mode off: csi ? 2 l +# SM DECCOLM 132-column screen: csi ? 3 h +# RM DECCOLM 80-column screen: csi ? 3 l +# SM DECSCLM Smooth scroll: csi ? 4 h +# RM DECSCLM Jump scroll: csi ? 4 l +# SM DECSCNM screen light backgr. csi ? 5 h +# RM DECSCNM screen dark backgr. csi ? 5 l +# SM DECOM move within margins: csi ? 6 h +# RM DECOM move outside margins: csi ? 6 l +# SM DECAWM auto right margin: csi ? 7 h +# RM DECAWM auto right margin: csi ? 7 l +# SM DECARM auto repeat: csi ? 8 h +# RM DECARM auto repeat: csi ? 8 l +# DECSASD Select active main: csi 0 $ } +# DECSASD Select active status: csi 1 $ } +# DECSSDT Select status none: csi 0 $ ~ +# DECSSDT Select status indic.: csi 1 $ ~ +# DECSSDT Select status host-wr: csi 2 $ ~ +# SM DECTCEM Visible cursor: csi ? 2 5 h +# RM DECTCEM Invisible cursor: csi ? 2 5 l +# SM DECNCRM 7 bits NCR set: csi ? 4 2 h +# RM DECNCRM Multi or ISO latin: csi ? 4 2 l +# DECSCL vt300 mode 8-bit ctrl: csi 6 3 " p +# or DECSCL vt300 mode 8-bit ctrl: csi 6 3 ; 0 " p +# DECSCL vt300 mode 7-bit ctrl: csi 6 3 ; 1 " p +# Char. and Line attributes: csi Ps ... Ps m +# with: 0 All off, 1 Bold, 4 Underline, 5 Blinking, 7 Reverse +# and : 22 Bold off, 24 Underline off, 25 Blinking off, 27 Reverse off +# (bq300-8: <cub1>,<cuf1>,<cuu1>,<cud1>,<dl1>,<il1> to get under 1024 --esr) +bq300-8|Bull vt320 full 8 bits 80 columns, + am, eo, eslok, hs, km, mc5i, mir, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, wsl#80, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, blink=\2335m, bold=\2331m, clear=\233H\233J, cr=\r, + csr=\233%i%p1%d;%p2%dr, cub=\233%p1%dD, cub1=\2331D, + cud=\233%p1%dB, cud1=\2331B, cuf=\233%p1%dC, cuf1=\2331C, + cup=\233%i%p1%d;%p2%dH, cuu=\233%p1%dA, cuu1=\2331A, + dch=\233%p1%dP, dch1=\233P, dl=\233%p1%dM, dl1=\233M, + dsl=\2331$}\2332$~\n\2330$}, ech=\233%p1%dX, ed=\233J, + el=\233K, el1=\2331K, enacs=\E(B\E)0, + flash=\233?5h$<50>\233?5l, fsl=\2330$}, home=\233H, + ht=^I, hts=\EH, ich=\233%p1%d@, il=\233%p1%dL, il1=\233L, + ind=\ED, is1=\E[63;2"p\E[2h, + is2=\E[?2h\E[?3l\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4 + l, + is3=\2330$}\233?25h\2332l\233H\233J, ka1=\217w, + ka3=\217y, kb2=\217u, kbs=^H, kc1=\217q, kc3=\217s, + kcub1=\233D, kcud1=\233B, kcuf1=\233C, kcuu1=\233A, + kdch1=\2333~, kf1=\217P, kf10=\23321~, kf11=\23323~, + kf12=\23324~, kf13=\23325~, kf14=\23326~, kf15=\23328~, + kf16=\23329~, kf17=\23331~, kf18=\23332~, kf19=\23333~, + kf2=\217Q, kf20=\23334~, kf3=\217R, kf4=\217S, kf6=\23317~, + kf7=\23318~, kf8=\23319~, kf9=\23320~, kfnd=\2331~, + khlp=\23328~, 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, + rmcup=\233?7h, rmir=\2334l, rmkx=\233?1l\E>, + rmso=\23327m, rmul=\23324m, rs1=\E[!p, rs2=\E[?3l, + s0ds=\E(B, s1ds=\E(0, sc=\E7, + sgr=\233%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t; + 1%;m%?%p9%t\E(0%e\E(B%;, + sgr0=\2330m\E(B, smacs=\E(0, smam=\233?7h, + smcup=\233?7l\233?1l\E(B, smir=\2334h, smso=\2337m, + smul=\2334m, tbc=\2333g, tsl=\2331$}\2332$~, + use=vt220+cvis8, +bq300-8rv|Bull vt320 8-bit reverse mode 80 columns, + flash=\233?5l$<50>\233?5h, + is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4 + l, + use=bq300-8, +bq300-8w|Bull vt320 8-bit 132 columns, + cols#132, wsl#132, + is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4 + l, + rs2=\233?3h, use=bq300-8, +bq300-w-8rv|Bull vt320 8-bit reverse mode 132 columns, + cols#132, wsl#132, + flash=\233?5l$<50>\233?5h, + is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4 + l, + rs2=\233?3h, use=bq300-8, + +# This entry is used for terminals with vt320 emulation mode +# a 102 keys keyboard (PC scancode !) and following set-up : +# 8 bit ISO Latin Character Set (ISO 8859-1), +# 7 bit Control Characters, +# 80 columns screen. +bq300-pc|Questar 303 with PC keyboard ISO Latin 1 80 columns, + kbs=^H, kf1=\E[17~, kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, + kf13@, kf14@, kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E[18~, kf20@, + kf3=\E[19~, kf4=\E[20~, kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, + kf8=\E[25~, kf9=\E[26~, kfnd@, khlp@, krdo@, kslt@, lf1@, lf2@, + lf3@, lf4@, use=vt220+pcedit, use=bq300, +bq300-pc-rv|Questar 303 with PC keyboard reverse mode 80 columns, + flash=\E[?5l$<50>\E[?5h, + is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4 + l, + use=bq300-pc, +bq300-pc-w|Questar 303 with PC keyboard 132 columns terminal, + cols#132, wsl#132, + is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4 + l, + rs2=\E[?3h, use=bq300-pc, +bq300-pc-w-rv|Questar 303 with PC keyboard reverse mode 132 columns, + cols#132, wsl#132, + flash=\E[?5l$<50>\E[?5h, + is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sF\E[?42l\E[?4 + l, + rs2=\E[?3h, use=bq300-pc, +# 8 bit ISO Latin Character Set (ISO 8859-1), +# 8 bit Control Characters, +# 80 columns screen. +bq300-8-pc|Q306-8-pc|Questar 303 with PC keyboard in full 8 bits 80 columns, + kbs=^H, kdch1=\2333~, kend=\2334~, kf1=\23317~, + kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13@, kf14@, + kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\23318~, kf20@, + kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, + kf7=\23324~, kf8=\23325~, kf9=\23326~, kfnd@, khlp@, + khome=\2331~, kich1=\2332~, knp=\2336~, kpp=\2335~, krdo@, + kslt@, lf1@, lf2@, lf3@, lf4@, use=bq300-8, +bq300-8-pc-rv|Questar 303 with PC keyboard full 8 bits reverse mode 80 columns, + flash=\E[?5l$<50>\E[?5h, + is2=\E[?2h\E[?3l\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4 + l, + use=bq300-8-pc, +bq300-8-pc-w|Questar 303 with PC keyboard full 8 bits 132 columns, + cols#132, wsl#132, + is2=\E[?2h\E[?3h\E[?5l\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4 + l, + rs2=\E[?3h, use=bq300-8-pc, +bq300-8-pc-w-rv|Questar 303 with PC keyboard full 8 bits reverse 132 columns, + cols#132, wsl#132, + flash=\E[?5l$<50>\E[?5h, + is2=\E[?2h\E[?3h\E[?5h\E[?7h\E[?8h\E>\E[?1l\E\sG\E[?42l\E[?4 + l, + rs2=\E[?3h, use=bq300-8-pc, + +#======================================================# +# BULL QUESTAR 310 `VIP 7800/8800' terminals emulation # +#======================================================# + +# normal mode, 8 bits, 80 columns terminal. +# BLD bell disable ^[g +# BLE bell enable ^[h +# CAMR char. attr. mode reset ^[[G +# CAMS char. attr. mode set ^[[D +# CLR clear ^[` +# CM character mode (async.) ^[k +# EP echoplex mode (by host) ^[m +# IM insert mode set ^[[I +# IMR insert mode reset ^[[J +# KBL keyboard lock (reset) ^[[X +# KBU keyboard unlock (set) ^[[W +# LGR Line-graphic mode reset ^[F +# LGS Line-graphic mode set ^[G +# NEP non echoplex mode (by host) ^[l +# PDS print data space ^[[0p +# PDT print data terminator ^[[<p +# PHD print host data ^[[3p +# PRES print adapter reset ^[[2p +# RBM block mode reset ^[[E +# RES reset : ^[e +# RIS reset initial state: ^[c +# RMR roll mode reset ^[q +# RMS roll mode set ^[r +# SCD scroll down (72 lines) ^[[1s +# SCU scroll up (72 lines) ^[[0s +# SLL status line lock ^[O +# SLR status line reset ^[v +# SLS status line set ^[w +# SM78 set mode vip7800 ^[[1q +# SSP0 partition 0 set ^[[00u +# SSP1 partition n format 1 ^[[PnPnSTRINGu +# SSP2 partition n format 2 ^[[PnPnSTRINGu +# SSP3 partition n format 3 ^[[PnPnu +# SSPR multi-part. reset ^[[<>u +# TBC tab clear (at cursor pos.) ^[[g +# TBI tab initialize ^[[N +# TBS tab set (at cursor pos.) ^[p +# +# ATR attribute (visual) +# blink : ^[sB +# dim : ^[sL +# hide (blank) : ^[sH +# inverse video : ^[sI +# protected : ^[sP +# reset : ^[sR +# underline : ^[s_ +# +# This covers the vip7800 and BQ3155-vip7800 +vip|Bull Questar 3155-7800, + am, eslok, hs, km, mc5i, msgr, xenl, xon, + cols#80, it#8, lines#24, vt#3, wsl#80, + acsc=0pjdkblamcnkqitgufvhwexj, bel=^G, blink=\EsB, + cbt=\E[Z, clear=\E`, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\E[%i%p1%03d%p2%03df, cuu1=\EA, dch1=\E[P, dim=\EsL, + dl1=\E[M, dsl=\Ev, ed=\EJ, el=\EK, + flash=\007$<80>\007$<80>\007, fsl=\EO, home=\EH, ht=^I, + hts=\Ep, ich1=\E[I, ind=\n, invis=\EsH, + is2=\E[00u\E[<>001001024080024080u\E[01u, + is3=\Er\E[W\E`, kHOM=\EH, kLFT=\Eo, kRIT=\Eu, kbs=^H, + kcbt=\E[Z, kclr=\E`, kctab=\E[g, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, kdch1=\E[P, kdl1=\E[M, ked=\EJ, + kel=\EK, kf1=\E0, kf10=\ET, kf11=\E\\, kf12=\E\^, kf13@, kf14@, + kf15@, kf16@, kf17@, kf18@, kf19@, kf2=\E2, kf20@, kf21=\E1, + kf22=\E5, kf23=\E7, kf24=\E9, kf25=\E;, kf26=\E=, kf27=\E?, + kf28=\EQ, kf29=\ES, kf3=\E6, kf30=\EV, kf31=\E], kf32=\E_, + kf4=\E8, kf5=\E:, kf6=\E<, kf7=\E>, kf8=\EP, kf9=\ER, + khome=\EH, khts=\Ep, kich1=\E[I, kil1=\E[L, kind=\E[0s, + kll=\EH\EA, kri=\E[1s, krmir=\E[J, ktbc=\E[N, lf1=pf1, + lf2=pf2, lf3=pf3, lf4=pf4, ll=\EH\EA, mc0=\E[0p, mc4=\E[<p, + mc5=\E[3p, nel=\r, prot=\EsP, rev=\EsI, + ri=\EA\EJ\EH\E[L$<10>, rmacs=\EF, rmir=\E[J, rmso=\EsR, + rmul=\EsR, rs1=\Ec, rs2=\E[G, s0ds=\EF, s1ds=\EG, + sgr0=\EsR\EsU\EF, smacs=\EG, smir=\E[I, smso=\EsI, + smul=\Es_, tbc=\E[N, tsl=\Ew, +# normal screen, 8 bits, 132 columns terminal. +vip-w|vip7800-w|Q310-vip-w|Q310-vip-w-am|Questar 3155-vip7800 wide, + cols#132, wsl#132, + is2=\E[00u\E[<>001001024132024132u\E[01u, use=vip, +vip-H|vip7800-H|Q310-vip-H|Q310-vip-H-am|Questar 3155-vip7800 72 lines, + lines#72, + is2=\E[00u\E[<>001001024080072080u\E[01u, use=vip, +vip-Hw|vip7800-Hw|Q310-vip-Hw|Questar 3155-vip7800 wide 72 lines, + cols#132, lines#72, wsl#132, + is2=\E[00u\E[<>001001024132072132u\E[01u, use=vip, + +#### Chromatics +# + +# I have put the long strings in <smcup>/<rmcup>. Ti sets up a window +# that is smaller than the screen, and puts up a warning message +# outside the window. Te erases the warning message, puts the +# window back to be the whole screen, and puts the cursor at just +# below the small window. I defined <cnorm> and <civis> to really turn +# the cursor on and off, but I have taken this out since I don't +# like the cursor being turned off when vi exits. +cg7900|chromatics|chromatics 7900, + am, + cols#80, lines#40, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^], + cup=\001M%p2%d\,%p1%d\,, cuu1=^K, dch1=^A<1, dl1=^A<2, + ed=^Al, el=^A`, home=^\, ich1=^A>1, il1=^A>2, ind=\n, ll=^A|, + rmcup=\001W0\,40\,85\,48\,\014\001W0\,0\,85\,48\,\001M0\,40 + \,, + rmso=\001C1\,\001c2\,, + smcup=\001P0\001O1\001R1\001C4\,\001c0\,\014\001M0\,42\,WARN + ING\sDOUBLE\sENTER\sESCAPE\sand\s\025\001C1\,\001c2\, + \001W0\,0\,79\,39\,, + smso=\001C4\,\001c7\,, uc=^A^A_^A\0, + +#### Computer Automation +# + +ca22851|Computer Automation 22851, + am, + cols#80, lines#24, + bel=^G, clear=\014$<8>, cr=\r, cub1=^U, cud1=\n, cuf1=^I, + cup=\002%i%p1%c%p2%c, cuu1=^V, ed=^\, el=^], home=^^, ind=\n, + kcub1=^U, kcud1=^W, kcuu1=^V, khome=^^, + +#### Cybernex +# + +# This entry has correct padding and the undocumented "ri" capability +cyb83|xl83|Cybernex xl-83, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\014$<62>, cr=\r, cub1=^H, cud1=\n, cuf1=^I, + cup=\027%p1%{32}%+%c%p2%{32}%+%c, cuu1=^N, + ed=\020$<62>, el=\017$<3>, home=^K, ind=\n, kcub1=^H, + kcud1=\n, kcuf1=^I, kcuu1=^N, ri=^N, +# (mdl110: removed obsolete ":ma=^Z^P:" and overridden ":cd=145^NA^W:" -- esr) +cyb110|mdl110|Cybernex mdl-110, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=\030$<70>, cr=\r, cub1=^H, cud1=\n, cuf1=^U, + cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^Z, + dch1=\016A\036$<3.5>, dl1=\016A\016\036$<40>, + ed=\016@\026$<6>, el=\016@\026$<145>, home=^Y, + ht=\011$<43>, ich1=\016A\035$<3.5>, + il1=\016A\016\035$<65>, ind=\n, rmso=^NG, smso=^NF, + +#### Datapoint +# +# Datapoint is gone. They used to be headquartered in Texas. +# They created ARCnet, an Ethernet competitor that flourished for a while +# in the early 1980s before 3COM got wise and cut its prices. The service +# side of Datapoint still lives (1995) in the form of Intelogic Trace. +# + +dp3360|datapoint|Datapoint 3360, + OTbs, am, + cols#82, lines#25, + bel=^G, clear=^]^_, cr=\r, cub1=^H, cud1=\n, cuf1=^X, cuu1=^Z, + ed=^_, el=^^, home=^], ind=\n, + +# From: Jan Willem Stumpel <jw.stumpel@inter.nl.net>, 11 May 1997 +# The Datapoint 8242 Workstation was sold at least between 1985 +# and 1989. To make the terminal work with this entry, press +# CONTROL-INT-INT to take the terminal off-line, and type (opt). +# Set the options AUTO ROLL, ROLL DN, and ESC KBD on, and AUTO +# CR/LF off. Use control-shift-[] as escape key, control-I as tab, +# shift-F1 to shift-F5 as F6 to F10 (unshifted F1 to F5 are in +# fact unusable because the strings sent by the terminal conflict +# with other keys). +# The terminal is capable of displaying "box draw" characters. +# For each graphic character you must send 2 ESC's (\E\E) followed +# by a control character as follows: +# character meaning +# ========= ======= +# ctrl-E top tee +# ctrl-F right tee +# ctrl-G bottom tee +# ctrl-H left tee +# ctrl-I cross +# ctrl-J top left corner +# ctrl-K top right corner +# ctrl-L bottom left corner +# ctrl-M bottom right corner +# ctrl-N horizontal line +# ctrl-O vertical line +# Unfortunately this cannot be fitted into the termcap/terminfo +# description scheme. +dp8242|Datapoint 8242, + msgr, + cols#80, lines#25, + bel=^G, civis=^Y, clear=^U\E^D^W^X, cnorm=^X, cr=\r, cub1=^H, + cud1=\n, cup=\011%p2%'\0'%+%c%p1%'\0'%+%c, dl1=\E^Z, + ed=^W, el=^V, home=^U, ht=^I, il1=\E^T, ind=^C, + is1=\E\014\E\016\0\230\0\317\025\027\030\E\004, + kbs=^H, kcub1=^D, kcud1=^B, kcuf1=^F, kcuu1=^E, kf1=^G\Ee, + kf10=\EK\Ea, kf2=^I\Ed, kf3=\n\Ec, kf4=\n\Eb, kf5=^S\Ea, + kf6=\EO\Ee, kf7=\EN\Ed, kf8=\EM\Ec, kf9=\EL\Eb, nel=\r\n, + rep=\E\023%p1%c%p2%c, ri=^K, rmso=\E^D, rmul=\E^D, + rs1=\E\014\E\016\0\230\0\317\025\027\030\E\004, + smso=\E^E, smul=\E^F, + wind=\E\014\E\016%p1%'\0'%+%c%p2%'\0'%+%c%p3%'\0'%+%c%p4%' + \0'%+%c\025, + +#### DEC terminals (Obsolete types: DECwriter and vt40/42/50) +# +# These entries came from DEC's official terminfos for its older terminals +# (which happen to be identical to the AT&T/SCO terminal descriptions), +# Bill Hedberg <hedberg@hannah.enet.dec.com> of Terminal Support Engineering +# may have had more information. Updated terminfos and termcaps were available +# at ftp://gatekeeper.dec.com/pub/DEC/termcaps. + +# DEC's terminfos did not describe the auxiliary keypad. +# +# DECScope of course had no "function keys", but this building block assigns +# the three blank keys at the top of the auxiliary (numeric) keypad, using +# the same analogy as vt100 (also lacking function-keys). +# +# These assignments use the same layout for 0-9 as vt100+keypad; the vt52 +# keypad had its cursor-keys on the right-column as shown -TD +# _______________________________________ +# | PF1 | PF2 | PF3 | c-up | +# | \EP | \EQ | \ER | \EA | +# |_kf1__k1_|_kf2__k2_|_kf3__k3_|kcuu1_k4_| +# | 7 8 9 c-down | +# | \E?w | \E?x | \E?y | \EB | +# |_kf9__k9_|_kf10_k;_|_kf0__k0_|kcud1____| +# | 4 | 5 | 6 | c-right | +# | \E?t | \E?u | \E?v | \EC | +# |_kf5__k5_|_kf6__k6_|_kf7__k7_|kcuf1_k8_| +# | 1 | 2 | 3 | c-left | +# | \E?q | \E?r | \E?s | \ED | +# |_ka1__K1_|_kb2__K2_|_ka3__K3_|kcub1____| +# | 0 | . | enter | +# | \E?p | \E?n | \E?M | +# |___kc1_______K4____|_kc3__K5_|_kent_@8_| +# +vt52+keypad|DECScope auxiliary keypad, + ka1=\E?q, ka3=\E?s, kb2=\E?r, kc1=\E?p, kc3=\E?n, kf0=\E?y, + kf1=\EP, kf2=\EQ, kf3=\ER, kf5=\E?t, kf6=\E?u, kf7=\E?v, + kf8=\E?w, kf9=\E?x, + +gt40|DEC gt40, + OTbs, os, + cols#72, lines#30, + bel=^G, cr=\r, cub1=^H, cud1=\n, +gt42|DEC gt42, + OTbs, os, + cols#72, lines#40, + bel=^G, cr=\r, cub1=^H, cud1=\n, + +vt50|DEC vt50, + OTbs, + cols#80, lines#12, + bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cuu1=\EA, ed=\EJ, el=\EK, ht=^I, ind=\n, u8=\E/A, u9=\EZ, +vt50h|DEC vt50h, + cub1=\ED, cud1=\EB, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, u8=\E/[HJ], + use=vt52+keypad, use=vt50, + +# (vt61: there's a BSD termcap that claims <dl1=\EPd>, <il1=\EPf.> <kbs=^H>) +vt61|vt-61|vt61.5|DEC vt61, + cols#80, lines#24, + bel=^G, clear=\EH\EJ$<120>, cr=\r$<20>, cub1=^H, cud1=\n, + cuf1=\EC$<20>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, + cuu1=\EA$<20>, ed=\EJ$<120>, el=\EK$<70>, ht=^I, + ind=\n$<20>, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, + ri=\E$<20>I, + +# The gigi does standout with red! +# (gigi: I added <rmam>/<smam> based on the init string, corrected cub1 -- esr) +gigi|vk100|DEC gigi graphics terminal, + OTbs, am, xenl, + cols#84, lines#24, + bel=^G, clear=\E[H\E[2J, cr=\r, cub=\E[%p1%dD, 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, 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, + +# 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, +# grossly-overpriced failure (among other things, DEC's OS didn't include +# a format program, so you had to buy pre-formatted floppies from DEC at +# a hefty premium!). +pro350|decpro|DEC pro console, + OTbs, + cols#80, it#8, lines#24, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + clear=\EH\EJ, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, + el=\EK, home=\EH, ht=^I, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kf0=\EE, kf1=\EF, kf2=\EG, kf3=\EH, kf4=\EI, + kf5=\EJ, kf6=\Ei, kf7=\Ej, khome=\EH, ri=\EI, rmacs=\EG, + rmso=\E^N, rmul=\E^C, smacs=\EF, smso=\E^H, smul=\E^D, + +dw1|DECwriter I, + OTbs, hc, os, + cols#72, + bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n, +dw2|decwriter|dw|DECwriter II, + OTbs, hc, os, + cols#132, + bel=^G, cr=\r, cub1=^H, cud1=\n, ind=\n, kbs=^H, +# \E(B Use U.S. character set (otherwise # => british pound !) +# \E[20l Disable "linefeed newline" mode (else puts \r after \n,\f,\v) +# \E[w 10 char/in pitch +# \E[1;132 full width horizontal margins +# \E[2g clear all tab stops +# \E[z 6 lines/in +# \E[66t 66 lines/page (for \f) +# \E[1;66r full vertical page can be printed +# \E[4g clear vertical tab stops +# \E> disable alternate keypad mode (so it transmits numbers!) +# \E[%i%p1%du set tab stop at column %d (origin == 1) +# (Full syntax is \E[n;n;n;n;n;...;nu where each 'n' is +# a tab stop) +# +# The dw3 does standout with wide characters. +# +dw3|la120|DECwriter III, + OTbs, hc, os, + cols#132, + bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n, + is1=\E(B\E[20l\E[w\E[0;132s\E[2g\E[z\E[66t\E[1;66r\E[4g\E>, + is2=\E[9;17;25;33;41;49;57;65;73;81;89;97;105;113;121;129u + \r, + kbs=^H, rmso=\E[w, sgr0=\E[w, smso=\E[6w, +dw4|DECwriter IV, + OTbs, am, hc, os, + cols#132, + bel=^G, cr=\r, cub1=^H, cud1=\n, ht=^I, ind=\n, is2=\Ec, kbs=^H, + kf0=\EOP, kf1=\EOQ, kf2=\EOR, kf3=\EOS, + +# These aren't official +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, +ln03-w|DEC ln03 laser printer 132 cols, + cols#132, + bel=^G, cr=\r, cud1=\n, ht=^I, ind=\n, kbs=^H, kcub1=^H, + kcud1=\n, nel=\r\n, use=ln03, + +#### Delta Data (dd) +# + +# Untested. The cup sequence is hairy enough that it probably needs work. +# The idea is ctrl(O), dd(row), dd(col), where dd(x) is x - 2*(x%16) + '9'. +# There are BSD-derived termcap entries floating around for this puppy +# that are *certainly* wrong. +delta|dd5000|delta data 5000, + OTbs, am, + cols#80, lines#27, + bel=^G, clear=^NR, cub1=^H, cud1=\n, cuf1=^Y, + cup=\017%p1%p1%{16}%m%{2}%*%-%{57}%+%c%p2%p2%{16}%m%{2}%*%- + %{57}%+%c, + cuu1=^Z, dch1=^NV, el=^NU, home=^NQ, ind=\n, + +#### Digital Data Research (ddr) +# + +# (ddr: I added <rmam>/<smam> based on the init string -- esr) +ddr|rebus3180|ddr3180|Rebus/DDR 3180 vt100 emulator, + OTbs, am, xenl, + cols#80, it#8, lines#24, vt#3, + blink=\E[5m$<2/>, bold=\E[1m$<2/>, + clear=\E[H\E[2J$<50/>, csr=\E[%i%p1%d;%p2%dr, cub1=^H, + cud1=\n, 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, 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, rc=\E8, 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/>, + rs1=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sc=\E7, + sgr0=\E[m$<2/>, smam=\E[7l, smkx=\E[?1h\E=, smso=\E[7m, + smul=\E[4m$<2/>, + +#### Evans & Sutherland +# + +# Jon Leech <leech@cs.unc.edu> tells us: +# The ps300 was the Evans & Sutherland Picture System 300, a high +# performance 3D vector graphics system with a bunch of specialized hardware. +# Approximate date of release was 1982 (early 80s, anyway), and it had several +# evolutions including (limited) color versions such as the PS330C. PS300s +# were effectively obsolete by the late 80s, replaced by raster graphics +# systems, although specialized applications like molecular modeling +# hung onto them for a while longer. AFAIK all E&S vector graphics systems +# are out of production, though of course E&S is very much alive (in 1996). +# (ps300: changed ":pt@:" to "it@" -- esr) +# +ps300|Picture System 300, + xt, + it@, + rmso@, rmul@, smso@, smul@, use=vt100+4bsd, + +#### General Electric (ge) +# + +terminet1200|terminet300|tn1200|tn300|terminet|GE terminet 1200, + OTbs, hc, os, + cols#120, + bel=^G, cr=\r, cud1=\n, ind=\n, + +#### Heathkit/Zenith +# + +# Here is a description of the H19 DIP switches: +# +# S401 +# 0-3 = baud rate as follows: +# +# 3 2 1 0 +# --- --- --- --- +# 0 0 1 1 300 baud +# 0 1 0 1 1200 baud +# 1 0 0 0 2400 baud +# 1 0 1 0 4800 baud +# 1 1 0 0 9600 baud +# 1 1 0 1 19.2K baud +# +# 4 = parity (0 = no parity) +# 5 = even parity (0 = odd parity) +# 6 = stick parity (0 = normal parity) +# 7 = full duplex (0 = half duplex) +# +# S402 +# 0 = block cursor (0 = underscore cursor) +# 1 = no key click (0 = keyclick) +# 2 = wrap at end of line (0 = no wrap) +# 3 = auto LF on CR (0 = no LF on CR) +# 4 = auto CR on LF (0 = no CR on LF) +# 5 = ANSI mode (0 = VT52 mode) +# 6 = keypad shifted (0 = keypad unshifted) +# 7 = 50Hz refresh (1 = 60Hz refresh) +# +# Factory Default settings are as follows: +# 7 6 5 4 3 2 1 0 +# S401 1 0 0 0 1 1 0 0 +# S402 0 0 0 0 0 0 0 0 +# (h19: I added <rmam>/<smam> based on the init string; +# also added empty <acsc> to suppress a tic warning -- esr) +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, + 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, +h19-bs|Heathkit w/keypad shifted, + rmkx=\Eu, smkx=\Et, use=h19-b, +h19-us|h19us|h19-smul|Heathkit w/keypad shifted/underscore cursor, + rmkx=\Eu, smkx=\Et, use=h19-u, +# (h19: merged in <ip> from BSDI hp19-e entry>; +# also added empty <acsc> to suppress a tic warning --esr) +# From: Tim Pierce <twp@skepsis.com>, 23 Feb 1998 +# Tim tells us that: +# I have an old Zenith-19 terminal at home that still gets a lot of use. +# This terminal suffers from the same famous insert-mode padding lossage +# that has been acknowledged for the Z29 terminal. Emacs is nearly +# unusable on this box, since even a half-scroll up or down the window +# causes flaming terminal death. +# +# On the Z19, the only way I have found around this problem is to remove +# the :al: and :dl: entries entirely. No amount of extra padding will +# help (I have tried up to 20000). Removing <il1=\EL$> and <dl1=\EM$> +# makes Emacs a little slower, but it remains in the land of the living. +# Big win. +h19|heath|h19-b|heathkit|heath-19|z19|zenith|Heathkit h19, + OTbs, am, eslok, hs, mir, msgr, + cols#80, it#8, lines#24, + acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, bel=^G, + clear=\EE, cnorm=\Ey4, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, cvvis=\Ex4, + dch1=\EN, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, ind=\n, + ip=$<1.5/>, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, + kf6=\EP, kf7=\EQ, kf8=\ER, khome=\EH, lf6=blue, lf7=red, + lf8=white, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF, + smir=\E@, smso=\Ep, tsl=\Ej\Ex5\EY8%p1%{32}%+%c\Eo\Eo, +h19-u|Heathkit with underscore cursor, + cnorm@, cvvis@, use=h19-b, +h19-g|h19g|Heathkit w/block cursor, + cnorm=\Ex4, cvvis@, use=h19-b, +alto-h19|altoh19|altoheath|alto-heath|alto emulating Heathkit h19, + lines#60, + dl1=\EM, il1=\EL, use=h19, + +# The major problem with the Z29 is that it requires more padding than the Z19. +# +# The problem with declaring an H19 to be synonymous with a Z29 is that +# it needs more padding. It especially loses if a program attempts +# to put the Z29 into insert mode and insert text at 9600 baud. It +# even loses worse if the program attempts to insert tabs at 9600 +# baud. Adding padding to text that is inserted loses because in +# order to make the Z29 not die, one must add so much padding that +# whenever the program tries to use insert mode, the effective +# rate is about 110 baud. +# +# What program would want to put the terminal into insert mode +# and shove stuff at it at 9600 baud you ask? +# +# Emacs. Emacs seems to want to do the mathematically optimal +# thing in doing a redisplay rather than the practical thing. +# When it is about to output a line on top of a line that is +# already on the screen, instead of just killing to the end of +# the line and outputting the new line, it compares the old line +# and the new line and if there are any similarities, it +# constructs the new line by deleting the text on the old line +# on the terminal that is already there and then inserting new +# text into the line to transform it into the new line that is +# to be displayed. The Z29 does not react kindly to this. +# +# But don't cry for too long.... There is a solution. You can make +# a termcap entry for the Z29 that says the Z29 has no insert mode. +# Then Emacs cannot use it. "Oh, no, but now inserting into a +# line will be really slow", you say. Well there is a sort of a +# solution to that too. There is an insert character option on +# the Z29 that will insert one character. Unfortunately, it +# involves putting the terminal into ansi mode, inserting the +# character, and changing it back to H19 mode. All this takes 12 +# characters. Pretty expensive to insert one character, but it +# works. Either Emacs doesn't try to use its inserting hack when +# it's only given an insert character ability or the Z29 doesn't +# require padding with this (the former is probably more likely, +# but I haven't checked it out). +# (z29: added empty <acsc> to suppress a tic warning, merged in +# status line capabilities from BRL entry --esr) +z29|zenith29|z29b|Zenith z29b, + OTbs, OTpt, am, eslok, hs, mir, msgr, + OTkn#10, cols#80, lines#24, + OTbc=\ED, acsc=, bel=^G, cbt=\E-, clear=\EE$<14>, cnorm=\Ey4, + cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\E$<1>A, + cvvis=\Ex4, dch1=\EN$<0.1*>, dl1=\EM$<1/>, dsl=\Ey1, + ed=\EJ$<14>, el=\EK$<1>, fsl=\Ek\Ey5, home=\EH, ht=^I, + ich1=\E<\E[1@\E[?2h$<1>, il1=\EL$<1/>, ind=\n$<2>, + is2=\E<\E[?2h\Ev, kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, + kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, + lf0=home, ri=\EI$<2/>, rmacs=\EF, rmir=\EO, rmso=\Eq, + rmul=\Es0, smacs=\EG, smir=\E@, smso=\Ep, smul=\Es8, + tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, +# z29 in ansi mode. Assumes that the cursor is in the correct state, and that +# the world is stable. <rs1> causes the terminal to be reset to the state +# indicated by the name. kc -> key click, nkc -> no key click, uc -> underscore +# cursor, bc -> block cursor. +# From: Mike Meyers +# (z29a: replaced nonexistent <if=/usr/share/tabset/zenith29> because <hts> +# looks vt100-compatible -- esr) +z29a|z29a-kc-bc|h29a-kc-bc|Heath/Zenith 29 in ansi mode, + OTbs, OTpt, am, eslok, hs, mir, msgr, + 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, cub=\E[%p1%dD, 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, + dch=\E[%p1%dP, dch1=\E[1P, dim=\E[2m, dl=\E[%p1%dM, + dl1=\E[M, 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, + il=\E[%p1%dL, il1=\E[L, ind=\ED, kbs=^H, kclr=\E[J, + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, 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, + 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, +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 + m, + use=z29a, +z29a-nkc-bc|h29a-nkc-bc|Zenith z29 ansi mode with block cursor and no keyclick, + rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2;4h\E[>1;3;5;6;7;8;9l\E[m + \E[11m, + use=z29a, +z29a-nkc-uc|h29a-nkc-uc|Zenith z29 ansi mode with underscore cursor and no keyclick, + rs1=\E<\E[1;24r\E[24;1H\E[?7h\E[>2h\E[>1;3;4;5;6;7;8;9l\E[m + \E[11m, + use=z29a, +# From: Jeff Bartig <jeffb@dont.doit.wisc.edu> 31 Mar 1995 +z39-a|z39a|zenith39-a|zenith39-ansi|Zenith 39 in ANSI mode, + am, eslok, hs, mc5i, mir, msgr, xon, + cols#80, lines#24, + 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, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, + 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, ht=^I, hts=\EH, 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, kbs=^H, kc1=\EOq, kc3=\EOs, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, ked=\E[J, kf1=\EOS, + kf2=\EOT, kf3=\EOU, kf4=\EOV, kf5=\EOW, kf6=\EOP, kf7=\EOQ, + kf8=\EOR, kf9=\EOX, khlp=\E[~, khome=\E[H, ll=\E[24;1H, + mc0=\E[?19h\E[i, mc4=\E[4i, mc5=\E[5i, 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, tbc=\E[3g, + tsl=\E[s\E[>1h\E[25;%i%p1%dH, + +# From: Brad Brahms <Brahms@USC-ECLC> +z100|h100|z110|z-100|h-100|Heath/Zenith z-100 pc with color monitor, + cnorm=\Ey4\Em70, cvvis=\Ex4\Em71, use=z100bw, +# (z100bw: removed obsolete ":kn#10:", added empty <acsc> -- esr) +z100bw|h100bw|z110bw|z-100bw|h-100bw|Heath/Zenith z-100 pc, + OTbs, OTpt, mir, msgr, + OTkn#10, cols#80, it#8, lines#24, + acsc=+h.kaiggjdkclfmenbozqas{tvutvuwsx`~\^, + clear=\EE$<5*/>, cnorm=\Ey4, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<1*/>, cuu1=\EA, + cvvis=\Ex4, dch1=\EN$<1*/>, dl1=\EM$<5*/>, ed=\EJ, el=\EK, + home=\EH, ht=^I, il1=\EL$<5*/>, kbs=^H, kcub1=\ED, kcud1=\EB, + kcuf1=\EC, kcuu1=\EA, kf0=\EJ, kf1=\ES, kf2=\ET, kf3=\EU, + kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\EOI, + khome=\EH, ri=\EI, rmacs=\EG, rmir=\EO, rmso=\Eq, smacs=\EF, + smir=\E@, smso=\Ep, +p19|h19-b with il1/dl1, + dl1=\EM$<2*/>, il1=\EL$<2*/>, use=h19-b, +# From: <ucscc!B.fiatlux@ucbvax.berkeley.edu> +# (ztx: removed duplicate :sr: -- esr) +ztx|ztx11|zt-1|htx11|ztx-1-a|Heath/Zenith ztx-10 or 11, + OTbs, am, eslok, hs, + cols#80, it#8, lines#24, + clear=\EE, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dl1=\EM, + dsl=\Ey1, ed=\EJ, el=\EK, fsl=\Ek\Ey5, home=\EH, ht=^I, + il1=\EL, is2=\Ej\EH\Eq\Ek\Ev\Ey1\Ey5\EG\Ey8\Ey9\Ey>, + kbs=^H, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kf0=\ES, + kf1=\EB, kf2=\EU, kf3=\EV, kf4=\EW, kf5=\EP, kf6=\EQ, kf7=\ER, + ri=\EI, rmso=\Eq, rmul=\Eq, smso=\Es5, smul=\Es2, + tsl=\Ej\Ex5\Ex1\EY8%+ \Eo, + +#### IMS International (ims) +# +# There was a company called IMS International located in Carson City, +# Nevada, that flourished from the mid-70s to mid-80s. They made S-100 +# bus/Z80 hardware and a line of terminals called Ultimas. +# + +# From: Erik Fair <fair@ucbarpa.berkeley.edu> Sun Oct 27 07:21:05 1985 +ims950-b|bare ims950 no init string, + is2@, use=ims950, +# (ims950: removed obsolete ":ko@:" -- esr) +ims950|IMS TeleVideo 950 emulation, + xenl@, + flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, + kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950, +# (ims950-rv: removed obsolete ":ko@:" -- esr) +ims950-rv|IMS tvi950 rev video, + xenl@, + flash@, kbs@, kcub1@, kcud1@, kcuf1@, kcuu1@, kf0@, kf1@, kf2@, kf3@, + kf4@, kf5@, kf6@, kf7@, kf8@, kf9@, khome@, use=tvi950-rv, +ims-ansi|ultima2|ultimaII|IMS Ultima II, + OTbs, am, + cols#80, it#8, lines#24, + clear=\E[H\E[2J, cub1=^H, cud1=\ED, cuf1=\EC, + cup=\E[%i%p1%2d;%p2%2dH, cuu1=\EM, ed=\E[0J, el=\E[0K, + ht=^I, if=/usr/share/tabset/vt100, + is2=\E[m\E[>14l\E[?1;?5;20l\E>\E[1m\r, kcub1=\E[D, + kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, khome=\E[H, ri=\EM, + rmso=\E[m\E[1m, rmul=\E[m\E[1m, sgr0=\E[m, smso=\E[7m, + smul=\E[4m, + +#### Intertec Data Systems +# +# I think this company is long dead as of 1995. They made an early CP/M +# micro called the "Intertec Superbrain" that was moderately popular, +# then sank out of sight. +# + +superbrain|Intertec Superbrain, + OTbs, am, bw, + cols#80, lines#24, + OTbc=^U, bel=^G, clear=\014$<5*>, cr=\r, cub1=^H, cud1=\n, + cuf1=^F, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<20>, cuu1=^K, + ed=\E~k<10*>, el=\E~K$<15>, ht=^I, ind=\n, kcub1=^U, + kcud1=\n, kcuf1=^F, kcuu1=^K, rmcup=^L, smcup=^L, +# (intertube: a Gould entry via BRL asserted smul=\E0@$<200/>, +# rmul=\E0A$<200/>; my guess is the highlight letter is bit-coded like an ADM, +# and the reverse is actually true. Try it. -- esr) +intertube|intertec|Intertec InterTube, + OTbs, am, + cols#80, lines#25, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^F, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<50>, cuu1=^Z, home=^A, + ind=\n, rmso=\E0@, smso=\E0P, +# The intertube 2 has the "full duplex" problem like the Tektronix 4025: if you +# are typing and a command comes in, the keystrokes you type get interspersed +# with the command and it messes up +intertube2|Intertec data systems InterTube 2, + OTbs, + cup=\016%p1%c\020%p2%{10}%/%{16}%*%p2%{10}%m%+%c, + el=\EK, hpa=\020%p1%{10}%/%{16}%*%p1%{10}%m%+%c, + ll=^K^X\r, vpa=\013%p1%c, use=intertube, + +#### Ithaca Intersystems +# +# This company made S100-bus personal computers long ago in the pre-IBM-PC +# past. They used to be reachable at: +# +# Ithaca Intersystems +# 1650 Hanshaw Road +# Ithaca, New York 14850 +# +# However, the outfit went bankrupt years ago. +# + +# The Graphos III was a color graphics terminal from Ithaca Intersystems. +# These entries were written (originally in termcap syntax) by Brian Yandell +# <yandell@stat.wisc.edu> and Mike Meyer <mikem@stat.wisc.edu> at the +# University of Wisconsin. + +# (graphos: removed obsolete and syntactically incorrect :kn=4:, +# removed <if=/usr/share/tabset/init.graphos> and +# <rf=/usr/share/tabset/init.graphos> no such file & no <hts> -- esr) +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, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\E[B, + cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, cuu1=\E[A, + cvvis=\Ez4;2;1z\Ez56;2;80;24z, dch1=\E[P, dl=\E[%p1%dM, + dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, il=\E[%p1%dL, + il1=\E[L, ind=\ED, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kf1=\EOP, kf2=\EOQ, kf3=\EOR, + kf4=\EOS, khome=\E[H, nel=\r\ED, rc=\E8, ri=\EM, rmdc=\E[4l, + rmir=\E[4l, rmso=\E[m, sc=\E7, sgr0=\E[m, smdc=\E[4h, + smir=\E[4h, smso=\E[7m, +graphos-30|graphos III with 30 lines, + lines#30, + cvvis=\Ez4;2;1z\Ez56;2;80;30z, use=graphos, + +#### Modgraph +# +# These people used to be reachable at: +# +# Modgraph, Inc +# 1393 Main Street, +# Waltham, MA 02154 +# Vox: (617)-890-5796. +# +# However, if you call that number today you'll get an insurance company. +# I have mail from "Michael Berman, V.P. Sales, Modgraph" dated +# 26 Feb 1997 that says: +# +# Modgraph GX-1000, replaced by GX-2000. Both are out of production, have been +# for ~7 years. Modgraph still in business. Products are rugged laptop and +# portable PC's and specialized CRT and LCD monitors (rugged, rack-mount +# panel-mount etc). I can be emailed at sonfour@aol.com +# +# Peter D. Smith <pdsmith@nbbn.com> notes that his modgraph manual was +# dated 1984. According to the manual, it featured Tek 4010/4014 +# graphics and DEC VT100/VT52 + ADM-3A emulation with a VT220-style keyboard. +# + +modgraph|mod24|modgraph terminal emulating vt100, + xenl@, + cols#80, lines#24, + cvvis=\E\^9;0s\E\^7;1s, + is2=\E\^9;0s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E\^11 + ;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;73s + \E\^11;81s\E\^11;89s, + rf@, ri=\EM\E[K$<5/>, use=vt100+4bsd, +# The GX-1000 manual is dated 1984. This looks rather like a VT-52. +modgraph2|modgraph gx-1000 80x24 with keypad not enabled, + am, da, db, + cols#80, it#8, lines#24, + clear=\EH\EJ$<50/>, cub1=^H, cud1=\EB$<2/>, + cuf1=\EC$<2/>, cup=\EY%p1%{32}%+%c%p2%{32}%+%c$<5/>, + cuu1=\EA$<2/>, ed=\EJ$<50/>, el=\EK$<3/>, ht=^I, + is2=\E<\E\^5;2s\E\^7;1s\E[3g\E\^11;9s\E\^11;17s\E\^11;25s\E + \^11;33s\E\^11;41s\E\^11;49s\E\^11;57s\E\^11;65s\E\^11;7 + 3s\E\^11;81s\E\^11;89s\E\^12;0s\E\^14;2s\E\^15;9s\E\^25; + 1s\E\^9;1s\E\^27;1, + ri=\EI$<5/>, +# +# Modgraph from Nancy L. Cider <nancyc@brl-tbd> +# BUG NOTE from Barbara E. Ringers <barb@brl-tbd>: +# If we set TERM=vt100, and set the Modgraph screen to 24 lines, setting a +# mark and using delete-to-killbuffer work correctly. However, we would +# like normal mode of operation to be using a Modgraph with 48 line setting. +# If we set TERM=mod (which is a valid entry in termcap with 48 lines) +# the setting mark and delete-to-killbuffer results in the deletion of only +# the line the mark is set on. +# We've discovered that the delete-to-killbuffer works correctly +# with TERM=mod and screen set to 80x48 but it's not obvious. Only +# the first line disappears but a ctrl-l shows that it did work +# correctly. +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, csr=\E[%i%p1%d;%p2%dr, 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, rc=\E8, rev=\E[7m, + ri=\EM, rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + rs1=\E=\E[0q\E>, sc=\E7, sgr0=\E[m, smkx=\E[?1h\E=, + smso=\E[7m, smul=\E[4m, + +#### Morrow Designs +# +# This was George Morrow's company. They started in the late 1970s making +# S100-bus machines. They used to be reachable at: +# +# Morrow +# 600 McCormick St. +# San Leandro, CA 94577 +# +# but they're long gone now (1995). +# + +# The mt70 terminal was shipped with the Morrow MD-3 microcomputer. +# Jeff's specimen was dated June 1984. +# From: Jeff Wieland <wieland@acn.purdue.edu> 24 Feb 1995 +mt70|mt-70|Morrow MD-70; native Morrow mode, + am, mir, msgr, xon, + cols#80, it#8, lines#24, + acsc=+z\,{-x.yOi`|jGkFlEmDnHqJtLuKvNwMxI, bel=^G, + cbt=\EI, civis=\E"0, clear=^Z, cnorm=\E"2, cr=\r, cub1=^H, + cud1=\n, cuf1=^L, cup=\E=%p1%{32}%+%c%p2%{32}%+%c$<1>, + cuu1=^K, dch1=\EW, dim=\EG2, dl1=\ER, ed=\EY, el=\ET$<10>, + flash=\EK1$<200>\EK0, home=^^, ht=^I, ich1=\EQ, il1=\EE, + ind=\n, invis@, is1=\E"2\EG0\E], kbs=^H, kcbt=^A^Z\r, + kclr=^An\r, kcub1=^AL\r, kcud1=^AK\r, kcuf1=^AM\r, + kcuu1=^AJ\r, kdch1=^?, kf1=^A@\r, kf10=^AI\r, kf11=^A`\r, + kf12=^Aa\r, kf13=^Ab\r, kf14=^Ac\r, kf15=^Ad\r, kf16=^Ae\r, + kf17=^Af\r, kf18=^Ag\r, kf19=^Ah\r, kf2=^AA\r, kf20=^Ai\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, khlp=^AO\r, khome=^AN\r, nel=^_, + rmacs=\E%%, rmcup=, smacs=\E$, smcup=\E"2\EG0\E], + smul=\EG1, tbc=\E0, use=adm+sgr, + +#### Motorola +# + +# Motorola EXORterm 155 from {decvax, ihnp4}!philabs!sbcs!megad!seth via BRL +# (Seth H Zirin) +ex155|Motorola Exorterm 155, + OTbs, am, bw, + OTkn#5, OTug#1, cols#80, lines#24, + cbt=\E[, clear=\EX, cub1=\ED, cud1=\EB, cuf1=\EC, + cup=\EE%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\ET, + el=\EU, home=\E@, ht=\EZ, kbs=^H, kcbt=\E[, kclr=\EX, kcub1=^H, + kcud1=\n, kcuf1=^L, kcuu1=^K, ked=\ET, kel=\EU, khome=\E@, + rmso=\Ec\ED, rmul=\Eg\ED, smso=\Eb\ED, smul=\Ef\ED, + +#### Omron +# +# This company is still around in 1995, manufacturing point-of-sale systems. + +omron|Omron 8025AG, + OTbs, am, da, db, + cols#80, lines#24, + bel=^G, clear=\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, cuu1=\EA, + cvvis=\EN, dch1=\EP, dl1=\EM, ed=\ER, el=\EK, home=\EH, + il1=\EL, ind=\ES, ri=\ET, rmso=\E4, smso=\Ef, + +#### Ramtek +# +# Ramtek was a vendor of high-end graphics terminals around 1979-1983; they +# were competition for things like the Tektronix 4025. +# + +# Ramtek 6221 from BRL, probably by Doug Gwyn +# The following SET-UP modes are assumed for normal operation: +# UNDERLINE_CURSOR ANSI_MODE AUTO_XON/XOFF_ON +# NEWLINE_OFF 80_COLUMNS +# Other SET-UP modes may be set for operator convenience or communication +# requirements; I recommend +# SMOOTH_SCROLL AUTO_REPEAT_ON 3_#_SHIFTED WRAP_AROUND_ON +# Hardware tabs are assumed to be every 8 columns; they can be set up by the +# "reset", "tset", or "tabs" utilities (use rt6221-w, 160 columns, for this). +# Note that the Control-E key is useless on this brain-damaged terminal. No +# delays are specified; use "stty ixon -ixany" to enable DC3/DC1 flow control! +rt6221|Ramtek 6221 80x24, + OTbs, OTpt, msgr, xon, + OTkn#4, cols#80, it#8, lines#24, vt#3, + acsc=, bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[>5l, + clear=\E[1;1H\E[J, cnorm=\E[>5h\E[>9h, cr=\r, + csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=^K, cuf=\E[%p1%dC, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\EM, + cvvis=\E[>7h\E[>9l, ed=\E[J, el=\E[K, home=\E[1;1H, ht=^I, + 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, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmkx=\E>, + rmso=\E[m, rmul=\E[m, + 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>, + sc=\E7, sgr0=\E[m, smacs=^N, smkx=\E=, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, +# [TO DO: Check out: short forms of ho/cl and ll; reset (\Ec)]. +rt6221-w|Ramtek 6221 160x48, + cols#160, lines#48, + ll=\E[48;1H, use=rt6221, + +#### RCA +# + +# RCA VP3301 or VP3501 +rca|RCA vp3301/vp3501, + OTbs, + cols#40, lines#24, + clear=^L, cuf1=^U, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, home=^Z, rmso=\E\ES0, smso=\E\ES1, + + +#### Selanar +# + +# Selanar HiREZ-100 from BRL, probably by Doug Gwyn +# The following SET-UP modes are assumed for normal operation: +# SET_DEFAULT_TABS 48_LINES 80_COLUMNS +# ONLINE ANSI CURSOR_VISIBLE +# VT102_AUTO_WRAP_ON VT102_NEWLINE_OFF VT102_MONITOR_MODE_OFF +# LOCAL_ECHO_OFF US_CHAR_SET WPS_TERMINAL_DISABLED +# CPU_AUTO_XON/XOFF_ENABLED PRINT_FULL_SCREEN +# For use with graphics software, all graphics modes should be set to factory +# default. Other SET-UP modes may be set for operator convenience or +# communication requirements. No delays are specified; use "stty ixon -ixany" +# to enable DC3/DC1 flow control! +# I commented out the scrolling capabilities since they are too slow. +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, clear=\E[H\E[J, + cr=\r, cub=\E[%p1%dD, 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=\EM, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, + hts=\EH, il=\E[%p1%dL, il1=\E[L, 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, mc4=\E[4i\E[?4i, + mc5=\E[?5i\E[5i, nel=\EE, rc=\E8, rev=\E[7m, rmacs=^O, + rmkx=\E[?1l\E>, rmso=\E[m, rmul=\E[m, + 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=, smso=\E[7m, + smul=\E[4m, tbc=\E[3g, +hirez100-w|Selanar HiREZ-100 in 132-column mode, + cols#132, use=hirez100, + +#### Signetics +# + +# From University of Wisconsin +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=^_", + +#### Soroc +# +# Alan Frisbie <frisbie@flying-disk.com> writes: +# +# As you may recall, the Soroc logo consisted of their name, +# with the letter "S" superimposed over an odd design. This +# consisted of a circle with a slightly smaller 15 degree (approx.) +# wedge with rounded corners inside it. The color was sort of +# a metallic gold/yellow. +# +# If I had been more of a beer drinker it might have been obvious +# to me, but it took a clue from their service department to make +# me exclaim, "Of course!" The circular object was the top of +# a beer can (the old removable pop-top style) and "Soroc" was an +# anagram for "Coors". +# +# I can just imagine the founders of the company sitting around +# one evening, tossing back a few and trying to decide what to +# call their new company and what to use for a logo. +# + +# (soroc120: removed obsolete ":ma=^K^P^R^L^L :" -- esr) +soroc120|iq120|soroc|Soroc iq120, + clear=\E*$<2>, cud1=\n, ed=\EY, el=\ET, kcub1=^H, kcud1=\n, + kcuf1=^L, kcuu1=^K, use=adm3a, +soroc140|iq140|Soroc iq140, + OTbs, am, mir, + cols#80, lines#24, + bel=^G, cbt=\EI, clear=\E+, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\Ew, + dl1=\Er$<.7*>, ed=\Ey, el=\Et, home=^^, il1=\Ee$<1*>, ind=\n, + kbs=^H, kcuf1=^L, kcuu1=^K, kf0=^A0\r, kf1=^A@\r, kf2=^AA\r, + kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, kf6=^AE\r, kf7=^AF\r, + kf8=^AG\r, kf9=^AH\r, khome=^^, ll=^^^K, rmir=\E8, rmso=\E^?, + rmul=\E^A, smir=\E9, smso=\E^?, smul=\E^A, + +#### Southwest Technical Products +# +# These guys made an early personal micro called the M6800. +# The ct82 was probably its console terminal. +# + +# (swtp: removed obsolete ":bc=^D:" -- esr) +swtp|ct82|Southwest Technical Products ct82, + am, + cols#82, lines#20, + bel=^G, clear=^L, cr=\r, cub1=^D, cud1=\n, cuf1=^S, + cup=\013%p2%c%p1%c, cuu1=^A, dch1=^\^H, dl1=^Z, ed=^V, el=^F, + home=^P, ich1=^\^X, il1=^\^Y, ind=^N, + is2=\034\022\036\023\036\004\035\027\011\023\036\035\036 + \017\035\027\022\011, + ll=^C, ri=^O, rmso=^^^F, smso=^^^V, + +#### Synertek +# +# Bob Manson <manson@pattyr.acs.ohio-state.edu> writes (28 Apr 1995): +# +# Synertek used to make ICs, various 6502-based single-board process +# control and hobbyist computers, and assorted peripherals including a +# series of small inexpensive terminals (I think they were one of the +# first to have a "terminal-on-a-keyboard", where the terminal itself +# was only slightly larger than the keyboard). +# +# They apparently had a KTM-1 model, which I've never seen. The KTM-2/40 +# was a 40x24 terminal that could connect to a standard TV through a +# video modulator. The KTM-2/80 was the 80-column version (the 2/40 +# could be upgraded to the 2/80 by adding 2 2114 SRAMs and a new ROM). +# I have a KTM-2/80 still in working order. The KTM-2s had fully +# socketed parts, used 2 6507s, a 6532 as keyboard scanner, a program +# ROM and 2 ROMs as character generators. They were incredibly simple, +# and I've never had any problems with mine (witness the fact that mine +# was made in 1981 and is still working great... I've blown the video +# output transistor a couple of times, but it's a 2N2222 :-) +# +# The KTM-3 (which is what is listed in the terminfo file) was their +# attempt at putting a KTM-2 in a box (and some models came with a +# CRT). It wasn't much different from the KTM-2 hardware-wise, but the +# control and escape sequences are very different. The KTM-3 was always +# real broken, at least according to the folks I've talked to about it. +# +# The padding in the entry is probably off--these terminals were very +# slow (it takes like 100ms for the KTM-2 to clear the screen...) And +# anyone with any sanity replaced the ROMs with something that provided +# a reasonable subset of VT100 functionality, since the usual ROMs were +# obviously very primitive... oh, you could get an upgraded ROM from +# Synertek for some incredible amount of money, but what hacker with an +# EPROM burner would do that? :) +# +# Sorry I don't have any contact info; I believe they were located in +# Sunnyvale, and I'm fairly sure they are still manufacturing ICs +# (they've gone to ASICs and FPGAs), but I doubt they're in the computer +# business these days. +# + +# Tested, seems to work fine with vi. +synertek|ktm|synertek380|Synertek KTM 3/80 tubeless terminal, + am, + cols#80, lines#24, + clear=^Z, cub1=^H, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK, + +#### Tab Office Products +# +# TAB Products Co. - Palo Alto, California +# Electronic Office Products, +# 1451 California Avenue 94304 +# +# I think they're out of business. +# + +# The tab 132 uses xon/xoff, so no padding needed. +# <smkx>/<rmkx> have nothing to do with arrow keys. +# <is2> sets 80 col mode, normal video, autowrap on (for <am>). +# Seems to be no way to get rid of status line. +# The manual for this puppy was dated June 1981. It claims to be VT52- +# compatible but looks more vt100-like. +tab132|tab|tab132-15|tab 132/15, + da, db, + OTdN@, cols#80, lines#24, lm#96, + cud1=\n, cup=\E[%i%p1%d;%p2%dH, dch1=\E[P, dl1=\E[M, + il1=\E[L, is2=\E[?7h\E[?3l\E[?5l, kcub1=\E[D, kcud1=\E[B, + kcuu1=\E[A, rmir=\E[4l, rmkx@, smir=\E[4h, smkx@, + use=vt100+4bsd, +tab132-w|tab132 in wide mode, + cols#132, + is2=\E[?7h\E[?3h\E[?5l, use=tab132, +tab132-rv|tab132 in reverse-video mode, + is2=\E[?7h\E[?3l\E[?5h, use=tab132, +tab132-w-rv|tab132 in reverse-video/wide mode, + is2=\E[?7h\E[?3h\E[?5h, use=tab132-w, + + +#### Teleray +# +# Research Incorporated +# 6425 Flying Cloud Drive +# Eden Prairie, MN 55344 +# Vox: (612)-941-3300 +# +# The Teleray terminals were all discontinued in 1992-93. RI still services +# and repairs these beasts, but no longer manufactures them. The Teleray +# people believe that all the types listed below are very rare now (1995). +# There was a newer line of Telerays (Model 7, Model 20, Model 30, and +# Model 100) that were ANSI-compatible. +# +# Note two things called "teleray". Reorder should move the common one +# to the front if you have either. A dumb Teleray with the cursor stuck +# on the bottom and no obvious model number is probably a 3700. +# + +t3700|dumb Teleray 3700, + OTbs, + cols#80, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, ind=\n, +t3800|Teleray 3800 series, + OTbs, + cols#80, it#8, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=\EJ, el=\EK, + home=\EH, ht=^I, ind=\n, ll=\EY7\s, +t1061|teleray|Teleray 1061, + OTbs, am, km, xhp, xt, + cols#80, it#8, lines#24, xmc#1, + bel=^G, clear=\014$<1>, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, + dl1=\EM$<2*>, ed=\EJ$<1>, el=\EK, home=\EH, ht=^I, hts=\EF, + ich1=\EP, il1=\EL$<2*>, ind=\n, ip=$<0.4*>, + is2=\Ee\EU01^Z1\EV\EU02^Z2\EV\EU03^Z3\EV\EU04^Z4\EV\EU05^Z5 + \EV\EU06^Z6\EV\EU07^Z7\EV\EU08^Z8\EV\Ef, + kf1=^Z1, kf2=^Z2, kf3=^Z3, kf4=^Z4, kf5=^Z5, kf6=^Z6, kf7=^Z7, + kf8=^Z8, rmso=\ER@, rmul=\ER@, smso=\s\ERD, smul=\ERH, + tbc=\EG, +t1061f|Teleray 1061 with fast PROMs, + dl1=\EM, il1=\EL, ip@, use=t1061, +# "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, +# 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. +# Note: this is NOT the old termcap's "t1061f with fast proms." +# From: J. Lepreau <lepreau@utah-cs> Tue Feb 1 06:39:37 1983, Univ of Utah +# (t10: removed overridden ":so@:se@:us@:ue@:" -- esr) +t10|Teleray 10 special, + OTbs, km, xhp, xt, + cols#80, it#8, lines#24, xmc#2, + clear=\Ej$<30/>, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EQ, + dl1=\EM, ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EP, il1=\EL, + ind=\Eq, pad=\0, ri=\Ep, rmso=\ER@, rmul=\ER@, smso=\ERD, + smul=\ERH, +# Teleray 16 - map the arrow keys for vi/rogue, shifted to up/down page, and +# back/forth words. Put the function keys (f1-f10) where they can be +# found, and turn off the other magic keys along the top row, except +# for line/local. Do the magic appropriate to make the page shifts work. +# Also toggle ^S/^Q for those of us who use Emacs. +t16|Teleray 16, + am, da, db, mir, xhp, xt, + cols#80, lines#24, + bel=^G, clear=\E[H\E[2J, cr=\r, cub1=^H, cud1=\E[B, + cuf1=\E[C, cup=%i\E[%p1%d;%p2%df, cuu1=\E[A, 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, + +#### Texas Instruments (ti) +# + +# The Silent 700 was so called because it was built around a quiet thermal +# printer. It was portable, equipped with an acoustic coupler, and pretty +# neat for its day. +ti700|ti733|ti735|ti745|ti800|Texas Instruments Silent 700/733/735/745 or OMNI 800, + OTbs, hc, os, + cols#80, + bel=^G, cr=\r$<162>, cub1=^H, cud1=\n, ind=\n, + +# Terminal entries for the Texas Instruments 703/707 +# hardcopy terminals. +# +# http://www.bitsavers.org/pdf/ti/terminal/silent_700/ +# Refer to: +# Model 707 Data Terminal User's Manual +# http://www.bitsavers.org/pdf/ti/terminal/silent_700/2310451-0001_Silent_700_Model_707_Users_Manual_Nov1983.pdf +# +# pages 2-7 and 2-8 say that the model 707 prints 10.2 characters per inch +# (cpi) (80 characters per line) by default, and can be switched to/from 17.0 +# cpi using an escape sequence. There is no 80/132-column capability in +# terminfo (only the more general cpi which allows any value). +ti703|ti707|Texas Instruments Silent 703/707, + am, xenl, + it#8, + cuf1=\s, is2=\EPC\\, nel=\r\n, use=ti700, +ti703-w|ti707-w|Texas Instruments Silent 703/707, + cols#132, + is2=\EPD\\, use=ti703, + +# +# Texas Instruments 916 VDT 7 bit control mode +# +ti916|ti916-220-7|Texas Instruments 916 VDT 8859/1 vt220 mode 7 bit CTRL, + da, db, in, msgr, + cbt=\E[Z, clear=\E[H\E[2J$<6>, cub=\E[%p1%dD, + cud=\E[%p1%dB, cuf=\E[%p1%dC, cup=\E[%i%p1%d;%p2%dH, + cuu=\E[%p1%dA, dch=\E[%p1%dP$<250>, dch1=\E[P, + dl=\E[%p1%dM, ech=\E[%p1%dX$<20>, ed=\E[J$<6>, el=\E[0K, + el1=\E[1K, 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>, tbc=\E[3g, vpa=\E[%p1%{1}%+%dd, + use=vt220, +# +# Texas Instruments 916 VDT 8 bit control mode +# +ti916-8|ti916-220-8|Texas Instruments 916 VDT 8859/1 8 vt220 mode bit CTRL, + kcmd=\23329~, kcub1=\233D, kcud1=\233B, kcuf1=\233C, + kcuu1=\233A, kdch1=\233P, kent=\n, kf1=\23317~, + kf10=\23328~, kf11=\23329~, kf12=\23331~, kf2=\23318~, + kf3=\23319~, kf4=\23320~, kf5=\23321~, kf6=\23323~, + kf7=\23324~, kf8=\23325~, kf9=\23326~, khome=\233H, + kich1=\233@, knp=\233S, kpp=\233T, kprt=^X, use=ti916, +# +# Texas Instruments 916 VDT 8859/1 7 bit control 132 column mode +# +ti916-132|Texas Instruments 916 VDT vt220 132 column, + cols#132, use=ti916, +# +# Texas Instruments 916 VDT 8859/1 8 bit control 132 column mode +# +ti916-8-132|Texas Instruments 916 VDT 8-bit vt220 132 column, + cols#132, use=ti916-8, +ti924|Texas Instruments 924 VDT 8859/1 7 bit CTRL, + OTbs, 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, cub1=\E[D, cud1=\E[B, cuf1=\E[C, + cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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~, + 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=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, cub1=\E[D, cud1=\E[B, cuf1=\E[C, + cup=%i\E[%p1%d;%p2%dH, cuu1=\E[A, 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=vt220+cvis, +ti924w|Texas Instruments 924 VDT 7 bit - 132 column mode, + cols#132, use=ti924, +ti924-8w|Texas Instruments 924 VDT 8 bit - 132 column mode, + cols#132, use=ti924-8, +ti931|Texas Instruments 931 VDT, + OTbs, am, xon, + cols#80, lines#24, + bel=^G, blink=\E4P, clear=\EL, cnorm=\E4@, cr=\r, cub1=\ED, + cud1=\EB, cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, + cuu1=\EA, dch1=\EQ, dl1=\EO, ed=\EJ, el=\EI, home=\EH, + ich1=\ER\EP\EM, il1=\EN, ind=\Ea, invis=\E4H, + is2=\EGB\E(@B@@\E), kcub1=\ED, kcud1=\EB, kcuf1=\EC, + kcuu1=\EA, kdch1=\EQ, kdl1=\EO, kf1=\Ei1, kf2=\Ei2, kf3=\Ei3, + kf4=\Ei4, kf5=\Ei5, kf6=\Ei6, kf7=\Ei7, kf8=\Ei8, kf9=\Ei9, + kich1=\EP, kil1=\EN, rev=\E4B, ri=\Eb, rmso=\E4@, rmul=\E4@, + sgr0=\E4@, smso=\E4A, smul=\E4D, +ti926|Texas Instruments 926 VDT 8859/1 7 bit CTRL, + csr@, ind=\E[1S, ri=\E[1T, use=ti924, +# (ti926-8: I corrected this from the broken SCO entry -- esr) +ti926-8|Texas Instruments 926 VDT 8859/1 8 bit CTRL, + csr@, ind=\2331S, ri=\2331T, use=ti924-8, +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, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, kbs=^H, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, 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, +# +# 928 VDT 7 bit control mode +# +ti928|Texas Instruments 928 VDT 8859/1 7 bit CTRL, + kdch1=\E[P, kend=\E_1\E\\, kent=\E[8~, kf1=\E[17~, + kf10=\E[28~, kf11=\E[29~, kf12=\E[31~, kf13=\E[32~, + kf15=\E[34~, kf2=\E[18~, kf3=\E[19~, kf4=\E[20~, + kf5=\E[21~, kf6=\E[23~, kf7=\E[24~, kf8=\E[25~, kf9=\E[26~, + kich1=\E[@, knp=\E[S, kpp=\E[T, kprt=\E[35~, use=ti_ansi, +# +# 928 VDT 8 bit control mode +# +ti928-8|Texas Instruments 928 VDT 8859/1 8 bit CTRL, + kdch1=\233P, kend=\2371\234, kent=\2338~, kf1=\23317~, + kf10=\23328~, kf11=\23329~, kf12=\23331~, kf13=\23332~, + kf15=\23334~, kf2=\23318~, kf3=\23319~, kf4=\23320~, + kf5=\23321~, kf6=\23323~, kf7=\23324~, kf8=\23325~, + kf9=\23326~, khome=\233H, kich1=\233@, knp=\233S, + kpp=\233T, kprt=\23335~, use=ti_ansi, + +#### Zentec (zen) +# + +# (zen30: removed obsolete :ma=^L ^R^L^K^P:. This entry originally +# had just <smso>=\EG6 which I think means standout was supposed to be +# dim-reverse using ADM12-style attributes. ADM12 <smul>/<rmul> and +# <invis> might work-- esr) +zen30|z30|Zentec 30, + OTbs, am, mir, ul, + cols#80, lines#24, + bel=^G, clear=\E*, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, dch1=\EW, + dim=\EG2, dl1=\ER$<1.5*>, ed=\EY, el=\ET$<1.0*>, home=^^, + il1=\EE$<1.5*>, ind=\n, rmir=\Er, rmul@, smir=\Eq, smso=\EG6, + smul@, use=adm+sgr, +# (zen50: this had extension capabilities +# :BS=^U:CL=^V:CR=^B: +# UK/DK/RK/LK/HM were someone's aliases for ku/kd/kl/kr/kh, +# which were also in the original entry -- esr) +# (zen50: removed obsolete ":ma=^Hh^Ll^Jj^Kk:" -- esr) +zen50|z50|Zentec Zephyr, + OTbs, am, + cols#80, lines#24, xmc#1, + clear=\E+, cub1=^H, cup=\E=%p1%{32}%+%c%p2%{32}%+%c, + cuu1=^K, dch1=\EW, dl1=\ER, ed=\EY, el=\ET, ich1=\EQ, il1=\EE, + invis@, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, khome=^^, + rmul@, smul@, use=adm+sgr, + +# CCI 4574 (Office Power) from Will Martin <wmartin@BRL.ARPA> via BRL +cci|cci1|z8001|zen8001|CCI Custom Zentec 8001, + OTbs, am, bw, + cols#80, lines#24, + blink=\EM", clear=\EH\EJ, cnorm=\EP, + csr=\ER%p1%{32}%+%c%p2%{32}%+%c, cub1=^H, cud1=\n, + cuf1=\EC, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, + cvvis=\EF\EQ\EM \ER 7, dim=\EM!, ed=\EJ, el=\EK, home=\EH, + invis=\EM(, is2=\EM \EF\ET\EP\ER 7, kbs=^H, kcub1=\ED, + kcud1=\EB, kcuf1=\EC, kcuu1=\EA, khome=\EH, mc4=^T, mc5=^R, + rev=\EM$, ri=\EI, rmso=\EM\s, rmul=\EM\s, sgr0=\EM\s, + smso=\EM$, smul=\EM0, + +######## OBSOLETE UNIX CONSOLES +# + +#### Apollo consoles +# +# Apollo got bought by Hewlett-Packard. The Apollo workstations are +# labeled HP700s now. +# + +# From: Gary Darland <goodmanc@garnet.berkeley.edu> +apollo|Apollo console, + OTbs, am, mir, + cols#88, lines#53, + clear=^L, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\EM%p1%{32}%+%c%p2%d), cuu1=\EA, dch1=\EP, dl1=\EL, + ed=\EJ, el=\EK, hpa=\EN%p1%d, il1=\EI, ind=\EE, ri=\ED, + rmcup=\EX, rmir=\ER, rmso=\ET, rmul=\EV, smcup=\EW, smir=\EQ, + smso=\ES, smul=\EU, vpa=\EO+\s, + +# We don't know whether or not the apollo guys replicated DEC's firmware bug +# in the VT132 that reversed <rmir>/<smir>. To be on the safe side, disable +# both these capabilities. +apollo_15P|Apollo 15 inch display, + rmir@, smir@, use=vt132, +apollo_19L|Apollo 19 inch display, + rmir@, smir@, use=vt132, +apollo_color|Apollo color display, + rmir@, smir@, use=vt132, + +#### AT&T consoles + +# This actually describes the generic SVr4 display driver for Intel boxes. +# The <dim=\E[2m> isn't documented and therefore may not be reliable. +# From: Eric Raymond <esr@snark.thyrsus.com> Mon Nov 27 19:00:53 EST 1995 +att6386|at386|386at|AT&T WGS 6386 console, + am, bw, eo, xon, + cols#80, it#8, lines#25, + acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z, civis=\E[=C, + clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, cub=\E[%p1%dD, + cub1=\E[D, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, + cuu1=\E[A, 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, ht=^I, hts=\EH, 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, kbs=^H, kcbt=^], kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, 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, + khome=\E[H, kich1=\E[@, knp=\E[U, kpp=\E[V, krmir=\E0, + nel=\r\E[S, rc=\E8, rev=\E[7m, ri=\E[T, rmacs=\E[10m, + rmso=\E[m, rmul=\E[m, 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, smso=\E[7m, smul=\E[4m, + tbc=\E[3g, vpa=\E[%i%p1%dd, use=ecma+index, + use=klone+color, +# (pc6300plus: removed ":KM=/usr/lib/ua/kmap.s5:"; renamed BO/EE/CI/CV -- esr) +pc6300plus|AT&T 6300 plus, + OTbs, am, xon, + cols#80, lines#24, + bel=^G, blink=\E[5m, bold=\E[1m, civis=\E[=C, + clear=\E[2J\E[H, cnorm=\E[=1C, cr=\r, cub1=^H, cud1=\E[B, + cuf1=\E[C, cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, + dch1=\E[1P, dim=\E[2m, dl1=\E[1M, ed=\E[0J, el=\E[0K, + home=\E[H, hts=\EH, 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, + +# From: Benjamin C. W. Sittler <bsittler@nmt.edu> +# +# I have a UNIX PC which I use as a terminal attached to my Linux PC. +# Unfortunately, the UNIX PC terminfo entry that comes with ncurses +# is broken. All the special key sequences are broken, making it unusable +# with Emacs. The problem stems from the following: +# +# The UNIX PC has a plethora of keys (103 of them, and there's no numeric +# keypad!), loadable fonts, and strange highlighting modes ("dithered" +# half-intensity, "smeared" bold, and real strike-out, for example.) It also +# uses resizable terminal windows, but the bundled terminal program always +# uses an 80x24 window (and doesn't support seem to support a 132-column +# mode.) +# +# HISTORY: The UNIX PC was one of the first machines with a GUI, and used a +# library which was a superset of SVr3.5 curses (called tam, for "terminal +# access method".) tam includes support for real, overlapping windows, +# onscreen function key labels, and bitmap graphics. But since the primary +# user interface on the UNIX PC was a GUI program (ua, for "user +# assistant",) and remote administration was considered important for the +# machine, tam also supported VT100-compatible terminals attached to the +# serial port or used across the StarLan network. To simulate the extra keys +# not present on a VT100, users could press ESC and a two-letter sequence, +# such as u d (Undo) or U D (Shift-Undo.) These two-letter sequences, +# however, were not the same as those sent by the actual Undo key. The +# actual Undo key sends ESC 0 s unshifted, and ESC 0 S shifted, for example. +# (If you're interested in adding some of the tam calls to ncurses, btw, I +# have the full documentation and several programs which use tam. It also +# used an extended terminfo format to describe key sequences, special +# highlighting modes, etc.) +# +# KEYS: This means that ncurses would quite painful on the UNIX PC, since +# there are two sequences for every key-modifier combination (local keyboard +# sequence and remote "VT100" sequence.) But I doubt many people are trying +# to use ncurses on the UNIX PC, since ncurses doesn't properly handle the +# GUI. Unfortunately, the terminfo entry (and the termcap, too, I presume) +# seem to have been built from the manual describing the VT100 sequences. +# This means it doesn't work for a real live UNIX PC. +# +# FONTS: The UNIX PC also has a strange interpretation of "alternate +# character set". Rather than the VT100 graphics you might expect, it allows +# up to 8 custom fonts to be loaded at any given time. This means that +# 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: +# +# SGR10 - Select font 0 - ESC [ 10 m or SO +# SGR11 - Select font 1 - ESC [ 11 m or SI +# SGR12 - Select font 2 - ESC [ 12 m +# ... (etc.) +# SGR17 - Select font 7 - ESC [ 17 m +# +# Graphics for line drawing are not reliably found at *any* character +# location because the UNIX PC has dynamically reloadable fonts. I use font +# 0 for regular text and font 1 for italics, but this is by no means +# universal. So ASCII line drawing is in order if smacs/rmacs are enabled. +# +# MISC: The cursor visible/cursor invisible sequences were swapped in the +# distributed terminfo. +# +# To ameliorate these problems (and fix a few highlighting bugs) I rewrote +# the UNIX PC terminfo entry. The modified version works great with Lynx, +# Emacs, and XEmacs running on my Linux PC and displaying on the UNIX PC +# attached by serial cable. In Emacs, even the Undo key works, and many +# applications can now use the F1-F8 keys. +# +# esr's notes: +# Terminfo entry for the AT&T Unix PC 7300 +# from escape(7) in Unix PC 7300 Manual. +# Somewhat similar to a vt100-am (but different enough +# to redo this from scratch.) +# +# /*************************************************************** +# * +# * FONT LOADING PROGRAM FOR THE UNIX PC +# * +# * This routine loads a font defined in the file ALTFONT +# * into font memory slot #1. Once the font has been loaded, +# * it can be used as an alternative character set. +# * +# * The call to ioctl with the argument WIOCLFONT is the key +# * to this routine. For more information, see window(7) in +# * the PC 7300 documentation. +# ***************************************************************/ +# #include <string.h> /* needed for strcpy call */ +# #include <sys/window.h> /* needed for ioctl call */ +# #define FNSIZE 60 /* font name size */ +# #define ALTFONT "/usr/lib/wfont/special.8.ft" /* font file */ +# /* +# * The file /usr/lib/wfont/special.8.ft comes with the +# * standard PC software. It defines a graphics character set +# * similar to that of the Teletype 5425 terminal. To view +# * this or other fonts in /usr/lib/wfont, use the command +# * cfont <filename>. For further information on fonts see +# * cfont(1) in the PC 7300 documentation. +# */ +# +# struct altfdata /* structure for alt font data */ +# { +# short altf_slot; /* memory slot number */ +# char altf_name[FNSIZE]; /* font name (file name) */ +# }; +# ldfont() +# { +# int wd; /* window in which altfont will be */ +# struct altfdata altf; +# altf.altf_slot=1; +# strcpy(altf.altf_name,ALTFONT); +# for (wd =1; wd < 12; wd++) { +# ioctl(wd, WIOCLFONT,&altf); +# } +# } +# +# (att7300: added <civis>/<cnorm>/<ich1>/<invis> from the BSDI entry, +# they're confirmed by the man page for the System V display---esr) +# +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, cub=\E[%p1%dD, + cub1=^H, cud=\E[%p1%dB, cud1=\E[B, cuf=\E[%p1%dC, + cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, + cuu1=\E[A, dch1=\E[P, dim=\E[2m, dl=\E[%p1%dM, dl1=\E[M, + ed=\E[0J, el=\E[0K, home=\E[H, ich1=\E[@, il=\E[%p1%dL, + il1=\E[L, 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, kbs=^H, kcan=\EOw, kcbt=\E[Z, + kclo=\EOV, kclr=\E[J, kcmd=\EOu, kcpy=\ENd, kcrt=\EOn, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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, khome=\E[H, 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, + +#### Convergent Technology +# +# Burroughs bought Convergent shortly before it merged with Univac. +# CTOS is (I believe) dead. Probably the aws is too (this entry dates +# from 1991 or earlier). +# + +# Convergent AWS workstation from Gould/SEL UTX/32 via BRL +# (aws: removed unknown :dn=^K: -- esr) +aws|Convergent Technologies AWS workstation under UTX and Xenix, + am, + OTug#0, cols#80, lines#28, xmc#0, + OTbc=^H, OTma=\016h\013j\001k\022l\002m, OTnl=\n, acsc=, + clear=^L, cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, + dch1=\EDC, dl1=\EDL, ed=\EEF, el=\EEL, hpa=\EH%p1%c, + ich1=\EIC, il1=\EIL, ind=\ESU, kbs=^H, kcub1=^N, kcud1=^K, + kcuf1=^R, kcuu1=^A, ri=\ESD, rmacs=\EAAF, rmso=\EARF, + rmul=\EAUF, smacs=\EAAN, smso=\EARN, smul=\EAUN, + vpa=\EV%p1%c, +awsc|Convergent Technologies AWS workstation under CTOS, + am, + OTug#0, cols#80, lines#24, xmc#0, + OTbc=^N, OTma=\016h\013j\001k\022l\002m, acsc=, clear=^L, + cud1=^K, cuf1=^R, cup=\EC%p2%c%p1%c, cuu1=^A, ed=\EEF, + el=\EEL, kbs=^H, kcub1=^N, kcud1=^K, kcuf1=^R, kcuu1=^A, + rmacs=\EAAF, rmso=\EAA, rmul=\EAA, smacs=\EAAN, smso=\EAE, + smul=\EAC, + +#### DEC consoles +# + +# The MicroVax console. Tim Theisen <tim@cs.wisc.edu> writes: +# The digital uVax II's had a graphic display called a qdss. It was +# supposed to be a high performance graphic accelerator, but it was +# late to market and barely appeared before faster dumb frame buffers +# appeared. I have only used this display while running X11. However, +# during bootup, it was in text mode, and probably had a terminal emulator +# within it. And that is what your termcap entry is for. In graphics +# mode the screen size is 1024x864 pixels. +qdss|qdcons|qdss glass tty, + OTbs, am, + cols#128, lines#57, + clear=\032$<1/>, cub1=^H, cud1=\n, cuf1=^L, + cup=\E=%p1%c%p2%c, cuu1=^K, + +#### Fortune Systems consoles +# +# Fortune made a line of 68K-based UNIX boxes that were pretty nifty +# in their day; I (esr) used one myself for a year or so around 1984. +# They had no graphics, though, and couldn't compete against Suns and +# the like. R.I.P. +# + +# From: Robert Nathanson <c160-3bp@Coral> via tut Wed Oct 5, 1983 +# (This had extension capabilities +# :rv=\EH:re=\EI:rg=0:GG=0:\ +# :CO=\E\\:WL=^Aa\r:WR=^Ab\r:CL=^Ac\r:CR=^Ad\r:DL=^Ae\r:RF=^Af\r:\ +# :RC=^Ag\r:CW=^Ah\r:NU=^Aj\r:EN=^Ak\r:HM=^Al:PL=^Am\r:\ +# :PU=^An\r:PD=^Ao\r:PR=^Ap\r:HP=^A@\r:RT=^Aq\r:TB=\r:CN=\177:MP=\E+F: +# It had both ":bs:" and ":bs=^H:"; I removed the latter. Also, it had +# ":sg=0:" and ":ug=0:"; evidently the composer was trying (unnecessarily) +# to force both magic cookie glitches off. Once upon a time, I +# used a Fortune myself, so I know the capabilities of the form ^A[a-z]\r are +# function keys; thus the "Al" value for HM was certainly an error. I renamed +# EN/PD/PU/CO/CF/RT according to the XENIX/TC mappings, but not HM/DL/RF/RC. +# I think :rv: and :re: are start/end reverse video and :rg: is a nonexistent +# "reverse-video-glitch" capability; I have put :rv: and :re: in with standard +# names below. I've removed obsolete ":nl=5^J:" as there is a :do: -- esr) +fos|fortune|Fortune system, + OTbs, am, bw, + cols#80, lines#25, + acsc=j*k(l m"q&v%w#x-, bel=^G, blink=\EN, civis=\E], + clear=\014$<20>, cnorm=\E\\, cr=\r, cub1=^H, cud1=\n$<3>, + cup=\034C%p1%{32}%+%c%p2%{32}%+%c, cuu1=\013$<3>, + cvvis=\E:, dch1=\034W$<5>, dl1=\034R$<15>, ed=\034Y$<3*>, + el=^\Z, home=\036$<10>, ht=^Z, ich1=\034Q$<5>, + il1=\034E$<15>, ind=\n, is2=^_.., kbs=^H, kcub1=^Aw\r, + kcud1=^Ay\r, kcuf1=^Az\r, kcuu1=^Ax\r, kend=^Ak\r, + kent=^Aq, kf1=^Aa\r, kf2=^Ab\r, kf3=^Ac\r, kf4=^Ad\r, + kf5=^Ae\r, kf6=^Af\r, kf7=^Ag\r, kf8=^Ah\r, khome=^A?\r, + knp=^Ao\r, kpp=^An\r, nel=\r\n, rev=\EH, rmacs=^O, rmso=^\I`, + rmul=^\IP, sgr0=\EI, smacs=\Eo, smso=^\H`, smul=^\HP, + +#### Masscomp consoles +# +# Masscomp has gone out of business. Their product line was purchased by a +# company in Georgia (US) called "XS International", parts and service may +# still be available through them. +# + +# (masscomp: ":MT:" changed to ":km:"; -- esr) +masscomp|masscomp workstation console, + OTbs, km, mir, + cols#80, it#8, lines#24, + clear=\E[2J, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, 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, +masscomp1|masscomp large screen version 1, + cols#104, lines#36, use=masscomp, +masscomp2|masscomp large screen version 2, + cols#64, lines#21, use=masscomp, + +#### OSF Unix +# + +# OSF/1 1.1 Snapshot 2 +pmcons|pmconsole|PMAX console, + am, + 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, + +#### Other consoles +# The following is a version of the ibm-pc entry distributed with PC/IX, +# (Interactive Systems' System 3 for the Big Blue), modified by Richard +# McIntosh at UCB/CSM. The :pt: and :uc: have been removed from the original, +# (the former is untrue, and the latter failed under UCB/man); standout and +# underline modes have been added. Note: this entry describes the "native" +# capabilities of the PC monochrome display, without ANY emulation; most +# communications packages (but NOT PC/IX connect) do some kind of emulation. +pcix|PC/IX console, + am, bw, eo, + cols#80, lines#24, + clear=\Ec, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%2d;%p2%2dH, cuu1=\E[A, ed=\E[J, el=\E[K, + home=\E[H, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smso=\E[7m, + smul=\E[4m, + +# (ibmpcx: this entry used to be known as ibmx. +# It formerly included the following extension capabilities: +# :GC=b:GL=v:GR=t:RT=^J:\ +# :GH=\E[196g:GV=\E[179g:\ +# :GU=\E[193g:GD=\E[194g:\ +# :G1=\E[191g:G2=\E[218g:G3=\E[192g:G4=\E[217g:\ +# :CW=\E[E:NU=\E[F:RF=\E[G:RC=\E[H:\ +# :WL=\E[K:WR=\E[L:CL=\E[M:CR=\E[N:\ +# I renamed GS/GE/WL/WR/CL/CR/PU/PD/HM/EN; also, removed a duplicate +# ":kh=\E[Y:". Added IBM-PC forms characters and highlights, they match +# what was there before. -- esr) +ibmpcx|xenix|ibmx|IBM PC xenix console display, + OTbs, am, msgr, + cols#80, lines#25, + clear=^L, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, + ed=\E[J, el=\E[K, home=\E[H, ich1=\E[@, il1=\E[L, kbs=^H, + kcub1=\E[D, kcud1=\E[B, kcuf1=\E[C, kcuu1=\E[A, 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=klone+acs, use=klone+sgr8, + +######## OTHER OBSOLETE TYPES +# +# These terminals are *long* dead -- these entries are retained for +# historical interest only. +# + +#### Obsolete non-ANSI software emulations +# + +# CTRM terminal emulator +# 1. underlining is not allowed with colors: first, is is simulated by +# black on white, second, it disables background color manipulations. +# 2. BLINKING, REVERSE and BOLD are allowed with colors, +# so we have to save their status in the static registers A, B and H +# respectively, to be able to restore them when color changes +# (because any color change turns off ALL attributes) +# 3. <bold> and <rev> sequences alternate modes, +# rather than simply entering them. Thus we have to check the +# static register B and H to determine the status, before sending the +# escape sequence. +# 4. <sgr0> now must set the status of all 3 register (A,B,H) to zero +# and then reset colors +# 5. implementation of the protect mode would badly penalize the performance. +# we would have to use \E&bn sequence to turn off colors (as well as all +# other attributes), and keep the status of protect mode in yet another +# static variable. If someone really needs this mode, they would have to +# create another terminfo entry. +# 6. original color-pair is white on black. +# store the information about colors into static registers +# 7. set foreground color. it performs the following steps. +# 1) turn off all attributes +# 2) turn on the background and video attributes that have been turned +# on before (this information is stored in static registers X,Y,Z,A,B,H,D). +# 3) turn on foreground attributes +# 4) store information about foreground into U,V,W static registers +# 8. turn on background: similar to turn on foreground above +ctrm|C terminal emulator, + am, bce, xon, + colors#8, cols#80, lh#0, lines#24, lm#0, lw#0, ncv#2, nlab#0, + pairs#63, pb#19200, vt#6, + bel=^G, blink=\E&dA%{1}%PA, + bold=%?%gH%{0}%=%t\E&dH%{1}%PH%;, cbt=\Ei, + clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\E&a%p2%dc%p1%dY, cuu1=\EA, dch1=\EP$<2>, dl1=\EM, + ed=\EJ, el=\EK, hpa=\E&a%p1%dC, ht=\011$<2>, hts=\E1, + il1=\EL, ind=\n, ip=$<2>, is2=\E&jA\r, kbs=^H, kcub1=\Eu\r, + kcud1=\Ew\r, kcuf1=\Ev\r, kcuu1=\Et\r, kf1=\Ep\r, + kf2=\Eq\r, kf3=\Er\r, kf4=\Es\r, kf5=\Et\r, kf6=\Eu\r, + kf7=\Ev\r, kf8=\Ew\r, khome=\Ep\r, + op=\E&bn\E&bB\E&bG\E&bR%{0}%PX%{0}%PY%{0}%PZ%{1}%PW%{1}%PV + %{1}%PU, + rev=%?%gB%{0}%=%t\E&dB%{1}%PB%;, rmir=\ER, rmkx=\E&jA, + setb=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gU%t + \E&bR%;%?%gV%t\E&bG%;%?%gW%t\E&bB%;%?%p1%{1}%&%t\E&bb + %{1}%e%{0}%;%PZ%?%p1%{2}%&%t\E&bg%{1}%e%{0}%;%PY%?%p1 + %{4}%&%t\E&br%{1}%e%{0}%;%PX, + setf=\E&bn%?%gA%t\E&dA%;%?%gB%t\E&dB%;%?%gH%t\E&dH%;%?%gX%t + \E&br%;%?%gY%t\E&bg%;%?%gZ%t\E&bb%;%?%p1%{1}%&%t\E&bB + %{1}%e%{0}%;%PW%?%p1%{2}%&%t\E&bG%{1}%e%{0}%;%PV%?%p1 + %{4}%&%t\E&bR%{1}%e%{0}%;%PU, + sgr=\E&d@%{0}%PA%{0}%PB%{0}%PD%{0}%PH%?%p1%p3%p5%|%|%t\E&dB + %{1}%PB%;%?%p4%t\E&dA%{1}%PA%;%?%p6%t\E&dH%{1}%PH%;%?%p2 + %t\E&dD%;, + sgr0=\E&d@%{0}%PA%{0}%PB%{0}%PH, smir=\EQ, smkx=\E&jB, + smso=\E&dD, smul=\E&dD, tbc=\E3, vpa=\E&a%p1%dY, + +# gs6300 - can't use blue foreground, it clashes with underline; +# it's simulated with cyan +# Bug: The <op> capability probably resets attributes. +# (gs6300: commented out <rmln> (no <smln>) --esr) +gs6300|emots|AT&T PC6300 with EMOTS terminal emulator, + am, bce, msgr, xon, + colors#8, cols#80, it#8, lines#24, pairs#63, + acsc=++\,\,--..``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxyyz + z{{||}}~~, + bel=^G, blink=\E[5m, bold=\E[1m, clear=\E[H\E[J, cr=\r, + cub=\E[%p1%dD, 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, dch=\E[%p1%dP, dch1=\E[P, + dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, home=\E[H, ht=^I, + ich=\E[%p1%d@, ich1=\E[@, il=\E[%p1%dL, il1=\E[L, ind=\n, + is2=\E[m, kbs=^H, kcbt=^R^I, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kf1=\E[0s, kf2=\E[24s, kf3=\E[1s, + kf4=\E[23s, kf5=\E[2s, kf6=\E[22s, kf7=\E[3s, kf8=\E[21s, + khome=\E[H, 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, + +# From: <earle@smeagol.UUCP> 29 Oct 85 05:40:18 GMT +# MS-Kermit with Heath-19 emulation mode enabled +# (h19k: changed ":pt@:" to ":it@" +h19k|h19kermit|Heathkit emulation provided by Kermit (no auto margin), + am@, da, db, xt, + it@, + ht@, use=h19-u, + +# Apple Macintosh with VersaTerm, a terminal emulator distributed by Synergy +# Software (formerly Peripherals Computers & Supplies, Inc) of +# 2457 Perkiomen Ave., Reading, PA 19606, 1-800-876-8376. They can +# also be reached at support@synergy.com. +versaterm|VersaTerm vt100 emulator for the Macintosh, + am, xenl, + cols#80, it#8, lines#24, + bel=^G, blink=\E[5m$<2/>, bold=\E[1m$<2/>, + clear=\E[;H\E[2J$<50/>, cr=\r, csr=\E[%i%p1%d;%p2%dr, + cub1=^H, cud1=\n, cuf1=\E[C$<2/>, + cup=\E[%i%p1%d;%p2%dH$<5/>, cuu1=\E[A$<2/>, + dch1=\E[1P$<7/>, dl1=\E[1M$<9/>, 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, rc=\E8, 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>, + sc=\E7, sgr0=\E[m$<2/>, smkx=\E=\E[?1h, smso=\E[7m$<2/>, + smul=\E[4m$<2/>, + +# From: Rick Thomas <ihnp4!btlunix!rbt> +# (xtalk: I added <rmam>/<smam> based on the init string. +xtalk|IBM PC with xtalk communication program (versions up to 3.4), + am, mir, msgr, xon, + cols#80, it#8, lines#24, vt#3, xmc#1, + acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~, + bel=^G, clear=\E[H\E[J$<50>, cr=\r, cub=\E[%p1%dD, cub1=^H, + cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C$<2>, + cup=\E[%i%p1%d;%p2%dH$<5>, cuu=\E[%p1%dA, + cuu1=\E[A$<2>, dl1=\E[M$<99>, ed=\E[J$<50>, el=\E[K$<3>, + el1=\E[1K$<3>, enacs=\E(B\E)0, home=\E[H, ht=^I, hts=\EH, + il1=\E[L$<99>, ind=\n, kbs=^H, kcub1=\EOD, kcud1=\EOB, + kcuf1=\EOC, kcuu1=\EOA, ri=\EM$<5>, rmacs=^O, rmam=\E[?7l, + rmkx=\E[?1l\E>, rmso=\E[m\s, + rs2=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h, sgr0=\E[m, + smacs=^N, smam=\E[?7h, smkx=\E[?1h\E=, smso=\E[7m\s, + tbc=\E[3g, use=vt100+fnkeys, + +# The official PC terminal emulator program of the AT&T Product Centers. +# Note - insert mode commented out - doesn't seem to work on AT&T PC. +simterm|attpc running simterm, + am, + cols#80, lines#24, + bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\EB, cuf1=\EC, + cup=\E=%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\ER, + dl1=\EM, ed=\EJ, el=\EK, home=\EH, il1=\EL, ind=\n, rmcup=\EVE, + rmso=\E&d@, sgr0=\E&d@, smcup=\EVS, smso=\E&dB, + +#### Daisy wheel printers +# +# This section collects Diablo, DTC, Xerox, Qume, and other daisy +# wheel terminals. These are now largely obsolete. +# + +# (diablo1620: removed <if=/usr/share/tabset/xerox1720>, no such file -- esr) +diablo1620|diablo1720|diablo450|ipsi|Diablo 1620, + hc, os, + cols#132, it#8, + cub1=^H, cud1=\n, cuu1=\E\n, hd=\ED, hpa=\E\011%i%p1%c, + ht=^I, hts=\E1, hu=\EU, kbs=^H, tbc=\E2, +diablo1620-m8|diablo1640-m8|Diablo 1620 w/8 column left margin, + cols#124, + is2=\r \E9, use=diablo1620, +# (diablo1640: removed <if=/usr/share/tabset/xerox1730>, no such file -- esr) +diablo1640|diablo1730|diablo1740|diablo630|x1700|diablo|xerox|Diablo 1640, + bel=^G, rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, + use=diablo1620, +# (diablo1640-lm: removed <if=/usr/share/tabset/xerox1730-lm>, no such +# file -- esr) +diablo1640-lm|diablo-lm|xerox-lm|Diablo 1640 with indented left margin, + cols#124, + rmso=\E&, rmul=\ER, smso=\EW, smul=\EE, use=diablo1620, +diablo1740-lm|630-lm|1730-lm|x1700-lm|Diablo 1740 printer, + use=diablo1640-lm, +# DTC 382 with VDU. Has no <ed> so we fake it with <el>. Standout +# <smso=^P\s\002^PF> works but won't go away without dynamite <rmso=^P\s\0>. +# The terminal has tabs, but I'm getting tired of fighting the braindamage. +# If no tab is set or the terminal's in a bad mood, it glitches the screen +# around all of memory. Note that return puts a blank ("a return character") +# in the space the cursor was at, so we use ^P return (and thus ^P newline for +# newline). Note also that if you turn off :pt: and let Unix expand tabs, +# curses won't work (some old BSD versions) because it doesn't clear this bit, +# and cursor addressing sends a tab for row/column 9. What a losing terminal! +# I have been unable to get tabs set in all 96 lines - it always leaves at +# least one line with no tabs in it, and once you tab through that line, +# it completely weirds out. +# (dtc382: change <rmcup> to <smcup> -- it just does a clear --esr) +dtc382|DTC 382, + am, da, db, xhp, + cols#80, lines#24, lm#96, + bel=^G, clear=\020\035$<20>, cnorm=^Pb, cr=^P\r, cub1=^H, + cuf1=^PR, cup=\020\021%p2%c%p1%c, cuu1=^P^L, cvvis=^PB, + dch1=^X, dl1=^P^S, ed=^P^U^P^S^P^S, el=^P^U, home=^P^R, + il1=^P^Z, ind=\n, pad=^?, rmcup=, rmir=^Pi, rmul=^P \0, + smcup=\020\035$<20>, smir=^PI, smul=^P ^P, +dtc300s|DTC 300s, + hc, os, + cols#132, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, ff=^L, hd=\Eh, ht=^I, + hts=\E1, hu=\EH, ind=\n, kbs=^H, tbc=\E3, +gsi|mystery gsi terminal, + hc, os, + cols#132, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, hd=\Eh, ht=^I, hu=\EH, + ind=\n, +aj830|aj832|aj|Anderson Jacobson, + hc, os, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E7, hd=\E9, hu=\E8, + ind=\n, +# From: Chris Torek <chris@gyre.umd.edu> Thu, 7 Nov 85 18:21:58 EST +aj510|Anderson-Jacobson model 510, + am, mir, + cols#80, lines#24, + clear=^L, cub1=^H, cuf1=\EX, + cup=\E#%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EY, + dch1=\E'D$<.1*>, dl1=\E&D$<2*/>, ed=\E'P, el=\E'L, ich1=, + il1=\E&I$<2*/>, ip=$<.1*/>, kcub1=\EW, kcud1=\EZ, + kcuf1=\EX, kcuu1=\EY, pad=^?, rmcup=\E"N, rmir=\E'J, + rmso=\E"I, rmul=\E"U, smcup=\E"N, smir=\E'I, smso=\E"I, + smul=\E"U, +# From: <cbosg!ucbvax!pur-ee!cincy!chris> Thu Aug 20 09:09:18 1981 +# This is incomplete, but it's a start. +nec5520|nec|spinwriter|NEC 5520, + hc, os, + cols#132, it#8, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=\E9, ff=^L, + hd=\E]s\n\E]W, ht=^I, hts=\E1, hu=\E]s\E9\E]W, ind=\n, + kbs=^H, tbc=\E3, +qume5|qume|Qume Sprint 5, + hc, os, + cols#80, it#8, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuu1=^Z, ff=^L, hd=\Eh, ht=^I, + hts=\E1, hu=\EH, ind=\n, kbs=^H, tbc=\E3, +# I suspect the Xerox 1720 is the same as the Diablo 1620. +xerox1720|x1720|x1750|Xerox 1720, + hc, os, + cols#132, it#8, + bel=^G, cr=\r, cub1=^H, cud1=\n, ff=^L, ht=^I, hts=\E1, ind=\n, + tbc=\E2, + +#### Miscellaneous obsolete terminals, manufacturers unknown +# +# If you have any information about these (like, a manufacturer's name, +# and a date on the serial-number plate) please send it! + +cad68-3|cgc3|cad68 basic monitor transparent mode size 3 chars, + OTbs, am, + cols#73, lines#36, + clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, +cad68-2|cgc2|cad68 basic monitor transparent mode size 2 chars, + OTbs, am, + cols#85, lines#39, + clear=^Z, cub1=^H, cuf1=^L, cuu1=^K, home=^^, kcub1=\E3, + kcud1=\E2, kcuf1=\E4, kcuu1=\E1, kf1=\E5, kf2=\E6, kf3=\E7, + kf4=\E8, rmso=\Em^C, smso=\Em^L, +cops10|cops|cops-10|cops 10, + am, bw, + cols#80, lines#24, + bel=^G, clear=\030$<30/>, cr=\r, cub1=^H, cud1=\n, cuf1=^L, + cup=\020%p1%{32}%+%c%p2%{32}%+%c, cuu1=^K, ed=^W, el=^V, + ind=\n, kbs=^H, kcub1=^H, kcud1=\n, kcuf1=^L, kcuu1=^K, + khome=^Y, + +# http://www.bitsavers.org/pdf/datapro/alphanumeric_terminals/Datapro_C25_Datagraphix.pdf +# +# DatagraphiX, Inc. +# (a subsidiary of General Dynamics), +# P.O. Box 82449, San Diego, California 92138. +# +# (d132: removed duplicate :ic=\E5:, +# merged in capabilities from a BRL entry -- esr) +d132|datagraphix|DatagraphiX 132a, + da, db, in, + cols#80, lines#30, + bel=^G, clear=^L, cnorm=\Em\En, cr=\r, cub1=^H, cud1=\n, + cuf1=\EL, cup=\E8%i%p1%3d%p2%3d, cuu1=\EK, cvvis=\Ex, + dch1=\E6, home=\ET, ht=^I, ich1=\E5, il1=\E3, ind=\n, kbs=^H, + kcub1=^H, kcud1=\n, nel=\r\n, ri=\Ew, +# The d800 was an early portable terminal from c.1984-85 that looked a lot +# like the original Compaq `lunchbox' portable (but no handle). It had a vt220 +# mode (which is what this entry looks like) and several other lesser-known +# emulations. +d800|Direct 800/A, + OTbs, am, da, db, msgr, xhp, + cols#80, it#8, lines#24, + acsc=``a1fxgqh0jYk?lZm@nEooppqDrrsstCu4vAwBx3yyzz{{||}}~~, + 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, +digilog|digilog 333, + OTbs, + cols#80, lines#16, + bel=^G, cr=\r, cub1=^H, cud1=\n, cuf1=^I, cuu1=^O, el=^X, + home=^N, ind=\n, +# The DWK was a terminal manufactured in the Soviet Union c.1986 +dwk|dwk-vt|dwk terminal, + am, + cols#80, it#8, lines#24, + acsc=+\^\,Q-S.M0\177`+a:f'g#h#i#jXkClJmFnNo~qUs_tEuPv\\wKxW~ + _, + bel=^G, clear=\EH\EJ, cr=\r, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, dch1=\EP, + ed=\EJ, el=\EK, home=\EH, ht=^I, ich1=\EQ, ind=\n, kbs=^?, + kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, kdch1=\Ee, + kf1=\Ef1, kf10=\Ef0, kf2=\Ef2, kf3=\Ef3, kf4=\Ef4, kf5=\Ef5, + kf6=\Ef6, kf7=\Ef7, kf8=\Ef8, kf9=\Ef9, kich1=\Ed, knp=\Eh, + kpp=\Eg, nel=\r\n, rev=\ET, ri=\ES, rmacs=\EG, rmso=\EX, + sgr0=\EX, smacs=\EF, smso=\ET, +env230|envision230|envision 230 graphics terminal, + xenl@, + enacs@, mc0=\E[0i, mc4=\E[4i, mc5=\E[5i, rmacs@, + sgr=\E[0%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p6%t; + 1%;m$<2>, + sgr0=\E[0m$<2>, smacs@, smso=\E[7m, use=vt100+4bsd, +# These execuports were impact-printer ttys with a 30- or maybe 15-cps acoustic +# coupler attached, the whole rig fitting in a suitcase and more or less +# portable. Hot stuff for c.1977 :-) -- esr +ep48|ep4080|execuport 4080, + OTbs, am, os, + cols#80, + bel=^G, cr=\r, cub1=^H, cud1=\n, hd=^\, hu=^^, ind=\n, +ep40|ep4000|execuport 4000, + cols#136, use=ep4080, +# Adam Thompson <athompso@pangea.ca> tells us: +# Informer series - these are all portable units, resembling older +# automatic bread-baking machines. The terminal looks like a `clamshell' +# design, but isn't. The structure is similar to the Direct terminals, +# but only half the width. The entire unit is only about 10" wide. +# It features an 8" screen (6" or 7" if you have color!), and an 9"x6" +# keyboard. All the keys are crammed together, much like some laptop +# PCs today, but perhaps less well organized...all these units have a +# bewildering array of plugs on the back, including a built-in modem. +# The 305 was a color version of the 304; the 306 and 307 were mono and +# color terminals built for IBM bisync protocols. +# From: Paul Leondis <unllab@amber.berkeley.edu> +ifmr|Informer D304, + OTbs, am, + cols#80, lines#24, + clear=\EZ, cub1=^H, cud1=\n, cuf1=\EC, + cup=\EY%p2%{32}%+%c%p1%{32}%+%c, cuu1=\EA, dch1=\E\\, + ed=\E/, el=\EQ, home=\EH, ich1=\E[, ri=\En, rmso=\EK, sgr0=\EK, + smso=\EJ, +# Entry largely based on wy60 and has the features of wy60ak. +opus3n1+|Esprit Opus3n1+ in wy60 mode with ANSI arrow keys, + am, bw, hs, km, mir, msgr, ul, xon, + cols#80, lh#1, lines#24, lw#8, nlab#8, wsl#80, + acsc=0wa_h[jukslrmqnxqzttuyv]wpxv, bel=^G, blink=\EG2, + cbt=\EI, civis=\E`0, clear=\E*$<100>, cnorm=\E`1, cr=\r, + cub1=^H, cud1=\n, cuf1=^L, cup=\Ea%i%p1%dR%p2%dC, cuu1=^K, + dch1=\EW$<11>, dim=\EGp, dl1=\ER$<5>, dsl=\Ez(\r, + ed=\EY$<100>, el=\ET, fsl=\r, home=\036$<2>, ht=\011$<5>, + hts=\E1, if=/usr/share/tabset/std, il1=\EE$<4>, ind=\n, + ip=$<3>, + is2=\E`:\Ee(\EO\Ee6\Ec41\E~4\Ec21\Ed/\Ezz&\E[A\177\Ezz'\E[B + \177\Ezz(\E[D\177\Ezz)\E[C\177\Ezz<\E[Q\177\Ezz`\E[F + \177\EA1*\EZH12, + kHOM=\E{, kbs=^H, kcbt=\EI, kcub1=\E[D, kcud1=\E[B, + kcuf1=\E[C, kcuu1=\E[A, kdch1=\EW, kdl1=\ER, ked=\EY, + kel=\ET, kend=\E[F, kent=\E7, kf1=^A@\r, kf10=^AI\r, + kf11=^AJ\r, kf12=^AK\r, kf13=^AL\r, kf14=^AM\r, kf15=^AN\r, + kf16=^AO\r, kf2=^AA\r, kf3=^AB\r, kf4=^AC\r, kf5=^AD\r, + kf6=^AE\r, kf7=^AF\r, kf8=^AG\r, kf9=^AH\r, khome=^^, + kich1=\EQ, kil1=\EE, knp=\EK, kpp=\EJ, kprt=\EP, krpl=\Er, + mc0=\EP, mc4=^T, mc5=^R, nel=\r\n$<3>, + pfloc=\EZ2%p1%{63}%+%c%p2%s\177, + pfx=\EZ1%p1%{63}%+%c%p2%s\177, + pln=\Ez%p1%{47}%+%c%p2%s\r, prot=\E), ri=\Ej$<7>, + rmacs=\EH^C, rmam=\Ed., rmcup=, rmir=\Er, rmln=\EA11, + rmxon=\Ec20, rs1=\E~!\E~4$<150>, rs2=\EeF$<150>, + rs3=\EwG\Ee($<150>, + sgr=%?%p8%t\E)%e\E(%;%?%p9%t\EH\002%e\EH\003%;\EG%{48}%?%p2 + %t%{8}%|%;%?%p1%p3%|%t%{4}%|%;%?%p4%t%{2}%|%;%?%p1%p5%| + %t%{64}%|%;%?%p7%t%{1}%|%;%c, + sgr0=\E(\EH\003\EG0\EcD, smacs=\EH^B, smam=\Ed/, + smcup=\Ezz&\E[A\177\Ezz'\E[B\177\Ezz(\E[D\177\Ezz)\E[C\177 + \Ezz<\E[Q\177, + smir=\Eq, smln=\EA10, smxon=\Ec21, tbc=\E0, tsl=\Ez(, + uc=\EG8\EG0, use=adm+sgr, +teletec|Teletec Datascreen, + OTbs, am, + cols#80, lines#24, + bel=^G, clear=^L, cr=\r, cub1=^H, cud1=\n, cuf1=^_, cuu1=^K, + home=^^, ind=\n, +# From: Mark Dornfeld <romwa@ucbvax.berkeley.edu> +# This description is for the LANPAR Technologies VISION 3220 +# terminal from 1984/85. The function key definitions k0-k5 represent the +# edit keypad: FIND, INSERT HERE, REMOVE, SELECT, PREV SCREEN, +# NEXT SCREEN. The key definitions k6-k9 represent the PF1 to PF4 keys. +# +# Kenneth Randell <kenr@datametrics.com> writes on 31 Dec 1998: +# I had a couple of scopes (3221) like this once where I used to work, around +# the 1987 time frame if memory serves me correctly. These scopes were made +# by an outfit called LANPAR Technologies, and were meant to me DEC VT 220 +# compatible. The 3220 was a plain text terminal like the VT-220, the 3221 +# was a like the VT-240 (monochrome with Regis + Sixel graphics), and the 3222 +# was like the VT-241 (color with Regis + Sixel Graphics). These terminals +# (3221) cost about $1500 each, and one was always broken -- had to be sent +# back to the shop for repairs. +# The only real advantage these scopes had over the VT-240's were: +# 1) They were faster in the Regis display, or at least the ones I did +# 2) They had a handy debugging feature where you could split-screen the +# scope, the graphics would appear on the top, and the REGIS commands would +# appear on the bottom. I don't remember the VT-240s being able to do that. +# I would swear that LANPAR Technologies was in MA someplace, but since I +# don't work at the same place anymore, and those terminals and manuals were +# long since junked, I cannot be any more sure than that. +# +# (v3220: removed obsolete ":kn#10:", +# I added <rmam>/<smam> based on the init string -- esr) +v3220|LANPAR Vision II model 3220/3221/3222, + OTbs, am, mir, xenl, + cols#80, it#8, lines#24, + clear=\E[H\E[J, cub1=^H, cud1=\E[B, cuf1=\E[C, + cup=\E[%i%p1%d;%p2%dH, cuu1=\E[A, dch1=\E[P, dl1=\E[M, + ed=\E[J, el=\E[K, 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, +######## ICH/ICH1 VERSUS RMIR/SMIR +# +# Some non-curses applications get confused if both ich/ich1 and rmir/smir +# are present; the symptom is doubled characters in an update using insert. +# These applications are technically correct; in both 4.3BSD termcap and +# terminfo, you're not actually supposed to specify both ich/ich1 and rmir/smir +# unless the terminal needs both. To my knowledge, no terminal still in this +# file requires both other than the very obsolete dm2500. +# +# For ncurses-based applications this is not a problem, as ncurses uses +# one or the other as appropriate but never mixes the two. Therefore we +# have not corrected entries like `linux' and `xterm' that specify both. +# If you see doubled characters from these, use the linux-nic and xterm-nic +# entries that suppress ich/ich1. And upgrade to ncurses! +# + +######## VT100/ANSI/ISO 6429/ECMA-48/PC-TERM TERMINAL STANDARDS +# +# ANSI X3.64 has been withdrawn and replaced by ECMA-48. The ISO 6429 and +# ECMA-48 standards are said to be almost identical, but are not the same +# as X3.64 (though for practical purposes they are close supersets of it). +# +# You can obtain ECMA-48 for free by sending email to helpdesk@ecma.ch +# requesting the standard(s) you want (i.e. ECMA-48, "Control Functions for +# Coded Character Sets"), include your snail-mail address, and you should +# receive the document in due course. Don't expect an email acknowledgment. +# +# Related standards include "X3.4-1977: American National Standard Code for +# Information Interchange" (the ASCII standard) and "X3.41.1974: +# Code-Extension Techniques for Use with the 7-Bit Coded Character Set of +# American National Standard for Information Interchange." I believe (but +# am not certain) that these are effectively identical to ECMA-6 and ECMA-35 +# respectively. +# + +#### VT100/ANSI/ECMA-48 +# +# ANSI Standard (X3.64) Control Sequences for Video Terminals and Peripherals +# and ECMA-48 Control Functions for Coded Character Sets. +# +# Much of the content of this comment is adapted from a table prepared by +# Richard Shuford, based on a 1984 Byte article. Terminfo correspondences, +# discussion of some terminfo-related issues, and updates to capture ECMA-48 +# have been added. Control functions described in ECMA-48 only are tagged +# with * after their names. +# +# The table is a complete list of the defined ANSI X3.64/ECMA-48 control +# sequences. In the main table, \E stands for an escape (\033) character, +# SPC for space. Pn stands for a single numeric parameter to be inserted +# in decimal ASCII. Ps stands for a list of such parameters separated by +# semicolons. Parameter meanings for most parameterized sequences are +# described in the notes. +# +# Sequence Sequence Parameter or +# Mnemonic Name Sequence Value Mode terminfo +# ----------------------------------------------------------------------------- +# APC Applicatn Program Command \E _ - Delim - +# BEL Bell * ^G - - bel +# BPH Break Permitted Here * \E B - * - +# BS BackSpace * ^H - EF - +# CAN Cancel * ^X - - - (A) +# CBT Cursor Backward Tab \E [ Pn Z 1 eF cbt +# CCH Cancel Previous Character \E T - - - +# CHA Cursor Horizntal Absolute \E [ Pn G 1 eF hpa (B) +# CHT Cursor Horizontal Tab \E [ Pn I 1 eF tab (C) +# CMD Coding Method Delimiter * \E +# CNL Cursor Next Line \E [ Pn E 1 eF nel (D) +# CPL Cursor Preceding Line \E [ Pn F 1 eF - +# CPR Cursor Position Report \E [ Pn ; Pn R 1, 1 - - (E) +# CSI Control Sequence Intro \E [ - Intro - +# CTC Cursor Tabulation Control \E [ Ps W 0 eF - (F) +# CUB Cursor Backward \E [ Pn D 1 eF cub +# CUD Cursor Down \E [ Pn B 1 eF cud +# CUF Cursor Forward \E [ Pn C 1 eF cuf +# CUP Cursor Position \E [ Pn ; Pn H 1, 1 eF cup (G) +# CUU Cursor Up \E [ Pn A 1 eF cuu +# CVT Cursor Vertical Tab \E [ Pn Y - eF - (H) +# DA Device Attributes \E [ Pn c 0 - - +# DAQ Define Area Qualification \E [ Ps o 0 - - +# DCH Delete Character \E [ Pn P 1 eF dch +# DCS Device Control String \E P - Delim - +# DL Delete Line \E [ Pn M 1 eF dl +# DLE Data Link Escape * ^P - - - +# DMI Disable Manual Input \E \ - Fs - +# DSR Device Status Report \E [ Ps n 0 - - (I) +# DTA Dimension Text Area * \E [ Pn ; Pn SPC T - PC - +# EA Erase in Area \E [ Ps O 0 eF - (J) +# ECH Erase Character \E [ Pn X 1 eF ech +# ED Erase in Display \E [ Ps J 0 eF ed (J) +# EF Erase in Field \E [ Ps N 0 eF - +# EL Erase in Line \E [ Ps K 0 eF el (J) +# EM End of Medium * ^Y - - - +# EMI Enable Manual Input \E b Fs - +# ENQ Enquire ^E - - - +# EOT End Of Transmission ^D - * - +# EPA End of Protected Area \E W - - - (K) +# ESA End of Selected Area \E G - - - +# ESC Escape ^[ - - - +# ETB End Transmission Block ^W - - - +# ETX End of Text ^C - - - +# FF Form Feed ^L - - - +# FNK Function Key * \E [ Pn SPC W - - - +# GCC Graphic Char Combination* \E [ Pn ; Pn SPC B - - - +# FNT Font Selection \E [ Pn ; Pn SPC D 0, 0 FE - +# GSM Graphic Size Modify \E [ Pn ; Pn SPC B 100, 100 FE - (L) +# GSS Graphic Size Selection \E [ Pn SPC C none FE - +# HPA Horz Position Absolute \E [ Pn ` 1 FE - (B) +# HPB Char Position Backward \E [ j 1 FE - +# HPR Horz Position Relative \E [ Pn a 1 FE - (M) +# HT Horizontal Tab * ^I - FE - (N) +# HTJ Horz Tab w/Justification \E I - FE - +# HTS Horizontal Tab Set \E H - FE hts +# HVP Horz & Vertical Position \E [ Pn ; Pn f 1, 1 FE - (G) +# ICH Insert Character \E [ Pn @ 1 eF ich +# IDCS ID Device Control String \E [ SPC O - * - +# IGS ID Graphic Subrepertoire \E [ SPC M - * - +# IL Insert Line \E [ Pn L 1 eF il +# IND Index \E D - FE - +# INT Interrupt \E a - Fs - +# JFY Justify \E [ Ps SPC F 0 FE - +# IS1 Info Separator #1 * ^_ - * - +# IS2 Info Separator #1 * ^^ - * - +# IS3 Info Separator #1 * ^] - * - +# IS4 Info Separator #1 * ^\ - * - +# LF Line Feed ^J - - - +# LS1R Locking Shift Right 1 * \E ~ - - - +# LS2 Locking Shift 2 * \E n - - - +# LS2R Locking Shift Right 2 * \E } - - - +# LS3 Locking Shift 3 * \E o - - - +# LS3R Locking Shift Right 3 * \E | - - - +# MC Media Copy \E [ Ps i 0 - - (S) +# MW Message Waiting \E U - - - +# NAK Negative Acknowledge * ^U - * - +# NBH No Break Here * \E C - - - +# NEL Next Line \E E - FE nel (D) +# NP Next Page \E [ Pn U 1 eF - +# NUL Null * ^@ - - - +# OSC Operating System Command \E ] - Delim - +# PEC Pres. Expand/Contract * \E Pn SPC Z 0 - - +# PFS Page Format Selection * \E Pn SPC J 0 - - +# PLD Partial Line Down \E K - FE - (T) +# PLU Partial Line Up \E L - FE - (U) +# PM Privacy Message \E ^ - Delim - +# PP Preceding Page \E [ Pn V 1 eF - +# PPA Page Position Absolute * \E [ Pn SPC P 1 FE - +# PPB Page Position Backward * \E [ Pn SPC R 1 FE - +# PPR Page Position Forward * \E [ Pn SPC Q 1 FE - +# PTX Parallel Texts * \E [ \ - - - +# PU1 Private Use 1 \E Q - - - +# PU2 Private Use 2 \E R - - - +# QUAD Typographic Quadding \E [ Ps SPC H 0 FE - +# REP Repeat Char or Control \E [ Pn b 1 - rep +# RI Reverse Index \E M - FE - (V) +# RIS Reset to Initial State \E c - Fs - +# RM Reset Mode * \E [ Ps l - - - (W) +# SACS Set Add. Char. Sep. * \E [ Pn SPC / 0 - - +# SAPV Sel. Alt. Present. Var. * \E [ Ps SPC ] 0 - - (X) +# SCI Single-Char Introducer \E Z - - - +# SCO Sel. Char. Orientation * \E [ Pn ; Pn SPC k - - - +# SCS Set Char. Spacing * \E [ Pn SPC g - - - +# SD Scroll Down \E [ Pn T 1 eF rin +# SDS Start Directed String * \E [ Pn ] 1 - - +# SEE Select Editing Extent \E [ Ps Q 0 - - (Y) +# SEF Sheet Eject & Feed * \E [ Ps ; Ps SPC Y 0,0 - - +# SGR Select Graphic Rendition \E [ Ps m 0 FE sgr (O) +# SHS Select Char. Spacing * \E [ Ps SPC K 0 - - +# SI Shift In ^O - - - (P) +# SIMD Sel. Imp. Move Direct. * \E [ Ps ^ - - - +# SL Scroll Left \E [ Pn SPC @ 1 eF - +# SLH Set Line Home * \E [ Pn SPC U - - - +# SLL Set Line Limit * \E [ Pn SPC V - - - +# SLS Set Line Spacing * \E [ Pn SPC h - - - +# SM Select Mode \E [ Ps h none - - (W) +# SO Shift Out ^N - - - (Q) +# SOH Start Of Heading * ^A - - - +# SOS Start of String * \E X - - - +# SPA Start of Protected Area \E V - - - (Z) +# SPD Select Pres. Direction * \E [ Ps ; Ps SPC S 0,0 - - +# SPH Set Page Home * \E [ Ps SPC G - - - +# SPI Spacing Increment \E [ Pn ; Pn SPC G none FE - +# SPL Set Page Limit * \E [ Ps SPC j - - - +# SPQR Set Pr. Qual. & Rapid. * \E [ Ps SPC X 0 - - +# SR Scroll Right \E [ Pn SPC A 1 eF - +# SRCS Set Reduced Char. Sep. * \E [ Pn SPC f 0 - - +# SRS Start Reversed String * \E [ Ps [ 0 - - +# SSA Start of Selected Area \E F - - - +# SSU Select Size Unit * \E [ Pn SPC I 0 - - +# SSW Set Space Width * \E [ Pn SPC [ none - - +# SS2 Single Shift 2 (G2 set) \E N - Intro - +# SS3 Single Shift 3 (G3 set) \E O - Intro - +# ST String Terminator \E \ - Delim - +# STAB Selective Tabulation * \E [ Pn SPC ^ - - - +# STS Set Transmit State \E S - - - +# STX Start pf Text * ^B - - - +# SU Scroll Up \E [ Pn S 1 eF indn +# SUB Substitute * ^Z - - - +# SVS Select Line Spacing * \E [ Pn SPC \ 1 - - +# SYN Synchronous Idle * ^F - - - +# TAC Tabul. Aligned Centered * \E [ Pn SPC b - - - +# TALE Tabul. Al. Leading Edge * \E [ Pn SPC a - - - +# TATE Tabul. Al. Trailing Edge* \E [ Pn SPC ` - - - +# TBC Tab Clear \E [ Ps g 0 FE tbc +# TCC Tabul. Centered on Char * \E [ Pn SPC c - - - +# TSR Tabulation Stop Remove * \E [ Pn SPC d - FE - +# TSS Thin Space Specification \E [ Pn SC E none FE - +# VPA Vert. Position Absolute \E [ Pn d 1 FE vpa +# VPB Line Position Backward * \E [ Pn k 1 FE - +# VPR Vert. Position Relative \E [ Pn e 1 FE - (R) +# VT Vertical Tabulation * ^K - FE - +# VTS Vertical Tabulation Set \E J - FE - +# +# --------------------------------------------------------------------------- +# +# Notes: +# +# Some control characters are listed in the ECMA-48 standard without +# being assigned functions relevant to terminal control there (they +# referred to other standards such as ISO 1745 or ECMA-35). They are listed +# here anyway for completeness. +# +# (A) ECMA-48 calls this "CancelCharacter" but retains the CCH abbreviation. +# +# (B) There seems to be some confusion abroad between CHA and HPA. Most +# `ANSI' terminals accept the CHA sequence, not the HPA. but terminfo calls +# the capability (hpa). ECMA-48 calls this "Cursor Character Absolute" but +# preserved the CHA abbreviation. +# +# (C) CHT corresponds to terminfo (tab). Usually it has the value ^I. +# Occasionally (as on, for example, certain HP terminals) this has the HTJ +# value. ECMA-48 calls this "Cursor Forward Tabulation" but preserved the +# CHT abbreviation. +# +# (D) terminfo (nel) is usually \r\n rather than ANSI \EE. +# +# (E) ECMA-48 calls this "Active Position Report" but preserves the CPR +# abbreviation. +# +# (F) CTC parameter values: +# 0 = set char tab, +# 1 = set line tab, +# 2 = clear char tab, +# 3 = clear line tab, +# 4 = clear all char tabs on current line, +# 5 = clear all char tabs, +# 6 = clear all line tabs. +# +# (G) CUP and HVP are identical in effect. Some ANSI.SYS versions accept +# HVP, but always allow CUP as an alternate. ECMA-48 calls HVP "Character +# Position Absolute" but retains the HVP abbreviation. +# +# (H) ECMA calls this "Cursor Line Tabulation" but preserves the CVT +# abbreviation. +# +# (I) DSR parameter values: +# 0 = ready, +# 1 = busy, +# 2 = busy, will send DSR later, +# 3 = malfunction, +# 4 = malfunction, will send DSR later, +# 5 = request DSR, +# 6 = request CPR response. +# +# (J) ECMA calls ED "Erase In Page". EA/ED/EL parameters: +# 0 = clear to end, +# 1 = clear from beginning, +# 2 = clear. +# +# (K) ECMA calls this "End of Guarded Area" but preserves the EPA abbreviation. +# +# (L) The GSM parameters are vertical and horizontal parameters to scale by. +# +# (M) Some ANSI.SYS versions accept HPR, but more commonly `ANSI' terminals +# use CUF for this function and ignore HPR. ECMA-48 calls this "Character +# Position Relative" but retains the HPR abbreviation. +# +# (N) ECMA-48 calls this "Character Tabulation" but retains the HT +# abbreviation. +# +# (O) SGR parameter values: +# 0 = default mode (attributes off), +# 1 = bold, +# 2 = dim, +# 3 = italicized, +# 4 = underlined, +# 5 = slow blink, +# 6 = fast blink, +# 7 = reverse video, +# 8 = invisible, +# 9 = crossed-out (marked for deletion), +# 10 = primary font, +# 10 + n (n in 1..9) = nth alternative font, +# 20 = Fraktur, +# 21 = double underline, +# 22 = turn off 2, +# 23 = turn off 3, +# 24 = turn off 4, +# 25 = turn off 5, +# 26 = proportional spacing, +# 27 = turn off 7, +# 28 = turn off 8, +# 29 = turn off 9, +# 30 = black fg, +# 31 = red fg, +# 32 = green fg, +# 33 = yellow fg, +# 34 = blue fg, +# 35 = magenta fg, +# 36 = cyan fg, +# 37 = white fg, +# 38 = set fg color as in CCITT T.416, +# 39 = set default fg color, +# 40 = black bg +# 41 = red bg, +# 42 = green bg, +# 43 = yellow bg, +# 44 = blue bg, +# 45 = magenta bg, +# 46 = cyan bg, +# 47 = white bg, +# 48 = set bg color as in CCITT T.416, +# 49 = set default bg color, +# 50 = turn off 26, +# 51 = framed, +# 52 = encircled, +# 53 = overlined, +# 54 = turn off 51 & 52, +# 55 = not overlined, +# 56-59 = reserved, +# 61-65 = variable highlights for ideograms. +# +# (P) SI is also called LSO, Locking Shift Zero. +# +# (Q) SI is also called LS1, Locking Shift One. +# +# (R) Some ANSI.SYS versions accept VPR, but more commonly `ANSI' terminals +# use CUD for this function and ignore VPR. ECMA calls it `Line Position +# Absolute' but retains the VPA abbreviation. +# +# (S) MC parameters: +# 0 = start xfer to primary aux device, +# 1 = start xfer from primary aux device, +# 2 = start xfer to secondary aux device, +# 3 = start xfer from secondary aux device, +# 4 = stop relay to primary aux device, +# 5 = start relay to primary aux device, +# 6 = stop relay to secondary aux device, +# 7 = start relay to secondary aux device. +# +# (T) ECMA-48 calls this "Partial Line Forward" but retains the PLD +# abbreviation. +# +# (U) ECMA-48 calls this "Partial Line Backward" but retains the PLU +# abbreviation. +# +# (V) ECMA-48 calls this "Reverse Line Feed" but retains the RI abbreviation. +# +# (W) RM/SM modes are as follows: +# 1 = Guarded Area Transfer Mode (GATM), +# 2 = Keyboard Action Mode (KAM), +# 3 = Control Representation Mode (CRM), +# 4 = Insertion Replacement Mode (IRM), +# 5 = Status Report Transfer Mode (SRTM), +# 6 = Erasure Mode (ERM), +# 7 = Line Editing Mode (LEM), +# 8 = Bi-Directional Support Mode (BDSM), +# 9 = Device Component Select Mode (DCSM), +# 10 = Character Editing Mode (HEM), +# 11 = Positioning Unit Mode (PUM), +# 12 = Send/Receive Mode (SRM), +# 13 = Format Effector Action Mode (FEAM), +# 14 = Format Effector Transfer Mode (FETM), +# 15 = Multiple Area Transfer Mode (MATM), +# 16 = Transfer Termination Mode (TTM), +# 17 = Selected Area Transfer Mode (SATM), +# 18 = Tabulation Stop Mode (TSM), +# 19 = Editing Boundary Mode (EBM), +# 20 = Line Feed New Line Mode (LF/NL), +# 21 = Graphic Rendition Combination Mode (GRCM), +# 22 = Zero Default Mode (ZDM). +# +# The EBM and LF/NL modes have actually been removed from ECMA-48's 5th edition +# but are listed here for reference. +# +# (X) Select Alternate Presentation Variants is used only for non-Latin +# alphabets. +# +# (Y) "Select Editing Extent" (SEE) was ANSI "Select Edit Extent Mode" (SEM). +# +# (Z) ECMA-48 calls this "Start of Guarded Area" but retains the SPA +# abbreviation. +# +# --------------------------------------------------------------------------- +# +# Abbreviations: +# +# Intro an Introducer of some kind of defined sequence; the normal 7-bit +# X3.64 Control Sequence Introducer is the two characters "Escape [" +# +# Delim a Delimiter +# +# x/y identifies a character by position in the ASCII table (column/row) +# +# eF editor function (see explanation) +# +# FE format effector (see explanation) +# +# F is a Final character in +# an Escape sequence (F from 3/0 to 7/14 in the ASCII table) +# a control sequence (F from 4/0 to 7/14) +# +# Gs is a graphic character appearing in strings (Gs ranges from +# 2/0 to 7/14) in the ASCII table +# +# Ce is a control represented as a single bit combination in the C1 set +# of controls in an 8-bit character set +# +# C0 the familiar set of 7-bit ASCII control characters +# +# C1 roughly, the set of control chars available only in 8-bit systems. +# This is too complicated to explain fully here, so read Jim Fleming's +# article in the February 1983 BYTE, especially pages 214 through 224. +# +# Fe is a Final character of a 2-character Escape sequence that has an +# equivalent representation in an 8-bit environment as a Ce-type +# (Fe ranges from 4/0 to 5/15) +# +# Fs is a Final character of a 2-character Escape sequence that is +# standardized internationally with identical representation in 7-bit +# and 8-bit environments and is independent of the currently +# designated C0 and C1 control sets (Fs ranges from 6/0 to 7/14) +# +# I is an Intermediate character from 2/0 to 2/15 (inclusive) in the +# ASCII table +# +# P is a parameter character from 3/0 to 3/15 (inclusive) in the ASCII +# table +# +# Pn is a numeric parameter in a control sequence, a string of zero or +# more characters ranging from 3/0 to 3/9 in the ASCII table +# +# Ps is a variable number of selective parameters in a control sequence +# with each selective parameter separated from the other by the code +# 3/11 (which usually represents a semicolon); Ps ranges from +# 3/0 to 3/9 and includes 3/11 +# +# * Not relevant to terminal control, listed for completeness only. +# +# Format Effectors versus Editor Functions +# +# A format effector specifies how following output is to be displayed. +# An editor function allows you to modify the display. Informally +# format effectors may be destructive; format effectors should not be. +# +# For instance, a format effector that moves the "active position" (the +# cursor or equivalent) one space to the left would be useful when you want to +# create an overstrike, a compound character made of two standard characters +# overlaid. Control-H, the Backspace character, is actually supposed to be a +# format effector, so you can do this. But many systems use it in a +# nonstandard fashion, as an editor function, deleting the character to the +# left of the cursor and moving the cursor left. When Control-H is assumed to +# be an editor function, you cannot predict whether its use will create an +# overstrike unless you also know whether the output device is in an "insert +# mode" or an "overwrite mode". When Control-H is used as a format effector, +# its effect can always be predicted. The familiar characters carriage +# return, linefeed, formfeed, etc., are defined as format effectors. +# +# NOTES ON THE DEC VT100 IMPLEMENTATION +# +# Control sequences implemented in the VT100 are as follows: +# +# CPR, CUB, CUD, CUF, CUP, CUU, DA, DSR, ED, EL, HTS, HVP, IND, +# LNM, NEL, RI, RIS, RM, SGR, SM, TBC +# +# plus several private DEC commands. +# +# Erasing parts of the display (EL and ED) in the VT100 is performed thus: +# +# Erase from cursor to end of line Esc [ 0 K or Esc [ K +# Erase from beginning of line to cursor Esc [ 1 K +# Erase line containing cursor Esc [ 2 K +# Erase from cursor to end of screen Esc [ 0 J or Esc [ J +# Erase from beginning of screen to cursor Esc [ 1 J +# Erase entire screen Esc [ 2 J +# +# Some brain-damaged terminal/emulators respond to Esc [ J as if it were +# Esc [ 2 J, but this is wrong; the default is 0. +# +# The VT100 responds to receiving the DA (Device Attributes) control +# +# Esc [ c (or Esc [ 0 c) +# +# by transmitting the sequence +# +# Esc [ ? l ; Ps c +# +# where Ps is a character that describes installed options. +# +# The VT100's cursor location can be read with the DSR (Device Status +# Report) control +# +# Esc [ 6 n +# +# The VT100 reports by transmitting the CPR sequence +# +# Esc [ Pl ; Pc R +# +# where Pl is the line number and Pc is the column number (in decimal). +# +# The specification for the DEC VT100 is document EK-VT100-UG-003. + +#### ANSI.SYS +# +# Here is a description of the color and attribute controls supported in the +# the ANSI.SYS driver under MS-DOS. Most console drivers and ANSI +# terminal emulators for Intel boxes obey these. They are a proper subset +# of the ECMA-48 escapes. +# +# 0 all attributes off +# 1 foreground bright +# 4 underscore on +# 5 blink on/background bright (not reliable with brown) +# 7 reverse-video +# 8 set blank (non-display) +# 10 set primary font +# 11 set first alternate font (on PCs, display ROM characters 1-31) +# 12 set second alternate font (on PCs, display IBM high-half chars) +# +# Color attribute sets +# 3n set foreground color / 0=black, 1=red, 2=green, 3=brown, +# 4n set background color \ 4=blue, 5=magenta, 6=cyan, 7=white +# Bright black becomes gray. Bright brown becomes yellow, +# These coincide with the prescriptions of the ISO 6429/ECMA-48 standard. +# +# * If the 5 attribute is on and you set a background color (40-47) it is +# supposed to enable bright background. +# +# * Many VGA cards (such as the Paradise and compatibles) do the wrong thing +# when you try to set a "bright brown" (yellow) background with attribute +# 5 (you get a blinking yellow foreground instead). A few displays +# (including the System V console) support an attribute 6 that undoes this +# braindamage (this is required by iBCS2). +# +# * Some older versions of ANSI.SYS have a bug that causes them to require +# ESC [ Pn k as EL rather than the ANSI ESC [ Pn K. (This is not ECMA-48 +# compatible.) + +#### Intel Binary Compatibility Standard +# +# For comparison, here are the capabilities implied by the Intel Binary +# Compatibility Standard for UNIX systems (Intel order number 468366-001). +# These recommendations are optional. IBCS2 allows the leading escape to +# be either the 7-bit \E[ or 8-bit \0233 introducer, in accordance with +# the ANSI X.364/ISO 6429/ECMA-48 standard. Here are the iBCS2 capabilities +# (as described in figure 9-3 of the standard). Those expressed in the ibcs2 +# terminfo entry are followed with the corresponding capability in parens: +# +# CSI <n>k disable (n=0) or enable (n=1) keyclick +# CSI 2h lock keyboard +# CSI 2i send screen as input +# CSI 2l unlock keyboard +# CSI 6m enable background color intensity +# CSI <0-2>c reserved +# CSI <0-59>m select graphic rendition +# CSI <n>;<m>H (cup) cursor to line n and column m +# CSI <n>;<m>f cursor to line n and column m +# CSI <n>@ (ich) insert characters +# CSI <n>A (cuu) cursor up n lines +# CSI <n>B (cud) cursor down n lines +# CSI <n>C (cuu) cursor right n characters +# CSI <n>D (cud) cursor left n characters +# CSI <n>E cursor down n lines and in first column +# CSI <n>F cursor up n lines and in first column +# CSI <n>G (hpa) position cursor at column n-1 +# CSI <n>J (ed) erase in display +# CSI <n>K (el) erase in line +# CSI <n>L (il) insert line(s) +# CSI <n>P (dch) delete characters +# CSI <n>S (indn) scroll up n lines +# CSI <n>T (rin) scroll down n lines +# CSI <n>X (ech) erase characters +# CSI <n>Z (cbt) back up n tab stops +# CSI <n>` cursor to column n on line +# CSI <n>a (cuu) cursor right n characters +# CSI <n>d (vpa) cursor to line n +# CSI <n>e cursor down n lines and in first column +# CSI <n>g (cbt) clear all tabs +# CSI <n>z make virtual terminal n active +# CSI ?7h (smam) turn automargin on +# CSI ?7l (rmam) turn automargin off +# CSI s save cursor position +# CSI u restore cursor position to saved value +# CSI =<c>A set overscan color +# CSI =<c>F set normal foreground color +# CSI =<c>G set normal background color +# CSI =<c>H set reverse foreground color +# CSI =<c>I set reverse foreground color +# CSI =<c>J set graphic foreground color +# CSI =<c>K set graphic foreground color +# CSI =<n>g (dispc) display n from alternate graphics character set +# CSI =<p>;<d>B set bell parameters +# CSI =<s>;<e>C set cursor parameters +# CSI =<x>D enable/disable intensity of background color +# CSI =<x>E set/clear blink vs. bold background +# CSI 7 (sc) (sc) save cursor position +# CSI 8 (rc) (rc) restore cursor position to saved value +# CSI H (hts) (hts) set tab stop +# CSI Q<n><string> define function key string +# (string must begin and end with delimiter char) +# CSI c (clear) clear screen +# +# The lack of any specification for attributes in SGR (among other things) +# makes this a wretchedly weak standard. The table above is literally +# everything iBSC2 has to say about terminal escape sequences; there is +# no further discussion of their meaning or how to set the parameters +# in these sequences at all. +# + +######## NONSTANDARD CAPABILITY TRANSLATIONS USED IN THIS FILE +# +# The historical termcap file entries were written primarily in 4.4BSD termcap. +# The 4.4BSD termcap set was substantially larger than the original 4.1BSD set, +# with the extension names chosen for compatibility with the termcap names +# assigned in System V terminfo. There are some variant extension sets out +# there. We try to describe them here. +# +#### XENIX extensions: +# +# The XENIX extensions include a set of function-key capabilities as follows: +# +# code XENIX variable name terminfo name name clashes? +# ---- ------------------- ------------- ----------------------- +# CL key_char_left +# CR key_char_right +# CW key_change_window create_window +# EN key_end kend +# HM key_home khome +# HP ?? +# LD key_delete_line kdl1 +# LF key_linefeed label_off +# NU key_next_unlocked_cell +# PD key_page_down knp +# PL ?? +# PN start_print mc5 +# PR ?? +# PS stop_print mc4 +# PU key_page_up kpp pulse +# RC key_recalc remove_clock +# RF key_toggle_ref req_for_input +# RT key_return kent +# UP key_up_arrow kcuu1 parm_up_cursor +# WL key_word_left +# WR key_word_right +# +# The XENIX extensions also include the following character-set and highlight +# capabilities: +# +# XENIX terminfo function +# ----- -------- ------------------------------ +# GS smacs start alternate character set +# GE rmacs end alternate character set +# GG :as:/:ae: glitch (analogous to :sg:/:ug:) +# bo blink begin blink (not used in /etc/termcap) +# be end blink (not used in /etc/termcap) +# bb blink glitch (not used in /etc/termcap) +# it dim begin dim (not used in /etc/termcap) +# ie end dim (not used in /etc/termcap) +# ig dim glitch (not used in /etc/termcap) +# +# Finally, XENIX also used the following forms-drawing capabilities: +# +# single double type ASCII approximation +# ------ ------ ------------- ------------------- +# GV Gv vertical line | +# GH Gv horizontal line - _ +# G1 G5 top right corner _ | +# G2 G6 top left corner | +# G3 G7 bottom left corner |_ +# G4 G8 bottom right corner _| +# GD Gd down-tick character T +# GL Gl left-tick character -| +# GR Gr right-tick character |- +# GC Gc middle intersection -|- +# GU Gu up-tick character _|_ +# +# These were invented to take advantage of the IBM PC ROM character set. One +# can compose an acsc string from the single-width characters as follows +# "j{G4}k{G1}l{G2}m{G3}q{GH}x{GV}t{GR}u{GL}v{GU}w{GD}n{GC}" +# When translating a termcap file, ncurses tic will do this automatically. +# The double forms characters don't fit the SVr4 terminfo model. +# +#### AT&T Extensions: +# +# The old AT&T 5410, 5420, 5425, pc6300plus, 610, and s4 entries used a set of +# nonstandard capabilities. Its signature is the KM capability, used to name +# some sort of keymap file. EE, BO, CI, CV, XS, DS, FL and FE are in this +# set. Comments in the original, and a little cross-checking with other AT&T +# documentation, seem to establish that BO=:mr: (start reverse video), DS=:mh: +# (start dim), XS=:mk: (secure/invisible mode), EE=:me: (end highlights), +# FL=:LO: (enable soft labels), FE=:LF: (disable soft labels), CI=:vi: (make +# cursor invisible), and CV=:ve: (make cursor normal). +# +#### HP Extensions +# +# The HP library (as of mid-1995, their term.h file version 70.1) appears to +# have the System V capabilities up to SVr1 level. After that, it supports +# two nonstandard caps meml and memu corresponding to the old termcap :ml:, +# :mu: capabilities. After that, it supports caps plab_norm, label_on, +# label_off, and key_f11..key_f63 capabilities like SVr4's. This makes the +# HP binary format incompatible with SVr4's. +# +#### IBM Extensions +# +# There is a set of nonstandard terminfos used by IBM's AIX operating system. +# The AIX terminfo library diverged from SVr1 terminfo, and replaces all +# capabilities following prtr_non with the following special capabilities: +# box[12], batt[12], colb[0123456789], colf[0123456789], f[01234567], kbtab, +# kdo, kcmd, kcpn, kend, khlp, knl, knpn, kppn, kppn, kquit, ksel, kscl, kscr, +# ktab, kmpf[123456789], apstr, ksf1..ksf10, kf11...kf63, kact, topl, btml, +# rvert, lvert. Some of these are identical to XPG4/SVr4 equivalents: +# kcmd, kend, khlp, and kf11...kf63. Two others (kbtab and ksel) can be +# renamed (to kcbt and kslt). The places in the box[12] capabilities +# correspond to acsc chars, here is the mapping: +# +# box1[0] = ACS_ULCORNER +# box1[1] = ACS_HLINE +# box1[2] = ACS_URCORNER +# box1[3] = ACS_VLINE +# box1[4] = ACS_LRCORNER +# box1[5] = ACS_LLCORNER +# box1[6] = ACS_TTEE +# box1[7] = ACS_RTEE +# box1[8] = ACS_BTEE +# box1[9] = ACS_LTEE +# box1[10] = ACS_PLUS +# +# The box2 characters are the double-line versions of these forms graphics. +# The AIX binary terminfo format is incompatible with SVr4's. +# +#### Iris console extensions: +# +# HS is half-intensity start; HE is half-intensity end +# CT is color terminal type (for Curses & rogue) +# CP is color change escape sequence +# CZ are color names (for Curses & rogue) +# +# The ncurses tic utility recognizes HS as an alias for mh <dim>. +# +#### TC Extensions: +# +# There is a set of extended termcaps associated with something +# called the "Terminal Control" or TC package created by MainStream Systems, +# Winfield Kansas. This one also uses GS/GE for as/ae, and also uses +# CF for civis and CO for cvvis. Finally, they define a boolean :ct: +# that flags color terminals. +# +######## NCURSES USER-DEFINABLE CAPABILITIES +# +# Extensions added after ncurses 5.0 generally use the "-x" option of tic and +# infocmp to manipulate user-definable capabilities. Those that are intended +# for use in either terminfo or termcap use 2-character names. Extended +# function keys do not use 2-character names, and are available only with +# terminfo. +# +# Beginning in 2010, NetBSD curses has also provided a "-x" option for +# tic/infocmp, and uses this database (with a few changes). There are a few +# differences, noted in +# https://invisible-island.net/ncurses/ncurses-netbsd.html +# +# ncurses makes explicit checks for a few user-definable capabilities: AX, +# RGB, U8, XM, which are documented in the user_caps(5) manual page. +# +#### SCREEN Extensions: +# +# The screen program uses the termcap interface. It recognizes a few useful +# nonstandard capabilities. Those are used in this file. +# +# AX (bool) Does understand ANSI set default fg/bg color (\E[39m / +# \E[49m). +# G0 (bool) Terminal can deal with ISO 2022 font selection sequences. +# E0 (str) Switch charset 'G0' back to standard charset. +# S0 (str) Switch charset 'G0' to the specified charset. +# XT (bool) Terminal understands special xterm sequences (OSC, mouse +# tracking). +# +# AX is relatively straightforward; it is interpreted by ncurses to say that +# 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, +# we must read screen's source-code. For example, when XT is set, screen +# assumes +# +# a) OSC 1 sets the title string, e.g., for the icon. Recent versions of +# screen may also set the terminal's name, which is (for xterm) distinct +# from the icon name. +# b) OSC 20 sets the background pixmap. This is an rxvt feature. +# c) OSC 39 and OSC 49 set the default foreground/background colors. Again +# this is an rxvt feature. +# d) certain mode settings enable the mouse: 9, 1000, 1001, 1002, 1003. +# These are from xterm, although xterm accepts mouse codes that may not be +# recognized by screen, e.g., 1005, 1006. +# e) colors beyond 0..7 are implemented by xterm's aixterm-like 16-color +# sequence. However, because screen uses only termcap, the values returned +# by Af/Ab are not usable because they rely on expressions that termcap +# does not support. Therefore, screen uses a hardcoded string to work +# around the limitation. In a few cases, screen also uses tparm, which +# is a terminfo function rather than termcap. +# f) all entries named "*xterm*" or "*rxvt*" have the bce flag set. +# g) screen also uses the feature to decide whether to pay attention to other +# xterm-related features which are unrelated to the description in the +# manual page. +# +# Since XT is useful only when the outer terminal matches screen's assumptions, +# it is appropriate to use it in the derived terminal descriptions such as +# "screen.xterm", but not in the generic "screen", "screen-bce" entries. +# +# The other ISO-2022 features are rarely used, but provided here to make +# screen's termcap features available. +# +#### XTERM Extensions: +# +# Most of the xterm extensions are for function-keys. Since xterm patch #94 (in +# 1999), xterm has supported shift/control/alt/meta modifiers which produce +# additional function-key strings. Some other developers copied the feature, +# though they did not follow xterm's lead in xterm patch #167 (in 2002), to make +# these key definitions less ambiguous. +# +# A few terminals provide similar functionality (sending distinct keys when +# a modifier is used), including rxvt. +# +# These are the extended keys defined in this file: +# +# kDC3 kDC4 kDC5 kDC6 kDC7 kDN kDN3 kDN4 kDN5 kDN6 kDN7 kEND3 kEND4 kEND5 kEND6 +# kEND7 kHOM3 kHOM4 kHOM5 kHOM6 kHOM7 kIC3 kIC4 kIC5 kIC6 kIC7 kLFT3 kLFT4 +# kLFT5 kLFT6 kLFT7 kNXT3 kNXT4 kNXT5 kNXT6 kNXT7 kPRV3 kPRV4 kPRV5 kPRV6 kPRV7 +# kRIT3 kRIT4 kRIT5 kRIT6 kRIT7 kUP kUP3 kUP4 kUP5 kUP6 kUP7 ka2 kb1 kb3 kc2 +# +# Here are the other xterm-related extensions which are used in this file: +# +# Cr is a string capability which resets the cursor color +# Cs is a string capability which sets the cursor color to a given value. +# The single string parameter is the color name/number, according to the +# implementation. +# Ms modifies the selection/clipboard. Its parameters are +# p1 = the storage unit (clipboard, selection or cut buffer) +# p2 = the base64-encoded clipboard content. +# Se resets the cursor style to the terminal power-on default. +# Ss is a string capability with one numeric parameter. It is used to set the +# cursor style as described by the DECSCUSR function to a block or +# underline. +# TS is a string capability which acts like "tsl", but uses no parameter and +# goes to the first column of the "status line". +# XM is a string capability which overrides ncurses's built-in string which +# enables/disables xterm mouse mode. +# xm shows the format of the mouse responses. Parameters: +# p1 = y-ordinate +# p2 = x-ordinate +# p3 = button +# p4 = state, e.g., pressed or released +# p5 = y-ordinate starting region +# p6 = x-ordinate starting region +# p7 = y-ordinate ending region +# p8 = x-ordinate ending region +# Other extensions, used in xm: +# %u = UTF-8 +# +#### Miscellaneous extensions: +# +# gsbom/grbom are used to enable/disable real bold (not intensity bright) mode. +# This was implemented for the Hurd. +# rmxx/smxx describes the ECMA-48 strikeout/crossed-out attributes, as an +# experimental feature of tmux. +# CO gives the number of indexed ("ANSI") colors which overlay an RGB color +# space. +# E3 clears the terminal's scrollback buffer. This was implemented in the +# Linux 3.0 kernel as a security feature. It matches a feature which was +# added in xterm patch #107. +# U8 is a numeric capability which denotes a terminal emulator which does not +# support VT100 SI/SO when processing UTF-8 encoding. Set this to a nonzero +# value to enable it. +# Smulx modifies the appearance of underlines in VTE, December 2017. +# +######## CHANGE HISTORY +# +# The last /etc/termcap version maintained by John Kunze was 8.3, dated 8/5/94. +# Releases 9 and 10 (up until the release of ncurses 4.2 in 1998) were +# maintained by Eric S. Raymond as part of the ncurses project. +# +# This file contains all the capability information present in John Kunze's +# last version of the termcap master file, except as noted in the change +# comments at end of file. Some information about very ancient obsolete +# capabilities has been moved to comments. Some all-numeric names of older +# terminals have been retired. +# +# I changed :MT: to :km: (the 4.4BSD name) everywhere. I commented out some +# capabilities (EP, dF, dT, dV, kn, ma, ml, mu, xr, xx) that are no longer +# used by BSD curses. +# +# The 9.1.0 version of this file was translated from my lightly-edited copy of +# 8.3, then mechanically checked against 8.3 using Emacs Lisp code written for +# the purpose. Unless the ncurses tic implementation and the Lisp code were +# making perfectly synchronized mistakes which I then failed to catch by +# eyeball, the translation was correct and perfectly information-preserving. +# +# Major version number bumps correspond to major version changes in ncurses. +# +# Here is a log of the changes since then: +# +# 9.1.0 (Wed Feb 1 04:50:32 EST 1995): +# * First terminfo master translated from 8.3. +# 9.2.0 (Wed Feb 1 12:21:45 EST 1995): +# * Replaced Wyse entries with updated entries supplied by vendor. +# +# 9.3.0 (Mon Feb 6 19:14:40 EST 1995): +# * Added contact & status info from G. Clark Brown <clark@sssi.com>. +# 9.3.1 (Tue Feb 7 12:00:24 EST 1995): +# * Better XENIX keycap translation. Describe TC termcaps. +# * Contact and history info supplied by Qume. +# 9.3.2 (Sat Feb 11 23:40:02 EST 1995): +# * Raided the Shuford FTP site for recent termcaps/terminfos. +# * Added information on X3.64 and VT100 standard escape sequences. +# 9.3.3 (Mon Feb 13 12:26:15 EST 1995): +# * Added a correct X11R6 xterm entry. +# * Fixed terminfo translations of padding. +# 9.3.4 (Wed Feb 22 19:27:34 EST 1995): +# * Added correct acsc/smacs/rmacs strings for vt100 and xterm. +# * Added u6/u7/u8/u9 capabilities. +# * Added PCVT entry. +# 9.3.5 (Thu Feb 23 09:37:12 EST 1995): +# * Emacs uses :so:, not :mr:, for its mode line. Fix linux entry +# to use reverse-video standout so Emacs will look right. +# * Added el1 capability to ansi. +# * Added smacs/rmacs to ansi.sys. +# +# 9.4.0 (Sat Feb 25 16:43:25 EST 1995): +# * New mt70 entry. +# * Added COPYRIGHTS AND OTHER DELUSIONS. +# * Added AT&T 23xx & 500/513, vt220 and vt420, opus3n1+, netronics +# smartvid & smarterm, ampex 175 & 219 & 232, +# env230, falco ts100, fluke, intertube, superbrain, ncr7901, vic20, +# ozzie, trs200, tr600, Tandy & Texas Instruments VDTs, intext2, +# screwpoint, fviewpoint, Contel Business Systems, Datamedia Colorscan, +# adm36, mime314, ergo4000, ca22851. Replaced att7300, esprit, dd5500. +# * Replaced the Perkin-Elmer entries with vendor's official ones. +# * Restored the old minimal-ansi entry, luna needs it. +# * Fixed some incorrect ip and proportional-padding translations. +# 9.4.1 (Mon Feb 27 14:18:33 EST 1995): +# * Fix linux & AT386 sgr strings to do A_ALTCHARSET turnoff correctly. +# * Make the xterm entry 65 lines again; create xterm25 and xterm24 +# to force a particular height. +# * Added beehive4 and reorganized other Harris entries. +# 9.4.2 (Thu Mar 9 01:45:44 EST 1995): +# * Merged in DEC's official entries for its terminals. The only old +# entry I kept was Doug Gwyn's alternate vt100 (as vt100-avo). +# * Replaced the translated BBN BitGraph entries with purpose-built +# ones from AT&T's SVr3. +# * Replaced the AT&T entries with AT&T's official terminfos. +# * Added Teleray 16, vc415, cops10. +# * Merged in many individual capabilities from SCO terminfo files. +# 9.4.3 (Mon Mar 13 02:37:53 EST 1995): +# * Typo fixes. +# * Change linux entry so A_PROTECT enables IBM-PC ROM characters. +# 9.4.4 (Mon Mar 27 12:32:35 EST 1995): +# * Added tty35, Ann Arbor Guru series. vi300 and 550, cg7900, tvi803, +# pt210, ibm3164, IBM System 1, ctrm, Tymshare scanset, dt200, adm21, +# simterm, citoh and variants. +# * Replaced sol entry with sol1 and sol2. +# * Replaced Qume QVT and Freedom-series entries with purpose-built +# terminfo entries. +# * Enhanced vt220, tvi910, tvi924, hpterm, hp2645, adm42, tek +# and dg200 entries using caps from from SCO. +# * Added the usual set of function-key mappings to ANSI entry. +# * Corrected xterm's function-key capabilities. +# 9.4.5 (Tue Mar 28 14:27:49 EST 1995): +# * Fix in xterm entry, cub and cud are not reliable under X11R6. +# 9.4.6 (Thu Mar 30 14:52:15 EST 1995): +# * Fix in xterm entry, get the arrow keys right. +# * Change some \0 escapes to \200. +# 9.4.7 (Tue Apr 4 11:27:11 EDT 1995) +# * Added apple (Videx card), adm1a, oadm31. +# * Fixed malformed ampex csr. +# * Fixed act4, cyb110; they had old-style prefix padding left in. +# * Changed mandatory to advisory padding in many entries. +# * Replaced HP entries up to hpsub with purpose-built ones. +# * Blank rmir/smir/rmdc/smdc capabilities removed. +# * Small fixes merged in from SCO entries for lpr, fos, tvi910+, tvi924. +# 9.4.8 (Fri Apr 7 09:36:34 EDT 1995): +# * Replaced the Ann Arbor entries with SCO's, the init strings are +# more efficient (but the entries otherwise identical). +# * Added dg211 from Shuford archive. +# * Added synertek, apple-soroc, ibmpc, pc-venix, pc-coherent, xtalk, +# adm42-nl, pc52, gs6300, xerox820, uts30. +# * Pull SCO's padding into vi200 entry. +# * Improved capabilities for tvi4107 and other TeleVideo and Viewpoint +# entries merged in from SCO's descriptions. +# * Fixed old-style prefix padding on zen50, h1500. +# * Moved old superbee entry to superbee-xsb, pulled in new superbee +# entry from SCO's description. +# * Reorganized the special entries. +# * Added lm#0 to cbunix and virtual entries. +# +# 9.5.0 (Mon Apr 10 11:30:00 EDT 1995): +# * Restored cdc456tst. +# * Fixed sb1 entry, SCO erroneously left out the xsb glitch. +# * Added megatek, beacon, microkit. +# * Freeze for ncurses-1.9 release. +# 9.5.1 (Fri Apr 21 12:46:42 EDT 1995): +# * Added historical data for TAB. +# * Comment fixes from David MacKenzie. +# * Added the new BSDI pc3 entry. +# 9.5.2 (Tue Apr 25 17:27:52 EDT 1995) +# * A change in the tic -C logic now ensures that all entries in +# the termcap translation will fit in < 1024 bytes. +# * Added `bobcat' and `gator' HP consoles and the Nu machine entries +# from GNU termcap file. This merges in all their local information. +# 9.5.3 (Tue Apr 25 22:28:13 EDT 1995) +# * Changed tic -C logic to dump all capabilities used by GNU termcap. +# * Added warnings about entries with long translations (restoring +# all the GNU termcaps pushes a few over the edge). +# 9.5.4 (Wed Apr 26 15:35:09 EDT 1995) +# * Yet another tic change, and a couple of entry tweaks, to reduce the +# number of long (> 1024) termcap translations back to 0. +# +# 9.6.0 (Mon May 1 10:35:54 EDT 1995) +# * Added kf13-kf20 to Linux entry. +# * Regularize Prime terminal names. +# * Historical data on Synertek. +# * Freeze for ncurses-1.9.1. +# 9.6.1 (Sat May 6 02:00:52 EDT 1995): +# * Added true xterm-color entry, renamed djm's pseudo-color entry. +# * Eliminate whitespace in short name fields, this tanks some scripts. +# * Name field changes to shorten some long entries. +# * Termcap translation now automatically generates empty rmir/smir +# when ich1/ich is present (copes with an ancient vi bug). +# * Added `screen' entries from FSF's screen-3.6.2. +# * Added linux-nic and xterm-nic entries. +# 9.6.2 (Sat May 6 17:00:55 EDT 1995): +# * Change linux entry to use smacs=\E[11m and have an explicit acsc, +# eliminating some special-case code in ncurses. +# +# 9.7.0 (Tue May 9 18:03:12 EDT 1995): +# * Added vt320-k3, rsvidtx from the Emacs termcap.dat file. I think +# that captures everything unique from it. +# * Added reorder script generator. +# * Freeze for ncurses 1.9.2 release. +# 9.7.1 (Thu Jun 29 09:35:22 EDT 1995): +# * Added Sean Farley's kspd, flash, rs1 capabilities for linux. +# * Added Olaf Siebert's corrections for adm12. +# * ansi-pc-color now includes the colors and pairs caps, so that +# entries which use it will inherit them automatically. +# * The linux entry can now recognize the center (keypad 5) key. +# * Removed some junk that found its way into Linux acsc. +# +# 9.8.0 (Fri Jul 7 04:46:57 EDT 1995): +# * Add 50% cut mark as a desperate hack to reduce tic's core usage. +# * xterm doesn't try to use application keypad mode any more. +# * Freeze for ncurses-1.9.3 release. +# 9.8.1 (Thu Jul 19 17:02:12 EDT 1995): +# * Added corrected sun entry from vendor. +# * Added csr capability to linux entry. +# * Peter Wemm says the at386 hpa should be \E[%i%p1%dG, not \E[%p1%dG. +# * Added vt102-nsgr to cope with stupid IBM PC `VT100' emulators. +# * Some commented-out caps in long entries come back in, my code +# for computing string-table lengths had a bug in it. +# * pcansi series modified to fit comm-program reality better. +# 9.8.2 (Sat Sep 9 23:35:00 EDT 1995): +# * BSD/OS actually ships the ibmpc3 bold entry as its console. +# * Correct some bad aliases in the pcansi series +# * Added entry for QNX console. +# * Clean up duplicate long names for use with 4.4 library. +# * Change vt100 standout to be normal reverse vide, not bright reverse; +# this makes the Emacs status line look better. +# 9.8.3 (Sun Sep 10 13:07:34 EDT 1995): +# * Added Adam Thompson's VT320 entries, also his dtx-sas and z340. +# * Minor surgery, mostly on name strings, to shorten termcap version. +# +# 9.9.0 (Sat Sep 16 23:03:48 EDT 1995): +# * Added dec-vt100 for use with the EWAN emulator. +# * Added kmous to xterm for use with xterm's mouse-tracking facility. +# * Freeze for 1.9.5 alpha release. +# 9.9.1 (Wed Sep 20 13:46:09 EDT 1995): +# * Changed xterm lines to 24, the X11R6 default. +# 9.9.2 (Sat Sep 23 21:29:21 EDT 1995): +# * Added 7 newly discovered, undocumented acsc characters to linux +# entry (the pryz{|} characters). +# * ncurses no longer steals A_PROTECT. Simplify linux sgr accordingly. +# * Correct two typos in the xterm entries introduced in 9.9.1. +# * I finally figured out how to translate ko capabilities. Done. +# * Added tvi921 entries from Tim Theisen. +# * Cleanup: dgd211 -> dg211, adm42-nl -> adm42-nsl. +# * Removed mystery tec entry, it was neither interesting nor useful. +# * shortened altos3, qvt203, tvi910+, tvi92D, tvi921-g, tvi955, vi200-f, +# vi300-ss, att505-24, contel301, dm3045, f200vi, pe7000c, vc303a, +# trs200, wind26, wind40, wind50, cdc456tst, dku7003, f110, dg211, +# by making them relative to use capabilities +# * Added cuf1=^L to tvi925 from deleted variant tvi925a. +# * fixed cup in adm22 entry and parametrized strings in vt320-k3. +# * added it#8 to entries that used to have :pt: -- tvi912, vi200, +# ampex80, +# * Translate all home=\E[;H capabilities to home=\E[H, they're +# equivalent. +# * Translate \E[0m -> \E[m in [rs]mso, [rs]mul, and init strings of +# vt100 and ANSI-like terminals. +# 9.9.3 (Tue Sep 26 20:11:15 EDT 1995): +# * Added it#8 and ht=\t to *all* entries with :pt:; the ncurses tic +# does this now, too. +# * fviewpoint is gone, it duplicated screwpoint. +# * Added hp2627, graphos, graphos-30, hpex, ibmega, ibm8514, ibm8514-c, +# ibmvga, ibmvga-c, minix, mm340, mt4520-rv, screen2, screen3, +# versaterm, vi500, vsc, vt131, vt340, vt400 entries from UW. +# The UW vi50 replaces the old one, which becomes vi50adm, +# * No more embedded commas in name fields. +# +# 9.10.0 (Wed Oct 4 15:39:37 EDT 1995): +# * XENIX forms characters in fos, trs16, scoansi become acsc strings, +# * Introduced klone+* entries for describing Intel-console behavior. +# * Linux kbs is default-mapped to delete for some brain-dead reason. +# * -nsl -> -ns. The -pp syntax is obsolete. +# * Eliminate [A-Z]* primaries in accordance with SVr4 terminfo docs. +# * Make xterm entry do application-keypad mode again. I got complaints +# that it was messing up someone's 3270 emulator. +# * Added some longname fields in order to avoid warning messages from +# older tic implementations. +# * According to ctlseqs.ms, xterm has a full vt100 graphics set. Use +# it! (This gives us pi, greater than, less than, and a few more.) +# * Freeze for ncurses-1.9.6 release. +# 9.10.1 (Sat Oct 21 22:18:09 EDT 1995): +# * Add xon to a number of console entries, they're memory-mapped and +# don't need padding. +# * Correct the use dependencies in the ansi series. +# * Hand-translate more XENIX capabilities. +# * Added hpterm entry for HP's X terminal emulator. +# * Added aixterm entries. +# * Shortened four names so everything fits in 14 chars. +# +# 9.11.0 (Thu Nov 2 17:29:35 EST 1995): +# * Added ibcs2 entry and info on iBCS2 standard. +# * Corrected hpa/vpa in linux entry. They still fail the worm test. +# * We can handle the HP meml/memu capability now. +# * Added smacs to klone entries, just as documentation. +# * Corrected ansi.sys and cit-500 entries. +# * Added z39, vt320-k311, v220c, and avatar entries. +# * Make pcansi use the ansi.sys invis capability. +# * Added DIP switch descriptions for vt100, adm31, tvi910, tvi920c, +# tvi925, tvi950, dt80, ncr7900i, h19. +# * X3.64 has been withdrawn, change some references. +# * Removed function keys from ansi-m entry. +# * Corrected ansi.sys entry. +# * Freeze for ncurses-1.9.7 release. +# 9.11.1 (Tue Nov 6 18:18:38 EST 1995): +# * Added rmam/smam capabilities to many entries based on init strings. +# * Added correct hpa/vpa to linux. +# * Reduced several entries relative to vt52. +# 9.11.2 (Tue Nov 7 00:21:06 EST 1995): +# * Exiled some utterly unidentifiable custom and homebrew types to the +# UFO file; also, obsolete small-screen hardware; also, entries which +# look flat-out incorrect, garbled, or redundant. These include the +# following entries: carlock, cdc456tst, microkit, qdss, ramtek, tec, +# tec400, tec500, ubell, wind, wind16, wind40, wind50, plasma, agile, +# apple, bch, daleblit, nucterm, ttywilliams, nuterminal, nu24, bnu, +# fnu, nunix-30, nunix-61, exidy, ex3000, sexidy, pc52, sanyo55, +# yterm10, yterm11, yterm10nat, aed, aed-ucb, compucolor, compucolor2, +# vic20, dg1, act5s, netx, smartvid, smarterm, sol, sol2, dt200, +# trs80, trs100, trs200, trs600, xitex, rsvidtx, vid, att2300-x40, +# att2350-x40, att4410-nfk, att5410-ns, otty5410, att5425-nl-w, +# tty5425-fk, tty5425-w-fk, cita, c108-na, c108-rv-na, c100-rv-na, +# c108-na-acs, c108-rv-na-acs, ims950-ns, infotonKAS, ncr7900i-na, +# regent60na, scanset-n, tvi921-g, tvi925n, tvi925vbn, tvi925vb, +# vc404-na, vc404-s-na, vt420nam, vt420f-nam, vt420pc-nam, vt510nam, +# vt510pc-nam, vt520nam, vt525nam, xterm25, xterm50, xterm65, xterms. +# * Corrected pcvt25h as suggested by Brian C. Grayson +# <bgrayson@pine.ece.utexas.edu>. +# 9.11.3 (Thu Nov 9 12:14:40 EST 1995): +# * Added kspd=\E[P, kcbt=\E[Z, to linux entry, changed kbs back to ^H. +# * Added kent=\EOM to xterm entry. +# +# 9.11.4 (Fri Nov 10 08:31:35 EST 1995): +# * Corrected gigi entry. +# * Restored cuf/cud1 to xterm, their apparent bugginess was due to +# bad hpa/vpa capabilities. +# * Corrected flash strings to have a uniform delay of .2 sec. No +# more speed-dependent NUL-padding! +# * terminfo capabilities in comments bracketed with <>. +# 9.11.5 (Fri Nov 10 15:35:02 EST 1995): +# * Replaced pcvt with the 3.31 pcvt entries. +# * Freeze for 1.9.7a. +# 9.11.6 (Mon Nov 13 10:20:24 EST 1995): +# * Added emu entry from the X11R6 contrib tape sources. +# +# 9.12.0 (Wed Nov 29 04:22:25 EST 1995): +# * Improved iris-ansi and sun entries. +# * More flash string improvements. +# * Corrected wy160 & wy160 as suggested by Robert Dunn +# * Added dim to at386. +# * Reconciled pc3 and ibmpc3 with the BSDI termcap file. Keith says +# he's ready to start using the termcap generated from this one. +# * Added vt102-w, vt220-w, xterm-bold, wyse-vp, wy75ap, att4424m, +# ln03, lno3-w, h19-g, z29a*, qdss. Made vt200 an alias of vt220. +# * Improved hpterm, apollo consoles, fos, qvt101, tvi924. tvi925, +# att610, att620, att630, +# * Changed hazeltine name prefix from h to hz. +# * Sent t500 to the UFI file. +# * I think we've sucked all the juice out of BSDI's termcap file now. +# * Freeze for ncurses 1.9.8 release +# 9.12.1 (Thu Nov 30 03:14:06 EST 1995) +# * Unfreeze, linux kbs needed to be fixed. +# * Tim Theisen pinned down a bug in the DMD firmware. +# 9.12.2 (Thu Nov 30 19:08:55 EST 1995): +# * Fixes to ansi and klone capabilities (thank you, Aaron Ucko). +# (The broken ones had been shadowed by sgr.) +# 9.12.3 (Thu Dec 7 17:47:22 EST 1995): +# * Added documentation on ECMA-48 standard. +# * New Amiga entry. +# 9.12.4 (Thu Dec 14 04:16:39 EST 1995): +# * More ECMA-48 stuff +# * Corrected typo in minix entry, added pc-minix. +# * Corrected khome/kend in xterm (thank you again, Aaron Ucko). +# * Added rxvt entry. +# * Added 1.3.x color-change capabilities to linux entry. +# 9.12.5 (Tue Dec 19 00:22:10 EST 1995): +# * Corrected rxvt entry khome/kend. +# * Corrected linux color change capabilities. +# * NeXT entries from Dave Wetzel. +# * Cleaned up if and rf file names (all in /usr/share now). +# * Changed linux op capability to avoid screwing up a background color +# pair set by setterm. +# 9.12.6 (Wed Feb 7 16:14:35 EST 1996): +# * Added xterm-sun. +# 9.12.7 (Fri Feb 9 13:27:35 EST 1996): +# * Added visa50. +# +# 9.13.0 (Sun Mar 10 00:13:08 EST 1996): +# * Another sweep through the Shuford archive looking for new info. +# * Added dg100 alias to dg6053 based on a comp.terminals posting. +# * Added st52 from Per Persson. +# * Added eterm from the GNU Emacs 19.30 distribution. +# * Freeze for 1.9.9. +# 9.13.1 (Fri Mar 29 14:06:46 EST 1996): +# * FreeBSD console entries from Andrew Chernov. +# * Removed duplicate Atari st52 name. +# 9.13.2 (Tue May 7 16:10:06 EDT 1996) +# * xterm doesn't actually have ACS_BLOCK. +# * Change klone+color setf/setb to simpler forms that can be +# translated into termcap. +# * Added xterm1. +# * Removed mechanically-generated junk capabilities from cons* entries. +# * Added color support to bsdos. +# 9.13.3 (Thu May 9 10:35:51 EDT 1996): +# * Added Wyse 520 entries from Wm. Randolph Franklin <wrf@ecse.rpi.edu>. +# * Created ecma+color, linux can use it. Also added ech to linux. +# * Teach xterm about more keys. Add Thomas Dickey's 3.1.2E updates. +# * Add descriptions to FreeBSD console entries. Also shorten +# some aliases to <= 14 chars for portability. +# * Added x68k console +# * Added OTbs to several VT-series entries. +# 9.13.4 (Wed May 22 10:54:09 EDT 1996): +# * screen entry update for 3.7.1 from Michael Alan Dorman. +# 9.13.5 (Wed Jun 5 11:22:41 EDT 1996): +# * kterm correction due to Kenji Rikitake. +# * ACS correction in vt320-kll due to Phillippe De Muyter. +# 9.13.6 (Sun Jun 16 15:01:07 EDT 1996): +# * Sun console entry correction from J.T. Conklin. +# * Changed all DEC VT300 and up terminals to use VT300 tab set +# 9.13.7 (Mon Jul 8 20:14:32 EDT 1996): +# * Added smul to linux entry (we never noticed it was missing +# because of sgr!). +# * Added rmln to hp+labels (deduced from other HP entries). +# * Added vt100 acsc capability to vt220, vt340, vt400, d800, dt80-sas, +# pro350, att7300, 5420_2, att4418, att4424, att4426, att505, vt320-k3. +# * Corrected vt220 acsc. +# * The klone+sgr and klone+sgr-dumb entries now use klone+acs; +# this corresponds to reality and helps prevent some tic warnings. +# * Added sgr0 to c101, pcix, vt100-nav, screen2, oldsun, next, altos2, +# hpgeneric, hpansi, hpsub, hp236, hp700-wy, bobcat, dku7003, adm11, +# adm12, adm20, adm21, adm22, adm31, adm36, adm42, pt100, pt200, +# qvt101, tvi910, tvi921, tvi92B, tvi925, tvi950, tvi970, wy30-mc, +# wy50-mc, wy100, wyse-vp, ampex232, regent100, viewpoint, vp90, +# adds980, cit101, cit500, contel300, cs10, dm80, falco, falco-p, +# f1720a, go140, sb1, superbeeic, microb, ibm8512, kt7, ergo4000, +# owl, uts30, dmterm, dt100, dt100, dt110, appleII, apple-videx, +# lisa, trsII, atari, st52, pc-coherent, basis, m2-man, bg2.0, bg1.25, +# dw3, ln03, ims-ansi, graphos, t16, zen30, xtalk, simterm, d800, +# ifmr, v3220, wy100q, tandem653, ibmaed. +# * Added DWK terminal description. +# 9.13.8 (Wed Jul 10 11:45:21 EDT 1996): +# * Many entries now have highlights inherited from adm+sgr. +# * xterm entry now corresponds to XFree86 3.1.2E, with color. +# * xtitle and xtitle-twm enable access to the X status line. +# * Added linux-1.3.6 color palette caps in conventional format. +# * Added adm1178 terminal. +# * Move fos and apollo terminals to obsolete category. +# * Aha! The BRL terminals file told us what the Iris extensions mean. +# * Added, from the BRL termcap file: rt6221, rt6221-w, northstar, +# commodore, cdc721-esc, excel62, osexec. Replaced from the BRL file: +# cit500, adm11. +# 9.13.9 (Mon Jul 15 00:32:51 EDT 1996): +# * Added, from the BRL termcap file: cdc721, cdc721l, cdc752, cdc756, +# aws, awsc, zentec8001, modgraph48, rca vp3301/vp3501, ex155. +# * Corrected, from BRL termcap file: vi50. +# * Better rxvt entry & corrected xterm entries from Thomas Dickey. +# 9.13.10 (Mon Jul 15 12:20:13 EDT 1996): +# * Added from BRL: cit101e & variants, hmod1, vi200, ansi77, att5620-1, +# att5620-s, att5620-s, dg210, aas1901, hz1520, hp9845, osborne +# (old osborne moved to osborne-w), tvi970-vb, tvi970-2p, tvi925-hi, +# tek4105brl, tek4106brl, tek4107brl,tek4109brl, hazel, aepro, +# apple40p, apple80p, appleIIgs, apple2e, apple2e-p, apple-ae. +# * Paired-attribute fixes to various terminals. +# * Sun entry corrections from A. Lukyanov & Gert-Jan Vons. +# * xterm entry corrections from Thomas Dickey. +# 9.13.11 (Tue Jul 30 16:42:58 EDT 1996): +# * Added t916 entry, translated from a termcap in SCO's support area. +# * New qnx entry from Michael Hunter. +# 9.13.12 (Mon Aug 5 14:31:11 EDT 1996): +# * Added hpex2 from Ville Sulko. +# * Fixed a bug that ran the qnx and pcvtXX together. +# 9.13.13 (Fri Aug 9 01:16:17 EDT 1996): +# * Added dtterm entry from Solaris CDE. +# 9.13.14 (Tue Sep 10 15:31:56 EDT 1996): +# * corrected pairs#8 typo in dtterm entry. +# * added tvi9065. +# 9.13.15 (Sun Sep 15 02:47:05 EDT 1996): +# * updated xterm entry to cover 3.1.2E's new features. +# 9.13.16 (Tue Sep 24 12:47:43 EDT 1996): +# * Added new minix entry +# * Removed aliases of the form ^[0-9]* for obsolete terminals. +# * Commented out linux-old, nobody's using pre-1.2 kernels now. +# 9.13.17 (Fri Sep 27 13:25:38 EDT 1996): +# * Added Prism entries and kt7ix. +# * Caution notes about EWAN and tabset files. +# * Changed /usr/lib/tabset -> /usr/share/tabset. +# * Added acsc/rmacs/smacs to vt52. +# 9.13.18 (Mon Oct 28 13:24:59 EST 1996): +# * Merged in Thomas Dickey's reorganization of the xterm entries; +# added technical corrections to avoid warning messages. +# 9.13.19 (Sat Nov 16 16:05:49 EST 1996): +# * Added rmso=\E[27m in Linux entry. +# * Added koi8-r support for Linux console. +# * Replace xterm entries with canonical ones from XFree86 3.2. +# 9.13.20 (Sun Nov 17 23:02:51 EST 1996): +# * Added color_xterm from Jacob Mandelson +# 9.13.21 (Mon Nov 18 12:43:42 EST 1996): +# * Back off the xterm entry to use r6 as a base. +# 9.13.22 (Sat Nov 30 11:51:31 EST 1996): +# * Added dec-vt220 at Adrian Garside's request. +# +#-(original-changelog-1996/12/29-to-1998/02/28-by-TD)--------------------------- +# +# 10.1.0 (Sun Dec 29 02:36:31 EST 1996): withdrawn +# * Minor corrections to xterm entries. +# * Replaced EWAN telnet entry. +# * Dropped the reorder script generator. It was a fossil. +# 9.13.23 (Fri Feb 21 16:36:06 EST 1997): +# * Replaced minitel-2 entry. +# * Added MGR, ansi-nt. +# 9.13.24 (Sun Feb 23 20:55:23 EST 1997): +# * Thorsten Lockert added termcap `bs' to a lot of types, working from +# the 4.4BSD Lite2 file. +# +# 10.1.1 (Sat May 3 21:41:27 EDT 1997): +# * Use setaf/setab consistently with SVr4. +# * Remove ech, el1 from cons25w, they do not work in FreeBSD 2.1.5 +# 10.1.2 (Sat May 24 21:10:57 EDT 1997) +# * update xterm-xf86-v32 to match XFree86 3.2A (changes F1-F4) +# * add xterm-16color, for XFree86 3.3 +# 10.1.3 (Sat May 31 12:21:05 EDT 1997) +# * correct typo in emu +# * correct typo in vt102-w (Robert Wuest) +# * make new entry xterm-xf86-v33, restored xterm-xf86-v32. +# 10.1.4 (Sun Jun 15 08:29:05 EDT 1997) +# * remove ech capability from rxvt (it does the wrong thing) +# 10.1.5 (Sat Jun 28 21:34:36 EDT 1997) +# * remove spurious newlines from several entries (hp+color, wy50, +# wy350, wy370-nk, wy99gt-tek, wy370-tek, ibm3161, tek4205, ctrm, +# gs6300) +# 10.1.6 (Sat Jul 5 15:08:16 EDT 1997) +# * correct rmso capability of wy50-mc +# 10.1.7 (Sat Jul 12 20:05:55 EDT 1997) +# * add cbt to xterm-xf86-v32 +# * disentangle some entries from 'xterm', preferring xterm-r6 in case +# 'xterm' is derived from xterm-xf86-v32, which implements ech and +# other capabilities not in xterm-r6. +# * remove alternate character set from kterm entry. +# 10.1.8 (Sat Aug 2 18:43:18 EDT 1997) +# * correct acsc entries for ACS_LANTERN, which is 'i', not 'I'. +# 10.1.9 (Sat Aug 23 17:54:38 EDT 1997) +# * add xterm-8bit entry. +# 10.1.10 (Sat Oct 4 18:17:13 EDT 1997) +# * repair several places where early version of tic replaced \, with \\\, +# * make acsc entries canonical form (sorted, uniq). +# * modify acsc entries for linux, linux-koi8 +# * new rxvt entry, from corrected copy of distribution in rxvt 2.21b +# * add color, mouse support to kterm. +# 10.1.11 (Sat Oct 11 14:57:10 EDT 1997) +# * correct wy120 smxon/tbc capabilities which were stuck together. +# 10.1.12 (Sat Oct 18 17:38:41 EDT 1997) +# * add entry for xterm-xf86-v39t +# 10.1.13 (Sat Nov 8 13:43:33 EST 1997) +# * add u8,u9 to sun-il description +# 10.1.14 (Sat Nov 22 19:59:03 EST 1997) +# * add vt220-js, pilot, rbcomm, datapoint entries from esr's 27-jun-97 +# version. +# * add hds200 description (Walter Skorski) +# * add EMX 0.9b descriptions +# * correct rmso/smso capabilities in wy30-mc and wy50-mc (Daniel Weaver) +# * rename xhpterm back to hpterm. +# 10.1.15 (Sat Nov 29 19:21:59 EST 1997) +# * change initc in linux-c-nc to use 0..1000 range. +# 10.1.16 (Sat Dec 13 19:41:59 EST 1997) +# * remove hpa/vpa from rxvt, which implements them incorrectly. +# * add sgr0 for rxvt. +# * remove bogus smacs/rmacs from EMX descriptions. +# 10.1.17 (Sat Dec 20 17:54:10 EST 1997) +# * revised entry for att7300 +# 10.1.18 (Sat Jan 3 17:58:49 EST 1998) +# * use \0 rather than \200. +# * rename rxvt-color to rxvt to match rxvt 2.4.5 distribution. +# 10.1.19 (Sat Jan 17 14:24:57 EST 1998) +# * change xterm (xterm-xf86-v40), xterm-8bit rs1 to use hard reset. +# * rename xterm-xf86-v39t to xterm-xf86-v40 +# * remove bold/underline from sun console entries since they're not +# implemented. +# 10.1.20 (Sat Jan 24 11:02:51 EST 1998) +# * add beterm entry (Fred Fish) +# * add irix-color/xwsh entry. +# * turn ncv off for linux. +# 10.1.21 (Sat Jan 31 17:39:16 EST 1998) +# * set ncv for FreeBSD console (treat colors with reverse specially). +# * remove sgr string from qnx based on report by Xiaodan Tang +# 10.1.22 (Wed Feb 11 18:40:12 EST 1998) +# * remove spurious commas from descriptions +# * correct xterm-8bit to match XFree86 3.9Ad F1-F4. +# 10.1.23 (Sat Feb 28 17:48:38 EST 1998) +# * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc, +# apparently based on cp-866). +# +#-(replaced-changelog-1998/02/28-by-ESR)---------------------------------------- +# +# 9.13.23 (Fri Feb 21 16:36:06 EST 1997): +# * Replaced minitel-2 entry. +# * Added MGR, ansi-nt. +# * Minor corrections to xterm entries. +# * Replaced EWAN telnet entry. +# * Dropped the reorder script generator. It was a fossil. +# 9.13.24 (Sun Feb 23 20:55:23 EST 1997): +# * Thorsten Lockert added termcap `bs' to a lot of types, working from +# the 4.4BSD Lite2 file. +# 9.13.25 (Fri Jun 20 12:33:36 EDT 1997): +# * Added Datapoint 8242, pilot, ansi_psx, rbcomm, vt220js. +# * Updated iris-ansi; corrected vt102-w. +# * Switch base xterm entry to 3.3 level. +# 9.13.26 (Mon Jun 30 22:45:45 EDT 1997) +# * Added basic4. +# * Removed rmir/smir from tv92B. +# +# 10.2.0 (Sat Feb 28 12:47:36 EST 1998): +# * add hds200 description (Walter Skorski) +# * add beterm entry (Fred Fish) +# * add Thomas Dickey's xterm-xf86-v40, xterm-8bit, xterm-16color, +# iris-color entries. +# * add emx entries. +# * Replaced unixpc entry with Benjamin Sittler's corrected version. +# * Replaced xterm/rxvt/emu/syscons entries with Thomas Dickey's +# versions. +# * remove sgr string from qnx based on report by Xiaodan Tang +# * Added u8/u9, removed rmul/smul from sun-il. +# * 4.2 tic displays \0 rather than \200. +# * add linux-koi8r to replace linux-koi8 (which uses a corrupt acsc, +# apparently based on cp-866). +# * Merged in Pavel Roskin's acsc for linux-koi8 +# * Corrected some erroneous \\'s to \. +# * 4.2 ncurses has been changed to use setaf/setab, consistent w/SysV. +# * II -> ii in pcvtXX, screen, xterm. +# * Removed \n chars following ANSI escapes in sgr & friends. +# * Updated Wyse entries. +# * h19 corrections from Tim Pierce. +# * Noted that the dm2500 has both ich and smir. +# * added pccons for the Alpha under OSF/1. +# * Added Sony NEWS workstation entries and cit101e-rv. +# * Reverted `amiga'; to Kent Polk's version, as I'm told +# the Verkuil entry messes up with Amiga Telnet. +# 10.2.1 (Sun Mar 8 18:32:04 EST 1998): +# * Corrected attributions in 10.2.0 release notes. +# * Scanned the Shuford archive for new terminfos and information. +# * Removed sgr from qnx entry (Thomas Dickey). +# * Added entries for ICL and Kokusai Data Systems terminals. +# * Incorporated NCR terminfos from the Boundless Technology FTP site. +# * Incorporated att700 from the Boundless Technology FTP site. +# * Miscellaneous contact-address and Web-page updates. +# +#-(changelog-beginning-ncurses-4.2)--------------------------------------------- +# +# 1998/5/9 +# * add nxterm and xterm-color terminfo description (request by Cristian +# Gafton <gafton@redhat.com>). +# * modify rxvt terminfo description to clear alternate screen before +# switching back to normal screen, for compatibility with applications +# which use xterm (reported by Manoj Kasichainula <manojk@io.com>). +# * modify linux terminfo description to reset color palette (reported +# by Telford Tendys <telford@eng.uts.edu.au>). +# +# 1998/7/4 +# * merge changes from current XFree86 xterm terminfo descriptions. +# +# 1998/7/25 +# * Added minitel1 entries from Alexander Montaron. +# * Added qnxt2 from Federico Bianchi. +# * Added arm100 terminfo entries from Dave Millen. +# +# 1998/8/6 +# * Added ncsa telnet entries from Francesco Potorti +# +# 1998/8/15 +# * modify ncsa telnet entry to reflect color, other capabilities based on +# examination of the source code - T.Dickey. +# +# 1998/8/22 +# * Corrected some erroneous \\'s to \ (eterm, osborne) - TD. +# +# 1998/8/29 +# * Added Francesco Potorti's tuned Wyse 99 entries. +# * dtterm enacs correction from Alexander V. Lukyanov. +# * Add ncsa-ns, ncsa-m-ns and ncsa-m entries from esr version. +# * correct a typo in icl6404 entry. +# * add xtermm and xtermc +# +# 1998/9/26 +# * format most %'char' sequences to %{number} +# * adapt IBM AIX 3.2.5 terminfo - T.Dickey +# * merge Data General terminfo from Hasufin <hasufin@vidnet.net> - TD +# +# 1998/10/10 +# * update xterm-xfree86 to current (xterm patch #84), for is2/rs2 changes - TD +# * correct initialization string in xterm-r5, add misc other features +# to correspond with xterm patch #84 - TD +# +# 1998/12/19 +# * update xterm-xfree86 to current (xterm patch #90), smcur/rmcur changes - TD +# * add Mathew Vernon's mach console entries +# * corrections for ncsa function-keys (report by Larry Virden) +# +# 1998/12/19 +# * change linux to use ncv#2, since underline does not work with color - TD +# +# 1999/1/9 +# * add kbt to iris-ansi, document other shift/control functionkeys - TD +# * correct iris-ansi and iris-ansi-ap with respect to normal vs keypad +# application modes, change kent to use the correct keypad code - TD +# +# 1999/1/10 +# * add entry for Tera Term - TD +# +# 1999/1/23 +# * minor improvements for teraterm entry - TD +# * rename several entries used by BSDI: bsdos to bsdos-pc-nobold, +# and bsdos-bold to bsdos-pc (Jeffrey C Honig) +# +# 1999/2/20 +# * resolve ambiguity of kend/kll/kslt and khome/kfnd/kich1 strings in +# xterm and ncsa entries by removing the unneeded ones. Note that +# some entries will return kend & khome versus kslt and kfnd, for +# PC-style keyboards versus strict vt220 compatibility - TD +# +# 1999/3/13 +# * adjust xterm-xfree86 khome/kend to match default PC-style keyboard +# tables - TD +# * add 'crt' entry - TD +# * correct typos in 'linux-c' entry - TD +# +# 1999/3/14 +# * update entries for BSD/OS console to use klone+sgr and klone+color +# (Jeffrey C Honig) +# +# 1999/3/27 +# * adjust xterm-xfree86 miscellaneous keypad keys, as per xterm patch #94 - TD. +# +# 1999/4/10 +# * add linux-lat, from RedHat patches to ncurses 4.2 +# +# 1999/4/17 +# * add complete set of default function-key definitions for scoansi - TD. +# +# 1999/7/3 +# * add cnorm, cvvis for Linux 2.2 kernels +# +# 1999/7/24 +# * add kmous to xterm-r5 -TD +# * correct entries xterm+sl and xterm+sl-twm, which were missing the +# parent "use" clause -TD +# +# 1999/7/31 +# * corrected cnorm, added el1 in 'screen' description -TD +# +# 1999/8/14 +# * add ms-vt100 -TD +# +# 1999/8/21 +# * corrections to beterm entry -TD +# +# 1999/8/28 +# * add cygwin entry -TD +# +# 1999/9/4 +# * minor corrections for beterm entry -TD +# +# 1999/9/18 +# * add acsc string to HP 70092 terminfo entry -Joerg Wunsch +# +# 1999/9/25 +# * add amiga-8bit entry +# * add console entries from NetBSD: ofcons, wsvt25, wsvt25m, rcons, +# rcons-color, based on +# ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-current/src/share/termcap/termcap.src +# * add alias for iris-ansi-net +# +# 1999/10/2 +# * corrected scoansi entry's acsc, some function keys, add color -TD +# +# 1999/10/23 +# * add cnorm, cvvis to cons25w, and modify ncv to add 'dim' -TD +# * reorder ncsa entries to make ncsa-vt220 use the alternate function +# key mapping, leaving Potorti's entries more like he named them -TD +# * remove enter/exit am-mode from cygwin -TD +# +# 1999/10/30 +# * correct typos in several entries (missing '[' from CSI): +# mgr-sun, ncsa-m, vt320-k3, att505, avt-ns, as well as smir/rmir +# strings for avt-ns -TD +# * add 'dim' to ncv mask for linux (report by Klaus Weide). +# +# 1999/11/27 +# * correct kf1-kf4 in xterm-r6 which were vt100-style PF1-PF4 -TD +# * add hts to xterm-r6, and u6-u9 to xterm-r5 -TD +# * add xterm-88color and xterm-256color -TD +# +# 1999/12/4 +# * add "obsolete" termcap strings -TD +# * add kvt and gnome entries -TD +# +# 1999/12/11 +# * correct cup string for regent100 -TD +# +# 2000/1/1 +# * update mach, add mach-color based on Debian diffs for ncurses 5.0 -TD +# * add entries for xterm-hp, xterm-vt220, xterm-vt52 and xterm-noapp -TD +# * change OTrs capabilities to rs2 -TD +# * add obsolete and extended capabilities to 'screen' -TD +# +# 2000/1/5 +# * remove kf0 from rxvt, vt520, vt525 and ibm5151 since it conflicts +# with kf10 -TD +# * updated xterm-xf86-v40, making kdch1 correspond to vt220 'Remove', +# and adding kcbt -TD +# +# 2000/1/12 +# * remove incorrect khome/kend from xterm-xf86-v333, which was based on +# nonstandard resource settings -TD +# +# 2000/2/26 +# * minor fixes for xterm-*, based on Debian #58530 -TD +# +# 2000/3/4 +# * add several terminal types from esr's "11.0", as well as comments. +# bq300*, dku7102-old, dku7202, hft, lft, pcmw, pmcons, tws*, vip*, +# vt220-8bit, vt220-old, wy85-8bit +# +# 2000/3/18 +# * add several terminal types from esr's "11.0.1" (ansi-*). +# * update OTxx capabilities for changes on 2000/3/4. +# * revert part of vt220 change (request by Todd C Miller for OpenBSD) +# +# 2000/3/26 +# * move screen's AX extension to ecma+color, modify several entries to +# use that, adjusting ncv as needed -TD +# +# 2000/4/8 +# * add bsdos-pc-m, bsdos-pc-mono (Jeffrey C Honig) +# * correct spelling error in entry name: bq300-rv was given as bg300-rv +# in esr's version. +# +# 2000/4/15 +# * add cud, ech, etc., to beterm based on feedback from Rico Tudor -TD +# * correct color definition for ibm3164, make minor changes to other +# IBM terminal definitions based on recent terminfo descriptions -TD +# +# 2000/4/22 +# * 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 +# +# 2000/5/13 +# * remove ncv from xterm-16color, xterm-256color +# +# 2000/6/10 +# * add kmous capability to linux to use Joerg Schoen's gpm patch. +# +# 2000/7/1 +# * add Eterm (Michael Jennings) +# +# 2000-07-18 +# * add amiga-vnc entry. +# +# 2000-08-12 +# * correct description of Top Gun Telnet. +# * add kterm-color +# +# 2000-08-26 +# * add qansi* entries from QNX ftp site. +# +# 2000-09-16 +# * add Matrix Orbital entries by Eric Z. Ayers). +# * add xterm-basic, xterm-sco entries, update related entries to XFree86 +# 4.0.1c -TD +# +# 2000-09-17 +# * add S0, E0 extensions to screen's entry -TD +# +# 2000-09-23 +# * several corrections based on tic's new parameter-checking code -TD +# * modify xterm-r6 and similar rs2 sequences which had \E7...\E8 +# bracketing sequences that reset video attributes (\E8 would restore +# them) -TD +# +# 2000-11-11 +# * rename cygwin to cygwinB19, adapt newer entry from Earnie Boyd -TD +# +# 2000-12-16 +# * improved scoansi, based on SCO man-page, and testing console, +# scoterm with tack -TD +# +# 2001-01-27 +# * modify kterm to use acsc via SCS controls. +# +# 2001-02-10 +# * screen 3.9.8 allows xterm mouse controls to pass-through +# +# 2001-03-11 +# * remove spurious "%|" from some xterm entries. +# +# 2001-03-31 +# * modify 'screen' khome/kend to match screen 3.09.08 +# * add examples of 'screen' customization (screen.xterm-xfree86, +# screen.xterm-r6, screen.teraterm) -TD +# +# 2001-04-14 +# * correct definitions of shifted editing keys for xterm-xfree86 -TD +# * add "Apple_Terminal" entries -Benjamin Sittler +# * remove time-delays from "Apple_Terminal" entries -TD +# * make sgr entries time-delays consistent with individual caps -TD +# +# 2001-05-05 +# * corrected/updated screen.xterm-xfree86 +# +# 2001-05-19 +# * ELKS descriptions, from Federico Bianchi +# * add u6 (CSR) to Eterm (Michael Jennings). +# +# 2001-07-21 +# * renamed "Apple_Terminal" entries to "nsterm" to work with Solaris's +# tic which handles names no longer than 14 characters. Add +# corresponding descriptions for the Darwin PowerPC console named +# "xnuppc" -Benjamin Sittler +# +# 2001-09-01 +# * change kbs in mach entries to ^? (Marcus Brinkmann). +# +# 2001-11-17 +# * add "putty" entry -TD +# * updated "Apple_Terminal" entries -Benjamin Sittler +# +# 2001-11-24 +# * add ms-vt100-color entry -TD +# * add "konsole" entries -TD +# +# 2001-12-08 +# * update gnome entry to Redhat 7.2 -TD +# +# 2002-05-25 +# * add kf13-kf48 strings to cons25w -TD +# * add pcvt25-color entry -TD +# * changed a few /usr/lib/tabset -> /usr/share/tabset. +# * improve some features of scoansi entry based on SCO's version -TD +# * add scoansi-new entry corresponding to OpenServer 5.0.6 +# +# 2002-06-15 +# * add kcbt to screen entry -TD +# +# 2002-06-22 +# * add rxvt-16color, ibm+16color, mvterm entries -TD +# +# 2002-09-28 +# * split out linux-basic entry, making linux-c inherit from that, and +# in turn linux (with cnorm, etc) inherit from linux-c-nc to reflect +# the history of this console type -TD +# * scaled the linux-c terminfo entry to match linux-c-nc, i.e., the +# r/g/b parameters of initc are in the range 0 to 1000 -TD +# +# 2002-10-05 +# * minor fix for scale-factor of linux-c and linux-c-nc -TD +# +# 2002-11-09 +# * split-out vt100+keypad and vt220+keypad, fix interchanged ka3/kb2 +# in the latter -TD +# +# 2002-11-16 +# * add entries for mterm (mterm, mterm-ansi, decansi) -TD +# * ncr260wy350pp has only 16 color pairs -TD +# * add sun-type4 from NetBSD -TD +# * update xterm-xfree86 to current (xterm patch #170) -TD +# * add screen-bce, screen-s entries -TD +# * add xterm-1002, xterm-1003 entries -TD +# +# 2003-01-11 +# * update homepage for Top Gun Telnet/SSH +# +# 2003-01-25 +# * reduce duplication in emx entries, added emx-base -TD +# +# 2003-05-24 +# * corrected acs for screen.teraterm -TD +# * add tkterm entry -TD +# +# 2003-07-15 +# * cygwin changes from Charles Wilson: +# misc/terminfo.src (nxterm|xterm-color): make xterm-color +# primary instead of nxterm, to match XFree86's xterm.terminfo +# usage and to prevent circular links. +# (rxvt): add additional codes from rxvt.org. +# (rxvt-color): new alias +# (rxvt-xpm): new alias +# (rxvt-cygwin): like rxvt, but with special acsc codes. +# (rxvt-cygwin-native): ditto. rxvt may be run under XWindows, or +# with a "native" MSWin GUI. Each takes different acsc codes, +# which are both different from the "normal" rxvt's acsc. +# (cygwin): cygwin-in-cmd.exe window. Lots of fixes. +# (cygwinDBG): ditto. +# +# 2003-09-27 +# * update gnome terminal entries -TD +# +# 2003-10-04 +# * add entries for djgpp 2.03 and 2.04 -TD +# +# 2003-10-25 +# * add alias for vtnt -TD +# * update xterm-xfree86 for XFree86 4.4 -TD +# +# 2003-11-22 +# * add linux-vt (Andrey V Lukyanov) +# +# 2003-12-20 +# * add screen.linux -TD +# +# 2004-01-10 +# * revised/improved entries for tvi912b, tvi920b (Benjamin Sittler) +# +# 2004-01-17 +# * add OpenNT/Interix/SFU entries (Federico Bianchi) +# * add vt100+ and vt-utf8 entries -TD +# * add uwin entry -TD +# +# 2004-03-27 +# * add sgr strings to several common entries lacking them, e.g., +# screen, to make the entries more portable -TD +# * remove cvvis from rxvt entry, since it is the same as cnorm -TD +# * similar fixups for cvvis/cnorm various entries -TD +# +# 2004-05-22 +# * remove 'ncv' from xterm-256color (xterm patch #188) -TD +# +# 2004-06-26 +# * add mlterm -TD +# * add xterm-xf86-v44 -TD +# * modify xterm-new aka xterm-xfree86 to accommodate luit, which relies +# on G1 being used via an ISO-2022 escape sequence (report by +# Juliusz Chroboczek) -TD +# * add 'hurd' entry -TD +# +# 2004-07-03 +# * make xterm-xf86-v43 derived from xterm-xf86-v40 rather than +# xterm-basic -TD +# * align with xterm #192's use of xterm-new -TD +# * update xterm-new and xterm-8bit for cvvis/cnorm strings -TD +# * make xterm-new the default "xterm" -TD +# +# 2004-07-10 +# * minor fixes for emu -TD +# * add emu-220 +# * add rmam/smam to linux (Trevor Van Bremen) +# * change wyse acsc strings to use 'i' map rather than 'I' -TD +# * fixes for avatar0 -TD +# * fixes for vp3a+ -TD +# +# 2004-07-17 +# * add xterm-pc-fkeys -TD +# * review/update gnome and gnome-rh90 entries (prompted by +# Redhat Bugzilla #122815) -TD +# * review/update konsole entries -TD +# * add sgr, correct sgr0 for kterm and mlterm -TD +# * correct tsl string in kterm -TD +# +# 2004-07-24 +# * make ncsa-m rmacs/smacs consistent with sgr -TD +# * add sgr, rc/sc and ech to syscons entries -TD +# * add function-keys to decansi -TD +# * add sgr to mterm-ansi -TD +# * add sgr, civis, cnorm to emu -TD +# * correct/simplify cup in addrinfo -TD +# * corrections for gnome and konsole entries +# (Redhat Bugzilla #122815) -Hans de Goede +# * modify DEC entries (vt220, etc), to add sgr string, and to use +# ISO-2022 strings for rmacs/smacs -TD +# +# 2004-07-31 +# * rename xterm-pc-fkeys to xterm+pcfkeys -TD +# +# 2004-08-07 +# * improved putty entry -Robert de Bath +# +# 2004-08-14 +# * remove dch/dch1 from rxvt because they are implemented inconsistently +# with the common usage of bce/ech -TD +# * remove khome from vt220 (vt220's have no home key) -TD +# * add rxvt+pcfkeys -TD +# +# 2004-08-21 +# * modify several entries to ensure xterm mouse and cursor visibility +# are reset in rs2 string: hurd, putty, gnome, konsole-base, mlterm, +# Eterm, screen. (The xterm entries are left alone - old ones for +# compatibility, and the new ones do not require this change) -TD +# +# 2004-08-28 +# * add morphos entry -Pavel Fedin +# * modify amiga-8bit to add khome/kend/knp/kpp -Pavel Fedin +# * corrected \E[5?l to \E[?5l in vt320 entries -TD +# +# 2004-11-20 +# * update wsvt25 entry -TD +# +# 2005-01-29 +# * update pairs for xterm-88color and xterm-256color to reflect the +# ncurses extended-color support -TD +# +# 2005-02-26 +# * modify sgr/sgr0 in xterm-new to improve tgetent's derived "me" -TD +# * add aixterm-16color to demonstrate 16-color capability -TD +# +# 2005-04-23 +# * add media-copy to vt100 -TD +# * corrected acsc string for vt52 -TD +# +# 2005-04-30 +# * add kUP, kDN (user-defined shifted up/down arrow) definitions for +# xterm-new -TD +# * add kUP5, kUP6, etc., for xterm-new and rxvt -TD +# +# 2005-05-07 +# * re-corrected acsc string for vt52 -TD +# +# 2005-05-28 +# * corrected sun-il sgr string which referred to bold and underline -TD +# * add sun-color entry -TD +# +# 2005-07-23 +# * modify sgr0 in several entries to reset alternate-charset as in the +# sgr string -TD +# * modify sgr string of prism9 to better match the individual +# attributes -TD +# +# 2005-10-15 +# * correct order of use= in rxvt-basic -TD +# +# 2005-10-26 +# * use kind/kri as shifted up/down cursor keys for xterm-new -TD +# +# 2005-11-12 +# * other minor fixes to cygwin based on tack -TD +# * correct smacs in cygwin (report by Baurzhan Ismagulov). +# +# 2006-02-18 +# * add nsterm-16color entry -TD +# * remove ncv flag from xterm-16color -TD +# * remove setf/setb from xterm-256color to match xterm #209 -TD +# * update mlterm entry to 2.9.2 -TD +# +# 2006-02-25 +# * fixes to make nsterm-16color match report +# by Christian Ebert -Alain Bench +# +# 2006-04-22 +# * add xterm+256color building block -TD +# * add gnome-256color, putty-256color, rxvt-256color -TD +# +# 2006-05-06 +# * add hpterm-color -TD +# +# 2006-06-24 +# * add xterm+pcc0, xterm+pcc1, xterm+pcc2, xterm+pcc3 -TD +# * add gnome-fc5 (prompted by GenToo #122566) -TD +# * remove obsolete/misleading comments about kcbt on Linux -Alain Bench +# * improve xterm-256color by combining the ibm+16color setaf/setab +# strings with SGR 48. The setf/setb strings also are cancelled here +# rather than omitted so derived entries will cancel those also -Alain +# Bench +# +# 2006-07-01 +# * add some notes regarding copyright to terminfo.src -TD +# * use rxvt+pcfkeys in Eterm -TD +# * remove km and flash from gnome, Eterm and rxvt since they do not work +# as one would expect (km sends ESC rather than setting the 8th bit +# of the key) -TD +# * add/use ansi+enq, vt100+enq and vt102+enq -TD +# * add konsole-solaris -TD +# +# 2006-07-22 +# * update xterm-sun and xterm-sco entries to match xterm #216 -TD +# * modify is2/rs2 strings for xterm-r6 as per fix in xterm #148 -TD +# * modify xterm-24 to inherit from "xterm" -TD +# * add xiterm entry -TD +# * add putty-vt100 entry -TD +# * corrected spelling of Michael A Dorman's name, prompted by +# http://www.advogato.org/person/mdorman/diary.html -TD +# +# 2006-08-05 +# * add xterm+pcf0, xterm+pcf2 from xterm #216 -TD +# * update xterm+pcfkeys to match xterm #216 -TD +# +# 2006-08-17 +# * make descriptions of xterm entries consistent with its terminfo -TD +# +# 2006-08-26 +# * add xfce, mgt -TD +# +# 2006-09-02 +# * correct acsc string in kterm -TD +# +# 2006-09-09 +# * add kon entry -TD +# * remove invis from linux and related entries, add klone+sgr8 for those +# that implement the feature (or have not been shown to lack it) -TD +# +# 2006-09-23 +# * add ka2, kb1, kb3, kc2 to vt220-keypad as an extension -TD +# * minor improvements to rxvt+pcfkeys -TD +# +# 2006-09-30 +# * fix a few typos in if/then/else expressions -TD +# +# 2006-10-07 +# * add several GNU Screen variations with 16- and 256-colors, and +# status line (Alain Bench). +# +# 2007-03-03 +# * add Newbury Data entries (Jean-Charles Billaud). +# +# 2007-06-10 +# * corrected xterm+pcf2 modifiers for F1-F4, match xterm #226 -TD +# +# 2007-07-14 +# * restore section of pre-ncurses-4.2 changelog to fix attribution -TD +# * add konsole-256color entry -TD +# +# 2007-08-18 +# * add 9term entry (request by Juhapekka Tolvanen) -TD +# +# 2007-10-13 +# * correct kIC in rxvt+pcfkeys (prompted by Debian #446444) -TD +# * add shift-control- and control-modified keys for rxvt editing +# keypad -TD +# * update mlterm entry to 2.9.3 -TD +# * add mlterm+pcfkeys -TD +# +# 2007-10-20 +# * move kLFT, kRIT, kind and kri capabilities from xterm-new to +# xterm+pcc0, etc., to make the corresponding building blocks reflect +# xterm's capabilities -TD +# * add mrxvt entry -TD +# * add xterm+r6f2, use in mlterm and mrxvt entries -TD +# +# 2007-11-03 +# * correct acsc strings for h19 and z100 (Benjamin Sittler) +# +# 2007-11-11 +# * use xterm-xf86-v44 for "xterm-xfree86", reflecting changes to +# xterm starting with xterm patch #216 -TD +# * make legacy xterm entries such as xterm-24 inherit from xterm-old, +# to match xterm #230 -TD +# * extend xterm+pccX entries to match xterm #230 -TD +# * add xterm+app, xterm+noapp, from xterm #230 -TD +# * add/use xterm+pce2 from xterm #230, in xterm+pcfkeys -TD +# +# 2008-04-19 +# * add screen.rxvt -TD +# +# 2008-04-28 +# * add screen+fkeys (prompted by Debian #478094) -TD +# +# 2008-06-28 +# * add screen.mlterm -TD +# * improve mlterm and mlterm+pcfkeys -TD +# +# 2008-08-23 +# * add Eterm-256color, Eterm-88color -TD +# * add rxvt-88color -TD +# +# 2008-10-12 +# * add teraterm4.59 entry, use that as primary teraterm entry, rename +# original to teraterm2.3 -TD +# * update "gnome" to 2.22.3 -TD +# * update "konsole" to 1.6.6 -TD +# * add "aterm" -TD +# * add "linux2.6.26" -TD +# +# 2008-11-15 +# * change several \E[2g (clear tab at current column) to \E[3g +# (clear all tabs) to match definition for tbc capability -TD +# +# 2008-11-29 +# * add eterm-color -TD +# +# 2009-01-10 +# * add screen.Eterm -TD +# +# 2009-03-28 +# * correct typo in pfkey of ansi.sys-old +# (report by Kalle Olavi Niemitalo) +# * move function- and cursor-keys from emx-base to ansi.sys, and create +# a pfkey capability which handles F1-F48 -TD +# +# 2009-05-02 +# * add vwmterm entry (Bryan Christ) +# +# 2009-09-19 +# * change ncv and op capabilities in sun-color to match Sun's entry for +# this (report by Laszlo Peter) +# * improve interix smso by using reverse rather than bold (report by +# Kristof Zelechovski). +# +# 2009-10-03 +# * remove unnecessary kcan assignment to ^C from putty (Sven Joachim) +# * add linux-16color (Benjamin Sittler) +# * correct initc capability of linux-c-nc end-of-range (Benjamin Sittler) +# * similar change for dg+ccc and dgunix+ccc (Benjamin Sittler) +# * add ccc and initc capabilities to xterm-16color -TD +# +# 2009-10-31 +# * updated nsterm* entries (Benjamin Sittler, prompted by GenToo #206201) +# +# 2009-12-12 +# * updated nsterm* entries (Benjamin Sittler, Emanuele Giaquinta) +# +# 2009-12-19 +# * add bw (auto-left-margin) to nsterm* entries (Benjamin Sittler) +# * rename minix to minix-1.7, add minix entry for Minix3 -TD +# +# 2009-12-26 +# * add bterm (bogl 0.1.18) -TD +# * minor fix to rxvt+pcfkeys -TD +# +# 2010-02-06 +# * update mrxvt to 0.5.4, add mrxvt-256color -TD +# +# 2010-02-13 +# * add several screen-bce.XXX entries -TD +# +# 2010-02-23 +# * modify screen-bce.XXX entries to exclude ech, since screen's color +# model does not clear with color for that feature -TD +# +# 2010-03-20 +# * rename atari and st52 to atari-old, st52-old, use newer entries from +# FreeMiNT by Guido Flohr (from patch/report by Alan Hourihane). +# +# 2010-06-12 +# * add mlterm-256color entry -TD +# +# 2010-07-17 +# * add hard-reset for rs2 to wsvt25 to help ensure that reset ends +# the alternate character set (patch by Nicholas Marriott) +# +# 2010-08-28 +# * improve acsc for vt52 (Benjamin Sittler) +# * modify nsterm entries for consistent sgr/sgr0 -TD +# * modify xnuppc entries for consistent sgr/sgr0 -TD +# * add invis to tek4115 sgr -TD +# +# 2010-09-11 +# * reformat acsc strings to canonical format -TD +# +# 2010-09-25 +# * add "XT" capability to entries for terminals that support both +# xterm-style mouse- and title-controls, for "screen" which +# special-cases TERM beginning with "xterm" or "rxvt" -TD +# +# 2010-10-02 +# * fill in no-parameter forms of cursor-movement where a parameterized +# form is available -TD +# * fill in missing cursor controls where the form of the controls is +# ANSI -TD +# * add parameterized cursor-controls to linux-basic (report by Dae) -TD +# +# 2010-10-09 +# * correct comparison used for setting 16-colors in linux-16color +# entry (Novell #644831) -TD +# * improve linux-16color entry, using "dim" for color-8 which makes it +# gray rather than black like color-0 -TD +# +# 2010-11-20 +# * make "vte" the principal entry defining "gnome", since GNOME terminal +# is merely one of several terminals whose behavior is provided by this +# library -TD +# +# 2010-11-27 +# * fix typo in rmso for tek4106 -Goran Weinholt +# +# 2010-12-11 +# * suppress ncv in screen entry, allowing underline -Alejandro R. Sedeno +# * also suppress ncv in konsole-base -TD +# +# 2011-02-05 +# * add U8 feature to denote entries for terminal emulators which do not +# support VT100 SI/SO when processing UTF-8 encoding -TD +# * add xterm-utf8 as a demo of the U8 feature -TD +# +# 2011-02-20 +# * add cons25-debian entry (Brian M Carlson, Debian #607662). +# +# 2011-06-11 +# * update minix entry to minix 3.2 (Thomas Cort). +# +# 2011-07-09 +# * fix inconsistent tabset path in pcmw (Todd C. Miller). +# * remove a backslash which continued comment, obscuring altos3 +# definition with OpenBSD toolset (Nicholas Marriott). +# +# 2011-07-16 +# * add/use xterm+tmux chunk from xterm #271 -TD +# * resync xterm-new entry from xterm #271 -TD +# * add E3 extended capability to linux-basic (Miroslav Lichvar) +# * add linux2.2, linux2.6, linux3.0 entries to give context for E3 -TD +# * add SI/SO change to linux2.6 entry (Debian #515609) -TD +# +# 2011-07-21 +# * add kich1 to sun (Yuri Pankov) +# * use bold rather than reverse for smso in sun-color (Yuri Pankov). +# +# 2011-08-06 +# * corrected k9 in dg460-ansi, add other features based on manuals -TD +# +# 2011-08-20 +# * minor cleanup of X-terminal emulator section -TD +# * add terminator entry -TD +# * add simpleterm entry -TD +# +# 2011-09-10 +# * add xterm+kbs fragment from xterm #272 -TD +# +# 2011-11-12 +# * add pccon entries for OpenBSD console (Alexei Malinin) +# +# 2011-12-17 +# * corrected old changelog comments -TD +# +# 2011-11-24 +# * add putty-sco -TD +# +# 2012-01-28 +# * add mach-gnu (Samuel Thibault) +# * add mach-gnu-color, tweaks to mach-gnu -TD +# * make sgr for sun-color agree with smso -TD +# * make sgr for prism9 agree with other caps -TD +# * make sgr for icl6404 agree with other caps -TD +# * make sgr for ofcons agree with other caps -TD +# * make sgr for att5410v1, att4415, att620 agree with other caps -TD +# * make sgr for aaa-unk, aaa-rv agree with other caps -TD +# * make sgr for avt-ns agree with other caps -TD +# +# 2012-02-11 +# * make sgr for xterm-pcolor agree with other caps -TD +# * make sgr for att5425 agree with other caps -TD +# * make sgr for att630 agree with other caps -TD +# * make sgr for linux entries agree with other caps -TD +# * make sgr for tvi9065 agree with other caps -TD +# * make sgr for ncr260vt200an agree with other caps -TD +# * make sgr for ncr160vt100pp agree with other caps -TD +# * make sgr for ncr260vt300an agree with other caps -TD +# * make sgr for aaa-60-dec-rv, aaa+dec agree with other caps -TD +# * make sgr for cygwin, cygwinDBG agree with other caps -TD +# +# 2012-03-31 +# * correct order of use-clauses in st-256color -TD +# +# 2012-04-01 +# * revert 2011-07-16 change to "linux" alias, return to "linux2.2" -TD +# +# 2012-04-14 +# * document all of the user-defined capabilities in one place -TD +# * add XT to some places to improve usefulness for other applications +# than screen, which would like to pretend that xterm's title is +# a status-line. -TD +# * change use-clauses in ansi-mtabs, hp2626, and hp2622 based on review +# of ordering and overrides -TD +# +# 2012-04-21 +# * add msgr to vt420, similar DEC vtXXX entries -TD +# * add several missing vt420 capabilities from vt220 -TD +# * factor out ansi+pp from several entries -TD +# * change xterm+sl and xterm+sl-twm to include only the status-line +# capabilities and not "use=xterm", making them more generally useful +# as building-blocks -TD +# * add dec+sl building block, as example -TD +# +# 2012-04-28 +# * fix some inconsistencies between vt320/vt420, e.g., cnorm/civis -TD +# * add eslok flag to dec+sl -TD +# * dec+sl applies to vt320 and up -TD +# * drop wsl width from xterm+sl -TD +# * reuse xterm+sl in putty and nsca-m -TD +# * add ansi+tabs to vt520 -TD +# * add ansi+enq to vt220-vt520 -TD +# +# 2012-05-05 +# * remove p6 (bold) from opus3n1+ for consistency -TD +# * remove acs stuff from env230 per clues in Ingres termcap -TD +# * modify env230 sgr/sgr0 to match other capabilities -TD +# * modify smacs/rmacs in bq300-8 to match sgr/sgr0 -TD +# * make sgr for dku7202 agree with other caps -TD +# * make sgr for ibmpc agree with other caps -TD +# * make sgr for tek4107 agree with other caps -TD +# * make sgr for ndr9500 agree with other caps -TD +# * make sgr for sco-ansi agree with other caps -TD +# * make sgr for d410 agree with other caps -TD +# * make sgr for d210 agree with other caps -TD +# * make sgr for d470c, d470c-7b agree with other caps -TD +# +# 2012-05-12 +# * rewrite vt520 entry based on vt420 -TD +# * corrected 'op' for bterm (report by Samuel Thibault) -TD +# +# 2012-06-02 +# * add kdch1 to wsvt25 entry from NetBSD CVS (reported by David Lord, +# analysis by Martin Husemann). +# * add cnorm/civis to wsvt25 entry from NetBSD CVS (report/analysis by +# Onno van der Linden). +# * add kdch1 aka "Remove" to vt220 and vt220-8 entries -TD +# * add kdch1, etc., to qvt108 -TD +# * add dl1/il1 to some entries based on dl/il values -TD +# * add dl to simpleterm -TD +# +# 2012-06-10 +# * modify some older xterm entries to align with xterm source -TD +# * separate "xterm-old" alias from "xterm-r6" -TD +# +# 2012-07-28 +# * add E3 to xterm-basic and putty -TD +# +# 2012-08-11 +# * add nsterm-256color, make this the default nsterm -TD +# * remove bw from nsterm-bce, per testing with tack -TD +# +# 2012-10-12 +# * add vte-2012, gnome-2012, making these the defaults for vte/gnome +# (patch by Christian Persch). +# +# 2012-11-02 +# * reviewed vte-2012, reverted most of the change since it was incorrect +# based on testing with tack -TD +# * un-cancel the initc in vte-256color, since this was implemented +# starting with version 0.20 in 2009 -TD +# +# 2013-03-16 +# * correct typo in sgr string for sun-color, +# add bold for consistency with sgr, +# change smso for consistency with sgr -TD +# * correct typo in sgr string for terminator -TD +# * add blink to the attributes masked by ncv in linux-16color (report +# by Benjamin Sittler) +# +# 2013-03-23 +# * change initialization for vt220, similar entries for consistency +# with cursor-key strings (NetBSD #47674) -TD +# * further improvements to linux-16color (Benjamin Sittler) +# +# 2013-05-11 +# * move nsterm-related entries out of "obsolete" section to more +# plausible "ansi consoles" -TD +# * additional cleanup of table-of-contents by reordering -TD +# +# 2013-06-07 +# * added note to clarify Terminal.app's non-emulation of the various +# terminal types listed in the preferences dialog -TD +# +# 2013-11-02 +# * use TS extension to describe xterm's title-escapes -TD +# * modify terminator and nsterm-s to use xterm+sl-twm building block -TD +# * update hurd.ti, add xenl to reflect 2011-03-06 change in +# http://git.savannah.gnu.org/cgit/hurd/hurd.git/log/console/display.c +# (Debian #727119). +# * simplify pfkey expression in ansi.sys -TD +# +# 2013-11-10 +# * split-out building blocks xterm+sm+1002 and xterm+sm+1003 -TD +# +# 2014-02-22 +# * updated notes for wsvt25 based on tack and vttest -TD +# * add teken entry to show actual properties of FreeBSD's "xterm" +# console -TD +# +# 2014-03-22 +# * add terminology entry -TD +# * add mlterm3 entry, use that as "mlterm" -TD +# * inherit mlterm-256color from mlterm -TD +# +# 2014-03-23 +# * fix typo in "mlterm" entry (report by Gabriele Balducci) -TD +# +# 2014-03-30 +# * cancel ccc in putty-256color and konsole-256color for consistency +# with the cancelled initc capability (patch by Sven Zuhlsdorf). +# * add xterm+256setaf building block for various terminals which only +# get the 256-color feature half-implemented -TD +# * updated "st" entry (leaving the 0.1.1 version as "simpleterm") to +# 0.4.1 -TD +# +# 2014-05-03 +# * add vt520ansi (Mike Gran) +# +# 2014-05-24 +# * correct several entries which had termcap-style padding used in +# terminfo: adm21, aj510, alto-h19, att605-pc, x820 -TD +# * correct syntax for padding in some entries: dg211, h19 -TD +# * correct ti924-8 which had confused padding versus octal escapes -TD +# * correct padding in sbi entry -TD +# +# 2014-06-07 +# * update xterm-new to xterm patch #305 -TD +# + change screen's smso to use SGR 7 (ECMA-80 reverse) rather than SGR 3 +# (italic). This was a long-ago typo in screen 3.1.1 which was +# overlooked until a few terminal emulators implemented the feature -TD +# +# 2014-06-09 +# > fix regression in screen terminfo entries (reports by Christian +# Ebert, Gabriele Balducci) -TD +# + revert the change to screen; see notes for why this did not work -TD +# + cancel sitm/ritm for entries which extend "screen", to work around +# screen's hardcoded behavior for SGR 3 -TD +# +# 2014-06-14 +# + modify sgr for screen.xterm-new to support dim capability -TD +# + add dim capability to nsterm+7 -TD +# + cancel dim capability for iterm -TD +# + add dim, invis capabilities to vte-2012 -TD +# + add sitm/ritm to konsole-base and mlterm3 -TD +# +# 2014-10-06 +# + add xterm-1005 and xterm-1006 entries, with suggested extension +# capability "xm" -TD +# +# 2014-10-07 +# + update test-report for mrxvt -TD +# +# 2014-10-11 +# + add xterm-x10mouse, xterm-x11mouse, etc. -TD +# +# 2014-10-18 +# + reviewed terminology 0.6.1, add function key definitions. None of +# the vt100-compatibility issues were improved -TD +# +# 2015-04-22 +# + add 'dim' capability to screen entry (report by Leonardo B Schenkel) +# + add several key definitions to nsterm-bce to match preconfigured +# keys, e.g., with OSX 10.9 and 10.10 (report by Leonardo B Schenkel) +# +# 2015-05-02 +# + remove unnecessary ';' from E3 capabilities -TD +# + add tmux entry, derived from screen (patch by Nicholas Marriott). +# + split-out recent change to nsterm-bce as nsterm-build326, and add +# nsterm-build342 to reflect changes with successive releases of OSX +# (discussion with Leonardo B Schenkel) +# + add xon, ich1, il1 to ibm3161 (patch by Stephen Powell, +# Debian #783806) +# +# 2015-05-17 +# + remove screen-bce.mlterm, since mlterm does not do "bce" -TD +# + add several screen.XXX entries to support the respective variations +# for 256 colors -TD +# +# 2015-05-23 +# + add putty+fnkeys* building-block entries -TD +# +# 2015-05-30 +# + remove spurious "%;" from st entry (report by Daniel Pitts) -TD +# + add vte-2014, update vte to use that -TD +# +# 2015-06-27 +# + comment-out "screen.xterm" entry, and inherit screen.xterm-256color +# from xterm-new (report by Richard Birkett) -TD +# +# 2015-07-25 +# + add status line to tmux via xterm+sl (patch by Nicholas Marriott). +# + fixes for st 0.5 from testing with tack -TD +# +# 2015-10-24 +# + updated minitel entries to fix kel problem with emacs, and add +# minitel1b-nb (Alexandre Montaron). +# + reviewed/updated nsterm entry Terminal.app in OSX -TD +# + replace some dead URLs in commands with equivalents from the +# Internet Archive -TD +# +# 2015-11-14 +# + add bold to pccon+sgr+acs and pccon-base (Tati Chevron). +# + add keys f12-f124 to pccon+keys (Tati Chevron). +# +# 2015-11-21 +# + fix some inconsistencies in the pccon* entries -TD +# +# 2015-11-28 +# + add viewdata (Alexandre Montaron). +# +# 2016-01-16 +# + tidy up comments about hardcoded 256color palette (report by +# Leonardo Brondani Schenkel) -TD +# + add putty-noapp entry, and amend putty entry to use application mode +# for better consistency with xterm (report by Leonardo Brondani +# Schenkel) -TD +# +# 2016-04-23 +# + add 'oc' capability to xterm+256color, allowing palette reset for +# xterm -TD +# +# 2016-05-14 +# + modify linux2.6 entry to improve line-drawing -TD +# + make linux3.0 entry the default linux entry (Debian #823658) -TD +# +# 2016-05-29 +# + modify rs1 for xterm-16color, xterm-88color and xterm-256color to +# reset palette using "oc" string as in linux -TD +# +# 2016-06-11 +# + use ANSI reply for u8 in xterm-new, to reflect vt220-style responses +# that could be returned -TD +# + added a few capabilities fixed in recent vte -TD +# +# 2016-08-17 +# + correct a typo in interix -TD +# +# 2016-09-24 +# + updated minitel entries to use status line with screen(1), as well as +# printing special G2 videotex chars like french accentuated glyph +# using special cap XC= (patch by Alexandre Montaron). +# +# 2016-10-01 +# + add linux-m1 minitel entries (patch by Alexandre Montaron). +# + correct rs2 string for vt100-nam -TD +# +# 2016-11-26 +# + modify linux-16color to not mask dim, standout or reverse with the +# ncv capability -TD +# + add 0.1sec mandatory delay to flash capabilities using the VT100 +# reverse-video control -TD +# + omit selection of ISO-8859-1 for G0 in enacs capability from linux2.6 +# entry, to avoid conflict with the user-defined mapping. The reset +# feature will use ISO-8859-1 in any case (Mikulas Patocka). +# +# 2016-12-30 +# + merge current st description (report by Harry Gindi) -TD +# +# 2016-12-31 +# + modify flash capability for linux and wyse entries to put the delay +# between the reverse/normal escapes rather than after -TD +# +# 2017-01-28 +# + minor comment-fixes to help automate links to bug-urls -TD +# + add dvtm, dvtm-256color -TD +# + add settings corresponding to xterm-keys option to tmux entry to +# reflect upcoming change to make that option "on" by default +# (patch by Nicholas Marriott). +# + uncancel Ms in tmux entry (Harry Gindi, Nicholas Marriott). +# + add dumb-emacs-ansi -TD +# +# 2017-03-05 +# + correct a few spelling errors in comments -TD +# + add fbterm -TD +# +# 2017-03-11 +# + add vt100+4bsd building block, use that for older terminals rather +# than "vt100" which is now mostly used as a building block for +# terminal emulators -TD +# + modify vt100 rs2 string to reset vt52 mode and scrolling regions +# (report/analysis by Robert King) -TD +# +# 2017-04-01 +# + minor fixes for vt100+4bsd, e.g., delay in sgr for consistency -TD +# + add smso for env230, to match sgr -TD +# + remove p7/protect from sgr in fbterm -TD +# + drop setf/setb from fbterm; setaf/setab are enough -TD +# + make xterm-pcolor sgr consistent with other capabilities -TD +# + add rmxx/smxx ECMA-48 strikeout extension to tmux and xterm-basic +# (discussion with Nicholas Marriott) +# +# 2017-04-22 +# + correct missing comma-separator between string capabilities in +# icl6402 and m2-nam -TD +# + update formatting with ncurses 6.0.20170422 -TD +# + restore rmir/smir in ansi+idc to better match original ansiterm+idc, +# add alias ansiterm (report by Robert King). +# +# 2017-05-13 +# + reformatted using hexadecimal numbers to improve readability -TD +# +# 2017-07-29 +# + update interix entry using tack and SFU on Windows 7 Ultimate -TD +# + use ^? for kdch1 in interix (reported by Jonathan de Boyne Pollard) +# + add "rep" to xterm-new, available since 1997/01/26 -TD +# + move SGR 24 and 27 from vte-2014 to vte-2012 (request by Alain +# Williams) -TD +# +# 2017-08-16 +# + update "iterm" entry -TD +# + add "iterm2" entry (report by Leonardo Brondani Schenkel) -TD +# +# 2017-08-18 +# + update notes on user-defined capabilities -TD +# +# 2017-08-26 +# + fixes for "iterm2" (report by Leonardo Brondani Schenkel) -TD +# +# 2017-11-11 +# + add "op" to xterm+256setaf -TD +# + reviewed terminology 1.0.0 -TD +# + reviewed st 0.7 -TD +# +# 2017-11-18 +# + modify old terminology entry and a few other terminal emulators to +# account for xon -TD +# + correct sgr string for tmux, which used screen's "standout" code +# rather than the standard code (patch by Roman Kagan) +# + correct sgr/sgr0 strings in a few other cases reported by tic, making +# those correspond to the non-sgr settings where they differ, but +# otherwise use ECMA-48 consistently: +# jaixterm, aixterm, att5420_2, att4424, att500, decansi, d410-7b, +# dm80, hpterm, emu-220, hp2, iTerm2.app, mterm-ansi, ncrvt100an, +# st-0.7, vi603, vwmterm -TD +# +# 2017-12-30 +# + add xterm+noalt, xterm+titlestack, xterm+alt1049, xterm+alt+title +# blocks from xterm #331 -TD +# + add xterm+direct, xterm+indirect, xterm-direct entries from xterm +# #331 -TD +# + modify xterm+256color and xterm+256setaf to use correct number of +# color pairs, for ncurses 6.1 -TD +# + add rs1 capability to xterm-256color -TD +# + modify xterm-r5, xterm-r6 and xterm-xf86-v32 to use xterm+kbs to +# match xterm #272, reflecting packager's changes -TD +# + remove "boolean" Se, Ss from st-0.7 -TD +# +# 2018-01-04 +# + add konsole-direct and st-direct -TD +# + remove unsupported "Tc" capability from st-0.7; use st-direct if +# direct-colors are wanted -TD +# +# 2018-01-17 +# + add vte-direct -TD +# + add XT, hpa, indn, and vpa to screen, and invis, E3 to tmux (patch by +# Pierre Carru) +# +# 2018-01-21 +# + use xterm+sm+1006 in xterm-new, vte-2014 -TD +# + use xterm+x11mouse in iterm, iterm2, mlterm3 because xterm's 1006 +# mode does not work with those programs. konsole is debatable -TD +# + add "termite" entry (report by Markus Pfeiffer) -TD +# +# 2018-01-27 +# + trim "XT" from screen entry -TD +# + modify iterm to use xterm+sl-twm building block -TD +# + mark konsole-420pc, konsole-vt100, konsole-xf3x obsolete reflecting +# konsole's removal in 2008 -TD +# + expanded the history section of konsole to explain its flawed +# imitation of xterm's keyboard -TD +# + use xterm+x11mouse in screen.* entries because screen does not yet +# support xterm's 1006 mode -TD +# + add nsterm-build400 for macOS 10.13 -TD +# + add ansi+idc1, use that in ansi+idc adding dch for consistency -TD +# + update vte to vte-2017 -TD +# + add ecma+strikeout to vte-2017 -TD +# + add iterm2-direct -TD +# + updated teraterm, added teraterm-256color -TD +# + add mlterm-direct -TD +# + add descriptions for ANSI building-blocks -TD +# +# 2018-02-24 +# + correct Ss/Ms interchange in st-0.7 entry (tmux #1264) -TD +# + fix remaining flash capabilities with trailing mandatory delays -TD +# +# 2018-03-17 +# + trim some redundant capabilities from st-0.7 -TD +# + trim unnecessary setf/setb from interix -TD +# +# 2018-05-19 +# + trim spurious whitespace from tmux in 2018-02-24 changes; +# fix some inconsistencies in/between tmux- and iterm2-entries for SGR +# (report by C Anthony Risinger) +# + improve iterm2 using some xterm features which it has adapted -TD +# +# 2018-06-30 +# + add acsc string to vi200 (Nibby Nebbulous) +# add right/down-arrow to vi200's acsc -TD +# +# 2018-07-21 +# + corrected acsc for wy50 -TD +# + add wy50 and wy60 shifted function-keys as kF1 to kF16 -TD +# + remove ansi+rep mis-added to interix in 2018-02-23 -TD +# +# 2018-07-28 +# + fix typo in tvi955 -TD +# + corrected acsc for regent60 -TD +# + add alias n7900 -TD +# +# 2018-09-29 +# + corrected acsc for tvi950 -TD +# + remove bogus kf0 from tvi950 -TD +# + added function-key definitions to agree with TeleVideo 950 manual -TD +# + add bel to tvi950 -TD +# + add shifted function-keys to regent60 -TD +# + renumber regent40 function-keys to match manual -TD +# + add cd (clr_eos) to adds200 -TD +# +# 2018-10-27 +# + add OpenGL clients alacritty and kitty -TD +# + add Smulx for tmux, vte-2018 -Nicholas Marriott +# +# 2018-12-15 +# + fix a typo in comments (Aaron Gyes). +# + add nsterm-build309 to replace nsterm-256color, assigning the latter +# as an alias of nsterm, to make mouse work with nsterm-256color -TD +# + base gnome-256color entry on "gnome", not "vte", for consistency -TD +# +# 2019-01-12 +# + add nsterm-direct -TD +# + use SGR 1006 mouse for konsole-base -TD +# + use SGR 1006 mouse for putty -TD +# + add ti703/ti707, ti703-w/ti707-w (Robert Clausecker) +# +# 2019-02-23 +# + fix typo in adds200 -TD +# +# 2019-03-30 +# + add "screen5", to mention italics (report by Stefan Assmann) +# + modify description of xterm+x11hilite to eliminate unused p5 -TD +# +# 2019-05-18 +# + update xterm-new to xterm patch #345 -TD +# + add/use xterm+keypad in xterm-new (report by Alain D D Williams) -TD +# + update terminator entry -TD +# + remove hard-tabs from ti703 (report by Robert Clausecker) +# + add Smol/Rmol for tmux, vte-2018 -Nicholas Marriott +# +# 2019-06-01 +# + add rs1 to konsole, mlterm -TD +# +# 2019-06-08 +# + add mintty, mintty-direct (Thomas Wolff) +# 2019-06-09 +# + comment-out some user-defined capabilities in mintty+common to allow +# builds with existing releases 5.9-6.1 -TD +# +# 2019-06-30 +# + add ms-terminal -TD +# + add vscode, vscode-direct -TD +# + use ecma+index in screen, st -TD +# +# 2019-07-06 +# + add domterm -TD +# + improve comments for recent changes, add alias xterm.js -TD +# +# 2019-08-03 +# + amend the change to screen, because tmux relies upon that entry +# and does not support that feature (Debian #933572) -TD +# + updated ms-terminal entry & notes -TD +# + updated kitty entry & notes -TD +# + updated alacritty+common entry & notes -TD +# + use xterm+sl-twm for consistency -TD +# +# 2019-09-22 +# + correct a comment -TD +# +# 2019-10-26 +# + modify linux-16color to accommodate Linux console driver change in +# early 2018 (report by Dino Petrucci). +# +# 2019-11-02 +# + add "xterm-mono" to help packagers (report by Sven Joachim) -TD +# +# 2019-11-09 +# + drop ich1 from rxvt-basic, Eterm and mlterm to improve compatibility +# with old non-curses programs -TD +# + reviewed st 0.8.2, updated some details -TD +# + use ansi+rep several places -TD +# +# 2020-01-12 +# + update alacritty entries for 0.4.0 (prompted by patch by +# Christian Duerr) -TD +# +# 2020-01-18 +# + spelling fixes per codespell -TD +# + improve xm example for xterm+x11mouse, xterm+sm+1006 -TD +# +# 2020-02-22 +# + improve vt50h and vt52 based on DECScope manual -TD +# + add/use vt52+keypad and vt52-basic -TD +# +# 2020-04-18 +# + use vt52+keypad in xterm-vt52, from xterm #354 -TD +# +# 2020-04-25 +# + use vt100+fnkeys in putty -TD +# +# 2020-05-02 +# + add details on the change to Linux SGR 21 in 2018 -TD +# + add xterm-direct16 and xterm-direct256 -TD +# +# 2020-05-03 +# + fix some dead URLs -TD +# +# 2020-05-16 +# + update notes on vscode / xterm.js -TD +# +# 2020-05-30 +# + re-enable "bel" in konsole-base (report by Nia Huang) +# + add linux-s entry (patch by Alexandre Montaron). +# +# 2020-06-06 +# + add xterm+256color2, xterm+88color2, to deprecate nonstandard usage +# in xterm+256color, xterm+88color -TD +# + add shifted Linux console keys in linux+sfkeys entry for +# screen.linux (report by Alexandre Montaron). +# + use vt100+enq in screen (report by Alexandre Montaron). +# + add screen.linux-s alias (suggested by Alexandre Montaron). +# +# 2020-07-11 +# + fix pound-sign mapping in acsc of linux2.6 entry (report by Ingo +# Bruckl). +# +# 2020-08-28 +# + correct icl6404 csr (report by Florian Weimer). +# + correct ti916 cup (report by Florian Weimer). +# + improve ndr9500 (report by Florian Weimer). +# +# 2020-09-05 +# + correct description of vt330/vt340 (Ross Combs). +# +# 2020-09-19 +# + update mlterm3 for 3.9.0 (report by Premysl Eric Janouch). +# +# 2020-09-29 +# + add tmux-direct (tmux #2370) +# + simplify mlterm initialization with DECSTR -TD +# + change tmux's kbs to ^? (report by Premysl Eric Janouch) +# +# 2020-10-10 +# + correct sgr in aaa+rv (report by Florian Weimer) -TD +# + fix some sgr inconsistencies in d230c, ibm6153, ibm6154, +# ncrvt100an -TD +# +# 2020-10-17 +# + expanded notes about tek4107 -TD +# +# 2020-11-07 +# + update kitty+common -TD +# + add putty+screen and putty-screen (suggested by Alexandre Montaron). +# +# 2020-11-28 +# + add Smulx to alacritty (Christian Duerr). +# + add rep to PuTTY -TD +# + add putty+keypad -TD +# +# 2020-12-05 +# + correct mlterm3 kf1-kf4 (Debian #975322) -TD +# + add flash to mlterm3 -TD +# +# 2020-12-27 +# + update terminology to 1.8.1 -TD +# +# 2021-01-16 +# + add comment for linux2.6 regarding CONFIG_CONSOLE_TRANSLATIONS +# (report by Patrick McDermott) -TD +# +# 2021-01-25 +# + split-out att610+cvis, vt220+cvis, vt220+cvis8 -TD +# + add vt220-base, for terminal emulators which generally have not +# supported att610's blinking cursor control -TD +# + use vt220+cvis in vt220, etc -TD +# + use att610+cvis, xterm+tmux and ansi+enq in kitty -TD +# + use vt220+cvis in st, terminology, termite since they ignore +# blinking-cursor detail in att610+cvis -TD +# +# 2021-02-20 +# + add/use vt220+pcedit and vt220+vtedit -TD +# + add scrt/securecrt and absolute -TD +# + add nel to xterm-new, though supported since X11R5 -TD +# + add/use xterm+nofkeys -TD +# + move use of ecma+italics from xterm-basic to xterm+nofkeys -TD +# +# 2021-02-27 +# + remove a duplicate "use" in xterm-vt220 -TD +# +# 2021-03-14 +# + correct use-ordering in some xterm-direct flavors -TD +# +# 2021-03-20 +# + add hterm, hterm-256color (Mike Frysinger) +# +# 2021-06-26 +# + use default colors in pccon "op" -TD +# + correct rmacs/smacs in aaa+dec, aaa+rv -TD +# + add hpterm-color2 and hp98550-color (Martin Trusler) +# +# 2021-07-17 +# + correct typo in "vip" comments (report by Nick Black), reviewed this +# against Glink manual -TD +# + fill in some missing pieces for pccon, to make it comparable to the +# vt220 entry -TD +# +# 2021-07-24 +# + trim "flash" from pccon+base -TD +# + revert change for aaa+rv -TD +# + add workaround for Windows Terminal's problems with CR/LF mapping to +# ms-terminal (patch by Juergen Pfeifer). +# + review/update current Windows Terminal vs ms-terminal -TD +# +# 2021-07-31 +# + add extensions in xterm+tmux and ecma+strikeout to ms-terminal, +# but cancel the non-working Cr and Ms capabilities -TD +# + add foot and foot-direct -TD +# +# 2021-08-15 +# + fix missing "%d" for setaf/setab code 8-15 in xterm+direct16 (report +# by Florian Weimer) -TD +# +# 2021-08-16 +# + corrected tsl capability for terminator -TD +# +# 2021-09-04 +# + modify linux3.0 entry to reflect default mapping of shift-tab by +# kbd 1.14 (report by Jan Engelhardt) -TD +# +# 2021-09-11 +# + add testing note for xterm-{hp|sco|sun} -TD +# + corrected description for ansi.sys-old -TD +# + add xterm+nopcfkeys, to fill in keys for xterm-hp, xterm-sun -TD +# + use hp+arrows in a few places -TD +# + use hp+pfk-cr in a few places -TD +# +# 2021-09-21 +# + add kbeg to xterm+keypad to accommodate termcap applications -TD +# + add smglp and smgrp to vt420+lrmm, to provide useful data for the +# "tabs" +m option -TD +# +# 2021-10-09 +# + fill in some details for infoton -TD +# + fix spelling/consistency in several descriptions -TD +# + use vt420+lrmm in vt420 -TD +# +# 2021-10-13 +# + trim some redundant definitions -TD +# +######## SHANTIH! SHANTIH! SHANTIH! diff --git a/deps/ncurses-6.3/mk-0th.awk b/deps/ncurses-6.3/mk-0th.awk new file mode 100644 index 0000000..3662243 --- /dev/null +++ b/deps/ncurses-6.3/mk-0th.awk @@ -0,0 +1,175 @@ +# $Id: mk-0th.awk,v 1.24 2021/03/20 11:44:48 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2010,2012 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: Thomas E. Dickey 1996-on +# +# Generate list of sources for a library, together with lint/lintlib rules +# +# Variables: +# libname (library name, e.g., "ncurses", "panel", "forms", "menus") +# subsets (is used here to decide if wide-character code is used) +# ticlib (library name for libtic, e.g., "tic") +# termlib (library name for libtinfo, e.g., "tinfo") +# +function make_lintlib(name,sources) { + print "" + print "clean ::" + printf "\trm -f llib-l%s.*\n", name + print "" + print "realclean ::" + printf "\trm -f llib-l%s\n", name + print "" + printf "llib-l%s : %s\n", name, sources + printf "\tcproto -a -l -DNCURSES_ENABLE_STDBOOL_H=0 -DLINT $(CPPFLAGS) %s >$@\n", sources + print "" + print "lintlib ::" + printf "\tsh $(srcdir)/../misc/makellib %s $(CPPFLAGS)\n", name + print "" + print "lint ::" + printf "\t$(LINT) $(LINT_OPTS) $(CPPFLAGS) %s $(LINT_LIBS)\n", sources +} + +# A blank in "subsets" indicates a split-off of the library into a separate +# file, e.g., for libtic or libtinfo. They are all logical parts of the same +# library. +function which_library() { + if ( ( which == "ticlib" ) && ( subsets ~ /ticlib / ) ) { + return ticlib; + } else if ( ( which == "termlib" || which == "ext_tinfo" ) && ( subsets ~ /[[:space:]]base/ ) ) { + return termlib; + } else { + return libname; + } +} + +function show_list(name, len, list) { + if ( len > 0 ) { + printf "\n%s_SRC =", toupper(name); + for (n = 0; n < len; ++n) + printf " \\\n\t%s", list[n]; + print ""; + make_lintlib(name, sprintf("$(%s_SRC)", toupper(name))); + } +} + +BEGIN { + which = libname; + using = 0; + found = 0; + count_ticlib = 0; + count_termlib = 0; + count_library = 0; + } + /^@/ { + which = $0; + sub(/^@[[:blank:]]+/, "", which); + sub(/[[:blank:]]+$/, "", which); + } + !/^[@#]/ { + if (using == 0) + { + print "" + print "# generated by mk-0th.awk" + printf "# libname: %s\n", libname + printf "# subsets: %s\n", subsets + if ( libname ~ /ncurses/ ) { + printf "# ticlib: %s\n", ticlib + printf "# termlib: %s\n", termlib + } + print "" + print ".SUFFIXES: .c .cc .h .i .ii" + print ".c.i :" + printf "\t$(CPP) $(CPPFLAGS) $< >$@\n" + print ".cc.ii :" + printf "\t$(CPP) $(CPPFLAGS) $< >$@\n" + print ".h.i :" + printf "\t$(CPP) $(CPPFLAGS) $< >$@\n" + print "" + using = 1; + } + if (which ~ /port_/ ) + { + # skip win32 source + } + else if ( $0 != "" && $1 != "link_test" ) + { + if ( found == 0 ) + { + if ( subsets ~ /widechar/ ) + widechar = 1; + else + widechar = 0; + printf "C_SRC =" + if ( $2 == "lib" ) + found = 1 + else if ( $2 == "c++" ) + found = 2 + else + found = 3 + } + if ( libname == "c++" || libname == "c++w" ) { + srcname = sprintf("%s/%s.cc", $3, $1); + printf " \\\n\t%s", srcname; + } else if ( widechar == 1 || $3 != "$(wide)" ) { + srcname = sprintf("%s/%s.c", $3, $1); + printf " \\\n\t%s", srcname; + if ( which_library() == libname ) { + list_library[count_library++] = srcname; + } else if ( which_library() == ticlib ) { + list_ticlib[count_ticlib++] = srcname; + } else { + list_termlib[count_termlib++] = srcname; + } + } + } + } +END { + print "" + if ( found == 1 ) + { + print "" + printf "# Producing llib-l%s is time-consuming, so there's no direct-dependency for\n", libname; + print "# it in the lintlib rule. We'll only remove in the cleanest setup."; + show_list(libname, count_library, list_library); + show_list(ticlib, count_ticlib, list_ticlib); + show_list(termlib, count_termlib, list_termlib); + } + else if ( found == 2 ) + { + make_lintlib(libname, "$(C_SRC)"); + } + else + { + print "" + print "lintlib :" + print "\t@echo no action needed" + } + } +# vile:ts=4 sw=4 diff --git a/deps/ncurses-6.3/mk-1st.awk b/deps/ncurses-6.3/mk-1st.awk new file mode 100644 index 0000000..30638c3 --- /dev/null +++ b/deps/ncurses-6.3/mk-1st.awk @@ -0,0 +1,609 @@ +# $Id: mk-1st.awk,v 1.124 2021/10/15 00:50:05 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2016,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: Thomas E. Dickey +# +# Generate list of objects for a given model library +# Variables: +# name (library name, e.g., "ncurses", "panel", "forms", "menus") +# 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") +# 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) +# 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 #) +# SymLink ("ln -s", etc) +# TermlibRoot ("tinfo" or other root 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. +# 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") +# +# 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() { + return ( subset ~ /^ticlib$/ ); + } +function is_termlib() { + return ( subset ~ /^(ticlib\+)?termlib((\+[^+ ]+)*\+[a-z_]+_tinfo)?$/ ); + } +# see lib_name +function lib_name_of(a_name) { + return sprintf("%s%s%s", prefix, a_name, suffix) + } +# see imp_name +function imp_name_of(a_name) { + if (ShlibVerInfix == "cygdll" || ShlibVerInfix == "msysdll" || ShlibVerInfix == "mingw") { + result = sprintf("%s%s%s.a", prefix, a_name, suffix); + } else if (ShlibVerInfix == "msvcdll") { + result = sprintf("%s%s%s.lib", prefix, a_name, suffix); + } else{ + result = ""; + } + return result; + } +# see abi_name +function abi_name_of(a_name) { + if (ShlibVerInfix == "cygdll") { + result = sprintf("%s%s$(ABI_VERSION)%s", "cyg", a_name, suffix); + } else if (ShlibVerInfix == "msysdll") { + result = sprintf("%s%s$(ABI_VERSION)%s", "msys-", a_name, suffix); + } else if (ShlibVerInfix == "mingw" || ShlibVerInfix == "msvcdll") { + result = sprintf("%s%s$(ABI_VERSION)%s", prefix, a_name, suffix); + } else if (ShlibVerInfix == "yes") { + result = sprintf("%s%s.$(ABI_VERSION)%s", prefix, a_name, suffix); + } else { + result = sprintf("%s.$(ABI_VERSION)", lib_name_of(a_name)); + } + return result; + } +# see rel_name +function rel_name_of(a_name) { + if (ShlibVerInfix == "cygdll") { + result = sprintf("%s%s$(REL_VERSION)%s", "cyg", a_name, suffix); + } else if (ShlibVerInfix == "msysdll") { + result = sprintf("%s%s$(ABI_VERSION)%s", "msys-", a_name, suffix); + } else if (ShlibVerInfix == "mingw" || ShlibVerInfix == "msvcdll") { + result = sprintf("%s%s$(REL_VERSION)%s", prefix, a_name, suffix); + } else if (ShlibVerInfix == "yes") { + result = sprintf("%s%s.$(REL_VERSION)%s", prefix, a_name, suffix); + } else { + result = sprintf("%s.$(REL_VERSION)", lib_name_of(a_name)); + } + return result; + } +# see end_name +function end_name_of(a_name) { + if ( MODEL != "SHARED" ) { + result = lib_name_of(a_name); + } else if ( DoLinks == "reverse") { + result = lib_name_of(a_name); + } else { + if ( ShlibVer == "rel" ) { + result = rel_name_of(a_name); + } else if ( ShlibVer == "abi" || ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw" || ShlibVer == "msvcdll" ) { + result = abi_name_of(a_name); + } else { + result = lib_name_of(a_name); + } + } + return result + } +function symlink(src,dst) { + if ( src != dst ) { + if ( SymLink !~ /.*-f.*/ ) { + printf "rm -f %s; ", dst + } + printf "$(LN_S) %s %s; ", src, dst + } + } +function rmlink(directory, dst) { + if ( dst != "" ) { + printf "\t-rm -f %s/%s\n", directory, dst + } + } +function removelinks(directory) { + nlinks = 0; + links[nlinks++] = end_name; + if ( DoLinks == "reverse" ) { + if ( ShlibVer == "rel" ) { + links[nlinks++] = abi_name; + links[nlinks++] = rel_name; + } else if ( ShlibVer == "abi" ) { + links[nlinks++] = abi_name; + } + } else { + if ( ShlibVer == "rel" ) { + links[nlinks++] = abi_name; + links[nlinks++] = lib_name; + } else if ( ShlibVer == "abi" ) { + links[nlinks++] = lib_name; + } + } + for (j = 0; j < nlinks; ++j) { + found = 0; + for (k = 0; k < j; ++k ) { + if ( links[j] == links[k] ) { + found = 1; + break; + } + } + if ( !found ) { + rmlink(directory, links[j]); + } + } + } +function make_shlib(objs, shlib_list) { + printf "\t$(MK_SHARED_LIB) $(%s_OBJS) $(%s)\n", objs, shlib_list + } +function sharedlinks(directory) { + if ( ShlibVer != "auto" && ShlibVer != "cygdll" && ShlibVer != "msysdll" && ShlibVer != "mingw" && ShlibVer != "msvcdll" ) { + printf "\tcd %s && (", directory + if ( DoLinks == "reverse" ) { + if ( ShlibVer == "rel" ) { + symlink(lib_name, abi_name); + symlink(abi_name, rel_name); + } else if ( ShlibVer == "abi" ) { + symlink(lib_name, abi_name); + } + } else { + if ( ShlibVer == "rel" ) { + symlink(rel_name, abi_name); + symlink(abi_name, lib_name); + } else if ( ShlibVer == "abi" ) { + symlink(abi_name, lib_name); + } + } + printf ")\n" + } + } +# termlib may be named explicitly via "--with-termlib=XXX", which overrides +# any suffix. Temporarily override "suffix" to account for this. +function termlib_end_of() { + termlib_save_suffix = suffix; + suffix = TermlibSuffix; + termlib_temp_result = end_name_of(TermlibRoot); + suffix = termlib_save_suffix; + return termlib_temp_result; +} +function shlib_build(directory) { + dst_libs = sprintf("%s/%s", directory, end_name); + printf "%s : \\\n", dst_libs + if (subset == "ticlib" && driver == "yes" ) { + base = name; + sub(/^tic/, "ncurses", base); # workaround for "w" + printf "\t\t%s/%s \\\n", directory, end_name_of(base); + } + if (subset ~ /^base/ || subset == "ticlib" ) { + save_suffix = suffix + sub(/^[^.]\./,".",suffix) + if (directory != "../lib") { + printf "\t\t%s/%s \\\n", "../lib", termlib_end_of(); + } + printf "\t\t%s/%s \\\n", directory, termlib_end_of(); + suffix = save_suffix + } + printf "\t\t$(RESULTING_SYMS) $(%s_OBJS)\n", OBJS + printf "\t@echo linking $@\n" + printf "\t@mkdir -p %s\n", directory + if ( ReLink != "yes" ) { + printf "\t@sleep 1\n" + } + if ( is_ticlib() ) { + make_shlib(OBJS, "TICS_LIST") + } else if ( is_termlib() ) { + make_shlib(OBJS, "TINFO_LIST") + } else { + make_shlib(OBJS, "SHLIB_LIST") + } + sharedlinks(directory) + } +function shlib_install(directory) { + src_lib1 = sprintf("../lib/%s", end_name); + dst_lib1 = sprintf("%s/%s", directory, end_name); + printf "%s : \\\n", dst_lib1 + printf "\t\t%s \\\n", directory + printf "\t\t%s\n", src_lib1 + printf "\t@echo installing $@\n" + printf "\t$(INSTALL_LIB) %s %s\n", src_lib1, dst_lib1; + sharedlinks(directory) + } +function install_dll(directory,filename) { + src_name = sprintf("../lib/%s", filename); + dst_name = sprintf("$(DESTDIR)%s/%s", directory, filename); + printf "\t@echo installing %s as %s\n", src_name, dst_name + if ( directory == "$(bindir)" ) { + program = "$(INSTALL) -m 755"; + } else { + program = "$(INSTALL_LIB)"; + } + printf "\t%s %s %s\n", program, src_name, dst_name + } +function in_subset(value) { + value = " " value " "; + check = subset; + gsub("[+]", " ", check); + check = " " check " "; + 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)); + } + } + return value; +} +BEGIN { + TOOL_PREFIX = ""; + found = 0; + using = 0; + } + /^@/ { + using = 0 + if (subset == "none") { + using = 1 + print "" + print "# generated by mk-1st.awk" + } else if (in_subset($2) > 0) { + if (using == 0) { + if (found == 0) { + if ( name ~ /^.*\+\+.*/ ) { + if ( CXX_MODEL == "NORMAL" && MODEL == "SHARED" ) { + print "" + printf "# overriding model from %s to match CXX_MODEL\n", MODEL; + MODEL = "NORMAL"; + suffix = ".a"; + DoLinks = "no"; + } + } + print "" + printf "# generated by mk-1st.awk (subset=%s)\n", subset + printf "# name: %s\n", name + printf "# traces: %s\n", traces + 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 "# model: %s\n", model + printf "# prefix: %s\n", prefix + printf "# suffix: %s\n", suffix + printf "# subset: %s\n", subset + printf "# driver: %s\n", driver + printf "# ShlibVer: %s\n", ShlibVer + printf "# ShlibVerInfix: %s\n", ShlibVerInfix + printf "# SymLink: %s\n", SymLink + printf "# TermlibRoot: %s\n", TermlibRoot + printf "# TermlibSuffix: %s\n", TermlibSuffix + printf "# ReLink: %s\n", ReLink + printf "# ReRanlib: %s\n", ReRanlib + printf "# DoLinks: %s\n", DoLinks + printf "# rmSoLocs: %s\n", rmSoLocs + printf "# ldconfig: %s\n", ldconfig + printf "# make_phony: %s\n", make_phony + printf "# overwrite: %s\n", overwrite + printf "# depend: %s\n", depend + printf "# host: %s\n", host + printf "# libtool_version: %s\n", libtool_version + print "" + } + using = 1 + } + if ( is_ticlib() ) { + OBJS = MODEL "_P" + } else if ( is_termlib() ) { + OBJS = MODEL "_T" + } else { + OBJS = MODEL + } + } + } + /^[@#]/ { + next + } + $1 ~ /trace/ { + if (traces != "all" && traces != MODEL && $1 != "lib_trace") + next + } + { + if (using \ + && ( $1 != "link_test" ) \ + && ( $2 == "lib" \ + || $2 == "progs" \ + || $2 == "c++" \ + || $2 == "tack" )) + { + if ( found == 0 ) + { + printf "%s_OBJS =", OBJS + if ( $2 == "lib" ) { + found = 1; + } else if ( $2 == "c++" ) { + TOOL_PREFIX = "CXX_"; + found = 1; + } else { + found = 2; + } + if ( $2 == "c++" ) { + CC_NAME="CXX" + CC_FLAG="CXXFLAGS" + } else { + CC_NAME="CC" + CC_FLAG="CFLAGS" + } + } + printf " \\\n\t../%s/%s$o", model, $1; + } + } +END { + print "" + if ( found != 0 ) + { + printf "\n$(%s_OBJS) : %s\n", OBJS, depend + } + if ( found == 1 ) + { + print "" + lib_name = lib_name_of(name); + if ( MODEL == "SHARED" ) + { + abi_name = abi_name_of(name); + rel_name = rel_name_of(name); + imp_name = imp_name_of(name); + end_name = end_name_of(name); + + shlib_build("../lib") + + print "" + print "install \\" + print "install.libs \\" + + if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw" || ShlibVer == "msvcdll") { + + dst_dirs = "$(DESTDIR)$(bindir) $(DESTDIR)$(libdir)"; + printf "install.%s :: %s $(LIBRARIES)\n", name, dst_dirs + install_dll("$(bindir)",end_name); + install_dll("$(libdir)",imp_name); + + } else { + + lib_dir = "$(DESTDIR)$(libdir)"; + printf "install.%s :: %s/%s\n", name, lib_dir, end_name + print "" + if ( ReLink == "yes" ) { + shlib_build(lib_dir) + } else { + shlib_install(lib_dir) + } + } + + if ( overwrite == "yes" && name == "ncurses" ) + { + if ( ShlibVer == "cygdll" || ShlibVer == "msysdll" || ShlibVer == "mingw" || SlibVer == "msvcdll") { + if (ShlibVer == "msvcdll") { + curses_prefix = "" + } else { + curses_prefix = "lib" + } + 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) && (" + 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) && (" + symlink(end_name, ovr_name) + printf ")\n" + } + } + if ( ldconfig != "" && ldconfig != ":" ) { + printf "\t- test -z \"$(DESTDIR)\" && %s\n", ldconfig + } + print "" + print "uninstall \\" + print "uninstall.libs \\" + 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 $(DESTDIR)$(libdir)/%s\n", imp_name + printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", imp_name + + } else { + printf "\t@echo uninstalling $(DESTDIR)$(libdir)/%s\n", end_name + removelinks("$(DESTDIR)$(libdir)") + if ( overwrite == "yes" && name == "ncurses" ) + { + ovr_name = sprintf("libcurses%s", suffix) + printf "\t-@rm -f $(DESTDIR)$(libdir)/%s\n", ovr_name + } + } + if ( rmSoLocs == "yes" ) { + print "" + print "mostlyclean \\" + print "clean ::" + printf "\t-@rm -f so_locations\n" + } + } + else if ( MODEL == "LIBTOOL" ) + { + end_name = lib_name; + use_name = trim_suffix(TermlibRoot) USE_LIB_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$(%s_OBJS)\n", OBJS + if ( is_ticlib() ) { + which_list = "TICS_LIST"; + } else if ( is_termlib() ) { + which_list = "TINFO_LIST"; + } else { + which_list = "SHLIB_LIST"; + } + printf "\tcd ../lib && $(LIBTOOL_LINK) $(%s) $(%s) \\\n", CC_NAME, 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; + if ( make_phony == "yes" ) { + print "" + printf ".PHONY :\tinstall.%s\n", trim_suffix(name); + } + print "" + print "install \\" + print "install.libs \\" + printf "install.%s :: \\\n", trim_suffix(name); + printf "\t\t$(DESTDIR)$(libdir) \\\n"; + use_name = TermlibRoot USE_LIB_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); + } + if ( index(name, "tic") == 1 && index(TermlibRoot, "ncurses") != 1 && trim_suffix(name) != "ncurses" ) { + printf "\t\tinstall.%s \\\n", "ncurses"; + } + } + 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 + 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 + } + else + { + end_name = lib_name; + printf "../lib/%s : $(%s_OBJS)\n", lib_name, OBJS + # workaround: binutils' ranlib tries to be clever with + # timestamps, by pretending its update took no time, confusing + # the make utility. + if ( ReLink != "yes" ) { + printf "\t@sleep 1\n" + } + printf "\t$(%sAR) $(%sARFLAGS) $@ $?\n", TOOL_PREFIX, TOOL_PREFIX; + printf "\t$(RANLIB) $@\n" + if ( host == "vxworks" ) + { + printf "\t$(LD) $(LD_OPTS) $? -o $(@:.a=$o)\n" + } + 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 + 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) && " + symlink("libncurses.a", "libcurses.a") + printf ")\n" + } + if ( ReRanlib == "yes" ) + { + printf "\t$(RANLIB) $(DESTDIR)$(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 + } + 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 + 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" + } + 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 + } + } + print "" + print "clean ::" + removelinks("../lib"); + print "" + print "mostlyclean::" + printf "\t-rm -f $(%s_OBJS)\n", OBJS + if ( MODEL == "LIBTOOL" ) { + printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS + } + } + else if ( found == 2 ) + { + print "" + print "mostlyclean::" + printf "\t-rm -f $(%s_OBJS)\n", OBJS + if ( MODEL == "LIBTOOL" ) { + printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS + } + print "" + print "clean ::" + printf "\t-rm -f $(%s_OBJS)\n", OBJS + if ( MODEL == "LIBTOOL" ) { + printf "\t-$(LIBTOOL_CLEAN) rm -f $(%s_OBJS:$o=.lo)\n", OBJS + } + } + } +# vile:ts=4 sw=4 diff --git a/deps/ncurses-5.9/mk-2nd.awk b/deps/ncurses-6.3/mk-2nd.awk similarity index 92% rename from deps/ncurses-5.9/mk-2nd.awk rename to deps/ncurses-6.3/mk-2nd.awk index 1f63763..4493bcf 100644 --- a/deps/ncurses-5.9/mk-2nd.awk +++ b/deps/ncurses-6.3/mk-2nd.awk @@ -1,6 +1,7 @@ -# $Id: mk-2nd.awk,v 1.19 2005/01/22 16:30:04 tom Exp $ +# $Id: mk-2nd.awk,v 1.23 2021/06/17 21:20:30 tom Exp $ ############################################################################## -# Copyright (c) 1998-2004,2005 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2004,2005 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"), # @@ -52,6 +53,13 @@ # # Fields in src/modules past $3 are dependencies # +function in_subset(value) { + value = " " value " "; + check = subset; + gsub("[+]", " ", check); + check = " " check " "; + return index(check,value); + } BEGIN { found = 0 using = 0 @@ -60,14 +68,14 @@ BEGIN { using = 0 if (subset == "none") { using = 1 - } else if (index(subset,$2) > 0) { + } else if (in_subset($2) > 0) { if (using == 0) { if (found == 0) { print "" print "# generated by mk-2nd.awk" printf "# model: %s\n", model printf "# MODEL: %s\n", MODEL - printf "# echo: %s\n", echo + printf "# echo: %s\n", echo printf "# subset: %s\n", subset printf "# crenames: %s\n", crenames printf "# cxxrenames: %s\n", cxxrenames diff --git a/deps/ncurses-5.9/mk-hdr.awk b/deps/ncurses-6.3/mk-hdr.awk similarity index 78% rename from deps/ncurses-5.9/mk-hdr.awk rename to deps/ncurses-6.3/mk-hdr.awk index 530cbe9..7608afe 100644 --- a/deps/ncurses-5.9/mk-hdr.awk +++ b/deps/ncurses-6.3/mk-hdr.awk @@ -1,6 +1,7 @@ -# $Id: mk-hdr.awk,v 1.3 2010/05/15 20:10:42 tom Exp $ +# $Id: mk-hdr.awk,v 1.8 2021/06/17 21:20:30 tom Exp $ ############################################################################## -# Copyright (c) 2007,2010 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2007-2010,2013 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"), # @@ -38,6 +39,13 @@ function basename(path) { sub(/^.*\//,"",path) return path; } +function in_subset(value) { + value = " " value " "; + check = subset; + gsub("[+]", " ", check); + check = " " check " "; + return index(check,value); +} BEGIN { found = 0 using = 1 @@ -47,7 +55,7 @@ BEGIN { using = 0 if (subset == "none") { using = 1 - } else if (index(subset,$2) > 0) { + } else if (in_subset($2) > 0) { using = 1 } else { using = 0 @@ -61,8 +69,8 @@ BEGIN { if (found == 0) { print "" print "# generated by mk-hdr.awk" - printf "# subset: %s\n", subset - printf "# compat: %s\n", compat + printf "# subset: %s\n", subset + printf "# compat: %s\n", compat print "" found = 1 } @@ -73,12 +81,12 @@ BEGIN { END { if ( count > 0 ) { - print "${DESTDIR}${includedir} :" + print "${INCLUDEDIR} :" print " mkdir -p $@" print "" print "install \\" print "install.libs \\" - print "install.includes :: ${AUTO_SRC} ${DESTDIR}${includedir} \\" + print "install.includes :: ${AUTO_SRC} ${INCLUDEDIR} \\" for (i = 0; i < count - 1; ++i) { printf " %s \\\n", data[i] @@ -86,9 +94,9 @@ END { printf " %s\n", data[count - 1] for (i = 0; i < count; ++i) { - printf " @ (cd ${DESTDIR}${includedir} && rm -f %s) ; ../headers.sh ${INSTALL_DATA} ${DESTDIR}${includedir} ${srcdir} %s\n", basename(data[i]), data[i] + printf " @ (cd ${INCLUDEDIR} && rm -f %s) ; ../headers.sh ${INSTALL_DATA} ${INCLUDEDIR} ${srcdir} %s\n", basename(data[i]), data[i] if (data[i] == "curses.h" && compat == "yes") { - printf " @ (cd ${DESTDIR}${includedir} && rm -f ncurses.h && ${LN_S} %s ncurses.h)\n", data[i] + printf " @ (cd ${INCLUDEDIR} && rm -f ncurses.h && ${LN_S} %s ncurses.h)\n", data[i] } } print "" @@ -97,9 +105,9 @@ END { print "uninstall.includes ::" for (i = 0; i < count; ++i) { - printf " -@ (cd ${DESTDIR}${includedir} && rm -f %s)\n", basename(data[i]) + printf " -@ (cd ${INCLUDEDIR} && rm -f %s)\n", basename(data[i]) if (data[i] == "curses.h" && compat == "yes") { - printf " -@ (cd ${DESTDIR}${includedir} && rm -f ncurses.h)\n" + printf " -@ (cd ${INCLUDEDIR} && rm -f ncurses.h)\n" } } } diff --git a/deps/ncurses-6.3/ncurses/Makefile.in b/deps/ncurses-6.3/ncurses/Makefile.in new file mode 100644 index 0000000..aba25fd --- /dev/null +++ b/deps/ncurses-6.3/ncurses/Makefile.in @@ -0,0 +1,382 @@ +# $Id: Makefile.in,v 1.182 2021/08/19 23:43:40 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2017,2018 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: Thomas E. Dickey 1996-on +# +# Makefile for ncurses source code. +# +# This makes the following: +# programs +# includes +# libraries (normal/debug/profile/shared) +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". +# +# The rules are organized to produce the libraries for the configured models, +# and the programs with the configured default model. + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +TOP_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" +@SET_MAKE@ + +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = @DFT_LWR_MODEL@ +DESTDIR = @DESTDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +PACKAGE = @PACKAGE@ + +LIBTOOL = @LIBTOOL@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ +LT_UNDEF = @LT_UNDEF@ + +INSTALL = @INSTALL@ +INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ +INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@ +INSTALL_DATA = @INSTALL_DATA@ + +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AWK = @AWK@ +LD = @LD@ +LN_S = @LN_S@ +NM = @NM@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +CC = @CC@ +CPP = @CPP@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ +LIBS = @LIBS@ + +INCDIR = $(srcdir)/../include +CPPFLAGS = -DHAVE_CONFIG_H -DBUILDING_NCURSES -I../ncurses @CPPFLAGS@ + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +BUILD_CPPFLAGS = -DHAVE_CONFIG_H -DUSE_BUILD_CC -I../ncurses -I$(srcdir) -I../include -I$(INCDIR) @BUILD_CPPFLAGS@ +BUILD_CC = @BUILD_CC@ +BUILD_CCFLAGS = @BUILD_CFLAGS@ +BUILD_LDFLAGS = @BUILD_LDFLAGS@ +BUILD_LIBS = @BUILD_LIBS@ + +# The executables built in this directory are used for generating source that +# is compiled into the build, or are test-programs that are not installed. + +BUILD_EXEEXT = @BUILD_EXEEXT@ +x = @EXEEXT@ + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +LINK = $(LIBTOOL) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ + +SHLIB_DIRS = -L../lib +SHLIB_LIST = $(SHLIB_DIRS) @SHLIB_LIST@ @LIBS@ +TINFO_LIST = $(SHLIB_DIRS) @TINFO_LIST@ @LIBS@ +TICS_LIST = $(SHLIB_DIRS) @TICS_LIST@ @LIBS@ + +RPATH_LIST = @RPATH_LIST@ +RESULTING_SYMS = @RESULTING_SYMS@ +VERSIONED_SYMS = @VERSIONED_SYMS@ +MK_SHARED_LIB = @MK_SHARED_LIB@ + +NCURSES_MAJOR = @NCURSES_MAJOR@ +NCURSES_MINOR = @NCURSES_MINOR@ +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ + +RANLIB = @LIB_PREP@ + +LIBRARIES = @Libs_To_Make@ + +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ +LINT_LIBS = -lncurses @LIBS@ + +FALLBACK_LIST = @FALLBACK_LIST@ + +USE_BIG_STRINGS = @USE_BIG_STRINGS@ +TERMINFO_CAPS = $(top_srcdir)/include/@TERMINFO_CAPS@ +CAPLIST = $(TERMINFO_CAPS) $(top_srcdir)/include/Caps-ncurses + +TERMINFO = @TERMINFO@ +TERMINFO_SRC = @TERMINFO_SRC@ +TIC_PATH = @TIC@ +INFOCMP_PATH = @INFOCMP@ + +AUTO_SRC = \ + ./codes.c \ + ./comp_captab.c \ + ./comp_userdefs.c \ + ./expanded.c \ + ./fallback.c \ + ./lib_gen.c \ + ./lib_keyname.c \ + ./link_test.c \ + ./names.c \ + ./unctrl.c \ + init_keytry.h \ + keys.list + +HEADER_DEPS = @INTERNALS_HDR@ \ + ../include/ncurses_cfg.h \ + ../include/ncurses_def.h \ + ../include/ncurses_dll.h \ + ../include/curses.h \ + ../include/term.h \ + ../include/unctrl.h \ + $(INCDIR)/nc_alloc.h \ + $(INCDIR)/nc_panel.h \ + $(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 \ + $(srcdir)/term.priv.h + +TEST_DEPS = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@ +TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@ +TEST_LDFLAGS = @LD_MODEL@ $(TEST_ARGS) @LIBS@ @LOCAL_LDFLAGS@ @LDFLAGS@ + +TEST_PROGS = \ + captoinfo$x \ + hardscroll$x \ + hashmap$x \ + lib_mvcur$x \ + link_test$x \ + report_hashing$x + +LOCAL_LIBDIR = @top_builddir@/lib + +base = $(srcdir)/base +serial = $(srcdir)/tty +tinfo = $(srcdir)/tinfo +trace = $(srcdir)/trace +wide = $(srcdir)/widechar +win32con = $(srcdir)/win32con + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : test_progs + +all libs :: $(AUTO_SRC) ../lib $(LIBRARIES) + +@CHECK_BUILD@all libs :: report_offsets$(BUILD_EXEEXT) + +sources: $(AUTO_SRC) + +$(DESTDIR)$(bindir) \ +$(DESTDIR)$(libdir) : + mkdir -p $@ + +../lib : ; mkdir $@ + +./fallback.c : $(tinfo)/MKfallback.sh + $(SHELL) -e $(tinfo)/MKfallback.sh $(TERMINFO) $(TERMINFO_SRC) "$(TIC_PATH)" "$(INFOCMP_PATH)" $(FALLBACK_LIST) >$@ + +./lib_gen.c : $(base)/MKlib_gen.sh ../include/curses.h + $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" generated <../include/curses.h >$@ + +init_keytry.h : make_keys$(BUILD_EXEEXT) keys.list + ./make_keys$(BUILD_EXEEXT) keys.list > $@ + +keys.list : $(tinfo)/MKkeys_list.sh + AWK=$(AWK) $(SHELL) $(tinfo)/MKkeys_list.sh $(CAPLIST) | LC_ALL=C sort >$@ + +make_keys$(BUILD_EXEEXT) : \ + build.priv.h \ + $(tinfo)/make_keys.c \ + ./names.c + $(BUILD_CC) -o $@ $(BUILD_CPPFLAGS) $(BUILD_CCFLAGS) $(tinfo)/make_keys.c $(BUILD_LDFLAGS) $(BUILD_LIBS) + +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) + +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) + ./report_offsets$(BUILD_EXEEXT) + +./expanded.c : $(srcdir)/curses.priv.h $(serial)/MKexpanded.sh + $(SHELL) -e $(serial)/MKexpanded.sh "$(CPP)" $(CPPFLAGS) > $@ + +./comp_captab.c: \ + make_hash$(BUILD_EXEEXT) \ + ../include/hashsize.h \ + $(tinfo)/MKcaptab.sh \ + $(tinfo)/MKcaptab.awk + $(SHELL) -e $(tinfo)/MKcaptab.sh $(AWK) $(USE_BIG_STRINGS) $(tinfo)/MKcaptab.awk $(CAPLIST) > $@ + +./comp_userdefs.c: \ + make_hash$(BUILD_EXEEXT) \ + ../include/hashsize.h \ + $(tinfo)/MKuserdefs.sh + $(SHELL) -e $(tinfo)/MKuserdefs.sh $(AWK) $(USE_BIG_STRINGS) $(CAPLIST) > $@ + +./lib_keyname.c: keys.list $(base)/MKkeyname.awk + $(AWK) -f $(base)/MKkeyname.awk bigstrings=$(USE_BIG_STRINGS) keys.list > $@ + +./codes.c: $(tinfo)/MKcodes.awk + $(AWK) -f $(tinfo)/MKcodes.awk bigstrings=$(USE_BIG_STRINGS) $(CAPLIST) >$@ + +./names.c: $(tinfo)/MKnames.awk + $(AWK) -f $(tinfo)/MKnames.awk bigstrings=$(USE_BIG_STRINGS) $(CAPLIST) >$@ + +./unctrl.c: $(base)/MKunctrl.awk + echo | $(AWK) -f $(base)/MKunctrl.awk bigstrings=$(USE_BIG_STRINGS) >$@ + +tags: + $(CTAGS) *.[ch] */*.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] */*.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac + -test -d trace || rm -f trace + -rm -f $(TEST_PROGS) + +clean :: mostlyclean + -rm -f $(AUTO_SRC) + -rm -f make_keys$(BUILD_EXEEXT) + -rm -f make_hash$(BUILD_EXEEXT) + -rm -f report_offsets$(BUILD_EXEEXT) + -rm -rf .libs *.dSYM *.map + +distclean :: clean + -rm -f Makefile + +realclean :: distclean + +# These rules are used to allow "make -n" to work on a clean directory-tree +../include/hashsize.h \ +../include/parametrized.h \ +../include/term.h : + ( cd ../include && $(MAKE) $(TOP_MFLAGS) ) + +# These rules build test-programs for the modules that have test-drivers +@MAKE_PHONY@.PHONY : test_progs +test_progs : $(TEST_PROGS) + +./link_test.c : $(base)/MKlib_gen.sh ../include/curses.h + $(SHELL) -e $(base)/MKlib_gen.sh "$(CPP) $(CPPFLAGS)" "$(AWK)" implemented <../include/curses.h >$@ + +captoinfo$x : $(tinfo)/captoinfo.c $(TEST_DEPS) + @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DMAIN $(tinfo)/captoinfo.c $(TEST_LDFLAGS) + +hardscroll$x : $(serial)/hardscroll.c $(TEST_DEPS) + @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DSCROLLDEBUG $(serial)/hardscroll.c $(TEST_LDFLAGS) + +hashmap$x : $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_DEPS) + @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DHASHDEBUG $(serial)/hashmap.c $(serial)/hardscroll.c $(TEST_LDFLAGS) + +lib_mvcur$x : $(serial)/lib_mvcur.c $(TEST_DEPS) \ + ../@DFT_OBJ_SUBDIR@/dump_entry$o + @ECHO_LD@ $(LIBTOOL_LINK) -o $@ $(CFLAGS_DEFAULT) -DNCURSES_TEST -I$(serial)/../../progs $(serial)/lib_mvcur.c ../@DFT_OBJ_SUBDIR@/dump_entry$o $(TEST_LDFLAGS) + +link_test$x : ./link_test.c $(TEST_DEPS) \ + ../@DFT_OBJ_SUBDIR@/link_test$o + @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) ../@DFT_OBJ_SUBDIR@/link_test$o $(TEST_LDFLAGS) + +../@DFT_OBJ_SUBDIR@/dump_entry$o: + ( cd ../progs && $(MAKE) ../@DFT_OBJ_SUBDIR@/dump_entry$o ) + +report_hashing$x : \ + $(srcdir)/curses.priv.h \ + $(srcdir)/report_hashing.c $(TEST_DEPS) + @ECHO_LD@ $(CC) -o $@ $(CFLAGS_DEFAULT) report_hashing.c $(TEST_LDFLAGS) + +# Verify that each header-file can be compiled without including another. +@MAKE_PHONY@.PHONY : check_headers +check_headers: + @$(SHELL) -c "for header in *.h;\ + do \ + echo \"** testing \$${header}\" ; \ + echo \"#include <\$${header}>\" >headers.c; \ + echo \"int main(void) { return 0; }\" >>headers.c; \ + $(CC) -c $(CFLAGS) $(CPPFLAGS) headers.c; \ + done" + -@rm -f headers.* + +@MAKE_PHONY@.PHONY : check_objects +check_objects: test_progs + +check :: check_headers check_objects + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-6.3/ncurses/README b/deps/ncurses-6.3/ncurses/README new file mode 100644 index 0000000..f52a652 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/README @@ -0,0 +1,51 @@ +------------------------------------------------------------------------------- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998-2006,2009 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. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.11 2020/02/02 23:34:34 tom Exp $ +------------------------------------------------------------------------------- +For discussion of the package internals, see hackguide.html in the doc/html +directory. + +------------------------------------------------------------------------------- +The llib-lXXXX files could be used as lint-library sources (and were, at one +time). However, they are actually used as a documentation aid to keep track +of changes to the public/private interfaces in ncurses. Most of the text in +these files is generated using cproto; some manual cleanup and adjustment of +types (to reflect #define's in curses.h) is needed. The functions listed in +the llib-lXXXX files do not correspond to the default configure options; some +additional ones are added to include "all" of the entrypoints for each of the +major configurations (normal, wide-character, threaded): + + --disable-macros + --disable-root-environ + --enable-expanded + --enable-getcap + --enable-getcap-cache + --enable-sp-funcs + --enable-termcap + --with-develop diff --git a/deps/ncurses-5.9/ncurses/README.IZ b/deps/ncurses-6.3/ncurses/README.IZ similarity index 94% rename from deps/ncurses-5.9/ncurses/README.IZ rename to deps/ncurses-6.3/ncurses/README.IZ index 78206cd..a9e52ea 100644 --- a/deps/ncurses-5.9/ncurses/README.IZ +++ b/deps/ncurses-6.3/ncurses/README.IZ @@ -1,5 +1,6 @@ ------------------------------------------------------------------------------- --- Copyright (c) 2002,2006 Free Software Foundation, Inc. -- +-- Copyright 2020,2021 Thomas E. Dickey -- +-- Copyright 2002,2006 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 -- @@ -25,16 +26,16 @@ -- sale, use or other dealings in this Software without prior written -- -- authorization. -- ------------------------------------------------------------------------------- --- $Id: README.IZ,v 1.2 2006/04/22 23:13:05 tom Exp $ +-- $Id: README.IZ,v 1.5 2021/06/17 21:20:30 tom Exp $ --------------------------------------------------------------------- Here is the patch. I did no testing whatsoever with event watching -requests present (I need some applications which exersize this before +requests present (I need some applications which exercise this before this, probably lynx ;-), but the code looks working "the normal way". I had no way to test that the poll() branch compiles/works... -Here is the API: +Here is the API: *) two new functions wgetch_events() wgetstrn_event() are introduced, which allow an event-watch specification given as the last argument; diff --git a/deps/ncurses-5.9/ncurses/SigAction.h b/deps/ncurses-6.3/ncurses/SigAction.h similarity index 95% rename from deps/ncurses-5.9/ncurses/SigAction.h rename to deps/ncurses-6.3/ncurses/SigAction.h index 5dfde64..30f2474 100644 --- a/deps/ncurses-5.9/ncurses/SigAction.h +++ b/deps/ncurses-6.3/ncurses/SigAction.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2003,2005 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 * @@ -32,7 +33,7 @@ ****************************************************************************/ /* - * $Id: SigAction.h,v 1.8 2005/08/06 20:05:32 tom Exp $ + * $Id: SigAction.h,v 1.10 2020/02/02 23:34:34 tom Exp $ * * This file exists to handle non-POSIX systems which don't have <unistd.h>, * and usually no sigaction() nor <termios.h> diff --git a/deps/ncurses-5.9/ncurses/base/MKkeyname.awk b/deps/ncurses-6.3/ncurses/base/MKkeyname.awk similarity index 82% rename from deps/ncurses-5.9/ncurses/base/MKkeyname.awk rename to deps/ncurses-6.3/ncurses/base/MKkeyname.awk index bb2599a..b3d04ee 100644 --- a/deps/ncurses-5.9/ncurses/base/MKkeyname.awk +++ b/deps/ncurses-6.3/ncurses/base/MKkeyname.awk @@ -1,6 +1,7 @@ -# $Id: MKkeyname.awk,v 1.45 2010/12/19 01:36:14 tom Exp $ +# $Id: MKkeyname.awk,v 1.51 2020/02/02 23:34:34 tom Exp $ ############################################################################## -# Copyright (c) 1999-2009,2010 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2016,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"), # @@ -65,18 +66,18 @@ END { print "" print "#define SIZEOF_TABLE 256" print "#define MyTable _nc_globals.keyname_table" + print "#define MyInit _nc_globals.init_keyname" print "" print "NCURSES_EXPORT(NCURSES_CONST char *)" print "safe_keyname (SCREEN *sp, int c)" print "{" - print " int i;" print " char name[20];" - print " char *p;" print " NCURSES_CONST char *result = 0;" print "" print " if (c == -1) {" print " result = \"-1\";" print " } else {" + print " int i;" if (bigstrings) { print " for (i = 0; _nc_key_names[i].offset != -1; i++) {" print " if (_nc_key_names[i].code == c) {" @@ -96,21 +97,36 @@ END { print " if (result == 0 && (c >= 0 && c < SIZEOF_TABLE)) {" print " if (MyTable == 0)" print " MyTable = typeCalloc(char *, SIZEOF_TABLE);" + print "" print " if (MyTable != 0) {" + print " int m_prefix = (sp == 0 || sp->_use_meta);" + print "" + print " /* if sense of meta() changed, discard cached data */" + print " if (MyInit != (m_prefix + 1)) {" + print " MyInit = m_prefix + 1;" + print " for (i = 0; i < SIZEOF_TABLE; ++i) {" + print " if (MyTable[i]) {" + print " FreeAndNull(MyTable[i]);" + print " }" + print " }" + print " }" + print "" + print " /* create and cache result as needed */" print " if (MyTable[c] == 0) {" print " int cc = c;" - print " p = name;" - print " if (cc >= 128 && (sp == 0 || sp->_use_meta)) {" - print " strcpy(p, \"M-\");" + print " char *p = name;" + print "#define P_LIMIT (sizeof(name) - (size_t) (p - name))" + print " if (cc >= 128 && m_prefix) {" + print " _nc_STRCPY(p, \"M-\", P_LIMIT);" print " p += 2;" print " cc -= 128;" print " }" print " if (cc < 32)" - print " sprintf(p, \"^%c\", cc + '@');" + print " _nc_SPRINTF(p, _nc_SLIMIT(P_LIMIT) \"^%c\", cc + '@');" print " else if (cc == 127)" - print " strcpy(p, \"^?\");" + print " _nc_STRCPY(p, \"^?\", P_LIMIT);" print " else" - print " sprintf(p, \"%c\", cc);" + print " _nc_SPRINTF(p, _nc_SLIMIT(P_LIMIT) \"%c\", cc);" print " MyTable[c] = strdup(name);" print " }" print " result = MyTable[c];" @@ -119,7 +135,7 @@ END { print " } else if (result == 0 && HasTerminal(sp)) {" print " int j, k;" print " char * bound;" - print " TERMTYPE *tp = &(TerminalOf(sp)->type);" + print " TERMTYPE2 *tp = &TerminalType(TerminalOf(sp));" print " unsigned save_trace = _nc_tracing;" print "" print " _nc_tracing = 0; /* prevent recursion via keybound() */" @@ -150,8 +166,8 @@ END { print "#if NO_LEAKS" print "void _nc_keyname_leaks(void)" print "{" - print " int j;" print " if (MyTable != 0) {" + print " int j;" print " for (j = 0; j < SIZEOF_TABLE; ++j) {" print " FreeIfNeeded(MyTable[j]);" print " }" diff --git a/deps/ncurses-5.9/ncurses/base/MKlib_gen.sh b/deps/ncurses-6.3/ncurses/base/MKlib_gen.sh similarity index 78% rename from deps/ncurses-5.9/ncurses/base/MKlib_gen.sh rename to deps/ncurses-6.3/ncurses/base/MKlib_gen.sh index 66ae295..9dc0855 100755 --- a/deps/ncurses-5.9/ncurses/base/MKlib_gen.sh +++ b/deps/ncurses-6.3/ncurses/base/MKlib_gen.sh @@ -2,10 +2,11 @@ # # MKlib_gen.sh -- generate sources from curses.h macro definitions # -# ($Id: MKlib_gen.sh,v 1.43 2011/01/22 19:47:29 tom Exp $) +# ($Id: MKlib_gen.sh,v 1.71 2021/09/26 22:08:53 tom Exp $) # ############################################################################## -# Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. # +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2016,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"), # @@ -62,10 +63,36 @@ 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 -preprocessor="$1 -DNCURSES_INTERNALS -I../include" +preprocessor="$1 -DNCURSES_WATTR_MACROS -DNCURSES_INTERNALS -I../include" AWK="$2" USE="$3" +# A patch discussed here: +# https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html +# +# introduces spurious #line markers into the preprocessor output. The result +# appears in gcc 5.0 and (with modification) in 5.1, making it necessary to +# determine if we are using gcc, and if so, what version because the proposed +# solution uses a nonstandard option. +# +# As illustrated in +# https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60723 +# +# gcc developers chose to ignore the problems with this, and summarized those +# as "intriguing problems" in +# https://gcc.gnu.org/gcc-5/porting_to.html + +PRG=`echo "$1" | "$AWK" '{ sub(/^[ ]*/,""); sub(/[ ].*$/, ""); print; }' || exit 0` +FSF=`("$PRG" --version 2>/dev/null || exit 0) | fgrep "Free Software Foundation" | head -n 1` +ALL=`"$PRG" -dumpversion 2>/dev/null || exit 0` +ONE=`echo "$ALL" | sed -e 's/[^0-9].*$//'` +if test -n "$FSF" && test -n "$ALL" && test -n "$ONE" ; then + if test "$ONE" -ge 5 ; then + echo ".. adding -P option to work around $PRG $ALL" >&2 + preprocessor="$preprocessor -P" + fi +fi + PID=$$ ED1=sed1_${PID}.sed ED2=sed2_${PID}.sed @@ -74,14 +101,14 @@ ED4=sed4_${PID}.sed AW1=awk1_${PID}.awk AW2=awk2_${PID}.awk TMP=gen__${PID}.c -trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP" 0 1 2 5 15 +trap "rm -f $ED1 $ED2 $ED3 $ED4 $AW1 $AW2 $TMP" 0 1 2 3 15 ALL=$USE if test "$USE" = implemented ; then - CALL="call_" cat >$ED1 <<EOF1 /^extern.*implemented/{ h + s/GCC_DEPRECATED([^)]*)// s/NCURSES_SP_NAME(\([^)]*\))/NCURSES_SP_NAME___\1/ h s/^.*implemented:\([^ *]*\).*/P_POUNDCif_USE_\1_SUPPORT/p @@ -100,7 +127,6 @@ if test "$USE" = implemented ; then } EOF1 else - CALL="" cat >$ED1 <<EOF1 /^extern.*${ALL}/{ h @@ -159,7 +185,8 @@ EOF3 if test "$USE" = generated ; then cat >$ED4 <<EOF - s/^\(.*\) \(.*\) (\(.*\))\$/NCURSES_EXPORT(\1) (\2) (\3)/ + s/^\(.*\) \(.*\) (\(.*\))\$/NCURSES_EXPORT(\1) \2 (\3)/ + /attr_[sg]et.* z)/s,z),z GCC_UNUSED), EOF else cat >$ED4 <<EOF @@ -213,7 +240,7 @@ $0 !~ /^P_/ { } else if ( $first == "bool" || $first == "NCURSES_BOOL" ) { returnType = "Bool"; } else if ( $second == "*" ) { - returnType = "Ptr"; + returnType = ($1 == "NCURSES_CONST") ? "CPtr" : "Ptr"; } else { returnType = "Code"; } @@ -224,6 +251,9 @@ $0 !~ /^P_/ { break; } } + if (using == "implemented") { + printf "#undef %s\n", $myfunc; + } print $0; print "{"; argcount = 1; @@ -256,6 +286,11 @@ $0 !~ /^P_/ { dotrace = 0; } + do_getstr = 0; + if ($myfunc ~ /get[n]?str/) { + do_getstr = 1; + } + call = "@@T((T_CALLED(\"" args = "" comma = "" @@ -292,7 +327,11 @@ $0 !~ /^P_/ { call = call "%s" } else if (pointer) { if ( argtype == "char" ) { - call = call "%s" + if (do_getstr) { + call = call "%p" + } else { + call = call "%s" + } comma = comma "_nc_visbuf2(" num "," pointer = 0; } else { @@ -342,7 +381,7 @@ $0 !~ /^P_/ { call = call ")); " if (dotrace) - printf "%s", call + printf "%s\n\t@@", call if (match($0, "^void")) { call = "" @@ -381,9 +420,10 @@ EOF1 cat >$AW2 <<EOF1 BEGIN { + printf "/* This file was generated by $0 $USE */\n" + print "" print "/*" print " * DO NOT EDIT THIS FILE BY HAND!" - printf " * It is generated by $0 %s.\n", "$USE" if ( "$USE" == "generated" ) { print " *" print " * This is a file of trivial functions generated from macro" @@ -400,20 +440,52 @@ BEGIN { print "#include <ncurses_cfg.h>" print "" print "#undef NCURSES_NOMACROS /* _this_ file uses macros */" + print "#define NCURSES_NOMACROS 1" print "" print "#include <curses.priv.h>" print "" - print "#undef vw_scanw" - print "#undef vwscanw" - print "" - print "#undef vw_printw" - print "#undef vwprintw" } /^DECLARATIONS/ {start = 1; next;} - {if (start) print \$0;} + { + if (start) { + if ( "$USE" == "generated" ) { + print \$0; + } else if ( \$0 ~ /^[{}]?\$/ ) { + print \$0; + } else if ( \$0 ~ /;/ ) { + print \$0; + } else { + calls[start] = \$0; + print \$0; + start++; + } + } + } END { if ( "$USE" != "generated" ) { - print "int main(void) { return 0; }" + print "int main(void)" + print "{" + for (n = 1; n < start; ++n) { + value = calls[n]; + if ( value !~ /P_POUNDC/ ) { + gsub(/[ \t]+/," ",value); + sub(/^[0-9a-zA-Z_]+ /,"",value); + sub(/^[*][ \t]*/,"",value); + gsub("struct[ \t]*[0-9a-zA-Z_]+[ \t]*[*]","",value); + 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(/ void /,"",value); + sub(/^/,"call_",value); + gsub(/ (a[0-9]|z) /, " 0 ", value); + gsub(/ int[ \t]*[(][^)]+[)][(][^)]+[)]/, "0", value); + printf "\t%s;\n", value; + } else { + print value; + } + } + print " return 0;" + print "}" } } EOF1 @@ -422,6 +494,8 @@ cat >$TMP <<EOF #include <ncurses_cfg.h> #undef NCURSES_NOMACROS #include <curses.h> +#include <term.h> +#include <unctrl.h> DECLARATIONS @@ -430,7 +504,7 @@ EOF sed -n -f $ED1 \ | sed -e 's/NCURSES_EXPORT(\(.*\)) \(.*\) (\(.*\))/\1 \2(\3)/' \ | sed -f $ED2 \ -| $AWK -f $AW1 using=$USE \ +| "$AWK" -f $AW1 using="$USE" \ | sed \ -e 's/ [ ]*$//g' \ -e 's/^\([a-zA-Z_][a-zA-Z_]*[ *]*\)/\1 gen_/' \ @@ -442,7 +516,7 @@ $preprocessor $TMP 2>/dev/null \ -e 's/ / /g' \ -e 's/^ //' \ -e 's/_Bool/NCURSES_BOOL/g' \ -| $AWK -f $AW2 \ +| "$AWK" -f $AW2 \ | sed -f $ED3 \ | sed \ -e 's/^.*T_CALLED.*returnCode( \([a-z].*) \));/ return \1;/' \ diff --git a/deps/ncurses-5.9/ncurses/base/MKunctrl.awk b/deps/ncurses-6.3/ncurses/base/MKunctrl.awk similarity index 95% rename from deps/ncurses-5.9/ncurses/base/MKunctrl.awk rename to deps/ncurses-6.3/ncurses/base/MKunctrl.awk index 2140900..9a2a6db 100644 --- a/deps/ncurses-5.9/ncurses/base/MKunctrl.awk +++ b/deps/ncurses-6.3/ncurses/base/MKunctrl.awk @@ -1,6 +1,7 @@ -# $Id: MKunctrl.awk,v 1.26 2009/07/04 22:05:15 Clemens.Ladisch Exp $ +# $Id: MKunctrl.awk,v 1.29 2020/02/02 23:34:34 tom Exp $ ############################################################################## -# Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2012,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"), # @@ -140,9 +141,10 @@ END { } else { stringname = "unctrl" } - print "\tint check = ChCharOf(ch);" + print "\tint check = (int) ChCharOf(ch);" print "\tconst char *result;" print "" + print "(void) sp;" print "\tif (check >= 0 && check < (int)SIZEOF(unctrl_table)) {" print "#if NCURSES_EXT_FUNCS" print "\t\tif ((sp != 0)" diff --git a/deps/ncurses-6.3/ncurses/base/README b/deps/ncurses-6.3/ncurses/base/README new file mode 100644 index 0000000..2710b36 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/README @@ -0,0 +1,36 @@ +------------------------------------------------------------------------------- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998,2006 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. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.3 2020/02/02 23:34:34 tom Exp $ +------------------------------------------------------------------------------- + +The functions in this directory are the generic (not device-specific) modules +of ncurses. + +As a rule, these modules should not depend directly on term.h references and +associated terminfo function and variables. diff --git a/deps/ncurses-5.9/ncurses/base/define_key.c b/deps/ncurses-6.3/ncurses/base/define_key.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/define_key.c rename to deps/ncurses-6.3/ncurses/base/define_key.c index a49b094..fb9ae36 100644 --- a/deps/ncurses-5.9/ncurses/base/define_key.c +++ b/deps/ncurses-6.3/ncurses/base/define_key.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2014 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 * @@ -33,7 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: define_key.c,v 1.20 2009/11/28 22:53:17 tom Exp $") +MODULE_ID("$Id: define_key.c,v 1.22 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(define_key) (NCURSES_SP_DCLx const char *str, int keycode) @@ -47,7 +48,7 @@ NCURSES_SP_NAME(define_key) (NCURSES_SP_DCLx const char *str, int keycode) unsigned ukey = (unsigned) keycode; #ifdef USE_TERM_DRIVER -#define CallHasKey(keycode) CallDriver_1(SP_PARM, kyExist, keycode) +#define CallHasKey(keycode) CallDriver_1(SP_PARM, td_kyExist, keycode) #else #define CallHasKey(keycode) NCURSES_SP_NAME(has_key)(NCURSES_SP_ARGx keycode) #endif diff --git a/deps/ncurses-5.9/ncurses/base/key_defined.c b/deps/ncurses-6.3/ncurses/base/key_defined.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/key_defined.c rename to deps/ncurses-6.3/ncurses/base/key_defined.c index ef987a5..25d5a67 100644 --- a/deps/ncurses-5.9/ncurses/base/key_defined.c +++ b/deps/ncurses-6.3/ncurses/base/key_defined.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2003-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2003-2006,2009 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 * @@ -32,7 +33,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: key_defined.c,v 1.9 2009/10/24 22:15:47 tom Exp $") +MODULE_ID("$Id: key_defined.c,v 1.10 2020/02/02 23:34:34 tom Exp $") static int find_definition(TRIES * tree, const char *str) diff --git a/deps/ncurses-5.9/ncurses/base/keybound.c b/deps/ncurses-6.3/ncurses/base/keybound.c similarity index 90% rename from deps/ncurses-5.9/ncurses/base/keybound.c rename to deps/ncurses-6.3/ncurses/base/keybound.c index 65e6bfc..bbd912a 100644 --- a/deps/ncurses-5.9/ncurses/base/keybound.c +++ b/deps/ncurses-6.3/ncurses/base/keybound.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1999-2009,2011 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 * @@ -33,7 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: keybound.c,v 1.10 2009/10/24 22:15:47 tom Exp $") +MODULE_ID("$Id: keybound.c,v 1.12 2020/02/02 23:34:34 tom Exp $") /* * Returns the count'th string definition which is associated with the @@ -46,7 +47,10 @@ NCURSES_SP_NAME(keybound) (NCURSES_SP_DCLx int code, int count) T((T_CALLED("keybound(%p, %d,%d)"), (void *) SP_PARM, code, count)); if (SP_PARM != 0 && code >= 0) { - result = _nc_expand_try(SP_PARM->_keytry, (unsigned) code, &count, 0); + result = _nc_expand_try(SP_PARM->_keytry, + (unsigned) code, + &count, + (size_t) 0); } returnPtr(result); } diff --git a/deps/ncurses-6.3/ncurses/base/keyok.c b/deps/ncurses-6.3/ncurses/base/keyok.c new file mode 100644 index 0000000..945228a --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/keyok.c @@ -0,0 +1,103 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2014 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: Thomas E. Dickey 1997-on * + * and: Juergen Pfeifer 2009 * + ****************************************************************************/ + +#include <curses.priv.h> + +MODULE_ID("$Id: keyok.c,v 1.17 2021/06/17 21:26:02 tom Exp $") + +/* + * Enable (or disable) ncurses' interpretation of a keycode by adding (or + * removing) the corresponding 'tries' entry. + * + * Do this by storing a second tree of tries, which records the disabled keys. + * The simplest way to copy is to make a function that returns the string (with + * nulls set to 0200), then use that to reinsert the string into the + * corresponding tree. + */ + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(keyok) (NCURSES_SP_DCLx int c, bool flag) +{ + int code = ERR; + + if (HasTerminal(SP_PARM)) { + T((T_CALLED("keyok(%p, %d,%d)"), (void *) SP_PARM, c, flag)); +#ifdef USE_TERM_DRIVER + code = CallDriver_2(sp, td_kyOk, c, flag); +#else + if (c >= 0) { + int count = 0; + char *s; + unsigned ch = (unsigned) c; + + if (flag) { + while ((s = _nc_expand_try(SP_PARM->_key_ok, + ch, &count, (size_t) 0)) != 0) { + if (_nc_remove_key(&(SP_PARM->_key_ok), ch)) { + code = _nc_add_to_try(&(SP_PARM->_keytry), s, ch); + free(s); + count = 0; + if (code != OK) + break; + } else { + free(s); + } + } + } else { + while ((s = _nc_expand_try(SP_PARM->_keytry, + ch, &count, (size_t) 0)) != 0) { + if (_nc_remove_key(&(SP_PARM->_keytry), ch)) { + code = _nc_add_to_try(&(SP_PARM->_key_ok), s, ch); + free(s); + count = 0; + if (code != OK) + break; + } else { + free(s); + } + } + } + } +#endif + } + returnCode(code); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +keyok(int c, bool flag) +{ + return NCURSES_SP_NAME(keyok) (CURRENT_SCREEN, c, flag); +} +#endif diff --git a/deps/ncurses-5.9/ncurses/base/legacy_coding.c b/deps/ncurses-6.3/ncurses/base/legacy_coding.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/legacy_coding.c rename to deps/ncurses-6.3/ncurses/base/legacy_coding.c index d8c8020..a71aee0 100644 --- a/deps/ncurses-5.9/ncurses/base/legacy_coding.c +++ b/deps/ncurses-6.3/ncurses/base/legacy_coding.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2005,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2005,2009 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 * @@ -33,7 +34,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: legacy_coding.c,v 1.5 2009/10/24 22:15:00 tom Exp $") +MODULE_ID("$Id: legacy_coding.c,v 1.6 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(use_legacy_coding) (NCURSES_SP_DCLx int level) diff --git a/deps/ncurses-5.9/ncurses/base/lib_addch.c b/deps/ncurses-6.3/ncurses/base/lib_addch.c similarity index 91% rename from deps/ncurses-5.9/ncurses/base/lib_addch.c rename to deps/ncurses-6.3/ncurses/base/lib_addch.c index 515ebaf..a144328 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_addch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_addch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -36,7 +37,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_addch.c,v 1.124 2010/04/24 22:41:05 tom Exp $") +MODULE_ID("$Id: lib_addch.c,v 1.138 2021/06/17 21:11:08 tom Exp $") static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT); @@ -51,7 +52,7 @@ static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT); */ /* Return bit mask for clearing color pair number if given ch has color */ -#define COLOR_MASK(ch) (~(attr_t)((ch) & A_COLOR ? A_COLOR : 0)) +#define COLOR_MASK(ch) (~(attr_t)(((ch) & A_COLOR) ? A_COLOR : 0)) static NCURSES_INLINE NCURSES_CH_T render_char(WINDOW *win, NCURSES_CH_T ch) @@ -117,14 +118,18 @@ _nc_render(WINDOW *win, NCURSES_CH_T ch) #endif static bool -newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T * ypos) +newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T *ypos) { bool result = FALSE; - if (*ypos >= win->_regtop && *ypos == win->_regbottom) { - *ypos = win->_regbottom; - result = TRUE; - } else { + if (*ypos >= win->_regtop && *ypos <= win->_regbottom) { + if (*ypos == win->_regbottom) { + *ypos = win->_regbottom; + result = TRUE; + } else if (*ypos < win->_maxy) { + *ypos = (NCURSES_SIZE_T) (*ypos + 1); + } + } else if (*ypos < win->_maxy) { *ypos = (NCURSES_SIZE_T) (*ypos + 1); } return result; @@ -135,7 +140,7 @@ newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T * ypos) * wrapped the cursor. We don't do anything with this flag except set it when * wrapping, and clear it whenever we move the cursor. If we try to wrap at * the lower-right corner of a window, we cannot move the cursor (since that - * wouldn't be legal). So we return an error (which is what SVr4 does). + * wouldn't be legal). So we return an error (which is what SVr4 does). * Unlike SVr4, we can successfully add a character to the lower-right corner * (Solaris 2.6 does this also, however). */ @@ -203,13 +208,28 @@ _nc_build_wch(WINDOW *win, ARG_CH_T ch) WINDOW_EXT(win, addch_x) = x; WINDOW_EXT(win, addch_y) = y; + /* + * If the background character is a wide-character, that may interfere with + * processing multibyte characters in this function. + */ + if (!is8bits(CharOf(CHDEREF(ch)))) { + if (WINDOW_EXT(win, addch_used) != 0) { + /* discard the incomplete multibyte character */ + WINDOW_EXT(win, addch_used) = 0; + TR(TRACE_VIRTPUT, + ("Alert discarded incomplete multibyte")); + } + return 1; + } + init_mb(state); buffer[WINDOW_EXT(win, addch_used)] = (char) CharOf(CHDEREF(ch)); WINDOW_EXT(win, addch_used) += 1; buffer[WINDOW_EXT(win, addch_used)] = '\0'; if ((len = (int) mbrtowc(&result, buffer, - WINDOW_EXT(win, addch_used), &state)) > 0) { + (size_t) WINDOW_EXT(win, addch_used), + &state)) > 0) { attr_t attrs = AttrOf(CHDEREF(ch)); if_EXT_COLORS(int pair = GetPair(CHDEREF(ch))); SetChar(CHDEREF(ch), result, attrs); @@ -269,11 +289,11 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch) /* handle EILSEQ (i.e., when len >= -1) */ if (len == -1 && is8bits(CharOf(ch))) { - int rc = OK; const char *s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (chtype) CharOf(ch)); if (s[1] != '\0') { + int rc = OK; while (*s != '\0') { rc = waddch(win, UChar(*s) | attr); if (rc != OK) @@ -298,7 +318,7 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch) * adjustments. */ if_WIDEC({ - int len = wcwidth(CharOf(ch)); + int len = _nc_wacs_width(CharOf(ch)); int i; int j; wchar_t *chars; @@ -338,6 +358,7 @@ waddch_literal(WINDOW *win, NCURSES_CH_T ch) return ERR; x = win->_curx; y = win->_cury; + CHECK_POSITION(win, x, y); line = win->_line + y; } /* @@ -411,10 +432,12 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch) #endif const char *s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx t); int tabsize = 8; + /* * If we are using the alternate character set, forget about locale. * Otherwise, if unctrl() returns a single-character or the locale - * claims the code is printable, treat it that way. + * claims the code is printable (and not also a control character), + * treat it that way. */ if ((AttrOf(ch) & A_ALTCHARSET) || ( @@ -424,14 +447,15 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch) s[1] == 0 ) || ( - isprint(t) + (isprint((int) t) && !iscntrl((int) t)) #if USE_WIDEC_SUPPORT || ((sp == 0 || !sp->_legacy_coding) && (WINDOW_EXT(win, addch_used) || !_nc_is_charable(CharOf(ch)))) #endif - )) + )) { return waddch_literal(win, ch); + } /* * Handle carriage control and other codes that are not printable, or are @@ -439,6 +463,7 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch) */ x = win->_curx; y = win->_cury; + CHECK_POSITION(win, x, y); switch (t) { case '\t': @@ -497,7 +522,7 @@ waddch_nosync(WINDOW *win, const NCURSES_CH_T ch) default: while (*s) { NCURSES_CH_T sch; - SetChar(sch, *s++, AttrOf(ch)); + SetChar(sch, UChar(*s++), AttrOf(ch)); if_EXT_COLORS(SetPair(sch, GetPair(ch))); if (waddch_literal(win, sch) == ERR) return ERR; diff --git a/deps/ncurses-5.9/ncurses/base/lib_addstr.c b/deps/ncurses-6.3/ncurses/base/lib_addstr.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_addstr.c rename to deps/ncurses-6.3/ncurses/base/lib_addstr.c index d73ce00..a1e8829 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_addstr.c +++ b/deps/ncurses-6.3/ncurses/base/lib_addstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -44,7 +45,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_addstr.c,v 1.51 2010/12/19 01:22:58 tom Exp $") +MODULE_ID("$Id: lib_addstr.c,v 1.57 2020/12/05 20:06:19 tom Exp $") NCURSES_EXPORT(int) waddnstr(WINDOW *win, const char *astr, int n) @@ -59,10 +60,10 @@ waddnstr(WINDOW *win, const char *astr, int n) ("... current %s", _traceattr(WINDOW_ATTRS(win)))); code = OK; if (n < 0) - n = (int) strlen(astr); + n = INT_MAX; TR(TRACE_VIRTPUT, ("str is not null, length = %d", n)); - while ((n-- > 0) && (*str != '\0')) { + while ((*str != '\0') && (n-- > 0)) { NCURSES_CH_T ch; TR(TRACE_VIRTPUT, ("*str = %#o", UChar(*str))); SetChar(ch, UChar(*str++), A_NORMAL); @@ -87,7 +88,7 @@ waddchnstr(WINDOW *win, const chtype *astr, int n) T((T_CALLED("waddchnstr(%p,%p,%d)"), (void *) win, (const void *) astr, n)); - if (!win) + if (!win || !astr) returnCode(ERR); y = win->_cury; @@ -119,8 +120,10 @@ NCURSES_EXPORT(int) _nc_wchstrlen(const cchar_t *s) { int result = 0; - while (CharOf(s[result]) != L'\0') { - result++; + if (s != 0) { + while (CharOf(s[result]) != L'\0') { + result++; + } } return result; } @@ -181,7 +184,7 @@ wadd_wchnstr(WINDOW *win, const cchar_t *astr, int n) if (isWidecExt(astr[i])) continue; - len = wcwidth(CharOf(astr[i])); + len = _nc_wacs_width(CharOf(astr[i])); if (x + len - 1 <= win->_maxx) { line->text[x] = _nc_render(win, astr[i]); @@ -192,6 +195,8 @@ wadd_wchnstr(WINDOW *win, const cchar_t *astr, int n) } SetWidecExt(line->text[x + j], j); } + } else { + len = 1; } x = (NCURSES_SIZE_T) (x + len); end += len - 1; @@ -227,10 +232,10 @@ waddnwstr(WINDOW *win, const wchar_t *str, int n) ("... current %s", _traceattr(WINDOW_ATTRS(win)))); code = OK; if (n < 0) - n = (int) wcslen(str); + n = INT_MAX; TR(TRACE_VIRTPUT, ("str is not null, length = %d", n)); - while ((n-- > 0) && (*str != L('\0'))) { + while ((*str != L('\0')) && (n-- > 0)) { NCURSES_CH_T ch; TR(TRACE_VIRTPUT, ("*str[0] = %#lx", (unsigned long) *str)); SetChar(ch, *str++, A_NORMAL); diff --git a/deps/ncurses-5.9/ncurses/base/lib_beep.c b/deps/ncurses-6.3/ncurses/base/lib_beep.c similarity index 90% rename from deps/ncurses-5.9/ncurses/base/lib_beep.c rename to deps/ncurses-6.3/ncurses/base/lib_beep.c index 9d7f7fd..b1a60b9 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_beep.c +++ b/deps/ncurses-6.3/ncurses/base/lib_beep.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2013,2014 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 * @@ -46,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_beep.c,v 1.15 2009/10/24 22:02:14 tom Exp $") +MODULE_ID("$Id: lib_beep.c,v 1.18 2020/02/02 23:34:34 tom Exp $") /* * beep() @@ -65,18 +66,15 @@ NCURSES_SP_NAME(beep) (NCURSES_SP_DCL0) #ifdef USE_TERM_DRIVER if (SP_PARM != 0) - res = CallDriver_1(SP_PARM, doBeepOrFlash, TRUE); + res = CallDriver_1(SP_PARM, td_doBeepOrFlash, TRUE); #else /* FIXME: should make sure that we are not in altchar mode */ if (cur_term == 0) { res = ERR; } else if (bell) { - TPUTS_TRACE("bell"); - res = putp(bell); - _nc_flush(); + res = NCURSES_PUTP2_FLUSH("bell", bell); } else if (flash_screen) { - TPUTS_TRACE("flash_screen"); - res = putp(flash_screen); + res = NCURSES_PUTP2_FLUSH("flash_screen", flash_screen); _nc_flush(); } #endif diff --git a/deps/ncurses-6.3/ncurses/base/lib_bkgd.c b/deps/ncurses-6.3/ncurses/base/lib_bkgd.c new file mode 100644 index 0000000..4f99080 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_bkgd.c @@ -0,0 +1,273 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2014,2016 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Juergen Pfeifer 1997 * + * and: Sven Verdoolaege 2000 * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +#include <curses.priv.h> + +MODULE_ID("$Id: lib_bkgd.c,v 1.63 2021/05/08 14:58:12 tom Exp $") + +static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); + +/* + * Set the window's background information. + */ +#if USE_WIDEC_SUPPORT +NCURSES_EXPORT(void) +#else +static NCURSES_INLINE void +#endif +wbkgrndset(WINDOW *win, const ARG_CH_T ch) +{ + T((T_CALLED("wbkgrndset(%p,%s)"), (void *) win, _tracech_t(ch))); + + if (win) { + attr_t off = AttrOf(win->_nc_bkgd); + attr_t on = AttrOf(CHDEREF(ch)); + + toggle_attr_off(WINDOW_ATTRS(win), off); + toggle_attr_on(WINDOW_ATTRS(win), on); + +#if NCURSES_EXT_COLORS + { + int pair; + + if (GetPair(win->_nc_bkgd) != 0) + SET_WINDOW_PAIR(win, 0); + if ((pair = GetPair(CHDEREF(ch))) != 0) + SET_WINDOW_PAIR(win, pair); + } +#endif + + if (CharOf(CHDEREF(ch)) == L('\0')) { + SetChar(win->_nc_bkgd, BLANK_TEXT, AttrOf(CHDEREF(ch))); + if_EXT_COLORS(SetPair(win->_nc_bkgd, GetPair(CHDEREF(ch)))); + } else { + win->_nc_bkgd = CHDEREF(ch); + } +#if USE_WIDEC_SUPPORT + /* + * If we're compiled for wide-character support, _bkgrnd is the + * preferred location for the background information since it stores + * more than _bkgd. Update _bkgd each time we modify _bkgrnd, so the + * macro getbkgd() will work. + */ + { + cchar_t wch; + int tmp; + + memset(&wch, 0, sizeof(wch)); + (void) wgetbkgrnd(win, &wch); + tmp = _nc_to_char((wint_t) CharOf(wch)); + + win->_bkgd = (((tmp == EOF) ? ' ' : (chtype) tmp) + | (AttrOf(wch) & ALL_BUT_COLOR) + | (chtype) ColorPair(GET_WINDOW_PAIR(win))); + } +#endif + } + returnVoid; +} + +NCURSES_EXPORT(void) +wbkgdset(WINDOW *win, chtype ch) +{ + NCURSES_CH_T wch; + T((T_CALLED("wbkgdset(%p,%s)"), (void *) win, _tracechtype(ch))); + SetChar2(wch, ch); + wbkgrndset(win, CHREF(wch)); + returnVoid; +} + +/* + * Set the window's background information and apply it to each cell. + */ +static NCURSES_INLINE int +_nc_background(WINDOW *win, const ARG_CH_T ch, bool narrow) +{ +#undef SP_PARM +#define SP_PARM SP /* to use Charable() */ + int code = ERR; + +#if USE_WIDEC_SUPPORT + T((T_CALLED("%s(%p,%s)"), + narrow ? "wbkgd" : "wbkgrnd", + (void *) win, + _tracecchar_t(ch))); +#define TraceChar(c) _tracecchar_t2(1, &(c)) +#else + T((T_CALLED("%s(%p,%s)"), + "wbkgd", + (void *) win, + _tracech_t(ch))); + (void) narrow; +#define TraceChar(c) _tracechar(CharOf(c)) +#endif + + if (SP == 0) { + ; + } else if (win) { + NCURSES_CH_T new_bkgd = CHDEREF(ch); + NCURSES_CH_T old_bkgd; + int y; + NCURSES_CH_T old_char; + attr_t old_attr; + int old_pair; + NCURSES_CH_T new_char; + attr_t new_attr; + int new_pair; + + /* SVr4 trims color info if non-color terminal */ + if (!SP->_pair_limit) { + RemAttr(new_bkgd, A_COLOR); + SetPair(new_bkgd, 0); + } + + /* avoid setting background-character to a null */ + if (CharOf(new_bkgd) == 0) { + NCURSES_CH_T tmp_bkgd = blank; + SetAttr(tmp_bkgd, AttrOf(new_bkgd)); + SetPair(tmp_bkgd, GetPair(new_bkgd)); + new_bkgd = tmp_bkgd; + } + + memset(&old_bkgd, 0, sizeof(old_bkgd)); + (void) wgetbkgrnd(win, &old_bkgd); + + if (!memcmp(&old_bkgd, &new_bkgd, sizeof(new_bkgd))) { + T(("...unchanged")); + returnCode(OK); + } + + old_char = old_bkgd; + RemAttr(old_char, ~A_CHARTEXT); + old_attr = AttrOf(old_bkgd); + old_pair = GetPair(old_bkgd); + + if (!(old_attr & A_COLOR)) { + old_pair = 0; + } + T(("... old background char %s, attr %s, pair %d", + TraceChar(old_char), _traceattr(old_attr), old_pair)); + + new_char = new_bkgd; + RemAttr(new_char, ~A_CHARTEXT); + new_attr = AttrOf(new_bkgd); + new_pair = GetPair(new_bkgd); + + /* SVr4 limits background character to printable 7-bits */ + if ( +#if USE_WIDEC_SUPPORT + narrow && +#endif + !Charable(new_bkgd)) { + new_char = old_char; + } + if (!(new_attr & A_COLOR)) { + new_pair = 0; + } + T(("... new background char %s, attr %s, pair %d", + TraceChar(new_char), _traceattr(new_attr), new_pair)); + + (void) wbkgrndset(win, CHREF(new_bkgd)); + + /* SVr4 updates color pair if old/new match, otherwise just attrs */ + if ((new_pair != 0) && (new_pair == old_pair)) { + WINDOW_ATTRS(win) = new_attr; + SET_WINDOW_PAIR(win, new_pair); + } else { + WINDOW_ATTRS(win) = new_attr; + } + + for (y = 0; y <= win->_maxy; y++) { + int x; + + for (x = 0; x <= win->_maxx; x++) { + NCURSES_CH_T *cp = &(win->_line[y].text[x]); + int tmp_pair = GetPair(*cp); + attr_t tmp_attr = AttrOf(*cp); + + if (CharEq(*cp, old_bkgd)) { +#if USE_WIDEC_SUPPORT + if (!narrow) { + if (Charable(new_bkgd)) { + SetChar2(*cp, CharOf(new_char)); + } else { + SetChar(*cp, L' ', AttrOf(new_char)); + } + memcpy(cp->chars, + new_char.chars, + CCHARW_MAX * sizeof(cp->chars[0])); + } else +#endif + SetChar2(*cp, CharOf(new_char)); + } + if (tmp_pair != 0) { + if (tmp_pair == old_pair) { + SetAttr(*cp, (tmp_attr & ~old_attr) | new_attr); + SetPair(*cp, new_pair); + } else { + SetAttr(*cp, + (tmp_attr & (~old_attr | A_COLOR)) + | (new_attr & ALL_BUT_COLOR)); + } + } else { + SetAttr(*cp, (tmp_attr & ~old_attr) | new_attr); + SetPair(*cp, new_pair); + } + } + } + touchwin(win); + _nc_synchook(win); + code = OK; + } + returnCode(code); +} + +#if USE_WIDEC_SUPPORT +NCURSES_EXPORT(int) +wbkgrnd(WINDOW *win, const ARG_CH_T ch) +{ + return _nc_background(win, ch, FALSE); +} +#endif + +NCURSES_EXPORT(int) +wbkgd(WINDOW *win, chtype ch) +{ + NCURSES_CH_T wch; + SetChar2(wch, ch); + return _nc_background(win, CHREF(wch), TRUE); +} diff --git a/deps/ncurses-5.9/ncurses/base/lib_box.c b/deps/ncurses-6.3/ncurses/base/lib_box.c similarity index 91% rename from deps/ncurses-5.9/ncurses/base/lib_box.c rename to deps/ncurses-6.3/ncurses/base/lib_box.c index 6f17c97..186f112 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_box.c +++ b/deps/ncurses-6.3/ncurses/base/lib_box.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_box.c,v 1.24 2010/04/24 23:51:57 tom Exp $") +MODULE_ID("$Id: lib_box.c,v 1.26 2020/02/02 23:34:34 tom Exp $") #if USE_WIDEC_SUPPORT static NCURSES_INLINE chtype @@ -114,10 +115,20 @@ wborder(WINDOW *win, win->_line[endy].lastchar = win->_line[0].lastchar = endx; for (i = 0; i <= endy; i++) { +#if USE_WIDEC_SUPPORT + if (endx > 0 && isWidecExt(win->_line[i].text[endx])) { + SetChar2(win->_line[i].text[endx - 1], ' '); + } +#endif SetChar2(win->_line[i].text[0], wls); SetChar2(win->_line[i].text[endx], wrs); win->_line[i].firstchar = 0; win->_line[i].lastchar = endx; +#if USE_WIDEC_SUPPORT + if (isWidecExt(win->_line[i].text[1])) { + SetChar2(win->_line[i].text[1], ' '); + } +#endif } SetChar2(win->_line[0].text[0], wtl); SetChar2(win->_line[0].text[endx], wtr); diff --git a/deps/ncurses-5.9/ncurses/base/lib_chgat.c b/deps/ncurses-6.3/ncurses/base/lib_chgat.c similarity index 80% rename from deps/ncurses-5.9/ncurses/base/lib_chgat.c rename to deps/ncurses-6.3/ncurses/base/lib_chgat.c index cdddaea..74c4f75 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_chgat.c +++ b/deps/ncurses-6.3/ncurses/base/lib_chgat.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -42,27 +43,38 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_chgat.c,v 1.9 2010/03/31 23:38:02 tom Exp $") +MODULE_ID("$Id: lib_chgat.c,v 1.13 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) -wchgat(WINDOW *win, int n, attr_t attr, short color, const void *opts GCC_UNUSED) +wchgat(WINDOW *win, + int n, + attr_t attr, + NCURSES_PAIRS_T pair_arg, + const void *opts GCC_UNUSED) { - int i; + int code = ERR; + int color_pair = pair_arg; - T((T_CALLED("wchgat(%p,%d,%s,%d)"), (void *) win, n, _traceattr(attr), color)); + T((T_CALLED("wchgat(%p,%d,%s,%d)"), + (void *) win, + n, + _traceattr(attr), + color_pair)); + set_extended_pair(opts, color_pair); if (win) { struct ldat *line = &(win->_line[win->_cury]); + int i; - toggle_attr_on(attr, ColorPair(color)); + toggle_attr_on(attr, ColorPair(color_pair)); for (i = win->_curx; i <= win->_maxx && (n == -1 || (n-- > 0)); i++) { SetAttr(line->text[i], attr); - SetPair(line->text[i], color); + SetPair(line->text[i], color_pair); CHANGED_CELL(line, i); } - returnCode(OK); - } else - returnCode(ERR); + code = OK; + } + returnCode(code); } diff --git a/deps/ncurses-5.9/ncurses/base/lib_clear.c b/deps/ncurses-6.3/ncurses/base/lib_clear.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_clear.c rename to deps/ncurses-6.3/ncurses/base/lib_clear.c index 008744c..2a1c97c 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_clear.c +++ b/deps/ncurses-6.3/ncurses/base/lib_clear.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_clear.c,v 1.8 2009/10/24 22:33:29 tom Exp $") +MODULE_ID("$Id: lib_clear.c,v 1.9 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wclear(WINDOW *win) diff --git a/deps/ncurses-5.9/ncurses/base/lib_clearok.c b/deps/ncurses-6.3/ncurses/base/lib_clearok.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_clearok.c rename to deps/ncurses-6.3/ncurses/base/lib_clearok.c index ffc7d02..d98287c 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_clearok.c +++ b/deps/ncurses-6.3/ncurses/base/lib_clearok.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_clearok.c,v 1.5 2009/10/24 22:34:53 tom Exp $") +MODULE_ID("$Id: lib_clearok.c,v 1.6 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) clearok(WINDOW *win, bool flag) diff --git a/deps/ncurses-5.9/ncurses/base/lib_clrbot.c b/deps/ncurses-6.3/ncurses/base/lib_clrbot.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_clrbot.c rename to deps/ncurses-6.3/ncurses/base/lib_clrbot.c index cbf2206..e5482b9 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_clrbot.c +++ b/deps/ncurses-6.3/ncurses/base/lib_clrbot.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2006,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_clrbot.c,v 1.21 2009/10/24 22:33:19 tom Exp $") +MODULE_ID("$Id: lib_clrbot.c,v 1.22 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wclrtobot(WINDOW *win) diff --git a/deps/ncurses-5.9/ncurses/base/lib_clreol.c b/deps/ncurses-6.3/ncurses/base/lib_clreol.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/lib_clreol.c rename to deps/ncurses-6.3/ncurses/base/lib_clreol.c index 7aff84b..d6cb9b2 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_clreol.c +++ b/deps/ncurses-6.3/ncurses/base/lib_clreol.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2001,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2001,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_clreol.c,v 1.22 2009/10/24 22:33:06 tom Exp $") +MODULE_ID("$Id: lib_clreol.c,v 1.23 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wclrtoeol(WINDOW *win) diff --git a/deps/ncurses-6.3/ncurses/base/lib_color.c b/deps/ncurses-6.3/ncurses/base/lib_color.c new file mode 100644 index 0000000..e4dc79b --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_color.c @@ -0,0 +1,1168 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Juergen Pfeifer 2009 * + ****************************************************************************/ + +/* lib_color.c + * + * Handles color emulation of SYS V curses + */ + +#define NEW_PAIR_INTERNAL 1 + +#include <curses.priv.h> +#include <new_pair.h> +#include <tic.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_color.c,v 1.148 2021/10/02 22:55:48 tom Exp $") + +#ifdef USE_TERM_DRIVER +#define CanChange InfoOf(SP_PARM).canchange +#define DefaultPalette InfoOf(SP_PARM).defaultPalette +#define HasColor InfoOf(SP_PARM).hascolor +#define InitColor InfoOf(SP_PARM).initcolor +#define MaxColors InfoOf(SP_PARM).maxcolors +#define MaxPairs InfoOf(SP_PARM).maxpairs +#define UseHlsPalette (DefaultPalette == _nc_hls_palette) +#else +#define CanChange can_change +#define DefaultPalette (hue_lightness_saturation ? hls_palette : cga_palette) +#define HasColor has_color +#define InitColor initialize_color +#define MaxColors max_colors +#define MaxPairs max_pairs +#define UseHlsPalette (hue_lightness_saturation) +#endif + +#ifndef 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 + * set_term()'s screen-switching logic. + */ +#if USE_REENTRANT +NCURSES_EXPORT(int) +NCURSES_PUBLIC_VAR(COLOR_PAIRS) (void) +{ + return SP ? SP->_pair_count : -1; +} +NCURSES_EXPORT(int) +NCURSES_PUBLIC_VAR(COLORS) (void) +{ + return SP ? SP->_color_count : -1; +} +#else +NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0; +NCURSES_EXPORT_VAR(int) COLORS = 0; +#endif +#endif /* !USE_TERM_DRIVER */ + +#define DATA(r,g,b) {r,g,b, 0,0,0, 0} + +#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts)) + +#define MAX_PALETTE 8 + +#define OkColorHi(n) (((n) < COLORS) && ((n) < maxcolors)) +#define InPalette(n) ((n) >= 0 && (n) < MAX_PALETTE) + +/* + * Given a RGB range of 0..1000, we'll normally set the individual values + * to about 2/3 of the maximum, leaving full-range for bold/bright colors. + */ +#define RGB_ON 680 +#define RGB_OFF 0 +/* *INDENT-OFF* */ +static const color_t cga_palette[] = +{ + /* R G B */ + DATA(RGB_OFF, RGB_OFF, RGB_OFF), /* COLOR_BLACK */ + DATA(RGB_ON, RGB_OFF, RGB_OFF), /* COLOR_RED */ + DATA(RGB_OFF, RGB_ON, RGB_OFF), /* COLOR_GREEN */ + DATA(RGB_ON, RGB_ON, RGB_OFF), /* COLOR_YELLOW */ + DATA(RGB_OFF, RGB_OFF, RGB_ON), /* COLOR_BLUE */ + DATA(RGB_ON, RGB_OFF, RGB_ON), /* COLOR_MAGENTA */ + DATA(RGB_OFF, RGB_ON, RGB_ON), /* COLOR_CYAN */ + DATA(RGB_ON, RGB_ON, RGB_ON), /* COLOR_WHITE */ +}; + +static const color_t hls_palette[] = +{ + /* H L S */ + DATA( 0, 0, 0), /* COLOR_BLACK */ + DATA( 120, 50, 100), /* COLOR_RED */ + DATA( 240, 50, 100), /* COLOR_GREEN */ + DATA( 180, 50, 100), /* COLOR_YELLOW */ + DATA( 330, 50, 100), /* COLOR_BLUE */ + DATA( 60, 50, 100), /* COLOR_MAGENTA */ + DATA( 300, 50, 100), /* COLOR_CYAN */ + DATA( 0, 50, 100), /* COLOR_WHITE */ +}; + +#ifdef 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 + +/* *INDENT-ON* */ +#if NCURSES_EXT_FUNCS +/* + * These are called from _nc_do_color(), which in turn is called from + * vidattr - so we have to assume that sp may be null. + */ +static int +default_fg(NCURSES_SP_DCL0) +{ + return (SP_PARM != 0) ? SP_PARM->_default_fg : COLOR_WHITE; +} + +static int +default_bg(NCURSES_SP_DCL0) +{ + return SP_PARM != 0 ? SP_PARM->_default_bg : COLOR_BLACK; +} +#else +#define default_fg(sp) COLOR_WHITE +#define default_bg(sp) COLOR_BLACK +#endif + +#ifndef 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 + * also used in the FreeBSD syscons. + */ +static int +toggled_colors(int c) +{ + if (c < 16) { + static const int table[] = + {0, 4, 2, 6, 1, 5, 3, 7, + 8, 12, 10, 14, 9, 13, 11, 15}; + c = table[c]; + } + return c; +} +#endif + +static void +set_background_color(NCURSES_SP_DCLx int bg, NCURSES_SP_OUTC outc) +{ +#ifdef USE_TERM_DRIVER + CallDriver_3(SP_PARM, td_color, FALSE, bg, outc); +#else + if (set_a_background) { + TPUTS_TRACE("set_a_background"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_a_background, bg), + 1, outc); + } else { + TPUTS_TRACE("set_background"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_background, toggled_colors(bg)), + 1, outc); + } +#endif +} + +static void +set_foreground_color(NCURSES_SP_DCLx int fg, NCURSES_SP_OUTC outc) +{ +#ifdef USE_TERM_DRIVER + CallDriver_3(SP_PARM, td_color, TRUE, fg, outc); +#else + if (set_a_foreground) { + TPUTS_TRACE("set_a_foreground"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_a_foreground, fg), + 1, outc); + } else { + TPUTS_TRACE("set_foreground"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_foreground, toggled_colors(fg)), + 1, outc); + } +#endif +} + +static void +init_color_table(NCURSES_SP_DCL0) +{ + const color_t *tp = DefaultPalette; + int n; + + assert(tp != 0); + + for (n = 0; n < COLORS; n++) { + if (InPalette(n)) { + SP_PARM->_color_table[n] = tp[n]; + } else { + SP_PARM->_color_table[n] = tp[n % MAX_PALETTE]; + if (UseHlsPalette) { + SP_PARM->_color_table[n].green = 100; + } else { + if (SP_PARM->_color_table[n].red) + SP_PARM->_color_table[n].red = 1000; + if (SP_PARM->_color_table[n].green) + SP_PARM->_color_table[n].green = 1000; + if (SP_PARM->_color_table[n].blue) + SP_PARM->_color_table[n].blue = 1000; + } + } + } +} + +static bool +init_direct_colors(NCURSES_SP_DCL0) +{ + static NCURSES_CONST char name[] = "RGB"; + + rgb_bits_t *result = &(SP_PARM->_direct_color); + + result->value = 0; + + if (COLORS >= 8) { + int n; + const char *s; + int width; + + /* find the number of bits needed for the maximum color value */ + for (width = 0; (1 << width) - 1 < (COLORS - 1); ++width) { + ; + } + + if (tigetflag(name) > 0) { + n = (width + 2) / 3; + result->bits.red = UChar(n); + result->bits.green = UChar(n); + result->bits.blue = UChar(width - (2 * n)); + } else if ((n = tigetnum(name)) > 0) { + result->bits.red = UChar(n); + result->bits.green = UChar(n); + result->bits.blue = UChar(n); + } else if ((s = tigetstr(name)) != 0 && VALID_STRING(s)) { + int red = n; + int green = n; + int blue = width - (2 * n); + + switch (sscanf(s, "%d/%d/%d", &red, &green, &blue)) { + default: + blue = width - (2 * n); + /* FALLTHRU */ + case 1: + green = n; + /* FALLTHRU */ + case 2: + red = n; + /* FALLTHRU */ + case 3: + /* okay */ + break; + } + result->bits.red = UChar(red); + result->bits.green = UChar(green); + result->bits.blue = UChar(blue); + } + } + return (result->value != 0); +} + +/* + * Reset the color pair, e.g., to whatever color pair 0 is. + */ +static bool +reset_color_pair(NCURSES_SP_DCL0) +{ +#ifdef USE_TERM_DRIVER + return CallDriver(SP_PARM, td_rescol); +#else + bool result = FALSE; + + (void) SP_PARM; + if (orig_pair != 0) { + (void) NCURSES_PUTP2("orig_pair", orig_pair); + result = TRUE; + } + return result; +#endif +} + +/* + * Reset color pairs and definitions. Actually we do both more to accommodate + * badly-written terminal descriptions than for the relatively rare case where + * someone has changed the color definitions. + */ +NCURSES_EXPORT(bool) +NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_DCL0) +{ + int result = FALSE; + + T((T_CALLED("_nc_reset_colors(%p)"), (void *) SP_PARM)); + if (SP_PARM->_color_defs > 0) + SP_PARM->_color_defs = -(SP_PARM->_color_defs); + if (reset_color_pair(NCURSES_SP_ARG)) + result = TRUE; + +#ifdef USE_TERM_DRIVER + result = CallDriver(SP_PARM, td_rescolors); +#else + if (orig_colors != 0) { + NCURSES_PUTP2("orig_colors", orig_colors); + result = TRUE; + } +#endif + returnBool(result); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(bool) +_nc_reset_colors(void) +{ + return NCURSES_SP_NAME(_nc_reset_colors) (CURRENT_SCREEN); +} +#endif + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(start_color) (NCURSES_SP_DCL0) +{ + int result = ERR; + + T((T_CALLED("start_color(%p)"), (void *) SP_PARM)); + + if (SP_PARM == 0) { + result = ERR; + } else if (SP_PARM->_coloron) { + result = OK; + } else { + int maxpairs = MaxPairs; + int maxcolors = MaxColors; + if (reset_color_pair(NCURSES_SP_ARG) != TRUE) { + set_foreground_color(NCURSES_SP_ARGx + default_fg(NCURSES_SP_ARG), + NCURSES_SP_NAME(_nc_outch)); + set_background_color(NCURSES_SP_ARGx + default_bg(NCURSES_SP_ARG), + NCURSES_SP_NAME(_nc_outch)); + } +#if !NCURSES_EXT_COLORS + /* + * Without ext-colors, we cannot represent more than 256 color pairs. + */ + if (maxpairs > 256) + maxpairs = 256; +#endif + + if (maxpairs > 0 && maxcolors > 0) { + SP_PARM->_pair_limit = maxpairs; + +#if NCURSES_EXT_FUNCS + /* + * 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 !NCURSES_EXT_COLORS + SP_PARM->_pair_limit = limit_PAIRS(SP_PARM->_pair_limit); +#endif +#endif /* NCURSES_EXT_FUNCS */ + SP_PARM->_pair_count = maxpairs; + SP_PARM->_color_count = maxcolors; +#if !USE_REENTRANT + COLOR_PAIRS = maxpairs; + COLORS = maxcolors; +#endif + + ReservePairs(SP_PARM, 16); + if (SP_PARM->_color_pairs != 0) { + if (init_direct_colors(NCURSES_SP_ARG)) { + result = OK; + } else { + SP_PARM->_color_table = TYPE_CALLOC(color_t, maxcolors); + if (SP_PARM->_color_table != 0) { + MakeColorPair(SP_PARM->_color_pairs[0], + default_fg(NCURSES_SP_ARG), + default_bg(NCURSES_SP_ARG)); + init_color_table(NCURSES_SP_ARG); + + result = OK; + } + } + if (result == OK) { + T(("started color: COLORS = %d, COLOR_PAIRS = %d", + COLORS, COLOR_PAIRS)); + + SP_PARM->_coloron = 1; + } else if (SP_PARM->_color_pairs != 0) { + FreeAndNull(SP_PARM->_color_pairs); + } + } + } else { + result = OK; + } + } + returnCode(result); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +start_color(void) +{ + return NCURSES_SP_NAME(start_color) (CURRENT_SCREEN); +} +#endif + +/* This function was originally written by Daniel Weaver <danw@znyx.com> */ +static void +rgb2hls(int r, int g, int b, int *h, int *l, int *s) +/* convert RGB to HLS system */ +{ + int min, max, t; + + if ((min = g < r ? g : r) > b) + min = b; + if ((max = g > r ? g : r) < b) + max = b; + + /* calculate lightness */ + *l = ((min + max) / 20); + + if (min == max) { /* black, white and all shades of gray */ + *h = 0; + *s = 0; + return; + } + + /* calculate saturation */ + if (*l < 50) + *s = (((max - min) * 100) / (max + min)); + else + *s = (((max - min) * 100) / (2000 - max - min)); + + /* calculate hue */ + if (r == max) + t = (120 + ((g - b) * 60) / (max - min)); + else if (g == max) + t = (240 + ((b - r) * 60) / (max - min)); + else + t = (360 + ((r - g) * 60) / (max - min)); + + *h = (t % 360); +} + +/* + * Change all cells which use(d) a given color pair to force a repaint. + */ +NCURSES_EXPORT(void) +_nc_change_pair(SCREEN *sp, int pair) +{ + int y, x; + + if (CurScreen(sp)->_clear) + return; +#if NO_LEAKS + if (_nc_globals.leak_checking) + return; +#endif + + for (y = 0; y <= CurScreen(sp)->_maxy; y++) { + struct ldat *ptr = &(CurScreen(sp)->_line[y]); + bool changed = FALSE; + for (x = 0; x <= CurScreen(sp)->_maxx; x++) { + if (GetPair(ptr->text[x]) == pair) { + /* Set the old cell to zero to ensure it will be + updated on the next doupdate() */ + SetChar(ptr->text[x], 0, 0); + CHANGED_CELL(ptr, x); + changed = TRUE; + } + } + if (changed) + NCURSES_SP_NAME(_nc_make_oldhash) (NCURSES_SP_ARGx y); + } +} + +NCURSES_EXPORT(void) +_nc_reserve_pairs(SCREEN *sp, int want) +{ + int have = sp->_pair_alloc; + + if (have == 0) + have = 1; + while (have <= want) + have *= 2; + if (have > sp->_pair_limit) + have = sp->_pair_limit; + + if (sp->_color_pairs == 0) { + sp->_color_pairs = TYPE_CALLOC(colorpair_t, have); + } else if (have > sp->_pair_alloc) { +#if NCURSES_EXT_COLORS + colorpair_t *next; + + if ((next = typeCalloc(colorpair_t, have)) == 0) + _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); + free(sp->_color_pairs); + sp->_color_pairs = next; +#else + TYPE_REALLOC(colorpair_t, have, sp->_color_pairs); + if (sp->_color_pairs != 0) { + memset(sp->_color_pairs + sp->_pair_alloc, 0, + sizeof(colorpair_t) * (size_t) (have - sp->_pair_alloc)); + } +#endif + } + if (sp->_color_pairs != 0) { + sp->_pair_alloc = have; + } +} + +/* + * Extension (1997/1/18) - Allow negative f/b values to set default color + * values. + */ +NCURSES_EXPORT(int) +_nc_init_pair(SCREEN *sp, int pair, int f, int b) +{ + static colorpair_t null_pair; + colorpair_t result = null_pair; + colorpair_t previous; + int maxcolors; + + T((T_CALLED("init_pair(%p,%d,%d,%d)"), (void *) sp, pair, f, b)); + + if (!ValidPair(sp, pair)) + returnCode(ERR); + + maxcolors = MaxColors; + + ReservePairs(sp, pair); + previous = sp->_color_pairs[pair]; +#if NCURSES_EXT_FUNCS + if (sp->_default_color || sp->_assumed_color) { + bool isDefault = FALSE; + bool wasDefault = FALSE; + int default_pairs = sp->_default_pairs; + + /* + * Map caller's color number, e.g., -1, 0, 1, .., 7, etc., into + * internal unsigned values which we will store in the _color_pairs[] + * table. + */ + if (isDefaultColor(f)) { + f = COLOR_DEFAULT; + isDefault = TRUE; + } else if (!OkColorHi(f)) { + returnCode(ERR); + } + + if (isDefaultColor(b)) { + b = COLOR_DEFAULT; + isDefault = TRUE; + } else if (!OkColorHi(b)) { + returnCode(ERR); + } + + /* + * Check if the table entry that we are going to init/update used + * default colors. + */ + if (isDefaultColor(FORE_OF(previous)) + || isDefaultColor(BACK_OF(previous))) + wasDefault = TRUE; + + /* + * Keep track of the number of entries in the color pair table which + * used a default color. + */ + if (isDefault && !wasDefault) { + ++default_pairs; + } else if (wasDefault && !isDefault) { + --default_pairs; + } + + /* + * As an extension, ncurses allows the pair number to exceed the + * terminal's color_pairs value for pairs using a default color. + * + * Note that updating a pair which used a default color with one + * that does not will decrement the count - and possibly interfere + * with sequentially adding new pairs. + */ + if (pair > (sp->_pair_count + default_pairs)) { + returnCode(ERR); + } + sp->_default_pairs = default_pairs; + } else +#endif + { + if ((f < 0) || !OkColorHi(f) + || (b < 0) || !OkColorHi(b) + || (pair < 1)) { + returnCode(ERR); + } + } + + /* + * When a pair's content is changed, replace its colors (if pair was + * initialized before a screen update is performed replacing original + * pair colors with the new ones). + */ + MakeColorPair(result, f, b); + if ((FORE_OF(previous) != 0 + || BACK_OF(previous) != 0) + && !isSamePair(previous, result)) { + _nc_change_pair(sp, pair); + } + + _nc_reset_color_pair(sp, pair, &result); + sp->_color_pairs[pair] = result; + _nc_set_color_pair(sp, pair, cpINIT); + + if (GET_SCREEN_PAIR(sp) == pair) + SET_SCREEN_PAIR(sp, (int) (~0)); /* force attribute update */ + +#ifdef USE_TERM_DRIVER + CallDriver_3(sp, td_initpair, pair, f, b); +#else + if (initialize_pair && InPalette(f) && InPalette(b)) { + const color_t *tp = DefaultPalette; + + TR(TRACE_ATTRS, + ("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)", + (int) pair, + (int) tp[f].red, (int) tp[f].green, (int) tp[f].blue, + (int) tp[b].red, (int) tp[b].green, (int) tp[b].blue)); + + NCURSES_PUTP2("initialize_pair", + TIPARM_7(initialize_pair, + pair, + (int) tp[f].red, + (int) tp[f].green, + (int) tp[f].blue, + (int) tp[b].red, + (int) tp[b].green, + (int) tp[b].blue)); + } +#endif + + returnCode(OK); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(init_pair) (NCURSES_SP_DCLx + NCURSES_PAIRS_T pair, + NCURSES_COLOR_T f, + NCURSES_COLOR_T b) +{ + return _nc_init_pair(SP_PARM, pair, f, b); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +init_pair(NCURSES_COLOR_T pair, NCURSES_COLOR_T f, NCURSES_COLOR_T b) +{ + return NCURSES_SP_NAME(init_pair) (CURRENT_SCREEN, pair, f, b); +} +#endif + +#define okRGB(n) ((n) >= 0 && (n) <= 1000) + +NCURSES_EXPORT(int) +_nc_init_color(SCREEN *sp, int color, int r, int g, int b) +{ + int result = ERR; + int maxcolors; + + T((T_CALLED("init_color(%p,%d,%d,%d,%d)"), + (void *) sp, + color, + r, g, b)); + + if (sp == 0 || sp->_direct_color.value) + returnCode(result); + + maxcolors = MaxColors; + + if (InitColor + && sp->_coloron + && (color >= 0 && OkColorHi(color)) + && (okRGB(r) && okRGB(g) && okRGB(b))) { + + sp->_color_table[color].init = 1; + sp->_color_table[color].r = r; + sp->_color_table[color].g = g; + sp->_color_table[color].b = b; + + if (UseHlsPalette) { + rgb2hls(r, g, b, + &sp->_color_table[color].red, + &sp->_color_table[color].green, + &sp->_color_table[color].blue); + } else { + sp->_color_table[color].red = r; + sp->_color_table[color].green = g; + sp->_color_table[color].blue = b; + } + +#ifdef USE_TERM_DRIVER + CallDriver_4(sp, td_initcolor, color, r, g, b); +#else + NCURSES_PUTP2("initialize_color", + TIPARM_4(initialize_color, color, r, g, b)); +#endif + sp->_color_defs = max(color + 1, sp->_color_defs); + + result = OK; + } + returnCode(result); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(init_color) (NCURSES_SP_DCLx + NCURSES_COLOR_T color, + NCURSES_COLOR_T r, + NCURSES_COLOR_T g, + NCURSES_COLOR_T b) +{ + return _nc_init_color(SP_PARM, color, r, g, b); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +init_color(NCURSES_COLOR_T color, + NCURSES_COLOR_T r, + NCURSES_COLOR_T g, + NCURSES_COLOR_T b) +{ + return NCURSES_SP_NAME(init_color) (CURRENT_SCREEN, color, r, g, b); +} +#endif + +NCURSES_EXPORT(bool) +NCURSES_SP_NAME(can_change_color) (NCURSES_SP_DCL) +{ + int result = FALSE; + + T((T_CALLED("can_change_color(%p)"), (void *) SP_PARM)); + + if (HasTerminal(SP_PARM) && (CanChange != 0)) { + result = TRUE; + } + + returnCode(result); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(bool) +can_change_color(void) +{ + return NCURSES_SP_NAME(can_change_color) (CURRENT_SCREEN); +} +#endif + +NCURSES_EXPORT(bool) +NCURSES_SP_NAME(has_colors) (NCURSES_SP_DCL0) +{ + int code = FALSE; + + (void) SP_PARM; + T((T_CALLED("has_colors(%p)"), (void *) SP_PARM)); + if (HasTerminal(SP_PARM)) { +#ifdef USE_TERM_DRIVER + code = HasColor; +#else + code = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs) + && (((set_foreground != NULL) + && (set_background != NULL)) + || ((set_a_foreground != NULL) + && (set_a_background != NULL)) + || set_color_pair)) ? TRUE : FALSE); +#endif + } + returnCode(code); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(bool) +has_colors(void) +{ + return NCURSES_SP_NAME(has_colors) (CURRENT_SCREEN); +} +#endif + +static int +_nc_color_content(SCREEN *sp, int color, int *r, int *g, int *b) +{ + int result = ERR; + + T((T_CALLED("color_content(%p,%d,%p,%p,%p)"), + (void *) sp, + color, + (void *) r, + (void *) g, + (void *) b)); + + if (sp != 0) { + int maxcolors = MaxColors; + + if (color >= 0 && OkColorHi(color) && sp->_coloron) { + int c_r, c_g, c_b; + + if (sp->_direct_color.value) { + rgb_bits_t *work = &(sp->_direct_color); + +#define max_direct_color(name) ((1 << work->bits.name) - 1) +#define value_direct_color(max) (1000 * ((color >> bitoff) & max)) / max + + int max_r = max_direct_color(red); + int max_g = max_direct_color(green); + int max_b = max_direct_color(blue); + + int bitoff = 0; + + c_b = value_direct_color(max_b); + bitoff += work->bits.blue; + + c_g = value_direct_color(max_g); + bitoff += work->bits.green; + + c_r = value_direct_color(max_r); + + } else { + c_r = sp->_color_table[color].red; + c_g = sp->_color_table[color].green; + c_b = sp->_color_table[color].blue; + } + + if (r) + *r = c_r; + if (g) + *g = c_g; + if (b) + *b = c_b; + + TR(TRACE_ATTRS, ("...color_content(%d,%d,%d,%d)", + color, c_r, c_g, c_b)); + result = OK; + } + } + if (result != OK) { + if (r) + *r = 0; + if (g) + *g = 0; + if (b) + *b = 0; + } + returnCode(result); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(color_content) (NCURSES_SP_DCLx + NCURSES_COLOR_T color, + NCURSES_COLOR_T *r, + NCURSES_COLOR_T *g, + NCURSES_COLOR_T *b) +{ + int my_r, my_g, my_b; + int rc = _nc_color_content(SP_PARM, color, &my_r, &my_g, &my_b); + if (rc == OK) { + *r = limit_COLOR(my_r); + *g = limit_COLOR(my_g); + *b = limit_COLOR(my_b); + } + return rc; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +color_content(NCURSES_COLOR_T color, + NCURSES_COLOR_T *r, + NCURSES_COLOR_T *g, + NCURSES_COLOR_T *b) +{ + return NCURSES_SP_NAME(color_content) (CURRENT_SCREEN, color, r, g, b); +} +#endif + +NCURSES_EXPORT(int) +_nc_pair_content(SCREEN *sp, int pair, int *f, int *b) +{ + int result; + + T((T_CALLED("pair_content(%p,%d,%p,%p)"), + (void *) sp, + (int) pair, + (void *) f, + (void *) b)); + + if (!ValidPair(sp, pair)) { + result = ERR; + } else { + int fg; + int bg; + + ReservePairs(sp, pair); + fg = FORE_OF(sp->_color_pairs[pair]); + bg = BACK_OF(sp->_color_pairs[pair]); +#if NCURSES_EXT_FUNCS + if (isDefaultColor(fg)) + fg = -1; + if (isDefaultColor(bg)) + bg = -1; +#endif + + if (f) + *f = fg; + if (b) + *b = bg; + + TR(TRACE_ATTRS, ("...pair_content(%p,%d,%d,%d)", + (void *) sp, + (int) pair, + (int) fg, (int) bg)); + result = OK; + } + returnCode(result); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(pair_content) (NCURSES_SP_DCLx + NCURSES_PAIRS_T pair, + NCURSES_COLOR_T *f, + NCURSES_COLOR_T *b) +{ + int my_f, my_b; + int rc = _nc_pair_content(SP_PARM, pair, &my_f, &my_b); + if (rc == OK) { + *f = limit_COLOR(my_f); + *b = limit_COLOR(my_b); + } + return rc; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +pair_content(NCURSES_COLOR_T pair, NCURSES_COLOR_T *f, NCURSES_COLOR_T *b) +{ + return NCURSES_SP_NAME(pair_content) (CURRENT_SCREEN, pair, f, b); +} +#endif + +NCURSES_EXPORT(void) +NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_DCLx + int old_pair, + int pair, + int reverse, + NCURSES_SP_OUTC outc) +{ +#ifdef USE_TERM_DRIVER + CallDriver_4(SP_PARM, td_docolor, old_pair, pair, reverse, outc); +#else + int fg = COLOR_DEFAULT; + int bg = COLOR_DEFAULT; + int old_fg = -1; + int old_bg = -1; + + if (!ValidPair(SP_PARM, pair)) { + return; + } else if (pair != 0) { + if (set_color_pair) { + TPUTS_TRACE("set_color_pair"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_color_pair, pair), + 1, outc); + return; + } else if (SP_PARM != 0) { + if (_nc_pair_content(SP_PARM, pair, &fg, &bg) == ERR) + return; + } + } + + if (old_pair >= 0 + && SP_PARM != 0 + && _nc_pair_content(SP_PARM, old_pair, &old_fg, &old_bg) != ERR) { + if ((isDefaultColor(fg) && !isDefaultColor(old_fg)) + || (isDefaultColor(bg) && !isDefaultColor(old_bg))) { +#if NCURSES_EXT_FUNCS + /* + * A minor optimization - but extension. If "AX" is specified in + * the terminal description, treat it as screen's indicator of ECMA + * SGR 39 and SGR 49, and assume the two sequences are independent. + */ + if (SP_PARM->_has_sgr_39_49 + && isDefaultColor(old_bg) + && !isDefaultColor(old_fg)) { + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[39m", 1, outc); + } else if (SP_PARM->_has_sgr_39_49 + && isDefaultColor(old_fg) + && !isDefaultColor(old_bg)) { + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[49m", 1, outc); + } else +#endif + reset_color_pair(NCURSES_SP_ARG); + } + } else { + reset_color_pair(NCURSES_SP_ARG); + if (old_pair < 0 && pair <= 0) + return; + } + +#if NCURSES_EXT_FUNCS + if (isDefaultColor(fg)) + fg = default_fg(NCURSES_SP_ARG); + if (isDefaultColor(bg)) + bg = default_bg(NCURSES_SP_ARG); +#endif + + if (reverse) { + int xx = fg; + fg = bg; + bg = xx; + } + + TR(TRACE_ATTRS, ("setting colors: pair = %d, fg = %d, bg = %d", pair, + fg, bg)); + + if (!isDefaultColor(fg)) { + set_foreground_color(NCURSES_SP_ARGx fg, outc); + } + if (!isDefaultColor(bg)) { + set_background_color(NCURSES_SP_ARGx bg, outc); + } +#endif +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(void) +_nc_do_color(int old_pair, int pair, int reverse, NCURSES_OUTC outc) +{ + SetSafeOutcWrapper(outc); + NCURSES_SP_NAME(_nc_do_color) (CURRENT_SCREEN, + old_pair, + pair, + reverse, + _nc_outc_wrapper); +} +#endif + +#if NCURSES_EXT_COLORS +NCURSES_EXPORT(int) +NCURSES_SP_NAME(init_extended_pair) (NCURSES_SP_DCLx int pair, int f, int b) +{ + return _nc_init_pair(SP_PARM, pair, f, b); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(init_extended_color) (NCURSES_SP_DCLx + int color, + int r, int g, int b) +{ + return _nc_init_color(SP_PARM, color, r, g, b); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(extended_color_content) (NCURSES_SP_DCLx + int color, + int *r, int *g, int *b) +{ + return _nc_color_content(SP_PARM, color, r, g, b); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(extended_pair_content) (NCURSES_SP_DCLx + int pair, + int *f, int *b) +{ + return _nc_pair_content(SP_PARM, pair, f, b); +} + +NCURSES_EXPORT(void) +NCURSES_SP_NAME(reset_color_pairs) (NCURSES_SP_DCL0) +{ + if (SP_PARM != 0) { + if (SP_PARM->_color_pairs) { + _nc_free_ordered_pairs(SP_PARM); + free(SP_PARM->_color_pairs); + SP_PARM->_color_pairs = 0; + SP_PARM->_pair_alloc = 0; + ReservePairs(SP_PARM, 16); + clearok(CurScreen(SP_PARM), TRUE); + touchwin(StdScreen(SP_PARM)); + } + } +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +init_extended_pair(int pair, int f, int b) +{ + return NCURSES_SP_NAME(init_extended_pair) (CURRENT_SCREEN, pair, f, b); +} + +NCURSES_EXPORT(int) +init_extended_color(int color, int r, int g, int b) +{ + return NCURSES_SP_NAME(init_extended_color) (CURRENT_SCREEN, + color, + r, g, b); +} + +NCURSES_EXPORT(int) +extended_color_content(int color, int *r, int *g, int *b) +{ + return NCURSES_SP_NAME(extended_color_content) (CURRENT_SCREEN, + color, + r, g, b); +} + +NCURSES_EXPORT(int) +extended_pair_content(int pair, int *f, int *b) +{ + return NCURSES_SP_NAME(extended_pair_content) (CURRENT_SCREEN, pair, f, b); +} + +NCURSES_EXPORT(void) +reset_color_pairs(void) +{ + NCURSES_SP_NAME(reset_color_pairs) (CURRENT_SCREEN); +} +#endif /* NCURSES_SP_FUNCS */ +#endif /* NCURSES_EXT_COLORS */ diff --git a/deps/ncurses-5.9/ncurses/base/lib_colorset.c b/deps/ncurses-6.3/ncurses/base/lib_colorset.c similarity index 82% rename from deps/ncurses-5.9/ncurses/base/lib_colorset.c rename to deps/ncurses-6.3/ncurses/base/lib_colorset.c index 6210a0e..387edef 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_colorset.c +++ b/deps/ncurses-6.3/ncurses/base/lib_colorset.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -41,22 +42,23 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_colorset.c,v 1.13 2009/10/24 22:02:14 tom Exp $") +MODULE_ID("$Id: lib_colorset.c,v 1.16 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) -wcolor_set(WINDOW *win, short color_pair_number, void *opts) +wcolor_set(WINDOW *win, NCURSES_PAIRS_T pair_arg, void *opts) { int code = ERR; + int color_pair = pair_arg; - T((T_CALLED("wcolor_set(%p,%d)"), (void *) win, color_pair_number)); + T((T_CALLED("wcolor_set(%p,%d)"), (void *) win, color_pair)); + set_extended_pair(opts, color_pair); if (win - && !opts && (SP != 0) - && (color_pair_number >= 0) - && (color_pair_number < SP->_pair_limit)) { + && (color_pair >= 0) + && (color_pair < SP->_pair_limit)) { TR(TRACE_ATTRS, ("... current %ld", (long) GET_WINDOW_PAIR(win))); - SET_WINDOW_PAIR(win, color_pair_number); - if_EXT_COLORS(win->_color = color_pair_number); + SET_WINDOW_PAIR(win, color_pair); + if_EXT_COLORS(win->_color = color_pair); code = OK; } returnCode(code); diff --git a/deps/ncurses-5.9/ncurses/base/lib_delch.c b/deps/ncurses-6.3/ncurses/base/lib_delch.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_delch.c rename to deps/ncurses-6.3/ncurses/base/lib_delch.c index 64c9da7..d39a8eb 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_delch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_delch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2001,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2001,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_delch.c,v 1.13 2009/10/24 22:32:47 tom Exp $") +MODULE_ID("$Id: lib_delch.c,v 1.14 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wdelch(WINDOW *win) diff --git a/deps/ncurses-5.9/ncurses/base/lib_delwin.c b/deps/ncurses-6.3/ncurses/base/lib_delwin.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/lib_delwin.c rename to deps/ncurses-6.3/ncurses/base/lib_delwin.c index 4bb536c..2f0621c 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_delwin.c +++ b/deps/ncurses-6.3/ncurses/base/lib_delwin.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2008,2009 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_delwin.c,v 1.20 2009/10/24 22:02:14 tom Exp $") +MODULE_ID("$Id: lib_delwin.c,v 1.21 2020/02/02 23:34:34 tom Exp $") static bool cannot_delete(WINDOW *win) diff --git a/deps/ncurses-5.9/ncurses/base/lib_dft_fgbg.c b/deps/ncurses-6.3/ncurses/base/lib_dft_fgbg.c similarity index 79% rename from deps/ncurses-5.9/ncurses/base/lib_dft_fgbg.c rename to deps/ncurses-6.3/ncurses/base/lib_dft_fgbg.c index 4bb9fc2..4dd43bb 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_dft_fgbg.c +++ b/deps/ncurses-6.3/ncurses/base/lib_dft_fgbg.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-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 * @@ -37,7 +38,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_dft_fgbg.c,v 1.25 2009/10/24 22:15:00 tom Exp $") +MODULE_ID("$Id: lib_dft_fgbg.c,v 1.31 2021/04/03 22:27:18 tom Exp $") /* * Modify the behavior of color-pair 0 so that the library doesn't assume that @@ -68,25 +69,29 @@ 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 != 0) - code = CallDriver_2(sp, defaultcolors, fg, bg); + code = CallDriver_2(SP_PARM, td_defaultcolors, fg, bg); #else - if ((orig_pair || orig_colors) && !initialize_pair) { + 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->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : (fg & C_MASK); - SP_PARM->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : (bg & C_MASK); - if (SP_PARM->_color_pairs != 0) { - bool save = SP_PARM->_default_color; - SP_PARM->_default_color = TRUE; - init_pair(0, (short) fg, (short) bg); - SP_PARM->_default_color = save; + SP_PARM->_default_color = isDefaultColor(fg) || isDefaultColor(bg); + SP_PARM->_has_sgr_39_49 = (tigetflag("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) { + bool save = SP_PARM->_default_color; + SP_PARM->_assumed_color = TRUE; + SP_PARM->_default_color = TRUE; + NCURSES_SP_NAME(init_pair) (NCURSES_SP_ARGx 0, + (short)fg, + (short)bg); + SP_PARM->_default_color = save; + } + code = OK; } - code = OK; - } #endif + } returnCode(code); } diff --git a/deps/ncurses-5.9/ncurses/base/lib_driver.c b/deps/ncurses-6.3/ncurses/base/lib_driver.c similarity index 85% rename from deps/ncurses-5.9/ncurses/base/lib_driver.c rename to deps/ncurses-6.3/ncurses/base/lib_driver.c index 4048760..c53802f 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_driver.c +++ b/deps/ncurses-6.3/ncurses/base/lib_driver.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2009-2012,2014 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 * @@ -33,8 +34,9 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_driver.c,v 1.3 2010/12/20 00:29:17 tom Exp $") +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; @@ -42,10 +44,10 @@ typedef struct DriverEntry { static DRIVER_ENTRY DriverTable[] = { -#ifdef __MINGW32__ - {"win", &_nc_WIN_DRIVER}, +#ifdef _WIN32 + {"win32console", &_nc_WIN_DRIVER}, #endif - {"tinfo", &_nc_TINFO_DRIVER} + {"tinfo", &_nc_TINFO_DRIVER} /* must be last */ }; NCURSES_EXPORT(int) @@ -63,9 +65,11 @@ _nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret) for (i = 0; i < SIZEOF(DriverTable); i++) { res = DriverTable[i].driver; - if (res->CanHandle(TCB, name, errret)) { - use = res; - break; + if (strcmp(DriverTable[i].name, res->td_name(TCB)) == 0) { + if (res->td_CanHandle(TCB, name, errret)) { + use = res; + break; + } } } if (use != 0) { @@ -74,12 +78,13 @@ _nc_get_driver(TERMINAL_CONTROL_BLOCK * TCB, const char *name, int *errret) } returnCode(code); } +#endif /* !EXP_WIN32_DRIVER */ NCURSES_EXPORT(int) NCURSES_SP_NAME(has_key) (SCREEN *sp, int keycode) { T((T_CALLED("has_key(%p, %d)"), (void *) sp, keycode)); - returnCode(IsValidTIScreen(sp) ? CallDriver_1(sp, kyExist, keycode) : FALSE); + returnCode(IsValidTIScreen(sp) ? CallDriver_1(sp, td_kyExist, keycode) : FALSE); } NCURSES_EXPORT(int) @@ -94,7 +99,7 @@ NCURSES_SP_NAME(_nc_mcprint) (SCREEN *sp, char *data, int len) int code = ERR; if (0 != TerminalOf(sp)) - code = CallDriver_2(sp, print, data, len); + code = CallDriver_2(sp, td_print, data, len); return (code); } @@ -112,7 +117,7 @@ NCURSES_SP_NAME(doupdate) (SCREEN *sp) T((T_CALLED("doupdate(%p)"), (void *) sp)); if (IsValidScreen(sp)) - code = CallDriver(sp, update); + code = CallDriver(sp, td_update); returnCode(code); } @@ -130,7 +135,7 @@ NCURSES_SP_NAME(mvcur) (SCREEN *sp, int yold, int xold, int ynew, int xnew) TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("mvcur(%p,%d,%d,%d,%d)"), (void *) sp, yold, xold, ynew, xnew)); if (HasTerminal(sp)) { - code = CallDriver_4(sp, hwcur, yold, xold, ynew, xnew); + code = CallDriver_4(sp, td_hwcur, yold, xold, ynew, xnew); } returnCode(code); } diff --git a/deps/ncurses-5.9/ncurses/base/lib_echo.c b/deps/ncurses-6.3/ncurses/base/lib_echo.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/lib_echo.c rename to deps/ncurses-6.3/ncurses/base/lib_echo.c index 9e1d3c2..d8f57f2 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_echo.c +++ b/deps/ncurses-6.3/ncurses/base/lib_echo.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -44,7 +45,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_echo.c,v 1.8 2009/10/24 22:02:14 tom Exp $") +MODULE_ID("$Id: lib_echo.c,v 1.9 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(echo) (NCURSES_SP_DCL0) diff --git a/deps/ncurses-5.9/ncurses/base/lib_endwin.c b/deps/ncurses-6.3/ncurses/base/lib_endwin.c similarity index 90% rename from deps/ncurses-5.9/ncurses/base/lib_endwin.c rename to deps/ncurses-6.3/ncurses/base/lib_endwin.c index 4596d07..b8a9e4e 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_endwin.c +++ b/deps/ncurses-6.3/ncurses/base/lib_endwin.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_endwin.c,v 1.22 2009/10/24 22:02:14 tom Exp $") +MODULE_ID("$Id: lib_endwin.c,v 1.25 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0) @@ -55,11 +56,11 @@ NCURSES_SP_NAME(endwin) (NCURSES_SP_DCL0) #ifdef USE_TERM_DRIVER TERMINAL_CONTROL_BLOCK *TCB = TCBOf(SP_PARM); - SP_PARM->_endwin = TRUE; - if (TCB && TCB->drv && TCB->drv->scexit) - TCB->drv->scexit(SP_PARM); + SP_PARM->_endwin = ewSuspend; + if (TCB && TCB->drv && TCB->drv->td_scexit) + TCB->drv->td_scexit(SP_PARM); #else - SP_PARM->_endwin = TRUE; + SP_PARM->_endwin = ewSuspend; SP_PARM->_mouse_wrap(SP_PARM); _nc_screen_wrap(); _nc_mvcur_wrap(); /* wrap up cursor addressing */ diff --git a/deps/ncurses-5.9/ncurses/base/lib_erase.c b/deps/ncurses-6.3/ncurses/base/lib_erase.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_erase.c rename to deps/ncurses-6.3/ncurses/base/lib_erase.c index bbf10ef..e190ebd 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_erase.c +++ b/deps/ncurses-6.3/ncurses/base/lib_erase.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2016 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 * @@ -41,21 +42,25 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_erase.c,v 1.17 2009/10/24 22:32:29 tom Exp $") +MODULE_ID("$Id: lib_erase.c,v 1.19 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) werase(WINDOW *win) { int code = ERR; - int y; NCURSES_CH_T blank; - NCURSES_CH_T *sp, *end, *start; + NCURSES_CH_T *start; T((T_CALLED("werase(%p)"), (void *) win)); if (win) { + NCURSES_CH_T *sp; + int y; + blank = win->_nc_bkgd; for (y = 0; y <= win->_maxy; y++) { + NCURSES_CH_T *end; + start = win->_line[y].text; end = &start[win->_maxx]; diff --git a/deps/ncurses-5.9/ncurses/base/lib_flash.c b/deps/ncurses-6.3/ncurses/base/lib_flash.c similarity index 85% rename from deps/ncurses-5.9/ncurses/base/lib_flash.c rename to deps/ncurses-6.3/ncurses/base/lib_flash.c index 03f11d9..975d5f5 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_flash.c +++ b/deps/ncurses-6.3/ncurses/base/lib_flash.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2013,2014 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 * @@ -46,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_flash.c,v 1.11 2009/10/24 22:02:14 tom Exp $") +MODULE_ID("$Id: lib_flash.c,v 1.15 2020/02/02 23:34:34 tom Exp $") /* * flash() @@ -64,17 +65,15 @@ NCURSES_SP_NAME(flash) (NCURSES_SP_DCL0) T((T_CALLED("flash(%p)"), (void *) SP_PARM)); #ifdef USE_TERM_DRIVER if (SP_PARM != 0) - res = CallDriver_1(SP_PARM, doBeepOrFlash, FALSE); + res = CallDriver_1(SP_PARM, td_doBeepOrFlash, FALSE); #else - /* FIXME: should make sure that we are not in altchar mode */ - if (flash_screen) { - TPUTS_TRACE("flash_screen"); - res = putp(flash_screen); - _nc_flush(); - } else if (bell) { - TPUTS_TRACE("bell"); - res = putp(bell); - _nc_flush(); + if (HasTerminal(SP_PARM)) { + /* FIXME: should make sure that we are not in altchar mode */ + if (flash_screen) { + res = NCURSES_PUTP2_FLUSH("flash_screen", flash_screen); + } else if (bell) { + res = NCURSES_PUTP2_FLUSH("bell", bell); + } } #endif returnCode(res); diff --git a/deps/ncurses-5.9/ncurses/base/lib_freeall.c b/deps/ncurses-6.3/ncurses/base/lib_freeall.c similarity index 79% rename from deps/ncurses-5.9/ncurses/base/lib_freeall.c rename to deps/ncurses-6.3/ncurses/base/lib_freeall.c index 5bcc974..c027151 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_freeall.c +++ b/deps/ncurses-6.3/ncurses/base/lib_freeall.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -39,7 +40,7 @@ extern int malloc_errfd; /* FIXME */ #endif -MODULE_ID("$Id: lib_freeall.c,v 1.59 2010/01/23 17:57:43 tom Exp $") +MODULE_ID("$Id: lib_freeall.c,v 1.74 2021/03/20 22:57:53 tom Exp $") /* * Free all ncurses data. This is used for testing only (there's no practical @@ -48,11 +49,11 @@ MODULE_ID("$Id: lib_freeall.c,v 1.59 2010/01/23 17:57:43 tom Exp $") NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0) { - WINDOWLIST *p, *q; static va_list empty_va; T((T_CALLED("_nc_freeall()"))); #if NO_LEAKS + _nc_globals.leak_checking = TRUE; if (SP_PARM != 0) { if (SP_PARM->_oldnum_list != 0) { FreeAndNull(SP_PARM->_oldnum_list); @@ -60,29 +61,46 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0) if (SP_PARM->_panelHook.destroy != 0) { SP_PARM->_panelHook.destroy(SP_PARM->_panelHook.stdscr_pseudo_panel); } +#if NCURSES_EXT_COLORS + _nc_new_pair_leaks(SP_PARM); +#endif } #endif if (SP_PARM != 0) { _nc_lock_global(curses); while (WindowList(SP_PARM) != 0) { + WINDOWLIST *p, *q; bool deleted = FALSE; /* Delete only windows that're not a parent */ for (each_window(SP_PARM, p)) { + WINDOW *p_win = &(p->win); bool found = FALSE; +#ifndef USE_SP_WINDOWLIST + if (p->screen != SP_PARM) + continue; +#endif + for (each_window(SP_PARM, q)) { + WINDOW *q_win = &(q->win); + +#ifndef USE_SP_WINDOWLIST + if (q->screen != SP_PARM) + continue; +#endif + if ((p != q) - && (q->win._flags & _SUBWIN) - && (&(p->win) == q->win._parent)) { + && (q_win->_flags & _SUBWIN) + && (p_win == q_win->_parent)) { found = TRUE; break; } } if (!found) { - if (delwin(&(p->win)) != ERR) + if (delwin(p_win) != ERR) deleted = TRUE; break; } @@ -100,7 +118,7 @@ NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_DCL0) (void) _nc_printf_string(0, empty_va); #ifdef TRACE - (void) _nc_trace_buf(-1, 0); + (void) _nc_trace_buf(-1, (size_t) 0); #endif #if USE_WIDEC_SUPPORT FreeIfNeeded(_nc_wacs); @@ -129,22 +147,20 @@ _nc_freeall(void) NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit) (NCURSES_SP_DCLx int code) { - char *last_setbuf = (SP_PARM != 0) ? SP_PARM->_setbuf : 0; - + T((T_CALLED("_nc_free_and_exit(%d)"), code)); + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); NCURSES_SP_NAME(_nc_freeall) (NCURSES_SP_ARG); #ifdef TRACE - trace(0); /* close trace file, freeing its setbuf */ + curses_trace(0); /* close trace file, freeing its setbuf */ { static va_list fake; free(_nc_varargs("?", fake)); } #endif - fclose(stdout); - FreeIfNeeded(last_setbuf); exit(code); } -#else +#else /* !HAVE_NC_FREEALL */ NCURSES_EXPORT(void) _nc_freeall(void) { @@ -155,12 +171,10 @@ NCURSES_SP_NAME(_nc_free_and_exit) (NCURSES_SP_DCLx int code) { if (SP_PARM) { delscreen(SP_PARM); - if (SP_PARM->_term) - NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx SP_PARM->_term); } exit(code); } -#endif +#endif /* HAVE_NC_FREEALL */ #if NCURSES_SP_FUNCS NCURSES_EXPORT(void) @@ -169,3 +183,16 @@ _nc_free_and_exit(int code) NCURSES_SP_NAME(_nc_free_and_exit) (CURRENT_SCREEN, code); } #endif + +NCURSES_EXPORT(void) +exit_curses(int code) +{ +#if NO_LEAKS +#if NCURSES_SP_FUNCS + NCURSES_SP_NAME(_nc_free_and_exit) (CURRENT_SCREEN, code); +#else + _nc_free_and_exit(code); /* deprecated... */ +#endif +#endif + exit(code); +} diff --git a/deps/ncurses-5.9/ncurses/base/lib_getch.c b/deps/ncurses-6.3/ncurses/base/lib_getch.c similarity index 83% rename from deps/ncurses-5.9/ncurses/base/lib_getch.c rename to deps/ncurses-6.3/ncurses/base/lib_getch.c index 130c502..bdb8a04 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_getch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_getch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,2016 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 * @@ -40,9 +41,10 @@ ** */ +#define NEED_KEY_EVENT #include <curses.priv.h> -MODULE_ID("$Id: lib_getch.c,v 1.121 2010/12/25 23:24:04 tom Exp $") +MODULE_ID("$Id: lib_getch.c,v 1.142 2021/09/04 10:52:55 tom Exp $") #include <fifo_defs.h> @@ -69,16 +71,20 @@ NCURSES_EXPORT(int) NCURSES_SP_NAME(set_escdelay) (NCURSES_SP_DCLx int value) { int code = OK; -#if USE_REENTRANT - if (SP_PARM) { - SET_ESCDELAY(value); - } else { + if (value < 0) { code = ERR; - } + } else { +#if USE_REENTRANT + if (SP_PARM) { + SET_ESCDELAY(value); + } else { + code = ERR; + } #else - (void) SP_PARM; - ESCDELAY = value; + (void) SP_PARM; + ESCDELAY = value; #endif + } return code; } @@ -87,12 +93,16 @@ NCURSES_EXPORT(int) set_escdelay(int value) { int code; + if (value < 0) { + code = ERR; + } else { #if USE_REENTRANT - code = NCURSES_SP_NAME(set_escdelay) (CURRENT_SCREEN, value); + code = NCURSES_SP_NAME(set_escdelay) (CURRENT_SCREEN, value); #else - ESCDELAY = value; - code = OK; + ESCDELAY = value; + code = OK; #endif + } return code; } #endif @@ -124,6 +134,17 @@ _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. */ @@ -133,37 +154,60 @@ check_mouse_activity(SCREEN *sp, int delay EVENTLIST_2nd(_nc_eventlist * evl)) int rc; #ifdef USE_TERM_DRIVER - rc = TCBOf(sp)->drv->testmouse(TCBOf(sp), delay); -#else -#if USE_SYSMOUSE + TERMINAL_CONTROL_BLOCK *TCB = TCBOf(sp); + rc = TCBOf(sp)->drv->td_testmouse(TCBOf(sp), delay EVENTLIST_2nd(evl)); +# if defined(EXP_WIN32_DRIVER) + /* 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 */ +# if USE_SYSMOUSE if ((sp->_mouse_type == M_SYSMOUSE) && (sp->_sysmouse_head < sp->_sysmouse_tail)) { rc = TW_MOUSE; } else -#endif +# endif { +# if defined(EXP_WIN32_DRIVER) + rc = _nc_console_testmouse(sp, + _nc_console_handle(sp->_ifd), + delay + EVENTLIST_2nd(evl)); +# else rc = _nc_timed_wait(sp, TWAIT_MASK, delay, (int *) 0 EVENTLIST_2nd(evl)); -#if USE_SYSMOUSE +# endif +# if USE_SYSMOUSE if ((sp->_mouse_type == M_SYSMOUSE) && (sp->_sysmouse_head < sp->_sysmouse_tail) && (rc == 0) && (errno == EINTR)) { rc |= TW_MOUSE; } -#endif +# endif } -#endif +#endif /* USE_TERM_DRIVER */ return rc; } static NCURSES_INLINE int fifo_peek(SCREEN *sp) { - int ch = sp->_fifo[peek]; + int ch = (peek >= 0) ? sp->_fifo[peek] : ERR; TR(TRACE_IEVENT, ("peeking at %d", peek)); p_inc(); @@ -173,15 +217,16 @@ fifo_peek(SCREEN *sp) static NCURSES_INLINE int fifo_pull(SCREEN *sp) { - int ch; - ch = sp->_fifo[head]; + int ch = (head >= 0) ? sp->_fifo[head] : ERR; + TR(TRACE_IEVENT, ("pulling %s from %d", _nc_tracechar(sp, ch), head)); if (peek == head) { h_inc(); peek = head; - } else + } else { h_inc(); + } #ifdef TRACE if (USE_TRACEF(TRACE_IEVENT)) { @@ -200,14 +245,9 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) int mask = 0; (void) mask; - if (tail == -1) + if (tail < 0) return ERR; -#ifdef HIDE_EINTR - again: - errno = 0; -#endif - #ifdef NCURSES_WGETCH_EVENTS if (evl #if USE_GPM_SUPPORT || USE_EMX_MOUSE || USE_SYSMOUSE @@ -256,46 +296,65 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) ch = KEY_MOUSE; n = 1; } else +#endif +#if USE_KLIBC_KBD + if (NC_ISATTY(sp->_ifd) && sp->_cbreak) { + ch = _read_kbd(0, 1, !sp->_raw); + n = (ch == -1) ? -1 : 1; + sp->_extended_key = (ch == 0); + } else #endif { /* Can block... */ -#ifdef USE_TERM_DRIVER +#if defined(USE_TERM_DRIVER) int buf; - n = CallDriver_1(sp, read, &buf); +# if defined(EXP_WIN32_DRIVER) + if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && sp->_cbreak) { +# if USE_PTHREADS_EINTR + if ((pthread_self) && (pthread_kill) && (pthread_equal)) + _nc_globals.read_thread = pthread_self(); +# endif + n = _nc_console_read(sp, + _nc_console_handle(sp->_ifd), + &buf); +# if USE_PTHREADS_EINTR + _nc_globals.read_thread = 0; +# endif + } else +# elif defined(_NC_WINDOWS) + if (NC_ISATTY(sp->_ifd) && IsTermInfoOnConsole(sp) && sp->_cbreak) + n = _nc_mingw_console_read(sp, + _nc_get_handle(sp->_ifd), + &buf); + else +# endif /* EXP_WIN32_DRIVER */ + n = CallDriver_1(sp, td_read, &buf); ch = buf; -#else +#else /* !USE_TERM_DRIVER */ +#if defined(EXP_WIN32_DRIVER) + int buf; +#endif unsigned char c2 = 0; -# if USE_PTHREADS_EINTR -# if USE_WEAK_SYMBOLS +#if USE_PTHREADS_EINTR +#if USE_WEAK_SYMBOLS if ((pthread_self) && (pthread_kill) && (pthread_equal)) -# endif +#endif _nc_globals.read_thread = pthread_self(); -# endif - n = (int) read(sp->_ifd, &c2, 1); +#endif +#if defined(EXP_WIN32_DRIVER) + n = _nc_console_read(sp, + _nc_console_handle(sp->_ifd), + &buf); + c2 = buf; +#else + n = (int) read(sp->_ifd, &c2, (size_t) 1); +#endif #if USE_PTHREADS_EINTR _nc_globals.read_thread = 0; #endif ch = c2; -#endif +#endif /* USE_TERM_DRIVER */ } -#ifdef HIDE_EINTR - /* - * Under System V curses with non-restarting signals, getch() returns - * with value ERR when a handled signal keeps it from completing. - * If signals restart system calls, OTOH, the signal is invisible - * except to its handler. - * - * We don't want this difference to show. This piece of code - * tries to make it look like we always have restarting signals. - */ - if (n <= 0 && errno == EINTR -# if USE_PTHREADS_EINTR - && (_nc_globals.have_sigwinch == 0) -# endif - ) - goto again; -#endif - if ((n == -1) || (n == 0)) { TR(TRACE_IEVENT, ("read(%d,&ch,1)=%d, errno=%d", sp->_ifd, n, errno)); ch = ERR; @@ -325,7 +384,7 @@ fifo_clear(SCREEN *sp) tail = peek = 0; } -static int kgetch(SCREEN *EVENTLIST_2nd(_nc_eventlist * evl)); +static int kgetch(SCREEN *, bool EVENTLIST_2nd(_nc_eventlist *)); static void recur_wrefresh(WINDOW *win) @@ -391,7 +450,7 @@ _nc_wgetch(WINDOW *win, int ch; int rc = 0; #ifdef NCURSES_WGETCH_EVENTS - long event_delay = -1; + int event_delay = -1; #endif T((T_CALLED("_nc_wgetch(%p)"), (void *) win)); @@ -431,11 +490,11 @@ _nc_wgetch(WINDOW *win, /* ungetch in reverse order */ #ifdef NCURSES_WGETCH_EVENTS rc = recur_wgetnstr(win, buf); - if (rc != KEY_EVENT) + if (rc != KEY_EVENT && rc != ERR) safe_ungetch(sp, '\n'); #else - (void) recur_wgetnstr(win, buf); - safe_ungetch(sp, '\n'); + if (recur_wgetnstr(win, buf) != ERR) + safe_ungetch(sp, '\n'); #endif for (bufp = buf + strlen(buf); bufp > buf; bufp--) safe_ungetch(sp, bufp[-1]); @@ -492,7 +551,7 @@ _nc_wgetch(WINDOW *win, * This is tricky. We only want to get special-key * events one at a time. But we want to accumulate * mouse events until either (a) the mouse logic tells - * us it's picked up a complete gesture, or (b) + * us it has picked up a complete gesture, or (b) * there's a detectable time lapse after one. * * Note: if the mouse code starts failing to compose @@ -502,7 +561,7 @@ _nc_wgetch(WINDOW *win, int runcount = 0; do { - ch = kgetch(sp EVENTLIST_2nd(evl)); + ch = kgetch(sp, win->_notimeout EVENTLIST_2nd(evl)); if (ch == KEY_MOUSE) { ++runcount; if (sp->_mouse_inline(sp)) @@ -569,7 +628,7 @@ _nc_wgetch(WINDOW *win, * * If carriage return is defined as a function key in the * terminfo, e.g., kent, then Solaris may return either ^J (or ^M - * if nonl() is set) or KEY_ENTER depending on the echo() mode. + * if nonl() is set) or KEY_ENTER depending on the echo() mode. * We echo before translating carriage return based on nonl(), * since the visual result simply moves the cursor to column 0. * @@ -614,7 +673,7 @@ wgetch_events(WINDOW *win, _nc_eventlist * evl) int code; int value; - T((T_CALLED("wgetch_events(%p,%p)"), win, evl)); + T((T_CALLED("wgetch_events(%p,%p)"), (void *) win, (void *) evl)); code = _nc_wgetch(win, &value, _nc_use_meta(win) @@ -657,11 +716,11 @@ wgetch(WINDOW *win) */ static int -kgetch(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) +kgetch(SCREEN *sp, bool forever EVENTLIST_2nd(_nc_eventlist * evl)) { TRIES *ptr; int ch = 0; - int timeleft = GetEscdelay(sp); + int timeleft = forever ? 9999999 : GetEscdelay(sp); TR(TRACE_IEVENT, ("kgetch() called")); @@ -709,10 +768,11 @@ kgetch(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) if (ptr->value != 0) { /* sequence terminated */ TR(TRACE_IEVENT, ("end of sequence")); - if (peek == tail) + if (peek == tail) { fifo_clear(sp); - else + } else { head = peek; + } return (ptr->value); } diff --git a/deps/ncurses-5.9/ncurses/base/lib_getstr.c b/deps/ncurses-6.3/ncurses/base/lib_getstr.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_getstr.c rename to deps/ncurses-6.3/ncurses/base/lib_getstr.c index 21d8baa..5feb351 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_getstr.c +++ b/deps/ncurses-6.3/ncurses/base/lib_getstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2011,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 * @@ -38,16 +39,17 @@ ** */ +#define NEED_KEY_EVENT #include <curses.priv.h> -MODULE_ID("$Id: lib_getstr.c,v 1.29 2009/10/24 21:59:02 tom Exp $") +MODULE_ID("$Id: lib_getstr.c,v 1.37 2021/09/04 10:29:15 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, bool echoed) +WipeOut(WINDOW *win, int y, int x, char *first, char *last, int echoed) { if (last > first) { *--last = '\0'; @@ -85,9 +87,11 @@ wgetnstr_events(WINDOW *win, T((T_CALLED("wgetnstr(%p,%p,%d)"), (void *) win, (void *) str, maxlen)); - if (!win) + if (!win || !str) returnCode(ERR); + maxlen = _nc_getstr_limit(maxlen); + NCURSES_SP_NAME(_nc_get_tty_mode) (NCURSES_SP_ARGx &buf); oldnl = sp->_nl; @@ -96,8 +100,7 @@ wgetnstr_events(WINDOW *win, oldcbreak = sp->_cbreak; NCURSES_SP_NAME(nl) (NCURSES_SP_ARG); NCURSES_SP_NAME(noecho) (NCURSES_SP_ARG); - NCURSES_SP_NAME(noraw) (NCURSES_SP_ARG); - NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG); + NCURSES_SP_NAME(raw) (NCURSES_SP_ARG); erasec = NCURSES_SP_NAME(erasechar) (NCURSES_SP_ARG); killc = NCURSES_SP_NAME(killchar) (NCURSES_SP_ARG); @@ -111,7 +114,7 @@ wgetnstr_events(WINDOW *win, while ((ch = wgetch_events(win, evl)) != ERR) { /* * Some terminals (the Wyse-50 is the most common) generate - * a \n from the down-arrow key. With this logic, it's the + * a \n from the down-arrow key. With this logic, it is the * user's choice whether to set kcud=\n for wgetch(); * terminating *getstr() with \n should work either way. */ @@ -142,7 +145,7 @@ wgetnstr_events(WINDOW *win, str = WipeOut(win, y, x, oldstr, str, oldecho); } } else if (ch >= KEY_MIN - || (maxlen >= 0 && str - oldstr >= maxlen)) { + || (str - oldstr >= maxlen)) { NCURSES_SP_NAME(beep) (NCURSES_SP_ARG); } else { *str++ = (char) ch; diff --git a/deps/ncurses-5.9/ncurses/base/lib_hline.c b/deps/ncurses-6.3/ncurses/base/lib_hline.c similarity index 82% rename from deps/ncurses-5.9/ncurses/base/lib_hline.c rename to deps/ncurses-6.3/ncurses/base/lib_hline.c index 1f03808..938c499 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_hline.c +++ b/deps/ncurses-6.3/ncurses/base/lib_hline.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -29,6 +30,8 @@ /**************************************************************************** * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Sven Verdoolaege 2001 * ****************************************************************************/ /* @@ -40,23 +43,21 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_hline.c,v 1.13 2010/12/19 01:48:39 tom Exp $") +MODULE_ID("$Id: lib_hline.c,v 1.16 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) whline(WINDOW *win, chtype ch, int n) { int code = ERR; - int start; - int end; T((T_CALLED("whline(%p,%s,%d)"), (void *) win, _tracechtype(ch), n)); if (win) { struct ldat *line = &(win->_line[win->_cury]); NCURSES_CH_T wch; + int start = win->_curx; + int end = start + n - 1; - start = win->_curx; - end = start + n - 1; if (end > win->_maxx) end = win->_maxx; @@ -68,6 +69,14 @@ whline(WINDOW *win, chtype ch, int n) SetChar2(wch, ch); wch = _nc_render(win, wch); +#if USE_WIDEC_SUPPORT + if (start > 0 && isWidecExt(line->text[start])) { + SetChar2(line->text[start - 1], ' '); + } + if (end < win->_maxx && isWidecExt(line->text[end + 1])) { + SetChar2(line->text[end + 1], ' '); + } +#endif while (end >= start) { line->text[end] = wch; end--; diff --git a/deps/ncurses-5.9/ncurses/base/lib_immedok.c b/deps/ncurses-6.3/ncurses/base/lib_immedok.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_immedok.c rename to deps/ncurses-6.3/ncurses/base/lib_immedok.c index d51b60a..23afe5b 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_immedok.c +++ b/deps/ncurses-6.3/ncurses/base/lib_immedok.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_immedok.c,v 1.5 2009/10/24 22:32:11 tom Exp $") +MODULE_ID("$Id: lib_immedok.c,v 1.6 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(void) immedok(WINDOW *win, bool flag) diff --git a/deps/ncurses-5.9/ncurses/base/lib_inchstr.c b/deps/ncurses-6.3/ncurses/base/lib_inchstr.c similarity index 83% rename from deps/ncurses-5.9/ncurses/base/lib_inchstr.c rename to deps/ncurses-6.3/ncurses/base/lib_inchstr.c index aebb6d6..38af239 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_inchstr.c +++ b/deps/ncurses-6.3/ncurses/base/lib_inchstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,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 * @@ -41,7 +42,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_inchstr.c,v 1.12 2010/12/20 01:37:41 tom Exp $") +MODULE_ID("$Id: lib_inchstr.c,v 1.17 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) winchnstr(WINDOW *win, chtype *str, int n) @@ -50,16 +51,19 @@ winchnstr(WINDOW *win, chtype *str, int n) T((T_CALLED("winchnstr(%p,%p,%d)"), (void *) win, (void *) str, n)); - if (!str) - returnCode(0); + if (!win || !str) { + i = ERR; + } else { + int row = win->_cury; + int col = win->_curx; + NCURSES_CH_T *text = win->_line[row].text; - if (win) { - for (; (n < 0 || (i < n)) && (win->_curx + i <= win->_maxx); i++) - str[i] = - (chtype) CharOf(win->_line[win->_cury].text[win->_curx + i]) | - AttrOf(win->_line[win->_cury].text[win->_curx + i]); + for (; (n < 0 || (i < n)) && (col + i <= win->_maxx); i++) { + str[i] = (((chtype) CharOf(text[col + i]) & A_CHARTEXT) | + AttrOf(text[col + i])); + } + str[i] = (chtype) 0; } - str[i] = (chtype) 0; returnCode(i); } diff --git a/deps/ncurses-5.9/ncurses/base/lib_initscr.c b/deps/ncurses-6.3/ncurses/base/lib_initscr.c similarity index 85% rename from deps/ncurses-5.9/ncurses/base/lib_initscr.c rename to deps/ncurses-6.3/ncurses/base/lib_initscr.c index 334682f..6b91491 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_initscr.c +++ b/deps/ncurses-6.3/ncurses/base/lib_initscr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -29,7 +30,7 @@ /**************************************************************************** * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * * and: Eric S. Raymond <esr@snark.thyrsus.com> * - * and: Thomas E. Dickey 1996-2003 * + * and: Thomas E. Dickey 1996-on * ****************************************************************************/ /* @@ -45,15 +46,13 @@ #include <sys/termio.h> /* needed for ISC */ #endif -MODULE_ID("$Id: lib_initscr.c,v 1.39 2009/02/14 20:55:49 tom Exp $") +MODULE_ID("$Id: lib_initscr.c,v 1.48 2020/09/07 14:26:48 tom Exp $") NCURSES_EXPORT(WINDOW *) initscr(void) { WINDOW *result; - NCURSES_CONST char *name; - START_TRACE(); T((T_CALLED("initscr()"))); @@ -62,11 +61,18 @@ initscr(void) /* Portable applications must not call initscr() more than once */ if (!_nc_globals.init_screen) { + const char *env; + char *name; + _nc_globals.init_screen = TRUE; - if ((name = getenv("TERM")) == 0 - || *name == '\0') - name = "unknown"; + env = getenv("TERM"); + (void) VALID_TERM_ENV(env, "unknown"); + + if ((name = strdup(env)) == NULL) { + fprintf(stderr, "Error opening allocating $TERM.\n"); + ExitProgram(EXIT_FAILURE); + } #ifdef __CYGWIN__ /* * 2002/9/21 @@ -75,9 +81,9 @@ initscr(void) * core when attempting to write to stdout. Opening /dev/tty * explicitly seems to fix the problem. */ - if (isatty(fileno(stdout))) { + if (NC_ISATTY(fileno(stdout))) { FILE *fp = fopen("/dev/tty", "w"); - if (fp != 0 && isatty(fileno(fp))) { + if (fp != 0 && NC_ISATTY(fileno(fp))) { fclose(stdout); dup2(fileno(fp), STDOUT_FILENO); stdout = fdopen(STDOUT_FILENO, "w"); @@ -86,7 +92,7 @@ initscr(void) #endif if (newterm(name, stdout, stdin) == 0) { fprintf(stderr, "Error opening terminal: %s.\n", name); - exit(EXIT_FAILURE); + ExitProgram(EXIT_FAILURE); } /* def_shell_mode - done in newterm/_nc_setupscreen */ @@ -95,6 +101,7 @@ initscr(void) #else def_prog_mode(); #endif + free(name); } result = stdscr; _nc_unlock_global(curses); diff --git a/deps/ncurses-5.9/ncurses/base/lib_insch.c b/deps/ncurses-6.3/ncurses/base/lib_insch.c similarity index 85% rename from deps/ncurses-5.9/ncurses/base/lib_insch.c rename to deps/ncurses-6.3/ncurses/base/lib_insch.c index e21ec02..894605c 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_insch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_insch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2013,2016 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 * @@ -43,7 +44,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_insch.c,v 1.32 2009/10/24 22:04:35 tom Exp $") +MODULE_ID("$Id: lib_insch.c,v 1.37 2020/02/02 23:34:34 tom Exp $") /* * Insert the given character, updating the current location to simplify @@ -53,9 +54,9 @@ NCURSES_EXPORT(int) _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch) { int code = OK; + int ch8 = (int) ChCharOf(ch); NCURSES_CH_T wch; int count; - NCURSES_CONST char *s; int tabsize = ( #if USE_REENTRANT sp->_TABSIZE @@ -82,10 +83,9 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch) #if USE_WIDEC_SUPPORT WINDOW_EXT(win, addch_used) == 0 && #endif - is8bits(ChCharOf(ch)) && - (isprint(ChCharOf(ch)) || + (isprint(ch8) || (ChAttrOf(ch) & A_ALTCHARSET) || - (sp != 0 && sp->_legacy_coding && !iscntrl(ChCharOf(ch))))) { + (sp != 0 && 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]); @@ -101,8 +101,9 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch) *temp1 = _nc_render(win, wch); win->_curx++; } - } else if (is8bits(ChCharOf(ch)) && iscntrl(ChCharOf(ch))) { - s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx ChCharOf(ch)); + } else if (iscntrl(ch8)) { + NCURSES_CONST char *s; + s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (chtype) ch8); while (*s != '\0') { code = _nc_insert_ch(sp, win, ChAttrOf(ch) | UChar(*s)); if (code != OK) @@ -121,19 +122,16 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch) if (count > 0) { code = _nc_insert_wch(win, &wch); } else if (count == -1) { + NCURSES_CONST char *s; /* handle EILSEQ */ - if (is8bits(ch)) { - s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx ChCharOf(ch)); - if (strlen(s) > 1) { - while (*s != '\0') { - code = _nc_insert_ch(sp, win, - ChAttrOf(ch) | UChar(*s)); - if (code != OK) - break; - ++s; - } - } else { - code = ERR; + s = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (chtype) ch8); + if (strlen(s) > 1) { + while (*s != '\0') { + code = _nc_insert_ch(sp, win, + ChAttrOf(ch) | UChar(*s)); + if (code != OK) + break; + ++s; } } else { code = ERR; @@ -149,15 +147,13 @@ _nc_insert_ch(SCREEN *sp, WINDOW *win, chtype ch) NCURSES_EXPORT(int) winsch(WINDOW *win, chtype c) { - NCURSES_SIZE_T oy; - NCURSES_SIZE_T ox; int code = ERR; T((T_CALLED("winsch(%p, %s)"), (void *) win, _tracechtype(c))); if (win != 0) { - oy = win->_cury; - ox = win->_curx; + NCURSES_SIZE_T oy = win->_cury; + NCURSES_SIZE_T ox = win->_curx; code = _nc_insert_ch(_nc_screen_of(win), win, c); diff --git a/deps/ncurses-5.9/ncurses/base/lib_insdel.c b/deps/ncurses-6.3/ncurses/base/lib_insdel.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_insdel.c rename to deps/ncurses-6.3/ncurses/base/lib_insdel.c index 8f51bbe..7c00739 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_insdel.c +++ b/deps/ncurses-6.3/ncurses/base/lib_insdel.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2003,2009 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_insdel.c,v 1.13 2009/10/24 22:34:41 tom Exp $") +MODULE_ID("$Id: lib_insdel.c,v 1.14 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) winsdelln(WINDOW *win, int n) diff --git a/deps/ncurses-6.3/ncurses/base/lib_insnstr.c b/deps/ncurses-6.3/ncurses/base/lib_insnstr.c new file mode 100644 index 0000000..ff1ae57 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_insnstr.c @@ -0,0 +1,95 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2004-2009,2016 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: Thomas E. Dickey * + ****************************************************************************/ + +/* +** lib_insnstr.c +** +** The routine winsnstr(). +** +*/ + +#include <curses.priv.h> +#include <ctype.h> + +MODULE_ID("$Id: lib_insnstr.c,v 1.7 2020/02/02 23:34:34 tom Exp $") + +NCURSES_EXPORT(int) +winsnstr(WINDOW *win, const char *s, int n) +{ + int code = ERR; + const unsigned char *str = (const unsigned char *) s; + + T((T_CALLED("winsnstr(%p,%s,%d)"), (void *) win, _nc_visbufn(s, n), n)); + + if (win != 0 && str != 0) { + SCREEN *sp = _nc_screen_of(win); +#if USE_WIDEC_SUPPORT + /* + * If the output contains "wide" (multibyte) characters, we will not + * really know the width of a character until we get the last byte + * of the character. Since the preceding byte(s) may use more columns + * on the screen than the final character, it is best to route the + * call to the wins_nwstr() function. + */ + 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) { + mbstate_t state; + size_t n3; + init_mb(state); + n3 = mbstowcs(buffer, s, nn); + if (n3 != (size_t) (-1)) { + code = wins_nwstr(win, buffer, (int) n3); + } + free(buffer); + } + } + if (code == ERR) +#endif + { + NCURSES_SIZE_T oy = win->_cury; + NCURSES_SIZE_T ox = win->_curx; + const unsigned char *cp; + + for (cp = str; (n <= 0 || (cp - str) < n) && *cp; cp++) { + _nc_insert_ch(sp, win, (chtype) UChar(*cp)); + } + win->_curx = ox; + win->_cury = oy; + _nc_synchook(win); + code = OK; + } + } + returnCode(code); +} diff --git a/deps/ncurses-5.9/ncurses/base/lib_instr.c b/deps/ncurses-6.3/ncurses/base/lib_instr.c similarity index 78% rename from deps/ncurses-5.9/ncurses/base/lib_instr.c rename to deps/ncurses-6.3/ncurses/base/lib_instr.c index e6d1a73..b9874b7 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_instr.c +++ b/deps/ncurses-6.3/ncurses/base/lib_instr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -41,50 +42,59 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_instr.c,v 1.17 2009/10/24 22:55:45 tom Exp $") +MODULE_ID("$Id: lib_instr.c,v 1.25 2021/04/03 22:24:18 tom Exp $") NCURSES_EXPORT(int) winnstr(WINDOW *win, char *str, int n) { - int i = 0, row, col; + int i = 0; T((T_CALLED("winnstr(%p,%p,%d)"), (void *) win, str, n)); - if (!str) - returnCode(0); - - if (win) { - getyx(win, row, col); + if (!win || !str) { + i = ERR; + } else { + int row = win->_cury; + int col = win->_curx; + NCURSES_CH_T *text = win->_line[row].text; if (n < 0) - n = win->_maxx - win->_curx + 1; + n = win->_maxx - col + 1; for (; i < n;) { #if USE_WIDEC_SUPPORT - cchar_t *cell = &(win->_line[row].text[col]); - wchar_t *wch; + cchar_t *cell = &(text[col]); attr_t attrs; - short pair; - int n2; - bool done = FALSE; - mbstate_t state; - size_t i3, n3; + NCURSES_PAIRS_T pair; char *tmp; if (!isWidecExt(*cell)) { + wchar_t *wch; + int n2; + n2 = getcchar(cell, 0, 0, 0, 0); if (n2 > 0 && (wch = typeCalloc(wchar_t, (unsigned) n2 + 1)) != 0) { + bool done = FALSE; + if (getcchar(cell, wch, &attrs, &pair, 0) == OK) { + mbstate_t state; + size_t n3; init_mb(state); - n3 = wcstombs(0, wch, 0); + n3 = wcstombs(0, wch, (size_t) 0); if (!isEILSEQ(n3) && (n3 != 0)) { - if (((int) n3 + i) > n) { + size_t need = n3 + 10 + (size_t) i; + int have = (int) n3 + i; + + /* check for loop-done as well as overflow */ + if (have > n || (int) need <= 0) { done = TRUE; - } else if ((tmp = typeCalloc(char, n3 + 10)) == 0) { + } else if ((tmp = typeCalloc(char, need)) == 0) { done = TRUE; } else { + size_t i3; + init_mb(state); wcstombs(tmp, wch, n3); for (i3 = 0; i3 < n3; ++i3) @@ -99,14 +109,14 @@ winnstr(WINDOW *win, char *str, int n) } } #else - str[i++] = (char) CharOf(win->_line[row].text[col]); + str[i++] = (char) CharOf(text[col]); #endif if (++col > win->_maxx) { break; } } + str[i] = '\0'; /* SVr4 does not seem to count the null */ } - str[i] = '\0'; /* SVr4 does not seem to count the null */ T(("winnstr returns %s", _nc_visbuf(str))); returnCode(i); } diff --git a/deps/ncurses-5.9/ncurses/base/lib_isendwin.c b/deps/ncurses-6.3/ncurses/base/lib_isendwin.c similarity index 91% rename from deps/ncurses-5.9/ncurses/base/lib_isendwin.c rename to deps/ncurses-6.3/ncurses/base/lib_isendwin.c index 923e35b..a54d500 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_isendwin.c +++ b/deps/ncurses-6.3/ncurses/base/lib_isendwin.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,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 * @@ -42,14 +43,14 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_isendwin.c,v 1.7 2009/02/15 00:36:24 tom Exp $") +MODULE_ID("$Id: lib_isendwin.c,v 1.9 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(bool) NCURSES_SP_NAME(isendwin) (NCURSES_SP_DCL0) { if (SP_PARM == NULL) return FALSE; - return SP_PARM->_endwin; + return (SP_PARM->_endwin == ewSuspend); } #if NCURSES_SP_FUNCS diff --git a/deps/ncurses-5.9/ncurses/base/lib_leaveok.c b/deps/ncurses-6.3/ncurses/base/lib_leaveok.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_leaveok.c rename to deps/ncurses-6.3/ncurses/base/lib_leaveok.c index e6995f8..4d05b2c 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_leaveok.c +++ b/deps/ncurses-6.3/ncurses/base/lib_leaveok.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_leaveok.c,v 1.6 2009/10/24 22:34:23 tom Exp $") +MODULE_ID("$Id: lib_leaveok.c,v 1.7 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) leaveok(WINDOW *win, bool flag) diff --git a/deps/ncurses-6.3/ncurses/base/lib_mouse.c b/deps/ncurses-6.3/ncurses/base/lib_mouse.c new file mode 100644 index 0000000..2fb261d --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_mouse.c @@ -0,0 +1,2065 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Juergen Pfeifer 2008 * + ****************************************************************************/ + +/* + * This module is intended to encapsulate ncurses's interface to pointing + * devices. + * + * The primary method used is xterm's internal mouse-tracking facility. + * Additional methods depend on the platform: + * Alessandro Rubini's GPM server (Linux) + * sysmouse (FreeBSD) + * special-purpose mouse interface for OS/2 EMX. + * + * Notes for implementors 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 + * and filters events. The mediating data structure is a circular queue of + * MEVENT structures. + * + * 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) _nc_mouse_event() detects a series of incoming mouse reports + * and queues them, or (b) code in lib_getch.c detects the kmous prefix in + * the keyboard input stream and calls _nc_mouse_inline to queue up a series + * of adjacent mouse reports. + * + * In either case, _nc_mouse_parse() should be called after the series is + * accepted to parse the digested mouse reports (low-level MEVENTs) into + * a gesture (a high-level or composite MEVENT). + * + * Don't be too shy about adding new event types or modifiers, if you can find + * room for them in the 32-bit mask. The API is written so that users get + * feedback on which theoretical event types they won't see when they call + * mousemask. There's one bit per button (the RESERVED_EVENT bit) not being + * used yet, and a couple of bits open at the high end. + */ + +#ifdef __EMX__ +# include <io.h> +# define INCL_DOS +# define INCL_VIO +# define INCL_KBD +# define INCL_MOU +# define INCL_DOSPROCESS +# include <os2.h> /* Need to include before the others */ +#endif + +#include <curses.priv.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_mouse.c,v 1.193 2021/03/20 12:56:32 tom Exp $") + +#include <tic.h> + +#if USE_GPM_SUPPORT +#include <linux/keyboard.h> /* defines KG_* macros */ + +#ifdef HAVE_LIBDL +/* use dynamic loader to avoid linkage dependency */ +#include <dlfcn.h> + +#ifdef RTLD_NOW +#define my_RTLD RTLD_NOW +#else +#ifdef RTLD_LAZY +#define my_RTLD RTLD_LAZY +#else +make an error +#endif +#endif /* RTLD_NOW */ +#endif /* HAVE_LIBDL */ + +#endif /* USE_GPM_SUPPORT */ + +#if USE_SYSMOUSE +#undef buttons /* symbol conflict in consio.h */ +#undef mouse_info /* symbol conflict in consio.h */ +#include <osreldate.h> +#if defined(__DragonFly_version) || (defined(__FreeBSD__) && (__FreeBSD_version >= 400017)) +#include <sys/consio.h> +#include <sys/fbio.h> +#else +#include <machine/console.h> +#endif +#endif /* use_SYSMOUSE */ + +#if USE_KLIBC_MOUSE +#include <sys/socket.h> +#define pipe(handles) socketpair(AF_LOCAL, SOCK_STREAM, 0, handles) +#define DosWrite(hfile, pbuffer, cbwrite, pcbactual) \ + write(hfile, pbuffer, cbwrite) +#define DosExit(action, result ) /* do nothing */ +#define DosCreateThread(ptid, pfn, param, flag, cbStack) \ + (*(ptid) = _beginthread(pfn, NULL, cbStack, \ + (void *)param), (*(ptid) == -1)) +#endif + +#define MY_TRACE TRACE_ICALLS|TRACE_IEVENT + +#define MASK_RELEASE(x) (mmask_t) NCURSES_MOUSE_MASK(x, 001) +#define MASK_PRESS(x) (mmask_t) NCURSES_MOUSE_MASK(x, 002) +#define MASK_CLICK(x) (mmask_t) NCURSES_MOUSE_MASK(x, 004) +#define MASK_DOUBLE_CLICK(x) (mmask_t) NCURSES_MOUSE_MASK(x, 010) +#define MASK_TRIPLE_CLICK(x) (mmask_t) NCURSES_MOUSE_MASK(x, 020) +#define MASK_RESERVED_EVENT(x) (mmask_t) NCURSES_MOUSE_MASK(x, 040) + +#if NCURSES_MOUSE_VERSION == 1 + +#define BUTTON_CLICKED (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED | BUTTON4_CLICKED) +#define BUTTON_PRESSED (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED | BUTTON4_PRESSED) +#define BUTTON_RELEASED (BUTTON1_RELEASED | BUTTON2_RELEASED | BUTTON3_RELEASED | BUTTON4_RELEASED) +#define BUTTON_DOUBLE_CLICKED (BUTTON1_DOUBLE_CLICKED | BUTTON2_DOUBLE_CLICKED | BUTTON3_DOUBLE_CLICKED | BUTTON4_DOUBLE_CLICKED) +#define BUTTON_TRIPLE_CLICKED (BUTTON1_TRIPLE_CLICKED | BUTTON2_TRIPLE_CLICKED | BUTTON3_TRIPLE_CLICKED | BUTTON4_TRIPLE_CLICKED) + +#define MAX_BUTTONS 4 + +#else + +#define BUTTON_CLICKED (BUTTON1_CLICKED | BUTTON2_CLICKED | BUTTON3_CLICKED | BUTTON4_CLICKED | BUTTON5_CLICKED) +#define BUTTON_PRESSED (BUTTON1_PRESSED | BUTTON2_PRESSED | BUTTON3_PRESSED | BUTTON4_PRESSED | BUTTON5_PRESSED) +#define BUTTON_RELEASED (BUTTON1_RELEASED | BUTTON2_RELEASED | BUTTON3_RELEASED | BUTTON4_RELEASED | BUTTON5_RELEASED) +#define BUTTON_DOUBLE_CLICKED (BUTTON1_DOUBLE_CLICKED | BUTTON2_DOUBLE_CLICKED | BUTTON3_DOUBLE_CLICKED | BUTTON4_DOUBLE_CLICKED | BUTTON5_DOUBLE_CLICKED) +#define BUTTON_TRIPLE_CLICKED (BUTTON1_TRIPLE_CLICKED | BUTTON2_TRIPLE_CLICKED | BUTTON3_TRIPLE_CLICKED | BUTTON4_TRIPLE_CLICKED | BUTTON5_TRIPLE_CLICKED) + +#if NCURSES_MOUSE_VERSION == 2 +#define MAX_BUTTONS 5 +#else +#define MAX_BUTTONS 11 +#endif + +#endif + +#define INVALID_EVENT -1 +#define NORMAL_EVENT 0 + +#define ValidEvent(ep) ((ep)->id != INVALID_EVENT) +#define Invalidate(ep) (ep)->id = INVALID_EVENT + +#if USE_GPM_SUPPORT + +#ifndef LIBGPM_SONAME +#define LIBGPM_SONAME "libgpm.so" +#endif + +#define GET_DLSYM(name) (my_##name = (TYPE_##name) dlsym(sp->_dlopen_gpm, #name)) + +#endif /* USE_GPM_SUPPORT */ + +static bool _nc_mouse_parse(SCREEN *, int); +static void _nc_mouse_resume(SCREEN *); +static void _nc_mouse_wrap(SCREEN *); + +/* maintain a circular list of mouse events */ + +#define FirstEV(sp) ((sp)->_mouse_events) +#define LastEV(sp) ((sp)->_mouse_events + EV_MAX - 1) + +#undef NEXT +#define NEXT(ep) ((ep >= LastEV(SP_PARM)) \ + ? FirstEV(SP_PARM) \ + : ep + 1) + +#undef PREV +#define PREV(ep) ((ep <= FirstEV(SP_PARM)) \ + ? LastEV(SP_PARM) \ + : ep - 1) + +#define IndexEV(sp, ep) (ep - FirstEV(sp)) + +#define RunParams(sp, eventp, runp) \ + (long) IndexEV(sp, runp), \ + (long) (IndexEV(sp, eventp) + (EV_MAX - 1)) % EV_MAX + +#ifdef TRACE +static void +_trace_slot(SCREEN *sp, const char *tag) +{ + MEVENT *ep; + + _tracef("%s", tag); + + for (ep = FirstEV(sp); ep <= LastEV(sp); ep++) + _tracef("mouse event queue slot %ld = %s", + (long) IndexEV(sp, ep), + _nc_tracemouse(sp, ep)); +} +#endif + +#if USE_EMX_MOUSE + +# define TOP_ROW 0 +# define LEFT_COL 0 + +# define M_FD(sp) sp->_mouse_fd + +static void +write_event(SCREEN *sp, int down, int button, int x, int y) +{ + char buf[6]; + unsigned long ignore; + + _nc_STRCPY(buf, "\033[M", sizeof(buf)); /* should be the same as key_mouse */ + buf[3] = ' ' + (button - 1) + (down ? 0 : 0x40); + buf[4] = ' ' + x - LEFT_COL + 1; + buf[5] = ' ' + y - TOP_ROW + 1; + DosWrite(sp->_emxmouse_wfd, buf, 6, &ignore); +} + +static void +#if USE_KLIBC_MOUSE +mouse_server(void *param) +#else +mouse_server(unsigned long param) +#endif +{ + SCREEN *sp = (SCREEN *) param; + unsigned short fWait = MOU_WAIT; + /* NOPTRRECT mourt = { 0,0,24,79 }; */ + MOUEVENTINFO mouev; + HMOU hmou; + unsigned short mask = MOUSE_BN1_DOWN | MOUSE_BN2_DOWN | MOUSE_BN3_DOWN; + int nbuttons = 3; + int oldstate = 0; + char err[80]; + unsigned long rc; + + /* open the handle for the mouse */ + if (MouOpen(NULL, &hmou) == 0) { + rc = MouSetEventMask(&mask, hmou); + if (rc) { /* retry with 2 buttons */ + mask = MOUSE_BN1_DOWN | MOUSE_BN2_DOWN; + rc = MouSetEventMask(&mask, hmou); + nbuttons = 2; + } + if (rc == 0 && MouDrawPtr(hmou) == 0) { + for (;;) { + /* sit and wait on the event queue */ + rc = MouReadEventQue(&mouev, &fWait, hmou); + if (rc) { + _nc_SPRINTF(err, _nc_SLIMIT(sizeof(err)) + "Error reading mouse queue, rc=%lu.\r\n", rc); + break; + } + if (!sp->_emxmouse_activated) + goto finish; + + /* + * OS/2 numbers a 3-button mouse inconsistently from other + * platforms: + * 1 = left + * 2 = right + * 3 = middle. + */ + if ((mouev.fs ^ oldstate) & MOUSE_BN1_DOWN) + write_event(sp, mouev.fs & MOUSE_BN1_DOWN, + sp->_emxmouse_buttons[1], mouev.col, mouev.row); + if ((mouev.fs ^ oldstate) & MOUSE_BN2_DOWN) + write_event(sp, mouev.fs & MOUSE_BN2_DOWN, + sp->_emxmouse_buttons[3], mouev.col, mouev.row); + if ((mouev.fs ^ oldstate) & MOUSE_BN3_DOWN) + write_event(sp, mouev.fs & MOUSE_BN3_DOWN, + sp->_emxmouse_buttons[2], mouev.col, mouev.row); + + finish: + oldstate = mouev.fs; + } + } else { + _nc_SPRINTF(err, _nc_SLIMIT(sizeof(err)) + "Error setting event mask, buttons=%d, rc=%lu.\r\n", + nbuttons, rc); + } + + DosWrite(2, err, strlen(err), &rc); + MouClose(hmou); + } + DosExit(EXIT_THREAD, 0L); +} + +#endif /* USE_EMX_MOUSE */ + +#if USE_SYSMOUSE +static void +sysmouse_server(SCREEN *sp) +{ + struct mouse_info the_mouse; + MEVENT *work; + + the_mouse.operation = MOUSE_GETINFO; + if (sp != 0 + && sp->_mouse_fd >= 0 + && sp->_sysmouse_tail < FIFO_SIZE + && ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) { + + if (sp->_sysmouse_head > sp->_sysmouse_tail) { + sp->_sysmouse_tail = 0; + sp->_sysmouse_head = 0; + } + work = &(sp->_sysmouse_fifo[sp->_sysmouse_tail]); + memset(work, 0, sizeof(*work)); + work->id = NORMAL_EVENT; /* there's only one mouse... */ + + sp->_sysmouse_old_buttons = sp->_sysmouse_new_buttons; + sp->_sysmouse_new_buttons = the_mouse.u.data.buttons & 0x7; + + if (sp->_sysmouse_new_buttons) { + if (sp->_sysmouse_new_buttons & 1) + work->bstate |= BUTTON1_PRESSED; + if (sp->_sysmouse_new_buttons & 2) + work->bstate |= BUTTON2_PRESSED; + if (sp->_sysmouse_new_buttons & 4) + work->bstate |= BUTTON3_PRESSED; + } else { + if (sp->_sysmouse_old_buttons & 1) + work->bstate |= BUTTON1_RELEASED; + if (sp->_sysmouse_old_buttons & 2) + work->bstate |= BUTTON2_RELEASED; + if (sp->_sysmouse_old_buttons & 4) + work->bstate |= BUTTON3_RELEASED; + } + + /* for cosmetic bug in syscons.c on FreeBSD 3.[34] */ + the_mouse.operation = MOUSE_HIDE; + ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse); + the_mouse.operation = MOUSE_SHOW; + ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse); + + /* + * We're only interested if the button is pressed or released. + * FIXME: implement continuous event-tracking. + */ + if (sp->_sysmouse_new_buttons != sp->_sysmouse_old_buttons) { + sp->_sysmouse_tail += 1; + } + work->x = the_mouse.u.data.x / sp->_sysmouse_char_width; + work->y = the_mouse.u.data.y / sp->_sysmouse_char_height; + } +} + +static void +handle_sysmouse(int sig GCC_UNUSED) +{ + sysmouse_server(CURRENT_SCREEN); +} +#endif /* USE_SYSMOUSE */ + +#ifndef USE_TERM_DRIVER +#define xterm_kmous "\033[M" + +static void +init_xterm_mouse(SCREEN *sp) +{ + sp->_mouse_type = M_XTERM; + sp->_mouse_format = MF_X10; + sp->_mouse_xtermcap = tigetstr("XM"); + if (VALID_STRING(sp->_mouse_xtermcap)) { + char *code = strstr(sp->_mouse_xtermcap, "[?"); + if (code != 0) { + code += 2; + while ((*code >= '0') && (*code <= '9')) { + char *next = code; + while ((*next >= '0') && (*next <= '9')) { + ++next; + } + if (!strncmp(code, "1006", (size_t) (next - code))) { + sp->_mouse_format = MF_SGR1006; + } +#ifdef EXP_XTERM_1005 + if (!strncmp(code, "1005", (size_t) (next - code))) { + sp->_mouse_format = MF_XTERM_1005; + } +#endif + if (*next == ';') { + while (*next == ';') { + ++next; + } + code = next; + } else { + break; + } + } + } + } else { + int code = tigetnum("XM"); + switch (code) { +#ifdef EXP_XTERM_1005 + case 1005: + /* see "xterm+sm+1005" */ + sp->_mouse_xtermcap = "\033[?1005;1000%?%p1%{1}%=%th%el%;"; + sp->_mouse_format = MF_XTERM_1005; + break; +#endif + case 1006: + /* see "xterm+sm+1006" */ + sp->_mouse_xtermcap = "\033[?1006;1000%?%p1%{1}%=%th%el%;"; + sp->_mouse_format = MF_SGR1006; + break; + default: + sp->_mouse_xtermcap = "\033[?1000%?%p1%{1}%=%th%el%;"; + break; + } + } +} +#endif + +static void +enable_xterm_mouse(SCREEN *sp, int enable) +{ +#if USE_EMX_MOUSE + sp->_emxmouse_activated = enable; +#else + NCURSES_PUTP2("xterm-mouse", TIPARM_1(sp->_mouse_xtermcap, enable)); +#endif + sp->_mouse_active = enable; +} + +#if USE_GPM_SUPPORT +static bool +allow_gpm_mouse(SCREEN *sp GCC_UNUSED) +{ + bool result = FALSE; + +#if USE_WEAK_SYMBOLS + /* Danger Robinson: do not use dlopen for libgpm if already loaded */ + if ((Gpm_Wgetch) != 0) { + if (!sp->_mouse_gpm_loaded) { + T(("GPM library was already dlopen'd, not by us")); + } + } else +#endif + /* GPM does printf's without checking if stdout is a terminal */ + 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, "|:"); + } + } else { + /* GPM checks the beginning of the $TERM variable to decide if it + * should pass xterm events through. There is no real advantage in + * allowing GPM to do this. Recent versions relax that check, and + * pretend that GPM can work with any terminal having the kmous + * capability. Perhaps that works for someone. If so, they can + * set the environment variable (above). + */ + if (env != 0 && strstr(env, "linux") != 0) { + result = TRUE; + } + } + } + return result; +} + +#ifdef HAVE_LIBDL +static void +unload_gpm_library(SCREEN *sp) +{ + if (sp->_dlopen_gpm != 0) { + T(("unload GPM library")); + sp->_mouse_gpm_loaded = FALSE; + sp->_mouse_fd = -1; + } +} + +static void +load_gpm_library(SCREEN *sp) +{ + sp->_mouse_gpm_found = FALSE; + + /* + * If we already had a successful dlopen, reuse it. + */ + if (sp->_dlopen_gpm != 0) { + sp->_mouse_gpm_found = TRUE; + sp->_mouse_gpm_loaded = TRUE; + } else if ((sp->_dlopen_gpm = dlopen(LIBGPM_SONAME, my_RTLD)) != 0) { +#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 (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; + } else { + sp->_mouse_gpm_found = TRUE; + sp->_mouse_gpm_loaded = TRUE; + } + } +} +#endif /* HAVE_LIBDL */ + +static bool +enable_gpm_mouse(SCREEN *sp, bool enable) +{ + bool result; + + T((T_CALLED("enable_gpm_mouse(%d)"), enable)); + + if (enable && !sp->_mouse_active) { +#ifdef HAVE_LIBDL + if (sp->_mouse_gpm_found && !sp->_mouse_gpm_loaded) { + load_gpm_library(sp); + } +#endif + if (sp->_mouse_gpm_loaded) { + int code; + + /* GPM: initialize connection to gpm server */ + sp->_mouse_gpm_connect.eventMask = GPM_DOWN | GPM_UP; + sp->_mouse_gpm_connect.defaultMask = + (unsigned short) (~(sp->_mouse_gpm_connect.eventMask | GPM_HARD)); + sp->_mouse_gpm_connect.minMod = 0; + sp->_mouse_gpm_connect.maxMod = + (unsigned short) (~((1 << KG_SHIFT) | + (1 << KG_SHIFTL) | + (1 << KG_SHIFTR))); + /* + * Note: GPM hardcodes \E[?1001s and \E[?1000h during its open. + * The former is recognized by wscons (SunOS), and the latter by + * xterm. Those will not show up in ncurses' traces. + */ + code = my_Gpm_Open(&sp->_mouse_gpm_connect, 0); + result = (code >= 0); + + /* + * GPM can return a -2 if it is trying to do something with xterm. + * Ignore that, since it conflicts with our use of stdin. + */ + if (code == -2) { + my_Gpm_Close(); + } + } else { + result = FALSE; + } + sp->_mouse_active = result; + T(("GPM open %s", result ? "succeeded" : "failed")); + } else { + if (!enable && sp->_mouse_active) { + /* GPM: close connection to gpm server */ + my_Gpm_Close(); + sp->_mouse_active = FALSE; + T(("GPM closed")); + } + result = enable; + } +#ifdef HAVE_LIBDL + if (!result) { + unload_gpm_library(sp); + } +#endif + returnBool(result); +} +#endif /* USE_GPM_SUPPORT */ + +static void +initialize_mousetype(SCREEN *sp) +{ + T((T_CALLED("initialize_mousetype()"))); + + /* Try gpm first, because gpm may be configured to run in xterm */ +#if USE_GPM_SUPPORT + if (allow_gpm_mouse(sp)) { + if (!sp->_mouse_gpm_loaded) { +#ifdef HAVE_LIBDL + load_gpm_library(sp); +#else /* !HAVE_LIBDL */ + sp->_mouse_gpm_found = TRUE; + sp->_mouse_gpm_loaded = TRUE; +#endif + } + + /* + * The gpm_fd file-descriptor may be negative (xterm). So we have to + * maintain our notion of whether the mouse connection is active + * without testing the file-descriptor. + */ + if (sp->_mouse_gpm_found && enable_gpm_mouse(sp, TRUE)) { + sp->_mouse_type = M_GPM; + sp->_mouse_fd = *(my_gpm_fd); + T(("GPM mouse_fd %d", sp->_mouse_fd)); + returnVoid; + } + } +#endif /* USE_GPM_SUPPORT */ + + /* OS/2 VIO */ +#if USE_EMX_MOUSE + if (!sp->_emxmouse_thread + && strstr(SP_TERMTYPE term_names, "xterm") == 0 + && NonEmpty(key_mouse)) { + int handles[2]; + + if (pipe(handles) < 0) { + perror("mouse pipe error"); + returnVoid; + } else { + int rc; + + if (!sp->_emxmouse_buttons[0]) { + const char *s = getenv("MOUSE_BUTTONS_123"); + + sp->_emxmouse_buttons[0] = 1; + if (s && strlen(s) >= 3) { + sp->_emxmouse_buttons[1] = s[0] - '0'; + sp->_emxmouse_buttons[2] = s[1] - '0'; + sp->_emxmouse_buttons[3] = s[2] - '0'; + } else { + sp->_emxmouse_buttons[1] = 1; + sp->_emxmouse_buttons[2] = 3; + sp->_emxmouse_buttons[3] = 2; + } + } + sp->_emxmouse_wfd = handles[1]; + M_FD(sp) = handles[0]; + /* Needed? */ + setmode(handles[0], O_BINARY); + setmode(handles[1], O_BINARY); + /* Do not use CRT functions, we may single-threaded. */ + rc = DosCreateThread((unsigned long *) &sp->_emxmouse_thread, + mouse_server, (long) sp, 0, 8192); + if (rc) { + printf("mouse thread error %d=%#x", rc, rc); + } else { + sp->_mouse_type = M_XTERM; + } + returnVoid; + } + } +#endif /* USE_EMX_MOUSE */ + +#if USE_SYSMOUSE + { + static char dev_tty[] = "/dev/tty"; + struct mouse_info the_mouse; + char *the_device = 0; + + if (NC_ISATTY(sp->_ifd)) + the_device = ttyname(sp->_ifd); + if (the_device == 0) + the_device = dev_tty; + + sp->_mouse_fd = open(the_device, O_RDWR); + + if (sp->_mouse_fd >= 0) { + /* + * sysmouse does not have a usable user interface for obtaining + * mouse events. The logical way to proceed (reading data on a + * stream) only works if one opens the device as root. Even in + * that mode, careful examination shows we lose events + * occasionally. The interface provided for user programs is to + * establish a signal handler. really. + * + * Take over SIGUSR2 for this purpose since SIGUSR1 is more + * likely to be used by an application. getch() will have to + * handle the misleading EINTR's. + */ + signal(SIGUSR2, SIG_IGN); + the_mouse.operation = MOUSE_MODE; + the_mouse.u.mode.mode = 0; + the_mouse.u.mode.signal = SIGUSR2; + if (ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse) != -1) { + signal(SIGUSR2, handle_sysmouse); + the_mouse.operation = MOUSE_SHOW; + ioctl(sp->_mouse_fd, CONS_MOUSECTL, &the_mouse); + +#if defined(FBIO_MODEINFO) || defined(CONS_MODEINFO) /* FreeBSD > 2.x */ + { +#ifndef FBIO_GETMODE /* FreeBSD 3.x */ +#define FBIO_GETMODE CONS_GET +#define FBIO_MODEINFO CONS_MODEINFO +#endif /* FBIO_GETMODE */ + video_info_t the_video; + + if (ioctl(sp->_mouse_fd, + FBIO_GETMODE, + &the_video.vi_mode) != -1 + && ioctl(sp->_mouse_fd, + FBIO_MODEINFO, + &the_video) != -1) { + sp->_sysmouse_char_width = the_video.vi_cwidth; + sp->_sysmouse_char_height = the_video.vi_cheight; + } + } +#endif /* defined(FBIO_MODEINFO) || defined(CONS_MODEINFO) */ + + if (sp->_sysmouse_char_width <= 0) + sp->_sysmouse_char_width = 8; + if (sp->_sysmouse_char_height <= 0) + sp->_sysmouse_char_height = 16; + sp->_mouse_type = M_SYSMOUSE; + returnVoid; + } + } + } +#endif /* USE_SYSMOUSE */ + +#ifdef USE_TERM_DRIVER + CallDriver(sp, td_initmouse); +#else + /* 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) { + if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK) + init_xterm_mouse(sp); + } +#endif + + returnVoid; +} + +static bool +_nc_mouse_init(SCREEN *sp) +/* initialize the mouse */ +{ + bool result = FALSE; + + if (sp != 0) { + if (!sp->_mouse_initialized) { + int i; + + sp->_mouse_initialized = TRUE; + + TR(MY_TRACE, ("_nc_mouse_init() called")); + + sp->_mouse_eventp = FirstEV(sp); + for (i = 0; i < EV_MAX; i++) + Invalidate(sp->_mouse_events + i); + + initialize_mousetype(sp); + + T(("_nc_mouse_init() set mousetype to %d", sp->_mouse_type)); + } + result = sp->_mouse_initialized; + } + return result; +} + +/* + * Query to see if there is a pending mouse event. This is called from + * fifo_push() in lib_getch.c + */ +static bool +_nc_mouse_event(SCREEN *sp) +{ + MEVENT *eventp = sp->_mouse_eventp; + bool result = FALSE; + + (void) eventp; + + switch (sp->_mouse_type) { + case M_XTERM: + /* xterm: never have to query, mouse events are in the keyboard stream */ +#if USE_EMX_MOUSE + { + char kbuf[3]; + + int i, res = read(M_FD(sp), &kbuf, 3); /* Eat the prefix */ + if (res != 3) + printf("Got %d chars instead of 3 for prefix.\n", res); + for (i = 0; i < res; i++) { + if (kbuf[i] != key_mouse[i]) + printf("Got char %d instead of %d for prefix.\n", + (int) kbuf[i], (int) key_mouse[i]); + } + result = TRUE; + } +#endif /* USE_EMX_MOUSE */ + break; + +#if USE_GPM_SUPPORT + case M_GPM: + if (sp->_mouse_fd >= 0) { + /* query server for event, return TRUE if we find one */ + Gpm_Event ev; + + switch (my_Gpm_GetEvent(&ev)) { + case 0: + /* Connection closed, drop the mouse. */ + sp->_mouse_fd = -1; + break; + case 1: + /* there's only one mouse... */ + eventp->id = NORMAL_EVENT; + + eventp->bstate = 0; + switch (ev.type & 0x0f) { + case (GPM_DOWN): + if (ev.buttons & GPM_B_LEFT) + eventp->bstate |= BUTTON1_PRESSED; + if (ev.buttons & GPM_B_MIDDLE) + eventp->bstate |= BUTTON2_PRESSED; + if (ev.buttons & GPM_B_RIGHT) + eventp->bstate |= BUTTON3_PRESSED; + break; + case (GPM_UP): + if (ev.buttons & GPM_B_LEFT) + eventp->bstate |= BUTTON1_RELEASED; + if (ev.buttons & GPM_B_MIDDLE) + eventp->bstate |= BUTTON2_RELEASED; + if (ev.buttons & GPM_B_RIGHT) + eventp->bstate |= BUTTON3_RELEASED; + break; + default: + eventp->bstate |= REPORT_MOUSE_POSITION; + break; + } + + eventp->x = ev.x - 1; + eventp->y = ev.y - 1; + eventp->z = 0; + + /* bump the next-free pointer into the circular list */ + sp->_mouse_eventp = NEXT(eventp); + result = TRUE; + break; + } + } + break; +#endif + +#if USE_SYSMOUSE + case M_SYSMOUSE: + if (sp->_sysmouse_head < sp->_sysmouse_tail) { + *eventp = sp->_sysmouse_fifo[sp->_sysmouse_head]; + + /* + * Point the fifo-head to the next possible location. If there + * are none, reset the indices. This may be interrupted by the + * signal handler, doing essentially the same reset. + */ + sp->_sysmouse_head += 1; + if (sp->_sysmouse_head == sp->_sysmouse_tail) { + sp->_sysmouse_tail = 0; + sp->_sysmouse_head = 0; + } + + /* bump the next-free pointer into the circular list */ + sp->_mouse_eventp = eventp = NEXT(eventp); + result = TRUE; + } + break; +#endif /* USE_SYSMOUSE */ + +#ifdef 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]; + + /* + * Point the fifo-head to the next possible location. If there + * are none, reset the indices. + */ + sp->_drv_mouse_head += 1; + if (sp->_drv_mouse_head == sp->_drv_mouse_tail) { + sp->_drv_mouse_tail = 0; + sp->_drv_mouse_head = 0; + } + + /* bump the next-free pointer into the circular list */ + sp->_mouse_eventp = eventp = NEXT(eventp); + result = TRUE; + } + break; +#endif + + case M_NONE: + break; + } + + return result; /* true if we found an event */ +} + +#if USE_EMX_MOUSE +#define PRESS_POSITION(n) \ + do { \ + eventp->bstate = MASK_PRESS(n); \ + sp->_mouse_bstate |= MASK_PRESS(n); \ + if (button & 0x40) { \ + eventp->bstate = MASK_RELEASE(n); \ + sp->_mouse_bstate &= ~MASK_PRESS(n); \ + } \ + } while (0) +#else +#define PRESS_POSITION(n) \ + do { \ + eventp->bstate = (mmask_t) ((sp->_mouse_bstate & MASK_PRESS(n)) \ + ? REPORT_MOUSE_POSITION \ + : MASK_PRESS(n)); \ + sp->_mouse_bstate |= MASK_PRESS(n); \ + } while (0) +#endif + +static bool +handle_wheel(SCREEN *sp, MEVENT * eventp, int button, int wheel) +{ + bool result = TRUE; + + switch (button & 3) { + case 0: + if (wheel) { + eventp->bstate = MASK_PRESS(4); + /* Do not record in sp->_mouse_bstate; there will be no + * corresponding release event. + */ + } else { + PRESS_POSITION(1); + } + break; + case 1: + if (wheel) { +#if NCURSES_MOUSE_VERSION >= 2 + eventp->bstate = MASK_PRESS(5); + /* See comment above for button 4 */ +#else + /* Ignore this event as it is not a true press of the button */ + eventp->bstate = REPORT_MOUSE_POSITION; +#endif + } else { + PRESS_POSITION(2); + } + break; + case 2: + PRESS_POSITION(3); + break; + default: + result = FALSE; + break; + } + return result; +} + +static bool +decode_X10_bstate(SCREEN *sp, MEVENT * eventp, unsigned intro) +{ + bool result; + int button = 0; + int wheel = (intro & 96) == 96; + + eventp->bstate = 0; + + if (intro >= 96) { + if (intro >= 160) { + button = (int) (intro - 152); /* buttons 8-11 */ + } else { + button = (int) (intro - 92); /* buttons 4-7 */ + } + } else { + button = (intro & 3); + } + + if (button > MAX_BUTTONS) { + eventp->bstate = REPORT_MOUSE_POSITION; + } else if (!handle_wheel(sp, eventp, (int) intro, wheel)) { + + /* + * Release events aren't reported for individual buttons, just for + * the button set as a whole. However, because there are normally + * no mouse events under xterm that intervene between press and + * release, we can infer the button actually released by looking at + * the previous event. + */ + if (sp->_mouse_bstate & BUTTON_PRESSED) { + int b; + + eventp->bstate = BUTTON_RELEASED; + for (b = 1; b <= MAX_BUTTONS; ++b) { + if (!(sp->_mouse_bstate & MASK_PRESS(b))) + eventp->bstate &= ~MASK_RELEASE(b); + } + sp->_mouse_bstate = 0; + } else { + /* + * xterm will return a stream of release-events to let the + * application know where the mouse is going, if private mode + * 1002 or 1003 is enabled. + */ + eventp->bstate = REPORT_MOUSE_POSITION; + } + } + + if (intro & 4) { + eventp->bstate |= BUTTON_SHIFT; + } + if (intro & 8) { + eventp->bstate |= BUTTON_ALT; + } + if (intro & 16) { + eventp->bstate |= BUTTON_CTRL; + } + result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE; + return result; +} + +/* This code requires that your xterm entry contain the kmous capability and + * that it be set to the \E[M documented in the Xterm Control Sequences + * reference. This is how we arrange for mouse events to be reported via a + * KEY_MOUSE return value from wgetch(). After this value is received, + * _nc_mouse_inline() gets called and is immediately responsible for parsing + * the mouse status information following the prefix. + * + * The following quotes from the ctlseqs.ms document in the XTerm distribution, + * describing the mouse tracking feature: + * + * Parameters for all mouse tracking escape sequences generated by xterm encode + * numeric parameters in a single character as value+040. For example, ! is + * 1. + * + * On button press or release, xterm sends ESC [ M CbCxCy. The low two bits of + * Cb encode button information: 0=MB1 pressed, 1=MB2 pressed, 2=MB3 pressed, + * 3=release. The upper bits encode what modifiers were down when the button + * was pressed and are added together. 4=Shift, 8=Meta, 16=Control. Cx and Cy + * are the x and y coordinates of the mouse event. The upper left corner is + * (1,1). + * + * (End quote) By the time we get here, we've eaten the key prefix. FYI, the + * loop below is necessary because mouse click info isn't guaranteed to present + * as a single clist item. + * + * Wheel mice may return buttons 4 and 5 when the wheel is turned. We encode + * those as button presses. + */ +static bool +decode_xterm_X10(SCREEN *sp, MEVENT * eventp) +{ +#define MAX_KBUF 3 + unsigned char kbuf[MAX_KBUF + 1]; + size_t grabbed; + int res; + bool result; + +# if USE_PTHREADS_EINTR +# if USE_WEAK_SYMBOLS + if ((pthread_self) && (pthread_kill) && (pthread_equal)) +# endif + _nc_globals.read_thread = pthread_self(); +# endif + for (grabbed = 0; grabbed < MAX_KBUF; grabbed += (size_t) res) { + + /* For VIO mouse we add extra bit 64 to disambiguate button-up. */ + res = (int) read( +#if USE_EMX_MOUSE + (M_FD(sp) >= 0) ? M_FD(sp) : sp->_ifd, +#else + sp->_ifd, +#endif + kbuf + grabbed, (size_t) (MAX_KBUF - (int) grabbed)); + if (res == -1) + break; + } +#if USE_PTHREADS_EINTR + _nc_globals.read_thread = 0; +#endif + kbuf[MAX_KBUF] = '\0'; + + TR(TRACE_IEVENT, + ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf)); + + /* there's only one mouse... */ + eventp->id = NORMAL_EVENT; + + result = decode_X10_bstate(sp, eventp, kbuf[0]); + + eventp->x = (kbuf[1] - ' ') - 1; + eventp->y = (kbuf[2] - ' ') - 1; + + return result; +} + +#ifdef EXP_XTERM_1005 +/* + * This is identical to X10/X11 responses except that there are two UTF-8 + * characters storing the ordinates instead of two bytes. + */ +static bool +decode_xterm_1005(SCREEN *sp, MEVENT * eventp) +{ + char kbuf[80]; + size_t grabbed; + size_t limit = (sizeof(kbuf) - 1); + unsigned coords[2]; + bool result; + + coords[0] = 0; + coords[1] = 0; + +# if USE_PTHREADS_EINTR +# if USE_WEAK_SYMBOLS + if ((pthread_self) && (pthread_kill) && (pthread_equal)) +# endif + _nc_globals.read_thread = pthread_self(); +# endif + for (grabbed = 0; grabbed < limit;) { + int res; + + res = (int) read( +#if USE_EMX_MOUSE + (M_FD(sp) >= 0) ? M_FD(sp) : sp->_ifd, +#else + sp->_ifd, +#endif + (kbuf + grabbed), (size_t) 1); + if (res == -1) + break; + grabbed += (size_t) res; + if (grabbed > 1) { + size_t check = 1; + int n; + + for (n = 0; n < 2; ++n) { + int rc; + + if (check >= grabbed) + break; + rc = _nc_conv_to_utf32(&coords[n], kbuf + check, (unsigned) + (grabbed - check)); + if (!rc) + break; + check += (size_t) rc; + } + if (n >= 2) + break; + } + } +#if USE_PTHREADS_EINTR + _nc_globals.read_thread = 0; +#endif + + TR(TRACE_IEVENT, + ("_nc_mouse_inline sees the following xterm data: %s", + _nc_visbufn(kbuf, (int) grabbed))); + + /* there's only one mouse... */ + eventp->id = NORMAL_EVENT; + + result = decode_X10_bstate(sp, eventp, UChar(kbuf[0])); + + eventp->x = (int) (coords[0] - ' ') - 1; + eventp->y = (int) (coords[1] - ' ') - 1; + + return result; +} +#endif /* EXP_XTERM_1005 */ + +/* + * ECMA-48 section 5.4 + */ +#define isInter(c) ((c) >= 0x20 && (c) <= 0x2f) +#define isParam(c) ((c) >= 0x30 && (c) <= 0x3f) +#define isFinal(c) ((c) >= 0x40 && (c) <= 0x7e) + +#define MAX_PARAMS 9 + +typedef struct { + int nerror; /* nonzero if there are unexpected chars */ + int nparam; /* number of numeric parameters */ + int params[MAX_PARAMS]; + int final; /* the final-character */ +} SGR_DATA; + +static bool +read_SGR(SCREEN *sp, SGR_DATA * result) +{ + char kbuf[80]; /* bigger than any possible mouse response */ + int grabbed = 0; + int ch = 0; + int now = -1; + int marker = 1; + + memset(result, 0, sizeof(*result)); +# if USE_PTHREADS_EINTR +# if USE_WEAK_SYMBOLS + if ((pthread_self) && (pthread_kill) && (pthread_equal)) +# endif + _nc_globals.read_thread = pthread_self(); +# endif + + do { + int res; + + res = (int) read( +#if USE_EMX_MOUSE + (M_FD(sp) >= 0) ? M_FD(sp) : sp->_ifd, +#else + sp->_ifd, +#endif + (kbuf + grabbed), (size_t) 1); + if (res == -1) + break; + if ((grabbed + MAX_KBUF) >= (int) sizeof(kbuf)) { + result->nerror++; + break; + } + ch = UChar(kbuf[grabbed]); + kbuf[grabbed + 1] = 0; + switch (ch) { + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + if (marker) { + ++now; + result->nparam = (now + 1); + } + marker = 0; + result->params[now] = (result->params[now] * 10) + (ch - '0'); + break; + case ';': + if (marker) { + ++now; + result->nparam = (now + 1); + } + marker = 1; + break; + default: + if (ch < 32 || ch > 126) { + /* + * Technically other characters could be interspersed in the + * response. Ignore those for now. + */ + result->nerror++; + continue; + } else if (isFinal(ch)) { + if (marker) { + result->nparam++; + } + result->final = ch; + } else { + result->nerror++; + } + break; + } + ++grabbed; + } while (!isFinal(ch)); +#if USE_PTHREADS_EINTR + _nc_globals.read_thread = 0; +#endif + + kbuf[++grabbed] = 0; + TR(TRACE_IEVENT, + ("_nc_mouse_inline sees the following xterm data: '%s'", kbuf)); + return (grabbed > 0) && (result->nerror == 0); +} + +static bool +decode_xterm_SGR1006(SCREEN *sp, MEVENT * eventp) +{ + SGR_DATA data; + bool result = FALSE; + if (read_SGR(sp, &data)) { + int b = data.params[0]; + int b3 = 1 + (b & 3); + int wheel = ((b & 64) == 64); + + if (b >= 132) { + b3 = MAX_BUTTONS + 1; + } else if (b >= 128) { + b3 = (b - 120); /* buttons 8-11 */ + } else if (b >= 64) { + b3 = (b - 60); /* buttons 6-7 */ + } + + eventp->id = NORMAL_EVENT; + if (data.final == 'M') { + (void) handle_wheel(sp, eventp, b, wheel); + } else if (b3 > MAX_BUTTONS) { + eventp->bstate = REPORT_MOUSE_POSITION; + } else { + mmask_t pressed = (mmask_t) NCURSES_MOUSE_MASK(b3, NCURSES_BUTTON_PRESSED); + mmask_t release = (mmask_t) NCURSES_MOUSE_MASK(b3, NCURSES_BUTTON_RELEASED); + if (sp->_mouse_bstate & pressed) { + eventp->bstate = release; + sp->_mouse_bstate &= ~pressed; + } else { + eventp->bstate = REPORT_MOUSE_POSITION; + } + } + if (b & 4) { + eventp->bstate |= BUTTON_SHIFT; + } + if (b & 8) { + eventp->bstate |= BUTTON_ALT; + } + if (b & 16) { + eventp->bstate |= BUTTON_CTRL; + } + result = (eventp->bstate & REPORT_MOUSE_POSITION) ? TRUE : FALSE; + eventp->x = (data.params[1] ? (data.params[1] - 1) : 0); + eventp->y = (data.params[2] ? (data.params[2] - 1) : 0); + } + return result; +} + +static bool +_nc_mouse_inline(SCREEN *sp) +/* mouse report received in the keyboard stream -- parse its info */ +{ + bool result = FALSE; + MEVENT *eventp = sp->_mouse_eventp; + + TR(MY_TRACE, ("_nc_mouse_inline() called")); + + if (sp->_mouse_type == M_XTERM) { + switch (sp->_mouse_format) { + case MF_X10: + result = decode_xterm_X10(sp, eventp); + break; + case MF_SGR1006: + result = decode_xterm_SGR1006(sp, eventp); + break; +#ifdef EXP_XTERM_1005 + case MF_XTERM_1005: + result = decode_xterm_1005(sp, eventp); + break; +#endif + } + + TR(MY_TRACE, + ("_nc_mouse_inline: primitive mouse-event %s has slot %ld", + _nc_tracemouse(sp, eventp), + (long) IndexEV(sp, eventp))); + + /* bump the next-free pointer into the circular list */ + sp->_mouse_eventp = NEXT(eventp); + + if (!result) { + /* If this event is from a wheel-mouse, treat it like position + * reports and avoid waiting for the release-events which will + * never come. + */ + if (eventp->bstate & BUTTON_PRESSED) { + int b; + + for (b = 4; b <= MAX_BUTTONS; ++b) { + if ((eventp->bstate & MASK_PRESS(b))) { + result = TRUE; + break; + } + } + } + } + } + + return (result); +} + +static void +mouse_activate(SCREEN *sp, int on) +{ + if (!on && !sp->_mouse_initialized) + return; + + if (!_nc_mouse_init(sp)) + return; + + if (on) { + sp->_mouse_bstate = 0; + switch (sp->_mouse_type) { + case M_XTERM: +#if NCURSES_EXT_FUNCS + NCURSES_SP_NAME(keyok) (NCURSES_SP_ARGx KEY_MOUSE, on); +#endif + TPUTS_TRACE("xterm mouse initialization"); + enable_xterm_mouse(sp, 1); + break; +#if USE_GPM_SUPPORT + case M_GPM: + if (enable_gpm_mouse(sp, TRUE)) { + sp->_mouse_fd = *(my_gpm_fd); + T(("GPM mouse_fd %d", sp->_mouse_fd)); + } + break; +#endif +#if USE_SYSMOUSE + case M_SYSMOUSE: + signal(SIGUSR2, handle_sysmouse); + sp->_mouse_active = TRUE; + break; +#endif +#ifdef USE_TERM_DRIVER + case M_TERM_DRIVER: + sp->_mouse_active = TRUE; + break; +#endif + case M_NONE: + return; + } + /* Make runtime binding to cut down on object size of applications that + * do not use the mouse (e.g., 'clear'). + */ + sp->_mouse_event = _nc_mouse_event; + sp->_mouse_inline = _nc_mouse_inline; + sp->_mouse_parse = _nc_mouse_parse; + sp->_mouse_resume = _nc_mouse_resume; + sp->_mouse_wrap = _nc_mouse_wrap; + } else { + + switch (sp->_mouse_type) { + case M_XTERM: + TPUTS_TRACE("xterm mouse deinitialization"); + enable_xterm_mouse(sp, 0); + break; +#if USE_GPM_SUPPORT + case M_GPM: + enable_gpm_mouse(sp, FALSE); + break; +#endif +#if USE_SYSMOUSE + case M_SYSMOUSE: + signal(SIGUSR2, SIG_IGN); + sp->_mouse_active = FALSE; + break; +#endif +#ifdef USE_TERM_DRIVER + case M_TERM_DRIVER: + sp->_mouse_active = FALSE; + break; +#endif + case M_NONE: + return; + } + } + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); +} + +/************************************************************************** + * + * Device-independent code + * + **************************************************************************/ + +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 *next, *ep; + MEVENT *first_valid = NULL; + MEVENT *first_invalid = NULL; + int n; + int b; + bool merge; + bool endLoop; + + TR(MY_TRACE, ("_nc_mouse_parse(%d) called", runcount)); + + /* + * When we enter this routine, the event list next-free pointer + * points just past a run of mouse events that we know were separated + * in time by less than the critical click interval. The job of this + * routine is to collapse this run into a single higher-level event + * or gesture. + * + * We accomplish this in two passes. The first pass merges press/release + * pairs into click events. The second merges runs of click events into + * double or triple-click events. + * + * It's possible that the run may not resolve to a single event (for + * example, if the user quadruple-clicks). If so, leading events + * in the run are ignored if user does not call getmouse in a loop (getting + * them from newest to older). + * + * Note that this routine is independent of the format of the specific + * format of the pointing-device's reports. We can use it to parse + * gestures on anything that reports press/release events on a per- + * button basis, as long as the device-dependent mouse code puts stuff + * on the queue in MEVENT format. + */ + + /* + * Reset all events that were not set, in case the user sometimes calls + * getmouse only once and other times until there are no more events in + * queue. + * + * This also allows reaching the beginning of the run. + */ + ep = eventp; + for (n = runcount; n < EV_MAX; n++) { + Invalidate(ep); + ep = NEXT(ep); + } + +#ifdef TRACE + if (USE_TRACEF(TRACE_IEVENT)) { + _trace_slot(sp, "before mouse press/release merge:"); + _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d", + RunParams(sp, eventp, ep), + runcount); + _nc_unlock_global(tracef); + } +#endif /* TRACE */ + + /* first pass; merge press/release pairs */ + endLoop = FALSE; + while (!endLoop) { + next = NEXT(ep); + if (next == eventp) { + /* Will end the loop, but compact before */ + endLoop = TRUE; + } else { + +#define MASK_CHANGED(x) (!(ep->bstate & MASK_PRESS(x)) \ + == !(next->bstate & MASK_RELEASE(x))) + + if (ValidEvent(ep) && ValidEvent(next) + && ep->x == next->x && ep->y == next->y + && (ep->bstate & BUTTON_PRESSED) + && (!(next->bstate & BUTTON_PRESSED))) { + bool changed = TRUE; + + for (b = 1; b <= MAX_BUTTONS; ++b) { + if (!MASK_CHANGED(b)) { + changed = FALSE; + break; + } + } + + if (changed) { + merge = FALSE; + for (b = 1; b <= MAX_BUTTONS; ++b) { + if ((sp->_mouse_mask & MASK_CLICK(b)) + && (ep->bstate & MASK_PRESS(b))) { + next->bstate &= ~MASK_RELEASE(b); + next->bstate |= MASK_CLICK(b); + merge = TRUE; + } + } + if (merge) { + Invalidate(ep); + } + } + } + } + + /* Compact valid events */ + if (!ValidEvent(ep)) { + if ((first_valid != NULL) && (first_invalid == NULL)) { + first_invalid = ep; + } + } else { + if (first_valid == NULL) { + first_valid = ep; + } else if (first_invalid != NULL) { + *first_invalid = *ep; + Invalidate(ep); + first_invalid = NEXT(first_invalid); + } + } + + ep = next; + } + + if (first_invalid != NULL) { + eventp = first_invalid; + } +#ifdef TRACE + if (USE_TRACEF(TRACE_IEVENT)) { + _trace_slot(sp, "before mouse click merge:"); + if (first_valid == NULL) { + _tracef("_nc_mouse_parse: no valid event"); + } else { + _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d", + RunParams(sp, eventp, first_valid), + runcount); + _nc_unlock_global(tracef); + } + } +#endif /* TRACE */ + + /* + * Second pass; merge click runs. We merge click events forward in the + * queue. For example, double click can be changed to triple click. + * + * NOTE: There is a problem with this design! If the application + * allows enough click events to pile up in the circular queue so + * they wrap around, it will cheerfully merge the newest forward + * into the oldest, creating a bogus doubleclick and confusing + * the queue-traversal logic rather badly. Generally this won't + * happen, because calling getmouse() marks old events invalid and + * ineligible for merges. The true solution to this problem would + * be to timestamp each MEVENT and perform the obvious sanity check, + * but the timer element would have to have sub-second resolution, + * which would get us into portability trouble. + */ + first_invalid = NULL; + endLoop = (first_valid == NULL); + ep = first_valid; + while (!endLoop) { + next = NEXT(ep); + + if (next == eventp) { + /* Will end the loop, but check event type and compact before */ + endLoop = TRUE; + } else if (!ValidEvent(next)) { + continue; + } else { + /* merge click events forward */ + if ((ep->bstate & BUTTON_CLICKED) + && (next->bstate & BUTTON_CLICKED)) { + merge = FALSE; + for (b = 1; b <= MAX_BUTTONS; ++b) { + if ((sp->_mouse_mask & MASK_DOUBLE_CLICK(b)) + && (ep->bstate & MASK_CLICK(b)) + && (next->bstate & MASK_CLICK(b))) { + next->bstate &= ~MASK_CLICK(b); + next->bstate |= MASK_DOUBLE_CLICK(b); + merge = TRUE; + } + } + if (merge) { + Invalidate(ep); + } + } + + /* merge double-click events forward */ + if ((ep->bstate & BUTTON_DOUBLE_CLICKED) + && (next->bstate & BUTTON_CLICKED)) { + merge = FALSE; + for (b = 1; b <= MAX_BUTTONS; ++b) { + if ((sp->_mouse_mask & MASK_TRIPLE_CLICK(b)) + && (ep->bstate & MASK_DOUBLE_CLICK(b)) + && (next->bstate & MASK_CLICK(b))) { + next->bstate &= ~MASK_CLICK(b); + next->bstate |= MASK_TRIPLE_CLICK(b); + merge = TRUE; + } + } + if (merge) { + Invalidate(ep); + } + } + } + + /* Discard event if it does not match event mask */ + if (!(ep->bstate & sp->_mouse_mask2)) { + Invalidate(ep); + } + + /* Compact valid events */ + if (!ValidEvent(ep)) { + if (ep == first_valid) { + first_valid = next; + } else if (first_invalid == NULL) { + first_invalid = ep; + } + } else if (first_invalid != NULL) { + *first_invalid = *ep; + Invalidate(ep); + first_invalid = NEXT(first_invalid); + } + + ep = next; + } + + if (first_invalid == NULL) { + first_invalid = eventp; + } + sp->_mouse_eventp = first_invalid; + +#ifdef TRACE + if (first_valid != NULL) { + if (USE_TRACEF(TRACE_IEVENT)) { + _trace_slot(sp, "after mouse event queue compaction:"); + _tracef("_nc_mouse_parse: run starts at %ld, ends at %ld, count %d", + RunParams(sp, first_invalid, first_valid), + runcount); + _nc_unlock_global(tracef); + } + for (ep = first_valid; ep != first_invalid; ep = NEXT(ep)) { + if (ValidEvent(ep)) + TR(MY_TRACE, + ("_nc_mouse_parse: returning composite mouse event %s at slot %ld", + _nc_tracemouse(sp, ep), + (long) IndexEV(sp, ep))); + } + } +#endif /* TRACE */ + + /* after all this, do we have a valid event? */ + return ValidEvent(PREV(first_invalid)); +} + +static void +_nc_mouse_wrap(SCREEN *sp) +/* release mouse -- called by endwin() before shellout/exit */ +{ + TR(MY_TRACE, ("_nc_mouse_wrap() called")); + + switch (sp->_mouse_type) { + case M_XTERM: + if (sp->_mouse_mask) + mouse_activate(sp, FALSE); + break; +#if USE_GPM_SUPPORT + /* GPM: pass all mouse events to next client */ + case M_GPM: + if (sp->_mouse_mask) + mouse_activate(sp, FALSE); + break; +#endif +#if USE_SYSMOUSE + case M_SYSMOUSE: + mouse_activate(sp, FALSE); + break; +#endif +#ifdef USE_TERM_DRIVER + case M_TERM_DRIVER: + mouse_activate(sp, FALSE); + break; +#endif + case M_NONE: + break; + } +} + +static void +_nc_mouse_resume(SCREEN *sp) +/* re-connect to mouse -- called by doupdate() after shellout */ +{ + TR(MY_TRACE, ("_nc_mouse_resume() called")); + + switch (sp->_mouse_type) { + case M_XTERM: + /* xterm: re-enable reporting */ + if (sp->_mouse_mask) + mouse_activate(sp, TRUE); + break; + +#if USE_GPM_SUPPORT + case M_GPM: + /* GPM: reclaim our event set */ + if (sp->_mouse_mask) + mouse_activate(sp, TRUE); + break; +#endif + +#if USE_SYSMOUSE + case M_SYSMOUSE: + mouse_activate(sp, TRUE); + break; +#endif + +#ifdef USE_TERM_DRIVER + case M_TERM_DRIVER: + mouse_activate(sp, TRUE); + break; +#endif + + case M_NONE: + break; + } +} + +/************************************************************************** + * + * Mouse interface entry points for the API + * + **************************************************************************/ + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(getmouse) (NCURSES_SP_DCLx MEVENT * aevent) +{ + int result = ERR; + MEVENT *eventp; + + T((T_CALLED("getmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent)); + + if ((aevent != 0) && + (SP_PARM != 0) && + (SP_PARM->_mouse_type != M_NONE) && + (eventp = SP_PARM->_mouse_eventp) != 0) { + /* compute the current-event pointer */ + MEVENT *prev = PREV(eventp); + + /* + * 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); + } + if (ValidEvent(prev)) { + /* copy the event we find there */ + *aevent = *prev; + + TR(TRACE_IEVENT, ("getmouse: returning event %s from slot %ld", + _nc_tracemouse(SP_PARM, prev), + (long) IndexEV(SP_PARM, prev))); + + Invalidate(prev); /* so the queue slot becomes free */ + SP_PARM->_mouse_eventp = prev; + result = OK; + } else { + /* Reset the provided event */ + aevent->bstate = 0; + Invalidate(aevent); + aevent->x = 0; + aevent->y = 0; + aevent->z = 0; + } + } + returnCode(result); +} + +#if NCURSES_SP_FUNCS +/* grab a copy of the current mouse event */ +NCURSES_EXPORT(int) +getmouse(MEVENT * aevent) +{ + return NCURSES_SP_NAME(getmouse) (CURRENT_SCREEN, aevent); +} +#endif + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(ungetmouse) (NCURSES_SP_DCLx MEVENT * aevent) +{ + int result = ERR; + MEVENT *eventp; + + T((T_CALLED("ungetmouse(%p,%p)"), (void *) SP_PARM, (void *) aevent)); + + if (aevent != 0 && + SP_PARM != 0 && + (eventp = SP_PARM->_mouse_eventp) != 0) { + + /* 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); + + /* push back the notification event on the keyboard queue */ + result = NCURSES_SP_NAME(ungetch) (NCURSES_SP_ARGx KEY_MOUSE); + } + returnCode(result); +} + +#if NCURSES_SP_FUNCS +/* enqueue a synthesized mouse event to be seen by the next wgetch() */ +NCURSES_EXPORT(int) +ungetmouse(MEVENT * aevent) +{ + return NCURSES_SP_NAME(ungetmouse) (CURRENT_SCREEN, aevent); +} +#endif + +NCURSES_EXPORT(mmask_t) +NCURSES_SP_NAME(mousemask) (NCURSES_SP_DCLx mmask_t newmask, mmask_t * oldmask) +/* set the mouse event mask */ +{ + mmask_t result = 0; + + T((T_CALLED("mousemask(%p,%#lx,%p)"), + (void *) SP_PARM, + (unsigned long) newmask, + (void *) oldmask)); + + if (SP_PARM != 0) { + if (oldmask) + *oldmask = SP_PARM->_mouse_mask; + + if (newmask || SP_PARM->_mouse_initialized) { + _nc_mouse_init(SP_PARM); + + if (SP_PARM->_mouse_type != M_NONE) { + int b; + + result = newmask & + (REPORT_MOUSE_POSITION + | BUTTON_ALT + | BUTTON_CTRL + | BUTTON_SHIFT + | BUTTON_PRESSED + | BUTTON_RELEASED + | BUTTON_CLICKED + | BUTTON_DOUBLE_CLICKED + | BUTTON_TRIPLE_CLICKED); + + mouse_activate(SP_PARM, (bool) (result != 0)); + + SP_PARM->_mouse_mask = result; + SP_PARM->_mouse_mask2 = result; + + /* + * Make a mask corresponding to the states we will need to + * retain (temporarily) while building up the state that the + * user asked for. + */ + for (b = 1; b <= MAX_BUTTONS; ++b) { + if (SP_PARM->_mouse_mask2 & MASK_TRIPLE_CLICK(b)) + SP_PARM->_mouse_mask2 |= MASK_DOUBLE_CLICK(b); + if (SP_PARM->_mouse_mask2 & MASK_DOUBLE_CLICK(b)) + SP_PARM->_mouse_mask2 |= MASK_CLICK(b); + if (SP_PARM->_mouse_mask2 & MASK_CLICK(b)) + SP_PARM->_mouse_mask2 |= (MASK_PRESS(b) | + MASK_RELEASE(b)); + } + } + } + } + returnMMask(result); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(mmask_t) +mousemask(mmask_t newmask, mmask_t * oldmask) +{ + return NCURSES_SP_NAME(mousemask) (CURRENT_SCREEN, newmask, oldmask); +} +#endif + +NCURSES_EXPORT(bool) +wenclose(const WINDOW *win, int y, int x) +/* check to see if given window encloses given screen location */ +{ + bool result = FALSE; + + T((T_CALLED("wenclose(%p,%d,%d)"), (const void *) win, y, x)); + + if (win != 0) { + y -= win->_yoffset; + result = ((win->_begy <= y && + win->_begx <= x && + (win->_begx + win->_maxx) >= x && + (win->_begy + win->_maxy) >= y) ? TRUE : FALSE); + } + returnBool(result); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(mouseinterval) (NCURSES_SP_DCLx int maxclick) +/* set the maximum mouse interval within which to recognize a click */ +{ + int oldval; + + T((T_CALLED("mouseinterval(%p,%d)"), (void *) SP_PARM, maxclick)); + + if (SP_PARM != 0) { + oldval = SP_PARM->_maxclick; + if (maxclick >= 0) + SP_PARM->_maxclick = maxclick; + } else { + oldval = DEFAULT_MAXCLICK; + } + + returnCode(oldval); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +mouseinterval(int maxclick) +{ + return NCURSES_SP_NAME(mouseinterval) (CURRENT_SCREEN, maxclick); +} +#endif + +/* This may be used by other routines to ask for the existence of mouse + support */ +NCURSES_EXPORT(bool) +_nc_has_mouse(SCREEN *sp) +{ + return (((0 == sp) || (sp->_mouse_type == M_NONE)) ? FALSE : TRUE); +} + +NCURSES_EXPORT(bool) +NCURSES_SP_NAME(has_mouse) (NCURSES_SP_DCL0) +{ + return _nc_has_mouse(SP_PARM); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(bool) +has_mouse(void) +{ + return _nc_has_mouse(CURRENT_SCREEN); +} +#endif + +NCURSES_EXPORT(bool) +wmouse_trafo(const WINDOW *win, int *pY, int *pX, bool to_screen) +{ + bool result = FALSE; + + T((T_CALLED("wmouse_trafo(%p,%p,%p,%d)"), + (const void *) win, + (void *) pY, + (void *) pX, + to_screen)); + + if (win && pY && pX) { + int y = *pY; + int x = *pX; + + if (to_screen) { + y += win->_begy + win->_yoffset; + x += win->_begx; + if (wenclose(win, y, x)) + result = TRUE; + } else { + if (wenclose(win, y, x)) { + y -= (win->_begy + win->_yoffset); + x -= win->_begx; + result = TRUE; + } + } + if (result) { + *pX = x; + *pY = y; + } + } + returnBool(result); +} diff --git a/deps/ncurses-5.9/ncurses/base/lib_move.c b/deps/ncurses-6.3/ncurses/base/lib_move.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_move.c rename to deps/ncurses-6.3/ncurses/base/lib_move.c index 488b195..d9ba8c0 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_move.c +++ b/deps/ncurses-6.3/ncurses/base/lib_move.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2004,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2004,2009 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 * @@ -41,7 +42,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_move.c,v 1.13 2009/10/24 22:34:07 tom Exp $") +MODULE_ID("$Id: lib_move.c,v 1.14 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wmove(WINDOW *win, int y, int x) diff --git a/deps/ncurses-5.9/ncurses/base/lib_mvwin.c b/deps/ncurses-6.3/ncurses/base/lib_mvwin.c similarity index 95% rename from deps/ncurses-5.9/ncurses/base/lib_mvwin.c rename to deps/ncurses-6.3/ncurses/base/lib_mvwin.c index 18d31c1..58bdb19 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_mvwin.c +++ b/deps/ncurses-6.3/ncurses/base/lib_mvwin.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_mvwin.c,v 1.18 2010/12/19 01:22:58 tom Exp $") +MODULE_ID("$Id: lib_mvwin.c,v 1.19 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) mvwin(WINDOW *win, int by, int bx) diff --git a/deps/ncurses-5.9/ncurses/base/lib_newterm.c b/deps/ncurses-6.3/ncurses/base/lib_newterm.c similarity index 88% rename from deps/ncurses-5.9/ncurses/base/lib_newterm.c rename to deps/ncurses-6.3/ncurses/base/lib_newterm.c index e12208b..bba97ba 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_newterm.c +++ b/deps/ncurses-6.3/ncurses/base/lib_newterm.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -42,17 +43,13 @@ #include <curses.priv.h> -#if SVR4_TERMIO && !defined(_POSIX_SOURCE) -#define _POSIX_SOURCE -#endif - #ifndef CUR #define CUR SP_TERMTYPE #endif #include <tic.h> -MODULE_ID("$Id: lib_newterm.c,v 1.86 2010/05/20 23:25:18 tom Exp $") +MODULE_ID("$Id: lib_newterm.c,v 1.103 2020/09/05 21:34:04 tom Exp $") #ifdef USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels @@ -80,6 +77,7 @@ _nc_initscr(NCURSES_SP_DCL0) /* for extended XPG4 conformance requires cbreak() at this point */ /* (SVr4 curses does this anyway) */ + T((T_CALLED("_nc_initscr(%p) ->term %p"), (void *) SP_PARM, (void *) term)); if (NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG) == OK) { TTY buf; @@ -90,6 +88,12 @@ _nc_initscr(NCURSES_SP_DCL0) buf.c_oflag &= (unsigned) ~(ONLCR); #elif HAVE_SGTTY_H buf.sg_flags &= ~(ECHO | CRMOD); +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn = CONMODE_IN_DEFAULT; + buf.dwFlagOut = CONMODE_OUT_DEFAULT | VT_FLAG_OUT; + if (WINCONSOLE.isTermInfoConsole) { + buf.dwFlagIn |= VT_FLAG_IN; + } #else memset(&buf, 0, sizeof(buf)); #endif @@ -97,7 +101,7 @@ _nc_initscr(NCURSES_SP_DCL0) if (result == OK) term->Nttyb = buf; } - return result; + returnCode(result); } /* @@ -166,26 +170,22 @@ nofilter(void) NCURSES_EXPORT(SCREEN *) NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx - NCURSES_CONST char *name, + const char *name, FILE *ofp, FILE *ifp) { - int value; int errret; SCREEN *result = 0; SCREEN *current; TERMINAL *its_term; FILE *_ofp = ofp ? ofp : stdout; FILE *_ifp = ifp ? ifp : stdin; - int cols; - int slk_format; - int filter_mode; TERMINAL *new_term = 0; START_TRACE(); T((T_CALLED("newterm(%p, \"%s\", %p,%p)"), (void *) SP_PARM, - name, + (name ? name : ""), (void *) ofp, (void *) ifp)); @@ -201,14 +201,18 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx current = CURRENT_SCREEN; its_term = (current ? current->_term : 0); +#if defined(EXP_WIN32_DRIVER) + _setmode(fileno(_ifp), _O_BINARY); + _setmode(fileno(_ofp), _O_BINARY); +#endif + INIT_TERM_DRIVER(); /* this loads the capability entry, then sets LINES and COLS */ if ( -#if NCURSES_SP_FUNCS - SP_PARM->_prescreen && -#endif TINFO_SETUP_TERM(&new_term, name, fileno(_ofp), &errret, FALSE) != ERR) { + int slk_format; + int filter_mode; _nc_set_screen(0); #ifdef USE_TERM_DRIVER @@ -239,6 +243,9 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx _nc_set_screen(current); result = 0; } else { + int value; + int cols; + #ifdef USE_TERM_DRIVER TERMINAL_CONTROL_BLOCK *TCB; #elif !NCURSES_SP_FUNCS @@ -272,7 +279,11 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx /* allow user to set maximum escape delay from the environment */ if ((value = _nc_getenv_num("ESCDELAY")) >= 0) { +#if NCURSES_EXT_FUNCS NCURSES_SP_NAME(set_escdelay) (NCURSES_SP_ARGx value); +#else + ESCDELAY = value; +#endif } /* if the terminal type has real soft labels, set those up */ @@ -283,11 +294,12 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx NCURSES_SP_NAME(typeahead) (NCURSES_SP_ARGx fileno(_ifp)); #ifdef TERMIOS SP_PARM->_use_meta = ((new_term->Ottyb.c_cflag & CSIZE) == CS8 && - !(new_term->Ottyb.c_iflag & ISTRIP)); + !(new_term->Ottyb.c_iflag & ISTRIP)) || + USE_KLIBC_KBD; #else SP_PARM->_use_meta = FALSE; #endif - SP_PARM->_endwin = FALSE; + SP_PARM->_endwin = ewInitial; #ifndef USE_TERM_DRIVER /* * Check whether we can optimize scrolling under dumb terminals in @@ -309,8 +321,8 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx /* compute movement costs so we can do better move optimization */ #ifdef USE_TERM_DRIVER - TCBOf(SP_PARM)->drv->scinit(SP_PARM); -#else + TCBOf(SP_PARM)->drv->td_scinit(SP_PARM); +#else /* ! USE_TERM_DRIVER */ /* * Check for mismatched graphic-rendition capabilities. Most SVr4 * terminfo trees contain entries that have rmul or rmso equated to @@ -323,13 +335,16 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx #define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || 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 + SP_PARM->_use_ritm = SGR0_TEST(exit_italics_mode); +#endif /* compute movement costs so we can do better move optimization */ _nc_mvcur_init(); /* initialize terminal to a sane state */ _nc_screen_init(); -#endif +#endif /* USE_TERM_DRIVER */ /* Initialize the terminal line settings. */ _nc_initscr(NCURSES_SP_ARG); @@ -344,8 +359,14 @@ NCURSES_SP_NAME(newterm) (NCURSES_SP_DCLx #if NCURSES_SP_FUNCS NCURSES_EXPORT(SCREEN *) -newterm(NCURSES_CONST char *name, FILE *ofp, FILE *ifp) +newterm(const char *name, FILE *ofp, FILE *ifp) { - return NCURSES_SP_NAME(newterm) (CURRENT_SCREEN_PRE, name, ofp, ifp); + SCREEN *rc; + _nc_lock_global(prescreen); + START_TRACE(); + rc = NCURSES_SP_NAME(newterm) (CURRENT_SCREEN_PRE, name, ofp, ifp); + _nc_forget_prescr(); + _nc_unlock_global(prescreen); + return rc; } #endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_newwin.c b/deps/ncurses-6.3/ncurses/base/lib_newwin.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_newwin.c rename to deps/ncurses-6.3/ncurses/base/lib_newwin.c index 72d8af8..580d033 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_newwin.c +++ b/deps/ncurses-6.3/ncurses/base/lib_newwin.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -43,7 +44,7 @@ #include <curses.priv.h> #include <stddef.h> -MODULE_ID("$Id: lib_newwin.c,v 1.69 2011/03/07 21:58:17 tom Exp $") +MODULE_ID("$Id: lib_newwin.c,v 1.75 2020/02/02 23:34:34 tom Exp $") #define window_is(name) ((sp)->_##name == win) @@ -91,8 +92,6 @@ remove_window_from_screen(WINDOW *win) NCURSES_EXPORT(int) _nc_freewin(WINDOW *win) { - WINDOWLIST *p, *q; - int i; int result = ERR; #ifdef USE_SP_WINDOWLIST SCREEN *sp = _nc_screen_of(win); /* pretend this is parameter */ @@ -101,17 +100,23 @@ _nc_freewin(WINDOW *win) T((T_CALLED("_nc_freewin(%p)"), (void *) win)); if (win != 0) { + if (_nc_nonsp_try_global(curses) == 0) { + WINDOWLIST *p, *q; + q = 0; - for (each_window(SP_PARM, p)) { + for (each_window(sp, p)) { + if (&(p->win) == win) { remove_window_from_screen(win); if (q == 0) - WindowList(SP_PARM) = p->next; + WindowList(sp) = p->next; else q->next = p->next; if (!(win->_flags & _SUBWIN)) { + int i; + for (i = 0; i <= win->_maxy; i++) FreeIfNeeded(win->_line[i].text); } @@ -141,7 +146,11 @@ NCURSES_SP_NAME(newwin) (NCURSES_SP_DCLx T((T_CALLED("newwin(%p, %d,%d,%d,%d)"), (void *) SP_PARM, num_lines, num_columns, begy, begx)); - if (begy < 0 || begx < 0 || num_lines < 0 || num_columns < 0) + if (begy < 0 + || begx < 0 + || num_lines < 0 + || num_columns < 0 + || SP_PARM == 0) returnWin(0); if (num_lines == 0) @@ -235,10 +244,15 @@ 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; + T((T_CALLED("subwin(%p, %d, %d, %d, %d)"), (void *) w, l, c, y, x)); - T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx)); + if (w != 0) { + T(("parent has begy = %ld, begx = %ld", (long) w->_begy, (long) w->_begx)); - returnWin(derwin(w, l, c, y - w->_begy, x - w->_begx)); + result = derwin(w, l, c, y - w->_begy, x - w->_begx); + } + returnWin(result); } static bool @@ -375,18 +389,18 @@ NCURSES_SP_NAME(_nc_makenew) (NCURSES_SP_DCLx NCURSES_EXPORT(WINDOW *) _nc_curscr_of(SCREEN *sp) { - return sp == 0 ? 0 : CurScreen(sp); + return (sp == 0) ? NULL : CurScreen(sp); } NCURSES_EXPORT(WINDOW *) _nc_newscr_of(SCREEN *sp) { - return sp == 0 ? 0 : NewScreen(sp); + return (sp == 0) ? NULL : NewScreen(sp); } NCURSES_EXPORT(WINDOW *) _nc_stdscr_of(SCREEN *sp) { - return sp == 0 ? 0 : StdScreen(sp); + return (sp == 0) ? NULL : StdScreen(sp); } #endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_nl.c b/deps/ncurses-6.3/ncurses/base/lib_nl.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/lib_nl.c rename to deps/ncurses-6.3/ncurses/base/lib_nl.c index 3425487..df07349 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_nl.c +++ b/deps/ncurses-6.3/ncurses/base/lib_nl.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -44,7 +45,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_nl.c,v 1.12 2009/10/24 22:05:55 tom Exp $") +MODULE_ID("$Id: lib_nl.c,v 1.13 2020/02/02 23:34:34 tom Exp $") #ifdef __EMX__ #include <io.h> diff --git a/deps/ncurses-5.9/ncurses/base/lib_overlay.c b/deps/ncurses-6.3/ncurses/base/lib_overlay.c similarity index 87% rename from deps/ncurses-5.9/ncurses/base/lib_overlay.c rename to deps/ncurses-6.3/ncurses/base/lib_overlay.c index bfb817b..6d451d0 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_overlay.c +++ b/deps/ncurses-6.3/ncurses/base/lib_overlay.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2013,2016 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 * @@ -40,21 +41,19 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_overlay.c,v 1.29 2009/10/24 23:21:31 tom Exp $") +MODULE_ID("$Id: lib_overlay.c,v 1.33 2020/02/02 23:34:34 tom Exp $") static int overlap(const WINDOW *const src, WINDOW *const dst, int const flag) { int rc = ERR; - int sx1, sy1, sx2, sy2; - int dx1, dy1, dx2, dy2; - int sminrow, smincol; - int dminrow, dmincol; - int dmaxrow, dmaxcol; T((T_CALLED("overlap(%p,%p,%d)"), (const void *) src, (void *) dst, flag)); if (src != 0 && dst != 0) { + int sx1, sy1, sx2, sy2; + int dx1, dy1, dx2, dy2; + _nc_lock_global(curses); T(("src : begy %ld, begx %ld, maxy %ld, maxx %ld", @@ -79,12 +78,12 @@ overlap(const WINDOW *const src, WINDOW *const dst, int const flag) dy2 = dy1 + dst->_maxy; if (dx2 >= sx1 && dx1 <= sx2 && dy2 >= sy1 && dy1 <= sy2) { - sminrow = max(sy1, dy1) - sy1; - smincol = max(sx1, dx1) - sx1; - dminrow = max(sy1, dy1) - dy1; - dmincol = max(sx1, dx1) - dx1; - dmaxrow = min(sy2, dy2) - dy1; - dmaxcol = min(sx2, dx2) - dx1; + int sminrow = max(sy1, dy1) - sy1; + int smincol = max(sx1, dx1) - sx1; + int dminrow = max(sy1, dy1) - dy1; + int dmincol = max(sx1, dx1) - dx1; + int dmaxrow = min(sy2, dy2) - dy1; + int dmaxcol = min(sx2, dx2) - dx1; rc = copywin(src, dst, sminrow, smincol, @@ -139,10 +138,6 @@ copywin(const WINDOW *src, WINDOW *dst, int over) { int rc = ERR; - int sx, sy, dx, dy; - bool touched; - attr_t bk; - attr_t mask; T((T_CALLED("copywin(%p, %p, %d, %d, %d, %d, %d, %d, %d)"), (const void *) src, @@ -151,7 +146,13 @@ copywin(const WINDOW *src, WINDOW *dst, dminrow, dmincol, dmaxrow, dmaxcol, over)); - if (src && dst) { + if (src != 0 + && dst != 0 + && dmaxrow >= dminrow + && dmaxcol >= dmincol) { + attr_t bk; + attr_t mask; + _nc_lock_global(curses); bk = AttrOf(dst->_nc_bkgd); @@ -165,17 +166,28 @@ copywin(const WINDOW *src, WINDOW *dst, /* make sure rectangle fits in destination */ if (dmaxrow <= dst->_maxy && dmaxcol <= dst->_maxx) { + int sx, sy, dx, dy; + bool copied = FALSE; T(("rectangle fits in destination")); for (dy = dminrow, sy = sminrow; dy <= dmaxrow; sy++, dy++) { + bool touched; + + if (dy < 0 || sy < 0) + continue; touched = FALSE; for (dx = dmincol, sx = smincol; dx <= dmaxcol; sx++, dx++) { + + if (dx < 0 || sx < 0) + continue; + copied = TRUE; + if (over) { if ((CharOf(src->_line[sy].text[sx]) != L(' ')) && (!CharEq(dst->_line[dy].text[dx], @@ -201,7 +213,8 @@ copywin(const WINDOW *src, WINDOW *dst, } } T(("finished copywin")); - rc = OK; + if (copied) + rc = OK; } } _nc_unlock_global(curses); diff --git a/deps/ncurses-5.9/ncurses/base/lib_pad.c b/deps/ncurses-6.3/ncurses/base/lib_pad.c similarity index 96% rename from deps/ncurses-5.9/ncurses/base/lib_pad.c rename to deps/ncurses-6.3/ncurses/base/lib_pad.c index b87498b..f49a5eb 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_pad.c +++ b/deps/ncurses-6.3/ncurses/base/lib_pad.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_pad.c,v 1.46 2010/04/24 23:50:45 tom Exp $") +MODULE_ID("$Id: lib_pad.c,v 1.49 2021/09/04 10:52:55 tom Exp $") NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(newpad) (NCURSES_SP_DCLx int l, int c) @@ -188,6 +189,12 @@ pnoutrefresh(WINDOW *win, T(("pad being refreshed")); +#ifdef TRACE + if (USE_TRACEF(TRACE_UPDATE)) { + _tracedump("...pad", win); + _nc_unlock_global(tracef); + } +#endif /* TRACE */ #if USE_SCROLL_HINTS if (win->_pad._pad_y >= 0) { displaced = pminrow - win->_pad._pad_y @@ -289,7 +296,7 @@ pnoutrefresh(WINDOW *win, /* * Use the pad's current position, if it will be visible. - * If not, don't do anything; it's not an error. + * If not, don't do anything; it is not an error. */ if (win->_leaveok == FALSE && win->_cury >= pminrow diff --git a/deps/ncurses-6.3/ncurses/base/lib_printw.c b/deps/ncurses-6.3/ncurses/base/lib_printw.c new file mode 100644 index 0000000..d901b72 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_printw.c @@ -0,0 +1,167 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,2016 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: Thomas E. Dickey 1997-on * + ****************************************************************************/ + +/* +** lib_printw.c +** +** The routines printw(), wprintw() and friends. +** +*/ + +#include <curses.priv.h> + +MODULE_ID("$Id: lib_printw.c,v 1.28 2020/02/02 23:34:34 tom Exp $") + +NCURSES_EXPORT(int) +printw(const char *fmt, ...) +{ + va_list argp; + int code; + +#ifdef TRACE + va_list argq; + va_start(argq, fmt); + T((T_CALLED("printw(%s%s)"), + _nc_visbuf(fmt), _nc_varargs(fmt, argq))); + va_end(argq); +#endif + + va_start(argp, fmt); + code = vw_printw(stdscr, fmt, argp); + va_end(argp); + + returnCode(code); +} + +NCURSES_EXPORT(int) +wprintw(WINDOW *win, const char *fmt, ...) +{ + va_list argp; + int code; + +#ifdef TRACE + va_list argq; + va_start(argq, fmt); + T((T_CALLED("wprintw(%p,%s%s)"), + (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argq))); + va_end(argq); +#endif + + va_start(argp, fmt); + code = vw_printw(win, fmt, argp); + va_end(argp); + + returnCode(code); +} + +NCURSES_EXPORT(int) +mvprintw(int y, int x, const char *fmt, ...) +{ + int code; + +#ifdef TRACE + va_list argq; + va_start(argq, fmt); + T((T_CALLED("mvprintw(%d,%d,%s%s)"), + y, x, _nc_visbuf(fmt), _nc_varargs(fmt, argq))); + va_end(argq); +#endif + + if ((code = move(y, x)) != ERR) { + va_list argp; + + va_start(argp, fmt); + code = vw_printw(stdscr, fmt, argp); + va_end(argp); + } + returnCode(code); +} + +NCURSES_EXPORT(int) +mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...) +{ + int code; + +#ifdef TRACE + va_list argq; + va_start(argq, fmt); + T((T_CALLED("mvwprintw(%d,%d,%p,%s%s)"), + y, x, (void *) win, _nc_visbuf(fmt), _nc_varargs(fmt, argq))); + va_end(argq); +#endif + + if ((code = wmove(win, y, x)) != ERR) { + va_list argp; + + va_start(argp, fmt); + code = vw_printw(win, fmt, argp); + va_end(argp); + } + returnCode(code); +} + +NCURSES_EXPORT(int) +vwprintw(WINDOW *win, const char *fmt, va_list argp) +{ + char *buf; + int code = ERR; +#if NCURSES_SP_FUNCS + SCREEN *sp = _nc_screen_of(win); +#endif + + 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) { + code = waddstr(win, buf); + } + returnCode(code); +} + +NCURSES_EXPORT(int) +vw_printw(WINDOW *win, const char *fmt, va_list argp) +{ + char *buf; + int code = ERR; +#if NCURSES_SP_FUNCS + SCREEN *sp = _nc_screen_of(win); +#endif + + 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) { + code = waddstr(win, buf); + } + returnCode(code); +} diff --git a/deps/ncurses-5.9/ncurses/base/lib_redrawln.c b/deps/ncurses-6.3/ncurses/base/lib_redrawln.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/lib_redrawln.c rename to deps/ncurses-6.3/ncurses/base/lib_redrawln.c index 72905f8..c99d699 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_redrawln.c +++ b/deps/ncurses-6.3/ncurses/base/lib_redrawln.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_redrawln.c,v 1.17 2010/12/19 00:03:23 tom Exp $") +MODULE_ID("$Id: lib_redrawln.c,v 1.18 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wredrawln(WINDOW *win, int beg, int num) diff --git a/deps/ncurses-5.9/ncurses/base/lib_refresh.c b/deps/ncurses-6.3/ncurses/base/lib_refresh.c similarity index 97% rename from deps/ncurses-5.9/ncurses/base/lib_refresh.c rename to deps/ncurses-6.3/ncurses/base/lib_refresh.c index 8c02086..d844428 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_refresh.c +++ b/deps/ncurses-6.3/ncurses/base/lib_refresh.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2011 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_refresh.c,v 1.44 2010/12/19 01:22:58 tom Exp $") +MODULE_ID("$Id: lib_refresh.c,v 1.46 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wrefresh(WINDOW *win) @@ -90,12 +91,6 @@ wnoutrefresh(WINDOW *win) #endif T((T_CALLED("wnoutrefresh(%p)"), (void *) win)); -#ifdef TRACE - if (USE_TRACEF(TRACE_UPDATE)) { - _tracedump("...win", win); - _nc_unlock_global(tracef); - } -#endif /* TRACE */ /* * This function will break badly if we try to refresh a pad. @@ -104,6 +99,13 @@ wnoutrefresh(WINDOW *win) || (win->_flags & _ISPAD)) returnCode(ERR); +#ifdef TRACE + if (USE_TRACEF(TRACE_UPDATE)) { + _tracedump("...win", win); + _nc_unlock_global(tracef); + } +#endif /* TRACE */ + /* put them here so "win == 0" won't break our code */ begx = win->_begx; begy = win->_begy; diff --git a/deps/ncurses-5.9/ncurses/base/lib_restart.c b/deps/ncurses-6.3/ncurses/base/lib_restart.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_restart.c rename to deps/ncurses-6.3/ncurses/base/lib_restart.c index b28cfd1..81eb368 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_restart.c +++ b/deps/ncurses-6.3/ncurses/base/lib_restart.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2012,2015 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 * @@ -41,11 +42,7 @@ #include <curses.priv.h> -#if SVR4_TERMIO && !defined(_POSIX_SOURCE) -#define _POSIX_SOURCE -#endif - -MODULE_ID("$Id: lib_restart.c,v 1.13 2009/10/24 22:47:43 tom Exp $") +MODULE_ID("$Id: lib_restart.c,v 1.17 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx @@ -55,9 +52,10 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx { int result; #ifdef USE_TERM_DRIVER - TERMINAL *new_term; + TERMINAL *new_term = 0; #endif + START_TRACE(); T((T_CALLED("restartterm(%p,%s,%d,%p)"), (void *) SP_PARM, termp, @@ -114,6 +112,7 @@ NCURSES_SP_NAME(restartterm) (NCURSES_SP_DCLx NCURSES_EXPORT(int) restartterm(NCURSES_CONST char *termp, int filenum, int *errret) { + START_TRACE(); return NCURSES_SP_NAME(restartterm) (CURRENT_SCREEN, termp, filenum, errret); } #endif diff --git a/deps/ncurses-6.3/ncurses/base/lib_scanw.c b/deps/ncurses-6.3/ncurses/base/lib_scanw.c new file mode 100644 index 0000000..1ed36a5 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_scanw.c @@ -0,0 +1,126 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2009,2011 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* +** lib_scanw.c +** +** The routines scanw(), wscanw() and friends. +** +*/ + +#include <curses.priv.h> + +MODULE_ID("$Id: lib_scanw.c,v 1.19 2020/02/02 23:34:34 tom Exp $") + +NCURSES_EXPORT(int) +vwscanw(WINDOW *win, const char *fmt, va_list argp) +{ + char buf[BUFSIZ]; + int code = ERR; + + if (wgetnstr(win, buf, (int) sizeof(buf) - 1) != ERR) { + if ((code = vsscanf(buf, fmt, argp)) == EOF) { + code = ERR; + } + } + + return code; +} + +NCURSES_EXPORT(int) +vw_scanw(WINDOW *win, const char *fmt, va_list argp) +{ + char buf[BUFSIZ]; + int code = ERR; + + if (wgetnstr(win, buf, (int) sizeof(buf) - 1) != ERR) { + if ((code = vsscanf(buf, fmt, argp)) == EOF) { + code = ERR; + } + } + + return code; +} + +NCURSES_EXPORT(int) +scanw(const char *fmt, ...) +{ + int code; + va_list ap; + + T(("scanw(\"%s\",...) called", fmt)); + + va_start(ap, fmt); + code = vw_scanw(stdscr, fmt, ap); + va_end(ap); + return (code); +} + +NCURSES_EXPORT(int) +wscanw(WINDOW *win, const char *fmt, ...) +{ + int code; + va_list ap; + + T(("wscanw(%p,\"%s\",...) called", (void *) win, fmt)); + + va_start(ap, fmt); + code = vw_scanw(win, fmt, ap); + va_end(ap); + return (code); +} + +NCURSES_EXPORT(int) +mvscanw(int y, int x, const char *fmt, ...) +{ + int code; + va_list ap; + + va_start(ap, fmt); + code = (move(y, x) == OK) ? vw_scanw(stdscr, fmt, ap) : ERR; + va_end(ap); + return (code); +} + +NCURSES_EXPORT(int) +mvwscanw(WINDOW *win, int y, int x, const char *fmt, ...) +{ + int code; + va_list ap; + + va_start(ap, fmt); + code = (wmove(win, y, x) == OK) ? vw_scanw(win, fmt, ap) : ERR; + va_end(ap); + return (code); +} diff --git a/deps/ncurses-6.3/ncurses/base/lib_screen.c b/deps/ncurses-6.3/ncurses/base/lib_screen.c new file mode 100644 index 0000000..eacb03a --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_screen.c @@ -0,0 +1,1082 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2017,2018 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996 on * + * and: Juergen Pfeifer 2009 * + ****************************************************************************/ + +#include <curses.priv.h> + +#include <ctype.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_screen.c,v 1.103 2021/10/18 22:40:48 tom Exp $") + +#define MAX_SIZE 0x3fff /* 16k is big enough for a window or pad */ + +#define MARKER '\\' +#define APPEND '+' +#define GUTTER '|' +#define L_CURL '{' +#define R_CURL '}' + +#if USE_STRING_HACKS && HAVE_SNPRINTF +#define ARG_SLIMIT(name) size_t name, +#else +#define ARG_SLIMIT(name) /* nothing */ +#endif + +#define CUR_SLIMIT _nc_SLIMIT(limit - (size_t) (target - base)) +#define TOP_SLIMIT _nc_SLIMIT(sizeof(buffer)) + +/* + * Use 0x888888 as the magic number for new-format files, since it cannot be + * mistaken for the _cury/_curx pair of 16-bit numbers which start the old + * format. It happens to be unused in the file 5.22 database (2015/03/07). + */ +static const char my_magic[] = +{'\210', '\210', '\210', '\210', 0}; + +#if NCURSES_EXT_PUTWIN +typedef enum { + pINT /* int */ + ,pSHORT /* short */ + ,pBOOL /* bool */ + ,pATTR /* attr_t */ + ,pCHAR /* chtype */ + ,pSIZE /* NCURSES_SIZE_T */ +#if NCURSES_WIDECHAR + ,pCCHAR /* cchar_t */ +#endif +} PARAM_TYPE; + +typedef struct { + const char name[11]; + attr_t attr; +} SCR_ATTRS; + +typedef struct { + const char name[17]; + PARAM_TYPE type; + size_t size; + size_t offset; +} SCR_PARAMS; + +#define DATA(name) { { #name }, A_##name } +static const SCR_ATTRS scr_attrs[] = +{ + DATA(NORMAL), + DATA(STANDOUT), + DATA(UNDERLINE), + DATA(REVERSE), + DATA(BLINK), + DATA(DIM), + DATA(BOLD), + DATA(ALTCHARSET), + DATA(INVIS), + DATA(PROTECT), + DATA(HORIZONTAL), + DATA(LEFT), + DATA(LOW), + DATA(RIGHT), + DATA(TOP), + DATA(VERTICAL), + +#ifdef A_ITALIC + DATA(ITALIC), +#endif +}; +#undef DATA + +#define sizeof2(type,name) sizeof(((type *)0)->name) +#define DATA(name, type) { { #name }, type, sizeof2(WINDOW, name), offsetof(WINDOW, name) } + +static const SCR_PARAMS scr_params[] = +{ + DATA(_cury, pSIZE), + DATA(_curx, pSIZE), + DATA(_maxy, pSIZE), + DATA(_maxx, pSIZE), + DATA(_begy, pSIZE), + DATA(_begx, pSIZE), + DATA(_flags, pSHORT), + DATA(_attrs, pATTR), + DATA(_bkgd, pCHAR), + DATA(_notimeout, pBOOL), + DATA(_clear, pBOOL), + DATA(_leaveok, pBOOL), + DATA(_scroll, pBOOL), + DATA(_idlok, pBOOL), + DATA(_idcok, pBOOL), + DATA(_immed, pBOOL), + DATA(_sync, pBOOL), + DATA(_use_keypad, pBOOL), + DATA(_delay, pINT), + DATA(_regtop, pSIZE), + DATA(_regbottom, pSIZE), + DATA(_pad._pad_y, pSIZE), + DATA(_pad._pad_x, pSIZE), + DATA(_pad._pad_top, pSIZE), + DATA(_pad._pad_left, pSIZE), + DATA(_pad._pad_bottom, pSIZE), + DATA(_pad._pad_right, pSIZE), + DATA(_yoffset, pSIZE), +#if NCURSES_WIDECHAR + DATA(_bkgrnd, pCCHAR), +#if NCURSES_EXT_COLORS + DATA(_color, pINT), +#endif +#endif +}; +#undef DATA + +static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); + +/* + * Allocate and read a line of text. Caller must free it. + */ +static char * +read_txt(FILE *fp) +{ + size_t limit = 1024; + char *result = malloc(limit); + char *buffer; + + if (result != 0) { + int ch = 0; + size_t used = 0; + + clearerr(fp); + result[used] = '\0'; + do { + if (used + 2 >= limit) { + limit += 1024; + buffer = realloc(result, limit); + if (buffer == 0) { + free(result); + result = 0; + break; + } + result = buffer; + } + ch = fgetc(fp); + if (ch == EOF) + break; + result[used++] = (char) ch; + result[used] = '\0'; + } while (ch != '\n'); + + if (ch == '\n') { + result[--used] = '\0'; + TR(TRACE_IEVENT, ("READ:%s", result)); + } else if (used == 0) { + free(result); + result = 0; + } + } + return result; +} + +static char * +decode_attr(char *source, attr_t *target, int *color) +{ + bool found = FALSE; + + TR(TRACE_IEVENT, ("decode_attr '%s'", source)); + + while (*source) { + if (source[0] == MARKER && source[1] == L_CURL) { + source += 2; + found = TRUE; + } else if (source[0] == R_CURL) { + source++; + found = FALSE; + } else if (found) { + size_t n; + char *next = source; + + if (source[0] == GUTTER) { + ++next; + } else if (*next == 'C') { + int value = 0; + unsigned pair; + next++; + while (isdigit(UChar(*next))) { + value = value * 10 + (*next++ - '0'); + } + *target &= ~A_COLOR; + pair = (unsigned) ((value > 256) + ? COLOR_PAIR(255) + : COLOR_PAIR(value)); + *target |= pair; + *color = value; + } else { + while (isalnum(UChar(*next))) { + ++next; + } + for (n = 0; n < SIZEOF(scr_attrs); ++n) { + if ((size_t) (next - source) == strlen(scr_attrs[n].name)) { + if (scr_attrs[n].attr) { + *target |= scr_attrs[n].attr; + } else { + *target = A_NORMAL; + } + break; + } + } + } + source = next; + } else { + break; + } + } + return source; +} + +static char * +decode_char(char *source, int *target) +{ + int limit = 0; + int base = 16; + const char digits[] = "0123456789abcdef"; + + TR(TRACE_IEVENT, ("decode_char '%s'", source)); + *target = ' '; + switch (*source) { + case MARKER: + switch (*++source) { + case APPEND: + break; + case MARKER: + *target = MARKER; + ++source; + break; + case 's': + *target = ' '; + ++source; + break; + case '0': + case '1': + case '2': + case '3': + base = 8; + limit = 3; + break; + case 'u': + limit = 4; + ++source; + break; + case 'U': + limit = 8; + ++source; + break; + } + if (limit) { + *target = 0; + while (limit-- > 0) { + char *find = strchr(digits, *source++); + int ch = (find != 0) ? (int) (find - digits) : -1; + *target *= base; + if (ch >= 0 && ch < base) { + *target += ch; + } + } + } + break; + default: + *target = *source++; + break; + } + return source; +} + +static char * +decode_chtype(char *source, chtype fillin, chtype *target) +{ + attr_t attr = ChAttrOf(fillin); + int color = PAIR_NUMBER((int) attr); + int value; + + TR(TRACE_IEVENT, ("decode_chtype '%s'", source)); + source = decode_attr(source, &attr, &color); + source = decode_char(source, &value); + *target = (ChCharOf(value) | attr | (chtype) COLOR_PAIR(color)); + /* FIXME - ignore combining characters */ + return source; +} + +#if NCURSES_WIDECHAR +static char * +decode_cchar(char *source, cchar_t *fillin, cchar_t *target) +{ + int color; + attr_t attr = fillin->attr; + wchar_t chars[CCHARW_MAX]; + int append = 0; + int value = 0; + + TR(TRACE_IEVENT, ("decode_cchar '%s'", source)); + *target = blank; +#if NCURSES_EXT_COLORS + color = fillin->ext_color; +#else + color = (int) PAIR_NUMBER(attr); +#endif + source = decode_attr(source, &attr, &color); + memset(chars, 0, sizeof(chars)); + source = decode_char(source, &value); + chars[0] = (wchar_t) value; + /* handle combining characters */ + while (source[0] == MARKER && source[1] == APPEND) { + source += 2; + source = decode_char(source, &value); + if (++append < CCHARW_MAX) { + chars[append] = (wchar_t) value; + } + } + setcchar(target, chars, attr, (short) color, &color); + return source; +} +#endif + +static int +read_win(WINDOW *win, FILE *fp) +{ + int code = ERR; + size_t n; + int color; +#if NCURSES_WIDECHAR + NCURSES_CH_T prior; +#endif + chtype prior2; + + memset(win, 0, sizeof(WINDOW)); + for (;;) { + char *name; + char *value; + char *txt = read_txt(fp); + + if (txt == 0) + break; + if (!strcmp(txt, "rows:")) { + free(txt); + code = OK; + break; + } + if ((value = strchr(txt, '=')) == 0) { + free(txt); + continue; + } + *value++ = '\0'; + name = !strcmp(txt, "flag") ? value : txt; + for (n = 0; n < SIZEOF(scr_params); ++n) { + if (!strcmp(name, scr_params[n].name)) { + void *data = (void *) ((char *) win + scr_params[n].offset); + + switch (scr_params[n].type) { + case pATTR: + (void) decode_attr(value, data, &color); + break; + case pBOOL: + *(bool *) data = TRUE; + break; + case pCHAR: + prior2 = ' '; + decode_chtype(value, prior2, data); + break; + case pINT: + *(int *) data = atoi(value); + break; + case pSHORT: + *(short *) data = (short) atoi(value); + break; + case pSIZE: + *(NCURSES_SIZE_T *) data = (NCURSES_SIZE_T) atoi(value); + break; +#if NCURSES_WIDECHAR + case pCCHAR: + prior = blank; + decode_cchar(value, &prior, data); + break; +#endif + } + break; + } + } + free(txt); + } + return code; +} + +static int +read_row(char *source, NCURSES_CH_T *prior, NCURSES_CH_T *target, int length) +{ + while (*source != '\0' && length > 0) { +#if NCURSES_WIDECHAR + int len; + + source = decode_cchar(source, prior, target); + len = _nc_wacs_width(target->chars[0]); + if (len > 1) { + int n; + + SetWidecExt(CHDEREF(target), 0); + for (n = 1; n < len; ++n) { + target[n] = target[0]; + SetWidecExt(CHDEREF(target), n); + } + target += (len - 1); + length -= (len - 1); + } +#else + source = decode_chtype(source, *prior, target); +#endif + *prior = *target; + ++target; + --length; + } + while (length-- > 0) { + *target++ = blank; + } + /* FIXME - see what error conditions should apply if I need to return ERR */ + return 0; +} +#endif /* NCURSES_EXT_PUTWIN */ + +/* + * Originally, getwin/putwin used fread/fwrite, because they used binary data. + * The new format uses printable ASCII, which does not have as predictable + * sizes. Consequently, we use buffered I/O, e.g., fgetc/fprintf, which need + * special handling if we want to read screen dumps from an older library. + */ +static int +read_block(void *target, size_t length, FILE *fp) +{ + int result = 0; + char *buffer = target; + + clearerr(fp); + while (length-- != 0) { + int ch = fgetc(fp); + if (ch == EOF) { + result = -1; + break; + } + *buffer++ = (char) ch; + } + return result; +} + +NCURSES_EXPORT(WINDOW *) +NCURSES_SP_NAME(getwin) (NCURSES_SP_DCLx FILE *filep) +{ + WINDOW tmp, *nwin; + bool old_format = FALSE; + + T((T_CALLED("getwin(%p)"), (void *) filep)); + + if (filep == 0) { + returnWin(0); + } + + /* + * Read the first 4 bytes to determine first if this is an old-format + * screen-dump, or new-format. + */ + if (read_block(&tmp, (size_t) 4, filep) < 0) { + returnWin(0); + } + /* + * If this is a new-format file, and we do not support it, give up. + */ + if (!memcmp(&tmp, my_magic, (size_t) 4)) { +#if NCURSES_EXT_PUTWIN + if (read_win(&tmp, filep) < 0) +#endif + returnWin(0); + } else if (read_block(((char *) &tmp) + 4, sizeof(WINDOW) - 4, filep) < 0) { + returnWin(0); + } else { + old_format = TRUE; + } + + /* + * Check the window-size: + */ + if (tmp._maxy == 0 || + tmp._maxy > MAX_SIZE || + tmp._maxx == 0 || + tmp._maxx > MAX_SIZE) { + returnWin(0); + } + + if (tmp._flags & _ISPAD) { + nwin = NCURSES_SP_NAME(newpad) (NCURSES_SP_ARGx + tmp._maxy + 1, + tmp._maxx + 1); + } else { + nwin = NCURSES_SP_NAME(newwin) (NCURSES_SP_ARGx + tmp._maxy + 1, + tmp._maxx + 1, 0, 0); + } + + /* + * We deliberately do not restore the _parx, _pary, or _parent + * fields, because the window hierarchy within which they + * made sense is probably gone. + */ + if (nwin != 0) { + int n; + size_t linesize = sizeof(NCURSES_CH_T) * (size_t) (tmp._maxx + 1); + + nwin->_curx = tmp._curx; + nwin->_cury = tmp._cury; + nwin->_maxy = tmp._maxy; + nwin->_maxx = tmp._maxx; + nwin->_begy = tmp._begy; + nwin->_begx = tmp._begx; + nwin->_yoffset = tmp._yoffset; + nwin->_flags = tmp._flags & ~(_SUBWIN); + + WINDOW_ATTRS(nwin) = WINDOW_ATTRS(&tmp); + nwin->_nc_bkgd = tmp._nc_bkgd; + + nwin->_notimeout = tmp._notimeout; + nwin->_clear = tmp._clear; + nwin->_leaveok = tmp._leaveok; + nwin->_idlok = tmp._idlok; + nwin->_idcok = tmp._idcok; + nwin->_immed = tmp._immed; + nwin->_scroll = tmp._scroll; + nwin->_sync = tmp._sync; + nwin->_use_keypad = tmp._use_keypad; + nwin->_delay = tmp._delay; + + nwin->_regtop = tmp._regtop; + nwin->_regbottom = tmp._regbottom; + + if (tmp._flags & _ISPAD) + nwin->_pad = tmp._pad; + + if (old_format) { + T(("reading old-format screen dump")); + for (n = 0; n <= nwin->_maxy; n++) { + if (read_block(nwin->_line[n].text, linesize, filep) < 0) { + delwin(nwin); + returnWin(0); + } + } + } +#if NCURSES_EXT_PUTWIN + else { + char *txt = 0; + bool success = TRUE; + NCURSES_CH_T prior = blank; + + T(("reading new-format screen dump")); + for (n = 0; n <= nwin->_maxy; n++) { + long row; + char *next; + + if ((txt = read_txt(filep)) == 0) { + T(("...failed to read string for row %d", n + 1)); + success = FALSE; + break; + } + row = strtol(txt, &next, 10); + if (row != (n + 1) || *next != ':') { + T(("...failed to read row-number %d", n + 1)); + success = FALSE; + break; + } + + if (read_row(++next, &prior, nwin->_line[n].text, tmp._maxx + + 1) < 0) { + T(("...failed to read cells for row %d", n + 1)); + success = FALSE; + break; + } + free(txt); + txt = 0; + } + + if (!success) { + free(txt); + delwin(nwin); + returnWin(0); + } + } +#endif + touchwin(nwin); + } + returnWin(nwin); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(WINDOW *) +getwin(FILE *filep) +{ + return NCURSES_SP_NAME(getwin) (CURRENT_SCREEN, filep); +} +#endif + +#if NCURSES_EXT_PUTWIN +static void +encode_attr(char *target, ARG_SLIMIT(limit) + attr_t source, + attr_t prior, + int source_color, + int prior_color) +{ +#if USE_STRING_HACKS && HAVE_SNPRINTF + char *base = target; +#endif + source &= ~A_CHARTEXT; + prior &= ~A_CHARTEXT; + + *target = '\0'; + if ((source != prior) || (source_color != prior_color)) { + size_t n; + bool first = TRUE; + + *target++ = MARKER; + *target++ = L_CURL; + + for (n = 0; n < SIZEOF(scr_attrs); ++n) { + if ((source & scr_attrs[n].attr) != 0 || + ((source & ALL_BUT_COLOR) == 0 && + (scr_attrs[n].attr == A_NORMAL))) { + if (first) { + first = FALSE; + } else { + *target++ = '|'; + } + _nc_STRCPY(target, scr_attrs[n].name, limit); + target += strlen(target); + } + } + if (source_color != prior_color) { + if (!first) + *target++ = '|'; + _nc_SPRINTF(target, CUR_SLIMIT "C%d", source_color); + target += strlen(target); + } + + *target++ = R_CURL; + *target = '\0'; + } +} + +static void +encode_cell(char *target, ARG_SLIMIT(limit) CARG_CH_T source, CARG_CH_T previous) +{ +#if USE_STRING_HACKS && HAVE_SNPRINTF + char *base = target; +#endif +#if NCURSES_WIDECHAR + size_t n; + int source_pair = GetPair(*source); + int previous_pair = GetPair(*previous); + + *target = '\0'; + if ((previous->attr != source->attr) || (previous_pair != source_pair)) { + encode_attr(target, CUR_SLIMIT + source->attr, + previous->attr, + source_pair, + previous_pair); + } + target += strlen(target); +#if NCURSES_EXT_COLORS + if (previous->ext_color != source->ext_color) { + _nc_SPRINTF(target, CUR_SLIMIT + "%c%cC%d%c", MARKER, L_CURL, source->ext_color, R_CURL); + } +#endif + for (n = 0; n < SIZEOF(source->chars); ++n) { + unsigned uch = (unsigned) source->chars[n]; + if (uch == 0) + continue; + if (n) { + *target++ = MARKER; + *target++ = APPEND; + } + *target++ = MARKER; + if (uch > 0xffff) { + _nc_SPRINTF(target, CUR_SLIMIT "U%08x", uch); + } else if (uch > 0xff) { + _nc_SPRINTF(target, CUR_SLIMIT "u%04x", uch); + } else if (uch < 32 || uch >= 127) { + _nc_SPRINTF(target, CUR_SLIMIT "%03o", uch & 0xff); + } else { + switch (uch) { + case ' ': + _nc_STRCPY(target, "s", limit); + break; + case MARKER: + *target++ = MARKER; + *target = '\0'; + break; + default: + --target; + _nc_SPRINTF(target, CUR_SLIMIT "%c", uch); + break; + } + } + target += strlen(target); + } +#else + chtype ch = CharOfD(source); + + *target = '\0'; + if (AttrOfD(previous) != AttrOfD(source)) { + encode_attr(target, CUR_SLIMIT + AttrOfD(source), + AttrOfD(previous), + GetPair(source), + GetPair(previous)); + } + target += strlen(target); + *target++ = MARKER; + if (ch < 32 || ch >= 127) { + _nc_SPRINTF(target, CUR_SLIMIT "%03o", UChar(ch)); + } else { + switch (ch) { + case ' ': + _nc_STRCPY(target, "s", limit); + break; + case MARKER: + *target++ = MARKER; + *target = '\0'; + break; + default: + --target; + _nc_SPRINTF(target, CUR_SLIMIT "%c", UChar(ch)); + break; + } + } +#endif +} +#endif + +NCURSES_EXPORT(int) +putwin(WINDOW *win, FILE *filep) +{ + int code = ERR; + + T((T_CALLED("putwin(%p,%p)"), (void *) win, (void *) filep)); + +#if NCURSES_EXT_PUTWIN + if (win != 0) { + const char *version = curses_version(); + char buffer[1024]; + NCURSES_CH_T last_cell; + int y; + + memset(&last_cell, 0, sizeof(last_cell)); + + clearerr(filep); + + /* + * Our magic number is technically nonprinting, but aside from that, + * all of the file is printable ASCII. + */ +#define PUTS(s) if (fputs(s, filep) == EOF || ferror(filep)) returnCode(code) + PUTS(my_magic); + PUTS(version); + PUTS("\n"); + for (y = 0; y < (int) SIZEOF(scr_params); ++y) { + const char *name = scr_params[y].name; + const char *data = (char *) win + scr_params[y].offset; + const void *dp = (const void *) data; + attr_t attr; + + *buffer = '\0'; + if (!strncmp(name, "_pad.", (size_t) 5) && !(win->_flags & _ISPAD)) { + continue; + } + switch (scr_params[y].type) { + case pATTR: + attr = (*(const attr_t *) dp) & ~A_CHARTEXT; + encode_attr(buffer, TOP_SLIMIT + (*(const attr_t *) dp) & ~A_CHARTEXT, + A_NORMAL, + COLOR_PAIR((int) attr), + 0); + break; + case pBOOL: + if (!(*(const bool *) data)) { + continue; + } + _nc_STRCPY(buffer, name, sizeof(buffer)); + name = "flag"; + break; + case pCHAR: + attr = (*(const attr_t *) dp); + encode_attr(buffer, TOP_SLIMIT + * (const attr_t *) dp, + A_NORMAL, + COLOR_PAIR((int) attr), + 0); + break; + case pINT: + if (!(*(const int *) dp)) + continue; + _nc_SPRINTF(buffer, TOP_SLIMIT + "%d", *(const int *) dp); + break; + case pSHORT: + if (!(*(const short *) dp)) + continue; + _nc_SPRINTF(buffer, TOP_SLIMIT + "%d", *(const short *) dp); + break; + case pSIZE: + if (!(*(const NCURSES_SIZE_T *) dp)) + continue; + _nc_SPRINTF(buffer, TOP_SLIMIT + "%d", *(const NCURSES_SIZE_T *) dp); + break; +#if NCURSES_WIDECHAR + case pCCHAR: + encode_cell(buffer, TOP_SLIMIT + (CARG_CH_T) dp, CHREF(last_cell)); + break; +#endif + } + /* + * Only write non-default data. + */ + if (*buffer != '\0') { + if (fprintf(filep, "%s=%s\n", name, buffer) <= 0 + || ferror(filep)) + returnCode(code); + } + } + /* Write row-data */ + fprintf(filep, "rows:\n"); + for (y = 0; y <= win->_maxy; y++) { + NCURSES_CH_T *data = win->_line[y].text; + int x; + if (fprintf(filep, "%d:", y + 1) <= 0 + || ferror(filep)) + returnCode(code); + for (x = 0; x <= win->_maxx; x++) { +#if NCURSES_WIDECHAR + int len = _nc_wacs_width(data[x].chars[0]); + encode_cell(buffer, TOP_SLIMIT CHREF(data[x]), CHREF(last_cell)); + last_cell = data[x]; + PUTS(buffer); + if (len > 1) + x += (len - 1); +#else + encode_cell(buffer, TOP_SLIMIT CHREF(data[x]), CHREF(last_cell)); + last_cell = data[x]; + PUTS(buffer); +#endif + } + PUTS("\n"); + } + code = OK; + } +#else + /* + * This is the original putwin(): + * A straight binary dump is simple, but its format can depend on whether + * 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) { + size_t len = (size_t) (win->_maxx + 1); + int y; + + clearerr(filep); + if (fwrite(win, sizeof(WINDOW), (size_t) 1, filep) != 1 + || ferror(filep)) + returnCode(code); + + for (y = 0; y <= win->_maxy; y++) { + if (fwrite(win->_line[y].text, + sizeof(NCURSES_CH_T), len, filep) != len + || ferror(filep)) { + returnCode(code); + } + } + code = OK; + } +#endif + returnCode(code); +} + +/* + * Replace a window covering the whole screen, i.e., newscr or curscr. + */ +static WINDOW * +replace_window(WINDOW *target, FILE *source) +{ + WINDOW *result = getwin(source); +#if NCURSES_EXT_FUNCS + if (result != NULL) { + if (getmaxx(result) != getmaxx(target) + || getmaxy(result) != getmaxy(target)) { + int code = wresize(result, + 1 + getmaxy(target), + 1 + getmaxx(target)); + if (code != OK) { + delwin(result); + result = NULL; + } + } + } +#endif + delwin(target); + return result; +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(scr_restore) (NCURSES_SP_DCLx const char *file) +{ + FILE *fp = 0; + 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 !USE_REENTRANT + newscr = NewScreen(SP_PARM); +#endif + (void) fclose(fp); + if (NewScreen(SP_PARM) != 0) { + code = OK; + } + } + returnCode(code); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +scr_restore(const char *file) +{ + return NCURSES_SP_NAME(scr_restore) (CURRENT_SCREEN, file); +} +#endif + +NCURSES_EXPORT(int) +scr_dump(const char *file) +{ + int result; + FILE *fp = 0; + + T((T_CALLED("scr_dump(%s)"), _nc_visbuf(file))); + + if (_nc_access(file, W_OK) < 0 + || (fp = safe_fopen(file, BIN_W)) == 0) { + result = ERR; + } else { + (void) putwin(newscr, fp); + (void) fclose(fp); + result = OK; + } + returnCode(result); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(scr_init) (NCURSES_SP_DCLx const char *file) +{ + int code = ERR; + + T((T_CALLED("scr_init(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file))); + + if (SP_PARM != 0 && +#ifdef USE_TERM_DRIVER + InfoOf(SP_PARM).caninit +#else + !(exit_ca_mode && non_rev_rmcup) +#endif + ) { + FILE *fp = 0; + + if (_nc_access(file, R_OK) >= 0 + && (fp = safe_fopen(file, BIN_R)) != 0) { + CurScreen(SP_PARM) = replace_window(CurScreen(SP_PARM), fp); +#if !USE_REENTRANT + curscr = CurScreen(SP_PARM); +#endif + (void) fclose(fp); + if (CurScreen(SP_PARM) != 0) { + code = OK; + } + } + } + returnCode(code); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +scr_init(const char *file) +{ + return NCURSES_SP_NAME(scr_init) (CURRENT_SCREEN, file); +} +#endif + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(scr_set) (NCURSES_SP_DCLx const char *file) +{ + int code = ERR; + + T((T_CALLED("scr_set(%p,%s)"), (void *) SP_PARM, _nc_visbuf(file))); + + if (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) { + code = OK; + } + } + returnCode(code); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +scr_set(const char *file) +{ + return NCURSES_SP_NAME(scr_set) (CURRENT_SCREEN, file); +} +#endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_scroll.c b/deps/ncurses-6.3/ncurses/base/lib_scroll.c similarity index 89% rename from deps/ncurses-5.9/ncurses/base/lib_scroll.c rename to deps/ncurses-6.3/ncurses/base/lib_scroll.c index fe4e808..ecc0ba5 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_scroll.c +++ b/deps/ncurses-6.3/ncurses/base/lib_scroll.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2011 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 * @@ -43,13 +44,13 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_scroll.c,v 1.28 2010/12/19 01:48:09 tom Exp $") +MODULE_ID("$Id: lib_scroll.c,v 1.32 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(void) _nc_scroll_window(WINDOW *win, int const n, - NCURSES_SIZE_T const top, - NCURSES_SIZE_T const bottom, + int const top, + int const bottom, NCURSES_CH_T blank) { int limit; @@ -77,11 +78,13 @@ _nc_scroll_window(WINDOW *win, * setup cost. So there is no point in trying to be excessively * clever -- esr. */ +#define BottomLimit(n) ((n) >= 0 && (n) >= top) +#define TopLimit(n) ((n) <= win->_maxy && (n) <= bottom) /* shift n lines downwards */ if (n < 0) { limit = top - n; - for (line = bottom; line >= limit && line >= 0; line--) { + for (line = bottom; line >= limit && BottomLimit(line); line--) { TR(TRACE_MOVE, ("...copying %d to %d", line + n, line)); memcpy(win->_line[line].text, win->_line[line + n].text, @@ -89,7 +92,7 @@ _nc_scroll_window(WINDOW *win, if_USE_SCROLL_HINTS(win->_line[line].oldindex = win->_line[line + n].oldindex); } - for (line = top; line < limit && line <= win->_maxy; line++) { + for (line = top; line < limit && TopLimit(line); line++) { TR(TRACE_MOVE, ("...filling %d", line)); for (j = 0; j <= win->_maxx; j++) win->_line[line].text[j] = blank; @@ -100,14 +103,14 @@ _nc_scroll_window(WINDOW *win, /* shift n lines upwards */ if (n > 0) { limit = bottom - n; - for (line = top; line <= limit && line <= win->_maxy; line++) { + for (line = top; line <= limit && TopLimit(line); line++) { memcpy(win->_line[line].text, win->_line[line + n].text, to_copy); if_USE_SCROLL_HINTS(win->_line[line].oldindex = win->_line[line + n].oldindex); } - for (line = bottom; line > limit && line >= 0; line--) { + for (line = bottom; line > limit && BottomLimit(line); line--) { for (j = 0; j <= win->_maxx; j++) win->_line[line].text[j] = blank; if_USE_SCROLL_HINTS(win->_line[line].oldindex = _NEWINDEX); diff --git a/deps/ncurses-5.9/ncurses/base/lib_scrollok.c b/deps/ncurses-6.3/ncurses/base/lib_scrollok.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_scrollok.c rename to deps/ncurses-6.3/ncurses/base/lib_scrollok.c index 6a698a3..c9462c3 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_scrollok.c +++ b/deps/ncurses-6.3/ncurses/base/lib_scrollok.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_scrollok.c,v 1.5 2009/10/24 22:35:38 tom Exp $") +MODULE_ID("$Id: lib_scrollok.c,v 1.6 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) scrollok(WINDOW *win, bool flag) diff --git a/deps/ncurses-5.9/ncurses/base/lib_scrreg.c b/deps/ncurses-6.3/ncurses/base/lib_scrreg.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_scrreg.c rename to deps/ncurses-6.3/ncurses/base/lib_scrreg.c index 546fbc1..5207f6f 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_scrreg.c +++ b/deps/ncurses-6.3/ncurses/base/lib_scrreg.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -40,7 +41,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_scrreg.c,v 1.11 2009/10/24 22:35:28 tom Exp $") +MODULE_ID("$Id: lib_scrreg.c,v 1.12 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wsetscrreg(WINDOW *win, int top, int bottom) diff --git a/deps/ncurses-5.9/ncurses/base/lib_set_term.c b/deps/ncurses-6.3/ncurses/base/lib_set_term.c similarity index 81% rename from deps/ncurses-5.9/ncurses/base/lib_set_term.c rename to deps/ncurses-6.3/ncurses/base/lib_set_term.c index df0a276..264fb98 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_set_term.c +++ b/deps/ncurses-6.3/ncurses/base/lib_set_term.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -43,11 +44,17 @@ #include <curses.priv.h> #include <tic.h> -#ifndef CUR -#define CUR SP_TERMTYPE +#if USE_GPM_SUPPORT +#ifdef HAVE_LIBDL +/* use dynamic loader to avoid linkage dependency */ +#include <dlfcn.h> +#endif #endif -MODULE_ID("$Id: lib_set_term.c,v 1.138 2010/12/20 00:42:20 tom Exp $") +#undef CUR +#define CUR SP_TERMTYPE + +MODULE_ID("$Id: lib_set_term.c,v 1.179 2021/05/08 21:48:34 tom Exp $") #ifdef USE_TERM_DRIVER #define MaxColors InfoOf(sp).maxcolors @@ -134,15 +141,14 @@ delink_screen(SCREEN *sp) NCURSES_EXPORT(void) delscreen(SCREEN *sp) { - int i; T((T_CALLED("delscreen(%p)"), (void *) sp)); _nc_lock_global(curses); if (delink_screen(sp)) { #ifdef USE_SP_RIPOFF - ripoff_t *rop; if (safe_ripoff_sp && safe_ripoff_sp != safe_ripoff_stack) { + ripoff_t *rop; for (rop = safe_ripoff_stack; rop != safe_ripoff_sp && (rop - safe_ripoff_stack) < N_RIPS; rop++) { @@ -159,7 +165,10 @@ delscreen(SCREEN *sp) (void) _nc_freewin(StdScreen(sp)); if (sp->_slk != 0) { + if (sp->_slk->ent != 0) { + int i; + for (i = 0; i < sp->_slk->labcnt; ++i) { FreeIfNeeded(sp->_slk->ent[i].ent_text); FreeIfNeeded(sp->_slk->ent[i].form_text); @@ -181,6 +190,7 @@ delscreen(SCREEN *sp) FreeIfNeeded(sp->_color_table); FreeIfNeeded(sp->_color_pairs); + FreeIfNeeded(sp->_oldnum_list); FreeIfNeeded(sp->oldhash); FreeIfNeeded(sp->newhash); FreeIfNeeded(sp->hashtab); @@ -188,19 +198,20 @@ delscreen(SCREEN *sp) FreeIfNeeded(sp->_acs_map); FreeIfNeeded(sp->_screen_acs_map); - /* - * If the associated output stream has been closed, we can discard the - * set-buffer. Limit the error check to EBADF, since fflush may fail - * for other reasons than trying to operate upon a closed stream. - */ - if (sp->_ofp != 0 - && sp->_setbuf != 0 - && fflush(sp->_ofp) != 0 - && errno == EBADF) { - free(sp->_setbuf); - } - + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx sp->_term); + FreeIfNeeded(sp->out_buffer); + if (_nc_find_prescr() == sp) { + _nc_forget_prescr(); + } +#if USE_GPM_SUPPORT +#ifdef HAVE_LIBDL + if (sp->_dlopen_gpm != 0) { + dlclose(sp->_dlopen_gpm); + sp->_dlopen_gpm = 0; + } +#endif +#endif /* USE_GPM_SUPPORT */ free(sp); /* @@ -217,6 +228,12 @@ delscreen(SCREEN *sp) COLOR_PAIRS = 0; #endif _nc_set_screen(0); +#if USE_WIDEC_SUPPORT + if (SP == 0) { + FreeIfNeeded(_nc_wacs); + _nc_wacs = 0; + } +#endif } } _nc_unlock_global(curses); @@ -253,16 +270,17 @@ no_mouse_wrap(SCREEN *sp GCC_UNUSED) } #if NCURSES_EXT_FUNCS && USE_COLORFGBG -static char * -extract_fgbg(char *src, int *result) +static const char * +extract_fgbg(const char *src, int *result) { - char *dst = 0; - long value = strtol(src, &dst, 0); + const char *dst = 0; + char *tmp = 0; + long value = strtol(src, &tmp, 0); - if (dst == 0) { + if ((dst = tmp) == 0) { dst = src; } else if (value >= 0) { - *result = value; + *result = (int) value; } while (*dst != 0 && *dst != ';') dst++; @@ -272,8 +290,8 @@ extract_fgbg(char *src, int *result) } #endif -#define ReturnScreenError() _nc_set_screen(0); \ - returnCode(ERR) +#define ReturnScreenError() do { _nc_set_screen(0); \ + returnCode(ERR); } while (0) /* OS-independent screen initializations */ NCURSES_EXPORT(int) @@ -284,12 +302,14 @@ NCURSES_SP_NAME(_nc_setupscreen) ( int slines, int scolumns, FILE *output, - bool filtered, + int filtered, int slk_format) { +#ifndef USE_TERM_DRIVER + static const TTY null_TTY; /* all zeros iff uninitialized */ +#endif char *env; int bottom_stolen = 0; - ripoff_t *rop; SCREEN *sp; #ifndef USE_TERM_DRIVER bool support_cookies = USE_XMC_SUPPORT; @@ -306,11 +326,17 @@ NCURSES_SP_NAME(_nc_setupscreen) ( if (!sp) { sp = _nc_alloc_screen_sp(); + T(("_nc_alloc_screen_sp %p", (void *) sp)); *spp = sp; } - if (!sp - || ((sp->_acs_map = typeCalloc(chtype, ACS_LEN)) == 0) - || ((sp->_screen_acs_map = typeCalloc(bool, ACS_LEN)) == 0)) { + if (sp == NULL) { + ReturnScreenError(); + } + if ((sp->_acs_map = typeCalloc(chtype, ACS_LEN)) == NULL) { + ReturnScreenError(); + } + if ((sp->_screen_acs_map = typeCalloc(bool, ACS_LEN)) == NULL) { + free(sp->_acs_map); ReturnScreenError(); } @@ -334,8 +360,9 @@ 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)) == 0) { returnCode(ERR); + } #endif /* @@ -362,15 +389,21 @@ NCURSES_SP_NAME(_nc_setupscreen) ( slines = 1; SET_LINES(slines); #ifdef USE_TERM_DRIVER - CallDriver(sp, setfilter); + CallDriver(sp, td_setfilter); #else - clear_screen = 0; - cursor_down = parm_down_cursor = 0; - cursor_address = 0; - cursor_up = parm_up_cursor = 0; - row_address = 0; + /* *INDENT-EQLS* */ + clear_screen = ABSENT_STRING; + cursor_address = ABSENT_STRING; + cursor_down = ABSENT_STRING; + cursor_up = ABSENT_STRING; + parm_down_cursor = ABSENT_STRING; + parm_up_cursor = ABSENT_STRING; + row_address = ABSENT_STRING; + cursor_home = carriage_return; + + if (back_color_erase) + clr_eos = ABSENT_STRING; - cursor_home = carriage_return; #endif T(("filter screensize %dx%d", slines, scolumns)); } @@ -379,11 +412,27 @@ NCURSES_SP_NAME(_nc_setupscreen) ( fflush(output); setmode(output, O_BINARY); #endif - NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_ARGx output, TRUE); +#if defined(EXP_WIN32_DRIVER) + T(("setting output mode to binary")); + fflush(output); + _setmode(fileno(output), _O_BINARY); +#endif sp->_lines = (NCURSES_SIZE_T) slines; sp->_lines_avail = (NCURSES_SIZE_T) slines; sp->_columns = (NCURSES_SIZE_T) scolumns; + + fflush(output); + sp->_ofd = output ? fileno(output) : -1; sp->_ofp = output; +#if defined(EXP_WIN32_DRIVER) + 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) + sp->out_limit = 0; + sp->out_inuse = 0; + SP_PRE_INIT(sp); SetNoPadding(sp); @@ -414,8 +463,8 @@ NCURSES_SP_NAME(_nc_setupscreen) ( sp->_default_fg = COLOR_WHITE; sp->_default_bg = COLOR_BLACK; #else - sp->_default_fg = C_MASK; - sp->_default_bg = C_MASK; + sp->_default_fg = COLOR_DEFAULT; + sp->_default_bg = COLOR_DEFAULT; #endif /* @@ -427,9 +476,9 @@ NCURSES_SP_NAME(_nc_setupscreen) ( char sep1, sep2; int count = sscanf(env, "%d%c%d%c", &fg, &sep1, &bg, &sep2); if (count >= 1) { - sp->_default_fg = ((fg >= 0 && fg < MaxColors) ? fg : C_MASK); + sp->_default_fg = ((fg >= 0 && fg < MaxColors) ? fg : COLOR_DEFAULT); if (count >= 3) { - sp->_default_bg = ((bg >= 0 && bg < MaxColors) ? bg : C_MASK); + sp->_default_bg = ((bg >= 0 && bg < MaxColors) ? bg : COLOR_DEFAULT); } TR(TRACE_CHARPUT | TRACE_MOVE, ("from environment assumed fg=%d, bg=%d", @@ -445,18 +494,18 @@ NCURSES_SP_NAME(_nc_setupscreen) ( * decide later if it is worth having default attributes as well. */ if (getenv("COLORFGBG") != 0) { - char *p = getenv("COLORFGBG"); + const char *p = getenv("COLORFGBG"); TR(TRACE_CHARPUT | TRACE_MOVE, ("decoding COLORFGBG %s", p)); p = extract_fgbg(p, &(sp->_default_fg)); p = extract_fgbg(p, &(sp->_default_bg)); if (*p) /* assume rxvt was compiled with xpm support */ - p = extract_fgbg(p, &(sp->_default_bg)); + extract_fgbg(p, &(sp->_default_bg)); TR(TRACE_CHARPUT | TRACE_MOVE, ("decoded fg=%d, bg=%d", sp->_default_fg, sp->_default_bg)); if (sp->_default_fg >= MaxColors) { if (set_a_foreground != ABSENT_STRING && !strcmp(set_a_foreground, "\033[3%p1%dm")) { - set_a_foreground = "\033[3%?%p1%{8}%>%t9%e%p1%d%;m"; + set_a_foreground = strdup("\033[3%?%p1%{8}%>%t9%e%p1%d%;m"); } else { sp->_default_fg %= MaxColors; } @@ -464,7 +513,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( if (sp->_default_bg >= MaxColors) { if (set_a_background != ABSENT_STRING && !strcmp(set_a_background, "\033[4%p1%dm")) { - set_a_background = "\033[4%?%p1%{8}%>%t9%e%p1%d%;m"; + set_a_background = strdup("\033[4%?%p1%{8}%>%t9%e%p1%d%;m"); } else { sp->_default_bg %= MaxColors; } @@ -510,16 +559,7 @@ NCURSES_SP_NAME(_nc_setupscreen) ( if (magic_cookie_glitch > 0) { /* tvi, wyse */ - sp->_xmc_triggers = sp->_ok_attributes & ( - A_STANDOUT | - A_UNDERLINE | - A_REVERSE | - A_BLINK | - A_DIM | - A_BOLD | - A_INVIS | - A_PROTECT - ); + sp->_xmc_triggers = sp->_ok_attributes & XMC_CONFLICT; #if 0 /* * We "should" treat colors as an attribute. The wyse350 (and its @@ -584,9 +624,15 @@ NCURSES_SP_NAME(_nc_setupscreen) ( NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_ARG); #if USE_WIDEC_SUPPORT - _nc_init_wacs(); + sp->_screen_unicode = _nc_unicode_locale(); + if (_nc_wacs == 0) { + _nc_init_wacs(); + } + if (_nc_wacs == 0) { + ReturnScreenError(); + } - sp->_screen_acs_fix = (_nc_unicode_locale() + sp->_screen_acs_fix = (sp->_screen_unicode && _nc_locale_breaks_acs(sp->_term)); #endif env = _nc_get_locale(); @@ -619,15 +665,28 @@ NCURSES_SP_NAME(_nc_setupscreen) ( #endif #if USE_SIZECHANGE sp->_resize = NCURSES_SP_NAME(resizeterm); + sp->_ungetch = safe_ungetch; #endif NewScreen(sp)->_clear = TRUE; CurScreen(sp)->_clear = FALSE; - NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_ARG); - NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_ARG); + /* + * 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 && + !memcmp(&cur_term->Ottyb, &null_TTY, sizeof(TTY))) +#endif + { + NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_ARG); + NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_ARG); + } if (safe_ripoff_sp && safe_ripoff_sp != safe_ripoff_stack) { + ripoff_t *rop; + for (rop = safe_ripoff_stack; rop != safe_ripoff_sp && (rop - safe_ripoff_stack) < N_RIPS; rop++) { @@ -637,6 +696,9 @@ NCURSES_SP_NAME(_nc_setupscreen) ( formats (4-4 or 3-2-3) for which there may be some hardware support. */ if (rop->hook == _nc_slk_initialize) { + if (!TerminalOf(sp)) { + continue; + } if (!(NumLabels <= 0 || !SLK_STDFMT(slk_format))) { continue; } @@ -695,7 +757,7 @@ NCURSES_EXPORT(int) _nc_setupscreen(int slines GCC_UNUSED, int scolumns GCC_UNUSED, FILE *output, - bool filtered, + int filtered, int slk_format) { SCREEN *sp = 0; @@ -721,9 +783,12 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx int (*init) (WINDOW *, int)) { int code = ERR; + TR_FUNC_BFR(1); START_TRACE(); - T((T_CALLED("ripoffline(%p,%d,%p)"), (void *) SP_PARM, line, init)); + T((T_CALLED("ripoffline(%p,%d,%s)"), + (void *) SP_PARM, line, + TR_FUNC_ARG(0, init))); #if NCURSES_SP_FUNCS if (SP_PARM != 0 && SP_PARM->_prescreen) @@ -732,12 +797,15 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx if (line == 0) { code = OK; } else { - if (safe_ripoff_sp == 0) + if (safe_ripoff_sp == 0) { safe_ripoff_sp = safe_ripoff_stack; + } if (safe_ripoff_sp < safe_ripoff_stack + N_RIPS) { safe_ripoff_sp->line = line; safe_ripoff_sp->hook = init; (safe_ripoff_sp)++; + T(("ripped-off %d:%d chunks", + (int) (safe_ripoff_sp - safe_ripoff_stack), N_RIPS)); code = OK; } } @@ -750,7 +818,12 @@ NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_DCLx NCURSES_EXPORT(int) _nc_ripoffline(int line, int (*init) (WINDOW *, int)) { - return NCURSES_SP_NAME(_nc_ripoffline) (CURRENT_SCREEN_PRE, line, init); + int rc; + _nc_lock_global(prescreen); + START_TRACE(); + rc = NCURSES_SP_NAME(_nc_ripoffline) (CURRENT_SCREEN_PRE, line, init); + _nc_unlock_global(prescreen); + return rc; } #endif @@ -759,6 +832,7 @@ NCURSES_SP_NAME(ripoffline) (NCURSES_SP_DCLx int line, int (*init) (WINDOW *, int)) { + START_TRACE(); return NCURSES_SP_NAME(_nc_ripoffline) (NCURSES_SP_ARGx (line < 0) ? -1 : 1, init); @@ -768,6 +842,11 @@ NCURSES_SP_NAME(ripoffline) (NCURSES_SP_DCLx NCURSES_EXPORT(int) ripoffline(int line, int (*init) (WINDOW *, int)) { - return NCURSES_SP_NAME(ripoffline) (CURRENT_SCREEN_PRE, line, init); + int rc; + _nc_lock_global(prescreen); + START_TRACE(); + rc = NCURSES_SP_NAME(ripoffline) (CURRENT_SCREEN_PRE, line, init); + _nc_unlock_global(prescreen); + return rc; } #endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_slk.c b/deps/ncurses-6.3/ncurses/base/lib_slk.c similarity index 97% rename from deps/ncurses-5.9/ncurses/base/lib_slk.c rename to deps/ncurses-6.3/ncurses/base/lib_slk.c index 84f17ae..f4b3ce6 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slk.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slk.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2011 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 * @@ -47,7 +48,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_slk.c,v 1.48 2011/03/05 21:21:52 tom Exp $") +MODULE_ID("$Id: lib_slk.c,v 1.49 2020/02/02 23:34:34 tom Exp $") #ifdef USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkatr_set.c b/deps/ncurses-6.3/ncurses/base/lib_slkatr_set.c similarity index 84% rename from deps/ncurses-5.9/ncurses/base/lib_slkatr_set.c rename to deps/ncurses-6.3/ncurses/base/lib_slkatr_set.c index bd5f539..7c5a23a 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkatr_set.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkatr_set.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -38,30 +39,31 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slkatr_set.c,v 1.14 2009/10/24 22:47:03 tom Exp $") +MODULE_ID("$Id: lib_slkatr_set.c,v 1.17 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attr_set) (NCURSES_SP_DCLx const attr_t attr, - short color_pair_number, + NCURSES_PAIRS_T pair_arg, void *opts) { int code = ERR; + int color_pair = pair_arg; T((T_CALLED("slk_attr_set(%p,%s,%d)"), (void *) SP_PARM, _traceattr(attr), - color_pair_number)); + color_pair)); + set_extended_pair(opts, color_pair); if (SP_PARM != 0 && SP_PARM->_slk != 0 - && !opts - && color_pair_number >= 0 - && color_pair_number < SP_PARM->_pair_limit) { + && color_pair >= 0 + && color_pair < SP_PARM->_pair_limit) { TR(TRACE_ATTRS, ("... current %s", _tracech_t(CHREF(SP_PARM->_slk->attr)))); SetAttr(SP_PARM->_slk->attr, attr); - if (color_pair_number > 0) { - SetPair(SP_PARM->_slk->attr, color_pair_number); + if (color_pair > 0) { + SetPair(SP_PARM->_slk->attr, color_pair); } TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(SP_PARM->_slk->attr)))); code = OK; @@ -71,9 +73,9 @@ NCURSES_SP_NAME(slk_attr_set) (NCURSES_SP_DCLx #if NCURSES_SP_FUNCS NCURSES_EXPORT(int) -slk_attr_set(const attr_t attr, short color_pair_number, void *opts) +slk_attr_set(const attr_t attr, NCURSES_COLOR_T pair_arg, void *opts) { return NCURSES_SP_NAME(slk_attr_set) (CURRENT_SCREEN, attr, - color_pair_number, opts); + pair_arg, opts); } #endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkatrof.c b/deps/ncurses-6.3/ncurses/base/lib_slkatrof.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_slkatrof.c rename to deps/ncurses-6.3/ncurses/base/lib_slkatrof.c index bb980ab..2d53ab2 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkatrof.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkatrof.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2005,2009 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 * @@ -38,7 +39,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slkatrof.c,v 1.11 2009/10/24 22:12:21 tom Exp $") +MODULE_ID("$Id: lib_slkatrof.c,v 1.12 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attroff) (NCURSES_SP_DCLx const chtype attr) diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkatron.c b/deps/ncurses-6.3/ncurses/base/lib_slkatron.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_slkatron.c rename to deps/ncurses-6.3/ncurses/base/lib_slkatron.c index bc2fb33..accc2f2 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkatron.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkatron.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -38,7 +39,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slkatron.c,v 1.12 2010/03/31 23:38:02 tom Exp $") +MODULE_ID("$Id: lib_slkatron.c,v 1.13 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attron) (NCURSES_SP_DCLx const chtype attr) diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkatrset.c b/deps/ncurses-6.3/ncurses/base/lib_slkatrset.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_slkatrset.c rename to deps/ncurses-6.3/ncurses/base/lib_slkatrset.c index 544b8d0..11fa7e6 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkatrset.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkatrset.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2005,2009 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 * @@ -38,7 +39,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slkatrset.c,v 1.10 2009/10/24 22:12:21 tom Exp $") +MODULE_ID("$Id: lib_slkatrset.c,v 1.11 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_attrset) (NCURSES_SP_DCLx const chtype attr) diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkattr.c b/deps/ncurses-6.3/ncurses/base/lib_slkattr.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_slkattr.c rename to deps/ncurses-6.3/ncurses/base/lib_slkattr.c index bec11e8..af49f3b 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkattr.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkattr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -38,7 +39,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slkattr.c,v 1.11 2010/12/20 01:41:25 tom Exp $") +MODULE_ID("$Id: lib_slkattr.c,v 1.12 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(attr_t) NCURSES_SP_NAME(slk_attr) (NCURSES_SP_DCL0) diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkclear.c b/deps/ncurses-6.3/ncurses/base/lib_slkclear.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/lib_slkclear.c rename to deps/ncurses-6.3/ncurses/base/lib_slkclear.c index 264c8c4..10531e4 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkclear.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkclear.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2007,2009 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 * @@ -40,7 +41,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slkclear.c,v 1.14 2009/11/07 16:27:05 tom Exp $") +MODULE_ID("$Id: lib_slkclear.c,v 1.15 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_clear) (NCURSES_SP_DCL0) diff --git a/deps/ncurses-6.3/ncurses/base/lib_slkcolor.c b/deps/ncurses-6.3/ncurses/base/lib_slkcolor.c new file mode 100644 index 0000000..00d1eaa --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/lib_slkcolor.c @@ -0,0 +1,91 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-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, 1998,2009 * + * and: Thomas E. Dickey 2005-on * + ****************************************************************************/ + +/* + * lib_slkcolor.c + * Soft key routines. + * Set the label's color + */ +#include <curses.priv.h> + +MODULE_ID("$Id: lib_slkcolor.c,v 1.20 2020/02/02 23:34:34 tom Exp $") + +static int +_nc_slk_color(SCREEN *sp, int pair_arg) +{ + int code = ERR; + + T((T_CALLED("slk_color(%p,%d)"), (void *) sp, pair_arg)); + + if (sp != 0 + && sp->_slk != 0 + && pair_arg >= 0 + && pair_arg < sp->_pair_limit) { + TR(TRACE_ATTRS, ("... current is %s", _tracech_t(CHREF(sp->_slk->attr)))); + SetPair(sp->_slk->attr, pair_arg); + TR(TRACE_ATTRS, ("new attribute is %s", _tracech_t(CHREF(sp->_slk->attr)))); + code = OK; + } + returnCode(code); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(slk_color) (NCURSES_SP_DCLx NCURSES_PAIRS_T pair_arg) +{ + return _nc_slk_color(SP_PARM, pair_arg); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +slk_color(NCURSES_PAIRS_T pair_arg) +{ + return NCURSES_SP_NAME(slk_color) (CURRENT_SCREEN, pair_arg); +} +#endif + +#if NCURSES_EXT_COLORS +NCURSES_EXPORT(int) +NCURSES_SP_NAME(extended_slk_color) (NCURSES_SP_DCLx int pair_arg) +{ + return _nc_slk_color(SP_PARM, pair_arg); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +extended_slk_color(int pair_arg) +{ + return NCURSES_SP_NAME(extended_slk_color) (CURRENT_SCREEN, pair_arg); +} +#endif +#endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkinit.c b/deps/ncurses-6.3/ncurses/base/lib_slkinit.c similarity index 89% rename from deps/ncurses-5.9/ncurses/base/lib_slkinit.c rename to deps/ncurses-6.3/ncurses/base/lib_slkinit.c index 9cbdfea..e1602ab 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkinit.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkinit.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,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 * @@ -40,7 +41,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slkinit.c,v 1.13 2009/10/31 00:10:46 tom Exp $") +MODULE_ID("$Id: lib_slkinit.c,v 1.15 2020/02/02 23:34:34 tom Exp $") #ifdef USE_SP_RIPOFF #define SoftkeyFormat SP_PARM->slk_format @@ -75,6 +76,11 @@ NCURSES_SP_NAME(slk_init) (NCURSES_SP_DCLx int format) NCURSES_EXPORT(int) slk_init(int format) { - return NCURSES_SP_NAME(slk_init) (CURRENT_SCREEN_PRE, format); + int rc; + _nc_lock_global(prescreen); + START_TRACE(); + rc = NCURSES_SP_NAME(slk_init) (CURRENT_SCREEN_PRE, format); + _nc_unlock_global(prescreen); + return rc; } #endif diff --git a/deps/ncurses-5.9/ncurses/base/lib_slklab.c b/deps/ncurses-6.3/ncurses/base/lib_slklab.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_slklab.c rename to deps/ncurses-6.3/ncurses/base/lib_slklab.c index d0b2a23..894ff26 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slklab.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slklab.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2003,2009 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 * @@ -40,7 +41,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slklab.c,v 1.10 2009/10/24 22:12:21 tom Exp $") +MODULE_ID("$Id: lib_slklab.c,v 1.11 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(char *) NCURSES_SP_NAME(slk_label) (NCURSES_SP_DCLx int n) diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkrefr.c b/deps/ncurses-6.3/ncurses/base/lib_slkrefr.c similarity index 87% rename from deps/ncurses-5.9/ncurses/base/lib_slkrefr.c rename to deps/ncurses-6.3/ncurses/base/lib_slkrefr.c index b06bf8d..7a40624 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkrefr.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkrefr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2013,2014 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 * @@ -43,7 +44,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_slkrefr.c,v 1.26 2010/05/01 19:17:28 tom Exp $") +MODULE_ID("$Id: lib_slkrefr.c,v 1.32 2021/09/04 10:54:35 tom Exp $") #ifdef USE_TERM_DRIVER #define NumLabels InfoOf(SP_PARM).numlabels @@ -97,25 +98,25 @@ slk_intern_refresh(SCREEN *sp) if (slk->ent[i].visible) { if (numlab > 0 && SLK_STDFMT(fmt)) { #ifdef USE_TERM_DRIVER - CallDriver_2(sp, hwlabel, i + 1, slk->ent[i].form_text); + CallDriver_2(sp, td_hwlabel, i + 1, slk->ent[i].form_text); #else if (i < num_labels) { - TPUTS_TRACE("plab_norm"); - putp(TPARM_2(plab_norm, i + 1, slk->ent[i].form_text)); + NCURSES_PUTP2("plab_norm", + TPARM_2(plab_norm, + i + 1, + slk->ent[i].form_text)); } #endif } else { if (fmt == 4) slk_paint_info(slk->win); wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].ent_x); - if (sp->_slk) { - (void) wattrset(slk->win, AttrOf(sp->_slk->attr)); - } + (void) wattrset(slk->win, (int) AttrOf(slk->attr)); waddstr(slk->win, slk->ent[i].form_text); - /* if we simulate SLK's, it's looking much more + /* if we simulate SLK's, it is looking much more natural to use the current ATTRIBUTE also for the label window */ - (void) wattrset(slk->win, WINDOW_ATTRS(StdScreen(sp))); + (void) wattrset(slk->win, (int) WINDOW_ATTRS(StdScreen(sp))); } } slk->ent[i].dirty = FALSE; @@ -125,14 +126,12 @@ slk_intern_refresh(SCREEN *sp) if (numlab > 0) { #ifdef USE_TERM_DRIVER - CallDriver_1(sp, hwlabelOnOff, slk->hidden ? FALSE : TRUE); + CallDriver_1(sp, td_hwlabelOnOff, slk->hidden ? FALSE : TRUE); #else if (slk->hidden) { - TPUTS_TRACE("label_off"); - putp(label_off); + NCURSES_PUTP2("label_off", label_off); } else { - TPUTS_TRACE("label_on"); - putp(label_on); + NCURSES_PUTP2("label_on", label_on); } #endif } diff --git a/deps/ncurses-5.9/ncurses/base/lib_slkset.c b/deps/ncurses-6.3/ncurses/base/lib_slkset.c similarity index 90% rename from deps/ncurses-5.9/ncurses/base/lib_slkset.c rename to deps/ncurses-6.3/ncurses/base/lib_slkset.c index 91483f1..3e777f1 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slkset.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slkset.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2011,2012 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 * @@ -44,13 +45,13 @@ #endif #endif -MODULE_ID("$Id: lib_slkset.c,v 1.21 2010/12/25 23:43:58 tom Exp $") +MODULE_ID("$Id: lib_slkset.c,v 1.26 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format) { SLK *slk; - int offset; + int offset = 0; int numchrs; int numcols; int limit; @@ -89,9 +90,9 @@ NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format) mbrtowc(&wc, p, need, &state); if (!iswprint((wint_t) wc)) break; - if (wcwidth(wc) + numcols > limit) + if (_nc_wacs_width(wc) + numcols > limit) break; - numcols += wcwidth(wc); + numcols += _nc_wacs_width(wc); p += need; } numchrs = (int) (p - str); @@ -111,13 +112,12 @@ NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format) slk->ent[i].ent_text[numchrs] = '\0'; if ((slk->ent[i].form_text = (char *) _nc_doalloc(slk->ent[i].form_text, - (unsigned) (limit + - numchrs + 1)) + (size_t) (limit + + numchrs + 1)) ) == 0) returnCode(ERR); switch (format) { - default: case 0: /* left-justified */ offset = 0; break; @@ -131,16 +131,16 @@ NCURSES_SP_NAME(slk_set) (NCURSES_SP_DCLx int i, const char *astr, int format) if (offset <= 0) offset = 0; else - memset(slk->ent[i].form_text, ' ', (unsigned) offset); + memset(slk->ent[i].form_text, ' ', (size_t) offset); memcpy(slk->ent[i].form_text + offset, slk->ent[i].ent_text, - (unsigned) numchrs); + (size_t) numchrs); if (offset < limit) { memset(slk->ent[i].form_text + offset + numchrs, ' ', - (unsigned) (limit - (offset + numcols))); + (size_t) (limit - (offset + numcols))); } slk->ent[i].form_text[numchrs - numcols + limit] = 0; diff --git a/deps/ncurses-5.9/ncurses/base/lib_slktouch.c b/deps/ncurses-6.3/ncurses/base/lib_slktouch.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_slktouch.c rename to deps/ncurses-6.3/ncurses/base/lib_slktouch.c index ba77fd2..6696a25 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_slktouch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_slktouch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -38,7 +39,7 @@ */ #include <curses.priv.h> -MODULE_ID("$Id: lib_slktouch.c,v 1.8 2009/10/24 22:12:21 tom Exp $") +MODULE_ID("$Id: lib_slktouch.c,v 1.9 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_touch) (NCURSES_SP_DCL0) diff --git a/deps/ncurses-5.9/ncurses/base/lib_touch.c b/deps/ncurses-6.3/ncurses/base/lib_touch.c similarity index 87% rename from deps/ncurses-5.9/ncurses/base/lib_touch.c rename to deps/ncurses-6.3/ncurses/base/lib_touch.c index 8023c70..d8d59e1 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_touch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_touch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -43,16 +44,19 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_touch.c,v 1.11 2010/12/19 01:22:58 tom Exp $") +MODULE_ID("$Id: lib_touch.c,v 1.16 2020/02/02 23:34:34 tom Exp $") + +#undef is_linetouched NCURSES_EXPORT(bool) is_linetouched(WINDOW *win, int line) { T((T_CALLED("is_linetouched(%p,%d)"), (void *) win, line)); - /* XSI doesn't define any error */ - if (!win || (line > win->_maxy) || (line < 0)) - returnCode((bool) ERR); + /* XSI doesn't define any error, and gcc ultimately made it impossible */ + if (!win || (line > win->_maxy) || (line < 0)) { + returnCode(FALSE); + } returnCode(win->_line[line].firstchar != _NOCHANGE ? TRUE : FALSE); } @@ -60,14 +64,15 @@ is_linetouched(WINDOW *win, int line) NCURSES_EXPORT(bool) is_wintouched(WINDOW *win) { - int i; - T((T_CALLED("is_wintouched(%p)"), (void *) win)); - if (win) + if (win) { + int i; + for (i = 0; i <= win->_maxy; i++) if (win->_line[i].firstchar != _NOCHANGE) returnCode(TRUE); + } returnCode(FALSE); } @@ -84,7 +89,7 @@ wtouchln(WINDOW *win, int y, int n, int changed) for (i = y; i < y + n; i++) { if (i > win->_maxy) break; - win->_line[i].firstchar = changed ? 0 : _NOCHANGE; + win->_line[i].firstchar = (NCURSES_SIZE_T) (changed ? 0 : _NOCHANGE); win->_line[i].lastchar = (NCURSES_SIZE_T) (changed ? win->_maxx : _NOCHANGE); diff --git a/deps/ncurses-5.9/ncurses/base/lib_ungetch.c b/deps/ncurses-6.3/ncurses/base/lib_ungetch.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_ungetch.c rename to deps/ncurses-6.3/ncurses/base/lib_ungetch.c index 63a14cf..fcbe6f4 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_ungetch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_ungetch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2011,2012 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_ungetch.c,v 1.14 2009/10/24 22:12:21 tom Exp $") +MODULE_ID("$Id: lib_ungetch.c,v 1.17 2020/02/02 23:34:34 tom Exp $") #include <fifo_defs.h> @@ -64,13 +65,14 @@ safe_ungetch(SCREEN *sp, int ch) T((T_CALLED("ungetch(%p,%s)"), (void *) sp, _nc_tracechar(sp, ch))); - if (tail != -1) { - if (head == -1) { + if (sp != 0 && tail >= 0) { + if (head < 0) { head = 0; t_inc(); peek = tail; /* no raw keys */ - } else + } else { h_dec(); + } sp->_fifo[head] = ch; T(("ungetch %s ok", _nc_tracechar(sp, ch))); diff --git a/deps/ncurses-5.9/ncurses/base/lib_vline.c b/deps/ncurses-6.3/ncurses/base/lib_vline.c similarity index 81% rename from deps/ncurses-5.9/ncurses/base/lib_vline.c rename to deps/ncurses-6.3/ncurses/base/lib_vline.c index 2f3148e..ae4af62 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_vline.c +++ b/deps/ncurses-6.3/ncurses/base/lib_vline.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -29,6 +30,8 @@ /**************************************************************************** * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Sven Verdoolaege 2001 * ****************************************************************************/ /* @@ -40,22 +43,21 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_vline.c,v 1.12 2010/12/19 01:22:58 tom Exp $") +MODULE_ID("$Id: lib_vline.c,v 1.15 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wvline(WINDOW *win, chtype ch, int n) { int code = ERR; - int row, col; - int end; T((T_CALLED("wvline(%p,%s,%d)"), (void *) win, _tracechtype(ch), n)); if (win) { NCURSES_CH_T wch; - row = win->_cury; - col = win->_curx; - end = row + n - 1; + int row = win->_cury; + int col = win->_curx; + int end = row + n - 1; + if (end > win->_maxy) end = win->_maxy; @@ -67,6 +69,14 @@ wvline(WINDOW *win, chtype ch, int n) while (end >= row) { struct ldat *line = &(win->_line[end]); +#if USE_WIDEC_SUPPORT + if (col > 0 && isWidecExt(line->text[col])) { + SetChar2(line->text[col - 1], ' '); + } + if (col < win->_maxx && isWidecExt(line->text[col + 1])) { + SetChar2(line->text[col + 1], ' '); + } +#endif line->text[col] = wch; CHANGED_CELL(line, col); end--; diff --git a/deps/ncurses-5.9/ncurses/base/lib_wattroff.c b/deps/ncurses-6.3/ncurses/base/lib_wattroff.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_wattroff.c rename to deps/ncurses-6.3/ncurses/base/lib_wattroff.c index fff0b39..eac07f0 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_wattroff.c +++ b/deps/ncurses-6.3/ncurses/base/lib_wattroff.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2006,2009 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_wattroff.c,v 1.10 2009/10/24 22:36:08 tom Exp $") +MODULE_ID("$Id: lib_wattroff.c,v 1.11 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wattr_off(WINDOW *win, attr_t at, void *opts GCC_UNUSED) diff --git a/deps/ncurses-5.9/ncurses/base/lib_wattron.c b/deps/ncurses-6.3/ncurses/base/lib_wattron.c similarity index 93% rename from deps/ncurses-5.9/ncurses/base/lib_wattron.c rename to deps/ncurses-6.3/ncurses/base/lib_wattron.c index 3806285..c589f10 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_wattron.c +++ b/deps/ncurses-6.3/ncurses/base/lib_wattron.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_wattron.c,v 1.11 2010/03/31 23:38:02 tom Exp $") +MODULE_ID("$Id: lib_wattron.c,v 1.12 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wattr_on(WINDOW *win, attr_t at, void *opts GCC_UNUSED) diff --git a/deps/ncurses-5.9/ncurses/base/lib_winch.c b/deps/ncurses-6.3/ncurses/base/lib_winch.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/lib_winch.c rename to deps/ncurses-6.3/ncurses/base/lib_winch.c index 7e75f85..91253d1 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_winch.c +++ b/deps/ncurses-6.3/ncurses/base/lib_winch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_winch.c,v 1.8 2010/12/19 01:22:58 tom Exp $") +MODULE_ID("$Id: lib_winch.c,v 1.9 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(chtype) winch(WINDOW *win) diff --git a/deps/ncurses-5.9/ncurses/base/lib_window.c b/deps/ncurses-6.3/ncurses/base/lib_window.c similarity index 96% rename from deps/ncurses-5.9/ncurses/base/lib_window.c rename to deps/ncurses-6.3/ncurses/base/lib_window.c index 4baa369..7222bfe 100644 --- a/deps/ncurses-5.9/ncurses/base/lib_window.c +++ b/deps/ncurses-6.3/ncurses/base/lib_window.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2016 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_window.c,v 1.29 2010/12/19 01:47:22 tom Exp $") +MODULE_ID("$Id: lib_window.c,v 1.31 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(void) _nc_synchook(WINDOW *win) @@ -56,7 +57,6 @@ mvderwin(WINDOW *win, int y, int x) /* move a derived window */ { WINDOW *orig; - int i; int rc = ERR; T((T_CALLED("mvderwin(%p,%d,%d)"), (void *) win, y, x)); @@ -66,6 +66,8 @@ mvderwin(WINDOW *win, int y, int x) && (x >= 0 && y >= 0) && (x + getmaxx(win) <= getmaxx(orig)) && (y + getmaxy(win) <= getmaxy(orig))) { + int i; + wsyncup(win); win->_parx = x; win->_pary = y; @@ -177,8 +179,6 @@ dupwin(WINDOW *win) /* make an exact duplicate of the given window */ { WINDOW *nwin = 0; - size_t linesize; - int i; T((T_CALLED("dupwin(%p)"), (void *) win)); @@ -200,6 +200,8 @@ dupwin(WINDOW *win) } if (nwin != 0) { + int i; + size_t linesize; nwin->_curx = win->_curx; nwin->_cury = win->_cury; diff --git a/deps/ncurses-5.9/ncurses/base/nc_panel.c b/deps/ncurses-6.3/ncurses/base/nc_panel.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/nc_panel.c rename to deps/ncurses-6.3/ncurses/base/nc_panel.c index 69b10bc..002f118 100644 --- a/deps/ncurses-5.9/ncurses/base/nc_panel.c +++ b/deps/ncurses-6.3/ncurses/base/nc_panel.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2000,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2000,2009 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 * @@ -32,7 +33,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: nc_panel.c,v 1.5 2009/04/11 21:05:10 tom Exp $") +MODULE_ID("$Id: nc_panel.c,v 1.6 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(struct panelhook *) NCURSES_SP_NAME(_nc_panelhook) (NCURSES_SP_DCL0) diff --git a/deps/ncurses-6.3/ncurses/base/new_pair.c b/deps/ncurses-6.3/ncurses/base/new_pair.c new file mode 100644 index 0000000..70866c6 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/base/new_pair.c @@ -0,0 +1,393 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 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: Thomas E. Dickey * + ****************************************************************************/ + +/* new_pair.c + * + * New color-pair functions, alloc_pair and free_pair + */ + +#define NEW_PAIR_INTERNAL 1 +#include <curses.priv.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +#ifdef USE_TERM_DRIVER +#define MaxColors InfoOf(SP_PARM).maxcolors +#else +#define MaxColors max_colors +#endif + +#if NCURSES_EXT_COLORS + +/* fix redefinition versys tic.h */ +#undef entry +#define entry my_entry +#undef ENTRY +#define ENTRY my_ENTRY + +#include <search.h> + +#endif + +MODULE_ID("$Id: new_pair.c,v 1.23 2021/08/16 22:11:26 tom Exp $") + +#if NCURSES_EXT_COLORS + +#ifdef NEW_PAIR_DEBUG + +static int +prev_len(SCREEN *sp, int pair) +{ + int result = 1; + int base = pair; + colorpair_t *list = sp->_color_pairs; + while (list[pair].prev != base) { + result++; + pair = list[pair].prev; + } + return result; +} + +static int +next_len(SCREEN *sp, int pair) +{ + int result = 1; + int base = pair; + colorpair_t *list = sp->_color_pairs; + while (list[pair].next != base) { + result++; + pair = list[pair].next; + } + return result; +} + +/* + * Trace the contents of LRU color-pairs. + */ +static void +dumpit(SCREEN *sp, int pair, const char *tag) +{ + colorpair_t *list = sp->_color_pairs; + char bigbuf[256 * 20]; + char *p = bigbuf; + int n; + size_t have = sizeof(bigbuf); + + _nc_STRCPY(p, tag, have); + for (n = 0; n < sp->_pair_alloc; ++n) { + if (list[n].mode != cpFREE) { + p += strlen(p); + if ((size_t) (p - bigbuf) + 50 > have) + break; + _nc_SPRINTF(p, _nc_SLIMIT(have - (p - bigbuf)) + " %d%c(%d,%d)", + n, n == pair ? '@' : ':', list[n].next, list[n].prev); + } + } + T(("(%d/%d) %ld - %s", + next_len(sp, 0), + prev_len(sp, 0), + strlen(bigbuf), bigbuf)); + + if (next_len(sp, 0) != prev_len(sp, 0)) { + endwin(); + ExitProgram(EXIT_FAILURE); + } +} +#else +#define dumpit(sp, pair, tag) /* nothing */ +#endif + +static int +compare_data(const void *a, const void *b) +{ + const colorpair_t *p = (const colorpair_t *) a; + const colorpair_t *q = (const colorpair_t *) b; + return ((p->fg == q->fg) + ? (p->bg - q->bg) + : (p->fg - q->fg)); +} + +static int +_nc_find_color_pair(SCREEN *sp, int fg, int bg) +{ + colorpair_t find; + int result = -1; + + find.fg = fg; + find.bg = bg; + if (sp != 0) { + void *pp; + if ((pp = tfind(&find, &sp->_ordered_pairs, compare_data)) != 0) { + colorpair_t *temp = *(colorpair_t **) pp; + result = (int) (temp - sp->_color_pairs); + } + } + return result; +} + +static void +delink_color_pair(SCREEN *sp, int pair) +{ + colorpair_t *list = sp->_color_pairs; + int prev = list[pair].prev; + int next = list[pair].next; + + /* delink this from its current location */ + if (list[prev].next == pair && + list[next].prev == pair) { + list[prev].next = next; + list[next].prev = prev; + dumpit(sp, pair, "delinked"); + } +} + +/* + * Discard all nodes in the fast-index. + */ +NCURSES_EXPORT(void) +_nc_free_ordered_pairs(SCREEN *sp) +{ + if (sp && sp->_ordered_pairs && sp->_pair_alloc) { + int n; + for (n = 0; n < sp->_pair_alloc; ++n) { + tdelete(&sp->_color_pairs[n], &sp->_ordered_pairs, compare_data); + } + } +} + +/* + * Use this call to update the fast-index when modifying an entry in the color + * pair table. + */ +NCURSES_EXPORT(void) +_nc_reset_color_pair(SCREEN *sp, int pair, colorpair_t * next) +{ + colorpair_t *last; + + if (ValidPair(sp, pair)) { + bool used; + + ReservePairs(sp, pair); + last = &(sp->_color_pairs[pair]); + delink_color_pair(sp, pair); + if (last->mode > cpFREE && + (last->fg != next->fg || last->bg != next->bg)) { + /* remove the old entry from fast index */ + tdelete(last, &sp->_ordered_pairs, compare_data); + used = FALSE; + } else { + used = (last->mode != cpFREE); + } + if (!used) { + /* create a new entry in fast index */ + *last = *next; + tsearch(last, &sp->_ordered_pairs, compare_data); + } + } +} + +/* + * Use this call to relink the newest pair to the front of the list, keeping + * "0" first. + */ +NCURSES_EXPORT(void) +_nc_set_color_pair(SCREEN *sp, int pair, int mode) +{ + if (ValidPair(sp, pair)) { + colorpair_t *list = sp->_color_pairs; + dumpit(sp, pair, "SET_PAIR"); + list[0].mode = cpKEEP; + if (list[pair].mode <= cpFREE) + sp->_pairs_used++; + list[pair].mode = mode; + if (list[0].next != pair) { + /* link it at the front of the list */ + list[pair].next = list[0].next; + list[list[pair].next].prev = pair; + list[pair].prev = 0; + list[0].next = pair; + } + dumpit(sp, pair, "...after"); + } +} + +/* + * If we reallocate the color-pair array, we have to adjust the fast-index. + */ +NCURSES_EXPORT(void) +_nc_copy_pairs(SCREEN *sp, colorpair_t * target, colorpair_t * source, int length) +{ + int n; + for (n = 0; n < length; ++n) { + void *find = tfind(source + n, &sp->_ordered_pairs, compare_data); + if (find != 0) { + tdelete(source + n, &sp->_ordered_pairs, compare_data); + tsearch(target + n, &sp->_ordered_pairs, compare_data); + } + } +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(alloc_pair) (NCURSES_SP_DCLx int fg, int bg) +{ + int pair; + + T((T_CALLED("alloc_pair(%d,%d)"), fg, bg)); + if (SP_PARM == 0) { + pair = -1; + } else if ((pair = _nc_find_color_pair(SP_PARM, fg, bg)) < 0) { + /* + * Check if all of the slots have been used. If not, find one and + * use that. + */ + if (SP_PARM->_pairs_used + 1 < SP_PARM->_pair_limit) { + bool found = FALSE; + int hint = SP_PARM->_recent_pair; + + /* + * The linear search is done to allow mixing calls to init_pair() + * and alloc_pair(). The former can make gaps... + */ + for (pair = hint + 1; pair < SP_PARM->_pair_alloc; pair++) { + if (SP_PARM->_color_pairs[pair].mode == cpFREE) { + T(("found gap %d", pair)); + found = TRUE; + break; + } + } + if (!found && (SP_PARM->_pair_alloc < SP_PARM->_pair_limit)) { + pair = SP_PARM->_pair_alloc; + ReservePairs(SP_PARM, pair); + if (SP_PARM->_color_pairs == 0) { + pair = -1; + } else { + found = TRUE; + } + } + if (!found && SP_PARM->_color_pairs != NULL) { + for (pair = 1; pair <= hint; pair++) { + if (SP_PARM->_color_pairs[pair].mode == cpFREE) { + T(("found gap %d", pair)); + found = TRUE; + break; + } + } + } + if (found) { + SP_PARM->_recent_pair = pair; + } else { + pair = ERR; + } + } else { + /* reuse the oldest one */ + pair = SP_PARM->_color_pairs[0].prev; + T(("reusing %d", pair)); + } + + if (_nc_init_pair(SP_PARM, pair, fg, bg) == ERR) + pair = ERR; + } + returnCode(pair); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(find_pair) (NCURSES_SP_DCLx int fg, int bg) +{ + int pair; + + T((T_CALLED("find_pair(%d,%d)"), fg, bg)); + pair = _nc_find_color_pair(SP_PARM, fg, bg); + returnCode(pair); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(free_pair) (NCURSES_SP_DCLx int pair) +{ + int result = ERR; + T((T_CALLED("free_pair(%d)"), pair)); + if (ValidPair(SP_PARM, pair) && pair < SP_PARM->_pair_alloc) { + colorpair_t *cp = &(SP_PARM->_color_pairs[pair]); + if (pair != 0) { + _nc_change_pair(SP_PARM, pair); + delink_color_pair(SP_PARM, pair); + tdelete(cp, &SP_PARM->_ordered_pairs, compare_data); + cp->mode = cpFREE; + result = OK; + SP_PARM->_pairs_used--; + } + } + returnCode(result); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +alloc_pair(int f, int b) +{ + return NCURSES_SP_NAME(alloc_pair) (CURRENT_SCREEN, f, b); +} + +NCURSES_EXPORT(int) +find_pair(int f, int b) +{ + return NCURSES_SP_NAME(find_pair) (CURRENT_SCREEN, f, b); +} + +NCURSES_EXPORT(int) +free_pair(int pair) +{ + return NCURSES_SP_NAME(free_pair) (CURRENT_SCREEN, pair); +} +#endif + +#if NO_LEAKS +NCURSES_EXPORT(void) +_nc_new_pair_leaks(SCREEN *sp) +{ + if (sp->_color_pairs) { + while (sp->_color_pairs[0].next) { + free_pair(sp->_color_pairs[0].next); + } + } +} +#endif + +#else +void _nc_new_pair(void); +void +_nc_new_pair(void) +{ +} +#endif /* NCURSES_EXT_COLORS */ diff --git a/deps/ncurses-5.9/ncurses/base/resizeterm.c b/deps/ncurses-6.3/ncurses/base/resizeterm.c similarity index 86% rename from deps/ncurses-5.9/ncurses/base/resizeterm.c rename to deps/ncurses-6.3/ncurses/base/resizeterm.c index 3f1d36e..225f552 100644 --- a/deps/ncurses-5.9/ncurses/base/resizeterm.c +++ b/deps/ncurses-6.3/ncurses/base/resizeterm.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,2016 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 * @@ -45,7 +46,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: resizeterm.c,v 1.43 2011/01/10 01:34:49 tom Exp $") +MODULE_ID("$Id: resizeterm.c,v 1.51 2021/09/04 10:54:35 tom Exp $") /* * If we're trying to be reentrant, do not want any local statics. @@ -62,6 +63,12 @@ static int current_cols; #define EXTRA_DCLS /* nothing */ #endif +#if NCURSES_SP_FUNCS && !defined(USE_SP_WINDOWLIST) +#define UNUSED_SP (void) sp +#else +#define UNUSED_SP /* nothing */ +#endif + #ifdef TRACE static void show_window_sizes(const char *name) @@ -140,9 +147,10 @@ static int ripped_bottom(WINDOW *win) { int result = 0; - ripoff_t *rop; if (win != 0) { + ripoff_t *rop; + #ifdef USE_SP_RIPOFF SCREEN *sp = _nc_screen_of(win); #endif @@ -202,7 +210,7 @@ parent_depth(WINDOW *cmp) } /* - * FIXME: must adjust position so it's within the parent! + * FIXME: must adjust position so it is within the parent! */ static int adjust_window(WINDOW *win, int ToLines, int ToCols, int stolen EXTRA_DCLS) @@ -276,6 +284,7 @@ decrease_size(NCURSES_SP_DCLx int ToLines, int ToCols, int stolen EXTRA_DCLS) WINDOWLIST *wp; T((T_CALLED("decrease_size(%p, %d, %d)"), (void *) SP_PARM, ToLines, ToCols)); + UNUSED_SP; do { found = FALSE; @@ -310,6 +319,7 @@ increase_size(NCURSES_SP_DCLx int ToLines, int ToCols, int stolen EXTRA_DCLS) WINDOWLIST *wp; T((T_CALLED("increase_size(%p, %d, %d)"), (void *) SP_PARM, ToLines, ToCols)); + UNUSED_SP; do { found = FALSE; @@ -347,7 +357,7 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols) (SP_PARM == 0) ? -1 : screen_lines(SP_PARM), (SP_PARM == 0) ? -1 : screen_columns(SP_PARM))); - if (SP_PARM == 0) { + if (SP_PARM == 0 || ToLines <= 0 || ToCols <= 0) { returnCode(ERR); } @@ -365,58 +375,71 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols) } #endif if (ToLines > screen_lines(SP_PARM)) { - increase_size(NCURSES_SP_ARGx - myLines = ToLines, myCols, was_stolen EXTRA_ARGS); + result = increase_size(NCURSES_SP_ARGx + myLines = ToLines, + myCols, + was_stolen EXTRA_ARGS); CurLines = myLines; CurCols = myCols; } - if (ToCols > screen_columns(SP_PARM)) { - increase_size(NCURSES_SP_ARGx - myLines, myCols = ToCols, was_stolen EXTRA_ARGS); + if ((result == OK) + && (ToCols > screen_columns(SP_PARM))) { + result = increase_size(NCURSES_SP_ARGx + myLines, + myCols = ToCols, + was_stolen EXTRA_ARGS); CurLines = myLines; CurCols = myCols; } - if (ToLines < myLines || - ToCols < myCols) { - decrease_size(NCURSES_SP_ARGx ToLines, ToCols, was_stolen EXTRA_ARGS); + if ((result == OK) + && (ToLines < myLines || + ToCols < myCols)) { + result = decrease_size(NCURSES_SP_ARGx + ToLines, + ToCols, + was_stolen EXTRA_ARGS); } - screen_lines(SP_PARM) = (NCURSES_SIZE_T) ToLines; - screen_columns(SP_PARM) = (NCURSES_SIZE_T) ToCols; + if (result == OK) { + screen_lines(SP_PARM) = (NCURSES_SIZE_T) ToLines; + screen_columns(SP_PARM) = (NCURSES_SIZE_T) ToCols; #ifdef USE_TERM_DRIVER - CallDriver_2(SP_PARM, setsize, ToLines, ToCols); + CallDriver_2(SP_PARM, td_setsize, ToLines, ToCols); #else - lines = (NCURSES_SIZE_T) ToLines; - columns = (NCURSES_SIZE_T) ToCols; + lines = (NCURSES_SIZE_T) ToLines; + columns = (NCURSES_SIZE_T) ToCols; #endif - SP_PARM->_lines_avail = (NCURSES_SIZE_T) (ToLines - was_stolen); + SP_PARM->_lines_avail = (NCURSES_SIZE_T) (ToLines - was_stolen); - if (SP_PARM->oldhash) { - FreeAndNull(SP_PARM->oldhash); - } - if (SP_PARM->newhash) { - FreeAndNull(SP_PARM->newhash); - } + if (SP_PARM->oldhash) { + FreeAndNull(SP_PARM->oldhash); + } + if (SP_PARM->newhash) { + FreeAndNull(SP_PARM->newhash); + } #ifdef TRACE - if (USE_TRACEF(TRACE_UPDATE)) { - SET_LINES(ToLines - was_stolen); - SET_COLS(ToCols); - show_window_sizes("after"); - _nc_unlock_global(tracef); - } + if (USE_TRACEF(TRACE_UPDATE)) { + SET_LINES(ToLines - was_stolen); + SET_COLS(ToCols); + show_window_sizes("after"); + _nc_unlock_global(tracef); + } #endif + } } - /* - * Always update LINES, to allow for call from lib_doupdate.c which - * needs to have the count adjusted by the stolen (ripped off) lines. - */ - SET_LINES(ToLines - was_stolen); - SET_COLS(ToCols); + if (result == OK) { + /* + * Always update LINES, to allow for call from lib_doupdate.c which + * needs to have the count adjusted by the stolen (ripped off) lines. + */ + SET_LINES(ToLines - was_stolen); + SET_COLS(ToCols); + } _nc_nonsp_unlock_global(curses); @@ -427,7 +450,7 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols) NCURSES_EXPORT(int) resize_term(int ToLines, int ToCols) { - int res = ERR; + int res; _nc_sp_lock_global(curses); res = NCURSES_SP_NAME(resize_term) (CURRENT_SCREEN, ToLines, ToCols); _nc_sp_unlock_global(curses); @@ -453,7 +476,7 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols) (SP_PARM == 0) ? -1 : screen_lines(SP_PARM), (SP_PARM == 0) ? -1 : screen_columns(SP_PARM))); - if (SP_PARM != 0) { + if (SP_PARM != 0 && ToLines > 0 && ToCols > 0) { result = OK; SP_PARM->_sig_winch = FALSE; @@ -471,7 +494,6 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols) result = NCURSES_SP_NAME(resize_term) (NCURSES_SP_ARGx ToLines, ToCols); #if USE_SIGWINCH - safe_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */ clearok(CurScreen(SP_PARM), TRUE); /* screen contents are unknown */ /* ripped-off lines are a special case: if we did not lengthen @@ -501,6 +523,9 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols) } #endif } +#if USE_SIGWINCH + safe_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */ +#endif } returnCode(result); diff --git a/deps/ncurses-5.9/ncurses/base/safe_sprintf.c b/deps/ncurses-6.3/ncurses/base/safe_sprintf.c similarity index 84% rename from deps/ncurses-5.9/ncurses/base/safe_sprintf.c rename to deps/ncurses-6.3/ncurses/base/safe_sprintf.c index e73307b..3fff2e8 100644 --- a/deps/ncurses-5.9/ncurses/base/safe_sprintf.c +++ b/deps/ncurses-6.3/ncurses/base/safe_sprintf.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2012,2013 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 * @@ -27,13 +28,13 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey <dickey@clark.net> 1997 * + * Author: Thomas E. Dickey 1997-on * ****************************************************************************/ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: safe_sprintf.c,v 1.24 2010/06/05 22:22:27 tom Exp $") +MODULE_ID("$Id: safe_sprintf.c,v 1.35 2021/10/03 00:25:09 tom Exp $") #if USE_SAFE_SPRINTF @@ -41,7 +42,7 @@ typedef enum { Flags, Width, Prec, Type, Format } PRINTF; -#define VA_INTGR(type) ival = va_arg(ap, type) +#define VA_INTGR(type) ival = (int) va_arg(ap, type) #define VA_FLOAT(type) fval = va_arg(ap, type) #define VA_POINT(type) pval = (void *)va_arg(ap, type) @@ -109,12 +110,16 @@ _nc_printf_length(const char *fmt, va_list ap) } else if (state == Prec) { prec = ival; } - sprintf(fmt_arg, "%d", ival); + _nc_SPRINTF(fmt_arg, + _nc_SLIMIT(sizeof(fmt_arg)) + "%d", ival); fmt_len += strlen(fmt_arg); if ((format = _nc_doalloc(format, fmt_len)) == 0) { + free(buffer); return -1; } - strcpy(&format[--f], fmt_arg); + --f; + _nc_STRCPY(&format[f], fmt_arg, fmt_len - f); f = strlen(format); } else if (isalpha(UChar(*fmt))) { done = TRUE; @@ -153,9 +158,9 @@ _nc_printf_length(const char *fmt, va_list ap) case 's': VA_POINT(char *); if (prec < 0) - prec = strlen(pval); + prec = (int) strlen(pval); if (prec > (int) length) { - length = length + prec; + length = length + (size_t) prec; buffer = typeRealloc(char, length, buffer); if (buffer == 0) { free(format); @@ -185,13 +190,13 @@ _nc_printf_length(const char *fmt, va_list ap) format[f] = '\0'; switch (used) { case 'i': - sprintf(buffer, format, ival); + _nc_SPRINTF(buffer, _nc_SLIMIT(length) format, ival); break; case 'f': - sprintf(buffer, format, fval); + _nc_SPRINTF(buffer, _nc_SLIMIT(length) format, fval); break; default: - sprintf(buffer, format, pval); + _nc_SPRINTF(buffer, _nc_SLIMIT(length) format, pval); break; } len += (int) strlen(buffer); @@ -218,9 +223,9 @@ NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_DCLx const char *fmt, va_list ap) { - char *result = 0; + char *result = NULL; - if (fmt != 0) { + if (SP_PARM != NULL && fmt != NULL) { #if USE_SAFE_SPRINTF va_list ap2; int len; @@ -230,10 +235,10 @@ NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_DCLx end_va_copy(ap2); if ((int) my_length < len + 1) { - my_length = 2 * (len + 1); + my_length = (size_t) (2 * (len + 1)); my_buffer = typeRealloc(char, my_length, my_buffer); } - if (my_buffer != 0) { + if (my_buffer != NULL) { *my_buffer = '\0'; if (len >= 0) { vsprintf(my_buffer, fmt, ap); @@ -250,21 +255,30 @@ NCURSES_SP_NAME(_nc_printf_string) (NCURSES_SP_DCLx if (screen_columns(SP_PARM) > MyCols) MyCols = screen_columns(SP_PARM); my_length = (size_t) (MyRows * (MyCols + 1)) + 1; + if (my_length < 80) + my_length = 80; my_buffer = typeRealloc(char, my_length, my_buffer); } - if (my_buffer != 0) { + if (my_buffer != NULL) { # if HAVE_VSNPRINTF - vsnprintf(my_buffer, my_length, fmt, ap); /* GNU extension */ + /* SUSv2, 1997 */ + int used; + while ((used = vsnprintf(my_buffer, my_length, fmt, ap)) + >= (int) my_length) { + my_length = (size_t) ((3 * used) / 2); + my_buffer = typeRealloc(char, my_length, my_buffer); + } # else - vsprintf(my_buffer, fmt, ap); /* ANSI */ + /* ISO/ANSI C, 1989 */ + vsprintf(my_buffer, fmt, ap); # endif result = my_buffer; } #endif - } else if (my_buffer != 0) { /* see _nc_freeall() */ + } else if (my_buffer != NULL) { /* see _nc_freeall() */ free(my_buffer); - my_buffer = 0; + my_buffer = NULL; my_length = 0; } return result; diff --git a/deps/ncurses-5.9/ncurses/base/sigaction.c b/deps/ncurses-6.3/ncurses/base/sigaction.c similarity index 94% rename from deps/ncurses-5.9/ncurses/base/sigaction.c rename to deps/ncurses-6.3/ncurses/base/sigaction.c index 36442e0..9688c69 100644 --- a/deps/ncurses-5.9/ncurses/base/sigaction.c +++ b/deps/ncurses-6.3/ncurses/base/sigaction.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2002,2003 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2002,2003 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 * @@ -35,7 +36,7 @@ /* This file provides sigaction() emulation using sigvec() */ /* Use only if this is non POSIX system */ -MODULE_ID("$Id: sigaction.c,v 1.14 2003/12/07 01:06:52 tom Exp $") +MODULE_ID("$Id: sigaction.c,v 1.15 2020/02/02 23:34:34 tom Exp $") static int _nc_sigaction(int sig, sigaction_t * sigact, sigaction_t * osigact) diff --git a/deps/ncurses-5.9/ncurses/base/tries.c b/deps/ncurses-6.3/ncurses/base/tries.c similarity index 95% rename from deps/ncurses-5.9/ncurses/base/tries.c rename to deps/ncurses-6.3/ncurses/base/tries.c index ad85d22..0f309c2 100644 --- a/deps/ncurses-5.9/ncurses/base/tries.c +++ b/deps/ncurses-6.3/ncurses/base/tries.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: tries.c,v 1.30 2010/08/28 21:08:23 tom Exp $") +MODULE_ID("$Id: tries.c,v 1.31 2020/02/02 23:34:34 tom Exp $") /* * Expand a keycode into the string that it corresponds to, returning null if diff --git a/deps/ncurses-5.9/ncurses/base/use_window.c b/deps/ncurses-6.3/ncurses/base/use_window.c similarity index 88% rename from deps/ncurses-5.9/ncurses/base/use_window.c rename to deps/ncurses-6.3/ncurses/base/use_window.c index 8eb7339..4893053 100644 --- a/deps/ncurses-5.9/ncurses/base/use_window.c +++ b/deps/ncurses-6.3/ncurses/base/use_window.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2007-2009,2016 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 * @@ -32,14 +33,19 @@ #include <curses.priv.h> -MODULE_ID("$Id: use_window.c,v 1.9 2009/10/24 22:40:24 tom Exp $") +MODULE_ID("$Id: use_window.c,v 1.13 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) use_window(WINDOW *win, NCURSES_WINDOW_CB func, void *data) { int code = OK; + TR_FUNC_BFR(1); + + T((T_CALLED("use_window(%p,%s,%p)"), + (void *) win, + TR_FUNC_ARG(0, func), + data)); - T((T_CALLED("use_window(%p,%p,%p)"), (void *) win, func, data)); _nc_lock_global(curses); code = func(win, data); _nc_unlock_global(curses); diff --git a/deps/ncurses-5.9/ncurses/base/version.c b/deps/ncurses-6.3/ncurses/base/version.c similarity index 92% rename from deps/ncurses-5.9/ncurses/base/version.c rename to deps/ncurses-6.3/ncurses/base/version.c index ef83967..4d8ee81 100644 --- a/deps/ncurses-5.9/ncurses/base/version.c +++ b/deps/ncurses-6.3/ncurses/base/version.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2004,2005 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1999-2004,2005 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 * @@ -32,7 +33,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: version.c,v 1.6 2005/01/02 01:23:54 tom Exp $") +MODULE_ID("$Id: version.c,v 1.7 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(const char *) curses_version(void) diff --git a/deps/ncurses-5.9/ncurses/base/vsscanf.c b/deps/ncurses-6.3/ncurses/base/vsscanf.c similarity index 96% rename from deps/ncurses-5.9/ncurses/base/vsscanf.c rename to deps/ncurses-6.3/ncurses/base/vsscanf.c index e6253c3..ef52425 100644 --- a/deps/ncurses-5.9/ncurses/base/vsscanf.c +++ b/deps/ncurses-6.3/ncurses/base/vsscanf.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2003,2004 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2004,2012 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 * @@ -38,7 +39,7 @@ #if !HAVE_VSSCANF -MODULE_ID("$Id: vsscanf.c,v 1.18 2004/04/03 20:27:02 tom Exp $") +MODULE_ID("$Id: vsscanf.c,v 1.21 2020/02/02 23:34:34 tom Exp $") #if !(HAVE_VFSCANF || HAVE__DOSCAN) @@ -293,12 +294,12 @@ vsscanf(const char *str, const char *format, va_list ap) /* add %n, if the format was not that */ if (chunk != cAssigned) { - strcat(my_fmt, "%n"); + _nc_STRCAT(my_fmt, "%n", len_fmt); } switch (chunk) { case cAssigned: - strcat(my_fmt, "%n"); + _nc_STRCAT(my_fmt, "%n", len_fmt); pointer = &eaten; break; case cInt: diff --git a/deps/ncurses-5.9/ncurses/base/wresize.c b/deps/ncurses-6.3/ncurses/base/wresize.c similarity index 86% rename from deps/ncurses-5.9/ncurses/base/wresize.c rename to deps/ncurses-6.3/ncurses/base/wresize.c index 9a6ea50..30718b8 100644 --- a/deps/ncurses-5.9/ncurses/base/wresize.c +++ b/deps/ncurses-6.3/ncurses/base/wresize.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,2011 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 * @@ -33,13 +34,13 @@ #include <curses.priv.h> -MODULE_ID("$Id: wresize.c,v 1.34 2010/06/05 22:36:26 tom Exp $") +MODULE_ID("$Id: wresize.c,v 1.41 2020/04/18 21:01:00 tom Exp $") static int cleanup_lines(struct ldat *data, int length) { while (--length >= 0) - free(data[length].text); + FreeAndNull(data[length].text); free(data); return ERR; } @@ -65,15 +66,29 @@ repair_subwindows(WINDOW *cmp) if (tst->_parent == cmp) { - if (tst->_pary > cmp->_maxy) - tst->_pary = cmp->_maxy; - if (tst->_parx > cmp->_maxx) - tst->_parx = cmp->_maxx; +#define REPAIR1(field, limit) \ + if (tst->field > cmp->limit) \ + tst->field = cmp->limit - if (tst->_maxy + tst->_pary > cmp->_maxy) - tst->_maxy = (NCURSES_SIZE_T) (cmp->_maxy - tst->_pary); - if (tst->_maxx + tst->_parx > cmp->_maxx) - tst->_maxx = (NCURSES_SIZE_T) (cmp->_maxx - tst->_parx); + REPAIR1(_pary, _maxy); + REPAIR1(_parx, _maxx); + +#define REPAIR2(field, limit) \ + if (tst->limit + tst->field > cmp->limit) \ + tst->limit = (NCURSES_SIZE_T) (cmp->limit - tst->field) + + REPAIR2(_pary, _maxy); + REPAIR2(_parx, _maxx); + +#define REPAIR3(field, limit) \ + if (tst->field > tst->limit) \ + tst->field = tst->limit + + REPAIR3(_cury, _maxy); + REPAIR3(_curx, _maxx); + + REPAIR3(_regtop, _maxy); + REPAIR3(_regbottom, _maxy); for (row = 0; row <= tst->_maxy; ++row) { tst->_line[row].text = &pline[tst->_pary + row].text[tst->_parx]; @@ -161,7 +176,15 @@ wresize(WINDOW *win, int ToLines, int ToCols) if (s == 0) returnCode(cleanup_lines(new_lines, row)); for (col = 0; col <= ToCols; ++col) { - s[col] = (col <= size_x + bool valid = (col <= size_x); + if_WIDEC({ + if (col == ToCols + && col < size_x + && isWidecBase(win->_line[row].text[col])) { + valid = FALSE; + } + }); + s[col] = (valid ? win->_line[row].text[col] : win->_nc_bkgd); } @@ -175,9 +198,10 @@ wresize(WINDOW *win, int ToLines, int ToCols) for (col = 0; col <= ToCols; ++col) s[col] = win->_nc_bkgd; } - } else { - assert(pline != 0); + } else if (pline != 0 && pline[win->_pary + row].text != 0) { s = &pline[win->_pary + row].text[win->_parx]; + } else { + s = 0; } if_USE_SCROLL_HINTS(new_lines[row].oldindex = row); @@ -203,16 +227,16 @@ wresize(WINDOW *win, int ToLines, int ToCols) if (!(win->_flags & _SUBWIN)) { if (ToCols == size_x) { for (row = ToLines + 1; row <= size_y; row++) { - free(win->_line[row].text); + FreeAndNull(win->_line[row].text); } } else { for (row = 0; row <= size_y; row++) { - free(win->_line[row].text); + FreeAndNull(win->_line[row].text); } } } - free(win->_line); + FreeAndNull(win->_line); win->_line = new_lines; /* diff --git a/deps/ncurses-5.9/ncurses/build.priv.h b/deps/ncurses-6.3/ncurses/build.priv.h similarity index 83% rename from deps/ncurses-5.9/ncurses/build.priv.h rename to deps/ncurses-6.3/ncurses/build.priv.h index be00d73..9014e74 100644 --- a/deps/ncurses-5.9/ncurses/build.priv.h +++ b/deps/ncurses-6.3/ncurses/build.priv.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2010,2012 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 * @@ -30,13 +31,12 @@ * Author: Thomas E. Dickey 2010 * ****************************************************************************/ - /* - * $Id: build.priv.h,v 1.6 2010/05/22 20:30:35 tom Exp $ + * $Id: build.priv.h,v 1.12 2020/02/02 23:34:34 tom Exp $ * * build.priv.h * - * This is a reduced version of curses.priv.h, for build-time utilties. + * This is a reduced version of curses.priv.h, for build-time utilities. * Because it has fewer dependencies, this simplifies cross-compiling. * */ @@ -55,7 +55,7 @@ extern "C" { #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 #include <stdlib.h> @@ -67,7 +67,7 @@ extern "C" { #include <errno.h> -#include <curses.h> /* we'll use -Ipath directive to get the right one! */ +#include <curses.h> /* we'll use -Ipath directive to get the right one! */ /* usually in <unistd.h> */ #ifndef EXIT_SUCCESS @@ -78,31 +78,31 @@ extern "C" { #define EXIT_FAILURE 1 #endif -#define FreeAndNull(p) free(p); p = 0 +#define FreeAndNull(p) do { free(p); p = 0; } while (0) #define UChar(c) ((unsigned char)(c)) #define SIZEOF(v) (sizeof(v) / sizeof(v[0])) #include <nc_alloc.h> +#include <nc_string.h> /* declare these, to avoid needing term.h */ #if BROKEN_LINKER || USE_REENTRANT #define NCURSES_ARRAY(name) \ NCURSES_WRAPPED_VAR(NCURSES_CONST char * const *, name) -NCURSES_ARRAY(boolnames); -NCURSES_ARRAY(boolfnames); -NCURSES_ARRAY(numnames); -NCURSES_ARRAY(numfnames); -NCURSES_ARRAY(strnames); -NCURSES_ARRAY(strfnames); + NCURSES_ARRAY(boolnames); + NCURSES_ARRAY(boolfnames); + NCURSES_ARRAY(numnames); + NCURSES_ARRAY(numfnames); + NCURSES_ARRAY(strnames); + NCURSES_ARRAY(strfnames); #endif #if NO_LEAKS -NCURSES_EXPORT(void) _nc_names_leaks(void); + NCURSES_EXPORT(void) _nc_names_leaks(void); #endif #ifdef __cplusplus } #endif - -#endif /* CURSES_PRIV_H */ +#endif /* CURSES_PRIV_H */ diff --git a/deps/ncurses-5.9/ncurses/curses.priv.h b/deps/ncurses-6.3/ncurses/curses.priv.h similarity index 75% rename from deps/ncurses-5.9/ncurses/curses.priv.h rename to deps/ncurses-6.3/ncurses/curses.priv.h index 49346c1..872d25a 100644 --- a/deps/ncurses-5.9/ncurses/curses.priv.h +++ b/deps/ncurses-6.3/ncurses/curses.priv.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2017,2018 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 * @@ -34,7 +35,7 @@ ****************************************************************************/ /* - * $Id: curses.priv.h,v 1.475 2011/01/22 21:10:19 tom Exp $ + * $Id: curses.priv.h,v 1.646 2021/09/24 16:09:35 tom Exp $ * * curses.priv.h * @@ -65,15 +66,12 @@ extern "C" { #include <stdlib.h> #include <string.h> #include <sys/types.h> +#include <sys/stat.h> #if HAVE_UNISTD_H #include <unistd.h> #endif -#if HAVE_SYS_BSDTYPES_H -#include <sys/bsdtypes.h> /* needed for ISC */ -#endif - #if HAVE_LIMITS_H # include <limits.h> #elif HAVE_SYS_PARAM_H @@ -85,6 +83,12 @@ extern "C" { #include <errno.h> +#if defined __hpux +# ifndef EILSEQ +# define EILSEQ 47 +# endif +#endif + #ifndef PATH_MAX # if defined(_POSIX_PATH_MAX) # define PATH_MAX _POSIX_PATH_MAX @@ -99,6 +103,24 @@ extern "C" { extern int errno; #endif +/* Some Windows related defines */ +#undef _NC_WINDOWS +#if (defined(_WIN32) || defined(_WIN64)) +#define _NC_WINDOWS +#else +#undef EXP_WIN32_DRIVER +#endif + +#undef _NC_MINGW +#if (defined(__MINGW32__) || defined(__MINGW64__)) +#define _NC_MINGW +#endif + +#undef _NC_MSC +#ifdef _MSC_VER +#define _NC_MSC +#endif + /* Some systems have a broken 'select()', but workable 'poll()'. Use that */ #if HAVE_WORKING_POLL #define USE_FUNC_POLL 1 @@ -111,6 +133,14 @@ extern int errno; #define USE_FUNC_POLL 0 #endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + /* include signal.h before curses.h to work-around defect in glibc 2.1.3 */ #include <signal.h> @@ -135,6 +165,15 @@ extern int errno; #define USE_EMX_MOUSE 0 #endif +/* kLIBC keyboard/mouse support */ +#if defined(__OS2__) && defined(__KLIBC__) +#define USE_KLIBC_KBD 1 +#define USE_KLIBC_MOUSE 1 +#else +#define USE_KLIBC_KBD 0 +#define USE_KLIBC_MOUSE 0 +#endif + #define DEFAULT_MAXCLICK 166 #define EV_MAX 8 /* size of mouse circular event queue */ @@ -156,14 +195,15 @@ extern int errno; #endif /* - * If desired, one can configure this, disabling environment variables that - * point to custom terminfo/termcap locations. + * When building in the MSYS2 environment, the automatic discovery of + * the path separator in configure doesn't work properly. So, if building + * for MinGW, we enforce the correct Windows PATH separator */ -#ifdef USE_ROOT_ENVIRON -#define use_terminfo_vars() 1 -#else -#define use_terminfo_vars() _nc_env_access() -extern NCURSES_EXPORT(int) _nc_env_access (void); +#if defined(_NC_WINDOWS) +# ifdef NCURSES_PATHSEP +# undef NCURSES_PATHSEP +# endif +# define NCURSES_PATHSEP ';' #endif /* @@ -191,6 +231,30 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t); #define end_va_copy(dst) /* nothing */ #endif +/* + * Either/both S_ISxxx and/or S_IFxxx are defined in sys/types.h; some systems + * lack one or the other. + */ +#ifndef S_ISDIR +#define S_ISDIR(mode) ((mode & S_IFMT) == S_IFDIR) +#endif + +#ifndef S_ISREG +#define S_ISREG(mode) ((mode & S_IFMT) == S_IFREG) +#endif + +/* + * POSIX ignores the "b", which c89 specified. Some very old systems do not + * accept it. + */ +#if USE_FOPEN_BIN_R +#define BIN_R "rb" +#define BIN_W "wb" +#else +#define BIN_R "r" +#define BIN_W "w" +#endif + /* * Scroll hints are useless when hashmap is used */ @@ -208,15 +272,26 @@ extern NCURSES_EXPORT(void *) _nc_memmove (void *, const void *, size_t); #define if_USE_SCROLL_HINTS(stmt) /*nothing*/ #endif +#include <nc_string.h> + /* * Options for terminal drivers, etc... */ #ifdef USE_TERM_DRIVER +#define NO_TERMINAL "unknown" #define USE_SP_RIPOFF 1 #define USE_SP_TERMTYPE 1 #define USE_SP_WINDOWLIST 1 +#else +#define NO_TERMINAL 0 #endif +#define VALID_TERM_ENV(term_env, no_terminal) \ + (term_env = (NonEmpty(term_env) \ + ? term_env \ + : no_terminal), \ + NonEmpty(term_env)) + /* * Note: ht/cbt expansion flakes out randomly under Linux 1.1.47, but only * when we're throwing control codes at the screen at high volume. To see @@ -250,14 +325,6 @@ typedef TRIES { * Structure for palette tables */ -typedef struct -{ - short red, green, blue; /* what color_content() returns */ - short r, g, b; /* params to init_color() */ - int init; /* true if we called init_color() */ -} -color_t; - #define MAXCOLUMNS 135 #define MAXLINES 66 #define FIFO_SIZE MAXCOLUMNS+2 /* for nocbreak mode input */ @@ -272,7 +339,7 @@ color_t; #undef _XOPEN_SOURCE_EXTENDED #undef _XPG5 #define _nc_bkgd _bkgd -#define wgetbkgrnd(win, wch) *wch = win->_bkgd +#define wgetbkgrnd(win, wch) ((*wch = win->_bkgd) != 0 ? OK : ERR) #define wbkgrnd wbkgd #endif @@ -282,6 +349,27 @@ color_t; #include <curses.h> /* we'll use -Ipath directive to get the right one! */ +#if !(defined(NCURSES_WGETCH_EVENTS) && defined(NEED_KEY_EVENT)) +#undef KEY_EVENT /* reduce compiler-warnings with Visual C++ */ +#endif + +typedef struct +{ + int red, green, blue; /* what color_content() returns */ + int r, g, b; /* params to init_color() */ + int init; /* true if we called init_color() */ +} +color_t; + +typedef union { + struct { + unsigned char red; + unsigned char green; + unsigned char blue; + } bits; /* bits per color-value in RGB */ + unsigned value; +} rgb_bits_t; + /* * If curses.h did not expose the SCREEN-functions, then we do not need the * parameter in the corresponding unextended functions. @@ -308,11 +396,14 @@ color_t; #include <nc_panel.h> +#include <term.priv.h> +#include <nc_termios.h> + #define IsPreScreen(sp) (((sp) != 0) && sp->_prescreen) #define HasTerminal(sp) (((sp) != 0) && (0 != ((sp)->_term))) #define IsValidScreen(sp) (HasTerminal(sp) && !IsPreScreen(sp)) -#if BROKEN_LINKER || USE_REENTRANT +#if USE_REENTRANT #define CurTerm _nc_prescreen._cur_term #else #define CurTerm cur_term @@ -324,7 +415,31 @@ color_t; #define TerminalOf(sp) CurTerm #endif -#include <term.h> +/* + * The legacy layout for TERMTYPE uses "short" for all of the numbers. Moving + * past that, numeric capabilities can be "int" by using a TERMTYPE2 structure + * in TERMINAL, and doing most of the internal work using TERMTYPE2. There are + * a few places (mostly to expose the legacy layout) where the distinction + * needs attention. + */ +#if NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR +#define NCURSES_EXT_NUMBERS 1 +#define NCURSES_INT2 int +#define SIZEOF_INT2 4 +#define TerminalType(tp) (tp)->type2 +#else +#define NCURSES_EXT_NUMBERS 0 +#define NCURSES_INT2 short +#define SIZEOF_INT2 2 +#define TerminalType(tp) (tp)->type +#endif + +#define SIZEOF_SHORT 2 + +#ifdef CUR +#undef CUR +#define CUR TerminalType(cur_term). +#endif /* * Reduce dependency on cur_term global by using terminfo data from SCREEN's @@ -334,18 +449,29 @@ color_t; #undef CUR #endif -#define SP_TERMTYPE TerminalOf(sp)->type. +#define SP_TERMTYPE TerminalType(TerminalOf(sp)). #include <term_entry.h> #include <nc_tparm.h> +/* + * Simplify ifdef's for the "*_ATTR" macros in case italics are not configured. + */ +#if defined(A_ITALIC) && defined(exit_italics_mode) +#define USE_ITALIC 1 +#else +#define USE_ITALIC 0 +#undef A_ITALIC +#define A_ITALIC 0 +#endif + /* * Use these macros internally, to make tracing less verbose. But leave the * option for compiling the tracing into the library. */ #if 1 -#define ColorPair(n) NCURSES_BITS(n, 0) +#define ColorPair(n) (NCURSES_BITS(n, 0) & A_COLOR) #define PairNumber(a) (NCURSES_CAST(int,(((unsigned long)(a) & A_COLOR) >> NCURSES_ATTR_SHIFT))) #else #define ColorPair(pair) COLOR_PAIR(pair) @@ -365,7 +491,7 @@ color_t; #define if_EXT_COLORS(stmt) stmt #define SetPair(value,p) SetPair2((value).ext_color, AttrOf(value), p) #define SetPair2(c,a,p) c = (p), \ - a = (unColor2(a) | (A_COLOR & ColorPair(oldColor(c)))) + a = (unColor2(a) | ColorPair(oldColor(c))) #define GetPair(value) GetPair2((value).ext_color, AttrOf(value)) #define GetPair2(c,a) ((c) ? (c) : PairNumber(a)) #define oldColor(p) (((p) > 255) ? 255 : (p)) @@ -373,31 +499,34 @@ color_t; #define SET_WINDOW_PAIR(w,p) (w)->_color = (p) #define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b) && GetPair(a) == GetPair(b)) -#if NCURSES_SP_FUNCS -#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vid_attr)(sp, attr, pair, 0) -#else -#define VIDATTR(sp,attr,pair) vid_attr(attr, pair, 0) -#endif +#define VIDPUTS(sp,attr,pair) do { \ + int vid_pair = pair; \ + NCURSES_SP_NAME(vid_puts)( \ + NCURSES_SP_ARGx attr, \ + (NCURSES_PAIRS_T) pair, \ + &vid_pair, \ + NCURSES_OUTC_FUNC); \ + } while (0) #else /* !NCURSES_EXT_COLORS */ #define if_EXT_COLORS(stmt) /* nothing */ #define SetPair(value,p) RemAttr(value, A_COLOR), \ - SetAttr(value, AttrOf(value) | (A_COLOR & (attr_t) ColorPair(p))) + SetAttr(value, AttrOf(value) | ColorPair(p)) #define GetPair(value) PairNumber(AttrOf(value)) #define GET_WINDOW_PAIR(w) PairNumber(WINDOW_ATTRS(w)) #define SET_WINDOW_PAIR(w,p) WINDOW_ATTRS(w) &= ALL_BUT_COLOR, \ - WINDOW_ATTRS(w) |= (A_COLOR & (attr_t) ColorPair(p)) + WINDOW_ATTRS(w) |= ColorPair(p) #define SameAttrOf(a,b) (AttrOf(a) == AttrOf(b)) -#if NCURSES_SP_FUNCS -#define VIDATTR(sp,attr,pair) NCURSES_SP_NAME(vidattr)(sp, attr) -#else -#define VIDATTR(sp,attr,pair) vidattr(attr) -#endif +#define VIDPUTS(sp,attr,pair) NCURSES_SP_NAME(vidputs)(NCURSES_SP_ARGx attr, NCURSES_OUTC_FUNC) #endif /* NCURSES_EXT_COLORS */ +#define NCURSES_OUTC_FUNC NCURSES_SP_NAME(_nc_outch) +#define NCURSES_PUTP2(name,value) NCURSES_SP_NAME(_nc_putp)(NCURSES_SP_ARGx name, value) +#define NCURSES_PUTP2_FLUSH(name,value) NCURSES_SP_NAME(_nc_putp_flush)(NCURSES_SP_ARGx name, value) + #if NCURSES_NO_PADDING #define GetNoPadding(sp) ((sp) ? (sp)->_no_padding : _nc_prescreen._no_padding) #define SetNoPadding(sp) _nc_set_no_padding(sp) @@ -446,6 +575,8 @@ NCURSES_EXPORT(int *) _nc_ptr_Escdelay (SCREEN *); #endif +#define HasHardTabs() (NonEmpty(clear_all_tabs) && NonEmpty(set_tab)) + #define TR_MUTEX(data) _tracef("%s@%d: me:%08lX COUNT:%2u/%2d/%6d/%2d/%s%9u: " #data, \ __FILE__, __LINE__, \ (unsigned long) (pthread_self()), \ @@ -467,6 +598,9 @@ NCURSES_EXPORT(int *) _nc_ptr_Escdelay (SCREEN *); # endif # define _declare(name) __extension__ extern __typeof__(name) name # define weak_symbol(name) _weak_pragma(name) _declare(name) __attribute__((weak)) +#else +# undef USE_WEAK_SYMBOLS +# define USE_WEAK_SYMBOLS 0 #endif #endif @@ -501,7 +635,10 @@ weak_symbol(pthread_mutexattr_settype); weak_symbol(pthread_mutexattr_init); extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *); # undef sigprocmask -# define sigprocmask _nc_sigprocmask +# define sigprocmask(a, b, c) _nc_sigprocmask(a, b, c) +# define GetThreadID() (((pthread_self)) ? pthread_self() : (pthread_t) getpid()) +# else +# define GetThreadID() pthread_self() # endif #endif @@ -521,7 +658,7 @@ weak_symbol(pthread_self); weak_symbol(pthread_equal); extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *); # undef sigprocmask -# define sigprocmask _nc_sigprocmask +# define sigprocmask(a, b, c) _nc_sigprocmask(a, b, c) # endif #endif /* USE_PTHREADS_EINTR */ @@ -575,15 +712,13 @@ extern NCURSES_EXPORT(int) _nc_sigprocmask(int, const sigset_t *, sigset_t *); /* * Definitions for color pairs */ -typedef unsigned colorpair_t; /* type big enough to store PAIR_OF() */ -#define C_SHIFT 9 /* we need more bits than there are colors */ -#define C_MASK ((1 << C_SHIFT) - 1) -#define PAIR_OF(fg, bg) (colorpair_t) ((((fg) & C_MASK) << C_SHIFT) | ((bg) & C_MASK)) -#define FORE_OF(c) (((c) >> C_SHIFT) & C_MASK) -#define BACK_OF(c) ((c) & C_MASK) -#define isDefaultColor(c) ((c) >= COLOR_DEFAULT || (c) < 0) -#define COLOR_DEFAULT C_MASK +#define MAX_OF_TYPE(t) (int)(((unsigned t)(~0))>>1) + +#include <new_pair.h> + +#define isDefaultColor(c) ((c) < 0) +#define COLOR_DEFAULT -1 #if defined(USE_BUILD_CC) || (defined(USE_TERMLIB) && !defined(NEED_NCURSES_CH_T)) @@ -616,6 +751,14 @@ typedef enum { #endif } MouseType; +typedef enum { + MF_X10 = 0 /* conventional 3-byte format */ + , MF_SGR1006 /* xterm private mode 1006, SGR-style */ +#ifdef EXP_XTERM_1005 + , MF_XTERM_1005 /* xterm UTF-8 private mode 1005 */ +#endif +} MouseFormat; + /* * Structures for scrolling. */ @@ -656,15 +799,12 @@ typedef struct _SLK { #endif /* USE_TERMLIB */ -typedef struct { - WINDOW *win; /* the window used in the hook */ - int line; /* lines to take, < 0 => from bottom*/ - int (*hook)(WINDOW *, int); /* callback for user */ -} ripoff_t; - #if USE_GPM_SUPPORT #undef buttons /* term.h defines this, and gpm uses it! */ #include <gpm.h> +#if USE_WEAK_SYMBOLS +weak_symbol(Gpm_Wgetch); +#endif #ifdef HAVE_LIBDL /* link dynamically to GPM */ @@ -686,55 +826,15 @@ typedef int (*TYPE_Gpm_GetEvent) (Gpm_Event *); #endif /* HAVE_LIBDL */ #endif /* USE_GPM_SUPPORT */ -typedef struct { - long sequence; - bool last_used; - char *fix_sgr0; /* this holds the filtered sgr0 string */ - char *last_bufp; /* help with fix_sgr0 leak */ - TERMINAL *last_term; -} TGETENT_CACHE; - -#define TGETENT_MAX 4 - /* - * State of tparm(). + * When converting from terminfo to termcap, check for cases where we can trim + * octal escapes down to 2-character form. It is useful for terminfo format + * also, but not as important. */ -#define STACKSIZE 20 - -typedef struct { - union { - int num; - char *str; - } data; - bool num_type; -} STACK_FRAME; - -#define NUM_VARS 26 - -typedef struct { -#ifdef TRACE - const char *tname; -#endif - const char *tparam_base; - - STACK_FRAME stack[STACKSIZE]; - int stack_ptr; - - char *out_buff; - size_t out_size; - size_t out_used; - - char *fmt_buff; - size_t fmt_size; +#define MAX_TC_FIXUPS 10 +#define MIN_TC_FIXUPS 4 - int dynamic_var[NUM_VARS]; - int static_vars[NUM_VARS]; -} TPARM_STATE; - -typedef struct { - char *text; - size_t size; -} TRACEBUF; +#define isoctal(c) ((c) >= '0' && (c) <= '7') /* * The filesystem database normally uses a single-letter for the lower level @@ -766,132 +866,16 @@ struct DriverTCB; /* Terminal Control Block forward declaration */ #define INIT_TERM_DRIVER() /* nothing */ #endif -/* - * Global data which is not specific to a screen. - */ -typedef struct { - SIG_ATOMIC_T have_sigwinch; - SIG_ATOMIC_T cleanup_nested; - - bool init_signals; - bool init_screen; - - const char *comp_sourcename; - char *comp_termtype; - - bool have_tic_directory; - bool keep_tic_directory; - const char *tic_directory; - - char *dbi_list; - int dbi_size; - - char *first_name; - char **keyname_table; - - int slk_format; - - char *safeprint_buf; - size_t safeprint_used; - - TGETENT_CACHE tgetent_cache[TGETENT_MAX]; - int tgetent_index; - long tgetent_sequence; - -#ifndef USE_SP_WINDOWLIST - WINDOWLIST *_nc_windowlist; -#define WindowList(sp) _nc_globals._nc_windowlist -#endif - -#if USE_HOME_TERMINFO - char *home_terminfo; -#endif - -#if !USE_SAFE_SPRINTF - int safeprint_cols; - int safeprint_rows; -#endif - -#ifdef USE_TERM_DRIVER - int (*term_driver)(struct DriverTCB*, const char*, int*); -#endif - -#ifdef TRACE - bool init_trace; - char trace_fname[PATH_MAX]; - int trace_level; - FILE *trace_fp; - - char *tracearg_buf; - size_t tracearg_used; - - TRACEBUF *tracebuf_ptr; - size_t tracebuf_used; - - char tracechr_buf[40]; - - char *tracedmp_buf; - size_t tracedmp_used; - - unsigned char *tracetry_buf; - size_t tracetry_used; - - char traceatr_color_buf[2][80]; - int traceatr_color_sel; - int traceatr_color_last; -#if !defined(USE_PTHREADS) && USE_REENTRANT - int nested_tracef; -#endif -#endif /* TRACE */ - -#ifdef USE_PTHREADS - pthread_mutex_t mutex_curses; - pthread_mutex_t mutex_tst_tracef; - pthread_mutex_t mutex_tracef; - int nested_tracef; - int use_pthreads; -#define _nc_use_pthreads _nc_globals.use_pthreads -#endif -#if USE_PTHREADS_EINTR - pthread_t read_thread; /* The reading thread */ -#endif -} NCURSES_GLOBALS; - extern NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals; -#define N_RIPS 5 - -/* - * Global data which can be swept up into a SCREEN when one is created. - * It may be modified before the next SCREEN is created. - */ -typedef struct { - bool use_env; - bool filter_mode; - attr_t previous_attr; -#ifndef USE_SP_RIPOFF - ripoff_t rippedoff[N_RIPS]; - ripoff_t *rsp; -#endif - TPARM_STATE tparm_state; - TTY *saved_tty; /* savetty/resetty information */ -#if NCURSES_NO_PADDING - bool _no_padding; /* flag to set if padding disabled */ -#endif - NCURSES_SP_OUTC _outch; /* output handler if not putc */ -#if BROKEN_LINKER || USE_REENTRANT - chtype *real_acs_map; - int _LINES; - int _COLS; - int _TABSIZE; - int _ESCDELAY; - TERMINAL *_cur_term; -#ifdef TRACE - long _outchars; - const char *_tputs_trace; -#endif -#endif -} NCURSES_PRESCREEN; +/* The limit reserves one byte for a terminating NUL */ +#define my_getstr_limit (_nc_globals.getstr_limit - 1) +#define _nc_getstr_limit(n) \ + (((n) < 0) \ + ? my_getstr_limit \ + : (((n) > my_getstr_limit) \ + ? my_getstr_limit \ + : (n))) /* * Use screen-specific ripoff data (for softkeys) rather than global. @@ -906,16 +890,23 @@ typedef struct { extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen; +typedef enum { + ewInitial = 0, + ewRunning, + ewSuspend +} ENDWIN; + /* * The SCREEN structure. */ - -struct screen { - int _ifd; /* input file ptr for screen */ +typedef struct screen { + int _ifd; /* input file descriptor for screen */ + int _ofd; /* output file descriptor for screen */ FILE *_ofp; /* output file ptr for screen */ - char *_setbuf; /* buffered I/O for output */ + char *out_buffer; /* output buffer */ + size_t out_limit; /* output buffer size */ + size_t out_inuse; /* output buffer current use */ bool _filtered; /* filter() was called */ - bool _buffered; /* setvbuf uses _setbuf data */ bool _prescreen; /* is in prescreen phase */ bool _use_env; /* LINES & COLS from environment? */ int _checkfd; /* filedesc for typeahead check */ @@ -964,18 +955,11 @@ struct screen { struct _SLK *_slk; /* ptr to soft key struct / NULL */ int slk_format; /* selected format for this screen */ /* cursor movement costs; units are 10ths of milliseconds */ -#if NCURSES_NO_PADDING - bool _no_padding; /* flag to set if padding disabled */ -#endif int _char_padding; /* cost of character put */ int _cr_cost; /* cost of (carriage_return) */ int _cup_cost; /* cost of (cursor_address) */ int _home_cost; /* cost of (cursor_home) */ int _ll_cost; /* cost of (cursor_to_ll) */ -#if USE_HARD_TABS - int _ht_cost; /* cost of (tab) */ - int _cbt_cost; /* cost of (backtab) */ -#endif /* USE_HARD_TABS */ int _cub1_cost; /* cost of (cursor_left) */ int _cuf1_cost; /* cost of (cursor_right) */ int _cud1_cost; /* cost of (cursor_down) */ @@ -1009,18 +993,13 @@ struct screen { int _scrolling; /* 1 if terminal's smart enough to */ /* used in lib_color.c */ + rgb_bits_t _direct_color; /* RGB overrides color-table */ color_t *_color_table; /* screen's color palette */ int _color_count; /* count of colors in palette */ colorpair_t *_color_pairs; /* screen's color pair list */ - int _pair_count; /* count of color pairs */ + int _pair_count; /* same as COLOR_PAIRS */ int _pair_limit; /* actual limit of color-pairs */ -#if NCURSES_EXT_FUNCS - bool _default_color; /* use default colors */ - bool _has_sgr_39_49; /* has ECMA default color support */ - int _default_fg; /* assumed default foreground */ - int _default_bg; /* assumed default background */ - int _default_pairs; /* count pairs using default color */ -#endif + int _pair_alloc; /* current table-size of color-pairs */ chtype _ok_attributes; /* valid attributes for terminal */ chtype _xmc_suppress; /* attributes to suppress if xmc */ chtype _xmc_triggers; /* attributes to process if xmc */ @@ -1055,11 +1034,68 @@ struct screen { void (*_mouse_wrap) (SCREEN *); int _mouse_fd; /* file-descriptor, if any */ bool _mouse_active; /* true if initialized */ - mmask_t _mouse_mask; + mmask_t _mouse_mask; /* set via mousemask() */ + mmask_t _mouse_mask2; /* OR's in press/release bits */ + mmask_t _mouse_bstate; + MouseFormat _mouse_format; /* type of xterm mouse protocol */ NCURSES_CONST char *_mouse_xtermcap; /* string to enable/disable mouse */ MEVENT _mouse_events[EV_MAX]; /* hold the last mouse event seen */ MEVENT *_mouse_eventp; /* next free slot in event queue */ + /* + * These are data that support the proper handling of the panel stack on an + * per screen basis. + */ + struct panelhook _panelHook; + + bool _sig_winch; + SCREEN *_next_screen; + + /* hashes for old and new lines */ + unsigned long *oldhash, *newhash; + HASHMAP *hashtab; + int hashtab_len; + int *_oldnum_list; + int _oldnum_size; + + NCURSES_SP_OUTC _outch; /* output handler if not putc */ + NCURSES_OUTC jump; + + ripoff_t rippedoff[N_RIPS]; + ripoff_t *rsp; + + int _legacy_coding; /* see use_legacy_coding() */ + +#if NCURSES_NO_PADDING + bool _no_padding; /* flag to set if padding disabled */ +#endif + +#if USE_HARD_TABS + int _ht_cost; /* cost of (tab) */ + int _cbt_cost; /* cost of (backtab) */ +#endif /* USE_HARD_TABS */ + + /* used in lib_vidattr.c */ +#if USE_ITALIC + bool _use_ritm; /* true if we may use 'ritm' */ +#endif + + /* used in getch/twait */ +#if USE_KLIBC_KBD + bool _extended_key; /* true if an extended key */ +#endif + + /* used in lib_color.c */ +#if NCURSES_EXT_FUNCS + bool _assumed_color; /* use assumed colors */ + bool _default_color; /* use default colors */ + bool _has_sgr_39_49; /* has ECMA default color support */ + int _default_fg; /* assumed default foreground */ + int _default_bg; /* assumed default background */ + int _default_pairs; /* count pairs using default color */ +#endif + + /* system-dependent mouse data */ #if USE_GPM_SUPPORT bool _mouse_gpm_loaded; bool _mouse_gpm_found; @@ -1090,7 +1126,7 @@ struct screen { int _sysmouse_new_buttons; #endif -#ifdef USE_TERM_DRIVER +#if defined(USE_TERM_DRIVER) || defined(EXP_WIN32_DRIVER) MEVENT _drv_mouse_fifo[FIFO_SIZE]; int _drv_mouse_head; int _drv_mouse_tail; @@ -1102,28 +1138,13 @@ struct screen { */ #if USE_SIZECHANGE int (*_resize)(NCURSES_SP_DCLx int y, int x); + int (*_ungetch)(SCREEN *, int); #endif - /* - * These are data that support the proper handling of the panel stack on an - * per screen basis. - */ - struct panelhook _panelHook; - - bool _sig_winch; - SCREEN *_next_screen; - - /* hashes for old and new lines */ - unsigned long *oldhash, *newhash; - HASHMAP *hashtab; - int hashtab_len; - int *_oldnum_list; - int _oldnum_size; - - bool _cleanup; /* cleanup after int/quit signal */ - NCURSES_SP_OUTC _outch; /* output handler if not putc */ - - int _legacy_coding; /* see use_legacy_coding() */ +#ifdef USE_SP_WINDOWLIST + WINDOWLIST* _windowlist; +#define WindowList(sp) (sp)->_windowlist +#endif #if USE_REENTRANT char _ttytype[NAMESIZE]; @@ -1131,24 +1152,11 @@ struct screen { int _TABSIZE; int _LINES; int _COLS; -#ifdef TRACE - long _outchars; - const char *_tputs_trace; -#endif #endif -#ifdef TRACE - char tracechr_buf[40]; - char tracemse_buf[TRACEMSE_MAX]; -#endif -#ifdef USE_SP_WINDOWLIST - WINDOWLIST* _windowlist; -#define WindowList(sp) (sp)->_windowlist +#if NCURSES_SP_FUNCS + bool use_tioctl; #endif - NCURSES_OUTC jump; - - ripoff_t rippedoff[N_RIPS]; - ripoff_t *rsp; /* * ncurses/ncursesw are the same up to this point. @@ -1158,8 +1166,25 @@ struct screen { * UTF-8, but do not permit ACS at the same time (see tty_update.c). */ bool _screen_acs_fix; + bool _screen_unicode; #endif -}; + +#if NCURSES_EXT_FUNCS && NCURSES_EXT_COLORS + void *_ordered_pairs; /* index used by alloc_pair() */ + int _pairs_used; /* actual number of color-pairs used */ + int _recent_pair; /* number for most recent free-pair */ +#endif + +#ifdef TRACE + char tracechr_buf[40]; + char tracemse_buf[TRACEMSE_MAX]; +#if USE_REENTRANT + long _outchars; + const char *_tputs_trace; +#endif +#endif +#undef SCREEN +} SCREEN; extern NCURSES_EXPORT_VAR(SCREEN *) _nc_screen_chain; extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; @@ -1168,7 +1193,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; WINDOWLIST *next; SCREEN *screen; /* screen containing the window */ WINDOW win; /* WINDOW_EXT() needs to account for offset */ -#ifdef NCURSES_WIDECHAR +#if NCURSES_WIDECHAR char addch_work[(MB_LEN_MAX * 9) + 1]; unsigned addch_used; /* number of bytes in addch_work[] */ int addch_x; /* x-position for addch_work[] */ @@ -1178,6 +1203,12 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define WINDOW_EXT(w,m) (((WINDOWLIST *)((void *)((char *)(w) - offsetof(WINDOWLIST, win))))->m) +#ifdef USE_SP_WINDOWLIST +#define SP_INIT_WINDOWLIST(sp) WindowList(sp) = 0 +#else +#define SP_INIT_WINDOWLIST(sp) /* nothing */ +#endif + #define SP_PRE_INIT(sp) \ sp->_cursrow = -1; \ sp->_curscol = -1; \ @@ -1186,10 +1217,10 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; sp->_cbreak = 0; \ sp->_echo = TRUE; \ sp->_fifohead = -1; \ - sp->_endwin = TRUE; \ + sp->_endwin = ewSuspend; \ sp->_cursor = -1; \ - WindowList(sp) = 0; \ - sp->_outch = NCURSES_SP_NAME(_nc_outch); \ + SP_INIT_WINDOWLIST(sp); \ + sp->_outch = NCURSES_OUTC_FUNC; \ sp->jump = 0 \ /* usually in <limits.h> */ @@ -1267,8 +1298,10 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define UChar(c) ((unsigned char)(c)) #define UShort(c) ((unsigned short)(c)) -#define ChCharOf(c) ((c) & (chtype)A_CHARTEXT) -#define ChAttrOf(c) ((c) & (chtype)A_ATTRIBUTES) +#define ChCharOf(c) ((chtype)(c) & (chtype)A_CHARTEXT) +#define ChAttrOf(c) ((chtype)(c) & (chtype)A_ATTRIBUTES) + +#define TR_PUTC(c) TR(TRACE_CHARPUT, ("PUTC %#x", UChar(c))) #ifndef MB_LEN_MAX #define MB_LEN_MAX 8 /* should be >= MB_CUR_MAX, but that may be a function */ @@ -1277,7 +1310,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #if USE_WIDEC_SUPPORT /* { */ #define isEILSEQ(status) (((size_t)status == (size_t)-1) && (errno == EILSEQ)) -#define init_mb(state) memset(&state, 0, sizeof(state)) +#define init_mb(state) memset(&(state), 0, sizeof(state)) #if NCURSES_EXT_COLORS #define NulColor , 0 @@ -1304,42 +1337,52 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; && (a).chars[3] == (b).chars[3] \ && (a).chars[4] == (b).chars[4] \ if_EXT_COLORS(&& (a).ext_color == (b).ext_color)) +#elif CCHARW_MAX > 0 +#error Inconsistent values for CCHARW_MAX #else #define CharEq(a,b) (!memcmp(&(a), &(b), sizeof(a))) #endif #define SetChar(ch,c,a) do { \ - NCURSES_CH_T *_cp = &ch; \ + NCURSES_CH_T *_cp = &(ch); \ memset(_cp, 0, sizeof(ch)); \ _cp->chars[0] = (wchar_t) (c); \ _cp->attr = (a); \ if_EXT_COLORS(SetPair(ch, PairNumber(a))); \ } while (0) -#define CHREF(wch) (&wch) -#define CHDEREF(wch) (*wch) +#define CHREF(wch) (&(wch)) +#define CHDEREF(wch) (*(wch)) #define ARG_CH_T NCURSES_CH_T * #define CARG_CH_T const NCURSES_CH_T * #define PUTC_DATA char PUTC_buf[MB_LEN_MAX]; int PUTC_i, PUTC_n; \ mbstate_t PUT_st; wchar_t PUTC_ch #define PUTC_INIT init_mb (PUT_st) -#define PUTC(ch,b) do { if(!isWidecExt(ch)) { \ +#define PUTC(ch) do { if(!isWidecExt(ch)) { \ if (Charable(ch)) { \ - fputc(CharOf(ch), b); \ + TR_PUTC(CharOf(ch)); \ + NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \ COUNT_OUTCHARS(1); \ } else { \ - PUTC_INIT; \ for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) { \ PUTC_ch = (ch).chars[PUTC_i]; \ if (PUTC_ch == L'\0') \ break; \ + PUTC_INIT; \ PUTC_n = (int) wcrtomb(PUTC_buf, \ (ch).chars[PUTC_i], &PUT_st); \ if (PUTC_n <= 0) { \ - if (PUTC_ch && is8bits(PUTC_ch) && PUTC_i == 0) \ - putc(PUTC_ch,b); \ + if (PUTC_ch && is8bits(PUTC_ch) && PUTC_i == 0) { \ + TR_PUTC(CharOf(ch)); \ + NCURSES_OUTC_FUNC (NCURSES_SP_ARGx CharOf(ch)); \ + } \ break; \ + } else { \ + int PUTC_j; \ + for (PUTC_j = 0; PUTC_j < PUTC_n; ++PUTC_j) { \ + TR_PUTC(PUTC_buf[PUTC_j]); \ + NCURSES_OUTC_FUNC (NCURSES_SP_ARGx PUTC_buf[PUTC_j]); \ + } \ } \ - IGNORE_RC(fwrite(PUTC_buf, (unsigned) PUTC_n, 1, b)); \ } \ COUNT_OUTCHARS(PUTC_i); \ } } } while (0) @@ -1362,11 +1405,11 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; AttrOf(dst) |= (attr_t) (ext + 1) #define if_WIDEC(code) code -#define Charable(ch) ((SP_PARM != 0 && SP_PARM->_legacy_coding) \ +#define Charable(ch) (((SP_PARM->_legacy_coding) \ || (AttrOf(ch) & A_ALTCHARSET) \ - || (!isWidecExt(ch) && \ + || (!isWidecExt(ch))) && \ (ch).chars[1] == L'\0' && \ - _nc_is_charable(CharOf(ch)))) + _nc_is_charable(CharOf(ch))) #define L(ch) L ## ch #else /* }{ */ @@ -1383,8 +1426,11 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define CHDEREF(wch) wch #define ARG_CH_T NCURSES_CH_T #define CARG_CH_T NCURSES_CH_T -#define PUTC_DATA int data = 0 -#define PUTC(ch,b) do { data = CharOf(ch); putc(data,b); } while (0) +#define PUTC_DATA /* nothing */ +#define PUTC(ch) { \ + TR_PUTC(ch); \ + NCURSES_OUTC_FUNC (NCURSES_SP_ARGx (int) ch); \ + } #define BLANK (' '|A_NORMAL) #define ZEROS ('\0'|A_NORMAL) @@ -1393,6 +1439,7 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define isWidecExt(ch) (0) #define if_WIDEC(code) /* nothing */ +#define Charable(ch) ((ch) >= ' ' && (ch) <= '~') #define L(ch) ch #endif /* } */ @@ -1412,25 +1459,25 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define CHANGED_CELL(line,col) \ if (line->firstchar == _NOCHANGE) \ - line->firstchar = line->lastchar = (NCURSES_SIZE_T) col; \ + line->firstchar = line->lastchar = (NCURSES_SIZE_T) (col); \ else if ((col) < line->firstchar) \ - line->firstchar = (NCURSES_SIZE_T) col; \ + line->firstchar = (NCURSES_SIZE_T) (col); \ else if ((col) > line->lastchar) \ - line->lastchar = (NCURSES_SIZE_T) col + line->lastchar = (NCURSES_SIZE_T) (col) #define CHANGED_RANGE(line,start,end) \ if (line->firstchar == _NOCHANGE \ || line->firstchar > (start)) \ - line->firstchar = (NCURSES_SIZE_T) start; \ + line->firstchar = (NCURSES_SIZE_T) (start); \ if (line->lastchar == _NOCHANGE \ || line->lastchar < (end)) \ - line->lastchar = (NCURSES_SIZE_T) end + line->lastchar = (NCURSES_SIZE_T) (end) #define CHANGED_TO_EOL(line,start,end) \ if (line->firstchar == _NOCHANGE \ || line->firstchar > (start)) \ - line->firstchar = (NCURSES_SIZE_T) start; \ - line->lastchar = (NCURSES_SIZE_T) end + line->firstchar = (NCURSES_SIZE_T) (start); \ + line->lastchar = (NCURSES_SIZE_T) (end) #define SIZEOF(v) (sizeof(v)/sizeof(v[0])) @@ -1439,9 +1486,28 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; /* FreeAndNull() is not a comma-separated expression because some compilers * do not accept a mixture of void with values. */ -#define FreeAndNull(p) free(p); p = 0 +#define FreeAndNull(p) do { free(p); p = 0; } while (0) #include <nc_alloc.h> +#include <nc_access.h> + +/* + * Use these for tic/infocmp malloc failures. Generally the ncurses library + * tries to limp along after a failure. + */ +#define TYPE_MALLOC(type, size, name) \ + do { \ + name = typeMalloc(type, size); \ + if (name == 0) \ + _nc_err_abort(MSG_NO_MEMORY); \ + } while (0) + +#define TYPE_REALLOC(type, size, name) \ + do { \ + name = typeRealloc(type, size, name); \ + if (name == 0) \ + _nc_err_abort(MSG_NO_MEMORY); \ + } while (0) /* * TTY bit definition for converting tabs to spaces. @@ -1460,6 +1526,14 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; # endif #endif +#ifdef __TANDEM +#define ROOT_UID 65535 +#endif + +#ifndef ROOT_UID +#define ROOT_UID 0 +#endif + /* * Standardize/simplify common loops */ @@ -1476,6 +1550,9 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define T_CREATE(fmt) "create :" fmt #define T_RETURN(fmt) "return }" fmt +#define NonNull(s) ((s) != 0 ? s : "<null>") +#define NonEmpty(s) ((s) != 0 && *(s) != '\0') + #ifdef TRACE #if USE_REENTRANT @@ -1484,12 +1561,16 @@ extern NCURSES_EXPORT_VAR(SIG_ATOMIC_T) _nc_have_sigwinch; #define TPUTS_TRACE(s) _nc_tputs_trace = s; #endif +#ifdef HAVE_CONSISTENT_GETENV #define START_TRACE() \ if ((_nc_tracing & TRACE_MAXIMUM) == 0) { \ int t = _nc_getenv_num("NCURSES_TRACE"); \ if (t >= 0) \ - trace((unsigned) t); \ + curses_trace((unsigned) t); \ } +#else +#define START_TRACE() /* nothing */ +#endif /* * Many of the _tracef() calls use static buffers; lock the trace state before @@ -1506,40 +1587,47 @@ extern NCURSES_EXPORT(void) _nc_locked_tracef (const char *, ...) GCC_PRINTFLIKE #define TR(n, a) if (USE_TRACEF(n)) _nc_locked_tracef a #define T(a) TR(TRACE_CALLS, a) -#define TRACE_RETURN(value,type) return _nc_retrace_##type(value) +#define TRACE_RETURN(value,type) return _nc_retrace_##type((type)(value)) +#define TRACE_RETURN1(value,dst) return _nc_retrace_##dst(value) #define TRACE_RETURN2(value,dst,src) return _nc_retrace_##dst##_##src(value) #define TRACE_RETURN_SP(value,type) return _nc_retrace_##type(SP_PARM, value) -#define NonNull(s) ((s) != 0 ? s : "<null>") +typedef void VoidFunc(void); + +#define TR_FUNC_LEN ((sizeof(void *) + sizeof(void (*)(void))) * 2 + 4) +#define TR_FUNC_BFR(max) char tr_func_data[max][TR_FUNC_LEN] +#define TR_FUNC_ARG(num,func) _nc_fmt_funcptr(&tr_func_data[num][0], (const char *)&(func), sizeof((func))) #define returnAttr(code) TRACE_RETURN(code,attr_t) #define returnBits(code) TRACE_RETURN(code,unsigned) #define returnBool(code) TRACE_RETURN(code,bool) -#define returnCPtr(code) TRACE_RETURN(code,cptr) -#define returnCVoidPtr(code) TRACE_RETURN(code,cvoid_ptr) +#define returnCPtr(code) TRACE_RETURN1(code,cptr) +#define returnCVoidPtr(code) TRACE_RETURN1(code,cvoid_ptr) #define returnChar(code) TRACE_RETURN(code,char) #define returnChtype(code) TRACE_RETURN(code,chtype) #define returnCode(code) TRACE_RETURN(code,int) #define returnIntAttr(code) TRACE_RETURN2(code,int,attr_t) #define returnMMask(code) TRACE_RETURN_SP(code,mmask_t) -#define returnPtr(code) TRACE_RETURN(code,ptr) -#define returnSP(code) TRACE_RETURN(code,sp) +#define returnPtr(code) TRACE_RETURN1(code,ptr) +#define returnSP(code) TRACE_RETURN1(code,sp) #define returnVoid T((T_RETURN(""))); return -#define returnVoidPtr(code) TRACE_RETURN(code,void_ptr) -#define returnWin(code) TRACE_RETURN(code,win) +#define returnVoidPtr(code) TRACE_RETURN1(code,void_ptr) +#define returnWin(code) TRACE_RETURN1(code,win) -extern NCURSES_EXPORT(NCURSES_BOOL) _nc_retrace_bool (NCURSES_BOOL); +#define returnDB(rc) do { TR(TRACE_DATABASE,(T_RETURN("code %d"), (rc))); return (rc); } while (0) + +extern NCURSES_EXPORT(NCURSES_BOOL) _nc_retrace_bool (int); extern NCURSES_EXPORT(NCURSES_CONST void *) _nc_retrace_cvoid_ptr (NCURSES_CONST void *); extern NCURSES_EXPORT(SCREEN *) _nc_retrace_sp (SCREEN *); extern NCURSES_EXPORT(WINDOW *) _nc_retrace_win (WINDOW *); extern NCURSES_EXPORT(attr_t) _nc_retrace_attr_t (attr_t); extern NCURSES_EXPORT(char *) _nc_retrace_ptr (char *); -extern NCURSES_EXPORT(char *) _nc_trace_ttymode(TTY *tty); +extern NCURSES_EXPORT(char *) _nc_trace_ttymode(const TTY *tty); extern NCURSES_EXPORT(char *) _nc_varargs (const char *, va_list); extern NCURSES_EXPORT(chtype) _nc_retrace_chtype (chtype); extern NCURSES_EXPORT(const char *) _nc_altcharset_name(attr_t, chtype); extern NCURSES_EXPORT(const char *) _nc_retrace_cptr (const char *); -extern NCURSES_EXPORT(char) _nc_retrace_char (char); +extern NCURSES_EXPORT(char) _nc_retrace_char (int); extern NCURSES_EXPORT(int) _nc_retrace_int (int); extern NCURSES_EXPORT(int) _nc_retrace_int_attr_t (attr_t); extern NCURSES_EXPORT(mmask_t) _nc_retrace_mmask_t (SCREEN *, mmask_t); @@ -1547,6 +1635,8 @@ extern NCURSES_EXPORT(unsigned) _nc_retrace_unsigned (unsigned); extern NCURSES_EXPORT(void *) _nc_retrace_void_ptr (void *); extern NCURSES_EXPORT(void) _nc_fifo_dump (SCREEN *); +extern NCURSES_EXPORT(char *) _nc_fmt_funcptr(char *, const char *, size_t); + #if USE_REENTRANT NCURSES_WRAPPED_VAR(long, _nc_outchars); NCURSES_WRAPPED_VAR(const char *, _nc_tputs_trace); @@ -1561,6 +1651,10 @@ extern NCURSES_EXPORT_VAR(long) _nc_outchars; extern NCURSES_EXPORT_VAR(unsigned) _nc_tracing; +extern NCURSES_EXPORT(char *) _nc_tracebits (void); +extern NCURSES_EXPORT(char *) _tracemouse (const MEVENT *); +extern NCURSES_EXPORT(void) _tracedump (const char *, WINDOW *); + #if USE_WIDEC_SUPPORT extern NCURSES_EXPORT(const char *) _nc_viswbuf2 (int, const wchar_t *); extern NCURSES_EXPORT(const char *) _nc_viswbufn (const wchar_t *, int); @@ -1576,6 +1670,7 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int); #define T(a) #define TR(n, a) #define TPUTS_TRACE(s) +#define TR_FUNC_BFR(max) #define returnAttr(code) return code #define returnBits(code) return code @@ -1593,6 +1688,8 @@ extern NCURSES_EXPORT(const char *) _nc_viscbuf (const NCURSES_CH_T *, int); #define returnVoidPtr(code) return code #define returnWin(code) return code +#define returnDB(code) return code + #endif /* TRACE/!TRACE */ /* @@ -1619,7 +1716,9 @@ extern NCURSES_EXPORT(void) name (void); \ NCURSES_EXPORT(void) name (void) { } #define ALL_BUT_COLOR ((chtype)~(A_COLOR)) -#define NONBLANK_ATTR (A_NORMAL|A_BOLD|A_DIM|A_BLINK) +#define NONBLANK_ATTR (A_BOLD | A_DIM | A_BLINK | A_ITALIC) +#define TPARM_ATTR (A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_ALTCHARSET | A_INVIS | A_PROTECT) +#define XMC_CONFLICT (A_STANDOUT | A_UNDERLINE | A_REVERSE | A_BLINK | A_DIM | A_BOLD | A_INVIS | A_PROTECT | A_ITALIC) #define XMC_CHANGES(c) ((c) & SP_PARM->_xmc_suppress) #define toggle_attr_on(S,at) {\ @@ -1658,7 +1757,7 @@ extern NCURSES_EXPORT(void) name (void); \ #if USE_XMC_SUPPORT #define UpdateAttrs(sp,c) if (!SameAttrOf(SCREEN_ATTRS(sp), c)) { \ attr_t chg = AttrOf(SCREEN_ATTRS(sp)); \ - VIDATTR(sp, AttrOf(c), GetPair(c)); \ + VIDPUTS(sp, AttrOf(c), GetPair(c)); \ if (magic_cookie_glitch > 0 \ && XMC_CHANGES((chg ^ AttrOf(SCREEN_ATTRS(sp))))) { \ T(("%s @%d before glitch %d,%d", \ @@ -1670,7 +1769,7 @@ extern NCURSES_EXPORT(void) name (void); \ } #else #define UpdateAttrs(sp,c) if (!SameAttrOf(SCREEN_ATTRS(sp), c)) { \ - VIDATTR(sp, AttrOf(c), GetPair(c)); \ + VIDPUTS(sp, AttrOf(c), GetPair(c)); \ } #endif @@ -1737,6 +1836,20 @@ extern NCURSES_EXPORT(void) _nc_expanded (void); #define getcwd(buf,len) getwd(buf) #endif +#define save_ttytype(termp) \ + if (TerminalType(termp).term_names != 0) { \ + _nc_STRNCPY(ttytype, \ + TerminalType(termp).term_names, \ + NAMESIZE - 1); \ + ttytype[NAMESIZE - 1] = '\0'; \ + } + +#if !NCURSES_WCWIDTH_GRAPHICS +extern NCURSES_EXPORT(int) _nc_wacs_width(unsigned); +#else +#define _nc_wacs_width(ch) wcwidth(ch) +#endif + /* charable.c */ #if USE_WIDEC_SUPPORT extern NCURSES_EXPORT(bool) _nc_is_charable(wchar_t); @@ -1759,6 +1872,16 @@ typedef struct short source; } alias_table_data; +/* comp_userdefs.c */ +typedef struct { + short ute_name; /* offset of name to hash on */ + unsigned ute_type; /* mask (BOOLEAN, NUMBER, STRING) */ + unsigned ute_argc; /* number of parameters */ + unsigned ute_args; /* bit-mask for string parameters */ + short ute_index; /* index of associated variable in its array */ + short ute_link; /* index in table of next hash, or -1 */ +} user_table_data; + /* doupdate.c */ #if USE_XMC_SUPPORT extern NCURSES_EXPORT(void) _nc_do_xmc_glitch (attr_t); @@ -1784,7 +1907,16 @@ extern NCURSES_EXPORT(int) _nc_wchstrlen(const cchar_t *); #endif /* lib_color.c */ +extern NCURSES_EXPORT(int) _nc_init_color(SCREEN *, int, int, int, int); +extern NCURSES_EXPORT(int) _nc_init_pair(SCREEN *, int, int, int); +extern NCURSES_EXPORT(int) _nc_pair_content(SCREEN *, int, int *, int *); extern NCURSES_EXPORT(bool) _nc_reset_colors(void); +extern NCURSES_EXPORT(void) _nc_reserve_pairs(SCREEN *, int); +extern NCURSES_EXPORT(void) _nc_change_pair(SCREEN *, int); + +#define ReservePairs(sp,want) \ + if ((sp->_color_pairs == 0) || (want >= sp->_pair_alloc)) \ + _nc_reserve_pairs(sp, want) /* lib_getch.c */ extern NCURSES_EXPORT(int) _nc_wgetch(WINDOW *, int *, int EVENTLIST_2nd(_nc_eventlist *)); @@ -1795,6 +1927,8 @@ extern NCURSES_EXPORT(int) _nc_insert_ch(SCREEN *, WINDOW *, chtype); /* lib_mvcur.c */ #define INFINITY 1000000 /* cost: too high to use */ +extern NCURSES_EXPORT(int) _nc_mvcur(int yold, int xold, int ynew, int xnew); + extern NCURSES_EXPORT(void) _nc_mvcur_init (void); extern NCURSES_EXPORT(void) _nc_mvcur_resume (void); extern NCURSES_EXPORT(void) _nc_mvcur_wrap (void); @@ -1816,12 +1950,45 @@ extern NCURSES_EXPORT(bool) _nc_has_mouse (SCREEN *); extern NCURSES_EXPORT(char *) _nc_get_locale(void); extern NCURSES_EXPORT(int) _nc_unicode_locale(void); extern NCURSES_EXPORT(int) _nc_locale_breaks_acs(TERMINAL *); -extern NCURSES_EXPORT(int) _nc_setupterm(NCURSES_CONST char *, int, int *, bool); -extern NCURSES_EXPORT(void) _nc_tinfo_cmdch(TERMINAL *, char); +extern NCURSES_EXPORT(int) _nc_setupterm(const char *, int, int *, int); +extern NCURSES_EXPORT(void) _nc_tinfo_cmdch(TERMINAL *, int); + +#ifdef USE_PTHREADS +extern NCURSES_EXPORT(SCREEN *) _nc_find_prescr(void); +extern NCURSES_EXPORT(void) _nc_forget_prescr(void); +#else +#define _nc_find_prescr() _nc_prescreen.allocated +#define _nc_forget_prescr() _nc_prescreen.allocated = 0 +#endif /* lib_set_term.c */ extern NCURSES_EXPORT(int) _nc_ripoffline(int, int(*)(WINDOW*, int)); +/* lib_setup.c */ +#define ExitTerminfo(code) exit_terminfo(code) + +#define SETUP_FAIL ERR + +#define ret_error(rc, fmt, p, q) if (errret) {\ + *errret = rc;\ + q;\ + returnCode(SETUP_FAIL);\ + } else {\ + fprintf(stderr, fmt, p);\ + q;\ + ExitTerminfo(EXIT_FAILURE);\ + } + +#define ret_error1(rc, fmt, p, q) ret_error(rc, "'%s': " fmt, p, q) + +#define ret_error0(rc, msg) if (errret) {\ + *errret = rc;\ + returnCode(SETUP_FAIL);\ + } else {\ + fprintf(stderr, msg);\ + ExitTerminfo(EXIT_FAILURE);\ + } + /* lib_tstp.c */ #if USE_SIGWINCH extern NCURSES_EXPORT(int) _nc_handle_sigwinch(SCREEN *); @@ -1863,7 +2030,6 @@ extern NCURSES_EXPORT(int) _nc_remove_key (TRIES **, unsigned); extern NCURSES_EXPORT(int) _nc_remove_string (TRIES **, const char *); /* elsewhere ... */ -extern NCURSES_EXPORT(ENTRY *) _nc_delink_entry (ENTRY *, TERMTYPE *); extern NCURSES_EXPORT(SCREEN *) _nc_screen_of (WINDOW *); extern NCURSES_EXPORT(TERMINAL*) _nc_get_cur_term (void); extern NCURSES_EXPORT(WINDOW *) _nc_makenew (int, int, int, int, int); @@ -1871,23 +2037,25 @@ extern NCURSES_EXPORT(char *) _nc_trace_buf (int, size_t); extern NCURSES_EXPORT(char *) _nc_trace_bufcat (int, const char *); extern NCURSES_EXPORT(char *) _nc_tracechar (SCREEN *, int); extern NCURSES_EXPORT(char *) _nc_tracemouse (SCREEN *, MEVENT const *); +extern NCURSES_EXPORT(char *) _nc_trace_mmask_t (SCREEN *, mmask_t); extern NCURSES_EXPORT(int) _nc_access (const char *, int); extern NCURSES_EXPORT(int) _nc_baudrate (int); extern NCURSES_EXPORT(int) _nc_freewin (WINDOW *); extern NCURSES_EXPORT(int) _nc_getenv_num (const char *); -extern NCURSES_EXPORT(int) _nc_keypad (SCREEN *, bool); +extern NCURSES_EXPORT(int) _nc_keypad (SCREEN *, int); extern NCURSES_EXPORT(int) _nc_ospeed (int); extern NCURSES_EXPORT(int) _nc_outch (int); +extern NCURSES_EXPORT(int) _nc_putchar (int); extern NCURSES_EXPORT(int) _nc_putp(const char *, const char *); extern NCURSES_EXPORT(int) _nc_putp_flush(const char *, const char *); -extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE *const); -extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, bool, int); -extern NCURSES_EXPORT(int) _nc_setup_tinfo(const char *, TERMTYPE *); +extern NCURSES_EXPORT(int) _nc_read_termcap_entry (const char *const, TERMTYPE2 *const); +extern NCURSES_EXPORT(int) _nc_setup_tinfo(const char *, TERMTYPE2 *); +extern NCURSES_EXPORT(int) _nc_setupscreen (int, int, FILE *, int, int); extern NCURSES_EXPORT(int) _nc_timed_wait (SCREEN *, int, int, int * EVENTLIST_2nd(_nc_eventlist *)); -extern NCURSES_EXPORT(void) _nc_do_color (short, short, bool, NCURSES_OUTC); +extern NCURSES_EXPORT(void) _nc_init_termtype (TERMTYPE2 *const); +extern NCURSES_EXPORT(void) _nc_do_color (int, int, int, NCURSES_OUTC); extern NCURSES_EXPORT(void) _nc_flush (void); -extern NCURSES_EXPORT(void) _nc_free_and_exit (int) GCC_NORETURN; -extern NCURSES_EXPORT(void) _nc_free_entry (ENTRY *, TERMTYPE *); +extern NCURSES_EXPORT(void) _nc_free_entry (ENTRY *, TERMTYPE2 *); extern NCURSES_EXPORT(void) _nc_freeall (void); extern NCURSES_EXPORT(void) _nc_hash_map (void); extern NCURSES_EXPORT(void) _nc_init_keytry (SCREEN *); @@ -1895,26 +2063,48 @@ extern NCURSES_EXPORT(void) _nc_keep_tic_dir (const char *); extern NCURSES_EXPORT(void) _nc_make_oldhash (int i); extern NCURSES_EXPORT(void) _nc_scroll_oldhash (int n, int top, int bot); extern NCURSES_EXPORT(void) _nc_scroll_optimize (void); -extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, bool); -extern NCURSES_EXPORT(void) _nc_signal_handler (bool); +extern NCURSES_EXPORT(void) _nc_set_buffer (FILE *, int); +extern NCURSES_EXPORT(void) _nc_setenv_num (const char *, int); +extern NCURSES_EXPORT(void) _nc_signal_handler (int); extern NCURSES_EXPORT(void) _nc_synchook (WINDOW *); extern NCURSES_EXPORT(void) _nc_trace_tries (TRIES *); +#if NCURSES_EXT_NUMBERS +extern NCURSES_EXPORT(const TERMTYPE2 *) _nc_fallback2 (const char *); +#else +#define _nc_fallback2(tp) _nc_fallback(tp) +#endif + +#if NCURSES_EXT_NUMBERS +extern NCURSES_EXPORT(void) _nc_copy_termtype2 (TERMTYPE2 *, const TERMTYPE2 *); +extern NCURSES_EXPORT(void) _nc_export_termtype2(TERMTYPE *, const TERMTYPE2 *); +#else +#define _nc_copy_termtype2(dst,src) _nc_copy_termtype((dst),(src)) +#define _nc_export_termtype2(dst,src) /* nothing */ +#define _nc_free_termtype2(t) _nc_free_termtype(t) +/* also... */ +#define _nc_read_entry2 _nc_read_entry +#endif + #if NO_LEAKS extern NCURSES_EXPORT(void) _nc_alloc_entry_leaks(void); extern NCURSES_EXPORT(void) _nc_captoinfo_leaks(void); extern NCURSES_EXPORT(void) _nc_codes_leaks(void); extern NCURSES_EXPORT(void) _nc_comp_captab_leaks(void); +extern NCURSES_EXPORT(void) _nc_comp_error_leaks(void); extern NCURSES_EXPORT(void) _nc_comp_scan_leaks(void); +extern NCURSES_EXPORT(void) _nc_comp_userdefs_leaks(void); +extern NCURSES_EXPORT(void) _nc_db_iterator_leaks(void); extern NCURSES_EXPORT(void) _nc_keyname_leaks(void); extern NCURSES_EXPORT(void) _nc_names_leaks(void); +extern NCURSES_EXPORT(void) _nc_tgetent_leak(TERMINAL *); extern NCURSES_EXPORT(void) _nc_tgetent_leaks(void); #endif #if !(defined(USE_TERMLIB) || defined(USE_BUILD_CC)) extern NCURSES_EXPORT(NCURSES_CH_T) _nc_render (WINDOW *, NCURSES_CH_T); extern NCURSES_EXPORT(int) _nc_waddch_nosync (WINDOW *, const NCURSES_CH_T); -extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, NCURSES_SIZE_T const, NCURSES_SIZE_T const, NCURSES_CH_T); +extern NCURSES_EXPORT(void) _nc_scroll_window (WINDOW *, int const, int const, int const, NCURSES_CH_T); #endif #if USE_WIDEC_SUPPORT @@ -1946,21 +2136,39 @@ extern NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist *); * Wide-character macros to hide some platform-differences. */ #if USE_WIDEC_SUPPORT + +#if defined(_NC_WINDOWS) && !defined(_NC_MSC) && !defined(EXP_WIN32_DRIVER) +/* + * MinGW has wide-character functions, but they do not work correctly. + */ +extern int __MINGW_NOTHROW _nc_wctomb(char *, wchar_t); +#define wctomb(s,wc) _nc_wctomb(s,wc) +#define wcrtomb(s,wc,n) _nc_wctomb(s,wc) + +extern int __MINGW_NOTHROW _nc_mbtowc(wchar_t *, const char *, size_t); +#define mbtowc(pwc,s,n) _nc_mbtowc(pwc,s,n) + +extern int __MINGW_NOTHROW _nc_mblen(const char *, size_t); +#define mblen(s,n) _nc_mblen(s, n) + +#endif /* _NC_WINDOWS && !_NC_MSC */ + #if HAVE_MBTOWC && HAVE_MBLEN -#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) +#define reset_mbytes(state) IGNORE_RC(mblen(NULL, (size_t) 0)), IGNORE_RC(mbtowc(NULL, NULL, (size_t) 0)) #define count_mbytes(buffer,length,state) mblen(buffer,length) #define check_mbytes(wch,buffer,length,state) \ - (int) mbtowc(&wch, buffer, length) + (int) mbtowc(&(wch), buffer, length) #define state_unused #elif HAVE_MBRTOWC && HAVE_MBRLEN #define reset_mbytes(state) init_mb(state) -#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state) +#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&(state)) #define check_mbytes(wch,buffer,length,state) \ - (int) mbrtowc(&wch, buffer, length, &state) + (int) mbrtowc(&(wch), buffer, length, &(state)) #else make an error #endif -#endif + +#endif /* USE_WIDEC_SUPPORT */ /* * Not everyone has vsscanf(), but we'd like to use it for scanw(). @@ -1974,9 +2182,7 @@ extern NCURSES_EXPORT_VAR(int *) _nc_oldnums; #define USE_SETBUF_0 0 -#define NC_BUFFERED(sp,flag) NCURSES_SP_NAME(_nc_set_buffer)(NCURSES_SP_ARGx sp->_ofp, flag) - -#define NC_OUTPUT(sp) ((sp != 0) ? sp->_ofp : stdout) +#define NC_OUTPUT(sp) ((sp != 0 && sp->_ofp != 0) ? sp->_ofp : stdout) /* * On systems with a broken linker, define 'SP' as a function to force the @@ -2006,7 +2212,7 @@ extern NCURSES_EXPORT_VAR(SCREEN *) SP; /* * We don't want to use the lines or columns capabilities internally, because - * if the application is running multiple screens under X, it's quite possible + * if the application is running multiple screens under X, it is quite possible * they could all have type xterm but have different sizes! So... */ #define screen_lines(sp) (sp)->_lines @@ -2049,16 +2255,15 @@ extern NCURSES_EXPORT(int) _nc_get_tty_mode(TTY *); #define SetSafeOutcWrapper(outc) \ SCREEN* sp = CURRENT_SCREEN; \ + struct screen outc_wrapper; \ if (sp==0) { \ - struct screen dummy; \ - sp = &dummy; \ + sp = &outc_wrapper; \ memset(sp,0,sizeof(struct screen)); \ sp->_outch = _nc_outc_wrapper; \ }\ sp->jump = outc #ifdef USE_TERM_DRIVER -typedef void* TERM_HANDLE; typedef struct _termInfo { @@ -2084,48 +2289,47 @@ typedef struct _termInfo typedef struct term_driver { bool isTerminfo; - bool (*CanHandle)(struct DriverTCB*,const char*,int*); - void (*init)(struct DriverTCB*); - void (*release)(struct DriverTCB*); - int (*size)(struct DriverTCB*, int* Line, int *Cols); - int (*sgmode)(struct DriverTCB*, bool setFlag, TTY*); - chtype (*conattr)(struct DriverTCB*); - int (*hwcur)(struct DriverTCB*, int yold, int xold, int y, int x); - int (*mode)(struct DriverTCB*, bool progFlag, bool defFlag); - bool (*rescol)(struct DriverTCB*); - bool (*rescolors)(struct DriverTCB*); - void (*color)(struct DriverTCB*,bool fore, int color, int(*)(SCREEN*,int)); - int (*doBeepOrFlash)(struct DriverTCB*, bool); - void (*initpair)(struct DriverTCB*,short,short,short); - void (*initcolor)(struct DriverTCB*,short,short,short,short); - void (*docolor)(struct DriverTCB*,short,short,bool,int(*)(SCREEN*,int)); - void (*initmouse)(struct DriverTCB*); - int (*testmouse)(struct DriverTCB*,int); - void (*setfilter)(struct DriverTCB*); - void (*hwlabel)(struct DriverTCB*,int,char*); - void (*hwlabelOnOff)(struct DriverTCB*,bool); - int (*update)(struct DriverTCB*); - int (*defaultcolors)(struct DriverTCB*,int,int); - int (*print)(struct DriverTCB*,char*,int); - int (*getsize)(struct DriverTCB*,int*,int*); - int (*setsize)(struct DriverTCB*,int,int); - void (*initacs)(struct DriverTCB*,chtype*,chtype*); - void (*scinit)(SCREEN *); - void (*scexit)(SCREEN *); - int (*twait)(struct DriverTCB*,int,int,int* EVENTLIST_2nd(_nc_eventlist*)); - int (*read)(struct DriverTCB*,int*); - int (*nap)(struct DriverTCB*,int); - int (*kpad)(struct DriverTCB*, bool); - int (*kyOk)(struct DriverTCB*, int, bool); - bool (*kyExist)(struct DriverTCB*, int); + const char* (*td_name)(struct DriverTCB*); + bool (*td_CanHandle)(struct DriverTCB*, const char*, int*); + void (*td_init)(struct DriverTCB*); + void (*td_release)(struct DriverTCB*); + int (*td_size)(struct DriverTCB*, int* Line, int *Cols); + int (*td_sgmode)(struct DriverTCB*, int setFlag, TTY*); + chtype (*td_conattr)(struct DriverTCB*); + int (*td_hwcur)(struct DriverTCB*, int yold, int xold, int y, int x); + int (*td_mode)(struct DriverTCB*, int progFlag, int defFlag); + bool (*td_rescol)(struct DriverTCB*); + bool (*td_rescolors)(struct DriverTCB*); + void (*td_color)(struct DriverTCB*, int fore, int color, int(*)(SCREEN*, int)); + int (*td_doBeepOrFlash)(struct DriverTCB*, int); + void (*td_initpair)(struct DriverTCB*, int, int, int); + void (*td_initcolor)(struct DriverTCB*, int, int, int, int); + void (*td_docolor)(struct DriverTCB*, int, int, int, int(*)(SCREEN*, int)); + void (*td_initmouse)(struct DriverTCB*); + int (*td_testmouse)(struct DriverTCB*, int EVENTLIST_2nd(_nc_eventlist*)); + void (*td_setfilter)(struct DriverTCB*); + void (*td_hwlabel)(struct DriverTCB*, int, char*); + void (*td_hwlabelOnOff)(struct DriverTCB*, int); + int (*td_update)(struct DriverTCB*); + int (*td_defaultcolors)(struct DriverTCB*, int, int); + int (*td_print)(struct DriverTCB*, char*, int); + int (*td_getsize)(struct DriverTCB*, int*, int*); + int (*td_setsize)(struct DriverTCB*, int, int); + void (*td_initacs)(struct DriverTCB*, chtype*, chtype*); + void (*td_scinit)(SCREEN *); + void (*td_scexit)(SCREEN *); + int (*td_twait)(struct DriverTCB*, int, int, int* EVENTLIST_2nd(_nc_eventlist*)); + int (*td_read)(struct DriverTCB*, int*); + int (*td_nap)(struct DriverTCB*, int); + int (*td_kpad)(struct DriverTCB*, int); + int (*td_kyOk)(struct DriverTCB*, int, int); + bool (*td_kyExist)(struct DriverTCB*, int); + int (*td_cursorSet)(struct DriverTCB*, int); } TERM_DRIVER; typedef struct DriverTCB { TERMINAL term; /* needs to be the first Element !!! */ - TERM_HANDLE inp; /* The input handle of the Terminal */ - TERM_HANDLE out; /* The output handle of the Terminal in shell mode */ - TERM_HANDLE hdl; /* The output handle of the Terminal in prog mode */ TERM_DRIVER* drv; /* The driver for that Terminal */ SCREEN* csp; /* The screen that owns that Terminal */ TerminalInfo info; /* Driver independent core capabilities of the Terminal */ @@ -2166,7 +2370,11 @@ extern NCURSES_EXPORT(int) TINFO_MVCUR(SCREEN*, int, int, int, int); #else #define TINFO_HAS_KEY NCURSES_SP_NAME(has_key) #define TINFO_DOUPDATE NCURSES_SP_NAME(doupdate) -#define TINFO_MVCUR NCURSES_SP_NAME(mvcur) +#define TINFO_MVCUR NCURSES_SP_NAME(_nc_mvcur) +#endif + +#if defined(EXP_WIN32_DRIVER) +#include <nc_win32.h> #endif /* @@ -2174,7 +2382,7 @@ extern NCURSES_EXPORT(int) TINFO_MVCUR(SCREEN*, int, int, int, int); */ #ifdef USE_TERM_DRIVER extern NCURSES_EXPORT(void) _nc_get_screensize(SCREEN *, TERMINAL *, int *, int *); -extern NCURSES_EXPORT(int) _nc_setupterm_ex(TERMINAL **, NCURSES_CONST char *, int , int *, bool); +extern NCURSES_EXPORT(int) _nc_setupterm_ex(TERMINAL **, const char *, int , int *, int); #define TINFO_GET_SIZE(sp, tp, lp, cp) \ _nc_get_screensize(sp, tp, lp, cp) #define TINFO_SET_CURTERM(sp, tp) \ @@ -2191,21 +2399,57 @@ extern NCURSES_EXPORT(void) _nc_get_screensize(SCREEN *, int *, int *); _nc_setupterm(name, fd, err, reuse) #endif /* !USE_TERM_DRIVER */ +#ifdef EXP_WIN32_DRIVER +extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_TINFO_DRIVER; +#else #ifdef USE_TERM_DRIVER -#ifdef __MINGW32__ +#if defined(USE_WIN32CON_DRIVER) #include <nc_mingw.h> extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_WIN_DRIVER; +extern NCURSES_EXPORT(int) _nc_mingw_isatty(int fd); +extern NCURSES_EXPORT(int) _nc_mingw_isconsole(int fd); +extern NCURSES_EXPORT(int) _nc_mingw_console_read( + SCREEN *sp, + HANDLE fd, + int *buf); +extern NCURSES_EXPORT(int) _nc_mingw_testmouse( + SCREEN * sp, + HANDLE fd, + int delay EVENTLIST_2nd(_nc_eventlist*)); +#else #endif extern NCURSES_EXPORT_VAR(TERM_DRIVER) _nc_TINFO_DRIVER; +#endif /* USE_TERM_DRIVER */ +#endif /* EXP_WIN32_DRIVER */ + +#if defined(USE_TERM_DRIVER) && defined(EXP_WIN32_DRIVER) +#define NC_ISATTY(fd) (0 != _nc_console_isatty(fd)) +#elif defined(USE_TERM_DRIVER) && defined(USE_WIN32CON_DRIVER) +#define NC_ISATTY(fd) _nc_mingw_isatty(fd) +#else +#define NC_ISATTY(fd) isatty(fd) #endif #ifdef USE_TERM_DRIVER -#define IsTermInfo(sp) (TCBOf(sp) && ((TCBOf(sp)->drv->isTerminfo))) +# define IsTermInfo(sp) ((TCBOf(sp) != 0) && ((TCBOf(sp)->drv->isTerminfo))) +# define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp)) +# if defined(EXP_WIN32_DRIVER) +# define IsTermInfoOnConsole(sp) (IsTermInfo(sp) && _nc_console_test(TerminalOf(sp)->Filedes)) +# elif defined(USE_WIN32CON_DRIVER) +# define IsTermInfoOnConsole(sp) (IsTermInfo(sp) && _nc_mingw_isconsole(TerminalOf(sp)->Filedes)) +# else +# define IsTermInfoOnConsole(sp) FALSE +# endif #else -#define IsTermInfo(sp) TRUE +# define IsTermInfo(sp) TRUE +# define HasTInfoTerminal(sp) (0 != TerminalOf(sp)) +# if defined(EXP_WIN32_DRIVER) +# define IsTermInfoOnConsole(sp) _nc_console_test(TerminalOf(sp)->Filedes) +# else +# define IsTermInfoOnConsole(sp) FALSE +# endif #endif -#define HasTInfoTerminal(sp) ((0 != TerminalOf(sp)) && IsTermInfo(sp)) #define IsValidTIScreen(sp) (HasTInfoTerminal(sp)) /* @@ -2235,30 +2479,23 @@ extern NCURSES_EXPORT(WINDOW *) NCURSES_SP_NAME(_nc_makenew) (SCREEN*, int, int, extern NCURSES_EXPORT(bool) NCURSES_SP_NAME(_nc_reset_colors)(SCREEN*); extern NCURSES_EXPORT(char *) NCURSES_SP_NAME(_nc_printf_string)(SCREEN*, const char *, va_list); extern NCURSES_EXPORT(chtype) NCURSES_SP_NAME(_nc_acs_char)(SCREEN*,int); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_curs_set)(SCREEN*,int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_get_tty_mode)(SCREEN*,TTY*); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_mcprint)(SCREEN*,char*, int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_msec_cost)(SCREEN*, const char *, int); +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_mvcur)(SCREEN*, int, int, int, int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_outch)(SCREEN*, int); +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putchar)(SCREEN*, int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putp)(SCREEN*, const char *, const char*); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putp_flush)(SCREEN*, const char *, const char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_resetty)(SCREEN*); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_resize_term)(SCREEN*,int,int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_ripoffline)(SCREEN*, int, int (*)(WINDOW *,int)); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_savetty)(SCREEN*); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scr_init)(SCREEN*,const char*); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scr_restore)(SCREEN*, const char*); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_scrolln)(SCREEN*, int, int, int, int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_set_tty_mode)(SCREEN*, TTY*); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_setupscreen)(SCREEN**, int, int, FILE *, bool, int); +extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_setupscreen)(SCREEN**, int, int, FILE *, int, int); extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tgetent)(SCREEN*,char*,const char *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_tigetnum)(SCREEN*,NCURSES_CONST char*); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vid_attr)(SCREEN *, attr_t, short, void *); -extern NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_vidputs)(SCREEN*,chtype,int(*) (SCREEN*, int)); -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_color)(SCREEN*, short, short, bool, NCURSES_SP_OUTC); +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_color)(SCREEN*, int, int, int, NCURSES_SP_OUTC); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_do_xmc_glitch)(SCREEN*, attr_t); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_flush)(SCREEN*); -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int) GCC_NORETURN; +extern GCC_NORETURN NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_free_and_exit)(SCREEN*, int); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_freeall)(SCREEN*); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_hash_map)(SCREEN*); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_init_acs)(SCREEN*); @@ -2271,7 +2508,7 @@ extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_screen_resume)(SCREEN*); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_screen_wrap)(SCREEN*); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_scroll_oldhash)(SCREEN*, int n, int top, int bot); extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_scroll_optimize)(SCREEN*); -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_set_buffer)(SCREEN*, FILE *, bool); +extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_set_buffer)(SCREEN*, FILE *, int); extern NCURSES_EXPORT(void) _nc_cookie_init(SCREEN *sp); @@ -2303,6 +2540,11 @@ extern NCURSES_EXPORT(NCURSES_CONST char *) _nc_unctrl (SCREEN *, chtype); #endif +#ifdef EXP_XTERM_1005 +NCURSES_EXPORT(int) _nc_conv_to_utf8(unsigned char *, unsigned, unsigned); +NCURSES_EXPORT(int) _nc_conv_to_utf32(unsigned *, const char *, unsigned); +#endif + #ifdef __cplusplus } #endif diff --git a/deps/ncurses-6.3/ncurses/fifo_defs.h b/deps/ncurses-6.3/ncurses/fifo_defs.h new file mode 100644 index 0000000..ab9266d --- /dev/null +++ b/deps/ncurses-6.3/ncurses/fifo_defs.h @@ -0,0 +1,86 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2012,2016 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + ****************************************************************************/ + +/* + * Common macros for lib_getch.c, lib_ungetch.c + * + * $Id: fifo_defs.h,v 1.9 2020/02/02 23:34:34 tom Exp $ + */ + +#ifndef FIFO_DEFS_H +#define FIFO_DEFS_H 1 + +#define head sp->_fifohead +#define tail sp->_fifotail +/* peek points to next uninterpreted character */ +#define peek sp->_fifopeek + +#define h_inc() { \ + (head >= FIFO_SIZE-1) \ + ? head = 0 \ + : head++; \ + if (head == tail) \ + head = -1, tail = 0; \ + } +#define h_dec() { \ + (head <= 0) \ + ? head = FIFO_SIZE-1 \ + : head--; \ + if (head == tail) \ + tail = -1; \ + } +#define t_inc() { \ + (tail >= FIFO_SIZE-1) \ + ? tail = 0 \ + : tail++; \ + if (tail == head) \ + tail = -1; \ + } +#define t_dec() { \ + (tail <= 0) \ + ? tail = FIFO_SIZE-1 \ + : tail--; \ + if (head == tail) \ + fifo_clear(sp); \ + } +#define p_inc() { \ + (peek >= FIFO_SIZE-1) \ + ? peek = 0 \ + : peek++; \ + } + +#define cooked_key_in_fifo() ((head >= 0) && (peek != head)) +#define raw_key_in_fifo() ((head >= 0) && (peek != tail)) + +#endif /* FIFO_DEFS_H */ diff --git a/deps/ncurses-5.9/ncurses/llib-lncurses b/deps/ncurses-6.3/ncurses/llib-lncurses similarity index 81% rename from deps/ncurses-5.9/ncurses/llib-lncurses rename to deps/ncurses-6.3/ncurses/llib-lncurses index 48f4283..c0adc1e 100644 --- a/deps/ncurses-5.9/ncurses/llib-lncurses +++ b/deps/ncurses-6.3/ncurses/llib-lncurses @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright 2019,2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 1996-2010,2011 * + * Author: Thomas E. Dickey 1996-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -69,7 +70,7 @@ void _nc_hash_map(void) #undef _nc_make_oldhash_sp void _nc_make_oldhash_sp( - SCREEN *sp, + SCREEN *sp, int i) { /* void */ } @@ -80,44 +81,42 @@ void _nc_make_oldhash( #undef _nc_scroll_oldhash_sp void _nc_scroll_oldhash_sp( - SCREEN *sp, - int n, - int top, + SCREEN *sp, + int n, + int top, int bot) { /* void */ } #undef _nc_scroll_oldhash void _nc_scroll_oldhash( - int n, - int top, + int n, + int top, int bot) { /* void */ } /* ./base/lib_addch.c */ -#include <ctype.h> - #undef _nc_render chtype _nc_render( - WINDOW *win, + WINDOW *win, chtype ch) { return(*(chtype *)0); } #undef _nc_waddch_nosync int _nc_waddch_nosync( - WINDOW *win, + WINDOW *win, const chtype c) { return(*(int *)0); } #undef waddch int waddch( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } #undef wechochar int wechochar( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } @@ -125,15 +124,15 @@ int wechochar( #undef waddnstr int waddnstr( - WINDOW *win, - const char *astr, + WINDOW *win, + const char *astr, int n) { return(*(int *)0); } #undef waddchnstr int waddchnstr( - WINDOW *win, - const chtype *astr, + WINDOW *win, + const chtype *astr, int n) { return(*(int *)0); } @@ -152,13 +151,13 @@ int beep(void) #undef wbkgdset void wbkgdset( - WINDOW *win, + WINDOW *win, chtype ch) { /* void */ } #undef wbkgd int wbkgd( - WINDOW *win, + WINDOW *win, chtype ch) { return(*(int *)0); } @@ -166,14 +165,14 @@ int wbkgd( #undef wborder int wborder( - WINDOW *win, - chtype ls, - chtype rs, - chtype ts, - chtype bs, - chtype tl, - chtype tr, - chtype bl, + WINDOW *win, + chtype ls, + chtype rs, + chtype ts, + chtype bs, + chtype tl, + chtype tr, + chtype bl, chtype br) { return(*(int *)0); } @@ -181,10 +180,10 @@ int wborder( #undef wchgat int wchgat( - WINDOW *win, - int n, - attr_t attr, - short color, + WINDOW *win, + int n, + attr_t attr, + short pair_arg, const void *opts) { return(*(int *)0); } @@ -199,7 +198,7 @@ int wclear( #undef clearok int clearok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -219,8 +218,6 @@ int wclrtoeol( /* ./base/lib_color.c */ -#include <tic.h> - #undef COLOR_PAIRS int COLOR_PAIRS; #undef COLORS @@ -244,35 +241,64 @@ int start_color_sp( int start_color(void) { return(*(int *)0); } +#undef _nc_change_pair +void _nc_change_pair( + SCREEN *sp, + int pair) + { /* void */ } + +#undef _nc_reserve_pairs +void _nc_reserve_pairs( + SCREEN *sp, + int want) + { /* void */ } + +#undef _nc_init_pair +int _nc_init_pair( + SCREEN *sp, + int pair, + int f, + int b) + { return(*(int *)0); } + #undef init_pair_sp int init_pair_sp( - SCREEN *sp, - short pair, - short f, + SCREEN *sp, + short pair, + short f, short b) { return(*(int *)0); } #undef init_pair int init_pair( - short pair, - short f, + short pair, + short f, short b) { return(*(int *)0); } +#undef _nc_init_color +int _nc_init_color( + SCREEN *sp, + int color, + int r, + int g, + int b) + { return(*(int *)0); } + #undef init_color_sp int init_color_sp( - SCREEN *sp, - short color, - short r, - short g, + SCREEN *sp, + short color, + short r, + short g, short b) { return(*(int *)0); } #undef init_color int init_color( - short color, - short r, - short g, + short color, + short r, + short g, short b) { return(*(int *)0); } @@ -296,50 +322,58 @@ NCURSES_BOOL has_colors(void) #undef color_content_sp int color_content_sp( - SCREEN *sp, - short color, - short *r, - short *g, + SCREEN *sp, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } #undef color_content int color_content( - short color, - short *r, - short *g, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } +#undef _nc_pair_content +int _nc_pair_content( + SCREEN *sp, + int pair, + int *f, + int *b) + { return(*(int *)0); } + #undef pair_content_sp int pair_content_sp( - SCREEN *sp, - short pair, - short *f, + SCREEN *sp, + short pair, + short *f, short *b) { return(*(int *)0); } #undef pair_content int pair_content( - short pair, - short *f, + short pair, + short *f, short *b) { return(*(int *)0); } #undef _nc_do_color_sp void _nc_do_color_sp( - SCREEN *sp, - short old_pair, - short pair, - NCURSES_BOOL reverse, + SCREEN *sp, + int old_pair, + int pair, + int reverse, NCURSES_OUTC_sp outc) { /* void */ } #undef _nc_do_color void _nc_do_color( - short old_pair, - short pair, - NCURSES_BOOL reverse, + int old_pair, + int pair, + int reverse, NCURSES_OUTC outc) { /* void */ } @@ -347,8 +381,8 @@ void _nc_do_color( #undef wcolor_set int wcolor_set( - WINDOW *win, - short color_pair_number, + WINDOW *win, + short pair_arg, void *opts) { return(*(int *)0); } @@ -424,7 +458,7 @@ int addch( #undef addchnstr int addchnstr( - const chtype *a1, + const chtype *a1, int z) { return(*(int *)0); } @@ -435,7 +469,7 @@ int addchstr( #undef addnstr int addnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -461,27 +495,27 @@ int attrset( #undef attr_get int attr_get( - attr_t *a1, - short *a2, + attr_t *a1, + short *a2, void *z) { return(*(int *)0); } #undef attr_off int attr_off( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_on int attr_on( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_set int attr_set( - attr_t a1, - short a2, + attr_t a1, + short a2, void *z) { return(*(int *)0); } @@ -497,28 +531,28 @@ void bkgdset( #undef border int border( - chtype a1, - chtype a2, - chtype a3, - chtype a4, - chtype a5, - chtype a6, - chtype a7, + chtype a1, + chtype a2, + chtype a3, + chtype a4, + chtype a5, + chtype a6, + chtype a7, chtype z) { return(*(int *)0); } #undef box int box( - WINDOW *a1, - chtype a2, + WINDOW *a1, + chtype a2, chtype z) { return(*(int *)0); } #undef chgat int chgat( - int a1, - attr_t a2, - short a3, + int a1, + attr_t a2, + short a3, const void *z) { return(*(int *)0); } @@ -536,7 +570,7 @@ int clrtoeol(void) #undef color_set int color_set( - short a1, + short a1, void *z) { return(*(int *)0); } @@ -573,7 +607,7 @@ int getch(void) #undef getnstr int getnstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -584,7 +618,7 @@ int getstr( #undef hline int hline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } @@ -594,7 +628,7 @@ chtype inch(void) #undef inchnstr int inchnstr( - chtype *a1, + chtype *a1, int z) { return(*(int *)0); } @@ -605,7 +639,7 @@ int inchstr( #undef innstr int innstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -625,7 +659,7 @@ int insertln(void) #undef insnstr int insnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -641,323 +675,323 @@ int instr( #undef move int move( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvaddch int mvaddch( - int a1, - int a2, + int a1, + int a2, const chtype z) { return(*(int *)0); } #undef mvaddchnstr int mvaddchnstr( - int a1, - int a2, - const chtype *a3, + int a1, + int a2, + const chtype *a3, int z) { return(*(int *)0); } #undef mvaddchstr int mvaddchstr( - int a1, - int a2, + int a1, + int a2, const chtype *z) { return(*(int *)0); } #undef mvaddnstr int mvaddnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvaddstr int mvaddstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvchgat int mvchgat( - int a1, - int a2, - int a3, - attr_t a4, - short a5, + int a1, + int a2, + int a3, + attr_t a4, + short a5, const void *z) { return(*(int *)0); } #undef mvdelch int mvdelch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetch int mvgetch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetnstr int mvgetnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvgetstr int mvgetstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvhline int mvhline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvinch chtype mvinch( - int a1, + int a1, int z) { return(*(chtype *)0); } #undef mvinchnstr int mvinchnstr( - int a1, - int a2, - chtype *a3, + int a1, + int a2, + chtype *a3, int z) { return(*(int *)0); } #undef mvinchstr int mvinchstr( - int a1, - int a2, + int a1, + int a2, chtype *z) { return(*(int *)0); } #undef mvinnstr int mvinnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvinsch int mvinsch( - int a1, - int a2, + int a1, + int a2, chtype z) { return(*(int *)0); } #undef mvinsnstr int mvinsnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvinsstr int mvinsstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvinstr int mvinstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvvline int mvvline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvwaddch int mvwaddch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype z) { return(*(int *)0); } #undef mvwaddchnstr int mvwaddchnstr( - WINDOW *a1, - int a2, - int a3, - const chtype *a4, + WINDOW *a1, + int a2, + int a3, + const chtype *a4, int z) { return(*(int *)0); } #undef mvwaddchstr int mvwaddchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype *z) { return(*(int *)0); } #undef mvwaddnstr int mvwaddnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwaddstr int mvwaddstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwchgat int mvwchgat( - WINDOW *a1, - int a2, - int a3, - int a4, - attr_t a5, - short a6, + WINDOW *a1, + int a2, + int a3, + int a4, + attr_t a5, + short a6, const void *z) { return(*(int *)0); } #undef mvwdelch int mvwdelch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetch int mvwgetch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetnstr int mvwgetnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwgetstr int mvwgetstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwhline int mvwhline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } #undef mvwinch chtype mvwinch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(chtype *)0); } #undef mvwinchnstr int mvwinchnstr( - WINDOW *a1, - int a2, - int a3, - chtype *a4, + WINDOW *a1, + int a2, + int a3, + chtype *a4, int z) { return(*(int *)0); } #undef mvwinchstr int mvwinchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype *z) { return(*(int *)0); } #undef mvwinnstr int mvwinnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwinsch int mvwinsch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype z) { return(*(int *)0); } #undef mvwinsnstr int mvwinsnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwinsstr int mvwinsstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwinstr int mvwinstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwvline int mvwvline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } @@ -987,7 +1021,7 @@ int scroll( #undef setscrreg int setscrreg( - int a1, + int a1, int z) { return(*(int *)0); } @@ -1006,8 +1040,8 @@ void timeout( #undef touchline int touchline( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } @@ -1023,67 +1057,53 @@ int untouchwin( #undef vline int vline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } -#undef vw_printw -int vw_printw( - WINDOW *a1, - const char *a2, - va_list z) - { return(*(int *)0); } - -#undef vw_scanw -int vw_scanw( - WINDOW *a1, - char *a2, - va_list z) - { return(*(int *)0); } - #undef waddchstr int waddchstr( - WINDOW *a1, + WINDOW *a1, const chtype *z) { return(*(int *)0); } #undef waddstr int waddstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef wattron int wattron( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattroff int wattroff( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattrset int wattrset( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattr_get int wattr_get( - WINDOW *a1, - attr_t *a2, - short *a3, + WINDOW *a1, + attr_t *a2, + short *a3, void *z) { return(*(int *)0); } #undef wattr_set int wattr_set( - WINDOW *a1, - attr_t a2, - short a3, + WINDOW *a1, + attr_t a2, + short a3, void *z) { return(*(int *)0); } @@ -1094,13 +1114,13 @@ int wdeleteln( #undef wgetstr int wgetstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } #undef winchstr int winchstr( - WINDOW *a1, + WINDOW *a1, chtype *z) { return(*(int *)0); } @@ -1111,13 +1131,13 @@ int winsertln( #undef winsstr int winsstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef winstr int winstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } @@ -1241,30 +1261,33 @@ NCURSES_BOOL is_syncok( const WINDOW *z) { return(*(NCURSES_BOOL *)0); } +#undef wgetdelay +int wgetdelay( + const WINDOW *z) + { return(*(int *)0); } + #undef wgetscrreg int wgetscrreg( - const WINDOW *a1, - int *a2, + const WINDOW *a1, + int *a2, int *z) { return(*(int *)0); } #undef mouse_trafo NCURSES_BOOL mouse_trafo( - int *a1, - int *a2, + int *a1, + int *a2, NCURSES_BOOL z) { return(*(NCURSES_BOOL *)0); } /* ./base/lib_getch.c */ -#include <fifo_defs.h> - #undef ESCDELAY int ESCDELAY; #undef set_escdelay_sp int set_escdelay_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -1284,8 +1307,8 @@ int get_escdelay(void) #undef _nc_wgetch int _nc_wgetch( - WINDOW *win, - int *result, + WINDOW *win, + int *result, int use_meta) { return(*(int *)0); } @@ -1298,8 +1321,8 @@ int wgetch( #undef wgetnstr int wgetnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int maxlen) { return(*(int *)0); } @@ -1307,8 +1330,8 @@ int wgetnstr( #undef whline int whline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -1316,7 +1339,7 @@ int whline( #undef immedok void immedok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } @@ -1324,8 +1347,8 @@ void immedok( #undef winchnstr int winchnstr( - WINDOW *win, - chtype *str, + WINDOW *win, + chtype *str, int n) { return(*(int *)0); } @@ -1339,14 +1362,14 @@ WINDOW *initscr(void) #undef _nc_insert_ch int _nc_insert_ch( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, chtype ch) { return(*(int *)0); } #undef winsch int winsch( - WINDOW *win, + WINDOW *win, chtype c) { return(*(int *)0); } @@ -1354,7 +1377,7 @@ int winsch( #undef winsdelln int winsdelln( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -1362,8 +1385,8 @@ int winsdelln( #undef winsnstr int winsnstr( - WINDOW *win, - const char *s, + WINDOW *win, + const char *s, int n) { return(*(int *)0); } @@ -1371,8 +1394,8 @@ int winsnstr( #undef winnstr int winnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int n) { return(*(int *)0); } @@ -1391,7 +1414,7 @@ NCURSES_BOOL isendwin(void) #undef leaveok int leaveok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -1399,7 +1422,7 @@ int leaveok( #undef getmouse_sp int getmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1410,7 +1433,7 @@ int getmouse( #undef ungetmouse_sp int ungetmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1421,27 +1444,27 @@ int ungetmouse( #undef mousemask_sp mmask_t mousemask_sp( - SCREEN *sp, - mmask_t newmask, + SCREEN *sp, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef mousemask mmask_t mousemask( - mmask_t newmask, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef wenclose NCURSES_BOOL wenclose( - const WINDOW *win, - int y, + const WINDOW *win, + int y, int x) { return(*(NCURSES_BOOL *)0); } #undef mouseinterval_sp int mouseinterval_sp( - SCREEN *sp, + SCREEN *sp, int maxclick) { return(*(int *)0); } @@ -1466,9 +1489,9 @@ NCURSES_BOOL has_mouse(void) #undef wmouse_trafo NCURSES_BOOL wmouse_trafo( - const WINDOW *win, - int *pY, - int *pX, + const WINDOW *win, + int *pY, + int *pX, NCURSES_BOOL to_screen) { return(*(NCURSES_BOOL *)0); } @@ -1476,8 +1499,8 @@ NCURSES_BOOL wmouse_trafo( #undef wmove int wmove( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } @@ -1485,14 +1508,14 @@ int wmove( #undef _nc_msec_cost_sp int _nc_msec_cost_sp( - SCREEN *sp, - const char *const cap, + SCREEN *sp, + const char *const cap, int affcnt) { return(*(int *)0); } #undef _nc_msec_cost int _nc_msec_cost( - const char *const cap, + const char *const cap, int affcnt) { return(*(int *)0); } @@ -1523,20 +1546,37 @@ void _nc_mvcur_wrap_sp( void _nc_mvcur_wrap(void) { /* void */ } +#undef _nc_mvcur_sp +int _nc_mvcur_sp( + SCREEN *sp, + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + +#undef _nc_mvcur +int _nc_mvcur( + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + #undef mvcur_sp int mvcur_sp( - SCREEN *sp, - int yold, - int xold, - int ynew, + SCREEN *sp, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } #undef mvcur int mvcur( - int yold, - int xold, - int ynew, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } @@ -1547,8 +1587,8 @@ int _nc_optimize_enable; #undef mvwin int mvwin( - WINDOW *win, - int by, + WINDOW *win, + int by, int bx) { return(*(int *)0); } @@ -1574,16 +1614,16 @@ void nofilter(void) #undef newterm_sp SCREEN *newterm_sp( - SCREEN *sp, - char *name, - FILE *ofp, + SCREEN *sp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } #undef newterm SCREEN *newterm( - char *name, - FILE *ofp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } @@ -1596,46 +1636,46 @@ int _nc_freewin( #undef newwin_sp WINDOW *newwin_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef newwin WINDOW *newwin( - int num_lines, - int num_columns, - int begy, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef derwin WINDOW *derwin( - WINDOW *orig, - int num_lines, - int num_columns, - int begy, + WINDOW *orig, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef subwin WINDOW *subwin( - WINDOW *w, - int l, - int c, - int y, + WINDOW *w, + int l, + int c, + int y, int x) { return(*(WINDOW **)0); } #undef _nc_makenew_sp WINDOW *_nc_makenew_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, - int begx, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, + int begx, int flags) { return(*(WINDOW **)0); } @@ -1678,26 +1718,26 @@ int nonl(void) #undef overlay int overlay( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef overwrite int overwrite( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef copywin int copywin( - const WINDOW *src, - WINDOW *dst, - int sminrow, - int smincol, - int dminrow, - int dmincol, - int dmaxrow, - int dmaxcol, + const WINDOW *src, + WINDOW *dst, + int sminrow, + int smincol, + int dminrow, + int dmincol, + int dmaxrow, + int dmaxcol, int over) { return(*(int *)0); } @@ -1705,51 +1745,51 @@ int copywin( #undef newpad_sp WINDOW *newpad_sp( - SCREEN *sp, - int l, + SCREEN *sp, + int l, int c) { return(*(WINDOW **)0); } #undef newpad WINDOW *newpad( - int l, + int l, int c) { return(*(WINDOW **)0); } #undef subpad WINDOW *subpad( - WINDOW *orig, - int l, - int c, - int begy, + WINDOW *orig, + int l, + int c, + int begy, int begx) { return(*(WINDOW **)0); } #undef prefresh int prefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pnoutrefresh int pnoutrefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pechochar int pechochar( - WINDOW *pad, + WINDOW *pad, const chtype ch) { return(*(int *)0); } @@ -1757,38 +1797,45 @@ int pechochar( #undef printw int printw( - const char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wprintw int wprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvprintw int mvprintw( - int y, - int x, - const char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwprintw int mvwprintw( - WINDOW *win, - int y, - int x, - const char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef vwprintw int vwprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_printw +int vw_printw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } @@ -1796,8 +1843,8 @@ int vwprintw( #undef wredrawln int wredrawln( - WINDOW *win, - int beg, + WINDOW *win, + int beg, int num) { return(*(int *)0); } @@ -1817,16 +1864,16 @@ int wnoutrefresh( #undef restartterm_sp int restartterm_sp( - SCREEN *sp, - char *termp, - int filenum, + SCREEN *sp, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } #undef restartterm int restartterm( - char *termp, - int filenum, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } @@ -1834,38 +1881,45 @@ int restartterm( #undef vwscanw int vwscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_scanw +int vw_scanw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } #undef scanw int scanw( - char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wscanw int wscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvscanw int mvscanw( - int y, - int x, - char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwscanw int mvwscanw( - WINDOW *win, - int y, - int x, - char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } @@ -1873,7 +1927,7 @@ int mvwscanw( #undef getwin_sp WINDOW *getwin_sp( - SCREEN *sp, + SCREEN *sp, FILE *filep) { return(*(WINDOW **)0); } @@ -1884,13 +1938,13 @@ WINDOW *getwin( #undef putwin int putwin( - WINDOW *win, + WINDOW *win, FILE *filep) { return(*(int *)0); } #undef scr_restore_sp int scr_restore_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -1906,7 +1960,7 @@ int scr_dump( #undef scr_init_sp int scr_init_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -1917,7 +1971,7 @@ int scr_init( #undef scr_set_sp int scr_set_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -1930,16 +1984,16 @@ int scr_set( #undef _nc_scroll_window void _nc_scroll_window( - WINDOW *win, - int const n, - short const top, - short const bottom, + WINDOW *win, + int const n, + int const top, + int const bottom, chtype blank) { /* void */ } #undef wscrl int wscrl( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -1947,7 +2001,7 @@ int wscrl( #undef scrollok int scrollok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -1955,8 +2009,8 @@ int scrollok( #undef wsetscrreg int wsetscrreg( - WINDOW *win, - int top, + WINDOW *win, + int top, int bottom) { return(*(int *)0); } @@ -1974,54 +2028,54 @@ void delscreen( #undef _nc_setupscreen_sp int _nc_setupscreen_sp( - SCREEN **spp, - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + SCREEN **spp, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_setupscreen int _nc_setupscreen( - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_ripoffline_sp int _nc_ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef _nc_ripoffline int _nc_ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline_sp int ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline int ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } @@ -2029,13 +2083,13 @@ int ripoffline( #undef _nc_format_slks int _nc_format_slks( - SCREEN *sp, + SCREEN *sp, int cols) { return(*(int *)0); } #undef _nc_slk_initialize int _nc_slk_initialize( - WINDOW *stwin, + WINDOW *stwin, int cols) { return(*(int *)0); } @@ -2052,16 +2106,16 @@ int slk_restore(void) #undef slk_attr_set_sp int slk_attr_set_sp( - SCREEN *sp, - const attr_t attr, - short color_pair_number, + SCREEN *sp, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } #undef slk_attr_set int slk_attr_set( - const attr_t attr, - short color_pair_number, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } @@ -2069,7 +2123,7 @@ int slk_attr_set( #undef slk_attroff_sp int slk_attroff_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2082,7 +2136,7 @@ int slk_attroff( #undef slk_attron_sp int slk_attron_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2095,7 +2149,7 @@ int slk_attron( #undef slk_attrset_sp int slk_attrset_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2130,20 +2184,20 @@ int slk_clear(void) #undef slk_color_sp int slk_color_sp( - SCREEN *sp, - short color_pair_number) + SCREEN *sp, + short pair_arg) { return(*(int *)0); } #undef slk_color int slk_color( - short color_pair_number) + short pair_arg) { return(*(int *)0); } /* ./base/lib_slkinit.c */ #undef slk_init_sp int slk_init_sp( - SCREEN *sp, + SCREEN *sp, int format) { return(*(int *)0); } @@ -2156,7 +2210,7 @@ int slk_init( #undef slk_label_sp char *slk_label_sp( - SCREEN *sp, + SCREEN *sp, int n) { return(*(char **)0); } @@ -2189,16 +2243,16 @@ int slk_refresh(void) #undef slk_set_sp int slk_set_sp( - SCREEN *sp, - int i, - const char *astr, + SCREEN *sp, + int i, + const char *astr, int format) { return(*(int *)0); } #undef slk_set int slk_set( - int i, - const char *astr, + int i, + const char *astr, int format) { return(*(int *)0); } @@ -2217,7 +2271,7 @@ int slk_touch(void) #undef is_linetouched NCURSES_BOOL is_linetouched( - WINDOW *win, + WINDOW *win, int line) { return(*(NCURSES_BOOL *)0); } @@ -2228,9 +2282,9 @@ NCURSES_BOOL is_wintouched( #undef wtouchln int wtouchln( - WINDOW *win, - int y, - int n, + WINDOW *win, + int y, + int n, int changed) { return(*(int *)0); } @@ -2238,21 +2292,27 @@ int wtouchln( #undef _tracedump void _tracedump( - const char *name, + const char *name, WINDOW *win) { /* void */ } /* ./trace/lib_tracemse.c */ +#undef _nc_trace_mmask_t +char *_nc_trace_mmask_t( + SCREEN *sp, + mmask_t code) + { return(*(char **)0); } + #undef _nc_tracemouse char *_nc_tracemouse( - SCREEN *sp, + SCREEN *sp, MEVENT const *ep) { return(*(char **)0); } #undef _nc_retrace_mmask_t mmask_t _nc_retrace_mmask_t( - SCREEN *sp, + SCREEN *sp, mmask_t code) { return(*(mmask_t *)0); } @@ -2263,11 +2323,9 @@ char *_tracemouse( /* ./tty/lib_tstp.c */ -#include <SigAction.h> - #undef _nc_signal_handler void _nc_signal_handler( - NCURSES_BOOL enable) + int enable) { /* void */ } /* ./base/lib_ungetch.c */ @@ -2279,7 +2337,7 @@ void _nc_fifo_dump( #undef ungetch_sp int ungetch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -2292,20 +2350,20 @@ int ungetch( #undef vidputs_sp int vidputs_sp( - SCREEN *sp, - chtype newmode, + SCREEN *sp, + chtype newmode, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef vidputs int vidputs( - chtype newmode, + chtype newmode, NCURSES_OUTC outc) { return(*(int *)0); } #undef vidattr_sp int vidattr_sp( - SCREEN *sp, + SCREEN *sp, chtype newmode) { return(*(int *)0); } @@ -2327,8 +2385,8 @@ chtype termattrs(void) #undef wvline int wvline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -2336,8 +2394,8 @@ int wvline( #undef wattr_off int wattr_off( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2345,8 +2403,8 @@ int wattr_off( #undef wattr_on int wattr_on( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2366,14 +2424,14 @@ void _nc_synchook( #undef mvderwin int mvderwin( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } #undef syncok int syncok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL bf) { return(*(int *)0); } @@ -2412,22 +2470,19 @@ struct panelhook *_nc_panelhook(void) #undef _nc_printf_string_sp char *_nc_printf_string_sp( - SCREEN *sp, - const char *fmt, + SCREEN *sp, + const char *fmt, va_list ap) { return(*(char **)0); } #undef _nc_printf_string char *_nc_printf_string( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } /* ./tty/tty_update.c */ -#include <sys/time.h> -#include <sys/times.h> - #undef doupdate_sp int doupdate_sp( SCREEN *sp) @@ -2439,18 +2494,18 @@ int doupdate(void) #undef _nc_scrolln_sp int _nc_scrolln_sp( - SCREEN *sp, - int n, - int top, - int bot, + SCREEN *sp, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } #undef _nc_scrolln int _nc_scrolln( - int n, - int top, - int bot, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } @@ -2483,7 +2538,7 @@ void _nc_screen_wrap(void) #undef _nc_do_xmc_glitch_sp void _nc_do_xmc_glitch_sp( - SCREEN *sp, + SCREEN *sp, attr_t previous) { /* void */ } @@ -2494,22 +2549,12 @@ void _nc_do_xmc_glitch( /* ./trace/varargs.c */ -typedef enum { - atUnknown = 0, atInteger, atFloat, atPoint, atString -} ARGTYPE; - #undef _nc_varargs char *_nc_varargs( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } -/* ./base/memmove.c */ - -#undef _nc_memmove -void _nc_memmove(void) - { /* void */ } - /* ./base/vsscanf.c */ #undef _nc_vsscanf @@ -2524,7 +2569,7 @@ void _nc_freeall(void) #undef _nc_free_and_exit_sp void _nc_free_and_exit_sp( - SCREEN *sp, + SCREEN *sp, int code) { /* void */ } @@ -2533,35 +2578,40 @@ void _nc_free_and_exit( int code) { /* void */ } +#undef exit_curses +void exit_curses( + int code) + { /* void */ } + /* ./expanded.c */ #undef _nc_toggle_attr_on void _nc_toggle_attr_on( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_toggle_attr_off void _nc_toggle_attr_off( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_DelCharCost_sp int _nc_DelCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_InsCharCost_sp int _nc_InsCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_UpdateAttrs_sp void _nc_UpdateAttrs_sp( - SCREEN *sp, + SCREEN *sp, chtype c) { /* void */ } @@ -2584,7 +2634,7 @@ void _nc_UpdateAttrs( #undef use_legacy_coding_sp int use_legacy_coding_sp( - SCREEN *sp, + SCREEN *sp, int level) { return(*(int *)0); } @@ -2606,14 +2656,14 @@ int use_default_colors(void) #undef assume_default_colors_sp int assume_default_colors_sp( - SCREEN *sp, - int fg, + SCREEN *sp, + int fg, int bg) { return(*(int *)0); } #undef assume_default_colors int assume_default_colors( - int fg, + int fg, int bg) { return(*(int *)0); } @@ -2621,55 +2671,61 @@ int assume_default_colors( #undef mcprint_sp int mcprint_sp( - SCREEN *sp, - char *data, + SCREEN *sp, + char *data, int len) { return(*(int *)0); } #undef mcprint int mcprint( - char *data, + char *data, int len) { return(*(int *)0); } +/* ./base/new_pair.c */ + +#undef _nc_new_pair +void _nc_new_pair(void) + { /* void */ } + /* ./base/resizeterm.c */ #undef is_term_resized_sp NCURSES_BOOL is_term_resized_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef is_term_resized NCURSES_BOOL is_term_resized( - int ToLines, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef resize_term_sp int resize_term_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resize_term int resize_term( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm_sp int resizeterm_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm int resizeterm( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } @@ -2684,8 +2740,8 @@ void _nc_trace_xnames( #undef use_screen int use_screen( - SCREEN *screen, - NCURSES_SCREEN_CB func, + SCREEN *screen, + NCURSES_SCREEN_CB func, void *data) { return(*(int *)0); } @@ -2693,8 +2749,8 @@ int use_screen( #undef use_window int use_window( - WINDOW *win, - NCURSES_WINDOW_CB func, + WINDOW *win, + NCURSES_WINDOW_CB func, void *data) { return(*(int *)0); } @@ -2702,8 +2758,8 @@ int use_window( #undef wresize int wresize( - WINDOW *win, - int ToLines, + WINDOW *win, + int ToLines, int ToCols) { return(*(int *)0); } @@ -2731,7 +2787,7 @@ char *_nc_basename( #undef _nc_access int _nc_access( - const char *path, + const char *path, int mode) { return(*(int *)0); } @@ -2749,12 +2805,25 @@ NCURSES_BOOL _nc_is_file_path( int _nc_env_access(void) { return(*(int *)0); } +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + /* ./tinfo/add_tries.c */ #undef _nc_add_to_try int _nc_add_to_try( - TRIES **tree, - const char *str, + TRIES **tree, + const char *str, unsigned code) { return(*(int *)0); } @@ -2762,29 +2831,27 @@ int _nc_add_to_try( #undef _nc_align_termtype void _nc_align_termtype( - TERMTYPE *to, + TERMTYPE *to, TERMTYPE *from) { /* void */ } #undef _nc_copy_termtype void _nc_copy_termtype( - TERMTYPE *dst, - TERMTYPE *src) + TERMTYPE *dst, + const TERMTYPE *src) { /* void */ } /* ./codes.c */ #undef boolcodes -char *const boolcodes[] = {0}; +const char *const boolcodes[] = {0}; #undef numcodes -char *const numcodes[] = {0}; +const char *const numcodes[] = {0}; #undef strcodes -char *const strcodes[] = {0}; +const char *const strcodes[] = {0}; /* ./comp_captab.c */ -#include <hashsize.h> - #undef _nc_get_table const struct name_table_entry *_nc_get_table( NCURSES_BOOL termcap) @@ -2835,19 +2902,19 @@ void _nc_get_type( #undef _nc_warning void _nc_warning( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_err_abort void _nc_err_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_syserr_abort void _nc_syserr_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } @@ -2855,17 +2922,32 @@ void _nc_syserr_abort( #undef _nc_find_entry struct name_table_entry const *_nc_find_entry( - const char *string, + const char *string, const HashValue *hash_table) { return(*(struct name_table_entry const **)0); } #undef _nc_find_type_entry struct name_table_entry const *_nc_find_type_entry( - const char *string, - int type, + const char *string, + int type, NCURSES_BOOL termcap) { return(*(struct name_table_entry const **)0); } +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + /* ./tinfo/db_iterator.c */ #undef _nc_tic_dir @@ -2884,13 +2966,13 @@ void _nc_last_db(void) #undef _nc_next_db const char *_nc_next_db( - DBDIRS *state, + DBDIRS *state, int *offset) { return(*(const char **)0); } #undef _nc_first_db void _nc_first_db( - DBDIRS *state, + DBDIRS *state, int *offset) { /* void */ } @@ -2898,7 +2980,7 @@ void _nc_first_db( #undef _nc_doalloc void *_nc_doalloc( - void *oldp, + void *oldp, size_t amount) { return(*(void **)0); } @@ -2911,7 +2993,7 @@ ENTRY *_nc_tail; #undef _nc_free_entry void _nc_free_entry( - ENTRY *headp, + ENTRY *headp, TERMTYPE *tterm) { /* void */ } @@ -2920,16 +3002,15 @@ void _nc_free_entries( ENTRY *headp) { /* void */ } -#undef _nc_delink_entry -ENTRY *_nc_delink_entry( - ENTRY *headp, - TERMTYPE *tterm) - { return(*(ENTRY **)0); } - #undef _nc_leaks_tinfo void _nc_leaks_tinfo(void) { /* void */ } +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + /* ./fallback.c */ #undef _nc_fallback @@ -2959,6 +3040,12 @@ int _nc_getenv_num( const char *name) { return(*(int *)0); } +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + /* ./tinfo/home_terminfo.c */ #undef _nc_home_terminfo @@ -2967,15 +3054,6 @@ char *_nc_home_terminfo(void) /* ./tinfo/init_keytry.c */ -#if 0 - -#include <init_keytry.h> - -#undef _nc_tinfo_fkeys -const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0}; - -#endif - #undef _nc_init_keytry void _nc_init_keytry( SCREEN *sp) @@ -2997,11 +3075,9 @@ void _nc_init_acs(void) /* ./tinfo/lib_baudrate.c */ -#include <termcap.h> - struct speed { - int s; - int sp; + int given_speed; + int actual_speed; }; #undef _nc_baudrate @@ -3030,7 +3106,7 @@ TERMINAL *cur_term; #undef set_curterm_sp TERMINAL *set_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(TERMINAL **)0); } @@ -3041,7 +3117,7 @@ TERMINAL *set_curterm( #undef del_curterm_sp int del_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(int *)0); } @@ -3126,29 +3202,32 @@ int flushinp(void) struct kn { short offset; int code; }; #undef keyname_sp -char *keyname_sp( - SCREEN *sp, +const char *keyname_sp( + SCREEN *sp, int c) - { return(*(char **)0); } + { return(*(const char **)0); } #undef keyname -char *keyname( +const char *keyname( int c) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./tinfo/lib_longname.c */ +#undef longname_sp +char *longname_sp( + SCREEN *sp) + { return(*(char **)0); } + #undef longname char *longname(void) { return(*(char **)0); } /* ./tinfo/lib_napms.c */ -#include <time.h> - #undef napms_sp int napms_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -3161,19 +3240,19 @@ int napms( #undef idlok int idlok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef idcok void idcok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } #undef halfdelay_sp int halfdelay_sp( - SCREEN *sp, + SCREEN *sp, int t) { return(*(int *)0); } @@ -3184,37 +3263,37 @@ int halfdelay( #undef nodelay int nodelay( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef notimeout int notimeout( - WINDOW *win, + WINDOW *win, NCURSES_BOOL f) { return(*(int *)0); } #undef wtimeout void wtimeout( - WINDOW *win, + WINDOW *win, int delay) { /* void */ } #undef keypad int keypad( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef meta int meta( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef curs_set_sp int curs_set_sp( - SCREEN *sp, + SCREEN *sp, int vis) { return(*(int *)0); } @@ -3225,7 +3304,7 @@ int curs_set( #undef typeahead_sp int typeahead_sp( - SCREEN *sp, + SCREEN *sp, int fd) { return(*(int *)0); } @@ -3236,7 +3315,7 @@ int typeahead( #undef has_key_sp int has_key_sp( - SCREEN *sp, + SCREEN *sp, int keycode) { return(*(int *)0); } @@ -3247,15 +3326,15 @@ int has_key( #undef _nc_putp_flush_sp int _nc_putp_flush_sp( - SCREEN *sp, - const char *name, + SCREEN *sp, + const char *name, const char *value) { return(*(int *)0); } #undef _nc_keypad int _nc_keypad( - SCREEN *sp, - NCURSES_BOOL flag) + SCREEN *sp, + int flag) { return(*(int *)0); } /* ./tinfo/lib_raw.c */ @@ -3316,23 +3395,19 @@ void noqiflush(void) #undef intrflush_sp int intrflush_sp( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef intrflush int intrflush( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } /* ./tinfo/lib_setup.c */ -#include <locale.h> -#include <sys/ioctl.h> -#include <langinfo.h> - #undef ttytype char ttytype[256]; #undef LINES @@ -3344,7 +3419,7 @@ int TABSIZE; #undef set_tabsize_sp int set_tabsize_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -3360,7 +3435,13 @@ int _nc_handle_sigwinch( #undef use_env_sp void use_env_sp( - SCREEN *sp, + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, NCURSES_BOOL f) { /* void */ } @@ -3369,10 +3450,15 @@ void use_env( NCURSES_BOOL f) { /* void */ } +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + #undef _nc_get_screensize void _nc_get_screensize( - SCREEN *sp, - int *linep, + SCREEN *sp, + int *linep, int *colp) { /* void */ } @@ -3383,14 +3469,14 @@ void _nc_update_screensize( #undef _nc_setup_tinfo int _nc_setup_tinfo( - const char *const tn, + const char *const tn, TERMTYPE *const tp) { return(*(int *)0); } #undef _nc_tinfo_cmdch void _nc_tinfo_cmdch( - TERMINAL *termp, - char proto) + TERMINAL *termp, + int proto) { /* void */ } #undef _nc_get_locale @@ -3408,10 +3494,10 @@ int _nc_locale_breaks_acs( #undef _nc_setupterm int _nc_setupterm( - char *tname, - int Filedes, - int *errret, - NCURSES_BOOL reuse) + const char *tname, + int Filedes, + int *errret, + int reuse) { return(*(int *)0); } #undef new_prescr @@ -3420,8 +3506,8 @@ SCREEN *new_prescr(void) #undef setupterm int setupterm( - char *tname, - int Filedes, + const char *tname, + int Filedes, int *errret) { return(*(int *)0); } @@ -3434,55 +3520,49 @@ char *BC; #undef tgetent_sp int tgetent_sp( - SCREEN *sp, - char *bufp, + SCREEN *sp, + char *bufp, const char *name) { return(*(int *)0); } -#if 0 - -#include <capdefaults.c> - -#endif - #undef tgetent int tgetent( - char *bufp, + char *bufp, const char *name) { return(*(int *)0); } #undef tgetflag_sp int tgetflag_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetflag int tgetflag( - char *id) + const char *id) { return(*(int *)0); } #undef tgetnum_sp int tgetnum_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetnum int tgetnum( - char *id) + const char *id) { return(*(int *)0); } #undef tgetstr_sp char *tgetstr_sp( - SCREEN *sp, - char *id, + SCREEN *sp, + const char *id, char **area) { return(*(char **)0); } #undef tgetstr char *tgetstr( - char *id, + const char *id, char **area) { return(*(char **)0); } @@ -3501,8 +3581,8 @@ char *termname(void) #undef tgoto char *tgoto( - const char *string, - int x, + const char *string, + int x, int y) { return(*(char **)0); } @@ -3510,35 +3590,35 @@ char *tgoto( #undef tigetflag_sp int tigetflag_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetflag int tigetflag( - char *str) + const char *str) { return(*(int *)0); } #undef tigetnum_sp int tigetnum_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetnum int tigetnum( - char *str) + const char *str) { return(*(int *)0); } #undef tigetstr_sp char *tigetstr_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(char **)0); } #undef tigetstr char *tigetstr( - char *str) + const char *str) { return(*(char **)0); } /* ./tinfo/lib_tparm.c */ @@ -3548,29 +3628,42 @@ int _nc_tparm_err; #undef _nc_tparm_analyze int _nc_tparm_analyze( - const char *string, - char *p_is_s[9], - int *popcount) + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) { return(*(int *)0); } #undef tparm char *tparm( - char *string, + const char *string, ...) { return(*(char **)0); } #undef tiparm char *tiparm( - const char *string, + const char *string, ...) { return(*(char **)0); } +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + /* ./tinfo/lib_tputs.c */ #undef PC char PC; #undef ospeed -NCURSES_OSPEED ospeed; +short ospeed; #undef _nc_nulls_sent int _nc_nulls_sent; @@ -3581,7 +3674,7 @@ void _nc_set_no_padding( #undef delay_output_sp int delay_output_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -3601,7 +3694,7 @@ void _nc_flush(void) #undef _nc_outch_sp int _nc_outch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -3610,48 +3703,59 @@ int _nc_outch( int ch) { return(*(int *)0); } +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + #undef putp_sp int putp_sp( - SCREEN *sp, + SCREEN *sp, const char *string) { return(*(int *)0); } -#undef _nc_putp_sp -int _nc_putp_sp( - SCREEN *sp, - const char *name, +#undef putp +int putp( const char *string) { return(*(int *)0); } -#undef putp -int putp( +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, const char *string) { return(*(int *)0); } #undef _nc_putp int _nc_putp( - const char *name, + const char *name, const char *string) { return(*(int *)0); } #undef tputs_sp int tputs_sp( - SCREEN *sp, - const char *string, - int affcnt, + SCREEN *sp, + const char *string, + int affcnt, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef _nc_outc_wrapper int _nc_outc_wrapper( - SCREEN *sp, + SCREEN *sp, int c) { return(*(int *)0); } #undef tputs int tputs( - const char *string, - int affcnt, + const char *string, + int affcnt, int (*outc)( int p1)) { return(*(int *)0); } @@ -3665,6 +3769,11 @@ const char *_nc_tputs_trace = {0}; #undef _nc_outchars long _nc_outchars; +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + #undef trace void trace( const unsigned int tracelevel) @@ -3672,18 +3781,18 @@ void trace( #undef _tracef void _tracef( - const char *fmt, + const char *fmt, ...) { /* void */ } #undef _nc_retrace_bool NCURSES_BOOL _nc_retrace_bool( - NCURSES_BOOL code) + int code) { return(*(NCURSES_BOOL *)0); } #undef _nc_retrace_char char _nc_retrace_char( - char code) + int code) { return(*(char *)0); } #undef _nc_retrace_int @@ -3707,9 +3816,9 @@ const char *_nc_retrace_cptr( { return(*(const char **)0); } #undef _nc_retrace_cvoid_ptr -void *_nc_retrace_cvoid_ptr( - void *code) - { return(*(void **)0); } +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } #undef _nc_retrace_void_ptr void *_nc_retrace_void_ptr( @@ -3726,11 +3835,18 @@ WINDOW *_nc_retrace_win( WINDOW *code) { return(*(WINDOW **)0); } +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + /* ./trace/lib_traceatr.c */ #undef _traceattr2 char *_traceattr2( - int bufnum, + int bufnum, chtype newmode) { return(*(char **)0); } @@ -3751,13 +3867,13 @@ attr_t _nc_retrace_attr_t( #undef _nc_altcharset_name const char *_nc_altcharset_name( - attr_t attr, + attr_t attr, chtype ch) { return(*(const char **)0); } #undef _tracechtype2 char *_tracechtype2( - int bufnum, + int bufnum, chtype ch) { return(*(char **)0); } @@ -3773,14 +3889,9 @@ chtype _nc_retrace_chtype( /* ./trace/lib_tracebits.c */ -typedef struct { - unsigned int val; - const char *name; -} BITNAMES; - #undef _nc_trace_ttymode char *_nc_trace_ttymode( - struct termios *tty) + const struct termios *tty) { return(*(char **)0); } #undef _nc_tracebits @@ -3791,7 +3902,7 @@ char *_nc_tracebits(void) #undef _nc_tracechar char *_nc_tracechar( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(char **)0); } @@ -3804,7 +3915,7 @@ char *_tracechar( #undef _nc_get_tty_mode_sp int _nc_get_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -3815,7 +3926,7 @@ int _nc_get_tty_mode( #undef _nc_set_tty_mode_sp int _nc_set_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -3882,9 +3993,9 @@ int resetty(void) #undef _nc_timed_wait int _nc_timed_wait( - SCREEN *sp, - int mode, - int milliseconds, + SCREEN *sp, + int mode, + int milliseconds, int *timeleft) { return(*(int *)0); } @@ -3897,105 +4008,106 @@ char *_nc_first_name( #undef _nc_name_match int _nc_name_match( - const char *const namelst, - const char *const name, + const char *const namelst, + const char *const name, const char *const delim) { return(*(int *)0); } /* ./names.c */ #undef boolnames -char *const boolnames[] = {0}; +const char *const boolnames[] = {0}; #undef boolfnames -char *const boolfnames[] = {0}; +const char *const boolfnames[] = {0}; #undef numnames -char *const numnames[] = {0}; +const char *const numnames[] = {0}; #undef numfnames -char *const numfnames[] = {0}; +const char *const numfnames[] = {0}; #undef strnames -char *const strnames[] = {0}; +const char *const strnames[] = {0}; #undef strfnames -char *const strfnames[] = {0}; +const char *const strfnames[] = {0}; + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } /* ./tinfo/read_entry.c */ -#include <hashed_db.h> +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE *const tp) + { /* void */ } #undef _nc_read_termtype int _nc_read_termtype( - TERMTYPE *ptr, - char *buffer, + TERMTYPE *ptr, + char *buffer, int limit) { return(*(int *)0); } #undef _nc_read_file_entry int _nc_read_file_entry( - const char *const filename, + const char *const filename, TERMTYPE *ptr) { return(*(int *)0); } #undef _nc_read_entry int _nc_read_entry( - const char *const name, - char *const filename, + const char *const name, + char *const filename, TERMTYPE *const tp) { return(*(int *)0); } /* ./tinfo/read_termcap.c */ -#include <sys/types.h> - #undef _nc_read_termcap_entry int _nc_read_termcap_entry( - const char *const tn, + const char *const tn, TERMTYPE *const tp) { return(*(int *)0); } -/* ./tinfo/setbuf.c */ - -#undef _nc_set_buffer_sp -void _nc_set_buffer_sp( - SCREEN *sp, - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - -#undef _nc_set_buffer -void _nc_set_buffer( - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - /* ./tinfo/strings.c */ #undef _nc_str_init string_desc *_nc_str_init( - string_desc *dst, - char *src, + string_desc *dst, + char *src, size_t len) { return(*(string_desc **)0); } #undef _nc_str_null string_desc *_nc_str_null( - string_desc *dst, + string_desc *dst, size_t len) { return(*(string_desc **)0); } #undef _nc_str_copy string_desc *_nc_str_copy( - string_desc *dst, + string_desc *dst, string_desc *src) { return(*(string_desc **)0); } #undef _nc_safe_strcat NCURSES_BOOL _nc_safe_strcat( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } #undef _nc_safe_strcpy NCURSES_BOOL _nc_safe_strcpy( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } @@ -4003,13 +4115,13 @@ NCURSES_BOOL _nc_safe_strcpy( #undef _nc_trace_buf char *_nc_trace_buf( - int bufnum, + int bufnum, size_t want) { return(*(char **)0); } #undef _nc_trace_bufcat char *_nc_trace_bufcat( - int bufnum, + int bufnum, const char *value) { return(*(char **)0); } @@ -4024,21 +4136,21 @@ void _nc_trace_tries( #undef _nc_expand_try char *_nc_expand_try( - TRIES *tree, - unsigned code, - int *count, + TRIES *tree, + unsigned code, + int *count, size_t len) { return(*(char **)0); } #undef _nc_remove_key int _nc_remove_key( - TRIES **tree, + TRIES **tree, unsigned code) { return(*(int *)0); } #undef _nc_remove_string int _nc_remove_string( - TRIES **tree, + TRIES **tree, const char *string) { return(*(int *)0); } @@ -4052,21 +4164,21 @@ char *_nc_trim_sgr0( /* ./unctrl.c */ #undef unctrl_sp -char *unctrl_sp( - SCREEN *sp, +const char *unctrl_sp( + SCREEN *sp, chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } #undef unctrl -char *unctrl( +const char *unctrl( chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./trace/visbuf.c */ #undef _nc_visbuf2 const char *_nc_visbuf2( - int bufnum, + int bufnum, const char *buf) { return(*(const char **)0); } @@ -4077,20 +4189,20 @@ const char *_nc_visbuf( #undef _nc_visbufn const char *_nc_visbufn( - const char *buf, + const char *buf, int len) { return(*(const char **)0); } #undef _nc_viscbuf2 const char *_nc_viscbuf2( - int bufnum, - const chtype *buf, + int bufnum, + const chtype *buf, int len) { return(*(const char **)0); } #undef _nc_viscbuf const char *_nc_viscbuf( - const chtype *buf, + const chtype *buf, int len) { return(*(const char **)0); } @@ -4098,7 +4210,7 @@ const char *_nc_viscbuf( #undef _nc_init_entry void _nc_init_entry( - TERMTYPE *const tp) + ENTRY *const tp) { /* void */ } #undef _nc_copy_entry @@ -4108,34 +4220,34 @@ ENTRY *_nc_copy_entry( #undef _nc_save_str char *_nc_save_str( - const char *const string) + const char *string) { return(*(char **)0); } #undef _nc_wrap_entry void _nc_wrap_entry( - ENTRY *const ep, + ENTRY *const ep, NCURSES_BOOL copy_strings) { /* void */ } #undef _nc_merge_entry void _nc_merge_entry( - TERMTYPE *const to, - TERMTYPE *const from) + ENTRY *const target, + ENTRY *const source) { /* void */ } /* ./tinfo/captoinfo.c */ #undef _nc_captoinfo char *_nc_captoinfo( - const char *cap, - const char *s, + const char *cap, + const char *s, int const parameterized) { return(*(char **)0); } #undef _nc_infotocap char *_nc_infotocap( - const char *cap, - const char *str, + const char *cap, + const char *str, int const parameterized) { return(*(char **)0); } @@ -4143,8 +4255,8 @@ char *_nc_infotocap( #undef _nc_tic_expand char *_nc_tic_expand( - const char *srcp, - NCURSES_BOOL tic_format, + const char *srcp, + NCURSES_BOOL tic_format, int numbers) { return(*(char **)0); } @@ -4152,43 +4264,37 @@ char *_nc_tic_expand( #undef _nc_check_termtype2 void (*_nc_check_termtype2)( - TERMTYPE *p1, + TERMTYPE *p1, NCURSES_BOOL p2); -#undef _nc_check_termtype -void (*_nc_check_termtype)( - TERMTYPE *p1); #undef _nc_entry_match NCURSES_BOOL _nc_entry_match( - char *n1, + char *n1, char *n2) { return(*(NCURSES_BOOL *)0); } #undef _nc_read_entry_source void _nc_read_entry_source( - FILE *fp, - char *buf, - int literal, - NCURSES_BOOL silent, + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, NCURSES_BOOL (*hook)( ENTRY *p1)) { /* void */ } #undef _nc_resolve_uses2 int _nc_resolve_uses2( - NCURSES_BOOL fullresolve, + NCURSES_BOOL fullresolve, NCURSES_BOOL literal) { return(*(int *)0); } -#undef _nc_resolve_uses -int _nc_resolve_uses( - NCURSES_BOOL fullresolve) - { return(*(int *)0); } - /* ./tinfo/comp_scan.c */ #undef _nc_syntax int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; #undef _nc_curr_file_pos long _nc_curr_file_pos; #undef _nc_comment_start @@ -4204,7 +4310,7 @@ NCURSES_BOOL _nc_disable_period; #undef _nc_reset_input void _nc_reset_input( - FILE *fp, + FILE *fp, char *buf) { /* void */ } @@ -4215,7 +4321,7 @@ int _nc_get_token( #undef _nc_trans_string int _nc_trans_string( - char *ptr, + char *ptr, char *last) { return(*(int *)0); } @@ -4233,27 +4339,22 @@ void _nc_panic_mode( #undef _nc_parse_entry int _nc_parse_entry( - struct entry *entryp, - int literal, + ENTRY *entryp, + int literal, NCURSES_BOOL silent) { return(*(int *)0); } #undef _nc_capcmp int _nc_capcmp( - const char *s, + const char *s, const char *t) { return(*(int *)0); } -typedef struct { - const char *from; - const char *to; -} assoc; - /* ./tinfo/write_entry.c */ #undef _nc_set_writedir void _nc_set_writedir( - char *dir) + const char *dir) { /* void */ } #undef _nc_write_entry @@ -4261,6 +4362,14 @@ void _nc_write_entry( TERMTYPE *const tp) { /* void */ } +#undef _nc_write_object +int _nc_write_object( + TERMTYPE *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + #undef _nc_tic_written int _nc_tic_written(void) { return(*(int *)0); } @@ -4269,14 +4378,14 @@ int _nc_tic_written(void) #undef define_key_sp int define_key_sp( - SCREEN *sp, - const char *str, + SCREEN *sp, + const char *str, int keycode) { return(*(int *)0); } #undef define_key int define_key( - const char *str, + const char *str, int keycode) { return(*(int *)0); } @@ -4290,7 +4399,7 @@ void _nc_hashed_db(void) #undef key_defined_sp int key_defined_sp( - SCREEN *sp, + SCREEN *sp, const char *str) { return(*(int *)0); } @@ -4303,14 +4412,14 @@ int key_defined( #undef keybound_sp char *keybound_sp( - SCREEN *sp, - int code, + SCREEN *sp, + int code, int count) { return(*(char **)0); } #undef keybound char *keybound( - int code, + int code, int count) { return(*(char **)0); } @@ -4318,14 +4427,14 @@ char *keybound( #undef keyok_sp int keyok_sp( - SCREEN *sp, - int c, + SCREEN *sp, + int c, NCURSES_BOOL flag) { return(*(int *)0); } #undef keyok int keyok( - int c, + int c, NCURSES_BOOL flag) { return(*(int *)0); } diff --git a/deps/ncurses-5.9/ncurses/llib-lncursest b/deps/ncurses-6.3/ncurses/llib-lncursest similarity index 81% rename from deps/ncurses-5.9/ncurses/llib-lncursest rename to deps/ncurses-6.3/ncurses/llib-lncursest index f5739cb..7c54b32 100644 --- a/deps/ncurses-5.9/ncurses/llib-lncursest +++ b/deps/ncurses-6.3/ncurses/llib-lncursest @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008-2010,2011 Free Software Foundation, Inc. * + * Copyright 2019,2020,2021 Thomas E. Dickey * + * Copyright 2008-2016,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2008-on * + * Author: Thomas E. Dickey 2008-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -69,7 +70,7 @@ void _nc_hash_map(void) #undef _nc_make_oldhash_sp void _nc_make_oldhash_sp( - SCREEN *sp, + SCREEN *sp, int i) { /* void */ } @@ -80,44 +81,42 @@ void _nc_make_oldhash( #undef _nc_scroll_oldhash_sp void _nc_scroll_oldhash_sp( - SCREEN *sp, - int n, - int top, + SCREEN *sp, + int n, + int top, int bot) { /* void */ } #undef _nc_scroll_oldhash void _nc_scroll_oldhash( - int n, - int top, + int n, + int top, int bot) { /* void */ } /* ./base/lib_addch.c */ -#include <ctype.h> - #undef _nc_render chtype _nc_render( - WINDOW *win, + WINDOW *win, chtype ch) { return(*(chtype *)0); } #undef _nc_waddch_nosync int _nc_waddch_nosync( - WINDOW *win, + WINDOW *win, const chtype c) { return(*(int *)0); } #undef waddch int waddch( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } #undef wechochar int wechochar( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } @@ -125,15 +124,15 @@ int wechochar( #undef waddnstr int waddnstr( - WINDOW *win, - const char *astr, + WINDOW *win, + const char *astr, int n) { return(*(int *)0); } #undef waddchnstr int waddchnstr( - WINDOW *win, - const chtype *astr, + WINDOW *win, + const chtype *astr, int n) { return(*(int *)0); } @@ -152,13 +151,13 @@ int beep(void) #undef wbkgdset void wbkgdset( - WINDOW *win, + WINDOW *win, chtype ch) { /* void */ } #undef wbkgd int wbkgd( - WINDOW *win, + WINDOW *win, chtype ch) { return(*(int *)0); } @@ -166,14 +165,14 @@ int wbkgd( #undef wborder int wborder( - WINDOW *win, - chtype ls, - chtype rs, - chtype ts, - chtype bs, - chtype tl, - chtype tr, - chtype bl, + WINDOW *win, + chtype ls, + chtype rs, + chtype ts, + chtype bs, + chtype tl, + chtype tr, + chtype bl, chtype br) { return(*(int *)0); } @@ -181,10 +180,10 @@ int wborder( #undef wchgat int wchgat( - WINDOW *win, - int n, - attr_t attr, - short color, + WINDOW *win, + int n, + attr_t attr, + short pair_arg, const void *opts) { return(*(int *)0); } @@ -199,7 +198,7 @@ int wclear( #undef clearok int clearok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -219,8 +218,6 @@ int wclrtoeol( /* ./base/lib_color.c */ -#include <tic.h> - #undef _nc_COLOR_PAIRS int _nc_COLOR_PAIRS(void) { return(*(int *)0); } @@ -247,35 +244,64 @@ int start_color_sp( int start_color(void) { return(*(int *)0); } +#undef _nc_change_pair +void _nc_change_pair( + SCREEN *sp, + int pair) + { /* void */ } + +#undef _nc_reserve_pairs +void _nc_reserve_pairs( + SCREEN *sp, + int want) + { /* void */ } + +#undef _nc_init_pair +int _nc_init_pair( + SCREEN *sp, + int pair, + int f, + int b) + { return(*(int *)0); } + #undef init_pair_sp int init_pair_sp( - SCREEN *sp, - short pair, - short f, + SCREEN *sp, + short pair, + short f, short b) { return(*(int *)0); } #undef init_pair int init_pair( - short pair, - short f, + short pair, + short f, short b) { return(*(int *)0); } +#undef _nc_init_color +int _nc_init_color( + SCREEN *sp, + int color, + int r, + int g, + int b) + { return(*(int *)0); } + #undef init_color_sp int init_color_sp( - SCREEN *sp, - short color, - short r, - short g, + SCREEN *sp, + short color, + short r, + short g, short b) { return(*(int *)0); } #undef init_color int init_color( - short color, - short r, - short g, + short color, + short r, + short g, short b) { return(*(int *)0); } @@ -299,50 +325,58 @@ NCURSES_BOOL has_colors(void) #undef color_content_sp int color_content_sp( - SCREEN *sp, - short color, - short *r, - short *g, + SCREEN *sp, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } #undef color_content int color_content( - short color, - short *r, - short *g, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } +#undef _nc_pair_content +int _nc_pair_content( + SCREEN *sp, + int pair, + int *f, + int *b) + { return(*(int *)0); } + #undef pair_content_sp int pair_content_sp( - SCREEN *sp, - short pair, - short *f, + SCREEN *sp, + short pair, + short *f, short *b) { return(*(int *)0); } #undef pair_content int pair_content( - short pair, - short *f, + short pair, + short *f, short *b) { return(*(int *)0); } #undef _nc_do_color_sp void _nc_do_color_sp( - SCREEN *sp, - short old_pair, - short pair, - NCURSES_BOOL reverse, + SCREEN *sp, + int old_pair, + int pair, + int reverse, NCURSES_OUTC_sp outc) { /* void */ } #undef _nc_do_color void _nc_do_color( - short old_pair, - short pair, - NCURSES_BOOL reverse, + int old_pair, + int pair, + int reverse, NCURSES_OUTC outc) { /* void */ } @@ -350,8 +384,8 @@ void _nc_do_color( #undef wcolor_set int wcolor_set( - WINDOW *win, - short color_pair_number, + WINDOW *win, + short pair_arg, void *opts) { return(*(int *)0); } @@ -427,7 +461,7 @@ int addch( #undef addchnstr int addchnstr( - const chtype *a1, + const chtype *a1, int z) { return(*(int *)0); } @@ -438,7 +472,7 @@ int addchstr( #undef addnstr int addnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -464,27 +498,27 @@ int attrset( #undef attr_get int attr_get( - attr_t *a1, - short *a2, + attr_t *a1, + short *a2, void *z) { return(*(int *)0); } #undef attr_off int attr_off( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_on int attr_on( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_set int attr_set( - attr_t a1, - short a2, + attr_t a1, + short a2, void *z) { return(*(int *)0); } @@ -500,28 +534,28 @@ void bkgdset( #undef border int border( - chtype a1, - chtype a2, - chtype a3, - chtype a4, - chtype a5, - chtype a6, - chtype a7, + chtype a1, + chtype a2, + chtype a3, + chtype a4, + chtype a5, + chtype a6, + chtype a7, chtype z) { return(*(int *)0); } #undef box int box( - WINDOW *a1, - chtype a2, + WINDOW *a1, + chtype a2, chtype z) { return(*(int *)0); } #undef chgat int chgat( - int a1, - attr_t a2, - short a3, + int a1, + attr_t a2, + short a3, const void *z) { return(*(int *)0); } @@ -539,7 +573,7 @@ int clrtoeol(void) #undef color_set int color_set( - short a1, + short a1, void *z) { return(*(int *)0); } @@ -576,7 +610,7 @@ int getch(void) #undef getnstr int getnstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -587,7 +621,7 @@ int getstr( #undef hline int hline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } @@ -597,7 +631,7 @@ chtype inch(void) #undef inchnstr int inchnstr( - chtype *a1, + chtype *a1, int z) { return(*(int *)0); } @@ -608,7 +642,7 @@ int inchstr( #undef innstr int innstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -628,7 +662,7 @@ int insertln(void) #undef insnstr int insnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -644,323 +678,323 @@ int instr( #undef move int move( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvaddch int mvaddch( - int a1, - int a2, + int a1, + int a2, const chtype z) { return(*(int *)0); } #undef mvaddchnstr int mvaddchnstr( - int a1, - int a2, - const chtype *a3, + int a1, + int a2, + const chtype *a3, int z) { return(*(int *)0); } #undef mvaddchstr int mvaddchstr( - int a1, - int a2, + int a1, + int a2, const chtype *z) { return(*(int *)0); } #undef mvaddnstr int mvaddnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvaddstr int mvaddstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvchgat int mvchgat( - int a1, - int a2, - int a3, - attr_t a4, - short a5, + int a1, + int a2, + int a3, + attr_t a4, + short a5, const void *z) { return(*(int *)0); } #undef mvdelch int mvdelch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetch int mvgetch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetnstr int mvgetnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvgetstr int mvgetstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvhline int mvhline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvinch chtype mvinch( - int a1, + int a1, int z) { return(*(chtype *)0); } #undef mvinchnstr int mvinchnstr( - int a1, - int a2, - chtype *a3, + int a1, + int a2, + chtype *a3, int z) { return(*(int *)0); } #undef mvinchstr int mvinchstr( - int a1, - int a2, + int a1, + int a2, chtype *z) { return(*(int *)0); } #undef mvinnstr int mvinnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvinsch int mvinsch( - int a1, - int a2, + int a1, + int a2, chtype z) { return(*(int *)0); } #undef mvinsnstr int mvinsnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvinsstr int mvinsstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvinstr int mvinstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvvline int mvvline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvwaddch int mvwaddch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype z) { return(*(int *)0); } #undef mvwaddchnstr int mvwaddchnstr( - WINDOW *a1, - int a2, - int a3, - const chtype *a4, + WINDOW *a1, + int a2, + int a3, + const chtype *a4, int z) { return(*(int *)0); } #undef mvwaddchstr int mvwaddchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype *z) { return(*(int *)0); } #undef mvwaddnstr int mvwaddnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwaddstr int mvwaddstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwchgat int mvwchgat( - WINDOW *a1, - int a2, - int a3, - int a4, - attr_t a5, - short a6, + WINDOW *a1, + int a2, + int a3, + int a4, + attr_t a5, + short a6, const void *z) { return(*(int *)0); } #undef mvwdelch int mvwdelch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetch int mvwgetch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetnstr int mvwgetnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwgetstr int mvwgetstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwhline int mvwhline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } #undef mvwinch chtype mvwinch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(chtype *)0); } #undef mvwinchnstr int mvwinchnstr( - WINDOW *a1, - int a2, - int a3, - chtype *a4, + WINDOW *a1, + int a2, + int a3, + chtype *a4, int z) { return(*(int *)0); } #undef mvwinchstr int mvwinchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype *z) { return(*(int *)0); } #undef mvwinnstr int mvwinnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwinsch int mvwinsch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype z) { return(*(int *)0); } #undef mvwinsnstr int mvwinsnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwinsstr int mvwinsstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwinstr int mvwinstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwvline int mvwvline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } @@ -990,7 +1024,7 @@ int scroll( #undef setscrreg int setscrreg( - int a1, + int a1, int z) { return(*(int *)0); } @@ -1009,8 +1043,8 @@ void timeout( #undef touchline int touchline( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } @@ -1026,67 +1060,53 @@ int untouchwin( #undef vline int vline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } -#undef vw_printw -int vw_printw( - WINDOW *a1, - const char *a2, - va_list z) - { return(*(int *)0); } - -#undef vw_scanw -int vw_scanw( - WINDOW *a1, - char *a2, - va_list z) - { return(*(int *)0); } - #undef waddchstr int waddchstr( - WINDOW *a1, + WINDOW *a1, const chtype *z) { return(*(int *)0); } #undef waddstr int waddstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef wattron int wattron( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattroff int wattroff( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattrset int wattrset( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattr_get int wattr_get( - WINDOW *a1, - attr_t *a2, - short *a3, + WINDOW *a1, + attr_t *a2, + short *a3, void *z) { return(*(int *)0); } #undef wattr_set int wattr_set( - WINDOW *a1, - attr_t a2, - short a3, + WINDOW *a1, + attr_t a2, + short a3, void *z) { return(*(int *)0); } @@ -1097,13 +1117,13 @@ int wdeleteln( #undef wgetstr int wgetstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } #undef winchstr int winchstr( - WINDOW *a1, + WINDOW *a1, chtype *z) { return(*(int *)0); } @@ -1114,13 +1134,13 @@ int winsertln( #undef winsstr int winsstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef winstr int winstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } @@ -1244,24 +1264,27 @@ NCURSES_BOOL is_syncok( const WINDOW *z) { return(*(NCURSES_BOOL *)0); } +#undef wgetdelay +int wgetdelay( + const WINDOW *z) + { return(*(int *)0); } + #undef wgetscrreg int wgetscrreg( - const WINDOW *a1, - int *a2, + const WINDOW *a1, + int *a2, int *z) { return(*(int *)0); } #undef mouse_trafo NCURSES_BOOL mouse_trafo( - int *a1, - int *a2, + int *a1, + int *a2, NCURSES_BOOL z) { return(*(NCURSES_BOOL *)0); } /* ./base/lib_getch.c */ -#include <fifo_defs.h> - #undef _nc_ESCDELAY int _nc_ESCDELAY(void) { return(*(int *)0); } @@ -1273,7 +1296,7 @@ int *_nc_ptr_Escdelay( #undef set_escdelay_sp int set_escdelay_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -1293,8 +1316,8 @@ int get_escdelay(void) #undef _nc_wgetch int _nc_wgetch( - WINDOW *win, - int *result, + WINDOW *win, + int *result, int use_meta) { return(*(int *)0); } @@ -1307,8 +1330,8 @@ int wgetch( #undef wgetnstr int wgetnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int maxlen) { return(*(int *)0); } @@ -1316,8 +1339,8 @@ int wgetnstr( #undef whline int whline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -1325,7 +1348,7 @@ int whline( #undef immedok void immedok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } @@ -1333,8 +1356,8 @@ void immedok( #undef winchnstr int winchnstr( - WINDOW *win, - chtype *str, + WINDOW *win, + chtype *str, int n) { return(*(int *)0); } @@ -1348,14 +1371,14 @@ WINDOW *initscr(void) #undef _nc_insert_ch int _nc_insert_ch( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, chtype ch) { return(*(int *)0); } #undef winsch int winsch( - WINDOW *win, + WINDOW *win, chtype c) { return(*(int *)0); } @@ -1363,7 +1386,7 @@ int winsch( #undef winsdelln int winsdelln( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -1371,8 +1394,8 @@ int winsdelln( #undef winsnstr int winsnstr( - WINDOW *win, - const char *s, + WINDOW *win, + const char *s, int n) { return(*(int *)0); } @@ -1380,8 +1403,8 @@ int winsnstr( #undef winnstr int winnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int n) { return(*(int *)0); } @@ -1400,7 +1423,7 @@ NCURSES_BOOL isendwin(void) #undef leaveok int leaveok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -1408,7 +1431,7 @@ int leaveok( #undef getmouse_sp int getmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1419,7 +1442,7 @@ int getmouse( #undef ungetmouse_sp int ungetmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1430,27 +1453,27 @@ int ungetmouse( #undef mousemask_sp mmask_t mousemask_sp( - SCREEN *sp, - mmask_t newmask, + SCREEN *sp, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef mousemask mmask_t mousemask( - mmask_t newmask, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef wenclose NCURSES_BOOL wenclose( - const WINDOW *win, - int y, + const WINDOW *win, + int y, int x) { return(*(NCURSES_BOOL *)0); } #undef mouseinterval_sp int mouseinterval_sp( - SCREEN *sp, + SCREEN *sp, int maxclick) { return(*(int *)0); } @@ -1475,9 +1498,9 @@ NCURSES_BOOL has_mouse(void) #undef wmouse_trafo NCURSES_BOOL wmouse_trafo( - const WINDOW *win, - int *pY, - int *pX, + const WINDOW *win, + int *pY, + int *pX, NCURSES_BOOL to_screen) { return(*(NCURSES_BOOL *)0); } @@ -1485,8 +1508,8 @@ NCURSES_BOOL wmouse_trafo( #undef wmove int wmove( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } @@ -1494,14 +1517,14 @@ int wmove( #undef _nc_msec_cost_sp int _nc_msec_cost_sp( - SCREEN *sp, - const char *const cap, + SCREEN *sp, + const char *const cap, int affcnt) { return(*(int *)0); } #undef _nc_msec_cost int _nc_msec_cost( - const char *const cap, + const char *const cap, int affcnt) { return(*(int *)0); } @@ -1532,20 +1555,37 @@ void _nc_mvcur_wrap_sp( void _nc_mvcur_wrap(void) { /* void */ } +#undef _nc_mvcur_sp +int _nc_mvcur_sp( + SCREEN *sp, + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + +#undef _nc_mvcur +int _nc_mvcur( + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + #undef mvcur_sp int mvcur_sp( - SCREEN *sp, - int yold, - int xold, - int ynew, + SCREEN *sp, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } #undef mvcur int mvcur( - int yold, - int xold, - int ynew, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } @@ -1556,8 +1596,8 @@ int _nc_optimize_enable; #undef mvwin int mvwin( - WINDOW *win, - int by, + WINDOW *win, + int by, int bx) { return(*(int *)0); } @@ -1583,16 +1623,16 @@ void nofilter(void) #undef newterm_sp SCREEN *newterm_sp( - SCREEN *sp, - char *name, - FILE *ofp, + SCREEN *sp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } #undef newterm SCREEN *newterm( - char *name, - FILE *ofp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } @@ -1605,46 +1645,46 @@ int _nc_freewin( #undef newwin_sp WINDOW *newwin_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef newwin WINDOW *newwin( - int num_lines, - int num_columns, - int begy, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef derwin WINDOW *derwin( - WINDOW *orig, - int num_lines, - int num_columns, - int begy, + WINDOW *orig, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef subwin WINDOW *subwin( - WINDOW *w, - int l, - int c, - int y, + WINDOW *w, + int l, + int c, + int y, int x) { return(*(WINDOW **)0); } #undef _nc_makenew_sp WINDOW *_nc_makenew_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, - int begx, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, + int begx, int flags) { return(*(WINDOW **)0); } @@ -1687,26 +1727,26 @@ int nonl(void) #undef overlay int overlay( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef overwrite int overwrite( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef copywin int copywin( - const WINDOW *src, - WINDOW *dst, - int sminrow, - int smincol, - int dminrow, - int dmincol, - int dmaxrow, - int dmaxcol, + const WINDOW *src, + WINDOW *dst, + int sminrow, + int smincol, + int dminrow, + int dmincol, + int dmaxrow, + int dmaxcol, int over) { return(*(int *)0); } @@ -1714,51 +1754,51 @@ int copywin( #undef newpad_sp WINDOW *newpad_sp( - SCREEN *sp, - int l, + SCREEN *sp, + int l, int c) { return(*(WINDOW **)0); } #undef newpad WINDOW *newpad( - int l, + int l, int c) { return(*(WINDOW **)0); } #undef subpad WINDOW *subpad( - WINDOW *orig, - int l, - int c, - int begy, + WINDOW *orig, + int l, + int c, + int begy, int begx) { return(*(WINDOW **)0); } #undef prefresh int prefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pnoutrefresh int pnoutrefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pechochar int pechochar( - WINDOW *pad, + WINDOW *pad, const chtype ch) { return(*(int *)0); } @@ -1766,38 +1806,45 @@ int pechochar( #undef printw int printw( - const char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wprintw int wprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvprintw int mvprintw( - int y, - int x, - const char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwprintw int mvwprintw( - WINDOW *win, - int y, - int x, - const char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef vwprintw int vwprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_printw +int vw_printw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } @@ -1805,8 +1852,8 @@ int vwprintw( #undef wredrawln int wredrawln( - WINDOW *win, - int beg, + WINDOW *win, + int beg, int num) { return(*(int *)0); } @@ -1826,16 +1873,16 @@ int wnoutrefresh( #undef restartterm_sp int restartterm_sp( - SCREEN *sp, - char *termp, - int filenum, + SCREEN *sp, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } #undef restartterm int restartterm( - char *termp, - int filenum, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } @@ -1843,38 +1890,45 @@ int restartterm( #undef vwscanw int vwscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_scanw +int vw_scanw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } #undef scanw int scanw( - char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wscanw int wscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvscanw int mvscanw( - int y, - int x, - char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwscanw int mvwscanw( - WINDOW *win, - int y, - int x, - char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } @@ -1882,7 +1936,7 @@ int mvwscanw( #undef getwin_sp WINDOW *getwin_sp( - SCREEN *sp, + SCREEN *sp, FILE *filep) { return(*(WINDOW **)0); } @@ -1893,13 +1947,13 @@ WINDOW *getwin( #undef putwin int putwin( - WINDOW *win, + WINDOW *win, FILE *filep) { return(*(int *)0); } #undef scr_restore_sp int scr_restore_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -1915,7 +1969,7 @@ int scr_dump( #undef scr_init_sp int scr_init_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -1926,7 +1980,7 @@ int scr_init( #undef scr_set_sp int scr_set_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -1939,16 +1993,16 @@ int scr_set( #undef _nc_scroll_window void _nc_scroll_window( - WINDOW *win, - int const n, - int const top, - int const bottom, + WINDOW *win, + int const n, + int const top, + int const bottom, chtype blank) { /* void */ } #undef wscrl int wscrl( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -1956,7 +2010,7 @@ int wscrl( #undef scrollok int scrollok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -1964,8 +2018,8 @@ int scrollok( #undef wsetscrreg int wsetscrreg( - WINDOW *win, - int top, + WINDOW *win, + int top, int bottom) { return(*(int *)0); } @@ -1983,54 +2037,54 @@ void delscreen( #undef _nc_setupscreen_sp int _nc_setupscreen_sp( - SCREEN **spp, - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + SCREEN **spp, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_setupscreen int _nc_setupscreen( - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_ripoffline_sp int _nc_ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef _nc_ripoffline int _nc_ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline_sp int ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline int ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } @@ -2038,13 +2092,13 @@ int ripoffline( #undef _nc_format_slks int _nc_format_slks( - SCREEN *sp, + SCREEN *sp, int cols) { return(*(int *)0); } #undef _nc_slk_initialize int _nc_slk_initialize( - WINDOW *stwin, + WINDOW *stwin, int cols) { return(*(int *)0); } @@ -2061,16 +2115,16 @@ int slk_restore(void) #undef slk_attr_set_sp int slk_attr_set_sp( - SCREEN *sp, - const attr_t attr, - short color_pair_number, + SCREEN *sp, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } #undef slk_attr_set int slk_attr_set( - const attr_t attr, - short color_pair_number, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } @@ -2078,7 +2132,7 @@ int slk_attr_set( #undef slk_attroff_sp int slk_attroff_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2091,7 +2145,7 @@ int slk_attroff( #undef slk_attron_sp int slk_attron_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2104,7 +2158,7 @@ int slk_attron( #undef slk_attrset_sp int slk_attrset_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2139,20 +2193,20 @@ int slk_clear(void) #undef slk_color_sp int slk_color_sp( - SCREEN *sp, - short color_pair_number) + SCREEN *sp, + short pair_arg) { return(*(int *)0); } #undef slk_color int slk_color( - short color_pair_number) + short pair_arg) { return(*(int *)0); } /* ./base/lib_slkinit.c */ #undef slk_init_sp int slk_init_sp( - SCREEN *sp, + SCREEN *sp, int format) { return(*(int *)0); } @@ -2165,7 +2219,7 @@ int slk_init( #undef slk_label_sp char *slk_label_sp( - SCREEN *sp, + SCREEN *sp, int n) { return(*(char **)0); } @@ -2198,16 +2252,16 @@ int slk_refresh(void) #undef slk_set_sp int slk_set_sp( - SCREEN *sp, - int i, - const char *astr, + SCREEN *sp, + int i, + const char *astr, int format) { return(*(int *)0); } #undef slk_set int slk_set( - int i, - const char *astr, + int i, + const char *astr, int format) { return(*(int *)0); } @@ -2226,7 +2280,7 @@ int slk_touch(void) #undef is_linetouched NCURSES_BOOL is_linetouched( - WINDOW *win, + WINDOW *win, int line) { return(*(NCURSES_BOOL *)0); } @@ -2237,9 +2291,9 @@ NCURSES_BOOL is_wintouched( #undef wtouchln int wtouchln( - WINDOW *win, - int y, - int n, + WINDOW *win, + int y, + int n, int changed) { return(*(int *)0); } @@ -2247,21 +2301,27 @@ int wtouchln( #undef _tracedump void _tracedump( - const char *name, + const char *name, WINDOW *win) { /* void */ } /* ./trace/lib_tracemse.c */ +#undef _nc_trace_mmask_t +char *_nc_trace_mmask_t( + SCREEN *sp, + mmask_t code) + { return(*(char **)0); } + #undef _nc_tracemouse char *_nc_tracemouse( - SCREEN *sp, + SCREEN *sp, MEVENT const *ep) { return(*(char **)0); } #undef _nc_retrace_mmask_t mmask_t _nc_retrace_mmask_t( - SCREEN *sp, + SCREEN *sp, mmask_t code) { return(*(mmask_t *)0); } @@ -2272,11 +2332,9 @@ char *_tracemouse( /* ./tty/lib_tstp.c */ -#include <SigAction.h> - #undef _nc_signal_handler void _nc_signal_handler( - NCURSES_BOOL enable) + int enable) { /* void */ } /* ./base/lib_ungetch.c */ @@ -2288,7 +2346,7 @@ void _nc_fifo_dump( #undef ungetch_sp int ungetch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -2301,20 +2359,20 @@ int ungetch( #undef vidputs_sp int vidputs_sp( - SCREEN *sp, - chtype newmode, + SCREEN *sp, + chtype newmode, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef vidputs int vidputs( - chtype newmode, + chtype newmode, NCURSES_OUTC outc) { return(*(int *)0); } #undef vidattr_sp int vidattr_sp( - SCREEN *sp, + SCREEN *sp, chtype newmode) { return(*(int *)0); } @@ -2336,8 +2394,8 @@ chtype termattrs(void) #undef wvline int wvline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -2345,8 +2403,8 @@ int wvline( #undef wattr_off int wattr_off( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2354,8 +2412,8 @@ int wattr_off( #undef wattr_on int wattr_on( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2375,14 +2433,14 @@ void _nc_synchook( #undef mvderwin int mvderwin( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } #undef syncok int syncok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL bf) { return(*(int *)0); } @@ -2421,22 +2479,19 @@ struct panelhook *_nc_panelhook(void) #undef _nc_printf_string_sp char *_nc_printf_string_sp( - SCREEN *sp, - const char *fmt, + SCREEN *sp, + const char *fmt, va_list ap) { return(*(char **)0); } #undef _nc_printf_string char *_nc_printf_string( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } /* ./tty/tty_update.c */ -#include <sys/time.h> -#include <sys/times.h> - #undef doupdate_sp int doupdate_sp( SCREEN *sp) @@ -2448,18 +2503,18 @@ int doupdate(void) #undef _nc_scrolln_sp int _nc_scrolln_sp( - SCREEN *sp, - int n, - int top, - int bot, + SCREEN *sp, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } #undef _nc_scrolln int _nc_scrolln( - int n, - int top, - int bot, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } @@ -2492,7 +2547,7 @@ void _nc_screen_wrap(void) #undef _nc_do_xmc_glitch_sp void _nc_do_xmc_glitch_sp( - SCREEN *sp, + SCREEN *sp, attr_t previous) { /* void */ } @@ -2503,22 +2558,12 @@ void _nc_do_xmc_glitch( /* ./trace/varargs.c */ -typedef enum { - atUnknown = 0, atInteger, atFloat, atPoint, atString -} ARGTYPE; - #undef _nc_varargs char *_nc_varargs( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } -/* ./base/memmove.c */ - -#undef _nc_memmove -void _nc_memmove(void) - { /* void */ } - /* ./base/vsscanf.c */ #undef _nc_vsscanf @@ -2533,7 +2578,7 @@ void _nc_freeall(void) #undef _nc_free_and_exit_sp void _nc_free_and_exit_sp( - SCREEN *sp, + SCREEN *sp, int code) { /* void */ } @@ -2542,35 +2587,40 @@ void _nc_free_and_exit( int code) { /* void */ } +#undef exit_curses +void exit_curses( + int code) + { /* void */ } + /* ./expanded.c */ #undef _nc_toggle_attr_on void _nc_toggle_attr_on( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_toggle_attr_off void _nc_toggle_attr_off( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_DelCharCost_sp int _nc_DelCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_InsCharCost_sp int _nc_InsCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_UpdateAttrs_sp void _nc_UpdateAttrs_sp( - SCREEN *sp, + SCREEN *sp, chtype c) { /* void */ } @@ -2593,7 +2643,7 @@ void _nc_UpdateAttrs( #undef use_legacy_coding_sp int use_legacy_coding_sp( - SCREEN *sp, + SCREEN *sp, int level) { return(*(int *)0); } @@ -2615,14 +2665,14 @@ int use_default_colors(void) #undef assume_default_colors_sp int assume_default_colors_sp( - SCREEN *sp, - int fg, + SCREEN *sp, + int fg, int bg) { return(*(int *)0); } #undef assume_default_colors int assume_default_colors( - int fg, + int fg, int bg) { return(*(int *)0); } @@ -2630,55 +2680,61 @@ int assume_default_colors( #undef mcprint_sp int mcprint_sp( - SCREEN *sp, - char *data, + SCREEN *sp, + char *data, int len) { return(*(int *)0); } #undef mcprint int mcprint( - char *data, + char *data, int len) { return(*(int *)0); } +/* ./base/new_pair.c */ + +#undef _nc_new_pair +void _nc_new_pair(void) + { /* void */ } + /* ./base/resizeterm.c */ #undef is_term_resized_sp NCURSES_BOOL is_term_resized_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef is_term_resized NCURSES_BOOL is_term_resized( - int ToLines, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef resize_term_sp int resize_term_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resize_term int resize_term( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm_sp int resizeterm_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm int resizeterm( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } @@ -2693,8 +2749,8 @@ void _nc_trace_xnames( #undef use_screen int use_screen( - SCREEN *screen, - NCURSES_SCREEN_CB func, + SCREEN *screen, + NCURSES_SCREEN_CB func, void *data) { return(*(int *)0); } @@ -2702,8 +2758,8 @@ int use_screen( #undef use_window int use_window( - WINDOW *win, - NCURSES_WINDOW_CB func, + WINDOW *win, + NCURSES_WINDOW_CB func, void *data) { return(*(int *)0); } @@ -2711,8 +2767,8 @@ int use_window( #undef wresize int wresize( - WINDOW *win, - int ToLines, + WINDOW *win, + int ToLines, int ToCols) { return(*(int *)0); } @@ -2740,7 +2796,7 @@ char *_nc_basename( #undef _nc_access int _nc_access( - const char *path, + const char *path, int mode) { return(*(int *)0); } @@ -2758,12 +2814,25 @@ NCURSES_BOOL _nc_is_file_path( int _nc_env_access(void) { return(*(int *)0); } +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + /* ./tinfo/add_tries.c */ #undef _nc_add_to_try int _nc_add_to_try( - TRIES **tree, - const char *str, + TRIES **tree, + const char *str, unsigned code) { return(*(int *)0); } @@ -2771,34 +2840,32 @@ int _nc_add_to_try( #undef _nc_align_termtype void _nc_align_termtype( - TERMTYPE *to, + TERMTYPE *to, TERMTYPE *from) { /* void */ } #undef _nc_copy_termtype void _nc_copy_termtype( - TERMTYPE *dst, - TERMTYPE *src) + TERMTYPE *dst, + const TERMTYPE *src) { /* void */ } /* ./codes.c */ #undef _nc_boolcodes -char *const *_nc_boolcodes(void) - { return(*(char **)0); } +const char *const *_nc_boolcodes(void) + { return(*(const char **)0); } #undef _nc_numcodes -char *const *_nc_numcodes(void) - { return(*(char **)0); } +const char *const *_nc_numcodes(void) + { return(*(const char **)0); } #undef _nc_strcodes -char *const *_nc_strcodes(void) - { return(*(char **)0); } +const char *const *_nc_strcodes(void) + { return(*(const char **)0); } /* ./comp_captab.c */ -#include <hashsize.h> - #undef _nc_get_table const struct name_table_entry *_nc_get_table( NCURSES_BOOL termcap) @@ -2849,19 +2916,19 @@ void _nc_get_type( #undef _nc_warning void _nc_warning( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_err_abort void _nc_err_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_syserr_abort void _nc_syserr_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } @@ -2869,17 +2936,32 @@ void _nc_syserr_abort( #undef _nc_find_entry struct name_table_entry const *_nc_find_entry( - const char *string, + const char *string, const HashValue *hash_table) { return(*(struct name_table_entry const **)0); } #undef _nc_find_type_entry struct name_table_entry const *_nc_find_type_entry( - const char *string, - int type, + const char *string, + int type, NCURSES_BOOL termcap) { return(*(struct name_table_entry const **)0); } +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + /* ./tinfo/db_iterator.c */ #undef _nc_tic_dir @@ -2898,13 +2980,13 @@ void _nc_last_db(void) #undef _nc_next_db const char *_nc_next_db( - DBDIRS *state, + DBDIRS *state, int *offset) { return(*(const char **)0); } #undef _nc_first_db void _nc_first_db( - DBDIRS *state, + DBDIRS *state, int *offset) { /* void */ } @@ -2912,7 +2994,7 @@ void _nc_first_db( #undef _nc_doalloc void *_nc_doalloc( - void *oldp, + void *oldp, size_t amount) { return(*(void **)0); } @@ -2925,7 +3007,7 @@ ENTRY *_nc_tail; #undef _nc_free_entry void _nc_free_entry( - ENTRY *headp, + ENTRY *headp, TERMTYPE *tterm) { /* void */ } @@ -2934,16 +3016,15 @@ void _nc_free_entries( ENTRY *headp) { /* void */ } -#undef _nc_delink_entry -ENTRY *_nc_delink_entry( - ENTRY *headp, - TERMTYPE *tterm) - { return(*(ENTRY **)0); } - #undef _nc_leaks_tinfo void _nc_leaks_tinfo(void) { /* void */ } +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + /* ./fallback.c */ #undef _nc_fallback @@ -2973,6 +3054,12 @@ int _nc_getenv_num( const char *name) { return(*(int *)0); } +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + /* ./tinfo/home_terminfo.c */ #undef _nc_home_terminfo @@ -2981,15 +3068,6 @@ char *_nc_home_terminfo(void) /* ./tinfo/init_keytry.c */ -#if 0 - -#include <init_keytry.h> - -#undef _nc_tinfo_fkeys -const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0}; - -#endif - #undef _nc_init_keytry void _nc_init_keytry( SCREEN *sp) @@ -3012,11 +3090,9 @@ void _nc_init_acs(void) /* ./tinfo/lib_baudrate.c */ -#include <termcap.h> - struct speed { - int s; - int sp; + int given_speed; + int actual_speed; }; #undef _nc_baudrate @@ -3055,7 +3131,7 @@ TERMINAL *_nc_cur_term(void) #undef set_curterm_sp TERMINAL *set_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(TERMINAL **)0); } @@ -3066,7 +3142,7 @@ TERMINAL *set_curterm( #undef del_curterm_sp int del_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(int *)0); } @@ -3181,15 +3257,15 @@ int flushinp(void) struct kn { short offset; int code; }; #undef keyname_sp -char *keyname_sp( - SCREEN *sp, +const char *keyname_sp( + SCREEN *sp, int c) - { return(*(char **)0); } + { return(*(const char **)0); } #undef keyname -char *keyname( +const char *keyname( int c) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./tinfo/lib_longname.c */ @@ -3206,7 +3282,7 @@ char *longname(void) #undef napms_sp int napms_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -3219,19 +3295,19 @@ int napms( #undef idlok int idlok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef idcok void idcok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } #undef halfdelay_sp int halfdelay_sp( - SCREEN *sp, + SCREEN *sp, int t) { return(*(int *)0); } @@ -3242,37 +3318,37 @@ int halfdelay( #undef nodelay int nodelay( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef notimeout int notimeout( - WINDOW *win, + WINDOW *win, NCURSES_BOOL f) { return(*(int *)0); } #undef wtimeout void wtimeout( - WINDOW *win, + WINDOW *win, int delay) { /* void */ } #undef keypad int keypad( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef meta int meta( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef curs_set_sp int curs_set_sp( - SCREEN *sp, + SCREEN *sp, int vis) { return(*(int *)0); } @@ -3283,7 +3359,7 @@ int curs_set( #undef typeahead_sp int typeahead_sp( - SCREEN *sp, + SCREEN *sp, int fd) { return(*(int *)0); } @@ -3294,7 +3370,7 @@ int typeahead( #undef has_key_sp int has_key_sp( - SCREEN *sp, + SCREEN *sp, int keycode) { return(*(int *)0); } @@ -3305,15 +3381,15 @@ int has_key( #undef _nc_putp_flush_sp int _nc_putp_flush_sp( - SCREEN *sp, - const char *name, + SCREEN *sp, + const char *name, const char *value) { return(*(int *)0); } #undef _nc_keypad int _nc_keypad( - SCREEN *sp, - NCURSES_BOOL flag) + SCREEN *sp, + int flag) { return(*(int *)0); } /* ./tinfo/lib_raw.c */ @@ -3374,23 +3450,19 @@ void noqiflush(void) #undef intrflush_sp int intrflush_sp( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef intrflush int intrflush( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } /* ./tinfo/lib_setup.c */ -#include <locale.h> -#include <sys/ioctl.h> -#include <langinfo.h> - #undef _nc_ttytype char *_nc_ttytype(void) { return(*(char **)0); } @@ -3424,7 +3496,7 @@ int _nc_TABSIZE(void) #undef set_tabsize_sp int set_tabsize_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -3440,7 +3512,13 @@ int _nc_handle_sigwinch( #undef use_env_sp void use_env_sp( - SCREEN *sp, + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, NCURSES_BOOL f) { /* void */ } @@ -3449,10 +3527,15 @@ void use_env( NCURSES_BOOL f) { /* void */ } +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + #undef _nc_get_screensize void _nc_get_screensize( - SCREEN *sp, - int *linep, + SCREEN *sp, + int *linep, int *colp) { /* void */ } @@ -3463,14 +3546,14 @@ void _nc_update_screensize( #undef _nc_setup_tinfo int _nc_setup_tinfo( - const char *const tn, + const char *const tn, TERMTYPE *const tp) { return(*(int *)0); } #undef _nc_tinfo_cmdch void _nc_tinfo_cmdch( - TERMINAL *termp, - char proto) + TERMINAL *termp, + int proto) { /* void */ } #undef _nc_get_locale @@ -3488,20 +3571,28 @@ int _nc_locale_breaks_acs( #undef _nc_setupterm int _nc_setupterm( - char *tname, - int Filedes, - int *errret, - NCURSES_BOOL reuse) + const char *tname, + int Filedes, + int *errret, + int reuse) { return(*(int *)0); } +#undef _nc_find_prescr +SCREEN *_nc_find_prescr(void) + { return(*(SCREEN **)0); } + +#undef _nc_forget_prescr +void _nc_forget_prescr(void) + { /* void */ } + #undef new_prescr SCREEN *new_prescr(void) { return(*(SCREEN **)0); } #undef setupterm int setupterm( - char *tname, - int Filedes, + const char *tname, + int Filedes, int *errret) { return(*(int *)0); } @@ -3514,55 +3605,49 @@ char *BC; #undef tgetent_sp int tgetent_sp( - SCREEN *sp, - char *bufp, + SCREEN *sp, + char *bufp, const char *name) { return(*(int *)0); } -#if 0 - -#include <capdefaults.c> - -#endif - #undef tgetent int tgetent( - char *bufp, + char *bufp, const char *name) { return(*(int *)0); } #undef tgetflag_sp int tgetflag_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetflag int tgetflag( - char *id) + const char *id) { return(*(int *)0); } #undef tgetnum_sp int tgetnum_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetnum int tgetnum( - char *id) + const char *id) { return(*(int *)0); } #undef tgetstr_sp char *tgetstr_sp( - SCREEN *sp, - char *id, + SCREEN *sp, + const char *id, char **area) { return(*(char **)0); } #undef tgetstr char *tgetstr( - char *id, + const char *id, char **area) { return(*(char **)0); } @@ -3581,8 +3666,8 @@ char *termname(void) #undef tgoto char *tgoto( - const char *string, - int x, + const char *string, + int x, int y) { return(*(char **)0); } @@ -3590,35 +3675,35 @@ char *tgoto( #undef tigetflag_sp int tigetflag_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetflag int tigetflag( - char *str) + const char *str) { return(*(int *)0); } #undef tigetnum_sp int tigetnum_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetnum int tigetnum( - char *str) + const char *str) { return(*(int *)0); } #undef tigetstr_sp char *tigetstr_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(char **)0); } #undef tigetstr char *tigetstr( - char *str) + const char *str) { return(*(char **)0); } /* ./tinfo/lib_tparm.c */ @@ -3628,29 +3713,42 @@ int _nc_tparm_err; #undef _nc_tparm_analyze int _nc_tparm_analyze( - const char *string, - char *p_is_s[9], - int *popcount) + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) { return(*(int *)0); } #undef tparm char *tparm( - char *string, + const char *string, ...) { return(*(char **)0); } #undef tiparm char *tiparm( - const char *string, + const char *string, ...) { return(*(char **)0); } +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + /* ./tinfo/lib_tputs.c */ #undef PC char PC; #undef ospeed -NCURSES_OSPEED ospeed; +short ospeed; #undef _nc_nulls_sent int _nc_nulls_sent; @@ -3661,7 +3759,7 @@ void _nc_set_no_padding( #undef delay_output_sp int delay_output_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -3681,7 +3779,7 @@ void _nc_flush(void) #undef _nc_outch_sp int _nc_outch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -3690,48 +3788,59 @@ int _nc_outch( int ch) { return(*(int *)0); } +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + #undef putp_sp int putp_sp( - SCREEN *sp, + SCREEN *sp, const char *string) { return(*(int *)0); } -#undef _nc_putp_sp -int _nc_putp_sp( - SCREEN *sp, - const char *name, +#undef putp +int putp( const char *string) { return(*(int *)0); } -#undef putp -int putp( +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, const char *string) { return(*(int *)0); } #undef _nc_putp int _nc_putp( - const char *name, + const char *name, const char *string) { return(*(int *)0); } #undef tputs_sp int tputs_sp( - SCREEN *sp, - const char *string, - int affcnt, + SCREEN *sp, + const char *string, + int affcnt, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef _nc_outc_wrapper int _nc_outc_wrapper( - SCREEN *sp, + SCREEN *sp, int c) { return(*(int *)0); } #undef tputs int tputs( - const char *string, - int affcnt, + const char *string, + int affcnt, int (*outc)( int p1)) { return(*(int *)0); } @@ -3759,6 +3868,11 @@ void _nc_count_outchars( long increment) { /* void */ } +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + #undef trace void trace( const unsigned int tracelevel) @@ -3766,18 +3880,18 @@ void trace( #undef _tracef void _tracef( - const char *fmt, + const char *fmt, ...) { /* void */ } #undef _nc_retrace_bool NCURSES_BOOL _nc_retrace_bool( - NCURSES_BOOL code) + int code) { return(*(NCURSES_BOOL *)0); } #undef _nc_retrace_char char _nc_retrace_char( - char code) + int code) { return(*(char *)0); } #undef _nc_retrace_int @@ -3801,9 +3915,9 @@ const char *_nc_retrace_cptr( { return(*(const char **)0); } #undef _nc_retrace_cvoid_ptr -void *_nc_retrace_cvoid_ptr( - void *code) - { return(*(void **)0); } +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } #undef _nc_retrace_void_ptr void *_nc_retrace_void_ptr( @@ -3820,6 +3934,13 @@ WINDOW *_nc_retrace_win( WINDOW *code) { return(*(WINDOW **)0); } +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + #undef _nc_use_tracef int _nc_use_tracef( unsigned mask) @@ -3827,7 +3948,7 @@ int _nc_use_tracef( #undef _nc_locked_tracef void _nc_locked_tracef( - const char *fmt, + const char *fmt, ...) { /* void */ } @@ -3835,7 +3956,7 @@ void _nc_locked_tracef( #undef _traceattr2 char *_traceattr2( - int bufnum, + int bufnum, chtype newmode) { return(*(char **)0); } @@ -3856,13 +3977,13 @@ attr_t _nc_retrace_attr_t( #undef _nc_altcharset_name const char *_nc_altcharset_name( - attr_t attr, + attr_t attr, chtype ch) { return(*(const char **)0); } #undef _tracechtype2 char *_tracechtype2( - int bufnum, + int bufnum, chtype ch) { return(*(char **)0); } @@ -3878,14 +3999,9 @@ chtype _nc_retrace_chtype( /* ./trace/lib_tracebits.c */ -typedef struct { - unsigned int val; - const char *name; -} BITNAMES; - #undef _nc_trace_ttymode char *_nc_trace_ttymode( - struct termios *tty) + const struct termios *tty) { return(*(char **)0); } #undef _nc_tracebits @@ -3896,7 +4012,7 @@ char *_nc_tracebits(void) #undef _nc_tracechar char *_nc_tracechar( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(char **)0); } @@ -3909,7 +4025,7 @@ char *_tracechar( #undef _nc_get_tty_mode_sp int _nc_get_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -3920,7 +4036,7 @@ int _nc_get_tty_mode( #undef _nc_set_tty_mode_sp int _nc_set_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -3987,9 +4103,9 @@ int resetty(void) #undef _nc_timed_wait int _nc_timed_wait( - SCREEN *sp, - int mode, - int milliseconds, + SCREEN *sp, + int mode, + int milliseconds, int *timeleft) { return(*(int *)0); } @@ -4002,116 +4118,117 @@ char *_nc_first_name( #undef _nc_name_match int _nc_name_match( - const char *const namelst, - const char *const name, + const char *const namelst, + const char *const name, const char *const delim) { return(*(int *)0); } /* ./names.c */ #undef _nc_boolnames -char *const *_nc_boolnames(void) - { return(*(char **)0); } +const char *const *_nc_boolnames(void) + { return(*(const char **)0); } #undef _nc_boolfnames -char *const *_nc_boolfnames(void) - { return(*(char **)0); } +const char *const *_nc_boolfnames(void) + { return(*(const char **)0); } #undef _nc_numnames -char *const *_nc_numnames(void) - { return(*(char **)0); } +const char *const *_nc_numnames(void) + { return(*(const char **)0); } #undef _nc_numfnames -char *const *_nc_numfnames(void) - { return(*(char **)0); } +const char *const *_nc_numfnames(void) + { return(*(const char **)0); } #undef _nc_strnames -char *const *_nc_strnames(void) - { return(*(char **)0); } +const char *const *_nc_strnames(void) + { return(*(const char **)0); } #undef _nc_strfnames -char *const *_nc_strfnames(void) - { return(*(char **)0); } +const char *const *_nc_strfnames(void) + { return(*(const char **)0); } + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } /* ./tinfo/read_entry.c */ -#include <hashed_db.h> +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE *const tp) + { /* void */ } #undef _nc_read_termtype int _nc_read_termtype( - TERMTYPE *ptr, - char *buffer, + TERMTYPE *ptr, + char *buffer, int limit) { return(*(int *)0); } #undef _nc_read_file_entry int _nc_read_file_entry( - const char *const filename, + const char *const filename, TERMTYPE *ptr) { return(*(int *)0); } #undef _nc_read_entry int _nc_read_entry( - const char *const name, - char *const filename, + const char *const name, + char *const filename, TERMTYPE *const tp) { return(*(int *)0); } /* ./tinfo/read_termcap.c */ -#include <sys/types.h> - #undef _nc_read_termcap_entry int _nc_read_termcap_entry( - const char *const tn, + const char *const tn, TERMTYPE *const tp) { return(*(int *)0); } -/* ./tinfo/setbuf.c */ - -#undef _nc_set_buffer_sp -void _nc_set_buffer_sp( - SCREEN *sp, - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - -#undef _nc_set_buffer -void _nc_set_buffer( - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - /* ./tinfo/strings.c */ #undef _nc_str_init string_desc *_nc_str_init( - string_desc *dst, - char *src, + string_desc *dst, + char *src, size_t len) { return(*(string_desc **)0); } #undef _nc_str_null string_desc *_nc_str_null( - string_desc *dst, + string_desc *dst, size_t len) { return(*(string_desc **)0); } #undef _nc_str_copy string_desc *_nc_str_copy( - string_desc *dst, + string_desc *dst, string_desc *src) { return(*(string_desc **)0); } #undef _nc_safe_strcat NCURSES_BOOL _nc_safe_strcat( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } #undef _nc_safe_strcpy NCURSES_BOOL _nc_safe_strcpy( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } @@ -4119,13 +4236,13 @@ NCURSES_BOOL _nc_safe_strcpy( #undef _nc_trace_buf char *_nc_trace_buf( - int bufnum, + int bufnum, size_t want) { return(*(char **)0); } #undef _nc_trace_bufcat char *_nc_trace_bufcat( - int bufnum, + int bufnum, const char *value) { return(*(char **)0); } @@ -4140,21 +4257,21 @@ void _nc_trace_tries( #undef _nc_expand_try char *_nc_expand_try( - TRIES *tree, - unsigned code, - int *count, + TRIES *tree, + unsigned code, + int *count, size_t len) { return(*(char **)0); } #undef _nc_remove_key int _nc_remove_key( - TRIES **tree, + TRIES **tree, unsigned code) { return(*(int *)0); } #undef _nc_remove_string int _nc_remove_string( - TRIES **tree, + TRIES **tree, const char *string) { return(*(int *)0); } @@ -4168,21 +4285,21 @@ char *_nc_trim_sgr0( /* ./unctrl.c */ #undef unctrl_sp -char *unctrl_sp( - SCREEN *sp, +const char *unctrl_sp( + SCREEN *sp, chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } #undef unctrl -char *unctrl( +const char *unctrl( chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./trace/visbuf.c */ #undef _nc_visbuf2 const char *_nc_visbuf2( - int bufnum, + int bufnum, const char *buf) { return(*(const char **)0); } @@ -4193,20 +4310,20 @@ const char *_nc_visbuf( #undef _nc_visbufn const char *_nc_visbufn( - const char *buf, + const char *buf, int len) { return(*(const char **)0); } #undef _nc_viscbuf2 const char *_nc_viscbuf2( - int bufnum, - const chtype *buf, + int bufnum, + const chtype *buf, int len) { return(*(const char **)0); } #undef _nc_viscbuf const char *_nc_viscbuf( - const chtype *buf, + const chtype *buf, int len) { return(*(const char **)0); } @@ -4214,7 +4331,7 @@ const char *_nc_viscbuf( #undef _nc_init_entry void _nc_init_entry( - TERMTYPE *const tp) + ENTRY *const tp) { /* void */ } #undef _nc_copy_entry @@ -4224,34 +4341,34 @@ ENTRY *_nc_copy_entry( #undef _nc_save_str char *_nc_save_str( - const char *const string) + const char *string) { return(*(char **)0); } #undef _nc_wrap_entry void _nc_wrap_entry( - ENTRY *const ep, + ENTRY *const ep, NCURSES_BOOL copy_strings) { /* void */ } #undef _nc_merge_entry void _nc_merge_entry( - TERMTYPE *const to, - TERMTYPE *const from) + ENTRY *const target, + ENTRY *const source) { /* void */ } /* ./tinfo/captoinfo.c */ #undef _nc_captoinfo char *_nc_captoinfo( - const char *cap, - const char *s, + const char *cap, + const char *s, int const parameterized) { return(*(char **)0); } #undef _nc_infotocap char *_nc_infotocap( - const char *cap, - const char *str, + const char *cap, + const char *str, int const parameterized) { return(*(char **)0); } @@ -4259,8 +4376,8 @@ char *_nc_infotocap( #undef _nc_tic_expand char *_nc_tic_expand( - const char *srcp, - NCURSES_BOOL tic_format, + const char *srcp, + NCURSES_BOOL tic_format, int numbers) { return(*(char **)0); } @@ -4268,43 +4385,37 @@ char *_nc_tic_expand( #undef _nc_check_termtype2 void (*_nc_check_termtype2)( - TERMTYPE *p1, + TERMTYPE *p1, NCURSES_BOOL p2); -#undef _nc_check_termtype -void (*_nc_check_termtype)( - TERMTYPE *p1); #undef _nc_entry_match NCURSES_BOOL _nc_entry_match( - char *n1, + char *n1, char *n2) { return(*(NCURSES_BOOL *)0); } #undef _nc_read_entry_source void _nc_read_entry_source( - FILE *fp, - char *buf, - int literal, - NCURSES_BOOL silent, + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, NCURSES_BOOL (*hook)( ENTRY *p1)) { /* void */ } #undef _nc_resolve_uses2 int _nc_resolve_uses2( - NCURSES_BOOL fullresolve, + NCURSES_BOOL fullresolve, NCURSES_BOOL literal) { return(*(int *)0); } -#undef _nc_resolve_uses -int _nc_resolve_uses( - NCURSES_BOOL fullresolve) - { return(*(int *)0); } - /* ./tinfo/comp_scan.c */ #undef _nc_syntax int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; #undef _nc_curr_file_pos long _nc_curr_file_pos; #undef _nc_comment_start @@ -4320,7 +4431,7 @@ NCURSES_BOOL _nc_disable_period; #undef _nc_reset_input void _nc_reset_input( - FILE *fp, + FILE *fp, char *buf) { /* void */ } @@ -4331,7 +4442,7 @@ int _nc_get_token( #undef _nc_trans_string int _nc_trans_string( - char *ptr, + char *ptr, char *last) { return(*(int *)0); } @@ -4349,27 +4460,22 @@ void _nc_panic_mode( #undef _nc_parse_entry int _nc_parse_entry( - struct entry *entryp, - int literal, + ENTRY *entryp, + int literal, NCURSES_BOOL silent) { return(*(int *)0); } #undef _nc_capcmp int _nc_capcmp( - const char *s, + const char *s, const char *t) { return(*(int *)0); } -typedef struct { - const char *from; - const char *to; -} assoc; - /* ./tinfo/write_entry.c */ #undef _nc_set_writedir void _nc_set_writedir( - char *dir) + const char *dir) { /* void */ } #undef _nc_write_entry @@ -4377,6 +4483,14 @@ void _nc_write_entry( TERMTYPE *const tp) { /* void */ } +#undef _nc_write_object +int _nc_write_object( + TERMTYPE *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + #undef _nc_tic_written int _nc_tic_written(void) { return(*(int *)0); } @@ -4385,14 +4499,14 @@ int _nc_tic_written(void) #undef define_key_sp int define_key_sp( - SCREEN *sp, - const char *str, + SCREEN *sp, + const char *str, int keycode) { return(*(int *)0); } #undef define_key int define_key( - const char *str, + const char *str, int keycode) { return(*(int *)0); } @@ -4406,7 +4520,7 @@ void _nc_hashed_db(void) #undef key_defined_sp int key_defined_sp( - SCREEN *sp, + SCREEN *sp, const char *str) { return(*(int *)0); } @@ -4419,14 +4533,14 @@ int key_defined( #undef keybound_sp char *keybound_sp( - SCREEN *sp, - int code, + SCREEN *sp, + int code, int count) { return(*(char **)0); } #undef keybound char *keybound( - int code, + int code, int count) { return(*(char **)0); } @@ -4434,14 +4548,14 @@ char *keybound( #undef keyok_sp int keyok_sp( - SCREEN *sp, - int c, + SCREEN *sp, + int c, NCURSES_BOOL flag) { return(*(int *)0); } #undef keyok int keyok( - int c, + int c, NCURSES_BOOL flag) { return(*(int *)0); } diff --git a/deps/ncurses-5.9/ncurses/llib-lncursestw b/deps/ncurses-6.3/ncurses/llib-lncursestw similarity index 77% rename from deps/ncurses-5.9/ncurses/llib-lncursestw rename to deps/ncurses-6.3/ncurses/llib-lncursestw index 5230bc7..d553e5c 100644 --- a/deps/ncurses-5.9/ncurses/llib-lncursestw +++ b/deps/ncurses-6.3/ncurses/llib-lncursestw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2009-2010,2011 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2009-2016,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2009-2010,2011 * + * Author: Thomas E. Dickey 2009-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -69,7 +70,7 @@ void _nc_hash_map(void) #undef _nc_make_oldhash_sp void _nc_make_oldhash_sp( - SCREEN *sp, + SCREEN *sp, int i) { /* void */ } @@ -80,50 +81,48 @@ void _nc_make_oldhash( #undef _nc_scroll_oldhash_sp void _nc_scroll_oldhash_sp( - SCREEN *sp, - int n, - int top, + SCREEN *sp, + int n, + int top, int bot) { /* void */ } #undef _nc_scroll_oldhash void _nc_scroll_oldhash( - int n, - int top, + int n, + int top, int bot) { /* void */ } /* ./base/lib_addch.c */ -#include <ctype.h> - #undef _nc_render cchar_t _nc_render( - WINDOW *win, + WINDOW *win, cchar_t ch) { return(*(cchar_t *)0); } #undef _nc_build_wch int _nc_build_wch( - WINDOW *win, + WINDOW *win, cchar_t *ch) { return(*(int *)0); } #undef _nc_waddch_nosync int _nc_waddch_nosync( - WINDOW *win, + WINDOW *win, const cchar_t c) { return(*(int *)0); } #undef waddch int waddch( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } #undef wechochar int wechochar( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } @@ -131,15 +130,15 @@ int wechochar( #undef waddnstr int waddnstr( - WINDOW *win, - const char *astr, + WINDOW *win, + const char *astr, int n) { return(*(int *)0); } #undef waddchnstr int waddchnstr( - WINDOW *win, - const chtype *astr, + WINDOW *win, + const chtype *astr, int n) { return(*(int *)0); } @@ -150,15 +149,15 @@ int _nc_wchstrlen( #undef wadd_wchnstr int wadd_wchnstr( - WINDOW *win, - const cchar_t *astr, + WINDOW *win, + const cchar_t *astr, int n) { return(*(int *)0); } #undef waddnwstr int waddnwstr( - WINDOW *win, - const wchar_t *str, + WINDOW *win, + const wchar_t *str, int n) { return(*(int *)0); } @@ -177,25 +176,25 @@ int beep(void) #undef wbkgrndset void wbkgrndset( - WINDOW *win, + WINDOW *win, const cchar_t *ch) { /* void */ } #undef wbkgdset void wbkgdset( - WINDOW *win, + WINDOW *win, chtype ch) { /* void */ } #undef wbkgrnd int wbkgrnd( - WINDOW *win, + WINDOW *win, const cchar_t *ch) { return(*(int *)0); } #undef wbkgd int wbkgd( - WINDOW *win, + WINDOW *win, chtype ch) { return(*(int *)0); } @@ -203,14 +202,14 @@ int wbkgd( #undef wborder int wborder( - WINDOW *win, - chtype ls, - chtype rs, - chtype ts, - chtype bs, - chtype tl, - chtype tr, - chtype bl, + WINDOW *win, + chtype ls, + chtype rs, + chtype ts, + chtype bs, + chtype tl, + chtype tr, + chtype bl, chtype br) { return(*(int *)0); } @@ -218,10 +217,10 @@ int wborder( #undef wchgat int wchgat( - WINDOW *win, - int n, - attr_t attr, - short color, + WINDOW *win, + int n, + attr_t attr, + short pair_arg, const void *opts) { return(*(int *)0); } @@ -236,7 +235,7 @@ int wclear( #undef clearok int clearok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -256,8 +255,6 @@ int wclrtoeol( /* ./base/lib_color.c */ -#include <tic.h> - #undef _nc_COLOR_PAIRS int _nc_COLOR_PAIRS(void) { return(*(int *)0); } @@ -284,35 +281,64 @@ int start_color_sp( int start_color(void) { return(*(int *)0); } +#undef _nc_change_pair +void _nc_change_pair( + SCREEN *sp, + int pair) + { /* void */ } + +#undef _nc_reserve_pairs +void _nc_reserve_pairs( + SCREEN *sp, + int want) + { /* void */ } + +#undef _nc_init_pair +int _nc_init_pair( + SCREEN *sp, + int pair, + int f, + int b) + { return(*(int *)0); } + #undef init_pair_sp int init_pair_sp( - SCREEN *sp, - short pair, - short f, + SCREEN *sp, + short pair, + short f, short b) { return(*(int *)0); } #undef init_pair int init_pair( - short pair, - short f, + short pair, + short f, short b) { return(*(int *)0); } +#undef _nc_init_color +int _nc_init_color( + SCREEN *sp, + int color, + int r, + int g, + int b) + { return(*(int *)0); } + #undef init_color_sp int init_color_sp( - SCREEN *sp, - short color, - short r, - short g, + SCREEN *sp, + short color, + short r, + short g, short b) { return(*(int *)0); } #undef init_color int init_color( - short color, - short r, - short g, + short color, + short r, + short g, short b) { return(*(int *)0); } @@ -336,59 +362,140 @@ NCURSES_BOOL has_colors(void) #undef color_content_sp int color_content_sp( - SCREEN *sp, - short color, - short *r, - short *g, + SCREEN *sp, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } #undef color_content int color_content( - short color, - short *r, - short *g, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } +#undef _nc_pair_content +int _nc_pair_content( + SCREEN *sp, + int pair, + int *f, + int *b) + { return(*(int *)0); } + #undef pair_content_sp int pair_content_sp( - SCREEN *sp, - short pair, - short *f, + SCREEN *sp, + short pair, + short *f, short *b) { return(*(int *)0); } #undef pair_content int pair_content( - short pair, - short *f, + short pair, + short *f, short *b) { return(*(int *)0); } #undef _nc_do_color_sp void _nc_do_color_sp( - SCREEN *sp, - short old_pair, - short pair, - NCURSES_BOOL reverse, + SCREEN *sp, + int old_pair, + int pair, + int reverse, NCURSES_OUTC_sp outc) { /* void */ } #undef _nc_do_color void _nc_do_color( - short old_pair, - short pair, - NCURSES_BOOL reverse, + int old_pair, + int pair, + int reverse, NCURSES_OUTC outc) { /* void */ } +#undef init_extended_pair_sp +int init_extended_pair_sp( + SCREEN *sp, + int pair, + int f, + int b) + { return(*(int *)0); } + +#undef init_extended_color_sp +int init_extended_color_sp( + SCREEN *sp, + int color, + int r, + int g, + int b) + { return(*(int *)0); } + +#undef extended_color_content_sp +int extended_color_content_sp( + SCREEN *sp, + int color, + int *r, + int *g, + int *b) + { return(*(int *)0); } + +#undef extended_pair_content_sp +int extended_pair_content_sp( + SCREEN *sp, + int pair, + int *f, + int *b) + { return(*(int *)0); } + +#undef reset_color_pairs_sp +void reset_color_pairs_sp( + SCREEN *sp) + { /* void */ } + +#undef init_extended_pair +int init_extended_pair( + int pair, + int f, + int b) + { return(*(int *)0); } + +#undef init_extended_color +int init_extended_color( + int color, + int r, + int g, + int b) + { return(*(int *)0); } + +#undef extended_color_content +int extended_color_content( + int color, + int *r, + int *g, + int *b) + { return(*(int *)0); } + +#undef extended_pair_content +int extended_pair_content( + int pair, + int *f, + int *b) + { return(*(int *)0); } + +#undef reset_color_pairs +void reset_color_pairs(void) + { /* void */ } + /* ./base/lib_colorset.c */ #undef wcolor_set int wcolor_set( - WINDOW *win, - short color_pair_number, + WINDOW *win, + short pair_arg, void *opts) { return(*(int *)0); } @@ -464,7 +571,7 @@ int addch( #undef addchnstr int addchnstr( - const chtype *a1, + const chtype *a1, int z) { return(*(int *)0); } @@ -475,7 +582,7 @@ int addchstr( #undef addnstr int addnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -501,27 +608,27 @@ int attrset( #undef attr_get int attr_get( - attr_t *a1, - short *a2, + attr_t *a1, + short *a2, void *z) { return(*(int *)0); } #undef attr_off int attr_off( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_on int attr_on( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_set int attr_set( - attr_t a1, - short a2, + attr_t a1, + short a2, void *z) { return(*(int *)0); } @@ -537,28 +644,28 @@ void bkgdset( #undef border int border( - chtype a1, - chtype a2, - chtype a3, - chtype a4, - chtype a5, - chtype a6, - chtype a7, + chtype a1, + chtype a2, + chtype a3, + chtype a4, + chtype a5, + chtype a6, + chtype a7, chtype z) { return(*(int *)0); } #undef box int box( - WINDOW *a1, - chtype a2, + WINDOW *a1, + chtype a2, chtype z) { return(*(int *)0); } #undef chgat int chgat( - int a1, - attr_t a2, - short a3, + int a1, + attr_t a2, + short a3, const void *z) { return(*(int *)0); } @@ -576,7 +683,7 @@ int clrtoeol(void) #undef color_set int color_set( - short a1, + short a1, void *z) { return(*(int *)0); } @@ -613,7 +720,7 @@ int getch(void) #undef getnstr int getnstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -624,7 +731,7 @@ int getstr( #undef hline int hline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } @@ -634,7 +741,7 @@ chtype inch(void) #undef inchnstr int inchnstr( - chtype *a1, + chtype *a1, int z) { return(*(int *)0); } @@ -645,7 +752,7 @@ int inchstr( #undef innstr int innstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -665,7 +772,7 @@ int insertln(void) #undef insnstr int insnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -681,323 +788,323 @@ int instr( #undef move int move( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvaddch int mvaddch( - int a1, - int a2, + int a1, + int a2, const chtype z) { return(*(int *)0); } #undef mvaddchnstr int mvaddchnstr( - int a1, - int a2, - const chtype *a3, + int a1, + int a2, + const chtype *a3, int z) { return(*(int *)0); } #undef mvaddchstr int mvaddchstr( - int a1, - int a2, + int a1, + int a2, const chtype *z) { return(*(int *)0); } #undef mvaddnstr int mvaddnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvaddstr int mvaddstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvchgat int mvchgat( - int a1, - int a2, - int a3, - attr_t a4, - short a5, + int a1, + int a2, + int a3, + attr_t a4, + short a5, const void *z) { return(*(int *)0); } #undef mvdelch int mvdelch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetch int mvgetch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetnstr int mvgetnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvgetstr int mvgetstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvhline int mvhline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvinch chtype mvinch( - int a1, + int a1, int z) { return(*(chtype *)0); } #undef mvinchnstr int mvinchnstr( - int a1, - int a2, - chtype *a3, + int a1, + int a2, + chtype *a3, int z) { return(*(int *)0); } #undef mvinchstr int mvinchstr( - int a1, - int a2, + int a1, + int a2, chtype *z) { return(*(int *)0); } #undef mvinnstr int mvinnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvinsch int mvinsch( - int a1, - int a2, + int a1, + int a2, chtype z) { return(*(int *)0); } #undef mvinsnstr int mvinsnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvinsstr int mvinsstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvinstr int mvinstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvvline int mvvline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvwaddch int mvwaddch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype z) { return(*(int *)0); } #undef mvwaddchnstr int mvwaddchnstr( - WINDOW *a1, - int a2, - int a3, - const chtype *a4, + WINDOW *a1, + int a2, + int a3, + const chtype *a4, int z) { return(*(int *)0); } #undef mvwaddchstr int mvwaddchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype *z) { return(*(int *)0); } #undef mvwaddnstr int mvwaddnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwaddstr int mvwaddstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwchgat int mvwchgat( - WINDOW *a1, - int a2, - int a3, - int a4, - attr_t a5, - short a6, + WINDOW *a1, + int a2, + int a3, + int a4, + attr_t a5, + short a6, const void *z) { return(*(int *)0); } #undef mvwdelch int mvwdelch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetch int mvwgetch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetnstr int mvwgetnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwgetstr int mvwgetstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwhline int mvwhline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } #undef mvwinch chtype mvwinch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(chtype *)0); } #undef mvwinchnstr int mvwinchnstr( - WINDOW *a1, - int a2, - int a3, - chtype *a4, + WINDOW *a1, + int a2, + int a3, + chtype *a4, int z) { return(*(int *)0); } #undef mvwinchstr int mvwinchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype *z) { return(*(int *)0); } #undef mvwinnstr int mvwinnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwinsch int mvwinsch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype z) { return(*(int *)0); } #undef mvwinsnstr int mvwinsnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwinsstr int mvwinsstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwinstr int mvwinstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwvline int mvwvline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } @@ -1027,19 +1134,19 @@ int scroll( #undef setscrreg int setscrreg( - int a1, + int a1, int z) { return(*(int *)0); } #undef slk_attr_off int slk_attr_off( - const attr_t a1, + const attr_t a1, void *z) { return(*(int *)0); } #undef slk_attr_on int slk_attr_on( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } @@ -1058,8 +1165,8 @@ void timeout( #undef touchline int touchline( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } @@ -1075,67 +1182,53 @@ int untouchwin( #undef vline int vline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } -#undef vw_printw -int vw_printw( - WINDOW *a1, - const char *a2, - va_list z) - { return(*(int *)0); } - -#undef vw_scanw -int vw_scanw( - WINDOW *a1, - char *a2, - va_list z) - { return(*(int *)0); } - #undef waddchstr int waddchstr( - WINDOW *a1, + WINDOW *a1, const chtype *z) { return(*(int *)0); } #undef waddstr int waddstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef wattron int wattron( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattroff int wattroff( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattrset int wattrset( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattr_get int wattr_get( - WINDOW *a1, - attr_t *a2, - short *a3, + WINDOW *a1, + attr_t *a2, + short *a3, void *z) { return(*(int *)0); } #undef wattr_set int wattr_set( - WINDOW *a1, - attr_t a2, - short a3, + WINDOW *a1, + attr_t a2, + short a3, void *z) { return(*(int *)0); } @@ -1146,13 +1239,13 @@ int wdeleteln( #undef wgetstr int wgetstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } #undef winchstr int winchstr( - WINDOW *a1, + WINDOW *a1, chtype *z) { return(*(int *)0); } @@ -1163,13 +1256,13 @@ int winsertln( #undef winsstr int winsstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef winstr int winstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } @@ -1293,10 +1386,15 @@ NCURSES_BOOL is_syncok( const WINDOW *z) { return(*(NCURSES_BOOL *)0); } +#undef wgetdelay +int wgetdelay( + const WINDOW *z) + { return(*(int *)0); } + #undef wgetscrreg int wgetscrreg( - const WINDOW *a1, - int *a2, + const WINDOW *a1, + int *a2, int *z) { return(*(int *)0); } @@ -1307,7 +1405,7 @@ int add_wch( #undef add_wchnstr int add_wchnstr( - const cchar_t *a1, + const cchar_t *a1, int z) { return(*(int *)0); } @@ -1318,7 +1416,7 @@ int add_wchstr( #undef addnwstr int addnwstr( - const wchar_t *a1, + const wchar_t *a1, int z) { return(*(int *)0); } @@ -1339,20 +1437,20 @@ void bkgrndset( #undef border_set int border_set( - const cchar_t *a1, - const cchar_t *a2, - const cchar_t *a3, - const cchar_t *a4, - const cchar_t *a5, - const cchar_t *a6, - const cchar_t *a7, + const cchar_t *a1, + const cchar_t *a2, + const cchar_t *a3, + const cchar_t *a4, + const cchar_t *a5, + const cchar_t *a6, + const cchar_t *a7, const cchar_t *z) { return(*(int *)0); } #undef box_set int box_set( - WINDOW *a1, - const cchar_t *a2, + WINDOW *a1, + const cchar_t *a2, const cchar_t *z) { return(*(int *)0); } @@ -1378,13 +1476,13 @@ int getbkgrnd( #undef getn_wstr int getn_wstr( - wint_t *a1, + wint_t *a1, int z) { return(*(int *)0); } #undef hline_set int hline_set( - const cchar_t *a1, + const cchar_t *a1, int z) { return(*(int *)0); } @@ -1395,7 +1493,7 @@ int in_wch( #undef in_wchnstr int in_wchnstr( - cchar_t *a1, + cchar_t *a1, int z) { return(*(int *)0); } @@ -1406,13 +1504,13 @@ int in_wchstr( #undef innwstr int innwstr( - wchar_t *a1, + wchar_t *a1, int z) { return(*(int *)0); } #undef ins_nwstr int ins_nwstr( - const wchar_t *a1, + const wchar_t *a1, int z) { return(*(int *)0); } @@ -1433,343 +1531,341 @@ int inwstr( #undef mvadd_wch int mvadd_wch( - int a1, - int a2, + int a1, + int a2, const cchar_t *z) { return(*(int *)0); } #undef mvadd_wchnstr int mvadd_wchnstr( - int a1, - int a2, - const cchar_t *a3, + int a1, + int a2, + const cchar_t *a3, int z) { return(*(int *)0); } #undef mvadd_wchstr int mvadd_wchstr( - int a1, - int a2, + int a1, + int a2, const cchar_t *z) { return(*(int *)0); } #undef mvaddnwstr int mvaddnwstr( - int a1, - int a2, - const wchar_t *a3, + int a1, + int a2, + const wchar_t *a3, int z) { return(*(int *)0); } #undef mvaddwstr int mvaddwstr( - int a1, - int a2, + int a1, + int a2, const wchar_t *z) { return(*(int *)0); } #undef mvget_wch int mvget_wch( - int a1, - int a2, + int a1, + int a2, wint_t *z) { return(*(int *)0); } #undef mvget_wstr int mvget_wstr( - int a1, - int a2, + int a1, + int a2, wint_t *z) { return(*(int *)0); } #undef mvgetn_wstr int mvgetn_wstr( - int a1, - int a2, - wint_t *a3, + int a1, + int a2, + wint_t *a3, int z) { return(*(int *)0); } #undef mvhline_set int mvhline_set( - int a1, - int a2, - const cchar_t *a3, + int a1, + int a2, + const cchar_t *a3, int z) { return(*(int *)0); } #undef mvin_wch int mvin_wch( - int a1, - int a2, + int a1, + int a2, cchar_t *z) { return(*(int *)0); } #undef mvin_wchnstr int mvin_wchnstr( - int a1, - int a2, - cchar_t *a3, + int a1, + int a2, + cchar_t *a3, int z) { return(*(int *)0); } #undef mvin_wchstr int mvin_wchstr( - int a1, - int a2, + int a1, + int a2, cchar_t *z) { return(*(int *)0); } #undef mvinnwstr int mvinnwstr( - int a1, - int a2, - wchar_t *a3, + int a1, + int a2, + wchar_t *a3, int z) { return(*(int *)0); } #undef mvins_nwstr int mvins_nwstr( - int a1, - int a2, - const wchar_t *a3, + int a1, + int a2, + const wchar_t *a3, int z) { return(*(int *)0); } #undef mvins_wch int mvins_wch( - int a1, - int a2, + int a1, + int a2, const cchar_t *z) { return(*(int *)0); } #undef mvins_wstr int mvins_wstr( - int a1, - int a2, + int a1, + int a2, const wchar_t *z) { return(*(int *)0); } #undef mvinwstr int mvinwstr( - int a1, - int a2, + int a1, + int a2, wchar_t *z) { return(*(int *)0); } #undef mvvline_set int mvvline_set( - int a1, - int a2, - const cchar_t *a3, + int a1, + int a2, + const cchar_t *a3, int z) { return(*(int *)0); } #undef mvwadd_wch int mvwadd_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const cchar_t *z) { return(*(int *)0); } #undef mvwadd_wchnstr int mvwadd_wchnstr( - WINDOW *a1, - int a2, - int a3, - const cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const cchar_t *a4, int z) { return(*(int *)0); } #undef mvwadd_wchstr int mvwadd_wchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const cchar_t *z) { return(*(int *)0); } #undef mvwaddnwstr int mvwaddnwstr( - WINDOW *a1, - int a2, - int a3, - const wchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const wchar_t *a4, int z) { return(*(int *)0); } #undef mvwaddwstr int mvwaddwstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const wchar_t *z) { return(*(int *)0); } #undef mvwget_wch int mvwget_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, wint_t *z) { return(*(int *)0); } #undef mvwget_wstr int mvwget_wstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, wint_t *z) { return(*(int *)0); } #undef mvwgetn_wstr int mvwgetn_wstr( - WINDOW *a1, - int a2, - int a3, - wint_t *a4, + WINDOW *a1, + int a2, + int a3, + wint_t *a4, int z) { return(*(int *)0); } #undef mvwhline_set int mvwhline_set( - WINDOW *a1, - int a2, - int a3, - const cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const cchar_t *a4, int z) { return(*(int *)0); } #undef mvwin_wch int mvwin_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, cchar_t *z) { return(*(int *)0); } #undef mvwin_wchnstr int mvwin_wchnstr( - WINDOW *a1, - int a2, - int a3, - cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + cchar_t *a4, int z) { return(*(int *)0); } #undef mvwin_wchstr int mvwin_wchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, cchar_t *z) { return(*(int *)0); } #undef mvwinnwstr int mvwinnwstr( - WINDOW *a1, - int a2, - int a3, - wchar_t *a4, + WINDOW *a1, + int a2, + int a3, + wchar_t *a4, int z) { return(*(int *)0); } #undef mvwins_nwstr int mvwins_nwstr( - WINDOW *a1, - int a2, - int a3, - const wchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const wchar_t *a4, int z) { return(*(int *)0); } #undef mvwins_wch int mvwins_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const cchar_t *z) { return(*(int *)0); } #undef mvwins_wstr int mvwins_wstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const wchar_t *z) { return(*(int *)0); } #undef mvwinwstr int mvwinwstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, wchar_t *z) { return(*(int *)0); } #undef mvwvline_set int mvwvline_set( - WINDOW *a1, - int a2, - int a3, - const cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const cchar_t *a4, int z) { return(*(int *)0); } #undef vline_set int vline_set( - const cchar_t *a1, + const cchar_t *a1, int z) { return(*(int *)0); } #undef wadd_wchstr int wadd_wchstr( - WINDOW *a1, + WINDOW *a1, const cchar_t *z) { return(*(int *)0); } #undef waddwstr int waddwstr( - WINDOW *a1, + WINDOW *a1, const wchar_t *z) { return(*(int *)0); } #undef wget_wstr int wget_wstr( - WINDOW *a1, + WINDOW *a1, wint_t *z) { return(*(int *)0); } #undef wgetbkgrnd int wgetbkgrnd( - WINDOW *a1, + WINDOW *a1, cchar_t *z) { return(*(int *)0); } #undef win_wchstr int win_wchstr( - WINDOW *a1, + WINDOW *a1, cchar_t *z) { return(*(int *)0); } #undef wins_wstr int wins_wstr( - WINDOW *a1, + WINDOW *a1, const wchar_t *z) { return(*(int *)0); } #undef mouse_trafo NCURSES_BOOL mouse_trafo( - int *a1, - int *a2, + int *a1, + int *a2, NCURSES_BOOL z) { return(*(NCURSES_BOOL *)0); } /* ./base/lib_getch.c */ -#include <fifo_defs.h> - #undef _nc_ESCDELAY int _nc_ESCDELAY(void) { return(*(int *)0); } @@ -1781,7 +1877,7 @@ int *_nc_ptr_Escdelay( #undef set_escdelay_sp int set_escdelay_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -1801,8 +1897,8 @@ int get_escdelay(void) #undef _nc_wgetch int _nc_wgetch( - WINDOW *win, - int *result, + WINDOW *win, + int *result, int use_meta) { return(*(int *)0); } @@ -1815,8 +1911,8 @@ int wgetch( #undef wgetnstr int wgetnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int maxlen) { return(*(int *)0); } @@ -1824,8 +1920,8 @@ int wgetnstr( #undef whline int whline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -1833,7 +1929,7 @@ int whline( #undef immedok void immedok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } @@ -1841,8 +1937,8 @@ void immedok( #undef winchnstr int winchnstr( - WINDOW *win, - chtype *str, + WINDOW *win, + chtype *str, int n) { return(*(int *)0); } @@ -1856,14 +1952,14 @@ WINDOW *initscr(void) #undef _nc_insert_ch int _nc_insert_ch( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, chtype ch) { return(*(int *)0); } #undef winsch int winsch( - WINDOW *win, + WINDOW *win, chtype c) { return(*(int *)0); } @@ -1871,7 +1967,7 @@ int winsch( #undef winsdelln int winsdelln( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -1879,8 +1975,8 @@ int winsdelln( #undef winsnstr int winsnstr( - WINDOW *win, - const char *s, + WINDOW *win, + const char *s, int n) { return(*(int *)0); } @@ -1888,8 +1984,8 @@ int winsnstr( #undef winnstr int winnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int n) { return(*(int *)0); } @@ -1908,7 +2004,7 @@ NCURSES_BOOL isendwin(void) #undef leaveok int leaveok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -1916,7 +2012,7 @@ int leaveok( #undef getmouse_sp int getmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1927,7 +2023,7 @@ int getmouse( #undef ungetmouse_sp int ungetmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1938,27 +2034,27 @@ int ungetmouse( #undef mousemask_sp mmask_t mousemask_sp( - SCREEN *sp, - mmask_t newmask, + SCREEN *sp, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef mousemask mmask_t mousemask( - mmask_t newmask, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef wenclose NCURSES_BOOL wenclose( - const WINDOW *win, - int y, + const WINDOW *win, + int y, int x) { return(*(NCURSES_BOOL *)0); } #undef mouseinterval_sp int mouseinterval_sp( - SCREEN *sp, + SCREEN *sp, int maxclick) { return(*(int *)0); } @@ -1983,9 +2079,9 @@ NCURSES_BOOL has_mouse(void) #undef wmouse_trafo NCURSES_BOOL wmouse_trafo( - const WINDOW *win, - int *pY, - int *pX, + const WINDOW *win, + int *pY, + int *pX, NCURSES_BOOL to_screen) { return(*(NCURSES_BOOL *)0); } @@ -1993,8 +2089,8 @@ NCURSES_BOOL wmouse_trafo( #undef wmove int wmove( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } @@ -2002,14 +2098,14 @@ int wmove( #undef _nc_msec_cost_sp int _nc_msec_cost_sp( - SCREEN *sp, - const char *const cap, + SCREEN *sp, + const char *const cap, int affcnt) { return(*(int *)0); } #undef _nc_msec_cost int _nc_msec_cost( - const char *const cap, + const char *const cap, int affcnt) { return(*(int *)0); } @@ -2040,20 +2136,37 @@ void _nc_mvcur_wrap_sp( void _nc_mvcur_wrap(void) { /* void */ } +#undef _nc_mvcur_sp +int _nc_mvcur_sp( + SCREEN *sp, + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + +#undef _nc_mvcur +int _nc_mvcur( + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + #undef mvcur_sp int mvcur_sp( - SCREEN *sp, - int yold, - int xold, - int ynew, + SCREEN *sp, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } #undef mvcur int mvcur( - int yold, - int xold, - int ynew, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } @@ -2064,8 +2177,8 @@ int _nc_optimize_enable; #undef mvwin int mvwin( - WINDOW *win, - int by, + WINDOW *win, + int by, int bx) { return(*(int *)0); } @@ -2091,16 +2204,16 @@ void nofilter(void) #undef newterm_sp SCREEN *newterm_sp( - SCREEN *sp, - char *name, - FILE *ofp, + SCREEN *sp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } #undef newterm SCREEN *newterm( - char *name, - FILE *ofp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } @@ -2113,46 +2226,46 @@ int _nc_freewin( #undef newwin_sp WINDOW *newwin_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef newwin WINDOW *newwin( - int num_lines, - int num_columns, - int begy, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef derwin WINDOW *derwin( - WINDOW *orig, - int num_lines, - int num_columns, - int begy, + WINDOW *orig, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef subwin WINDOW *subwin( - WINDOW *w, - int l, - int c, - int y, + WINDOW *w, + int l, + int c, + int y, int x) { return(*(WINDOW **)0); } #undef _nc_makenew_sp WINDOW *_nc_makenew_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, - int begx, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, + int begx, int flags) { return(*(WINDOW **)0); } @@ -2195,26 +2308,26 @@ int nonl(void) #undef overlay int overlay( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef overwrite int overwrite( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef copywin int copywin( - const WINDOW *src, - WINDOW *dst, - int sminrow, - int smincol, - int dminrow, - int dmincol, - int dmaxrow, - int dmaxcol, + const WINDOW *src, + WINDOW *dst, + int sminrow, + int smincol, + int dminrow, + int dmincol, + int dmaxrow, + int dmaxcol, int over) { return(*(int *)0); } @@ -2222,51 +2335,51 @@ int copywin( #undef newpad_sp WINDOW *newpad_sp( - SCREEN *sp, - int l, + SCREEN *sp, + int l, int c) { return(*(WINDOW **)0); } #undef newpad WINDOW *newpad( - int l, + int l, int c) { return(*(WINDOW **)0); } #undef subpad WINDOW *subpad( - WINDOW *orig, - int l, - int c, - int begy, + WINDOW *orig, + int l, + int c, + int begy, int begx) { return(*(WINDOW **)0); } #undef prefresh int prefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pnoutrefresh int pnoutrefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pechochar int pechochar( - WINDOW *pad, + WINDOW *pad, const chtype ch) { return(*(int *)0); } @@ -2274,38 +2387,45 @@ int pechochar( #undef printw int printw( - const char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wprintw int wprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvprintw int mvprintw( - int y, - int x, - const char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwprintw int mvwprintw( - WINDOW *win, - int y, - int x, - const char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef vwprintw int vwprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_printw +int vw_printw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } @@ -2313,8 +2433,8 @@ int vwprintw( #undef wredrawln int wredrawln( - WINDOW *win, - int beg, + WINDOW *win, + int beg, int num) { return(*(int *)0); } @@ -2334,16 +2454,16 @@ int wnoutrefresh( #undef restartterm_sp int restartterm_sp( - SCREEN *sp, - char *termp, - int filenum, + SCREEN *sp, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } #undef restartterm int restartterm( - char *termp, - int filenum, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } @@ -2351,38 +2471,45 @@ int restartterm( #undef vwscanw int vwscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_scanw +int vw_scanw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } #undef scanw int scanw( - char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wscanw int wscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvscanw int mvscanw( - int y, - int x, - char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwscanw int mvwscanw( - WINDOW *win, - int y, - int x, - char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } @@ -2390,7 +2517,7 @@ int mvwscanw( #undef getwin_sp WINDOW *getwin_sp( - SCREEN *sp, + SCREEN *sp, FILE *filep) { return(*(WINDOW **)0); } @@ -2401,13 +2528,13 @@ WINDOW *getwin( #undef putwin int putwin( - WINDOW *win, + WINDOW *win, FILE *filep) { return(*(int *)0); } #undef scr_restore_sp int scr_restore_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -2423,7 +2550,7 @@ int scr_dump( #undef scr_init_sp int scr_init_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -2434,7 +2561,7 @@ int scr_init( #undef scr_set_sp int scr_set_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -2447,16 +2574,16 @@ int scr_set( #undef _nc_scroll_window void _nc_scroll_window( - WINDOW *win, - int const n, - int const top, - int const bottom, + WINDOW *win, + int const n, + int const top, + int const bottom, cchar_t blank) { /* void */ } #undef wscrl int wscrl( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -2464,7 +2591,7 @@ int wscrl( #undef scrollok int scrollok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -2472,8 +2599,8 @@ int scrollok( #undef wsetscrreg int wsetscrreg( - WINDOW *win, - int top, + WINDOW *win, + int top, int bottom) { return(*(int *)0); } @@ -2491,54 +2618,54 @@ void delscreen( #undef _nc_setupscreen_sp int _nc_setupscreen_sp( - SCREEN **spp, - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + SCREEN **spp, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_setupscreen int _nc_setupscreen( - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_ripoffline_sp int _nc_ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef _nc_ripoffline int _nc_ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline_sp int ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline int ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } @@ -2546,13 +2673,13 @@ int ripoffline( #undef _nc_format_slks int _nc_format_slks( - SCREEN *sp, + SCREEN *sp, int cols) { return(*(int *)0); } #undef _nc_slk_initialize int _nc_slk_initialize( - WINDOW *stwin, + WINDOW *stwin, int cols) { return(*(int *)0); } @@ -2569,16 +2696,16 @@ int slk_restore(void) #undef slk_attr_set_sp int slk_attr_set_sp( - SCREEN *sp, - const attr_t attr, - short color_pair_number, + SCREEN *sp, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } #undef slk_attr_set int slk_attr_set( - const attr_t attr, - short color_pair_number, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } @@ -2586,7 +2713,7 @@ int slk_attr_set( #undef slk_attroff_sp int slk_attroff_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2599,7 +2726,7 @@ int slk_attroff( #undef slk_attron_sp int slk_attron_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2612,7 +2739,7 @@ int slk_attron( #undef slk_attrset_sp int slk_attrset_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2647,20 +2774,31 @@ int slk_clear(void) #undef slk_color_sp int slk_color_sp( - SCREEN *sp, - short color_pair_number) + SCREEN *sp, + short pair_arg) { return(*(int *)0); } #undef slk_color int slk_color( - short color_pair_number) + short pair_arg) + { return(*(int *)0); } + +#undef extended_slk_color_sp +int extended_slk_color_sp( + SCREEN *sp, + int pair_arg) + { return(*(int *)0); } + +#undef extended_slk_color +int extended_slk_color( + int pair_arg) { return(*(int *)0); } /* ./base/lib_slkinit.c */ #undef slk_init_sp int slk_init_sp( - SCREEN *sp, + SCREEN *sp, int format) { return(*(int *)0); } @@ -2673,7 +2811,7 @@ int slk_init( #undef slk_label_sp char *slk_label_sp( - SCREEN *sp, + SCREEN *sp, int n) { return(*(char **)0); } @@ -2704,20 +2842,18 @@ int slk_refresh(void) /* ./base/lib_slkset.c */ -#include <wctype.h> - #undef slk_set_sp int slk_set_sp( - SCREEN *sp, - int i, - const char *astr, + SCREEN *sp, + int i, + const char *astr, int format) { return(*(int *)0); } #undef slk_set int slk_set( - int i, - const char *astr, + int i, + const char *astr, int format) { return(*(int *)0); } @@ -2736,7 +2872,7 @@ int slk_touch(void) #undef is_linetouched NCURSES_BOOL is_linetouched( - WINDOW *win, + WINDOW *win, int line) { return(*(NCURSES_BOOL *)0); } @@ -2747,9 +2883,9 @@ NCURSES_BOOL is_wintouched( #undef wtouchln int wtouchln( - WINDOW *win, - int y, - int n, + WINDOW *win, + int y, + int n, int changed) { return(*(int *)0); } @@ -2757,21 +2893,27 @@ int wtouchln( #undef _tracedump void _tracedump( - const char *name, + const char *name, WINDOW *win) { /* void */ } /* ./trace/lib_tracemse.c */ +#undef _nc_trace_mmask_t +char *_nc_trace_mmask_t( + SCREEN *sp, + mmask_t code) + { return(*(char **)0); } + #undef _nc_tracemouse char *_nc_tracemouse( - SCREEN *sp, + SCREEN *sp, MEVENT const *ep) { return(*(char **)0); } #undef _nc_retrace_mmask_t mmask_t _nc_retrace_mmask_t( - SCREEN *sp, + SCREEN *sp, mmask_t code) { return(*(mmask_t *)0); } @@ -2782,11 +2924,9 @@ char *_tracemouse( /* ./tty/lib_tstp.c */ -#include <SigAction.h> - #undef _nc_signal_handler void _nc_signal_handler( - NCURSES_BOOL enable) + int enable) { /* void */ } /* ./base/lib_ungetch.c */ @@ -2798,7 +2938,7 @@ void _nc_fifo_dump( #undef ungetch_sp int ungetch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -2811,20 +2951,20 @@ int ungetch( #undef vidputs_sp int vidputs_sp( - SCREEN *sp, - chtype newmode, + SCREEN *sp, + chtype newmode, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef vidputs int vidputs( - chtype newmode, + chtype newmode, NCURSES_OUTC outc) { return(*(int *)0); } #undef vidattr_sp int vidattr_sp( - SCREEN *sp, + SCREEN *sp, chtype newmode) { return(*(int *)0); } @@ -2846,8 +2986,8 @@ chtype termattrs(void) #undef wvline int wvline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -2855,8 +2995,8 @@ int wvline( #undef wattr_off int wattr_off( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2864,8 +3004,8 @@ int wattr_off( #undef wattr_on int wattr_on( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2885,14 +3025,14 @@ void _nc_synchook( #undef mvderwin int mvderwin( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } #undef syncok int syncok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL bf) { return(*(int *)0); } @@ -2931,22 +3071,19 @@ struct panelhook *_nc_panelhook(void) #undef _nc_printf_string_sp char *_nc_printf_string_sp( - SCREEN *sp, - const char *fmt, + SCREEN *sp, + const char *fmt, va_list ap) { return(*(char **)0); } #undef _nc_printf_string char *_nc_printf_string( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } /* ./tty/tty_update.c */ -#include <sys/time.h> -#include <sys/times.h> - #undef doupdate_sp int doupdate_sp( SCREEN *sp) @@ -2958,18 +3095,18 @@ int doupdate(void) #undef _nc_scrolln_sp int _nc_scrolln_sp( - SCREEN *sp, - int n, - int top, - int bot, + SCREEN *sp, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } #undef _nc_scrolln int _nc_scrolln( - int n, - int top, - int bot, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } @@ -3002,7 +3139,7 @@ void _nc_screen_wrap(void) #undef _nc_do_xmc_glitch_sp void _nc_do_xmc_glitch_sp( - SCREEN *sp, + SCREEN *sp, attr_t previous) { /* void */ } @@ -3013,22 +3150,12 @@ void _nc_do_xmc_glitch( /* ./trace/varargs.c */ -typedef enum { - atUnknown = 0, atInteger, atFloat, atPoint, atString -} ARGTYPE; - #undef _nc_varargs char *_nc_varargs( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } -/* ./base/memmove.c */ - -#undef _nc_memmove -void _nc_memmove(void) - { /* void */ } - /* ./base/vsscanf.c */ #undef _nc_vsscanf @@ -3043,7 +3170,7 @@ void _nc_freeall(void) #undef _nc_free_and_exit_sp void _nc_free_and_exit_sp( - SCREEN *sp, + SCREEN *sp, int code) { /* void */ } @@ -3052,6 +3179,11 @@ void _nc_free_and_exit( int code) { /* void */ } +#undef exit_curses +void exit_curses( + int code) + { /* void */ } + /* ./widechar/charable.c */ #undef _nc_is_charable @@ -3073,13 +3205,13 @@ wint_t _nc_to_widechar( #undef wadd_wch int wadd_wch( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } #undef wecho_wchar int wecho_wchar( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } @@ -3087,14 +3219,14 @@ int wecho_wchar( #undef wborder_set int wborder_set( - WINDOW *win, - const cchar_t *ls, - const cchar_t *rs, - const cchar_t *ts, - const cchar_t *bs, - const cchar_t *tl, - const cchar_t *tr, - const cchar_t *bl, + WINDOW *win, + const cchar_t *ls, + const cchar_t *rs, + const cchar_t *ts, + const cchar_t *bs, + const cchar_t *tl, + const cchar_t *tr, + const cchar_t *bl, const cchar_t *br) { return(*(int *)0); } @@ -3102,29 +3234,41 @@ int wborder_set( #undef setcchar int setcchar( - cchar_t *wcval, - const wchar_t *wch, - const attr_t attrs, - short color_pair, + cchar_t *wcval, + const wchar_t *wch, + const attr_t attrs, + short pair_arg, const void *opts) { return(*(int *)0); } #undef getcchar int getcchar( - const cchar_t *wcval, - wchar_t *wch, - attr_t *attrs, - short *color_pair, + const cchar_t *wcval, + wchar_t *wch, + attr_t *attrs, + short *pair_arg, void *opts) { return(*(int *)0); } /* ./widechar/lib_erasewchar.c */ +#undef erasewchar_sp +int erasewchar_sp( + SCREEN *sp, + wchar_t *wch) + { return(*(int *)0); } + #undef erasewchar int erasewchar( wchar_t *wch) { return(*(int *)0); } +#undef killwchar_sp +int killwchar_sp( + SCREEN *sp, + wchar_t *wch) + { return(*(int *)0); } + #undef killwchar int killwchar( wchar_t *wch) @@ -3134,7 +3278,7 @@ int killwchar( #undef wget_wch int wget_wch( - WINDOW *win, + WINDOW *win, wint_t *result) { return(*(int *)0); } @@ -3142,8 +3286,8 @@ int wget_wch( #undef wgetn_wstr int wgetn_wstr( - WINDOW *win, - wint_t *str, + WINDOW *win, + wint_t *str, int maxlen) { return(*(int *)0); } @@ -3151,8 +3295,8 @@ int wgetn_wstr( #undef whline_set int whline_set( - WINDOW *win, - const cchar_t *ch, + WINDOW *win, + const cchar_t *ch, int n) { return(*(int *)0); } @@ -3160,7 +3304,7 @@ int whline_set( #undef win_wch int win_wch( - WINDOW *win, + WINDOW *win, cchar_t *wcval) { return(*(int *)0); } @@ -3168,8 +3312,8 @@ int win_wch( #undef win_wchnstr int win_wchnstr( - WINDOW *win, - cchar_t *wchstr, + WINDOW *win, + cchar_t *wchstr, int n) { return(*(int *)0); } @@ -3177,20 +3321,20 @@ int win_wchnstr( #undef _nc_insert_wch int _nc_insert_wch( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } #undef wins_wch int wins_wch( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } #undef wins_nwstr int wins_nwstr( - WINDOW *win, - const wchar_t *wstr, + WINDOW *win, + const wchar_t *wstr, int n) { return(*(int *)0); } @@ -3198,29 +3342,29 @@ int wins_nwstr( #undef winnwstr int winnwstr( - WINDOW *win, - wchar_t *wstr, + WINDOW *win, + wchar_t *wstr, int n) { return(*(int *)0); } #undef winwstr int winwstr( - WINDOW *win, + WINDOW *win, wchar_t *wstr) { return(*(int *)0); } /* ./widechar/lib_key_name.c */ #undef key_name -char *key_name( +const char *key_name( wchar_t c) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./widechar/lib_pecho_wchar.c */ #undef pecho_wchar int pecho_wchar( - WINDOW *pad, + WINDOW *pad, const cchar_t *wch) { return(*(int *)0); } @@ -3228,8 +3372,8 @@ int pecho_wchar( #undef slk_wset int slk_wset( - int i, - const wchar_t *astr, + int i, + const wchar_t *astr, int format) { return(*(int *)0); } @@ -3237,14 +3381,14 @@ int slk_wset( #undef _nc_wcrtomb size_t _nc_wcrtomb( - char *target, - wchar_t source, + char *target, + wchar_t source, mbstate_t *state) { return(*(size_t *)0); } #undef unget_wch_sp int unget_wch_sp( - SCREEN *sp, + SCREEN *sp, const wchar_t wch) { return(*(int *)0); } @@ -3257,33 +3401,33 @@ int unget_wch( #undef vid_puts_sp int vid_puts_sp( - SCREEN *sp, - attr_t newmode, - short pair, - void *opts, + SCREEN *sp, + attr_t newmode, + short pair_arg, + void *opts, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef vid_puts int vid_puts( - attr_t newmode, - short pair, - void *opts, + attr_t newmode, + short pair_arg, + void *opts, NCURSES_OUTC outc) { return(*(int *)0); } #undef vid_attr_sp int vid_attr_sp( - SCREEN *sp, - attr_t newmode, - short pair, + SCREEN *sp, + attr_t newmode, + short pair_arg, void *opts) { return(*(int *)0); } #undef vid_attr int vid_attr( - attr_t newmode, - short pair, + attr_t newmode, + short pair_arg, void *opts) { return(*(int *)0); } @@ -3300,8 +3444,8 @@ attr_t term_attrs(void) #undef wvline_set int wvline_set( - WINDOW *win, - const cchar_t *ch, + WINDOW *win, + const cchar_t *ch, int n) { return(*(int *)0); } @@ -3318,7 +3462,7 @@ void _nc_init_wacs(void) #undef wunctrl_sp wchar_t *wunctrl_sp( - SCREEN *sp, + SCREEN *sp, cchar_t *wc) { return(*(wchar_t **)0); } @@ -3331,31 +3475,31 @@ wchar_t *wunctrl( #undef _nc_toggle_attr_on void _nc_toggle_attr_on( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_toggle_attr_off void _nc_toggle_attr_off( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_DelCharCost_sp int _nc_DelCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_InsCharCost_sp int _nc_InsCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_UpdateAttrs_sp void _nc_UpdateAttrs_sp( - SCREEN *sp, + SCREEN *sp, const cchar_t *c) { /* void */ } @@ -3378,7 +3522,7 @@ void _nc_UpdateAttrs( #undef use_legacy_coding_sp int use_legacy_coding_sp( - SCREEN *sp, + SCREEN *sp, int level) { return(*(int *)0); } @@ -3400,14 +3544,14 @@ int use_default_colors(void) #undef assume_default_colors_sp int assume_default_colors_sp( - SCREEN *sp, - int fg, + SCREEN *sp, + int fg, int bg) { return(*(int *)0); } #undef assume_default_colors int assume_default_colors( - int fg, + int fg, int bg) { return(*(int *)0); } @@ -3415,55 +3559,121 @@ int assume_default_colors( #undef mcprint_sp int mcprint_sp( - SCREEN *sp, - char *data, + SCREEN *sp, + char *data, int len) { return(*(int *)0); } #undef mcprint int mcprint( - char *data, + char *data, int len) { return(*(int *)0); } +/* ./base/new_pair.c */ + +#undef _nc_free_ordered_pairs +void _nc_free_ordered_pairs( + SCREEN *sp) + { /* void */ } + +#undef _nc_reset_color_pair +void _nc_reset_color_pair( + SCREEN *sp, + int pair, + colorpair_t *next) + { /* void */ } + +#undef _nc_set_color_pair +void _nc_set_color_pair( + SCREEN *sp, + int pair, + int mode) + { /* void */ } + +#undef _nc_copy_pairs +void _nc_copy_pairs( + SCREEN *sp, + colorpair_t *target, + colorpair_t *source, + int length) + { /* void */ } + +#undef alloc_pair_sp +int alloc_pair_sp( + SCREEN *sp, + int fg, + int bg) + { return(*(int *)0); } + +#undef find_pair_sp +int find_pair_sp( + SCREEN *sp, + int fg, + int bg) + { return(*(int *)0); } + +#undef free_pair_sp +int free_pair_sp( + SCREEN *sp, + int pair) + { return(*(int *)0); } + +#undef alloc_pair +int alloc_pair( + int f, + int b) + { return(*(int *)0); } + +#undef find_pair +int find_pair( + int f, + int b) + { return(*(int *)0); } + +#undef free_pair +int free_pair( + int pair) + { return(*(int *)0); } + /* ./base/resizeterm.c */ #undef is_term_resized_sp NCURSES_BOOL is_term_resized_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef is_term_resized NCURSES_BOOL is_term_resized( - int ToLines, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef resize_term_sp int resize_term_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resize_term int resize_term( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm_sp int resizeterm_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm int resizeterm( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } @@ -3478,8 +3688,8 @@ void _nc_trace_xnames( #undef use_screen int use_screen( - SCREEN *screen, - NCURSES_SCREEN_CB func, + SCREEN *screen, + NCURSES_SCREEN_CB func, void *data) { return(*(int *)0); } @@ -3487,8 +3697,8 @@ int use_screen( #undef use_window int use_window( - WINDOW *win, - NCURSES_WINDOW_CB func, + WINDOW *win, + NCURSES_WINDOW_CB func, void *data) { return(*(int *)0); } @@ -3496,8 +3706,8 @@ int use_window( #undef wresize int wresize( - WINDOW *win, - int ToLines, + WINDOW *win, + int ToLines, int ToCols) { return(*(int *)0); } @@ -3525,7 +3735,7 @@ char *_nc_basename( #undef _nc_access int _nc_access( - const char *path, + const char *path, int mode) { return(*(int *)0); } @@ -3543,12 +3753,25 @@ NCURSES_BOOL _nc_is_file_path( int _nc_env_access(void) { return(*(int *)0); } +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + /* ./tinfo/add_tries.c */ #undef _nc_add_to_try int _nc_add_to_try( - TRIES **tree, - const char *str, + TRIES **tree, + const char *str, unsigned code) { return(*(int *)0); } @@ -3556,34 +3779,44 @@ int _nc_add_to_try( #undef _nc_align_termtype void _nc_align_termtype( - TERMTYPE *to, - TERMTYPE *from) + TERMTYPE2 *to, + TERMTYPE2 *from) { /* void */ } #undef _nc_copy_termtype void _nc_copy_termtype( - TERMTYPE *dst, - TERMTYPE *src) + TERMTYPE *dst, + const TERMTYPE *src) + { /* void */ } + +#undef _nc_copy_termtype2 +void _nc_copy_termtype2( + TERMTYPE2 *dst, + const TERMTYPE2 *src) + { /* void */ } + +#undef _nc_export_termtype2 +void _nc_export_termtype2( + TERMTYPE *dst, + const TERMTYPE2 *src) { /* void */ } /* ./codes.c */ #undef _nc_boolcodes -char *const *_nc_boolcodes(void) - { return(*(char **)0); } +const char *const *_nc_boolcodes(void) + { return(*(const char **)0); } #undef _nc_numcodes -char *const *_nc_numcodes(void) - { return(*(char **)0); } +const char *const *_nc_numcodes(void) + { return(*(const char **)0); } #undef _nc_strcodes -char *const *_nc_strcodes(void) - { return(*(char **)0); } +const char *const *_nc_strcodes(void) + { return(*(const char **)0); } /* ./comp_captab.c */ -#include <hashsize.h> - #undef _nc_get_table const struct name_table_entry *_nc_get_table( NCURSES_BOOL termcap) @@ -3634,19 +3867,19 @@ void _nc_get_type( #undef _nc_warning void _nc_warning( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_err_abort void _nc_err_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_syserr_abort void _nc_syserr_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } @@ -3654,17 +3887,32 @@ void _nc_syserr_abort( #undef _nc_find_entry struct name_table_entry const *_nc_find_entry( - const char *string, + const char *string, const HashValue *hash_table) { return(*(struct name_table_entry const **)0); } #undef _nc_find_type_entry struct name_table_entry const *_nc_find_type_entry( - const char *string, - int type, + const char *string, + int type, NCURSES_BOOL termcap) { return(*(struct name_table_entry const **)0); } +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + /* ./tinfo/db_iterator.c */ #undef _nc_tic_dir @@ -3683,13 +3931,13 @@ void _nc_last_db(void) #undef _nc_next_db const char *_nc_next_db( - DBDIRS *state, + DBDIRS *state, int *offset) { return(*(const char **)0); } #undef _nc_first_db void _nc_first_db( - DBDIRS *state, + DBDIRS *state, int *offset) { /* void */ } @@ -3697,7 +3945,7 @@ void _nc_first_db( #undef _nc_doalloc void *_nc_doalloc( - void *oldp, + void *oldp, size_t amount) { return(*(void **)0); } @@ -3710,8 +3958,8 @@ ENTRY *_nc_tail; #undef _nc_free_entry void _nc_free_entry( - ENTRY *headp, - TERMTYPE *tterm) + ENTRY *headp, + TERMTYPE2 *tterm) { /* void */ } #undef _nc_free_entries @@ -3719,18 +3967,22 @@ void _nc_free_entries( ENTRY *headp) { /* void */ } -#undef _nc_delink_entry -ENTRY *_nc_delink_entry( - ENTRY *headp, - TERMTYPE *tterm) - { return(*(ENTRY **)0); } - #undef _nc_leaks_tinfo void _nc_leaks_tinfo(void) { /* void */ } +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + /* ./fallback.c */ +#undef _nc_fallback2 +const TERMTYPE2 *_nc_fallback2( + const char *name) + { return(*(const TERMTYPE2 **)0); } + #undef _nc_fallback const TERMTYPE *_nc_fallback( const char *name) @@ -3743,6 +3995,11 @@ void _nc_free_termtype( TERMTYPE *ptr) { /* void */ } +#undef _nc_free_termtype2 +void _nc_free_termtype2( + TERMTYPE2 *ptr) + { /* void */ } + #undef _nc_user_definable NCURSES_BOOL _nc_user_definable; @@ -3758,6 +4015,12 @@ int _nc_getenv_num( const char *name) { return(*(int *)0); } +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + /* ./tinfo/home_terminfo.c */ #undef _nc_home_terminfo @@ -3766,15 +4029,6 @@ char *_nc_home_terminfo(void) /* ./tinfo/init_keytry.c */ -#if 0 - -#include <init_keytry.h> - -#undef _nc_tinfo_fkeys -const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0}; - -#endif - #undef _nc_init_keytry void _nc_init_keytry( SCREEN *sp) @@ -3797,11 +4051,9 @@ void _nc_init_acs(void) /* ./tinfo/lib_baudrate.c */ -#include <termcap.h> - struct speed { - int s; - int sp; + int given_speed; + int actual_speed; }; #undef _nc_baudrate @@ -3840,7 +4092,7 @@ TERMINAL *_nc_cur_term(void) #undef set_curterm_sp TERMINAL *set_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(TERMINAL **)0); } @@ -3851,7 +4103,7 @@ TERMINAL *set_curterm( #undef del_curterm_sp int del_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(int *)0); } @@ -3966,15 +4218,15 @@ int flushinp(void) struct kn { short offset; int code; }; #undef keyname_sp -char *keyname_sp( - SCREEN *sp, +const char *keyname_sp( + SCREEN *sp, int c) - { return(*(char **)0); } + { return(*(const char **)0); } #undef keyname -char *keyname( +const char *keyname( int c) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./tinfo/lib_longname.c */ @@ -3991,7 +4243,7 @@ char *longname(void) #undef napms_sp int napms_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -4004,19 +4256,19 @@ int napms( #undef idlok int idlok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef idcok void idcok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } #undef halfdelay_sp int halfdelay_sp( - SCREEN *sp, + SCREEN *sp, int t) { return(*(int *)0); } @@ -4027,37 +4279,37 @@ int halfdelay( #undef nodelay int nodelay( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef notimeout int notimeout( - WINDOW *win, + WINDOW *win, NCURSES_BOOL f) { return(*(int *)0); } #undef wtimeout void wtimeout( - WINDOW *win, + WINDOW *win, int delay) { /* void */ } #undef keypad int keypad( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef meta int meta( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef curs_set_sp int curs_set_sp( - SCREEN *sp, + SCREEN *sp, int vis) { return(*(int *)0); } @@ -4068,7 +4320,7 @@ int curs_set( #undef typeahead_sp int typeahead_sp( - SCREEN *sp, + SCREEN *sp, int fd) { return(*(int *)0); } @@ -4079,7 +4331,7 @@ int typeahead( #undef has_key_sp int has_key_sp( - SCREEN *sp, + SCREEN *sp, int keycode) { return(*(int *)0); } @@ -4090,15 +4342,15 @@ int has_key( #undef _nc_putp_flush_sp int _nc_putp_flush_sp( - SCREEN *sp, - const char *name, + SCREEN *sp, + const char *name, const char *value) { return(*(int *)0); } #undef _nc_keypad int _nc_keypad( - SCREEN *sp, - NCURSES_BOOL flag) + SCREEN *sp, + int flag) { return(*(int *)0); } /* ./tinfo/lib_raw.c */ @@ -4159,23 +4411,19 @@ void noqiflush(void) #undef intrflush_sp int intrflush_sp( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef intrflush int intrflush( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } /* ./tinfo/lib_setup.c */ -#include <locale.h> -#include <sys/ioctl.h> -#include <langinfo.h> - #undef _nc_ttytype char *_nc_ttytype(void) { return(*(char **)0); } @@ -4209,7 +4457,7 @@ int _nc_TABSIZE(void) #undef set_tabsize_sp int set_tabsize_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -4225,7 +4473,13 @@ int _nc_handle_sigwinch( #undef use_env_sp void use_env_sp( - SCREEN *sp, + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, NCURSES_BOOL f) { /* void */ } @@ -4234,10 +4488,15 @@ void use_env( NCURSES_BOOL f) { /* void */ } +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + #undef _nc_get_screensize void _nc_get_screensize( - SCREEN *sp, - int *linep, + SCREEN *sp, + int *linep, int *colp) { /* void */ } @@ -4248,14 +4507,14 @@ void _nc_update_screensize( #undef _nc_setup_tinfo int _nc_setup_tinfo( - const char *const tn, - TERMTYPE *const tp) + const char *const tn, + TERMTYPE2 *const tp) { return(*(int *)0); } #undef _nc_tinfo_cmdch void _nc_tinfo_cmdch( - TERMINAL *termp, - char proto) + TERMINAL *termp, + int proto) { /* void */ } #undef _nc_get_locale @@ -4273,20 +4532,28 @@ int _nc_locale_breaks_acs( #undef _nc_setupterm int _nc_setupterm( - char *tname, - int Filedes, - int *errret, - NCURSES_BOOL reuse) + const char *tname, + int Filedes, + int *errret, + int reuse) { return(*(int *)0); } +#undef _nc_find_prescr +SCREEN *_nc_find_prescr(void) + { return(*(SCREEN **)0); } + +#undef _nc_forget_prescr +void _nc_forget_prescr(void) + { /* void */ } + #undef new_prescr SCREEN *new_prescr(void) { return(*(SCREEN **)0); } #undef setupterm int setupterm( - char *tname, - int Filedes, + const char *tname, + int Filedes, int *errret) { return(*(int *)0); } @@ -4299,55 +4566,49 @@ char *BC; #undef tgetent_sp int tgetent_sp( - SCREEN *sp, - char *bufp, + SCREEN *sp, + char *bufp, const char *name) { return(*(int *)0); } -#if 0 - -#include <capdefaults.c> - -#endif - #undef tgetent int tgetent( - char *bufp, + char *bufp, const char *name) { return(*(int *)0); } #undef tgetflag_sp int tgetflag_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetflag int tgetflag( - char *id) + const char *id) { return(*(int *)0); } #undef tgetnum_sp int tgetnum_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetnum int tgetnum( - char *id) + const char *id) { return(*(int *)0); } #undef tgetstr_sp char *tgetstr_sp( - SCREEN *sp, - char *id, + SCREEN *sp, + const char *id, char **area) { return(*(char **)0); } #undef tgetstr char *tgetstr( - char *id, + const char *id, char **area) { return(*(char **)0); } @@ -4366,8 +4627,8 @@ char *termname(void) #undef tgoto char *tgoto( - const char *string, - int x, + const char *string, + int x, int y) { return(*(char **)0); } @@ -4375,35 +4636,35 @@ char *tgoto( #undef tigetflag_sp int tigetflag_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetflag int tigetflag( - char *str) + const char *str) { return(*(int *)0); } #undef tigetnum_sp int tigetnum_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetnum int tigetnum( - char *str) + const char *str) { return(*(int *)0); } #undef tigetstr_sp char *tigetstr_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(char **)0); } #undef tigetstr char *tigetstr( - char *str) + const char *str) { return(*(char **)0); } /* ./tinfo/lib_tparm.c */ @@ -4413,29 +4674,42 @@ int _nc_tparm_err; #undef _nc_tparm_analyze int _nc_tparm_analyze( - const char *string, - char *p_is_s[9], - int *popcount) + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) { return(*(int *)0); } #undef tparm char *tparm( - char *string, + const char *string, ...) { return(*(char **)0); } #undef tiparm char *tiparm( - const char *string, + const char *string, ...) { return(*(char **)0); } +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + /* ./tinfo/lib_tputs.c */ #undef PC char PC; #undef ospeed -NCURSES_OSPEED ospeed; +short ospeed; #undef _nc_nulls_sent int _nc_nulls_sent; @@ -4446,7 +4720,7 @@ void _nc_set_no_padding( #undef delay_output_sp int delay_output_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -4466,7 +4740,7 @@ void _nc_flush(void) #undef _nc_outch_sp int _nc_outch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -4475,48 +4749,59 @@ int _nc_outch( int ch) { return(*(int *)0); } +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + #undef putp_sp int putp_sp( - SCREEN *sp, + SCREEN *sp, const char *string) { return(*(int *)0); } -#undef _nc_putp_sp -int _nc_putp_sp( - SCREEN *sp, - const char *name, +#undef putp +int putp( const char *string) { return(*(int *)0); } -#undef putp -int putp( +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, const char *string) { return(*(int *)0); } #undef _nc_putp int _nc_putp( - const char *name, + const char *name, const char *string) { return(*(int *)0); } #undef tputs_sp int tputs_sp( - SCREEN *sp, - const char *string, - int affcnt, + SCREEN *sp, + const char *string, + int affcnt, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef _nc_outc_wrapper int _nc_outc_wrapper( - SCREEN *sp, + SCREEN *sp, int c) { return(*(int *)0); } #undef tputs int tputs( - const char *string, - int affcnt, + const char *string, + int affcnt, int (*outc)( int p1)) { return(*(int *)0); } @@ -4544,6 +4829,11 @@ void _nc_count_outchars( long increment) { /* void */ } +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + #undef trace void trace( const unsigned int tracelevel) @@ -4551,18 +4841,18 @@ void trace( #undef _tracef void _tracef( - const char *fmt, + const char *fmt, ...) { /* void */ } #undef _nc_retrace_bool NCURSES_BOOL _nc_retrace_bool( - NCURSES_BOOL code) + int code) { return(*(NCURSES_BOOL *)0); } #undef _nc_retrace_char char _nc_retrace_char( - char code) + int code) { return(*(char *)0); } #undef _nc_retrace_int @@ -4586,9 +4876,9 @@ const char *_nc_retrace_cptr( { return(*(const char **)0); } #undef _nc_retrace_cvoid_ptr -void *_nc_retrace_cvoid_ptr( - void *code) - { return(*(void **)0); } +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } #undef _nc_retrace_void_ptr void *_nc_retrace_void_ptr( @@ -4605,6 +4895,13 @@ WINDOW *_nc_retrace_win( WINDOW *code) { return(*(WINDOW **)0); } +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + #undef _nc_use_tracef int _nc_use_tracef( unsigned mask) @@ -4612,7 +4909,7 @@ int _nc_use_tracef( #undef _nc_locked_tracef void _nc_locked_tracef( - const char *fmt, + const char *fmt, ...) { /* void */ } @@ -4620,7 +4917,7 @@ void _nc_locked_tracef( #undef _traceattr2 char *_traceattr2( - int bufnum, + int bufnum, chtype newmode) { return(*(char **)0); } @@ -4641,13 +4938,13 @@ attr_t _nc_retrace_attr_t( #undef _nc_altcharset_name const char *_nc_altcharset_name( - attr_t attr, + attr_t attr, chtype ch) { return(*(const char **)0); } #undef _tracechtype2 char *_tracechtype2( - int bufnum, + int bufnum, chtype ch) { return(*(char **)0); } @@ -4663,7 +4960,7 @@ chtype _nc_retrace_chtype( #undef _tracecchar_t2 char *_tracecchar_t2( - int bufnum, + int bufnum, const cchar_t *ch) { return(*(char **)0); } @@ -4674,14 +4971,9 @@ char *_tracecchar_t( /* ./trace/lib_tracebits.c */ -typedef struct { - unsigned int val; - const char *name; -} BITNAMES; - #undef _nc_trace_ttymode char *_nc_trace_ttymode( - struct termios *tty) + const struct termios *tty) { return(*(char **)0); } #undef _nc_tracebits @@ -4692,7 +4984,7 @@ char *_nc_tracebits(void) #undef _nc_tracechar char *_nc_tracechar( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(char **)0); } @@ -4705,7 +4997,7 @@ char *_tracechar( #undef _nc_get_tty_mode_sp int _nc_get_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -4716,7 +5008,7 @@ int _nc_get_tty_mode( #undef _nc_set_tty_mode_sp int _nc_set_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -4783,9 +5075,9 @@ int resetty(void) #undef _nc_timed_wait int _nc_timed_wait( - SCREEN *sp, - int mode, - int milliseconds, + SCREEN *sp, + int mode, + int milliseconds, int *timeleft) { return(*(int *)0); } @@ -4798,116 +5090,124 @@ char *_nc_first_name( #undef _nc_name_match int _nc_name_match( - const char *const namelst, - const char *const name, + const char *const namelst, + const char *const name, const char *const delim) { return(*(int *)0); } /* ./names.c */ #undef _nc_boolnames -char *const *_nc_boolnames(void) - { return(*(char **)0); } +const char *const *_nc_boolnames(void) + { return(*(const char **)0); } #undef _nc_boolfnames -char *const *_nc_boolfnames(void) - { return(*(char **)0); } +const char *const *_nc_boolfnames(void) + { return(*(const char **)0); } #undef _nc_numnames -char *const *_nc_numnames(void) - { return(*(char **)0); } +const char *const *_nc_numnames(void) + { return(*(const char **)0); } #undef _nc_numfnames -char *const *_nc_numfnames(void) - { return(*(char **)0); } +const char *const *_nc_numfnames(void) + { return(*(const char **)0); } #undef _nc_strnames -char *const *_nc_strnames(void) - { return(*(char **)0); } +const char *const *_nc_strnames(void) + { return(*(const char **)0); } #undef _nc_strfnames -char *const *_nc_strfnames(void) - { return(*(char **)0); } +const char *const *_nc_strfnames(void) + { return(*(const char **)0); } + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } /* ./tinfo/read_entry.c */ -#include <hashed_db.h> +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE2 *const tp) + { /* void */ } #undef _nc_read_termtype int _nc_read_termtype( - TERMTYPE *ptr, - char *buffer, + TERMTYPE2 *ptr, + char *buffer, int limit) { return(*(int *)0); } #undef _nc_read_file_entry int _nc_read_file_entry( - const char *const filename, - TERMTYPE *ptr) + const char *const filename, + TERMTYPE2 *ptr) + { return(*(int *)0); } + +#undef _nc_read_entry2 +int _nc_read_entry2( + const char *const name, + char *const filename, + TERMTYPE2 *const tp) { return(*(int *)0); } #undef _nc_read_entry int _nc_read_entry( - const char *const name, - char *const filename, + const char *const name, + char *const filename, TERMTYPE *const tp) { return(*(int *)0); } /* ./tinfo/read_termcap.c */ -#include <sys/types.h> - #undef _nc_read_termcap_entry int _nc_read_termcap_entry( - const char *const tn, - TERMTYPE *const tp) + const char *const tn, + TERMTYPE2 *const tp) { return(*(int *)0); } -/* ./tinfo/setbuf.c */ - -#undef _nc_set_buffer_sp -void _nc_set_buffer_sp( - SCREEN *sp, - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - -#undef _nc_set_buffer -void _nc_set_buffer( - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - /* ./tinfo/strings.c */ #undef _nc_str_init string_desc *_nc_str_init( - string_desc *dst, - char *src, + string_desc *dst, + char *src, size_t len) { return(*(string_desc **)0); } #undef _nc_str_null string_desc *_nc_str_null( - string_desc *dst, + string_desc *dst, size_t len) { return(*(string_desc **)0); } #undef _nc_str_copy string_desc *_nc_str_copy( - string_desc *dst, + string_desc *dst, string_desc *src) { return(*(string_desc **)0); } #undef _nc_safe_strcat NCURSES_BOOL _nc_safe_strcat( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } #undef _nc_safe_strcpy NCURSES_BOOL _nc_safe_strcpy( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } @@ -4915,13 +5215,13 @@ NCURSES_BOOL _nc_safe_strcpy( #undef _nc_trace_buf char *_nc_trace_buf( - int bufnum, + int bufnum, size_t want) { return(*(char **)0); } #undef _nc_trace_bufcat char *_nc_trace_bufcat( - int bufnum, + int bufnum, const char *value) { return(*(char **)0); } @@ -4936,21 +5236,21 @@ void _nc_trace_tries( #undef _nc_expand_try char *_nc_expand_try( - TRIES *tree, - unsigned code, - int *count, + TRIES *tree, + unsigned code, + int *count, size_t len) { return(*(char **)0); } #undef _nc_remove_key int _nc_remove_key( - TRIES **tree, + TRIES **tree, unsigned code) { return(*(int *)0); } #undef _nc_remove_string int _nc_remove_string( - TRIES **tree, + TRIES **tree, const char *string) { return(*(int *)0); } @@ -4958,27 +5258,27 @@ int _nc_remove_string( #undef _nc_trim_sgr0 char *_nc_trim_sgr0( - TERMTYPE *tp) + TERMTYPE2 *tp) { return(*(char **)0); } /* ./unctrl.c */ #undef unctrl_sp -char *unctrl_sp( - SCREEN *sp, +const char *unctrl_sp( + SCREEN *sp, chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } #undef unctrl -char *unctrl( +const char *unctrl( chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./trace/visbuf.c */ #undef _nc_visbuf2 const char *_nc_visbuf2( - int bufnum, + int bufnum, const char *buf) { return(*(const char **)0); } @@ -4989,13 +5289,13 @@ const char *_nc_visbuf( #undef _nc_visbufn const char *_nc_visbufn( - const char *buf, + const char *buf, int len) { return(*(const char **)0); } #undef _nc_viswbuf2 const char *_nc_viswbuf2( - int bufnum, + int bufnum, const wchar_t *buf) { return(*(const char **)0); } @@ -5006,7 +5306,7 @@ const char *_nc_viswbuf( #undef _nc_viswbufn const char *_nc_viswbufn( - const wchar_t *buf, + const wchar_t *buf, int len) { return(*(const char **)0); } @@ -5017,14 +5317,14 @@ const char *_nc_viswibuf( #undef _nc_viscbuf2 const char *_nc_viscbuf2( - int bufnum, - const cchar_t *buf, + int bufnum, + const cchar_t *buf, int len) { return(*(const char **)0); } #undef _nc_viscbuf const char *_nc_viscbuf( - const cchar_t *buf, + const cchar_t *buf, int len) { return(*(const char **)0); } @@ -5032,7 +5332,7 @@ const char *_nc_viscbuf( #undef _nc_init_entry void _nc_init_entry( - TERMTYPE *const tp) + ENTRY *const tp) { /* void */ } #undef _nc_copy_entry @@ -5042,34 +5342,34 @@ ENTRY *_nc_copy_entry( #undef _nc_save_str char *_nc_save_str( - const char *const string) + const char *string) { return(*(char **)0); } #undef _nc_wrap_entry void _nc_wrap_entry( - ENTRY *const ep, + ENTRY *const ep, NCURSES_BOOL copy_strings) { /* void */ } #undef _nc_merge_entry void _nc_merge_entry( - TERMTYPE *const to, - TERMTYPE *const from) + ENTRY *const target, + ENTRY *const source) { /* void */ } /* ./tinfo/captoinfo.c */ #undef _nc_captoinfo char *_nc_captoinfo( - const char *cap, - const char *s, + const char *cap, + const char *s, int const parameterized) { return(*(char **)0); } #undef _nc_infotocap char *_nc_infotocap( - const char *cap, - const char *str, + const char *cap, + const char *str, int const parameterized) { return(*(char **)0); } @@ -5077,8 +5377,8 @@ char *_nc_infotocap( #undef _nc_tic_expand char *_nc_tic_expand( - const char *srcp, - NCURSES_BOOL tic_format, + const char *srcp, + NCURSES_BOOL tic_format, int numbers) { return(*(char **)0); } @@ -5086,43 +5386,37 @@ char *_nc_tic_expand( #undef _nc_check_termtype2 void (*_nc_check_termtype2)( - TERMTYPE *p1, + TERMTYPE2 *p1, NCURSES_BOOL p2); -#undef _nc_check_termtype -void (*_nc_check_termtype)( - TERMTYPE *p1); #undef _nc_entry_match NCURSES_BOOL _nc_entry_match( - char *n1, + char *n1, char *n2) { return(*(NCURSES_BOOL *)0); } #undef _nc_read_entry_source void _nc_read_entry_source( - FILE *fp, - char *buf, - int literal, - NCURSES_BOOL silent, + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, NCURSES_BOOL (*hook)( ENTRY *p1)) { /* void */ } #undef _nc_resolve_uses2 int _nc_resolve_uses2( - NCURSES_BOOL fullresolve, + NCURSES_BOOL fullresolve, NCURSES_BOOL literal) { return(*(int *)0); } -#undef _nc_resolve_uses -int _nc_resolve_uses( - NCURSES_BOOL fullresolve) - { return(*(int *)0); } - /* ./tinfo/comp_scan.c */ #undef _nc_syntax int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; #undef _nc_curr_file_pos long _nc_curr_file_pos; #undef _nc_comment_start @@ -5138,7 +5432,7 @@ NCURSES_BOOL _nc_disable_period; #undef _nc_reset_input void _nc_reset_input( - FILE *fp, + FILE *fp, char *buf) { /* void */ } @@ -5149,7 +5443,7 @@ int _nc_get_token( #undef _nc_trans_string int _nc_trans_string( - char *ptr, + char *ptr, char *last) { return(*(int *)0); } @@ -5167,34 +5461,37 @@ void _nc_panic_mode( #undef _nc_parse_entry int _nc_parse_entry( - struct entry *entryp, - int literal, + ENTRY *entryp, + int literal, NCURSES_BOOL silent) { return(*(int *)0); } #undef _nc_capcmp int _nc_capcmp( - const char *s, + const char *s, const char *t) { return(*(int *)0); } -typedef struct { - const char *from; - const char *to; -} assoc; - /* ./tinfo/write_entry.c */ #undef _nc_set_writedir void _nc_set_writedir( - char *dir) + const char *dir) { /* void */ } #undef _nc_write_entry void _nc_write_entry( - TERMTYPE *const tp) + TERMTYPE2 *const tp) { /* void */ } +#undef _nc_write_object +int _nc_write_object( + TERMTYPE2 *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + #undef _nc_tic_written int _nc_tic_written(void) { return(*(int *)0); } @@ -5203,14 +5500,14 @@ int _nc_tic_written(void) #undef define_key_sp int define_key_sp( - SCREEN *sp, - const char *str, + SCREEN *sp, + const char *str, int keycode) { return(*(int *)0); } #undef define_key int define_key( - const char *str, + const char *str, int keycode) { return(*(int *)0); } @@ -5224,7 +5521,7 @@ void _nc_hashed_db(void) #undef key_defined_sp int key_defined_sp( - SCREEN *sp, + SCREEN *sp, const char *str) { return(*(int *)0); } @@ -5237,14 +5534,14 @@ int key_defined( #undef keybound_sp char *keybound_sp( - SCREEN *sp, - int code, + SCREEN *sp, + int code, int count) { return(*(char **)0); } #undef keybound char *keybound( - int code, + int code, int count) { return(*(char **)0); } @@ -5252,14 +5549,14 @@ char *keybound( #undef keyok_sp int keyok_sp( - SCREEN *sp, - int c, + SCREEN *sp, + int c, NCURSES_BOOL flag) { return(*(int *)0); } #undef keyok int keyok( - int c, + int c, NCURSES_BOOL flag) { return(*(int *)0); } diff --git a/deps/ncurses-5.9/ncurses/llib-lncursesw b/deps/ncurses-6.3/ncurses/llib-lncursesw similarity index 77% rename from deps/ncurses-5.9/ncurses/llib-lncursesw rename to deps/ncurses-6.3/ncurses/llib-lncursesw index 28e6803..0f41959 100644 --- a/deps/ncurses-5.9/ncurses/llib-lncursesw +++ b/deps/ncurses-6.3/ncurses/llib-lncursesw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2001-2010,2011 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2001-2016,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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2001-2010,2011 * + * Author: Thomas E. Dickey 2001-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -69,7 +70,7 @@ void _nc_hash_map(void) #undef _nc_make_oldhash_sp void _nc_make_oldhash_sp( - SCREEN *sp, + SCREEN *sp, int i) { /* void */ } @@ -80,50 +81,48 @@ void _nc_make_oldhash( #undef _nc_scroll_oldhash_sp void _nc_scroll_oldhash_sp( - SCREEN *sp, - int n, - int top, + SCREEN *sp, + int n, + int top, int bot) { /* void */ } #undef _nc_scroll_oldhash void _nc_scroll_oldhash( - int n, - int top, + int n, + int top, int bot) { /* void */ } /* ./base/lib_addch.c */ -#include <ctype.h> - #undef _nc_render cchar_t _nc_render( - WINDOW *win, + WINDOW *win, cchar_t ch) { return(*(cchar_t *)0); } #undef _nc_build_wch int _nc_build_wch( - WINDOW *win, + WINDOW *win, cchar_t *ch) { return(*(int *)0); } #undef _nc_waddch_nosync int _nc_waddch_nosync( - WINDOW *win, + WINDOW *win, const cchar_t c) { return(*(int *)0); } #undef waddch int waddch( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } #undef wechochar int wechochar( - WINDOW *win, + WINDOW *win, const chtype ch) { return(*(int *)0); } @@ -131,15 +130,15 @@ int wechochar( #undef waddnstr int waddnstr( - WINDOW *win, - const char *astr, + WINDOW *win, + const char *astr, int n) { return(*(int *)0); } #undef waddchnstr int waddchnstr( - WINDOW *win, - const chtype *astr, + WINDOW *win, + const chtype *astr, int n) { return(*(int *)0); } @@ -150,15 +149,15 @@ int _nc_wchstrlen( #undef wadd_wchnstr int wadd_wchnstr( - WINDOW *win, - const cchar_t *astr, + WINDOW *win, + const cchar_t *astr, int n) { return(*(int *)0); } #undef waddnwstr int waddnwstr( - WINDOW *win, - const wchar_t *str, + WINDOW *win, + const wchar_t *str, int n) { return(*(int *)0); } @@ -177,25 +176,25 @@ int beep(void) #undef wbkgrndset void wbkgrndset( - WINDOW *win, + WINDOW *win, const cchar_t *ch) { /* void */ } #undef wbkgdset void wbkgdset( - WINDOW *win, + WINDOW *win, chtype ch) { /* void */ } #undef wbkgrnd int wbkgrnd( - WINDOW *win, + WINDOW *win, const cchar_t *ch) { return(*(int *)0); } #undef wbkgd int wbkgd( - WINDOW *win, + WINDOW *win, chtype ch) { return(*(int *)0); } @@ -203,14 +202,14 @@ int wbkgd( #undef wborder int wborder( - WINDOW *win, - chtype ls, - chtype rs, - chtype ts, - chtype bs, - chtype tl, - chtype tr, - chtype bl, + WINDOW *win, + chtype ls, + chtype rs, + chtype ts, + chtype bs, + chtype tl, + chtype tr, + chtype bl, chtype br) { return(*(int *)0); } @@ -218,10 +217,10 @@ int wborder( #undef wchgat int wchgat( - WINDOW *win, - int n, - attr_t attr, - short color, + WINDOW *win, + int n, + attr_t attr, + short pair_arg, const void *opts) { return(*(int *)0); } @@ -236,7 +235,7 @@ int wclear( #undef clearok int clearok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -256,8 +255,6 @@ int wclrtoeol( /* ./base/lib_color.c */ -#include <tic.h> - #undef COLOR_PAIRS int COLOR_PAIRS; #undef COLORS @@ -281,35 +278,64 @@ int start_color_sp( int start_color(void) { return(*(int *)0); } +#undef _nc_change_pair +void _nc_change_pair( + SCREEN *sp, + int pair) + { /* void */ } + +#undef _nc_reserve_pairs +void _nc_reserve_pairs( + SCREEN *sp, + int want) + { /* void */ } + +#undef _nc_init_pair +int _nc_init_pair( + SCREEN *sp, + int pair, + int f, + int b) + { return(*(int *)0); } + #undef init_pair_sp int init_pair_sp( - SCREEN *sp, - short pair, - short f, + SCREEN *sp, + short pair, + short f, short b) { return(*(int *)0); } #undef init_pair int init_pair( - short pair, - short f, + short pair, + short f, short b) { return(*(int *)0); } +#undef _nc_init_color +int _nc_init_color( + SCREEN *sp, + int color, + int r, + int g, + int b) + { return(*(int *)0); } + #undef init_color_sp int init_color_sp( - SCREEN *sp, - short color, - short r, - short g, + SCREEN *sp, + short color, + short r, + short g, short b) { return(*(int *)0); } #undef init_color int init_color( - short color, - short r, - short g, + short color, + short r, + short g, short b) { return(*(int *)0); } @@ -333,59 +359,140 @@ NCURSES_BOOL has_colors(void) #undef color_content_sp int color_content_sp( - SCREEN *sp, - short color, - short *r, - short *g, + SCREEN *sp, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } #undef color_content int color_content( - short color, - short *r, - short *g, + short color, + short *r, + short *g, short *b) { return(*(int *)0); } +#undef _nc_pair_content +int _nc_pair_content( + SCREEN *sp, + int pair, + int *f, + int *b) + { return(*(int *)0); } + #undef pair_content_sp int pair_content_sp( - SCREEN *sp, - short pair, - short *f, + SCREEN *sp, + short pair, + short *f, short *b) { return(*(int *)0); } #undef pair_content int pair_content( - short pair, - short *f, + short pair, + short *f, short *b) { return(*(int *)0); } #undef _nc_do_color_sp void _nc_do_color_sp( - SCREEN *sp, - short old_pair, - short pair, - NCURSES_BOOL reverse, + SCREEN *sp, + int old_pair, + int pair, + int reverse, NCURSES_OUTC_sp outc) { /* void */ } #undef _nc_do_color void _nc_do_color( - short old_pair, - short pair, - NCURSES_BOOL reverse, + int old_pair, + int pair, + int reverse, NCURSES_OUTC outc) { /* void */ } +#undef init_extended_pair_sp +int init_extended_pair_sp( + SCREEN *sp, + int pair, + int f, + int b) + { return(*(int *)0); } + +#undef init_extended_color_sp +int init_extended_color_sp( + SCREEN *sp, + int color, + int r, + int g, + int b) + { return(*(int *)0); } + +#undef extended_color_content_sp +int extended_color_content_sp( + SCREEN *sp, + int color, + int *r, + int *g, + int *b) + { return(*(int *)0); } + +#undef extended_pair_content_sp +int extended_pair_content_sp( + SCREEN *sp, + int pair, + int *f, + int *b) + { return(*(int *)0); } + +#undef reset_color_pairs_sp +void reset_color_pairs_sp( + SCREEN *sp) + { /* void */ } + +#undef init_extended_pair +int init_extended_pair( + int pair, + int f, + int b) + { return(*(int *)0); } + +#undef init_extended_color +int init_extended_color( + int color, + int r, + int g, + int b) + { return(*(int *)0); } + +#undef extended_color_content +int extended_color_content( + int color, + int *r, + int *g, + int *b) + { return(*(int *)0); } + +#undef extended_pair_content +int extended_pair_content( + int pair, + int *f, + int *b) + { return(*(int *)0); } + +#undef reset_color_pairs +void reset_color_pairs(void) + { /* void */ } + /* ./base/lib_colorset.c */ #undef wcolor_set int wcolor_set( - WINDOW *win, - short color_pair_number, + WINDOW *win, + short pair_arg, void *opts) { return(*(int *)0); } @@ -461,7 +568,7 @@ int addch( #undef addchnstr int addchnstr( - const chtype *a1, + const chtype *a1, int z) { return(*(int *)0); } @@ -472,7 +579,7 @@ int addchstr( #undef addnstr int addnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -498,27 +605,27 @@ int attrset( #undef attr_get int attr_get( - attr_t *a1, - short *a2, + attr_t *a1, + short *a2, void *z) { return(*(int *)0); } #undef attr_off int attr_off( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_on int attr_on( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } #undef attr_set int attr_set( - attr_t a1, - short a2, + attr_t a1, + short a2, void *z) { return(*(int *)0); } @@ -534,28 +641,28 @@ void bkgdset( #undef border int border( - chtype a1, - chtype a2, - chtype a3, - chtype a4, - chtype a5, - chtype a6, - chtype a7, + chtype a1, + chtype a2, + chtype a3, + chtype a4, + chtype a5, + chtype a6, + chtype a7, chtype z) { return(*(int *)0); } #undef box int box( - WINDOW *a1, - chtype a2, + WINDOW *a1, + chtype a2, chtype z) { return(*(int *)0); } #undef chgat int chgat( - int a1, - attr_t a2, - short a3, + int a1, + attr_t a2, + short a3, const void *z) { return(*(int *)0); } @@ -573,7 +680,7 @@ int clrtoeol(void) #undef color_set int color_set( - short a1, + short a1, void *z) { return(*(int *)0); } @@ -610,7 +717,7 @@ int getch(void) #undef getnstr int getnstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -621,7 +728,7 @@ int getstr( #undef hline int hline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } @@ -631,7 +738,7 @@ chtype inch(void) #undef inchnstr int inchnstr( - chtype *a1, + chtype *a1, int z) { return(*(int *)0); } @@ -642,7 +749,7 @@ int inchstr( #undef innstr int innstr( - char *a1, + char *a1, int z) { return(*(int *)0); } @@ -662,7 +769,7 @@ int insertln(void) #undef insnstr int insnstr( - const char *a1, + const char *a1, int z) { return(*(int *)0); } @@ -678,323 +785,323 @@ int instr( #undef move int move( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvaddch int mvaddch( - int a1, - int a2, + int a1, + int a2, const chtype z) { return(*(int *)0); } #undef mvaddchnstr int mvaddchnstr( - int a1, - int a2, - const chtype *a3, + int a1, + int a2, + const chtype *a3, int z) { return(*(int *)0); } #undef mvaddchstr int mvaddchstr( - int a1, - int a2, + int a1, + int a2, const chtype *z) { return(*(int *)0); } #undef mvaddnstr int mvaddnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvaddstr int mvaddstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvchgat int mvchgat( - int a1, - int a2, - int a3, - attr_t a4, - short a5, + int a1, + int a2, + int a3, + attr_t a4, + short a5, const void *z) { return(*(int *)0); } #undef mvdelch int mvdelch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetch int mvgetch( - int a1, + int a1, int z) { return(*(int *)0); } #undef mvgetnstr int mvgetnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvgetstr int mvgetstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvhline int mvhline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvinch chtype mvinch( - int a1, + int a1, int z) { return(*(chtype *)0); } #undef mvinchnstr int mvinchnstr( - int a1, - int a2, - chtype *a3, + int a1, + int a2, + chtype *a3, int z) { return(*(int *)0); } #undef mvinchstr int mvinchstr( - int a1, - int a2, + int a1, + int a2, chtype *z) { return(*(int *)0); } #undef mvinnstr int mvinnstr( - int a1, - int a2, - char *a3, + int a1, + int a2, + char *a3, int z) { return(*(int *)0); } #undef mvinsch int mvinsch( - int a1, - int a2, + int a1, + int a2, chtype z) { return(*(int *)0); } #undef mvinsnstr int mvinsnstr( - int a1, - int a2, - const char *a3, + int a1, + int a2, + const char *a3, int z) { return(*(int *)0); } #undef mvinsstr int mvinsstr( - int a1, - int a2, + int a1, + int a2, const char *z) { return(*(int *)0); } #undef mvinstr int mvinstr( - int a1, - int a2, + int a1, + int a2, char *z) { return(*(int *)0); } #undef mvvline int mvvline( - int a1, - int a2, - chtype a3, + int a1, + int a2, + chtype a3, int z) { return(*(int *)0); } #undef mvwaddch int mvwaddch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype z) { return(*(int *)0); } #undef mvwaddchnstr int mvwaddchnstr( - WINDOW *a1, - int a2, - int a3, - const chtype *a4, + WINDOW *a1, + int a2, + int a3, + const chtype *a4, int z) { return(*(int *)0); } #undef mvwaddchstr int mvwaddchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const chtype *z) { return(*(int *)0); } #undef mvwaddnstr int mvwaddnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwaddstr int mvwaddstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwchgat int mvwchgat( - WINDOW *a1, - int a2, - int a3, - int a4, - attr_t a5, - short a6, + WINDOW *a1, + int a2, + int a3, + int a4, + attr_t a5, + short a6, const void *z) { return(*(int *)0); } #undef mvwdelch int mvwdelch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetch int mvwgetch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } #undef mvwgetnstr int mvwgetnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwgetstr int mvwgetstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwhline int mvwhline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } #undef mvwinch chtype mvwinch( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(chtype *)0); } #undef mvwinchnstr int mvwinchnstr( - WINDOW *a1, - int a2, - int a3, - chtype *a4, + WINDOW *a1, + int a2, + int a3, + chtype *a4, int z) { return(*(int *)0); } #undef mvwinchstr int mvwinchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype *z) { return(*(int *)0); } #undef mvwinnstr int mvwinnstr( - WINDOW *a1, - int a2, - int a3, - char *a4, + WINDOW *a1, + int a2, + int a3, + char *a4, int z) { return(*(int *)0); } #undef mvwinsch int mvwinsch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, chtype z) { return(*(int *)0); } #undef mvwinsnstr int mvwinsnstr( - WINDOW *a1, - int a2, - int a3, - const char *a4, + WINDOW *a1, + int a2, + int a3, + const char *a4, int z) { return(*(int *)0); } #undef mvwinsstr int mvwinsstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const char *z) { return(*(int *)0); } #undef mvwinstr int mvwinstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, char *z) { return(*(int *)0); } #undef mvwvline int mvwvline( - WINDOW *a1, - int a2, - int a3, - chtype a4, + WINDOW *a1, + int a2, + int a3, + chtype a4, int z) { return(*(int *)0); } @@ -1024,19 +1131,19 @@ int scroll( #undef setscrreg int setscrreg( - int a1, + int a1, int z) { return(*(int *)0); } #undef slk_attr_off int slk_attr_off( - const attr_t a1, + const attr_t a1, void *z) { return(*(int *)0); } #undef slk_attr_on int slk_attr_on( - attr_t a1, + attr_t a1, void *z) { return(*(int *)0); } @@ -1055,8 +1162,8 @@ void timeout( #undef touchline int touchline( - WINDOW *a1, - int a2, + WINDOW *a1, + int a2, int z) { return(*(int *)0); } @@ -1072,67 +1179,53 @@ int untouchwin( #undef vline int vline( - chtype a1, + chtype a1, int z) { return(*(int *)0); } -#undef vw_printw -int vw_printw( - WINDOW *a1, - const char *a2, - va_list z) - { return(*(int *)0); } - -#undef vw_scanw -int vw_scanw( - WINDOW *a1, - char *a2, - va_list z) - { return(*(int *)0); } - #undef waddchstr int waddchstr( - WINDOW *a1, + WINDOW *a1, const chtype *z) { return(*(int *)0); } #undef waddstr int waddstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef wattron int wattron( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattroff int wattroff( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattrset int wattrset( - WINDOW *a1, + WINDOW *a1, int z) { return(*(int *)0); } #undef wattr_get int wattr_get( - WINDOW *a1, - attr_t *a2, - short *a3, + WINDOW *a1, + attr_t *a2, + short *a3, void *z) { return(*(int *)0); } #undef wattr_set int wattr_set( - WINDOW *a1, - attr_t a2, - short a3, + WINDOW *a1, + attr_t a2, + short a3, void *z) { return(*(int *)0); } @@ -1143,13 +1236,13 @@ int wdeleteln( #undef wgetstr int wgetstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } #undef winchstr int winchstr( - WINDOW *a1, + WINDOW *a1, chtype *z) { return(*(int *)0); } @@ -1160,13 +1253,13 @@ int winsertln( #undef winsstr int winsstr( - WINDOW *a1, + WINDOW *a1, const char *z) { return(*(int *)0); } #undef winstr int winstr( - WINDOW *a1, + WINDOW *a1, char *z) { return(*(int *)0); } @@ -1290,10 +1383,15 @@ NCURSES_BOOL is_syncok( const WINDOW *z) { return(*(NCURSES_BOOL *)0); } +#undef wgetdelay +int wgetdelay( + const WINDOW *z) + { return(*(int *)0); } + #undef wgetscrreg int wgetscrreg( - const WINDOW *a1, - int *a2, + const WINDOW *a1, + int *a2, int *z) { return(*(int *)0); } @@ -1304,7 +1402,7 @@ int add_wch( #undef add_wchnstr int add_wchnstr( - const cchar_t *a1, + const cchar_t *a1, int z) { return(*(int *)0); } @@ -1315,7 +1413,7 @@ int add_wchstr( #undef addnwstr int addnwstr( - const wchar_t *a1, + const wchar_t *a1, int z) { return(*(int *)0); } @@ -1336,20 +1434,20 @@ void bkgrndset( #undef border_set int border_set( - const cchar_t *a1, - const cchar_t *a2, - const cchar_t *a3, - const cchar_t *a4, - const cchar_t *a5, - const cchar_t *a6, - const cchar_t *a7, + const cchar_t *a1, + const cchar_t *a2, + const cchar_t *a3, + const cchar_t *a4, + const cchar_t *a5, + const cchar_t *a6, + const cchar_t *a7, const cchar_t *z) { return(*(int *)0); } #undef box_set int box_set( - WINDOW *a1, - const cchar_t *a2, + WINDOW *a1, + const cchar_t *a2, const cchar_t *z) { return(*(int *)0); } @@ -1375,13 +1473,13 @@ int getbkgrnd( #undef getn_wstr int getn_wstr( - wint_t *a1, + wint_t *a1, int z) { return(*(int *)0); } #undef hline_set int hline_set( - const cchar_t *a1, + const cchar_t *a1, int z) { return(*(int *)0); } @@ -1392,7 +1490,7 @@ int in_wch( #undef in_wchnstr int in_wchnstr( - cchar_t *a1, + cchar_t *a1, int z) { return(*(int *)0); } @@ -1403,13 +1501,13 @@ int in_wchstr( #undef innwstr int innwstr( - wchar_t *a1, + wchar_t *a1, int z) { return(*(int *)0); } #undef ins_nwstr int ins_nwstr( - const wchar_t *a1, + const wchar_t *a1, int z) { return(*(int *)0); } @@ -1430,349 +1528,347 @@ int inwstr( #undef mvadd_wch int mvadd_wch( - int a1, - int a2, + int a1, + int a2, const cchar_t *z) { return(*(int *)0); } #undef mvadd_wchnstr int mvadd_wchnstr( - int a1, - int a2, - const cchar_t *a3, + int a1, + int a2, + const cchar_t *a3, int z) { return(*(int *)0); } #undef mvadd_wchstr int mvadd_wchstr( - int a1, - int a2, + int a1, + int a2, const cchar_t *z) { return(*(int *)0); } #undef mvaddnwstr int mvaddnwstr( - int a1, - int a2, - const wchar_t *a3, + int a1, + int a2, + const wchar_t *a3, int z) { return(*(int *)0); } #undef mvaddwstr int mvaddwstr( - int a1, - int a2, + int a1, + int a2, const wchar_t *z) { return(*(int *)0); } #undef mvget_wch int mvget_wch( - int a1, - int a2, + int a1, + int a2, wint_t *z) { return(*(int *)0); } #undef mvget_wstr int mvget_wstr( - int a1, - int a2, + int a1, + int a2, wint_t *z) { return(*(int *)0); } #undef mvgetn_wstr int mvgetn_wstr( - int a1, - int a2, - wint_t *a3, + int a1, + int a2, + wint_t *a3, int z) { return(*(int *)0); } #undef mvhline_set int mvhline_set( - int a1, - int a2, - const cchar_t *a3, + int a1, + int a2, + const cchar_t *a3, int z) { return(*(int *)0); } #undef mvin_wch int mvin_wch( - int a1, - int a2, + int a1, + int a2, cchar_t *z) { return(*(int *)0); } #undef mvin_wchnstr int mvin_wchnstr( - int a1, - int a2, - cchar_t *a3, + int a1, + int a2, + cchar_t *a3, int z) { return(*(int *)0); } #undef mvin_wchstr int mvin_wchstr( - int a1, - int a2, + int a1, + int a2, cchar_t *z) { return(*(int *)0); } #undef mvinnwstr int mvinnwstr( - int a1, - int a2, - wchar_t *a3, + int a1, + int a2, + wchar_t *a3, int z) { return(*(int *)0); } #undef mvins_nwstr int mvins_nwstr( - int a1, - int a2, - const wchar_t *a3, + int a1, + int a2, + const wchar_t *a3, int z) { return(*(int *)0); } #undef mvins_wch int mvins_wch( - int a1, - int a2, + int a1, + int a2, const cchar_t *z) { return(*(int *)0); } #undef mvins_wstr int mvins_wstr( - int a1, - int a2, + int a1, + int a2, const wchar_t *z) { return(*(int *)0); } #undef mvinwstr int mvinwstr( - int a1, - int a2, + int a1, + int a2, wchar_t *z) { return(*(int *)0); } #undef mvvline_set int mvvline_set( - int a1, - int a2, - const cchar_t *a3, + int a1, + int a2, + const cchar_t *a3, int z) { return(*(int *)0); } #undef mvwadd_wch int mvwadd_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const cchar_t *z) { return(*(int *)0); } #undef mvwadd_wchnstr int mvwadd_wchnstr( - WINDOW *a1, - int a2, - int a3, - const cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const cchar_t *a4, int z) { return(*(int *)0); } #undef mvwadd_wchstr int mvwadd_wchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const cchar_t *z) { return(*(int *)0); } #undef mvwaddnwstr int mvwaddnwstr( - WINDOW *a1, - int a2, - int a3, - const wchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const wchar_t *a4, int z) { return(*(int *)0); } #undef mvwaddwstr int mvwaddwstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const wchar_t *z) { return(*(int *)0); } #undef mvwget_wch int mvwget_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, wint_t *z) { return(*(int *)0); } #undef mvwget_wstr int mvwget_wstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, wint_t *z) { return(*(int *)0); } #undef mvwgetn_wstr int mvwgetn_wstr( - WINDOW *a1, - int a2, - int a3, - wint_t *a4, + WINDOW *a1, + int a2, + int a3, + wint_t *a4, int z) { return(*(int *)0); } #undef mvwhline_set int mvwhline_set( - WINDOW *a1, - int a2, - int a3, - const cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const cchar_t *a4, int z) { return(*(int *)0); } #undef mvwin_wch int mvwin_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, cchar_t *z) { return(*(int *)0); } #undef mvwin_wchnstr int mvwin_wchnstr( - WINDOW *a1, - int a2, - int a3, - cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + cchar_t *a4, int z) { return(*(int *)0); } #undef mvwin_wchstr int mvwin_wchstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, cchar_t *z) { return(*(int *)0); } #undef mvwinnwstr int mvwinnwstr( - WINDOW *a1, - int a2, - int a3, - wchar_t *a4, + WINDOW *a1, + int a2, + int a3, + wchar_t *a4, int z) { return(*(int *)0); } #undef mvwins_nwstr int mvwins_nwstr( - WINDOW *a1, - int a2, - int a3, - const wchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const wchar_t *a4, int z) { return(*(int *)0); } #undef mvwins_wch int mvwins_wch( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const cchar_t *z) { return(*(int *)0); } #undef mvwins_wstr int mvwins_wstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, const wchar_t *z) { return(*(int *)0); } #undef mvwinwstr int mvwinwstr( - WINDOW *a1, - int a2, - int a3, + WINDOW *a1, + int a2, + int a3, wchar_t *z) { return(*(int *)0); } #undef mvwvline_set int mvwvline_set( - WINDOW *a1, - int a2, - int a3, - const cchar_t *a4, + WINDOW *a1, + int a2, + int a3, + const cchar_t *a4, int z) { return(*(int *)0); } #undef vline_set int vline_set( - const cchar_t *a1, + const cchar_t *a1, int z) { return(*(int *)0); } #undef wadd_wchstr int wadd_wchstr( - WINDOW *a1, + WINDOW *a1, const cchar_t *z) { return(*(int *)0); } #undef waddwstr int waddwstr( - WINDOW *a1, + WINDOW *a1, const wchar_t *z) { return(*(int *)0); } #undef wget_wstr int wget_wstr( - WINDOW *a1, + WINDOW *a1, wint_t *z) { return(*(int *)0); } #undef wgetbkgrnd int wgetbkgrnd( - WINDOW *a1, + WINDOW *a1, cchar_t *z) { return(*(int *)0); } #undef win_wchstr int win_wchstr( - WINDOW *a1, + WINDOW *a1, cchar_t *z) { return(*(int *)0); } #undef wins_wstr int wins_wstr( - WINDOW *a1, + WINDOW *a1, const wchar_t *z) { return(*(int *)0); } #undef mouse_trafo NCURSES_BOOL mouse_trafo( - int *a1, - int *a2, + int *a1, + int *a2, NCURSES_BOOL z) { return(*(NCURSES_BOOL *)0); } /* ./base/lib_getch.c */ -#include <fifo_defs.h> - #undef ESCDELAY int ESCDELAY; #undef set_escdelay_sp int set_escdelay_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -1792,8 +1888,8 @@ int get_escdelay(void) #undef _nc_wgetch int _nc_wgetch( - WINDOW *win, - int *result, + WINDOW *win, + int *result, int use_meta) { return(*(int *)0); } @@ -1806,8 +1902,8 @@ int wgetch( #undef wgetnstr int wgetnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int maxlen) { return(*(int *)0); } @@ -1815,8 +1911,8 @@ int wgetnstr( #undef whline int whline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -1824,7 +1920,7 @@ int whline( #undef immedok void immedok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } @@ -1832,8 +1928,8 @@ void immedok( #undef winchnstr int winchnstr( - WINDOW *win, - chtype *str, + WINDOW *win, + chtype *str, int n) { return(*(int *)0); } @@ -1847,14 +1943,14 @@ WINDOW *initscr(void) #undef _nc_insert_ch int _nc_insert_ch( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, chtype ch) { return(*(int *)0); } #undef winsch int winsch( - WINDOW *win, + WINDOW *win, chtype c) { return(*(int *)0); } @@ -1862,7 +1958,7 @@ int winsch( #undef winsdelln int winsdelln( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -1870,8 +1966,8 @@ int winsdelln( #undef winsnstr int winsnstr( - WINDOW *win, - const char *s, + WINDOW *win, + const char *s, int n) { return(*(int *)0); } @@ -1879,8 +1975,8 @@ int winsnstr( #undef winnstr int winnstr( - WINDOW *win, - char *str, + WINDOW *win, + char *str, int n) { return(*(int *)0); } @@ -1899,7 +1995,7 @@ NCURSES_BOOL isendwin(void) #undef leaveok int leaveok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -1907,7 +2003,7 @@ int leaveok( #undef getmouse_sp int getmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1918,7 +2014,7 @@ int getmouse( #undef ungetmouse_sp int ungetmouse_sp( - SCREEN *sp, + SCREEN *sp, MEVENT *aevent) { return(*(int *)0); } @@ -1929,27 +2025,27 @@ int ungetmouse( #undef mousemask_sp mmask_t mousemask_sp( - SCREEN *sp, - mmask_t newmask, + SCREEN *sp, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef mousemask mmask_t mousemask( - mmask_t newmask, + mmask_t newmask, mmask_t *oldmask) { return(*(mmask_t *)0); } #undef wenclose NCURSES_BOOL wenclose( - const WINDOW *win, - int y, + const WINDOW *win, + int y, int x) { return(*(NCURSES_BOOL *)0); } #undef mouseinterval_sp int mouseinterval_sp( - SCREEN *sp, + SCREEN *sp, int maxclick) { return(*(int *)0); } @@ -1974,9 +2070,9 @@ NCURSES_BOOL has_mouse(void) #undef wmouse_trafo NCURSES_BOOL wmouse_trafo( - const WINDOW *win, - int *pY, - int *pX, + const WINDOW *win, + int *pY, + int *pX, NCURSES_BOOL to_screen) { return(*(NCURSES_BOOL *)0); } @@ -1984,8 +2080,8 @@ NCURSES_BOOL wmouse_trafo( #undef wmove int wmove( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } @@ -1993,14 +2089,14 @@ int wmove( #undef _nc_msec_cost_sp int _nc_msec_cost_sp( - SCREEN *sp, - const char *const cap, + SCREEN *sp, + const char *const cap, int affcnt) { return(*(int *)0); } #undef _nc_msec_cost int _nc_msec_cost( - const char *const cap, + const char *const cap, int affcnt) { return(*(int *)0); } @@ -2031,20 +2127,37 @@ void _nc_mvcur_wrap_sp( void _nc_mvcur_wrap(void) { /* void */ } +#undef _nc_mvcur_sp +int _nc_mvcur_sp( + SCREEN *sp, + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + +#undef _nc_mvcur +int _nc_mvcur( + int yold, + int xold, + int ynew, + int xnew) + { return(*(int *)0); } + #undef mvcur_sp int mvcur_sp( - SCREEN *sp, - int yold, - int xold, - int ynew, + SCREEN *sp, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } #undef mvcur int mvcur( - int yold, - int xold, - int ynew, + int yold, + int xold, + int ynew, int xnew) { return(*(int *)0); } @@ -2055,8 +2168,8 @@ int _nc_optimize_enable; #undef mvwin int mvwin( - WINDOW *win, - int by, + WINDOW *win, + int by, int bx) { return(*(int *)0); } @@ -2082,16 +2195,16 @@ void nofilter(void) #undef newterm_sp SCREEN *newterm_sp( - SCREEN *sp, - char *name, - FILE *ofp, + SCREEN *sp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } #undef newterm SCREEN *newterm( - char *name, - FILE *ofp, + const char *name, + FILE *ofp, FILE *ifp) { return(*(SCREEN **)0); } @@ -2104,46 +2217,46 @@ int _nc_freewin( #undef newwin_sp WINDOW *newwin_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef newwin WINDOW *newwin( - int num_lines, - int num_columns, - int begy, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef derwin WINDOW *derwin( - WINDOW *orig, - int num_lines, - int num_columns, - int begy, + WINDOW *orig, + int num_lines, + int num_columns, + int begy, int begx) { return(*(WINDOW **)0); } #undef subwin WINDOW *subwin( - WINDOW *w, - int l, - int c, - int y, + WINDOW *w, + int l, + int c, + int y, int x) { return(*(WINDOW **)0); } #undef _nc_makenew_sp WINDOW *_nc_makenew_sp( - SCREEN *sp, - int num_lines, - int num_columns, - int begy, - int begx, + SCREEN *sp, + int num_lines, + int num_columns, + int begy, + int begx, int flags) { return(*(WINDOW **)0); } @@ -2186,26 +2299,26 @@ int nonl(void) #undef overlay int overlay( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef overwrite int overwrite( - const WINDOW *win1, + const WINDOW *win1, WINDOW *win2) { return(*(int *)0); } #undef copywin int copywin( - const WINDOW *src, - WINDOW *dst, - int sminrow, - int smincol, - int dminrow, - int dmincol, - int dmaxrow, - int dmaxcol, + const WINDOW *src, + WINDOW *dst, + int sminrow, + int smincol, + int dminrow, + int dmincol, + int dmaxrow, + int dmaxcol, int over) { return(*(int *)0); } @@ -2213,51 +2326,51 @@ int copywin( #undef newpad_sp WINDOW *newpad_sp( - SCREEN *sp, - int l, + SCREEN *sp, + int l, int c) { return(*(WINDOW **)0); } #undef newpad WINDOW *newpad( - int l, + int l, int c) { return(*(WINDOW **)0); } #undef subpad WINDOW *subpad( - WINDOW *orig, - int l, - int c, - int begy, + WINDOW *orig, + int l, + int c, + int begy, int begx) { return(*(WINDOW **)0); } #undef prefresh int prefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pnoutrefresh int pnoutrefresh( - WINDOW *win, - int pminrow, - int pmincol, - int sminrow, - int smincol, - int smaxrow, + WINDOW *win, + int pminrow, + int pmincol, + int sminrow, + int smincol, + int smaxrow, int smaxcol) { return(*(int *)0); } #undef pechochar int pechochar( - WINDOW *pad, + WINDOW *pad, const chtype ch) { return(*(int *)0); } @@ -2265,38 +2378,45 @@ int pechochar( #undef printw int printw( - const char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wprintw int wprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvprintw int mvprintw( - int y, - int x, - const char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwprintw int mvwprintw( - WINDOW *win, - int y, - int x, - const char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef vwprintw int vwprintw( - WINDOW *win, - const char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_printw +int vw_printw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } @@ -2304,8 +2424,8 @@ int vwprintw( #undef wredrawln int wredrawln( - WINDOW *win, - int beg, + WINDOW *win, + int beg, int num) { return(*(int *)0); } @@ -2325,16 +2445,16 @@ int wnoutrefresh( #undef restartterm_sp int restartterm_sp( - SCREEN *sp, - char *termp, - int filenum, + SCREEN *sp, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } #undef restartterm int restartterm( - char *termp, - int filenum, + const char *termp, + int filenum, int *errret) { return(*(int *)0); } @@ -2342,38 +2462,45 @@ int restartterm( #undef vwscanw int vwscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, + va_list argp) + { return(*(int *)0); } + +#undef vw_scanw +int vw_scanw( + WINDOW *win, + const char *fmt, va_list argp) { return(*(int *)0); } #undef scanw int scanw( - char *fmt, + const char *fmt, ...) { return(*(int *)0); } #undef wscanw int wscanw( - WINDOW *win, - char *fmt, + WINDOW *win, + const char *fmt, ...) { return(*(int *)0); } #undef mvscanw int mvscanw( - int y, - int x, - char *fmt, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } #undef mvwscanw int mvwscanw( - WINDOW *win, - int y, - int x, - char *fmt, + WINDOW *win, + int y, + int x, + const char *fmt, ...) { return(*(int *)0); } @@ -2381,7 +2508,7 @@ int mvwscanw( #undef getwin_sp WINDOW *getwin_sp( - SCREEN *sp, + SCREEN *sp, FILE *filep) { return(*(WINDOW **)0); } @@ -2392,13 +2519,13 @@ WINDOW *getwin( #undef putwin int putwin( - WINDOW *win, + WINDOW *win, FILE *filep) { return(*(int *)0); } #undef scr_restore_sp int scr_restore_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -2414,7 +2541,7 @@ int scr_dump( #undef scr_init_sp int scr_init_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -2425,7 +2552,7 @@ int scr_init( #undef scr_set_sp int scr_set_sp( - SCREEN *sp, + SCREEN *sp, const char *file) { return(*(int *)0); } @@ -2438,16 +2565,16 @@ int scr_set( #undef _nc_scroll_window void _nc_scroll_window( - WINDOW *win, - int const n, - short const top, - short const bottom, + WINDOW *win, + int const n, + int const top, + int const bottom, cchar_t blank) { /* void */ } #undef wscrl int wscrl( - WINDOW *win, + WINDOW *win, int n) { return(*(int *)0); } @@ -2455,7 +2582,7 @@ int wscrl( #undef scrollok int scrollok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } @@ -2463,8 +2590,8 @@ int scrollok( #undef wsetscrreg int wsetscrreg( - WINDOW *win, - int top, + WINDOW *win, + int top, int bottom) { return(*(int *)0); } @@ -2482,54 +2609,54 @@ void delscreen( #undef _nc_setupscreen_sp int _nc_setupscreen_sp( - SCREEN **spp, - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + SCREEN **spp, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_setupscreen int _nc_setupscreen( - int slines, - int scolumns, - FILE *output, - NCURSES_BOOL filtered, + int slines, + int scolumns, + FILE *output, + int filtered, int slk_format) { return(*(int *)0); } #undef _nc_ripoffline_sp int _nc_ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef _nc_ripoffline int _nc_ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline_sp int ripoffline_sp( - SCREEN *sp, - int line, + SCREEN *sp, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } #undef ripoffline int ripoffline( - int line, + int line, int (*init)( - WINDOW *p1, + WINDOW *p1, int p2)) { return(*(int *)0); } @@ -2537,13 +2664,13 @@ int ripoffline( #undef _nc_format_slks int _nc_format_slks( - SCREEN *sp, + SCREEN *sp, int cols) { return(*(int *)0); } #undef _nc_slk_initialize int _nc_slk_initialize( - WINDOW *stwin, + WINDOW *stwin, int cols) { return(*(int *)0); } @@ -2560,16 +2687,16 @@ int slk_restore(void) #undef slk_attr_set_sp int slk_attr_set_sp( - SCREEN *sp, - const attr_t attr, - short color_pair_number, + SCREEN *sp, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } #undef slk_attr_set int slk_attr_set( - const attr_t attr, - short color_pair_number, + const attr_t attr, + short pair_arg, void *opts) { return(*(int *)0); } @@ -2577,7 +2704,7 @@ int slk_attr_set( #undef slk_attroff_sp int slk_attroff_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2590,7 +2717,7 @@ int slk_attroff( #undef slk_attron_sp int slk_attron_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2603,7 +2730,7 @@ int slk_attron( #undef slk_attrset_sp int slk_attrset_sp( - SCREEN *sp, + SCREEN *sp, const chtype attr) { return(*(int *)0); } @@ -2638,20 +2765,31 @@ int slk_clear(void) #undef slk_color_sp int slk_color_sp( - SCREEN *sp, - short color_pair_number) + SCREEN *sp, + short pair_arg) { return(*(int *)0); } #undef slk_color int slk_color( - short color_pair_number) + short pair_arg) + { return(*(int *)0); } + +#undef extended_slk_color_sp +int extended_slk_color_sp( + SCREEN *sp, + int pair_arg) + { return(*(int *)0); } + +#undef extended_slk_color +int extended_slk_color( + int pair_arg) { return(*(int *)0); } /* ./base/lib_slkinit.c */ #undef slk_init_sp int slk_init_sp( - SCREEN *sp, + SCREEN *sp, int format) { return(*(int *)0); } @@ -2664,7 +2802,7 @@ int slk_init( #undef slk_label_sp char *slk_label_sp( - SCREEN *sp, + SCREEN *sp, int n) { return(*(char **)0); } @@ -2695,20 +2833,18 @@ int slk_refresh(void) /* ./base/lib_slkset.c */ -#include <wctype.h> - #undef slk_set_sp int slk_set_sp( - SCREEN *sp, - int i, - const char *astr, + SCREEN *sp, + int i, + const char *astr, int format) { return(*(int *)0); } #undef slk_set int slk_set( - int i, - const char *astr, + int i, + const char *astr, int format) { return(*(int *)0); } @@ -2727,7 +2863,7 @@ int slk_touch(void) #undef is_linetouched NCURSES_BOOL is_linetouched( - WINDOW *win, + WINDOW *win, int line) { return(*(NCURSES_BOOL *)0); } @@ -2738,9 +2874,9 @@ NCURSES_BOOL is_wintouched( #undef wtouchln int wtouchln( - WINDOW *win, - int y, - int n, + WINDOW *win, + int y, + int n, int changed) { return(*(int *)0); } @@ -2748,21 +2884,27 @@ int wtouchln( #undef _tracedump void _tracedump( - const char *name, + const char *name, WINDOW *win) { /* void */ } /* ./trace/lib_tracemse.c */ +#undef _nc_trace_mmask_t +char *_nc_trace_mmask_t( + SCREEN *sp, + mmask_t code) + { return(*(char **)0); } + #undef _nc_tracemouse char *_nc_tracemouse( - SCREEN *sp, + SCREEN *sp, MEVENT const *ep) { return(*(char **)0); } #undef _nc_retrace_mmask_t mmask_t _nc_retrace_mmask_t( - SCREEN *sp, + SCREEN *sp, mmask_t code) { return(*(mmask_t *)0); } @@ -2773,11 +2915,9 @@ char *_tracemouse( /* ./tty/lib_tstp.c */ -#include <SigAction.h> - #undef _nc_signal_handler void _nc_signal_handler( - NCURSES_BOOL enable) + int enable) { /* void */ } /* ./base/lib_ungetch.c */ @@ -2789,7 +2929,7 @@ void _nc_fifo_dump( #undef ungetch_sp int ungetch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -2802,20 +2942,20 @@ int ungetch( #undef vidputs_sp int vidputs_sp( - SCREEN *sp, - chtype newmode, + SCREEN *sp, + chtype newmode, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef vidputs int vidputs( - chtype newmode, + chtype newmode, NCURSES_OUTC outc) { return(*(int *)0); } #undef vidattr_sp int vidattr_sp( - SCREEN *sp, + SCREEN *sp, chtype newmode) { return(*(int *)0); } @@ -2837,8 +2977,8 @@ chtype termattrs(void) #undef wvline int wvline( - WINDOW *win, - chtype ch, + WINDOW *win, + chtype ch, int n) { return(*(int *)0); } @@ -2846,8 +2986,8 @@ int wvline( #undef wattr_off int wattr_off( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2855,8 +2995,8 @@ int wattr_off( #undef wattr_on int wattr_on( - WINDOW *win, - attr_t at, + WINDOW *win, + attr_t at, void *opts) { return(*(int *)0); } @@ -2876,14 +3016,14 @@ void _nc_synchook( #undef mvderwin int mvderwin( - WINDOW *win, - int y, + WINDOW *win, + int y, int x) { return(*(int *)0); } #undef syncok int syncok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL bf) { return(*(int *)0); } @@ -2922,22 +3062,19 @@ struct panelhook *_nc_panelhook(void) #undef _nc_printf_string_sp char *_nc_printf_string_sp( - SCREEN *sp, - const char *fmt, + SCREEN *sp, + const char *fmt, va_list ap) { return(*(char **)0); } #undef _nc_printf_string char *_nc_printf_string( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } /* ./tty/tty_update.c */ -#include <sys/time.h> -#include <sys/times.h> - #undef doupdate_sp int doupdate_sp( SCREEN *sp) @@ -2949,18 +3086,18 @@ int doupdate(void) #undef _nc_scrolln_sp int _nc_scrolln_sp( - SCREEN *sp, - int n, - int top, - int bot, + SCREEN *sp, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } #undef _nc_scrolln int _nc_scrolln( - int n, - int top, - int bot, + int n, + int top, + int bot, int maxy) { return(*(int *)0); } @@ -2993,7 +3130,7 @@ void _nc_screen_wrap(void) #undef _nc_do_xmc_glitch_sp void _nc_do_xmc_glitch_sp( - SCREEN *sp, + SCREEN *sp, attr_t previous) { /* void */ } @@ -3004,22 +3141,12 @@ void _nc_do_xmc_glitch( /* ./trace/varargs.c */ -typedef enum { - atUnknown = 0, atInteger, atFloat, atPoint, atString -} ARGTYPE; - #undef _nc_varargs char *_nc_varargs( - const char *fmt, + const char *fmt, va_list ap) { return(*(char **)0); } -/* ./base/memmove.c */ - -#undef _nc_memmove -void _nc_memmove(void) - { /* void */ } - /* ./base/vsscanf.c */ #undef _nc_vsscanf @@ -3034,7 +3161,7 @@ void _nc_freeall(void) #undef _nc_free_and_exit_sp void _nc_free_and_exit_sp( - SCREEN *sp, + SCREEN *sp, int code) { /* void */ } @@ -3043,6 +3170,11 @@ void _nc_free_and_exit( int code) { /* void */ } +#undef exit_curses +void exit_curses( + int code) + { /* void */ } + /* ./widechar/charable.c */ #undef _nc_is_charable @@ -3064,13 +3196,13 @@ wint_t _nc_to_widechar( #undef wadd_wch int wadd_wch( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } #undef wecho_wchar int wecho_wchar( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } @@ -3078,14 +3210,14 @@ int wecho_wchar( #undef wborder_set int wborder_set( - WINDOW *win, - const cchar_t *ls, - const cchar_t *rs, - const cchar_t *ts, - const cchar_t *bs, - const cchar_t *tl, - const cchar_t *tr, - const cchar_t *bl, + WINDOW *win, + const cchar_t *ls, + const cchar_t *rs, + const cchar_t *ts, + const cchar_t *bs, + const cchar_t *tl, + const cchar_t *tr, + const cchar_t *bl, const cchar_t *br) { return(*(int *)0); } @@ -3093,29 +3225,41 @@ int wborder_set( #undef setcchar int setcchar( - cchar_t *wcval, - const wchar_t *wch, - const attr_t attrs, - short color_pair, + cchar_t *wcval, + const wchar_t *wch, + const attr_t attrs, + short pair_arg, const void *opts) { return(*(int *)0); } #undef getcchar int getcchar( - const cchar_t *wcval, - wchar_t *wch, - attr_t *attrs, - short *color_pair, + const cchar_t *wcval, + wchar_t *wch, + attr_t *attrs, + short *pair_arg, void *opts) { return(*(int *)0); } /* ./widechar/lib_erasewchar.c */ +#undef erasewchar_sp +int erasewchar_sp( + SCREEN *sp, + wchar_t *wch) + { return(*(int *)0); } + #undef erasewchar int erasewchar( wchar_t *wch) { return(*(int *)0); } +#undef killwchar_sp +int killwchar_sp( + SCREEN *sp, + wchar_t *wch) + { return(*(int *)0); } + #undef killwchar int killwchar( wchar_t *wch) @@ -3125,7 +3269,7 @@ int killwchar( #undef wget_wch int wget_wch( - WINDOW *win, + WINDOW *win, wint_t *result) { return(*(int *)0); } @@ -3133,8 +3277,8 @@ int wget_wch( #undef wgetn_wstr int wgetn_wstr( - WINDOW *win, - wint_t *str, + WINDOW *win, + wint_t *str, int maxlen) { return(*(int *)0); } @@ -3142,8 +3286,8 @@ int wgetn_wstr( #undef whline_set int whline_set( - WINDOW *win, - const cchar_t *ch, + WINDOW *win, + const cchar_t *ch, int n) { return(*(int *)0); } @@ -3151,7 +3295,7 @@ int whline_set( #undef win_wch int win_wch( - WINDOW *win, + WINDOW *win, cchar_t *wcval) { return(*(int *)0); } @@ -3159,8 +3303,8 @@ int win_wch( #undef win_wchnstr int win_wchnstr( - WINDOW *win, - cchar_t *wchstr, + WINDOW *win, + cchar_t *wchstr, int n) { return(*(int *)0); } @@ -3168,20 +3312,20 @@ int win_wchnstr( #undef _nc_insert_wch int _nc_insert_wch( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } #undef wins_wch int wins_wch( - WINDOW *win, + WINDOW *win, const cchar_t *wch) { return(*(int *)0); } #undef wins_nwstr int wins_nwstr( - WINDOW *win, - const wchar_t *wstr, + WINDOW *win, + const wchar_t *wstr, int n) { return(*(int *)0); } @@ -3189,29 +3333,29 @@ int wins_nwstr( #undef winnwstr int winnwstr( - WINDOW *win, - wchar_t *wstr, + WINDOW *win, + wchar_t *wstr, int n) { return(*(int *)0); } #undef winwstr int winwstr( - WINDOW *win, + WINDOW *win, wchar_t *wstr) { return(*(int *)0); } /* ./widechar/lib_key_name.c */ #undef key_name -char *key_name( +const char *key_name( wchar_t c) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./widechar/lib_pecho_wchar.c */ #undef pecho_wchar int pecho_wchar( - WINDOW *pad, + WINDOW *pad, const cchar_t *wch) { return(*(int *)0); } @@ -3219,8 +3363,8 @@ int pecho_wchar( #undef slk_wset int slk_wset( - int i, - const wchar_t *astr, + int i, + const wchar_t *astr, int format) { return(*(int *)0); } @@ -3228,14 +3372,14 @@ int slk_wset( #undef _nc_wcrtomb size_t _nc_wcrtomb( - char *target, - wchar_t source, + char *target, + wchar_t source, mbstate_t *state) { return(*(size_t *)0); } #undef unget_wch_sp int unget_wch_sp( - SCREEN *sp, + SCREEN *sp, const wchar_t wch) { return(*(int *)0); } @@ -3248,33 +3392,33 @@ int unget_wch( #undef vid_puts_sp int vid_puts_sp( - SCREEN *sp, - attr_t newmode, - short pair, - void *opts, + SCREEN *sp, + attr_t newmode, + short pair_arg, + void *opts, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef vid_puts int vid_puts( - attr_t newmode, - short pair, - void *opts, + attr_t newmode, + short pair_arg, + void *opts, NCURSES_OUTC outc) { return(*(int *)0); } #undef vid_attr_sp int vid_attr_sp( - SCREEN *sp, - attr_t newmode, - short pair, + SCREEN *sp, + attr_t newmode, + short pair_arg, void *opts) { return(*(int *)0); } #undef vid_attr int vid_attr( - attr_t newmode, - short pair, + attr_t newmode, + short pair_arg, void *opts) { return(*(int *)0); } @@ -3291,8 +3435,8 @@ attr_t term_attrs(void) #undef wvline_set int wvline_set( - WINDOW *win, - const cchar_t *ch, + WINDOW *win, + const cchar_t *ch, int n) { return(*(int *)0); } @@ -3309,7 +3453,7 @@ void _nc_init_wacs(void) #undef wunctrl_sp wchar_t *wunctrl_sp( - SCREEN *sp, + SCREEN *sp, cchar_t *wc) { return(*(wchar_t **)0); } @@ -3322,31 +3466,31 @@ wchar_t *wunctrl( #undef _nc_toggle_attr_on void _nc_toggle_attr_on( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_toggle_attr_off void _nc_toggle_attr_off( - attr_t *S, + attr_t *S, attr_t at) { /* void */ } #undef _nc_DelCharCost_sp int _nc_DelCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_InsCharCost_sp int _nc_InsCharCost_sp( - SCREEN *sp, + SCREEN *sp, int count) { return(*(int *)0); } #undef _nc_UpdateAttrs_sp void _nc_UpdateAttrs_sp( - SCREEN *sp, + SCREEN *sp, const cchar_t *c) { /* void */ } @@ -3369,7 +3513,7 @@ void _nc_UpdateAttrs( #undef use_legacy_coding_sp int use_legacy_coding_sp( - SCREEN *sp, + SCREEN *sp, int level) { return(*(int *)0); } @@ -3391,14 +3535,14 @@ int use_default_colors(void) #undef assume_default_colors_sp int assume_default_colors_sp( - SCREEN *sp, - int fg, + SCREEN *sp, + int fg, int bg) { return(*(int *)0); } #undef assume_default_colors int assume_default_colors( - int fg, + int fg, int bg) { return(*(int *)0); } @@ -3406,55 +3550,121 @@ int assume_default_colors( #undef mcprint_sp int mcprint_sp( - SCREEN *sp, - char *data, + SCREEN *sp, + char *data, int len) { return(*(int *)0); } #undef mcprint int mcprint( - char *data, + char *data, int len) { return(*(int *)0); } +/* ./base/new_pair.c */ + +#undef _nc_free_ordered_pairs +void _nc_free_ordered_pairs( + SCREEN *sp) + { /* void */ } + +#undef _nc_reset_color_pair +void _nc_reset_color_pair( + SCREEN *sp, + int pair, + colorpair_t *next) + { /* void */ } + +#undef _nc_set_color_pair +void _nc_set_color_pair( + SCREEN *sp, + int pair, + int mode) + { /* void */ } + +#undef _nc_copy_pairs +void _nc_copy_pairs( + SCREEN *sp, + colorpair_t *target, + colorpair_t *source, + int length) + { /* void */ } + +#undef alloc_pair_sp +int alloc_pair_sp( + SCREEN *sp, + int fg, + int bg) + { return(*(int *)0); } + +#undef find_pair_sp +int find_pair_sp( + SCREEN *sp, + int fg, + int bg) + { return(*(int *)0); } + +#undef free_pair_sp +int free_pair_sp( + SCREEN *sp, + int pair) + { return(*(int *)0); } + +#undef alloc_pair +int alloc_pair( + int f, + int b) + { return(*(int *)0); } + +#undef find_pair +int find_pair( + int f, + int b) + { return(*(int *)0); } + +#undef free_pair +int free_pair( + int pair) + { return(*(int *)0); } + /* ./base/resizeterm.c */ #undef is_term_resized_sp NCURSES_BOOL is_term_resized_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef is_term_resized NCURSES_BOOL is_term_resized( - int ToLines, + int ToLines, int ToCols) { return(*(NCURSES_BOOL *)0); } #undef resize_term_sp int resize_term_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resize_term int resize_term( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm_sp int resizeterm_sp( - SCREEN *sp, - int ToLines, + SCREEN *sp, + int ToLines, int ToCols) { return(*(int *)0); } #undef resizeterm int resizeterm( - int ToLines, + int ToLines, int ToCols) { return(*(int *)0); } @@ -3469,8 +3679,8 @@ void _nc_trace_xnames( #undef use_screen int use_screen( - SCREEN *screen, - NCURSES_SCREEN_CB func, + SCREEN *screen, + NCURSES_SCREEN_CB func, void *data) { return(*(int *)0); } @@ -3478,8 +3688,8 @@ int use_screen( #undef use_window int use_window( - WINDOW *win, - NCURSES_WINDOW_CB func, + WINDOW *win, + NCURSES_WINDOW_CB func, void *data) { return(*(int *)0); } @@ -3487,8 +3697,8 @@ int use_window( #undef wresize int wresize( - WINDOW *win, - int ToLines, + WINDOW *win, + int ToLines, int ToCols) { return(*(int *)0); } @@ -3516,7 +3726,7 @@ char *_nc_basename( #undef _nc_access int _nc_access( - const char *path, + const char *path, int mode) { return(*(int *)0); } @@ -3534,12 +3744,25 @@ NCURSES_BOOL _nc_is_file_path( int _nc_env_access(void) { return(*(int *)0); } +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + /* ./tinfo/add_tries.c */ #undef _nc_add_to_try int _nc_add_to_try( - TRIES **tree, - const char *str, + TRIES **tree, + const char *str, unsigned code) { return(*(int *)0); } @@ -3547,29 +3770,39 @@ int _nc_add_to_try( #undef _nc_align_termtype void _nc_align_termtype( - TERMTYPE *to, - TERMTYPE *from) + TERMTYPE2 *to, + TERMTYPE2 *from) { /* void */ } #undef _nc_copy_termtype void _nc_copy_termtype( - TERMTYPE *dst, - TERMTYPE *src) + TERMTYPE *dst, + const TERMTYPE *src) + { /* void */ } + +#undef _nc_copy_termtype2 +void _nc_copy_termtype2( + TERMTYPE2 *dst, + const TERMTYPE2 *src) + { /* void */ } + +#undef _nc_export_termtype2 +void _nc_export_termtype2( + TERMTYPE *dst, + const TERMTYPE2 *src) { /* void */ } /* ./codes.c */ #undef boolcodes -char *const boolcodes[] = {0}; +const char *const boolcodes[] = {0}; #undef numcodes -char *const numcodes[] = {0}; +const char *const numcodes[] = {0}; #undef strcodes -char *const strcodes[] = {0}; +const char *const strcodes[] = {0}; /* ./comp_captab.c */ -#include <hashsize.h> - #undef _nc_get_table const struct name_table_entry *_nc_get_table( NCURSES_BOOL termcap) @@ -3620,19 +3853,19 @@ void _nc_get_type( #undef _nc_warning void _nc_warning( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_err_abort void _nc_err_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } #undef _nc_syserr_abort void _nc_syserr_abort( - const char *const fmt, + const char *const fmt, ...) { /* void */ } @@ -3640,17 +3873,32 @@ void _nc_syserr_abort( #undef _nc_find_entry struct name_table_entry const *_nc_find_entry( - const char *string, + const char *string, const HashValue *hash_table) { return(*(struct name_table_entry const **)0); } #undef _nc_find_type_entry struct name_table_entry const *_nc_find_type_entry( - const char *string, - int type, + const char *string, + int type, NCURSES_BOOL termcap) { return(*(struct name_table_entry const **)0); } +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + /* ./tinfo/db_iterator.c */ #undef _nc_tic_dir @@ -3669,13 +3917,13 @@ void _nc_last_db(void) #undef _nc_next_db const char *_nc_next_db( - DBDIRS *state, + DBDIRS *state, int *offset) { return(*(const char **)0); } #undef _nc_first_db void _nc_first_db( - DBDIRS *state, + DBDIRS *state, int *offset) { /* void */ } @@ -3683,7 +3931,7 @@ void _nc_first_db( #undef _nc_doalloc void *_nc_doalloc( - void *oldp, + void *oldp, size_t amount) { return(*(void **)0); } @@ -3696,8 +3944,8 @@ ENTRY *_nc_tail; #undef _nc_free_entry void _nc_free_entry( - ENTRY *headp, - TERMTYPE *tterm) + ENTRY *headp, + TERMTYPE2 *tterm) { /* void */ } #undef _nc_free_entries @@ -3705,18 +3953,22 @@ void _nc_free_entries( ENTRY *headp) { /* void */ } -#undef _nc_delink_entry -ENTRY *_nc_delink_entry( - ENTRY *headp, - TERMTYPE *tterm) - { return(*(ENTRY **)0); } - #undef _nc_leaks_tinfo void _nc_leaks_tinfo(void) { /* void */ } +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + /* ./fallback.c */ +#undef _nc_fallback2 +const TERMTYPE2 *_nc_fallback2( + const char *name) + { return(*(const TERMTYPE2 **)0); } + #undef _nc_fallback const TERMTYPE *_nc_fallback( const char *name) @@ -3729,6 +3981,11 @@ void _nc_free_termtype( TERMTYPE *ptr) { /* void */ } +#undef _nc_free_termtype2 +void _nc_free_termtype2( + TERMTYPE2 *ptr) + { /* void */ } + #undef _nc_user_definable NCURSES_BOOL _nc_user_definable; @@ -3744,6 +4001,12 @@ int _nc_getenv_num( const char *name) { return(*(int *)0); } +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + /* ./tinfo/home_terminfo.c */ #undef _nc_home_terminfo @@ -3752,15 +4015,6 @@ char *_nc_home_terminfo(void) /* ./tinfo/init_keytry.c */ -#if 0 - -#include <init_keytry.h> - -#undef _nc_tinfo_fkeys -const struct tinfo_fkeys _nc_tinfo_fkeys[] = {0}; - -#endif - #undef _nc_init_keytry void _nc_init_keytry( SCREEN *sp) @@ -3782,11 +4036,9 @@ void _nc_init_acs(void) /* ./tinfo/lib_baudrate.c */ -#include <termcap.h> - struct speed { - int s; - int sp; + int given_speed; + int actual_speed; }; #undef _nc_baudrate @@ -3815,7 +4067,7 @@ TERMINAL *cur_term; #undef set_curterm_sp TERMINAL *set_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(TERMINAL **)0); } @@ -3826,7 +4078,7 @@ TERMINAL *set_curterm( #undef del_curterm_sp int del_curterm_sp( - SCREEN *sp, + SCREEN *sp, TERMINAL *termp) { return(*(int *)0); } @@ -3911,29 +4163,32 @@ int flushinp(void) struct kn { short offset; int code; }; #undef keyname_sp -char *keyname_sp( - SCREEN *sp, +const char *keyname_sp( + SCREEN *sp, int c) - { return(*(char **)0); } + { return(*(const char **)0); } #undef keyname -char *keyname( +const char *keyname( int c) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./tinfo/lib_longname.c */ +#undef longname_sp +char *longname_sp( + SCREEN *sp) + { return(*(char **)0); } + #undef longname char *longname(void) { return(*(char **)0); } /* ./tinfo/lib_napms.c */ -#include <time.h> - #undef napms_sp int napms_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -3946,19 +4201,19 @@ int napms( #undef idlok int idlok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef idcok void idcok( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { /* void */ } #undef halfdelay_sp int halfdelay_sp( - SCREEN *sp, + SCREEN *sp, int t) { return(*(int *)0); } @@ -3969,37 +4224,37 @@ int halfdelay( #undef nodelay int nodelay( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef notimeout int notimeout( - WINDOW *win, + WINDOW *win, NCURSES_BOOL f) { return(*(int *)0); } #undef wtimeout void wtimeout( - WINDOW *win, + WINDOW *win, int delay) { /* void */ } #undef keypad int keypad( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef meta int meta( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef curs_set_sp int curs_set_sp( - SCREEN *sp, + SCREEN *sp, int vis) { return(*(int *)0); } @@ -4010,7 +4265,7 @@ int curs_set( #undef typeahead_sp int typeahead_sp( - SCREEN *sp, + SCREEN *sp, int fd) { return(*(int *)0); } @@ -4021,7 +4276,7 @@ int typeahead( #undef has_key_sp int has_key_sp( - SCREEN *sp, + SCREEN *sp, int keycode) { return(*(int *)0); } @@ -4032,15 +4287,15 @@ int has_key( #undef _nc_putp_flush_sp int _nc_putp_flush_sp( - SCREEN *sp, - const char *name, + SCREEN *sp, + const char *name, const char *value) { return(*(int *)0); } #undef _nc_keypad int _nc_keypad( - SCREEN *sp, - NCURSES_BOOL flag) + SCREEN *sp, + int flag) { return(*(int *)0); } /* ./tinfo/lib_raw.c */ @@ -4101,23 +4356,19 @@ void noqiflush(void) #undef intrflush_sp int intrflush_sp( - SCREEN *sp, - WINDOW *win, + SCREEN *sp, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } #undef intrflush int intrflush( - WINDOW *win, + WINDOW *win, NCURSES_BOOL flag) { return(*(int *)0); } /* ./tinfo/lib_setup.c */ -#include <locale.h> -#include <sys/ioctl.h> -#include <langinfo.h> - #undef ttytype char ttytype[256]; #undef LINES @@ -4129,7 +4380,7 @@ int TABSIZE; #undef set_tabsize_sp int set_tabsize_sp( - SCREEN *sp, + SCREEN *sp, int value) { return(*(int *)0); } @@ -4145,7 +4396,13 @@ int _nc_handle_sigwinch( #undef use_env_sp void use_env_sp( - SCREEN *sp, + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, NCURSES_BOOL f) { /* void */ } @@ -4154,10 +4411,15 @@ void use_env( NCURSES_BOOL f) { /* void */ } +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + #undef _nc_get_screensize void _nc_get_screensize( - SCREEN *sp, - int *linep, + SCREEN *sp, + int *linep, int *colp) { /* void */ } @@ -4168,14 +4430,14 @@ void _nc_update_screensize( #undef _nc_setup_tinfo int _nc_setup_tinfo( - const char *const tn, - TERMTYPE *const tp) + const char *const tn, + TERMTYPE2 *const tp) { return(*(int *)0); } #undef _nc_tinfo_cmdch void _nc_tinfo_cmdch( - TERMINAL *termp, - char proto) + TERMINAL *termp, + int proto) { /* void */ } #undef _nc_get_locale @@ -4193,10 +4455,10 @@ int _nc_locale_breaks_acs( #undef _nc_setupterm int _nc_setupterm( - char *tname, - int Filedes, - int *errret, - NCURSES_BOOL reuse) + const char *tname, + int Filedes, + int *errret, + int reuse) { return(*(int *)0); } #undef new_prescr @@ -4205,8 +4467,8 @@ SCREEN *new_prescr(void) #undef setupterm int setupterm( - char *tname, - int Filedes, + const char *tname, + int Filedes, int *errret) { return(*(int *)0); } @@ -4219,55 +4481,49 @@ char *BC; #undef tgetent_sp int tgetent_sp( - SCREEN *sp, - char *bufp, + SCREEN *sp, + char *bufp, const char *name) { return(*(int *)0); } -#if 0 - -#include <capdefaults.c> - -#endif - #undef tgetent int tgetent( - char *bufp, + char *bufp, const char *name) { return(*(int *)0); } #undef tgetflag_sp int tgetflag_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetflag int tgetflag( - char *id) + const char *id) { return(*(int *)0); } #undef tgetnum_sp int tgetnum_sp( - SCREEN *sp, - char *id) + SCREEN *sp, + const char *id) { return(*(int *)0); } #undef tgetnum int tgetnum( - char *id) + const char *id) { return(*(int *)0); } #undef tgetstr_sp char *tgetstr_sp( - SCREEN *sp, - char *id, + SCREEN *sp, + const char *id, char **area) { return(*(char **)0); } #undef tgetstr char *tgetstr( - char *id, + const char *id, char **area) { return(*(char **)0); } @@ -4286,8 +4542,8 @@ char *termname(void) #undef tgoto char *tgoto( - const char *string, - int x, + const char *string, + int x, int y) { return(*(char **)0); } @@ -4295,35 +4551,35 @@ char *tgoto( #undef tigetflag_sp int tigetflag_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetflag int tigetflag( - char *str) + const char *str) { return(*(int *)0); } #undef tigetnum_sp int tigetnum_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(int *)0); } #undef tigetnum int tigetnum( - char *str) + const char *str) { return(*(int *)0); } #undef tigetstr_sp char *tigetstr_sp( - SCREEN *sp, - char *str) + SCREEN *sp, + const char *str) { return(*(char **)0); } #undef tigetstr char *tigetstr( - char *str) + const char *str) { return(*(char **)0); } /* ./tinfo/lib_tparm.c */ @@ -4333,29 +4589,42 @@ int _nc_tparm_err; #undef _nc_tparm_analyze int _nc_tparm_analyze( - const char *string, - char *p_is_s[9], - int *popcount) + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) { return(*(int *)0); } #undef tparm char *tparm( - char *string, + const char *string, ...) { return(*(char **)0); } #undef tiparm char *tiparm( - const char *string, + const char *string, ...) { return(*(char **)0); } +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + /* ./tinfo/lib_tputs.c */ #undef PC char PC; #undef ospeed -NCURSES_OSPEED ospeed; +short ospeed; #undef _nc_nulls_sent int _nc_nulls_sent; @@ -4366,7 +4635,7 @@ void _nc_set_no_padding( #undef delay_output_sp int delay_output_sp( - SCREEN *sp, + SCREEN *sp, int ms) { return(*(int *)0); } @@ -4386,7 +4655,7 @@ void _nc_flush(void) #undef _nc_outch_sp int _nc_outch_sp( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(int *)0); } @@ -4395,48 +4664,59 @@ int _nc_outch( int ch) { return(*(int *)0); } +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + #undef putp_sp int putp_sp( - SCREEN *sp, + SCREEN *sp, const char *string) { return(*(int *)0); } -#undef _nc_putp_sp -int _nc_putp_sp( - SCREEN *sp, - const char *name, +#undef putp +int putp( const char *string) { return(*(int *)0); } -#undef putp -int putp( +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, const char *string) { return(*(int *)0); } #undef _nc_putp int _nc_putp( - const char *name, + const char *name, const char *string) { return(*(int *)0); } #undef tputs_sp int tputs_sp( - SCREEN *sp, - const char *string, - int affcnt, + SCREEN *sp, + const char *string, + int affcnt, NCURSES_OUTC_sp outc) { return(*(int *)0); } #undef _nc_outc_wrapper int _nc_outc_wrapper( - SCREEN *sp, + SCREEN *sp, int c) { return(*(int *)0); } #undef tputs int tputs( - const char *string, - int affcnt, + const char *string, + int affcnt, int (*outc)( int p1)) { return(*(int *)0); } @@ -4450,6 +4730,11 @@ const char *_nc_tputs_trace = {0}; #undef _nc_outchars long _nc_outchars; +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + #undef trace void trace( const unsigned int tracelevel) @@ -4457,18 +4742,18 @@ void trace( #undef _tracef void _tracef( - const char *fmt, + const char *fmt, ...) { /* void */ } #undef _nc_retrace_bool NCURSES_BOOL _nc_retrace_bool( - NCURSES_BOOL code) + int code) { return(*(NCURSES_BOOL *)0); } #undef _nc_retrace_char char _nc_retrace_char( - char code) + int code) { return(*(char *)0); } #undef _nc_retrace_int @@ -4492,9 +4777,9 @@ const char *_nc_retrace_cptr( { return(*(const char **)0); } #undef _nc_retrace_cvoid_ptr -void *_nc_retrace_cvoid_ptr( - void *code) - { return(*(void **)0); } +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } #undef _nc_retrace_void_ptr void *_nc_retrace_void_ptr( @@ -4511,11 +4796,18 @@ WINDOW *_nc_retrace_win( WINDOW *code) { return(*(WINDOW **)0); } +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + /* ./trace/lib_traceatr.c */ #undef _traceattr2 char *_traceattr2( - int bufnum, + int bufnum, chtype newmode) { return(*(char **)0); } @@ -4536,13 +4828,13 @@ attr_t _nc_retrace_attr_t( #undef _nc_altcharset_name const char *_nc_altcharset_name( - attr_t attr, + attr_t attr, chtype ch) { return(*(const char **)0); } #undef _tracechtype2 char *_tracechtype2( - int bufnum, + int bufnum, chtype ch) { return(*(char **)0); } @@ -4558,7 +4850,7 @@ chtype _nc_retrace_chtype( #undef _tracecchar_t2 char *_tracecchar_t2( - int bufnum, + int bufnum, const cchar_t *ch) { return(*(char **)0); } @@ -4569,14 +4861,9 @@ char *_tracecchar_t( /* ./trace/lib_tracebits.c */ -typedef struct { - unsigned int val; - const char *name; -} BITNAMES; - #undef _nc_trace_ttymode char *_nc_trace_ttymode( - struct termios *tty) + const struct termios *tty) { return(*(char **)0); } #undef _nc_tracebits @@ -4587,7 +4874,7 @@ char *_nc_tracebits(void) #undef _nc_tracechar char *_nc_tracechar( - SCREEN *sp, + SCREEN *sp, int ch) { return(*(char **)0); } @@ -4600,7 +4887,7 @@ char *_tracechar( #undef _nc_get_tty_mode_sp int _nc_get_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -4611,7 +4898,7 @@ int _nc_get_tty_mode( #undef _nc_set_tty_mode_sp int _nc_set_tty_mode_sp( - SCREEN *sp, + SCREEN *sp, struct termios *buf) { return(*(int *)0); } @@ -4678,9 +4965,9 @@ int resetty(void) #undef _nc_timed_wait int _nc_timed_wait( - SCREEN *sp, - int mode, - int milliseconds, + SCREEN *sp, + int mode, + int milliseconds, int *timeleft) { return(*(int *)0); } @@ -4693,105 +4980,113 @@ char *_nc_first_name( #undef _nc_name_match int _nc_name_match( - const char *const namelst, - const char *const name, + const char *const namelst, + const char *const name, const char *const delim) { return(*(int *)0); } /* ./names.c */ #undef boolnames -char *const boolnames[] = {0}; +const char *const boolnames[] = {0}; #undef boolfnames -char *const boolfnames[] = {0}; +const char *const boolfnames[] = {0}; #undef numnames -char *const numnames[] = {0}; +const char *const numnames[] = {0}; #undef numfnames -char *const numfnames[] = {0}; +const char *const numfnames[] = {0}; #undef strnames -char *const strnames[] = {0}; +const char *const strnames[] = {0}; #undef strfnames -char *const strfnames[] = {0}; +const char *const strfnames[] = {0}; + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } /* ./tinfo/read_entry.c */ -#include <hashed_db.h> +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE2 *const tp) + { /* void */ } #undef _nc_read_termtype int _nc_read_termtype( - TERMTYPE *ptr, - char *buffer, + TERMTYPE2 *ptr, + char *buffer, int limit) { return(*(int *)0); } #undef _nc_read_file_entry int _nc_read_file_entry( - const char *const filename, - TERMTYPE *ptr) + const char *const filename, + TERMTYPE2 *ptr) + { return(*(int *)0); } + +#undef _nc_read_entry2 +int _nc_read_entry2( + const char *const name, + char *const filename, + TERMTYPE2 *const tp) { return(*(int *)0); } #undef _nc_read_entry int _nc_read_entry( - const char *const name, - char *const filename, + const char *const name, + char *const filename, TERMTYPE *const tp) { return(*(int *)0); } /* ./tinfo/read_termcap.c */ -#include <sys/types.h> - #undef _nc_read_termcap_entry int _nc_read_termcap_entry( - const char *const tn, - TERMTYPE *const tp) + const char *const tn, + TERMTYPE2 *const tp) { return(*(int *)0); } -/* ./tinfo/setbuf.c */ - -#undef _nc_set_buffer_sp -void _nc_set_buffer_sp( - SCREEN *sp, - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - -#undef _nc_set_buffer -void _nc_set_buffer( - FILE *ofp, - NCURSES_BOOL buffered) - { /* void */ } - /* ./tinfo/strings.c */ #undef _nc_str_init string_desc *_nc_str_init( - string_desc *dst, - char *src, + string_desc *dst, + char *src, size_t len) { return(*(string_desc **)0); } #undef _nc_str_null string_desc *_nc_str_null( - string_desc *dst, + string_desc *dst, size_t len) { return(*(string_desc **)0); } #undef _nc_str_copy string_desc *_nc_str_copy( - string_desc *dst, + string_desc *dst, string_desc *src) { return(*(string_desc **)0); } #undef _nc_safe_strcat NCURSES_BOOL _nc_safe_strcat( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } #undef _nc_safe_strcpy NCURSES_BOOL _nc_safe_strcpy( - string_desc *dst, + string_desc *dst, const char *src) { return(*(NCURSES_BOOL *)0); } @@ -4799,13 +5094,13 @@ NCURSES_BOOL _nc_safe_strcpy( #undef _nc_trace_buf char *_nc_trace_buf( - int bufnum, + int bufnum, size_t want) { return(*(char **)0); } #undef _nc_trace_bufcat char *_nc_trace_bufcat( - int bufnum, + int bufnum, const char *value) { return(*(char **)0); } @@ -4820,21 +5115,21 @@ void _nc_trace_tries( #undef _nc_expand_try char *_nc_expand_try( - TRIES *tree, - unsigned code, - int *count, + TRIES *tree, + unsigned code, + int *count, size_t len) { return(*(char **)0); } #undef _nc_remove_key int _nc_remove_key( - TRIES **tree, + TRIES **tree, unsigned code) { return(*(int *)0); } #undef _nc_remove_string int _nc_remove_string( - TRIES **tree, + TRIES **tree, const char *string) { return(*(int *)0); } @@ -4842,27 +5137,27 @@ int _nc_remove_string( #undef _nc_trim_sgr0 char *_nc_trim_sgr0( - TERMTYPE *tp) + TERMTYPE2 *tp) { return(*(char **)0); } /* ./unctrl.c */ #undef unctrl_sp -char *unctrl_sp( - SCREEN *sp, +const char *unctrl_sp( + SCREEN *sp, chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } #undef unctrl -char *unctrl( +const char *unctrl( chtype ch) - { return(*(char **)0); } + { return(*(const char **)0); } /* ./trace/visbuf.c */ #undef _nc_visbuf2 const char *_nc_visbuf2( - int bufnum, + int bufnum, const char *buf) { return(*(const char **)0); } @@ -4873,13 +5168,13 @@ const char *_nc_visbuf( #undef _nc_visbufn const char *_nc_visbufn( - const char *buf, + const char *buf, int len) { return(*(const char **)0); } #undef _nc_viswbuf2 const char *_nc_viswbuf2( - int bufnum, + int bufnum, const wchar_t *buf) { return(*(const char **)0); } @@ -4890,7 +5185,7 @@ const char *_nc_viswbuf( #undef _nc_viswbufn const char *_nc_viswbufn( - const wchar_t *buf, + const wchar_t *buf, int len) { return(*(const char **)0); } @@ -4901,14 +5196,14 @@ const char *_nc_viswibuf( #undef _nc_viscbuf2 const char *_nc_viscbuf2( - int bufnum, - const cchar_t *buf, + int bufnum, + const cchar_t *buf, int len) { return(*(const char **)0); } #undef _nc_viscbuf const char *_nc_viscbuf( - const cchar_t *buf, + const cchar_t *buf, int len) { return(*(const char **)0); } @@ -4916,7 +5211,7 @@ const char *_nc_viscbuf( #undef _nc_init_entry void _nc_init_entry( - TERMTYPE *const tp) + ENTRY *const tp) { /* void */ } #undef _nc_copy_entry @@ -4926,34 +5221,34 @@ ENTRY *_nc_copy_entry( #undef _nc_save_str char *_nc_save_str( - const char *const string) + const char *string) { return(*(char **)0); } #undef _nc_wrap_entry void _nc_wrap_entry( - ENTRY *const ep, + ENTRY *const ep, NCURSES_BOOL copy_strings) { /* void */ } #undef _nc_merge_entry void _nc_merge_entry( - TERMTYPE *const to, - TERMTYPE *const from) + ENTRY *const target, + ENTRY *const source) { /* void */ } /* ./tinfo/captoinfo.c */ #undef _nc_captoinfo char *_nc_captoinfo( - const char *cap, - const char *s, + const char *cap, + const char *s, int const parameterized) { return(*(char **)0); } #undef _nc_infotocap char *_nc_infotocap( - const char *cap, - const char *str, + const char *cap, + const char *str, int const parameterized) { return(*(char **)0); } @@ -4961,8 +5256,8 @@ char *_nc_infotocap( #undef _nc_tic_expand char *_nc_tic_expand( - const char *srcp, - NCURSES_BOOL tic_format, + const char *srcp, + NCURSES_BOOL tic_format, int numbers) { return(*(char **)0); } @@ -4970,43 +5265,37 @@ char *_nc_tic_expand( #undef _nc_check_termtype2 void (*_nc_check_termtype2)( - TERMTYPE *p1, + TERMTYPE2 *p1, NCURSES_BOOL p2); -#undef _nc_check_termtype -void (*_nc_check_termtype)( - TERMTYPE *p1); #undef _nc_entry_match NCURSES_BOOL _nc_entry_match( - char *n1, + char *n1, char *n2) { return(*(NCURSES_BOOL *)0); } #undef _nc_read_entry_source void _nc_read_entry_source( - FILE *fp, - char *buf, - int literal, - NCURSES_BOOL silent, + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, NCURSES_BOOL (*hook)( ENTRY *p1)) { /* void */ } #undef _nc_resolve_uses2 int _nc_resolve_uses2( - NCURSES_BOOL fullresolve, + NCURSES_BOOL fullresolve, NCURSES_BOOL literal) { return(*(int *)0); } -#undef _nc_resolve_uses -int _nc_resolve_uses( - NCURSES_BOOL fullresolve) - { return(*(int *)0); } - /* ./tinfo/comp_scan.c */ #undef _nc_syntax int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; #undef _nc_curr_file_pos long _nc_curr_file_pos; #undef _nc_comment_start @@ -5022,7 +5311,7 @@ NCURSES_BOOL _nc_disable_period; #undef _nc_reset_input void _nc_reset_input( - FILE *fp, + FILE *fp, char *buf) { /* void */ } @@ -5033,7 +5322,7 @@ int _nc_get_token( #undef _nc_trans_string int _nc_trans_string( - char *ptr, + char *ptr, char *last) { return(*(int *)0); } @@ -5051,34 +5340,37 @@ void _nc_panic_mode( #undef _nc_parse_entry int _nc_parse_entry( - struct entry *entryp, - int literal, + ENTRY *entryp, + int literal, NCURSES_BOOL silent) { return(*(int *)0); } #undef _nc_capcmp int _nc_capcmp( - const char *s, + const char *s, const char *t) { return(*(int *)0); } -typedef struct { - const char *from; - const char *to; -} assoc; - /* ./tinfo/write_entry.c */ #undef _nc_set_writedir void _nc_set_writedir( - char *dir) + const char *dir) { /* void */ } #undef _nc_write_entry void _nc_write_entry( - TERMTYPE *const tp) + TERMTYPE2 *const tp) { /* void */ } +#undef _nc_write_object +int _nc_write_object( + TERMTYPE2 *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + #undef _nc_tic_written int _nc_tic_written(void) { return(*(int *)0); } @@ -5087,14 +5379,14 @@ int _nc_tic_written(void) #undef define_key_sp int define_key_sp( - SCREEN *sp, - const char *str, + SCREEN *sp, + const char *str, int keycode) { return(*(int *)0); } #undef define_key int define_key( - const char *str, + const char *str, int keycode) { return(*(int *)0); } @@ -5108,7 +5400,7 @@ void _nc_hashed_db(void) #undef key_defined_sp int key_defined_sp( - SCREEN *sp, + SCREEN *sp, const char *str) { return(*(int *)0); } @@ -5121,14 +5413,14 @@ int key_defined( #undef keybound_sp char *keybound_sp( - SCREEN *sp, - int code, + SCREEN *sp, + int code, int count) { return(*(char **)0); } #undef keybound char *keybound( - int code, + int code, int count) { return(*(char **)0); } @@ -5136,14 +5428,14 @@ char *keybound( #undef keyok_sp int keyok_sp( - SCREEN *sp, - int c, + SCREEN *sp, + int c, NCURSES_BOOL flag) { return(*(int *)0); } #undef keyok int keyok( - int c, + int c, NCURSES_BOOL flag) { return(*(int *)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-ltic b/deps/ncurses-6.3/ncurses/llib-ltic new file mode 100644 index 0000000..0037884 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-ltic @@ -0,0 +1,203 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2012-2016,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: Thomas E. Dickey 2012-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/alloc_entry.c */ + +#include <curses.priv.h> + +#undef _nc_init_entry +void _nc_init_entry( + ENTRY *const tp) + { /* void */ } + +#undef _nc_copy_entry +ENTRY *_nc_copy_entry( + ENTRY *oldp) + { return(*(ENTRY **)0); } + +#undef _nc_save_str +char *_nc_save_str( + const char *string) + { return(*(char **)0); } + +#undef _nc_wrap_entry +void _nc_wrap_entry( + ENTRY *const ep, + NCURSES_BOOL copy_strings) + { /* void */ } + +#undef _nc_merge_entry +void _nc_merge_entry( + ENTRY *const target, + ENTRY *const source) + { /* void */ } + +/* ./tinfo/captoinfo.c */ + +#undef _nc_captoinfo +char *_nc_captoinfo( + const char *cap, + const char *s, + int const parameterized) + { return(*(char **)0); } + +#undef _nc_infotocap +char *_nc_infotocap( + const char *cap, + const char *str, + int const parameterized) + { return(*(char **)0); } + +/* ./tinfo/comp_expand.c */ + +#undef _nc_tic_expand +char *_nc_tic_expand( + const char *srcp, + NCURSES_BOOL tic_format, + int numbers) + { return(*(char **)0); } + +/* ./tinfo/comp_parse.c */ + +#undef _nc_check_termtype2 +void (*_nc_check_termtype2)( + TERMTYPE *p1, + NCURSES_BOOL p2); + +#undef _nc_entry_match +NCURSES_BOOL _nc_entry_match( + char *n1, + char *n2) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_read_entry_source +void _nc_read_entry_source( + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, + NCURSES_BOOL (*hook)( + ENTRY *p1)) + { /* void */ } + +#undef _nc_resolve_uses2 +int _nc_resolve_uses2( + NCURSES_BOOL fullresolve, + NCURSES_BOOL literal) + { return(*(int *)0); } + +/* ./tinfo/comp_scan.c */ + +#undef _nc_syntax +int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; +#undef _nc_curr_file_pos +long _nc_curr_file_pos; +#undef _nc_comment_start +long _nc_comment_start; +#undef _nc_comment_end +long _nc_comment_end; +#undef _nc_start_line +long _nc_start_line; +#undef _nc_curr_token +struct token _nc_curr_token; +#undef _nc_disable_period +NCURSES_BOOL _nc_disable_period; + +#undef _nc_reset_input +void _nc_reset_input( + FILE *fp, + char *buf) + { /* void */ } + +#undef _nc_get_token +int _nc_get_token( + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_trans_string +int _nc_trans_string( + char *ptr, + char *last) + { return(*(int *)0); } + +#undef _nc_push_token +void _nc_push_token( + int tokclass) + { /* void */ } + +#undef _nc_panic_mode +void _nc_panic_mode( + char ch) + { /* void */ } + +/* ./tinfo/parse_entry.c */ + +#undef _nc_parse_entry +int _nc_parse_entry( + ENTRY *entryp, + int literal, + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_capcmp +int _nc_capcmp( + const char *s, + const char *t) + { return(*(int *)0); } + +/* ./tinfo/write_entry.c */ + +#undef _nc_set_writedir +void _nc_set_writedir( + const char *dir) + { /* void */ } + +#undef _nc_write_entry +void _nc_write_entry( + TERMTYPE *const tp) + { /* void */ } + +#undef _nc_write_object +int _nc_write_object( + TERMTYPE *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + +#undef _nc_tic_written +int _nc_tic_written(void) + { return(*(int *)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-ltict b/deps/ncurses-6.3/ncurses/llib-ltict new file mode 100644 index 0000000..b9895bc --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-ltict @@ -0,0 +1,203 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2013-2016,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: Thomas E. Dickey 2013-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/alloc_entry.c */ + +#include <curses.priv.h> + +#undef _nc_init_entry +void _nc_init_entry( + ENTRY *const tp) + { /* void */ } + +#undef _nc_copy_entry +ENTRY *_nc_copy_entry( + ENTRY *oldp) + { return(*(ENTRY **)0); } + +#undef _nc_save_str +char *_nc_save_str( + const char *string) + { return(*(char **)0); } + +#undef _nc_wrap_entry +void _nc_wrap_entry( + ENTRY *const ep, + NCURSES_BOOL copy_strings) + { /* void */ } + +#undef _nc_merge_entry +void _nc_merge_entry( + ENTRY *const target, + ENTRY *const source) + { /* void */ } + +/* ./tinfo/captoinfo.c */ + +#undef _nc_captoinfo +char *_nc_captoinfo( + const char *cap, + const char *s, + int const parameterized) + { return(*(char **)0); } + +#undef _nc_infotocap +char *_nc_infotocap( + const char *cap, + const char *str, + int const parameterized) + { return(*(char **)0); } + +/* ./tinfo/comp_expand.c */ + +#undef _nc_tic_expand +char *_nc_tic_expand( + const char *srcp, + NCURSES_BOOL tic_format, + int numbers) + { return(*(char **)0); } + +/* ./tinfo/comp_parse.c */ + +#undef _nc_check_termtype2 +void (*_nc_check_termtype2)( + TERMTYPE *p1, + NCURSES_BOOL p2); + +#undef _nc_entry_match +NCURSES_BOOL _nc_entry_match( + char *n1, + char *n2) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_read_entry_source +void _nc_read_entry_source( + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, + NCURSES_BOOL (*hook)( + ENTRY *p1)) + { /* void */ } + +#undef _nc_resolve_uses2 +int _nc_resolve_uses2( + NCURSES_BOOL fullresolve, + NCURSES_BOOL literal) + { return(*(int *)0); } + +/* ./tinfo/comp_scan.c */ + +#undef _nc_syntax +int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; +#undef _nc_curr_file_pos +long _nc_curr_file_pos; +#undef _nc_comment_start +long _nc_comment_start; +#undef _nc_comment_end +long _nc_comment_end; +#undef _nc_start_line +long _nc_start_line; +#undef _nc_curr_token +struct token _nc_curr_token; +#undef _nc_disable_period +NCURSES_BOOL _nc_disable_period; + +#undef _nc_reset_input +void _nc_reset_input( + FILE *fp, + char *buf) + { /* void */ } + +#undef _nc_get_token +int _nc_get_token( + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_trans_string +int _nc_trans_string( + char *ptr, + char *last) + { return(*(int *)0); } + +#undef _nc_push_token +void _nc_push_token( + int tokclass) + { /* void */ } + +#undef _nc_panic_mode +void _nc_panic_mode( + char ch) + { /* void */ } + +/* ./tinfo/parse_entry.c */ + +#undef _nc_parse_entry +int _nc_parse_entry( + ENTRY *entryp, + int literal, + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_capcmp +int _nc_capcmp( + const char *s, + const char *t) + { return(*(int *)0); } + +/* ./tinfo/write_entry.c */ + +#undef _nc_set_writedir +void _nc_set_writedir( + const char *dir) + { /* void */ } + +#undef _nc_write_entry +void _nc_write_entry( + TERMTYPE *const tp) + { /* void */ } + +#undef _nc_write_object +int _nc_write_object( + TERMTYPE *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + +#undef _nc_tic_written +int _nc_tic_written(void) + { return(*(int *)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-ltictw b/deps/ncurses-6.3/ncurses/llib-ltictw new file mode 100644 index 0000000..2e407fd --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-ltictw @@ -0,0 +1,203 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2012-2016,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: Thomas E. Dickey 2012-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/alloc_entry.c */ + +#include <curses.priv.h> + +#undef _nc_init_entry +void _nc_init_entry( + ENTRY *const tp) + { /* void */ } + +#undef _nc_copy_entry +ENTRY *_nc_copy_entry( + ENTRY *oldp) + { return(*(ENTRY **)0); } + +#undef _nc_save_str +char *_nc_save_str( + const char *string) + { return(*(char **)0); } + +#undef _nc_wrap_entry +void _nc_wrap_entry( + ENTRY *const ep, + NCURSES_BOOL copy_strings) + { /* void */ } + +#undef _nc_merge_entry +void _nc_merge_entry( + ENTRY *const target, + ENTRY *const source) + { /* void */ } + +/* ./tinfo/captoinfo.c */ + +#undef _nc_captoinfo +char *_nc_captoinfo( + const char *cap, + const char *s, + int const parameterized) + { return(*(char **)0); } + +#undef _nc_infotocap +char *_nc_infotocap( + const char *cap, + const char *str, + int const parameterized) + { return(*(char **)0); } + +/* ./tinfo/comp_expand.c */ + +#undef _nc_tic_expand +char *_nc_tic_expand( + const char *srcp, + NCURSES_BOOL tic_format, + int numbers) + { return(*(char **)0); } + +/* ./tinfo/comp_parse.c */ + +#undef _nc_check_termtype2 +void (*_nc_check_termtype2)( + TERMTYPE2 *p1, + NCURSES_BOOL p2); + +#undef _nc_entry_match +NCURSES_BOOL _nc_entry_match( + char *n1, + char *n2) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_read_entry_source +void _nc_read_entry_source( + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, + NCURSES_BOOL (*hook)( + ENTRY *p1)) + { /* void */ } + +#undef _nc_resolve_uses2 +int _nc_resolve_uses2( + NCURSES_BOOL fullresolve, + NCURSES_BOOL literal) + { return(*(int *)0); } + +/* ./tinfo/comp_scan.c */ + +#undef _nc_syntax +int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; +#undef _nc_curr_file_pos +long _nc_curr_file_pos; +#undef _nc_comment_start +long _nc_comment_start; +#undef _nc_comment_end +long _nc_comment_end; +#undef _nc_start_line +long _nc_start_line; +#undef _nc_curr_token +struct token _nc_curr_token; +#undef _nc_disable_period +NCURSES_BOOL _nc_disable_period; + +#undef _nc_reset_input +void _nc_reset_input( + FILE *fp, + char *buf) + { /* void */ } + +#undef _nc_get_token +int _nc_get_token( + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_trans_string +int _nc_trans_string( + char *ptr, + char *last) + { return(*(int *)0); } + +#undef _nc_push_token +void _nc_push_token( + int tokclass) + { /* void */ } + +#undef _nc_panic_mode +void _nc_panic_mode( + char ch) + { /* void */ } + +/* ./tinfo/parse_entry.c */ + +#undef _nc_parse_entry +int _nc_parse_entry( + ENTRY *entryp, + int literal, + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_capcmp +int _nc_capcmp( + const char *s, + const char *t) + { return(*(int *)0); } + +/* ./tinfo/write_entry.c */ + +#undef _nc_set_writedir +void _nc_set_writedir( + const char *dir) + { /* void */ } + +#undef _nc_write_entry +void _nc_write_entry( + TERMTYPE2 *const tp) + { /* void */ } + +#undef _nc_write_object +int _nc_write_object( + TERMTYPE2 *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + +#undef _nc_tic_written +int _nc_tic_written(void) + { return(*(int *)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-lticw b/deps/ncurses-6.3/ncurses/llib-lticw new file mode 100644 index 0000000..2e407fd --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-lticw @@ -0,0 +1,203 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2012-2016,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: Thomas E. Dickey 2012-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/alloc_entry.c */ + +#include <curses.priv.h> + +#undef _nc_init_entry +void _nc_init_entry( + ENTRY *const tp) + { /* void */ } + +#undef _nc_copy_entry +ENTRY *_nc_copy_entry( + ENTRY *oldp) + { return(*(ENTRY **)0); } + +#undef _nc_save_str +char *_nc_save_str( + const char *string) + { return(*(char **)0); } + +#undef _nc_wrap_entry +void _nc_wrap_entry( + ENTRY *const ep, + NCURSES_BOOL copy_strings) + { /* void */ } + +#undef _nc_merge_entry +void _nc_merge_entry( + ENTRY *const target, + ENTRY *const source) + { /* void */ } + +/* ./tinfo/captoinfo.c */ + +#undef _nc_captoinfo +char *_nc_captoinfo( + const char *cap, + const char *s, + int const parameterized) + { return(*(char **)0); } + +#undef _nc_infotocap +char *_nc_infotocap( + const char *cap, + const char *str, + int const parameterized) + { return(*(char **)0); } + +/* ./tinfo/comp_expand.c */ + +#undef _nc_tic_expand +char *_nc_tic_expand( + const char *srcp, + NCURSES_BOOL tic_format, + int numbers) + { return(*(char **)0); } + +/* ./tinfo/comp_parse.c */ + +#undef _nc_check_termtype2 +void (*_nc_check_termtype2)( + TERMTYPE2 *p1, + NCURSES_BOOL p2); + +#undef _nc_entry_match +NCURSES_BOOL _nc_entry_match( + char *n1, + char *n2) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_read_entry_source +void _nc_read_entry_source( + FILE *fp, + char *buf, + int literal, + NCURSES_BOOL silent, + NCURSES_BOOL (*hook)( + ENTRY *p1)) + { /* void */ } + +#undef _nc_resolve_uses2 +int _nc_resolve_uses2( + NCURSES_BOOL fullresolve, + NCURSES_BOOL literal) + { return(*(int *)0); } + +/* ./tinfo/comp_scan.c */ + +#undef _nc_syntax +int _nc_syntax; +#undef _nc_strict_bsd +int _nc_strict_bsd; +#undef _nc_curr_file_pos +long _nc_curr_file_pos; +#undef _nc_comment_start +long _nc_comment_start; +#undef _nc_comment_end +long _nc_comment_end; +#undef _nc_start_line +long _nc_start_line; +#undef _nc_curr_token +struct token _nc_curr_token; +#undef _nc_disable_period +NCURSES_BOOL _nc_disable_period; + +#undef _nc_reset_input +void _nc_reset_input( + FILE *fp, + char *buf) + { /* void */ } + +#undef _nc_get_token +int _nc_get_token( + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_trans_string +int _nc_trans_string( + char *ptr, + char *last) + { return(*(int *)0); } + +#undef _nc_push_token +void _nc_push_token( + int tokclass) + { /* void */ } + +#undef _nc_panic_mode +void _nc_panic_mode( + char ch) + { /* void */ } + +/* ./tinfo/parse_entry.c */ + +#undef _nc_parse_entry +int _nc_parse_entry( + ENTRY *entryp, + int literal, + NCURSES_BOOL silent) + { return(*(int *)0); } + +#undef _nc_capcmp +int _nc_capcmp( + const char *s, + const char *t) + { return(*(int *)0); } + +/* ./tinfo/write_entry.c */ + +#undef _nc_set_writedir +void _nc_set_writedir( + const char *dir) + { /* void */ } + +#undef _nc_write_entry +void _nc_write_entry( + TERMTYPE2 *const tp) + { /* void */ } + +#undef _nc_write_object +int _nc_write_object( + TERMTYPE2 *tp, + char *buffer, + unsigned *offset, + unsigned limit) + { return(*(int *)0); } + +#undef _nc_tic_written +int _nc_tic_written(void) + { return(*(int *)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-ltinfo b/deps/ncurses-6.3/ncurses/llib-ltinfo new file mode 100644 index 0000000..5dabf89 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-ltinfo @@ -0,0 +1,1546 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2012-2016,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: Thomas E. Dickey 2012-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/access.c */ + +#include <curses.priv.h> + +#undef _nc_rootname +char *_nc_rootname( + char *path) + { return(*(char **)0); } + +#undef _nc_is_abs_path +NCURSES_BOOL _nc_is_abs_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_pathlast +unsigned _nc_pathlast( + const char *path) + { return(*(unsigned *)0); } + +#undef _nc_basename +char *_nc_basename( + char *path) + { return(*(char **)0); } + +#undef _nc_access +int _nc_access( + const char *path, + int mode) + { return(*(int *)0); } + +#undef _nc_is_dir_path +NCURSES_BOOL _nc_is_dir_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_is_file_path +NCURSES_BOOL _nc_is_file_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_env_access +int _nc_env_access(void) + { return(*(int *)0); } + +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + +/* ./tinfo/add_tries.c */ + +#undef _nc_add_to_try +int _nc_add_to_try( + TRIES **tree, + const char *str, + unsigned code) + { return(*(int *)0); } + +/* ./tinfo/alloc_ttype.c */ + +#undef _nc_align_termtype +void _nc_align_termtype( + TERMTYPE *to, + TERMTYPE *from) + { /* void */ } + +#undef _nc_copy_termtype +void _nc_copy_termtype( + TERMTYPE *dst, + const TERMTYPE *src) + { /* void */ } + +/* ./codes.c */ + +#undef boolcodes +const char *const boolcodes[] = {0}; +#undef numcodes +const char *const numcodes[] = {0}; +#undef strcodes +const char *const strcodes[] = {0}; + +/* ./comp_captab.c */ + +#undef _nc_get_table +const struct name_table_entry *_nc_get_table( + NCURSES_BOOL termcap) + { return(*(const struct name_table_entry **)0); } + +#undef _nc_get_hash_table +const HashValue *_nc_get_hash_table( + NCURSES_BOOL termcap) + { return(*(const HashValue **)0); } + +#undef _nc_get_alias_table +const struct alias *_nc_get_alias_table( + NCURSES_BOOL termcap) + { return(*(const struct alias **)0); } + +#undef _nc_get_hash_info +const HashData *_nc_get_hash_info( + NCURSES_BOOL termcap) + { return(*(const HashData **)0); } + +/* ./tinfo/comp_error.c */ + +#undef _nc_suppress_warnings +NCURSES_BOOL _nc_suppress_warnings; +#undef _nc_curr_line +int _nc_curr_line; +#undef _nc_curr_col +int _nc_curr_col; + +#undef _nc_get_source +const char *_nc_get_source(void) + { return(*(const char **)0); } + +#undef _nc_set_source +void _nc_set_source( + const char *const name) + { /* void */ } + +#undef _nc_set_type +void _nc_set_type( + const char *const name) + { /* void */ } + +#undef _nc_get_type +void _nc_get_type( + char *name) + { /* void */ } + +#undef _nc_warning +void _nc_warning( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_err_abort +void _nc_err_abort( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_syserr_abort +void _nc_syserr_abort( + const char *const fmt, + ...) + { /* void */ } + +/* ./tinfo/comp_hash.c */ + +#undef _nc_find_entry +struct name_table_entry const *_nc_find_entry( + const char *string, + const HashValue *hash_table) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_type_entry +struct name_table_entry const *_nc_find_type_entry( + const char *string, + int type, + NCURSES_BOOL termcap) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + +/* ./tinfo/db_iterator.c */ + +#undef _nc_tic_dir +const char *_nc_tic_dir( + const char *path) + { return(*(const char **)0); } + +#undef _nc_keep_tic_dir +void _nc_keep_tic_dir( + const char *path) + { /* void */ } + +#undef _nc_last_db +void _nc_last_db(void) + { /* void */ } + +#undef _nc_next_db +const char *_nc_next_db( + DBDIRS *state, + int *offset) + { return(*(const char **)0); } + +#undef _nc_first_db +void _nc_first_db( + DBDIRS *state, + int *offset) + { /* void */ } + +/* ./tinfo/doalloc.c */ + +#undef _nc_doalloc +void *_nc_doalloc( + void *oldp, + size_t amount) + { return(*(void **)0); } + +/* ./tinfo/entries.c */ + +#undef _nc_head +ENTRY *_nc_head; +#undef _nc_tail +ENTRY *_nc_tail; + +#undef _nc_free_entry +void _nc_free_entry( + ENTRY *headp, + TERMTYPE *tterm) + { /* void */ } + +#undef _nc_free_entries +void _nc_free_entries( + ENTRY *headp) + { /* void */ } + +#undef _nc_leaks_tinfo +void _nc_leaks_tinfo(void) + { /* void */ } + +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + +/* ./fallback.c */ + +#undef _nc_fallback +const TERMTYPE *_nc_fallback( + const char *name) + { return(*(const TERMTYPE **)0); } + +/* ./tinfo/free_ttype.c */ + +#undef _nc_free_termtype +void _nc_free_termtype( + TERMTYPE *ptr) + { /* void */ } + +#undef _nc_user_definable +NCURSES_BOOL _nc_user_definable; + +#undef use_extended_names +int use_extended_names( + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/getenv_num.c */ + +#undef _nc_getenv_num +int _nc_getenv_num( + const char *name) + { return(*(int *)0); } + +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + +/* ./tinfo/home_terminfo.c */ + +#undef _nc_home_terminfo +char *_nc_home_terminfo(void) + { return(*(char **)0); } + +/* ./tinfo/init_keytry.c */ + +#undef _nc_init_keytry +void _nc_init_keytry( + SCREEN *sp) + { /* void */ } + +/* ./tinfo/lib_acs.c */ + +#undef acs_map +chtype acs_map[128]; + +#undef _nc_init_acs_sp +void _nc_init_acs_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_init_acs +void _nc_init_acs(void) + { /* void */ } + +/* ./tinfo/lib_baudrate.c */ + +struct speed { + int given_speed; + int actual_speed; +}; + +#undef _nc_baudrate +int _nc_baudrate( + int OSpeed) + { return(*(int *)0); } + +#undef _nc_ospeed +int _nc_ospeed( + int BaudRate) + { return(*(int *)0); } + +#undef baudrate_sp +int baudrate_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef baudrate +int baudrate(void) + { return(*(int *)0); } + +/* ./tinfo/lib_cur_term.c */ + +#undef cur_term +TERMINAL *cur_term; + +#undef set_curterm_sp +TERMINAL *set_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef set_curterm +TERMINAL *set_curterm( + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef del_curterm_sp +int del_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(int *)0); } + +#undef del_curterm +int del_curterm( + TERMINAL *termp) + { return(*(int *)0); } + +/* ./tinfo/lib_data.c */ + +#undef stdscr +WINDOW *stdscr; +#undef curscr +WINDOW *curscr; +#undef newscr +WINDOW *newscr; +#undef _nc_screen_chain +SCREEN *_nc_screen_chain; +#undef SP +SCREEN *SP; +#undef _nc_globals +NCURSES_GLOBALS _nc_globals; +#undef _nc_prescreen +NCURSES_PRESCREEN _nc_prescreen; + +#undef _nc_screen_of +SCREEN *_nc_screen_of( + WINDOW *win) + { return(*(SCREEN **)0); } + +/* ./tinfo/lib_has_cap.c */ + +#undef has_ic_sp +NCURSES_BOOL has_ic_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_ic +NCURSES_BOOL has_ic(void) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il_sp +NCURSES_BOOL has_il_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il +NCURSES_BOOL has_il(void) + { return(*(NCURSES_BOOL *)0); } + +/* ./tinfo/lib_kernel.c */ + +#undef erasechar_sp +char erasechar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef erasechar +char erasechar(void) + { return(*(char *)0); } + +#undef killchar_sp +char killchar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef killchar +char killchar(void) + { return(*(char *)0); } + +#undef flushinp_sp +int flushinp_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef flushinp +int flushinp(void) + { return(*(int *)0); } + +/* ./lib_keyname.c */ + +struct kn { short offset; int code; }; + +#undef keyname_sp +const char *keyname_sp( + SCREEN *sp, + int c) + { return(*(const char **)0); } + +#undef keyname +const char *keyname( + int c) + { return(*(const char **)0); } + +/* ./tinfo/lib_longname.c */ + +#undef longname_sp +char *longname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef longname +char *longname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_napms.c */ + +#undef napms_sp +int napms_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef napms +int napms( + int ms) + { return(*(int *)0); } + +/* ./tinfo/lib_options.c */ + +#undef idlok +int idlok( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef idcok +void idcok( + WINDOW *win, + NCURSES_BOOL flag) + { /* void */ } + +#undef halfdelay_sp +int halfdelay_sp( + SCREEN *sp, + int t) + { return(*(int *)0); } + +#undef halfdelay +int halfdelay( + int t) + { return(*(int *)0); } + +#undef nodelay +int nodelay( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef notimeout +int notimeout( + WINDOW *win, + NCURSES_BOOL f) + { return(*(int *)0); } + +#undef wtimeout +void wtimeout( + WINDOW *win, + int delay) + { /* void */ } + +#undef keypad +int keypad( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef meta +int meta( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef curs_set_sp +int curs_set_sp( + SCREEN *sp, + int vis) + { return(*(int *)0); } + +#undef curs_set +int curs_set( + int vis) + { return(*(int *)0); } + +#undef typeahead_sp +int typeahead_sp( + SCREEN *sp, + int fd) + { return(*(int *)0); } + +#undef typeahead +int typeahead( + int fd) + { return(*(int *)0); } + +#undef has_key_sp +int has_key_sp( + SCREEN *sp, + int keycode) + { return(*(int *)0); } + +#undef has_key +int has_key( + int keycode) + { return(*(int *)0); } + +#undef _nc_putp_flush_sp +int _nc_putp_flush_sp( + SCREEN *sp, + const char *name, + const char *value) + { return(*(int *)0); } + +#undef _nc_keypad +int _nc_keypad( + SCREEN *sp, + int flag) + { return(*(int *)0); } + +/* ./tinfo/lib_raw.c */ + +#undef raw_sp +int raw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef raw +int raw(void) + { return(*(int *)0); } + +#undef cbreak_sp +int cbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef cbreak +int cbreak(void) + { return(*(int *)0); } + +#undef qiflush_sp +void qiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef qiflush +void qiflush(void) + { /* void */ } + +#undef noraw_sp +int noraw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef noraw +int noraw(void) + { return(*(int *)0); } + +#undef nocbreak_sp +int nocbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef nocbreak +int nocbreak(void) + { return(*(int *)0); } + +#undef noqiflush_sp +void noqiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef noqiflush +void noqiflush(void) + { /* void */ } + +#undef intrflush_sp +int intrflush_sp( + SCREEN *sp, + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef intrflush +int intrflush( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/lib_setup.c */ + +#undef ttytype +char ttytype[256]; +#undef LINES +int LINES; +#undef COLS +int COLS; +#undef TABSIZE +int TABSIZE; + +#undef set_tabsize_sp +int set_tabsize_sp( + SCREEN *sp, + int value) + { return(*(int *)0); } + +#undef set_tabsize +int set_tabsize( + int value) + { return(*(int *)0); } + +#undef _nc_handle_sigwinch +int _nc_handle_sigwinch( + SCREEN *sp) + { return(*(int *)0); } + +#undef use_env_sp +void use_env_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_env +void use_env( + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + +#undef _nc_get_screensize +void _nc_get_screensize( + SCREEN *sp, + int *linep, + int *colp) + { /* void */ } + +#undef _nc_update_screensize +void _nc_update_screensize( + SCREEN *sp) + { /* void */ } + +#undef _nc_setup_tinfo +int _nc_setup_tinfo( + const char *const tn, + TERMTYPE *const tp) + { return(*(int *)0); } + +#undef _nc_tinfo_cmdch +void _nc_tinfo_cmdch( + TERMINAL *termp, + int proto) + { /* void */ } + +#undef _nc_get_locale +char *_nc_get_locale(void) + { return(*(char **)0); } + +#undef _nc_unicode_locale +int _nc_unicode_locale(void) + { return(*(int *)0); } + +#undef _nc_locale_breaks_acs +int _nc_locale_breaks_acs( + TERMINAL *termp) + { return(*(int *)0); } + +#undef _nc_setupterm +int _nc_setupterm( + const char *tname, + int Filedes, + int *errret, + int reuse) + { return(*(int *)0); } + +#undef new_prescr +SCREEN *new_prescr(void) + { return(*(SCREEN **)0); } + +#undef setupterm +int setupterm( + const char *tname, + int Filedes, + int *errret) + { return(*(int *)0); } + +/* ./tinfo/lib_termcap.c */ + +#undef UP +char *UP; +#undef BC +char *BC; + +#undef tgetent_sp +int tgetent_sp( + SCREEN *sp, + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetent +int tgetent( + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetflag_sp +int tgetflag_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetflag +int tgetflag( + const char *id) + { return(*(int *)0); } + +#undef tgetnum_sp +int tgetnum_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetnum +int tgetnum( + const char *id) + { return(*(int *)0); } + +#undef tgetstr_sp +char *tgetstr_sp( + SCREEN *sp, + const char *id, + char **area) + { return(*(char **)0); } + +#undef tgetstr +char *tgetstr( + const char *id, + char **area) + { return(*(char **)0); } + +/* ./tinfo/lib_termname.c */ + +#undef termname_sp +char *termname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef termname +char *termname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_tgoto.c */ + +#undef tgoto +char *tgoto( + const char *string, + int x, + int y) + { return(*(char **)0); } + +/* ./tinfo/lib_ti.c */ + +#undef tigetflag_sp +int tigetflag_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetflag +int tigetflag( + const char *str) + { return(*(int *)0); } + +#undef tigetnum_sp +int tigetnum_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetnum +int tigetnum( + const char *str) + { return(*(int *)0); } + +#undef tigetstr_sp +char *tigetstr_sp( + SCREEN *sp, + const char *str) + { return(*(char **)0); } + +#undef tigetstr +char *tigetstr( + const char *str) + { return(*(char **)0); } + +/* ./tinfo/lib_tparm.c */ + +#undef _nc_tparm_err +int _nc_tparm_err; + +#undef _nc_tparm_analyze +int _nc_tparm_analyze( + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) + { return(*(int *)0); } + +#undef tparm +char *tparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef tiparm +char *tiparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + +/* ./tinfo/lib_tputs.c */ + +#undef PC +char PC; +#undef ospeed +short ospeed; +#undef _nc_nulls_sent +int _nc_nulls_sent; + +#undef _nc_set_no_padding +void _nc_set_no_padding( + SCREEN *sp) + { /* void */ } + +#undef delay_output_sp +int delay_output_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef delay_output +int delay_output( + int ms) + { return(*(int *)0); } + +#undef _nc_flush_sp +void _nc_flush_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_flush +void _nc_flush(void) + { /* void */ } + +#undef _nc_outch_sp +int _nc_outch_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_outch +int _nc_outch( + int ch) + { return(*(int *)0); } + +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + +#undef putp_sp +int putp_sp( + SCREEN *sp, + const char *string) + { return(*(int *)0); } + +#undef putp +int putp( + const char *string) + { return(*(int *)0); } + +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, + const char *string) + { return(*(int *)0); } + +#undef _nc_putp +int _nc_putp( + const char *name, + const char *string) + { return(*(int *)0); } + +#undef tputs_sp +int tputs_sp( + SCREEN *sp, + const char *string, + int affcnt, + NCURSES_OUTC_sp outc) + { return(*(int *)0); } + +#undef _nc_outc_wrapper +int _nc_outc_wrapper( + SCREEN *sp, + int c) + { return(*(int *)0); } + +#undef tputs +int tputs( + const char *string, + int affcnt, + int (*outc)( + int p1)) + { return(*(int *)0); } + +/* ./trace/lib_trace.c */ + +#undef _nc_tracing +unsigned _nc_tracing; +#undef _nc_tputs_trace +const char *_nc_tputs_trace = {0}; +#undef _nc_outchars +long _nc_outchars; + +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + +#undef trace +void trace( + const unsigned int tracelevel) + { /* void */ } + +#undef _tracef +void _tracef( + const char *fmt, + ...) + { /* void */ } + +#undef _nc_retrace_bool +NCURSES_BOOL _nc_retrace_bool( + int code) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_retrace_char +char _nc_retrace_char( + int code) + { return(*(char *)0); } + +#undef _nc_retrace_int +int _nc_retrace_int( + int code) + { return(*(int *)0); } + +#undef _nc_retrace_unsigned +unsigned _nc_retrace_unsigned( + unsigned code) + { return(*(unsigned *)0); } + +#undef _nc_retrace_ptr +char *_nc_retrace_ptr( + char *code) + { return(*(char **)0); } + +#undef _nc_retrace_cptr +const char *_nc_retrace_cptr( + const char *code) + { return(*(const char **)0); } + +#undef _nc_retrace_cvoid_ptr +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } + +#undef _nc_retrace_void_ptr +void *_nc_retrace_void_ptr( + void *code) + { return(*(void **)0); } + +#undef _nc_retrace_sp +SCREEN *_nc_retrace_sp( + SCREEN *code) + { return(*(SCREEN **)0); } + +#undef _nc_retrace_win +WINDOW *_nc_retrace_win( + WINDOW *code) + { return(*(WINDOW **)0); } + +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + +/* ./trace/lib_traceatr.c */ + +#undef _traceattr2 +char *_traceattr2( + int bufnum, + chtype newmode) + { return(*(char **)0); } + +#undef _traceattr +char *_traceattr( + attr_t newmode) + { return(*(char **)0); } + +#undef _nc_retrace_int_attr_t +int _nc_retrace_int_attr_t( + attr_t code) + { return(*(int *)0); } + +#undef _nc_retrace_attr_t +attr_t _nc_retrace_attr_t( + attr_t code) + { return(*(attr_t *)0); } + +#undef _nc_altcharset_name +const char *_nc_altcharset_name( + attr_t attr, + chtype ch) + { return(*(const char **)0); } + +#undef _tracechtype2 +char *_tracechtype2( + int bufnum, + chtype ch) + { return(*(char **)0); } + +#undef _tracechtype +char *_tracechtype( + chtype ch) + { return(*(char **)0); } + +#undef _nc_retrace_chtype +chtype _nc_retrace_chtype( + chtype code) + { return(*(chtype *)0); } + +/* ./trace/lib_tracebits.c */ + +#undef _nc_trace_ttymode +char *_nc_trace_ttymode( + const struct termios *tty) + { return(*(char **)0); } + +#undef _nc_tracebits +char *_nc_tracebits(void) + { return(*(char **)0); } + +/* ./trace/lib_tracechr.c */ + +#undef _nc_tracechar +char *_nc_tracechar( + SCREEN *sp, + int ch) + { return(*(char **)0); } + +#undef _tracechar +char *_tracechar( + int ch) + { return(*(char **)0); } + +/* ./tinfo/lib_ttyflags.c */ + +#undef _nc_get_tty_mode_sp +int _nc_get_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_get_tty_mode +int _nc_get_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode_sp +int _nc_set_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode +int _nc_set_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef def_shell_mode_sp +int def_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_shell_mode +int def_shell_mode(void) + { return(*(int *)0); } + +#undef def_prog_mode_sp +int def_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_prog_mode +int def_prog_mode(void) + { return(*(int *)0); } + +#undef reset_prog_mode_sp +int reset_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_prog_mode +int reset_prog_mode(void) + { return(*(int *)0); } + +#undef reset_shell_mode_sp +int reset_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_shell_mode +int reset_shell_mode(void) + { return(*(int *)0); } + +#undef savetty_sp +int savetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef savetty +int savetty(void) + { return(*(int *)0); } + +#undef resetty_sp +int resetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef resetty +int resetty(void) + { return(*(int *)0); } + +/* ./tty/lib_twait.c */ + +#undef _nc_timed_wait +int _nc_timed_wait( + SCREEN *sp, + int mode, + int milliseconds, + int *timeleft) + { return(*(int *)0); } + +/* ./tinfo/name_match.c */ + +#undef _nc_first_name +char *_nc_first_name( + const char *const sp) + { return(*(char **)0); } + +#undef _nc_name_match +int _nc_name_match( + const char *const namelst, + const char *const name, + const char *const delim) + { return(*(int *)0); } + +/* ./names.c */ + +#undef boolnames +const char *const boolnames[] = {0}; +#undef boolfnames +const char *const boolfnames[] = {0}; +#undef numnames +const char *const numnames[] = {0}; +#undef numfnames +const char *const numfnames[] = {0}; +#undef strnames +const char *const strnames[] = {0}; +#undef strfnames +const char *const strfnames[] = {0}; + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } + +/* ./tinfo/read_entry.c */ + +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE *const tp) + { /* void */ } + +#undef _nc_read_termtype +int _nc_read_termtype( + TERMTYPE *ptr, + char *buffer, + int limit) + { return(*(int *)0); } + +#undef _nc_read_file_entry +int _nc_read_file_entry( + const char *const filename, + TERMTYPE *ptr) + { return(*(int *)0); } + +#undef _nc_read_entry +int _nc_read_entry( + const char *const name, + char *const filename, + TERMTYPE *const tp) + { return(*(int *)0); } + +/* ./tinfo/read_termcap.c */ + +#undef _nc_read_termcap +void _nc_read_termcap(void) + { /* void */ } + +/* ./tinfo/strings.c */ + +#undef _nc_str_init +string_desc *_nc_str_init( + string_desc *dst, + char *src, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_null +string_desc *_nc_str_null( + string_desc *dst, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_copy +string_desc *_nc_str_copy( + string_desc *dst, + string_desc *src) + { return(*(string_desc **)0); } + +#undef _nc_safe_strcat +NCURSES_BOOL _nc_safe_strcat( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_safe_strcpy +NCURSES_BOOL _nc_safe_strcpy( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +/* ./trace/trace_buf.c */ + +#undef _nc_trace_buf +char *_nc_trace_buf( + int bufnum, + size_t want) + { return(*(char **)0); } + +#undef _nc_trace_bufcat +char *_nc_trace_bufcat( + int bufnum, + const char *value) + { return(*(char **)0); } + +/* ./trace/trace_tries.c */ + +#undef _nc_trace_tries +void _nc_trace_tries( + TRIES *tree) + { /* void */ } + +/* ./base/tries.c */ + +#undef _nc_expand_try +char *_nc_expand_try( + TRIES *tree, + unsigned code, + int *count, + size_t len) + { return(*(char **)0); } + +#undef _nc_remove_key +int _nc_remove_key( + TRIES **tree, + unsigned code) + { return(*(int *)0); } + +#undef _nc_remove_string +int _nc_remove_string( + TRIES **tree, + const char *string) + { return(*(int *)0); } + +/* ./tinfo/trim_sgr0.c */ + +#undef _nc_trim_sgr0 +char *_nc_trim_sgr0( + TERMTYPE *tp) + { return(*(char **)0); } + +/* ./unctrl.c */ + +#undef unctrl_sp +const char *unctrl_sp( + SCREEN *sp, + chtype ch) + { return(*(const char **)0); } + +#undef unctrl +const char *unctrl( + chtype ch) + { return(*(const char **)0); } + +/* ./trace/visbuf.c */ + +#undef _nc_visbuf2 +const char *_nc_visbuf2( + int bufnum, + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbuf +const char *_nc_visbuf( + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbufn +const char *_nc_visbufn( + const char *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viscbuf2 +const char *_nc_viscbuf2( + int bufnum, + const chtype *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viscbuf +const char *_nc_viscbuf( + const chtype *buf, + int len) + { return(*(const char **)0); } + +/* ./base/define_key.c */ + +#undef define_key_sp +int define_key_sp( + SCREEN *sp, + const char *str, + int keycode) + { return(*(int *)0); } + +#undef define_key +int define_key( + const char *str, + int keycode) + { return(*(int *)0); } + +/* ./tinfo/hashed_db.c */ + +#undef _nc_hashed_db +void _nc_hashed_db(void) + { /* void */ } + +/* ./base/key_defined.c */ + +#undef key_defined_sp +int key_defined_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef key_defined +int key_defined( + const char *str) + { return(*(int *)0); } + +/* ./base/keybound.c */ + +#undef keybound_sp +char *keybound_sp( + SCREEN *sp, + int code, + int count) + { return(*(char **)0); } + +#undef keybound +char *keybound( + int code, + int count) + { return(*(char **)0); } + +/* ./base/keyok.c */ + +#undef keyok_sp +int keyok_sp( + SCREEN *sp, + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef keyok +int keyok( + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./base/version.c */ + +#undef curses_version +const char *curses_version(void) + { return(*(const char **)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-ltinfot b/deps/ncurses-6.3/ncurses/llib-ltinfot new file mode 100644 index 0000000..7d5dcf0 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-ltinfot @@ -0,0 +1,1658 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2013-2016,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: Thomas E. Dickey 2013-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/access.c */ + +#include <curses.priv.h> + +#undef _nc_rootname +char *_nc_rootname( + char *path) + { return(*(char **)0); } + +#undef _nc_is_abs_path +NCURSES_BOOL _nc_is_abs_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_pathlast +unsigned _nc_pathlast( + const char *path) + { return(*(unsigned *)0); } + +#undef _nc_basename +char *_nc_basename( + char *path) + { return(*(char **)0); } + +#undef _nc_access +int _nc_access( + const char *path, + int mode) + { return(*(int *)0); } + +#undef _nc_is_dir_path +NCURSES_BOOL _nc_is_dir_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_is_file_path +NCURSES_BOOL _nc_is_file_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_env_access +int _nc_env_access(void) + { return(*(int *)0); } + +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + +/* ./tinfo/add_tries.c */ + +#undef _nc_add_to_try +int _nc_add_to_try( + TRIES **tree, + const char *str, + unsigned code) + { return(*(int *)0); } + +/* ./tinfo/alloc_ttype.c */ + +#undef _nc_align_termtype +void _nc_align_termtype( + TERMTYPE *to, + TERMTYPE *from) + { /* void */ } + +#undef _nc_copy_termtype +void _nc_copy_termtype( + TERMTYPE *dst, + const TERMTYPE *src) + { /* void */ } + +/* ./codes.c */ + +#undef _nc_boolcodes +const char *const *_nc_boolcodes(void) + { return(*(const char **)0); } + +#undef _nc_numcodes +const char *const *_nc_numcodes(void) + { return(*(const char **)0); } + +#undef _nc_strcodes +const char *const *_nc_strcodes(void) + { return(*(const char **)0); } + +/* ./comp_captab.c */ + +#undef _nc_get_table +const struct name_table_entry *_nc_get_table( + NCURSES_BOOL termcap) + { return(*(const struct name_table_entry **)0); } + +#undef _nc_get_hash_table +const HashValue *_nc_get_hash_table( + NCURSES_BOOL termcap) + { return(*(const HashValue **)0); } + +#undef _nc_get_alias_table +const struct alias *_nc_get_alias_table( + NCURSES_BOOL termcap) + { return(*(const struct alias **)0); } + +#undef _nc_get_hash_info +const HashData *_nc_get_hash_info( + NCURSES_BOOL termcap) + { return(*(const HashData **)0); } + +/* ./tinfo/comp_error.c */ + +#undef _nc_suppress_warnings +NCURSES_BOOL _nc_suppress_warnings; +#undef _nc_curr_line +int _nc_curr_line; +#undef _nc_curr_col +int _nc_curr_col; + +#undef _nc_get_source +const char *_nc_get_source(void) + { return(*(const char **)0); } + +#undef _nc_set_source +void _nc_set_source( + const char *const name) + { /* void */ } + +#undef _nc_set_type +void _nc_set_type( + const char *const name) + { /* void */ } + +#undef _nc_get_type +void _nc_get_type( + char *name) + { /* void */ } + +#undef _nc_warning +void _nc_warning( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_err_abort +void _nc_err_abort( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_syserr_abort +void _nc_syserr_abort( + const char *const fmt, + ...) + { /* void */ } + +/* ./tinfo/comp_hash.c */ + +#undef _nc_find_entry +struct name_table_entry const *_nc_find_entry( + const char *string, + const HashValue *hash_table) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_type_entry +struct name_table_entry const *_nc_find_type_entry( + const char *string, + int type, + NCURSES_BOOL termcap) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + +/* ./tinfo/db_iterator.c */ + +#undef _nc_tic_dir +const char *_nc_tic_dir( + const char *path) + { return(*(const char **)0); } + +#undef _nc_keep_tic_dir +void _nc_keep_tic_dir( + const char *path) + { /* void */ } + +#undef _nc_last_db +void _nc_last_db(void) + { /* void */ } + +#undef _nc_next_db +const char *_nc_next_db( + DBDIRS *state, + int *offset) + { return(*(const char **)0); } + +#undef _nc_first_db +void _nc_first_db( + DBDIRS *state, + int *offset) + { /* void */ } + +/* ./tinfo/doalloc.c */ + +#undef _nc_doalloc +void *_nc_doalloc( + void *oldp, + size_t amount) + { return(*(void **)0); } + +/* ./tinfo/entries.c */ + +#undef _nc_head +ENTRY *_nc_head; +#undef _nc_tail +ENTRY *_nc_tail; + +#undef _nc_free_entry +void _nc_free_entry( + ENTRY *headp, + TERMTYPE *tterm) + { /* void */ } + +#undef _nc_free_entries +void _nc_free_entries( + ENTRY *headp) + { /* void */ } + +#undef _nc_leaks_tinfo +void _nc_leaks_tinfo(void) + { /* void */ } + +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + +/* ./fallback.c */ + +#undef _nc_fallback +const TERMTYPE *_nc_fallback( + const char *name) + { return(*(const TERMTYPE **)0); } + +/* ./tinfo/free_ttype.c */ + +#undef _nc_free_termtype +void _nc_free_termtype( + TERMTYPE *ptr) + { /* void */ } + +#undef _nc_user_definable +NCURSES_BOOL _nc_user_definable; + +#undef use_extended_names +int use_extended_names( + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/getenv_num.c */ + +#undef _nc_getenv_num +int _nc_getenv_num( + const char *name) + { return(*(int *)0); } + +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + +/* ./tinfo/home_terminfo.c */ + +#undef _nc_home_terminfo +char *_nc_home_terminfo(void) + { return(*(char **)0); } + +/* ./tinfo/init_keytry.c */ + +#undef _nc_init_keytry +void _nc_init_keytry( + SCREEN *sp) + { /* void */ } + +/* ./tinfo/lib_acs.c */ + +#undef _nc_acs_map +chtype *_nc_acs_map(void) + { return(*(chtype **)0); } + +#undef _nc_init_acs_sp +void _nc_init_acs_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_init_acs +void _nc_init_acs(void) + { /* void */ } + +/* ./tinfo/lib_baudrate.c */ + +struct speed { + int given_speed; + int actual_speed; +}; + +#undef _nc_baudrate +int _nc_baudrate( + int OSpeed) + { return(*(int *)0); } + +#undef _nc_ospeed +int _nc_ospeed( + int BaudRate) + { return(*(int *)0); } + +#undef baudrate_sp +int baudrate_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef baudrate +int baudrate(void) + { return(*(int *)0); } + +/* ./tinfo/lib_cur_term.c */ + +#undef _nc_get_cur_term_sp +TERMINAL *_nc_get_cur_term_sp( + SCREEN *sp) + { return(*(TERMINAL **)0); } + +#undef _nc_get_cur_term +TERMINAL *_nc_get_cur_term(void) + { return(*(TERMINAL **)0); } + +#undef _nc_cur_term +TERMINAL *_nc_cur_term(void) + { return(*(TERMINAL **)0); } + +#undef set_curterm_sp +TERMINAL *set_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef set_curterm +TERMINAL *set_curterm( + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef del_curterm_sp +int del_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(int *)0); } + +#undef del_curterm +int del_curterm( + TERMINAL *termp) + { return(*(int *)0); } + +/* ./tinfo/lib_data.c */ + +#undef _nc_stdscr +WINDOW *_nc_stdscr(void) + { return(*(WINDOW **)0); } + +#undef _nc_curscr +WINDOW *_nc_curscr(void) + { return(*(WINDOW **)0); } + +#undef _nc_newscr +WINDOW *_nc_newscr(void) + { return(*(WINDOW **)0); } + +#undef _nc_screen_chain +SCREEN *_nc_screen_chain; +#undef SP +SCREEN *SP; +#undef _nc_globals +NCURSES_GLOBALS _nc_globals; +#undef _nc_prescreen +NCURSES_PRESCREEN _nc_prescreen; + +#undef _nc_screen_of +SCREEN *_nc_screen_of( + WINDOW *win) + { return(*(SCREEN **)0); } + +#undef _nc_init_pthreads +void _nc_init_pthreads(void) + { /* void */ } + +#undef _nc_mutex_init +void _nc_mutex_init( + pthread_mutex_t *obj) + { /* void */ } + +#undef _nc_mutex_lock +int _nc_mutex_lock( + pthread_mutex_t *obj) + { return(*(int *)0); } + +#undef _nc_mutex_trylock +int _nc_mutex_trylock( + pthread_mutex_t *obj) + { return(*(int *)0); } + +#undef _nc_mutex_unlock +int _nc_mutex_unlock( + pthread_mutex_t *obj) + { return(*(int *)0); } + +/* ./tinfo/lib_has_cap.c */ + +#undef has_ic_sp +NCURSES_BOOL has_ic_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_ic +NCURSES_BOOL has_ic(void) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il_sp +NCURSES_BOOL has_il_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il +NCURSES_BOOL has_il(void) + { return(*(NCURSES_BOOL *)0); } + +/* ./tinfo/lib_kernel.c */ + +#undef erasechar_sp +char erasechar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef erasechar +char erasechar(void) + { return(*(char *)0); } + +#undef killchar_sp +char killchar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef killchar +char killchar(void) + { return(*(char *)0); } + +#undef flushinp_sp +int flushinp_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef flushinp +int flushinp(void) + { return(*(int *)0); } + +/* ./lib_keyname.c */ + +struct kn { short offset; int code; }; + +#undef keyname_sp +const char *keyname_sp( + SCREEN *sp, + int c) + { return(*(const char **)0); } + +#undef keyname +const char *keyname( + int c) + { return(*(const char **)0); } + +/* ./tinfo/lib_longname.c */ + +#undef longname_sp +char *longname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef longname +char *longname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_napms.c */ + +#undef napms_sp +int napms_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef napms +int napms( + int ms) + { return(*(int *)0); } + +/* ./tinfo/lib_options.c */ + +#undef idlok +int idlok( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef idcok +void idcok( + WINDOW *win, + NCURSES_BOOL flag) + { /* void */ } + +#undef halfdelay_sp +int halfdelay_sp( + SCREEN *sp, + int t) + { return(*(int *)0); } + +#undef halfdelay +int halfdelay( + int t) + { return(*(int *)0); } + +#undef nodelay +int nodelay( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef notimeout +int notimeout( + WINDOW *win, + NCURSES_BOOL f) + { return(*(int *)0); } + +#undef wtimeout +void wtimeout( + WINDOW *win, + int delay) + { /* void */ } + +#undef keypad +int keypad( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef meta +int meta( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef curs_set_sp +int curs_set_sp( + SCREEN *sp, + int vis) + { return(*(int *)0); } + +#undef curs_set +int curs_set( + int vis) + { return(*(int *)0); } + +#undef typeahead_sp +int typeahead_sp( + SCREEN *sp, + int fd) + { return(*(int *)0); } + +#undef typeahead +int typeahead( + int fd) + { return(*(int *)0); } + +#undef has_key_sp +int has_key_sp( + SCREEN *sp, + int keycode) + { return(*(int *)0); } + +#undef has_key +int has_key( + int keycode) + { return(*(int *)0); } + +#undef _nc_putp_flush_sp +int _nc_putp_flush_sp( + SCREEN *sp, + const char *name, + const char *value) + { return(*(int *)0); } + +#undef _nc_keypad +int _nc_keypad( + SCREEN *sp, + int flag) + { return(*(int *)0); } + +/* ./tinfo/lib_raw.c */ + +#undef raw_sp +int raw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef raw +int raw(void) + { return(*(int *)0); } + +#undef cbreak_sp +int cbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef cbreak +int cbreak(void) + { return(*(int *)0); } + +#undef qiflush_sp +void qiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef qiflush +void qiflush(void) + { /* void */ } + +#undef noraw_sp +int noraw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef noraw +int noraw(void) + { return(*(int *)0); } + +#undef nocbreak_sp +int nocbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef nocbreak +int nocbreak(void) + { return(*(int *)0); } + +#undef noqiflush_sp +void noqiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef noqiflush +void noqiflush(void) + { /* void */ } + +#undef intrflush_sp +int intrflush_sp( + SCREEN *sp, + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef intrflush +int intrflush( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/lib_setup.c */ + +#undef _nc_ttytype +char *_nc_ttytype(void) + { return(*(char **)0); } + +#undef _nc_ptr_Lines +int *_nc_ptr_Lines( + SCREEN *sp) + { return(*(int **)0); } + +#undef _nc_LINES +int _nc_LINES(void) + { return(*(int *)0); } + +#undef _nc_ptr_Cols +int *_nc_ptr_Cols( + SCREEN *sp) + { return(*(int **)0); } + +#undef _nc_COLS +int _nc_COLS(void) + { return(*(int *)0); } + +#undef _nc_ptr_Tabsize +int *_nc_ptr_Tabsize( + SCREEN *sp) + { return(*(int **)0); } + +#undef _nc_TABSIZE +int _nc_TABSIZE(void) + { return(*(int *)0); } + +#undef set_tabsize_sp +int set_tabsize_sp( + SCREEN *sp, + int value) + { return(*(int *)0); } + +#undef set_tabsize +int set_tabsize( + int value) + { return(*(int *)0); } + +#undef _nc_handle_sigwinch +int _nc_handle_sigwinch( + SCREEN *sp) + { return(*(int *)0); } + +#undef use_env_sp +void use_env_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_env +void use_env( + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + +#undef _nc_get_screensize +void _nc_get_screensize( + SCREEN *sp, + int *linep, + int *colp) + { /* void */ } + +#undef _nc_update_screensize +void _nc_update_screensize( + SCREEN *sp) + { /* void */ } + +#undef _nc_setup_tinfo +int _nc_setup_tinfo( + const char *const tn, + TERMTYPE *const tp) + { return(*(int *)0); } + +#undef _nc_tinfo_cmdch +void _nc_tinfo_cmdch( + TERMINAL *termp, + int proto) + { /* void */ } + +#undef _nc_get_locale +char *_nc_get_locale(void) + { return(*(char **)0); } + +#undef _nc_unicode_locale +int _nc_unicode_locale(void) + { return(*(int *)0); } + +#undef _nc_locale_breaks_acs +int _nc_locale_breaks_acs( + TERMINAL *termp) + { return(*(int *)0); } + +#undef _nc_setupterm +int _nc_setupterm( + const char *tname, + int Filedes, + int *errret, + int reuse) + { return(*(int *)0); } + +#undef _nc_find_prescr +SCREEN *_nc_find_prescr(void) + { return(*(SCREEN **)0); } + +#undef _nc_forget_prescr +void _nc_forget_prescr(void) + { /* void */ } + +#undef new_prescr +SCREEN *new_prescr(void) + { return(*(SCREEN **)0); } + +#undef setupterm +int setupterm( + const char *tname, + int Filedes, + int *errret) + { return(*(int *)0); } + +/* ./tinfo/lib_termcap.c */ + +#undef UP +char *UP; +#undef BC +char *BC; + +#undef tgetent_sp +int tgetent_sp( + SCREEN *sp, + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetent +int tgetent( + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetflag_sp +int tgetflag_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetflag +int tgetflag( + const char *id) + { return(*(int *)0); } + +#undef tgetnum_sp +int tgetnum_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetnum +int tgetnum( + const char *id) + { return(*(int *)0); } + +#undef tgetstr_sp +char *tgetstr_sp( + SCREEN *sp, + const char *id, + char **area) + { return(*(char **)0); } + +#undef tgetstr +char *tgetstr( + const char *id, + char **area) + { return(*(char **)0); } + +/* ./tinfo/lib_termname.c */ + +#undef termname_sp +char *termname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef termname +char *termname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_tgoto.c */ + +#undef tgoto +char *tgoto( + const char *string, + int x, + int y) + { return(*(char **)0); } + +/* ./tinfo/lib_ti.c */ + +#undef tigetflag_sp +int tigetflag_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetflag +int tigetflag( + const char *str) + { return(*(int *)0); } + +#undef tigetnum_sp +int tigetnum_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetnum +int tigetnum( + const char *str) + { return(*(int *)0); } + +#undef tigetstr_sp +char *tigetstr_sp( + SCREEN *sp, + const char *str) + { return(*(char **)0); } + +#undef tigetstr +char *tigetstr( + const char *str) + { return(*(char **)0); } + +/* ./tinfo/lib_tparm.c */ + +#undef _nc_tparm_err +int _nc_tparm_err; + +#undef _nc_tparm_analyze +int _nc_tparm_analyze( + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) + { return(*(int *)0); } + +#undef tparm +char *tparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef tiparm +char *tiparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + +/* ./tinfo/lib_tputs.c */ + +#undef PC +char PC; +#undef ospeed +short ospeed; +#undef _nc_nulls_sent +int _nc_nulls_sent; + +#undef _nc_set_no_padding +void _nc_set_no_padding( + SCREEN *sp) + { /* void */ } + +#undef delay_output_sp +int delay_output_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef delay_output +int delay_output( + int ms) + { return(*(int *)0); } + +#undef _nc_flush_sp +void _nc_flush_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_flush +void _nc_flush(void) + { /* void */ } + +#undef _nc_outch_sp +int _nc_outch_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_outch +int _nc_outch( + int ch) + { return(*(int *)0); } + +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + +#undef putp_sp +int putp_sp( + SCREEN *sp, + const char *string) + { return(*(int *)0); } + +#undef putp +int putp( + const char *string) + { return(*(int *)0); } + +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, + const char *string) + { return(*(int *)0); } + +#undef _nc_putp +int _nc_putp( + const char *name, + const char *string) + { return(*(int *)0); } + +#undef tputs_sp +int tputs_sp( + SCREEN *sp, + const char *string, + int affcnt, + NCURSES_OUTC_sp outc) + { return(*(int *)0); } + +#undef _nc_outc_wrapper +int _nc_outc_wrapper( + SCREEN *sp, + int c) + { return(*(int *)0); } + +#undef tputs +int tputs( + const char *string, + int affcnt, + int (*outc)( + int p1)) + { return(*(int *)0); } + +/* ./trace/lib_trace.c */ + +#undef _nc_tracing +unsigned _nc_tracing; + +#undef _nc__nc_tputs_trace +const char *_nc__nc_tputs_trace(void) + { return(*(const char **)0); } + +#undef _nc__nc_outchars +long _nc__nc_outchars(void) + { return(*(long *)0); } + +#undef _nc_set_tputs_trace +void _nc_set_tputs_trace( + const char *s) + { /* void */ } + +#undef _nc_count_outchars +void _nc_count_outchars( + long increment) + { /* void */ } + +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + +#undef trace +void trace( + const unsigned int tracelevel) + { /* void */ } + +#undef _tracef +void _tracef( + const char *fmt, + ...) + { /* void */ } + +#undef _nc_retrace_bool +NCURSES_BOOL _nc_retrace_bool( + int code) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_retrace_char +char _nc_retrace_char( + int code) + { return(*(char *)0); } + +#undef _nc_retrace_int +int _nc_retrace_int( + int code) + { return(*(int *)0); } + +#undef _nc_retrace_unsigned +unsigned _nc_retrace_unsigned( + unsigned code) + { return(*(unsigned *)0); } + +#undef _nc_retrace_ptr +char *_nc_retrace_ptr( + char *code) + { return(*(char **)0); } + +#undef _nc_retrace_cptr +const char *_nc_retrace_cptr( + const char *code) + { return(*(const char **)0); } + +#undef _nc_retrace_cvoid_ptr +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } + +#undef _nc_retrace_void_ptr +void *_nc_retrace_void_ptr( + void *code) + { return(*(void **)0); } + +#undef _nc_retrace_sp +SCREEN *_nc_retrace_sp( + SCREEN *code) + { return(*(SCREEN **)0); } + +#undef _nc_retrace_win +WINDOW *_nc_retrace_win( + WINDOW *code) + { return(*(WINDOW **)0); } + +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + +#undef _nc_use_tracef +int _nc_use_tracef( + unsigned mask) + { return(*(int *)0); } + +#undef _nc_locked_tracef +void _nc_locked_tracef( + const char *fmt, + ...) + { /* void */ } + +/* ./trace/lib_traceatr.c */ + +#undef _traceattr2 +char *_traceattr2( + int bufnum, + chtype newmode) + { return(*(char **)0); } + +#undef _traceattr +char *_traceattr( + attr_t newmode) + { return(*(char **)0); } + +#undef _nc_retrace_int_attr_t +int _nc_retrace_int_attr_t( + attr_t code) + { return(*(int *)0); } + +#undef _nc_retrace_attr_t +attr_t _nc_retrace_attr_t( + attr_t code) + { return(*(attr_t *)0); } + +#undef _nc_altcharset_name +const char *_nc_altcharset_name( + attr_t attr, + chtype ch) + { return(*(const char **)0); } + +#undef _tracechtype2 +char *_tracechtype2( + int bufnum, + chtype ch) + { return(*(char **)0); } + +#undef _tracechtype +char *_tracechtype( + chtype ch) + { return(*(char **)0); } + +#undef _nc_retrace_chtype +chtype _nc_retrace_chtype( + chtype code) + { return(*(chtype *)0); } + +/* ./trace/lib_tracebits.c */ + +#undef _nc_trace_ttymode +char *_nc_trace_ttymode( + const struct termios *tty) + { return(*(char **)0); } + +#undef _nc_tracebits +char *_nc_tracebits(void) + { return(*(char **)0); } + +/* ./trace/lib_tracechr.c */ + +#undef _nc_tracechar +char *_nc_tracechar( + SCREEN *sp, + int ch) + { return(*(char **)0); } + +#undef _tracechar +char *_tracechar( + int ch) + { return(*(char **)0); } + +/* ./tinfo/lib_ttyflags.c */ + +#undef _nc_get_tty_mode_sp +int _nc_get_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_get_tty_mode +int _nc_get_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode_sp +int _nc_set_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode +int _nc_set_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef def_shell_mode_sp +int def_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_shell_mode +int def_shell_mode(void) + { return(*(int *)0); } + +#undef def_prog_mode_sp +int def_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_prog_mode +int def_prog_mode(void) + { return(*(int *)0); } + +#undef reset_prog_mode_sp +int reset_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_prog_mode +int reset_prog_mode(void) + { return(*(int *)0); } + +#undef reset_shell_mode_sp +int reset_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_shell_mode +int reset_shell_mode(void) + { return(*(int *)0); } + +#undef savetty_sp +int savetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef savetty +int savetty(void) + { return(*(int *)0); } + +#undef resetty_sp +int resetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef resetty +int resetty(void) + { return(*(int *)0); } + +/* ./tty/lib_twait.c */ + +#undef _nc_timed_wait +int _nc_timed_wait( + SCREEN *sp, + int mode, + int milliseconds, + int *timeleft) + { return(*(int *)0); } + +/* ./tinfo/name_match.c */ + +#undef _nc_first_name +char *_nc_first_name( + const char *const sp) + { return(*(char **)0); } + +#undef _nc_name_match +int _nc_name_match( + const char *const namelst, + const char *const name, + const char *const delim) + { return(*(int *)0); } + +/* ./names.c */ + +#undef _nc_boolnames +const char *const *_nc_boolnames(void) + { return(*(const char **)0); } + +#undef _nc_boolfnames +const char *const *_nc_boolfnames(void) + { return(*(const char **)0); } + +#undef _nc_numnames +const char *const *_nc_numnames(void) + { return(*(const char **)0); } + +#undef _nc_numfnames +const char *const *_nc_numfnames(void) + { return(*(const char **)0); } + +#undef _nc_strnames +const char *const *_nc_strnames(void) + { return(*(const char **)0); } + +#undef _nc_strfnames +const char *const *_nc_strfnames(void) + { return(*(const char **)0); } + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } + +/* ./tinfo/read_entry.c */ + +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE *const tp) + { /* void */ } + +#undef _nc_read_termtype +int _nc_read_termtype( + TERMTYPE *ptr, + char *buffer, + int limit) + { return(*(int *)0); } + +#undef _nc_read_file_entry +int _nc_read_file_entry( + const char *const filename, + TERMTYPE *ptr) + { return(*(int *)0); } + +#undef _nc_read_entry +int _nc_read_entry( + const char *const name, + char *const filename, + TERMTYPE *const tp) + { return(*(int *)0); } + +/* ./tinfo/read_termcap.c */ + +#undef _nc_read_termcap +void _nc_read_termcap(void) + { /* void */ } + +/* ./tinfo/strings.c */ + +#undef _nc_str_init +string_desc *_nc_str_init( + string_desc *dst, + char *src, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_null +string_desc *_nc_str_null( + string_desc *dst, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_copy +string_desc *_nc_str_copy( + string_desc *dst, + string_desc *src) + { return(*(string_desc **)0); } + +#undef _nc_safe_strcat +NCURSES_BOOL _nc_safe_strcat( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_safe_strcpy +NCURSES_BOOL _nc_safe_strcpy( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +/* ./trace/trace_buf.c */ + +#undef _nc_trace_buf +char *_nc_trace_buf( + int bufnum, + size_t want) + { return(*(char **)0); } + +#undef _nc_trace_bufcat +char *_nc_trace_bufcat( + int bufnum, + const char *value) + { return(*(char **)0); } + +/* ./trace/trace_tries.c */ + +#undef _nc_trace_tries +void _nc_trace_tries( + TRIES *tree) + { /* void */ } + +/* ./base/tries.c */ + +#undef _nc_expand_try +char *_nc_expand_try( + TRIES *tree, + unsigned code, + int *count, + size_t len) + { return(*(char **)0); } + +#undef _nc_remove_key +int _nc_remove_key( + TRIES **tree, + unsigned code) + { return(*(int *)0); } + +#undef _nc_remove_string +int _nc_remove_string( + TRIES **tree, + const char *string) + { return(*(int *)0); } + +/* ./tinfo/trim_sgr0.c */ + +#undef _nc_trim_sgr0 +char *_nc_trim_sgr0( + TERMTYPE *tp) + { return(*(char **)0); } + +/* ./unctrl.c */ + +#undef unctrl_sp +const char *unctrl_sp( + SCREEN *sp, + chtype ch) + { return(*(const char **)0); } + +#undef unctrl +const char *unctrl( + chtype ch) + { return(*(const char **)0); } + +/* ./trace/visbuf.c */ + +#undef _nc_visbuf2 +const char *_nc_visbuf2( + int bufnum, + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbuf +const char *_nc_visbuf( + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbufn +const char *_nc_visbufn( + const char *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viscbuf2 +const char *_nc_viscbuf2( + int bufnum, + const chtype *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viscbuf +const char *_nc_viscbuf( + const chtype *buf, + int len) + { return(*(const char **)0); } + +/* ./base/define_key.c */ + +#undef define_key_sp +int define_key_sp( + SCREEN *sp, + const char *str, + int keycode) + { return(*(int *)0); } + +#undef define_key +int define_key( + const char *str, + int keycode) + { return(*(int *)0); } + +/* ./tinfo/hashed_db.c */ + +#undef _nc_hashed_db +void _nc_hashed_db(void) + { /* void */ } + +/* ./base/key_defined.c */ + +#undef key_defined_sp +int key_defined_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef key_defined +int key_defined( + const char *str) + { return(*(int *)0); } + +/* ./base/keybound.c */ + +#undef keybound_sp +char *keybound_sp( + SCREEN *sp, + int code, + int count) + { return(*(char **)0); } + +#undef keybound +char *keybound( + int code, + int count) + { return(*(char **)0); } + +/* ./base/keyok.c */ + +#undef keyok_sp +int keyok_sp( + SCREEN *sp, + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef keyok +int keyok( + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./base/version.c */ + +#undef curses_version +const char *curses_version(void) + { return(*(const char **)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-ltinfotw b/deps/ncurses-6.3/ncurses/llib-ltinfotw new file mode 100644 index 0000000..0fd8d28 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-ltinfotw @@ -0,0 +1,1720 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2012-2016,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: Thomas E. Dickey 2012-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/access.c */ + +#include <curses.priv.h> + +#undef _nc_rootname +char *_nc_rootname( + char *path) + { return(*(char **)0); } + +#undef _nc_is_abs_path +NCURSES_BOOL _nc_is_abs_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_pathlast +unsigned _nc_pathlast( + const char *path) + { return(*(unsigned *)0); } + +#undef _nc_basename +char *_nc_basename( + char *path) + { return(*(char **)0); } + +#undef _nc_access +int _nc_access( + const char *path, + int mode) + { return(*(int *)0); } + +#undef _nc_is_dir_path +NCURSES_BOOL _nc_is_dir_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_is_file_path +NCURSES_BOOL _nc_is_file_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_env_access +int _nc_env_access(void) + { return(*(int *)0); } + +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + +/* ./tinfo/add_tries.c */ + +#undef _nc_add_to_try +int _nc_add_to_try( + TRIES **tree, + const char *str, + unsigned code) + { return(*(int *)0); } + +/* ./tinfo/alloc_ttype.c */ + +#undef _nc_align_termtype +void _nc_align_termtype( + TERMTYPE2 *to, + TERMTYPE2 *from) + { /* void */ } + +#undef _nc_copy_termtype +void _nc_copy_termtype( + TERMTYPE *dst, + const TERMTYPE *src) + { /* void */ } + +#undef _nc_copy_termtype2 +void _nc_copy_termtype2( + TERMTYPE2 *dst, + const TERMTYPE2 *src) + { /* void */ } + +#undef _nc_export_termtype2 +void _nc_export_termtype2( + TERMTYPE *dst, + const TERMTYPE2 *src) + { /* void */ } + +/* ./codes.c */ + +#undef _nc_boolcodes +const char *const *_nc_boolcodes(void) + { return(*(const char **)0); } + +#undef _nc_numcodes +const char *const *_nc_numcodes(void) + { return(*(const char **)0); } + +#undef _nc_strcodes +const char *const *_nc_strcodes(void) + { return(*(const char **)0); } + +/* ./comp_captab.c */ + +#undef _nc_get_table +const struct name_table_entry *_nc_get_table( + NCURSES_BOOL termcap) + { return(*(const struct name_table_entry **)0); } + +#undef _nc_get_hash_table +const HashValue *_nc_get_hash_table( + NCURSES_BOOL termcap) + { return(*(const HashValue **)0); } + +#undef _nc_get_alias_table +const struct alias *_nc_get_alias_table( + NCURSES_BOOL termcap) + { return(*(const struct alias **)0); } + +#undef _nc_get_hash_info +const HashData *_nc_get_hash_info( + NCURSES_BOOL termcap) + { return(*(const HashData **)0); } + +/* ./tinfo/comp_error.c */ + +#undef _nc_suppress_warnings +NCURSES_BOOL _nc_suppress_warnings; +#undef _nc_curr_line +int _nc_curr_line; +#undef _nc_curr_col +int _nc_curr_col; + +#undef _nc_get_source +const char *_nc_get_source(void) + { return(*(const char **)0); } + +#undef _nc_set_source +void _nc_set_source( + const char *const name) + { /* void */ } + +#undef _nc_set_type +void _nc_set_type( + const char *const name) + { /* void */ } + +#undef _nc_get_type +void _nc_get_type( + char *name) + { /* void */ } + +#undef _nc_warning +void _nc_warning( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_err_abort +void _nc_err_abort( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_syserr_abort +void _nc_syserr_abort( + const char *const fmt, + ...) + { /* void */ } + +/* ./tinfo/comp_hash.c */ + +#undef _nc_find_entry +struct name_table_entry const *_nc_find_entry( + const char *string, + const HashValue *hash_table) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_type_entry +struct name_table_entry const *_nc_find_type_entry( + const char *string, + int type, + NCURSES_BOOL termcap) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + +/* ./tinfo/db_iterator.c */ + +#undef _nc_tic_dir +const char *_nc_tic_dir( + const char *path) + { return(*(const char **)0); } + +#undef _nc_keep_tic_dir +void _nc_keep_tic_dir( + const char *path) + { /* void */ } + +#undef _nc_last_db +void _nc_last_db(void) + { /* void */ } + +#undef _nc_next_db +const char *_nc_next_db( + DBDIRS *state, + int *offset) + { return(*(const char **)0); } + +#undef _nc_first_db +void _nc_first_db( + DBDIRS *state, + int *offset) + { /* void */ } + +/* ./tinfo/doalloc.c */ + +#undef _nc_doalloc +void *_nc_doalloc( + void *oldp, + size_t amount) + { return(*(void **)0); } + +/* ./tinfo/entries.c */ + +#undef _nc_head +ENTRY *_nc_head; +#undef _nc_tail +ENTRY *_nc_tail; + +#undef _nc_free_entry +void _nc_free_entry( + ENTRY *headp, + TERMTYPE2 *tterm) + { /* void */ } + +#undef _nc_free_entries +void _nc_free_entries( + ENTRY *headp) + { /* void */ } + +#undef _nc_leaks_tinfo +void _nc_leaks_tinfo(void) + { /* void */ } + +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + +/* ./fallback.c */ + +#undef _nc_fallback2 +const TERMTYPE2 *_nc_fallback2( + const char *name) + { return(*(const TERMTYPE2 **)0); } + +#undef _nc_fallback +const TERMTYPE *_nc_fallback( + const char *name) + { return(*(const TERMTYPE **)0); } + +/* ./tinfo/free_ttype.c */ + +#undef _nc_free_termtype +void _nc_free_termtype( + TERMTYPE *ptr) + { /* void */ } + +#undef _nc_free_termtype2 +void _nc_free_termtype2( + TERMTYPE2 *ptr) + { /* void */ } + +#undef _nc_user_definable +NCURSES_BOOL _nc_user_definable; + +#undef use_extended_names +int use_extended_names( + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/getenv_num.c */ + +#undef _nc_getenv_num +int _nc_getenv_num( + const char *name) + { return(*(int *)0); } + +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + +/* ./tinfo/home_terminfo.c */ + +#undef _nc_home_terminfo +char *_nc_home_terminfo(void) + { return(*(char **)0); } + +/* ./tinfo/init_keytry.c */ + +#undef _nc_init_keytry +void _nc_init_keytry( + SCREEN *sp) + { /* void */ } + +/* ./tinfo/lib_acs.c */ + +#undef _nc_acs_map +chtype *_nc_acs_map(void) + { return(*(chtype **)0); } + +#undef _nc_init_acs_sp +void _nc_init_acs_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_init_acs +void _nc_init_acs(void) + { /* void */ } + +/* ./tinfo/lib_baudrate.c */ + +struct speed { + int given_speed; + int actual_speed; +}; + +#undef _nc_baudrate +int _nc_baudrate( + int OSpeed) + { return(*(int *)0); } + +#undef _nc_ospeed +int _nc_ospeed( + int BaudRate) + { return(*(int *)0); } + +#undef baudrate_sp +int baudrate_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef baudrate +int baudrate(void) + { return(*(int *)0); } + +/* ./tinfo/lib_cur_term.c */ + +#undef _nc_get_cur_term_sp +TERMINAL *_nc_get_cur_term_sp( + SCREEN *sp) + { return(*(TERMINAL **)0); } + +#undef _nc_get_cur_term +TERMINAL *_nc_get_cur_term(void) + { return(*(TERMINAL **)0); } + +#undef _nc_cur_term +TERMINAL *_nc_cur_term(void) + { return(*(TERMINAL **)0); } + +#undef set_curterm_sp +TERMINAL *set_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef set_curterm +TERMINAL *set_curterm( + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef del_curterm_sp +int del_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(int *)0); } + +#undef del_curterm +int del_curterm( + TERMINAL *termp) + { return(*(int *)0); } + +/* ./tinfo/lib_data.c */ + +#undef _nc_stdscr +WINDOW *_nc_stdscr(void) + { return(*(WINDOW **)0); } + +#undef _nc_curscr +WINDOW *_nc_curscr(void) + { return(*(WINDOW **)0); } + +#undef _nc_newscr +WINDOW *_nc_newscr(void) + { return(*(WINDOW **)0); } + +#undef _nc_screen_chain +SCREEN *_nc_screen_chain; +#undef SP +SCREEN *SP; +#undef _nc_globals +NCURSES_GLOBALS _nc_globals; +#undef _nc_prescreen +NCURSES_PRESCREEN _nc_prescreen; + +#undef _nc_screen_of +SCREEN *_nc_screen_of( + WINDOW *win) + { return(*(SCREEN **)0); } + +#undef _nc_init_pthreads +void _nc_init_pthreads(void) + { /* void */ } + +#undef _nc_mutex_init +void _nc_mutex_init( + pthread_mutex_t *obj) + { /* void */ } + +#undef _nc_mutex_lock +int _nc_mutex_lock( + pthread_mutex_t *obj) + { return(*(int *)0); } + +#undef _nc_mutex_trylock +int _nc_mutex_trylock( + pthread_mutex_t *obj) + { return(*(int *)0); } + +#undef _nc_mutex_unlock +int _nc_mutex_unlock( + pthread_mutex_t *obj) + { return(*(int *)0); } + +/* ./tinfo/lib_has_cap.c */ + +#undef has_ic_sp +NCURSES_BOOL has_ic_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_ic +NCURSES_BOOL has_ic(void) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il_sp +NCURSES_BOOL has_il_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il +NCURSES_BOOL has_il(void) + { return(*(NCURSES_BOOL *)0); } + +/* ./tinfo/lib_kernel.c */ + +#undef erasechar_sp +char erasechar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef erasechar +char erasechar(void) + { return(*(char *)0); } + +#undef killchar_sp +char killchar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef killchar +char killchar(void) + { return(*(char *)0); } + +#undef flushinp_sp +int flushinp_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef flushinp +int flushinp(void) + { return(*(int *)0); } + +/* ./lib_keyname.c */ + +struct kn { short offset; int code; }; + +#undef keyname_sp +const char *keyname_sp( + SCREEN *sp, + int c) + { return(*(const char **)0); } + +#undef keyname +const char *keyname( + int c) + { return(*(const char **)0); } + +/* ./tinfo/lib_longname.c */ + +#undef longname_sp +char *longname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef longname +char *longname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_napms.c */ + +#undef napms_sp +int napms_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef napms +int napms( + int ms) + { return(*(int *)0); } + +/* ./tinfo/lib_options.c */ + +#undef idlok +int idlok( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef idcok +void idcok( + WINDOW *win, + NCURSES_BOOL flag) + { /* void */ } + +#undef halfdelay_sp +int halfdelay_sp( + SCREEN *sp, + int t) + { return(*(int *)0); } + +#undef halfdelay +int halfdelay( + int t) + { return(*(int *)0); } + +#undef nodelay +int nodelay( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef notimeout +int notimeout( + WINDOW *win, + NCURSES_BOOL f) + { return(*(int *)0); } + +#undef wtimeout +void wtimeout( + WINDOW *win, + int delay) + { /* void */ } + +#undef keypad +int keypad( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef meta +int meta( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef curs_set_sp +int curs_set_sp( + SCREEN *sp, + int vis) + { return(*(int *)0); } + +#undef curs_set +int curs_set( + int vis) + { return(*(int *)0); } + +#undef typeahead_sp +int typeahead_sp( + SCREEN *sp, + int fd) + { return(*(int *)0); } + +#undef typeahead +int typeahead( + int fd) + { return(*(int *)0); } + +#undef has_key_sp +int has_key_sp( + SCREEN *sp, + int keycode) + { return(*(int *)0); } + +#undef has_key +int has_key( + int keycode) + { return(*(int *)0); } + +#undef _nc_putp_flush_sp +int _nc_putp_flush_sp( + SCREEN *sp, + const char *name, + const char *value) + { return(*(int *)0); } + +#undef _nc_keypad +int _nc_keypad( + SCREEN *sp, + int flag) + { return(*(int *)0); } + +/* ./tinfo/lib_raw.c */ + +#undef raw_sp +int raw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef raw +int raw(void) + { return(*(int *)0); } + +#undef cbreak_sp +int cbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef cbreak +int cbreak(void) + { return(*(int *)0); } + +#undef qiflush_sp +void qiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef qiflush +void qiflush(void) + { /* void */ } + +#undef noraw_sp +int noraw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef noraw +int noraw(void) + { return(*(int *)0); } + +#undef nocbreak_sp +int nocbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef nocbreak +int nocbreak(void) + { return(*(int *)0); } + +#undef noqiflush_sp +void noqiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef noqiflush +void noqiflush(void) + { /* void */ } + +#undef intrflush_sp +int intrflush_sp( + SCREEN *sp, + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef intrflush +int intrflush( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/lib_setup.c */ + +#undef _nc_ttytype +char *_nc_ttytype(void) + { return(*(char **)0); } + +#undef _nc_ptr_Lines +int *_nc_ptr_Lines( + SCREEN *sp) + { return(*(int **)0); } + +#undef _nc_LINES +int _nc_LINES(void) + { return(*(int *)0); } + +#undef _nc_ptr_Cols +int *_nc_ptr_Cols( + SCREEN *sp) + { return(*(int **)0); } + +#undef _nc_COLS +int _nc_COLS(void) + { return(*(int *)0); } + +#undef _nc_ptr_Tabsize +int *_nc_ptr_Tabsize( + SCREEN *sp) + { return(*(int **)0); } + +#undef _nc_TABSIZE +int _nc_TABSIZE(void) + { return(*(int *)0); } + +#undef set_tabsize_sp +int set_tabsize_sp( + SCREEN *sp, + int value) + { return(*(int *)0); } + +#undef set_tabsize +int set_tabsize( + int value) + { return(*(int *)0); } + +#undef _nc_handle_sigwinch +int _nc_handle_sigwinch( + SCREEN *sp) + { return(*(int *)0); } + +#undef use_env_sp +void use_env_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_env +void use_env( + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + +#undef _nc_get_screensize +void _nc_get_screensize( + SCREEN *sp, + int *linep, + int *colp) + { /* void */ } + +#undef _nc_update_screensize +void _nc_update_screensize( + SCREEN *sp) + { /* void */ } + +#undef _nc_setup_tinfo +int _nc_setup_tinfo( + const char *const tn, + TERMTYPE2 *const tp) + { return(*(int *)0); } + +#undef _nc_tinfo_cmdch +void _nc_tinfo_cmdch( + TERMINAL *termp, + int proto) + { /* void */ } + +#undef _nc_get_locale +char *_nc_get_locale(void) + { return(*(char **)0); } + +#undef _nc_unicode_locale +int _nc_unicode_locale(void) + { return(*(int *)0); } + +#undef _nc_locale_breaks_acs +int _nc_locale_breaks_acs( + TERMINAL *termp) + { return(*(int *)0); } + +#undef _nc_setupterm +int _nc_setupterm( + const char *tname, + int Filedes, + int *errret, + int reuse) + { return(*(int *)0); } + +#undef _nc_find_prescr +SCREEN *_nc_find_prescr(void) + { return(*(SCREEN **)0); } + +#undef _nc_forget_prescr +void _nc_forget_prescr(void) + { /* void */ } + +#undef new_prescr +SCREEN *new_prescr(void) + { return(*(SCREEN **)0); } + +#undef setupterm +int setupterm( + const char *tname, + int Filedes, + int *errret) + { return(*(int *)0); } + +/* ./tinfo/lib_termcap.c */ + +#undef UP +char *UP; +#undef BC +char *BC; + +#undef tgetent_sp +int tgetent_sp( + SCREEN *sp, + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetent +int tgetent( + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetflag_sp +int tgetflag_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetflag +int tgetflag( + const char *id) + { return(*(int *)0); } + +#undef tgetnum_sp +int tgetnum_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetnum +int tgetnum( + const char *id) + { return(*(int *)0); } + +#undef tgetstr_sp +char *tgetstr_sp( + SCREEN *sp, + const char *id, + char **area) + { return(*(char **)0); } + +#undef tgetstr +char *tgetstr( + const char *id, + char **area) + { return(*(char **)0); } + +/* ./tinfo/lib_termname.c */ + +#undef termname_sp +char *termname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef termname +char *termname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_tgoto.c */ + +#undef tgoto +char *tgoto( + const char *string, + int x, + int y) + { return(*(char **)0); } + +/* ./tinfo/lib_ti.c */ + +#undef tigetflag_sp +int tigetflag_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetflag +int tigetflag( + const char *str) + { return(*(int *)0); } + +#undef tigetnum_sp +int tigetnum_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetnum +int tigetnum( + const char *str) + { return(*(int *)0); } + +#undef tigetstr_sp +char *tigetstr_sp( + SCREEN *sp, + const char *str) + { return(*(char **)0); } + +#undef tigetstr +char *tigetstr( + const char *str) + { return(*(char **)0); } + +/* ./tinfo/lib_tparm.c */ + +#undef _nc_tparm_err +int _nc_tparm_err; + +#undef _nc_tparm_analyze +int _nc_tparm_analyze( + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) + { return(*(int *)0); } + +#undef tparm +char *tparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef tiparm +char *tiparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + +/* ./tinfo/lib_tputs.c */ + +#undef PC +char PC; +#undef ospeed +short ospeed; +#undef _nc_nulls_sent +int _nc_nulls_sent; + +#undef _nc_set_no_padding +void _nc_set_no_padding( + SCREEN *sp) + { /* void */ } + +#undef delay_output_sp +int delay_output_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef delay_output +int delay_output( + int ms) + { return(*(int *)0); } + +#undef _nc_flush_sp +void _nc_flush_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_flush +void _nc_flush(void) + { /* void */ } + +#undef _nc_outch_sp +int _nc_outch_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_outch +int _nc_outch( + int ch) + { return(*(int *)0); } + +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + +#undef putp_sp +int putp_sp( + SCREEN *sp, + const char *string) + { return(*(int *)0); } + +#undef putp +int putp( + const char *string) + { return(*(int *)0); } + +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, + const char *string) + { return(*(int *)0); } + +#undef _nc_putp +int _nc_putp( + const char *name, + const char *string) + { return(*(int *)0); } + +#undef tputs_sp +int tputs_sp( + SCREEN *sp, + const char *string, + int affcnt, + NCURSES_OUTC_sp outc) + { return(*(int *)0); } + +#undef _nc_outc_wrapper +int _nc_outc_wrapper( + SCREEN *sp, + int c) + { return(*(int *)0); } + +#undef tputs +int tputs( + const char *string, + int affcnt, + int (*outc)( + int p1)) + { return(*(int *)0); } + +/* ./trace/lib_trace.c */ + +#undef _nc_tracing +unsigned _nc_tracing; + +#undef _nc__nc_tputs_trace +const char *_nc__nc_tputs_trace(void) + { return(*(const char **)0); } + +#undef _nc__nc_outchars +long _nc__nc_outchars(void) + { return(*(long *)0); } + +#undef _nc_set_tputs_trace +void _nc_set_tputs_trace( + const char *s) + { /* void */ } + +#undef _nc_count_outchars +void _nc_count_outchars( + long increment) + { /* void */ } + +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + +#undef trace +void trace( + const unsigned int tracelevel) + { /* void */ } + +#undef _tracef +void _tracef( + const char *fmt, + ...) + { /* void */ } + +#undef _nc_retrace_bool +NCURSES_BOOL _nc_retrace_bool( + int code) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_retrace_char +char _nc_retrace_char( + int code) + { return(*(char *)0); } + +#undef _nc_retrace_int +int _nc_retrace_int( + int code) + { return(*(int *)0); } + +#undef _nc_retrace_unsigned +unsigned _nc_retrace_unsigned( + unsigned code) + { return(*(unsigned *)0); } + +#undef _nc_retrace_ptr +char *_nc_retrace_ptr( + char *code) + { return(*(char **)0); } + +#undef _nc_retrace_cptr +const char *_nc_retrace_cptr( + const char *code) + { return(*(const char **)0); } + +#undef _nc_retrace_cvoid_ptr +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } + +#undef _nc_retrace_void_ptr +void *_nc_retrace_void_ptr( + void *code) + { return(*(void **)0); } + +#undef _nc_retrace_sp +SCREEN *_nc_retrace_sp( + SCREEN *code) + { return(*(SCREEN **)0); } + +#undef _nc_retrace_win +WINDOW *_nc_retrace_win( + WINDOW *code) + { return(*(WINDOW **)0); } + +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + +#undef _nc_use_tracef +int _nc_use_tracef( + unsigned mask) + { return(*(int *)0); } + +#undef _nc_locked_tracef +void _nc_locked_tracef( + const char *fmt, + ...) + { /* void */ } + +/* ./trace/lib_traceatr.c */ + +#undef _traceattr2 +char *_traceattr2( + int bufnum, + chtype newmode) + { return(*(char **)0); } + +#undef _traceattr +char *_traceattr( + attr_t newmode) + { return(*(char **)0); } + +#undef _nc_retrace_int_attr_t +int _nc_retrace_int_attr_t( + attr_t code) + { return(*(int *)0); } + +#undef _nc_retrace_attr_t +attr_t _nc_retrace_attr_t( + attr_t code) + { return(*(attr_t *)0); } + +#undef _nc_altcharset_name +const char *_nc_altcharset_name( + attr_t attr, + chtype ch) + { return(*(const char **)0); } + +#undef _tracechtype2 +char *_tracechtype2( + int bufnum, + chtype ch) + { return(*(char **)0); } + +#undef _tracechtype +char *_tracechtype( + chtype ch) + { return(*(char **)0); } + +#undef _nc_retrace_chtype +chtype _nc_retrace_chtype( + chtype code) + { return(*(chtype *)0); } + +#undef _tracecchar_t2 +char *_tracecchar_t2( + int bufnum, + const cchar_t *ch) + { return(*(char **)0); } + +#undef _tracecchar_t +char *_tracecchar_t( + const cchar_t *ch) + { return(*(char **)0); } + +/* ./trace/lib_tracebits.c */ + +#undef _nc_trace_ttymode +char *_nc_trace_ttymode( + const struct termios *tty) + { return(*(char **)0); } + +#undef _nc_tracebits +char *_nc_tracebits(void) + { return(*(char **)0); } + +/* ./trace/lib_tracechr.c */ + +#undef _nc_tracechar +char *_nc_tracechar( + SCREEN *sp, + int ch) + { return(*(char **)0); } + +#undef _tracechar +char *_tracechar( + int ch) + { return(*(char **)0); } + +/* ./tinfo/lib_ttyflags.c */ + +#undef _nc_get_tty_mode_sp +int _nc_get_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_get_tty_mode +int _nc_get_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode_sp +int _nc_set_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode +int _nc_set_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef def_shell_mode_sp +int def_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_shell_mode +int def_shell_mode(void) + { return(*(int *)0); } + +#undef def_prog_mode_sp +int def_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_prog_mode +int def_prog_mode(void) + { return(*(int *)0); } + +#undef reset_prog_mode_sp +int reset_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_prog_mode +int reset_prog_mode(void) + { return(*(int *)0); } + +#undef reset_shell_mode_sp +int reset_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_shell_mode +int reset_shell_mode(void) + { return(*(int *)0); } + +#undef savetty_sp +int savetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef savetty +int savetty(void) + { return(*(int *)0); } + +#undef resetty_sp +int resetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef resetty +int resetty(void) + { return(*(int *)0); } + +/* ./tty/lib_twait.c */ + +#undef _nc_timed_wait +int _nc_timed_wait( + SCREEN *sp, + int mode, + int milliseconds, + int *timeleft) + { return(*(int *)0); } + +/* ./tinfo/name_match.c */ + +#undef _nc_first_name +char *_nc_first_name( + const char *const sp) + { return(*(char **)0); } + +#undef _nc_name_match +int _nc_name_match( + const char *const namelst, + const char *const name, + const char *const delim) + { return(*(int *)0); } + +/* ./names.c */ + +#undef _nc_boolnames +const char *const *_nc_boolnames(void) + { return(*(const char **)0); } + +#undef _nc_boolfnames +const char *const *_nc_boolfnames(void) + { return(*(const char **)0); } + +#undef _nc_numnames +const char *const *_nc_numnames(void) + { return(*(const char **)0); } + +#undef _nc_numfnames +const char *const *_nc_numfnames(void) + { return(*(const char **)0); } + +#undef _nc_strnames +const char *const *_nc_strnames(void) + { return(*(const char **)0); } + +#undef _nc_strfnames +const char *const *_nc_strfnames(void) + { return(*(const char **)0); } + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } + +/* ./tinfo/read_entry.c */ + +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE2 *const tp) + { /* void */ } + +#undef _nc_read_termtype +int _nc_read_termtype( + TERMTYPE2 *ptr, + char *buffer, + int limit) + { return(*(int *)0); } + +#undef _nc_read_file_entry +int _nc_read_file_entry( + const char *const filename, + TERMTYPE2 *ptr) + { return(*(int *)0); } + +#undef _nc_read_entry2 +int _nc_read_entry2( + const char *const name, + char *const filename, + TERMTYPE2 *const tp) + { return(*(int *)0); } + +#undef _nc_read_entry +int _nc_read_entry( + const char *const name, + char *const filename, + TERMTYPE *const tp) + { return(*(int *)0); } + +/* ./tinfo/read_termcap.c */ + +#undef _nc_read_termcap +void _nc_read_termcap(void) + { /* void */ } + +/* ./tinfo/strings.c */ + +#undef _nc_str_init +string_desc *_nc_str_init( + string_desc *dst, + char *src, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_null +string_desc *_nc_str_null( + string_desc *dst, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_copy +string_desc *_nc_str_copy( + string_desc *dst, + string_desc *src) + { return(*(string_desc **)0); } + +#undef _nc_safe_strcat +NCURSES_BOOL _nc_safe_strcat( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_safe_strcpy +NCURSES_BOOL _nc_safe_strcpy( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +/* ./trace/trace_buf.c */ + +#undef _nc_trace_buf +char *_nc_trace_buf( + int bufnum, + size_t want) + { return(*(char **)0); } + +#undef _nc_trace_bufcat +char *_nc_trace_bufcat( + int bufnum, + const char *value) + { return(*(char **)0); } + +/* ./trace/trace_tries.c */ + +#undef _nc_trace_tries +void _nc_trace_tries( + TRIES *tree) + { /* void */ } + +/* ./base/tries.c */ + +#undef _nc_expand_try +char *_nc_expand_try( + TRIES *tree, + unsigned code, + int *count, + size_t len) + { return(*(char **)0); } + +#undef _nc_remove_key +int _nc_remove_key( + TRIES **tree, + unsigned code) + { return(*(int *)0); } + +#undef _nc_remove_string +int _nc_remove_string( + TRIES **tree, + const char *string) + { return(*(int *)0); } + +/* ./tinfo/trim_sgr0.c */ + +#undef _nc_trim_sgr0 +char *_nc_trim_sgr0( + TERMTYPE2 *tp) + { return(*(char **)0); } + +/* ./unctrl.c */ + +#undef unctrl_sp +const char *unctrl_sp( + SCREEN *sp, + chtype ch) + { return(*(const char **)0); } + +#undef unctrl +const char *unctrl( + chtype ch) + { return(*(const char **)0); } + +/* ./trace/visbuf.c */ + +#undef _nc_visbuf2 +const char *_nc_visbuf2( + int bufnum, + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbuf +const char *_nc_visbuf( + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbufn +const char *_nc_visbufn( + const char *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viswbuf2 +const char *_nc_viswbuf2( + int bufnum, + const wchar_t *buf) + { return(*(const char **)0); } + +#undef _nc_viswbuf +const char *_nc_viswbuf( + const wchar_t *buf) + { return(*(const char **)0); } + +#undef _nc_viswbufn +const char *_nc_viswbufn( + const wchar_t *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viswibuf +const char *_nc_viswibuf( + const wint_t *buf) + { return(*(const char **)0); } + +#undef _nc_viscbuf2 +const char *_nc_viscbuf2( + int bufnum, + const cchar_t *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viscbuf +const char *_nc_viscbuf( + const cchar_t *buf, + int len) + { return(*(const char **)0); } + +/* ./base/define_key.c */ + +#undef define_key_sp +int define_key_sp( + SCREEN *sp, + const char *str, + int keycode) + { return(*(int *)0); } + +#undef define_key +int define_key( + const char *str, + int keycode) + { return(*(int *)0); } + +/* ./tinfo/hashed_db.c */ + +#undef _nc_hashed_db +void _nc_hashed_db(void) + { /* void */ } + +/* ./base/key_defined.c */ + +#undef key_defined_sp +int key_defined_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef key_defined +int key_defined( + const char *str) + { return(*(int *)0); } + +/* ./base/keybound.c */ + +#undef keybound_sp +char *keybound_sp( + SCREEN *sp, + int code, + int count) + { return(*(char **)0); } + +#undef keybound +char *keybound( + int code, + int count) + { return(*(char **)0); } + +/* ./base/keyok.c */ + +#undef keyok_sp +int keyok_sp( + SCREEN *sp, + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef keyok +int keyok( + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./base/version.c */ + +#undef curses_version +const char *curses_version(void) + { return(*(const char **)0); } diff --git a/deps/ncurses-6.3/ncurses/llib-ltinfow b/deps/ncurses-6.3/ncurses/llib-ltinfow new file mode 100644 index 0000000..93c9274 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/llib-ltinfow @@ -0,0 +1,1608 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2012-2016,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: Thomas E. Dickey 2012-on * + ****************************************************************************/ +/* LINTLIBRARY */ + +/* ./tinfo/access.c */ + +#include <curses.priv.h> + +#undef _nc_rootname +char *_nc_rootname( + char *path) + { return(*(char **)0); } + +#undef _nc_is_abs_path +NCURSES_BOOL _nc_is_abs_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_pathlast +unsigned _nc_pathlast( + const char *path) + { return(*(unsigned *)0); } + +#undef _nc_basename +char *_nc_basename( + char *path) + { return(*(char **)0); } + +#undef _nc_access +int _nc_access( + const char *path, + int mode) + { return(*(int *)0); } + +#undef _nc_is_dir_path +NCURSES_BOOL _nc_is_dir_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_is_file_path +NCURSES_BOOL _nc_is_file_path( + const char *path) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_env_access +int _nc_env_access(void) + { return(*(int *)0); } + +#undef _nc_safe_fopen +FILE *_nc_safe_fopen( + const char *path, + const char *mode) + { return(*(FILE **)0); } + +#undef _nc_safe_open3 +int _nc_safe_open3( + const char *path, + int flags, + mode_t mode) + { return(*(int *)0); } + +/* ./tinfo/add_tries.c */ + +#undef _nc_add_to_try +int _nc_add_to_try( + TRIES **tree, + const char *str, + unsigned code) + { return(*(int *)0); } + +/* ./tinfo/alloc_ttype.c */ + +#undef _nc_align_termtype +void _nc_align_termtype( + TERMTYPE2 *to, + TERMTYPE2 *from) + { /* void */ } + +#undef _nc_copy_termtype +void _nc_copy_termtype( + TERMTYPE *dst, + const TERMTYPE *src) + { /* void */ } + +#undef _nc_copy_termtype2 +void _nc_copy_termtype2( + TERMTYPE2 *dst, + const TERMTYPE2 *src) + { /* void */ } + +#undef _nc_export_termtype2 +void _nc_export_termtype2( + TERMTYPE *dst, + const TERMTYPE2 *src) + { /* void */ } + +/* ./codes.c */ + +#undef boolcodes +const char *const boolcodes[] = {0}; +#undef numcodes +const char *const numcodes[] = {0}; +#undef strcodes +const char *const strcodes[] = {0}; + +/* ./comp_captab.c */ + +#undef _nc_get_table +const struct name_table_entry *_nc_get_table( + NCURSES_BOOL termcap) + { return(*(const struct name_table_entry **)0); } + +#undef _nc_get_hash_table +const HashValue *_nc_get_hash_table( + NCURSES_BOOL termcap) + { return(*(const HashValue **)0); } + +#undef _nc_get_alias_table +const struct alias *_nc_get_alias_table( + NCURSES_BOOL termcap) + { return(*(const struct alias **)0); } + +#undef _nc_get_hash_info +const HashData *_nc_get_hash_info( + NCURSES_BOOL termcap) + { return(*(const HashData **)0); } + +/* ./tinfo/comp_error.c */ + +#undef _nc_suppress_warnings +NCURSES_BOOL _nc_suppress_warnings; +#undef _nc_curr_line +int _nc_curr_line; +#undef _nc_curr_col +int _nc_curr_col; + +#undef _nc_get_source +const char *_nc_get_source(void) + { return(*(const char **)0); } + +#undef _nc_set_source +void _nc_set_source( + const char *const name) + { /* void */ } + +#undef _nc_set_type +void _nc_set_type( + const char *const name) + { /* void */ } + +#undef _nc_get_type +void _nc_get_type( + char *name) + { /* void */ } + +#undef _nc_warning +void _nc_warning( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_err_abort +void _nc_err_abort( + const char *const fmt, + ...) + { /* void */ } + +#undef _nc_syserr_abort +void _nc_syserr_abort( + const char *const fmt, + ...) + { /* void */ } + +/* ./tinfo/comp_hash.c */ + +#undef _nc_find_entry +struct name_table_entry const *_nc_find_entry( + const char *string, + const HashValue *hash_table) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_type_entry +struct name_table_entry const *_nc_find_type_entry( + const char *string, + int type, + NCURSES_BOOL termcap) + { return(*(struct name_table_entry const **)0); } + +#undef _nc_find_user_entry +struct user_table_entry const *_nc_find_user_entry( + const char *string) + { return(*(struct user_table_entry const **)0); } + +/* ./comp_userdefs.c */ + +#undef _nc_get_userdefs_table +const struct user_table_entry *_nc_get_userdefs_table(void) + { return(*(const struct user_table_entry **)0); } + +#undef _nc_get_hash_user +const HashData *_nc_get_hash_user(void) + { return(*(const HashData **)0); } + +/* ./tinfo/db_iterator.c */ + +#undef _nc_tic_dir +const char *_nc_tic_dir( + const char *path) + { return(*(const char **)0); } + +#undef _nc_keep_tic_dir +void _nc_keep_tic_dir( + const char *path) + { /* void */ } + +#undef _nc_last_db +void _nc_last_db(void) + { /* void */ } + +#undef _nc_next_db +const char *_nc_next_db( + DBDIRS *state, + int *offset) + { return(*(const char **)0); } + +#undef _nc_first_db +void _nc_first_db( + DBDIRS *state, + int *offset) + { /* void */ } + +/* ./tinfo/doalloc.c */ + +#undef _nc_doalloc +void *_nc_doalloc( + void *oldp, + size_t amount) + { return(*(void **)0); } + +/* ./tinfo/entries.c */ + +#undef _nc_head +ENTRY *_nc_head; +#undef _nc_tail +ENTRY *_nc_tail; + +#undef _nc_free_entry +void _nc_free_entry( + ENTRY *headp, + TERMTYPE2 *tterm) + { /* void */ } + +#undef _nc_free_entries +void _nc_free_entries( + ENTRY *headp) + { /* void */ } + +#undef _nc_leaks_tinfo +void _nc_leaks_tinfo(void) + { /* void */ } + +#undef exit_terminfo +void exit_terminfo( + int code) + { /* void */ } + +/* ./fallback.c */ + +#undef _nc_fallback2 +const TERMTYPE2 *_nc_fallback2( + const char *name) + { return(*(const TERMTYPE2 **)0); } + +#undef _nc_fallback +const TERMTYPE *_nc_fallback( + const char *name) + { return(*(const TERMTYPE **)0); } + +/* ./tinfo/free_ttype.c */ + +#undef _nc_free_termtype +void _nc_free_termtype( + TERMTYPE *ptr) + { /* void */ } + +#undef _nc_free_termtype2 +void _nc_free_termtype2( + TERMTYPE2 *ptr) + { /* void */ } + +#undef _nc_user_definable +NCURSES_BOOL _nc_user_definable; + +#undef use_extended_names +int use_extended_names( + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/getenv_num.c */ + +#undef _nc_getenv_num +int _nc_getenv_num( + const char *name) + { return(*(int *)0); } + +#undef _nc_setenv_num +void _nc_setenv_num( + const char *name, + int value) + { /* void */ } + +/* ./tinfo/home_terminfo.c */ + +#undef _nc_home_terminfo +char *_nc_home_terminfo(void) + { return(*(char **)0); } + +/* ./tinfo/init_keytry.c */ + +#undef _nc_init_keytry +void _nc_init_keytry( + SCREEN *sp) + { /* void */ } + +/* ./tinfo/lib_acs.c */ + +#undef acs_map +chtype acs_map[128]; + +#undef _nc_init_acs_sp +void _nc_init_acs_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_init_acs +void _nc_init_acs(void) + { /* void */ } + +/* ./tinfo/lib_baudrate.c */ + +struct speed { + int given_speed; + int actual_speed; +}; + +#undef _nc_baudrate +int _nc_baudrate( + int OSpeed) + { return(*(int *)0); } + +#undef _nc_ospeed +int _nc_ospeed( + int BaudRate) + { return(*(int *)0); } + +#undef baudrate_sp +int baudrate_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef baudrate +int baudrate(void) + { return(*(int *)0); } + +/* ./tinfo/lib_cur_term.c */ + +#undef cur_term +TERMINAL *cur_term; + +#undef set_curterm_sp +TERMINAL *set_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef set_curterm +TERMINAL *set_curterm( + TERMINAL *termp) + { return(*(TERMINAL **)0); } + +#undef del_curterm_sp +int del_curterm_sp( + SCREEN *sp, + TERMINAL *termp) + { return(*(int *)0); } + +#undef del_curterm +int del_curterm( + TERMINAL *termp) + { return(*(int *)0); } + +/* ./tinfo/lib_data.c */ + +#undef stdscr +WINDOW *stdscr; +#undef curscr +WINDOW *curscr; +#undef newscr +WINDOW *newscr; +#undef _nc_screen_chain +SCREEN *_nc_screen_chain; +#undef SP +SCREEN *SP; +#undef _nc_globals +NCURSES_GLOBALS _nc_globals; +#undef _nc_prescreen +NCURSES_PRESCREEN _nc_prescreen; + +#undef _nc_screen_of +SCREEN *_nc_screen_of( + WINDOW *win) + { return(*(SCREEN **)0); } + +/* ./tinfo/lib_has_cap.c */ + +#undef has_ic_sp +NCURSES_BOOL has_ic_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_ic +NCURSES_BOOL has_ic(void) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il_sp +NCURSES_BOOL has_il_sp( + SCREEN *sp) + { return(*(NCURSES_BOOL *)0); } + +#undef has_il +NCURSES_BOOL has_il(void) + { return(*(NCURSES_BOOL *)0); } + +/* ./tinfo/lib_kernel.c */ + +#undef erasechar_sp +char erasechar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef erasechar +char erasechar(void) + { return(*(char *)0); } + +#undef killchar_sp +char killchar_sp( + SCREEN *sp) + { return(*(char *)0); } + +#undef killchar +char killchar(void) + { return(*(char *)0); } + +#undef flushinp_sp +int flushinp_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef flushinp +int flushinp(void) + { return(*(int *)0); } + +/* ./lib_keyname.c */ + +struct kn { short offset; int code; }; + +#undef keyname_sp +const char *keyname_sp( + SCREEN *sp, + int c) + { return(*(const char **)0); } + +#undef keyname +const char *keyname( + int c) + { return(*(const char **)0); } + +/* ./tinfo/lib_longname.c */ + +#undef longname_sp +char *longname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef longname +char *longname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_napms.c */ + +#undef napms_sp +int napms_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef napms +int napms( + int ms) + { return(*(int *)0); } + +/* ./tinfo/lib_options.c */ + +#undef idlok +int idlok( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef idcok +void idcok( + WINDOW *win, + NCURSES_BOOL flag) + { /* void */ } + +#undef halfdelay_sp +int halfdelay_sp( + SCREEN *sp, + int t) + { return(*(int *)0); } + +#undef halfdelay +int halfdelay( + int t) + { return(*(int *)0); } + +#undef nodelay +int nodelay( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef notimeout +int notimeout( + WINDOW *win, + NCURSES_BOOL f) + { return(*(int *)0); } + +#undef wtimeout +void wtimeout( + WINDOW *win, + int delay) + { /* void */ } + +#undef keypad +int keypad( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef meta +int meta( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef curs_set_sp +int curs_set_sp( + SCREEN *sp, + int vis) + { return(*(int *)0); } + +#undef curs_set +int curs_set( + int vis) + { return(*(int *)0); } + +#undef typeahead_sp +int typeahead_sp( + SCREEN *sp, + int fd) + { return(*(int *)0); } + +#undef typeahead +int typeahead( + int fd) + { return(*(int *)0); } + +#undef has_key_sp +int has_key_sp( + SCREEN *sp, + int keycode) + { return(*(int *)0); } + +#undef has_key +int has_key( + int keycode) + { return(*(int *)0); } + +#undef _nc_putp_flush_sp +int _nc_putp_flush_sp( + SCREEN *sp, + const char *name, + const char *value) + { return(*(int *)0); } + +#undef _nc_keypad +int _nc_keypad( + SCREEN *sp, + int flag) + { return(*(int *)0); } + +/* ./tinfo/lib_raw.c */ + +#undef raw_sp +int raw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef raw +int raw(void) + { return(*(int *)0); } + +#undef cbreak_sp +int cbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef cbreak +int cbreak(void) + { return(*(int *)0); } + +#undef qiflush_sp +void qiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef qiflush +void qiflush(void) + { /* void */ } + +#undef noraw_sp +int noraw_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef noraw +int noraw(void) + { return(*(int *)0); } + +#undef nocbreak_sp +int nocbreak_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef nocbreak +int nocbreak(void) + { return(*(int *)0); } + +#undef noqiflush_sp +void noqiflush_sp( + SCREEN *sp) + { /* void */ } + +#undef noqiflush +void noqiflush(void) + { /* void */ } + +#undef intrflush_sp +int intrflush_sp( + SCREEN *sp, + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef intrflush +int intrflush( + WINDOW *win, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./tinfo/lib_setup.c */ + +#undef ttytype +char ttytype[256]; +#undef LINES +int LINES; +#undef COLS +int COLS; +#undef TABSIZE +int TABSIZE; + +#undef set_tabsize_sp +int set_tabsize_sp( + SCREEN *sp, + int value) + { return(*(int *)0); } + +#undef set_tabsize +int set_tabsize( + int value) + { return(*(int *)0); } + +#undef _nc_handle_sigwinch +int _nc_handle_sigwinch( + SCREEN *sp) + { return(*(int *)0); } + +#undef use_env_sp +void use_env_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl_sp +void use_tioctl_sp( + SCREEN *sp, + NCURSES_BOOL f) + { /* void */ } + +#undef use_env +void use_env( + NCURSES_BOOL f) + { /* void */ } + +#undef use_tioctl +void use_tioctl( + NCURSES_BOOL f) + { /* void */ } + +#undef _nc_get_screensize +void _nc_get_screensize( + SCREEN *sp, + int *linep, + int *colp) + { /* void */ } + +#undef _nc_update_screensize +void _nc_update_screensize( + SCREEN *sp) + { /* void */ } + +#undef _nc_setup_tinfo +int _nc_setup_tinfo( + const char *const tn, + TERMTYPE2 *const tp) + { return(*(int *)0); } + +#undef _nc_tinfo_cmdch +void _nc_tinfo_cmdch( + TERMINAL *termp, + int proto) + { /* void */ } + +#undef _nc_get_locale +char *_nc_get_locale(void) + { return(*(char **)0); } + +#undef _nc_unicode_locale +int _nc_unicode_locale(void) + { return(*(int *)0); } + +#undef _nc_locale_breaks_acs +int _nc_locale_breaks_acs( + TERMINAL *termp) + { return(*(int *)0); } + +#undef _nc_setupterm +int _nc_setupterm( + const char *tname, + int Filedes, + int *errret, + int reuse) + { return(*(int *)0); } + +#undef new_prescr +SCREEN *new_prescr(void) + { return(*(SCREEN **)0); } + +#undef setupterm +int setupterm( + const char *tname, + int Filedes, + int *errret) + { return(*(int *)0); } + +/* ./tinfo/lib_termcap.c */ + +#undef UP +char *UP; +#undef BC +char *BC; + +#undef tgetent_sp +int tgetent_sp( + SCREEN *sp, + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetent +int tgetent( + char *bufp, + const char *name) + { return(*(int *)0); } + +#undef tgetflag_sp +int tgetflag_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetflag +int tgetflag( + const char *id) + { return(*(int *)0); } + +#undef tgetnum_sp +int tgetnum_sp( + SCREEN *sp, + const char *id) + { return(*(int *)0); } + +#undef tgetnum +int tgetnum( + const char *id) + { return(*(int *)0); } + +#undef tgetstr_sp +char *tgetstr_sp( + SCREEN *sp, + const char *id, + char **area) + { return(*(char **)0); } + +#undef tgetstr +char *tgetstr( + const char *id, + char **area) + { return(*(char **)0); } + +/* ./tinfo/lib_termname.c */ + +#undef termname_sp +char *termname_sp( + SCREEN *sp) + { return(*(char **)0); } + +#undef termname +char *termname(void) + { return(*(char **)0); } + +/* ./tinfo/lib_tgoto.c */ + +#undef tgoto +char *tgoto( + const char *string, + int x, + int y) + { return(*(char **)0); } + +/* ./tinfo/lib_ti.c */ + +#undef tigetflag_sp +int tigetflag_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetflag +int tigetflag( + const char *str) + { return(*(int *)0); } + +#undef tigetnum_sp +int tigetnum_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef tigetnum +int tigetnum( + const char *str) + { return(*(int *)0); } + +#undef tigetstr_sp +char *tigetstr_sp( + SCREEN *sp, + const char *str) + { return(*(char **)0); } + +#undef tigetstr +char *tigetstr( + const char *str) + { return(*(char **)0); } + +/* ./tinfo/lib_tparm.c */ + +#undef _nc_tparm_err +int _nc_tparm_err; + +#undef _nc_tparm_analyze +int _nc_tparm_analyze( + TERMINAL *term, + const char *string, + char **p_is_s, + int *_nc_popcount) + { return(*(int *)0); } + +#undef tparm +char *tparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef tiparm +char *tiparm( + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_tiparm +char *_nc_tiparm( + int expected, + const char *string, + ...) + { return(*(char **)0); } + +#undef _nc_reset_tparm +void _nc_reset_tparm( + TERMINAL *term) + { /* void */ } + +/* ./tinfo/lib_tputs.c */ + +#undef PC +char PC; +#undef ospeed +short ospeed; +#undef _nc_nulls_sent +int _nc_nulls_sent; + +#undef _nc_set_no_padding +void _nc_set_no_padding( + SCREEN *sp) + { /* void */ } + +#undef delay_output_sp +int delay_output_sp( + SCREEN *sp, + int ms) + { return(*(int *)0); } + +#undef delay_output +int delay_output( + int ms) + { return(*(int *)0); } + +#undef _nc_flush_sp +void _nc_flush_sp( + SCREEN *sp) + { /* void */ } + +#undef _nc_flush +void _nc_flush(void) + { /* void */ } + +#undef _nc_outch_sp +int _nc_outch_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_outch +int _nc_outch( + int ch) + { return(*(int *)0); } + +#undef _nc_putchar_sp +int _nc_putchar_sp( + SCREEN *sp, + int ch) + { return(*(int *)0); } + +#undef _nc_putchar +int _nc_putchar( + int ch) + { return(*(int *)0); } + +#undef putp_sp +int putp_sp( + SCREEN *sp, + const char *string) + { return(*(int *)0); } + +#undef putp +int putp( + const char *string) + { return(*(int *)0); } + +#undef _nc_putp_sp +int _nc_putp_sp( + SCREEN *sp, + const char *name, + const char *string) + { return(*(int *)0); } + +#undef _nc_putp +int _nc_putp( + const char *name, + const char *string) + { return(*(int *)0); } + +#undef tputs_sp +int tputs_sp( + SCREEN *sp, + const char *string, + int affcnt, + NCURSES_OUTC_sp outc) + { return(*(int *)0); } + +#undef _nc_outc_wrapper +int _nc_outc_wrapper( + SCREEN *sp, + int c) + { return(*(int *)0); } + +#undef tputs +int tputs( + const char *string, + int affcnt, + int (*outc)( + int p1)) + { return(*(int *)0); } + +/* ./trace/lib_trace.c */ + +#undef _nc_tracing +unsigned _nc_tracing; +#undef _nc_tputs_trace +const char *_nc_tputs_trace = {0}; +#undef _nc_outchars +long _nc_outchars; + +#undef curses_trace +unsigned curses_trace( + unsigned tracelevel) + { return(*(unsigned *)0); } + +#undef trace +void trace( + const unsigned int tracelevel) + { /* void */ } + +#undef _tracef +void _tracef( + const char *fmt, + ...) + { /* void */ } + +#undef _nc_retrace_bool +NCURSES_BOOL _nc_retrace_bool( + int code) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_retrace_char +char _nc_retrace_char( + int code) + { return(*(char *)0); } + +#undef _nc_retrace_int +int _nc_retrace_int( + int code) + { return(*(int *)0); } + +#undef _nc_retrace_unsigned +unsigned _nc_retrace_unsigned( + unsigned code) + { return(*(unsigned *)0); } + +#undef _nc_retrace_ptr +char *_nc_retrace_ptr( + char *code) + { return(*(char **)0); } + +#undef _nc_retrace_cptr +const char *_nc_retrace_cptr( + const char *code) + { return(*(const char **)0); } + +#undef _nc_retrace_cvoid_ptr +const void *_nc_retrace_cvoid_ptr( + const void *code) + { return(*(const void **)0); } + +#undef _nc_retrace_void_ptr +void *_nc_retrace_void_ptr( + void *code) + { return(*(void **)0); } + +#undef _nc_retrace_sp +SCREEN *_nc_retrace_sp( + SCREEN *code) + { return(*(SCREEN **)0); } + +#undef _nc_retrace_win +WINDOW *_nc_retrace_win( + WINDOW *code) + { return(*(WINDOW **)0); } + +#undef _nc_fmt_funcptr +char *_nc_fmt_funcptr( + char *target, + const char *source, + size_t size) + { return(*(char **)0); } + +/* ./trace/lib_traceatr.c */ + +#undef _traceattr2 +char *_traceattr2( + int bufnum, + chtype newmode) + { return(*(char **)0); } + +#undef _traceattr +char *_traceattr( + attr_t newmode) + { return(*(char **)0); } + +#undef _nc_retrace_int_attr_t +int _nc_retrace_int_attr_t( + attr_t code) + { return(*(int *)0); } + +#undef _nc_retrace_attr_t +attr_t _nc_retrace_attr_t( + attr_t code) + { return(*(attr_t *)0); } + +#undef _nc_altcharset_name +const char *_nc_altcharset_name( + attr_t attr, + chtype ch) + { return(*(const char **)0); } + +#undef _tracechtype2 +char *_tracechtype2( + int bufnum, + chtype ch) + { return(*(char **)0); } + +#undef _tracechtype +char *_tracechtype( + chtype ch) + { return(*(char **)0); } + +#undef _nc_retrace_chtype +chtype _nc_retrace_chtype( + chtype code) + { return(*(chtype *)0); } + +#undef _tracecchar_t2 +char *_tracecchar_t2( + int bufnum, + const cchar_t *ch) + { return(*(char **)0); } + +#undef _tracecchar_t +char *_tracecchar_t( + const cchar_t *ch) + { return(*(char **)0); } + +/* ./trace/lib_tracebits.c */ + +#undef _nc_trace_ttymode +char *_nc_trace_ttymode( + const struct termios *tty) + { return(*(char **)0); } + +#undef _nc_tracebits +char *_nc_tracebits(void) + { return(*(char **)0); } + +/* ./trace/lib_tracechr.c */ + +#undef _nc_tracechar +char *_nc_tracechar( + SCREEN *sp, + int ch) + { return(*(char **)0); } + +#undef _tracechar +char *_tracechar( + int ch) + { return(*(char **)0); } + +/* ./tinfo/lib_ttyflags.c */ + +#undef _nc_get_tty_mode_sp +int _nc_get_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_get_tty_mode +int _nc_get_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode_sp +int _nc_set_tty_mode_sp( + SCREEN *sp, + struct termios *buf) + { return(*(int *)0); } + +#undef _nc_set_tty_mode +int _nc_set_tty_mode( + struct termios *buf) + { return(*(int *)0); } + +#undef def_shell_mode_sp +int def_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_shell_mode +int def_shell_mode(void) + { return(*(int *)0); } + +#undef def_prog_mode_sp +int def_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef def_prog_mode +int def_prog_mode(void) + { return(*(int *)0); } + +#undef reset_prog_mode_sp +int reset_prog_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_prog_mode +int reset_prog_mode(void) + { return(*(int *)0); } + +#undef reset_shell_mode_sp +int reset_shell_mode_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef reset_shell_mode +int reset_shell_mode(void) + { return(*(int *)0); } + +#undef savetty_sp +int savetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef savetty +int savetty(void) + { return(*(int *)0); } + +#undef resetty_sp +int resetty_sp( + SCREEN *sp) + { return(*(int *)0); } + +#undef resetty +int resetty(void) + { return(*(int *)0); } + +/* ./tty/lib_twait.c */ + +#undef _nc_timed_wait +int _nc_timed_wait( + SCREEN *sp, + int mode, + int milliseconds, + int *timeleft) + { return(*(int *)0); } + +/* ./tinfo/name_match.c */ + +#undef _nc_first_name +char *_nc_first_name( + const char *const sp) + { return(*(char **)0); } + +#undef _nc_name_match +int _nc_name_match( + const char *const namelst, + const char *const name, + const char *const delim) + { return(*(int *)0); } + +/* ./names.c */ + +#undef boolnames +const char *const boolnames[] = {0}; +#undef boolfnames +const char *const boolfnames[] = {0}; +#undef numnames +const char *const numnames[] = {0}; +#undef numfnames +const char *const numfnames[] = {0}; +#undef strnames +const char *const strnames[] = {0}; +#undef strfnames +const char *const strfnames[] = {0}; + +/* ./tinfo/obsolete.c */ + +#undef _nc_set_buffer_sp +void _nc_set_buffer_sp( + SCREEN *sp, + FILE *ofp, + int buffered) + { /* void */ } + +#undef _nc_set_buffer +void _nc_set_buffer( + FILE *ofp, + int buffered) + { /* void */ } + +/* ./tinfo/read_entry.c */ + +#undef _nc_init_termtype +void _nc_init_termtype( + TERMTYPE2 *const tp) + { /* void */ } + +#undef _nc_read_termtype +int _nc_read_termtype( + TERMTYPE2 *ptr, + char *buffer, + int limit) + { return(*(int *)0); } + +#undef _nc_read_file_entry +int _nc_read_file_entry( + const char *const filename, + TERMTYPE2 *ptr) + { return(*(int *)0); } + +#undef _nc_read_entry2 +int _nc_read_entry2( + const char *const name, + char *const filename, + TERMTYPE2 *const tp) + { return(*(int *)0); } + +#undef _nc_read_entry +int _nc_read_entry( + const char *const name, + char *const filename, + TERMTYPE *const tp) + { return(*(int *)0); } + +/* ./tinfo/read_termcap.c */ + +#undef _nc_read_termcap +void _nc_read_termcap(void) + { /* void */ } + +/* ./tinfo/strings.c */ + +#undef _nc_str_init +string_desc *_nc_str_init( + string_desc *dst, + char *src, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_null +string_desc *_nc_str_null( + string_desc *dst, + size_t len) + { return(*(string_desc **)0); } + +#undef _nc_str_copy +string_desc *_nc_str_copy( + string_desc *dst, + string_desc *src) + { return(*(string_desc **)0); } + +#undef _nc_safe_strcat +NCURSES_BOOL _nc_safe_strcat( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +#undef _nc_safe_strcpy +NCURSES_BOOL _nc_safe_strcpy( + string_desc *dst, + const char *src) + { return(*(NCURSES_BOOL *)0); } + +/* ./trace/trace_buf.c */ + +#undef _nc_trace_buf +char *_nc_trace_buf( + int bufnum, + size_t want) + { return(*(char **)0); } + +#undef _nc_trace_bufcat +char *_nc_trace_bufcat( + int bufnum, + const char *value) + { return(*(char **)0); } + +/* ./trace/trace_tries.c */ + +#undef _nc_trace_tries +void _nc_trace_tries( + TRIES *tree) + { /* void */ } + +/* ./base/tries.c */ + +#undef _nc_expand_try +char *_nc_expand_try( + TRIES *tree, + unsigned code, + int *count, + size_t len) + { return(*(char **)0); } + +#undef _nc_remove_key +int _nc_remove_key( + TRIES **tree, + unsigned code) + { return(*(int *)0); } + +#undef _nc_remove_string +int _nc_remove_string( + TRIES **tree, + const char *string) + { return(*(int *)0); } + +/* ./tinfo/trim_sgr0.c */ + +#undef _nc_trim_sgr0 +char *_nc_trim_sgr0( + TERMTYPE2 *tp) + { return(*(char **)0); } + +/* ./unctrl.c */ + +#undef unctrl_sp +const char *unctrl_sp( + SCREEN *sp, + chtype ch) + { return(*(const char **)0); } + +#undef unctrl +const char *unctrl( + chtype ch) + { return(*(const char **)0); } + +/* ./trace/visbuf.c */ + +#undef _nc_visbuf2 +const char *_nc_visbuf2( + int bufnum, + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbuf +const char *_nc_visbuf( + const char *buf) + { return(*(const char **)0); } + +#undef _nc_visbufn +const char *_nc_visbufn( + const char *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viswbuf2 +const char *_nc_viswbuf2( + int bufnum, + const wchar_t *buf) + { return(*(const char **)0); } + +#undef _nc_viswbuf +const char *_nc_viswbuf( + const wchar_t *buf) + { return(*(const char **)0); } + +#undef _nc_viswbufn +const char *_nc_viswbufn( + const wchar_t *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viswibuf +const char *_nc_viswibuf( + const wint_t *buf) + { return(*(const char **)0); } + +#undef _nc_viscbuf2 +const char *_nc_viscbuf2( + int bufnum, + const cchar_t *buf, + int len) + { return(*(const char **)0); } + +#undef _nc_viscbuf +const char *_nc_viscbuf( + const cchar_t *buf, + int len) + { return(*(const char **)0); } + +/* ./base/define_key.c */ + +#undef define_key_sp +int define_key_sp( + SCREEN *sp, + const char *str, + int keycode) + { return(*(int *)0); } + +#undef define_key +int define_key( + const char *str, + int keycode) + { return(*(int *)0); } + +/* ./tinfo/hashed_db.c */ + +#undef _nc_hashed_db +void _nc_hashed_db(void) + { /* void */ } + +/* ./base/key_defined.c */ + +#undef key_defined_sp +int key_defined_sp( + SCREEN *sp, + const char *str) + { return(*(int *)0); } + +#undef key_defined +int key_defined( + const char *str) + { return(*(int *)0); } + +/* ./base/keybound.c */ + +#undef keybound_sp +char *keybound_sp( + SCREEN *sp, + int code, + int count) + { return(*(char **)0); } + +#undef keybound +char *keybound( + int code, + int count) + { return(*(char **)0); } + +/* ./base/keyok.c */ + +#undef keyok_sp +int keyok_sp( + SCREEN *sp, + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +#undef keyok +int keyok( + int c, + NCURSES_BOOL flag) + { return(*(int *)0); } + +/* ./base/version.c */ + +#undef curses_version +const char *curses_version(void) + { return(*(const char **)0); } diff --git a/deps/ncurses-6.3/ncurses/modules b/deps/ncurses-6.3/ncurses/modules new file mode 100644 index 0000000..e111712 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/modules @@ -0,0 +1,253 @@ +# $Id: modules,v 1.127 2020/09/12 17:58:12 tom Exp $ +############################################################################## +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 1998-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. # +############################################################################## +# +# Author: Thomas E. Dickey 1996-on +# + +@ base +# Library objects +hardscroll lib $(serial) $(HEADER_DEPS) +hashmap lib $(serial) $(HEADER_DEPS) +lib_addch lib $(base) $(HEADER_DEPS) +lib_addstr lib $(base) $(HEADER_DEPS) +lib_beep lib $(base) $(HEADER_DEPS) +lib_bkgd lib $(base) $(HEADER_DEPS) +lib_box lib $(base) $(HEADER_DEPS) +lib_chgat lib $(base) $(HEADER_DEPS) +lib_clear lib $(base) $(HEADER_DEPS) +lib_clearok lib $(base) $(HEADER_DEPS) +lib_clrbot lib $(base) $(HEADER_DEPS) +lib_clreol lib $(base) $(HEADER_DEPS) +lib_color lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h $(srcdir)/new_pair.h +lib_colorset lib $(base) $(HEADER_DEPS) +lib_delch lib $(base) $(HEADER_DEPS) +lib_delwin lib $(base) $(HEADER_DEPS) +lib_echo lib $(base) $(HEADER_DEPS) +lib_endwin lib $(base) $(HEADER_DEPS) +lib_erase lib $(base) $(HEADER_DEPS) +lib_flash lib $(base) $(HEADER_DEPS) +lib_gen lib . $(HEADER_DEPS) +lib_getch lib $(base) $(HEADER_DEPS) $(srcdir)/fifo_defs.h +lib_getstr lib $(base) $(HEADER_DEPS) +lib_hline lib $(base) $(HEADER_DEPS) +lib_immedok lib $(base) $(HEADER_DEPS) +lib_inchstr lib $(base) $(HEADER_DEPS) +lib_initscr lib $(base) $(HEADER_DEPS) +lib_insch lib $(base) $(HEADER_DEPS) +lib_insdel lib $(base) $(HEADER_DEPS) +lib_insnstr lib $(base) $(HEADER_DEPS) +lib_instr lib $(base) $(HEADER_DEPS) +lib_isendwin lib $(base) $(HEADER_DEPS) +lib_leaveok lib $(base) $(HEADER_DEPS) +lib_mouse lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h +lib_move lib $(base) $(HEADER_DEPS) +lib_mvcur lib $(serial) $(HEADER_DEPS) $(INCDIR)/tic.h $(srcdir)/../progs/dump_entry.h +lib_mvwin lib $(base) $(HEADER_DEPS) +lib_newterm lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h +lib_newwin lib $(base) $(HEADER_DEPS) +lib_nl lib $(base) $(HEADER_DEPS) +lib_overlay lib $(base) $(HEADER_DEPS) +lib_pad lib $(base) $(HEADER_DEPS) +lib_printw lib $(base) $(HEADER_DEPS) +lib_redrawln lib $(base) $(HEADER_DEPS) +lib_refresh lib $(base) $(HEADER_DEPS) +lib_restart lib $(base) $(HEADER_DEPS) +lib_scanw lib $(base) $(HEADER_DEPS) +lib_screen lib $(base) $(HEADER_DEPS) +lib_scroll lib $(base) $(HEADER_DEPS) +lib_scrollok lib $(base) $(HEADER_DEPS) +lib_scrreg lib $(base) $(HEADER_DEPS) +lib_set_term lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h +lib_slk lib $(base) $(HEADER_DEPS) +lib_slkatr_set lib $(base) $(HEADER_DEPS) +lib_slkatrof lib $(base) $(HEADER_DEPS) +lib_slkatron lib $(base) $(HEADER_DEPS) +lib_slkatrset lib $(base) $(HEADER_DEPS) +lib_slkattr lib $(base) $(HEADER_DEPS) +lib_slkclear lib $(base) $(HEADER_DEPS) +lib_slkcolor lib $(base) $(HEADER_DEPS) +lib_slkinit lib $(base) $(HEADER_DEPS) +lib_slklab lib $(base) $(HEADER_DEPS) +lib_slkrefr lib $(base) $(HEADER_DEPS) +lib_slkset lib $(base) $(HEADER_DEPS) +lib_slktouch lib $(base) $(HEADER_DEPS) +lib_touch lib $(base) $(HEADER_DEPS) +lib_tracedmp lib $(trace) $(HEADER_DEPS) +lib_tracemse lib $(trace) $(HEADER_DEPS) +lib_tstp lib $(serial) $(HEADER_DEPS) $(srcdir)/SigAction.h +lib_ungetch lib $(base) $(HEADER_DEPS) $(srcdir)/fifo_defs.h +lib_vidattr lib $(serial) $(HEADER_DEPS) +lib_vline lib $(base) $(HEADER_DEPS) +lib_wattroff lib $(base) $(HEADER_DEPS) +lib_wattron lib $(base) $(HEADER_DEPS) +lib_winch lib $(base) $(HEADER_DEPS) +lib_window lib $(base) $(HEADER_DEPS) +link_test lib . $(HEADER_DEPS) +nc_panel lib $(base) $(HEADER_DEPS) +safe_sprintf lib $(base) $(HEADER_DEPS) +tty_update lib $(serial) $(HEADER_DEPS) +varargs lib $(trace) $(HEADER_DEPS) + +# Modules for porting +vsscanf lib $(base) $(HEADER_DEPS) + +# actually an extension, but with its own configure option (--disable-leaks) +lib_freeall lib $(base) $(HEADER_DEPS) $(INCDIR)/tic.h + +# XSI extensions to the base library (wide-character) +@ widechar +charable lib $(wide) $(HEADER_DEPS) +lib_add_wch lib $(wide) $(HEADER_DEPS) +lib_box_set lib $(wide) $(HEADER_DEPS) +lib_cchar lib $(wide) $(HEADER_DEPS) $(srcdir)/new_pair.h +lib_erasewchar lib $(wide) $(HEADER_DEPS) +lib_get_wch lib $(wide) $(HEADER_DEPS) +lib_get_wstr lib $(wide) $(HEADER_DEPS) +lib_hline_set lib $(wide) $(HEADER_DEPS) +lib_in_wch lib $(wide) $(HEADER_DEPS) +lib_in_wchnstr lib $(wide) $(HEADER_DEPS) +lib_ins_wch lib $(wide) $(HEADER_DEPS) +lib_inwstr lib $(wide) $(HEADER_DEPS) +lib_key_name lib $(wide) $(HEADER_DEPS) +lib_pecho_wchar lib $(wide) $(HEADER_DEPS) +lib_slk_wset lib $(wide) $(HEADER_DEPS) +lib_unget_wch lib $(wide) $(HEADER_DEPS) +lib_vid_attr lib $(wide) $(HEADER_DEPS) +lib_vline_set lib $(wide) $(HEADER_DEPS) +lib_wacs lib $(wide) $(HEADER_DEPS) +lib_wunctrl lib $(wide) $(HEADER_DEPS) + +# Extensions to the base library +@ ext_funcs +expanded lib . $(HEADER_DEPS) +legacy_coding lib $(base) $(HEADER_DEPS) +lib_dft_fgbg lib $(base) $(HEADER_DEPS) +lib_print lib $(tinfo) $(HEADER_DEPS) +new_pair lib $(base) $(HEADER_DEPS) $(srcdir)/new_pair.h +resizeterm lib $(base) $(HEADER_DEPS) +trace_xnames lib $(trace) $(HEADER_DEPS) +use_screen lib $(tinfo) $(HEADER_DEPS) +use_window lib $(base) $(HEADER_DEPS) +wresize lib $(base) $(HEADER_DEPS) + +# Support for termcap (and tic, etc.), which can be a separate library +@ termlib +access lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +add_tries lib $(tinfo) $(HEADER_DEPS) +alloc_ttype lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +codes lib . $(HEADER_DEPS) +comp_captab lib . $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h +comp_error lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +comp_hash lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h +comp_userdefs lib . $(HEADER_DEPS) $(INCDIR)/tic.h ../include/hashsize.h +db_iterator lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +doalloc lib $(tinfo) $(HEADER_DEPS) +entries lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +fallback lib . $(HEADER_DEPS) +free_ttype lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +getenv_num lib $(tinfo) $(HEADER_DEPS) +home_terminfo lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +init_keytry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h init_keytry.h +lib_acs lib $(tinfo) $(HEADER_DEPS) +lib_baudrate lib $(tinfo) $(HEADER_DEPS) ../include/termcap.h +lib_cur_term lib $(tinfo) $(HEADER_DEPS) ../include/termcap.h +lib_data lib $(tinfo) $(HEADER_DEPS) +lib_has_cap lib $(tinfo) $(HEADER_DEPS) +lib_kernel lib $(tinfo) $(HEADER_DEPS) +lib_keyname lib . $(HEADER_DEPS) $(INCDIR)/tic.h +lib_longname lib $(tinfo) $(HEADER_DEPS) +lib_napms lib $(tinfo) $(HEADER_DEPS) +lib_options lib $(tinfo) $(HEADER_DEPS) +lib_raw lib $(tinfo) $(HEADER_DEPS) +lib_setup lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +lib_termcap lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/termcap.h $(INCDIR)/capdefaults.c +lib_termname lib $(tinfo) $(HEADER_DEPS) +lib_tgoto lib $(tinfo) $(HEADER_DEPS) ../include/termcap.h +lib_ti lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +lib_tparm lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +lib_tputs lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/termcap.h +lib_trace lib $(trace) $(HEADER_DEPS) $(INCDIR)/tic.h +lib_traceatr lib $(trace) $(HEADER_DEPS) +lib_tracebits lib $(trace) $(HEADER_DEPS) +lib_tracechr lib $(trace) $(HEADER_DEPS) +lib_ttyflags lib $(tinfo) $(HEADER_DEPS) +lib_twait lib $(serial) $(HEADER_DEPS) +name_match lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +names lib . $(HEADER_DEPS) +obsolete lib $(tinfo) $(HEADER_DEPS) +read_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h $(INCDIR)/hashed_db.h +read_termcap lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +strings lib $(tinfo) $(HEADER_DEPS) +trace_buf lib $(trace) $(HEADER_DEPS) +trace_tries lib $(trace) $(HEADER_DEPS) +tries lib $(base) $(HEADER_DEPS) +trim_sgr0 lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +unctrl lib . $(HEADER_DEPS) +visbuf lib $(trace) $(HEADER_DEPS) $(INCDIR)/tic.h + +# Modules used only for tic, other programs using internal interfaces +@ ticlib +alloc_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +captoinfo lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +comp_expand lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +comp_parse lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +comp_scan lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h +parse_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h ../include/parametrized.h +write_entry lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h $(INCDIR)/hashed_db.h + +# Extensions to the termlib library +@ ext_tinfo +define_key lib $(base) $(HEADER_DEPS) +hashed_db lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h $(INCDIR)/hashed_db.h +key_defined lib $(base) $(HEADER_DEPS) +keybound lib $(base) $(HEADER_DEPS) +keyok lib $(base) $(HEADER_DEPS) +version lib $(base) $(HEADER_DEPS) + +# Porting +@ port_drivers +lib_driver lib $(base) $(HEADER_DEPS) + +@ port_win32con +gettimeofday lib $(win32con) $(HEADER_DEPS) +wcwidth lib $(win32con) $(HEADER_DEPS) +widechars lib $(wide) $(HEADER_DEPS) +win_driver lib $(win32con) $(HEADER_DEPS) + +@ port_win32 +lib_win32con lib $(tinfo) $(HEADER_DEPS) +lib_win32util lib $(tinfo) $(HEADER_DEPS) +wcwidth lib $(win32con) $(HEADER_DEPS) +win32_driver lib $(win32con) $(HEADER_DEPS) + +@ port_tinfo +tinfo_driver lib $(tinfo) $(HEADER_DEPS) $(INCDIR)/tic.h + +# vile:makemode diff --git a/deps/ncurses-6.3/ncurses/new_pair.h b/deps/ncurses-6.3/ncurses/new_pair.h new file mode 100644 index 0000000..49d7e8b --- /dev/null +++ b/deps/ncurses-6.3/ncurses/new_pair.h @@ -0,0 +1,139 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 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: Thomas E. Dickey * + ****************************************************************************/ + +/* + * Common type definitions and macros for new_pair.c, lib_color.c + * + * $Id: new_pair.h,v 1.13 2021/09/24 17:52:01 tom Exp $ + */ + +#ifndef NEW_PAIR_H +#define NEW_PAIR_H 1 +/* *INDENT-OFF* */ + +#include <ncurses_cfg.h> +#include <ncurses_dll.h> + +#include <sys/types.h> + +#undef SCREEN +#define SCREEN struct screen +SCREEN; + +#define LIMIT_TYPED(n,t) \ + (t)(((n) > MAX_OF_TYPE(t)) \ + ? MAX_OF_TYPE(t) \ + : ((n) < -MAX_OF_TYPE(t)) \ + ? -MAX_OF_TYPE(t) \ + : (n)) + +#define limit_COLOR(n) LIMIT_TYPED(n,NCURSES_COLOR_T) +#define limit_PAIRS(n) LIMIT_TYPED(n,NCURSES_PAIRS_T) + +#define MAX_XCURSES_PAIR MAX_OF_TYPE(NCURSES_PAIRS_T) + +#if NCURSES_EXT_COLORS +#define OPTIONAL_PAIR GCC_UNUSED +#define get_extended_pair(opts, color_pair) \ + if ((opts) != NULL) { \ + *(int*)(opts) = color_pair; \ + } +#define set_extended_pair(opts, color_pair) \ + if ((opts) != NULL) { \ + color_pair = *(const int*)(opts); \ + } +#else +#define OPTIONAL_PAIR /* nothing */ +#define get_extended_pair(opts, color_pair) /* nothing */ +#define set_extended_pair(opts, color_pair) \ + if ((opts) != NULL) { \ + color_pair = -1; \ + } +#endif + +#ifdef NEW_PAIR_INTERNAL + +typedef enum { + cpKEEP = -1, /* color pair 0 */ + cpFREE = 0, /* free for use */ + cpINIT = 1 /* initialized */ +} CPMODE; + +typedef struct _color_pairs +{ + int fg; + int bg; +#if NCURSES_EXT_COLORS + int mode; /* tells if the entry is allocated or free */ + int prev; /* index of previous item */ + int next; /* index of next item */ +#endif +} +colorpair_t; + +#define MakeColorPair(target,f,b) target.fg = f, target.bg = b +#define isSamePair(a,b) ((a).fg == (b).fg && (a).bg == (b).bg) +#define FORE_OF(c) (c).fg +#define BACK_OF(c) (c).bg + +/* + * Ensure that we use color pairs only when colors have been started, and also + * that the index is within the limits of the table which we allocated. + */ +#define ValidPair(sp,pair) \ + ((sp != 0) && (pair >= 0) && (pair < sp->_pair_limit) && sp->_coloron) + +#if NCURSES_EXT_COLORS +extern NCURSES_EXPORT(void) _nc_copy_pairs(SCREEN*, colorpair_t*, colorpair_t*, int); +extern NCURSES_EXPORT(void) _nc_free_ordered_pairs(SCREEN*); +extern NCURSES_EXPORT(void) _nc_reset_color_pair(SCREEN*, int, colorpair_t*); +extern NCURSES_EXPORT(void) _nc_set_color_pair(SCREEN*, int, int); +#else +#define _nc_free_ordered_pairs(sp) /* nothing */ +#define _nc_reset_color_pair(sp, pair, data) /* nothing */ +#define _nc_set_color_pair(sp, pair, mode) /* nothing */ +#endif + +#else + +typedef struct _color_pairs colorpair_t; + +#endif /* NEW_PAIR_INTERNAL */ + +#if NO_LEAKS +extern NCURSES_EXPORT(void) _nc_new_pair_leaks(SCREEN*); +#endif + +/* *INDENT-ON* */ + +#endif /* NEW_PAIR_H */ diff --git a/deps/ncurses-6.3/ncurses/report_hashing.c b/deps/ncurses-6.3/ncurses/report_hashing.c new file mode 100644 index 0000000..bed96ef --- /dev/null +++ b/deps/ncurses-6.3/ncurses/report_hashing.c @@ -0,0 +1,73 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * * + * 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: Thomas E. Dickey * + ****************************************************************************/ + +#include <curses.priv.h> +#include <tic.h> + +MODULE_ID("$Id: report_hashing.c,v 1.3 2020/02/02 23:34:34 tom Exp $") + +static void +check_names(const char *name, NCURSES_CONST char *const *table, int termcap) +{ + int errs = 0; + int n; + struct name_table_entry const *entry_ptr; + const HashValue *hash_table = _nc_get_hash_table(termcap); + + printf("%s:\n", name); + for (n = 0; table[n] != NULL; ++n) { + entry_ptr = _nc_find_entry(table[n], hash_table); + if (entry_ptr == 0) { + printf(" %s\n", table[n]); + errs++; + } + } + if (errs) + printf("%d errors\n", errs); +} + +int +main(void) +{ +#define CHECK_TI(name) check_names(#name, name, 0) +#define CHECK_TC(name) check_names(#name, name, 1) + + CHECK_TI(boolnames); + CHECK_TI(numnames); + CHECK_TI(strnames); + + CHECK_TC(boolcodes); + CHECK_TC(numcodes); + CHECK_TC(strcodes); + + return EXIT_SUCCESS; +} diff --git a/deps/ncurses-6.3/ncurses/report_offsets.c b/deps/ncurses-6.3/ncurses/report_offsets.c new file mode 100644 index 0000000..83f6f38 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/report_offsets.c @@ -0,0 +1,250 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 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: Thomas E. Dickey * + ****************************************************************************/ + +#include <curses.priv.h> + +MODULE_ID("$Id: report_offsets.c,v 1.22 2021/08/19 19:51:33 tom Exp $") + +#define show_size(type) \ + flag = 0; \ + last = 0; \ + printf("%5lu " #type "\n", (unsigned long)sizeof(type)) +#define show_offset(type,member) \ + next = (unsigned long)offsetof(type,member); \ + if (last > next) \ + printf("?? incorrect order for " #type "." #member "\n"); \ + printf("%5lu %c " #type "." #member "\n", next, flag ? *flag : ' '); \ + last = next; \ + flag = 0 + +#if NCURSES_WIDECHAR && NCURSES_EXT_COLORS +#define show_COLORS(type,member) { flag = "c"; show_offset(type,member); } +#else +#define show_COLORS(type,member) /* nothing */ +#endif + +#ifdef USE_TERM_DRIVER +#define show_DRIVER(type,member) { flag = "d"; show_offset(type,member); } +#else +#define show_DRIVER(type,member) /* nothing */ +#endif + +#if NO_LEAKS +#define show_MLEAKS(type,member) { flag = "L"; show_offset(type,member); } +#else +#define show_MLEAKS(type,member) /* nothing */ +#endif + +#ifdef USE_TERM_DRIVER +#define show_NORMAL(type,member) /* nothing */ +#else +#define show_NORMAL(type,member) { flag = "n"; show_offset(type,member); } +#endif + +#define show_OPTION(type,member) { flag = "+"; show_offset(type,member); } + +#if USE_REENTRANT +#define show_REENTR(type,member) { flag = "r"; show_offset(type,member); } +#else +#define show_REENTR(type,member) /* nothing */ +#endif + +#if NCURSES_SP_FUNCS +#define show_SPFUNC(type,member) { flag = "s"; show_offset(type,member); } +#else +#define show_SPFUNC(type,member) /* nothing */ +#endif + +#ifdef USE_PTHREADS +#define show_THREAD(type,member) { flag = "t"; show_offset(type,member); } +#else +#define show_THREAD(type,member) /* nothing */ +#endif + +#ifdef TRACE +#define show_TRACES(type,member) { flag = "T"; show_offset(type,member); } +#else +#define show_TRACES(type,member) /* nothing */ +#endif + +#if USE_WIDEC_SUPPORT +#define show_WIDECH(type,member) { flag = "w"; show_offset(type,member); } +#else +#define show_WIDECH(type,member) /* nothing */ +#endif + +int +main(void) +{ + const char *flag = 0; + unsigned long last, next; + + printf("Size/offsets of data structures:\n"); + + show_size(attr_t); + show_size(chtype); +#if USE_WIDEC_SUPPORT + show_size(cchar_t); +#endif + show_size(mmask_t); + show_size(MEVENT); + show_size(NCURSES_BOOL); + + printf("\n"); + show_size(SCREEN); + show_offset(SCREEN, _ifd); + show_offset(SCREEN, _fifo); + show_offset(SCREEN, _fifohead); + show_offset(SCREEN, _direct_color); + show_offset(SCREEN, _panelHook); + show_offset(SCREEN, jump); + show_offset(SCREEN, rsp); +#if NCURSES_NO_PADDING + show_OPTION(SCREEN, _no_padding); +#endif +#if USE_HARD_TABS + show_OPTION(SCREEN, _ht_cost); +#endif +#if USE_ITALIC + show_OPTION(SCREEN, _use_ritm); +#endif +#if USE_KLIBC_KBD + show_OPTION(SCREEN, _extended_key); +#endif +#if NCURSES_EXT_FUNCS + show_OPTION(SCREEN, _assumed_color); +#endif +#if USE_GPM_SUPPORT + show_OPTION(SCREEN, _mouse_gpm_loaded); +#ifdef HAVE_LIBDL + show_OPTION(SCREEN, _dlopen_gpm); +#endif +#endif +#if USE_EMX_MOUSE + show_OPTION(SCREEN, _emxmouse_wfd); +#endif +#if USE_SYSMOUSE + show_OPTION(SCREEN, _sysmouse_fifo); +#endif + show_DRIVER(SCREEN, _drv_mouse_fifo); +#if USE_SIZECHANGE + show_OPTION(SCREEN, _resize); +#endif + show_DRIVER(SCREEN, _windowlist); + show_REENTR(SCREEN, _ttytype); + show_SPFUNC(SCREEN, use_tioctl); + show_WIDECH(SCREEN, _screen_acs_fix); + show_COLORS(SCREEN, _ordered_pairs); + show_TRACES(SCREEN, tracechr_buf); + + printf("\n"); + show_size(TERMINAL); + show_offset(TERMINAL, type); + show_offset(TERMINAL, Filedes); + show_offset(TERMINAL, Ottyb); + show_offset(TERMINAL, Nttyb); + show_offset(TERMINAL, _baudrate); + show_offset(TERMINAL, _termname); + show_offset(TERMINAL, tparm_state); +#if HAVE_INIT_EXTENDED_COLOR + show_COLORS(TERMINAL, type2); +#endif + + printf("\n"); + show_size(TERMTYPE); +#if NCURSES_XNAMES + show_OPTION(TERMTYPE, ext_str_table); + show_OPTION(TERMTYPE, ext_Strings); +#endif + + printf("\n"); + show_size(TPARM_STATE); + show_offset(TPARM_STATE, stack); + show_offset(TPARM_STATE, stack_ptr); + show_offset(TPARM_STATE, out_buff); + show_offset(TPARM_STATE, fmt_buff); + show_offset(TPARM_STATE, static_vars); + show_TRACES(TPARM_STATE, tname); + + printf("\n"); + show_size(WINDOW); + show_WIDECH(WINDOW, _bkgrnd); + show_COLORS(WINDOW, _color); + + printf("\n"); + show_size(NCURSES_GLOBALS); + show_offset(NCURSES_GLOBALS, init_signals); + show_offset(NCURSES_GLOBALS, tgetent_cache); + show_offset(NCURSES_GLOBALS, dbd_vars); +#if HAVE_TSEARCH + show_offset(NCURSES_GLOBALS, cached_tparm); +#endif + show_DRIVER(NCURSES_GLOBALS, term_driver); + show_NORMAL(NCURSES_GLOBALS, _nc_windowlist); +#if USE_HOME_TERMINFO + show_OPTION(NCURSES_GLOBALS, home_terminfo); +#endif +#if !USE_SAFE_SPRINTF + show_OPTION(NCURSES_GLOBALS, safeprint_rows); +#endif + show_THREAD(NCURSES_GLOBALS, mutex_curses); +#if USE_PTHREADS_EINTR + show_THREAD(NCURSES_GLOBALS, read_thread); +#endif + show_WIDECH(NCURSES_GLOBALS, key_name); + show_TRACES(NCURSES_GLOBALS, trace_opened); + show_MLEAKS(NCURSES_GLOBALS, leak_checking); + + printf("\n"); + show_size(NCURSES_PRESCREEN); + show_offset(NCURSES_PRESCREEN, tparm_state); + show_offset(NCURSES_PRESCREEN, saved_tty); + show_offset(NCURSES_PRESCREEN, use_tioctl); + show_offset(NCURSES_PRESCREEN, _outch); +#ifndef USE_SP_RIPOFF + show_NORMAL(NCURSES_PRESCREEN, rippedoff); +#endif +#if NCURSES_NO_PADDING + show_OPTION(NCURSES_PRESCREEN, _no_padding); +#endif +#if BROKEN_LINKER + show_offset(NCURSES_PRESCREEN, real_acs_map); +#else + show_REENTR(NCURSES_PRESCREEN, real_acs_map); +#endif +#if BROKEN_LINKER || USE_REENTRANT + show_TRACES(NCURSES_PRESCREEN, _outchars); +#endif + + return EXIT_SUCCESS; +} diff --git a/deps/ncurses-6.3/ncurses/term.priv.h b/deps/ncurses-6.3/ncurses/term.priv.h new file mode 100644 index 0000000..ce7a986 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/term.priv.h @@ -0,0 +1,332 @@ +/**************************************************************************** + * Copyright 2021 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ + +/* + * $Id: term.priv.h,v 1.6 2021/09/26 20:43:08 tom Exp $ + * + * term.priv.h + * + * Header file for terminfo library objects which are private to + * the library. + * + */ + +#ifndef _TERM_PRIV_H +#define _TERM_PRIV_H 1 +/* *INDENT-OFF* */ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <ncurses_cfg.h> + +#undef NCURSES_OPAQUE +#define NCURSES_INTERNALS 1 +#define NCURSES_OPAQUE 0 + +#include <limits.h> /* PATH_MAX */ +#include <signal.h> /* sig_atomic_t */ +#include <time.h> /* time_t */ +#include <term.h> /* time_t */ + +#ifdef USE_PTHREADS +#if USE_REENTRANT +#include <pthread.h> +#endif +#endif + +/* + * State of tparm(). + */ +#define STACKSIZE 20 + +typedef struct { + union { + int num; + char * str; + } data; + bool num_type; +} STACK_FRAME; + +#define NUM_VARS 26 + +typedef struct { + const char * tparam_base; + + STACK_FRAME stack[STACKSIZE]; + int stack_ptr; + + char * out_buff; + size_t out_size; + size_t out_used; + + char * fmt_buff; + size_t fmt_size; + + int static_vars[NUM_VARS]; +#ifdef TRACE + const char * tname; +#endif +} TPARM_STATE; + +typedef struct { + char * text; + size_t size; +} TRACEBUF; + +typedef struct { + const char * name; + char * value; +} ITERATOR_VARS; + +/* + * Internals for term.h + */ +typedef struct term { /* describe an actual terminal */ + TERMTYPE type; /* terminal type description */ + short Filedes; /* file description being written to */ + TTY Ottyb; /* original state of the terminal */ + TTY Nttyb; /* current state of the terminal */ + int _baudrate; /* used to compute padding */ + char * _termname; /* used for termname() */ + TPARM_STATE tparm_state; +#if NCURSES_EXT_COLORS + TERMTYPE2 type2; /* extended terminal type description */ +#endif +#undef TERMINAL +} TERMINAL; + +/* + * Internals for soft-keys + */ +typedef struct { + WINDOW * win; /* the window used in the hook */ + int line; /* lines to take, < 0 => from bottom*/ + int (*hook)(WINDOW *, int); /* callback for user */ +} ripoff_t; + +/* + * Internals for tgetent + */ +typedef struct { + long sequence; + bool last_used; + char * fix_sgr0; /* this holds the filtered sgr0 string */ + char * last_bufp; /* help with fix_sgr0 leak */ + TERMINAL * last_term; +} TGETENT_CACHE; + +#define TGETENT_MAX 4 + +#include <term_entry.h> /* dbdLAST */ + +#ifdef USE_TERM_DRIVER +struct DriverTCB; /* Terminal Control Block forward declaration */ +#endif + +/* + * Global data which is not specific to a screen. + */ +typedef struct { + SIG_ATOMIC_T have_sigtstp; + SIG_ATOMIC_T have_sigwinch; + SIG_ATOMIC_T cleanup_nested; + + bool init_signals; + bool init_screen; + + char * comp_sourcename; + char * comp_termtype; + + bool have_tic_directory; + bool keep_tic_directory; + const char * tic_directory; + + char * dbi_list; + int dbi_size; + + char * first_name; + char ** keyname_table; + int init_keyname; + + int slk_format; + + int getstr_limit; /* getstr_limit based on POSIX LINE_MAX */ + + char * safeprint_buf; + size_t safeprint_used; + + TGETENT_CACHE tgetent_cache[TGETENT_MAX]; + int tgetent_index; + long tgetent_sequence; + + char * dbd_blob; /* string-heap for dbd_list[] */ + char ** dbd_list; /* distinct places to look for data */ + int dbd_size; /* length of dbd_list[] */ + time_t dbd_time; /* cache last updated */ + ITERATOR_VARS dbd_vars[dbdLAST]; + +#if HAVE_TSEARCH + void * cached_tparm; + int count_tparm; +#endif /* HAVE_TSEARCH */ + +#ifdef USE_TERM_DRIVER + int (*term_driver)(struct DriverTCB*, const char*, int*); +#endif + +#define WINDOWLIST struct _win_list + +#ifndef USE_SP_WINDOWLIST + WINDOWLIST * _nc_windowlist; +#define WindowList(sp) _nc_globals._nc_windowlist +#endif + +#if USE_HOME_TERMINFO + char * home_terminfo; +#endif + +#if !USE_SAFE_SPRINTF + int safeprint_cols; + int safeprint_rows; +#endif + +#ifdef USE_PTHREADS + pthread_mutex_t mutex_curses; + pthread_mutex_t mutex_prescreen; + pthread_mutex_t mutex_screen; + pthread_mutex_t mutex_update; + pthread_mutex_t mutex_tst_tracef; + pthread_mutex_t mutex_tracef; + int nested_tracef; + int use_pthreads; +#define _nc_use_pthreads _nc_globals.use_pthreads +#if USE_PTHREADS_EINTR + pthread_t read_thread; /* The reading thread */ +#endif +#endif +#if USE_WIDEC_SUPPORT + char key_name[MB_LEN_MAX + 1]; +#endif + +#ifdef TRACE + bool trace_opened; + char trace_fname[PATH_MAX]; + int trace_level; + FILE * trace_fp; + int trace_fd; + + char * tracearg_buf; + size_t tracearg_used; + + TRACEBUF * tracebuf_ptr; + size_t tracebuf_used; + + char tracechr_buf[40]; + + char * tracedmp_buf; + size_t tracedmp_used; + + unsigned char * tracetry_buf; + size_t tracetry_used; + + char traceatr_color_buf[2][80]; + int traceatr_color_sel; + int traceatr_color_last; +#if !defined(USE_PTHREADS) && USE_REENTRANT + int nested_tracef; +#endif +#endif /* TRACE */ + +#if NO_LEAKS + bool leak_checking; +#endif +} NCURSES_GLOBALS; + +extern NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals; + +#define N_RIPS 5 + +#ifdef USE_PTHREADS +typedef struct _prescreen_list { + struct _prescreen_list *next; + pthread_t id; + struct screen * sp; +} PRESCREEN_LIST; +#endif + +/* + * Global data which can be swept up into a SCREEN when one is created. + * It may be modified before the next SCREEN is created. + */ +typedef struct { +#ifdef USE_PTHREADS + PRESCREEN_LIST *allocated; +#else + struct screen * allocated; +#endif + bool use_env; + bool filter_mode; + attr_t previous_attr; + TPARM_STATE tparm_state; + TTY * saved_tty; /* savetty/resetty information */ + bool use_tioctl; + NCURSES_SP_OUTC _outch; /* output handler if not putc */ +#ifndef USE_SP_RIPOFF + ripoff_t rippedoff[N_RIPS]; + ripoff_t * rsp; +#endif +#if NCURSES_NO_PADDING + bool _no_padding; /* flag to set if padding disabled */ +#endif +#if BROKEN_LINKER || USE_REENTRANT + chtype * real_acs_map; + int _LINES; + int _COLS; + int _TABSIZE; + int _ESCDELAY; + TERMINAL * _cur_term; +#endif +#ifdef TRACE +#if BROKEN_LINKER || USE_REENTRANT + long _outchars; + const char * _tputs_trace; +#endif +#endif +} NCURSES_PRESCREEN; + +extern NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen; + +#ifdef __cplusplus +} +#endif + +/* *INDENT-ON* */ + +#endif /* _TERM_PRIV_H */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/MKcaptab.awk b/deps/ncurses-6.3/ncurses/tinfo/MKcaptab.awk similarity index 94% rename from deps/ncurses-5.9/ncurses/tinfo/MKcaptab.awk rename to deps/ncurses-6.3/ncurses/tinfo/MKcaptab.awk index 56d3d17..ee4e2e9 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/MKcaptab.awk +++ b/deps/ncurses-6.3/ncurses/tinfo/MKcaptab.awk @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 1998-2006,2007 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2006,2007 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: MKcaptab.awk,v 1.20 2007/08/12 00:26:15 tom Exp $ +# $Id: MKcaptab.awk,v 1.21 2020/02/02 23:34:34 tom Exp $ function add_string(text) { if (text != "IGNORE") { offsets[num_strings] = offset; diff --git a/deps/ncurses-5.9/ncurses/tinfo/MKcaptab.sh b/deps/ncurses-6.3/ncurses/tinfo/MKcaptab.sh old mode 100755 new mode 100644 similarity index 75% rename from deps/ncurses-5.9/ncurses/tinfo/MKcaptab.sh rename to deps/ncurses-6.3/ncurses/tinfo/MKcaptab.sh index 4d1b53a..c800023 --- a/deps/ncurses-5.9/ncurses/tinfo/MKcaptab.sh +++ b/deps/ncurses-6.3/ncurses/tinfo/MKcaptab.sh @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 2007-2009,2010 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 2007-2010,2011 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"), # @@ -26,11 +27,28 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: MKcaptab.sh,v 1.13 2010/12/25 23:43:58 tom Exp $ -AWK=${1-awk} -OPT1=${2-0} -OPT2=${3-tinfo/MKcaptab.awk} -DATA=${4-../include/Caps} +# $Id: MKcaptab.sh,v 1.19 2020/02/02 23:34:34 tom Exp $ + +if test $# != 0 +then + AWK="$1"; shift 1 +else + AWK=awk +fi + +if test $# != 0 +then + OPT1="$1"; shift 1 +else + OPT1="-0" +fi + +if test $# != 0 +then + OPT2="$1"; shift 1 +else + OPT2="tinfo/MKcaptab.awk" +fi cat <<EOF /* @@ -50,16 +68,18 @@ cat <<'EOF' #include <tic.h> #include <hashsize.h> +/* *INDENT-OFF* */ EOF -./make_hash 1 info $OPT1 <$DATA -./make_hash 3 cap $OPT1 <$DATA +cat "$@" |./make_hash 1 info $OPT1 +cat "$@" |./make_hash 3 cap $OPT1 -$AWK -f $OPT2 bigstrings=$OPT1 tablename=capalias <$DATA +cat "$@" |$AWK -f $OPT2 bigstrings=$OPT1 tablename=capalias -$AWK -f $OPT2 bigstrings=$OPT1 tablename=infoalias <$DATA +cat "$@" |$AWK -f $OPT2 bigstrings=$OPT1 tablename=infoalias cat <<EOF +/* *INDENT-ON* */ #if $OPT1 static void @@ -70,7 +90,7 @@ next_string(const char *strings, unsigned *offset) static const struct name_table_entry * _nc_build_names(struct name_table_entry **actual, - const name_table_data *source, + const name_table_data * source, const char *strings) { if (*actual == 0) { @@ -97,14 +117,14 @@ _nc_build_names(struct name_table_entry **actual, static const struct alias * _nc_build_alias(struct alias **actual, - const alias_table_data *source, + const alias_table_data * source, const char *strings, - unsigned tablesize) + size_t tablesize) { if (*actual == 0) { *actual = typeCalloc(struct alias, tablesize + 1); if (*actual != 0) { - unsigned n; + size_t n; for (n = 0; n < tablesize; ++n) { add_alias(from); add_alias(to); @@ -127,20 +147,23 @@ _nc_build_alias(struct alias **actual, #define build_alias(root) _nc_ ## root ## alias_table #endif -NCURSES_EXPORT(const struct name_table_entry *) _nc_get_table (bool termcap) +NCURSES_EXPORT(const struct name_table_entry *) +_nc_get_table(bool termcap) { - return termcap ? build_names(cap) : build_names(info) ; + return termcap ? build_names(cap) : build_names(info); } -/* entrypoint used by tack (do not alter) */ -NCURSES_EXPORT(const HashValue *) _nc_get_hash_table (bool termcap) +/* entrypoint used by tack 1.07 */ +NCURSES_EXPORT(const HashValue *) +_nc_get_hash_table(bool termcap) { - return termcap ? _nc_cap_hash_table: _nc_info_hash_table ; + return termcap ? _nc_cap_hash_table : _nc_info_hash_table; } -NCURSES_EXPORT(const struct alias *) _nc_get_alias_table (bool termcap) +NCURSES_EXPORT(const struct alias *) +_nc_get_alias_table(bool termcap) { - return termcap ? build_alias(cap) : build_alias(info) ; + return termcap ? build_alias(cap) : build_alias(info); } static HashValue @@ -150,7 +173,7 @@ info_hash(const char *string) DEBUG(9, ("hashing %s", string)); while (*string) { - sum += (long) (*string + (*(string + 1) << 8)); + sum += (long) (UChar(*string) + (UChar(*(string + 1)) << 8)); string++; } @@ -178,7 +201,7 @@ tcap_hash(const char *string) static int compare_tcap_names(const char *a, const char *b) { - return !strncmp(a, b, TCAP_LEN); + return !strncmp(a, b, (size_t) TCAP_LEN); } static int @@ -187,18 +210,21 @@ compare_info_names(const char *a, const char *b) return !strcmp(a, b); } -static const HashData hash_data[2] = { - { HASHTABSIZE, _nc_info_hash_table, info_hash, compare_info_names }, - { HASHTABSIZE, _nc_cap_hash_table, tcap_hash, compare_tcap_names } +static const HashData hash_data[2] = +{ + {HASHTABSIZE, _nc_info_hash_table, info_hash, compare_info_names}, + {HASHTABSIZE, _nc_cap_hash_table, tcap_hash, compare_tcap_names} }; -NCURSES_EXPORT(const HashData *) _nc_get_hash_info (bool termcap) +NCURSES_EXPORT(const HashData *) +_nc_get_hash_info(bool termcap) { return &hash_data[(termcap != FALSE)]; } #if NO_LEAKS -NCURSES_EXPORT(void) _nc_comp_captab_leaks(void) +NCURSES_EXPORT(void) +_nc_comp_captab_leaks(void) { #if $OPT1 FreeIfNeeded(_nc_cap_table); diff --git a/deps/ncurses-5.9/ncurses/tinfo/MKcodes.awk b/deps/ncurses-6.3/ncurses/tinfo/MKcodes.awk similarity index 95% rename from deps/ncurses-5.9/ncurses/tinfo/MKcodes.awk rename to deps/ncurses-6.3/ncurses/tinfo/MKcodes.awk index 97e5131..48f4800 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/MKcodes.awk +++ b/deps/ncurses-6.3/ncurses/tinfo/MKcodes.awk @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 2007-2009,2010 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: MKcodes.awk,v 1.9 2010/01/23 17:57:43 tom Exp $ +# $Id: MKcodes.awk,v 1.11 2020/02/02 23:34:34 tom Exp $ function large_item(value) { result = sprintf("%d,", offset); offset = offset + length(value) + 1; @@ -79,7 +80,9 @@ BEGIN { } $1 ~ /^#/ {next;} +$1 ~ /^(cap|info)alias/ {next;} +$1 == "userdef" {next;} $1 == "SKIPWARN" {next;} $3 == "bool" { diff --git a/deps/ncurses-6.3/ncurses/tinfo/MKfallback.sh b/deps/ncurses-6.3/ncurses/tinfo/MKfallback.sh new file mode 100644 index 0000000..64c65f1 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/MKfallback.sh @@ -0,0 +1,170 @@ +#!/bin/sh +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2019,2020 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. # +############################################################################## +# $Id: MKfallback.sh,v 1.25 2020/08/16 15:58:44 tom Exp $ +# +# MKfallback.sh -- create fallback table for entry reads +# +# This script generates source code for a custom version of read_entry.c +# that (instead of reading capabilities for an argument terminal type +# from an on-disk terminfo tree) tries to match the type with one of a +# specified list of types generated in. +# + +terminfo_dir=$1 +shift + +terminfo_src=$1 +shift + +tic_path=$1 +test -z "$tic_path" && tic_path=tic +shift + +infocmp_path=$1 +test -z "$infocmp_path" && infocmp_path=infocmp +shift + +case "$tic_path" in #(vi +/*) + tic_head=`echo "$tic_path" | sed -e 's,/[^/]*$,,'` + PATH=$tic_head:$PATH + export PATH + ;; +esac + +if test $# != 0 ; then + tmp_info=tmp_info + echo creating temporary terminfo directory... >&2 + + TERMINFO=`pwd`/$tmp_info + export TERMINFO + + TERMINFO_DIRS=$TERMINFO:$terminfo_dir + export TERMINFO_DIRS + + "$tic_path" -x "$terminfo_src" >&2 +else + tmp_info= +fi + +cat <<EOF +/* This file was generated by $0 */ + +/* + * DO NOT EDIT THIS FILE BY HAND! + */ + +#include <curses.priv.h> + +EOF + +if [ "$*" ] +then + cat <<EOF +#include <tic.h> + +/* fallback entries for: $* */ +EOF + for x in "$@" + do + echo "/* $x */" + "$infocmp_path" -E "$x" | sed -e 's/\<short\>/NCURSES_INT2/g' + done + + cat <<EOF +static const TERMTYPE2 fallbacks[$#] = +{ +EOF + comma="" + for x in "$@" + do + echo "$comma /* $x */" + "$infocmp_path" -e "$x" + comma="," + done + + cat <<EOF +}; + +EOF +fi + +cat <<EOF +NCURSES_EXPORT(const TERMTYPE2 *) +_nc_fallback2 (const char *name GCC_UNUSED) +{ +EOF + +if [ "$*" ] +then + cat <<EOF + const TERMTYPE2 *tp; + + for (tp = fallbacks; + tp < fallbacks + sizeof(fallbacks)/sizeof(TERMTYPE2); + tp++) { + if (_nc_name_match(tp->term_names, name, "|")) { + return(tp); + } + } +EOF +else + echo " /* the fallback list is empty */"; +fi + +cat <<EOF + return((const TERMTYPE2 *)0); +} + +#if NCURSES_EXT_NUMBERS +#undef _nc_fallback + +/* + * This entrypoint is used by tack 1.07 + */ +NCURSES_EXPORT(const TERMTYPE *) +_nc_fallback (const char *name) +{ + const TERMTYPE2 *tp = _nc_fallback2(name); + const TERMTYPE *result = 0; + if (tp != 0) { + static TERMTYPE temp; + _nc_export_termtype2(&temp, tp); + result = &temp; + } + return result; +} +#endif +EOF + +if test -n "$tmp_info" ; then + echo removing temporary terminfo directory... >&2 + rm -rf $tmp_info +fi diff --git a/deps/ncurses-5.9/ncurses/tinfo/MKkeys_list.sh b/deps/ncurses-6.3/ncurses/tinfo/MKkeys_list.sh old mode 100755 new mode 100644 similarity index 87% rename from deps/ncurses-5.9/ncurses/tinfo/MKkeys_list.sh rename to deps/ncurses-6.3/ncurses/tinfo/MKkeys_list.sh index 14017b0..3b8beae --- a/deps/ncurses-5.9/ncurses/tinfo/MKkeys_list.sh +++ b/deps/ncurses-6.3/ncurses/tinfo/MKkeys_list.sh @@ -1,7 +1,8 @@ #! /bin/sh -# $Id: MKkeys_list.sh,v 1.4 2003/10/25 16:19:54 tom Exp $ +# $Id: MKkeys_list.sh,v 1.7 2020/02/02 23:34:34 tom Exp $ ############################################################################## -# Copyright (c) 2001,2003 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 2001-2003,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"), # @@ -35,11 +36,16 @@ # Extract function-key names from the Caps file # : ${AWK-awk} -DATA=${1-../../include/Caps} +if test $# != 0 +then + DATA="$*" +else + DATA=../../include/Caps +fi data=data$$ -trap 'rm -f $data' 0 1 2 5 15 -sed -e 's/[ ][ ]*/ /g' < $DATA >$data +trap 'rm -f $data' EXIT INT QUIT TERM HUP +cat $DATA | sed -e 's/[ ][ ]*/ /g' >$data cat <<EOF # These definitions were generated by $0 $DATA @@ -53,6 +59,7 @@ ${AWK-awk} <$data ' /^#/ {next;} /^capalias/ {next;} /^infoalias/ {next;} +/^userdef/ {next;} $5 != "-" { if (substr($5, 1, 4) == "KEY_" ) { diff --git a/deps/ncurses-5.9/ncurses/tinfo/MKnames.awk b/deps/ncurses-6.3/ncurses/tinfo/MKnames.awk similarity index 96% rename from deps/ncurses-5.9/ncurses/tinfo/MKnames.awk rename to deps/ncurses-6.3/ncurses/tinfo/MKnames.awk index 7685d18..4594c72 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/MKnames.awk +++ b/deps/ncurses-6.3/ncurses/tinfo/MKnames.awk @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. # +# Copyright 2019,2020 Thomas E. Dickey # +# Copyright 1998-2008,2009 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: MKnames.awk,v 1.22 2009/03/21 21:03:39 tom Exp $ +# $Id: MKnames.awk,v 1.24 2020/02/02 23:34:34 tom Exp $ function large_item(value) { result = sprintf("%d,", offset); offset = offset + length(value) + 1; @@ -79,7 +80,9 @@ BEGIN { } $1 ~ /^#/ {next;} +$1 ~ /^(cap|info)alias/ {next;} +$1 == "userdef" {next;} $1 == "SKIPWARN" {next;} $3 == "bool" { diff --git a/deps/ncurses-6.3/ncurses/tinfo/MKuserdefs.sh b/deps/ncurses-6.3/ncurses/tinfo/MKuserdefs.sh new file mode 100644 index 0000000..109dd64 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/MKuserdefs.sh @@ -0,0 +1,146 @@ +#!/bin/sh +############################################################################## +# Copyright 2019,2020 Thomas E. Dickey # +# # +# 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. # +############################################################################## +# $Id: MKuserdefs.sh,v 1.10 2020/02/02 23:34:34 tom Exp $ +AWK=${1-awk}; shift 1 +OPT1=${1-0}; shift 1 + +cat <<EOF +/* + * generated by $0 + */ + +EOF + +cat <<'EOF' +/* + * comp_userdefs.c -- The names of widely used user-defined capabilities + * indexed via a hash table for the compiler. + * + */ + +#include <curses.priv.h> +#include <tic.h> +#include <hashsize.h> + +#if NCURSES_XNAMES +EOF + +cat "$@" | ./make_hash 1 user $OPT1 + +cat <<EOF + +#define USERTABSIZE SIZEOF(user_names_data) + +#if $OPT1 +static void +next_string(const char *strings, unsigned *offset) +{ + *offset += (unsigned) strlen(strings + *offset) + 1; +} + +static const struct user_table_entry * +_nc_build_names(struct user_table_entry **actual, + const user_table_data *source, + const char *strings) +{ + if (*actual == 0) { + *actual = typeCalloc(struct user_table_entry, USERTABSIZE); + if (*actual != 0) { + unsigned n; + unsigned len = 0; + for (n = 0; n < USERTABSIZE; ++n) { + (*actual)[n].ute_name = strings + len; + (*actual)[n].ute_type = (int) source[n].ute_type; + (*actual)[n].ute_argc = source[n].ute_argc; + (*actual)[n].ute_args = source[n].ute_args; + (*actual)[n].ute_index = source[n].ute_index; + (*actual)[n].ute_link = source[n].ute_link; + next_string(strings, &len); + } + } + } + return *actual; +} + +#define build_names(root) _nc_build_names(&_nc_##root##_table, \\ + root##_names_data, \\ + root##_names_text) +#else +#define build_names(root) _nc_ ## root ## _table +#endif + +NCURSES_EXPORT(const struct user_table_entry *) _nc_get_userdefs_table (void) +{ + return build_names(user) ; +} + +static HashValue +info_hash(const char *string) +{ + long sum = 0; + + DEBUG(9, ("hashing %s", string)); + while (*string) { + sum += (long) (*string + (*(string + 1) << 8)); + string++; + } + + DEBUG(9, ("sum is %ld", sum)); + return (HashValue) (sum % HASHTABSIZE); +} + +static int +compare_info_names(const char *a, const char *b) +{ + return !strcmp(a, b); +} + +static const HashData hash_data[] = { + { HASHTABSIZE, _nc_user_hash_table, info_hash, compare_info_names } +}; + +NCURSES_EXPORT(const HashData *) _nc_get_hash_user (void) +{ + return hash_data; +} + +#if NO_LEAKS +NCURSES_EXPORT(void) _nc_comp_userdefs_leaks(void) +{ +#if $OPT1 + FreeIfNeeded(_nc_user_table); +#endif +} +#endif /* NO_LEAKS */ + +#else /*! NCURSES_XNAMES */ +NCURSES_EXPORT(void) _nc_comp_userdefs(void); +NCURSES_EXPORT(void) _nc_comp_userdefs(void) { } +#endif /* NCURSES_XNAMES */ +EOF diff --git a/deps/ncurses-6.3/ncurses/tinfo/README b/deps/ncurses-6.3/ncurses/tinfo/README new file mode 100644 index 0000000..6157ba1 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/README @@ -0,0 +1,37 @@ +------------------------------------------------------------------------------- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998,2006 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. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.3 2020/02/02 23:34:34 tom Exp $ +------------------------------------------------------------------------------- + +The files in this directory (tinfo) are those that support the terminfo +database and interfaces for ncurses. The terminfo library can be built +separately, as a lower-level library for ncurses, but usually is bundled. + +In addition to the standard documented interfaces, ncurses uses internal +functions which reside in tinfo to satisfy linkage requirements. diff --git a/deps/ncurses-6.3/ncurses/tinfo/access.c b/deps/ncurses-6.3/ncurses/tinfo/access.c new file mode 100644 index 0000000..a735db2 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/access.c @@ -0,0 +1,260 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2011,2012 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: Thomas E. Dickey * + ****************************************************************************/ + +#include <curses.priv.h> + +#include <ctype.h> + +#ifndef USE_ROOT_ACCESS +#if HAVE_SETFSUID +#include <sys/fsuid.h> +#else +#include <sys/stat.h> +#endif +#endif + +#include <tic.h> + +MODULE_ID("$Id: access.c,v 1.31 2021/08/29 10:35:17 tom Exp $") + +#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c)) + +#ifdef _NC_MSC +# define ACCESS(FN, MODE) access((FN), (MODE)&(R_OK|W_OK)) +#else +# define ACCESS access +#endif + +NCURSES_EXPORT(char *) +_nc_rootname(char *path) +{ + char *result = _nc_basename(path); +#if !MIXEDCASE_FILENAMES || defined(PROG_EXT) + static char *temp; + char *s; + + temp = strdup(result); + result = temp; +#if !MIXEDCASE_FILENAMES + for (s = result; *s != '\0'; ++s) { + *s = (char) LOWERCASE(*s); + } +#endif +#if defined(PROG_EXT) + if ((s = strrchr(result, '.')) != 0) { + if (!strcmp(s, PROG_EXT)) + *s = '\0'; + } +#endif +#endif + return result; +} + +/* + * Check if a string appears to be an absolute pathname. + */ +NCURSES_EXPORT(bool) +_nc_is_abs_path(const char *path) +{ +#if defined(__EMX__) || defined(__DJGPP__) +#define is_pathname(s) ((((s) != 0) && ((s)[0] == '/')) \ + || (((s)[0] != 0) && ((s)[1] == ':'))) +#else +#define is_pathname(s) ((s) != 0 && (s)[0] == '/') +#endif + return is_pathname(path); +} + +/* + * Return index of the basename + */ +NCURSES_EXPORT(unsigned) +_nc_pathlast(const char *path) +{ + const char *test = strrchr(path, '/'); +#ifdef __EMX__ + if (test == 0) + test = strrchr(path, '\\'); +#endif + if (test == 0) + test = path; + else + test++; + return (unsigned) (test - path); +} + +NCURSES_EXPORT(char *) +_nc_basename(char *path) +{ + return path + _nc_pathlast(path); +} + +NCURSES_EXPORT(int) +_nc_access(const char *path, int mode) +{ + int result; + + if (path == 0) { + result = -1; + } else if (ACCESS(path, mode) < 0) { + if ((mode & W_OK) != 0 + && errno == ENOENT + && strlen(path) < PATH_MAX) { + char head[PATH_MAX]; + char *leaf; + + _nc_STRCPY(head, path, sizeof(head)); + leaf = _nc_basename(head); + if (leaf == 0) + leaf = head; + *leaf = '\0'; + if (head == leaf) + _nc_STRCPY(head, ".", sizeof(head)); + + result = ACCESS(head, R_OK | W_OK | X_OK); + } else { + result = -1; + } + } else { + result = 0; + } + return result; +} + +NCURSES_EXPORT(bool) +_nc_is_dir_path(const char *path) +{ + bool result = FALSE; + struct stat sb; + + if (stat(path, &sb) == 0 + && S_ISDIR(sb.st_mode)) { + result = TRUE; + } + return result; +} + +NCURSES_EXPORT(bool) +_nc_is_file_path(const char *path) +{ + bool result = FALSE; + struct stat sb; + + if (stat(path, &sb) == 0 + && S_ISREG(sb.st_mode)) { + result = TRUE; + } + return result; +} + +#if HAVE_ISSETUGID +#define is_elevated() issetugid() +#elif HAVE_GETEUID && HAVE_GETEGID +#define is_elevated() \ + (getuid() != geteuid() \ + || getgid() != getegid()) +#else +#define is_elevated() FALSE +#endif + +#if HAVE_SETFSUID +#define lower_privileges() \ + int save_err = errno; \ + setfsuid(getuid()); \ + setfsgid(getgid()); \ + errno = save_err +#define resume_elevation() \ + save_err = errno; \ + setfsuid(geteuid()); \ + setfsgid(getegid()); \ + errno = save_err +#else +#define lower_privileges() /* nothing */ +#define resume_elevation() /* nothing */ +#endif + +#ifndef USE_ROOT_ENVIRON +/* + * Returns true if we allow application to use environment variables that are + * used for searching lists of directories, etc. + */ +NCURSES_EXPORT(int) +_nc_env_access(void) +{ + int result = TRUE; + + if (is_elevated()) { + result = FALSE; + } else if ((getuid() == ROOT_UID) || (geteuid() == ROOT_UID)) { + result = FALSE; + } + return result; +} +#endif /* USE_ROOT_ENVIRON */ + +#ifndef USE_ROOT_ACCESS +/* + * Limit privileges if possible; otherwise disallow access for updating files. + */ +NCURSES_EXPORT(FILE *) +_nc_safe_fopen(const char *path, const char *mode) +{ + FILE *result = NULL; +#if HAVE_SETFSUID + lower_privileges(); + result = fopen(path, mode); + resume_elevation(); +#else + if (!is_elevated() || *mode == 'r') { + result = fopen(path, mode); + } +#endif + return result; +} + +NCURSES_EXPORT(int) +_nc_safe_open3(const char *path, int flags, mode_t mode) +{ + int result = -1; +#if HAVE_SETFSUID + lower_privileges(); + result = open(path, flags, mode); + resume_elevation(); +#else + if (!is_elevated() || (flags & O_RDONLY)) { + result = open(path, flags, mode); + } +#endif + return result; +} +#endif /* USE_ROOT_ENVIRON */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/add_tries.c b/deps/ncurses-6.3/ncurses/tinfo/add_tries.c similarity index 94% rename from deps/ncurses-5.9/ncurses/tinfo/add_tries.c rename to deps/ncurses-6.3/ncurses/tinfo/add_tries.c index 29a1a60..d41f488 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/add_tries.c +++ b/deps/ncurses-6.3/ncurses/tinfo/add_tries.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: add_tries.c,v 1.10 2010/12/19 01:31:14 tom Exp $") +MODULE_ID("$Id: add_tries.c,v 1.12 2020/02/02 23:34:34 tom Exp $") #define SET_TRY(dst,src) if ((dst->ch = *src++) == 128) dst->ch = '\0' #define CMP_TRY(a,b) ((a)? (a == b) : (b == 128)) @@ -109,6 +110,7 @@ _nc_add_to_try(TRIES ** tree, const char *str, unsigned code) savedptr = ptr->child; free(ptr); } + *tree = NULL; returnCode(ERR); } diff --git a/deps/ncurses-5.9/ncurses/tinfo/alloc_entry.c b/deps/ncurses-6.3/ncurses/tinfo/alloc_entry.c similarity index 80% rename from deps/ncurses-5.9/ncurses/tinfo/alloc_entry.c rename to deps/ncurses-6.3/ncurses/tinfo/alloc_entry.c index 506fb38..c13f86e 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/alloc_entry.c +++ b/deps/ncurses-6.3/ncurses/tinfo/alloc_entry.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-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 * @@ -47,7 +48,7 @@ #include <tic.h> -MODULE_ID("$Id: alloc_entry.c,v 1.51 2010/12/25 23:06:01 tom Exp $") +MODULE_ID("$Id: alloc_entry.c,v 1.66 2021/08/08 00:09:37 tom Exp $") #define ABSENT_OFFSET -1 #define CANCELLED_OFFSET -2 @@ -58,11 +59,9 @@ static char *stringbuf; /* buffer for string capabilities */ static size_t next_free; /* next free character in stringbuf */ NCURSES_EXPORT(void) -_nc_init_entry(TERMTYPE *const tp) +_nc_init_entry(ENTRY * const tp) /* initialize a terminal type data block */ { - unsigned i; - #if NO_LEAKS if (tp == 0) { if (stringbuf != 0) { @@ -73,33 +72,11 @@ _nc_init_entry(TERMTYPE *const tp) #endif if (stringbuf == 0) - stringbuf = (char *) malloc(MAX_STRTAB); - -#if NCURSES_XNAMES - tp->num_Booleans = BOOLCOUNT; - tp->num_Numbers = NUMCOUNT; - tp->num_Strings = STRCOUNT; - tp->ext_Booleans = 0; - tp->ext_Numbers = 0; - tp->ext_Strings = 0; -#endif - if (tp->Booleans == 0) - tp->Booleans = typeMalloc(NCURSES_SBOOL, BOOLCOUNT); - if (tp->Numbers == 0) - tp->Numbers = typeMalloc(short, NUMCOUNT); - if (tp->Strings == 0) - tp->Strings = typeMalloc(char *, STRCOUNT); - - for_each_boolean(i, tp) - tp->Booleans[i] = FALSE; - - for_each_number(i, tp) - tp->Numbers[i] = ABSENT_NUMERIC; - - for_each_string(i, tp) - tp->Strings[i] = ABSENT_STRING; + TYPE_MALLOC(char, (size_t) MAX_STRTAB, stringbuf); next_free = 0; + + _nc_init_termtype(&(tp->tterm)); } NCURSES_EXPORT(ENTRY *) @@ -109,18 +86,22 @@ _nc_copy_entry(ENTRY * oldp) if (newp != 0) { *newp = *oldp; - _nc_copy_termtype(&(newp->tterm), &(oldp->tterm)); + _nc_copy_termtype2(&(newp->tterm), &(oldp->tterm)); } return newp; } /* save a copy of string in the string buffer */ NCURSES_EXPORT(char *) -_nc_save_str(const char *const string) +_nc_save_str(const char *string) { char *result = 0; size_t old_next_free = next_free; - size_t len = strlen(string) + 1; + size_t len; + + if (!VALID_STRING(string)) + string = ""; + len = strlen(string) + 1; if (len == 1 && next_free != 0) { /* @@ -131,13 +112,13 @@ _nc_save_str(const char *const string) result = (stringbuf + next_free - 1); } } else if (next_free + len < MAX_STRTAB) { - strcpy(&stringbuf[next_free], string); + _nc_STRCPY(&stringbuf[next_free], string, MAX_STRTAB); DEBUG(7, ("Saved string %s", _nc_visbuf(string))); DEBUG(7, ("at location %d", (int) next_free)); next_free += len; result = (stringbuf + old_next_free); } else { - _nc_warning("Too much data, some is lost"); + _nc_warning("Too much data, some is lost: %s", string); } return result; } @@ -150,7 +131,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings) int useoffsets[MAX_USES]; unsigned i, n; unsigned nuses = ep->nuses; - TERMTYPE *tp = &(ep->tterm); + TERMTYPE2 *tp = &(ep->tterm); if (copy_strings) { next_free = 0; /* clear static storage */ @@ -194,8 +175,7 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings) useoffsets[i] = (int) (ep->uses[i].name - stringbuf); } - if ((tp->str_table = typeMalloc(char, next_free)) == (char *) 0) - _nc_err_abort(MSG_NO_MEMORY); + TYPE_MALLOC(char, next_free, tp->str_table); (void) memcpy(tp->str_table, stringbuf, next_free); tp->term_names = tp->str_table + n; @@ -216,16 +196,18 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings) if ((n = (unsigned) NUM_EXT_NAMES(tp)) != 0) { if (n < SIZEOF(offsets)) { size_t length = 0; + size_t offset; for (i = 0; i < n; i++) { length += strlen(tp->ext_Names[i]) + 1; offsets[i] = (int) (tp->ext_Names[i] - stringbuf); } - if ((tp->ext_str_table = typeMalloc(char, length)) == 0) - _nc_err_abort(MSG_NO_MEMORY); - for (i = 0, length = 0; i < n; i++) { - tp->ext_Names[i] = tp->ext_str_table + length; - strcpy(tp->ext_Names[i], stringbuf + offsets[i]); - length += strlen(tp->ext_Names[i]) + 1; + TYPE_MALLOC(char, length, tp->ext_str_table); + for (i = 0, offset = 0; i < n; i++) { + tp->ext_Names[i] = tp->ext_str_table + offset; + _nc_STRCPY(tp->ext_Names[i], + stringbuf + offsets[i], + length - offset); + offset += strlen(tp->ext_Names[i]) + 1; } } } @@ -241,33 +223,43 @@ _nc_wrap_entry(ENTRY * const ep, bool copy_strings) } NCURSES_EXPORT(void) -_nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from) +_nc_merge_entry(ENTRY * const target, ENTRY * const source) /* merge capabilities from `from' entry into `to' entry */ { + TERMTYPE2 *to = &(target->tterm); + TERMTYPE2 *from = &(source->tterm); +#if NCURSES_XNAMES + TERMTYPE2 copy; +#endif unsigned i; + if (source == 0 || from == 0 || target == 0 || to == 0) + return; + #if NCURSES_XNAMES + _nc_copy_termtype2(&copy, from); + from = &copy; _nc_align_termtype(to, from); #endif for_each_boolean(i, from) { - if (to->Booleans[i] != (char) CANCELLED_BOOLEAN) { + if (to->Booleans[i] != (NCURSES_SBOOL) CANCELLED_BOOLEAN) { int mergebool = from->Booleans[i]; if (mergebool == CANCELLED_BOOLEAN) to->Booleans[i] = FALSE; else if (mergebool == TRUE) - to->Booleans[i] = (char) mergebool; + to->Booleans[i] = (NCURSES_SBOOL) mergebool; } } for_each_number(i, from) { if (to->Numbers[i] != CANCELLED_NUMERIC) { - short mergenum = from->Numbers[i]; + int mergenum = from->Numbers[i]; if (mergenum == CANCELLED_NUMERIC) to->Numbers[i] = ABSENT_NUMERIC; else if (mergenum != ABSENT_NUMERIC) - to->Numbers[i] = mergenum; + to->Numbers[i] = (NCURSES_INT2) mergenum; } } @@ -286,6 +278,16 @@ _nc_merge_entry(TERMTYPE *const to, TERMTYPE *const from) to->Strings[i] = mergestring; } } +#if NCURSES_XNAMES + /* Discard the data allocated in _nc_copy_termtype2, but do not use + * _nc_free_termtype2 because that frees the string-table (which is + * not allocated by _nc_copy_termtype2). + */ + free(copy.Booleans); + free(copy.Numbers); + free(copy.Strings); + free(copy.ext_Names); +#endif } #if NO_LEAKS diff --git a/deps/ncurses-6.3/ncurses/tinfo/alloc_ttype.c b/deps/ncurses-6.3/ncurses/tinfo/alloc_ttype.c new file mode 100644 index 0000000..cb82411 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/alloc_ttype.c @@ -0,0 +1,629 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1999-2016,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: Thomas E. Dickey <dickey@clark.net> 1999-on * + ****************************************************************************/ + +/* + * align_ttype.c -- functions for TERMTYPE + * + * _nc_align_termtype() + * _nc_copy_termtype() + * + */ + +#include <curses.priv.h> + +#include <tic.h> + +MODULE_ID("$Id: alloc_ttype.c,v 1.35 2021/06/17 21:11:08 tom Exp $") + +#if NCURSES_XNAMES +/* + * Merge the a/b lists into dst. Both a/b are sorted (see _nc_extend_names()), + * so we do not have to worry about order dependencies. + */ +static int +merge_names(char **dst, char **a, int na, char **b, int nb) +{ + int n = 0; + while (na > 0 && nb > 0) { + int cmp = strcmp(*a, *b); + if (cmp < 0) { + dst[n++] = *a++; + na--; + } else if (cmp > 0) { + dst[n++] = *b++; + nb--; + } else { + dst[n++] = *a; + a++, b++; + na--, nb--; + } + } + while (na-- > 0) { + dst[n++] = *a++; + } + while (nb-- > 0) { + dst[n++] = *b++; + } + DEBUG(4, ("merge_names -> %d", n)); + return n; +} + +static bool +find_name(char **table, int item, int length, const char *name) +{ + int n; + int result = -1; + + for (n = item; n < length; ++n) { + if (!strcmp(table[n], name)) { + DEBUG(4, ("found name '%s' @%d", name, n)); + result = n; + break; + } + } + if (result < 0) { + DEBUG(4, ("did not find name '%s'", name)); + } + return (result >= 0); +} + +#define EXTEND_NUM(num, ext) \ + DEBUG(4, ("extending " #num " from %d to %d", \ + to->num, (unsigned short) (to->num + (ext - to->ext)))); \ + to->num = (unsigned short) (to->num + (ext - to->ext)) + +static void +realign_data(TERMTYPE2 *to, char **ext_Names, + int ext_Booleans, + int ext_Numbers, + int ext_Strings) +{ + int n, m, base; + int to_Booleans = to->ext_Booleans; + int to_Numbers = to->ext_Numbers; + int to_Strings = to->ext_Strings; + int to1, to2, from; + + DEBUG(4, ("realign_data %d/%d/%d vs %d/%d/%d", + ext_Booleans, + ext_Numbers, + ext_Strings, + to->ext_Booleans, + to->ext_Numbers, + to->ext_Strings)); + + if (to->ext_Booleans != ext_Booleans) { + to1 = 0; + to2 = to_Booleans + to1; + from = 0; + EXTEND_NUM(num_Booleans, ext_Booleans); + TYPE_REALLOC(NCURSES_SBOOL, to->num_Booleans, to->Booleans); + for (n = to->ext_Booleans - 1, + m = ext_Booleans - 1, + base = to->num_Booleans - (m + 1); m >= 0; m--) { + if (find_name(to->ext_Names, to1, to2, ext_Names[m + from])) { + to->Booleans[base + m] = to->Booleans[base + n--]; + } else { + to->Booleans[base + m] = FALSE; + } + } + to->ext_Booleans = UShort(ext_Booleans); + } + + if (to->ext_Numbers != ext_Numbers) { + to1 = to_Booleans; + to2 = to_Numbers + to1; + from = ext_Booleans; + EXTEND_NUM(num_Numbers, ext_Numbers); + TYPE_REALLOC(NCURSES_INT2, to->num_Numbers, to->Numbers); + for (n = to->ext_Numbers - 1, + m = ext_Numbers - 1, + base = to->num_Numbers - (m + 1); m >= 0; m--) { + if (find_name(to->ext_Names, to1, to2, ext_Names[m + from])) { + to->Numbers[base + m] = to->Numbers[base + n--]; + } else { + to->Numbers[base + m] = ABSENT_NUMERIC; + } + } + to->ext_Numbers = UShort(ext_Numbers); + } + + if (to->ext_Strings != ext_Strings) { + to1 = to_Booleans + to_Numbers; + to2 = to_Strings + to1; + from = ext_Booleans + ext_Numbers; + EXTEND_NUM(num_Strings, ext_Strings); + TYPE_REALLOC(char *, to->num_Strings, to->Strings); + for (n = to->ext_Strings - 1, + m = ext_Strings - 1, + base = to->num_Strings - (m + 1); m >= 0; m--) { + if (find_name(to->ext_Names, to1, to2, ext_Names[m + from])) { + to->Strings[base + m] = to->Strings[base + n--]; + } else { + to->Strings[base + m] = ABSENT_STRING; + } + } + to->ext_Strings = UShort(ext_Strings); + } +} + +/* + * Returns the first index in ext_Names[] for the given token-type + */ +static unsigned +_nc_first_ext_name(TERMTYPE2 *tp, int token_type) +{ + unsigned first; + + switch (token_type) { + case BOOLEAN: + first = 0; + break; + case NUMBER: + first = tp->ext_Booleans; + break; + case STRING: + first = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); + break; + default: + first = 0; + break; + } + return first; +} + +/* + * Returns the last index in ext_Names[] for the given token-type + */ +static unsigned +_nc_last_ext_name(TERMTYPE2 *tp, int token_type) +{ + unsigned last; + + switch (token_type) { + case BOOLEAN: + last = tp->ext_Booleans; + break; + case NUMBER: + last = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); + break; + default: + case STRING: + last = NUM_EXT_NAMES(tp); + break; + } + return last; +} + +/* + * Lookup an entry from extended-names, returning -1 if not found + */ +static int +_nc_find_ext_name(TERMTYPE2 *tp, char *name, int token_type) +{ + unsigned j; + unsigned first = _nc_first_ext_name(tp, token_type); + unsigned last = _nc_last_ext_name(tp, token_type); + + for (j = first; j < last; j++) { + if (!strcmp(name, tp->ext_Names[j])) { + return (int) j; + } + } + return -1; +} + +/* + * Translate an index into ext_Names[] into the corresponding index into data + * (e.g., Booleans[]). + */ +static int +_nc_ext_data_index(TERMTYPE2 *tp, int n, int token_type) +{ + switch (token_type) { + case BOOLEAN: + n += (tp->num_Booleans - tp->ext_Booleans); + break; + case NUMBER: + n += (tp->num_Numbers - tp->ext_Numbers) + - (tp->ext_Booleans); + break; + default: + case STRING: + n += (tp->num_Strings - tp->ext_Strings) + - (tp->ext_Booleans + tp->ext_Numbers); + } + return n; +} + +/* + * Adjust tables to remove (not free) an extended name and its corresponding + * data. + */ +static bool +_nc_del_ext_name(TERMTYPE2 *tp, char *name, int token_type) +{ + int first; + + if ((first = _nc_find_ext_name(tp, name, token_type)) >= 0) { + int j; + int last = (int) NUM_EXT_NAMES(tp) - 1; + + for (j = first; j < last; j++) { + tp->ext_Names[j] = tp->ext_Names[j + 1]; + } + first = _nc_ext_data_index(tp, first, token_type); + switch (token_type) { + case BOOLEAN: + last = tp->num_Booleans - 1; + for (j = first; j < last; j++) + tp->Booleans[j] = tp->Booleans[j + 1]; + tp->ext_Booleans--; + tp->num_Booleans--; + break; + case NUMBER: + last = tp->num_Numbers - 1; + for (j = first; j < last; j++) + tp->Numbers[j] = tp->Numbers[j + 1]; + tp->ext_Numbers--; + tp->num_Numbers--; + break; + case STRING: + last = tp->num_Strings - 1; + for (j = first; j < last; j++) + tp->Strings[j] = tp->Strings[j + 1]; + tp->ext_Strings--; + tp->num_Strings--; + break; + } + return TRUE; + } + return FALSE; +} + +/* + * Adjust tables to insert an extended name, making room for new data. The + * index into the corresponding data array is returned. + */ +static int +_nc_ins_ext_name(TERMTYPE2 *tp, char *name, int token_type) +{ + unsigned first = _nc_first_ext_name(tp, token_type); + unsigned last = _nc_last_ext_name(tp, token_type); + unsigned total = NUM_EXT_NAMES(tp) + 1; + unsigned j, k; + + for (j = first; j < last; j++) { + int cmp = strcmp(name, tp->ext_Names[j]); + if (cmp == 0) + /* already present */ + return _nc_ext_data_index(tp, (int) j, token_type); + if (cmp < 0) { + break; + } + } + + TYPE_REALLOC(char *, total, tp->ext_Names); + for (k = total - 1; k > j; k--) + tp->ext_Names[k] = tp->ext_Names[k - 1]; + tp->ext_Names[j] = name; + j = (unsigned) _nc_ext_data_index(tp, (int) j, token_type); + + switch (token_type) { + case BOOLEAN: + tp->ext_Booleans++; + tp->num_Booleans++; + TYPE_REALLOC(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans); + for (k = (unsigned) (tp->num_Booleans - 1); k > j; k--) + tp->Booleans[k] = tp->Booleans[k - 1]; + break; + case NUMBER: + tp->ext_Numbers++; + tp->num_Numbers++; + TYPE_REALLOC(NCURSES_INT2, tp->num_Numbers, tp->Numbers); + for (k = (unsigned) (tp->num_Numbers - 1); k > j; k--) + tp->Numbers[k] = tp->Numbers[k - 1]; + break; + case STRING: + tp->ext_Strings++; + tp->num_Strings++; + TYPE_REALLOC(char *, tp->num_Strings, tp->Strings); + for (k = (unsigned) (tp->num_Strings - 1); k > j; k--) + tp->Strings[k] = tp->Strings[k - 1]; + break; + } + return (int) j; +} + +/* + * Look for strings that are marked cancelled, which happen to be the same name + * as a boolean or number. We'll get this as a special case when we get a + * cancellation of a name that is inherited from another entry. + */ +static void +adjust_cancels(TERMTYPE2 *to, TERMTYPE2 *from) +{ + int first = to->ext_Booleans + to->ext_Numbers; + int last = first + to->ext_Strings; + int j, k; + + for (j = first; j < last;) { + char *name = to->ext_Names[j]; + int j_str = to->num_Strings - first - to->ext_Strings; + + if (to->Strings[j + j_str] == CANCELLED_STRING) { + if (_nc_find_ext_name(from, to->ext_Names[j], BOOLEAN) >= 0) { + if (_nc_del_ext_name(to, name, STRING) + || _nc_del_ext_name(to, name, NUMBER)) { + k = _nc_ins_ext_name(to, name, BOOLEAN); + to->Booleans[k] = FALSE; + } else { + j++; + } + } else if (_nc_find_ext_name(from, to->ext_Names[j], NUMBER) >= 0) { + if (_nc_del_ext_name(to, name, STRING) + || _nc_del_ext_name(to, name, BOOLEAN)) { + k = _nc_ins_ext_name(to, name, NUMBER); + to->Numbers[k] = CANCELLED_NUMERIC; + } else { + j++; + } + } else if (_nc_find_ext_name(from, to->ext_Names[j], STRING) >= 0) { + if (_nc_del_ext_name(to, name, NUMBER) + || _nc_del_ext_name(to, name, BOOLEAN)) { + k = _nc_ins_ext_name(to, name, STRING); + to->Strings[k] = CANCELLED_STRING; + } else { + j++; + } + } else { + j++; + } + } else { + j++; + } + } +} + +NCURSES_EXPORT(void) +_nc_align_termtype(TERMTYPE2 *to, TERMTYPE2 *from) +{ + int na; + int nb; + char **ext_Names; + + na = to ? ((int) NUM_EXT_NAMES(to)) : 0; + nb = from ? ((int) NUM_EXT_NAMES(from)) : 0; + + DEBUG(2, ("align_termtype to(%d:%s), from(%d:%s)", + na, to ? NonNull(to->term_names) : "?", + nb, from ? NonNull(from->term_names) : "?")); + + if (to != NULL && from != NULL && (na != 0 || nb != 0)) { + int ext_Booleans, ext_Numbers, ext_Strings; + bool used_ext_Names = FALSE; + + if ((na == nb) /* check if the arrays are equivalent */ + &&(to->ext_Booleans == from->ext_Booleans) + && (to->ext_Numbers == from->ext_Numbers) + && (to->ext_Strings == from->ext_Strings)) { + int n; + bool same; + + for (n = 0, same = TRUE; n < na; n++) { + if (strcmp(to->ext_Names[n], from->ext_Names[n])) { + same = FALSE; + break; + } + } + if (same) + return; + } + /* + * This is where we pay for having a simple extension representation. + * Allocate a new ext_Names array and merge the two ext_Names arrays + * into it, updating to's counts for booleans, etc. Fortunately we do + * this only for the terminfo compiler (tic) and comparer (infocmp). + */ + TYPE_MALLOC(char *, (size_t)(na + nb), ext_Names); + + if (to->ext_Strings && (from->ext_Booleans + from->ext_Numbers)) + adjust_cancels(to, from); + + if (from->ext_Strings && (to->ext_Booleans + to->ext_Numbers)) + adjust_cancels(from, to); + + ext_Booleans = merge_names(ext_Names, + to->ext_Names, + to->ext_Booleans, + from->ext_Names, + from->ext_Booleans); + ext_Numbers = merge_names(ext_Names + ext_Booleans, + to->ext_Names + + to->ext_Booleans, + to->ext_Numbers, + from->ext_Names + + from->ext_Booleans, + from->ext_Numbers); + ext_Strings = merge_names(ext_Names + ext_Numbers + ext_Booleans, + to->ext_Names + + to->ext_Booleans + + to->ext_Numbers, + to->ext_Strings, + from->ext_Names + + from->ext_Booleans + + from->ext_Numbers, + from->ext_Strings); + /* + * Now we must reallocate the Booleans, etc., to allow the data to be + * overlaid. + */ + if (na != (ext_Booleans + ext_Numbers + ext_Strings)) { + realign_data(to, ext_Names, ext_Booleans, ext_Numbers, ext_Strings); + FreeIfNeeded(to->ext_Names); + to->ext_Names = ext_Names; + DEBUG(2, ("realigned %d extended names for '%s' (to)", + NUM_EXT_NAMES(to), to->term_names)); + used_ext_Names = TRUE; + } + if (nb != (ext_Booleans + ext_Numbers + ext_Strings)) { + nb = (ext_Booleans + ext_Numbers + ext_Strings); + realign_data(from, ext_Names, ext_Booleans, ext_Numbers, ext_Strings); + TYPE_REALLOC(char *, (size_t) nb, from->ext_Names); + memcpy(from->ext_Names, ext_Names, sizeof(char *) * (size_t) nb); + DEBUG(2, ("realigned %d extended names for '%s' (from)", + NUM_EXT_NAMES(from), from->term_names)); + } + if (!used_ext_Names) + free(ext_Names); + } +} +#endif + +#define srcINT 1 +#define dstINT 2 + +/* + * TERMTYPE and TERMTYPE2 differ only with regard to the values in Numbers. + * Use 'mode' to decide which to use. + */ +static void +copy_termtype(TERMTYPE2 *dst, const TERMTYPE2 *src, int mode) +{ +#if NCURSES_XNAMES || NCURSES_EXT_NUMBERS + unsigned i; +#endif +#if NCURSES_EXT_NUMBERS + short *oldptr = 0; + int *newptr = 0; +#endif + + DEBUG(2, ("copy_termtype")); + *dst = *src; /* ...to copy the sizes and string-tables */ + + TYPE_MALLOC(NCURSES_SBOOL, NUM_BOOLEANS(dst), dst->Booleans); + TYPE_MALLOC(char *, NUM_STRINGS(dst), dst->Strings); + + memcpy(dst->Booleans, + src->Booleans, + NUM_BOOLEANS(dst) * sizeof(dst->Booleans[0])); + memcpy(dst->Strings, + src->Strings, + NUM_STRINGS(dst) * sizeof(dst->Strings[0])); + +#if NCURSES_EXT_NUMBERS + if ((mode & dstINT) == 0) { + DEBUG(2, ("...convert int ->short")); + TYPE_MALLOC(short, NUM_NUMBERS(dst), oldptr); + ((TERMTYPE *) dst)->Numbers = oldptr; + } else { + DEBUG(2, ("...copy without changing size")); + TYPE_MALLOC(int, NUM_NUMBERS(dst), newptr); + dst->Numbers = newptr; + } + if ((mode == srcINT) && (oldptr != 0)) { + DEBUG(2, ("...copy int ->short")); + for (i = 0; i < NUM_NUMBERS(dst); ++i) { + if (src->Numbers[i] > MAX_OF_TYPE(short)) { + oldptr[i] = MAX_OF_TYPE(short); + } else { + oldptr[i] = (short) src->Numbers[i]; + } + } + } else if ((mode == dstINT) && (newptr != 0)) { + DEBUG(2, ("...copy short ->int")); + for (i = 0; i < NUM_NUMBERS(dst); ++i) { + newptr[i] = ((const short *) (src->Numbers))[i]; + } + } else { + DEBUG(2, ("...copy %s without change", + (mode & dstINT) + ? "int" + : "short")); + memcpy(dst->Numbers, + src->Numbers, + NUM_NUMBERS(dst) * ((mode & dstINT) + ? sizeof(int) + : sizeof(short))); + } +#else + (void) mode; + TYPE_MALLOC(short, NUM_NUMBERS(dst), dst->Numbers); + memcpy(dst->Numbers, + src->Numbers, + NUM_NUMBERS(dst) * sizeof(dst->Numbers[0])); +#endif + + /* FIXME: we probably should also copy str_table and ext_str_table, + * but tic and infocmp are not written to exploit that (yet). + */ + +#if NCURSES_XNAMES + if ((i = NUM_EXT_NAMES(src)) != 0) { + TYPE_MALLOC(char *, i, dst->ext_Names); + memcpy(dst->ext_Names, src->ext_Names, i * sizeof(char *)); + } else { + dst->ext_Names = 0; + } +#endif +} + +/* + * This entrypoint is used by tack 1.07 + */ +NCURSES_EXPORT(void) +_nc_copy_termtype(TERMTYPE *dst, const TERMTYPE *src) +{ + DEBUG(2, ("_nc_copy_termtype...")); + copy_termtype((TERMTYPE2 *) dst, (const TERMTYPE2 *) src, 0); +} + +#if NCURSES_EXT_NUMBERS +NCURSES_EXPORT(void) +_nc_copy_termtype2(TERMTYPE2 *dst, const TERMTYPE2 *src) +{ + DEBUG(2, ("_nc_copy_termtype2...")); + copy_termtype(dst, src, srcINT | dstINT); +} + +/* + * Use this for exporting the internal TERMTYPE2 to the legacy format used via + * the CUR macro by applications. + */ +NCURSES_EXPORT(void) +_nc_export_termtype2(TERMTYPE *dst, const TERMTYPE2 *src) +{ + DEBUG(2, ("_nc_export_termtype2...")); + copy_termtype((TERMTYPE2 *) dst, src, srcINT); +} +#endif /* NCURSES_EXT_NUMBERS */ diff --git a/deps/ncurses-6.3/ncurses/tinfo/captoinfo.c b/deps/ncurses-6.3/ncurses/tinfo/captoinfo.c new file mode 100644 index 0000000..7e14731 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/captoinfo.c @@ -0,0 +1,1059 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * captoinfo.c + * + * Provide conversion in both directions between termcap and terminfo. + * + * cap-to-info --- conversion between termcap and terminfo formats + * + * The captoinfo() code was swiped from Ross Ridge's mytinfo package, + * adapted to fit ncurses by Eric S. Raymond <esr@snark.thyrsus.com>. + * + * It has just one entry point: + * + * char *_nc_captoinfo(n, s, parameterized) + * + * Convert value s for termcap string capability named n into terminfo + * format. + * + * This code recognizes all the standard 4.4BSD %-escapes: + * + * %% output `%' + * %d output value as in printf %d + * %2 output value as in printf %2d + * %3 output value as in printf %3d + * %. output value as in printf %c + * %+x add x to value, then do %. + * %>xy if value > x then add y, no output + * %r reverse order of two parameters, no output + * %i increment by one, no output + * %n exclusive-or all parameters with 0140 (Datamedia 2500) + * %B BCD (16*(value/10)) + (value%10), no output + * %D Reverse coding (value - 2*(value%16)), no output (Delta Data). + * + * Also, %02 and %03 are accepted as synonyms for %2 and %3. + * + * Besides all the standard termcap escapes, this translator understands + * the following extended escapes: + * + * used by GNU Emacs termcap libraries + * %a[+*-/=][cp]x GNU arithmetic. + * %m xor the first two parameters by 0177 + * %b backup to previous parameter + * %f skip this parameter + * + * used by the University of Waterloo (MFCF) termcap libraries + * %-x subtract parameter FROM char x and output it as a char + * %ax add the character x to parameter + * + * If #define WATERLOO is on, also enable these translations: + * + * %sx subtract parameter FROM the character x + * + * By default, this Waterloo translations are not compiled in, because + * the Waterloo %s conflicts with the way terminfo uses %s in strings for + * function programming. + * + * Note the two definitions of %a: the GNU definition is translated if the + * characters after the 'a' are valid for it, otherwise the UW definition + * is translated. + */ + +#include <curses.priv.h> + +#include <ctype.h> +#include <tic.h> + +MODULE_ID("$Id: captoinfo.c,v 1.102 2021/09/04 10:29:15 tom Exp $") + +#if 0 +#define DEBUG_THIS(p) DEBUG(9, p) +#else +#define DEBUG_THIS(p) /* nothing */ +#endif + +#define MAX_PUSHED 16 /* max # args we can push onto the stack */ + +static int stack[MAX_PUSHED]; /* the stack */ +static int stackptr; /* the next empty place on the stack */ +static int onstack; /* the top of stack */ +static int seenm; /* seen a %m */ +static int seenn; /* seen a %n */ +static int seenr; /* seen a %r */ +static int param; /* current parameter */ +static char *dp; /* pointer to end of the converted string */ + +static char *my_string; +static size_t my_length; + +static char * +init_string(void) +/* initialize 'my_string', 'my_length' */ +{ + if (my_string == 0) + TYPE_MALLOC(char, my_length = 256, my_string); + + *my_string = '\0'; + return my_string; +} + +static char * +save_string(char *d, const char *const s) +{ + size_t have = (size_t) (d - my_string); + size_t need = have + strlen(s) + 2; + if (need > my_length) { + my_string = (char *) _nc_doalloc(my_string, my_length = (need + need)); + if (my_string == 0) + _nc_err_abort(MSG_NO_MEMORY); + d = my_string + have; + } + _nc_STRCPY(d, s, my_length - have); + return d + strlen(d); +} + +static NCURSES_INLINE char * +save_char(char *s, int c) +{ + static char temp[2]; + temp[0] = (char) c; + return save_string(s, temp); +} + +static void +push(void) +/* push onstack on to the stack */ +{ + if (stackptr >= MAX_PUSHED) + _nc_warning("string too complex to convert"); + else + stack[stackptr++] = onstack; +} + +static void +pop(void) +/* pop the top of the stack into onstack */ +{ + if (stackptr == 0) { + if (onstack == 0) + _nc_warning("I'm confused"); + else + onstack = 0; + } else + onstack = stack[--stackptr]; + param++; +} + +static int +cvtchar(register const char *sp) +/* convert a character to a terminfo push */ +{ + unsigned char c = 0; + int len; + + switch (*sp) { + case '\\': + switch (*++sp) { + case '\'': + case '$': + case '\\': + case '%': + c = UChar(*sp); + len = 2; + break; + case '\0': + c = '\\'; + len = 1; + break; + case '0': + case '1': + case '2': + case '3': + len = 1; + while (isdigit(UChar(*sp))) { + c = UChar(8 * c + (*sp++ - '0')); + len++; + } + break; + default: + c = UChar(*sp); + len = (c != '\0') ? 2 : 1; + break; + } + break; + case '^': + len = 2; + c = UChar(*++sp); + if (c == '?') { + c = 127; + } else if (c == '\0') { + len = 1; + } else { + c &= 0x1f; + } + break; + default: + c = UChar(*sp); + len = (c != '\0') ? 1 : 0; + } + if (isgraph(c) && c != ',' && c != '\'' && c != '\\' && c != ':') { + dp = save_string(dp, "%\'"); + dp = save_char(dp, c); + dp = save_char(dp, '\''); + } else if (c != '\0') { + dp = save_string(dp, "%{"); + if (c > 99) + dp = save_char(dp, c / 100 + '0'); + if (c > 9) + dp = save_char(dp, ((int) (c / 10)) % 10 + '0'); + dp = save_char(dp, c % 10 + '0'); + dp = save_char(dp, '}'); + } + return len; +} + +static void +getparm(int parm, int n) +/* push n copies of param on the terminfo stack if not already there */ +{ + int nn; + + if (seenr) { + if (parm == 1) + parm = 2; + else if (parm == 2) + parm = 1; + } + + for (nn = 0; nn < n; ++nn) { + dp = save_string(dp, "%p"); + dp = save_char(dp, '0' + parm); + } + + if (onstack == parm) { + if (n > 1) { + _nc_warning("string may not be optimal"); + dp = save_string(dp, "%Pa"); + while (n-- > 0) { + dp = save_string(dp, "%ga"); + } + } + return; + } + if (onstack != 0) + push(); + + onstack = parm; + + if (seenn && parm < 3) { + dp = save_string(dp, "%{96}%^"); + } + + if (seenm && parm < 3) { + dp = save_string(dp, "%{127}%^"); + } +} + +/* + * Convert a termcap string to terminfo format. + * 'cap' is the relevant terminfo capability index. + * 's' is the string value of the capability. + * 'parameterized' tells what type of translations to do: + * % translations if 1 + * pad translations if >=0 + */ +NCURSES_EXPORT(char *) +_nc_captoinfo(const char *cap, const char *s, int const parameterized) +{ + const char *capstart; + + stackptr = 0; + onstack = 0; + seenm = 0; + seenn = 0; + seenr = 0; + param = 1; + + DEBUG_THIS(("_nc_captoinfo params %d, %s", parameterized, s)); + + dp = init_string(); + + /* skip the initial padding (if we haven't been told not to) */ + capstart = 0; + if (s == 0) + s = ""; + if (parameterized >= 0 && isdigit(UChar(*s))) + for (capstart = s; *s != '\0'; s++) + if (!(isdigit(UChar(*s)) || *s == '*' || *s == '.')) + break; + + while (*s != '\0') { + switch (*s) { + case '%': + s++; + if (parameterized < 1) { + dp = save_char(dp, '%'); + break; + } + switch (*s++) { + case '%': + dp = save_string(dp, "%%"); + break; + case 'r': + if (seenr++ == 1) { + _nc_warning("saw %%r twice in %s", cap); + } + break; + case 'm': + if (seenm++ == 1) { + _nc_warning("saw %%m twice in %s", cap); + } + break; + case 'n': + if (seenn++ == 1) { + _nc_warning("saw %%n twice in %s", cap); + } + break; + case 'i': + dp = save_string(dp, "%i"); + break; + case '6': + case 'B': + getparm(param, 1); + dp = save_string(dp, "%{10}%/%{16}%*"); + getparm(param, 1); + dp = save_string(dp, "%{10}%m%+"); + break; + case '8': + case 'D': + getparm(param, 2); + dp = save_string(dp, "%{2}%*%-"); + break; + case '>': + /* %?%{x}%>%t%{y}%+%; */ + if (s[0] && s[1]) { + getparm(param, 2); + dp = save_string(dp, "%?"); + s += cvtchar(s); + dp = save_string(dp, "%>%t"); + s += cvtchar(s); + dp = save_string(dp, "%+%;"); + } else { + _nc_warning("expected two characters after %%>"); + dp = save_string(dp, "%>"); + } + break; + case 'a': + if ((*s == '=' || *s == '+' || *s == '-' + || *s == '*' || *s == '/') + && (s[1] == 'p' || s[1] == 'c') + && s[2] != '\0') { + int l; + l = 2; + if (*s != '=') + getparm(param, 1); + if (s[1] == 'p') { + getparm(param + s[2] - '@', 1); + if (param != onstack) { + pop(); + param--; + } + l++; + } else + l += cvtchar(s + 2); + switch (*s) { + case '+': + dp = save_string(dp, "%+"); + break; + case '-': + dp = save_string(dp, "%-"); + break; + case '*': + dp = save_string(dp, "%*"); + break; + case '/': + dp = save_string(dp, "%/"); + break; + case '=': + if (seenr) { + if (param == 1) + onstack = 2; + else if (param == 2) + onstack = 1; + else + onstack = param; + } else + onstack = param; + break; + } + s += l; + break; + } + getparm(param, 1); + s += cvtchar(s); + dp = save_string(dp, "%+"); + break; + case '+': + getparm(param, 1); + s += cvtchar(s); + dp = save_string(dp, "%+%c"); + pop(); + break; + case 's': +#ifdef WATERLOO + s += cvtchar(s); + getparm(param, 1); + dp = save_string(dp, "%-"); +#else + getparm(param, 1); + dp = save_string(dp, "%s"); + pop(); +#endif /* WATERLOO */ + break; + case '-': + s += cvtchar(s); + getparm(param, 1); + dp = save_string(dp, "%-%c"); + pop(); + break; + case '.': + getparm(param, 1); + dp = save_string(dp, "%c"); + pop(); + break; + case '0': /* not clear any of the historical termcaps did this */ + if (*s == '3') { + ++s; + goto see03; + } + if (*s == '2') { + ++s; + goto see02; + } + goto invalid; + case '2': + see02: + getparm(param, 1); + dp = save_string(dp, "%2d"); + pop(); + break; + case '3': + see03: + getparm(param, 1); + dp = save_string(dp, "%3d"); + pop(); + break; + case 'd': + getparm(param, 1); + dp = save_string(dp, "%d"); + pop(); + break; + case 'f': + param++; + break; + case 'b': + param--; + break; + case '\\': + dp = save_string(dp, "%\\"); + break; + default: + invalid: + dp = save_char(dp, '%'); + s--; + _nc_warning("unknown %% code %s (%#x) in %s", + unctrl((chtype) *s), UChar(*s), cap); + break; + } + break; + default: + if (*s != '\0') + dp = save_char(dp, *s++); + break; + } + } + + /* + * Now, if we stripped off some leading padding, add it at the end + * of the string as mandatory padding. + */ + if (capstart) { + dp = save_string(dp, "$<"); + for (s = capstart; *s != '\0'; s++) + if (isdigit(UChar(*s)) || *s == '*' || *s == '.') + dp = save_char(dp, *s); + else + break; + dp = save_string(dp, "/>"); + } + + (void) save_char(dp, '\0'); + + DEBUG_THIS(("... _nc_captoinfo %s", NonNull(my_string))); + + return (my_string); +} + +/* + * Check for an expression that corresponds to "%B" (BCD): + * (parameter / 10) * 16 + (parameter % 10) + */ +static int +bcd_expression(const char *str) +{ + /* leave this non-const for HPUX */ + static char fmt[] = "%%p%c%%{10}%%/%%{16}%%*%%p%c%%{10}%%m%%+"; + int len = 0; + char ch1, ch2; + + if (sscanf(str, fmt, &ch1, &ch2) == 2 + && isdigit(UChar(ch1)) + && isdigit(UChar(ch2)) + && (ch1 == ch2)) { + len = 28; +#ifndef NDEBUG + { + char buffer[80]; + int tst; + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) fmt, ch1, ch2); + tst = strlen(buffer) - 1; + assert(len == tst); + } +#endif + } + return len; +} + +static char * +save_tc_char(char *bufptr, int c1) +{ + if (is7bits(c1) && isprint(c1)) { + if (c1 == ':' || c1 == '\\') + bufptr = save_char(bufptr, '\\'); + bufptr = save_char(bufptr, c1); + } else { + char temp[80]; + + if (c1 == (c1 & 0x1f)) { /* iscntrl() returns T on 255 */ + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "%.20s", unctrl((chtype) c1)); + } else { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "\\%03o", c1); + } + bufptr = save_string(bufptr, temp); + } + return bufptr; +} + +static char * +save_tc_inequality(char *bufptr, int c1, int c2) +{ + bufptr = save_string(bufptr, "%>"); + bufptr = save_tc_char(bufptr, c1); + bufptr = save_tc_char(bufptr, c2); + return bufptr; +} + +/* + * info-to-cap --- conversion between terminfo and termcap formats + * + * Here are the capabilities infotocap assumes it can translate to: + * + * %% output `%' + * %d output value as in printf %d + * %2 output value as in printf %2d + * %3 output value as in printf %3d + * %. output value as in printf %c + * %+c add character c to value, then do %. + * %>xy if value > x then add y, no output + * %r reverse order of two parameters, no output + * %i increment by one, no output + * %n exclusive-or all parameters with 0140 (Datamedia 2500) + * %B BCD (16*(value/10)) + (value%10), no output + * %D Reverse coding (value - 2*(value%16)), no output (Delta Data). + * %m exclusive-or all parameters with 0177 (not in 4.4BSD) + */ + +#define octal_fixup(n, c) fixups[n].ch = ((fixups[n].ch << 3) | ((c) - '0')) + +/* + * Convert a terminfo string to termcap format. Parameters are as in + * _nc_captoinfo(). + */ +NCURSES_EXPORT(char *) +_nc_infotocap(const char *cap GCC_UNUSED, const char *str, int const parameterized) +{ + int seenone = 0, seentwo = 0, saw_m = 0, saw_n = 0; + const char *padding; + const char *trimmed = 0; + int in0, in1, in2; + char ch1 = 0, ch2 = 0; + char *bufptr = init_string(); + char octal[4]; + int len; + int digits; + bool syntax_error = FALSE; + int myfix = 0; + struct { + int ch; + int offset; + } fixups[MAX_TC_FIXUPS]; + + DEBUG_THIS(("_nc_infotocap %s params %d, %s", + _nc_strict_bsd ? "strict" : "loose", + parameterized, + _nc_visbuf(str))); + + /* we may have to move some trailing mandatory padding up front */ + padding = str + strlen(str) - 1; + if (padding > str && *padding == '>') { + if (padding > (str + 1) && *--padding == '/') + --padding; + while (isdigit(UChar(*padding)) || *padding == '.' || *padding == '*') + padding--; + if (padding > str && *padding == '<' && *--padding == '$') + trimmed = padding; + padding += 2; + + while (isdigit(UChar(*padding)) || *padding == '.' || *padding == '*') + bufptr = save_char(bufptr, *padding++); + } + + for (; !syntax_error && + *str && + ((trimmed == 0) || (str < trimmed)); str++) { + int c1, c2; + char *cp = 0; + + if (str[0] == '^') { + if (str[1] == '\0' || (str + 1) == trimmed) { + bufptr = save_string(bufptr, "\\136"); + ++str; + } else if (str[1] == '?') { + /* + * Although the 4.3BSD termcap file has an instance of "kb=^?", + * that appears to be just cut/paste since neither 4.3BSD nor + * 4.4BSD termcap interprets "^?" as DEL. + */ + bufptr = save_string(bufptr, "\\177"); + ++str; + } else { + bufptr = save_char(bufptr, *str++); + bufptr = save_char(bufptr, *str); + } + } else if (str[0] == ':') { + bufptr = save_char(bufptr, '\\'); + bufptr = save_char(bufptr, '0'); + bufptr = save_char(bufptr, '7'); + bufptr = save_char(bufptr, '2'); + } else if (str[0] == '\\') { + if (str[1] == '\0' || (str + 1) == trimmed) { + bufptr = save_string(bufptr, "\\134"); + ++str; + } else if (str[1] == '^') { + bufptr = save_string(bufptr, "\\136"); + ++str; + } else if (str[1] == ',') { + bufptr = save_char(bufptr, *++str); + } else { + int xx1; + + bufptr = save_char(bufptr, *str++); + xx1 = *str; + if (_nc_strict_bsd) { + + if (isoctal(UChar(xx1))) { + int pad = 0; + int xx2; + int fix = 0; + + if (!isoctal(UChar(str[1]))) + pad = 2; + else if (str[1] && !isoctal(UChar(str[2]))) + pad = 1; + + /* + * Test for "\0", "\00" or "\000" and transform those + * into "\200". + */ + if (xx1 == '0' + && ((pad == 2) || (str[1] == '0')) + && ((pad >= 1) || (str[2] == '0'))) { + xx2 = '2'; + } else { + xx2 = '0'; + pad = 0; /* FIXME - optionally pad to 3 digits */ + } + if (myfix < MAX_TC_FIXUPS) { + fix = 3 - pad; + fixups[myfix].ch = 0; + fixups[myfix].offset = (int) (bufptr + - my_string + - 1); + } + while (pad-- > 0) { + bufptr = save_char(bufptr, xx2); + if (myfix < MAX_TC_FIXUPS) { + fixups[myfix].ch <<= 3; + fixups[myfix].ch |= (xx2 - '0'); + } + xx2 = '0'; + } + if (myfix < MAX_TC_FIXUPS) { + int n; + for (n = 0; n < fix; ++n) { + fixups[myfix].ch <<= 3; + fixups[myfix].ch |= (str[n] - '0'); + } + if (fixups[myfix].ch < 32) { + ++myfix; + } + } + } else if (strchr("E\\nrtbf", xx1) == 0) { + switch (xx1) { + case 'e': + xx1 = 'E'; + break; + case 'l': + xx1 = 'n'; + break; + case 's': + bufptr = save_char(bufptr, '0'); + bufptr = save_char(bufptr, '4'); + xx1 = '0'; + break; + case ':': + /* + * Note: termcap documentation claims that ":" + * must be escaped as "\072", however the + * documentation is incorrect - read the code. + * The replacement does not work reliably, + * so the advice is not helpful. + */ + bufptr = save_char(bufptr, '0'); + bufptr = save_char(bufptr, '7'); + xx1 = '2'; + break; + default: + /* should not happen, but handle this anyway */ + _nc_SPRINTF(octal, _nc_SLIMIT(sizeof(octal)) + "%03o", UChar(xx1)); + bufptr = save_char(bufptr, octal[0]); + bufptr = save_char(bufptr, octal[1]); + xx1 = octal[2]; + break; + } + } + } else { + if (myfix < MAX_TC_FIXUPS && isoctal(UChar(xx1))) { + bool will_fix = TRUE; + int n; + + fixups[myfix].ch = 0; + fixups[myfix].offset = (int) (bufptr - my_string - 1); + for (n = 0; n < 3; ++n) { + if (isoctal(str[n])) { + octal_fixup(myfix, str[n]); + } else { + will_fix = FALSE; + break; + } + } + if (will_fix && (fixups[myfix].ch < 32)) + ++myfix; + } + } + bufptr = save_char(bufptr, xx1); + } + } else if (str[0] == '$' && str[1] == '<') { /* discard padding */ + str += 2; + while (isdigit(UChar(*str)) + || *str == '.' + || *str == '*' + || *str == '/' + || *str == '>') + str++; + --str; + } else if (sscanf(str, + "[%%?%%p1%%{8}%%<%%t%d%%p1%%d%%e%%p1%%{16}%%<%%t%d%%p1%%{8}%%-%%d%%e%d;5;%%p1%%d%%;m", + &in0, &in1, &in2) == 3 + && ((in0 == 4 && in1 == 10 && in2 == 48) + || (in0 == 3 && in1 == 9 && in2 == 38))) { + /* dumb-down an optimized case from xterm-256color for termcap */ + if ((str = strstr(str, ";m")) == 0) + break; /* cannot happen */ + ++str; + if (in2 == 48) { + bufptr = save_string(bufptr, "[48;5;%dm"); + } else { + bufptr = save_string(bufptr, "[38;5;%dm"); + } + } else if (str[0] == '%' && str[1] == '%') { /* escaped '%' */ + bufptr = save_string(bufptr, "%%"); + ++str; + } else if (*str != '%' || (parameterized < 1)) { + bufptr = save_char(bufptr, *str); + } else if (sscanf(str, "%%?%%{%d}%%>%%t%%{%d}%%+%%;", &c1, &c2) == 2) { + str = strchr(str, ';'); + bufptr = save_tc_inequality(bufptr, c1, c2); + } else if (sscanf(str, "%%?%%{%d}%%>%%t%%'%c'%%+%%;", &c1, &ch2) == 2) { + str = strchr(str, ';'); + bufptr = save_tc_inequality(bufptr, c1, ch2); + } else if (sscanf(str, "%%?%%'%c'%%>%%t%%{%d}%%+%%;", &ch1, &c2) == 2) { + str = strchr(str, ';'); + bufptr = save_tc_inequality(bufptr, ch1, c2); + } else if (sscanf(str, "%%?%%'%c'%%>%%t%%'%c'%%+%%;", &ch1, &ch2) == 2) { + str = strchr(str, ';'); + bufptr = save_tc_inequality(bufptr, ch1, ch2); + } else if ((len = bcd_expression(str)) != 0) { + str += len; + bufptr = save_string(bufptr, "%B"); + } else if ((sscanf(str, "%%{%d}%%+%%%c", &c1, &ch2) == 2 + || sscanf(str, "%%'%c'%%+%%%c", &ch1, &ch2) == 2) + && ch2 == 'c' + && (cp = strchr(str, '+'))) { + str = cp + 2; + bufptr = save_string(bufptr, "%+"); + + if (ch1) + c1 = ch1; + bufptr = save_tc_char(bufptr, c1); + } + /* FIXME: this "works" for 'delta' */ + else if (strncmp(str, "%{2}%*%-", (size_t) 8) == 0) { + str += 7; + bufptr = save_string(bufptr, "%D"); + } else if (strncmp(str, "%{96}%^", (size_t) 7) == 0) { + str += 6; + if (saw_m++ == 0) { + bufptr = save_string(bufptr, "%n"); + } + } else if (strncmp(str, "%{127}%^", (size_t) 8) == 0) { + str += 7; + if (saw_n++ == 0) { + bufptr = save_string(bufptr, "%m"); + } + } else { /* cm-style format element */ + str++; + switch (*str) { + case '%': + bufptr = save_char(bufptr, '%'); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + bufptr = save_char(bufptr, '%'); + ch1 = 0; + ch2 = 0; + digits = 0; + while (isdigit(UChar(*str))) { + if (++digits > 2) { + syntax_error = TRUE; + break; + } + ch2 = ch1; + ch1 = *str++; + if (digits == 2 && ch2 != '0') { + syntax_error = TRUE; + break; + } else if (_nc_strict_bsd) { + if (ch1 > '3') { + syntax_error = TRUE; + break; + } + } else { + bufptr = save_char(bufptr, ch1); + } + } + if (syntax_error) + break; + /* + * Convert %02 to %2 and %03 to %3 + */ + if (ch2 == '0' && !_nc_strict_bsd) { + ch2 = 0; + bufptr[-2] = bufptr[-1]; + *--bufptr = 0; + } + if (_nc_strict_bsd) { + if (ch2 != 0 && ch2 != '0') { + syntax_error = TRUE; + } else if (ch1 < '2') { + ch1 = 'd'; + } + bufptr = save_char(bufptr, ch1); + } + if (strchr("oxX.", *str)) { + syntax_error = TRUE; /* termcap doesn't have octal, hex */ + } + break; + + case 'd': + bufptr = save_string(bufptr, "%d"); + break; + + case 'c': + bufptr = save_string(bufptr, "%."); + break; + + /* + * %s isn't in termcap, but it is convenient to pass it through + * so we can represent things like terminfo pfkey strings in + * termcap notation. + */ + case 's': + if (_nc_strict_bsd) { + syntax_error = TRUE; + } else { + bufptr = save_string(bufptr, "%s"); + } + break; + + case 'p': + str++; + if (*str == '1') + seenone = 1; + else if (*str == '2') { + if (!seenone && !seentwo) { + bufptr = save_string(bufptr, "%r"); + seentwo++; + } + } else if (*str >= '3') { + syntax_error = TRUE; + } + break; + + case 'i': + bufptr = save_string(bufptr, "%i"); + break; + + default: + bufptr = save_char(bufptr, *str); + syntax_error = TRUE; + break; + } /* endswitch (*str) */ + } /* endelse (*str == '%') */ + + /* + * 'str' always points to the end of what was scanned in this step, + * but that may not be the end of the string. + */ + assert(str != 0); + if (str == 0 || *str == '\0') + break; + + } /* endwhile (*str) */ + + if (!syntax_error && + myfix > 0 && + ((int) strlen(my_string) - (4 * myfix)) < MIN_TC_FIXUPS) { + while (--myfix >= 0) { + char *p = fixups[myfix].offset + my_string; + *p++ = '^'; + *p++ = (char) (fixups[myfix].ch | '@'); + while ((p[0] = p[2]) != '\0') { + ++p; + } + } + } + + DEBUG_THIS(("... _nc_infotocap %s", + syntax_error + ? "<ERR>" + : _nc_visbuf(my_string))); + + return (syntax_error ? NULL : my_string); +} + +#ifdef MAIN + +int curr_line; + +int +main(int argc, char *argv[]) +{ + int c, tc = FALSE; + + while ((c = getopt(argc, argv, "c")) != EOF) + switch (c) { + case 'c': + tc = TRUE; + break; + } + + curr_line = 0; + for (;;) { + char buf[BUFSIZ]; + + ++curr_line; + if (fgets(buf, sizeof(buf), stdin) == 0) + break; + buf[strlen(buf) - 1] = '\0'; + _nc_set_source(buf); + + if (tc) { + char *cp = _nc_infotocap("to termcap", buf, 1); + + if (cp) + (void) fputs(cp, stdout); + } else + (void) fputs(_nc_captoinfo("to terminfo", buf, 1), stdout); + (void) putchar('\n'); + } + return (0); +} +#endif /* MAIN */ + +#if NO_LEAKS +NCURSES_EXPORT(void) +_nc_captoinfo_leaks(void) +{ + if (my_string != 0) { + FreeAndNull(my_string); + } + my_length = 0; +} +#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/comp_error.c b/deps/ncurses-6.3/ncurses/tinfo/comp_error.c similarity index 84% rename from deps/ncurses-5.9/ncurses/tinfo/comp_error.c rename to deps/ncurses-6.3/ncurses/tinfo/comp_error.c index 56c362a..48f4878 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/comp_error.c +++ b/deps/ncurses-6.3/ncurses/tinfo/comp_error.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2007 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -41,7 +42,7 @@ #include <tic.h> -MODULE_ID("$Id: comp_error.c,v 1.31 2007/04/21 23:38:32 tom Exp $") +MODULE_ID("$Id: comp_error.c,v 1.40 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT_VAR(bool) _nc_suppress_warnings = FALSE; NCURSES_EXPORT_VAR(int) _nc_curr_line = 0; /* current line # in input */ @@ -59,18 +60,21 @@ _nc_get_source(void) NCURSES_EXPORT(void) _nc_set_source(const char *const name) { - SourceName = name; + FreeIfNeeded(SourceName); + SourceName = strdup(name); } NCURSES_EXPORT(void) _nc_set_type(const char *const name) { +#define MY_SIZE (size_t) MAX_NAME_SIZE if (TermType == 0) - TermType = typeMalloc(char, MAX_NAME_SIZE + 1); + TermType = typeMalloc(char, MY_SIZE + 1); if (TermType != 0) { TermType[0] = '\0'; - if (name) - strncat(TermType, name, MAX_NAME_SIZE); + if (name) { + _nc_STRNCAT(TermType, name, MY_SIZE, MY_SIZE); + } } } @@ -84,7 +88,7 @@ _nc_get_type(char *name) } #endif if (name != 0) - strcpy(name, TermType != 0 ? TermType : ""); + _nc_STRCPY(name, TermType != 0 ? TermType : "", MAX_NAME_SIZE); } static NCURSES_INLINE void @@ -102,7 +106,7 @@ where_is_problem(void) } NCURSES_EXPORT(void) -_nc_warning(const char *const fmt,...) +_nc_warning(const char *const fmt, ...) { va_list argp; @@ -117,7 +121,7 @@ _nc_warning(const char *const fmt,...) } NCURSES_EXPORT(void) -_nc_err_abort(const char *const fmt,...) +_nc_err_abort(const char *const fmt, ...) { va_list argp; @@ -130,7 +134,7 @@ _nc_err_abort(const char *const fmt,...) } NCURSES_EXPORT(void) -_nc_syserr_abort(const char *const fmt,...) +_nc_syserr_abort(const char *const fmt, ...) { va_list argp; @@ -140,14 +144,25 @@ _nc_syserr_abort(const char *const fmt,...) fprintf(stderr, "\n"); va_end(argp); +#if defined(TRACE) || !defined(NDEBUG) /* If we're debugging, try to show where the problem occurred - this * will dump core. */ -#if defined(TRACE) || !defined(NDEBUG) - abort(); -#else +#ifndef USE_ROOT_ENVIRON + if (getuid() != ROOT_UID) +#endif + abort(); +#endif /* Dumping core in production code is not a good idea. */ exit(EXIT_FAILURE); -#endif } + +#if NO_LEAKS +NCURSES_EXPORT(void) +_nc_comp_error_leaks(void) +{ + FreeAndNull(SourceName); + FreeAndNull(TermType); +} +#endif diff --git a/deps/ncurses-6.3/ncurses/tinfo/comp_expand.c b/deps/ncurses-6.3/ncurses/tinfo/comp_expand.c new file mode 100644 index 0000000..724283c --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/comp_expand.c @@ -0,0 +1,228 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Thomas E. Dickey 1998 * + ****************************************************************************/ + +#include <curses.priv.h> + +#include <ctype.h> +#include <tic.h> + +MODULE_ID("$Id: comp_expand.c,v 1.34 2021/09/04 10:29:15 tom Exp $") + +#if 0 +#define DEBUG_THIS(p) DEBUG(9, p) +#else +#define DEBUG_THIS(p) /* nothing */ +#endif + +static int +trailing_spaces(const char *src) +{ + while (*src == ' ') + src++; + return *src == 0; +} + +/* this deals with differences over whether 0x7f and 0x80..0x9f are controls */ +#define REALPRINT(s) (UChar(*(s)) < 127 && isprint(UChar(*(s)))) + +#define P_LIMIT(p) (length - (size_t)(p)) + +NCURSES_EXPORT(char *) +_nc_tic_expand(const char *srcp, bool tic_format, int numbers) +{ + static char *buffer; + static size_t length; + + int bufp; + const char *str = VALID_STRING(srcp) ? srcp : "\0\0"; + size_t need = (2 + strlen(str)) * 4; + int ch; + int octals = 0; + struct { + int ch; + int offset; + } fixups[MAX_TC_FIXUPS]; + + if (srcp == 0) { +#if NO_LEAKS + if (buffer != 0) { + FreeAndNull(buffer); + length = 0; + } +#endif + return 0; + } + if (buffer == 0 || need > length) { + if ((buffer = typeRealloc(char, length = need, buffer)) == 0) + return 0; + } + + DEBUG_THIS(("_nc_tic_expand %s:%s:%s", + tic_format ? "ti" : "tc", + numbers ? "#" : "", + _nc_visbuf(srcp))); + bufp = 0; + while ((ch = UChar(*str)) != 0) { + if (ch == '%' && REALPRINT(str + 1)) { + buffer[bufp++] = *str++; + /* + * Though the character literals are more compact, most + * terminal descriptions use numbers and are not easy + * to read in character-literal form. + */ + switch (numbers) { + case -1: + if (str[0] == S_QUOTE + && str[1] != '\\' + && REALPRINT(str + 1) + && str[2] == S_QUOTE) { + _nc_SPRINTF(buffer + bufp, _nc_SLIMIT(P_LIMIT(bufp)) + "{%d}", str[1]); + bufp += (int) strlen(buffer + bufp); + str += 2; + } else { + buffer[bufp++] = *str; + } + break; + /* + * If we have a "%{number}", try to translate it into + * a "%'char'" form, since that will run a little faster + * when we're interpreting it. Also, having one form + * for the constant makes it simpler to compare terminal + * descriptions. + */ + case 1: + if (str[0] == L_BRACE + && isdigit(UChar(str[1]))) { + char *dst = 0; + long value = strtol(str + 1, &dst, 0); + if (dst != 0 + && *dst == R_BRACE + && value < 127 + && value != '\\' /* FIXME */ + && isprint((int) value)) { + ch = (int) value; + buffer[bufp++] = S_QUOTE; + if (ch == '\\' + || ch == S_QUOTE) + buffer[bufp++] = '\\'; + buffer[bufp++] = (char) ch; + buffer[bufp++] = S_QUOTE; + str = dst; + } else { + buffer[bufp++] = *str; + } + } else { + buffer[bufp++] = *str; + } + break; + default: + if (*str == ',') /* minitel1 uses this */ + buffer[bufp++] = '\\'; + buffer[bufp++] = *str; + break; + } + } else if (ch == 128) { + buffer[bufp++] = '\\'; + buffer[bufp++] = '0'; + } else if (ch == '\033') { + buffer[bufp++] = '\\'; + buffer[bufp++] = 'E'; + } else if (ch == '\\' && tic_format && (str == srcp || str[-1] != '^')) { + buffer[bufp++] = '\\'; + buffer[bufp++] = '\\'; + } else if (ch == ' ' && tic_format && (str == srcp || + trailing_spaces(str))) { + buffer[bufp++] = '\\'; + buffer[bufp++] = 's'; + } else if ((ch == ',' || ch == '^') && tic_format) { + buffer[bufp++] = '\\'; + buffer[bufp++] = (char) ch; + } else if (REALPRINT(str) + && (ch != ',' + && !(ch == ':' && !tic_format) + && !(ch == '!' && !tic_format) + && ch != '^')) + buffer[bufp++] = (char) ch; + else if (ch == '\r') { + buffer[bufp++] = '\\'; + buffer[bufp++] = 'r'; + } else if (ch == '\n') { + buffer[bufp++] = '\\'; + buffer[bufp++] = 'n'; + } +#define UnCtl(c) ((c) + '@') + else if (UChar(ch) < 32 + && isdigit(UChar(str[1]))) { + _nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp)) + "^%c", UnCtl(ch)); + bufp += 2; + } else { + _nc_SPRINTF(&buffer[bufp], _nc_SLIMIT(P_LIMIT(bufp)) + "\\%03o", ch); + if ((octals < MAX_TC_FIXUPS) && + ((tic_format && (ch == 127)) || ch < 32)) { + fixups[octals].ch = UChar(ch); + fixups[octals].offset = bufp; + ++octals; + } + bufp += 4; + } + + str++; + } + + buffer[bufp] = '\0'; + + /* + * If most of a short string is ASCII control characters, reformat the + * string to show those in up-arrow format. For longer strings, it is + * more likely that the characters are just binary coding. + * + * If we're formatting termcap, just use the shorter format (up-arrows). + */ + if (octals != 0 && (!tic_format || (bufp - (4 * octals)) < MIN_TC_FIXUPS)) { + while (--octals >= 0) { + char *p = buffer + fixups[octals].offset; + *p++ = '^'; + *p++ = (char) ((fixups[octals].ch == 127) + ? '?' + : (fixups[octals].ch + (int) '@')); + while ((p[0] = p[2]) != 0) { + ++p; + } + } + } + DEBUG_THIS(("... %s", _nc_visbuf(buffer))); + return (buffer); +} diff --git a/deps/ncurses-5.9/ncurses/tinfo/comp_hash.c b/deps/ncurses-6.3/ncurses/tinfo/comp_hash.c similarity index 78% rename from deps/ncurses-5.9/ncurses/tinfo/comp_hash.c rename to deps/ncurses-6.3/ncurses/tinfo/comp_hash.c index 959c6e1..80755f2 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/comp_hash.c +++ b/deps/ncurses-6.3/ncurses/tinfo/comp_hash.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2008,2009 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 * @@ -44,13 +45,13 @@ #include <tic.h> #include <hashsize.h> -MODULE_ID("$Id: comp_hash.c,v 1.48 2009/08/08 17:36:21 tom Exp $") +MODULE_ID("$Id: comp_hash.c,v 1.53 2020/02/02 23:34:34 tom Exp $") /* * Finds the entry for the given string in the hash table if present. * Returns a pointer to the entry in the table or 0 if not found. */ -/* entrypoint used by tack (do not alter) */ +/* entrypoint used by tack 1.07 */ NCURSES_EXPORT(struct name_table_entry const *) _nc_find_entry(const char *string, const HashValue * hash_table) @@ -63,7 +64,9 @@ _nc_find_entry(const char *string, hashvalue = data->hash_of(string); - if (data->table_data[hashvalue] >= 0) { + if (hashvalue >= 0 + && (unsigned) hashvalue < data->table_size + && data->table_data[hashvalue] >= 0) { real_table = _nc_get_table(termcap); ptr = real_table + data->table_data[hashvalue]; @@ -96,7 +99,9 @@ _nc_find_type_entry(const char *string, const HashData *data = _nc_get_hash_info(termcap); int hashvalue = data->hash_of(string); - if (data->table_data[hashvalue] >= 0) { + if (hashvalue >= 0 + && (unsigned) hashvalue < data->table_size + && data->table_data[hashvalue] >= 0) { const struct name_table_entry *const table = _nc_get_table(termcap); ptr = table + data->table_data[hashvalue]; @@ -112,3 +117,34 @@ _nc_find_type_entry(const char *string, return ptr; } + +#if NCURSES_XNAMES +NCURSES_EXPORT(struct user_table_entry const *) +_nc_find_user_entry(const char *string) +{ + const HashData *data = _nc_get_hash_user(); + int hashvalue; + struct user_table_entry const *ptr = 0; + struct user_table_entry const *real_table; + + hashvalue = data->hash_of(string); + + if (hashvalue >= 0 + && (unsigned) hashvalue < data->table_size + && data->table_data[hashvalue] >= 0) { + + real_table = _nc_get_userdefs_table(); + ptr = real_table + data->table_data[hashvalue]; + while (!data->compare_names(ptr->ute_name, string)) { + if (ptr->ute_link < 0) { + ptr = 0; + break; + } + ptr = real_table + (ptr->ute_link + + data->table_data[data->table_size]); + } + } + + return (ptr); +} +#endif /* NCURSES_XNAMES */ diff --git a/deps/ncurses-6.3/ncurses/tinfo/comp_parse.c b/deps/ncurses-6.3/ncurses/tinfo/comp_parse.c new file mode 100644 index 0000000..2bc9485 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/comp_parse.c @@ -0,0 +1,750 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * comp_parse.c -- parser driver loop and use handling. + * + * Use this code by calling _nc_read_entry_source() on as many source + * files as you like (either terminfo or termcap syntax). If you + * want use-resolution, call _nc_resolve_uses2(). To free the list + * storage, do _nc_free_entries(). + */ + +#include <curses.priv.h> + +#include <ctype.h> + +#include <tic.h> + +MODULE_ID("$Id: comp_parse.c,v 1.113 2021/05/08 15:03:42 tom Exp $") + +static void sanity_check2(TERMTYPE2 *, bool); +NCURSES_IMPEXP void (NCURSES_API *_nc_check_termtype2) (TERMTYPE2 *, bool) = sanity_check2; + +static void fixup_acsc(TERMTYPE2 *, int); + +static void +enqueue(ENTRY * ep) +/* add an entry to the in-core list */ +{ + ENTRY *newp = _nc_copy_entry(ep); + + if (newp == 0) + _nc_err_abort(MSG_NO_MEMORY); + + newp->last = _nc_tail; + _nc_tail = newp; + + newp->next = 0; + if (newp->last) + newp->last->next = newp; +} + +#define NAMEBUFFER_SIZE (MAX_NAME_SIZE + 2) + +static char * +force_bar(char *dst, char *src) +{ + if (strchr(src, '|') == 0) { + size_t len = strlen(src); + if (len > MAX_NAME_SIZE) + len = MAX_NAME_SIZE; + _nc_STRNCPY(dst, src, MAX_NAME_SIZE); + _nc_STRCPY(dst + len, "|", NAMEBUFFER_SIZE - len); + src = dst; + } + return src; +} +#define ForceBar(dst, src) ((strchr(src, '|') == 0) ? force_bar(dst, src) : src) + +#if NCURSES_USE_TERMCAP && NCURSES_XNAMES +static char * +skip_index(char *name) +{ + char *bar = strchr(name, '|'); + + if (bar != 0 && (bar - name) == 2) + name = bar + 1; + + return name; +} +#endif + +static bool +check_collisions(char *n1, char *n2, int counter) +{ + char *pstart, *qstart, *pend, *qend; + char nc1[NAMEBUFFER_SIZE]; + char nc2[NAMEBUFFER_SIZE]; + + n1 = ForceBar(nc1, n1); + n2 = ForceBar(nc2, n2); + +#if NCURSES_USE_TERMCAP && NCURSES_XNAMES + if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) { + n1 = skip_index(n1); + n2 = skip_index(n2); + } +#endif + + for (pstart = n1; (pend = strchr(pstart, '|')); pstart = pend + 1) { + for (qstart = n2; (qend = strchr(qstart, '|')); qstart = qend + 1) { + if ((pend - pstart == qend - qstart) + && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0) { + if (counter > 0) + (void) fprintf(stderr, "Name collision '%.*s' between\n", + (int) (pend - pstart), pstart); + return (TRUE); + } + } + } + + return (FALSE); +} + +static char * +next_name(char *name) +{ + if (*name != '\0') + ++name; + return name; +} + +static char * +name_ending(char *name) +{ + if (*name == '\0') { + name = 0; + } else { + while (*name != '\0' && *name != '|') + ++name; + } + return name; +} + +/* + * Essentially, find the conflict reported in check_collisions() and remove + * it from the second name, unless that happens to be the last alias. + */ +static bool +remove_collision(char *n1, char *n2) +{ + char *p2 = n2; + char *pstart, *qstart, *pend, *qend; + bool removed = FALSE; + +#if NCURSES_USE_TERMCAP && NCURSES_XNAMES + if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) { + n1 = skip_index(n1); + p2 = n2 = skip_index(n2); + } +#endif + + for (pstart = n1; (pend = name_ending(pstart)); pstart = next_name(pend)) { + for (qstart = n2; (qend = name_ending(qstart)); qstart = next_name(qend)) { + if ((pend - pstart == qend - qstart) + && memcmp(pstart, qstart, (size_t) (pend - pstart)) == 0) { + if (qstart != p2 || *qend == '|') { + if (*qend == '|') + ++qend; + while ((*qstart++ = *qend++) != '\0') ; + fprintf(stderr, "...now\t%s\n", p2); + removed = TRUE; + } else { + fprintf(stderr, "Cannot remove alias '%.*s'\n", + (int) (qend - qstart), qstart); + } + break; + } + } + } + + return removed; +} + +/* do any of the aliases in a pair of terminal names match? */ +NCURSES_EXPORT(bool) +_nc_entry_match(char *n1, char *n2) +{ + return check_collisions(n1, n2, 0); +} + +/**************************************************************************** + * + * Entry compiler and resolution logic + * + ****************************************************************************/ + +NCURSES_EXPORT(void) +_nc_read_entry_source(FILE *fp, char *buf, + int literal, bool silent, + bool(*hook) (ENTRY *)) +/* slurp all entries in the given file into core */ +{ + ENTRY thisentry; + bool oldsuppress = _nc_suppress_warnings; + int immediate = 0; + + if (silent) + _nc_suppress_warnings = TRUE; /* shut the lexer up, too */ + + _nc_reset_input(fp, buf); + for (;;) { + memset(&thisentry, 0, sizeof(thisentry)); + if (_nc_parse_entry(&thisentry, literal, silent) == ERR) + break; + if (!isalnum(UChar(thisentry.tterm.term_names[0]))) + _nc_err_abort("terminal names must start with letter or digit"); + + /* + * This can be used for immediate compilation of entries with no "use=" + * references to disk. That avoids consuming a lot of memory when the + * resolution code could fetch entries off disk. + */ + if (hook != NULLHOOK && (*hook) (&thisentry)) { + immediate++; + } else { + enqueue(&thisentry); + /* + * The enqueued entry is copied with _nc_copy_termtype(), so we can + * free some of the data from thisentry, i.e., the arrays. + */ + FreeIfNeeded(thisentry.tterm.Booleans); + FreeIfNeeded(thisentry.tterm.Numbers); + FreeIfNeeded(thisentry.tterm.Strings); +#if NCURSES_XNAMES + FreeIfNeeded(thisentry.tterm.ext_Names); +#endif + } + } + + if (_nc_tail) { + /* set up the head pointer */ + for (_nc_head = _nc_tail; _nc_head->last; _nc_head = _nc_head->last) + continue; + + DEBUG(1, ("head = %s", _nc_head->tterm.term_names)); + DEBUG(1, ("tail = %s", _nc_tail->tterm.term_names)); + } +#ifdef TRACE + else if (!immediate) + DEBUG(1, ("no entries parsed")); +#endif + + _nc_suppress_warnings = oldsuppress; +} + +#if NCURSES_XNAMES +static unsigned +find_capname(TERMTYPE2 *p, const char *name) +{ + unsigned num_names = NUM_EXT_NAMES(p); + unsigned n; + if (name != 0) { + for (n = 0; n < num_names; ++n) { + if (!strcmp(p->ext_Names[n], name)) + break; + } + } else { + n = num_names + 1; + } + return n; +} + +static int +extended_captype(TERMTYPE2 *p, unsigned which) +{ + int result = UNDEF; + unsigned limit = 0; + limit += p->ext_Booleans; + if (limit != 0 && which < limit) { + result = BOOLEAN; + } else { + limit += p->ext_Numbers; + if (limit != 0 && which < limit) { + result = NUMBER; + } else { + limit += p->ext_Strings; + if (limit != 0 && which < limit) { + result = STRING; + } else if (which >= limit) { + result = CANCEL; + } + } + } + return result; +} + +static const char * +name_of_captype(int which) +{ + const char *result = "?"; + switch (which) { + case BOOLEAN: + result = "boolean"; + break; + case NUMBER: + result = "number"; + break; + case STRING: + result = "string"; + break; + } + return result; +} + +#define valid_TERMTYPE2(p) \ + ((p) != 0 && \ + (p)->term_names != 0 && \ + (p)->ext_Names != 0) + +/* + * Disallow changing the type of an extended capability when doing a "use" + * if one or the other is a string. + */ +static int +invalid_merge(TERMTYPE2 *to, TERMTYPE2 *from) +{ + int rc = FALSE; + if (valid_TERMTYPE2(to) + && valid_TERMTYPE2(from)) { + char *to_name = _nc_first_name(to->term_names); + char *from_name = strdup(_nc_first_name(from->term_names)); + unsigned num_names = NUM_EXT_NAMES(from); + unsigned n; + + for (n = 0; n < num_names; ++n) { + const char *capname = from->ext_Names[n]; + int tt = extended_captype(to, find_capname(to, capname)); + int tf = extended_captype(from, n); + + if (tt <= STRING + && tf <= STRING + && (tt == STRING) != (tf == STRING)) { + if (from_name != 0 && strcmp(to_name, from_name)) { + DEBUG(2, + ("merge of %s to %s changes type of %s from %s to %s", + from_name, + to_name, + from->ext_Names[n], + name_of_captype(tf), + name_of_captype(tt))); + } else { + DEBUG(2, ("merge of %s changes type of %s from %s to %s", + to_name, + from->ext_Names[n], + name_of_captype(tf), + name_of_captype(tt))); + } + _nc_warning("merge changes type of %s from %s to %s", + from->ext_Names[n], + name_of_captype(tf), + name_of_captype(tt)); + rc = TRUE; + } + } + free(from_name); + } + return rc; +} +#define validate_merge(p, q) \ + if (invalid_merge(&((p)->tterm), &((q)->tterm))) \ + return FALSE +#else +#define validate_merge(p, q) /* nothing */ +#endif + +NCURSES_EXPORT(int) +_nc_resolve_uses2(bool fullresolve, bool literal) +/* try to resolve all use capabilities */ +{ + ENTRY *qp, *rp, *lastread = 0; + bool keepgoing; + unsigned i, j; + int unresolved, total_unresolved, multiples; + + DEBUG(2, ("RESOLUTION BEGINNING")); + + /* + * Check for multiple occurrences of the same name. + */ + multiples = 0; + for_entry_list(qp) { + int matchcount = 0; + + for_entry_list(rp) { + if (qp > rp + && check_collisions(qp->tterm.term_names, + rp->tterm.term_names, + matchcount + 1)) { + if (!matchcount++) { + (void) fprintf(stderr, "\t%s\n", rp->tterm.term_names); + } + (void) fprintf(stderr, "and\t%s\n", qp->tterm.term_names); + if (!remove_collision(rp->tterm.term_names, + qp->tterm.term_names)) { + ++multiples; + } + } + } + } + if (multiples > 0) + return (FALSE); + + DEBUG(2, ("NO MULTIPLE NAME OCCURRENCES")); + + /* + * First resolution stage: compute link pointers corresponding to names. + */ + total_unresolved = 0; + _nc_curr_col = -1; + for_entry_list(qp) { + unresolved = 0; + for (i = 0; i < qp->nuses; i++) { + bool foundit; + char *child = _nc_first_name(qp->tterm.term_names); + char *lookfor = qp->uses[i].name; + long lookline = qp->uses[i].line; + + if (lookfor == 0) + continue; + + foundit = FALSE; + + _nc_set_type(child); + + /* first, try to resolve from in-core records */ + for_entry_list(rp) { + if (rp != qp + && _nc_name_match(rp->tterm.term_names, lookfor, "|")) { + DEBUG(2, ("%s: resolving use=%s (in core)", + child, lookfor)); + + qp->uses[i].link = rp; + foundit = TRUE; + + /* verify that there are no earlier uses */ + for (j = 0; j < i; ++j) { + if (qp->uses[j].link != NULL + && !strcmp(qp->uses[j].link->tterm.term_names, + rp->tterm.term_names)) { + _nc_warning("duplicate use=%s", lookfor); + break; + } + } + } + } + + /* if that didn't work, try to merge in a compiled entry */ + if (!foundit) { + TERMTYPE2 thisterm; + char filename[PATH_MAX]; + + memset(&thisterm, 0, sizeof(thisterm)); + if (_nc_read_entry2(lookfor, filename, &thisterm) == 1) { + DEBUG(2, ("%s: resolving use=%s (compiled)", + child, lookfor)); + + TYPE_MALLOC(ENTRY, 1, rp); + rp->tterm = thisterm; + rp->nuses = 0; + rp->next = lastread; + lastread = rp; + + qp->uses[i].link = rp; + foundit = TRUE; + + /* verify that there are no earlier uses */ + for (j = 0; j < i; ++j) { + if (qp->uses[j].link != NULL + && !strcmp(qp->uses[j].link->tterm.term_names, + rp->tterm.term_names)) { + _nc_warning("duplicate use=%s", lookfor); + break; + } + } + } + } + + /* no good, mark this one unresolvable and complain */ + if (!foundit) { + unresolved++; + total_unresolved++; + + _nc_curr_line = (int) lookline; + _nc_warning("resolution of use=%s failed", lookfor); + qp->uses[i].link = 0; + } + } + } + if (total_unresolved) { + /* free entries read in off disk */ + _nc_free_entries(lastread); + return (FALSE); + } + + DEBUG(2, ("NAME RESOLUTION COMPLETED OK")); + + /* + * OK, at this point all (char *) references in `name' members + * have been successfully converted to (ENTRY *) pointers in + * `link' members. Time to do the actual merges. + */ + if (fullresolve) { + do { + ENTRY merged; + + keepgoing = FALSE; + + for_entry_list(qp) { + if (qp->nuses > 0) { + DEBUG(2, ("%s: attempting merge", + _nc_first_name(qp->tterm.term_names))); + /* + * If any of the use entries we're looking for is + * incomplete, punt. We'll catch this entry on a + * subsequent pass. + */ + for (i = 0; i < qp->nuses; i++) + if (qp->uses[i].link + && qp->uses[i].link->nuses) { + DEBUG(2, ("%s: use entry %d unresolved", + _nc_first_name(qp->tterm.term_names), i)); + goto incomplete; + } + + /* + * First, make sure there is no garbage in the + * merge block. As a side effect, copy into + * the merged entry the name field and string + * table pointer. + */ + _nc_copy_termtype2(&(merged.tterm), &(qp->tterm)); + + /* + * Now merge in each use entry in the proper + * (reverse) order. + */ + for (; qp->nuses; qp->nuses--) { + validate_merge(&merged, + qp->uses[qp->nuses - 1].link); + _nc_merge_entry(&merged, + qp->uses[qp->nuses - 1].link); + } + + /* + * Now merge in the original entry. + */ + validate_merge(&merged, qp); + _nc_merge_entry(&merged, qp); + + /* + * Replace the original entry with the merged one. + */ + FreeIfNeeded(qp->tterm.Booleans); + FreeIfNeeded(qp->tterm.Numbers); + FreeIfNeeded(qp->tterm.Strings); +#if NCURSES_XNAMES + FreeIfNeeded(qp->tterm.ext_Names); +#endif + qp->tterm = merged.tterm; + _nc_wrap_entry(qp, TRUE); + + /* + * We know every entry is resolvable because name resolution + * didn't bomb. So go back for another pass. + */ + /* FALLTHRU */ + incomplete: + keepgoing = TRUE; + } + } + } while + (keepgoing); + + DEBUG(2, ("MERGES COMPLETED OK")); + } + + /* + * We'd like to free entries read in off disk at this point, but can't. + * The merge_entry() code doesn't copy the strings in the use entries, + * it just aliases them. If this ever changes, do a + * free_entries(lastread) here. + */ + + DEBUG(2, ("RESOLUTION FINISHED")); + + if (fullresolve) { + _nc_curr_col = -1; + for_entry_list(qp) { + _nc_curr_line = (int) qp->startline; + _nc_set_type(_nc_first_name(qp->tterm.term_names)); + /* + * tic overrides this function pointer to provide more verbose + * checking. + */ + if (_nc_check_termtype2 != sanity_check2) { + SCREEN *save_SP = SP; + SCREEN fake_sp; + TERMINAL fake_tm; + TERMINAL *save_tm = cur_term; + + /* + * Setup so that tic can use ordinary terminfo interface to + * obtain capability information. + */ + memset(&fake_sp, 0, sizeof(fake_sp)); + memset(&fake_tm, 0, sizeof(fake_tm)); + fake_sp._term = &fake_tm; + TerminalType(&fake_tm) = qp->tterm; + _nc_set_screen(&fake_sp); + set_curterm(&fake_tm); + + _nc_check_termtype2(&qp->tterm, literal); + + _nc_set_screen(save_SP); + set_curterm(save_tm); + } else { + fixup_acsc(&qp->tterm, literal); + } + } + DEBUG(2, ("SANITY CHECK FINISHED")); + } + + return (TRUE); +} + +/* + * This bit of legerdemain turns all the terminfo variable names into + * references to locations in the arrays Booleans, Numbers, and Strings --- + * precisely what's needed. + */ + +#undef CUR +#define CUR tp-> + +static void +fixup_acsc(TERMTYPE2 *tp, int literal) +{ + if (!literal) { + if (acs_chars == ABSENT_STRING + && PRESENT(enter_alt_charset_mode) + && PRESENT(exit_alt_charset_mode)) + acs_chars = strdup(VT_ACSC); + } +} + +static void +sanity_check2(TERMTYPE2 *tp, bool literal) +{ + if (!PRESENT(exit_attribute_mode)) { +#ifdef __UNUSED__ /* this casts too wide a net */ + bool terminal_entry = !strchr(tp->term_names, '+'); + if (terminal_entry && + (PRESENT(set_attributes) + || PRESENT(enter_standout_mode) + || PRESENT(enter_underline_mode) + || PRESENT(enter_blink_mode) + || PRESENT(enter_bold_mode) + || PRESENT(enter_dim_mode) + || PRESENT(enter_secure_mode) + || PRESENT(enter_protected_mode) + || PRESENT(enter_reverse_mode))) + _nc_warning("no exit_attribute_mode"); +#endif /* __UNUSED__ */ + PAIRED(enter_standout_mode, exit_standout_mode); + PAIRED(enter_underline_mode, exit_underline_mode); +#if defined(enter_italics_mode) && defined(exit_italics_mode) + PAIRED(enter_italics_mode, exit_italics_mode); +#endif + } + + /* we do this check/fix in postprocess_termcap(), but some packagers + * prefer to bypass it... + */ + if (!literal) { + fixup_acsc(tp, literal); + ANDMISSING(enter_alt_charset_mode, acs_chars); + ANDMISSING(exit_alt_charset_mode, acs_chars); + } + + /* listed in structure-member order of first argument */ + PAIRED(enter_alt_charset_mode, exit_alt_charset_mode); + ANDMISSING(enter_blink_mode, exit_attribute_mode); + ANDMISSING(enter_bold_mode, exit_attribute_mode); + PAIRED(exit_ca_mode, enter_ca_mode); + PAIRED(enter_delete_mode, exit_delete_mode); + ANDMISSING(enter_dim_mode, exit_attribute_mode); + PAIRED(enter_insert_mode, exit_insert_mode); + ANDMISSING(enter_secure_mode, exit_attribute_mode); + ANDMISSING(enter_protected_mode, exit_attribute_mode); + ANDMISSING(enter_reverse_mode, exit_attribute_mode); + PAIRED(from_status_line, to_status_line); + PAIRED(meta_off, meta_on); + + PAIRED(prtr_on, prtr_off); + PAIRED(save_cursor, restore_cursor); + PAIRED(enter_xon_mode, exit_xon_mode); + PAIRED(enter_am_mode, exit_am_mode); + ANDMISSING(label_off, label_on); +#if defined(display_clock) && defined(remove_clock) + PAIRED(display_clock, remove_clock); +#endif + ANDMISSING(set_color_pair, initialize_pair); +} + +#if NO_LEAKS +NCURSES_EXPORT(void) +_nc_leaks_tic(void) +{ + T((T_CALLED("_nc_free_tic()"))); + _nc_globals.leak_checking = TRUE; + _nc_alloc_entry_leaks(); + _nc_captoinfo_leaks(); + _nc_comp_scan_leaks(); +#if BROKEN_LINKER || USE_REENTRANT + _nc_names_leaks(); + _nc_codes_leaks(); +#endif + _nc_tic_expand(0, FALSE, 0); +} + +NCURSES_EXPORT(void) +_nc_free_tic(int code) +{ + _nc_leaks_tic(); + exit_terminfo(code); +} +#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/comp_scan.c b/deps/ncurses-6.3/ncurses/tinfo/comp_scan.c similarity index 83% rename from deps/ncurses-5.9/ncurses/tinfo/comp_scan.c rename to deps/ncurses-6.3/ncurses/tinfo/comp_scan.c index 8725b2e..08e0e7e 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/comp_scan.c +++ b/deps/ncurses-6.3/ncurses/tinfo/comp_scan.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -50,7 +51,7 @@ #include <ctype.h> #include <tic.h> -MODULE_ID("$Id: comp_scan.c,v 1.89 2010/12/25 23:06:37 tom Exp $") +MODULE_ID("$Id: comp_scan.c,v 1.112 2021/10/04 23:56:28 tom Exp $") /* * Maximum length of string capability we'll accept before raising an error. @@ -61,6 +62,7 @@ MODULE_ID("$Id: comp_scan.c,v 1.89 2010/12/25 23:06:37 tom Exp $") #define iswhite(ch) (ch == ' ' || ch == '\t') NCURSES_EXPORT_VAR (int) _nc_syntax = 0; /* termcap or terminfo? */ +NCURSES_EXPORT_VAR (int) _nc_strict_bsd = 1; /* ncurses extended termcap? */ NCURSES_EXPORT_VAR (long) _nc_curr_file_pos = 0; /* file offset of current line */ NCURSES_EXPORT_VAR (long) _nc_comment_start = 0; /* start of comment range before name */ NCURSES_EXPORT_VAR (long) _nc_comment_end = 0; /* end of comment range before name */ @@ -127,14 +129,19 @@ _nc_reset_input(FILE *fp, char *buf) * Returns the final nonblank character on the current input buffer */ static int -last_char(void) +last_char(int from_end) { size_t len = strlen(bufptr); + int result = 0; + while (len--) { - if (!isspace(UChar(bufptr[len]))) - return bufptr[len]; + if (!isspace(UChar(bufptr[len]))) { + if (from_end <= (int) len) + result = bufptr[(int) len - from_end]; + break; + } } - return 0; + return result; } /* @@ -162,6 +169,8 @@ next_char(void) if (result != 0) { FreeAndNull(result); FreeAndNull(pushname); + bufptr = 0; + bufstart = 0; allocated = 0; } /* @@ -183,19 +192,19 @@ next_char(void) * quite hard to get completely right. Try it and see. If you * succeed, don't forget to hack push_back() correspondingly. */ - size_t used; size_t len; do { + size_t used = 0; bufstart = 0; - used = 0; do { if (used + (LEXBUFSIZ / 4) >= allocated) { allocated += (allocated + LEXBUFSIZ); result = typeRealloc(char, allocated, result); if (result == 0) return (EOF); - bufstart = result; + if (bufstart) + bufstart = result; } if (used == 0) _nc_curr_file_pos = ftell(yyin); @@ -212,10 +221,12 @@ next_char(void) } } else { if (used != 0) - strcat(result, "\n"); + _nc_STRCAT(result, "\n", allocated); } if ((bufptr = bufstart) != 0) { used = strlen(bufptr); + if (used == 0) + return (EOF); while (iswhite(*bufptr)) { if (*bufptr == '\t') { _nc_curr_col = (_nc_curr_col | 7) + 1; @@ -256,12 +267,12 @@ next_char(void) } static void -push_back(char c) +push_back(int c) /* push a character back onto the input stream */ { if (bufptr == bufstart) _nc_syserr_abort("Can't backspace off beginning of line"); - *--bufptr = c; + *--bufptr = (char) c; _nc_curr_col--; } @@ -299,6 +310,8 @@ eat_escaped_newline(int ch) *tok_ptr++ = (char) ch; \ *tok_ptr = '\0' +static char *tok_buf; + /* * int * get_token() @@ -336,15 +349,14 @@ NCURSES_EXPORT(int) _nc_get_token(bool silent) { static const char terminfo_punct[] = "@%&*!#"; - static char *tok_buf; - char *after_list; - char *after_name; + char *after_name; /* after primary name */ + char *after_list; /* after primary and alias list */ char *numchk; char *tok_ptr; char *s; char numbuf[80]; - int ch; + int ch, c0, c1; int dot_flag = FALSE; int type; long number; @@ -372,11 +384,10 @@ _nc_get_token(bool silent) if (end_of_stream()) { yyin = 0; - next_char(); /* frees its allocated memory */ + (void) next_char(); /* frees its allocated memory */ if (tok_buf != 0) { if (_nc_curr_token.tk_name == tok_buf) _nc_curr_token.tk_name = 0; - FreeAndNull(tok_buf); } return (EOF); } @@ -390,6 +401,7 @@ _nc_get_token(bool silent) } ch = eat_escaped_newline(ch); + _nc_curr_token.tk_valstring = 0; #ifdef TRACE old_line = _nc_curr_line; @@ -424,7 +436,7 @@ _nc_get_token(bool silent) #if NCURSES_EXT_FUNCS && !(ch == '.' && _nc_disable_period) #endif - && !strchr(terminfo_punct, (char) ch)) { + && ((strchr) (terminfo_punct, (char) ch) == 0)) { if (!silent) _nc_warning("Illegal character (expected alphanumeric or %s) - '%s'", terminfo_punct, unctrl(UChar(ch))); @@ -457,7 +469,7 @@ _nc_get_token(bool silent) after_list = tok_ptr; if (after_name == 0) after_name = tok_ptr; - } else if (ch == ':' && last_char() != ',') { + } else if (ch == ':' && last_char(0) != ',') { _nc_syntax = SYN_TERMCAP; separator = ':'; break; @@ -471,12 +483,64 @@ _nc_get_token(bool silent) if (after_name == 0) break; /* - * If we see a comma, we assume this is terminfo unless we - * subsequently run into a colon. But we don't stop - * looking for a colon until hitting a newline. This - * allows commas to be embedded in description fields of - * either syntax. + * We saw a comma, but are not entirely sure this is + * terminfo format, since we can still be parsing the + * description field (for either syntax). + * + * A properly formatted termcap line ends with either a + * colon, or a backslash after a colon. It is possible + * to have a backslash in the middle of a capability, but + * then there would be no leading whitespace on the next + * line - something we want to discourage. */ + c0 = last_char(0); + c1 = last_char(1); + if (c1 != ':' && c0 != '\\' && c0 != ':') { + bool capability = FALSE; + + /* + * Since it is not termcap, assume the line is terminfo + * format. However, the comma can be embedded in a + * description field. It also can be a separator + * between a description field and a capability. + * + * Improve the guess by checking if the next word after + * the comma does not look like a capability. In that + * case, extend the description past the comma. + */ + for (s = bufptr; isspace(UChar(*s)); ++s) { + ; + } + if (islower(UChar(*s))) { + char *name = s; + while (isalnum(UChar(*s))) { + ++s; + } + if (*s == '#' || *s == '=' || *s == '@') { + /* + * Checking solely with syntax allows us to + * support extended capabilities with string + * values. + */ + capability = TRUE; + } else if (*s == ',') { + c0 = *s; + *s = '\0'; + /* + * Otherwise, we can handle predefined boolean + * capabilities, still aided by syntax. + */ + if (_nc_find_entry(name, + _nc_get_hash_table(FALSE))) { + capability = TRUE; + } + *s = (char) c0; + } + } + if (capability) { + break; + } + } } else ch = eat_escaped_newline(ch); @@ -492,7 +556,7 @@ _nc_get_token(bool silent) * Grrr...what we ought to do here is barf, complaining that * the entry is malformed. But because a couple of name fields * in the 8.2 termcap file end with |\, we just have to assume - * it's termcap syntax. + * it is termcap syntax. */ _nc_syntax = SYN_TERMCAP; separator = ':'; @@ -523,10 +587,11 @@ _nc_get_token(bool silent) */ if (after_list != 0) { if (!silent) { - if (*after_list == '\0') + if (*after_list == '\0' || strchr("|", after_list[1]) != NULL) { _nc_warning("empty longname field"); - else if (strchr(after_list, ' ') == 0) + } else if (strchr(after_list, ' ') == 0) { _nc_warning("older tic versions may treat the description field as an alias"); + } } } else { after_list = tok_buf + strlen(tok_buf); @@ -609,7 +674,15 @@ _nc_get_token(bool silent) if (numchk == numbuf) _nc_warning("no value given for `%s'", tok_buf); if ((*numchk != '\0') || (ch != separator)) - _nc_warning("Missing separator"); + _nc_warning("Missing separator for `%s'", tok_buf); + if (number < 0) + _nc_warning("value of `%s' cannot be negative", tok_buf); + if (number > MAX_OF_TYPE(NCURSES_INT2)) { + _nc_warning("limiting value of `%s' from %#lx to %#x", + tok_buf, + number, MAX_OF_TYPE(NCURSES_INT2)); + number = MAX_OF_TYPE(NCURSES_INT2); + } } _nc_curr_token.tk_name = tok_buf; _nc_curr_token.tk_valnumber = (int) number; @@ -748,33 +821,35 @@ _nc_trans_string(char *ptr, char *last) if (!(is7bits(c) && isprint(c))) { _nc_warning("Illegal ^ character - '%s'", unctrl(UChar(c))); } - if (c == '?') { + if (c == '?' && (_nc_syntax != SYN_TERMCAP)) { *(ptr++) = '\177'; - if (_nc_tracing) - _nc_warning("Allow ^? as synonym for \\177"); } else { if ((c &= 037) == 0) c = 128; *(ptr++) = (char) (c); } } else if (c == '\\') { + bool strict_bsd = ((_nc_syntax == SYN_TERMCAP) && _nc_strict_bsd); + c = next_char(); if (c == EOF) _nc_err_abort(MSG_NO_INPUTS); - if (c >= '0' && c <= '7') { + if (isoctal(c) || (strict_bsd && isdigit(c))) { number = c - '0'; for (i = 0; i < 2; i++) { c = next_char(); if (c == EOF) _nc_err_abort(MSG_NO_INPUTS); - if (c < '0' || c > '7') { + if (!isoctal(c)) { if (isdigit(c)) { - _nc_warning("Non-octal digit `%c' in \\ sequence", c); - /* allow the digit; it'll do less harm */ + if (!strict_bsd) { + _nc_warning("Non-octal digit `%c' in \\ sequence", c); + /* allow the digit; it'll do less harm */ + } } else { - push_back((char) c); + push_back(c); break; } } @@ -782,21 +857,16 @@ _nc_trans_string(char *ptr, char *last) number = number * 8 + c - '0'; } - if (number == 0) + number = UChar(number); + if (number == 0 && !strict_bsd) number = 0200; *(ptr++) = (char) number; } else { switch (c) { case 'E': - case 'e': *(ptr++) = '\033'; break; - case 'a': - *(ptr++) = '\007'; - break; - - case 'l': case 'n': *(ptr++) = '\n'; break; @@ -809,10 +879,6 @@ _nc_trans_string(char *ptr, char *last) *(ptr++) = '\010'; break; - case 's': - *(ptr++) = ' '; - break; - case 'f': *(ptr++) = '\014'; break; @@ -833,16 +899,33 @@ _nc_trans_string(char *ptr, char *last) *(ptr++) = ','; break; - case ':': - *(ptr++) = ':'; - break; - case '\n': continue; default: - _nc_warning("Illegal character '%s' in \\ sequence", - unctrl(UChar(c))); + if ((_nc_syntax == SYN_TERMINFO) || !_nc_strict_bsd) { + switch (c) { + case 'a': + c = '\007'; + break; + case 'e': + c = '\033'; + break; + case 'l': + c = '\n'; + break; + case 's': + c = ' '; + break; + case ':': + c = ':'; + break; + default: + _nc_warning("Illegal character '%s' in \\ sequence", + unctrl(UChar(c))); + break; + } + } /* FALLTHRU */ case '|': *(ptr++) = (char) c; @@ -862,7 +945,7 @@ _nc_trans_string(char *ptr, char *last) if (!ignored) { if (_nc_curr_col <= 1) { - push_back((char) c); + push_back(c); c = '\n'; break; } @@ -916,10 +999,8 @@ _nc_push_token(int tokclass) NCURSES_EXPORT(void) _nc_panic_mode(char ch) { - int c; - for (;;) { - c = next_char(); + int c = next_char(); if (c == ch) return; if (c == EOF) @@ -934,5 +1015,8 @@ _nc_comp_scan_leaks(void) if (pushname != 0) { FreeAndNull(pushname); } + if (tok_buf != 0) { + FreeAndNull(tok_buf); + } } #endif diff --git a/deps/ncurses-6.3/ncurses/tinfo/db_iterator.c b/deps/ncurses-6.3/ncurses/tinfo/db_iterator.c new file mode 100644 index 0000000..f072668 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/db_iterator.c @@ -0,0 +1,448 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2006-2016,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: Thomas E. Dickey * + ****************************************************************************/ + +/* + * Iterators for terminal databases. + */ + +#include <curses.priv.h> + +#include <time.h> +#include <tic.h> + +#if USE_HASHED_DB +#include <hashed_db.h> +#endif + +MODULE_ID("$Id: db_iterator.c,v 1.48 2020/02/02 23:34:34 tom Exp $") + +#define HaveTicDirectory _nc_globals.have_tic_directory +#define KeepTicDirectory _nc_globals.keep_tic_directory +#define TicDirectory _nc_globals.tic_directory +#define my_blob _nc_globals.dbd_blob +#define my_list _nc_globals.dbd_list +#define my_size _nc_globals.dbd_size +#define my_time _nc_globals.dbd_time +#define my_vars _nc_globals.dbd_vars + +static void +add_to_blob(const char *text, size_t limit) +{ + (void) limit; + + if (*text != '\0') { + char *last = my_blob + strlen(my_blob); + if (last != my_blob) + *last++ = NCURSES_PATHSEP; + _nc_STRCPY(last, text, limit); + } +} + +static bool +check_existence(const char *name, struct stat *sb) +{ + bool result = FALSE; + + if (quick_prefix(name)) { + result = TRUE; + } else if (stat(name, sb) == 0 + && (S_ISDIR(sb->st_mode) + || (S_ISREG(sb->st_mode) && sb->st_size))) { + result = TRUE; + } +#if USE_HASHED_DB + else if (strlen(name) < PATH_MAX - sizeof(DBM_SUFFIX)) { + char temp[PATH_MAX]; + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%s%s", name, DBM_SUFFIX); + if (stat(temp, sb) == 0 && S_ISREG(sb->st_mode) && sb->st_size) { + result = TRUE; + } + } +#endif + return result; +} + +/* + * Trim newlines (and backslashes preceding those) and tab characters to + * help simplify scripting of the quick-dump feature. Leave spaces and + * other backslashes alone. + */ +static void +trim_formatting(char *source) +{ + char *target = source; + char ch; + + while ((ch = *source++) != '\0') { + if (ch == '\\' && *source == '\n') + continue; + if (ch == '\n' || ch == '\t') + continue; + *target++ = ch; + } + *target = '\0'; +} + +/* + * Store the latest value of an environment variable in my_vars[] so we can + * detect if one changes, invalidating the cached search-list. + */ +static bool +update_getenv(const char *name, DBDIRS which) +{ + bool result = FALSE; + + if (which < dbdLAST) { + char *value; + char *cached_value = my_vars[which].value; + bool same_value; + + if ((value = getenv(name)) != 0) { + value = strdup(value); + } + same_value = ((value == 0 && cached_value == 0) || + (value != 0 && + cached_value != 0 && + strcmp(value, cached_value) == 0)); + + /* Set variable name to enable checks in cache_expired(). */ + my_vars[which].name = name; + + if (!same_value) { + FreeIfNeeded(my_vars[which].value); + my_vars[which].value = value; + result = TRUE; + } else { + free(value); + } + } + return result; +} + +#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP +static char * +cache_getenv(const char *name, DBDIRS which) +{ + char *result = 0; + + (void) update_getenv(name, which); + if (which < dbdLAST) { + result = my_vars[which].value; + } + return result; +} +#endif + +/* + * The cache expires if at least a second has passed since the initial lookup, + * or if one of the environment variables changed. + * + * Only a few applications use multiple lookups of terminal entries, seems that + * aside from bulk I/O such as tic and toe, that leaves interactive programs + * which should not be modifying the terminal databases in a way that would + * invalidate the search-list. + * + * The "1-second" is to allow for user-directed changes outside the program. + */ +static bool +cache_expired(void) +{ + bool result = FALSE; + time_t now = time((time_t *) 0); + + if (now > my_time) { + result = TRUE; + } else { + DBDIRS n; + for (n = (DBDIRS) 0; n < dbdLAST; ++n) { + if (my_vars[n].name != 0 + && update_getenv(my_vars[n].name, n)) { + result = TRUE; + break; + } + } + } + return result; +} + +static void +free_cache(void) +{ + FreeAndNull(my_blob); + FreeAndNull(my_list); +} + +/* + * Record the "official" location of the terminfo directory, according to + * the place where we're writing to, or the normal default, if not. + */ +NCURSES_EXPORT(const char *) +_nc_tic_dir(const char *path) +{ + T(("_nc_tic_dir %s", NonNull(path))); + if (!KeepTicDirectory) { + if (path != 0) { + TicDirectory = path; + HaveTicDirectory = TRUE; + } else if (HaveTicDirectory == 0) { + if (use_terminfo_vars()) { + const char *envp; + if ((envp = getenv("TERMINFO")) != 0) + return _nc_tic_dir(envp); + } + } + } + return TicDirectory ? TicDirectory : TERMINFO; +} + +/* + * Special fix to prevent the terminfo directory from being moved after tic + * has chdir'd to it. If we let it be changed, then if $TERMINFO has a + * relative path, we'll lose track of the actual directory. + */ +NCURSES_EXPORT(void) +_nc_keep_tic_dir(const char *path) +{ + _nc_tic_dir(path); + KeepTicDirectory = TRUE; +} + +/* + * Cleanup. + */ +NCURSES_EXPORT(void) +_nc_last_db(void) +{ + if (my_blob != 0 && cache_expired()) { + free_cache(); + } +} + +/* + * This is a simple iterator which allows the caller to step through the + * possible locations for a terminfo directory. ncurses uses this to find + * terminfo files to read. + */ +NCURSES_EXPORT(const char *) +_nc_next_db(DBDIRS * state, int *offset) +{ + const char *result; + + (void) offset; + if ((int) *state < my_size + && my_list != 0 + && my_list[*state] != 0) { + result = my_list[*state]; + (*state)++; + } else { + result = 0; + } + if (result != 0) { + T(("_nc_next_db %d %s", *state, result)); + } + return result; +} + +NCURSES_EXPORT(void) +_nc_first_db(DBDIRS * state, int *offset) +{ + bool cache_has_expired = FALSE; + *state = dbdTIC; + *offset = 0; + + T((T_CALLED("_nc_first_db"))); + + /* build a blob containing all of the strings we will use for a lookup + * table. + */ + if (my_blob == 0 || (cache_has_expired = cache_expired())) { + size_t blobsize = 0; + const char *values[dbdLAST]; + struct stat *my_stat; + int j; + + if (cache_has_expired) + free_cache(); + + for (j = 0; j < dbdLAST; ++j) + values[j] = 0; + + /* + * This is the first item in the list, and is used only when tic is + * writing to the database, as a performance improvement. + */ + values[dbdTIC] = TicDirectory; + +#if NCURSES_USE_DATABASE +#ifdef TERMINFO_DIRS + values[dbdCfgList] = TERMINFO_DIRS; +#endif +#ifdef TERMINFO + values[dbdCfgOnce] = TERMINFO; +#endif +#endif + +#if NCURSES_USE_TERMCAP + values[dbdCfgList2] = TERMPATH; +#endif + + if (use_terminfo_vars()) { +#if NCURSES_USE_DATABASE + values[dbdEnvOnce] = cache_getenv("TERMINFO", dbdEnvOnce); + values[dbdHome] = _nc_home_terminfo(); + (void) cache_getenv("HOME", dbdHome); + values[dbdEnvList] = cache_getenv("TERMINFO_DIRS", dbdEnvList); + +#endif +#if NCURSES_USE_TERMCAP + values[dbdEnvOnce2] = cache_getenv("TERMCAP", dbdEnvOnce2); + /* only use $TERMCAP if it is an absolute path */ + if (values[dbdEnvOnce2] != 0 + && *values[dbdEnvOnce2] != '/') { + values[dbdEnvOnce2] = 0; + } + values[dbdEnvList2] = cache_getenv("TERMPATH", dbdEnvList2); +#endif /* NCURSES_USE_TERMCAP */ + } + + for (j = 0; j < dbdLAST; ++j) { + if (values[j] == 0) + values[j] = ""; + blobsize += 2 + strlen(values[j]); + } + + my_blob = malloc(blobsize); + if (my_blob != 0) { + *my_blob = '\0'; + for (j = 0; j < dbdLAST; ++j) { + add_to_blob(values[j], blobsize); + } + + /* Now, build an array which will be pointers to the distinct + * strings in the blob. + */ + blobsize = 2; + for (j = 0; my_blob[j] != '\0'; ++j) { + if (my_blob[j] == NCURSES_PATHSEP) + ++blobsize; + } + my_list = typeCalloc(char *, blobsize); + my_stat = typeCalloc(struct stat, blobsize); + if (my_list != 0 && my_stat != 0) { + int k = 0; + my_list[k++] = my_blob; + for (j = 0; my_blob[j] != '\0'; ++j) { + if (my_blob[j] == NCURSES_PATHSEP + && ((&my_blob[j] - my_list[k - 1]) != 3 + || !quick_prefix(my_list[k - 1]))) { + my_blob[j] = '\0'; + my_list[k++] = &my_blob[j + 1]; + } + } + + /* + * Eliminate duplicates from the list. + */ + for (j = 0; my_list[j] != 0; ++j) { +#ifdef TERMINFO + if (*my_list[j] == '\0') + my_list[j] = strdup(TERMINFO); +#endif + trim_formatting(my_list[j]); + for (k = 0; k < j; ++k) { + if (!strcmp(my_list[j], my_list[k])) { + T(("duplicate %s", my_list[j])); + k = j - 1; + while ((my_list[j] = my_list[j + 1]) != 0) { + ++j; + } + j = k; + break; + } + } + } + + /* + * Eliminate non-existent databases, and those that happen to + * be symlinked to another location. + */ + for (j = 0; my_list[j] != 0; ++j) { + bool found = check_existence(my_list[j], &my_stat[j]); +#if HAVE_LINK + if (found) { + for (k = 0; k < j; ++k) { + if (my_stat[j].st_dev == my_stat[k].st_dev + && my_stat[j].st_ino == my_stat[k].st_ino) { + found = FALSE; + break; + } + } + } +#endif + if (!found) { + T(("not found %s", my_list[j])); + k = j; + while ((my_list[k] = my_list[k + 1]) != 0) { + ++k; + } + --j; + } + } + my_size = j; + my_time = time((time_t *) 0); + } else { + FreeAndNull(my_blob); + } + free(my_stat); + } + } + returnVoid; +} + +#if NO_LEAKS +void +_nc_db_iterator_leaks(void) +{ + DBDIRS which; + + if (my_blob != 0) + FreeAndNull(my_blob); + if (my_list != 0) + FreeAndNull(my_list); + for (which = 0; (int) which < dbdLAST; ++which) { + my_vars[which].name = 0; + FreeIfNeeded(my_vars[which].value); + my_vars[which].value = 0; + } +} +#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/doalloc.c b/deps/ncurses-6.3/ncurses/tinfo/doalloc.c similarity index 85% rename from deps/ncurses-5.9/ncurses/tinfo/doalloc.c rename to deps/ncurses-6.3/ncurses/tinfo/doalloc.c index fe2a009..e3b1a2e 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/doalloc.c +++ b/deps/ncurses-6.3/ncurses/tinfo/doalloc.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2002,2012 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 * @@ -39,15 +40,18 @@ #include <curses.priv.h> -MODULE_ID("$Id: doalloc.c,v 1.8 2002/08/31 21:48:11 Philippe.Blain Exp $") +MODULE_ID("$Id: doalloc.c,v 1.14 2021/04/24 23:43:39 tom Exp $") -NCURSES_EXPORT(void *) +void * _nc_doalloc(void *oldp, size_t amount) { void *newp; - if (oldp != 0) { - if ((newp = realloc(oldp, amount)) == 0) { + if (oldp != NULL) { + if (amount == 0) { + free(oldp); + newp = NULL; + } else if ((newp = realloc(oldp, amount)) == 0) { free(oldp); errno = ENOMEM; /* just in case 'free' reset */ } @@ -56,20 +60,3 @@ _nc_doalloc(void *oldp, size_t amount) } return newp; } - -#if !HAVE_STRDUP -NCURSES_EXPORT(char *) -_nc_strdup(const char *src) -{ - char *dst; - if (src != 0) { - dst = typeMalloc(char, strlen(src) + 1); - if (dst != 0) { - (void) strcpy(dst, src); - } - } else { - dst = 0; - } - return dst; -} -#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/entries.c b/deps/ncurses-6.3/ncurses/tinfo/entries.c similarity index 86% rename from deps/ncurses-5.9/ncurses/tinfo/entries.c rename to deps/ncurses-6.3/ncurses/tinfo/entries.c index b1e14a8..1c55bfe 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/entries.c +++ b/deps/ncurses-6.3/ncurses/tinfo/entries.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2006-2012,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 * @@ -37,7 +38,7 @@ #include <tic.h> -MODULE_ID("$Id: entries.c,v 1.17 2010/01/23 17:57:43 tom Exp $") +MODULE_ID("$Id: entries.c,v 1.30 2020/02/02 23:34:34 tom Exp $") /**************************************************************************** * @@ -63,30 +64,8 @@ MODULE_ID("$Id: entries.c,v 1.17 2010/01/23 17:57:43 tom Exp $") NCURSES_EXPORT_VAR(ENTRY *) _nc_head = 0; NCURSES_EXPORT_VAR(ENTRY *) _nc_tail = 0; -NCURSES_EXPORT(void) -_nc_free_entry(ENTRY * headp, TERMTYPE *tterm) -/* free the allocated storage consumed by the given list entry */ -{ - ENTRY *ep; - - if ((ep = _nc_delink_entry(headp, tterm)) != 0) { - free(ep); - } -} - -NCURSES_EXPORT(void) -_nc_free_entries(ENTRY * headp) -/* free the allocated storage consumed by list entries */ -{ - (void) headp; /* unused - _nc_head is altered here! */ - - while (_nc_head != 0) { - _nc_free_termtype(&(_nc_head->tterm)); - } -} - -NCURSES_EXPORT(ENTRY *) -_nc_delink_entry(ENTRY * headp, TERMTYPE *tterm) +static ENTRY * +_nc_delink_entry(ENTRY * headp, TERMTYPE2 *tterm) /* delink the allocated storage for the given list entry */ { ENTRY *ep, *last; @@ -96,6 +75,9 @@ _nc_delink_entry(ENTRY * headp, TERMTYPE *tterm) if (last != 0) { last->next = ep->next; } + if (ep->next != 0) { + ep->next->last = last; + } if (ep == _nc_head) { _nc_head = ep->next; } @@ -108,6 +90,28 @@ _nc_delink_entry(ENTRY * headp, TERMTYPE *tterm) return ep; } +NCURSES_EXPORT(void) +_nc_free_entry(ENTRY * headp, TERMTYPE2 *tterm) +/* free the allocated storage consumed by the given list entry */ +{ + ENTRY *ep; + + if ((ep = _nc_delink_entry(headp, tterm)) != 0) { + free(ep); + } +} + +NCURSES_EXPORT(void) +_nc_free_entries(ENTRY * headp) +/* free the allocated storage consumed by list entries */ +{ + (void) headp; /* unused - _nc_head is altered here! */ + + while (_nc_head != 0) { + _nc_free_termtype2(&(_nc_head->tterm)); + } +} + NCURSES_EXPORT(void) _nc_leaks_tinfo(void) { @@ -117,30 +121,36 @@ _nc_leaks_tinfo(void) T((T_CALLED("_nc_free_tinfo()"))); #if NO_LEAKS + _nc_globals.leak_checking = TRUE; _nc_free_tparm(); _nc_tgetent_leaks(); if (TerminalOf(CURRENT_SCREEN) != 0) { del_curterm(TerminalOf(CURRENT_SCREEN)); } + _nc_forget_prescr(); _nc_comp_captab_leaks(); + _nc_comp_userdefs_leaks(); _nc_free_entries(_nc_head); _nc_get_type(0); _nc_first_name(0); + _nc_db_iterator_leaks(); _nc_keyname_leaks(); #if BROKEN_LINKER || USE_REENTRANT _nc_names_leaks(); _nc_codes_leaks(); FreeIfNeeded(_nc_prescreen.real_acs_map); #endif + _nc_comp_error_leaks(); if ((s = _nc_home_terminfo()) != 0) free(s); #ifdef TRACE - trace(0); - _nc_trace_buf(-1, 0); + T((T_RETURN(""))); + curses_trace(0); + _nc_trace_buf(-1, (size_t) 0); #endif #endif /* NO_LEAKS */ @@ -155,3 +165,12 @@ _nc_free_tinfo(int code) exit(code); } #endif + +NCURSES_EXPORT(void) +exit_terminfo(int code) +{ +#if NO_LEAKS + _nc_leaks_tinfo(); +#endif + exit(code); +} diff --git a/deps/ncurses-5.9/ncurses/tinfo/free_ttype.c b/deps/ncurses-6.3/ncurses/tinfo/free_ttype.c similarity index 82% rename from deps/ncurses-5.9/ncurses/tinfo/free_ttype.c rename to deps/ncurses-6.3/ncurses/tinfo/free_ttype.c index ad056ba..7f0fbcc 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/free_ttype.c +++ b/deps/ncurses-6.3/ncurses/tinfo/free_ttype.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2010,2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1999-2011,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 * @@ -42,25 +43,46 @@ #include <tic.h> -MODULE_ID("$Id: free_ttype.c,v 1.15 2011/02/06 01:08:31 tom Exp $") +MODULE_ID("$Id: free_ttype.c,v 1.19 2020/02/02 23:34:34 tom Exp $") -NCURSES_EXPORT(void) -_nc_free_termtype(TERMTYPE *ptr) +static void +really_free_termtype(TERMTYPE2 *ptr, bool freeStrings) { T(("_nc_free_termtype(%s)", ptr->term_names)); - FreeIfNeeded(ptr->str_table); + if (freeStrings) { + FreeIfNeeded(ptr->str_table); + } FreeIfNeeded(ptr->Booleans); FreeIfNeeded(ptr->Numbers); FreeIfNeeded(ptr->Strings); #if NCURSES_XNAMES - FreeIfNeeded(ptr->ext_str_table); + if (freeStrings) { + FreeIfNeeded(ptr->ext_str_table); + } FreeIfNeeded(ptr->ext_Names); #endif memset(ptr, 0, sizeof(TERMTYPE)); _nc_free_entry(_nc_head, ptr); } +/* + * This entrypoint is used by tack 1.07 + */ +NCURSES_EXPORT(void) +_nc_free_termtype(TERMTYPE *ptr) +{ + really_free_termtype((TERMTYPE2 *) ptr, !NCURSES_EXT_NUMBERS); +} + +#if NCURSES_EXT_NUMBERS +NCURSES_EXPORT(void) +_nc_free_termtype2(TERMTYPE2 *ptr) +{ + really_free_termtype(ptr, TRUE); +} +#endif + #if NCURSES_XNAMES NCURSES_EXPORT_VAR(bool) _nc_user_definable = TRUE; diff --git a/deps/ncurses-5.9/ncurses/tinfo/getenv_num.c b/deps/ncurses-6.3/ncurses/tinfo/getenv_num.c similarity index 80% rename from deps/ncurses-5.9/ncurses/tinfo/getenv_num.c rename to deps/ncurses-6.3/ncurses/tinfo/getenv_num.c index a90cc08..ca179d3 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/getenv_num.c +++ b/deps/ncurses-6.3/ncurses/tinfo/getenv_num.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998,2000 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2012,2013 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 * @@ -36,7 +37,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: getenv_num.c,v 1.3 2000/12/10 02:55:07 tom Exp $") +MODULE_ID("$Id: getenv_num.c,v 1.8 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) _nc_getenv_num(const char *name) @@ -54,3 +55,22 @@ _nc_getenv_num(const char *name) return (int) value; } + +NCURSES_EXPORT(void) +_nc_setenv_num(const char *name, int value) +{ + if (name != 0 && value >= 0) { + char buffer[128]; +#if HAVE_SETENV + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%d", value); + setenv(name, buffer, 1); +#elif HAVE_PUTENV + char *s; + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%s=%d", name, value); + if ((s = strdup(buffer)) != 0) + putenv(s); +#else +#error expected setenv/putenv functions +#endif + } +} diff --git a/deps/ncurses-6.3/ncurses/tinfo/hashed_db.c b/deps/ncurses-6.3/ncurses/tinfo/hashed_db.c new file mode 100644 index 0000000..b78d98f --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/hashed_db.c @@ -0,0 +1,342 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2006-2011,2013 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: Thomas E. Dickey 2006-on * + ****************************************************************************/ + +#include <curses.priv.h> +#include <tic.h> +#include <hashed_db.h> + +#if USE_HASHED_DB + +MODULE_ID("$Id: hashed_db.c,v 1.19 2020/02/02 23:34:34 tom Exp $") + +#if HASHED_DB_API >= 2 +static DBC *cursor; +#endif + +typedef struct _myconn { + struct _myconn *next; + DB *db; + char *path; + bool modify; +} MYCONN; + +static MYCONN *connections; + +static void +cleanup(void) +{ + while (connections != 0) { + _nc_db_close(connections->db); + } +} + +static DB * +find_connection(const char *path, bool modify) +{ + DB *result = 0; + MYCONN *p; + + for (p = connections; p != 0; p = p->next) { + if (!strcmp(p->path, path) && p->modify == modify) { + result = p->db; + break; + } + } + + return result; +} + +static void +drop_connection(DB * db) +{ + MYCONN *p, *q; + + for (p = connections, q = 0; p != 0; q = p, p = p->next) { + if (p->db == db) { + if (q != 0) + q->next = p->next; + else + connections = p->next; + free(p->path); + free(p); + break; + } + } +} + +static void +make_connection(DB * db, const char *path, bool modify) +{ + MYCONN *p = typeCalloc(MYCONN, 1); + + if (p != 0) { + p->db = db; + p->path = strdup(path); + p->modify = modify; + if (p->path != 0) { + p->next = connections; + connections = p; + } else { + free(p); + } + } +} + +/* + * Open the database. + */ +NCURSES_EXPORT(DB *) +_nc_db_open(const char *path, bool modify) +{ + DB *result = 0; + int code; + + if (connections == 0) + atexit(cleanup); + + if ((result = find_connection(path, modify)) == 0) { + +#if HASHED_DB_API >= 4 + db_create(&result, NULL, 0); + if ((code = result->open(result, + NULL, + path, + NULL, + DB_HASH, + modify ? DB_CREATE : DB_RDONLY, + 0644)) != 0) { + result = 0; + } +#elif HASHED_DB_API >= 3 + db_create(&result, NULL, 0); + if ((code = result->open(result, + path, + NULL, + DB_HASH, + modify ? DB_CREATE : DB_RDONLY, + 0644)) != 0) { + result = 0; + } +#elif HASHED_DB_API >= 2 + if ((code = db_open(path, + DB_HASH, + modify ? DB_CREATE : DB_RDONLY, + 0644, + (DB_ENV *) 0, + (DB_INFO *) 0, + &result)) != 0) { + result = 0; + } +#else + if ((result = dbopen(path, + modify ? (O_CREAT | O_RDWR) : O_RDONLY, + 0644, + DB_HASH, + NULL)) == 0) { + code = errno; + } +#endif + if (result != 0) { + make_connection(result, path, modify); + T(("opened %s", path)); + } else { + T(("cannot open %s: %s", path, strerror(code))); + } + } + return result; +} + +/* + * Close the database. Do not attempt to use the 'db' handle after this call. + */ +NCURSES_EXPORT(int) +_nc_db_close(DB * db) +{ + int result; + + drop_connection(db); +#if HASHED_DB_API >= 2 + result = db->close(db, 0); +#else + result = db->close(db); +#endif + return result; +} + +/* + * Write a record to the database. + * + * Returns 0 on success. + * + * FIXME: the FreeBSD cap_mkdb program assumes the database could have + * duplicates. There appears to be no good reason for that (review/fix). + */ +NCURSES_EXPORT(int) +_nc_db_put(DB * db, DBT * key, DBT * data) +{ + int result; +#if HASHED_DB_API >= 2 + /* remove any pre-existing value, since we do not want duplicates */ + (void) db->del(db, NULL, key, 0); + result = db->put(db, NULL, key, data, DB_NOOVERWRITE); +#else + result = db->put(db, key, data, R_NOOVERWRITE); +#endif + return result; +} + +/* + * Read a record from the database. + * + * Returns 0 on success. + */ +NCURSES_EXPORT(int) +_nc_db_get(DB * db, DBT * key, DBT * data) +{ + int result; + + memset(data, 0, sizeof(*data)); +#if HASHED_DB_API >= 2 + result = db->get(db, NULL, key, data, 0); +#else + result = db->get(db, key, data, 0); +#endif + return result; +} + +/* + * Read the first record from the database, ignoring order. + * + * Returns 0 on success. + */ +NCURSES_EXPORT(int) +_nc_db_first(DB * db, DBT * key, DBT * data) +{ + int result; + + memset(key, 0, sizeof(*key)); + memset(data, 0, sizeof(*data)); +#if HASHED_DB_API >= 2 + if ((result = db->cursor(db, NULL, &cursor, 0)) == 0) { + result = cursor->c_get(cursor, key, data, DB_FIRST); + } +#else + result = db->seq(db, key, data, 0); +#endif + return result; +} + +/* + * Read the next record from the database, ignoring order. + * + * Returns 0 on success. + */ +NCURSES_EXPORT(int) +_nc_db_next(DB * db, DBT * key, DBT * data) +{ + int result; + +#if HASHED_DB_API >= 2 + (void) db; + if (cursor != 0) { + result = cursor->c_get(cursor, key, data, DB_NEXT); + } else { + result = -1; + } +#else + result = db->seq(db, key, data, R_NEXT); +#endif + return result; +} + +/* + * Check if a record is a terminfo index record. Index records are those that + * contain only an alias pointing to a list of aliases. + */ +NCURSES_EXPORT(bool) +_nc_db_have_index(DBT * key, DBT * data, char **buffer, int *size) +{ + bool result = FALSE; + int used = (int) data->size - 1; + char *have = (char *) data->data; + + (void) key; + if (*have++ == 2) { + result = TRUE; + } + /* + * Update params in any case for consistency with _nc_db_have_data(). + */ + *buffer = have; + *size = used; + return result; +} + +/* + * Check if a record is the terminfo data record. Ignore index records, e.g., + * those that contain only an alias pointing to a list of aliases. + */ +NCURSES_EXPORT(bool) +_nc_db_have_data(DBT * key, DBT * data, char **buffer, int *size) +{ + bool result = FALSE; + int used = (int) data->size - 1; + char *have = (char *) data->data; + + if (*have++ == 0) { + if (data->size > key->size + && IS_TIC_MAGIC(have)) { + result = TRUE; + } + } + /* + * Update params in any case to make it simple to follow a index record + * to the data record. + */ + *buffer = have; + *size = used; + return result; +} + +#else + +extern +NCURSES_EXPORT(void) +_nc_hashed_db(void); + +NCURSES_EXPORT(void) +_nc_hashed_db(void) +{ +} + +#endif /* USE_HASHED_DB */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/home_terminfo.c b/deps/ncurses-6.3/ncurses/tinfo/home_terminfo.c similarity index 89% rename from deps/ncurses-5.9/ncurses/tinfo/home_terminfo.c rename to deps/ncurses-6.3/ncurses/tinfo/home_terminfo.c index 69d69f9..7e626df 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/home_terminfo.c +++ b/deps/ncurses-6.3/ncurses/tinfo/home_terminfo.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -37,7 +38,7 @@ #include <curses.priv.h> #include <tic.h> -MODULE_ID("$Id: home_terminfo.c,v 1.12 2010/12/25 23:43:58 tom Exp $") +MODULE_ID("$Id: home_terminfo.c,v 1.17 2020/02/02 23:34:34 tom Exp $") /* ncurses extension...fall back on user's private directory */ @@ -48,16 +49,15 @@ _nc_home_terminfo(void) { char *result = 0; #if USE_HOME_TERMINFO - char *home; - if (use_terminfo_vars()) { + if (MyBuffer == 0) { + char *home; + if ((home = getenv("HOME")) != 0) { size_t want = (strlen(home) + sizeof(PRIVATE_INFO)); - MyBuffer = typeMalloc(char, want); - if (MyBuffer == 0) - _nc_err_abort(MSG_NO_MEMORY); - (void) sprintf(MyBuffer, PRIVATE_INFO, home); + TYPE_MALLOC(char, want, MyBuffer); + _nc_SPRINTF(MyBuffer, _nc_SLIMIT(want) PRIVATE_INFO, home); } } result = MyBuffer; diff --git a/deps/ncurses-5.9/ncurses/tinfo/init_keytry.c b/deps/ncurses-6.3/ncurses/tinfo/init_keytry.c similarity index 94% rename from deps/ncurses-5.9/ncurses/tinfo/init_keytry.c rename to deps/ncurses-6.3/ncurses/tinfo/init_keytry.c index ea47b38..1669c64 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/init_keytry.c +++ b/deps/ncurses-6.3/ncurses/tinfo/init_keytry.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1999-2010,2016 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 * @@ -29,7 +30,7 @@ #include <curses.priv.h> #include <tic.h> /* struct tinfo_fkeys */ -MODULE_ID("$Id: init_keytry.c,v 1.17 2010/04/24 22:29:56 tom Exp $") +MODULE_ID("$Id: init_keytry.c,v 1.19 2020/02/02 23:34:34 tom Exp $") /* ** _nc_init_keytry() @@ -66,14 +67,14 @@ _nc_tinfo_fkeysf(void) NCURSES_EXPORT(void) _nc_init_keytry(SCREEN *sp) { - unsigned n; - /* The sp->_keytry value is initialized in newterm(), where the sp * structure is created, because we can not tell where keypad() or * mouse_activate() (which will call keyok()) are first called. */ if (sp != 0) { + unsigned n; + for (n = 0; _nc_tinfo_fkeys[n].code; n++) { if (_nc_tinfo_fkeys[n].offset < STRCOUNT) { (void) _nc_add_to_try(&(sp->_keytry), diff --git a/deps/ncurses-6.3/ncurses/tinfo/lib_acs.c b/deps/ncurses-6.3/ncurses/tinfo/lib_acs.c new file mode 100644 index 0000000..4ede53f --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_acs.c @@ -0,0 +1,326 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Juergen Pfeifer 2008 * + ****************************************************************************/ + +#include <curses.priv.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_acs.c,v 1.50 2020/02/02 23:34:34 tom Exp $") + +#if BROKEN_LINKER || USE_REENTRANT +#define MyBuffer _nc_prescreen.real_acs_map +NCURSES_EXPORT(chtype *) +NCURSES_PUBLIC_VAR(acs_map) (void) +{ + if (MyBuffer == 0) + MyBuffer = typeCalloc(chtype, ACS_LEN); + return MyBuffer; +} +#undef MyBuffer +#else +NCURSES_EXPORT_VAR (chtype) acs_map[ACS_LEN] = +{ + 0 +}; +#endif + +#ifdef USE_TERM_DRIVER +NCURSES_EXPORT(chtype) +NCURSES_SP_NAME(_nc_acs_char) (NCURSES_SP_DCLx int c) +{ + chtype *map; + if (c < 0 || c >= ACS_LEN) + return (chtype) 0; + map = (SP_PARM != 0) ? SP_PARM->_acs_map : +#if BROKEN_LINKER || USE_REENTRANT + _nc_prescreen.real_acs_map +#else + acs_map +#endif + ; + return map[c]; +} +#endif /* USE_TERM_DRIVER */ + +NCURSES_EXPORT(void) +NCURSES_SP_NAME(_nc_init_acs) (NCURSES_SP_DCL0) +{ + chtype *fake_map = acs_map; + chtype *real_map = SP_PARM != 0 ? SP_PARM->_acs_map : fake_map; + int j; + + T(("initializing ACS map")); + + /* + * If we're using this from curses (rather than terminfo), we are storing + * the mapping information in the SCREEN struct so we can decide how to + * render it. + */ + if (real_map != fake_map) { + for (j = 1; j < ACS_LEN; ++j) { + real_map[j] = 0; + fake_map[j] = A_ALTCHARSET | (chtype) j; + if (SP_PARM) + SP_PARM->_screen_acs_map[j] = FALSE; + } + } else { + for (j = 1; j < ACS_LEN; ++j) { + real_map[j] = 0; + } + } + + /* + * Initializations for a UNIX-like multi-terminal environment. Use + * ASCII chars and count on the terminfo description to do better. + */ + real_map['l'] = '+'; /* should be upper left corner */ + real_map['m'] = '+'; /* should be lower left corner */ + real_map['k'] = '+'; /* should be upper right corner */ + real_map['j'] = '+'; /* should be lower right corner */ + real_map['u'] = '+'; /* should be tee pointing left */ + real_map['t'] = '+'; /* should be tee pointing right */ + real_map['v'] = '+'; /* should be tee pointing up */ + real_map['w'] = '+'; /* should be tee pointing down */ + real_map['q'] = '-'; /* should be horizontal line */ + real_map['x'] = '|'; /* should be vertical line */ + real_map['n'] = '+'; /* should be large plus or crossover */ + real_map['o'] = '~'; /* should be scan line 1 */ + real_map['s'] = '_'; /* should be scan line 9 */ + real_map['`'] = '+'; /* should be diamond */ + real_map['a'] = ':'; /* should be checker board (stipple) */ + real_map['f'] = '\''; /* should be degree symbol */ + real_map['g'] = '#'; /* should be plus/minus */ + real_map['~'] = 'o'; /* should be bullet */ + real_map[','] = '<'; /* should be arrow pointing left */ + real_map['+'] = '>'; /* should be arrow pointing right */ + real_map['.'] = 'v'; /* should be arrow pointing down */ + real_map['-'] = '^'; /* should be arrow pointing up */ + real_map['h'] = '#'; /* should be board of squares */ + real_map['i'] = '#'; /* should be lantern symbol */ + real_map['0'] = '#'; /* should be solid square block */ + /* these defaults were invented for ncurses */ + real_map['p'] = '-'; /* should be scan line 3 */ + real_map['r'] = '-'; /* should be scan line 7 */ + real_map['y'] = '<'; /* should be less-than-or-equal-to */ + real_map['z'] = '>'; /* should be greater-than-or-equal-to */ + real_map['{'] = '*'; /* should be greek pi */ + real_map['|'] = '!'; /* should be not-equal */ + real_map['}'] = 'f'; /* should be pound-sterling symbol */ + /* thick-line-drawing */ + real_map['L'] = '+'; /* upper left corner */ + real_map['M'] = '+'; /* lower left corner */ + real_map['K'] = '+'; /* upper right corner */ + real_map['J'] = '+'; /* lower right corner */ + real_map['T'] = '+'; /* tee pointing left */ + real_map['U'] = '+'; /* tee pointing right */ + real_map['V'] = '+'; /* tee pointing up */ + real_map['W'] = '+'; /* tee pointing down */ + real_map['Q'] = '-'; /* horizontal line */ + real_map['X'] = '|'; /* vertical line */ + real_map['N'] = '+'; /* large plus or crossover */ + /* double-line-drawing */ + real_map['C'] = '+'; /* upper left corner */ + real_map['D'] = '+'; /* lower left corner */ + real_map['B'] = '+'; /* upper right corner */ + real_map['A'] = '+'; /* lower right corner */ + real_map['G'] = '+'; /* tee pointing left */ + real_map['F'] = '+'; /* tee pointing right */ + real_map['H'] = '+'; /* tee pointing up */ + real_map['I'] = '+'; /* tee pointing down */ + real_map['R'] = '-'; /* horizontal line */ + real_map['Y'] = '|'; /* vertical line */ + real_map['E'] = '+'; /* large plus or crossover */ + +#ifdef USE_TERM_DRIVER + CallDriver_2(SP_PARM, td_initacs, real_map, fake_map); +#else + if (ena_acs != NULL) { + NCURSES_PUTP2("ena_acs", ena_acs); + } +#if NCURSES_EXT_FUNCS && defined(enter_pc_charset_mode) && defined(exit_pc_charset_mode) + /* + * Linux console "supports" the "PC ROM" character set by the coincidence + * that smpch/rmpch and smacs/rmacs have the same values. ncurses has + * no codepage support (see SCO Merge for an example). Outside of the + * values defined in acsc, there are no definitions for the "PC ROM" + * character set (assumed by some applications to be codepage 437), but we + * allow those applications to use those codepoints. + * + * test/blue.c uses this feature. + */ +#define PCH_KLUDGE(a,b) (a != 0 && b != 0 && !strcmp(a,b)) + if (PCH_KLUDGE(enter_pc_charset_mode, enter_alt_charset_mode) && + PCH_KLUDGE(exit_pc_charset_mode, exit_alt_charset_mode)) { + size_t i; + for (i = 1; i < ACS_LEN; ++i) { + if (real_map[i] == 0) { + real_map[i] = (chtype) i; + if (real_map != fake_map) { + if (SP != 0) + SP->_screen_acs_map[i] = TRUE; + } + } + } + } +#endif + + if (acs_chars != NULL) { + size_t i = 0; + size_t length = strlen(acs_chars); + + while (i + 1 < length) { + if (acs_chars[i] != 0 && UChar(acs_chars[i]) < ACS_LEN) { + real_map[UChar(acs_chars[i])] = UChar(acs_chars[i + 1]) | A_ALTCHARSET; + T(("#%d real_map[%s] = %s", + (int) i, + _tracechar(UChar(acs_chars[i])), + _tracechtype(real_map[UChar(acs_chars[i])]))); + if (SP != 0) { + SP->_screen_acs_map[UChar(acs_chars[i])] = TRUE; + } + } + i += 2; + } + } +#ifdef TRACE + /* Show the equivalent mapping, noting if it does not match the + * given attribute, whether by re-ordering or duplication. + */ + if (USE_TRACEF(TRACE_CALLS)) { + size_t n, m; + char show[ACS_LEN * 2 + 1]; + for (n = 1, m = 0; n < ACS_LEN; n++) { + if (real_map[n] != 0) { + show[m++] = (char) n; + show[m++] = (char) ChCharOf(real_map[n]); + } + } + show[m] = 0; + if (acs_chars == NULL || strcmp(acs_chars, show)) + _tracef("%s acs_chars %s", + (acs_chars == NULL) ? "NULL" : "READ", + _nc_visbuf(acs_chars)); + _tracef("%s acs_chars %s", + (acs_chars == NULL) + ? "NULL" + : (strcmp(acs_chars, show) + ? "DIFF" + : "SAME"), + _nc_visbuf(show)); + _nc_unlock_global(tracef); + } +#endif /* TRACE */ +#endif +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(void) +_nc_init_acs(void) +{ + NCURSES_SP_NAME(_nc_init_acs) (CURRENT_SCREEN); +} +#endif + +#if !NCURSES_WCWIDTH_GRAPHICS +NCURSES_EXPORT(int) +_nc_wacs_width(unsigned ch) +{ + int result; + switch (ch) { + case 0x00a3: /* FALLTHRU - ncurses pound-sterling symbol */ + case 0x00b0: /* FALLTHRU - VT100 degree symbol */ + case 0x00b1: /* FALLTHRU - VT100 plus/minus */ + case 0x00b7: /* FALLTHRU - VT100 bullet */ + case 0x03c0: /* FALLTHRU - ncurses greek pi */ + case 0x2190: /* FALLTHRU - Teletype arrow pointing left */ + case 0x2191: /* FALLTHRU - Teletype arrow pointing up */ + case 0x2192: /* FALLTHRU - Teletype arrow pointing right */ + case 0x2193: /* FALLTHRU - Teletype arrow pointing down */ + case 0x2260: /* FALLTHRU - ncurses not-equal */ + case 0x2264: /* FALLTHRU - ncurses less-than-or-equal-to */ + case 0x2265: /* FALLTHRU - ncurses greater-than-or-equal-to */ + case 0x23ba: /* FALLTHRU - VT100 scan line 1 */ + case 0x23bb: /* FALLTHRU - ncurses scan line 3 */ + case 0x23bc: /* FALLTHRU - ncurses scan line 7 */ + case 0x23bd: /* FALLTHRU - VT100 scan line 9 */ + case 0x2500: /* FALLTHRU - VT100 horizontal line */ + case 0x2501: /* FALLTHRU - thick horizontal line */ + case 0x2502: /* FALLTHRU - VT100 vertical line */ + case 0x2503: /* FALLTHRU - thick vertical line */ + case 0x250c: /* FALLTHRU - VT100 upper left corner */ + case 0x250f: /* FALLTHRU - thick upper left corner */ + case 0x2510: /* FALLTHRU - VT100 upper right corner */ + case 0x2513: /* FALLTHRU - thick upper right corner */ + case 0x2514: /* FALLTHRU - VT100 lower left corner */ + case 0x2517: /* FALLTHRU - thick lower left corner */ + case 0x2518: /* FALLTHRU - VT100 lower right corner */ + case 0x251b: /* FALLTHRU - thick lower right corner */ + case 0x251c: /* FALLTHRU - VT100 tee pointing left */ + case 0x2523: /* FALLTHRU - thick tee pointing left */ + case 0x2524: /* FALLTHRU - VT100 tee pointing right */ + case 0x252b: /* FALLTHRU - thick tee pointing right */ + case 0x252c: /* FALLTHRU - VT100 tee pointing down */ + case 0x2533: /* FALLTHRU - thick tee pointing down */ + case 0x2534: /* FALLTHRU - VT100 tee pointing up */ + case 0x253b: /* FALLTHRU - thick tee pointing up */ + case 0x253c: /* FALLTHRU - VT100 large plus or crossover */ + case 0x254b: /* FALLTHRU - thick large plus or crossover */ + case 0x2550: /* FALLTHRU - double horizontal line */ + case 0x2551: /* FALLTHRU - double vertical line */ + case 0x2554: /* FALLTHRU - double upper left corner */ + case 0x2557: /* FALLTHRU - double upper right corner */ + case 0x255a: /* FALLTHRU - double lower left corner */ + case 0x255d: /* FALLTHRU - double lower right corner */ + case 0x2560: /* FALLTHRU - double tee pointing right */ + case 0x2563: /* FALLTHRU - double tee pointing left */ + case 0x2566: /* FALLTHRU - double tee pointing down */ + case 0x2569: /* FALLTHRU - double tee pointing up */ + case 0x256c: /* FALLTHRU - double large plus or crossover */ + case 0x2592: /* FALLTHRU - VT100 checker board (stipple) */ + case 0x25ae: /* FALLTHRU - Teletype solid square block */ + case 0x25c6: /* FALLTHRU - VT100 diamond */ + case 0x2603: /* FALLTHRU - Teletype lantern symbol */ + result = 1; + break; + default: + result = wcwidth(ch); + break; + } + return result; +} +#endif /* !NCURSES_WCWIDTH_GRAPHICS */ diff --git a/deps/ncurses-6.3/ncurses/tinfo/lib_baudrate.c b/deps/ncurses-6.3/ncurses/tinfo/lib_baudrate.c new file mode 100644 index 0000000..311c41a --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_baudrate.c @@ -0,0 +1,317 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * lib_baudrate.c + * + */ + +#include <curses.priv.h> +#include <termcap.h> /* ospeed */ +#if defined(__FreeBSD__) || defined(__OpenBSD__) +#include <sys/param.h> +#endif + +/* + * These systems use similar header files, which define B1200 as 1200, etc., + * but can be overridden by defining USE_OLD_TTY so B1200 is 9, which makes all + * of the indices up to B115200 fit nicely in a 'short', allowing us to retain + * ospeed's type for compatibility. + */ +#if NCURSES_OSPEED_COMPAT && \ + ((defined(__FreeBSD__) && (__FreeBSD_version < 700000)) || \ + defined(__NetBSD__) || \ + ((defined(__OpenBSD__) && OpenBSD < 201510)) || \ + defined(__APPLE__)) +#undef B0 +#undef B50 +#undef B75 +#undef B110 +#undef B134 +#undef B150 +#undef B200 +#undef B300 +#undef B600 +#undef B1200 +#undef B1800 +#undef B2400 +#undef B4800 +#undef B9600 +#undef B19200 +#undef EXTA +#undef B38400 +#undef EXTB +#undef B57600 +#undef B115200 +#undef B230400 +#undef B460800 +#undef B921600 +#define USE_OLD_TTY +#include <sys/ttydev.h> +#else +#undef USE_OLD_TTY +#endif /* USE_OLD_TTY */ + +MODULE_ID("$Id: lib_baudrate.c,v 1.45 2020/09/05 21:15:32 tom Exp $") + +/* + * int + * baudrate() + * + * Returns the current terminal's baud rate. + * + */ + +struct speed { + int given_speed; /* values for 'ospeed' */ + int actual_speed; /* the actual speed */ +}; + +#if !defined(EXP_WIN32_DRIVER) +#define DATA(number) { B##number, number } + +static struct speed const speeds[] = +{ + DATA(0), + DATA(50), + DATA(75), + DATA(110), + DATA(134), + DATA(150), + DATA(200), + DATA(300), + DATA(600), + DATA(1200), + DATA(1800), + DATA(2400), + DATA(4800), + DATA(9600), +#ifdef B19200 + DATA(19200), +#elif defined(EXTA) + {EXTA, 19200}, +#endif +#ifdef B28800 + DATA(28800), +#endif +#ifdef B38400 + DATA(38400), +#elif defined(EXTB) + {EXTB, 38400}, +#endif +#ifdef B57600 + DATA(57600), +#endif + /* ifdef to prevent overflow when OLD_TTY is not available */ +#if !(NCURSES_OSPEED_COMPAT && defined(__FreeBSD__) && (__FreeBSD_version > 700000)) +#ifdef B76800 + DATA(76800), +#endif +#ifdef B115200 + DATA(115200), +#endif +#ifdef B153600 + DATA(153600), +#endif +#ifdef B230400 + DATA(230400), +#endif +#ifdef B307200 + DATA(307200), +#endif +#ifdef B460800 + DATA(460800), +#endif +#ifdef B500000 + DATA(500000), +#endif +#ifdef B576000 + DATA(576000), +#endif +#ifdef B921600 + DATA(921600), +#endif +#ifdef B1000000 + DATA(1000000), +#endif +#ifdef B1152000 + DATA(1152000), +#endif +#ifdef B1500000 + DATA(1500000), +#endif +#ifdef B2000000 + DATA(2000000), +#endif +#ifdef B2500000 + DATA(2500000), +#endif +#ifdef B3000000 + DATA(3000000), +#endif +#ifdef B3500000 + DATA(3500000), +#endif +#ifdef B4000000 + DATA(4000000), +#endif +#endif +}; +#endif /* !EXP_WIN32_DRIVER */ + +NCURSES_EXPORT(int) +_nc_baudrate(int OSpeed) +{ +#if defined(EXP_WIN32_DRIVER) + /* On Windows this is a noop */ + (void) OSpeed; + return (OK); +#else +#if !USE_REENTRANT + static int last_OSpeed; + static int last_baudrate; +#endif + + int result = ERR; + + if (OSpeed < 0) + OSpeed = (NCURSES_OSPEED) OSpeed; + if (OSpeed < 0) + OSpeed = (unsigned short) OSpeed; +#if !USE_REENTRANT + if (OSpeed == last_OSpeed) { + result = last_baudrate; + } +#endif + if (result == ERR) { + if (OSpeed >= 0) { + unsigned i; + + for (i = 0; i < SIZEOF(speeds); i++) { + if (speeds[i].given_speed > OSpeed) { + break; + } + if (speeds[i].given_speed == OSpeed) { + result = speeds[i].actual_speed; + break; + } + } + } +#if !USE_REENTRANT + if (OSpeed != last_OSpeed) { + last_OSpeed = OSpeed; + last_baudrate = result; + } +#endif + } + return (result); +#endif /* !EXP_WIN32_DRIVER */ +} + +NCURSES_EXPORT(int) +_nc_ospeed(int BaudRate) +{ + int result = 1; +#if defined(EXP_WIN32_DRIVER) + (void) BaudRate; +#else + if (BaudRate >= 0) { + unsigned i; + + for (i = 0; i < SIZEOF(speeds); i++) { + if (speeds[i].actual_speed == BaudRate) { + result = speeds[i].given_speed; + break; + } + } + } +#endif + return (result); +} + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(baudrate) (NCURSES_SP_DCL0) +{ + int result; + + T((T_CALLED("baudrate(%p)"), (void *) SP_PARM)); + +#if defined(EXP_WIN32_DRIVER) + result = OK; +#else + /* + * In debugging, allow the environment symbol to override when we're + * redirecting to a file, so we can construct repeatable test-cases + * that take into account costs that depend on baudrate. + */ +#ifdef TRACE + if (IsValidTIScreen(SP_PARM) + && !NC_ISATTY(fileno((SP_PARM && SP_PARM->_ofp) ? SP_PARM->_ofp : stdout)) + && getenv("BAUDRATE") != 0) { + int ret; + if ((ret = _nc_getenv_num("BAUDRATE")) <= 0) + ret = 9600; + ospeed = (NCURSES_OSPEED) _nc_ospeed(ret); + returnCode(ret); + } +#endif + + if (IsValidTIScreen(SP_PARM)) { +#ifdef USE_OLD_TTY + result = (int) cfgetospeed(&(TerminalOf(SP_PARM)->Nttyb)); + ospeed = (NCURSES_OSPEED) _nc_ospeed(result); +#else /* !USE_OLD_TTY */ +#ifdef TERMIOS + ospeed = (NCURSES_OSPEED) cfgetospeed(&(TerminalOf(SP_PARM)->Nttyb)); +#else + ospeed = (NCURSES_OSPEED) TerminalOf(SP_PARM)->Nttyb.sg_ospeed; +#endif + result = _nc_baudrate(ospeed); +#endif + TerminalOf(SP_PARM)->_baudrate = result; + } else { + result = ERR; + } +#endif /* !EXP_WIN32_DRIVER */ + returnCode(result); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +baudrate(void) +{ + return NCURSES_SP_NAME(baudrate) (CURRENT_SCREEN); +} +#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_cur_term.c b/deps/ncurses-6.3/ncurses/tinfo/lib_cur_term.c similarity index 80% rename from deps/ncurses-5.9/ncurses/tinfo/lib_cur_term.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_cur_term.c index 86e130e..0373aeb 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_cur_term.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_cur_term.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -38,15 +39,14 @@ #include <curses.priv.h> #include <termcap.h> /* ospeed */ +#include <tic.h> /* VALID_STRING */ -MODULE_ID("$Id: lib_cur_term.c,v 1.30 2010/12/19 01:38:45 tom Exp $") +MODULE_ID("$Id: lib_cur_term.c,v 1.43 2020/10/24 18:54:32 tom Exp $") #undef CUR -#define CUR termp->type. +#define CUR TerminalType(termp). -#if BROKEN_LINKER && !USE_REENTRANT -NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0; -#elif BROKEN_LINKER || USE_REENTRANT +#if USE_REENTRANT NCURSES_EXPORT(TERMINAL *) NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_DCL0) @@ -55,6 +55,7 @@ NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_DCL0) } #if NCURSES_SP_FUNCS + NCURSES_EXPORT(TERMINAL *) _nc_get_cur_term(void) { @@ -77,7 +78,7 @@ NCURSES_EXPORT_VAR(TERMINAL *) cur_term = 0; #endif NCURSES_EXPORT(TERMINAL *) -NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp) +NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL *termp) { TERMINAL *oldterm; @@ -87,24 +88,29 @@ NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp) oldterm = cur_term; if (SP_PARM) SP_PARM->_term = termp; -#if BROKEN_LINKER && !USE_REENTRANT - cur_term = termp; -#else +#if USE_REENTRANT CurTerm = termp; +#else + cur_term = termp; #endif if (termp != 0) { #ifdef USE_TERM_DRIVER TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp; ospeed = (NCURSES_OSPEED) _nc_ospeed(termp->_baudrate); - if (TCB->drv->isTerminfo && termp->type.Strings) { - PC = (char) ((pad_char != NULL) ? pad_char[0] : 0); + if (TCB->drv && + TCB->drv->isTerminfo && + TerminalType(termp).Strings) { + PC = (char) (VALID_STRING(pad_char) ? pad_char[0] : 0); } TCB->csp = SP_PARM; #else ospeed = (NCURSES_OSPEED) _nc_ospeed(termp->_baudrate); - if (termp->type.Strings) { - PC = (char) ((pad_char != NULL) ? pad_char[0] : 0); + if (TerminalType(termp).Strings) { + PC = (char) (VALID_STRING(pad_char) ? pad_char[0] : 0); } +#endif +#if !USE_REENTRANT + save_ttytype(termp); #endif } _nc_unlock_global(curses); @@ -115,14 +121,14 @@ NCURSES_SP_NAME(set_curterm) (NCURSES_SP_DCLx TERMINAL * termp) #if NCURSES_SP_FUNCS NCURSES_EXPORT(TERMINAL *) -set_curterm(TERMINAL * termp) +set_curterm(TERMINAL *termp) { return NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN, termp); } #endif NCURSES_EXPORT(int) -NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp) +NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL *termp) { int rc = ERR; @@ -133,27 +139,33 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp) TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) termp; #endif TERMINAL *cur = ( -#if BROKEN_LINKER && !USE_REENTRANT - cur_term -#elif BROKEN_LINKER || USE_REENTRANT +#if USE_REENTRANT NCURSES_SP_NAME(_nc_get_cur_term) (NCURSES_SP_ARG) #else cur_term #endif ); - _nc_free_termtype(&(termp->type)); +#if NCURSES_EXT_NUMBERS + _nc_free_termtype(&termp->type); +#endif + _nc_free_termtype2(&TerminalType(termp)); if (termp == cur) NCURSES_SP_NAME(set_curterm) (NCURSES_SP_ARGx 0); FreeIfNeeded(termp->_termname); #if USE_HOME_TERMINFO - if (_nc_globals.home_terminfo != 0) + if (_nc_globals.home_terminfo != 0) { FreeAndNull(_nc_globals.home_terminfo); + } #endif #ifdef USE_TERM_DRIVER if (TCB->drv) - TCB->drv->release(TCB); + TCB->drv->td_release(TCB); +#endif +#if NO_LEAKS + /* discard memory used in tgetent's cache for this terminal */ + _nc_tgetent_leak(termp); #endif free(termp); @@ -164,9 +176,9 @@ NCURSES_SP_NAME(del_curterm) (NCURSES_SP_DCLx TERMINAL * termp) #if NCURSES_SP_FUNCS NCURSES_EXPORT(int) -del_curterm(TERMINAL * termp) +del_curterm(TERMINAL *termp) { - int rc = ERR; + int rc; _nc_lock_global(curses); rc = NCURSES_SP_NAME(del_curterm) (CURRENT_SCREEN, termp); diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_data.c b/deps/ncurses-6.3/ncurses/tinfo/lib_data.c similarity index 88% rename from deps/ncurses-5.9/ncurses/tinfo/lib_data.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_data.c index 195ddf9..8bebc3d 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_data.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_data.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_data.c,v 1.61 2010/05/15 22:06:56 tom Exp $") +MODULE_ID("$Id: lib_data.c,v 1.85 2021/09/04 10:54:35 tom Exp $") /* * OS/2's native linker complains if we don't initialize public data when @@ -94,7 +95,9 @@ _nc_screen(void) NCURSES_EXPORT(int) _nc_alloc_screen(void) { - return ((my_screen = _nc_alloc_screen_sp()) != 0); + my_screen = _nc_alloc_screen_sp(); + T(("_nc_alloc_screen_sp %p", my_screen)); + return (my_screen != 0); } NCURSES_EXPORT(void) @@ -114,6 +117,7 @@ NCURSES_EXPORT_VAR(SCREEN *) SP = NULL; /* Some linkers require initialized data #define TGETENT_0s { TGETENT_0, TGETENT_0, TGETENT_0, TGETENT_0 } NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = { + 0, /* have_sigtstp */ 0, /* have_sigwinch */ 0, /* cleanup_nested */ @@ -125,16 +129,19 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = { FALSE, /* have_tic_directory */ FALSE, /* keep_tic_directory */ - TERMINFO, /* tic_directory */ + 0, /* tic_directory */ NULL, /* dbi_list */ 0, /* dbi_size */ NULL, /* first_name */ NULL, /* keyname_table */ + 0, /* init_keyname */ 0, /* slk_format */ + 2048, /* getstr_limit */ + NULL, /* safeprint_buf */ 0, /* safeprint_used */ @@ -142,6 +149,21 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = { 0, /* tgetent_index */ 0, /* tgetent_sequence */ + 0, /* dbd_blob */ + 0, /* dbd_list */ + 0, /* dbd_size */ + 0, /* dbd_time */ + { { 0, 0 } }, /* dbd_vars */ + +#if HAVE_TSEARCH + NULL, /* cached_tparm */ + 0, /* count_tparm */ +#endif /* HAVE_TSEARCH */ + +#ifdef USE_TERM_DRIVER + 0, /* term_driver */ +#endif + #ifndef USE_SP_WINDOWLIST 0, /* _nc_windowlist */ #endif @@ -155,15 +177,28 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = { 0, /* safeprint_rows */ #endif -#ifdef USE_TERM_DRIVER - 0, /* term_driver */ +#ifdef USE_PTHREADS + PTHREAD_MUTEX_INITIALIZER, /* mutex_curses */ + PTHREAD_MUTEX_INITIALIZER, /* mutex_prescreen */ + PTHREAD_MUTEX_INITIALIZER, /* mutex_screen */ + PTHREAD_MUTEX_INITIALIZER, /* mutex_update */ + PTHREAD_MUTEX_INITIALIZER, /* mutex_tst_tracef */ + PTHREAD_MUTEX_INITIALIZER, /* mutex_tracef */ + 0, /* nested_tracef */ + 0, /* use_pthreads */ +#if USE_PTHREADS_EINTR + 0, /* read_thread */ +#endif +#endif +#if USE_WIDEC_SUPPORT + CHARS_0s, /* key_name */ #endif - #ifdef TRACE - FALSE, /* init_trace */ + FALSE, /* trace_opened */ CHARS_0s, /* trace_fname */ 0, /* trace_level */ NULL, /* trace_fp */ + -1, /* trace_fd */ NULL, /* tracearg_buf */ 0, /* tracearg_used */ @@ -186,15 +221,8 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = { 0, /* nested_tracef */ #endif #endif /* TRACE */ -#ifdef USE_PTHREADS - PTHREAD_MUTEX_INITIALIZER, /* mutex_curses */ - PTHREAD_MUTEX_INITIALIZER, /* mutex_tst_tracef */ - PTHREAD_MUTEX_INITIALIZER, /* mutex_tracef */ - 0, /* nested_tracef */ - 0, /* use_pthreads */ -#endif -#if USE_PTHREADS_EINTR - 0, /* read_thread */ +#if NO_LEAKS + FALSE, /* leak_checking */ #endif }; @@ -206,17 +234,11 @@ NCURSES_EXPORT_VAR(NCURSES_GLOBALS) _nc_globals = { #define RIPOFF_0s { RIPOFF_0 } NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen = { + NULL, /* allocated */ TRUE, /* use_env */ FALSE, /* filter_mode */ A_NORMAL, /* previous_attr */ -#ifndef USE_SP_RIPOFF - RIPOFF_0s, /* ripoff */ - NULL, /* rsp */ -#endif { /* tparm_state */ -#ifdef TRACE - NULL, /* tname */ -#endif NULL, /* tparam_base */ STACK_FRAME_0s, /* stack */ @@ -229,14 +251,21 @@ NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen = { NULL, /* fmt_buff */ 0, /* fmt_size */ - NUM_VARS_0s, /* dynamic_var */ NUM_VARS_0s, /* static_vars */ +#ifdef TRACE + NULL, /* tname */ +#endif }, NULL, /* saved_tty */ + FALSE, /* use_tioctl */ + 0, /* _outch */ +#ifndef USE_SP_RIPOFF + RIPOFF_0s, /* ripoff */ + NULL, /* rsp */ +#endif #if NCURSES_NO_PADDING FALSE, /* flag to set if padding disabled */ #endif - 0, /* _outch */ #if BROKEN_LINKER || USE_REENTRANT NULL, /* real_acs_map */ 0, /* LINES */ @@ -244,7 +273,9 @@ NCURSES_EXPORT_VAR(NCURSES_PRESCREEN) _nc_prescreen = { 8, /* TABSIZE */ 1000, /* ESCDELAY */ 0, /* cur_term */ +#endif #ifdef TRACE +#if BROKEN_LINKER || USE_REENTRANT 0L, /* _outchars */ NULL, /* _tputs_trace */ #endif @@ -278,6 +309,9 @@ init_global_mutexes(void) if (!initialized) { initialized = TRUE; _nc_mutex_init(&_nc_globals.mutex_curses); + _nc_mutex_init(&_nc_globals.mutex_prescreen); + _nc_mutex_init(&_nc_globals.mutex_screen); + _nc_mutex_init(&_nc_globals.mutex_update); _nc_mutex_init(&_nc_globals.mutex_tst_tracef); _nc_mutex_init(&_nc_globals.mutex_tracef); } @@ -362,7 +396,7 @@ _nc_sigprocmask(int how, const sigset_t * newmask, sigset_t * oldmask) if ((pthread_sigmask)) return pthread_sigmask(how, newmask, oldmask); else - return sigprocmask(how, newmask, oldmask); + return (sigprocmask) (how, newmask, oldmask); } #endif #endif /* USE_PTHREADS */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_has_cap.c b/deps/ncurses-6.3/ncurses/tinfo/lib_has_cap.c similarity index 92% rename from deps/ncurses-5.9/ncurses/tinfo/lib_has_cap.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_has_cap.c index d1b9b8d..cbf68b3 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_has_cap.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_has_cap.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2013 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 * @@ -46,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_has_cap.c,v 1.9 2009/10/24 22:15:47 tom Exp $") +MODULE_ID("$Id: lib_has_cap.c,v 1.11 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(bool) NCURSES_SP_NAME(has_ic) (NCURSES_SP_DCL0) @@ -55,7 +56,7 @@ NCURSES_SP_NAME(has_ic) (NCURSES_SP_DCL0) T((T_CALLED("has_ic(%p)"), (void *) SP_PARM)); - if (IsValidTIScreen(SP_PARM) && IsTermInfo(SP_PARM)) { + if (HasTInfoTerminal(SP_PARM)) { code = ((insert_character || parm_ich || (enter_insert_mode && exit_insert_mode)) && (delete_character || parm_dch)) ? TRUE : FALSE; @@ -77,7 +78,7 @@ NCURSES_SP_NAME(has_il) (NCURSES_SP_DCL0) { bool code = FALSE; T((T_CALLED("has_il(%p)"), (void *) SP_PARM)); - if (IsValidTIScreen(SP_PARM) && IsTermInfo(SP_PARM)) { + if (HasTInfoTerminal(SP_PARM)) { code = ((insert_line || parm_insert_line) && (delete_line || parm_delete_line)) ? TRUE : FALSE; } diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_kernel.c b/deps/ncurses-6.3/ncurses/tinfo/lib_kernel.c similarity index 92% rename from deps/ncurses-5.9/ncurses/tinfo/lib_kernel.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_kernel.c index 37f7084..d5b021b 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_kernel.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_kernel.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -48,8 +49,9 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_kernel.c,v 1.31 2010/12/19 01:21:19 tom Exp $") +MODULE_ID("$Id: lib_kernel.c,v 1.34 2020/11/21 22:05:58 tom Exp $") +#ifdef TERMIOS static int _nc_vdisable(void) { @@ -70,6 +72,7 @@ _nc_vdisable(void) #endif return value; } +#endif /* TERMIOS */ /* * erasechar() @@ -91,6 +94,8 @@ NCURSES_SP_NAME(erasechar) (NCURSES_SP_DCL0) result = termp->Ottyb.c_cc[VERASE]; if (result == _nc_vdisable()) result = ERR; +#elif defined(EXP_WIN32_DRIVER) + result = ERR; #else result = termp->Ottyb.sg_erase; #endif @@ -126,6 +131,8 @@ NCURSES_SP_NAME(killchar) (NCURSES_SP_DCL0) result = termp->Ottyb.c_cc[VKILL]; if (result == _nc_vdisable()) result = ERR; +#elif defined(EXP_WIN32_DRIVER) + result = ERR; #else result = termp->Ottyb.sg_kill; #endif @@ -161,7 +168,11 @@ NCURSES_SP_NAME(flushinp) (NCURSES_SP_DCL0) #else errno = 0; do { +#if defined(EXP_WIN32_DRIVER) + _nc_console_flush(_nc_console_fd2handle(termp->Filedes)); +#else ioctl(termp->Filedes, TIOCFLUSH, 0); +#endif } while (errno == EINTR); #endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_longname.c b/deps/ncurses-6.3/ncurses/tinfo/lib_longname.c similarity index 88% rename from deps/ncurses-5.9/ncurses/tinfo/lib_longname.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_longname.c index 1490317..9dc6d71 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_longname.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_longname.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2015 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 * @@ -42,7 +43,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_longname.c,v 1.12 2010/12/20 00:31:26 tom Exp $") +MODULE_ID("$Id: lib_longname.c,v 1.15 2021/04/03 22:36:21 tom Exp $") #if USE_REENTRANT NCURSES_EXPORT(char *) @@ -50,11 +51,12 @@ NCURSES_SP_NAME(longname) (NCURSES_SP_DCL0) { static char empty[] = {'\0'}; - char *ptr; T((T_CALLED("longname(%p)"), (void *) SP_PARM)); if (SP_PARM) { + char *ptr; + for (ptr = SP_PARM->_ttytype + strlen(SP_PARM->_ttytype); ptr > SP_PARM->_ttytype; ptr--) @@ -74,6 +76,17 @@ longname(void) #endif #else + +/* a dummy entrypoint is simpler than generating a conditional in curses.h */ +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(char *) +NCURSES_SP_NAME(longname) (NCURSES_SP_DCL0) +{ + (void) SP_PARM; + return longname(); +} +#endif + NCURSES_EXPORT(char *) longname(void) { diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_napms.c b/deps/ncurses-6.3/ncurses/tinfo/lib_napms.c similarity index 91% rename from deps/ncurses-5.9/ncurses/tinfo/lib_napms.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_napms.c index 1e6abda..3a9fc31 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_napms.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_napms.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -51,17 +52,19 @@ #endif #endif -MODULE_ID("$Id: lib_napms.c,v 1.20 2009/11/07 20:37:30 tom Exp $") +MODULE_ID("$Id: lib_napms.c,v 1.27 2020/08/15 19:45:23 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(napms) (NCURSES_SP_DCLx int ms) { - (void) SP_PARM; T((T_CALLED("napms(%d)"), ms)); #ifdef USE_TERM_DRIVER - CallDriver_1(SP_PARM, nap, ms); + CallDriver_1(SP_PARM, td_nap, ms); #else /* !USE_TERM_DRIVER */ +#if NCURSES_SP_FUNCS + (void) sp; +#endif #if HAVE_NANOSLEEP { struct timespec request, remaining; @@ -72,6 +75,8 @@ NCURSES_SP_NAME(napms) (NCURSES_SP_DCLx int ms) request = remaining; } } +#elif defined(_NC_WINDOWS) + Sleep((DWORD) ms); #else _nc_timed_wait(0, 0, ms, (int *) 0 EVENTLIST_2nd(0)); #endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_options.c b/deps/ncurses-6.3/ncurses/tinfo/lib_options.c similarity index 86% rename from deps/ncurses-5.9/ncurses/tinfo/lib_options.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_options.c index 654bf94..017a34a 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_options.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_options.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-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 * @@ -46,7 +47,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_options.c,v 1.71 2009/10/24 21:56:15 tom Exp $") +MODULE_ID("$Id: lib_options.c,v 1.82 2021/02/14 00:17:35 tom Exp $") NCURSES_EXPORT(int) idlok(WINDOW *win, bool flag) @@ -56,7 +57,11 @@ idlok(WINDOW *win, bool flag) if (win) { SCREEN *sp = _nc_screen_of(win); - if (sp && IsTermInfo(sp)) { + if (sp != 0 +#ifdef USE_TERM_DRIVER + && IsTermInfo(sp) +#endif + ) { sp->_nc_sp_idlok = win->_idlok = (flag && (NCURSES_SP_NAME(has_il) (NCURSES_SP_ARG) || change_scroll_region)); @@ -83,7 +88,7 @@ NCURSES_SP_NAME(halfdelay) (NCURSES_SP_DCLx int t) { T((T_CALLED("halfdelay(%p,%d)"), (void *) SP_PARM, t)); - if (t < 1 || t > 255 || !IsValidTIScreen(SP_PARM)) + if (t < 1 || t > 255 || !SP_PARM || !IsValidTIScreen(SP_PARM)) returnCode(ERR); NCURSES_SP_NAME(cbreak) (NCURSES_SP_ARG); @@ -165,16 +170,16 @@ meta(WINDOW *win GCC_UNUSED, bool flag) #ifdef USE_TERM_DRIVER if (IsTermInfo(sp)) { if (flag) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on); + NCURSES_PUTP2("meta_on", meta_on); } else { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off); + NCURSES_PUTP2("meta_off", meta_off); } } #else if (flag) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_on", meta_on); + NCURSES_PUTP2("meta_on", meta_on); } else { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx "meta_off", meta_off); + NCURSES_PUTP2("meta_off", meta_off); } #endif result = OK; @@ -192,30 +197,31 @@ NCURSES_SP_NAME(curs_set) (NCURSES_SP_DCLx int vis) if (SP_PARM != 0 && vis >= 0 && vis <= 2) { int cursor = SP_PARM->_cursor; - bool bBuiltIn = !IsTermInfo(SP_PARM); if (vis == cursor) { code = cursor; } else { - if (!bBuiltIn) { +#ifdef USE_TERM_DRIVER + code = CallDriver_1(SP_PARM, td_cursorSet, vis); +#else + if (IsValidTIScreen(SP_PARM)) { switch (vis) { case 2: - code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx - "cursor_visible", - cursor_visible); + code = NCURSES_PUTP2_FLUSH("cursor_visible", + cursor_visible); break; case 1: - code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx - "cursor_normal", - cursor_normal); + code = NCURSES_PUTP2_FLUSH("cursor_normal", + cursor_normal); break; case 0: - code = NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx - "cursor_invisible", - cursor_invisible); + code = NCURSES_PUTP2_FLUSH("cursor_invisible", + cursor_invisible); break; } - } else + } else { code = ERR; + } +#endif if (code != ERR) code = (cursor == -1 ? 1 : cursor); SP_PARM->_cursor = vis; @@ -236,7 +242,7 @@ NCURSES_EXPORT(int) NCURSES_SP_NAME(typeahead) (NCURSES_SP_DCLx int fd) { T((T_CALLED("typeahead(%p, %d)"), (void *) SP_PARM, fd)); - if (IsValidTIScreen(SP_PARM)) { + if (SP_PARM && IsValidTIScreen(SP_PARM)) { SP_PARM->_checkfd = fd; returnCode(OK); } else { @@ -301,7 +307,7 @@ NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_DCLx const char *name, const char *value) { - int rc = NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx name, value); + int rc = NCURSES_PUTP2(name, value); if (rc != ERR) { _nc_flush(); } @@ -324,7 +330,7 @@ _nc_putp_flush(const char *name, const char *value) * the terminal state _before_ switching modes. */ NCURSES_EXPORT(int) -_nc_keypad(SCREEN *sp, bool flag) +_nc_keypad(SCREEN *sp, int flag) { int rc = ERR; @@ -349,18 +355,14 @@ _nc_keypad(SCREEN *sp, bool flag) #endif { #ifdef USE_TERM_DRIVER - rc = CallDriver_1(sp, kpad, flag); + rc = CallDriver_1(sp, td_kpad, flag); if (rc == OK) sp->_keypad_on = flag; #else if (flag) { - (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx - "keypad_xmit", - keypad_xmit); - } else if (!flag && keypad_local) { - (void) NCURSES_SP_NAME(_nc_putp_flush) (NCURSES_SP_ARGx - "keypad_local", - keypad_local); + (void) NCURSES_PUTP2_FLUSH("keypad_xmit", keypad_xmit); + } else if (keypad_local) { + (void) NCURSES_PUTP2_FLUSH("keypad_local", keypad_local); } if (flag && !sp->_tried) { diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_print.c b/deps/ncurses-6.3/ncurses/tinfo/lib_print.c similarity index 90% rename from deps/ncurses-5.9/ncurses/tinfo/lib_print.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_print.c index c7bd3a6..aa65041 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_print.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_print.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2011,2012 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 * @@ -39,14 +40,14 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_print.c,v 1.20 2010/06/05 22:18:35 tom Exp $") +MODULE_ID("$Id: lib_print.c,v 1.30 2021/04/18 14:58:57 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len) /* ship binary character data to the printer via mc4/mc5/mc5p */ { int result; - char *mybuf, *switchon; + char *mybuf = NULL, *switchon; size_t onsize, offsize; size_t need; @@ -59,7 +60,7 @@ NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len) } if (prtr_non) { - switchon = TPARM_1(prtr_non, len); + switchon = TIPARM_1(prtr_non, len); onsize = strlen(switchon); offsize = 0; } else { @@ -72,14 +73,15 @@ NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len) if (switchon == 0 || (mybuf = typeMalloc(char, need + 1)) == 0) { + free(mybuf); errno = ENOMEM; return (ERR); } - (void) strcpy(mybuf, switchon); - memcpy(mybuf + onsize, data, (unsigned) len); + _nc_STRCPY(mybuf, switchon, need); + memcpy(mybuf + onsize, data, (size_t) len); if (offsize) - (void) strcpy(mybuf + onsize + len, prtr_off); + _nc_STRCPY(mybuf + onsize + len, prtr_off, need); /* * We're relying on the atomicity of UNIX writes here. The @@ -95,7 +97,7 @@ NCURSES_SP_NAME(mcprint) (NCURSES_SP_DCLx char *data, int len) * kernel will ship the contiguous clist items from the last write * immediately. */ -#ifndef __MINGW32__ +#ifndef _NC_WINDOWS (void) sleep(0); #endif free(mybuf); diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_raw.c b/deps/ncurses-6.3/ncurses/tinfo/lib_raw.c similarity index 85% rename from deps/ncurses-5.9/ncurses/tinfo/lib_raw.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_raw.c index b524a1b..1e47f3b 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_raw.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_raw.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -49,11 +50,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_raw.c,v 1.19 2010/04/24 23:49:12 tom Exp $") - -#if SVR4_TERMIO && !defined(_POSIX_SOURCE) -#define _POSIX_SOURCE -#endif +MODULE_ID("$Id: lib_raw.c,v 1.26 2020/11/21 22:07:48 tom Exp $") #if HAVE_SYS_TERMIO_H #include <sys/termio.h> /* needed for ISC */ @@ -66,6 +63,11 @@ MODULE_ID("$Id: lib_raw.c,v 1.19 2010/04/24 23:49:12 tom Exp $") #define _nc_setmode(mode) /* nothing */ #endif +#if USE_KLIBC_KBD +#define INCL_KBD +#include <os2.h> +#endif + #define COOKED_INPUT (IXON|BRKINT|PARMRK) #ifdef TRACE @@ -95,13 +97,28 @@ NCURSES_SP_NAME(raw) (NCURSES_SP_DCL0) buf.c_iflag &= (unsigned) ~(COOKED_INPUT); buf.c_cc[VMIN] = 1; buf.c_cc[VTIME] = 0; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn &= (unsigned long) ~CONMODE_NORAW; #else buf.sg_flags |= RAW; #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { - SP_PARM->_raw = TRUE; - SP_PARM->_cbreak = 1; +#if USE_KLIBC_KBD + KBDINFO kbdinfo; + + kbdinfo.cb = sizeof(kbdinfo); + KbdGetStatus(&kbdinfo, 0); + + kbdinfo.cb = sizeof(kbdinfo); + kbdinfo.fsMask &= ~KEYBOARD_ASCII_MODE; + kbdinfo.fsMask |= KEYBOARD_BINARY_MODE; + KbdSetStatus(&kbdinfo, 0); +#endif + if (SP_PARM) { + SP_PARM->_raw = TRUE; + SP_PARM->_cbreak = 1; + } termp->Nttyb = buf; } AFTER("raw"); @@ -137,12 +154,17 @@ NCURSES_SP_NAME(cbreak) (NCURSES_SP_DCL0) buf.c_lflag |= ISIG; buf.c_cc[VMIN] = 1; buf.c_cc[VTIME] = 0; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn |= CONMODE_NORAW; + buf.dwFlagIn &= (unsigned long) ~CONMODE_NOCBREAK; #else buf.sg_flags |= CBREAK; #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { - SP_PARM->_cbreak = 1; + if (SP_PARM) { + SP_PARM->_cbreak = 1; + } termp->Nttyb = buf; } AFTER("cbreak"); @@ -165,12 +187,12 @@ cbreak(void) NCURSES_EXPORT(void) NCURSES_SP_NAME(qiflush) (NCURSES_SP_DCL0) { - int result = ERR; TERMINAL *termp; T((T_CALLED("qiflush(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; + int result; BEFORE("qiflush"); buf = termp->Nttyb; @@ -178,6 +200,7 @@ NCURSES_SP_NAME(qiflush) (NCURSES_SP_DCL0) buf.c_lflag &= (unsigned) ~(NOFLSH); result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); #else + result = ERR; /* FIXME */ #endif if (result == OK) @@ -213,13 +236,28 @@ NCURSES_SP_NAME(noraw) (NCURSES_SP_DCL0) buf.c_lflag |= ISIG | ICANON | (termp->Ottyb.c_lflag & IEXTEN); buf.c_iflag |= COOKED_INPUT; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn |= CONMODE_NORAW; #else buf.sg_flags &= ~(RAW | CBREAK); #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { - SP_PARM->_raw = FALSE; - SP_PARM->_cbreak = 0; +#if USE_KLIBC_KBD + KBDINFO kbdinfo; + + kbdinfo.cb = sizeof(kbdinfo); + KbdGetStatus(&kbdinfo, 0); + + kbdinfo.cb = sizeof(kbdinfo); + kbdinfo.fsMask &= ~KEYBOARD_BINARY_MODE; + kbdinfo.fsMask |= KEYBOARD_ASCII_MODE; + KbdSetStatus(&kbdinfo, 0); +#endif + if (SP_PARM) { + SP_PARM->_raw = FALSE; + SP_PARM->_cbreak = 0; + } termp->Nttyb = buf; } AFTER("noraw"); @@ -252,12 +290,16 @@ NCURSES_SP_NAME(nocbreak) (NCURSES_SP_DCL0) #ifdef TERMIOS buf.c_lflag |= ICANON; buf.c_iflag |= ICRNL; +#elif defined(EXP_WIN32_DRIVER) + buf.dwFlagIn |= (CONMODE_NOCBREAK | CONMODE_NORAW); #else buf.sg_flags &= ~CBREAK; #endif result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); if (result == OK) { - SP_PARM->_cbreak = 0; + if (SP_PARM) { + SP_PARM->_cbreak = 0; + } termp->Nttyb = buf; } AFTER("nocbreak"); @@ -276,12 +318,12 @@ nocbreak(void) NCURSES_EXPORT(void) NCURSES_SP_NAME(noqiflush) (NCURSES_SP_DCL0) { - int result = ERR; TERMINAL *termp; T((T_CALLED("noqiflush(%p)"), (void *) SP_PARM)); if ((termp = TerminalOf(SP_PARM)) != 0) { TTY buf; + int result; BEFORE("noqiflush"); buf = termp->Nttyb; @@ -290,6 +332,7 @@ NCURSES_SP_NAME(noqiflush) (NCURSES_SP_DCL0) result = NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_ARGx &buf); #else /* FIXME */ + result = ERR; #endif if (result == OK) termp->Nttyb = buf; diff --git a/deps/ncurses-6.3/ncurses/tinfo/lib_setup.c b/deps/ncurses-6.3/ncurses/tinfo/lib_setup.c new file mode 100644 index 0000000..0aaaa93 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_setup.c @@ -0,0 +1,1016 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Juergen Pfeifer 2009 * + ****************************************************************************/ + +/* + * Terminal setup routines common to termcap and terminfo: + * + * use_env(bool) + * use_tioctl(bool) + * setupterm(char *, int, int *) + */ + +#include <curses.priv.h> +#include <tic.h> /* for MAX_NAME_SIZE */ + +#if HAVE_LOCALE_H +#include <locale.h> +#endif + +MODULE_ID("$Id: lib_setup.c,v 1.214 2021/09/01 23:38:12 tom Exp $") + +/**************************************************************************** + * + * Terminal size computation + * + ****************************************************************************/ + +#if HAVE_SIZECHANGE +# if !defined(sun) || !TERMIOS +# if HAVE_SYS_IOCTL_H +# include <sys/ioctl.h> +# endif +# endif +#endif + +#if NEED_PTEM_H + /* On SCO, they neglected to define struct winsize in termios.h -- it is only + * in termio.h and ptem.h (the former conflicts with other definitions). + */ +# include <sys/stream.h> +# include <sys/ptem.h> +#endif + +#if HAVE_LANGINFO_CODESET +#include <langinfo.h> +#endif + +/* + * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, + * Solaris, IRIX) define TIOCGWINSZ and struct winsize. + */ +#ifdef TIOCGSIZE +# define IOCTL_WINSIZE TIOCGSIZE +# define STRUCT_WINSIZE struct ttysize +# define WINSIZE_ROWS(n) (int)n.ts_lines +# define WINSIZE_COLS(n) (int)n.ts_cols +#else +# ifdef TIOCGWINSZ +# define IOCTL_WINSIZE TIOCGWINSZ +# define STRUCT_WINSIZE struct winsize +# define WINSIZE_ROWS(n) (int)n.ws_row +# define WINSIZE_COLS(n) (int)n.ws_col +# endif +#endif + +/* + * Reduce explicit use of "cur_term" global variable. + */ +#undef CUR +#define CUR TerminalType(termp). + +/* + * Wrap global variables in this module. + */ +#if USE_REENTRANT + +NCURSES_EXPORT(char *) +NCURSES_PUBLIC_VAR(ttytype) (void) +{ + static char empty[] = ""; + char *result = empty; + +#if NCURSES_SP_FUNCS + if (CURRENT_SCREEN) { + TERMINAL *termp = TerminalOf(CURRENT_SCREEN); + if (termp != 0) { + result = TerminalType(termp).term_names; + } + } +#else + if (cur_term != 0) { + result = TerminalType(cur_term).term_names; + } +#endif + return result; +} + +NCURSES_EXPORT(int *) +_nc_ptr_Lines(SCREEN *sp) +{ + return ptrLines(sp); +} + +NCURSES_EXPORT(int) +NCURSES_PUBLIC_VAR(LINES) (void) +{ + return *_nc_ptr_Lines(CURRENT_SCREEN); +} + +NCURSES_EXPORT(int *) +_nc_ptr_Cols(SCREEN *sp) +{ + return ptrCols(sp); +} + +NCURSES_EXPORT(int) +NCURSES_PUBLIC_VAR(COLS) (void) +{ + return *_nc_ptr_Cols(CURRENT_SCREEN); +} + +NCURSES_EXPORT(int *) +_nc_ptr_Tabsize(SCREEN *sp) +{ + return ptrTabsize(sp); +} + +NCURSES_EXPORT(int) +NCURSES_PUBLIC_VAR(TABSIZE) (void) +{ + return *_nc_ptr_Tabsize(CURRENT_SCREEN); +} +#else +NCURSES_EXPORT_VAR(char) ttytype[NAMESIZE] = ""; +NCURSES_EXPORT_VAR(int) LINES = 0; +NCURSES_EXPORT_VAR(int) COLS = 0; +NCURSES_EXPORT_VAR(int) TABSIZE = 8; +#endif + +#if NCURSES_EXT_FUNCS +NCURSES_EXPORT(int) +NCURSES_SP_NAME(set_tabsize) (NCURSES_SP_DCLx int value) +{ + int code = OK; + if (value <= 0) { + code = ERR; + } else { +#if USE_REENTRANT + if (SP_PARM) { + SP_PARM->_TABSIZE = value; + } else { + code = ERR; + } +#else + (void) SP_PARM; + TABSIZE = value; +#endif + } + return code; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +set_tabsize(int value) +{ + return NCURSES_SP_NAME(set_tabsize) (CURRENT_SCREEN, value); +} +#endif +#endif /* NCURSES_EXT_FUNCS */ + +#if USE_SIGWINCH +/* + * If we have a pending SIGWINCH, set the flag in each screen. + */ +NCURSES_EXPORT(int) +_nc_handle_sigwinch(SCREEN *sp) +{ + SCREEN *scan; + + if (_nc_globals.have_sigwinch) { + _nc_globals.have_sigwinch = 0; + + for (each_screen(scan)) { + scan->_sig_winch = TRUE; + } + } + + return (sp ? sp->_sig_winch : 0); +} + +#endif + +NCURSES_EXPORT(void) +NCURSES_SP_NAME(use_env) (NCURSES_SP_DCLx bool f) +{ + START_TRACE(); + T((T_CALLED("use_env(%p,%d)"), (void *) SP_PARM, (int) f)); +#if NCURSES_SP_FUNCS + if (IsPreScreen(SP_PARM)) { + SP_PARM->_use_env = f; + } +#else + _nc_prescreen.use_env = f; +#endif + returnVoid; +} + +NCURSES_EXPORT(void) +NCURSES_SP_NAME(use_tioctl) (NCURSES_SP_DCLx bool f) +{ + START_TRACE(); + T((T_CALLED("use_tioctl(%p,%d)"), (void *) SP_PARM, (int) f)); +#if NCURSES_SP_FUNCS + if (IsPreScreen(SP_PARM)) { + SP_PARM->use_tioctl = f; + } +#else + _nc_prescreen.use_tioctl = f; +#endif + returnVoid; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(void) +use_env(bool f) +{ + START_TRACE(); + T((T_CALLED("use_env(%d)"), (int) f)); + _nc_prescreen.use_env = f; + returnVoid; +} + +NCURSES_EXPORT(void) +use_tioctl(bool f) +{ + START_TRACE(); + T((T_CALLED("use_tioctl(%d)"), (int) f)); + _nc_prescreen.use_tioctl = f; + returnVoid; +} +#endif + +NCURSES_EXPORT(void) +_nc_get_screensize(SCREEN *sp, +#ifdef USE_TERM_DRIVER + TERMINAL *termp, +#endif + int *linep, int *colp) +/* Obtain lines/columns values from the environment and/or terminfo entry */ +{ +#ifdef USE_TERM_DRIVER + TERMINAL_CONTROL_BLOCK *TCB; + int my_tabsize; + + assert(termp != 0 && linep != 0 && colp != 0); + TCB = (TERMINAL_CONTROL_BLOCK *) termp; + + my_tabsize = TCB->info.tabsize; + TCB->drv->td_size(TCB, linep, colp); + +#if USE_REENTRANT + if (sp != 0) { + sp->_TABSIZE = my_tabsize; + } +#else + (void) sp; + TABSIZE = my_tabsize; +#endif + T(("TABSIZE = %d", my_tabsize)); +#else /* !USE_TERM_DRIVER */ + TERMINAL *termp = cur_term; + int my_tabsize; + bool useEnv = _nc_prescreen.use_env; + bool useTioctl = _nc_prescreen.use_tioctl; + +#ifdef EXP_WIN32_DRIVER + /* If we are here, then Windows console is used in terminfo mode. + We need to figure out the size using the console API + */ + _nc_console_size(linep, colp); + T(("screen size: winconsole lines = %d columns = %d", *linep, *colp)); +#else + /* figure out the size of the screen */ + T(("screen size: terminfo lines = %d columns = %d", lines, columns)); + + *linep = (int) lines; + *colp = (int) columns; +#endif + +#if NCURSES_SP_FUNCS + if (sp) { + useEnv = sp->_use_env; + useTioctl = sp->use_tioctl; + } +#endif + + if (useEnv || useTioctl) { +#ifdef __EMX__ + { + int screendata[2]; + _scrsize(screendata); + *colp = screendata[0]; + *linep = ((sp != 0 && sp->_filtered) + ? 1 + : screendata[1]); + T(("EMX screen size: environment LINES = %d COLUMNS = %d", + *linep, *colp)); + } +#endif +#if HAVE_SIZECHANGE + /* try asking the OS */ + if (NC_ISATTY(cur_term->Filedes)) { + STRUCT_WINSIZE size; + + errno = 0; + do { + if (ioctl(cur_term->Filedes, IOCTL_WINSIZE, &size) >= 0) { + *linep = ((sp != 0 && sp->_filtered) + ? 1 + : WINSIZE_ROWS(size)); + *colp = WINSIZE_COLS(size); + T(("SYS screen size: environment LINES = %d COLUMNS = %d", + *linep, *colp)); + break; + } + } while + (errno == EINTR); + } +#endif /* HAVE_SIZECHANGE */ + + if (useEnv) { + int value; + + if (useTioctl) { + /* + * If environment variables are used, update them. + */ + if ((sp == 0 || !sp->_filtered) && _nc_getenv_num("LINES") > 0) { + _nc_setenv_num("LINES", *linep); + } + if (_nc_getenv_num("COLUMNS") > 0) { + _nc_setenv_num("COLUMNS", *colp); + } + } + + /* + * Finally, look for environment variables. + * + * Solaris lets users override either dimension with an environment + * variable. + */ + if ((value = _nc_getenv_num("LINES")) > 0) { + *linep = value; + T(("screen size: environment LINES = %d", *linep)); + } + if ((value = _nc_getenv_num("COLUMNS")) > 0) { + *colp = value; + T(("screen size: environment COLUMNS = %d", *colp)); + } + } + + /* if we can't get dynamic info about the size, use static */ + if (*linep <= 0) { + *linep = (int) lines; + } + if (*colp <= 0) { + *colp = (int) columns; + } + + /* the ultimate fallback, assume fixed 24x80 size */ + if (*linep <= 0) { + *linep = 24; + } + if (*colp <= 0) { + *colp = 80; + } + + /* + * Put the derived values back in the screen-size caps, so + * tigetnum() and tgetnum() will do the right thing. + */ + lines = (NCURSES_INT2) (*linep); + columns = (NCURSES_INT2) (*colp); +#if NCURSES_EXT_NUMBERS +#define OldNumber(termp,name) \ + (termp)->type.Numbers[(&name - (termp)->type2.Numbers)] + OldNumber(termp, lines) = (short) (*linep); + OldNumber(termp, columns) = (short) (*colp); +#endif + } + + T(("screen size is %dx%d", *linep, *colp)); + + if (VALID_NUMERIC(init_tabs)) + my_tabsize = (int) init_tabs; + else + my_tabsize = 8; + +#if USE_REENTRANT + if (sp != 0) + sp->_TABSIZE = my_tabsize; +#else + TABSIZE = my_tabsize; +#endif + T(("TABSIZE = %d", TABSIZE)); +#endif /* USE_TERM_DRIVER */ +} + +#if USE_SIZECHANGE +NCURSES_EXPORT(void) +_nc_update_screensize(SCREEN *sp) +{ + int new_lines; + int new_cols; + +#ifdef USE_TERM_DRIVER + int old_lines; + int old_cols; + + assert(sp != 0); + + CallDriver_2(sp, td_getsize, &old_lines, &old_cols); + +#else + TERMINAL *termp = cur_term; + int old_lines = lines; + int old_cols = columns; +#endif + + if (sp != 0) { + TINFO_GET_SIZE(sp, sp->_term, &new_lines, &new_cols); + /* + * See is_term_resized() and resizeterm(). + * We're doing it this way because those functions belong to the upper + * ncurses library, while this resides in the lower terminfo library. + */ + if (sp->_resize != 0) { + if ((new_lines != old_lines) || (new_cols != old_cols)) { + sp->_resize(NCURSES_SP_ARGx new_lines, new_cols); + } else if (sp->_sig_winch && (sp->_ungetch != 0)) { + sp->_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */ + } + sp->_sig_winch = FALSE; + } + } +} +#endif /* USE_SIZECHANGE */ + +/**************************************************************************** + * + * Terminal setup + * + ****************************************************************************/ + +#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP +/* + * Return 1 if entry found, 0 if not found, -1 if database not accessible, + * just like tgetent(). + */ +int +_nc_setup_tinfo(const char *const tn, TERMTYPE2 *const tp) +{ + char filename[PATH_MAX]; + int status = _nc_read_entry2(tn, filename, tp); + + /* + * If we have an entry, force all of the cancelled strings to null + * pointers so we don't have to test them in the rest of the library. + * (The terminfo compiler bypasses this logic, since it must know if + * a string is cancelled, for merging entries). + */ + if (status == TGETENT_YES) { + unsigned n; + for_each_boolean(n, tp) { + if (!VALID_BOOLEAN(tp->Booleans[n])) + tp->Booleans[n] = FALSE; + } + for_each_string(n, tp) { + if (tp->Strings[n] == CANCELLED_STRING) + tp->Strings[n] = ABSENT_STRING; + } + } + return (status); +} +#endif + +/* +** Take the real command character out of the CC environment variable +** and substitute it in for the prototype given in 'command_character'. +*/ +void +_nc_tinfo_cmdch(TERMINAL *termp, int proto) +{ + char *tmp; + + /* + * Only use the character if the string is a single character, + * since it is fairly common for developers to set the C compiler + * name as an environment variable - using the same symbol. + */ + if ((tmp = getenv("CC")) != 0 && strlen(tmp) == 1) { + unsigned i; + char CC = *tmp; + + for_each_string(i, &(termp->type)) { + for (tmp = termp->type.Strings[i]; tmp && *tmp; tmp++) { + if (UChar(*tmp) == proto) + *tmp = CC; + } + } + } +} + +/* + * Find the locale which is in effect. + */ +NCURSES_EXPORT(char *) +_nc_get_locale(void) +{ + char *env; +#if HAVE_LOCALE_H + /* + * This is preferable to using getenv() since it ensures that we are using + * the locale which was actually initialized by the application. + */ + env = setlocale(LC_CTYPE, 0); +#else + if (((env = getenv("LANG")) != 0 && *env != '\0') + || ((env = getenv("LC_CTYPE")) != 0 && *env != '\0') + || ((env = getenv("LC_ALL")) != 0 && *env != '\0')) { + ; + } +#endif + T(("_nc_get_locale %s", _nc_visbuf(env))); + return env; +} + +/* + * Check if we are running in a UTF-8 locale. + */ +NCURSES_EXPORT(int) +_nc_unicode_locale(void) +{ + int result = 0; +#if defined(_NC_WINDOWS) && USE_WIDEC_SUPPORT + result = 1; +#elif HAVE_LANGINFO_CODESET + char *env = nl_langinfo(CODESET); + result = !strcmp(env, "UTF-8"); + T(("_nc_unicode_locale(%s) ->%d", env, result)); +#else + char *env = _nc_get_locale(); + if (env != 0) { + if (strstr(env, ".UTF-8") != 0) { + result = 1; + T(("_nc_unicode_locale(%s) ->%d", env, result)); + } + } +#endif + return result; +} + +#define CONTROL_N(s) ((s) != 0 && strstr(s, "\016") != 0) +#define CONTROL_O(s) ((s) != 0 && strstr(s, "\017") != 0) + +/* + * Check for known broken cases where a UTF-8 locale breaks the alternate + * character set. + */ +NCURSES_EXPORT(int) +_nc_locale_breaks_acs(TERMINAL *termp) +{ + const char *env_name = "NCURSES_NO_UTF8_ACS"; + const char *env; + int value; + int result = 0; + + T((T_CALLED("_nc_locale_breaks_acs:%d"), result)); + if (getenv(env_name) != 0) { + result = _nc_getenv_num(env_name); + } else if ((value = tigetnum("U8")) >= 0) { + result = value; /* use extension feature */ + } else if ((env = getenv("TERM")) != 0) { + if (strstr(env, "linux")) { + result = 1; /* always broken */ + } else if (strstr(env, "screen") != 0 + && ((env = getenv("TERMCAP")) != 0 + && strstr(env, "screen") != 0) + && strstr(env, "hhII00") != 0) { + if (CONTROL_N(enter_alt_charset_mode) || + CONTROL_O(enter_alt_charset_mode) || + CONTROL_N(set_attributes) || + CONTROL_O(set_attributes)) { + result = 1; + } + } + } + returnCode(result); +} + +NCURSES_EXPORT(int) +TINFO_SETUP_TERM(TERMINAL **tp, + const char *tname, + int Filedes, + int *errret, + int reuse) +{ +#ifdef USE_TERM_DRIVER + TERMINAL_CONTROL_BLOCK *TCB = 0; +#endif + TERMINAL *termp; + SCREEN *sp = 0; + char *myname; + int code = ERR; + + START_TRACE(); + +#ifdef USE_TERM_DRIVER + T((T_CALLED("_nc_setupterm_ex(%p,%s,%d,%p)"), + (void *) tp, _nc_visbuf(tname), Filedes, (void *) errret)); + + if (tp == 0) { + ret_error0(TGETENT_ERR, + "Invalid parameter, internal error.\n"); + } else + termp = *tp; +#else + termp = cur_term; + T((T_CALLED("setupterm(%s,%d,%p)"), _nc_visbuf(tname), Filedes, (void *) errret)); +#endif + + if (tname == 0) { + tname = getenv("TERM"); +#if defined(EXP_WIN32_DRIVER) + if (!VALID_TERM_ENV(tname, NO_TERMINAL)) { + T(("Failure with TERM=%s", NonNull(tname))); + ret_error0(TGETENT_ERR, "TERM environment variable not set.\n"); + } +#elif defined(USE_TERM_DRIVER) + if (!NonEmpty(tname)) + tname = "unknown"; +#else + if (!NonEmpty(tname)) { + T(("Failure with TERM=%s", NonNull(tname))); + ret_error0(TGETENT_ERR, "TERM environment variable not set.\n"); + } +#endif + } + myname = strdup(tname); + + if (strlen(myname) > MAX_NAME_SIZE) { + ret_error(TGETENT_ERR, + "TERM environment must be <= %d characters.\n", + MAX_NAME_SIZE, + free(myname)); + } + + T(("your terminal name is %s", myname)); + + /* + * Allow output redirection. This is what SVr3 does. If stdout is + * directed to a file, screen updates go to standard error. + */ + if (Filedes == STDOUT_FILENO && !NC_ISATTY(Filedes)) + Filedes = STDERR_FILENO; +#if defined(EXP_WIN32_DRIVER) + if (Filedes != STDERR_FILENO && NC_ISATTY(Filedes)) + _setmode(Filedes, _O_BINARY); +#endif + + /* + * Check if we have already initialized to use this terminal. If so, we + * do not need to re-read the terminfo entry, or obtain TTY settings. + * + * This is an improvement on SVr4 curses. If an application mixes curses + * and termcap calls, it may call both initscr and tgetent. This is not + * really a good thing to do, but can happen if someone tries using ncurses + * with the readline library. The problem we are fixing is that when + * tgetent calls setupterm, the resulting Ottyb struct in cur_term is + * zeroed. A subsequent call to endwin uses the zeroed terminal settings + * rather than the ones saved in initscr. So we check if cur_term appears + * to contain terminal settings for the same output file as our current + * call - and copy those terminal settings. (SVr4 curses does not do this, + * however applications that are working around the problem will still work + * properly with this feature). + */ + if (reuse + && (termp != 0) + && termp->Filedes == Filedes + && termp->_termname != 0 + && !strcmp(termp->_termname, myname) + && _nc_name_match(TerminalType(termp).term_names, myname, "|")) { + T(("reusing existing terminal information and mode-settings")); + code = OK; +#ifdef USE_TERM_DRIVER + TCB = (TERMINAL_CONTROL_BLOCK *) termp; +#endif + } else { +#ifdef USE_TERM_DRIVER + TERMINAL_CONTROL_BLOCK *my_tcb; + termp = 0; + if ((my_tcb = typeCalloc(TERMINAL_CONTROL_BLOCK, 1)) != 0) + termp = &(my_tcb->term); +#else + int status; + + termp = typeCalloc(TERMINAL, 1); +#endif + if (termp == 0) { + ret_error1(TGETENT_ERR, + "Not enough memory to create terminal structure.\n", + myname, free(myname)); + } +#if HAVE_SYSCONF + { + long limit; +#ifdef LINE_MAX + limit = LINE_MAX; +#else + limit = _nc_globals.getstr_limit; +#endif +#ifdef _SC_LINE_MAX + if (limit < sysconf(_SC_LINE_MAX)) + limit = sysconf(_SC_LINE_MAX); +#endif + if (_nc_globals.getstr_limit < (int) limit) + _nc_globals.getstr_limit = (int) limit; + } +#endif /* HAVE_SYSCONF */ + T(("using %d for getstr limit", _nc_globals.getstr_limit)); + +#ifdef USE_TERM_DRIVER + INIT_TERM_DRIVER(); + TCB = (TERMINAL_CONTROL_BLOCK *) termp; + code = _nc_globals.term_driver(TCB, myname, errret); + if (code == OK) { + termp->Filedes = (short) Filedes; + termp->_termname = strdup(myname); + } else { + ret_error1(errret ? *errret : TGETENT_ERR, + "Could not find any driver to handle terminal.\n", + myname, free(myname)); + } +#else +#if NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP + status = _nc_setup_tinfo(myname, &TerminalType(termp)); + T(("_nc_setup_tinfo returns %d", status)); +#else + T(("no database available")); + status = TGETENT_NO; +#endif + + /* try fallback list if entry on disk */ + if (status != TGETENT_YES) { + const TERMTYPE2 *fallback = _nc_fallback2(myname); + + if (fallback) { + T(("found fallback entry")); + _nc_copy_termtype2(&(TerminalType(termp)), fallback); + status = TGETENT_YES; + } + } + + if (status != TGETENT_YES) { + del_curterm(termp); + if (status == TGETENT_ERR) { + free(myname); + ret_error0(status, "terminals database is inaccessible\n"); + } else if (status == TGETENT_NO) { + ret_error1(status, "unknown terminal type.\n", + myname, free(myname)); + } else { + free(myname); + ret_error0(status, "unexpected return-code\n"); + } + } +#if NCURSES_EXT_NUMBERS + _nc_export_termtype2(&termp->type, &TerminalType(termp)); +#endif +#if !USE_REENTRANT + save_ttytype(termp); +#endif + + termp->Filedes = (short) Filedes; + termp->_termname = strdup(myname); + + set_curterm(termp); + + if (command_character) + _nc_tinfo_cmdch(termp, UChar(*command_character)); + + /* + * If an application calls setupterm() rather than initscr() or + * newterm(), we will not have the def_prog_mode() call in + * _nc_setupscreen(). Do it now anyway, so we can initialize the + * baudrate. Also get the shell-mode so that erasechar() works. + */ + if (NC_ISATTY(Filedes)) { + NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_ARG); + NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_ARG); + baudrate(); + } + code = OK; +#endif + } + +#ifdef USE_TERM_DRIVER + *tp = termp; + NCURSES_SP_NAME(set_curterm) (sp, termp); + TCB->drv->td_init(TCB); +#else + sp = SP; +#endif + + /* + * We should always check the screensize, just in case. + */ + TINFO_GET_SIZE(sp, termp, ptrLines(sp), ptrCols(sp)); + + if (errret) + *errret = TGETENT_YES; + +#ifndef USE_TERM_DRIVER + if (generic_type) { + /* + * BSD 4.3's termcap contains mis-typed "gn" for wy99. Do a sanity + * check before giving up. + */ + if ((VALID_STRING(cursor_address) + || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home))) + && VALID_STRING(clear_screen)) { + ret_error1(TGETENT_YES, "terminal is not really generic.\n", + myname, free(myname)); + } else { + del_curterm(termp); + ret_error1(TGETENT_NO, "I need something more specific.\n", + myname, free(myname)); + } + } else if (hard_copy) { + ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", + myname, free(myname)); + } +#endif + free(myname); + returnCode(code); +} + +#ifdef USE_PTHREADS +/* + * Returns a non-null pointer unless a new screen should be allocated because + * no match was found in the pre-screen cache. + */ +NCURSES_EXPORT(SCREEN *) +_nc_find_prescr(void) +{ + SCREEN *result = 0; + PRESCREEN_LIST *p; + pthread_t id = GetThreadID(); + for (p = _nc_prescreen.allocated; p != 0; p = p->next) { + if (p->id == id) { + result = p->sp; + break; + } + } + return result; +} + +/* + * Tells ncurses to forget that this thread was associated with the pre-screen + * cache. It does not modify the pre-screen cache itself, since that is used + * for creating new screens. + */ +NCURSES_EXPORT(void) +_nc_forget_prescr(void) +{ + PRESCREEN_LIST *p, *q; + pthread_t id = GetThreadID(); + for (p = _nc_prescreen.allocated, q = 0; p != 0; q = p, p = p->next) { + if (p->id == id) { + if (q) { + q->next = p->next; + } else { + _nc_prescreen.allocated = p->next; + } + free(p); + break; + } + } +} +#endif /* USE_PTHREADS */ + +#if NCURSES_SP_FUNCS +/* + * In case of handling multiple screens, we need to have a screen before + * initialization in _nc_setupscreen takes place. This is to extend the + * substitute for some of the stuff in _nc_prescreen, especially for slk and + * ripoff handling which should be done per screen. + */ +NCURSES_EXPORT(SCREEN *) +new_prescr(void) +{ + SCREEN *sp; + + START_TRACE(); + T((T_CALLED("new_prescr()"))); + + _nc_lock_global(screen); + if ((sp = _nc_find_prescr()) == 0) { + sp = _nc_alloc_screen_sp(); + T(("_nc_alloc_screen_sp %p", (void *) sp)); + if (sp != 0) { +#ifdef USE_PTHREADS + PRESCREEN_LIST *p = typeCalloc(PRESCREEN_LIST, 1); + if (p != 0) { + p->id = GetThreadID(); + p->sp = sp; + p->next = _nc_prescreen.allocated; + _nc_prescreen.allocated = p; + } +#else + _nc_prescreen.allocated = sp; +#endif + sp->rsp = sp->rippedoff; + sp->_filtered = _nc_prescreen.filter_mode; + sp->_use_env = _nc_prescreen.use_env; +#if NCURSES_NO_PADDING + sp->_no_padding = _nc_prescreen._no_padding; +#endif + sp->slk_format = 0; + sp->_slk = 0; + sp->_prescreen = TRUE; + SP_PRE_INIT(sp); +#if USE_REENTRANT + sp->_TABSIZE = _nc_prescreen._TABSIZE; + sp->_ESCDELAY = _nc_prescreen._ESCDELAY; +#endif + } + } else { + T(("_nc_alloc_screen_sp %p (reuse)", (void *) sp)); + } + _nc_unlock_global(screen); + returnSP(sp); +} +#endif + +#ifdef USE_TERM_DRIVER +/* + * This entrypoint is called from tgetent() to allow a special case of reusing + * the same TERMINAL data (see comment). + */ +NCURSES_EXPORT(int) +_nc_setupterm(const char *tname, + int Filedes, + int *errret, + int reuse) +{ + int rc = ERR; + TERMINAL *termp = 0; + + _nc_lock_global(prescreen); + START_TRACE(); + if (TINFO_SETUP_TERM(&termp, tname, Filedes, errret, reuse) == OK) { + _nc_forget_prescr(); + if (NCURSES_SP_NAME(set_curterm) (CURRENT_SCREEN_PRE, termp) != 0) { + rc = OK; + } + } + _nc_unlock_global(prescreen); + return rc; +} +#endif + +/* + * setupterm(termname, Filedes, errret) + * + * Find and read the appropriate object file for the terminal + * Make cur_term point to the structure. + */ +NCURSES_EXPORT(int) +setupterm(const char *tname, int Filedes, int *errret) +{ + START_TRACE(); + return _nc_setupterm(tname, Filedes, errret, FALSE); +} diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_termcap.c b/deps/ncurses-6.3/ncurses/tinfo/lib_termcap.c similarity index 81% rename from deps/ncurses-5.9/ncurses/tinfo/lib_termcap.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_termcap.c index e9dae85..5ce43a3 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_termcap.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_termcap.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -48,7 +49,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_termcap.c,v 1.73 2010/12/25 19:27:12 tom Exp $") +MODULE_ID("$Id: lib_termcap.c,v 1.88 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT_VAR(char *) UP = 0; NCURSES_EXPORT_VAR(char *) BC = 0; @@ -63,6 +64,15 @@ NCURSES_EXPORT_VAR(char *) BC = 0; #define LAST_USE MyCache[CacheInx].last_used #define LAST_SEQ MyCache[CacheInx].sequence +/* + * Termcap names are matched only using the first two bytes. + * Ignore any extended names longer than two bytes, to avoid problems + * with legacy code which passes in parameters whose use is long forgotten. + */ +#define ValidCap(cap) (((cap)[0] != '\0') && ((cap)[1] != '\0')) +#define SameCap(a,b) (((a)[0] == (b)[0]) && ((a)[1] == (b)[1])) +#define ValidExt(ext) (ValidCap(ext) && (ext)[2] == '\0') + /*************************************************************************** * * tgetent(bufp, term) @@ -91,13 +101,12 @@ NCURSES_SP_NAME(tgetent) (NCURSES_SP_DCLx char *bufp, const char *name) START_TRACE(); T((T_CALLED("tgetent()"))); - TINFO_SETUP_TERM(&termp, (NCURSES_CONST char *) name, - STDOUT_FILENO, &rc, TRUE); + TINFO_SETUP_TERM(&termp, name, STDOUT_FILENO, &rc, TRUE); #ifdef USE_TERM_DRIVER if (termp == 0 || !((TERMINAL_CONTROL_BLOCK *) termp)->drv->isTerminfo) - return (rc); + returnCode(rc); #endif /* @@ -144,8 +153,12 @@ NCURSES_SP_NAME(tgetent) (NCURSES_SP_DCLx char *bufp, const char *name) } CacheInx = best; } - LAST_TRM = TerminalOf(SP_PARM); - LAST_SEQ = ++CacheSeq; + if (rc == 1) { + LAST_TRM = TerminalOf(SP_PARM); + LAST_SEQ = ++CacheSeq; + } else { + LAST_TRM = 0; + } PC = 0; UP = 0; @@ -166,7 +179,8 @@ NCURSES_SP_NAME(tgetent) (NCURSES_SP_DCLx char *bufp, const char *name) if (backspace_if_not_bs != NULL) BC = backspace_if_not_bs; - if ((FIX_SGR0 = _nc_trim_sgr0(&(TerminalOf(SP_PARM)->type))) != 0) { + if ((FIX_SGR0 = _nc_trim_sgr0(&TerminalType(TerminalOf(SP_PARM)))) + != 0) { if (!strcmp(FIX_SGR0, exit_attribute_mode)) { if (FIX_SGR0 != exit_attribute_mode) { free(FIX_SGR0); @@ -202,11 +216,13 @@ tgetent(char *bufp, const char *name) static bool same_tcname(const char *a, const char *b) { - fprintf(stderr, "compare(%s,%s)\n", a, b); - return !strncmp(a, b, 2); + bool code = SameCap(a, b); + fprintf(stderr, "compare(%s,%s) %s\n", a, b, code ? "same" : "diff"); + return code; } + #else -#define same_tcname(a,b) !strncmp(a,b,2) +#define same_tcname(a,b) SameCap(a,b) #endif /*************************************************************************** @@ -219,15 +235,15 @@ same_tcname(const char *a, const char *b) ***************************************************************************/ NCURSES_EXPORT(int) -NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx NCURSES_CONST char *id) +NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx const char *id) { int result = 0; /* Solaris returns zero for missing flag */ - int i, j; T((T_CALLED("tgetflag(%p, %s)"), (void *) SP_PARM, id)); - if (HasTInfoTerminal(SP_PARM)) { - TERMTYPE *tp = &(TerminalOf(SP_PARM)->type); + if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) { + TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM)); struct name_table_entry const *entry_ptr; + int j = -1; entry_ptr = _nc_find_type_entry(id, BOOLEAN, TRUE); if (entry_ptr != 0) { @@ -235,10 +251,10 @@ NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx NCURSES_CONST char *id) } #if NCURSES_XNAMES else { - j = -1; + int i; for_each_ext_boolean(i, tp) { const char *capname = ExtBoolname(tp, i, boolcodes); - if (same_tcname(id, capname)) { + if (same_tcname(id, capname) && ValidExt(capname)) { j = i; break; } @@ -255,7 +271,7 @@ NCURSES_SP_NAME(tgetflag) (NCURSES_SP_DCLx NCURSES_CONST char *id) #if NCURSES_SP_FUNCS NCURSES_EXPORT(int) -tgetflag(NCURSES_CONST char *id) +tgetflag(const char *id) { return NCURSES_SP_NAME(tgetflag) (CURRENT_SCREEN, id); } @@ -271,15 +287,15 @@ tgetflag(NCURSES_CONST char *id) ***************************************************************************/ NCURSES_EXPORT(int) -NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx NCURSES_CONST char *id) +NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx const char *id) { int result = ABSENT_NUMERIC; - int i, j; T((T_CALLED("tgetnum(%p, %s)"), (void *) SP_PARM, id)); - if (HasTInfoTerminal(SP_PARM)) { - TERMTYPE *tp = &(TerminalOf(SP_PARM)->type); + if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) { + TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM)); struct name_table_entry const *entry_ptr; + int j = -1; entry_ptr = _nc_find_type_entry(id, NUMBER, TRUE); if (entry_ptr != 0) { @@ -287,10 +303,10 @@ NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx NCURSES_CONST char *id) } #if NCURSES_XNAMES else { - j = -1; + int i; for_each_ext_number(i, tp) { const char *capname = ExtNumname(tp, i, numcodes); - if (same_tcname(id, capname)) { + if (same_tcname(id, capname) && ValidExt(capname)) { j = i; break; } @@ -307,7 +323,7 @@ NCURSES_SP_NAME(tgetnum) (NCURSES_SP_DCLx NCURSES_CONST char *id) #if NCURSES_SP_FUNCS NCURSES_EXPORT(int) -tgetnum(NCURSES_CONST char *id) +tgetnum(const char *id) { return NCURSES_SP_NAME(tgetnum) (CURRENT_SCREEN, id); } @@ -323,15 +339,15 @@ tgetnum(NCURSES_CONST char *id) ***************************************************************************/ NCURSES_EXPORT(char *) -NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area) +NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx const char *id, char **area) { char *result = NULL; - int i, j; T((T_CALLED("tgetstr(%s,%p)"), id, (void *) area)); - if (HasTInfoTerminal(SP_PARM)) { - TERMTYPE *tp = &(TerminalOf(SP_PARM)->type); + if (HasTInfoTerminal(SP_PARM) && ValidCap(id)) { + TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM)); struct name_table_entry const *entry_ptr; + int j = -1; entry_ptr = _nc_find_type_entry(id, STRING, TRUE); if (entry_ptr != 0) { @@ -339,10 +355,10 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area) } #if NCURSES_XNAMES else { - j = -1; + int i; for_each_ext_string(i, tp) { const char *capname = ExtStrname(tp, i, strcodes); - if (same_tcname(id, capname)) { + if (same_tcname(id, capname) && ValidExt(capname)) { j = i; break; } @@ -351,7 +367,7 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area) #endif if (j >= 0) { result = tp->Strings[j]; - TR(TRACE_DATABASE, ("found match : %s", _nc_visbuf(result))); + TR(TRACE_DATABASE, ("found match %d: %s", j, _nc_visbuf(result))); /* setupterm forces canceled strings to null */ if (VALID_STRING(result)) { if (result == exit_attribute_mode @@ -361,7 +377,7 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area) } if (area != 0 && *area != 0) { - (void) strcpy(*area, result); + _nc_STRCPY(*area, result, 1024); result = *area; *area += strlen(*area) + 1; } @@ -373,20 +389,41 @@ NCURSES_SP_NAME(tgetstr) (NCURSES_SP_DCLx NCURSES_CONST char *id, char **area) #if NCURSES_SP_FUNCS NCURSES_EXPORT(char *) -tgetstr(NCURSES_CONST char *id, char **area) +tgetstr(const char *id, char **area) { return NCURSES_SP_NAME(tgetstr) (CURRENT_SCREEN, id, area); } #endif #if NO_LEAKS +#undef CacheInx +#define CacheInx num +NCURSES_EXPORT(void) +_nc_tgetent_leak(TERMINAL *termp) +{ + if (termp != 0) { + int num; + for (CacheInx = 0; CacheInx < TGETENT_MAX; ++CacheInx) { + if (LAST_TRM == termp) { + FreeAndNull(FIX_SGR0); + if (LAST_TRM != 0) { + LAST_TRM = 0; + } + break; + } + } + } +} + NCURSES_EXPORT(void) _nc_tgetent_leaks(void) { + int num; for (CacheInx = 0; CacheInx < TGETENT_MAX; ++CacheInx) { - FreeIfNeeded(FIX_SGR0); - if (LAST_TRM != 0) + if (LAST_TRM != 0) { del_curterm(LAST_TRM); + _nc_tgetent_leak(LAST_TRM); + } } } #endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_termname.c b/deps/ncurses-6.3/ncurses/tinfo/lib_termname.c similarity index 92% rename from deps/ncurses-5.9/ncurses/tinfo/lib_termname.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_termname.c index e3f6827..2d80bb3 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_termname.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_termname.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2003,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2003,2009 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 * @@ -28,7 +29,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_termname.c,v 1.12 2009/10/24 21:56:58 tom Exp $") +MODULE_ID("$Id: lib_termname.c,v 1.13 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(char *) NCURSES_SP_NAME(termname) (NCURSES_SP_DCL0) diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_tgoto.c b/deps/ncurses-6.3/ncurses/tinfo/lib_tgoto.c similarity index 88% rename from deps/ncurses-5.9/ncurses/tinfo/lib_tgoto.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_tgoto.c index e07f464..9cf5e10 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_tgoto.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_tgoto.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2000-2006,2008 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2000-2008,2012 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 * @@ -35,7 +36,7 @@ #include <ctype.h> #include <termcap.h> -MODULE_ID("$Id: lib_tgoto.c,v 1.13 2008/08/16 19:29:32 tom Exp $") +MODULE_ID("$Id: lib_tgoto.c,v 1.21 2020/05/27 23:55:56 tom Exp $") #if !PURE_TERMINFO static bool @@ -125,7 +126,14 @@ tgoto_internal(const char *string, int x, int y) *value += 1; need_BC = TRUE; } else { - *value = 0200; /* tputs will treat this as \0 */ + /* tputs will pretend this is \0, which will almost + * always work since ANSI-compatible terminals ignore + * the character. ECMA-48 does not document a C1 + * control for this value. A few (obsolete) terminals + * can use this value in special cases, such as cursor + * addressing using single-byte coordinates. + */ + *value = 0200; } } result[used++] = (char) *value++; @@ -159,7 +167,8 @@ tgoto_internal(const char *string, int x, int y) break; } if (fmt != 0) { - sprintf(result + used, fmt, *value++); + _nc_SPRINTF(result + used, _nc_SLIMIT(length - used) + fmt, *value++); used += strlen(result + used); fmt = 0; } @@ -174,7 +183,7 @@ tgoto_internal(const char *string, int x, int y) } if (result != 0) { if (need_BC) { - strcpy(result + used, BC); + _nc_STRCPY(result + used, BC, length - used); used += strlen(BC); } result[used] = '\0'; @@ -198,6 +207,6 @@ tgoto(const char *string, int x, int y) result = tgoto_internal(string, x, y); else #endif - result = TPARM_2((NCURSES_CONST char *) string, y, x); + result = TIPARM_2(string, y, x); returnPtr(result); } diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_ti.c b/deps/ncurses-6.3/ncurses/tinfo/lib_ti.c similarity index 87% rename from deps/ncurses-5.9/ncurses/tinfo/lib_ti.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_ti.c index e412342..5cb77b8 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_ti.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_ti.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -36,7 +37,7 @@ #include <tic.h> -MODULE_ID("$Id: lib_ti.c,v 1.29 2010/01/23 17:57:43 tom Exp $") +MODULE_ID("$Id: lib_ti.c,v 1.34 2020/02/02 23:34:34 tom Exp $") #if 0 static bool @@ -50,16 +51,16 @@ same_name(const char *a, const char *b) #endif NCURSES_EXPORT(int) -NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx NCURSES_CONST char *str) +NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx const char *str) { int result = ABSENT_BOOLEAN; - int i, j; T((T_CALLED("tigetflag(%p, %s)"), (void *) SP_PARM, str)); if (HasTInfoTerminal(SP_PARM)) { - TERMTYPE *tp = &(TerminalOf(SP_PARM)->type); + TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM)); struct name_table_entry const *entry_ptr; + int j = -1; entry_ptr = _nc_find_type_entry(str, BOOLEAN, FALSE); if (entry_ptr != 0) { @@ -67,7 +68,7 @@ NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx NCURSES_CONST char *str) } #if NCURSES_XNAMES else { - j = -1; + int i; for_each_ext_boolean(i, tp) { const char *capname = ExtBoolname(tp, i, boolnames); if (same_name(str, capname)) { @@ -88,23 +89,23 @@ NCURSES_SP_NAME(tigetflag) (NCURSES_SP_DCLx NCURSES_CONST char *str) #if NCURSES_SP_FUNCS NCURSES_EXPORT(int) -tigetflag(NCURSES_CONST char *str) +tigetflag(const char *str) { return NCURSES_SP_NAME(tigetflag) (CURRENT_SCREEN, str); } #endif NCURSES_EXPORT(int) -NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str) +NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx const char *str) { - int i, j; int result = CANCELLED_NUMERIC; /* Solaris returns a -1 on error */ T((T_CALLED("tigetnum(%p, %s)"), (void *) SP_PARM, str)); if (HasTInfoTerminal(SP_PARM)) { - TERMTYPE *tp = &(TerminalOf(SP_PARM)->type); + TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM)); struct name_table_entry const *entry_ptr; + int j = -1; entry_ptr = _nc_find_type_entry(str, NUMBER, FALSE); if (entry_ptr != 0) { @@ -112,7 +113,7 @@ NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str) } #if NCURSES_XNAMES else { - j = -1; + int i; for_each_ext_number(i, tp) { const char *capname = ExtNumname(tp, i, numnames); if (same_name(str, capname)) { @@ -135,23 +136,23 @@ NCURSES_SP_NAME(tigetnum) (NCURSES_SP_DCLx NCURSES_CONST char *str) #if NCURSES_SP_FUNCS NCURSES_EXPORT(int) -tigetnum(NCURSES_CONST char *str) +tigetnum(const char *str) { return NCURSES_SP_NAME(tigetnum) (CURRENT_SCREEN, str); } #endif NCURSES_EXPORT(char *) -NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx NCURSES_CONST char *str) +NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx const char *str) { char *result = CANCELLED_STRING; - int i, j; T((T_CALLED("tigetstr(%p, %s)"), (void *) SP_PARM, str)); if (HasTInfoTerminal(SP_PARM)) { - TERMTYPE *tp = &(TerminalOf(SP_PARM)->type); + TERMTYPE2 *tp = &TerminalType(TerminalOf(SP_PARM)); struct name_table_entry const *entry_ptr; + int j = -1; entry_ptr = _nc_find_type_entry(str, STRING, FALSE); if (entry_ptr != 0) { @@ -159,7 +160,7 @@ NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx NCURSES_CONST char *str) } #if NCURSES_XNAMES else { - j = -1; + int i; for_each_ext_string(i, tp) { const char *capname = ExtStrname(tp, i, strnames); if (same_name(str, capname)) { @@ -180,7 +181,7 @@ NCURSES_SP_NAME(tigetstr) (NCURSES_SP_DCLx NCURSES_CONST char *str) #if NCURSES_SP_FUNCS NCURSES_EXPORT(char *) -tigetstr(NCURSES_CONST char *str) +tigetstr(const char *str) { return NCURSES_SP_NAME(tigetstr) (CURRENT_SCREEN, str); } diff --git a/deps/ncurses-6.3/ncurses/tinfo/lib_tparm.c b/deps/ncurses-6.3/ncurses/tinfo/lib_tparm.c new file mode 100644 index 0000000..72d8813 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_tparm.c @@ -0,0 +1,1221 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey, 1996 on * + ****************************************************************************/ + +/* + * tparm.c + * + */ + +#define entry _ncu_entry +#define ENTRY _ncu_ENTRY + +#include <curses.priv.h> + +#undef entry +#undef ENTRY + +#if HAVE_TSEARCH +#include <search.h> +#endif + +#include <ctype.h> +#include <tic.h> + +MODULE_ID("$Id: lib_tparm.c,v 1.134 2021/08/21 21:52:08 tom Exp $") + +/* + * char * + * tparm(string, ...) + * + * Substitute the given parameters into the given string by the following + * rules (taken from terminfo(5)): + * + * Cursor addressing and other strings requiring parame- + * ters in the terminal are described by a parameterized string + * capability, with escapes like %x in it. For example, to + * address the cursor, the 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 physical + * screen visible to the user, not to any unseen memory.) If + * the terminal has memory relative cursor addressing, that can + * be indicated by + * + * The parameter mechanism uses a stack and special % + * codes to manipulate it. Typically a sequence will push one + * of the parameters onto the stack and then print it in some + * format. Often more complex operations are necessary. + * + * The % encodings have the following meanings: + * + * %% outputs `%' + * %c print pop() like %c in printf() + * %s print pop() like %s in printf() + * %[[:]flags][width[.precision]][doxXs] + * as in printf, flags are [-+#] and space + * The ':' is used to avoid making %+ or %- + * patterns (see below). + * + * %p[1-9] push ith parm + * %P[a-z] set dynamic variable [a-z] to pop() + * %g[a-z] get dynamic variable [a-z] and push it + * %P[A-Z] set static variable [A-Z] to pop() + * %g[A-Z] get static variable [A-Z] and push it + * %l push strlen(pop) + * %'c' push char constant c + * %{nn} push integer constant nn + * + * %+ %- %* %/ %m + * arithmetic (%m is mod): push(pop() op pop()) + * %& %| %^ bit operations: push(pop() op pop()) + * %= %> %< logical operations: push(pop() op pop()) + * %A %O logical and & or operations for conditionals + * %! %~ unary operations push(op pop()) + * %i add 1 to first two parms (for ANSI terminals) + * + * %? expr %t thenpart %e elsepart %; + * if-then-else, %e elsepart is optional. + * else-if's are possible ala Algol 68: + * %? c1 %t b1 %e c2 %t b2 %e c3 %t b3 %e c4 %t b4 %e b5 %; + * + * For those of the above operators which are binary and not commutative, + * the stack works in the usual way, with + * %gx %gy %m + * resulting in x mod y, not the reverse. + */ + +NCURSES_EXPORT_VAR(int) _nc_tparm_err = 0; + +#define TPS(var) tps->var +#define popcount _nc_popcount /* workaround for NetBSD 6.0 defect */ + +#define get_tparm_state(term) \ + (term != NULL \ + ? &(term->tparm_state) \ + : &(_nc_prescreen.tparm_state)) + +#define isUPPER(c) ((c) >= 'A' && (c) <= 'Z') +#define isLOWER(c) ((c) >= 'a' && (c) <= 'z') +#define tc_BUMP() if (level < 0 && number < 2) number++ + +typedef struct { + const char *format; /* format-string can be used as cache-key */ + int tparm_type; /* bit-set for each string-parameter */ + int num_actual; + int num_parsed; + int num_popped; + TPARM_ARG param[NUM_PARM]; + char *p_is_s[NUM_PARM]; +} TPARM_DATA; + +#if HAVE_TSEARCH +#define MyCache _nc_globals.cached_tparm +#define MyCount _nc_globals.count_tparm +#if NO_LEAKS +static int which_tparm; +static TPARM_DATA **delete_tparm; +#endif +#endif /* HAVE_TSEARCH */ + +static char dummy[] = ""; /* avoid const-cast */ + +#if HAVE_TSEARCH +static int +cmp_format(const void *p, const void *q) +{ + const char *a = *(char *const *) p; + const char *b = *(char *const *) q; + return strcmp(a, b); +} +#endif + +#if NO_LEAKS +#if HAVE_TSEARCH +static void +visit_nodes(const void *nodep, const VISIT which, const int depth) +{ + (void) depth; + if (which == preorder || which == leaf) { + delete_tparm[which_tparm] = *(TPARM_DATA **) nodep; + which_tparm++; + } +} +#endif + +NCURSES_EXPORT(void) +_nc_free_tparm(void) +{ + TPARM_STATE *tps = get_tparm_state(cur_term); /* FIXME */ +#if HAVE_TSEARCH + if (MyCount != 0) { + delete_tparm = typeCalloc(TPARM_DATA *, MyCount); + which_tparm = 0; + twalk(MyCache, visit_nodes); + for (which_tparm = 0; which_tparm < MyCount; ++which_tparm) { + TPARM_DATA *ptr = delete_tparm[which_tparm]; + if (ptr != NULL) { + tdelete(ptr, &MyCache, cmp_format); + free((char *) ptr->format); + free(ptr); + } + } + which_tparm = 0; + twalk(MyCache, visit_nodes); + FreeAndNull(delete_tparm); + MyCount = 0; + which_tparm = 0; + } +#endif + FreeAndNull(TPS(out_buff)); + TPS(out_size) = 0; + TPS(out_used) = 0; + + FreeAndNull(TPS(fmt_buff)); + TPS(fmt_size) = 0; +} +#endif + +static int +tparm_error(TPARM_STATE *tps, const char *message) +{ + DEBUG(2, ("%s: %s", message, _nc_visbuf(TPS(tparam_base)))); + return ++_nc_tparm_err; +} + +#define get_space(tps, need) \ +{ \ + size_t need2get = need + TPS(out_used); \ + if (need2get > TPS(out_size)) { \ + TPS(out_size) = need2get * 2; \ + TYPE_REALLOC(char, TPS(out_size), TPS(out_buff)); \ + } \ +} + +#if NCURSES_EXPANDED +static NCURSES_INLINE void + (get_space) (TPARM_STATE *tps, size_t need) { + get_space(tps, need); +} + +#undef get_space +#endif + +#define save_text(tps, fmt, s, len) \ +{ \ + size_t s_len = (size_t) len + strlen(s) + strlen(fmt); \ + get_space(tps, s_len + 1); \ + _nc_SPRINTF(TPS(out_buff) + TPS(out_used), \ + _nc_SLIMIT(TPS(out_size) - TPS(out_used)) \ + fmt, s); \ + TPS(out_used) += strlen(TPS(out_buff) + TPS(out_used)); \ +} + +#if NCURSES_EXPANDED +static NCURSES_INLINE void + (save_text) (TPARM_STATE *tps, const char *fmt, const char *s, int len) { + save_text(tps, fmt, s, len); +} + +#undef save_text +#endif + +#define save_number(tps, fmt, number, len) \ +{ \ + size_t s_len = (size_t) len + 30 + strlen(fmt); \ + get_space(tps, s_len + 1); \ + _nc_SPRINTF(TPS(out_buff) + TPS(out_used), \ + _nc_SLIMIT(TPS(out_size) - TPS(out_used)) \ + fmt, number); \ + TPS(out_used) += strlen(TPS(out_buff) + TPS(out_used)); \ +} + +#if NCURSES_EXPANDED +static NCURSES_INLINE void + (save_number) (TPARM_STATE *tps, const char *fmt, int number, int len) { + save_number(tps, fmt, number, len); +} + +#undef save_number +#endif + +#define save_char(tps, c) \ +{ \ + get_space(tps, (size_t) 1); \ + TPS(out_buff)[TPS(out_used)++] = (char) ((c == 0) ? 0200 : c); \ +} + +#if NCURSES_EXPANDED +static NCURSES_INLINE void + (save_char) (TPARM_STATE *tps, int c) { + save_char(tps, c); +} + +#undef save_char +#endif + +#define npush(tps, x) \ +{ \ + if (TPS(stack_ptr) < STACKSIZE) { \ + TPS(stack)[TPS(stack_ptr)].num_type = TRUE; \ + TPS(stack)[TPS(stack_ptr)].data.num = x; \ + TPS(stack_ptr)++; \ + } else { \ + (void) tparm_error(tps, "npush: stack overflow"); \ + } \ +} + +#if NCURSES_EXPANDED +static NCURSES_INLINE void + (npush) (TPARM_STATE *tps, int x) { + npush(tps, x); +} + +#undef npush +#endif + +#define spush(tps, x) \ +{ \ + if (TPS(stack_ptr) < STACKSIZE) { \ + TPS(stack)[TPS(stack_ptr)].num_type = FALSE; \ + TPS(stack)[TPS(stack_ptr)].data.str = x; \ + TPS(stack_ptr)++; \ + } else { \ + (void) tparm_error(tps, "spush: stack overflow"); \ + } \ +} + +#if NCURSES_EXPANDED +static NCURSES_INLINE void + (spush) (TPARM_STATE *tps, char *x) { + spush(tps, x); +} + +#undef spush +#endif + +#define npop(tps) \ + ((TPS(stack_ptr)-- > 0) \ + ? ((TPS(stack)[TPS(stack_ptr)].num_type) \ + ? TPS(stack)[TPS(stack_ptr)].data.num \ + : 0) \ + : (tparm_error(tps, "npop: stack underflow"), \ + TPS(stack_ptr) = 0)) + +#if NCURSES_EXPANDED +static NCURSES_INLINE int + (npop) (TPARM_STATE *tps) { + return npop(tps); +} +#undef npop +#endif + +#define spop(tps) \ + ((TPS(stack_ptr)-- > 0) \ + ? ((!TPS(stack)[TPS(stack_ptr)].num_type \ + && TPS(stack)[TPS(stack_ptr)].data.str != 0) \ + ? TPS(stack)[TPS(stack_ptr)].data.str \ + : dummy) \ + : (tparm_error(tps, "spop: stack underflow"), \ + dummy)) + +#if NCURSES_EXPANDED +static NCURSES_INLINE char * + (spop) (TPARM_STATE *tps) { + return spop(tps); +} +#undef spop +#endif + +static NCURSES_INLINE const char * +parse_format(const char *s, char *format, int *len) +{ + *len = 0; + if (format != 0) { + bool done = FALSE; + bool allowminus = FALSE; + bool dot = FALSE; + bool err = FALSE; + char *fmt = format; + int my_width = 0; + int my_prec = 0; + int value = 0; + + *len = 0; + *format++ = '%'; + while (*s != '\0' && !done) { + switch (*s) { + case 'c': /* FALLTHRU */ + case 'd': /* FALLTHRU */ + case 'o': /* FALLTHRU */ + case 'x': /* FALLTHRU */ + case 'X': /* FALLTHRU */ + case 's': +#ifdef EXP_XTERM_1005 + case 'u': +#endif + *format++ = *s; + done = TRUE; + break; + case '.': + *format++ = *s++; + if (dot) { + err = TRUE; + } else { /* value before '.' is the width */ + dot = TRUE; + my_width = value; + } + value = 0; + break; + case '#': + *format++ = *s++; + break; + case ' ': + *format++ = *s++; + break; + case ':': + s++; + allowminus = TRUE; + break; + case '-': + if (allowminus) { + *format++ = *s++; + } else { + done = TRUE; + } + break; + default: + if (isdigit(UChar(*s))) { + value = (value * 10) + (*s - '0'); + if (value > 10000) + err = TRUE; + *format++ = *s++; + } else { + done = TRUE; + } + } + } + + /* + * If we found an error, ignore (and remove) the flags. + */ + if (err) { + my_width = my_prec = value = 0; + format = fmt; + *format++ = '%'; + *format++ = *s; + } + + /* + * Any value after '.' is the precision. If we did not see '.', then + * the value is the width. + */ + if (dot) + my_prec = value; + else + my_width = value; + + *format = '\0'; + /* return maximum string length in print */ + *len = (my_width > my_prec) ? my_width : my_prec; + } + return s; +} + +/* + * Analyze the string to see how many parameters we need from the varargs list, + * and what their types are. We will only accept string parameters if they + * appear as a %l or %s format following an explicit parameter reference (e.g., + * %p2%s). All other parameters are numbers. + * + * 'number' counts coarsely the number of pop's we see in the string, and + * 'popcount' shows the highest parameter number in the string. We would like + * to simply use the latter count, but if we are reading termcap strings, there + * may be cases that we cannot see the explicit parameter numbers. + */ +NCURSES_EXPORT(int) +_nc_tparm_analyze(TERMINAL *term, const char *string, char **p_is_s, int *popcount) +{ + TPARM_STATE *tps = get_tparm_state(term); + size_t len2; + int i; + int lastpop = -1; + int len; + int number = 0; + int level = -1; + const char *cp = string; + + if (cp == 0) + return 0; + + if ((len2 = strlen(cp)) + 2 > TPS(fmt_size)) { + TPS(fmt_size) += len2 + 2; + TPS(fmt_buff) = typeRealloc(char, TPS(fmt_size), TPS(fmt_buff)); + if (TPS(fmt_buff) == 0) + return 0; + } + + memset(p_is_s, 0, sizeof(p_is_s[0]) * NUM_PARM); + *popcount = 0; + + while ((cp - string) < (int) len2) { + if (*cp == '%') { + cp++; + cp = parse_format(cp, TPS(fmt_buff), &len); + switch (*cp) { + default: + break; + + case 'd': /* FALLTHRU */ + case 'o': /* FALLTHRU */ + case 'x': /* FALLTHRU */ + case 'X': /* FALLTHRU */ + case 'c': /* FALLTHRU */ +#ifdef EXP_XTERM_1005 + case 'u': +#endif + if (lastpop <= 0) { + tc_BUMP(); + } + level -= 1; + lastpop = -1; + break; + + case 'l': + case 's': + if (lastpop > 0) { + level -= 1; + p_is_s[lastpop - 1] = dummy; + } + tc_BUMP(); + break; + + case 'p': + cp++; + i = (UChar(*cp) - '0'); + if (i >= 0 && i <= NUM_PARM) { + ++level; + lastpop = i; + if (lastpop > *popcount) + *popcount = lastpop; + } + break; + + case 'P': + ++cp; + break; + + case 'g': + ++level; + cp++; + break; + + case S_QUOTE: + ++level; + cp += 2; + lastpop = -1; + break; + + case L_BRACE: + ++level; + cp++; + while (isdigit(UChar(*cp))) { + cp++; + } + break; + + case '+': + case '-': + case '*': + case '/': + case 'm': + case 'A': + case 'O': + case '&': + case '|': + case '^': + case '=': + case '<': + case '>': + tc_BUMP(); + level -= 1; /* pop 2, operate, push 1 */ + lastpop = -1; + break; + + case '!': + case '~': + tc_BUMP(); + lastpop = -1; + break; + + case 'i': + /* will add 1 to first (usually two) parameters */ + break; + } + } + if (*cp != '\0') + cp++; + } + + if (number > NUM_PARM) + number = NUM_PARM; + return number; +} + +/* + * Analyze the capability string, finding the number of parameters and their + * types. + * + * TODO: cache the result so that this is done once per capability per term. + */ +static int +tparm_setup(TERMINAL *term, const char *string, TPARM_DATA *result) +{ + TPARM_STATE *tps = get_tparm_state(term); + int rc = OK; + + TPS(out_used) = 0; + memset(result, 0, sizeof(*result)); + + if (string == NULL) { + TR(TRACE_CALLS, ("%s: format is null", TPS(tname))); + rc = ERR; + } else { +#if HAVE_TSEARCH + TPARM_DATA *fs; + void *ft; + + result->format = string; + if ((ft = tfind(result, &MyCache, cmp_format)) != 0) { + size_t len2; + fs = *(TPARM_DATA **) ft; + *result = *fs; + if ((len2 = strlen(string)) + 2 > TPS(fmt_size)) { + TPS(fmt_size) += len2 + 2; + TPS(fmt_buff) = typeRealloc(char, TPS(fmt_size), TPS(fmt_buff)); + if (TPS(fmt_buff) == 0) + return ERR; + } + } else +#endif + { + /* + * Find the highest parameter-number referred to in the format + * string. Use this value to limit the number of arguments copied + * from the variable-length argument list. + */ + result->num_parsed = _nc_tparm_analyze(term, string, + result->p_is_s, + &(result->num_popped)); + if (TPS(fmt_buff) == 0) { + TR(TRACE_CALLS, ("%s: error in analysis", TPS(tname))); + rc = ERR; + } else { + int n; + + if (result->num_parsed > NUM_PARM) + result->num_parsed = NUM_PARM; + if (result->num_popped > NUM_PARM) + result->num_popped = NUM_PARM; + result->num_actual = max(result->num_popped, result->num_parsed); + + for (n = 0; n < result->num_actual; ++n) { + if (result->p_is_s[n]) + result->tparm_type |= (1 << n); + } +#if HAVE_TSEARCH + if ((fs = typeCalloc(TPARM_DATA, 1)) != 0) { + *fs = *result; + if ((fs->format = strdup(string)) != 0) { + if (tsearch(fs, &MyCache, cmp_format) != 0) { + ++MyCount; + } else { + free(fs); + rc = ERR; + } + } else { + free(fs); + rc = ERR; + } + } else { + rc = ERR; + } +#endif + } + } + } + + return rc; +} + +/* + * A few caps (such as plab_norm) have string-valued parms. We'll have to + * assume that the caller knows the difference, since a char* and an int may + * not be the same size on the stack. The normal prototype for tparm uses 9 + * long's, which is consistent with our va_arg() usage. + */ +static void +tparm_copy_valist(TPARM_DATA *data, int use_TPARM_ARG, va_list ap) +{ + int i; + + for (i = 0; i < data->num_actual; i++) { + if (data->p_is_s[i] != 0) { + char *value = va_arg(ap, char *); + if (value == 0) + value = dummy; + data->p_is_s[i] = value; + data->param[i] = 0; + } else if (use_TPARM_ARG) { + data->param[i] = va_arg(ap, TPARM_ARG); + } else { + data->param[i] = (TPARM_ARG) va_arg(ap, int); + } + } +} + +/* + * This is a termcap compatibility hack. If there are no explicit pop + * operations in the string, load the stack in such a way that successive pops + * will grab successive parameters. That will make the expansion of (for + * example) \E[%d;%dH work correctly in termcap style, which means tparam() + * will expand termcap strings OK. + */ +static bool +tparm_tc_compat(TPARM_STATE *tps, TPARM_DATA *data) +{ + bool termcap_hack = FALSE; + + TPS(stack_ptr) = 0; + + if (data->num_popped == 0) { + int i; + + termcap_hack = TRUE; + for (i = data->num_parsed - 1; i >= 0; i--) { + if (data->p_is_s[i]) { + spush(tps, data->p_is_s[i]); + } else { + npush(tps, (int) data->param[i]); + } + } + } + return termcap_hack; +} + +#ifdef TRACE +static void +tparm_trace_call(TPARM_STATE *tps, const char *string, TPARM_DATA *data) +{ + if (USE_TRACEF(TRACE_CALLS)) { + int i; + for (i = 0; i < data->num_actual; i++) { + if (data->p_is_s[i] != 0) { + save_text(tps, ", %s", _nc_visbuf(data->p_is_s[i]), 0); + } else if ((long) data->param[i] > MAX_OF_TYPE(NCURSES_INT2) || + (long) data->param[i] < 0) { + _tracef("BUG: problem with tparm parameter #%d of %d", + i + 1, data->num_actual); + break; + } else { + save_number(tps, ", %d", (int) data->param[i], 0); + } + } + _tracef(T_CALLED("%s(%s%s)"), TPS(tname), _nc_visbuf(string), TPS(out_buff)); + TPS(out_used) = 0; + _nc_unlock_global(tracef); + } +} + +#else +#define tparm_trace_call(tps, string, data) /* nothing */ +#endif /* TRACE */ + +#define init_vars(name) \ + if (!name##_used) { \ + name##_used = TRUE; \ + memset(name##_vars, 0, sizeof(name##_vars)); \ + } + +static NCURSES_INLINE char * +tparam_internal(TPARM_STATE *tps, const char *string, TPARM_DATA *data) +{ + int number; + int len; + int level; + int x, y; + int i; + const char *s; + const char *cp = string; + size_t len2 = strlen(cp); + bool incremented_two = FALSE; + bool termcap_hack = tparm_tc_compat(tps, data); + /* + * SVr4 curses stores variables 'A' to 'Z' in the TERMINAL structure (so + * they are initialized once to zero), and variables 'a' to 'z' on the + * stack in tparm, referring to the former as "static" and the latter as + * "dynamic". However, it makes no check to ensure that the "dynamic" + * variables are initialized. + * + * Solaris xpg4 curses makes no distinction between the upper/lower, and + * stores the common set of 26 variables on the stack, without initializing + * them. + * + * In ncurses, both sets of variables are initialized on the first use. + */ + bool dynamic_used = FALSE; + int dynamic_vars[NUM_VARS]; + + tparm_trace_call(tps, string, data); + + while ((cp - string) < (int) len2) { + if (*cp != '%') { + save_char(tps, UChar(*cp)); + } else { + TPS(tparam_base) = cp++; + cp = parse_format(cp, TPS(fmt_buff), &len); + switch (*cp) { + default: + break; + case '%': + save_char(tps, '%'); + break; + + case 'd': /* FALLTHRU */ + case 'o': /* FALLTHRU */ + case 'x': /* FALLTHRU */ + case 'X': /* FALLTHRU */ + x = npop(tps); + save_number(tps, TPS(fmt_buff), x, len); + break; + + case 'c': /* FALLTHRU */ + x = npop(tps); + save_char(tps, x); + break; + +#ifdef EXP_XTERM_1005 + case 'u': + { + unsigned char target[10]; + unsigned source = (unsigned) npop(tps); + int rc = _nc_conv_to_utf8(target, source, (unsigned) + sizeof(target)); + int n; + for (n = 0; n < rc; ++n) { + save_char(tps, target[n]); + } + } + break; +#endif + case 'l': + s = spop(tps); + npush(tps, (int) strlen(s)); + break; + + case 's': + s = spop(tps); + save_text(tps, TPS(fmt_buff), s, len); + break; + + case 'p': + cp++; + i = (UChar(*cp) - '1'); + if (i >= 0 && i < NUM_PARM) { + if (data->p_is_s[i]) { + spush(tps, data->p_is_s[i]); + } else { + npush(tps, (int) data->param[i]); + } + } + break; + + case 'P': + cp++; + if (isUPPER(*cp)) { + i = (UChar(*cp) - 'A'); + TPS(static_vars)[i] = npop(tps); + } else if (isLOWER(*cp)) { + i = (UChar(*cp) - 'a'); + init_vars(dynamic); + dynamic_vars[i] = npop(tps); + } + break; + + case 'g': + cp++; + if (isUPPER(*cp)) { + i = (UChar(*cp) - 'A'); + npush(tps, TPS(static_vars)[i]); + } else if (isLOWER(*cp)) { + i = (UChar(*cp) - 'a'); + init_vars(dynamic); + npush(tps, dynamic_vars[i]); + } + break; + + case S_QUOTE: + cp++; + npush(tps, UChar(*cp)); + cp++; + break; + + case L_BRACE: + number = 0; + cp++; + while (isdigit(UChar(*cp))) { + number = (number * 10) + (UChar(*cp) - '0'); + cp++; + } + npush(tps, number); + break; + + case '+': + y = npop(tps); + x = npop(tps); + npush(tps, x + y); + break; + + case '-': + y = npop(tps); + x = npop(tps); + npush(tps, x - y); + break; + + case '*': + y = npop(tps); + x = npop(tps); + npush(tps, x * y); + break; + + case '/': + y = npop(tps); + x = npop(tps); + npush(tps, y ? (x / y) : 0); + break; + + case 'm': + y = npop(tps); + x = npop(tps); + npush(tps, y ? (x % y) : 0); + break; + + case 'A': + y = npop(tps); + x = npop(tps); + npush(tps, y && x); + break; + + case 'O': + y = npop(tps); + x = npop(tps); + npush(tps, y || x); + break; + + case '&': + y = npop(tps); + x = npop(tps); + npush(tps, x & y); + break; + + case '|': + y = npop(tps); + x = npop(tps); + npush(tps, x | y); + break; + + case '^': + y = npop(tps); + x = npop(tps); + npush(tps, x ^ y); + break; + + case '=': + y = npop(tps); + x = npop(tps); + npush(tps, x == y); + break; + + case '<': + y = npop(tps); + x = npop(tps); + npush(tps, x < y); + break; + + case '>': + y = npop(tps); + x = npop(tps); + npush(tps, x > y); + break; + + case '!': + x = npop(tps); + npush(tps, !x); + break; + + case '~': + x = npop(tps); + npush(tps, ~x); + break; + + case 'i': + /* + * Increment the first two parameters -- if they are numbers + * rather than strings. As a side effect, assign into the + * stack; if this is termcap, then the stack was populated + * using the termcap hack above rather than via the terminfo + * 'p' case. + */ + if (!incremented_two) { + incremented_two = TRUE; + if (data->p_is_s[0] == 0) { + data->param[0]++; + if (termcap_hack) + TPS(stack)[0].data.num = (int) data->param[0]; + } + if (data->p_is_s[1] == 0) { + data->param[1]++; + if (termcap_hack) + TPS(stack)[1].data.num = (int) data->param[1]; + } + } + break; + + case '?': + break; + + case 't': + x = npop(tps); + if (!x) { + /* scan forward for %e or %; at level zero */ + cp++; + level = 0; + while (*cp) { + if (*cp == '%') { + cp++; + if (*cp == '?') + level++; + else if (*cp == ';') { + if (level > 0) + level--; + else + break; + } else if (*cp == 'e' && level == 0) + break; + } + + if (*cp) + cp++; + } + } + break; + + case 'e': + /* scan forward for a %; at level zero */ + cp++; + level = 0; + while (*cp) { + if (*cp == '%') { + cp++; + if (*cp == '?') + level++; + else if (*cp == ';') { + if (level > 0) + level--; + else + break; + } + } + + if (*cp) + cp++; + } + break; + + case ';': + break; + + } /* endswitch (*cp) */ + } /* endelse (*cp == '%') */ + + if (*cp == '\0') + break; + + cp++; + } /* endwhile (*cp) */ + + get_space(tps, (size_t) 1); + TPS(out_buff)[TPS(out_used)] = '\0'; + + if (TPS(stack_ptr) && !_nc_tparm_err) { + DEBUG(2, ("tparm: stack has %d item%s on return", + TPS(stack_ptr), + TPS(stack_ptr) == 1 ? "" : "s")); + _nc_tparm_err++; + } + + T((T_RETURN("%s"), _nc_visbuf(TPS(out_buff)))); + return (TPS(out_buff)); +} + +#if NCURSES_TPARM_VARARGS + +NCURSES_EXPORT(char *) +tparm(const char *string, ...) +{ + TPARM_STATE *tps = get_tparm_state(cur_term); + TPARM_DATA myData; + char *result = NULL; + + _nc_tparm_err = 0; +#ifdef TRACE + tps->tname = "tparm"; +#endif /* TRACE */ + + if (tparm_setup(cur_term, string, &myData) == OK) { + va_list ap; + + va_start(ap, string); + tparm_copy_valist(&myData, TRUE, ap); + va_end(ap); + + result = tparam_internal(tps, string, &myData); + } + return result; +} + +#else /* !NCURSES_TPARM_VARARGS */ + +NCURSES_EXPORT(char *) +tparm(const char *string, + TPARM_ARG a1, + TPARM_ARG a2, + TPARM_ARG a3, + TPARM_ARG a4, + TPARM_ARG a5, + TPARM_ARG a6, + TPARM_ARG a7, + TPARM_ARG a8, + TPARM_ARG a9) +{ + TPARM_STATE *tps = get_tparm_state(cur_term); + TPARM_DATA myData; + char *result = NULL; + + _nc_tparm_err = 0; +#ifdef TRACE + tps->tname = "tparm"; +#endif /* TRACE */ + + if (tparm_setup(cur_term, string, &myData) == OK) { + + myData.param[0] = a1; + myData.param[1] = a2; + myData.param[2] = a3; + myData.param[3] = a4; + myData.param[4] = a5; + myData.param[5] = a6; + myData.param[6] = a7; + myData.param[7] = a8; + myData.param[8] = a9; + + result = tparam_internal(tps, string, &myData); + } + return result; +} + +#endif /* NCURSES_TPARM_VARARGS */ + +NCURSES_EXPORT(char *) +tiparm(const char *string, ...) +{ + TPARM_STATE *tps = get_tparm_state(cur_term); + TPARM_DATA myData; + char *result = NULL; + + _nc_tparm_err = 0; +#ifdef TRACE + tps->tname = "tiparm"; +#endif /* TRACE */ + + if (tparm_setup(cur_term, string, &myData) == OK) { + va_list ap; + + va_start(ap, string); + tparm_copy_valist(&myData, FALSE, ap); + va_end(ap); + + result = tparam_internal(tps, string, &myData); + } + return result; +} + +/* + * The internal-use flavor ensures that the parameters are numbers, not strings + */ +NCURSES_EXPORT(char *) +_nc_tiparm(int expected, const char *string, ...) +{ + TPARM_STATE *tps = get_tparm_state(cur_term); + TPARM_DATA myData; + char *result = NULL; + + _nc_tparm_err = 0; +#ifdef TRACE + tps->tname = "_nc_tiparm"; +#endif /* TRACE */ + + if (tparm_setup(cur_term, string, &myData) == OK + && myData.num_actual <= expected + && myData.tparm_type == 0) { + va_list ap; + + va_start(ap, string); + tparm_copy_valist(&myData, FALSE, ap); + va_end(ap); + + result = tparam_internal(tps, string, &myData); + } + return result; +} + +/* + * Improve tic's checks by resetting the terminfo "static variables" before + * calling functions which may update them. + */ +NCURSES_EXPORT(void) +_nc_reset_tparm(TERMINAL *term) +{ + TPARM_STATE *tps = get_tparm_state(term); + memset(TPS(static_vars), 0, sizeof(TPS(static_vars))); +} diff --git a/deps/ncurses-6.3/ncurses/tinfo/lib_tputs.c b/deps/ncurses-6.3/ncurses/tinfo/lib_tputs.c new file mode 100644 index 0000000..b9ca41c --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_tputs.c @@ -0,0 +1,454 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Juergen Pfeifer 2009 * + ****************************************************************************/ + +/* + * tputs.c + * delay_output() + * _nc_outch() + * tputs() + * + */ + +#include <curses.priv.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +#include <ctype.h> +#include <termcap.h> /* ospeed */ +#include <tic.h> + +MODULE_ID("$Id: lib_tputs.c,v 1.108 2021/05/08 23:27:40 tom Exp $") + +NCURSES_EXPORT_VAR(char) PC = 0; /* used by termcap library */ +NCURSES_EXPORT_VAR(NCURSES_OSPEED) ospeed = 0; /* used by termcap library */ + +NCURSES_EXPORT_VAR(int) _nc_nulls_sent = 0; /* used by 'tack' program */ + +#if NCURSES_NO_PADDING +NCURSES_EXPORT(void) +_nc_set_no_padding(SCREEN *sp) +{ + bool no_padding = (getenv("NCURSES_NO_PADDING") != 0); + + if (sp) + sp->_no_padding = no_padding; + else + _nc_prescreen._no_padding = no_padding; + + TR(TRACE_CHARPUT | TRACE_MOVE, ("padding will%s be used", + GetNoPadding(sp) ? " not" : "")); +} +#endif + +#if NCURSES_SP_FUNCS +#define SetOutCh(func) if (SP_PARM) SP_PARM->_outch = func; else _nc_prescreen._outch = func +#define GetOutCh() (SP_PARM ? SP_PARM->_outch : _nc_prescreen._outch) +#else +#define SetOutCh(func) static_outch = func +#define GetOutCh() static_outch +static NCURSES_SP_OUTC static_outch = NCURSES_SP_NAME(_nc_outch); +#endif + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(delay_output) (NCURSES_SP_DCLx int ms) +{ + T((T_CALLED("delay_output(%p,%d)"), (void *) SP_PARM, ms)); + + if (!HasTInfoTerminal(SP_PARM)) + returnCode(ERR); + + if (no_pad_char) { + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); + napms(ms); + } else { + NCURSES_SP_OUTC my_outch = GetOutCh(); + register int nullcount; + + nullcount = (ms * _nc_baudrate(ospeed)) / (BAUDBYTE * 1000); + for (_nc_nulls_sent += nullcount; nullcount > 0; nullcount--) + my_outch(NCURSES_SP_ARGx PC); + if (my_outch == NCURSES_SP_NAME(_nc_outch)) + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); + } + + returnCode(OK); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +delay_output(int ms) +{ + return NCURSES_SP_NAME(delay_output) (CURRENT_SCREEN, ms); +} +#endif + +NCURSES_EXPORT(void) +NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_DCL0) +{ + T((T_CALLED("_nc_flush(%p)"), (void *) SP_PARM)); + if (SP_PARM != 0 && SP_PARM->_ofd >= 0) { + TR(TRACE_CHARPUT, ("ofd:%d inuse:%lu buffer:%p", + SP_PARM->_ofd, + (unsigned long) SP_PARM->out_inuse, + SP_PARM->out_buffer)); + if (SP_PARM->out_inuse) { + char *buf = SP_PARM->out_buffer; + size_t amount = SP->out_inuse; + + SP->out_inuse = 0; + TR(TRACE_CHARPUT, ("flushing %ld/%ld bytes", + (unsigned long) amount, _nc_outchars)); + while (amount) { + ssize_t res = write(SP_PARM->_ofd, buf, amount); + if (res > 0) { + /* if the write was incomplete, try again */ + amount -= (size_t) res; + buf += res; + } else if (errno == EAGAIN) { + continue; + } else if (errno == EINTR) { + continue; + } else { + break; /* an error we can not recover from */ + } + } + } else if (SP_PARM->out_buffer == 0) { + TR(TRACE_CHARPUT, ("flushing stdout")); + fflush(stdout); + } + } else { + TR(TRACE_CHARPUT, ("flushing stdout")); + fflush(stdout); + } + returnVoid; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(void) +_nc_flush(void) +{ + NCURSES_SP_NAME(_nc_flush) (CURRENT_SCREEN); +} +#endif + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_DCLx int ch) +{ + int rc = OK; + + COUNT_OUTCHARS(1); + + if (HasTInfoTerminal(SP_PARM) + && SP_PARM != 0) { + if (SP_PARM->out_buffer != 0) { + if (SP_PARM->out_inuse + 1 >= SP_PARM->out_limit) + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); + SP_PARM->out_buffer[SP_PARM->out_inuse++] = (char) ch; + } else { + char tmp = (char) ch; + /* + * POSIX says write() is safe in a signal handler, but the + * buffered I/O is not. + */ + if (write(fileno(NC_OUTPUT(SP_PARM)), &tmp, (size_t) 1) == -1) + rc = ERR; + } + } else { + char tmp = (char) ch; + if (write(fileno(stdout), &tmp, (size_t) 1) == -1) + rc = ERR; + } + return rc; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +_nc_outch(int ch) +{ + return NCURSES_SP_NAME(_nc_outch) (CURRENT_SCREEN, ch); +} +#endif + +/* + * This is used for the putp special case. + */ +NCURSES_EXPORT(int) +NCURSES_SP_NAME(_nc_putchar) (NCURSES_SP_DCLx int ch) +{ + (void) SP_PARM; + return putchar(ch); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +_nc_putchar(int ch) +{ + return putchar(ch); +} +#endif + +/* + * putp is special - per documentation it calls tputs with putchar as the + * parameter for outputting characters. This means that it uses stdio, which + * is not signal-safe. Applications call this entrypoint; we do not call it + * from within the library. + */ +NCURSES_EXPORT(int) +NCURSES_SP_NAME(putp) (NCURSES_SP_DCLx const char *string) +{ + return NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + string, 1, NCURSES_SP_NAME(_nc_putchar)); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +putp(const char *string) +{ + return NCURSES_SP_NAME(putp) (CURRENT_SCREEN, string); +} +#endif + +/* + * Use these entrypoints rather than "putp" within the library. + */ +NCURSES_EXPORT(int) +NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_DCLx + const char *name GCC_UNUSED, + const char *string) +{ + int rc = ERR; + + if (string != 0) { + TPUTS_TRACE(name); + rc = NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + string, 1, NCURSES_SP_NAME(_nc_outch)); + } + return rc; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +_nc_putp(const char *name, const char *string) +{ + return NCURSES_SP_NAME(_nc_putp) (CURRENT_SCREEN, name, string); +} +#endif + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(tputs) (NCURSES_SP_DCLx + const char *string, + int affcnt, + NCURSES_SP_OUTC outc) +{ + NCURSES_SP_OUTC my_outch = GetOutCh(); + bool always_delay = FALSE; + bool normal_delay = FALSE; + int number; +#if BSD_TPUTS + int trailpad; +#endif /* BSD_TPUTS */ + +#ifdef TRACE + if (USE_TRACEF(TRACE_TPUTS)) { + char addrbuf[32]; + TR_FUNC_BFR(1); + + if (outc == NCURSES_SP_NAME(_nc_outch)) { + _nc_STRCPY(addrbuf, "_nc_outch", sizeof(addrbuf)); + } else { + _nc_SPRINTF(addrbuf, _nc_SLIMIT(sizeof(addrbuf)) "%s", + TR_FUNC_ARG(0, outc)); + } + if (_nc_tputs_trace) { + _tracef("tputs(%s = %s, %d, %s) called", _nc_tputs_trace, + _nc_visbuf(string), affcnt, addrbuf); + } else { + _tracef("tputs(%s, %d, %s) called", _nc_visbuf(string), affcnt, addrbuf); + } + TPUTS_TRACE(NULL); + _nc_unlock_global(tracef); + } +#endif /* TRACE */ + + if (!VALID_STRING(string)) + return ERR; + + if (SP_PARM != 0 && HasTInfoTerminal(SP_PARM)) { + if ( +#if NCURSES_SP_FUNCS + (SP_PARM != 0 && SP_PARM->_term == 0) +#else + cur_term == 0 +#endif + ) { + always_delay = FALSE; + normal_delay = TRUE; + } else { + always_delay = (string == bell) || (string == flash_screen); + normal_delay = + !xon_xoff + && padding_baud_rate +#if NCURSES_NO_PADDING + && !GetNoPadding(SP_PARM) +#endif + && (_nc_baudrate(ospeed) >= padding_baud_rate); + } + } +#if BSD_TPUTS + /* + * This ugly kluge deals with the fact that some ancient BSD programs + * (like nethack) actually do the likes of tputs("50") to get delays. + */ + trailpad = 0; + if (isdigit(UChar(*string))) { + while (isdigit(UChar(*string))) { + trailpad = trailpad * 10 + (*string - '0'); + string++; + } + trailpad *= 10; + if (*string == '.') { + string++; + if (isdigit(UChar(*string))) { + trailpad += (*string - '0'); + string++; + } + while (isdigit(UChar(*string))) + string++; + } + + if (*string == '*') { + trailpad *= affcnt; + string++; + } + } +#endif /* BSD_TPUTS */ + + SetOutCh(outc); /* redirect delay_output() */ + while (*string) { + if (*string != '$') + (*outc) (NCURSES_SP_ARGx *string); + else { + string++; + if (*string != '<') { + (*outc) (NCURSES_SP_ARGx '$'); + if (*string) + (*outc) (NCURSES_SP_ARGx *string); + } else { + bool mandatory; + + string++; + if ((!isdigit(UChar(*string)) && *string != '.') + || !strchr(string, '>')) { + (*outc) (NCURSES_SP_ARGx '$'); + (*outc) (NCURSES_SP_ARGx '<'); + continue; + } + + number = 0; + while (isdigit(UChar(*string))) { + number = number * 10 + (*string - '0'); + string++; + } + number *= 10; + if (*string == '.') { + string++; + if (isdigit(UChar(*string))) { + number += (*string - '0'); + string++; + } + while (isdigit(UChar(*string))) + string++; + } + + mandatory = FALSE; + while (*string == '*' || *string == '/') { + if (*string == '*') { + number *= affcnt; + string++; + } else { /* if (*string == '/') */ + mandatory = TRUE; + string++; + } + } + + if (number > 0 + && (always_delay + || normal_delay + || mandatory)) + NCURSES_SP_NAME(delay_output) (NCURSES_SP_ARGx number / 10); + + } /* endelse (*string == '<') */ + } /* endelse (*string == '$') */ + + if (*string == '\0') + break; + + string++; + } + +#if BSD_TPUTS + /* + * Emit any BSD-style prefix padding that we've accumulated now. + */ + if (trailpad > 0 + && (always_delay || normal_delay)) + NCURSES_SP_NAME(delay_output) (NCURSES_SP_ARGx trailpad / 10); +#endif /* BSD_TPUTS */ + + SetOutCh(my_outch); + return OK; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +_nc_outc_wrapper(SCREEN *sp, int c) +{ + if (0 == sp) { + return fputc(c, stdout); + } else { + return sp->jump(c); + } +} + +NCURSES_EXPORT(int) +tputs(const char *string, int affcnt, int (*outc) (int)) +{ + SetSafeOutcWrapper(outc); + return NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx string, affcnt, _nc_outc_wrapper); +} +#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/lib_ttyflags.c b/deps/ncurses-6.3/ncurses/tinfo/lib_ttyflags.c similarity index 82% rename from deps/ncurses-5.9/ncurses/tinfo/lib_ttyflags.c rename to deps/ncurses-6.3/ncurses/tinfo/lib_ttyflags.c index 663a068..6363a80 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/lib_ttyflags.c +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_ttyflags.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -41,42 +42,42 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_ttyflags.c,v 1.27 2010/12/25 23:43:58 tom Exp $") +MODULE_ID("$Id: lib_ttyflags.c,v 1.36 2020/09/05 22:54:47 tom Exp $") NCURSES_EXPORT(int) NCURSES_SP_NAME(_nc_get_tty_mode) (NCURSES_SP_DCLx TTY * buf) { + TERMINAL *termp = TerminalOf(SP_PARM); int result = OK; - if (buf == 0 || SP_PARM == 0) { + if (buf == 0 || termp == 0) { result = ERR; } else { - TERMINAL *termp = TerminalOf(SP_PARM); - if (0 == termp) { - result = ERR; - } else { #ifdef USE_TERM_DRIVER - result = CallDriver_2(SP_PARM, sgmode, FALSE, buf); + if (SP_PARM != 0) { + result = CallDriver_2(SP_PARM, td_sgmode, FALSE, buf); + } else { + result = ERR; + } #else - for (;;) { - if (GET_TTY(termp->Filedes, buf) != 0) { - if (errno == EINTR) - continue; - result = ERR; - } - break; + for (;;) { + if (GET_TTY(termp->Filedes, buf) != 0) { + if (errno == EINTR) + continue; + result = ERR; } -#endif + break; } - - if (result == ERR) - memset(buf, 0, sizeof(*buf)); +#endif TR(TRACE_BITS, ("_nc_get_tty_mode(%d): %s", termp ? termp->Filedes : -1, _nc_trace_ttymode(buf))); } + if (result == ERR && buf != 0) + memset(buf, 0, sizeof(*buf)); + return (result); } @@ -102,10 +103,14 @@ NCURSES_SP_NAME(_nc_set_tty_mode) (NCURSES_SP_DCLx TTY * buf) result = ERR; } else { #ifdef USE_TERM_DRIVER - result = CallDriver_2(SP_PARM, sgmode, TRUE, buf); + result = CallDriver_2(SP_PARM, td_sgmode, TRUE, buf); #else for (;;) { - if (SET_TTY(termp->Filedes, buf) != 0) { + if ((SET_TTY(termp->Filedes, buf) != 0) +#if USE_KLIBC_KBD + && !NC_ISATTY(termp->Filedes) +#endif + ) { if (errno == EINTR) continue; if ((errno == ENOTTY) && (SP_PARM != 0)) @@ -137,11 +142,12 @@ NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_DCL0) int rc = ERR; TERMINAL *termp = TerminalOf(SP_PARM); - T((T_CALLED("def_shell_mode(%p)"), (void *) SP_PARM)); + T((T_CALLED("def_shell_mode(%p) ->term %p"), + (void *) SP_PARM, (void *) termp)); if (termp != 0) { #ifdef USE_TERM_DRIVER - rc = CallDriver_2(SP_PARM, mode, FALSE, TRUE); + rc = CallDriver_2(SP_PARM, td_mode, FALSE, TRUE); #else /* * If XTABS was on, remove the tab and backtab capabilities. @@ -150,6 +156,8 @@ NCURSES_SP_NAME(def_shell_mode) (NCURSES_SP_DCL0) #ifdef TERMIOS if (termp->Ottyb.c_oflag & OFLAGS_TABS) tab = back_tab = NULL; +#elif defined(EXP_WIN32_DRIVER) + /* noop */ #else if (termp->Ottyb.sg_flags & XTABS) tab = back_tab = NULL; @@ -175,11 +183,11 @@ NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_DCL0) int rc = ERR; TERMINAL *termp = TerminalOf(SP_PARM); - T((T_CALLED("def_prog_mode(%p)"), (void *) SP_PARM)); + T((T_CALLED("def_prog_mode(%p) ->term %p"), (void *) SP_PARM, (void *) termp)); if (termp != 0) { #ifdef USE_TERM_DRIVER - rc = CallDriver_2(SP_PARM, mode, TRUE, TRUE); + rc = CallDriver_2(SP_PARM, td_mode, TRUE, TRUE); #else /* * Turn off the XTABS bit in the tty structure if it was on. @@ -187,6 +195,8 @@ NCURSES_SP_NAME(def_prog_mode) (NCURSES_SP_DCL0) if (_nc_get_tty_mode(&termp->Nttyb) == OK) { #ifdef TERMIOS termp->Nttyb.c_oflag &= (unsigned) (~OFLAGS_TABS); +#elif defined(EXP_WIN32_DRIVER) + /* noop */ #else termp->Nttyb.sg_flags &= (unsigned) (~XTABS); #endif @@ -211,17 +221,16 @@ NCURSES_SP_NAME(reset_prog_mode) (NCURSES_SP_DCL0) int rc = ERR; TERMINAL *termp = TerminalOf(SP_PARM); - T((T_CALLED("reset_prog_mode(%p)"), (void *) SP_PARM)); + T((T_CALLED("reset_prog_mode(%p) ->term %p"), (void *) SP_PARM, (void *) termp)); if (termp != 0) { #ifdef USE_TERM_DRIVER - rc = CallDriver_2(SP_PARM, mode, TRUE, FALSE); + rc = CallDriver_2(SP_PARM, td_mode, TRUE, FALSE); #else if (_nc_set_tty_mode(&termp->Nttyb) == OK) { if (SP_PARM) { if (SP_PARM->_keypad_on) _nc_keypad(SP_PARM, TRUE); - NC_BUFFERED(SP_PARM, TRUE); } rc = OK; } @@ -244,16 +253,16 @@ NCURSES_SP_NAME(reset_shell_mode) (NCURSES_SP_DCL0) int rc = ERR; TERMINAL *termp = TerminalOf(SP_PARM); - T((T_CALLED("reset_shell_mode(%p)"), (void *) SP_PARM)); + T((T_CALLED("reset_shell_mode(%p) ->term %p"), + (void *) SP_PARM, (void *) termp)); if (termp != 0) { #ifdef USE_TERM_DRIVER - rc = CallDriver_2(SP_PARM, mode, FALSE, FALSE); + rc = CallDriver_2(SP_PARM, td_mode, FALSE, FALSE); #else if (SP_PARM) { _nc_keypad(SP_PARM, FALSE); _nc_flush(); - NC_BUFFERED(SP_PARM, FALSE); } rc = _nc_set_tty_mode(&termp->Ottyb); #endif diff --git a/deps/ncurses-6.3/ncurses/tinfo/lib_win32con.c b/deps/ncurses-6.3/ncurses/tinfo/lib_win32con.c new file mode 100644 index 0000000..2bcea39 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_win32con.c @@ -0,0 +1,1256 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * + * and: Thomas E. Dickey * + ****************************************************************************/ + +/* + * TODO - GetMousePos(POINT * result) from ntconio.c + */ + +#include <curses.priv.h> + +MODULE_ID("$Id: lib_win32con.c,v 1.7 2021/09/04 10:54:35 tom Exp $") + +#ifdef _NC_WINDOWS + +#ifdef _NC_MINGW +#include <wchar.h> +#else +#include <tchar.h> +#endif + +#include <io.h> + +#if USE_WIDEC_SUPPORT +#define write_screen WriteConsoleOutputW +#define read_screen ReadConsoleOutputW +#else +#define write_screen WriteConsoleOutput +#define read_screen ReadConsoleOutput +#endif + +static BOOL IsConsoleHandle(HANDLE hdl); +static bool save_original_screen(void); +static bool restore_original_screen(void) GCC_UNUSED; +static bool read_screen_data(void); +static int Adjust(int milliseconds, int diff); +static int decode_mouse(SCREEN *sp, int mask); +static bool handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer); +static int rkeycompare(const void *el1, const void *el2); +static int keycompare(const void *el1, const void *el2); +static int MapKey(WORD vKey); +static int AnsiKey(WORD vKey); + +static ULONGLONG tdiff(FILETIME fstart, FILETIME fend); + +#define GenMap(vKey,key) MAKELONG(key, vKey) +static const LONG keylist[] = +{ + GenMap(VK_PRIOR, KEY_PPAGE), + GenMap(VK_NEXT, KEY_NPAGE), + GenMap(VK_END, KEY_END), + GenMap(VK_HOME, KEY_HOME), + GenMap(VK_LEFT, KEY_LEFT), + GenMap(VK_UP, KEY_UP), + GenMap(VK_RIGHT, KEY_RIGHT), + GenMap(VK_DOWN, KEY_DOWN), + GenMap(VK_DELETE, KEY_DC), + GenMap(VK_INSERT, KEY_IC) +}; +static const LONG ansi_keys[] = +{ + GenMap(VK_PRIOR, 'I'), + GenMap(VK_NEXT, 'Q'), + GenMap(VK_END, 'O'), + GenMap(VK_HOME, 'H'), + GenMap(VK_LEFT, 'K'), + GenMap(VK_UP, 'H'), + GenMap(VK_RIGHT, 'M'), + GenMap(VK_DOWN, 'P'), + GenMap(VK_DELETE, 'S'), + GenMap(VK_INSERT, 'R') +}; +#define array_length(a) (sizeof(a)/sizeof(a[0])) +#define N_INI ((int)array_length(keylist)) +#define FKEYS 24 +#define MAPSIZE (FKEYS + N_INI) + +/* A process can only have a single console, so it is safe + to maintain all the information about it in a single + static structure. + */ +NCURSES_EXPORT_VAR(ConsoleInfo) _nc_CONSOLE; +static bool console_initialized = FALSE; + +#define EnsureInit() (void)(console_initialized ? TRUE : _nc_console_checkinit(TRUE, TRUE)) + +#define REQUIRED_MAX_V (DWORD)10 +#define REQUIRED_MIN_V (DWORD)0 +#define REQUIRED_BUILD (DWORD)17763 +/* + This function returns 0 if the Windows version has no support for + the modern Console interface, otherwise it returns 1 + */ +NCURSES_EXPORT(int) +_nc_console_vt_supported(void) +{ + OSVERSIONINFO osvi; + int res = 0; + + T((T_CALLED("lib_win32con::_nc_console_vt_supported"))); + ZeroMemory(&osvi, sizeof(OSVERSIONINFO)); + osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO); + + GetVersionEx(&osvi); + T(("GetVersionEx returnedMajor=%ld, Minor=%ld, Build=%ld", + osvi.dwMajorVersion, + osvi.dwMinorVersion, + osvi.dwBuildNumber)); + if (osvi.dwMajorVersion >= REQUIRED_MAX_V) { + if (osvi.dwMajorVersion == REQUIRED_MAX_V) { + if (((osvi.dwMinorVersion == REQUIRED_MIN_V) && + (osvi.dwBuildNumber >= REQUIRED_BUILD)) || + ((osvi.dwMinorVersion > REQUIRED_MIN_V))) + res = 1; + } else + res = 1; + } + returnCode(res); +} + +NCURSES_EXPORT(void) +_nc_console_size(int* Lines, int* Cols) +{ + EnsureInit(); + if (Lines != NULL && Cols != NULL) { + if (WINCONSOLE.buffered) { + *Lines = (int) (WINCONSOLE.SBI.dwSize.Y); + *Cols = (int) (WINCONSOLE.SBI.dwSize.X); + } else { + *Lines = (int) (WINCONSOLE.SBI.srWindow.Bottom + 1 - + WINCONSOLE.SBI.srWindow.Top); + *Cols = (int) (WINCONSOLE.SBI.srWindow.Right + 1 - + WINCONSOLE.SBI.srWindow.Left); + } + } +} + +/* Convert a file descriptor into a HANDLE + That's not necessarily a console HANDLE +*/ +NCURSES_EXPORT(HANDLE) +_nc_console_handle(int fd) +{ + intptr_t value = _get_osfhandle(fd); + return (HANDLE) value; +} + +/* Validate that a HANDLE is actually a + console HANDLE +*/ +static BOOL +IsConsoleHandle(HANDLE hdl) +{ + DWORD dwFlag = 0; + BOOL result = FALSE; + + T((T_CALLED("lib_win32con::IsConsoleHandle(HANDLE=%p"), hdl)); + + EnsureInit(); + + if (!GetConsoleMode(hdl, &dwFlag)) { + T(("GetConsoleMode failed")); + } else { + result = TRUE; + } + + returnBool(result); +} + +/* This is used when running in terminfo mode to discover, + whether or not the "terminal" is actually a Windows + Console. It is the responsibility of the console to deal + with the terminal escape sequences that are sent by + terminfo. + */ +NCURSES_EXPORT(int) +_nc_console_test(int fd) +{ + int code = 0; + HANDLE hdl = INVALID_HANDLE_VALUE; + T((T_CALLED("lib_win32con::_nc_console_test(%d)"), fd)); + hdl = _nc_console_handle(fd); + code = (int) IsConsoleHandle(hdl); + returnCode(code); +} + +#define OutHandle() ((WINCONSOLE.isTermInfoConsole || WINCONSOLE.progMode) ? WINCONSOLE.hdl : WINCONSOLE.out) + +NCURSES_EXPORT(void) +_nc_console_selectActiveHandle(void) +{ + if (WINCONSOLE.lastOut != WINCONSOLE.hdl) { + WINCONSOLE.lastOut = WINCONSOLE.hdl; + SetConsoleActiveScreenBuffer(WINCONSOLE.lastOut); + } +} + +NCURSES_EXPORT(HANDLE) +_nc_console_fd2handle(int fd) +{ + HANDLE hdl = _nc_console_handle(fd); + if (hdl==WINCONSOLE.inp) { + T(("lib_win32con:validateHandle %d -> WINCONSOLE.inp", fd)); + } else if (hdl==WINCONSOLE.hdl) { + T(("lib_win32con:validateHandle %d -> WINCONSOLE.hdl", fd)); + } else if (hdl==WINCONSOLE.out) { + T(("lib_win32con:validateHandle %d -> WINCONSOLE.out", fd)); + } else { + T(("lib_win32con:validateHandle %d maps to unknown HANDLE", fd)); + hdl = INVALID_HANDLE_VALUE; + } +#if 1 + assert(hdl != INVALID_HANDLE_VALUE); +#endif + if (hdl != INVALID_HANDLE_VALUE) { + if (hdl != WINCONSOLE.inp && (!WINCONSOLE.isTermInfoConsole && WINCONSOLE.progMode)) { + if (hdl==WINCONSOLE.out && hdl!=WINCONSOLE.hdl) { + T(("lib_win32con:validateHandle forcing WINCONSOLE.out -> WINCONSOLE.hdl")); + hdl = WINCONSOLE.hdl; + } + } + } + return hdl; +} + +NCURSES_EXPORT(int) +_nc_console_setmode(HANDLE hdl, const TTY *arg) +{ + DWORD dwFlag = 0; + int code = ERR; + HANDLE alt; + + if (arg) { +#ifdef TRACE + TTY TRCTTY; +#define TRCTTYOUT(flag) TRCTTY.dwFlagOut = flag +#define TRCTTYIN(flag) TRCTTY.dwFlagIn = flag +#else +#define TRCTTYOUT(flag) +#define TRCTTYIN(flag) +#endif + T(("lib_win32con:_nc_console_setmode %s", _nc_trace_ttymode(arg))); + if (hdl==WINCONSOLE.inp) { + dwFlag = arg->dwFlagIn | ENABLE_MOUSE_INPUT | VT_FLAG_IN; + if (WINCONSOLE.isTermInfoConsole) + dwFlag |= (VT_FLAG_IN); + else + dwFlag &= (DWORD) ~(VT_FLAG_IN); + TRCTTYIN(dwFlag); + SetConsoleMode(hdl, dwFlag); + + alt = OutHandle(); + dwFlag = arg->dwFlagOut; + if (WINCONSOLE.isTermInfoConsole) + dwFlag |= (VT_FLAG_OUT); + else + dwFlag |= (VT_FLAG_OUT); + TRCTTYOUT(dwFlag); + SetConsoleMode(alt, dwFlag); + } else { + dwFlag = arg->dwFlagOut; + if (WINCONSOLE.isTermInfoConsole) + dwFlag |= (VT_FLAG_OUT); + else + dwFlag |= (VT_FLAG_OUT); + TRCTTYOUT(dwFlag); + SetConsoleMode(hdl, dwFlag); + + alt = WINCONSOLE.inp; + dwFlag = arg->dwFlagIn | ENABLE_MOUSE_INPUT; + if (WINCONSOLE.isTermInfoConsole) + dwFlag |= (VT_FLAG_IN); + else + dwFlag &= (DWORD) ~(VT_FLAG_IN); + TRCTTYIN(dwFlag); + SetConsoleMode(alt, dwFlag); + T(("effective mode set %s", _nc_trace_ttymode(&TRCTTY))); + } + code = OK; + } + return(code); +} + +NCURSES_EXPORT(int) +_nc_console_getmode(HANDLE hdl, TTY *arg) +{ + int code = ERR; + + if (arg) { + DWORD dwFlag = 0; + HANDLE alt; + + if (hdl==WINCONSOLE.inp) { + if(GetConsoleMode(hdl, &dwFlag)) { + arg->dwFlagIn = dwFlag; + alt = OutHandle(); + if (GetConsoleMode(alt, &dwFlag)) { + arg->dwFlagOut = dwFlag; + code = OK; + } + } + } else { + if (GetConsoleMode(hdl, &dwFlag)) { + arg->dwFlagOut = dwFlag; + alt = WINCONSOLE.inp; + if (GetConsoleMode(alt, &dwFlag)) { + arg->dwFlagIn = dwFlag; + code = OK; + } + } + } + } + T(("lib_win32con:_nc_console_getmode %s", _nc_trace_ttymode(arg))); + return(code); +} + +NCURSES_EXPORT(int) +_nc_console_flush(HANDLE hdl) +{ + int code = OK; + + T((T_CALLED("lib_win32con::_nc_console_flush(hdl=%p"), hdl)); + + if (hdl != INVALID_HANDLE_VALUE) { + if (hdl == WINCONSOLE.hdl || + hdl == WINCONSOLE.inp || + hdl == WINCONSOLE.out) { + if (!FlushConsoleInputBuffer(WINCONSOLE.inp)) + code = ERR; + } else { + code = ERR; + T(("_nc_console_flush not requesting a handle owned by console.")); + } + } + returnCode(code); +} + +NCURSES_EXPORT(WORD) +_nc_console_MapColor(bool fore, int color) +{ + static const int _cmap[] = + {0, 4, 2, 6, 1, 5, 3, 7}; + int a; + if (color < 0 || color > 7) + a = fore ? 7 : 0; + else + a = _cmap[color]; + if (!fore) + a = a << 4; + return (WORD) a; +} + + +/* + * Attempt to save the screen contents. PDCurses does this if + * PDC_RESTORE_SCREEN is set, giving the same visual appearance on + * restoration as if the library had allocated a console buffer. MSDN + * says that the data which can be read is limited to 64Kb (and may be + * less). + */ +static bool +save_original_screen(void) +{ + bool result = FALSE; + + WINCONSOLE.save_region.Top = 0; + WINCONSOLE.save_region.Left = 0; + WINCONSOLE.save_region.Bottom = (SHORT) (WINCONSOLE.SBI.dwSize.Y - 1); + WINCONSOLE.save_region.Right = (SHORT) (WINCONSOLE.SBI.dwSize.X - 1); + + if (read_screen_data()) { + result = TRUE; + } else { + + WINCONSOLE.save_region.Top = WINCONSOLE.SBI.srWindow.Top; + WINCONSOLE.save_region.Left = WINCONSOLE.SBI.srWindow.Left; + WINCONSOLE.save_region.Bottom = WINCONSOLE.SBI.srWindow.Bottom; + WINCONSOLE.save_region.Right = WINCONSOLE.SBI.srWindow.Right; + + WINCONSOLE.window_only = TRUE; + + if (read_screen_data()) { + result = TRUE; + } + } + + T(("... save original screen contents %s", result ? "ok" : "err")); + return result; +} + +static bool +restore_original_screen(void) +{ + COORD bufferCoord; + bool result = FALSE; + SMALL_RECT save_region = WINCONSOLE.save_region; + + T(("... restoring %s", + WINCONSOLE.window_only ? "window" : "entire buffer")); + + bufferCoord.X = (SHORT) (WINCONSOLE.window_only ? + WINCONSOLE.SBI.srWindow.Left : 0); + bufferCoord.Y = (SHORT) (WINCONSOLE.window_only ? + WINCONSOLE.SBI.srWindow.Top : 0); + + if (write_screen(WINCONSOLE.hdl, + WINCONSOLE.save_screen, + WINCONSOLE.save_size, + bufferCoord, + &save_region)) { + result = TRUE; + mvcur(-1, -1, LINES - 2, 0); + T(("... restore original screen contents ok %dx%d (%d,%d - %d,%d)", + WINCONSOLE.save_size.Y, + WINCONSOLE.save_size.X, + save_region.Top, + save_region.Left, + save_region.Bottom, + save_region.Right)); + } else { + T(("... restore original screen contents err")); + } + return result; +} + +static bool +read_screen_data(void) +{ + bool result = FALSE; + COORD bufferCoord; + size_t want; + + WINCONSOLE.save_size.X = (SHORT) (WINCONSOLE.save_region.Right + - WINCONSOLE.save_region.Left + 1); + WINCONSOLE.save_size.Y = (SHORT) (WINCONSOLE.save_region.Bottom + - WINCONSOLE.save_region.Top + 1); + + want = (size_t) (WINCONSOLE.save_size.X * WINCONSOLE.save_size.Y); + + if ((WINCONSOLE.save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) { + bufferCoord.X = (SHORT) (WINCONSOLE.window_only ? + WINCONSOLE.SBI.srWindow.Left : 0); + bufferCoord.Y = (SHORT) (WINCONSOLE.window_only ? + WINCONSOLE.SBI.srWindow.Top : 0); + + T(("... reading console %s %dx%d into %d,%d - %d,%d at %d,%d", + WINCONSOLE.window_only ? "window" : "buffer", + WINCONSOLE.save_size.Y, WINCONSOLE.save_size.X, + WINCONSOLE.save_region.Top, + WINCONSOLE.save_region.Left, + WINCONSOLE.save_region.Bottom, + WINCONSOLE.save_region.Right, + bufferCoord.Y, + bufferCoord.X)); + + if (read_screen(WINCONSOLE.hdl, + WINCONSOLE.save_screen, + WINCONSOLE.save_size, + bufferCoord, + &WINCONSOLE.save_region)) { + result = TRUE; + } else { + T((" error %#lx", (unsigned long) GetLastError())); + FreeAndNull(WINCONSOLE.save_screen); + } + } + + return result; +} + +NCURSES_EXPORT(bool) +_nc_console_get_SBI(void) +{ + bool rc = FALSE; + if (GetConsoleScreenBufferInfo(WINCONSOLE.hdl, &(WINCONSOLE.SBI))) { + T(("GetConsoleScreenBufferInfo")); + T(("... buffer(X:%d Y:%d)", + WINCONSOLE.SBI.dwSize.X, + WINCONSOLE.SBI.dwSize.Y)); + T(("... window(X:%d Y:%d)", + WINCONSOLE.SBI.dwMaximumWindowSize.X, + WINCONSOLE.SBI.dwMaximumWindowSize.Y)); + T(("... cursor(X:%d Y:%d)", + WINCONSOLE.SBI.dwCursorPosition.X, + WINCONSOLE.SBI.dwCursorPosition.Y)); + T(("... display(Top:%d Bottom:%d Left:%d Right:%d)", + WINCONSOLE.SBI.srWindow.Top, + WINCONSOLE.SBI.srWindow.Bottom, + WINCONSOLE.SBI.srWindow.Left, + WINCONSOLE.SBI.srWindow.Right)); + if (WINCONSOLE.buffered) { + WINCONSOLE.origin.X = 0; + WINCONSOLE.origin.Y = 0; + } else { + WINCONSOLE.origin.X = WINCONSOLE.SBI.srWindow.Left; + WINCONSOLE.origin.Y = WINCONSOLE.SBI.srWindow.Top; + } + rc = TRUE; + } else { + T(("GetConsoleScreenBufferInfo ERR")); + } + return rc; +} + +#define MIN_WIDE 80 +#define MIN_HIGH 24 + +/* + * In "normal" mode, reset the buffer- and window-sizes back to their original values. + */ +NCURSES_EXPORT(void) +_nc_console_set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info) +{ + SMALL_RECT rect; + COORD coord; + bool changed = FALSE; + + T((T_CALLED("lib_win32con::_nc_console_set_scrollback(%s)"), + (normal + ? "normal" + : "application"))); + + T(("... SBI.srWindow %d,%d .. %d,%d", + info->srWindow.Top, + info->srWindow.Left, + info->srWindow.Bottom, + info->srWindow.Right)); + T(("... SBI.dwSize %dx%d", + info->dwSize.Y, + info->dwSize.X)); + + if (normal) { + rect = info->srWindow; + coord = info->dwSize; + if (memcmp(info, &WINCONSOLE.SBI, sizeof(*info)) != 0) { + changed = TRUE; + WINCONSOLE.SBI = *info; + } + } else { + int high = info->srWindow.Bottom - info->srWindow.Top + 1; + int wide = info->srWindow.Right - info->srWindow.Left + 1; + + if (high < MIN_HIGH) { + T(("... height %d < %d", high, MIN_HIGH)); + high = MIN_HIGH; + changed = TRUE; + } + if (wide < MIN_WIDE) { + T(("... width %d < %d", wide, MIN_WIDE)); + wide = MIN_WIDE; + changed = TRUE; + } + + rect.Left = + rect.Top = 0; + rect.Right = (SHORT) (wide - 1); + rect.Bottom = (SHORT) (high - 1); + + coord.X = (SHORT) wide; + coord.Y = (SHORT) high; + + if (info->dwSize.Y != high || + info->dwSize.X != wide || + info->srWindow.Top != 0 || + info->srWindow.Left != 0) { + changed = TRUE; + } + + } + + if (changed) { + T(("... coord %d,%d", coord.Y, coord.X)); + T(("... rect %d,%d - %d,%d", + rect.Top, rect.Left, + rect.Bottom, rect.Right)); + SetConsoleScreenBufferSize(WINCONSOLE.hdl, coord); /* dwSize */ + SetConsoleWindowInfo(WINCONSOLE.hdl, TRUE, &rect); /* srWindow */ + _nc_console_get_SBI(); + } + returnVoid; +} + +static ULONGLONG +tdiff(FILETIME fstart, FILETIME fend) +{ + ULARGE_INTEGER ustart; + ULARGE_INTEGER uend; + ULONGLONG diff; + + ustart.LowPart = fstart.dwLowDateTime; + ustart.HighPart = fstart.dwHighDateTime; + uend.LowPart = fend.dwLowDateTime; + uend.HighPart = fend.dwHighDateTime; + + diff = (uend.QuadPart - ustart.QuadPart) / 10000; + return diff; +} + +static int +Adjust(int milliseconds, int diff) +{ + if (milliseconds != INFINITY) { + milliseconds -= diff; + if (milliseconds < 0) + milliseconds = 0; + } + return milliseconds; +} + +#define BUTTON_MASK (FROM_LEFT_1ST_BUTTON_PRESSED | \ + FROM_LEFT_2ND_BUTTON_PRESSED | \ + FROM_LEFT_3RD_BUTTON_PRESSED | \ + FROM_LEFT_4TH_BUTTON_PRESSED | \ + RIGHTMOST_BUTTON_PRESSED) + +static int +decode_mouse(SCREEN *sp, int mask) +{ + int result = 0; + + (void) sp; + assert(sp && console_initialized); + + if (mask & FROM_LEFT_1ST_BUTTON_PRESSED) + result |= BUTTON1_PRESSED; + if (mask & FROM_LEFT_2ND_BUTTON_PRESSED) + result |= BUTTON2_PRESSED; + if (mask & FROM_LEFT_3RD_BUTTON_PRESSED) + result |= BUTTON3_PRESSED; + if (mask & FROM_LEFT_4TH_BUTTON_PRESSED) + result |= BUTTON4_PRESSED; + + if (mask & RIGHTMOST_BUTTON_PRESSED) { + switch (WINCONSOLE.numButtons) { + case 1: + result |= BUTTON1_PRESSED; + break; + case 2: + result |= BUTTON2_PRESSED; + break; + case 3: + result |= BUTTON3_PRESSED; + break; + case 4: + result |= BUTTON4_PRESSED; + break; + } + } + + return result; +} + +#define AdjustY() (WINCONSOLE.buffered ? 0 : (int) WINCONSOLE.SBI.srWindow.Top) + +static bool +handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer) +{ + MEVENT work; + bool result = FALSE; + + assert(sp); + + sp->_drv_mouse_old_buttons = sp->_drv_mouse_new_buttons; + sp->_drv_mouse_new_buttons = mer.dwButtonState & BUTTON_MASK; + + /* + * We're only interested if the button is pressed or released. + * FIXME: implement continuous event-tracking. + */ + if (sp->_drv_mouse_new_buttons != sp->_drv_mouse_old_buttons) { + memset(&work, 0, sizeof(work)); + + if (sp->_drv_mouse_new_buttons) { + work.bstate |= + (mmask_t) decode_mouse(sp, + sp->_drv_mouse_new_buttons); + } else { + /* cf: BUTTON_PRESSED, BUTTON_RELEASED */ + work.bstate |= + (mmask_t) (decode_mouse(sp, + sp->_drv_mouse_old_buttons) + >> 1); + result = TRUE; + } + + work.x = mer.dwMousePosition.X; + work.y = mer.dwMousePosition.Y - AdjustY(); + + sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work; + sp->_drv_mouse_tail += 1; + } + return result; +} + +static int +rkeycompare(const void *el1, const void *el2) +{ + WORD key1 = (LOWORD((*((const LONG *) el1)))) & 0x7fff; + WORD key2 = (LOWORD((*((const LONG *) el2)))) & 0x7fff; + + return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1)); +} + + +static int +keycompare(const void *el1, const void *el2) +{ + WORD key1 = HIWORD((*((const LONG *) el1))); + WORD key2 = HIWORD((*((const LONG *) el2))); + + return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1)); +} + +static int +MapKey(WORD vKey) +{ + int code = -1; + + if (!WINCONSOLE.isTermInfoConsole) { + WORD nKey = 0; + void *res; + LONG key = GenMap(vKey, 0); + + res = bsearch(&key, + WINCONSOLE.map, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + keycompare); + if (res) { + key = *((LONG *) res); + nKey = LOWORD(key); + code = (int) (nKey & 0x7fff); + if (nKey & 0x8000) + code = -code; + } + } + return code; +} + +static int +AnsiKey(WORD vKey) +{ + int code = -1; + + if (!WINCONSOLE.isTermInfoConsole) { + WORD nKey = 0; + void *res; + LONG key = GenMap(vKey, 0); + + res = bsearch(&key, + WINCONSOLE.ansi_map, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + keycompare); + if (res) { + key = *((LONG *) res); + nKey = LOWORD(key); + code = (int) (nKey & 0x7fff); + if (nKey & 0x8000) + code = -code; + } + } + return code; +} + +NCURSES_EXPORT(int) +_nc_console_keyok(int keycode, int flag) +{ + int code = ERR; + WORD nKey; + WORD vKey; + void *res; + LONG key = GenMap(0, (WORD) keycode); + + T((T_CALLED("lib_win32con::_nc_console_keyok(%d, %d)"), keycode, flag)); + + res = bsearch(&key, + WINCONSOLE.rmap, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + rkeycompare); + if (res) { + key = *((LONG *) res); + vKey = HIWORD(key); + nKey = (LOWORD(key)) & 0x7fff; + if (!flag) + nKey |= 0x8000; + *(LONG *) res = GenMap(vKey, nKey); + } + returnCode(code); +} + +NCURSES_EXPORT(bool) +_nc_console_keyExist(int keycode) +{ + WORD nKey; + void *res; + bool found = FALSE; + LONG key = GenMap(0, (WORD) keycode); + + T((T_CALLED("lib_win32con::_nc_console_keyExist(%d)"), keycode)); + res = bsearch(&key, + WINCONSOLE.rmap, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + rkeycompare); + if (res) { + key = *((LONG *) res); + nKey = LOWORD(key); + if (!(nKey & 0x8000)) + found = TRUE; + } + returnCode(found); +} + +NCURSES_EXPORT(int) +_nc_console_twait( + SCREEN *sp, + HANDLE hdl, + int mode, + int milliseconds, + int *timeleft + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + INPUT_RECORD inp_rec; + BOOL b; + DWORD nRead = 0, rc = (DWORD) (-1); + int code = 0; + FILETIME fstart; + FILETIME fend; + int diff; + bool isNoDelay = (milliseconds == 0); + +#ifdef NCURSES_WGETCH_EVENTS + (void) evl; /* TODO: implement wgetch-events */ +#endif + +#define IGNORE_CTRL_KEYS (SHIFT_PRESSED|LEFT_ALT_PRESSED|RIGHT_ALT_PRESSED| \ + LEFT_CTRL_PRESSED|RIGHT_CTRL_PRESSED) +#define CONSUME() ReadConsoleInput(hdl, &inp_rec, 1, &nRead) + + assert(sp); + + TR(TRACE_IEVENT, ("start twait: hdl=%p, %d milliseconds, mode: %d", + hdl, milliseconds, mode)); + + if (milliseconds < 0) + milliseconds = INFINITY; + + memset(&inp_rec, 0, sizeof(inp_rec)); + + while (true) { + if (!isNoDelay) { + GetSystemTimeAsFileTime(&fstart); + rc = WaitForSingleObject(hdl, (DWORD) milliseconds); + GetSystemTimeAsFileTime(&fend); + diff = (int) tdiff(fstart, fend); + milliseconds = Adjust(milliseconds, diff); + if (milliseconds< 0) + break; + } + + if (isNoDelay || (rc == WAIT_OBJECT_0)) { + if (mode) { + nRead = 0; + b = GetNumberOfConsoleInputEvents(hdl, &nRead); + if (!b) { + T(("twait:err GetNumberOfConsoleInputEvents")); + } + if (isNoDelay && b) { + T(("twait: Events Available: %ld", nRead)); + if (nRead==0) { + code = 0; + goto end; + } else { + DWORD n = 0; + INPUT_RECORD* pInpRec = + TypeAlloca(INPUT_RECORD, nRead); + if (pInpRec != NULL) { + DWORD i; + BOOL f; + memset(pInpRec, 0, sizeof(INPUT_RECORD)*nRead); + f = PeekConsoleInput(hdl, pInpRec, nRead, &n); + if (f) { + for(i = 0; i < n; i++) { + if (pInpRec[i].EventType==KEY_EVENT) { + if(pInpRec[i].Event.KeyEvent.bKeyDown) { + DWORD ctrlMask = + (pInpRec[i].Event.KeyEvent.dwControlKeyState & + IGNORE_CTRL_KEYS); + if (!ctrlMask) { + code = TW_INPUT; + goto end; + } + } + } + } + } else { + T(("twait:err PeekConsoleInput")); + } + code = 0; + goto end; + } else { + T(("twait:err could not alloca input records")); + } + } + } + if (b && nRead > 0) { + b = PeekConsoleInput(hdl, &inp_rec, 1, &nRead); + if (!b) { + T(("twait:err PeekConsoleInput")); + } + if (b && nRead > 0) { + switch (inp_rec.EventType) { + case KEY_EVENT: + if (mode & TW_INPUT) { + WORD vk = + inp_rec.Event.KeyEvent.wVirtualKeyCode; + char ch = + inp_rec.Event.KeyEvent.uChar.AsciiChar; + T(("twait:event KEY_EVENT")); + T(("twait vk=%d, ch=%d, keydown=%d", + vk, ch, inp_rec.Event.KeyEvent.bKeyDown)); + if (inp_rec.Event.KeyEvent.bKeyDown) { + T(("twait:event KeyDown")); + if (!WINCONSOLE.isTermInfoConsole && + (0 == ch)) { + int nKey = MapKey(vk); + if (nKey < 0) { + CONSUME(); + continue; + } + } + code = TW_INPUT; + goto end; + } else { + CONSUME(); + } + } + continue; + case MOUSE_EVENT: + T(("twait:event MOUSE_EVENT")); + if (decode_mouse(sp, + (inp_rec.Event.MouseEvent.dwButtonState + & BUTTON_MASK)) == 0) { + CONSUME(); + } else if (mode & TW_MOUSE) { + code = TW_MOUSE; + goto end; + } + continue; + /* e.g., FOCUS_EVENT */ + default: + T(("twait:event Tyoe %d", inp_rec.EventType)); + CONSUME(); + _nc_console_selectActiveHandle(); + continue; + } + } + } + } + continue; + } else { + if (rc != WAIT_TIMEOUT) { + code = -1; + break; + } else { + code = 0; + break; + } + } + } +end: + + TR(TRACE_IEVENT, ("end twait: returned %d (%lu), remaining time %d msec", + code, GetLastError(), milliseconds)); + + if (timeleft) + *timeleft = milliseconds; + + return code; +} + +NCURSES_EXPORT(int) +_nc_console_testmouse( + SCREEN *sp, + HANDLE hdl, + int delay + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + int rc = 0; + + assert(sp); + + if (sp->_drv_mouse_head < sp->_drv_mouse_tail) { + rc = TW_MOUSE; + } else { + rc = _nc_console_twait(sp, + hdl, + TWAIT_MASK, + delay, + (int *) 0 + EVENTLIST_2nd(evl)); + } + return rc; +} + +NCURSES_EXPORT(int) +_nc_console_read( + SCREEN *sp, + HANDLE hdl, + int *buf) +{ + int rc = -1; + INPUT_RECORD inp_rec; + BOOL b; + DWORD nRead; + WORD vk; + + assert(sp); + assert(buf); + + memset(&inp_rec, 0, sizeof(inp_rec)); + + T((T_CALLED("lib_win32con::_nc_console_read(%p)"), sp)); + + while ((b = ReadConsoleInput(hdl, &inp_rec, 1, &nRead))) { + if (b && nRead > 0) { + if (rc < 0) + rc = 0; + rc = rc + (int) nRead; + if (inp_rec.EventType == KEY_EVENT) { + if (!inp_rec.Event.KeyEvent.bKeyDown) + continue; + *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar; + vk = inp_rec.Event.KeyEvent.wVirtualKeyCode; + /* + * There are 24 virtual function-keys, and typically + * 12 function-keys on a keyboard. Use the shift-modifier + * to provide the remaining 12 keys. + */ + if (vk >= VK_F1 && vk <= VK_F12) { + if (inp_rec.Event.KeyEvent.dwControlKeyState & + SHIFT_PRESSED) { + vk = (WORD) (vk + 12); + } + } + if (*buf == 0) { + int key = MapKey(vk); + if (key < 0) + continue; + if (sp->_keypad_on) { + *buf = key; + } else { + ungetch('\0'); + *buf = AnsiKey(vk); + } + } + break; + } else if (inp_rec.EventType == MOUSE_EVENT) { + if (handle_mouse(sp, + inp_rec.Event.MouseEvent)) { + *buf = KEY_MOUSE; + break; + } + } + continue; + } + } + returnCode(rc); +} + +/* Our replacement for the systems _isatty to include also + a test for mintty. This is called from the NC_ISATTY macro + defined in curses.priv.h + + Return codes: + - 0 : Not a TTY + - 1 : A Windows character device detected by _isatty + - 2 : A future implementation may return 2 for mintty + */ +NCURSES_EXPORT(int) +_nc_console_isatty(int fd) +{ + int result = 0; + T((T_CALLED("lib_win32con::_nc_console_isatty(%d"), fd)); + + if (_isatty(fd)) + result = 1; +#ifdef _NC_CHECK_MINTTY + else { + if (_nc_console_checkmintty(fd, NULL)) { + result = 2; + fprintf(stderr, "ncurses on Windows must run in a Windows console.\n"); + fprintf(stderr, "On newer versions of Windows, the calling program should create a PTY-like.\n"); + fprintf(stderr, "device using the CreatePseudoConsole Windows API call.\n"); + exit(EXIT_FAILURE); + } + } +#endif + returnCode(result); +} + +NCURSES_EXPORT(bool) +_nc_console_checkinit(bool initFlag, bool assumeTermInfo) +{ + bool res = FALSE; + + T((T_CALLED("lib_win32con::_nc_console_checkinit(initFlag=%d, assumeTermInfo=%d)"), + initFlag, assumeTermInfo)); + + if (!initFlag) { + res = console_initialized; + } else { + /* initialize once, or not at all */ + if (!console_initialized) { + int i; + DWORD num_buttons; + WORD a; + BOOL buffered = FALSE; + BOOL b; + + START_TRACE(); + WINCONSOLE.isTermInfoConsole = assumeTermInfo; + + WINCONSOLE.map = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE); + WINCONSOLE.rmap = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE); + WINCONSOLE.ansi_map = (LPDWORD)malloc(sizeof(DWORD)*MAPSIZE); + + for (i = 0; i < (N_INI + FKEYS); i++) { + if (i < N_INI) { + WINCONSOLE.rmap[i] = WINCONSOLE.map[i] = + (DWORD) keylist[i]; + WINCONSOLE.ansi_map[i] = (DWORD) ansi_keys[i]; + } else { + WINCONSOLE.rmap[i] = WINCONSOLE.map[i] = + (DWORD) GenMap((VK_F1 + (i - N_INI)), + (KEY_F(1) + (i - N_INI))); + WINCONSOLE.ansi_map[i] = + (DWORD) GenMap((VK_F1 + (i - N_INI)), + (';' + (i - N_INI))); + } + } + qsort(WINCONSOLE.ansi_map, + (size_t) (MAPSIZE), + sizeof(keylist[0]), + keycompare); + qsort(WINCONSOLE.map, + (size_t) (MAPSIZE), + sizeof(keylist[0]), + keycompare); + qsort(WINCONSOLE.rmap, + (size_t) (MAPSIZE), + sizeof(keylist[0]), + rkeycompare); + + if (GetNumberOfConsoleMouseButtons(&num_buttons)) { + WINCONSOLE.numButtons = (int) num_buttons; + } else { + WINCONSOLE.numButtons = 1; + } + + a = _nc_console_MapColor(true, COLOR_WHITE) | + _nc_console_MapColor(false, COLOR_BLACK); + for (i = 0; i < CON_NUMPAIRS; i++) + WINCONSOLE.pairs[i] = a; + + WINCONSOLE.inp = GetStdHandle(STD_INPUT_HANDLE); + WINCONSOLE.out = GetStdHandle(STD_OUTPUT_HANDLE); + WINCONSOLE.hdl = WINCONSOLE.out; + + GetConsoleMode(WINCONSOLE.inp, &WINCONSOLE.originalMode.dwFlagIn); + GetConsoleMode(WINCONSOLE.out, &WINCONSOLE.originalMode.dwFlagOut); + + if (!WINCONSOLE.isTermInfoConsole) { + b = AllocConsole(); + + if (!b) + b = AttachConsole(ATTACH_PARENT_PROCESS); + + if (getenv("NCGDB") || getenv("NCURSES_CONSOLE2")) { + T(("... will not buffer console")); + } else { + T(("... creating console buffer")); + WINCONSOLE.hdl = + CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, + 0, + NULL, + CONSOLE_TEXTMODE_BUFFER, + NULL); + buffered = TRUE; + } + } + + /* We set binary I/O even when using the console + driver to cover the situation, that the + TERM variable is set to #win32con, but actually + Windows supports virtual terminal processing. + So if terminfo functions are used in this setup, + they actually may work. + */ + _setmode(fileno(stdin), _O_BINARY); + _setmode(fileno(stdout), _O_BINARY); + + if (WINCONSOLE.hdl != INVALID_HANDLE_VALUE) { + WINCONSOLE.buffered = buffered; + _nc_console_get_SBI(); + WINCONSOLE.save_SBI = WINCONSOLE.SBI; + if (!buffered) { + save_original_screen(); + _nc_console_set_scrollback(FALSE, &WINCONSOLE.SBI); + } + GetConsoleCursorInfo(WINCONSOLE.hdl, &WINCONSOLE.save_CI); + T(("... initial cursor is %svisible, %d%%", + (WINCONSOLE.save_CI.bVisible ? "" : "not-"), + (int) WINCONSOLE.save_CI.dwSize)); + } + + WINCONSOLE.initialized = TRUE; + console_initialized = TRUE; + } + res = (WINCONSOLE.hdl != INVALID_HANDLE_VALUE); + } + returnBool(res); +} + +#endif // _NC_WINDOWS diff --git a/deps/ncurses-6.3/ncurses/tinfo/lib_win32util.c b/deps/ncurses-6.3/ncurses/tinfo/lib_win32util.c new file mode 100644 index 0000000..1482916 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/lib_win32util.c @@ -0,0 +1,134 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * + * and: Thomas E. Dickey * + ****************************************************************************/ + +#include <curses.priv.h> + +MODULE_ID("$Id: lib_win32util.c,v 1.2 2021/09/04 10:54:35 tom Exp $") + +#ifdef _NC_WINDOWS +#include <io.h> + +#ifdef _NC_CHECK_MINTTY +#define PSAPI_VERSION 2 +#include <psapi.h> +#include <tchar.h> + +#define array_length(a) (sizeof(a)/sizeof(a[0])) + +/* This function tests, whether or not the ncurses application + is running as a descendant of MSYS2/cygwin mintty terminal + application. mintty doesn't use Windows Console for its screen + I/O, so the native Windows _isatty doesn't recognize it as + character device. But we can discover we are at the end of an + Pipe and can query the server side of the pipe, looking whether + or not this is mintty. + For now we terminate the program if we discover that situation. + Althogh in theory it would be possible, to remotely manipulate + the terminal state of mintty, this is out of scope for now and + not worth the significant effort. + */ +NCURSES_EXPORT(int) +_nc_console_checkmintty(int fd, LPHANDLE pMinTTY) +{ + HANDLE handle = _nc_console_handle(fd); + DWORD dw; + int code = 0; + + T((T_CALLED("lib_winhelper::_nc_console_checkmintty(%d, %p)"), fd, pMinTTY)); + + if (handle != INVALID_HANDLE_VALUE) { + dw = GetFileType(handle); + if (dw == FILE_TYPE_PIPE) { + if (GetNamedPipeInfo(handle, 0, 0, 0, 0)) { + ULONG pPid; + /* Requires NT6 */ + if (GetNamedPipeServerProcessId(handle, &pPid)) { + TCHAR buf[MAX_PATH]; + DWORD len = 0; + /* These security attributes may allow us to + create a remote thread in mintty to manipulate + the terminal state remotely */ + HANDLE pHandle = OpenProcess( + PROCESS_CREATE_THREAD + | PROCESS_QUERY_INFORMATION + | PROCESS_VM_OPERATION + | PROCESS_VM_WRITE + | PROCESS_VM_READ, + FALSE, + pPid); + if (pMinTTY) + *pMinTTY = INVALID_HANDLE_VALUE; + if (pHandle != INVALID_HANDLE_VALUE) { + if ((len = GetProcessImageFileName( + pHandle, + buf, + (DWORD) + array_length(buf)))) { + TCHAR *pos = _tcsrchr(buf, _T('\\')); + if (pos) { + pos++; + if (_tcsnicmp(pos, _TEXT("mintty.exe"), 10) + == 0) { + if (pMinTTY) + *pMinTTY = pHandle; + code = 1; + } + } + } + } + } + } + } + } + returnCode(code); +} +#endif /* _NC_CHECK_MINTTY */ + +#define JAN1970 116444736000000000LL /* the value for 01/01/1970 00:00 */ + +NCURSES_EXPORT(int) +_nc_gettimeofday(struct timeval *tv, void *tz GCC_UNUSED) +{ + union { + FILETIME ft; + long long since1601; /* time since 1 Jan 1601 in 100ns units */ + } data; + + GetSystemTimeAsFileTime(&data.ft); + tv->tv_usec = (long) ((data.since1601 / 10LL) % 1000000LL); + tv->tv_sec = (long) ((data.since1601 - JAN1970) / 10000000LL); + return (0); +} + +#endif // _NC_WINDOWS diff --git a/deps/ncurses-6.3/ncurses/tinfo/make_hash.c b/deps/ncurses-6.3/ncurses/tinfo/make_hash.c new file mode 100644 index 0000000..9980279 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/make_hash.c @@ -0,0 +1,445 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2009-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. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * make_hash.c --- build-time program for constructing comp_captab.c + */ + +#include <build.priv.h> + +#include <tic.h> +#include <hashsize.h> + +#include <ctype.h> + +MODULE_ID("$Id: make_hash.c,v 1.33 2020/02/02 23:34:34 tom Exp $") + +/* + * _nc_make_hash_table() + * + * Takes the entries in table[] and hashes them into hash_table[] + * by name. There are CAPTABSIZE entries in the predefined table[] + * and HASHTABSIZE slots in hash_table[]. + * + */ + +#undef MODULE_ID +#define MODULE_ID(id) /*nothing */ +#include <tinfo/doalloc.c> + +#define L_PAREN "(" +#define R_PAREN ")" +#define L_BRACE "{" +#define R_BRACE "}" + +static const char *typenames[] = +{"BOOLEAN", "NUMBER", "STRING"}; + +static void +failed(const char *s) +{ + perror(s); + exit(EXIT_FAILURE); +} + +static char * +strmalloc(char *s) +{ + size_t need = strlen(s) + 1; + char *result = malloc(need); + if (result == 0) + failed("strmalloc"); + _nc_STRCPY(result, s, need); + return result; +} + +/* + * int hash_function(string) + * + * Computes the hashing function on the given string. + * + * The current hash function is the sum of each consecutive pair + * of characters, taken as two-byte integers, mod HASHTABSIZE. + * + */ + +static int +hash_function(const char *string) +{ + long sum = 0; + + while (*string) { + sum += (long) (UChar(*string) + (UChar(*(string + 1)) << 8)); + string++; + } + + return (int) (sum % HASHTABSIZE); +} + +#define UNUSED -1 + +static void +_nc_make_hash_table(struct user_table_entry *table, + HashValue * hash_table, + unsigned tablesize) +{ + unsigned i; + int hashvalue; + int collisions = 0; + + for (i = 0; i < HASHTABSIZE; i++) { + hash_table[i] = UNUSED; + } + for (i = 0; i < tablesize; i++) { + hashvalue = hash_function(table[i].ute_name); + + if (hash_table[hashvalue] >= 0) + collisions++; + + if (hash_table[hashvalue] != UNUSED) { + table[i].ute_link = hash_table[hashvalue]; + } + hash_table[hashvalue] = (HashValue) i; + } + + printf("/* %d collisions out of %d entries */\n", collisions, tablesize); +} + +/* + * This filter reads from standard input a list of tab-delimited columns, + * (e.g., from Caps.filtered) computes the hash-value of a specified column and + * writes the hashed tables to standard output. + * + * By compiling the hash table at build time, we're able to make the entire + * set of terminfo and termcap tables readonly (and also provide some runtime + * performance enhancement). + */ + +#define MAX_COLUMNS BUFSIZ /* this _has_ to be worst-case */ + +static int +count_columns(char **list) +{ + int result = 0; + if (list != 0) { + while (*list++) { + ++result; + } + } + return result; +} + +static char ** +parse_columns(char *buffer) +{ + static char **list; + + int col = 0; + + if (buffer == 0) { + free(list); + list = 0; + return 0; + } + + if (*buffer != '#') { + if (list == 0) { + list = typeCalloc(char *, (MAX_COLUMNS + 1)); + if (list == 0) + return (0); + } + while (*buffer != '\0') { + char *s; + for (s = buffer; (*s != '\0') && !isspace(UChar(*s)); s++) + /*EMPTY */ ; + if (s != buffer) { + char mark = *s; + *s = '\0'; + if ((s - buffer) > 1 + && (*buffer == '"') + && (s[-1] == '"')) { /* strip the quotes */ + assert(s > buffer + 1); + s[-1] = '\0'; + buffer++; + } + list[col] = buffer; + col++; + if (mark == '\0') + break; + while (*++s && isspace(UChar(*s))) + /*EMPTY */ ; + buffer = s; + } else + break; + } + } + return col ? list : 0; +} + +#define SetType(n,t) \ + if (is_user) \ + name_table[n].ute_type |= (int)(1 << (t)); \ + else \ + name_table[n].ute_type = (t) + +#define GetType(n) \ + (is_user \ + ? get_type(name_table[n].ute_type) \ + : typenames[name_table[n].ute_type]) + +static char * +get_type(int type_mask) +{ + static char result[80]; + unsigned n; + _nc_STRCPY(result, L_PAREN, sizeof(result)); + for (n = 0; n < 3; ++n) { + if ((1 << n) & type_mask) { + size_t want = 5 + strlen(typenames[n]); + if (want > sizeof(result)) { + fprintf(stderr, "Buffer is not large enough for %s + %s\n", + result, typenames[n]); + exit(EXIT_FAILURE); + } + if (result[1]) + _nc_STRCAT(result, "|", sizeof(result)); + _nc_STRCAT(result, "1<<", sizeof(result)); + _nc_STRCAT(result, typenames[n], sizeof(result)); + } + } + _nc_STRCAT(result, R_PAREN, sizeof(result)); + return result; +} + +int +main(int argc, char **argv) +{ + unsigned tablesize = CAPTABSIZE; + struct user_table_entry *name_table = typeCalloc(struct + user_table_entry, tablesize); + HashValue *hash_table = typeCalloc(HashValue, HASHTABSIZE); + const char *root_name = ""; + int column = 0; + int bigstring = 0; + unsigned n; + unsigned nn; + unsigned tableused = 0; + bool is_user; + const char *table_name; + char buffer[BUFSIZ]; + + short BoolCount = 0; + short NumCount = 0; + short StrCount = 0; + + /* The first argument is the column-number (starting with 0). + * The second is the root name of the tables to generate. + */ + if (argc <= 3 + || (column = atoi(argv[1])) <= 0 + || (column >= MAX_COLUMNS) + || *(root_name = argv[2]) == 0 + || (bigstring = atoi(argv[3])) < 0 + || name_table == 0 + || hash_table == 0) { + fprintf(stderr, "usage: make_hash column root_name bigstring\n"); + exit(EXIT_FAILURE); + } + is_user = (*root_name == 'u'); + table_name = (is_user ? "user" : "name"); + + /* + * Read the table into our arrays. + */ + for (n = 0; (n < tablesize) && fgets(buffer, BUFSIZ, stdin);) { + char **list; + char *nlp = strchr(buffer, '\n'); + if (nlp) + *nlp = '\0'; + else + buffer[sizeof(buffer) - 2] = '\0'; + list = parse_columns(buffer); + if (list == 0) /* blank or comment */ + continue; + if (is_user) { + if (strcmp(list[0], "userdef")) + continue; + } else if (!strcmp(list[0], "userdef")) { + continue; + } + if (column < 0 || column > count_columns(list)) { + fprintf(stderr, "expected %d columns, have %d:\n%s\n", + column, + count_columns(list), + buffer); + exit(EXIT_FAILURE); + } + nn = tableused; + if (is_user) { + unsigned j; + for (j = 0; j < tableused; ++j) { + if (!strcmp(list[column], name_table[j].ute_name)) { + nn = j; + break; + } + } + } + if (nn == tableused) { + name_table[nn].ute_link = -1; /* end-of-hash */ + name_table[nn].ute_name = strmalloc(list[column]); + ++tableused; + } + + if (!strcmp(list[2], "bool")) { + SetType(nn, BOOLEAN); + name_table[nn].ute_index = BoolCount++; + } else if (!strcmp(list[2], "num")) { + SetType(nn, NUMBER); + name_table[nn].ute_index = NumCount++; + } else if (!strcmp(list[2], "str")) { + SetType(nn, STRING); + name_table[nn].ute_index = StrCount++; + if (is_user) { + if (*list[3] != '-') { + unsigned j; + name_table[nn].ute_argc = (unsigned) strlen(list[3]); + for (j = 0; j < name_table[nn].ute_argc; ++j) { + if (list[3][j] == 's') { + name_table[nn].ute_args |= (1U << j); + } + } + } + } + } else { + fprintf(stderr, "Unknown type: %s\n", list[2]); + exit(EXIT_FAILURE); + } + n++; + } + if (tablesize > tableused) + tablesize = tableused; + _nc_make_hash_table(name_table, hash_table, tablesize); + + /* + * Write the compiled tables to standard output + */ + if (bigstring) { + int len = 0; + int nxt; + + printf("static const char %s_names_text[] = \\\n", root_name); + for (n = 0; n < tablesize; n++) { + nxt = (int) strlen(name_table[n].ute_name) + 5; + if (nxt + len > 72) { + printf("\\\n"); + len = 0; + } + printf("\"%s\\0\" ", name_table[n].ute_name); + len += nxt; + } + printf(";\n\n"); + + len = 0; + printf("static %s_table_data const %s_names_data[] =\n", + table_name, + root_name); + printf("%s\n", L_BRACE); + for (n = 0; n < tablesize; n++) { + printf("\t%s %15d,\t%10s,", L_BRACE, len, GetType(n)); + if (is_user) + printf("\t%d,%d,", + name_table[n].ute_argc, + name_table[n].ute_args); + printf("\t%3d, %3d %s%c\n", + name_table[n].ute_index, + name_table[n].ute_link, + R_BRACE, + n < tablesize - 1 ? ',' : ' '); + len += (int) strlen(name_table[n].ute_name) + 1; + } + printf("%s;\n\n", R_BRACE); + printf("static struct %s_table_entry *_nc_%s_table = 0;\n\n", + table_name, + root_name); + } else { + + printf("static struct %s_table_entry const _nc_%s_table[] =\n", + table_name, + root_name); + printf("%s\n", L_BRACE); + for (n = 0; n < tablesize; n++) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "\"%s\"", + name_table[n].ute_name); + printf("\t%s %15s,\t%10s,", L_BRACE, buffer, GetType(n)); + if (is_user) + printf("\t%d,%d,", + name_table[n].ute_argc, + name_table[n].ute_args); + printf("\t%3d, %3d %s%c\n", + name_table[n].ute_index, + name_table[n].ute_link, + R_BRACE, + n < tablesize - 1 ? ',' : ' '); + } + printf("%s;\n\n", R_BRACE); + } + + printf("static const HashValue _nc_%s_hash_table[%d] =\n", + root_name, + HASHTABSIZE + 1); + printf("%s\n", L_BRACE); + for (n = 0; n < HASHTABSIZE; n++) { + printf("\t%3d,\n", hash_table[n]); + } + printf("\t0\t/* base-of-table */\n"); + printf("%s;\n\n", R_BRACE); + + if (!is_user) { + printf("#if (BOOLCOUNT!=%d)||(NUMCOUNT!=%d)||(STRCOUNT!=%d)\n", + BoolCount, NumCount, StrCount); + printf("#error\t--> term.h and comp_captab.c disagree about the <--\n"); + printf("#error\t--> numbers of booleans, numbers and/or strings <--\n"); + printf("#endif\n\n"); + } + + free(hash_table); + for (n = 0; (n < tablesize); ++n) { + free((void *) name_table[n].ute_name); + } + free(name_table); + parse_columns(0); + + return EXIT_SUCCESS; +} diff --git a/deps/ncurses-5.9/ncurses/tinfo/make_keys.c b/deps/ncurses-6.3/ncurses/tinfo/make_keys.c similarity index 85% rename from deps/ncurses-5.9/ncurses/tinfo/make_keys.c rename to deps/ncurses-6.3/ncurses/tinfo/make_keys.c index a7854e3..b8eb934 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/make_keys.c +++ b/deps/ncurses-6.3/ncurses/tinfo/make_keys.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2011,2015 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 * @@ -39,11 +40,26 @@ #define USE_TERMLIB 1 #include <build.priv.h> -MODULE_ID("$Id: make_keys.c,v 1.19 2010/06/05 22:08:00 tom Exp $") +MODULE_ID("$Id: make_keys.c,v 1.23 2021/08/18 20:55:25 tom Exp $") #include <names.c> -#define UNKNOWN (unsigned) (SIZEOF(strnames) + SIZEOF(strfnames)) +static unsigned +unknown(void) +{ + static unsigned result = 0; + + if (result == 0) { + unsigned n; + for (n = 0; strnames[n] != 0; n++) { + ++result; + } + for (n = 0; strfnames[n] != 0; n++) { + ++result; + } + } + return result; +} static unsigned lookup(const char *name) @@ -64,7 +80,7 @@ lookup(const char *name) } } } - return found ? n : UNKNOWN; + return found ? n : unknown(); } static void @@ -73,10 +89,11 @@ make_keys(FILE *ifp, FILE *ofp) char buffer[BUFSIZ]; char from[256]; char to[256]; + unsigned ignore = unknown(); unsigned maxlen = 16; int scanned; - while (fgets(buffer, sizeof(buffer), ifp) != 0) { + while (fgets(buffer, (int) sizeof(buffer), ifp) != 0) { if (*buffer == '#') continue; @@ -86,7 +103,7 @@ make_keys(FILE *ifp, FILE *ofp) scanned = sscanf(buffer, "%255s %255s", to, from); if (scanned == 2) { unsigned code = lookup(from); - if (code == UNKNOWN) + if (code == ignore) continue; if (strlen(from) > maxlen) maxlen = (unsigned) strlen(from); @@ -111,11 +128,13 @@ main(int argc, char *argv[]) { static const char *prefix[] = { - "#ifndef NCU_KEYS_H", - "#define NCU_KEYS_H 1", + "#ifndef _INIT_KEYTRY_H", + "#define _INIT_KEYTRY_H 1", "", "/* This file was generated by MAKE_KEYS */", "", + "#include <tic.h>", + "", "#if BROKEN_LINKER", "static", "#endif", @@ -126,7 +145,7 @@ main(int argc, char *argv[]) { "\t{ 0, 0} };", "", - "#endif /* NCU_KEYS_H */", + "#endif /* _INIT_KEYTRY_H */", 0 }; diff --git a/deps/ncurses-5.9/ncurses/tinfo/name_match.c b/deps/ncurses-6.3/ncurses/tinfo/name_match.c similarity index 77% rename from deps/ncurses-5.9/ncurses/tinfo/name_match.c rename to deps/ncurses-6.3/ncurses/tinfo/name_match.c index a9ac642..71e584d 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/name_match.c +++ b/deps/ncurses-6.3/ncurses/tinfo/name_match.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2007,2008 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2013,2016 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 * @@ -33,25 +34,36 @@ #include <curses.priv.h> #include <tic.h> -MODULE_ID("$Id: name_match.c,v 1.18 2008/11/16 00:19:59 juergen Exp $") +MODULE_ID("$Id: name_match.c,v 1.25 2020/02/02 23:34:34 tom Exp $") -/* - * _nc_first_name(char *names) - * - * Extract the primary name from a compiled entry. - */ #define FirstName _nc_globals.first_name +#if NCURSES_USE_TERMCAP && NCURSES_XNAMES +static const char * +skip_index(const char *name) +{ + if ((_nc_syntax == SYN_TERMCAP) && _nc_user_definable) { + const char *bar = strchr(name, '|'); + if (bar != 0 && (bar - name) == 2) + name = bar + 1; + } + return name; +} +#endif + +/* + * Get the primary name from the given name list. For terminfo, this is the + * first name. For termcap, this may be the second name, if the first one + * happens to be two characters. + */ NCURSES_EXPORT(char *) _nc_first_name(const char *const sp) -/* get the first name from the given name list */ { - unsigned n; - #if NO_LEAKS if (sp == 0) { - if (FirstName != 0) + if (FirstName != 0) { FreeAndNull(FirstName); + } } else #endif { @@ -59,8 +71,13 @@ _nc_first_name(const char *const sp) FirstName = typeMalloc(char, MAX_NAME_SIZE + 1); if (FirstName != 0) { + unsigned n; + const char *src = sp; +#if NCURSES_USE_TERMCAP && NCURSES_XNAMES + src = skip_index(sp); +#endif for (n = 0; n < MAX_NAME_SIZE; n++) { - if ((FirstName[n] = sp[n]) == '\0' + if ((FirstName[n] = src[n]) == '\0' || (FirstName[n] == '|')) break; } @@ -71,19 +88,18 @@ _nc_first_name(const char *const sp) } /* - * int _nc_name_match(namelist, name, delim) - * - * Is the given name matched in namelist? + * Is the given name matched in namelist? */ - NCURSES_EXPORT(int) _nc_name_match(const char *const namelst, const char *const name, const char *const delim) { - const char *s, *d, *t; - int code, found; + const char *s; if ((s = namelst) != 0) { while (*s != '\0') { + const char *d, *t; + int code, found; + for (d = name; *d != '\0'; d++) { if (*s != *d) break; diff --git a/deps/ncurses-6.3/ncurses/tinfo/obsolete.c b/deps/ncurses-6.3/ncurses/tinfo/obsolete.c new file mode 100644 index 0000000..972a9a1 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/obsolete.c @@ -0,0 +1,240 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2013-2014,2016 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: Thomas E. Dickey 2013-on * + ****************************************************************************/ + +/* +** Support for obsolete/unusual features. +*/ + +#include <curses.priv.h> + +MODULE_ID("$Id: obsolete.c,v 1.6 2020/02/02 23:34:34 tom Exp $") + +/* + * Obsolete entrypoint retained for binary compatibility. + */ +NCURSES_EXPORT(void) +NCURSES_SP_NAME(_nc_set_buffer) (NCURSES_SP_DCLx FILE *ofp, int buffered) +{ +#if NCURSES_SP_FUNCS + (void) SP_PARM; +#endif + (void) ofp; + (void) buffered; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(void) +_nc_set_buffer(FILE *ofp, int buffered) +{ + NCURSES_SP_NAME(_nc_set_buffer) (CURRENT_SCREEN, ofp, buffered); +} +#endif + +#if !HAVE_STRDUP +NCURSES_EXPORT(char *) +_nc_strdup(const char *s) +{ + char *result = 0; + if (s != 0) { + size_t need = strlen(s); + result = malloc(need + 1); + if (result != 0) { + _nc_STRCPY(result, s, need); + } + } + return result; +} +#endif + +#if USE_MY_MEMMOVE +#define DST ((char *)s1) +#define SRC ((const char *)s2) +NCURSES_EXPORT(void *) +_nc_memmove(void *s1, const void *s2, size_t n) +{ + if (n != 0) { + if ((DST + n > SRC) && (SRC + n > DST)) { + static char *bfr; + static size_t length; + register size_t j; + if (length < n) { + length = (n * 3) / 2; + bfr = typeRealloc(char, length, bfr); + } + for (j = 0; j < n; j++) + bfr[j] = SRC[j]; + s2 = bfr; + } + while (n-- != 0) + DST[n] = SRC[n]; + } + return s1; +} +#endif /* USE_MY_MEMMOVE */ + +#ifdef EXP_XTERM_1005 +NCURSES_EXPORT(int) +_nc_conv_to_utf8(unsigned char *target, unsigned source, unsigned limit) +{ +#define CH(n) UChar((source) >> ((n) * 8)) + int rc = 0; + + if (source <= 0x0000007f) + rc = 1; + else if (source <= 0x000007ff) + rc = 2; + else if (source <= 0x0000ffff) + rc = 3; + else if (source <= 0x001fffff) + rc = 4; + else if (source <= 0x03ffffff) + rc = 5; + else /* (source <= 0x7fffffff) */ + rc = 6; + + if ((unsigned) rc > limit) { /* whatever it is, we cannot decode it */ + rc = 0; + } + + if (target != 0) { + switch (rc) { + case 1: + target[0] = CH(0); + break; + + case 2: + target[1] = UChar(0x80 | (CH(0) & 0x3f)); + target[0] = UChar(0xc0 | (CH(0) >> 6) | ((CH(1) & 0x07) << 2)); + break; + + case 3: + target[2] = UChar(0x80 | (CH(0) & 0x3f)); + target[1] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2)); + target[0] = UChar(0xe0 | ((int) (CH(1) & 0xf0) >> 4)); + break; + + case 4: + target[3] = UChar(0x80 | (CH(0) & 0x3f)); + target[2] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2)); + target[1] = UChar(0x80 | + ((int) (CH(1) & 0xf0) >> 4) | + ((int) (CH(2) & 0x03) << 4)); + target[0] = UChar(0xf0 | ((int) (CH(2) & 0x1f) >> 2)); + break; + + case 5: + target[4] = UChar(0x80 | (CH(0) & 0x3f)); + target[3] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2)); + target[2] = UChar(0x80 | + ((int) (CH(1) & 0xf0) >> 4) | + ((int) (CH(2) & 0x03) << 4)); + target[1] = UChar(0x80 | (CH(2) >> 2)); + target[0] = UChar(0xf8 | (CH(3) & 0x03)); + break; + + case 6: + target[5] = UChar(0x80 | (CH(0) & 0x3f)); + target[4] = UChar(0x80 | (CH(0) >> 6) | ((CH(1) & 0x0f) << 2)); + target[3] = UChar(0x80 | (CH(1) >> 4) | ((CH(2) & 0x03) << 4)); + target[2] = UChar(0x80 | (CH(2) >> 2)); + target[1] = UChar(0x80 | (CH(3) & 0x3f)); + target[0] = UChar(0xfc | ((int) (CH(3) & 0x40) >> 6)); + break; + } + } + + return rc; /* number of bytes needed in target */ +#undef CH +} + +NCURSES_EXPORT(int) +_nc_conv_to_utf32(unsigned *target, const char *source, unsigned limit) +{ +#define CH(n) UChar((*target) >> ((n) * 8)) + int rc = 0; + int j; + unsigned mask = 0; + + /* + * Find the number of bytes we will need from the source. + */ + if ((*source & 0x80) == 0) { + rc = 1; + mask = (unsigned) *source; + } else if ((*source & 0xe0) == 0xc0) { + rc = 2; + mask = (unsigned) (*source & 0x1f); + } else if ((*source & 0xf0) == 0xe0) { + rc = 3; + mask = (unsigned) (*source & 0x0f); + } else if ((*source & 0xf8) == 0xf0) { + rc = 4; + mask = (unsigned) (*source & 0x07); + } else if ((*source & 0xfc) == 0xf8) { + rc = 5; + mask = (unsigned) (*source & 0x03); + } else if ((*source & 0xfe) == 0xfc) { + rc = 6; + mask = (unsigned) (*source & 0x01); + } + + if ((unsigned) rc > limit) { /* whatever it is, we cannot decode it */ + rc = 0; + } + + /* + * sanity-check. + */ + if (rc > 1) { + for (j = 1; j < rc; j++) { + if ((source[j] & 0xc0) != 0x80) + break; + } + if (j != rc) { + rc = 0; + } + } + + if (target != 0) { + int shift = 0; + *target = 0; + for (j = 1; j < rc; j++) { + *target |= (unsigned) (source[rc - j] & 0x3f) << shift; + shift += 6; + } + *target |= mask << shift; + } + return rc; +#undef CH +} +#endif /* EXP_XTERM_1005 */ diff --git a/deps/ncurses-6.3/ncurses/tinfo/parse_entry.c b/deps/ncurses-6.3/ncurses/tinfo/parse_entry.c new file mode 100644 index 0000000..a77cd0b --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/parse_entry.c @@ -0,0 +1,1112 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * parse_entry.c -- compile one terminfo or termcap entry + * + * Get an exact in-core representation of an entry. Don't + * try to resolve use or tc capabilities, that is someone + * else's job. Depends on the lexical analyzer to get tokens + * from the input stream. + */ + +#define __INTERNAL_CAPS_VISIBLE +#include <curses.priv.h> + +#include <ctype.h> +#include <tic.h> + +MODULE_ID("$Id: parse_entry.c,v 1.102 2021/09/04 10:54:35 tom Exp $") + +#ifdef LINT +static short const parametrized[] = +{0}; +#else +#include <parametrized.h> +#endif + +static void postprocess_termcap(TERMTYPE2 *, bool); +static void postprocess_terminfo(TERMTYPE2 *); +static struct name_table_entry const *lookup_fullname(const char *name); + +#if NCURSES_XNAMES + +static struct name_table_entry const * +_nc_extend_names(ENTRY * entryp, const char *name, int token_type) +{ + static struct name_table_entry temp; + TERMTYPE2 *tp = &(entryp->tterm); + unsigned offset = 0; + unsigned actual; + unsigned tindex; + unsigned first, last, n; + bool found; + + switch (token_type) { + case BOOLEAN: + first = 0; + last = tp->ext_Booleans; + offset = tp->ext_Booleans; + tindex = tp->num_Booleans; + break; + case NUMBER: + first = tp->ext_Booleans; + last = tp->ext_Numbers + first; + offset = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); + tindex = tp->num_Numbers; + break; + case STRING: + first = (unsigned) (tp->ext_Booleans + tp->ext_Numbers); + last = tp->ext_Strings + first; + offset = (unsigned) (tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings); + tindex = tp->num_Strings; + break; + case CANCEL: + actual = NUM_EXT_NAMES(tp); + for (n = 0; n < actual; n++) { + if (!strcmp(name, tp->ext_Names[n])) { + if (n > (unsigned) (tp->ext_Booleans + tp->ext_Numbers)) { + token_type = STRING; + } else if (n > tp->ext_Booleans) { + token_type = NUMBER; + } else { + token_type = BOOLEAN; + } + return _nc_extend_names(entryp, name, token_type); + } + } + /* Well, we are given a cancel for a name that we don't recognize */ + return _nc_extend_names(entryp, name, STRING); + default: + return 0; + } + + /* Adjust the 'offset' (insertion-point) to keep the lists of extended + * names sorted. + */ + for (n = first, found = FALSE; n < last; n++) { + int cmp = strcmp(tp->ext_Names[n], name); + if (cmp == 0) + found = TRUE; + if (cmp >= 0) { + offset = n; + tindex = n - first; + switch (token_type) { + case BOOLEAN: + tindex += BOOLCOUNT; + break; + case NUMBER: + tindex += NUMCOUNT; + break; + case STRING: + tindex += STRCOUNT; + break; + } + break; + } + } + +#define for_each_value(max) \ + for (last = (unsigned) (max - 1); last > tindex; last--) + + if (!found) { + switch (token_type) { + case BOOLEAN: + tp->ext_Booleans++; + tp->num_Booleans++; + TYPE_REALLOC(NCURSES_SBOOL, tp->num_Booleans, tp->Booleans); + for_each_value(tp->num_Booleans) + tp->Booleans[last] = tp->Booleans[last - 1]; + break; + case NUMBER: + tp->ext_Numbers++; + tp->num_Numbers++; + TYPE_REALLOC(NCURSES_INT2, tp->num_Numbers, tp->Numbers); + for_each_value(tp->num_Numbers) + tp->Numbers[last] = tp->Numbers[last - 1]; + break; + case STRING: + tp->ext_Strings++; + tp->num_Strings++; + TYPE_REALLOC(char *, tp->num_Strings, tp->Strings); + for_each_value(tp->num_Strings) + tp->Strings[last] = tp->Strings[last - 1]; + break; + } + actual = NUM_EXT_NAMES(tp); + TYPE_REALLOC(char *, actual, tp->ext_Names); + while (--actual > offset) + tp->ext_Names[actual] = tp->ext_Names[actual - 1]; + tp->ext_Names[offset] = _nc_save_str(name); + } + + temp.nte_name = tp->ext_Names[offset]; + temp.nte_type = token_type; + temp.nte_index = (short) tindex; + temp.nte_link = -1; + + return &temp; +} + +static const char * +usertype2s(int mask) +{ + const char *result = "unknown"; + if (mask & (1 << BOOLEAN)) { + result = "boolean"; + } else if (mask & (1 << NUMBER)) { + result = "number"; + } else if (mask & (1 << STRING)) { + result = "string"; + } + return result; +} + +static bool +expected_type(const char *name, int token_type, bool silent) +{ + struct user_table_entry const *entry = _nc_find_user_entry(name); + bool result = TRUE; + if ((entry != 0) && (token_type != CANCEL)) { + int have_type = (1 << token_type); + if (!(entry->ute_type & have_type)) { + if (!silent) + _nc_warning("expected %s-type for %s, have %s", + usertype2s(entry->ute_type), + name, + usertype2s(have_type)); + result = FALSE; + } + } + return result; +} +#endif /* NCURSES_XNAMES */ + +static bool +valid_entryname(const char *name) +{ + bool result = TRUE; + int ch; + while ((ch = UChar(*name++)) != '\0') { + if (ch <= ' ' || ch > '~' || ch == '/') { + result = FALSE; + break; + } + } + return result; +} + +/* + * int + * _nc_parse_entry(entry, literal, silent) + * + * Compile one entry. Doesn't try to resolve use or tc capabilities. + * + * found-forward-use = FALSE + * re-initialise internal arrays + * get_token(); + * if the token was not a name in column 1, complain and die + * save names in entry's string table + * while (get_token() is not EOF and not NAMES) + * check for existence and type-correctness + * enter cap into structure + * if STRING + * save string in entry's string table + * push back token + */ + +#define BAD_TC_USAGE if (!bad_tc_usage) \ + { bad_tc_usage = TRUE; \ + _nc_warning("Legacy termcap allows only a trailing tc= clause"); } + +#define MAX_NUMBER MAX_OF_TYPE(NCURSES_INT2) + +NCURSES_EXPORT(int) +_nc_parse_entry(ENTRY * entryp, int literal, bool silent) +{ + int token_type; + struct name_table_entry const *entry_ptr; + char *ptr, *base; + const char *name; + bool bad_tc_usage = FALSE; + + token_type = _nc_get_token(silent); + + if (token_type == EOF) + return (EOF); + if (token_type != NAMES) + _nc_err_abort("Entry does not start with terminal names in column one"); + + _nc_init_entry(entryp); + + entryp->cstart = _nc_comment_start; + entryp->cend = _nc_comment_end; + entryp->startline = _nc_start_line; + DEBUG(2, ("Comment range is %ld to %ld", entryp->cstart, entryp->cend)); + + /* + * Strip off the 2-character termcap name, if present. Originally termcap + * used that as an indexing aid. We can retain 2-character terminfo names, + * but note that they would be lost if we translate to/from termcap. This + * feature is supposedly obsolete since "newer" BSD implementations do not + * use it; however our reference for this feature is SunOS 4.x, which + * implemented it. Note that the resulting terminal type was never the + * 2-character name, but was instead the first alias after that. + */ +#define ok_TC2(s) (isgraph(UChar(s)) && (s) != '|') + ptr = _nc_curr_token.tk_name; + if (_nc_syntax == SYN_TERMCAP +#if NCURSES_XNAMES + && !_nc_user_definable +#endif + ) { + if (ok_TC2(ptr[0]) && ok_TC2(ptr[1]) && (ptr[2] == '|')) { + ptr += 3; + _nc_curr_token.tk_name[2] = '\0'; + } + } + + entryp->tterm.str_table = entryp->tterm.term_names = _nc_save_str(ptr); + + if (entryp->tterm.str_table == 0) + return (ERR); + + DEBUG(1, ("Starting '%s'", ptr)); + + /* + * We do this because the one-token lookahead in the parse loop + * results in the terminal type getting prematurely set to correspond + * to that of the next entry. + */ + name = _nc_first_name(entryp->tterm.term_names); + if (!valid_entryname(name)) { + _nc_warning("invalid entry name \"%s\"", name); + name = "invalid"; + } + _nc_set_type(name); + + /* check for overly-long names and aliases */ + for (base = entryp->tterm.term_names; (ptr = strchr(base, '|')) != 0; + base = ptr + 1) { + if (ptr - base > MAX_ALIAS) { + _nc_warning("%s `%.*s' may be too long", + (base == entryp->tterm.term_names) + ? "primary name" + : "alias", + (int) (ptr - base), base); + } + } + + entryp->nuses = 0; + + for (token_type = _nc_get_token(silent); + token_type != EOF && token_type != NAMES; + token_type = _nc_get_token(silent)) { + bool is_use = (strcmp(_nc_curr_token.tk_name, "use") == 0); + bool is_tc = !is_use && (strcmp(_nc_curr_token.tk_name, "tc") == 0); + if (is_use || is_tc) { + if (!VALID_STRING(_nc_curr_token.tk_valstring) + || _nc_curr_token.tk_valstring[0] == '\0') { + _nc_warning("missing name for use-clause"); + continue; + } else if (!valid_entryname(_nc_curr_token.tk_valstring)) { + _nc_warning("invalid name for use-clause \"%s\"", + _nc_curr_token.tk_valstring); + continue; + } else if (entryp->nuses >= MAX_USES) { + _nc_warning("too many use-clauses, ignored \"%s\"", + _nc_curr_token.tk_valstring); + continue; + } + entryp->uses[entryp->nuses].name = _nc_save_str(_nc_curr_token.tk_valstring); + entryp->uses[entryp->nuses].line = _nc_curr_line; + entryp->nuses++; + if (entryp->nuses > 1 && is_tc) { + BAD_TC_USAGE + } + } else { + /* normal token lookup */ + entry_ptr = _nc_find_entry(_nc_curr_token.tk_name, + _nc_get_hash_table(_nc_syntax)); + + /* + * Our kluge to handle aliasing. The reason it is done + * this ugly way, with a linear search, is so the hashing + * machinery doesn't have to be made really complicated + * (also we get better warnings this way). No point in + * making this case fast, aliased caps aren't common now + * and will get rarer. + */ + if (entry_ptr == NOTFOUND) { + const struct alias *ap; + + if (_nc_syntax == SYN_TERMCAP) { + if (entryp->nuses != 0) { + BAD_TC_USAGE + } + for (ap = _nc_get_alias_table(TRUE); ap->from; ap++) + if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) { + if (ap->to == (char *) 0) { + _nc_warning("%s (%s termcap extension) ignored", + ap->from, ap->source); + goto nexttok; + } + + entry_ptr = _nc_find_entry(ap->to, + _nc_get_hash_table(TRUE)); + if (entry_ptr && !silent) + _nc_warning("%s (%s termcap extension) aliased to %s", + ap->from, ap->source, ap->to); + break; + } + } else { /* if (_nc_syntax == SYN_TERMINFO) */ + for (ap = _nc_get_alias_table(FALSE); ap->from; ap++) + if (strcmp(ap->from, _nc_curr_token.tk_name) == 0) { + if (ap->to == (char *) 0) { + _nc_warning("%s (%s terminfo extension) ignored", + ap->from, ap->source); + goto nexttok; + } + + entry_ptr = _nc_find_entry(ap->to, + _nc_get_hash_table(FALSE)); + if (entry_ptr && !silent) + _nc_warning("%s (%s terminfo extension) aliased to %s", + ap->from, ap->source, ap->to); + break; + } + + if (entry_ptr == NOTFOUND) { + entry_ptr = lookup_fullname(_nc_curr_token.tk_name); + } + } + } +#if NCURSES_XNAMES + /* + * If we have extended-names active, we will automatically + * define a name based on its context. + */ + if (entry_ptr == NOTFOUND + && _nc_user_definable) { + if (expected_type(_nc_curr_token.tk_name, token_type, silent)) { + if ((entry_ptr = _nc_extend_names(entryp, + _nc_curr_token.tk_name, + token_type)) != 0) { + if (_nc_tracing >= DEBUG_LEVEL(1)) { + _nc_warning("extended capability '%s'", + _nc_curr_token.tk_name); + } + } + } else { + /* ignore it: we have already printed error message */ + continue; + } + } +#endif /* NCURSES_XNAMES */ + + /* can't find this cap name, not even as an alias */ + if (entry_ptr == NOTFOUND) { + if (!silent) + _nc_warning("unknown capability '%s'", + _nc_curr_token.tk_name); + continue; + } + + /* deal with bad type/value combinations. */ + if (token_type == CANCEL) { + /* + * Prefer terminfo in this (long-obsolete) ambiguity: + */ + if (!strcmp("ma", _nc_curr_token.tk_name)) { + entry_ptr = _nc_find_type_entry("ma", NUMBER, + _nc_syntax != 0); + assert(entry_ptr != 0); + } + } else if (entry_ptr->nte_type != token_type) { + /* + * Nasty special cases here handle situations in which type + * information can resolve name clashes. Normal lookup + * finds the last instance in the capability table of a + * given name, regardless of type. find_type_entry looks + * for a first matching instance with given type. So as + * long as all ambiguous names occur in pairs of distinct + * type, this will do the job. + */ + + if (token_type == NUMBER + && !strcmp("ma", _nc_curr_token.tk_name)) { + /* tell max_attributes from arrow_key_map */ + entry_ptr = _nc_find_type_entry("ma", NUMBER, + _nc_syntax != 0); + assert(entry_ptr != 0); + + } else if (token_type == STRING + && !strcmp("MT", _nc_curr_token.tk_name)) { + /* map terminfo's string MT to MT */ + entry_ptr = _nc_find_type_entry("MT", STRING, + _nc_syntax != 0); + assert(entry_ptr != 0); + + } else if (token_type == BOOLEAN + && entry_ptr->nte_type == STRING) { + /* treat strings without following "=" as empty strings */ + token_type = STRING; + } else { + /* we couldn't recover; skip this token */ + if (!silent) { + const char *type_name; + switch (entry_ptr->nte_type) { + case BOOLEAN: + type_name = "boolean"; + break; + case STRING: + type_name = "string"; + break; + case NUMBER: + type_name = "numeric"; + break; + default: + type_name = "unknown"; + break; + } + _nc_warning("wrong type used for %s capability '%s'", + type_name, _nc_curr_token.tk_name); + } + continue; + } + } + + /* now we know that the type/value combination is OK */ + switch (token_type) { + case CANCEL: + switch (entry_ptr->nte_type) { + case BOOLEAN: + entryp->tterm.Booleans[entry_ptr->nte_index] = CANCELLED_BOOLEAN; + break; + + case NUMBER: + entryp->tterm.Numbers[entry_ptr->nte_index] = CANCELLED_NUMERIC; + break; + + case STRING: + entryp->tterm.Strings[entry_ptr->nte_index] = CANCELLED_STRING; + break; + } + break; + + case BOOLEAN: + entryp->tterm.Booleans[entry_ptr->nte_index] = TRUE; + break; + + case NUMBER: +#if !NCURSES_EXT_NUMBERS + if (_nc_curr_token.tk_valnumber > MAX_NUMBER) { + entryp->tterm.Numbers[entry_ptr->nte_index] = MAX_NUMBER; + } else +#endif + { + entryp->tterm.Numbers[entry_ptr->nte_index] = + (NCURSES_INT2) _nc_curr_token.tk_valnumber; + } + break; + + case STRING: + ptr = _nc_curr_token.tk_valstring; + if (_nc_syntax == SYN_TERMCAP) { + int n = entry_ptr->nte_index; + ptr = _nc_captoinfo(_nc_curr_token.tk_name, + ptr, + (n < (int) SIZEOF(parametrized)) + ? parametrized[n] + : 0); + } + entryp->tterm.Strings[entry_ptr->nte_index] = _nc_save_str(ptr); + break; + + default: + if (!silent) + _nc_warning("unknown token type"); + _nc_panic_mode((char) ((_nc_syntax == SYN_TERMCAP) ? ':' : ',')); + continue; + } + } /* end else cur_token.name != "use" */ + nexttok: + continue; /* cannot have a label w/o statement */ + } /* endwhile (not EOF and not NAMES) */ + + _nc_push_token(token_type); + _nc_set_type(_nc_first_name(entryp->tterm.term_names)); + + /* + * Try to deduce as much as possible from extension capabilities + * (this includes obsolete BSD capabilities). Sigh...it would be more + * space-efficient to call this after use resolution, but it has + * to be done before entry allocation is wrapped up. + */ + if (!literal) { + if (_nc_syntax == SYN_TERMCAP) { + bool has_base_entry = FALSE; + + /* + * Don't insert defaults if this is a `+' entry meant only + * for inclusion in other entries (not sure termcap ever + * had these, actually). + */ + if (strchr(entryp->tterm.term_names, '+')) { + has_base_entry = TRUE; + } else { + unsigned i; + /* + * Otherwise, look for a base entry that will already + * have picked up defaults via translation. + */ + for (i = 0; i < entryp->nuses; i++) { + if (entryp->uses[i].name != 0 + && !strchr(entryp->uses[i].name, '+')) + has_base_entry = TRUE; + } + } + + postprocess_termcap(&entryp->tterm, has_base_entry); + } else + postprocess_terminfo(&entryp->tterm); + } + _nc_wrap_entry(entryp, FALSE); + + return (OK); +} + +NCURSES_EXPORT(int) +_nc_capcmp(const char *s, const char *t) +/* compare two string capabilities, stripping out padding */ +{ + bool ok_s = VALID_STRING(s); + bool ok_t = VALID_STRING(t); + + if (ok_s && ok_t) { + for (;;) { + if (s[0] == '$' && s[1] == '<') { + for (s += 2;; s++) { + if (!(isdigit(UChar(*s)) + || *s == '.' + || *s == '*' + || *s == '/' + || *s == '>')) { + break; + } + } + } + + if (t[0] == '$' && t[1] == '<') { + for (t += 2;; t++) { + if (!(isdigit(UChar(*t)) + || *t == '.' + || *t == '*' + || *t == '/' + || *t == '>')) { + break; + } + } + } + + /* we've now pushed s and t past any padding they pointed at */ + + if (*s == '\0' && *t == '\0') + return (0); + + if (*s != *t) + return (*t - *s); + + /* else *s == *t but one is not NUL, so continue */ + s++, t++; + } + } else if (ok_s || ok_t) { + return 1; + } + return 0; +} + +static void +append_acs0(string_desc * dst, int code, char *src, size_t off) +{ + if (src != 0 && off < strlen(src)) { + char temp[3]; + temp[0] = (char) code; + temp[1] = src[off]; + temp[2] = 0; + _nc_safe_strcat(dst, temp); + } +} + +static void +append_acs(string_desc * dst, int code, char *src) +{ + if (VALID_STRING(src) && strlen(src) == 1) { + append_acs0(dst, code, src, 0); + } +} + +/* + * The ko capability, if present, consists of a comma-separated capability + * list. For each capability, we may assume there is a keycap that sends the + * string which is the value of that capability. + */ +#define DATA(from, to) { { from }, { to } } +typedef struct { + const char from[3]; + const char to[6]; +} assoc; +static assoc const ko_xlate[] = +{ + DATA("al", "kil1"), /* insert line key -> KEY_IL */ + DATA("bt", "kcbt"), /* back tab -> KEY_BTAB */ + DATA("cd", "ked"), /* clear-to-eos key -> KEY_EOL */ + DATA("ce", "kel"), /* clear-to-eol key -> KEY_EOS */ + DATA("cl", "kclr"), /* clear key -> KEY_CLEAR */ + DATA("ct", "tbc"), /* clear all tabs -> KEY_CATAB */ + DATA("dc", "kdch1"), /* delete char -> KEY_DC */ + DATA("dl", "kdl1"), /* delete line -> KEY_DL */ + DATA("do", "kcud1"), /* down key -> KEY_DOWN */ + DATA("ei", "krmir"), /* exit insert key -> KEY_EIC */ + DATA("ho", "khome"), /* home key -> KEY_HOME */ + DATA("ic", "kich1"), /* insert char key -> KEY_IC */ + DATA("im", "kIC"), /* insert-mode key -> KEY_SIC */ + DATA("le", "kcub1"), /* le key -> KEY_LEFT */ + DATA("nd", "kcuf1"), /* nd key -> KEY_RIGHT */ + DATA("nl", "kent"), /* new line key -> KEY_ENTER */ + DATA("st", "khts"), /* set-tab key -> KEY_STAB */ + DATA("ta", ""), + DATA("up", "kcuu1"), /* up-arrow key -> KEY_UP */ +}; + +/* + * This routine fills in string caps that either had defaults under + * termcap or can be manufactured from obsolete termcap capabilities. + * It was lifted from Ross Ridge's mytinfo package. + */ + +static const char C_CR[] = "\r"; +static const char C_LF[] = "\n"; +static const char C_BS[] = "\b"; +static const char C_HT[] = "\t"; + +/* + * This bit of legerdemain turns all the terminfo variable names into + * references to locations in the arrays Booleans, Numbers, and Strings --- + * precisely what's needed. + */ + +#undef CUR +#define CUR tp-> + +static void +postprocess_termcap(TERMTYPE2 *tp, bool has_base) +{ + char buf[MAX_LINE * 2 + 2]; + string_desc result; + + /* + * TERMCAP DEFAULTS AND OBSOLETE-CAPABILITY TRANSLATIONS + * + * This first part of the code is the functional inverse of the + * fragment in capdefaults.c. + * ---------------------------------------------------------------------- + */ + + /* if there was a tc entry, assume we picked up defaults via that */ + if (!has_base) { + if (WANTED(init_3string) && PRESENT(termcap_init2)) + init_3string = _nc_save_str(termcap_init2); + + if (WANTED(reset_2string) && PRESENT(termcap_reset)) + reset_2string = _nc_save_str(termcap_reset); + + if (WANTED(carriage_return)) { + if (carriage_return_delay > 0) { + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%s$<%d>", C_CR, carriage_return_delay); + carriage_return = _nc_save_str(buf); + } else + carriage_return = _nc_save_str(C_CR); + } + if (WANTED(cursor_left)) { + if (backspace_delay > 0) { + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%s$<%d>", C_BS, backspace_delay); + cursor_left = _nc_save_str(buf); + } else if (backspaces_with_bs == 1) + cursor_left = _nc_save_str(C_BS); + else if (PRESENT(backspace_if_not_bs)) + cursor_left = backspace_if_not_bs; + } + /* vi doesn't use "do", but it does seem to use nl (or '\n') instead */ + if (WANTED(cursor_down)) { + if (PRESENT(linefeed_if_not_lf)) + cursor_down = linefeed_if_not_lf; + else if (linefeed_is_newline != 1) { + if (new_line_delay > 0) { + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%s$<%d>", C_LF, new_line_delay); + cursor_down = _nc_save_str(buf); + } else + cursor_down = _nc_save_str(C_LF); + } + } + if (WANTED(scroll_forward) && crt_no_scrolling != 1) { + if (PRESENT(linefeed_if_not_lf)) + cursor_down = linefeed_if_not_lf; + else if (linefeed_is_newline != 1) { + if (new_line_delay > 0) { + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%s$<%d>", C_LF, new_line_delay); + scroll_forward = _nc_save_str(buf); + } else + scroll_forward = _nc_save_str(C_LF); + } + } + if (WANTED(newline)) { + if (linefeed_is_newline == 1) { + if (new_line_delay > 0) { + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%s$<%d>", C_LF, new_line_delay); + newline = _nc_save_str(buf); + } else + newline = _nc_save_str(C_LF); + } else if (PRESENT(carriage_return) && PRESENT(scroll_forward)) { + _nc_str_init(&result, buf, sizeof(buf)); + if (_nc_safe_strcat(&result, carriage_return) + && _nc_safe_strcat(&result, scroll_forward)) + newline = _nc_save_str(buf); + } else if (PRESENT(carriage_return) && PRESENT(cursor_down)) { + _nc_str_init(&result, buf, sizeof(buf)); + if (_nc_safe_strcat(&result, carriage_return) + && _nc_safe_strcat(&result, cursor_down)) + newline = _nc_save_str(buf); + } + } + } + + /* + * Inverse of capdefaults.c code ends here. + * ---------------------------------------------------------------------- + * + * TERMCAP-TO TERMINFO MAPPINGS FOR SOURCE TRANSLATION + * + * These translations will *not* be inverted by tgetent(). + */ + + if (!has_base) { + /* + * We wait until now to decide if we've got a working cr because even + * one that doesn't work can be used for newline. Unfortunately the + * space allocated for it is wasted. + */ + if (return_does_clr_eol == 1 || no_correctly_working_cr == 1) + carriage_return = ABSENT_STRING; + + /* + * Supposedly most termcap entries have ta now and '\t' is no longer a + * default, but it doesn't seem to be true... + */ + if (WANTED(tab)) { + if (horizontal_tab_delay > 0) { + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "%s$<%d>", C_HT, horizontal_tab_delay); + tab = _nc_save_str(buf); + } else + tab = _nc_save_str(C_HT); + } + if (init_tabs == ABSENT_NUMERIC && has_hardware_tabs == TRUE) + init_tabs = 8; + + /* + * Assume we can beep with ^G unless we're given bl@. + */ + if (WANTED(bell)) + bell = _nc_save_str("\007"); + } + + /* + * Translate the old termcap :pt: capability to it#8 + ht=\t + */ + if (has_hardware_tabs == TRUE) { + if (init_tabs != 8 && init_tabs != ABSENT_NUMERIC) + _nc_warning("hardware tabs with a width other than 8: %d", init_tabs); + else { + if (PRESENT(tab) && _nc_capcmp(tab, C_HT)) + _nc_warning("hardware tabs with a non-^I tab string %s", + _nc_visbuf(tab)); + else { + if (WANTED(tab)) + tab = _nc_save_str(C_HT); + init_tabs = 8; + } + } + } + /* + * Now translate the ko capability, if there is one. This + * isn't from mytinfo... + */ + if (PRESENT(other_non_function_keys)) { + char *base; + char *bp, *cp, *dp; + struct name_table_entry const *from_ptr; + struct name_table_entry const *to_ptr; + char buf2[MAX_TERMINFO_LENGTH]; + bool foundim; + + /* we're going to use this for a special case later */ + dp = strchr(other_non_function_keys, 'i'); + foundim = (dp != 0) && (dp[1] == 'm'); + + /* look at each comma-separated capability in the ko string... */ + for (base = other_non_function_keys; + (cp = strchr(base, ',')) != 0; + base = cp + 1) { + size_t len = (unsigned) (cp - base); + size_t n; + assoc const *ap = 0; + + for (n = 0; n < SIZEOF(ko_xlate); ++n) { + if (len == strlen(ko_xlate[n].from) + && strncmp(ko_xlate[n].from, base, len) == 0) { + ap = ko_xlate + n; + break; + } + } + if (ap == 0) { + _nc_warning("unknown capability `%.*s' in ko string", + (int) len, base); + continue; + } else if (ap->to[0] == '\0') /* ignore it */ + continue; + + /* now we know we found a match in ko_table, so... */ + + from_ptr = _nc_find_entry(ap->from, _nc_get_hash_table(TRUE)); + to_ptr = _nc_find_entry(ap->to, _nc_get_hash_table(FALSE)); + + if (!from_ptr || !to_ptr) /* should never happen! */ + _nc_err_abort("ko translation table is invalid, I give up"); + + if (WANTED(tp->Strings[from_ptr->nte_index])) { + _nc_warning("no value for ko capability %s", ap->from); + continue; + } + + if (tp->Strings[to_ptr->nte_index]) { + const char *s = tp->Strings[from_ptr->nte_index]; + const char *t = tp->Strings[to_ptr->nte_index]; + /* There's no point in warning about it if it is the same + * string; that's just an inefficiency. + */ + if (VALID_STRING(s) && VALID_STRING(t) && strcmp(s, t) != 0) + _nc_warning("%s (%s) already has an explicit value %s, ignoring ko", + ap->to, ap->from, t); + continue; + } + + /* + * The magic moment -- copy the mapped key string over, + * stripping out padding. + */ + bp = tp->Strings[from_ptr->nte_index]; + if (VALID_STRING(bp)) { + for (dp = buf2; *bp; bp++) { + if (bp[0] == '$' && bp[1] == '<') { + while (*bp && *bp != '>') { + ++bp; + } + } else + *dp++ = *bp; + } + *dp = '\0'; + + tp->Strings[to_ptr->nte_index] = _nc_save_str(buf2); + } else { + tp->Strings[to_ptr->nte_index] = bp; + } + } + + /* + * Note: ko=im and ko=ic both want to grab the `Insert' + * keycap. There's a kich1 but no ksmir, so the ic capability + * got mapped to kich1 and im to kIC to avoid a collision. + * If the description has im but not ic, hack kIC back to kich1. + */ + if (foundim && WANTED(key_ic) && PRESENT(key_sic)) { + key_ic = key_sic; + key_sic = ABSENT_STRING; + } + } + + if (!has_base) { + if (!hard_copy) { + if (WANTED(key_backspace)) + key_backspace = _nc_save_str(C_BS); + if (WANTED(key_left)) + key_left = _nc_save_str(C_BS); + if (WANTED(key_down)) + key_down = _nc_save_str(C_LF); + } + } + + /* + * Translate XENIX forms characters. + */ + if (PRESENT(acs_ulcorner) || + PRESENT(acs_llcorner) || + PRESENT(acs_urcorner) || + PRESENT(acs_lrcorner) || + PRESENT(acs_ltee) || + PRESENT(acs_rtee) || + PRESENT(acs_btee) || + PRESENT(acs_ttee) || + PRESENT(acs_hline) || + PRESENT(acs_vline) || + PRESENT(acs_plus)) { + char buf2[MAX_TERMCAP_LENGTH]; + + _nc_str_init(&result, buf2, sizeof(buf2)); + _nc_safe_strcat(&result, acs_chars); + + append_acs(&result, 'j', acs_lrcorner); + append_acs(&result, 'k', acs_urcorner); + append_acs(&result, 'l', acs_ulcorner); + append_acs(&result, 'm', acs_llcorner); + append_acs(&result, 'n', acs_plus); + append_acs(&result, 'q', acs_hline); + append_acs(&result, 't', acs_ltee); + append_acs(&result, 'u', acs_rtee); + append_acs(&result, 'v', acs_btee); + append_acs(&result, 'w', acs_ttee); + append_acs(&result, 'x', acs_vline); + + if (buf2[0]) { + acs_chars = _nc_save_str(buf2); + _nc_warning("acsc string synthesized from XENIX capabilities"); + } + } else if (acs_chars == ABSENT_STRING + && PRESENT(enter_alt_charset_mode) + && PRESENT(exit_alt_charset_mode)) { + acs_chars = _nc_save_str(VT_ACSC); + } +} + +static void +postprocess_terminfo(TERMTYPE2 *tp) +{ + /* + * TERMINFO-TO-TERMINFO MAPPINGS FOR SOURCE TRANSLATION + * ---------------------------------------------------------------------- + */ + + /* + * Translate AIX forms characters. + */ + if (PRESENT(box_chars_1)) { + char buf2[MAX_TERMCAP_LENGTH]; + string_desc result; + + _nc_str_init(&result, buf2, sizeof(buf2)); + _nc_safe_strcat(&result, acs_chars); + + append_acs0(&result, 'l', box_chars_1, 0); /* ACS_ULCORNER */ + append_acs0(&result, 'q', box_chars_1, 1); /* ACS_HLINE */ + append_acs0(&result, 'k', box_chars_1, 2); /* ACS_URCORNER */ + append_acs0(&result, 'x', box_chars_1, 3); /* ACS_VLINE */ + append_acs0(&result, 'j', box_chars_1, 4); /* ACS_LRCORNER */ + append_acs0(&result, 'm', box_chars_1, 5); /* ACS_LLCORNER */ + append_acs0(&result, 'w', box_chars_1, 6); /* ACS_TTEE */ + append_acs0(&result, 'u', box_chars_1, 7); /* ACS_RTEE */ + append_acs0(&result, 'v', box_chars_1, 8); /* ACS_BTEE */ + append_acs0(&result, 't', box_chars_1, 9); /* ACS_LTEE */ + append_acs0(&result, 'n', box_chars_1, 10); /* ACS_PLUS */ + + if (buf2[0]) { + acs_chars = _nc_save_str(buf2); + _nc_warning("acsc string synthesized from AIX capabilities"); + box_chars_1 = ABSENT_STRING; + } + } + /* + * ---------------------------------------------------------------------- + */ +} + +/* + * Do a linear search through the terminfo tables to find a given full-name. + * We don't expect to do this often, so there's no hashing function. + * + * In effect, this scans through the 3 lists of full-names, and looks them + * up in _nc_info_table, which is organized so that the nte_index fields are + * sorted, but the nte_type fields are not necessarily grouped together. + */ +static struct name_table_entry const * +lookup_fullname(const char *find) +{ + int state = -1; + + for (;;) { + int count = 0; + NCURSES_CONST char *const *names; + + switch (++state) { + case BOOLEAN: + names = boolfnames; + break; + case STRING: + names = strfnames; + break; + case NUMBER: + names = numfnames; + break; + default: + return NOTFOUND; + } + + for (count = 0; names[count] != 0; count++) { + if (!strcmp(names[count], find)) { + struct name_table_entry const *entry_ptr = _nc_get_table(FALSE); + while (entry_ptr->nte_type != state + || entry_ptr->nte_index != count) + entry_ptr++; + return entry_ptr; + } + } + } +} + +/* parse_entry.c ends here */ diff --git a/deps/ncurses-6.3/ncurses/tinfo/read_entry.c b/deps/ncurses-6.3/ncurses/tinfo/read_entry.c new file mode 100644 index 0000000..41ef0d0 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/read_entry.c @@ -0,0 +1,895 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * read_entry.c -- Routine for reading in a compiled terminfo file + */ + +#include <curses.priv.h> +#include <hashed_db.h> + +#include <tic.h> + +MODULE_ID("$Id: read_entry.c,v 1.161 2021/06/26 19:43:17 tom Exp $") + +#define TYPE_CALLOC(type,elts) typeCalloc(type, (unsigned)(elts)) + +#define MyNumber(n) (short) LOW_MSB(n) + +#define SIZEOF_32BITS 4 + +#if NCURSES_USE_DATABASE +#if NCURSES_EXT_NUMBERS +static size_t +convert_16bits(char *buf, NCURSES_INT2 *Numbers, int count) +{ + int i; + size_t j; + size_t size = SIZEOF_SHORT; + for (i = 0; i < count; i++) { + unsigned mask = 0xff; + unsigned char ch = 0; + Numbers[i] = 0; + for (j = 0; j < size; ++j) { + ch = UChar(*buf++); + Numbers[i] |= (ch << (8 * j)); + mask <<= 8; + } + if (ch & 0x80) { + while (mask != 0) { + Numbers[i] |= (int) mask; + mask <<= 8; + } + } + TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i])); + } + return size; +} + +static size_t +convert_32bits(char *buf, NCURSES_INT2 *Numbers, int count) +{ + int i; + size_t j; + size_t size = SIZEOF_INT2; + unsigned char ch; + + assert(sizeof(NCURSES_INT2) == size); + for (i = 0; i < count; i++) { + Numbers[i] = 0; + for (j = 0; j < size; ++j) { + ch = UChar(*buf++); + Numbers[i] |= (ch << (8 * j)); + } + /* "unsigned" and NCURSES_INT2 are the same size - no sign-extension */ + TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i])); + } + return size; +} +#else +static size_t +convert_32bits(char *buf, NCURSES_INT2 *Numbers, int count) +{ + int i, j; + unsigned char ch; + for (i = 0; i < count; i++) { + int value = 0; + for (j = 0; j < SIZEOF_32BITS; ++j) { + ch = UChar(*buf++); + value |= (ch << (8 * j)); + } + if (value == -1) + Numbers[i] = ABSENT_NUMERIC; + else if (value == -2) + Numbers[i] = CANCELLED_NUMERIC; + else if (value > MAX_OF_TYPE(NCURSES_INT2)) + Numbers[i] = MAX_OF_TYPE(NCURSES_INT2); + else + Numbers[i] = (short) value; + TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i])); + } + return SIZEOF_SHORT; +} + +static size_t +convert_16bits(char *buf, NCURSES_INT2 *Numbers, int count) +{ + int i; + for (i = 0; i < count; i++) { + if (IS_NEG1(buf + 2 * i)) + Numbers[i] = ABSENT_NUMERIC; + else if (IS_NEG2(buf + 2 * i)) + Numbers[i] = CANCELLED_NUMERIC; + else + Numbers[i] = MyNumber(buf + 2 * i); + TR(TRACE_DATABASE, ("get Numbers[%d]=%d", i, Numbers[i])); + } + return SIZEOF_SHORT; +} +#endif + +static void +convert_strings(char *buf, char **Strings, int count, int size, char *table) +{ + int i; + char *p; + + for (i = 0; i < count; i++) { + if (IS_NEG1(buf + 2 * i)) { + Strings[i] = ABSENT_STRING; + } else if (IS_NEG2(buf + 2 * i)) { + Strings[i] = CANCELLED_STRING; + } else if (MyNumber(buf + 2 * i) > size) { + Strings[i] = ABSENT_STRING; + } else { + Strings[i] = (MyNumber(buf + 2 * i) + table); + TR(TRACE_DATABASE, ("Strings[%d] = %s", i, _nc_visbuf(Strings[i]))); + } + + /* make sure all strings are NUL terminated */ + if (VALID_STRING(Strings[i])) { + for (p = Strings[i]; p < table + size; p++) + if (*p == '\0') + break; + /* if there is no NUL, ignore the string */ + if (p >= table + size) + Strings[i] = ABSENT_STRING; + } + } +} + +static int +fake_read(char *src, int *offset, int limit, char *dst, unsigned want) +{ + int have = (limit - *offset); + + if (have > 0) { + if ((int) want > have) + want = (unsigned) have; + memcpy(dst, src + *offset, (size_t) want); + *offset += (int) want; + } else { + want = 0; + } + return (int) want; +} + +#define Read(buf, count) fake_read(buffer, &offset, limit, (char *) buf, (unsigned) count) + +#define read_shorts(buf, count) \ + (Read(buf, (count)*SIZEOF_SHORT) == (int) (count)*SIZEOF_SHORT) + +#define read_numbers(buf, count) \ + (Read(buf, (count)*(unsigned)size_of_numbers) == (int) (count)*size_of_numbers) + +#define even_boundary(value) \ + if ((value) % 2 != 0) Read(buf, 1) +#endif + +NCURSES_EXPORT(void) +_nc_init_termtype(TERMTYPE2 *const tp) +{ + unsigned i; + +#if NCURSES_XNAMES + tp->num_Booleans = BOOLCOUNT; + tp->num_Numbers = NUMCOUNT; + tp->num_Strings = STRCOUNT; + tp->ext_Booleans = 0; + tp->ext_Numbers = 0; + tp->ext_Strings = 0; +#endif + if (tp->Booleans == 0) + TYPE_MALLOC(NCURSES_SBOOL, BOOLCOUNT, tp->Booleans); + if (tp->Numbers == 0) + TYPE_MALLOC(NCURSES_INT2, NUMCOUNT, tp->Numbers); + if (tp->Strings == 0) + TYPE_MALLOC(char *, STRCOUNT, tp->Strings); + + for_each_boolean(i, tp) + tp->Booleans[i] = FALSE; + + for_each_number(i, tp) + tp->Numbers[i] = ABSENT_NUMERIC; + + for_each_string(i, tp) + tp->Strings[i] = ABSENT_STRING; +} + +#if NCURSES_USE_DATABASE +#if NCURSES_XNAMES +static bool +valid_shorts(char *buffer, int limit) +{ + bool result = FALSE; + int n; + for (n = 0; n < limit; ++n) { + if (MyNumber(buffer + (n * 2)) > 0) { + result = TRUE; + break; + } + } + return result; +} +#endif + +/* + * Return TGETENT_YES if read, TGETENT_NO if not found or garbled. + */ +NCURSES_EXPORT(int) +_nc_read_termtype(TERMTYPE2 *ptr, char *buffer, int limit) +{ + int offset = 0; + int name_size, bool_count, num_count, str_count, str_size; + int i; + char buf[MAX_ENTRY_SIZE + 2]; + char *string_table; + unsigned want, have; + size_t (*convert_numbers) (char *, NCURSES_INT2 *, int); + int size_of_numbers; + int max_entry_size = MAX_ENTRY_SIZE; + + TR(TRACE_DATABASE, + (T_CALLED("_nc_read_termtype(ptr=%p, buffer=%p, limit=%d)"), + (void *) ptr, buffer, limit)); + + TR(TRACE_DATABASE, ("READ termtype header @%d", offset)); + + memset(ptr, 0, sizeof(*ptr)); + + /* grab the header */ + if (!read_shorts(buf, 6) + || !IS_TIC_MAGIC(buf)) { + returnDB(TGETENT_NO); + } +#if NCURSES_EXT_NUMBERS + if (LOW_MSB(buf) == MAGIC2) { + convert_numbers = convert_32bits; + size_of_numbers = SIZEOF_INT2; + } else { + max_entry_size = MAX_ENTRY_SIZE1; + convert_numbers = convert_16bits; + size_of_numbers = SIZEOF_SHORT; + } +#else + if (LOW_MSB(buf) == MAGIC2) { + convert_numbers = convert_32bits; + size_of_numbers = SIZEOF_32BITS; + } else { + convert_numbers = convert_16bits; + size_of_numbers = SIZEOF_INT2; + } +#endif + + /* *INDENT-EQLS* */ + name_size = MyNumber(buf + 2); + bool_count = MyNumber(buf + 4); + num_count = MyNumber(buf + 6); + str_count = MyNumber(buf + 8); + str_size = MyNumber(buf + 10); + + TR(TRACE_DATABASE, + ("TERMTYPE name_size=%d, bool=%d/%d, num=%d/%d str=%d/%d(%d)", + name_size, bool_count, BOOLCOUNT, num_count, NUMCOUNT, + str_count, STRCOUNT, str_size)); + if (name_size < 0 + || bool_count < 0 + || num_count < 0 + || str_count < 0 + || str_size < 0) { + returnDB(TGETENT_NO); + } + + want = (unsigned) (str_size + name_size + 1); + /* try to allocate space for the string table */ + if (str_count * SIZEOF_SHORT >= max_entry_size + || (string_table = typeMalloc(char, want)) == 0) { + returnDB(TGETENT_NO); + } + + /* grab the name (a null-terminated string) */ + want = min(MAX_NAME_SIZE, (unsigned) name_size); + ptr->str_table = string_table; + ptr->term_names = string_table; + if ((have = (unsigned) Read(ptr->term_names, want)) != want) { + memset(ptr->term_names + have, 0, (size_t) (want - have)); + } + ptr->term_names[want] = '\0'; + string_table += (want + 1); + + if (have > MAX_NAME_SIZE) + offset = (int) (have - MAX_NAME_SIZE); + + /* grab the booleans */ + if ((ptr->Booleans = TYPE_CALLOC(NCURSES_SBOOL, + max(BOOLCOUNT, bool_count))) == 0 + || Read(ptr->Booleans, (unsigned) bool_count) < bool_count) { + returnDB(TGETENT_NO); + } + + /* + * If booleans end on an odd byte, skip it. The machine they + * originally wrote terminfo on must have been a 16-bit + * word-oriented machine that would trap out if you tried a + * word access off a 2-byte boundary. + */ + even_boundary(name_size + bool_count); + + /* grab the numbers */ + if (!(ptr->Numbers = TYPE_CALLOC(NCURSES_INT2, max(NUMCOUNT, num_count))) + || !read_numbers(buf, num_count)) { + returnDB(TGETENT_NO); + } + convert_numbers(buf, ptr->Numbers, num_count); + + if ((ptr->Strings = TYPE_CALLOC(char *, max(STRCOUNT, str_count))) == 0) { + returnDB(TGETENT_NO); + } + + if (str_count) { + /* grab the string offsets */ + if (!read_shorts(buf, str_count)) { + returnDB(TGETENT_NO); + } + /* finally, grab the string table itself */ + if (Read(string_table, (unsigned) str_size) != str_size) { + returnDB(TGETENT_NO); + } + convert_strings(buf, ptr->Strings, str_count, str_size, string_table); + } +#if NCURSES_XNAMES + + ptr->num_Booleans = BOOLCOUNT; + ptr->num_Numbers = NUMCOUNT; + ptr->num_Strings = STRCOUNT; + + /* + * Read extended entries, if any, after the normal end of terminfo data. + */ + even_boundary(str_size); + TR(TRACE_DATABASE, ("READ extended_header @%d", offset)); + if (_nc_user_definable && read_shorts(buf, 5) && valid_shorts(buf, 5)) { + int ext_bool_count = MyNumber(buf + 0); + int ext_num_count = MyNumber(buf + 2); + int ext_str_count = MyNumber(buf + 4); + int ext_str_usage = MyNumber(buf + 6); + int ext_str_limit = MyNumber(buf + 8); + unsigned need = (unsigned) (ext_bool_count + ext_num_count + ext_str_count); + int base = 0; + + if ((int) need >= (max_entry_size / 2) + || ext_str_usage >= max_entry_size + || ext_str_limit >= max_entry_size + || ext_bool_count < 0 + || ext_num_count < 0 + || ext_str_count < 0 + || ext_str_usage < 0 + || ext_str_limit < 0) { + returnDB(TGETENT_NO); + } + + ptr->num_Booleans = UShort(BOOLCOUNT + ext_bool_count); + ptr->num_Numbers = UShort(NUMCOUNT + ext_num_count); + ptr->num_Strings = UShort(STRCOUNT + ext_str_count); + + TYPE_REALLOC(NCURSES_SBOOL, ptr->num_Booleans, ptr->Booleans); + TYPE_REALLOC(NCURSES_INT2, ptr->num_Numbers, ptr->Numbers); + TYPE_REALLOC(char *, ptr->num_Strings, ptr->Strings); + + TR(TRACE_DATABASE, ("extended header: " + "bool %d, " + "number %d, " + "string %d(%d:%d)", + ext_bool_count, + ext_num_count, + ext_str_count, + ext_str_usage, + ext_str_limit)); + + TR(TRACE_DATABASE, ("READ %d extended-booleans @%d", + ext_bool_count, offset)); + if ((ptr->ext_Booleans = UShort(ext_bool_count)) != 0) { + if (Read(ptr->Booleans + BOOLCOUNT, (unsigned) + ext_bool_count) != ext_bool_count) { + returnDB(TGETENT_NO); + } + } + even_boundary(ext_bool_count); + + TR(TRACE_DATABASE, ("READ %d extended-numbers @%d", + ext_num_count, offset)); + if ((ptr->ext_Numbers = UShort(ext_num_count)) != 0) { + if (!read_numbers(buf, ext_num_count)) { + returnDB(TGETENT_NO); + } + TR(TRACE_DATABASE, ("Before converting extended-numbers")); + convert_numbers(buf, ptr->Numbers + NUMCOUNT, ext_num_count); + } + + TR(TRACE_DATABASE, ("READ extended-offsets @%d", offset)); + if ((ext_str_count + (int) need) >= (max_entry_size / 2)) { + returnDB(TGETENT_NO); + } + if ((ext_str_count || need) + && !read_shorts(buf, ext_str_count + (int) need)) { + returnDB(TGETENT_NO); + } + + TR(TRACE_DATABASE, ("READ %d bytes of extended-strings @%d", + ext_str_limit, offset)); + + if (ext_str_limit) { + ptr->ext_str_table = typeMalloc(char, (size_t) ext_str_limit); + if (ptr->ext_str_table == 0) { + returnDB(TGETENT_NO); + } + if (Read(ptr->ext_str_table, (unsigned) ext_str_limit) != ext_str_limit) { + returnDB(TGETENT_NO); + } + TR(TRACE_DATABASE, ("first extended-string is %s", _nc_visbuf(ptr->ext_str_table))); + } + + if ((ptr->ext_Strings = UShort(ext_str_count)) != 0) { + int check = (ext_bool_count + ext_num_count + ext_str_count); + + TR(TRACE_DATABASE, + ("Before computing extended-string capabilities " + "str_count=%d, ext_str_count=%d", + str_count, ext_str_count)); + convert_strings(buf, ptr->Strings + str_count, ext_str_count, + ext_str_limit, ptr->ext_str_table); + for (i = ext_str_count - 1; i >= 0; i--) { + TR(TRACE_DATABASE, ("MOVE from [%d:%d] %s", + i, i + str_count, + _nc_visbuf(ptr->Strings[i + str_count]))); + ptr->Strings[i + STRCOUNT] = ptr->Strings[i + str_count]; + if (VALID_STRING(ptr->Strings[i + STRCOUNT])) { + base += (int) (strlen(ptr->Strings[i + STRCOUNT]) + 1); + ++check; + } + TR(TRACE_DATABASE, ("... to [%d] %s", + i + STRCOUNT, + _nc_visbuf(ptr->Strings[i + STRCOUNT]))); + } + TR(TRACE_DATABASE, ("Check table-size: %d/%d", check, ext_str_usage)); +#if 0 + /* + * Phasing in a proper check will be done "later". + */ + if (check != ext_str_usage) + returnDB(TGETENT_NO); +#endif + } + + if (need) { + if (ext_str_count >= (max_entry_size / 2)) { + returnDB(TGETENT_NO); + } + if ((ptr->ext_Names = TYPE_CALLOC(char *, need)) == 0) { + returnDB(TGETENT_NO); + } + TR(TRACE_DATABASE, + ("ext_NAMES starting @%d in extended_strings, first = %s", + base, _nc_visbuf(ptr->ext_str_table + base))); + convert_strings(buf + (2 * ext_str_count), + ptr->ext_Names, + (int) need, + ext_str_limit, ptr->ext_str_table + base); + } + + TR(TRACE_DATABASE, + ("...done reading terminfo bool %d(%d) num %d(%d) str %d(%d)", + ptr->num_Booleans, ptr->ext_Booleans, + ptr->num_Numbers, ptr->ext_Numbers, + ptr->num_Strings, ptr->ext_Strings)); + + TR(TRACE_DATABASE, ("extend: num_Booleans:%d", ptr->num_Booleans)); + } else +#endif /* NCURSES_XNAMES */ + { + TR(TRACE_DATABASE, ("...done reading terminfo bool %d num %d str %d", + bool_count, num_count, str_count)); +#if NCURSES_XNAMES + TR(TRACE_DATABASE, ("normal: num_Booleans:%d", ptr->num_Booleans)); +#endif + } + + for (i = bool_count; i < BOOLCOUNT; i++) + ptr->Booleans[i] = FALSE; + for (i = num_count; i < NUMCOUNT; i++) + ptr->Numbers[i] = ABSENT_NUMERIC; + for (i = str_count; i < STRCOUNT; i++) + ptr->Strings[i] = ABSENT_STRING; + + returnDB(TGETENT_YES); +} + +/* + * int + * _nc_read_file_entry(filename, ptr) + * + * Read the compiled terminfo entry in the given file into the + * structure pointed to by ptr, allocating space for the string + * table. + */ +NCURSES_EXPORT(int) +_nc_read_file_entry(const char *const filename, TERMTYPE2 *ptr) +/* return 1 if read, 0 if not found or garbled */ +{ + FILE *fp = 0; + int code; + + if (_nc_access(filename, R_OK) < 0 + || (fp = safe_fopen(filename, BIN_R)) == 0) { + TR(TRACE_DATABASE, ("cannot open terminfo %s (errno=%d)", filename, errno)); + code = TGETENT_NO; + } else { + int limit; + char buffer[MAX_ENTRY_SIZE + 1]; + + if ((limit = (int) fread(buffer, sizeof(char), sizeof(buffer), fp)) + > 0) { + + TR(TRACE_DATABASE, ("read terminfo %s", filename)); + if ((code = _nc_read_termtype(ptr, buffer, limit)) == TGETENT_NO) { + _nc_free_termtype2(ptr); + } + } else { + code = TGETENT_NO; + } + fclose(fp); + } + + return (code); +} + +#if USE_HASHED_DB +/* + * Return if if we can build the filename of a ".db" file. + */ +static bool +make_db_filename(char *filename, unsigned limit, const char *const path) +{ + static const char suffix[] = DBM_SUFFIX; + + size_t lens = sizeof(suffix) - 1; + size_t size = strlen(path); + size_t test = lens + size; + bool result = FALSE; + + if (test < limit) { + if (size >= lens + && !strcmp(path + size - lens, suffix)) + _nc_STRCPY(filename, path, limit); + else + _nc_SPRINTF(filename, _nc_SLIMIT(limit) "%s%s", path, suffix); + result = TRUE; + } + return result; +} +#endif + +/* + * Return true if we can build the name of a filesystem entry. + */ +static bool +make_dir_filename(char *filename, + unsigned limit, + const char *const path, + const char *name) +{ + bool result = FALSE; + +#if NCURSES_USE_TERMCAP + if (_nc_is_dir_path(path)) +#endif + { + unsigned need = (unsigned) (LEAF_LEN + 3 + strlen(path) + strlen(name)); + + if (need <= limit) { + _nc_SPRINTF(filename, _nc_SLIMIT(limit) + "%s/" LEAF_FMT "/%s", path, *name, name); + result = TRUE; + } + } + return result; +} + +static int +lookup_b64(int *target, const char **source) +{ + int result = 3; + int j; + /* + * ncurses' quickdump writes only RFC 4648 "url/filename-safe" encoding, + * but accepts RFC-3548 + */ + for (j = 0; j < 4; ++j) { + int ch = UChar(**source); + *source += 1; + if (ch >= 'A' && ch <= 'Z') { + target[j] = (ch - 'A'); + } else if (ch >= 'a' && ch <= 'z') { + target[j] = 26 + (ch - 'a'); + } else if (ch >= '0' && ch <= '9') { + target[j] = 52 + (ch - '0'); + } else if (ch == '-' || ch == '+') { + target[j] = 62; + } else if (ch == '_' || ch == '/') { + target[j] = 63; + } else if (ch == '=') { + target[j] = 64; + result--; + } else { + result = -1; + break; + } + } + return result; +} + +static int +decode_hex(const char **source) +{ + int result = 0; + int nibble; + + for (nibble = 0; nibble < 2; ++nibble) { + int ch = UChar(**source); + result <<= 4; + *source += 1; + if (ch >= '0' && ch <= '9') { + ch -= '0'; + } else if (ch >= 'A' && ch <= 'F') { + ch -= 'A'; + ch += 10; + } else if (ch >= 'a' && ch <= 'f') { + ch -= 'a'; + ch += 10; + } else { + result = -1; + break; + } + result |= ch; + } + return result; +} + +static int +decode_quickdump(char *target, const char *source) +{ + char *base = target; + int result = 0; + + if (!strncmp(source, "b64:", (size_t) 4)) { + source += 4; + while (*source != '\0') { + int bits[4]; + int ch = lookup_b64(bits, &source); + if (ch < 0 || (ch + target - base) >= MAX_ENTRY_SIZE) { + result = 0; + break; + } + result += ch; + *target++ = (char) ((bits[0] << 2) | (bits[1] >> 4)); + if (bits[2] < 64) { + *target++ = (char) ((bits[1] << 4) | (bits[2] >> 2)); + if (bits[3] < 64) { + *target++ = (char) ((bits[2] << 6) | bits[3]); + } + } + } + } else if (!strncmp(source, "hex:", (size_t) 4)) { + source += 4; + while (*source != '\0') { + int ch = decode_hex(&source); + if (ch < 0 || (target - base) >= MAX_ENTRY_SIZE) { + result = 0; + break; + } + *target++ = (char) ch; + ++result; + } + } + return result; +} + +/* + * Build a terminfo pathname and try to read the data. Returns TGETENT_YES on + * success, TGETENT_NO on failure. + */ +static int +_nc_read_tic_entry(char *filename, + unsigned limit, + const char *const path, + const char *name, + TERMTYPE2 *const tp) +{ + int code = TGETENT_NO; +#if USE_HASHED_DB + DB *capdbp; +#endif + char buffer[MAX_ENTRY_SIZE + 1]; + int used; + + TR(TRACE_DATABASE, + (T_CALLED("_nc_read_tic_entry(file=%p, path=%s, name=%s)"), + filename, path, name)); + + assert(TGETENT_YES == TRUE); /* simplify call for _nc_name_match */ + + if ((used = decode_quickdump(buffer, path)) != 0 + && (code = _nc_read_termtype(tp, buffer, used)) == TGETENT_YES + && (code = _nc_name_match(tp->term_names, name, "|")) == TGETENT_YES) { + TR(TRACE_DATABASE, ("loaded quick-dump for %s", name)); + /* shorten name shown by infocmp */ + _nc_STRCPY(filename, "$TERMINFO", limit); + } else +#if USE_HASHED_DB + if (make_db_filename(filename, limit, path) + && (capdbp = _nc_db_open(filename, FALSE)) != 0) { + + DBT key, data; + int reccnt = 0; + char *save = strdup(name); + + memset(&key, 0, sizeof(key)); + key.data = save; + key.size = strlen(save); + + /* + * This lookup could return termcap data, which we do not want. We are + * looking for compiled (binary) terminfo data. + * + * cgetent uses a two-level lookup. On the first it uses the given + * name to return a record containing only the aliases for an entry. + * On the second (using that list of aliases as a key), it returns the + * content of the terminal description. We expect second lookup to + * return data beginning with the same set of aliases. + * + * For compiled terminfo, the list of aliases in the second case will + * be null-terminated. A termcap entry will not be, and will run on + * into the description. So we can easily distinguish between the two + * (source/binary) by checking the lengths. + */ + while (_nc_db_get(capdbp, &key, &data) == 0) { + char *have = (char *) data.data; + used = (int) data.size - 1; + + if (*have++ == 0) { + if (data.size > key.size + && IS_TIC_MAGIC(have)) { + code = _nc_read_termtype(tp, have, used); + if (code == TGETENT_NO) { + _nc_free_termtype2(tp); + } + } + break; + } + + /* + * Just in case we have a corrupt database, do not waste time with + * it. + */ + if (++reccnt >= 3) + break; + + /* + * Prepare for the second level. + */ + key.data = have; + key.size = used; + } + + free(save); + } else /* may be either filesystem or flat file */ +#endif + if (make_dir_filename(filename, limit, path, name)) { + code = _nc_read_file_entry(filename, tp); + } +#if NCURSES_USE_TERMCAP + if (code != TGETENT_YES) { + code = _nc_read_termcap_entry(name, tp); + _nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX) + "%.*s", PATH_MAX - 1, _nc_get_source()); + } +#endif + returnDB(code); +} +#endif /* NCURSES_USE_DATABASE */ + +/* + * Find and read the compiled entry for a given terminal type, if it exists. + * We take pains here to make sure no combination of environment variables and + * terminal type name can be used to overrun the file buffer. + */ +NCURSES_EXPORT(int) +_nc_read_entry2(const char *const name, char *const filename, TERMTYPE2 *const tp) +{ + int code = TGETENT_NO; + + if (name == 0) + return _nc_read_entry2("", filename, tp); + + _nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX) + "%.*s", PATH_MAX - 1, name); + + if (strlen(name) == 0 + || strcmp(name, ".") == 0 + || strcmp(name, "..") == 0 + || _nc_pathlast(name) != 0 + || strchr(name, NCURSES_PATHSEP) != 0) { + TR(TRACE_DATABASE, ("illegal or missing entry name '%s'", name)); + } else { +#if NCURSES_USE_DATABASE + DBDIRS state; + int offset; + const char *path; + + _nc_first_db(&state, &offset); + code = TGETENT_ERR; + while ((path = _nc_next_db(&state, &offset)) != 0) { + code = _nc_read_tic_entry(filename, PATH_MAX, path, name, tp); + if (code == TGETENT_YES) { + _nc_last_db(); + break; + } + } +#elif NCURSES_USE_TERMCAP + if (code != TGETENT_YES) { + code = _nc_read_termcap_entry(name, tp); + _nc_SPRINTF(filename, _nc_SLIMIT(PATH_MAX) + "%.*s", PATH_MAX - 1, _nc_get_source()); + } +#endif + } + return code; +} + +#if NCURSES_EXT_NUMBERS +/* + * This entrypoint is used by tack 1.07 + */ +NCURSES_EXPORT(int) +_nc_read_entry(const char *const name, char *const filename, TERMTYPE *const tp) +{ + TERMTYPE2 dummy; + int rc; + rc = _nc_read_entry2(name, filename, &dummy); + if (rc == TGETENT_YES) + _nc_export_termtype2(tp, &dummy); + return rc; +} +#endif diff --git a/deps/ncurses-5.9/ncurses/tinfo/read_termcap.c b/deps/ncurses-6.3/ncurses/tinfo/read_termcap.c similarity index 90% rename from deps/ncurses-5.9/ncurses/tinfo/read_termcap.c rename to deps/ncurses-6.3/ncurses/tinfo/read_termcap.c index b39a5be..c9696b7 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/read_termcap.c +++ b/deps/ncurses-6.3/ncurses/tinfo/read_termcap.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -54,10 +55,9 @@ #include <ctype.h> #include <sys/types.h> -#include <sys/stat.h> #include <tic.h> -MODULE_ID("$Id: read_termcap.c,v 1.74 2010/01/23 17:57:43 tom Exp $") +MODULE_ID("$Id: read_termcap.c,v 1.102 2021/09/04 10:29:15 tom Exp $") #if !PURE_TERMINFO @@ -67,14 +67,14 @@ MODULE_ID("$Id: read_termcap.c,v 1.74 2010/01/23 17:57:43 tom Exp $") #define TC_REF_LOOP -3 #define TC_UNRESOLVED -4 /* this is not returned by BSD cgetent */ -static NCURSES_CONST char * +static const char * get_termpath(void) { - NCURSES_CONST char *result; + const char *result; if (!use_terminfo_vars() || (result = getenv("TERMPATH")) == 0) result = TERMPATH; - T(("TERMPATH is %s", result)); + TR(TRACE_DATABASE, ("TERMPATH is %s", result)); return result; } @@ -162,7 +162,7 @@ _nc_cgetset(const char *ent) return (-1); } gottoprec = 0; - (void) strcpy(toprec, ent); + _nc_STRCPY(toprec, ent, topreclen); return (0); } @@ -187,7 +187,7 @@ _nc_cgetcap(char *buf, const char *cap, int type) bp = buf; for (;;) { /* - * Skip past the current capability field - it's either the + * Skip past the current capability field - it is either the * name field if this is the first time through the loop, or * the remainder of a field whose name failed to match cap. */ @@ -295,7 +295,7 @@ _nc_getent( errno = ENOMEM; return (TC_SYS_ERR); } - (void) strcpy(record, toprec); + _nc_STRCPY(record, toprec, topreclen + BFRAG); rp = record + topreclen + 1; r_end = rp + BFRAG; current = in_array; @@ -365,7 +365,7 @@ _nc_getent( if (bp >= b_end) { int n; - n = read(fd, buf, sizeof(buf)); + n = (int) read(fd, buf, sizeof(buf)); if (n <= 0) { if (myfd) (void) close(fd); @@ -384,10 +384,17 @@ _nc_getent( c = *bp++; if (c == '\n') { lineno++; - if (rp == record || *(rp - 1) != '\\') + /* + * Unlike BSD 4.3, this ignores a backslash at the + * end of a comment-line. That makes it consistent + * with the rest of ncurses -TD + */ + if (rp == record + || *record == '#' + || *(rp - 1) != '\\') break; } - *rp++ = c; + *rp++ = (char) c; /* * Enforce loop invariant: if no room @@ -398,8 +405,8 @@ _nc_getent( unsigned pos; size_t newsize; - pos = rp - record; - newsize = r_end - record + BFRAG; + pos = (unsigned) (rp - record); + newsize = (size_t) (r_end - record + BFRAG); record = DOALLOC(newsize); if (record == 0) { if (myfd) @@ -442,8 +449,10 @@ _nc_getent( break; } - if (!foundit) + if (!foundit) { + free(record); return (TC_NOT_FOUND); + } } /* @@ -455,7 +464,7 @@ _nc_getent( register int newilen; unsigned ilen; int diff, iret, tclen, oline; - char *icap, *scan, *tc, *tcstart, *tcend; + char *icap = 0, *scan, *tc, *tcstart, *tcend; /* * Loop invariants: @@ -468,8 +477,9 @@ _nc_getent( scan = record; tc_not_resolved = FALSE; for (;;) { - if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0) + if ((tc = _nc_cgetcap(scan, "tc", '=')) == 0) { break; + } /* * Find end of tc=name and stomp on the trailing `:' @@ -483,25 +493,27 @@ _nc_getent( } } tcstart = tc - 3; - tclen = s - tcstart; + tclen = (int) (s - tcstart); tcend = s; + icap = 0; iret = _nc_getent(&icap, &ilen, &oline, current, db_array, fd, tc, depth + 1, 0); newicap = icap; /* Put into a register. */ - newilen = ilen; + newilen = (int) ilen; if (iret != TC_SUCCESS) { /* an error */ if (iret < TC_NOT_FOUND) { if (myfd) (void) close(fd); free(record); + FreeIfNeeded(icap); return (iret); } - if (iret == TC_UNRESOLVED) + if (iret == TC_UNRESOLVED) { tc_not_resolved = TRUE; - /* couldn't resolve tc */ - if (iret == TC_NOT_FOUND) { + /* couldn't resolve tc */ + } else if (iret == TC_NOT_FOUND) { *(s - 1) = ':'; scan = s - 1; tc_not_resolved = TRUE; @@ -512,7 +524,7 @@ _nc_getent( /* not interested in name field of tc'ed record */ s = newicap; while (*s != '\0' && *s++ != ':') ; - newilen -= s - newicap; + newilen -= (int) (s - newicap); newicap = s; /* make sure interpolated record is `:'-terminated */ @@ -531,10 +543,10 @@ _nc_getent( unsigned pos, tcpos, tcposend; size_t newsize; - pos = rp - record; - newsize = r_end - record + diff + BFRAG; - tcpos = tcstart - record; - tcposend = tcend - record; + pos = (unsigned) (rp - record); + newsize = (size_t) (r_end - record + diff + BFRAG); + tcpos = (unsigned) (tcstart - record); + tcposend = (unsigned) (tcend - record); record = DOALLOC(newsize); if (record == 0) { if (myfd) @@ -572,7 +584,7 @@ _nc_getent( */ if (myfd) (void) close(fd); - *len = rp - record - 1; /* don't count NUL */ + *len = (unsigned) (rp - record - 1); /* don't count NUL */ if (r_end > rp) { if ((record = DOALLOC((size_t) (rp - record))) == 0) { errno = ENOMEM; @@ -581,8 +593,9 @@ _nc_getent( } *cap = record; - if (tc_not_resolved) + if (tc_not_resolved) { return (TC_UNRESOLVED); + } return (current); } @@ -697,8 +710,6 @@ _nc_nfcmp(const char *nf, char *rec) #define PVECSIZ 32 /* max number of names in path */ #define TBUFSIZ (2048*2) -static char *tbuf; - /* * On entry, srcp points to a non ':' character which is the beginning of the * token, if any. We'll try to return a string that doesn't end with a ':'. @@ -760,7 +771,7 @@ copy_tc_token(char *dst, const char *src, size_t len) dst = 0; break; } - *dst++ = ch; + *dst++ = (char) ch; } return dst; } @@ -776,25 +787,23 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name) register char *p; register char *cp; char *dummy = NULL; - char **fname; + CGETENT_CONST char **fname; char *home; int i; char pathbuf[PBUFSIZ]; /* holds raw path of filenames */ - char *pathvec[PVECSIZ]; /* to point to names in pathbuf */ - char **pvec; /* holds usable tail of path vector */ - NCURSES_CONST char *termpath; + CGETENT_CONST char *pathvec[PVECSIZ]; /* point to names in pathbuf */ + const char *termpath; string_desc desc; + *lineno = 1; fname = pathvec; - pvec = pathvec; - tbuf = bp; p = pathbuf; cp = use_terminfo_vars()? getenv("TERMCAP") : NULL; /* * TERMCAP can have one of two things in it. It can be the name of a file * to use instead of /etc/termcap. In this case it better start with a - * "/". Or it can be an entry to use so we don't have to read the file. + * "/". Or it can be an entry to use so we don't have to read the file. * In this case it has to already have the newlines crunched out. If * TERMCAP does not hold a file name then a path of names is searched * instead. The path is found in the TERMPATH variable, or becomes @@ -812,10 +821,11 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name) if ((home = getenv("HOME")) != 0 && *home != '\0' && strchr(home, ' ') == 0 && strlen(home) < sizeof(temp) - 10) { /* setup path */ - sprintf(temp, "%s/", home); /* $HOME first */ + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "%s/", home); /* $HOME first */ } /* if no $HOME look in current directory */ - strcat(temp, ".termcap"); + _nc_STRCAT(temp, ".termcap", sizeof(temp)); _nc_safe_strcat(&desc, temp); _nc_safe_strcat(&desc, " "); _nc_safe_strcat(&desc, get_termpath()); @@ -841,6 +851,9 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name) } } *fname = 0; /* mark end of vector */ +#if !HAVE_BSD_CGETENT + (void) _nc_cgetset(0); +#endif if (_nc_is_abs_path(cp)) { if (_nc_cgetset(cp) < 0) { return (TC_SYS_ERR); @@ -853,6 +866,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name) * empty fields, and mistakenly use the last valid cap entry instead of * the first (breaks tc= includes) */ + *bp = '\0'; if (i >= 0) { char *pd, *ps, *tok; int endflag = FALSE; @@ -874,7 +888,7 @@ _nc_tgetent(char *bp, char **sourcename, int *lineno, const char *name) } if (ignore != TRUE) { list[count++] = tok; - pd = copy_tc_token(pd, tok, TBUFSIZ - (2 + pd - bp)); + pd = copy_tc_token(pd, tok, (size_t) (TBUFSIZ - (2 + pd - bp))); if (pd == 0) { i = -1; break; @@ -932,7 +946,7 @@ add_tc(char *termpaths[], char *path, int count) if (count < MAXPATHS && _nc_access(path, R_OK) == 0) { termpaths[count++] = path; - T(("Adding termpath %s", path)); + TR(TRACE_DATABASE, ("Adding termpath %s", path)); } termpaths[count] = 0; if (save != 0) @@ -943,7 +957,7 @@ add_tc(char *termpaths[], char *path, int count) #endif /* !USE_GETCAP */ NCURSES_EXPORT(int) -_nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) +_nc_read_termcap_entry(const char *const tn, TERMTYPE2 *const tp) { int found = TGETENT_NO; ENTRY *ep; @@ -952,25 +966,26 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) #endif #if USE_GETCAP char *p, tc[TBUFSIZ]; + char *tc_buf = 0; +#define MY_SIZE sizeof(tc) - 1 int status; static char *source; static int lineno; - T(("read termcap entry for %s", tn)); + TR(TRACE_DATABASE, ("read termcap entry for %s", tn)); if (strlen(tn) == 0 || strcmp(tn, ".") == 0 || strcmp(tn, "..") == 0 || _nc_pathlast(tn) != 0) { - T(("illegal or missing entry name '%s'", tn)); + TR(TRACE_DATABASE, ("illegal or missing entry name '%s'", tn)); return TGETENT_NO; } if (use_terminfo_vars() && (p = getenv("TERMCAP")) != 0 && !_nc_is_abs_path(p) && _nc_name_match(p, tn, "|:")) { /* TERMCAP holds a termcap entry */ - strncpy(tc, p, sizeof(tc) - 1); - tc[sizeof(tc) - 1] = '\0'; + tc_buf = strdup(p); _nc_set_source("TERMCAP"); } else { /* we're using getcap(3) */ @@ -979,8 +994,13 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) _nc_curr_line = lineno; _nc_set_source(source); + tc_buf = tc; } - _nc_read_entry_source((FILE *) 0, tc, FALSE, FALSE, NULLHOOK); + if (tc_buf == 0) + return (TGETENT_ERR); + _nc_read_entry_source((FILE *) 0, tc_buf, FALSE, TRUE, NULLHOOK); + if (tc_buf != tc) + free(tc_buf); #else /* * Here is what the 4.4BSD termcap(3) page prescribes: @@ -1014,7 +1034,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) int j, k; bool use_buffer = FALSE; bool normal = TRUE; - char tc_buf[1024]; + char *tc_buf = 0; char pathbuf[PATH_MAX]; char *copied = 0; char *cp; @@ -1026,8 +1046,8 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) ADD_TC(tc, 0); normal = FALSE; } else if (_nc_name_match(tc, tn, "|:")) { /* treat as a capability file */ - use_buffer = TRUE; - (void) sprintf(tc_buf, "%.*s\n", (int) sizeof(tc_buf) - 2, tc); + tc_buf = strdup(tc); + use_buffer = (tc_buf != 0); normal = FALSE; } } @@ -1044,13 +1064,16 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) } } -#define PRIVATE_CAP "%s/.termcap" +#define PRIVATE_CAP "%.*s/.termcap" if (use_terminfo_vars() && (h = getenv("HOME")) != NULL && *h != '\0' && (strlen(h) + sizeof(PRIVATE_CAP)) < PATH_MAX) { /* user's .termcap, if any, should override it */ - (void) strcpy(envhome, h); - (void) sprintf(pathbuf, PRIVATE_CAP, envhome); + _nc_STRCPY(envhome, h, sizeof(envhome)); + _nc_SPRINTF(pathbuf, _nc_SLIMIT(sizeof(pathbuf)) + PRIVATE_CAP, + (int) (sizeof(pathbuf) - sizeof(PRIVATE_CAP)), + envhome); ADD_TC(pathbuf, filecount); } } @@ -1063,7 +1086,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) for (j = 0; j < filecount; j++) { bool omit = FALSE; if (stat(termpaths[j], &test_stat[j]) != 0 - || (test_stat[j].st_mode & S_IFMT) != S_IFREG) { + || !S_ISREG(test_stat[j].st_mode)) { omit = TRUE; } else { for (k = 0; k < j; k++) { @@ -1075,7 +1098,7 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) } } if (omit) { - T(("Path %s is a duplicate", termpaths[j])); + TR(TRACE_DATABASE, ("Path %s is a duplicate", termpaths[j])); for (k = j + 1; k < filecount; k++) { termpaths[k - 1] = termpaths[k]; test_stat[k - 1] = test_stat[k]; @@ -1092,17 +1115,18 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) /* * We don't suppress warning messages here. The presumption is - * that since it's just a single entry, they won't be a pain. + * that since it is just a single entry, they won't be a pain. */ _nc_read_entry_source((FILE *) 0, tc_buf, FALSE, FALSE, NULLHOOK); + free(tc_buf); } else { int i; for (i = 0; i < filecount; i++) { - T(("Looking for %s in %s", tn, termpaths[i])); + TR(TRACE_DATABASE, ("Looking for %s in %s", tn, termpaths[i])); if (_nc_access(termpaths[i], R_OK) == 0 - && (fp = fopen(termpaths[i], "r")) != (FILE *) 0) { + && (fp = safe_fopen(termpaths[i], "r")) != (FILE *) 0) { _nc_set_source(termpaths[i]); /* @@ -1124,7 +1148,8 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) return (TGETENT_ERR); /* resolve all use references */ - _nc_resolve_uses2(TRUE, FALSE); + if (_nc_resolve_uses2(TRUE, FALSE) != TRUE) + return (TGETENT_ERR); /* find a terminal matching tn, if we can */ #if USE_GETCAP_CACHE @@ -1138,11 +1163,10 @@ _nc_read_termcap_entry(const char *const tn, TERMTYPE *const tp) * from the list. */ *tp = ep->tterm; - _nc_delink_entry(_nc_head, &(ep->tterm)); - free(ep); + _nc_free_entry(_nc_head, &(ep->tterm)); /* - * OK, now try to write the type to user's terminfo directory. + * OK, now try to write the type to user's terminfo directory. * Next time he loads this, it will come through terminfo. * * Advantage: Second and subsequent fetches of this entry will diff --git a/deps/ncurses-5.9/ncurses/tinfo/strings.c b/deps/ncurses-6.3/ncurses/tinfo/strings.c similarity index 92% rename from deps/ncurses-5.9/ncurses/tinfo/strings.c rename to deps/ncurses-6.3/ncurses/tinfo/strings.c index 78cd2ef..a1d8beb 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/strings.c +++ b/deps/ncurses-6.3/ncurses/tinfo/strings.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2000-2003,2007 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2000-2012,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 * @@ -35,8 +36,9 @@ **/ #include <curses.priv.h> +#include <tic.h> -MODULE_ID("$Id: strings.c,v 1.6 2007/08/11 17:12:17 tom Exp $") +MODULE_ID("$Id: strings.c,v 1.10 2020/02/02 23:34:34 tom Exp $") /**************************************************************************** * Useful string functions (especially for mvcur) @@ -105,12 +107,12 @@ _nc_str_copy(string_desc * dst, string_desc * src) NCURSES_EXPORT(bool) _nc_safe_strcat(string_desc * dst, const char *src) { - if (src != 0) { + if (PRESENT(src)) { size_t len = strlen(src); if (len < dst->s_size) { if (dst->s_tail != 0) { - strcpy(dst->s_tail, src); + _nc_STRCPY(dst->s_tail, src, dst->s_size); dst->s_tail += len; } dst->s_size -= len; @@ -126,12 +128,12 @@ _nc_safe_strcat(string_desc * dst, const char *src) NCURSES_EXPORT(bool) _nc_safe_strcpy(string_desc * dst, const char *src) { - if (src != 0) { + if (PRESENT(src)) { size_t len = strlen(src); if (len < dst->s_size) { if (dst->s_head != 0) { - strcpy(dst->s_head, src); + _nc_STRCPY(dst->s_head, src, dst->s_size); dst->s_tail = dst->s_head + len; } dst->s_size = dst->s_init - len; diff --git a/deps/ncurses-6.3/ncurses/tinfo/tinfo_driver.c b/deps/ncurses-6.3/ncurses/tinfo/tinfo_driver.c new file mode 100644 index 0000000..fb6496f --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/tinfo_driver.c @@ -0,0 +1,1559 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2008-2016,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 * + * and: Thomas E. Dickey * + ****************************************************************************/ + +#include <curses.priv.h> +#define CUR TerminalType((TERMINAL*)TCB). +#include <tic.h> +#include <termcap.h> /* ospeed */ + +#if HAVE_NANOSLEEP +#include <time.h> +#if HAVE_SYS_TIME_H +#include <sys/time.h> /* needed for MacOS X DP3 */ +#endif +#endif + +#if HAVE_SIZECHANGE +# if !defined(sun) || !TERMIOS +# if HAVE_SYS_IOCTL_H +# include <sys/ioctl.h> +# endif +# endif +#endif + +MODULE_ID("$Id: tinfo_driver.c,v 1.72 2021/06/17 21:30:22 tom Exp $") + +/* + * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, + * Solaris, IRIX) define TIOCGWINSZ and struct winsize. + */ +#ifdef TIOCGSIZE +# define IOCTL_WINSIZE TIOCGSIZE +# define STRUCT_WINSIZE struct ttysize +# define WINSIZE_ROWS(n) (int)n.ts_lines +# define WINSIZE_COLS(n) (int)n.ts_cols +#else +# ifdef TIOCGWINSZ +# define IOCTL_WINSIZE TIOCGWINSZ +# define STRUCT_WINSIZE struct winsize +# define WINSIZE_ROWS(n) (int)n.ws_row +# define WINSIZE_COLS(n) (int)n.ws_col +# endif +#endif + +/* + * These should be screen structure members. They need to be globals for + * historical reasons. So we assign them in start_color() and also in + * set_term()'s screen-switching logic. + */ +#if USE_REENTRANT +NCURSES_EXPORT(int) +NCURSES_PUBLIC_VAR(COLOR_PAIRS) (void) +{ + return CURRENT_SCREEN ? CURRENT_SCREEN->_pair_count : -1; +} +NCURSES_EXPORT(int) +NCURSES_PUBLIC_VAR(COLORS) (void) +{ + return CURRENT_SCREEN ? CURRENT_SCREEN->_color_count : -1; +} +#else +NCURSES_EXPORT_VAR(int) COLOR_PAIRS = 0; +NCURSES_EXPORT_VAR(int) COLORS = 0; +#endif + +#define TCBMAGIC NCDRV_MAGIC(NCDRV_TINFO) +#define AssertTCB() assert(TCB!=0 && TCB->magic==TCBMAGIC) +#define SetSP() assert(TCB->csp!=0); sp = TCB->csp; (void) sp + +/* + * This routine needs to do all the work to make curscr look + * like newscr. + */ +static int +drv_doupdate(TERMINAL_CONTROL_BLOCK * TCB) +{ + AssertTCB(); + return TINFO_DOUPDATE(TCB->csp); +} + +static const char * +drv_Name(TERMINAL_CONTROL_BLOCK * TCB) +{ + (void) TCB; + return "tinfo"; +} + +static void +get_baudrate(TERMINAL *termp) +{ + int my_ospeed; + int result; + if (GET_TTY(termp->Filedes, &termp->Nttyb) == OK) { +#ifdef TERMIOS + termp->Nttyb.c_oflag &= (unsigned) (~OFLAGS_TABS); +#elif defined(EXP_WIN32_DRIVER) + /* noop */ +#else + termp->Nttyb.sg_flags &= (unsigned) (~XTABS); +#endif + } +#ifdef USE_OLD_TTY + result = (int) cfgetospeed(&(termp->Nttyb)); + my_ospeed = (NCURSES_OSPEED) _nc_ospeed(result); +#else /* !USE_OLD_TTY */ +#ifdef TERMIOS + my_ospeed = (NCURSES_OSPEED) cfgetospeed(&(termp->Nttyb)); +#elif defined(EXP_WIN32_DRIVER) + /* noop */ + my_ospeed = 0; +#else + my_ospeed = (NCURSES_OSPEED) termp->Nttyb.sg_ospeed; +#endif + result = _nc_baudrate(my_ospeed); +#endif + termp->_baudrate = result; + ospeed = (NCURSES_OSPEED) my_ospeed; +} + +#undef SETUP_FAIL +#define SETUP_FAIL FALSE + +#define NO_COPY {} + +static bool +drv_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, const char *tname, int *errret) +{ + bool result = FALSE; + int status; + TERMINAL *termp; + SCREEN *sp; + + START_TRACE(); + T((T_CALLED("tinfo::drv_CanHandle(%p)"), (void *) TCB)); + + assert(TCB != 0 && tname != 0); + termp = (TERMINAL *) TCB; + sp = TCB->csp; + TCB->magic = TCBMAGIC; + +#if (NCURSES_USE_DATABASE || NCURSES_USE_TERMCAP) + status = _nc_setup_tinfo(tname, &TerminalType(termp)); + T(("_nc_setup_tinfo returns %d", status)); +#else + T(("no database available")); + status = TGETENT_NO; +#endif + + /* try fallback list if entry on disk */ + if (status != TGETENT_YES) { + const TERMTYPE2 *fallback = _nc_fallback2(tname); + + if (fallback) { + T(("found fallback entry")); + TerminalType(termp) = *fallback; + status = TGETENT_YES; + } + } + + if (status != TGETENT_YES) { + NCURSES_SP_NAME(del_curterm) (NCURSES_SP_ARGx termp); + if (status == TGETENT_ERR) { + ret_error0(status, "terminals database is inaccessible\n"); + } else if (status == TGETENT_NO) { + ret_error1(status, "unknown terminal type.\n", + tname, NO_COPY); + } else { + ret_error0(status, "unexpected return-code\n"); + } + } + result = TRUE; +#if NCURSES_EXT_NUMBERS + _nc_export_termtype2(&termp->type, &TerminalType(termp)); +#endif +#if !USE_REENTRANT + save_ttytype(termp); +#endif + + if (command_character) + _nc_tinfo_cmdch(termp, *command_character); + + /* + * If an application calls setupterm() rather than initscr() or + * newterm(), we will not have the def_prog_mode() call in + * _nc_setupscreen(). Do it now anyway, so we can initialize the + * baudrate. + */ + if (sp == 0 && NC_ISATTY(termp->Filedes)) { + get_baudrate(termp); + } +#if NCURSES_EXT_NUMBERS +#define cleanup_termtype() \ + _nc_free_termtype2(&TerminalType(termp)); \ + _nc_free_termtype(&termp->type) +#else +#define cleanup_termtype() \ + _nc_free_termtype2(&TerminalType(termp)) +#endif + + if (generic_type) { + /* + * BSD 4.3's termcap contains mis-typed "gn" for wy99. Do a sanity + * check before giving up. + */ + if ((VALID_STRING(cursor_address) + || (VALID_STRING(cursor_down) && VALID_STRING(cursor_home))) + && VALID_STRING(clear_screen)) { + cleanup_termtype(); + ret_error1(TGETENT_YES, "terminal is not really generic.\n", + tname, NO_COPY); + } else { + cleanup_termtype(); + ret_error1(TGETENT_NO, "I need something more specific.\n", + tname, NO_COPY); + } + } + if (hard_copy) { + cleanup_termtype(); + ret_error1(TGETENT_YES, "I can't handle hardcopy terminals.\n", + tname, NO_COPY); + } + + returnBool(result); +} + +static int +drv_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, int beepFlag) +{ + SCREEN *sp; + int res = ERR; + + AssertTCB(); + SetSP(); + + /* FIXME: should make sure that we are not in altchar mode */ + if (beepFlag) { + if (bell) { + res = NCURSES_PUTP2("bell", bell); + NCURSES_SP_NAME(_nc_flush) (sp); + } else if (flash_screen) { + res = NCURSES_PUTP2("flash_screen", flash_screen); + NCURSES_SP_NAME(_nc_flush) (sp); + } + } else { + if (flash_screen) { + res = NCURSES_PUTP2("flash_screen", flash_screen); + NCURSES_SP_NAME(_nc_flush) (sp); + } else if (bell) { + res = NCURSES_PUTP2("bell", bell); + NCURSES_SP_NAME(_nc_flush) (sp); + } + } + return res; +} + +/* + * 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 + * also used in the FreeBSD syscons. + */ +static int +toggled_colors(int c) +{ + if (c < 16) { + static const int table[] = + {0, 4, 2, 6, 1, 5, 3, 7, + 8, 12, 10, 14, 9, 13, 11, 15}; + c = table[c]; + } + return c; +} + +static int +drv_print(TERMINAL_CONTROL_BLOCK * TCB, char *data, int len) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +#if NCURSES_EXT_FUNCS + return NCURSES_SP_NAME(mcprint) (TCB->csp, data, len); +#else + return ERR; +#endif +} + +static int +drv_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB, int fg, int bg) +{ + SCREEN *sp; + int code = ERR; + + AssertTCB(); + SetSP(); + + if (sp != 0 && orig_pair && orig_colors && (initialize_pair != 0)) { +#if NCURSES_EXT_FUNCS + sp->_default_color = isDefaultColor(fg) || isDefaultColor(bg); + sp->_has_sgr_39_49 = (NCURSES_SP_NAME(tigetflag) (NCURSES_SP_ARGx + "AX") + == TRUE); + sp->_default_fg = isDefaultColor(fg) ? COLOR_DEFAULT : fg; + sp->_default_bg = isDefaultColor(bg) ? COLOR_DEFAULT : bg; + if (sp->_color_pairs != 0) { + bool save = sp->_default_color; + sp->_default_color = TRUE; + NCURSES_SP_NAME(init_pair) (NCURSES_SP_ARGx + 0, + (short)fg, + (short)bg); + sp->_default_color = save; + } +#endif + code = OK; + } + return (code); +} + +static void +drv_setcolor(TERMINAL_CONTROL_BLOCK * TCB, + int fore, + int color, + NCURSES_SP_OUTC outc) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); + + if (fore) { + if (set_a_foreground) { + TPUTS_TRACE("set_a_foreground"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_a_foreground, color), 1, outc); + } else { + TPUTS_TRACE("set_foreground"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_foreground, + toggled_colors(color)), 1, outc); + } + } else { + if (set_a_background) { + TPUTS_TRACE("set_a_background"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_a_background, color), 1, outc); + } else { + TPUTS_TRACE("set_background"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_background, + toggled_colors(color)), 1, outc); + } + } +} + +static bool +drv_rescol(TERMINAL_CONTROL_BLOCK * TCB) +{ + bool result = FALSE; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + if (orig_pair != 0) { + NCURSES_PUTP2("orig_pair", orig_pair); + result = TRUE; + } + return result; +} + +static bool +drv_rescolors(TERMINAL_CONTROL_BLOCK * TCB) +{ + int result = FALSE; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + if (orig_colors != 0) { + NCURSES_PUTP2("orig_colors", orig_colors); + result = TRUE; + } + return result; +} + +static int +drv_size(TERMINAL_CONTROL_BLOCK * TCB, int *linep, int *colp) +{ + SCREEN *sp; + bool useEnv = TRUE; + bool useTioctl = TRUE; + + AssertTCB(); + sp = TCB->csp; /* can be null here */ + + if (sp) { + useEnv = sp->_use_env; + useTioctl = sp->use_tioctl; + } else { + useEnv = _nc_prescreen.use_env; + useTioctl = _nc_prescreen.use_tioctl; + } + +#ifdef EXP_WIN32_DRIVER + /* If we are here, then Windows console is used in terminfo mode. + We need to figure out the size using the console API + */ + _nc_console_size(linep, colp); + T(("screen size: winconsole lines = %d columns = %d", *linep, *colp)); +#else + /* figure out the size of the screen */ + T(("screen size: terminfo lines = %d columns = %d", lines, columns)); + + *linep = (int) lines; + *colp = (int) columns; +#endif + if (useEnv || useTioctl) { + int value; + +#ifdef __EMX__ + { + int screendata[2]; + _scrsize(screendata); + *colp = screendata[0]; + *linep = ((sp != 0 && sp->_filtered) + ? 1 + : screendata[1]); + T(("EMX screen size: environment LINES = %d COLUMNS = %d", + *linep, *colp)); + } +#endif +#if HAVE_SIZECHANGE + /* try asking the OS */ + { + TERMINAL *termp = (TERMINAL *) TCB; + if (NC_ISATTY(termp->Filedes)) { + STRUCT_WINSIZE size; + + errno = 0; + do { + if (ioctl(termp->Filedes, IOCTL_WINSIZE, &size) >= 0) { + *linep = ((sp != 0 && sp->_filtered) + ? 1 + : WINSIZE_ROWS(size)); + *colp = WINSIZE_COLS(size); + T(("SYS screen size: environment LINES = %d COLUMNS = %d", + *linep, *colp)); + break; + } + } while + (errno == EINTR); + } + } +#endif /* HAVE_SIZECHANGE */ + + if (useEnv) { + if (useTioctl) { + /* + * If environment variables are used, update them. + */ + if ((sp == 0 || !sp->_filtered) && _nc_getenv_num("LINES") > 0) { + _nc_setenv_num("LINES", *linep); + } + if (_nc_getenv_num("COLUMNS") > 0) { + _nc_setenv_num("COLUMNS", *colp); + } + } + + /* + * Finally, look for environment variables. + * + * Solaris lets users override either dimension with an environment + * variable. + */ + if ((value = _nc_getenv_num("LINES")) > 0) { + *linep = value; + T(("screen size: environment LINES = %d", *linep)); + } + if ((value = _nc_getenv_num("COLUMNS")) > 0) { + *colp = value; + T(("screen size: environment COLUMNS = %d", *colp)); + } + } + + /* if we can't get dynamic info about the size, use static */ + if (*linep <= 0) { + *linep = (int) lines; + } + if (*colp <= 0) { + *colp = (int) columns; + } + + /* the ultimate fallback, assume fixed 24x80 size */ + if (*linep <= 0) { + *linep = 24; + } + if (*colp <= 0) { + *colp = 80; + } + + /* + * Put the derived values back in the screen-size caps, so + * tigetnum() and tgetnum() will do the right thing. + */ + lines = (short) (*linep); + columns = (short) (*colp); + } + + T(("screen size is %dx%d", *linep, *colp)); + return OK; +} + +static int +drv_getsize(TERMINAL_CONTROL_BLOCK * TCB, int *l, int *c) +{ + AssertTCB(); + assert(l != 0 && c != 0); + *l = lines; + *c = columns; + return OK; +} + +static int +drv_setsize(TERMINAL_CONTROL_BLOCK * TCB, int l, int c) +{ + AssertTCB(); + lines = (short) l; + columns = (short) c; + return OK; +} + +static int +drv_sgmode(TERMINAL_CONTROL_BLOCK * TCB, int setFlag, TTY * buf) +{ + SCREEN *sp = TCB->csp; + TERMINAL *_term = (TERMINAL *) TCB; + int result = OK; + + AssertTCB(); + if (setFlag) { + for (;;) { + if (SET_TTY(_term->Filedes, buf) != 0) { + if (errno == EINTR) + continue; + if (errno == ENOTTY) { + if (sp) + sp->_notty = TRUE; + } + result = ERR; + } + break; + } + } else { + for (;;) { + if (GET_TTY(_term->Filedes, buf) != 0) { + if (errno == EINTR) + continue; + result = ERR; + } + break; + } + } + return result; +} + +static int +drv_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag) +{ + SCREEN *sp; + TERMINAL *_term = (TERMINAL *) TCB; + int code = ERR; + + AssertTCB(); + sp = TCB->csp; + + if (progFlag) /* prog mode */ + { + if (defFlag) { + /* def_prog_mode */ + /* + * Turn off the XTABS bit in the tty structure if it was on. + */ + if ((drv_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) { +#ifdef TERMIOS + _term->Nttyb.c_oflag &= (unsigned) ~OFLAGS_TABS; +#elif defined(EXP_WIN32_DRIVER) + /* noop */ +#else + _term->Nttyb.sg_flags &= (unsigned) ~XTABS; +#endif + code = OK; + } + } else { + /* reset_prog_mode */ + if (drv_sgmode(TCB, TRUE, &(_term->Nttyb)) == OK) { + if (sp) { + if (sp->_keypad_on) + _nc_keypad(sp, TRUE); + } + code = OK; + } + } + } else { /* shell mode */ + if (defFlag) { + /* def_shell_mode */ + /* + * If XTABS was on, remove the tab and backtab capabilities. + */ + if (drv_sgmode(TCB, FALSE, &(_term->Ottyb)) == OK) { +#ifdef TERMIOS + if (_term->Ottyb.c_oflag & OFLAGS_TABS) + tab = back_tab = NULL; +#elif defined(EXP_WIN32_DRIVER) + /* noop */ +#else + if (_term->Ottyb.sg_flags & XTABS) + tab = back_tab = NULL; +#endif + code = OK; + } + } else { + /* reset_shell_mode */ + if (sp) { + _nc_keypad(sp, FALSE); + NCURSES_SP_NAME(_nc_flush) (sp); + } + code = drv_sgmode(TCB, TRUE, &(_term->Ottyb)); + } + } + return (code); +} + +static void +drv_wrap(SCREEN *sp) +{ + if (sp) { + sp->_mouse_wrap(sp); + NCURSES_SP_NAME(_nc_screen_wrap) (sp); + NCURSES_SP_NAME(_nc_mvcur_wrap) (sp); /* wrap up cursor addressing */ + } +} + +static void +drv_release(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED) +{ +} + +# define SGR0_TEST(mode) (mode != 0) && (exit_attribute_mode == 0 || strcmp(mode, exit_attribute_mode)) + +static void +drv_screen_init(SCREEN *sp) +{ + TERMINAL_CONTROL_BLOCK *TCB = TCBOf(sp); + + AssertTCB(); + + /* + * Check for mismatched graphic-rendition capabilities. Most SVr4 + * terminfo trees contain entries that have rmul or rmso equated to + * sgr0 (Solaris curses copes with those entries). We do this only + * for curses, since many termcap applications assume that + * smso/rmso and smul/rmul are paired, and will not function + * properly if we remove rmso or rmul. Curses applications + * shouldn't be looking at this detail. + */ + sp->_use_rmso = SGR0_TEST(exit_standout_mode); + sp->_use_rmul = SGR0_TEST(exit_underline_mode); + + /* + * Check whether we can optimize scrolling under dumb terminals in + * case we do not have any of these capabilities, scrolling + * optimization will be useless. + */ + sp->_scrolling = ((scroll_forward && scroll_reverse) || + ((parm_rindex || + parm_insert_line || + insert_line) && + (parm_index || + parm_delete_line || + delete_line))); + + NCURSES_SP_NAME(baudrate) (sp); + + NCURSES_SP_NAME(_nc_mvcur_init) (sp); + /* initialize terminal to a sane state */ + NCURSES_SP_NAME(_nc_screen_init) (sp); +} + +static void +drv_init(TERMINAL_CONTROL_BLOCK * TCB) +{ + TERMINAL *trm; + + AssertTCB(); + + trm = (TERMINAL *) TCB; + + TCB->info.initcolor = VALID_STRING(initialize_color); + TCB->info.canchange = can_change; + TCB->info.hascolor = ((VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs) + && (((set_foreground != NULL) + && (set_background != NULL)) + || ((set_a_foreground != NULL) + && (set_a_background != NULL)) + || set_color_pair)) ? TRUE : FALSE); + + TCB->info.caninit = !(exit_ca_mode && non_rev_rmcup); + + TCB->info.maxpairs = VALID_NUMERIC(max_pairs) ? max_pairs : 0; + TCB->info.maxcolors = VALID_NUMERIC(max_colors) ? max_colors : 0; + TCB->info.numlabels = VALID_NUMERIC(num_labels) ? num_labels : 0; + TCB->info.labelwidth = VALID_NUMERIC(label_width) ? label_width : 0; + TCB->info.labelheight = VALID_NUMERIC(label_height) ? label_height : 0; + TCB->info.nocolorvideo = VALID_NUMERIC(no_color_video) ? no_color_video + : 0; + TCB->info.tabsize = VALID_NUMERIC(init_tabs) ? (int) init_tabs : 8; + + TCB->info.defaultPalette = hue_lightness_saturation ? _nc_hls_palette : _nc_cga_palette; + + /* + * If an application calls setupterm() rather than initscr() or + * newterm(), we will not have the def_prog_mode() call in + * _nc_setupscreen(). Do it now anyway, so we can initialize the + * baudrate. + */ + if (NC_ISATTY(trm->Filedes)) { + TCB->drv->td_mode(TCB, TRUE, TRUE); + } +} + +#define MAX_PALETTE 8 +#define InPalette(n) ((n) >= 0 && (n) < MAX_PALETTE) + +static void +drv_initpair(TERMINAL_CONTROL_BLOCK * TCB, int pair, int f, int b) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); + + if ((initialize_pair != NULL) && InPalette(f) && InPalette(b)) { + const color_t *tp = InfoOf(sp).defaultPalette; + + TR(TRACE_ATTRS, + ("initializing pair: pair = %d, fg=(%d,%d,%d), bg=(%d,%d,%d)", + pair, + tp[f].red, tp[f].green, tp[f].blue, + tp[b].red, tp[b].green, tp[b].blue)); + + NCURSES_PUTP2("initialize_pair", + TIPARM_7(initialize_pair, + pair, + tp[f].red, tp[f].green, tp[f].blue, + tp[b].red, tp[b].green, tp[b].blue)); + } +} + +static int +default_fg(SCREEN *sp) +{ +#if NCURSES_EXT_FUNCS + return (sp != 0) ? sp->_default_fg : COLOR_WHITE; +#else + return COLOR_WHITE; +#endif +} + +static int +default_bg(SCREEN *sp) +{ +#if NCURSES_EXT_FUNCS + return sp != 0 ? sp->_default_bg : COLOR_BLACK; +#else + return COLOR_BLACK; +#endif +} + +static void +drv_initcolor(TERMINAL_CONTROL_BLOCK * TCB, + int color, int r, int g, int b) +{ + SCREEN *sp = TCB->csp; + + AssertTCB(); + if (initialize_color != NULL) { + NCURSES_PUTP2("initialize_color", + TIPARM_4(initialize_color, color, r, g, b)); + } +} + +static void +drv_do_color(TERMINAL_CONTROL_BLOCK * TCB, + int old_pair, + int pair, + int reverse, + NCURSES_SP_OUTC outc) +{ + SCREEN *sp = TCB->csp; + int fg = COLOR_DEFAULT; + int bg = COLOR_DEFAULT; + int old_fg, old_bg; + + AssertTCB(); + if (sp == 0) + return; + + if (pair < 0 || pair >= COLOR_PAIRS) { + return; + } else if (pair != 0) { + if (set_color_pair) { + TPUTS_TRACE("set_color_pair"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_1(set_color_pair, pair), 1, outc); + return; + } else if (sp != 0) { + _nc_pair_content(SP_PARM, pair, &fg, &bg); + } + } + + if (old_pair >= 0 + && sp != 0 + && _nc_pair_content(SP_PARM, old_pair, &old_fg, &old_bg) != ERR) { + if ((isDefaultColor(fg) && !isDefaultColor(old_fg)) + || (isDefaultColor(bg) && !isDefaultColor(old_bg))) { +#if NCURSES_EXT_FUNCS + /* + * A minor optimization - but extension. If "AX" is specified in + * the terminal description, treat it as screen's indicator of ECMA + * SGR 39 and SGR 49, and assume the two sequences are independent. + */ + if (sp->_has_sgr_39_49 + && isDefaultColor(old_bg) + && !isDefaultColor(old_fg)) { + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[39m", 1, outc); + } else if (sp->_has_sgr_39_49 + && isDefaultColor(old_fg) + && !isDefaultColor(old_bg)) { + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx "\033[49m", 1, outc); + } else +#endif + drv_rescol(TCB); + } + } else { + drv_rescol(TCB); + if (old_pair < 0) + return; + } + +#if NCURSES_EXT_FUNCS + if (isDefaultColor(fg)) + fg = default_fg(sp); + if (isDefaultColor(bg)) + bg = default_bg(sp); +#endif + + if (reverse) { + int xx = fg; + fg = bg; + bg = xx; + } + + TR(TRACE_ATTRS, ("setting colors: pair = %d, fg = %d, bg = %d", pair, + fg, bg)); + + if (!isDefaultColor(fg)) { + drv_setcolor(TCB, TRUE, fg, outc); + } + if (!isDefaultColor(bg)) { + drv_setcolor(TCB, FALSE, bg, outc); + } +} + +#define xterm_kmous "\033[M" +static void +init_xterm_mouse(SCREEN *sp) +{ + sp->_mouse_type = M_XTERM; + sp->_mouse_xtermcap = NCURSES_SP_NAME(tigetstr) (NCURSES_SP_ARGx "XM"); + if (!VALID_STRING(sp->_mouse_xtermcap)) + sp->_mouse_xtermcap = "\033[?1000%?%p1%{1}%=%th%el%;"; +} + +static void +drv_initmouse(TERMINAL_CONTROL_BLOCK * TCB) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); + + /* we know how to recognize mouse events under "xterm" */ + if (sp != 0) { + if (NonEmpty(key_mouse)) { + init_xterm_mouse(sp); + } else if (strstr(SP_TERMTYPE term_names, "xterm") != 0) { + if (_nc_add_to_try(&(sp->_keytry), xterm_kmous, KEY_MOUSE) == OK) + init_xterm_mouse(sp); + } + } +} + +static int +drv_testmouse(TERMINAL_CONTROL_BLOCK * TCB, + int delay + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + int rc = 0; + SCREEN *sp; + + AssertTCB(); + SetSP(); + +#if USE_SYSMOUSE + if ((sp->_mouse_type == M_SYSMOUSE) + && (sp->_sysmouse_head < sp->_sysmouse_tail)) { + rc = TW_MOUSE; + } else +#endif + { +#ifdef EXP_WIN32_DRIVER + rc = _nc_console_testmouse(sp, + _nc_console_handle(sp->_ifd), + delay + EVENTLIST_2nd(evl)); +#else + rc = TCBOf(sp)->drv->td_twait(TCBOf(sp), + TWAIT_MASK, + delay, + (int *) 0 + EVENTLIST_2nd(evl)); +#endif +#if USE_SYSMOUSE + if ((sp->_mouse_type == M_SYSMOUSE) + && (sp->_sysmouse_head < sp->_sysmouse_tail) + && (rc == 0) + && (errno == EINTR)) { + rc |= TW_MOUSE; + } +#endif + } + return rc; +} + +static int +drv_mvcur(TERMINAL_CONTROL_BLOCK * TCB, int yold, int xold, int ynew, int xnew) +{ + SCREEN *sp = TCB->csp; + AssertTCB(); + return NCURSES_SP_NAME(_nc_mvcur) (sp, yold, xold, ynew, xnew); +} + +static void +drv_hwlabel(TERMINAL_CONTROL_BLOCK * TCB, int labnum, char *text) +{ + SCREEN *sp = TCB->csp; + + AssertTCB(); + if (labnum > 0 && labnum <= num_labels) { + NCURSES_PUTP2("plab_norm", + TPARM_2(plab_norm, labnum, text)); + } +} + +static void +drv_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, int OnFlag) +{ + SCREEN *sp = TCB->csp; + + AssertTCB(); + if (OnFlag) { + NCURSES_PUTP2("label_on", label_on); + } else { + NCURSES_PUTP2("label_off", label_off); + } +} + +static chtype +drv_conattr(TERMINAL_CONTROL_BLOCK * TCB) +{ + SCREEN *sp = TCB->csp; + chtype attrs = A_NORMAL; + + AssertTCB(); + if (enter_alt_charset_mode) + attrs |= A_ALTCHARSET; + + if (enter_blink_mode) + attrs |= A_BLINK; + + if (enter_bold_mode) + attrs |= A_BOLD; + + if (enter_dim_mode) + attrs |= A_DIM; + + if (enter_reverse_mode) + attrs |= A_REVERSE; + + if (enter_standout_mode) + attrs |= A_STANDOUT; + + if (enter_protected_mode) + attrs |= A_PROTECT; + + if (enter_secure_mode) + attrs |= A_INVIS; + + if (enter_underline_mode) + attrs |= A_UNDERLINE; + + if (sp && sp->_coloron) + attrs |= A_COLOR; + +#if USE_ITALIC + if (enter_italics_mode) + attrs |= A_ITALIC; +#endif + + return (attrs); +} + +static void +drv_setfilter(TERMINAL_CONTROL_BLOCK * TCB) +{ + AssertTCB(); + + /* *INDENT-EQLS* */ + clear_screen = ABSENT_STRING; + cursor_address = ABSENT_STRING; + cursor_down = ABSENT_STRING; + cursor_up = ABSENT_STRING; + parm_down_cursor = ABSENT_STRING; + parm_up_cursor = ABSENT_STRING; + row_address = ABSENT_STRING; + cursor_home = carriage_return; + + if (back_color_erase) + clr_eos = ABSENT_STRING; +} + +static void +drv_initacs(TERMINAL_CONTROL_BLOCK * TCB, chtype *real_map, chtype *fake_map) +{ + SCREEN *sp = TCB->csp; + + AssertTCB(); + assert(sp != 0); + if (ena_acs != NULL) { + NCURSES_PUTP2("ena_acs", ena_acs); + } +#if NCURSES_EXT_FUNCS + /* + * Linux console "supports" the "PC ROM" character set by the coincidence + * that smpch/rmpch and smacs/rmacs have the same values. ncurses has + * no codepage support (see SCO Merge for an example). Outside of the + * values defined in acsc, there are no definitions for the "PC ROM" + * character set (assumed by some applications to be codepage 437), but we + * allow those applications to use those codepoints. + * + * test/blue.c uses this feature. + */ +#define PCH_KLUDGE(a,b) (a != 0 && b != 0 && !strcmp(a,b)) + if (PCH_KLUDGE(enter_pc_charset_mode, enter_alt_charset_mode) && + PCH_KLUDGE(exit_pc_charset_mode, exit_alt_charset_mode)) { + size_t i; + for (i = 1; i < ACS_LEN; ++i) { + if (real_map[i] == 0) { + real_map[i] = (chtype) i; + if (real_map != fake_map) { + if (sp != 0) + sp->_screen_acs_map[i] = TRUE; + } + } + } + } +#endif + + if (acs_chars != NULL) { + size_t i = 0; + size_t length = strlen(acs_chars); + + while (i + 1 < length) { + if (acs_chars[i] != 0 && UChar(acs_chars[i]) < ACS_LEN) { + real_map[UChar(acs_chars[i])] = UChar(acs_chars[i + 1]) | A_ALTCHARSET; + T(("#%d real_map[%s] = %s", + (int) i, + _tracechar(UChar(acs_chars[i])), + _tracechtype(real_map[UChar(acs_chars[i])]))); + if (sp != 0) { + sp->_screen_acs_map[UChar(acs_chars[i])] = TRUE; + } + } + i += 2; + } + } +#ifdef TRACE + /* Show the equivalent mapping, noting if it does not match the + * given attribute, whether by re-ordering or duplication. + */ + if (USE_TRACEF(TRACE_CALLS)) { + size_t n, m; + char show[ACS_LEN * 2 + 1]; + for (n = 1, m = 0; n < ACS_LEN; n++) { + if (real_map[n] != 0) { + show[m++] = (char) n; + show[m++] = (char) ChCharOf(real_map[n]); + } + } + show[m] = 0; + if (acs_chars == NULL || strcmp(acs_chars, show)) + _tracef("%s acs_chars %s", + (acs_chars == NULL) ? "NULL" : "READ", + _nc_visbuf(acs_chars)); + _tracef("%s acs_chars %s", + (acs_chars == NULL) + ? "NULL" + : (strcmp(acs_chars, show) + ? "DIFF" + : "SAME"), + _nc_visbuf(show)); + _nc_unlock_global(tracef); + } +#endif /* TRACE */ +} + +#define ENSURE_TINFO(sp) (TCBOf(sp)->drv->isTerminfo) + +NCURSES_EXPORT(void) +_nc_cookie_init(SCREEN *sp) +{ + bool support_cookies = USE_XMC_SUPPORT; + TERMINAL_CONTROL_BLOCK *TCB = (TERMINAL_CONTROL_BLOCK *) (sp->_term); + + if (sp == 0 || !ENSURE_TINFO(sp)) + return; + +#if USE_XMC_SUPPORT + /* + * If we have no magic-cookie support compiled-in, or if it is suppressed + * in the environment, reset the support-flag. + */ + if (magic_cookie_glitch >= 0) { + if (getenv("NCURSES_NO_MAGIC_COOKIE") != 0) { + support_cookies = FALSE; + } + } +#endif + + if (!support_cookies && magic_cookie_glitch >= 0) { + T(("will disable attributes to work w/o magic cookies")); + } + + if (magic_cookie_glitch > 0) { /* tvi, wyse */ + + sp->_xmc_triggers = sp->_ok_attributes & XMC_CONFLICT; +#if 0 + /* + * We "should" treat colors as an attribute. The wyse350 (and its + * clones) appear to be the only ones that have both colors and magic + * cookies. + */ + if (has_colors()) { + sp->_xmc_triggers |= A_COLOR; + } +#endif + sp->_xmc_suppress = sp->_xmc_triggers & (chtype) ~(A_BOLD); + + T(("magic cookie attributes %s", _traceattr(sp->_xmc_suppress))); + /* + * Supporting line-drawing may be possible. But make the regular + * video attributes work first. + */ + acs_chars = ABSENT_STRING; + ena_acs = ABSENT_STRING; + enter_alt_charset_mode = ABSENT_STRING; + exit_alt_charset_mode = ABSENT_STRING; +#if USE_XMC_SUPPORT + /* + * To keep the cookie support simple, suppress all of the optimization + * hooks except for clear_screen and the cursor addressing. + */ + if (support_cookies) { + clr_eol = ABSENT_STRING; + clr_eos = ABSENT_STRING; + set_attributes = ABSENT_STRING; + } +#endif + } else if (magic_cookie_glitch == 0) { /* hpterm */ + } + + /* + * If magic cookies are not supported, cancel the strings that set + * video attributes. + */ + if (!support_cookies && magic_cookie_glitch >= 0) { + magic_cookie_glitch = ABSENT_NUMERIC; + set_attributes = ABSENT_STRING; + enter_blink_mode = ABSENT_STRING; + enter_bold_mode = ABSENT_STRING; + enter_dim_mode = ABSENT_STRING; + enter_reverse_mode = ABSENT_STRING; + enter_standout_mode = ABSENT_STRING; + enter_underline_mode = ABSENT_STRING; + } + + /* initialize normal acs before wide, since we use mapping in the latter */ +#if !USE_WIDEC_SUPPORT + if (_nc_unicode_locale() && _nc_locale_breaks_acs(sp->_term)) { + acs_chars = NULL; + ena_acs = NULL; + enter_alt_charset_mode = NULL; + exit_alt_charset_mode = NULL; + set_attributes = NULL; + } +#endif +} + +static int +drv_twait(TERMINAL_CONTROL_BLOCK * TCB, + int mode, + int milliseconds, + int *timeleft + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +#ifdef EXP_WIN32_DRIVER + return _nc_console_twait(sp, + _nc_console_handle(sp->_ifd), + mode, + milliseconds, + timeleft EVENTLIST_2nd(evl)); +#else + return _nc_timed_wait(sp, mode, milliseconds, timeleft EVENTLIST_2nd(evl)); +#endif +} + +static int +drv_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf) +{ + SCREEN *sp; + int n; +#ifndef EXP_WIN32_DRIVER + unsigned char c2 = 0; +#endif + + AssertTCB(); + assert(buf); + SetSP(); + +# if USE_PTHREADS_EINTR + if ((pthread_self) && (pthread_kill) && (pthread_equal)) + _nc_globals.read_thread = pthread_self(); +# endif +#ifdef EXP_WIN32_DRIVER + n = _nc_console_read(sp, + _nc_console_handle(sp->_ifd), + buf); +#else + n = (int) read(sp->_ifd, &c2, (size_t) 1); +#endif +#if USE_PTHREADS_EINTR + _nc_globals.read_thread = 0; +#endif +#ifndef EXP_WIN32_DRIVER + *buf = (int) c2; +#endif + return n; +} + +static int +drv_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms) +{ +#if HAVE_NANOSLEEP + { + struct timespec request, remaining; + request.tv_sec = ms / 1000; + request.tv_nsec = (ms % 1000) * 1000000; + while (nanosleep(&request, &remaining) == -1 + && errno == EINTR) { + request = remaining; + } + } +#elif defined(EXP_WIN32_DRIVER) + Sleep((DWORD) ms); +#else + _nc_timed_wait(0, 0, ms, (int *) 0 EVENTLIST_2nd(0)); +#endif + return OK; +} + +static int +__nc_putp(SCREEN *sp, const char *name GCC_UNUSED, const char *value) +{ + int rc = ERR; + + if (value) { + rc = NCURSES_PUTP2(name, value); + } + return rc; +} + +static int +__nc_putp_flush(SCREEN *sp, const char *name, const char *value) +{ + int rc = __nc_putp(sp, name, value); + if (rc != ERR) { + NCURSES_SP_NAME(_nc_flush) (sp); + } + return rc; +} + +static int +drv_kpad(TERMINAL_CONTROL_BLOCK * TCB, int flag) +{ + int ret = ERR; + SCREEN *sp; + + AssertTCB(); + + sp = TCB->csp; + + if (sp) { + if (flag) { + (void) __nc_putp_flush(sp, "keypad_xmit", keypad_xmit); + } else if (!flag && keypad_local) { + (void) __nc_putp_flush(sp, "keypad_local", keypad_local); + } + if (flag && !sp->_tried) { + _nc_init_keytry(sp); + sp->_tried = TRUE; + } + ret = OK; + } + + return ret; +} + +static int +drv_keyok(TERMINAL_CONTROL_BLOCK * TCB, int c, int flag) +{ + SCREEN *sp; + int code = ERR; + int count = 0; + char *s; + + AssertTCB(); + SetSP(); + + if (c >= 0) { + unsigned ch = (unsigned) c; + if (flag) { + while ((s = _nc_expand_try(sp->_key_ok, + ch, &count, (size_t) 0)) != 0) { + if (_nc_remove_key(&(sp->_key_ok), ch)) { + code = _nc_add_to_try(&(sp->_keytry), s, ch); + free(s); + count = 0; + if (code != OK) + break; + } else { + free(s); + } + } + } else { + while ((s = _nc_expand_try(sp->_keytry, + ch, &count, (size_t) 0)) != 0) { + if (_nc_remove_key(&(sp->_keytry), ch)) { + code = _nc_add_to_try(&(sp->_key_ok), s, ch); + free(s); + count = 0; + if (code != OK) + break; + } else { + free(s); + } + } + } + } + return (code); +} + +static int +drv_cursorSet(TERMINAL_CONTROL_BLOCK * TCB, int vis) +{ + SCREEN *sp; + int code = ERR; + + AssertTCB(); + SetSP(); + + T((T_CALLED("tinfo:drv_cursorSet(%p,%d)"), (void *) SP_PARM, vis)); + + if (SP_PARM != 0 && IsTermInfo(SP_PARM)) { + switch (vis) { + case 2: + code = NCURSES_PUTP2_FLUSH("cursor_visible", cursor_visible); + break; + case 1: + code = NCURSES_PUTP2_FLUSH("cursor_normal", cursor_normal); + break; + case 0: + code = NCURSES_PUTP2_FLUSH("cursor_invisible", cursor_invisible); + break; + } + } else { + code = ERR; + } + returnCode(code); +} + +static bool +drv_kyExist(TERMINAL_CONTROL_BLOCK * TCB, int key) +{ + bool res = FALSE; + + AssertTCB(); + if (TCB->csp) + res = TINFO_HAS_KEY(TCB->csp, key) == 0 ? FALSE : TRUE; + + return res; +} + +NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_TINFO_DRIVER = { + TRUE, + drv_Name, /* Name */ + drv_CanHandle, /* CanHandle */ + drv_init, /* init */ + drv_release, /* release */ + drv_size, /* size */ + drv_sgmode, /* sgmode */ + drv_conattr, /* conattr */ + drv_mvcur, /* hwcur */ + drv_mode, /* mode */ + drv_rescol, /* rescol */ + drv_rescolors, /* rescolors */ + drv_setcolor, /* color */ + drv_dobeepflash, /* doBeepOrFlash */ + drv_initpair, /* initpair */ + drv_initcolor, /* initcolor */ + drv_do_color, /* docolor */ + drv_initmouse, /* initmouse */ + drv_testmouse, /* testmouse */ + drv_setfilter, /* setfilter */ + drv_hwlabel, /* hwlabel */ + drv_hwlabelOnOff, /* hwlabelOnOff */ + drv_doupdate, /* update */ + drv_defaultcolors, /* defaultcolors */ + drv_print, /* print */ + drv_getsize, /* getsize */ + drv_setsize, /* setsize */ + drv_initacs, /* initacs */ + drv_screen_init, /* scinit */ + drv_wrap, /* scexit */ + drv_twait, /* twait */ + drv_read, /* read */ + drv_nap, /* nap */ + drv_kpad, /* kpad */ + drv_keyok, /* kyOk */ + drv_kyExist, /* kyExist */ + drv_cursorSet /* cursorSet */ +}; + +#ifdef EXP_WIN32_DRIVER +/* + * The terminfo driver is mandatory and must always be present. + * So this is the natural place for the driver initialisation + * logic. + */ + +typedef struct DriverEntry { + const char *name; + TERM_DRIVER *driver; +} DRIVER_ENTRY; + +static DRIVER_ENTRY DriverTable[] = +{ +#ifdef _NC_WINDOWS + {"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; +#ifdef _NC_WINDOWS + if ((i + 1) == SIZEOF(DriverTable)) { + /* For Windows >= 10.0.17763 Windows Console interface implements + virtual Terminal functionality. + If on Windows td_CanHandle returned FALSE although the terminal + name is empty, we default to ms-terminal as tinfo TERM type. + */ + if (name == 0 || *name == 0 || (strcmp(name, "unknown") == 0)) { + name = MS_TERMINAL; + T(("Set TERM=%s", name)); + } + } +#endif + 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 */ diff --git a/deps/ncurses-5.9/ncurses/tinfo/trim_sgr0.c b/deps/ncurses-6.3/ncurses/tinfo/trim_sgr0.c similarity index 85% rename from deps/ncurses-5.9/ncurses/tinfo/trim_sgr0.c rename to deps/ncurses-6.3/ncurses/tinfo/trim_sgr0.c index 1f99208..22bc82f 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/trim_sgr0.c +++ b/deps/ncurses-6.3/ncurses/tinfo/trim_sgr0.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2005-2007,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2005-2012,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 * @@ -36,7 +37,7 @@ #include <tic.h> -MODULE_ID("$Id: trim_sgr0.c,v 1.12 2010/12/25 23:03:57 tom Exp $") +MODULE_ID("$Id: trim_sgr0.c,v 1.21 2021/06/17 21:20:30 tom Exp $") #undef CUR #define CUR tp-> @@ -46,23 +47,30 @@ MODULE_ID("$Id: trim_sgr0.c,v 1.12 2010/12/25 23:03:57 tom Exp $") #define L_BRACK '[' static char * -set_attribute_9(TERMTYPE *tp, int flag) +set_attribute_9(TERMTYPE2 *tp, int flag) { - const char *result; + const char *value; + char *result; - if ((result = tparm(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, flag)) == 0) - result = ""; - return strdup(result); + value = TIPARM_9(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, flag); + if (PRESENT(value)) + result = strdup(value); + else + result = 0; + return result; } static int is_csi(const char *s) { - if (UChar(s[0]) == CSI) - return 1; - else if (s[0] == ESC && s[1] == L_BRACK) - return 2; - return 0; + int result = 0; + if (s != 0) { + if (UChar(s[0]) == CSI) + result = 1; + else if (s[0] == ESC && s[1] == L_BRACK) + result = 2; + } + return result; } static char * @@ -97,7 +105,7 @@ skip_delay(const char *s) static bool rewrite_sgr(char *s, char *attr) { - if (PRESENT(s)) { + if (s != 0) { if (PRESENT(attr)) { size_t len_s = strlen(s); size_t len_a = strlen(attr); @@ -108,7 +116,7 @@ rewrite_sgr(char *s, char *attr) for (n = 0; n < len_s - len_a; ++n) { s[n] = s[n + len_a]; } - strcpy(s + n, attr); + _nc_STRCPY(s + n, attr, strlen(s) + 1); TR(TRACE_DATABASE, ("to:\n\t%s", s)); } } @@ -121,33 +129,35 @@ static bool similar_sgr(char *a, char *b) { bool result = FALSE; - int csi_a = is_csi(a); - int csi_b = is_csi(b); - size_t len_a; - size_t len_b; + if (a != 0 && b != 0) { + int csi_a = is_csi(a); + int csi_b = is_csi(b); + size_t len_a; + size_t len_b; - TR(TRACE_DATABASE, ("similar_sgr:\n\t%s\n\t%s", - _nc_visbuf2(1, a), - _nc_visbuf2(2, b))); - if (csi_a != 0 && csi_b != 0 && csi_a == csi_b) { - a += csi_a; - b += csi_b; - if (*a != *b) { - a = skip_zero(a); - b = skip_zero(b); + TR(TRACE_DATABASE, ("similar_sgr:\n\t%s\n\t%s", + _nc_visbuf2(1, a), + _nc_visbuf2(2, b))); + if (csi_a != 0 && csi_b != 0 && csi_a == csi_b) { + a += csi_a; + b += csi_b; + if (*a != *b) { + a = skip_zero(a); + b = skip_zero(b); + } } + len_a = strlen(a); + len_b = strlen(b); + if (len_a && len_b) { + if (len_a > len_b) + result = (strncmp(a, b, len_b) == 0); + else + result = (strncmp(a, b, len_a) == 0); + } + TR(TRACE_DATABASE, ("...similar_sgr: %d\n\t%s\n\t%s", result, + _nc_visbuf2(1, a), + _nc_visbuf2(2, b))); } - len_a = strlen(a); - len_b = strlen(b); - if (len_a && len_b) { - if (len_a > len_b) - result = (strncmp(a, b, len_b) == 0); - else - result = (strncmp(a, b, len_a) == 0); - } - TR(TRACE_DATABASE, ("...similar_sgr: %d\n\t%s\n\t%s", result, - _nc_visbuf2(1, a), - _nc_visbuf2(2, b))); return result; } @@ -212,7 +222,7 @@ compare_part(const char *part, const char *full) } /* - * While 'sgr0' is the "same" as termcap 'me', there is a compatibility issue. + * While 'sgr0' is the "same" as termcap 'me', there is a compatibility issue. * The sgr/sgr0 capabilities include setting/clearing alternate character set * mode. A termcap application cannot use sgr, so sgr0 strings that reset * alternate character set mode will be misinterpreted. Here, we remove those @@ -223,7 +233,7 @@ compare_part(const char *part, const char *full) * an error occurs, or the original sgr0 if no change is needed. */ NCURSES_EXPORT(char *) -_nc_trim_sgr0(TERMTYPE *tp) +_nc_trim_sgr0(TERMTYPE2 *tp) { char *result = exit_attribute_mode; @@ -254,7 +264,7 @@ _nc_trim_sgr0(TERMTYPE *tp) /* * If rmacs is a substring of sgr(0), remove that chunk. */ - if (exit_alt_charset_mode != 0) { + if (PRESENT(exit_alt_charset_mode)) { TR(TRACE_DATABASE, ("scan for rmacs %s", _nc_visbuf(exit_alt_charset_mode))); j = strlen(off); k = strlen(exit_alt_charset_mode); diff --git a/deps/ncurses-5.9/ncurses/tinfo/use_screen.c b/deps/ncurses-6.3/ncurses/tinfo/use_screen.c similarity index 88% rename from deps/ncurses-5.9/ncurses/tinfo/use_screen.c rename to deps/ncurses-6.3/ncurses/tinfo/use_screen.c index 6a0297c..a4bf932 100644 --- a/deps/ncurses-5.9/ncurses/tinfo/use_screen.c +++ b/deps/ncurses-6.3/ncurses/tinfo/use_screen.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2007-2009,2016 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 * @@ -32,15 +33,19 @@ #include <curses.priv.h> -MODULE_ID("$Id: use_screen.c,v 1.8 2009/10/24 22:40:20 tom Exp $") +MODULE_ID("$Id: use_screen.c,v 1.12 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) use_screen(SCREEN *screen, NCURSES_SCREEN_CB func, void *data) { SCREEN *save_SP; int code = OK; + TR_FUNC_BFR(1); - T((T_CALLED("use_screen(%p,%p,%p)"), (void *) screen, func, (void *) data)); + T((T_CALLED("use_screen(%p,%s,%p)"), + (void *) screen, + TR_FUNC_ARG(0, func), + (void *) data)); /* * FIXME - add a flag so a given thread can check if _it_ has already diff --git a/deps/ncurses-6.3/ncurses/tinfo/write_entry.c b/deps/ncurses-6.3/ncurses/tinfo/write_entry.c new file mode 100644 index 0000000..cab4757 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/tinfo/write_entry.c @@ -0,0 +1,945 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * write_entry.c -- write a terminfo structure onto the file system + */ + +#include <curses.priv.h> +#include <hashed_db.h> + +#include <tic.h> + +#if 1 +#define TRACE_OUT(p) DEBUG(2, p) +#define TRACE_NUM(n) if (VALID_NUMERIC(Numbers[n])) { \ + TRACE_OUT(("put Numbers[%u]=%d", (unsigned) (n), Numbers[n])); } +#else +#define TRACE_OUT(p) /*nothing */ +#define TRACE_NUM(n) /* nothing */ +#endif + +MODULE_ID("$Id: write_entry.c,v 1.118 2021/08/15 20:07:11 tom Exp $") + +static int total_written; +static int total_parts; +static int total_size; + +static int make_db_root(const char *); + +#if !USE_HASHED_DB +static void +write_file(char *filename, TERMTYPE2 *tp) +{ + char buffer[MAX_ENTRY_SIZE]; + unsigned limit = sizeof(buffer); + unsigned offset = 0; + + if (_nc_write_object(tp, buffer, &offset, limit) == ERR) { + _nc_warning("entry is larger than %u bytes", limit); + } else { + FILE *fp = ((_nc_access(filename, W_OK) == 0) + ? safe_fopen(filename, BIN_W) + : 0); + size_t actual; + + if (fp == 0) { + perror(filename); + _nc_syserr_abort("can't open %s/%s", _nc_tic_dir(0), filename); + } + + actual = fwrite(buffer, sizeof(char), (size_t) offset, fp); + if (actual != offset) { + int myerr = ferror(fp) ? errno : 0; + if (myerr) { + _nc_syserr_abort("error writing %s/%s: %s", + _nc_tic_dir(0), + filename, + strerror(myerr)); + } else { + _nc_syserr_abort("error writing %s/%s: %u bytes vs actual %lu", + _nc_tic_dir(0), + filename, + offset, + (unsigned long) actual); + } + } else { + fclose(fp); + DEBUG(1, ("Created %s", filename)); + } + } +} + +/* + * Check for access rights to destination directories + * Create any directories which don't exist. + * + * Note: there's no reason to return the result of make_db_root(), since + * this function is called only in instances where that has to succeed. + */ +static void +check_writeable(int code) +{ + static const char dirnames[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; + static bool verified[sizeof(dirnames)]; + + char dir[sizeof(LEAF_FMT)]; + char *s = 0; + + if (code == 0 || (s = (strchr) (dirnames, code)) == 0) + _nc_err_abort("Illegal terminfo subdirectory \"" LEAF_FMT "\"", code); + + if (verified[s - dirnames]) + return; + + _nc_SPRINTF(dir, _nc_SLIMIT(sizeof(dir)) LEAF_FMT, code); + if (make_db_root(dir) < 0) { + _nc_err_abort("%s/%s: permission denied", _nc_tic_dir(0), dir); + } + + verified[s - dirnames] = TRUE; +} +#endif /* !USE_HASHED_DB */ + +static int +make_db_path(char *dst, const char *src, size_t limit) +{ + int rc = -1; + const char *top = _nc_tic_dir(0); + + if (src == top || _nc_is_abs_path(src)) { + if (strlen(src) + 1 <= limit) { + _nc_STRCPY(dst, src, limit); + rc = 0; + } + } else { + if (strlen(top) + strlen(src) + 2 <= limit) { + _nc_SPRINTF(dst, _nc_SLIMIT(limit) "%s/%s", top, src); + rc = 0; + } + } +#if USE_HASHED_DB + if (rc == 0) { + static const char suffix[] = DBM_SUFFIX; + size_t have = strlen(dst); + size_t need = strlen(suffix); + if (have > need && strcmp(dst + (int) (have - need), suffix)) { + if (have + need <= limit) { + _nc_STRCAT(dst, suffix, limit); + } else { + rc = -1; + } + } else if (_nc_is_dir_path(dst)) { + rc = -1; + } + } +#endif + return rc; +} + +/* + * Make a database-root if it doesn't exist. + */ +static int +make_db_root(const char *path) +{ + int rc; + char fullpath[PATH_MAX]; + + if ((rc = make_db_path(fullpath, path, sizeof(fullpath))) == 0) { +#if USE_HASHED_DB + DB *capdbp; + + if ((capdbp = _nc_db_open(fullpath, TRUE)) == NULL) { + rc = -1; + } else if (_nc_db_close(capdbp) < 0) { + rc = -1; + } +#else + struct stat statbuf; + + if ((rc = stat(path, &statbuf)) == -1) { + rc = mkdir(path +#ifndef _NC_WINDOWS + ,0777 +#endif + ); + } else if (_nc_access(path, R_OK | W_OK | X_OK) < 0) { + rc = -1; /* permission denied */ + } else if (!(S_ISDIR(statbuf.st_mode))) { + rc = -1; /* not a directory */ + } +#endif + } + return rc; +} + +/* + * Set the write directory for compiled entries. + */ +NCURSES_EXPORT(void) +_nc_set_writedir(const char *dir) +{ + const char *destination; + char actual[PATH_MAX]; + + if (dir == 0 +#ifndef USE_ROOT_ENVIRON + && use_terminfo_vars() +#endif + ) + dir = getenv("TERMINFO"); + + if (dir != 0) + (void) _nc_tic_dir(dir); + + destination = _nc_tic_dir(0); + if (make_db_root(destination) < 0) { + char *home = _nc_home_terminfo(); + + if (home != 0) { + destination = home; + if (make_db_root(destination) < 0) + _nc_err_abort("%s: permission denied (errno %d)", + destination, errno); + } + } + + /* + * Note: because of this code, this logic should be exercised + * *once only* per run. + */ +#if USE_HASHED_DB + make_db_path(actual, destination, sizeof(actual)); +#else + if (chdir(_nc_tic_dir(destination)) < 0 + || getcwd(actual, sizeof(actual)) == 0) + _nc_err_abort("%s: not a directory", destination); +#endif + _nc_keep_tic_dir(strdup(actual)); +} + +/* + * Save the compiled version of a description in the filesystem. + * + * make a copy of the name-list + * break it up into first-name and all-but-last-name + * creat(first-name) + * write object information to first-name + * close(first-name) + * for each name in all-but-last-name + * link to first-name + * + * Using 'time()' to obtain a reference for file timestamps is unreliable, + * e.g., with NFS, because the filesystem may have a different time + * reference. We check for pre-existence of links by latching the first + * timestamp from a file that we create. + * + * The _nc_warning() calls will report a correct line number only if + * _nc_curr_line is properly set before the write_entry() call. + */ + +NCURSES_EXPORT(void) +_nc_write_entry(TERMTYPE2 *const tp) +{ +#if USE_HASHED_DB + + char buffer[MAX_ENTRY_SIZE + 1]; + unsigned limit = sizeof(buffer); + unsigned offset = 0; + +#else /* !USE_HASHED_DB */ + + struct stat statbuf; + char filename[PATH_MAX]; + char linkname[PATH_MAX]; +#if USE_SYMLINKS + char symlinkname[PATH_MAX]; +#if !HAVE_LINK +#undef HAVE_LINK +#define HAVE_LINK 1 +#endif +#endif /* USE_SYMLINKS */ + + unsigned limit2 = sizeof(filename) - (2 + LEAF_LEN); + char saved = '\0'; + + static int call_count; + static time_t start_time; /* time at start of writes */ + +#endif /* USE_HASHED_DB */ + + char name_list[MAX_TERMINFO_LENGTH]; + char *first_name, *other_names; + char *ptr; + char *term_names = tp->term_names; + size_t name_size = strlen(term_names); + + if (name_size == 0) { + _nc_syserr_abort("no terminal name found."); + } else if (name_size >= sizeof(name_list) - 1) { + _nc_syserr_abort("terminal name too long: %s", term_names); + } + + _nc_STRCPY(name_list, term_names, sizeof(name_list)); + DEBUG(7, ("Name list = '%s'", name_list)); + + first_name = name_list; + + ptr = &name_list[name_size - 1]; + other_names = ptr + 1; + + while (ptr > name_list && *ptr != '|') + ptr--; + + if (ptr != name_list) { + *ptr = '\0'; + + for (ptr = name_list; *ptr != '\0' && *ptr != '|'; ptr++) + continue; + + if (*ptr == '\0') + other_names = ptr; + else { + *ptr = '\0'; + other_names = ptr + 1; + } + } + + DEBUG(7, ("First name = '%s'", first_name)); + DEBUG(7, ("Other names = '%s'", other_names)); + + _nc_set_type(first_name); + +#if USE_HASHED_DB + if (_nc_write_object(tp, buffer + 1, &offset, limit - 1) != ERR) { + DB *capdb = _nc_db_open(_nc_tic_dir(0), TRUE); + DBT key, data; + + if (capdb != 0) { + buffer[0] = 0; + + memset(&key, 0, sizeof(key)); + key.data = term_names; + key.size = name_size; + + memset(&data, 0, sizeof(data)); + data.data = buffer; + data.size = offset + 1; + + _nc_db_put(capdb, &key, &data); + + buffer[0] = 2; + + key.data = name_list; + key.size = strlen(name_list); + + _nc_STRCPY(buffer + 1, + term_names, + sizeof(buffer) - 1); + data.size = name_size + 1; + + total_size += data.size; + total_parts++; + _nc_db_put(capdb, &key, &data); + + while (*other_names != '\0') { + ptr = other_names++; + assert(ptr < buffer + sizeof(buffer) - 1); + while (*other_names != '|' && *other_names != '\0') + other_names++; + + if (*other_names != '\0') + *(other_names++) = '\0'; + + key.data = ptr; + key.size = strlen(ptr); + + total_size += data.size; + total_parts++; + _nc_db_put(capdb, &key, &data); + } + } + } +#else /* !USE_HASHED_DB */ + if (call_count++ == 0) { + start_time = 0; + } + + if (strlen(first_name) >= limit2) { + _nc_warning("terminal name too long."); + saved = first_name[limit2]; + first_name[limit2] = '\0'; + } + + _nc_SPRINTF(filename, _nc_SLIMIT(sizeof(filename)) + LEAF_FMT "/%.*s", UChar(first_name[0]), + (int) (sizeof(filename) - (LEAF_LEN + 2)), + first_name); + + if (saved) + first_name[limit2] = saved; + + /* + * Has this primary name been written since the first call to + * write_entry()? If so, the newer write will step on the older, + * so warn the user. + */ + if (start_time > 0 && + stat(filename, &statbuf) >= 0 + && statbuf.st_mtime >= start_time) { +#if HAVE_LINK && !USE_SYMLINKS + /* + * If the file has more than one link, the reason for the previous + * write could be that the current primary name used to be an alias for + * the previous entry. In that case, unlink the file so that we will + * not modify the previous entry as we write this one. + */ + if (statbuf.st_nlink > 1) { + _nc_warning("name redefined."); + unlink(filename); + } else { + _nc_warning("name multiply defined."); + } +#else + _nc_warning("name multiply defined."); +#endif + } + + check_writeable(first_name[0]); + write_file(filename, tp); + + if (start_time == 0) { + if (stat(filename, &statbuf) == -1 + || (start_time = statbuf.st_mtime) == 0) { + _nc_syserr_abort("error obtaining time from %s/%s", + _nc_tic_dir(0), filename); + } + } + while (*other_names != '\0') { + ptr = other_names++; + while (*other_names != '|' && *other_names != '\0') + other_names++; + + if (*other_names != '\0') + *(other_names++) = '\0'; + + if (strlen(ptr) > sizeof(linkname) - (2 + LEAF_LEN)) { + _nc_warning("terminal alias %s too long.", ptr); + continue; + } + if (strchr(ptr, '/') != 0) { + _nc_warning("cannot link alias %s.", ptr); + continue; + } + + check_writeable(ptr[0]); + _nc_SPRINTF(linkname, _nc_SLIMIT(sizeof(linkname)) + LEAF_FMT "/%.*s", ptr[0], + (int) sizeof(linkname) - (2 + LEAF_LEN), ptr); + + if (strcmp(filename, linkname) == 0) { + _nc_warning("self-synonym ignored"); + } else if (stat(linkname, &statbuf) >= 0 && + statbuf.st_mtime < start_time) { + _nc_warning("alias %s multiply defined.", ptr); + } else if (_nc_access(linkname, W_OK) == 0) +#if HAVE_LINK + { + int code; +#if USE_SYMLINKS +#define MY_SIZE sizeof(symlinkname) - 1 + if (first_name[0] == linkname[0]) { + _nc_STRNCPY(symlinkname, first_name, MY_SIZE); + } else { + _nc_STRCPY(symlinkname, "../", sizeof(symlinkname)); + _nc_STRNCPY(symlinkname + 3, filename, MY_SIZE - 3); + } + symlinkname[MY_SIZE] = '\0'; +#endif /* USE_SYMLINKS */ +#if HAVE_REMOVE + code = remove(linkname); +#else + code = unlink(linkname); +#endif + if (code != 0 && errno == ENOENT) + code = 0; +#if USE_SYMLINKS + if (symlink(symlinkname, linkname) < 0) +#else + if (link(filename, linkname) < 0) +#endif /* USE_SYMLINKS */ + { + /* + * If there wasn't anything there, and we cannot + * link to the target because it is the same as the + * target, then the source must be on a filesystem + * that uses caseless filenames, such as Win32, etc. + */ + if (code == 0 && errno == EEXIST) + _nc_warning("can't link %s to %s", filename, linkname); + else if (code == 0 && (errno == EPERM || errno == ENOENT)) + write_file(linkname, tp); + else { +#if MIXEDCASE_FILENAMES + _nc_syserr_abort("can't link %s to %s", filename, linkname); +#else + _nc_warning("can't link %s to %s (errno=%d)", filename, + linkname, errno); +#endif + } + } else { + DEBUG(1, ("Linked %s", linkname)); + } + } +#else /* just make copies */ + write_file(linkname, tp); +#endif /* HAVE_LINK */ + } +#endif /* USE_HASHED_DB */ +} + +static size_t +fake_write(char *dst, + unsigned *offset, + size_t limit, + char *src, + size_t want, + size_t size) +{ + size_t have = (limit - *offset); + + want *= size; + if (have > 0) { + if (want > have) + want = have; + memcpy(dst + *offset, src, want); + *offset += (unsigned) want; + } else { + want = 0; + } + return (want / size); +} + +#define Write(buf, size, count) fake_write(buffer, offset, (size_t) limit, (char *) buf, (size_t) count, (size_t) size) + +#undef LITTLE_ENDIAN /* BSD/OS defines this as a feature macro */ +#define HI(x) ((x) / 256) +#define LO(x) ((x) % 256) +#define LITTLE_ENDIAN(p, x) (p)[0] = (unsigned char)LO(x), \ + (p)[1] = (unsigned char)HI(x) + +#define WRITE_STRING(str) (Write(str, sizeof(char), strlen(str) + 1) == strlen(str) + 1) + +static int +compute_offsets(char **Strings, size_t strmax, short *offsets) +{ + int nextfree = 0; + size_t i; + + for (i = 0; i < strmax; i++) { + if (Strings[i] == ABSENT_STRING) { + offsets[i] = -1; + } else if (Strings[i] == CANCELLED_STRING) { + offsets[i] = -2; + } else { + offsets[i] = (short) nextfree; + nextfree += (int) strlen(Strings[i]) + 1; + TRACE_OUT(("put Strings[%d]=%s(%d)", (int) i, + _nc_visbuf(Strings[i]), (int) nextfree)); + } + } + return nextfree; +} + +static size_t +convert_shorts(unsigned char *buf, short *Numbers, size_t count) +{ + size_t i; + for (i = 0; i < count; i++) { + if (Numbers[i] == ABSENT_NUMERIC) { /* HI/LO won't work */ + buf[2 * i] = buf[2 * i + 1] = 0377; + } else if (Numbers[i] == CANCELLED_NUMERIC) { /* HI/LO won't work */ + buf[2 * i] = 0376; + buf[2 * i + 1] = 0377; + } else { + LITTLE_ENDIAN(buf + 2 * i, Numbers[i]); + TRACE_OUT(("put Numbers[%u]=%d", (unsigned) i, Numbers[i])); + } + } + return SIZEOF_SHORT; +} + +#if NCURSES_EXT_NUMBERS +static size_t +convert_16bit(unsigned char *buf, NCURSES_INT2 *Numbers, size_t count) +{ + size_t i, j; + size_t size = SIZEOF_SHORT; + for (i = 0; i < count; i++) { + unsigned value = (unsigned) Numbers[i]; + TRACE_NUM(i); + for (j = 0; j < size; ++j) { + *buf++ = value & 0xff; + value >>= 8; + } + } + return size; +} + +static size_t +convert_32bit(unsigned char *buf, NCURSES_INT2 *Numbers, size_t count) +{ + size_t i, j; + size_t size = SIZEOF_INT2; + for (i = 0; i < count; i++) { + unsigned value = (unsigned) Numbers[i]; + TRACE_NUM(i); + for (j = 0; j < size; ++j) { + *buf++ = value & 0xff; + value >>= 8; + } + } + return size; +} +#endif + +#define even_boundary(value) \ + ((value) % 2 != 0 && Write(&zero, sizeof(char), 1) != 1) + +#if NCURSES_XNAMES +static unsigned +extended_Booleans(TERMTYPE2 *tp) +{ + unsigned result = 0; + unsigned i; + + for (i = 0; i < tp->ext_Booleans; ++i) { + if (tp->Booleans[BOOLCOUNT + i] == TRUE) + result = (i + 1); + } + return result; +} + +static unsigned +extended_Numbers(TERMTYPE2 *tp) +{ + unsigned result = 0; + unsigned i; + + for (i = 0; i < tp->ext_Numbers; ++i) { + if (tp->Numbers[NUMCOUNT + i] != ABSENT_NUMERIC) + result = (i + 1); + } + return result; +} + +static unsigned +extended_Strings(TERMTYPE2 *tp) +{ + unsigned short result = 0; + unsigned short i; + + for (i = 0; i < tp->ext_Strings; ++i) { + if (tp->Strings[STRCOUNT + i] != ABSENT_STRING) + result = (unsigned short) (i + 1); + } + return result; +} + +/* + * _nc_align_termtype() will extend entries that are referenced in a use= + * clause - discard the unneeded data. + */ +static bool +extended_object(TERMTYPE2 *tp) +{ + bool result = FALSE; + + if (_nc_user_definable) { + result = ((extended_Booleans(tp) + + extended_Numbers(tp) + + extended_Strings(tp)) != 0); + } + return result; +} +#endif + +NCURSES_EXPORT(int) +_nc_write_object(TERMTYPE2 *tp, char *buffer, unsigned *offset, unsigned limit) +{ + char *namelist; + size_t namelen, boolmax, nummax, strmax, numlen; + char zero = '\0'; + size_t i; + int nextfree; + short offsets[MAX_ENTRY_SIZE / 2]; + unsigned char buf[MAX_ENTRY_SIZE]; + unsigned last_bool = BOOLWRITE; + unsigned last_num = NUMWRITE; + unsigned last_str = STRWRITE; +#if NCURSES_EXT_NUMBERS + bool need_ints = FALSE; + size_t (*convert_numbers) (unsigned char *, NCURSES_INT2 *, size_t) = convert_32bit; +#else +#define convert_numbers convert_shorts +#endif + +#if NCURSES_XNAMES + /* + * Normally we limit the list of values to exclude the "obsolete" + * capabilities. However, if we are accepting extended names, add + * these as well, since they are used for supporting translation + * to/from termcap. + */ + if (_nc_user_definable) { + last_bool = BOOLCOUNT; + last_num = NUMCOUNT; + last_str = STRCOUNT; + } +#endif + + namelist = tp->term_names; + namelen = strlen(namelist) + 1; + + boolmax = 0; + for (i = 0; i < last_bool; i++) { + if (tp->Booleans[i] == TRUE) { + boolmax = i + 1; + } + } + + nummax = 0; + for (i = 0; i < last_num; i++) { + if (tp->Numbers[i] != ABSENT_NUMERIC) { + nummax = i + 1; +#if NCURSES_EXT_NUMBERS + if (tp->Numbers[i] > MAX_OF_TYPE(NCURSES_COLOR_T)) { + need_ints = TRUE; + } +#endif + } + } + + strmax = 0; + for (i = 0; i < last_str; i++) { + if (tp->Strings[i] != ABSENT_STRING) + strmax = i + 1; + } + + nextfree = compute_offsets(tp->Strings, strmax, offsets); + + /* fill in the header */ +#if NCURSES_EXT_NUMBERS + if (need_ints) { + convert_numbers = convert_32bit; + LITTLE_ENDIAN(buf, MAGIC2); + } else { + convert_numbers = convert_16bit; + LITTLE_ENDIAN(buf, MAGIC); + } +#else + LITTLE_ENDIAN(buf, MAGIC); +#endif + LITTLE_ENDIAN(buf + 2, min(namelen, MAX_NAME_SIZE + 1)); + LITTLE_ENDIAN(buf + 4, boolmax); + LITTLE_ENDIAN(buf + 6, nummax); + LITTLE_ENDIAN(buf + 8, strmax); + LITTLE_ENDIAN(buf + 10, nextfree); + + /* write out the header */ + TRACE_OUT(("Header of %s @%d", namelist, *offset)); + if (Write(buf, 12, 1) != 1 + || Write(namelist, sizeof(char), namelen) != namelen) { + return (ERR); + } + + for (i = 0; i < boolmax; i++) { + if (tp->Booleans[i] == TRUE) { + buf[i] = TRUE; + } else { + buf[i] = FALSE; + } + } + if (Write(buf, sizeof(char), boolmax) != boolmax) { + return (ERR); + } + + if (even_boundary(namelen + boolmax)) { + return (ERR); + } + + TRACE_OUT(("Numerics begin at %04x", *offset)); + + /* the numerics */ + numlen = convert_numbers(buf, tp->Numbers, nummax); + if (Write(buf, numlen, nummax) != nummax) { + return (ERR); + } + + TRACE_OUT(("String offsets begin at %04x", *offset)); + + /* the string offsets */ + convert_shorts(buf, offsets, strmax); + if (Write(buf, SIZEOF_SHORT, strmax) != strmax) { + return (ERR); + } + + TRACE_OUT(("String table begins at %04x", *offset)); + + /* the strings */ + for (i = 0; i < strmax; i++) { + if (VALID_STRING(tp->Strings[i])) { + if (!WRITE_STRING(tp->Strings[i])) { + return (ERR); + } + } + } + +#if NCURSES_XNAMES + if (extended_object(tp)) { + unsigned ext_total = (unsigned) NUM_EXT_NAMES(tp); + unsigned ext_usage = ext_total; + + if (even_boundary(nextfree)) { + return (ERR); + } + + nextfree = compute_offsets(tp->Strings + STRCOUNT, + (size_t) tp->ext_Strings, + offsets); + TRACE_OUT(("after extended string capabilities, nextfree=%d", nextfree)); + + if (tp->ext_Strings >= SIZEOF(offsets)) { + return (ERR); + } + + nextfree += compute_offsets(tp->ext_Names, + (size_t) ext_total, + offsets + tp->ext_Strings); + TRACE_OUT(("after extended capnames, nextfree=%d", nextfree)); + strmax = tp->ext_Strings + ext_total; + for (i = 0; i < tp->ext_Strings; ++i) { + if (VALID_STRING(tp->Strings[i + STRCOUNT])) { + ext_usage++; + } + } + TRACE_OUT(("will write %u/%lu strings", ext_usage, (unsigned long) strmax)); + + /* + * Write the extended header + */ + LITTLE_ENDIAN(buf + 0, tp->ext_Booleans); + LITTLE_ENDIAN(buf + 2, tp->ext_Numbers); + LITTLE_ENDIAN(buf + 4, tp->ext_Strings); + LITTLE_ENDIAN(buf + 6, ext_usage); + LITTLE_ENDIAN(buf + 8, nextfree); + TRACE_OUT(("WRITE extended-header @%d", *offset)); + if (Write(buf, 10, 1) != 1) { + return (ERR); + } + + TRACE_OUT(("WRITE %d booleans @%d", tp->ext_Booleans, *offset)); + if (tp->ext_Booleans + && Write(tp->Booleans + BOOLCOUNT, sizeof(char), + tp->ext_Booleans) != tp->ext_Booleans) { + return (ERR); + } + + if (even_boundary(tp->ext_Booleans)) { + return (ERR); + } + + TRACE_OUT(("WRITE %d numbers @%d", tp->ext_Numbers, *offset)); + if (tp->ext_Numbers) { + numlen = convert_numbers(buf, tp->Numbers + NUMCOUNT, (size_t) tp->ext_Numbers); + if (Write(buf, numlen, tp->ext_Numbers) != tp->ext_Numbers) { + return (ERR); + } + } + + /* + * Convert the offsets for the ext_Strings and ext_Names tables, + * in that order. + */ + convert_shorts(buf, offsets, strmax); + TRACE_OUT(("WRITE offsets @%d", *offset)); + if (Write(buf, SIZEOF_SHORT, strmax) != strmax) { + return (ERR); + } + + /* + * Write the string table after the offset tables so we do not + * have to do anything about alignment. + */ + for (i = 0; i < tp->ext_Strings; i++) { + if (VALID_STRING(tp->Strings[i + STRCOUNT])) { + TRACE_OUT(("WRITE ext_Strings[%d]=%s", (int) i, + _nc_visbuf(tp->Strings[i + STRCOUNT]))); + if (!WRITE_STRING(tp->Strings[i + STRCOUNT])) { + return (ERR); + } + } + } + + /* + * Write the extended names + */ + for (i = 0; i < ext_total; i++) { + TRACE_OUT(("WRITE ext_Names[%d]=%s", (int) i, tp->ext_Names[i])); + if (!WRITE_STRING(tp->ext_Names[i])) { + return (ERR); + } + } + + } +#endif /* NCURSES_XNAMES */ + + total_written++; + total_parts++; + total_size = total_size + (int) (*offset + 1); + return (OK); +} + +/* + * Returns the total number of entries written by this process + */ +NCURSES_EXPORT(int) +_nc_tic_written(void) +{ + TR(TRACE_DATABASE, ("_nc_tic_written %d entries, %d parts, %d size", + total_written, total_parts, total_size)); + return total_written; +} diff --git a/deps/ncurses-6.3/ncurses/trace/README b/deps/ncurses-6.3/ncurses/trace/README new file mode 100644 index 0000000..0a33300 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/trace/README @@ -0,0 +1,34 @@ +------------------------------------------------------------------------------- +-- Copyright 2020 Thomas E. Dickey -- +-- Copyright 1998,2006 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. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.3 2020/02/02 23:34:34 tom Exp $ +------------------------------------------------------------------------------- + +The files in this directory (trace) support both the terminfo and ncurses +libraries. Most of the functions are linked in only when the libraries +are compiled with TRACE defined. diff --git a/deps/ncurses-6.3/ncurses/trace/lib_trace.c b/deps/ncurses-6.3/ncurses/trace/lib_trace.c new file mode 100644 index 0000000..9acbd47 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/trace/lib_trace.c @@ -0,0 +1,411 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + * and: Juergen Pfeifer * + ****************************************************************************/ + +/* + * lib_trace.c - Tracing/Debugging routines + * + * The _tracef() function is originally from pcurses (by Pavel Curtis) in 1982. + * pcurses allowed one to enable/disable tracing using traceon() and traceoff() + * functions. ncurses provides a trace() function which allows one to + * selectively enable or disable several tracing features. + */ + +#include <curses.priv.h> +#include <tic.h> + +#include <ctype.h> + +MODULE_ID("$Id: lib_trace.c,v 1.99 2021/06/26 20:44:59 tom Exp $") + +NCURSES_EXPORT_VAR(unsigned) _nc_tracing = 0; /* always define this */ + +#ifdef TRACE + +#if USE_REENTRANT +NCURSES_EXPORT(const char *) +NCURSES_PUBLIC_VAR(_nc_tputs_trace) (void) +{ + return CURRENT_SCREEN ? CURRENT_SCREEN->_tputs_trace : _nc_prescreen._tputs_trace; +} +NCURSES_EXPORT(long) +NCURSES_PUBLIC_VAR(_nc_outchars) (void) +{ + return CURRENT_SCREEN ? CURRENT_SCREEN->_outchars : _nc_prescreen._outchars; +} +NCURSES_EXPORT(void) +_nc_set_tputs_trace(const char *s) +{ + if (CURRENT_SCREEN) + CURRENT_SCREEN->_tputs_trace = s; + else + _nc_prescreen._tputs_trace = s; +} +NCURSES_EXPORT(void) +_nc_count_outchars(long increment) +{ + if (CURRENT_SCREEN) + CURRENT_SCREEN->_outchars += increment; + else + _nc_prescreen._outchars += increment; +} +#else +NCURSES_EXPORT_VAR(const char *) _nc_tputs_trace = ""; +NCURSES_EXPORT_VAR(long) _nc_outchars = 0; +#endif + +#define MyFP _nc_globals.trace_fp +#define MyFD _nc_globals.trace_fd +#define MyInit _nc_globals.trace_opened +#define MyPath _nc_globals.trace_fname +#define MyLevel _nc_globals.trace_level +#define MyNested _nc_globals.nested_tracef +#endif /* TRACE */ + +NCURSES_EXPORT(unsigned) +curses_trace(unsigned tracelevel) +{ + unsigned result; +#if defined(TRACE) + result = _nc_tracing; + if ((MyFP == 0) && tracelevel) { + MyInit = TRUE; + if (MyFD >= 0) { + MyFP = fdopen(MyFD, BIN_W); + } else { + if (MyPath[0] == '\0') { + size_t size = sizeof(MyPath) - 12; + if (getcwd(MyPath, size) == 0) { + perror("curses: Can't get working directory"); + exit(EXIT_FAILURE); + } + MyPath[size] = '\0'; + assert(strlen(MyPath) <= size); + _nc_STRCAT(MyPath, "/trace", sizeof(MyPath)); + if (_nc_is_dir_path(MyPath)) { + _nc_STRCAT(MyPath, ".log", sizeof(MyPath)); + } + } +#define SAFE_MODE (O_CREAT | O_EXCL | O_RDWR) + if (_nc_access(MyPath, W_OK) < 0 + || (MyFD = safe_open3(MyPath, SAFE_MODE, 0600)) < 0 + || (MyFP = fdopen(MyFD, BIN_W)) == 0) { + ; /* EMPTY */ + } + } + _nc_tracing = tracelevel; + /* Try to set line-buffered mode, or (failing that) unbuffered, + * so that the trace-output gets flushed automatically at the + * end of each line. This is useful in case the program dies. + */ + if (MyFP != 0) { +#if HAVE_SETVBUF /* ANSI */ + (void) setvbuf(MyFP, (char *) 0, _IOLBF, (size_t) 0); +#elif HAVE_SETBUF /* POSIX */ + (void) setbuffer(MyFP, (char *) 0); +#endif + } + _tracef("TRACING NCURSES version %s.%d (tracelevel=%#x)", + NCURSES_VERSION, + NCURSES_VERSION_PATCH, + tracelevel); + } else if (tracelevel == 0) { + if (MyFP != 0) { + MyFD = dup(MyFD); /* allow reopen of same file */ + fclose(MyFP); + MyFP = 0; + } + _nc_tracing = tracelevel; + } else if (_nc_tracing != tracelevel) { + _nc_tracing = tracelevel; + _tracef("tracelevel=%#x", tracelevel); + } +#else + (void) tracelevel; + result = 0; +#endif + return result; +} + +#if defined(TRACE) +NCURSES_EXPORT(void) +trace(const unsigned int tracelevel) +{ + curses_trace(tracelevel); +} + +static void +_nc_va_tracef(const char *fmt, va_list ap) +{ + static const char Called[] = T_CALLED(""); + static const char Return[] = T_RETURN(""); + + bool before = FALSE; + bool after = FALSE; + unsigned doit = _nc_tracing; + int save_err = errno; + FILE *fp = MyFP; + +#ifdef TRACE + /* verbose-trace in the command-line utilities relies on this */ + if (fp == 0 && !MyInit && _nc_tracing >= DEBUG_LEVEL(1)) + fp = stderr; +#endif + + if (strlen(fmt) >= sizeof(Called) - 1) { + if (!strncmp(fmt, Called, sizeof(Called) - 1)) { + before = TRUE; + MyLevel++; + } else if (!strncmp(fmt, Return, sizeof(Return) - 1)) { + after = TRUE; + } + if (before || after) { + if ((MyLevel <= 1) + || (doit & TRACE_ICALLS) != 0) + doit &= (TRACE_CALLS | TRACE_CCALLS); + else + doit = 0; + } + } + + if (doit != 0 && fp != 0) { +#ifdef USE_PTHREADS + /* + * TRACE_ICALLS is "really" needed to show normal use with threaded + * applications, since anything can be running during a napms(), + * making it appear in the hierarchical trace as it other functions + * are being called. + * + * Rather than add the complication of a per-thread stack, just + * show the thread-id in each line of the trace. + */ +# if USE_WEAK_SYMBOLS + if ((pthread_self)) +# endif +#ifdef _NC_WINDOWS + fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self().p); +#else + fprintf(fp, "%#lx:", (long) (intptr_t) pthread_self()); +#endif +#endif + if (before || after) { + int n; + for (n = 1; n < MyLevel; n++) + fputs("+ ", fp); + } + vfprintf(fp, fmt, ap); + fputc('\n', fp); + fflush(fp); + } + + if (after && MyLevel) + MyLevel--; + + errno = save_err; +} + +NCURSES_EXPORT(void) +_tracef(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + _nc_va_tracef(fmt, ap); + va_end(ap); +} + +/* Trace 'bool' return-values */ +NCURSES_EXPORT(NCURSES_BOOL) +_nc_retrace_bool(int code) +{ + T((T_RETURN("%s"), code ? "TRUE" : "FALSE")); + return code; +} + +/* Trace 'char' return-values */ +NCURSES_EXPORT(char) +_nc_retrace_char(int code) +{ + T((T_RETURN("%c"), code)); + return (char) code; +} + +/* Trace 'int' return-values */ +NCURSES_EXPORT(int) +_nc_retrace_int(int code) +{ + T((T_RETURN("%d"), code)); + return code; +} + +/* Trace 'unsigned' return-values */ +NCURSES_EXPORT(unsigned) +_nc_retrace_unsigned(unsigned code) +{ + T((T_RETURN("%#x"), code)); + return code; +} + +/* Trace 'char*' return-values */ +NCURSES_EXPORT(char *) +_nc_retrace_ptr(char *code) +{ + T((T_RETURN("%s"), _nc_visbuf(code))); + return code; +} + +/* Trace 'const char*' return-values */ +NCURSES_EXPORT(const char *) +_nc_retrace_cptr(const char *code) +{ + T((T_RETURN("%s"), _nc_visbuf(code))); + return code; +} + +/* Trace 'NCURSES_CONST void*' return-values */ +NCURSES_EXPORT(NCURSES_CONST void *) +_nc_retrace_cvoid_ptr(NCURSES_CONST void *code) +{ + T((T_RETURN("%p"), code)); + return code; +} + +/* Trace 'void*' return-values */ +NCURSES_EXPORT(void *) +_nc_retrace_void_ptr(void *code) +{ + T((T_RETURN("%p"), code)); + return code; +} + +/* Trace 'SCREEN *' return-values */ +NCURSES_EXPORT(SCREEN *) +_nc_retrace_sp(SCREEN *code) +{ + T((T_RETURN("%p"), (void *) code)); + return code; +} + +/* Trace 'WINDOW *' return-values */ +NCURSES_EXPORT(WINDOW *) +_nc_retrace_win(WINDOW *code) +{ + T((T_RETURN("%p"), (void *) code)); + return code; +} + +NCURSES_EXPORT(char *) +_nc_fmt_funcptr(char *target, const char *source, size_t size) +{ + size_t n; + char *dst = target; + bool leading = TRUE; + + union { + int value; + char bytes[sizeof(int)]; + } byteorder; + + byteorder.value = 0x1234; + + *dst++ = '0'; + *dst++ = 'x'; + + for (n = 0; n < size; ++n) { + unsigned ch = ((byteorder.bytes[0] == 0x34) + ? UChar(source[size - n - 1]) + : UChar(source[n])); + if (ch != 0 || (n + 1) >= size) + leading = FALSE; + if (!leading) { + _nc_SPRINTF(dst, _nc_SLIMIT(TR_FUNC_LEN - (size_t) (dst - target)) + "%02x", ch & 0xff); + dst += 2; + } + } + *dst = '\0'; + return target; +} + +#if USE_REENTRANT +/* + * Check if the given trace-mask is enabled. + * + * This function may be called from within one of the functions that fills + * in parameters for _tracef(), but in that case we do not want to lock the + * mutex, since it is already locked. + */ +NCURSES_EXPORT(int) +_nc_use_tracef(unsigned mask) +{ + bool result = FALSE; + + _nc_lock_global(tst_tracef); + if (!MyNested++) { + if ((result = (_nc_tracing & (mask))) != 0 + && _nc_try_global(tracef) == 0) { + /* we will call _nc_locked_tracef(), no nesting so far */ + } else { + /* we will not call _nc_locked_tracef() */ + MyNested = 0; + } + } else { + /* we may call _nc_locked_tracef(), but with nested_tracef > 0 */ + result = (_nc_tracing & (mask)); + } + _nc_unlock_global(tst_tracef); + return result; +} + +/* + * We call this if _nc_use_tracef() returns true, which means we must unlock + * the tracef mutex. + */ +NCURSES_EXPORT(void) +_nc_locked_tracef(const char *fmt, ...) +{ + va_list ap; + + va_start(ap, fmt); + _nc_va_tracef(fmt, ap); + va_end(ap); + + if (--(MyNested) == 0) { + _nc_unlock_global(tracef); + } +} +#endif /* USE_REENTRANT */ + +#endif /* TRACE */ diff --git a/deps/ncurses-6.3/ncurses/trace/lib_traceatr.c b/deps/ncurses-6.3/ncurses/trace/lib_traceatr.c new file mode 100644 index 0000000..9402627 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/trace/lib_traceatr.c @@ -0,0 +1,416 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2017,2018 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: Thomas Dickey 1996-on * + * and: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Juergen Pfeifer * + ****************************************************************************/ + +/* + * lib_traceatr.c - Tracing/Debugging routines (attributes) + */ + +#include <curses.priv.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_traceatr.c,v 1.94 2020/02/02 23:34:34 tom Exp $") + +#define COLOR_OF(c) ((c < 0) ? "default" : (c > 7 ? color_of(c) : colors[c].name)) + +#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size) +#define COLOR_BUF_SIZE(num) (sizeof(my_buffer[num])) + +#ifdef TRACE + +static const char l_brace[] = StringOf(L_BRACE); +static const char r_brace[] = StringOf(R_BRACE); + +#ifndef USE_TERMLIB + +#define my_buffer _nc_globals.traceatr_color_buf +#define my_select _nc_globals.traceatr_color_sel +#define my_cached _nc_globals.traceatr_color_last + +static char * +color_of(int c) +{ + if (c != my_cached) { + my_cached = c; + my_select = !my_select; + if (isDefaultColor(c)) + _nc_STRCPY(my_buffer[my_select], "default", + COLOR_BUF_SIZE(my_select)); + else + _nc_SPRINTF(my_buffer[my_select], + _nc_SLIMIT(COLOR_BUF_SIZE(my_select)) + "color%d", c); + } + return my_buffer[my_select]; +} + +#undef my_buffer +#undef my_select +#endif /* !USE_TERMLIB */ + +NCURSES_EXPORT(char *) +_traceattr2(int bufnum, chtype newmode) +{ +#define DATA(name) { name, { #name } } + static const struct { + unsigned int val; + const char name[14]; + } names[] = + { + DATA(A_STANDOUT), + DATA(A_UNDERLINE), + DATA(A_REVERSE), + DATA(A_BLINK), + DATA(A_DIM), + DATA(A_BOLD), + DATA(A_ALTCHARSET), + DATA(A_INVIS), + DATA(A_PROTECT), + DATA(A_CHARTEXT), + DATA(A_NORMAL), + DATA(A_COLOR), +#if USE_ITALIC + DATA(A_ITALIC), +#endif + } +#ifndef USE_TERMLIB + , + colors[] = + { + DATA(COLOR_BLACK), + DATA(COLOR_RED), + DATA(COLOR_GREEN), + DATA(COLOR_YELLOW), + DATA(COLOR_BLUE), + DATA(COLOR_MAGENTA), + DATA(COLOR_CYAN), + DATA(COLOR_WHITE), + } +#endif /* !USE_TERMLIB */ + ; +#undef DATA + char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ); + + if (result != 0) { + size_t n; + unsigned save_nc_tracing = _nc_tracing; + + _nc_tracing = 0; + + _nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum)); + + for (n = 0; n < SIZEOF(names); n++) { + + if ((newmode & names[n].val) != 0) { + if (result[1] != '\0') + (void) _nc_trace_bufcat(bufnum, "|"); + result = _nc_trace_bufcat(bufnum, names[n].name); + + if (names[n].val == A_COLOR) { + char temp[80]; + short pairnum = (short) PairNumber(newmode); +#ifdef USE_TERMLIB + /* pair_content lives in libncurses */ + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "{%d}", pairnum); +#else + NCURSES_COLOR_T fg, bg; + + if (pair_content(pairnum, &fg, &bg) == OK) { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "{%d = {%s, %s}}", + pairnum, + COLOR_OF(fg), + COLOR_OF(bg)); + } else { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "{%d}", pairnum); + } +#endif + result = _nc_trace_bufcat(bufnum, temp); + } + } + } + if (ChAttrOf(newmode) == A_NORMAL) { + if (result != 0 && result[1] != '\0') + (void) _nc_trace_bufcat(bufnum, "|"); + (void) _nc_trace_bufcat(bufnum, "A_NORMAL"); + } + + _nc_tracing = save_nc_tracing; + result = _nc_trace_bufcat(bufnum, r_brace); + } + return result; +} + +NCURSES_EXPORT(char *) +_traceattr(attr_t newmode) +{ + return _traceattr2(0, newmode); +} + +/* Trace 'int' return-values */ +NCURSES_EXPORT(int) +_nc_retrace_int_attr_t(attr_t code) +{ + T((T_RETURN("%s"), _traceattr(code))); + return (int) code; +} + +/* Trace 'attr_t' return-values */ +NCURSES_EXPORT(attr_t) +_nc_retrace_attr_t(attr_t code) +{ + T((T_RETURN("%s"), _traceattr(code))); + return code; +} + +const char * +_nc_altcharset_name(attr_t attr, chtype ch) +{ +#define DATA(code, name) { code, { #name } } + typedef struct { + unsigned int val; + const char name[13]; + } ALT_NAMES; +#if NCURSES_SP_FUNCS + SCREEN *sp = CURRENT_SCREEN; +#endif + static const ALT_NAMES names[] = + { + DATA('l', ACS_ULCORNER), /* upper left corner */ + DATA('m', ACS_LLCORNER), /* lower left corner */ + DATA('k', ACS_URCORNER), /* upper right corner */ + DATA('j', ACS_LRCORNER), /* lower right corner */ + DATA('t', ACS_LTEE), /* tee pointing right */ + DATA('u', ACS_RTEE), /* tee pointing left */ + DATA('v', ACS_BTEE), /* tee pointing up */ + DATA('w', ACS_TTEE), /* tee pointing down */ + DATA('q', ACS_HLINE), /* horizontal line */ + DATA('x', ACS_VLINE), /* vertical line */ + DATA('n', ACS_PLUS), /* large plus or crossover */ + DATA('o', ACS_S1), /* scan line 1 */ + DATA('s', ACS_S9), /* scan line 9 */ + DATA('`', ACS_DIAMOND), /* diamond */ + DATA('a', ACS_CKBOARD), /* checker board (stipple) */ + DATA('f', ACS_DEGREE), /* degree symbol */ + DATA('g', ACS_PLMINUS), /* plus/minus */ + DATA('~', ACS_BULLET), /* bullet */ + DATA(',', ACS_LARROW), /* arrow pointing left */ + DATA('+', ACS_RARROW), /* arrow pointing right */ + DATA('.', ACS_DARROW), /* arrow pointing down */ + DATA('-', ACS_UARROW), /* arrow pointing up */ + DATA('h', ACS_BOARD), /* board of squares */ + DATA('i', ACS_LANTERN), /* lantern symbol */ + DATA('0', ACS_BLOCK), /* solid square block */ + DATA('p', ACS_S3), /* scan line 3 */ + DATA('r', ACS_S7), /* scan line 7 */ + DATA('y', ACS_LEQUAL), /* less/equal */ + DATA('z', ACS_GEQUAL), /* greater/equal */ + DATA('{', ACS_PI), /* Pi */ + DATA('|', ACS_NEQUAL), /* not equal */ + DATA('}', ACS_STERLING), /* UK pound sign */ + }; +#undef DATA + + const char *result = 0; + +#if NCURSES_SP_FUNCS + (void) sp; +#endif + if (SP_PARM != 0 && (attr & A_ALTCHARSET) && (acs_chars != 0)) { + char *cp; + char *found = 0; + + for (cp = acs_chars; cp[0] && cp[1]; cp += 2) { + if (ChCharOf(UChar(cp[1])) == ChCharOf(ch)) { + found = cp; + /* don't exit from loop - there may be redefinitions */ + } + } + + if (found != 0) { + size_t n; + + ch = ChCharOf(UChar(*found)); + for (n = 0; n < SIZEOF(names); ++n) { + if (names[n].val == ch) { + result = names[n].name; + break; + } + } + } + } + return result; +} + +NCURSES_EXPORT(char *) +_tracechtype2(int bufnum, chtype ch) +{ + char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ); + + if (result != 0) { + const char *found; + attr_t attr = ChAttrOf(ch); + + _nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum)); + if ((found = _nc_altcharset_name(attr, ch)) != 0) { + (void) _nc_trace_bufcat(bufnum, found); + attr &= ~A_ALTCHARSET; + } else + (void) _nc_trace_bufcat(bufnum, + _nc_tracechar(CURRENT_SCREEN, + (int) ChCharOf(ch))); + + if (attr != A_NORMAL) { + (void) _nc_trace_bufcat(bufnum, " | "); + (void) _nc_trace_bufcat(bufnum, + _traceattr2(bufnum + 20, attr)); + } + + result = _nc_trace_bufcat(bufnum, r_brace); + } + return result; +} + +NCURSES_EXPORT(char *) +_tracechtype(chtype ch) +{ + return _tracechtype2(0, ch); +} + +/* Trace 'chtype' return-values */ +NCURSES_EXPORT(chtype) +_nc_retrace_chtype(chtype code) +{ + T((T_RETURN("%s"), _tracechtype(code))); + return code; +} + +#if USE_WIDEC_SUPPORT +NCURSES_EXPORT(char *) +_tracecchar_t2(int bufnum, const cchar_t *ch) +{ + char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ); + + if (result != 0) { + _nc_STRCPY(result, l_brace, TRACE_BUF_SIZE(bufnum)); + if (ch != 0) { + const char *found; + attr_t attr = AttrOfD(ch); + + if ((found = _nc_altcharset_name(attr, (chtype) CharOfD(ch))) != 0) { + (void) _nc_trace_bufcat(bufnum, found); + attr &= ~A_ALTCHARSET; + } else if (isWidecExt(CHDEREF(ch))) { + (void) _nc_trace_bufcat(bufnum, "{NAC}"); + attr &= ~A_CHARTEXT; + } else { + PUTC_DATA; + int n; + + (void) _nc_trace_bufcat(bufnum, "{ "); + for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) { + PUTC_ch = ch->chars[PUTC_i]; + if (PUTC_ch == L'\0') { + if (PUTC_i == 0) + (void) _nc_trace_bufcat(bufnum, "\\000"); + break; + } + PUTC_INIT; + PUTC_n = (int) wcrtomb(PUTC_buf, ch->chars[PUTC_i], &PUT_st); + if (PUTC_n <= 0) { + if (PUTC_ch != L'\0') { + /* it could not be a multibyte sequence */ + (void) _nc_trace_bufcat(bufnum, + _nc_tracechar(CURRENT_SCREEN, + UChar(ch->chars[PUTC_i]))); + } + break; + } else if (ch->chars[PUTC_i] > 255) { + char temp[80]; + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "{%d:\\u%lx}", + _nc_wacs_width(ch->chars[PUTC_i]), + (unsigned long) ch->chars[PUTC_i]); + (void) _nc_trace_bufcat(bufnum, temp); + break; + } + for (n = 0; n < PUTC_n; n++) { + if (n) + (void) _nc_trace_bufcat(bufnum, ", "); + (void) _nc_trace_bufcat(bufnum, + _nc_tracechar(CURRENT_SCREEN, + UChar(PUTC_buf[n]))); + } + } + (void) _nc_trace_bufcat(bufnum, " }"); + } + if (attr != A_NORMAL) { + (void) _nc_trace_bufcat(bufnum, " | "); + (void) _nc_trace_bufcat(bufnum, _traceattr2(bufnum + 20, attr)); + } +#if NCURSES_EXT_COLORS + /* + * Just in case the extended color is different from the chtype + * value, trace both. + */ + if (ch->ext_color != PairNumber(attr)) { + char temp[80]; + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + " X_COLOR{%d:%d}", ch->ext_color, PairNumber(attr)); + (void) _nc_trace_bufcat(bufnum, temp); + } +#endif + } + + result = _nc_trace_bufcat(bufnum, r_brace); + } + return result; +} + +NCURSES_EXPORT(char *) +_tracecchar_t(const cchar_t *ch) +{ + return _tracecchar_t2(0, ch); +} +#endif + +#else +EMPTY_MODULE(_nc_lib_traceatr) +#endif /* TRACE */ diff --git a/deps/ncurses-6.3/ncurses/trace/lib_tracebits.c b/deps/ncurses-6.3/ncurses/trace/lib_tracebits.c new file mode 100644 index 0000000..4bc50f3 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/trace/lib_tracebits.c @@ -0,0 +1,303 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2012,2015 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +#include <curses.priv.h> + +MODULE_ID("$Id: lib_tracebits.c,v 1.31 2020/11/14 23:38:11 tom Exp $") + +#if HAVE_SYS_TERMIO_H +#include <sys/termio.h> /* needed for ISC */ +#endif + +#ifdef __EMX__ +#include <io.h> +#endif + +/* may be undefined if we're using termio.h */ +#ifndef TOSTOP +#define TOSTOP 0 +#endif + +#ifndef IEXTEN +#define IEXTEN 0 +#endif + +#ifndef ONLCR +#define ONLCR 0 +#endif + +#ifndef OCRNL +#define OCRNL 0 +#endif + +#ifndef ONOCR +#define ONOCR 0 +#endif + +#ifndef ONLRET +#define ONLRET 0 +#endif + +#ifdef TRACE + +#if defined(EXP_WIN32_DRIVER) +#define BITNAMELEN 36 +#else +#define BITNAMELEN 8 +#endif + +typedef struct { + unsigned int val; + const char name[BITNAMELEN]; +} BITNAMES; + +#define TRACE_BUF_SIZE(num) (_nc_globals.tracebuf_ptr[num].size) + +static void +lookup_bits(char *buf, const BITNAMES * table, const char *label, unsigned int val) +{ + const BITNAMES *sp; + + _nc_STRCAT(buf, label, TRACE_BUF_SIZE(0)); + _nc_STRCAT(buf, ": {", TRACE_BUF_SIZE(0)); + for (sp = table; sp->name[0]; sp++) + if (sp->val != 0 + && (val & sp->val) == sp->val) { + _nc_STRCAT(buf, sp->name, TRACE_BUF_SIZE(0)); + _nc_STRCAT(buf, ", ", TRACE_BUF_SIZE(0)); + } + if (buf[strlen(buf) - 2] == ',') + buf[strlen(buf) - 2] = '\0'; + _nc_STRCAT(buf, "} ", TRACE_BUF_SIZE(0)); +} + +NCURSES_EXPORT(char *) +_nc_trace_ttymode(const TTY * tty) +/* describe the state of the terminal control bits exactly */ +{ + char *buf; + +#ifdef TERMIOS +#define DATA(name) { name, { #name } } +#define DATA2(name,name2) { name, { #name2 } } +#define DATAX() { 0, { "" } } + static const BITNAMES iflags[] = + { + DATA(BRKINT), + DATA(IGNBRK), + DATA(IGNPAR), + DATA(PARMRK), + DATA(INPCK), + DATA(ISTRIP), + DATA(INLCR), + DATA(IGNCR), + DATA(ICRNL), + DATA(IXON), + DATA(IXOFF), + DATAX() +#define ALLIN (BRKINT|IGNBRK|IGNPAR|PARMRK|INPCK|ISTRIP|INLCR|IGNCR|ICRNL|IXON|IXOFF) + }, oflags[] = + { + DATA(OPOST), + DATA2(OFLAGS_TABS, XTABS), + DATA(ONLCR), + DATA(OCRNL), + DATA(ONOCR), + DATA(ONLRET), + DATAX() +#define ALLOUT (OPOST|OFLAGS_TABS|ONLCR|OCRNL|ONOCR|ONLRET|OFLAGS_TABS) + }, cflags[] = + { + DATA(CLOCAL), + DATA(CREAD), + DATA(CSTOPB), +#if !defined(CS5) || !defined(CS8) + DATA(CSIZE), +#endif + DATA(HUPCL), + DATA(PARENB), + DATA2(PARODD | PARENB, PARODD), + DATAX() +#define ALLCTRL (CLOCAL|CREAD|CSIZE|CSTOPB|HUPCL|PARENB|PARODD) + }, lflags[] = + { + DATA(ECHO), + DATA2(ECHOE | ECHO, ECHOE), + DATA2(ECHOK | ECHO, ECHOK), + DATA(ECHONL), + DATA(ICANON), + DATA(ISIG), + DATA(NOFLSH), + DATA(TOSTOP), + DATA(IEXTEN), + DATAX() +#define ALLLOCAL (ECHO|ECHONL|ICANON|ISIG|NOFLSH|TOSTOP|IEXTEN) + }; + + buf = _nc_trace_buf(0, + 8 + sizeof(iflags) + + 8 + sizeof(oflags) + + 8 + sizeof(cflags) + + 8 + sizeof(lflags) + + 8); + if (buf != 0) { + + if (tty->c_iflag & ALLIN) + lookup_bits(buf, iflags, "iflags", tty->c_iflag); + + if (tty->c_oflag & ALLOUT) + lookup_bits(buf, oflags, "oflags", tty->c_oflag); + + if (tty->c_cflag & ALLCTRL) + lookup_bits(buf, cflags, "cflags", tty->c_cflag); + +#if defined(CS5) && defined(CS8) + { + static const struct { + int value; + const char name[5]; + } csizes[] = { +#define CS_DATA(name) { name, { #name " " } } + CS_DATA(CS5), +#ifdef CS6 + CS_DATA(CS6), +#endif +#ifdef CS7 + CS_DATA(CS7), +#endif + CS_DATA(CS8), + }; + const char *result = "CSIZE? "; + int value = (int) (tty->c_cflag & CSIZE); + unsigned n; + + if (value != 0) { + for (n = 0; n < SIZEOF(csizes); n++) { + if (csizes[n].value == value) { + result = csizes[n].name; + break; + } + } + } + _nc_STRCAT(buf, result, TRACE_BUF_SIZE(0)); + } +#endif + + if (tty->c_lflag & ALLLOCAL) + lookup_bits(buf, lflags, "lflags", tty->c_lflag); + } +#elif defined(EXP_WIN32_DRIVER) +#define DATA(name) { name, { #name } } + static const BITNAMES dwFlagsOut[] = + { + DATA(ENABLE_PROCESSED_OUTPUT), + DATA(ENABLE_WRAP_AT_EOL_OUTPUT), + DATA(ENABLE_VIRTUAL_TERMINAL_PROCESSING), + DATA(DISABLE_NEWLINE_AUTO_RETURN), + DATA(ENABLE_LVB_GRID_WORLDWIDE) + }; + static const BITNAMES dwFlagsIn[] = + { + DATA(ENABLE_PROCESSED_INPUT), + DATA(ENABLE_LINE_INPUT), + DATA(ENABLE_ECHO_INPUT), + DATA(ENABLE_MOUSE_INPUT), + DATA(ENABLE_INSERT_MODE), + DATA(ENABLE_QUICK_EDIT_MODE), + DATA(ENABLE_EXTENDED_FLAGS), + DATA(ENABLE_AUTO_POSITION), + DATA(ENABLE_VIRTUAL_TERMINAL_INPUT) + }; + + buf = _nc_trace_buf(0, + 8 + sizeof(dwFlagsOut) + + 8 + sizeof(dwFlagsIn)); + if (buf != 0) { + lookup_bits(buf, dwFlagsIn, "dwIn", tty->dwFlagIn); + lookup_bits(buf, dwFlagsOut, "dwOut", tty->dwFlagOut); + } +#else + /* reference: ttcompat(4M) on SunOS 4.1 */ +#ifndef EVENP +#define EVENP 0 +#endif +#ifndef LCASE +#define LCASE 0 +#endif +#ifndef LLITOUT +#define LLITOUT 0 +#endif +#ifndef ODDP +#define ODDP 0 +#endif +#ifndef TANDEM +#define TANDEM 0 +#endif + + static const BITNAMES cflags[] = + { + DATA(CBREAK), + DATA(CRMOD), + DATA(ECHO), + DATA(EVENP), + DATA(LCASE), + DATA(LLITOUT), + DATA(ODDP), + DATA(RAW), + DATA(TANDEM), + DATA(XTABS), + DATAX() +#define ALLCTRL (CBREAK|CRMOD|ECHO|EVENP|LCASE|LLITOUT|ODDP|RAW|TANDEM|XTABS) + }; + + buf = _nc_trace_buf(0, + 8 + sizeof(cflags)); + if (buf != 0) { + if (tty->sg_flags & ALLCTRL) { + lookup_bits(buf, cflags, "cflags", tty->sg_flags); + } + } +#endif + return (buf); +} + +NCURSES_EXPORT(char *) +_nc_tracebits(void) +{ + return _nc_trace_ttymode(&(cur_term->Nttyb)); +} +#else +EMPTY_MODULE(_nc_empty_lib_tracebits) +#endif /* TRACE */ diff --git a/deps/ncurses-5.9/ncurses/trace/lib_tracechr.c b/deps/ncurses-6.3/ncurses/trace/lib_tracechr.c similarity index 87% rename from deps/ncurses-5.9/ncurses/trace/lib_tracechr.c rename to deps/ncurses-6.3/ncurses/trace/lib_tracechr.c index a1f9f5a..36158d6 100644 --- a/deps/ncurses-5.9/ncurses/trace/lib_tracechr.c +++ b/deps/ncurses-6.3/ncurses/trace/lib_tracechr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2012 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 * @@ -39,10 +40,12 @@ #include <ctype.h> -MODULE_ID("$Id: lib_tracechr.c,v 1.20 2009/04/18 22:48:29 tom Exp $") +MODULE_ID("$Id: lib_tracechr.c,v 1.23 2020/02/02 23:34:34 tom Exp $") #ifdef TRACE +#define MyBufSize sizeof(_nc_globals.tracechr_buf) + NCURSES_EXPORT(char *) _nc_tracechar(SCREEN *sp, int ch) { @@ -55,19 +58,22 @@ _nc_tracechar(SCREEN *sp, int ch) name = safe_keyname(SP_PARM, ch); if (name == 0 || *name == '\0') name = "NULL"; - (void) sprintf(MyBuffer, "'%.30s' = %#03o", name, ch); + _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize) + "'%.30s' = %#03o", name, ch); } else if (!is8bits(ch) || !isprint(UChar(ch))) { /* * workaround for glibc bug: * sprintf changes the result from unctrl() to an empty string if it * does not correspond to a valid multibyte sequence. */ - (void) sprintf(MyBuffer, "%#03o", ch); + _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize) + "%#03o", ch); } else { name = safe_unctrl(SP_PARM, (chtype) ch); if (name == 0 || *name == 0) name = "null"; /* shouldn't happen */ - (void) sprintf(MyBuffer, "'%.30s' = %#03o", name, ch); + _nc_SPRINTF(MyBuffer, _nc_SLIMIT(MyBufSize) + "'%.30s' = %#03o", name, ch); } return (MyBuffer); } diff --git a/deps/ncurses-5.9/ncurses/trace/lib_tracedmp.c b/deps/ncurses-6.3/ncurses/trace/lib_tracedmp.c similarity index 94% rename from deps/ncurses-5.9/ncurses/trace/lib_tracedmp.c rename to deps/ncurses-6.3/ncurses/trace/lib_tracedmp.c index c7fcbf2..3b7ea07 100644 --- a/deps/ncurses-5.9/ncurses/trace/lib_tracedmp.c +++ b/deps/ncurses-6.3/ncurses/trace/lib_tracedmp.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2012,2016 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_tracedmp.c,v 1.32 2009/04/18 21:01:38 tom Exp $") +MODULE_ID("$Id: lib_tracedmp.c,v 1.36 2020/02/02 23:34:34 tom Exp $") #ifdef TRACE @@ -70,11 +71,13 @@ _tracedump(const char *name, WINDOW *win) if (++width + 1 > (int) my_length) { my_length = (unsigned) (2 * (width + 1)); my_buffer = typeRealloc(char, my_length, my_buffer); + if (my_buffer == 0) + return; } for (n = 0; n <= win->_maxy; ++n) { char *ep = my_buffer; - bool haveattrs, havecolors; + bool havecolors; /* * Dump A_CHARTEXT part. It is more important to make the grid line up @@ -111,7 +114,7 @@ _tracedump(const char *name, WINDOW *win) if (multicolumn) { ep = my_buffer; for (j = 0; j < width; ++j) { - chtype test = WidecExt(win->_line[n].text[j]); + int test = WidecExt(win->_line[n].text[j]); if (test) { ep[j] = (char) (test + '0'); } else { @@ -154,8 +157,8 @@ _tracedump(const char *name, WINDOW *win) for (i = 0; i < 4; ++i) { const char *hex = " 123456789ABCDEF"; attr_t mask = (attr_t) (0xf << ((i + 4) * 4)); + bool haveattrs = FALSE; - haveattrs = FALSE; for (j = 0; j < width; ++j) if (AttrOf(win->_line[n].text[j]) & mask) { haveattrs = TRUE; diff --git a/deps/ncurses-5.9/ncurses/trace/lib_tracemse.c b/deps/ncurses-6.3/ncurses/trace/lib_tracemse.c similarity index 82% rename from deps/ncurses-5.9/ncurses/trace/lib_tracemse.c rename to deps/ncurses-6.3/ncurses/trace/lib_tracemse.c index 1afd15d..33d4d3d 100644 --- a/deps/ncurses-5.9/ncurses/trace/lib_tracemse.c +++ b/deps/ncurses-6.3/ncurses/trace/lib_tracemse.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2012,2014 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 * @@ -38,16 +39,22 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_tracemse.c,v 1.18 2011/01/22 19:48:08 tom Exp $") +MODULE_ID("$Id: lib_tracemse.c,v 1.23 2020/02/02 23:34:34 tom Exp $") #ifdef TRACE #define my_buffer sp->tracemse_buf -static char * -_trace_mmask_t(SCREEN *sp, mmask_t code) +NCURSES_EXPORT(char *) +_nc_trace_mmask_t(SCREEN *sp, mmask_t code) { -#define SHOW(m, s) if ((code & m) == m) strcat(strcat(my_buffer, s), ", ") +#define SHOW(m, s) \ + if ((code & m) == m) { \ + size_t n = strlen(my_buffer); \ + if (n && (my_buffer[n-1] != '{')) \ + _nc_STRCAT(my_buffer, ", ", sizeof(my_buffer)); \ + _nc_STRCAT(my_buffer, s, sizeof(my_buffer)); \ + } SHOW(BUTTON1_RELEASED, "release-1"); SHOW(BUTTON1_PRESSED, "press-1"); @@ -110,23 +117,33 @@ _trace_mmask_t(SCREEN *sp, mmask_t code) NCURSES_EXPORT(char *) _nc_tracemouse(SCREEN *sp, MEVENT const *ep) { - (void) sprintf(my_buffer, TRACEMSE_FMT, - ep->id, - ep->x, - ep->y, - ep->z, - (unsigned long) ep->bstate); - - (void) _trace_mmask_t(sp, ep->bstate); - (void) strcat(my_buffer, "}"); - return (my_buffer); + char *result = 0; + + if (sp != 0) { + _nc_SPRINTF(my_buffer, _nc_SLIMIT(sizeof(my_buffer)) + TRACEMSE_FMT, + ep->id, + ep->x, + ep->y, + ep->z, + (unsigned long) ep->bstate); + + (void) _nc_trace_mmask_t(sp, ep->bstate); + _nc_STRCAT(my_buffer, "}", sizeof(my_buffer)); + result = (my_buffer); + } + return result; } NCURSES_EXPORT(mmask_t) _nc_retrace_mmask_t(SCREEN *sp, mmask_t code) { - *my_buffer = '\0'; - T((T_RETURN("{%s}"), _trace_mmask_t(sp, code))); + if (sp != 0) { + *my_buffer = '\0'; + T((T_RETURN("{%s}"), _nc_trace_mmask_t(sp, code))); + } else { + T((T_RETURN("{?}"))); + } return code; } diff --git a/deps/ncurses-5.9/ncurses/trace/trace_buf.c b/deps/ncurses-6.3/ncurses/trace/trace_buf.c similarity index 90% rename from deps/ncurses-5.9/ncurses/trace/trace_buf.c rename to deps/ncurses-6.3/ncurses/trace/trace_buf.c index 46baba4..7e6384b 100644 --- a/deps/ncurses-5.9/ncurses/trace/trace_buf.c +++ b/deps/ncurses-6.3/ncurses/trace/trace_buf.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2011,2012 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 * @@ -35,7 +36,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: trace_buf.c,v 1.17 2011/01/22 19:48:16 tom Exp $") +MODULE_ID("$Id: trace_buf.c,v 1.21 2020/02/02 23:34:34 tom Exp $") #ifdef TRACE @@ -103,13 +104,14 @@ _nc_trace_buf(int bufnum, size_t want) NCURSES_EXPORT(char *) _nc_trace_bufcat(int bufnum, const char *value) { - char *buffer = _nc_trace_alloc(bufnum, 0); + char *buffer = _nc_trace_alloc(bufnum, (size_t) 0); if (buffer != 0) { size_t have = strlen(buffer); + size_t need = strlen(value) + have; - buffer = _nc_trace_alloc(bufnum, 1 + have + strlen(value)); + buffer = _nc_trace_alloc(bufnum, 1 + need); if (buffer != 0) - (void) strcpy(buffer + have, value); + _nc_STRCPY(buffer + have, value, need); } return buffer; diff --git a/deps/ncurses-5.9/ncurses/trace/trace_tries.c b/deps/ncurses-6.3/ncurses/trace/trace_tries.c similarity index 78% rename from deps/ncurses-5.9/ncurses/trace/trace_tries.c rename to deps/ncurses-6.3/ncurses/trace/trace_tries.c index d338013..14f704b 100644 --- a/deps/ncurses-5.9/ncurses/trace/trace_tries.c +++ b/deps/ncurses-6.3/ncurses/trace/trace_tries.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2009,2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1999-2011,2012 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 * @@ -35,7 +36,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: trace_tries.c,v 1.16 2011/01/09 00:23:27 tom Exp $") +MODULE_ID("$Id: trace_tries.c,v 1.18 2020/02/02 23:34:34 tom Exp $") #ifdef TRACE #define my_buffer _nc_globals.tracetry_buf @@ -49,28 +50,31 @@ recur_tries(TRIES * tree, unsigned level) my_buffer = (unsigned char *) _nc_doalloc(my_buffer, my_length); } - while (tree != 0) { - if ((my_buffer[level] = tree->ch) == 0) - my_buffer[level] = 128; - my_buffer[level + 1] = 0; - if (tree->value != 0) { - _tracef("%5d: %s (%s)", tree->value, - _nc_visbuf((char *) my_buffer), keyname(tree->value)); + if (my_buffer != 0) { + while (tree != 0) { + if ((my_buffer[level] = tree->ch) == 0) + my_buffer[level] = 128; + my_buffer[level + 1] = 0; + if (tree->value != 0) { + _tracef("%5d: %s (%s)", tree->value, + _nc_visbuf((char *) my_buffer), keyname(tree->value)); + } + if (tree->child) + recur_tries(tree->child, level + 1); + tree = tree->sibling; } - if (tree->child) - recur_tries(tree->child, level + 1); - tree = tree->sibling; } } NCURSES_EXPORT(void) _nc_trace_tries(TRIES * tree) { - my_buffer = typeMalloc(unsigned char, my_length = 80); - _tracef("BEGIN tries %p", (void *) tree); - recur_tries(tree, 0); - _tracef(". . . tries %p", (void *) tree); - free(my_buffer); + if ((my_buffer = typeMalloc(unsigned char, my_length = 80)) != 0) { + _tracef("BEGIN tries %p", (void *) tree); + recur_tries(tree, 0); + _tracef(". . . tries %p", (void *) tree); + free(my_buffer); + } } #else diff --git a/deps/ncurses-5.9/ncurses/trace/trace_xnames.c b/deps/ncurses-6.3/ncurses/trace/trace_xnames.c similarity index 93% rename from deps/ncurses-5.9/ncurses/trace/trace_xnames.c rename to deps/ncurses-6.3/ncurses/trace/trace_xnames.c index 38a4873..2d74336 100644 --- a/deps/ncurses-5.9/ncurses/trace/trace_xnames.c +++ b/deps/ncurses-6.3/ncurses/trace/trace_xnames.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2000,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1999-2010,2016 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 * @@ -35,7 +36,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: trace_xnames.c,v 1.6 2010/01/23 17:59:27 tom Exp $") +MODULE_ID("$Id: trace_xnames.c,v 1.8 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(void) _nc_trace_xnames(TERMTYPE *tp GCC_UNUSED) @@ -43,8 +44,9 @@ _nc_trace_xnames(TERMTYPE *tp GCC_UNUSED) #ifdef TRACE #if NCURSES_XNAMES int limit = tp->ext_Booleans + tp->ext_Numbers + tp->ext_Strings; - int n, m; + if (limit) { + int n; int begin_num = tp->ext_Booleans; int begin_str = tp->ext_Booleans + tp->ext_Numbers; @@ -53,7 +55,10 @@ _nc_trace_xnames(TERMTYPE *tp GCC_UNUSED) limit, tp->ext_Booleans, tp->ext_Numbers, tp->ext_Strings, tp->num_Booleans, tp->num_Numbers, tp->num_Strings); + for (n = 0; n < limit; n++) { + int m; + if ((m = n - begin_str) >= 0) { _tracef("[%d] %s = %s", n, tp->ext_Names[n], diff --git a/deps/ncurses-5.9/ncurses/trace/varargs.c b/deps/ncurses-6.3/ncurses/trace/varargs.c similarity index 88% rename from deps/ncurses-5.9/ncurses/trace/varargs.c rename to deps/ncurses-6.3/ncurses/trace/varargs.c index 541173d..9be5fc2 100644 --- a/deps/ncurses-5.9/ncurses/trace/varargs.c +++ b/deps/ncurses-6.3/ncurses/trace/varargs.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2001-2007,2008 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2001-2008,2012 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 * @@ -34,7 +35,7 @@ #include <ctype.h> -MODULE_ID("$Id: varargs.c,v 1.8 2008/11/16 00:19:59 juergen Exp $") +MODULE_ID("$Id: varargs.c,v 1.12 2020/02/02 23:34:34 tom Exp $") #ifdef TRACE @@ -149,25 +150,32 @@ _nc_varargs(const char *fmt, va_list ap) param = buffer; switch (used) { case atInteger: - sprintf(buffer, "%d", ival); + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%d", ival); break; case atFloat: - sprintf(buffer, "%f", fval); + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%f", fval); break; case atPoint: - sprintf(buffer, "%p", pval); + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%p", pval); break; case atString: param = _nc_visbuf2(1, sval); break; case atUnknown: default: - strcpy(buffer, "?"); + _nc_STRCPY(buffer, "?", sizeof(buffer)); break; } MyLength += strlen(param) + 2; MyBuffer = typeRealloc(char, MyLength, MyBuffer); - sprintf(MyBuffer + strlen(MyBuffer), ", %s", param); + if (MyBuffer != 0) { + _nc_SPRINTF(MyBuffer + strlen(MyBuffer), + _nc_SLIMIT(MyLength - strlen(MyBuffer)) + ", %s", param); + } } } used = atUnknown; @@ -177,7 +185,7 @@ _nc_varargs(const char *fmt, va_list ap) } } - return (MyBuffer); + return (MyBuffer ? MyBuffer : dummy); } #else EMPTY_MODULE(_nc_varargs) diff --git a/deps/ncurses-5.9/ncurses/trace/visbuf.c b/deps/ncurses-6.3/ncurses/trace/visbuf.c similarity index 80% rename from deps/ncurses-5.9/ncurses/trace/visbuf.c rename to deps/ncurses-6.3/ncurses/trace/visbuf.c index 66da4f4..aca8aff 100644 --- a/deps/ncurses-5.9/ncurses/trace/visbuf.c +++ b/deps/ncurses-6.3/ncurses/trace/visbuf.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2001-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2001-2016,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 * @@ -42,12 +43,12 @@ #include <tic.h> #include <ctype.h> -MODULE_ID("$Id: visbuf.c,v 1.37 2010/05/29 18:51:41 tom Exp $") +MODULE_ID("$Id: visbuf.c,v 1.53 2021/02/27 20:07:57 tom Exp $") #define NUM_VISBUFS 4 #define NormalLen(len) (size_t) (((size_t)(len) + 1) * 4) -#define WideLen(len) (size_t) (((size_t)(len) + 1) * 4 * MB_CUR_MAX) +#define WideLen(len) (size_t) (((size_t)(len) + 1) * 4 * (size_t) MB_CUR_MAX) #ifdef TRACE static const char d_quote[] = StringOf(D_QUOTE); @@ -55,13 +56,21 @@ static const char l_brace[] = StringOf(L_BRACE); static const char r_brace[] = StringOf(R_BRACE); #endif +#if USE_STRING_HACKS && HAVE_SNPRINTF +#define VisChar(tp, chr, limit) _nc_vischar(tp, chr, limit) +#define LIMIT_ARG ,size_t limit +#else +#define VisChar(tp, chr, limit) _nc_vischar(tp, chr) +#define LIMIT_ARG /* nothing */ +#endif + static char * -_nc_vischar(char *tp, unsigned c) +_nc_vischar(char *tp, unsigned c LIMIT_ARG) { if (c == '"' || c == '\\') { *tp++ = '\\'; *tp++ = (char) c; - } else if (is7bits(c) && (isgraph(c) || c == ' ')) { + } else if (is7bits((int) c) && (isgraph((int) c) || c == ' ')) { *tp++ = (char) c; } else if (c == '\n') { *tp++ = '\\'; @@ -72,6 +81,9 @@ _nc_vischar(char *tp, unsigned c) } else if (c == '\b') { *tp++ = '\\'; *tp++ = 'b'; + } else if (c == '\t') { + *tp++ = '\\'; + *tp++ = 't'; } else if (c == '\033') { *tp++ = '\\'; *tp++ = 'e'; @@ -84,7 +96,8 @@ _nc_vischar(char *tp, unsigned c) *tp++ = '^'; *tp++ = (char) ('@' + c); } else { - sprintf(tp, "\\%03lo", (unsigned long) ChCharOf(c)); + _nc_SPRINTF(tp, _nc_SLIMIT(limit) + "\\%03lo", (unsigned long) ChCharOf(c)); tp += strlen(tp); } *tp = 0; @@ -96,7 +109,7 @@ _nc_visbuf2n(int bufnum, const char *buf, int len) { const char *vbuf = 0; char *tp; - int c; + int count; if (buf == 0) return ("(null)"); @@ -106,11 +119,14 @@ _nc_visbuf2n(int bufnum, const char *buf, int len) if (len < 0) len = (int) strlen(buf); + count = len; #ifdef TRACE vbuf = tp = _nc_trace_buf(bufnum, NormalLen(len)); #else { static char *mybuf[NUM_VISBUFS]; + int c; + if (bufnum < 0) { for (c = 0; c < NUM_VISBUFS; ++c) { FreeAndNull(mybuf[c]); @@ -123,9 +139,11 @@ _nc_visbuf2n(int bufnum, const char *buf, int len) } #endif if (tp != 0) { + int c; + *tp++ = D_QUOTE; - while ((--len >= 0) && (c = *buf++) != '\0') { - tp = _nc_vischar(tp, UChar(c)); + while ((--count >= 0) && (c = *buf++) != '\0') { + tp = VisChar(tp, UChar(c), NormalLen(len)); } *tp++ = D_QUOTE; *tp = '\0'; @@ -174,7 +192,7 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len) { const char *vbuf; char *tp; - wchar_t c; + int count; if (buf == 0) return ("(null)"); @@ -182,6 +200,7 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len) if (len < 0) len = (int) wcslen(buf); + count = len; #ifdef TRACE vbuf = tp = _nc_trace_buf(bufnum, WideLen(len)); #else @@ -192,16 +211,19 @@ _nc_viswbuf2n(int bufnum, const wchar_t *buf, int len) } #endif if (tp != 0) { + wchar_t c; + *tp++ = D_QUOTE; - while ((--len >= 0) && (c = *buf++) != '\0') { + while ((--count >= 0) && (c = *buf++) != '\0') { char temp[CCHARW_MAX + 80]; int j = wctomb(temp, c), k; if (j <= 0) { - sprintf(temp, "\\u%08X", (unsigned) c); + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "\\u%08X", (unsigned) c); j = (int) strlen(temp); } for (k = 0; k < j; ++k) { - tp = _nc_vischar(tp, UChar(temp[k])); + tp = VisChar(tp, UChar(temp[k]), WideLen(len)); } } *tp++ = D_QUOTE; @@ -248,10 +270,12 @@ _nc_viswibuf(const wint_t *buf) else mybuf = typeMalloc(wchar_t, mylen); } - for (n = 0; buf[n] != 0; ++n) { - mybuf[n] = (wchar_t) buf[n]; + if (mybuf != 0) { + for (n = 0; buf[n] != 0; ++n) { + mybuf[n] = (wchar_t) buf[n]; + } + mybuf[n] = L'\0'; } - mybuf[n] = L'\0'; return _nc_viswbuf2(0, mybuf); } @@ -259,13 +283,13 @@ _nc_viswibuf(const wint_t *buf) /* use these functions for displaying parts of a line within a window */ NCURSES_EXPORT(const char *) -_nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len) +_nc_viscbuf2(int bufnum, const NCURSES_CH_T *buf, int len) { - char *result = _nc_trace_buf(bufnum, BUFSIZ); - int first; - const char *found; + char *result = _nc_trace_buf(bufnum, (size_t) BUFSIZ); if (result != 0) { + int first = 0; + #if USE_WIDEC_SUPPORT if (len < 0) len = _nc_wchstrlen(buf); @@ -274,7 +298,6 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len) /* * Display one or more strings followed by attributes. */ - first = 0; while (first < len) { attr_t attr = AttrOf(buf[first]); int last = len - 1; @@ -290,7 +313,8 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len) (void) _nc_trace_bufcat(bufnum, l_brace); (void) _nc_trace_bufcat(bufnum, d_quote); for (j = first; j <= last; ++j) { - found = _nc_altcharset_name(attr, (chtype) CharOf(buf[j])); + const char *found = _nc_altcharset_name(attr, (chtype) + CharOf(buf[j])); if (found != 0) { (void) _nc_trace_bufcat(bufnum, found); attr &= ~A_ALTCHARSET; @@ -299,9 +323,9 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len) if (!isWidecExt(buf[j])) { PUTC_DATA; - PUTC_INIT; for (PUTC_i = 0; PUTC_i < CCHARW_MAX; ++PUTC_i) { int k; + char temp[80]; PUTC_ch = buf[j].chars[PUTC_i]; if (PUTC_ch == L'\0') { @@ -309,13 +333,19 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len) (void) _nc_trace_bufcat(bufnum, "\\000"); break; } + PUTC_INIT; PUTC_n = (int) wcrtomb(PUTC_buf, buf[j].chars[PUTC_i], &PUT_st); - if (PUTC_n <= 0) + if (PUTC_n <= 0 || buf[j].chars[PUTC_i] > 255) { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "{%d:\\u%lx}", + _nc_wacs_width(buf[j].chars[PUTC_i]), + (unsigned long) buf[j].chars[PUTC_i]); + (void) _nc_trace_bufcat(bufnum, temp); break; + } for (k = 0; k < PUTC_n; k++) { - char temp[80]; - _nc_vischar(temp, UChar(PUTC_buf[k])); + VisChar(temp, UChar(PUTC_buf[k]), sizeof(temp)); (void) _nc_trace_bufcat(bufnum, temp); } } @@ -323,8 +353,8 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len) #else { char temp[80]; - _nc_vischar(temp, UChar(buf[j])); - result = _nc_trace_bufcat(bufnum, temp); + VisChar(temp, UChar(buf[j]), sizeof(temp)); + (void) _nc_trace_bufcat(bufnum, temp); } #endif /* USE_WIDEC_SUPPORT */ } @@ -341,7 +371,7 @@ _nc_viscbuf2(int bufnum, const NCURSES_CH_T * buf, int len) } NCURSES_EXPORT(const char *) -_nc_viscbuf(const NCURSES_CH_T * buf, int len) +_nc_viscbuf(const NCURSES_CH_T *buf, int len) { return _nc_viscbuf2(0, buf, len); } diff --git a/deps/ncurses-5.9/ncurses/tty/MKexpanded.sh b/deps/ncurses-6.3/ncurses/tty/MKexpanded.sh similarity index 91% rename from deps/ncurses-5.9/ncurses/tty/MKexpanded.sh rename to deps/ncurses-6.3/ncurses/tty/MKexpanded.sh index 7a5f599..77f06f2 100755 --- a/deps/ncurses-5.9/ncurses/tty/MKexpanded.sh +++ b/deps/ncurses-6.3/ncurses/tty/MKexpanded.sh @@ -1,6 +1,7 @@ #! /bin/sh ############################################################################## -# Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,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"), # @@ -29,7 +30,7 @@ # # Author: Thomas E. Dickey, 1997-on # -# $Id: MKexpanded.sh,v 1.17 2010/01/23 17:57:43 tom Exp $ +# $Id: MKexpanded.sh,v 1.23 2021/06/17 21:26:02 tom Exp $ # # Script to generate 'expanded.c', a dummy source that contains functions # corresponding to complex macros used in this library. By making functions, @@ -48,7 +49,7 @@ else fi TMP=gen$$.c -trap "rm -f $TMP" 0 1 2 5 15 +trap "rm -f $TMP" EXIT INT QUIT TERM HUP cat <<EOF /* generated by MKexpanded.sh */ @@ -80,7 +81,7 @@ _nc_toggle_attr_on (attr_t *S, attr_t at) } NCURSES_EXPORT(void) -_nc_toggle_attr_off (attr_t *S, attr_t at) +_nc_toggle_attr_off (attr_t *S, attr_t at) { toggle_attr_off(*S,at); } @@ -125,7 +126,7 @@ _nc_UpdateAttrs (CARG_CH_T c) EOF $preprocessor $TMP 2>/dev/null | \ - sed -e '1,/^IGNORE$/d' -e 's/^@/#/' -e 's/^#if_/#if /' + sed -e '1,/^IGNORE$/d' -e 's/^@/#/' -e 's/^#[ ]*if_/#if /' -e "s,$TMP,expanded.c," cat <<EOF #else /* ! NCURSES_EXPANDED */ diff --git a/deps/ncurses-5.9/ncurses/tty/hardscroll.c b/deps/ncurses-6.3/ncurses/tty/hardscroll.c similarity index 93% rename from deps/ncurses-5.9/ncurses/tty/hardscroll.c rename to deps/ncurses-6.3/ncurses/tty/hardscroll.c index af68c96..abb21cf 100644 --- a/deps/ncurses-5.9/ncurses/tty/hardscroll.c +++ b/deps/ncurses-6.3/ncurses/tty/hardscroll.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2015,2016 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 * @@ -147,7 +148,7 @@ AUTHOR #include <curses.priv.h> -MODULE_ID("$Id: hardscroll.c,v 1.47 2010/04/24 23:46:47 tom Exp $") +MODULE_ID("$Id: hardscroll.c,v 1.54 2020/02/02 23:34:34 tom Exp $") #if defined(SCROLLDEBUG) || defined(HASHDEBUG) @@ -173,9 +174,9 @@ NCURSES_EXPORT_VAR (int *) # if USE_HASHMAP # define oldnums(sp) (sp)->_oldnum_list # define OLDNUM(sp,n) oldnums(sp)[n] -# else /* !USE_HASHMAP */ +# else /* !USE_HASHMAP */ # define OLDNUM(sp,n) NewScreen(sp)->_line[n].oldindex -# endif /* !USE_HASHMAP */ +# endif /* !USE_HASHMAP */ #define OLDNUM_SIZE(sp) (sp)->_oldnum_size @@ -193,14 +194,20 @@ NCURSES_SP_NAME(_nc_scroll_optimize) (NCURSES_SP_DCL0) #if !defined(SCROLLDEBUG) && !defined(HASHDEBUG) #if USE_HASHMAP /* get enough storage */ - if (OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM)) { + assert(OLDNUM_SIZE(SP_PARM) >= 0); + assert(screen_lines(SP_PARM) > 0); + if ((oldnums(SP_PARM) == 0) + || (OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM))) { + int need_lines = ((OLDNUM_SIZE(SP_PARM) < screen_lines(SP_PARM)) + ? screen_lines(SP_PARM) + : OLDNUM_SIZE(SP_PARM)); int *new_oldnums = typeRealloc(int, - (size_t) screen_lines(SP_PARM), + (size_t) need_lines, oldnums(SP_PARM)); if (!new_oldnums) return; oldnums(SP_PARM) = new_oldnums; - OLDNUM_SIZE(SP_PARM) = screen_lines(SP_PARM); + OLDNUM_SIZE(SP_PARM) = need_lines; } /* calculate the indices */ NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_ARG); @@ -294,15 +301,18 @@ NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_linedump) (NCURSES_SP_DCL0) /* dump the state of the real and virtual oldnum fields */ { - int n; char *buf = 0; size_t want = ((size_t) screen_lines(SP_PARM) + 1) * 4; + (void) SP_PARM; if ((buf = typeMalloc(char, want)) != 0) { + int n; *buf = '\0'; for (n = 0; n < screen_lines(SP_PARM); n++) - (void) sprintf(buf + strlen(buf), " %02d", OLDNUM(SP_PARM, n)); + _nc_SPRINTF(buf + strlen(buf), + _nc_SLIMIT(want - strlen(buf)) + " %02d", OLDNUM(SP_PARM, n)); TR(TRACE_UPDATE | TRACE_MOVE, ("virt %s", buf)); free(buf); } @@ -331,7 +341,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) for (;;) { int n; - for (n = 0; n < screen_lines; n++) + for (n = 0; n < screen_lines(sp); n++) oldnums[n] = _NEWINDEX; /* grab the test vector */ diff --git a/deps/ncurses-5.9/ncurses/tty/hashmap.c b/deps/ncurses-6.3/ncurses/tty/hashmap.c similarity index 91% rename from deps/ncurses-5.9/ncurses/tty/hashmap.c rename to deps/ncurses-6.3/ncurses/tty/hashmap.c index b670e1b..3f124c9 100644 --- a/deps/ncurses-5.9/ncurses/tty/hashmap.c +++ b/deps/ncurses-6.3/ncurses/tty/hashmap.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2015,2016 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 * @@ -73,19 +74,23 @@ AUTHOR #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: hashmap.c,v 1.62 2010/04/24 23:46:07 tom Exp $") +MODULE_ID("$Id: hashmap.c,v 1.69 2020/05/31 17:50:48 tom Exp $") #ifdef HASHDEBUG # define _tracef printf # undef TR +# ifdef TRACE # define TR(n, a) if (_nc_tracing & (n)) { _tracef a ; putchar('\n'); } +# else +# define TR(n, a) { _tracef a ; putchar('\n'); } +# endif # undef screen_lines -# define screen_lines MAXLINES -# define TEXTWIDTH 1 -int oldnums[MAXLINES], reallines[MAXLINES]; -static NCURSES_CH_T oldtext[MAXLINES][TEXTWIDTH]; -static NCURSES_CH_T newtext[MAXLINES][TEXTWIDTH]; +# define screen_lines(sp) MAXLINES +# define TEXTWIDTH(sp) 1 +static int oldnums[MAXLINES], reallines[MAXLINES]; +static NCURSES_CH_T oldtext[MAXLINES][TEXTWIDTH(sp)]; +static NCURSES_CH_T newtext[MAXLINES][TEXTWIDTH(sp)]; # define OLDNUM(sp,n) oldnums[n] # define OLDTEXT(sp,n) oldtext[n] # define NEWTEXT(sp,m) newtext[m] @@ -115,11 +120,13 @@ static NCURSES_CH_T newtext[MAXLINES][TEXTWIDTH]; static const NCURSES_CH_T blankchar = NewChar(BLANK_TEXT); static NCURSES_INLINE unsigned long -hash(SCREEN *sp, NCURSES_CH_T * text) +hash(SCREEN *sp, NCURSES_CH_T *text) { int i; NCURSES_CH_T ch; unsigned long result = 0; + (void) sp; + for (i = TEXTWIDTH(sp); i > 0; i--) { ch = *text++; result += (result << 5) + (unsigned long) HASH_VAL(ch); @@ -129,10 +136,11 @@ hash(SCREEN *sp, NCURSES_CH_T * text) /* approximate update cost */ static int -update_cost(SCREEN *sp, NCURSES_CH_T * from, NCURSES_CH_T * to) +update_cost(SCREEN *sp, NCURSES_CH_T *from, NCURSES_CH_T *to) { int cost = 0; int i; + (void) sp; for (i = TEXTWIDTH(sp); i > 0; i--, from++, to++) if (!(CharEq(*from, *to))) @@ -142,11 +150,12 @@ update_cost(SCREEN *sp, NCURSES_CH_T * from, NCURSES_CH_T * to) } static int -update_cost_from_blank(SCREEN *sp, NCURSES_CH_T * to) +update_cost_from_blank(SCREEN *sp, NCURSES_CH_T *to) { int cost = 0; int i; NCURSES_CH_T blank = blankchar; + (void) sp; if (back_color_erase) SetPair(blank, GetPair(stdscr->_nc_bkgd)); @@ -163,7 +172,7 @@ update_cost_from_blank(SCREEN *sp, NCURSES_CH_T * to) * effective. 'blank' indicates whether the line 'to' would become blank. */ static NCURSES_INLINE bool -cost_effective(SCREEN *sp, const int from, const int to, const bool blank) +cost_effective(SCREEN *sp, const int from, const int to, const int blank) { int new_from; @@ -190,9 +199,8 @@ cost_effective(SCREEN *sp, const int from, const int to, const bool blank) static void grow_hunks(SCREEN *sp) { - int start, end, shift; - int back_limit, forward_limit; /* limits for cells to fill */ - int back_ref_limit, forward_ref_limit; /* limits for refrences */ + int back_limit; /* limits for cells to fill */ + int back_ref_limit; /* limit for references */ int i; int next_hunk; @@ -207,8 +215,11 @@ grow_hunks(SCREEN *sp) while (i < screen_lines(sp) && OLDNUM(sp, i) == _NEWINDEX) i++; for (; i < screen_lines(sp); i = next_hunk) { - start = i; - shift = OLDNUM(sp, i) - i; + int forward_limit; + int forward_ref_limit; + int end; + int start = i; + int shift = OLDNUM(sp, i) - i; /* get forward limit */ i = start + 1; @@ -277,7 +288,6 @@ NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_DCL0) { HASHMAP *hsp; register int i; - int start, shift, size; if (screen_lines(SP_PARM) > lines_alloc(SP_PARM)) { if (hashtab(SP_PARM)) @@ -379,6 +389,8 @@ NCURSES_SP_NAME(_nc_hash_map) (NCURSES_SP_DCL0) * more than carry. */ for (i = 0; i < screen_lines(SP_PARM);) { + int start, shift, size; + while (i < screen_lines(SP_PARM) && OLDNUM(SP_PARM, i) == _NEWINDEX) i++; if (i >= screen_lines(SP_PARM)) @@ -486,13 +498,13 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) return EXIT_FAILURE; (void) _nc_alloc_screen(); - for (n = 0; n < screen_lines; n++) { + for (n = 0; n < screen_lines(sp); n++) { reallines[n] = n; oldnums[n] = _NEWINDEX; CharOf(oldtext[n][0]) = CharOf(newtext[n][0]) = '.'; } - if (isatty(fileno(stdin))) + if (NC_ISATTY(fileno(stdin))) usage(); #ifdef TRACE @@ -509,7 +521,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) break; case 'l': /* get initial line number vector */ - for (n = 0; n < screen_lines; n++) { + for (n = 0; n < screen_lines(sp); n++) { reallines[n] = n; oldnums[n] = _NEWINDEX; } @@ -522,9 +534,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) break; case 'n': /* use following letters as text of new lines */ - for (n = 0; n < screen_lines; n++) + for (n = 0; n < screen_lines(sp); n++) CharOf(newtext[n][0]) = '.'; - for (n = 0; n < screen_lines; n++) + for (n = 0; n < screen_lines(sp); n++) if (line[n + 1] == '\n') break; else @@ -532,9 +544,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) break; case 'o': /* use following letters as text of old lines */ - for (n = 0; n < screen_lines; n++) + for (n = 0; n < screen_lines(sp); n++) CharOf(oldtext[n][0]) = '.'; - for (n = 0; n < screen_lines; n++) + for (n = 0; n < screen_lines(sp); n++) if (line[n + 1] == '\n') break; else @@ -546,12 +558,12 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) _nc_linedump(); #endif (void) fputs("Old lines: [", stdout); - for (n = 0; n < screen_lines; n++) + for (n = 0; n < screen_lines(sp); n++) putchar(CharOf(oldtext[n][0])); putchar(']'); putchar('\n'); (void) fputs("New lines: [", stdout); - for (n = 0; n < screen_lines; n++) + for (n = 0; n < screen_lines(sp); n++) putchar(CharOf(newtext[n][0])); putchar(']'); putchar('\n'); @@ -572,11 +584,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) break; } } -#if NO_LEAKS - _nc_free_and_exit(EXIT_SUCCESS); -#else - return EXIT_SUCCESS; -#endif + exit_curses(EXIT_SUCCESS); } #endif /* HASHDEBUG */ diff --git a/deps/ncurses-5.9/ncurses/tty/lib_mvcur.c b/deps/ncurses-6.3/ncurses/tty/lib_mvcur.c similarity index 85% rename from deps/ncurses-5.9/ncurses/tty/lib_mvcur.c rename to deps/ncurses-6.3/ncurses/tty/lib_mvcur.c index ad41f8d..7959227 100644 --- a/deps/ncurses-5.9/ncurses/tty/lib_mvcur.c +++ b/deps/ncurses-6.3/ncurses/tty/lib_mvcur.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2010,2011 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -82,8 +83,8 @@ /* * The average overhead of a full optimization computation in character - * transmission times. If it's too high, the algorithm will be a bit - * over-biased toward using cup rather than local motions; if it's too + * transmission times. If it is too high, the algorithm will be a bit + * over-biased toward using cup rather than local motions; if it is too * low, the algorithm may spend more time than is strictly optimal * looking for non-cup motions. Profile the optimizer using the `t' * command of the exerciser (see below), and round to the nearest integer. @@ -97,7 +98,7 @@ /* * LONG_DIST is the distance we consider to be just as costly to move over as a - * cup sequence is to emit. In other words, it's the length of a cup sequence + * cup sequence is to emit. In other words, it is the length of a cup sequence * adjusted for average computation overhead. The magic number is the length * of "\033[yy;xxH", the typical cup sequence these days. */ @@ -147,7 +148,7 @@ * int _rep_cost; // cost of (repeat_char) * * The USE_HARD_TABS switch controls whether it is reliable to use tab/backtabs - * for local motions. On many systems, it's not, due to uncertainties about + * for local motions. On many systems, it is not, due to uncertainties about * tab delays and whether or not tabs will be expanded in raw mode. If you * have parm_right_cursor, tab motions don't win you a lot anyhow. */ @@ -159,7 +160,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_mvcur.c,v 1.126 2011/01/22 19:48:21 tom Exp $") +MODULE_ID("$Id: lib_mvcur.c,v 1.156 2021/09/04 10:29:15 tom Exp $") #define WANT_CHAR(sp, y, x) NewScreen(sp)->_line[y].text[x] /* desired state */ @@ -176,6 +177,9 @@ static bool profiling = FALSE; static float diff; #endif /* MAIN */ +#undef NCURSES_OUTC_FUNC +#define NCURSES_OUTC_FUNC myOutCh + #define OPT_SIZE 512 static int normalized_cost(NCURSES_SP_DCLx const char *const cap, int affcnt); @@ -274,10 +278,9 @@ reset_scroll_region(NCURSES_SP_DCL0) /* Set the scroll-region to a known state (the default) */ { if (change_scroll_region) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "change_scroll_region", - TPARM_2(change_scroll_region, - 0, screen_lines(SP_PARM) - 1)); + NCURSES_PUTP2("change_scroll_region", + TIPARM_2(change_scroll_region, + 0, screen_lines(SP_PARM) - 1)); } } @@ -285,14 +288,12 @@ NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_DCL0) /* what to do at initialization time and after each shellout */ { - if (SP_PARM && !IsTermInfo(SP_PARM)) + if (!SP_PARM || !IsTermInfo(SP_PARM)) return; /* initialize screen for cursor access */ if (enter_ca_mode) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "enter_ca_mode", - enter_ca_mode); + NCURSES_PUTP2("enter_ca_mode", enter_ca_mode); } /* @@ -327,13 +328,14 @@ NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0) /* initialize the cost structure */ { - if (SP_PARM->_ofp && isatty(fileno(SP_PARM->_ofp))) + if (SP_PARM->_ofp && NC_ISATTY(fileno(SP_PARM->_ofp))) { SP_PARM->_char_padding = ((BAUDBYTE * 1000 * 10) / (BAUDRATE(SP_PARM) > 0 ? BAUDRATE(SP_PARM) : 9600)); - else + } else { SP_PARM->_char_padding = 1; /* must be nonzero */ + } if (SP_PARM->_char_padding <= 0) SP_PARM->_char_padding = 1; /* must be nonzero */ TR(TRACE_CHARPUT | TRACE_MOVE, ("char_padding %d msecs", SP_PARM->_char_padding)); @@ -343,7 +345,9 @@ NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0) SP_PARM->_home_cost = CostOf(cursor_home, 0); SP_PARM->_ll_cost = CostOf(cursor_to_ll, 0); #if USE_HARD_TABS - if (getenv("NCURSES_NO_HARD_TABS") == 0) { + if (getenv("NCURSES_NO_HARD_TABS") == 0 + && dest_tabs_magic_smso == 0 + && HasHardTabs()) { SP_PARM->_ht_cost = CostOf(tab, 0); SP_PARM->_cbt_cost = CostOf(back_tab, 0); } else { @@ -395,13 +399,13 @@ NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0) * All these averages depend on the assumption that all parameter values * are equally probable. */ - SP_PARM->_cup_cost = CostOf(TPARM_2(SP_PARM->_address_cursor, 23, 23), 1); - SP_PARM->_cub_cost = CostOf(TPARM_1(parm_left_cursor, 23), 1); - SP_PARM->_cuf_cost = CostOf(TPARM_1(parm_right_cursor, 23), 1); - SP_PARM->_cud_cost = CostOf(TPARM_1(parm_down_cursor, 23), 1); - SP_PARM->_cuu_cost = CostOf(TPARM_1(parm_up_cursor, 23), 1); - SP_PARM->_hpa_cost = CostOf(TPARM_1(column_address, 23), 1); - SP_PARM->_vpa_cost = CostOf(TPARM_1(row_address, 23), 1); + SP_PARM->_cup_cost = CostOf(TIPARM_2(SP_PARM->_address_cursor, 23, 23), 1); + SP_PARM->_cub_cost = CostOf(TIPARM_1(parm_left_cursor, 23), 1); + SP_PARM->_cuf_cost = CostOf(TIPARM_1(parm_right_cursor, 23), 1); + SP_PARM->_cud_cost = CostOf(TIPARM_1(parm_down_cursor, 23), 1); + SP_PARM->_cuu_cost = CostOf(TIPARM_1(parm_up_cursor, 23), 1); + SP_PARM->_hpa_cost = CostOf(TIPARM_1(column_address, 23), 1); + SP_PARM->_vpa_cost = CostOf(TIPARM_1(row_address, 23), 1); /* non-parameterized screen-update strings */ SP_PARM->_ed_cost = NormalizedCost(clr_eos, 1); @@ -418,17 +422,16 @@ NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0) SP_PARM->_el_cost = 0; /* parameterized screen-update strings */ - SP_PARM->_dch_cost = NormalizedCost(TPARM_1(parm_dch, 23), 1); - SP_PARM->_ich_cost = NormalizedCost(TPARM_1(parm_ich, 23), 1); - SP_PARM->_ech_cost = NormalizedCost(TPARM_1(erase_chars, 23), 1); - SP_PARM->_rep_cost = NormalizedCost(TPARM_2(repeat_char, ' ', 23), 1); - - SP_PARM->_cup_ch_cost = NormalizedCost( - TPARM_2(SP_PARM->_address_cursor, - 23, 23), - 1); - SP_PARM->_hpa_ch_cost = NormalizedCost(TPARM_1(column_address, 23), 1); - SP_PARM->_cuf_ch_cost = NormalizedCost(TPARM_1(parm_right_cursor, 23), 1); + SP_PARM->_dch_cost = NormalizedCost(TIPARM_1(parm_dch, 23), 1); + SP_PARM->_ich_cost = NormalizedCost(TIPARM_1(parm_ich, 23), 1); + SP_PARM->_ech_cost = NormalizedCost(TIPARM_1(erase_chars, 23), 1); + SP_PARM->_rep_cost = NormalizedCost(TIPARM_2(repeat_char, ' ', 23), 1); + + SP_PARM->_cup_ch_cost = NormalizedCost(TIPARM_2(SP_PARM->_address_cursor, + 23, 23), + 1); + SP_PARM->_hpa_ch_cost = NormalizedCost(TIPARM_1(column_address, 23), 1); + SP_PARM->_cuf_ch_cost = NormalizedCost(TIPARM_1(parm_right_cursor, 23), 1); SP_PARM->_inline_cost = min(SP_PARM->_cup_ch_cost, min(SP_PARM->_hpa_ch_cost, SP_PARM->_cuf_ch_cost)); @@ -449,8 +452,8 @@ NCURSES_SP_NAME(_nc_mvcur_init) (NCURSES_SP_DCL0) /* * A different, possibly better way to arrange this would be to set the - * SCREEN's _endwin to TRUE at window initialization time and let this be - * called by doupdate's return-from-shellout code. + * SCREEN's _endwin at window initialization time and let this be called by + * doupdate's return-from-shellout code. */ NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_ARG); } @@ -481,9 +484,7 @@ NCURSES_SP_NAME(_nc_mvcur_wrap) (NCURSES_SP_DCL0) } if (exit_ca_mode) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "exit_ca_mode", - exit_ca_mode); + NCURSES_PUTP2("exit_ca_mode", exit_ca_mode); } /* * Reset terminal's tab counter. There's a long-time bug that @@ -549,7 +550,7 @@ relative_move(NCURSES_SP_DCLx int from_x, int to_y, int to_x, - bool ovw) + int ovw) /* move via local motions (cuu/cuu1/cud/cud1/cub1/cub/cuf1/cuf/vpa/hpa) */ { string_desc save; @@ -561,7 +562,7 @@ relative_move(NCURSES_SP_DCLx vcost = INFINITY; if (row_address != 0 - && _nc_safe_strcat(target, TPARM_1(row_address, to_y))) { + && _nc_safe_strcat(target, TIPARM_1(row_address, to_y))) { vcost = SP_PARM->_vpa_cost; } @@ -571,12 +572,12 @@ relative_move(NCURSES_SP_DCLx if (parm_down_cursor && SP_PARM->_cud_cost < vcost && _nc_safe_strcat(_nc_str_copy(target, &save), - TPARM_1(parm_down_cursor, n))) { + TIPARM_1(parm_down_cursor, n))) { vcost = SP_PARM->_cud_cost; } if (cursor_down - && (*cursor_down != '\n' || SP_PARM->_nl) + && (*cursor_down != '\n') && (n * SP_PARM->_cud1_cost < vcost)) { vcost = repeated_append(_nc_str_copy(target, &save), 0, SP_PARM->_cud1_cost, n, cursor_down); @@ -587,7 +588,7 @@ relative_move(NCURSES_SP_DCLx if (parm_up_cursor && SP_PARM->_cuu_cost < vcost && _nc_safe_strcat(_nc_str_copy(target, &save), - TPARM_1(parm_up_cursor, n))) { + TIPARM_1(parm_up_cursor, n))) { vcost = SP_PARM->_cuu_cost; } @@ -611,7 +612,7 @@ relative_move(NCURSES_SP_DCLx if (column_address && _nc_safe_strcat(_nc_str_copy(target, &save), - TPARM_1(column_address, to_x))) { + TIPARM_1(column_address, to_x))) { hcost = SP_PARM->_hpa_cost; } @@ -621,7 +622,7 @@ relative_move(NCURSES_SP_DCLx if (parm_right_cursor && SP_PARM->_cuf_cost < hcost && _nc_safe_strcat(_nc_str_copy(target, &save), - TPARM_1(parm_right_cursor, n))) { + TIPARM_1(parm_right_cursor, n))) { hcost = SP_PARM->_cuf_cost; } @@ -714,7 +715,7 @@ relative_move(NCURSES_SP_DCLx if (parm_left_cursor && SP_PARM->_cub_cost < hcost && _nc_safe_strcat(_nc_str_copy(target, &save), - TPARM_1(parm_left_cursor, n))) { + TIPARM_1(parm_left_cursor, n))) { hcost = SP_PARM->_cub_cost; } @@ -759,7 +760,7 @@ relative_move(NCURSES_SP_DCLx #endif /* !NO_OPTIMIZE */ /* - * With the machinery set up above, it's conceivable that + * With the machinery set up above, it is conceivable that * onscreen_mvcur could be modified into a recursive function that does * an alpha-beta search of motion space, as though it were a chess * move tree, with the weight function being boolean and the search @@ -770,7 +771,10 @@ relative_move(NCURSES_SP_DCLx */ static NCURSES_INLINE int -onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, bool ovw) +onscreen_mvcur(NCURSES_SP_DCLx + int yold, int xold, + int ynew, int xnew, int ovw, + NCURSES_SP_OUTC myOutCh) /* onscreen move from (yold, xold) to (ynew, xnew) */ { string_desc result; @@ -788,7 +792,8 @@ onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, bool ovw) #define InitResult _nc_str_init(&result, buffer, sizeof(buffer)) /* tactic #0: use direct cursor addressing */ - if (_nc_safe_strcpy(InitResult, TPARM_2(SP_PARM->_address_cursor, ynew, xnew))) { + if (_nc_safe_strcpy(InitResult, TIPARM_2(SP_PARM->_address_cursor, + ynew, xnew))) { tactic = 0; usecost = SP_PARM->_cup_cost; @@ -933,9 +938,10 @@ onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, bool ovw) #endif /* MAIN */ if (usecost != INFINITY) { + TR(TRACE_MOVE, ("mvcur tactic %d", tactic)); TPUTS_TRACE("mvcur"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - buffer, 1, NCURSES_SP_NAME(_nc_outch)); + buffer, 1, myOutCh); SP_PARM->_cursrow = ynew; SP_PARM->_curscol = xnew; return (OK); @@ -943,14 +949,20 @@ onscreen_mvcur(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew, bool ovw) return (ERR); } -NCURSES_EXPORT(int) -TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew) -/* optimized cursor move from (yold, xold) to (ynew, xnew) */ +/* + * optimized cursor move from (yold, xold) to (ynew, xnew) + */ +static int +_nc_real_mvcur(NCURSES_SP_DCLx + int yold, int xold, + int ynew, int xnew, + NCURSES_SP_OUTC myOutCh, + int ovw) { NCURSES_CH_T oldattr; int code; - TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("_nc_tinfo_mvcur(%p,%d,%d,%d,%d)"), + TR(TRACE_CALLS | TRACE_MOVE, (T_CALLED("_nc_real_mvcur(%p,%d,%d,%d,%d)"), (void *) SP_PARM, yold, xold, ynew, xnew)); if (SP_PARM == 0) { @@ -980,44 +992,33 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew) TR(TRACE_CHARPUT, ("turning off (%#lx) %s before move", (unsigned long) AttrOf(oldattr), _traceattr(AttrOf(oldattr)))); - (void) VIDATTR(SP_PARM, A_NORMAL, 0); + VIDPUTS(SP_PARM, A_NORMAL, 0); } if (xold >= screen_columns(SP_PARM)) { - int l; - - if (SP_PARM->_nl) { - l = (xold + 1) / screen_columns(SP_PARM); - yold += l; - if (yold >= screen_lines(SP_PARM)) - l -= (yold - screen_lines(SP_PARM) - 1); - - if (l > 0) { - if (carriage_return) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "carriage_return", - carriage_return); - } else - NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx '\r'); - xold = 0; - - while (l > 0) { - if (newline) { - NCURSES_SP_NAME(_nc_putp) (NCURSES_SP_ARGx - "newline", - newline); - } else - NCURSES_SP_NAME(_nc_outch) (NCURSES_SP_ARGx '\n'); - l--; + + int l = (xold + 1) / screen_columns(SP_PARM); + + yold += l; + if (yold >= screen_lines(SP_PARM)) + l -= (yold - screen_lines(SP_PARM) - 1); + + if (l > 0) { + if (carriage_return) { + NCURSES_PUTP2("carriage_return", carriage_return); + } else { + myOutCh(NCURSES_SP_ARGx '\r'); + } + xold = 0; + + while (l > 0) { + if (newline) { + NCURSES_PUTP2("newline", newline); + } else { + myOutCh(NCURSES_SP_ARGx '\n'); } + l--; } - } else { - /* - * If caller set nonl(), we cannot really use newlines to - * position to the next row. - */ - xold = -1; - yold = -1; } } @@ -1027,7 +1028,7 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew) ynew = screen_lines(SP_PARM) - 1; /* destination location is on screen now */ - code = onscreen_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew, TRUE); + code = onscreen_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew, ovw, myOutCh); /* * Restore attributes if we disabled them before moving. @@ -1036,19 +1037,86 @@ TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew) TR(TRACE_CHARPUT, ("turning on (%#lx) %s after move", (unsigned long) AttrOf(oldattr), _traceattr(AttrOf(oldattr)))); - (void) VIDATTR(SP_PARM, AttrOf(oldattr), GetPair(oldattr)); + VIDPUTS(SP_PARM, AttrOf(oldattr), GetPair(oldattr)); } } returnCode(code); } -#if NCURSES_SP_FUNCS && !defined(USE_TERM_DRIVER) +/* + * These entrypoints are used within the library. + */ +NCURSES_EXPORT(int) +NCURSES_SP_NAME(_nc_mvcur) (NCURSES_SP_DCLx + int yold, int xold, + int ynew, int xnew) +{ + int rc; + rc = _nc_real_mvcur(NCURSES_SP_ARGx yold, xold, ynew, xnew, + NCURSES_SP_NAME(_nc_outch), + TRUE); + /* + * With the terminal-driver, we cannot distinguish between internal and + * external calls. Flush the output if the screen has not been + * initialized, e.g., when used from low-level terminfo programs. + */ + if ((SP_PARM != 0) && (SP_PARM->_endwin == ewInitial)) + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); + return rc; +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +_nc_mvcur(int yold, int xold, + int ynew, int xnew) +{ + return NCURSES_SP_NAME(_nc_mvcur) (CURRENT_SCREEN, yold, xold, ynew, xnew); +} +#endif + +#if defined(USE_TERM_DRIVER) +/* + * The terminal driver does not support the external "mvcur()". + */ +NCURSES_EXPORT(int) +TINFO_MVCUR(NCURSES_SP_DCLx int yold, int xold, int ynew, int xnew) +{ + int rc; + rc = _nc_real_mvcur(NCURSES_SP_ARGx + yold, xold, + ynew, xnew, + NCURSES_SP_NAME(_nc_outch), + TRUE); + if ((SP_PARM != 0) && (SP_PARM->_endwin == ewInitial)) + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); + NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); + return rc; +} + +#else /* !USE_TERM_DRIVER */ + +/* + * These entrypoints support users of the library. + */ +NCURSES_EXPORT(int) +NCURSES_SP_NAME(mvcur) (NCURSES_SP_DCLx int yold, int xold, int ynew, + int xnew) +{ + return _nc_real_mvcur(NCURSES_SP_ARGx + yold, xold, + ynew, xnew, + NCURSES_SP_NAME(_nc_putchar), + FALSE); +} + +#if NCURSES_SP_FUNCS NCURSES_EXPORT(int) mvcur(int yold, int xold, int ynew, int xnew) { return NCURSES_SP_NAME(mvcur) (CURRENT_SCREEN, yold, xold, ynew, xnew); } #endif +#endif /* USE_TERM_DRIVER */ #if defined(TRACE) || defined(NCURSES_TEST) NCURSES_EXPORT_VAR(int) _nc_optimize_enable = OPTIMIZE_ALL; @@ -1122,13 +1190,12 @@ roll(int n) int main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) { - strcpy(tname, getenv("TERM")); + _nc_STRCPY(tname, getenv("TERM"), sizeof(tname)); load_term(); _nc_setupscreen(lines, columns, stdout, FALSE, 0); baudrate(); _nc_mvcur_init(); - NC_BUFFERED(FALSE); (void) puts("The mvcur tester. Type ? for help"); @@ -1139,27 +1206,26 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) int fy, fx, ty, tx, n, i; char buf[BUFSIZ], capname[BUFSIZ]; - (void) fputs("> ", stdout); - (void) fgets(buf, sizeof(buf), stdin); + if (fputs("> ", stdout) == EOF) + break; + if (fgets(buf, sizeof(buf), stdin) == 0) + break; +#define PUTS(s) (void) puts(s) +#define PUTF(s,t) (void) printf(s,t) if (buf[0] == '?') { - (void) puts("? -- display this help message"); - (void) - puts("fy fx ty tx -- (4 numbers) display (fy,fx)->(ty,tx) move"); - (void) puts("s[croll] n t b m -- display scrolling sequence"); - (void) - printf("r[eload] -- reload terminal info for %s\n", - termname()); - (void) - puts("l[oad] <term> -- load terminal info for type <term>"); - (void) puts("d[elete] <cap> -- delete named capability"); - (void) puts("i[nspect] -- display terminal capabilities"); - (void) - puts("c[ost] -- dump cursor-optimization cost table"); - (void) puts("o[optimize] -- toggle movement optimization"); - (void) - puts("t[orture] <num> -- torture-test with <num> random moves"); - (void) puts("q[uit] -- quit the program"); + PUTS("? -- display this help message"); + PUTS("fy fx ty tx -- (4 numbers) display (fy,fx)->(ty,tx) move"); + PUTS("s[croll] n t b m -- display scrolling sequence"); + PUTF("r[eload] -- reload terminal info for %s\n", + termname()); + PUTS("l[oad] <term> -- load terminal info for type <term>"); + PUTS("d[elete] <cap> -- delete named capability"); + PUTS("i[nspect] -- display terminal capabilities"); + PUTS("c[ost] -- dump cursor-optimization cost table"); + PUTS("o[optimize] -- toggle movement optimization"); + PUTS("t[orture] <num> -- torture-test with <num> random moves"); + PUTS("q[uit] -- quit the program"); } else if (sscanf(buf, "%d %d %d %d", &fy, &fx, &ty, &tx) == 4) { struct timeval before, after; @@ -1187,7 +1253,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) before.tv_sec) * 1000000)); } else if (buf[0] == 'r') { - (void) strcpy(tname, termname()); + _nc_STRCPY(tname, termname(), sizeof(tname)); load_term(); } else if (sscanf(buf, "l %s", tname) == 1) { load_term(); @@ -1220,8 +1286,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) } } } else if (buf[0] == 'i') { - dump_init((char *) NULL, F_TERMINFO, S_TERMINFO, 70, 0, FALSE); - dump_entry(&cur_term->type, FALSE, TRUE, 0, 0); + dump_init(NULL, F_TERMINFO, S_TERMINFO, + FALSE, 70, 0, 0, FALSE, FALSE, 0); + dump_entry(&TerminalType(cur_term), FALSE, TRUE, 0, 0); putchar('\n'); } else if (buf[0] == 'o') { if (_nc_optimize_enable & OPTIMIZE_MVCUR) { diff --git a/deps/ncurses-5.9/ncurses/tty/lib_tstp.c b/deps/ncurses-6.3/ncurses/tty/lib_tstp.c similarity index 87% rename from deps/ncurses-5.9/ncurses/tty/lib_tstp.c rename to deps/ncurses-6.3/ncurses/tty/lib_tstp.c index 70f805a..a20e72a 100644 --- a/deps/ncurses-5.9/ncurses/tty/lib_tstp.c +++ b/deps/ncurses-6.3/ncurses/tty/lib_tstp.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-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 * @@ -42,11 +43,7 @@ #include <SigAction.h> -#if SVR4_ACTION && !defined(_POSIX_SOURCE) -#define _POSIX_SOURCE -#endif - -MODULE_ID("$Id: lib_tstp.c,v 1.41 2010/05/15 21:31:12 tom Exp $") +MODULE_ID("$Id: lib_tstp.c,v 1.51 2021/09/04 10:54:35 tom Exp $") #if defined(SIGTSTP) && (HAVE_SIGACTION || HAVE_SIGVEC) #define USE_SIGTSTP 1 @@ -133,12 +130,12 @@ signal_name(int sig) * (this may include XENIX). * * This implementation will probably be changed to use signal(3) in - * the future. If nothing else, it's simpler... + * the future. If nothing else, it is simpler... */ #if USE_SIGTSTP static void -tstp(int dummy GCC_UNUSED) +handle_SIGTSTP(int dummy GCC_UNUSED) { SCREEN *sp = CURRENT_SCREEN; sigset_t mask, omask; @@ -148,7 +145,8 @@ tstp(int dummy GCC_UNUSED) int sigttou_blocked; #endif - T(("tstp() called")); + _nc_globals.have_sigtstp = 1; + T(("handle_SIGTSTP() called")); /* * The user may have changed the prog_mode tty bits, so save them. @@ -158,8 +156,10 @@ tstp(int dummy GCC_UNUSED) * taken ownership of the tty and modified the settings when our * parent was stopped before us, and we would likely pick up the * settings already modified by the shell. + * + * Don't do this if we're not in curses - */ - if (sp != 0 && !sp->_endwin) /* don't do this if we're not in curses */ + if (sp != 0 && (sp->_endwin == ewRunning)) #if HAVE_TCGETPGRP if (tcgetpgrp(STDIN_FILENO) == getpgrp()) #endif @@ -239,21 +239,24 @@ tstp(int dummy GCC_UNUSED) #endif /* USE_SIGTSTP */ static void -cleanup(int sig) +handle_SIGINT(int sig) { SCREEN *sp = CURRENT_SCREEN; /* - * Actually, doing any sort of I/O from within an signal handler is - * "unsafe". But we'll _try_ to clean up the screen and terminal - * settings on the way out. + * Much of this is unsafe from a signal handler. But we'll _try_ to clean + * up the screen and terminal settings on the way out. + * + * There are at least the following problems: + * 1) Walking the SCREEN list is unsafe, since all list management + * is done without any signal blocking. + * 2) On systems which have REENTRANT turned on, set_term() uses + * _nc_lock_global() which could deadlock or misbehave in other ways. + * 3) endwin() calls all sorts of stuff, many of which use stdio or + * other library functions which are clearly unsafe. */ if (!_nc_globals.cleanup_nested++ - && (sig == SIGINT -#ifdef SIGQUIT - || sig == SIGQUIT -#endif - )) { + && (sig == SIGINT || sig == SIGTERM)) { #if HAVE_SIGACTION || HAVE_SIGVEC sigaction_t act; sigemptyset(&act.sa_mask); @@ -267,23 +270,22 @@ cleanup(int sig) SCREEN *scan; for (each_screen(scan)) { if (scan->_ofp != 0 - && isatty(fileno(scan->_ofp))) { - scan->_cleanup = TRUE; + && NC_ISATTY(fileno(scan->_ofp))) { scan->_outch = NCURSES_SP_NAME(_nc_outch); } set_term(scan); NCURSES_SP_NAME(endwin) (NCURSES_SP_ARG); if (sp) - sp->_endwin = FALSE; /* in case we have an atexit! */ + sp->_endwin = ewInitial; /* in case of reuse */ } } } - exit(EXIT_FAILURE); + _exit(EXIT_FAILURE); } #if USE_SIGWINCH static void -sigwinch(int sig GCC_UNUSED) +handle_SIGWINCH(int sig GCC_UNUSED) { _nc_globals.have_sigwinch = 1; # if USE_PTHREADS_EINTR @@ -301,7 +303,7 @@ sigwinch(int sig GCC_UNUSED) * handler. */ static int -CatchIfDefault(int sig, RETSIGTYPE (*handler) (int)) +CatchIfDefault(int sig, void (*handler) (int)) { int result; #if HAVE_SIGACTION || HAVE_SIGVEC @@ -331,7 +333,7 @@ CatchIfDefault(int sig, RETSIGTYPE (*handler) (int)) result = FALSE; } #else /* !HAVE_SIGACTION */ - RETSIGTYPE (*ohandler) (int); + void (*ohandler) (int); ohandler = signal(sig, SIG_IGN); if (ohandler == SIG_DFL @@ -364,7 +366,7 @@ CatchIfDefault(int sig, RETSIGTYPE (*handler) (int)) * the caller later changes its mind, but that doesn't seem correct. */ NCURSES_EXPORT(void) -_nc_signal_handler(bool enable) +_nc_signal_handler(int enable) { T((T_CALLED("_nc_signal_handler(%d)"), enable)); #if USE_SIGTSTP /* Xenix 2.x doesn't have SIGTSTP, for example */ @@ -385,7 +387,7 @@ _nc_signal_handler(bool enable) #ifdef SA_RESTART new_sigaction.sa_flags |= SA_RESTART; #endif /* SA_RESTART */ - new_sigaction.sa_handler = tstp; + new_sigaction.sa_handler = handle_SIGTSTP; (void) sigaction(SIGTSTP, &new_sigaction, NULL); } else { ignore_tstp = TRUE; @@ -396,10 +398,10 @@ _nc_signal_handler(bool enable) if (!_nc_globals.init_signals) { if (enable) { - CatchIfDefault(SIGINT, cleanup); - CatchIfDefault(SIGTERM, cleanup); + CatchIfDefault(SIGINT, handle_SIGINT); + CatchIfDefault(SIGTERM, handle_SIGINT); #if USE_SIGWINCH - CatchIfDefault(SIGWINCH, sigwinch); + CatchIfDefault(SIGWINCH, handle_SIGWINCH); #endif _nc_globals.init_signals = TRUE; } diff --git a/deps/ncurses-5.9/ncurses/tty/lib_twait.c b/deps/ncurses-6.3/ncurses/tty/lib_twait.c similarity index 89% rename from deps/ncurses-5.9/ncurses/tty/lib_twait.c rename to deps/ncurses-6.3/ncurses/tty/lib_twait.c index 329ec29..a7604b3 100644 --- a/deps/ncurses-5.9/ncurses/tty/lib_twait.c +++ b/deps/ncurses-6.3/ncurses/tty/lib_twait.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 1998-2015,2016 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 * @@ -53,6 +54,11 @@ #include <OS.h> #endif +#if USE_KLIBC_KBD +#define INCL_KBD +#include <os2.h> +#endif + #if USE_FUNC_POLL # if HAVE_SYS_TIME_H # include <sys/time.h> @@ -65,15 +71,15 @@ # include <sys/select.h> # endif #endif -#ifdef __MINGW32__ +#if HAVE_SYS_TIME_H # include <sys/time.h> #endif #undef CUR -MODULE_ID("$Id: lib_twait.c,v 1.61 2010/12/25 23:43:58 tom Exp $") +MODULE_ID("$Id: lib_twait.c,v 1.75 2020/02/29 15:46:00 anonymous.maarten Exp $") static long -_nc_gettime(TimeType * t0, bool first) +_nc_gettime(TimeType * t0, int first) { long res; @@ -97,7 +103,7 @@ _nc_gettime(TimeType * t0, bool first) if (first) { *t0 = t1; } - res = (t1 - *t0) * 1000; + res = (long) ((t1 - *t0) * 1000); #endif TR(TRACE_IEVENT, ("%s time: %ld msec", first ? "get" : "elapsed", res)); return res; @@ -108,15 +114,15 @@ NCURSES_EXPORT(int) _nc_eventlist_timeout(_nc_eventlist * evl) { int event_delay = -1; - int n; if (evl != 0) { + int n; for (n = 0; n < evl->count; ++n) { _nc_event *ev = evl->events[n]; if (ev->type == _NC_EVENT_TIMEOUT_MSEC) { - event_delay = ev->data.timeout_msec; + event_delay = (int) ev->data.timeout_msec; if (event_delay < 0) event_delay = INT_MAX; /* FIXME Is this defined? */ } @@ -184,8 +190,18 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, fd_set set; #endif +#if USE_KLIBC_KBD + fd_set saved_set; + KBDKEYINFO ki; + struct timeval tv; +#endif + long starttime, returntime; +#ifdef NCURSES_WGETCH_EVENTS + (void) timeout_is_event; +#endif + TR(TRACE_IEVENT, ("start twait: %d milliseconds, mode: %d", milliseconds, mode)); @@ -207,6 +223,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, starttime = _nc_gettime(&t0, TRUE); count = 0; + (void) count; #ifdef NCURSES_WGETCH_EVENTS if ((mode & TW_EVENT) && evl) @@ -217,8 +234,12 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, memset(fd_list, 0, sizeof(fd_list)); #ifdef NCURSES_WGETCH_EVENTS - if ((mode & TW_EVENT) && evl) - fds = typeMalloc(struct pollfd, MIN_FDS + evl->count); + if ((mode & TW_EVENT) && evl) { + if (fds == fd_list) + fds = typeMalloc(struct pollfd, MIN_FDS + evl->count); + if (fds == 0) + return TW_NONE; + } #endif if (mode & TW_INPUT) { @@ -247,7 +268,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, } #endif - result = poll(fds, (unsigned) count, milliseconds); + result = poll(fds, (size_t) count, milliseconds); #ifdef NCURSES_WGETCH_EVENTS if ((mode & TW_EVENT) && evl) { @@ -274,10 +295,6 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, } } } - - if (fds != fd_list) - free((char *) fds); - #endif #elif defined(__BEOS__) @@ -329,10 +346,12 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, */ FD_ZERO(&set); +#if !USE_KLIBC_KBD if (mode & TW_INPUT) { FD_SET(sp->_ifd, &set); count = sp->_ifd + 1; } +#endif if ((mode & TW_MOUSE) && (fd = sp->_mouse_fd) >= 0) { FD_SET(fd, &set); @@ -352,6 +371,31 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, } #endif +#if USE_KLIBC_KBD + for (saved_set = set;; set = saved_set) { + if ((mode & TW_INPUT) + && (sp->_extended_key + || (KbdPeek(&ki, 0) == 0 + && (ki.fbStatus & KBDTRF_FINAL_CHAR_IN)))) { + FD_ZERO(&set); + FD_SET(sp->_ifd, &set); + result = 1; + break; + } + + tv.tv_sec = 0; + tv.tv_usec = (milliseconds == 0) ? 0 : (10 * 1000); + + if ((result = select(count, &set, NULL, NULL, &tv)) != 0) + break; + + /* Time out ? */ + if (milliseconds >= 0 && _nc_gettime(&t0, FALSE) >= milliseconds) { + result = 0; + break; + } + } +#else if (milliseconds >= 0) { struct timeval ntimeout; ntimeout.tv_sec = milliseconds / 1000; @@ -360,6 +404,7 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, } else { result = select(count, &set, NULL, NULL, NULL); } +#endif #ifdef NCURSES_WGETCH_EVENTS if ((mode & TW_EVENT) && evl) { @@ -462,5 +507,12 @@ _nc_timed_wait(SCREEN *sp MAYBE_UNUSED, result |= TW_EVENT; #endif +#if USE_FUNC_POLL +#ifdef NCURSES_WGETCH_EVENTS + if (fds != fd_list) + free((char *) fds); +#endif +#endif + return (result); } diff --git a/deps/ncurses-5.9/ncurses/tty/lib_vidattr.c b/deps/ncurses-6.3/ncurses/tty/lib_vidattr.c similarity index 80% rename from deps/ncurses-5.9/ncurses/tty/lib_vidattr.c rename to deps/ncurses-6.3/ncurses/tty/lib_vidattr.c index 9656b3c..15e7397 100644 --- a/deps/ncurses-5.9/ncurses/tty/lib_vidattr.c +++ b/deps/ncurses-6.3/ncurses/tty/lib_vidattr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -69,27 +70,34 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_vidattr.c,v 1.61 2010/06/05 22:22:04 tom Exp $") +MODULE_ID("$Id: lib_vidattr.c,v 1.78 2020/05/27 23:56:32 tom Exp $") #define doPut(mode) \ TPUTS_TRACE(#mode); \ NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc) -#define TurnOn(mask,mode) \ - if ((turn_on & mask) && mode) { doPut(mode); } +#define TurnOn(mask, mode) \ + if ((turn_on & mask) && mode) { \ + TPUTS_TRACE(#mode); \ + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \ + } -#define TurnOff(mask,mode) \ - if ((turn_off & mask) && mode) { doPut(mode); turn_off &= ~mask; } +#define TurnOff(mask, mode) \ + if ((turn_off & mask) && mode) { \ + TPUTS_TRACE(#mode); \ + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \ + turn_off &= ~mask; \ + } /* if there is no current screen, assume we *can* do color */ -#define SetColorsIf(why,old_attr) \ +#define SetColorsIf(why, old_attr) \ if (can_color && (why)) { \ int old_pair = PairNumber(old_attr); \ TR(TRACE_ATTRS, ("old pair = %d -- new pair = %d", old_pair, pair)); \ if ((pair != old_pair) \ || (fix_pair0 && (pair == 0)) \ || (reverse ^ ((old_attr & A_REVERSE) != 0))) { \ - NCURSES_SP_NAME(_nc_do_color)(NCURSES_SP_ARGx \ + NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx \ (short) old_pair, \ (short) pair, \ reverse, outc); \ @@ -117,7 +125,7 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx T((T_CALLED("vidputs(%p,%s)"), (void *) SP_PARM, _traceattr(newmode))); - if (!IsTermInfo(SP_PARM)) + if (!IsValidTIScreen(SP_PARM)) returnCode(ERR); /* this allows us to go on whether or not newterm() has been called */ @@ -139,10 +147,17 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx A_BOLD, A_INVIS, A_PROTECT, +#if USE_ITALIC + A_ITALIC, +#endif }; unsigned n; int used = 0; +#ifdef max_attributes /* not in U/Win */ int limit = (max_attributes <= 0) ? 1 : max_attributes; +#else + int limit = 1; +#endif chtype retain = 0; /* @@ -210,7 +225,7 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx } turn_off = (~newmode & PreviousAttr) & ALL_BUT_COLOR; - turn_on = (newmode & ~PreviousAttr) & ALL_BUT_COLOR; + turn_on = (newmode & ~(PreviousAttr & TPARM_ATTR)) & ALL_BUT_COLOR; SetColorsIf(((pair == 0) && !fix_pair0), PreviousAttr); @@ -229,6 +244,11 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx if (!SP_PARM || SP_PARM->_use_rmso) { TurnOff(A_STANDOUT, exit_standout_mode); } +#if USE_ITALIC + if (!SP_PARM || SP_PARM->_use_ritm) { + TurnOff(A_ITALIC, exit_italics_mode); + } +#endif } PreviousAttr &= ALL_BUT_COLOR; } @@ -238,19 +258,28 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx if (turn_on || turn_off) { TPUTS_TRACE("set_attributes"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - tparm(set_attributes, - (newmode & A_STANDOUT) != 0, - (newmode & A_UNDERLINE) != 0, - (newmode & A_REVERSE) != 0, - (newmode & A_BLINK) != 0, - (newmode & A_DIM) != 0, - (newmode & A_BOLD) != 0, - (newmode & A_INVIS) != 0, - (newmode & A_PROTECT) != 0, - (newmode & A_ALTCHARSET) != 0), + TIPARM_9(set_attributes, + (newmode & A_STANDOUT) != 0, + (newmode & A_UNDERLINE) != 0, + (newmode & A_REVERSE) != 0, + (newmode & A_BLINK) != 0, + (newmode & A_DIM) != 0, + (newmode & A_BOLD) != 0, + (newmode & A_INVIS) != 0, + (newmode & A_PROTECT) != 0, + (newmode & A_ALTCHARSET) != 0), 1, outc); PreviousAttr &= ALL_BUT_COLOR; } +#if USE_ITALIC + if (!SP_PARM || SP_PARM->_use_ritm) { + if (turn_on & A_ITALIC) { + TurnOn(A_ITALIC, enter_italics_mode); + } else if (turn_off & A_ITALIC) { + TurnOff(A_ITALIC, exit_italics_mode); + } + } +#endif SetColorsIf((pair != 0) || fix_pair0, PreviousAttr); } else { @@ -265,7 +294,11 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx if (!SP_PARM || SP_PARM->_use_rmso) { TurnOff(A_STANDOUT, exit_standout_mode); } - +#if USE_ITALIC + if (!SP_PARM || SP_PARM->_use_ritm) { + TurnOff(A_ITALIC, exit_italics_mode); + } +#endif if (turn_off && exit_attribute_mode) { doPut(exit_attribute_mode); turn_on |= (newmode & ALL_BUT_COLOR); @@ -284,7 +317,10 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx TurnOn(A_PROTECT, enter_protected_mode); TurnOn(A_INVIS, enter_secure_mode); TurnOn(A_UNDERLINE, enter_underline_mode); -#if USE_WIDEC_SUPPORT +#if USE_ITALIC + TurnOn(A_ITALIC, enter_italics_mode); +#endif +#if USE_WIDEC_SUPPORT && defined(enter_horizontal_hl_mode) TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode); TurnOn(A_LEFT, enter_left_hl_mode); TurnOn(A_LOW, enter_low_hl_mode); @@ -293,7 +329,6 @@ NCURSES_SP_NAME(vidputs) (NCURSES_SP_DCLx TurnOn(A_VERTICAL, enter_vertical_hl_mode); #endif /* *INDENT-ON* */ - } if (reverse) @@ -324,7 +359,7 @@ NCURSES_SP_NAME(vidattr) (NCURSES_SP_DCLx chtype newmode) T((T_CALLED("vidattr(%p,%s)"), (void *) SP_PARM, _traceattr(newmode))); returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx newmode, - NCURSES_SP_NAME(_nc_outch))); + NCURSES_SP_NAME(_nc_putchar))); } #if NCURSES_SP_FUNCS @@ -341,42 +376,49 @@ NCURSES_SP_NAME(termattrs) (NCURSES_SP_DCL0) chtype attrs = A_NORMAL; T((T_CALLED("termattrs(%p)"), (void *) SP_PARM)); + + if (HasTerminal(SP_PARM)) { #ifdef USE_TERM_DRIVER - if (HasTerminal(SP_PARM)) - attrs = CallDriver(SP_PARM, conattr); -#else + attrs = CallDriver(SP_PARM, td_conattr); +#else /* ! USE_TERM_DRIVER */ - if (enter_alt_charset_mode) - attrs |= A_ALTCHARSET; + if (enter_alt_charset_mode) + attrs |= A_ALTCHARSET; - if (enter_blink_mode) - attrs |= A_BLINK; + if (enter_blink_mode) + attrs |= A_BLINK; - if (enter_bold_mode) - attrs |= A_BOLD; + if (enter_bold_mode) + attrs |= A_BOLD; - if (enter_dim_mode) - attrs |= A_DIM; + if (enter_dim_mode) + attrs |= A_DIM; - if (enter_reverse_mode) - attrs |= A_REVERSE; + if (enter_reverse_mode) + attrs |= A_REVERSE; - if (enter_standout_mode) - attrs |= A_STANDOUT; + if (enter_standout_mode) + attrs |= A_STANDOUT; - if (enter_protected_mode) - attrs |= A_PROTECT; + if (enter_protected_mode) + attrs |= A_PROTECT; - if (enter_secure_mode) - attrs |= A_INVIS; + if (enter_secure_mode) + attrs |= A_INVIS; - if (enter_underline_mode) - attrs |= A_UNDERLINE; + if (enter_underline_mode) + attrs |= A_UNDERLINE; - if (SP_PARM->_coloron) - attrs |= A_COLOR; + if (SP_PARM->_coloron) + attrs |= A_COLOR; +#if USE_ITALIC + if (enter_italics_mode) + attrs |= A_ITALIC; #endif + +#endif /* USE_TERM_DRIVER */ + } returnChtype(attrs); } diff --git a/deps/ncurses-5.9/ncurses/tty/tty_update.c b/deps/ncurses-6.3/ncurses/tty/tty_update.c similarity index 85% rename from deps/ncurses-5.9/ncurses/tty/tty_update.c rename to deps/ncurses-6.3/ncurses/tty/tty_update.c index f0d2369..bdd673b 100644 --- a/deps/ncurses-5.9/ncurses/tty/tty_update.c +++ b/deps/ncurses-6.3/ncurses/tty/tty_update.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -43,6 +44,8 @@ * *-----------------------------------------------------------------*/ +#define NEW_PAIR_INTERNAL 1 + #include <curses.priv.h> #ifndef CUR @@ -82,7 +85,7 @@ #include <ctype.h> -MODULE_ID("$Id: tty_update.c,v 1.264 2010/12/19 01:21:02 tom Exp $") +MODULE_ID("$Id: tty_update.c,v 1.312 2021/09/04 10:29:59 tom Exp $") /* * This define controls the line-breakout optimization. Every once in a @@ -114,14 +117,14 @@ static int ClrBottom(SCREEN *, int total); static void ClearScreen(SCREEN *, NCURSES_CH_T blank); static void ClrUpdate(SCREEN *); static void DelChar(SCREEN *, int count); -static void InsStr(SCREEN *, NCURSES_CH_T * line, int count); +static void InsStr(SCREEN *, NCURSES_CH_T *line, int count); static void TransformLine(SCREEN *, int const lineno); #else static int ClrBottom(int total); static void ClearScreen(NCURSES_CH_T blank); static void ClrUpdate(void); static void DelChar(int count); -static void InsStr(NCURSES_CH_T * line, int count); +static void InsStr(NCURSES_CH_T *line, int count); static void TransformLine(int const lineno); #endif @@ -133,7 +136,7 @@ static void TransformLine(int const lineno); ****************************************************************************/ static void -position_check(NCURSES_SP_DCLx int expected_y, int expected_x, char *legend) +position_check(NCURSES_SP_DCLx int expected_y, int expected_x, const char *legend) /* check to see if the real cursor position matches the virtual */ { char buf[20]; @@ -145,8 +148,7 @@ position_check(NCURSES_SP_DCLx int expected_y, int expected_x, char *legend) NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); memset(buf, '\0', sizeof(buf)); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx "\033[6n"); /* only works on ANSI-compatibles */ - NCURSES_SP_NAME(_nc_flush) (NCURSES_SP_ARG); + NCURSES_PUTP2_FLUSH("cpr", "\033[6n"); /* only works on ANSI-compatibles */ *(s = buf) = 0; do { int ask = sizeof(buf) - 1 - (s - buf); @@ -168,9 +170,9 @@ position_check(NCURSES_SP_DCLx int expected_y, int expected_x, char *legend) if (y - 1 != expected_y || x - 1 != expected_x) { NCURSES_SP_NAME(beep) (NCURSES_SP_ARG); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - tparm("\033[%d;%dH", - expected_y + 1, - expected_x + 1), + TIPARM_2("\033[%d;%dH", + expected_y + 1, + expected_x + 1), 1, NCURSES_SP_NAME(_nc_outch)); _tracef("position seen (%d, %d) doesn't match expected one (%d, %d) in %s", y - 1, x - 1, expected_y, expected_x, legend); @@ -180,7 +182,7 @@ position_check(NCURSES_SP_DCLx int expected_y, int expected_x, char *legend) } } #else -#define position_check(sp, expected_y, expected_x, legend) /* nothing */ +#define position_check(expected_y, expected_x, legend) /* nothing */ #endif /* POSITION_DEBUG */ /**************************************************************************** @@ -195,21 +197,31 @@ GoTo(NCURSES_SP_DCLx int const row, int const col) TR(TRACE_MOVE, ("GoTo(%p, %d, %d) from (%d, %d)", (void *) SP_PARM, row, col, SP_PARM->_cursrow, SP_PARM->_curscol)); - position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "GoTo"); + position_check(NCURSES_SP_ARGx + SP_PARM->_cursrow, + SP_PARM->_curscol, "GoTo"); TINFO_MVCUR(NCURSES_SP_ARGx SP_PARM->_cursrow, SP_PARM->_curscol, row, col); - position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "GoTo2"); + position_check(NCURSES_SP_ARGx + SP_PARM->_cursrow, + SP_PARM->_curscol, "GoTo2"); } +#if !NCURSES_WCWIDTH_GRAPHICS +#define is_wacs_value(ch) (_nc_wacs_width(ch) == 1 && wcwidth(ch) > 1) +#endif /* !NCURSES_WCWIDTH_GRAPHICS */ + static NCURSES_INLINE void PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) { int chlen = 1; NCURSES_CH_T my_ch; +#if USE_WIDEC_SUPPORT PUTC_DATA; +#endif NCURSES_CH_T tilde; NCURSES_CH_T attr = CHDEREF(ch); @@ -228,7 +240,7 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) * Determine the number of character cells which the 'ch' value will use * on the screen. It should be at least one. */ - if ((chlen = wcwidth(CharOf(CHDEREF(ch)))) <= 0) { + if ((chlen = _nc_wacs_width(CharOf(CHDEREF(ch)))) <= 0) { static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); /* @@ -263,8 +275,14 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) if ((AttrOf(attr) & A_ALTCHARSET) && SP_PARM->_acs_map != 0 - && CharOfD(ch) < ACS_LEN) { + && ((CharOfD(ch) < ACS_LEN) +#if !NCURSES_WCWIDTH_GRAPHICS + || is_wacs_value(CharOfD(ch)) +#endif + )) { + int c8; my_ch = CHDEREF(ch); /* work around const param */ + c8 = CharOf(my_ch); #if USE_WIDEC_SUPPORT /* * This is crude & ugly, but works most of the time. It checks if the @@ -272,12 +290,39 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) * character, and uses the wide-character mapping when we expect the * normal one to be broken (by mis-design ;-). */ - if (SP_PARM->_screen_acs_fix - && SP_PARM->_screen_acs_map[CharOf(my_ch)]) { - RemAttr(attr, A_ALTCHARSET); - my_ch = _nc_wacs[CharOf(my_ch)]; - } + if (SP_PARM->_screen_unicode + && _nc_wacs[CharOf(my_ch)].chars[0]) { + if (SP_PARM->_screen_acs_map[CharOf(my_ch)]) { + if (SP_PARM->_screen_acs_fix) { + RemAttr(attr, A_ALTCHARSET); + my_ch = _nc_wacs[CharOf(my_ch)]; + } + } else { + RemAttr(attr, A_ALTCHARSET); + my_ch = _nc_wacs[CharOf(my_ch)]; + } +#if !NCURSES_WCWIDTH_GRAPHICS + if (!(AttrOf(attr) & A_ALTCHARSET)) { + chlen = 1; + } +#endif /* !NCURSES_WCWIDTH_GRAPHICS */ + } else #endif + if (!SP_PARM->_screen_acs_map[c8]) { + /* + * If we found no mapping for a given alternate-character set item + * in the terminal description, attempt to use the ASCII fallback + * code which is populated in the _acs_map[] array. If that did + * not correspond to a line-drawing, etc., graphics character, the + * array entry would be empty. + */ + chtype temp = UChar(SP_PARM->_acs_map[c8]); + if (temp) { + RemAttr(attr, A_ALTCHARSET); + SetChar(my_ch, temp, AttrOf(attr)); + } + } + /* * If we (still) have alternate character set, it is the normal 8bit * flavor. The _screen_acs_map[] array tells if the character was @@ -288,38 +333,33 @@ PutAttrChar(NCURSES_SP_DCLx CARG_CH_T ch) int j = CharOfD(ch); chtype temp = UChar(SP_PARM->_acs_map[j]); - if (!(SP_PARM->_screen_acs_map[j])) { + if (temp != 0) { + SetChar(my_ch, temp, AttrOf(attr)); + } else { + my_ch = CHDEREF(ch); RemAttr(attr, A_ALTCHARSET); - if (temp == 0) - temp = ' '; } - if (temp != 0) - SetChar(my_ch, temp, AttrOf(attr)); } ch = CHREF(my_ch); } +#if USE_WIDEC_SUPPORT && !NCURSES_WCWIDTH_GRAPHICS + else if (chlen > 1 && is_wacs_value(CharOfD(ch))) { + chlen = 1; + } +#endif if (tilde_glitch && (CharOfD(ch) == L('~'))) { SetChar(tilde, L('`'), AttrOf(attr)); ch = CHREF(tilde); } UpdateAttrs(SP_PARM, attr); + PUTC(CHDEREF(ch)); #if !USE_WIDEC_SUPPORT - /* FIXME - we do this special case for signal handling, should see how to - * make it work for wide characters. - */ - if (SP_PARM->_outch != 0) { - SP_PARM->_outch(NCURSES_SP_ARGx UChar(ch)); - } else + COUNT_OUTCHARS(1); #endif - { - PUTC(CHDEREF(ch), SP_PARM->_ofp); /* macro's fastest... */ - COUNT_OUTCHARS(1); - } SP_PARM->_curscol += chlen; if (char_padding) { - TPUTS_TRACE("char_padding"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx char_padding); + NCURSES_PUTP2("char_padding", char_padding); } } @@ -342,7 +382,7 @@ check_pending(NCURSES_SP_DCL0) struct pollfd fds[1]; fds[0].fd = SP_PARM->_checkfd; fds[0].events = POLLIN; - if (poll(fds, 1, 0) > 0) { + if (poll(fds, (size_t) 1, 0) > 0) { have_pending = TRUE; } #elif defined(__BEOS__) @@ -389,19 +429,18 @@ PutCharLR(NCURSES_SP_DCLx const ARG_CH_T ch) /* we can put the char directly */ PutAttrChar(NCURSES_SP_ARGx ch); } else if (enter_am_mode && exit_am_mode) { + int oldcol = SP_PARM->_curscol; /* we can suppress automargin */ - TPUTS_TRACE("exit_am_mode"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_am_mode); + NCURSES_PUTP2("exit_am_mode", exit_am_mode); PutAttrChar(NCURSES_SP_ARGx ch); - SP_PARM->_curscol--; - position_check(SP_PARM, + SP_PARM->_curscol = oldcol; + position_check(NCURSES_SP_ARGx SP_PARM->_cursrow, SP_PARM->_curscol, "exit_am_mode"); - TPUTS_TRACE("enter_am_mode"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx enter_am_mode); + NCURSES_PUTP2("enter_am_mode", enter_am_mode); } else if ((enter_insert_mode && exit_insert_mode) || insert_character || parm_ich) { GoTo(NCURSES_SP_ARGx @@ -434,7 +473,7 @@ wrap_cursor(NCURSES_SP_DCL0) * An aggressive way to handle this would be to emit CR/LF after the * char and then assume the wrap is done, you're on the first position * of the next line, and the terminal out of its weird state. Here - * it's safe to just tell the code that the cursor is in hyperspace and + * it is safe to just tell the code that the cursor is in hyperspace and * let the next mvcur() call straighten things out. */ SP_PARM->_curscol = -1; @@ -450,12 +489,12 @@ wrap_cursor(NCURSES_SP_DCL0) TR(TRACE_CHARPUT, ("turning off (%#lx) %s before wrapping", (unsigned long) AttrOf(SCREEN_ATTRS(SP_PARM)), _traceattr(AttrOf(SCREEN_ATTRS(SP_PARM))))); - (void) VIDATTR(SP_PARM, A_NORMAL, 0); + VIDPUTS(SP_PARM, A_NORMAL, 0); } } else { SP_PARM->_curscol--; } - position_check(SP_PARM, + position_check(NCURSES_SP_ARGx SP_PARM->_cursrow, SP_PARM->_curscol, "wrap_cursor"); @@ -475,7 +514,9 @@ PutChar(NCURSES_SP_DCLx const ARG_CH_T ch) if (SP_PARM->_curscol >= screen_columns(SP_PARM)) wrap_cursor(NCURSES_SP_ARG); - position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "PutChar"); + position_check(NCURSES_SP_ARGx + SP_PARM->_cursrow, + SP_PARM->_curscol, "PutChar"); } /* @@ -493,15 +534,17 @@ can_clear_with(NCURSES_SP_DCLx ARG_CH_T ch) if (!SP_PARM->_default_color) return FALSE; - if (SP_PARM->_default_fg != C_MASK || SP_PARM->_default_bg != C_MASK) + if (!(isDefaultColor(SP_PARM->_default_fg) && + isDefaultColor(SP_PARM->_default_bg))) return FALSE; if ((pair = GetPair(CHDEREF(ch))) != 0) { - short fg, bg; - NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx - (short) pair, - &fg, &bg); - if (fg != C_MASK || bg != C_MASK) + NCURSES_COLOR_T fg, bg; + if (NCURSES_SP_NAME(pair_content) (NCURSES_SP_ARGx + (short) pair, + &fg, &bg) == ERR + || !(isDefaultColor(fg) && isDefaultColor(bg))) { return FALSE; + } } #else if (AttrOfD(ch) & A_COLOR) @@ -525,7 +568,7 @@ can_clear_with(NCURSES_SP_DCLx ARG_CH_T ch) * This code is optimized using ech and rep. */ static int -EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num) +EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T *ntext, int num) { int i; @@ -563,8 +606,7 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num) && runcount > SP_PARM->_ech_cost + SP_PARM->_cup_ch_cost && can_clear_with(NCURSES_SP_ARGx CHREF(ntext0))) { UpdateAttrs(SP_PARM, ntext0); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx - TPARM_1(erase_chars, runcount)); + NCURSES_PUTP2("erase_chars", TIPARM_1(erase_chars, runcount)); /* * If this is the last part of the given interval, @@ -578,7 +620,18 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num) } else { return 1; /* cursor stays in the middle */ } - } else if (repeat_char && runcount > SP_PARM->_rep_cost) { + } else if (repeat_char != 0 && +#if BSD_TPUTS + !isdigit(UChar(CharOf(ntext0))) && +#endif +#if USE_WIDEC_SUPPORT + (!SP_PARM->_screen_unicode && + (CharOf(ntext0) < ((AttrOf(ntext0) & A_ALTCHARSET) + ? ACS_LEN + : 256))) && +#endif + runcount > SP_PARM->_rep_cost) { + NCURSES_CH_T temp; bool wrap_possible = (SP_PARM->_curscol + runcount >= screen_columns(SP_PARM)); int rep_count = runcount; @@ -587,11 +640,19 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num) rep_count--; UpdateAttrs(SP_PARM, ntext0); + temp = ntext0; + if ((AttrOf(temp) & A_ALTCHARSET) && + SP_PARM->_acs_map != 0 && + (SP_PARM->_acs_map[CharOf(temp)] & A_CHARTEXT) != 0) { + SetChar(temp, + (SP_PARM->_acs_map[CharOf(ntext0)] & A_CHARTEXT), + AttrOf(ntext0) | A_ALTCHARSET); + } NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_2(repeat_char, - CharOf(ntext0), - rep_count), - rep_count, + TIPARM_2(repeat_char, + CharOf(temp), + rep_count), + 1, NCURSES_SP_NAME(_nc_outch)); SP_PARM->_curscol += rep_count; @@ -622,12 +683,12 @@ EmitRange(NCURSES_SP_DCLx const NCURSES_CH_T * ntext, int num) */ static int PutRange(NCURSES_SP_DCLx - const NCURSES_CH_T * otext, - const NCURSES_CH_T * ntext, + const NCURSES_CH_T *otext, + const NCURSES_CH_T *ntext, int row, int first, int last) { - int i, j, same; + int rc; TR(TRACE_CHARPUT, ("PutRange(%p, %p, %p, %d, %d, %d)", (void *) SP_PARM, @@ -637,6 +698,8 @@ PutRange(NCURSES_SP_DCLx if (otext != ntext && (last - first + 1) > SP_PARM->_inline_cost) { + int i, j, same; + for (j = first, same = 0; j <= last; j++) { if (!same && isWidecExt(otext[j])) continue; @@ -655,9 +718,11 @@ PutRange(NCURSES_SP_DCLx * Always return 1 for the next GoTo() after a PutRange() if we found * identical characters at end of interval */ - return (same == 0 ? i : 1); + rc = (same == 0 ? i : 1); + } else { + rc = EmitRange(NCURSES_SP_ARGx ntext + first, last - first + 1); } - return EmitRange(NCURSES_SP_ARGx ntext + first, last - first + 1); + return rc; } /* leave unbracketed here so 'indent' works */ @@ -677,6 +742,12 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) T((T_CALLED("_nc_tinfo:doupdate(%p)"), (void *) SP_PARM)); + _nc_lock_global(update); + + if (SP_PARM == 0) { + _nc_unlock_global(update); + returnCode(ERR); + } #if !USE_REENTRANT /* * It is "legal" but unlikely that an application could assign a new @@ -697,9 +768,10 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) if (CurScreen(SP_PARM) == 0 || NewScreen(SP_PARM) == 0 - || StdScreen(SP_PARM) == 0) + || StdScreen(SP_PARM) == 0) { + _nc_unlock_global(update); returnCode(ERR); - + } #ifdef TRACE if (USE_TRACEF(TRACE_UPDATE)) { if (CurScreen(SP_PARM)->_clear) @@ -717,7 +789,8 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) SP_PARM->_fifohold--; #if USE_SIZECHANGE - if (SP_PARM->_endwin || _nc_handle_sigwinch(SP_PARM)) { + if ((SP_PARM->_endwin == ewSuspend) + || _nc_handle_sigwinch(SP_PARM)) { /* * This is a transparent extension: XSI does not address it, * and applications need not know that ncurses can do it. @@ -730,7 +803,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) } #endif - if (SP_PARM->_endwin) { + if (SP_PARM->_endwin == ewSuspend) { T(("coming back from shell mode")); NCURSES_SP_NAME(reset_prog_mode) (NCURSES_SP_ARG); @@ -739,7 +812,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_ARG); SP_PARM->_mouse_resume(SP_PARM); - SP_PARM->_endwin = FALSE; + SP_PARM->_endwin = ewRunning; } #if USE_TRACE_TIMES /* zero the metering machinery */ @@ -750,7 +823,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) /* * This is the support for magic-cookie terminals. The theory: we scan * the virtual screen looking for attribute turnons. Where we find one, - * check to make sure it's realizable by seeing if the required number of + * check to make sure it is realizable by seeing if the required number of * un-attributed blanks are present before and after the attributed range; * try to shift the range boundaries over blanks (not changing the screen * display) so this becomes true. If it is, shift the beginning attribute @@ -812,7 +885,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) bool end_onscreen = FALSE; int m, n = j; - /* find end of span, if it's onscreen */ + /* find end of span, if it is onscreen */ for (m = i; m < screen_lines(SP_PARM); m++) { for (; n < screen_columns(SP_PARM); n++) { attr_t testattr = @@ -1007,6 +1080,7 @@ TINFO_DOUPDATE(NCURSES_SP_DCL0) _nc_signal_handler(TRUE); + _nc_unlock_global(update); returnCode(OK); } @@ -1076,32 +1150,29 @@ ClrUpdate(NCURSES_SP_DCL0) */ static void -ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, bool needclear) +ClrToEOL(NCURSES_SP_DCLx NCURSES_CH_T blank, int needclear) { - int j; + if (CurScreen(SP_PARM) != 0 + && SP_PARM->_cursrow >= 0) { + int j; - if (SP_PARM != 0) { - if (CurScreen(SP_PARM) != 0 - && SP_PARM->_cursrow >= 0) { - for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) { - if (j >= 0) { - NCURSES_CH_T *cp = - &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]); - - if (!CharEq(*cp, blank)) { - *cp = blank; - needclear = TRUE; - } + for (j = SP_PARM->_curscol; j < screen_columns(SP_PARM); j++) { + if (j >= 0) { + NCURSES_CH_T *cp = + &(CurScreen(SP_PARM)->_line[SP_PARM->_cursrow].text[j]); + + if (!CharEq(*cp, blank)) { + *cp = blank; + needclear = TRUE; } } } } - if (needclear && (SP_PARM != 0)) { + if (needclear) { UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("clr_eol"); if (clr_eol && SP_PARM->_el_cost <= (screen_columns(SP_PARM) - SP_PARM->_curscol)) { - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol); + NCURSES_PUTP2("clr_eol", clr_eol); } else { int count = (screen_columns(SP_PARM) - SP_PARM->_curscol); while (count-- > 0) @@ -1121,12 +1192,14 @@ ClrToEOS(NCURSES_SP_DCLx NCURSES_CH_T blank) { int row, col; - if (0 == SP_PARM) - return; - row = SP_PARM->_cursrow; col = SP_PARM->_curscol; + if (row < 0) + row = 0; + if (col < 0) + col = 0; + UpdateAttrs(SP_PARM, blank); TPUTS_TRACE("clr_eos"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx @@ -1153,16 +1226,17 @@ ClrToEOS(NCURSES_SP_DCLx NCURSES_CH_T blank) static int ClrBottom(NCURSES_SP_DCLx int total) { - int row; - int col; int top = total; int last = min(screen_columns(SP_PARM), NewScreen(SP_PARM)->_maxx + 1); NCURSES_CH_T blank = NewScreen(SP_PARM)->_line[total - 1].text[last - 1]; - bool ok; if (clr_eos && can_clear_with(NCURSES_SP_ARGx CHREF(blank))) { + int row; for (row = total - 1; row >= 0; row--) { + int col; + bool ok; + for (col = 0, ok = TRUE; ok && col < last; col++) { ok = (CharEq(NewScreen(SP_PARM)->_line[row].text[col], blank)); } @@ -1251,10 +1325,10 @@ TransformLine(NCURSES_SP_DCLx int const lineno) newPair = GetPair(newLine[n]); if (oldPair != newPair && unColor(oldLine[n]) == unColor(newLine[n])) { - if (oldPair < SP_PARM->_pair_limit - && newPair < SP_PARM->_pair_limit - && (SP_PARM->_color_pairs[oldPair] == - SP_PARM->_color_pairs[newPair])) { + if (oldPair < SP_PARM->_pair_alloc + && newPair < SP_PARM->_pair_alloc + && (isSamePair(SP_PARM->_color_pairs[oldPair], + SP_PARM->_color_pairs[newPair]))) { SetPair(oldLine[n], GetPair(newLine[n])); } } @@ -1370,13 +1444,11 @@ TransformLine(NCURSES_SP_DCLx int const lineno) && SP_PARM->_el_cost <= SP_PARM->_el1_cost) { GoTo(NCURSES_SP_ARGx lineno, 0); UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("clr_eol"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol); + NCURSES_PUTP2("clr_eol", clr_eol); } else { GoTo(NCURSES_SP_ARGx lineno, nFirstChar - 1); UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("clr_bol"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_bol); + NCURSES_PUTP2("clr_bol", clr_bol); } while (firstChar < nFirstChar) @@ -1492,9 +1564,17 @@ TransformLine(NCURSES_SP_DCLx int const lineno) if (oLastChar < nLastChar) { int m = max(nLastNonblank, oLastNonblank); #if USE_WIDEC_SUPPORT - while (isWidecExt(newLine[n + 1]) && n) { - --n; - --oLastChar; + if (n) { + while (isWidecExt(newLine[n + 1]) && n) { + --n; + --oLastChar; /* increase cost */ + } + } else if (n >= firstChar && + isWidecBase(newLine[n])) { + while (isWidecExt(newLine[n + 1])) { + ++n; + ++oLastChar; /* decrease cost */ + } } #endif GoTo(NCURSES_SP_ARGx lineno, n + 1); @@ -1514,8 +1594,9 @@ TransformLine(NCURSES_SP_DCLx int const lineno) if (DelCharCost(SP_PARM, oLastChar - nLastChar) > SP_PARM->_el_cost + nLastNonblank - (n + 1)) { if (PutRange(NCURSES_SP_ARGx oldLine, newLine, lineno, - n + 1, nLastNonblank)) - GoTo(NCURSES_SP_ARGx lineno, nLastNonblank + 1); + n + 1, nLastNonblank)) { + GoTo(NCURSES_SP_ARGx lineno, nLastNonblank + 1); + } ClrToEOL(NCURSES_SP_ARGx blank, FALSE); } else { /* @@ -1574,10 +1655,9 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank) if (fast_clear) { if (clear_screen) { UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("clear_screen"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clear_screen); + NCURSES_PUTP2("clear_screen", clear_screen); SP_PARM->_cursrow = SP_PARM->_curscol = 0; - position_check(SP_PARM, + position_check(NCURSES_SP_ARGx SP_PARM->_cursrow, SP_PARM->_curscol, "ClearScreen"); @@ -1595,8 +1675,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank) UpdateAttrs(SP_PARM, blank); for (i = 0; i < screen_lines(SP_PARM); i++) { GoTo(NCURSES_SP_ARGx i, 0); - TPUTS_TRACE("clr_eol"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx clr_eol); + NCURSES_PUTP2("clr_eol", clr_eol); } GoTo(NCURSES_SP_ARGx 0, 0); } @@ -1626,7 +1705,7 @@ ClearScreen(NCURSES_SP_DCLx NCURSES_CH_T blank) */ static void -InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count) +InsStr(NCURSES_SP_DCLx NCURSES_CH_T *line, int count) { TR(TRACE_UPDATE, ("InsStr(%p, %p,%d) called", (void *) SP_PARM, @@ -1638,42 +1717,39 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count) if (parm_ich) { TPUTS_TRACE("parm_ich"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(parm_ich, count), - count, + TIPARM_1(parm_ich, count), + 1, NCURSES_SP_NAME(_nc_outch)); - while (count) { + while (count > 0) { PutAttrChar(NCURSES_SP_ARGx CHREF(*line)); line++; count--; } } else if (enter_insert_mode && exit_insert_mode) { - TPUTS_TRACE("enter_insert_mode"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx enter_insert_mode); - while (count) { + NCURSES_PUTP2("enter_insert_mode", enter_insert_mode); + while (count > 0) { PutAttrChar(NCURSES_SP_ARGx CHREF(*line)); if (insert_padding) { - TPUTS_TRACE("insert_padding"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_padding); + NCURSES_PUTP2("insert_padding", insert_padding); } line++; count--; } - TPUTS_TRACE("exit_insert_mode"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_insert_mode); + NCURSES_PUTP2("exit_insert_mode", exit_insert_mode); } else { - while (count) { - TPUTS_TRACE("insert_character"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_character); + while (count > 0) { + NCURSES_PUTP2("insert_character", insert_character); PutAttrChar(NCURSES_SP_ARGx CHREF(*line)); if (insert_padding) { - TPUTS_TRACE("insert_padding"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_padding); + NCURSES_PUTP2("insert_padding", insert_padding); } line++; count--; } } - position_check(SP_PARM, SP_PARM->_cursrow, SP_PARM->_curscol, "InsStr"); + position_check(NCURSES_SP_ARGx + SP_PARM->_cursrow, + SP_PARM->_curscol, "InsStr"); } /* @@ -1686,8 +1762,6 @@ InsStr(NCURSES_SP_DCLx NCURSES_CH_T * line, int count) static void DelChar(NCURSES_SP_DCLx int count) { - int n; - TR(TRACE_UPDATE, ("DelChar(%p, %d) called, position = (%ld,%ld)", (void *) SP_PARM, count, (long) NewScreen(SP_PARM)->_cury, @@ -1696,13 +1770,14 @@ DelChar(NCURSES_SP_DCLx int count) if (parm_dch) { TPUTS_TRACE("parm_dch"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_1(parm_dch, count), - count, + TIPARM_1(parm_dch, count), + 1, NCURSES_SP_NAME(_nc_outch)); } else { + int n; + for (n = 0; n < count; n++) { - TPUTS_TRACE("delete_character"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_character); + NCURSES_PUTP2("delete_character", delete_character); } } } @@ -1754,19 +1829,17 @@ scroll_csr_forward(NCURSES_SP_DCLx if (n == 1 && scroll_forward && top == miny && bot == maxy) { GoTo(NCURSES_SP_ARGx bot, 0); UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("scroll_forward"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_forward); + NCURSES_PUTP2("scroll_forward", scroll_forward); } else if (n == 1 && delete_line && bot == maxy) { GoTo(NCURSES_SP_ARGx top, 0); UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("delete_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line); + NCURSES_PUTP2("delete_line", delete_line); } else if (parm_index && top == miny && bot == maxy) { GoTo(NCURSES_SP_ARGx bot, 0); UpdateAttrs(SP_PARM, blank); TPUTS_TRACE("parm_index"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_2(parm_index, n, 0), + TIPARM_1(parm_index, n), n, NCURSES_SP_NAME(_nc_outch)); } else if (parm_delete_line && bot == maxy) { @@ -1774,22 +1847,20 @@ scroll_csr_forward(NCURSES_SP_DCLx UpdateAttrs(SP_PARM, blank); TPUTS_TRACE("parm_delete_line"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_2(parm_delete_line, n, 0), + TIPARM_1(parm_delete_line, n), n, NCURSES_SP_NAME(_nc_outch)); } else if (scroll_forward && top == miny && bot == maxy) { GoTo(NCURSES_SP_ARGx bot, 0); UpdateAttrs(SP_PARM, blank); for (i = 0; i < n; i++) { - TPUTS_TRACE("scroll_forward"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_forward); + NCURSES_PUTP2("scroll_forward", scroll_forward); } } else if (delete_line && bot == maxy) { GoTo(NCURSES_SP_ARGx top, 0); UpdateAttrs(SP_PARM, blank); for (i = 0; i < n; i++) { - TPUTS_TRACE("delete_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line); + NCURSES_PUTP2("delete_line", delete_line); } } else return ERR; @@ -1823,19 +1894,17 @@ scroll_csr_backward(NCURSES_SP_DCLx if (n == 1 && scroll_reverse && top == miny && bot == maxy) { GoTo(NCURSES_SP_ARGx top, 0); UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("scroll_reverse"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_reverse); + NCURSES_PUTP2("scroll_reverse", scroll_reverse); } else if (n == 1 && insert_line && bot == maxy) { GoTo(NCURSES_SP_ARGx top, 0); UpdateAttrs(SP_PARM, blank); - TPUTS_TRACE("insert_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line); + NCURSES_PUTP2("insert_line", insert_line); } else if (parm_rindex && top == miny && bot == maxy) { GoTo(NCURSES_SP_ARGx top, 0); UpdateAttrs(SP_PARM, blank); TPUTS_TRACE("parm_rindex"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_2(parm_rindex, n, 0), + TIPARM_1(parm_rindex, n), n, NCURSES_SP_NAME(_nc_outch)); } else if (parm_insert_line && bot == maxy) { @@ -1843,22 +1912,20 @@ scroll_csr_backward(NCURSES_SP_DCLx UpdateAttrs(SP_PARM, blank); TPUTS_TRACE("parm_insert_line"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_2(parm_insert_line, n, 0), + TIPARM_1(parm_insert_line, n), n, NCURSES_SP_NAME(_nc_outch)); } else if (scroll_reverse && top == miny && bot == maxy) { GoTo(NCURSES_SP_ARGx top, 0); UpdateAttrs(SP_PARM, blank); for (i = 0; i < n; i++) { - TPUTS_TRACE("scroll_reverse"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx scroll_reverse); + NCURSES_PUTP2("scroll_reverse", scroll_reverse); } } else if (insert_line && bot == maxy) { GoTo(NCURSES_SP_ARGx top, 0); UpdateAttrs(SP_PARM, blank); for (i = 0; i < n; i++) { - TPUTS_TRACE("insert_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line); + NCURSES_PUTP2("insert_line", insert_line); } } else return ERR; @@ -1889,36 +1956,32 @@ scroll_idl(NCURSES_SP_DCLx int n, int del, int ins, NCURSES_CH_T blank) GoTo(NCURSES_SP_ARGx del, 0); UpdateAttrs(SP_PARM, blank); if (n == 1 && delete_line) { - TPUTS_TRACE("delete_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line); + NCURSES_PUTP2("delete_line", delete_line); } else if (parm_delete_line) { TPUTS_TRACE("parm_delete_line"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_2(parm_delete_line, n, 0), + TIPARM_1(parm_delete_line, n), n, NCURSES_SP_NAME(_nc_outch)); } else { /* if (delete_line) */ for (i = 0; i < n; i++) { - TPUTS_TRACE("delete_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx delete_line); + NCURSES_PUTP2("delete_line", delete_line); } } GoTo(NCURSES_SP_ARGx ins, 0); UpdateAttrs(SP_PARM, blank); if (n == 1 && insert_line) { - TPUTS_TRACE("insert_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line); + NCURSES_PUTP2("insert_line", insert_line); } else if (parm_insert_line) { TPUTS_TRACE("parm_insert_line"); NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx - TPARM_2(parm_insert_line, n, 0), + TIPARM_1(parm_insert_line, n), n, NCURSES_SP_NAME(_nc_outch)); } else { /* if (insert_line) */ for (i = 0; i < n; i++) { - TPUTS_TRACE("insert_line"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx insert_line); + NCURSES_PUTP2("insert_line", insert_line); } } @@ -1975,24 +2038,20 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx && (SP_PARM->_cursrow == bot || SP_PARM->_cursrow == bot - 1)) && save_cursor && restore_cursor) { cursor_saved = TRUE; - TPUTS_TRACE("save_cursor"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx save_cursor); + NCURSES_PUTP2("save_cursor", save_cursor); } - TPUTS_TRACE("change_scroll_region"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx - TPARM_2(change_scroll_region, top, bot)); + NCURSES_PUTP2("change_scroll_region", + TIPARM_2(change_scroll_region, top, bot)); if (cursor_saved) { - TPUTS_TRACE("restore_cursor"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx restore_cursor); + NCURSES_PUTP2("restore_cursor", restore_cursor); } else { SP_PARM->_cursrow = SP_PARM->_curscol = -1; } res = scroll_csr_forward(NCURSES_SP_ARGx n, top, bot, top, bot, blank); - TPUTS_TRACE("change_scroll_region"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx - TPARM_2(change_scroll_region, 0, maxy)); + NCURSES_PUTP2("change_scroll_region", + TIPARM_2(change_scroll_region, 0, maxy)); SP_PARM->_cursrow = SP_PARM->_curscol = -1; } @@ -2025,15 +2084,12 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx SP_PARM->_cursrow == top - 1) && save_cursor && restore_cursor) { cursor_saved = TRUE; - TPUTS_TRACE("save_cursor"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx save_cursor); + NCURSES_PUTP2("save_cursor", save_cursor); } - TPUTS_TRACE("change_scroll_region"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx - TPARM_2(change_scroll_region, top, bot)); + NCURSES_PUTP2("change_scroll_region", + TIPARM_2(change_scroll_region, top, bot)); if (cursor_saved) { - TPUTS_TRACE("restore_cursor"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx restore_cursor); + NCURSES_PUTP2("restore_cursor", restore_cursor); } else { SP_PARM->_cursrow = SP_PARM->_curscol = -1; } @@ -2041,9 +2097,8 @@ NCURSES_SP_NAME(_nc_scrolln) (NCURSES_SP_DCLx res = scroll_csr_backward(NCURSES_SP_ARGx -n, top, bot, top, bot, blank); - TPUTS_TRACE("change_scroll_region"); - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx - TPARM_2(change_scroll_region, 0, maxy)); + NCURSES_PUTP2("change_scroll_region", + TIPARM_2(change_scroll_region, 0, maxy)); SP_PARM->_cursrow = SP_PARM->_curscol = -1; } @@ -2099,38 +2154,40 @@ NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_DCL0) NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG); /* restore user-defined colors, if any */ - if (SP_PARM->_color_defs < 0) { + if (SP_PARM->_color_defs < 0 && !SP_PARM->_direct_color.value) { int n; SP_PARM->_color_defs = -(SP_PARM->_color_defs); for (n = 0; n < SP_PARM->_color_defs; ++n) { if (SP_PARM->_color_table[n].init) { - NCURSES_SP_NAME(init_color) (NCURSES_SP_ARGx - (short) n, - SP_PARM->_color_table[n].r, - SP_PARM->_color_table[n].g, - SP_PARM->_color_table[n].b); + _nc_init_color(SP_PARM, + n, + SP_PARM->_color_table[n].r, + SP_PARM->_color_table[n].g, + SP_PARM->_color_table[n].b); } } } if (exit_attribute_mode) - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_attribute_mode); + NCURSES_PUTP2("exit_attribute_mode", exit_attribute_mode); else { /* turn off attributes */ if (exit_alt_charset_mode) - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_alt_charset_mode); + NCURSES_PUTP2("exit_alt_charset_mode", exit_alt_charset_mode); if (exit_standout_mode) - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_standout_mode); + NCURSES_PUTP2("exit_standout_mode", exit_standout_mode); if (exit_underline_mode) - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_underline_mode); + NCURSES_PUTP2("exit_underline_mode", exit_underline_mode); } if (exit_insert_mode) - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx exit_insert_mode); - if (enter_am_mode && exit_am_mode) - NCURSES_SP_NAME(putp) (NCURSES_SP_ARGx - (auto_right_margin - ? enter_am_mode - : exit_am_mode)); + NCURSES_PUTP2("exit_insert_mode", exit_insert_mode); + if (enter_am_mode && exit_am_mode) { + if (auto_right_margin) { + NCURSES_PUTP2("enter_am_mode", enter_am_mode); + } else { + NCURSES_PUTP2("exit_am_mode", exit_am_mode); + } + } } #if NCURSES_SP_FUNCS @@ -2159,33 +2216,33 @@ _nc_screen_init(void) NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_screen_wrap) (NCURSES_SP_DCL0) { - if (SP_PARM == 0) - return; + if (SP_PARM != 0) { - UpdateAttrs(SP_PARM, normal); + UpdateAttrs(SP_PARM, normal); #if NCURSES_EXT_FUNCS - if (SP_PARM->_coloron - && !SP_PARM->_default_color) { - static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); - SP_PARM->_default_color = TRUE; - NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx - -1, - 0, - FALSE, - NCURSES_SP_NAME(_nc_outch)); - SP_PARM->_default_color = FALSE; - - TINFO_MVCUR(NCURSES_SP_ARGx - SP_PARM->_cursrow, - SP_PARM->_curscol, - screen_lines(SP_PARM) - 1, - 0); - - ClrToEOL(NCURSES_SP_ARGx blank, TRUE); - } + if (SP_PARM->_coloron + && !SP_PARM->_default_color) { + static const NCURSES_CH_T blank = NewChar(BLANK_TEXT); + SP_PARM->_default_color = TRUE; + NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx + -1, + 0, + FALSE, + NCURSES_SP_NAME(_nc_outch)); + SP_PARM->_default_color = FALSE; + + TINFO_MVCUR(NCURSES_SP_ARGx + SP_PARM->_cursrow, + SP_PARM->_curscol, + screen_lines(SP_PARM) - 1, + 0); + + ClrToEOL(NCURSES_SP_ARGx blank, TRUE); + } #endif - if (SP_PARM->_color_defs) { - NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG); + if (SP_PARM->_color_defs) { + NCURSES_SP_NAME(_nc_reset_colors) (NCURSES_SP_ARG); + } } } diff --git a/deps/ncurses-5.9/ncurses/wcwidth.h b/deps/ncurses-6.3/ncurses/wcwidth.h similarity index 92% rename from deps/ncurses-5.9/ncurses/wcwidth.h rename to deps/ncurses-6.3/ncurses/wcwidth.h index 61e822a..76673da 100644 --- a/deps/ncurses-5.9/ncurses/wcwidth.h +++ b/deps/ncurses-6.3/ncurses/wcwidth.h @@ -59,6 +59,16 @@ * Latest version: http://www.cl.cam.ac.uk/~mgk25/ucs/wcwidth.c */ +#ifndef _WCWIDTH_H_incl +#define _WCWIDTH_H_incl 1 + +#ifdef __cplusplus +extern "C" { +#endif + +#include <ncurses_cfg.h> +#include <ncurses_dll.h> + #include <wchar.h> struct interval { @@ -119,7 +129,7 @@ static int bisearch(wchar_t ucs, const struct interval *table, int max) { * in ISO 10646. */ -int mk_wcwidth(wchar_t ucs) +NCURSES_EXPORT(int) mk_wcwidth(wchar_t ucs) { /* sorted list of non-overlapping intervals of non-spacing characters */ /* generated by "uniset +cat=Me +cat=Mn +cat=Cf -00AD +1160-11FF +200B c" */ @@ -187,24 +197,27 @@ int mk_wcwidth(wchar_t ucs) /* if we arrive here, ucs is not a combining or C0/C1 control character */ - return 1 + + return 1 + (ucs >= 0x1100 && (ucs <= 0x115f || /* Hangul Jamo init. consonants */ ucs == 0x2329 || ucs == 0x232a || (ucs >= 0x2e80 && ucs <= 0xa4cf && - ucs != 0x303f) || /* CJK ... Yi */ - (ucs >= 0xac00 && ucs <= 0xd7a3) || /* Hangul Syllables */ - (ucs >= 0xf900 && ucs <= 0xfaff) || /* CJK Compatibility Ideographs */ - (ucs >= 0xfe10 && ucs <= 0xfe19) || /* Vertical forms */ - (ucs >= 0xfe30 && ucs <= 0xfe6f) || /* CJK Compatibility Forms */ - (ucs >= 0xff00 && ucs <= 0xff60) || /* Fullwidth Forms */ - (ucs >= 0xffe0 && ucs <= 0xffe6) || - (ucs >= 0x20000 && ucs <= 0x2fffd) || - (ucs >= 0x30000 && ucs <= 0x3fffd))); + ucs != 0x303f) /* CJK ... Yi */ + || (ucs >= 0xac00 && ucs <= 0xd7a3) /* Hangul Syllables */ + || (ucs >= 0xf900 && ucs <= 0xfaff) /* CJK Compatibility Ideographs */ + || (ucs >= 0xfe10 && ucs <= 0xfe19) /* Vertical forms */ + || (ucs >= 0xfe30 && ucs <= 0xfe6f) /* CJK Compatibility Forms */ + || (ucs >= 0xff00 && ucs <= 0xff60) /* Fullwidth Forms */ + || (ucs >= 0xffe0 && ucs <= 0xffe6) +#if !defined(SIZEOF_WCHAR_T) || (SIZEOF_WCHAR_T >= 4) + || (ucs >= 0x20000 && ucs <= 0x2fffd) + || (ucs >= 0x30000 && ucs <= 0x3fffd) +#endif + )); } -int mk_wcswidth(const wchar_t *pwcs, size_t n) +NCURSES_EXPORT(int) mk_wcswidth(const wchar_t *pwcs, size_t n) { int w, width = 0; @@ -227,7 +240,7 @@ int mk_wcswidth(const wchar_t *pwcs, size_t n) * the traditional terminal character-width behaviour. It is not * otherwise recommended for general use. */ -int mk_wcwidth_cjk(wchar_t ucs) +NCURSES_EXPORT(int) mk_wcwidth_cjk(wchar_t ucs) { /* sorted list of non-overlapping intervals of East Asian Ambiguous * characters, generated by "uniset +WIDTH-A -cat=Me -cat=Mn -cat=Cf c" */ @@ -295,7 +308,7 @@ int mk_wcwidth_cjk(wchar_t ucs) } -int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n) +NCURSES_EXPORT(int) mk_wcswidth_cjk(const wchar_t *pwcs, size_t n) { int w, width = 0; @@ -307,3 +320,9 @@ int mk_wcswidth_cjk(const wchar_t *pwcs, size_t n) return width; } + +#ifdef __cplusplus +} +#endif + +#endif /* _WCWIDTH_H_incl 1 */ diff --git a/deps/ncurses-5.9/ncurses/widechar/charable.c b/deps/ncurses-6.3/ncurses/widechar/charable.c similarity index 90% rename from deps/ncurses-5.9/ncurses/widechar/charable.c rename to deps/ncurses-6.3/ncurses/widechar/charable.c index 91ceb32..55d4890 100644 --- a/deps/ncurses-5.9/ncurses/widechar/charable.c +++ b/deps/ncurses-6.3/ncurses/widechar/charable.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2003-2005,2008 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2003-2005,2008 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 * @@ -32,7 +33,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: charable.c,v 1.5 2008/07/05 20:51:41 tom Exp $") +MODULE_ID("$Id: charable.c,v 1.8 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(bool) _nc_is_charable(wchar_t ch) { @@ -57,6 +58,8 @@ NCURSES_EXPORT(int) _nc_to_char(wint_t ch) result = UChar(temp[0]); else result = -1; +#else +#error expected either wctob/wctomb #endif return result; } @@ -75,6 +78,8 @@ NCURSES_EXPORT(wint_t) _nc_to_widechar(int ch) result = convert; else result = WEOF; +#else +#error expected either btowc/mbtowc #endif return result; } diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_add_wch.c b/deps/ncurses-6.3/ncurses/widechar/lib_add_wch.c similarity index 96% rename from deps/ncurses-5.9/ncurses/widechar/lib_add_wch.c rename to deps/ncurses-6.3/ncurses/widechar/lib_add_wch.c index 38d3130..b817647 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_add_wch.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_add_wch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2004-2010,2011 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2004-2011,2016 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 * @@ -39,7 +40,7 @@ #include <wctype.h> #endif -MODULE_ID("$Id: lib_add_wch.c,v 1.12 2011/03/22 09:31:15 Petr.Pavlu Exp $") +MODULE_ID("$Id: lib_add_wch.c,v 1.17 2021/06/17 21:26:02 tom Exp $") /* clone/adapt lib_addch.c */ static const cchar_t blankchar = NewChar(BLANK_TEXT); @@ -55,7 +56,7 @@ static const cchar_t blankchar = NewChar(BLANK_TEXT); */ /* Return bit mask for clearing color pair number if given ch has color */ -#define COLOR_MASK(ch) (~(attr_t)((ch) & A_COLOR ? A_COLOR : 0)) +#define COLOR_MASK(ch) (~(attr_t)(((ch) & A_COLOR) ? A_COLOR : 0)) static NCURSES_INLINE cchar_t render_char(WINDOW *win, cchar_t ch) @@ -114,7 +115,7 @@ render_char(WINDOW *win, cchar_t ch) #endif static bool -newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T * ypos) +newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T *ypos) { bool result = FALSE; @@ -132,7 +133,7 @@ newline_forces_scroll(WINDOW *win, NCURSES_SIZE_T * ypos) * wrapped the cursor. We don't do anything with this flag except set it when * wrapping, and clear it whenever we move the cursor. If we try to wrap at * the lower-right corner of a window, we cannot move the cursor (since that - * wouldn't be legal). So we return an error (which is what SVr4 does). + * wouldn't be legal). So we return an error (which is what SVr4 does). * Unlike SVr4, we can successfully add a character to the lower-right corner * (Solaris 2.6 does this also, however). */ @@ -195,7 +196,7 @@ wadd_wch_literal(WINDOW *win, cchar_t ch) * adjustments. */ { - int len = wcwidth(CharOf(ch)); + int len = _nc_wacs_width(CharOf(ch)); int i; int j; wchar_t *chars; diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_box_set.c b/deps/ncurses-6.3/ncurses/widechar/lib_box_set.c similarity index 94% rename from deps/ncurses-5.9/ncurses/widechar/lib_box_set.c rename to deps/ncurses-6.3/ncurses/widechar/lib_box_set.c index 585c949..ef2e1a7 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_box_set.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_box_set.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2003,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2009,2011 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_box_set.c,v 1.5 2009/10/24 22:36:56 tom Exp $") +MODULE_ID("$Id: lib_box_set.c,v 1.7 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wborder_set(WINDOW *win, @@ -52,7 +53,7 @@ wborder_set(WINDOW *win, NCURSES_SIZE_T endx, endy; NCURSES_CH_T wls, wrs, wts, wbs, wtl, wtr, wbl, wbr; - T((T_CALLED("wborder(%p,%s,%s,%s,%s,%s,%s,%s,%s)"), + T((T_CALLED("wborder_set(%p,%s,%s,%s,%s,%s,%s,%s,%s)"), (void *) win, _tracech_t2(1, ls), _tracech_t2(2, rs), diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_cchar.c b/deps/ncurses-6.3/ncurses/widechar/lib_cchar.c similarity index 76% rename from deps/ncurses-5.9/ncurses/widechar/lib_cchar.c rename to deps/ncurses-6.3/ncurses/widechar/lib_cchar.c index c61c795..714be3b 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_cchar.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_cchar.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2001-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2001-2016,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 * @@ -34,10 +35,11 @@ */ #include <curses.priv.h> +#include <wchar.h> -MODULE_ID("$Id: lib_cchar.c,v 1.20 2010/12/25 23:46:26 tom Exp $") +MODULE_ID("$Id: lib_cchar.c,v 1.37 2021/06/17 21:11:08 tom Exp $") -/* +/* * The SuSv2 description leaves some room for interpretation. We'll assume wch * points to a string which is L'\0' terminated, contains at least one * character with strictly positive width, which must be the first, and @@ -47,22 +49,25 @@ NCURSES_EXPORT(int) setcchar(cchar_t *wcval, const wchar_t *wch, const attr_t attrs, - short color_pair, + NCURSES_PAIRS_T pair_arg, const void *opts) { - unsigned i; - unsigned len; int code = OK; + int color_pair = pair_arg; + unsigned len; - TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,%lu,%d,%p)"), + TR(TRACE_CCALLS, (T_CALLED("setcchar(%p,%s,attrs=%lu,pair=%d,%p)"), (void *) wcval, _nc_viswbuf(wch), (unsigned long) attrs, color_pair, opts)); - len = (unsigned) wcslen(wch); - if (opts != NULL - || (len > 1 && wcwidth(wch[0]) < 0)) { + set_extended_pair(opts, color_pair); + if (wch == NULL + || ((len = (unsigned) wcslen(wch)) > 1 && _nc_wacs_width(wch[0]) < 0) + || color_pair < 0) { code = ERR; } else { + unsigned i; + if (len > CCHARW_MAX) len = CCHARW_MAX; @@ -71,7 +76,7 @@ setcchar(cchar_t *wcval, * are only interested in adding non-spacing characters. */ for (i = 1; i < len; ++i) { - if (wcwidth(wch[i]) != 0) { + if (_nc_wacs_width(wch[i]) != 0) { len = i; break; } @@ -80,7 +85,7 @@ setcchar(cchar_t *wcval, memset(wcval, 0, sizeof(*wcval)); if (len != 0) { - SetAttr(*wcval, attrs | (attr_t) ColorPair(color_pair)); + SetAttr(*wcval, attrs); SetPair(CHDEREF(wcval), color_pair); memcpy(&wcval->chars, wch, len * sizeof(wchar_t)); TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len, @@ -96,22 +101,28 @@ NCURSES_EXPORT(int) getcchar(const cchar_t *wcval, wchar_t *wch, attr_t *attrs, - short *color_pair, + NCURSES_PAIRS_T *pair_arg, void *opts) { - wchar_t *wp; - int len; int code = ERR; TR(TRACE_CCALLS, (T_CALLED("getcchar(%p,%p,%p,%p,%p)"), (const void *) wcval, (void *) wch, (void *) attrs, - (void *) color_pair, + (void *) pair_arg, opts)); - if (opts == NULL) { - len = ((wp = wmemchr(wcval->chars, L'\0', CCHARW_MAX)) +#if !NCURSES_EXT_COLORS + if (opts != NULL) { + ; /* empty */ + } else +#endif + if (wcval != NULL) { + wchar_t *wp; + int len; + + len = ((wp = wmemchr(wcval->chars, L'\0', (size_t) CCHARW_MAX)) ? (int) (wp - wcval->chars) : CCHARW_MAX); @@ -121,14 +132,21 @@ getcchar(const cchar_t *wcval, * If the value is not a null, return the length plus 1 for null. */ code = (len < CCHARW_MAX) ? (len + 1) : CCHARW_MAX; - } else if (attrs == 0 || color_pair == 0) { + } else if (attrs == 0 || pair_arg == 0) { code = ERR; } else if (len >= 0) { + int color_pair; + + TR(TRACE_CCALLS, ("copy %d wchars, first is %s", len, + _tracecchar_t(wcval))); *attrs = AttrOf(*wcval) & A_ATTRIBUTES; - *color_pair = (short) GetPair(*wcval); - wmemcpy(wch, wcval->chars, (unsigned) len); + color_pair = GetPair(*wcval); + get_extended_pair(opts, color_pair); + *pair_arg = limit_PAIRS(color_pair); + wmemcpy(wch, wcval->chars, (size_t) len); wch[len] = L'\0'; - code = OK; + if (*pair_arg >= 0) + code = OK; } } diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_erasewchar.c b/deps/ncurses-6.3/ncurses/widechar/lib_erasewchar.c similarity index 75% rename from deps/ncurses-5.9/ncurses/widechar/lib_erasewchar.c rename to deps/ncurses-6.3/ncurses/widechar/lib_erasewchar.c index a4ee93f..197f80b 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_erasewchar.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_erasewchar.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2002-2010,2014 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 * @@ -32,46 +33,64 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_erasewchar.c,v 1.2 2010/07/24 11:35:12 tom Exp $") +MODULE_ID("$Id: lib_erasewchar.c,v 1.5 2021/05/22 23:51:14 tom Exp $") /* * erasewchar() * * Return erase character as given in cur_term->Ottyb. - * */ NCURSES_EXPORT(int) -erasewchar(wchar_t *wch) +NCURSES_SP_NAME(erasewchar) (NCURSES_SP_DCLx wchar_t *wch); +NCURSES_EXPORT(int) +NCURSES_SP_NAME(erasewchar) (NCURSES_SP_DCLx wchar_t *wch) { int value; int result = ERR; T((T_CALLED("erasewchar()"))); - if ((value = erasechar()) != ERR) { - *wch = value; + if ((value = NCURSES_SP_NAME(erasechar) (NCURSES_SP_ARG)) != ERR) { + *wch = (wchar_t) value; result = OK; } returnCode(result); } +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +erasewchar(wchar_t *wch) +{ + return NCURSES_SP_NAME(erasewchar) (CURRENT_SCREEN, wch); +} +#endif + /* * killwchar() * * Return kill character as given in cur_term->Ottyb. - * */ NCURSES_EXPORT(int) -killwchar(wchar_t *wch) +NCURSES_SP_NAME(killwchar) (NCURSES_SP_DCLx wchar_t *wch); +NCURSES_EXPORT(int) +NCURSES_SP_NAME(killwchar) (NCURSES_SP_DCLx wchar_t *wch) { int value; int result = ERR; T((T_CALLED("killwchar()"))); - if ((value = killchar()) != ERR) { - *wch = value; + if ((value = NCURSES_SP_NAME(killchar) (NCURSES_SP_ARG)) != ERR) { + *wch = (wchar_t) value; result = OK; } returnCode(result); } + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +killwchar(wchar_t *wch) +{ + return NCURSES_SP_NAME(killwchar) (CURRENT_SCREEN, wch); +} +#endif diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_get_wch.c b/deps/ncurses-6.3/ncurses/widechar/lib_get_wch.c similarity index 91% rename from deps/ncurses-5.9/ncurses/widechar/lib_get_wch.c rename to deps/ncurses-6.3/ncurses/widechar/lib_get_wch.c index 32033df..9f10d3b 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_get_wch.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_get_wch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2002-2011,2016 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 * @@ -40,18 +41,14 @@ #include <curses.priv.h> #include <ctype.h> -MODULE_ID("$Id: lib_get_wch.c,v 1.22 2010/08/28 21:00:35 tom Exp $") +MODULE_ID("$Id: lib_get_wch.c,v 1.26 2021/04/17 16:12:54 tom Exp $") NCURSES_EXPORT(int) wget_wch(WINDOW *win, wint_t *result) { SCREEN *sp; int code; - char buffer[(MB_LEN_MAX * 9) + 1]; /* allow some redundant shifts */ - int status; - size_t count = 0; int value = 0; - wchar_t wch; #ifndef state_unused mbstate_t state; #endif @@ -64,8 +61,13 @@ wget_wch(WINDOW *win, wint_t *result) */ _nc_lock_global(curses); sp = _nc_screen_of(win); + if (sp != 0) { + size_t count = 0; + for (;;) { + char buffer[(MB_LEN_MAX * 9) + 1]; /* allow some redundant shifts */ + T(("reading %d of %d", (int) count + 1, (int) sizeof(buffer))); code = _nc_wgetch(win, &value, TRUE EVENTLIST_2nd((_nc_eventlist *) 0)); @@ -89,10 +91,13 @@ wget_wch(WINDOW *win, wint_t *result) code = ERR; break; } else { + int status; + buffer[count++] = (char) UChar(value); reset_mbytes(state); status = count_mbytes(buffer, count, state); if (status >= 0) { + wchar_t wch; reset_mbytes(state); if (check_mbytes(wch, buffer, count, state) != status) { code = ERR; /* the two calls should match */ @@ -106,7 +111,10 @@ wget_wch(WINDOW *win, wint_t *result) } else { code = ERR; } - *result = (wint_t) value; + + if (result != 0) + *result = (wint_t) value; + _nc_unlock_global(curses); T(("result %#o", value)); returnCode(code); diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_get_wstr.c b/deps/ncurses-6.3/ncurses/widechar/lib_get_wstr.c similarity index 88% rename from deps/ncurses-5.9/ncurses/widechar/lib_get_wstr.c rename to deps/ncurses-6.3/ncurses/widechar/lib_get_wstr.c index 0b45021..83baaed 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_get_wstr.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_get_wstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2008,2009 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2002-2009,2011 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_get_wstr.c,v 1.12 2009/10/24 22:38:11 tom Exp $") +MODULE_ID("$Id: lib_get_wstr.c,v 1.19 2021/09/04 10:29:59 tom Exp $") static int wadd_wint(WINDOW *win, wint_t *src) @@ -49,7 +50,7 @@ wadd_wint(WINDOW *win, wint_t *src) wch[0] = (wchar_t) (*src); wch[1] = 0; - setcchar(&tmp, wch, A_NORMAL, 0, NULL); + setcchar(&tmp, wch, A_NORMAL, (short) 0, NULL); return wadd_wch(win, &tmp); } @@ -58,7 +59,7 @@ wadd_wint(WINDOW *win, wint_t *src) * or other character, and handles reverse wraparound. */ static wint_t * -WipeOut(WINDOW *win, int y, int x, wint_t *first, wint_t *last, bool echoed) +WipeOut(WINDOW *win, int y, int x, wint_t *first, wint_t *last, int echoed) { if (last > first) { *--last = '\0'; @@ -88,8 +89,8 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen) SCREEN *sp = _nc_screen_of(win); TTY buf; bool oldnl, oldecho, oldraw, oldcbreak; - wint_t erasec; - wint_t killc; + wchar_t erasec = 0; + wchar_t killc = 0; wint_t *oldstr = str; wint_t *tmpstr = str; wint_t ch; @@ -100,19 +101,20 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen) if (!win) returnCode(ERR); + maxlen = _nc_getstr_limit(maxlen); + _nc_get_tty_mode(&buf); oldnl = sp->_nl; oldecho = sp->_echo; oldraw = sp->_raw; oldcbreak = sp->_cbreak; - nl(); - noecho(); - noraw(); - cbreak(); + NCURSES_SP_NAME(nl) (NCURSES_SP_ARG); + NCURSES_SP_NAME(noecho) (NCURSES_SP_ARG); + NCURSES_SP_NAME(raw) (NCURSES_SP_ARG); - erasec = (wint_t) erasechar(); - killc = (wint_t) killchar(); + NCURSES_SP_NAME(erasewchar) (NCURSES_SP_ARGx &erasec); + NCURSES_SP_NAME(killwchar) (NCURSES_SP_ARGx &killc); getyx(win, y, x); @@ -129,12 +131,12 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen) code = KEY_CODE_YES; ch = KEY_ENTER; } - if (ch < KEY_MIN) { - if (ch == erasec) { + if (ch != 0 && ch < KEY_MIN) { + if (ch == (wint_t) erasec) { ch = KEY_BACKSPACE; code = KEY_CODE_YES; } - if (ch == killc) { + if (ch == (wint_t) killc) { ch = KEY_EOL; code = KEY_CODE_YES; } @@ -142,7 +144,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen) if (code == KEY_CODE_YES) { /* * Some terminals (the Wyse-50 is the most common) generate a \n - * from the down-arrow key. With this logic, it's the user's + * from the down-arrow key. With this logic, it is the user's * choice whether to set kcud=\n for wget_wch(); terminating * *getn_wstr() with \n should work either way. */ @@ -164,7 +166,7 @@ wgetn_wstr(WINDOW *win, wint_t *str, int maxlen) } else { beep(); } - } else if (maxlen >= 0 && tmpstr - oldstr >= maxlen) { + } else if (tmpstr - oldstr >= maxlen) { beep(); } else { *tmpstr++ = ch; diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_hline_set.c b/deps/ncurses-6.3/ncurses/widechar/lib_hline_set.c similarity index 91% rename from deps/ncurses-5.9/ncurses/widechar/lib_hline_set.c rename to deps/ncurses-6.3/ncurses/widechar/lib_hline_set.c index da92b83..8d5e026 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_hline_set.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_hline_set.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2010,2016 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 * @@ -39,23 +40,21 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_hline_set.c,v 1.4 2010/12/19 01:45:03 tom Exp $") +MODULE_ID("$Id: lib_hline_set.c,v 1.6 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) whline_set(WINDOW *win, const cchar_t *ch, int n) { int code = ERR; - int start; - int end; T((T_CALLED("whline_set(%p,%s,%d)"), (void *) win, _tracecchar_t(ch), n)); if (win) { struct ldat *line = &(win->_line[win->_cury]); NCURSES_CH_T wch; + int start = win->_curx; + int end = start + n - 1; - start = win->_curx; - end = start + n - 1; if (end > win->_maxx) end = win->_maxx; diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_in_wch.c b/deps/ncurses-6.3/ncurses/widechar/lib_in_wch.c similarity index 92% rename from deps/ncurses-5.9/ncurses/widechar/lib_in_wch.c rename to deps/ncurses-6.3/ncurses/widechar/lib_in_wch.c index b239650..1d27332 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_in_wch.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_in_wch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2009,2016 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 * @@ -39,17 +40,19 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_in_wch.c,v 1.5 2009/10/24 22:37:55 tom Exp $") +MODULE_ID("$Id: lib_in_wch.c,v 1.7 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) win_wch(WINDOW *win, cchar_t *wcval) { - int row, col; int code = OK; TR(TRACE_CCALLS, (T_CALLED("win_wch(%p,%p)"), (void *) win, (void *) wcval)); + if (win != 0 && wcval != 0) { + int row, col; + getyx(win, row, col); *wcval = win->_line[row].text[col]; diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_in_wchnstr.c b/deps/ncurses-6.3/ncurses/widechar/lib_in_wchnstr.c similarity index 93% rename from deps/ncurses-5.9/ncurses/widechar/lib_in_wchnstr.c rename to deps/ncurses-6.3/ncurses/widechar/lib_in_wchnstr.c index 57cc2ca..40a2bb6 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_in_wchnstr.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_in_wchnstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2007,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2007,2009 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_in_wchnstr.c,v 1.8 2009/10/24 22:37:48 tom Exp $") +MODULE_ID("$Id: lib_in_wchnstr.c,v 1.9 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) win_wchnstr(WINDOW *win, cchar_t *wchstr, int n) diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_ins_wch.c b/deps/ncurses-6.3/ncurses/widechar/lib_ins_wch.c similarity index 87% rename from deps/ncurses-5.9/ncurses/widechar/lib_ins_wch.c rename to deps/ncurses-6.3/ncurses/widechar/lib_ins_wch.c index 1eee8a3..f753610 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_ins_wch.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_ins_wch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2002-2016,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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_ins_wch.c,v 1.16 2010/12/19 01:34:04 tom Exp $") +MODULE_ID("$Id: lib_ins_wch.c,v 1.25 2020/12/05 20:04:59 tom Exp $") /* * Insert the given character, updating the current location to simplify @@ -48,8 +49,7 @@ MODULE_ID("$Id: lib_ins_wch.c,v 1.16 2010/12/19 01:34:04 tom Exp $") NCURSES_EXPORT(int) _nc_insert_wch(WINDOW *win, const cchar_t *wch) { - int cells = wcwidth(CharOf(CHDEREF(wch))); - int cell; + int cells = _nc_wacs_width(CharOf(CHDEREF(wch))); int code = OK; if (cells < 0) { @@ -59,6 +59,7 @@ _nc_insert_wch(WINDOW *win, const cchar_t *wch) cells = 1; if (win->_curx <= win->_maxx) { + int cell; struct ldat *line = &(win->_line[win->_cury]); NCURSES_CH_T *end = &(line->text[win->_curx]); NCURSES_CH_T *temp1 = &(line->text[win->_maxx]); @@ -73,7 +74,7 @@ _nc_insert_wch(WINDOW *win, const cchar_t *wch) SetWidecExt(temp1[cell], cell); } - win->_curx++; + win->_curx = (NCURSES_SIZE_T) (win->_curx + cells); } } return code; @@ -82,15 +83,13 @@ _nc_insert_wch(WINDOW *win, const cchar_t *wch) NCURSES_EXPORT(int) wins_wch(WINDOW *win, const cchar_t *wch) { - NCURSES_SIZE_T oy; - NCURSES_SIZE_T ox; int code = ERR; T((T_CALLED("wins_wch(%p, %s)"), (void *) win, _tracecchar_t(wch))); if (win != 0) { - oy = win->_cury; - ox = win->_curx; + NCURSES_SIZE_T oy = win->_cury; + NCURSES_SIZE_T ox = win->_curx; code = _nc_insert_wch(win, wch); @@ -105,9 +104,6 @@ NCURSES_EXPORT(int) wins_nwstr(WINDOW *win, const wchar_t *wstr, int n) { int code = ERR; - NCURSES_SIZE_T oy; - NCURSES_SIZE_T ox; - const wchar_t *cp; T((T_CALLED("wins_nwstr(%p,%s,%d)"), (void *) win, _nc_viswbufn(wstr, n), n)); @@ -115,15 +111,17 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n) if (win != 0 && wstr != 0) { if (n < 1) - n = (int) wcslen(wstr); + n = INT_MAX; code = OK; + if (n > 0) { + const wchar_t *cp; SCREEN *sp = _nc_screen_of(win); + NCURSES_SIZE_T oy = win->_cury; + NCURSES_SIZE_T ox = win->_curx; - oy = win->_cury; - ox = win->_curx; - for (cp = wstr; *cp && ((cp - wstr) < n); cp++) { - int len = wcwidth(*cp); + for (cp = wstr; (*cp != L'\0') && ((cp - wstr) < n); cp++) { + int len = _nc_wacs_width(*cp); if ((len >= 0 && len != 1) || !is7bits(*cp)) { cchar_t tmp_cchar; @@ -132,7 +130,7 @@ wins_nwstr(WINDOW *win, const wchar_t *wstr, int n) (void) setcchar(&tmp_cchar, &tmp_wchar, WA_NORMAL, - 0, + (short) 0, (void *) 0); code = _nc_insert_wch(win, &tmp_cchar); } else { diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_inwstr.c b/deps/ncurses-6.3/ncurses/widechar/lib_inwstr.c similarity index 85% rename from deps/ncurses-5.9/ncurses/widechar/lib_inwstr.c rename to deps/ncurses-6.3/ncurses/widechar/lib_inwstr.c index 4cf7182..b2fdaea 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_inwstr.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_inwstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2004,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2016,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 * @@ -39,31 +40,39 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_inwstr.c,v 1.5 2009/10/24 22:37:29 tom Exp $") +MODULE_ID("$Id: lib_inwstr.c,v 1.9 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) winnwstr(WINDOW *win, wchar_t *wstr, int n) { - int row, col, inx; int count = 0; - int last = 0; cchar_t *text; - wchar_t wch; T((T_CALLED("winnwstr(%p,%p,%d)"), (void *) win, (void *) wstr, n)); if (wstr != 0) { if (win) { + int row, col; + int last = 0; + bool done = FALSE; + getyx(win, row, col); text = win->_line[row].text; - while (count < n && count != ERR) { + while (count < n && !done && count != ERR) { + if (!isWidecExt(text[col])) { + int inx; + wchar_t wch; + for (inx = 0; (inx < CCHARW_MAX) && ((wch = text[col].chars[inx]) != 0); ++inx) { if (count + 1 > n) { - if ((count = last) == 0) { + done = TRUE; + if (last == 0) { count = ERR; /* error if we store nothing */ + } else { + count = last; /* only store complete chars */ } break; } @@ -93,8 +102,13 @@ NCURSES_EXPORT(int) winwstr(WINDOW *win, wchar_t *wstr) { int result = OK; + T((T_CALLED("winwstr(%p,%p)"), (void *) win, (void *) wstr)); - if (winnwstr(win, wstr, CCHARW_MAX * (win->_maxx - win->_curx + 1)) == ERR) + if (win == 0) { + result = ERR; + } else if (winnwstr(win, wstr, + CCHARW_MAX * (win->_maxx - win->_curx + 1)) == ERR) { result = ERR; + } returnCode(result); } diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_key_name.c b/deps/ncurses-6.3/ncurses/widechar/lib_key_name.c similarity index 87% rename from deps/ncurses-5.9/ncurses/widechar/lib_key_name.c rename to deps/ncurses-6.3/ncurses/widechar/lib_key_name.c index da65f21..8acfe7a 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_key_name.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_key_name.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-2008,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 * @@ -35,7 +36,9 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_key_name.c,v 1.3 2008/10/11 20:15:14 tom Exp $") +MODULE_ID("$Id: lib_key_name.c,v 1.5 2020/02/02 23:34:34 tom Exp $") + +#define MyData _nc_globals.key_name NCURSES_EXPORT(NCURSES_CONST char *) key_name(wchar_t c) @@ -44,19 +47,16 @@ key_name(wchar_t c) wchar_t *my_wchars; size_t len; - /* FIXME: move to _nc_globals */ - static char result[MB_LEN_MAX + 1]; - memset(&my_cchar, 0, sizeof(my_cchar)); my_cchar.chars[0] = c; my_cchar.chars[1] = L'\0'; my_wchars = wunctrl(&my_cchar); - len = wcstombs(result, my_wchars, sizeof(result) - 1); + len = wcstombs(MyData, my_wchars, sizeof(MyData) - 1); if (isEILSEQ(len) || (len == 0)) { return 0; } - result[len] = '\0'; - return result; + MyData[len] = '\0'; + return MyData; } diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_pecho_wchar.c b/deps/ncurses-6.3/ncurses/widechar/lib_pecho_wchar.c similarity index 93% rename from deps/ncurses-5.9/ncurses/widechar/lib_pecho_wchar.c rename to deps/ncurses-6.3/ncurses/widechar/lib_pecho_wchar.c index b6da7a8..82b49b6 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_pecho_wchar.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_pecho_wchar.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2004,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2004,2009 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 * @@ -32,7 +33,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_pecho_wchar.c,v 1.2 2009/10/24 22:43:32 tom Exp $") +MODULE_ID("$Id: lib_pecho_wchar.c,v 1.3 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) pecho_wchar(WINDOW *pad, const cchar_t *wch) diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_slk_wset.c b/deps/ncurses-6.3/ncurses/widechar/lib_slk_wset.c similarity index 79% rename from deps/ncurses-5.9/ncurses/widechar/lib_slk_wset.c rename to deps/ncurses-6.3/ncurses/widechar/lib_slk_wset.c index 646b5d9..5aa75ff 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_slk_wset.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_slk_wset.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2003-2004,2005 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2003-2011,2016 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 * @@ -40,32 +41,37 @@ #include <wctype.h> #endif -MODULE_ID("$Id: lib_slk_wset.c,v 1.11 2005/01/16 01:03:53 tom Exp $") +MODULE_ID("$Id: lib_slk_wset.c,v 1.15 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) slk_wset(int i, const wchar_t *astr, int format) { int result = ERR; - size_t arglen; const wchar_t *str; - char *mystr; mbstate_t state; T((T_CALLED("slk_wset(%d, %s, %d)"), i, _nc_viswbuf(astr), format)); - init_mb(state); - str = astr; - if ((arglen = wcsrtombs(NULL, &str, 0, &state)) != (size_t) -1) { - if ((mystr = (char *) _nc_doalloc(0, arglen + 1)) != 0) { - str = astr; - if (wcsrtombs(mystr, &str, arglen, &state) != (size_t) -1) { - /* glibc documentation claims that the terminating L'\0' - * is written, but it is not... - */ - mystr[arglen] = 0; - result = slk_set(i, mystr, format); + if (astr != 0) { + size_t arglen; + + init_mb(state); + str = astr; + + if ((arglen = wcsrtombs(NULL, &str, (size_t) 0, &state)) != (size_t) -1) { + char *mystr; + + if ((mystr = (char *) _nc_doalloc(0, arglen + 1)) != 0) { + str = astr; + if (wcsrtombs(mystr, &str, arglen, &state) != (size_t) -1) { + /* glibc documentation claims that the terminating L'\0' + * is written, but it is not... + */ + mystr[arglen] = 0; + result = slk_set(i, mystr, format); + } + free(mystr); } - free(mystr); } } returnCode(result); diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_unget_wch.c b/deps/ncurses-6.3/ncurses/widechar/lib_unget_wch.c similarity index 93% rename from deps/ncurses-5.9/ncurses/widechar/lib_unget_wch.c rename to deps/ncurses-6.3/ncurses/widechar/lib_unget_wch.c index 7a626a9..4ea26b6 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_unget_wch.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_unget_wch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2011,2016 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 * @@ -39,7 +40,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_unget_wch.c,v 1.14 2010/07/24 11:35:21 tom Exp $") +MODULE_ID("$Id: lib_unget_wch.c,v 1.17 2020/02/02 23:34:34 tom Exp $") /* * Wrapper for wcrtomb() which obtains the length needed for the given @@ -55,7 +56,7 @@ _nc_wcrtomb(char *target, wchar_t source, mbstate_t * state) const wchar_t *tempp = temp; temp[0] = source; temp[1] = 0; - result = (int) wcsrtombs(NULL, &tempp, 0, state); + result = (int) wcsrtombs(NULL, &tempp, (size_t) 0, state); } else { result = (int) wcrtomb(target, source, state); } @@ -70,7 +71,6 @@ NCURSES_SP_NAME(unget_wch) (NCURSES_SP_DCLx const wchar_t wch) int result = OK; mbstate_t state; size_t length; - int n; T((T_CALLED("unget_wch(%p, %#lx)"), (void *) SP_PARM, (unsigned long) wch)); @@ -82,6 +82,8 @@ NCURSES_SP_NAME(unget_wch) (NCURSES_SP_DCLx const wchar_t wch) char *string; if ((string = (char *) malloc(length)) != 0) { + int n; + init_mb(state); /* ignore the result, since we already validated the character */ IGNORE_RC((int) wcrtomb(string, wch, &state)); diff --git a/deps/ncurses-6.3/ncurses/widechar/lib_vid_attr.c b/deps/ncurses-6.3/ncurses/widechar/lib_vid_attr.c new file mode 100644 index 0000000..2d9531f --- /dev/null +++ b/deps/ncurses-6.3/ncurses/widechar/lib_vid_attr.c @@ -0,0 +1,367 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2002-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: Thomas E. Dickey * + ****************************************************************************/ + +#include <curses.priv.h> + +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_vid_attr.c,v 1.30 2020/05/27 23:54:31 tom Exp $") + +#define doPut(mode) \ + TPUTS_TRACE(#mode); \ + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc) + +#define TurnOn(mask, mode) \ + if ((turn_on & mask) && mode) { \ + TPUTS_TRACE(#mode); \ + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \ + } + +#define TurnOff(mask, mode) \ + if ((turn_off & mask) && mode) { \ + TPUTS_TRACE(#mode); \ + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx mode, 1, outc); \ + turn_off &= ~mask; \ + } + + /* if there is no current screen, assume we *can* do color */ +#define SetColorsIf(why, old_attr, old_pair) \ + if (can_color && (why)) { \ + TR(TRACE_ATTRS, ("old pair = %d -- new pair = %d", old_pair, color_pair)); \ + if ((color_pair != old_pair) \ + || (fix_pair0 && (color_pair == 0)) \ + || (reverse ^ ((old_attr & A_REVERSE) != 0))) { \ + NCURSES_SP_NAME(_nc_do_color) (NCURSES_SP_ARGx \ + old_pair, color_pair, \ + reverse, outc); \ + } \ + } + +#define set_color(mode, pair) \ + mode &= ALL_BUT_COLOR; \ + mode |= (attr_t) ColorPair(pair) + +NCURSES_EXPORT(int) +NCURSES_SP_NAME(vid_puts) (NCURSES_SP_DCLx + attr_t newmode, + NCURSES_PAIRS_T pair_arg, + void *opts OPTIONAL_PAIR, + NCURSES_SP_OUTC outc) +{ + int color_pair = pair_arg; +#if NCURSES_EXT_COLORS + static attr_t previous_attr = A_NORMAL; + static int previous_pair = 0; + + attr_t turn_on, turn_off; + bool reverse = FALSE; + bool can_color = (SP_PARM == 0 || SP_PARM->_coloron); +#if NCURSES_EXT_FUNCS + bool fix_pair0 = (SP_PARM != 0 && SP_PARM->_coloron && !SP_PARM->_default_color); +#else +#define fix_pair0 FALSE +#endif + + if (!IsValidTIScreen(SP_PARM)) + returnCode(ERR); + + newmode &= A_ATTRIBUTES; + set_extended_pair(opts, color_pair); + T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), color_pair)); + + /* this allows us to go on whether or not newterm() has been called */ + if (SP_PARM) { + previous_attr = AttrOf(SCREEN_ATTRS(SP_PARM)); + previous_pair = GetPair(SCREEN_ATTRS(SP_PARM)); + } + + TR(TRACE_ATTRS, ("previous attribute was %s, %d", + _traceattr(previous_attr), previous_pair)); + +#if !USE_XMC_SUPPORT + if ((SP_PARM != 0) + && (magic_cookie_glitch > 0)) + newmode &= ~(SP_PARM->_xmc_suppress); +#endif + + /* + * If we have a terminal that cannot combine color with video + * attributes, use the colors in preference. + */ + if ((color_pair != 0 + || fix_pair0) + && (no_color_video > 0)) { + /* + * If we had chosen the A_xxx definitions to correspond to the + * no_color_video mask, we could simply shift it up and mask off the + * attributes. But we did not (actually copied Solaris' definitions). + * However, this is still simpler/faster than a lookup table. + * + * The 63 corresponds to A_STANDOUT, A_UNDERLINE, A_REVERSE, A_BLINK, + * A_DIM, A_BOLD which are 1:1 with no_color_video. The bits that + * correspond to A_INVIS, A_PROTECT (192) must be shifted up 1 and + * A_ALTCHARSET (256) down 2 to line up. We use the NCURSES_BITS + * macro so this will work properly for the wide-character layout. + */ + unsigned value = (unsigned) no_color_video; + attr_t mask = NCURSES_BITS((value & 63) + | ((value & 192) << 1) + | ((value & 256) >> 2), 8); + + if ((mask & A_REVERSE) != 0 + && (newmode & A_REVERSE) != 0) { + reverse = TRUE; + mask &= ~A_REVERSE; + } + newmode &= ~mask; + } + + if (newmode == previous_attr + && color_pair == previous_pair) + returnCode(OK); + + if (reverse) { + newmode &= ~A_REVERSE; + } + + turn_off = (~newmode & previous_attr) & ALL_BUT_COLOR; + turn_on = (newmode & ~(previous_attr & TPARM_ATTR)) & ALL_BUT_COLOR; + + SetColorsIf(((color_pair == 0) && !fix_pair0), previous_attr, previous_pair); + + if (newmode == A_NORMAL) { + if ((previous_attr & A_ALTCHARSET) && exit_alt_charset_mode) { + doPut(exit_alt_charset_mode); + previous_attr &= ~A_ALTCHARSET; + } + if (previous_attr) { + if (exit_attribute_mode) { + doPut(exit_attribute_mode); + } else { + if (!SP_PARM || SP_PARM->_use_rmul) { + TurnOff(A_UNDERLINE, exit_underline_mode); + } + if (!SP_PARM || SP_PARM->_use_rmso) { + TurnOff(A_STANDOUT, exit_standout_mode); + } +#if USE_ITALIC + if (!SP_PARM || SP_PARM->_use_ritm) { + TurnOff(A_ITALIC, exit_italics_mode); + } +#endif + } + previous_attr &= ALL_BUT_COLOR; + previous_pair = 0; + } + + SetColorsIf((color_pair != 0) || fix_pair0, previous_attr, previous_pair); + } else if (set_attributes) { + if (turn_on || turn_off) { + TPUTS_TRACE("set_attributes"); + NCURSES_SP_NAME(tputs) (NCURSES_SP_ARGx + TIPARM_9(set_attributes, + (newmode & A_STANDOUT) != 0, + (newmode & A_UNDERLINE) != 0, + (newmode & A_REVERSE) != 0, + (newmode & A_BLINK) != 0, + (newmode & A_DIM) != 0, + (newmode & A_BOLD) != 0, + (newmode & A_INVIS) != 0, + (newmode & A_PROTECT) != 0, + (newmode & A_ALTCHARSET) != 0), + 1, outc); + previous_attr &= ALL_BUT_COLOR; + previous_pair = 0; + } +#if USE_ITALIC + if (!SP_PARM || SP_PARM->_use_ritm) { + if (turn_on & A_ITALIC) { + TurnOn(A_ITALIC, enter_italics_mode); + } else if (turn_off & A_ITALIC) { + TurnOff(A_ITALIC, exit_italics_mode); + } + } +#endif + SetColorsIf((color_pair != 0) || fix_pair0, previous_attr, previous_pair); + } else { + + TR(TRACE_ATTRS, ("turning %s off", _traceattr(turn_off))); + + TurnOff(A_ALTCHARSET, exit_alt_charset_mode); + + if (!SP_PARM || SP_PARM->_use_rmul) { + TurnOff(A_UNDERLINE, exit_underline_mode); + } + + if (!SP_PARM || SP_PARM->_use_rmso) { + TurnOff(A_STANDOUT, exit_standout_mode); + } +#if USE_ITALIC + if (!SP_PARM || SP_PARM->_use_ritm) { + TurnOff(A_ITALIC, exit_italics_mode); + } +#endif + if (turn_off && exit_attribute_mode) { + doPut(exit_attribute_mode); + turn_on |= (newmode & ALL_BUT_COLOR); + previous_attr &= ALL_BUT_COLOR; + previous_pair = 0; + } + SetColorsIf((color_pair != 0) || fix_pair0, previous_attr, previous_pair); + + TR(TRACE_ATTRS, ("turning %s on", _traceattr(turn_on))); + /* *INDENT-OFF* */ + TurnOn(A_ALTCHARSET, enter_alt_charset_mode); + TurnOn(A_BLINK, enter_blink_mode); + TurnOn(A_BOLD, enter_bold_mode); + TurnOn(A_DIM, enter_dim_mode); + TurnOn(A_REVERSE, enter_reverse_mode); + TurnOn(A_STANDOUT, enter_standout_mode); + TurnOn(A_PROTECT, enter_protected_mode); + TurnOn(A_INVIS, enter_secure_mode); + TurnOn(A_UNDERLINE, enter_underline_mode); +#if USE_ITALIC + TurnOn(A_ITALIC, enter_italics_mode); +#endif +#if USE_WIDEC_SUPPORT && defined(enter_horizontal_hl_mode) + TurnOn(A_HORIZONTAL, enter_horizontal_hl_mode); + TurnOn(A_LEFT, enter_left_hl_mode); + TurnOn(A_LOW, enter_low_hl_mode); + TurnOn(A_RIGHT, enter_right_hl_mode); + TurnOn(A_TOP, enter_top_hl_mode); + TurnOn(A_VERTICAL, enter_vertical_hl_mode); +#endif + /* *INDENT-ON* */ + } + + if (reverse) + newmode |= A_REVERSE; + + if (SP_PARM) { + SetAttr(SCREEN_ATTRS(SP_PARM), newmode); + SetPair(SCREEN_ATTRS(SP_PARM), color_pair); + } else { + previous_attr = newmode; + previous_pair = color_pair; + } + + returnCode(OK); +#else + T((T_CALLED("vid_puts(%s,%d)"), _traceattr(newmode), color_pair)); + (void) opts; + set_color(newmode, color_pair); + returnCode(NCURSES_SP_NAME(vidputs) (NCURSES_SP_ARGx newmode, outc)); +#endif +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +vid_puts(attr_t newmode, + NCURSES_PAIRS_T pair_arg, + void *opts GCC_UNUSED, + NCURSES_OUTC outc) +{ + SetSafeOutcWrapper(outc); + return NCURSES_SP_NAME(vid_puts) (CURRENT_SCREEN, + newmode, + pair_arg, + opts, + _nc_outc_wrapper); +} +#endif + +#undef vid_attr +NCURSES_EXPORT(int) +NCURSES_SP_NAME(vid_attr) (NCURSES_SP_DCLx + attr_t newmode, + NCURSES_PAIRS_T pair_arg, + void *opts) +{ + T((T_CALLED("vid_attr(%s,%d)"), _traceattr(newmode), (int) pair_arg)); + returnCode(NCURSES_SP_NAME(vid_puts) (NCURSES_SP_ARGx + newmode, + pair_arg, + opts, + NCURSES_SP_NAME(_nc_putchar))); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(int) +vid_attr(attr_t newmode, NCURSES_PAIRS_T pair_arg, void *opts) +{ + return NCURSES_SP_NAME(vid_attr) (CURRENT_SCREEN, newmode, pair_arg, opts); +} +#endif + +/* + * This implementation uses the same mask values for A_xxx and WA_xxx, so + * we can use termattrs() for part of the logic. + */ +NCURSES_EXPORT(attr_t) +NCURSES_SP_NAME(term_attrs) (NCURSES_SP_DCL0) +{ + attr_t attrs = 0; + + T((T_CALLED("term_attrs()"))); + if (SP_PARM) { + attrs = NCURSES_SP_NAME(termattrs) (NCURSES_SP_ARG); + +#if USE_WIDEC_SUPPORT && defined(enter_horizontal_hl_mode) + /* these are only supported for wide-character mode */ + if (enter_horizontal_hl_mode) + attrs |= WA_HORIZONTAL; + if (enter_left_hl_mode) + attrs |= WA_LEFT; + if (enter_low_hl_mode) + attrs |= WA_LOW; + if (enter_right_hl_mode) + attrs |= WA_RIGHT; + if (enter_top_hl_mode) + attrs |= WA_TOP; + if (enter_vertical_hl_mode) + attrs |= WA_VERTICAL; +#endif + } + + returnAttr(attrs); +} + +#if NCURSES_SP_FUNCS +NCURSES_EXPORT(attr_t) +term_attrs(void) +{ + return NCURSES_SP_NAME(term_attrs) (CURRENT_SCREEN); +} +#endif diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_vline_set.c b/deps/ncurses-6.3/ncurses/widechar/lib_vline_set.c similarity index 91% rename from deps/ncurses-5.9/ncurses/widechar/lib_vline_set.c rename to deps/ncurses-6.3/ncurses/widechar/lib_vline_set.c index 917caac..f7bb581 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_vline_set.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_vline_set.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2010,2016 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 * @@ -39,22 +40,21 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_vline_set.c,v 1.4 2010/12/19 01:50:50 tom Exp $") +MODULE_ID("$Id: lib_vline_set.c,v 1.6 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(int) wvline_set(WINDOW *win, const cchar_t *ch, int n) { int code = ERR; - int row, col; - int end; T((T_CALLED("wvline(%p,%s,%d)"), (void *) win, _tracecchar_t(ch), n)); if (win) { NCURSES_CH_T wch; - row = win->_cury; - col = win->_curx; - end = row + n - 1; + int row = win->_cury; + int col = win->_curx; + int end = row + n - 1; + if (end > win->_maxy) end = win->_maxy; diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_wacs.c b/deps/ncurses-6.3/ncurses/widechar/lib_wacs.c similarity index 87% rename from deps/ncurses-5.9/ncurses/widechar/lib_wacs.c rename to deps/ncurses-6.3/ncurses/widechar/lib_wacs.c index 5a16e45..5b6f6da 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_wacs.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_wacs.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2002-2015,2016 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 * @@ -32,7 +33,7 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_wacs.c,v 1.10 2010/12/19 01:43:19 tom Exp $") +MODULE_ID("$Id: lib_wacs.c,v 1.20 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT_VAR(cchar_t) * _nc_wacs = 0; @@ -106,7 +107,6 @@ _nc_init_wacs(void) }; /* *INDENT-ON* */ - unsigned n, m; int active = _nc_unicode_locale(); /* @@ -119,22 +119,30 @@ _nc_init_wacs(void) T(("initializing WIDE-ACS map (Unicode is%s active)", active ? "" : " not")); - _nc_wacs = typeCalloc(cchar_t, ACS_LEN); - for (n = 0; n < SIZEOF(table); ++n) { - int wide = wcwidth(table[n].value[active]); + if ((_nc_wacs = typeCalloc(cchar_t, ACS_LEN)) != 0) { + unsigned n; - m = table[n].map; - if (active && (wide == 1)) { - SetChar(_nc_wacs[m], table[n].value[active], A_NORMAL); - } else if (acs_map[m] & A_ALTCHARSET) { - SetChar(_nc_wacs[m], m, A_ALTCHARSET); - } else { - SetChar(_nc_wacs[m], table[n].value[0], A_NORMAL); - } + for (n = 0; n < SIZEOF(table); ++n) { + unsigned m; +#if NCURSES_WCWIDTH_GRAPHICS + int wide = wcwidth((wchar_t) table[n].value[active]); +#else + int wide = 1; +#endif + + m = table[n].map; + if (active && (wide == 1)) { + SetChar(_nc_wacs[m], table[n].value[1], A_NORMAL); + } else if (acs_map[m] & A_ALTCHARSET) { + SetChar(_nc_wacs[m], m, A_ALTCHARSET); + } else { + SetChar(_nc_wacs[m], table[n].value[0], A_NORMAL); + } - T(("#%d, SetChar(%c, %#04x) = %s", - n, m, - table[n].value[active], - _tracecchar_t(&_nc_wacs[m]))); + T(("#%d, width:%d SetChar(%c, %s) = %s", + n, wide, m, + _tracechar(table[n].value[active]), + _tracecchar_t(&_nc_wacs[m]))); + } } } diff --git a/deps/ncurses-5.9/ncurses/widechar/lib_wunctrl.c b/deps/ncurses-6.3/ncurses/widechar/lib_wunctrl.c similarity index 87% rename from deps/ncurses-5.9/ncurses/widechar/lib_wunctrl.c rename to deps/ncurses-6.3/ncurses/widechar/lib_wunctrl.c index 50958e4..155da22 100644 --- a/deps/ncurses-5.9/ncurses/widechar/lib_wunctrl.c +++ b/deps/ncurses-6.3/ncurses/widechar/lib_wunctrl.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2001-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2001-2011,2012 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 * @@ -35,14 +36,17 @@ #include <curses.priv.h> -MODULE_ID("$Id: lib_wunctrl.c,v 1.14 2010/12/19 01:42:15 tom Exp $") +MODULE_ID("$Id: lib_wunctrl.c,v 1.17 2020/02/02 23:34:34 tom Exp $") NCURSES_EXPORT(wchar_t *) NCURSES_SP_NAME(wunctrl) (NCURSES_SP_DCLx cchar_t *wc) { static wchar_t str[CCHARW_MAX + 1], *wsp; + wchar_t *result; - if (Charable(*wc)) { + if (wc == 0) { + result = 0; + } else if (SP_PARM != 0 && Charable(*wc)) { const char *p = NCURSES_SP_NAME(unctrl) (NCURSES_SP_ARGx (unsigned) _nc_to_char((wint_t)CharOf(*wc))); @@ -51,9 +55,11 @@ NCURSES_SP_NAME(wunctrl) (NCURSES_SP_DCLx cchar_t *wc) *wsp++ = (wchar_t) _nc_to_widechar(*p); } *wsp = 0; - return str; - } else - return wc->chars; + result = str; + } else { + result = wc->chars; + } + return result; } #if NCURSES_SP_FUNCS diff --git a/deps/ncurses-6.3/ncurses/widechar/widechars.c b/deps/ncurses-6.3/ncurses/widechar/widechars.c new file mode 100644 index 0000000..d05ba98 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/widechar/widechars.c @@ -0,0 +1,153 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2012,2013 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. * + ****************************************************************************/ + +#include <curses.priv.h> + +#if USE_WIDEC_SUPPORT + +MODULE_ID("$Id: widechars.c,v 1.9 2020/08/29 16:22:03 juergen Exp $") + +#if (defined(_NC_WINDOWS)) && !defined(_NC_MSC) +/* + * MinGW has wide-character functions, but they do not work correctly. + */ + +int +_nc_mbtowc(wchar_t *pwc, const char *s, size_t n) +{ + int result; + int count; + int try; + + if (s != 0 && n != 0) { + /* + * MultiByteToWideChar() can decide to return more than one + * wide-character. We want only one. Ignore any trailing null, both + * in the initial count and in the conversion. + */ + count = 0; + for (try = 1; try <= (int) n; ++try) { + count = MultiByteToWideChar(CP_UTF8, + MB_ERR_INVALID_CHARS, + s, + try, + pwc, + 0); + TR(TRACE_BITS, ("...try %d:%d", try, count)); + if (count > 0) { + break; + } + } + if (count < 1 || count > 2) { + result = -1; + } else { + wchar_t actual[2]; + memset(&actual, 0, sizeof(actual)); + count = MultiByteToWideChar(CP_UTF8, + MB_ERR_INVALID_CHARS, + s, + try, + actual, + 2); + TR(TRACE_BITS, ("\twin32 ->%#x, %#x", actual[0], actual[1])); + *pwc = actual[0]; + if (actual[1] != 0) + result = -1; + else + result = try; + } + } else { + result = 0; + } + + return result; +} + +int +_nc_mblen(const char *s, size_t n) +{ + int result = -1; + int count; + wchar_t temp; + + if (s != 0 && n != 0) { + count = _nc_mbtowc(&temp, s, n); + if (count == 1) { + int check = WideCharToMultiByte(CP_UTF8, + 0, + &temp, + 1, + NULL, + 0, /* compute length only */ + NULL, + NULL); + TR(TRACE_BITS, ("\tcheck ->%d\n", check)); + if (check > 0 && (size_t) check <= n) { + result = check; + } + } + } else { + result = 0; + } + + return result; +} + +int __MINGW_NOTHROW +_nc_wctomb(char *s, wchar_t wc) +{ + int result; + int check; + + check = WideCharToMultiByte(CP_UTF8, + 0, + &wc, + 1, + NULL, + 0, /* compute length only */ + NULL, + NULL); + if (check > 0) { + result = WideCharToMultiByte(CP_UTF8, + 0, + &wc, + 1, + s, + check + 1, + NULL, + NULL); + } else { + result = -1; + } + return result; +} + +#endif /* _NC_WINDOWS */ + +#endif /* USE_WIDEC_SUPPORT */ diff --git a/deps/ncurses-5.9/ncurses/win32con/gettimeofday.c b/deps/ncurses-6.3/ncurses/win32con/gettimeofday.c similarity index 90% rename from deps/ncurses-5.9/ncurses/win32con/gettimeofday.c rename to deps/ncurses-6.3/ncurses/win32con/gettimeofday.c index e1ef340..94be7b5 100644 --- a/deps/ncurses-5.9/ncurses/win32con/gettimeofday.c +++ b/deps/ncurses-6.3/ncurses/win32con/gettimeofday.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2008-2010,2014 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 * @@ -26,17 +27,20 @@ * authorization. * ****************************************************************************/ +#ifdef WINVER +# undef WINVER +#endif #define WINVER 0x0501 #include <curses.priv.h> #include <windows.h> -MODULE_ID("$Id: gettimeofday.c,v 1.2 2010/01/16 15:18:51 tom Exp $") +MODULE_ID("$Id: gettimeofday.c,v 1.6 2020/07/11 21:03:53 tom Exp $") #define JAN1970 116444736000000000LL /* the value for 01/01/1970 00:00 */ -int +NCURSES_EXPORT(int) gettimeofday(struct timeval *tv, void *tz GCC_UNUSED) { union { diff --git a/deps/ncurses-5.9/ncurses/win32con/wcwidth.c b/deps/ncurses-6.3/ncurses/win32con/wcwidth.c similarity index 85% rename from deps/ncurses-5.9/ncurses/win32con/wcwidth.c rename to deps/ncurses-6.3/ncurses/win32con/wcwidth.c index cdef64a..5584366 100644 --- a/deps/ncurses-5.9/ncurses/win32con/wcwidth.c +++ b/deps/ncurses-6.3/ncurses/win32con/wcwidth.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2010 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ #include <curses.priv.h> -MODULE_ID("$Id: wcwidth.c,v 1.2 2010/08/07 20:52:43 tom Exp $") +MODULE_ID("$Id: wcwidth.c,v 1.4 2020/07/11 21:02:10 tom Exp $") #if USE_WIDEC_SUPPORT #define mk_wcwidth(ucs) _nc_wcwidth(ucs) @@ -35,10 +36,10 @@ MODULE_ID("$Id: wcwidth.c,v 1.2 2010/08/07 20:52:43 tom Exp $") #define mk_wcwidth_cjk(ucs) _nc_wcwidth_cjk(ucs) #define mk_wcswidth_cjk(pwcs, n) _nc_wcswidth_cjk(pwcs, n) -extern int mk_wcwidth(wchar_t); -extern int mk_wcswidth(const wchar_t *, size_t); -extern int mk_wcwidth_cjk(wchar_t); -extern int mk_wcswidth_cjk(const wchar_t *, size_t); +NCURSES_EXPORT(int) mk_wcwidth(wchar_t); +NCURSES_EXPORT(int) mk_wcswidth(const wchar_t *, size_t); +NCURSES_EXPORT(int) mk_wcwidth_cjk(wchar_t); +NCURSES_EXPORT(int) mk_wcswidth_cjk(const wchar_t *, size_t); #include <wcwidth.h> #else diff --git a/deps/ncurses-6.3/ncurses/win32con/win32_driver.c b/deps/ncurses-6.3/ncurses/win32con/win32_driver.c new file mode 100644 index 0000000..45aadf2 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/win32con/win32_driver.c @@ -0,0 +1,1221 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2008-2016,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 * + * and: Thomas E. Dickey * + ****************************************************************************/ + +/* + * TODO - improve screen-repainting performance, using implied wraparound to reduce write's + * TODO - make it optional whether screen is restored or not when non-buffered + */ + +#include <curses.priv.h> +#ifdef _NC_WINDOWS +#if (defined(__MINGW32__) || defined(__MINGW64__)) +#include <wchar.h> +#else +#include <tchar.h> +#endif +#include <io.h> + +#define CUR TerminalType(my_term). + +MODULE_ID("$Id: win32_driver.c,v 1.2 2020/11/21 23:35:56 tom Exp $") + +#define WINMAGIC NCDRV_MAGIC(NCDRV_WINCONSOLE) +#define EXP_OPTIMIZE 0 + +static bool console_initialized = FALSE; + +#define AssertTCB() assert(TCB != 0 && (TCB->magic == WINMAGIC)) +#define validateConsoleHandle() (AssertTCB() , console_initialized ||\ + (console_initialized=\ + _nc_console_checkinit(TRUE,FALSE))) +#define SetSP() assert(TCB->csp != 0); sp = TCB->csp; (void) sp +#define AdjustY() (WINCONSOLE.buffered ?\ + 0 : (int) WINCONSOLE.SBI.srWindow.Top) +#define RevAttr(attr) (WORD) (((attr) & 0xff00) | \ + ((((attr) & 0x07) << 4) | \ + (((attr) & 0x70) >> 4))) + +#if USE_WIDEC_SUPPORT +#define write_screen WriteConsoleOutputW +#define read_screen ReadConsoleOutputW +#else +#define write_screen WriteConsoleOutput +#define read_screen ReadConsoleOutput +#endif + +static WORD +MapAttr(WORD res, attr_t ch) +{ + if (ch & A_COLOR) { + int p; + + p = PairNumber(ch); + if (p > 0 && p < CON_NUMPAIRS) { + WORD a; + a = WINCONSOLE.pairs[p]; + res = (WORD) ((res & 0xff00) | a); + } + } + + if (ch & A_REVERSE) { + res = RevAttr(res); + } + + if (ch & A_STANDOUT) { + res = RevAttr(res) | BACKGROUND_INTENSITY; + } + + if (ch & A_BOLD) + res |= FOREGROUND_INTENSITY; + + if (ch & A_DIM) + res |= BACKGROUND_INTENSITY; + + return res; +} + +#if 0 /* def TRACE */ +static void +dump_screen(const char *fn, int ln) +{ + int max_cells = (WINCONSOLE.SBI.dwSize.Y * + (1 + WINCONSOLE.SBI.dwSize.X)) + 1; + char output[max_cells]; + CHAR_INFO save_screen[max_cells]; + COORD save_size; + SMALL_RECT save_region; + COORD bufferCoord; + + T(("dump_screen %s@%d", fn, ln)); + + save_region.Top = WINCONSOLE.SBI.srWindow.Top; + save_region.Left = WINCONSOLE.SBI.srWindow.Left; + save_region.Bottom = WINCONSOLE.SBI.srWindow.Bottom; + save_region.Right = WINCONSOLE.SBI.srWindow.Right; + + save_size.X = (SHORT) (save_region.Right - save_region.Left + 1); + save_size.Y = (SHORT) (save_region.Bottom - save_region.Top + 1); + + bufferCoord.X = bufferCoord.Y = 0; + + if (read_screen(WINCONSOLE.hdl, + save_screen, + save_size, + bufferCoord, + &save_region)) { + int i, j; + int ij = 0; + int k = 0; + + for (i = save_region.Top; i <= save_region.Bottom; ++i) { + for (j = save_region.Left; j <= save_region.Right; ++j) { + output[k++] = save_screen[ij++].Char.AsciiChar; + } + output[k++] = '\n'; + } + output[k] = 0; + + T(("DUMP: %d,%d - %d,%d", + save_region.Top, + save_region.Left, + save_region.Bottom, + save_region.Right)); + T(("%s", output)); + } +} + +#else +#define dump_screen(fn,ln) /* nothing */ +#endif + +#if USE_WIDEC_SUPPORT +/* + * TODO: support surrogate pairs + * TODO: support combining characters + * TODO: support acsc + * TODO: _nc_wacs should be part of sp. + */ +static BOOL +con_write16(TERMINAL_CONTROL_BLOCK * TCB, + int y, int x, cchar_t *str, int limit) +{ + int actual = 0; + CHAR_INFO *ci = TypeAlloca(CHAR_INFO, limit); + COORD loc, siz; + SMALL_RECT rec; + int i; + cchar_t ch; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + for (i = actual = 0; i < limit; i++) { + ch = str[i]; + if (isWidecExt(ch)) + continue; + ci[actual].Char.UnicodeChar = CharOf(ch); + ci[actual].Attributes = MapAttr(WINCONSOLE.SBI.wAttributes, + AttrOf(ch)); + if (AttrOf(ch) & A_ALTCHARSET) { + if (_nc_wacs) { + int which = CharOf(ch); + if (which > 0 + && which < ACS_LEN + && CharOf(_nc_wacs[which]) != 0) { + ci[actual].Char.UnicodeChar = CharOf(_nc_wacs[which]); + } else { + ci[actual].Char.UnicodeChar = ' '; + } + } + } + ++actual; + } + + loc.X = (SHORT) 0; + loc.Y = (SHORT) 0; + siz.X = (SHORT) actual; + siz.Y = 1; + + rec.Left = (SHORT) x; + rec.Top = (SHORT) (y + AdjustY()); + rec.Right = (SHORT) (x + limit - 1); + rec.Bottom = rec.Top; + + return write_screen(WINCONSOLE.hdl, ci, siz, loc, &rec); +} +#define con_write(tcb, y, x, str, n) con_write16(tcb, y, x, str, n) +#else +static BOOL +con_write8(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n) +{ + CHAR_INFO *ci = TypeAlloca(CHAR_INFO, n); + COORD loc, siz; + SMALL_RECT rec; + int i; + chtype ch; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + for (i = 0; i < n; i++) { + ch = str[i]; + ci[i].Char.AsciiChar = ChCharOf(ch); + ci[i].Attributes = MapAttr(WINCONSOLE.SBI.wAttributes, + ChAttrOf(ch)); + if (ChAttrOf(ch) & A_ALTCHARSET) { + if (sp->_acs_map) + ci[i].Char.AsciiChar = + ChCharOf(NCURSES_SP_NAME(_nc_acs_char) (sp, ChCharOf(ch))); + } + } + + loc.X = (short) 0; + loc.Y = (short) 0; + siz.X = (short) n; + siz.Y = 1; + + rec.Left = (short) x; + rec.Top = (short) y; + rec.Right = (short) (x + n - 1); + rec.Bottom = rec.Top; + + return write_screen(WINCONSOLE.hdl, ci, siz, loc, &rec); +} +#define con_write(tcb, y, x, str, n) con_write8(tcb, y, x, str, n) +#endif + +#if EXP_OPTIMIZE +/* + * Comparing new/current screens, determine the last column-index for a change + * beginning on the given row,col position. Unlike a serial terminal, there is + * no cost for "moving" the "cursor" on the line as we update it. + */ +static int +find_end_of_change(SCREEN *sp, int row, int col) +{ + int result = col; + struct ldat *curdat = CurScreen(sp)->_line + row; + struct ldat *newdat = NewScreen(sp)->_line + row; + + while (col <= newdat->lastchar) { +#if USE_WIDEC_SUPPORT + if (isWidecExt(curdat->text[col]) || + isWidecExt(newdat->text[col])) { + result = col; + } else if (memcmp(&curdat->text[col], + &newdat->text[col], + sizeof(curdat->text[0]))) { + result = col; + } else { + break; + } +#else + if (curdat->text[col] != newdat->text[col]) { + result = col; + } else { + break; + } +#endif + ++col; + } + return result; +} + +/* + * Given a row,col position at the end of a change-chunk, look for the + * beginning of the next change-chunk. + */ +static int +find_next_change(SCREEN *sp, int row, int col) +{ + struct ldat *curdat = CurScreen(sp)->_line + row; + struct ldat *newdat = NewScreen(sp)->_line + row; + int result = newdat->lastchar + 1; + + while (++col <= newdat->lastchar) { +#if USE_WIDEC_SUPPORT + if (isWidecExt(curdat->text[col]) != + isWidecExt(newdat->text[col])) { + result = col; + break; + } else if (memcmp(&curdat->text[col], + &newdat->text[col], + sizeof(curdat->text[0]))) { + result = col; + break; + } +#else + if (curdat->text[col] != newdat->text[col]) { + result = col; + break; + } +#endif + } + return result; +} + +#define EndChange(first) \ + find_end_of_change(sp, y, first) +#define NextChange(last) \ + find_next_change(sp, y, last) + +#endif /* EXP_OPTIMIZE */ + +#define MARK_NOCHANGE(win,row) \ + win->_line[row].firstchar = _NOCHANGE; \ + win->_line[row].lastchar = _NOCHANGE + +static bool +restore_original_screen(void) +{ + COORD bufferCoord; + bool result = FALSE; + SMALL_RECT save_region = WINCONSOLE.save_region; + + T(("... restoring %s", WINCONSOLE.window_only ? + "window" : "entire buffer")); + + bufferCoord.X = (SHORT) (WINCONSOLE.window_only ? + WINCONSOLE.SBI.srWindow.Left : 0); + bufferCoord.Y = (SHORT) (WINCONSOLE.window_only ? + WINCONSOLE.SBI.srWindow.Top : 0); + + if (write_screen(WINCONSOLE.hdl, + WINCONSOLE.save_screen, + WINCONSOLE.save_size, + bufferCoord, + &save_region)) { + result = TRUE; + mvcur(-1, -1, LINES - 2, 0); + T(("... restore original screen contents ok %dx%d (%d,%d - %d,%d)", + WINCONSOLE.save_size.Y, + WINCONSOLE.save_size.X, + save_region.Top, + save_region.Left, + save_region.Bottom, + save_region.Right)); + } else { + T(("... restore original screen contents err")); + } + return result; +} + +static const char * +wcon_name(TERMINAL_CONTROL_BLOCK * TCB) +{ + (void) TCB; + return "win32console"; +} + +static int +wcon_doupdate(TERMINAL_CONTROL_BLOCK * TCB) +{ + int result = ERR; + int y, nonempty, n, x0, x1, Width, Height; + SCREEN *sp; + + T((T_CALLED("win32con::wcon_doupdate(%p)"), TCB)); + if (validateConsoleHandle()) { + SetSP(); + + Width = screen_columns(sp); + Height = screen_lines(sp); + nonempty = min(Height, NewScreen(sp)->_maxy + 1); + + T(("... %dx%d clear cur:%d new:%d", + Height, Width, + CurScreen(sp)->_clear, + NewScreen(sp)->_clear)); + + if (SP_PARM->_endwin == ewSuspend) { + + T(("coming back from shell mode")); + NCURSES_SP_NAME(reset_prog_mode) (NCURSES_SP_ARG); + + NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_ARG); + NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_ARG); + SP_PARM->_mouse_resume(SP_PARM); + + SP_PARM->_endwin = ewRunning; + } + + if ((CurScreen(sp)->_clear || NewScreen(sp)->_clear)) { + int x; +#if USE_WIDEC_SUPPORT + cchar_t *empty = TypeAlloca(cchar_t, Width); + wchar_t blank[2] = + { + L' ', L'\0' + }; + + for (x = 0; x < Width; x++) + setcchar(&empty[x], blank, 0, 0, 0); +#else + chtype *empty = TypeAlloca(chtype, Width); + + for (x = 0; x < Width; x++) + empty[x] = ' '; +#endif + + for (y = 0; y < nonempty; y++) { + con_write(TCB, y, 0, empty, Width); + memcpy(empty, + CurScreen(sp)->_line[y].text, + (size_t) Width * sizeof(empty[0])); + } + CurScreen(sp)->_clear = FALSE; + NewScreen(sp)->_clear = FALSE; + touchwin(NewScreen(sp)); + T(("... cleared %dx%d lines @%d of screen", nonempty, Width, + AdjustY())); + } + + for (y = 0; y < nonempty; y++) { + x0 = NewScreen(sp)->_line[y].firstchar; + if (x0 != _NOCHANGE) { +#if EXP_OPTIMIZE + int x2; + int limit = NewScreen(sp)->_line[y].lastchar; + while ((x1 = EndChange(x0)) <= limit) { + while ((x2 = NextChange(x1)) <= + limit && x2 <= (x1 + 2)) { + x1 = x2; + } + n = x1 - x0 + 1; + memcpy(&CurScreen(sp)->_line[y].text[x0], + &NewScreen(sp)->_line[y].text[x0], + n * sizeof(CurScreen(sp)->_line[y].text[x0])); + con_write(TCB, + y, + x0, + &CurScreen(sp)->_line[y].text[x0], n); + x0 = NextChange(x1); + } + + /* mark line changed successfully */ + if (y <= NewScreen(sp)->_maxy) { + MARK_NOCHANGE(NewScreen(sp), y); + } + if (y <= CurScreen(sp)->_maxy) { + MARK_NOCHANGE(CurScreen(sp), y); + } +#else + x1 = NewScreen(sp)->_line[y].lastchar; + n = x1 - x0 + 1; + if (n > 0) { + memcpy(&CurScreen(sp)->_line[y].text[x0], + &NewScreen(sp)->_line[y].text[x0], + (size_t) n * + sizeof(CurScreen(sp)->_line[y].text[x0])); + con_write(TCB, + y, + x0, + &CurScreen(sp)->_line[y].text[x0], n); + + /* mark line changed successfully */ + if (y <= NewScreen(sp)->_maxy) { + MARK_NOCHANGE(NewScreen(sp), y); + } + if (y <= CurScreen(sp)->_maxy) { + MARK_NOCHANGE(CurScreen(sp), y); + } + } +#endif + } + } + + /* put everything back in sync */ + for (y = nonempty; y <= NewScreen(sp)->_maxy; y++) { + MARK_NOCHANGE(NewScreen(sp), y); + } + for (y = nonempty; y <= CurScreen(sp)->_maxy; y++) { + MARK_NOCHANGE(CurScreen(sp), y); + } + + if (!NewScreen(sp)->_leaveok) { + CurScreen(sp)->_curx = NewScreen(sp)->_curx; + CurScreen(sp)->_cury = NewScreen(sp)->_cury; + + TCB->drv->td_hwcur(TCB, + 0, + 0, + CurScreen(sp)->_cury, + CurScreen(sp)->_curx); + } + _nc_console_selectActiveHandle(); + result = OK; + } + returnCode(result); +} + +static bool +wcon_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, + const char *tname, + int *errret GCC_UNUSED) +{ + bool code = FALSE; + + T((T_CALLED("win32con::wcon_CanHandle(%p)"), TCB)); + + assert((TCB != 0) && (tname != 0)); + + TCB->magic = WINMAGIC; + + if (tname == 0 || *tname == 0) { + if (!_nc_console_vt_supported()) + code = TRUE; + } else if (tname != 0 && *tname == '#') { + /* + * Use "#" (a character which cannot begin a terminal's name) to + * select specific driver from the table. + * + * In principle, we could have more than one non-terminfo driver, + * e.g., "win32gui". + */ + size_t n = strlen(tname + 1); + if (n != 0 + && ((strncmp(tname + 1, "win32console", n) == 0) + || (strncmp(tname + 1, "win32con", n) == 0))) { + code = TRUE; + } + } else if (tname != 0 && stricmp(tname, "unknown") == 0) { + code = TRUE; + } + + /* + * This is intentional, to avoid unnecessary breakage of applications + * using <term.h> symbols. + */ + if (code && (TerminalType(&TCB->term).Booleans == 0)) { + _nc_init_termtype(&TerminalType(&TCB->term)); +#if NCURSES_EXT_NUMBERS + _nc_export_termtype2(&TCB->term.type, &TerminalType(&TCB->term)); +#endif + } + + if (!code) { + if (_nc_console_test(0)) { + T(("isTermInfoConsole=TRUE")); + WINCONSOLE.isTermInfoConsole = TRUE; + } + } + returnBool(code); +} + +static int +wcon_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, + int beepFlag) +{ + SCREEN *sp; + int res = ERR; + + int high = (WINCONSOLE.SBI.srWindow.Bottom - + WINCONSOLE.SBI.srWindow.Top + 1); + int wide = (WINCONSOLE.SBI.srWindow.Right - + WINCONSOLE.SBI.srWindow.Left + 1); + int max_cells = (high * wide); + int i; + + CHAR_INFO *this_screen = TypeAlloca(CHAR_INFO, max_cells); + CHAR_INFO *that_screen = TypeAlloca(CHAR_INFO, max_cells); + COORD this_size; + SMALL_RECT this_region; + COORD bufferCoord; + + if (validateConsoleHandle()) { + SetSP(); + this_region.Top = WINCONSOLE.SBI.srWindow.Top; + this_region.Left = WINCONSOLE.SBI.srWindow.Left; + this_region.Bottom = WINCONSOLE.SBI.srWindow.Bottom; + this_region.Right = WINCONSOLE.SBI.srWindow.Right; + + this_size.X = (SHORT) wide; + this_size.Y = (SHORT) high; + + bufferCoord.X = this_region.Left; + bufferCoord.Y = this_region.Top; + + if (!beepFlag && + read_screen(WINCONSOLE.hdl, + this_screen, + this_size, + bufferCoord, + &this_region)) { + + memcpy(that_screen, + this_screen, + sizeof(CHAR_INFO) * (size_t) max_cells); + + for (i = 0; i < max_cells; i++) { + that_screen[i].Attributes = + RevAttr(that_screen[i].Attributes); + } + + write_screen(WINCONSOLE.hdl, that_screen, this_size, + bufferCoord, &this_region); + Sleep(200); + write_screen(WINCONSOLE.hdl, this_screen, this_size, + bufferCoord, &this_region); + + } else { + MessageBeep(MB_ICONWARNING); /* MB_OK might be better */ + } + res = OK; + } + return res; +} + +static int +wcon_print(TERMINAL_CONTROL_BLOCK * TCB, + char *data GCC_UNUSED, + int len GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); + + return ERR; +} + +static int +wcon_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB, + int fg GCC_UNUSED, + int bg GCC_UNUSED) +{ + SCREEN *sp; + int code = ERR; + + AssertTCB(); + SetSP(); + + return (code); +} + +static void +wcon_setcolor(TERMINAL_CONTROL_BLOCK * TCB, + int fore, + int color, + int (*outc) (SCREEN *, int) GCC_UNUSED) +{ + (void) TCB; + if (validateConsoleHandle()) { + WORD a = _nc_console_MapColor(fore, color); + a |= (WORD) ((WINCONSOLE.SBI.wAttributes) & (fore ? 0xfff8 : 0xff8f)); + SetConsoleTextAttribute(WINCONSOLE.hdl, a); + _nc_console_get_SBI(); + } +} + +static bool +wcon_rescol(TERMINAL_CONTROL_BLOCK * TCB) +{ + bool res = FALSE; + + (void) TCB; + if (validateConsoleHandle()) { + WORD a = FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN; + SetConsoleTextAttribute(WINCONSOLE.hdl, a); + _nc_console_get_SBI(); + res = TRUE; + } + return res; +} + +static bool +wcon_rescolors(TERMINAL_CONTROL_BLOCK * TCB) +{ + int result = FALSE; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + return result; +} + +static int +wcon_size(TERMINAL_CONTROL_BLOCK * TCB, int *Lines, int *Cols) +{ + int result = ERR; + + T((T_CALLED("win32con::wcon_size(%p)"), TCB)); + + if (validateConsoleHandle() && + (Lines != NULL) && (Cols != NULL)) { + _nc_console_size(Lines, Cols); + result = OK; + } + returnCode(result); +} + +static int +wcon_setsize(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, + int l GCC_UNUSED, + int c GCC_UNUSED) +{ + AssertTCB(); + return ERR; +} + +static int +wcon_sgmode(TERMINAL_CONTROL_BLOCK * TCB, int setFlag, TTY * buf) +{ + int result = ERR; + + T((T_CALLED("win32con::wcon_sgmode(TCB=(%p),setFlag=%d,TTY=(%p)"), + TCB, setFlag, buf)); + if (buf != NULL && validateConsoleHandle()) { + + if (setFlag) { + _nc_console_setmode(WINCONSOLE.hdl, buf); + TCB->term.Nttyb = *buf; + } else { + _nc_console_getmode(WINCONSOLE.hdl, &(TCB->term.Nttyb)); + *buf = TCB->term.Nttyb; + } + result = OK; + } + returnCode(result); +} + +#define MIN_WIDE 80 +#define MIN_HIGH 24 + +static int +wcon_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag) +{ + SCREEN *sp; + TERMINAL *_term = (TERMINAL *) TCB; + int code = ERR; + + if (validateConsoleHandle()) { + sp = TCB->csp; + + T((T_CALLED("win32con::wcon_mode(%p, progFlag=%d, defFlag=%d)"), + TCB, progFlag, defFlag)); + + WINCONSOLE.progMode = progFlag; + WINCONSOLE.lastOut = progFlag ? WINCONSOLE.hdl : WINCONSOLE.out; + SetConsoleActiveScreenBuffer(WINCONSOLE.lastOut); + + if (progFlag) /* prog mode */ { + if (defFlag) { + if ((wcon_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) { + code = OK; + } + } else { + /* reset_prog_mode */ + if (wcon_sgmode(TCB, TRUE, &(_term->Nttyb)) == OK) { + if (sp) { + if (sp->_keypad_on) + _nc_keypad(sp, TRUE); + } + if (!WINCONSOLE.buffered) { + _nc_console_set_scrollback(FALSE, &WINCONSOLE.SBI); + } + code = OK; + } + } + T(("... buffered:%d, clear:%d", + WINCONSOLE.buffered, CurScreen(sp)->_clear)); + } else { /* shell mode */ + if (defFlag) { + /* def_shell_mode */ + if (wcon_sgmode(TCB, FALSE, &(_term->Ottyb)) == OK) { + code = OK; + } + } else { + /* reset_shell_mode */ + if (sp) { + _nc_keypad(sp, FALSE); + NCURSES_SP_NAME(_nc_flush) (sp); + } + code = wcon_sgmode(TCB, TRUE, &(_term->Ottyb)); + if (!WINCONSOLE.buffered) { + _nc_console_set_scrollback(TRUE, &WINCONSOLE.save_SBI); + if (!restore_original_screen()) + code = ERR; + } + SetConsoleCursorInfo(WINCONSOLE.hdl, &WINCONSOLE.save_CI); + } + } + + } + returnCode(code); +} + +static void +wcon_screen_init(SCREEN *sp GCC_UNUSED) +{ +} + +static void +wcon_wrap(SCREEN *sp GCC_UNUSED) +{ +} + +static void +wcon_release(TERMINAL_CONTROL_BLOCK * TCB) +{ + T((T_CALLED("win32con::wcon_release(%p)"), TCB)); + + AssertTCB(); + if (TCB->prop) + free(TCB->prop); + + returnVoid; +} + +static void +wcon_init(TERMINAL_CONTROL_BLOCK * TCB) +{ + T((T_CALLED("win32con::wcon_init(%p)"), TCB)); + + AssertTCB(); + + if (!(console_initialized = _nc_console_checkinit(TRUE, FALSE))) { + returnVoid; + } + + if (TCB) { + TCB->info.initcolor = TRUE; + TCB->info.canchange = FALSE; + TCB->info.hascolor = TRUE; + TCB->info.caninit = TRUE; + + TCB->info.maxpairs = CON_NUMPAIRS; + TCB->info.maxcolors = 8; + TCB->info.numlabels = 0; + TCB->info.labelwidth = 0; + TCB->info.labelheight = 0; + TCB->info.nocolorvideo = 1; + TCB->info.tabsize = 8; + + TCB->info.numbuttons = WINCONSOLE.numButtons; + TCB->info.defaultPalette = _nc_cga_palette; + + } + returnVoid; +} + +static void +wcon_initpair(TERMINAL_CONTROL_BLOCK * TCB, + int pair, + int f, + int b) +{ + SCREEN *sp; + + if (validateConsoleHandle()) { + SetSP(); + + if ((pair > 0) && (pair < CON_NUMPAIRS) && (f >= 0) && (f < 8) + && (b >= 0) && (b < 8)) { + WINCONSOLE.pairs[pair] = + _nc_console_MapColor(true, f) | + _nc_console_MapColor(false, b); + } + } +} + +static void +wcon_initcolor(TERMINAL_CONTROL_BLOCK * TCB, + int color GCC_UNUSED, + int r GCC_UNUSED, + int g GCC_UNUSED, + int b GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_do_color(TERMINAL_CONTROL_BLOCK * TCB, + int old_pair GCC_UNUSED, + int pair GCC_UNUSED, + int reverse GCC_UNUSED, + int (*outc) (SCREEN *, int) GCC_UNUSED +) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_initmouse(TERMINAL_CONTROL_BLOCK * TCB) +{ + SCREEN *sp; + + if (validateConsoleHandle()) { + SetSP(); + + sp->_mouse_type = M_TERM_DRIVER; + } +} + +static int +wcon_testmouse(TERMINAL_CONTROL_BLOCK * TCB, + int delay + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + int rc = 0; + SCREEN *sp; + + if (validateConsoleHandle()) { + SetSP(); + + if (sp->_drv_mouse_head < sp->_drv_mouse_tail) { + rc = TW_MOUSE; + } else { + rc = TCBOf(sp)->drv->td_twait(TCBOf(sp), + TWAIT_MASK, + delay, + (int *) 0 + EVENTLIST_2nd(evl)); + } + } + + return rc; +} + +static int +wcon_mvcur(TERMINAL_CONTROL_BLOCK * TCB, + int yold GCC_UNUSED, int xold GCC_UNUSED, + int y, int x) +{ + int ret = ERR; + + (void) TCB; + if (validateConsoleHandle()) { + COORD loc; + loc.X = (short) x; + loc.Y = (short) (y + AdjustY()); + SetConsoleCursorPosition(WINCONSOLE.hdl, loc); + ret = OK; + } + return ret; +} + +static void +wcon_hwlabel(TERMINAL_CONTROL_BLOCK * TCB, + int labnum GCC_UNUSED, + char *text GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, + int OnFlag GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static chtype +wcon_conattr(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED) +{ + chtype res = A_NORMAL; + res |= (A_BOLD | A_DIM | A_REVERSE | A_STANDOUT | A_COLOR); + return res; +} + +static void +wcon_setfilter(TERMINAL_CONTROL_BLOCK * TCB) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_initacs(TERMINAL_CONTROL_BLOCK * TCB, + chtype *real_map GCC_UNUSED, + chtype *fake_map GCC_UNUSED) +{ +#define DATA(a,b) { a, b } + static struct { + int acs_code; + int use_code; + } table[] = { + DATA('a', 0xb1), /* ACS_CKBOARD */ + DATA('f', 0xf8), /* ACS_DEGREE */ + DATA('g', 0xf1), /* ACS_PLMINUS */ + DATA('j', 0xd9), /* ACS_LRCORNER */ + DATA('l', 0xda), /* ACS_ULCORNER */ + DATA('k', 0xbf), /* ACS_URCORNER */ + DATA('m', 0xc0), /* ACS_LLCORNER */ + DATA('n', 0xc5), /* ACS_PLUS */ + DATA('q', 0xc4), /* ACS_HLINE */ + DATA('t', 0xc3), /* ACS_LTEE */ + DATA('u', 0xb4), /* ACS_RTEE */ + DATA('v', 0xc1), /* ACS_BTEE */ + DATA('w', 0xc2), /* ACS_TTEE */ + DATA('x', 0xb3), /* ACS_VLINE */ + DATA('y', 0xf3), /* ACS_LEQUAL */ + DATA('z', 0xf2), /* ACS_GEQUAL */ + DATA('0', 0xdb), /* ACS_BLOCK */ + DATA('{', 0xe3), /* ACS_PI */ + DATA('}', 0x9c), /* ACS_STERLING */ + DATA(',', 0xae), /* ACS_LARROW */ + DATA('+', 0xaf), /* ACS_RARROW */ + DATA('~', 0xf9), /* ACS_BULLET */ + }; +#undef DATA + unsigned n; + + SCREEN *sp; + if (validateConsoleHandle()) { + SetSP(); + + for (n = 0; n < SIZEOF(table); ++n) { + real_map[table[n].acs_code] = + (chtype) table[n].use_code | A_ALTCHARSET; + if (sp != 0) + sp->_screen_acs_map[table[n].acs_code] = TRUE; + } + } +} + +static int +wcon_twait(TERMINAL_CONTROL_BLOCK * TCB, + int mode, + int milliseconds, + int *timeleft + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + SCREEN *sp; + int code = 0; + + if (validateConsoleHandle()) { + SetSP(); + + code = _nc_console_twait(sp, + WINCONSOLE.inp, + mode, + milliseconds, + timeleft EVENTLIST_2nd(evl)); + } + return code; +} + +static int +wcon_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf) +{ + SCREEN *sp; + int n = -1; + + T((T_CALLED("win32con::wcon_read(%p)"), TCB)); + + assert(buf); + if (validateConsoleHandle()) { + SetSP(); + + n = _nc_console_read(sp, WINCONSOLE.inp, buf); + } + returnCode(n); +} + +static int +wcon_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms) +{ + T((T_CALLED("win32con::wcon_nap(%p, %d)"), TCB, ms)); + Sleep((DWORD) ms); + returnCode(OK); +} + +static int +wcon_cursorSet(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int mode) +{ + int res = -1; + + T((T_CALLED("win32con:wcon_cursorSet(%d)"), mode)); + if (validateConsoleHandle()) { + CONSOLE_CURSOR_INFO this_CI = WINCONSOLE.save_CI; + switch (mode) { + case 0: + this_CI.bVisible = FALSE; + break; + case 1: + break; + case 2: + this_CI.dwSize = 100; + break; + } + SetConsoleCursorInfo(WINCONSOLE.hdl, &this_CI); + } + returnCode(res); +} + +static bool +wcon_kyExist(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int keycode) +{ + bool found = FALSE; + + T((T_CALLED("win32con::wcon_kyExist(%d)"), keycode)); + found = _nc_console_keyExist(keycode); + returnBool(found); +} + +static int +wcon_kpad(TERMINAL_CONTROL_BLOCK * TCB, int flag GCC_UNUSED) +{ + SCREEN *sp; + int code = ERR; + + T((T_CALLED("win32con::wcon_kpad(%p, %d)"), TCB, flag)); + + if (validateConsoleHandle()) { + SetSP(); + + if (sp) { + code = OK; + } + } + returnCode(code); +} + +static int +wcon_keyok(TERMINAL_CONTROL_BLOCK * TCB, + int keycode, + int flag) +{ + int code = ERR; + SCREEN *sp; + + T((T_CALLED("win32con::wcon_keyok(%p, %d, %d)"), TCB, keycode, flag)); + + if (validateConsoleHandle()) { + SetSP(); + if (sp) { + code = _nc_console_keyok(keycode, flag); + } + } + returnCode(code); +} + +NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_WIN_DRIVER = { + FALSE, + wcon_name, /* Name */ + wcon_CanHandle, /* CanHandle */ + wcon_init, /* init */ + wcon_release, /* release */ + wcon_size, /* size */ + wcon_sgmode, /* sgmode */ + wcon_conattr, /* conattr */ + wcon_mvcur, /* hwcur */ + wcon_mode, /* mode */ + wcon_rescol, /* rescol */ + wcon_rescolors, /* rescolors */ + wcon_setcolor, /* color */ + wcon_dobeepflash, /* DoBeepFlash */ + wcon_initpair, /* initpair */ + wcon_initcolor, /* initcolor */ + wcon_do_color, /* docolor */ + wcon_initmouse, /* initmouse */ + wcon_testmouse, /* testmouse */ + wcon_setfilter, /* setfilter */ + wcon_hwlabel, /* hwlabel */ + wcon_hwlabelOnOff, /* hwlabelOnOff */ + wcon_doupdate, /* update */ + wcon_defaultcolors, /* defaultcolors */ + wcon_print, /* print */ + wcon_size, /* getsize */ + wcon_setsize, /* setsize */ + wcon_initacs, /* initacs */ + wcon_screen_init, /* scinit */ + wcon_wrap, /* scexit */ + wcon_twait, /* twait */ + wcon_read, /* read */ + wcon_nap, /* nap */ + wcon_kpad, /* kpad */ + wcon_keyok, /* kyOk */ + wcon_kyExist, /* kyExist */ + wcon_cursorSet /* cursorSet */ +}; + +#endif /* _NC_WINDOWS */ diff --git a/deps/ncurses-6.3/ncurses/win32con/win_driver.c b/deps/ncurses-6.3/ncurses/win32con/win_driver.c new file mode 100644 index 0000000..ad9e629 --- /dev/null +++ b/deps/ncurses-6.3/ncurses/win32con/win_driver.c @@ -0,0 +1,2275 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2008-2016,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 * + * and: Thomas E. Dickey * + ****************************************************************************/ + +/* + * TODO - GetMousePos(POINT * result) from ntconio.c + * TODO - implement nodelay + * TODO - improve screen-repainting performance, using implied wraparound to reduce write's + * TODO - make it optional whether screen is restored or not when non-buffered + */ + +#include <curses.priv.h> + +#ifdef _WIN32 +#include <tchar.h> +#else +#include <windows.h> +#include <wchar.h> +#endif + +#include <io.h> + +#define PSAPI_VERSION 2 +#include <psapi.h> + +#define CUR TerminalType(my_term). + +MODULE_ID("$Id: win_driver.c,v 1.67 2021/09/04 10:54:35 tom Exp $") + +#define TypeAlloca(type,count) (type*) _alloca(sizeof(type) * (size_t) (count)) + +#define WINMAGIC NCDRV_MAGIC(NCDRV_WINCONSOLE) + +#define EXP_OPTIMIZE 0 + +#define array_length(a) (sizeof(a)/sizeof(a[0])) + +static bool InitConsole(void); +static bool okConsoleHandle(TERMINAL_CONTROL_BLOCK *); + +#define AssertTCB() assert(TCB != 0 && (TCB->magic == WINMAGIC)) +#define SetSP() assert(TCB->csp != 0); sp = TCB->csp; (void) sp + +#define GenMap(vKey,key) MAKELONG(key, vKey) + +#define AdjustY() (CON.buffered ? 0 : (int) CON.SBI.srWindow.Top) + +#if USE_WIDEC_SUPPORT +#define write_screen WriteConsoleOutputW +#define read_screen ReadConsoleOutputW +#else +#define write_screen WriteConsoleOutput +#define read_screen ReadConsoleOutput +#endif + +static const LONG keylist[] = +{ + GenMap(VK_PRIOR, KEY_PPAGE), + GenMap(VK_NEXT, KEY_NPAGE), + GenMap(VK_END, KEY_END), + GenMap(VK_HOME, KEY_HOME), + GenMap(VK_LEFT, KEY_LEFT), + GenMap(VK_UP, KEY_UP), + GenMap(VK_RIGHT, KEY_RIGHT), + GenMap(VK_DOWN, KEY_DOWN), + GenMap(VK_DELETE, KEY_DC), + GenMap(VK_INSERT, KEY_IC) +}; +static const LONG ansi_keys[] = +{ + GenMap(VK_PRIOR, 'I'), + GenMap(VK_NEXT, 'Q'), + GenMap(VK_END, 'O'), + GenMap(VK_HOME, 'H'), + GenMap(VK_LEFT, 'K'), + GenMap(VK_UP, 'H'), + GenMap(VK_RIGHT, 'M'), + GenMap(VK_DOWN, 'P'), + GenMap(VK_DELETE, 'S'), + GenMap(VK_INSERT, 'R') +}; +#define N_INI ((int)array_length(keylist)) +#define FKEYS 24 +#define MAPSIZE (FKEYS + N_INI) +#define NUMPAIRS 64 + +/* A process can only have a single console, so it is safe + to maintain all the information about it in a single + static structure. + */ +static struct { + BOOL initialized; + BOOL buffered; + BOOL window_only; + BOOL progMode; + BOOL isMinTTY; + BOOL isTermInfoConsole; + HANDLE out; + HANDLE inp; + HANDLE hdl; + HANDLE lastOut; + int numButtons; + DWORD ansi_map[MAPSIZE]; + DWORD map[MAPSIZE]; + DWORD rmap[MAPSIZE]; + WORD pairs[NUMPAIRS]; + COORD origin; + CHAR_INFO *save_screen; + COORD save_size; + SMALL_RECT save_region; + CONSOLE_SCREEN_BUFFER_INFO SBI; + CONSOLE_SCREEN_BUFFER_INFO save_SBI; + CONSOLE_CURSOR_INFO save_CI; +} CON; + +static BOOL console_initialized = FALSE; + +static WORD +MapColor(bool fore, int color) +{ + static const int _cmap[] = + {0, 4, 2, 6, 1, 5, 3, 7}; + int a; + if (color < 0 || color > 7) + a = fore ? 7 : 0; + else + a = _cmap[color]; + if (!fore) + a = a << 4; + return (WORD) a; +} + +#define RevAttr(attr) \ + (WORD) (((attr) & 0xff00) | \ + ((((attr) & 0x07) << 4) | \ + (((attr) & 0x70) >> 4))) + +static WORD +MapAttr(WORD res, attr_t ch) +{ + if (ch & A_COLOR) { + int p; + + p = PairNumber(ch); + if (p > 0 && p < NUMPAIRS) { + WORD a; + a = CON.pairs[p]; + res = (WORD) ((res & 0xff00) | a); + } + } + + if (ch & A_REVERSE) { + res = RevAttr(res); + } + + if (ch & A_STANDOUT) { + res = RevAttr(res) | BACKGROUND_INTENSITY; + } + + if (ch & A_BOLD) + res |= FOREGROUND_INTENSITY; + + if (ch & A_DIM) + res |= BACKGROUND_INTENSITY; + + return res; +} + +#if 0 /* def TRACE */ +static void +dump_screen(const char *fn, int ln) +{ + int max_cells = (CON.SBI.dwSize.Y * (1 + CON.SBI.dwSize.X)) + 1; + char output[max_cells]; + CHAR_INFO save_screen[max_cells]; + COORD save_size; + SMALL_RECT save_region; + COORD bufferCoord; + + T(("dump_screen %s@%d", fn, ln)); + + save_region.Top = CON.SBI.srWindow.Top; + save_region.Left = CON.SBI.srWindow.Left; + save_region.Bottom = CON.SBI.srWindow.Bottom; + save_region.Right = CON.SBI.srWindow.Right; + + save_size.X = (SHORT) (save_region.Right - save_region.Left + 1); + save_size.Y = (SHORT) (save_region.Bottom - save_region.Top + 1); + + bufferCoord.X = bufferCoord.Y = 0; + + if (read_screen(CON.hdl, + save_screen, + save_size, + bufferCoord, + &save_region)) { + int i, j; + int ij = 0; + int k = 0; + + for (i = save_region.Top; i <= save_region.Bottom; ++i) { + for (j = save_region.Left; j <= save_region.Right; ++j) { + output[k++] = save_screen[ij++].Char.AsciiChar; + } + output[k++] = '\n'; + } + output[k] = 0; + + T(("DUMP: %d,%d - %d,%d", + save_region.Top, + save_region.Left, + save_region.Bottom, + save_region.Right)); + T(("%s", output)); + } +} + +#else +#define dump_screen(fn,ln) /* nothing */ +#endif + +#if USE_WIDEC_SUPPORT +/* + * TODO: support surrogate pairs + * TODO: support combining characters + * TODO: support acsc + * TODO: _nc_wacs should be part of sp. + */ +static BOOL +con_write16(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, cchar_t *str, int limit) +{ + int actual = 0; + CHAR_INFO *ci = TypeAlloca(CHAR_INFO, limit); + COORD loc, siz; + SMALL_RECT rec; + int i; + cchar_t ch; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + for (i = actual = 0; i < limit; i++) { + ch = str[i]; + if (isWidecExt(ch)) + continue; + ci[actual].Char.UnicodeChar = CharOf(ch); + ci[actual].Attributes = MapAttr(CON.SBI.wAttributes, + AttrOf(ch)); + if (AttrOf(ch) & A_ALTCHARSET) { + if (_nc_wacs) { + int which = CharOf(ch); + if (which > 0 + && which < ACS_LEN + && CharOf(_nc_wacs[which]) != 0) { + ci[actual].Char.UnicodeChar = CharOf(_nc_wacs[which]); + } else { + ci[actual].Char.UnicodeChar = ' '; + } + } + } + ++actual; + } + + loc.X = (SHORT) 0; + loc.Y = (SHORT) 0; + siz.X = (SHORT) actual; + siz.Y = 1; + + rec.Left = (SHORT) x; + rec.Top = (SHORT) (y + AdjustY()); + rec.Right = (SHORT) (x + limit - 1); + rec.Bottom = rec.Top; + + return write_screen(CON.hdl, ci, siz, loc, &rec); +} +#define con_write(tcb, y, x, str, n) con_write16(tcb, y, x, str, n) +#else +static BOOL +con_write8(TERMINAL_CONTROL_BLOCK * TCB, int y, int x, chtype *str, int n) +{ + CHAR_INFO *ci = TypeAlloca(CHAR_INFO, n); + COORD loc, siz; + SMALL_RECT rec; + int i; + chtype ch; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + for (i = 0; i < n; i++) { + ch = str[i]; + ci[i].Char.AsciiChar = ChCharOf(ch); + ci[i].Attributes = MapAttr(CON.SBI.wAttributes, + ChAttrOf(ch)); + if (ChAttrOf(ch) & A_ALTCHARSET) { + if (sp->_acs_map) + ci[i].Char.AsciiChar = + ChCharOf(NCURSES_SP_NAME(_nc_acs_char) (sp, ChCharOf(ch))); + } + } + + loc.X = (short) 0; + loc.Y = (short) 0; + siz.X = (short) n; + siz.Y = 1; + + rec.Left = (short) x; + rec.Top = (short) y; + rec.Right = (short) (x + n - 1); + rec.Bottom = rec.Top; + + return write_screen(CON.hdl, ci, siz, loc, &rec); +} +#define con_write(tcb, y, x, str, n) con_write8(tcb, y, x, str, n) +#endif + +#if EXP_OPTIMIZE +/* + * Comparing new/current screens, determine the last column-index for a change + * beginning on the given row,col position. Unlike a serial terminal, there is + * no cost for "moving" the "cursor" on the line as we update it. + */ +static int +find_end_of_change(SCREEN *sp, int row, int col) +{ + int result = col; + struct ldat *curdat = CurScreen(sp)->_line + row; + struct ldat *newdat = NewScreen(sp)->_line + row; + + while (col <= newdat->lastchar) { +#if USE_WIDEC_SUPPORT + if (isWidecExt(curdat->text[col]) || isWidecExt(newdat->text[col])) { + result = col; + } else if (memcmp(&curdat->text[col], + &newdat->text[col], + sizeof(curdat->text[0]))) { + result = col; + } else { + break; + } +#else + if (curdat->text[col] != newdat->text[col]) { + result = col; + } else { + break; + } +#endif + ++col; + } + return result; +} + +/* + * Given a row,col position at the end of a change-chunk, look for the + * beginning of the next change-chunk. + */ +static int +find_next_change(SCREEN *sp, int row, int col) +{ + struct ldat *curdat = CurScreen(sp)->_line + row; + struct ldat *newdat = NewScreen(sp)->_line + row; + int result = newdat->lastchar + 1; + + while (++col <= newdat->lastchar) { +#if USE_WIDEC_SUPPORT + if (isWidecExt(curdat->text[col]) != isWidecExt(newdat->text[col])) { + result = col; + break; + } else if (memcmp(&curdat->text[col], + &newdat->text[col], + sizeof(curdat->text[0]))) { + result = col; + break; + } +#else + if (curdat->text[col] != newdat->text[col]) { + result = col; + break; + } +#endif + } + return result; +} + +#define EndChange(first) \ + find_end_of_change(sp, y, first) +#define NextChange(last) \ + find_next_change(sp, y, last) + +#endif /* EXP_OPTIMIZE */ + +#define MARK_NOCHANGE(win,row) \ + win->_line[row].firstchar = _NOCHANGE; \ + win->_line[row].lastchar = _NOCHANGE + +static void +selectActiveHandle(void) +{ + if (CON.lastOut != CON.hdl) { + CON.lastOut = CON.hdl; + SetConsoleActiveScreenBuffer(CON.lastOut); + } +} + +static bool +restore_original_screen(void) +{ + COORD bufferCoord; + bool result = FALSE; + SMALL_RECT save_region = CON.save_region; + + T(("... restoring %s", CON.window_only ? "window" : "entire buffer")); + + bufferCoord.X = (SHORT) (CON.window_only ? CON.SBI.srWindow.Left : 0); + bufferCoord.Y = (SHORT) (CON.window_only ? CON.SBI.srWindow.Top : 0); + + if (write_screen(CON.hdl, + CON.save_screen, + CON.save_size, + bufferCoord, + &save_region)) { + result = TRUE; + mvcur(-1, -1, LINES - 2, 0); + T(("... restore original screen contents ok %dx%d (%d,%d - %d,%d)", + CON.save_size.Y, + CON.save_size.X, + save_region.Top, + save_region.Left, + save_region.Bottom, + save_region.Right)); + } else { + T(("... restore original screen contents err")); + } + return result; +} + +static const char * +wcon_name(TERMINAL_CONTROL_BLOCK * TCB) +{ + (void) TCB; + return "win32console"; +} + +static int +wcon_doupdate(TERMINAL_CONTROL_BLOCK * TCB) +{ + int result = ERR; + int y, nonempty, n, x0, x1, Width, Height; + SCREEN *sp; + + T((T_CALLED("win32con::wcon_doupdate(%p)"), TCB)); + if (okConsoleHandle(TCB)) { + SetSP(); + + Width = screen_columns(sp); + Height = screen_lines(sp); + nonempty = min(Height, NewScreen(sp)->_maxy + 1); + + T(("... %dx%d clear cur:%d new:%d", + Height, Width, + CurScreen(sp)->_clear, + NewScreen(sp)->_clear)); + + if (SP_PARM->_endwin == ewSuspend) { + + T(("coming back from shell mode")); + NCURSES_SP_NAME(reset_prog_mode) (NCURSES_SP_ARG); + + NCURSES_SP_NAME(_nc_mvcur_resume) (NCURSES_SP_ARG); + NCURSES_SP_NAME(_nc_screen_resume) (NCURSES_SP_ARG); + SP_PARM->_mouse_resume(SP_PARM); + + SP_PARM->_endwin = ewRunning; + } + + if ((CurScreen(sp)->_clear || NewScreen(sp)->_clear)) { + int x; +#if USE_WIDEC_SUPPORT + cchar_t *empty = TypeAlloca(cchar_t, Width); + wchar_t blank[2] = + { + L' ', L'\0' + }; + + for (x = 0; x < Width; x++) + setcchar(&empty[x], blank, 0, 0, 0); +#else + chtype *empty = TypeAlloca(chtype, Width); + + for (x = 0; x < Width; x++) + empty[x] = ' '; +#endif + + for (y = 0; y < nonempty; y++) { + con_write(TCB, y, 0, empty, Width); + memcpy(empty, + CurScreen(sp)->_line[y].text, + (size_t) Width * sizeof(empty[0])); + } + CurScreen(sp)->_clear = FALSE; + NewScreen(sp)->_clear = FALSE; + touchwin(NewScreen(sp)); + T(("... cleared %dx%d lines @%d of screen", nonempty, Width, + AdjustY())); + } + + for (y = 0; y < nonempty; y++) { + x0 = NewScreen(sp)->_line[y].firstchar; + if (x0 != _NOCHANGE) { +#if EXP_OPTIMIZE + int x2; + int limit = NewScreen(sp)->_line[y].lastchar; + while ((x1 = EndChange(x0)) <= limit) { + while ((x2 = NextChange(x1)) <= limit && x2 <= (x1 + 2)) { + x1 = x2; + } + n = x1 - x0 + 1; + memcpy(&CurScreen(sp)->_line[y].text[x0], + &NewScreen(sp)->_line[y].text[x0], + n * sizeof(CurScreen(sp)->_line[y].text[x0])); + con_write(TCB, + y, + x0, + &CurScreen(sp)->_line[y].text[x0], n); + x0 = NextChange(x1); + } + + /* mark line changed successfully */ + if (y <= NewScreen(sp)->_maxy) { + MARK_NOCHANGE(NewScreen(sp), y); + } + if (y <= CurScreen(sp)->_maxy) { + MARK_NOCHANGE(CurScreen(sp), y); + } +#else + x1 = NewScreen(sp)->_line[y].lastchar; + n = x1 - x0 + 1; + if (n > 0) { + memcpy(&CurScreen(sp)->_line[y].text[x0], + &NewScreen(sp)->_line[y].text[x0], + (size_t) n * sizeof(CurScreen(sp)->_line[y].text[x0])); + con_write(TCB, + y, + x0, + &CurScreen(sp)->_line[y].text[x0], n); + + /* mark line changed successfully */ + if (y <= NewScreen(sp)->_maxy) { + MARK_NOCHANGE(NewScreen(sp), y); + } + if (y <= CurScreen(sp)->_maxy) { + MARK_NOCHANGE(CurScreen(sp), y); + } + } +#endif + } + } + + /* put everything back in sync */ + for (y = nonempty; y <= NewScreen(sp)->_maxy; y++) { + MARK_NOCHANGE(NewScreen(sp), y); + } + for (y = nonempty; y <= CurScreen(sp)->_maxy; y++) { + MARK_NOCHANGE(CurScreen(sp), y); + } + + if (!NewScreen(sp)->_leaveok) { + CurScreen(sp)->_curx = NewScreen(sp)->_curx; + CurScreen(sp)->_cury = NewScreen(sp)->_cury; + + TCB->drv->td_hwcur(TCB, + 0, 0, + CurScreen(sp)->_cury, CurScreen(sp)->_curx); + } + selectActiveHandle(); + result = OK; + } + returnCode(result); +} + +static bool +wcon_CanHandle(TERMINAL_CONTROL_BLOCK * TCB, + const char *tname, + int *errret GCC_UNUSED) +{ + bool code = FALSE; + + T((T_CALLED("win32con::wcon_CanHandle(%p)"), TCB)); + + assert((TCB != 0) && (tname != 0)); + + TCB->magic = WINMAGIC; + + if (tname == 0 || *tname == 0) + code = TRUE; + else if (tname != 0 && *tname == '#') { + /* + * Use "#" (a character which cannot begin a terminal's name) to + * select specific driver from the table. + * + * In principle, we could have more than one non-terminfo driver, + * e.g., "win32gui". + */ + size_t n = strlen(tname + 1); + if (n != 0 + && ((strncmp(tname + 1, "win32console", n) == 0) + || (strncmp(tname + 1, "win32con", n) == 0))) { + code = TRUE; + } + } else if (tname != 0 && stricmp(tname, "unknown") == 0) { + code = TRUE; + } + + /* + * This is intentional, to avoid unnecessary breakage of applications + * using <term.h> symbols. + */ + if (code && (TerminalType(&TCB->term).Booleans == 0)) { + _nc_init_termtype(&TerminalType(&TCB->term)); +#if NCURSES_EXT_NUMBERS + _nc_export_termtype2(&TCB->term.type, &TerminalType(&TCB->term)); +#endif + } + + if (!code) { + if (_nc_mingw_isconsole(0)) + CON.isTermInfoConsole = TRUE; + } + returnBool(code); +} + +static int +wcon_dobeepflash(TERMINAL_CONTROL_BLOCK * TCB, + int beepFlag) +{ + SCREEN *sp; + int res = ERR; + + int high = (CON.SBI.srWindow.Bottom - CON.SBI.srWindow.Top + 1); + int wide = (CON.SBI.srWindow.Right - CON.SBI.srWindow.Left + 1); + int max_cells = (high * wide); + int i; + + CHAR_INFO *this_screen = TypeAlloca(CHAR_INFO, max_cells); + CHAR_INFO *that_screen = TypeAlloca(CHAR_INFO, max_cells); + COORD this_size; + SMALL_RECT this_region; + COORD bufferCoord; + + if (okConsoleHandle(TCB)) { + SetSP(); + this_region.Top = CON.SBI.srWindow.Top; + this_region.Left = CON.SBI.srWindow.Left; + this_region.Bottom = CON.SBI.srWindow.Bottom; + this_region.Right = CON.SBI.srWindow.Right; + + this_size.X = (SHORT) wide; + this_size.Y = (SHORT) high; + + bufferCoord.X = this_region.Left; + bufferCoord.Y = this_region.Top; + + if (!beepFlag && + read_screen(CON.hdl, + this_screen, + this_size, + bufferCoord, + &this_region)) { + + memcpy(that_screen, + this_screen, + sizeof(CHAR_INFO) * (size_t) max_cells); + + for (i = 0; i < max_cells; i++) { + that_screen[i].Attributes = RevAttr(that_screen[i].Attributes); + } + + write_screen(CON.hdl, that_screen, this_size, bufferCoord, &this_region); + Sleep(200); + write_screen(CON.hdl, this_screen, this_size, bufferCoord, &this_region); + + } else { + MessageBeep(MB_ICONWARNING); /* MB_OK might be better */ + } + res = OK; + } + return res; +} + +static int +wcon_print(TERMINAL_CONTROL_BLOCK * TCB, + char *data GCC_UNUSED, + int len GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); + + return ERR; +} + +static int +wcon_defaultcolors(TERMINAL_CONTROL_BLOCK * TCB, + int fg GCC_UNUSED, + int bg GCC_UNUSED) +{ + SCREEN *sp; + int code = ERR; + + AssertTCB(); + SetSP(); + + return (code); +} + +static bool +get_SBI(void) +{ + bool rc = FALSE; + if (GetConsoleScreenBufferInfo(CON.hdl, &(CON.SBI))) { + T(("GetConsoleScreenBufferInfo")); + T(("... buffer(X:%d Y:%d)", + CON.SBI.dwSize.X, + CON.SBI.dwSize.Y)); + T(("... window(X:%d Y:%d)", + CON.SBI.dwMaximumWindowSize.X, + CON.SBI.dwMaximumWindowSize.Y)); + T(("... cursor(X:%d Y:%d)", + CON.SBI.dwCursorPosition.X, + CON.SBI.dwCursorPosition.Y)); + T(("... display(Top:%d Bottom:%d Left:%d Right:%d)", + CON.SBI.srWindow.Top, + CON.SBI.srWindow.Bottom, + CON.SBI.srWindow.Left, + CON.SBI.srWindow.Right)); + if (CON.buffered) { + CON.origin.X = 0; + CON.origin.Y = 0; + } else { + CON.origin.X = CON.SBI.srWindow.Left; + CON.origin.Y = CON.SBI.srWindow.Top; + } + rc = TRUE; + } else { + T(("GetConsoleScreenBufferInfo ERR")); + } + return rc; +} + +static void +wcon_setcolor(TERMINAL_CONTROL_BLOCK * TCB, + int fore, + int color, + int (*outc) (SCREEN *, int) GCC_UNUSED) +{ + if (okConsoleHandle(TCB)) { + WORD a = MapColor(fore, color); + a |= (WORD) ((CON.SBI.wAttributes) & (fore ? 0xfff8 : 0xff8f)); + SetConsoleTextAttribute(CON.hdl, a); + get_SBI(); + } +} + +static bool +wcon_rescol(TERMINAL_CONTROL_BLOCK * TCB) +{ + bool res = FALSE; + + if (okConsoleHandle(TCB)) { + WORD a = FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_GREEN; + SetConsoleTextAttribute(CON.hdl, a); + get_SBI(); + res = TRUE; + } + return res; +} + +static bool +wcon_rescolors(TERMINAL_CONTROL_BLOCK * TCB) +{ + int result = FALSE; + SCREEN *sp; + + AssertTCB(); + SetSP(); + + return result; +} + +static int +wcon_size(TERMINAL_CONTROL_BLOCK * TCB, int *Lines, int *Cols) +{ + int result = ERR; + + T((T_CALLED("win32con::wcon_size(%p)"), TCB)); + + if (okConsoleHandle(TCB) && + Lines != NULL && + Cols != NULL) { + if (CON.buffered) { + *Lines = (int) (CON.SBI.dwSize.Y); + *Cols = (int) (CON.SBI.dwSize.X); + } else { + *Lines = (int) (CON.SBI.srWindow.Bottom + 1 - + CON.SBI.srWindow.Top); + *Cols = (int) (CON.SBI.srWindow.Right + 1 - + CON.SBI.srWindow.Left); + } + result = OK; + } + returnCode(result); +} + +static int +wcon_setsize(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, + int l GCC_UNUSED, + int c GCC_UNUSED) +{ + AssertTCB(); + return ERR; +} + +static int +wcon_sgmode(TERMINAL_CONTROL_BLOCK * TCB, int setFlag, TTY * buf) +{ + DWORD dwFlag = 0; + tcflag_t iflag; + tcflag_t lflag; + int result = ERR; + + if (buf != NULL && okConsoleHandle(TCB)) { + + if (setFlag) { + iflag = buf->c_iflag; + lflag = buf->c_lflag; + + GetConsoleMode(CON.inp, &dwFlag); + + if (lflag & ICANON) + dwFlag |= ENABLE_LINE_INPUT; + else + dwFlag &= (DWORD) (~ENABLE_LINE_INPUT); + + if (lflag & ECHO) + dwFlag |= ENABLE_ECHO_INPUT; + else + dwFlag &= (DWORD) (~ENABLE_ECHO_INPUT); + + if (iflag & BRKINT) + dwFlag |= ENABLE_PROCESSED_INPUT; + else + dwFlag &= (DWORD) (~ENABLE_PROCESSED_INPUT); + + dwFlag |= ENABLE_MOUSE_INPUT; + + buf->c_iflag = iflag; + buf->c_lflag = lflag; + SetConsoleMode(CON.inp, dwFlag); + TCB->term.Nttyb = *buf; + } else { + iflag = TCB->term.Nttyb.c_iflag; + lflag = TCB->term.Nttyb.c_lflag; + GetConsoleMode(CON.inp, &dwFlag); + + if (dwFlag & ENABLE_LINE_INPUT) + lflag |= ICANON; + else + lflag &= (tcflag_t) (~ICANON); + + if (dwFlag & ENABLE_ECHO_INPUT) + lflag |= ECHO; + else + lflag &= (tcflag_t) (~ECHO); + + if (dwFlag & ENABLE_PROCESSED_INPUT) + iflag |= BRKINT; + else + iflag &= (tcflag_t) (~BRKINT); + + TCB->term.Nttyb.c_iflag = iflag; + TCB->term.Nttyb.c_lflag = lflag; + + *buf = TCB->term.Nttyb; + } + result = OK; + } + return result; +} + +#define MIN_WIDE 80 +#define MIN_HIGH 24 + +/* + * In "normal" mode, reset the buffer- and window-sizes back to their original values. + */ +static void +set_scrollback(bool normal, CONSOLE_SCREEN_BUFFER_INFO * info) +{ + SMALL_RECT rect; + COORD coord; + bool changed = FALSE; + + T((T_CALLED("win32con::set_scrollback(%s)"), + (normal + ? "normal" + : "application"))); + + T(("... SBI.srWindow %d,%d .. %d,%d", + info->srWindow.Top, + info->srWindow.Left, + info->srWindow.Bottom, + info->srWindow.Right)); + T(("... SBI.dwSize %dx%d", + info->dwSize.Y, + info->dwSize.X)); + + if (normal) { + rect = info->srWindow; + coord = info->dwSize; + if (memcmp(info, &CON.SBI, sizeof(*info)) != 0) { + changed = TRUE; + CON.SBI = *info; + } + } else { + int high = info->srWindow.Bottom - info->srWindow.Top + 1; + int wide = info->srWindow.Right - info->srWindow.Left + 1; + + if (high < MIN_HIGH) { + T(("... height %d < %d", high, MIN_HIGH)); + high = MIN_HIGH; + changed = TRUE; + } + if (wide < MIN_WIDE) { + T(("... width %d < %d", wide, MIN_WIDE)); + wide = MIN_WIDE; + changed = TRUE; + } + + rect.Left = + rect.Top = 0; + rect.Right = (SHORT) (wide - 1); + rect.Bottom = (SHORT) (high - 1); + + coord.X = (SHORT) wide; + coord.Y = (SHORT) high; + + if (info->dwSize.Y != high || + info->dwSize.X != wide || + info->srWindow.Top != 0 || + info->srWindow.Left != 0) { + changed = TRUE; + } + + } + + if (changed) { + T(("... coord %d,%d", coord.Y, coord.X)); + T(("... rect %d,%d - %d,%d", + rect.Top, rect.Left, + rect.Bottom, rect.Right)); + SetConsoleScreenBufferSize(CON.hdl, coord); /* dwSize */ + SetConsoleWindowInfo(CON.hdl, TRUE, &rect); /* srWindow */ + get_SBI(); + } + returnVoid; +} + +static int +wcon_mode(TERMINAL_CONTROL_BLOCK * TCB, int progFlag, int defFlag) +{ + SCREEN *sp; + TERMINAL *_term = (TERMINAL *) TCB; + int code = ERR; + + if (okConsoleHandle(TCB)) { + sp = TCB->csp; + + T((T_CALLED("win32con::wcon_mode(%p, prog=%d, def=%d)"), + TCB, progFlag, defFlag)); + + CON.progMode = progFlag; + CON.lastOut = progFlag ? CON.hdl : CON.out; + SetConsoleActiveScreenBuffer(CON.lastOut); + + if (progFlag) /* prog mode */ { + if (defFlag) { + if ((wcon_sgmode(TCB, FALSE, &(_term->Nttyb)) == OK)) { + _term->Nttyb.c_oflag &= (tcflag_t) (~OFLAGS_TABS); + code = OK; + } + } else { + /* reset_prog_mode */ + if (wcon_sgmode(TCB, TRUE, &(_term->Nttyb)) == OK) { + if (sp) { + if (sp->_keypad_on) + _nc_keypad(sp, TRUE); + } + if (!CON.buffered) { + set_scrollback(FALSE, &CON.SBI); + } + code = OK; + } + } + T(("... buffered:%d, clear:%d", CON.buffered, CurScreen(sp)->_clear)); + } else { /* shell mode */ + if (defFlag) { + /* def_shell_mode */ + if (wcon_sgmode(TCB, FALSE, &(_term->Ottyb)) == OK) { + code = OK; + } + } else { + /* reset_shell_mode */ + if (sp) { + _nc_keypad(sp, FALSE); + NCURSES_SP_NAME(_nc_flush) (sp); + } + code = wcon_sgmode(TCB, TRUE, &(_term->Ottyb)); + if (!CON.buffered) { + set_scrollback(TRUE, &CON.save_SBI); + if (!restore_original_screen()) + code = ERR; + } + SetConsoleCursorInfo(CON.hdl, &CON.save_CI); + } + } + + } + returnCode(code); +} + +static void +wcon_screen_init(SCREEN *sp GCC_UNUSED) +{ +} + +static void +wcon_wrap(SCREEN *sp GCC_UNUSED) +{ +} + +static int +rkeycompare(const void *el1, const void *el2) +{ + WORD key1 = (LOWORD((*((const LONG *) el1)))) & 0x7fff; + WORD key2 = (LOWORD((*((const LONG *) el2)))) & 0x7fff; + + return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1)); +} + +static int +keycompare(const void *el1, const void *el2) +{ + WORD key1 = HIWORD((*((const LONG *) el1))); + WORD key2 = HIWORD((*((const LONG *) el2))); + + return ((key1 < key2) ? -1 : ((key1 == key2) ? 0 : 1)); +} + +static int +MapKey(WORD vKey) +{ + WORD nKey = 0; + void *res; + LONG key = GenMap(vKey, 0); + int code = -1; + + res = bsearch(&key, + CON.map, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + keycompare); + if (res) { + key = *((LONG *) res); + nKey = LOWORD(key); + code = (int) (nKey & 0x7fff); + if (nKey & 0x8000) + code = -code; + } + return code; +} + +static int +AnsiKey(WORD vKey) +{ + WORD nKey = 0; + void *res; + LONG key = GenMap(vKey, 0); + int code = -1; + + res = bsearch(&key, + CON.ansi_map, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + keycompare); + if (res) { + key = *((LONG *) res); + nKey = LOWORD(key); + code = (int) (nKey & 0x7fff); + if (nKey & 0x8000) + code = -code; + } + return code; +} + +static void +wcon_release(TERMINAL_CONTROL_BLOCK * TCB) +{ + T((T_CALLED("win32con::wcon_release(%p)"), TCB)); + + AssertTCB(); + if (TCB->prop) + free(TCB->prop); + + returnVoid; +} + +static bool +read_screen_data(void) +{ + bool result = FALSE; + COORD bufferCoord; + size_t want; + + CON.save_size.X = (SHORT) (CON.save_region.Right + - CON.save_region.Left + 1); + CON.save_size.Y = (SHORT) (CON.save_region.Bottom + - CON.save_region.Top + 1); + + want = (size_t) (CON.save_size.X * CON.save_size.Y); + + if ((CON.save_screen = malloc(want * sizeof(CHAR_INFO))) != 0) { + bufferCoord.X = (SHORT) (CON.window_only ? CON.SBI.srWindow.Left : 0); + bufferCoord.Y = (SHORT) (CON.window_only ? CON.SBI.srWindow.Top : 0); + + T(("... reading console %s %dx%d into %d,%d - %d,%d at %d,%d", + CON.window_only ? "window" : "buffer", + CON.save_size.Y, CON.save_size.X, + CON.save_region.Top, + CON.save_region.Left, + CON.save_region.Bottom, + CON.save_region.Right, + bufferCoord.Y, + bufferCoord.X)); + + if (read_screen(CON.hdl, + CON.save_screen, + CON.save_size, + bufferCoord, + &CON.save_region)) { + result = TRUE; + } else { + T((" error %#lx", (unsigned long) GetLastError())); + FreeAndNull(CON.save_screen); + } + } + + return result; +} + +/* + * Attempt to save the screen contents. PDCurses does this if + * PDC_RESTORE_SCREEN is set, giving the same visual appearance on + * restoration as if the library had allocated a console buffer. MSDN + * says that the data which can be read is limited to 64Kb (and may be + * less). + */ +static bool +save_original_screen(void) +{ + bool result = FALSE; + + CON.save_region.Top = 0; + CON.save_region.Left = 0; + CON.save_region.Bottom = (SHORT) (CON.SBI.dwSize.Y - 1); + CON.save_region.Right = (SHORT) (CON.SBI.dwSize.X - 1); + + if (read_screen_data()) { + result = TRUE; + } else { + + CON.save_region.Top = CON.SBI.srWindow.Top; + CON.save_region.Left = CON.SBI.srWindow.Left; + CON.save_region.Bottom = CON.SBI.srWindow.Bottom; + CON.save_region.Right = CON.SBI.srWindow.Right; + + CON.window_only = TRUE; + + if (read_screen_data()) { + result = TRUE; + } + } + + T(("... save original screen contents %s", result ? "ok" : "err")); + return result; +} + +static void +wcon_init(TERMINAL_CONTROL_BLOCK * TCB) +{ + T((T_CALLED("win32con::wcon_init(%p)"), TCB)); + + AssertTCB(); + + if (TCB) { + if (!InitConsole()) { + returnVoid; + } + + TCB->info.initcolor = TRUE; + TCB->info.canchange = FALSE; + TCB->info.hascolor = TRUE; + TCB->info.caninit = TRUE; + + TCB->info.maxpairs = NUMPAIRS; + TCB->info.maxcolors = 8; + TCB->info.numlabels = 0; + TCB->info.labelwidth = 0; + TCB->info.labelheight = 0; + TCB->info.nocolorvideo = 1; + TCB->info.tabsize = 8; + + TCB->info.numbuttons = CON.numButtons; + TCB->info.defaultPalette = _nc_cga_palette; + + } + returnVoid; +} + +static void +wcon_initpair(TERMINAL_CONTROL_BLOCK * TCB, + int pair, + int f, + int b) +{ + SCREEN *sp; + + if (okConsoleHandle(TCB)) { + SetSP(); + + if ((pair > 0) && (pair < NUMPAIRS) && (f >= 0) && (f < 8) + && (b >= 0) && (b < 8)) { + CON.pairs[pair] = MapColor(true, f) | MapColor(false, b); + } + } +} + +static void +wcon_initcolor(TERMINAL_CONTROL_BLOCK * TCB, + int color GCC_UNUSED, + int r GCC_UNUSED, + int g GCC_UNUSED, + int b GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_do_color(TERMINAL_CONTROL_BLOCK * TCB, + int old_pair GCC_UNUSED, + int pair GCC_UNUSED, + int reverse GCC_UNUSED, + int (*outc) (SCREEN *, int) GCC_UNUSED +) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_initmouse(TERMINAL_CONTROL_BLOCK * TCB) +{ + SCREEN *sp; + + if (okConsoleHandle(TCB)) { + SetSP(); + + sp->_mouse_type = M_TERM_DRIVER; + } +} + +static int +wcon_testmouse(TERMINAL_CONTROL_BLOCK * TCB, + int delay + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + int rc = 0; + SCREEN *sp; + + if (okConsoleHandle(TCB)) { + SetSP(); + + if (sp->_drv_mouse_head < sp->_drv_mouse_tail) { + rc = TW_MOUSE; + } else { + rc = TCBOf(sp)->drv->td_twait(TCBOf(sp), + TWAIT_MASK, + delay, + (int *) 0 + EVENTLIST_2nd(evl)); + } + } + + return rc; +} + +static int +wcon_mvcur(TERMINAL_CONTROL_BLOCK * TCB, + int yold GCC_UNUSED, int xold GCC_UNUSED, + int y, int x) +{ + int ret = ERR; + if (okConsoleHandle(TCB)) { + COORD loc; + loc.X = (short) x; + loc.Y = (short) (y + AdjustY()); + SetConsoleCursorPosition(CON.hdl, loc); + ret = OK; + } + return ret; +} + +static void +wcon_hwlabel(TERMINAL_CONTROL_BLOCK * TCB, + int labnum GCC_UNUSED, + char *text GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_hwlabelOnOff(TERMINAL_CONTROL_BLOCK * TCB, + int OnFlag GCC_UNUSED) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static chtype +wcon_conattr(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED) +{ + chtype res = A_NORMAL; + res |= (A_BOLD | A_DIM | A_REVERSE | A_STANDOUT | A_COLOR); + return res; +} + +static void +wcon_setfilter(TERMINAL_CONTROL_BLOCK * TCB) +{ + SCREEN *sp; + + AssertTCB(); + SetSP(); +} + +static void +wcon_initacs(TERMINAL_CONTROL_BLOCK * TCB, + chtype *real_map GCC_UNUSED, + chtype *fake_map GCC_UNUSED) +{ +#define DATA(a,b) { a, b } + static struct { + int acs_code; + int use_code; + } table[] = { + DATA('a', 0xb1), /* ACS_CKBOARD */ + DATA('f', 0xf8), /* ACS_DEGREE */ + DATA('g', 0xf1), /* ACS_PLMINUS */ + DATA('j', 0xd9), /* ACS_LRCORNER */ + DATA('l', 0xda), /* ACS_ULCORNER */ + DATA('k', 0xbf), /* ACS_URCORNER */ + DATA('m', 0xc0), /* ACS_LLCORNER */ + DATA('n', 0xc5), /* ACS_PLUS */ + DATA('q', 0xc4), /* ACS_HLINE */ + DATA('t', 0xc3), /* ACS_LTEE */ + DATA('u', 0xb4), /* ACS_RTEE */ + DATA('v', 0xc1), /* ACS_BTEE */ + DATA('w', 0xc2), /* ACS_TTEE */ + DATA('x', 0xb3), /* ACS_VLINE */ + DATA('y', 0xf3), /* ACS_LEQUAL */ + DATA('z', 0xf2), /* ACS_GEQUAL */ + DATA('0', 0xdb), /* ACS_BLOCK */ + DATA('{', 0xe3), /* ACS_PI */ + DATA('}', 0x9c), /* ACS_STERLING */ + DATA(',', 0xae), /* ACS_LARROW */ + DATA('+', 0xaf), /* ACS_RARROW */ + DATA('~', 0xf9), /* ACS_BULLET */ + }; +#undef DATA + unsigned n; + + SCREEN *sp; + if (okConsoleHandle(TCB)) { + SetSP(); + + for (n = 0; n < SIZEOF(table); ++n) { + real_map[table[n].acs_code] = (chtype) table[n].use_code | A_ALTCHARSET; + if (sp != 0) + sp->_screen_acs_map[table[n].acs_code] = TRUE; + } + } +} + +static ULONGLONG +tdiff(FILETIME fstart, FILETIME fend) +{ + ULARGE_INTEGER ustart; + ULARGE_INTEGER uend; + ULONGLONG diff; + + ustart.LowPart = fstart.dwLowDateTime; + ustart.HighPart = fstart.dwHighDateTime; + uend.LowPart = fend.dwLowDateTime; + uend.HighPart = fend.dwHighDateTime; + + diff = (uend.QuadPart - ustart.QuadPart) / 10000; + return diff; +} + +static int +Adjust(int milliseconds, int diff) +{ + if (milliseconds != INFINITY) { + milliseconds -= diff; + if (milliseconds < 0) + milliseconds = 0; + } + return milliseconds; +} + +#define BUTTON_MASK (FROM_LEFT_1ST_BUTTON_PRESSED | \ + FROM_LEFT_2ND_BUTTON_PRESSED | \ + FROM_LEFT_3RD_BUTTON_PRESSED | \ + FROM_LEFT_4TH_BUTTON_PRESSED | \ + RIGHTMOST_BUTTON_PRESSED) + +static int +decode_mouse(SCREEN *sp, int mask) +{ + int result = 0; + + (void) sp; + assert(sp && console_initialized); + + if (mask & FROM_LEFT_1ST_BUTTON_PRESSED) + result |= BUTTON1_PRESSED; + if (mask & FROM_LEFT_2ND_BUTTON_PRESSED) + result |= BUTTON2_PRESSED; + if (mask & FROM_LEFT_3RD_BUTTON_PRESSED) + result |= BUTTON3_PRESSED; + if (mask & FROM_LEFT_4TH_BUTTON_PRESSED) + result |= BUTTON4_PRESSED; + + if (mask & RIGHTMOST_BUTTON_PRESSED) { + switch (CON.numButtons) { + case 1: + result |= BUTTON1_PRESSED; + break; + case 2: + result |= BUTTON2_PRESSED; + break; + case 3: + result |= BUTTON3_PRESSED; + break; + case 4: + result |= BUTTON4_PRESSED; + break; + } + } + + return result; +} + +static int +console_twait( + SCREEN *sp, + HANDLE fd, + int mode, + int milliseconds, + int *timeleft + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + INPUT_RECORD inp_rec; + BOOL b; + DWORD nRead = 0, rc = (DWORD) (-1); + int code = 0; + FILETIME fstart; + FILETIME fend; + int diff; + bool isImmed = (milliseconds == 0); + +#ifdef NCURSES_WGETCH_EVENTS + (void) evl; /* TODO: implement wgetch-events */ +#endif + +#define CONSUME() ReadConsoleInput(fd,&inp_rec,1,&nRead) + + assert(sp); + + TR(TRACE_IEVENT, ("start twait: %d milliseconds, mode: %d", + milliseconds, mode)); + + if (milliseconds < 0) + milliseconds = INFINITY; + + memset(&inp_rec, 0, sizeof(inp_rec)); + + while (true) { + GetSystemTimeAsFileTime(&fstart); + rc = WaitForSingleObject(fd, (DWORD) milliseconds); + GetSystemTimeAsFileTime(&fend); + diff = (int) tdiff(fstart, fend); + milliseconds = Adjust(milliseconds, diff); + + if (!isImmed && milliseconds <= 0) + break; + + if (rc == WAIT_OBJECT_0) { + if (mode) { + b = GetNumberOfConsoleInputEvents(fd, &nRead); + if (b && nRead > 0) { + b = PeekConsoleInput(fd, &inp_rec, 1, &nRead); + if (b && nRead > 0) { + switch (inp_rec.EventType) { + case KEY_EVENT: + if (mode & TW_INPUT) { + WORD vk = inp_rec.Event.KeyEvent.wVirtualKeyCode; + char ch = inp_rec.Event.KeyEvent.uChar.AsciiChar; + + if (inp_rec.Event.KeyEvent.bKeyDown) { + if (0 == ch) { + int nKey = MapKey(vk); + if (nKey < 0) { + CONSUME(); + continue; + } + } + code = TW_INPUT; + goto end; + } else { + CONSUME(); + } + } + continue; + case MOUSE_EVENT: + if (decode_mouse(sp, + (inp_rec.Event.MouseEvent.dwButtonState + & BUTTON_MASK)) == 0) { + CONSUME(); + } else if (mode & TW_MOUSE) { + code = TW_MOUSE; + goto end; + } + continue; + /* e.g., FOCUS_EVENT */ + default: + CONSUME(); + selectActiveHandle(); + continue; + } + } + } + } + continue; + } else { + if (rc != WAIT_TIMEOUT) { + code = -1; + break; + } else { + code = 0; + break; + } + } + } + end: + + TR(TRACE_IEVENT, ("end twait: returned %d (%d), remaining time %d msec", + code, errno, milliseconds)); + + if (timeleft) + *timeleft = milliseconds; + + return code; +} + +static int +wcon_twait(TERMINAL_CONTROL_BLOCK * TCB, + int mode, + int milliseconds, + int *timeleft + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + SCREEN *sp; + int code = 0; + + if (okConsoleHandle(TCB)) { + SetSP(); + + code = console_twait(sp, + CON.inp, + mode, + milliseconds, + timeleft EVENTLIST_2nd(evl)); + } + return code; +} + +static bool +handle_mouse(SCREEN *sp, MOUSE_EVENT_RECORD mer) +{ + MEVENT work; + bool result = FALSE; + + assert(sp); + + sp->_drv_mouse_old_buttons = sp->_drv_mouse_new_buttons; + sp->_drv_mouse_new_buttons = mer.dwButtonState & BUTTON_MASK; + + /* + * We're only interested if the button is pressed or released. + * FIXME: implement continuous event-tracking. + */ + if (sp->_drv_mouse_new_buttons != sp->_drv_mouse_old_buttons) { + + memset(&work, 0, sizeof(work)); + + if (sp->_drv_mouse_new_buttons) { + + work.bstate |= (mmask_t) decode_mouse(sp, sp->_drv_mouse_new_buttons); + + } else { + + /* cf: BUTTON_PRESSED, BUTTON_RELEASED */ + work.bstate |= (mmask_t) (decode_mouse(sp, + sp->_drv_mouse_old_buttons) + >> 1); + + result = TRUE; + } + + work.x = mer.dwMousePosition.X; + work.y = mer.dwMousePosition.Y - AdjustY(); + + sp->_drv_mouse_fifo[sp->_drv_mouse_tail] = work; + sp->_drv_mouse_tail += 1; + } + + return result; +} + +static int +wcon_read(TERMINAL_CONTROL_BLOCK * TCB, int *buf) +{ + SCREEN *sp; + int n = -1; + + T((T_CALLED("win32con::wcon_read(%p)"), TCB)); + + assert(buf); + if (okConsoleHandle(TCB)) { + SetSP(); + + n = _nc_mingw_console_read(sp, CON.inp, buf); + } + returnCode(n); +} + +static int +wcon_nap(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int ms) +{ + T((T_CALLED("win32con::wcon_nap(%p, %d)"), TCB, ms)); + Sleep((DWORD) ms); + returnCode(OK); +} + +static int +wcon_cursorSet(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int mode) +{ + int res = -1; + + T((T_CALLED("win32con:wcon_cursorSet(%d)"), mode)); + if (okConsoleHandle(TCB)) { + CONSOLE_CURSOR_INFO this_CI = CON.save_CI; + switch (mode) { + case 0: + this_CI.bVisible = FALSE; + break; + case 1: + break; + case 2: + this_CI.dwSize = 100; + break; + } + SetConsoleCursorInfo(CON.hdl, &this_CI); + } + returnCode(res); +} + +static bool +wcon_kyExist(TERMINAL_CONTROL_BLOCK * TCB GCC_UNUSED, int keycode) +{ + WORD nKey; + void *res; + bool found = FALSE; + LONG key = GenMap(0, (WORD) keycode); + + T((T_CALLED("win32con::wcon_kyExist(%d)"), keycode)); + res = bsearch(&key, + CON.rmap, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + rkeycompare); + if (res) { + key = *((LONG *) res); + nKey = LOWORD(key); + if (!(nKey & 0x8000)) + found = TRUE; + } + returnCode(found); +} + +static int +wcon_kpad(TERMINAL_CONTROL_BLOCK * TCB, int flag GCC_UNUSED) +{ + SCREEN *sp; + int code = ERR; + + T((T_CALLED("win32con::wcon_kpad(%p, %d)"), TCB, flag)); + + if (okConsoleHandle(TCB)) { + SetSP(); + + if (sp) { + code = OK; + } + } + returnCode(code); +} + +static int +wcon_keyok(TERMINAL_CONTROL_BLOCK * TCB, + int keycode, + int flag) +{ + int code = ERR; + SCREEN *sp; + WORD nKey; + WORD vKey; + void *res; + LONG key = GenMap(0, (WORD) keycode); + + T((T_CALLED("win32con::wcon_keyok(%p, %d, %d)"), TCB, keycode, flag)); + + if (okConsoleHandle(TCB)) { + SetSP(); + + if (sp) { + res = bsearch(&key, + CON.rmap, + (size_t) (N_INI + FKEYS), + sizeof(keylist[0]), + rkeycompare); + if (res) { + key = *((LONG *) res); + vKey = HIWORD(key); + nKey = (LOWORD(key)) & 0x7fff; + if (!flag) + nKey |= 0x8000; + *(LONG *) res = GenMap(vKey, nKey); + } + } + } + returnCode(code); +} + +NCURSES_EXPORT_VAR (TERM_DRIVER) _nc_WIN_DRIVER = { + FALSE, + wcon_name, /* Name */ + wcon_CanHandle, /* CanHandle */ + wcon_init, /* init */ + wcon_release, /* release */ + wcon_size, /* size */ + wcon_sgmode, /* sgmode */ + wcon_conattr, /* conattr */ + wcon_mvcur, /* hwcur */ + wcon_mode, /* mode */ + wcon_rescol, /* rescol */ + wcon_rescolors, /* rescolors */ + wcon_setcolor, /* color */ + wcon_dobeepflash, /* DoBeepFlash */ + wcon_initpair, /* initpair */ + wcon_initcolor, /* initcolor */ + wcon_do_color, /* docolor */ + wcon_initmouse, /* initmouse */ + wcon_testmouse, /* testmouse */ + wcon_setfilter, /* setfilter */ + wcon_hwlabel, /* hwlabel */ + wcon_hwlabelOnOff, /* hwlabelOnOff */ + wcon_doupdate, /* update */ + wcon_defaultcolors, /* defaultcolors */ + wcon_print, /* print */ + wcon_size, /* getsize */ + wcon_setsize, /* setsize */ + wcon_initacs, /* initacs */ + wcon_screen_init, /* scinit */ + wcon_wrap, /* scexit */ + wcon_twait, /* twait */ + wcon_read, /* read */ + wcon_nap, /* nap */ + wcon_kpad, /* kpad */ + wcon_keyok, /* kyOk */ + wcon_kyExist, /* kyExist */ + wcon_cursorSet /* cursorSet */ +}; + +/* --------------------------------------------------------- */ + +static HANDLE +get_handle(int fd) +{ + intptr_t value = _get_osfhandle(fd); + return (HANDLE) value; +} + +#if WINVER >= 0x0600 +/* This function tests, whether or not the ncurses application + is running as a descendant of MSYS2/cygwin mintty terminal + application. mintty doesn't use Windows Console for its screen + I/O, so the native Windows _isatty doesn't recognize it as + character device. But we can discover we are at the end of an + Pipe and can query to server side of the pipe, looking whether + or not this is mintty. + */ +static int +_ismintty(int fd, LPHANDLE pMinTTY) +{ + HANDLE handle = get_handle(fd); + DWORD dw; + int code = 0; + + T((T_CALLED("win32con::_ismintty(%d, %p)"), fd, pMinTTY)); + + if (handle != INVALID_HANDLE_VALUE) { + dw = GetFileType(handle); + if (dw == FILE_TYPE_PIPE) { + if (GetNamedPipeInfo(handle, 0, 0, 0, 0)) { + ULONG pPid; + /* Requires NT6 */ + if (GetNamedPipeServerProcessId(handle, &pPid)) { + TCHAR buf[MAX_PATH]; + DWORD len = 0; + /* These security attributes may allow us to + create a remote thread in mintty to manipulate + the terminal state remotely */ + HANDLE pHandle = OpenProcess( + PROCESS_CREATE_THREAD + | PROCESS_QUERY_INFORMATION + | PROCESS_VM_OPERATION + | PROCESS_VM_WRITE + | PROCESS_VM_READ, + FALSE, + pPid); + if (pMinTTY) + *pMinTTY = INVALID_HANDLE_VALUE; + if (pHandle != INVALID_HANDLE_VALUE) { + if ((len = GetProcessImageFileName( + pHandle, + buf, + (DWORD) + array_length(buf)))) { + TCHAR *pos = _tcsrchr(buf, _T('\\')); + if (pos) { + pos++; + if (_tcsnicmp(pos, _TEXT("mintty.exe"), 10) + == 0) { + if (pMinTTY) + *pMinTTY = pHandle; + code = 1; + } + } + } + } + } + } + } + } + returnCode(code); +} +#endif + +/* Borrowed from ansicon project. + Check whether or not an I/O handle is associated with + a Windows console. +*/ +static BOOL +IsConsoleHandle(HANDLE hdl) +{ + DWORD dwFlag = 0; + BOOL result; + + if (!GetConsoleMode(hdl, &dwFlag)) { + result = (int) WriteConsoleA(hdl, NULL, 0, &dwFlag, NULL); + } else { + result = (int) (dwFlag & ENABLE_PROCESSED_OUTPUT); + } + return result; +} + +/* Our replacement for the systems _isatty to include also + a test for mintty. This is called from the NC_ISATTY macro + defined in curses.priv.h + */ +int +_nc_mingw_isatty(int fd) +{ + int result = 0; + +#ifdef __MING32__ +#define SysISATTY(fd) _isatty(fd) +#else +#define SysISATTY(fd) isatty(fd) +#endif + if (SysISATTY(fd)) { + result = 1; + } else { +#if WINVER >= 0x0600 + result = _ismintty(fd, NULL); +#endif + } + return result; +} + +/* This is used when running in terminfo mode to discover, + whether or not the "terminal" is actually a Windows + Console. It is the responsibility of the console to deal + with the terminal escape sequences that are sent by + terminfo. + */ +int +_nc_mingw_isconsole(int fd) +{ + HANDLE hdl = get_handle(fd); + int code = 0; + + T((T_CALLED("win32con::_nc_mingw_isconsole(%d)"), fd)); + + code = (int) IsConsoleHandle(hdl); + + returnCode(code); +} + +#define TC_PROLOGUE(fd) \ + SCREEN *sp; \ + TERMINAL *term = 0; \ + int code = ERR; \ + if (_nc_screen_chain == 0) \ + return 0; \ + for (each_screen(sp)) { \ + if (sp->_term && (sp->_term->Filedes == fd)) { \ + term = sp->_term; \ + break; \ + } \ + } \ + assert(term != 0) + +int +_nc_mingw_tcsetattr( + int fd, + int optional_action GCC_UNUSED, + const struct termios *arg) +{ + TC_PROLOGUE(fd); + + if (_nc_mingw_isconsole(fd)) { + DWORD dwFlag = 0; + HANDLE ofd = get_handle(fd); + if (ofd != INVALID_HANDLE_VALUE) { + if (arg) { + if (arg->c_lflag & ICANON) + dwFlag |= ENABLE_LINE_INPUT; + else + dwFlag = dwFlag & (DWORD) (~ENABLE_LINE_INPUT); + + if (arg->c_lflag & ECHO) + dwFlag = dwFlag | ENABLE_ECHO_INPUT; + else + dwFlag = dwFlag & (DWORD) (~ENABLE_ECHO_INPUT); + + if (arg->c_iflag & BRKINT) + dwFlag |= ENABLE_PROCESSED_INPUT; + else + dwFlag = dwFlag & (DWORD) (~ENABLE_PROCESSED_INPUT); + } + dwFlag |= ENABLE_MOUSE_INPUT; + SetConsoleMode(ofd, dwFlag); + code = OK; + } + } + if (arg) + term->Nttyb = *arg; + + return code; +} + +int +_nc_mingw_tcgetattr(int fd, struct termios *arg) +{ + TC_PROLOGUE(fd); + + if (_nc_mingw_isconsole(fd)) { + if (arg) + *arg = term->Nttyb; + } + return code; +} + +int +_nc_mingw_tcflush(int fd, int queue) +{ + TC_PROLOGUE(fd); + (void) term; + + if (_nc_mingw_isconsole(fd)) { + if (queue == TCIFLUSH) { + BOOL b = FlushConsoleInputBuffer(GetStdHandle(STD_INPUT_HANDLE)); + if (!b) + return (int) GetLastError(); + } + } + return code; +} + +int +_nc_mingw_testmouse( + SCREEN *sp, + HANDLE fd, + int delay + EVENTLIST_2nd(_nc_eventlist * evl)) +{ + int rc = 0; + + assert(sp); + + if (sp->_drv_mouse_head < sp->_drv_mouse_tail) { + rc = TW_MOUSE; + } else { + rc = console_twait(sp, + fd, + TWAIT_MASK, + delay, + (int *) 0 + EVENTLIST_2nd(evl)); + } + return rc; +} + +int +_nc_mingw_console_read( + SCREEN *sp, + HANDLE fd, + int *buf) +{ + int rc = -1; + INPUT_RECORD inp_rec; + BOOL b; + DWORD nRead; + WORD vk; + + assert(sp); + assert(buf); + + memset(&inp_rec, 0, sizeof(inp_rec)); + + T((T_CALLED("_nc_mingw_console_read(%p)"), sp)); + + while ((b = ReadConsoleInput(fd, &inp_rec, 1, &nRead))) { + if (b && nRead > 0) { + if (rc < 0) + rc = 0; + rc = rc + (int) nRead; + if (inp_rec.EventType == KEY_EVENT) { + if (!inp_rec.Event.KeyEvent.bKeyDown) + continue; + *buf = (int) inp_rec.Event.KeyEvent.uChar.AsciiChar; + vk = inp_rec.Event.KeyEvent.wVirtualKeyCode; + /* + * There are 24 virtual function-keys, and typically + * 12 function-keys on a keyboard. Use the shift-modifier + * to provide the remaining 12 keys. + */ + if (vk >= VK_F1 && vk <= VK_F12) { + if (inp_rec.Event.KeyEvent.dwControlKeyState & SHIFT_PRESSED) { + vk = (WORD) (vk + 12); + } + } + if (*buf == 0) { + int key = MapKey(vk); + if (key < 0) + continue; + if (sp->_keypad_on) { + *buf = key; + } else { + ungetch('\0'); + *buf = AnsiKey(vk); + } + } + break; + } else if (inp_rec.EventType == MOUSE_EVENT) { + if (handle_mouse(sp, + inp_rec.Event.MouseEvent)) { + *buf = KEY_MOUSE; + break; + } + } + continue; + } + } + returnCode(rc); +} + +static bool +InitConsole(void) +{ + /* initialize once, or not at all */ + if (!console_initialized) { + int i; + DWORD num_buttons; + WORD a; + BOOL buffered = TRUE; + BOOL b; + + START_TRACE(); + if (_nc_mingw_isatty(0)) { + CON.isMinTTY = TRUE; + } + + for (i = 0; i < (N_INI + FKEYS); i++) { + if (i < N_INI) { + CON.rmap[i] = CON.map[i] = + (DWORD) keylist[i]; + CON.ansi_map[i] = (DWORD) ansi_keys[i]; + } else { + CON.rmap[i] = CON.map[i] = + (DWORD) GenMap((VK_F1 + (i - N_INI)), + (KEY_F(1) + (i - N_INI))); + CON.ansi_map[i] = + (DWORD) GenMap((VK_F1 + (i - N_INI)), + (';' + (i - N_INI))); + } + } + qsort(CON.ansi_map, + (size_t) (MAPSIZE), + sizeof(keylist[0]), + keycompare); + qsort(CON.map, + (size_t) (MAPSIZE), + sizeof(keylist[0]), + keycompare); + qsort(CON.rmap, + (size_t) (MAPSIZE), + sizeof(keylist[0]), + rkeycompare); + + if (GetNumberOfConsoleMouseButtons(&num_buttons)) { + CON.numButtons = (int) num_buttons; + } else { + CON.numButtons = 1; + } + + a = MapColor(true, COLOR_WHITE) | MapColor(false, COLOR_BLACK); + for (i = 0; i < NUMPAIRS; i++) + CON.pairs[i] = a; + + CON.inp = GetStdHandle(STD_INPUT_HANDLE); + CON.out = GetStdHandle(STD_OUTPUT_HANDLE); + + b = AllocConsole(); + + if (!b) + b = AttachConsole(ATTACH_PARENT_PROCESS); + + if (getenv("NCGDB") || getenv("NCURSES_CONSOLE2")) { + T(("... will not buffer console")); + buffered = FALSE; + CON.hdl = CON.out; + } else { + T(("... creating console buffer")); + CON.hdl = CreateConsoleScreenBuffer(GENERIC_READ | GENERIC_WRITE, + 0, + NULL, + CONSOLE_TEXTMODE_BUFFER, + NULL); + } + + if (CON.hdl != INVALID_HANDLE_VALUE) { + CON.buffered = buffered; + get_SBI(); + CON.save_SBI = CON.SBI; + if (!buffered) { + save_original_screen(); + set_scrollback(FALSE, &CON.SBI); + } + GetConsoleCursorInfo(CON.hdl, &CON.save_CI); + T(("... initial cursor is %svisible, %d%%", + (CON.save_CI.bVisible ? "" : "not-"), + (int) CON.save_CI.dwSize)); + } + + console_initialized = TRUE; + } + return (CON.hdl != INVALID_HANDLE_VALUE); +} + +static bool +okConsoleHandle(TERMINAL_CONTROL_BLOCK * TCB) +{ + return ((TCB != 0) && + (TCB->magic == WINMAGIC) && + InitConsole()); +} + +/* + * While a constructor would ensure that this module is initialized, that will + * interfere with applications that may combine this with GUI interfaces. + */ +#if 0 +static +__attribute__((constructor)) + void _enter_console(void) +{ + (void) InitConsole(); +} +#endif diff --git a/deps/ncurses-6.3/package/debian-mingw/changelog b/deps/ncurses-6.3/package/debian-mingw/changelog new file mode 100644 index 0000000..ddce3cf --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw/changelog @@ -0,0 +1,11 @@ +ncurses6 (6.3+20211021) unstable; urgency=low + + * latest weekly patch + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 20 Oct 2021 18:43:08 -0400 + +ncurses6 (5.9-20131005) unstable; urgency=low + + * initial release + + -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 05 Oct 2013 13:35:29 -0400 diff --git a/deps/ncurses-6.3/package/debian-mingw/compat b/deps/ncurses-6.3/package/debian-mingw/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw/compat @@ -0,0 +1 @@ +10 diff --git a/deps/ncurses-6.3/package/debian-mingw/control b/deps/ncurses-6.3/package/debian-mingw/control new file mode 100644 index 0000000..7ad33dc --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw/control @@ -0,0 +1,16 @@ +Source: ncurses6 +Section: libdevel +Priority: optional +Maintainer: Thomas E. Dickey <dickey@invisible-island.net> +Homepage: https://invisible-island.net/ncurses/ +Build-Depends: debhelper (>= 7) +Standards-Version: 3.8.2 + +Package: mingw32-ncurses6 +Architecture: any +Depends: ${misc:Depends} +Description: shared libraries for terminal handling + The ncurses library routines are a terminal-independent method of + updating character screens with reasonable optimization. + . + This package is used for testing ABI 6 with the MinGW 32-bit port. diff --git a/deps/ncurses-6.3/package/debian-mingw/copyright b/deps/ncurses-6.3/package/debian-mingw/copyright new file mode 100644 index 0000000..a01b3ee --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw/copyright @@ -0,0 +1,100 @@ +Upstream source https://invisible-island.net/ncurses/ncurses.html +This package is used for testing builds of ncurses. + +Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net> + +------------------------------------------------------------------------------- +Files: * +Copyright: 2017-2020,2021 by Thomas E. Dickey +Copyright: 1998-2016,2017 Free Software Foundation, Inc. +Licence: X11 + +Files: aclocal.m4 package +Copyright: 1996-2020,2021 by Thomas E. Dickey +Licence: X11 + +Files: doc/html/NCURSES-Programming-HOWTO.html +Copyright: 2001 by Pradeep Padala +Licence: X11 + + 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. + +------------------------------------------------------------------------------- +Files: install-sh +Copyright: 1994 X Consortium +Licence: X11 + + 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, 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 + 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. + +------------------------------------------------------------------------------- +Files: progs/tset.c ncurses/tinfo/read_termcap.c +Copyright: 1980,1991,1992,1993 The Regents of the University of California. +License: BSD + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +-- vile: txtmode file-encoding=utf-8 diff --git a/deps/ncurses-6.3/package/debian-mingw/mingw32-ncurses6.lintian-overrides b/deps/ncurses-6.3/package/debian-mingw/mingw32-ncurses6.lintian-overrides new file mode 100644 index 0000000..ed565e4 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw/mingw32-ncurses6.lintian-overrides @@ -0,0 +1,7 @@ +mingw32-ncurses6: latest-debian-changelog-entry-changed-to-native + +mingw32-ncurses6: non-standard-dir-in-usr +mingw32-ncurses6: file-in-unusual-dir + +mingw32-ncurses6: binary-without-manpage +mingw32-ncurses6: executable-not-elf-or-script diff --git a/deps/ncurses-6.3/package/debian-mingw/rules b/deps/ncurses-6.3/package/debian-mingw/rules new file mode 100755 index 0000000..4aa7cb9 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw/rules @@ -0,0 +1,149 @@ +#!/usr/bin/make -f +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +MY_ABI=6 + +BUILD_CC = gcc + +CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion +CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic + +TARGET = i686-w64-mingw32 +MINGW_BIN = /usr/bin +MINGW_TOP = /usr/$(TARGET) +MINGW_TMP = $(CURDIR)/debian/mingw32-ncurses$(MY_ABI) + +CFLAGS = $(CC_NORMAL) + +verbose = # -v + +CONFIG_OPTIONS = \ + --disable-db-install \ + --disable-echo \ + --disable-getcap \ + --disable-hard-tabs \ + --disable-leaks \ + --disable-macros \ + --disable-overwrite \ + --disable-termcap \ + --enable-interop \ + --enable-opaque-curses \ + --enable-opaque-form \ + --enable-opaque-menu \ + --enable-opaque-panel \ + --enable-pc-files \ + --enable-term-driver \ + --enable-warnings \ + --enable-widec \ + --verbose \ + --with-abi-version=$(MY_ABI) \ + --with-cxx-shared \ + --with-develop \ + --with-fallbacks=unknown,rxvt \ + --with-tic-path=/usr/bin/tic$(MY_ABI) \ + --with-infocmp-path=/usr/bin/infocmp$(MY_ABI) \ + --with-shared \ + --with-trace \ + --with-xterm-kbs=DEL \ + --without-ada \ + --without-debug \ + --without-manpages \ + --without-progs \ + --without-tests + +export CFLAGS BUILD_CC + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + + CC=$(TARGET)-gcc \ + CFLAGS="$(CFLAGS)" \ + ./configure \ + --host=$(TARGET) \ + --target=$(TARGET) \ + --prefix=$(MINGW_TOP) \ + --with-build-cc=$(BUILD_CC) \ + --with-pc-suffix=$(MY_ABI) \ + --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig \ + $(CONFIG_OPTIONS) + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + [ ! -f makefile ] || $(MAKE) distclean + + rm -f configure-stamp build-stamp install-stamp + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs $(verbose) + + $(MAKE) install.libs DESTDIR=$(MINGW_TMP) + + mkdir -p $(MINGW_TMP)$(MINGW_BIN) + for name in $(MINGW_TMP)$(MINGW_TOP)/bin/*-config; \ + do \ + base=`basename $$name`; \ + ln -v $$name $(MINGW_TMP)$(MINGW_BIN)/$(TARGET)-$$base; \ + done + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# No binary-indep target. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot $(verbose) + dh_lintian $(verbose) + dh_installdocs $(verbose) + dh_installchangelogs $(verbose) NEWS + # dh_strip + dh_compress $(verbose) + dh_fixperms $(verbose) + dh_installdeb $(verbose) + dh_shlibdeps $(verbose) + dh_gencontrol $(verbose) + dh_md5sums $(verbose) + dh_builddeb $(verbose) + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/deps/ncurses-5.9/test/package/debian/source/format b/deps/ncurses-6.3/package/debian-mingw/source/format similarity index 100% rename from deps/ncurses-5.9/test/package/debian/source/format rename to deps/ncurses-6.3/package/debian-mingw/source/format diff --git a/deps/ncurses-6.3/package/debian-mingw/watch b/deps/ncurses-6.3/package/debian-mingw/watch new file mode 100644 index 0000000..f6b3987 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/ncurses/current/ncurses\.tar.gz \ + debian uupdate diff --git a/deps/ncurses-6.3/package/debian-mingw64/changelog b/deps/ncurses-6.3/package/debian-mingw64/changelog new file mode 100644 index 0000000..ddce3cf --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/changelog @@ -0,0 +1,11 @@ +ncurses6 (6.3+20211021) unstable; urgency=low + + * latest weekly patch + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 20 Oct 2021 18:43:08 -0400 + +ncurses6 (5.9-20131005) unstable; urgency=low + + * initial release + + -- Thomas E. Dickey <dickey@invisible-island.net> Sat, 05 Oct 2013 13:35:29 -0400 diff --git a/deps/ncurses-6.3/package/debian-mingw64/compat b/deps/ncurses-6.3/package/debian-mingw64/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/compat @@ -0,0 +1 @@ +10 diff --git a/deps/ncurses-6.3/package/debian-mingw64/control b/deps/ncurses-6.3/package/debian-mingw64/control new file mode 100644 index 0000000..fa1bd71 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/control @@ -0,0 +1,16 @@ +Source: ncurses6 +Section: libdevel +Priority: optional +Maintainer: Thomas E. Dickey <dickey@invisible-island.net> +Homepage: https://invisible-island.net/ncurses/ +Build-Depends: debhelper (>= 7) +Standards-Version: 3.8.2 + +Package: mingw64-ncurses6 +Architecture: any +Depends: ${misc:Depends} +Description: shared libraries for terminal handling + The ncurses library routines are a terminal-independent method of + updating character screens with reasonable optimization. + . + This package is used for testing ABI 6 with the MinGW 64-bit port. diff --git a/deps/ncurses-6.3/package/debian-mingw64/copyright b/deps/ncurses-6.3/package/debian-mingw64/copyright new file mode 100644 index 0000000..a01b3ee --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/copyright @@ -0,0 +1,100 @@ +Upstream source https://invisible-island.net/ncurses/ncurses.html +This package is used for testing builds of ncurses. + +Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net> + +------------------------------------------------------------------------------- +Files: * +Copyright: 2017-2020,2021 by Thomas E. Dickey +Copyright: 1998-2016,2017 Free Software Foundation, Inc. +Licence: X11 + +Files: aclocal.m4 package +Copyright: 1996-2020,2021 by Thomas E. Dickey +Licence: X11 + +Files: doc/html/NCURSES-Programming-HOWTO.html +Copyright: 2001 by Pradeep Padala +Licence: X11 + + 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. + +------------------------------------------------------------------------------- +Files: install-sh +Copyright: 1994 X Consortium +Licence: X11 + + 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, 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 + 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. + +------------------------------------------------------------------------------- +Files: progs/tset.c ncurses/tinfo/read_termcap.c +Copyright: 1980,1991,1992,1993 The Regents of the University of California. +License: BSD + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +-- vile: txtmode file-encoding=utf-8 diff --git a/deps/ncurses-6.3/package/debian-mingw64/mingw64-ncurses6.lintian-overrides b/deps/ncurses-6.3/package/debian-mingw64/mingw64-ncurses6.lintian-overrides new file mode 100644 index 0000000..9e8f854 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/mingw64-ncurses6.lintian-overrides @@ -0,0 +1,7 @@ +mingw64-ncurses6: latest-debian-changelog-entry-changed-to-native + +mingw64-ncurses6: non-standard-dir-in-usr +mingw64-ncurses6: file-in-unusual-dir + +mingw64-ncurses6: binary-without-manpage +mingw64-ncurses6: executable-not-elf-or-script diff --git a/deps/ncurses-6.3/package/debian-mingw64/rules b/deps/ncurses-6.3/package/debian-mingw64/rules new file mode 100755 index 0000000..b2ebb88 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/rules @@ -0,0 +1,149 @@ +#!/usr/bin/make -f +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +MY_ABI=6 + +BUILD_CC = gcc + +CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion +CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic + +TARGET = x86_64-w64-mingw32 +MINGW_BIN = /usr/bin +MINGW_TOP = /usr/$(TARGET) +MINGW_TMP = $(CURDIR)/debian/mingw64-ncurses$(MY_ABI) + +CFLAGS = $(CC_NORMAL) + +verbose = # -v + +CONFIG_OPTIONS = \ + --disable-db-install \ + --disable-echo \ + --disable-getcap \ + --disable-hard-tabs \ + --disable-leaks \ + --disable-macros \ + --disable-overwrite \ + --disable-termcap \ + --enable-interop \ + --enable-opaque-curses \ + --enable-opaque-form \ + --enable-opaque-menu \ + --enable-opaque-panel \ + --enable-pc-files \ + --enable-term-driver \ + --enable-warnings \ + --enable-widec \ + --verbose \ + --with-abi-version=$(MY_ABI) \ + --with-cxx-shared \ + --with-develop \ + --with-fallbacks=unknown,rxvt \ + --with-tic-path=/usr/bin/tic$(MY_ABI) \ + --with-infocmp-path=/usr/bin/infocmp$(MY_ABI) \ + --with-shared \ + --with-trace \ + --with-xterm-kbs=DEL \ + --without-ada \ + --without-debug \ + --without-manpages \ + --without-progs \ + --without-tests + +export CFLAGS BUILD_CC + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +configure: configure-stamp +configure-stamp: + dh_testdir + + CC=$(TARGET)-gcc \ + CFLAGS="$(CFLAGS)" \ + ./configure \ + --host=$(TARGET) \ + --target=$(TARGET) \ + --prefix=$(MINGW_TOP) \ + --with-build-cc=$(BUILD_CC) \ + --with-pc-suffix=$(MY_ABI) \ + --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig \ + $(CONFIG_OPTIONS) + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + [ ! -f makefile ] || $(MAKE) distclean + + rm -f configure-stamp build-stamp install-stamp + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs $(verbose) + + $(MAKE) install.libs DESTDIR=$(MINGW_TMP) + + mkdir -p $(MINGW_TMP)$(MINGW_BIN) + for name in $(MINGW_TMP)$(MINGW_TOP)/bin/*-config; \ + do \ + base=`basename $$name`; \ + ln -v $$name $(MINGW_TMP)$(MINGW_BIN)/$(TARGET)-$$base; \ + done + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# No binary-indep target. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot $(verbose) + dh_lintian $(verbose) + dh_installdocs $(verbose) + dh_installchangelogs $(verbose) NEWS + # dh_strip + dh_compress $(verbose) + dh_fixperms $(verbose) + dh_installdeb $(verbose) + dh_shlibdeps $(verbose) + dh_gencontrol $(verbose) + dh_md5sums $(verbose) + dh_builddeb $(verbose) + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/deps/ncurses-6.3/package/debian-mingw64/source/format b/deps/ncurses-6.3/package/debian-mingw64/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/deps/ncurses-6.3/package/debian-mingw64/watch b/deps/ncurses-6.3/package/debian-mingw64/watch new file mode 100644 index 0000000..f6b3987 --- /dev/null +++ b/deps/ncurses-6.3/package/debian-mingw64/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/ncurses/current/ncurses\.tar.gz \ + debian uupdate diff --git a/deps/ncurses-6.3/package/debian/changelog b/deps/ncurses-6.3/package/debian/changelog new file mode 100644 index 0000000..da9c2dc --- /dev/null +++ b/deps/ncurses-6.3/package/debian/changelog @@ -0,0 +1,11 @@ +ncurses6 (6.3+20211021) unstable; urgency=low + + * latest weekly patch + + -- Thomas E. Dickey <dickey@invisible-island.net> Wed, 20 Oct 2021 18:43:08 -0400 + +ncurses6 (5.9-20120608) unstable; urgency=low + + * initial release + + -- Thomas E. Dickey <dickey@invisible-island.net> Fri, 08 Jun 2012 07:54:29 -0400 diff --git a/deps/ncurses-6.3/package/debian/compat b/deps/ncurses-6.3/package/debian/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/deps/ncurses-6.3/package/debian/compat @@ -0,0 +1 @@ +10 diff --git a/deps/ncurses-6.3/package/debian/control b/deps/ncurses-6.3/package/debian/control new file mode 100644 index 0000000..fcd4dac --- /dev/null +++ b/deps/ncurses-6.3/package/debian/control @@ -0,0 +1,44 @@ +Source: ncurses6 +Section: libdevel +Priority: optional +Maintainer: Thomas E. Dickey <dickey@invisible-island.net> +Homepage: https://invisible-island.net/ncurses/ +Build-Depends: debhelper (>= 7) +Standards-Version: 3.8.2 + +Package: ncurses6 +Architecture: any +Depends: ${misc:Depends}, libc6 (>= 2.4) +Description: shared libraries for terminal handling + The ncurses library routines are a terminal-independent method of + updating character screens with reasonable optimization. + . + This package is used for testing ABI 6. + +Package: ncursest6 +Architecture: any +Depends: ${misc:Depends}, libc6 (>= 2.4) +Description: shared libraries for terminal handling + The ncurses library routines are a terminal-independent method of + updating character screens with reasonable optimization. + . + This package is used for testing ABI 6 with pthreads. + +Package: ncurses6-doc +Section: doc +Architecture: all +Depends: groff-base +Description: shared libraries for terminal handling + The ncurses library routines are a terminal-independent method of + updating character screens with reasonable optimization. + . + This package is used for testing ncurses6 document packaging. + +Package: ncurses6-doc-html +Section: doc +Architecture: all +Description: shared libraries for terminal handling + The ncurses library routines are a terminal-independent method of + updating character screens with reasonable optimization. + . + This package is used for testing ncurses6 document packaging. diff --git a/deps/ncurses-6.3/package/debian/copyright b/deps/ncurses-6.3/package/debian/copyright new file mode 100644 index 0000000..a01b3ee --- /dev/null +++ b/deps/ncurses-6.3/package/debian/copyright @@ -0,0 +1,100 @@ +Upstream source https://invisible-island.net/ncurses/ncurses.html +This package is used for testing builds of ncurses. + +Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net> + +------------------------------------------------------------------------------- +Files: * +Copyright: 2017-2020,2021 by Thomas E. Dickey +Copyright: 1998-2016,2017 Free Software Foundation, Inc. +Licence: X11 + +Files: aclocal.m4 package +Copyright: 1996-2020,2021 by Thomas E. Dickey +Licence: X11 + +Files: doc/html/NCURSES-Programming-HOWTO.html +Copyright: 2001 by Pradeep Padala +Licence: X11 + + 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. + +------------------------------------------------------------------------------- +Files: install-sh +Copyright: 1994 X Consortium +Licence: X11 + + 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, 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 + 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. + +------------------------------------------------------------------------------- +Files: progs/tset.c ncurses/tinfo/read_termcap.c +Copyright: 1980,1991,1992,1993 The Regents of the University of California. +License: BSD + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + 3. Neither the name of the University nor the names of its contributors + may be used to endorse or promote products derived from this software + without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. + +-- vile: txtmode file-encoding=utf-8 diff --git a/deps/ncurses-6.3/package/debian/ncurses6.lintian-overrides b/deps/ncurses-6.3/package/debian/ncurses6.lintian-overrides new file mode 100644 index 0000000..759fa76 --- /dev/null +++ b/deps/ncurses-6.3/package/debian/ncurses6.lintian-overrides @@ -0,0 +1,15 @@ +# This is intentional. +ncurses6: package-name-doesnt-match-sonames libformw6-6 libmenuw6-6 libncurses++w6-6 libncursesw6-6 libpanelw6-6 libticw6-6 libtinfow6-6 + +# This works around a bug in Debian's build-scripts. +ncurses6: latest-debian-changelog-entry-changed-to-native + +ncurses6: hardening-no-fortify-functions usr/lib/libncurses++w6.so.6.1 + +# This is intentional. +ncurses6: binary-without-manpage +ncurses6: non-dev-pkg-with-shlib-symlink +ncurses6: embedded-library usr/lib/libtinfow6.so.6.1: ncurses +ncurses6: postinst-must-call-ldconfig usr/lib/libtinfow6.so.6.1 + +# vile: confmode diff --git a/deps/ncurses-6.3/package/debian/ncurses6.triggers b/deps/ncurses-6.3/package/debian/ncurses6.triggers new file mode 100644 index 0000000..dd86603 --- /dev/null +++ b/deps/ncurses-6.3/package/debian/ncurses6.triggers @@ -0,0 +1 @@ +activate-noawait ldconfig diff --git a/deps/ncurses-6.3/package/debian/ncursest6.lintian-overrides b/deps/ncurses-6.3/package/debian/ncursest6.lintian-overrides new file mode 100644 index 0000000..e8de0d6 --- /dev/null +++ b/deps/ncurses-6.3/package/debian/ncursest6.lintian-overrides @@ -0,0 +1,15 @@ +# This is intentional. +ncursest6: package-name-doesnt-match-sonames libformtw6-6 libmenutw6-6 libncurses++tw6-6 libncursestw6-6 libpaneltw6-6 libtictw6-6 libtinfotw6-6 + +# This works around a bug in Debian's build-scripts. +ncursest6: latest-debian-changelog-entry-changed-to-native + +ncursest6: hardening-no-fortify-functions usr/lib/libncurses++tw6.so.6.1 + +# This is intentional. +ncursest6: binary-without-manpage +ncursest6: non-dev-pkg-with-shlib-symlink +ncursest6: embedded-library usr/lib/libtinfotw6.so.6.1: ncurses +ncursest6: postinst-must-call-ldconfig usr/lib/libtinfotw6.so.6.1 + +# vile: confmode diff --git a/deps/ncurses-6.3/package/debian/ncursest6.triggers b/deps/ncurses-6.3/package/debian/ncursest6.triggers new file mode 100644 index 0000000..dd86603 --- /dev/null +++ b/deps/ncurses-6.3/package/debian/ncursest6.triggers @@ -0,0 +1 @@ +activate-noawait ldconfig diff --git a/deps/ncurses-6.3/package/debian/rules b/deps/ncurses-6.3/package/debian/rules new file mode 100755 index 0000000..287c758 --- /dev/null +++ b/deps/ncurses-6.3/package/debian/rules @@ -0,0 +1,265 @@ +#!/usr/bin/make -f +# $Id: rules,v 1.41 2021/10/11 18:18:08 tom Exp $ + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# packages +PACKAGES.indep = ncurses6-doc ncurses6-doc-html +PACKAGES.arch = ncurses6 ncursest6 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion +CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic + +MY_ABI=6 +MY_DIR=/usr +MYDATA=/usr/local/ncurses/share/terminfo +NORMAL_DIR=$(CURDIR)/debian/ncurses$(MY_ABI) +THREAD_DIR=$(CURDIR)/debian/ncursest$(MY_ABI) + +CFLAGS = $(shell dpkg-buildflags --get CFLAGS) $(CC_NORMAL) +CXXFLAGS = $(shell dpkg-buildflags --get CXXFLAGS) +CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) +LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS) + +ifneq ($(MY_DIR),/usr) + RPATH_ENV = RPATH_LIST=../lib:$(MY_DIR)/lib + RPATH_OPT = --enable-rpath +else + RPATH_ENV = + RPATH_OPT = --disable-rpath --disable-rpath-hack +endif + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +verbose = # -v + +configure = \ + $(RPATH_ENV) \ + CFLAGS="$(CFLAGS)" \ + CPPFLAGS="$(CPPFLAGS)" \ + LDFLAGS="$(LDFLAGS)" ../../configure $(RPATH_OPT) \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --prefix=$(MY_DIR) \ + --disable-echo \ + --disable-getcap \ + --disable-leaks \ + --disable-macros \ + --disable-overwrite \ + --disable-relink \ + --disable-termcap \ + --enable-hard-tabs \ + --enable-opaque-curses \ + --enable-opaque-form \ + --enable-opaque-menu \ + --enable-opaque-panel \ + --enable-pc-files \ + --enable-stdnoreturn \ + --enable-warnings \ + --enable-wgetch-events \ + --enable-widec \ + --enable-xmc-glitch \ + --program-suffix=$(MY_ABI) \ + --verbose \ + --with-abi-version=$(MY_ABI) \ + --with-config-suffix=dev \ + --with-cxx-shared \ + --with-default-terminfo-dir=$(MYDATA) \ + --with-develop \ + --with-extra-suffix=$(MY_ABI) \ + --with-shared \ + --with-terminfo-dirs=$(MYDATA):/lib/terminfo:/usr/share/terminfo \ + --with-termlib \ + --with-ticlib \ + --with-trace \ + --with-versioned-syms \ + --with-xterm-kbs=DEL \ + --without-ada \ + --without-debug \ + --without-manpage-aliases \ + --without-normal + +NCURSES6_DIR = $(CURDIR)/debian/ncurses6 +NCURSEST6_DIR = $(CURDIR)/debian/ncursest6 + +.PHONY: all config build install binary clean config-indep config-arch \ + build-indep build-arch install-indep install-arch binary-indep \ + binary-arch + +all: build + +config: config-indep config-arch +build: build-indep build-arch +install: install-indep install-arch +binary: binary-indep binary-arch +clean: + dh_testdir + dh_testroot + dh_clean $(verbose) + rm -rf t + +config-indep: $(PACKAGES.indep:%=config-%-stamp) +config-arch: $(PACKAGES.arch:%=config-%-stamp) + +build-indep: $(PACKAGES.indep:%=build-%-stamp) +build-arch: $(PACKAGES.arch:%=build-%-stamp) + +install-indep: $(PACKAGES.indep:%=install-%-stamp) +install-arch: $(PACKAGES.arch:%=install-%-stamp) + +# make the doc-package installable by renaming everything to avoid clashing +patch-ncurses6-stamp: + dh_testdir + sed -i.bak \ + -e 's/-config\.1$$/dev-config.1/;t' \ + -e 's/\.3ncurses$$/.3ncurses6/' \ + -e 's/\.3curses$$/.3curses6/' \ + -e 's/\.3form$$/.3form6/' \ + -e 's/\.3menu$$/.3menu6/' \ + -e 's/\.3panel$$/.3panel6/' \ + -e 's/\.\([157]\)$$/6.\1/' \ + man/man_db.renames + diff -u man/man_db.renames.bak man/man_db.renames || true + touch $@ + +config-ncurses6-stamp: patch-ncurses6-stamp + dh_testdir + rm -rf t/ncurses6 + mkdir -p t/ncurses6 + cd t/ncurses6; $(configure) + touch $@ + +config-ncursest6-stamp: patch-ncurses6-stamp + dh_testdir + rm -rf t/ncursest6 + mkdir -p t/ncursest6 + cd t/ncursest6; $(configure) \ + --enable-interop \ + --enable-sp-funcs \ + --program-suffix=t$(MY_ABI) \ + --with-pthread + touch $@ + +config-ncurses6-doc-stamp \ +config-ncurses6-doc-html-stamp: config-ncurses6-stamp + touch $@ + +build-ncurses6-stamp: config-ncurses6-stamp + dh_testdir + + $(MAKE) -C t/ncurses6 + + touch $@ + +build-ncursest6-stamp: config-ncursest6-stamp + dh_testdir + + $(MAKE) -C t/ncursest6 + + touch $@ + +build-ncurses6-doc-stamp \ +build-ncurses6-doc-html-stamp: build-ncurses6-stamp + touch $@ + +install-ncurses6-stamp: build-ncurses6-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -pncurses6 + + $(MAKE) -C t/ncurses6 install.libs install.progs DESTDIR=$(NCURSES6_DIR) + $(MAKE) -C t/ncurses6/test ncurses LOCAL_LIBDIR=$(MY_DIR)/lib + + mv t/ncurses6/test/ncurses $(NCURSES6_DIR)$(MY_DIR)/bin/ncurses$(MY_ABI) + + touch $@ + +install-ncursest6-stamp: build-ncursest6-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -pncursest6 + + $(MAKE) -C t/ncursest6 install.libs install.progs DESTDIR=$(NCURSEST6_DIR) + $(MAKE) -C t/ncursest6/test ncurses LOCAL_LIBDIR=$(MY_DIR)/lib + + mv t/ncursest6/test/ncurses $(NCURSEST6_DIR)$(MY_DIR)/bin/ncursest$(MY_ABI) + + touch $@ + +install-ncurses6-doc-stamp: build-ncurses6-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -pncurses6-doc + + $(MAKE) -C t/ncurses6 install.man DESTDIR=$(NCURSES6_DIR)-doc + + cd $(NCURSES6_DIR)-doc/usr/share/man/man1 && ln -sf tset6.1.gz reset6.1.gz + + touch $@ + +HTML_DESTDIR=$(NCURSES6_DIR)-doc-html/usr/share/ncurses6-doc-html +install-ncurses6-doc-html-stamp: build-ncurses6-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -pncurses6-doc-html + + cd doc/html && find * -type d | sort | xargs -I{} mkdir -p -v $(HTML_DESTDIR)/{} + cd doc/html && find * -type f -name '*.html' | sort | xargs -I{} install -m 644 -p -v -T {} $(HTML_DESTDIR)/{} + + touch $@ + +# Build architecture-independent files here. +binary-indep: install-indep +ifneq ($(PACKAGES.indep),) + rm -f $(PACKAGES.indep:%=install-%-stamp) + dh_testdir + dh_testroot + dh_lintian $(verbose) $(PACKAGES.arch:%=-p%) + dh_installdocs $(verbose) $(PACKAGES.indep:%=-p%) + dh_installman $(verbose) $(PACKAGES.indep:%=-p%) + dh_installexamples $(verbose) $(PACKAGES.indep:%=-p%) + dh_installchangelogs $(verbose) $(PACKAGES.indep:%=-p%) NEWS + dh_compress $(verbose) $(PACKAGES.indep:%=-p%) + dh_fixperms $(verbose) $(PACKAGES.indep:%=-p%) + dh_installdeb $(verbose) $(PACKAGES.indep:%=-p%) + dh_gencontrol $(verbose) $(PACKAGES.indep:%=-p%) + dh_md5sums $(verbose) $(PACKAGES.indep:%=-p%) + dh_builddeb $(verbose) $(PACKAGES.indep:%=-p%) +endif + +# Build architecture-dependent files here. +binary-arch: install-arch +ifneq ($(PACKAGES.arch),) + rm -f $(PACKAGES.arch:%=install-%-stamp) + dh_testdir + dh_testroot + dh_lintian $(verbose) $(PACKAGES.arch:%=-p%) + dh_installdocs $(verbose) $(PACKAGES.arch:%=-p%) + dh_installchangelogs $(verbose) $(PACKAGES.arch:%=-p%) NEWS + dh_strip $(verbose) $(PACKAGES.arch:%=-p%) + dh_compress $(verbose) $(PACKAGES.arch:%=-p%) + dh_fixperms $(verbose) $(PACKAGES.arch:%=-p%) + dh_installdeb $(verbose) $(PACKAGES.arch:%=-p%) + dh_makeshlibs $(verbose) $(PACKAGES.arch:%=-p%) + dh_shlibdeps $(verbose) $(PACKAGES.arch:%=-p%) + dh_gencontrol $(verbose) $(PACKAGES.arch:%=-p%) + dh_md5sums $(verbose) $(PACKAGES.arch:%=-p%) + dh_builddeb $(verbose) $(PACKAGES.arch:%=-p%) +endif diff --git a/deps/ncurses-6.3/package/debian/source/format b/deps/ncurses-6.3/package/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/deps/ncurses-6.3/package/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/deps/ncurses-6.3/package/debian/watch b/deps/ncurses-6.3/package/debian/watch new file mode 100644 index 0000000..f6b3987 --- /dev/null +++ b/deps/ncurses-6.3/package/debian/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/ncurses/current/ncurses\.tar.gz \ + debian uupdate diff --git a/deps/ncurses-6.3/package/mingw-ncurses.nsi b/deps/ncurses-6.3/package/mingw-ncurses.nsi new file mode 100644 index 0000000..cf26efb --- /dev/null +++ b/deps/ncurses-6.3/package/mingw-ncurses.nsi @@ -0,0 +1,190 @@ +; $Id: mingw-ncurses.nsi,v 1.486 2021/10/20 22:43:08 tom Exp $ + +; TODO add examples +; TODO bump ABI to 6 + +; Define the application name +!define APPNAME "ncurses" +!define EXENAME "ncurses.exe" + +!define VERSION_MAJOR "6" +!define VERSION_MINOR "3" +!define VERSION_YYYY "2021" +!define VERSION_MMDD "1021" +!define VERSION_PATCH ${VERSION_YYYY}${VERSION_MMDD} + +!define MY_ABI "5" +!define MY_MODEL "w" + +!define SUBKEY "ncurses" + +!define INSTALL "${APPNAME} (Console)" +!define VERSION ${VERSION_MAJOR}.${VERSION_MINOR} +!define VERSION_FULL ${VERSION}-${VERSION_PATCH} + +; Main Install settings +Name "${INSTALL}" +InstallDir "c:\mingw" +InstallDirRegKey HKLM "Software\${SUBKEY}" "$INSTDIR\bin" +OutFile "NSIS-Output\${APPNAME}-${VERSION_FULL}-setup.exe" + +CRCCheck on +SetCompressor /SOLID lzma + +VIAddVersionKey ProductName "${SUBKEY}" +VIAddVersionKey CompanyName "https://invisible-island.net" +VIAddVersionKey FileDescription "NCurses Installer (MinGW)" +VIAddVersionKey FileVersion ${VERSION_FULL} +VIAddVersionKey ProductVersion ${VERSION_FULL} +VIAddVersionKey Comments "This installer was built with NSIS and cross-compiling to MinGW." +VIAddVersionKey InternalName "${APPNAME}-${VERSION_FULL}-setup.exe" +; This is a dotted set of numbers limited to 16-bits each +VIProductVersion "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_YYYY}.${VERSION_MMDD}" + +; Modern interface settings +!include "MUI.nsh" + +!define MUI_ABORTWARNING +;!define MUI_FINISHPAGE_RUN +;"$INSTDIR\bin\${EXENAME}" + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_LICENSE "..\COPYING" +!insertmacro MUI_PAGE_COMPONENTS +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES + +; Set languages (first is default language) +!insertmacro MUI_LANGUAGE "English" +!insertmacro MUI_RESERVEFILE_LANGDLL + +InstType "Full" ; SectionIn 1 +InstType "Typical" ; SectionIn 2 +InstType "Minimal" ; SectionIn 3 + +Section "${APPNAME}" Section1 + + SectionIn 1 2 3 + + ; Set Section properties + SetOverwrite on + + ; Set Section Files and Shortcuts + SetOutPath "$INSTDIR\bin" + + File ".\bin\*.dll" + + SetOutPath "$INSTDIR\share\${APPNAME}" + File /oname=README.txt "..\README" + File /oname=README-mingw.txt "..\README.mingw" + + CreateDirectory "$SMPROGRAMS\${INSTALL}" + CreateShortCut "$SMPROGRAMS\${INSTALL}\${APPNAME}.lnk" "$INSTDIR\bin\${EXENAME}" + CreateShortCut "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" "$INSTDIR\uninstall.exe" + +SectionEnd + +Section "development" Section2 + + SectionIn 1 2 + + ; Set Section properties + SetOverwrite on + + ; Set Section Files and Shortcuts + SetOutPath "$INSTDIR\share\${APPNAME}" + + SetOutPath "$INSTDIR\include\${APPNAME}${MY_MODEL}" + + File ".\include\${APPNAME}${MY_MODEL}\*.h" + + SetOutPath "$INSTDIR\lib" + + File ".\lib\*.a" + +SectionEnd + +Section "examples" Section3 + + SectionIn 1 + + ; Set Section properties + SetOverwrite on + + ; Set Section Files and Shortcuts + SetOutPath "$INSTDIR\lib\${APPNAME}" + +SectionEnd + +Section -FinishSection + + WriteRegStr HKLM "Software\${SUBKEY}" "" "$INSTDIR" + WriteRegStr HKLM "Software\${SUBKEY}" "Environment" "" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "DisplayName" "${APPNAME} ${VERSION_FULL} (Console)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" "UninstallString" "$INSTDIR\uninstall.exe" + WriteUninstaller "$INSTDIR\uninstall.exe" + +SectionEnd + +; Modern install component descriptions +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN + !insertmacro MUI_DESCRIPTION_TEXT ${Section1} "${SUBKEY} runtime" + !insertmacro MUI_DESCRIPTION_TEXT ${Section2} "Development headers and libraries" + !insertmacro MUI_DESCRIPTION_TEXT ${Section3} "Examples" +!insertmacro MUI_FUNCTION_DESCRIPTION_END + +;Uninstall section +Section Uninstall + + ;Remove from registry... + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${INSTALL}" + DeleteRegKey HKLM "SOFTWARE\${SUBKEY}" + + ; Delete self + Delete "$INSTDIR\uninstall.exe" + + ; Delete Shortcuts + Delete "$SMPROGRAMS\${INSTALL}\${APPNAME}.lnk" + Delete "$SMPROGRAMS\${INSTALL}\Uninstall.lnk" + + ; Clean up application + Delete "$INSTDIR\bin\libform${MY_MODEL}${MY_ABI}.dll" + Delete "$INSTDIR\bin\libmenu${MY_MODEL}${MY_ABI}.dll" + Delete "$INSTDIR\bin\libncurses++${MY_MODEL}${MY_ABI}.dll" + Delete "$INSTDIR\bin\libncurses${MY_MODEL}${MY_ABI}.dll" + Delete "$INSTDIR\bin\libpanel${MY_MODEL}${MY_ABI}.dll" + + Delete "$INSTDIR\include\${APPNAME}${MY_MODEL}\*.h" + + Delete "$INSTDIR\lib\libform${MY_MODEL}.a" + Delete "$INSTDIR\lib\libmenu${MY_MODEL}.a" + Delete "$INSTDIR\lib\libncurses++${MY_MODEL}.a" + Delete "$INSTDIR\lib\libncurses${MY_MODEL}.a" + Delete "$INSTDIR\lib\libpanel${MY_MODEL}.a" + + Delete "$INSTDIR\lib\libform${MY_MODEL}.dll.a" + Delete "$INSTDIR\lib\libmenu${MY_MODEL}.dll.a" + Delete "$INSTDIR\lib\libncurses++${MY_MODEL}.dll.a" + Delete "$INSTDIR\lib\libncurses${MY_MODEL}.dll.a" + Delete "$INSTDIR\lib\libpanel${MY_MODEL}.dll.a" + + Delete "$INSTDIR\lib\${APPNAME}\*.exe" + + Delete "$INSTDIR\share\${APPNAME}\*.*" + + ; Remove remaining directories + RMDir "$SMPROGRAMS\${INSTALL}" + RMDir "$INSTDIR\share\${APPNAME}" + RMDir "$INSTDIR\share" + RMDir "$INSTDIR\lib\${APPNAME}" + RMDir "$INSTDIR\lib" + RMDir "$INSTDIR\include\${APPNAME}${MY_MODEL}" + RMDir "$INSTDIR\include" + RMDir "$INSTDIR\bin" + RMDir "$INSTDIR\" + +SectionEnd \ No newline at end of file diff --git a/deps/ncurses-6.3/package/mingw-ncurses.spec b/deps/ncurses-6.3/package/mingw-ncurses.spec new file mode 100644 index 0000000..7dd1f8e --- /dev/null +++ b/deps/ncurses-6.3/package/mingw-ncurses.spec @@ -0,0 +1,163 @@ +%?mingw_package_header + +Summary: shared libraries for terminal handling +Name: mingw32-ncurses6 +Version: 6.3 +Release: 20211021 +License: X11 +Group: Development/Libraries +Source: ncurses-%{version}-%{release}.tgz +# URL: https://invisible-island.net/ncurses/ + +BuildRequires: mingw32-filesystem >= 95 +BuildRequires: mingw32-gcc +BuildRequires: mingw32-binutils + +BuildRequires: mingw64-filesystem >= 95 +BuildRequires: mingw64-gcc +BuildRequires: mingw64-binutils + +%global MY_ABI 6 + +%define CC_NORMAL -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion +%define CC_STRICT %{CC_NORMAL} -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic + +%description -n mingw32-ncurses6 +Cross-compiling support for ncurses to mingw32. + +The ncurses library routines are a terminal-independent method of +updating character screens with reasonable optimization. + +This package is used for testing ABI 6 with cross-compiles to MinGW. + +%package -n mingw64-ncurses6 +Summary: Curses library for MinGW64 + +%description -n mingw64-ncurses6 +Cross-compiling support for ncurses to mingw64. + +The ncurses library routines are a terminal-independent method of +updating character screens with reasonable optimization. + +This package is used for testing ABI %{MY_ABI} with cross-compiles to MinGW. + +%prep + +%define CFG_OPTS \\\ + --disable-db-install \\\ + --disable-echo \\\ + --disable-getcap \\\ + --disable-hard-tabs \\\ + --disable-leaks \\\ + --disable-macros \\\ + --disable-overwrite \\\ + --disable-termcap \\\ + --enable-interop \\\ + --enable-opaque-curses \\\ + --enable-opaque-form \\\ + --enable-opaque-menu \\\ + --enable-opaque-panel \\\ + --enable-pc-files \\\ + --enable-sp-funcs \\\ + --enable-term-driver \\\ + --enable-warnings \\\ + --enable-wgetch-events \\\ + --enable-widec \\\ + --with-config-suffix=dev \\\ + --verbose \\\ + --with-cxx-shared \\\ + --with-develop \\\ + --with-fallbacks=unknown,xterm \\\ + --with-tic-path=/usr/bin/tic%{MY_ABI} \\\ + --with-infocmp-path=/usr/bin/infocmp%{MY_ABI} \\\ + --with-install-prefix=$RPM_BUILD_ROOT \\\ + --with-pc-suffix=%{MY_ABI} \\\ + --with-pcre2 \\\ + --with-shared \\\ + --with-tparm-arg=intptr_t \\\ + --with-trace \\\ + --with-xterm-kbs=DEL \\\ + --without-ada \\\ + --without-debug \\\ + --without-manpages \\\ + --without-progs \\\ + --without-tests + +%define debug_package %{nil} +%setup -q -n ncurses-%{version}-%{release} + +%build +mkdir BUILD-W32 +pushd BUILD-W32 +CFLAGS="%{CC_NORMAL}" \ +CC=%{mingw32_cc} \ +%mingw32_configure %{CFG_OPTS} \ + --with-pkg-config-libdir=%{mingw32_libdir}/pkgconfig +make +popd + +mkdir BUILD-W64 +pushd BUILD-W64 +CFLAGS="%{CC_NORMAL}" \ +CC=%{mingw64_cc} \ +%mingw64_configure %{CFG_OPTS} \ + --with-pkg-config-libdir=%{mingw64_libdir}/pkgconfig +make +popd + +%install +rm -rf $RPM_BUILD_ROOT + +mkdir -p $RPM_BUILD_ROOT%{_bindir} + +pushd BUILD-W32 +%{mingw32_make} install.libs +for name in $RPM_BUILD_ROOT%{mingw32_bindir}/*-config; \ + do \ + base=`basename $name`; \ + ln -v $name $RPM_BUILD_ROOT%{_bindir}/%{mingw32_target}-$base; \ + done +popd + +pushd BUILD-W64 +%{mingw64_make} install.libs +for name in $RPM_BUILD_ROOT%{mingw64_bindir}/*-config; \ + do \ + base=`basename $name`; \ + ln -v $name $RPM_BUILD_ROOT%{_bindir}/%{mingw64_target}-$base; \ + done +popd + +%clean +rm -rf $RPM_BUILD_ROOT + +%files -n mingw32-ncurses6 +%defattr(-,root,root,-) +%{_bindir}/%{mingw32_target}-* +%{mingw32_bindir}/* +%{mingw32_includedir}/* +%{mingw32_libdir}/* + +%files -n mingw64-ncurses6 +%defattr(-,root,root,-) +%{_bindir}/%{mingw64_target}-* +%{mingw64_bindir}/* +%{mingw64_includedir}/* +%{mingw64_libdir}/* + +%changelog + +* Sun Jun 30 2019 Thomas E. Dickey +- use tic-path and infocmp-path options for fallbacks + +* Sat Feb 10 2018 Thomas E. Dickey +- add several development features + +* Tue Dec 26 2017 Thomas E. Dickey +- add --with-config-suffix option + +* Sat Sep 20 2014 Thomas E. Dickey +- adjust install-rules for ncurses*-config + +* Sat Aug 03 2013 Thomas E. Dickey +- initial version, using mingw-pdcurses package as a guide. diff --git a/deps/ncurses-6.3/package/ncurses.map b/deps/ncurses-6.3/package/ncurses.map new file mode 100644 index 0000000..7eb1ed1 --- /dev/null +++ b/deps/ncurses-6.3/package/ncurses.map @@ -0,0 +1,1219 @@ +# $Id: ncurses.map,v 1.55 2021/10/10 15:22:33 tom Exp $ +# script for shared library symbol-versioning using ld +# +# This file was generated by ncu-mapsyms +# Configure options (5.0.19991023) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.1.20000708) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.2.20001021) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.3.20021019) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.4.20040208) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.5.20051010) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.6.20061217) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace +# Configure options (6.0.current) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace + +NCURSES_5.0.19991023 { + global: + COLORS; + COLOR_PAIR; + COLOR_PAIRS; + ESCDELAY; + PAIR_NUMBER; + TYPE_ALNUM; + TYPE_ALPHA; + TYPE_ENUM; + TYPE_INTEGER; + TYPE_IPV4; + TYPE_NUMERIC; + TYPE_REGEXP; + _nc_Default_Field; # deprecated in ABI6 + _nc_Default_Form; # deprecated in ABI6 + _nc_free_and_exit; + _nc_has_mouse; # deprecated in ABI6 + _nc_panelhook; + _nc_ripoffline; + addch; + addchnstr; + addchstr; + addnstr; + addstr; + attr_get; + attr_off; + attr_on; + attr_set; + attroff; + attron; + attrset; + beep; + bkgd; + bkgdset; + border; + bottom_panel; + box; + can_change_color; + chgat; + clear; + clearok; + clrtobot; + clrtoeol; + color_content; + color_set; + copywin; + current_field; + current_item; + data_ahead; + data_behind; + del_panel; + delch; + deleteln; + delscreen; + delwin; + derwin; + doupdate; + dup_field; + dupwin; + dynamic_field_info; + echo; + echochar; + endwin; + field_arg; + field_back; + field_buffer; + field_count; + field_fore; + field_index; + field_info; + field_init; + field_just; + field_opts; + field_opts_off; + field_opts_on; + field_pad; + field_status; + field_term; + field_type; + field_userptr; + filter; + flash; + form_driver; + form_fields; + form_init; + form_opts; + form_opts_off; + form_opts_on; + form_page; + form_request_by_name; + form_request_name; + form_sub; + form_term; + form_userptr; + form_win; + free_field; + free_fieldtype; + free_form; + free_item; + free_menu; + getbkgd; + getch; + getmouse; + getnstr; + getstr; + getwin; + has_colors; + hide_panel; + hline; + immedok; + inch; + inchnstr; + inchstr; + init_color; + init_pair; + initscr; + innstr; + insch; + insdelln; + insertln; + insnstr; + insstr; + instr; + is_linetouched; + is_wintouched; + isendwin; + item_count; + item_description; + item_index; + item_init; + item_name; + item_opts; + item_opts_off; + item_opts_on; + item_term; + item_userptr; + item_value; + item_visible; + leaveok; + link_field; + link_fieldtype; + mcprint; + menu_back; + menu_driver; + menu_fore; + menu_format; + menu_grey; + menu_init; + menu_items; + menu_mark; + menu_opts; + menu_opts_off; + menu_opts_on; + menu_pad; + menu_pattern; + menu_request_by_name; + menu_request_name; + menu_spacing; + menu_sub; + menu_term; + menu_userptr; + menu_win; + mouse_trafo; + mouseinterval; + mousemask; + move; + move_field; + move_panel; + mvaddch; + mvaddchnstr; + mvaddchstr; + mvaddnstr; + mvaddstr; + mvchgat; + mvcur; + mvdelch; + mvderwin; + mvgetch; + mvgetnstr; + mvgetstr; + mvhline; + mvinch; + mvinchnstr; + mvinchstr; + mvinnstr; + mvinsch; + mvinsnstr; + mvinsstr; + mvinstr; + mvprintw; + mvscanw; + mvvline; + mvwaddch; + mvwaddchnstr; + mvwaddchstr; + mvwaddnstr; + mvwaddstr; + mvwchgat; + mvwdelch; + mvwgetch; + mvwgetnstr; + mvwgetstr; + mvwhline; + mvwin; + mvwinch; + mvwinchnstr; + mvwinchstr; + mvwinnstr; + mvwinsch; + mvwinsnstr; + mvwinsstr; + mvwinstr; + mvwprintw; + mvwscanw; + mvwvline; + new_field; + new_fieldtype; + new_form; + new_item; + new_menu; + new_page; + new_panel; + newpad; + newterm; + newwin; + nl; + noecho; + nonl; + overlay; + overwrite; + pair_content; + panel_above; + panel_below; + panel_hidden; + panel_userptr; + panel_window; + pechochar; + pnoutrefresh; + pos_form_cursor; + pos_menu_cursor; + post_form; + post_menu; + prefresh; + printw; + putwin; + redrawwin; + refresh; + replace_panel; + resizeterm; + restartterm; + ripoffline; + scale_form; + scale_menu; + scanw; + scr_dump; + scr_init; + scr_restore; + scr_set; + scrl; + scroll; + scrollok; + set_current_field; + set_current_item; + set_field_back; + set_field_buffer; + set_field_fore; + set_field_init; + set_field_just; + set_field_opts; + set_field_pad; + set_field_status; + set_field_term; + set_field_type; + set_field_userptr; + set_fieldtype_arg; + set_fieldtype_choice; + set_form_fields; + set_form_init; + set_form_opts; + set_form_page; + set_form_sub; + set_form_term; + set_form_userptr; + set_form_win; + set_item_init; + set_item_opts; + set_item_term; + set_item_userptr; + set_item_value; + set_max_field; + set_menu_back; + set_menu_fore; + set_menu_format; + set_menu_grey; + set_menu_init; + set_menu_items; + set_menu_mark; + set_menu_opts; + set_menu_pad; + set_menu_pattern; + set_menu_spacing; + set_menu_sub; + set_menu_term; + set_menu_userptr; + set_menu_win; + set_new_page; + set_panel_userptr; + set_term; + set_top_row; + setscrreg; + show_panel; + slk_attr; + slk_attr_off; + slk_attr_on; + slk_attr_set; + slk_attroff; + slk_attron; + slk_attrset; + slk_clear; + slk_color; + slk_init; + slk_label; + slk_noutrefresh; + slk_refresh; + slk_restore; + slk_set; + slk_touch; + standend; + standout; + start_color; + subpad; + subwin; + syncok; + termattrs; + timeout; + top_panel; + top_row; + ungetch; + ungetmouse; + unpost_form; + unpost_menu; + untouchwin; + update_panels; + use_default_colors; + vid_attr; + vidattr; + vidputs; + vline; + vw_printw; + vw_scanw; + vwprintw; + vwscanw; + waddch; + waddchnstr; + waddchstr; + waddnstr; + waddstr; + wattr_get; + wattr_off; + wattr_on; + wattr_set; + wattroff; + wattron; + wattrset; + wbkgd; + wbkgdset; + wborder; + wchgat; + wclear; + wclrtobot; + wclrtoeol; + wcolor_set; + wcursyncup; + wdelch; + wdeleteln; + wechochar; + wenclose; + werase; + wgetch; + wgetnstr; + wgetstr; + whline; + winch; + winchnstr; + winchstr; + winnstr; + winsch; + winsdelln; + winsertln; + winsnstr; + winsstr; + winstr; + wmouse_trafo; + wmove; + wnoutrefresh; + wprintw; + wredrawln; + wrefresh; + wresize; + wscanw; + wscrl; + wsetscrreg; + wstandend; + wstandout; + wsyncdown; + wsyncup; + wtouchln; + wvline; + local: + _nc_Calculate_Item_Length_and_Width; + _nc_Connect_Items; + _nc_Copy_Argument; + _nc_Copy_Type; + _nc_Default_FieldType; + _nc_Default_Item; + _nc_Default_Menu; + _nc_Disconnect_Items; + _nc_Draw_Menu; + _nc_First_Active_Field; + _nc_Free_Argument; + _nc_Free_Type; + _nc_Internal_Validation; + _nc_Link_Items; + _nc_Make_Argument; + _nc_Match_Next_Character_In_Item_Name; + _nc_New_TopRow_and_CurrentItem; + _nc_Position_Form_Cursor; + _nc_Post_Item; + _nc_Refresh_Current_Field; + _nc_Set_Current_Field; + _nc_Set_Form_Page; + _nc_Show_Menu; + _nc_Synchronize_Attributes; + _nc_Synchronize_Options; + _nc_background; + _nc_do_color; + _nc_expanded; + _nc_freewin; + _nc_hash_map; + _nc_lib_traceatr; + _nc_lib_tracedmp; + _nc_lib_tracemouse; + _nc_make_oldhash; + _nc_makenew; + _nc_memmove; + _nc_menu_cursor_pos; + _nc_msec_cost; + _nc_mvcur_init; + _nc_mvcur_resume; + _nc_mvcur_wrap; + _nc_oldnums; + _nc_outstr; + _nc_printf_string; + _nc_render; + _nc_screen_init; + _nc_screen_resume; + _nc_screen_wrap; + _nc_scroll_oldhash; + _nc_scroll_optimize; + _nc_scroll_window; + _nc_scrolln; + _nc_setupscreen; + _nc_sigaction; + _nc_signal_handler; + _nc_slk_format; + _nc_slk_initialize; + _nc_synchook; + _nc_trace_xnames; + _nc_vsscanf; + _nc_waddch_nosync; +}; + +NCURSES_5.1.20000708 { + global: + assume_default_colors; + erase; + touchline; + touchwin; +} NCURSES_5.0.19991023; + +NCURSES_5.3.20021019 { + global: + is_term_resized; + resize_term; + local: + _nc_reset_colors; + _nc_varargs; + _nc_wgetch; +} NCURSES_5.1.20000708; + +NCURSES_5.4.20040208 { + global: + _nc_optimize_enable; + local: + _nc_Touchline; + _nc_Touchpan; + _nc_Wnoutrefresh; + _nc_dPanel; + _nc_dStack; + _nc_fifo_dump; + _nc_insert_ch; + _nc_linedump; + _nc_my_visbuf; + _tracedump; + _tracemouse; +} NCURSES_5.3.20021019; + +NCURSES_5.5.20051010 { + local: + _nc_Calculate_Text_Width; + _nc_retrace_field; + _nc_retrace_field_ptr; + _nc_retrace_field_type; + _nc_retrace_form; + _nc_retrace_form_hook; + _nc_retrace_item; + _nc_retrace_item_opts; + _nc_retrace_item_ptr; + _nc_retrace_menu; + _nc_retrace_menu_hook; + _nc_retrace_menu_opts; + _nc_retrace_panel; +} NCURSES_5.4.20040208; + +NCURSES_5.6.20061217 { + global: + getbegx; + getbegy; + getcurx; + getcury; + getmaxx; + getmaxy; + getparx; + getpary; + nofilter; + use_legacy_coding; + wgetch_events; + wgetnstr_events; +} NCURSES_5.5.20051010; + +NCURSES_5.7.20081102 { + global: + getattrs; + is_cleared; + is_idcok; + is_idlok; + is_immedok; + is_keypad; + is_leaveok; + is_nodelay; + is_notimeout; + is_scrollok; + is_syncok; + set_escdelay; + use_screen; + use_window; + wgetparent; + wgetscrreg; + local: + _nc_tracemouse; + _nc_ungetch; +} NCURSES_5.6.20061217; + +NCURSES_5.8.20110226 { + global: + _nc_panelhook_sp; + assume_default_colors_sp; + beep_sp; + can_change_color_sp; + ceiling_panel; + color_content_sp; + doupdate_sp; + echo_sp; + endwin_sp; + filter_sp; + flash_sp; + get_escdelay; + get_escdelay_sp; + getmouse_sp; + getwin_sp; + ground_panel; + has_colors_sp; + has_mouse; + has_mouse_sp; + init_color_sp; + init_pair_sp; + is_pad; + is_subwin; + is_term_resized_sp; + isendwin_sp; + mcprint_sp; + mouseinterval_sp; + mousemask_sp; + mvcur_sp; + new_form_sp; + new_menu_sp; + newpad_sp; + newterm_sp; + newwin_sp; + nl_sp; + noecho_sp; + nofilter_sp; + nonl_sp; + pair_content_sp; + resize_term_sp; + resizeterm_sp; + restartterm_sp; + ripoffline_sp; + scr_init_sp; + scr_restore_sp; + scr_set_sp; + set_escdelay_sp; + slk_attr_set_sp; + slk_attr_sp; + slk_attroff_sp; + slk_attron_sp; + slk_attrset_sp; + slk_clear_sp; + slk_color_sp; + slk_init_sp; + slk_label_sp; + slk_noutrefresh_sp; + slk_refresh_sp; + slk_restore_sp; + slk_set_sp; + slk_touch_sp; + start_color_sp; + termattrs_sp; + ungetch_sp; + ungetmouse_sp; + update_panels_sp; + use_default_colors_sp; + use_legacy_coding_sp; + vidattr_sp; + vidputs_sp; + local: + _nc_TYPE_ALNUM; + _nc_TYPE_ALPHA; + _nc_TYPE_ENUM; + _nc_TYPE_INTEGER; + _nc_TYPE_IPV4; + _nc_TYPE_NUMERIC; + _nc_TYPE_REGEXP; + _nc_curscr_of; + _nc_do_color_sp; + _nc_form_cursor; + _nc_format_slks; + _nc_free_and_exit_sp; + _nc_freeall_sp; + _nc_fty_generic; + _nc_generic_fieldtype; + _nc_get_fieldbuffer; + _nc_hash_map_sp; + _nc_linedump_sp; + _nc_make_oldhash_sp; + _nc_makenew_sp; + _nc_msec_cost_sp; + _nc_mvcur_init_sp; + _nc_mvcur_resume_sp; + _nc_mvcur_wrap_sp; + _nc_newscr_of; + _nc_printf_string_sp; + _nc_reset_colors_sp; + _nc_retrace_mmask_t; + _nc_ripoffline_sp; + _nc_screen_init_sp; + _nc_screen_resume_sp; + _nc_screen_wrap_sp; + _nc_scroll_oldhash_sp; + _nc_scroll_optimize_sp; + _nc_scrolln_sp; + _nc_set_generic_fieldtype; + _nc_setupscreen_sp; + _nc_stdscr_of; +} NCURSES_5.7.20081102; + +NCURSES_5.9.20150530 { + global: + wgetdelay; + local: + _nc_mvcur; + _nc_mvcur_sp; + _nc_trace_mmask_t; +} NCURSES_5.8.20110226; + +NCURSES_6.1.20171230 { + global: + alloc_pair; + alloc_pair_sp; + extended_color_content; + extended_color_content_sp; + extended_pair_content; + extended_pair_content_sp; + find_pair; + find_pair_sp; + free_pair; + free_pair_sp; + init_extended_color; + init_extended_color_sp; + init_extended_pair; + init_extended_pair_sp; + reset_color_pairs; + reset_color_pairs_sp; + unfocus_current_field; + local: + _nc_Unset_Current_Field; + _nc_change_pair; + _nc_init_color; + _nc_init_pair; + _nc_pair_content; + _nc_reset_color_pair; + _nc_set_color_pair; +} NCURSES_5.9.20150530; + +NCURSES_6.2.20200212 { + global: + exit_curses; + local: + _*; +} NCURSES_6.1.20171230; + +NCURSES_TIC_5.0.19991023 { + global: + _nc_capcmp; + _nc_check_termtype; + _nc_entry_match; + _nc_infotocap; + _nc_read_entry_source; + _nc_reset_input; + _nc_resolve_uses; + _nc_set_writedir; + _nc_syntax; + _nc_tic_expand; + _nc_tic_written; + _nc_trans_string; + _nc_write_entry; + local: + _nc_captoinfo; + _nc_comment_end; + _nc_comment_start; + _nc_copy_entry; + _nc_curr_file_pos; + _nc_curr_token; + _nc_get_token; + _nc_init_entry; + _nc_merge_entry; + _nc_panic_mode; + _nc_parse_entry; + _nc_push_token; + _nc_save_str; + _nc_start_line; + _nc_wrap_entry; +}; + +NCURSES_TIC_5.1.20000708 { + global: + _nc_disable_period; +} NCURSES_TIC_5.0.19991023; + +NCURSES_TIC_5.5.20051010 { + global: + _nc_alloc_entry_leaks; + _nc_captoinfo_leaks; + _nc_check_termtype2; + _nc_comp_scan_leaks; + _nc_resolve_uses2; +} NCURSES_TIC_5.1.20000708; + +NCURSES_TIC_5.7.20081102 { + global: + _nc_free_tic; + local: + _nc_comp_captab_leaks; + _nc_leaks_tic; +} NCURSES_TIC_5.5.20051010; + +NCURSES_TIC_5.9.20150530 { + global: + _nc_strict_bsd; +} NCURSES_TIC_5.7.20081102; + +NCURSES_TIC_6.1.20171230 { + global: + _nc_read_entry2; + _nc_write_object; + local: + _*; +} NCURSES_TIC_5.9.20150530; + +NCURSES_TINFO_5.0.19991023 { + global: + BC; + COLS; + LINES; + PC; + SP; + TABSIZE; + UP; + _nc_access; + _nc_add_to_try; + _nc_copy_termtype; + _nc_curr_col; + _nc_curr_line; + _nc_doalloc; + _nc_err_abort; + _nc_fallback; + _nc_find_entry; + _nc_find_type_entry; + _nc_first_name; + _nc_free_entries; + _nc_free_termtype; + _nc_free_tparm; + _nc_freeall; + _nc_get_hash_table; + _nc_get_table; + _nc_get_tty_mode; + _nc_get_type; + _nc_getenv_num; + _nc_head; + _nc_home_terminfo; + _nc_info_hash_table; + _nc_init_acs; + _nc_keep_tic_dir; + _nc_keypad; + _nc_name_match; + _nc_outch; + _nc_read_entry; + _nc_read_file_entry; + _nc_screen_chain; + _nc_set_buffer; + _nc_set_source; + _nc_set_tty_mode; + _nc_set_type; + _nc_suppress_warnings; + _nc_syserr_abort; + _nc_tail; + _nc_tic_dir; + _nc_timed_wait; + _nc_tinfo_fkeysf; + _nc_trace_buf; + _nc_tracing; + _nc_update_screensize; + _nc_visbuf; + _nc_visbuf2; + _nc_warning; + _tracechar; + acs_map; + baudrate; + boolcodes; + boolfnames; + boolnames; + cbreak; + cur_term; + curs_set; + curscr; + curses_version; + def_prog_mode; + def_shell_mode; + define_key; + del_curterm; + delay_output; + erasechar; + flushinp; + halfdelay; + has_ic; + has_il; + has_key; + idcok; + idlok; + intrflush; + keybound; + keyname; + keyok; + keypad; + killchar; + longname; + meta; + napms; + newscr; + nocbreak; + nodelay; + noqiflush; + noraw; + notimeout; + numcodes; + numfnames; + numnames; + ospeed; + putp; + qiflush; + raw; + reset_prog_mode; + reset_shell_mode; + resetty; + savetty; + set_curterm; + setupterm; + stdscr; + strcodes; + strfnames; + strnames; + termname; + tgetent; + tgetflag; + tgetnum; + tgetstr; + tgoto; + tigetflag; + tigetnum; + tigetstr; + tparm; + tputs; + trace; + ttytype; + typeahead; + unctrl; + use_env; + wtimeout; + local: + _nc_baudrate; + _nc_cap_hash_table; + _nc_capalias_table; + _nc_expand_try; + _nc_infoalias_table; + _nc_init_keytry; + _nc_key_names; + _nc_nulls_sent; + _nc_ospeed; + _nc_read_termcap; + _nc_read_termcap_entry; + _nc_remove_key; + _nc_remove_string; + _nc_trace_tries; + _nc_tracebits; +}; + +NCURSES_TINFO_5.1.20000708 { + global: + _nc_align_termtype; + _nc_flush; + _nc_tinfo_fkeys; + _nc_user_definable; + use_extended_names; +} NCURSES_TINFO_5.0.19991023; + +NCURSES_TINFO_5.2.20001021 { + global: + _nc_basename; + _nc_env_access; + _nc_safe_strcat; + _nc_safe_strcpy; + _nc_str_copy; + _nc_str_init; + _nc_str_null; +} NCURSES_TINFO_5.1.20000708; + +NCURSES_TINFO_5.3.20021019 { + global: + _nc_rootname; + _nc_tparm_err; + _nc_visbufn; +} NCURSES_TINFO_5.2.20001021; + +NCURSES_TINFO_5.4.20040208 { + global: + _nc_get_locale; + _nc_locale_breaks_acs; + _nc_outchars; + _nc_pathlast; + _nc_retrace_attr_t; + _nc_retrace_bool; + _nc_retrace_chtype; + _nc_retrace_int; + _nc_retrace_ptr; + _nc_retrace_sp; + _nc_retrace_unsigned; + _nc_retrace_win; + _nc_tparm_analyze; + _nc_tputs_trace; + _nc_trace_bufcat; + _nc_unicode_locale; + _traceattr; + _traceattr2; + _tracechtype; + _tracechtype2; + _tracef; + key_defined; + local: + _nc_altcharset_name; + _nc_trace_ttymode; +} NCURSES_TINFO_5.3.20021019; + +NCURSES_TINFO_5.5.20051010 { + global: + _nc_get_source; + _nc_retrace_cptr; + _nc_retrace_cvoid_ptr; + _nc_retrace_void_ptr; + _nc_setupterm; + _nc_trim_sgr0; + local: + _nc_delink_entry; + _nc_free_entry; +} NCURSES_TINFO_5.4.20040208; + +NCURSES_TINFO_5.6.20061217 { + global: + _nc_db_close; + _nc_db_first; + _nc_db_have_data; + _nc_db_next; + _nc_db_open; + _nc_db_put; + _nc_eventlist_timeout; + _nc_first_db; + _nc_handle_sigwinch; + _nc_is_abs_path; + _nc_is_dir_path; + _nc_is_file_path; + _nc_keyname_leaks; + _nc_last_db; + _nc_next_db; + _nc_read_termtype; + _nc_tgetent_leaks; + _nc_viscbuf; + local: + _nc_db_get; + _nc_db_have_index; + _nc_hashed_db; + _nc_viscbuf2; +} NCURSES_TINFO_5.5.20051010; + +NCURSES_TINFO_5.7.20081102 { + global: + _nc_free_tinfo; + _nc_get_alias_table; + _nc_get_screensize; + _nc_globals; + _nc_leaks_tinfo; + _nc_prescreen; + _nc_screen_of; + _nc_set_no_padding; + _nc_tracechar; + set_tabsize; + local: + _nc_keyname; + _nc_unctrl; +} NCURSES_TINFO_5.6.20061217; + +NCURSES_TINFO_5.8.20110226 { + global: + _nc_flush_sp; + _nc_get_tty_mode_sp; + _nc_init_acs_sp; + _nc_outc_wrapper; + _nc_outch_sp; + _nc_putp; + _nc_putp_flush; + _nc_putp_flush_sp; + _nc_putp_sp; + _nc_retrace_int_attr_t; + _nc_set_buffer_sp; + _nc_set_tty_mode_sp; + baudrate_sp; + cbreak_sp; + curs_set_sp; + def_prog_mode_sp; + def_shell_mode_sp; + define_key_sp; + del_curterm_sp; + delay_output_sp; + erasechar_sp; + flushinp_sp; + halfdelay_sp; + has_ic_sp; + has_il_sp; + has_key_sp; + intrflush_sp; + key_defined_sp; + keybound_sp; + keyname_sp; + keyok_sp; + killchar_sp; + longname_sp; + napms_sp; + new_prescr; + nocbreak_sp; + noqiflush_sp; + noraw_sp; + putp_sp; + qiflush_sp; + raw_sp; + reset_prog_mode_sp; + reset_shell_mode_sp; + resetty_sp; + savetty_sp; + set_curterm_sp; + set_tabsize_sp; + termname_sp; + tgetent_sp; + tgetflag_sp; + tgetnum_sp; + tgetstr_sp; + tigetflag_sp; + tigetnum_sp; + tigetstr_sp; + tiparm; + tputs_sp; + typeahead_sp; + unctrl_sp; + use_env_sp; + local: + _nc_get_hash_info; + _nc_retrace_char; + _nc_setup_tinfo; + _nc_tinfo_cmdch; +} NCURSES_TINFO_5.7.20081102; + +NCURSES_TINFO_5.9.20150530 { + global: + _nc_init_termtype; + _nc_putchar; + _nc_putchar_sp; + use_tioctl; + use_tioctl_sp; + local: + _nc_comp_error_leaks; + _nc_db_iterator_leaks; + _nc_setenv_num; +} NCURSES_TINFO_5.8.20110226; + +NCURSES_TINFO_6.1.20171230 { + global: + _nc_copy_termtype2; + _nc_export_termtype2; + _nc_fallback2; + _nc_free_termtype2; +} NCURSES_TINFO_5.9.20150530; + +NCURSES_TINFO_6.2.20200212 { + global: + _nc_find_user_entry; + _nc_fmt_funcptr; + _nc_wacs_width; + curses_trace; + exit_terminfo; +} NCURSES_TINFO_6.1.20171230; + +NCURSES_TINFO_6.2.20211010 { + global: + _nc_reset_tparm; + _nc_safe_fopen; + _nc_safe_open3; + _nc_tiparm; + local: + _*; +} NCURSES_TINFO_6.2.20200212; diff --git a/deps/ncurses-6.3/package/ncurses.spec b/deps/ncurses-6.3/package/ncurses.spec new file mode 100644 index 0000000..e7d1945 --- /dev/null +++ b/deps/ncurses-6.3/package/ncurses.spec @@ -0,0 +1,188 @@ +Summary: shared libraries for terminal handling +Name: ncurses6 +Version: 6.3 +Release: 20211021 +License: X11 +Group: Development/Libraries +Source: ncurses-%{version}-%{release}.tgz +# URL: https://invisible-island.net/ncurses/ + +%global MY_ABI 6 + +# save value before redefining +%global sys_libdir %{_libdir} + +# was redefined... +#global _prefix /usr/local/ncurses#{MY_ABI} + +%global MY_PKG %{sys_libdir}/pkgconfig +%define MYDATA /usr/local/ncurses/share/terminfo + +%description +The ncurses library routines are a terminal-independent method of +updating character screens with reasonable optimization. + +This package is used for testing ABI %{MY_ABI}. + +%prep + +%global is_mandriva %(test -f /etc/mandriva-release && echo 1 || echo 0) +%global is_fedora %(test -f /usr/bin/dnf && echo 1 || echo 0) +%global is_centos %(test -f /etc/centos-release && echo 1 || echo 0) +%global is_redhat %(test -f /etc/redhat-release && echo 1 || echo 0) +%global is_scilinux %(test -f /etc/sl-release && echo 1 || echo 0) +%global is_suse %(test -f /etc/SuSE-release && echo 1 || echo 0) + +%if %{is_redhat} +# generate debug/debug-source packages. +%else +%define debug_package %{nil} +%endif + +%if %{is_mandriva} +%define _disable_ld_as_needed 1 +%define _disable_ld_no_undefined 1 +# libtool is not used here... +%define _disable_libtoolize 1 +%define _disable_ld_build_id 1 +%endif + +%if %{is_fedora} || %{is_scilinux} || %{is_centos} +# workaround for toolset breakage in Fedora 28 +%define _test_relink --enable-relink +%else +%define _test_relink --disable-relink +%endif + +%setup -q -n ncurses-%{version}-%{release} + +%build +%define CFG_OPTS \\\ + --target %{_target_platform} \\\ + --prefix=%{_prefix} \\\ + --bindir=%{_bindir} \\\ + --includedir=%{_includedir} \\\ + --libdir=%{_libdir} \\\ + --includedir='${prefix}/include' \\\ + --disable-echo \\\ + --disable-getcap \\\ + --disable-leaks \\\ + --disable-macros \\\ + --disable-overwrite \\\ + %{_test_relink} \\\ + --disable-termcap \\\ + --enable-hard-tabs \\\ + --enable-opaque-curses \\\ + --enable-opaque-form \\\ + --enable-opaque-menu \\\ + --enable-opaque-panel \\\ + --enable-pc-files \\\ + --disable-rpath \\\ + --enable-stdnoreturn \\\ + --enable-warnings \\\ + --enable-wgetch-events \\\ + --enable-widec \\\ + --enable-xmc-glitch \\\ + --program-suffix=%{MY_ABI} \\\ + --verbose \\\ + --with-abi-version=%{MY_ABI} \\\ + --with-config-suffix=dev \\\ + --with-cxx-shared \\\ + --with-default-terminfo-dir=%{MYDATA} \\\ + --with-develop \\\ + --with-extra-suffix=%{MY_ABI} \\\ + --with-install-prefix=$RPM_BUILD_ROOT \\\ + --with-pkg-config-libdir=%{MY_PKG} \\\ + --with-shared \\\ + --with-terminfo-dirs=%{MYDATA}:/usr/share/terminfo \\\ + --with-termlib \\\ + --with-ticlib \\\ + --with-trace \\\ + --with-versioned-syms \\\ + --with-xterm-kbs=DEL \\\ + --without-ada \\\ + --without-debug \\\ + --without-normal + +%configure %{CFG_OPTS} + +make + +%install +rm -rf $RPM_BUILD_ROOT + +make install.libs install.progs +rm -f test/ncurses +( cd test && make ncurses LOCAL_LIBDIR=%{_libdir} && mv ncurses $RPM_BUILD_ROOT/%{_bindir}/ncurses%{MY_ABI} ) + +%if %{is_mandriva} +# check this first because Mageia has the /etc/redhat-release file... +%else +%if %{is_fedora} +%ldconfig_scriptlets libs +%ldconfig_scriptlets c++-libs +%endif +%endif + +%clean +if rm -rf $RPM_BUILD_ROOT; then + echo OK +else + find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1 +fi +exit 0 + +%files +%defattr(-,root,root,-) +%{_bindir}/* +%{_includedir}/* +%{_libdir}/* + +%changelog + +* Sat Oct 16 2021 Thomas Dickey +- disable rpath to address QA_RPATHS=1 warning. + +* Tue Dec 24 2019 Thomas Dickey +- drop custom CC_NORMAL warning flags because setting CFLAGS interferes with + matching Fedora's PIE/PIC configuration. Also, generate debug/debug-source + packages. + +* Sat Nov 16 2019 Thomas Dickey +- modify clean-rule to work around Fedora NFS bugs. + +* Sat Aug 25 2018 Thomas E. Dickey +- split spec-file into ncurses6 and ncursest6 to work around toolset breakage + in Fedora 28 + +* Sat Jun 02 2018 Thomas E. Dickey +- build-fix for Mageia + +* Sat May 26 2018 Thomas E. Dickey +- use predefined configure-macro +- separate ncurses6/ncursest6 packages + +* Sat Feb 10 2018 Thomas E. Dickey +- add ncursest6 package +- add several development features + +* Mon Jan 01 2018 Thomas E. Dickey +- drop redundant files pattern for "*.pc" + +* Tue Dec 26 2017 Thomas E. Dickey +- add --with-config-suffix option + +* Sun Apr 26 2015 Thomas E. Dickey +- move package to /usr + +* Sun Apr 12 2015 Thomas E. Dickey +- factor-out MY_ABI + +* Sat Mar 09 2013 Thomas E. Dickey +- add --with-cxx-shared option to demonstrate c++ binding as shared library + +* Sat Oct 27 2012 Thomas E. Dickey +- add ncurses program as "ncurses6" to provide demonstration. + +* Fri Jun 08 2012 Thomas E. Dickey +- initial version. diff --git a/deps/ncurses-6.3/package/ncurses.sym b/deps/ncurses-6.3/package/ncurses.sym new file mode 100644 index 0000000..d2f6fbc --- /dev/null +++ b/deps/ncurses-6.3/package/ncurses.sym @@ -0,0 +1,890 @@ +# $Id: ncurses.sym,v 1.37 2021/08/19 23:50:26 tom Exp $ +# script for shared library symbol-visibility using libtool +# +# This file was generated by ncu-mapsyms +# Configure options (5.0.19991023) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.1.20000708) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.2.20001021) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.3.20021019) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.4.20040208) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.5.20051010) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.6.20061217) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace +# Configure options (6.0.20161029) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-termlib --with-ticlib --with-trace +BC +COLORS +COLOR_PAIR +COLOR_PAIRS +COLS +ESCDELAY +LINES +PAIR_NUMBER +PC +SP +TABSIZE +TYPE_ALNUM +TYPE_ALPHA +TYPE_ENUM +TYPE_INTEGER +TYPE_IPV4 +TYPE_NUMERIC +TYPE_REGEXP +UP +_nc_Default_Field +_nc_Default_Form +_nc_access +_nc_add_to_try +_nc_align_termtype +_nc_alloc_entry_leaks +_nc_basename +_nc_capcmp +_nc_captoinfo_leaks +_nc_check_termtype +_nc_check_termtype2 +_nc_comp_scan_leaks +_nc_copy_termtype +_nc_copy_termtype2 +_nc_curr_col +_nc_curr_line +_nc_db_close +_nc_db_first +_nc_db_have_data +_nc_db_next +_nc_db_open +_nc_db_put +_nc_disable_period +_nc_doalloc +_nc_entry_match +_nc_env_access +_nc_err_abort +_nc_eventlist_timeout +_nc_export_termtype2 +_nc_fallback +_nc_fallback2 +_nc_find_entry +_nc_find_type_entry +_nc_find_user_entry +_nc_first_db +_nc_first_name +_nc_flush +_nc_flush_sp +_nc_fmt_funcptr +_nc_free_and_exit +_nc_free_entries +_nc_free_termtype +_nc_free_termtype2 +_nc_free_tic +_nc_free_tinfo +_nc_free_tparm +_nc_freeall +_nc_get_alias_table +_nc_get_hash_table +_nc_get_locale +_nc_get_screensize +_nc_get_source +_nc_get_table +_nc_get_tty_mode +_nc_get_tty_mode_sp +_nc_get_type +_nc_getenv_num +_nc_globals +_nc_handle_sigwinch +_nc_has_mouse +_nc_head +_nc_home_terminfo +_nc_info_hash_table +_nc_infotocap +_nc_init_acs +_nc_init_acs_sp +_nc_init_termtype +_nc_is_abs_path +_nc_is_dir_path +_nc_is_file_path +_nc_keep_tic_dir +_nc_keyname_leaks +_nc_keypad +_nc_last_db +_nc_leaks_tinfo +_nc_locale_breaks_acs +_nc_name_match +_nc_next_db +_nc_optimize_enable +_nc_outc_wrapper +_nc_outch +_nc_outch_sp +_nc_outchars +_nc_panelhook +_nc_panelhook_sp +_nc_pathlast +_nc_prescreen +_nc_putchar +_nc_putchar_sp +_nc_putp +_nc_putp_flush +_nc_putp_flush_sp +_nc_putp_sp +_nc_read_entry +_nc_read_entry2 +_nc_read_entry_source +_nc_read_file_entry +_nc_read_termtype +_nc_reset_input +_nc_reset_tparm +_nc_resolve_uses +_nc_resolve_uses2 +_nc_retrace_attr_t +_nc_retrace_bool +_nc_retrace_chtype +_nc_retrace_cptr +_nc_retrace_cvoid_ptr +_nc_retrace_int +_nc_retrace_int_attr_t +_nc_retrace_ptr +_nc_retrace_sp +_nc_retrace_unsigned +_nc_retrace_void_ptr +_nc_retrace_win +_nc_ripoffline +_nc_rootname +_nc_safe_fopen +_nc_safe_open3 +_nc_safe_strcat +_nc_safe_strcpy +_nc_screen_chain +_nc_screen_of +_nc_set_buffer +_nc_set_buffer_sp +_nc_set_no_padding +_nc_set_source +_nc_set_tty_mode +_nc_set_tty_mode_sp +_nc_set_type +_nc_set_writedir +_nc_setupterm +_nc_str_copy +_nc_str_init +_nc_str_null +_nc_strict_bsd +_nc_suppress_warnings +_nc_syntax +_nc_syserr_abort +_nc_tail +_nc_tgetent_leaks +_nc_tic_dir +_nc_tic_expand +_nc_tic_written +_nc_timed_wait +_nc_tinfo_fkeys +_nc_tinfo_fkeysf +_nc_tiparm +_nc_tparm_analyze +_nc_tparm_err +_nc_tputs_trace +_nc_trace_buf +_nc_trace_bufcat +_nc_tracechar +_nc_tracing +_nc_trans_string +_nc_trim_sgr0 +_nc_unicode_locale +_nc_update_screensize +_nc_user_definable +_nc_visbuf +_nc_visbuf2 +_nc_visbufn +_nc_viscbuf +_nc_wacs_width +_nc_warning +_nc_write_entry +_nc_write_object +_traceattr +_traceattr2 +_tracechar +_tracechtype +_tracechtype2 +_tracef +acs_map +addch +addchnstr +addchstr +addnstr +addstr +alloc_pair +alloc_pair_sp +assume_default_colors +assume_default_colors_sp +attr_get +attr_off +attr_on +attr_set +attroff +attron +attrset +baudrate +baudrate_sp +beep +beep_sp +bkgd +bkgdset +boolcodes +boolfnames +boolnames +border +bottom_panel +box +can_change_color +can_change_color_sp +cbreak +cbreak_sp +ceiling_panel +chgat +clear +clearok +clrtobot +clrtoeol +color_content +color_content_sp +color_set +copywin +cur_term +current_field +current_item +curs_set +curs_set_sp +curscr +curses_trace +curses_version +data_ahead +data_behind +def_prog_mode +def_prog_mode_sp +def_shell_mode +def_shell_mode_sp +define_key +define_key_sp +del_curterm +del_curterm_sp +del_panel +delay_output +delay_output_sp +delch +deleteln +delscreen +delwin +derwin +doupdate +doupdate_sp +dup_field +dupwin +dynamic_field_info +echo +echo_sp +echochar +endwin +endwin_sp +erase +erasechar +erasechar_sp +exit_curses +exit_terminfo +extended_color_content +extended_color_content_sp +extended_pair_content +extended_pair_content_sp +field_arg +field_back +field_buffer +field_count +field_fore +field_index +field_info +field_init +field_just +field_opts +field_opts_off +field_opts_on +field_pad +field_status +field_term +field_type +field_userptr +filter +filter_sp +find_pair +find_pair_sp +flash +flash_sp +flushinp +flushinp_sp +form_driver +form_fields +form_init +form_opts +form_opts_off +form_opts_on +form_page +form_request_by_name +form_request_name +form_sub +form_term +form_userptr +form_win +free_field +free_fieldtype +free_form +free_item +free_menu +free_pair +free_pair_sp +get_escdelay +get_escdelay_sp +getattrs +getbegx +getbegy +getbkgd +getch +getcurx +getcury +getmaxx +getmaxy +getmouse +getmouse_sp +getnstr +getparx +getpary +getstr +getwin +getwin_sp +ground_panel +halfdelay +halfdelay_sp +has_colors +has_colors_sp +has_ic +has_ic_sp +has_il +has_il_sp +has_key +has_key_sp +has_mouse +has_mouse_sp +hide_panel +hline +idcok +idlok +immedok +inch +inchnstr +inchstr +init_color +init_color_sp +init_extended_color +init_extended_color_sp +init_extended_pair +init_extended_pair_sp +init_pair +init_pair_sp +initscr +innstr +insch +insdelln +insertln +insnstr +insstr +instr +intrflush +intrflush_sp +is_cleared +is_idcok +is_idlok +is_immedok +is_keypad +is_leaveok +is_linetouched +is_nodelay +is_notimeout +is_pad +is_scrollok +is_subwin +is_syncok +is_term_resized +is_term_resized_sp +is_wintouched +isendwin +isendwin_sp +item_count +item_description +item_index +item_init +item_name +item_opts +item_opts_off +item_opts_on +item_term +item_userptr +item_value +item_visible +key_defined +key_defined_sp +keybound +keybound_sp +keyname +keyname_sp +keyok +keyok_sp +keypad +killchar +killchar_sp +leaveok +link_field +link_fieldtype +longname +longname_sp +mcprint +mcprint_sp +menu_back +menu_driver +menu_fore +menu_format +menu_grey +menu_init +menu_items +menu_mark +menu_opts +menu_opts_off +menu_opts_on +menu_pad +menu_pattern +menu_request_by_name +menu_request_name +menu_spacing +menu_sub +menu_term +menu_userptr +menu_win +meta +mouse_trafo +mouseinterval +mouseinterval_sp +mousemask +mousemask_sp +move +move_field +move_panel +mvaddch +mvaddchnstr +mvaddchstr +mvaddnstr +mvaddstr +mvchgat +mvcur +mvcur_sp +mvdelch +mvderwin +mvgetch +mvgetnstr +mvgetstr +mvhline +mvinch +mvinchnstr +mvinchstr +mvinnstr +mvinsch +mvinsnstr +mvinsstr +mvinstr +mvprintw +mvscanw +mvvline +mvwaddch +mvwaddchnstr +mvwaddchstr +mvwaddnstr +mvwaddstr +mvwchgat +mvwdelch +mvwgetch +mvwgetnstr +mvwgetstr +mvwhline +mvwin +mvwinch +mvwinchnstr +mvwinchstr +mvwinnstr +mvwinsch +mvwinsnstr +mvwinsstr +mvwinstr +mvwprintw +mvwscanw +mvwvline +napms +napms_sp +new_field +new_fieldtype +new_form +new_form_sp +new_item +new_menu +new_menu_sp +new_page +new_panel +new_prescr +newpad +newpad_sp +newscr +newterm +newterm_sp +newwin +newwin_sp +nl +nl_sp +nocbreak +nocbreak_sp +nodelay +noecho +noecho_sp +nofilter +nofilter_sp +nonl +nonl_sp +noqiflush +noqiflush_sp +noraw +noraw_sp +notimeout +numcodes +numfnames +numnames +ospeed +overlay +overwrite +pair_content +pair_content_sp +panel_above +panel_below +panel_hidden +panel_userptr +panel_window +pechochar +pnoutrefresh +pos_form_cursor +pos_menu_cursor +post_form +post_menu +prefresh +printw +putp +putp_sp +putwin +qiflush +qiflush_sp +raw +raw_sp +redrawwin +refresh +replace_panel +reset_color_pairs +reset_color_pairs_sp +reset_prog_mode +reset_prog_mode_sp +reset_shell_mode +reset_shell_mode_sp +resetty +resetty_sp +resize_term +resize_term_sp +resizeterm +resizeterm_sp +restartterm +restartterm_sp +ripoffline +ripoffline_sp +savetty +savetty_sp +scale_form +scale_menu +scanw +scr_dump +scr_init +scr_init_sp +scr_restore +scr_restore_sp +scr_set +scr_set_sp +scrl +scroll +scrollok +set_current_field +set_current_item +set_curterm +set_curterm_sp +set_escdelay +set_escdelay_sp +set_field_back +set_field_buffer +set_field_fore +set_field_init +set_field_just +set_field_opts +set_field_pad +set_field_status +set_field_term +set_field_type +set_field_userptr +set_fieldtype_arg +set_fieldtype_choice +set_form_fields +set_form_init +set_form_opts +set_form_page +set_form_sub +set_form_term +set_form_userptr +set_form_win +set_item_init +set_item_opts +set_item_term +set_item_userptr +set_item_value +set_max_field +set_menu_back +set_menu_fore +set_menu_format +set_menu_grey +set_menu_init +set_menu_items +set_menu_mark +set_menu_opts +set_menu_pad +set_menu_pattern +set_menu_spacing +set_menu_sub +set_menu_term +set_menu_userptr +set_menu_win +set_new_page +set_panel_userptr +set_tabsize +set_tabsize_sp +set_term +set_top_row +setscrreg +setupterm +show_panel +slk_attr +slk_attr_off +slk_attr_on +slk_attr_set +slk_attr_set_sp +slk_attr_sp +slk_attroff +slk_attroff_sp +slk_attron +slk_attron_sp +slk_attrset +slk_attrset_sp +slk_clear +slk_clear_sp +slk_color +slk_color_sp +slk_init +slk_init_sp +slk_label +slk_label_sp +slk_noutrefresh +slk_noutrefresh_sp +slk_refresh +slk_refresh_sp +slk_restore +slk_restore_sp +slk_set +slk_set_sp +slk_touch +slk_touch_sp +standend +standout +start_color +start_color_sp +stdscr +strcodes +strfnames +strnames +subpad +subwin +syncok +termattrs +termattrs_sp +termname +termname_sp +tgetent +tgetent_sp +tgetflag +tgetflag_sp +tgetnum +tgetnum_sp +tgetstr +tgetstr_sp +tgoto +tigetflag +tigetflag_sp +tigetnum +tigetnum_sp +tigetstr +tigetstr_sp +timeout +tiparm +top_panel +top_row +touchline +touchwin +tparm +tputs +tputs_sp +trace +ttytype +typeahead +typeahead_sp +unctrl +unctrl_sp +unfocus_current_field +ungetch +ungetch_sp +ungetmouse +ungetmouse_sp +unpost_form +unpost_menu +untouchwin +update_panels +update_panels_sp +use_default_colors +use_default_colors_sp +use_env +use_env_sp +use_extended_names +use_legacy_coding +use_legacy_coding_sp +use_screen +use_tioctl +use_tioctl_sp +use_window +vid_attr +vidattr +vidattr_sp +vidputs +vidputs_sp +vline +vw_printw +vw_scanw +vwprintw +vwscanw +waddch +waddchnstr +waddchstr +waddnstr +waddstr +wattr_get +wattr_off +wattr_on +wattr_set +wattroff +wattron +wattrset +wbkgd +wbkgdset +wborder +wchgat +wclear +wclrtobot +wclrtoeol +wcolor_set +wcursyncup +wdelch +wdeleteln +wechochar +wenclose +werase +wgetch +wgetch_events +wgetdelay +wgetnstr +wgetnstr_events +wgetparent +wgetscrreg +wgetstr +whline +winch +winchnstr +winchstr +winnstr +winsch +winsdelln +winsertln +winsnstr +winsstr +winstr +wmouse_trafo +wmove +wnoutrefresh +wprintw +wredrawln +wrefresh +wresize +wscanw +wscrl +wsetscrreg +wstandend +wstandout +wsyncdown +wsyncup +wtimeout +wtouchln +wvline diff --git a/deps/ncurses-6.3/package/ncursest.map b/deps/ncurses-6.3/package/ncursest.map new file mode 100644 index 0000000..205265d --- /dev/null +++ b/deps/ncurses-6.3/package/ncursest.map @@ -0,0 +1,1185 @@ +# $Id: ncursest.map,v 1.53 2021/10/10 15:22:33 tom Exp $ +# script for shared library symbol-versioning using ld +# +# This file was generated by ncu-mapsyms +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace +# Configure options (6.0.current) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace + +NCURSES_TIC_5.0.19991023 { + global: + _nc_capcmp; + _nc_check_termtype; + _nc_entry_match; + _nc_infotocap; + _nc_read_entry_source; + _nc_reset_input; + _nc_resolve_uses; + _nc_screen; + _nc_set_writedir; + _nc_syntax; + _nc_tic_expand; + _nc_tic_written; + _nc_trans_string; + _nc_write_entry; + local: + _nc_captoinfo; + _nc_comment_end; + _nc_comment_start; + _nc_copy_entry; + _nc_curr_file_pos; + _nc_curr_token; + _nc_get_token; + _nc_init_entry; + _nc_merge_entry; + _nc_panic_mode; + _nc_parse_entry; + _nc_push_token; + _nc_save_str; + _nc_start_line; + _nc_wrap_entry; +}; + +NCURSES_TIC_5.1.20000708 { + global: + _nc_disable_period; +} NCURSES_TIC_5.0.19991023; + +NCURSES_TIC_5.5.20051010 { + global: + _nc_alloc_entry_leaks; + _nc_captoinfo_leaks; + _nc_check_termtype2; + _nc_comp_scan_leaks; + _nc_resolve_uses2; +} NCURSES_TIC_5.1.20000708; + +NCURSES_TIC_5.7.20081102 { + global: + _nc_free_tic; + local: + _nc_comp_captab_leaks; + _nc_leaks_tic; +} NCURSES_TIC_5.5.20051010; + +NCURSES_TIC_5.9.20150530 { + global: + _nc_strict_bsd; +} NCURSES_TIC_5.7.20081102; + +NCURSES_TIC_6.1.20171230 { + global: + _nc_read_entry2; + _nc_write_object; + local: + _*; +} NCURSES_TIC_5.9.20150530; + +NCURSES_TINFO_5.0.19991023 { + global: + BC; + PC; + SP; + UP; + _nc_access; + _nc_add_to_try; + _nc_copy_termtype; + _nc_curr_col; + _nc_curr_line; + _nc_doalloc; + _nc_err_abort; + _nc_fallback; + _nc_find_entry; + _nc_find_type_entry; + _nc_first_name; + _nc_free_entries; + _nc_free_termtype; + _nc_free_tparm; + _nc_freeall; + _nc_get_hash_table; + _nc_get_table; + _nc_get_tty_mode; + _nc_get_type; + _nc_getenv_num; + _nc_head; + _nc_home_terminfo; + _nc_init_acs; + _nc_keep_tic_dir; + _nc_keypad; + _nc_name_match; + _nc_outch; + _nc_read_entry; + _nc_read_file_entry; + _nc_screen_chain; + _nc_set_buffer; + _nc_set_source; + _nc_set_tty_mode; + _nc_set_type; + _nc_suppress_warnings; + _nc_syserr_abort; + _nc_tail; + _nc_tic_dir; + _nc_timed_wait; + _nc_tinfo_fkeysf; + _nc_trace_buf; + _nc_tracing; + _nc_update_screensize; + _nc_visbuf; + _nc_visbuf2; + _nc_warning; + _tracechar; + baudrate; + cbreak; + curs_set; + curses_version; + def_prog_mode; + def_shell_mode; + define_key; + del_curterm; + delay_output; + erasechar; + flushinp; + halfdelay; + has_ic; + has_il; + has_key; + idcok; + idlok; + intrflush; + keybound; + keyname; + keyok; + keypad; + killchar; + longname; + meta; + napms; + nocbreak; + nodelay; + noqiflush; + noraw; + notimeout; + ospeed; + putp; + qiflush; + raw; + reset_prog_mode; + reset_shell_mode; + resetty; + savetty; + set_curterm; + setupterm; + termname; + tgetent; + tgetflag; + tgetnum; + tgetstr; + tgoto; + tigetflag; + tigetnum; + tigetstr; + tparm; + tputs; + trace; + typeahead; + unctrl; + use_env; + wtimeout; + local: + _nc_baudrate; + _nc_expand_try; + _nc_init_keytry; + _nc_nulls_sent; + _nc_ospeed; + _nc_read_termcap; + _nc_read_termcap_entry; + _nc_remove_key; + _nc_remove_string; + _nc_trace_tries; + _nc_tracebits; +}; + +NCURSES_TINFO_5.1.20000708 { + global: + _nc_align_termtype; + _nc_flush; + _nc_tinfo_fkeys; + _nc_user_definable; + use_extended_names; +} NCURSES_TINFO_5.0.19991023; + +NCURSES_TINFO_5.2.20001021 { + global: + _nc_basename; + _nc_env_access; + _nc_safe_strcat; + _nc_safe_strcpy; + _nc_str_copy; + _nc_str_init; + _nc_str_null; +} NCURSES_TINFO_5.1.20000708; + +NCURSES_TINFO_5.3.20021019 { + global: + _nc_rootname; + _nc_tparm_err; + _nc_visbufn; +} NCURSES_TINFO_5.2.20001021; + +NCURSES_TINFO_5.4.20040208 { + global: + _nc_get_locale; + _nc_locale_breaks_acs; + _nc_pathlast; + _nc_retrace_attr_t; + _nc_retrace_bool; + _nc_retrace_chtype; + _nc_retrace_int; + _nc_retrace_ptr; + _nc_retrace_sp; + _nc_retrace_unsigned; + _nc_retrace_win; + _nc_tparm_analyze; + _nc_trace_bufcat; + _nc_unicode_locale; + _traceattr; + _traceattr2; + _tracechtype; + _tracechtype2; + _tracef; + key_defined; + local: + _nc_altcharset_name; + _nc_trace_ttymode; +} NCURSES_TINFO_5.3.20021019; + +NCURSES_TINFO_5.5.20051010 { + global: + _nc_get_source; + _nc_retrace_cptr; + _nc_retrace_cvoid_ptr; + _nc_retrace_void_ptr; + _nc_setupterm; + _nc_trim_sgr0; + local: + _nc_delink_entry; + _nc_free_entry; +} NCURSES_TINFO_5.4.20040208; + +NCURSES_TINFO_5.6.20061217 { + global: + _nc_db_close; + _nc_db_first; + _nc_db_have_data; + _nc_db_next; + _nc_db_open; + _nc_db_put; + _nc_eventlist_timeout; + _nc_first_db; + _nc_handle_sigwinch; + _nc_is_abs_path; + _nc_is_dir_path; + _nc_is_file_path; + _nc_keyname_leaks; + _nc_last_db; + _nc_next_db; + _nc_read_termtype; + _nc_tgetent_leaks; + _nc_viscbuf; + local: + _nc_db_get; + _nc_db_have_index; + _nc_hashed_db; + _nc_viscbuf2; +} NCURSES_TINFO_5.5.20051010; + +NCURSES_TINFO_5.7.20081102 { + global: + _nc_COLS; + _nc_LINES; + _nc_TABSIZE; + _nc__nc_outchars; + _nc_acs_map; + _nc_boolcodes; + _nc_boolfnames; + _nc_boolnames; + _nc_codes_leaks; + _nc_count_outchars; + _nc_cur_term; + _nc_curscr; + _nc_free_tinfo; + _nc_get_alias_table; + _nc_get_screensize; + _nc_globals; + _nc_init_pthreads; + _nc_leaks_tinfo; + _nc_locked_tracef; + _nc_mutex_lock; + _nc_mutex_trylock; + _nc_mutex_unlock; + _nc_names_leaks; + _nc_newscr; + _nc_numcodes; + _nc_numfnames; + _nc_numnames; + _nc_prescreen; + _nc_ptr_Cols; + _nc_ptr_Lines; + _nc_screen_of; + _nc_set_no_padding; + _nc_set_tputs_trace; + _nc_stdscr; + _nc_strcodes; + _nc_strfnames; + _nc_strnames; + _nc_tracechar; + _nc_ttytype; + _nc_use_tracef; + set_tabsize; + local: + _nc__nc_tputs_trace; + _nc_keyname; + _nc_mutex_init; + _nc_unctrl; +} NCURSES_TINFO_5.6.20061217; + +NCURSES_TINFO_5.8.20110226 { + global: + _nc_flush_sp; + _nc_get_tty_mode_sp; + _nc_init_acs_sp; + _nc_outc_wrapper; + _nc_outch_sp; + _nc_putp; + _nc_putp_flush; + _nc_putp_flush_sp; + _nc_putp_sp; + _nc_retrace_int_attr_t; + _nc_set_buffer_sp; + _nc_set_tty_mode_sp; + _nc_sigprocmask; + baudrate_sp; + cbreak_sp; + curs_set_sp; + def_prog_mode_sp; + def_shell_mode_sp; + define_key_sp; + del_curterm_sp; + delay_output_sp; + erasechar_sp; + flushinp_sp; + halfdelay_sp; + has_ic_sp; + has_il_sp; + has_key_sp; + intrflush_sp; + key_defined_sp; + keybound_sp; + keyname_sp; + keyok_sp; + killchar_sp; + longname_sp; + napms_sp; + new_prescr; + nocbreak_sp; + noqiflush_sp; + noraw_sp; + putp_sp; + qiflush_sp; + raw_sp; + reset_prog_mode_sp; + reset_shell_mode_sp; + resetty_sp; + savetty_sp; + set_curterm_sp; + set_tabsize_sp; + termname_sp; + tgetent_sp; + tgetflag_sp; + tgetnum_sp; + tgetstr_sp; + tigetflag_sp; + tigetnum_sp; + tigetstr_sp; + tiparm; + tputs_sp; + typeahead_sp; + unctrl_sp; + use_env_sp; + local: + _nc_get_cur_term; + _nc_get_cur_term_sp; + _nc_get_hash_info; + _nc_ptr_Tabsize; + _nc_retrace_char; + _nc_setup_tinfo; + _nc_tinfo_cmdch; +} NCURSES_TINFO_5.7.20081102; + +NCURSES_TINFO_5.9.20150530 { + global: + _nc_init_termtype; + _nc_putchar; + _nc_putchar_sp; + use_tioctl; + use_tioctl_sp; + local: + _nc_comp_error_leaks; + _nc_db_iterator_leaks; + _nc_setenv_num; +} NCURSES_TINFO_5.8.20110226; + +NCURSES_TINFO_6.1.20171230 { + global: + _nc_copy_termtype2; + _nc_export_termtype2; + _nc_fallback2; + _nc_find_prescr; + _nc_forget_prescr; + _nc_free_termtype2; +} NCURSES_TINFO_5.9.20150530; + +NCURSES_TINFO_6.2.20200212 { + global: + _nc_find_user_entry; + _nc_fmt_funcptr; + _nc_wacs_width; + curses_trace; + exit_terminfo; +} NCURSES_TINFO_6.1.20171230; + +NCURSES_TINFO_6.2.20211010 { + global: + _nc_reset_tparm; + _nc_safe_fopen; + _nc_safe_open3; + _nc_tiparm; + local: + _*; +} NCURSES_TINFO_6.2.20200212; + +NCURSEST_5.7.20081102 { + global: + COLOR_PAIR; + PAIR_NUMBER; + TYPE_ALNUM; + TYPE_ALPHA; + TYPE_ENUM; + TYPE_INTEGER; + TYPE_IPV4; + TYPE_NUMERIC; + TYPE_REGEXP; + _nc_COLORS; + _nc_COLOR_PAIRS; + _nc_Default_Field; # deprecated in ABI6 + _nc_Default_Form; # deprecated in ABI6 + _nc_ESCDELAY; + _nc_free_and_exit; + _nc_has_mouse; # deprecated in ABI6 + _nc_optimize_enable; + _nc_panelhook; + _nc_ripoffline; + addch; + addchnstr; + addchstr; + addnstr; + addstr; + assume_default_colors; + attr_get; + attr_off; + attr_on; + attr_set; + attroff; + attron; + attrset; + beep; + bkgd; + bkgdset; + border; + bottom_panel; + box; + can_change_color; + chgat; + clear; + clearok; + clrtobot; + clrtoeol; + color_content; + color_set; + copywin; + current_field; + current_item; + data_ahead; + data_behind; + del_panel; + delch; + deleteln; + delscreen; + delwin; + derwin; + doupdate; + dup_field; + dupwin; + dynamic_field_info; + echo; + echochar; + endwin; + erase; + field_arg; + field_back; + field_buffer; + field_count; + field_fore; + field_index; + field_info; + field_init; + field_just; + field_opts; + field_opts_off; + field_opts_on; + field_pad; + field_status; + field_term; + field_type; + field_userptr; + filter; + flash; + form_driver; + form_fields; + form_init; + form_opts; + form_opts_off; + form_opts_on; + form_page; + form_request_by_name; + form_request_name; + form_sub; + form_term; + form_userptr; + form_win; + free_field; + free_fieldtype; + free_form; + free_item; + free_menu; + getattrs; + getbegx; + getbegy; + getbkgd; + getch; + getcurx; + getcury; + getmaxx; + getmaxy; + getmouse; + getnstr; + getparx; + getpary; + getstr; + getwin; + has_colors; + hide_panel; + hline; + immedok; + inch; + inchnstr; + inchstr; + init_color; + init_pair; + initscr; + innstr; + insch; + insdelln; + insertln; + insnstr; + insstr; + instr; + is_cleared; + is_idcok; + is_idlok; + is_immedok; + is_keypad; + is_leaveok; + is_linetouched; + is_nodelay; + is_notimeout; + is_scrollok; + is_syncok; + is_term_resized; + is_wintouched; + isendwin; + item_count; + item_description; + item_index; + item_init; + item_name; + item_opts; + item_opts_off; + item_opts_on; + item_term; + item_userptr; + item_value; + item_visible; + leaveok; + link_field; + link_fieldtype; + mcprint; + menu_back; + menu_driver; + menu_fore; + menu_format; + menu_grey; + menu_init; + menu_items; + menu_mark; + menu_opts; + menu_opts_off; + menu_opts_on; + menu_pad; + menu_pattern; + menu_request_by_name; + menu_request_name; + menu_spacing; + menu_sub; + menu_term; + menu_userptr; + menu_win; + mouse_trafo; + mouseinterval; + mousemask; + move; + move_field; + move_panel; + mvaddch; + mvaddchnstr; + mvaddchstr; + mvaddnstr; + mvaddstr; + mvchgat; + mvcur; + mvdelch; + mvderwin; + mvgetch; + mvgetnstr; + mvgetstr; + mvhline; + mvinch; + mvinchnstr; + mvinchstr; + mvinnstr; + mvinsch; + mvinsnstr; + mvinsstr; + mvinstr; + mvprintw; + mvscanw; + mvvline; + mvwaddch; + mvwaddchnstr; + mvwaddchstr; + mvwaddnstr; + mvwaddstr; + mvwchgat; + mvwdelch; + mvwgetch; + mvwgetnstr; + mvwgetstr; + mvwhline; + mvwin; + mvwinch; + mvwinchnstr; + mvwinchstr; + mvwinnstr; + mvwinsch; + mvwinsnstr; + mvwinsstr; + mvwinstr; + mvwprintw; + mvwscanw; + mvwvline; + new_field; + new_fieldtype; + new_form; + new_item; + new_menu; + new_page; + new_panel; + newpad; + newterm; + newwin; + nl; + noecho; + nofilter; + nonl; + overlay; + overwrite; + pair_content; + panel_above; + panel_below; + panel_hidden; + panel_userptr; + panel_window; + pechochar; + pnoutrefresh; + pos_form_cursor; + pos_menu_cursor; + post_form; + post_menu; + prefresh; + printw; + putwin; + redrawwin; + refresh; + replace_panel; + resize_term; + resizeterm; + restartterm; + ripoffline; + scale_form; + scale_menu; + scanw; + scr_dump; + scr_init; + scr_restore; + scr_set; + scrl; + scroll; + scrollok; + set_current_field; + set_current_item; + set_escdelay; + set_field_back; + set_field_buffer; + set_field_fore; + set_field_init; + set_field_just; + set_field_opts; + set_field_pad; + set_field_status; + set_field_term; + set_field_type; + set_field_userptr; + set_fieldtype_arg; + set_fieldtype_choice; + set_form_fields; + set_form_init; + set_form_opts; + set_form_page; + set_form_sub; + set_form_term; + set_form_userptr; + set_form_win; + set_item_init; + set_item_opts; + set_item_term; + set_item_userptr; + set_item_value; + set_max_field; + set_menu_back; + set_menu_fore; + set_menu_format; + set_menu_grey; + set_menu_init; + set_menu_items; + set_menu_mark; + set_menu_opts; + set_menu_pad; + set_menu_pattern; + set_menu_spacing; + set_menu_sub; + set_menu_term; + set_menu_userptr; + set_menu_win; + set_new_page; + set_panel_userptr; + set_term; + set_top_row; + setscrreg; + show_panel; + slk_attr; + slk_attr_set; + slk_attroff; + slk_attron; + slk_attrset; + slk_clear; + slk_color; + slk_init; + slk_label; + slk_noutrefresh; + slk_refresh; + slk_restore; + slk_set; + slk_touch; + standend; + standout; + start_color; + subpad; + subwin; + syncok; + termattrs; + timeout; + top_panel; + top_row; + touchline; + touchwin; + ungetch; + ungetmouse; + unpost_form; + unpost_menu; + untouchwin; + update_panels; + use_default_colors; + use_legacy_coding; + use_screen; + use_window; + vidattr; + vidputs; + vline; + vw_printw; + vw_scanw; + vwprintw; + vwscanw; + waddch; + waddchnstr; + waddchstr; + waddnstr; + waddstr; + wattr_get; + wattr_off; + wattr_on; + wattr_set; + wattroff; + wattron; + wattrset; + wbkgd; + wbkgdset; + wborder; + wchgat; + wclear; + wclrtobot; + wclrtoeol; + wcolor_set; + wcursyncup; + wdelch; + wdeleteln; + wechochar; + wenclose; + werase; + wgetch; + wgetch_events; + wgetnstr; + wgetnstr_events; + wgetparent; + wgetscrreg; + wgetstr; + whline; + winch; + winchnstr; + winchstr; + winnstr; + winsch; + winsdelln; + winsertln; + winsnstr; + winsstr; + winstr; + wmouse_trafo; + wmove; + wnoutrefresh; + wprintw; + wredrawln; + wrefresh; + wresize; + wscanw; + wscrl; + wsetscrreg; + wstandend; + wstandout; + wsyncdown; + wsyncup; + wtouchln; + wvline; + local: + _nc_Calculate_Item_Length_and_Width; + _nc_Calculate_Text_Width; + _nc_Connect_Items; + _nc_Copy_Argument; + _nc_Copy_Type; + _nc_Default_FieldType; + _nc_Default_Item; + _nc_Default_Menu; + _nc_Disconnect_Items; + _nc_Draw_Menu; + _nc_First_Active_Field; + _nc_Free_Argument; + _nc_Free_Type; + _nc_Internal_Validation; + _nc_Link_Items; + _nc_Make_Argument; + _nc_Match_Next_Character_In_Item_Name; + _nc_New_TopRow_and_CurrentItem; + _nc_Position_Form_Cursor; + _nc_Post_Item; + _nc_Refresh_Current_Field; + _nc_Set_Current_Field; + _nc_Set_Form_Page; + _nc_Show_Menu; + _nc_Synchronize_Attributes; + _nc_Synchronize_Options; + _nc_Touchline; + _nc_Touchpan; + _nc_Wnoutrefresh; + _nc_dPanel; + _nc_dStack; + _nc_do_color; + _nc_expanded; + _nc_fifo_dump; + _nc_freewin; + _nc_hash_map; + _nc_insert_ch; + _nc_linedump; + _nc_make_oldhash; + _nc_makenew; + _nc_memmove; + _nc_menu_cursor_pos; + _nc_msec_cost; + _nc_mvcur_init; + _nc_mvcur_resume; + _nc_mvcur_wrap; + _nc_my_visbuf; + _nc_oldnums; + _nc_printf_string; + _nc_render; + _nc_reset_colors; + _nc_retrace_field; + _nc_retrace_field_ptr; + _nc_retrace_field_type; + _nc_retrace_form; + _nc_retrace_form_hook; + _nc_retrace_item; + _nc_retrace_item_opts; + _nc_retrace_item_ptr; + _nc_retrace_menu; + _nc_retrace_menu_hook; + _nc_retrace_menu_opts; + _nc_retrace_panel; + _nc_screen_init; + _nc_screen_resume; + _nc_screen_wrap; + _nc_scroll_oldhash; + _nc_scroll_optimize; + _nc_scroll_window; + _nc_scrolln; + _nc_setupscreen; + _nc_signal_handler; + _nc_slk_initialize; + _nc_synchook; + _nc_trace_xnames; + _nc_tracemouse; + _nc_ungetch; + _nc_varargs; + _nc_vsscanf; + _nc_waddch_nosync; + _nc_wgetch; + _tracedump; + _tracemouse; +}; + +NCURSEST_5.8.20110226 { + global: + _nc_panelhook_sp; + assume_default_colors_sp; + beep_sp; + can_change_color_sp; + ceiling_panel; + color_content_sp; + doupdate_sp; + echo_sp; + endwin_sp; + filter_sp; + flash_sp; + get_escdelay; + get_escdelay_sp; + getmouse_sp; + getwin_sp; + ground_panel; + has_colors_sp; + has_mouse; + has_mouse_sp; + init_color_sp; + init_pair_sp; + is_pad; + is_subwin; + is_term_resized_sp; + isendwin_sp; + mcprint_sp; + mouseinterval_sp; + mousemask_sp; + mvcur_sp; + new_form_sp; + new_menu_sp; + newpad_sp; + newterm_sp; + newwin_sp; + nl_sp; + noecho_sp; + nofilter_sp; + nonl_sp; + pair_content_sp; + resize_term_sp; + resizeterm_sp; + restartterm_sp; + ripoffline_sp; + scr_init_sp; + scr_restore_sp; + scr_set_sp; + set_escdelay_sp; + slk_attr_set_sp; + slk_attr_sp; + slk_attroff_sp; + slk_attron_sp; + slk_attrset_sp; + slk_clear_sp; + slk_color_sp; + slk_init_sp; + slk_label_sp; + slk_noutrefresh_sp; + slk_refresh_sp; + slk_restore_sp; + slk_set_sp; + slk_touch_sp; + start_color_sp; + termattrs_sp; + ungetch_sp; + ungetmouse_sp; + update_panels_sp; + use_default_colors_sp; + use_legacy_coding_sp; + vidattr_sp; + vidputs_sp; + local: + _nc_TYPE_ALNUM; + _nc_TYPE_ALPHA; + _nc_TYPE_ENUM; + _nc_TYPE_INTEGER; + _nc_TYPE_IPV4; + _nc_TYPE_NUMERIC; + _nc_TYPE_REGEXP; + _nc_curscr_of; + _nc_do_color_sp; + _nc_form_cursor; + _nc_format_slks; + _nc_free_and_exit_sp; + _nc_freeall_sp; + _nc_fty_generic; + _nc_generic_fieldtype; + _nc_get_fieldbuffer; + _nc_hash_map_sp; + _nc_linedump_sp; + _nc_make_oldhash_sp; + _nc_makenew_sp; + _nc_msec_cost_sp; + _nc_mvcur_init_sp; + _nc_mvcur_resume_sp; + _nc_mvcur_wrap_sp; + _nc_newscr_of; + _nc_printf_string_sp; + _nc_ptr_Escdelay; + _nc_reset_colors_sp; + _nc_retrace_mmask_t; + _nc_ripoffline_sp; + _nc_screen_init_sp; + _nc_screen_resume_sp; + _nc_screen_wrap_sp; + _nc_scroll_oldhash_sp; + _nc_scroll_optimize_sp; + _nc_scrolln_sp; + _nc_set_generic_fieldtype; + _nc_setupscreen_sp; + _nc_stdscr_of; +} NCURSEST_5.7.20081102; + +NCURSEST_5.9.20150530 { + global: + wgetdelay; + local: + _nc_mvcur; + _nc_mvcur_sp; + _nc_trace_mmask_t; +} NCURSEST_5.8.20110226; + +NCURSEST_6.1.20171230 { + global: + alloc_pair; + alloc_pair_sp; + extended_color_content; + extended_color_content_sp; + extended_pair_content; + extended_pair_content_sp; + find_pair; + find_pair_sp; + free_pair; + free_pair_sp; + init_extended_color; + init_extended_color_sp; + init_extended_pair; + init_extended_pair_sp; + reset_color_pairs; + reset_color_pairs_sp; + unfocus_current_field; + local: + _nc_Unset_Current_Field; + _nc_change_pair; + _nc_init_color; + _nc_init_pair; + _nc_pair_content; + _nc_reset_color_pair; + _nc_set_color_pair; +} NCURSEST_5.9.20150530; + +NCURSEST_6.2.20200212 { + global: + exit_curses; + local: + _*; +} NCURSEST_6.1.20171230; + diff --git a/deps/ncurses-6.3/package/ncursest.spec b/deps/ncurses-6.3/package/ncursest.spec new file mode 100644 index 0000000..35a70b2 --- /dev/null +++ b/deps/ncurses-6.3/package/ncursest.spec @@ -0,0 +1,187 @@ +Summary: Curses library with POSIX thread support. +Name: ncursest6 +Version: 6.3 +Release: 20211021 +License: X11 +Group: Development/Libraries +Source: ncurses-%{version}-%{release}.tgz +# URL: https://invisible-island.net/ncurses/ + +%global MY_ABI 6 + +# save value before redefining +%global sys_libdir %{_libdir} + +# was redefined... +#global _prefix /usr/local/ncurses#{MY_ABI} + +%global MY_PKG %{sys_libdir}/pkgconfig +%define MYDATA /usr/local/ncurses/share/terminfo + +%description +The ncurses library routines are a terminal-independent method of +updating character screens with reasonable optimization. + +This package is used for testing ABI %{MY_ABI} with POSIX threads. + +%prep + +%global is_mandriva %(test -f /etc/mandriva-release && echo 1 || echo 0) +%global is_fedora %(test -f /usr/bin/dnf && echo 1 || echo 0) +%global is_centos %(test -f /etc/centos-release && echo 1 || echo 0) +%global is_redhat %(test -f /etc/redhat-release && echo 1 || echo 0) +%global is_scilinux %(test -f /etc/sl-release && echo 1 || echo 0) +%global is_suse %(test -f /etc/SuSE-release && echo 1 || echo 0) + +%if %{is_redhat} +# generate debug/debug-source packages. +%else +%define debug_package %{nil} +%endif + +%if %{is_mandriva} +%define _disable_ld_as_needed 1 +%define _disable_ld_no_undefined 1 +# libtool is not used here... +%define _disable_libtoolize 1 +%define _disable_ld_build_id 1 +%endif + +%if %{is_fedora} || %{is_scilinux} || %{is_centos} +# workaround for toolset breakage in Fedora 28 +%define _test_relink --enable-relink +%else +%define _test_relink --disable-relink +%endif + +%setup -q -n ncurses-%{version}-%{release} + +%build +%define CFG_OPTS \\\ + --target %{_target_platform} \\\ + --prefix=%{_prefix} \\\ + --bindir=%{_bindir} \\\ + --includedir=%{_includedir} \\\ + --libdir=%{_libdir} \\\ + --includedir='${prefix}/include' \\\ + --disable-echo \\\ + --disable-getcap \\\ + --disable-leaks \\\ + --disable-macros \\\ + --disable-overwrite \\\ + %{_test_relink} \\\ + --disable-termcap \\\ + --enable-hard-tabs \\\ + --enable-opaque-curses \\\ + --enable-opaque-form \\\ + --enable-opaque-menu \\\ + --enable-opaque-panel \\\ + --enable-pc-files \\\ + --enable-rpath \\\ + --enable-warnings \\\ + --enable-wgetch-events \\\ + --enable-widec \\\ + --enable-xmc-glitch \\\ + --program-suffix=%{MY_ABI} \\\ + --verbose \\\ + --with-abi-version=%{MY_ABI} \\\ + --with-config-suffix=dev \\\ + --with-cxx-shared \\\ + --with-default-terminfo-dir=%{MYDATA} \\\ + --with-develop \\\ + --with-extra-suffix=%{MY_ABI} \\\ + --with-install-prefix=$RPM_BUILD_ROOT \\\ + --with-pkg-config-libdir=%{MY_PKG} \\\ + --with-shared \\\ + --with-terminfo-dirs=%{MYDATA}:/usr/share/terminfo \\\ + --with-termlib \\\ + --with-ticlib \\\ + --with-trace \\\ + --with-versioned-syms \\\ + --with-xterm-kbs=DEL \\\ + --without-ada \\\ + --without-debug \\\ + --without-normal + +%configure %{CFG_OPTS} \ + --enable-interop \ + --enable-sp-funcs \ + --program-suffix=t%{MY_ABI} \ + --with-pthread +make + +%install +rm -rf $RPM_BUILD_ROOT + +make install.libs install.progs +rm -f test/ncurses +( cd test && make ncurses LOCAL_LIBDIR=%{_libdir} && mv ncurses $RPM_BUILD_ROOT/%{_bindir}/ncursest%{MY_ABI} ) + +%if %{is_mandriva} +# check this first because Mageia has the /etc/redhat-release file... +%else +%if %{is_fedora} +%ldconfig_scriptlets libs +%ldconfig_scriptlets c++-libs +%endif +%endif + +%clean +if rm -rf $RPM_BUILD_ROOT; then + echo OK +else + find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1 +fi +exit 0 + +%files +%defattr(-,root,root,-) +%{_bindir}/* +%{_includedir}/* +%{_libdir}/* + +%changelog + +* Tue Dec 24 2019 Thomas Dickey +- drop custom CC_NORMAL warning flags because setting CFLAGS interferes with + matching Fedora's PIE/PIC configuration. Also, generate debug/debug-source + packages. + +* Sat Nov 16 2019 Thomas Dickey +- modify clean-rule to work around Fedora NFS bugs. + +* Sat Aug 25 2018 Thomas E. Dickey +- split spec-file into ncurses6 and ncursest6 to work around toolset breakage + in Fedora 28 + +* Sat Jun 02 2018 Thomas E. Dickey +- build-fix for Mageia + +* Sat May 26 2018 Thomas E. Dickey +- use predefined configure-macro +- separate ncurses6/ncursest6 packages + +* Sat Feb 10 2018 Thomas E. Dickey +- add ncursest6 package +- add several development features + +* Mon Jan 01 2018 Thomas E. Dickey +- drop redundant files pattern for "*.pc" + +* Tue Dec 26 2017 Thomas E. Dickey +- add --with-config-suffix option + +* Sun Apr 26 2015 Thomas E. Dickey +- move package to /usr + +* Sun Apr 12 2015 Thomas E. Dickey +- factor-out MY_ABI + +* Sat Mar 09 2013 Thomas E. Dickey +- add --with-cxx-shared option to demonstrate c++ binding as shared library + +* Sat Oct 27 2012 Thomas E. Dickey +- add ncurses program as "ncurses6" to provide demonstration. + +* Fri Jun 08 2012 Thomas E. Dickey +- initial version. diff --git a/deps/ncurses-6.3/package/ncursest.sym b/deps/ncurses-6.3/package/ncursest.sym new file mode 100644 index 0000000..f50ce3d --- /dev/null +++ b/deps/ncurses-6.3/package/ncursest.sym @@ -0,0 +1,887 @@ +# $Id: ncursest.sym,v 1.41 2021/08/19 23:50:26 tom Exp $ +# script for shared library symbol-visibility using libtool +# +# This file was generated by ncu-mapsyms +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace +# Configure options (6.0.20161029) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace +BC +COLOR_PAIR +PAIR_NUMBER +PC +SP +TYPE_ALNUM +TYPE_ALPHA +TYPE_ENUM +TYPE_INTEGER +TYPE_IPV4 +TYPE_NUMERIC +TYPE_REGEXP +UP +_nc_COLORS +_nc_COLOR_PAIRS +_nc_COLS +_nc_Default_Field +_nc_Default_Form +_nc_ESCDELAY +_nc_LINES +_nc_TABSIZE +_nc__nc_outchars +_nc_access +_nc_acs_map +_nc_add_to_try +_nc_align_termtype +_nc_alloc_entry_leaks +_nc_basename +_nc_boolcodes +_nc_boolfnames +_nc_boolnames +_nc_capcmp +_nc_captoinfo_leaks +_nc_check_termtype +_nc_check_termtype2 +_nc_codes_leaks +_nc_comp_scan_leaks +_nc_copy_termtype +_nc_copy_termtype2 +_nc_count_outchars +_nc_cur_term +_nc_curr_col +_nc_curr_line +_nc_curscr +_nc_db_close +_nc_db_first +_nc_db_have_data +_nc_db_next +_nc_db_open +_nc_db_put +_nc_disable_period +_nc_doalloc +_nc_entry_match +_nc_env_access +_nc_err_abort +_nc_eventlist_timeout +_nc_export_termtype2 +_nc_fallback +_nc_fallback2 +_nc_find_entry +_nc_find_prescr +_nc_find_type_entry +_nc_find_user_entry +_nc_first_db +_nc_first_name +_nc_flush +_nc_flush_sp +_nc_fmt_funcptr +_nc_forget_prescr +_nc_free_and_exit +_nc_free_entries +_nc_free_termtype +_nc_free_termtype2 +_nc_free_tic +_nc_free_tinfo +_nc_free_tparm +_nc_freeall +_nc_get_alias_table +_nc_get_hash_table +_nc_get_locale +_nc_get_screensize +_nc_get_source +_nc_get_table +_nc_get_tty_mode +_nc_get_tty_mode_sp +_nc_get_type +_nc_getenv_num +_nc_globals +_nc_handle_sigwinch +_nc_has_mouse +_nc_head +_nc_home_terminfo +_nc_infotocap +_nc_init_acs +_nc_init_acs_sp +_nc_init_pthreads +_nc_init_termtype +_nc_is_abs_path +_nc_is_dir_path +_nc_is_file_path +_nc_keep_tic_dir +_nc_keyname_leaks +_nc_keypad +_nc_last_db +_nc_leaks_tinfo +_nc_locale_breaks_acs +_nc_locked_tracef +_nc_mutex_lock +_nc_mutex_trylock +_nc_mutex_unlock +_nc_name_match +_nc_names_leaks +_nc_newscr +_nc_next_db +_nc_numcodes +_nc_numfnames +_nc_numnames +_nc_optimize_enable +_nc_outc_wrapper +_nc_outch +_nc_outch_sp +_nc_panelhook +_nc_panelhook_sp +_nc_pathlast +_nc_prescreen +_nc_ptr_Cols +_nc_ptr_Lines +_nc_putchar +_nc_putchar_sp +_nc_putp +_nc_putp_flush +_nc_putp_flush_sp +_nc_putp_sp +_nc_read_entry +_nc_read_entry2 +_nc_read_entry_source +_nc_read_file_entry +_nc_read_termtype +_nc_reset_input +_nc_reset_tparm +_nc_resolve_uses +_nc_resolve_uses2 +_nc_retrace_attr_t +_nc_retrace_bool +_nc_retrace_chtype +_nc_retrace_cptr +_nc_retrace_cvoid_ptr +_nc_retrace_int +_nc_retrace_int_attr_t +_nc_retrace_ptr +_nc_retrace_sp +_nc_retrace_unsigned +_nc_retrace_void_ptr +_nc_retrace_win +_nc_ripoffline +_nc_rootname +_nc_safe_fopen +_nc_safe_open3 +_nc_safe_strcat +_nc_safe_strcpy +_nc_screen +_nc_screen_chain +_nc_screen_of +_nc_set_buffer +_nc_set_buffer_sp +_nc_set_no_padding +_nc_set_source +_nc_set_tputs_trace +_nc_set_tty_mode +_nc_set_tty_mode_sp +_nc_set_type +_nc_set_writedir +_nc_setupterm +_nc_sigprocmask +_nc_stdscr +_nc_str_copy +_nc_str_init +_nc_str_null +_nc_strcodes +_nc_strfnames +_nc_strict_bsd +_nc_strnames +_nc_suppress_warnings +_nc_syntax +_nc_syserr_abort +_nc_tail +_nc_tgetent_leaks +_nc_tic_dir +_nc_tic_expand +_nc_tic_written +_nc_timed_wait +_nc_tinfo_fkeys +_nc_tinfo_fkeysf +_nc_tiparm +_nc_tparm_analyze +_nc_tparm_err +_nc_trace_buf +_nc_trace_bufcat +_nc_tracechar +_nc_tracing +_nc_trans_string +_nc_trim_sgr0 +_nc_ttytype +_nc_unicode_locale +_nc_update_screensize +_nc_use_tracef +_nc_user_definable +_nc_visbuf +_nc_visbuf2 +_nc_visbufn +_nc_viscbuf +_nc_wacs_width +_nc_warning +_nc_write_entry +_nc_write_object +_traceattr +_traceattr2 +_tracechar +_tracechtype +_tracechtype2 +_tracef +addch +addchnstr +addchstr +addnstr +addstr +alloc_pair +alloc_pair_sp +assume_default_colors +assume_default_colors_sp +attr_get +attr_off +attr_on +attr_set +attroff +attron +attrset +baudrate +baudrate_sp +beep +beep_sp +bkgd +bkgdset +border +bottom_panel +box +can_change_color +can_change_color_sp +cbreak +cbreak_sp +ceiling_panel +chgat +clear +clearok +clrtobot +clrtoeol +color_content +color_content_sp +color_set +copywin +current_field +current_item +curs_set +curs_set_sp +curses_trace +curses_version +data_ahead +data_behind +def_prog_mode +def_prog_mode_sp +def_shell_mode +def_shell_mode_sp +define_key +define_key_sp +del_curterm +del_curterm_sp +del_panel +delay_output +delay_output_sp +delch +deleteln +delscreen +delwin +derwin +doupdate +doupdate_sp +dup_field +dupwin +dynamic_field_info +echo +echo_sp +echochar +endwin +endwin_sp +erase +erasechar +erasechar_sp +exit_curses +exit_terminfo +extended_color_content +extended_color_content_sp +extended_pair_content +extended_pair_content_sp +field_arg +field_back +field_buffer +field_count +field_fore +field_index +field_info +field_init +field_just +field_opts +field_opts_off +field_opts_on +field_pad +field_status +field_term +field_type +field_userptr +filter +filter_sp +find_pair +find_pair_sp +flash +flash_sp +flushinp +flushinp_sp +form_driver +form_fields +form_init +form_opts +form_opts_off +form_opts_on +form_page +form_request_by_name +form_request_name +form_sub +form_term +form_userptr +form_win +free_field +free_fieldtype +free_form +free_item +free_menu +free_pair +free_pair_sp +get_escdelay +get_escdelay_sp +getattrs +getbegx +getbegy +getbkgd +getch +getcurx +getcury +getmaxx +getmaxy +getmouse +getmouse_sp +getnstr +getparx +getpary +getstr +getwin +getwin_sp +ground_panel +halfdelay +halfdelay_sp +has_colors +has_colors_sp +has_ic +has_ic_sp +has_il +has_il_sp +has_key +has_key_sp +has_mouse +has_mouse_sp +hide_panel +hline +idcok +idlok +immedok +inch +inchnstr +inchstr +init_color +init_color_sp +init_extended_color +init_extended_color_sp +init_extended_pair +init_extended_pair_sp +init_pair +init_pair_sp +initscr +innstr +insch +insdelln +insertln +insnstr +insstr +instr +intrflush +intrflush_sp +is_cleared +is_idcok +is_idlok +is_immedok +is_keypad +is_leaveok +is_linetouched +is_nodelay +is_notimeout +is_pad +is_scrollok +is_subwin +is_syncok +is_term_resized +is_term_resized_sp +is_wintouched +isendwin +isendwin_sp +item_count +item_description +item_index +item_init +item_name +item_opts +item_opts_off +item_opts_on +item_term +item_userptr +item_value +item_visible +key_defined +key_defined_sp +keybound +keybound_sp +keyname +keyname_sp +keyok +keyok_sp +keypad +killchar +killchar_sp +leaveok +link_field +link_fieldtype +longname +longname_sp +mcprint +mcprint_sp +menu_back +menu_driver +menu_fore +menu_format +menu_grey +menu_init +menu_items +menu_mark +menu_opts +menu_opts_off +menu_opts_on +menu_pad +menu_pattern +menu_request_by_name +menu_request_name +menu_spacing +menu_sub +menu_term +menu_userptr +menu_win +meta +mouse_trafo +mouseinterval +mouseinterval_sp +mousemask +mousemask_sp +move +move_field +move_panel +mvaddch +mvaddchnstr +mvaddchstr +mvaddnstr +mvaddstr +mvchgat +mvcur +mvcur_sp +mvdelch +mvderwin +mvgetch +mvgetnstr +mvgetstr +mvhline +mvinch +mvinchnstr +mvinchstr +mvinnstr +mvinsch +mvinsnstr +mvinsstr +mvinstr +mvprintw +mvscanw +mvvline +mvwaddch +mvwaddchnstr +mvwaddchstr +mvwaddnstr +mvwaddstr +mvwchgat +mvwdelch +mvwgetch +mvwgetnstr +mvwgetstr +mvwhline +mvwin +mvwinch +mvwinchnstr +mvwinchstr +mvwinnstr +mvwinsch +mvwinsnstr +mvwinsstr +mvwinstr +mvwprintw +mvwscanw +mvwvline +napms +napms_sp +new_field +new_fieldtype +new_form +new_form_sp +new_item +new_menu +new_menu_sp +new_page +new_panel +new_prescr +newpad +newpad_sp +newterm +newterm_sp +newwin +newwin_sp +nl +nl_sp +nocbreak +nocbreak_sp +nodelay +noecho +noecho_sp +nofilter +nofilter_sp +nonl +nonl_sp +noqiflush +noqiflush_sp +noraw +noraw_sp +notimeout +ospeed +overlay +overwrite +pair_content +pair_content_sp +panel_above +panel_below +panel_hidden +panel_userptr +panel_window +pechochar +pnoutrefresh +pos_form_cursor +pos_menu_cursor +post_form +post_menu +prefresh +printw +putp +putp_sp +putwin +qiflush +qiflush_sp +raw +raw_sp +redrawwin +refresh +replace_panel +reset_color_pairs +reset_color_pairs_sp +reset_prog_mode +reset_prog_mode_sp +reset_shell_mode +reset_shell_mode_sp +resetty +resetty_sp +resize_term +resize_term_sp +resizeterm +resizeterm_sp +restartterm +restartterm_sp +ripoffline +ripoffline_sp +savetty +savetty_sp +scale_form +scale_menu +scanw +scr_dump +scr_init +scr_init_sp +scr_restore +scr_restore_sp +scr_set +scr_set_sp +scrl +scroll +scrollok +set_current_field +set_current_item +set_curterm +set_curterm_sp +set_escdelay +set_escdelay_sp +set_field_back +set_field_buffer +set_field_fore +set_field_init +set_field_just +set_field_opts +set_field_pad +set_field_status +set_field_term +set_field_type +set_field_userptr +set_fieldtype_arg +set_fieldtype_choice +set_form_fields +set_form_init +set_form_opts +set_form_page +set_form_sub +set_form_term +set_form_userptr +set_form_win +set_item_init +set_item_opts +set_item_term +set_item_userptr +set_item_value +set_max_field +set_menu_back +set_menu_fore +set_menu_format +set_menu_grey +set_menu_init +set_menu_items +set_menu_mark +set_menu_opts +set_menu_pad +set_menu_pattern +set_menu_spacing +set_menu_sub +set_menu_term +set_menu_userptr +set_menu_win +set_new_page +set_panel_userptr +set_tabsize +set_tabsize_sp +set_term +set_top_row +setscrreg +setupterm +show_panel +slk_attr +slk_attr_set +slk_attr_set_sp +slk_attr_sp +slk_attroff +slk_attroff_sp +slk_attron +slk_attron_sp +slk_attrset +slk_attrset_sp +slk_clear +slk_clear_sp +slk_color +slk_color_sp +slk_init +slk_init_sp +slk_label +slk_label_sp +slk_noutrefresh +slk_noutrefresh_sp +slk_refresh +slk_refresh_sp +slk_restore +slk_restore_sp +slk_set +slk_set_sp +slk_touch +slk_touch_sp +standend +standout +start_color +start_color_sp +subpad +subwin +syncok +termattrs +termattrs_sp +termname +termname_sp +tgetent +tgetent_sp +tgetflag +tgetflag_sp +tgetnum +tgetnum_sp +tgetstr +tgetstr_sp +tgoto +tigetflag +tigetflag_sp +tigetnum +tigetnum_sp +tigetstr +tigetstr_sp +timeout +tiparm +top_panel +top_row +touchline +touchwin +tparm +tputs +tputs_sp +trace +typeahead +typeahead_sp +unctrl +unctrl_sp +unfocus_current_field +ungetch +ungetch_sp +ungetmouse +ungetmouse_sp +unpost_form +unpost_menu +untouchwin +update_panels +update_panels_sp +use_default_colors +use_default_colors_sp +use_env +use_env_sp +use_extended_names +use_legacy_coding +use_legacy_coding_sp +use_screen +use_tioctl +use_tioctl_sp +use_window +vidattr +vidattr_sp +vidputs +vidputs_sp +vline +vw_printw +vw_scanw +vwprintw +vwscanw +waddch +waddchnstr +waddchstr +waddnstr +waddstr +wattr_get +wattr_off +wattr_on +wattr_set +wattroff +wattron +wattrset +wbkgd +wbkgdset +wborder +wchgat +wclear +wclrtobot +wclrtoeol +wcolor_set +wcursyncup +wdelch +wdeleteln +wechochar +wenclose +werase +wgetch +wgetch_events +wgetdelay +wgetnstr +wgetnstr_events +wgetparent +wgetscrreg +wgetstr +whline +winch +winchnstr +winchstr +winnstr +winsch +winsdelln +winsertln +winsnstr +winsstr +winstr +wmouse_trafo +wmove +wnoutrefresh +wprintw +wredrawln +wrefresh +wresize +wscanw +wscrl +wsetscrreg +wstandend +wstandout +wsyncdown +wsyncup +wtimeout +wtouchln +wvline diff --git a/deps/ncurses-6.3/package/ncursestw.map b/deps/ncurses-6.3/package/ncursestw.map new file mode 100644 index 0000000..f514b97 --- /dev/null +++ b/deps/ncurses-6.3/package/ncursestw.map @@ -0,0 +1,1307 @@ +# $Id: ncursestw.map,v 1.56 2021/10/10 15:22:33 tom Exp $ +# script for shared library symbol-versioning using ld +# +# This file was generated by ncu-mapsyms +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace +# Configure options (6.0.current) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace + +NCURSES_TIC_5.0.19991023 { + global: + _nc_capcmp; + _nc_check_termtype; + _nc_entry_match; + _nc_infotocap; + _nc_read_entry_source; + _nc_reset_input; + _nc_resolve_uses; + _nc_screen; + _nc_set_writedir; + _nc_syntax; + _nc_tic_expand; + _nc_tic_written; + _nc_trans_string; + _nc_write_entry; + local: + _nc_captoinfo; + _nc_comment_end; + _nc_comment_start; + _nc_copy_entry; + _nc_curr_file_pos; + _nc_curr_token; + _nc_get_token; + _nc_init_entry; + _nc_merge_entry; + _nc_panic_mode; + _nc_parse_entry; + _nc_push_token; + _nc_save_str; + _nc_start_line; + _nc_wrap_entry; +}; + +NCURSES_TIC_5.1.20000708 { + global: + _nc_disable_period; +} NCURSES_TIC_5.0.19991023; + +NCURSES_TIC_5.5.20051010 { + global: + _nc_alloc_entry_leaks; + _nc_captoinfo_leaks; + _nc_check_termtype2; + _nc_comp_scan_leaks; + _nc_resolve_uses2; +} NCURSES_TIC_5.1.20000708; + +NCURSES_TIC_5.7.20081102 { + global: + _nc_free_tic; + local: + _nc_comp_captab_leaks; + _nc_leaks_tic; +} NCURSES_TIC_5.5.20051010; + +NCURSES_TIC_5.9.20150530 { + global: + _nc_strict_bsd; +} NCURSES_TIC_5.7.20081102; + +NCURSES_TIC_6.1.20171230 { + global: + _nc_read_entry2; + _nc_write_object; + local: + _*; +} NCURSES_TIC_5.9.20150530; + +NCURSES_TINFO_5.0.19991023 { + global: + BC; + PC; + SP; + UP; + _nc_access; + _nc_add_to_try; + _nc_copy_termtype; + _nc_curr_col; + _nc_curr_line; + _nc_doalloc; + _nc_err_abort; + _nc_fallback; + _nc_find_entry; + _nc_find_type_entry; + _nc_first_name; + _nc_free_entries; + _nc_free_termtype; + _nc_free_tparm; + _nc_freeall; + _nc_get_hash_table; + _nc_get_table; + _nc_get_tty_mode; + _nc_get_type; + _nc_getenv_num; + _nc_head; + _nc_home_terminfo; + _nc_init_acs; + _nc_keep_tic_dir; + _nc_keypad; + _nc_name_match; + _nc_outch; + _nc_read_entry; + _nc_read_file_entry; + _nc_screen_chain; + _nc_set_buffer; + _nc_set_source; + _nc_set_tty_mode; + _nc_set_type; + _nc_suppress_warnings; + _nc_syserr_abort; + _nc_tail; + _nc_tic_dir; + _nc_timed_wait; + _nc_tinfo_fkeysf; + _nc_trace_buf; + _nc_tracing; + _nc_update_screensize; + _nc_visbuf; + _nc_visbuf2; + _nc_warning; + _tracechar; + baudrate; + cbreak; + curs_set; + curses_version; + def_prog_mode; + def_shell_mode; + define_key; + del_curterm; + delay_output; + erasechar; + flushinp; + halfdelay; + has_ic; + has_il; + has_key; + idcok; + idlok; + intrflush; + keybound; + keyname; + keyok; + keypad; + killchar; + longname; + meta; + napms; + nocbreak; + nodelay; + noqiflush; + noraw; + notimeout; + ospeed; + putp; + qiflush; + raw; + reset_prog_mode; + reset_shell_mode; + resetty; + savetty; + set_curterm; + setupterm; + termname; + tgetent; + tgetflag; + tgetnum; + tgetstr; + tgoto; + tigetflag; + tigetnum; + tigetstr; + tparm; + tputs; + trace; + typeahead; + unctrl; + use_env; + wtimeout; + local: + _nc_baudrate; + _nc_expand_try; + _nc_init_keytry; + _nc_nulls_sent; + _nc_ospeed; + _nc_read_termcap; + _nc_read_termcap_entry; + _nc_remove_key; + _nc_remove_string; + _nc_trace_tries; + _nc_tracebits; +}; + +NCURSES_TINFO_5.1.20000708 { + global: + _nc_align_termtype; + _nc_flush; + _nc_tinfo_fkeys; + _nc_user_definable; + use_extended_names; +} NCURSES_TINFO_5.0.19991023; + +NCURSES_TINFO_5.2.20001021 { + global: + _nc_basename; + _nc_env_access; + _nc_safe_strcat; + _nc_safe_strcpy; + _nc_str_copy; + _nc_str_init; + _nc_str_null; +} NCURSES_TINFO_5.1.20000708; + +NCURSES_TINFO_5.3.20021019 { + global: + _nc_rootname; + _nc_tparm_err; + _nc_visbufn; +} NCURSES_TINFO_5.2.20001021; + +NCURSES_TINFO_5.4.20040208 { + global: + _nc_get_locale; + _nc_locale_breaks_acs; + _nc_pathlast; + _nc_retrace_attr_t; + _nc_retrace_bool; + _nc_retrace_chtype; + _nc_retrace_int; + _nc_retrace_ptr; + _nc_retrace_sp; + _nc_retrace_unsigned; + _nc_retrace_win; + _nc_tparm_analyze; + _nc_trace_bufcat; + _nc_unicode_locale; + _traceattr; + _traceattr2; + _tracechtype; + _tracechtype2; + _tracef; + key_defined; + local: + _nc_altcharset_name; + _nc_trace_ttymode; +} NCURSES_TINFO_5.3.20021019; + +NCURSES_TINFO_5.5.20051010 { + global: + _nc_get_source; + _nc_retrace_cptr; + _nc_retrace_cvoid_ptr; + _nc_retrace_void_ptr; + _nc_setupterm; + _nc_trim_sgr0; + local: + _nc_delink_entry; + _nc_free_entry; +} NCURSES_TINFO_5.4.20040208; + +NCURSES_TINFO_5.6.20061217 { + global: + _nc_db_close; + _nc_db_first; + _nc_db_have_data; + _nc_db_next; + _nc_db_open; + _nc_db_put; + _nc_eventlist_timeout; + _nc_first_db; + _nc_handle_sigwinch; + _nc_is_abs_path; + _nc_is_dir_path; + _nc_is_file_path; + _nc_keyname_leaks; + _nc_last_db; + _nc_next_db; + _nc_read_termtype; + _nc_tgetent_leaks; + _nc_viscbuf; + local: + _nc_db_get; + _nc_db_have_index; + _nc_hashed_db; + _nc_viscbuf2; +} NCURSES_TINFO_5.5.20051010; + +NCURSES_TINFO_5.7.20081102 { + global: + _nc_COLS; + _nc_LINES; + _nc_TABSIZE; + _nc__nc_outchars; + _nc_acs_map; + _nc_boolcodes; + _nc_boolfnames; + _nc_boolnames; + _nc_codes_leaks; + _nc_count_outchars; + _nc_cur_term; + _nc_curscr; + _nc_free_tinfo; + _nc_get_alias_table; + _nc_get_screensize; + _nc_globals; + _nc_init_pthreads; + _nc_leaks_tinfo; + _nc_locked_tracef; + _nc_mutex_lock; + _nc_mutex_trylock; + _nc_mutex_unlock; + _nc_names_leaks; + _nc_newscr; + _nc_numcodes; + _nc_numfnames; + _nc_numnames; + _nc_prescreen; + _nc_ptr_Cols; + _nc_ptr_Lines; + _nc_screen_of; + _nc_set_no_padding; + _nc_set_tputs_trace; + _nc_stdscr; + _nc_strcodes; + _nc_strfnames; + _nc_strnames; + _nc_tracechar; + _nc_ttytype; + _nc_use_tracef; + _nc_viswbuf; + _nc_viswbufn; + _nc_viswibuf; + _tracecchar_t; + _tracecchar_t2; + set_tabsize; + local: + _nc__nc_tputs_trace; + _nc_keyname; + _nc_mutex_init; + _nc_unctrl; + _nc_viswbuf2; +} NCURSES_TINFO_5.6.20061217; + +NCURSES_TINFO_5.8.20110226 { + global: + _nc_flush_sp; + _nc_get_tty_mode_sp; + _nc_init_acs_sp; + _nc_outc_wrapper; + _nc_outch_sp; + _nc_putp; + _nc_putp_flush; + _nc_putp_flush_sp; + _nc_putp_sp; + _nc_retrace_int_attr_t; + _nc_set_buffer_sp; + _nc_set_tty_mode_sp; + _nc_sigprocmask; + baudrate_sp; + cbreak_sp; + curs_set_sp; + def_prog_mode_sp; + def_shell_mode_sp; + define_key_sp; + del_curterm_sp; + delay_output_sp; + erasechar_sp; + flushinp_sp; + halfdelay_sp; + has_ic_sp; + has_il_sp; + has_key_sp; + intrflush_sp; + key_defined_sp; + keybound_sp; + keyname_sp; + keyok_sp; + killchar_sp; + longname_sp; + napms_sp; + new_prescr; + nocbreak_sp; + noqiflush_sp; + noraw_sp; + putp_sp; + qiflush_sp; + raw_sp; + reset_prog_mode_sp; + reset_shell_mode_sp; + resetty_sp; + savetty_sp; + set_curterm_sp; + set_tabsize_sp; + termname_sp; + tgetent_sp; + tgetflag_sp; + tgetnum_sp; + tgetstr_sp; + tigetflag_sp; + tigetnum_sp; + tigetstr_sp; + tiparm; + tputs_sp; + typeahead_sp; + unctrl_sp; + use_env_sp; + local: + _nc_get_cur_term; + _nc_get_cur_term_sp; + _nc_get_hash_info; + _nc_ptr_Tabsize; + _nc_retrace_char; + _nc_setup_tinfo; + _nc_tinfo_cmdch; +} NCURSES_TINFO_5.7.20081102; + +NCURSES_TINFO_5.9.20150530 { + global: + _nc_init_termtype; + _nc_putchar; + _nc_putchar_sp; + use_tioctl; + use_tioctl_sp; + local: + _nc_comp_error_leaks; + _nc_db_iterator_leaks; + _nc_setenv_num; +} NCURSES_TINFO_5.8.20110226; + +NCURSES_TINFO_6.1.20171230 { + global: + _nc_copy_termtype2; + _nc_export_termtype2; + _nc_fallback2; + _nc_find_prescr; + _nc_forget_prescr; + _nc_free_termtype2; +} NCURSES_TINFO_5.9.20150530; + +NCURSES_TINFO_6.2.20200212 { + global: + _nc_find_user_entry; + _nc_fmt_funcptr; + _nc_wacs_width; + curses_trace; + exit_terminfo; +} NCURSES_TINFO_6.1.20171230; + +NCURSES_TINFO_6.2.20211010 { + global: + _nc_reset_tparm; + _nc_tiparm; + _nc_safe_fopen; + _nc_safe_open3; + erasewchar_sp; + killwchar_sp; + local: + _*; +} NCURSES_TINFO_6.2.20200212; + +NCURSESTW_5.7.20081102 { + global: + COLOR_PAIR; + PAIR_NUMBER; + TYPE_ALNUM; + TYPE_ALPHA; + TYPE_ENUM; + TYPE_INTEGER; + TYPE_IPV4; + TYPE_NUMERIC; + TYPE_REGEXP; + _nc_COLORS; + _nc_COLOR_PAIRS; + _nc_Default_Field; # deprecated in ABI6 + _nc_Default_Form; # deprecated in ABI6 + _nc_ESCDELAY; + _nc_free_and_exit; + _nc_has_mouse; # deprecated in ABI6 + _nc_optimize_enable; + _nc_panelhook; + _nc_ripoffline; + _nc_wacs; + _nc_wcrtomb; + add_wch; + add_wchnstr; + add_wchstr; + addch; + addchnstr; + addchstr; + addnstr; + addnwstr; + addstr; + addwstr; + assume_default_colors; + attr_get; + attr_off; + attr_on; + attr_set; + attroff; + attron; + attrset; + beep; + bkgd; + bkgdset; + bkgrnd; + bkgrndset; + border; + border_set; + bottom_panel; + box; + box_set; + can_change_color; + chgat; + clear; + clearok; + clrtobot; + clrtoeol; + color_content; + color_set; + copywin; + current_field; + current_item; + data_ahead; + data_behind; + del_panel; + delch; + deleteln; + delscreen; + delwin; + derwin; + doupdate; + dup_field; + dupwin; + dynamic_field_info; + echo; + echo_wchar; + echochar; + endwin; + erase; + erasewchar; + field_arg; + field_back; + field_buffer; + field_count; + field_fore; + field_index; + field_info; + field_init; + field_just; + field_opts; + field_opts_off; + field_opts_on; + field_pad; + field_status; + field_term; + field_type; + field_userptr; + filter; + flash; + form_driver; + form_fields; + form_init; + form_opts; + form_opts_off; + form_opts_on; + form_page; + form_request_by_name; + form_request_name; + form_sub; + form_term; + form_userptr; + form_win; + free_field; + free_fieldtype; + free_form; + free_item; + free_menu; + get_wch; + get_wstr; + getattrs; + getbegx; + getbegy; + getbkgd; + getbkgrnd; + getcchar; + getch; + getcurx; + getcury; + getmaxx; + getmaxy; + getmouse; + getn_wstr; + getnstr; + getparx; + getpary; + getstr; + getwin; + has_colors; + hide_panel; + hline; + hline_set; + immedok; + in_wch; + in_wchnstr; + in_wchstr; + inch; + inchnstr; + inchstr; + init_color; + init_pair; + initscr; + innstr; + innwstr; + ins_nwstr; + ins_wch; + ins_wstr; + insch; + insdelln; + insertln; + insnstr; + insstr; + instr; + inwstr; + is_cleared; + is_idcok; + is_idlok; + is_immedok; + is_keypad; + is_leaveok; + is_linetouched; + is_nodelay; + is_notimeout; + is_scrollok; + is_syncok; + is_term_resized; + is_wintouched; + isendwin; + item_count; + item_description; + item_index; + item_init; + item_name; + item_opts; + item_opts_off; + item_opts_on; + item_term; + item_userptr; + item_value; + item_visible; + key_name; + killwchar; + leaveok; + link_field; + link_fieldtype; + mcprint; + menu_back; + menu_driver; + menu_fore; + menu_format; + menu_grey; + menu_init; + menu_items; + menu_mark; + menu_opts; + menu_opts_off; + menu_opts_on; + menu_pad; + menu_pattern; + menu_request_by_name; + menu_request_name; + menu_spacing; + menu_sub; + menu_term; + menu_userptr; + menu_win; + mouse_trafo; + mouseinterval; + mousemask; + move; + move_field; + move_panel; + mvadd_wch; + mvadd_wchnstr; + mvadd_wchstr; + mvaddch; + mvaddchnstr; + mvaddchstr; + mvaddnstr; + mvaddnwstr; + mvaddstr; + mvaddwstr; + mvchgat; + mvcur; + mvdelch; + mvderwin; + mvget_wch; + mvget_wstr; + mvgetch; + mvgetn_wstr; + mvgetnstr; + mvgetstr; + mvhline; + mvhline_set; + mvin_wch; + mvin_wchnstr; + mvin_wchstr; + mvinch; + mvinchnstr; + mvinchstr; + mvinnstr; + mvinnwstr; + mvins_nwstr; + mvins_wch; + mvins_wstr; + mvinsch; + mvinsnstr; + mvinsstr; + mvinstr; + mvinwstr; + mvprintw; + mvscanw; + mvvline; + mvvline_set; + mvwadd_wch; + mvwadd_wchnstr; + mvwadd_wchstr; + mvwaddch; + mvwaddchnstr; + mvwaddchstr; + mvwaddnstr; + mvwaddnwstr; + mvwaddstr; + mvwaddwstr; + mvwchgat; + mvwdelch; + mvwget_wch; + mvwget_wstr; + mvwgetch; + mvwgetn_wstr; + mvwgetnstr; + mvwgetstr; + mvwhline; + mvwhline_set; + mvwin; + mvwin_wch; + mvwin_wchnstr; + mvwin_wchstr; + mvwinch; + mvwinchnstr; + mvwinchstr; + mvwinnstr; + mvwinnwstr; + mvwins_nwstr; + mvwins_wch; + mvwins_wstr; + mvwinsch; + mvwinsnstr; + mvwinsstr; + mvwinstr; + mvwinwstr; + mvwprintw; + mvwscanw; + mvwvline; + mvwvline_set; + new_field; + new_fieldtype; + new_form; + new_item; + new_menu; + new_page; + new_panel; + newpad; + newterm; + newwin; + nl; + noecho; + nofilter; + nonl; + overlay; + overwrite; + pair_content; + panel_above; + panel_below; + panel_hidden; + panel_userptr; + panel_window; + pecho_wchar; + pechochar; + pnoutrefresh; + pos_form_cursor; + pos_menu_cursor; + post_form; + post_menu; + prefresh; + printw; + putwin; + redrawwin; + refresh; + replace_panel; + resize_term; + resizeterm; + restartterm; + ripoffline; + scale_form; + scale_menu; + scanw; + scr_dump; + scr_init; + scr_restore; + scr_set; + scrl; + scroll; + scrollok; + set_current_field; + set_current_item; + set_escdelay; + set_field_back; + set_field_buffer; + set_field_fore; + set_field_init; + set_field_just; + set_field_opts; + set_field_pad; + set_field_status; + set_field_term; + set_field_type; + set_field_userptr; + set_fieldtype_arg; + set_fieldtype_choice; + set_form_fields; + set_form_init; + set_form_opts; + set_form_page; + set_form_sub; + set_form_term; + set_form_userptr; + set_form_win; + set_item_init; + set_item_opts; + set_item_term; + set_item_userptr; + set_item_value; + set_max_field; + set_menu_back; + set_menu_fore; + set_menu_format; + set_menu_grey; + set_menu_init; + set_menu_items; + set_menu_mark; + set_menu_opts; + set_menu_pad; + set_menu_pattern; + set_menu_spacing; + set_menu_sub; + set_menu_term; + set_menu_userptr; + set_menu_win; + set_new_page; + set_panel_userptr; + set_term; + set_top_row; + setcchar; + setscrreg; + show_panel; + slk_attr; + slk_attr_off; + slk_attr_on; + slk_attr_set; + slk_attroff; + slk_attron; + slk_attrset; + slk_clear; + slk_color; + slk_init; + slk_label; + slk_noutrefresh; + slk_refresh; + slk_restore; + slk_set; + slk_touch; + slk_wset; + standend; + standout; + start_color; + subpad; + subwin; + syncok; + term_attrs; + termattrs; + timeout; + top_panel; + top_row; + touchline; + touchwin; + unget_wch; + ungetch; + ungetmouse; + unpost_form; + unpost_menu; + untouchwin; + update_panels; + use_default_colors; + use_legacy_coding; + use_screen; + use_window; + vid_attr; + vid_puts; + vidattr; + vidputs; + vline; + vline_set; + vw_printw; + vw_scanw; + vwprintw; + vwscanw; + wadd_wch; + wadd_wchnstr; + wadd_wchstr; + waddch; + waddchnstr; + waddchstr; + waddnstr; + waddnwstr; + waddstr; + waddwstr; + wattr_get; + wattr_off; + wattr_on; + wattr_set; + wattroff; + wattron; + wattrset; + wbkgd; + wbkgdset; + wbkgrnd; + wbkgrndset; + wborder; + wborder_set; + wchgat; + wclear; + wclrtobot; + wclrtoeol; + wcolor_set; + wcursyncup; + wdelch; + wdeleteln; + wecho_wchar; + wechochar; + wenclose; + werase; + wget_wch; + wget_wstr; + wgetbkgrnd; + wgetch; + wgetch_events; + wgetn_wstr; + wgetnstr; + wgetnstr_events; + wgetparent; + wgetscrreg; + wgetstr; + whline; + whline_set; + win_wch; + win_wchnstr; + win_wchstr; + winch; + winchnstr; + winchstr; + winnstr; + winnwstr; + wins_nwstr; + wins_wch; + wins_wstr; + winsch; + winsdelln; + winsertln; + winsnstr; + winsstr; + winstr; + winwstr; + wmouse_trafo; + wmove; + wnoutrefresh; + wprintw; + wredrawln; + wrefresh; + wresize; + wscanw; + wscrl; + wsetscrreg; + wstandend; + wstandout; + wsyncdown; + wsyncup; + wtouchln; + wunctrl; + wvline; + wvline_set; + local: + _nc_Calculate_Item_Length_and_Width; + _nc_Calculate_Text_Width; + _nc_Connect_Items; + _nc_Copy_Argument; + _nc_Copy_Type; + _nc_Default_FieldType; + _nc_Default_Item; + _nc_Default_Menu; + _nc_Disconnect_Items; + _nc_Draw_Menu; + _nc_First_Active_Field; + _nc_Free_Argument; + _nc_Free_Type; + _nc_Internal_Validation; + _nc_Link_Items; + _nc_Make_Argument; + _nc_Match_Next_Character_In_Item_Name; + _nc_New_TopRow_and_CurrentItem; + _nc_Position_Form_Cursor; + _nc_Post_Item; + _nc_Refresh_Current_Field; + _nc_Set_Current_Field; + _nc_Set_Form_Page; + _nc_Show_Menu; + _nc_Synchronize_Attributes; + _nc_Synchronize_Options; + _nc_Touchline; + _nc_Touchpan; + _nc_Widen_String; + _nc_Wnoutrefresh; + _nc_build_wch; + _nc_dPanel; + _nc_dStack; + _nc_do_color; + _nc_expanded; + _nc_fifo_dump; + _nc_freewin; + _nc_hash_map; + _nc_init_wacs; + _nc_insert_ch; + _nc_is_charable; + _nc_linedump; + _nc_make_oldhash; + _nc_makenew; + _nc_memmove; + _nc_menu_cursor_pos; + _nc_msec_cost; + _nc_mvcur_init; + _nc_mvcur_resume; + _nc_mvcur_wrap; + _nc_my_visbuf; + _nc_oldnums; + _nc_printf_string; + _nc_render; + _nc_reset_colors; + _nc_retrace_field; + _nc_retrace_field_ptr; + _nc_retrace_field_type; + _nc_retrace_form; + _nc_retrace_form_hook; + _nc_retrace_item; + _nc_retrace_item_opts; + _nc_retrace_item_ptr; + _nc_retrace_menu; + _nc_retrace_menu_hook; + _nc_retrace_menu_opts; + _nc_retrace_panel; + _nc_screen_init; + _nc_screen_resume; + _nc_screen_wrap; + _nc_scroll_oldhash; + _nc_scroll_optimize; + _nc_scroll_window; + _nc_scrolln; + _nc_setupscreen; + _nc_signal_handler; + _nc_slk_initialize; + _nc_synchook; + _nc_to_char; + _nc_to_widechar; + _nc_trace_xnames; + _nc_tracemouse; + _nc_ungetch; + _nc_varargs; + _nc_vsscanf; + _nc_waddch_nosync; + _nc_wchstrlen; + _nc_wgetch; + _tracedump; + _tracemouse; +}; + +NCURSESTW_5.8.20110226 { + global: + _nc_panelhook_sp; + assume_default_colors_sp; + beep_sp; + can_change_color_sp; + ceiling_panel; + color_content_sp; + doupdate_sp; + echo_sp; + endwin_sp; + filter_sp; + flash_sp; + get_escdelay; + get_escdelay_sp; + getmouse_sp; + getwin_sp; + ground_panel; + has_colors_sp; + has_mouse; + has_mouse_sp; + init_color_sp; + init_pair_sp; + is_pad; + is_subwin; + is_term_resized_sp; + isendwin_sp; + mcprint_sp; + mouseinterval_sp; + mousemask_sp; + mvcur_sp; + new_form_sp; + new_menu_sp; + newpad_sp; + newterm_sp; + newwin_sp; + nl_sp; + noecho_sp; + nofilter_sp; + nonl_sp; + pair_content_sp; + resize_term_sp; + resizeterm_sp; + restartterm_sp; + ripoffline_sp; + scr_init_sp; + scr_restore_sp; + scr_set_sp; + set_escdelay_sp; + slk_attr_set_sp; + slk_attr_sp; + slk_attroff_sp; + slk_attron_sp; + slk_attrset_sp; + slk_clear_sp; + slk_color_sp; + slk_init_sp; + slk_label_sp; + slk_noutrefresh_sp; + slk_refresh_sp; + slk_restore_sp; + slk_set_sp; + slk_touch_sp; + start_color_sp; + term_attrs_sp; + termattrs_sp; + unget_wch_sp; + ungetch_sp; + ungetmouse_sp; + update_panels_sp; + use_default_colors_sp; + use_legacy_coding_sp; + vid_attr_sp; + vid_puts_sp; + vidattr_sp; + vidputs_sp; + wunctrl_sp; + local: + _nc_TYPE_ALNUM; + _nc_TYPE_ALPHA; + _nc_TYPE_ENUM; + _nc_TYPE_INTEGER; + _nc_TYPE_IPV4; + _nc_TYPE_NUMERIC; + _nc_TYPE_REGEXP; + _nc_curscr_of; + _nc_do_color_sp; + _nc_form_cursor; + _nc_format_slks; + _nc_free_and_exit_sp; + _nc_freeall_sp; + _nc_fty_generic; + _nc_generic_fieldtype; + _nc_get_fieldbuffer; + _nc_hash_map_sp; + _nc_insert_wch; + _nc_linedump_sp; + _nc_make_oldhash_sp; + _nc_makenew_sp; + _nc_msec_cost_sp; + _nc_mvcur_init_sp; + _nc_mvcur_resume_sp; + _nc_mvcur_wrap_sp; + _nc_newscr_of; + _nc_printf_string_sp; + _nc_ptr_Escdelay; + _nc_reset_colors_sp; + _nc_retrace_mmask_t; + _nc_ripoffline_sp; + _nc_screen_init_sp; + _nc_screen_resume_sp; + _nc_screen_wrap_sp; + _nc_scroll_oldhash_sp; + _nc_scroll_optimize_sp; + _nc_scrolln_sp; + _nc_set_generic_fieldtype; + _nc_setupscreen_sp; + _nc_stdscr_of; +} NCURSESTW_5.7.20081102; + +NCURSESTW_5.9.20150530 { + global: + form_driver_w; + wgetdelay; + local: + _nc_mvcur; + _nc_mvcur_sp; + _nc_trace_mmask_t; +} NCURSESTW_5.8.20110226; + +NCURSESTW_6.1.20171230 { + global: + alloc_pair; + alloc_pair_sp; + extended_color_content; + extended_color_content_sp; + extended_pair_content; + extended_pair_content_sp; + extended_slk_color; + extended_slk_color_sp; + find_pair; + find_pair_sp; + free_pair; + free_pair_sp; + init_extended_color; + init_extended_color_sp; + init_extended_pair; + init_extended_pair_sp; + reset_color_pairs; + reset_color_pairs_sp; + unfocus_current_field; + local: + _nc_Unset_Current_Field; + _nc_change_pair; + _nc_init_color; + _nc_init_pair; + _nc_pair_content; + _nc_reset_color_pair; + _nc_set_color_pair; +} NCURSESTW_5.9.20150530; + +NCURSESTW_6.2.20200212 { + global: + exit_curses; + local: + _*; +} NCURSESTW_6.1.20171230; diff --git a/deps/ncurses-6.3/package/ncursestw.sym b/deps/ncurses-6.3/package/ncursestw.sym new file mode 100644 index 0000000..1668f40 --- /dev/null +++ b/deps/ncurses-6.3/package/ncursestw.sym @@ -0,0 +1,1001 @@ +# $Id: ncursestw.sym,v 1.41 2021/08/19 23:50:26 tom Exp $ +# script for shared library symbol-visibility using libtool +# +# This file was generated by ncu-mapsyms +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace +# Configure options (6.0.20161029) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-reentrant --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-broken_linker --with-hashed-db --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-weak-symbols --enable-widec --with-pthread --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-wgetch-events --enable-widec --with-hashed-db --with-pthread --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-weak-symbols --enable-widec --with-broken_linker --with-pthread --with-termlib --with-ticlib --with-trace +BC +COLOR_PAIR +PAIR_NUMBER +PC +SP +TYPE_ALNUM +TYPE_ALPHA +TYPE_ENUM +TYPE_INTEGER +TYPE_IPV4 +TYPE_NUMERIC +TYPE_REGEXP +UP +_nc_COLORS +_nc_COLOR_PAIRS +_nc_COLS +_nc_Default_Field +_nc_Default_Form +_nc_ESCDELAY +_nc_LINES +_nc_TABSIZE +_nc__nc_outchars +_nc_access +_nc_acs_map +_nc_add_to_try +_nc_align_termtype +_nc_alloc_entry_leaks +_nc_basename +_nc_boolcodes +_nc_boolfnames +_nc_boolnames +_nc_capcmp +_nc_captoinfo_leaks +_nc_check_termtype +_nc_check_termtype2 +_nc_codes_leaks +_nc_comp_scan_leaks +_nc_copy_termtype +_nc_copy_termtype2 +_nc_count_outchars +_nc_cur_term +_nc_curr_col +_nc_curr_line +_nc_curscr +_nc_db_close +_nc_db_first +_nc_db_have_data +_nc_db_next +_nc_db_open +_nc_db_put +_nc_disable_period +_nc_doalloc +_nc_entry_match +_nc_env_access +_nc_err_abort +_nc_eventlist_timeout +_nc_export_termtype2 +_nc_fallback +_nc_fallback2 +_nc_find_entry +_nc_find_prescr +_nc_find_type_entry +_nc_find_user_entry +_nc_first_db +_nc_first_name +_nc_flush +_nc_flush_sp +_nc_fmt_funcptr +_nc_forget_prescr +_nc_free_and_exit +_nc_free_entries +_nc_free_termtype +_nc_free_termtype2 +_nc_free_tic +_nc_free_tinfo +_nc_free_tparm +_nc_freeall +_nc_get_alias_table +_nc_get_hash_table +_nc_get_locale +_nc_get_screensize +_nc_get_source +_nc_get_table +_nc_get_tty_mode +_nc_get_tty_mode_sp +_nc_get_type +_nc_getenv_num +_nc_globals +_nc_handle_sigwinch +_nc_has_mouse +_nc_head +_nc_home_terminfo +_nc_infotocap +_nc_init_acs +_nc_init_acs_sp +_nc_init_pthreads +_nc_init_termtype +_nc_is_abs_path +_nc_is_dir_path +_nc_is_file_path +_nc_keep_tic_dir +_nc_keyname_leaks +_nc_keypad +_nc_last_db +_nc_leaks_tinfo +_nc_locale_breaks_acs +_nc_locked_tracef +_nc_mutex_lock +_nc_mutex_trylock +_nc_mutex_unlock +_nc_name_match +_nc_names_leaks +_nc_newscr +_nc_next_db +_nc_numcodes +_nc_numfnames +_nc_numnames +_nc_optimize_enable +_nc_outc_wrapper +_nc_outch +_nc_outch_sp +_nc_panelhook +_nc_panelhook_sp +_nc_pathlast +_nc_prescreen +_nc_ptr_Cols +_nc_ptr_Lines +_nc_putchar +_nc_putchar_sp +_nc_putp +_nc_putp_flush +_nc_putp_flush_sp +_nc_putp_sp +_nc_read_entry +_nc_read_entry2 +_nc_read_entry_source +_nc_read_file_entry +_nc_read_termtype +_nc_reset_input +_nc_reset_tparm +_nc_resolve_uses +_nc_resolve_uses2 +_nc_retrace_attr_t +_nc_retrace_bool +_nc_retrace_chtype +_nc_retrace_cptr +_nc_retrace_cvoid_ptr +_nc_retrace_int +_nc_retrace_int_attr_t +_nc_retrace_ptr +_nc_retrace_sp +_nc_retrace_unsigned +_nc_retrace_void_ptr +_nc_retrace_win +_nc_ripoffline +_nc_rootname +_nc_safe_fopen +_nc_safe_open3 +_nc_safe_strcat +_nc_safe_strcpy +_nc_screen +_nc_screen_chain +_nc_screen_of +_nc_set_buffer +_nc_set_buffer_sp +_nc_set_no_padding +_nc_set_source +_nc_set_tputs_trace +_nc_set_tty_mode +_nc_set_tty_mode_sp +_nc_set_type +_nc_set_writedir +_nc_setupterm +_nc_sigprocmask +_nc_stdscr +_nc_str_copy +_nc_str_init +_nc_str_null +_nc_strcodes +_nc_strfnames +_nc_strict_bsd +_nc_strnames +_nc_suppress_warnings +_nc_syntax +_nc_syserr_abort +_nc_tail +_nc_tgetent_leaks +_nc_tic_dir +_nc_tic_expand +_nc_tic_written +_nc_timed_wait +_nc_tinfo_fkeys +_nc_tinfo_fkeysf +_nc_tiparm +_nc_tparm_analyze +_nc_tparm_err +_nc_trace_buf +_nc_trace_bufcat +_nc_tracechar +_nc_tracing +_nc_trans_string +_nc_trim_sgr0 +_nc_ttytype +_nc_unicode_locale +_nc_update_screensize +_nc_use_tracef +_nc_user_definable +_nc_visbuf +_nc_visbuf2 +_nc_visbufn +_nc_viscbuf +_nc_viswbuf +_nc_viswbufn +_nc_viswibuf +_nc_wacs +_nc_wacs_width +_nc_warning +_nc_wcrtomb +_nc_write_entry +_nc_write_object +_traceattr +_traceattr2 +_tracecchar_t +_tracecchar_t2 +_tracechar +_tracechtype +_tracechtype2 +_tracef +add_wch +add_wchnstr +add_wchstr +addch +addchnstr +addchstr +addnstr +addnwstr +addstr +addwstr +alloc_pair +alloc_pair_sp +assume_default_colors +assume_default_colors_sp +attr_get +attr_off +attr_on +attr_set +attroff +attron +attrset +baudrate +baudrate_sp +beep +beep_sp +bkgd +bkgdset +bkgrnd +bkgrndset +border +border_set +bottom_panel +box +box_set +can_change_color +can_change_color_sp +cbreak +cbreak_sp +ceiling_panel +chgat +clear +clearok +clrtobot +clrtoeol +color_content +color_content_sp +color_set +copywin +current_field +current_item +curs_set +curs_set_sp +curses_trace +curses_version +data_ahead +data_behind +def_prog_mode +def_prog_mode_sp +def_shell_mode +def_shell_mode_sp +define_key +define_key_sp +del_curterm +del_curterm_sp +del_panel +delay_output +delay_output_sp +delch +deleteln +delscreen +delwin +derwin +doupdate +doupdate_sp +dup_field +dupwin +dynamic_field_info +echo +echo_sp +echo_wchar +echochar +endwin +endwin_sp +erase +erasechar +erasechar_sp +erasewchar +erasewchar_sp +exit_curses +exit_terminfo +extended_color_content +extended_color_content_sp +extended_pair_content +extended_pair_content_sp +extended_slk_color +extended_slk_color_sp +field_arg +field_back +field_buffer +field_count +field_fore +field_index +field_info +field_init +field_just +field_opts +field_opts_off +field_opts_on +field_pad +field_status +field_term +field_type +field_userptr +filter +filter_sp +find_pair +find_pair_sp +flash +flash_sp +flushinp +flushinp_sp +form_driver +form_driver_w +form_fields +form_init +form_opts +form_opts_off +form_opts_on +form_page +form_request_by_name +form_request_name +form_sub +form_term +form_userptr +form_win +free_field +free_fieldtype +free_form +free_item +free_menu +free_pair +free_pair_sp +get_escdelay +get_escdelay_sp +get_wch +get_wstr +getattrs +getbegx +getbegy +getbkgd +getbkgrnd +getcchar +getch +getcurx +getcury +getmaxx +getmaxy +getmouse +getmouse_sp +getn_wstr +getnstr +getparx +getpary +getstr +getwin +getwin_sp +ground_panel +halfdelay +halfdelay_sp +has_colors +has_colors_sp +has_ic +has_ic_sp +has_il +has_il_sp +has_key +has_key_sp +has_mouse +has_mouse_sp +hide_panel +hline +hline_set +idcok +idlok +immedok +in_wch +in_wchnstr +in_wchstr +inch +inchnstr +inchstr +init_color +init_color_sp +init_extended_color +init_extended_color_sp +init_extended_pair +init_extended_pair_sp +init_pair +init_pair_sp +initscr +innstr +innwstr +ins_nwstr +ins_wch +ins_wstr +insch +insdelln +insertln +insnstr +insstr +instr +intrflush +intrflush_sp +inwstr +is_cleared +is_idcok +is_idlok +is_immedok +is_keypad +is_leaveok +is_linetouched +is_nodelay +is_notimeout +is_pad +is_scrollok +is_subwin +is_syncok +is_term_resized +is_term_resized_sp +is_wintouched +isendwin +isendwin_sp +item_count +item_description +item_index +item_init +item_name +item_opts +item_opts_off +item_opts_on +item_term +item_userptr +item_value +item_visible +key_defined +key_defined_sp +key_name +keybound +keybound_sp +keyname +keyname_sp +keyok +keyok_sp +keypad +killchar +killchar_sp +killwchar +killwchar_sp +leaveok +link_field +link_fieldtype +longname +longname_sp +mcprint +mcprint_sp +menu_back +menu_driver +menu_fore +menu_format +menu_grey +menu_init +menu_items +menu_mark +menu_opts +menu_opts_off +menu_opts_on +menu_pad +menu_pattern +menu_request_by_name +menu_request_name +menu_spacing +menu_sub +menu_term +menu_userptr +menu_win +meta +mouse_trafo +mouseinterval +mouseinterval_sp +mousemask +mousemask_sp +move +move_field +move_panel +mvadd_wch +mvadd_wchnstr +mvadd_wchstr +mvaddch +mvaddchnstr +mvaddchstr +mvaddnstr +mvaddnwstr +mvaddstr +mvaddwstr +mvchgat +mvcur +mvcur_sp +mvdelch +mvderwin +mvget_wch +mvget_wstr +mvgetch +mvgetn_wstr +mvgetnstr +mvgetstr +mvhline +mvhline_set +mvin_wch +mvin_wchnstr +mvin_wchstr +mvinch +mvinchnstr +mvinchstr +mvinnstr +mvinnwstr +mvins_nwstr +mvins_wch +mvins_wstr +mvinsch +mvinsnstr +mvinsstr +mvinstr +mvinwstr +mvprintw +mvscanw +mvvline +mvvline_set +mvwadd_wch +mvwadd_wchnstr +mvwadd_wchstr +mvwaddch +mvwaddchnstr +mvwaddchstr +mvwaddnstr +mvwaddnwstr +mvwaddstr +mvwaddwstr +mvwchgat +mvwdelch +mvwget_wch +mvwget_wstr +mvwgetch +mvwgetn_wstr +mvwgetnstr +mvwgetstr +mvwhline +mvwhline_set +mvwin +mvwin_wch +mvwin_wchnstr +mvwin_wchstr +mvwinch +mvwinchnstr +mvwinchstr +mvwinnstr +mvwinnwstr +mvwins_nwstr +mvwins_wch +mvwins_wstr +mvwinsch +mvwinsnstr +mvwinsstr +mvwinstr +mvwinwstr +mvwprintw +mvwscanw +mvwvline +mvwvline_set +napms +napms_sp +new_field +new_fieldtype +new_form +new_form_sp +new_item +new_menu +new_menu_sp +new_page +new_panel +new_prescr +newpad +newpad_sp +newterm +newterm_sp +newwin +newwin_sp +nl +nl_sp +nocbreak +nocbreak_sp +nodelay +noecho +noecho_sp +nofilter +nofilter_sp +nonl +nonl_sp +noqiflush +noqiflush_sp +noraw +noraw_sp +notimeout +ospeed +overlay +overwrite +pair_content +pair_content_sp +panel_above +panel_below +panel_hidden +panel_userptr +panel_window +pecho_wchar +pechochar +pnoutrefresh +pos_form_cursor +pos_menu_cursor +post_form +post_menu +prefresh +printw +putp +putp_sp +putwin +qiflush +qiflush_sp +raw +raw_sp +redrawwin +refresh +replace_panel +reset_color_pairs +reset_color_pairs_sp +reset_prog_mode +reset_prog_mode_sp +reset_shell_mode +reset_shell_mode_sp +resetty +resetty_sp +resize_term +resize_term_sp +resizeterm +resizeterm_sp +restartterm +restartterm_sp +ripoffline +ripoffline_sp +savetty +savetty_sp +scale_form +scale_menu +scanw +scr_dump +scr_init +scr_init_sp +scr_restore +scr_restore_sp +scr_set +scr_set_sp +scrl +scroll +scrollok +set_current_field +set_current_item +set_curterm +set_curterm_sp +set_escdelay +set_escdelay_sp +set_field_back +set_field_buffer +set_field_fore +set_field_init +set_field_just +set_field_opts +set_field_pad +set_field_status +set_field_term +set_field_type +set_field_userptr +set_fieldtype_arg +set_fieldtype_choice +set_form_fields +set_form_init +set_form_opts +set_form_page +set_form_sub +set_form_term +set_form_userptr +set_form_win +set_item_init +set_item_opts +set_item_term +set_item_userptr +set_item_value +set_max_field +set_menu_back +set_menu_fore +set_menu_format +set_menu_grey +set_menu_init +set_menu_items +set_menu_mark +set_menu_opts +set_menu_pad +set_menu_pattern +set_menu_spacing +set_menu_sub +set_menu_term +set_menu_userptr +set_menu_win +set_new_page +set_panel_userptr +set_tabsize +set_tabsize_sp +set_term +set_top_row +setcchar +setscrreg +setupterm +show_panel +slk_attr +slk_attr_off +slk_attr_on +slk_attr_set +slk_attr_set_sp +slk_attr_sp +slk_attroff +slk_attroff_sp +slk_attron +slk_attron_sp +slk_attrset +slk_attrset_sp +slk_clear +slk_clear_sp +slk_color +slk_color_sp +slk_init +slk_init_sp +slk_label +slk_label_sp +slk_noutrefresh +slk_noutrefresh_sp +slk_refresh +slk_refresh_sp +slk_restore +slk_restore_sp +slk_set +slk_set_sp +slk_touch +slk_touch_sp +slk_wset +standend +standout +start_color +start_color_sp +subpad +subwin +syncok +term_attrs +term_attrs_sp +termattrs +termattrs_sp +termname +termname_sp +tgetent +tgetent_sp +tgetflag +tgetflag_sp +tgetnum +tgetnum_sp +tgetstr +tgetstr_sp +tgoto +tigetflag +tigetflag_sp +tigetnum +tigetnum_sp +tigetstr +tigetstr_sp +timeout +tiparm +top_panel +top_row +touchline +touchwin +tparm +tputs +tputs_sp +trace +typeahead +typeahead_sp +unctrl +unctrl_sp +unfocus_current_field +unget_wch +unget_wch_sp +ungetch +ungetch_sp +ungetmouse +ungetmouse_sp +unpost_form +unpost_menu +untouchwin +update_panels +update_panels_sp +use_default_colors +use_default_colors_sp +use_env +use_env_sp +use_extended_names +use_legacy_coding +use_legacy_coding_sp +use_screen +use_tioctl +use_tioctl_sp +use_window +vid_attr +vid_attr_sp +vid_puts +vid_puts_sp +vidattr +vidattr_sp +vidputs +vidputs_sp +vline +vline_set +vw_printw +vw_scanw +vwprintw +vwscanw +wadd_wch +wadd_wchnstr +wadd_wchstr +waddch +waddchnstr +waddchstr +waddnstr +waddnwstr +waddstr +waddwstr +wattr_get +wattr_off +wattr_on +wattr_set +wattroff +wattron +wattrset +wbkgd +wbkgdset +wbkgrnd +wbkgrndset +wborder +wborder_set +wchgat +wclear +wclrtobot +wclrtoeol +wcolor_set +wcursyncup +wdelch +wdeleteln +wecho_wchar +wechochar +wenclose +werase +wget_wch +wget_wstr +wgetbkgrnd +wgetch +wgetch_events +wgetdelay +wgetn_wstr +wgetnstr +wgetnstr_events +wgetparent +wgetscrreg +wgetstr +whline +whline_set +win_wch +win_wchnstr +win_wchstr +winch +winchnstr +winchstr +winnstr +winnwstr +wins_nwstr +wins_wch +wins_wstr +winsch +winsdelln +winsertln +winsnstr +winsstr +winstr +winwstr +wmouse_trafo +wmove +wnoutrefresh +wprintw +wredrawln +wrefresh +wresize +wscanw +wscrl +wsetscrreg +wstandend +wstandout +wsyncdown +wsyncup +wtimeout +wtouchln +wunctrl +wunctrl_sp +wvline +wvline_set diff --git a/deps/ncurses-6.3/package/ncursesw.map b/deps/ncurses-6.3/package/ncursesw.map new file mode 100644 index 0000000..13e8faf --- /dev/null +++ b/deps/ncurses-6.3/package/ncursesw.map @@ -0,0 +1,1328 @@ +# $Id: ncursesw.map,v 1.59 2021/10/10 15:22:33 tom Exp $ +# script for shared library symbol-versioning using ld +# +# This file was generated by ncu-mapsyms +# Configure options (5.1.20000708) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.2.20001021) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.3.20021019) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.4.20040208) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.5.20051010) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.6.20061217) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace +# Configure options (6.0.current) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace + +NCURSES_TIC_5.0.19991023 { + global: + _nc_capcmp; + _nc_check_termtype; + _nc_entry_match; + _nc_infotocap; + _nc_read_entry_source; + _nc_reset_input; + _nc_resolve_uses; + _nc_set_writedir; + _nc_syntax; + _nc_tic_expand; + _nc_tic_written; + _nc_trans_string; + _nc_write_entry; + local: + _nc_captoinfo; + _nc_comment_end; + _nc_comment_start; + _nc_copy_entry; + _nc_curr_file_pos; + _nc_curr_token; + _nc_get_token; + _nc_init_entry; + _nc_merge_entry; + _nc_panic_mode; + _nc_parse_entry; + _nc_push_token; + _nc_save_str; + _nc_start_line; + _nc_wrap_entry; +}; + +NCURSES_TIC_5.1.20000708 { + global: + _nc_disable_period; +} NCURSES_TIC_5.0.19991023; + +NCURSES_TIC_5.5.20051010 { + global: + _nc_alloc_entry_leaks; + _nc_captoinfo_leaks; + _nc_check_termtype2; + _nc_comp_scan_leaks; + _nc_resolve_uses2; +} NCURSES_TIC_5.1.20000708; + +NCURSES_TIC_5.7.20081102 { + global: + _nc_free_tic; + local: + _nc_comp_captab_leaks; + _nc_leaks_tic; +} NCURSES_TIC_5.5.20051010; + +NCURSES_TIC_5.9.20150530 { + global: + _nc_strict_bsd; +} NCURSES_TIC_5.7.20081102; + +NCURSES_TIC_6.1.20171230 { + global: + _nc_read_entry2; + _nc_write_object; + local: + _*; +} NCURSES_TIC_5.9.20150530; + +NCURSES_TINFO_5.0.19991023 { + global: + BC; + COLS; + LINES; + PC; + SP; + TABSIZE; + UP; + _nc_access; + _nc_add_to_try; + _nc_copy_termtype; + _nc_curr_col; + _nc_curr_line; + _nc_doalloc; + _nc_err_abort; + _nc_fallback; + _nc_find_entry; + _nc_find_type_entry; + _nc_first_name; + _nc_free_entries; + _nc_free_termtype; + _nc_free_tparm; + _nc_freeall; + _nc_get_hash_table; + _nc_get_table; + _nc_get_tty_mode; + _nc_get_type; + _nc_getenv_num; + _nc_head; + _nc_home_terminfo; + _nc_info_hash_table; + _nc_init_acs; + _nc_keep_tic_dir; + _nc_keypad; + _nc_name_match; + _nc_outch; + _nc_read_entry; + _nc_read_file_entry; + _nc_screen_chain; + _nc_set_buffer; + _nc_set_source; + _nc_set_tty_mode; + _nc_set_type; + _nc_suppress_warnings; + _nc_syserr_abort; + _nc_tail; + _nc_tic_dir; + _nc_timed_wait; + _nc_trace_buf; + _nc_tracing; + _nc_update_screensize; + _nc_visbuf; + _nc_visbuf2; + _nc_warning; + _tracechar; + acs_map; + baudrate; + boolcodes; + boolfnames; + boolnames; + cbreak; + cur_term; + curs_set; + curscr; + curses_version; + def_prog_mode; + def_shell_mode; + define_key; + del_curterm; + delay_output; + erasechar; + flushinp; + halfdelay; + has_ic; + has_il; + has_key; + idcok; + idlok; + intrflush; + keybound; + keyname; + keyok; + keypad; + killchar; + longname; + meta; + napms; + newscr; + nocbreak; + nodelay; + noqiflush; + noraw; + notimeout; + numcodes; + numfnames; + numnames; + ospeed; + putp; + qiflush; + raw; + reset_prog_mode; + reset_shell_mode; + resetty; + savetty; + set_curterm; + setupterm; + stdscr; + strcodes; + strfnames; + strnames; + termname; + tgetent; + tgetflag; + tgetnum; + tgetstr; + tgoto; + tigetflag; + tigetnum; + tigetstr; + tparm; + tputs; + trace; + ttytype; + typeahead; + unctrl; + use_env; + wtimeout; + local: + _nc_baudrate; + _nc_cap_hash_table; + _nc_capalias_table; + _nc_expand_try; + _nc_infoalias_table; + _nc_init_keytry; + _nc_key_names; + _nc_nulls_sent; + _nc_ospeed; + _nc_read_termcap; + _nc_read_termcap_entry; + _nc_remove_key; + _nc_remove_string; + _nc_trace_tries; + _nc_tracebits; +}; + +NCURSES_TINFO_5.1.20000708 { + global: + _nc_align_termtype; + _nc_flush; + _nc_tinfo_fkeys; + _nc_user_definable; + _nc_utf8_outch; + use_extended_names; +} NCURSES_TINFO_5.0.19991023; + +NCURSES_TINFO_5.2.20001021 { + global: + _nc_basename; + _nc_env_access; + _nc_safe_strcat; + _nc_safe_strcpy; + _nc_str_copy; + _nc_str_init; + _nc_str_null; +} NCURSES_TINFO_5.1.20000708; + +NCURSES_TINFO_5.3.20021019 { + global: + _nc_rootname; + _nc_tparm_err; + _nc_visbufn; +} NCURSES_TINFO_5.2.20001021; + +NCURSES_TINFO_5.4.20040208 { + global: + _nc_altcharset_name; + _nc_get_locale; + _nc_locale_breaks_acs; + _nc_outchars; + _nc_pathlast; + _nc_retrace_attr_t; + _nc_retrace_bool; + _nc_retrace_chtype; + _nc_retrace_int; + _nc_retrace_ptr; + _nc_retrace_sp; + _nc_retrace_unsigned; + _nc_retrace_win; + _nc_tparm_analyze; + _nc_tputs_trace; + _nc_trace_bufcat; + _nc_unicode_locale; + _nc_viswbuf; + _nc_viswbufn; + _traceattr; + _traceattr2; + _tracecchar_t; + _tracecchar_t2; + _tracechtype; + _tracechtype2; + _tracef; + key_defined; + local: + _nc_trace_ttymode; + _nc_viswbuf2; +} NCURSES_TINFO_5.3.20021019; + +NCURSES_TINFO_5.5.20051010 { + global: + _nc_get_source; + _nc_retrace_cptr; + _nc_retrace_cvoid_ptr; + _nc_retrace_void_ptr; + _nc_setupterm; + _nc_trim_sgr0; + _nc_viswibuf; + local: + _nc_delink_entry; + _nc_free_entry; +} NCURSES_TINFO_5.4.20040208; + +NCURSES_TINFO_5.6.20061217 { + global: + _nc_db_close; + _nc_db_first; + _nc_db_have_data; + _nc_db_next; + _nc_db_open; + _nc_db_put; + _nc_eventlist_timeout; + _nc_first_db; + _nc_handle_sigwinch; + _nc_is_abs_path; + _nc_is_dir_path; + _nc_is_file_path; + _nc_keyname_leaks; + _nc_last_db; + _nc_next_db; + _nc_read_termtype; + _nc_tgetent_leaks; + _nc_viscbuf; + local: + _nc_db_get; + _nc_db_have_index; + _nc_hashed_db; + _nc_viscbuf2; +} NCURSES_TINFO_5.5.20051010; + +NCURSES_TINFO_5.7.20081102 { + global: + _nc_free_tinfo; + _nc_get_alias_table; + _nc_get_screensize; + _nc_globals; + _nc_leaks_tinfo; + _nc_prescreen; + _nc_screen_of; + _nc_set_no_padding; + _nc_tracechar; + set_tabsize; + local: + _nc_keyname; + _nc_unctrl; +} NCURSES_TINFO_5.6.20061217; + +NCURSES_TINFO_5.8.20110226 { + global: + _nc_flush_sp; + _nc_get_tty_mode_sp; + _nc_init_acs_sp; + _nc_outc_wrapper; + _nc_outch_sp; + _nc_putp; + _nc_putp_flush; + _nc_putp_flush_sp; + _nc_putp_sp; + _nc_retrace_int_attr_t; + _nc_set_buffer_sp; + _nc_set_tty_mode_sp; + baudrate_sp; + cbreak_sp; + curs_set_sp; + def_prog_mode_sp; + def_shell_mode_sp; + define_key_sp; + del_curterm_sp; + delay_output_sp; + erasechar_sp; + flushinp_sp; + halfdelay_sp; + has_ic_sp; + has_il_sp; + has_key_sp; + intrflush_sp; + key_defined_sp; + keybound_sp; + keyname_sp; + keyok_sp; + killchar_sp; + longname_sp; + napms_sp; + new_prescr; + nocbreak_sp; + noqiflush_sp; + noraw_sp; + putp_sp; + qiflush_sp; + raw_sp; + reset_prog_mode_sp; + reset_shell_mode_sp; + resetty_sp; + savetty_sp; + set_curterm_sp; + set_tabsize_sp; + termname_sp; + tgetent_sp; + tgetflag_sp; + tgetnum_sp; + tgetstr_sp; + tigetflag_sp; + tigetnum_sp; + tigetstr_sp; + tiparm; + tputs_sp; + typeahead_sp; + unctrl_sp; + use_env_sp; + local: + _nc_get_hash_info; + _nc_retrace_char; + _nc_setup_tinfo; + _nc_tinfo_cmdch; +} NCURSES_TINFO_5.7.20081102; + +NCURSES_TINFO_5.9.20150530 { + global: + _nc_init_termtype; + _nc_putchar; + _nc_putchar_sp; + use_tioctl; + use_tioctl_sp; + local: + _nc_comp_error_leaks; + _nc_db_iterator_leaks; + _nc_setenv_num; +} NCURSES_TINFO_5.8.20110226; + +NCURSES_TINFO_6.1.20171230 { + global: + _nc_copy_termtype2; + _nc_export_termtype2; + _nc_fallback2; + _nc_free_termtype2; +} NCURSES_TINFO_5.9.20150530; + +NCURSES_TINFO_6.2.20200212 { + global: + _nc_find_user_entry; + _nc_fmt_funcptr; + _nc_wacs_width; + curses_trace; + exit_terminfo; +} NCURSES_TINFO_6.1.20171230; + +NCURSES_TINFO_6.2.20211010 { + global: + _nc_reset_tparm; + _nc_tiparm; + _nc_safe_fopen; + _nc_safe_open3; + erasewchar_sp; + killwchar_sp; + local: + _*; +} NCURSES_TINFO_6.2.20200212; + +NCURSESW_5.1.20000708 { + global: + COLORS; + COLOR_PAIR; + COLOR_PAIRS; + ESCDELAY; + PAIR_NUMBER; + TYPE_ALNUM; + TYPE_ALPHA; + TYPE_ENUM; + TYPE_INTEGER; + TYPE_IPV4; + TYPE_NUMERIC; + TYPE_REGEXP; + _nc_Default_Field; # deprecated in ABI6 + _nc_Default_Form; # deprecated in ABI6 + _nc_free_and_exit; + _nc_has_mouse; # deprecated in ABI6 + _nc_panelhook; + _nc_ripoffline; + addch; + addchnstr; + addchstr; + addnstr; + addstr; + assume_default_colors; + attr_get; + attr_off; + attr_on; + attr_set; + attroff; + attron; + attrset; + beep; + bkgd; + bkgdset; + border; + bottom_panel; + box; + can_change_color; + chgat; + clear; + clearok; + clrtobot; + clrtoeol; + color_content; + color_set; + copywin; + current_field; + current_item; + data_ahead; + data_behind; + del_panel; + delch; + deleteln; + delscreen; + delwin; + derwin; + doupdate; + dup_field; + dupwin; + dynamic_field_info; + echo; + echochar; + endwin; + erase; + field_arg; + field_back; + field_buffer; + field_count; + field_fore; + field_index; + field_info; + field_init; + field_just; + field_opts; + field_opts_off; + field_opts_on; + field_pad; + field_status; + field_term; + field_type; + field_userptr; + filter; + flash; + form_driver; + form_fields; + form_init; + form_opts; + form_opts_off; + form_opts_on; + form_page; + form_request_by_name; + form_request_name; + form_sub; + form_term; + form_userptr; + form_win; + free_field; + free_fieldtype; + free_form; + free_item; + free_menu; + getbkgd; + getch; + getmouse; + getnstr; + getstr; + getwin; + has_colors; + hide_panel; + hline; + immedok; + inch; + inchnstr; + inchstr; + init_color; + init_pair; + initscr; + innstr; + insch; + insdelln; + insertln; + insnstr; + insstr; + instr; + is_linetouched; + is_wintouched; + isendwin; + item_count; + item_description; + item_index; + item_init; + item_name; + item_opts; + item_opts_off; + item_opts_on; + item_term; + item_userptr; + item_value; + item_visible; + leaveok; + link_field; + link_fieldtype; + mcprint; + menu_back; + menu_driver; + menu_fore; + menu_format; + menu_grey; + menu_init; + menu_items; + menu_mark; + menu_opts; + menu_opts_off; + menu_opts_on; + menu_pad; + menu_pattern; + menu_request_by_name; + menu_request_name; + menu_spacing; + menu_sub; + menu_term; + menu_userptr; + menu_win; + mouse_trafo; + mouseinterval; + mousemask; + move; + move_field; + move_panel; + mvaddch; + mvaddchnstr; + mvaddchstr; + mvaddnstr; + mvaddstr; + mvchgat; + mvcur; + mvdelch; + mvderwin; + mvgetch; + mvgetnstr; + mvgetstr; + mvhline; + mvinch; + mvinchnstr; + mvinchstr; + mvinnstr; + mvinsch; + mvinsnstr; + mvinsstr; + mvinstr; + mvprintw; + mvscanw; + mvvline; + mvwaddch; + mvwaddchnstr; + mvwaddchstr; + mvwaddnstr; + mvwaddstr; + mvwchgat; + mvwdelch; + mvwgetch; + mvwgetnstr; + mvwgetstr; + mvwhline; + mvwin; + mvwinch; + mvwinchnstr; + mvwinchstr; + mvwinnstr; + mvwinsch; + mvwinsnstr; + mvwinsstr; + mvwinstr; + mvwprintw; + mvwscanw; + mvwvline; + new_field; + new_fieldtype; + new_form; + new_item; + new_menu; + new_page; + new_panel; + newpad; + newterm; + newwin; + nl; + noecho; + nonl; + overlay; + overwrite; + pair_content; + panel_above; + panel_below; + panel_hidden; + panel_userptr; + panel_window; + pechochar; + pnoutrefresh; + pos_form_cursor; + pos_menu_cursor; + post_form; + post_menu; + prefresh; + printw; + putwin; + redrawwin; + refresh; + replace_panel; + resizeterm; + restartterm; + ripoffline; + scale_form; + scale_menu; + scanw; + scr_dump; + scr_init; + scr_restore; + scr_set; + scrl; + scroll; + scrollok; + set_current_field; + set_current_item; + set_field_back; + set_field_buffer; + set_field_fore; + set_field_init; + set_field_just; + set_field_opts; + set_field_pad; + set_field_status; + set_field_term; + set_field_type; + set_field_userptr; + set_fieldtype_arg; + set_fieldtype_choice; + set_form_fields; + set_form_init; + set_form_opts; + set_form_page; + set_form_sub; + set_form_term; + set_form_userptr; + set_form_win; + set_item_init; + set_item_opts; + set_item_term; + set_item_userptr; + set_item_value; + set_max_field; + set_menu_back; + set_menu_fore; + set_menu_format; + set_menu_grey; + set_menu_init; + set_menu_items; + set_menu_mark; + set_menu_opts; + set_menu_pad; + set_menu_pattern; + set_menu_spacing; + set_menu_sub; + set_menu_term; + set_menu_userptr; + set_menu_win; + set_new_page; + set_panel_userptr; + set_term; + set_top_row; + setscrreg; + show_panel; + slk_attr; + slk_attr_off; + slk_attr_on; + slk_attr_set; + slk_attroff; + slk_attron; + slk_attrset; + slk_clear; + slk_color; + slk_init; + slk_label; + slk_noutrefresh; + slk_refresh; + slk_restore; + slk_set; + slk_touch; + standend; + standout; + start_color; + subpad; + subwin; + syncok; + termattrs; + timeout; + top_panel; + top_row; + touchline; + touchwin; + ungetch; + ungetmouse; + unpost_form; + unpost_menu; + untouchwin; + update_panels; + use_default_colors; + vid_attr; + vidattr; + vidputs; + vline; + vw_printw; + vw_scanw; + vwprintw; + vwscanw; + waddch; + waddchnstr; + waddchstr; + waddnstr; + waddstr; + wattr_get; + wattr_off; + wattr_on; + wattr_set; + wattroff; + wattron; + wattrset; + wbkgd; + wbkgdset; + wborder; + wchgat; + wclear; + wclrtobot; + wclrtoeol; + wcolor_set; + wcursyncup; + wdelch; + wdeleteln; + wechochar; + wenclose; + werase; + wgetch; + wgetnstr; + wgetstr; + whline; + winch; + winchnstr; + winchstr; + winnstr; + winsch; + winsdelln; + winsertln; + winsnstr; + winsstr; + winstr; + wmouse_trafo; + wmove; + wnoutrefresh; + wprintw; + wredrawln; + wrefresh; + wresize; + wscanw; + wscrl; + wsetscrreg; + wstandend; + wstandout; + wsyncdown; + wsyncup; + wtouchln; + wvline; + local: + _nc_Calculate_Item_Length_and_Width; + _nc_Connect_Items; + _nc_Copy_Argument; + _nc_Copy_Type; + _nc_Default_FieldType; + _nc_Default_Item; + _nc_Default_Menu; + _nc_Disconnect_Items; + _nc_Draw_Menu; + _nc_First_Active_Field; + _nc_Free_Argument; + _nc_Free_Type; + _nc_Internal_Validation; + _nc_Link_Items; + _nc_Make_Argument; + _nc_Match_Next_Character_In_Item_Name; + _nc_New_TopRow_and_CurrentItem; + _nc_Position_Form_Cursor; + _nc_Post_Item; + _nc_Refresh_Current_Field; + _nc_Set_Current_Field; + _nc_Set_Form_Page; + _nc_Show_Menu; + _nc_Synchronize_Attributes; + _nc_Synchronize_Options; + _nc_background; + _nc_do_color; + _nc_expanded; + _nc_freewin; + _nc_hash_map; + _nc_make_oldhash; + _nc_makenew; + _nc_memmove; + _nc_menu_cursor_pos; + _nc_msec_cost; + _nc_mvcur_init; + _nc_mvcur_resume; + _nc_mvcur_wrap; + _nc_oldnums; + _nc_outstr; + _nc_printf_string; + _nc_render; + _nc_screen_init; + _nc_screen_resume; + _nc_screen_wrap; + _nc_scroll_oldhash; + _nc_scroll_optimize; + _nc_scroll_window; + _nc_scrolln; + _nc_setupscreen; + _nc_sigaction; + _nc_signal_handler; + _nc_slk_format; + _nc_slk_initialize; + _nc_synchook; + _nc_vsscanf; + _nc_waddch_nosync; +}; + +NCURSESW_5.3.20021019 { + global: + _nc_wacs; + _nc_wchstrlen; + add_wch; + add_wchnstr; + add_wchstr; + addnwstr; + addwstr; + bkgrnd; + bkgrndset; + border_set; + box_set; + echo_wchar; + erasewchar; + get_wch; + get_wstr; + getbkgrnd; + getcchar; + getn_wstr; + hline_set; + in_wch; + in_wchnstr; + in_wchstr; + innwstr; + ins_nwstr; + ins_wch; + ins_wstr; + inwstr; + is_term_resized; + key_name; + killwchar; + mvadd_wch; + mvadd_wchnstr; + mvadd_wchstr; + mvaddnwstr; + mvaddwstr; + mvget_wch; + mvget_wstr; + mvgetn_wstr; + mvhline_set; + mvin_wch; + mvin_wchnstr; + mvin_wchstr; + mvinnwstr; + mvins_nwstr; + mvins_wch; + mvins_wstr; + mvinwstr; + mvvline_set; + mvwadd_wch; + mvwadd_wchnstr; + mvwadd_wchstr; + mvwaddnwstr; + mvwaddwstr; + mvwget_wch; + mvwget_wstr; + mvwgetn_wstr; + mvwhline_set; + mvwin_wch; + mvwin_wchnstr; + mvwin_wchstr; + mvwinnwstr; + mvwins_nwstr; + mvwins_wch; + mvwins_wstr; + mvwinwstr; + mvwvline_set; + resize_term; + setcchar; + term_attrs; + unget_wch; + vid_puts; + vline_set; + wadd_wch; + wadd_wchnstr; + wadd_wchstr; + waddnwstr; + waddwstr; + wbkgrnd; + wbkgrndset; + wborder_set; + wecho_wchar; + wget_wch; + wget_wstr; + wgetn_wstr; + whline_set; + win_wch; + win_wchnstr; + win_wchstr; + winnwstr; + wins_nwstr; + wins_wch; + wins_wstr; + winwstr; + wunctrl; + wvline_set; + local: + _nc_init_wacs; + _nc_reset_colors; + _nc_varargs; + _nc_wgetch; +} NCURSESW_5.1.20000708; + +NCURSESW_5.4.20040208 { + global: + _nc_optimize_enable; + pecho_wchar; + slk_wset; + local: + _nc_Touchline; + _nc_Touchpan; + _nc_Wnoutrefresh; + _nc_dPanel; + _nc_dStack; + _nc_fifo_dump; + _nc_insert_ch; + _nc_is_charable; + _nc_linedump; + _nc_my_visbuf; + _nc_to_char; + _nc_to_widechar; + _nc_trace_xnames; + _tracedump; + _tracemouse; +} NCURSESW_5.3.20021019; + +NCURSESW_5.5.20051010 { + global: + _nc_wcrtomb; + local: + _nc_Calculate_Text_Width; + _nc_Widen_String; + _nc_build_wch; + _nc_retrace_field; + _nc_retrace_field_ptr; + _nc_retrace_field_type; + _nc_retrace_form; + _nc_retrace_form_hook; + _nc_retrace_item; + _nc_retrace_item_opts; + _nc_retrace_item_ptr; + _nc_retrace_menu; + _nc_retrace_menu_hook; + _nc_retrace_menu_opts; + _nc_retrace_panel; +} NCURSESW_5.4.20040208; + +NCURSESW_5.6.20061217 { + global: + getbegx; + getbegy; + getcurx; + getcury; + getmaxx; + getmaxy; + getparx; + getpary; + nofilter; + use_legacy_coding; + wgetbkgrnd; + wgetch_events; + wgetnstr_events; +} NCURSESW_5.5.20051010; + +NCURSESW_5.7.20081102 { + global: + getattrs; + is_cleared; + is_idcok; + is_idlok; + is_immedok; + is_keypad; + is_leaveok; + is_nodelay; + is_notimeout; + is_scrollok; + is_syncok; + set_escdelay; + use_screen; + use_window; + wgetparent; + wgetscrreg; + local: + _nc_tracemouse; + _nc_ungetch; +} NCURSESW_5.6.20061217; + +NCURSESW_5.8.20110226 { + global: + _nc_panelhook_sp; + assume_default_colors_sp; + beep_sp; + can_change_color_sp; + ceiling_panel; + color_content_sp; + doupdate_sp; + echo_sp; + endwin_sp; + filter_sp; + flash_sp; + get_escdelay; + get_escdelay_sp; + getmouse_sp; + getwin_sp; + ground_panel; + has_colors_sp; + has_mouse; + has_mouse_sp; + init_color_sp; + init_pair_sp; + is_pad; + is_subwin; + is_term_resized_sp; + isendwin_sp; + mcprint_sp; + mouseinterval_sp; + mousemask_sp; + mvcur_sp; + new_form_sp; + new_menu_sp; + newpad_sp; + newterm_sp; + newwin_sp; + nl_sp; + noecho_sp; + nofilter_sp; + nonl_sp; + pair_content_sp; + resize_term_sp; + resizeterm_sp; + restartterm_sp; + ripoffline_sp; + scr_init_sp; + scr_restore_sp; + scr_set_sp; + set_escdelay_sp; + slk_attr_set_sp; + slk_attr_sp; + slk_attroff_sp; + slk_attron_sp; + slk_attrset_sp; + slk_clear_sp; + slk_color_sp; + slk_init_sp; + slk_label_sp; + slk_noutrefresh_sp; + slk_refresh_sp; + slk_restore_sp; + slk_set_sp; + slk_touch_sp; + start_color_sp; + term_attrs_sp; + termattrs_sp; + unget_wch_sp; + ungetch_sp; + ungetmouse_sp; + update_panels_sp; + use_default_colors_sp; + use_legacy_coding_sp; + vid_attr_sp; + vid_puts_sp; + vidattr_sp; + vidputs_sp; + wunctrl_sp; + local: + _nc_TYPE_ALNUM; + _nc_TYPE_ALPHA; + _nc_TYPE_ENUM; + _nc_TYPE_INTEGER; + _nc_TYPE_IPV4; + _nc_TYPE_NUMERIC; + _nc_TYPE_REGEXP; + _nc_curscr_of; + _nc_do_color_sp; + _nc_form_cursor; + _nc_format_slks; + _nc_free_and_exit_sp; + _nc_freeall_sp; + _nc_fty_generic; + _nc_generic_fieldtype; + _nc_get_fieldbuffer; + _nc_hash_map_sp; + _nc_insert_wch; + _nc_linedump_sp; + _nc_make_oldhash_sp; + _nc_makenew_sp; + _nc_msec_cost_sp; + _nc_mvcur_init_sp; + _nc_mvcur_resume_sp; + _nc_mvcur_wrap_sp; + _nc_newscr_of; + _nc_printf_string_sp; + _nc_reset_colors_sp; + _nc_retrace_mmask_t; + _nc_ripoffline_sp; + _nc_screen_init_sp; + _nc_screen_resume_sp; + _nc_screen_wrap_sp; + _nc_scroll_oldhash_sp; + _nc_scroll_optimize_sp; + _nc_scrolln_sp; + _nc_set_generic_fieldtype; + _nc_setupscreen_sp; + _nc_stdscr_of; +} NCURSESW_5.7.20081102; + +NCURSESW_5.9.20150530 { + global: + form_driver_w; + wgetdelay; + local: + _nc_mvcur; + _nc_mvcur_sp; + _nc_trace_mmask_t; +} NCURSESW_5.8.20110226; + +NCURSESW_6.1.20171230 { + global: + alloc_pair; + alloc_pair_sp; + extended_color_content; + extended_color_content_sp; + extended_pair_content; + extended_pair_content_sp; + extended_slk_color; + extended_slk_color_sp; + find_pair; + find_pair_sp; + free_pair; + free_pair_sp; + init_extended_color; + init_extended_color_sp; + init_extended_pair; + init_extended_pair_sp; + reset_color_pairs; + reset_color_pairs_sp; + unfocus_current_field; + local: + _nc_Unset_Current_Field; + _nc_change_pair; + _nc_init_color; + _nc_init_pair; + _nc_pair_content; + _nc_reset_color_pair; + _nc_set_color_pair; +} NCURSESW_5.9.20150530; + +NCURSESW_6.2.20200212 { + global: + exit_curses; + local: + _*; +} NCURSESW_6.1.20171230; diff --git a/deps/ncurses-6.3/package/ncursesw.sym b/deps/ncurses-6.3/package/ncursesw.sym new file mode 100644 index 0000000..a17fd79 --- /dev/null +++ b/deps/ncurses-6.3/package/ncursesw.sym @@ -0,0 +1,998 @@ +# $Id: ncursesw.sym,v 1.40 2021/08/19 23:50:26 tom Exp $ +# script for shared library symbol-visibility using libtool +# +# This file was generated by ncu-mapsyms +# Configure options (5.1.20000708) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.2.20001021) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.3.20021019) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.4.20040208) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.5.20051010) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.6.20061217) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.7.20081102) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.8.20110226) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20110404) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace --without-cxx-binding +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace --without-cxx-binding +# Configure options (5.9.20150530) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace +# Configure options (6.0.20161029) +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-getcap --enable-getcap-cache --enable-hard-tabs --enable-termcap --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-interop --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-broken_linker --with-hashed-db --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-sp-funcs --enable-widec --with-termlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-wgetch-events --enable-widec --with-hashed-db --with-termlib --with-ticlib --with-trace +# --disable-getcap --disable-leaks --disable-root-environ --disable-termcap --enable-hard-tabs --enable-widec --with-broken_linker --with-termlib --with-ticlib --with-trace +BC +COLORS +COLOR_PAIR +COLOR_PAIRS +COLS +ESCDELAY +LINES +PAIR_NUMBER +PC +SP +TABSIZE +TYPE_ALNUM +TYPE_ALPHA +TYPE_ENUM +TYPE_INTEGER +TYPE_IPV4 +TYPE_NUMERIC +TYPE_REGEXP +UP +_nc_Default_Field +_nc_Default_Form +_nc_access +_nc_add_to_try +_nc_align_termtype +_nc_alloc_entry_leaks +_nc_altcharset_name +_nc_basename +_nc_capcmp +_nc_captoinfo_leaks +_nc_check_termtype +_nc_check_termtype2 +_nc_comp_scan_leaks +_nc_copy_termtype +_nc_copy_termtype2 +_nc_curr_col +_nc_curr_line +_nc_db_close +_nc_db_first +_nc_db_have_data +_nc_db_next +_nc_db_open +_nc_db_put +_nc_disable_period +_nc_doalloc +_nc_entry_match +_nc_env_access +_nc_err_abort +_nc_eventlist_timeout +_nc_export_termtype2 +_nc_fallback +_nc_fallback2 +_nc_find_entry +_nc_find_type_entry +_nc_find_user_entry +_nc_first_db +_nc_first_name +_nc_flush +_nc_flush_sp +_nc_fmt_funcptr +_nc_free_and_exit +_nc_free_entries +_nc_free_termtype +_nc_free_termtype2 +_nc_free_tic +_nc_free_tinfo +_nc_free_tparm +_nc_freeall +_nc_get_alias_table +_nc_get_hash_table +_nc_get_locale +_nc_get_screensize +_nc_get_source +_nc_get_table +_nc_get_tty_mode +_nc_get_tty_mode_sp +_nc_get_type +_nc_getenv_num +_nc_globals +_nc_handle_sigwinch +_nc_has_mouse +_nc_head +_nc_home_terminfo +_nc_info_hash_table +_nc_infotocap +_nc_init_acs +_nc_init_acs_sp +_nc_init_termtype +_nc_is_abs_path +_nc_is_dir_path +_nc_is_file_path +_nc_keep_tic_dir +_nc_keyname_leaks +_nc_keypad +_nc_last_db +_nc_leaks_tinfo +_nc_locale_breaks_acs +_nc_name_match +_nc_next_db +_nc_optimize_enable +_nc_outc_wrapper +_nc_outch +_nc_outch_sp +_nc_outchars +_nc_panelhook +_nc_panelhook_sp +_nc_pathlast +_nc_prescreen +_nc_putchar +_nc_putchar_sp +_nc_putp +_nc_putp_flush +_nc_putp_flush_sp +_nc_putp_sp +_nc_read_entry +_nc_read_entry2 +_nc_read_entry_source +_nc_read_file_entry +_nc_read_termtype +_nc_reset_input +_nc_reset_tparm +_nc_resolve_uses +_nc_resolve_uses2 +_nc_retrace_attr_t +_nc_retrace_bool +_nc_retrace_chtype +_nc_retrace_cptr +_nc_retrace_cvoid_ptr +_nc_retrace_int +_nc_retrace_int_attr_t +_nc_retrace_ptr +_nc_retrace_sp +_nc_retrace_unsigned +_nc_retrace_void_ptr +_nc_retrace_win +_nc_ripoffline +_nc_rootname +_nc_safe_fopen +_nc_safe_open3 +_nc_safe_strcat +_nc_safe_strcpy +_nc_screen_chain +_nc_screen_of +_nc_set_buffer +_nc_set_buffer_sp +_nc_set_no_padding +_nc_set_source +_nc_set_tty_mode +_nc_set_tty_mode_sp +_nc_set_type +_nc_set_writedir +_nc_setupterm +_nc_str_copy +_nc_str_init +_nc_str_null +_nc_strict_bsd +_nc_suppress_warnings +_nc_syntax +_nc_syserr_abort +_nc_tail +_nc_tgetent_leaks +_nc_tic_dir +_nc_tic_expand +_nc_tic_written +_nc_timed_wait +_nc_tinfo_fkeys +_nc_tiparm +_nc_tparm_analyze +_nc_tparm_err +_nc_tputs_trace +_nc_trace_buf +_nc_trace_bufcat +_nc_tracechar +_nc_tracing +_nc_trans_string +_nc_trim_sgr0 +_nc_unicode_locale +_nc_update_screensize +_nc_user_definable +_nc_utf8_outch +_nc_visbuf +_nc_visbuf2 +_nc_visbufn +_nc_viscbuf +_nc_viswbuf +_nc_viswbufn +_nc_viswibuf +_nc_wacs +_nc_wacs_width +_nc_warning +_nc_wchstrlen +_nc_wcrtomb +_nc_write_entry +_nc_write_object +_traceattr +_traceattr2 +_tracecchar_t +_tracecchar_t2 +_tracechar +_tracechtype +_tracechtype2 +_tracef +acs_map +add_wch +add_wchnstr +add_wchstr +addch +addchnstr +addchstr +addnstr +addnwstr +addstr +addwstr +alloc_pair +alloc_pair_sp +assume_default_colors +assume_default_colors_sp +attr_get +attr_off +attr_on +attr_set +attroff +attron +attrset +baudrate +baudrate_sp +beep +beep_sp +bkgd +bkgdset +bkgrnd +bkgrndset +boolcodes +boolfnames +boolnames +border +border_set +bottom_panel +box +box_set +can_change_color +can_change_color_sp +cbreak +cbreak_sp +ceiling_panel +chgat +clear +clearok +clrtobot +clrtoeol +color_content +color_content_sp +color_set +copywin +cur_term +current_field +current_item +curs_set +curs_set_sp +curscr +curses_trace +curses_version +data_ahead +data_behind +def_prog_mode +def_prog_mode_sp +def_shell_mode +def_shell_mode_sp +define_key +define_key_sp +del_curterm +del_curterm_sp +del_panel +delay_output +delay_output_sp +delch +deleteln +delscreen +delwin +derwin +doupdate +doupdate_sp +dup_field +dupwin +dynamic_field_info +echo +echo_sp +echo_wchar +echochar +endwin +endwin_sp +erase +erasechar +erasechar_sp +erasewchar +erasewchar_sp +exit_curses +exit_terminfo +extended_color_content +extended_color_content_sp +extended_pair_content +extended_pair_content_sp +extended_slk_color +extended_slk_color_sp +field_arg +field_back +field_buffer +field_count +field_fore +field_index +field_info +field_init +field_just +field_opts +field_opts_off +field_opts_on +field_pad +field_status +field_term +field_type +field_userptr +filter +filter_sp +find_pair +find_pair_sp +flash +flash_sp +flushinp +flushinp_sp +form_driver +form_driver_w +form_fields +form_init +form_opts +form_opts_off +form_opts_on +form_page +form_request_by_name +form_request_name +form_sub +form_term +form_userptr +form_win +free_field +free_fieldtype +free_form +free_item +free_menu +free_pair +free_pair_sp +get_escdelay +get_escdelay_sp +get_wch +get_wstr +getattrs +getbegx +getbegy +getbkgd +getbkgrnd +getcchar +getch +getcurx +getcury +getmaxx +getmaxy +getmouse +getmouse_sp +getn_wstr +getnstr +getparx +getpary +getstr +getwin +getwin_sp +ground_panel +halfdelay +halfdelay_sp +has_colors +has_colors_sp +has_ic +has_ic_sp +has_il +has_il_sp +has_key +has_key_sp +has_mouse +has_mouse_sp +hide_panel +hline +hline_set +idcok +idlok +immedok +in_wch +in_wchnstr +in_wchstr +inch +inchnstr +inchstr +init_color +init_color_sp +init_extended_color +init_extended_color_sp +init_extended_pair +init_extended_pair_sp +init_pair +init_pair_sp +initscr +innstr +innwstr +ins_nwstr +ins_wch +ins_wstr +insch +insdelln +insertln +insnstr +insstr +instr +intrflush +intrflush_sp +inwstr +is_cleared +is_idcok +is_idlok +is_immedok +is_keypad +is_leaveok +is_linetouched +is_nodelay +is_notimeout +is_pad +is_scrollok +is_subwin +is_syncok +is_term_resized +is_term_resized_sp +is_wintouched +isendwin +isendwin_sp +item_count +item_description +item_index +item_init +item_name +item_opts +item_opts_off +item_opts_on +item_term +item_userptr +item_value +item_visible +key_defined +key_defined_sp +key_name +keybound +keybound_sp +keyname +keyname_sp +keyok +keyok_sp +keypad +killchar +killchar_sp +killwchar +killwchar_sp +leaveok +link_field +link_fieldtype +longname +longname_sp +mcprint +mcprint_sp +menu_back +menu_driver +menu_fore +menu_format +menu_grey +menu_init +menu_items +menu_mark +menu_opts +menu_opts_off +menu_opts_on +menu_pad +menu_pattern +menu_request_by_name +menu_request_name +menu_spacing +menu_sub +menu_term +menu_userptr +menu_win +meta +mouse_trafo +mouseinterval +mouseinterval_sp +mousemask +mousemask_sp +move +move_field +move_panel +mvadd_wch +mvadd_wchnstr +mvadd_wchstr +mvaddch +mvaddchnstr +mvaddchstr +mvaddnstr +mvaddnwstr +mvaddstr +mvaddwstr +mvchgat +mvcur +mvcur_sp +mvdelch +mvderwin +mvget_wch +mvget_wstr +mvgetch +mvgetn_wstr +mvgetnstr +mvgetstr +mvhline +mvhline_set +mvin_wch +mvin_wchnstr +mvin_wchstr +mvinch +mvinchnstr +mvinchstr +mvinnstr +mvinnwstr +mvins_nwstr +mvins_wch +mvins_wstr +mvinsch +mvinsnstr +mvinsstr +mvinstr +mvinwstr +mvprintw +mvscanw +mvvline +mvvline_set +mvwadd_wch +mvwadd_wchnstr +mvwadd_wchstr +mvwaddch +mvwaddchnstr +mvwaddchstr +mvwaddnstr +mvwaddnwstr +mvwaddstr +mvwaddwstr +mvwchgat +mvwdelch +mvwget_wch +mvwget_wstr +mvwgetch +mvwgetn_wstr +mvwgetnstr +mvwgetstr +mvwhline +mvwhline_set +mvwin +mvwin_wch +mvwin_wchnstr +mvwin_wchstr +mvwinch +mvwinchnstr +mvwinchstr +mvwinnstr +mvwinnwstr +mvwins_nwstr +mvwins_wch +mvwins_wstr +mvwinsch +mvwinsnstr +mvwinsstr +mvwinstr +mvwinwstr +mvwprintw +mvwscanw +mvwvline +mvwvline_set +napms +napms_sp +new_field +new_fieldtype +new_form +new_form_sp +new_item +new_menu +new_menu_sp +new_page +new_panel +new_prescr +newpad +newpad_sp +newscr +newterm +newterm_sp +newwin +newwin_sp +nl +nl_sp +nocbreak +nocbreak_sp +nodelay +noecho +noecho_sp +nofilter +nofilter_sp +nonl +nonl_sp +noqiflush +noqiflush_sp +noraw +noraw_sp +notimeout +numcodes +numfnames +numnames +ospeed +overlay +overwrite +pair_content +pair_content_sp +panel_above +panel_below +panel_hidden +panel_userptr +panel_window +pecho_wchar +pechochar +pnoutrefresh +pos_form_cursor +pos_menu_cursor +post_form +post_menu +prefresh +printw +putp +putp_sp +putwin +qiflush +qiflush_sp +raw +raw_sp +redrawwin +refresh +replace_panel +reset_color_pairs +reset_color_pairs_sp +reset_prog_mode +reset_prog_mode_sp +reset_shell_mode +reset_shell_mode_sp +resetty +resetty_sp +resize_term +resize_term_sp +resizeterm +resizeterm_sp +restartterm +restartterm_sp +ripoffline +ripoffline_sp +savetty +savetty_sp +scale_form +scale_menu +scanw +scr_dump +scr_init +scr_init_sp +scr_restore +scr_restore_sp +scr_set +scr_set_sp +scrl +scroll +scrollok +set_current_field +set_current_item +set_curterm +set_curterm_sp +set_escdelay +set_escdelay_sp +set_field_back +set_field_buffer +set_field_fore +set_field_init +set_field_just +set_field_opts +set_field_pad +set_field_status +set_field_term +set_field_type +set_field_userptr +set_fieldtype_arg +set_fieldtype_choice +set_form_fields +set_form_init +set_form_opts +set_form_page +set_form_sub +set_form_term +set_form_userptr +set_form_win +set_item_init +set_item_opts +set_item_term +set_item_userptr +set_item_value +set_max_field +set_menu_back +set_menu_fore +set_menu_format +set_menu_grey +set_menu_init +set_menu_items +set_menu_mark +set_menu_opts +set_menu_pad +set_menu_pattern +set_menu_spacing +set_menu_sub +set_menu_term +set_menu_userptr +set_menu_win +set_new_page +set_panel_userptr +set_tabsize +set_tabsize_sp +set_term +set_top_row +setcchar +setscrreg +setupterm +show_panel +slk_attr +slk_attr_off +slk_attr_on +slk_attr_set +slk_attr_set_sp +slk_attr_sp +slk_attroff +slk_attroff_sp +slk_attron +slk_attron_sp +slk_attrset +slk_attrset_sp +slk_clear +slk_clear_sp +slk_color +slk_color_sp +slk_init +slk_init_sp +slk_label +slk_label_sp +slk_noutrefresh +slk_noutrefresh_sp +slk_refresh +slk_refresh_sp +slk_restore +slk_restore_sp +slk_set +slk_set_sp +slk_touch +slk_touch_sp +slk_wset +standend +standout +start_color +start_color_sp +stdscr +strcodes +strfnames +strnames +subpad +subwin +syncok +term_attrs +term_attrs_sp +termattrs +termattrs_sp +termname +termname_sp +tgetent +tgetent_sp +tgetflag +tgetflag_sp +tgetnum +tgetnum_sp +tgetstr +tgetstr_sp +tgoto +tigetflag +tigetflag_sp +tigetnum +tigetnum_sp +tigetstr +tigetstr_sp +timeout +tiparm +top_panel +top_row +touchline +touchwin +tparm +tputs +tputs_sp +trace +ttytype +typeahead +typeahead_sp +unctrl +unctrl_sp +unfocus_current_field +unget_wch +unget_wch_sp +ungetch +ungetch_sp +ungetmouse +ungetmouse_sp +unpost_form +unpost_menu +untouchwin +update_panels +update_panels_sp +use_default_colors +use_default_colors_sp +use_env +use_env_sp +use_extended_names +use_legacy_coding +use_legacy_coding_sp +use_screen +use_tioctl +use_tioctl_sp +use_window +vid_attr +vid_attr_sp +vid_puts +vid_puts_sp +vidattr +vidattr_sp +vidputs +vidputs_sp +vline +vline_set +vw_printw +vw_scanw +vwprintw +vwscanw +wadd_wch +wadd_wchnstr +wadd_wchstr +waddch +waddchnstr +waddchstr +waddnstr +waddnwstr +waddstr +waddwstr +wattr_get +wattr_off +wattr_on +wattr_set +wattroff +wattron +wattrset +wbkgd +wbkgdset +wbkgrnd +wbkgrndset +wborder +wborder_set +wchgat +wclear +wclrtobot +wclrtoeol +wcolor_set +wcursyncup +wdelch +wdeleteln +wecho_wchar +wechochar +wenclose +werase +wget_wch +wget_wstr +wgetbkgrnd +wgetch +wgetch_events +wgetdelay +wgetn_wstr +wgetnstr +wgetnstr_events +wgetparent +wgetscrreg +wgetstr +whline +whline_set +win_wch +win_wchnstr +win_wchstr +winch +winchnstr +winchstr +winnstr +winnwstr +wins_nwstr +wins_wch +wins_wstr +winsch +winsdelln +winsertln +winsnstr +winsstr +winstr +winwstr +wmouse_trafo +wmove +wnoutrefresh +wprintw +wredrawln +wrefresh +wresize +wscanw +wscrl +wsetscrreg +wstandend +wstandout +wsyncdown +wsyncup +wtimeout +wtouchln +wunctrl +wunctrl_sp +wvline +wvline_set diff --git a/deps/ncurses-6.3/panel/Makefile.in b/deps/ncurses-6.3/panel/Makefile.in new file mode 100644 index 0000000..380f80c --- /dev/null +++ b/deps/ncurses-6.3/panel/Makefile.in @@ -0,0 +1,206 @@ +# $Id: Makefile.in,v 1.76 2021/07/03 15:45:33 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,2018 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: Thomas E. Dickey 1996-on +# +# Makefile for panels source code. +# +# This makes the following: +# libraries (normal/debug/profile/shared) +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". +# +# The rules are organized to produce the libraries for the configured models, + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = @DFT_LWR_MODEL@ +DESTDIR = @DESTDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +PACKAGE = @PACKAGE@ + +LIBTOOL = @LIBTOOL@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ @EXPORT_SYMS@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ +LT_UNDEF = @LT_UNDEF@ + +INSTALL = @INSTALL@ +INSTALL_LIB = @INSTALL@ @INSTALL_LIB@ +INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@ +INSTALL_DATA = @INSTALL_DATA@ + +AR = @AR@ +ARFLAGS = @ARFLAGS@ +AWK = @AWK@ +LD = @LD@ +LN_S = @LN_S@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +CC = @CC@ +CPP = @CPP@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ + +INCDIR = $(top_srcdir)/include +BASE_DIR = $(top_srcdir)/ncurses +CPPFLAGS = -I$(BASE_DIR) -DHAVE_CONFIG_H -DBUILDING_PANEL @CPPFLAGS@ + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +LINK = $(LIBTOOL_LINK) +LDFLAGS = @LDFLAGS@ @LD_MODEL@ @LIBS@ + +SHLIB_DIRS = -L../lib +SHLIB_LIST = $(SHLIB_DIRS) -lncurses@USE_LIB_SUFFIX@ @SHLIB_LIST@ + +RPATH_LIST = @RPATH_LIST@ +RESULTING_SYMS = @RESULTING_SYMS@ +VERSIONED_SYMS = @VERSIONED_SYMS@ +MK_SHARED_LIB = @MK_SHARED_LIB@ + +NCURSES_MAJOR = @NCURSES_MAJOR@ +NCURSES_MINOR = @NCURSES_MINOR@ +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ + +RANLIB = @LIB_PREP@ + +LIBRARIES = @Libs_To_Make@ + +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ +LINT_LIBS = -lpanel -lncurses @LIBS@ + +AUTO_SRC = \ + ../include/panel.h + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs + +all \ +libs \ +install :: $(AUTO_SRC) $(LIBRARIES) + +sources: $(AUTO_SRC) + +$(DESTDIR)$(bindir) \ +$(DESTDIR)$(libdir) : + mkdir -p $@ + +# make a copy to simplify include-paths while still keeping panel's include +# file in this directory. +../include/panel.h : $(srcdir)/panel.h + -rm -f $@ + cp $(srcdir)/panel.h $@ + +HEADER_DEPS = \ + ../include/curses.h \ + ../include/ncurses_cfg.h \ + ../include/ncurses_def.h \ + ../include/ncurses_dll.h \ + ../include/term.h \ + ../include/unctrl.h \ + $(BASE_DIR)/curses.priv.h \ + $(BASE_DIR)/new_pair.h \ + $(INCDIR)/nc_alloc.h \ + $(INCDIR)/nc_panel.h \ + $(INCDIR)/nc_string.h \ + $(INCDIR)/nc_termios.h \ + $(INCDIR)/nc_tparm.h \ + $(INCDIR)/term_entry.h \ + $(srcdir)/panel.priv.h \ + $(srcdir)/panel.h + +tags: + $(CTAGS) *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace + +clean :: mostlyclean + -rm -f $(AUTO_SRC) + -rm -rf .libs *.dSYM + +distclean :: clean + -rm -f Makefile + +realclean :: distclean + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-6.3/panel/headers b/deps/ncurses-6.3/panel/headers new file mode 100644 index 0000000..b598d13 --- /dev/null +++ b/deps/ncurses-6.3/panel/headers @@ -0,0 +1,33 @@ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998,2006 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: Thomas E. Dickey <dickey@clark.net> 1996 +# +$(srcdir)/panel.h +# vile:makemode diff --git a/deps/ncurses-5.9/panel/llib-lpanel b/deps/ncurses-6.3/panel/llib-lpanel similarity index 90% rename from deps/ncurses-5.9/panel/llib-lpanel rename to deps/ncurses-6.3/panel/llib-lpanel index 85371ec..afdea20 100644 --- a/deps/ncurses-5.9/panel/llib-lpanel +++ b/deps/ncurses-6.3/panel/llib-lpanel @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 1997,2005,2010 * + * Author: Thomas E. Dickey 1996-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -42,19 +43,20 @@ PANEL *_nc_retrace_panel( #undef _nc_my_visbuf const char *_nc_my_visbuf( - const void *ptr) + const void *ptr, + int n) { return(*(const char **)0); } #undef _nc_dPanel void _nc_dPanel( - const char *text, + const char *text, const PANEL *pan) { /* void */ } #undef _nc_dStack void _nc_dStack( - const char *fmt, - int num, + const char *fmt, + int num, const PANEL *pan) { /* void */ } @@ -70,8 +72,8 @@ void _nc_Touchpan( #undef _nc_Touchline void _nc_Touchline( - const PANEL *pan, - int start, + const PANEL *pan, + int start, int count) { /* void */ } @@ -131,8 +133,8 @@ int panel_hidden( #undef move_panel int move_panel( - PANEL *pan, - int starty, + PANEL *pan, + int starty, int startx) { return(*(int *)0); } @@ -147,7 +149,7 @@ PANEL *new_panel( #undef replace_panel int replace_panel( - PANEL *pan, + PANEL *pan, WINDOW *win) { return(*(int *)0); } @@ -180,14 +182,14 @@ void update_panels(void) #undef set_panel_userptr int set_panel_userptr( - PANEL *pan, - void *uptr) + PANEL *pan, + const void *uptr) { return(*(int *)0); } #undef panel_userptr -void *panel_userptr( +const void *panel_userptr( const PANEL *pan) - { return(*(void **)0); } + { return(*(const void **)0); } /* ./p_win.c */ diff --git a/deps/ncurses-5.9/panel/llib-lpanelt b/deps/ncurses-6.3/panel/llib-lpanelt similarity index 90% rename from deps/ncurses-5.9/panel/llib-lpanelt rename to deps/ncurses-6.3/panel/llib-lpanelt index 8fcd42c..0b99683 100644 --- a/deps/ncurses-5.9/panel/llib-lpanelt +++ b/deps/ncurses-6.3/panel/llib-lpanelt @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2010 * + * Author: Thomas E. Dickey 2010-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -42,19 +43,20 @@ PANEL *_nc_retrace_panel( #undef _nc_my_visbuf const char *_nc_my_visbuf( - const void *ptr) + const void *ptr, + int n) { return(*(const char **)0); } #undef _nc_dPanel void _nc_dPanel( - const char *text, + const char *text, const PANEL *pan) { /* void */ } #undef _nc_dStack void _nc_dStack( - const char *fmt, - int num, + const char *fmt, + int num, const PANEL *pan) { /* void */ } @@ -70,8 +72,8 @@ void _nc_Touchpan( #undef _nc_Touchline void _nc_Touchline( - const PANEL *pan, - int start, + const PANEL *pan, + int start, int count) { /* void */ } @@ -131,8 +133,8 @@ int panel_hidden( #undef move_panel int move_panel( - PANEL *pan, - int starty, + PANEL *pan, + int starty, int startx) { return(*(int *)0); } @@ -147,7 +149,7 @@ PANEL *new_panel( #undef replace_panel int replace_panel( - PANEL *pan, + PANEL *pan, WINDOW *win) { return(*(int *)0); } @@ -180,14 +182,14 @@ void update_panels(void) #undef set_panel_userptr int set_panel_userptr( - PANEL *pan, - void *uptr) + PANEL *pan, + const void *uptr) { return(*(int *)0); } #undef panel_userptr -void *panel_userptr( +const void *panel_userptr( const PANEL *pan) - { return(*(void **)0); } + { return(*(const void **)0); } /* ./p_win.c */ diff --git a/deps/ncurses-5.9/panel/llib-lpaneltw b/deps/ncurses-6.3/panel/llib-lpaneltw similarity index 90% rename from deps/ncurses-5.9/panel/llib-lpaneltw rename to deps/ncurses-6.3/panel/llib-lpaneltw index 1d3cd8d..0b99683 100644 --- a/deps/ncurses-5.9/panel/llib-lpaneltw +++ b/deps/ncurses-6.3/panel/llib-lpaneltw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2010 * + * Author: Thomas E. Dickey 2010-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -42,19 +43,20 @@ PANEL *_nc_retrace_panel( #undef _nc_my_visbuf const char *_nc_my_visbuf( - const void *ptr) + const void *ptr, + int n) { return(*(const char **)0); } #undef _nc_dPanel void _nc_dPanel( - const char *text, + const char *text, const PANEL *pan) { /* void */ } #undef _nc_dStack void _nc_dStack( - const char *fmt, - int num, + const char *fmt, + int num, const PANEL *pan) { /* void */ } @@ -70,8 +72,8 @@ void _nc_Touchpan( #undef _nc_Touchline void _nc_Touchline( - const PANEL *pan, - int start, + const PANEL *pan, + int start, int count) { /* void */ } @@ -131,8 +133,8 @@ int panel_hidden( #undef move_panel int move_panel( - PANEL *pan, - int starty, + PANEL *pan, + int starty, int startx) { return(*(int *)0); } @@ -147,7 +149,7 @@ PANEL *new_panel( #undef replace_panel int replace_panel( - PANEL *pan, + PANEL *pan, WINDOW *win) { return(*(int *)0); } @@ -180,14 +182,14 @@ void update_panels(void) #undef set_panel_userptr int set_panel_userptr( - PANEL *pan, - void *uptr) + PANEL *pan, + const void *uptr) { return(*(int *)0); } #undef panel_userptr -void *panel_userptr( +const void *panel_userptr( const PANEL *pan) - { return(*(void **)0); } + { return(*(const void **)0); } /* ./p_win.c */ diff --git a/deps/ncurses-5.9/panel/llib-lpanelw b/deps/ncurses-6.3/panel/llib-lpanelw similarity index 90% rename from deps/ncurses-5.9/panel/llib-lpanelw rename to deps/ncurses-6.3/panel/llib-lpanelw index 503b343..7ed8b3c 100644 --- a/deps/ncurses-5.9/panel/llib-lpanelw +++ b/deps/ncurses-6.3/panel/llib-lpanelw @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2002-2010,2015 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 * @@ -27,7 +28,7 @@ ****************************************************************************/ /**************************************************************************** - * Author: Thomas E. Dickey 2002-2005,2010 * + * Author: Thomas E. Dickey 2002-on * ****************************************************************************/ /* LINTLIBRARY */ @@ -42,19 +43,20 @@ PANEL *_nc_retrace_panel( #undef _nc_my_visbuf const char *_nc_my_visbuf( - const void *ptr) + const void *ptr, + int n) { return(*(const char **)0); } #undef _nc_dPanel void _nc_dPanel( - const char *text, + const char *text, const PANEL *pan) { /* void */ } #undef _nc_dStack void _nc_dStack( - const char *fmt, - int num, + const char *fmt, + int num, const PANEL *pan) { /* void */ } @@ -70,8 +72,8 @@ void _nc_Touchpan( #undef _nc_Touchline void _nc_Touchline( - const PANEL *pan, - int start, + const PANEL *pan, + int start, int count) { /* void */ } @@ -131,8 +133,8 @@ int panel_hidden( #undef move_panel int move_panel( - PANEL *pan, - int starty, + PANEL *pan, + int starty, int startx) { return(*(int *)0); } @@ -147,7 +149,7 @@ PANEL *new_panel( #undef replace_panel int replace_panel( - PANEL *pan, + PANEL *pan, WINDOW *win) { return(*(int *)0); } @@ -180,14 +182,14 @@ void update_panels(void) #undef set_panel_userptr int set_panel_userptr( - PANEL *pan, - void *uptr) + PANEL *pan, + const void *uptr) { return(*(int *)0); } #undef panel_userptr -void *panel_userptr( +const void *panel_userptr( const PANEL *pan) - { return(*(void **)0); } + { return(*(const void **)0); } /* ./p_win.c */ diff --git a/deps/ncurses-6.3/panel/modules b/deps/ncurses-6.3/panel/modules new file mode 100644 index 0000000..4b0c9d8 --- /dev/null +++ b/deps/ncurses-6.3/panel/modules @@ -0,0 +1,52 @@ +# $Id: modules,v 1.11 2020/02/02 23:34:34 tom Exp $ +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998-2006,2010 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: Thomas E. Dickey 1995-on +# + +@ base +# Library objects +panel lib $(srcdir) $(HEADER_DEPS) +p_above lib $(srcdir) $(HEADER_DEPS) +p_below lib $(srcdir) $(HEADER_DEPS) +p_bottom lib $(srcdir) $(HEADER_DEPS) +p_delete lib $(srcdir) $(HEADER_DEPS) +p_hide lib $(srcdir) $(HEADER_DEPS) +p_hidden lib $(srcdir) $(HEADER_DEPS) +p_move lib $(srcdir) $(HEADER_DEPS) +p_new lib $(srcdir) $(HEADER_DEPS) +p_replace lib $(srcdir) $(HEADER_DEPS) +p_show lib $(srcdir) $(HEADER_DEPS) +p_top lib $(srcdir) $(HEADER_DEPS) +p_update lib $(srcdir) $(HEADER_DEPS) +p_user lib $(srcdir) $(HEADER_DEPS) +p_win lib $(srcdir) $(HEADER_DEPS) + +# vile:makemode diff --git a/deps/ncurses-5.9/panel/p_above.c b/deps/ncurses-6.3/panel/p_above.c similarity index 91% rename from deps/ncurses-5.9/panel/p_above.c rename to deps/ncurses-6.3/panel/p_above.c index 8bbf1bc..2a6fde5 100644 --- a/deps/ncurses-5.9/panel/p_above.c +++ b/deps/ncurses-6.3/panel/p_above.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -36,13 +37,13 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_above.c,v 1.8 2010/01/23 21:22:15 tom Exp $") +MODULE_ID("$Id: p_above.c,v 1.11 2020/05/24 01:40:20 anonymous.maarten Exp $") #if NCURSES_SP_FUNCS -NCURSES_EXPORT(PANEL *) +PANEL_EXPORT(PANEL *) ground_panel(SCREEN * sp) { - T((T_CALLED("ground_panel(%p)"), sp)); + T((T_CALLED("ground_panel(%p)"), (void *)sp)); if (sp) { struct panelhook *ph = NCURSES_SP_NAME(_nc_panelhook) (sp); @@ -62,7 +63,7 @@ ground_panel(SCREEN * sp) } #endif -NCURSES_EXPORT(PANEL *) +PANEL_EXPORT(PANEL *) panel_above(const PANEL * pan) { PANEL *result; diff --git a/deps/ncurses-5.9/panel/p_below.c b/deps/ncurses-6.3/panel/p_below.c similarity index 91% rename from deps/ncurses-5.9/panel/p_below.c rename to deps/ncurses-6.3/panel/p_below.c index f276ef9..100393d 100644 --- a/deps/ncurses-5.9/panel/p_below.c +++ b/deps/ncurses-6.3/panel/p_below.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -36,13 +37,13 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_below.c,v 1.8 2010/01/23 21:22:15 tom Exp $") +MODULE_ID("$Id: p_below.c,v 1.11 2020/05/24 01:40:20 anonymous.maarten Exp $") #if NCURSES_SP_FUNCS -NCURSES_EXPORT(PANEL *) +PANEL_EXPORT(PANEL *) ceiling_panel(SCREEN * sp) { - T((T_CALLED("ceiling_panel(%p)"), sp)); + T((T_CALLED("ceiling_panel(%p)"), (void *)sp)); if (sp) { struct panelhook *ph = NCURSES_SP_NAME(_nc_panelhook) (sp); @@ -60,7 +61,7 @@ ceiling_panel(SCREEN * sp) } #endif -NCURSES_EXPORT(PANEL *) +PANEL_EXPORT(PANEL *) panel_below(const PANEL * pan) { PANEL *result; diff --git a/deps/ncurses-5.9/panel/p_bottom.c b/deps/ncurses-6.3/panel/p_bottom.c similarity index 91% rename from deps/ncurses-5.9/panel/p_bottom.c rename to deps/ncurses-6.3/panel/p_bottom.c index db81441..3ca9c77 100644 --- a/deps/ncurses-5.9/panel/p_bottom.c +++ b/deps/ncurses-6.3/panel/p_bottom.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2008,2010 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 * @@ -33,13 +34,13 @@ ****************************************************************************/ /* p_bottom.c - * Place a panel on bottom of the stack; may already be in the stack + * Place a panel on bottom of the stack; may already be in the stack */ #include "panel.priv.h" -MODULE_ID("$Id: p_bottom.c,v 1.13 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_bottom.c,v 1.17 2021/06/17 21:20:30 tom Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) bottom_panel(PANEL * pan) { int err = OK; @@ -51,7 +52,7 @@ bottom_panel(PANEL * pan) if (!Is_Bottom(pan)) { - dBug(("--> bottom_panel %s", USER_PTR(pan->user))); + dBug(("--> bottom_panel %s", USER_PTR(pan->user, 1))); HIDE_PANEL(pan, err, OK); assert(_nc_bottom_panel == _nc_stdscr_pseudo_panel); diff --git a/deps/ncurses-5.9/panel/p_delete.c b/deps/ncurses-6.3/panel/p_delete.c similarity index 86% rename from deps/ncurses-5.9/panel/p_delete.c rename to deps/ncurses-6.3/panel/p_delete.c index 39b0553..da3dcdf 100644 --- a/deps/ncurses-5.9/panel/p_delete.c +++ b/deps/ncurses-6.3/panel/p_delete.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -37,22 +38,21 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_delete.c,v 1.10 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_delete.c,v 1.17 2020/12/26 18:25:34 tom Exp $") -NCURSES_EXPORT(int) -del_panel(PANEL * pan) +PANEL_EXPORT(int) +del_panel(PANEL *pan) { int err = OK; T((T_CALLED("del_panel(%p)"), (void *)pan)); if (pan) { - dBug(("--> del_panel %s", USER_PTR(pan->user))); - { - GetHook(pan); - HIDE_PANEL(pan, err, OK); - free((void *)pan); - } + GetHook(pan); + HIDE_PANEL(pan, err, OK); + dBug(("...discard ptr=%s", USER_PTR(pan->user, 1))); + dBug(("...deleted pan=%p", (void *)pan)); + free((void *)pan); } else err = ERR; diff --git a/deps/ncurses-5.9/panel/p_hidden.c b/deps/ncurses-6.3/panel/p_hidden.c similarity index 91% rename from deps/ncurses-5.9/panel/p_hidden.c rename to deps/ncurses-6.3/panel/p_hidden.c index 01b69b9..43057fa 100644 --- a/deps/ncurses-5.9/panel/p_hidden.c +++ b/deps/ncurses-6.3/panel/p_hidden.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -37,9 +38,9 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_hidden.c,v 1.9 2010/01/23 21:22:15 tom Exp $") +MODULE_ID("$Id: p_hidden.c,v 1.11 2020/05/24 01:40:20 anonymous.maarten Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) panel_hidden(const PANEL * pan) { int rc = ERR; diff --git a/deps/ncurses-5.9/panel/p_hide.c b/deps/ncurses-6.3/panel/p_hide.c similarity index 90% rename from deps/ncurses-5.9/panel/p_hide.c rename to deps/ncurses-6.3/panel/p_hide.c index 7b780d4..6a372ac 100644 --- a/deps/ncurses-5.9/panel/p_hide.c +++ b/deps/ncurses-6.3/panel/p_hide.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -36,9 +37,9 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_hide.c,v 1.11 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_hide.c,v 1.14 2020/09/26 18:02:35 tom Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) hide_panel(register PANEL * pan) { int err = ERR; @@ -49,7 +50,7 @@ hide_panel(register PANEL * pan) { GetHook(pan); - dBug(("--> hide_panel %s", USER_PTR(pan->user))); + dBug(("--> hide_panel %s", USER_PTR(pan->user, 1))); dStack("<u%d>", 1, pan); HIDE_PANEL(pan, err, ERR); diff --git a/deps/ncurses-5.9/panel/p_move.c b/deps/ncurses-6.3/panel/p_move.c similarity index 92% rename from deps/ncurses-5.9/panel/p_move.c rename to deps/ncurses-6.3/panel/p_move.c index adae645..7ff6fa7 100644 --- a/deps/ncurses-5.9/panel/p_move.c +++ b/deps/ncurses-6.3/panel/p_move.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2008,2010 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 * @@ -37,9 +38,9 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_move.c,v 1.11 2010/01/23 21:22:15 tom Exp $") +MODULE_ID("$Id: p_move.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) move_panel(PANEL * pan, int starty, int startx) { int rc = ERR; diff --git a/deps/ncurses-5.9/panel/p_new.c b/deps/ncurses-6.3/panel/p_new.c similarity index 78% rename from deps/ncurses-5.9/panel/p_new.c rename to deps/ncurses-6.3/panel/p_new.c index 235336c..37f851d 100644 --- a/deps/ncurses-5.9/panel/p_new.c +++ b/deps/ncurses-6.3/panel/p_new.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -34,15 +35,33 @@ ****************************************************************************/ /* p_new.c - * Creation of a new panel + * Creation of a new panel */ #include "panel.priv.h" -MODULE_ID("$Id: p_new.c,v 1.16 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_new.c,v 1.23 2021/06/17 21:20:30 tom Exp $") #ifdef TRACE static char *stdscr_id; static char *new_id; + +static PANEL * +AllocPanel(const char *name) +{ + PANEL *result = typeMalloc(PANEL, 1); + + _tracef("create :%s %p", name, (void *)result); + return result; +} +#define InitUser(name) \ + if (!name ## _id) \ + name ## _id = strdup(#name); \ + pan->user = name ## _id; \ + _tracef("create :user_ptr %p", pan->user) +#else +#define AllocPanel(name) typeMalloc(PANEL, 1) +#define InitUser(name) \ + pan->user = (void *)0 #endif /*+------------------------------------------------------------------------- @@ -59,39 +78,33 @@ root_panel(NCURSES_SP_DCL0) struct panelhook *ph = _nc_panelhook(); #endif - if (_nc_stdscr_pseudo_panel == (PANEL *) 0) + if (_nc_stdscr_pseudo_panel == (PANEL *)0) { assert(SP_PARM && SP_PARM->_stdscr && !_nc_bottom_panel && !_nc_top_panel); #if NO_LEAKS ph->destroy = del_panel; #endif - _nc_stdscr_pseudo_panel = typeMalloc(PANEL, 1); + _nc_stdscr_pseudo_panel = AllocPanel("root_panel"); if (_nc_stdscr_pseudo_panel != 0) { PANEL *pan = _nc_stdscr_pseudo_panel; WINDOW *win = SP_PARM->_stdscr; pan->win = win; - pan->below = (PANEL *) 0; - pan->above = (PANEL *) 0; -#ifdef TRACE - if (!stdscr_id) - stdscr_id = strdup("stdscr"); - pan->user = stdscr_id; -#else - pan->user = (void *)0; -#endif + pan->below = (PANEL *)0; + pan->above = (PANEL *)0; + InitUser(stdscr); _nc_bottom_panel = _nc_top_panel = pan; } } return _nc_stdscr_pseudo_panel; } -NCURSES_EXPORT(PANEL *) +PANEL_EXPORT(PANEL *) new_panel(WINDOW *win) { - PANEL *pan = (PANEL *) 0; + PANEL *pan = (PANEL *)0; GetWindowHook(win); @@ -104,18 +117,12 @@ new_panel(WINDOW *win) (void)root_panel(NCURSES_SP_ARG); assert(_nc_stdscr_pseudo_panel); - if (!(win->_flags & _ISPAD) && (pan = typeMalloc(PANEL, 1))) + if (!(win->_flags & _ISPAD) && (pan = AllocPanel("new_panel"))) { pan->win = win; - pan->above = (PANEL *) 0; - pan->below = (PANEL *) 0; -#ifdef TRACE - if (!new_id) - new_id = strdup("new"); - pan->user = new_id; -#else - pan->user = (char *)0; -#endif + pan->above = (PANEL *)0; + pan->below = (PANEL *)0; + InitUser(new); (void)show_panel(pan); } returnPanel(pan); diff --git a/deps/ncurses-5.9/panel/p_replace.c b/deps/ncurses-6.3/panel/p_replace.c similarity index 91% rename from deps/ncurses-5.9/panel/p_replace.c rename to deps/ncurses-6.3/panel/p_replace.c index d3733ed..a2d56ae 100644 --- a/deps/ncurses-5.9/panel/p_replace.c +++ b/deps/ncurses-6.3/panel/p_replace.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -36,9 +37,9 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_replace.c,v 1.11 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_replace.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) replace_panel(PANEL * pan, WINDOW *win) { int rc = ERR; diff --git a/deps/ncurses-5.9/panel/p_show.c b/deps/ncurses-6.3/panel/p_show.c similarity index 91% rename from deps/ncurses-5.9/panel/p_show.c rename to deps/ncurses-6.3/panel/p_show.c index d5b09bd..3503bec 100644 --- a/deps/ncurses-5.9/panel/p_show.c +++ b/deps/ncurses-6.3/panel/p_show.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -32,13 +33,13 @@ ****************************************************************************/ /* p_show.c - * Place a panel on top of the stack; may already be in the stack + * Place a panel on top of the stack; may already be in the stack */ #include "panel.priv.h" -MODULE_ID("$Id: p_show.c,v 1.13 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_show.c,v 1.17 2021/06/17 21:20:30 tom Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) show_panel(PANEL * pan) { int err = ERR; @@ -52,7 +53,7 @@ show_panel(PANEL * pan) if (Is_Top(pan)) returnCode(OK); - dBug(("--> show_panel %s", USER_PTR(pan->user))); + dBug(("--> show_panel %s", USER_PTR(pan->user, 1))); HIDE_PANEL(pan, err, OK); diff --git a/deps/ncurses-5.9/panel/p_top.c b/deps/ncurses-6.3/panel/p_top.c similarity index 91% rename from deps/ncurses-5.9/panel/p_top.c rename to deps/ncurses-6.3/panel/p_top.c index fdcdee9..17abd76 100644 --- a/deps/ncurses-5.9/panel/p_top.c +++ b/deps/ncurses-6.3/panel/p_top.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2005,2010 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 * @@ -36,9 +37,9 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_top.c,v 1.6 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_top.c,v 1.8 2020/05/24 01:40:20 anonymous.maarten Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) top_panel(PANEL * pan) { T((T_CALLED("top_panel(%p)"), (void *)pan)); diff --git a/deps/ncurses-5.9/panel/p_update.c b/deps/ncurses-6.3/panel/p_update.c similarity index 92% rename from deps/ncurses-5.9/panel/p_update.c rename to deps/ncurses-6.3/panel/p_update.c index a2f4506..4021296 100644 --- a/deps/ncurses-5.9/panel/p_update.c +++ b/deps/ncurses-6.3/panel/p_update.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,2010 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 * @@ -37,9 +38,9 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_update.c,v 1.11 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: p_update.c,v 1.13 2020/05/24 01:40:20 anonymous.maarten Exp $") -NCURSES_EXPORT(void) +PANEL_EXPORT(void) NCURSES_SP_NAME(update_panels) (NCURSES_SP_DCL0) { PANEL *pan; @@ -70,7 +71,7 @@ NCURSES_SP_NAME(update_panels) (NCURSES_SP_DCL0) } #if NCURSES_SP_FUNCS -NCURSES_EXPORT(void) +PANEL_EXPORT(void) update_panels(void) { NCURSES_SP_NAME(update_panels) (CURRENT_SCREEN); diff --git a/deps/ncurses-5.9/panel/p_user.c b/deps/ncurses-6.3/panel/p_user.c similarity index 90% rename from deps/ncurses-5.9/panel/p_user.c rename to deps/ncurses-6.3/panel/p_user.c index deb5bdf..8d65097 100644 --- a/deps/ncurses-5.9/panel/p_user.c +++ b/deps/ncurses-6.3/panel/p_user.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2005,2010 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 * @@ -32,13 +33,13 @@ ****************************************************************************/ /* p_user.c - * Set/Get panels user pointer + * Set/Get panels user pointer */ #include "panel.priv.h" -MODULE_ID("$Id: p_user.c,v 1.8 2010/01/23 23:18:35 tom Exp $") +MODULE_ID("$Id: p_user.c,v 1.11 2021/06/17 21:20:30 tom Exp $") -NCURSES_EXPORT(int) +PANEL_EXPORT(int) set_panel_userptr(PANEL * pan, NCURSES_CONST void *uptr) { T((T_CALLED("set_panel_userptr(%p,%p)"), (void *)pan, (NCURSES_CONST void *)uptr)); @@ -48,7 +49,7 @@ set_panel_userptr(PANEL * pan, NCURSES_CONST void *uptr) returnCode(OK); } -NCURSES_EXPORT(NCURSES_CONST void *) +PANEL_EXPORT(NCURSES_CONST void *) panel_userptr(const PANEL * pan) { T((T_CALLED("panel_userptr(%p)"), (const void *)pan)); diff --git a/deps/ncurses-5.9/panel/p_win.c b/deps/ncurses-6.3/panel/p_win.c similarity index 91% rename from deps/ncurses-5.9/panel/p_win.c rename to deps/ncurses-6.3/panel/p_win.c index 6643d5c..d188988 100644 --- a/deps/ncurses-5.9/panel/p_win.c +++ b/deps/ncurses-6.3/panel/p_win.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2005,2010 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 * @@ -36,9 +37,9 @@ */ #include "panel.priv.h" -MODULE_ID("$Id: p_win.c,v 1.6 2010/01/23 21:22:15 tom Exp $") +MODULE_ID("$Id: p_win.c,v 1.8 2020/05/24 01:40:20 anonymous.maarten Exp $") -NCURSES_EXPORT(WINDOW *) +PANEL_EXPORT(WINDOW *) panel_window(const PANEL * pan) { T((T_CALLED("panel_window(%p)"), (const void *)pan)); diff --git a/deps/ncurses-5.9/panel/panel.c b/deps/ncurses-6.3/panel/panel.c similarity index 83% rename from deps/ncurses-5.9/panel/panel.c rename to deps/ncurses-6.3/panel/panel.c index 96cbbab..1b2d6e8 100644 --- a/deps/ncurses-5.9/panel/panel.c +++ b/deps/ncurses-6.3/panel/panel.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,2012 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 * @@ -36,13 +37,13 @@ /* panel.c -- implementation of panels library, some core routines */ #include "panel.priv.h" -MODULE_ID("$Id: panel.c,v 1.25 2010/01/23 21:22:16 tom Exp $") +MODULE_ID("$Id: panel.c,v 1.30 2020/09/26 18:05:17 tom Exp $") /*+------------------------------------------------------------------------- _nc_retrace_panel (pan) --------------------------------------------------------------------------*/ #ifdef TRACE -NCURSES_EXPORT(PANEL *) +PANEL_EXPORT(PANEL *) _nc_retrace_panel(PANEL * pan) { T((T_RETURN("%p"), (void *)pan)); @@ -55,16 +56,16 @@ _nc_retrace_panel(PANEL * pan) --------------------------------------------------------------------------*/ #ifdef TRACE #ifndef TRACE_TXT -NCURSES_EXPORT(const char *) -_nc_my_visbuf(const void *ptr) +PANEL_EXPORT(const char *) +_nc_my_visbuf(const void *ptr, int n) { char temp[32]; if (ptr != 0) - sprintf(temp, "ptr:%p", ptr); + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%p", ptr); else - strcpy(temp, "<null>"); - return _nc_visbuf(temp); + _nc_STRCPY(temp, "<null>", sizeof(temp)); + return _nc_visbuf2(n, temp); } #endif #endif @@ -73,13 +74,13 @@ _nc_my_visbuf(const void *ptr) dPanel(text,pan) --------------------------------------------------------------------------*/ #ifdef TRACE -NCURSES_EXPORT(void) +PANEL_EXPORT(void) _nc_dPanel(const char *text, const PANEL * pan) { _tracef("%s id=%s b=%s a=%s y=%d x=%d", - text, USER_PTR(pan->user), - (pan->below) ? USER_PTR(pan->below->user) : "--", - (pan->above) ? USER_PTR(pan->above->user) : "--", + text, USER_PTR(pan->user, 1), + (pan->below) ? USER_PTR(pan->below->user, 2) : "--", + (pan->above) ? USER_PTR(pan->above->user, 3) : "--", PSTARTY(pan), PSTARTX(pan)); } #endif @@ -88,19 +89,19 @@ _nc_dPanel(const char *text, const PANEL * pan) dStack(fmt,num,pan) --------------------------------------------------------------------------*/ #ifdef TRACE -NCURSES_EXPORT(void) +PANEL_EXPORT(void) _nc_dStack(const char *fmt, int num, const PANEL * pan) { char s80[80]; GetPanelHook(pan); - sprintf(s80, fmt, num, pan); + _nc_SPRINTF(s80, _nc_SLIMIT(sizeof(s80)) fmt, num, pan); _tracef("%s b=%s t=%s", s80, - (_nc_bottom_panel) ? USER_PTR(_nc_bottom_panel->user) : "--", - (_nc_top_panel) ? USER_PTR(_nc_top_panel->user) : "--"); + (_nc_bottom_panel) ? USER_PTR(_nc_bottom_panel->user, 1) : "--", + (_nc_top_panel) ? USER_PTR(_nc_top_panel->user, 2) : "--"); if (pan) - _tracef("pan id=%s", USER_PTR(pan->user)); + _tracef("pan id=%s", USER_PTR(pan->user, 1)); pan = _nc_bottom_panel; while (pan) { @@ -114,7 +115,7 @@ _nc_dStack(const char *fmt, int num, const PANEL * pan) Wnoutrefresh(pan) - debugging hook for wnoutrefresh --------------------------------------------------------------------------*/ #ifdef TRACE -NCURSES_EXPORT(void) +PANEL_EXPORT(void) _nc_Wnoutrefresh(const PANEL * pan) { dPanel("wnoutrefresh", pan); @@ -126,7 +127,7 @@ _nc_Wnoutrefresh(const PANEL * pan) Touchpan(pan) --------------------------------------------------------------------------*/ #ifdef TRACE -NCURSES_EXPORT(void) +PANEL_EXPORT(void) _nc_Touchpan(const PANEL * pan) { dPanel("Touchpan", pan); @@ -138,12 +139,12 @@ _nc_Touchpan(const PANEL * pan) Touchline(pan,start,count) --------------------------------------------------------------------------*/ #ifdef TRACE -NCURSES_EXPORT(void) +PANEL_EXPORT(void) _nc_Touchline(const PANEL * pan, int start, int count) { char s80[80]; - sprintf(s80, "Touchline s=%d c=%d", start, count); + _nc_SPRINTF(s80, _nc_SLIMIT(sizeof(s80)) "Touchline s=%d c=%d", start, count); dPanel(s80, pan); touchline(pan->win, start, count); } diff --git a/deps/ncurses-6.3/panel/panel.h b/deps/ncurses-6.3/panel/panel.h new file mode 100644 index 0000000..62acc8f --- /dev/null +++ b/deps/ncurses-6.3/panel/panel.h @@ -0,0 +1,100 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2009,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Juergen Pfeifer 1996-1999,2008 * + ****************************************************************************/ + +/* $Id: panel.h,v 1.14 2020/07/04 20:38:43 tom Exp $ */ + +/* panel.h -- interface file for panels library */ + +#ifndef NCURSES_PANEL_H_incl +#define NCURSES_PANEL_H_incl 1 + +#include <curses.h> + +typedef struct panel +#if !NCURSES_OPAQUE_PANEL +{ + WINDOW *win; + struct panel *below; + struct panel *above; + NCURSES_CONST void *user; +} +#endif /* !NCURSES_OPAQUE_PANEL */ +PANEL; + +#if defined(__cplusplus) +extern "C" { +#endif + +#if defined(BUILDING_PANEL) +# define PANEL_IMPEXP NCURSES_EXPORT_GENERAL_EXPORT +#else +# define PANEL_IMPEXP NCURSES_EXPORT_GENERAL_IMPORT +#endif + +#define PANEL_WRAPPED_VAR(type,name) extern PANEL_IMPEXP type NCURSES_PUBLIC_VAR(name)(void) + +#define PANEL_EXPORT(type) PANEL_IMPEXP type NCURSES_API +#define PANEL_EXPORT_VAR(type) PANEL_IMPEXP type + +extern PANEL_EXPORT(WINDOW*) panel_window (const PANEL *); +extern PANEL_EXPORT(void) update_panels (void); +extern PANEL_EXPORT(int) hide_panel (PANEL *); +extern PANEL_EXPORT(int) show_panel (PANEL *); +extern PANEL_EXPORT(int) del_panel (PANEL *); +extern PANEL_EXPORT(int) top_panel (PANEL *); +extern PANEL_EXPORT(int) bottom_panel (PANEL *); +extern PANEL_EXPORT(PANEL*) new_panel (WINDOW *); +extern PANEL_EXPORT(PANEL*) panel_above (const PANEL *); +extern PANEL_EXPORT(PANEL*) panel_below (const PANEL *); +extern PANEL_EXPORT(int) set_panel_userptr (PANEL *, NCURSES_CONST void *); +extern PANEL_EXPORT(NCURSES_CONST void*) panel_userptr (const PANEL *); +extern PANEL_EXPORT(int) move_panel (PANEL *, int, int); +extern PANEL_EXPORT(int) replace_panel (PANEL *,WINDOW *); +extern PANEL_EXPORT(int) panel_hidden (const PANEL *); + +#if NCURSES_SP_FUNCS +extern PANEL_EXPORT(PANEL *) ground_panel(SCREEN *); +extern PANEL_EXPORT(PANEL *) ceiling_panel(SCREEN *); + +extern PANEL_EXPORT(void) NCURSES_SP_NAME(update_panels) (SCREEN*); +#endif + +#if defined(__cplusplus) +} +#endif + +#endif /* NCURSES_PANEL_H_incl */ + +/* end of panel.h */ diff --git a/deps/ncurses-5.9/panel/panel.priv.h b/deps/ncurses-6.3/panel/panel.priv.h similarity index 88% rename from deps/ncurses-5.9/panel/panel.priv.h rename to deps/ncurses-6.3/panel/panel.priv.h index ce4f989..029a4f3 100644 --- a/deps/ncurses-5.9/panel/panel.priv.h +++ b/deps/ncurses-6.3/panel/panel.priv.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -26,10 +27,11 @@ * authorization. * ****************************************************************************/ -/* $Id: panel.priv.h,v 1.23 2009/04/11 20:33:55 tom Exp $ */ +/* $Id: panel.priv.h,v 1.30 2020/09/26 18:05:32 tom Exp $ */ #ifndef NCURSES_PANEL_PRIV_H #define NCURSES_PANEL_PRIV_H 1 +/* *INDENT-OFF* */ #if HAVE_CONFIG_H # include <ncurses_cfg.h> @@ -42,32 +44,27 @@ struct screen; /* forward declaration */ #include "curses.priv.h" /* includes nc_panel.h */ -#include "panel.h" - -#if USE_RCS_IDS -# define MODULE_ID(id) static const char Ident[] = id; -#else -# define MODULE_ID(id) /*nothing*/ -#endif +#define NCURSES_OPAQUE_PANEL 0 +#include "panel.h" #ifdef TRACE - extern NCURSES_EXPORT(const char *) _nc_my_visbuf (const void *); + extern PANEL_EXPORT(const char *) _nc_my_visbuf (const void *, int); # ifdef TRACE_TXT -# define USER_PTR(ptr) _nc_visbuf((const char *)ptr) +# define USER_PTR(ptr,n) _nc_visbuf2(n, (const char *)ptr) # else -# define USER_PTR(ptr) _nc_my_visbuf((const char *)ptr) +# define USER_PTR(ptr,n) _nc_my_visbuf((const char *)ptr, n) # endif -# define returnPanel(code) TRACE_RETURN(code,panel) +# define returnPanel(code) TRACE_RETURN1(code,panel) - extern NCURSES_EXPORT(PANEL *) _nc_retrace_panel (PANEL *); - extern NCURSES_EXPORT(void) _nc_dPanel (const char*, const PANEL*); - extern NCURSES_EXPORT(void) _nc_dStack (const char*, int, const PANEL*); - extern NCURSES_EXPORT(void) _nc_Wnoutrefresh (const PANEL*); - extern NCURSES_EXPORT(void) _nc_Touchpan (const PANEL*); - extern NCURSES_EXPORT(void) _nc_Touchline (const PANEL*, int, int); + extern PANEL_EXPORT(PANEL *) _nc_retrace_panel (PANEL *); + extern PANEL_EXPORT(void) _nc_dPanel (const char*, const PANEL*); + extern PANEL_EXPORT(void) _nc_dStack (const char*, int, const PANEL*); + extern PANEL_EXPORT(void) _nc_Wnoutrefresh (const PANEL*); + extern PANEL_EXPORT(void) _nc_Touchpan (const PANEL*); + extern PANEL_EXPORT(void) _nc_Touchline (const PANEL*, int, int); # define dBug(x) _tracef x # define dPanel(text,pan) _nc_dPanel(text,pan) @@ -89,7 +86,7 @@ struct screen; /* forward declaration */ #define GetScreenHook(sp) \ struct panelhook* ph = NCURSES_SP_NAME(_nc_panelhook)(sp) #define GetPanelHook(pan) \ - GetScreenHook(_nc_screen_of((pan)->win)) + GetScreenHook(pan ? _nc_screen_of((pan)->win) : 0) #define GetWindowHook(win) \ SCREEN* sp = _nc_screen_of(win); \ GetScreenHook(sp) @@ -160,7 +157,7 @@ struct screen; /* forward declaration */ ---------------------------------------------------------------------------*/ #define PANEL_UPDATE(pan,panstart)\ { PANEL* pan2 = ((panstart) ? (panstart) : _nc_bottom_panel);\ - while(pan2) {\ + while(pan2 && pan2->win) {\ if ((pan2 != pan) && PANELS_OVERLAPPED(pan,pan2)) {\ int y, ix1, ix2, iy1, iy2;\ COMPUTE_INTERSECTION(pan, pan2, ix1, ix2, iy1, iy2);\ @@ -208,7 +205,8 @@ struct screen; /* forward declaration */ #if NCURSES_SP_FUNCS /* These may become later renamed and part of panel.h and the public API */ -extern NCURSES_EXPORT(void) NCURSES_SP_NAME(_nc_update_panels)(SCREEN*); +extern PANEL_EXPORT(void) NCURSES_SP_NAME(_nc_update_panels)(SCREEN*); #endif +/* *INDENT-ON* */ #endif /* NCURSES_PANEL_PRIV_H */ diff --git a/deps/ncurses-5.9/progs/MKtermsort.sh b/deps/ncurses-6.3/progs/MKtermsort.sh old mode 100755 new mode 100644 similarity index 84% rename from deps/ncurses-5.9/progs/MKtermsort.sh rename to deps/ncurses-6.3/progs/MKtermsort.sh index 2247f14..ca3232d --- a/deps/ncurses-5.9/progs/MKtermsort.sh +++ b/deps/ncurses-6.3/progs/MKtermsort.sh @@ -1,10 +1,11 @@ #!/bin/sh -# $Id: MKtermsort.sh,v 1.10 2008/07/12 20:22:54 tom Exp $ +# $Id: MKtermsort.sh,v 1.16 2021/04/18 20:12:50 tom Exp $ # # MKtermsort.sh -- generate indirection vectors for the various sort methods # ############################################################################## -# Copyright (c) 1998-2003,2008 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2015,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"), # @@ -46,15 +47,26 @@ AWK=${1-awk} DATA=${2-../include/Caps} data=data$$ -trap 'rm -f $data' 1 2 5 15 -sed -e 's/[ ][ ]*/ /g' < $DATA >$data +trap 'rm -f $data' 1 2 3 15 +sed -e 's/[ ][ ]*/ /g' < "$DATA" >$data DATA=$data -echo "/*"; -echo " * termsort.c --- sort order arrays for use by infocmp."; -echo " *"; -echo " * Note: this file is generated using MKtermsort.sh, do not edit by hand."; -echo " */"; +cat <<EOF +/* + * termsort.h --- sort order arrays for use by infocmp. + * + * Note: this file is generated using MKtermsort.sh, do not edit by hand. + */ +#ifndef _TERMSORT_H +#define _TERMSORT_H 1 +#include <curses.h> + +#ifndef DUMP_ENTRY_H +typedef unsigned PredType; +typedef unsigned PredIdx; +#endif + +EOF echo "static const PredIdx bool_terminfo_sort[] = {"; $AWK <$DATA ' @@ -139,26 +151,36 @@ echo ""; echo "static const bool bool_from_termcap[] = {"; $AWK <$DATA ' -$3 == "bool" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";} -$3 == "bool" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";} +BEGIN { count = 0; valid = 0; } +$3 == "bool" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; } +$3 == "bool" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; } +END { printf "#define OK_bool_from_termcap %d\n", valid; } ' echo "};"; echo ""; echo "static const bool num_from_termcap[] = {"; $AWK <$DATA ' -$3 == "num" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";} -$3 == "num" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";} +BEGIN { count = 0; valid = 0; } +$3 == "num" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; } +$3 == "num" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; } +END { printf "#define OK_num_from_termcap %d\n", valid; } ' echo "};"; echo ""; echo "static const bool str_from_termcap[] = {"; $AWK <$DATA ' -$3 == "str" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */";} -$3 == "str" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */";} +BEGIN { count = 0; valid = 0; } +$3 == "str" && substr($7, 1, 1) == "-" {print "\tFALSE,\t/* ", $2, " */"; count++; } +$3 == "str" && substr($7, 1, 1) == "Y" {print "\tTRUE,\t/* ", $2, " */"; valid = count++; } +END { printf "#define OK_str_from_termcap %d\n", valid; } ' -echo "};"; -echo ""; + +cat <<EOF +}; + +#endif /* _TERMSORT_H */ +EOF rm -f $data diff --git a/deps/ncurses-6.3/progs/Makefile.in b/deps/ncurses-6.3/progs/Makefile.in new file mode 100644 index 0000000..d818af4 --- /dev/null +++ b/deps/ncurses-6.3/progs/Makefile.in @@ -0,0 +1,369 @@ +# $Id: Makefile.in,v 1.111 2021/07/03 15:45:33 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2016,2018 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: Thomas E. Dickey 1996-on +# +# Makefile for ncurses source code. +# +# This makes the ncurses utility programs. +# +# The variable 'srcdir' refers to the source-distribution, and can be set with +# the configure script by "--srcdir=DIR". +# +# The rules are organized to produce the libraries for the configured models, +# and the programs with the configured default model. + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ +THIS = Makefile + +TOP_MFLAGS = @cf_cv_makeflags@ DESTDIR="$(DESTDIR)" RPATH_LIST="$(RPATH_LIST)" +@SET_MAKE@ + +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = ../@DFT_OBJ_SUBDIR@ +DESTDIR = @DESTDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +datarootdir = @datarootdir@ +datadir = @datadir@ +includesubdir = @includesubdir@ + +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) + +PACKAGE = @PACKAGE@ + +LIBTOOL = @LIBTOOL@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ +LIBTOOL_INSTALL = @LIB_INSTALL@ +LIBTOOL_UNINSTALL = @LIB_UNINSTALL@ + +INSTALL = @INSTALL@ +INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@ +transform = @program_transform_name@ + +AWK = @AWK@ +LN_S = @LN_S@ + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +CC = @CC@ +CPP = @CPP@ +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ + +INCDIR = $(top_srcdir)/include +CPPFLAGS = -DHAVE_CONFIG_H -I../progs @CPPFLAGS@ + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ +LOCAL_LIBDIR = @top_builddir@/lib + +LD = @LD@ +LINK = @LINK_PROGS@ $(LIBTOOL_LINK) +LDFLAGS = @EXTRA_LDFLAGS@ @LDFLAGS@ +RPATH_LIST = @RPATH_LIST@ + +LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) +LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) +LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) +LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) +LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@ + +LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@) + +LIBS_TIC = @TINFO_LDFLAGS@ @LDFLAGS_STATIC@ @TICS_LIBS@ @TINFO_LIBS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@ +LDFLAGS_TIC = @TICS_LDFLAGS@ $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TIC) + +LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_LIBS@ @LDFLAGS_SHARED@ @LD_MODEL@ @LIBS@ +LDFLAGS_TINFO = @TINFO_LDFLAGS@ $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO) + +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ +LINT_LIBS = -lncurses @LIBS@ + +AUTO_SRC = \ + termsort.h \ + transform.h + +# tic relies on direct access to the terminfo database +GET_PROGS = infocmp$x clear$x tabs$x tput$x tset$x toe$x +PUT_PROGS = @MAKE_TERMINFO@ tic$x +PROGS = $(PUT_PROGS) $(GET_PROGS) + +# Default library, for linking applications +DEPS_CURSES = ../lib/@LIB_PREFIX@ncurses@DFT_DEP_SUFFIX@ + +HEADER_DEPS = \ + ../include/curses.h \ + $(INCDIR)/term_entry.h \ + $(INCDIR)/tic.h \ + $(INCDIR)/nc_alloc.h + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check +@MAKE_PHONY@.PHONY : clean +@MAKE_PHONY@.PHONY : distclean +@MAKE_PHONY@.PHONY : install +@MAKE_PHONY@.PHONY : install.libs +@MAKE_PHONY@.PHONY : install.progs +@MAKE_PHONY@.PHONY : libs +@MAKE_PHONY@.PHONY : lint +@MAKE_PHONY@.PHONY : mostlyclean +@MAKE_PHONY@.PHONY : realclean +@MAKE_PHONY@.PHONY : sources +@MAKE_PHONY@.PHONY : uninstall +@MAKE_PHONY@.PHONY : uninstall.libs +@MAKE_PHONY@.PHONY : uninstall.progs + +all: $(AUTO_SRC) $(PROGS) + +sources: $(AUTO_SRC) + +install: $(AUTO_SRC) install.progs +uninstall: uninstall.progs + +# this line simplifies the configure-script +libs \ +install.libs \ +uninstall.libs: + +TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/' + +# transformed names for installing files +actual_captoinfo = `echo captoinfo$x| $(TRANSFORM)` +actual_clear = `echo clear$x| $(TRANSFORM)` +actual_infocmp = `echo infocmp$x| $(TRANSFORM)` +actual_infotocap = `echo infotocap$x| $(TRANSFORM)` +actual_init = `echo init$x| $(TRANSFORM)` +actual_reset = `echo reset$x| $(TRANSFORM)` +actual_tabs = `echo tabs$x| $(TRANSFORM)` +actual_tic = `echo tic$x| $(TRANSFORM)` +actual_toe = `echo toe$x| $(TRANSFORM)` +actual_tput = `echo tput$x| $(TRANSFORM)` +actual_tset = `echo tset$x| $(TRANSFORM)` + +# transformed names for comparing at runtime +define_captoinfo = `echo captoinfo| $(TRANSFORM)` +define_clear = `echo clear| $(TRANSFORM)` +define_infotocap = `echo infotocap| $(TRANSFORM)` +define_init = `echo init| $(TRANSFORM)` +define_reset = `echo reset| $(TRANSFORM)` + +transform.h : + echo "#ifndef __TRANSFORM_H" >$@ + echo "#define __TRANSFORM_H 1" >>$@ + echo "#include <progs.priv.h>" >>$@ + echo "extern bool same_program(const char *, const char *);" >>$@ + -$(SHELL) -c 'if test -n "$x" ; then echo "#define SUFFIX_IGNORED \"$x\"">>$@; fi' + echo "#define PROG_CAPTOINFO \"$(define_captoinfo)\"" >>$@ + echo "#define PROG_INFOTOCAP \"$(define_infotocap)\"" >>$@ + echo "#define PROG_CLEAR \"$(define_clear)\"" >>$@ + echo "#define PROG_RESET \"$(define_reset)\"" >>$@ + echo "#define PROG_INIT \"$(define_init)\"" >>$@ + echo "#endif /* __TRANSFORM_H */" >>$@ + +install.progs: $(AUTO_SRC) $(PROGS) $(DESTDIR)$(bindir) +@MAKE_TERMINFO@ $(LIBTOOL_INSTALL) $(INSTALL_PROG) tic$x $(DESTDIR)$(bindir)/$(actual_tic) +@MAKE_TERMINFO@ $(LIBTOOL_INSTALL) $(INSTALL_PROG) toe$x $(DESTDIR)$(bindir)/$(actual_toe) +@MAKE_TERMINFO@ @echo "linking $(actual_infotocap) to $(actual_tic)" +@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap) +@MAKE_TERMINFO@ ( cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_infotocap) ) +@MAKE_TERMINFO@ @echo "linking $(actual_captoinfo) to $(actual_tic)" +@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo) +@MAKE_TERMINFO@ ( cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tic) $(actual_captoinfo) ) + $(LIBTOOL_INSTALL) $(INSTALL_PROG) infocmp$x $(DESTDIR)$(bindir)/$(actual_infocmp) + $(LIBTOOL_INSTALL) $(INSTALL_PROG) clear$x $(DESTDIR)$(bindir)/$(actual_clear) + $(LIBTOOL_INSTALL) $(INSTALL_PROG) tabs$x $(DESTDIR)$(bindir)/$(actual_tabs) + $(LIBTOOL_INSTALL) $(INSTALL_PROG) tput$x $(DESTDIR)$(bindir)/$(actual_tput) + $(LIBTOOL_INSTALL) $(INSTALL_PROG) tset$x $(DESTDIR)$(bindir)/$(actual_tset) + @echo "linking $(actual_reset) to $(actual_tset)" + -@rm -f $(DESTDIR)$(bindir)/$(actual_reset) + ( cd $(DESTDIR)$(bindir) && $(LN_S) $(actual_tset) $(actual_reset) ) + +uninstall.progs: +@MAKE_TERMINFO@ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tic) +@MAKE_TERMINFO@ -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_toe) +@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_captoinfo) +@MAKE_TERMINFO@ -@rm -f $(DESTDIR)$(bindir)/$(actual_infotocap) + -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_infocmp) + -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_clear) + -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tabs) + -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tput) + -@$(LIBTOOL_CLEAN) rm -f $(DESTDIR)$(bindir)/$(actual_tset) + -@rm -f $(DESTDIR)$(bindir)/$(actual_reset) + +$(DESTDIR)$(bindir) : + mkdir -p $@ + +# +# Utilities normally built by make all start here +# + +DEPS_TIC = \ + $(MODEL)/tic$o \ + $(MODEL)/dump_entry$o \ + $(MODEL)/tparm_type$o \ + $(MODEL)/transform$o + +tic$x: $(DEPS_TIC) $(DEPS_CURSES) transform.h + @ECHO_LD@ $(LINK) $(DEPS_TIC) $(LDFLAGS_TIC) -o $@ + +DEPS_TOE = \ + $(MODEL)/toe$o + +toe$x: $(DEPS_TOE) $(DEPS_CURSES) + @ECHO_LD@ $(LINK) $(DEPS_TOE) $(LDFLAGS_TIC) -o $@ + +DEPS_CLEAR = \ + $(MODEL)/clear$o \ + $(MODEL)/clear_cmd$o \ + $(MODEL)/tty_settings$o + +clear$x: $(DEPS_CLEAR) $(DEPS_CURSES) + @ECHO_LD@ $(LINK) $(DEPS_CLEAR) $(LDFLAGS_TINFO) -o $@ + +DEPS_TABS = \ + $(MODEL)/tabs$o \ + $(MODEL)/tty_settings$o + +tabs$x: $(DEPS_TABS) $(DEPS_TABS) + @ECHO_LD@ $(LINK) $(DEPS_TABS) $(LDFLAGS_TINFO) -o $@ + +DEPS_TPUT = \ + $(MODEL)/tput$o \ + $(MODEL)/clear_cmd$o \ + $(MODEL)/reset_cmd$o \ + $(MODEL)/tparm_type$o \ + $(MODEL)/transform$o \ + $(MODEL)/tty_settings$o + +tput$x: $(DEPS_TPUT) $(DEPS_CURSES) transform.h + @ECHO_LD@ $(LINK) $(DEPS_TPUT) $(LDFLAGS_TINFO) -o $@ + +DEPS_INFOCMP = \ + $(MODEL)/infocmp$o \ + $(MODEL)/dump_entry$o + +infocmp$x: $(DEPS_INFOCMP) $(DEPS_CURSES) + @ECHO_LD@ $(LINK) $(DEPS_INFOCMP) $(LDFLAGS_TIC) -o $@ + +DEPS_TSET = \ + $(MODEL)/tset$o \ + $(MODEL)/reset_cmd$o \ + $(MODEL)/transform$o \ + $(MODEL)/tty_settings$o + +tset$x: $(DEPS_TSET) $(DEPS_CURSES) transform.h + @ECHO_LD@ $(LINK) $(DEPS_TSET) $(LDFLAGS_TINFO) -o $@ + +termsort.h: $(srcdir)/MKtermsort.sh + $(SHELL) $(srcdir)/MKtermsort.sh $(AWK) $(srcdir)/../include/@TERMINFO_CAPS@ >$@ + +# +# Utility productions start here +# + +tags: + $(CTAGS) *.[ch] + +@MAKE_UPPER_TAGS@TAGS: +@MAKE_UPPER_TAGS@ $(ETAGS) *.[ch] + +mostlyclean :: + -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace + +clean :: mostlyclean + -$(SHELL) -c "if test -n '$x' ; then $(MAKE) clean x=''; fi" + -rm -f $(AUTO_SRC) + -rm -f $(PROGS) + -rm -rf .libs *.dSYM + +distclean :: clean + -rm -f Makefile + +realclean :: distclean + +# These rules are used to allow "make -n" to work on a clean directory-tree +../include/hashsize.h \ +../include/parametrized.h \ +../include/term.h : + ( cd ../include && $(MAKE) $(TOP_MFLAGS) ) +$(DEPS_CURSES) : + ( cd ../ncurses && $(MAKE) $(TOP_MFLAGS) ) + +lint: +@MAKE_TERMINFO@ $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tic.c $(srcdir)/dump_entry.c $(LINT_LIBS) +@MAKE_TERMINFO@ $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/toe.c $(LINT_LIBS) + $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/clear.c $(LINT_LIBS) + $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/infocmp.c $(srcdir)/dump_entry.c $(LINT_LIBS) + $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tabs.c $(LINT_LIBS) + $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tput.c $(LINT_LIBS) + $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/tset.c $(LINT_LIBS) + +# Verify that each header-file can be compiled without including another. +check: + @$(SHELL) -c "for header in *.h;\ + do \ + echo \"** testing \$${header}\" ; \ + echo \"#include <\$${header}>\" >headers.c; \ + echo \"int main(void) { return 0; }\" >>headers.c; \ + $(CC) -c $(CFLAGS) $(CPPFLAGS) headers.c; \ + done" + -@rm -f headers.* + +############################################################################### +# The remainder of this file is automatically generated during configuration +############################################################################### diff --git a/deps/ncurses-5.9/progs/capconvert b/deps/ncurses-6.3/progs/capconvert similarity index 93% rename from deps/ncurses-5.9/progs/capconvert rename to deps/ncurses-6.3/progs/capconvert index 8199bbf..c73c368 100755 --- a/deps/ncurses-5.9/progs/capconvert +++ b/deps/ncurses-6.3/progs/capconvert @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 1998,2006 Free Software Foundation, Inc. # +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 1998-2011,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"), # @@ -26,7 +27,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: capconvert,v 1.4 2006/04/22 21:46:17 tom Exp $ +# $Id: capconvert,v 1.10 2021/09/04 10:55:04 tom Exp $ # # capconvert -- automated conversion from termcap to terminfo # @@ -77,22 +78,24 @@ then # Assumes the terminfo master covers all canned terminal types exit; fi - if test "$TERM" = "xterm" - then + case $TERM in + xterm | xterm-*) echo "You are running xterm, which usually sets TERMCAP itself." echo "We can ignore this, because terminfo knows about xterm." echo "So you will just use the system-wide terminfo tree." - exit; - else + exit + ;; + *) echo "We will have to make a local one for you anyway, to capture the effect" echo "of your TERMCAP variable." - fi + ;; + esac else echo "No system-wide terminfo tree. We will make you a local one." fi echo ""; -# Check if test -x works (it's not portable, but useful) +# Check if test -x works (it is not portable, but useful) OPT="-x" TMP=test$$; touch $TMP && chmod 755 $TMP if test $OPT $TMP ; then @@ -109,7 +112,7 @@ IFS="${IFS= }"; save_ifs="$IFS"; IFS="${IFS}:" for x in $PATH . do if test $OPT $x/tic - then + then TIC=$x/tic break fi @@ -141,7 +144,7 @@ if test -d $HOME/.terminfo then echo "It appears you already have a private terminfo directory" echo "at $HOME/.terminfo; this seems odd, because TERMINFO" - echo "is not defined. I am not going to second-guess this -- if you" + echo "is not defined. I am not going to second-guess this -- if you" echo "really want me to try auto-configuring for you, remove or" echo "rename $HOME/terminfo and run me again." exit; @@ -177,7 +180,7 @@ else echo "I am going to assume this is the terminfo source included with" echo "the ncurses distribution. If this assumption is wrong, please" echo "interrupt me now! OK to continue?" - read ans; + read answer; ;; 2) echo "I see more than one possible terminfo source. Here they are:" @@ -203,18 +206,18 @@ echo "OK, now I will make your private terminfo tree. This may take a bit..." # # Kluge alert: we compile terminfo.src in two pieces because a lot of machines # with < 16MB RAM choke on tic's core-hog habits. -trap "rm -f tsplit$$.*" 0 1 2 5 15 +trap "rm -f tsplit$$.*" EXIT INT QUIT TERM HUP sed -n $master \ -e '1,/SPLIT HERE/w 'tsplit$$.01 \ -e '/SPLIT HERE/,$w 'tsplit$$.02 \ 2>/dev/null for x in tsplit$$.*; do eval $TIC $x; done rm tsplit$$.* -trap 0 1 2 5 15 +trap EXIT INT QUIT TERM HUP # echo "You now have a private tree under $HOME/.terminfo;" echo "the ncurses library will automatically read from it," -echo "and ncurses tic will automatically compile entries to it." +echo "and ncurses tic will automatically compile entries to it." # We're done unless user has a .termcap file or equivalent named by TERMCAP if test -z "$TERMCAP" @@ -224,7 +227,7 @@ fi # OK, here comes the nasty case...user has a TERMCAP. Instead of # trying to follow all the convolutions of the relationship between -# TERM and TERMCAP (partly because it's too painful, and partly because +# TERM and TERMCAP (partly because it is too painful, and partly because # we don't actually know what TERM will be nor even if it always has # the same value for this user) we do the following three steps... @@ -235,7 +238,7 @@ then echo "Done." echo "Note that editing $HOME/.termcap will no longer change the data curses sees." elif test -f "$TERMCAP" -then +then echo "Your TERMCAP names the file $TERMCAP. I will compile that." eval $TIC $TERMCAP echo "Done." @@ -249,7 +252,7 @@ else echo "Done." echo "Note that editing TERMCAP will no longer change the data curses sees." fi -echo "To do that, decompile the terminal decription you want with infocmp(1)," +echo "To do that, decompile the terminal description you want with infocmp(1)," echo "edit to taste, and recompile using tic(1)." # capconvert ends here diff --git a/deps/ncurses-6.3/progs/clear.c b/deps/ncurses-6.3/progs/clear.c new file mode 100644 index 0000000..97cb0f3 --- /dev/null +++ b/deps/ncurses-6.3/progs/clear.c @@ -0,0 +1,108 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * clear.c -- clears the terminal's screen + */ + +#define USE_LIBTINFO +#include <clear_cmd.h> +#include <tty_settings.h> + +MODULE_ID("$Id: clear.c,v 1.24 2021/03/20 18:23:14 tom Exp $") + +const char *_nc_progname = "clear"; + +static GCC_NORETURN void +usage(void) +{ +#define KEEP(s) s "\n" + static const char msg[] = + { + KEEP("") + KEEP("Options:") + KEEP(" -T TERM use this instead of $TERM") + KEEP(" -V print curses-version") + KEEP(" -x do not try to clear scrollback") + }; +#undef KEEP + (void) fprintf(stderr, "Usage: %s [options]\n", _nc_progname); + fputs(msg, stderr); + ExitProgram(EXIT_FAILURE); +} + +int +main( + int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + TTY tty_settings; + int fd; + int c; + char *term; + bool opt_x = FALSE; /* clear scrollback if possible */ + + _nc_progname = _nc_rootname(argv[0]); + term = getenv("TERM"); + + while ((c = getopt(argc, argv, "T:Vx")) != -1) { + switch (c) { + case 'T': + use_env(FALSE); + use_tioctl(TRUE); + term = optarg; + break; + case 'V': + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + case 'x': /* do not try to clear scrollback */ + opt_x = TRUE; + break; + default: + usage(); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(); + + fd = save_tty_settings(&tty_settings, FALSE); + + setupterm(term, fd, (int *) 0); + + ExitProgram((clear_cmd(opt_x) == ERR) + ? EXIT_FAILURE + : EXIT_SUCCESS); +} diff --git a/deps/ncurses-5.9/progs/clear.sh b/deps/ncurses-6.3/progs/clear.sh old mode 100755 new mode 100644 similarity index 93% rename from deps/ncurses-5.9/progs/clear.sh rename to deps/ncurses-6.3/progs/clear.sh index f26112b..1d899f1 --- a/deps/ncurses-5.9/progs/clear.sh +++ b/deps/ncurses-6.3/progs/clear.sh @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 1998,2006 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 1998,2006 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"), # diff --git a/deps/ncurses-6.3/progs/clear_cmd.c b/deps/ncurses-6.3/progs/clear_cmd.c new file mode 100644 index 0000000..3d80515 --- /dev/null +++ b/deps/ncurses-6.3/progs/clear_cmd.c @@ -0,0 +1,60 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2016,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: Thomas E. Dickey * + ****************************************************************************/ + +/* + * clear.c -- clears the terminal's screen + */ + +#define USE_LIBTINFO +#include <clear_cmd.h> + +MODULE_ID("$Id: clear_cmd.c,v 1.5 2020/02/02 23:34:34 tom Exp $") + +static int +putch(int c) +{ + return putchar(c); +} + +int +clear_cmd(bool legacy) +{ + int retval = tputs(clear_screen, lines > 0 ? lines : 1, putch); + if (!legacy) { + /* Clear the scrollback buffer if possible. */ + char *E3 = tigetstr("E3"); + if (E3) + (void) tputs(E3, lines > 0 ? lines : 1, putch); + } + return retval; +} diff --git a/deps/ncurses-6.3/progs/clear_cmd.h b/deps/ncurses-6.3/progs/clear_cmd.h new file mode 100644 index 0000000..b1de814 --- /dev/null +++ b/deps/ncurses-6.3/progs/clear_cmd.h @@ -0,0 +1,45 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2016,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: Thomas E. Dickey * + ****************************************************************************/ + +/* + * $Id: clear_cmd.h,v 1.3 2020/02/02 23:34:34 tom Exp $ + * + * Utility functions for clearing terminal. + */ +#ifndef CLEAR_CMD_H +#define CLEAR_CMD_H 1 + +#include <progs.priv.h> +extern int clear_cmd(bool); + +#endif /* CLEAR_CMD_H */ diff --git a/deps/ncurses-6.3/progs/dump_entry.c b/deps/ncurses-6.3/progs/dump_entry.c new file mode 100644 index 0000000..860eccc --- /dev/null +++ b/deps/ncurses-6.3/progs/dump_entry.c @@ -0,0 +1,1817 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996 on * + ****************************************************************************/ + +#define __INTERNAL_CAPS_VISIBLE +#include <progs.priv.h> + +#include <dump_entry.h> +#include <termsort.h> /* this C file is generated */ +#include <parametrized.h> /* so is this */ + +MODULE_ID("$Id: dump_entry.c,v 1.189 2021/09/04 10:29:59 tom Exp $") + +#define DISCARD(string) string = ABSENT_STRING +#define PRINTF (void) printf +#define WRAPPED 32 + +#define OkIndex(index,array) ((int)(index) >= 0 && (int)(index) < (int) SIZEOF(array)) +#define TcOutput() (outform == F_TERMCAP || outform == F_TCONVERR) + +typedef struct { + char *text; + size_t used; + size_t size; +} DYNBUF; + +static int tversion; /* terminfo version */ +static int outform; /* output format to use */ +static int sortmode; /* sort mode to use */ +static int width = 60; /* max line width for listings */ +static int height = 65535; /* max number of lines for listings */ +static int column; /* current column, limited by 'width' */ +static int oldcol; /* last value of column before wrap */ +static bool pretty; /* true if we format if-then-else strings */ +static bool wrapped; /* true if we wrap too-long strings */ +static bool did_wrap; /* true if last wrap_concat did wrapping */ +static bool checking; /* true if we are checking for tic */ +static int quickdump; /* true if we are dumping compiled data */ + +static char *save_sgr; + +static DYNBUF outbuf; +static DYNBUF tmpbuf; + +/* indirection pointers for implementing sort and display modes */ +static const PredIdx *bool_indirect, *num_indirect, *str_indirect; +static NCURSES_CONST char *const *bool_names; +static NCURSES_CONST char *const *num_names; +static NCURSES_CONST char *const *str_names; + +static const char *separator = "", *trailer = ""; +static int indent = 8; + +/* cover various ports and variants of terminfo */ +#define V_ALLCAPS 0 /* all capabilities (SVr4, XSI, ncurses) */ +#define V_SVR1 1 /* SVR1, Ultrix */ +#define V_HPUX 2 /* HP-UX */ +#define V_AIX 3 /* AIX */ +#define V_BSD 4 /* BSD */ + +#if NCURSES_XNAMES +#define OBSOLETE(n) (!_nc_user_definable && (n[0] == 'O' && n[1] == 'T')) +#else +#define OBSOLETE(n) (n[0] == 'O' && n[1] == 'T') +#endif + +#define isObsolete(f,n) ((f == F_TERMINFO || f == F_VARIABLE) && (sortmode != S_VARIABLE) && OBSOLETE(n)) + +#if NCURSES_XNAMES +#define BoolIndirect(j) ((j >= BOOLCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : bool_indirect[j])) +#define NumIndirect(j) ((j >= NUMCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : num_indirect[j])) +#define StrIndirect(j) ((j >= STRCOUNT) ? (j) : ((sortmode == S_NOSORT) ? j : str_indirect[j])) +#else +#define BoolIndirect(j) ((sortmode == S_NOSORT) ? (j) : bool_indirect[j]) +#define NumIndirect(j) ((sortmode == S_NOSORT) ? (j) : num_indirect[j]) +#define StrIndirect(j) ((sortmode == S_NOSORT) ? (j) : str_indirect[j]) +#endif + +static GCC_NORETURN void +failed(const char *s) +{ + perror(s); + ExitProgram(EXIT_FAILURE); +} + +static void +strncpy_DYN(DYNBUF * dst, const char *src, size_t need) +{ + size_t want = need + dst->used + 1; + if (want > dst->size) { + dst->size += (want + 1024); /* be generous */ + dst->text = typeRealloc(char, dst->size, dst->text); + if (dst->text == 0) + failed("strncpy_DYN"); + } + _nc_STRNCPY(dst->text + dst->used, src, need + 1); + dst->used += need; + dst->text[dst->used] = 0; +} + +static void +strcpy_DYN(DYNBUF * dst, const char *src) +{ + if (src == 0) { + dst->used = 0; + strcpy_DYN(dst, ""); + } else { + strncpy_DYN(dst, src, strlen(src)); + } +} + +#if NO_LEAKS +static void +free_DYN(DYNBUF * p) +{ + if (p->text != 0) + free(p->text); + p->text = 0; + p->size = 0; + p->used = 0; +} + +void +_nc_leaks_dump_entry(void) +{ + free_DYN(&outbuf); + free_DYN(&tmpbuf); +} +#endif + +#define NameTrans(check,result) \ + if ((np->nte_index <= OK_ ## check) \ + && check[np->nte_index]) \ + return (result[np->nte_index]) + +NCURSES_CONST char * +nametrans(const char *name) +/* translate a capability name to termcap from terminfo */ +{ + const struct name_table_entry *np; + + if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0) { + switch (np->nte_type) { + case BOOLEAN: + NameTrans(bool_from_termcap, boolcodes); + break; + + case NUMBER: + NameTrans(num_from_termcap, numcodes); + break; + + case STRING: + NameTrans(str_from_termcap, strcodes); + break; + } + } + + return (0); +} + +void +dump_init(const char *version, + int mode, + int sort, + bool wrap_strings, + int twidth, + int theight, + unsigned traceval, + bool formatted, + bool check, + int quick) +/* set up for entry display */ +{ + width = twidth; + height = theight; + pretty = formatted; + wrapped = wrap_strings; + checking = check; + quickdump = (quick & 3); + + did_wrap = (width <= 0); + + /* versions */ + if (version == 0) + tversion = V_ALLCAPS; + else if (!strcmp(version, "SVr1") || !strcmp(version, "SVR1") + || !strcmp(version, "Ultrix")) + tversion = V_SVR1; + else if (!strcmp(version, "HP")) + tversion = V_HPUX; + else if (!strcmp(version, "AIX")) + tversion = V_AIX; + else if (!strcmp(version, "BSD")) + tversion = V_BSD; + else + tversion = V_ALLCAPS; + + /* implement display modes */ + switch (outform = mode) { + case F_LITERAL: + case F_TERMINFO: + bool_names = boolnames; + num_names = numnames; + str_names = strnames; + separator = (twidth > 0 && theight > 1) ? ", " : ","; + trailer = "\n\t"; + break; + + case F_VARIABLE: + bool_names = boolfnames; + num_names = numfnames; + str_names = strfnames; + separator = (twidth > 0 && theight > 1) ? ", " : ","; + trailer = "\n\t"; + break; + + case F_TERMCAP: + case F_TCONVERR: + bool_names = boolcodes; + num_names = numcodes; + str_names = strcodes; + separator = ":"; + trailer = "\\\n\t:"; + break; + } + indent = 8; + + /* implement sort modes */ + switch (sortmode = sort) { + case S_NOSORT: + if (traceval) + (void) fprintf(stderr, + "%s: sorting by term structure order\n", _nc_progname); + break; + + case S_TERMINFO: + if (traceval) + (void) fprintf(stderr, + "%s: sorting by terminfo name order\n", _nc_progname); + bool_indirect = bool_terminfo_sort; + num_indirect = num_terminfo_sort; + str_indirect = str_terminfo_sort; + break; + + case S_VARIABLE: + if (traceval) + (void) fprintf(stderr, + "%s: sorting by C variable order\n", _nc_progname); + bool_indirect = bool_variable_sort; + num_indirect = num_variable_sort; + str_indirect = str_variable_sort; + break; + + case S_TERMCAP: + if (traceval) + (void) fprintf(stderr, + "%s: sorting by termcap name order\n", _nc_progname); + bool_indirect = bool_termcap_sort; + num_indirect = num_termcap_sort; + str_indirect = str_termcap_sort; + break; + } + + if (traceval) + (void) fprintf(stderr, + "%s: width = %d, tversion = %d, outform = %d\n", + _nc_progname, width, tversion, outform); +} + +static TERMTYPE2 *cur_type; + +static int +dump_predicate(PredType type, PredIdx idx) +/* predicate function to use for ordinary decompilation */ +{ + switch (type) { + case BOOLEAN: + return (cur_type->Booleans[idx] == FALSE) + ? FAIL : cur_type->Booleans[idx]; + + case NUMBER: + return (cur_type->Numbers[idx] == ABSENT_NUMERIC) + ? FAIL : cur_type->Numbers[idx]; + + case STRING: + return (cur_type->Strings[idx] != ABSENT_STRING) + ? (int) TRUE : FAIL; + } + + return (FALSE); /* pacify compiler */ +} + +static void set_obsolete_termcaps(TERMTYPE2 *tp); + +/* is this the index of a function key string? */ +#define FNKEY(i) \ + (((i) >= STR_IDX(key_f0) && \ + (i) <= STR_IDX(key_f9)) || \ + ((i) >= STR_IDX(key_f11) && \ + (i) <= STR_IDX(key_f63))) + +/* + * If we configure with a different Caps file, the offsets into the arrays + * will change. So we use an address expression. + */ +#define BOOL_IDX(name) (PredType) (&(name) - &(CUR Booleans[0])) +#define NUM_IDX(name) (PredType) (&(name) - &(CUR Numbers[0])) +#define STR_IDX(name) (PredType) (&(name) - &(CUR Strings[0])) + +static bool +version_filter(PredType type, PredIdx idx) +/* filter out capabilities we may want to suppress */ +{ + switch (tversion) { + case V_ALLCAPS: /* SVr4, XSI Curses */ + return (TRUE); + + case V_SVR1: /* System V Release 1, Ultrix */ + switch (type) { + case BOOLEAN: + return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE); + case NUMBER: + return ((idx <= NUM_IDX(width_status_line)) ? TRUE : FALSE); + case STRING: + return ((idx <= STR_IDX(prtr_non)) ? TRUE : FALSE); + } + break; + + case V_HPUX: /* Hewlett-Packard */ + switch (type) { + case BOOLEAN: + return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE); + case NUMBER: + return ((idx <= NUM_IDX(label_width)) ? TRUE : FALSE); + case STRING: + if (idx <= STR_IDX(prtr_non)) + return (TRUE); + else if (FNKEY(idx)) /* function keys */ + return (TRUE); + else if (idx == STR_IDX(plab_norm) + || idx == STR_IDX(label_on) + || idx == STR_IDX(label_off)) + return (TRUE); + else + return (FALSE); + } + break; + + case V_AIX: /* AIX */ + switch (type) { + case BOOLEAN: + return ((idx <= BOOL_IDX(xon_xoff)) ? TRUE : FALSE); + case NUMBER: + return ((idx <= NUM_IDX(width_status_line)) ? TRUE : FALSE); + case STRING: + if (idx <= STR_IDX(prtr_non)) + return (TRUE); + else if (FNKEY(idx)) /* function keys */ + return (TRUE); + else + return (FALSE); + } + break; + +#define is_termcap(type) (OkIndex(idx, type##_from_termcap) && \ + type##_from_termcap[idx]) + + case V_BSD: /* BSD */ + switch (type) { + case BOOLEAN: + return is_termcap(bool); + case NUMBER: + return is_termcap(num); + case STRING: + return is_termcap(str); + } + break; + } + + return (FALSE); /* pacify the compiler */ +} + +static void +trim_trailing(void) +{ + while (outbuf.used > 0 && outbuf.text[outbuf.used - 1] == ' ') + outbuf.text[--outbuf.used] = '\0'; +} + +static void +force_wrap(void) +{ + oldcol = column; + trim_trailing(); + strcpy_DYN(&outbuf, trailer); + column = indent; +} + +static int +op_length(const char *src, int offset) +{ + int result = 0; + + if (offset > 0 && src[offset - 1] == '\\') { + result = 0; + } else { + int ch; + + result++; /* for '%' mark */ + ch = src[offset + result]; + if (TcOutput()) { + if (ch == '>') { + result += 3; + } else if (ch == '+') { + result += 2; + } else { + result++; + } + } else if (ch == '\'') { + result += 3; + } else if (ch == L_CURL[0]) { + int n = result; + while ((ch = src[offset + n]) != '\0') { + if (ch == R_CURL[0]) { + result = ++n; + break; + } + n++; + } + } else if (strchr("pPg", ch) != 0) { + result += 2; + } else { + result++; /* ordinary operator */ + } + } + return result; +} + +/* + * When wrapping too-long strings, avoid splitting a backslash sequence, or + * a terminfo '%' operator. That will leave things a little ragged, but avoids + * a stray backslash at the end of the line, as well as making the result a + * little more readable. + */ +static int +find_split(const char *src, int step, int size) +{ + int result = size; + + if (size > 0) { + /* check if that would split a backslash-sequence */ + int mark = size; + int n; + + for (n = size - 1; n > 0; --n) { + int ch = UChar(src[step + n]); + if (ch == '\\') { + if (n > 0 && src[step + n - 1] == ch) + --n; + mark = n; + break; + } else if (!isalnum(ch)) { + break; + } + } + if (mark < size) { + result = mark; + } else { + /* check if that would split a backslash-sequence */ + for (n = size - 1; n > 0; --n) { + int ch = UChar(src[step + n]); + if (ch == '%') { + int need = op_length(src, step + n); + if ((n + need) > size) { + mark = n; + } + break; + } + } + if (mark < size) { + result = mark; + } + } + } + return result; +} + +/* + * If we are going to wrap lines, we cannot leave literal spaces because that + * would be ambiguous if we split on that space. + */ +static char * +fill_spaces(const char *src) +{ + const char *fill = "\\s"; + size_t need = strlen(src); + size_t size = strlen(fill); + char *result = 0; + int pass; + size_t s, d; + for (pass = 0; pass < 2; ++pass) { + for (s = d = 0; src[s] != '\0'; ++s) { + if (src[s] == ' ') { + if (pass) { + _nc_STRCPY(&result[d], fill, need + 1 - d); + d += size; + } else { + need += size; + } + } else { + if (pass) { + result[d++] = src[s]; + } else { + ++d; + } + } + } + if (pass) { + result[d] = '\0'; + } else { + result = calloc(need + 1, sizeof(char)); + if (result == 0) + failed("fill_spaces"); + } + } + return result; +} + +typedef enum { + wOFF = 0 + ,w1ST = 1 + ,w2ND = 2 + ,wEND = 4 + ,wERR = 8 +} WRAPMODE; + +#define wrap_1ST(mode) ((mode)&w1ST) +#define wrap_END(mode) ((mode)&wEND) +#define wrap_ERR(mode) ((mode)&wERR) + +static void +wrap_concat(const char *src, int need, unsigned mode) +{ + int gaps = (int) strlen(separator); + int want = gaps + need; + + did_wrap = (width <= 0); + if (wrap_1ST(mode) + && column > indent + && column + want > width) { + force_wrap(); + } + if ((wrap_END(mode) && !wrap_ERR(mode)) && + wrapped && + (width >= 0) && + (column + want) > width) { + int step = 0; + int used = width > WRAPPED ? width : WRAPPED; + int base = 0; + char *p, align[9]; + const char *my_t = trailer; + char *fill = fill_spaces(src); + int last = (int) strlen(fill); + + need = last; + + if (TcOutput()) + trailer = "\\\n\t "; + + if (!TcOutput() && (p = strchr(fill, '=')) != 0) { + base = (int) (p + 1 - fill); + if (base > 8) + base = 8; + _nc_SPRINTF(align, _nc_SLIMIT(align) "%*s", base, " "); + } else if (column > 8) { + base = column - 8; + if (base > 8) + base = 8; + _nc_SPRINTF(align, _nc_SLIMIT(align) "%*s", base, " "); + } else { + align[base] = '\0'; + } + /* "pretty" overrides wrapping if it already split the line */ + if (!pretty || strchr(fill, '\n') == 0) { + int tag = 0; + + if (TcOutput() && outbuf.used && !wrap_1ST(mode)) { + tag = 3; + } + + while ((column + (need + gaps)) > used) { + int size = used - tag; + if (step) { + strcpy_DYN(&outbuf, align); + size -= base; + } + if (size > (last - step)) { + size = (last - step); + } + size = find_split(fill, step, size); + strncpy_DYN(&outbuf, fill + step, (size_t) size); + step += size; + need -= size; + if (need > 0) { + force_wrap(); + did_wrap = TRUE; + tag = 0; + } + } + } + if (need > 0) { + if (step) + strcpy_DYN(&outbuf, align); + strcpy_DYN(&outbuf, fill + step); + } + if (wrap_END(mode)) + strcpy_DYN(&outbuf, separator); + trailer = my_t; + force_wrap(); + + free(fill); + } else { + strcpy_DYN(&outbuf, src); + if (wrap_END(mode)) + strcpy_DYN(&outbuf, separator); + column += (int) strlen(src); + } +} + +static void +wrap_concat1(const char *src) +{ + int need = (int) strlen(src); + wrap_concat(src, need, w1ST | wEND); +} + +static void +wrap_concat3(const char *name, const char *eqls, const char *value) +{ + int nlen = (int) strlen(name); + int elen = (int) strlen(eqls); + int vlen = (int) strlen(value); + + wrap_concat(name, nlen + elen + vlen, w1ST); + wrap_concat(eqls, elen + vlen, w2ND); + wrap_concat(value, vlen, wEND); +} + +#define IGNORE_SEP_TRAIL(first,last,sep_trail) \ + if ((size_t)(last - first) > sizeof(sep_trail)-1 \ + && !strncmp(first, sep_trail, sizeof(sep_trail)-1)) \ + first += sizeof(sep_trail)-2 + +/* Returns the nominal length of the buffer assuming it is termcap format, + * i.e., the continuation sequence is treated as a single character ":". + * + * There are several implementations of termcap which read the text into a + * fixed-size buffer. Generally they strip the newlines from the text, but may + * not do it until after the buffer is read. Also, "tc=" resolution may be + * expanded in the same buffer. This function is useful for measuring the size + * of the best fixed-buffer implementation; the worst case may be much worse. + */ +#ifdef TEST_TERMCAP_LENGTH +static int +termcap_length(const char *src) +{ + static const char pattern[] = ":\\\n\t:"; + + int len = 0; + const char *const t = src + strlen(src); + + while (*src != '\0') { + IGNORE_SEP_TRAIL(src, t, pattern); + src++; + len++; + } + return len; +} +#else +#define termcap_length(src) strlen(src) +#endif + +static void +indent_DYN(DYNBUF * buffer, int level) +{ + int n; + + for (n = 0; n < level; n++) + strncpy_DYN(buffer, "\t", (size_t) 1); +} + +/* + * Check if the current line which was begun consists only of a tab and the + * given leading text. + */ +static bool +leading_DYN(DYNBUF * buffer, const char *leading) +{ + bool result = FALSE; + size_t need = strlen(leading); + if (buffer->used > need) { + need = buffer->used - need; + if (!strcmp(buffer->text + need, leading)) { + result = TRUE; + while (--need != 0) { + if (buffer->text[need] == '\n') { + break; + } + if (buffer->text[need] != '\t') { + result = FALSE; + break; + } + } + } + } + return result; +} + +bool +has_params(const char *src, bool formatting) +{ + bool result = FALSE; + int len = (int) strlen(src); + int n; + bool ifthen = FALSE; + bool params = FALSE; + + for (n = 0; n < len - 1; ++n) { + if (!strncmp(src + n, "%p", (size_t) 2)) { + params = TRUE; + } else if (!strncmp(src + n, "%;", (size_t) 2)) { + ifthen = TRUE; + result = params; + break; + } + } + if (!ifthen) { + if (formatting) { + result = ((len > 50) && params); + } else { + result = params; + } + } + return result; +} + +static char * +fmt_complex(TERMTYPE2 *tterm, const char *capability, char *src, int level) +{ + bool percent = FALSE; + bool params = has_params(src, TRUE); + + while (*src != '\0') { + switch (*src) { + case '^': + percent = FALSE; + strncpy_DYN(&tmpbuf, src++, (size_t) 1); + break; + case '\\': + percent = FALSE; + strncpy_DYN(&tmpbuf, src++, (size_t) 1); + break; + case '%': + percent = TRUE; + break; + case '?': /* "if" */ + case 't': /* "then" */ + case 'e': /* "else" */ + if (percent) { + percent = FALSE; + tmpbuf.text[tmpbuf.used - 1] = '\n'; + /* treat a "%e" as else-if, on the same level */ + if (*src == 'e') { + indent_DYN(&tmpbuf, level); + strncpy_DYN(&tmpbuf, "%", (size_t) 1); + strncpy_DYN(&tmpbuf, src, (size_t) 1); + src++; + params = has_params(src, TRUE); + if (!params && *src != '\0' && *src != '%') { + strncpy_DYN(&tmpbuf, "\n", (size_t) 1); + indent_DYN(&tmpbuf, level + 1); + } + } else { + indent_DYN(&tmpbuf, level + 1); + strncpy_DYN(&tmpbuf, "%", (size_t) 1); + strncpy_DYN(&tmpbuf, src, (size_t) 1); + if (*src++ == '?') { + src = fmt_complex(tterm, capability, src, level + 1); + if (*src != '\0' && *src != '%') { + strncpy_DYN(&tmpbuf, "\n", (size_t) 1); + indent_DYN(&tmpbuf, level + 1); + } + } else if (level == 1) { + if (checking) + _nc_warning("%s: %%%c without %%? in %s", + _nc_first_name(tterm->term_names), + *src, capability); + } + } + continue; + } + break; + case ';': /* "endif" */ + if (percent) { + percent = FALSE; + if (level > 1) { + tmpbuf.text[tmpbuf.used - 1] = '\n'; + indent_DYN(&tmpbuf, level); + strncpy_DYN(&tmpbuf, "%", (size_t) 1); + strncpy_DYN(&tmpbuf, src++, (size_t) 1); + if (src[0] == '%' + && src[1] != '\0' + && (strchr("?e;", src[1])) == 0) { + tmpbuf.text[tmpbuf.used++] = '\n'; + indent_DYN(&tmpbuf, level); + } + return src; + } + if (checking) + _nc_warning("%s: %%; without %%? in %s", + _nc_first_name(tterm->term_names), + capability); + } + break; + case 'p': + if (percent && params && !leading_DYN(&tmpbuf, "%")) { + tmpbuf.text[tmpbuf.used - 1] = '\n'; + indent_DYN(&tmpbuf, level + 1); + strncpy_DYN(&tmpbuf, "%", (size_t) 1); + } + params = FALSE; + percent = FALSE; + break; + case ' ': + strncpy_DYN(&tmpbuf, "\\s", (size_t) 2); + ++src; + continue; + default: + percent = FALSE; + break; + } + strncpy_DYN(&tmpbuf, src++, (size_t) 1); + } + return src; +} + +/* + * Make "large" numbers a little easier to read by showing them in hexadecimal + * if they are "close" to a power of two. + */ +static const char * +number_format(int value) +{ + const char *result = "%d"; + + if ((outform != F_TERMCAP) && (value > 255)) { + unsigned long lv = (unsigned long) value; + int bits = sizeof(unsigned long) * 8; + int nn; + + for (nn = 8; nn < bits; ++nn) { + unsigned long mm; + + mm = 1UL << nn; + if ((mm - 16) <= lv && (mm + 16) > lv) { + result = "%#x"; + break; + } + } + } + return result; +} + +#define SAME_CAP(n,cap) (&tterm->Strings[n] == &cap) +#define EXTRA_CAP 20 + +int +fmt_entry(TERMTYPE2 *tterm, + PredFunc pred, + int content_only, + int suppress_untranslatable, + int infodump, + int numbers) +{ + PredIdx i, j; + char buffer[MAX_TERMINFO_LENGTH + EXTRA_CAP]; + NCURSES_CONST char *name; + int predval, len; + PredIdx num_bools = 0; + PredIdx num_values = 0; + PredIdx num_strings = 0; + bool outcount = 0; + +#define WRAP_CONCAT1(s) wrap_concat1(s); outcount = TRUE +#define WRAP_CONCAT WRAP_CONCAT1(buffer) + + len = 12; /* terminfo file-header */ + + if (pred == 0) { + cur_type = tterm; + pred = dump_predicate; + } + + strcpy_DYN(&outbuf, 0); + if (content_only) { + column = indent; /* FIXME: workaround to prevent empty lines */ + } else { + strcpy_DYN(&outbuf, tterm->term_names); + + /* + * Colon is legal in terminfo descriptions, but not in termcap. + */ + if (!infodump) { + char *p = outbuf.text; + while (*p) { + if (*p == ':') { + *p = '='; + } + ++p; + } + } + strcpy_DYN(&outbuf, separator); + column = (int) outbuf.used; + if (height > 1) + force_wrap(); + } + + for_each_boolean(j, tterm) { + i = BoolIndirect(j); + name = ExtBoolname(tterm, (int) i, bool_names); + assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); + + if (!version_filter(BOOLEAN, i)) + continue; + else if (isObsolete(outform, name)) + continue; + + predval = pred(BOOLEAN, i); + if (predval != FAIL) { + _nc_STRCPY(buffer, name, sizeof(buffer)); + if (predval <= 0) + _nc_STRCAT(buffer, "@", sizeof(buffer)); + else if (i + 1 > num_bools) + num_bools = i + 1; + WRAP_CONCAT; + } + } + + if (column != indent && height > 1) + force_wrap(); + + for_each_number(j, tterm) { + i = NumIndirect(j); + name = ExtNumname(tterm, (int) i, num_names); + assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); + + if (!version_filter(NUMBER, i)) + continue; + else if (isObsolete(outform, name)) + continue; + + predval = pred(NUMBER, i); + if (predval != FAIL) { + if (tterm->Numbers[i] < 0) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%s@", name); + } else { + size_t nn; + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%s#", name); + nn = strlen(buffer); + _nc_SPRINTF(buffer + nn, _nc_SLIMIT(sizeof(buffer) - nn) + number_format(tterm->Numbers[i]), + tterm->Numbers[i]); + if (i + 1 > num_values) + num_values = i + 1; + } + WRAP_CONCAT; + } + } + + if (column != indent && height > 1) + force_wrap(); + + len += (int) (num_bools + + num_values * 2 + + strlen(tterm->term_names) + 1); + if (len & 1) + len++; + +#undef CUR +#define CUR tterm-> + if (outform == F_TERMCAP) { + if (VALID_STRING(termcap_reset)) { + if (VALID_STRING(init_3string) + && !strcmp(init_3string, termcap_reset)) + DISCARD(init_3string); + + if (VALID_STRING(reset_2string) + && !strcmp(reset_2string, termcap_reset)) + DISCARD(reset_2string); + } + } + + for_each_string(j, tterm) { + char *capability; + i = StrIndirect(j); + name = ExtStrname(tterm, (int) i, str_names); + assert(strlen(name) < sizeof(buffer) - EXTRA_CAP); + + capability = tterm->Strings[i]; + + if (!version_filter(STRING, i)) + continue; + else if (isObsolete(outform, name)) + continue; + +#if NCURSES_XNAMES + /* + * Extended names can be longer than 2 characters, but termcap programs + * cannot read those (filter them out). + */ + if (outform == F_TERMCAP && (strlen(name) > 2)) + continue; +#endif + + if (outform == F_TERMCAP) { + /* + * Some older versions of vi want rmir/smir to be defined + * for ich/ich1 to work. If they're not defined, force + * them to be output as defined and empty. + */ + if (PRESENT(insert_character) || PRESENT(parm_ich)) { + if (SAME_CAP(i, enter_insert_mode) + && enter_insert_mode == ABSENT_STRING) { + _nc_STRCPY(buffer, "im=", sizeof(buffer)); + WRAP_CONCAT; + continue; + } + + if (SAME_CAP(i, exit_insert_mode) + && exit_insert_mode == ABSENT_STRING) { + _nc_STRCPY(buffer, "ei=", sizeof(buffer)); + WRAP_CONCAT; + continue; + } + } + /* + * termcap applications such as screen will be confused if sgr0 + * is translated to a string containing rmacs. Filter that out. + */ + if (PRESENT(exit_attribute_mode)) { + if (SAME_CAP(i, exit_attribute_mode)) { + char *trimmed_sgr0; + char *my_sgr = set_attributes; + + set_attributes = save_sgr; + + trimmed_sgr0 = _nc_trim_sgr0(tterm); + if (strcmp(capability, trimmed_sgr0)) { + capability = trimmed_sgr0; + } else { + if (trimmed_sgr0 != exit_attribute_mode) + free(trimmed_sgr0); + } + + set_attributes = my_sgr; + } + } + } + + predval = pred(STRING, i); + buffer[0] = '\0'; + + if (predval != FAIL) { + if (VALID_STRING(capability) + && i + 1 > num_strings) + num_strings = i + 1; + + if (!VALID_STRING(capability)) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%s@", name); + WRAP_CONCAT; + } else if (TcOutput()) { + char *srccap = _nc_tic_expand(capability, TRUE, numbers); + int params = ((i < (int) SIZEOF(parametrized)) + ? parametrized[i] + : ((*srccap == 'k') + ? 0 + : has_params(srccap, FALSE))); + char *cv = _nc_infotocap(name, srccap, params); + + if (cv == 0) { + if (outform == F_TCONVERR) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%s=!!! %s WILL NOT CONVERT !!!", + name, srccap); + WRAP_CONCAT; + } else if (suppress_untranslatable) { + continue; + } else { + char *s = srccap, *d = buffer; + int need = 3 + (int) strlen(name); + while ((*d = *s++) != 0) { + if ((d - buffer + 2) >= (int) sizeof(buffer)) { + fprintf(stderr, + "%s: value for %s is too long\n", + _nc_progname, + name); + *d = '\0'; + break; + } + if (*d == ':') { + *d++ = '\\'; + *d = ':'; + } else if (*d == '\\') { + if ((*++d = *s++) == '\0') + break; + } + d++; + *d = '\0'; + } + need += (int) (d - buffer); + wrap_concat("..", need, w1ST | wERR); + need -= 2; + wrap_concat(name, need, wOFF | wERR); + need -= (int) strlen(name); + wrap_concat("=", need, w2ND | wERR); + need -= 1; + wrap_concat(buffer, need, wEND | wERR); + outcount = TRUE; + } + } else { + wrap_concat3(name, "=", cv); + } + len += (int) strlen(capability) + 1; + } else { + char *src = _nc_tic_expand(capability, + outform == F_TERMINFO, numbers); + + strcpy_DYN(&tmpbuf, 0); + strcpy_DYN(&tmpbuf, name); + strcpy_DYN(&tmpbuf, "="); + if (pretty + && (outform == F_TERMINFO + || outform == F_VARIABLE)) { + fmt_complex(tterm, name, src, 1); + } else { + strcpy_DYN(&tmpbuf, src); + } + len += (int) strlen(capability) + 1; + WRAP_CONCAT1(tmpbuf.text); + } + } + /* e.g., trimmed_sgr0 */ + if (VALID_STRING(capability) && + capability != tterm->Strings[i]) + free(capability); + } + len += (int) (num_strings * 2); + + /* + * This piece of code should be an effective inverse of the functions + * postprocess_terminfo() and postprocess_terminfo() in parse_entry.c. + * Much more work should be done on this to support dumping termcaps. + */ + if (tversion == V_HPUX) { + if (VALID_STRING(memory_lock)) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "meml=%s", memory_lock); + WRAP_CONCAT; + } + if (VALID_STRING(memory_unlock)) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "memu=%s", memory_unlock); + WRAP_CONCAT; + } + } else if (tversion == V_AIX) { + if (VALID_STRING(acs_chars)) { + bool box_ok = TRUE; + const char *acstrans = "lqkxjmwuvtn"; + const char *cp; + char *tp, *sp, boxchars[11]; + + tp = boxchars; + for (cp = acstrans; *cp; cp++) { + sp = (strchr) (acs_chars, *cp); + if (sp) + *tp++ = sp[1]; + else { + box_ok = FALSE; + break; + } + } + tp[0] = '\0'; + + if (box_ok) { + char *tmp = _nc_tic_expand(boxchars, + (outform == F_TERMINFO), + numbers); + _nc_STRCPY(buffer, "box1=", sizeof(buffer)); + while (*tmp != '\0') { + size_t have = strlen(buffer); + size_t next = strlen(tmp); + size_t want = have + next + 1; + size_t last = next; + char save = '\0'; + + /* + * If the expanded string is too long for the buffer, + * chop it off and save the location where we chopped it. + */ + if (want >= sizeof(buffer)) { + save = tmp[last]; + tmp[last] = '\0'; + } + _nc_STRCAT(buffer, tmp, sizeof(buffer)); + + /* + * If we chopped the buffer, replace the missing piece and + * shift everything to append the remainder. + */ + if (save != '\0') { + next = 0; + tmp[last] = save; + while ((tmp[next] = tmp[last + next]) != '\0') { + ++next; + } + } else { + break; + } + } + WRAP_CONCAT; + } + } + } + + /* + * kludge: trim off trailer to avoid an extra blank line + * in infocmp -u output when there are no string differences + */ + if (outcount) { + bool trimmed = FALSE; + j = (PredIdx) outbuf.used; + if (wrapped && did_wrap) { + /* EMPTY */ ; + } else if (j >= 2 + && outbuf.text[j - 1] == '\t' + && outbuf.text[j - 2] == '\n') { + outbuf.used -= 2; + trimmed = TRUE; + } else if (j >= 4 + && outbuf.text[j - 1] == ':' + && outbuf.text[j - 2] == '\t' + && outbuf.text[j - 3] == '\n' + && outbuf.text[j - 4] == '\\') { + outbuf.used -= 4; + trimmed = TRUE; + } + if (trimmed) { + outbuf.text[outbuf.used] = '\0'; + column = oldcol; + strcpy_DYN(&outbuf, " "); + } + } +#if 0 + fprintf(stderr, "num_bools = %d\n", num_bools); + fprintf(stderr, "num_values = %d\n", num_values); + fprintf(stderr, "num_strings = %d\n", num_strings); + fprintf(stderr, "term_names=%s, len=%d, strlen(outbuf)=%d, outbuf=%s\n", + tterm->term_names, len, outbuf.used, outbuf.text); +#endif + /* + * Here's where we use infodump to trigger a more stringent length check + * for termcap-translation purposes. + * Return the length of the raw entry, without tc= expansions, + * It gives an idea of which entries are deadly to even *scan past*, + * as opposed to *use*. + */ + return (infodump ? len : (int) termcap_length(outbuf.text)); +} + +static bool +kill_string(TERMTYPE2 *tterm, char *cap) +{ + unsigned n; + for (n = 0; n < NUM_STRINGS(tterm); ++n) { + if (cap == tterm->Strings[n]) { + tterm->Strings[n] = ABSENT_STRING; + return TRUE; + } + } + return FALSE; +} + +static char * +find_string(TERMTYPE2 *tterm, char *name) +{ + PredIdx n; + for (n = 0; n < NUM_STRINGS(tterm); ++n) { + if (version_filter(STRING, n) + && !strcmp(name, strnames[n])) { + char *cap = tterm->Strings[n]; + if (VALID_STRING(cap)) { + return cap; + } + break; + } + } + return ABSENT_STRING; +} + +/* + * This is used to remove function-key labels from a termcap entry to + * make it smaller. + */ +static int +kill_labels(TERMTYPE2 *tterm, int target) +{ + int n; + int result = 0; + char name[20]; + + for (n = 0; n <= 10; ++n) { + char *cap; + + _nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "lf%d", n); + cap = find_string(tterm, name); + if (VALID_STRING(cap) + && kill_string(tterm, cap)) { + target -= (int) (strlen(cap) + 5); + ++result; + if (target < 0) + break; + } + } + return result; +} + +/* + * This is used to remove function-key definitions from a termcap entry to + * make it smaller. + */ +static int +kill_fkeys(TERMTYPE2 *tterm, int target) +{ + int n; + int result = 0; + char name[20]; + + for (n = 60; n >= 0; --n) { + char *cap; + + _nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "kf%d", n); + cap = find_string(tterm, name); + if (VALID_STRING(cap) + && kill_string(tterm, cap)) { + target -= (int) (strlen(cap) + 5); + ++result; + if (target < 0) + break; + } + } + return result; +} + +/* + * Check if the given acsc string is a 1-1 mapping, i.e., just-like-vt100. + * Also, since this is for termcap, we only care about the line-drawing map. + */ +#define isLine(c) (strchr("lmkjtuvwqxn", c) != 0) + +static bool +one_one_mapping(const char *mapping) +{ + bool result = TRUE; + + if (VALID_STRING(mapping)) { + int n = 0; + while (mapping[n] != '\0' && mapping[n + 1] != '\0') { + if (isLine(mapping[n]) && + mapping[n] != mapping[n + 1]) { + result = FALSE; + break; + } + n += 2; + } + } + return result; +} + +#define FMT_ENTRY() \ + fmt_entry(tterm, pred, \ + 0, \ + suppress_untranslatable, \ + infodump, numbers) + +#define SHOW_WHY PRINTF + +static bool +purged_acs(TERMTYPE2 *tterm) +{ + bool result = FALSE; + + if (VALID_STRING(acs_chars)) { + if (!one_one_mapping(acs_chars)) { + enter_alt_charset_mode = ABSENT_STRING; + exit_alt_charset_mode = ABSENT_STRING; + SHOW_WHY("# (rmacs/smacs removed for consistency)\n"); + } + result = TRUE; + } + return result; +} + +static void +encode_b64(char *target, char *source, unsigned state, int *saved) +{ + /* RFC-4648 */ + static const char data[] = + "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" "-_"; + int ch = UChar(source[state]); + + switch (state % 3) { + case 0: + *target++ = data[(ch >> 2) & 077]; + *saved = (ch << 4); + break; + case 1: + *target++ = data[((ch >> 4) | *saved) & 077]; + *saved = (ch << 2); + break; + case 2: + *target++ = data[((ch >> 6) | *saved) & 077]; + *target++ = data[ch & 077]; + *saved = 0; + break; + } + *target = '\0'; +} + +/* + * Dump a single entry. + */ +void +dump_entry(TERMTYPE2 *tterm, + int suppress_untranslatable, + int limited, + int numbers, + PredFunc pred) +{ + TERMTYPE2 save_tterm; + int critlen; + const char *legend; + bool infodump; + + if (quickdump) { + char bigbuf[65536]; + unsigned offset = 0; + + separator = ""; + trailer = "\n"; + indent = 0; + + if (_nc_write_object(tterm, bigbuf, &offset, sizeof(bigbuf)) == OK) { + char numbuf[80]; + unsigned n; + + if (quickdump & 1) { + if (outbuf.used) + wrap_concat1("\n"); + wrap_concat1("hex:"); + for (n = 0; n < offset; ++n) { + _nc_SPRINTF(numbuf, _nc_SLIMIT(sizeof(numbuf)) + "%02X", UChar(bigbuf[n])); + wrap_concat1(numbuf); + } + } + if (quickdump & 2) { + static char padding[] = + {0, 0}; + int value = 0; + + if (outbuf.used) + wrap_concat1("\n"); + wrap_concat1("b64:"); + for (n = 0; n < offset; ++n) { + encode_b64(numbuf, bigbuf, n, &value); + wrap_concat1(numbuf); + } + switch (n % 3) { + case 0: + break; + case 1: + encode_b64(numbuf, padding, 1, &value); + wrap_concat1(numbuf); + wrap_concat1("=="); + break; + case 2: + encode_b64(numbuf, padding, 1, &value); + wrap_concat1(numbuf); + wrap_concat1("="); + break; + } + } + } + return; + } + + if (TcOutput()) { + critlen = MAX_TERMCAP_LENGTH; + legend = "older termcap"; + infodump = FALSE; + set_obsolete_termcaps(tterm); + } else { + critlen = MAX_TERMINFO_LENGTH; + legend = "terminfo"; + infodump = TRUE; + } + + save_sgr = set_attributes; + + if ((FMT_ENTRY() > critlen) + && limited) { + + save_tterm = *tterm; + if (!suppress_untranslatable) { + SHOW_WHY("# (untranslatable capabilities removed to fit entry within %d bytes)\n", + critlen); + suppress_untranslatable = TRUE; + } + if (FMT_ENTRY() > critlen) { + /* + * We pick on sgr because it is a nice long string capability that + * is really just an optimization hack. Another good candidate is + * acsc since it is both long and unused by BSD termcap. + */ + bool changed = FALSE; + +#if NCURSES_XNAMES + /* + * Extended names are most likely function-key definitions. Drop + * those first. + */ + unsigned n; + for (n = STRCOUNT; n < NUM_STRINGS(tterm); n++) { + const char *name = ExtStrname(tterm, (int) n, strnames); + + if (VALID_STRING(tterm->Strings[n])) { + set_attributes = ABSENT_STRING; + /* we remove long names anyway - only report the short */ + if (strlen(name) <= 2) { + SHOW_WHY("# (%s removed to fit entry within %d bytes)\n", + name, + critlen); + } + changed = TRUE; + if (FMT_ENTRY() <= critlen) + break; + } + } +#endif + if (VALID_STRING(set_attributes)) { + set_attributes = ABSENT_STRING; + SHOW_WHY("# (sgr removed to fit entry within %d bytes)\n", + critlen); + changed = TRUE; + } + if (!changed || (FMT_ENTRY() > critlen)) { + if (purged_acs(tterm)) { + acs_chars = ABSENT_STRING; + SHOW_WHY("# (acsc removed to fit entry within %d bytes)\n", + critlen); + changed = TRUE; + } + } + if (!changed || (FMT_ENTRY() > critlen)) { + int oldversion = tversion; + int len; + + tversion = V_BSD; + SHOW_WHY("# (terminfo-only capabilities suppressed to fit entry within %d bytes)\n", + critlen); + + len = FMT_ENTRY(); + if (len > critlen + && kill_labels(tterm, len - critlen)) { + SHOW_WHY("# (some labels capabilities suppressed to fit entry within %d bytes)\n", + critlen); + len = FMT_ENTRY(); + } + if (len > critlen + && kill_fkeys(tterm, len - critlen)) { + SHOW_WHY("# (some function-key capabilities suppressed to fit entry within %d bytes)\n", + critlen); + len = FMT_ENTRY(); + } + if (len > critlen) { + (void) fprintf(stderr, + "%s: %s entry is %d bytes long\n", + _nc_progname, + _nc_first_name(tterm->term_names), + len); + SHOW_WHY("# WARNING: this entry, %d bytes long, may core-dump %s libraries!\n", + len, legend); + } + tversion = oldversion; + } + set_attributes = save_sgr; + *tterm = save_tterm; + } + } else if (!version_filter(STRING, STR_IDX(acs_chars))) { + save_tterm = *tterm; + if (purged_acs(tterm)) { + (void) FMT_ENTRY(); + } + *tterm = save_tterm; + } +} + +void +dump_uses(const char *name, bool infodump) +/* dump "use=" clauses in the appropriate format */ +{ + char buffer[MAX_TERMINFO_LENGTH]; + + if (TcOutput()) + trim_trailing(); + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%s%s", infodump ? "use=" : "tc=", name); + wrap_concat1(buffer); +} + +int +show_entry(void) +{ + /* + * Trim any remaining whitespace. + */ + if (outbuf.used != 0) { + bool infodump = !TcOutput(); + char delim = (char) (infodump ? ',' : ':'); + int j; + + for (j = (int) outbuf.used - 1; j > 0; --j) { + char ch = outbuf.text[j]; + if (ch == '\n') { + ; + } else if (isspace(UChar(ch))) { + outbuf.used = (size_t) j; + } else if (!infodump && ch == '\\') { + outbuf.used = (size_t) j; + } else if (ch == delim && (j == 0 || outbuf.text[j - 1] != '\\')) { + outbuf.used = (size_t) (j + 1); + } else { + break; + } + } + outbuf.text[outbuf.used] = '\0'; + } + if (outbuf.text != 0) { + (void) fputs(outbuf.text, stdout); + putchar('\n'); + } + return (int) outbuf.used; +} + +void +compare_entry(PredHook hook, + TERMTYPE2 *tp GCC_UNUSED, + bool quiet) +/* compare two entries */ +{ + PredIdx i, j; + NCURSES_CONST char *name; + + if (!quiet) + fputs(" comparing booleans.\n", stdout); + for_each_boolean(j, tp) { + i = BoolIndirect(j); + name = ExtBoolname(tp, (int) i, bool_names); + + if (isObsolete(outform, name)) + continue; + + (*hook) (CMP_BOOLEAN, i, name); + } + + if (!quiet) + fputs(" comparing numbers.\n", stdout); + for_each_number(j, tp) { + i = NumIndirect(j); + name = ExtNumname(tp, (int) i, num_names); + + if (isObsolete(outform, name)) + continue; + + (*hook) (CMP_NUMBER, i, name); + } + + if (!quiet) + fputs(" comparing strings.\n", stdout); + for_each_string(j, tp) { + i = StrIndirect(j); + name = ExtStrname(tp, (int) i, str_names); + + if (isObsolete(outform, name)) + continue; + + (*hook) (CMP_STRING, i, name); + } + + /* (void) fputs(" comparing use entries.\n", stdout); */ + (*hook) (CMP_USE, 0, "use"); + +} + +#define NOTSET(s) ((s) == 0) + +/* + * This bit of legerdemain turns all the terminfo variable names into + * references to locations in the arrays Booleans, Numbers, and Strings --- + * precisely what's needed. + */ +#undef CUR +#define CUR tp-> + +static void +set_obsolete_termcaps(TERMTYPE2 *tp) +{ +#include "capdefaults.c" +} + +/* + * Convert an alternate-character-set string to canonical form: sorted and + * unique. + */ +void +repair_acsc(TERMTYPE2 *tp) +{ + if (VALID_STRING(acs_chars)) { + size_t n; + char mapped[256]; + unsigned source; + unsigned target; + bool fix_needed = FALSE; + + for (n = 0, source = 0; acs_chars[n] != 0; n++) { + target = UChar(acs_chars[n]); + if (source >= target) { + fix_needed = TRUE; + break; + } + source = target; + if (acs_chars[n + 1]) + n++; + } + + if (fix_needed) { + size_t m; + char extra = 0; + + memset(mapped, 0, sizeof(mapped)); + for (n = 0; acs_chars[n] != 0; n++) { + source = UChar(acs_chars[n]); + if ((target = (unsigned char) acs_chars[n + 1]) != 0) { + mapped[source] = (char) target; + n++; + } else { + extra = (char) source; + } + } + for (n = m = 0; n < sizeof(mapped); n++) { + if (mapped[n]) { + acs_chars[m++] = (char) n; + acs_chars[m++] = mapped[n]; + } + } + if (extra) + acs_chars[m++] = extra; /* garbage in, garbage out */ + acs_chars[m] = 0; + } + } +} diff --git a/deps/ncurses-5.9/progs/dump_entry.h b/deps/ncurses-6.3/progs/dump_entry.h similarity index 81% rename from deps/ncurses-5.9/progs/dump_entry.h rename to deps/ncurses-6.3/progs/dump_entry.h index b99a37a..39e856f 100644 --- a/deps/ncurses-5.9/progs/dump_entry.h +++ b/deps/ncurses-6.3/progs/dump_entry.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -32,9 +33,8 @@ * and: Thomas E. Dickey 1996-on * ****************************************************************************/ - /* - * $Id: dump_entry.h,v 1.30 2008/07/12 20:23:03 tom Exp $ + * $Id: dump_entry.h,v 1.44 2021/04/18 19:56:09 tom Exp $ * * Dump control definitions and variables */ @@ -42,6 +42,11 @@ #ifndef DUMP_ENTRY_H #define DUMP_ENTRY_H 1 +#define NCURSES_OPAQUE 0 +#define NCURSES_INTERNALS 1 +#include <curses.h> +#include <term.h> + /* capability output formats */ #define F_TERMINFO 0 /* use terminfo names */ #define F_VARIABLE 1 /* use C variable names */ @@ -62,18 +67,27 @@ #define CMP_STRING 2 /* comparison on strings */ #define CMP_USE 3 /* comparison on use capabilities */ +#ifndef _TERMSORT_H typedef unsigned PredType; typedef unsigned PredIdx; -typedef int (*PredFunc)(PredType, PredIdx); +#endif + +typedef int (*PredFunc) (PredType, PredIdx); +typedef void (*PredHook) (PredType, PredIdx, const char *); extern NCURSES_CONST char *nametrans(const char *); -extern int fmt_entry(TERMTYPE *, PredFunc, bool, bool, bool, int); +extern bool has_params(const char *, bool); +extern int fmt_entry(TERMTYPE2 *, PredFunc, int, int, int, int); extern int show_entry(void); -extern void compare_entry(void (*)(PredType, PredIdx, const char *), TERMTYPE *, bool); -extern void dump_entry(TERMTYPE *, bool, bool, int, PredFunc); -extern void dump_init(const char *, int, int, int, int, bool); +extern void compare_entry(PredHook, TERMTYPE2 *, bool); +extern void dump_entry(TERMTYPE2 *, int, int, int, PredFunc); +extern void dump_init(const char *, int, int, bool, int, int, unsigned, bool, + bool, int); extern void dump_uses(const char *, bool); -extern void repair_acsc(TERMTYPE * tp); +extern void repair_acsc(TERMTYPE2 *tp); + +#define L_CURL "{" +#define R_CURL "}" #define FAIL -1 diff --git a/deps/ncurses-6.3/progs/infocmp.c b/deps/ncurses-6.3/progs/infocmp.c new file mode 100644 index 0000000..d98c676 --- /dev/null +++ b/deps/ncurses-6.3/progs/infocmp.c @@ -0,0 +1,1963 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * infocmp.c -- decompile an entry, or compare two entries + * written by Eric S. Raymond + * and Thomas E Dickey + */ + +#include <progs.priv.h> + +#include <dump_entry.h> + +MODULE_ID("$Id: infocmp.c,v 1.151 2021/06/17 21:11:08 tom Exp $") + +#define MAX_STRING 1024 /* maximum formatted string */ + +const char *_nc_progname = "infocmp"; + +typedef char path[PATH_MAX]; + +/*************************************************************************** + * + * The following control variables, together with the contents of the + * terminfo entries, completely determine the actions of the program. + * + ***************************************************************************/ + +static ENTRY *entries; /* terminfo entries */ +static int termcount; /* count of terminal entries */ + +static bool limited = TRUE; /* "-r" option is not set */ +static bool quiet = FALSE; +static bool literal = FALSE; +static const char *bool_sep = ":"; +static const char *s_absent = "NULL"; +static const char *s_cancel = "NULL"; +static const char *tversion; /* terminfo version selected */ +static unsigned itrace; /* trace flag for debugging */ +static int mwidth = 60; +static int mheight = 65535; +static int numbers = 0; /* format "%'char'" to/from "%{number}" */ +static int outform = F_TERMINFO; /* output format */ +static int sortmode; /* sort_mode */ + +/* main comparison mode */ +static int compare; +#define C_DEFAULT 0 /* don't force comparison mode */ +#define C_DIFFERENCE 1 /* list differences between two terminals */ +#define C_COMMON 2 /* list common capabilities */ +#define C_NAND 3 /* list capabilities in neither terminal */ +#define C_USEALL 4 /* generate relative use-form entry */ +static bool ignorepads; /* ignore pad prefixes when diffing */ + +#if NO_LEAKS + +typedef struct { + ENTRY *head; + ENTRY *tail; +} ENTERED; + +static ENTERED *entered; + +#undef ExitProgram +static GCC_NORETURN void ExitProgram(int code); +/* prototype is to get gcc to accept the noreturn attribute */ +static void +ExitProgram(int code) +{ + int n; + + for (n = 0; n < termcount; ++n) { + ENTRY *new_head = _nc_head; + ENTRY *new_tail = _nc_tail; + _nc_head = entered[n].head; + _nc_tail = entered[n].tail; + _nc_free_entries(entered[n].head); + _nc_head = new_head; + _nc_tail = new_tail; + } + _nc_leaks_dump_entry(); + free(entries); + free(entered); + _nc_free_tic(code); +} +#endif + +static void +failed(const char *s) +{ + perror(s); + ExitProgram(EXIT_FAILURE); +} + +static char * +canonical_name(char *ptr, char *buf) +/* extract the terminal type's primary name */ +{ + char *bp; + + _nc_STRCPY(buf, ptr, NAMESIZE); + if ((bp = strchr(buf, '|')) != 0) + *bp = '\0'; + + return (buf); +} + +static bool +no_boolean(int value) +{ + bool result = (value == ABSENT_BOOLEAN); + if (!strcmp(s_absent, s_cancel)) + result = !VALID_BOOLEAN(value); + return result; +} + +static bool +no_numeric(int value) +{ + bool result = (value == ABSENT_NUMERIC); + if (!strcmp(s_absent, s_cancel)) + result = !VALID_NUMERIC(value); + return result; +} + +static bool +no_string(char *value) +{ + bool result = (value == ABSENT_STRING); + if (!strcmp(s_absent, s_cancel)) + result = !VALID_STRING(value); + return result; +} + +/*************************************************************************** + * + * Predicates for dump function + * + ***************************************************************************/ + +static int +capcmp(PredIdx idx, const char *s, const char *t) +/* capability comparison function */ +{ + if (!VALID_STRING(s) && !VALID_STRING(t)) + return (s != t); + else if (!VALID_STRING(s) || !VALID_STRING(t)) + return (1); + + if ((idx == acs_chars_index) || !ignorepads) + return (strcmp(s, t)); + else + return (_nc_capcmp(s, t)); +} + +static int +use_predicate(unsigned type, PredIdx idx) +/* predicate function to use for use decompilation */ +{ + ENTRY *ep; + + switch (type) { + case BOOLEAN: + { + int is_set = FALSE; + + /* + * This assumes that multiple use entries are supposed + * to contribute the logical or of their boolean capabilities. + * This is true if we take the semantics of multiple uses to + * be 'each capability gets the first non-default value found + * in the sequence of use entries'. + * + * Note that cancelled or absent booleans are stored as FALSE, + * unlike numbers and strings, whose cancelled/absent state is + * recorded in the terminfo database. + */ + for (ep = &entries[1]; ep < entries + termcount; ep++) + if (ep->tterm.Booleans[idx] == TRUE) { + is_set = entries[0].tterm.Booleans[idx]; + break; + } + if (is_set != entries[0].tterm.Booleans[idx]) + return (!is_set); + else + return (FAIL); + } + + case NUMBER: + { + int value = ABSENT_NUMERIC; + + /* + * We take the semantics of multiple uses to be 'each + * capability gets the first non-default value found + * in the sequence of use entries'. + */ + for (ep = &entries[1]; ep < entries + termcount; ep++) + if (VALID_NUMERIC(ep->tterm.Numbers[idx])) { + value = ep->tterm.Numbers[idx]; + break; + } + + if (value != entries[0].tterm.Numbers[idx]) + return (value != ABSENT_NUMERIC); + else + return (FAIL); + } + + case STRING: + { + char *termstr, *usestr = ABSENT_STRING; + + termstr = entries[0].tterm.Strings[idx]; + + /* + * We take the semantics of multiple uses to be 'each + * capability gets the first non-default value found + * in the sequence of use entries'. + */ + for (ep = &entries[1]; ep < entries + termcount; ep++) + if (ep->tterm.Strings[idx]) { + usestr = ep->tterm.Strings[idx]; + break; + } + + if (usestr == ABSENT_STRING && termstr == ABSENT_STRING) + return (FAIL); + else if (!usestr || !termstr || capcmp(idx, usestr, termstr)) + return (TRUE); + else + return (FAIL); + } + } + + return (FALSE); /* pacify compiler */ +} + +static bool +useeq(ENTRY * e1, ENTRY * e2) +/* are the use references in two entries equivalent? */ +{ + unsigned i, j; + + if (e1->nuses != e2->nuses) + return (FALSE); + + /* Ugh...this is quadratic again */ + for (i = 0; i < e1->nuses; i++) { + bool foundmatch = FALSE; + + /* search second entry for given use reference */ + for (j = 0; j < e2->nuses; j++) + if (!strcmp(e1->uses[i].name, e2->uses[j].name)) { + foundmatch = TRUE; + break; + } + + if (!foundmatch) + return (FALSE); + } + + return (TRUE); +} + +static bool +entryeq(TERMTYPE2 *t1, TERMTYPE2 *t2) +/* are two entries equivalent? */ +{ + unsigned i; + + for (i = 0; i < NUM_BOOLEANS(t1); i++) + if (t1->Booleans[i] != t2->Booleans[i]) + return (FALSE); + + for (i = 0; i < NUM_NUMBERS(t1); i++) + if (t1->Numbers[i] != t2->Numbers[i]) + return (FALSE); + + for (i = 0; i < NUM_STRINGS(t1); i++) + if (capcmp((PredIdx) i, t1->Strings[i], t2->Strings[i])) + return (FALSE); + + return (TRUE); +} + +#define TIC_EXPAND(result) _nc_tic_expand(result, outform==F_TERMINFO, numbers) + +static void +print_uses(ENTRY * ep, FILE *fp) +/* print an entry's use references */ +{ + if (!ep->nuses) { + fputs("NULL", fp); + } else { + unsigned i; + + for (i = 0; i < ep->nuses; i++) { + fputs(ep->uses[i].name, fp); + if (i < ep->nuses - 1) + fputs(" ", fp); + } + } +} + +static const char * +dump_boolean(int val) +/* display the value of a boolean capability */ +{ + switch (val) { + case ABSENT_BOOLEAN: + return (s_absent); + case CANCELLED_BOOLEAN: + return (s_cancel); + case FALSE: + return ("F"); + case TRUE: + return ("T"); + default: + return ("?"); + } +} + +static void +dump_numeric(int val, char *buf) +/* display the value of a numeric capability */ +{ + switch (val) { + case ABSENT_NUMERIC: + _nc_STRCPY(buf, s_absent, MAX_STRING); + break; + case CANCELLED_NUMERIC: + _nc_STRCPY(buf, s_cancel, MAX_STRING); + break; + default: + _nc_SPRINTF(buf, _nc_SLIMIT(MAX_STRING) "%d", val); + break; + } +} + +static void +dump_string(char *val, char *buf) +/* display the value of a string capability */ +{ + if (val == ABSENT_STRING) + _nc_STRCPY(buf, s_absent, MAX_STRING); + else if (val == CANCELLED_STRING) + _nc_STRCPY(buf, s_cancel, MAX_STRING); + else { + _nc_SPRINTF(buf, _nc_SLIMIT(MAX_STRING) + "'%.*s'", MAX_STRING - 3, TIC_EXPAND(val)); + } +} + +/* + * Show "comparing..." message for the given terminal names. + */ +static void +show_comparing(char **names) +{ + if (itrace) { + switch (compare) { + case C_DIFFERENCE: + (void) fprintf(stderr, "%s: dumping differences\n", _nc_progname); + break; + + case C_COMMON: + (void) fprintf(stderr, "%s: dumping common capabilities\n", _nc_progname); + break; + + case C_NAND: + (void) fprintf(stderr, "%s: dumping differences\n", _nc_progname); + break; + } + } + if (*names) { + printf("comparing %s", *names++); + if (*names) { + printf(" to %s", *names++); + while (*names) { + printf(", %s", *names++); + } + } + printf(".\n"); + } +} + +/* + * ncurses stores two types of non-standard capabilities: + * a) capabilities listed past the "STOP-HERE" comment in the Caps file. + * These are used in the terminfo source file to provide data for termcaps, + * e.g., when there is no equivalent capability in terminfo, as well as for + * widely-used non-standard capabilities. + * b) user-definable capabilities, via "tic -x". + * + * However, if "-x" is omitted from the tic command, both types of + * non-standard capability are not loaded into the terminfo database. This + * macro is used for limit-checks against the symbols that tic uses to omit + * the two types of non-standard entry. + */ +#if NCURSES_XNAMES +#define check_user_definable(n,limit) if (!_nc_user_definable && (n) > (limit)) break +#else +#define check_user_definable(n,limit) if ((n) > (limit)) break +#endif + +/* + * Use these macros to simplify loops on C_COMMON and C_NAND: + */ +#define for_each_entry() while (entries[extra].tterm.term_names) +#define next_entry (&(entries[extra++].tterm)) + +static void +compare_predicate(PredType type, PredIdx idx, const char *name) +/* predicate function to use for entry difference reports */ +{ + ENTRY *e1 = &entries[0]; + ENTRY *e2 = &entries[1]; + char buf1[MAX_STRING]; + char buf2[MAX_STRING]; + int b1, b2; + int n1, n2; + char *s1, *s2; + bool found; + int extra = 1; + + switch (type) { + case CMP_BOOLEAN: + check_user_definable(idx, BOOLWRITE); + b1 = e1->tterm.Booleans[idx]; + switch (compare) { + case C_DIFFERENCE: + b2 = next_entry->Booleans[idx]; + if (!(no_boolean(b1) && no_boolean(b2)) && (b1 != b2)) + (void) printf("\t%s: %s%s%s.\n", + name, + dump_boolean(b1), + bool_sep, + dump_boolean(b2)); + break; + + case C_COMMON: + if (b1 != ABSENT_BOOLEAN) { + found = TRUE; + for_each_entry() { + b2 = next_entry->Booleans[idx]; + if (b1 != b2) { + found = FALSE; + break; + } + } + if (found) { + (void) printf("\t%s= %s.\n", name, dump_boolean(b1)); + } + } + break; + + case C_NAND: + if (b1 == ABSENT_BOOLEAN) { + found = TRUE; + for_each_entry() { + b2 = next_entry->Booleans[idx]; + if (b1 != b2) { + found = FALSE; + break; + } + } + if (found) { + (void) printf("\t!%s.\n", name); + } + } + break; + } + break; + + case CMP_NUMBER: + check_user_definable(idx, NUMWRITE); + n1 = e1->tterm.Numbers[idx]; + switch (compare) { + case C_DIFFERENCE: + n2 = next_entry->Numbers[idx]; + if (!(no_numeric(n1) && no_numeric(n2)) && n1 != n2) { + dump_numeric(n1, buf1); + dump_numeric(n2, buf2); + (void) printf("\t%s: %s, %s.\n", name, buf1, buf2); + } + break; + + case C_COMMON: + if (n1 != ABSENT_NUMERIC) { + found = TRUE; + for_each_entry() { + n2 = next_entry->Numbers[idx]; + if (n1 != n2) { + found = FALSE; + break; + } + } + if (found) { + dump_numeric(n1, buf1); + (void) printf("\t%s= %s.\n", name, buf1); + } + } + break; + + case C_NAND: + if (n1 == ABSENT_NUMERIC) { + found = TRUE; + for_each_entry() { + n2 = next_entry->Numbers[idx]; + if (n1 != n2) { + found = FALSE; + break; + } + } + if (found) { + (void) printf("\t!%s.\n", name); + } + } + break; + } + break; + + case CMP_STRING: + check_user_definable(idx, STRWRITE); + s1 = e1->tterm.Strings[idx]; + switch (compare) { + case C_DIFFERENCE: + s2 = next_entry->Strings[idx]; + if (!(no_string(s1) && no_string(s2)) && capcmp(idx, s1, s2)) { + dump_string(s1, buf1); + dump_string(s2, buf2); + if (strcmp(buf1, buf2)) + (void) printf("\t%s: %s, %s.\n", name, buf1, buf2); + } + break; + + case C_COMMON: + if (s1 != ABSENT_STRING) { + found = TRUE; + for_each_entry() { + s2 = next_entry->Strings[idx]; + if (capcmp(idx, s1, s2) != 0) { + found = FALSE; + break; + } + } + if (found) { + (void) printf("\t%s= '%s'.\n", name, TIC_EXPAND(s1)); + } + } + break; + + case C_NAND: + if (s1 == ABSENT_STRING) { + found = TRUE; + for_each_entry() { + s2 = next_entry->Strings[idx]; + if (s2 != s1) { + found = FALSE; + break; + } + } + if (found) { + (void) printf("\t!%s.\n", name); + } + } + break; + } + break; + + case CMP_USE: + /* unlike the other modes, this compares *all* use entries */ + switch (compare) { + case C_DIFFERENCE: + if (!useeq(e1, e2)) { + (void) fputs("\tuse: ", stdout); + print_uses(e1, stdout); + fputs(", ", stdout); + print_uses(e2, stdout); + fputs(".\n", stdout); + } + break; + + case C_COMMON: + if (e1->nuses) { + found = TRUE; + for_each_entry() { + e2 = &entries[extra++]; + if (e2->nuses != e1->nuses || !useeq(e1, e2)) { + found = FALSE; + break; + } + } + if (found) { + (void) fputs("\tuse: ", stdout); + print_uses(e1, stdout); + fputs(".\n", stdout); + } + } + break; + + case C_NAND: + if (!e1->nuses) { + found = TRUE; + for_each_entry() { + e2 = &entries[extra++]; + if (e2->nuses != e1->nuses) { + found = FALSE; + break; + } + } + if (found) { + (void) printf("\t!use.\n"); + } + } + break; + } + } +} + +/*************************************************************************** + * + * Init string analysis + * + ***************************************************************************/ + +#define DATA(from, to) { { from }, { to } } +#define DATAX() DATA("", "") + +typedef struct { + const char from[4]; + const char to[12]; +} assoc; + +static const assoc std_caps[] = +{ + /* these are specified by X.364 and iBCS2 */ + DATA("\033c", "RIS"), /* full reset */ + DATA("\0337", "SC"), /* save cursor */ + DATA("\0338", "RC"), /* restore cursor */ + DATA("\033[r", "RSR"), /* not an X.364 mnemonic */ + DATA("\033[m", "SGR0"), /* not an X.364 mnemonic */ + DATA("\033[2J", "ED2"), /* clear page */ + + /* this group is specified by ISO 2022 */ + DATA("\033(0", "ISO DEC G0"), /* enable DEC graphics for G0 */ + DATA("\033(A", "ISO UK G0"), /* enable UK chars for G0 */ + DATA("\033(B", "ISO US G0"), /* enable US chars for G0 */ + DATA("\033)0", "ISO DEC G1"), /* enable DEC graphics for G1 */ + DATA("\033)A", "ISO UK G1"), /* enable UK chars for G1 */ + DATA("\033)B", "ISO US G1"), /* enable US chars for G1 */ + + /* these are DEC private controls widely supported by emulators */ + DATA("\033=", "DECPAM"), /* application keypad mode */ + DATA("\033>", "DECPNM"), /* normal keypad mode */ + DATA("\033<", "DECANSI"), /* enter ANSI mode */ + DATA("\033[!p", "DECSTR"), /* soft reset */ + DATA("\033 F", "S7C1T"), /* 7-bit controls */ + + DATAX() +}; + +static const assoc std_modes[] = +/* ECMA \E[ ... [hl] modes recognized by many emulators */ +{ + DATA("2", "AM"), /* keyboard action mode */ + DATA("4", "IRM"), /* insert/replace mode */ + DATA("12", "SRM"), /* send/receive mode */ + DATA("20", "LNM"), /* linefeed mode */ + DATAX() +}; + +static const assoc private_modes[] = +/* DEC \E[ ... [hl] modes recognized by many emulators */ +{ + DATA("1", "CKM"), /* application cursor keys */ + DATA("2", "ANM"), /* set VT52 mode */ + DATA("3", "COLM"), /* 132-column mode */ + DATA("4", "SCLM"), /* smooth scroll */ + DATA("5", "SCNM"), /* reverse video mode */ + DATA("6", "OM"), /* origin mode */ + DATA("7", "AWM"), /* wraparound mode */ + DATA("8", "ARM"), /* auto-repeat mode */ + DATAX() +}; + +static const assoc ecma_highlights[] = +/* recognize ECMA attribute sequences */ +{ + DATA("0", "NORMAL"), /* normal */ + DATA("1", "+BOLD"), /* bold on */ + DATA("2", "+DIM"), /* dim on */ + DATA("3", "+ITALIC"), /* italic on */ + DATA("4", "+UNDERLINE"), /* underline on */ + DATA("5", "+BLINK"), /* blink on */ + DATA("6", "+FASTBLINK"), /* fastblink on */ + DATA("7", "+REVERSE"), /* reverse on */ + DATA("8", "+INVISIBLE"), /* invisible on */ + DATA("9", "+DELETED"), /* deleted on */ + DATA("10", "MAIN-FONT"), /* select primary font */ + DATA("11", "ALT-FONT-1"), /* select alternate font 1 */ + DATA("12", "ALT-FONT-2"), /* select alternate font 2 */ + DATA("13", "ALT-FONT-3"), /* select alternate font 3 */ + DATA("14", "ALT-FONT-4"), /* select alternate font 4 */ + DATA("15", "ALT-FONT-5"), /* select alternate font 5 */ + DATA("16", "ALT-FONT-6"), /* select alternate font 6 */ + DATA("17", "ALT-FONT-7"), /* select alternate font 7 */ + DATA("18", "ALT-FONT-1"), /* select alternate font 1 */ + DATA("19", "ALT-FONT-1"), /* select alternate font 1 */ + DATA("20", "FRAKTUR"), /* Fraktur font */ + DATA("21", "DOUBLEUNDER"), /* double underline */ + DATA("22", "-DIM"), /* dim off */ + DATA("23", "-ITALIC"), /* italic off */ + DATA("24", "-UNDERLINE"), /* underline off */ + DATA("25", "-BLINK"), /* blink off */ + DATA("26", "-FASTBLINK"), /* fastblink off */ + DATA("27", "-REVERSE"), /* reverse off */ + DATA("28", "-INVISIBLE"), /* invisible off */ + DATA("29", "-DELETED"), /* deleted off */ + DATAX() +}; + +#undef DATA + +static int +skip_csi(const char *cap) +{ + int result = 0; + if (cap[0] == '\033' && cap[1] == '[') + result = 2; + else if (UChar(cap[0]) == 0233) + result = 1; + return result; +} + +static bool +same_param(const char *table, const char *param, size_t length) +{ + bool result = FALSE; + if (strncmp(table, param, length) == 0) { + result = !isdigit(UChar(param[length])); + } + return result; +} + +static char * +lookup_params(const assoc * table, char *dst, char *src) +{ + char *result = 0; + const char *ep = strtok(src, ";"); + + if (ep != 0) { + const assoc *ap; + + do { + bool found = FALSE; + + for (ap = table; ap->from[0]; ap++) { + size_t tlen = strlen(ap->from); + + if (same_param(ap->from, ep, tlen)) { + _nc_STRCAT(dst, ap->to, MAX_TERMINFO_LENGTH); + found = TRUE; + break; + } + } + + if (!found) + _nc_STRCAT(dst, ep, MAX_TERMINFO_LENGTH); + _nc_STRCAT(dst, ";", MAX_TERMINFO_LENGTH); + } while + ((ep = strtok((char *) 0, ";"))); + + dst[strlen(dst) - 1] = '\0'; + + result = dst; + } + return result; +} + +static void +analyze_string(const char *name, const char *cap, TERMTYPE2 *tp) +{ + char buf2[MAX_TERMINFO_LENGTH]; + const char *sp; + const assoc *ap; + int tp_lines = tp->Numbers[2]; + + if (!VALID_STRING(cap)) + return; + (void) printf("%s: ", name); + + for (sp = cap; *sp; sp++) { + int i; + int csi; + size_t len = 0; + size_t next; + const char *expansion = 0; + char buf3[MAX_TERMINFO_LENGTH]; + + /* first, check other capabilities in this entry */ + for (i = 0; i < STRCOUNT; i++) { + char *cp = tp->Strings[i]; + + /* don't use function-key capabilities */ + if (strnames[i] == NULL) + continue; + if (strnames[i][0] == 'k' && strnames[i][1] == 'f') + continue; + + if (VALID_STRING(cp) && + cp[0] != '\0' && + cp != cap) { + len = strlen(cp); + _nc_STRNCPY(buf2, sp, len); + buf2[len] = '\0'; + + if (_nc_capcmp(cp, buf2)) + continue; + +#define ISRS(s) (!strncmp((s), "is", (size_t) 2) || !strncmp((s), "rs", (size_t) 2)) + /* + * Theoretically we just passed the test for translation + * (equality once the padding is stripped). However, there + * are a few more hoops that need to be jumped so that + * identical pairs of initialization and reset strings + * don't just refer to each other. + */ + if (ISRS(name) || ISRS(strnames[i])) + if (cap < cp) + continue; +#undef ISRS + + expansion = strnames[i]; + break; + } + } + + /* now check the standard capabilities */ + if (!expansion) { + csi = skip_csi(sp); + for (ap = std_caps; ap->from[0]; ap++) { + size_t adj = (size_t) (csi ? 2 : 0); + + len = strlen(ap->from); + if (csi && skip_csi(ap->from) != csi) + continue; + if (len > adj + && strncmp(ap->from + adj, sp + csi, len - adj) == 0) { + expansion = ap->to; + len -= adj; + len += (size_t) csi; + break; + } + } + } + + /* now check for standard-mode sequences */ + if (!expansion + && (csi = skip_csi(sp)) != 0 + && (len = (strspn) (sp + csi, "0123456789;")) + && (len < sizeof(buf3)) + && (next = (size_t) csi + len) + && ((sp[next] == 'h') || (sp[next] == 'l'))) { + + _nc_STRCPY(buf2, + ((sp[next] == 'h') + ? "ECMA+" + : "ECMA-"), + sizeof(buf2)); + _nc_STRNCPY(buf3, sp + csi, len); + buf3[len] = '\0'; + len += (size_t) csi + 1; + + expansion = lookup_params(std_modes, buf2, buf3); + } + + /* now check for private-mode sequences */ + if (!expansion + && (csi = skip_csi(sp)) != 0 + && sp[csi] == '?' + && (len = (strspn) (sp + csi + 1, "0123456789;")) + && (len < sizeof(buf3)) + && (next = (size_t) csi + 1 + len) + && ((sp[next] == 'h') || (sp[next] == 'l'))) { + + _nc_STRCPY(buf2, + ((sp[next] == 'h') + ? "DEC+" + : "DEC-"), + sizeof(buf2)); + _nc_STRNCPY(buf3, sp + csi + 1, len); + buf3[len] = '\0'; + len += (size_t) csi + 2; + + expansion = lookup_params(private_modes, buf2, buf3); + } + + /* now check for ECMA highlight sequences */ + if (!expansion + && (csi = skip_csi(sp)) != 0 + && (len = (strspn) (sp + csi, "0123456789;")) != 0 + && (len < sizeof(buf3)) + && (next = (size_t) csi + len) + && sp[next] == 'm') { + + _nc_STRCPY(buf2, "SGR:", sizeof(buf2)); + _nc_STRNCPY(buf3, sp + csi, len); + buf3[len] = '\0'; + len += (size_t) csi + 1; + + expansion = lookup_params(ecma_highlights, buf2, buf3); + } + + if (!expansion + && (csi = skip_csi(sp)) != 0 + && sp[csi] == 'm') { + len = (size_t) csi + 1; + _nc_STRCPY(buf2, "SGR:", sizeof(buf2)); + _nc_STRCAT(buf2, ecma_highlights[0].to, sizeof(buf2)); + expansion = buf2; + } + + /* now check for scroll region reset */ + if (!expansion + && (csi = skip_csi(sp)) != 0) { + if (sp[csi] == 'r') { + expansion = "RSR"; + len = 1; + } else { + _nc_SPRINTF(buf2, _nc_SLIMIT(sizeof(buf2)) "1;%dr", tp_lines); + len = strlen(buf2); + if (strncmp(buf2, sp + csi, len) == 0) + expansion = "RSR"; + } + len += (size_t) csi; + } + + /* now check for home-down */ + if (!expansion + && (csi = skip_csi(sp)) != 0) { + _nc_SPRINTF(buf2, _nc_SLIMIT(sizeof(buf2)) "%d;1H", tp_lines); + len = strlen(buf2); + if (strncmp(buf2, sp + csi, len) == 0) { + expansion = "LL"; + } else { + _nc_SPRINTF(buf2, _nc_SLIMIT(sizeof(buf2)) "%dH", tp_lines); + len = strlen(buf2); + if (strncmp(buf2, sp + csi, len) == 0) { + expansion = "LL"; + } + } + len += (size_t) csi; + } + + /* now look at the expansion we got, if any */ + if (expansion) { + printf("{%s}", expansion); + sp += len - 1; + } else { + /* couldn't match anything */ + buf2[0] = *sp; + buf2[1] = '\0'; + fputs(TIC_EXPAND(buf2), stdout); + } + } + putchar('\n'); +} + +/*************************************************************************** + * + * File comparison + * + ***************************************************************************/ + +static void +file_comparison(int argc, char *argv[]) +{ +#define MAXCOMPARE 2 + /* someday we may allow comparisons on more files */ + int filecount = 0; + ENTRY *heads[MAXCOMPARE]; + ENTRY *qp, *rp; + int i, n; + + memset(heads, 0, sizeof(heads)); + dump_init((char *) 0, F_LITERAL, S_TERMINFO, + FALSE, 0, 65535, itrace, FALSE, FALSE, FALSE); + + for (n = 0; n < argc && n < MAXCOMPARE; n++) { + if (freopen(argv[n], "r", stdin) == 0) + _nc_err_abort("Can't open %s", argv[n]); + +#if NO_LEAKS + entered[n].head = _nc_head; + entered[n].tail = _nc_tail; +#endif + _nc_head = _nc_tail = 0; + + /* parse entries out of the source file */ + _nc_set_source(argv[n]); + _nc_read_entry_source(stdin, NULL, TRUE, literal, NULLHOOK); + + if (itrace) + (void) fprintf(stderr, "Resolving file %d...\n", n - 0); + + /* maybe do use resolution */ + if (!_nc_resolve_uses2(!limited, literal)) { + (void) fprintf(stderr, + "There are unresolved use entries in %s:\n", + argv[n]); + for_entry_list(qp) { + if (qp->nuses) { + (void) fputs(qp->tterm.term_names, stderr); + (void) fputc('\n', stderr); + } + } + ExitProgram(EXIT_FAILURE); + } + + heads[filecount] = _nc_head; + filecount++; + } + + /* OK, all entries are in core. Ready to do the comparison */ + if (itrace) + (void) fprintf(stderr, "Entries are now in core...\n"); + + /* The entry-matching loop. Sigh, this is intrinsically quadratic. */ + for (qp = heads[0]; qp; qp = qp->next) { + for (rp = heads[1]; rp; rp = rp->next) + if (_nc_entry_match(qp->tterm.term_names, rp->tterm.term_names)) { + if (qp->ncrosslinks < MAX_CROSSLINKS) + qp->crosslinks[qp->ncrosslinks] = rp; + qp->ncrosslinks++; + + if (rp->ncrosslinks < MAX_CROSSLINKS) + rp->crosslinks[rp->ncrosslinks] = qp; + rp->ncrosslinks++; + } + } + + /* now we have two circular lists with crosslinks */ + if (itrace) + (void) fprintf(stderr, "Name matches are done...\n"); + + for (qp = heads[0]; qp; qp = qp->next) { + if (qp->ncrosslinks > 1) { + (void) fprintf(stderr, + "%s in file 1 (%s) has %d matches in file 2 (%s):\n", + _nc_first_name(qp->tterm.term_names), + argv[0], + qp->ncrosslinks, + argv[1]); + for (i = 0; i < qp->ncrosslinks; i++) + (void) fprintf(stderr, + "\t%s\n", + _nc_first_name((qp->crosslinks[i])->tterm.term_names)); + } + } + + for (rp = heads[1]; rp; rp = rp->next) { + if (rp->ncrosslinks > 1) { + (void) fprintf(stderr, + "%s in file 2 (%s) has %d matches in file 1 (%s):\n", + _nc_first_name(rp->tterm.term_names), + argv[1], + rp->ncrosslinks, + argv[0]); + for (i = 0; i < rp->ncrosslinks; i++) + (void) fprintf(stderr, + "\t%s\n", + _nc_first_name((rp->crosslinks[i])->tterm.term_names)); + } + } + + (void) printf("In file 1 (%s) only:\n", argv[0]); + for (qp = heads[0]; qp; qp = qp->next) + if (qp->ncrosslinks == 0) + (void) printf("\t%s\n", + _nc_first_name(qp->tterm.term_names)); + + (void) printf("In file 2 (%s) only:\n", argv[1]); + for (rp = heads[1]; rp; rp = rp->next) + if (rp->ncrosslinks == 0) + (void) printf("\t%s\n", + _nc_first_name(rp->tterm.term_names)); + + (void) printf("The following entries are equivalent:\n"); + for (qp = heads[0]; qp; qp = qp->next) { + if (qp->ncrosslinks == 1) { + rp = qp->crosslinks[0]; + + repair_acsc(&qp->tterm); + repair_acsc(&rp->tterm); +#if NCURSES_XNAMES + _nc_align_termtype(&qp->tterm, &rp->tterm); +#endif + if (entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp)) { + char name1[NAMESIZE], name2[NAMESIZE]; + + (void) canonical_name(qp->tterm.term_names, name1); + (void) canonical_name(rp->tterm.term_names, name2); + + (void) printf("%s = %s\n", name1, name2); + } + } + } + + (void) printf("Differing entries:\n"); + termcount = 2; + for (qp = heads[0]; qp; qp = qp->next) { + + if (qp->ncrosslinks == 1) { + rp = qp->crosslinks[0]; +#if NCURSES_XNAMES + /* sorry - we have to do this on each pass */ + _nc_align_termtype(&qp->tterm, &rp->tterm); +#endif + if (!(entryeq(&qp->tterm, &rp->tterm) && useeq(qp, rp))) { + char name1[NAMESIZE], name2[NAMESIZE]; + char *names[3]; + + names[0] = name1; + names[1] = name2; + names[2] = 0; + + entries[0] = *qp; + entries[1] = *rp; + + (void) canonical_name(qp->tterm.term_names, name1); + (void) canonical_name(rp->tterm.term_names, name2); + + switch (compare) { + case C_DIFFERENCE: + show_comparing(names); + compare_entry(compare_predicate, &entries->tterm, quiet); + break; + + case C_COMMON: + show_comparing(names); + compare_entry(compare_predicate, &entries->tterm, quiet); + break; + + case C_NAND: + show_comparing(names); + compare_entry(compare_predicate, &entries->tterm, quiet); + break; + + } + } + } + } +} + +static void +usage(void) +{ +#define DATA(s) s "\n" + static const char head[] = + { + DATA("Usage: infocmp [options] [-A directory] [-B directory] [termname...]") + DATA("") + DATA("Options:") + }; +#undef DATA + /* length is given here so the compiler can make everything readonly */ +#define DATA(s) s + static const char options[][46] = + { + " -0 print single-row" + ," -1 print single-column" + ," -C use termcap-names" + ," -D print database locations" + ," -E format output as C tables" + ," -F compare terminfo-files" + ," -G format %{number} to %'char'" + ," -I use terminfo-names" + ," -K use termcap-names and BSD syntax" + ," -L use long names" + ," -R subset (see manpage)" + ," -T eliminate size limits (test)" + ," -U do not post-process entries" + ," -V print version" + ," -W wrap long strings per -w[n]" +#if NCURSES_XNAMES + ," -a with -F, list commented-out caps" +#endif + ," -c list common capabilities" + ," -d list different capabilities" + ," -e format output for C initializer" + ," -f with -1, format complex strings" + ," -g format %'char' to %{number}" + ," -i analyze initialization/reset" + ," -l output terminfo names" + ," -n list capabilities in neither" + ," -p ignore padding specifiers" + ," -Q number dump compiled description" + ," -q brief listing, removes headers" + ," -r with -C, output in termcap form" + ," -r with -F, resolve use-references" + ," -s [d|i|l|c] sort fields" +#if NCURSES_XNAMES + ," -t suppress commented-out capabilities" +#endif + ," -u produce source with 'use='" + ," -v number (verbose)" + ," -w number (width)" +#if NCURSES_XNAMES + ," -x unknown capabilities are user-defined" +#endif + }; +#undef DATA + const size_t last = SIZEOF(options); + const size_t left = (last + 1) / 2; + size_t n; + + fputs(head, stderr); + for (n = 0; n < left; n++) { + size_t m = n + left; + if (m < last) + fprintf(stderr, "%-40.40s%s\n", options[n], options[m]); + else + fprintf(stderr, "%s\n", options[n]); + } + ExitProgram(EXIT_FAILURE); +} + +static char * +any_initializer(const char *fmt, const char *type) +{ + static char *initializer; + static size_t need; + char *s; + + if (initializer == 0) { + need = (strlen(entries->tterm.term_names) + + strlen(type) + + strlen(fmt)); + initializer = (char *) malloc(need + 1); + if (initializer == 0) + failed("any_initializer"); + } + + _nc_STRCPY(initializer, entries->tterm.term_names, need); + for (s = initializer; *s != 0 && *s != '|'; s++) { + if (!isalnum(UChar(*s))) + *s = '_'; + } + *s = 0; + _nc_SPRINTF(s, _nc_SLIMIT(need) fmt, type); + return initializer; +} + +static char * +name_initializer(const char *type) +{ + return any_initializer("_%s_data", type); +} + +static char * +string_variable(const char *type) +{ + return any_initializer("_s_%s", type); +} + +/* dump C initializers for the terminal type */ +static void +dump_initializers(TERMTYPE2 *term) +{ + unsigned n; + const char *str = 0; + + printf("\nstatic char %s[] = \"%s\";\n\n", + name_initializer("alias"), entries->tterm.term_names); + + for_each_string(n, term) { + if (VALID_STRING(term->Strings[n])) { + char buf[MAX_STRING], *sp, *tp; + + tp = buf; +#define TP_LIMIT ((MAX_STRING - 5) - (size_t)(tp - buf)) + *tp++ = '"'; + for (sp = term->Strings[n]; + *sp != 0 && TP_LIMIT > 2; + sp++) { + if (isascii(UChar(*sp)) + && isprint(UChar(*sp)) + && *sp != '\\' + && *sp != '"') + *tp++ = *sp; + else { + _nc_SPRINTF(tp, _nc_SLIMIT(TP_LIMIT) "\\%03o", UChar(*sp)); + tp += 4; + } + } + *tp++ = '"'; + *tp = '\0'; + (void) printf("static char %-20s[] = %s;\n", + string_variable(ExtStrname(term, (int) n, strnames)), + buf); + } + } + printf("\n"); + + (void) printf("static char %s[] = %s\n", name_initializer("bool"), L_CURL); + + for_each_boolean(n, term) { + switch ((int) (term->Booleans[n])) { + case TRUE: + str = "TRUE"; + break; + + case FALSE: + str = "FALSE"; + break; + + case ABSENT_BOOLEAN: + str = "ABSENT_BOOLEAN"; + break; + + case CANCELLED_BOOLEAN: + str = "CANCELLED_BOOLEAN"; + break; + } + (void) printf("\t/* %3u: %-8s */\t%s,\n", + n, ExtBoolname(term, (int) n, boolnames), str); + } + (void) printf("%s;\n", R_CURL); + + (void) printf("static short %s[] = %s\n", name_initializer("number"), L_CURL); + + for_each_number(n, term) { + char buf[BUFSIZ]; + switch (term->Numbers[n]) { + case ABSENT_NUMERIC: + str = "ABSENT_NUMERIC"; + break; + case CANCELLED_NUMERIC: + str = "CANCELLED_NUMERIC"; + break; + default: + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) "%d", term->Numbers[n]); + str = buf; + break; + } + (void) printf("\t/* %3u: %-8s */\t%s,\n", n, + ExtNumname(term, (int) n, numnames), str); + } + (void) printf("%s;\n", R_CURL); + + (void) printf("static char * %s[] = %s\n", name_initializer("string"), L_CURL); + + for_each_string(n, term) { + + if (term->Strings[n] == ABSENT_STRING) + str = "ABSENT_STRING"; + else if (term->Strings[n] == CANCELLED_STRING) + str = "CANCELLED_STRING"; + else { + str = string_variable(ExtStrname(term, (int) n, strnames)); + } + (void) printf("\t/* %3u: %-8s */\t%s,\n", n, + ExtStrname(term, (int) n, strnames), str); + } + (void) printf("%s;\n", R_CURL); + +#if NCURSES_XNAMES + if ((NUM_BOOLEANS(term) != BOOLCOUNT) + || (NUM_NUMBERS(term) != NUMCOUNT) + || (NUM_STRINGS(term) != STRCOUNT)) { + (void) printf("static char * %s[] = %s\n", + name_initializer("string_ext"), L_CURL); + for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) { + (void) printf("\t/* %3u: bool */\t\"%s\",\n", + n, ExtBoolname(term, (int) n, boolnames)); + } + for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) { + (void) printf("\t/* %3u: num */\t\"%s\",\n", + n, ExtNumname(term, (int) n, numnames)); + } + for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) { + (void) printf("\t/* %3u: str */\t\"%s\",\n", + n, ExtStrname(term, (int) n, strnames)); + } + (void) printf("%s;\n", R_CURL); + } +#endif +} + +/* dump C initializers for the terminal type */ +static void +dump_termtype(TERMTYPE2 *term) +{ + (void) printf("\t%s\n\t\t%s,\n", L_CURL, name_initializer("alias")); + (void) printf("\t\t(char *)0,\t/* pointer to string table */\n"); + + (void) printf("\t\t%s,\n", name_initializer("bool")); + (void) printf("\t\t%s,\n", name_initializer("number")); + + (void) printf("\t\t%s,\n", name_initializer("string")); + +#if NCURSES_XNAMES + (void) printf("#if NCURSES_XNAMES\n"); + (void) printf("\t\t(char *)0,\t/* pointer to extended string table */\n"); + (void) printf("\t\t%s,\t/* ...corresponding names */\n", + ((NUM_BOOLEANS(term) != BOOLCOUNT) + || (NUM_NUMBERS(term) != NUMCOUNT) + || (NUM_STRINGS(term) != STRCOUNT)) + ? name_initializer("string_ext") + : "(char **)0"); + + (void) printf("\t\t%d,\t\t/* count total Booleans */\n", NUM_BOOLEANS(term)); + (void) printf("\t\t%d,\t\t/* count total Numbers */\n", NUM_NUMBERS(term)); + (void) printf("\t\t%d,\t\t/* count total Strings */\n", NUM_STRINGS(term)); + + (void) printf("\t\t%d,\t\t/* count extensions to Booleans */\n", + NUM_BOOLEANS(term) - BOOLCOUNT); + (void) printf("\t\t%d,\t\t/* count extensions to Numbers */\n", + NUM_NUMBERS(term) - NUMCOUNT); + (void) printf("\t\t%d,\t\t/* count extensions to Strings */\n", + NUM_STRINGS(term) - STRCOUNT); + + (void) printf("#endif /* NCURSES_XNAMES */\n"); +#else + (void) term; +#endif /* NCURSES_XNAMES */ + (void) printf("\t%s\n", R_CURL); +} + +static int +optarg_to_number(void) +{ + char *temp = 0; + long value = strtol(optarg, &temp, 0); + + if (temp == 0 || temp == optarg || *temp != 0) { + fprintf(stderr, "Expected a number, not \"%s\"\n", optarg); + ExitProgram(EXIT_FAILURE); + } + return (int) value; +} + +static char * +terminal_env(void) +{ + char *terminal; + + if ((terminal = getenv("TERM")) == 0) { + (void) fprintf(stderr, + "%s: environment variable TERM not set\n", + _nc_progname); + exit(EXIT_FAILURE); + } + return terminal; +} + +/* + * Show the databases that infocmp knows about. The location to which it writes is + */ +static void +show_databases(void) +{ + DBDIRS state; + int offset; + const char *path2; + + _nc_first_db(&state, &offset); + while ((path2 = _nc_next_db(&state, &offset)) != 0) { + printf("%s\n", path2); + } + _nc_last_db(); +} + +/*************************************************************************** + * + * Main sequence + * + ***************************************************************************/ + +#if NO_LEAKS +#define MAIN_LEAKS() \ + _nc_free_termtype2(&entries[0].tterm); \ + _nc_free_termtype2(&entries[1].tterm); \ + free(myargv); \ + free(tfile); \ + free(tname) +#else +#define MAIN_LEAKS() /* nothing */ +#endif + +int +main(int argc, char *argv[]) +{ + /* Avoid "local data >32k" error with mwcc */ + /* Also avoid overflowing smaller stacks on systems like AmigaOS */ + path *tfile = 0; + char **tname = 0; + size_t maxterms; + + char **myargv; + + char *firstdir, *restdir; + int c; + bool formatted = FALSE; + bool filecompare = FALSE; + int initdump = 0; + bool init_analyze = FALSE; + bool suppress_untranslatable = FALSE; + int quickdump = 0; + bool wrap_strings = FALSE; + + /* where is the terminfo database location going to default to? */ + restdir = firstdir = 0; + +#if NCURSES_XNAMES + use_extended_names(FALSE); +#endif + _nc_strict_bsd = 0; + + _nc_progname = _nc_rootname(argv[0]); + + /* make sure we have enough space to add two terminal entries */ + myargv = typeCalloc(char *, (size_t) (argc + 3)); + if (myargv == 0) + failed("myargv"); + + memcpy(myargv, argv, (sizeof(char *) * (size_t) argc)); + argv = myargv; + + while ((c = getopt(argc, + argv, + "01A:aB:CcDdEeFfGgIiKLlnpQ:qR:rs:TtUuVv:Ww:x")) != -1) { + switch (c) { + case '0': + mwidth = 65535; + mheight = 1; + break; + + case '1': + mwidth = 0; + break; + + case 'A': + firstdir = optarg; + break; + +#if NCURSES_XNAMES + case 'a': + _nc_disable_period = TRUE; + use_extended_names(TRUE); + break; +#endif + case 'B': + restdir = optarg; + break; + + case 'K': + _nc_strict_bsd = 1; + /* FALLTHRU */ + case 'C': + outform = F_TERMCAP; + tversion = "BSD"; + if (sortmode == S_DEFAULT) + sortmode = S_TERMCAP; + break; + + case 'D': + show_databases(); + ExitProgram(EXIT_SUCCESS); + break; + + case 'c': + compare = C_COMMON; + break; + + case 'd': + compare = C_DIFFERENCE; + break; + + case 'E': + initdump |= 2; + break; + + case 'e': + initdump |= 1; + break; + + case 'F': + filecompare = TRUE; + break; + + case 'f': + formatted = TRUE; + break; + + case 'G': + numbers = 1; + break; + + case 'g': + numbers = -1; + break; + + case 'I': + outform = F_TERMINFO; + if (sortmode == S_DEFAULT) + sortmode = S_VARIABLE; + tversion = 0; + break; + + case 'i': + init_analyze = TRUE; + break; + + case 'L': + outform = F_VARIABLE; + if (sortmode == S_DEFAULT) + sortmode = S_VARIABLE; + break; + + case 'l': + outform = F_TERMINFO; + break; + + case 'n': + compare = C_NAND; + break; + + case 'p': + ignorepads = TRUE; + break; + + case 'Q': + quickdump = optarg_to_number(); + break; + + case 'q': + quiet = TRUE; + s_absent = "-"; + s_cancel = "@"; + bool_sep = ", "; + break; + + case 'R': + tversion = optarg; + break; + + case 'r': + tversion = 0; + break; + + case 's': + if (*optarg == 'd') + sortmode = S_NOSORT; + else if (*optarg == 'i') + sortmode = S_TERMINFO; + else if (*optarg == 'l') + sortmode = S_VARIABLE; + else if (*optarg == 'c') + sortmode = S_TERMCAP; + else { + (void) fprintf(stderr, + "%s: unknown sort mode\n", + _nc_progname); + ExitProgram(EXIT_FAILURE); + } + break; + + case 'T': + limited = FALSE; + break; + +#if NCURSES_XNAMES + case 't': + _nc_disable_period = FALSE; + suppress_untranslatable = TRUE; + break; +#endif + + case 'U': + literal = TRUE; + break; + + case 'u': + compare = C_USEALL; + break; + + case 'V': + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + + case 'v': + itrace = (unsigned) optarg_to_number(); + set_trace_level(itrace); + break; + + case 'W': + wrap_strings = TRUE; + break; + + case 'w': + mwidth = optarg_to_number(); + break; + +#if NCURSES_XNAMES + case 'x': + use_extended_names(TRUE); + break; +#endif + + default: + usage(); + } + } + + maxterms = (size_t) (argc + 2 - optind); + if ((tfile = typeMalloc(path, maxterms)) == 0) + failed("tfile"); + if ((tname = typeCalloc(char *, maxterms)) == 0) + failed("tname"); + if ((entries = typeCalloc(ENTRY, maxterms)) == 0) + failed("entries"); +#if NO_LEAKS + if ((entered = typeCalloc(ENTERED, maxterms)) == 0) + failed("entered"); +#endif + + if (tfile == 0 + || tname == 0 + || entries == 0) { + fprintf(stderr, "%s: not enough memory\n", _nc_progname); + ExitProgram(EXIT_FAILURE); + } + + /* by default, sort by terminfo name */ + if (sortmode == S_DEFAULT) + sortmode = S_TERMINFO; + + /* make sure we have at least one terminal name to work with */ + if (optind >= argc) + argv[argc++] = terminal_env(); + + /* if user is after a comparison, make sure we have two entries */ + if (compare != C_DEFAULT && optind >= argc - 1) + argv[argc++] = terminal_env(); + + /* exactly one terminal name with no options means display it */ + /* exactly two terminal names with no options means do -d */ + if (compare == C_DEFAULT) { + switch (argc - optind) { + default: + fprintf(stderr, "%s: too many names to compare\n", _nc_progname); + ExitProgram(EXIT_FAILURE); + case 1: + break; + case 2: + compare = C_DIFFERENCE; + break; + } + } + + /* set up for display */ + dump_init(tversion, outform, sortmode, + wrap_strings, mwidth, mheight, itrace, + formatted, FALSE, quickdump); + + if (!filecompare) { + /* grab the entries */ + termcount = 0; + for (; optind < argc; optind++) { + const char *directory = termcount ? restdir : firstdir; + int status; + + tname[termcount] = argv[optind]; + + if (directory) { +#if NCURSES_USE_DATABASE +#if MIXEDCASE_FILENAMES +#define LEAF_FMT "%c" +#else +#define LEAF_FMT "%02x" +#endif + _nc_SPRINTF(tfile[termcount], + _nc_SLIMIT(sizeof(path)) + "%s/" LEAF_FMT "/%s", + directory, + UChar(*argv[optind]), argv[optind]); + if (itrace) + (void) fprintf(stderr, + "%s: reading entry %s from file %s\n", + _nc_progname, + argv[optind], tfile[termcount]); + + status = _nc_read_file_entry(tfile[termcount], + &entries[termcount].tterm); +#else + (void) fprintf(stderr, "%s: terminfo files not supported\n", + _nc_progname); + MAIN_LEAKS(); + ExitProgram(EXIT_FAILURE); +#endif + } else { + if (itrace) + (void) fprintf(stderr, + "%s: reading entry %s from database\n", + _nc_progname, + tname[termcount]); + + status = _nc_read_entry2(tname[termcount], + tfile[termcount], + &entries[termcount].tterm); + } + + if (status <= 0) { + (void) fprintf(stderr, + "%s: couldn't open terminfo file %s.\n", + _nc_progname, + tfile[termcount]); + MAIN_LEAKS(); + ExitProgram(EXIT_FAILURE); + } + repair_acsc(&entries[termcount].tterm); + termcount++; + } + +#if NCURSES_XNAMES + if (termcount > 1) + _nc_align_termtype(&entries[0].tterm, &entries[1].tterm); +#endif + + /* dump as C initializer for the terminal type */ + if (initdump) { + if (initdump & 1) + dump_termtype(&entries[0].tterm); + if (initdump & 2) + dump_initializers(&entries[0].tterm); + } + + /* analyze the init strings */ + else if (init_analyze) { +#undef CUR +#define CUR entries[0].tterm. + analyze_string("is1", init_1string, &entries[0].tterm); + analyze_string("is2", init_2string, &entries[0].tterm); + analyze_string("is3", init_3string, &entries[0].tterm); + analyze_string("rs1", reset_1string, &entries[0].tterm); + analyze_string("rs2", reset_2string, &entries[0].tterm); + analyze_string("rs3", reset_3string, &entries[0].tterm); + analyze_string("smcup", enter_ca_mode, &entries[0].tterm); + analyze_string("rmcup", exit_ca_mode, &entries[0].tterm); + analyze_string("smkx", keypad_xmit, &entries[0].tterm); + analyze_string("rmkx", keypad_local, &entries[0].tterm); +#undef CUR + } else { + int i; + int len; + + /* + * Here's where the real work gets done + */ + switch (compare) { + case C_DEFAULT: + if (itrace) + (void) fprintf(stderr, + "%s: about to dump %s\n", + _nc_progname, + tname[0]); + if (!quiet) + (void) + printf("#\tReconstructed via infocmp from file: %s\n", + tfile[0]); + dump_entry(&entries[0].tterm, + suppress_untranslatable, + limited, + numbers, + NULL); + len = show_entry(); + if (itrace) + (void) fprintf(stderr, "%s: length %d\n", _nc_progname, len); + break; + + case C_DIFFERENCE: + show_comparing(tname); + compare_entry(compare_predicate, &entries->tterm, quiet); + break; + + case C_COMMON: + show_comparing(tname); + compare_entry(compare_predicate, &entries->tterm, quiet); + break; + + case C_NAND: + show_comparing(tname); + compare_entry(compare_predicate, &entries->tterm, quiet); + break; + + case C_USEALL: + if (itrace) + (void) fprintf(stderr, "%s: dumping use entry\n", _nc_progname); + dump_entry(&entries[0].tterm, + suppress_untranslatable, + limited, + numbers, + use_predicate); + for (i = 1; i < termcount; i++) + dump_uses(tname[i], !(outform == F_TERMCAP + || outform == F_TCONVERR)); + len = show_entry(); + if (itrace) + (void) fprintf(stderr, "%s: length %d\n", _nc_progname, len); + break; + } + } + } else if (compare == C_USEALL) { + (void) fprintf(stderr, "Sorry, -u doesn't work with -F\n"); + } else if (compare == C_DEFAULT) { + (void) fprintf(stderr, "Use `tic -[CI] <file>' for this.\n"); + } else if (argc - optind != 2) { + (void) fprintf(stderr, + "File comparison needs exactly two file arguments.\n"); + } else { + file_comparison(argc - optind, argv + optind); + } + + MAIN_LEAKS(); + ExitProgram(EXIT_SUCCESS); +} + +/* infocmp.c ends here */ diff --git a/deps/ncurses-6.3/progs/modules b/deps/ncurses-6.3/progs/modules new file mode 100644 index 0000000..349061f --- /dev/null +++ b/deps/ncurses-6.3/progs/modules @@ -0,0 +1,50 @@ +# $Id: modules,v 1.25 2021/04/18 17:21:03 tom Exp $ +# Program modules (some are in ncurses lib!) +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2014,2016 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: Thomas E. Dickey 1995-on +# + +@ base +clear progs $(srcdir) $(HEADER_DEPS) tty_settings.h +tic progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/dump_entry.h $(srcdir)/tparm_type.h +toe progs $(srcdir) $(HEADER_DEPS) $(INCDIR)/hashed_db.h +clear_cmd progs $(srcdir) $(HEADER_DEPS) clear_cmd.h +dump_entry progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_entry.h ../include/parametrized.h $(INCDIR)/capdefaults.c termsort.h +infocmp progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_entry.h +reset_cmd progs $(srcdir) $(HEADER_DEPS) reset_cmd.h tty_settings.h +tabs progs $(srcdir) $(HEADER_DEPS) +tparm_type progs $(srcdir) $(HEADER_DEPS) $(srcdir)/tparm_type.h +tput progs $(srcdir) $(HEADER_DEPS) transform.h $(srcdir)/tparm_type.h reset_cmd.h tty_settings.h +tset progs $(srcdir) $(HEADER_DEPS) transform.h ../include/termcap.h reset_cmd.h tty_settings.h +transform progs $(srcdir) $(HEADER_DEPS) transform.h +tty_settings progs $(srcdir) $(HEADER_DEPS) tty_settings.h + +# vile:makemode diff --git a/deps/ncurses-5.9/progs/progs.priv.h b/deps/ncurses-6.3/progs/progs.priv.h similarity index 76% rename from deps/ncurses-5.9/progs/progs.priv.h rename to deps/ncurses-6.3/progs/progs.priv.h index f0ea460..32f4e4e 100644 --- a/deps/ncurses-5.9/progs/progs.priv.h +++ b/deps/ncurses-6.3/progs/progs.priv.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2015,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 * @@ -30,19 +31,22 @@ * Author: Thomas E. Dickey 1997-on * ****************************************************************************/ /* - * $Id: progs.priv.h,v 1.34 2008/08/03 17:43:05 tom Exp $ + * $Id: progs.priv.h,v 1.53 2021/06/26 20:43:19 tom Exp $ * * progs.priv.h * * Header file for curses utility programs */ +#ifndef PROGS_PRIV_H +#define PROGS_PRIV_H 1 + #include <ncurses_cfg.h> #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 #include <stdlib.h> @@ -54,10 +58,6 @@ #include <unistd.h> #endif -#if HAVE_SYS_BSDTYPES_H -#include <sys/bsdtypes.h> /* needed for ISC */ -#endif - #if HAVE_LIMITS_H # include <limits.h> #elif HAVE_SYS_PARAM_H @@ -90,6 +90,14 @@ # endif #endif +#if HAVE_INTTYPES_H +# include <inttypes.h> +#else +# if HAVE_STDINT_H +# include <stdint.h> +# endif +#endif + #include <assert.h> #include <errno.h> @@ -99,7 +107,7 @@ extern int errno; #if HAVE_GETOPT_H #include <getopt.h> -#else +#elif !defined(HAVE_GETOPT_HEADER) /* 'getopt()' may be prototyped in <stdlib.h>, but declaring its * variables doesn't hurt. */ @@ -107,22 +115,57 @@ extern char *optarg; extern int optind; #endif /* HAVE_GETOPT_H */ +#undef _NC_WINDOWS +#if (defined(_WIN32) || defined(_WIN64)) +#define _NC_WINDOWS 1 +#endif + +#define NCURSES_INTERNALS 1 +#define NCURSES_OPAQUE 0 + #include <curses.h> + +#if !(defined(NCURSES_WGETCH_EVENTS) && defined(NEED_KEY_EVENT)) +#undef KEY_EVENT /* reduce compiler-warnings with Visual C++ */ +#endif + #include <term_entry.h> +#include <nc_termios.h> #include <tic.h> #include <nc_tparm.h> +#include <nc_string.h> #include <nc_alloc.h> +#include <nc_access.h> + #if HAVE_NC_FREEALL #undef ExitProgram #ifdef USE_LIBTINFO -#define ExitProgram(code) _nc_free_tinfo(code) +#define ExitProgram(code) exit_terminfo(code) #else #define ExitProgram(code) _nc_free_tic(code) #endif #endif +#define VtoTrace(opt) (unsigned) ((opt > 0) ? opt : (opt == 0)) + +/* error-returns for tput */ +#define ErrUsage 2 +#define ErrTermType 3 +#define ErrCapName 4 +#define ErrSystem(n) (4 + (n)) + +#if defined(__GNUC__) && defined(_FORTIFY_SOURCE) +#define IGNORE_RC(func) errno = (int) func +#else +#define IGNORE_RC(func) (void) func +#endif /* gcc workarounds */ + /* usually in <unistd.h> */ +#ifndef STDIN_FILENO +#define STDIN_FILENO 0 +#endif + #ifndef STDOUT_FILENO #define STDOUT_FILENO 1 #endif @@ -171,7 +214,7 @@ extern int optind; # elif defined(MAXPATHLEN) # define PATH_MAX MAXPATHLEN # else -# define PATH_MAX 255 /* the Posix minimum pathsize */ +# define PATH_MAX 255 /* the Posix minimum pathsize */ # endif #endif @@ -183,10 +226,20 @@ extern int optind; # if ('z'-'a' == 25) && ('z' < 127) && ('Z'-'A' == 25) && ('Z' < 127) && ('9' < 127) # define isascii(c) (UChar(c) <= 127) # else -# define isascii(c) 1 /* not really ascii anyway */ +# define isascii(c) 1 /* not really ascii anyway */ # endif #endif #define UChar(c) ((unsigned char)(c)) #define SIZEOF(v) (sizeof(v)/sizeof(v[0])) + +#define NCURSES_EXT_NUMBERS (NCURSES_EXT_COLORS && HAVE_INIT_EXTENDED_COLOR) + +#if NCURSES_EXT_NUMBERS +#else +#define _nc_free_termtype2(t) _nc_free_termtype(t) +#define _nc_read_entry2(n,f,t) _nc_read_entry(n,f,t) +#endif + +#endif /* PROGS_PRIV_H */ diff --git a/deps/ncurses-6.3/progs/reset_cmd.c b/deps/ncurses-6.3/progs/reset_cmd.c new file mode 100644 index 0000000..eff3af7 --- /dev/null +++ b/deps/ncurses-6.3/progs/reset_cmd.c @@ -0,0 +1,660 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2016,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: Thomas E. Dickey * + ****************************************************************************/ + +#include <reset_cmd.h> +#include <tty_settings.h> + +#include <errno.h> +#include <stdio.h> +#include <fcntl.h> + +#if HAVE_SIZECHANGE +# if !defined(sun) || !TERMIOS +# if HAVE_SYS_IOCTL_H +# include <sys/ioctl.h> +# endif +# endif +#endif + +#if NEED_PTEM_H +/* they neglected to define struct winsize in termios.h -- it is only + in termio.h */ +#include <sys/stream.h> +#include <sys/ptem.h> +#endif + +MODULE_ID("$Id: reset_cmd.c,v 1.28 2021/10/02 18:08:44 tom Exp $") + +/* + * SCO defines TIOCGSIZE and the corresponding struct. Other systems (SunOS, + * Solaris, IRIX) define TIOCGWINSZ and struct winsize. + */ +#ifdef TIOCGSIZE +# define IOCTL_GET_WINSIZE TIOCGSIZE +# define IOCTL_SET_WINSIZE TIOCSSIZE +# define STRUCT_WINSIZE struct ttysize +# define WINSIZE_ROWS(n) n.ts_lines +# define WINSIZE_COLS(n) n.ts_cols +#else +# ifdef TIOCGWINSZ +# define IOCTL_GET_WINSIZE TIOCGWINSZ +# define IOCTL_SET_WINSIZE TIOCSWINSZ +# define STRUCT_WINSIZE struct winsize +# define WINSIZE_ROWS(n) n.ws_row +# define WINSIZE_COLS(n) n.ws_col +# endif +#endif + +static FILE *my_file; + +static bool use_reset = FALSE; /* invoked as reset */ +static bool use_init = FALSE; /* invoked as init */ + +static GCC_NORETURN void +failed(const char *msg) +{ + int code = errno; + + (void) fprintf(stderr, "%s: %s: %s\n", _nc_progname, msg, strerror(code)); + restore_tty_settings(); + (void) fprintf(my_file, "\n"); + fflush(my_file); + ExitProgram(ErrSystem(code)); + /* NOTREACHED */ +} + +static bool +cat_file(char *file) +{ + FILE *fp; + size_t nr; + char buf[BUFSIZ]; + bool sent = FALSE; + + if (file != 0) { + if ((fp = safe_fopen(file, "r")) == 0) + failed(file); + + while ((nr = fread(buf, sizeof(char), sizeof(buf), fp)) != 0) { + if (fwrite(buf, sizeof(char), nr, my_file) != nr) { + failed(file); + } + sent = TRUE; + } + fclose(fp); + } + return sent; +} + +static int +out_char(int c) +{ + return putc(c, my_file); +} + +/************************************************************************** + * Mode-setting logic + **************************************************************************/ + +/* some BSD systems have these built in, some systems are missing + * one or more definitions. The safest solution is to override unless the + * commonly-altered ones are defined. + */ +#if !(defined(CERASE) && defined(CINTR) && defined(CKILL) && defined(CQUIT)) +#undef CEOF +#undef CERASE +#undef CINTR +#undef CKILL +#undef CLNEXT +#undef CRPRNT +#undef CQUIT +#undef CSTART +#undef CSTOP +#undef CSUSP +#endif + +/* control-character defaults */ +#ifndef CEOF +#define CEOF CTRL('D') +#endif +#ifndef CERASE +#define CERASE CTRL('H') +#endif +#ifndef CINTR +#define CINTR 127 /* ^? */ +#endif +#ifndef CKILL +#define CKILL CTRL('U') +#endif +#ifndef CLNEXT +#define CLNEXT CTRL('v') +#endif +#ifndef CRPRNT +#define CRPRNT CTRL('r') +#endif +#ifndef CQUIT +#define CQUIT CTRL('\\') +#endif +#ifndef CSTART +#define CSTART CTRL('Q') +#endif +#ifndef CSTOP +#define CSTOP CTRL('S') +#endif +#ifndef CSUSP +#define CSUSP CTRL('Z') +#endif + +#if defined(_POSIX_VDISABLE) +#define DISABLED(val) (((_POSIX_VDISABLE != -1) \ + && ((val) == _POSIX_VDISABLE)) \ + || ((val) <= 0)) +#else +#define DISABLED(val) ((int)(val) <= 0) +#endif + +#define CHK(val, dft) (unsigned char) (DISABLED(val) ? dft : val) + +#define reset_char(item, value) \ + tty_settings->c_cc[item] = CHK(tty_settings->c_cc[item], value) + +/* + * Reset the terminal mode bits to a sensible state. Very useful after + * a child program dies in raw mode. + */ +void +reset_tty_settings(int fd, TTY * tty_settings, int noset) +{ + GET_TTY(fd, tty_settings); + +#ifdef TERMIOS +#if defined(VDISCARD) && defined(CDISCARD) + reset_char(VDISCARD, CDISCARD); +#endif + reset_char(VEOF, CEOF); + reset_char(VERASE, CERASE); +#if defined(VFLUSH) && defined(CFLUSH) + reset_char(VFLUSH, CFLUSH); +#endif + reset_char(VINTR, CINTR); + reset_char(VKILL, CKILL); +#if defined(VLNEXT) && defined(CLNEXT) + reset_char(VLNEXT, CLNEXT); +#endif + reset_char(VQUIT, CQUIT); +#if defined(VREPRINT) && defined(CRPRNT) + reset_char(VREPRINT, CRPRNT); +#endif +#if defined(VSTART) && defined(CSTART) + reset_char(VSTART, CSTART); +#endif +#if defined(VSTOP) && defined(CSTOP) + reset_char(VSTOP, CSTOP); +#endif +#if defined(VSUSP) && defined(CSUSP) + reset_char(VSUSP, CSUSP); +#endif +#if defined(VWERASE) && defined(CWERASE) + reset_char(VWERASE, CWERASE); +#endif + + tty_settings->c_iflag &= ~((unsigned) (IGNBRK + | PARMRK + | INPCK + | ISTRIP + | INLCR + | IGNCR +#ifdef IUCLC + | IUCLC +#endif +#ifdef IXANY + | IXANY +#endif + | IXOFF)); + + tty_settings->c_iflag |= (BRKINT + | IGNPAR + | ICRNL + | IXON +#ifdef IMAXBEL + | IMAXBEL +#endif + ); + + tty_settings->c_oflag &= ~((unsigned) (0 +#ifdef OLCUC + | OLCUC +#endif +#ifdef OCRNL + | OCRNL +#endif +#ifdef ONOCR + | ONOCR +#endif +#ifdef ONLRET + | ONLRET +#endif +#ifdef OFILL + | OFILL +#endif +#ifdef OFDEL + | OFDEL +#endif +#ifdef NLDLY + | NLDLY +#endif +#ifdef CRDLY + | CRDLY +#endif +#ifdef TABDLY + | TABDLY +#endif +#ifdef BSDLY + | BSDLY +#endif +#ifdef VTDLY + | VTDLY +#endif +#ifdef FFDLY + | FFDLY +#endif + )); + + tty_settings->c_oflag |= (OPOST +#ifdef ONLCR + | ONLCR +#endif + ); + + tty_settings->c_cflag &= ~((unsigned) (CSIZE + | CSTOPB + | PARENB + | PARODD + | CLOCAL)); + tty_settings->c_cflag |= (CS8 | CREAD); + tty_settings->c_lflag &= ~((unsigned) (ECHONL + | NOFLSH +#ifdef TOSTOP + | TOSTOP +#endif +#ifdef ECHOPTR + | ECHOPRT +#endif +#ifdef XCASE + | XCASE +#endif + )); + + tty_settings->c_lflag |= (ISIG + | ICANON + | ECHO + | ECHOE + | ECHOK +#ifdef ECHOCTL + | ECHOCTL +#endif +#ifdef ECHOKE + | ECHOKE +#endif + ); +#endif + + if (!noset) { + SET_TTY(fd, tty_settings); + } +} + +/* + * Returns a "good" value for the erase character. This is loosely based on + * the BSD4.4 logic. + */ +static int +default_erase(void) +{ + int result; + + if (over_strike + && VALID_STRING(key_backspace) + && strlen(key_backspace) == 1) { + result = key_backspace[0]; + } else { + result = CERASE; + } + + return result; +} + +/* + * Update the values of the erase, interrupt, and kill characters in the TTY + * parameter. + * + * SVr4 tset (e.g., Solaris 2.5) only modifies the intr, quit or erase + * characters if they're unset, or if we specify them as options. This differs + * from BSD 4.4 tset, which always sets erase. + */ +void +set_control_chars(TTY * tty_settings, int my_erase, int my_intr, int my_kill) +{ +#if defined(EXP_WIN32_DRIVER) + /* noop */ + (void) tty_settings; + (void) my_erase; + (void) my_intr; + (void) my_kill; +#else + if (DISABLED(tty_settings->c_cc[VERASE]) || my_erase >= 0) { + tty_settings->c_cc[VERASE] = UChar((my_erase >= 0) + ? my_erase + : default_erase()); + } + + if (DISABLED(tty_settings->c_cc[VINTR]) || my_intr >= 0) { + tty_settings->c_cc[VINTR] = UChar((my_intr >= 0) + ? my_intr + : CINTR); + } + + if (DISABLED(tty_settings->c_cc[VKILL]) || my_kill >= 0) { + tty_settings->c_cc[VKILL] = UChar((my_kill >= 0) + ? my_kill + : CKILL); + } +#endif +} + +/* + * Set up various conversions in the TTY parameter, including parity, tabs, + * returns, echo, and case, according to the termcap entry. + */ +void +set_conversions(TTY * tty_settings) +{ +#if defined(EXP_WIN32_DRIVER) + /* FIXME */ +#else +#ifdef ONLCR + tty_settings->c_oflag |= ONLCR; +#endif + tty_settings->c_iflag |= ICRNL; + tty_settings->c_lflag |= ECHO; +#ifdef OXTABS + tty_settings->c_oflag |= OXTABS; +#endif /* OXTABS */ + + /* test used to be tgetflag("NL") */ + if (VALID_STRING(newline) && newline[0] == '\n' && !newline[1]) { + /* Newline, not linefeed. */ +#ifdef ONLCR + tty_settings->c_oflag &= ~((unsigned) ONLCR); +#endif + tty_settings->c_iflag &= ~((unsigned) ICRNL); + } +#ifdef OXTABS + /* test used to be tgetflag("pt") */ + if (VALID_STRING(set_tab) && VALID_STRING(clear_all_tabs)) + tty_settings->c_oflag &= ~OXTABS; +#endif /* OXTABS */ + tty_settings->c_lflag |= (ECHOE | ECHOK); +#endif +} + +static bool +sent_string(const char *s) +{ + bool sent = FALSE; + if (VALID_STRING(s)) { + tputs(s, 0, out_char); + sent = TRUE; + } + return sent; +} + +static bool +to_left_margin(void) +{ + if (VALID_STRING(carriage_return)) { + sent_string(carriage_return); + } else { + out_char('\r'); + } + return TRUE; +} + +/* + * Set the hardware tabs on the terminal, using the 'ct' (clear all tabs), + * 'st' (set one tab) and 'ch' (horizontal cursor addressing) capabilities. + * This is done before 'if' and 'is', so they can recover in case of error. + * + * Return TRUE if we set any tab stops, FALSE if not. + */ +static bool +reset_tabstops(int wide) +{ + if ((init_tabs != 8) + && VALID_NUMERIC(init_tabs) + && VALID_STRING(set_tab) + && VALID_STRING(clear_all_tabs)) { + int c; + + to_left_margin(); + tputs(clear_all_tabs, 0, out_char); + if (init_tabs > 1) { + if (init_tabs > wide) + init_tabs = (short) wide; + for (c = init_tabs; c < wide; c += init_tabs) { + fprintf(my_file, "%*s", init_tabs, " "); + tputs(set_tab, 0, out_char); + } + to_left_margin(); + } + return (TRUE); + } + return (FALSE); +} + +/* Output startup string. */ +bool +send_init_strings(int fd GCC_UNUSED, TTY * old_settings) +{ + int i; + bool need_flush = FALSE; + + (void) old_settings; +#ifdef TAB3 + if (old_settings != 0 && + old_settings->c_oflag & (TAB3 | ONLCR | OCRNL | ONLRET)) { + old_settings->c_oflag &= (TAB3 | ONLCR | OCRNL | ONLRET); + SET_TTY(fd, old_settings); + } +#endif + if (use_reset || use_init) { + if (VALID_STRING(init_prog)) { + IGNORE_RC(system(init_prog)); + } + + need_flush |= sent_string((use_reset && (reset_1string != 0)) + ? reset_1string + : init_1string); + + need_flush |= sent_string((use_reset && (reset_2string != 0)) + ? reset_2string + : init_2string); + + if (VALID_STRING(clear_margins)) { + need_flush |= sent_string(clear_margins); + } else +#if defined(set_lr_margin) + if (VALID_STRING(set_lr_margin)) { + need_flush |= sent_string(TIPARM_2(set_lr_margin, 0, columns - 1)); + } else +#endif +#if defined(set_left_margin_parm) && defined(set_right_margin_parm) + if (VALID_STRING(set_left_margin_parm) + && VALID_STRING(set_right_margin_parm)) { + need_flush |= sent_string(TIPARM_1(set_left_margin_parm, 0)); + need_flush |= sent_string(TIPARM_1(set_right_margin_parm, + columns - 1)); + } else +#endif + if (VALID_STRING(set_left_margin) + && VALID_STRING(set_right_margin)) { + need_flush |= to_left_margin(); + need_flush |= sent_string(set_left_margin); + if (VALID_STRING(parm_right_cursor)) { + need_flush |= sent_string(TIPARM_1(parm_right_cursor, + columns - 1)); + } else { + for (i = 0; i < columns - 1; i++) { + out_char(' '); + need_flush = TRUE; + } + } + need_flush |= sent_string(set_right_margin); + need_flush |= to_left_margin(); + } + + need_flush |= reset_tabstops(columns); + + need_flush |= cat_file((use_reset && reset_file) ? reset_file : init_file); + + need_flush |= sent_string((use_reset && (reset_3string != 0)) + ? reset_3string + : init_3string); + } + + return need_flush; +} + +/* + * Tell the user if a control key has been changed from the default value. + */ +static void +show_tty_change(TTY * old_settings, + TTY * new_settings, + const char *name, + int which, + unsigned def) +{ + unsigned older = 0, newer = 0; + char *p; + +#if defined(EXP_WIN32_DRIVER) + /* noop */ + (void) old_settings; + (void) new_settings; + (void) name; + (void) which; + (void) def; +#else + newer = new_settings->c_cc[which]; + older = old_settings->c_cc[which]; + + if (older == newer && older == def) + return; +#endif + (void) fprintf(stderr, "%s %s ", name, older == newer ? "is" : "set to"); + + if (DISABLED(newer)) { + (void) fprintf(stderr, "undef.\n"); + /* + * Check 'delete' before 'backspace', since the key_backspace value + * is ambiguous. + */ + } else if (newer == 0177) { + (void) fprintf(stderr, "delete.\n"); + } else if ((p = key_backspace) != 0 + && newer == (unsigned char) p[0] + && p[1] == '\0') { + (void) fprintf(stderr, "backspace.\n"); + } else if (newer < 040) { + newer ^= 0100; + (void) fprintf(stderr, "control-%c (^%c).\n", UChar(newer), UChar(newer)); + } else + (void) fprintf(stderr, "%c.\n", UChar(newer)); +} + +/************************************************************************** + * Miscellaneous. + **************************************************************************/ + +void +reset_start(FILE *fp, bool is_reset, bool is_init) +{ + my_file = fp; + use_reset = is_reset; + use_init = is_init; +} + +void +reset_flush(void) +{ + if (my_file != 0) + fflush(my_file); +} + +void +print_tty_chars(TTY * old_settings, TTY * new_settings) +{ +#if defined(EXP_WIN32_DRIVER) + /* noop */ +#else + show_tty_change(old_settings, new_settings, "Erase", VERASE, CERASE); + show_tty_change(old_settings, new_settings, "Kill", VKILL, CKILL); + show_tty_change(old_settings, new_settings, "Interrupt", VINTR, CINTR); +#endif +} + +#if HAVE_SIZECHANGE +/* + * Set window size if not set already, but update our copy of the values if the + * size was set. + */ +void +set_window_size(int fd, short *high, short *wide) +{ + STRUCT_WINSIZE win; + (void) ioctl(fd, IOCTL_GET_WINSIZE, &win); + if (WINSIZE_ROWS(win) == 0 && + WINSIZE_COLS(win) == 0) { + if (*high > 0 && *wide > 0) { + WINSIZE_ROWS(win) = (unsigned short) *high; + WINSIZE_COLS(win) = (unsigned short) *wide; + (void) ioctl(fd, IOCTL_SET_WINSIZE, &win); + } + } else if (WINSIZE_ROWS(win) > 0 && + WINSIZE_COLS(win) > 0) { + *high = (short) WINSIZE_ROWS(win); + *wide = (short) WINSIZE_COLS(win); + } +} +#endif diff --git a/deps/ncurses-6.3/progs/reset_cmd.h b/deps/ncurses-6.3/progs/reset_cmd.h new file mode 100644 index 0000000..91a637c --- /dev/null +++ b/deps/ncurses-6.3/progs/reset_cmd.h @@ -0,0 +1,66 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2016 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: Thomas E Dickey * + ****************************************************************************/ + +/* + * $Id: reset_cmd.h,v 1.9 2021/10/02 20:58:58 tom Exp $ + * + * Utility functions for resetting terminal. + */ +#ifndef RESET_CMD_H +#define RESET_CMD_H 1 +/* *INDENT-OFF* */ + +#define USE_LIBTINFO +#define __INTERNAL_CAPS_VISIBLE /* we need to see has_hardware_tabs */ +#include <progs.priv.h> + +#undef CTRL +#define CTRL(x) ((x) & 0x1f) + +extern bool send_init_strings(int /* fd */, TTY * /* old_settings */); +extern void print_tty_chars(TTY * /* old_settings */, TTY * /* new_settings */); +extern void reset_flush(void); +extern void reset_start(FILE * /* fp */, bool /* is_reset */, bool /* is_init */ ); +extern void reset_tty_settings(int /* fd */, TTY * /* tty_settings */, int /* noset */); +extern void set_control_chars(TTY * /* tty_settings */, int /* erase */, int /* intr */, int /* kill */); +extern void set_conversions(TTY * /* tty_settings */); + +#if HAVE_SIZECHANGE +extern void set_window_size(int /* fd */, short * /* high */, short * /* wide */); +#endif + +extern const char *_nc_progname; + +/* *INDENT-ON* */ + +#endif /* RESET_CMD_H */ diff --git a/deps/ncurses-6.3/progs/tabs.c b/deps/ncurses-6.3/progs/tabs.c new file mode 100644 index 0000000..02de31c --- /dev/null +++ b/deps/ncurses-6.3/progs/tabs.c @@ -0,0 +1,701 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2008-2016,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: Thomas E. Dickey 2008 * + ****************************************************************************/ + +/* + * tabs.c -- set terminal hard-tabstops + */ + +#define USE_LIBTINFO +#include <progs.priv.h> +#include <tty_settings.h> + +MODULE_ID("$Id: tabs.c,v 1.50 2021/10/10 00:54:41 tom Exp $") + +static GCC_NORETURN void usage(void); + +const char *_nc_progname; +static int max_cols; + +static void +failed(const char *s) +{ + perror(s); + ExitProgram(EXIT_FAILURE); +} + +static int +putch(int c) +{ + return putchar(c); +} + +static char * +skip_csi(char *value) +{ + if (UChar(*value) == 0x9b) + ++value; + else if (!strncmp(value, "\033[", 2)) + value += 2; + return value; +} + +/* + * If the terminal uses ANSI clear_all_tabs, then it is not necessary to first + * move to the left margin before clearing tabs. + */ +static bool +ansi_clear_tabs(void) +{ + bool result = FALSE; + if (VALID_STRING(clear_all_tabs)) { + char *param = skip_csi(clear_all_tabs); + if (!strcmp(param, "3g")) + result = TRUE; + } + return result; +} + +static void +do_tabs(int *tab_list) +{ + int last = 1; + int stop; + bool first = TRUE; + + while ((stop = *tab_list++) > 0) { + if (first) { + first = FALSE; + putchar('\r'); + } + if (last < stop) { + while (last++ < stop) { + if (last > max_cols) + break; + putchar(' '); + } + } + if (stop <= max_cols) { + tputs(set_tab, 1, putch); + last = stop; + } else { + break; + } + } + putchar('\r'); +} + +/* + * Decode a list of tab-stops from a string, returning an array of integers. + * If the margin is positive (because the terminal does not support margins), + * work around this by adding the margin to the decoded values. + */ +static int * +decode_tabs(const char *tab_list, int margin) +{ + int *result = typeCalloc(int, strlen(tab_list) + (unsigned) max_cols); + int n = 0; + int value = 0; + int prior = 0; + int ch; + + if (result == 0) + failed("decode_tabs"); + + if (margin < 0) + margin = 0; + + while ((ch = *tab_list++) != '\0') { + if (isdigit(UChar(ch))) { + value *= 10; + value += (ch - '0'); + } else if (ch == ',') { + result[n] = value + prior + margin; + if (n > 0 && result[n] <= result[n - 1]) { + fprintf(stderr, + "%s: tab-stops are not in increasing order: %d %d\n", + _nc_progname, value, result[n - 1]); + free(result); + result = 0; + break; + } + ++n; + value = 0; + prior = 0; + } else if (ch == '+') { + if (n) + prior = result[n - 1]; + } + } + + if (result != 0) { + /* + * If there is only one value, then it is an option such as "-8". + */ + if ((n == 0) && (value > 0)) { + int step = value; + value = 1; + while (n < max_cols - 1) { + result[n++] = value + margin; + value += step; + } + } + + /* + * Add the last value, if any. + */ + result[n++] = value + prior + margin; + result[n] = 0; + } + + return result; +} + +static void +print_ruler(int *tab_list, const char *new_line) +{ + int last = 0; + int n; + + /* first print a readable ruler */ + for (n = 0; n < max_cols; n += 10) { + int ch = 1 + (n / 10); + char buffer[20]; + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "----+----%c", + ((ch < 10) + ? (ch + '0') + : (ch + 'A' - 10))); + printf("%.*s", ((max_cols - n) > 10) ? 10 : (max_cols - n), buffer); + } + printf("%s", new_line); + + /* now, print '*' for each stop */ + for (n = 0, last = 0; (tab_list[n] > 0) && (last < max_cols); ++n) { + int stop = tab_list[n]; + + while (++last < stop) { + if (last <= max_cols) { + putchar('-'); + } else { + break; + } + } + if (last <= max_cols) { + putchar('*'); + last = stop; + } else { + break; + } + } + while (++last <= max_cols) + putchar('-'); + printf("%s", new_line); +} + +/* + * Write an '*' on each tabstop, to demonstrate whether it lines up with the + * ruler. + */ +static void +write_tabs(int *tab_list, const char *new_line) +{ + int stop; + + while ((stop = *tab_list++) > 0 && stop <= max_cols) { + fputs((stop == 1) ? "*" : "\t*", stdout); + }; + /* also show a tab _past_ the stops */ + if (stop < max_cols) + fputs("\t+", stdout); + fputs(new_line, stdout); +} + +/* + * Trim leading/trailing blanks, as well as blanks after a comma. + * Convert embedded blanks to commas. + */ +static char * +trimmed_tab_list(const char *source) +{ + char *result = strdup(source); + if (result != 0) { + int j, k, last; + + for (j = k = last = 0; result[j] != 0; ++j) { + int ch = UChar(result[j]); + if (isspace(ch)) { + if (last == '\0') { + continue; + } else if (isdigit(last) || last == ',') { + ch = ','; + } + } else if (ch == ',') { + ; + } else { + if (last == ',') + result[k++] = (char) last; + result[k++] = (char) ch; + } + last = ch; + } + result[k] = '\0'; + } + return result; +} + +static bool +comma_is_needed(const char *source) +{ + bool result = FALSE; + + if (source != 0) { + size_t len = strlen(source); + if (len != 0) + result = (source[len - 1] != ','); + } else { + result = FALSE; + } + return result; +} + +/* + * Add a command-line parameter to the tab-list. It can be blank- or comma- + * separated (or a mixture). For simplicity, empty tabs are ignored, e.g., + * tabs 1,,6,11 + * tabs 1,6,11 + * are treated the same. + */ +static const char * +add_to_tab_list(char **append, const char *value) +{ + char *result = *append; + char *copied = trimmed_tab_list(value); + + if (copied != 0 && *copied != '\0') { + const char *comma = ","; + size_t need = 1 + strlen(copied); + + if (*copied == ',') + comma = ""; + else if (!comma_is_needed(*append)) + comma = ""; + + need += strlen(comma); + if (*append != 0) + need += strlen(*append); + + result = malloc(need); + if (result == 0) + failed("add_to_tab_list"); + + *result = '\0'; + if (*append != 0) { + _nc_STRCPY(result, *append, need); + free(*append); + } + _nc_STRCAT(result, comma, need); + _nc_STRCAT(result, copied, need); + + *append = result; + } + free(copied); + return result; +} + +/* + * If the terminal supports it, (re)set the left margin and return true. + * Otherwise, return false. + */ +static bool +do_set_margin(int margin, bool no_op) +{ + bool result = FALSE; + + if (margin == 0) { /* 0 is special case for resetting */ + if (VALID_STRING(clear_margins)) { + result = TRUE; + if (!no_op) + tputs(clear_margins, 1, putch); + } + } else if (margin-- < 0) { /* margin will be 0-based from here on */ + result = TRUE; + } else if (VALID_STRING(set_left_margin)) { + result = TRUE; + if (!no_op) { + /* + * assuming we're on the first column of the line, move the cursor + * to the column at which we will set a margin. + */ + if (VALID_STRING(column_address)) { + tputs(TIPARM_1(column_address, margin), 1, putch); + } else if (margin >= 1) { + if (VALID_STRING(parm_right_cursor)) { + tputs(TIPARM_1(parm_right_cursor, margin), 1, putch); + } else { + while (margin-- > 0) + putch(' '); + } + } + tputs(set_left_margin, 1, putch); + } + } else if (VALID_STRING(set_left_margin_parm)) { + result = TRUE; + if (!no_op) { + if (VALID_STRING(set_right_margin_parm)) { + tputs(TIPARM_1(set_left_margin_parm, margin), 1, putch); + } else { + tputs(TIPARM_2(set_left_margin_parm, margin, max_cols), 1, putch); + } + } + } else if (VALID_STRING(set_lr_margin)) { + result = TRUE; + if (!no_op) { + tputs(TIPARM_2(set_lr_margin, margin, max_cols), 1, putch); + } + } + return result; +} + +/* + * Check for illegal characters in the tab-list. + */ +static bool +legal_tab_list(const char *tab_list) +{ + bool result = TRUE; + + if (tab_list != 0 && *tab_list != '\0') { + if (comma_is_needed(tab_list)) { + int n; + + for (n = 0; tab_list[n] != '\0'; ++n) { + int ch = UChar(tab_list[n]); + + if (!(isdigit(ch) || ch == ',' || ch == '+')) { + fprintf(stderr, + "%s: unexpected character found '%c'\n", + _nc_progname, ch); + result = FALSE; + break; + } + } + } else { + fprintf(stderr, "%s: trailing comma found '%s'\n", _nc_progname, tab_list); + result = FALSE; + } + } else { + /* if no list given, default to "tabs -8" */ + } + return result; +} + +static char * +skip_list(char *value) +{ + while (*value != '\0' && + (isdigit(UChar(*value)) || + isspace(UChar(*value)) || + strchr("+,", UChar(*value)) != 0)) { + ++value; + } + return value; +} + +static void +usage(void) +{ +#define DATA(s) s "\n" + static const char msg[] = + { + DATA("Usage: tabs [options] [tabstop-list]") + DATA("") + DATA("Options:") + DATA(" -0 reset tabs") + DATA(" -8 set tabs to standard interval") + DATA(" -a Assembler, IBM S/370, first format") + DATA(" -a2 Assembler, IBM S/370, second format") + DATA(" -c COBOL, normal format") + DATA(" -c2 COBOL compact format") + DATA(" -c3 COBOL compact format extended") + DATA(" -d debug (show ruler with expected/actual tab positions)") + DATA(" -f FORTRAN") + DATA(" -n no-op (do not modify terminal settings)") + DATA(" -p PL/I") + DATA(" -s SNOBOL") + DATA(" -u UNIVAC 1100 Assembler") + DATA(" -T name use terminal type 'name'") + DATA(" -V print version") + DATA("") + DATA("A tabstop-list is an ordered list of column numbers, e.g., 1,11,21") + DATA("or 1,+10,+10 which is the same.") + }; +#undef DATA + + fflush(stdout); + fputs(msg, stderr); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int rc = EXIT_FAILURE; + bool debug = FALSE; + bool no_op = FALSE; + bool change_tty = FALSE; + int n, ch; + NCURSES_CONST char *term_name = 0; + char *append = 0; + const char *tab_list = 0; + const char *new_line = "\n"; + int margin = -1; + TTY tty_settings; + int fd; + + _nc_progname = _nc_rootname(argv[0]); + + if ((term_name = getenv("TERM")) == 0) + term_name = "ansi+tabs"; + + /* cannot use getopt, since some options are two-character */ + for (n = 1; n < argc; ++n) { + char *option = argv[n]; + switch (option[0]) { + case '-': + while ((ch = *++option) != '\0') { + switch (ch) { + case 'a': + switch (*++option) { + default: + case '\0': + tab_list = "1,10,16,36,72"; + option--; + /* Assembler, IBM S/370, first format */ + break; + case '2': + tab_list = "1,10,16,40,72"; + /* Assembler, IBM S/370, second format */ + break; + } + break; + case 'c': + switch (*++option) { + default: + case '\0': + tab_list = "1,8,12,16,20,55"; + option--; + /* COBOL, normal format */ + break; + case '2': + tab_list = "1,6,10,14,49"; + /* COBOL compact format */ + break; + case '3': + tab_list = "1,6,10,14,18,22,26,30,34,38,42,46,50,54,58,62,67"; + /* COBOL compact format extended */ + break; + } + break; + case 'd': /* ncurses extension */ + debug = TRUE; + break; + case 'f': + tab_list = "1,7,11,15,19,23"; + /* FORTRAN */ + break; + case 'n': /* ncurses extension */ + no_op = TRUE; + break; + case 'p': + tab_list = "1,5,9,13,17,21,25,29,33,37,41,45,49,53,57,61"; + /* PL/I */ + break; + case 's': + tab_list = "1,10,55"; + /* SNOBOL */ + break; + case 'u': + tab_list = "1,12,20,44"; + /* UNIVAC 1100 Assembler */ + break; + case 'T': + ++n; + if (*++option != '\0') { + term_name = option; + } else { + term_name = argv[n]; + option--; + } + option += ((int) strlen(option)) - 1; + continue; + case 'V': + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + default: + if (isdigit(UChar(*option))) { + char *copy = strdup(option); + *skip_list(copy) = '\0'; + tab_list = copy; + option = skip_list(option) - 1; + } else { + usage(); + } + break; + } + } + break; + case '+': + if ((ch = *++option) != '\0') { + int digits = 0; + int number = 0; + + switch (ch) { + case 'm': + /* + * The "+mXXX" option is unimplemented because only the long-obsolete + * att510d implements smgl, which is needed to support + * this option. + */ + while ((ch = *++option) != '\0') { + if (isdigit(UChar(ch))) { + ++digits; + number = number * 10 + (ch - '0'); + } else { + usage(); + } + } + if (digits == 0) + number = 10; + margin = number; + break; + default: + /* special case of relative stops separated by spaces? */ + if (option == argv[n] + 1) { + tab_list = add_to_tab_list(&append, argv[n]); + } + break; + } + } + break; + default: + if (append != 0) { + if (tab_list != (const char *) append) { + /* one of the predefined options was used */ + free(append); + append = 0; + } + } + tab_list = add_to_tab_list(&append, option); + break; + } + } + + fd = save_tty_settings(&tty_settings, FALSE); + + setupterm(term_name, fd, (int *) 0); + + max_cols = (columns > 0) ? columns : 80; + if (margin > 0) + max_cols -= margin; + + if (!VALID_STRING(clear_all_tabs)) { + fprintf(stderr, + "%s: terminal type '%s' cannot reset tabs\n", + _nc_progname, term_name); + } else if (!VALID_STRING(set_tab)) { + fprintf(stderr, + "%s: terminal type '%s' cannot set tabs\n", + _nc_progname, term_name); + } else if (legal_tab_list(tab_list)) { + int *list; + + if (tab_list == NULL) + tab_list = add_to_tab_list(&append, "8"); + + if (!no_op) { +#if defined(TERMIOS) && defined(OCRNL) + /* set tty modes to -ocrnl to allow \r */ + if (isatty(STDOUT_FILENO)) { + TTY new_settings = tty_settings; + new_settings.c_oflag &= (unsigned)~OCRNL; + update_tty_settings(&tty_settings, &new_settings); + change_tty = TRUE; + new_line = "\r\n"; + } +#endif + + if (!ansi_clear_tabs()) + putch('\r'); + tputs(clear_all_tabs, 1, putch); + } + + if (margin >= 0) { + putch('\r'); + if (margin > 0) { + /* reset existing margin before setting margin, to reduce + * problems moving left of the current margin. + */ + if (do_set_margin(0, no_op)) + putch('\r'); + } + if (do_set_margin(margin, no_op)) + margin = -1; + } + + list = decode_tabs(tab_list, margin); + + if (list != 0) { + if (!no_op) + do_tabs(list); + if (debug) { + fflush(stderr); + printf("tabs %s%s", tab_list, new_line); + print_ruler(list, new_line); + write_tabs(list, new_line); + } + free(list); + } else if (debug) { + fflush(stderr); + printf("tabs %s%s", tab_list, new_line); + } + if (!no_op) { + if (change_tty) { + restore_tty_settings(); + } + } + rc = EXIT_SUCCESS; + } + if (append != 0) + free(append); + ExitProgram(rc); +} diff --git a/deps/ncurses-6.3/progs/tic.c b/deps/ncurses-6.3/progs/tic.c new file mode 100644 index 0000000..dba2890 --- /dev/null +++ b/deps/ncurses-6.3/progs/tic.c @@ -0,0 +1,3155 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2017,2018 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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996 on * + ****************************************************************************/ + +/* + * tic.c --- Main program for terminfo compiler + * by Eric S. Raymond + * and Thomas E Dickey + * + */ + +#include <progs.priv.h> +#include <sys/stat.h> + +#include <dump_entry.h> +#include <tparm_type.h> +#include <hashed_db.h> +#include <parametrized.h> +#include <transform.h> + +MODULE_ID("$Id: tic.c,v 1.307 2021/10/05 08:07:05 tom Exp $") + +#define STDIN_NAME "<stdin>" + +const char *_nc_progname = "tic"; + +static FILE *log_fp; +static FILE *tmp_fp; +static bool capdump = FALSE; /* running as infotocap? */ +static bool infodump = FALSE; /* running as captoinfo? */ +static bool showsummary = FALSE; +static unsigned debug_level; +static char **namelst = 0; +static const char *to_remove; + +#if NCURSES_XNAMES +static bool using_extensions = FALSE; +#endif + +static void (*save_check_termtype) (TERMTYPE2 *, bool); +static void check_termtype(TERMTYPE2 *tt, bool); + +static const char usage_string[] = "\ +[-e names] \ +[-o dir] \ +[-R name] \ +[-v[n]] \ +[-V] \ +[-w[n]] \ +[-\ +1\ +a\ +C\ +D\ +c\ +f\ +G\ +g\ +I\ +K\ +L\ +N\ +r\ +s\ +T\ +t\ +U\ +x\ +] \ +source-file\n"; + +#if NO_LEAKS +static void +free_namelist(char **src) +{ + if (src != 0) { + int n; + for (n = 0; src[n] != 0; ++n) + free(src[n]); + free(src); + } +} +#endif + +static void +cleanup(void) +{ +#if NO_LEAKS + free_namelist(namelst); + _nc_leaks_dump_entry(); +#endif + if (tmp_fp != 0) + fclose(tmp_fp); + if (to_remove != 0) { + int rc; + +#if HAVE_REMOVE + rc = remove(to_remove); +#else + rc = unlink(to_remove); +#endif + if (rc != 0) + perror(to_remove); + } +} + +static void +failed(const char *msg) +{ + perror(msg); + ExitProgram(EXIT_FAILURE); +} + +static void +usage(void) +{ +#define DATA(s) s "\n" + static const char options_string[] = + { + DATA("Options:") + DATA(" -0 format translation output all capabilities on one line") + DATA(" -1 format translation output one capability per line") +#if NCURSES_XNAMES + DATA(" -a retain commented-out capabilities (sets -x also)") +#endif + DATA(" -C translate entries to termcap source form") + DATA(" -D print list of tic's database locations (first must be writable)") + DATA(" -c check only, validate input without compiling or translating") + DATA(" -e<names> translate/compile only entries named by comma-separated list") + DATA(" -f format complex strings for readability") + DATA(" -G format %{number} to %'char'") + DATA(" -g format %'char' to %{number}") + DATA(" -I translate entries to terminfo source form") + DATA(" -K translate entries to termcap source form with BSD syntax") + DATA(" -L translate entries to full terminfo source form") + DATA(" -N disable smart defaults for source translation") + DATA(" -o<dir> set output directory for compiled entry writes") + DATA(" -Q[n] dump compiled description") + DATA(" -q brief listing, removes headers") + DATA(" -R<name> restrict translation to given terminfo/termcap version") + DATA(" -r force resolution of all use entries in source translation") + DATA(" -s print summary statistics") + DATA(" -T remove size-restrictions on compiled description") +#if NCURSES_XNAMES + DATA(" -t suppress commented-out capabilities") +#endif + DATA(" -U suppress post-processing of entries") + DATA(" -V print version") + DATA(" -W wrap long strings according to -w[n] option") + DATA(" -v[n] set verbosity level") + DATA(" -w[n] set format width for translation output") +#if NCURSES_XNAMES + DATA(" -x treat unknown capabilities as user-defined") +#endif + DATA("") + DATA("Parameters:") + DATA(" <file> file to translate or compile") + }; +#undef DATA + + fprintf(stderr, "Usage: %s %s\n", _nc_progname, usage_string); + fputs(options_string, stderr); + ExitProgram(EXIT_FAILURE); +} + +#define L_BRACE '{' +#define R_BRACE '}' +#define S_QUOTE '\'' + +static void +write_it(ENTRY * ep) +{ + unsigned n; + int ch; + char *s, *d, *t; + char result[MAX_ENTRY_SIZE]; + + /* + * Look for strings that contain %{number}, convert them to %'char', + * which is shorter and runs a little faster. + */ + for (n = 0; n < STRCOUNT; n++) { + s = ep->tterm.Strings[n]; + if (VALID_STRING(s) + && strchr(s, L_BRACE) != 0) { + d = result; + t = s; + while ((ch = *t++) != 0) { + *d++ = (char) ch; + if (ch == '\\') { + if ((*d++ = *t++) == '\0') + break; + } else if ((ch == '%') + && (*t == L_BRACE)) { + char *v = 0; + long value = strtol(t + 1, &v, 0); + if (v != 0 + && *v == R_BRACE + && value > 0 + && value != '\\' /* FIXME */ + && value < 127 + && isprint((int) value)) { + *d++ = S_QUOTE; + *d++ = (char) value; + *d++ = S_QUOTE; + t = (v + 1); + } + } + } + *d = 0; + if (strlen(result) < strlen(s)) + _nc_STRCPY(s, result, strlen(s) + 1); + } + } + + _nc_set_type(_nc_first_name(ep->tterm.term_names)); + _nc_curr_line = (int) ep->startline; + _nc_write_entry(&ep->tterm); +} + +static bool +immedhook(ENTRY * ep GCC_UNUSED) +/* write out entries with no use capabilities immediately to save storage */ +{ +#if !HAVE_BIG_CORE + /* + * This is strictly a core-economy kluge. The really clean way to handle + * compilation is to slurp the whole file into core and then do all the + * name-collision checks and entry writes in one swell foop. But the + * terminfo master file is large enough that some core-poor systems swap + * like crazy when you compile it this way...there have been reports of + * this process taking *three hours*, rather than the twenty seconds or + * less typical on my development box. + * + * So. This hook *immediately* 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's OK; the resolution code will fetch it off disk + * when it can't find it in core. + * + * Name collisions will still be detected, just not as cleanly. The + * write_entry() code complains before overwriting an entry that + * postdates the time of tic's first call to write_entry(). Thus + * it will complain about overwriting entries newly made during the + * tic run, but not about overwriting ones that predate it. + * + * The reason this is a hook, and not in line with the rest of the + * compiler code, is that the support for termcap fallback cannot assume + * it has anywhere to spool out these entries! + * + * The _nc_set_type() call here requires a compensating one in + * _nc_parse_entry(). + * + * If you define HAVE_BIG_CORE, you'll disable this kluge. This will + * make tic a bit faster (because the resolution code won't have to do + * disk I/O nearly as often). + */ + if (ep->nuses == 0) { + int oldline = _nc_curr_line; + + write_it(ep); + _nc_curr_line = oldline; + free(ep->tterm.str_table); + return (TRUE); + } +#endif /* HAVE_BIG_CORE */ + return (FALSE); +} + +static void +put_translate(int c) +/* emit a comment char, translating terminfo names to termcap names */ +{ + static bool in_name = FALSE; + static size_t used; + + if (in_name) { + static size_t have; + static char *namebuf, *suffix; + + if (used + 1 >= have) { + have += 132; + if ((namebuf = typeRealloc(char, have, namebuf)) == NULL) + failed("put_translate namebuf"); + if ((suffix = typeRealloc(char, have, suffix)) == NULL) + failed("put_translate suffix"); + } + if (c == '\n' || c == '@') { + namebuf[used++] = '\0'; + (void) putchar('<'); + (void) fputs(namebuf, stdout); + putchar(c); + in_name = FALSE; + } else if (c != '>') { + namebuf[used++] = (char) c; + } else { /* ah! candidate name! */ + char *up; + NCURSES_CONST char *tp; + + namebuf[used++] = '\0'; + in_name = FALSE; + + suffix[0] = '\0'; + if ((up = strchr(namebuf, '#')) != 0 + || (up = strchr(namebuf, '=')) != 0 + || ((up = strchr(namebuf, '@')) != 0 && up[1] == '>')) { + _nc_STRCPY(suffix, up, have); + *up = '\0'; + } + + if ((tp = nametrans(namebuf)) != 0) { + (void) putchar(':'); + (void) fputs(tp, stdout); + (void) fputs(suffix, stdout); + (void) putchar(':'); + } else { + /* couldn't find a translation, just dump the name */ + (void) putchar('<'); + (void) fputs(namebuf, stdout); + (void) fputs(suffix, stdout); + (void) putchar('>'); + } + } + } else { + used = 0; + if (c == '<') { + in_name = TRUE; + } else { + putchar(c); + } + } +} + +/* Returns a string, stripped of leading/trailing whitespace */ +static char * +stripped(char *src) +{ + char *dst = 0; + + while (isspace(UChar(*src))) + src++; + + if (*src != '\0') { + if ((dst = strdup(src)) == NULL) { + failed("strdup"); + } else { + size_t len = strlen(dst); + while (--len != 0 && isspace(UChar(dst[len]))) + dst[len] = '\0'; + } + } + return dst; +} + +static FILE * +open_tempfile(char *filename) +{ + FILE *result = 0; + + _nc_STRCPY(filename, "/tmp/XXXXXX", PATH_MAX); +#if HAVE_MKSTEMP + { + int oldmask = (int) umask(077); + int fd = mkstemp(filename); + if (fd >= 0) + result = fdopen(fd, "w"); + umask((mode_t) oldmask); + } +#else + if (tmpnam(filename) != 0) + result = safe_fopen(filename, "w"); +#endif + return result; +} + +static FILE * +copy_input(FILE *source, const char *filename, char *alt_file) +{ + char my_altfile[PATH_MAX]; + FILE *result = 0; + FILE *target; + int ch; + + if (alt_file == NULL) + alt_file = my_altfile; + + if (source == NULL) { + failed("copy_input (source)"); + } else if ((target = open_tempfile(alt_file)) == NULL) { + failed("copy_input (target)"); + } else { + clearerr(source); + for (;;) { + ch = fgetc(source); + if (feof(source)) { + break; + } else if (ferror(source)) { + failed(filename); + } else if (ch == 0) { + /* don't loop in case someone wants to convert /dev/zero */ + fprintf(stderr, "%s: %s is not a text-file\n", _nc_progname, filename); + ExitProgram(EXIT_FAILURE); + } + fputc(ch, target); + } + fclose(source); + /* + * rewind() does not force the target file's data to disk (not does + * fflush()...). So open a second stream on the data and then close + * the one that we were writing on before starting to read from the + * second stream. + */ + result = safe_fopen(alt_file, "r+"); + fclose(target); + to_remove = strdup(alt_file); + } + return result; +} + +static FILE * +open_input(const char *filename, char *alt_file) +{ + FILE *fp; + struct stat sb; + int mode; + + if (!strcmp(filename, "-")) { + fp = copy_input(stdin, STDIN_NAME, alt_file); + } else if (stat(filename, &sb) == -1) { + fprintf(stderr, "%s: %s %s\n", _nc_progname, filename, strerror(errno)); + ExitProgram(EXIT_FAILURE); + } else if ((mode = (sb.st_mode & S_IFMT)) == S_IFDIR + || (mode != S_IFREG && mode != S_IFCHR && mode != S_IFIFO)) { + fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename); + ExitProgram(EXIT_FAILURE); + } else { + fp = safe_fopen(filename, "r"); + + if (fp == NULL) { + fprintf(stderr, "%s: Can't open %s\n", _nc_progname, filename); + ExitProgram(EXIT_FAILURE); + } + if (mode != S_IFREG) { + if (alt_file != 0) { + FILE *fp2 = copy_input(fp, filename, alt_file); + fp = fp2; + } else { + fprintf(stderr, "%s: %s is not a file\n", _nc_progname, filename); + ExitProgram(EXIT_FAILURE); + } + } + } + return fp; +} + +/* Parse the "-e" option-value into a list of names */ +static char ** +make_namelist(char *src) +{ + char **dst = 0; + + char *s, *base; + unsigned pass, n, nn; + char buffer[BUFSIZ]; + + if (src == NULL) { + /* EMPTY */ ; + } else if (strchr(src, '/') != 0) { /* a filename */ + FILE *fp = open_input(src, (char *) 0); + + for (pass = 1; pass <= 2; pass++) { + nn = 0; + while (fgets(buffer, sizeof(buffer), fp) != 0) { + if ((s = stripped(buffer)) != 0) { + if (dst != 0) + dst[nn] = s; + else + free(s); + nn++; + } + } + if (pass == 1) { + if ((dst = typeCalloc(char *, nn + 1)) == NULL) + failed("make_namelist"); + rewind(fp); + } + } + fclose(fp); + } else { /* literal list of names */ + for (pass = 1; pass <= 2; pass++) { + for (n = nn = 0, base = src;; n++) { + int mark = src[n]; + if (mark == ',' || mark == '\0') { + if (pass == 1) { + nn++; + } else { + src[n] = '\0'; + if ((s = stripped(base)) != 0) + dst[nn++] = s; + base = &src[n + 1]; + } + } + if (mark == '\0') + break; + } + if (pass == 1) { + if ((dst = typeCalloc(char *, nn + 1)) == NULL) + failed("make_namelist"); + } + } + } + if (showsummary && (dst != 0)) { + fprintf(log_fp, "Entries that will be compiled:\n"); + for (n = 0; dst[n] != 0; n++) + fprintf(log_fp, "%u:%s\n", n + 1, dst[n]); + } + return dst; +} + +static bool +matches(char **needle, const char *haystack) +/* does entry in needle list match |-separated field in haystack? */ +{ + bool code = FALSE; + + if (needle != 0) { + size_t n; + + for (n = 0; needle[n] != 0; n++) { + if (_nc_name_match(haystack, needle[n], "|")) { + code = TRUE; + break; + } + } + } else + code = TRUE; + return (code); +} + +static char * +valid_db_path(const char *nominal) +{ + struct stat sb; +#if USE_HASHED_DB + char suffix[] = DBM_SUFFIX; + size_t need = strlen(nominal) + sizeof(suffix); + char *result = malloc(need); + + if (result == NULL) + failed("valid_db_path"); + _nc_STRCPY(result, nominal, need); + if (strcmp(result + need - sizeof(suffix), suffix)) { + _nc_STRCAT(result, suffix, need); + } +#else + char *result = strdup(nominal); +#endif + + DEBUG(1, ("** stat(%s)", result)); + if (stat(result, &sb) >= 0) { +#if USE_HASHED_DB + if (!S_ISREG(sb.st_mode) + || access(result, R_OK | W_OK) != 0) { + DEBUG(1, ("...not a writable file")); + free(result); + result = 0; + } +#else + if (!S_ISDIR(sb.st_mode) + || access(result, R_OK | W_OK | X_OK) != 0) { + DEBUG(1, ("...not a writable directory")); + free(result); + result = 0; + } +#endif + } else { + /* check if parent is directory and is writable */ + unsigned leaf = _nc_pathlast(result); + + DEBUG(1, ("...not found")); + if (leaf) { + char save = result[leaf]; + result[leaf] = 0; + if (stat(result, &sb) >= 0 + && S_ISDIR(sb.st_mode) + && access(result, R_OK | W_OK | X_OK) == 0) { + result[leaf] = save; + } else { + DEBUG(1, ("...parent directory %s is not writable", result)); + free(result); + result = 0; + } + } else { + DEBUG(1, ("... no parent directory")); + free(result); + result = 0; + } + } + return result; +} + +/* + * Show the databases to which tic could write. The location to which it + * writes is always the first one. If none are writable, print an error + * message. + */ +static void +show_databases(const char *outdir) +{ + bool specific = (outdir != 0) || getenv("TERMINFO") != 0; + char *result; + const char *tried = 0; + + if (outdir == NULL) { + outdir = _nc_tic_dir(0); + } + if ((result = valid_db_path(outdir)) != 0) { + printf("%s\n", result); + free(result); + } else { + tried = outdir; + } + + if ((outdir = _nc_home_terminfo())) { + if ((result = valid_db_path(outdir)) != 0) { + printf("%s\n", result); + free(result); + } else if (!specific) { + tried = outdir; + } + } + + /* + * If we can write in neither location, give an error message. + */ + if (tried) { + fflush(stdout); + fprintf(stderr, "%s: %s (no permission)\n", _nc_progname, tried); + ExitProgram(EXIT_FAILURE); + } +} + +static void +add_digit(int *target, int source) +{ + *target = (*target * 10) + (source - '0'); +} + +int +main(int argc, char *argv[]) +{ + char my_tmpname[PATH_MAX]; + char my_altfile[PATH_MAX]; + int v_opt = -1; + int smart_defaults = TRUE; + char *termcap; + ENTRY *qp; + + int this_opt, last_opt = '?'; + + int outform = F_TERMINFO; /* output format */ + int sortmode = S_TERMINFO; /* sort_mode */ + + int width = 60; + int height = 65535; + bool formatted = FALSE; /* reformat complex strings? */ + bool literal = FALSE; /* suppress post-processing? */ + int numbers = 0; /* format "%'char'" to/from "%{number}" */ + bool forceresolve = FALSE; /* force resolution */ + bool limited = TRUE; + char *tversion = (char *) NULL; + const char *source_file = "terminfo"; + char *outdir = (char *) NULL; + bool check_only = FALSE; + bool suppress_untranslatable = FALSE; + int quickdump = 0; + bool quiet = FALSE; + bool wrap_strings = FALSE; + + log_fp = stderr; + + _nc_progname = _nc_rootname(argv[0]); + atexit(cleanup); + + if ((infodump = same_program(_nc_progname, PROG_CAPTOINFO)) != FALSE) { + outform = F_TERMINFO; + sortmode = S_TERMINFO; + } + if ((capdump = same_program(_nc_progname, PROG_INFOTOCAP)) != FALSE) { + outform = F_TERMCAP; + sortmode = S_TERMCAP; + } +#if NCURSES_XNAMES + use_extended_names(FALSE); +#endif + _nc_strict_bsd = 0; + + /* + * Processing arguments is a little complicated, since someone made a + * design decision to allow the numeric values for -w, -v options to + * be optional. + */ + while ((this_opt = getopt(argc, argv, + "0123456789CDIKLNQR:TUVWace:fGgo:qrstvwx")) != -1) { + if (isdigit(this_opt)) { + switch (last_opt) { + case 'Q': + add_digit(&quickdump, this_opt); + break; + case 'v': + add_digit(&v_opt, this_opt); + break; + case 'w': + add_digit(&width, this_opt); + break; + default: + switch (this_opt) { + case '0': + last_opt = this_opt; + width = 65535; + height = 1; + break; + case '1': + last_opt = this_opt; + width = 0; + break; + default: + usage(); + } + } + continue; + } + switch (this_opt) { + case 'K': + _nc_strict_bsd = 1; + /* the initial version of -K in 20110730 fell-thru here, but the + * same flag is useful when reading sources -TD + */ + break; + case 'C': + capdump = TRUE; + outform = F_TERMCAP; + sortmode = S_TERMCAP; + break; + case 'D': + debug_level = VtoTrace(v_opt); + set_trace_level(debug_level); + show_databases(outdir); + ExitProgram(EXIT_SUCCESS); + break; + case 'I': + infodump = TRUE; + outform = F_TERMINFO; + sortmode = S_TERMINFO; + break; + case 'L': + infodump = TRUE; + outform = F_VARIABLE; + sortmode = S_VARIABLE; + break; + case 'N': + smart_defaults = FALSE; + literal = TRUE; + break; + case 'Q': + quickdump = 0; + break; + case 'R': + tversion = optarg; + break; + case 'T': + limited = FALSE; + break; + case 'U': + literal = TRUE; + break; + case 'V': + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + case 'W': + wrap_strings = TRUE; + break; + case 'c': + check_only = TRUE; + break; + case 'e': + namelst = make_namelist(optarg); + break; + case 'f': + formatted = TRUE; + break; + case 'G': + numbers = 1; + break; + case 'g': + numbers = -1; + break; + case 'o': + outdir = optarg; + break; + case 'q': + quiet = TRUE; + break; + case 'r': + forceresolve = TRUE; + break; + case 's': + showsummary = TRUE; + break; + case 'v': + v_opt = 0; + break; + case 'w': + width = 0; + break; +#if NCURSES_XNAMES + case 't': + _nc_disable_period = FALSE; + suppress_untranslatable = TRUE; + break; + case 'a': + _nc_disable_period = TRUE; + /* FALLTHRU */ + case 'x': + use_extended_names(TRUE); + using_extensions = TRUE; + break; +#endif + default: + usage(); + } + last_opt = this_opt; + } + + debug_level = VtoTrace(v_opt); + set_trace_level(debug_level); + + if (_nc_tracing) { + save_check_termtype = _nc_check_termtype2; + _nc_check_termtype2 = check_termtype; + } +#if !HAVE_BIG_CORE + /* + * Aaargh! immedhook seriously hoses us! + * + * One problem with immedhook is it means we can't do -e. Problem + * is that we can't guarantee that for each terminal listed, all the + * terminals it depends on will have been kept in core for reference + * resolution -- in fact it is certain the primitive types at the end + * of reference chains *won't* be in core unless they were explicitly + * in the select list themselves. + */ + if (namelst && (!infodump && !capdump)) { + (void) fprintf(stderr, + "%s: Sorry, -e can't be used without -I or -C\n", + _nc_progname); + ExitProgram(EXIT_FAILURE); + } +#endif /* HAVE_BIG_CORE */ + + if (optind < argc) { + source_file = argv[optind++]; + if (optind < argc) { + fprintf(stderr, + "%s: Too many file names. Usage:\n\t%s %s", + _nc_progname, + _nc_progname, + usage_string); + ExitProgram(EXIT_FAILURE); + } + } else { + if (infodump == TRUE) { + /* captoinfo's no-argument case */ + source_file = "/etc/termcap"; + if ((termcap = getenv("TERMCAP")) != 0 + && (namelst = make_namelist(getenv("TERM"))) != 0) { + if (access(termcap, F_OK) == 0) { + /* file exists */ + source_file = termcap; + } else { + if ((tmp_fp = open_tempfile(my_tmpname)) != 0) { + source_file = my_tmpname; + fprintf(tmp_fp, "%s\n", termcap); + fclose(tmp_fp); + tmp_fp = open_input(source_file, (char *) 0); + to_remove = source_file; + } else { + failed("tmpnam"); + } + } + } + } else { + /* tic */ + fprintf(stderr, + "%s: File name needed. Usage:\n\t%s %s", + _nc_progname, + _nc_progname, + usage_string); + ExitProgram(EXIT_FAILURE); + } + } + + if (tmp_fp == NULL) { + tmp_fp = open_input(source_file, my_altfile); + if (!strcmp(source_file, "-")) { + source_file = STDIN_NAME; + } + } + + if (infodump || check_only) { + dump_init(tversion, + (smart_defaults + ? outform + : F_LITERAL), + sortmode, + wrap_strings, width, height, + debug_level, formatted || check_only, check_only, quickdump); + } else if (capdump) { + dump_init(tversion, + outform, + sortmode, + wrap_strings, width, height, + debug_level, FALSE, FALSE, FALSE); + } + + /* parse entries out of the source file */ + _nc_set_source(source_file); +#if !HAVE_BIG_CORE + if (!(check_only || infodump || capdump)) + _nc_set_writedir(outdir); +#endif /* HAVE_BIG_CORE */ + _nc_read_entry_source(tmp_fp, (char *) NULL, + !smart_defaults || literal, FALSE, + ((check_only || infodump || capdump) + ? NULLHOOK + : immedhook)); + + /* do use resolution */ + if (check_only || (!infodump && !capdump) || forceresolve) { + if (!_nc_resolve_uses2(TRUE, literal) && !check_only) { + ExitProgram(EXIT_FAILURE); + } + } + + /* length check */ + if (check_only && limited && (capdump || infodump)) { + for_entry_list(qp) { + if (matches(namelst, qp->tterm.term_names)) { + int len = fmt_entry(&qp->tterm, NULL, FALSE, TRUE, infodump, numbers); + + if (len > (infodump ? MAX_TERMINFO_LENGTH : MAX_TERMCAP_LENGTH)) + (void) fprintf(stderr, + "%s: resolved %s entry is %d bytes long\n", + _nc_progname, + _nc_first_name(qp->tterm.term_names), + len); + } + } + } + + /* write or dump all entries */ + if (check_only) { + /* this is in case infotocap() generates warnings */ + _nc_curr_col = _nc_curr_line = -1; + + for_entry_list(qp) { + if (matches(namelst, qp->tterm.term_names)) { + /* this is in case infotocap() generates warnings */ + _nc_set_type(_nc_first_name(qp->tterm.term_names)); + _nc_curr_line = (int) qp->startline; + repair_acsc(&qp->tterm); + dump_entry(&qp->tterm, suppress_untranslatable, + limited, numbers, NULL); + } + } + } else { + if (!infodump && !capdump) { + _nc_set_writedir(outdir); + for_entry_list(qp) { + if (matches(namelst, qp->tterm.term_names)) + write_it(qp); + } + } else { + /* this is in case infotocap() generates warnings */ + _nc_curr_col = _nc_curr_line = -1; + + for_entry_list(qp) { + if (matches(namelst, qp->tterm.term_names)) { + long j = qp->cend - qp->cstart; + int len = 0; + + /* this is in case infotocap() generates warnings */ + _nc_set_type(_nc_first_name(qp->tterm.term_names)); + + if (!quiet) { + (void) fseek(tmp_fp, qp->cstart, SEEK_SET); + while (j-- > 0) { + int ch = fgetc(tmp_fp); + if (ch == EOF || ferror(tmp_fp)) { + break; + } else if (infodump) { + (void) putchar(ch); + } else { + put_translate(ch); + } + } + } + + repair_acsc(&qp->tterm); + dump_entry(&qp->tterm, suppress_untranslatable, + limited, numbers, NULL); + for (j = 0; j < (long) qp->nuses; j++) + dump_uses(qp->uses[j].name, !capdump); + len = show_entry(); + if (debug_level != 0 && !limited) + printf("# length=%d\n", len); + } + } + if (!namelst && _nc_tail && !quiet) { + int c, oldc = '\0'; + bool in_comment = FALSE; + bool trailing_comment = FALSE; + + (void) fseek(tmp_fp, _nc_tail->cend, SEEK_SET); + while ((c = fgetc(tmp_fp)) != EOF) { + if (oldc == '\n') { + if (c == '#') { + trailing_comment = TRUE; + in_comment = TRUE; + } else { + in_comment = FALSE; + } + } + if (trailing_comment + && (in_comment || (oldc == '\n' && c == '\n'))) + putchar(c); + oldc = c; + } + } + } + } + + /* Show the directory into which entries were written, and the total + * number of entries + */ + if (showsummary + && (!(check_only || infodump || capdump))) { + int total = _nc_tic_written(); + if (total != 0) + fprintf(log_fp, "%d entries written to %s\n", + total, + _nc_tic_dir((char *) 0)); + else + fprintf(log_fp, "No entries written\n"); + } + ExitProgram(EXIT_SUCCESS); +} + +/* + * This bit of legerdemain turns all the terminfo variable names into + * references to locations in the arrays Booleans, Numbers, and Strings --- + * precisely what's needed (see comp_parse.c). + */ +#undef CUR +#define CUR tp-> + +/* + * Check if the alternate character-set capabilities are consistent. + */ +static void +check_acs(TERMTYPE2 *tp) +{ + int vt100_smacs = 0; + int vt100_rmacs = 0; + int vt100_enacs = 0; + + /* + * ena_acs is not always necessary, but if it is present, the enter/exit + * capabilities should be. + */ + ANDMISSING(ena_acs, enter_alt_charset_mode); + ANDMISSING(ena_acs, exit_alt_charset_mode); + PAIRED(exit_alt_charset_mode, exit_alt_charset_mode); + + /* + * vt100-like is frequently used, but perhaps ena_acs is missing, etc. + */ + if (VALID_STRING(enter_alt_charset_mode)) { + vt100_smacs = (!strcmp("\033(0", enter_alt_charset_mode) + ? 2 + : (!strcmp("\016", enter_alt_charset_mode) + ? 1 + : 0)); + } + if (VALID_STRING(exit_alt_charset_mode)) { + vt100_rmacs = (!strcmp("\033(B", exit_alt_charset_mode) + ? 2 + : (!strcmp("\017", exit_alt_charset_mode) + ? 1 + : 0)); + } + if (VALID_STRING(ena_acs)) { + vt100_enacs = (!strcmp("\033(B\033)0", ena_acs) + ? 2 + : 0); + } + if (vt100_rmacs && vt100_smacs && (vt100_rmacs != vt100_smacs)) { + _nc_warning("rmacs/smacs are inconsistent"); + } + if ((vt100_rmacs == 2) && (vt100_smacs == 2) && vt100_enacs) { + _nc_warning("rmacs/smacs make enacs redundant"); + } + if ((vt100_rmacs == 1) && (vt100_smacs == 1) && !vt100_enacs) { + _nc_warning("VT100-style rmacs/smacs require enacs"); + } + + if (VALID_STRING(acs_chars)) { + const char *boxes = "lmkjtuvwqxn"; + char mapped[256]; + char missing[256]; + const char *p; + char *q; + + memset(mapped, 0, sizeof(mapped)); + for (p = acs_chars; *p != '\0'; p += 2) { + if (p[1] == '\0') { + _nc_warning("acsc has odd number of characters"); + break; + } + mapped[UChar(p[0])] = p[1]; + } + + if (mapped[UChar('I')] && !mapped[UChar('i')]) { + _nc_warning("acsc refers to 'I', which is probably an error"); + } + + for (p = boxes, q = missing; *p != '\0'; ++p) { + if (!mapped[UChar(p[0])]) { + *q++ = p[0]; + } + } + *q = '\0'; + + assert(strlen(missing) <= strlen(boxes)); + if (*missing != '\0' && strcmp(missing, boxes)) { + _nc_warning("acsc is missing some line-drawing mapping: %s", missing); + } + } +} + +static char * +safe_strdup(const char *value) +{ + if (value == NULL) + value = ""; + return strdup(value); +} + +static bool +same_color(NCURSES_CONST char *oldcap, NCURSES_CONST char *newcap, int limit) +{ + bool result = FALSE; + if (limit > 16) + limit = 16; + if (limit >= 8) { + int n; + int same; + for (n = same = 0; n < limit; ++n) { + char *oldvalue = safe_strdup(TIPARM_1(oldcap, n)); + char *newvalue = safe_strdup(TIPARM_1(newcap, n)); + same += !strcmp(oldvalue, newvalue); + free(oldvalue); + free(newvalue); + } + result = (same == limit); + } + return result; +} + +/* + * Check if the color capabilities are consistent + */ +static void +check_colors(TERMTYPE2 *tp) +{ + char *value; + + if ((max_colors > 0) != (max_pairs > 0) + || ((max_colors > max_pairs) && !VALID_STRING(initialize_pair))) + _nc_warning("inconsistent values for max_colors (%d) and max_pairs (%d)", + max_colors, max_pairs); + + PAIRED(set_foreground, set_background); + PAIRED(set_a_foreground, set_a_background); + PAIRED(set_color_pair, initialize_pair); + + if (VALID_STRING(set_foreground) + && VALID_STRING(set_a_foreground)) { + if (!_nc_capcmp(set_foreground, set_a_foreground)) { + _nc_warning("expected setf/setaf to be different"); + } else if (same_color(set_foreground, set_a_foreground, max_colors)) { + _nc_warning("setf/setaf are equivalent"); + } + } + + if (VALID_STRING(set_background) + && VALID_STRING(set_a_background)) { + if (!_nc_capcmp(set_background, set_a_background)) { + _nc_warning("expected setb/setab to be different"); + } else if (same_color(set_background, set_a_background, max_colors)) { + _nc_warning("setb/setab are equivalent"); + } + } + + /* see: has_colors() */ + if (VALID_NUMERIC(max_colors) && VALID_NUMERIC(max_pairs) + && ((VALID_STRING(set_foreground) + && VALID_STRING(set_background)) + || (VALID_STRING(set_a_foreground) + && VALID_STRING(set_a_background)) + || set_color_pair)) { + if (!VALID_STRING(orig_pair) && !VALID_STRING(orig_colors)) + _nc_warning("expected either op/oc string for resetting colors"); + } + if (can_change) { + if (!VALID_STRING(initialize_pair) && + !VALID_STRING(initialize_color)) { + _nc_warning("expected initc or initp because ccc is given"); + } + } else { + if (VALID_STRING(initialize_pair) || + VALID_STRING(initialize_color)) { + _nc_warning("expected ccc because initc is given"); + } + } + value = tigetstr("RGB"); + if (VALID_STRING(value)) { + int r, g, b; + char bad; + int code = sscanf(value, "%d/%d/%d%c", &r, &g, &b, &bad); + if (code != 3 || r <= 0 || g <= 0 || b <= 0) { + _nc_warning("unexpected value for RGB capability: %s", value); + } + } +} + +static int +csi_length(const char *value) +{ + int result = 0; + + if (value[0] == '\033' && value[1] == '[') { + result = 2; + } else if (UChar(value[0]) == 0x9a) { + result = 1; + } + return result; +} + +static char +keypad_final(const char *string) +{ + char result = '\0'; + + if (VALID_STRING(string) + && *string++ == '\033' + && *string++ == 'O' + && strlen(string) == 1) { + result = *string; + } + + return result; +} + +static long +keypad_index(const char *string) +{ + int ch; + long result = -1; + + if ((ch = keypad_final(string)) != '\0') { + const char *list = "PQRSwxymtuvlqrsPpn"; /* app-keypad except "Enter" */ + char *test = (strchr) (list, ch); + if (test != 0) + result = (long) (test - list); + } + return result; +} + +/* + * list[] is down, up, left, right + * "left" may be ^H rather than \E[D + * "down" may be ^J rather than \E[B + * But up/right are generally consistently escape sequences for ANSI terminals. + */ +static void +check_ansi_cursor(char *list[4]) +{ + int j, k; + bool skip[4]; + bool repeated = FALSE; + + for (j = 0; j < 4; ++j) { + skip[j] = FALSE; + for (k = 0; k < j; ++k) { + if (j != k + && !strcmp(list[j], list[k])) { + char *value = _nc_tic_expand(list[k], TRUE, 0); + _nc_warning("repeated cursor control %s", value); + repeated = TRUE; + } + } + } + if (!repeated) { + char *up = list[1]; + size_t prefix = (size_t) csi_length(up); + size_t suffix; + + if (prefix) { + suffix = prefix; + while (up[suffix] && isdigit(UChar(up[suffix]))) + ++suffix; + } + if (prefix && up[suffix] == 'A') { + skip[1] = TRUE; + if (!strcmp(list[0], "\n")) + skip[0] = TRUE; + if (!strcmp(list[2], "\b")) + skip[2] = TRUE; + + for (j = 0; j < 4; ++j) { + int want; + + if (skip[j] || strlen(list[j]) == 1) + continue; + if (memcmp(list[j], up, prefix)) { + char *value = _nc_tic_expand(list[j], TRUE, 0); + _nc_warning("inconsistent prefix for %s", value); + continue; + } + if (strlen(list[j]) < suffix) { + char *value = _nc_tic_expand(list[j], TRUE, 0); + _nc_warning("inconsistent length for %s, expected %d", + value, (int) suffix + 1); + continue; + } + want = "BADC"[j]; + if (list[j][suffix] != want) { + char *value = _nc_tic_expand(list[j], TRUE, 0); + _nc_warning("inconsistent suffix for %s, expected %c, have %c", + value, want, list[j][suffix]); + } + } + } + } +} + +#define EXPECTED(name) if (!PRESENT(name)) _nc_warning("expected " #name) +#define UNEXPECTED(name) if (PRESENT(name)) _nc_warning("unexpected " #name ", for %s", why) + +static void +check_noaddress(TERMTYPE2 *tp, const char *why) +{ + UNEXPECTED(column_address); + UNEXPECTED(cursor_address); + UNEXPECTED(cursor_home); + UNEXPECTED(cursor_mem_address); + UNEXPECTED(cursor_to_ll); + UNEXPECTED(row_address); + UNEXPECTED(row_address); +} + +static void +check_cursor(TERMTYPE2 *tp) +{ + int count; + char *list[4]; + + if (hard_copy) { + check_noaddress(tp, "hard_copy"); + } else if (generic_type) { + check_noaddress(tp, "generic_type"); + } else if (strchr(tp->term_names, '+') == NULL) { + int y = 0; + int x = 0; + if (PRESENT(column_address)) + ++y; + if (PRESENT(cursor_address)) + y = x = 10; + if (PRESENT(cursor_home)) + ++y, ++x; + if (PRESENT(cursor_mem_address)) + y = x = 10; + if (PRESENT(cursor_to_ll)) + ++y, ++x; + if (PRESENT(row_address)) + ++x; + if (PRESENT(cursor_down)) + ++y; + if (PRESENT(cursor_up)) + ++y; + if (PRESENT(cursor_left)) + ++x; + if (PRESENT(cursor_right)) + ++x; + if (x < 2 && y < 2) { + _nc_warning("terminal lacks cursor addressing"); + } else { + if (x < 2) + _nc_warning("terminal lacks cursor column-addressing"); + if (y < 2) + _nc_warning("terminal lacks cursor row-addressing"); + } + } + + /* it is rare to have an insert-line feature without a matching delete */ + ANDMISSING(parm_insert_line, insert_line); + ANDMISSING(parm_delete_line, delete_line); + ANDMISSING(parm_insert_line, parm_delete_line); + + /* if we have a parameterized form, then the non-parameterized is easy */ + ANDMISSING(parm_down_cursor, cursor_down); + ANDMISSING(parm_up_cursor, cursor_up); + ANDMISSING(parm_left_cursor, cursor_left); + ANDMISSING(parm_right_cursor, cursor_right); + + /* Given any of a set of cursor movement, the whole set should be present. + * Technically this is not true (we could use cursor_address to fill in + * unsupported controls), but it is likely. + */ + count = 0; + if (PRESENT(parm_down_cursor)) { + list[count++] = parm_down_cursor; + } + if (PRESENT(parm_up_cursor)) { + list[count++] = parm_up_cursor; + } + if (PRESENT(parm_left_cursor)) { + list[count++] = parm_left_cursor; + } + if (PRESENT(parm_right_cursor)) { + list[count++] = parm_right_cursor; + } + if (count == 4) { + check_ansi_cursor(list); + } else if (count != 0) { + EXPECTED(parm_down_cursor); + EXPECTED(parm_up_cursor); + EXPECTED(parm_left_cursor); + EXPECTED(parm_right_cursor); + } + + count = 0; + if (PRESENT(cursor_down)) { + list[count++] = cursor_down; + } + if (PRESENT(cursor_up)) { + list[count++] = cursor_up; + } + if (PRESENT(cursor_left)) { + list[count++] = cursor_left; + } + if (PRESENT(cursor_right)) { + list[count++] = cursor_right; + } + if (count == 4) { + check_ansi_cursor(list); + } else if (count != 0) { + count = 0; + if (PRESENT(cursor_down) && strcmp(cursor_down, "\n")) + ++count; + if (PRESENT(cursor_left) && strcmp(cursor_left, "\b")) + ++count; + if (PRESENT(cursor_up) && strlen(cursor_up) > 1) + ++count; + if (PRESENT(cursor_right) && strlen(cursor_right) > 1) + ++count; + if (count) { + EXPECTED(cursor_down); + EXPECTED(cursor_up); + EXPECTED(cursor_left); + EXPECTED(cursor_right); + } + } +} + +#define MAX_KP 5 +/* + * Do a quick sanity-check for vt100-style keypads to see if the 5-key keypad + * is mapped inconsistently. + */ +static void +check_keypad(TERMTYPE2 *tp) +{ + char show[80]; + + if (VALID_STRING(key_a1) && + VALID_STRING(key_a3) && + VALID_STRING(key_b2) && + VALID_STRING(key_c1) && + VALID_STRING(key_c3)) { + char final[MAX_KP + 1]; + long list[MAX_KP]; + int increase = 0; + int j; + + final[0] = keypad_final(key_a1); + final[1] = keypad_final(key_a3); + final[2] = keypad_final(key_b2); + final[3] = keypad_final(key_c1); + final[4] = keypad_final(key_c3); + final[5] = '\0'; + + /* special case: legacy coding using 1,2,3,0,. on the bottom */ + assert(strlen(final) <= MAX_KP); + if (!strcmp(final, "qsrpn")) + return; + + list[0] = keypad_index(key_a1); + list[1] = keypad_index(key_a3); + list[2] = keypad_index(key_b2); + list[3] = keypad_index(key_c1); + list[4] = keypad_index(key_c3); + + /* check that they're all vt100 keys */ + for (j = 0; j < MAX_KP; ++j) { + if (list[j] < 0) { + return; + } + } + + /* check if they're all in increasing order */ + for (j = 1; j < MAX_KP; ++j) { + if (list[j] > list[j - 1]) { + ++increase; + } + } + + if (increase != (MAX_KP - 1)) { + long last; + + show[0] = '\0'; + + for (j = 0, last = -1; j < MAX_KP; ++j) { + int k; + int kk; + long test; + + for (k = 0, kk = -1, test = 100; k < 5; ++k) { + if (list[k] > last && + list[k] < test) { + test = list[k]; + kk = k; + } + } + last = test; + assert(strlen(show) < (MAX_KP * 4)); + switch (kk) { + case 0: + _nc_STRCAT(show, " ka1", sizeof(show)); + break; + case 1: + _nc_STRCAT(show, " ka3", sizeof(show)); + break; + case 2: + _nc_STRCAT(show, " kb2", sizeof(show)); + break; + case 3: + _nc_STRCAT(show, " kc1", sizeof(show)); + break; + case 4: + _nc_STRCAT(show, " kc3", sizeof(show)); + break; + } + } + + _nc_warning("vt100 keypad order inconsistent: %s", show); + } + + } else if (VALID_STRING(key_a1) || + VALID_STRING(key_a3) || + VALID_STRING(key_b2) || + VALID_STRING(key_c1) || + VALID_STRING(key_c3)) { + show[0] = '\0'; + if (keypad_index(key_a1) >= 0) + _nc_STRCAT(show, " ka1", sizeof(show)); + if (keypad_index(key_a3) >= 0) + _nc_STRCAT(show, " ka3", sizeof(show)); + if (keypad_index(key_b2) >= 0) + _nc_STRCAT(show, " kb2", sizeof(show)); + if (keypad_index(key_c1) >= 0) + _nc_STRCAT(show, " kc1", sizeof(show)); + if (keypad_index(key_c3) >= 0) + _nc_STRCAT(show, " kc3", sizeof(show)); + if (*show != '\0') + _nc_warning("vt100 keypad map incomplete:%s", show); + } + + /* + * These warnings are useful for consistency checks - it is possible that + * there are real terminals with mismatches in these + */ + ANDMISSING(key_ic, key_dc); +} + +static void +check_printer(TERMTYPE2 *tp) +{ + (void) tp; +#if defined(enter_doublewide_mode) && defined(exit_doublewide_mode) + PAIRED(enter_doublewide_mode, exit_doublewide_mode); +#endif +#if defined(enter_italics_mode) && defined(exit_italics_mode) + PAIRED(enter_italics_mode, exit_italics_mode); +#endif +#if defined(enter_leftward_mode) && defined(exit_leftward_mode) + PAIRED(enter_leftward_mode, exit_leftward_mode); +#endif +#if defined(enter_micro_mode) && defined(exit_micro_mode) + PAIRED(enter_micro_mode, exit_micro_mode); +#endif +#if defined(enter_shadow_mode) && defined(exit_shadow_mode) + PAIRED(enter_shadow_mode, exit_shadow_mode); +#endif +#if defined(enter_subscript_mode) && defined(exit_subscript_mode) + PAIRED(enter_subscript_mode, exit_subscript_mode); +#endif +#if defined(enter_superscript_mode) && defined(exit_superscript_mode) + PAIRED(enter_superscript_mode, exit_superscript_mode); +#endif +#if defined(enter_upward_mode) && defined(exit_upward_mode) + PAIRED(enter_upward_mode, exit_upward_mode); +#endif + +#if defined(start_char_set_def) && defined(stop_char_set_def) + ANDMISSING(start_char_set_def, stop_char_set_def); +#endif + + /* + * If we have a parameterized form, then the non-parameterized is easy. + * note: parameterized/non-parameterized margin settings are unrelated. + */ +#if defined(parm_down_micro) && defined(micro_down) + ANDMISSING(parm_down_micro, micro_down); +#endif +#if defined(parm_left_micro) && defined(micro_left) + ANDMISSING(parm_left_micro, micro_left); +#endif +#if defined(parm_right_micro) && defined(micro_right) + ANDMISSING(parm_right_micro, micro_right); +#endif +#if defined(parm_up_micro) && defined(micro_up) + ANDMISSING(parm_up_micro, micro_up); +#endif +} + +#if NCURSES_XNAMES +static bool +uses_SGR_39_49(const char *value) +{ + return (strstr(value, "39;49") != 0 + || strstr(value, "49;39") != 0); +} + +/* + * Check consistency of termcap extensions related to "screen". + */ +static void +check_screen(TERMTYPE2 *tp) +{ + if (_nc_user_definable) { + int have_XT = tigetflag("XT"); + int have_XM = tigetflag("XM"); + int have_bce = back_color_erase; + bool have_kmouse = FALSE; + bool use_sgr_39_49 = FALSE; + const char *name_39_49 = "orig_pair or orig_colors"; + char *name = _nc_first_name(tp->term_names); + bool is_screen = !strncmp(name, "screen", 6); + bool screen_base = (is_screen + && strchr(name, '.') == NULL); + + if (!VALID_BOOLEAN(have_bce)) { + have_bce = FALSE; + } + if (!VALID_BOOLEAN(have_XM)) { + have_XM = FALSE; + } + if (!VALID_BOOLEAN(have_XT)) { + have_XT = FALSE; + } + if (VALID_STRING(key_mouse)) { + have_kmouse = !strcmp("\033[M", key_mouse); + } + if (have_bce) { + if (VALID_STRING(orig_pair)) { + name_39_49 = "orig_pair"; + use_sgr_39_49 = uses_SGR_39_49(orig_pair); + } + if (!use_sgr_39_49 && VALID_STRING(orig_colors)) { + name_39_49 = "orig_colors"; + use_sgr_39_49 = uses_SGR_39_49(orig_colors); + } + } + + if (have_XM && have_XT) { + _nc_warning("screen's XT capability conflicts with XM"); + } else if (have_XT && screen_base) { + _nc_warning("screen's \"screen\" entries should not have XT set"); + } else if (have_XT) { + if (!have_kmouse && is_screen) { + if (VALID_STRING(key_mouse)) { + _nc_warning("value of kmous inconsistent with screen's usage"); + } else { + _nc_warning("expected kmous capability with XT"); + } + } + if (max_colors > 0) { + if (!have_bce) { + _nc_warning("expected bce capability with XT"); + } else if (!use_sgr_39_49) { + _nc_warning("expected %s capability with XT " + "to have 39/49 parameters", name_39_49); + } + } + if (VALID_STRING(to_status_line)) + _nc_warning("\"tsl\" capability is redundant, given XT"); + } else { + if (have_kmouse + && !have_XM + && !screen_base && strchr(name, '+') == NULL) { + _nc_warning("expected XT to be set, given kmous"); + } + } + } +} +#else +#define check_screen(tp) /* nothing */ +#endif + +/* + * Returns the expected number of parameters for the given capability. + */ +static int +expected_params(const char *name) +{ +#define DATA(name,count) { { name }, count } + /* *INDENT-OFF* */ + static const struct { + const char name[9]; + int count; + } table[] = { + DATA( "S0", 1 ), /* 'screen' extension */ + DATA( "birep", 2 ), + DATA( "chr", 1 ), + DATA( "colornm", 1 ), + DATA( "cpi", 1 ), + DATA( "csnm", 1 ), + DATA( "csr", 2 ), + DATA( "cub", 1 ), + DATA( "cud", 1 ), + DATA( "cuf", 1 ), + DATA( "cup", 2 ), + DATA( "cuu", 1 ), + DATA( "cvr", 1 ), + DATA( "cwin", 5 ), + DATA( "dch", 1 ), + DATA( "defc", 3 ), + DATA( "dial", 1 ), + DATA( "dispc", 1 ), + DATA( "dl", 1 ), + DATA( "ech", 1 ), + DATA( "getm", 1 ), + DATA( "hpa", 1 ), + DATA( "ich", 1 ), + DATA( "il", 1 ), + DATA( "indn", 1 ), + DATA( "initc", 4 ), + DATA( "initp", 7 ), + DATA( "lpi", 1 ), + DATA( "mc5p", 1 ), + DATA( "mrcup", 2 ), + DATA( "mvpa", 1 ), + DATA( "pfkey", 2 ), + DATA( "pfloc", 2 ), + DATA( "pfx", 2 ), + DATA( "pfxl", 3 ), + DATA( "pln", 2 ), + DATA( "qdial", 1 ), + DATA( "rcsd", 1 ), + DATA( "rep", 2 ), + DATA( "rin", 1 ), + DATA( "sclk", 3 ), + DATA( "scp", 1 ), + DATA( "scs", 1 ), + DATA( "scsd", 2 ), + DATA( "setab", 1 ), + DATA( "setaf", 1 ), + DATA( "setb", 1 ), + DATA( "setcolor", 1 ), + DATA( "setf", 1 ), + DATA( "sgr", 9 ), + DATA( "sgr1", 6 ), + DATA( "slength", 1 ), + DATA( "slines", 1 ), + DATA( "smgbp", 1 ), /* 2 if smgtp is not given */ + DATA( "smglp", 1 ), + DATA( "smglr", 2 ), + DATA( "smgrp", 1 ), + DATA( "smgtb", 2 ), + DATA( "smgtp", 1 ), + DATA( "tsl", 1 ), + DATA( "u6", -1 ), + DATA( "vpa", 1 ), + DATA( "wind", 4 ), + DATA( "wingo", 1 ), + }; + /* *INDENT-ON* */ +#undef DATA + + unsigned n; + int result = 0; /* function-keys, etc., use none */ + + for (n = 0; n < SIZEOF(table); n++) { + if (!strcmp(name, table[n].name)) { + result = table[n].count; + break; + } + } + + return result; +} + +/* + * Check for user-capabilities that happen to be used in ncurses' terminal + * database. + */ +#if NCURSES_XNAMES +static struct user_table_entry const * +lookup_user_capability(const char *name) +{ + struct user_table_entry const *result = 0; + if (*name != 'k') { + result = _nc_find_user_entry(name); + } + return result; +} +#endif + +/* + * If a given name is likely to be a user-capability, return the number of + * parameters it would be used with. If not, return -1. + * + * ncurses assumes that u6 could be used for getting the cursor-position, but + * that is not implemented. Make a special case for that, to quiet needless + * warnings. + * + * The other string-capability extensions (see terminfo.src) which could have + * parameters such as "Ss", "%u", are not used by ncurses. But we check those + * anyway, to validate the terminfo database. + */ +static int +is_user_capability(const char *name) +{ + int result = -1; + if (name[0] == 'u' && + (name[1] >= '0' && name[1] <= '9') && + name[2] == '\0') { + result = (name[1] == '6') ? 2 : 0; + } +#if NCURSES_XNAMES + else if (using_extensions) { + struct user_table_entry const *p = lookup_user_capability(name); + if (p != 0) { + result = (int) p->ute_argc; + } + } +#endif + return result; +} + +static bool +line_capability(const char *name) +{ + bool result = FALSE; + static const char *table[] = + { + "csr", /* change_scroll_region */ + "clear", /* clear_screen */ + "ed", /* clr_eos */ + "cwin", /* create_window */ + "cup", /* cursor_address */ + "cud1", /* cursor_down */ + "home", /* cursor_home */ + "mrcup", /* cursor_mem_address */ + "ll", /* cursor_to_ll */ + "cuu1", /* cursor_up */ + "dl1", /* delete_line */ + "hd", /* down_half_line */ + "flash", /* flash_screen */ + "ff", /* form_feed */ + "il1", /* insert_line */ + "nel", /* newline */ + "dl", /* parm_delete_line */ + "cud", /* parm_down_cursor */ + "indn", /* parm_index */ + "il", /* parm_insert_line */ + "rin", /* parm_rindex */ + "cuu", /* parm_up_cursor */ + "mc0", /* print_screen */ + "vpa", /* row_address */ + "ind", /* scroll_forward */ + "ri", /* scroll_reverse */ + "hu", /* up_half_line */ + }; + size_t n; + for (n = 0; n < SIZEOF(table); ++n) { + if (!strcmp(name, table[n])) { + result = TRUE; + break; + } + } + return result; +} + +/* + * Make a quick sanity check for the parameters which are used in the given + * strings. If there are no "%p" tokens, then there should be no other "%" + * markers. + */ +static void +check_params(TERMTYPE2 *tp, const char *name, const char *value, int extended) +{ + int expected = expected_params(name); + int actual = 0; + int n; + bool params[1 + NUM_PARM]; + const char *s = value; + +#ifdef set_left_margin_parm + if (!strcmp(name, "smgrp") + && !VALID_STRING(set_left_margin_parm)) + expected = 2; +#endif +#ifdef set_right_margin_parm + if (!strcmp(name, "smglp") + && !VALID_STRING(set_right_margin_parm)) + expected = 2; +#endif +#ifdef set_top_margin_parm + if (!strcmp(name, "smgbp") + && !VALID_STRING(set_top_margin_parm)) + expected = 2; +#endif +#ifdef set_bottom_margin_parm + if (!strcmp(name, "smgtp") + && !VALID_STRING(set_bottom_margin_parm)) + expected = 2; +#endif + + for (n = 0; n <= NUM_PARM; n++) + params[n] = FALSE; + + while (*s != 0) { + if (*s == '%') { + if (*++s == '\0') { + _nc_warning("expected character after %% in %s", name); + break; + } else if (*s == 'p') { + if (*++s == '\0' || !isdigit((int) *s)) { + _nc_warning("expected digit after %%p in %s", name); + return; + } else { + n = (*s - '0'); + if (n > actual) + actual = n; + params[n] = TRUE; + } + } + } + s++; + } + +#if NCURSES_XNAMES + if (extended) { + int check = is_user_capability(name); + if (check != actual && (check >= 0 && actual >= 0)) { + _nc_warning("extended %s capability has %d parameters, expected %d", + name, actual, check); + } else if (debug_level > 1) { + _nc_warning("extended %s capability has %d parameters, as expected", + name, actual); + } + expected = actual; + } +#else + (void) extended; +#endif + + if (params[0]) { + _nc_warning("%s refers to parameter 0 (%%p0), which is not allowed", name); + } + if (value == set_attributes || expected < 0) { + ; + } else if (expected != actual) { + _nc_warning("%s uses %d parameters, expected %d", name, + actual, expected); + for (n = 1; n < actual; n++) { + if (!params[n]) + _nc_warning("%s omits parameter %d", name, n); + } + } + + /* + * Counting "%p" markers does not account for termcap expressions which + * may not have been fully translated. Also, tparm does its own analysis. + * Report differences here. + */ + _nc_reset_tparm(NULL); + if (actual >= 0) { + char *p_is_s[NUM_PARM]; + int popcount; + int analyzed = _nc_tparm_analyze(NULL, value, p_is_s, &popcount); + if (analyzed < popcount) { + analyzed = popcount; + } + if (actual != analyzed && expected != analyzed) { +#if NCURSES_XNAMES + int user_cap = is_user_capability(name); + if ((user_cap == analyzed) && using_extensions) { + ; /* ignore */ + } else if (user_cap >= 0) { + _nc_warning("tparm will use %d parameters for %s, expected %d", + analyzed, name, user_cap); + } else +#endif + { + _nc_warning("tparm analyzed %d parameters for %s, expected %d", + analyzed, name, actual); + } + } else if (expected > 0 + && actual == expected + && guess_tparm_type(expected, p_is_s) == Numbers) { + int limit = 1; + + if (!strcmp(name, "setf") + || !strcmp(name, "setb") + || !strcmp(name, "setaf") + || !strcmp(name, "setab")) { + if ((limit = max_colors) > 256) + limit = 256; + } else if (line_capability(name)) { + limit = 24; + } else if (is_user_capability(name) < 0) { + limit = 80; + } + for (n = 0; n < limit; ++n) { + _nc_reset_tparm(NULL); + (void) TPARM_9(value, n, n, n, n, n, n, n, n, n); + if (_nc_tparm_err) { + _nc_warning("problem%s in tparm(%s, %d, ...)", + (_nc_tparm_err == 1) ? "" : "s", + name, n); + if (debug_level < 2) + break; + } + } + } + } +} + +/* + * Check for DEC VT100 private mode for reverse video. + */ +static const char * +skip_DECSCNM(const char *value, int *flag) +{ + *flag = -1; + if (value != 0) { + int skip = csi_length(value); + if (skip > 0 && + value[skip++] == '?' && + value[skip++] == '5') { + if (value[skip] == 'h') { + *flag = 1; + } else if (value[skip] == 'l') { + *flag = 0; + } + value += skip + 1; + } + } + return value; +} + +static void +check_delays(TERMTYPE2 *tp, const char *name, const char *value) +{ + const char *p, *q; + const char *first = 0; + const char *last = 0; + + for (p = value; *p != '\0'; ++p) { + if (p[0] == '$' && p[1] == '<') { + const char *base = p + 2; + const char *mark = 0; + bool mixed = FALSE; + int proportional = 0; + int mandatory = 0; + + first = p; + + for (q = base; *q != '\0'; ++q) { + if (*q == '>') { + if (mark == NULL) + mark = q; + break; + } else if (*q == '*' || *q == '/') { + if (*q == '*') + ++proportional; + if (*q == '/') + ++mandatory; + if (mark == NULL) + mark = q; + } else if (!(isalnum(UChar(*q)) || strchr("+-.", *q) != 0)) { + break; + } else if (proportional || mandatory) { + mixed = TRUE; + } + } + last = *q ? (q + 1) : q; + if (*q != '\0') { + float check_f; + char check_c; + int rc = sscanf(base, "%f%c", &check_f, &check_c); + if ((rc != 2) || (mark != NULL && (check_c != *mark)) || mixed) { + _nc_warning("syntax error in %s delay '%.*s'", name, + (int) (q - base), base); + } else if (*name == 'k') { + _nc_warning("function-key %s has delay", name); + } else if (proportional && !line_capability(name)) { + _nc_warning("non-line capability using proportional delay: %s", name); + } else if (!xon_xoff && + !mandatory && + strchr(_nc_first_name(tp->term_names), '+') == NULL) { + _nc_warning("%s in %s is used since no xon/xoff", + (proportional + ? "proportional delay" + : "delay"), + name); + } + } else { + p = q - 1; /* restart scan */ + } + } + } + + if (!strcmp(name, "flash") || + !strcmp(name, "beep")) { + + if (first != 0) { + if (first == value || *last == 0) { + /* + * Delay is on one end or the other. + */ + _nc_warning("expected delay embedded within %s", name); + } + } else { + int flag; + + /* + * Check for missing delay when using VT100 reverse-video. + * A real VT100 might not need this, but terminal emulators do. + */ + if ((p = skip_DECSCNM(value, &flag)) != 0 && + flag > 0 && + skip_DECSCNM(p, &flag) != 0 && + flag == 0) { + _nc_warning("expected a delay in %s", name); + } + } + } +} + +static char * +check_1_infotocap(const char *name, NCURSES_CONST char *value, int count) +{ + int k; + int ignored; + long numbers[1 + NUM_PARM]; + char *strings[1 + NUM_PARM]; + char *p_is_s[NUM_PARM]; + char *result; + char blob[NUM_PARM * 10]; + char *next = blob; + TParams expect; + TParams actual; + int nparam; + + *next++ = '\0'; + for (k = 1; k <= NUM_PARM; k++) { + numbers[k] = count; + _nc_SPRINTF(next, + _nc_SLIMIT(sizeof(blob) - (size_t) (next - blob)) + "XYZ%d", count); + strings[k] = next; + next += strlen(next) + 1; + } + + _nc_reset_tparm(NULL); + expect = tparm_type(name); + nparam = _nc_tparm_analyze(NULL, value, p_is_s, &ignored); + actual = guess_tparm_type(nparam, p_is_s); + + if (expect != actual) { + _nc_warning("%s has mismatched parameters", name); + actual = Other; + } + + _nc_reset_tparm(NULL); + switch (actual) { + case Num_Str: + result = TPARM_2(value, numbers[1], strings[2]); + break; + case Num_Str_Str: + result = TPARM_3(value, numbers[1], strings[2], strings[3]); + break; + case Numbers: +#define myParam(n) numbers[n] + result = TIPARM_9(value, + myParam(1), + myParam(2), + myParam(3), + myParam(4), + myParam(5), + myParam(6), + myParam(7), + myParam(8), + myParam(9)); +#undef myParam + break; + case Other: + default: +#define myParam(n) (p_is_s[n - 1] != 0 ? ((TPARM_ARG) strings[n]) : numbers[n]) + result = TPARM_9(value, + myParam(1), + myParam(2), + myParam(3), + myParam(4), + myParam(5), + myParam(6), + myParam(7), + myParam(8), + myParam(9)); +#undef myParam + break; + } + return strdup(result); +} + +#define IsDelay(ch) ((ch) == '.' || isdigit(UChar(ch))) + +static const char * +parse_delay_value(const char *src, double *delays, int *always) +{ + int star = 0; + + *delays = 0.0; + if (always) + *always = 0; + + while (isdigit(UChar(*src))) { + (*delays) = (*delays) * 10 + (*src++ - '0'); + } + if (*src == '.') { + int gotdot = 1; + + ++src; + while (isdigit(UChar(*src))) { + gotdot *= 10; + (*delays) += (*src++ - '0') / gotdot; + } + } + while (*src == '*' || *src == '/') { + if (always == NULL && *src == '/') + break; + if (*src++ == '*') { + star = 1; + } else { + *always = 1; + } + } + if (star) + *delays = -(*delays); + return src; +} + +static const char * +parse_ti_delay(const char *ti, double *delays) +{ + *delays = 0.0; + while (*ti != '\0') { + if (*ti == '\\') { + ++ti; + } + if (ti[0] == '$' + && ti[1] == '<' + && IsDelay(UChar(ti[2]))) { + int ignored; + const char *last = parse_delay_value(ti + 2, delays, &ignored); + if (*last == '>') { + ti = last; + } + } else { + ++ti; + } + } + return ti; +} + +static const char * +parse_tc_delay(const char *tc, double *delays) +{ + return parse_delay_value(tc, delays, (int *) 0); +} + +/* + * Compare terminfo- and termcap-strings, factoring out delays. + */ +static bool +same_ti_tc(const char *ti, const char *tc, bool * embedded) +{ + bool same = TRUE; + double ti_delay = 0.0; + double tc_delay = 0.0; + const char *ti_last; + + *embedded = FALSE; + ti_last = parse_ti_delay(ti, &ti_delay); + tc = parse_tc_delay(tc, &tc_delay); + + while ((ti < ti_last) && *tc) { + if (*ti == '\\' && ispunct(UChar(ti[1]))) { + ++ti; + if ((*ti == '^') && !strncmp(tc, "\\136", 4)) { + ti += 1; + tc += 4; + continue; + } + } else if (ti[0] == '$' && ti[1] == '<') { + double no_delay; + const char *ss = parse_ti_delay(ti, &no_delay); + if (ss != ti) { + *embedded = TRUE; + ti = ss; + continue; + } + } + if (*tc == '\\' && ispunct(UChar(tc[1]))) { + ++tc; + } + if (*ti++ != *tc++) { + same = FALSE; + break; + } + } + + if (*embedded) { + if (same) { + same = FALSE; + } else { + *embedded = FALSE; /* report only one problem */ + } + } + + return same; +} + +/* + * Check terminfo to termcap translation. + */ +static void +check_infotocap(TERMTYPE2 *tp, int i, const char *value) +{ + const char *name = ExtStrname(tp, i, strnames); + int params = ((i < (int) SIZEOF(parametrized)) + ? parametrized[i] + : ((*value == 'k') + ? 0 + : has_params(value, FALSE))); + char *ti_value = NULL; + char *tc_value; + bool embedded; + + assert(SIZEOF(parametrized) == STRCOUNT); + if (!VALID_STRING(value) || (ti_value = strdup(value)) == NULL) { + _nc_warning("tic-expansion of %s failed", name); + } else if ((tc_value = _nc_infotocap(name, ti_value, params)) == ABSENT_STRING) { + _nc_warning("tic-conversion of %s failed", name); + } else if (params > 0) { + int limit = 5; + int count; + bool first = TRUE; + + if (!strcmp(name, "setf") + || !strcmp(name, "setb") + || !strcmp(name, "setaf") + || !strcmp(name, "setab")) { + if ((limit = max_colors) > 256) + limit = 256; + } + for (count = 0; count < limit; ++count) { + char *ti_check = check_1_infotocap(name, ti_value, count); + char *tc_check = check_1_infotocap(name, tc_value, count); + + if (strcmp(ti_check, tc_check)) { + if (first) { + fprintf(stderr, "check_infotocap(%s)\n", name); + fprintf(stderr, "...ti '%s'\n", _nc_visbuf2(0, ti_value)); + fprintf(stderr, "...tc '%s'\n", _nc_visbuf2(0, tc_value)); + first = FALSE; + } + _nc_warning("tparm-conversion of %s(%d) differs between\n\tterminfo %s\n\ttermcap %s", + name, count, + _nc_visbuf2(0, ti_check), + _nc_visbuf2(1, tc_check)); + } + free(ti_check); + free(tc_check); + } + } else if (params == 0 && !same_ti_tc(ti_value, tc_value, &embedded)) { + if (embedded) { + _nc_warning("termcap equivalent of %s cannot use embedded delay", name); + } else { + _nc_warning("tic-conversion of %s changed value\n\tfrom %s\n\tto %s", + name, ti_value, tc_value); + } + } + free(ti_value); +} + +static char * +skip_delay(char *s) +{ + while (*s == '/' || isdigit(UChar(*s))) + ++s; + return s; +} + +/* + * Skip a delay altogether, e.g., when comparing a simple string to sgr, + * the latter may have a worst-case delay on the end. + */ +static char * +ignore_delays(char *s) +{ + int delaying = 0; + + do { + switch (*s) { + case '$': + if (delaying == 0) + delaying = 1; + break; + case '<': + if (delaying == 1) + delaying = 2; + break; + case '\0': + delaying = 0; + break; + default: + if (delaying) { + s = skip_delay(s); + if (*s == '>') + ++s; + delaying = 0; + } + break; + } + if (delaying) + ++s; + } while (delaying); + return s; +} + +#define DATA(name) { #name } +static const char sgr_names[][11] = +{ + DATA(none), + DATA(standout), + DATA(underline), + DATA(reverse), + DATA(blink), + DATA(dim), + DATA(bold), + DATA(invis), + DATA(protect), + DATA(altcharset), + "" +}; +#undef DATA + +/* + * An sgr string may contain several settings other than the one we're + * interested in, essentially sgr0 + rmacs + whatever. As long as the + * "whatever" is contained in the sgr string, that is close enough for our + * sanity check. + */ +static bool +similar_sgr(int num, char *a, char *b) +{ + char *base_a = a; + char *base_b = b; + int delaying = 0; + + while (*b != 0) { + while (*a != *b) { + if (*a == 0) { + if (num < 0) { + ; + } else if (b[0] == '$' + && b[1] == '<') { + _nc_warning("did not find delay %s", _nc_visbuf(b)); + } else { + _nc_warning("checking sgr(%s) %s\n\tcompare to %s\n\tunmatched %s", + sgr_names[num], _nc_visbuf2(1, base_a), + _nc_visbuf2(2, base_b), + _nc_visbuf2(3, b)); + } + return FALSE; + } else if (delaying) { + a = skip_delay(a); + b = skip_delay(b); + } else if ((*b == '0' || (*b == ';')) && *a == 'm') { + b++; + } else { + a++; + } + } + switch (*a) { + case '$': + if (delaying == 0) + delaying = 1; + break; + case '<': + if (delaying == 1) + delaying = 2; + break; + default: + delaying = 0; + break; + } + a++; + b++; + } + /* ignore delays on the end of the string */ + a = ignore_delays(a); + return ((num != 0) || (*a == 0)); +} + +static void +check_tparm_err(int num) +{ + if (_nc_tparm_err) + _nc_warning("tparam error in sgr(%d): %s", num, sgr_names[num]); +} + +static char * +check_sgr(TERMTYPE2 *tp, char *zero, int num, char *cap, const char *name) +{ + char *test; + + _nc_tparm_err = 0; + test = TIPARM_9(set_attributes, + num == 1, + num == 2, + num == 3, + num == 4, + num == 5, + num == 6, + num == 7, + num == 8, + num == 9); + if (test != 0) { + if (PRESENT(cap)) { + if (!similar_sgr(num, test, cap)) { + _nc_warning("%s differs from sgr(%d)\n\t%s=%s\n\tsgr(%d)=%s", + name, num, + name, _nc_visbuf2(1, cap), + num, _nc_visbuf2(2, test)); + } + } else if (_nc_capcmp(test, zero)) { + _nc_warning("sgr(%d) present, but not %s", num, name); + } + } else if (PRESENT(cap)) { + _nc_warning("sgr(%d) missing, but %s present", num, name); + } + check_tparm_err(num); + return test; +} + +#define CHECK_SGR(num,name) check_sgr(tp, zero, num, name, #name) + +#ifdef TRACE +/* + * If tic is compiled with TRACE, we'll be able to see the output from the + * DEBUG() macro. But since it doesn't use traceon(), it always goes to + * the standard error. Use this function to make it simpler to follow the + * resulting debug traces. + */ +static void +show_where(unsigned level) +{ + if (_nc_tracing >= DEBUG_LEVEL(level)) { + char my_name[MAX_NAME_SIZE]; + _nc_get_type(my_name); + _tracef("\"%s\", line %d, '%s'", + _nc_get_source(), + _nc_curr_line, my_name); + } +} + +#else +#define show_where(level) /* nothing */ +#endif + +typedef struct { + int keycode; + const char *name; + const char *value; +} NAME_VALUE; + +static NAME_VALUE * +get_fkey_list(TERMTYPE2 *tp) +{ + NAME_VALUE *result = typeMalloc(NAME_VALUE, NUM_STRINGS(tp) + 1); + const struct tinfo_fkeys *all_fkeys = _nc_tinfo_fkeys; + int used = 0; + unsigned j; + + if (result == NULL) + failed("get_fkey_list"); + + for (j = 0; all_fkeys[j].code; j++) { + char *a = tp->Strings[all_fkeys[j].offset]; + if (VALID_STRING(a)) { + result[used].keycode = (int) all_fkeys[j].code; + result[used].name = strnames[all_fkeys[j].offset]; + result[used].value = a; + ++used; + } + } +#if NCURSES_XNAMES + for (j = STRCOUNT; j < NUM_STRINGS(tp); ++j) { + const char *name = ExtStrname(tp, (int) j, strnames); + if (*name == 'k') { + result[used].keycode = -1; + result[used].name = name; + result[used].value = tp->Strings[j]; + ++used; + } + } +#endif + result[used].keycode = 0; + return result; +} + +static void +show_fkey_name(NAME_VALUE * data) +{ + if (data->keycode > 0) { + fprintf(stderr, " %s", keyname(data->keycode)); + fprintf(stderr, " (capability \"%s\")", data->name); + } else { + fprintf(stderr, " capability \"%s\"", data->name); + } +} + +/* + * A terminal entry may contain more than one keycode assigned to a given + * string (e.g., KEY_END and KEY_LL). But curses will only return one (the + * last one assigned). + */ +static void +check_conflict(TERMTYPE2 *tp) +{ + bool conflict = FALSE; + + if (!(_nc_syntax == SYN_TERMCAP && capdump)) { + char *check = calloc((size_t) (NUM_STRINGS(tp) + 1), sizeof(char)); + NAME_VALUE *given = get_fkey_list(tp); + unsigned j, k; + + if (check == NULL) + failed("check_conflict"); + + for (j = 0; given[j].keycode; ++j) { + const char *a = given[j].value; + bool first = TRUE; + + if (!VALID_STRING(a)) + continue; + + for (k = j + 1; given[k].keycode; k++) { + const char *b = given[k].value; + + if (!VALID_STRING(b)) + continue; + if (check[k]) + continue; + + if (!_nc_capcmp(a, b)) { + check[j] = 1; + check[k] = 1; + if (first) { + if (!conflict) { + _nc_warning("conflicting key definitions (using the last)"); + conflict = TRUE; + } + fprintf(stderr, "..."); + show_fkey_name(given + j); + fprintf(stderr, " is the same as"); + show_fkey_name(given + k); + first = FALSE; + } else { + fprintf(stderr, ", "); + show_fkey_name(given + k); + } + } + } + if (!first) + fprintf(stderr, "\n"); + } +#if NCURSES_XNAMES + if (using_extensions) { + /* *INDENT-OFF* */ + static struct { + const char *xcurses; + const char *shifted; + } table[] = { + { "kDC", NULL }, + { "kDN", "kind" }, + { "kEND", NULL }, + { "kHOM", NULL }, + { "kLFT", NULL }, + { "kNXT", NULL }, + { "kPRV", NULL }, + { "kRIT", NULL }, + { "kUP", "kri" }, + { NULL, NULL }, + }; + /* *INDENT-ON* */ + /* + * SVr4 curses defines the "xcurses" names listed above except for + * the special cases in the "shifted" column. When using these + * names for xterm's extensions, that was confusing, and resulted + * in adding extended capabilities with "2" (shift) suffix. This + * check warns about unnecessary use of extensions for this quirk. + */ + for (j = 0; given[j].keycode; ++j) { + const char *find = given[j].name; + int value; + char ch; + + if (!VALID_STRING(given[j].value)) + continue; + + for (k = 0; table[k].xcurses; ++k) { + const char *test = table[k].xcurses; + size_t size = strlen(test); + + if (!strncmp(find, test, size) && strcmp(find, test)) { + switch (sscanf(find + size, "%d%c", &value, &ch)) { + case 1: + if (value == 2) { + _nc_warning("expected '%s' rather than '%s'", + (table[k].shifted + ? table[k].shifted + : test), find); + } else if (value < 2 || value > 15) { + _nc_warning("expected numeric 2..15 '%s'", find); + } + break; + default: + _nc_warning("expected numeric suffix for '%s'", find); + break; + } + break; + } + } + } + } +#endif + free(given); + free(check); + } +} + +/* + * Exiting a video mode should not duplicate sgr0 + */ +static void +check_exit_attribute(const char *name, char *test, char *trimmed, char *untrimmed) +{ + if (VALID_STRING(test) && (trimmed != 0)) { + if (similar_sgr(-1, trimmed, test) || + similar_sgr(-1, untrimmed, test)) { + _nc_warning("%s matches exit_attribute_mode", name); + } + } +} + +/* + * Returns true if the string looks like a standard SGR string. + */ +static bool +is_sgr_string(char *value) +{ + bool result = FALSE; + + if (VALID_STRING(value)) { + int skip = csi_length(value); + + if (skip) { + int ch; + + result = TRUE; + value += skip; + while ((ch = UChar(*value++)) != '\0') { + if (isdigit(ch) || ch == ';') { + ; + } else if (ch == 'm' && *value == '\0') { + ; + } else { + result = FALSE; + break; + } + } + } + } + return result; +} + +/* + * Check if the given capability contains a given SGR attribute. + */ +static void +check_sgr_param(TERMTYPE2 *tp, int code, const char *name, char *value) +{ + if (VALID_STRING(value)) { + int ncv = ((code != 0) ? (1 << (code - 1)) : 0); + char *test = tgoto(value, 0, 0); + if (is_sgr_string(test)) { + int param = 0; + int count = 0; + int skips = 0; + int color = (value == set_a_foreground || + value == set_a_background || + value == set_foreground || + value == set_background); + while (*test != 0) { + if (isdigit(UChar(*test))) { + param = 10 * param + (*test - '0'); + ++count; + } else { + if (count) { + /* + * Avoid unnecessary warning for xterm 256color codes. + */ + if (color && (param == 38 || param == 48)) + skips = 3; + if ((skips-- <= 0) && (param == code)) + break; + } + count = 0; + param = 0; + } + ++test; + } + if (count != 0 && param == code) { + if (code == 0 || + no_color_video < 0 || + !(no_color_video & ncv)) { + _nc_warning("\"%s\" SGR-attribute used in %s", + sgr_names[code], + name); + } + } + } + } +} + +#if NCURSES_XNAMES +static int +standard_type(const char *name) +{ + int result = -1; + const struct name_table_entry *np; + + if ((np = _nc_find_entry(name, _nc_get_hash_table(0))) != 0) { + result = np->nte_type; + } + return result; +} + +static const char * +name_of_type(int type) +{ + const char *result = "unknown"; + switch (type) { + case BOOLEAN: + result = "boolean"; + break; + case NUMBER: + result = "number"; + break; + case STRING: + result = "string"; + break; + } + return result; +} + +static void +check_user_capability_type(const char *name, int actual) +{ + if (lookup_user_capability(name) == 0) { + int expected = standard_type(name); + if (expected >= 0) { + _nc_warning("expected %s to be %s, but actually %s", + name, + name_of_type(actual), + name_of_type(expected) + ); + } else if (*name != 'k') { + _nc_warning("undocumented %s capability %s", + name_of_type(actual), + name); + } + } +} +#endif + +/* other sanity-checks (things that we don't want in the normal + * logic that reads a terminfo entry) + */ +static void +check_termtype(TERMTYPE2 *tp, bool literal) +{ + unsigned j; + + check_conflict(tp); + + for_each_string(j, tp) { + char *a = tp->Strings[j]; + if (VALID_STRING(a)) { + const char *name = ExtStrname(tp, (int) j, strnames); + /* + * If we expect parameters, or if there might be parameters, + * check for consistent number of parameters. + */ + if (j >= SIZEOF(parametrized) || + is_user_capability(name) >= 0 || + parametrized[j] > 0) { + check_params(tp, name, a, (j >= STRCOUNT)); + } + check_delays(tp, ExtStrname(tp, (int) j, strnames), a); + if (capdump) { + check_infotocap(tp, (int) j, a); + } + } + } +#if NCURSES_XNAMES + /* in extended mode, verify that each extension is expected type */ + for_each_ext_boolean(j, tp) { + check_user_capability_type(ExtBoolname(tp, (int) j, strnames), BOOLEAN); + } + for_each_ext_number(j, tp) { + check_user_capability_type(ExtNumname(tp, (int) j, strnames), NUMBER); + } + for_each_ext_string(j, tp) { + check_user_capability_type(ExtStrname(tp, (int) j, strnames), STRING); + } +#endif /* NCURSES_XNAMES */ + + check_acs(tp); + check_colors(tp); + check_cursor(tp); + check_keypad(tp); + check_printer(tp); + check_screen(tp); + + /* + * These are probably both or none. + */ + PAIRED(parm_index, parm_rindex); + PAIRED(parm_ich, parm_dch); + + /* + * These may be mismatched because the terminal description relies on + * restoring the cursor visibility by resetting it. + */ + ANDMISSING(cursor_invisible, cursor_normal); + ANDMISSING(cursor_visible, cursor_normal); + + if (PRESENT(cursor_visible) && PRESENT(cursor_normal) + && !_nc_capcmp(cursor_visible, cursor_normal)) + _nc_warning("cursor_visible is same as cursor_normal"); + + /* + * From XSI & O'Reilly, we gather that sc/rc are required if csr is + * given, because the cursor position after the scrolling operation is + * performed is undefined. + */ + ANDMISSING(change_scroll_region, save_cursor); + ANDMISSING(change_scroll_region, restore_cursor); + + /* + * If we can clear tabs, we should be able to initialize them. + */ + ANDMISSING(clear_all_tabs, set_tab); + + if (PRESENT(set_attributes)) { + char *zero = 0; + + _nc_tparm_err = 0; + if (PRESENT(exit_attribute_mode)) { + zero = strdup(CHECK_SGR(0, exit_attribute_mode)); + } else { + zero = strdup(TIPARM_9(set_attributes, 0, 0, 0, 0, 0, 0, 0, 0, 0)); + } + check_tparm_err(0); + + if (zero != 0) { + CHECK_SGR(1, enter_standout_mode); + CHECK_SGR(2, enter_underline_mode); + CHECK_SGR(3, enter_reverse_mode); + CHECK_SGR(4, enter_blink_mode); + CHECK_SGR(5, enter_dim_mode); + CHECK_SGR(6, enter_bold_mode); + CHECK_SGR(7, enter_secure_mode); + CHECK_SGR(8, enter_protected_mode); + CHECK_SGR(9, enter_alt_charset_mode); + free(zero); + } else { + _nc_warning("sgr(0) did not return a value"); + } + } else if (PRESENT(exit_attribute_mode) && + set_attributes != CANCELLED_STRING) { + if (_nc_syntax == SYN_TERMINFO) + _nc_warning("missing sgr string"); + } +#define CHECK_SGR0(name) check_exit_attribute(#name, name, check_sgr0, exit_attribute_mode) + if (PRESENT(exit_attribute_mode)) { + char *check_sgr0 = _nc_trim_sgr0(tp); + + if (check_sgr0 == NULL || *check_sgr0 == '\0') { + _nc_warning("trimmed sgr0 is empty"); + } else { + show_where(2); + if (check_sgr0 != exit_attribute_mode) { + DEBUG(2, + ("will trim sgr0\n\toriginal sgr0=%s\n\ttrimmed sgr0=%s", + _nc_visbuf2(1, exit_attribute_mode), + _nc_visbuf2(2, check_sgr0))); + } else { + DEBUG(2, + ("will not trim sgr0\n\toriginal sgr0=%s", + _nc_visbuf(exit_attribute_mode))); + } + } +#if defined(exit_italics_mode) + CHECK_SGR0(exit_italics_mode); +#endif + CHECK_SGR0(exit_standout_mode); + CHECK_SGR0(exit_underline_mode); + if (check_sgr0 != exit_attribute_mode) { + free(check_sgr0); + } + } +#define CHECK_SGR_PARAM(code, name) check_sgr_param(tp, (int)code, #name, name) + for (j = 0; *sgr_names[j] != '\0'; ++j) { + CHECK_SGR_PARAM(j, set_a_foreground); + CHECK_SGR_PARAM(j, set_a_background); + CHECK_SGR_PARAM(j, set_foreground); + CHECK_SGR_PARAM(j, set_background); + } +#ifdef TRACE + show_where(2); + if (!auto_right_margin) { + DEBUG(2, + ("can write to lower-right directly")); + } else if (PRESENT(enter_am_mode) && PRESENT(exit_am_mode)) { + DEBUG(2, + ("can write to lower-right by suppressing automargin")); + } else if ((PRESENT(enter_insert_mode) && PRESENT(exit_insert_mode)) + || PRESENT(insert_character) || PRESENT(parm_ich)) { + DEBUG(2, + ("can write to lower-right by using inserts")); + } else { + DEBUG(2, + ("cannot write to lower-right")); + } +#endif + + /* + * Some standard applications (e.g., vi) and some non-curses + * applications (e.g., jove) get confused if we have both ich1 and + * smir/rmir. Let's be nice and warn about that, too, even though + * ncurses handles it. + */ + if ((PRESENT(enter_insert_mode) || PRESENT(exit_insert_mode)) + && PRESENT(insert_character)) { + _nc_warning("non-curses applications may be confused by ich1 with smir/rmir"); + } + + /* + * Finally, do the non-verbose checks + */ + if (save_check_termtype != 0) + save_check_termtype(tp, literal); +} diff --git a/deps/ncurses-6.3/progs/toe.c b/deps/ncurses-6.3/progs/toe.c new file mode 100644 index 0000000..92819c1 --- /dev/null +++ b/deps/ncurses-6.3/progs/toe.c @@ -0,0 +1,779 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-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. * + ****************************************************************************/ + +/**************************************************************************** + * Author: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * toe.c --- table of entries report generator + */ + +#include <progs.priv.h> + +#include <sys/stat.h> + +#if USE_HASHED_DB +#include <hashed_db.h> +#endif + +MODULE_ID("$Id: toe.c,v 1.86 2021/10/10 00:55:32 tom Exp $") + +#define isDotname(name) (!strcmp(name, ".") || !strcmp(name, "..")) + +typedef struct { + int db_index; + unsigned long checksum; + char *term_name; + char *description; +} TERMDATA; + +const char *_nc_progname; + +static TERMDATA *ptr_termdata; /* array of terminal data */ +static size_t use_termdata; /* actual usage in ptr_termdata[] */ +static size_t len_termdata; /* allocated size of ptr_termdata[] */ + +#if NO_LEAKS +#undef ExitProgram +static GCC_NORETURN void ExitProgram(int code); +static void +ExitProgram(int code) +{ + _nc_free_entries(_nc_head); + _nc_free_tic(code); +} +#endif + +static GCC_NORETURN void failed(const char *); + +static void +failed(const char *msg) +{ + perror(msg); + ExitProgram(EXIT_FAILURE); +} + +static char * +strmalloc(const char *value) +{ + char *result = strdup(value); + if (result == 0) { + failed("strmalloc"); + } + return result; +} + +static TERMDATA * +new_termdata(void) +{ + size_t want = use_termdata + 1; + + if (want >= len_termdata) { + len_termdata = (2 * want) + 10; + ptr_termdata = typeRealloc(TERMDATA, len_termdata, ptr_termdata); + if (ptr_termdata == 0) + failed("ptr_termdata"); + } + + return ptr_termdata + use_termdata++; +} + +static int +compare_termdata(const void *a, const void *b) +{ + const TERMDATA *p = (const TERMDATA *) a; + const TERMDATA *q = (const TERMDATA *) b; + int result = strcmp(p->term_name, q->term_name); + + if (result == 0) { + result = (p->db_index - q->db_index); + } + return result; +} + +/* + * Sort the array of TERMDATA and print it. If more than one database is being + * reported, add a column to show which database has a given entry. + */ +static void +show_termdata(int eargc, char **eargv) +{ + if (use_termdata) { + size_t n; + + if (eargc > 1) { + int j; + + for (j = 0; j < eargc; ++j) { + int k; + + for (k = 0; k <= j; ++k) { + printf("--"); + } + printf("> "); + printf("%s\n", eargv[j]); + } + } + if (use_termdata > 1) + qsort(ptr_termdata, use_termdata, sizeof(TERMDATA), compare_termdata); + for (n = 0; n < use_termdata; ++n) { + int nk = -1; + + /* + * If there is more than one database, show how they differ. + */ + if (eargc > 1) { + unsigned long check = 0; + int k = 0; + for (;;) { + char mark = ((check == 0 + || (check != ptr_termdata[n].checksum)) + ? '*' + : '+'); + + for (; k < ptr_termdata[n].db_index; ++k) { + printf("--"); + } + + /* + * If this is the first entry, or its checksum differs + * from the first entry's checksum, print "*". Otherwise + * it looks enough like a duplicate to print "+". + */ + printf("%c-", mark); + check = ptr_termdata[n].checksum; + if (mark == '*' && nk < 0) + nk = (int) n; + + ++k; + if ((n + 1) >= use_termdata + || strcmp(ptr_termdata[n].term_name, + ptr_termdata[n + 1].term_name)) { + break; + } + ++n; + } + for (; k < eargc; ++k) { + printf("--"); + } + printf(":\t"); + } + if (nk < 0) + nk = (int) n; + + (void) printf("%-10s\t%s\n", + ptr_termdata[n].term_name, + ptr_termdata[nk].description); + } + } +} + +static void +free_termdata(void) +{ + if (ptr_termdata != 0) { + while (use_termdata != 0) { + --use_termdata; + free(ptr_termdata[use_termdata].term_name); + free(ptr_termdata[use_termdata].description); + } + free(ptr_termdata); + ptr_termdata = 0; + } + use_termdata = 0; + len_termdata = 0; +} + +static char ** +allocArgv(size_t count) +{ + char **result = typeCalloc(char *, count + 1); + if (result == 0) + failed("realloc eargv"); + + assert(result != 0); + return result; +} + +static void +freeArgv(char **argv) +{ + if (argv) { + int count = 0; + while (argv[count]) { + free(argv[count++]); + } + free(argv); + } +} + +#if USE_HASHED_DB +static bool +make_db_name(char *dst, const char *src, unsigned limit) +{ + static const char suffix[] = DBM_SUFFIX; + + bool result = FALSE; + size_t lens = sizeof(suffix) - 1; + size_t size = strlen(src); + size_t need = lens + size; + + if (need <= limit) { + if (size >= lens + && !strcmp(src + size - lens, suffix)) { + _nc_STRCPY(dst, src, PATH_MAX); + } else { + _nc_SPRINTF(dst, _nc_SLIMIT(PATH_MAX) "%.*s%s", + (int) (PATH_MAX - sizeof(suffix)), + src, suffix); + } + result = TRUE; + } + return result; +} +#endif + +typedef void (DescHook) (int /* db_index */ , + int /* db_limit */ , + const char * /* term_name */ , + TERMTYPE2 * /* term */ ); + +static const char * +term_description(TERMTYPE2 *tp) +{ + const char *desc; + + if (tp->term_names == 0 + || (desc = strrchr(tp->term_names, '|')) == 0 + || (*++desc == '\0')) { + desc = "(No description)"; + } + + return desc; +} + +/* display a description for the type */ +static void +deschook(int db_index, int db_limit, const char *term_name, TERMTYPE2 *tp) +{ + (void) db_index; + (void) db_limit; + (void) printf("%-10s\t%s\n", term_name, term_description(tp)); +} + +static unsigned long +string_sum(const char *value) +{ + unsigned long result = 0; + + if ((intptr_t) value == (intptr_t) (-1)) { + result = ~result; + } else if (value) { + while (*value) { + result += UChar(*value); + ++value; + } + } + return result; +} + +static unsigned long +checksum_of(TERMTYPE2 *tp) +{ + unsigned long result = string_sum(tp->term_names); + unsigned i; + + for (i = 0; i < NUM_BOOLEANS(tp); i++) { + result += (unsigned long) (tp->Booleans[i]); + } + for (i = 0; i < NUM_NUMBERS(tp); i++) { + result += (unsigned long) (tp->Numbers[i]); + } + for (i = 0; i < NUM_STRINGS(tp); i++) { + result += string_sum(tp->Strings[i]); + } + return result; +} + +/* collect data, to sort before display */ +static void +sorthook(int db_index, int db_limit, const char *term_name, TERMTYPE2 *tp) +{ + TERMDATA *data = new_termdata(); + + data->db_index = db_index; + data->checksum = ((db_limit > 1) ? checksum_of(tp) : 0); + data->term_name = strmalloc(term_name); + data->description = strmalloc(term_description(tp)); +} + +#if NCURSES_USE_TERMCAP +/* + * Check if the buffer contents are printable ASCII, ensuring that we do not + * accidentally pick up incompatible binary content from a hashed database. + */ +static bool +is_termcap(char *buffer) +{ + bool result = TRUE; + while (*buffer != '\0') { + int ch = UChar(*buffer++); + if (ch == '\t') + continue; + if (ch < ' ' || ch > '~') { + result = FALSE; + break; + } + } + return result; +} + +static void +show_termcap(int db_index, int db_limit, char *buffer, DescHook hook) +{ + TERMTYPE2 data; + char *next = strchr(buffer, ':'); + char *last; + char *list = buffer; + + if (next) + *next = '\0'; + + last = strrchr(buffer, '|'); + if (last) + ++last; + + memset(&data, 0, sizeof(data)); + data.term_names = strmalloc(buffer); + while ((next = strtok(list, "|")) != 0) { + if (next != last) + hook(db_index, db_limit, next, &data); + list = 0; + } + free(data.term_names); +} +#endif + +#if NCURSES_USE_DATABASE +static char * +copy_entryname(DIRENT * src) +{ + size_t len = NAMLEN(src); + char *result = malloc(len + 1); + if (result == 0) + failed("copy entryname"); + memcpy(result, src->d_name, len); + result[len] = '\0'; + + return result; +} +#endif + +static int +typelist(int eargc, char *eargv[], + int verbosity, + DescHook hook) +/* apply a function to each entry in given terminfo directories */ +{ + int i; + + for (i = 0; i < eargc; i++) { +#if NCURSES_USE_DATABASE + if (_nc_is_dir_path(eargv[i])) { + char *cwd_buf = 0; + DIR *termdir; + DIRENT *subdir; + + if ((termdir = opendir(eargv[i])) == 0) { + (void) fflush(stdout); + (void) fprintf(stderr, + "%s: can't open terminfo directory %s\n", + _nc_progname, eargv[i]); + continue; + } + + if (verbosity) + (void) printf("#\n#%s:\n#\n", eargv[i]); + + while ((subdir = readdir(termdir)) != 0) { + size_t cwd_len; + char *name_1; + DIR *entrydir; + DIRENT *entry; + + name_1 = copy_entryname(subdir); + if (isDotname(name_1)) { + free(name_1); + continue; + } + + cwd_len = NAMLEN(subdir) + strlen(eargv[i]) + 3; + cwd_buf = typeRealloc(char, cwd_len, cwd_buf); + if (cwd_buf == 0) + failed("realloc cwd_buf"); + + assert(cwd_buf != 0); + + _nc_SPRINTF(cwd_buf, _nc_SLIMIT(cwd_len) + "%s/%s/", eargv[i], name_1); + free(name_1); + + if (chdir(cwd_buf) != 0) + continue; + + entrydir = opendir("."); + if (entrydir == 0) { + perror(cwd_buf); + continue; + } + while ((entry = readdir(entrydir)) != 0) { + char *name_2; + TERMTYPE2 lterm; + char *cn; + int status; + + name_2 = copy_entryname(entry); + if (isDotname(name_2) || !_nc_is_file_path(name_2)) { + free(name_2); + continue; + } + + status = _nc_read_file_entry(name_2, &lterm); + if (status <= 0) { + (void) fflush(stdout); + (void) fprintf(stderr, + "%s: couldn't open terminfo file %s.\n", + _nc_progname, name_2); + free(name_2); + continue; + } + + /* only visit things once, by primary name */ + cn = _nc_first_name(lterm.term_names); + if (!strcmp(cn, name_2)) { + /* apply the selected hook function */ + hook(i, eargc, cn, &lterm); + } + _nc_free_termtype2(&lterm); + free(name_2); + } + closedir(entrydir); + } + closedir(termdir); + if (cwd_buf != 0) + free(cwd_buf); + continue; + } +#if USE_HASHED_DB + else { + DB *capdbp; + char filename[PATH_MAX]; + + if (verbosity) + (void) printf("#\n#%s:\n#\n", eargv[i]); + + if (make_db_name(filename, eargv[i], sizeof(filename))) { + if ((capdbp = _nc_db_open(filename, FALSE)) != 0) { + DBT key, data; + int code; + + code = _nc_db_first(capdbp, &key, &data); + while (code == 0) { + TERMTYPE2 lterm; + int used; + char *have; + char *cn; + + if (_nc_db_have_data(&key, &data, &have, &used)) { + if (_nc_read_termtype(&lterm, have, used) > 0) { + /* only visit things once, by primary name */ + cn = _nc_first_name(lterm.term_names); + /* apply the selected hook function */ + hook(i, eargc, cn, &lterm); + _nc_free_termtype2(&lterm); + } + } + code = _nc_db_next(capdbp, &key, &data); + } + + _nc_db_close(capdbp); + continue; + } + } + } +#endif /* USE_HASHED_DB */ +#endif /* NCURSES_USE_DATABASE */ +#if NCURSES_USE_TERMCAP +#if HAVE_BSD_CGETENT + { + CGETENT_CONST char *db_array[2]; + char *buffer = 0; + + if (verbosity) + (void) printf("#\n#%s:\n#\n", eargv[i]); + + db_array[0] = eargv[i]; + db_array[1] = 0; + + if (cgetfirst(&buffer, db_array) > 0) { + if (is_termcap(buffer)) { + show_termcap(i, eargc, buffer, hook); + free(buffer); + while (cgetnext(&buffer, db_array) > 0) { + show_termcap(i, eargc, buffer, hook); + free(buffer); + } + } + cgetclose(); + continue; + } + } +#else + /* scan termcap text-file only */ + if (_nc_is_file_path(eargv[i])) { + char buffer[2048]; + FILE *fp; + + if (verbosity) + (void) printf("#\n#%s:\n#\n", eargv[i]); + + if ((fp = safe_fopen(eargv[i], "r")) != 0) { + while (fgets(buffer, sizeof(buffer), fp) != 0) { + if (!is_termcap(buffer)) + break; + if (*buffer == '#') + continue; + if (isspace(*buffer)) + continue; + show_termcap(i, eargc, buffer, hook); + } + fclose(fp); + } + } +#endif +#endif + } + + if (hook == sorthook) { + show_termdata(eargc, eargv); + free_termdata(); + } + + return (EXIT_SUCCESS); +} + +static void +usage(void) +{ + (void) fprintf(stderr, "usage: %s [-ahsuUV] [-v n] [file...]\n", _nc_progname); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + bool all_dirs = FALSE; + bool direct_dependencies = FALSE; + bool invert_dependencies = FALSE; + bool header = FALSE; + char *report_file = 0; + int code; + int this_opt, last_opt = '?'; + unsigned v_opt = 0; + DescHook *hook = deschook; + + _nc_progname = _nc_rootname(argv[0]); + + while ((this_opt = getopt(argc, argv, "0123456789ahsu:vU:V")) != -1) { + /* handle optional parameter */ + if (isdigit(this_opt)) { + switch (last_opt) { + case 'v': + v_opt = (unsigned) (this_opt - '0'); + break; + default: + if (isdigit(last_opt)) + v_opt *= 10; + else + v_opt = 0; + v_opt += (unsigned) (this_opt - '0'); + last_opt = this_opt; + } + continue; + } + switch (this_opt) { + case 'a': + all_dirs = TRUE; + break; + case 'h': + header = TRUE; + break; + case 's': + hook = sorthook; + break; + case 'u': + direct_dependencies = TRUE; + report_file = optarg; + break; + case 'v': + v_opt = 1; + break; + case 'U': + invert_dependencies = TRUE; + report_file = optarg; + break; + case 'V': + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + default: + usage(); + } + } + set_trace_level(v_opt); + + if (report_file != 0) { + if (freopen(report_file, "r", stdin) == 0) { + (void) fflush(stdout); + fprintf(stderr, "%s: can't open %s\n", _nc_progname, report_file); + ExitProgram(EXIT_FAILURE); + } + + /* parse entries out of the source file */ + _nc_set_source(report_file); + _nc_read_entry_source(stdin, 0, FALSE, FALSE, NULLHOOK); + } + + /* maybe we want a direct-dependency listing? */ + if (direct_dependencies) { + ENTRY *qp; + + for_entry_list(qp) { + if (qp->nuses) { + unsigned j; + + (void) printf("%s:", _nc_first_name(qp->tterm.term_names)); + for (j = 0; j < qp->nuses; j++) + (void) printf(" %s", qp->uses[j].name); + putchar('\n'); + } + } + + ExitProgram(EXIT_SUCCESS); + } + + /* maybe we want a reverse-dependency listing? */ + if (invert_dependencies) { + ENTRY *qp, *rp; + + for_entry_list(qp) { + int matchcount = 0; + + for_entry_list(rp) { + unsigned i; + + if (rp->nuses == 0) + continue; + + for (i = 0; i < rp->nuses; i++) + if (_nc_name_match(qp->tterm.term_names, + rp->uses[i].name, "|")) { + if (matchcount++ == 0) + (void) printf("%s:", + _nc_first_name(qp->tterm.term_names)); + (void) printf(" %s", + _nc_first_name(rp->tterm.term_names)); + } + } + if (matchcount) + putchar('\n'); + } + + ExitProgram(EXIT_SUCCESS); + } + + /* + * If we get this far, user wants a simple terminal type listing. + */ + if (optind < argc) { + code = typelist(argc - optind, argv + optind, header, hook); + } else if (all_dirs) { + DBDIRS state; + int offset; + int pass; + char **eargv = 0; + + code = EXIT_FAILURE; + for (pass = 0; pass < 2; ++pass) { + size_t count = 0; + const char *path; + + _nc_first_db(&state, &offset); + while ((path = _nc_next_db(&state, &offset)) != 0) { + if (quick_prefix(path)) + continue; + if (pass) { + eargv[count] = strmalloc(path); + } + ++count; + } + if (!pass) { + eargv = allocArgv(count); + if (eargv == 0) + failed("eargv"); + } else { + code = typelist((int) count, eargv, header, hook); + freeArgv(eargv); + } + } + } else { + DBDIRS state; + int offset; + const char *path; + char **eargv = allocArgv((size_t) 2); + size_t count = 0; + + if (eargv == 0) + failed("eargv"); + _nc_first_db(&state, &offset); + if ((path = _nc_next_db(&state, &offset)) != 0) { + if (!quick_prefix(path)) + eargv[count++] = strmalloc(path); + } + + code = typelist((int) count, eargv, header, hook); + + freeArgv(eargv); + } + _nc_last_db(); + + ExitProgram(code); +} diff --git a/deps/ncurses-6.3/progs/tparm_type.c b/deps/ncurses-6.3/progs/tparm_type.c new file mode 100644 index 0000000..3da4a07 --- /dev/null +++ b/deps/ncurses-6.3/progs/tparm_type.c @@ -0,0 +1,100 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2014,2015 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: Thomas E. Dickey * + ****************************************************************************/ + +#include <tparm_type.h> + +MODULE_ID("$Id: tparm_type.c,v 1.4 2020/10/24 17:30:32 tom Exp $") + +/* + * Lookup the type of call we should make to tparm(). This ignores the actual + * terminfo capability (bad, because it is not extensible), but makes this + * code portable to platforms where sizeof(int) != sizeof(char *). + */ +TParams +tparm_type(const char *name) +{ +#define TD(code, longname, ti, tc) \ + {code, {longname} }, \ + {code, {ti} }, \ + {code, {tc} } + TParams result = Numbers; + /* *INDENT-OFF* */ + static const struct { + TParams code; + const char name[12]; + } table[] = { + TD(Num_Str, "pkey_key", "pfkey", "pk"), + TD(Num_Str, "pkey_local", "pfloc", "pl"), + TD(Num_Str, "pkey_xmit", "pfx", "px"), + TD(Num_Str, "plab_norm", "pln", "pn"), + TD(Num_Str_Str, "pkey_plab", "pfxl", "xl"), + }; + /* *INDENT-ON* */ + + unsigned n; + for (n = 0; n < SIZEOF(table); n++) { + if (!strcmp(name, table[n].name)) { + result = table[n].code; + break; + } + } + return result; +} + +TParams +guess_tparm_type(int nparam, char **p_is_s) +{ + TParams result = Other; + switch (nparam) { + case 0: + case 1: + if (!p_is_s[0]) + result = Numbers; + break; + case 2: + if (!p_is_s[0] && !p_is_s[1]) + result = Numbers; + if (!p_is_s[0] && p_is_s[1]) + result = Num_Str; + break; + case 3: + if (!p_is_s[0] && !p_is_s[1] && !p_is_s[2]) + result = Numbers; + if (!p_is_s[0] && p_is_s[1] && p_is_s[2]) + result = Num_Str_Str; + break; + default: + break; + } + return result; +} diff --git a/deps/ncurses-6.3/progs/tparm_type.h b/deps/ncurses-6.3/progs/tparm_type.h new file mode 100644 index 0000000..7c102a3 --- /dev/null +++ b/deps/ncurses-6.3/progs/tparm_type.h @@ -0,0 +1,55 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2014 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: Thomas E. Dickey * + ****************************************************************************/ + +/* + * $Id: tparm_type.h,v 1.3 2020/10/24 17:11:33 tom Exp $ + * + * determine expected/actual number of parameters to setup for tparm + */ +#ifndef TPARM_TYPE_H +#define TPARM_TYPE_H 1 + +#define USE_LIBTINFO +#include <progs.priv.h> + +typedef enum { + Other = -1 + ,Numbers = 0 + ,Num_Str + ,Num_Str_Str +} TParams; + +extern TParams tparm_type(const char *name); +extern TParams guess_tparm_type(int nparam, char **p_is_s); + +#endif /* TPARM_TYPE_H */ diff --git a/deps/ncurses-6.3/progs/tput.c b/deps/ncurses-6.3/progs/tput.c new file mode 100644 index 0000000..8ac478e --- /dev/null +++ b/deps/ncurses-6.3/progs/tput.c @@ -0,0 +1,449 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * tput.c -- shellscript access to terminal capabilities + * + * by Eric S. Raymond <esr@snark.thyrsus.com>, portions based on code from + * Ross Ridge's mytinfo package. + */ + +#include <tparm_type.h> +#include <clear_cmd.h> +#include <reset_cmd.h> + +#include <transform.h> +#include <tty_settings.h> + +MODULE_ID("$Id: tput.c,v 1.97 2021/10/02 18:09:23 tom Exp $") + +#define PUTS(s) fputs(s, stdout) + +const char *_nc_progname = "tput"; + +static bool is_init = FALSE; +static bool is_reset = FALSE; +static bool is_clear = FALSE; + +static GCC_NORETURN void +quit(int status, const char *fmt, ...) +{ + va_list argp; + + va_start(argp, fmt); + fprintf(stderr, "%s: ", _nc_progname); + vfprintf(stderr, fmt, argp); + fprintf(stderr, "\n"); + va_end(argp); + ExitProgram(status); +} + +static GCC_NORETURN void +usage(const char *optstring) +{ +#define KEEP(s) s "\n" + static const char msg[] = + { + KEEP("") + KEEP("Options:") + KEEP(" -S << read commands from standard input") + KEEP(" -T TERM use this instead of $TERM") + KEEP(" -V print curses-version") + KEEP(" -x do not try to clear scrollback") + KEEP("") + KEEP("Commands:") + KEEP(" clear clear the screen") + KEEP(" init initialize the terminal") + KEEP(" reset reinitialize the terminal") + KEEP(" capname unlike clear/init/reset, print value for capability \"capname\"") + }; +#undef KEEP + (void) fprintf(stderr, "Usage: %s [options] [command]\n", _nc_progname); + if (optstring != NULL) { + const char *s = msg; + while (*s != '\0') { + fputc(UChar(*s), stderr); + if (!strncmp(s, " -", 3)) { + if (strchr(optstring, s[3]) == NULL) + s = strchr(s, '\n') + 1; + } else if (!strncmp(s, "\n\nC", 3)) + break; + ++s; + } + } else { + fputs(msg, stderr); + } + ExitProgram(ErrUsage); +} + +static char * +check_aliases(char *name, bool program) +{ + static char my_init[] = "init"; + static char my_reset[] = "reset"; + static char my_clear[] = "clear"; + + char *result = name; + if ((is_init = same_program(name, program ? PROG_INIT : my_init))) + result = my_init; + if ((is_reset = same_program(name, program ? PROG_RESET : my_reset))) + result = my_reset; + if ((is_clear = same_program(name, program ? PROG_CLEAR : my_clear))) + result = my_clear; + return result; +} + +static int +exit_code(int token, int value) +{ + int result = 99; + + switch (token) { + case BOOLEAN: + result = !value; /* TRUE=0, FALSE=1 */ + break; + case NUMBER: + result = 0; /* always zero */ + break; + case STRING: + result = value; /* 0=normal, 1=missing */ + break; + } + return result; +} + +/* + * Returns nonzero on error. + */ +static int +tput_cmd(int fd, TTY * settings, bool opt_x, int argc, char **argv, int *used) +{ + NCURSES_CONST char *name; + char *s; + int status; +#if !PURE_TERMINFO + bool termcap = FALSE; +#endif + + name = check_aliases(argv[0], FALSE); + *used = 1; + if (is_reset || is_init) { + TTY oldmode; + + int terasechar = -1; /* new erase character */ + int intrchar = -1; /* new interrupt character */ + int tkillchar = -1; /* new kill character */ + + if (is_reset) { + reset_start(stdout, TRUE, FALSE); + reset_tty_settings(fd, settings, FALSE); + } else { + reset_start(stdout, FALSE, TRUE); + } + +#if HAVE_SIZECHANGE + set_window_size(fd, &lines, &columns); +#else + (void) fd; +#endif + set_control_chars(settings, terasechar, intrchar, tkillchar); + set_conversions(settings); + if (send_init_strings(fd, &oldmode)) { + reset_flush(); + } + + update_tty_settings(&oldmode, settings); + return 0; + } + + if (strcmp(name, "longname") == 0) { + PUTS(longname()); + return 0; + } +#if !PURE_TERMINFO + retry: +#endif + if (strcmp(name, "clear") == 0) { + return (clear_cmd(opt_x) == ERR) ? ErrUsage : 0; + } else if ((status = tigetflag(name)) != -1) { + return exit_code(BOOLEAN, status); + } else if ((status = tigetnum(name)) != CANCELLED_NUMERIC) { + (void) printf("%d\n", status); + return exit_code(NUMBER, 0); + } else if ((s = tigetstr(name)) == CANCELLED_STRING) { +#if !PURE_TERMINFO + if (!termcap) { + const struct name_table_entry *np; + + termcap = TRUE; + if ((np = _nc_find_entry(name, _nc_get_hash_table(termcap))) != 0) { + switch (np->nte_type) { + case BOOLEAN: + name = boolnames[np->nte_index]; + break; + + case NUMBER: + name = numnames[np->nte_index]; + break; + + case STRING: + name = strnames[np->nte_index]; + break; + } + goto retry; + } + } +#endif + quit(ErrCapName, "unknown terminfo capability '%s'", name); + } else if (VALID_STRING(s)) { + if (argc > 1) { + int k; + int analyzed; + int popcount; + long numbers[1 + NUM_PARM]; + char *strings[1 + NUM_PARM]; + char *p_is_s[NUM_PARM]; + TParams paramType; + + /* Nasty hack time. The tparm function needs to see numeric + * parameters as numbers, not as pointers to their string + * representations + */ + + for (k = 1; (k < argc) && (k <= NUM_PARM); k++) { + char *tmp = 0; + strings[k] = argv[k]; + numbers[k] = strtol(argv[k], &tmp, 0); + if (tmp == 0 || *tmp != 0) + numbers[k] = 0; + } + for (k = argc; k <= NUM_PARM; k++) { + numbers[k] = 0; + strings[k] = 0; + } + + paramType = tparm_type(name); +#if NCURSES_XNAMES + /* + * If the capability is an extended one, analyze the string. + */ + if (paramType == Numbers) { + struct name_table_entry const *entry_ptr; + entry_ptr = _nc_find_type_entry(name, STRING, FALSE); + if (entry_ptr == NULL) { + paramType = Other; + } + } +#endif + + popcount = 0; + _nc_reset_tparm(NULL); + switch (paramType) { + case Num_Str: + s = TPARM_2(s, numbers[1], strings[2]); + analyzed = 2; + break; + case Num_Str_Str: + s = TPARM_3(s, numbers[1], strings[2], strings[3]); + analyzed = 3; + break; + case Numbers: + analyzed = _nc_tparm_analyze(NULL, s, p_is_s, &popcount); +#define myParam(n) numbers[n] + s = TIPARM_9(s, + myParam(1), + myParam(2), + myParam(3), + myParam(4), + myParam(5), + myParam(6), + myParam(7), + myParam(8), + myParam(9)); +#undef myParam + break; + case Other: + /* FALLTHRU */ + default: + analyzed = _nc_tparm_analyze(NULL, s, p_is_s, &popcount); +#define myParam(n) (p_is_s[n - 1] != 0 ? ((TPARM_ARG) strings[n]) : numbers[n]) + s = TPARM_9(s, + myParam(1), + myParam(2), + myParam(3), + myParam(4), + myParam(5), + myParam(6), + myParam(7), + myParam(8), + myParam(9)); +#undef myParam + break; + } + if (analyzed < popcount) { + analyzed = popcount; + } + *used += analyzed; + } + + /* use putp() in order to perform padding */ + putp(s); + return exit_code(STRING, 0); + } + return exit_code(STRING, 1); +} + +int +main(int argc, char **argv) +{ + char *term; + int errret; + bool cmdline = TRUE; + int c; + char buf[BUFSIZ]; + int result = 0; + int fd; + int used; + TTY tty_settings; + bool opt_x = FALSE; /* clear scrollback if possible */ + bool is_alias; + bool need_tty; + + _nc_progname = check_aliases(_nc_rootname(argv[0]), TRUE); + is_alias = (is_clear || is_reset || is_init); + + term = getenv("TERM"); + + while ((c = getopt(argc, argv, is_alias ? "T:Vx" : "ST:Vx")) != -1) { + switch (c) { + case 'S': + cmdline = FALSE; + break; + case 'T': + use_env(FALSE); + use_tioctl(TRUE); + term = optarg; + break; + case 'V': + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + case 'x': /* do not try to clear scrollback */ + opt_x = TRUE; + break; + default: + usage(is_alias ? "TVx" : NULL); + /* NOTREACHED */ + } + } + + need_tty = ((is_reset || is_init) || + (optind < argc && + (!strcmp(argv[optind], "reset") || + !strcmp(argv[optind], "init")))); + + /* + * Modify the argument list to omit the options we processed. + */ + if (is_alias) { + if (optind-- < argc) { + argc -= optind; + argv += optind; + } + argv[0] = strdup(_nc_progname); + } else { + argc -= optind; + argv += optind; + } + + if (term == 0 || *term == '\0') + quit(ErrUsage, "No value for $TERM and no -T specified"); + + fd = save_tty_settings(&tty_settings, need_tty); + + if (setupterm(term, fd, &errret) != OK && errret <= 0) + quit(ErrTermType, "unknown terminal \"%s\"", term); + + if (cmdline) { + int code = 0; + if ((argc <= 0) && !is_alias) + usage(NULL); + while (argc > 0) { + code = tput_cmd(fd, &tty_settings, opt_x, argc, argv, &used); + if (code != 0) + break; + argc -= used; + argv += used; + } + ExitProgram(code); + } + + while (fgets(buf, sizeof(buf), stdin) != 0) { + size_t need = strlen(buf); + char **argvec = typeCalloc(char *, need + 1); + char **argnow; + int argnum = 0; + char *cp; + + if (argvec == NULL) { + quit(ErrSystem(1), strerror(errno)); + } + + /* split the buffer into tokens */ + for (cp = buf; *cp; cp++) { + if (isspace(UChar(*cp))) { + *cp = '\0'; + } else if (cp == buf || cp[-1] == '\0') { + argvec[argnum++] = cp; + if (argnum >= (int) need) + break; + } + } + + argnow = argvec; + while (argnum > 0) { + int code = tput_cmd(fd, &tty_settings, opt_x, argnum, argnow, &used); + if (code != 0) { + if (result == 0) + result = ErrSystem(0); /* will return value >4 */ + ++result; + } + argnum -= used; + argnow += used; + } + free(argvec); + } + + ExitProgram(result); +} diff --git a/deps/ncurses-5.9/progs/transform.c b/deps/ncurses-6.3/progs/transform.c similarity index 88% rename from deps/ncurses-5.9/progs/transform.c rename to deps/ncurses-6.3/progs/transform.c index 75f4573..67caf2d 100644 --- a/deps/ncurses-5.9/progs/transform.c +++ b/deps/ncurses-6.3/progs/transform.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2009-2010,2011 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 * @@ -34,21 +35,21 @@ #include <transform.h> -MODULE_ID("$Id: transform.c,v 1.2 2010/09/04 21:16:17 tom Exp $") +MODULE_ID("$Id: transform.c,v 1.4 2020/02/02 23:34:34 tom Exp $") #ifdef SUFFIX_IGNORED static void -trim_suffix(const char *a, unsigned *len) +trim_suffix(const char *a, size_t *len) { const char ignore[] = SUFFIX_IGNORED; if (sizeof(ignore) != 0) { bool trim = FALSE; - unsigned need = (sizeof(ignore) - 1); + size_t need = (sizeof(ignore) - 1); if (*len > need) { - unsigned first = *len - need; - unsigned n; + size_t first = *len - need; + size_t n; trim = TRUE; for (n = first; n < *len; ++n) { if (tolower(UChar(a[n])) != tolower(UChar(ignore[n - first]))) { @@ -69,8 +70,8 @@ trim_suffix(const char *a, unsigned *len) bool same_program(const char *a, const char *b) { - unsigned len_a = strlen(a); - unsigned len_b = strlen(b); + size_t len_a = strlen(a); + size_t len_b = strlen(b); trim_suffix(a, &len_a); trim_suffix(b, &len_b); diff --git a/deps/ncurses-6.3/progs/tset.c b/deps/ncurses-6.3/progs/tset.c new file mode 100644 index 0000000..62611b3 --- /dev/null +++ b/deps/ncurses-6.3/progs/tset.c @@ -0,0 +1,909 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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: Zeyd M. Ben-Halim <zmbenhal@netcom.com> 1992,1995 * + * and: Eric S. Raymond <esr@snark.thyrsus.com> * + * and: Thomas E. Dickey 1996-on * + ****************************************************************************/ + +/* + * Notes: + * The initial adaptation from 4.4BSD Lite sources in September 1995 used 686 + * lines from that version, and made changes/additions for 150 lines. There + * was no reformatting, so with/without ignoring whitespace, the amount of + * change is the same. + * + * Comparing with current (2009) source, excluding this comment: + * a) 209 lines match identically to the 4.4BSD Lite sources, with 771 lines + * changed/added. + * a) Ignoring whitespace, the current version still uses 516 lines from the + * 4.4BSD Lite sources, with 402 lines changed/added. + * + * Raymond's original comment on this follows... + */ + +/* + * tset.c - terminal initialization utility + * + * This code was mostly swiped from 4.4BSD tset, with some obsolescent + * cruft removed and substantial portions rewritten. A Regents of the + * University of California copyright applies to some portions of the + * code, and is reproduced below: + */ +/*- + * Copyright (c) 1980, 1991, 1993 + * The Regents of the University of California. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. Neither the name of the University nor the names of its contributors + * may be used to endorse or promote products derived from this software + * without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include <reset_cmd.h> +#include <termcap.h> +#include <transform.h> +#include <tty_settings.h> + +#if HAVE_GETTTYNAM && HAVE_TTYENT_H +#include <ttyent.h> +#endif +#ifdef NeXT +char *ttyname(int fd); +#endif + +MODULE_ID("$Id: tset.c,v 1.130 2021/10/02 18:08:09 tom Exp $") + +#ifndef environ +extern char **environ; +#endif + +const char *_nc_progname = "tset"; + +#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c)) + +static GCC_NORETURN void exit_error(void); + +static int +CaselessCmp(const char *a, const char *b) +{ /* strcasecmp isn't portable */ + while (*a && *b) { + int cmp = LOWERCASE(*a) - LOWERCASE(*b); + if (cmp != 0) + break; + a++, b++; + } + return LOWERCASE(*a) - LOWERCASE(*b); +} + +static GCC_NORETURN void +exit_error(void) +{ + restore_tty_settings(); + (void) fprintf(stderr, "\n"); + fflush(stderr); + ExitProgram(EXIT_FAILURE); + /* NOTREACHED */ +} + +static GCC_NORETURN void +err(const char *fmt, ...) +{ + va_list ap; + va_start(ap, fmt); + (void) fprintf(stderr, "%s: ", _nc_progname); + (void) vfprintf(stderr, fmt, ap); + va_end(ap); + exit_error(); + /* NOTREACHED */ +} + +static GCC_NORETURN void +failed(const char *msg) +{ + char temp[BUFSIZ]; + size_t len = strlen(_nc_progname) + 2; + + if ((int) len < (int) sizeof(temp) - 12) { + _nc_STRCPY(temp, _nc_progname, sizeof(temp)); + _nc_STRCAT(temp, ": ", sizeof(temp)); + } else { + _nc_STRCPY(temp, "tset: ", sizeof(temp)); + } + _nc_STRNCAT(temp, msg, sizeof(temp), sizeof(temp) - strlen(temp) - 2); + perror(temp); + exit_error(); + /* NOTREACHED */ +} + +/* Prompt the user for a terminal type. */ +static const char * +askuser(const char *dflt) +{ + static char answer[256]; + + /* We can get recalled; if so, don't continue uselessly. */ + clearerr(stdin); + if (feof(stdin) || ferror(stdin)) { + (void) fprintf(stderr, "\n"); + exit_error(); + /* NOTREACHED */ + } + + for (;;) { + char *p; + + if (dflt) + (void) fprintf(stderr, "Terminal type? [%s] ", dflt); + else + (void) fprintf(stderr, "Terminal type? "); + (void) fflush(stderr); + + if (fgets(answer, sizeof(answer), stdin) == 0) { + if (dflt == 0) { + exit_error(); + /* NOTREACHED */ + } + return (dflt); + } + + if ((p = strchr(answer, '\n')) != 0) + *p = '\0'; + if (answer[0]) + return (answer); + if (dflt != 0) + return (dflt); + } +} + +/************************************************************************** + * + * Mapping logic begins here + * + **************************************************************************/ + +/* Baud rate conditionals for mapping. */ +#define GT 0x01 +#define EQ 0x02 +#define LT 0x04 +#define NOT 0x08 +#define GE (GT | EQ) +#define LE (LT | EQ) + +typedef struct map { + struct map *next; /* Linked list of maps. */ + const char *porttype; /* Port type, or "" for any. */ + const char *type; /* Terminal type to select. */ + int conditional; /* Baud rate conditionals bitmask. */ + int speed; /* Baud rate to compare against. */ +} MAP; + +static MAP *cur, *maplist; + +#define DATA(name,value) { { name }, value } + +typedef struct speeds { + const char string[8]; + int speed; +} SPEEDS; + +#if defined(EXP_WIN32_DRIVER) +static const SPEEDS speeds[] = +{ + {"0", 0} +}; +#else +static const SPEEDS speeds[] = +{ + DATA("0", B0), + DATA("50", B50), + DATA("75", B75), + DATA("110", B110), + DATA("134", B134), + DATA("134.5", B134), + DATA("150", B150), + DATA("200", B200), + DATA("300", B300), + DATA("600", B600), + DATA("1200", B1200), + DATA("1800", B1800), + DATA("2400", B2400), + DATA("4800", B4800), + DATA("9600", B9600), + /* sgttyb may define up to this point */ +#ifdef B19200 + DATA("19200", B19200), +#endif +#ifdef B38400 + DATA("38400", B38400), +#endif +#ifdef B19200 + DATA("19200", B19200), +#endif +#ifdef B38400 + DATA("38400", B38400), +#endif +#ifdef B19200 + DATA("19200", B19200), +#else +#ifdef EXTA + DATA("19200", EXTA), +#endif +#endif +#ifdef B38400 + DATA("38400", B38400), +#else +#ifdef EXTB + DATA("38400", EXTB), +#endif +#endif +#ifdef B57600 + DATA("57600", B57600), +#endif +#ifdef B76800 + DATA("76800", B57600), +#endif +#ifdef B115200 + DATA("115200", B115200), +#endif +#ifdef B153600 + DATA("153600", B153600), +#endif +#ifdef B230400 + DATA("230400", B230400), +#endif +#ifdef B307200 + DATA("307200", B307200), +#endif +#ifdef B460800 + DATA("460800", B460800), +#endif +#ifdef B500000 + DATA("500000", B500000), +#endif +#ifdef B576000 + DATA("576000", B576000), +#endif +#ifdef B921600 + DATA("921600", B921600), +#endif +#ifdef B1000000 + DATA("1000000", B1000000), +#endif +#ifdef B1152000 + DATA("1152000", B1152000), +#endif +#ifdef B1500000 + DATA("1500000", B1500000), +#endif +#ifdef B2000000 + DATA("2000000", B2000000), +#endif +#ifdef B2500000 + DATA("2500000", B2500000), +#endif +#ifdef B3000000 + DATA("3000000", B3000000), +#endif +#ifdef B3500000 + DATA("3500000", B3500000), +#endif +#ifdef B4000000 + DATA("4000000", B4000000), +#endif +}; +#undef DATA +#endif + +static int +tbaudrate(char *rate) +{ + const SPEEDS *sp = 0; + size_t n; + + /* The baudrate number can be preceded by a 'B', which is ignored. */ + if (*rate == 'B') + ++rate; + + for (n = 0; n < SIZEOF(speeds); ++n) { + if (n > 0 && (speeds[n].speed <= speeds[n - 1].speed)) { + /* if the speeds are not increasing, likely a numeric overflow */ + break; + } + if (!CaselessCmp(rate, speeds[n].string)) { + sp = speeds + n; + break; + } + } + if (sp == 0) + err("unknown baud rate %s", rate); + return (sp->speed); +} + +/* + * Syntax for -m: + * [port-type][test baudrate]:terminal-type + * The baud rate tests are: >, <, @, =, ! + */ +static void +add_mapping(const char *port, char *arg) +{ + MAP *mapp; + char *copy, *p; + const char *termp; + char *base = 0; + + copy = strdup(arg); + mapp = typeMalloc(MAP, 1); + if (copy == 0 || mapp == 0) + failed("malloc"); + + assert(copy != 0); + assert(mapp != 0); + + mapp->next = 0; + if (maplist == 0) + cur = maplist = mapp; + else { + cur->next = mapp; + cur = mapp; + } + + mapp->porttype = arg; + mapp->conditional = 0; + + arg = strpbrk(arg, "><@=!:"); + + if (arg == 0) { /* [?]term */ + mapp->type = mapp->porttype; + mapp->porttype = 0; + goto done; + } + + if (arg == mapp->porttype) /* [><@=! baud]:term */ + termp = mapp->porttype = 0; + else + termp = base = arg; + + for (;; ++arg) { /* Optional conditionals. */ + switch (*arg) { + case '<': + if (mapp->conditional & GT) + goto badmopt; + mapp->conditional |= LT; + break; + case '>': + if (mapp->conditional & LT) + goto badmopt; + mapp->conditional |= GT; + break; + case '@': + case '=': /* Not documented. */ + mapp->conditional |= EQ; + break; + case '!': + mapp->conditional |= NOT; + break; + default: + goto next; + } + } + + next: + if (*arg == ':') { + if (mapp->conditional) + goto badmopt; + ++arg; + } else { /* Optional baudrate. */ + arg = strchr(p = arg, ':'); + if (arg == 0) + goto badmopt; + *arg++ = '\0'; + mapp->speed = tbaudrate(p); + } + + mapp->type = arg; + + /* Terminate porttype, if specified. */ + if (termp != 0) + *base = '\0'; + + /* If a NOT conditional, reverse the test. */ + if (mapp->conditional & NOT) + mapp->conditional = ~mapp->conditional & (EQ | GT | LT); + + /* If user specified a port with an option flag, set it. */ + done: + if (port) { + if (mapp->porttype) { + badmopt: + err("illegal -m option format: %s", copy); + } + mapp->porttype = port; + } + free(copy); +#ifdef MAPDEBUG + (void) printf("port: %s\n", mapp->porttype ? mapp->porttype : "ANY"); + (void) printf("type: %s\n", mapp->type); + (void) printf("conditional: "); + p = ""; + if (mapp->conditional & GT) { + (void) printf("GT"); + p = "/"; + } + if (mapp->conditional & EQ) { + (void) printf("%sEQ", p); + p = "/"; + } + if (mapp->conditional & LT) + (void) printf("%sLT", p); + (void) printf("\nspeed: %d\n", mapp->speed); +#endif +} + +/* + * Return the type of terminal to use for a port of type 'type', as specified + * by the first applicable mapping in 'map'. If no mappings apply, return + * 'type'. + */ +static const char * +mapped(const char *type) +{ + MAP *mapp; + int match; + + for (mapp = maplist; mapp; mapp = mapp->next) + if (mapp->porttype == 0 || !strcmp(mapp->porttype, type)) { + switch (mapp->conditional) { + case 0: /* No test specified. */ + match = TRUE; + break; + case EQ: + match = ((int) ospeed == mapp->speed); + break; + case GE: + match = ((int) ospeed >= mapp->speed); + break; + case GT: + match = ((int) ospeed > mapp->speed); + break; + case LE: + match = ((int) ospeed <= mapp->speed); + break; + case LT: + match = ((int) ospeed < mapp->speed); + break; + default: + match = FALSE; + } + if (match) + return (mapp->type); + } + /* No match found; return given type. */ + return (type); +} + +/************************************************************************** + * + * Entry fetching + * + **************************************************************************/ + +/* + * Figure out what kind of terminal we're dealing with, and then read in + * its termcap entry. + */ +static const char * +get_termcap_entry(int fd, char *userarg) +{ + int errret; + char *p; + const char *ttype; +#if HAVE_GETTTYNAM + struct ttyent *t; +#else + FILE *fp; +#endif + char *ttypath; + + (void) fd; + + if (userarg) { + ttype = userarg; + goto found; + } + + /* Try the environment. */ + if ((ttype = getenv("TERM")) != 0) + goto map; + + if ((ttypath = ttyname(fd)) != 0) { + p = _nc_basename(ttypath); +#if HAVE_GETTTYNAM + /* + * We have the 4.3BSD library call getttynam(3); that means + * there's an /etc/ttys to look up device-to-type mappings in. + * Try ttyname(3); check for dialup or other mapping. + */ + if ((t = getttynam(p))) { + ttype = t->ty_type; + goto map; + } +#else + if ((fp = fopen("/etc/ttytype", "r")) != 0 + || (fp = fopen("/etc/ttys", "r")) != 0) { + char buffer[BUFSIZ]; + char *s, *t, *d; + + while (fgets(buffer, sizeof(buffer) - 1, fp) != 0) { + for (s = buffer, t = d = 0; *s; s++) { + if (isspace(UChar(*s))) + *s = '\0'; + else if (t == 0) + t = s; + else if (d == 0 && s != buffer && s[-1] == '\0') + d = s; + } + if (t != 0 && d != 0 && !strcmp(d, p)) { + ttype = strdup(t); + fclose(fp); + goto map; + } + } + fclose(fp); + } +#endif /* HAVE_GETTTYNAM */ + } + + /* If still undefined, use "unknown". */ + ttype = "unknown"; + + map:ttype = mapped(ttype); + + /* + * If not a path, remove TERMCAP from the environment so we get a + * real entry from /etc/termcap. This prevents us from being fooled + * by out of date stuff in the environment. + */ + found: + if ((p = getenv("TERMCAP")) != 0 && !_nc_is_abs_path(p)) { + /* 'unsetenv("TERMCAP")' is not portable. + * The 'environ' array is better. + */ + int n; + for (n = 0; environ[n] != 0; n++) { + if (!strncmp("TERMCAP=", environ[n], (size_t) 8)) { + while ((environ[n] = environ[n + 1]) != 0) { + n++; + } + break; + } + } + } + + /* + * ttype now contains a pointer to the type of the terminal. + * If the first character is '?', ask the user. + */ + if (ttype[0] == '?') { + if (ttype[1] != '\0') + ttype = askuser(ttype + 1); + else + ttype = askuser(0); + } + /* Find the terminfo entry. If it doesn't exist, ask the user. */ + while (setupterm((NCURSES_CONST char *) ttype, fd, &errret) + != OK) { + if (errret == 0) { + (void) fprintf(stderr, "%s: unknown terminal type %s\n", + _nc_progname, ttype); + ttype = 0; + } else { + (void) fprintf(stderr, + "%s: can't initialize terminal type %s (error %d)\n", + _nc_progname, ttype, errret); + ttype = 0; + } + ttype = askuser(ttype); + } +#if BROKEN_LINKER + tgetflag("am"); /* force lib_termcap.o to be linked for 'ospeed' */ +#endif + return (ttype); +} + +/************************************************************************** + * + * Main sequence + * + **************************************************************************/ + +/* + * Convert the obsolete argument forms into something that getopt can handle. + * This means that -e, -i and -k get default arguments supplied for them. + */ +static void +obsolete(char **argv) +{ + for (; *argv; ++argv) { + char *parm = argv[0]; + + if (parm[0] == '-' && parm[1] == '\0') { + argv[0] = strdup("-q"); + continue; + } + + if ((parm[0] != '-') + || (argv[1] && argv[1][0] != '-') + || (parm[1] != 'e' && parm[1] != 'i' && parm[1] != 'k') + || (parm[2] != '\0')) + continue; + switch (argv[0][1]) { + case 'e': + argv[0] = strdup("-e^H"); + break; + case 'i': + argv[0] = strdup("-i^C"); + break; + case 'k': + argv[0] = strdup("-k^U"); + break; + } + } +} + +static void +print_shell_commands(const char *ttype) +{ + const char *p; + int len; + char *var; + char *leaf; + /* + * Figure out what shell we're using. A hack, we look for an + * environmental variable SHELL ending in "csh". + */ + if ((var = getenv("SHELL")) != 0 + && ((len = (int) strlen(leaf = _nc_basename(var))) >= 3) + && !strcmp(leaf + len - 3, "csh")) + p = "set noglob;\nsetenv TERM %s;\nunset noglob;\n"; + else + p = "TERM=%s;\n"; + (void) printf(p, ttype); +} + +static void +usage(void) +{ +#define SKIP(s) /* nothing */ +#define KEEP(s) s "\n" + static const char msg[] = + { + KEEP("") + KEEP("Options:") + SKIP(" -a arpanet (obsolete)") + KEEP(" -c set control characters") + SKIP(" -d dialup (obsolete)") + KEEP(" -e ch erase character") + KEEP(" -I no initialization strings") + KEEP(" -i ch interrupt character") + KEEP(" -k ch kill character") + KEEP(" -m mapping map identifier to type") + SKIP(" -p plugboard (obsolete)") + KEEP(" -Q do not output control key settings") + KEEP(" -q display term only, do no changes") + KEEP(" -r display term on stderr") + SKIP(" -S (obsolete)") + KEEP(" -s output TERM set command") + KEEP(" -V print curses-version") + KEEP(" -w set window-size") + KEEP("") + KEEP("If neither -c/-w are given, both are assumed.") + }; +#undef KEEP +#undef SKIP + (void) fprintf(stderr, "Usage: %s [options] [terminal]\n", _nc_progname); + fputs(msg, stderr); + ExitProgram(EXIT_FAILURE); + /* NOTREACHED */ +} + +static char +arg_to_char(void) +{ + return (char) ((optarg[0] == '^' && optarg[1] != '\0') + ? ((optarg[1] == '?') ? '\177' : CTRL(optarg[1])) + : optarg[0]); +} + +int +main(int argc, char **argv) +{ + int ch, noinit, noset, quiet, Sflag, sflag, showterm; + const char *ttype; + int terasechar = -1; /* new erase character */ + int intrchar = -1; /* new interrupt character */ + int tkillchar = -1; /* new kill character */ + int my_fd; + bool opt_c = FALSE; /* set control-chars */ + bool opt_w = FALSE; /* set window-size */ + TTY mode, oldmode; + + _nc_progname = _nc_rootname(*argv); + obsolete(argv); + noinit = noset = quiet = Sflag = sflag = showterm = 0; + while ((ch = getopt(argc, argv, "a:cd:e:Ii:k:m:p:qQrSsVw")) != -1) { + switch (ch) { + case 'c': /* set control-chars */ + opt_c = TRUE; + break; + case 'a': /* OBSOLETE: map identifier to type */ + add_mapping("arpanet", optarg); + break; + case 'd': /* OBSOLETE: map identifier to type */ + add_mapping("dialup", optarg); + break; + case 'e': /* erase character */ + terasechar = arg_to_char(); + break; + case 'I': /* no initialization strings */ + noinit = 1; + break; + case 'i': /* interrupt character */ + intrchar = arg_to_char(); + break; + case 'k': /* kill character */ + tkillchar = arg_to_char(); + break; + case 'm': /* map identifier to type */ + add_mapping(0, optarg); + break; + case 'p': /* OBSOLETE: map identifier to type */ + add_mapping("plugboard", optarg); + break; + case 'Q': /* don't output control key settings */ + quiet = 1; + break; + case 'q': /* display term only */ + noset = 1; + break; + case 'r': /* display term on stderr */ + showterm = 1; + break; + case 'S': /* OBSOLETE: output TERM & TERMCAP */ + Sflag = 1; + break; + case 's': /* output TERM set command */ + sflag = 1; + break; + case 'V': /* print curses-version */ + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + case 'w': /* set window-size */ + opt_w = TRUE; + break; + case '?': + default: + usage(); + } + } + + argc -= optind; + argv += optind; + + if (argc > 1) + usage(); + + if (!opt_c && !opt_w) + opt_c = opt_w = TRUE; + + my_fd = save_tty_settings(&mode, TRUE); + oldmode = mode; +#ifdef TERMIOS + ospeed = (NCURSES_OSPEED) cfgetospeed(&mode); +#elif defined(EXP_WIN32_DRIVER) + ospeed = 0; +#else + ospeed = (NCURSES_OSPEED) mode.sg_ospeed; +#endif + + if (same_program(_nc_progname, PROG_RESET)) { + reset_start(stderr, TRUE, FALSE); + reset_tty_settings(my_fd, &mode, noset); + } else { + reset_start(stderr, FALSE, TRUE); + } + + ttype = get_termcap_entry(my_fd, *argv); + + if (!noset) { +#if HAVE_SIZECHANGE + if (opt_w) { + set_window_size(my_fd, &lines, &columns); + } +#endif + if (opt_c) { + set_control_chars(&mode, terasechar, intrchar, tkillchar); + set_conversions(&mode); + + if (!noinit) { + if (send_init_strings(my_fd, &oldmode)) { + (void) putc('\r', stderr); + (void) fflush(stderr); + (void) napms(1000); /* Settle the terminal. */ + } + } + + update_tty_settings(&oldmode, &mode); + } + } + + if (noset) { + (void) printf("%s\n", ttype); + } else { + if (showterm) + (void) fprintf(stderr, "Terminal type is %s.\n", ttype); + /* + * If erase, kill and interrupt characters could have been + * modified and not -Q, display the changes. + */ + if (!quiet) { + print_tty_chars(&oldmode, &mode); + } + } + + if (Sflag) + err("The -S option is not supported under terminfo."); + + if (sflag) { + print_shell_commands(ttype); + } + + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-6.3/progs/tty_settings.c b/deps/ncurses-6.3/progs/tty_settings.c new file mode 100644 index 0000000..a9eb8cd --- /dev/null +++ b/deps/ncurses-6.3/progs/tty_settings.c @@ -0,0 +1,107 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2016,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: Thomas E. Dickey * + ****************************************************************************/ + +#define USE_LIBTINFO +#include <tty_settings.h> + +#include <fcntl.h> + +MODULE_ID("$Id: tty_settings.c,v 1.7 2021/10/08 23:53:32 tom Exp $") + +static int my_fd; +static TTY original_settings; +static bool can_restore = FALSE; + +static void +failed(const char *msg) +{ + int code = errno; + + (void) fprintf(stderr, "%s: %s: %s\n", _nc_progname, msg, strerror(code)); + restore_tty_settings(); + (void) fprintf(stderr, "\n"); + ExitProgram(ErrSystem(code)); + /* NOTREACHED */ +} + +static bool +get_tty_settings(int fd, TTY * tty_settings) +{ + bool success = TRUE; + my_fd = fd; + if (fd < 0 || GET_TTY(my_fd, tty_settings) < 0) { + success = FALSE; + } + return success; +} + +/* + * Open a file descriptor on the current terminal, to obtain its settings. + * stderr is less likely to be redirected than stdout; try that first. + */ +int +save_tty_settings(TTY * tty_settings, bool need_tty) +{ + if (!get_tty_settings(STDERR_FILENO, tty_settings) && + !get_tty_settings(STDOUT_FILENO, tty_settings) && + !get_tty_settings(STDIN_FILENO, tty_settings)) { + if (need_tty) { + int fd = open("/dev/tty", O_RDWR); + if (!get_tty_settings(fd, tty_settings)) { + failed("terminal attributes"); + } + } else { + my_fd = fileno(stdout); + } + } else { + can_restore = TRUE; + original_settings = *tty_settings; + } + return my_fd; +} + +void +restore_tty_settings(void) +{ + if (can_restore) + SET_TTY(my_fd, &original_settings); +} + +/* Set the modes if they've changed. */ +void +update_tty_settings(TTY * old_settings, TTY * new_settings) +{ + if (memcmp(new_settings, old_settings, sizeof(TTY))) { + SET_TTY(my_fd, new_settings); + } +} diff --git a/deps/ncurses-6.3/progs/tty_settings.h b/deps/ncurses-6.3/progs/tty_settings.h new file mode 100644 index 0000000..bd3bcdb --- /dev/null +++ b/deps/ncurses-6.3/progs/tty_settings.h @@ -0,0 +1,51 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2016,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: Thomas E Dickey * + ****************************************************************************/ + +/* + * $Id: tty_settings.h,v 1.3 2020/02/02 23:34:34 tom Exp $ + * + * Utility functions for saving/restoring terminal settings. + */ +#ifndef TTY_SETTINGS_H +#define TTY_SETTINGS_H 1 +/* *INDENT-OFF* */ + +#include <progs.priv.h> + +extern int save_tty_settings(TTY * /* tty_settings */, bool /* need_tty */ ); +extern void restore_tty_settings(void); +extern void update_tty_settings(TTY * /* old_settings */, TTY * /* new_settings */ ); + +/* *INDENT-ON* */ + +#endif /* TTY_SETTINGS_H */ diff --git a/deps/ncurses-6.3/test/Makefile.in b/deps/ncurses-6.3/test/Makefile.in new file mode 100644 index 0000000..2931b98 --- /dev/null +++ b/deps/ncurses-6.3/test/Makefile.in @@ -0,0 +1,174 @@ +# $Id: Makefile.in,v 1.129 2021/07/03 15:45:33 tom Exp $ +############################################################################## +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 1998-2017,2018 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: Thomas E. Dickey 1996-on +# +# Makefile for ncurses tests. + +# turn off _all_ suffix rules; we'll generate our own +.SUFFIXES: + +SHELL = @SHELL@ +VPATH = @srcdir@ + +@SET_MAKE@ + +destdir = +x = @EXEEXT@ +o = .@OBJEXT@ + +MODEL = ../@DFT_OBJ_SUBDIR@ +top_srcdir = @top_srcdir@ +srcdir = @srcdir@ +prefix = @prefix@ +exec_prefix = @exec_prefix@ +datarootdir = @datarootdir@ + +bindir = @bindir@ +libdir = @libdir@ +includedir = @includedir@ +includesubdir = @includesubdir@ +datarootdir = @datarootdir@ +datadir = @datadir@ + +BINDIR = $(DESTDIR)$(bindir) +LIBDIR = $(DESTDIR)$(libdir) +INCLUDEDIR = $(DESTDIR)$(includedir)$(includesubdir) +DATADIR = $(DESTDIR)$(datadir) + +PACKAGE = @PACKAGE@ + +LIBTOOL = @LIBTOOL@ +LIBTOOL_OPTS = @LIBTOOL_OPTS@ +LIBTOOL_CLEAN = @LIB_CLEAN@ +LIBTOOL_COMPILE = @LIB_COMPILE@ +LIBTOOL_LINK = @LIB_LINK@ + +INSTALL = @INSTALL@ @INSTALL_OPT_O@ +INSTALL_PROG = @INSTALL_PROGRAM@ @INSTALL_OPT_S@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_DATA = @INSTALL_DATA@ +transform = @program_transform_name@ +TRANSFORM = sed 's/$x$$//'|sed '$(transform)'|sed 's/$$/$x/' + +CTAGS = @CTAGS@ +ETAGS = @ETAGS@ + +CC = @CC@ +CPP = @CPP@ + +CFLAGS = @CFLAGS@ @EXTRA_CFLAGS@ +CPPFLAGS = -I. -I$(srcdir) -I../test -DHAVE_CONFIG_H -DDATA_DIR=\"$(datadir)\" @CPPFLAGS@ + +CCFLAGS = $(CPPFLAGS) $(CFLAGS) + +CFLAGS_LIBTOOL = $(CCFLAGS) +CFLAGS_NORMAL = $(CCFLAGS) -DNCURSES_STATIC +CFLAGS_DEBUG = $(CCFLAGS) -DNCURSES_STATIC @CC_G_OPT@ -DTRACE +CFLAGS_PROFILE = $(CCFLAGS) -DNCURSES_STATIC -pg +CFLAGS_SHARED = $(CCFLAGS) @CC_SHARED_OPTS@ + +CFLAGS_DEFAULT = $(CFLAGS_@DFT_UPR_MODEL@) + +REL_VERSION = @cf_cv_rel_version@ +ABI_VERSION = @cf_cv_abi_version@ +LOCAL_LIBDIR = @top_builddir@/lib +LOCAL_LIBS = @TEST_DEPS@ +MATH_LIB = @MATH_LIB@ +TEST_LIBS = @TEST_LIBS@ + +LD = @LD@ +LINK = @LINK_TESTS@ $(LIBTOOL_LINK) $(CFLAGS) + +LDFLAGS = @LD_MODEL@ @LOCAL_LDFLAGS@ @LDFLAGS@ + +LDFLAGS_LIBTOOL = $(LDFLAGS) $(CFLAGS_LIBTOOL) +LDFLAGS_NORMAL = $(LDFLAGS) $(CFLAGS_NORMAL) +LDFLAGS_DEBUG = $(LDFLAGS) $(CFLAGS_DEBUG) +LDFLAGS_PROFILE = $(LDFLAGS) $(CFLAGS_PROFILE) +LDFLAGS_SHARED = $(LDFLAGS) $(CFLAGS_SHARED) @LD_SHARED_OPTS@ + +TEST_ARGS = @LDFLAGS_STATIC@ @TEST_ARGS@ @LDFLAGS_SHARED@ + +# use these for linking with all of the libraries +LIBS_DEFAULT = $(TEST_ARGS) @LIBS@ $(TEST_LIBS) +LDFLAGS_DEFAULT = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_DEFAULT) + +# use these for linking with the (n)curses library and possibly pthreads +LIBS_THREADS = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-l@FORM_NAME@.*-l@PANEL_NAME@[^ ]*//'` $(TEST_LIBS) @PTHREAD@ +LDFLAGS_THREADS = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_THREADS) + +# use these for linking with the (n)curses library +LIBS_CURSES = `echo "$(TEST_ARGS) @LIBS@" | sed -e 's/-l@FORM_NAME@.*-l@PANEL_NAME@[^ ]*//'` $(TEST_LIBS) +LDFLAGS_CURSES = $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_CURSES) + +# use these when we need the math library +LDFLAGS_CURSES_M= $(LDFLAGS_CURSES) $(MATH_LIB) + +# use these for linking with the tinfo library if we have it, or curses library if not +LIBS_TINFO = @LDFLAGS_STATIC@ @TINFO_LIBS@ @LDFLAGS_SHARED@ @LIBS@ $(TEST_LIBS) +LDFLAGS_TINFO = @TINFO_LDFLAGS@ $(LDFLAGS_@DFT_UPR_MODEL@) $(LIBS_TINFO) + +LINT = @LINT@ +LINT_OPTS = @LINT_OPTS@ +LINT_LIBS = -lform -lmenu -lpanel -lncurses @LIBS@ + +INCDIR = $(top_srcdir)/include +incdir = ../include + +HEADER_DEPS = \ + $(incdir)/curses.h \ + $(incdir)/term.h \ + $(incdir)/ncurses_cfg.h \ + $(incdir)/ncurses_def.h \ + $(incdir)/ncurses_dll.h \ + $(incdir)/term.h \ + $(incdir)/unctrl.h \ + $(INCDIR)/nc_alloc.h + +################################################################################ + +@MAKE_PHONY@.PHONY : all +@MAKE_PHONY@.PHONY : check + +all:: + +# Verify that each header-file can be compiled without including another. +check:: + @$(SHELL) -c "for header in *.h;\ + do \ + echo \"** testing \$${header}\" ; \ + echo \"#include <\$${header}>\" >headers.c; \ + echo \"int main(void) { return 0; }\" >>headers.c; \ + $(CC) -c $(CFLAGS) $(CPPFLAGS) headers.c; \ + done" + -@rm -f headers.* + +# The rest is generated from the "programs" and "modules" files... diff --git a/deps/ncurses-6.3/test/README b/deps/ncurses-6.3/test/README new file mode 100644 index 0000000..0963346 --- /dev/null +++ b/deps/ncurses-6.3/test/README @@ -0,0 +1,846 @@ +------------------------------------------------------------------------------- +-- Copyright 2018-2020,2021 Thomas E. Dickey -- +-- Copyright 1998-2017,2018 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. -- +------------------------------------------------------------------------------- +-- $Id: README,v 1.73 2021/03/07 00:08:58 tom Exp $ +------------------------------------------------------------------------------- + +The programs in this directory are used to test and demonstrate ncurses. +Some are interesting in themselves, while others merely show how some of +the library calls are used. Some date back to the initial releases of +ncurses during the mid-1990s, such as: + + blue - Blue Moon, a nifty solitaire (uses color) + bs.c - the game of Battleships (uses color) + firework.c - multi-colored fireworks (uses color) + gdc.c - Great Digital Clock (uses color) + hanoi.c - the game of hanoi (uses color essentially) + knight.c - the game of Knight's Tour (uses color) + lrtest.c - test of access to the lower-right corner + ncurses.c - multi-test program (uses color) + newdemo.c - another test from PDCurses (uses color) + rain.c - rain drops keep falling on my head... + tclock.c - analog/digital clock + testcurs.c - a test from the PDCurses people (uses color) + tracemunch - Perl script to make trace scripts easier to read + worm.c - worms run all over your screen (uses color) + xmas.c - Xmas greeting card + +Besides being built as part of ncurses, the programs are also packaged as +"ncurses-examples". Despite the name, the programs have been adjusted to +allow them to build with other curses implementations, to provide a way to +compare those with ncurses. + +You can build the programs by + + ./configure + make + +The configure script has several options which allow you to tell it more +about the curses implementation for which you are building the examples. +Use + + ./configure --help + +to list the options. + +------------------------------------------------------------------------------- +------------------------------------------------------------------------------- + +These programs provide examples of use, but do not comprise a complete set of +tests. Here is a list of library externals, noting those that are used: + +libform: +------- +TYPE_ALNUM test: demo_forms +TYPE_ALPHA test: demo_forms dup_field move_field ncurses +TYPE_ENUM test: demo_forms +TYPE_INTEGER test: demo_forms +TYPE_IPV4 test: demo_forms +TYPE_NUMERIC test: demo_forms +TYPE_REGEXP test: demo_forms +current_field test: demo_forms dup_field edit_field move_field ncurses +data_ahead test: demo_forms +data_behind test: demo_forms +dup_field - +dynamic_field_info test: demo_forms +field_arg test: demo_forms +field_back test: demo_forms edit_field +field_buffer test: cardfile demo_forms ncurses +field_count test: demo_forms move_field +field_fore test: demo_forms +field_index test: demo_forms +field_info test: edit_field ncurses +field_init - +field_just - +field_opts test: demo_forms dup_field move_field ncurses +field_opts_off test: cardfile demo_forms form_driver_w +field_opts_on test: demo_forms +field_pad test: demo_forms +field_status test: demo_forms +field_term - +field_type test: demo_forms +field_userptr test: dup_field edit_field move_field ncurses +form_driver test: cardfile demo_forms dup_field edit_field move_field ncurses +form_driver_w test: form_driver_w +form_fields test: cardfile demo_forms move_field +form_init - +form_opts - +form_opts_off - +form_opts_on - +form_page test: demo_forms +form_request_by_name - +form_request_name test: dup_field edit_field move_field +form_sub test: cardfile demo_forms dup_field move_field ncurses +form_term - +form_userptr - +form_win test: cardfile demo_forms dup_field edit_field form_driver_w move_field ncurses +free_field test: cardfile demo_forms dup_field form_driver_w move_field ncurses +free_fieldtype test: ncurses +free_form test: cardfile demo_forms dup_field form_driver_w move_field ncurses +link_field - +link_fieldtype - +move_field test: move_field +new_field test: cardfile demo_forms dup_field form_driver_w move_field ncurses +new_fieldtype test: ncurses +new_form test: cardfile demo_forms dup_field form_driver_w move_field ncurses +new_form_sp - +new_page test: demo_forms +pos_form_cursor - +post_form test: cardfile demo_forms dup_field form_driver_w move_field ncurses +scale_form test: demo_forms ncurses +set_current_field test: demo_forms +set_field_back test: cardfile demo_forms dup_field edit_field form_driver_w move_field ncurses +set_field_buffer test: cardfile demo_forms dup_field edit_field move_field ncurses +set_field_fore test: demo_forms +set_field_init - +set_field_just test: cardfile demo_forms +set_field_opts test: demo_forms dup_field move_field ncurses +set_field_pad test: demo_forms +set_field_status test: demo_forms +set_field_term - +set_field_type test: demo_forms dup_field move_field ncurses +set_field_userptr test: edit_field ncurses +set_fieldtype_arg - +set_fieldtype_choice - +set_form_fields test: move_field +set_form_init - +set_form_opts - +set_form_page - +set_form_sub test: cardfile demo_forms ncurses +set_form_term - +set_form_userptr - +set_form_win test: cardfile demo_forms ncurses +set_max_field test: demo_forms +set_new_page test: demo_forms +unfocus_current_field - +unpost_form test: cardfile demo_forms dup_field form_driver_w move_field ncurses + +libmenu: +------- +current_item test: demo_menus ncurses +free_item test: ncurses +free_menu test: demo_menus ncurses +item_count test: demo_menus +item_description - +item_index test: demo_menus ncurses +item_init - +item_name test: demo_menus ncurses +item_opts - +item_opts_off - +item_opts_on - +item_term - +item_userptr test: demo_menus +item_value test: demo_menus ncurses +item_visible - +menu_back - +menu_driver test: demo_menus ncurses +menu_fore - +menu_format - +menu_grey - +menu_init - +menu_items test: demo_menus ncurses +menu_mark test: demo_menus +menu_opts - +menu_opts_off test: demo_menus ncurses +menu_opts_on test: demo_menus +menu_pad - +menu_pattern test: demo_menus +menu_request_by_name - +menu_request_name - +menu_spacing test: demo_menus +menu_sub test: demo_menus +menu_term - +menu_userptr - +menu_win test: demo_menus ncurses +new_item test: demo_menus ncurses +new_menu test: demo_menus ncurses +new_menu_sp - +pos_menu_cursor lib: menu +post_menu test: demo_menus ncurses +scale_menu test: demo_menus ncurses +set_current_item - +set_item_init test: demo_menus +set_item_opts - +set_item_term test: demo_menus +set_item_userptr test: demo_menus +set_item_value test: demo_menus ncurses +set_menu_back test: demo_menus +set_menu_fore test: demo_menus +set_menu_format test: demo_menus ncurses +set_menu_grey - +set_menu_init test: demo_menus +set_menu_items - +set_menu_mark test: demo_menus +set_menu_opts - +set_menu_pad - +set_menu_pattern - +set_menu_spacing - +set_menu_sub test: demo_menus ncurses +set_menu_term test: demo_menus +set_menu_userptr - +set_menu_win test: demo_menus ncurses +set_top_row - +top_row - +unpost_menu test: demo_menus ncurses + +libncurses: +---------- +BC test: demo_termcap +COLORS test: color_content demo_new_pair dots_curses dots_xcurses echochar ncurses pair_content picsmap savescreen xmas +COLOR_PAIR test: background blue bs cardfile clip_printw demo_forms demo_menus demo_panels dots_curses dup_field echochar filter firework gdc hanoi ins_wide insdelln inserts knight move_field ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas +COLOR_PAIRS test: demo_new_pair dots_curses dots_xcurses echochar ncurses newdemo pair_content +COLS test: cardfile demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_panels demo_tabs ditto dots_curses dots_xcurses echochar filter firework foldkeys hashtest inch_wide inchs ins_wide inserts lrtest movewindow ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm +ESCDELAY test: test_opaque +LINES test: cardfile demo_defkey demo_keyok demo_menus demo_panels demo_tabs ditto dots_curses dots_xcurses echochar firework hanoi hashtest inch_wide inchs ins_wide inserts lrtest move_field movewindow ncurses newdemo padview picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas +PAIR_NUMBER test: dump_window ncurses +PC test: demo_termcap +SP lib: form +TABSIZE test: test_opaque +UP test: demo_termcap +acs_map test: back_ground background gdc ins_wide inserts knight movewindow ncurses newdemo savescreen test_add_wchstr test_addchstr test_addstr test_addwstr testcurs +add_wch test: demo_new_pair demo_panels ncurses picsmap savescreen test_add_wchstr test_addwstr +add_wchnstr test: test_add_wchstr +add_wchstr test: test_add_wchstr view +addch test: back_ground background blue bs color_content demo_tabs dots_curses echochar hashtest ncurses padview pair_content picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_opaque testaddch view worm +addchnstr test: test_addchstr +addchstr test: test_addchstr +addnstr test: test_addstr +addnwstr test: dots_xcurses ncurses test_addwstr +addstr test: blue bs cardfile filter gdc hanoi lrtest ncurses test_addstr +addwstr test: blue test_addwstr +alloc_pair test: demo_new_pair dots_xcurses +alloc_pair_sp - +assume_default_colors test: back_ground background ncurses +assume_default_colors_sp - +attr_get - +attr_off test: dots_xcurses ncurses +attr_on test: dots_xcurses ncurses +attr_set test: ncurses +attroff test: blue dots_curses echochar filter gdc ncurses tclock +attron test: blue bs dots_curses echochar filter gdc ncurses +attrset test: bs filter firework gdc hanoi insdelln ncurses picsmap rain tclock testaddch testcurs +baudrate test: ncurses +baudrate_sp test: sp_tinfo +beep test: blue bs cardfile chgat clip_printw demo_forms demo_menus demo_new_pair demo_panels dup_field edit_field firstlast hanoi inch_wide inchs ins_wide insdelln inserts knight move_field movewindow ncurses padview popup_msg rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas +beep_sp lib: ncurses +bkgd test: background cardfile demo_forms dup_field move_field ncurses padview savescreen tclock view +bkgdset test: background ncurses testaddch +bkgrnd test: ncurses +bkgrndset test: back_ground ncurses +boolcodes test: demo_termcap test_arrays progs: dump_entry +boolfnames test: demo_terminfo test_arrays progs: dump_entry +boolnames test: demo_terminfo test_arrays progs: dump_entry infocmp +border - +border_set - +box test: cardfile chgat clip_printw demo_forms demo_menus demo_panels ditto inch_wide inchs ins_wide insdelln inserts lrtest ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs +box_set test: ncurses +can_change_color test: color_content extended_color ncurses +can_change_color_sp test: extended_color +cbreak test: back_ground background blue bs cardfile chgat clip_printw color_content color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs ditto dup_field extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas +cbreak_sp test: sp_tinfo +chgat test: chgat +clear test: blue bs filter gdc ncurses padview testcurs xmas +clearok test: bs knight +clrtobot test: demo_menus move_field ncurses view +clrtoeol test: blue bs demo_altkeys filter foldkeys form_driver_w hanoi hashtest movewindow ncurses padview view +color_content test: color_content ncurses picsmap +color_content_sp - +color_set test: color_set dots_xcurses extended_color ncurses +copywin test: ncurses testcurs +cur_term test: demo_termcap demo_terminfo dots dots_mvcur filter list_keys lrtest sp_tinfo test_sgr test_tparm test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs tput tset +curs_set test: demo_new_pair echochar firework gdc hanoi lrtest ncurses newdemo picsmap rain savescreen tclock testcurs worm xmas +curs_set_sp test: sp_tinfo +curscr test: demo_panels knight lrtest ncurses popup_msg savescreen tclock +curses_trace test: demo_menus hashtest lrtest ncurses padview redraw test_sgr test_termattrs test_vid_puts test_vidputs testcurs view worm +curses_version test: ncurses progs: clear infocmp tabs tic toe tput tset +def_prog_mode test: bs ncurses +def_prog_mode_sp test: sp_tinfo +def_shell_mode - +def_shell_mode_sp test: sp_tinfo +define_key test: demo_altkeys demo_defkey foldkeys +define_key_sp test: sp_tinfo +del_curterm test: demo_terminfo sp_tinfo test_sgr test_tparm +del_curterm_sp lib: ncurses +delay_output test: newdemo +delay_output_sp test: sp_tinfo +delch - +deleteln test: insdelln +delscreen test: ditto dots_mvcur +delwin test: cardfile chgat clip_printw demo_forms demo_panels dup_field inch_wide inchs ins_wide insdelln inserts move_field ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view +derwin test: cardfile chgat clip_printw demo_forms demo_menus ditto inch_wide inchs ins_wide insdelln inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque +doupdate test: cardfile demo_menus demo_panels ditto ins_wide inserts knight movewindow ncurses padview popup_msg redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr +doupdate_sp lib: ncurses +dupwin test: popup_msg +echo test: bs hanoi ncurses test_get_wstr test_getstr testcurs testscanw +echo_sp lib: ncurses +echo_wchar test: ncurses +echochar test: echochar ncurses +endwin test: back_ground background blue bs cardfile chgat clip_printw color_content color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs ditto dots_curses dots_mvcur dots_xcurses dup_field echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas +endwin_sp lib: ncurses +erase test: cardfile demo_menus filter firework firstlast hanoi lrtest ncurses picsmap tclock test_opaque testcurs +erasechar test: ncurses +erasechar_sp test: sp_tinfo +erasewchar test: ncurses +exit_curses test: back_ground background blue bs cardfile chgat clip_printw color_content color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs demo_termcap demo_terminfo ditto dots dots_curses dots_mvcur dots_termcap dots_xcurses dup_field echochar extended_color filter firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight list_keys lrtest move_field movewindow ncurses newdemo padview pair_content picsmap railroad rain redraw savescreen sp_tinfo tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_arrays test_get_wstr test_getstr test_instr test_inwstr test_opaque test_setupterm test_sgr test_termattrs test_tparm test_vid_puts test_vidputs testaddch testcurs testscanw view worm xmas +exit_terminfo lib: ncurses +extended_color_content test: color_content extended_color +extended_color_content_sp test: extended_color +extended_pair_content test: extended_color pair_content +extended_pair_content_sp test: extended_color +extended_slk_color test: extended_color +extended_slk_color_sp test: extended_color +filter test: filter +filter_sp - +find_pair test: demo_new_pair +find_pair_sp - +flash test: cardfile filter lrtest movewindow ncurses tclock testcurs +flash_sp - +flushinp test: ncurses newdemo testcurs +flushinp_sp test: sp_tinfo +free_pair test: demo_new_pair +free_pair_sp - +get_escdelay - +get_escdelay_sp - +get_wch test: form_driver_w +get_wstr test: test_get_wstr +getattrs - +getbegx test: chgat clip_printw demo_menus demo_panels dump_window insdelln move_field movewindow ncurses newdemo redraw testcurs +getbegy test: chgat clip_printw demo_menus demo_panels dump_window insdelln move_field movewindow ncurses newdemo redraw testcurs +getbkgd test: ncurses +getbkgrnd test: ncurses +getcchar test: demo_new_pair ncurses savescreen view +getch test: back_ground background blue bs chgat color_content color_set demo_altkeys demo_new_pair demo_tabs extended_color filter firework firstlast foldkeys hanoi hashtest insdelln lrtest padview pair_content picsmap savescreen tclock test_opaque testaddch testcurs view xmas +getcurx test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels dump_window extended_color filter firstlast foldkeys insdelln move_field movewindow ncurses redraw savescreen test_get_wstr test_getstr test_opaque testcurs view +getcury test: bs chgat clip_printw demo_altkeys demo_defkey demo_panels dump_window extended_color filter firstlast foldkeys insdelln move_field movewindow ncurses popup_msg redraw savescreen test_opaque testcurs view +getmaxx test: chgat clip_printw demo_panels dump_window firstlast inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs +getmaxy test: chgat clip_printw demo_forms demo_panels dump_window firstlast inch_wide inchs insdelln movewindow ncurses newdemo popup_msg redraw test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs +getmouse test: bs demo_menus knight movewindow ncurses testcurs +getmouse_sp - +getn_wstr test: test_get_wstr +getnstr test: filter ncurses test_getstr +getparx test: movewindow +getpary test: movewindow +getstr test: test_getstr +getwin test: ncurses +getwin_sp - +halfdelay test: padview view +halfdelay_sp test: sp_tinfo +has_colors test: back_ground background bs cardfile chgat clip_printw color_content color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses dup_field echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight move_field ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs view worm xmas +has_colors_sp lib: ncurses +has_ic test: lrtest ncurses +has_ic_sp test: sp_tinfo +has_il test: ncurses +has_il_sp test: sp_tinfo +has_key - +has_key_sp test: sp_tinfo +has_mouse - +has_mouse_sp - +hline test: gdc ncurses +hline_set - +idcok test: test_opaque +idlok test: ncurses padview test_opaque testscanw view +immedok test: test_opaque +in_wch test: inch_wide +in_wchnstr test: inch_wide +in_wchstr test: inch_wide +inch test: inchs +inchnstr test: inchs +inchstr test: inchs +init_color test: color_content ncurses +init_color_sp - +init_extended_color test: color_content extended_color +init_extended_color_sp test: extended_color +init_extended_pair test: extended_color ncurses pair_content picsmap +init_extended_pair_sp test: extended_color +init_pair test: back_ground background blue bs cardfile chgat clip_printw color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses dup_field echochar filter firework gdc hanoi ins_wide insdelln inserts knight move_field ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas +init_pair_sp - +initscr test: back_ground background blue bs cardfile chgat clip_printw color_content color_set demo_defkey demo_forms demo_keyok demo_menus demo_panels demo_tabs dots_curses dots_xcurses dup_field echochar filter firework firstlast form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest move_field movewindow ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testaddch testcurs testscanw view worm xmas +innstr test: test_instr +innwstr test: test_inwstr +ins_nwstr test: ins_wide +ins_wch test: ins_wide +ins_wstr test: ins_wide +insch test: ins_wide inserts +insdelln test: insdelln +insertln test: insdelln +insnstr test: inserts +insstr test: inserts +instr test: test_instr +intrflush test: demo_forms dup_field move_field movewindow +intrflush_sp test: sp_tinfo +inwstr test: test_inwstr +is_cleared test: test_opaque +is_idcok test: test_opaque +is_idlok test: test_opaque +is_immedok test: test_opaque +is_keypad test: ncurses test_opaque +is_leaveok test: test_opaque +is_linetouched lib: form +is_nodelay test: test_opaque +is_notimeout test: test_opaque +is_pad test: test_opaque +is_scrollok test: ncurses test_opaque +is_subwin test: test_opaque +is_syncok test: test_opaque +is_term_resized - +is_term_resized_sp - +is_wintouched lib: ncurses +isendwin - +isendwin_sp - +key_defined test: demo_defkey foldkeys +key_defined_sp test: sp_tinfo +key_name test: key_names ncurses +keybound test: demo_altkeys demo_defkey +keybound_sp test: sp_tinfo +keyname test: demo_altkeys demo_defkey demo_keyok demo_menus dup_field edit_field foldkeys keynames move_field movewindow ncurses padview redraw test_getstr testcurs view progs: tic +keyname_sp test: sp_tinfo +keyok test: demo_keyok foldkeys +keyok_sp test: sp_tinfo +keypad test: bs cardfile chgat clip_printw demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels ditto dup_field filter firework foldkeys form_driver_w hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest move_field movewindow ncurses padview popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view +killchar test: ncurses +killchar_sp test: sp_tinfo +killwchar test: ncurses +leaveok test: hanoi test_opaque +longname test: ncurses testcurs progs: tput +longname_sp test: sp_tinfo +mcprint - +mcprint_sp - +meta test: key_names keynames ncurses +mouse_trafo lib: form +mouseinterval - +mouseinterval_sp - +mousemask test: bs demo_forms demo_menus knight movewindow ncurses testcurs +mousemask_sp - +move test: blue bs cardfile chgat demo_altkeys demo_menus demo_new_pair demo_tabs dots_curses dots_xcurses echochar filter foldkeys gdc hanoi hashtest inch_wide inchs ins_wide inserts knight lrtest move_field movewindow ncurses picsmap savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testscanw view xmas +mvadd_wch test: ncurses test_add_wchstr test_addwstr +mvadd_wchnstr test: test_add_wchstr +mvadd_wchstr test: test_add_wchstr +mvaddch test: bs gdc hanoi lrtest ncurses rain tclock test_add_wchstr test_addchstr test_addstr test_addwstr xmas +mvaddchnstr test: gdc test_addchstr +mvaddchstr test: test_addchstr +mvaddnstr test: test_addstr +mvaddnwstr test: test_addwstr +mvaddstr test: bs demo_forms gdc hanoi knight ncurses rain tclock test_addstr testcurs xmas +mvaddwstr test: test_addwstr +mvchgat test: chgat +mvcur test: dots_mvcur redraw +mvcur_sp - +mvdelch - +mvderwin test: movewindow +mvget_wch - +mvget_wstr test: test_get_wstr +mvgetch - +mvgetn_wstr test: test_get_wstr +mvgetnstr test: test_getstr +mvgetstr test: test_getstr +mvhline test: ncurses +mvhline_set test: ncurses +mvin_wch test: inch_wide +mvin_wchnstr test: inch_wide +mvin_wchstr test: inch_wide +mvinch test: inchs +mvinchnstr test: gdc inchs +mvinchstr test: inchs +mvinnstr test: test_instr +mvinnwstr test: test_inwstr +mvins_nwstr test: ins_wide +mvins_wch test: ins_wide +mvins_wstr test: ins_wide +mvinsch test: ins_wide inserts +mvinsnstr test: inserts +mvinsstr test: inserts +mvinstr test: test_instr +mvinwstr test: test_inwstr +mvprintw test: back_ground background bs firework form_driver_w hanoi move_field ncurses padview savescreen tclock view +mvscanw - +mvvline test: ncurses +mvvline_set test: ncurses +mvwadd_wch test: test_add_wchstr test_addwstr +mvwadd_wchnstr test: test_add_wchstr +mvwadd_wchstr test: inch_wide test_add_wchstr +mvwaddch test: movewindow ncurses newdemo test_add_wchstr test_addchstr test_addstr test_addwstr testcurs xmas +mvwaddchnstr test: test_addchstr +mvwaddchstr test: inchs test_addchstr +mvwaddnstr test: newdemo test_addstr testcurs +mvwaddnwstr test: test_addwstr +mvwaddstr test: ditto firstlast ins_wide inserts knight ncurses newdemo test_addstr test_addwstr test_instr testcurs xmas +mvwaddwstr test: test_addwstr test_inwstr +mvwchgat test: chgat +mvwdelch test: ncurses +mvwget_wch - +mvwget_wstr test: test_get_wstr +mvwgetch test: inch_wide inchs test_get_wstr test_getstr test_instr test_inwstr test_opaque +mvwgetn_wstr test: test_get_wstr +mvwgetnstr test: test_getstr +mvwgetstr test: test_getstr +mvwhline test: movewindow ncurses +mvwhline_set - +mvwin test: cardfile demo_menus movewindow ncurses testcurs xmas +mvwin_wch test: inch_wide +mvwin_wchnstr test: inch_wide +mvwin_wchstr test: inch_wide +mvwinch test: dump_window inchs newdemo testcurs +mvwinchnstr test: inchs +mvwinchstr test: inchs +mvwinnstr test: test_instr testcurs +mvwinnwstr test: test_inwstr +mvwins_nwstr test: ins_wide +mvwins_wch test: ins_wide +mvwins_wstr test: ins_wide +mvwinsch test: ins_wide inserts +mvwinsnstr test: inserts +mvwinsstr test: inserts testcurs +mvwinstr test: test_instr +mvwinwstr test: test_inwstr +mvwprintw test: demo_menus demo_panels inch_wide inchs ncurses test_instr test_inwstr testcurs +mvwscanw test: testcurs +mvwvline test: ins_wide inserts movewindow ncurses test_add_wchstr test_addchstr test_addstr test_addwstr +mvwvline_set - +napms test: demo_panels ditto dots dots_curses dots_mvcur dots_xcurses echochar extended_color firework firstlast gdc hanoi lrtest ncurses padview picsmap railroad rain tclock test_opaque testcurs view worm xmas progs: tset +napms_sp test: sp_tinfo +new_prescr test: sp_tinfo +newpad test: ncurses padview popup_msg testcurs +newpad_sp lib: ncurses +newscr lib: ncurses +newterm test: demo_altkeys demo_new_pair ditto dots_mvcur extended_color filter foldkeys gdc key_names keynames redraw test_setupterm test_termattrs +newterm_sp - +newwin test: cardfile chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels ditto firstlast inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view xmas +newwin_sp lib: ncurses +nl test: demo_forms dup_field move_field ncurses rain testcurs +nl_sp lib: ncurses +nocbreak test: testcurs +nocbreak_sp test: sp_tinfo +nodelay test: demo_new_pair ditto extended_color firework gdc lrtest ncurses newdemo padview rain tclock test_opaque view worm xmas +noecho test: back_ground background bs cardfile chgat clip_printw color_content color_set demo_altkeys demo_defkey demo_forms demo_keyok demo_menus demo_new_pair demo_panels demo_tabs ditto dup_field extended_color firework firstlast foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts knight lrtest move_field movewindow ncurses padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm xmas +noecho_sp lib: ncurses +nofilter - +nofilter_sp - +nonl test: bs demo_forms dup_field hashtest move_field movewindow ncurses padview view worm xmas +nonl_sp lib: ncurses +noqiflush - +noqiflush_sp test: sp_tinfo +noraw test: demo_forms demo_menus dup_field move_field ncurses testcurs +noraw_sp test: sp_tinfo +notimeout test: ncurses test_opaque +numcodes test: demo_termcap test_arrays progs: dump_entry +numfnames test: demo_terminfo test_arrays progs: dump_entry +numnames test: demo_terminfo test_arrays progs: dump_entry infocmp +ospeed test: demo_termcap progs: tset +overlay test: ncurses testcurs xmas +overwrite test: ncurses savescreen +pair_content test: back_ground background color_set pair_content +pair_content_sp lib: ncurses +pecho_wchar - +pechochar - +pnoutrefresh test: ncurses padview popup_msg +prefresh test: testcurs +printw test: back_ground background blue bs color_content color_set demo_altkeys demo_defkey demo_keyok demo_tabs extended_color filter foldkeys ncurses pair_content savescreen testcurs testscanw view +putp test: filter test_sgr progs: tput +putp_sp test: sp_tinfo +putwin test: ncurses +qiflush - +qiflush_sp test: sp_tinfo +raw test: demo_forms dup_field move_field ncurses redraw testcurs +raw_sp test: sp_tinfo +redrawwin test: padview redraw view +refresh test: blue bs color_content demo_defkey demo_forms demo_keyok demo_menus demo_panels demo_tabs dots_curses dots_mvcur dots_xcurses dup_field echochar filter firstlast form_driver_w gdc hanoi hashtest lrtest move_field movewindow ncurses pair_content picsmap savescreen tclock testcurs view xmas +reset_color_pairs test: picsmap +reset_color_pairs_sp - +reset_prog_mode test: filter ncurses +reset_prog_mode_sp test: sp_tinfo +reset_shell_mode test: bs filter savescreen test_setupterm +reset_shell_mode_sp test: sp_tinfo +resetty - +resetty_sp test: sp_tinfo +resize_term - +resize_term_sp - +resizeterm - +resizeterm_sp lib: ncurses +restartterm test: test_setupterm +restartterm_sp - +ripoffline test: demo_menus ncurses +ripoffline_sp - +savetty - +savetty_sp test: sp_tinfo +scanw test: testcurs testscanw +scr_dump test: savescreen +scr_init test: savescreen +scr_init_sp - +scr_restore test: savescreen +scr_restore_sp - +scr_set test: savescreen +scr_set_sp - +scrl test: view +scroll test: testcurs +scrollok test: clip_printw color_content demo_altkeys demo_defkey demo_keyok demo_new_pair demo_panels ditto foldkeys hashtest knight ncurses pair_content picsmap redraw test_opaque testcurs testscanw view +set_curterm test: list_keys sp_tinfo +set_curterm_sp test: sp_tinfo +set_escdelay test: test_opaque +set_escdelay_sp lib: ncurses +set_tabsize test: demo_tabs test_opaque +set_tabsize_sp test: sp_tinfo +set_term lib: ncurses +setcchar test: back_ground demo_new_pair demo_panels ins_wide ncurses picsmap savescreen test_add_wchstr test_addwstr +setscrreg test: view +setupterm test: demo_terminfo dots list_keys sp_tinfo test_setupterm test_sgr test_termattrs test_tparm test_vid_puts test_vidputs progs: clear tabs tput tset +slk_attr - +slk_attr_off - +slk_attr_on - +slk_attr_set test: ncurses +slk_attr_set_sp - +slk_attr_sp - +slk_attroff lib: ncurses +slk_attroff_sp - +slk_attron lib: ncurses +slk_attron_sp - +slk_attrset test: extended_color ncurses +slk_attrset_sp - +slk_clear test: ncurses +slk_clear_sp - +slk_color test: ncurses +slk_color_sp - +slk_init test: extended_color ncurses +slk_init_sp - +slk_label test: ncurses +slk_label_sp - +slk_noutrefresh test: extended_color ncurses +slk_noutrefresh_sp - +slk_refresh test: ncurses +slk_refresh_sp lib: ncurses +slk_restore test: ncurses +slk_restore_sp lib: ncurses +slk_set test: extended_color ncurses +slk_set_sp - +slk_touch test: extended_color ncurses +slk_touch_sp lib: ncurses +slk_wset test: ncurses +standend test: blue gdc ncurses +standout test: blue ncurses +start_color test: back_ground background blue bs cardfile chgat clip_printw color_content color_set demo_forms demo_menus demo_new_pair demo_panels dots_curses dots_xcurses dup_field echochar extended_color filter firework gdc hanoi ins_wide insdelln inserts knight move_field ncurses newdemo padview pair_content picsmap rain savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testaddch testcurs view worm xmas +start_color_sp - +stdscr test: back_ground background bs chgat clip_printw color_content demo_altkeys demo_forms demo_menus demo_new_pair demo_panels ditto dup_field edit_field extended_color filter firework foldkeys form_driver_w gdc hanoi hashtest inch_wide inchs ins_wide insdelln inserts key_names keynames knight lrtest move_field movewindow ncurses padview pair_content picsmap rain redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs testscanw view worm xmas +strcodes test: demo_termcap test_arrays progs: dump_entry +strfnames test: demo_terminfo list_keys test_arrays progs: dump_entry +strnames test: demo_terminfo foldkeys list_keys test_arrays test_tparm progs: dump_entry infocmp tic +subpad test: testcurs +subwin test: movewindow ncurses newdemo testcurs +syncok test: test_opaque +term_attrs test: ncurses test_termattrs +term_attrs_sp - +termattrs test: ncurses test_termattrs testcurs +termattrs_sp lib: ncurses +termname test: list_keys ncurses testcurs +termname_sp test: sp_tinfo +tgetent test: demo_termcap dots_termcap railroad +tgetent_sp test: sp_tinfo +tgetflag test: demo_termcap +tgetflag_sp test: sp_tinfo +tgetnum test: demo_termcap dots_termcap railroad +tgetnum_sp test: sp_tinfo +tgetstr test: demo_termcap dots_termcap railroad +tgetstr_sp test: sp_tinfo +tgoto test: dots_termcap railroad progs: tic +tigetflag test: demo_terminfo savescreen progs: tic tput +tigetflag_sp test: sp_tinfo +tigetnum test: demo_tabs demo_terminfo dots dots_mvcur ncurses savescreen progs: tput +tigetnum_sp test: sp_tinfo +tigetstr test: blue demo_defkey demo_new_pair demo_terminfo foldkeys list_keys savescreen test_sgr test_tparm testcurs progs: clear_cmd tic tput +tigetstr_sp test: sp_tinfo +timeout test: filter rain savescreen +tiparm - +touchline test: chgat clip_printw insdelln +touchwin test: chgat clip_printw demo_menus filter firstlast inch_wide inchs ins_wide insdelln inserts movewindow ncurses popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque xmas +tparm test: dots dots_mvcur test_sgr test_tparm progs: tic tput +tputs test: dots dots_mvcur dots_termcap railroad test_tparm test_vid_puts test_vidputs progs: clear_cmd reset_cmd tabs +tputs_sp test: sp_tinfo +trace - +ttytype test: demo_terminfo test_sgr +typeahead test: testcurs +typeahead_sp test: sp_tinfo +unctrl test: ncurses redraw test_add_wchstr test_addchstr testcurs +unctrl_sp test: sp_tinfo +unget_wch - +unget_wch_sp - +ungetch test: bs knight +ungetch_sp lib: ncurses +ungetmouse lib: menu +ungetmouse_sp - +untouchwin lib: form +use_default_colors test: back_ground background dots_curses dots_xcurses filter firework gdc hanoi knight ncurses picsmap rain tclock worm xmas +use_default_colors_sp - +use_env test: dots dots_curses dots_mvcur dots_xcurses ncurses progs: clear tput +use_env_sp test: sp_tinfo +use_extended_names test: demo_termcap demo_terminfo list_keys progs: infocmp tic +use_legacy_coding - +use_legacy_coding_sp - +use_screen test: ditto +use_tioctl test: ncurses progs: clear tput +use_tioctl_sp test: sp_tinfo +use_window test: rain worm +vid_attr test: test_vid_puts +vid_attr_sp - +vid_puts test: test_vid_puts +vid_puts_sp lib: ncurses +vidattr test: test_vidputs +vidattr_sp - +vidputs test: test_vidputs +vidputs_sp - +vline test: gdc ncurses +vline_set - +vw_printw test: clip_printw movewindow +vw_scanw - +vwprintw - +vwscanw - +wadd_wch test: inch_wide ncurses test_add_wchstr test_addwstr +wadd_wchnstr test: savescreen test_add_wchstr +wadd_wchstr test: test_add_wchstr +waddch test: demo_forms demo_panels ditto firstlast inch_wide inchs knight ncurses padview popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque view worm +waddchnstr test: test_addchstr +waddchstr test: test_addchstr +waddnstr test: demo_forms test_addstr +waddnwstr test: ncurses test_addwstr +waddstr test: chgat clip_printw demo_forms demo_panels firstlast ins_wide insdelln knight ncurses popup_msg redraw test_add_wchstr test_addstr test_addwstr testcurs +waddwstr test: ins_wide ncurses padview test_add_wchstr test_addwstr test_get_wstr view +wattr_get test: ncurses +wattr_off lib: ncurses +wattr_on lib: ncurses +wattr_set test: ncurses +wattroff test: demo_forms ncurses testcurs xmas +wattron test: testcurs xmas +wattrset test: clip_printw demo_forms insdelln ncurses newdemo padview test_get_wstr test_getstr testcurs xmas +wbkgd test: cardfile demo_forms demo_menus ncurses newdemo padview testcurs +wbkgdset test: demo_panels ins_wide inserts ncurses test_add_wchstr test_addchstr test_addstr test_addwstr +wbkgrnd lib: ncurses +wbkgrndset lib: ncurses +wborder test: ncurses +wborder_set test: ncurses +wchgat test: chgat test_get_wstr test_getstr view +wclear test: ncurses test_opaque testcurs +wclrtobot test: firstlast inch_wide inchs ncurses test_instr test_inwstr testcurs +wclrtoeol test: chgat clip_printw demo_defkey demo_keyok demo_menus demo_panels firstlast inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_instr test_inwstr testcurs +wcolor_set lib: ncurses +wcursyncup lib: form +wdelch test: ncurses testcurs +wdeleteln test: insdelln testcurs +wecho_wchar lib: ncurses +wechochar lib: ncurses +wenclose test: ncurses +werase test: cardfile demo_forms demo_menus demo_panels dup_field firstlast knight move_field ncurses newdemo popup_msg test_get_wstr test_getstr test_opaque testcurs view xmas +wget_wch test: ins_wide ncurses test_add_wchstr test_addwstr +wget_wstr test: test_get_wstr +wgetbkgrnd lib: ncurses +wgetch test: cardfile chgat clip_printw demo_defkey demo_keyok demo_menus demo_panels ditto dump_window dup_field edit_field gdc insdelln inserts knight move_field movewindow ncurses newdemo popup_msg rain redraw test_addchstr test_addstr test_opaque testcurs worm +wgetdelay test: test_opaque +wgetn_wstr test: ncurses test_get_wstr +wgetnstr test: ncurses test_getstr +wgetparent test: test_opaque +wgetscrreg test: test_opaque +wgetstr test: test_getstr +whline test: testcurs +whline_set lib: ncurses +win_wch test: inch_wide savescreen +win_wchnstr test: inch_wide view +win_wchstr test: inch_wide +winch test: inchs knight testcurs +winchnstr test: inchs +winchstr test: inchs +winnstr test: demo_altkeys demo_defkey foldkeys test_instr +winnwstr test: test_inwstr +wins_nwstr test: ins_wide +wins_wch test: ins_wide +wins_wstr test: ins_wide +winsch test: ins_wide inserts testcurs +winsdelln test: insdelln +winsertln test: insdelln testcurs +winsnstr test: inserts +winsstr test: inserts +winstr test: test_instr +winwstr test: test_inwstr +wmouse_trafo test: ncurses +wmove test: chgat clip_printw demo_altkeys demo_defkey demo_keyok demo_menus demo_panels dump_window extended_color firstlast foldkeys inch_wide inchs ins_wide insdelln inserts knight movewindow ncurses newdemo padview picsmap redraw savescreen test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs view worm +wnoutrefresh test: demo_menus ditto inch_wide inchs ins_wide inserts knight movewindow ncurses padview popup_msg redraw test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque +wprintw test: chgat clip_printw demo_defkey demo_forms demo_keyok demo_menus demo_panels inch_wide inchs ins_wide insdelln inserts knight ncurses test_add_wchstr test_addchstr test_addstr test_addwstr test_get_wstr test_getstr test_instr test_inwstr test_opaque testcurs +wredrawln test: redraw +wrefresh test: chgat clip_printw demo_forms demo_keyok demo_menus demo_panels dup_field firstlast ins_wide insdelln inserts knight lrtest move_field movewindow ncurses newdemo popup_msg redraw savescreen tclock test_add_wchstr test_addchstr test_addstr test_addwstr testcurs worm xmas +wresize test: cardfile demo_menus ncurses +wscanw test: testcurs +wscrl test: ncurses testcurs +wsetscrreg test: ncurses testcurs +wstandend test: ncurses test_opaque xmas +wstandout test: ncurses test_opaque xmas +wsyncdown test: movewindow +wsyncup lib: form +wtimeout test: ncurses +wtouchln lib: ncurses +wunctrl lib: ncurses +wunctrl_sp - +wvline test: testcurs +wvline_set lib: ncurses + +libpanel: +-------- +bottom_panel test: demo_panels ncurses +ceiling_panel - +del_panel test: demo_panels ncurses +ground_panel - +hide_panel test: demo_panels ncurses +move_panel test: demo_panels ncurses +new_panel test: cardfile demo_panels ncurses +panel_above test: demo_panels +panel_below test: demo_panels +panel_hidden test: demo_panels +panel_userptr test: demo_panels ncurses +panel_window test: cardfile demo_panels ncurses +replace_panel test: demo_panels +set_panel_userptr test: demo_panels ncurses +show_panel test: demo_panels ncurses +top_panel test: cardfile demo_panels ncurses +update_panels test: cardfile demo_panels ncurses +update_panels_sp - + +-- vile:txtmode diff --git a/deps/ncurses-6.3/test/aclocal.m4 b/deps/ncurses-6.3/test/aclocal.m4 new file mode 100644 index 0000000..6836f43 --- /dev/null +++ b/deps/ncurses-6.3/test/aclocal.m4 @@ -0,0 +1,4838 @@ +dnl*************************************************************************** +dnl Copyright 2018-2020,2021 Thomas E. Dickey * +dnl Copyright 2003-2017,2018 Free Software Foundation, Inc. * +dnl * +dnl Permission is hereby granted, free of charge, to any person obtaining a * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl $Id: aclocal.m4,v 1.202 2021/10/11 00:18:09 tom Exp $ +dnl +dnl Author: Thomas E. Dickey +dnl +dnl Macros used in NCURSES test programs auto-configuration script. +dnl +dnl These macros are maintained separately from NCURSES. The copyright on +dnl this file applies to the aggregation of macros and does not affect use of +dnl these macros in other applications. +dnl +dnl See these pages for additional information: +dnl https://invisible-island.net/autoconf/ +dnl https://invisible-island.net/autoconf/my-autoconf.html +dnl +dnl --------------------------------------------------------------------------- +dnl --------------------------------------------------------------------------- +dnl AM_LANGINFO_CODESET version: 6 updated: 2021/01/01 16:53:59 +dnl ------------------- +dnl Inserted as requested by gettext 0.10.40 +dnl File from /usr/share/aclocal +dnl codeset.m4 +dnl ==================== +dnl serial AM1 +dnl +dnl From Bruno Haible. +AC_DEFUN([AM_LANGINFO_CODESET], +[ +AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, + [AC_TRY_LINK([#include <langinfo.h>], + [char* cs = nl_langinfo(CODESET); (void)cs], + am_cv_langinfo_codeset=yes, + am_cv_langinfo_codeset=no) + ]) + if test "$am_cv_langinfo_codeset" = yes; then + AC_DEFINE(HAVE_LANGINFO_CODESET, 1, + [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) + fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_CHECK version: 5 updated: 2014/06/04 19:11:49 +dnl ------------------ +dnl Conditionally generate script according to whether we're using a given autoconf. +dnl +dnl $1 = version to compare against +dnl $2 = code to use if AC_ACVERSION is at least as high as $1. +dnl $3 = code to use if AC_ACVERSION is older than $1. +define([CF_ACVERSION_CHECK], +[ +ifdef([AC_ACVERSION], ,[ifdef([AC_AUTOCONF_VERSION],[m4_copy([AC_AUTOCONF_VERSION],[AC_ACVERSION])],[m4_copy([m4_PACKAGE_VERSION],[AC_ACVERSION])])])dnl +ifdef([m4_version_compare], +[m4_if(m4_version_compare(m4_defn([AC_ACVERSION]), [$1]), -1, [$3], [$2])], +[CF_ACVERSION_COMPARE( +AC_PREREQ_CANON(AC_PREREQ_SPLIT([$1])), +AC_PREREQ_CANON(AC_PREREQ_SPLIT(AC_ACVERSION)), AC_ACVERSION, [$2], [$3])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ACVERSION_COMPARE version: 3 updated: 2012/10/03 18:39:53 +dnl -------------------- +dnl CF_ACVERSION_COMPARE(MAJOR1, MINOR1, TERNARY1, +dnl MAJOR2, MINOR2, TERNARY2, +dnl PRINTABLE2, not FOUND, FOUND) +define([CF_ACVERSION_COMPARE], +[ifelse(builtin([eval], [$2 < $5]), 1, +[ifelse([$8], , ,[$8])], +[ifelse([$9], , ,[$9])])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_CFLAGS version: 15 updated: 2020/12/31 10:54:15 +dnl ------------- +dnl Copy non-preprocessor flags to $CFLAGS, preprocessor flags to $CPPFLAGS +dnl $1 = flags to add +dnl $2 = if given makes this macro verbose. +dnl +dnl Put any preprocessor definitions that use quoted strings in $EXTRA_CPPFLAGS, +dnl to simplify use of $CPPFLAGS in compiler checks, etc., that are easily +dnl confused by the quotes (which require backslashes to keep them usable). +AC_DEFUN([CF_ADD_CFLAGS], +[ +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $1 +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 + CF_APPEND_TEXT(cf_new_extra_cppflags,$cf_add_cflags) + continue + elif test "${cf_tst_cflags}" = "\"'" ; then + CF_APPEND_TEXT(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/=.*//'` + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,$cf_tst_cppflags) + ;; + esac + CF_APPEND_TEXT(cf_new_cppflags,$cf_add_cflags) + ;; + esac + ;; + (*) + CF_APPEND_TEXT(cf_new_cflags,$cf_add_cflags) + ;; + esac + ;; +(yes) + CF_APPEND_TEXT(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 + ifelse([$2],,,[CF_VERBOSE(add to \$CFLAGS $cf_new_cflags)]) + CF_APPEND_TEXT(CFLAGS,$cf_new_cflags) +fi + +if test -n "$cf_new_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$CPPFLAGS $cf_new_cppflags)]) + CF_APPEND_TEXT(CPPFLAGS,$cf_new_cppflags) +fi + +if test -n "$cf_new_extra_cppflags" ; then + ifelse([$2],,,[CF_VERBOSE(add to \$EXTRA_CPPFLAGS $cf_new_extra_cppflags)]) + CF_APPEND_TEXT(EXTRA_CPPFLAGS,$cf_new_extra_cppflags) +fi + +AC_SUBST(EXTRA_CPPFLAGS) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_INCDIR version: 17 updated: 2021/09/04 06:35:04 +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, +dnl but old versions (and some misinstalled ones) need that. To make things +dnl worse, gcc 3.x may give error messages if -I/usr/local/include is added to +dnl the include-path). +AC_DEFUN([CF_ADD_INCDIR], +[ +if test -n "$1" ; then + for cf_add_incdir in $1 + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + CF_APPEND_TEXT(CPPFLAGS,-I$cf_add_incdir) + AC_TRY_COMPILE([#include <stdio.h>], + [printf("Hello")], + [], + [cf_have_incdir=yes]) + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + CF_VERBOSE(adding $cf_add_incdir to include-path) + ifelse([$2],,CPPFLAGS,[$2])="$ifelse([$2],,CPPFLAGS,[$2]) -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB version: 2 updated: 2010/06/02 05:03:05 +dnl ---------- +dnl Add a library, used to enforce consistency. +dnl +dnl $1 = library to add, without the "-l" +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIB],[CF_ADD_LIBS(-l$1,ifelse($2,,LIBS,[$2]))])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBDIR version: 11 updated: 2020/12/31 20:19:42 +dnl ------------- +dnl Adds to the library-path +dnl +dnl Some machines have trouble with multiple -L options. +dnl +dnl $1 is the (list of) directory(s) to add +dnl $2 is the optional name of the variable to update (default LDFLAGS) +dnl +AC_DEFUN([CF_ADD_LIBDIR], +[ +if test -n "$1" ; then + for cf_add_libdir in $1 + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + CF_VERBOSE(adding $cf_add_libdir to library-path) + ifelse([$2],,LDFLAGS,[$2])="-L$cf_add_libdir $ifelse([$2],,LDFLAGS,[$2])" + fi + fi + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIBS version: 3 updated: 2019/11/02 16:47:33 +dnl ----------- +dnl Add one or more libraries, used to enforce consistency. Libraries are +dnl prepended to an existing list, since their dependencies are assumed to +dnl already exist in the list. +dnl +dnl $1 = libraries to add, with the "-l", etc. +dnl $2 = variable to update (default $LIBS) +AC_DEFUN([CF_ADD_LIBS],[ +cf_add_libs="[$]ifelse($2,,LIBS,[$2])" +# reverse order +cf_add_0lib= +for cf_add_1lib in $1; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +ifelse($2,,LIBS,[$2])="$cf_add_libs" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_LIB_AFTER version: 3 updated: 2013/07/09 21:27:22 +dnl ---------------- +dnl Add a given library after another, e.g., following the one it satisfies a +dnl dependency for. +dnl +dnl $1 = the first library +dnl $2 = its dependency +AC_DEFUN([CF_ADD_LIB_AFTER],[ +CF_VERBOSE(...before $LIBS) +LIBS=`echo "$LIBS" | sed -e "s/[[ ]][[ ]]*/ /g" -e "s%$1 %$1 $2 %" -e 's% % %g'` +CF_VERBOSE(...after $LIBS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ADD_SUBDIR_PATH version: 5 updated: 2020/12/31 20:19:42 +dnl ------------------ +dnl Append to a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +dnl $4 = the directory under which we will test for subdirectories +dnl $5 = a directory that we do not want $4 to match +AC_DEFUN([CF_ADD_SUBDIR_PATH], +[ +test "x$4" != "x$5" && \ +test -d "$4" && \ +ifelse([$5],NONE,,[{ test -z "$5" || test "x$5" = xNONE || test "x$4" != "x$5"; } &&]) { + test -n "$verbose" && echo " ... testing for $3-directories under $4" + test -d "$4/$3" && $1="[$]$1 $4/$3" + test -d "$4/$3/$2" && $1="[$]$1 $4/$3/$2" + test -d "$4/$3/$2/$3" && $1="[$]$1 $4/$3/$2/$3" + test -d "$4/$2/$3" && $1="[$]$1 $4/$2/$3" + test -d "$4/$2/$3/$2" && $1="[$]$1 $4/$2/$3/$2" +} +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_APPEND_CFLAGS version: 3 updated: 2021/09/05 17:25:40 +dnl ---------------- +dnl Use CF_ADD_CFLAGS after first checking for potential redefinitions. +dnl $1 = flags to add +dnl $2 = if given makes this macro verbose. +define([CF_APPEND_CFLAGS], +[ +for cf_add_cflags in $1 +do + case "x$cf_add_cflags" in + (x-[[DU]]*) + CF_REMOVE_CFLAGS($cf_add_cflags,CFLAGS,[$2]) + CF_REMOVE_CFLAGS($cf_add_cflags,CPPFLAGS,[$2]) + ;; + esac + CF_ADD_CFLAGS([$cf_add_cflags],[$2]) +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_APPEND_TEXT version: 1 updated: 2017/02/25 18:58:55 +dnl -------------- +dnl use this macro for appending text without introducing an extra blank at +dnl the beginning +define([CF_APPEND_TEXT], +[ + test -n "[$]$1" && $1="[$]$1 " + $1="[$]{$1}$2" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_DISABLE version: 3 updated: 1999/03/30 17:24:31 +dnl -------------- +dnl Allow user to disable a normally-on option. +AC_DEFUN([CF_ARG_DISABLE], +[CF_ARG_OPTION($1,[$2],[$3],[$4],yes)])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ARG_ENABLE version: 3 updated: 1999/03/30 17:24:31 +dnl ------------- +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 ------------- +dnl Restricted form of AC_ARG_ENABLE that ensures user doesn't give bogus +dnl values. +dnl +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 $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) + if test "$enableval" != "$5" ; then +ifelse([$3],,[ :]dnl +,[ $3]) ifelse([$4],,,[ + else + $4]) + fi],[enableval=$5 ifelse([$4],,,[ + $4 +])dnl +])])dnl +dnl --------------------------------------------------------------------------- +dnl CF_C11_NORETURN version: 3 updated: 2021/03/28 11:36:23 +dnl --------------- +AC_DEFUN([CF_C11_NORETURN], +[ +AC_MSG_CHECKING(if you want to use C11 _Noreturn feature) +CF_ARG_ENABLE(stdnoreturn, + [ --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics], + [enable_stdnoreturn=yes], + [enable_stdnoreturn=no]) +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([ +#include <stdio.h> +#include <stdlib.h> +#include <stdnoreturn.h> +static _Noreturn void giveup(void) { exit(0); } + ], + [if (feof(stdin)) giveup()], + cf_cv_c11_noreturn=yes, + cf_cv_c11_noreturn=no) + ]) +else + cf_cv_c11_noreturn=no, +fi + +if test "$cf_cv_c11_noreturn" = yes; then + AC_DEFINE(HAVE_STDNORETURN_H, 1,[Define if <stdnoreturn.h> header is available and working]) + AC_DEFINE_UNQUOTED(STDC_NORETURN,_Noreturn,[Define if C11 _Noreturn keyword is supported]) + HAVE_STDNORETURN_H=1 +else + HAVE_STDNORETURN_H=0 +fi + +AC_SUBST(HAVE_STDNORETURN_H) +AC_SUBST(STDC_NORETURN) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CC_ENV_FLAGS version: 10 updated: 2020/12/31 18:40:20 +dnl --------------- +dnl Check for user's environment-breakage by stuffing CFLAGS/CPPFLAGS content +dnl into CC. This will not help with broken scripts that wrap the compiler +dnl with options, but eliminates a more common category of user confusion. +dnl +dnl In particular, it addresses the problem of being able to run the C +dnl preprocessor in a consistent manner. +dnl +dnl Caveat: this also disallows blanks in the pathname for the compiler, but +dnl the nuisance of having inconsistent settings for compiler and preprocessor +dnl outweighs that limitation. +AC_DEFUN([CF_CC_ENV_FLAGS], +[ +# This should have been defined by AC_PROG_CC +: "${CC:=cc}" + +AC_MSG_CHECKING(\$CFLAGS variable) +case "x$CFLAGS" in +(*-[[IUD]]*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment uses the CFLAGS variable to hold CPPFLAGS options) + cf_flags="$CFLAGS" + CFLAGS= + for cf_arg in $cf_flags + do + CF_ADD_CFLAGS($cf_arg) + done + ;; +(*) + AC_MSG_RESULT(ok) + ;; +esac + +AC_MSG_CHECKING(\$CC variable) +case "$CC" in +(*[[\ \ ]]-*) + AC_MSG_RESULT(broken) + AC_MSG_WARN(your environment uses the CC variable to hold CFLAGS/CPPFLAGS options) + # humor him... + cf_prog=`echo "$CC" | sed -e 's/ / /g' -e 's/[[ ]]* / /g' -e 's/[[ ]]*[[ ]]-[[^ ]].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", [substr]([$]0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[[IUDfgOW]]*) + CF_ADD_CFLAGS($cf_arg) + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + CF_VERBOSE(resulting CC: '$CC') + CF_VERBOSE(resulting CFLAGS: '$CFLAGS') + CF_VERBOSE(resulting CPPFLAGS: '$CPPFLAGS') + ;; +(*) + AC_MSG_RESULT(ok) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CACHE version: 13 updated: 2020/12/31 10:54:15 +dnl -------------- +dnl Check if we're accidentally using a cache from a different machine. +dnl Derive the system name, as a check for reusing the autoconf cache. +dnl +dnl If we've packaged config.guess and config.sub, run that (since it does a +dnl better job than uname). Normally we'll use AC_CANONICAL_HOST, but allow +dnl an extra parameter that we may override, e.g., for AC_CANONICAL_SYSTEM +dnl which is useful in cross-compiles. +dnl +dnl Note: we would use $ac_config_sub, but that is one of the places where +dnl autoconf 2.5x broke compatibility with autoconf 2.13 +AC_DEFUN([CF_CHECK_CACHE], +[ +if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then + ifelse([$1],,[AC_CANONICAL_HOST],[$1]) + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && AC_DEFINE_UNQUOTED(SYSTEM_NAME,"$system_name",[Define to the system name.]) +AC_CACHE_VAL(cf_cv_system_name,[cf_cv_system_name="$system_name"]) + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && AC_MSG_RESULT(Configuring for $cf_cv_system_name) + +if test ".$system_name" != ".$cf_cv_system_name" ; then + AC_MSG_RESULT(Cached system name ($system_name) does not agree with actual ($cf_cv_system_name)) + AC_MSG_ERROR("Please remove config.cache and try again.") +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CFLAGS version: 4 updated: 2021/01/02 19:22:58 +dnl --------------- +dnl Conditionally add to $CFLAGS and $CPPFLAGS values which are derived from +dnl a build-configuration such as imake. These have the pitfall that they +dnl often contain compiler-specific options which we cannot use, mixed with +dnl preprocessor options that we usually can. +AC_DEFUN([CF_CHECK_CFLAGS], +[ +CF_VERBOSE(checking additions to CFLAGS) +cf_check_cflags="$CFLAGS" +cf_check_cppflags="$CPPFLAGS" +CF_ADD_CFLAGS($1,yes) +if test "x$cf_check_cflags" != "x$CFLAGS" ; then +AC_TRY_LINK([#include <stdio.h>],[printf("Hello world");],, + [CF_VERBOSE(test-compile failed. Undoing change to \$CFLAGS) + if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then + CF_VERBOSE(but keeping change to \$CPPFLAGS) + fi + CFLAGS="$cf_check_cflags"]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CHECK_CURSES_LIB version: 4 updated: 2021/09/05 17:25:40 +dnl ------------------- +dnl $1 = nominal library name, used also for header lookup +dnl $2 = suffix to append to library name +dnl $3 = function to check for using AC_CHECK_LIB +dnl $4 = optional parameter list for $3 +AC_DEFUN([CF_CHECK_CURSES_LIB], +[ +AC_REQUIRE([CF_PKG_CONFIG]) + +cf_have_curses_lib=no + +: ${NCURSES_CONFIG_PKG:=none} +if test "x${NCURSES_CONFIG_PKG}" = xnone; then + : +elif test "x${PKG_CONFIG:=none}" != xnone; then + AC_MSG_CHECKING(pkg-config for $1$2) + if "$PKG_CONFIG" --exists "$1$2" ; then + AC_MSG_RESULT(yes) + + AC_MSG_CHECKING(if the $1$2 package files work) + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + CF_APPEND_CFLAGS(`$PKG_CONFIG --cflags "$1$2"`) + CF_ADD_LIBS(`$PKG_CONFIG --libs "$1$2"`) + + AC_TRY_LINK([#include <$1.h>], + [(void) $3 ( ]ifelse([$4],,,[[$4]])[ );], + [AC_TRY_RUN([#include <$1.h> + int main(void) + { (void) $3 ( ]ifelse([$4],,,[[$4]])[ ); return 0; }], + [cf_have_curses_lib=yes], + [cf_have_curses_lib=no], + [cf_have_curses_lib=maybe])], + [cf_have_curses_lib=no]) + AC_MSG_RESULT($cf_have_curses_lib) + test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes + if test "$cf_have_curses_lib" = "yes" + then + CF_UPPER(cf_upper,have_lib$1) + AC_DEFINE_UNQUOTED($cf_upper,1) + else + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + fi + fi +fi +if test "$cf_have_curses_lib" = no; then + AC_CHECK_LIB($1$2,$3,[ + CF_UPPER(cf_upper,have_lib$1) + CF_ADD_LIBS(-l$1$2) + AC_DEFINE_UNQUOTED($cf_upper,1)]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CLANG_COMPILER version: 8 updated: 2021/01/01 13:31:04 +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 +dnl not ignore some gcc options. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = CLANG_COMPILER (default) +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_CLANG_COMPILER],[ +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([],[ +#ifdef __clang__ +#else +make an error +#endif +],[ifelse([$2],,CLANG_COMPILER,[$2])=yes +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,CLANG_COMPILER,[$2])) +fi + +CLANG_VERSION=none + +if test "x$ifelse([$2],,CLANG_COMPILER,[$2])" = "xyes" ; then + case "$CC" in + (c[[1-9]][[0-9]]|*/c[[1-9]][[0-9]]) + AC_MSG_WARN(replacing broken compiler alias $CC) + CFLAGS="$CFLAGS -std=`echo "$CC" | sed -e 's%.*/%%'`" + CC=clang + ;; + esac + + AC_MSG_CHECKING(version of $CC) + 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 + AC_MSG_RESULT($CLANG_VERSION) + + for cf_clang_opt in \ + -Qunused-arguments \ + -Wno-error=implicit-function-declaration + do + AC_MSG_CHECKING(if option $cf_clang_opt works) + cf_save_CFLAGS="$CFLAGS" + CFLAGS="$CFLAGS $cf_clang_opt" + AC_TRY_LINK([ + #include <stdio.h>],[ + printf("hello!\\n");],[ + cf_clang_optok=yes],[ + cf_clang_optok=no]) + AC_MSG_RESULT($cf_clang_optok) + CFLAGS="$cf_save_CFLAGS" + if test "$cf_clang_optok" = yes; then + CF_VERBOSE(adding option $cf_clang_opt) + CF_APPEND_TEXT(CFLAGS,$cf_clang_opt) + fi + done +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_CONST_X_STRING version: 7 updated: 2021/06/07 17:39:17 +dnl ----------------- +dnl The X11R4-X11R6 Xt specification uses an ambiguous String type for most +dnl character-strings. +dnl +dnl It is ambiguous because the specification accommodated the pre-ANSI +dnl compilers bundled by more than one vendor in lieu of providing a standard C +dnl compiler other than by costly add-ons. Because of this, the specification +dnl did not take into account the use of const for telling the compiler that +dnl string literals would be in readonly memory. +dnl +dnl As a workaround, one could (starting with X11R5) define XTSTRINGDEFINES, to +dnl let the compiler decide how to represent Xt's strings which were #define'd. +dnl That does not solve the problem of using the block of Xt's strings which +dnl are compiled into the library (and is less efficient than one might want). +dnl +dnl Xt specification 7 introduces the _CONST_X_STRING symbol which is used both +dnl when compiling the library and compiling using the library, to tell the +dnl compiler that String is const. +AC_DEFUN([CF_CONST_X_STRING], +[ +AC_REQUIRE([AC_PATH_XTRA]) + +CF_SAVE_XTRA_FLAGS([CF_CONST_X_STRING]) + +AC_TRY_COMPILE( +[ +#include <stdlib.h> +#include <X11/Intrinsic.h> +], +[String foo = malloc(1); free((void*)foo)],[ + +AC_CACHE_CHECK(for X11/Xt const-feature,cf_cv_const_x_string,[ + AC_TRY_COMPILE( + [ +#define _CONST_X_STRING /* X11R7.8 (perhaps) */ +#undef XTSTRINGDEFINES /* X11R5 and later */ +#include <stdlib.h> +#include <X11/Intrinsic.h> + ],[String foo = malloc(1); *foo = 0],[ + cf_cv_const_x_string=no + ],[ + cf_cv_const_x_string=yes + ]) +]) + +CF_RESTORE_XTRA_FLAGS([CF_CONST_X_STRING]) + +case "$cf_cv_const_x_string" in +(no) + CF_APPEND_TEXT(CPPFLAGS,-DXTSTRINGDEFINES) + ;; +(*) + CF_APPEND_TEXT(CPPFLAGS,-D_CONST_X_STRING) + ;; +esac + +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_ACS_MAP version: 8 updated: 2021/01/04 19:45:09 +dnl ----------------- +dnl Check for likely values of acs_map[]: +AC_DEFUN([CF_CURSES_ACS_MAP], +[ +AC_REQUIRE([CF_NCURSES_WRAP_PREFIX])dnl +AC_CACHE_CHECK(for alternate character set array, cf_cv_curses_acs_map,[ +cf_cv_curses_acs_map=unknown +for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map +do +AC_TRY_LINK([ +#include <${cf_cv_ncurses_header:-curses.h}> +],[ +${name}['k'] = ACS_PLUS +],[cf_cv_curses_acs_map=$name; break]) +done +]) + +test "$cf_cv_curses_acs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_ACS_ARRAY,$cf_cv_curses_acs_map,[Define as needed to override ncurses prefix _nc_]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_CHECK_DATA version: 10 updated: 2021/01/04 19:45:09 +dnl -------------------- +dnl Check if curses.h defines the given data/variable. +dnl Use this after CF_NCURSES_CONFIG or CF_CURSES_CONFIG. +dnl +dnl $1 = data item(s) to check for +dnl $2 = action on success, e.g., "break" to quit checking a series of choices +AC_DEFUN([CF_CURSES_CHECK_DATA], +[ +for cf_data in $1 +do +AC_MSG_CHECKING(for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}) + +AC_TRY_COMPILE(CF__CURSES_HEAD, +CF__CURSES_DATA(foo,$cf_data) +,[cf_result=yes +],[cf_result=no]) +AC_MSG_RESULT($cf_result) + +if test "$cf_result" = yes ; then + CF_UPPER(cf_result,have_curses_data_$cf_data) + AC_DEFINE_UNQUOTED($cf_result) + ifelse($2,,,[$2]) +else + AC_MSG_CHECKING(for data $cf_data in library) + # BSD linkers insist on making weak linkage, but resolve at runtime. + AC_TRY_RUN(CF__CURSES_HEAD +[ +extern char $cf_data; +int main(void) +{ + ]CF__CURSES_DATA(foo,$cf_data)[ + ${cf_cv_main_return:-return}(foo == 0); +}],[cf_result=yes +],[cf_result=no],[ + # cross-compiling + AC_TRY_LINK(CF__CURSES_HEAD +[extern char $cf_data;],[ + do { + ]CF__CURSES_DATA(foo,$cf_data)[ + ${cf_cv_main_return:-return}(foo == 0); + } while (0) +],[cf_result=yes],[cf_result=no]) +]) + AC_MSG_RESULT($cf_result) + if test "$cf_result" = yes ; then + CF_UPPER(cf_result,decl_curses_data_$cf_data) + AC_DEFINE_UNQUOTED($cf_result) + # do not exit loop here, since we prefer system's declarations + fi +fi +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_CHECK_TYPE version: 5 updated: 2021/01/04 19:45:09 +dnl -------------------- +dnl Check if curses.h defines the given type +AC_DEFUN([CF_CURSES_CHECK_TYPE], +[ +AC_MSG_CHECKING(for type $1 in ${cf_cv_ncurses_header:-curses.h}) +AC_TRY_COMPILE([ +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}>],[ +$1 foo +],cf_result=yes,cf_result=no) +AC_MSG_RESULT($cf_result) +if test "$cf_result" = yes ; then + CF_UPPER(cf_result,have_type_$1) + AC_DEFINE_UNQUOTED($cf_result,1,[Define to 1 if we have type $1]) +else + AC_DEFINE_UNQUOTED($1,$2,[Define to appropriate type if $1 is not declared]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_CONFIG version: 2 updated: 2006/10/29 11:06:27 +dnl ---------------- +dnl Tie together the configure-script macros for curses. It may be ncurses, +dnl but unless asked, we do not make a special search for ncurses. However, +dnl still check for the ncurses version number, for use in other macros. +AC_DEFUN([CF_CURSES_CONFIG], +[ +CF_CURSES_CPPFLAGS +CF_NCURSES_VERSION +CF_CURSES_LIBS +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_CPPFLAGS version: 14 updated: 2021/01/02 09:31:20 +dnl ------------------ +dnl Look for the curses headers. +AC_DEFUN([CF_CURSES_CPPFLAGS],[ + +AC_CACHE_CHECK(for extra include directories,cf_cv_curses_incdir,[ +cf_cv_curses_incdir=no +case "$host_os" in +(hpux10.*) + if test "x$cf_cv_screen" = "xcurses_colr" + then + test -d /usr/include/curses_colr && \ + cf_cv_curses_incdir="-I/usr/include/curses_colr" + fi + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + test -d /usr/5lib && \ + test -d /usr/5include && \ + cf_cv_curses_incdir="-I/usr/5include" + fi + ;; +esac +]) +if test "$cf_cv_curses_incdir" != no +then + CF_APPEND_TEXT(CPPFLAGS,$cf_cv_curses_incdir) +fi + +CF_CURSES_HEADER +CF_TERM_HEADER +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_FUNCS version: 20 updated: 2020/12/31 20:19:42 +dnl --------------- +dnl Curses-functions are a little complicated, since a lot of them are macros. +AC_DEFUN([CF_CURSES_FUNCS], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_REQUIRE([CF_XOPEN_CURSES]) +AC_REQUIRE([CF_CURSES_TERM_H]) +AC_REQUIRE([CF_CURSES_UNCTRL_H]) +for cf_func in $1 +do + CF_UPPER(cf_tr_func,$cf_func) + AC_MSG_CHECKING(for ${cf_func}) + CF_MSG_LOG(${cf_func}) + AC_CACHE_VAL(cf_cv_func_$cf_func,[ + eval cf_result='$ac_cv_func_'$cf_func + if test ".$cf_result" != ".no"; then + AC_TRY_LINK(CF__CURSES_HEAD, + [ +#ifndef ${cf_func} +long foo = (long)(&${cf_func}); +fprintf(stderr, "testing linkage of $cf_func:%p\\n", (void *)foo); +if (foo + 1234L > 5678L) + ${cf_cv_main_return:-return}(foo != 0); +#endif + ], + [cf_result=yes], + [cf_result=no]) + fi + eval 'cf_cv_func_'$cf_func'="$cf_result"' + ]) + # use the computed/retrieved cache-value: + eval 'cf_result=$cf_cv_func_'$cf_func + AC_MSG_RESULT($cf_result) + if test "$cf_result" != no; then + AC_DEFINE_UNQUOTED(HAVE_${cf_tr_func}) + fi +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_HEADER version: 5 updated: 2015/04/23 20:35:30 +dnl ---------------- +dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common +dnl variations of ncurses' installs. +dnl +dnl $1 = ncurses when looking for ncurses, or is empty +AC_DEFUN([CF_CURSES_HEADER],[ +AC_CACHE_CHECK(if we have identified curses headers,cf_cv_ncurses_header,[ +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h ifelse($1,,,[$1/ncurses.h]) \ + curses.h ifelse($1,,,[$1/curses.h]) ifelse($1,,[ncurses/ncurses.h ncurses/curses.h]) +do +AC_TRY_COMPILE([#include <${cf_header}>], + [initscr(); tgoto("?", 0,0)], + [cf_cv_ncurses_header=$cf_header; break],[]) +done +]) + +if test "$cf_cv_ncurses_header" = none ; then + AC_MSG_ERROR(No curses header-files found) +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. +AC_CHECK_HEADERS($cf_cv_ncurses_header) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_LIBS version: 44 updated: 2021/01/02 09:31:20 +dnl -------------- +dnl Look for the curses libraries. Older curses implementations may require +dnl termcap/termlib to be linked as well. Call CF_CURSES_CPPFLAGS first. +AC_DEFUN([CF_CURSES_LIBS],[ + +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_MSG_CHECKING(if we have identified curses libraries) +AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); tgoto("?", 0,0)], + cf_result=yes, + cf_result=no) +AC_MSG_RESULT($cf_result) + +if test "$cf_result" = no ; then +case "$host_os" in +(freebsd*) + AC_CHECK_LIB(mytinfo,tgoto,[CF_ADD_LIBS(-lmytinfo)]) + ;; +(hpux10.*) + # Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr + # next (1998), and xcurses "newer" (2000). There is no header file for + # Hcurses; the subdirectory curses_colr has the headers (curses.h and + # term.h) for cur_colr + if test "x$cf_cv_screen" = "xcurses_colr" + then + AC_CHECK_LIB(cur_colr,initscr,[ + CF_ADD_LIBS(-lcur_colr) + ac_cv_func_initscr=yes + ],[ + AC_CHECK_LIB(Hcurses,initscr,[ + # HP's header uses __HP_CURSES, but user claims _HP_CURSES. + CF_ADD_LIBS(-lHcurses) + CF_APPEND_TEXT(CPPFLAGS,-D__HP_CURSES -D_HP_CURSES) + ac_cv_func_initscr=yes + ])]) + fi + ;; +(linux*) + case `arch 2>/dev/null` in + (x86_64) + if test -d /lib64 + then + CF_ADD_LIBDIR(/lib64) + else + CF_ADD_LIBDIR(/lib) + fi + ;; + (*) + CF_ADD_LIBDIR(/lib) + ;; + esac + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + if test -d /usr/5lib ; then + CF_ADD_LIBDIR(/usr/5lib) + CF_ADD_LIBS(-lcurses -ltermcap) + fi + fi + ac_cv_func_initscr=yes + ;; +esac + +if test ".$ac_cv_func_initscr" != .yes ; then + cf_save_LIBS="$LIBS" + + if test ".${cf_cv_ncurses_version:-no}" != .no + then + cf_check_list="ncurses curses cursesX" + else + cf_check_list="cursesX curses ncurses" + fi + + # Check for library containing tgoto. Do this before curses library + # because it may be needed to link the test-case for initscr. + if test "x$cf_term_lib" = x + then + AC_CHECK_FUNC(tgoto,[cf_term_lib=predefined],[ + for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown + do + AC_CHECK_LIB($cf_term_lib,tgoto,[ + : "${cf_nculib_root:=$cf_term_lib}" + break + ]) + done + ]) + fi + + # Check for library containing initscr + test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS" + if test "x$cf_curs_lib" = x + then + for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown + do + LIBS="-l$cf_curs_lib $cf_save_LIBS" + if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then + AC_MSG_CHECKING(if we can link with $cf_curs_lib library) + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr()], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + test "$cf_result" = yes && break + elif test "$cf_curs_lib" = "$cf_term_lib" ; then + cf_result=no + elif test "$cf_term_lib" != predefined ; then + AC_MSG_CHECKING(if we need both $cf_curs_lib and $cf_term_lib libraries) + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); tgoto((char *)0, 0, 0);], + [cf_result=no], + [ + LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS" + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr()], + [cf_result=yes], + [cf_result=error]) + ]) + AC_MSG_RESULT($cf_result) + test "$cf_result" != error && break + fi + done + fi + test "$cf_curs_lib" = unknown && AC_MSG_ERROR(no curses library found) +fi +fi + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_TERM_H version: 15 updated: 2021/01/02 09:31:20 +dnl ---------------- +dnl SVr4 curses should have term.h as well (where it puts the definitions of +dnl the low-level interface). This may not be true in old/broken implementations, +dnl as well as in misconfigured systems (e.g., gcc configured for Solaris 2.4 +dnl running with Solaris 2.5.1). +AC_DEFUN([CF_CURSES_TERM_H], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl + +AC_CACHE_CHECK(for term.h, cf_cv_term_header,[ + +# If we found <ncurses/curses.h>, look for <ncurses/term.h>, but always look +# for <term.h> if we do not find the variant. + +cf_header_list="term.h ncurses/term.h ncursesw/term.h" + +case "${cf_cv_ncurses_header:-curses.h}" in +(*/*) + cf_header_item=`echo "${cf_cv_ncurses_header:-curses.h}" | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}>], + [WINDOW *x; (void)x], + [cf_cv_term_header=$cf_header + break], + [cf_cv_term_header=no]) +done + +case "$cf_cv_term_header" in +(no) + # If curses is ncurses, some packagers still mess it up by trying to make + # us use GNU termcap. This handles the most common case. + for cf_header in ncurses/term.h ncursesw/term.h + do + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#ifdef NCURSES_VERSION +#include <${cf_header}> +#else +make an error +#endif], + [WINDOW *x; (void)x], + [cf_cv_term_header=$cf_header + break], + [cf_cv_term_header=no]) + done + ;; +esac +]) + +case "$cf_cv_term_header" in +(term.h) + AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h]) + ;; +(ncurses/term.h) + AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h]) + ;; +(ncursesw/term.h) + AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_UNCTRL_H version: 8 updated: 2021/01/02 09:31:20 +dnl ------------------ +dnl Any X/Open curses implementation must have unctrl.h, but ncurses packages +dnl may put it in a subdirectory (along with ncurses' other headers, of +dnl course). Packages which put the headers in inconsistent locations are +dnl broken). +AC_DEFUN([CF_CURSES_UNCTRL_H], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl + +AC_CACHE_CHECK(for unctrl.h, cf_cv_unctrl_header,[ + +# If we found <ncurses/curses.h>, look for <ncurses/unctrl.h>, but always look +# for <unctrl.h> if we do not find the variant. + +cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h" + +case "${cf_cv_ncurses_header:-curses.h}" in +(*/*) + cf_header_item=`echo "${cf_cv_ncurses_header:-curses.h}" | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}>], + [WINDOW *x; (void)x], + [cf_cv_unctrl_header=$cf_header + break], + [cf_cv_unctrl_header=no]) +done +]) + +case "$cf_cv_unctrl_header" in +(no) + AC_MSG_WARN(unctrl.h header not found) + ;; +esac + +case "$cf_cv_unctrl_header" in +(unctrl.h) + AC_DEFINE(HAVE_UNCTRL_H,1,[Define to 1 if we have unctrl.h]) + ;; +(ncurses/unctrl.h) + AC_DEFINE(HAVE_NCURSES_UNCTRL_H,1,[Define to 1 if we have ncurses/unctrl.h]) + ;; +(ncursesw/unctrl.h) + AC_DEFINE(HAVE_NCURSESW_UNCTRL_H,1,[Define to 1 if we have ncursesw/unctrl.h]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_WACS_MAP version: 8 updated: 2021/01/04 19:45:09 +dnl ------------------ +dnl Check for likely values of wacs_map[]. +AC_DEFUN([CF_CURSES_WACS_MAP], +[ +AC_CACHE_CHECK(for wide alternate character set array, cf_cv_curses_wacs_map,[ + cf_cv_curses_wacs_map=unknown + for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char + do + AC_TRY_LINK([ +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}>], + [void *foo = &(${name}['k']); (void)foo], + [cf_cv_curses_wacs_map=$name + break]) + done]) + +test "$cf_cv_curses_wacs_map" != unknown && AC_DEFINE_UNQUOTED(CURSES_WACS_ARRAY,$cf_cv_curses_wacs_map,[Define to name of (n)curses wide-character array]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_CURSES_WACS_SYMBOLS version: 4 updated: 2021/01/04 19:45:09 +dnl ---------------------- +dnl Do a check to see if the WACS_xxx constants are defined compatibly with +dnl X/Open Curses. In particular, NetBSD's implementation of the WACS_xxx +dnl constants is broken since those constants do not point to cchar_t's. +AC_DEFUN([CF_CURSES_WACS_SYMBOLS], +[ +AC_REQUIRE([CF_CURSES_WACS_MAP]) + +AC_CACHE_CHECK(for wide alternate character constants, cf_cv_curses_wacs_symbols,[ +cf_cv_curses_wacs_symbols=no +if test "$cf_cv_curses_wacs_map" != unknown +then + AC_TRY_LINK([ +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}>], + [cchar_t *foo = WACS_PLUS; + ${cf_cv_curses_wacs_map}['k'] = *WACS_PLUS; (void)foo], + [cf_cv_curses_wacs_symbols=yes]) +else + AC_TRY_LINK([ +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}>], + [cchar_t *foo = WACS_PLUS; (void)foo], + [cf_cv_curses_wacs_symbols=yes]) +fi +]) + +test "$cf_cv_curses_wacs_symbols" != no && AC_DEFINE(CURSES_WACS_SYMBOLS,1,[Define to 1 if (n)curses supports wide-character WACS_ symbols]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DIRNAME version: 5 updated: 2020/12/31 20:19:42 +dnl ---------- +dnl "dirname" is not portable, so we fake it with a shell script. +AC_DEFUN([CF_DIRNAME],[$1=`echo "$2" | sed -e 's%/[[^/]]*$%%'`])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_ECHO version: 14 updated: 2021/09/04 06:35:04 +dnl --------------- +dnl You can always use "make -n" to see the actual options, but it is hard to +dnl pick out/analyze warning messages when the compile-line is long. +dnl +dnl Sets: +dnl ECHO_LT - symbol to control if libtool is verbose +dnl ECHO_LD - symbol to prefix "cc -o" lines +dnl RULE_CC - symbol to put before implicit "cc -c" lines (e.g., .c.o) +dnl SHOW_CC - symbol to put before explicit "cc -c" lines +dnl ECHO_CC - symbol to put before any "cc" line +dnl +AC_DEFUN([CF_DISABLE_ECHO],[ +AC_MSG_CHECKING(if you want to see long compiling messages) +CF_ARG_DISABLE(echo, + [ --disable-echo do not display "compiling" commands], + [ + ECHO_LT='--silent' + ECHO_LD='@echo linking [$]@;' + RULE_CC='@echo compiling [$]<' + SHOW_CC='@echo compiling [$]@' + ECHO_CC='@' +],[ + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' +]) +AC_MSG_RESULT($enableval) +AC_SUBST(ECHO_LT) +AC_SUBST(ECHO_LD) +AC_SUBST(RULE_CC) +AC_SUBST(SHOW_CC) +AC_SUBST(ECHO_CC) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_LEAKS version: 9 updated: 2021/04/03 16:41:50 +dnl ---------------- +dnl Combine no-leak checks with the libraries or tools that are used for the +dnl checks. +AC_DEFUN([CF_DISABLE_LEAKS],[ + +AC_REQUIRE([CF_WITH_DMALLOC]) +AC_REQUIRE([CF_WITH_DBMALLOC]) +AC_REQUIRE([CF_WITH_VALGRIND]) + +AC_MSG_CHECKING(if you want to perform memory-leak testing) +AC_ARG_ENABLE(leaks, + [ --disable-leaks test: free permanent memory, analyze leaks], + [enable_leaks=$enableval], + [enable_leaks=yes]) +dnl with_no_leaks is more readable... +if test "x$enable_leaks" = xno; then with_no_leaks=yes; else with_no_leaks=no; fi +AC_MSG_RESULT($with_no_leaks) + +if test "$enable_leaks" = no ; then + AC_DEFINE(NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) + AC_DEFINE(YY_NO_LEAKS,1,[Define to 1 if you want to perform memory-leak testing.]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_DISABLE_RPATH_HACK version: 3 updated: 2021/01/05 20:14:44 +dnl --------------------- +dnl The rpath-hack makes it simpler to build programs, particularly with the +dnl *BSD ports which may have essential libraries in unusual places. But it +dnl can interfere with building an executable for the base system. Use this +dnl option in that case. +AC_DEFUN([CF_DISABLE_RPATH_HACK], +[ +AC_MSG_CHECKING(if rpath-hack should be disabled) +CF_ARG_DISABLE(rpath-hack, + [ --disable-rpath-hack don't add rpath options for additional libraries], + [enable_rpath_hack=no], + [enable_rpath_hack=yes]) +dnl TODO - drop cf_disable_rpath_hack +if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi +AC_MSG_RESULT($cf_disable_rpath_hack) + +if test "$enable_rpath_hack" = yes ; then + CF_RPATH_HACK +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_STRING_HACKS version: 6 updated: 2021/01/05 19:23:48 +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, +dnl and implying that most uses of the recommended alternatives are correct. +dnl +dnl Factually speaking, no one has actually counted the number of uses of these +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 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. +AC_DEFUN([CF_ENABLE_STRING_HACKS], +[ +AC_MSG_CHECKING(if you want to work around bogus compiler/loader warnings) +AC_ARG_ENABLE(string-hacks, + [ --enable-string-hacks work around bogus compiler/loader warnings], + [enable_string_hacks=$enableval], + [enable_string_hacks=no]) +AC_MSG_RESULT($enable_string_hacks) + +if test "x$enable_string_hacks" = "xyes"; then + AC_DEFINE(USE_STRING_HACKS,1,[Define to 1 to work around bogus compiler/loader warnings]) + AC_MSG_WARN(enabling string-hacks to work around bogus compiler/loader warnings) + AC_CHECK_FUNC(strlcat,[ + AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function]) + ],[ + AC_CHECK_LIB(bsd,strlcat,[ + CF_ADD_LIB(bsd) + AC_CHECK_HEADERS(bsd/string.h) + AC_DEFINE(HAVE_STRLCAT,1,[Define to 1 if we have strlcat function]) + ]) + ]) + AC_CHECK_FUNCS( strlcpy snprintf ) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_ENABLE_WARNINGS version: 9 updated: 2021/01/05 19:40:50 +dnl ------------------ +dnl Configure-option to enable gcc warnings +dnl +dnl $1 = extra options to add, if supported +dnl $2 = option for checking attributes. By default, this is done when +dnl warnings are enabled. For other values: +dnl yes: always do this, e.g., to use in generated library-headers +dnl no: never do this +AC_DEFUN([CF_ENABLE_WARNINGS],[ +if test "$GCC" = yes || test "$GXX" = yes +then +CF_FIX_WARNINGS(CFLAGS) +CF_FIX_WARNINGS(CPPFLAGS) +CF_FIX_WARNINGS(LDFLAGS) +AC_MSG_CHECKING(if you want to turn on gcc warnings) +CF_ARG_ENABLE(warnings, + [ --enable-warnings test: turn on gcc compiler warnings], + [enable_warnings=yes], + [enable_warnings=no]) +AC_MSG_RESULT($enable_warnings) +if test "$enable_warnings" = "yes" +then + ifelse($2,,[CF_GCC_ATTRIBUTES]) + CF_GCC_WARNINGS($1) +fi +ifelse($2,yes,[CF_GCC_ATTRIBUTES]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_LIBRARY version: 11 updated: 2021/01/02 09:31:20 +dnl --------------- +dnl Look for a non-standard library, given parameters for AC_TRY_LINK. We +dnl prefer a standard location, and use -L options only if we do not find the +dnl library in the standard library location(s). +dnl $1 = library name +dnl $2 = library class, usually the same as library name +dnl $3 = includes +dnl $4 = code fragment to compile/link +dnl $5 = corresponding function-name +dnl $6 = flag, nonnull if failure should not cause an error-exit +dnl +dnl Sets the variable "$cf_libdir" as a side-effect, so we can see if we had +dnl to use a -L option. +AC_DEFUN([CF_FIND_LIBRARY], +[ + eval 'cf_cv_have_lib_'"$1"'=no' + cf_libdir="" + AC_CHECK_FUNC($5, + eval 'cf_cv_have_lib_'"$1"'=yes',[ + cf_save_LIBS="$LIBS" + AC_MSG_CHECKING(for $5 in -l$1) + LIBS="-l$1 $LIBS" + AC_TRY_LINK([$3],[$4], + [AC_MSG_RESULT(yes) + eval 'cf_cv_have_lib_'"$1"'=yes' + ], + [AC_MSG_RESULT(no) + CF_LIBRARY_PATH(cf_search,$2) + for cf_libdir in $cf_search + do + AC_MSG_CHECKING(for -l$1 in $cf_libdir) + LIBS="-L$cf_libdir -l$1 $cf_save_LIBS" + AC_TRY_LINK([$3],[$4], + [AC_MSG_RESULT(yes) + eval 'cf_cv_have_lib_'"$1"'=yes' + break], + [AC_MSG_RESULT(no) + LIBS="$cf_save_LIBS"]) + done + ]) + ]) +eval 'cf_found_library="[$]cf_cv_have_lib_'"$1"\" +ifelse($6,,[ +if test "$cf_found_library" = no ; then + AC_MSG_ERROR(Cannot link $1 library) +fi +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIND_LINKAGE version: 22 updated: 2020/12/31 20:19:42 +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. +dnl See also CF_ADD_SEARCHPATH. +dnl +dnl Parameters (4-on are optional): +dnl $1 = headers for library entrypoint +dnl $2 = code fragment for library entrypoint +dnl $3 = the library name without the "-l" option or ".so" suffix. +dnl $4 = action to perform if successful (default: update CPPFLAGS, etc) +dnl $5 = action to perform if not successful +dnl $6 = module name, if not the same as the library name +dnl $7 = extra libraries +dnl +dnl Sets these variables: +dnl $cf_cv_find_linkage_$3 - yes/no according to whether linkage is found +dnl $cf_cv_header_path_$3 - include-directory if needed +dnl $cf_cv_library_path_$3 - library-directory if needed +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. +cf_cv_header_path_$3= +cf_cv_library_path_$3= + +CF_MSG_LOG([Starting [FIND_LINKAGE]($3,$6)]) + +cf_save_LIBS="$LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib +],[ + +LIBS="-l$3 $7 $cf_save_LIBS" + +AC_TRY_LINK([$1],[$2],[ + cf_cv_find_linkage_$3=yes + cf_cv_header_path_$3=/usr/include + cf_cv_library_path_$3=/usr/lib + cf_cv_library_file_$3="-l$3" +],[ + cf_cv_find_linkage_$3=no + LIBS="$cf_save_LIBS" + + CF_VERBOSE(find linkage for $3 library) + CF_MSG_LOG([Searching for headers in [FIND_LINKAGE]($3,$6)]) + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + + CF_HEADER_PATH(cf_search,ifelse([$6],,[$3],[$6])) + for cf_cv_header_path_$3 in $cf_search + do + if test -d "$cf_cv_header_path_$3" ; then + 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],[ + CF_VERBOSE(... found $3 headers in $cf_cv_header_path_$3) + cf_cv_find_linkage_$3=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + ]) + fi + done + + if test "$cf_cv_find_linkage_$3" = maybe ; then + + CF_MSG_LOG([Searching for $3 library in [FIND_LINKAGE]($3,$6)]) + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + ifelse([$6],,,[ + CPPFLAGS="$cf_test_CPPFLAGS" + LIBS="-l$3 $7 $cf_save_LIBS" + AC_TRY_LINK([$1],[$2],[ + CF_VERBOSE(... found $3 library in system) + cf_cv_find_linkage_$3=yes]) + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + ]) + + if test "$cf_cv_find_linkage_$3" != yes ; then + CF_LIBRARY_PATH(cf_search,$3) + for cf_cv_library_path_$3 in $cf_search + do + if test -d "$cf_cv_library_path_$3" ; then + CF_VERBOSE(... testing $cf_cv_library_path_$3) + 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],[ + CF_VERBOSE(... found $3 library in $cf_cv_library_path_$3) + cf_cv_find_linkage_$3=yes + cf_cv_library_file_$3="-l$3" + break],[ + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + ]) + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_$3=no + fi + ],$7) +]) + +LIBS="$cf_save_LIBS" + +if test "$cf_cv_find_linkage_$3" = yes ; then +ifelse([$4],,[ + CF_ADD_INCDIR($cf_cv_header_path_$3) + CF_ADD_LIBDIR($cf_cv_library_path_$3) + CF_ADD_LIB($3) +],[$4]) +else +ifelse([$5],,AC_MSG_WARN(Cannot find $3 library),[$5]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FIX_WARNINGS version: 3 updated: 2020/12/31 18:40:20 +dnl --------------- +dnl Warning flags do not belong in CFLAGS, CPPFLAGS, etc. Any of gcc's +dnl "-Werror" flags can interfere with configure-checks. Those go into +dnl EXTRA_CFLAGS. +dnl +dnl $1 = variable name to repair +define([CF_FIX_WARNINGS],[ +if test "$GCC" = yes || test "$GXX" = yes +then + case [$]$1 in + (*-Werror=*) + CF_VERBOSE(repairing $1: [$]$1) + cf_temp_flags= + for cf_temp_scan in [$]$1 + do + case "x$cf_temp_scan" in + (x-Werror=*) + CF_APPEND_TEXT(EXTRA_CFLAGS,$cf_temp_scan) + ;; + (*) + CF_APPEND_TEXT(cf_temp_flags,$cf_temp_scan) + ;; + esac + done + $1="$cf_temp_flags" + CF_VERBOSE(... fixed [$]$1) + CF_VERBOSE(... extra $EXTRA_CFLAGS) + ;; + esac +fi +AC_SUBST(EXTRA_CFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_CURSES_VERSION version: 8 updated: 2021/01/02 09:31:20 +dnl ---------------------- +dnl Solaris has a data item 'curses_version', which confuses AC_CHECK_FUNCS. +dnl It's a character string "SVR4", not documented. +AC_DEFUN([CF_FUNC_CURSES_VERSION], +[ +AC_CACHE_CHECK(for function curses_version, cf_cv_func_curses_version,[ +AC_TRY_RUN([ +#include <${cf_cv_ncurses_header:-curses.h}> +int main(void) +{ + char temp[1024]; + sprintf(temp, "%s\\n", curses_version()); + ${cf_cv_main_return:-return}(0); +}] +,[cf_cv_func_curses_version=yes] +,[cf_cv_func_curses_version=no] +,[cf_cv_func_curses_version=unknown]) +rm -f core]) +test "$cf_cv_func_curses_version" = yes && AC_DEFINE(HAVE_CURSES_VERSION,1,[Define to 1 if we have curses_version function]) +]) +dnl --------------------------------------------------------------------------- +dnl CF_FUNC_OPENPTY version: 6 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Check for openpty() function, along with <pty.h> header. It may need the +dnl "util" library as well. +AC_DEFUN([CF_FUNC_OPENPTY], +[ +AC_CHECK_LIB(util,openpty,cf_cv_lib_util=yes,cf_cv_lib_util=no) +AC_CACHE_CHECK(for openpty header,cf_cv_func_openpty,[ + cf_save_LIBS="$LIBS" + test "$cf_cv_lib_util" = yes && { CF_ADD_LIB(util) } + for cf_header in pty.h libutil.h util.h + do + AC_TRY_LINK([ +#include <$cf_header> +],[ + int x = openpty((int *)0, (int *)0, (char *)0, + (struct termios *)0, (struct winsize *)0); +],[ + cf_cv_func_openpty=$cf_header + break +],[ + cf_cv_func_openpty=no +]) + done + LIBS="$cf_save_LIBS" +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_ATTRIBUTES version: 24 updated: 2021/03/20 12:00:25 +dnl ----------------- +dnl Test for availability of useful gcc __attribute__ directives to quiet +dnl compiler warnings. Though useful, not all are supported -- and contrary +dnl to documentation, unrecognized directives cause older compilers to barf. +AC_DEFUN([CF_GCC_ATTRIBUTES], +[AC_REQUIRE([AC_PROG_FGREP])dnl +AC_REQUIRE([CF_C11_NORETURN])dnl + +if test "$GCC" = yes || test "$GXX" = yes +then +cat > conftest.i <<EOF +#ifndef GCC_PRINTF +#define GCC_PRINTF 0 +#endif +#ifndef GCC_SCANF +#define GCC_SCANF 0 +#endif +#ifndef GCC_NORETURN +#define GCC_NORETURN /* nothing */ +#endif +#ifndef GCC_UNUSED +#define GCC_UNUSED /* nothing */ +#endif +EOF +if test "$GCC" = yes +then + AC_CHECKING([for $CC __attribute__ directives]) +cat > "conftest.$ac_ext" <<EOF +#line __oline__ "${as_me:-configure}" +#include "confdefs.h" +#include "conftest.h" +#include "conftest.i" +#if GCC_PRINTF +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +#else +#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ +#endif +#if GCC_SCANF +#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) +#else +#define GCC_SCANFLIKE(fmt,var) /*nothing*/ +#endif +extern void wow(char *,...) GCC_SCANFLIKE(1,2); +extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2); +extern GCC_NORETURN void foo(void); +int main(int argc GCC_UNUSED, char *argv[[]] GCC_UNUSED) { (void)argc; (void)argv; return 0; } +EOF + cf_printf_attribute=no + cf_scanf_attribute=no + for cf_attribute in scanf printf unused noreturn + do + CF_UPPER(cf_ATTRIBUTE,$cf_attribute) + cf_directive="__attribute__(($cf_attribute))" + echo "checking for $CC $cf_directive" 1>&AC_FD_CC + + case "$cf_attribute" in + (printf) + cf_printf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + (scanf) + cf_scanf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + (*) + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE $cf_directive +EOF + ;; + esac + + if AC_TRY_EVAL(ac_compile); then + test -n "$verbose" && AC_MSG_RESULT(... $cf_attribute) + cat conftest.h >>confdefs.h + case "$cf_attribute" in + (noreturn) + AC_DEFINE_UNQUOTED(GCC_NORETURN,$cf_directive,[Define to noreturn-attribute for gcc]) + ;; + (printf) + cf_value='/* nothing */' + if test "$cf_printf_attribute" != no ; then + cf_value='__attribute__((format(printf,fmt,var)))' + AC_DEFINE(GCC_PRINTF,1,[Define to 1 if the compiler supports gcc-like printf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_PRINTFLIKE(fmt,var),$cf_value,[Define to printf-attribute for gcc]) + ;; + (scanf) + cf_value='/* nothing */' + if test "$cf_scanf_attribute" != no ; then + cf_value='__attribute__((format(scanf,fmt,var)))' + AC_DEFINE(GCC_SCANF,1,[Define to 1 if the compiler supports gcc-like scanf attribute.]) + fi + AC_DEFINE_UNQUOTED(GCC_SCANFLIKE(fmt,var),$cf_value,[Define to sscanf-attribute for gcc]) + ;; + (unused) + AC_DEFINE_UNQUOTED(GCC_UNUSED,$cf_directive,[Define to unused-attribute for gcc]) + ;; + esac + fi + done +else + ${FGREP-fgrep} define conftest.i >>confdefs.h +fi +rm -rf ./conftest* +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GCC_VERSION version: 8 updated: 2019/09/07 13:38:36 +dnl -------------- +dnl Find version of gcc, and (because icc/clang pretend to be gcc without being +dnl compatible), attempt to determine if icc/clang is actually used. +AC_DEFUN([CF_GCC_VERSION],[ +AC_REQUIRE([AC_PROG_CC]) +GCC_VERSION=none +if test "$GCC" = yes ; then + AC_MSG_CHECKING(version of $CC) + GCC_VERSION="`${CC} --version 2>/dev/null | sed -e '2,$d' -e 's/^.*(GCC[[^)]]*) //' -e 's/^.*(Debian[[^)]]*) //' -e 's/^[[^0-9.]]*//' -e 's/[[^0-9.]].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + AC_MSG_RESULT($GCC_VERSION) +fi +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 --------------- +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: +dnl +dnl -Wconversion (useful in older versions of gcc, but not in gcc 2.7.x) +dnl -Winline (usually not worthwhile) +dnl -Wredundant-decls (system headers make this too noisy) +dnl -Wtraditional (combines too many unrelated messages, only a few useful) +dnl -Wwrite-strings (too noisy, but should review occasionally). This +dnl is enabled for ncurses using "--enable-const". +dnl -pedantic +dnl +dnl Parameter: +dnl $1 is an optional list of gcc warning flags that a particular +dnl application might want to use, e.g., "no-unused" for +dnl -Wno-unused +dnl Special: +dnl If $with_ext_const is "yes", add a check for -Wwrite-strings +dnl +AC_DEFUN([CF_GCC_WARNINGS], +[ +AC_REQUIRE([CF_GCC_VERSION]) +if test "x$have_x" = xyes; then CF_CONST_X_STRING fi +cat > "conftest.$ac_ext" <<EOF +#line __oline__ "${as_me:-configure}" +int main(int argc, char *argv[[]]) { return (argv[[argc-1]] == 0) ; } +EOF +if test "$INTEL_COMPILER" = yes +then +# The "-wdXXX" options suppress warnings: +# remark #1419: external declaration in primary source file +# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) +# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) +# remark #193: zero used for undefined preprocessing identifier +# remark #593: variable "curs_sb_left_arrow" was set but never used +# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits +# remark #869: parameter "tw" was never referenced +# remark #981: operands are evaluated in unspecified order +# warning #279: controlling expression is constant + + AC_CHECKING([for $CC warning options]) + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" + for cf_opt in \ + wd1419 \ + wd1683 \ + wd1684 \ + wd193 \ + wd593 \ + wd279 \ + wd810 \ + wd869 \ + wd981 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if AC_TRY_EVAL(ac_compile); then + test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" +then + AC_CHECKING([for $CC warning options]) + cf_save_CFLAGS="$CFLAGS" + cf_warn_CONST="" + test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= + for cf_opt in W Wall \ + Wbad-function-cast \ + Wcast-align \ + Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes \ + Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST $1 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if AC_TRY_EVAL(ac_compile); then + test -n "$verbose" && AC_MSG_RESULT(... -$cf_opt) + case "$cf_opt" in + (Winline) + case "$GCC_VERSION" in + ([[34]].*) + CF_VERBOSE(feature is broken in gcc $GCC_VERSION) + continue;; + esac + ;; + (Wpointer-arith) + case "$GCC_VERSION" in + ([[12]].*) + CF_VERBOSE(feature is broken in gcc $GCC_VERSION) + continue;; + esac + ;; + esac + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +fi +rm -rf ./conftest* + +AC_SUBST(EXTRA_CFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GETOPT_HEADER version: 8 updated: 2021/06/19 19:16:16 +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_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([ +#include <$cf_header>], +[int x = optind; char *y = optarg; (void)x; (void)y], +[cf_cv_getopt_header=$cf_header + break]) +done +]) +if test "$cf_cv_getopt_header" != none ; then + AC_DEFINE(HAVE_GETOPT_HEADER,1,[Define to 1 if getopt variables are declared in header]) +fi +if test "$cf_cv_getopt_header" = getopt.h ; then + AC_DEFINE(NEED_GETOPT_H,1,[Define to 1 if we must include getopt.h]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_GNU_SOURCE version: 10 updated: 2018/12/10 20:09:41 +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 +dnl (or misfeature) of glibc2, which breaks portability of many applications, +dnl since it is interwoven with GNU extensions. +dnl +dnl Well, yes we could work around it... +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +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>],[ + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif], + [cf_cv_gnu_library=yes], + [cf_cv_gnu_library=no]) +]) + +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. + 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>],[ + #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], + [cf_cv_gnu_library_219=yes], + [cf_cv_gnu_library_219=no]) + CPPFLAGS="$cf_save" + ]) + + if test "x$cf_cv_gnu_library_219" = 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([ + #include <limits.h> + #include <sys/types.h> + ],[ + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif], + [cf_cv_gnu_dftsrc_219=yes], + [cf_cv_gnu_dftsrc_219=no]) + ]) + test "x$cf_cv_gnu_dftsrc_219" = "xyes" || CPPFLAGS="$cf_save" + else + cf_cv_gnu_dftsrc_219=maybe + fi + + 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>],[ + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif], + [cf_cv_gnu_source=no], + [cf_save="$CPPFLAGS" + CF_ADD_CFLAGS(-D_GNU_SOURCE) + AC_TRY_COMPILE([#include <sys/types.h>],[ + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif], + [cf_cv_gnu_source=no], + [cf_cv_gnu_source=yes]) + CPPFLAGS="$cf_save" + ]) + ]) + + if test "$cf_cv_gnu_source" = yes + 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>],[ + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif], + [cf_cv_default_source=no], + [cf_cv_default_source=yes]) + ]) + if test "$cf_cv_default_source" = yes + then + CF_APPEND_TEXT(CPPFLAGS,-D_DEFAULT_SOURCE) + fi + fi + fi + +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HEADER_PATH version: 15 updated: 2021/01/01 13:31:04 +dnl -------------- +dnl Construct a search-list of directories for a nonstandard header-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_HEADER_PATH], +[ +$1= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + CF_ADD_SUBDIR_PATH($1,$2,include,$cf_header_path,NONE) + cf_header_path_list="$cf_header_path_list [$]$1" + ;; + esac + done +fi + +# add the variations for the package we are looking for +CF_SUBDIR_PATH($1,$2,include) + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && $1="[$]$1 $includedir" + test -d "$includedir/$2" && $1="[$]$1 $includedir/$2" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && $1="[$]$1 $oldincludedir" + test -d "$oldincludedir/$2" && $1="[$]$1 $oldincludedir/$2" +} + +$1="[$]$1 $cf_header_path_list" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_HELP_MESSAGE version: 4 updated: 2019/12/31 08:53:54 +dnl --------------- +dnl Insert text into the help-message, for readability, from AC_ARG_WITH. +AC_DEFUN([CF_HELP_MESSAGE], +[CF_ACVERSION_CHECK(2.53,[],[ +AC_DIVERT_HELP($1)])dnl +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INHERIT_SCRIPT version: 2 updated: 2003/03/01 23:50:42 +dnl ----------------- +dnl If we do not have a given script, look for it in the parent directory. +AC_DEFUN([CF_INHERIT_SCRIPT], +[ +test -f $1 || ( test -f ../$1 && cp ../$1 ./ ) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPTS version: 2 updated: 2018/08/18 12:19:21 +dnl --------------- +dnl prompt for/fill-in useful install-program options +AC_DEFUN([CF_INSTALL_OPTS], +[ +CF_INSTALL_OPT_S +CF_INSTALL_OPT_P +CF_INSTALL_OPT_O +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_O version: 3 updated: 2020/12/31 20:19:42 +dnl ---------------- +dnl Almost all "install" programs default to the current user's ownership. +dnl Almost - MINIX is an exception. +AC_DEFUN([CF_INSTALL_OPT_O], +[ +AC_MSG_CHECKING(if install needs to be told about ownership) +case `$ac_config_guess` in +(*minix) + with_install_o=yes + ;; +(*) + with_install_o=no + ;; +esac + +AC_MSG_RESULT($with_install_o) +if test "x$with_install_o" = xyes +then + INSTALL_OPT_O="`id root|sed -e 's/uid=[[0-9]]*(/ -o /' -e 's/gid=[[0-9]]*(/ -g /' -e 's/ [[^=[:space:]]][[^=[:space:]]]*=.*/ /' -e 's/)//g'`" +else + INSTALL_OPT_O= +fi + +AC_SUBST(INSTALL_OPT_O) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_P version: 3 updated: 2021/01/01 13:31:04 +dnl ---------------- +dnl Some install-programs accept a "-p" option to preserve file modification +dnl timestamps. That can be useful as an install option, as well as a way to +dnl avoid the need for ranlib after copying a static archive. +AC_DEFUN([CF_INSTALL_OPT_P], +[ +: "${INSTALL:=install}" +AC_CACHE_CHECK(if install accepts -p option, cf_cv_install_p,[ + rm -rf ./conftest* + date >conftest.in + mkdir conftest.out + sleep 3 + if $INSTALL -p conftest.in conftest.out 2>/dev/null + then + if test -f conftest.out/conftest.in + then + test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \ + test conftest.out/conftest.in -nt conftest.in 2>conftest.err + if test -s conftest.err + then + cf_cv_install_p=no + else + cf_cv_install_p=yes + fi + else + cf_cv_install_p=no + fi + else + cf_cv_install_p=no + fi + rm -rf ./conftest* +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INSTALL_OPT_S version: 3 updated: 2021/01/05 19:23:48 +dnl ---------------- +dnl By default, we should strip executables which are installed, but leave the +dnl ability to suppress that for unit-testing. +AC_DEFUN([CF_INSTALL_OPT_S], +[ +AC_MSG_CHECKING(if you want to install stripped executables) +CF_ARG_DISABLE(stripping, + [ --disable-stripping do not strip (debug info) installed executables], + [enable_stripping=no], + [enable_stripping=yes]) +AC_MSG_RESULT($enable_stripping) + +if test "$enable_stripping" = yes +then + INSTALL_OPT_S="-s" +else + INSTALL_OPT_S= +fi +AC_SUBST(INSTALL_OPT_S) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_INTEL_COMPILER version: 8 updated: 2021/01/01 16:53:59 +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 +dnl between prototypes, e.g., as exercised by CF_MISSING_CHECK. +dnl +dnl This macro should be run "soon" after AC_PROG_CC or AC_PROG_CPLUSPLUS, to +dnl ensure that it is not mistaken for gcc/g++. It is normally invoked from +dnl the wrappers for gcc and g++ warnings. +dnl +dnl $1 = GCC (default) or GXX +dnl $2 = INTEL_COMPILER (default) or INTEL_CPLUSPLUS +dnl $3 = CFLAGS (default) or CXXFLAGS +AC_DEFUN([CF_INTEL_COMPILER],[ +AC_REQUIRE([AC_CANONICAL_HOST]) +ifelse([$2],,INTEL_COMPILER,[$2])=no + +if test "$ifelse([$1],,[$1],GCC)" = yes ; then + case "$host_os" in + (linux*|gnu*) + 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([],[ +#ifdef __INTEL_COMPILER +#else +make an error +#endif +],[ifelse([$2],,INTEL_COMPILER,[$2])=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" +],[]) + ifelse([$3],,CFLAGS,[$3])="$cf_save_CFLAGS" + AC_MSG_RESULT($ifelse([$2],,INTEL_COMPILER,[$2])) + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LD_RPATH_OPT version: 9 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl For the given system and compiler, find the compiler flags to pass to the +dnl loader to use the "rpath" feature. +AC_DEFUN([CF_LD_RPATH_OPT], +[ +AC_REQUIRE([CF_CHECK_CACHE]) + +LD_RPATH_OPT= +if test "x$cf_cv_enable_rpath" != xno +then + AC_MSG_CHECKING(for an rpath option) + case "$cf_cv_system_name" in + (irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; + (linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (openbsd[[2-9]].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (dragonfly*) + LD_RPATH_OPT="-rpath " + ;; + (netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; + (solaris2*) + LD_RPATH_OPT="-R" + ;; + (*) + ;; + esac + AC_MSG_RESULT($LD_RPATH_OPT) + + case "x$LD_RPATH_OPT" in + (x-R*) + 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) + LIBS="$cf_save_LIBS" + AC_MSG_RESULT($cf_rpath_space) + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; + esac +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_LIBRARY_PATH version: 11 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Construct a search-list of directories for a nonstandard library-file +dnl +dnl Parameters +dnl $1 = the variable to return as result +dnl $2 = the package name +AC_DEFUN([CF_LIBRARY_PATH], +[ +$1= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + CF_ADD_SUBDIR_PATH($1,$2,lib,$cf_library_path,NONE) + cf_library_path_list="$cf_library_path_list [$]$1" + ;; + esac + done +fi + +CF_SUBDIR_PATH($1,$2,lib) + +$1="$cf_library_path_list [$]$1" +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAKE_PHONY version: 3 updated: 2021/01/08 16:08:21 +dnl ------------- +dnl Check if the make-program handles a ".PHONY" target, e.g,. a target which +dnl acts as a placeholder. +dnl +dnl The ".PHONY" feature was proposed in 2011 here +dnl https://www.austingroupbugs.net/view.php?id=523 +dnl and is scheduled for release in P1003.1 Issue 8 (late 2022). +dnl +dnl This is not supported by SVr4 make (or SunOS 4, 4.3SD, etc), but works with +dnl a few others (i.e., GNU make and the non-POSIX "BSD" make): +dnl +dnl + This is a GNU make feature (since April 1988, but in turn from binutils, +dnl date unspecified). +dnl +dnl + It was adopted in NetBSD make in June 1995. +dnl +dnl + The other BSD make programs are derived from the NetBSD make (and for +dnl that reason are not actually different "implementations"). +dnl +dnl + Some features of NetBSD make were actually adapted from pmake, which +dnl began as a modified GNU make starting in 1993. +dnl +dnl + Version 3.8 of the dmake program in January 1992 also implemented this +dnl GNU make extension, but is less well known than the BSD make. +AC_DEFUN([CF_MAKE_PHONY],[ +AC_CACHE_CHECK(for \".PHONY\" make-support, cf_cv_make_PHONY,[ + rm -rf conftest* + ( + mkdir conftest || exit 1 + cd conftest + cat >makefile <<'CF_EOF' +.PHONY: always +DATA=0 +always: always.out + @echo "** making [$]@ [$](DATA)" +once: once.out + @echo "** making [$]@ [$](DATA)" +always.out: + @echo "** making [$]@ [$](DATA)" + echo [$](DATA) > [$]@ +once.out: + @echo "** making [$]@ [$](DATA)" + echo [$](DATA) > [$]@ +CF_EOF + for cf_data in 1 2 3 + do + ${MAKE:-make} always DATA=$cf_data + ${MAKE:-make} once DATA=$cf_data + ${MAKE:-make} -t always once + if test -f always ; then + echo "no (case 1)" > ../conftest.tmp + elif test ! -f always.out ; then + echo "no (case 2)" > ../conftest.tmp + elif test ! -f once.out ; then + echo "no (case 3)" > ../conftest.tmp + elif ! cmp -s always.out once.out ; then + echo "no (case 4)" > ../conftest.tmp + diff always.out once.out + else + cf_check="`cat always.out`" + if test "x$cf_check" != "x$cf_data" ; then + echo "no (case 5)" > ../conftest.tmp + else + echo yes > ../conftest.tmp + rm -f ./*.out + continue + fi + fi + break + done + ) >&AC_FD_CC 2>&1 + cf_cv_make_PHONY="`cat conftest.tmp`" + rm -rf conftest* +]) +MAKE_NO_PHONY="#" +MAKE_PHONY="#" +test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY= +test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY= +AC_SUBST(MAKE_NO_PHONY) +AC_SUBST(MAKE_PHONY) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MAKE_TAGS version: 6 updated: 2010/10/23 15:52:32 +dnl ------------ +dnl Generate tags/TAGS targets for makefiles. Do not generate TAGS if we have +dnl a monocase filesystem. +AC_DEFUN([CF_MAKE_TAGS],[ +AC_REQUIRE([CF_MIXEDCASE_FILENAMES]) + +AC_CHECK_PROGS(CTAGS, exctags ctags) +AC_CHECK_PROGS(ETAGS, exetags etags) + +AC_CHECK_PROG(MAKE_LOWER_TAGS, ${CTAGS:-ctags}, yes, no) + +if test "$cf_cv_mixedcase" = yes ; then + AC_CHECK_PROG(MAKE_UPPER_TAGS, ${ETAGS:-etags}, yes, no) +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +AC_SUBST(CTAGS) +AC_SUBST(ETAGS) + +AC_SUBST(MAKE_UPPER_TAGS) +AC_SUBST(MAKE_LOWER_TAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MATH_LIB version: 10 updated: 2020/12/31 18:40:20 +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 +dnl AC_CHECK_LIB(m,sin), because that fails for C++. +AC_DEFUN([CF_MATH_LIB], +[ +AC_CACHE_CHECK(if -lm needed for math functions, + cf_cv_need_libm,[ + AC_TRY_LINK([ + #include <stdio.h> + #include <stdlib.h> + #include <math.h> + ], + [double x = rand(); printf("result = %g\\n", ]ifelse([$2],,sin(x),$2)[)], + [cf_cv_need_libm=no], + [cf_cv_need_libm=yes])]) +if test "$cf_cv_need_libm" = yes +then +ifelse($1,,[ + CF_ADD_LIB(m) +],[$1=-lm]) +fi +]) +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 +dnl create a lowercase name and see it as uppercase, it doesn't support that. +AC_DEFUN([CF_MIXEDCASE_FILENAMES], +[ +AC_CACHE_CHECK(if filesystem supports mixed-case filenames,cf_cv_mixedcase,[ +if test "$cross_compiling" = yes ; then + case "$target_alias" in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +fi +]) +test "$cf_cv_mixedcase" = yes && AC_DEFINE(MIXEDCASE_FILENAMES,1,[Define to 1 if filesystem supports mixed-case filenames.]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_MSG_LOG version: 5 updated: 2010/10/23 15:52:32 +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 +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CC_CHECK version: 5 updated: 2020/12/31 20:19:42 +dnl ------------------- +dnl Check if we can compile with ncurses' header file +dnl $1 is the cache variable to set +dnl $2 is the header-file to include +dnl $3 is the root name (ncurses or ncursesw) +AC_DEFUN([CF_NCURSES_CC_CHECK],[ + AC_TRY_COMPILE([ +]ifelse($3,ncursesw,[ +#define _XOPEN_SOURCE_EXTENDED +#undef HAVE_LIBUTF8_H /* in case we used CF_UTF8_LIB */ +#define HAVE_LIBUTF8_H /* to force ncurses' header file to use cchar_t */ +])[ +#include <$2>],[ +#ifdef NCURSES_VERSION +]ifelse($3,ncursesw,[ +#ifndef WACS_BSSB + make an error +#endif +])[ +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + ] + ,[$1=$2] + ,[$1=no]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CONFIG version: 28 updated: 2021/08/28 15:20:37 +dnl ----------------- +dnl Tie together the configure-script macros for ncurses, preferring these in +dnl order: +dnl a) ".pc" files for pkg-config, using $NCURSES_CONFIG_PKG +dnl b) the "-config" script from ncurses, using $NCURSES_CONFIG +dnl c) just plain libraries +dnl +dnl $1 is the root library name (default: "ncurses") +AC_DEFUN([CF_NCURSES_CONFIG],[ +AC_REQUIRE([CF_PKG_CONFIG]) +cf_ncuconfig_root=ifelse($1,,ncurses,$1) +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + AC_MSG_CHECKING(pkg-config for $cf_ncuconfig_root) + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + AC_MSG_RESULT(yes) + + AC_MSG_CHECKING(if the $cf_ncuconfig_root package files work) + cf_have_ncuconfig=unknown + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`" + cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" + + # while -W for passing linker flags is prevalent, it is not "standard". + # At least one wrapper for c89/c99 (in Apple's xcode) has its own + # incompatible _and_ non-standard -W option which gives an error. Work + # around that pitfall. + case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in + (x*c[[89]]9@@*-W*) + CF_ADD_CFLAGS($cf_pkg_cflags) + CF_ADD_LIBS($cf_pkg_libs) + + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tigetstr((char *)0);], + [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); }], + [cf_test_ncuconfig=yes], + [cf_test_ncuconfig=no], + [cf_test_ncuconfig=maybe])], + [cf_test_ncuconfig=no]) + + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + + if test "x$cf_test_ncuconfig" != xyes; then + cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[[^ ]]*//g'` + cf_pkg_cflags="$cf_temp" + cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[[^ ]]*//g'` + cf_pkg_libs="$cf_temp" + fi + ;; + esac + + CF_APPEND_CFLAGS($cf_pkg_cflags) + CF_ADD_LIBS($cf_pkg_libs) + + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tigetstr((char *)0);], + [AC_TRY_RUN([#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); }], + [cf_have_ncuconfig=yes], + [cf_have_ncuconfig=no], + [cf_have_ncuconfig=maybe])], + [cf_have_ncuconfig=no]) + AC_MSG_RESULT($cf_have_ncuconfig) + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + CF_TERM_HEADER + fi + + else + AC_MSG_RESULT(no) + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + + CF_ACVERSION_CHECK(2.52, + [AC_CHECK_TOOLS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)], + [AC_PATH_PROGS(NCURSES_CONFIG, ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config, none)]) + + if test "$NCURSES_CONFIG" != none ; then + + CF_APPEND_CFLAGS(`$NCURSES_CONFIG --cflags`) + CF_ADD_LIBS(`$NCURSES_CONFIG --libs`) + + # even with config script, some packages use no-override for curses.h + CF_CURSES_HEADER(ifelse($1,,ncurses,$1)) + + dnl like CF_NCURSES_CPPFLAGS + AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + + dnl like CF_NCURSES_LIBS + CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_ncuconfig_root) + AC_DEFINE_UNQUOTED($cf_nculib_ROOT) + + dnl like CF_NCURSES_VERSION + cf_cv_ncurses_version="`$NCURSES_CONFIG --version`" + + else + + CF_NCURSES_CPPFLAGS(ifelse($1,,ncurses,$1)) + CF_NCURSES_LIBS(ifelse($1,,ncurses,$1)) + + fi +else + NCURSES_CONFIG=none +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_CPPFLAGS version: 22 updated: 2021/01/02 09:31:20 +dnl ------------------- +dnl Look for the SVr4 curses clone 'ncurses' in the standard places, adjusting +dnl the CPPFLAGS variable so we can include its header. +dnl +dnl The header files may be installed as either curses.h, or ncurses.h (would +dnl be obsolete, except that some packagers prefer this name to distinguish it +dnl from a "native" curses implementation). If not installed for overwrite, +dnl the curses.h file would be in an ncurses subdirectory (e.g., +dnl /usr/include/ncurses), but someone may have installed overwriting the +dnl vendor's curses. Only very old versions (pre-1.9.2d, the first autoconf'd +dnl version) of ncurses don't define either __NCURSES_H or NCURSES_VERSION in +dnl the header. +dnl +dnl If the installer has set $CFLAGS or $CPPFLAGS so that the ncurses header +dnl is already in the include-path, don't even bother with this, since we cannot +dnl easily determine which file it is. In this case, it has to be <curses.h>. +dnl +dnl The optional parameter gives the root name of the library, in case it is +dnl not installed as the default curses library. That is how the +dnl wide-character version of ncurses is installed. +AC_DEFUN([CF_NCURSES_CPPFLAGS], +[AC_REQUIRE([CF_WITH_CURSES_DIR]) + +AC_PROVIDE([CF_CURSES_CPPFLAGS])dnl +cf_ncuhdr_root=ifelse($1,,ncurses,$1) + +test -n "$cf_cv_curses_dir" && \ +test "$cf_cv_curses_dir" != "no" && { \ + CF_ADD_INCDIR($cf_cv_curses_dir/include/$cf_ncuhdr_root) +} + +AC_CACHE_CHECK(for $cf_ncuhdr_root header in include-path, cf_cv_ncurses_h,[ + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + CF_NCURSES_CC_CHECK(cf_cv_ncurses_h,$cf_header,$1) + test "$cf_cv_ncurses_h" != no && break + done +]) + +CF_NCURSES_HEADER +CF_TERM_HEADER + +# some applications need this, but should check for NCURSES_VERSION +AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) + +CF_NCURSES_VERSION +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_EXT_FUNCS version: 4 updated: 2012/10/06 16:39:58 +dnl -------------------- +dnl Since 2007/11/17, ncurses has defined NCURSES_EXT_FUNCS; earlier versions +dnl may provide these functions. Define the symbol if it is not defined, and +dnl if it is valid. +AC_DEFUN([CF_NCURSES_EXT_FUNCS], +[ +AC_CACHE_CHECK(for ncurses extended functions,cf_cv_ncurses_ext_funcs,[ +AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}>], +[ +int x = NCURSES_EXT_FUNCS +],[cf_cv_ncurses_ext_funcs=defined],[ +AC_TRY_LINK([ +#include <${cf_cv_ncurses_header:-curses.h}>], +[ + (void) assume_default_colors (0, 0); + (void) curses_version (); + (void) define_key (0, 0); + (void) is_term_resized (0, 0); + (void) key_defined (0); + (void) keybound (0, 0); + (void) keyok (0, 0); + (void) resize_term (0, 0); + (void) resizeterm (0, 0); + (void) use_default_colors (); + (void) use_extended_names (0); + (void) wresize (0, 0, 0);], + [cf_cv_ncurses_ext_funcs=yes], + [cf_cv_ncurses_ext_funcs=no]) +]) +]) +test "$cf_cv_ncurses_ext_funcs" = yes && AC_DEFINE(NCURSES_EXT_FUNCS,1,[Define to 1 if we have ncurses extensions]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_HEADER version: 7 updated: 2021/01/04 19:33:05 +dnl ----------------- +dnl Find a "curses" header file, e.g,. "curses.h", or one of the more common +dnl variations of ncurses' installs. +dnl +dnl See also CF_CURSES_HEADER, which sets the same cache variable. +AC_DEFUN([CF_NCURSES_HEADER],[ + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +AC_CACHE_CHECK(for $cf_ncuhdr_root include-path, cf_cv_ncurses_h2,[ + test -n "$verbose" && echo + CF_HEADER_PATH(cf_search,$cf_ncuhdr_root) + test -n "$verbose" && echo "search path $cf_search" + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + CF_ADD_INCDIR($cf_incdir) + for cf_header in \ + ncurses.h \ + curses.h + do + CF_NCURSES_CC_CHECK(cf_cv_ncurses_h2,$cf_header,$1) + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&AC_FD_MSG + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&AC_FD_MSG + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && AC_MSG_ERROR(not found) + ]) + + CF_DIRNAME(cf_1st_incdir,$cf_cv_ncurses_h2) + cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`" + if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then + cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header" + fi + CF_ADD_INCDIR($cf_1st_incdir) + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case "$cf_cv_ncurses_header" in +(*ncurses.h) + AC_DEFINE(HAVE_NCURSES_H,1,[Define to 1 if we have ncurses.h]) + ;; +esac + +case "$cf_cv_ncurses_header" in +(ncurses/curses.h|ncurses/ncurses.h) + AC_DEFINE(HAVE_NCURSES_NCURSES_H,1,[Define to 1 if we have ncurses/ncurses.h]) + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + AC_DEFINE(HAVE_NCURSESW_NCURSES_H,1,[Define to 1 if we have ncursesw/ncurses.h]) + ;; +esac + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_LIBS version: 21 updated: 2021/09/04 06:37:12 +dnl --------------- +dnl Look for the ncurses library. This is a little complicated on Linux, +dnl because it may be linked with the gpm (general purpose mouse) library. +dnl Some distributions have gpm linked with (bsd) curses, which makes it +dnl unusable with ncurses. However, we don't want to link with gpm unless +dnl ncurses has a dependency, since gpm is normally set up as a shared library, +dnl and the linker will record a dependency. +dnl +dnl The optional parameter gives the root name of the library, in case it is +dnl not installed as the default curses library. That is how the +dnl wide-character version of ncurses is installed. +AC_DEFUN([CF_NCURSES_LIBS], +[AC_REQUIRE([CF_NCURSES_CPPFLAGS]) + +cf_nculib_root=ifelse($1,,ncurses,$1) + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +AC_CHECK_LIB(gpm,Gpm_Open, + [AC_CHECK_LIB(gpm,initscr, + [LIBS="$cf_ncurses_SAVE"], + [cf_ncurses_LIBS="-lgpm"])]) + +case "$host_os" in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it is static). + if test "$cf_nculib_root" = ncurses ; then + AC_CHECK_LIB(mytinfo,tgoto,[cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS"]) + fi + ;; +esac + +CF_ADD_LIBS($cf_ncurses_LIBS) + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + CF_ADD_LIBS(-l$cf_nculib_root) +else + CF_FIND_LIBRARY($cf_nculib_root,$cf_nculib_root, + [#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr()], + initscr) +fi + +if test -n "$cf_ncurses_LIBS" ; then + AC_MSG_CHECKING(if we can link $cf_nculib_root without $cf_ncurses_LIBS) + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + AC_TRY_LINK([#include <${cf_cv_ncurses_header:-curses.h}>], + [initscr(); mousemask(0,0); tigetstr((char *)0);], + [AC_MSG_RESULT(yes)], + [AC_MSG_RESULT(no) + LIBS="$cf_ncurses_SAVE"]) +fi + +CF_UPPER(cf_nculib_ROOT,HAVE_LIB$cf_nculib_root) +AC_DEFINE_UNQUOTED($cf_nculib_ROOT) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_PTHREADS version: 2 updated: 2016/04/22 05:07:41 +dnl ------------------- +dnl Use this followup check to ensure that we link with pthreads if ncurses +dnl uses it. +AC_DEFUN([CF_NCURSES_PTHREADS],[ +: ${cf_nculib_root:=ifelse($1,,ncurses,$1)} +AC_CHECK_LIB($cf_nculib_root,_nc_init_pthreads, + cf_cv_ncurses_pthreads=yes, + cf_cv_ncurses_pthreads=no) +if test "$cf_cv_ncurses_pthreads" = yes +then + CF_ADD_LIBS(-lpthread) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_VERSION version: 16 updated: 2020/12/31 20:19:42 +dnl ------------------ +dnl Check for the version of ncurses, to aid in reporting bugs, etc. +dnl Call CF_CURSES_CPPFLAGS first, or CF_NCURSES_CPPFLAGS. We don't use +dnl AC_REQUIRE since that does not work with the shell's if/then/else/fi. +AC_DEFUN([CF_NCURSES_VERSION], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_CACHE_CHECK(for ncurses version, cf_cv_ncurses_version,[ + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + AC_TRY_RUN([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <stdio.h> +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +}],[ + cf_cv_ncurses_version=`cat $cf_tempfile`],,[ + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" <<EOF +#include <${cf_cv_ncurses_header:-curses.h}> +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&AC_FD_CC | grep '^Autoconf ' >conftest.out" + AC_TRY_EVAL(cf_try) + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[[^"]]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi +]) + rm -f "$cf_tempfile" +]) +test "$cf_cv_ncurses_version" = no || AC_DEFINE(NCURSES,1,[Define to 1 if we are using ncurses headers/libraries]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NCURSES_WRAP_PREFIX version: 1 updated: 2009/03/28 16:08:10 +dnl ---------------------- +dnl Check for ncurses "wrap-prefix" used for public variables which have been +dnl wrapped with a function to help with concurrency control. +AC_DEFUN([CF_NCURSES_WRAP_PREFIX], +[ +AC_MSG_CHECKING(for ncurses wrap-prefix) +AC_ARG_WITH(ncurses-wrap-prefix, + [ --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables], + [NCURSES_WRAP_PREFIX=$withval], + [NCURSES_WRAP_PREFIX=_nc_]) +AC_MSG_RESULT($NCURSES_WRAP_PREFIX) + +AC_SUBST(NCURSES_WRAP_PREFIX) +]) +dnl --------------------------------------------------------------------------- +dnl CF_NETBSD_FORM_H version: 2 updated: 2012/10/06 16:39:58 +dnl ---------------- +dnl Check for NetBSD's form.h, which is incompatible with SVr4 and ncurses. +dnl Some workarounds are needed in client programs to allow them to compile. +AC_DEFUN([CF_NETBSD_FORM_H],[ +AC_CACHE_CHECK(for NetBSD form.h,cf_cv_netbsd_form_h,[ +AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <form.h> +],[ + FORM *form; + int y = current_field(form)->cursor_ypos; + int x = current_field(form)->cursor_xpos; +],[cf_cv_netbsd_form_h=yes +],[cf_cv_netbsd_form_h=no]) +]) + +test "$cf_cv_netbsd_form_h" = yes && AC_DEFINE(HAVE_NETBSD_FORM_H,1,[Define to 1 if we appear to be using NetBSD form.h]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NETBSD_MENU_H version: 2 updated: 2012/10/06 16:39:58 +dnl ---------------- +dnl Check for NetBSD's menu.h, which is incompatible with SVr4 and ncurses. +dnl Some workarounds are needed in client programs to allow them to compile. +AC_DEFUN([CF_NETBSD_MENU_H],[ +AC_CACHE_CHECK(for NetBSD menu.h,cf_cv_netbsd_menu_h,[ +AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <menu.h> +],[ + MENU *menu; + int y = menu->max_item_width; +],[cf_cv_netbsd_menu_h=yes +],[cf_cv_netbsd_menu_h=no]) +]) + +test "$cf_cv_netbsd_menu_h" = yes && AC_DEFINE(HAVE_NETBSD_MENU_H,1,[Define to 1 if we appear to be using NetBSD menu.h]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_NO_LEAKS_OPTION version: 9 updated: 2021/06/13 19:45:41 +dnl ------------------ +dnl see CF_WITH_NO_LEAKS +dnl +dnl $1 = option/name +dnl $2 = help-text +dnl $3 = symbol to define if the option is set +dnl $4 = additional actions to take if the option is set +AC_DEFUN([CF_NO_LEAKS_OPTION],[ +AC_MSG_CHECKING(if you want to use $1 for testing) +AC_ARG_WITH($1, + [$2], + [case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_$1=yes + AC_DEFINE_UNQUOTED($3,1,"Define to 1 if you want to use $1 for testing.")ifelse([$4],,[ + $4 +]) + ;; + esac], + [with_$1=]) +AC_MSG_RESULT(${with_$1:-no}) + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + CF_ADD_CFLAGS([-g]) + ;; + esac + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PATH_SYNTAX version: 18 updated: 2020/12/31 18:40:20 +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],[ +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".[$]$1" in +(.\[$]\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[[a-zA-Z]]:[[\\/]]*) # OS/2 EMX + ;; +(.\[$]\{*prefix\}*|.\[$]\{*dir\}*) + eval $1="[$]$1" + case ".[$]$1" in + (.NONE/*) + $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + $1=`echo "[$]$1" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + ifelse([$2],,[AC_MSG_ERROR([expected a pathname, not \"[$]$1\"])],$2) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PDCURSES_X11 version: 15 updated: 2021/01/02 09:31:20 +dnl --------------- +dnl Configure for PDCurses' X11 library +AC_DEFUN([CF_PDCURSES_X11],[ +AC_REQUIRE([CF_X_ATHENA]) + +CF_ACVERSION_CHECK(2.52, + [AC_CHECK_TOOLS(XCURSES_CONFIG, xcurses-config, none)], + [AC_PATH_PROGS(XCURSES_CONFIG, xcurses-config, none)]) + +if test "$XCURSES_CONFIG" != none ; then + +CF_ADD_CFLAGS(`$XCURSES_CONFIG --cflags`) +CF_ADD_LIBS(`$XCURSES_CONFIG --libs`) + +cf_cv_lib_XCurses=yes + +else + +LDFLAGS="$LDFLAGS $X_LIBS" +CF_CHECK_CFLAGS($X_CFLAGS) +AC_CHECK_LIB(X11,XOpenDisplay, + [CF_ADD_LIBS(-lX11)],, + [$X_PRE_LIBS $LIBS $X_EXTRA_LIBS]) +AC_CACHE_CHECK(for XCurses library,cf_cv_lib_XCurses,[ +CF_ADD_LIBS(-lXCurses) +AC_TRY_LINK([ +#include <xcurses.h> +char *XCursesProgramName = "test"; +],[XCursesExit();], +[cf_cv_lib_XCurses=yes], +[cf_cv_lib_XCurses=no]) +]) + +fi + +if test "$cf_cv_lib_XCurses" = yes ; then + AC_DEFINE(UNIX,1,[Define to 1 if using PDCurses on Unix]) + AC_DEFINE(XCURSES,1,[Define to 1 if using PDCurses on Unix]) + AC_CHECK_HEADER(xcurses.h, AC_DEFINE(HAVE_XCURSES,1,[Define to 1 if using PDCurses on Unix])) +else + AC_MSG_ERROR(Cannot link with XCurses) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PKG_CONFIG version: 12 updated: 2021/10/10 20:18:09 +dnl ------------- +dnl Check for the package-config program, unless disabled by command-line. +dnl +dnl Sets $PKG_CONFIG to the pathname of the pkg-config program. +AC_DEFUN([CF_PKG_CONFIG], +[ +AC_MSG_CHECKING(if you want to use pkg-config) +AC_ARG_WITH(pkg-config, + [ --with-pkg-config{=path} enable/disable use of pkg-config], + [cf_pkg_config=$withval], + [cf_pkg_config=yes]) +AC_MSG_RESULT($cf_pkg_config) + +case "$cf_pkg_config" in +(no) + PKG_CONFIG=none + ;; +(yes) + CF_ACVERSION_CHECK(2.52, + [AC_PATH_TOOL(PKG_CONFIG, pkg-config, none)], + [AC_PATH_PROG(PKG_CONFIG, pkg-config, none)]) + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + CF_PATH_SYNTAX(PKG_CONFIG) +elif test "x$cf_pkg_config" != xno ; then + AC_MSG_WARN(pkg-config is not installed) +fi + +AC_SUBST(PKG_CONFIG) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_C_SOURCE version: 11 updated: 2018/12/31 20:46:17 +dnl ----------------- +dnl Define _POSIX_C_SOURCE to the given level, and _POSIX_SOURCE if needed. +dnl +dnl POSIX.1-1990 _POSIX_SOURCE +dnl POSIX.1-1990 and _POSIX_SOURCE and +dnl POSIX.2-1992 C-Language _POSIX_C_SOURCE=2 +dnl Bindings Option +dnl POSIX.1b-1993 _POSIX_C_SOURCE=199309L +dnl POSIX.1c-1996 _POSIX_C_SOURCE=199506L +dnl X/Open 2000 _POSIX_C_SOURCE=200112L +dnl +dnl Parameters: +dnl $1 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_POSIX_C_SOURCE], +[AC_REQUIRE([CF_POSIX_VISIBLE])dnl + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=ifelse([$1],,199506L,[$1]) + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +CF_REMOVE_DEFINE(cf_trim_CFLAGS,$cf_save_CFLAGS,_POSIX_C_SOURCE) +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>],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif], + [cf_cv_posix_c_source=no], + [cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[[12]]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + AC_TRY_COMPILE([#include <sys/types.h>],[ +#ifdef _POSIX_SOURCE +make an error +#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) + CFLAGS="$cf_trim_CFLAGS" + 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>],[ +#ifndef _POSIX_C_SOURCE +make an error +#endif],, + [cf_cv_posix_c_source=no]) + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + ]) +]) + +if test "$cf_cv_posix_c_source" != no ; then + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + CF_ADD_CFLAGS($cf_cv_posix_c_source) +fi + +fi # cf_cv_posix_visible + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_POSIX_VISIBLE version: 1 updated: 2018/12/31 20:46:17 +dnl ---------------- +dnl POSIX documents test-macros which an application may set before any system +dnl headers are included to make features available. +dnl +dnl Some BSD platforms (originally FreeBSD, but copied by a few others) +dnl diverged from POSIX in 2002 by setting symbols which make all of the most +dnl recent features visible in the system header files unless the application +dnl overrides the corresponding test-macros. Doing that introduces portability +dnl problems. +dnl +dnl This macro makes a special check for the symbols used for this, to avoid a +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>],[ +#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]) +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PRG_RULES version: 2 updated: 2021/01/01 13:31:04 +dnl ------------ +dnl Append definitions and rules for the given programs to the subdirectory +dnl Makefiles, and the recursion rule for the top-level Makefile. +dnl +dnl parameters +dnl $1 = script to run +dnl $2 = list of subdirectories +dnl +dnl variables +dnl $AWK +AC_DEFUN([CF_PRG_RULES], +[ +for cf_dir in $2 +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + elif test -f "$srcdir/$cf_dir/programs" ; then + $AWK -f $1 "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile + fi +done + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_CC version: 5 updated: 2019/12/31 08:53:54 +dnl ---------- +dnl standard check for CC, plus followup sanity checks +dnl $1 = optional parameter to pass to AC_PROG_CC to specify compiler name +AC_DEFUN([CF_PROG_CC],[ +CF_ACVERSION_CHECK(2.53, + [AC_MSG_WARN(this will incorrectly handle gnatgcc choice) + AC_REQUIRE([AC_PROG_CC])], + []) +ifelse($1,,[AC_PROG_CC],[AC_PROG_CC($1)]) +CF_GCC_VERSION +CF_ACVERSION_CHECK(2.52, + [AC_PROG_CC_STDC], + [CF_ANSI_CC_REQD]) +CF_CC_ENV_FLAGS +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_INSTALL version: 10 updated: 2021/01/04 19:33:05 +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 +(/*) + ;; +(*) + CF_DIRNAME(cf_dir,$INSTALL) + test -z "$cf_dir" && cf_dir=. + INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`" + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_PROG_LINT version: 4 updated: 2019/11/20 18:55:37 +dnl ------------ +AC_DEFUN([CF_PROG_LINT], +[ +AC_CHECK_PROGS(LINT, lint cppcheck splint) +case "x$LINT" in +(xcppcheck|x*/cppcheck) + test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" + ;; +esac +AC_SUBST(LINT_OPTS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_CFLAGS version: 3 updated: 2021/09/05 17:25:40 +dnl ---------------- +dnl Remove a given option from CFLAGS/CPPFLAGS +dnl $1 = option to remove +dnl $2 = variable to update +dnl $3 = nonempty to allow verbose message +define([CF_REMOVE_CFLAGS], +[ +cf_tmp_cflag=`echo "x$1" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x[$]$2" | sed -e 's/^.//' -e 's/[[ ]][[ ]]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[[^ ]][[^ ]]*\\)\?%%" -e 's/^[[ ]]*//' -e 's%[[ ]][[ ]]*-D% -D%g' -e 's%[[ ]][[ ]]*-I% -I%g'` + test "[$]$2" != "$cf_old_cflag" || break + ifelse([$3],,,[CF_VERBOSE(removing old option $1 from $2)]) + $2="$cf_old_cflag" +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_REMOVE_DEFINE version: 3 updated: 2010/01/09 11:05:50 +dnl ---------------- +dnl Remove all -U and -D options that refer to the given symbol from a list +dnl of C compiler options. This works around the problem that not all +dnl compilers process -U and -D options from left-to-right, so a -U option +dnl cannot be used to cancel the effect of a preceding -D option. +dnl +dnl $1 = target (which could be the same as the source variable) +dnl $2 = source (including '$') +dnl $3 = symbol to remove +define([CF_REMOVE_DEFINE], +[ +$1=`echo "$2" | \ + sed -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[[ ]]/ /g' \ + -e 's/-[[UD]]'"$3"'\(=[[^ ]]*\)\?[$]//g'` +])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 +dnl $1 = name of current macro +define([CF_RESTORE_XTRA_FLAGS], +[ +LIBS="$cf_save_LIBS_$1" +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 ------------- +AC_DEFUN([CF_RPATH_HACK], +[AC_REQUIRE([AC_PROG_FGREP])dnl +AC_REQUIRE([CF_LD_RPATH_OPT])dnl + +AC_MSG_CHECKING(for updated LDFLAGS) +if test -n "$LD_RPATH_OPT" ; then + AC_MSG_RESULT(maybe) + + AC_CHECK_PROGS(cf_ldd_prog,ldd,no) + cf_rpath_list="/usr/lib /lib" + if test "$cf_ldd_prog" != no + then + cf_rpath_oops= + +AC_TRY_LINK([#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`]) + + # If we passed the link-test, but get a "not found" on a given library, + # this could be due to inept reconfiguration of gcc to make it only + # partly honor /usr/local/lib (or whatever). Sometimes this behavior + # is intentional, e.g., installing gcc in /usr/bin and suppressing the + # /usr/local libraries. + if test -n "$cf_rpath_oops" + then + for cf_rpath_src in $cf_rpath_oops + do + for cf_rpath_dir in \ + /usr/local \ + /usr/pkg \ + /opt/sfw + do + if test -f "$cf_rpath_dir/lib/$cf_rpath_src" + then + CF_VERBOSE(...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src) + LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" + break + fi + done + done + fi + fi + + CF_VERBOSE(...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS) + + CF_RPATH_HACK_2(LDFLAGS) + CF_RPATH_HACK_2(LIBS) + + CF_VERBOSE(...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS) +else + AC_MSG_RESULT(no) +fi +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_RPATH_HACK_2 version: 8 updated: 2021/01/01 13:31:04 +dnl --------------- +dnl Do one set of substitutions for CF_RPATH_HACK, adding an rpath option to +dnl EXTRA_LDFLAGS for each -L option found. +dnl +dnl $cf_rpath_list contains a list of directories to ignore. +dnl +dnl $1 = variable name to update. The LDFLAGS variable should be the only one, +dnl but LIBS often has misplaced -L options. +AC_DEFUN([CF_RPATH_HACK_2], +[ +CF_VERBOSE(...checking $1 [$]$1) + +cf_rpath_dst= +for cf_rpath_src in [$]$1 +do + case "$cf_rpath_src" in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + CF_VERBOSE(...Filter $cf_rpath_src ->$cf_rpath_tmp) + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +$1=$cf_rpath_dst + +CF_VERBOSE(...checked $1 [$]$1) +AC_SUBST(EXTRA_LDFLAGS) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SAVE_XTRA_FLAGS version: 1 updated: 2020/01/11 16:46:44 +dnl ------------------ +dnl Use this macro to save CFLAGS/CPPFLAGS/LIBS before checks against X headers +dnl and libraries which do not update those variables. +dnl +dnl $1 = name of current macro +define([CF_SAVE_XTRA_FLAGS], +[ +cf_save_LIBS_$1="$LIBS" +cf_save_CFLAGS_$1="$CFLAGS" +cf_save_CPPFLAGS_$1="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[[IUD]]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SIGWINCH version: 6 updated: 2021/01/01 13:31:04 +dnl ----------- +dnl Use this macro after CF_XOPEN_SOURCE, but do not require it (not all +dnl programs need this test). +dnl +dnl This is really a Mac OS X 10.4.3 workaround. Defining _POSIX_C_SOURCE +dnl forces SIGWINCH to be undefined (breaks xterm, ncurses). Oddly, the struct +dnl winsize declaration is left alone - we may revisit this if Apple choose to +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([ +#include <sys/types.h> +#include <sys/signal.h> +],[int x = SIGWINCH; (void)x], + [cf_cv_define_sigwinch=yes], + [AC_TRY_COMPILE([ +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include <sys/types.h> +#include <sys/signal.h> +],[int x = SIGWINCH; (void)x], + [cf_cv_define_sigwinch=maybe], + [cf_cv_define_sigwinch=no]) +]) +]) + +if test "$cf_cv_define_sigwinch" = maybe ; then +AC_CACHE_CHECK(for actual SIGWINCH definition,cf_cv_fixup_sigwinch,[ +cf_cv_fixup_sigwinch=unknown +cf_sigwinch=32 +while test "$cf_sigwinch" != 1 +do + AC_TRY_COMPILE([ +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include <sys/types.h> +#include <sys/signal.h> +],[ +#if SIGWINCH != $cf_sigwinch +make an error +#endif +int x = SIGWINCH; (void)x], + [cf_cv_fixup_sigwinch=$cf_sigwinch + break]) + +cf_sigwinch="`expr "$cf_sigwinch" - 1`" +done +]) + + if test "$cf_cv_fixup_sigwinch" != unknown ; then + CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SIG_ATOMIC_T version: 5 updated: 2020/03/10 18:53:47 +dnl --------------- +dnl signal handler, but there are some gcc dependencies in that recommendation. +dnl Try anyway. +AC_DEFUN([CF_SIG_ATOMIC_T], +[ +AC_MSG_CHECKING(for signal global datatype) +AC_CACHE_VAL(cf_cv_sig_atomic_t,[ + for cf_type in \ + "volatile sig_atomic_t" \ + "sig_atomic_t" \ + "int" + do + AC_TRY_COMPILE([ +#include <sys/types.h> +#include <signal.h> +#include <stdio.h> + +extern $cf_type x; +$cf_type x; +static void handler(int sig) +{ + (void)sig; + x = 5; +}], + [signal(SIGINT, handler); + x = 1], + [cf_cv_sig_atomic_t=$cf_type], + [cf_cv_sig_atomic_t=no]) + test "$cf_cv_sig_atomic_t" != no && break + done + ]) +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_SUBDIR_PATH version: 7 updated: 2014/12/04 04:33:06 +dnl -------------- +dnl Construct a search-list for a nonstandard header/lib-file +dnl $1 = the variable to return as result +dnl $2 = the package name +dnl $3 = the subdirectory, e.g., bin, include or lib +AC_DEFUN([CF_SUBDIR_PATH], +[ +$1= + +CF_ADD_SUBDIR_PATH($1,$2,$3,$prefix,NONE) + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + [$]HOME +do + CF_ADD_SUBDIR_PATH($1,$2,$3,$cf_subdir_prefix,$prefix) +done +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_SYS_TIME_SELECT version: 6 updated: 2015/04/18 08:56:57 +dnl ------------------ +dnl Check if we can include <sys/time.h> with <sys/select.h>; this breaks on +dnl older SCO configurations. +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([ +#include <sys/types.h> +#ifdef HAVE_SYS_TIME_H +#include <sys/time.h> +#endif +#ifdef HAVE_SYS_SELECT_H +#include <sys/select.h> +#endif +],[],[cf_cv_sys_time_select=yes], + [cf_cv_sys_time_select=no]) + ]) +AC_MSG_RESULT($cf_cv_sys_time_select) +test "$cf_cv_sys_time_select" = yes && AC_DEFINE(HAVE_SYS_TIME_SELECT,1,[Define to 1 if we can include <sys/time.h> with <sys/select.h>]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TERM_HEADER version: 6 updated: 2021/01/02 09:31:20 +dnl -------------- +dnl Look for term.h, which is part of X/Open curses. It defines the interface +dnl to terminfo database. Usually it is in the same include-path as curses.h, +dnl but some packagers change this, breaking various applications. +AC_DEFUN([CF_TERM_HEADER],[ +AC_CACHE_CHECK(for terminfo header, cf_cv_term_header,[ +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[[^.]]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +AC_TRY_COMPILE([#include <stdio.h> +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> +],[int x = auto_left_margin; (void)x],[ + cf_cv_term_header="$cf_test"],[ + cf_cv_term_header=unknown + ]) + test "$cf_cv_term_header" != unknown && break +done +]) + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + AC_DEFINE(HAVE_TERM_H,1,[Define to 1 if we have term.h]) + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + AC_DEFINE(HAVE_NCURSES_TERM_H,1,[Define to 1 if we have ncurses/term.h]) + ;; +(ncursesw/term.h) + AC_DEFINE(HAVE_NCURSESW_TERM_H,1,[Define to 1 if we have ncursesw/term.h]) + ;; +esac +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TOP_BUILDDIR version: 2 updated: 2013/07/27 17:38:32 +dnl --------------- +dnl Define a top_builddir symbol, for applications that need an absolute path. +AC_DEFUN([CF_TOP_BUILDDIR], +[ +top_builddir=ifelse($1,,`pwd`,$1) +AC_SUBST(top_builddir) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TPUTS_PROTO version: 4 updated: 2021/01/04 19:45:09 +dnl -------------- +dnl Check for type of function-pointer passed to tputs. Some old +dnl implementations used functions that had different prototypes, making it +dnl hard to compile portable programs using tputs. +AC_DEFUN([CF_TPUTS_PROTO],[ +CF_CURSES_FUNCS(tputs) +if test "x$cf_cv_func_tputs" = xyes +then + cf_done=no + for cf_arg in int char + do + for cf_ret in int void + do + if test "$cf_ret" = void + then + cf_return="/* nothing */" + else + cf_return="return value" + fi + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_cv_term_header> + +static $cf_ret outc($cf_arg value) { $cf_return; } +],[ + tputs("hello", 0, outc); + ${cf_cv_main_return:-return}(0); +],[ + CF_VERBOSE([prototype $cf_ret func($cf_arg value)]) + cat >>confdefs.h <<EOF +#define TPUTS_ARG $cf_arg +#define TPUTS_PROTO(func,value) $cf_ret func(TPUTS_ARG value) +#define TPUTS_RETURN(value) $cf_return +EOF + cf_done=yes + break +]) + done + test "$cf_done" = yes && break + done +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_TRIM_X_LIBS version: 3 updated: 2015/04/12 15:39:00 +dnl -------------- +dnl Trim extra base X libraries added as a workaround for inconsistent library +dnl dependencies returned by "new" pkg-config files. +AC_DEFUN([CF_TRIM_X_LIBS],[ + for cf_trim_lib in Xmu Xt X11 + do + case "$LIBS" in + (*-l$cf_trim_lib\ *-l$cf_trim_lib*) + LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` + CF_VERBOSE(..trimmed $LIBS) + ;; + esac + done +]) +dnl --------------------------------------------------------------------------- +dnl CF_TRY_PKG_CONFIG version: 6 updated: 2020/12/31 10:54:15 +dnl ----------------- +dnl This is a simple wrapper to use for pkg-config, for libraries which may be +dnl available in that form. +dnl +dnl $1 = package name, which may be a shell variable +dnl $2 = extra logic to use, if any, after updating CFLAGS and LIBS +dnl $3 = logic to use if pkg-config does not have the package +AC_DEFUN([CF_TRY_PKG_CONFIG],[ +AC_REQUIRE([CF_PKG_CONFIG]) + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$1"; then + CF_VERBOSE(found package $1) + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$1" 2>/dev/null`" + 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_ADD_CFLAGS($cf_pkgconfig_incs) + CF_ADD_LIBS($cf_pkgconfig_libs) + ifelse([$2],,:,[$2]) +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + ifelse([$3],,:,[$3]) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_TRY_XOPEN_SOURCE version: 3 updated: 2021/08/28 15:20:37 +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([ +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +],[ +#ifndef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_save="$CPPFLAGS" + CF_APPEND_TEXT(CPPFLAGS,-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE) + AC_TRY_COMPILE([ +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> +],[ +#ifdef _XOPEN_SOURCE +make an error +#endif], + [cf_cv_xopen_source=no], + [cf_cv_xopen_source=$cf_XOPEN_SOURCE]) + CPPFLAGS="$cf_save" + ]) +]) + +if test "$cf_cv_xopen_source" != no ; then + CF_REMOVE_DEFINE(CFLAGS,$CFLAGS,_XOPEN_SOURCE) + CF_REMOVE_DEFINE(CPPFLAGS,$CPPFLAGS,_XOPEN_SOURCE) + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + CF_APPEND_CFLAGS($cf_temp_xopen_source) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_UPPER version: 5 updated: 2001/01/29 23:40:59 +dnl -------- +dnl Make an uppercase version of a variable +dnl $1=uppercase($2) +AC_DEFUN([CF_UPPER], +[ +$1=`echo "$2" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_UTF8_LIB version: 9 updated: 2021/05/19 19:35:25 +dnl ----------- +dnl Check for multibyte support, and if not found, utf8 compatibility library +AC_DEFUN([CF_UTF8_LIB], +[ +AC_HAVE_HEADERS(wchar.h) +AC_CACHE_CHECK(for multibyte character support,cf_cv_utf8_lib,[ + cf_save_LIBS="$LIBS" + AC_TRY_LINK([ +#include <stdlib.h> +#include <stdio.h> +#ifdef HAVE_WCHAR_H +#include <wchar.h> +#endif +],[putwc(0,0);], + [cf_cv_utf8_lib=yes], + [CF_FIND_LINKAGE([ +#include <libutf8.h>],[putwc(0,0);],utf8, + [cf_cv_utf8_lib=add-on], + [cf_cv_utf8_lib=no]) +])]) + +# HAVE_LIBUTF8_H is used by ncurses if curses.h is shared between +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + AC_DEFINE(HAVE_LIBUTF8_H,1,[Define to 1 if we should include libutf8.h]) + CF_ADD_INCDIR($cf_cv_header_path_utf8) + CF_ADD_LIBDIR($cf_cv_library_path_utf8) + CF_ADD_LIBS($cf_cv_library_file_utf8) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_VERBOSE version: 3 updated: 2007/07/29 09:55:12 +dnl ---------- +dnl Use AC_VERBOSE w/o the warnings +AC_DEFUN([CF_VERBOSE], +[test -n "$verbose" && echo " $1" 1>&AC_FD_MSG +CF_MSG_LOG([$1]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WCHAR_TYPE version: 4 updated: 2012/10/06 16:39:58 +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 +dnl the type is not found. The first parameter sets a shell variable for the +dnl opposite sense. +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([ +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif], + [$1 state], + [cf_cv_$1=no], + [AC_TRY_COMPILE([ +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#include <wchar.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif], + [$1 value], + [cf_cv_$1=yes], + [cf_cv_$1=unknown])])]) + +if test "$cf_cv_$1" = yes ; then + AC_DEFINE(NEED_WCHAR_H,1,[Define to 1 if we must include wchar.h]) + NEED_WCHAR_H=1 +fi + +ifelse([$2],,,[ +# if we do not find $1 in either place, use substitution to provide a fallback. +if test "$cf_cv_$1" = unknown ; then + $2=1 +fi +]) +ifelse($3,,,[ +# if we find $1 in either place, use substitution to provide a fallback. +if test "$cf_cv_$1" != unknown ; then + $3=1 +fi +]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_CURSES_DIR version: 4 updated: 2021/01/02 19:22:58 +dnl ------------------ +dnl Wrapper for AC_ARG_WITH to specify directory under which to look for curses +dnl libraries. +AC_DEFUN([CF_WITH_CURSES_DIR],[ + +AC_MSG_CHECKING(for specific curses-directory) +AC_ARG_WITH(curses-dir, + [ --with-curses-dir=DIR directory in which (n)curses is installed], + [cf_cv_curses_dir=$withval], + [cf_cv_curses_dir=no]) +AC_MSG_RESULT($cf_cv_curses_dir) + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + CF_PATH_SYNTAX(withval) + if test -d "$cf_cv_curses_dir" + then + CF_ADD_INCDIR($cf_cv_curses_dir/include) + CF_ADD_LIBDIR($cf_cv_curses_dir/lib) + fi +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DBMALLOC version: 7 updated: 2010/06/21 17:26:47 +dnl ---------------- +dnl Configure-option for dbmalloc. The optional parameter is used to override +dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. +AC_DEFUN([CF_WITH_DBMALLOC],[ +CF_NO_LEAKS_OPTION(dbmalloc, + [ --with-dbmalloc test: use Conor Cahill's dbmalloc library], + [USE_DBMALLOC]) + +if test "$with_dbmalloc" = yes ; then + AC_CHECK_HEADER(dbmalloc.h, + [AC_CHECK_LIB(dbmalloc,[debug_malloc]ifelse([$1],,[],[,$1]))]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_DMALLOC version: 7 updated: 2010/06/21 17:26:47 +dnl --------------- +dnl Configure-option for dmalloc. The optional parameter is used to override +dnl the updating of $LIBS, e.g., to avoid conflict with subsequent tests. +AC_DEFUN([CF_WITH_DMALLOC],[ +CF_NO_LEAKS_OPTION(dmalloc, + [ --with-dmalloc test: use Gray Watson's dmalloc library], + [USE_DMALLOC]) + +if test "$with_dmalloc" = yes ; then + AC_CHECK_HEADER(dmalloc.h, + [AC_CHECK_LIB(dmalloc,[dmalloc_debug]ifelse([$1],,[],[,$1]))]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_LIB_BASENAME version: 1 updated: 2020/03/07 20:05:14 +dnl -------------------- +dnl Allow for overriding the basename of a library, i.e., the part to which +dnl prefixes/suffixes are attached. +dnl +dnl $1 = variable to set +dnl $2 = option name +dnl $3 = default basename for library, if omitted use $2 +AC_DEFUN([CF_WITH_LIB_BASENAME], +[ +AC_MSG_CHECKING(for desired basename for $2 library) +AC_ARG_WITH($2-libname, + [ --with-$2-libname=XXX override ifelse($3,,$2,$3) basename of library], + [with_lib_basename=$withval], + [with_lib_basename=ifelse($3,,$2,$3)]) +$1="$with_lib_basename" + +case "x[$]$1" in +(x|xno|xnone|xyes) + $1=ifelse($3,,$2,$3) + ;; +(*) + ;; +esac + +AC_MSG_RESULT([$]$1) +AC_SUBST($1) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_NCURSES_ETC version: 5 updated: 2016/02/20 19:23:20 +dnl ------------------- +dnl Use this macro for programs which use any variant of "curses", e.g., +dnl "ncurses", and "PDCurses". Programs that can use curses and some unrelated +dnl library (such as slang) should use a "--with-screen=XXX" option. +dnl +dnl This does not use AC_DEFUN, because that would tell autoconf to run each +dnl of the macros inside this one - before this macro. +define([CF_WITH_NCURSES_ETC],[ +CF_WITH_CURSES_DIR + +cf_cv_screen=curses + +AC_MSG_CHECKING(for specified curses library type) +AC_ARG_WITH(screen, + [ --with-screen=XXX use specified curses-libraries], + [cf_cv_screen=$withval],[ + +AC_ARG_WITH(ncursesw, + [ --with-ncursesw use wide ncurses-libraries], + [cf_cv_screen=ncursesw],[ + +AC_ARG_WITH(ncurses, + [ --with-ncurses use ncurses-libraries], + [cf_cv_screen=ncurses],[ + +AC_ARG_WITH(pdcurses, + [ --with-pdcurses compile/link with pdcurses X11 library], + [cf_cv_screen=pdcurses],[ + +AC_ARG_WITH(curses-colr, + [ --with-curses-colr compile/link with HPUX 10.x color-curses], + [cf_cv_screen=curses_colr],[ + +AC_ARG_WITH(curses-5lib, + [ --with-curses-5lib compile/link with SunOS 5lib curses], + [cf_cv_screen=curses_5lib])])])])])]) + +AC_MSG_RESULT($cf_cv_screen) + +case $cf_cv_screen in +(curses|curses_*) + CF_CURSES_CONFIG + ;; +(ncursesw*) + CF_UTF8_LIB + CF_NCURSES_CONFIG($cf_cv_screen) + ;; +(ncurses*) + CF_NCURSES_CONFIG($cf_cv_screen) + ;; +(pdcurses) + CF_PDCURSES_X11 + ;; +(*) + AC_MSG_ERROR(unexpected screen-value: $cf_cv_screen) + ;; +esac + +CF_NCURSES_PTHREADS($cf_cv_screen) + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_SCREEN_PDCURSES version: 1 updated: 2020/08/28 16:56:27 +dnl ----------------------- +dnl Call this macro before CF_ENABLE_WARNINGS for configure scripts which use +dnl the "--with-screen=pdcurses" selection. Doing that allows the configure +dnl script to search for the X11/Xt header files to declare (or not) the +dnl symbol needed to enable "const" in those header files. If that configure +dnl option is not used, then those checks are unnecessary. +AC_DEFUN([CF_WITH_SCREEN_PDCURSES],[ +AC_PROVIDE([AC_PATH_XTRA]) +AC_PROVIDE([AC_PATH_X]) +if test -n "$with_screen" && test "x$with_screen" = "xpdcurses" +then + AC_PATH_X + AC_PATH_XTRA +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_VALGRIND version: 1 updated: 2006/12/14 18:00:21 +dnl ---------------- +AC_DEFUN([CF_WITH_VALGRIND],[ +CF_NO_LEAKS_OPTION(valgrind, + [ --with-valgrind test: use valgrind], + [USE_VALGRIND]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_WITH_X11_RGB version: 2 updated: 2019/12/31 08:53:54 +dnl --------------- +dnl Handle configure option "--with-x11-rgb", setting these shell +dnl variables: +dnl +dnl $RGB_PATH is the option value, used for finding the X11 rgb file. +dnl $no_x11_rgb is a "#" (comment) if "--without-x11-rgb" is given. +dnl +dnl Most Linux's use this: +dnl /usr/share/X11/rgb.txt +dnl Debian uses this: +dnl /etc/X11/rgb.txt +dnl DragonFlyBSD ports uses this: +dnl /usr/pkg/lib/X11/rgb.txt +dnl FreeBSD ports use these: +dnl /usr/local/lib/X11/rgb.txt +dnl /usr/local/share/X11/rgb.txt +dnl Mandriva has these: +dnl /usr/lib/X11/rgb.txt +dnl /usr/lib64/X11/rgb.txt +dnl NetBSD has these +dnl /usr/X11R7/lib/X11/rgb.txt +dnl OpenSolaris uses +dnl 32-bit: +dnl /usr/X11/etc/X11/rgb.txt +dnl /usr/X11/share/X11/rgb.txt +dnl /usr/X11/lib/X11/rgb.txt +dnl OSX uses +dnl /opt/local/share/X11/rgb.txt (MacPorts) +dnl /opt/X11/share/X11/rgb.txt (non-ports) +dnl 64-bit: +dnl /usr/X11/etc/X11/rgb.txt +dnl /usr/X11/share/X11/rgb.txt (perhaps) +dnl /usr/X11/lib/amd64/X11/rgb.txt +dnl Solaris10 uses (in this order): +dnl /usr/openwin/lib/X11/rgb.txt +dnl /usr/X11/lib/X11/rgb.txt +AC_DEFUN([CF_WITH_X11_RGB],[ +AC_MSG_CHECKING(for X11 rgb file) +AC_ARG_WITH(x11-rgb, + [ --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt)], + [RGB_PATH=$withval], + [RGB_PATH=auto]) + +if test "x[$]RGB_PATH" = xauto +then + RGB_PATH='${exec_prefix}/lib/X11/rgb.txt' + for cf_path in \ + /opt/local/share/X11/rgb.txt \ + /opt/X11/share/X11/rgb.txt \ + /usr/share/X11/rgb.txt \ + /usr/X11/share/X11/rgb.txt \ + /usr/X11/lib/X11/rgb.txt \ + /usr/lib/X11/rgb.txt \ + /etc/X11/rgb.txt \ + /usr/pkg/lib/X11/rgb.txt \ + /usr/X11R7/lib/X11/rgb.txt \ + /usr/X11R6/lib/X11/rgb.txt \ + /usr/X11R5/lib/X11/rgb.txt \ + /usr/X11R4/lib/X11/rgb.txt \ + /usr/local/lib/X11/rgb.txt \ + /usr/local/share/X11/rgb.txt \ + /usr/lib64/X11/rgb.txt + do + if test -f "$cf_path" ; then + RGB_PATH="$cf_path" + break + fi + done +else + cf_path=$RGB_PATH + CF_PATH_SYNTAX(cf_path) +fi + +AC_MSG_RESULT($RGB_PATH) +AC_SUBST(RGB_PATH) +AC_DEFINE_UNQUOTED(RGB_PATH,"$cf_path",[Define to the full pathname of rgb.txt]) + +no_x11_rgb= +if test "$RGB_PATH" = no +then + no_x11_rgb="#" +fi +AC_SUBST(no_x11_rgb) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_CURSES version: 17 updated: 2021/07/10 12:22:27 +dnl --------------- +dnl Test if we should define X/Open source for curses, needed on Digital Unix +dnl 4.x, to see the extended functions, but breaks on IRIX 6.x. +dnl +dnl The getbegyx() check is needed for HPUX, which omits legacy macros such +dnl as getbegy(). The latter is better design, but the former is standard. +AC_DEFUN([CF_XOPEN_CURSES], +[ +AC_REQUIRE([CF_CURSES_CPPFLAGS])dnl +AC_CACHE_CHECK(definition to turn on extended curses functions,cf_cv_need_xopen_extension,[ +cf_cv_need_xopen_extension=unknown +AC_TRY_LINK([ +#include <stdlib.h> +#include <${cf_cv_ncurses_header:-curses.h}>],[ +#if defined(NCURSES_VERSION_PATCH) +#if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403) + make an error +#endif +#endif +#ifdef NCURSES_WIDECHAR +make an error /* prefer to fall-through on the second checks */ +#endif + cchar_t check; + int check2 = curs_set((int)sizeof(check)); + long x = winnstr(stdscr, "", 0); + int x1, y1; + (void)check2; + getbegyx(stdscr, y1, x1); + (void)x; + (void)y1; + (void)x1; + ], + [cf_cv_need_xopen_extension=none], + [ + for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR + do + AC_TRY_LINK([ +#define $cf_try_xopen_extension 1 +#include <stdlib.h> +#include <${cf_cv_ncurses_header:-curses.h}>],[ + cchar_t check; + int check2 = curs_set((int)sizeof(check)); + long x = winnstr(stdscr, "", 0); + int x1, y1; + getbegyx(stdscr, y1, x1); + (void)check2; + (void)x; + (void)y1; + (void)x1; + ], + [cf_cv_need_xopen_extension=$cf_try_xopen_extension; break]) + done + ]) +]) + +case "$cf_cv_need_xopen_extension" in +(*_*) + CF_APPEND_TEXT(CPPFLAGS,-D$cf_cv_need_xopen_extension) + ;; +esac + +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_XOPEN_SOURCE version: 59 updated: 2021/08/28 15:20:37 +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, +dnl without losing the common non-POSIX features. +dnl +dnl Parameters: +dnl $1 is the nominal value for _XOPEN_SOURCE +dnl $2 is the nominal value for _POSIX_C_SOURCE +AC_DEFUN([CF_XOPEN_SOURCE],[ +AC_REQUIRE([AC_CANONICAL_HOST]) +AC_REQUIRE([CF_POSIX_VISIBLE]) + +if test "$cf_cv_posix_visible" = no; then + +cf_XOPEN_SOURCE=ifelse([$1],,500,[$1]) +cf_POSIX_C_SOURCE=ifelse([$2],,199506L,[$2]) +cf_xopen_source= + +case "$host_os" in +(aix[[4-7]]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[[0-8]].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*|midnightbsd*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[[56]].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + CF_GNU_SOURCE($cf_XOPEN_SOURCE) + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[[6-9]]*) + # 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. + AC_MSG_WARN(this system does not provide usable locale support) + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=700 + ;; +(openbsd[[4-5]]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[[45]]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + CF_TRY_XOPEN_SOURCE + CF_POSIX_C_SOURCE($cf_POSIX_C_SOURCE) + ;; +esac + +if test -n "$cf_xopen_source" ; then + CF_APPEND_CFLAGS($cf_xopen_source,true) +fi + +dnl In anything but the default case, we may have system-specific setting +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>],[ +#ifndef _XOPEN_SOURCE +make an error +#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>],[ +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif], + [cf_XOPEN_SOURCE_set_ok=yes], + [cf_XOPEN_SOURCE_set_ok=no]) + if test "$cf_XOPEN_SOURCE_set_ok" = no + then + AC_MSG_WARN(_XOPEN_SOURCE is lower than requested) + fi + else + CF_TRY_XOPEN_SOURCE + fi +fi +fi # cf_cv_posix_visible +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA version: 24 updated: 2020/03/10 18:53:47 +dnl ----------- +dnl Check for Xaw (Athena) libraries +dnl +dnl Sets $cf_x_athena according to the flavor of Xaw which is used. +AC_DEFUN([CF_X_ATHENA], +[ +cf_x_athena=${cf_x_athena:-Xaw} + +AC_MSG_CHECKING(if you want to link with Xaw 3d library) +withval= +AC_ARG_WITH(Xaw3d, + [ --with-Xaw3d link with Xaw 3d library]) +if test "$withval" = yes ; then + cf_x_athena=Xaw3d + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with Xaw 3d xft library) +withval= +AC_ARG_WITH(Xaw3dxft, + [ --with-Xaw3dxft link with Xaw 3d xft library]) +if test "$withval" = yes ; then + cf_x_athena=Xaw3dxft + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with neXT Athena library) +withval= +AC_ARG_WITH(neXtaw, + [ --with-neXtaw link with neXT Athena library]) +if test "$withval" = yes ; then + cf_x_athena=neXtaw + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +AC_MSG_CHECKING(if you want to link with Athena-Plus library) +withval= +AC_ARG_WITH(XawPlus, + [ --with-XawPlus link with Athena-Plus library]) +if test "$withval" = yes ; then + cf_x_athena=XawPlus + AC_MSG_RESULT(yes) +else + AC_MSG_RESULT(no) +fi + +cf_x_athena_lib="" + +if test "$PKG_CONFIG" != none ; then + cf_athena_list= + test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" + for cf_athena_pkg in \ + $cf_athena_list \ + ${cf_x_athena} \ + ${cf_x_athena}-devel \ + lib${cf_x_athena} \ + lib${cf_x_athena}-devel + do + CF_TRY_PKG_CONFIG($cf_athena_pkg,[ + cf_x_athena_lib="$cf_pkgconfig_libs" + CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) + AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) + + CF_TRIM_X_LIBS + +AC_CACHE_CHECK(for usable $cf_x_athena/Xmu package,cf_cv_xaw_compat,[ +AC_TRY_LINK([ +#include <X11/Xmu/CharSet.h> +],[ +int check = XmuCompareISOLatin1("big", "small"); +(void)check; +],[cf_cv_xaw_compat=yes],[cf_cv_xaw_compat=no])]) + + if test "$cf_cv_xaw_compat" = no + then + # workaround for broken ".pc" files... + case "$cf_x_athena_lib" in + (*-lXmu*) + ;; + (*) + CF_VERBOSE(work around broken package) + cf_save_xmu="$LIBS" + cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^[ ][ ]*//' -e 's/ .*//'` + CF_TRY_PKG_CONFIG(xmu,[ + LIBS="$cf_save_xmu" + CF_ADD_LIB_AFTER($cf_first_lib,$cf_pkgconfig_libs) + ],[ + CF_ADD_LIB_AFTER($cf_first_lib,-lXmu) + ]) + CF_TRIM_X_LIBS + ;; + esac + fi + + break]) + done +fi + +if test -z "$cf_x_athena_lib" ; then + CF_X_EXT + CF_X_TOOLKIT + CF_X_ATHENA_CPPFLAGS($cf_x_athena) + CF_X_ATHENA_LIBS($cf_x_athena) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA_CPPFLAGS version: 9 updated: 2020/12/31 10:54:15 +dnl -------------------- +dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of +dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. +AC_DEFUN([CF_X_ATHENA_CPPFLAGS], +[ +AC_REQUIRE([AC_PATH_XTRA]) +cf_x_athena_root=ifelse([$1],,Xaw,[$1]) +cf_x_athena_inc="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + if test -z "$cf_x_athena_inc" ; then + CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) + cf_test=X11/$cf_x_athena_root/SimpleMenu.h + if test "$cf_path" != default ; then + CF_APPEND_TEXT(CPPFLAGS,-I$cf_path/include) + AC_MSG_CHECKING(for $cf_test in $cf_path) + else + AC_MSG_CHECKING(for $cf_test) + fi + AC_TRY_COMPILE([ +#include <X11/Intrinsic.h> +#include <$cf_test>],[], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_CPPFLAGS]) + if test "$cf_result" = yes ; then + test "$cf_path" = default && cf_x_athena_inc=default + test "$cf_path" != default && cf_x_athena_inc="$cf_path/include" + break + fi + fi +done + +if test -z "$cf_x_athena_inc" ; then + AC_MSG_WARN([Unable to find Athena header files]) +elif test "$cf_x_athena_inc" != default ; then + CF_APPEND_TEXT(CPPFLAGS,-I$cf_x_athena_inc) +fi +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_ATHENA_LIBS version: 13 updated: 2020/01/11 18:16:10 +dnl ---------------- +dnl Normally invoked by CF_X_ATHENA, with $1 set to the appropriate flavor of +dnl the Athena widgets, e.g., Xaw, Xaw3d, neXtaw. +AC_DEFUN([CF_X_ATHENA_LIBS], +[AC_REQUIRE([CF_X_TOOLKIT]) +cf_x_athena_root=ifelse([$1],,Xaw,[$1]) +cf_x_athena_lib="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + for cf_lib in \ + ${cf_x_athena_root} \ + ${cf_x_athena_root}7 \ + ${cf_x_athena_root}6 + do + for cf_libs in \ + "-l$cf_lib -lXmu" \ + "-l$cf_lib -lXpm -lXmu" \ + "-l${cf_lib}_s -lXmu_s" + do + test -n "$cf_x_athena_lib" && break + + CF_SAVE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) + cf_test=XawSimpleMenuAddGlobalActions + test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs" + CF_ADD_LIBS($cf_libs) + AC_MSG_CHECKING(for $cf_test in $cf_libs) + AC_TRY_LINK([ +#include <X11/Intrinsic.h> +#include <X11/$cf_x_athena_root/SimpleMenu.h> +],[ +$cf_test((XtAppContext) 0)], + [cf_result=yes], + [cf_result=no]) + AC_MSG_RESULT($cf_result) + CF_RESTORE_XTRA_FLAGS([CF_X_ATHENA_LIBS]) + + if test "$cf_result" = yes ; then + cf_x_athena_lib="$cf_libs" + break + fi + done # cf_libs + test -n "$cf_x_athena_lib" && break + done # cf_lib +done + +if test -z "$cf_x_athena_lib" ; then + AC_MSG_ERROR( +[Unable to successfully link Athena library (-l$cf_x_athena_root) with test program]) +fi + +CF_ADD_LIBS($cf_x_athena_lib) +CF_UPPER(cf_x_athena_LIBS,HAVE_LIB_$cf_x_athena) +AC_DEFINE_UNQUOTED($cf_x_athena_LIBS) +]) +dnl --------------------------------------------------------------------------- +dnl CF_X_EXT version: 3 updated: 2010/06/02 05:03:05 +dnl -------- +AC_DEFUN([CF_X_EXT],[ +CF_TRY_PKG_CONFIG(Xext,,[ + AC_CHECK_LIB(Xext,XextCreateExtension, + [CF_ADD_LIB(Xext)])]) +])dnl +dnl --------------------------------------------------------------------------- +dnl CF_X_TOOLKIT version: 26 updated: 2021/01/02 09:31:20 +dnl ------------ +dnl Check for X Toolkit libraries +AC_DEFUN([CF_X_TOOLKIT], +[ +AC_REQUIRE([AC_PATH_XTRA]) +AC_REQUIRE([CF_CHECK_CACHE]) + +# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and +# in some cases has installed dummy files in the former, other cases replaced +# it with a link to the new location). This complicates the configure script. +# Check for that pitfall, and recover using pkg-config +# +# If none of these are set, the configuration is almost certainly broken. +if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" +then + CF_TRY_PKG_CONFIG(x11,,[AC_MSG_WARN(unable to find X11 library)]) + CF_TRY_PKG_CONFIG(ice,,[AC_MSG_WARN(unable to find ICE library)]) + CF_TRY_PKG_CONFIG(sm,,[AC_MSG_WARN(unable to find SM library)]) + CF_TRY_PKG_CONFIG(xt,,[AC_MSG_WARN(unable to find Xt library)]) +else + LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS" +fi + +cf_have_X_LIBS=no + +CF_TRY_PKG_CONFIG(xt,[ + + case "x$LIBS" in + (*-lX11*) + ;; + (*) +# we have an "xt" package, but it may omit Xt's dependency on X11 +AC_CACHE_CHECK(for usable X dependency,cf_cv_xt_x11_compat,[ +AC_TRY_LINK([ +#include <X11/Xlib.h> +],[ + int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); + int rc2 = XClearWindow((Display*) 0, (Window) 0); + int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); + int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); +],[cf_cv_xt_x11_compat=yes],[cf_cv_xt_x11_compat=no])]) + if test "$cf_cv_xt_x11_compat" = no + then + CF_VERBOSE(work around broken X11 dependency) + # 2010/11/19 - good enough until a working Xt on Xcb is delivered. + CF_TRY_PKG_CONFIG(x11,,[CF_ADD_LIB_AFTER(-lXt,-lX11)]) + fi + ;; + esac + +AC_CACHE_CHECK(for usable X Toolkit package,cf_cv_xt_ice_compat,[ +AC_TRY_LINK([ +#include <X11/Shell.h> +],[int num = IceConnectionNumber(0); (void) num +],[cf_cv_xt_ice_compat=yes],[cf_cv_xt_ice_compat=no])]) + + if test "$cf_cv_xt_ice_compat" = no + then + # workaround for broken ".pc" files used for X Toolkit. + case "x$X_PRE_LIBS" in + (*-lICE*) + case "x$LIBS" in + (*-lICE*) + ;; + (*) + CF_VERBOSE(work around broken ICE dependency) + CF_TRY_PKG_CONFIG(ice, + [CF_TRY_PKG_CONFIG(sm)], + [CF_ADD_LIB_AFTER(-lXt,$X_PRE_LIBS)]) + ;; + esac + ;; + esac + fi + + cf_have_X_LIBS=yes +],[ + + LDFLAGS="$X_LIBS $LDFLAGS" + CF_CHECK_CFLAGS($X_CFLAGS) + + AC_CHECK_FUNC(XOpenDisplay,,[ + AC_CHECK_LIB(X11,XOpenDisplay, + [CF_ADD_LIB(X11)])]) + + AC_CHECK_FUNC(XtAppInitialize,,[ + AC_CHECK_LIB(Xt, XtAppInitialize, + [AC_DEFINE(HAVE_LIBXT,1,[Define to 1 if we can compile with the Xt library]) + cf_have_X_LIBS=Xt + LIBS="-lXt $LIBS"])]) +]) + +if test "$cf_have_X_LIBS" = no ; then + AC_MSG_WARN( +[Unable to successfully link X Toolkit library (-lXt) with +test program. You will have to check and add the proper libraries by hand +to makefile.]) +fi +])dnl +dnl --------------------------------------------------------------------------- +dnl CF__CURSES_DATA version: 3 updated: 2021/01/04 19:45:09 +dnl --------------- +dnl Attempt to make a copy of a curses data item. This is needed in the +dnl check-data configure tests when using ncurses, because the symbol may be +dnl actually a function return-value. That could happen if the linker is +dnl broken (does not resolve data-only references), or if ncurses is configured +dnl to support re-entrant code. +dnl $1 = target +dnl $2 = source +define([CF__CURSES_DATA],[ +#if defined($2) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT)) + const void *$1 = (const void *)($2); +#else + const void *$1 = &($2); +#endif + fprintf(stderr, "testing linkage of $2:%p\\n", (const void *)$1); +])dnl +dnl --------------------------------------------------------------------------- +dnl CF__CURSES_HEAD version: 2 updated: 2010/10/23 15:54:49 +dnl --------------- +dnl Define a reusable chunk which includes <curses.h> and <term.h> when they +dnl are both available. +define([CF__CURSES_HEAD],[ +#ifdef HAVE_XCURSES +#include <xcurses.h> +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#elif defined(HAVE_TERM_H) +#include <term.h> +#endif +#endif +]) diff --git a/deps/ncurses-6.3/test/back_ground.c b/deps/ncurses-6.3/test/back_ground.c new file mode 100644 index 0000000..1002824 --- /dev/null +++ b/deps/ncurses-6.3/test/back_ground.c @@ -0,0 +1,300 @@ +/**************************************************************************** + * Copyright 2021 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: back_ground.c,v 1.5 2021/02/20 12:23:21 tom Exp $ + */ + +#include <test.priv.h> + +#if USE_WIDEC_SUPPORT + +#define NEED_COLOR_CODE 1 +#define NEED_COLOR_NAME 1 +#include <color_name.h> +#include <dump_window.h> + +static int default_bg = COLOR_BLACK; +static int default_fg = COLOR_WHITE; +static wchar_t wide_fill = L' '; + +static wchar_t +decode_wchar(const char *value) +{ + long result; + char *next = NULL; + int radix = 0; + + if (!strncmp(value, "U+", 2)) { + value += 2; + radix = 16; + } + result = strtol(value, &next, radix); + if (next == value || (next == NULL || *next != '\0')) { + fprintf(stderr, "decoding wchar_t: %s\n", value); + exit(EXIT_FAILURE); + } + return (wchar_t) result; +} + +static void +test_background(void) +{ + NCURSES_COLOR_T f, b; + int row; + int chr; + wchar_t blank[2]; + wchar_t graphics[2]; + cchar_t data; + + if (pair_content(0, &f, &b) == ERR) { + printw("pair 0 contains no data\n"); + } else { + printw("pair 0 contains (%d,%d)\n", (int) f, (int) b); + } + dump_window(stdscr); + + blank[0] = wide_fill; + blank[1] = L'\0'; + + printw("Initializing pair 1 to red/%s\n", color_name(default_bg)); + init_pair(1, COLOR_RED, (NCURSES_COLOR_T) default_bg); + setcchar(&data, blank, A_NORMAL, 1, NULL); + bkgrndset(&data); + printw("RED/BLACK\n"); + dump_window(stdscr); + + printw("Initializing pair 2 to %s/blue\n", color_name(default_fg)); + init_pair(2, (NCURSES_COLOR_T) default_fg, COLOR_BLUE); + setcchar(&data, blank, A_NORMAL, 2, NULL); + bkgrndset(&data); + printw("This line should be %s/blue\n", color_name(default_fg)); + dump_window(stdscr); + + printw("Initializing pair 3 to %s/cyan (ACS_HLINE)\n", color_name(default_fg)); + init_pair(3, (NCURSES_COLOR_T) default_fg, COLOR_CYAN); + printw("...and drawing a box which should be followed by lines\n"); + graphics[0] = ACS_HLINE & A_CHARTEXT; + graphics[1] = L'\0'; + setcchar(&data, graphics, A_ALTCHARSET, 3, NULL); + bkgrndset(&data); + /* + * Characters from vt100 line-drawing should be mapped to line-drawing, + * since A_ALTCHARSET is set in the background, and the character part + * of the background is replaced by the nonblank characters written. + * + * Characters not in the line-drawing range are usually sent as-is. + * + * With SVr4 curses it is possible to rely on this to mix uppercase text + * with the (lowercase) line-drawing characters. ncurses uses some of + * the uppercase characters for encoding thick- and double-lines. + */ + row = 7; + mvprintw(row++, 10, "l"); + for (chr = 0; chr < 32; ++chr) + AddCh(' '); + printw("x\n"); + chr = 32; + while (chr < 128) { + if ((chr % 32) == 0) + mvprintw(row++, 10, "x"); + AddCh((chr == 127) ? ' ' : chr); + if ((++chr % 32) == 0) + printw("x\n"); + } + mvprintw(row++, 10, "m"); + for (chr = 0; chr < 32; ++chr) + AddCh(' '); + printw("j\n"); + dump_window(stdscr); + + setcchar(&data, blank, A_NORMAL, 0, NULL); + bkgrndset(&data); + printw("Default Colors\n"); + dump_window(stdscr); + + printw("Resetting colors to pair 1\n"); + setcchar(&data, blank, A_NORMAL, 1, NULL); + bkgrndset(&data); + printw("This line should be red/%s\n", color_name(default_bg)); + dump_window(stdscr); + + printw("Setting screen to pair 0\n"); + setcchar(&data, blank, A_NORMAL, 0, NULL); + bkgrndset(&data); + dump_window(stdscr); + + printw("Setting screen to pair 1\n"); + setcchar(&data, blank, A_NORMAL, 1, NULL); + bkgrndset(&data); + dump_window(stdscr); + + printw("Setting screen to pair 2\n"); + setcchar(&data, blank, A_NORMAL, 2, NULL); + bkgrndset(&data); + dump_window(stdscr); + + printw("Setting screen to pair 3\n"); + setcchar(&data, blank, A_NORMAL, 3, NULL); + bkgrndset(&data); + dump_window(stdscr); + + printw("Setting screen to pair 0\n"); + setcchar(&data, blank, A_NORMAL, 0, NULL); + bkgrndset(&data); + dump_window(stdscr); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: background [options]" + ,"" + ,"Options:" +#if HAVE_ASSUME_DEFAULT_COLORS + ," -a invoke assume_default_colors, repeat to use in init_pair" +#endif + ," -b XXX specify background color" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors, repeat to use in init_pair" +#endif + ," -f XXX specify foreground color" + ," -l FILE log window-dumps to this file" + ," -w fill background with stipple pattern" + ," -W CODE fill background with this Unicode value" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ +#if HAVE_ASSUME_DEFAULT_COLORS + int a_option = 0; +#endif +#if HAVE_USE_DEFAULT_COLORS + int d_option = 0; +#endif + int n; + + setlocale(LC_ALL, ""); + + while ((n = getopt(argc, argv, "ab:df:l:wW:")) != -1) { + switch (n) { +#if HAVE_ASSUME_DEFAULT_COLORS + case 'a': + ++a_option; + break; +#endif + case 'b': + default_bg = color_code(optarg); + break; +#if HAVE_USE_DEFAULT_COLORS + case 'd': + ++d_option; + break; +#endif + case 'f': + default_fg = color_code(optarg); + break; + case 'l': + if (!open_dump(optarg)) + usage(); + break; + case 'w': + wide_fill = L'\u2591'; + break; + case 'W': + wide_fill = decode_wchar(optarg); + break; + default: + usage(); + } + } +#if HAVE_USE_DEFAULT_COLORS && HAVE_ASSUME_DEFAULT_COLORS + if (a_option && d_option) { + fprintf(stderr, "Use either -a or -d option, but not both\n"); + ExitProgram(EXIT_FAILURE); + } +#endif + + initscr(); + cbreak(); + noecho(); + + if (has_colors()) { + start_color(); + +#if HAVE_USE_DEFAULT_COLORS + if (d_option) { + printw("Using default colors...\n"); + use_default_colors(); + if (d_option > 1) { + default_fg = -1; + default_bg = -1; + } + } +#endif +#if HAVE_ASSUME_DEFAULT_COLORS + if (a_option) { + printw("Using assumed colors %s/%s...\n", + color_name(default_fg), + color_name(default_bg)); + assume_default_colors(default_fg, default_bg); + if (a_option > 1) { + default_fg = -1; + default_bg = -1; + } + } +#endif + + test_background(); + + } else { + printw("This demo requires a color terminal"); + getch(); + } + endwin(); + close_dump(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the wide-curses library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif /* USE_WIDEC_SUPPORT */ diff --git a/deps/ncurses-6.3/test/background.c b/deps/ncurses-6.3/test/background.c new file mode 100644 index 0000000..649ffce --- /dev/null +++ b/deps/ncurses-6.3/test/background.c @@ -0,0 +1,242 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2003-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. * + ****************************************************************************/ +/* + * $Id: background.c,v 1.20 2021/02/13 20:54:08 tom Exp $ + */ + +#define NEED_COLOR_CODE 1 +#define NEED_COLOR_NAME 1 +#include <color_name.h> +#include <dump_window.h> + +static int default_bg = COLOR_BLACK; +static int default_fg = COLOR_WHITE; + +static void +test_background(void) +{ + NCURSES_COLOR_T f, b; + int row; + int chr; + + if (pair_content(0, &f, &b) == ERR) { + printw("pair 0 contains no data\n"); + } else { + printw("pair 0 contains (%d,%d)\n", (int) f, (int) b); + } + dump_window(stdscr); + + printw("Initializing pair 1 to red/%s\n", color_name(default_bg)); + init_pair(1, COLOR_RED, (NCURSES_COLOR_T) default_bg); + bkgdset((chtype) (' ' | COLOR_PAIR(1))); + printw("RED/BLACK\n"); + dump_window(stdscr); + + printw("Initializing pair 2 to %s/blue\n", color_name(default_fg)); + init_pair(2, (NCURSES_COLOR_T) default_fg, COLOR_BLUE); + bkgdset((chtype) (' ' | COLOR_PAIR(2))); + printw("This line should be %s/blue\n", color_name(default_fg)); + dump_window(stdscr); + + printw("Initializing pair 3 to %s/cyan (ACS_HLINE)\n", color_name(default_fg)); + init_pair(3, (NCURSES_COLOR_T) default_fg, COLOR_CYAN); + printw("...and drawing a box which should be followed by lines\n"); + bkgdset(ACS_HLINE | (chtype) COLOR_PAIR(3)); + /* + * Characters from vt100 line-drawing should be mapped to line-drawing, + * since A_ALTCHARSET is set in the background, and the character part + * of the background is replaced by the nonblank characters written. + * + * Characters not in the line-drawing range are usually sent as-is. + * + * With SVr4 curses it is possible to rely on this to mix uppercase text + * with the (lowercase) line-drawing characters. ncurses uses some of + * the uppercase characters for encoding thick- and double-lines. + */ + row = 7; + mvprintw(row++, 10, "l"); + for (chr = 0; chr < 32; ++chr) + AddCh(' '); + printw("x\n"); + chr = 32; + while (chr < 128) { + if ((chr % 32) == 0) + mvprintw(row++, 10, "x"); + AddCh((chr == 127) ? ' ' : chr); + if ((++chr % 32) == 0) + printw("x\n"); + } + mvprintw(row++, 10, "m"); + for (chr = 0; chr < 32; ++chr) + AddCh(' '); + printw("j\n"); + dump_window(stdscr); + + bkgdset((chtype) (' ' | COLOR_PAIR(0))); + printw("Default Colors\n"); + dump_window(stdscr); + + printw("Resetting colors to pair 1\n"); + bkgdset((chtype) (' ' | COLOR_PAIR(1))); + printw("This line should be red/%s\n", color_name(default_bg)); + dump_window(stdscr); + + printw("Setting screen to pair 0\n"); + bkgd((chtype) (' ' | COLOR_PAIR(0))); + dump_window(stdscr); + + printw("Setting screen to pair 1\n"); + bkgd((chtype) (' ' | COLOR_PAIR(1))); + dump_window(stdscr); + + printw("Setting screen to pair 2\n"); + bkgd((chtype) (' ' | COLOR_PAIR(2))); + dump_window(stdscr); + + printw("Setting screen to pair 3\n"); + bkgd((chtype) (' ' | COLOR_PAIR(3))); + dump_window(stdscr); + + printw("Setting screen to pair 0\n"); + bkgd((chtype) (' ' | COLOR_PAIR(0))); + dump_window(stdscr); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: background [options]" + ,"" + ,"Options:" +#if HAVE_ASSUME_DEFAULT_COLORS + ," -a invoke assume_default_colors, repeat to use in init_pair" +#endif + ," -b XXX specify background color" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors, repeat to use in init_pair" +#endif + ," -f XXX specify foreground color" + ," -l FILE log window-dumps to this file" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ +#if HAVE_ASSUME_DEFAULT_COLORS + int a_option = 0; +#endif +#if HAVE_USE_DEFAULT_COLORS + int d_option = 0; +#endif + int n; + + setlocale(LC_ALL, ""); + + while ((n = getopt(argc, argv, "ab:df:l:")) != -1) { + switch (n) { +#if HAVE_ASSUME_DEFAULT_COLORS + case 'a': + ++a_option; + break; +#endif + case 'b': + default_bg = color_code(optarg); + break; +#if HAVE_USE_DEFAULT_COLORS + case 'd': + ++d_option; + break; +#endif + case 'f': + default_fg = color_code(optarg); + break; + case 'l': + if (!open_dump(optarg)) + usage(); + break; + default: + usage(); + } + } +#if HAVE_USE_DEFAULT_COLORS && HAVE_ASSUME_DEFAULT_COLORS + if (a_option && d_option) { + fprintf(stderr, "Use either -a or -d option, but not both\n"); + ExitProgram(EXIT_FAILURE); + } +#endif + + initscr(); + cbreak(); + noecho(); + + if (has_colors()) { + start_color(); + +#if HAVE_USE_DEFAULT_COLORS + if (d_option) { + printw("Using default colors...\n"); + use_default_colors(); + if (d_option > 1) { + default_fg = -1; + default_bg = -1; + } + } +#endif +#if HAVE_ASSUME_DEFAULT_COLORS + if (a_option) { + printw("Using assumed colors %s/%s...\n", + color_name(default_fg), + color_name(default_bg)); + assume_default_colors(default_fg, default_bg); + if (a_option > 1) { + default_fg = -1; + default_bg = -1; + } + } +#endif + + test_background(); + + } else { + printw("This demo requires a color terminal"); + getch(); + } + endwin(); + close_dump(); + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-5.9/test/blue.c b/deps/ncurses-6.3/test/blue.c similarity index 76% rename from deps/ncurses-5.9/test/blue.c rename to deps/ncurses-6.3/test/blue.c index dfe6abf..71b758a 100644 --- a/deps/ncurses-5.9/test/blue.c +++ b/deps/ncurses-6.3/test/blue.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -36,17 +37,17 @@ *****************************************************************************/ /* - * Compile this with the command `cc -O blue.c -lcurses -o blue'. For best - * results, use the ncurses(3) library. On non-Intel machines, SVr4 curses is - * just as good. - * - * $Id: blue.c,v 1.33 2009/10/24 21:03:35 tom Exp $ + * $Id: blue.c,v 1.54 2021/03/20 16:06:15 tom Exp $ */ #include <test.priv.h> #include <time.h> +#if HAVE_LANGINFO_CODESET +#include <langinfo.h> +#endif + #define NOCARD (-1) #define ACE 0 @@ -70,7 +71,7 @@ #define BLACK_ON_WHITE 2 #define BLUE_ON_WHITE 3 -static RETSIGTYPE die(int onsig) GCC_NORETURN; +static GCC_NORETURN void die(int onsig); static int deck_size = PACK_SIZE; /* initial deck */ static int deck[PACK_SIZE]; @@ -97,42 +98,40 @@ static chtype ranks[SUIT_LENGTH][2] = {' ', 'K'} }; -/* Please note, that this is a bad example. - Color values should not be or'ed in. This - only works, because the characters used here - are plain and have no color attribute themselves. */ -#ifdef COLOR_PAIR -#define OR_COLORS(value,pair) ((value) | COLOR_PAIR(pair)) -#else -#define OR_COLORS(value,pair) (value) -#endif +static int letters[4] = +{ + 'h', /* hearts */ + 's', /* spades */ + 'd', /* diamonds */ + 'c', /* clubs */ +}; -#define PC_COLORS(value,pair) (OR_COLORS(value,pair) | A_ALTCHARSET) +#if HAVE_LANGINFO_CODESET -static chtype letters[4] = +#if HAVE_TIGETSTR +static int glyphs[] = { - OR_COLORS('h', RED_ON_WHITE), /* hearts */ - OR_COLORS('s', BLACK_ON_WHITE), /* spades */ - OR_COLORS('d', RED_ON_WHITE), /* diamonds */ - OR_COLORS('c', BLACK_ON_WHITE), /* clubs */ + '\003', /* hearts */ + '\006', /* spades */ + '\004', /* diamonds */ + '\005', /* clubs */ }; +#endif -#if defined(__i386__) && defined(A_ALTCHARSET) && HAVE_TIGETSTR -static chtype glyphs[] = +#if USE_WIDEC_SUPPORT +static int uglyphs[] = { - PC_COLORS('\003', RED_ON_WHITE), /* hearts */ - PC_COLORS('\006', BLACK_ON_WHITE), /* spades */ - PC_COLORS('\004', RED_ON_WHITE), /* diamonds */ - PC_COLORS('\005', BLACK_ON_WHITE), /* clubs */ + 0x2665, /* hearts */ + 0x2660, /* spades */ + 0x2666, /* diamonds */ + 0x2663 /* clubs */ }; -#define USE_CP437 1 -#else -#define USE_CP437 0 -#endif /* __i386__ */ +#endif +#endif /* HAVE_LANGINFO_CODESET */ -static chtype *suits = letters; /* this may change to glyphs below */ +static int *suits = letters; /* this may change to glyphs below */ -static RETSIGTYPE +static void die(int onsig) { (void) signal(onsig, SIG_IGN); @@ -155,14 +154,14 @@ init_vars(void) static void shuffle(int size) { - int i, j, numswaps, swapnum, temp; + int numswaps, swapnum; numswaps = size * 10; /* an arbitrary figure */ for (swapnum = 0; swapnum < numswaps; swapnum++) { - i = rand() % size; - j = rand() % size; - temp = deck[i]; + int i = rand() % size; + int j = rand() % size; + int temp = deck[i]; deck[i] = deck[j]; deck[j] = temp; } @@ -171,11 +170,11 @@ shuffle(int size) static void deal_cards(void) { - int ptr, card = 0, value, csuit, crank, suit, aces[4]; + int card = 0, value, csuit, crank, suit, aces[4]; memset(aces, 0, sizeof(aces)); for (suit = HEARTS; suit <= CLUBS; suit++) { - ptr = freeptr[suit]; + int ptr = freeptr[suit]; grid[ptr++] = NOCARD; /* 1st card space is blank */ while ((ptr % GRID_WIDTH) != 0) { value = deck[card++]; @@ -198,15 +197,41 @@ deal_cards(void) static void printcard(int value) { - (void) addch(' '); - if (value == NOCARD) + AddCh(' '); + if (value == NOCARD) { (void) addstr(" "); - else { - addch(ranks[value % SUIT_LENGTH][0] | COLOR_PAIR(BLUE_ON_WHITE)); - addch(ranks[value % SUIT_LENGTH][1] | COLOR_PAIR(BLUE_ON_WHITE)); - addch(suits[value / SUIT_LENGTH]); + } else { + int which = (value / SUIT_LENGTH); + int isuit = (value % SUIT_LENGTH); + chtype color = (chtype) COLOR_PAIR(((which % 2) == 0) + ? RED_ON_WHITE + : BLACK_ON_WHITE); + + AddCh(ranks[isuit][0] | (chtype) COLOR_PAIR(BLUE_ON_WHITE)); + AddCh(ranks[isuit][1] | (chtype) COLOR_PAIR(BLUE_ON_WHITE)); + +#ifdef NCURSES_VERSION + (attron) ((int) color); /* quieter compiler warnings */ +#else + attron(color); /* PDCurses, etc., either no macro or wrong */ +#endif +#if USE_WIDEC_SUPPORT + { + wchar_t values[2]; + values[0] = (wchar_t) suits[which]; + values[1] = 0; + addwstr(values); + } +#else + AddCh(suits[which]); +#endif +#ifdef NCURSES_VERSION + (attroff) ((int) color); +#else + attroff(color); +#endif } - (void) addch(' '); + AddCh(' '); } static void @@ -315,16 +340,16 @@ play_game(void) } else { char buf[BUFSIZ]; - (void) sprintf(buf, - "Type [%s] to move, r to redraw, q or INTR to quit: ", - live); + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "Type [%s] to move, r to redraw, q or INTR to quit: ", + live); do { move(PROMPTROW, 0); (void) addstr(buf); move(PROMPTROW, (int) strlen(buf)); clrtoeol(); - (void) addch(' '); + AddCh(' '); } while (((c = (char) getch()) < 'a' || c > 'd') && (c != 'r') @@ -364,10 +389,10 @@ play_game(void) static int collect_discards(void) { - int row, col, cardno = 0, finish, gridno; + int row, col, cardno = 0, gridno; for (row = HEARTS; row <= CLUBS; row++) { - finish = 0; + int finish = 0; for (col = 1; col < GRID_WIDTH; col++) { gridno = row * GRID_WIDTH + col; @@ -402,41 +427,58 @@ game_finished(int deal) refresh(); } +#if HAVE_LANGINFO_CODESET +/* + * This program first appeared in ncurses in January 1995. At that point, the + * Linux console was able to display CP437 graphic characters, e.g., in the + * range 0-31. As of 2016, most Linux consoles are running with the UTF-8 + * (partial) support. Incidentally, that makes all of the cards diamonds. + */ +static void +use_pc_display(void) +{ + char *check = nl_langinfo(CODESET); + if (!strcmp(check, "UTF-8")) { +#if USE_WIDEC_SUPPORT + suits = uglyphs; +#endif + } else { +#if HAVE_TIGETSTR + if (!strcmp(check, "IBM437") || + !strcmp(check, "CP437") || + !strcmp(check, "IBM850") || + !strcmp(check, "CP850")) { + char *smacs = tigetstr("smacs"); + char *smpch = tigetstr("smpch"); + /* + * The ncurses library makes this check to decide whether to allow + * the alternate character set for the (normally) nonprinting codes. + */ + if (smacs != 0 && smpch != 0 && !strcmp(smacs, smpch)) { + suits = glyphs; + } + } +#endif + } +} +#else +#define use_pc_display() /* nothing */ +#endif /* HAVE_LANGINFO_CODESET */ + int main(int argc, char *argv[]) { - CATCHALL(die); - setlocale(LC_ALL, ""); - initscr(); + use_pc_display(); + + InitAndCatch(initscr(), die); - /* - * We use COLOR_GREEN because COLOR_BLACK is wired to the wrong thing. - */ start_color(); init_pair(RED_ON_WHITE, COLOR_RED, COLOR_WHITE); init_pair(BLUE_ON_WHITE, COLOR_BLUE, COLOR_WHITE); init_pair(BLACK_ON_WHITE, COLOR_BLACK, COLOR_WHITE); -#ifndef COLOR_PAIR - letters[0] = OR_COLORS('h', RED_ON_WHITE); /* hearts */ - letters[1] = OR_COLORS('s', BLACK_ON_WHITE); /* spades */ - letters[2] = OR_COLORS('d', RED_ON_WHITE); /* diamonds */ - letters[3] = OR_COLORS('c', BLACK_ON_WHITE); /* clubs */ -#if USE_CP437 - glyphs[0] = PC_COLORS('\003', RED_ON_WHITE); /* hearts */ - glyphs[1] = PC_COLORS('\006', BLACK_ON_WHITE); /* spades */ - glyphs[2] = PC_COLORS('\004', RED_ON_WHITE); /* diamonds */ - glyphs[3] = PC_COLORS('\005', BLACK_ON_WHITE); /* clubs */ -#endif -#endif - -#if USE_CP437 - if (tigetstr("smpch")) - suits = glyphs; -#endif /* USE_CP437 */ - cbreak(); if (argc == 2) diff --git a/deps/ncurses-5.9/test/bs.6 b/deps/ncurses-6.3/test/bs.6 similarity index 94% rename from deps/ncurses-5.9/test/bs.6 rename to deps/ncurses-6.3/test/bs.6 index 657f538..3bb1f10 100644 --- a/deps/ncurses-5.9/test/bs.6 +++ b/deps/ncurses-6.3/test/bs.6 @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998,2006 Free Software Foundation, Inc. * +.\" Copyright 2020,2021 Thomas E. Dickey * +.\" Copyright 1998,2006 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 * @@ -26,7 +27,7 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: bs.6,v 1.2 2006/04/22 22:42:44 tom Exp $ +.\" $Id: bs.6,v 1.4 2021/06/17 21:20:30 tom Exp $ .TH BATTLESHIPS 6 "Aug 23, 1989" .SH NAME bs \- battleships game @@ -44,7 +45,7 @@ may be used to ignore the current position and randomly place your currently selected ship. The `R' command will place all remaining ships randomly. The ^L command (form feed, ASCII 12) will force a screen redraw). .PP -The command-line arguments control game modes. +The command-line arguments control game modes. .nf -b selects a `blitz' variant diff --git a/deps/ncurses-5.9/test/bs.c b/deps/ncurses-6.3/test/bs.c similarity index 91% rename from deps/ncurses-5.9/test/bs.c rename to deps/ncurses-6.3/test/bs.c index ee7f227..0a074bb 100644 --- a/deps/ncurses-5.9/test/bs.c +++ b/deps/ncurses-6.3/test/bs.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -25,7 +26,7 @@ * sale, use or other dealings in this Software without prior written * * authorization. * ****************************************************************************/ -/* +/* * bs.c - original author: Bruce Holloway * salvo option by: Chuck A DeGaul * with improved user interface, autoconfiguration and code cleanup @@ -34,7 +35,7 @@ * v2.0 featuring strict ANSI/POSIX conformance, November 1993. * v2.1 with ncurses mouse support, September 1995 * - * $Id: bs.c,v 1.52 2010/11/13 20:07:52 tom Exp $ + * $Id: bs.c,v 1.77 2021/06/17 21:11:08 tom Exp $ */ #include <test.priv.h> @@ -64,6 +65,8 @@ static int getcoord(int); #define CTRLC '\003' /* used as terminate command */ #define FF '\014' /* used as redraw command */ +#define is_QUIT(c) ((c) == CTRLC || (c) == QUIT) + /* coordinate handling */ #define BWIDTH 10 #define BDEPTH 10 @@ -110,21 +113,24 @@ static char sub[] = "Submarine"; static char destroy[] = "Destroyer"; static char ptboat[] = "PT Boat"; -static char name[40]; +static char *your_name; static char dftname[] = "stranger"; /* direction constants */ -#define E 0 -#define SE 1 -#define S 2 -#define SW 3 -#define W 4 -#define NW 5 -#define N 6 -#define NE 7 -static int xincr[8] = +typedef enum { + dir_E = 0 + ,dir_SE + ,dir_S + ,dir_SW + ,dir_W + ,dir_NW + ,dir_N + ,dir_NE + ,dir_MAX +} DIRECTIONS; +static int xincr[dir_MAX + 2] = {1, 1, 0, -1, -1, -1, 0, 1}; -static int yincr[8] = +static int yincr[dir_MAX + 2] = {0, 1, 1, 1, 0, -1, -1, -1}; /* current ship position and direction */ @@ -145,6 +151,7 @@ static bool checkplace(int b, ship_t * ss, int vis); #define SHIPIT(name, symbol, length) { name, 0, symbol, length, 0,0, 0, FALSE } +/* "ply=player", "cpu=computer" */ static ship_t plyship[SHIPTYPES] = { SHIPIT(carrier, 'A', 5), @@ -174,9 +181,9 @@ static int salvo, blitz, closepack; #define PR (void)addstr -static RETSIGTYPE uninitgame(int sig) GCC_NORETURN; +static GCC_NORETURN void uninitgame(int sig); -static RETSIGTYPE +static void uninitgame(int sig GCC_UNUSED) /* end the game, either normally or due to signal */ { @@ -185,6 +192,7 @@ uninitgame(int sig GCC_UNUSED) (void) reset_shell_mode(); (void) echo(); (void) endwin(); + free(your_name); ExitProgram(sig ? EXIT_FAILURE : EXIT_SUCCESS); } @@ -214,19 +222,19 @@ announceopts(void) static void intro(void) { - char *tmpname; + const char *tmpname; srand((unsigned) (time(0L) + getpid())); /* Kick the random number generator */ - CATCHALL(uninitgame); + InitAndCatch(initscr(), uninitgame); - if ((tmpname = getlogin()) != 0) { - (void) strcpy(name, tmpname); - name[0] = (char) toupper(UChar(name[0])); - } else - (void) strcpy(name, dftname); + if ((tmpname = getlogin()) != 0 && + (your_name = strdup(tmpname)) != 0) { + your_name[0] = (char) toupper(UChar(your_name[0])); + } else { + your_name = strdup(dftname); + } - (void) initscr(); keypad(stdscr, TRUE); (void) def_prog_mode(); (void) nonl(); @@ -305,7 +313,7 @@ placeship(int b, ship_t * ss, int vis) board[b][newx][newy] = ss->symbol; if (vis) { pgoto(newy, newx); - (void) addch((chtype) ss->symbol); + AddCh(ss->symbol); } } ss->hits = 0; @@ -323,9 +331,9 @@ randomplace(int b, ship_t * ss) { do { - ss->dir = rnd(2) ? E : S; - ss->x = rnd(BWIDTH - (ss->dir == E ? ss->length : 0)); - ss->y = rnd(BDEPTH - (ss->dir == S ? ss->length : 0)); + ss->dir = rnd(2) ? dir_E : dir_S; + ss->x = rnd(BWIDTH - (ss->dir == dir_E ? ss->length : 0)); + ss->y = rnd(BDEPTH - (ss->dir == dir_S ? ss->length : 0)); } while (!checkplace(b, ss, FALSE)); } @@ -370,14 +378,14 @@ initgame(void) if (has_colors()) attron(COLOR_PAIR(COLOR_BLUE)); #endif /* A_COLOR */ - (void) addch(' '); + AddCh(' '); for (j = 0; j < BWIDTH; j++) (void) addstr(" . "); #ifdef A_COLOR (void) attrset(0); #endif /* A_COLOR */ - (void) addch(' '); - (void) addch((chtype) (i + 'A')); + AddCh(' '); + AddCh(i + 'A'); } MvAddStr(PYBASE + BDEPTH, PXBASE - 3, numbers); MvAddStr(CYBASE - 2, CXBASE + 7, "Hit/Miss Board"); @@ -388,14 +396,14 @@ initgame(void) if (has_colors()) attron(COLOR_PAIR(COLOR_BLUE)); #endif /* A_COLOR */ - (void) addch(' '); + AddCh(' '); for (j = 0; j < BWIDTH; j++) (void) addstr(" . "); #ifdef A_COLOR (void) attrset(0); #endif /* A_COLOR */ - (void) addch(' '); - (void) addch((chtype) (i + 'A')); + AddCh(' '); + AddCh(i + 'A'); } MvAddStr(CYBASE + BDEPTH, CXBASE - 3, numbers); @@ -426,10 +434,11 @@ initgame(void) placeship(COMPUTER, ss, FALSE); } - ss = (ship_t *) NULL; do { char c, docked[SHIPTYPES + 2], *cp = docked; + ss = (ship_t *) NULL; + /* figure which ships still wait to be placed */ *cp++ = 'R'; for (i = 0; i < SHIPTYPES; i++) @@ -442,7 +451,7 @@ initgame(void) do { c = (char) getcoord(PLAYER); } while - (!strchr(docked, c)); + (!(strchr) (docked, c)); if (c == 'R') (void) ungetch('R'); @@ -459,13 +468,16 @@ initgame(void) do { c = (char) getch(); } while - (!(strchr("hjklrR", c) || c == FF)); + (!(strchr("hjkl8462rR", c) || c == FF || is_QUIT(c))); - if (c == FF) { + if (is_QUIT(c)) { + uninitgame(0); + } else if (c == FF) { (void) clearok(stdscr, TRUE); (void) refresh(); + } else if (ss == 0) { + beep(); /* simple to verify, unlikely to happen */ } else if (c == 'r') { - assert(ss != 0); prompt(1, "Random-placing your %s", ss->name); randomplace(PLAYER, ss); placeship(PLAYER, ss, TRUE); @@ -481,26 +493,25 @@ initgame(void) } error((char *) NULL); } else if (strchr("hjkl8462", c)) { - assert(ss != 0); ss->x = curx; ss->y = cury; switch (c) { case 'k': case '8': - ss->dir = N; + ss->dir = dir_N; break; case 'j': case '2': - ss->dir = S; + ss->dir = dir_S; break; case 'h': case '4': - ss->dir = W; + ss->dir = dir_W; break; case 'l': case '6': - ss->dir = E; + ss->dir = dir_E; break; } @@ -538,14 +549,15 @@ initgame(void) static int getcoord(int atcpu) { - int ny, nx, c; - if (atcpu) cgoto(cury, curx); else pgoto(cury, curx); (void) refresh(); + for (;;) { + int ny, nx, c; + if (atcpu) { MvPrintw(CYBASE + BDEPTH + 1, CXBASE + 11, "(%d, %c)", curx, 'A' + cury); @@ -658,7 +670,7 @@ collidecheck(int b, int y, int x) if (!closepack) { int i; - for (i = 0; i < 8; i++) { + for (i = 0; i < dir_MAX; i++) { int xend, yend; yend = y + yincr[i]; @@ -721,10 +733,9 @@ static int awinna(void) { int i, j; - ship_t *ss; for (i = 0; i < 2; ++i) { - ss = (i) ? cpuship : plyship; + ship_t *ss = (i) ? cpuship : plyship; for (j = 0; j < SHIPTYPES; ++j, ++ss) if (ss->length > ss->hits) break; @@ -751,12 +762,14 @@ hitship(int x, int y) if (++ss->hits < ss->length) /* still afloat? */ return ((ship_t *) NULL); else { /* sunk! */ - int i, j; + int i; + + if (!closepack) { + int j; - if (!closepack) for (j = -1; j <= 1; j++) { - int bx = ss->x + j * xincr[(ss->dir + 2) % 8]; - int by = ss->y + j * yincr[(ss->dir + 2) % 8]; + int bx = ss->x + j * xincr[(ss->dir + 2) % dir_MAX]; + int by = ss->y + j * yincr[(ss->dir + 2) % dir_MAX]; for (i = -1; i <= ss->length; ++i) { int x1, y1; @@ -771,17 +784,18 @@ hitship(int x, int y) if (has_colors()) attron(COLOR_PAIR(COLOR_GREEN)); #endif /* A_COLOR */ - (void) addch(MARK_MISS); + AddCh(MARK_MISS); #ifdef A_COLOR (void) attrset(0); #endif /* A_COLOR */ } else { pgoto(y1, x1); - (void) addch(SHOWSPLASH); + AddCh(SHOWSPLASH); } } } } + } for (i = 0; i < ss->length; ++i) { int x1 = ss->x + i * xincr[ss->dir]; @@ -790,14 +804,14 @@ hitship(int x, int y) hits[turn][x1][y1] = ss->symbol; if (turn % 2 == PLAYER) { cgoto(y1, x1); - (void) addch((chtype) (ss->symbol)); + AddCh(ss->symbol); } else { pgoto(y1, x1); #ifdef A_COLOR if (has_colors()) attron(COLOR_PAIR(COLOR_RED)); #endif /* A_COLOR */ - (void) addch(SHOWHIT); + AddCh(SHOWHIT); #ifdef A_COLOR (void) attrset(0); #endif /* A_COLOR */ @@ -839,7 +853,7 @@ plyturn(void) attron(COLOR_PAIR(COLOR_GREEN)); } #endif /* A_COLOR */ - (void) addch((chtype) hits[PLAYER][curx][cury]); + AddCh(hits[PLAYER][curx][cury]); #ifdef A_COLOR (void) attrset(0); #endif /* A_COLOR */ @@ -863,7 +877,9 @@ plyturn(void) m = " You'll pick up survivors from my %s, I hope...!"; break; } - (void) printw(m, ss->name); + if (m != 0) { + (void) printw(m, ss->name); + } (void) beep(); } return (hit); @@ -872,20 +888,20 @@ plyturn(void) static int sgetc(const char *s) { - const char *s1; - int ch; - (void) refresh(); + for (;;) { - ch = getch(); + int ch = getch(); + const char *s1; + if (islower(ch)) ch = toupper(ch); - if (ch == CTRLC) + if (is_QUIT(ch)) uninitgame(0); for (s1 = s; *s1 && ch != *s1; ++s1) continue; if (*s1) { - (void) addch((chtype) ch); + AddCh(ch); (void) refresh(); return (ch); } @@ -952,8 +968,8 @@ cpufire(int x, int y) bool hit, sunk; ship_t *ss = NULL; - hit = board[PLAYER][x][y] ? MARK_HIT : MARK_MISS; - hits[COMPUTER][x][y] = (char) hit; + hit = (bool) board[PLAYER][x][y]; + hits[COMPUTER][x][y] = (hit ? MARK_HIT : MARK_MISS); MvPrintw(PROMPTLINE, 0, "I shoot at %c%d. I %s!", y + 'A', x, hit ? "hit" : "miss"); @@ -970,7 +986,7 @@ cpufire(int x, int y) attron(COLOR_PAIR(COLOR_GREEN)); } #endif /* A_COLOR */ - (void) addch((chtype) (hit ? SHOWHIT : SHOWSPLASH)); + AddCh((hit ? SHOWHIT : SHOWSPLASH)); #ifdef A_COLOR (void) attrset(0); #endif /* A_COLOR */ @@ -998,7 +1014,7 @@ cputurn(void) #define REVERSE_JUMP 4 #define SECOND_PASS 5 static int next = RANDOM_FIRE; - static bool used[4]; + static bool used[5]; static ship_t ts; int navail, x, y, d, n; int hit = S_MISS; @@ -1018,11 +1034,14 @@ cputurn(void) break; case RANDOM_HIT: /* last shot was random and hit */ - used[E / 2] = used[S / 2] = used[W / 2] = used[N / 2] = FALSE; + used[dir_E / 2] = + used[dir_S / 2] = + used[dir_W / 2] = + used[dir_N / 2] = FALSE; /* FALLTHROUGH */ case HUNT_DIRECT: /* last shot hit, we're looking for ship's long axis */ - for (d = navail = 0; d < 4; d++) { + for (d = navail = 0; d < (dir_MAX) / 2; d++) { x = ts.x + xincr[d * 2]; y = ts.y + yincr[d * 2]; if (!used[d] && POSSIBLE(x, y)) @@ -1034,13 +1053,13 @@ cputurn(void) goto refire; /* ...so we must random-fire */ else { n = rnd(navail) + 1; - for (d = 0; used[d]; d++) ; + for (d = 0; d < (dir_MAX) / 2 && used[d]; d++) ; /* used[d] is first that == 0 */ for (; n > 1; n--) - while (used[++d]) ; + while (d < (dir_MAX) / 2 && used[++d]) ; /* used[d] is next that == 0 */ - assert(d < 4); + assert(d < (dir_MAX) / 2); assert(used[d] == FALSE); used[d] = TRUE; @@ -1074,7 +1093,7 @@ cputurn(void) break; case REVERSE_JUMP: /* nail down the ship's other end */ - d = (ts.dir + 4) % 8; + d = (ts.dir + (dir_MAX) / 2) % dir_MAX; x = ts.x + ts.hits * xincr[d]; y = ts.y + ts.hits * yincr[d]; if (POSSIBLE(x, y) && (hit = cpufire(x, y))) { @@ -1123,37 +1142,37 @@ playagain(void) for (ss = cpuship; ss < cpuship + SHIPTYPES; ss++) for (j = 0; j < ss->length; j++) { cgoto(ss->y + j * yincr[ss->dir], ss->x + j * xincr[ss->dir]); - (void) addch((chtype) ss->symbol); + AddCh(ss->symbol); } if (awinna()) ++cpuwon; else ++plywon; - j = 18 + (int) strlen(name); + j = 18 + (int) strlen(your_name); if (plywon >= 10) ++j; if (cpuwon >= 10) ++j; MvPrintw(1, (COLWIDTH - j) / 2, - "%s: %d Computer: %d", name, plywon, cpuwon); + "%s: %d Computer: %d", your_name, plywon, cpuwon); prompt(2, (awinna())? "Want to be humiliated again, %s [yn]? " - : "Going to give me a chance for revenge, %s [yn]? ", name); + : "Going to give me a chance for revenge, %s [yn]? ", your_name); return (sgetc("YN") == 'Y'); } static void do_options(int c, char *op[]) { - register int i; - if (c > 1) { + int i; + for (i = 1; i < c; i++) { switch (op[i][0]) { default: case '?': - (void) fprintf(stderr, "Usage: battle [-s | -b] [-c]\n"); + (void) fprintf(stderr, "Usage: bs [-s | -b] [-c]\n"); (void) fprintf(stderr, "\tWhere the options are:\n"); (void) fprintf(stderr, "\t-s : play a salvo game\n"); (void) fprintf(stderr, "\t-b : play a blitz game\n"); diff --git a/deps/ncurses-6.3/test/bulgarian-utf8-tabs.txt b/deps/ncurses-6.3/test/bulgarian-utf8-tabs.txt new file mode 100644 index 0000000..65e42bb --- /dev/null +++ b/deps/ncurses-6.3/test/bulgarian-utf8-tabs.txt @@ -0,0 +1,6 @@ +Показване на помощна информация -- 1 +Създаване на дялове -- 2 +Избор на дял и форматиране -- 3 +Записване в избрания дял -- 4 +Инсталиране на LILO -- 5 +Изход от програмата -- 6 diff --git a/deps/ncurses-5.9/test/bulgarian-utf8.txt b/deps/ncurses-6.3/test/bulgarian-utf8.txt similarity index 100% rename from deps/ncurses-5.9/test/bulgarian-utf8.txt rename to deps/ncurses-6.3/test/bulgarian-utf8.txt diff --git a/deps/ncurses-5.9/test/cardfile.c b/deps/ncurses-6.3/test/cardfile.c similarity index 93% rename from deps/ncurses-5.9/test/cardfile.c rename to deps/ncurses-6.3/test/cardfile.c index f9557bd..78b659b 100644 --- a/deps/ncurses-5.9/test/cardfile.c +++ b/deps/ncurses-6.3/test/cardfile.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1999-2008,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1999-2016,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 * @@ -29,7 +30,7 @@ /* * Author: Thomas E. Dickey * - * $Id: cardfile.c,v 1.38 2010/11/14 00:58:45 tom Exp $ + * $Id: cardfile.c,v 1.48 2021/03/20 18:23:14 tom Exp $ * * File format: text beginning in column 1 is a title; other text is content. */ @@ -68,17 +69,13 @@ static CARD *all_cards; static bool try_color = FALSE; static char default_name[] = "cardfile.dat"; -#if !HAVE_STRDUP -#define strdup my_strdup -static char * -strdup(const char *s) +static void +failed(const char *s) { - char *p = typeMalloc(char, strlen(s) + 1); - if (p) - strcpy(p, s); - return (p); + perror(s); + endwin(); + ExitProgram(EXIT_FAILURE); } -#endif /* not HAVE_STRDUP */ static const char * skip(const char *buffer) @@ -111,7 +108,7 @@ add_title(const char *title) break; } - card = typeCalloc(CARD, 1); + card = typeCalloc(CARD, (size_t) 1); card->title = strdup(title); card->content = strdup(""); @@ -129,15 +126,19 @@ add_title(const char *title) static void add_content(CARD * card, const char *content) { - size_t total, offset; + size_t total; content = skip(content); if ((total = strlen(content)) != 0) { + size_t offset; + if (card->content != 0 && (offset = strlen(card->content)) != 0) { total += 1 + offset; card->content = typeRealloc(char, total + 1, card->content); - if (card->content) - strcpy(card->content + offset++, " "); + if (card->content) { + _nc_STRCPY(card->content + offset, " ", total + 1 - offset); + offset++; + } } else { offset = 0; if (card->content != 0) @@ -145,7 +146,9 @@ add_content(CARD * card, const char *content) card->content = typeMalloc(char, total + 1); } if (card->content) - strcpy(card->content + offset, content); + _nc_STRCPY(card->content + offset, content, total + 1 - offset); + else + failed("add_content"); } } @@ -173,10 +176,11 @@ static void read_data(char *fname) { FILE *fp; - CARD *card = 0; - char buffer[BUFSIZ]; if ((fp = fopen(fname, "r")) != 0) { + CARD *card = 0; + char buffer[BUFSIZ]; + while (fgets(buffer, sizeof(buffer), fp)) { trim(buffer); if (isspace(UChar(*buffer))) { @@ -197,15 +201,17 @@ static void write_data(const char *fname) { FILE *fp; - CARD *p = 0; - int n; if (!strcmp(fname, default_name)) fname = "cardfile.out"; if ((fp = fopen(fname, "w")) != 0) { + CARD *p = 0; + for (p = all_cards; p != 0; p = p->link) { FIELD **f = form_fields(p->form); + int n; + for (n = 0; f[n] != 0; n++) { char *s = field_buffer(f[n], 0); if (s != 0 @@ -290,7 +296,7 @@ prev_card(CARD * now) static CARD * first_card(CARD * now) { - if (!isVisible(now)) + if (now != NULL && !isVisible(now)) now = next_card(now); return now; } @@ -337,7 +343,7 @@ form_virtualize(WINDOW *w) static FIELD ** make_fields(CARD * p, int form_high, int form_wide) { - FIELD **f = typeCalloc(FIELD *, 3); + FIELD **f = typeCalloc(FIELD *, (size_t) 3); f[0] = new_field(1, form_wide, 0, 0, 0, 0); set_field_back(f[0], A_REVERSE); @@ -365,7 +371,7 @@ show_legend(void) #if (defined(KEY_RESIZE) && HAVE_WRESIZE) || NO_LEAKS static void -free_form_fields(FIELD ** f) +free_form_fields(FIELD **f) { int n; @@ -391,7 +397,6 @@ cardfile(char *fname) int form_high; int y; int x; - int ch = ERR; int finished = FALSE; show_legend(); @@ -414,7 +419,7 @@ cardfile(char *fname) if ((win = newwin(panel_high, panel_wide, y, x)) == 0) break; - wbkgd(win, COLOR_PAIR(pair_2)); + wbkgd(win, (chtype) COLOR_PAIR(pair_2)); keypad(win, TRUE); p->panel = new_panel(win); box(win, 0, 0); @@ -432,6 +437,8 @@ cardfile(char *fname) order_cards(top_card, visible_cards); while (!finished) { + int ch = ERR; + update_panels(); doupdate(); @@ -522,13 +529,11 @@ cardfile(char *fname) } #if NO_LEAKS while (all_cards != 0) { - FIELD **f; - p = all_cards; all_cards = all_cards->link; if (isVisible(p)) { - f = form_fields(p->form); + FIELD **f = form_fields(p->form); unpost_form(p->form); /* ...so we can free it */ free_form(p->form); /* this also disconnects the fields */ @@ -549,7 +554,7 @@ usage(void) { static const char *msg[] = { - "Usage: view [options] file" + "Usage: cardfile [options] file" ,"" ,"Options:" ," -c use color if terminal supports it" @@ -588,7 +593,7 @@ main(int argc, char *argv[]) start_color(); init_pair(pair_1, COLOR_WHITE, COLOR_BLUE); init_pair(pair_2, COLOR_WHITE, COLOR_CYAN); - bkgd(COLOR_PAIR(pair_1)); + bkgd((chtype) COLOR_PAIR(pair_1)); } else { try_color = FALSE; } diff --git a/deps/ncurses-5.9/test/cardfile.dat b/deps/ncurses-6.3/test/cardfile.dat similarity index 100% rename from deps/ncurses-5.9/test/cardfile.dat rename to deps/ncurses-6.3/test/cardfile.dat diff --git a/deps/ncurses-5.9/test/chgat.c b/deps/ncurses-6.3/test/chgat.c similarity index 91% rename from deps/ncurses-5.9/test/chgat.c rename to deps/ncurses-6.3/test/chgat.c index 53ecfd7..a5bcbea 100644 --- a/deps/ncurses-5.9/test/chgat.c +++ b/deps/ncurses-6.3/test/chgat.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2006-2012,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 * @@ -26,12 +27,13 @@ * authorization. * ****************************************************************************/ /* - * $Id: chgat.c,v 1.11 2010/05/01 19:12:26 tom Exp $ + * $Id: chgat.c,v 1.19 2020/02/02 23:34:34 tom Exp $ * * test-driver for chgat/wchgat/mvchgat/mvwchgat */ #include <test.priv.h> +#include <popup_msg.h> #if HAVE_CHGAT @@ -45,10 +47,10 @@ #endif typedef struct { - unsigned c; - unsigned v; + size_t c; + size_t v; short pair; - unsigned attr; + attr_t attr; int count; int ch; const char *c_msg; @@ -60,7 +62,7 @@ typedef struct { } STATUS; static const char * -color_params(unsigned state, short *pair) +color_params(size_t state, short *pair) { /* *INDENT-OFF* */ static struct { @@ -74,12 +76,13 @@ color_params(unsigned state, short *pair) }; /* *INDENT-ON* */ - static bool first = TRUE; const char *result = 0; if (has_colors()) { + static bool first = TRUE; + if (first) { - unsigned n; + size_t n; start_color(); for (n = 0; n < SIZEOF(table); ++n) { @@ -95,18 +98,18 @@ color_params(unsigned state, short *pair) } static const char * -video_params(unsigned state, unsigned *attr) +video_params(size_t state, attr_t *attr) { /* *INDENT-OFF* */ static struct { - unsigned attr; + attr_t attr; const char *msg; } table[] = { - { A_NORMAL, "normal" }, - { A_BOLD, "bold" }, - { A_REVERSE, "reverse" }, - { A_UNDERLINE, "underline" }, - { A_BLINK, "blink" }, + { WA_NORMAL, "normal" }, + { WA_BOLD, "bold" }, + { WA_REVERSE, "reverse" }, + { WA_UNDERLINE, "underline" }, + { WA_BLINK, "blink" }, }; /* *INDENT-ON* */ @@ -176,6 +179,8 @@ do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *)) delwin(win1); touchwin(win); } else { + if (win1 != 0) + delwin(win1); beep(); } } @@ -198,7 +203,7 @@ init_status(WINDOW *win, STATUS * sp) static void show_help(WINDOW *win) { - static const char *table[] = + static const char *msgs[] = { "Basic commands:" ,"Use h/j/k/l or arrow keys to move the cursor." @@ -212,19 +217,10 @@ show_help(WINDOW *win) ,"= resets count to zero." ,"- negates count." ,"? shows this help-window" - ,"" - ,"" + ,0 }; - int y_max, x_max; - int row; - - getmaxyx(win, y_max, x_max); - for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) { - MvWPrintw(win, row, 0, "%.*s", x_max, table[row]); - } - while (wgetch(win) != 'q') - beep(); + popup_msg(win, msgs); } static void @@ -278,8 +274,8 @@ update_status(WINDOW *win, STATUS * sp) sp->count = -(sp->count); show_status(win, sp); break; - case '?': - do_subwindow(win, sp, show_help); + case HELP_KEY_1: + show_help(win); break; default: if (isdigit(sp->ch)) { diff --git a/deps/ncurses-5.9/test/clip_printw.c b/deps/ncurses-6.3/test/clip_printw.c similarity index 89% rename from deps/ncurses-5.9/test/clip_printw.c rename to deps/ncurses-6.3/test/clip_printw.c index 5b279e9..a4242e8 100644 --- a/deps/ncurses-5.9/test/clip_printw.c +++ b/deps/ncurses-6.3/test/clip_printw.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2008-2016,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 * @@ -26,12 +27,13 @@ * authorization. * ****************************************************************************/ /* - * $Id: clip_printw.c,v 1.7 2010/11/13 20:48:48 tom Exp $ + * $Id: clip_printw.c,v 1.19 2020/05/10 00:40:23 tom Exp $ * * demonstrate how to use printw without wrapping. */ #include <test.priv.h> +#include <popup_msg.h> #ifdef HAVE_VW_PRINTW @@ -55,7 +57,7 @@ typedef struct { } STATUS; static int -clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt,...) +clip_wprintw(WINDOW *win, NCURSES_CONST char *fmt, ...) { int y0, x0, y1, x1, width; WINDOW *sub; @@ -102,10 +104,11 @@ color_params(unsigned state, int *pair) }; /* *INDENT-ON* */ - static bool first = TRUE; const char *result = 0; if (has_colors()) { + static bool first = TRUE; + if (first) { unsigned n; @@ -132,11 +135,11 @@ video_params(unsigned state, attr_t *attr) attr_t attr; const char *msg; } table[] = { - { A_NORMAL, "normal" }, - { A_BOLD, "bold" }, - { A_REVERSE, "reverse" }, - { A_UNDERLINE, "underline" }, - { A_BLINK, "blink" }, + { WA_NORMAL, "normal" }, + { WA_BOLD, "bold" }, + { WA_REVERSE, "reverse" }, + { WA_UNDERLINE, "underline" }, + { WA_BLINK, "blink" }, }; /* *INDENT-ON* */ @@ -207,6 +210,8 @@ do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *)) delwin(win1); touchwin(win); } else { + if (win1) + delwin(win1); beep(); } } @@ -229,7 +234,7 @@ init_status(WINDOW *win, STATUS * sp) static void show_help(WINDOW *win) { - static const char *table[] = + static const char *msgs[] = { "Basic commands:" ,"Use h/j/k/l or arrow keys to move the cursor." @@ -238,21 +243,13 @@ show_help(WINDOW *win) ,"Other commands:" ,"space toggles through the set of video attributes and colors." ,"t touches (forces repaint) of the current line." - ,". calls clip_wprintw at the current position with the given count." + ,". calls vw_printw at the current position with the given count." ,"= resets count to zero." ,"? shows this help-window" - ,"" + ,0 }; - int y_max, x_max; - int row; - - getmaxyx(win, y_max, x_max); - for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) { - MvWPrintw(win, row, 0, "%.*s", x_max, table[row]); - } - while (wgetch(win) != 'q') - beep(); + popup_msg(win, msgs); } static void @@ -302,8 +299,8 @@ update_status(WINDOW *win, STATUS * sp) sp->count = 0; show_status(win, sp); break; - case '?': - do_subwindow(win, sp, show_help); + case HELP_KEY_1: + show_help(win); break; default: if (isdigit(sp->ch)) { @@ -329,20 +326,24 @@ test_clipping(WINDOW *win) do { switch (st.ch) { case '.': /* change from current position */ - (void) wattrset(win, st.attr | (chtype) COLOR_PAIR(st.pair)); + (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr)); if (st.count > 0) { need = (unsigned) st.count + 1; - sprintf(fmt, "%%c%%%ds%%c", st.count); + _nc_SPRINTF(fmt, _nc_SLIMIT(sizeof(fmt)) "%%c%%%ds%%c", st.count); } else { - need = (unsigned) getmaxx(win) - 1; - strcpy(fmt, "%c%s%c"); + int want = getmaxx(win); + if (want < 10) + want = 10; + need = (unsigned) want - 1; + _nc_STRCPY(fmt, "%c%s%c", sizeof(fmt)); } - if ((buffer = typeMalloc(char, need)) != 0) { + if ((buffer = typeMalloc(char, need + 1)) != 0) { for (j = 0; j < need; ++j) { buffer[j] = (char) ('A' + (j % 26)); } buffer[need - 1] = '\0'; st.status = clip_wprintw(win, fmt, '[', buffer, ']'); + free(buffer); } break; case 'w': diff --git a/deps/ncurses-6.3/test/color_content.c b/deps/ncurses-6.3/test/color_content.c new file mode 100644 index 0000000..0f619f6 --- /dev/null +++ b/deps/ncurses-6.3/test/color_content.c @@ -0,0 +1,331 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: color_content.c,v 1.12 2020/02/02 23:34:34 tom Exp $ + */ + +#define NEED_TIME_H +#include <test.priv.h> + +#if USE_EXTENDED_COLOR +typedef int my_color_t; +#else +typedef NCURSES_COLOR_T my_color_t; +#endif + +typedef struct { + my_color_t r; + my_color_t g; + my_color_t b; +} MYCOLOR; + +static int f_opt; +static int i_opt; +static int l_opt; +static int n_opt; +static int p_opt; +static int r_opt; +static int s_opt; + +#if USE_EXTENDED_COLOR +static int x_opt; +#endif + +static MYCOLOR *expected; + +#if HAVE_GETTIMEOFDAY +static struct timeval initial_time; +static struct timeval finish_time; +#endif + +static void +failed(const char *msg) +{ + printw("%s", msg); + getch(); + endwin(); + ExitProgram(EXIT_FAILURE); +} + +#if USE_EXTENDED_COLOR +static int +InitColor(int pair, int r, int g, int b) +{ + int rc; + if (x_opt) { + rc = init_extended_color(pair, r, g, b); + } else { + rc = init_color((NCURSES_PAIRS_T) pair, + (NCURSES_COLOR_T) r, + (NCURSES_COLOR_T) g, + (NCURSES_COLOR_T) b); + } + return rc; +} + +static int +ColorContent(int color, int *rp, int *gp, int *bp) +{ + int rc; + if (x_opt) { + rc = extended_color_content(color, rp, gp, bp); + } else { + NCURSES_COLOR_T r, g, b; + if ((rc = color_content((NCURSES_COLOR_T) color, &r, &g, &b)) == OK) { + *rp = r; + *gp = g; + *bp = b; + } + } + return rc; +} +#else +#define InitColor(color,r,g,b) init_color((NCURSES_COLOR_T)color,(NCURSES_COLOR_T)r,(NCURSES_COLOR_T)g,(NCURSES_COLOR_T)b) +#define ColorContent(color,rp,gp,bp) color_content((NCURSES_COLOR_T)color,rp,gp,bp) +#endif + +static my_color_t +random_color(void) +{ + return (my_color_t) (rand() % 1000); +} + +static void +setup_test(void) +{ + initscr(); + cbreak(); + noecho(); + scrollok(stdscr, TRUE); + if (has_colors()) { + start_color(); + if (!can_change_color() && !p_opt) + failed("this terminal cannot initialize colors"); + + if (!f_opt) + f_opt = 0; + if (!l_opt) + l_opt = COLORS; + if (l_opt <= 0) + failed("color limit must be greater than zero"); + + if (!n_opt) { + int color; + size_t need = (size_t) ((l_opt > COLORS) ? l_opt : COLORS) + 1; + + expected = typeCalloc(MYCOLOR, need); + if (s_opt) { + int r; + int g; + int b; + color = f_opt; + for (r = 0; r < 1000; ++r) { + for (g = 0; g < 1000; ++g) { + for (b = 0; b < 1000; ++b) { + if (color < l_opt) { + InitColor(color, r, g, b); + expected[color].r = (my_color_t) r; + expected[color].g = (my_color_t) g; + expected[color].b = (my_color_t) b; + ++color; + } else { + break; + } + } + } + } + } else { + for (color = f_opt; color < l_opt; ++color) { + expected[color].r = random_color(); + expected[color].g = random_color(); + expected[color].b = random_color(); + InitColor(color, + expected[color].r, + expected[color].g, + expected[color].b); + } + } + } + } else { + failed("This demo requires a color terminal"); + } +#if HAVE_GETTIMEOFDAY + gettimeofday(&initial_time, 0); +#endif +} + +static void +run_test(void) +{ + int color; + bool success = TRUE; + for (color = f_opt; color < l_opt; ++color) { + my_color_t r; + my_color_t g; + my_color_t b; + if (ColorContent(color, &r, &g, &b) == OK) { + if (expected != 0) { + if (r != expected[color].r) + success = FALSE; + if (g != expected[color].g) + success = FALSE; + if (b != expected[color].b) + success = FALSE; + } + } + } + if (i_opt) { + addch(success ? '.' : '?'); + refresh(); + } +} + +static void +finish_test(void) +{ + getch(); + endwin(); +} + +#if HAVE_GETTIMEOFDAY +static double +seconds(struct timeval *mark) +{ + double result = (double) mark->tv_sec; + result += ((double) mark->tv_usec / 1e6); + return result; +} +#endif + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: color_content [options]" + ,"" + ,"Options:" + ," -f COLOR first color value to test (default: 0)" + ," -i interactive, showing test-progress" + ," -l COLOR last color value to test (default: max_colors-1)" + ," -n do not initialize color pairs" + ," -p print data for color content instead of testing" + ," -r COUNT repeat for given count" + ," -s initialize pairs sequentially rather than random" +#if USE_EXTENDED_COLOR + ," -x use extended color pairs/values" +#endif + }; + size_t n; + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int i; + + while ((i = getopt(argc, argv, "f:il:npr:sx")) != -1) { + switch (i) { + case 'f': + if ((f_opt = atoi(optarg)) <= 0) + usage(); + break; + case 'i': + i_opt = 1; + break; + case 'l': + if ((l_opt = atoi(optarg)) <= 0) + usage(); + break; + case 'n': + n_opt = 1; + break; + case 'p': + p_opt = 1; + break; + case 'r': + if ((r_opt = atoi(optarg)) <= 0) + usage(); + break; + case 's': + s_opt = 1; + break; +#if USE_EXTENDED_COLOR + case 'x': + x_opt = 1; + break; +#endif + default: + usage(); + } + } + if (optind < argc) + usage(); + if (r_opt <= 0) + r_opt = 1; + + setup_test(); + if (p_opt) { + endwin(); + for (i = 0; i < COLORS; ++i) { + my_color_t r, g, b; + if (ColorContent(i, &r, &g, &b) == OK) { + printf("%d: %d %d %d\n", i, r, g, b); + } else { + printf("%d: ? ?\n", i); + } + } + } else { + int repeat; + + for (repeat = 0; repeat < r_opt; ++repeat) { + run_test(); + if (i_opt) { + addch('.'); + refresh(); + } + } + + if (i_opt) { + addch('\n'); + } + printw("DONE: "); +#if HAVE_GETTIMEOFDAY + gettimeofday(&finish_time, 0); + printw("%.03f seconds", + seconds(&finish_time) + - seconds(&initial_time)); +#endif + finish_test(); + } + + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-6.3/test/color_name.h b/deps/ncurses-6.3/test/color_name.h new file mode 100644 index 0000000..867396c --- /dev/null +++ b/deps/ncurses-6.3/test/color_name.h @@ -0,0 +1,104 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2011-2012,2016 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. * + ****************************************************************************/ +/* + * $Id: color_name.h,v 1.9 2021/04/24 23:25:29 tom Exp $ + */ + +#ifndef __COLORNAME_H +#define __COLORNAME_H 1 + +#ifndef __TEST_PRIV_H +#include <test.priv.h> +#endif + +static NCURSES_CONST char *const the_color_names[] = +{ + "black", + "red", + "green", + "yellow", + "blue", + "magenta", + "cyan", + "white", + "BLACK", + "RED", + "GREEN", + "YELLOW", + "BLUE", + "MAGENTA", + "CYAN", + "WHITE" +}; + +#ifdef NEED_COLOR_CODE +static int +color_code(const char *color) +{ + int result = 0; + char *endp = 0; + size_t n; + + if ((result = (int) strtol(color, &endp, 0)) >= 0 + && (endp == 0 || *endp == 0)) { + ; + } else if (!strcmp(color, "default")) { + result = -1; + } else { + for (n = 0; n < SIZEOF(the_color_names); ++n) { + if (!strcmp(the_color_names[n], color)) { + result = (int) n; + break; + } + } + } + return result; +} +#endif /* NEED_COLOR_CODE */ + +#ifdef NEED_COLOR_NAME +static const char * +color_name(int color) +{ + static char temp[20]; + const char *result = 0; + + if (color >= (int) SIZEOF(the_color_names)) { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%d", color); + result = temp; + } else if (color < 0) { + result = "default"; + } else { + result = the_color_names[color]; + } + return result; +} +#endif /* NEED_COLOR_NAME */ + +#endif /* __COLORNAME_H */ diff --git a/deps/ncurses-5.9/test/color_set.c b/deps/ncurses-6.3/test/color_set.c similarity index 90% rename from deps/ncurses-5.9/test/color_set.c rename to deps/ncurses-6.3/test/color_set.c index 2e981cb..016b993 100644 --- a/deps/ncurses-5.9/test/color_set.c +++ b/deps/ncurses-6.3/test/color_set.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2003-2006,2008 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2003-2012,2014 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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: color_set.c,v 1.6 2008/02/10 00:18:01 tom Exp $ + * $Id: color_set.c,v 1.10 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -38,18 +39,19 @@ int main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) { - short f, b; - int i; + NCURSES_COLOR_T f, b; initscr(); cbreak(); noecho(); if (has_colors()) { + int i; + start_color(); - pair_content(0, &f, &b); - printw("pair 0 contains (%d,%d)\n", f, b); + (void) pair_content(0, &f, &b); + printw("pair 0 contains (%d,%d)\n", (int) f, (int) b); getch(); printw("Initializing pair 1 to red/black\n"); diff --git a/deps/ncurses-6.3/test/configure b/deps/ncurses-6.3/test/configure new file mode 100755 index 0000000..6c68d95 --- /dev/null +++ b/deps/ncurses-6.3/test/configure @@ -0,0 +1,24348 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by Autoconf 2.52.20210509. +# +# Copyright 2003-2020,2021 Thomas E. Dickey +# Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +# Free Software Foundation, Inc. +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="sed y%*+%pp%;s%[^_$as_cr_alnum]%_%g" + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="sed y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g" + +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset="unset" +else + as_unset="false" +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +# Name of the host. +# hostname on some systems (SVR3.2, Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +exec 6>&1 + +# +# Initializations. +# +ac_default_prefix=/usr/local +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= +SHELL=${CONFIG_SHELL-/bin/sh} + +# Maximum number of lines to put in a shell here document. +# This variable seems obsolete. It should probably be removed, and +# only ac_max_sed_lines should be used. +: "${ac_max_here_lines=38}" + +ac_unique_file="ncurses.c" + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +runstatedir='${localstatedir}/run' +libdir='${exec_prefix}/lib' +includedir='${prefix}/include' +oldincludedir='/usr/include' +infodir='${datarootdir}/info' +mandir='${datarootdir}/man' + +# Identity of this package. +PACKAGE_NAME= +PACKAGE_TARNAME= +PACKAGE_VERSION= +PACKAGE_STRING= +PACKAGE_BUGREPORT= + +ac_prev= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval "$ac_prev=\$ac_option" + ac_prev= + continue + fi + + ac_optarg=`expr "x$ac_option" : 'x[^=]*=\(.*\)'` + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case "$ac_option" in + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad | --data | --dat | --da) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ + | --da=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo "$ac_feature" | sed 's/-/_/g'` + eval "enable_$ac_feature=no" ;; + + -enable-* | --enable-*) + ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_feature" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid feature name: $ac_feature" >&2 + { (exit 1); exit 1; }; } + ac_feature=`echo "$ac_feature" | sed 's/-/_/g'` + case "$ac_option" in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "enable_$ac_feature='$ac_optarg'" ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst \ + | --locals | --local | --loca | --loc | --lo) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* \ + | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) + localstatedir=$ac_optarg ;; + + -runstatedir | --runstatedir | --runstatedi | --runstated \ + | --runstate | --runstat | --runsta | --runst \ + | --runs | --run | --ru) + ac_prev=runstatedir ;; + -runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \ + | --runstate=* | --runstat=* | --runsta=* | --runst=* \ + | --runs=* | --run=* | --ru=*) + runstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo "$ac_package" | sed 's/-/_/g'` + case "$ac_option" in + *=*) ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"`;; + *) ac_optarg=yes ;; + esac + eval "with_$ac_package='$ac_optarg'" ;; + + -without-* | --without-*) + ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_package" : ".*[^-_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid package name: $ac_package" >&2 + { (exit 1); exit 1; }; } + ac_package=`echo "$ac_package" | sed 's/-/_/g'` + eval "with_$ac_package=no" ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) { echo "$as_me: error: unrecognized option: $ac_option +Try \`$0 --help' for more information." >&2 + { (exit 1); exit 1; }; } + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null && + { echo "$as_me: error: invalid variable name: $ac_envvar" >&2 + { (exit 1); exit 1; }; } + ac_optarg=`echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` + eval "$ac_envvar='$ac_optarg'" + export "$ac_envvar" ;; + + *) + # FIXME: should be removed in autoconf 3.0. + echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option}" "${host_alias=$ac_option}" "${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo "$ac_prev" | sed 's/_/-/g'` + { echo "$as_me: error: missing argument to $ac_option" >&2 + { (exit 1); exit 1; }; } +fi + +# Be sure to have absolute paths. +for ac_var in exec_prefix prefix +do + eval ac_val=$`echo "$ac_var"` + case "$ac_val" in + [\\/$]* | ?:[\\/]* | NONE | '' ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# Be sure to have absolute paths. +for ac_var in bindir sbindir libexecdir datarootdir datadir sysconfdir sharedstatedir \ + localstatedir libdir includedir oldincludedir infodir mandir +do + eval ac_val=$`echo "$ac_var"` + case "$ac_val" in + [\\/$]* | ?:[\\/]* ) ;; + *) { echo "$as_me: error: expected an absolute path for --$ac_var: $ac_val" >&2 + { (exit 1); exit 1; }; };; + esac +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: should be removed in autoconf 3.0. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host. + If a cross compiler is detected then cross compile mode will be used." >&2 + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then its parent. + ac_prog=$0 + ac_confdir=`echo "$ac_prog" | sed 's%[\\/][^\\/][^\\/]*$%%'` + test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + if test "$ac_srcdir_defaulted" = yes; then + { echo "$as_me: error: cannot find sources in $ac_confdir or .." >&2 + { (exit 1); exit 1; }; } + else + { echo "$as_me: error: cannot find sources in $srcdir" >&2 + { (exit 1); exit 1; }; } + fi +fi +srcdir=`echo "$srcdir" | sed 's%\([^\\/]\)[\\/]*$%\1%'` +ac_env_build_alias_set=${build_alias+set} +ac_env_build_alias_value=$build_alias +ac_cv_env_build_alias_set=${build_alias+set} +ac_cv_env_build_alias_value=$build_alias +ac_env_host_alias_set=${host_alias+set} +ac_env_host_alias_value=$host_alias +ac_cv_env_host_alias_set=${host_alias+set} +ac_cv_env_host_alias_value=$host_alias +ac_env_target_alias_set=${target_alias+set} +ac_env_target_alias_value=$target_alias +ac_cv_env_target_alias_set=${target_alias+set} +ac_cv_env_target_alias_value=$target_alias +ac_env_CC_set=${CC+set} +ac_env_CC_value=$CC +ac_cv_env_CC_set=${CC+set} +ac_cv_env_CC_value=$CC +ac_env_CFLAGS_set=${CFLAGS+set} +ac_env_CFLAGS_value=$CFLAGS +ac_cv_env_CFLAGS_set=${CFLAGS+set} +ac_cv_env_CFLAGS_value=$CFLAGS +ac_env_LDFLAGS_set=${LDFLAGS+set} +ac_env_LDFLAGS_value=$LDFLAGS +ac_cv_env_LDFLAGS_set=${LDFLAGS+set} +ac_cv_env_LDFLAGS_value=$LDFLAGS +ac_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_env_CPPFLAGS_value=$CPPFLAGS +ac_cv_env_CPPFLAGS_set=${CPPFLAGS+set} +ac_cv_env_CPPFLAGS_value=$CPPFLAGS +ac_env_CPP_set=${CPP+set} +ac_env_CPP_value=$CPP +ac_cv_env_CPP_set=${CPP+set} +ac_cv_env_CPP_value=$CPP + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<EOF +\`configure' configures this package to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +EOF + + cat <<EOF +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --datarootdir=DIR read-only architecture-independent data [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --runstatedir=DIR extra definition of runtime data [LOCALSTATEDIR/run] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --infodir=DIR info documentation [DATAROOTDIR/info] + --mandir=DIR man documentation [DATAROOTDIR/man] +EOF + + cat <<\EOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names + +X features: + --x-includes=DIR X include files are in DIR + --x-libraries=DIR X library files are in DIR + +System types: + --build=BUILD configure for building on BUILD [guessed] + --host=HOST build programs to run on HOST [BUILD] +EOF +fi + +if test -n "$ac_init_help"; then + + cat <<\EOF + +Optional Features: + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] + +Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) + +General Options: + --disable-stripping do not strip (debug info) installed executables + --enable-stdnoreturn enable C11 _Noreturn feature for diagnostics + --enable-string-hacks work around bogus compiler/loader warnings + --with-pkg-config{=path} enable/disable use of pkg-config + --disable-echo do not display "compiling" commands +Curses Version-dependent Options: + --with-ncurses-wrap-prefix naming-prefix for ncurses wrapped-variables + --disable-widec disable checks for wide-character functions + --with-curses-dir=DIR directory in which (n)curses is installed + --with-screen=XXX use specified curses-libraries + --with-ncursesw use wide ncurses-libraries + --with-ncurses use ncurses-libraries + --with-pdcurses compile/link with pdcurses X11 library + --with-curses-colr compile/link with HPUX 10.x color-curses + --with-curses-5lib compile/link with SunOS 5lib curses + --with-Xaw3d link with Xaw 3d library + --with-Xaw3dxft link with Xaw 3d xft library + --with-neXtaw link with neXT Athena library + --with-XawPlus link with Athena-Plus library + --with-x use the X Window System + --with-x11-rgb=FILE file containing X11 rgb information (EPREFIX/lib/X11/rgb.txt) + --with-form-libname=XXX override form basename of library + --with-menu-libname=XXX override menu basename of library + --with-panel-libname=XXX override panel basename of library + --disable-panel disable checks for panel functions + --disable-menu disable checks for menu functions + --disable-form disable checks for form functions +Testing/development Options: + --enable-warnings test: turn on gcc compiler warnings + --with-dmalloc test: use Gray Watson's dmalloc library + --with-dbmalloc test: use Conor Cahill's dbmalloc library + --with-valgrind test: use valgrind + --disable-leaks test: free permanent memory, analyze leaks + --disable-rpath-hack don't add rpath options for additional libraries + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a + nonstandard directory <lib dir> + CPPFLAGS C/C++ preprocessor flags, e.g. -I<include dir> if you have + headers in a nonstandard directory <include dir> + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +EOF +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + ac_popdir=`pwd` + for ac_subdir in : $ac_subdirs_all; do test "x$ac_subdir" = x: && continue + cd "$ac_subdir" + # A "../" for each directory in /$ac_subdir. + ac_dots=`echo "$ac_subdir" | + sed 's,^\./,,;s,[^/]$,&/,;s,[^/]*/,../,g'` + + case "$srcdir" in + .) # No --srcdir option. We are building in place. + ac_sub_srcdir="$srcdir" ;; + [\\/]* | ?:[\\/]* ) # Absolute path. + ac_sub_srcdir="$srcdir/$ac_subdir" ;; + *) # Relative path. + ac_sub_srcdir="$ac_dots$srcdir/$ac_subdir" ;; + esac + + # Check for guested configure; otherwise get Cygnus style configure. + if test -f "$ac_sub_srcdir/configure.gnu"; then + echo + $SHELL "$ac_sub_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_sub_srcdir/configure"; then + echo + $SHELL "$ac_sub_srcdir/configure" --help=recursive + elif test -f "$ac_sub_srcdir/configure.ac" || + test -f "$ac_sub_srcdir/configure.in"; then + echo + "$ac_configure" --help + else + echo "$as_me: WARNING: no configuration information is in $ac_subdir" >&2 + fi + cd "$ac_popdir" + done +fi + +test -n "$ac_init_help" && exit 0 +if "$ac_init_version"; then + cat <<\EOF + +Copyright 2003-2020,2021 Thomas E. Dickey +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +EOF + exit 0 +fi +exec 5>config.log +cat >&5 <<EOF +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.20210509. Invocation command line was + + $ $0 $@ + +EOF +{ +cat <<_ASUNAME +## ---------- ## +## Platform. ## +## ---------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +hostinfo = `(hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +PATH = $PATH + +_ASUNAME +} >&5 + +cat >&5 <<EOF +## ------------ ## +## Core tests. ## +## ------------ ## + +EOF + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Also quote any args containing shell meta-characters. +ac_configure_args= +ac_sep= +for ac_arg +do + case "$ac_arg" in + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c) ;; + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" + ac_sep=" " ;; + *) ac_configure_args="$ac_configure_args$ac_sep$ac_arg" + ac_sep=" " ;; + esac + # Get rid of the leading space. +done + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + echo >&5 + echo "## ----------------- ##" >&5 + echo "## Cache variables. ##" >&5 + echo "## ----------------- ##" >&5 + echo >&5 + # The following way of writing the cache mishandles newlines in values, +{ + (set) 2>&1 | + case `(ac_space='"'"' '"'"'; set | grep ac_space) 2>&1` in + *ac_space=\ *) + sed -n \ + "s/'"'"'/'"'"'\\\\'"'"''"'"'/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='"'"'\\2'"'"'/p" + ;; + *) + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} >&5 + sed "/^$/d" confdefs.h >conftest.log + if test -s conftest.log; then + echo >&5 + echo "## ------------ ##" >&5 + echo "## confdefs.h. ##" >&5 + echo "## ------------ ##" >&5 + echo >&5 + cat conftest.log >&5 + fi + (echo; echo) >&5 + test "$ac_signal" != 0 && + echo "$as_me: caught signal $ac_signal" >&5 + echo "$as_me: exit $exit_status" >&5 + rm -rf conftest* confdefs* core core.* *.core conf$$* $ac_clean_files && + exit $exit_status + ' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' "$ac_signal" +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -rf conftest* confdefs.h +# AIX cpp loses on an empty file, so make sure it contains at least a newline. +echo >confdefs.h + +# Let the site file select an alternate cache file if it wants to. +# Prefer explicitly selected file to automatically selected ones. +if test -z "$CONFIG_SITE"; then + if test "x$prefix" != xNONE; then + CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" + else + CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" + fi +fi +for ac_site_file in $CONFIG_SITE; do + if test -r "$ac_site_file"; then + { echo "$as_me:899: 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" + fi +done + +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:910: loading cache $cache_file" >&5 +echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . $cache_file;; + *) . ./$cache_file;; + esac + fi +else + { echo "$as_me:918: creating cache $cache_file" >&5 +echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in `(set) 2>&1 | + sed -n 's/^ac_env_\([a-zA-Z_0-9]*\)_set=.*/\1/p'`; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val="\$ac_cv_env_${ac_var}_value" + eval ac_new_val="\$ac_env_${ac_var}_value" + case "$ac_old_set,$ac_new_set" in + set,) + { echo "$as_me:934: 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:938: 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:944: 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:946: former value: $ac_old_val" >&5 +echo "$as_me: former value: $ac_old_val" >&2;} + { echo "$as_me:948: current value: $ac_new_val" >&5 +echo "$as_me: current value: $ac_new_val" >&2;} + ac_cache_corrupted=: + fi;; + esac + # Pass precious variables to config.status. It doesn't matter if + # we pass some twice (in addition to the command line arguments). + if test "$ac_new_set" = set; then + case "$ac_new_val" in + *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?\"\']*) + ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` + ac_configure_args="$ac_configure_args '$ac_arg'" + ;; + *) ac_configure_args="$ac_configure_args $ac_var=$ac_new_val" + ;; + esac + fi +done +if "$ac_cache_corrupted"; then + { echo "$as_me:967: 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:969: 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 + +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" + +case `echo "testing\c" 2>/dev/null; echo 1,2,3`,`echo -n testing 2>/dev/null; echo 1,2,3` in + *c*,-n*) ECHO_N= + ECHO_C= # newlines do not sed ;-) only broken shells would use this case anyway + ECHO_T=' ' + ;; + *c*,* ) ECHO_N=-n + ECHO_C= + ECHO_T= + ;; + *) ECHO_N= + ECHO_C='\c' + ECHO_T= + ;; +esac +echo "#! $SHELL" >conftest.sh +echo "exit 0" >>conftest.sh +chmod +x conftest.sh +if { (echo "$as_me:998: PATH=\".;.\"; conftest.sh") >&5 + (PATH=".;."; conftest.sh) 2>&5 + ac_status=$? + echo "$as_me:1001: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + ac_path_separator=';' +else + ac_path_separator=: +fi +PATH_SEPARATOR="$ac_path_separator" +rm -f conftest.sh + +ac_config_headers="$ac_config_headers ncurses_cfg.h:ncurses_tst.hin" + +test -f config.guess || ( test -f ../config.guess && cp ../config.guess ./ ) + +test -f config.sub || ( test -f ../config.sub && cp ../config.sub ./ ) + +ac_aux_dir= +for ac_dir in $srcdir $srcdir/.. $srcdir/../..; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + { { echo "$as_me:1033: 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 +ac_config_guess="$SHELL $ac_aux_dir/config.guess" +ac_config_sub="$SHELL $ac_aux_dir/config.sub" +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:1043: error: cannot run $ac_config_sub" >&5 +echo "$as_me: error: cannot run $ac_config_sub" >&2;} + { (exit 1); exit 1; }; } + +echo "$as_me:1047: 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 +else + ac_cv_build_alias=$build_alias +test -z "$ac_cv_build_alias" && + ac_cv_build_alias=`$ac_config_guess` +test -z "$ac_cv_build_alias" && + { { echo "$as_me:1056: 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:1060: 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:1065: 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/'` + +if test -f "$srcdir/config.guess" || test -f "$ac_aux_dir/config.guess" ; then + echo "$as_me:1073: 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 +else + ac_cv_host_alias=$host_alias +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:1082: 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:1087: 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/'` +host_vendor=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\2/'` +host_os=`echo "$ac_cv_host" | sed 's/^\([^-]*\)-\([^-]*\)-\(.*\)$/\3/'` + + system_name="$host_os" +else + system_name="`(uname -s -r) 2>/dev/null`" + if test -z "$system_name" ; then + system_name="`(hostname) 2>/dev/null`" + fi +fi +test -n "$system_name" && +cat >>confdefs.h <<EOF +#define SYSTEM_NAME "$system_name" +EOF + +if test "${cf_cv_system_name+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cf_cv_system_name="$system_name" +fi + +test -z "$system_name" && system_name="$cf_cv_system_name" +test -n "$cf_cv_system_name" && echo "$as_me:1113: 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:1117: 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:1119: 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 + +test "$program_prefix" != NONE && + program_transform_name="s,^,$program_prefix,;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s,\$,$program_suffix,;$program_transform_name" +# Double any \ or $. echo might interpret backslashes. +# By default was `s,x,x', remove it if useless. +cat <<\_ACEOF >conftest.sed +s/[\\$]/&&/g;s/;s,x,x,$// +_ACEOF +program_transform_name=`echo $program_transform_name | sed -f conftest.sed` +rm conftest.sed + +echo "$as_me:1137: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.make <<\EOF +all: + @echo 'ac_maketemp="${MAKE}"' +EOF +# GNU make sometimes prints "make[1]: Entering...", which would confuse us. +eval `${MAKE-make} -f conftest.make 2>/dev/null | grep temp=` +if test -n "$ac_maketemp"; then + eval ac_cv_prog_make_${ac_make}_set=yes +else + eval ac_cv_prog_make_${ac_make}_set=no +fi +rm -f conftest.make +fi +if eval "test \"`echo '$ac_cv_prog_make_'${ac_make}_set`\" = yes"; then + echo "$as_me:1157: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + SET_MAKE= +else + echo "$as_me:1161: result: no" >&5 +echo "${ECHO_T}no" >&6 + SET_MAKE="MAKE=${MAKE-make}" +fi + +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" +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +set dummy ${ac_tool_prefix}gcc; ac_word=$2 +echo "$as_me:1175: 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 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}gcc" +echo "$as_me:1190: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1198: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1201: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "gcc", so it can be a program name with args. +set dummy gcc; ac_word=$2 +echo "$as_me:1210: 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 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="gcc" +echo "$as_me:1225: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1233: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1236: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +set dummy ${ac_tool_prefix}cc; ac_word=$2 +echo "$as_me:1249: 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 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # 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_CC="${ac_tool_prefix}cc" +echo "$as_me:1264: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1272: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1275: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_CC"; then + ac_ct_CC=$CC + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1284: 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 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="cc" +echo "$as_me:1299: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1307: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1310: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + CC=$ac_ct_CC +else + CC="$ac_cv_prog_CC" +fi + +fi +if test -z "$CC"; then + # Extract the first word of "cc", so it can be a program name with args. +set dummy cc; ac_word=$2 +echo "$as_me:1323: 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 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else + ac_prog_rejected=no + 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 +if test "$ac_dir/$ac_word" = "/usr/ucb/cc"; then + ac_prog_rejected=yes + continue +fi +ac_cv_prog_CC="cc" +echo "$as_me:1343: found $ac_dir/$ac_word" >&5 +break +done + +if test "$ac_prog_rejected" = yes; then + # We found a bogon in the path, so make sure we never use it. + set dummy $ac_cv_prog_CC + shift + if test $# != 0; then + # We chose a different compiler from the bogus one. + # However, it has the same basename, so the bogon will be chosen + # first if we set CC to just the basename; use the full file name. + shift + set dummy "$ac_dir/$ac_word" ${1+"$@"} + shift + ac_cv_prog_CC="$@" + fi +fi +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1365: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1368: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$CC"; then + if test -n "$ac_tool_prefix"; then + for ac_prog in cl + 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:1379: 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 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # 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_CC="$ac_tool_prefix$ac_prog" +echo "$as_me:1394: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + echo "$as_me:1402: result: $CC" >&5 +echo "${ECHO_T}$CC" >&6 +else + echo "$as_me:1405: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in cl +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:1418: 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 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # 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_ac_ct_CC="$ac_prog" +echo "$as_me:1433: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + echo "$as_me:1441: result: $ac_ct_CC" >&5 +echo "${ECHO_T}$ac_ct_CC" >&6 +else + echo "$as_me:1444: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_CC" && break +done + + CC=$ac_ct_CC +fi + +fi + +test -z "$CC" && { { echo "$as_me:1456: 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:1461:" \ + "checking for C compiler version" >&5 +ac_compiler=`set X $ac_compile; echo "$2"` +{ (eval echo "$as_me:1464: \"$ac_compiler --version </dev/null >&5\"") >&5 + (eval $ac_compiler --version </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:1467: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:1469: \"$ac_compiler -v </dev/null >&5\"") >&5 + (eval $ac_compiler -v </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:1472: \$? = $ac_status" >&5 + (exit "$ac_status"); } +{ (eval echo "$as_me:1474: \"$ac_compiler -V </dev/null >&5\"") >&5 + (eval $ac_compiler -V </dev/null >&5) 2>&5 + ac_status=$? + echo "$as_me:1477: \$? = $ac_status" >&5 + (exit "$ac_status"); } + +cat >"conftest.$ac_ext" <<_ACEOF +#line 1481 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +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:1497: 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:1500: \"$ac_link_default\"") >&5 + (eval $ac_link_default) 2>&5 + ac_status=$? + echo "$as_me:1503: \$? = $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 +# resort. +for ac_file in `ls a.exe conftest.exe 2>/dev/null; + ls a.out conftest 2>/dev/null; + ls a.* conftest.* 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + a.out ) # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + # FIXME: I believe we export ac_cv_exeext for Libtool --akim. + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +{ { echo "$as_me:1526: 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:1532: 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:1537: 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:1543: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1546: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { echo "$as_me:1553: 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;} + { (exit 1); exit 1; }; } + fi + fi +fi +echo "$as_me:1561: 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:1568: checking whether we are cross compiling" >&5 +echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6 +echo "$as_me:1570: result: $cross_compiling" >&5 +echo "${ECHO_T}$cross_compiling" >&6 + +echo "$as_me:1573: checking for executable suffix" >&5 +echo $ECHO_N "checking for executable suffix... $ECHO_C" >&6 +if { (eval echo "$as_me:1575: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:1578: \$? = $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 +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in `(ls conftest.exe; ls conftest; ls conftest.*) 2>/dev/null`; do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + export ac_cv_exeext + break;; + * ) break;; + esac +done +else + { { echo "$as_me:1594: 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:1600: 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:1606: 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 1612 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (eval echo "$as_me:1624: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1627: \$? = $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 + *.$ac_ext | *.xcoff | *.tds | *.d | *.dbg | *.pdb | *.xSYM | *.map | *.inf ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +{ { echo "$as_me:1639: 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:1646: result: $ac_cv_objext" >&5 +echo "${ECHO_T}$ac_cv_objext" >&6 +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +echo "$as_me:1650: 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 1656 "configure" +#include "confdefs.h" + +int +main (void) +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1671: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1674: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1677: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1680: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_compiler_gnu=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_compiler_gnu=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +echo "$as_me:1692: 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:1698: 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 1704 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1716: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1719: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1722: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1725: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_prog_cc_g=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_prog_cc_g=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:1735: 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 +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +# Some people use a C++ compiler to compile C. Since we use `exit', +# in C++ we need to declare it. In case someone uses the same compiler +# for both compiling C and C++ we need to have the C++ compiler decide +# the declaration of exit, since it's the most demanding environment. +cat >"conftest.$ac_ext" <<_ACEOF +#ifndef __cplusplus + choke me +#endif +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1762: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1765: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1768: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1771: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + for ac_declaration in \ + ''\ + '#include <stdlib.h>' \ + 'extern "C" void std::exit (int) throw (); using std::exit;' \ + 'extern "C" void std::exit (int); using std::exit;' \ + 'extern "C" void exit (int) throw ();' \ + 'extern "C" void exit (int);' \ + 'void exit (int);' +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 1783 "configure" +#include "confdefs.h" +#include <stdlib.h> +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1796: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1799: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1802: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1805: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +continue +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + cat >"conftest.$ac_ext" <<_ACEOF +#line 1815 "configure" +#include "confdefs.h" +$ac_declaration +int +main (void) +{ +exit (42); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1827: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1830: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1833: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1836: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done +rm -rf conftest* +if test -n "$ac_declaration"; then + echo '#ifdef __cplusplus' >>confdefs.h + echo "$ac_declaration" >>confdefs.h + echo '#endif' >>confdefs.h +fi + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +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" + +GCC_VERSION=none +if test "$GCC" = yes ; then + echo "$as_me:1866: 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/^.*(GCC[^)]*) //' -e 's/^.*(Debian[^)]*) //' -e 's/^[^0-9.]*//' -e 's/[^0-9.].*//'`" + test -z "$GCC_VERSION" && GCC_VERSION=unknown + echo "$as_me:1870: result: $GCC_VERSION" >&5 +echo "${ECHO_T}$GCC_VERSION" >&6 +fi + +INTEL_COMPILER=no + +if test "$GCC" = yes ; then + case "$host_os" in + (linux*|gnu*) + echo "$as_me:1879: 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 1884 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __INTEL_COMPILER +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1901: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1904: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1907: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1910: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + INTEL_COMPILER=yes +cf_save_CFLAGS="$cf_save_CFLAGS -we147" + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:1921: result: $INTEL_COMPILER" >&5 +echo "${ECHO_T}$INTEL_COMPILER" >&6 + ;; + esac +fi + +CLANG_COMPILER=no + +if test "$GCC" = yes ; then + echo "$as_me:1930: 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 1934 "configure" +#include "confdefs.h" + +int +main (void) +{ + +#ifdef __clang__ +#else +make an error +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:1951: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:1954: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:1957: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:1960: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + CLANG_COMPILER=yes + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + echo "$as_me:1970: result: $CLANG_COMPILER" >&5 +echo "${ECHO_T}$CLANG_COMPILER" >&6 +fi + +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:1979: 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:1986: 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:1990: 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:1997: 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 2002 "configure" +#include "confdefs.h" + + #include <stdio.h> +int +main (void) +{ + + printf("hello!\\n"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:2016: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:2019: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:2022: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2025: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_clang_optok=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_clang_optok=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:2036: 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}:2042: testing adding option $cf_clang_opt ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_clang_opt" + + fi + done +fi + +echo "$as_me:2051: 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 +else + ac_cv_prog_cc_stdc=no +ac_save_CC=$CC +cat >"conftest.$ac_ext" <<_ACEOF +#line 2059 "configure" +#include "confdefs.h" +#include <stdarg.h> +#include <stdio.h> +#include <sys/types.h> +#include <sys/stat.h> +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main (void) +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +# Don't try gcc -ansi; that turns off useful extensions and +# breaks some systems' header files. +# AIX -qlanglvl=ansi +# Ultrix and OSF/1 -std1 +# HP-UX 10.20 and later -Ae +# HP-UX older versions -Aa -D_HPUX_SOURCE +# SVR4 -Xc -D__EXTENSIONS__ +for ac_arg in "" -qlanglvl=ansi -std1 -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2108: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2111: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2114: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2117: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_prog_cc_stdc=$ac_arg +break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" +done +rm -f "conftest.$ac_ext" "conftest.$ac_objext" +CC=$ac_save_CC + +fi + +case "x$ac_cv_prog_cc_stdc" in + x|xno) + echo "$as_me:2134: result: none needed" >&5 +echo "${ECHO_T}none needed" >&6 ;; + *) + echo "$as_me:2137: result: $ac_cv_prog_cc_stdc" >&5 +echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6 + CC="$CC $ac_cv_prog_cc_stdc" ;; +esac + +# This should have been defined by AC_PROG_CC +: "${CC:=cc}" + +echo "$as_me:2145: checking \$CFLAGS variable" >&5 +echo $ECHO_N "checking \$CFLAGS variable... $ECHO_C" >&6 +case "x$CFLAGS" in +(*-[IUD]*) + echo "$as_me:2149: result: broken" >&5 +echo "${ECHO_T}broken" >&6 + { echo "$as_me:2151: 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= + for cf_arg in $cf_flags + do + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_arg +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 + + done + ;; +(*) + echo "$as_me:2259: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + ;; +esac + +echo "$as_me:2264: checking \$CC variable" >&5 +echo $ECHO_N "checking \$CC variable... $ECHO_C" >&6 +case "$CC" in +(*[\ \ ]-*) + echo "$as_me:2268: result: broken" >&5 +echo "${ECHO_T}broken" >&6 + { echo "$as_me:2270: 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/[ ]*[ ]-[^ ].*//'` + cf_flags=`echo "$CC" | ${AWK:-awk} -v prog="$cf_prog" '{ printf("%s", substr($0,1+length(prog))); }'` + CC="$cf_prog" + for cf_arg in $cf_flags + do + case "x$cf_arg" in + (x-[IUDfgOW]*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_arg +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 + + ;; + (*) + CC="$CC $cf_arg" + ;; + esac + done + test -n "$verbose" && echo " resulting CC: '$CC'" 1>&6 + +echo "${as_me:-configure}:2387: testing resulting CC: '$CC' ..." 1>&5 + + test -n "$verbose" && echo " resulting CFLAGS: '$CFLAGS'" 1>&6 + +echo "${as_me:-configure}:2391: testing resulting CFLAGS: '$CFLAGS' ..." 1>&5 + + test -n "$verbose" && echo " resulting CPPFLAGS: '$CPPFLAGS'" 1>&6 + +echo "${as_me:-configure}:2395: testing resulting CPPFLAGS: '$CPPFLAGS' ..." 1>&5 + + ;; +(*) + echo "$as_me:2399: result: ok" >&5 +echo "${ECHO_T}ok" >&6 + ;; +esac + +echo "$as_me:2404: 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 +else + ac_cv_c_inline=no +for ac_kw in inline __inline__ __inline; do + cat >"conftest.$ac_ext" <<_ACEOF +#line 2412 "configure" +#include "confdefs.h" +#ifndef __cplusplus +static $ac_kw int static_foo () {return 0; } +$ac_kw int foo () {return 0; } +#endif + +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:2421: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:2424: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:2427: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:2430: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_c_inline=$ac_kw; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:2441: result: $ac_cv_c_inline" >&5 +echo "${ECHO_T}$ac_cv_c_inline" >&6 +case $ac_cv_c_inline in + inline | yes) ;; + no) +cat >>confdefs.h <<\EOF +#define inline +EOF + ;; + *) cat >>confdefs.h <<EOF +#define inline $ac_cv_c_inline +EOF + ;; +esac + +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:2460: 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 +else + if test -n "$GREP"; then + ac_cv_prog_GREP="$GREP" # 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_GREP="$ac_prog" +echo "$as_me:2475: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +GREP=$ac_cv_prog_GREP +if test -n "$GREP"; then + echo "$as_me:2483: result: $GREP" >&5 +echo "${ECHO_T}$GREP" >&6 +else + echo "$as_me:2486: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$GREP" && break +done +test -n "$GREP" || GREP=": " + +echo "$as_me:2494: 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 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + for ac_prog in gegrep egrep +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:2506: 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 +else + case $EGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_EGREP="$EGREP" # 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_EGREP="$ac_dir/$ac_word" + echo "$as_me:2523: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +EGREP=$ac_cv_path_EGREP + +if test -n "$EGREP"; then + echo "$as_me:2534: result: $EGREP" >&5 +echo "${ECHO_T}$EGREP" >&6 +else + echo "$as_me:2537: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$EGREP" && break +done +test -n "$EGREP" || EGREP=": " + + test "x$ac_cv_path_EGREP" = "x:" && { { echo "$as_me:2545: error: cannot find workable egrep" >&5 +echo "$as_me: error: cannot find workable egrep" >&2;} + { (exit 1); exit 1; }; } + fi +fi +echo "$as_me:2550: result: $ac_cv_path_EGREP" >&5 +echo "${ECHO_T}$ac_cv_path_EGREP" >&6 + EGREP="$ac_cv_path_EGREP" + +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:2560: 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 + CPP= +fi +if test -z "$CPP"; then + if test "${ac_cv_prog_CPP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 2581 "configure" +#include "confdefs.h" +#include <assert.h> + Syntax error +_ACEOF +if { (eval echo "$as_me:2586: \"$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:2592: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 2615 "configure" +#include "confdefs.h" +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:2619: \"$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:2625: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +echo "$as_me:2662: result: $CPP" >&5 +echo "${ECHO_T}$CPP" >&6 +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # 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 2672 "configure" +#include "confdefs.h" +#include <assert.h> + Syntax error +_ACEOF +if { (eval echo "$as_me:2677: \"$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:2683: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + : +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Broken: fails on valid input. +continue +fi +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 2706 "configure" +#include "confdefs.h" +#include <ac_nonexistent.h> +_ACEOF +if { (eval echo "$as_me:2710: \"$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:2716: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # Broken: success on invalid input. +continue +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err "conftest.$ac_ext" + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.err "conftest.$ac_ext" +if $ac_preproc_ok; then + : +else + { { echo "$as_me:2744: error: C preprocessor \"$CPP\" fails sanity check" >&5 +echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check" >&2;} + { (exit 1); exit 1; }; } +fi + +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" + +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:2760: 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 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # 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_AWK="$ac_prog" +echo "$as_me:2775: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + echo "$as_me:2783: result: $AWK" >&5 +echo "${ECHO_T}$AWK" >&6 +else + echo "$as_me:2786: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$AWK" && break +done + +# 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: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# 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:2805: 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 + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_save_IFS=$IFS; IFS=$ac_path_separator + for ac_dir in $PATH; do + IFS=$ac_save_IFS + # Account for people who put trailing slashes in PATH elements. + case $ac_dir/ in + / | ./ | .// | /cC/* \ + | /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* \ + | /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + if $as_executable_p "$ac_dir/$ac_prog"; then + if test $ac_prog = install && + grep dspmsg "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$ac_dir/$ac_prog" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + ac_cv_path_install="$ac_dir/$ac_prog -c" + break 2 + fi + fi + done + ;; + esac + done + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. We don't cache a + # path for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the path is relative. + INSTALL=$ac_install_sh + fi +fi +echo "$as_me:2854: result: $INSTALL" >&5 +echo "${ECHO_T}$INSTALL" >&6 + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +case $INSTALL in +(/*) + ;; +(*) + cf_dir=`echo "$INSTALL" | sed -e 's%/[^/]*$%%'` + test -z "$cf_dir" && cf_dir=. + INSTALL="`cd \"$cf_dir\" && pwd`"/"`echo "$INSTALL" | sed -e 's%^.*/%%'`" + ;; +esac + +echo "$as_me:2875: 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. +if test "${enable_stripping+set}" = set; then + enableval="$enable_stripping" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + enable_stripping=no + else + enable_stripping=yes + fi +else + enableval=yes + enable_stripping=yes + +fi; +echo "$as_me:2892: result: $enable_stripping" >&5 +echo "${ECHO_T}$enable_stripping" >&6 + +if test "$enable_stripping" = yes +then + INSTALL_OPT_S="-s" +else + INSTALL_OPT_S= +fi + +: "${INSTALL:=install}" +echo "$as_me:2903: 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 +else + + rm -rf ./conftest* + date >conftest.in + mkdir conftest.out + sleep 3 + if $INSTALL -p conftest.in conftest.out 2>/dev/null + then + if test -f conftest.out/conftest.in + then + test conftest.in -nt conftest.out/conftest.in 2>conftest.err && \ + test conftest.out/conftest.in -nt conftest.in 2>conftest.err + if test -s conftest.err + then + cf_cv_install_p=no + else + cf_cv_install_p=yes + fi + else + cf_cv_install_p=no + fi + else + cf_cv_install_p=no + fi + rm -rf ./conftest* + +fi +echo "$as_me:2934: result: $cf_cv_install_p" >&5 +echo "${ECHO_T}$cf_cv_install_p" >&6 + +echo "$as_me:2937: 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) + with_install_o=yes + ;; +(*) + with_install_o=no + ;; +esac + +echo "$as_me:2948: result: $with_install_o" >&5 +echo "${ECHO_T}$with_install_o" >&6 +if test "x$with_install_o" = xyes +then + INSTALL_OPT_O="`id root|sed -e 's/uid=[0-9]*(/ -o /' -e 's/gid=[0-9]*(/ -g /' -e 's/ [^=[:space:]][^=[:space:]]*=.*/ /' -e 's/)//g'`" +else + INSTALL_OPT_O= +fi + +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:2961: 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 +else + if test -n "$LINT"; then + ac_cv_prog_LINT="$LINT" # 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_LINT="$ac_prog" +echo "$as_me:2976: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +LINT=$ac_cv_prog_LINT +if test -n "$LINT"; then + echo "$as_me:2984: result: $LINT" >&5 +echo "${ECHO_T}$LINT" >&6 +else + echo "$as_me:2987: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$LINT" && break +done + +case "x$LINT" in +(xcppcheck|x*/cppcheck) + test -z "$LINT_OPTS" && LINT_OPTS="--enable=all" + ;; +esac + +echo "$as_me:3000: 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 +else + + rm -rf conftest* + ( + mkdir conftest || exit 1 + cd conftest + cat >makefile <<'CF_EOF' +.PHONY: always +DATA=0 +always: always.out + @echo "** making $@ $(DATA)" +once: once.out + @echo "** making $@ $(DATA)" +always.out: + @echo "** making $@ $(DATA)" + echo $(DATA) > $@ +once.out: + @echo "** making $@ $(DATA)" + echo $(DATA) > $@ +CF_EOF + for cf_data in 1 2 3 + do + ${MAKE:-make} always DATA=$cf_data + ${MAKE:-make} once DATA=$cf_data + ${MAKE:-make} -t always once + if test -f always ; then + echo "no (case 1)" > ../conftest.tmp + elif test ! -f always.out ; then + echo "no (case 2)" > ../conftest.tmp + elif test ! -f once.out ; then + echo "no (case 3)" > ../conftest.tmp + elif ! cmp -s always.out once.out ; then + echo "no (case 4)" > ../conftest.tmp + diff always.out once.out + else + cf_check="`cat always.out`" + if test "x$cf_check" != "x$cf_data" ; then + echo "no (case 5)" > ../conftest.tmp + else + echo yes > ../conftest.tmp + rm -f ./*.out + continue + fi + fi + break + done + ) >&5 2>&1 + cf_cv_make_PHONY="`cat conftest.tmp`" + rm -rf conftest* + +fi +echo "$as_me:3055: result: $cf_cv_make_PHONY" >&5 +echo "${ECHO_T}$cf_cv_make_PHONY" >&6 +MAKE_NO_PHONY="#" +MAKE_PHONY="#" +test "x$cf_cv_make_PHONY" = xyes && MAKE_PHONY= +test "x$cf_cv_make_PHONY" != xyes && MAKE_NO_PHONY= + +echo "$as_me:3062: 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 +else + +if test "$cross_compiling" = yes ; then + case "$target_alias" in + (*-os2-emx*|*-msdosdjgpp*|*-cygwin*|*-msys*|*-mingw*|*-uwin*|darwin*) + cf_cv_mixedcase=no + ;; + (*) + cf_cv_mixedcase=yes + ;; + esac +else + rm -f conftest CONFTEST + echo test >conftest + if test -f CONFTEST ; then + cf_cv_mixedcase=no + else + cf_cv_mixedcase=yes + fi + rm -f conftest CONFTEST +fi + +fi +echo "$as_me:3089: result: $cf_cv_mixedcase" >&5 +echo "${ECHO_T}$cf_cv_mixedcase" >&6 +test "$cf_cv_mixedcase" = yes && +cat >>confdefs.h <<\EOF +#define MIXEDCASE_FILENAMES 1 +EOF + +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:3100: 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 +else + if test -n "$CTAGS"; then + ac_cv_prog_CTAGS="$CTAGS" # 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_CTAGS="$ac_prog" +echo "$as_me:3115: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +CTAGS=$ac_cv_prog_CTAGS +if test -n "$CTAGS"; then + echo "$as_me:3123: result: $CTAGS" >&5 +echo "${ECHO_T}$CTAGS" >&6 +else + echo "$as_me:3126: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$CTAGS" && break +done + +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:3137: 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 +else + if test -n "$ETAGS"; then + ac_cv_prog_ETAGS="$ETAGS" # 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_ETAGS="$ac_prog" +echo "$as_me:3152: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ETAGS=$ac_cv_prog_ETAGS +if test -n "$ETAGS"; then + echo "$as_me:3160: result: $ETAGS" >&5 +echo "${ECHO_T}$ETAGS" >&6 +else + echo "$as_me:3163: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ETAGS" && break +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:3172: 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 +else + if test -n "$MAKE_LOWER_TAGS"; then + ac_cv_prog_MAKE_LOWER_TAGS="$MAKE_LOWER_TAGS" # 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_MAKE_LOWER_TAGS="yes" +echo "$as_me:3187: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_LOWER_TAGS" && ac_cv_prog_MAKE_LOWER_TAGS="no" +fi +fi +MAKE_LOWER_TAGS=$ac_cv_prog_MAKE_LOWER_TAGS +if test -n "$MAKE_LOWER_TAGS"; then + echo "$as_me:3196: result: $MAKE_LOWER_TAGS" >&5 +echo "${ECHO_T}$MAKE_LOWER_TAGS" >&6 +else + echo "$as_me:3199: 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:3206: 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 +else + if test -n "$MAKE_UPPER_TAGS"; then + ac_cv_prog_MAKE_UPPER_TAGS="$MAKE_UPPER_TAGS" # 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_MAKE_UPPER_TAGS="yes" +echo "$as_me:3221: found $ac_dir/$ac_word" >&5 +break +done + + test -z "$ac_cv_prog_MAKE_UPPER_TAGS" && ac_cv_prog_MAKE_UPPER_TAGS="no" +fi +fi +MAKE_UPPER_TAGS=$ac_cv_prog_MAKE_UPPER_TAGS +if test -n "$MAKE_UPPER_TAGS"; then + echo "$as_me:3230: result: $MAKE_UPPER_TAGS" >&5 +echo "${ECHO_T}$MAKE_UPPER_TAGS" >&6 +else + echo "$as_me:3233: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +else + MAKE_UPPER_TAGS=no +fi + +if test "$MAKE_UPPER_TAGS" = yes ; then + MAKE_UPPER_TAGS= +else + MAKE_UPPER_TAGS="#" +fi + +if test "$MAKE_LOWER_TAGS" = yes ; then + MAKE_LOWER_TAGS= +else + MAKE_LOWER_TAGS="#" +fi + +echo "$as_me:3253: 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 3260 "configure" +#include "confdefs.h" + + #include <stdio.h> + #include <stdlib.h> + #include <math.h> + +int +main (void) +{ +double x = rand(); printf("result = %g\\n", pow(sin(x),x)) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:3276: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3279: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:3282: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3285: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_need_libm=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_need_libm=yes +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:3295: result: $cf_cv_need_libm" >&5 +echo "${ECHO_T}$cf_cv_need_libm" >&6 +if test "$cf_cv_need_libm" = yes +then +MATH_LIB=-lm +fi + +top_builddir=`pwd` + +CC_G_OPT="-g" +CC_SHARED_OPTS=unknown +CPPFLAGS="$CPPFLAGS" +DFT_DEP_SUFFIX="" +DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'` +DFT_UPR_MODEL="NORMAL" +LD="ld" +LDFLAGS_SHARED="" +LDFLAGS_STATIC="" +LD_MODEL="" +LD_SHARED_OPTS="" +LIBTOOL="" +LIBTOOL_OPTS="" +LIB_CLEAN="" +LIB_COMPILE="" +LIB_LINK='${CC}' +LINK_TESTS="" +LOCAL_LDFLAGS="" +PACKAGE="ncurses-examples" +PTHREAD="-lm" +TEST_ARGS="" +TEST_DEPS="" +TEST_LIBS="" +TINFO_LDFLAGS='' +TINFO_LIBS='$(LIBS_CURSES)' +cf_cv_abi_version="" +cf_cv_rel_version="" +includesubdir="" + +cf_cv_screen=curses +cf_cv_libtype= + +echo "$as_me:3336: 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 +else + if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 + then ac_cv_path_FGREP="$GREP -F" + else + for ac_prog in gfgrep fgrep +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:3348: 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 +else + case $FGREP in + [\\/]* | ?:[\\/]*) + ac_cv_path_FGREP="$FGREP" # 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_FGREP="$ac_dir/$ac_word" + echo "$as_me:3365: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +FGREP=$ac_cv_path_FGREP + +if test -n "$FGREP"; then + echo "$as_me:3376: result: $FGREP" >&5 +echo "${ECHO_T}$FGREP" >&6 +else + echo "$as_me:3379: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$FGREP" && break +done +test -n "$FGREP" || FGREP=": " + + test "x$ac_cv_path_FGREP" = "x:" && { { echo "$as_me:3387: error: cannot find workable fgrep" >&5 +echo "$as_me: error: cannot find workable fgrep" >&2;} + { (exit 1); exit 1; }; } + fi +fi +echo "$as_me:3392: result: $ac_cv_path_FGREP" >&5 +echo "${ECHO_T}$ac_cv_path_FGREP" >&6 + FGREP="$ac_cv_path_FGREP" + +echo "$as_me:3396: 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. +if test "${enable_stdnoreturn+set}" = set; then + enableval="$enable_stdnoreturn" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_stdnoreturn=yes + else + enable_stdnoreturn=no + fi +else + enableval=no + enable_stdnoreturn=no + +fi; +echo "$as_me:3413: result: $enable_stdnoreturn" >&5 +echo "${ECHO_T}$enable_stdnoreturn" >&6 + +if test $enable_stdnoreturn = yes; then +echo "$as_me:3417: 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 3423 "configure" +#include "confdefs.h" + +#include <stdio.h> +#include <stdlib.h> +#include <stdnoreturn.h> +static _Noreturn void giveup(void) { exit(0); } + +int +main (void) +{ +if (feof(stdin)) giveup() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:3440: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3443: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:3446: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3449: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_c11_noreturn=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_c11_noreturn=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:3460: result: $cf_cv_c11_noreturn" >&5 +echo "${ECHO_T}$cf_cv_c11_noreturn" >&6 +else + cf_cv_c11_noreturn=no, +fi + +if test "$cf_cv_c11_noreturn" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_STDNORETURN_H 1 +EOF + +cat >>confdefs.h <<EOF +#define STDC_NORETURN _Noreturn +EOF + + HAVE_STDNORETURN_H=1 +else + HAVE_STDNORETURN_H=0 +fi + +if test "$GCC" = yes || test "$GXX" = yes +then +cat > conftest.i <<EOF +#ifndef GCC_PRINTF +#define GCC_PRINTF 0 +#endif +#ifndef GCC_SCANF +#define GCC_SCANF 0 +#endif +#ifndef GCC_NORETURN +#define GCC_NORETURN /* nothing */ +#endif +#ifndef GCC_UNUSED +#define GCC_UNUSED /* nothing */ +#endif +EOF +if test "$GCC" = yes +then + { echo "$as_me:3499: checking for $CC __attribute__ directives..." >&5 +echo "$as_me: checking for $CC __attribute__ directives..." >&6;} +cat > "conftest.$ac_ext" <<EOF +#line 3502 "${as_me:-configure}" +#include "confdefs.h" +#include "conftest.h" +#include "conftest.i" +#if GCC_PRINTF +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +#else +#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ +#endif +#if GCC_SCANF +#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) +#else +#define GCC_SCANFLIKE(fmt,var) /*nothing*/ +#endif +extern void wow(char *,...) GCC_SCANFLIKE(1,2); +extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2); +extern GCC_NORETURN void foo(void); +int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED) { (void)argc; (void)argv; return 0; } +EOF + cf_printf_attribute=no + cf_scanf_attribute=no + for cf_attribute in scanf printf unused noreturn + do + +cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cf_directive="__attribute__(($cf_attribute))" + echo "checking for $CC $cf_directive" 1>&5 + + case "$cf_attribute" in + (printf) + cf_printf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + (scanf) + cf_scanf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + (*) + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE $cf_directive +EOF + ;; + esac + + if { (eval echo "$as_me:3551: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3554: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:3556: result: ... $cf_attribute" >&5 +echo "${ECHO_T}... $cf_attribute" >&6 + cat conftest.h >>confdefs.h + case "$cf_attribute" in + (noreturn) + +cat >>confdefs.h <<EOF +#define GCC_NORETURN $cf_directive +EOF + + ;; + (printf) + cf_value='/* nothing */' + if test "$cf_printf_attribute" != no ; then + cf_value='__attribute__((format(printf,fmt,var)))' + +cat >>confdefs.h <<\EOF +#define GCC_PRINTF 1 +EOF + + fi + +cat >>confdefs.h <<EOF +#define GCC_PRINTFLIKE(fmt,var) $cf_value +EOF + + ;; + (scanf) + cf_value='/* nothing */' + if test "$cf_scanf_attribute" != no ; then + cf_value='__attribute__((format(scanf,fmt,var)))' + +cat >>confdefs.h <<\EOF +#define GCC_SCANF 1 +EOF + + fi + +cat >>confdefs.h <<EOF +#define GCC_SCANFLIKE(fmt,var) $cf_value +EOF + + ;; + (unused) + +cat >>confdefs.h <<EOF +#define GCC_UNUSED $cf_directive +EOF + + ;; + esac + fi + done +else + ${FGREP-fgrep} define conftest.i >>confdefs.h +fi +rm -rf ./conftest* +fi + +echo "$as_me:3615: 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. +if test "${enable_string_hacks+set}" = set; then + enableval="$enable_string_hacks" + enable_string_hacks=$enableval +else + enable_string_hacks=no +fi; +echo "$as_me:3625: result: $enable_string_hacks" >&5 +echo "${ECHO_T}$enable_string_hacks" >&6 + +if test "x$enable_string_hacks" = "xyes"; then + +cat >>confdefs.h <<\EOF +#define USE_STRING_HACKS 1 +EOF + + { echo "$as_me:3634: 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:3636: 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 3642 "configure" +#include "confdefs.h" +#define strlcat autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef strlcat + +#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 strlcat (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_strlcat) || defined (__stub___strlcat) +#error found stub for strlcat +#endif + + return strlcat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:3673: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3676: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:3679: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3682: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_strlcat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_strlcat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:3692: result: $ac_cv_func_strlcat" >&5 +echo "${ECHO_T}$ac_cv_func_strlcat" >&6 +if test "$ac_cv_func_strlcat" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_STRLCAT 1 +EOF + +else + + echo "$as_me:3702: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 3710 "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 strlcat (); +int +main (void) +{ +strlcat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:3729: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3732: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:3735: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3738: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_bsd_strlcat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_bsd_strlcat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:3749: 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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lbsd; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +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:3772: 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 3778 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:3782: \"$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:3788: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:3807: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +cat >>confdefs.h <<\EOF +#define HAVE_STRLCAT 1 +EOF + +fi + +fi + +for ac_func in strlcpy snprintf +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:3828: 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 3834 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:3865: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:3868: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:3871: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3874: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:3884: 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 +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +EOF + +fi +done + +fi + +echo "$as_me:3896: 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 3903 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ + +#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 + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:3922: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:3925: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:3928: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:3931: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_visible=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_visible=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:3942: result: $cf_cv_posix_visible" >&5 +echo "${ECHO_T}$cf_cv_posix_visible" >&6 + +if test "$cf_cv_posix_visible" = no; then + +cf_XOPEN_SOURCE=600 +cf_POSIX_C_SOURCE=199506L +cf_xopen_source= + +case "$host_os" in +(aix[4-7]*) + cf_xopen_source="-D_ALL_SOURCE" + ;; +(msys) + cf_XOPEN_SOURCE=600 + ;; +(darwin[0-8].*) + cf_xopen_source="-D_APPLE_C_SOURCE" + ;; +(darwin*) + cf_xopen_source="-D_DARWIN_C_SOURCE" + cf_XOPEN_SOURCE= + ;; +(freebsd*|dragonfly*|midnightbsd*) + # 5.x headers associate + # _XOPEN_SOURCE=600 with _POSIX_C_SOURCE=200112L + # _XOPEN_SOURCE=500 with _POSIX_C_SOURCE=199506L + cf_POSIX_C_SOURCE=200112L + cf_XOPEN_SOURCE=600 + cf_xopen_source="-D_BSD_TYPES -D__BSD_VISIBLE -D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE -D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + ;; +(hpux11*) + cf_xopen_source="-D_HPUX_SOURCE -D_XOPEN_SOURCE=500" + ;; +(hpux*) + cf_xopen_source="-D_HPUX_SOURCE" + ;; +(irix[56].*) + cf_xopen_source="-D_SGI_SOURCE" + cf_XOPEN_SOURCE= + ;; +(linux*|uclinux*|gnu*|mint*|k*bsd*-gnu|cygwin) + +cf_gnu_xopen_source=$cf_XOPEN_SOURCE + +echo "$as_me:3987: 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 3994 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + + #if __GLIBC__ > 0 && __GLIBC_MINOR__ >= 0 + return 0; + #elif __NEWLIB__ > 0 && __NEWLIB_MINOR__ >= 0 + return 0; + #else + # error not GNU C library + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4013: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4016: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4019: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4022: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_library=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_library=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:4033: result: $cf_cv_gnu_library" >&5 +echo "${ECHO_T}$cf_cv_gnu_library" >&6 + +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:4041: 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 +else + + cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4053 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + + #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 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4072: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4075: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4078: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4081: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_library_219=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_library_219=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +echo "$as_me:4093: 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:4098: 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 +else + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=$cf_gnu_xopen_source +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 >"conftest.$ac_ext" <<_ACEOF +#line 4203 "configure" +#include "confdefs.h" + + #include <limits.h> + #include <sys/types.h> + +int +main (void) +{ + + #if (_XOPEN_SOURCE >= $cf_gnu_xopen_source) && (MB_LEN_MAX > 1) + return 0; + #else + # error GNU C library is too old + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4223: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4226: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4229: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4232: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_dftsrc_219=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_dftsrc_219=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:4243: 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 + cf_cv_gnu_dftsrc_219=maybe + fi + + if test "x$cf_cv_gnu_dftsrc_219" != xyes; then + + echo "$as_me:4252: 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 4259 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + + #ifndef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be defined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4274: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4277: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4280: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4283: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -D_GNU_SOURCE +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 >"conftest.$ac_ext" <<_ACEOF +#line 4390 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + + #ifdef _XOPEN_SOURCE + #error expected _XOPEN_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4405: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4408: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4411: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4414: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_gnu_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_gnu_source=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:4429: 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:4434: 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 +else + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_GNU_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4444 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + + #ifdef _DEFAULT_SOURCE + #error expected _DEFAULT_SOURCE to be undefined + #endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4459: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4462: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4465: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4468: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_default_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_default_source=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:4479: result: $cf_cv_default_source" >&5 +echo "${ECHO_T}$cf_cv_default_source" >&6 + if test "$cf_cv_default_source" = yes + then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_DEFAULT_SOURCE" + + fi + fi + fi + +fi + + ;; +(minix*) + cf_xopen_source="-D_NETBSD_SOURCE" # POSIX.1-2001 features are ifdef'd with this... + ;; +(mirbsd*) + # setting _XOPEN_SOURCE or _POSIX_SOURCE breaks <sys/select.h> and other headers which use u_int / u_short types + cf_XOPEN_SOURCE= + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +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:4516: 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}:4522: testing if the symbol is already defined go no further ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4525 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4540: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4543: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4546: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4549: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 4570 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4585: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4588: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4591: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4594: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + +echo "${as_me:-configure}:4605: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:4613: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4616 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4631: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4634: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4637: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4640: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:4656: 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 + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +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 + +fi + +fi # cf_cv_posix_visible + + ;; +(netbsd*) + cf_xopen_source="-D_NETBSD_SOURCE" # setting _XOPEN_SOURCE breaks IPv6 for lynx on NetBSD 1.6, breaks xterm, is not needed for ncursesw + ;; +(openbsd[6-9]*) + # 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:4773: 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 + ;; +(openbsd[4-5]*) + # setting _XOPEN_SOURCE lower than 500 breaks g++ compile with wchar.h, needed for ncursesw + cf_xopen_source="-D_BSD_SOURCE" + cf_XOPEN_SOURCE=600 + ;; +(openbsd*) + # setting _XOPEN_SOURCE breaks xterm on OpenBSD 2.8, is not needed for ncursesw + ;; +(osf[45]*) + cf_xopen_source="-D_OSF_SOURCE" + ;; +(nto-qnx*) + cf_xopen_source="-D_QNX_SOURCE" + ;; +(sco*) + # setting _XOPEN_SOURCE breaks Lynx on SCO Unix / OpenServer + ;; +(solaris2.*) + cf_xopen_source="-D__EXTENSIONS__" + cf_cv_xopen_source=broken + ;; +(sysv4.2uw2.*) # Novell/SCO UnixWare 2.x (tested on 2.1.2) + cf_XOPEN_SOURCE= + cf_POSIX_C_SOURCE= + ;; +(*) + +echo "$as_me:4805: 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 4812 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4831: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4834: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4837: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4840: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 4852 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:4871: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:4874: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:4877: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:4880: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:4895: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +for cf_add_cflags in $cf_temp_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +fi + +if test "$cf_cv_posix_visible" = no; then + +cf_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE + +cf_save_CFLAGS="$CFLAGS" +cf_save_CPPFLAGS="$CPPFLAGS" + +cf_trim_CFLAGS=`echo "$cf_save_CFLAGS" | \ + sed -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_POSIX_C_SOURCE"'\(=[^ ]*\)\?$//g'` + +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:5053: 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}:5059: testing if the symbol is already defined go no further ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5062 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5077: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5080: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5083: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5086: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_posix_c_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_want_posix_source=no + case .$cf_POSIX_C_SOURCE in + (.[12]??*) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + ;; + (.2) + cf_cv_posix_c_source="-D_POSIX_C_SOURCE=$cf_POSIX_C_SOURCE" + cf_want_posix_source=yes + ;; + (.*) + cf_want_posix_source=yes + ;; + esac + if test "$cf_want_posix_source" = yes ; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 5107 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + +#ifdef _POSIX_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5122: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5125: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5128: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5131: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source="$cf_cv_posix_c_source -D_POSIX_SOURCE" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + +echo "${as_me:-configure}:5142: testing ifdef from value $cf_POSIX_C_SOURCE ..." 1>&5 + + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_posix_c_source" + +echo "${as_me:-configure}:5150: testing if the second compile does not leave our definition intact error ..." 1>&5 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5153 "configure" +#include "confdefs.h" +#include <sys/types.h> +int +main (void) +{ + +#ifndef _POSIX_C_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5168: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5171: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5174: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5177: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_posix_c_source=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:5193: 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 + CFLAGS="$cf_trim_CFLAGS" + CPPFLAGS="$cf_trim_CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_cv_posix_c_source +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 + +fi + +fi # cf_cv_posix_visible + + ;; +esac + +if test -n "$cf_xopen_source" ; then + +for cf_add_cflags in $cf_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + test -n "$verbose" && echo " removing old option $cf_add_cflags from CFLAGS" 1>&6 + +echo "${as_me:-configure}:5319: testing removing old option $cf_add_cflags from CFLAGS ..." 1>&5 + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + test -n "$verbose" && echo " removing old option $cf_add_cflags from CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:5331: testing removing old option $cf_add_cflags from CPPFLAGS ..." 1>&5 + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:5419: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:5429: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +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}:5439: 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" + +fi + +done + +fi + +if test -n "$cf_XOPEN_SOURCE" && test -z "$cf_cv_xopen_source" ; then + echo "$as_me:5451: 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 5454 "configure" +#include "confdefs.h" +#include <stdlib.h> +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5469: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5472: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5475: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5478: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_XOPEN_SOURCE_set=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_XOPEN_SOURCE_set=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:5487: 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 5492 "configure" +#include "confdefs.h" +#include <stdlib.h> +int +main (void) +{ + +#if (_XOPEN_SOURCE - 0) < $cf_XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5507: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5510: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5513: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5516: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_XOPEN_SOURCE_set_ok=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_XOPEN_SOURCE_set_ok=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + if test "$cf_XOPEN_SOURCE_set_ok" = no + then + { echo "$as_me:5527: WARNING: _XOPEN_SOURCE is lower than requested" >&5 +echo "$as_me: WARNING: _XOPEN_SOURCE is lower than requested" >&2;} + fi + else + +echo "$as_me:5532: 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 5539 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> + +int +main (void) +{ + +#ifndef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5558: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5561: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5564: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5567: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save="$CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_XOPEN_SOURCE=$cf_XOPEN_SOURCE" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 5579 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <string.h> +#include <sys/types.h> + +int +main (void) +{ + +#ifdef _XOPEN_SOURCE +make an error +#endif + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5598: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5601: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5604: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5607: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xopen_source=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xopen_source=$cf_XOPEN_SOURCE +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:5622: result: $cf_cv_xopen_source" >&5 +echo "${ECHO_T}$cf_cv_xopen_source" >&6 + +if test "$cf_cv_xopen_source" != no ; then + +CFLAGS=`echo "$CFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + +CPPFLAGS=`echo "$CPPFLAGS" | \ + sed -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?[ ]/ /g' \ + -e 's/-[UD]'"_XOPEN_SOURCE"'\(=[^ ]*\)\?$//g'` + + cf_temp_xopen_source="-D_XOPEN_SOURCE=$cf_cv_xopen_source" + +for cf_add_cflags in $cf_temp_xopen_source +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +fi + + fi +fi +fi # cf_cv_posix_visible + +echo "$as_me:5769: 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 +else + + for cf_type in \ + "volatile sig_atomic_t" \ + "sig_atomic_t" \ + "int" + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 5781 "configure" +#include "confdefs.h" + +#include <sys/types.h> +#include <signal.h> +#include <stdio.h> + +extern $cf_type x; +$cf_type x; +static void handler(int sig) +{ + (void)sig; + x = 5; +} +int +main (void) +{ +signal(SIGINT, handler); + x = 1 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5805: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5808: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5811: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5814: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_sig_atomic_t=$cf_type +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_sig_atomic_t=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_sig_atomic_t" != no && break + done + +fi + +echo "$as_me:5828: 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 +#define SIG_ATOMIC_T $cf_cv_sig_atomic_t +EOF + +# Work around breakage on OS X + +echo "$as_me:5837: 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 5844 "configure" +#include "confdefs.h" + +#include <sys/types.h> +#include <sys/signal.h> + +int +main (void) +{ +int x = SIGWINCH; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5859: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5862: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5865: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5868: \$? = $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 5875 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include <sys/types.h> +#include <sys/signal.h> + +int +main (void) +{ +int x = SIGWINCH; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5893: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5896: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5899: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5902: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_define_sigwinch=maybe +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_define_sigwinch=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:5916: 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:5920: 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 +else + +cf_cv_fixup_sigwinch=unknown +cf_sigwinch=32 +while test "$cf_sigwinch" != 1 +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 5931 "configure" +#include "confdefs.h" + +#undef _XOPEN_SOURCE +#undef _POSIX_SOURCE +#undef _POSIX_C_SOURCE +#include <sys/types.h> +#include <sys/signal.h> + +int +main (void) +{ + +#if SIGWINCH != $cf_sigwinch +make an error +#endif +int x = SIGWINCH; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:5953: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:5956: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:5959: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:5962: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_fixup_sigwinch=$cf_sigwinch + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +cf_sigwinch="`expr "$cf_sigwinch" - 1`" +done + +fi +echo "$as_me:5976: result: $cf_cv_fixup_sigwinch" >&5 +echo "${ECHO_T}$cf_cv_fixup_sigwinch" >&6 + + if test "$cf_cv_fixup_sigwinch" != unknown ; then + CPPFLAGS="$CPPFLAGS -DSIGWINCH=$cf_cv_fixup_sigwinch" + fi +fi + +# Checks for CODESET support. + +echo "$as_me:5986: 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 5992 "configure" +#include "confdefs.h" +#include <langinfo.h> +int +main (void) +{ +char* cs = nl_langinfo(CODESET); (void)cs + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6004: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6007: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6010: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6013: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + am_cv_langinfo_codeset=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +am_cv_langinfo_codeset=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:6024: result: $am_cv_langinfo_codeset" >&5 +echo "${ECHO_T}$am_cv_langinfo_codeset" >&6 + if test "$am_cv_langinfo_codeset" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_LANGINFO_CODESET 1 +EOF + + fi + +echo "$as_me:6034: 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. +if test "${with_pkg_config+set}" = set; then + withval="$with_pkg_config" + cf_pkg_config=$withval +else + cf_pkg_config=yes +fi; +echo "$as_me:6044: result: $cf_pkg_config" >&5 +echo "${ECHO_T}$cf_pkg_config" >&6 + +case "$cf_pkg_config" in +(no) + PKG_CONFIG=none + ;; +(yes) + +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:6056: 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 +else + case $PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_PKG_CONFIG="$PKG_CONFIG" # 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_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:6073: found $ac_dir/$ac_word" >&5 + break +fi +done + + ;; +esac +fi +PKG_CONFIG=$ac_cv_path_PKG_CONFIG + +if test -n "$PKG_CONFIG"; then + echo "$as_me:6084: result: $PKG_CONFIG" >&5 +echo "${ECHO_T}$PKG_CONFIG" >&6 +else + echo "$as_me:6087: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +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:6096: 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 +else + case $ac_pt_PKG_CONFIG in + [\\/]* | ?:[\\/]*) + ac_cv_path_ac_pt_PKG_CONFIG="$ac_pt_PKG_CONFIG" # 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_ac_pt_PKG_CONFIG="$ac_dir/$ac_word" + echo "$as_me:6113: found $ac_dir/$ac_word" >&5 + break +fi +done + + test -z "$ac_cv_path_ac_pt_PKG_CONFIG" && ac_cv_path_ac_pt_PKG_CONFIG="none" + ;; +esac +fi +ac_pt_PKG_CONFIG=$ac_cv_path_ac_pt_PKG_CONFIG + +if test -n "$ac_pt_PKG_CONFIG"; then + echo "$as_me:6125: result: $ac_pt_PKG_CONFIG" >&5 +echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6 +else + echo "$as_me:6128: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + PKG_CONFIG=$ac_pt_PKG_CONFIG +else + PKG_CONFIG="$ac_cv_path_PKG_CONFIG" +fi + + ;; +(*) + PKG_CONFIG=$withval + ;; +esac + +test -z "$PKG_CONFIG" && PKG_CONFIG=none +if test "$PKG_CONFIG" != none ; then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$PKG_CONFIG" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval PKG_CONFIG="$PKG_CONFIG" + case ".$PKG_CONFIG" in + (.NONE/*) + PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + PKG_CONFIG=`echo "$PKG_CONFIG" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:6171: 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:6178: WARNING: pkg-config is not installed" >&5 +echo "$as_me: WARNING: pkg-config is not installed" >&2;} +fi + +echo "$as_me:6182: 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. +if test "${enable_echo+set}" = set; then + enableval="$enable_echo" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + + ECHO_LT='--silent' + ECHO_LD='@echo linking $@;' + RULE_CC='@echo compiling $<' + SHOW_CC='@echo compiling $@' + ECHO_CC='@' + + else + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + + fi +else + enableval=yes + + ECHO_LT='' + ECHO_LD='' + RULE_CC='' + SHOW_CC='' + ECHO_CC='' + +fi; +echo "$as_me:6216: result: $enableval" >&5 +echo "${ECHO_T}$enableval" >&6 + +echo "$as_me:6219: checking for ncurses wrap-prefix" >&5 +echo $ECHO_N "checking for ncurses wrap-prefix... $ECHO_C" >&6 + +# Check whether --with-ncurses-wrap-prefix or --without-ncurses-wrap-prefix was given. +if test "${with_ncurses_wrap_prefix+set}" = set; then + withval="$with_ncurses_wrap_prefix" + NCURSES_WRAP_PREFIX=$withval +else + NCURSES_WRAP_PREFIX=_nc_ +fi; +echo "$as_me:6229: result: $NCURSES_WRAP_PREFIX" >&5 +echo "${ECHO_T}$NCURSES_WRAP_PREFIX" >&6 + +echo "$as_me:6232: checking if you want to check for wide-character functions" >&5 +echo $ECHO_N "checking if you want to check for wide-character functions... $ECHO_C" >&6 + +# Check whether --enable-widec or --disable-widec was given. +if test "${enable_widec+set}" = set; then + enableval="$enable_widec" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + cf_enable_widec=no + else + cf_enable_widec=yes + fi +else + enableval=yes + cf_enable_widec=yes + +fi; +echo "$as_me:6249: result: $cf_enable_widec" >&5 +echo "${ECHO_T}$cf_enable_widec" >&6 + +echo "$as_me:6252: checking for specific curses-directory" >&5 +echo $ECHO_N "checking for specific curses-directory... $ECHO_C" >&6 + +# Check whether --with-curses-dir or --without-curses-dir was given. +if test "${with_curses_dir+set}" = set; then + withval="$with_curses_dir" + cf_cv_curses_dir=$withval +else + cf_cv_curses_dir=no +fi; +echo "$as_me:6262: result: $cf_cv_curses_dir" >&5 +echo "${ECHO_T}$cf_cv_curses_dir" >&6 + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$withval" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval withval="$withval" + case ".$withval" in + (.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + withval=`echo "$withval" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:6293: error: expected a pathname, not \"$withval\"" >&5 +echo "$as_me: error: expected a pathname, not \"$withval\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + + if test -d "$cf_cv_curses_dir" + then + +if test -n "$cf_cv_curses_dir/include" ; then + for cf_add_incdir in $cf_cv_curses_dir/include + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 6329 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:6341: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6344: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:6347: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6350: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:6367: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_curses_dir/lib" ; then + for cf_add_libdir in $cf_cv_curses_dir/lib + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:6403: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + fi +fi + +cf_cv_screen=curses + +echo "$as_me:6416: checking for specified curses library type" >&5 +echo $ECHO_N "checking for specified curses library type... $ECHO_C" >&6 + +# Check whether --with-screen or --without-screen was given. +if test "${with_screen+set}" = set; then + withval="$with_screen" + cf_cv_screen=$withval +else + +# Check whether --with-ncursesw or --without-ncursesw was given. +if test "${with_ncursesw+set}" = set; then + withval="$with_ncursesw" + cf_cv_screen=ncursesw +else + +# Check whether --with-ncurses or --without-ncurses was given. +if test "${with_ncurses+set}" = set; then + withval="$with_ncurses" + cf_cv_screen=ncurses +else + +# Check whether --with-pdcurses or --without-pdcurses was given. +if test "${with_pdcurses+set}" = set; then + withval="$with_pdcurses" + cf_cv_screen=pdcurses +else + +# Check whether --with-curses-colr or --without-curses-colr was given. +if test "${with_curses_colr+set}" = set; then + withval="$with_curses_colr" + cf_cv_screen=curses_colr +else + +# Check whether --with-curses-5lib or --without-curses-5lib was given. +if test "${with_curses_5lib+set}" = set; then + withval="$with_curses_5lib" + cf_cv_screen=curses_5lib +fi; +fi; +fi; +fi; +fi; +fi; + +echo "$as_me:6460: result: $cf_cv_screen" >&5 +echo "${ECHO_T}$cf_cv_screen" >&6 + +case $cf_cv_screen in +(curses|curses_*) + +echo "$as_me:6466: checking for extra include directories" >&5 +echo $ECHO_N "checking for extra include directories... $ECHO_C" >&6 +if test "${cf_cv_curses_incdir+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_curses_incdir=no +case "$host_os" in +(hpux10.*) + if test "x$cf_cv_screen" = "xcurses_colr" + then + test -d /usr/include/curses_colr && \ + cf_cv_curses_incdir="-I/usr/include/curses_colr" + fi + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + test -d /usr/5lib && \ + test -d /usr/5include && \ + cf_cv_curses_incdir="-I/usr/5include" + fi + ;; +esac + +fi +echo "$as_me:6492: result: $cf_cv_curses_incdir" >&5 +echo "${ECHO_T}$cf_cv_curses_incdir" >&6 +if test "$cf_cv_curses_incdir" != no +then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_cv_curses_incdir" + +fi + +echo "$as_me:6502: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h \ + curses.h ncurses/ncurses.h ncurses/curses.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 6514 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:6526: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6529: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:6532: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6535: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:6546: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:6550: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:6560: 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 6566 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:6570: \"$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:6576: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:6595: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +echo "$as_me:6605: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 6623 "configure" +#include "confdefs.h" +#include <stdio.h> +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:6638: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:6641: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:6644: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6647: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:6663: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +echo "$as_me:6695: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" <<EOF +#include <${cf_cv_ncurses_header:-curses.h}> +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:6721: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:6724: \$? = $ac_status" >&5 + (exit "$ac_status"); } + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 6734 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <stdio.h> +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:6759: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6762: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:6764: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6767: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f "$cf_tempfile" + +fi +echo "$as_me:6781: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:6788: checking if we have identified curses libraries" >&5 +echo $ECHO_N "checking if we have identified curses libraries... $ECHO_C" >&6 +cat >"conftest.$ac_ext" <<_ACEOF +#line 6791 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6803: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6806: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6809: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6812: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +echo "$as_me:6821: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + +if test "$cf_result" = no ; then +case "$host_os" in +(freebsd*) + echo "$as_me:6827: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 6835 "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 tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6854: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6857: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6860: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6863: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6874: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test "$ac_cv_lib_mytinfo_tgoto" = yes; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lmytinfo; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + + ;; +(hpux10.*) + # Looking at HPUX 10.20, the Hcurses library is the oldest (1997), cur_colr + # next (1998), and xcurses "newer" (2000). There is no header file for + # Hcurses; the subdirectory curses_colr has the headers (curses.h and + # term.h) for cur_colr + if test "x$cf_cv_screen" = "xcurses_colr" + then + echo "$as_me:6904: checking for initscr in -lcur_colr" >&5 +echo $ECHO_N "checking for initscr in -lcur_colr... $ECHO_C" >&6 +if test "${ac_cv_lib_cur_colr_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lcur_colr $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 6912 "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 initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:6931: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:6934: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:6937: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:6940: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_cur_colr_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_cur_colr_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:6951: result: $ac_cv_lib_cur_colr_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_cur_colr_initscr" >&6 +if test "$ac_cv_lib_cur_colr_initscr" = yes; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lcur_colr; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + ac_cv_func_initscr=yes + +else + + echo "$as_me:6975: checking for initscr in -lHcurses" >&5 +echo $ECHO_N "checking for initscr in -lHcurses... $ECHO_C" >&6 +if test "${ac_cv_lib_Hcurses_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lHcurses $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 6983 "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 initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7002: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7005: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7008: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7011: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_Hcurses_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_Hcurses_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7022: result: $ac_cv_lib_Hcurses_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_Hcurses_initscr" >&6 +if test "$ac_cv_lib_Hcurses_initscr" = yes; then + + # HP's header uses __HP_CURSES, but user claims _HP_CURSES. + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lHcurses; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D__HP_CURSES -D_HP_CURSES" + + ac_cv_func_initscr=yes + +fi + +fi + + fi + ;; +(linux*) + case `arch 2>/dev/null` in + (x86_64) + if test -d /lib64 + then + +if test -n "/lib64" ; then + for cf_add_libdir in /lib64 + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:7080: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + else + +if test -n "/lib" ; then + for cf_add_libdir in /lib + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:7109: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + fi + ;; + (*) + +if test -n "/lib" ; then + for cf_add_libdir in /lib + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:7140: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + + ;; + esac + ;; +(sunos3*|sunos4*) + if test "x$cf_cv_screen" = "xcurses_5lib" + then + if test -d /usr/5lib ; then + +if test -n "/usr/5lib" ; then + for cf_add_libdir in /usr/5lib + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:7175: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lcurses -ltermcap; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + fi + fi + ac_cv_func_initscr=yes + ;; +esac + +if test ".$ac_cv_func_initscr" != .yes ; then + cf_save_LIBS="$LIBS" + + if test ".${cf_cv_ncurses_version:-no}" != .no + then + cf_check_list="ncurses curses cursesX" + else + cf_check_list="cursesX curses ncurses" + fi + + # Check for library containing tgoto. Do this before curses library + # because it may be needed to link the test-case for initscr. + if test "x$cf_term_lib" = x + then + echo "$as_me:7219: checking for tgoto" >&5 +echo $ECHO_N "checking for tgoto... $ECHO_C" >&6 +if test "${ac_cv_func_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 7225 "configure" +#include "confdefs.h" +#define tgoto autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef tgoto + +#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 tgoto (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_tgoto) || defined (__stub___tgoto) +#error found stub for tgoto +#endif + + return tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7256: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7259: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7262: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7265: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_tgoto=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:7275: result: $ac_cv_func_tgoto" >&5 +echo "${ECHO_T}$ac_cv_func_tgoto" >&6 +if test "$ac_cv_func_tgoto" = yes; then + cf_term_lib=predefined +else + + for cf_term_lib in $cf_check_list otermcap termcap tinfo termlib unknown + do + as_ac_Lib=`echo "ac_cv_lib_$cf_term_lib''_tgoto" | $as_tr_sh` +echo "$as_me:7284: checking for tgoto in -l$cf_term_lib" >&5 +echo $ECHO_N "checking for tgoto in -l$cf_term_lib... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$cf_term_lib $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 7292 "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 tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7311: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7314: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7317: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7320: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Lib=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:7331: 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 + + : "${cf_nculib_root:=$cf_term_lib}" + break + +fi + + done + +fi + + fi + + # Check for library containing initscr + test "$cf_term_lib" != predefined && test "$cf_term_lib" != unknown && LIBS="-l$cf_term_lib $cf_save_LIBS" + if test "x$cf_curs_lib" = x + then + for cf_curs_lib in $cf_check_list xcurses jcurses pdcurses unknown + do + LIBS="-l$cf_curs_lib $cf_save_LIBS" + if test "$cf_term_lib" = unknown || test "$cf_term_lib" = "$cf_curs_lib" ; then + echo "$as_me:7354: checking if we can link with $cf_curs_lib library" >&5 +echo $ECHO_N "checking if we can link with $cf_curs_lib library... $ECHO_C" >&6 + cat >"conftest.$ac_ext" <<_ACEOF +#line 7357 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7369: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7372: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7375: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7378: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:7387: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + test "$cf_result" = yes && break + elif test "$cf_curs_lib" = "$cf_term_lib" ; then + cf_result=no + elif test "$cf_term_lib" != predefined ; then + echo "$as_me:7393: checking if we need both $cf_curs_lib and $cf_term_lib libraries" >&5 +echo $ECHO_N "checking if we need both $cf_curs_lib and $cf_term_lib libraries... $ECHO_C" >&6 + cat >"conftest.$ac_ext" <<_ACEOF +#line 7396 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); tgoto((char *)0, 0, 0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7408: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7411: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7414: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7417: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + LIBS="-l$cf_curs_lib -l$cf_term_lib $cf_save_LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 7426 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7438: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7441: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7444: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7447: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=error +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:7459: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + test "$cf_result" != error && break + fi + done + fi + test "$cf_curs_lib" = unknown && { { echo "$as_me:7465: error: no curses library found" >&5 +echo "$as_me: error: no curses library found" >&2;} + { (exit 1); exit 1; }; } +fi +fi + + ;; +(ncursesw*) + +for ac_header in wchar.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:7477: 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 7483 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:7487: \"$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:7493: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:7512: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +echo "$as_me:7522: 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 +else + + cf_save_LIBS="$LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 7530 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <stdio.h> +#ifdef HAVE_WCHAR_H +#include <wchar.h> +#endif + +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7548: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7551: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7554: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7557: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_utf8_lib=yes +else + echo "$as_me: failed program was:" >&5 +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. +cf_cv_header_path_utf8= +cf_cv_library_path_utf8= + +echo "${as_me:-configure}:7569: testing Starting FIND_LINKAGE(utf8,) ..." 1>&5 + +cf_save_LIBS="$LIBS" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 7574 "configure" +#include "confdefs.h" + +#include <libutf8.h> +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7587: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7590: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7593: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7596: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +LIBS="-lutf8 $cf_save_LIBS" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 7610 "configure" +#include "confdefs.h" + +#include <libutf8.h> +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7623: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7626: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7629: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7632: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_find_linkage_utf8=yes + cf_cv_header_path_utf8=/usr/include + cf_cv_library_path_utf8=/usr/lib + cf_cv_library_file_utf8="-lutf8" + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_find_linkage_utf8=no + LIBS="$cf_save_LIBS" + + test -n "$verbose" && echo " find linkage for utf8 library" 1>&6 + +echo "${as_me:-configure}:7649: testing find linkage for utf8 library ..." 1>&5 + +echo "${as_me:-configure}:7651: testing Searching for headers in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_CPPFLAGS="$CPPFLAGS" + cf_test_CPPFLAGS="$CPPFLAGS" + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/utf8" && cf_search="$cf_search $cf_header_path/include/utf8" + test -d "$cf_header_path/include/utf8/include" && cf_search="$cf_search $cf_header_path/include/utf8/include" + test -d "$cf_header_path/utf8/include" && cf_search="$cf_search $cf_header_path/utf8/include" + test -d "$cf_header_path/utf8/include/utf8" && cf_search="$cf_search $cf_header_path/utf8/include/utf8" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/utf8" && cf_search="$cf_search $prefix/include/utf8" + test -d "$prefix/include/utf8/include" && cf_search="$cf_search $prefix/include/utf8/include" + test -d "$prefix/utf8/include" && cf_search="$cf_search $prefix/utf8/include" + test -d "$prefix/utf8/include/utf8" && cf_search="$cf_search $prefix/utf8/include/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/utf8" && cf_search="$cf_search $cf_subdir_prefix/include/utf8" + test -d "$cf_subdir_prefix/include/utf8/include" && cf_search="$cf_search $cf_subdir_prefix/include/utf8/include" + test -d "$cf_subdir_prefix/utf8/include" && cf_search="$cf_search $cf_subdir_prefix/utf8/include" + test -d "$cf_subdir_prefix/utf8/include/utf8" && cf_search="$cf_search $cf_subdir_prefix/utf8/include/utf8" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/utf8" && cf_search="$cf_search $includedir/utf8" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/utf8" && cf_search="$cf_search $oldincludedir/utf8" +} + +cf_search="$cf_search $cf_header_path_list" + + for cf_cv_header_path_utf8 in $cf_search + do + 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}:7742: testing ... testing $cf_cv_header_path_utf8 ..." 1>&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_cv_header_path_utf8" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 7750 "configure" +#include "confdefs.h" + +#include <libutf8.h> +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:7763: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7766: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:7769: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7772: \$? = $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}:7777: testing ... found utf8 headers in $cf_cv_header_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=maybe + cf_test_CPPFLAGS="$CPPFLAGS" + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi + done + + if test "$cf_cv_find_linkage_utf8" = maybe ; then + +echo "${as_me:-configure}:7795: testing Searching for utf8 library in FIND_LINKAGE(utf8,) ..." 1>&5 + + cf_save_LIBS="$LIBS" + cf_save_LDFLAGS="$LDFLAGS" + + if test "$cf_cv_find_linkage_utf8" != yes ; then + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/utf8" && cf_search="$cf_search $cf_library_path/lib/utf8" + test -d "$cf_library_path/lib/utf8/lib" && cf_search="$cf_search $cf_library_path/lib/utf8/lib" + test -d "$cf_library_path/utf8/lib" && cf_search="$cf_search $cf_library_path/utf8/lib" + test -d "$cf_library_path/utf8/lib/utf8" && cf_search="$cf_search $cf_library_path/utf8/lib/utf8" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/utf8" && cf_search="$cf_search $prefix/lib/utf8" + test -d "$prefix/lib/utf8/lib" && cf_search="$cf_search $prefix/lib/utf8/lib" + test -d "$prefix/utf8/lib" && cf_search="$cf_search $prefix/utf8/lib" + test -d "$prefix/utf8/lib/utf8" && cf_search="$cf_search $prefix/utf8/lib/utf8" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/utf8" && cf_search="$cf_search $cf_subdir_prefix/lib/utf8" + test -d "$cf_subdir_prefix/lib/utf8/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/utf8/lib" + test -d "$cf_subdir_prefix/utf8/lib" && cf_search="$cf_search $cf_subdir_prefix/utf8/lib" + test -d "$cf_subdir_prefix/utf8/lib/utf8" && cf_search="$cf_search $cf_subdir_prefix/utf8/lib/utf8" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_cv_library_path_utf8 in $cf_search + do + 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}:7870: 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 7876 "configure" +#include "confdefs.h" + +#include <libutf8.h> +int +main (void) +{ +putwc(0,0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:7889: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:7892: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:7895: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:7898: \$? = $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}:7903: testing ... found utf8 library in $cf_cv_library_path_utf8 ..." 1>&5 + + cf_cv_find_linkage_utf8=yes + cf_cv_library_file_utf8="-lutf8" + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + LDFLAGS="$cf_save_LDFLAGS" + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + fi + done + CPPFLAGS="$cf_save_CPPFLAGS" + LDFLAGS="$cf_save_LDFLAGS" + fi + + else + cf_cv_find_linkage_utf8=no + fi + +fi +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_LIBS" + +if test "$cf_cv_find_linkage_utf8" = yes ; then +cf_cv_utf8_lib=add-on +else +cf_cv_utf8_lib=no +fi + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:7945: 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 +# ncurses/ncursesw: +if test "$cf_cv_utf8_lib" = "add-on" ; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBUTF8_H 1 +EOF + +if test -n "$cf_cv_header_path_utf8" ; then + for cf_add_incdir in $cf_cv_header_path_utf8 + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 7983 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:7995: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:7998: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8001: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8004: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:8021: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +if test -n "$cf_cv_library_path_utf8" ; then + for cf_add_libdir in $cf_cv_library_path_utf8 + do + if test "$cf_add_libdir" = /usr/lib ; then + : + elif test -d "$cf_add_libdir" + then + cf_have_libdir=no + if test -n "$LDFLAGS$LIBS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_libdir in $LDFLAGS $LIBS ; do + if test ".$cf_test_libdir" = ".-L$cf_add_libdir" ; then + cf_have_libdir=yes; break + fi + done + fi + if test "$cf_have_libdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_libdir to library-path" 1>&6 + +echo "${as_me:-configure}:8057: testing adding $cf_add_libdir to library-path ..." 1>&5 + + LDFLAGS="-L$cf_add_libdir $LDFLAGS" + fi + fi + done +fi + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_cv_library_file_utf8; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +cf_ncuconfig_root=$cf_cv_screen +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:8087: checking pkg-config for $cf_ncuconfig_root" >&5 +echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + echo "$as_me:8090: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:8093: checking if the $cf_ncuconfig_root package files work" >&5 +echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6 + cf_have_ncuconfig=unknown + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`" + cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" + + # while -W for passing linker flags is prevalent, it is not "standard". + # At least one wrapper for c89/c99 (in Apple's xcode) has its own + # incompatible _and_ non-standard -W option which gives an error. Work + # around that pitfall. + case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in + (x*c[89]9@@*-W*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkg_cflags +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 8226 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:8238: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8241: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:8244: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8247: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_test_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 8253 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:8260: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8263: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:8265: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8268: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_test_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + + if test "x$cf_test_ncuconfig" != xyes; then + cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_cflags="$cf_temp" + cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_libs="$cf_temp" + fi + ;; + esac + +for cf_add_cflags in $cf_pkg_cflags +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 8442 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:8454: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8457: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:8460: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8463: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 8469 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:8476: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:8479: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:8481: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8484: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:8501: result: $cf_have_ncuconfig" >&5 +echo "${ECHO_T}$cf_have_ncuconfig" >&6 + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + +echo "$as_me:8517: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 8535 "configure" +#include "confdefs.h" +#include <stdio.h> +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8550: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8553: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8556: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8559: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:8575: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + + fi + + else + echo "$as_me:8610: result: no" >&5 +echo "${ECHO_T}no" >&6 + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + +if test -n "$ac_tool_prefix"; then + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config + 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:8626: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NCURSES_CONFIG"; then + ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:8641: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG +if test -n "$NCURSES_CONFIG"; then + echo "$as_me:8649: result: $NCURSES_CONFIG" >&5 +echo "${ECHO_T}$NCURSES_CONFIG" >&6 +else + echo "$as_me:8652: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NCURSES_CONFIG" && break + done +fi +if test -z "$NCURSES_CONFIG"; then + ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config +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:8665: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NCURSES_CONFIG"; then + ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # 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_ac_ct_NCURSES_CONFIG="$ac_prog" +echo "$as_me:8680: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG +if test -n "$ac_ct_NCURSES_CONFIG"; then + echo "$as_me:8688: result: $ac_ct_NCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6 +else + echo "$as_me:8691: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_NCURSES_CONFIG" && break +done +test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none" + + NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG +fi + + if test "$NCURSES_CONFIG" != none ; then + +for cf_add_cflags in `$NCURSES_CONFIG --cflags` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + # even with config script, some packages use no-override for curses.h + +echo "$as_me:8848: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h $cf_cv_screen/ncurses.h \ + curses.h $cf_cv_screen/curses.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 8860 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:8872: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:8875: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:8878: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:8881: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:8892: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:8896: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:8906: 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 8912 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:8916: \"$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:8922: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:8941: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_nculib_ROOT 1 +EOF + + cf_cv_ncurses_version="`$NCURSES_CONFIG --version`" + + else + +cf_ncuhdr_root=$cf_cv_screen + +test -n "$cf_cv_curses_dir" && \ +test "$cf_cv_curses_dir" != "no" && { \ + +if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then + for cf_add_incdir in $cf_cv_curses_dir/include/$cf_ncuhdr_root + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 8997 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9009: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9012: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9015: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9018: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:9035: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +} + +echo "$as_me:9054: checking for $cf_ncuhdr_root header in include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 9066 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9090: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9093: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9096: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9099: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + test "$cf_cv_ncurses_h" != no && break + done + +fi +echo "$as_me:9114: result: $cf_cv_ncurses_h" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h" >&6 + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +echo "$as_me:9121: checking for $cf_ncuhdr_root include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$verbose" && echo + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" + test -d "$cf_header_path/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" + test -d "$prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/$cf_ncuhdr_root" && cf_search="$cf_search $includedir/$cf_ncuhdr_root" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/$cf_ncuhdr_root" && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" +} + +cf_search="$cf_search $cf_header_path_list" + + test -n "$verbose" && echo "search path $cf_search" + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + +if test -n "$cf_incdir" ; then + for cf_add_incdir in $cf_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 9242 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9254: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9257: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9260: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9263: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:9280: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + for cf_header in \ + ncurses.h \ + curses.h + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 9303 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9327: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9330: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9333: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9336: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h2=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h2=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:9357: error: not found" >&5 +echo "$as_me: error: not found" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:9362: result: $cf_cv_ncurses_h2" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 + + cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'` + cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`" + if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then + cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header" + fi + +if test -n "$cf_1st_incdir" ; then + for cf_add_incdir in $cf_1st_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 9398 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9410: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9413: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9416: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9419: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:9436: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case "$cf_cv_ncurses_header" in +(*ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_H 1 +EOF + + ;; +esac + +case "$cf_cv_ncurses_header" in +(ncurses/curses.h|ncurses/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_NCURSES_H 1 +EOF + + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_NCURSES_H 1 +EOF + + ;; +esac + +echo "$as_me:9484: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 9502 "configure" +#include "confdefs.h" +#include <stdio.h> +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:9517: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:9520: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:9523: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9526: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:9542: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +# some applications need this, but should check for NCURSES_VERSION + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:9580: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" <<EOF +#include <${cf_cv_ncurses_header:-curses.h}> +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:9606: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:9609: \$? = $ac_status" >&5 + (exit "$ac_status"); } + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 9619 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <stdio.h> +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:9644: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9647: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:9649: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9652: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f "$cf_tempfile" + +fi +echo "$as_me:9666: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_root=$cf_cv_screen + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +echo "$as_me:9679: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 9687 "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 Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9706: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9709: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9712: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9715: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:9726: 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 + echo "$as_me:9729: checking for initscr in -lgpm" >&5 +echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 9737 "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 initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9756: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9759: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9762: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9765: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:9776: result: $ac_cv_lib_gpm_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 +if test "$ac_cv_lib_gpm_initscr" = yes; then + LIBS="$cf_ncurses_SAVE" +else + cf_ncurses_LIBS="-lgpm" +fi + +fi + +case "$host_os" in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it is static). + if test "$cf_nculib_root" = ncurses ; then + echo "$as_me:9791: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 9799 "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 tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9818: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9821: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9824: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9827: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:9838: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test "$ac_cv_lib_mytinfo_tgoto" = yes; then + cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" +fi + + fi + ;; +esac + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +else + + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no' + cf_libdir="" + echo "$as_me:9887: checking for initscr" >&5 +echo $ECHO_N "checking for initscr... $ECHO_C" >&6 +if test "${ac_cv_func_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 9893 "configure" +#include "confdefs.h" +#define initscr autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef initscr + +#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 initscr (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_initscr) || defined (__stub___initscr) +#error found stub for initscr +#endif + + return initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9924: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9927: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9930: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9933: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:9943: result: $ac_cv_func_initscr" >&5 +echo "${ECHO_T}$ac_cv_func_initscr" >&6 +if test "$ac_cv_func_initscr" = yes; then + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' +else + + cf_save_LIBS="$LIBS" + echo "$as_me:9950: checking for initscr in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 + LIBS="-l$cf_nculib_root $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 9954 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:9966: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:9969: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:9972: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:9975: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:9977: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:9984: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" + test -d "$cf_library_path/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/lib/$cf_nculib_root" + test -d "$prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_libdir in $cf_search + do + echo "$as_me:10052: checking for -l$cf_nculib_root in $cf_libdir" >&5 +echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 + LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 10056 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:10068: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10071: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:10074: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10077: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:10079: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:10086: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_save_LIBS" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi + +eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\" + +if test "$cf_found_library" = no ; then + { { echo "$as_me:10101: error: Cannot link $cf_nculib_root library" >&5 +echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +if test -n "$cf_ncurses_LIBS" ; then + echo "$as_me:10109: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 +echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + cat >"conftest.$ac_ext" <<_ACEOF +#line 10119 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:10131: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10134: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:10137: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10140: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:10142: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:10147: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_ncurses_SAVE" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <<EOF +#define $cf_nculib_ROOT 1 +EOF + + fi +else + NCURSES_CONFIG=none +fi + + ;; +(ncurses*) + +cf_ncuconfig_root=$cf_cv_screen +cf_have_ncuconfig=no + +if test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:10172: checking pkg-config for $cf_ncuconfig_root" >&5 +echo $ECHO_N "checking pkg-config for $cf_ncuconfig_root... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists $cf_ncuconfig_root ; then + echo "$as_me:10175: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:10178: checking if the $cf_ncuconfig_root package files work" >&5 +echo $ECHO_N "checking if the $cf_ncuconfig_root package files work... $ECHO_C" >&6 + cf_have_ncuconfig=unknown + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + + cf_pkg_cflags="`$PKG_CONFIG --cflags $cf_ncuconfig_root`" + cf_pkg_libs="`$PKG_CONFIG --libs $cf_ncuconfig_root`" + + # while -W for passing linker flags is prevalent, it is not "standard". + # At least one wrapper for c89/c99 (in Apple's xcode) has its own + # incompatible _and_ non-standard -W option which gives an error. Work + # around that pitfall. + case "x${CC}@@${cf_pkg_libs}@${cf_pkg_cflags}" in + (x*c[89]9@@*-W*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkg_cflags +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10311 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:10323: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10326: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:10329: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10332: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_test_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 10338 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:10345: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10348: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:10350: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10353: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_test_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_test_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + + if test "x$cf_test_ncuconfig" != xyes; then + cf_temp=`echo "x$cf_pkg_cflags" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_cflags="$cf_temp" + cf_temp=`echo "x$cf_pkg_libs" | sed -e s/^x// -e 's/-W[^ ]*//g'` + cf_pkg_libs="$cf_temp" + fi + ;; + esac + +for cf_add_cflags in $cf_pkg_cflags +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkg_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 10527 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:10539: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10542: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:10545: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10548: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_ncuconfig=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 10554 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> + int main(void) + { const char *xx = curses_version(); return (xx == 0); } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:10561: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:10564: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:10566: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10569: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_ncuconfig=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_ncuconfig=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:10586: result: $cf_have_ncuconfig" >&5 +echo "${ECHO_T}$cf_have_ncuconfig" >&6 + test "$cf_have_ncuconfig" = maybe && cf_have_ncuconfig=yes + if test "$cf_have_ncuconfig" != "yes" + then + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + NCURSES_CONFIG_PKG=none + else + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + + NCURSES_CONFIG_PKG=$cf_ncuconfig_root + +echo "$as_me:10602: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 10620 "configure" +#include "confdefs.h" +#include <stdio.h> +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10635: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10638: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10641: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10644: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:10660: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + + fi + + else + echo "$as_me:10695: result: no" >&5 +echo "${ECHO_T}no" >&6 + NCURSES_CONFIG_PKG=none + fi +else + NCURSES_CONFIG_PKG=none +fi + +if test "x$cf_have_ncuconfig" = "xno"; then + cf_ncurses_config="${cf_ncuconfig_root}${NCURSES_CONFIG_SUFFIX}-config"; echo "Looking for ${cf_ncurses_config}" + +if test -n "$ac_tool_prefix"; then + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config + 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:10711: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NCURSES_CONFIG"; then + ac_cv_prog_NCURSES_CONFIG="$NCURSES_CONFIG" # 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_NCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:10726: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +NCURSES_CONFIG=$ac_cv_prog_NCURSES_CONFIG +if test -n "$NCURSES_CONFIG"; then + echo "$as_me:10734: result: $NCURSES_CONFIG" >&5 +echo "${ECHO_T}$NCURSES_CONFIG" >&6 +else + echo "$as_me:10737: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$NCURSES_CONFIG" && break + done +fi +if test -z "$NCURSES_CONFIG"; then + ac_ct_NCURSES_CONFIG=$NCURSES_CONFIG + for ac_prog in ${cf_ncurses_config} ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}6-config ${cf_ncuconfig_root}5-config +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:10750: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NCURSES_CONFIG"; then + ac_cv_prog_ac_ct_NCURSES_CONFIG="$ac_ct_NCURSES_CONFIG" # 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_ac_ct_NCURSES_CONFIG="$ac_prog" +echo "$as_me:10765: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_NCURSES_CONFIG=$ac_cv_prog_ac_ct_NCURSES_CONFIG +if test -n "$ac_ct_NCURSES_CONFIG"; then + echo "$as_me:10773: result: $ac_ct_NCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_NCURSES_CONFIG" >&6 +else + echo "$as_me:10776: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_NCURSES_CONFIG" && break +done +test -n "$ac_ct_NCURSES_CONFIG" || ac_ct_NCURSES_CONFIG="none" + + NCURSES_CONFIG=$ac_ct_NCURSES_CONFIG +fi + + if test "$NCURSES_CONFIG" != none ; then + +for cf_add_cflags in `$NCURSES_CONFIG --cflags` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$NCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + # even with config script, some packages use no-override for curses.h + +echo "$as_me:10933: checking if we have identified curses headers" >&5 +echo $ECHO_N "checking if we have identified curses headers... $ECHO_C" >&6 +if test "${cf_cv_ncurses_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_ncurses_header=none +for cf_header in \ + ncurses.h $cf_cv_screen/ncurses.h \ + curses.h $cf_cv_screen/curses.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 10945 "configure" +#include "confdefs.h" +#include <${cf_header}> +int +main (void) +{ +initscr(); tgoto("?", 0,0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:10957: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:10960: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:10963: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:10966: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_header=$cf_header; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:10977: result: $cf_cv_ncurses_header" >&5 +echo "${ECHO_T}$cf_cv_ncurses_header" >&6 + +if test "$cf_cv_ncurses_header" = none ; then + { { echo "$as_me:10981: error: No curses header-files found" >&5 +echo "$as_me: error: No curses header-files found" >&2;} + { (exit 1); exit 1; }; } +fi + +# cheat, to get the right #define's for HAVE_NCURSES_H, etc. + +for ac_header in $cf_cv_ncurses_header +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:10991: 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 10997 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:11001: \"$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:11007: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:11026: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_ncuconfig_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_nculib_ROOT 1 +EOF + + cf_cv_ncurses_version="`$NCURSES_CONFIG --version`" + + else + +cf_ncuhdr_root=$cf_cv_screen + +test -n "$cf_cv_curses_dir" && \ +test "$cf_cv_curses_dir" != "no" && { \ + +if test -n "$cf_cv_curses_dir/include/$cf_ncuhdr_root" ; then + for cf_add_incdir in $cf_cv_curses_dir/include/$cf_ncuhdr_root + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11082 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11094: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11097: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11100: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11103: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:11120: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +} + +echo "$as_me:11139: checking for $cf_ncuhdr_root header in include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root header in include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_header_list="$cf_ncuhdr_root/curses.h $cf_ncuhdr_root/ncurses.h" + { test "$cf_ncuhdr_root" = ncurses || test "$cf_ncuhdr_root" = ncursesw; } && cf_header_list="$cf_header_list curses.h ncurses.h" + for cf_header in $cf_header_list + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11151 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11175: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11178: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11181: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11184: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + test "$cf_cv_ncurses_h" != no && break + done + +fi +echo "$as_me:11199: result: $cf_cv_ncurses_h" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h" >&6 + +if test "$cf_cv_ncurses_h" != no ; then + cf_cv_ncurses_header=$cf_cv_ncurses_h +else + +echo "$as_me:11206: checking for $cf_ncuhdr_root include-path" >&5 +echo $ECHO_N "checking for $cf_ncuhdr_root include-path... $ECHO_C" >&6 +if test "${cf_cv_ncurses_h2+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + test -n "$verbose" && echo + +cf_search= + +# collect the current set of include-directories from compiler flags +cf_header_path_list="" +if test -n "${CFLAGS}${CPPFLAGS}" ; then + for cf_header_path in $CPPFLAGS $CFLAGS + do + case "$cf_header_path" in + (-I*) + cf_header_path=`echo ".$cf_header_path" |sed -e 's/^...//' -e 's,/include$,,'` + +test "x$cf_header_path" != "xNONE" && \ +test -d "$cf_header_path" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $cf_header_path" + test -d "$cf_header_path/include" && cf_search="$cf_search $cf_header_path/include" + test -d "$cf_header_path/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root" + test -d "$cf_header_path/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/include/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include" + test -d "$cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_header_path/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + + cf_header_path_list="$cf_header_path_list $cf_search" + ;; + esac + done +fi + +# add the variations for the package we are looking for + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for include-directories under $prefix" + test -d "$prefix/include" && cf_search="$cf_search $prefix/include" + test -d "$prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root" + test -d "$prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/include/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include" + test -d "$prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for include-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/include" && cf_search="$cf_search $cf_subdir_prefix/include" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root" + test -d "$cf_subdir_prefix/include/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/include/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include" + test -d "$cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_ncuhdr_root/include/$cf_ncuhdr_root" +} + +done + +test "$includedir" != NONE && \ +test "$includedir" != "/usr/include" && \ +test -d "$includedir" && { + test -d "$includedir" && cf_search="$cf_search $includedir" + test -d "$includedir/$cf_ncuhdr_root" && cf_search="$cf_search $includedir/$cf_ncuhdr_root" +} + +test "$oldincludedir" != NONE && \ +test "$oldincludedir" != "/usr/include" && \ +test -d "$oldincludedir" && { + test -d "$oldincludedir" && cf_search="$cf_search $oldincludedir" + test -d "$oldincludedir/$cf_ncuhdr_root" && cf_search="$cf_search $oldincludedir/$cf_ncuhdr_root" +} + +cf_search="$cf_search $cf_header_path_list" + + test -n "$verbose" && echo "search path $cf_search" + cf_save2_CPPFLAGS="$CPPFLAGS" + for cf_incdir in $cf_search + do + +if test -n "$cf_incdir" ; then + for cf_add_incdir in $cf_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11327 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11339: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11342: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11345: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11348: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:11365: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + + for cf_header in \ + ncurses.h \ + curses.h + do + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11388 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ + +#ifdef NCURSES_VERSION + +printf("%s\\n", NCURSES_VERSION); +#else +#ifdef __NCURSES_H +printf("old\\n"); +#else + make an error +#endif +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11412: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11415: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11418: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11421: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_h2=$cf_header + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_h2=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + + if test "$cf_cv_ncurses_h2" != no ; then + cf_cv_ncurses_h2=$cf_incdir/$cf_header + test -n "$verbose" && echo $ECHO_N " ... found $ECHO_C" 1>&6 + break + fi + test -n "$verbose" && echo " ... tested $cf_incdir/$cf_header" 1>&6 + done + CPPFLAGS="$cf_save2_CPPFLAGS" + test "$cf_cv_ncurses_h2" != no && break + done + test "$cf_cv_ncurses_h2" = no && { { echo "$as_me:11442: error: not found" >&5 +echo "$as_me: error: not found" >&2;} + { (exit 1); exit 1; }; } + +fi +echo "$as_me:11447: result: $cf_cv_ncurses_h2" >&5 +echo "${ECHO_T}$cf_cv_ncurses_h2" >&6 + + cf_1st_incdir=`echo "$cf_cv_ncurses_h2" | sed -e 's%/[^/]*$%%'` + cf_cv_ncurses_header="`basename "$cf_cv_ncurses_h2"`" + if test "`basename "$cf_1st_incdir"`" = "$cf_ncuhdr_root" ; then + cf_cv_ncurses_header="$cf_ncuhdr_root/$cf_cv_ncurses_header" + fi + +if test -n "$cf_1st_incdir" ; then + for cf_add_incdir in $cf_1st_incdir + do + while test "$cf_add_incdir" != /usr/include + do + if test -d "$cf_add_incdir" + then + cf_have_incdir=no + if test -n "$CFLAGS$CPPFLAGS" ; then + # a loop is needed to ensure we can add subdirs of existing dirs + for cf_test_incdir in $CFLAGS $CPPFLAGS ; do + if test ".$cf_test_incdir" = ".-I$cf_add_incdir" ; then + cf_have_incdir=yes; break + fi + done + fi + + if test "$cf_have_incdir" = no ; then + if test "$cf_add_incdir" = /usr/local/include ; then + if test "$GCC" = yes + then + cf_save_CPPFLAGS=$CPPFLAGS + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_add_incdir" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 11483 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello") + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11495: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11498: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11501: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11504: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_incdir=yes +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS=$cf_save_CPPFLAGS + fi + fi + fi + + if test "$cf_have_incdir" = no ; then + test -n "$verbose" && echo " adding $cf_add_incdir to include-path" 1>&6 + +echo "${as_me:-configure}:11521: testing adding $cf_add_incdir to include-path ..." 1>&5 + + CPPFLAGS="$CPPFLAGS -I$cf_add_incdir" + + cf_top_incdir=`echo "$cf_add_incdir" | sed -e 's%/include/.*$%/include%'` + test "$cf_top_incdir" = "$cf_add_incdir" && break + cf_add_incdir="$cf_top_incdir" + else + break + fi + else + break + fi + done + done +fi + +fi + +# Set definitions to allow ifdef'ing for ncurses.h + +case "$cf_cv_ncurses_header" in +(*ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_H 1 +EOF + + ;; +esac + +case "$cf_cv_ncurses_header" in +(ncurses/curses.h|ncurses/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_NCURSES_H 1 +EOF + + ;; +(ncursesw/curses.h|ncursesw/ncurses.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_NCURSES_H 1 +EOF + + ;; +esac + +echo "$as_me:11569: checking for terminfo header" >&5 +echo $ECHO_N "checking for terminfo header... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +case "${cf_cv_ncurses_header}" in +(*/ncurses.h|*/ncursesw.h) + cf_term_header=`echo "$cf_cv_ncurses_header" | sed -e 's%ncurses[^.]*\.h$%term.h%'` + ;; +(*) + cf_term_header=term.h + ;; +esac + +for cf_test in $cf_term_header "ncurses/term.h" "ncursesw/term.h" +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 11587 "configure" +#include "confdefs.h" +#include <stdio.h> +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_test> + +int +main (void) +{ +int x = auto_left_margin; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:11602: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:11605: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:11608: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11611: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_term_header="$cf_test" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_term_header=unknown + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + test "$cf_cv_term_header" != unknown && break +done + +fi +echo "$as_me:11627: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +# Set definitions to allow ifdef'ing to accommodate subdirectories + +case "$cf_cv_term_header" in +(*term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +esac + +case "$cf_cv_term_header" in +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +# some applications need this, but should check for NCURSES_VERSION + +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +echo "$as_me:11665: checking for ncurses version" >&5 +echo $ECHO_N "checking for ncurses version... $ECHO_C" >&6 +if test "${cf_cv_ncurses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_ncurses_version=no + cf_tempfile=out$$ + rm -f "$cf_tempfile" + if test "$cross_compiling" = yes; then + + # This will not work if the preprocessor splits the line after the + # Autoconf token. The 'unproto' program does that. + cat > "conftest.$ac_ext" <<EOF +#include <${cf_cv_ncurses_header:-curses.h}> +#undef Autoconf +#ifdef NCURSES_VERSION +Autoconf NCURSES_VERSION +#else +#ifdef __NCURSES_H +Autoconf "old" +#endif +; +#endif +EOF + cf_try="$ac_cpp conftest.$ac_ext 2>&5 | grep '^Autoconf ' >conftest.out" + { (eval echo "$as_me:11691: \"$cf_try\"") >&5 + (eval $cf_try) 2>&5 + ac_status=$? + echo "$as_me:11694: \$? = $ac_status" >&5 + (exit "$ac_status"); } + if test -f conftest.out ; then + cf_out=`sed -e 's%^Autoconf %%' -e 's%^[^"]*"%%' -e 's%".*%%' conftest.out` + test -n "$cf_out" && cf_cv_ncurses_version="$cf_out" + rm -f conftest.out + fi + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 11704 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <stdio.h> +int main(void) +{ + FILE *fp = fopen("$cf_tempfile", "w"); +#ifdef NCURSES_VERSION +# ifdef NCURSES_VERSION_PATCH + fprintf(fp, "%s.%d\\n", NCURSES_VERSION, NCURSES_VERSION_PATCH); +# else + fprintf(fp, "%s\\n", NCURSES_VERSION); +# endif +#else +# ifdef __NCURSES_H + fprintf(fp, "old\\n"); +# else + make an error +# endif +#endif + ${cf_cv_main_return:-return}(0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:11729: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11732: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:11734: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11737: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_ncurses_version=`cat $cf_tempfile` +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + rm -f "$cf_tempfile" + +fi +echo "$as_me:11751: result: $cf_cv_ncurses_version" >&5 +echo "${ECHO_T}$cf_cv_ncurses_version" >&6 +test "$cf_cv_ncurses_version" = no || +cat >>confdefs.h <<\EOF +#define NCURSES 1 +EOF + +cf_nculib_root=$cf_cv_screen + # This works, except for the special case where we find gpm, but + # ncurses is in a nonstandard location via $LIBS, and we really want + # to link gpm. +cf_ncurses_LIBS="" +cf_ncurses_SAVE="$LIBS" +echo "$as_me:11764: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 11772 "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 Gpm_Open (); +int +main (void) +{ +Gpm_Open (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11791: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11794: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11797: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11800: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_Gpm_Open=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_Gpm_Open=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:11811: 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 + echo "$as_me:11814: checking for initscr in -lgpm" >&5 +echo $ECHO_N "checking for initscr in -lgpm... $ECHO_C" >&6 +if test "${ac_cv_lib_gpm_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lgpm $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 11822 "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 initscr (); +int +main (void) +{ +initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11841: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11844: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11847: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11850: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_gpm_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_gpm_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:11861: result: $ac_cv_lib_gpm_initscr" >&5 +echo "${ECHO_T}$ac_cv_lib_gpm_initscr" >&6 +if test "$ac_cv_lib_gpm_initscr" = yes; then + LIBS="$cf_ncurses_SAVE" +else + cf_ncurses_LIBS="-lgpm" +fi + +fi + +case "$host_os" in +(freebsd*) + # This is only necessary if you are linking against an obsolete + # version of ncurses (but it should do no harm, since it is static). + if test "$cf_nculib_root" = ncurses ; then + echo "$as_me:11876: checking for tgoto in -lmytinfo" >&5 +echo $ECHO_N "checking for tgoto in -lmytinfo... $ECHO_C" >&6 +if test "${ac_cv_lib_mytinfo_tgoto+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lmytinfo $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 11884 "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 tgoto (); +int +main (void) +{ +tgoto (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:11903: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:11906: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:11909: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:11912: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_mytinfo_tgoto=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_mytinfo_tgoto=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:11923: result: $ac_cv_lib_mytinfo_tgoto" >&5 +echo "${ECHO_T}$ac_cv_lib_mytinfo_tgoto" >&6 +if test "$ac_cv_lib_mytinfo_tgoto" = yes; then + cf_ncurses_LIBS="-lmytinfo $cf_ncurses_LIBS" +fi + + fi + ;; +esac + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_ncurses_LIBS; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +if test -n "$cf_cv_curses_dir" && test "$cf_cv_curses_dir" != "no" +then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$cf_nculib_root; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +else + + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=no' + cf_libdir="" + echo "$as_me:11972: checking for initscr" >&5 +echo $ECHO_N "checking for initscr... $ECHO_C" >&6 +if test "${ac_cv_func_initscr+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 11978 "configure" +#include "confdefs.h" +#define initscr autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef initscr + +#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 initscr (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_initscr) || defined (__stub___initscr) +#error found stub for initscr +#endif + + return initscr (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12009: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12012: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12015: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12018: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_initscr=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_initscr=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:12028: result: $ac_cv_func_initscr" >&5 +echo "${ECHO_T}$ac_cv_func_initscr" >&6 +if test "$ac_cv_func_initscr" = yes; then + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' +else + + cf_save_LIBS="$LIBS" + echo "$as_me:12035: checking for initscr in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for initscr in -l$cf_nculib_root... $ECHO_C" >&6 + LIBS="-l$cf_nculib_root $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12039 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12051: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12054: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12057: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12060: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:12062: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:12069: result: no" >&5 +echo "${ECHO_T}no" >&6 + +cf_search= +cf_library_path_list="" +if test -n "${LDFLAGS}${LIBS}" ; then + for cf_library_path in $LDFLAGS $LIBS + do + case "$cf_library_path" in + (-L*) + cf_library_path=`echo ".$cf_library_path" |sed -e 's/^...//' -e 's,/lib$,,'` + +test "x$cf_library_path" != "xNONE" && \ +test -d "$cf_library_path" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_library_path" + test -d "$cf_library_path/lib" && cf_search="$cf_search $cf_library_path/lib" + test -d "$cf_library_path/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root" + test -d "$cf_library_path/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/lib/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib" + test -d "$cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_library_path/$cf_nculib_root/lib/$cf_nculib_root" +} + + cf_library_path_list="$cf_library_path_list $cf_search" + ;; + esac + done +fi + +cf_search= + +test "x$prefix" != "xNONE" && \ +test -d "$prefix" && \ + { + test -n "$verbose" && echo " ... testing for lib-directories under $prefix" + test -d "$prefix/lib" && cf_search="$cf_search $prefix/lib" + test -d "$prefix/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/lib/$cf_nculib_root" + test -d "$prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/lib/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib" && cf_search="$cf_search $prefix/$cf_nculib_root/lib" + test -d "$prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +for cf_subdir_prefix in \ + /usr \ + /usr/local \ + /usr/pkg \ + /opt \ + /opt/local \ + $HOME +do + +test "x$cf_subdir_prefix" != "x$prefix" && \ +test -d "$cf_subdir_prefix" && \ +{ test -z "$prefix" || test "x$prefix" = xNONE || test "x$cf_subdir_prefix" != "x$prefix"; } && { + test -n "$verbose" && echo " ... testing for lib-directories under $cf_subdir_prefix" + test -d "$cf_subdir_prefix/lib" && cf_search="$cf_search $cf_subdir_prefix/lib" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root" + test -d "$cf_subdir_prefix/lib/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/lib/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib" + test -d "$cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" && cf_search="$cf_search $cf_subdir_prefix/$cf_nculib_root/lib/$cf_nculib_root" +} + +done + +cf_search="$cf_library_path_list $cf_search" + + for cf_libdir in $cf_search + do + echo "$as_me:12137: checking for -l$cf_nculib_root in $cf_libdir" >&5 +echo $ECHO_N "checking for -l$cf_nculib_root in $cf_libdir... $ECHO_C" >&6 + LIBS="-L$cf_libdir -l$cf_nculib_root $cf_save_LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12141 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr() + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12153: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12156: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12159: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12162: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:12164: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + eval 'cf_cv_have_lib_'"$cf_nculib_root"'=yes' + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:12171: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_save_LIBS" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi + +eval 'cf_found_library="$cf_cv_have_lib_'"$cf_nculib_root"\" + +if test "$cf_found_library" = no ; then + { { echo "$as_me:12186: error: Cannot link $cf_nculib_root library" >&5 +echo "$as_me: error: Cannot link $cf_nculib_root library" >&2;} + { (exit 1); exit 1; }; } +fi + +fi + +if test -n "$cf_ncurses_LIBS" ; then + echo "$as_me:12194: checking if we can link $cf_nculib_root without $cf_ncurses_LIBS" >&5 +echo $ECHO_N "checking if we can link $cf_nculib_root without $cf_ncurses_LIBS... $ECHO_C" >&6 + cf_ncurses_SAVE="$LIBS" + for p in $cf_ncurses_LIBS ; do + q=`echo "$LIBS" | sed -e "s%$p %%" -e "s%$p$%%"` + if test "$q" != "$LIBS" ; then + LIBS="$q" + fi + done + cat >"conftest.$ac_ext" <<_ACEOF +#line 12204 "configure" +#include "confdefs.h" +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +initscr(); mousemask(0,0); tigetstr((char *)0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12216: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12219: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12222: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12225: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + echo "$as_me:12227: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:12232: result: no" >&5 +echo "${ECHO_T}no" >&6 + LIBS="$cf_ncurses_SAVE" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + +cf_nculib_ROOT=`echo "HAVE_LIB$cf_nculib_root" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <<EOF +#define $cf_nculib_ROOT 1 +EOF + + fi +else + NCURSES_CONFIG=none +fi + + ;; +(pdcurses) + echo "$as_me:12252: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6 + +# Check whether --with-x or --without-x was given. +if test "${with_x+set}" = set; then + withval="$with_x" + +fi; +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'EOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +EOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval "`${MAKE-make} acfindx 2>/dev/null | grep -v make`" + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R7/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/opt/local/include +/opt/X11/include + +/usr/include/X11 +/usr/include/X11R7 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R7/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R7 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + cat >"conftest.$ac_ext" <<_ACEOF +#line 12356 "configure" +#include "confdefs.h" +#include <X11/Intrinsic.h> +_ACEOF +if { (eval echo "$as_me:12360: \"$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:12366: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err "conftest.$ac_ext" +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12399 "configure" +#include "confdefs.h" +#include <X11/Intrinsic.h> +int +main (void) +{ +XtMalloc (0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12411: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12414: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12417: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12420: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl dylib dll; do + if test -r "$ac_dir/libXt.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi # $ac_x_libraries = no + +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +fi +fi + + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + echo "$as_me:12458: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6 + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" + echo "$as_me:12468: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 +fi + +if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +cat >>confdefs.h <<\EOF +#define X_DISPLAY_MISSING 1 +EOF + + X_CFLAGS= + X_PRE_LIBS= + X_LIBS= + X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + echo "$as_me:12495: checking whether -R must be followed by a space" >&5 +echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12499 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12511: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12514: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12517: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12520: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_R_nospace=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_R_nospace=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + if test $ac_R_nospace = yes; then + echo "$as_me:12530: result: no" >&5 +echo "${ECHO_T}no" >&6 + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12536 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12548: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12551: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12554: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12557: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_R_space=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + if test $ac_R_space = yes; then + echo "$as_me:12567: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me:12571: result: neither works" >&5 +echo "${ECHO_T}neither works" >&6 + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat >"conftest.$ac_ext" <<_ACEOF +#line 12591 "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 XOpenDisplay (); +int +main (void) +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12610: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12613: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12616: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12619: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:12625: checking for dnet_ntoa in -ldnet" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 12633 "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 dnet_ntoa (); +int +main (void) +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12652: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12655: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12658: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12661: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dnet_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:12672: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +if test "$ac_cv_lib_dnet_dnet_ntoa" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + echo "$as_me:12679: checking for dnet_ntoa in -ldnet_stub" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 12687 "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 dnet_ntoa (); +int +main (void) +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12706: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12709: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12712: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12715: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:12726: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +if test "$ac_cv_lib_dnet_stub_dnet_ntoa" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + echo "$as_me:12745: checking for gethostbyname" >&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 12751 "configure" +#include "confdefs.h" +#define gethostbyname autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef gethostbyname + +#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 gethostbyname (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_gethostbyname) || defined (__stub___gethostbyname) +#error found stub for gethostbyname +#endif + + return gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12782: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12785: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12788: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12791: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_gethostbyname=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:12801: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + + if test $ac_cv_func_gethostbyname = no; then + echo "$as_me:12805: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 12813 "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 gethostbyname (); +int +main (void) +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12832: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12835: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12838: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12841: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:12852: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test "$ac_cv_lib_nsl_gethostbyname" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + echo "$as_me:12859: checking for gethostbyname in -lbsd" >&5 +echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 12867 "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 gethostbyname (); +int +main (void) +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12886: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12889: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12892: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12895: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_bsd_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_bsd_gethostbyname=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:12906: result: $ac_cv_lib_bsd_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +if test "$ac_cv_lib_bsd_gethostbyname" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the nameserver (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + echo "$as_me:12922: checking for connect" >&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 12928 "configure" +#include "confdefs.h" +#define connect autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef connect + +#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 connect (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_connect) || defined (__stub___connect) +#error found stub for connect +#endif + + return connect (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:12959: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:12962: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:12965: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:12968: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_connect=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:12978: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 + + if test $ac_cv_func_connect = no; then + echo "$as_me:12982: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 12990 "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 connect (); +int +main (void) +{ +connect (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13009: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13012: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13015: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13018: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_socket_connect=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:13029: result: $ac_cv_lib_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test "$ac_cv_lib_socket_connect" = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + echo "$as_me:13038: checking for remove" >&5 +echo $ECHO_N "checking for remove... $ECHO_C" >&6 +if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 13044 "configure" +#include "confdefs.h" +#define remove autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef remove + +#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 remove (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_remove) || defined (__stub___remove) +#error found stub for remove +#endif + + return remove (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13075: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13078: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13081: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13084: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_remove=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:13094: result: $ac_cv_func_remove" >&5 +echo "${ECHO_T}$ac_cv_func_remove" >&6 + + if test $ac_cv_func_remove = no; then + echo "$as_me:13098: checking for remove in -lposix" >&5 +echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 13106 "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 remove (); +int +main (void) +{ +remove (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13125: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13128: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13131: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13134: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_posix_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_posix_remove=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:13145: result: $ac_cv_lib_posix_remove" >&5 +echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +if test "$ac_cv_lib_posix_remove" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + echo "$as_me:13154: checking for shmat" >&5 +echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 13160 "configure" +#include "confdefs.h" +#define shmat autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef shmat + +#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 shmat (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_shmat) || defined (__stub___shmat) +#error found stub for shmat +#endif + + return shmat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13191: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13194: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13197: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13200: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_shmat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:13210: result: $ac_cv_func_shmat" >&5 +echo "${ECHO_T}$ac_cv_func_shmat" >&6 + + if test $ac_cv_func_shmat = no; then + echo "$as_me:13214: checking for shmat in -lipc" >&5 +echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 13222 "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 shmat (); +int +main (void) +{ +shmat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13241: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13244: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13247: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13250: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_ipc_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_ipc_shmat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:13261: result: $ac_cv_lib_ipc_shmat" >&5 +echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +if test "$ac_cv_lib_ipc_shmat" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + echo "$as_me:13279: checking for IceConnectionNumber in -lICE" >&5 +echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 13287 "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 IceConnectionNumber (); +int +main (void) +{ +IceConnectionNumber (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13306: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13309: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13312: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13315: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_ICE_IceConnectionNumber=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:13326: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +if test "$ac_cv_lib_ICE_IceConnectionNumber" = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + +cf_x_athena=${cf_x_athena:-Xaw} + +echo "$as_me:13338: checking if you want to link with Xaw 3d library" >&5 +echo $ECHO_N "checking if you want to link with Xaw 3d library... $ECHO_C" >&6 +withval= + +# Check whether --with-Xaw3d or --without-Xaw3d was given. +if test "${with_Xaw3d+set}" = set; then + withval="$with_Xaw3d" + +fi; +if test "$withval" = yes ; then + cf_x_athena=Xaw3d + echo "$as_me:13349: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:13352: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:13356: checking if you want to link with Xaw 3d xft library" >&5 +echo $ECHO_N "checking if you want to link with Xaw 3d xft library... $ECHO_C" >&6 +withval= + +# Check whether --with-Xaw3dxft or --without-Xaw3dxft was given. +if test "${with_Xaw3dxft+set}" = set; then + withval="$with_Xaw3dxft" + +fi; +if test "$withval" = yes ; then + cf_x_athena=Xaw3dxft + echo "$as_me:13367: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:13370: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:13374: checking if you want to link with neXT Athena library" >&5 +echo $ECHO_N "checking if you want to link with neXT Athena library... $ECHO_C" >&6 +withval= + +# Check whether --with-neXtaw or --without-neXtaw was given. +if test "${with_neXtaw+set}" = set; then + withval="$with_neXtaw" + +fi; +if test "$withval" = yes ; then + cf_x_athena=neXtaw + echo "$as_me:13385: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:13388: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +echo "$as_me:13392: checking if you want to link with Athena-Plus library" >&5 +echo $ECHO_N "checking if you want to link with Athena-Plus library... $ECHO_C" >&6 +withval= + +# Check whether --with-XawPlus or --without-XawPlus was given. +if test "${with_XawPlus+set}" = set; then + withval="$with_XawPlus" + +fi; +if test "$withval" = yes ; then + cf_x_athena=XawPlus + echo "$as_me:13403: result: yes" >&5 +echo "${ECHO_T}yes" >&6 +else + echo "$as_me:13406: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +cf_x_athena_lib="" + +if test "$PKG_CONFIG" != none ; then + cf_athena_list= + test "$cf_x_athena" = Xaw && cf_athena_list="xaw8 xaw7 xaw6" + for cf_athena_pkg in \ + $cf_athena_list \ + ${cf_x_athena} \ + ${cf_x_athena}-devel \ + lib${cf_x_athena} \ + lib${cf_x_athena}-devel + do + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$cf_athena_pkg"; then + test -n "$verbose" && echo " found package $cf_athena_pkg" 1>&6 + +echo "${as_me:-configure}:13426: testing found package $cf_athena_pkg ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "$cf_athena_pkg" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "$cf_athena_pkg" 2>/dev/null`" + test -n "$verbose" && echo " package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:13432: testing package $cf_athena_pkg CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package $cf_athena_pkg LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:13436: testing package $cf_athena_pkg LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cf_x_athena_lib="$cf_pkgconfig_libs" + +cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_x_athena_LIBS 1 +EOF + + for cf_trim_lib in Xmu Xt X11 + do + case "$LIBS" in + (*-l$cf_trim_lib\ *-l$cf_trim_lib*) + LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` + test -n "$verbose" && echo " ..trimmed $LIBS" 1>&6 + +echo "${as_me:-configure}:13567: testing ..trimmed $LIBS ..." 1>&5 + + ;; + esac + done + +echo "$as_me:13573: checking for usable $cf_x_athena/Xmu package" >&5 +echo $ECHO_N "checking for usable $cf_x_athena/Xmu package... $ECHO_C" >&6 +if test "${cf_cv_xaw_compat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >"conftest.$ac_ext" <<_ACEOF +#line 13580 "configure" +#include "confdefs.h" + +#include <X11/Xmu/CharSet.h> + +int +main (void) +{ + +int check = XmuCompareISOLatin1("big", "small"); +(void)check; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13597: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13600: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13603: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13606: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xaw_compat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xaw_compat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:13616: result: $cf_cv_xaw_compat" >&5 +echo "${ECHO_T}$cf_cv_xaw_compat" >&6 + + if test "$cf_cv_xaw_compat" = no + then + # workaround for broken ".pc" files... + case "$cf_x_athena_lib" in + (*-lXmu*) + ;; + (*) + test -n "$verbose" && echo " work around broken package" 1>&6 + +echo "${as_me:-configure}:13628: testing work around broken package ..." 1>&5 + + cf_save_xmu="$LIBS" + cf_first_lib=`echo "$cf_save_xmu" | sed -e 's/^ *//' -e 's/ .*//'` + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "xmu"; then + test -n "$verbose" && echo " found package xmu" 1>&6 + +echo "${as_me:-configure}:13636: testing found package xmu ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "xmu" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "xmu" 2>/dev/null`" + test -n "$verbose" && echo " package xmu CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:13642: testing package xmu CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package xmu LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:13646: testing package xmu LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + LIBS="$cf_save_xmu" + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:13766: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib $cf_pkgconfig_libs %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:13771: testing ...after $LIBS ..." 1>&5 + +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:13779: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%$cf_first_lib %$cf_first_lib -lXmu %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:13784: testing ...after $LIBS ..." 1>&5 + +fi + + for cf_trim_lib in Xmu Xt X11 + do + case "$LIBS" in + (*-l$cf_trim_lib\ *-l$cf_trim_lib*) + LIBS=`echo "$LIBS " | sed -e 's/ / /g' -e 's%-l'"$cf_trim_lib"' %%' -e 's/ $//'` + test -n "$verbose" && echo " ..trimmed $LIBS" 1>&6 + +echo "${as_me:-configure}:13795: testing ..trimmed $LIBS ..." 1>&5 + + ;; + esac + done + + ;; + esac + fi + + break +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + : +fi + + done +fi + +if test -z "$cf_x_athena_lib" ; then + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "Xext"; then + test -n "$verbose" && echo " found package Xext" 1>&6 + +echo "${as_me:-configure}:13820: testing found package Xext ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "Xext" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "Xext" 2>/dev/null`" + test -n "$verbose" && echo " package Xext CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:13826: testing package Xext CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package Xext LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:13830: testing package Xext LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + + echo "$as_me:13951: checking for XextCreateExtension in -lXext" >&5 +echo $ECHO_N "checking for XextCreateExtension in -lXext... $ECHO_C" >&6 +if test "${ac_cv_lib_Xext_XextCreateExtension+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXext $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 13959 "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 XextCreateExtension (); +int +main (void) +{ +XextCreateExtension (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:13978: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:13981: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:13984: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:13987: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_Xext_XextCreateExtension=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_Xext_XextCreateExtension=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:13998: result: $ac_cv_lib_Xext_XextCreateExtension" >&5 +echo "${ECHO_T}$ac_cv_lib_Xext_XextCreateExtension" >&6 +if test "$ac_cv_lib_Xext_XextCreateExtension" = yes; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lXext; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +fi + +# OSX is schizoid about who owns /usr/X11 (old) versus /opt/X11 (new) (and +# in some cases has installed dummy files in the former, other cases replaced +# it with a link to the new location). This complicates the configure script. +# Check for that pitfall, and recover using pkg-config +# +# If none of these are set, the configuration is almost certainly broken. +if test -z "${X_CFLAGS}${X_PRE_LIBS}${X_LIBS}${X_EXTRA_LIBS}" +then + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "x11"; then + test -n "$verbose" && echo " found package x11" 1>&6 + +echo "${as_me:-configure}:14034: testing found package x11 ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "x11" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "x11" 2>/dev/null`" + test -n "$verbose" && echo " package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:14040: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package x11 LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:14044: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:14164: WARNING: unable to find X11 library" >&5 +echo "$as_me: WARNING: unable to find X11 library" >&2;} +fi + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "ice"; then + test -n "$verbose" && echo " found package ice" 1>&6 + +echo "${as_me:-configure}:14171: testing found package ice ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "ice" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "ice" 2>/dev/null`" + test -n "$verbose" && echo " package ice CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:14177: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package ice LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:14181: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:14301: WARNING: unable to find ICE library" >&5 +echo "$as_me: WARNING: unable to find ICE library" >&2;} +fi + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "sm"; then + test -n "$verbose" && echo " found package sm" 1>&6 + +echo "${as_me:-configure}:14308: testing found package sm ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "sm" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "sm" 2>/dev/null`" + test -n "$verbose" && echo " package sm CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:14314: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package sm LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:14318: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:14438: WARNING: unable to find SM library" >&5 +echo "$as_me: WARNING: unable to find SM library" >&2;} +fi + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "xt"; then + test -n "$verbose" && echo " found package xt" 1>&6 + +echo "${as_me:-configure}:14445: testing found package xt ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "xt" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "xt" 2>/dev/null`" + test -n "$verbose" && echo " package xt CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:14451: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package xt LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:14455: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + { echo "$as_me:14575: WARNING: unable to find Xt library" >&5 +echo "$as_me: WARNING: unable to find Xt library" >&2;} +fi + +else + LIBS="$X_PRE_LIBS $LIBS $X_EXTRA_LIBS" +fi + +cf_have_X_LIBS=no + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "xt"; then + test -n "$verbose" && echo " found package xt" 1>&6 + +echo "${as_me:-configure}:14588: testing found package xt ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "xt" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "xt" 2>/dev/null`" + test -n "$verbose" && echo " package xt CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:14594: testing package xt CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package xt LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:14598: testing package xt LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + case "x$LIBS" in + (*-lX11*) + ;; + (*) +# we have an "xt" package, but it may omit Xt's dependency on X11 +echo "$as_me:14719: checking for usable X dependency" >&5 +echo $ECHO_N "checking for usable X dependency... $ECHO_C" >&6 +if test "${cf_cv_xt_x11_compat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >"conftest.$ac_ext" <<_ACEOF +#line 14726 "configure" +#include "confdefs.h" + +#include <X11/Xlib.h> + +int +main (void) +{ + + int rc1 = XDrawLine((Display*) 0, (Drawable) 0, (GC) 0, 0, 0, 0, 0); + int rc2 = XClearWindow((Display*) 0, (Window) 0); + int rc3 = XMoveWindow((Display*) 0, (Window) 0, 0, 0); + int rc4 = XMoveResizeWindow((Display*)0, (Window)0, 0, 0, 0, 0); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:14745: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:14748: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:14751: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14754: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xt_x11_compat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xt_x11_compat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:14764: result: $cf_cv_xt_x11_compat" >&5 +echo "${ECHO_T}$cf_cv_xt_x11_compat" >&6 + if test "$cf_cv_xt_x11_compat" = no + then + test -n "$verbose" && echo " work around broken X11 dependency" 1>&6 + +echo "${as_me:-configure}:14770: testing work around broken X11 dependency ..." 1>&5 + + # 2010/11/19 - good enough until a working Xt on Xcb is delivered. + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "x11"; then + test -n "$verbose" && echo " found package x11" 1>&6 + +echo "${as_me:-configure}:14777: testing found package x11 ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "x11" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "x11" 2>/dev/null`" + test -n "$verbose" && echo " package x11 CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:14783: testing package x11 CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package x11 LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:14787: testing package x11 LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:14910: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%-lXt %-lXt -lX11 %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:14915: testing ...after $LIBS ..." 1>&5 + +fi + + fi + ;; + esac + +echo "$as_me:14923: checking for usable X Toolkit package" >&5 +echo $ECHO_N "checking for usable X Toolkit package... $ECHO_C" >&6 +if test "${cf_cv_xt_ice_compat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >"conftest.$ac_ext" <<_ACEOF +#line 14930 "configure" +#include "confdefs.h" + +#include <X11/Shell.h> + +int +main (void) +{ +int num = IceConnectionNumber(0); (void) num + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:14945: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:14948: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:14951: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:14954: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_xt_ice_compat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_xt_ice_compat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:14964: result: $cf_cv_xt_ice_compat" >&5 +echo "${ECHO_T}$cf_cv_xt_ice_compat" >&6 + + if test "$cf_cv_xt_ice_compat" = no + then + # workaround for broken ".pc" files used for X Toolkit. + case "x$X_PRE_LIBS" in + (*-lICE*) + case "x$LIBS" in + (*-lICE*) + ;; + (*) + test -n "$verbose" && echo " work around broken ICE dependency" 1>&6 + +echo "${as_me:-configure}:14978: testing work around broken ICE dependency ..." 1>&5 + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "ice"; then + test -n "$verbose" && echo " found package ice" 1>&6 + +echo "${as_me:-configure}:14983: testing found package ice ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "ice" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "ice" 2>/dev/null`" + test -n "$verbose" && echo " package ice CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:14989: testing package ice CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package ice LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:14993: testing package ice LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "sm"; then + test -n "$verbose" && echo " found package sm" 1>&6 + +echo "${as_me:-configure}:15112: testing found package sm ..." 1>&5 + + cf_pkgconfig_incs="`$PKG_CONFIG --cflags "sm" 2>/dev/null`" + cf_pkgconfig_libs="`$PKG_CONFIG --libs "sm" 2>/dev/null`" + test -n "$verbose" && echo " package sm CFLAGS: $cf_pkgconfig_incs" 1>&6 + +echo "${as_me:-configure}:15118: testing package sm CFLAGS: $cf_pkgconfig_incs ..." 1>&5 + + test -n "$verbose" && echo " package sm LIBS: $cf_pkgconfig_libs" 1>&6 + +echo "${as_me:-configure}:15122: testing package sm LIBS: $cf_pkgconfig_libs ..." 1>&5 + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_pkgconfig_incs +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_pkgconfig_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + : +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + : +fi + +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + +test -n "$verbose" && echo " ...before $LIBS" 1>&6 + +echo "${as_me:-configure}:15251: testing ...before $LIBS ..." 1>&5 + +LIBS=`echo "$LIBS" | sed -e "s/[ ][ ]*/ /g" -e "s%-lXt %-lXt $X_PRE_LIBS %" -e 's% % %g'` +test -n "$verbose" && echo " ...after $LIBS" 1>&6 + +echo "${as_me:-configure}:15256: testing ...after $LIBS ..." 1>&5 + +fi + + ;; + esac + ;; + esac + fi + + cf_have_X_LIBS=yes + +else + cf_pkgconfig_incs= + cf_pkgconfig_libs= + + LDFLAGS="$X_LIBS $LDFLAGS" + +test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6 + +echo "${as_me:-configure}:15276: testing checking additions to CFLAGS ..." 1>&5 + +cf_check_cflags="$CFLAGS" +cf_check_cppflags="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $X_CFLAGS +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 "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:15361: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:15371: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +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}:15381: 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" + +fi + +if test "x$cf_check_cflags" != "x$CFLAGS" ; then +cat >"conftest.$ac_ext" <<_ACEOF +#line 15390 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello world"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15402: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15405: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15408: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15411: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6 + +echo "${as_me:-configure}:15419: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5 + + if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then + test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:15424: testing but keeping change to \$CPPFLAGS ..." 1>&5 + + fi + CFLAGS="$cf_check_cflags" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + + echo "$as_me:15432: checking for XOpenDisplay" >&5 +echo $ECHO_N "checking for XOpenDisplay... $ECHO_C" >&6 +if test "${ac_cv_func_XOpenDisplay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 15438 "configure" +#include "confdefs.h" +#define XOpenDisplay autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef XOpenDisplay + +#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 XOpenDisplay (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_XOpenDisplay) || defined (__stub___XOpenDisplay) +#error found stub for XOpenDisplay +#endif + + return XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15469: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15472: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15475: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15478: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_XOpenDisplay=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_XOpenDisplay=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:15488: result: $ac_cv_func_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_func_XOpenDisplay" >&6 +if test "$ac_cv_func_XOpenDisplay" = yes; then + : +else + + echo "$as_me:15494: checking for XOpenDisplay in -lX11" >&5 +echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6 +if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 15502 "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 XOpenDisplay (); +int +main (void) +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15521: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15524: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15527: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15530: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_X11_XOpenDisplay=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_X11_XOpenDisplay=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:15541: result: $ac_cv_lib_X11_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6 +if test "$ac_cv_lib_X11_XOpenDisplay" = yes; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lX11; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +fi + + echo "$as_me:15565: checking for XtAppInitialize" >&5 +echo $ECHO_N "checking for XtAppInitialize... $ECHO_C" >&6 +if test "${ac_cv_func_XtAppInitialize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 15571 "configure" +#include "confdefs.h" +#define XtAppInitialize autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef XtAppInitialize + +#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 XtAppInitialize (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_XtAppInitialize) || defined (__stub___XtAppInitialize) +#error found stub for XtAppInitialize +#endif + + return XtAppInitialize (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15602: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15605: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15608: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15611: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_XtAppInitialize=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_XtAppInitialize=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:15621: result: $ac_cv_func_XtAppInitialize" >&5 +echo "${ECHO_T}$ac_cv_func_XtAppInitialize" >&6 +if test "$ac_cv_func_XtAppInitialize" = yes; then + : +else + + echo "$as_me:15627: checking for XtAppInitialize in -lXt" >&5 +echo $ECHO_N "checking for XtAppInitialize in -lXt... $ECHO_C" >&6 +if test "${ac_cv_lib_Xt_XtAppInitialize+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lXt $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 15635 "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 XtAppInitialize (); +int +main (void) +{ +XtAppInitialize (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15654: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15657: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15660: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15663: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_Xt_XtAppInitialize=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_Xt_XtAppInitialize=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:15674: result: $ac_cv_lib_Xt_XtAppInitialize" >&5 +echo "${ECHO_T}$ac_cv_lib_Xt_XtAppInitialize" >&6 +if test "$ac_cv_lib_Xt_XtAppInitialize" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_LIBXT 1 +EOF + + cf_have_X_LIBS=Xt + LIBS="-lXt $LIBS" +fi + +fi + +fi + +if test "$cf_have_X_LIBS" = no ; then + { echo "$as_me:15691: WARNING: Unable to successfully link X Toolkit library (-lXt) with +test program. You will have to check and add the proper libraries by hand +to makefile." >&5 +echo "$as_me: WARNING: Unable to successfully link X Toolkit library (-lXt) with +test program. You will have to check and add the proper libraries by hand +to makefile." >&2;} +fi + +cf_x_athena_root=$cf_x_athena +cf_x_athena_inc="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + if test -z "$cf_x_athena_inc" ; then + +cf_save_LIBS_CF_X_ATHENA_CPPFLAGS="$LIBS" +cf_save_CFLAGS_CF_X_ATHENA_CPPFLAGS="$CFLAGS" +cf_save_CPPFLAGS_CF_X_ATHENA_CPPFLAGS="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[IUD]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done + + cf_test=X11/$cf_x_athena_root/SimpleMenu.h + if test "$cf_path" != default ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_path/include" + + echo "$as_me:15732: checking for $cf_test in $cf_path" >&5 +echo $ECHO_N "checking for $cf_test in $cf_path... $ECHO_C" >&6 + else + echo "$as_me:15735: checking for $cf_test" >&5 +echo $ECHO_N "checking for $cf_test... $ECHO_C" >&6 + fi + cat >"conftest.$ac_ext" <<_ACEOF +#line 15739 "configure" +#include "confdefs.h" + +#include <X11/Intrinsic.h> +#include <$cf_test> +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:15753: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:15756: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:15759: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15762: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:15771: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + +LIBS="$cf_save_LIBS_CF_X_ATHENA_CPPFLAGS" +CFLAGS="$cf_save_CFLAGS_CF_X_ATHENA_CPPFLAGS" +CPPFLAGS="$cf_save_CPPFLAGS_CF_X_ATHENA_CPPFLAGS" + + if test "$cf_result" = yes ; then + test "$cf_path" = default && cf_x_athena_inc=default + test "$cf_path" != default && cf_x_athena_inc="$cf_path/include" + break + fi + fi +done + +if test -z "$cf_x_athena_inc" ; then + { echo "$as_me:15787: WARNING: Unable to find Athena header files" >&5 +echo "$as_me: WARNING: Unable to find Athena header files" >&2;} +elif test "$cf_x_athena_inc" != default ; then + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-I$cf_x_athena_inc" + +fi + +cf_x_athena_root=$cf_x_athena +cf_x_athena_lib="" + +for cf_path in default \ + /usr/contrib/X11R6 \ + /usr/contrib/X11R5 \ + /usr/lib/X11R5 \ + /usr/local +do + for cf_lib in \ + ${cf_x_athena_root} \ + ${cf_x_athena_root}7 \ + ${cf_x_athena_root}6 + do + for cf_libs in \ + "-l$cf_lib -lXmu" \ + "-l$cf_lib -lXpm -lXmu" \ + "-l${cf_lib}_s -lXmu_s" + do + test -n "$cf_x_athena_lib" && break + +cf_save_LIBS_CF_X_ATHENA_LIBS="$LIBS" +cf_save_CFLAGS_CF_X_ATHENA_LIBS="$CFLAGS" +cf_save_CPPFLAGS_CF_X_ATHENA_LIBS="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[IUD]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done + + cf_test=XawSimpleMenuAddGlobalActions + test "$cf_path" != default && cf_libs="-L$cf_path/lib $cf_libs" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_libs; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + echo "$as_me:15852: checking for $cf_test in $cf_libs" >&5 +echo $ECHO_N "checking for $cf_test in $cf_libs... $ECHO_C" >&6 + cat >"conftest.$ac_ext" <<_ACEOF +#line 15855 "configure" +#include "confdefs.h" + +#include <X11/Intrinsic.h> +#include <X11/$cf_x_athena_root/SimpleMenu.h> + +int +main (void) +{ + +$cf_test((XtAppContext) 0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:15871: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:15874: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:15877: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:15880: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:15889: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + +LIBS="$cf_save_LIBS_CF_X_ATHENA_LIBS" +CFLAGS="$cf_save_CFLAGS_CF_X_ATHENA_LIBS" +CPPFLAGS="$cf_save_CPPFLAGS_CF_X_ATHENA_LIBS" + + if test "$cf_result" = yes ; then + cf_x_athena_lib="$cf_libs" + break + fi + done # cf_libs + test -n "$cf_x_athena_lib" && break + done # cf_lib +done + +if test -z "$cf_x_athena_lib" ; then + { { echo "$as_me:15906: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&5 +echo "$as_me: error: Unable to successfully link Athena library (-l$cf_x_athena_root) with test program" >&2;} + { (exit 1); exit 1; }; } +fi + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in $cf_x_athena_lib; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +cf_x_athena_LIBS=`echo "HAVE_LIB_$cf_x_athena" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <<EOF +#define $cf_x_athena_LIBS 1 +EOF + +fi + +if test -n "$ac_tool_prefix"; then + for ac_prog in xcurses-config + 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:15940: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_XCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$XCURSES_CONFIG"; then + ac_cv_prog_XCURSES_CONFIG="$XCURSES_CONFIG" # 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_XCURSES_CONFIG="$ac_tool_prefix$ac_prog" +echo "$as_me:15955: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +XCURSES_CONFIG=$ac_cv_prog_XCURSES_CONFIG +if test -n "$XCURSES_CONFIG"; then + echo "$as_me:15963: result: $XCURSES_CONFIG" >&5 +echo "${ECHO_T}$XCURSES_CONFIG" >&6 +else + echo "$as_me:15966: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$XCURSES_CONFIG" && break + done +fi +if test -z "$XCURSES_CONFIG"; then + ac_ct_XCURSES_CONFIG=$XCURSES_CONFIG + for ac_prog in xcurses-config +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:15979: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_XCURSES_CONFIG+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_XCURSES_CONFIG"; then + ac_cv_prog_ac_ct_XCURSES_CONFIG="$ac_ct_XCURSES_CONFIG" # 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_ac_ct_XCURSES_CONFIG="$ac_prog" +echo "$as_me:15994: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +ac_ct_XCURSES_CONFIG=$ac_cv_prog_ac_ct_XCURSES_CONFIG +if test -n "$ac_ct_XCURSES_CONFIG"; then + echo "$as_me:16002: result: $ac_ct_XCURSES_CONFIG" >&5 +echo "${ECHO_T}$ac_ct_XCURSES_CONFIG" >&6 +else + echo "$as_me:16005: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$ac_ct_XCURSES_CONFIG" && break +done +test -n "$ac_ct_XCURSES_CONFIG" || ac_ct_XCURSES_CONFIG="none" + + XCURSES_CONFIG=$ac_ct_XCURSES_CONFIG +fi + +if test "$XCURSES_CONFIG" != none ; then + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in `$XCURSES_CONFIG --cflags` +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 + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$XCURSES_CONFIG --libs`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +cf_cv_lib_XCurses=yes + +else + +LDFLAGS="$LDFLAGS $X_LIBS" + +test -n "$verbose" && echo " checking additions to CFLAGS" 1>&6 + +echo "${as_me:-configure}:16140: testing checking additions to CFLAGS ..." 1>&5 + +cf_check_cflags="$CFLAGS" +cf_check_cppflags="$CPPFLAGS" + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $X_CFLAGS +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 "$verbose" && echo " add to \$CFLAGS $cf_new_cflags" 1>&6 + +echo "${as_me:-configure}:16225: testing add to \$CFLAGS $cf_new_cflags ..." 1>&5 + + test -n "$CFLAGS" && CFLAGS="$CFLAGS " + CFLAGS="${CFLAGS}$cf_new_cflags" + +fi + +if test -n "$cf_new_cppflags" ; then + test -n "$verbose" && echo " add to \$CPPFLAGS $cf_new_cppflags" 1>&6 + +echo "${as_me:-configure}:16235: testing add to \$CPPFLAGS $cf_new_cppflags ..." 1>&5 + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}$cf_new_cppflags" + +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}:16245: 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" + +fi + +if test "x$cf_check_cflags" != "x$CFLAGS" ; then +cat >"conftest.$ac_ext" <<_ACEOF +#line 16254 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello world"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16266: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16269: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16272: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16275: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +test -n "$verbose" && echo " test-compile failed. Undoing change to \$CFLAGS" 1>&6 + +echo "${as_me:-configure}:16283: testing test-compile failed. Undoing change to \$CFLAGS ..." 1>&5 + + if test "x$cf_check_cppflags" != "x$CPPFLAGS" ; then + test -n "$verbose" && echo " but keeping change to \$CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:16288: testing but keeping change to \$CPPFLAGS ..." 1>&5 + + fi + CFLAGS="$cf_check_cflags" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + +echo "$as_me:16296: checking for XOpenDisplay in -lX11" >&5 +echo $ECHO_N "checking for XOpenDisplay in -lX11... $ECHO_C" >&6 +if test "${ac_cv_lib_X11_XOpenDisplay+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lX11 $X_PRE_LIBS $LIBS $X_EXTRA_LIBS $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 16304 "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 XOpenDisplay (); +int +main (void) +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16323: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16326: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16329: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16332: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_X11_XOpenDisplay=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_X11_XOpenDisplay=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:16343: result: $ac_cv_lib_X11_XOpenDisplay" >&5 +echo "${ECHO_T}$ac_cv_lib_X11_XOpenDisplay" >&6 +if test "$ac_cv_lib_X11_XOpenDisplay" = yes; then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lX11; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +echo "$as_me:16365: checking for XCurses library" >&5 +echo $ECHO_N "checking for XCurses library... $ECHO_C" >&6 +if test "${cf_cv_lib_XCurses+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lXCurses; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +cat >"conftest.$ac_ext" <<_ACEOF +#line 16388 "configure" +#include "confdefs.h" + +#include <xcurses.h> +char *XCursesProgramName = "test"; + +int +main (void) +{ +XCursesExit(); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16403: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16406: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16409: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16412: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_lib_XCurses=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_lib_XCurses=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:16423: result: $cf_cv_lib_XCurses" >&5 +echo "${ECHO_T}$cf_cv_lib_XCurses" >&6 + +fi + +if test "$cf_cv_lib_XCurses" = yes ; then + +cat >>confdefs.h <<\EOF +#define UNIX 1 +EOF + +cat >>confdefs.h <<\EOF +#define XCURSES 1 +EOF + + echo "$as_me:16438: checking for xcurses.h" >&5 +echo $ECHO_N "checking for xcurses.h... $ECHO_C" >&6 +if test "${ac_cv_header_xcurses_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 16444 "configure" +#include "confdefs.h" +#include <xcurses.h> +_ACEOF +if { (eval echo "$as_me:16448: \"$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:16454: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_xcurses_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_xcurses_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:16473: result: $ac_cv_header_xcurses_h" >&5 +echo "${ECHO_T}$ac_cv_header_xcurses_h" >&6 +if test "$ac_cv_header_xcurses_h" = yes; then + +cat >>confdefs.h <<\EOF +#define HAVE_XCURSES 1 +EOF + +fi + +else + { { echo "$as_me:16484: error: Cannot link with XCurses" >&5 +echo "$as_me: error: Cannot link with XCurses" >&2;} + { (exit 1); exit 1; }; } +fi + + ;; +(*) + { { echo "$as_me:16491: error: unexpected screen-value: $cf_cv_screen" >&5 +echo "$as_me: error: unexpected screen-value: $cf_cv_screen" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +: ${cf_nculib_root:=$cf_cv_screen} +as_ac_Lib=`echo "ac_cv_lib_$cf_nculib_root''__nc_init_pthreads" | $as_tr_sh` +echo "$as_me:16499: checking for _nc_init_pthreads in -l$cf_nculib_root" >&5 +echo $ECHO_N "checking for _nc_init_pthreads in -l$cf_nculib_root... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$cf_nculib_root $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 16507 "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 _nc_init_pthreads (); +int +main (void) +{ +_nc_init_pthreads (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16526: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16529: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16532: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16535: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Lib=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:16546: 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 + cf_cv_ncurses_pthreads=yes +else + cf_cv_ncurses_pthreads=no +fi + +if test "$cf_cv_ncurses_pthreads" = yes +then + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lpthread; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + +fi + +case $cf_cv_screen in +(ncurses*) + cf_cv_libtype=`echo "$cf_cv_screen" | sed -e 's/^ncurses//'` + ;; +esac + +echo "$as_me:16581: 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. +if test "${with_x11_rgb+set}" = set; then + withval="$with_x11_rgb" + RGB_PATH=$withval +else + RGB_PATH=auto +fi; + +if test "x$RGB_PATH" = xauto +then + RGB_PATH='${exec_prefix}/lib/X11/rgb.txt' + for cf_path in \ + /opt/local/share/X11/rgb.txt \ + /opt/X11/share/X11/rgb.txt \ + /usr/share/X11/rgb.txt \ + /usr/X11/share/X11/rgb.txt \ + /usr/X11/lib/X11/rgb.txt \ + /usr/lib/X11/rgb.txt \ + /etc/X11/rgb.txt \ + /usr/pkg/lib/X11/rgb.txt \ + /usr/X11R7/lib/X11/rgb.txt \ + /usr/X11R6/lib/X11/rgb.txt \ + /usr/X11R5/lib/X11/rgb.txt \ + /usr/X11R4/lib/X11/rgb.txt \ + /usr/local/lib/X11/rgb.txt \ + /usr/local/share/X11/rgb.txt \ + /usr/lib64/X11/rgb.txt + do + if test -f "$cf_path" ; then + RGB_PATH="$cf_path" + break + fi + done +else + cf_path=$RGB_PATH + +if test "x$prefix" != xNONE; then + cf_path_syntax="$prefix" +else + cf_path_syntax="$ac_default_prefix" +fi + +case ".$cf_path" in +(.\$\(*\)*|.\'*\'*) + ;; +(..|./*|.\\*) + ;; +(.[a-zA-Z]:[\\/]*) # OS/2 EMX + ;; +(.\$\{*prefix\}*|.\$\{*dir\}*) + eval cf_path="$cf_path" + case ".$cf_path" in + (.NONE/*) + cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%` + ;; + esac + ;; +(.no|.NONE/*) + cf_path=`echo "$cf_path" | sed -e s%NONE%$cf_path_syntax%` + ;; +(*) + { { echo "$as_me:16645: error: expected a pathname, not \"$cf_path\"" >&5 +echo "$as_me: error: expected a pathname, not \"$cf_path\"" >&2;} + { (exit 1); exit 1; }; } + ;; +esac + +fi + +echo "$as_me:16653: result: $RGB_PATH" >&5 +echo "${ECHO_T}$RGB_PATH" >&6 + +cat >>confdefs.h <<EOF +#define RGB_PATH "$cf_path" +EOF + +no_x11_rgb= +if test "$RGB_PATH" = no +then + no_x11_rgb="#" +fi + +cf_curses_headers= + +case $cf_cv_screen in +(pdcurses) + cf_default_panel=no + cf_default_form=no + cf_default_menu=no + cf_default_tinfo=no + ;; +(xcurses|bsdcurses) + cf_default_panel=no + cf_default_form=no + cf_default_menu=no + cf_default_tinfo=yes + ;; +(*) + cf_default_panel=yes + cf_default_form=yes + cf_default_menu=yes + cf_default_tinfo=yes + case $cf_cv_screen in + (ncurses*) + cf_curses_headers="nc_alloc.h nomacros.h term_entry.h" + ;; + esac + ;; +esac + +echo "$as_me:16694: 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. +if test "${with_form_libname+set}" = set; then + withval="$with_form_libname" + with_lib_basename=$withval +else + with_lib_basename=form +fi; +FORM_NAME="$with_lib_basename" + +case "x$FORM_NAME" in +(x|xno|xnone|xyes) + FORM_NAME=form + ;; +(*) + ;; +esac + +echo "$as_me:16714: result: $FORM_NAME" >&5 +echo "${ECHO_T}$FORM_NAME" >&6 + +echo "$as_me:16717: 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. +if test "${with_menu_libname+set}" = set; then + withval="$with_menu_libname" + with_lib_basename=$withval +else + with_lib_basename=menu +fi; +MENU_NAME="$with_lib_basename" + +case "x$MENU_NAME" in +(x|xno|xnone|xyes) + MENU_NAME=menu + ;; +(*) + ;; +esac + +echo "$as_me:16737: result: $MENU_NAME" >&5 +echo "${ECHO_T}$MENU_NAME" >&6 + +echo "$as_me:16740: 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. +if test "${with_panel_libname+set}" = set; then + withval="$with_panel_libname" + with_lib_basename=$withval +else + with_lib_basename=panel +fi; +PANEL_NAME="$with_lib_basename" + +case "x$PANEL_NAME" in +(x|xno|xnone|xyes) + PANEL_NAME=panel + ;; +(*) + ;; +esac + +echo "$as_me:16760: result: $PANEL_NAME" >&5 +echo "${ECHO_T}$PANEL_NAME" >&6 + +echo "$as_me:16763: checking if you want to check for panel functions" >&5 +echo $ECHO_N "checking if you want to check for panel functions... $ECHO_C" >&6 + +# Check whether --enable-panel or --disable-panel was given. +if test "${enable_panel+set}" = set; then + enableval="$enable_panel" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + cf_enable_panel=no + else + cf_enable_panel=$cf_default_panel + fi +else + enableval=yes + cf_enable_panel=$cf_default_panel + +fi; +echo "$as_me:16780: result: $cf_enable_panel" >&5 +echo "${ECHO_T}$cf_enable_panel" >&6 +if test $cf_enable_panel = yes +then + +cf_have_curses_lib=no + +: ${NCURSES_CONFIG_PKG:=none} +if test "x${NCURSES_CONFIG_PKG}" = xnone; then + : +elif test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:16791: checking pkg-config for $PANEL_NAME$cf_cv_libtype" >&5 +echo $ECHO_N "checking pkg-config for $PANEL_NAME$cf_cv_libtype... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists "$PANEL_NAME$cf_cv_libtype" ; then + echo "$as_me:16794: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:16797: checking if the $PANEL_NAME$cf_cv_libtype package files work" >&5 +echo $ECHO_N "checking if the $PANEL_NAME$cf_cv_libtype package files work... $ECHO_C" >&6 + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + +for cf_add_cflags in `$PKG_CONFIG --cflags "$PANEL_NAME$cf_cv_libtype"` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$PKG_CONFIG --libs "$PANEL_NAME$cf_cv_libtype"`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 16947 "configure" +#include "confdefs.h" +#include <$PANEL_NAME.h> +int +main (void) +{ +(void) new_panel ( 0 ); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:16959: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16962: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:16965: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16968: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_curses_lib=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 16974 "configure" +#include "confdefs.h" +#include <$PANEL_NAME.h> + int main(void) + { (void) new_panel ( 0 ); return 0; } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:16981: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:16984: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:16986: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:16989: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_curses_lib=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_curses_lib=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_curses_lib=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:17006: result: $cf_have_curses_lib" >&5 +echo "${ECHO_T}$cf_have_curses_lib" >&6 + test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes + if test "$cf_have_curses_lib" = "yes" + then + +cf_upper=`echo "have_lib$PANEL_NAME" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_upper 1 +EOF + + else + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + fi + fi +fi +if test "$cf_have_curses_lib" = no; then + as_ac_Lib=`echo "ac_cv_lib_$PANEL_NAME$cf_cv_libtype''_new_panel" | $as_tr_sh` +echo "$as_me:17027: checking for new_panel in -l$PANEL_NAME$cf_cv_libtype" >&5 +echo $ECHO_N "checking for new_panel in -l$PANEL_NAME$cf_cv_libtype... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$PANEL_NAME$cf_cv_libtype $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 17035 "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 new_panel (); +int +main (void) +{ +new_panel (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17054: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17057: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17060: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17063: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Lib=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17074: 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 + +cf_upper=`echo "have_lib$PANEL_NAME" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$PANEL_NAME$cf_cv_libtype; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >>confdefs.h <<EOF +#define $cf_upper 1 +EOF + +fi + +fi + + cf_curses_headers="$cf_curses_headers panel.h" +fi + +echo "$as_me:17107: checking if you want to check for menu functions" >&5 +echo $ECHO_N "checking if you want to check for menu functions... $ECHO_C" >&6 + +# Check whether --enable-menu or --disable-menu was given. +if test "${enable_menu+set}" = set; then + enableval="$enable_menu" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + cf_enable_menu=no + else + cf_enable_menu=$cf_default_menu + fi +else + enableval=yes + cf_enable_menu=$cf_default_menu + +fi; +echo "$as_me:17124: result: $cf_enable_menu" >&5 +echo "${ECHO_T}$cf_enable_menu" >&6 +if test $cf_enable_menu = yes +then + case $cf_cv_screen in + (ncurses*) + ;; + (curses*) + +echo "$as_me:17133: checking for NetBSD menu.h" >&5 +echo $ECHO_N "checking for NetBSD menu.h... $ECHO_C" >&6 +if test "${cf_cv_netbsd_menu_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >"conftest.$ac_ext" <<_ACEOF +#line 17140 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <menu.h> + +int +main (void) +{ + + MENU *menu; + int y = menu->max_item_width; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:17158: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17161: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:17164: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17167: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_netbsd_menu_h=yes + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_netbsd_menu_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:17179: result: $cf_cv_netbsd_menu_h" >&5 +echo "${ECHO_T}$cf_cv_netbsd_menu_h" >&6 + +test "$cf_cv_netbsd_menu_h" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_NETBSD_MENU_H 1 +EOF + + ;; + esac + +cf_have_curses_lib=no + +: ${NCURSES_CONFIG_PKG:=none} +if test "x${NCURSES_CONFIG_PKG}" = xnone; then + : +elif test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:17196: checking pkg-config for $MENU_NAME$cf_cv_libtype" >&5 +echo $ECHO_N "checking pkg-config for $MENU_NAME$cf_cv_libtype... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists "$MENU_NAME$cf_cv_libtype" ; then + echo "$as_me:17199: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:17202: checking if the $MENU_NAME$cf_cv_libtype package files work" >&5 +echo $ECHO_N "checking if the $MENU_NAME$cf_cv_libtype package files work... $ECHO_C" >&6 + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + +for cf_add_cflags in `$PKG_CONFIG --cflags "$MENU_NAME$cf_cv_libtype"` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$PKG_CONFIG --libs "$MENU_NAME$cf_cv_libtype"`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 17352 "configure" +#include "confdefs.h" +#include <$MENU_NAME.h> +int +main (void) +{ +(void) menu_driver ( 0,0 ); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17364: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17367: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17370: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17373: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_curses_lib=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 17379 "configure" +#include "confdefs.h" +#include <$MENU_NAME.h> + int main(void) + { (void) menu_driver ( 0,0 ); return 0; } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:17386: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17389: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:17391: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17394: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_curses_lib=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_curses_lib=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_curses_lib=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:17411: result: $cf_have_curses_lib" >&5 +echo "${ECHO_T}$cf_have_curses_lib" >&6 + test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes + if test "$cf_have_curses_lib" = "yes" + then + +cf_upper=`echo "have_lib$MENU_NAME" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_upper 1 +EOF + + else + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + fi + fi +fi +if test "$cf_have_curses_lib" = no; then + as_ac_Lib=`echo "ac_cv_lib_$MENU_NAME$cf_cv_libtype''_menu_driver" | $as_tr_sh` +echo "$as_me:17432: checking for menu_driver in -l$MENU_NAME$cf_cv_libtype" >&5 +echo $ECHO_N "checking for menu_driver in -l$MENU_NAME$cf_cv_libtype... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$MENU_NAME$cf_cv_libtype $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 17440 "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 menu_driver (); +int +main (void) +{ +menu_driver (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17459: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17462: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17465: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17468: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Lib=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17479: 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 + +cf_upper=`echo "have_lib$MENU_NAME" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$MENU_NAME$cf_cv_libtype; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >>confdefs.h <<EOF +#define $cf_upper 1 +EOF + +fi + +fi + + cf_curses_headers="$cf_curses_headers menu.h" +fi + +echo "$as_me:17512: checking if you want to check for form functions" >&5 +echo $ECHO_N "checking if you want to check for form functions... $ECHO_C" >&6 + +# Check whether --enable-form or --disable-form was given. +if test "${enable_form+set}" = set; then + enableval="$enable_form" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + cf_enable_form=no + else + cf_enable_form=$cf_default_form + fi +else + enableval=yes + cf_enable_form=$cf_default_form + +fi; +echo "$as_me:17529: result: $cf_enable_form" >&5 +echo "${ECHO_T}$cf_enable_form" >&6 +if test $cf_enable_form = yes +then + case $cf_cv_screen in + (ncurses*) + ;; + (curses*) + +echo "$as_me:17538: checking for NetBSD form.h" >&5 +echo $ECHO_N "checking for NetBSD form.h... $ECHO_C" >&6 +if test "${cf_cv_netbsd_form_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >"conftest.$ac_ext" <<_ACEOF +#line 17545 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <form.h> + +int +main (void) +{ + + FORM *form; + int y = current_field(form)->cursor_ypos; + int x = current_field(form)->cursor_xpos; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:17564: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:17567: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:17570: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17573: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_netbsd_form_h=yes + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_netbsd_form_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:17585: result: $cf_cv_netbsd_form_h" >&5 +echo "${ECHO_T}$cf_cv_netbsd_form_h" >&6 + +test "$cf_cv_netbsd_form_h" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_NETBSD_FORM_H 1 +EOF + + ;; + esac + +cf_have_curses_lib=no + +: ${NCURSES_CONFIG_PKG:=none} +if test "x${NCURSES_CONFIG_PKG}" = xnone; then + : +elif test "x${PKG_CONFIG:=none}" != xnone; then + echo "$as_me:17602: checking pkg-config for $FORM_NAME$cf_cv_libtype" >&5 +echo $ECHO_N "checking pkg-config for $FORM_NAME$cf_cv_libtype... $ECHO_C" >&6 + if "$PKG_CONFIG" --exists "$FORM_NAME$cf_cv_libtype" ; then + echo "$as_me:17605: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + + echo "$as_me:17608: checking if the $FORM_NAME$cf_cv_libtype package files work" >&5 +echo $ECHO_N "checking if the $FORM_NAME$cf_cv_libtype package files work... $ECHO_C" >&6 + + cf_save_CFLAGS="$CFLAGS" + cf_save_CPPFLAGS="$CPPFLAGS" + cf_save_LIBS="$LIBS" + +for cf_add_cflags in `$PKG_CONFIG --cflags "$FORM_NAME$cf_cv_libtype"` +do + case "x$cf_add_cflags" in + (x-[DU]*) + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CFLAGS" != "$cf_old_cflag" || break + + CFLAGS="$cf_old_cflag" +done + +cf_tmp_cflag=`echo "x$cf_add_cflags" | sed -e 's/^.//' -e 's/=.*//'` +while true +do + cf_old_cflag=`echo "x$CPPFLAGS" | sed -e 's/^.//' -e 's/[ ][ ]*-/ -/g' -e "s%$cf_tmp_cflag\\(=[^ ][^ ]*\\)\?%%" -e 's/^[ ]*//' -e 's%[ ][ ]*-D% -D%g' -e 's%[ ][ ]*-I% -I%g'` + test "$CPPFLAGS" != "$cf_old_cflag" || break + + CPPFLAGS="$cf_old_cflag" +done + + ;; + esac + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in $cf_add_cflags +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 + +done + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in `$PKG_CONFIG --libs "$FORM_NAME$cf_cv_libtype"`; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 17758 "configure" +#include "confdefs.h" +#include <$FORM_NAME.h> +int +main (void) +{ +(void) form_driver ( 0,0 ); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17770: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17773: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17776: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17779: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + if test "$cross_compiling" = yes; then + cf_have_curses_lib=maybe +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 17785 "configure" +#include "confdefs.h" +#include <$FORM_NAME.h> + int main(void) + { (void) form_driver ( 0,0 ); return 0; } +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:17792: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17795: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:17797: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17800: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_have_curses_lib=yes +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_curses_lib=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_have_curses_lib=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + echo "$as_me:17817: result: $cf_have_curses_lib" >&5 +echo "${ECHO_T}$cf_have_curses_lib" >&6 + test "$cf_have_curses_lib" = maybe && cf_have_curses_lib=yes + if test "$cf_have_curses_lib" = "yes" + then + +cf_upper=`echo "have_lib$FORM_NAME" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_upper 1 +EOF + + else + CFLAGS="$cf_save_CFLAGS" + CPPFLAGS="$cf_save_CPPFLAGS" + LIBS="$cf_save_LIBS" + fi + fi +fi +if test "$cf_have_curses_lib" = no; then + as_ac_Lib=`echo "ac_cv_lib_$FORM_NAME$cf_cv_libtype''_form_driver" | $as_tr_sh` +echo "$as_me:17838: checking for form_driver in -l$FORM_NAME$cf_cv_libtype" >&5 +echo $ECHO_N "checking for form_driver in -l$FORM_NAME$cf_cv_libtype... $ECHO_C" >&6 +if eval "test \"\${$as_ac_Lib+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-l$FORM_NAME$cf_cv_libtype $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 17846 "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 form_driver (); +int +main (void) +{ +form_driver (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:17865: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:17868: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:17871: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:17874: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_Lib=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_Lib=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:17885: 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 + +cf_upper=`echo "have_lib$FORM_NAME" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -l$FORM_NAME$cf_cv_libtype; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >>confdefs.h <<EOF +#define $cf_upper 1 +EOF + +fi + +fi + + cf_curses_headers="$cf_curses_headers form.h" +fi + +# look for curses-related headers + +for ac_header in $cf_curses_headers +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:17923: 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 17929 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:17933: \"$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:17939: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:17958: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +echo "$as_me:17968: 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 17974 "configure" +#include "confdefs.h" +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <float.h> + +_ACEOF +if { (eval echo "$as_me:17982: \"$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:17988: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_stdc=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_stdc=no +fi +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 18010 "configure" +#include "confdefs.h" +#include <string.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +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 18028 "configure" +#include "confdefs.h" +#include <stdlib.h> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then + : +else + ac_cv_header_stdc=no +fi +rm -rf conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then + : +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 18049 "configure" +#include "confdefs.h" +#include <ctype.h> +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main (void) +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + $ac_main_return(2); + $ac_main_return (0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:18075: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18078: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:18080: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18083: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_stdc=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +fi +fi +echo "$as_me:18096: result: $ac_cv_header_stdc" >&5 +echo "${ECHO_T}$ac_cv_header_stdc" >&6 +if test $ac_cv_header_stdc = yes; then + +cat >>confdefs.h <<\EOF +#define STDC_HEADERS 1 +EOF + +fi + +echo "$as_me:18106: 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 18112 "configure" +#include "confdefs.h" +#include <sys/types.h> +#include <sys/time.h> +#include <time.h> + +int +main (void) +{ +if ((struct tm *) 0) +return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18128: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18131: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18134: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18137: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_header_time=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_header_time=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:18147: result: $ac_cv_header_time" >&5 +echo "${ECHO_T}$ac_cv_header_time" >&6 +if test $ac_cv_header_time = yes; then + +cat >>confdefs.h <<\EOF +#define TIME_WITH_SYS_TIME 1 +EOF + +fi + +for ac_header in \ +getopt.h \ +locale.h \ +math.h \ +stdarg.h \ +stdint.h \ +sys/ioctl.h \ +sys/select.h \ +sys/time.h \ +termios.h \ +unistd.h \ + +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:18171: 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 18177 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:18181: \"$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:18187: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:18206: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +for ac_header in unistd.h getopt.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +echo "$as_me:18219: 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 18225 "configure" +#include "confdefs.h" +#include <$ac_header> +_ACEOF +if { (eval echo "$as_me:18229: \"$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:18235: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + eval "$as_ac_Header=yes" +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + eval "$as_ac_Header=no" +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:18254: 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 +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +EOF + +fi +done + +echo "$as_me:18264: 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 +else + +cf_cv_getopt_header=none +for cf_header in stdio.h stdlib.h unistd.h getopt.h +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 18274 "configure" +#include "confdefs.h" + +#include <$cf_header> +int +main (void) +{ +int x = optind; char *y = optarg; (void)x; (void)y + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18287: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18290: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18293: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18296: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_getopt_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:18308: result: $cf_cv_getopt_header" >&5 +echo "${ECHO_T}$cf_cv_getopt_header" >&6 +if test "$cf_cv_getopt_header" != none ; then + +cat >>confdefs.h <<\EOF +#define HAVE_GETOPT_HEADER 1 +EOF + +fi +if test "$cf_cv_getopt_header" = getopt.h ; then + +cat >>confdefs.h <<\EOF +#define NEED_GETOPT_H 1 +EOF + +fi + +for ac_func in \ +getopt \ +gettimeofday \ +snprintf \ +strdup \ +strstr \ +tsearch \ + +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:18335: 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 18341 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18372: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18375: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18378: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18381: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:18391: 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 +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +EOF + +fi +done + +# use a compile-check to work with ncurses*-config and subdirectory includes +echo "$as_me:18402: checking if we can use termcap.h" >&5 +echo $ECHO_N "checking if we can use termcap.h... $ECHO_C" >&6 +if test "${cf_cv_have_termcap_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >"conftest.$ac_ext" <<_ACEOF +#line 18409 "configure" +#include "confdefs.h" + +#include <curses.h> +#ifdef NCURSES_VERSION +#undef NCURSES_VERSION +#endif +#include <termcap.h> +#ifndef NCURSES_VERSION +#error wrong header +#endif + +int +main (void) +{ +return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18430: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18433: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18436: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18439: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have_termcap_h=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have_termcap_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:18449: result: $cf_cv_have_termcap_h" >&5 +echo "${ECHO_T}$cf_cv_have_termcap_h" >&6 +if test "x$cf_cv_have_termcap_h" = xyes +then + +cat >>confdefs.h <<\EOF +#define HAVE_TERMCAP_H 1 +EOF + +else +echo "$as_me:18459: checking if we can use ncurses/termcap.h" >&5 +echo $ECHO_N "checking if we can use ncurses/termcap.h... $ECHO_C" >&6 +if test "${cf_cv_have_ncurses_termcap_h+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >"conftest.$ac_ext" <<_ACEOF +#line 18466 "configure" +#include "confdefs.h" + +#include <ncurses/curses.h> +#ifdef NCURSES_VERSION +#undef NCURSES_VERSION +#endif +#include <ncurses/termcap.h> +#ifndef NCURSES_VERSION +#error wrong header +#endif + +int +main (void) +{ +return 0; + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18487: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18490: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18493: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18496: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_have_ncurses_termcap_h=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_have_ncurses_termcap_h=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:18506: result: $cf_cv_have_ncurses_termcap_h" >&5 +echo "${ECHO_T}$cf_cv_have_ncurses_termcap_h" >&6 +test "x$cf_cv_have_ncurses_termcap_h" = xyes && +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERMCAP_H 1 +EOF + +fi + +if test "x$ac_cv_func_getopt" = xno; then + { { echo "$as_me:18516: error: getopt is required for building programs" >&5 +echo "$as_me: error: getopt is required for building programs" >&2;} + { (exit 1); exit 1; }; } +fi + +if test "$cf_enable_widec" = yes; then + +for ac_func in \ +mblen \ +mbrlen \ +mbrtowc \ +mbsrtowcs \ +mbstowcs \ +mbtowc \ +wcsrtombs \ +wcstombs \ + +do +as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh` +echo "$as_me:18535: 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 18541 "configure" +#include "confdefs.h" +#define $ac_func autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef $ac_func + +#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 $ac_func (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_$ac_func) || defined (__stub___$ac_func) +#error found stub for $ac_func +#endif + + return $ac_func (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18572: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18575: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18578: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18581: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + eval "$as_ac_var=yes" +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +eval "$as_ac_var=no" +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:18591: 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 +#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1 +EOF + +fi +done + +fi + +echo "$as_me:18603: checking definition to turn on extended curses functions" >&5 +echo $ECHO_N "checking definition to turn on extended curses functions... $ECHO_C" >&6 +if test "${cf_cv_need_xopen_extension+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_need_xopen_extension=unknown +cat >"conftest.$ac_ext" <<_ACEOF +#line 18611 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +#if defined(NCURSES_VERSION_PATCH) +#if (NCURSES_VERSION_PATCH < 20100501) && (NCURSES_VERSION_PATCH >= 20100403) + make an error +#endif +#endif +#ifdef NCURSES_WIDECHAR +make an error /* prefer to fall-through on the second checks */ +#endif + cchar_t check; + int check2 = curs_set((int)sizeof(check)); + long x = winnstr(stdscr, "", 0); + int x1, y1; + (void)check2; + getbegyx(stdscr, y1, x1); + (void)x; + (void)y1; + (void)x1; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18643: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18646: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18649: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18652: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_need_xopen_extension=none +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + for cf_try_xopen_extension in _XOPEN_SOURCE_EXTENDED NCURSES_WIDECHAR + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 18662 "configure" +#include "confdefs.h" + +#define $cf_try_xopen_extension 1 +#include <stdlib.h> +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + + cchar_t check; + int check2 = curs_set((int)sizeof(check)); + long x = winnstr(stdscr, "", 0); + int x1, y1; + getbegyx(stdscr, y1, x1); + (void)check2; + (void)x; + (void)y1; + (void)x1; + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:18687: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:18690: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:18693: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18696: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_need_xopen_extension=$cf_try_xopen_extension; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:18710: result: $cf_cv_need_xopen_extension" >&5 +echo "${ECHO_T}$cf_cv_need_xopen_extension" >&6 + +case "$cf_cv_need_xopen_extension" in +(*_*) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D$cf_cv_need_xopen_extension" + + ;; +esac + +echo "$as_me:18722: checking for term.h" >&5 +echo $ECHO_N "checking for term.h... $ECHO_C" >&6 +if test "${cf_cv_term_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# If we found <ncurses/curses.h>, look for <ncurses/term.h>, but always look +# for <term.h> if we do not find the variant. + +cf_header_list="term.h ncurses/term.h ncursesw/term.h" + +case "${cf_cv_ncurses_header:-curses.h}" in +(*/*) + cf_header_item=`echo "${cf_cv_ncurses_header:-curses.h}" | sed -e 's%\..*%%' -e 's%/.*%/%'`term.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 18743 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}> +int +main (void) +{ +WINDOW *x; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18757: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18760: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18763: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18766: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_term_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_term_header=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +case "$cf_cv_term_header" in +(no) + # If curses is ncurses, some packagers still mess it up by trying to make + # us use GNU termcap. This handles the most common case. + for cf_header in ncurses/term.h ncursesw/term.h + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 18785 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#ifdef NCURSES_VERSION +#include <${cf_header}> +#else +make an error +#endif +int +main (void) +{ +WINDOW *x; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18803: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18806: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18809: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18812: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_term_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_term_header=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done + ;; +esac + +fi +echo "$as_me:18827: result: $cf_cv_term_header" >&5 +echo "${ECHO_T}$cf_cv_term_header" >&6 + +case "$cf_cv_term_header" in +(term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_TERM_H 1 +EOF + + ;; +(ncurses/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_TERM_H 1 +EOF + + ;; +(ncursesw/term.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_TERM_H 1 +EOF + + ;; +esac + +echo "$as_me:18854: checking for unctrl.h" >&5 +echo $ECHO_N "checking for unctrl.h... $ECHO_C" >&6 +if test "${cf_cv_unctrl_header+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +# If we found <ncurses/curses.h>, look for <ncurses/unctrl.h>, but always look +# for <unctrl.h> if we do not find the variant. + +cf_header_list="unctrl.h ncurses/unctrl.h ncursesw/unctrl.h" + +case "${cf_cv_ncurses_header:-curses.h}" in +(*/*) + cf_header_item=`echo "${cf_cv_ncurses_header:-curses.h}" | sed -e 's%\..*%%' -e 's%/.*%/%'`unctrl.h + cf_header_list="$cf_header_item $cf_header_list" + ;; +esac + +for cf_header in $cf_header_list +do + cat >"conftest.$ac_ext" <<_ACEOF +#line 18875 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <${cf_header}> +int +main (void) +{ +WINDOW *x; (void)x + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:18889: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:18892: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:18895: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:18898: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_unctrl_header=$cf_header + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_unctrl_header=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +done + +fi +echo "$as_me:18911: result: $cf_cv_unctrl_header" >&5 +echo "${ECHO_T}$cf_cv_unctrl_header" >&6 + +case "$cf_cv_unctrl_header" in +(no) + { echo "$as_me:18916: WARNING: unctrl.h header not found" >&5 +echo "$as_me: WARNING: unctrl.h header not found" >&2;} + ;; +esac + +case "$cf_cv_unctrl_header" in +(unctrl.h) + +cat >>confdefs.h <<\EOF +#define HAVE_UNCTRL_H 1 +EOF + + ;; +(ncurses/unctrl.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSES_UNCTRL_H 1 +EOF + + ;; +(ncursesw/unctrl.h) + +cat >>confdefs.h <<\EOF +#define HAVE_NCURSESW_UNCTRL_H 1 +EOF + + ;; +esac + +for cf_func in \ +alloc_pair \ +assume_default_colors \ +chgat \ +color_content \ +color_set \ +copywin \ +delscreen \ +dupwin \ +exit_curses \ +exit_terminfo \ +filter \ +getbegx \ +getcurx \ +getmaxx \ +getnstr \ +getparx \ +getwin \ +halfdelay \ +init_extended_color \ +mvderwin \ +mvvline \ +mvwin \ +mvwvline \ +napms \ +newpad \ +putwin \ +reset_color_pairs \ +resize_term \ +resizeterm \ +restartterm \ +ripoffline \ +scr_dump \ +setupterm \ +slk_color \ +slk_init \ +termattrs \ +termname \ +tgetent \ +tigetnum \ +tigetstr \ +tputs_sp \ +typeahead \ +use_default_colors \ +use_env \ +use_extended_names \ +use_screen \ +use_window \ +vid_puts \ +vidputs \ +vsscanf \ +vw_printw \ +wchgat \ +winsdelln \ +winsstr \ +wresize \ +wsyncdown \ +_tracef \ + +do + +cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + echo "$as_me:19008: checking for ${cf_func}" >&5 +echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6 + +echo "${as_me:-configure}:19011: testing ${cf_func} ..." 1>&5 + + if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + eval cf_result='$ac_cv_func_'$cf_func + if test ".$cf_result" != ".no"; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 19020 "configure" +#include "confdefs.h" + +#ifdef HAVE_XCURSES +#include <xcurses.h> +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#elif defined(HAVE_TERM_H) +#include <term.h> +#endif +#endif + +int +main (void) +{ + +#ifndef ${cf_func} +long foo = (long)(&${cf_func}); +fprintf(stderr, "testing linkage of $cf_func:%p\\n", (void *)foo); +if (foo + 1234L > 5678L) + ${cf_cv_main_return:-return}(foo != 0); +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19053: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19056: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19059: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19062: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + fi + eval 'cf_cv_func_'$cf_func'="$cf_result"' + +fi + + # use the computed/retrieved cache-value: + eval 'cf_result=$cf_cv_func_'$cf_func + echo "$as_me:19078: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test "$cf_result" != no; then + cat >>confdefs.h <<EOF +#define HAVE_${cf_tr_func} 1 +EOF + + fi +done + +for cf_func in tputs +do + +cf_tr_func=`echo "$cf_func" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + echo "$as_me:19093: checking for ${cf_func}" >&5 +echo $ECHO_N "checking for ${cf_func}... $ECHO_C" >&6 + +echo "${as_me:-configure}:19096: testing ${cf_func} ..." 1>&5 + + if eval "test \"\${cf_cv_func_$cf_func+set}\" = set"; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + eval cf_result='$ac_cv_func_'$cf_func + if test ".$cf_result" != ".no"; then + cat >"conftest.$ac_ext" <<_ACEOF +#line 19105 "configure" +#include "confdefs.h" + +#ifdef HAVE_XCURSES +#include <xcurses.h> +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#elif defined(HAVE_TERM_H) +#include <term.h> +#endif +#endif + +int +main (void) +{ + +#ifndef ${cf_func} +long foo = (long)(&${cf_func}); +fprintf(stderr, "testing linkage of $cf_func:%p\\n", (void *)foo); +if (foo + 1234L > 5678L) + ${cf_cv_main_return:-return}(foo != 0); +#endif + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19138: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19141: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19144: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19147: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + fi + eval 'cf_cv_func_'$cf_func'="$cf_result"' + +fi + + # use the computed/retrieved cache-value: + eval 'cf_result=$cf_cv_func_'$cf_func + echo "$as_me:19163: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test "$cf_result" != no; then + cat >>confdefs.h <<EOF +#define HAVE_${cf_tr_func} 1 +EOF + + fi +done + +if test "x$cf_cv_func_tputs" = xyes +then + cf_done=no + for cf_arg in int char + do + for cf_ret in int void + do + if test "$cf_ret" = void + then + cf_return="/* nothing */" + else + cf_return="return value" + fi + cat >"conftest.$ac_ext" <<_ACEOF +#line 19187 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +#include <$cf_cv_term_header> + +static $cf_ret outc($cf_arg value) { $cf_return; } + +int +main (void) +{ + + tputs("hello", 0, outc); + ${cf_cv_main_return:-return}(0); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:19207: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:19210: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:19213: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19216: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + test -n "$verbose" && echo " prototype $cf_ret func($cf_arg value)" 1>&6 + +echo "${as_me:-configure}:19221: testing prototype $cf_ret func($cf_arg value) ..." 1>&5 + + cat >>confdefs.h <<EOF +#define TPUTS_ARG $cf_arg +#define TPUTS_PROTO(func,value) $cf_ret func(TPUTS_ARG value) +#define TPUTS_RETURN(value) $cf_return +EOF + cf_done=yes + break + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + done + test "$cf_done" = yes && break + done +fi + +echo "$as_me:19241: checking for ncurses extended functions" >&5 +echo $ECHO_N "checking for ncurses extended functions... $ECHO_C" >&6 +if test "${cf_cv_ncurses_ext_funcs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >"conftest.$ac_ext" <<_ACEOF +#line 19248 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +int x = NCURSES_EXT_FUNCS + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:19263: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:19266: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:19269: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19272: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_ext_funcs=defined +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + +cat >"conftest.$ac_ext" <<_ACEOF +#line 19280 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + + (void) assume_default_colors (0, 0); + (void) curses_version (); + (void) define_key (0, 0); + (void) is_term_resized (0, 0); + (void) key_defined (0); + (void) keybound (0, 0); + (void) keyok (0, 0); + (void) resize_term (0, 0); + (void) resizeterm (0, 0); + (void) use_default_colors (); + (void) use_extended_names (0); + (void) wresize (0, 0, 0); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19305: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19308: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19311: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19314: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_ncurses_ext_funcs=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_ncurses_ext_funcs=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:19328: result: $cf_cv_ncurses_ext_funcs" >&5 +echo "${ECHO_T}$cf_cv_ncurses_ext_funcs" >&6 +test "$cf_cv_ncurses_ext_funcs" = yes && +cat >>confdefs.h <<\EOF +#define NCURSES_EXT_FUNCS 1 +EOF + +if test "$cf_enable_widec" = yes +then + # workaround for systems with ncurses before 20111029, due to change of + # feature test macro from _XPG5 to _XOPEN_SOURCE + if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno + then + cf_define_xpg5=no + echo "$as_me:19342: checking if _XPG5 should be defined to enable wide-characters" >&5 +echo $ECHO_N "checking if _XPG5 should be defined to enable wide-characters... $ECHO_C" >&6 + + cat >"conftest.$ac_ext" <<_ACEOF +#line 19346 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +int x = _XPG5 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:19359: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:19362: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:19365: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19368: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_XPG5" + cat >"conftest.$ac_ext" <<_ACEOF +#line 19377 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +int x = _XPG5 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:19390: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:19393: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:19396: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19399: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_define_xpg5=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + CPPFLAGS="$cf_save_cppflags" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + echo "$as_me:19410: result: $cf_define_xpg5" >&5 +echo "${ECHO_T}$cf_define_xpg5" >&6 + + if test "$cf_define_xpg5" = yes + then + CPPFLAGS="$CPPFLAGS -D_XPG5" + fi + fi + + echo "$as_me:19419: checking for wide-character functions" >&5 +echo $ECHO_N "checking for wide-character functions... $ECHO_C" >&6 +if test "${cf_cv_widechar_funcs+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cat >"conftest.$ac_ext" <<_ACEOF +#line 19426 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + + static wchar_t src_wchar[2]; + static cchar_t dst_cchar; + setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19443: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19446: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19449: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19452: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_widechar_funcs=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_widechar_funcs=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:19463: result: $cf_cv_widechar_funcs" >&5 +echo "${ECHO_T}$cf_cv_widechar_funcs" >&6 + if test "$cf_cv_widechar_funcs" != no ; then + +cat >>confdefs.h <<\EOF +#define USE_WIDEC_SUPPORT 1 +EOF + + else + cat >>confdefs.h <<\EOF +#define USE_WIDEC_SUPPORT 0 +EOF + + fi +else + cat >>confdefs.h <<\EOF +#define USE_WIDEC_SUPPORT 0 +EOF + +fi + +echo "$as_me:19484: checking if $cf_cv_screen library uses pthreads" >&5 +echo $ECHO_N "checking if $cf_cv_screen library uses pthreads... $ECHO_C" >&6 +if test "${cf_cv_use_pthreads+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cat >"conftest.$ac_ext" <<_ACEOF +#line 19491 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +extern void _nc_init_pthreads(void); + +int +main (void) +{ + + initscr(); + _nc_init_pthreads(); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19509: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19512: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19515: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19518: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_use_pthreads=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_use_pthreads=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +fi +echo "$as_me:19529: result: $cf_cv_use_pthreads" >&5 +echo "${ECHO_T}$cf_cv_use_pthreads" >&6 +test $cf_cv_use_pthreads = yes && +cat >>confdefs.h <<\EOF +#define USE_PTHREADS 1 +EOF + +echo "$as_me:19536: 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 19543 "configure" +#include "confdefs.h" + +#include <sys/types.h> +#ifdef HAVE_SYS_TIME_H +#include <sys/time.h> +#endif +#ifdef HAVE_SYS_SELECT_H +#include <sys/select.h> +#endif + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:19563: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:19566: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:19569: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19572: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_sys_time_select=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_sys_time_select=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi + +echo "$as_me:19584: 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 +#define HAVE_SYS_TIME_SELECT 1 +EOF + +# special check for test/ditto.c + +echo "$as_me:19593: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lutil $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 19601 "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 openpty (); +int +main (void) +{ +openpty (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19620: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19623: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19626: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19629: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_util_openpty=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_util_openpty=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:19640: 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 +else + cf_cv_lib_util=no +fi + +echo "$as_me:19648: 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 +else + + cf_save_LIBS="$LIBS" + test "$cf_cv_lib_util" = yes && { +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + } + for cf_header in pty.h libutil.h util.h + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 19675 "configure" +#include "confdefs.h" + +#include <$cf_header> + +int +main (void) +{ + + int x = openpty((int *)0, (int *)0, (char *)0, + (struct termios *)0, (struct winsize *)0); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19692: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19695: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19698: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19701: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_func_openpty=$cf_header + break + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_func_openpty=no + +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done + LIBS="$cf_save_LIBS" + +fi +echo "$as_me:19719: result: $cf_cv_func_openpty" >&5 +echo "${ECHO_T}$cf_cv_func_openpty" >&6 + +if test "$cf_cv_func_openpty" != no ; then + +cat >>confdefs.h <<EOF +#define USE_OPENPTY_HEADER <$cf_cv_func_openpty> +EOF + +cat >>confdefs.h <<\EOF +#define USE_XTERM_PTY 1 +EOF + + if test "x$cf_cv_lib_util" = xyes ; then + +cf_add_libs="$TEST_LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in -lutil; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +TEST_LIBS="$cf_add_libs" + + fi +fi + +echo "$as_me:19753: checking for function curses_version" >&5 +echo $ECHO_N "checking for function curses_version... $ECHO_C" >&6 +if test "${cf_cv_func_curses_version+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +if test "$cross_compiling" = yes; then + cf_cv_func_curses_version=unknown +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 19763 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> +int main(void) +{ + char temp[1024]; + sprintf(temp, "%s\\n", curses_version()); + ${cf_cv_main_return:-return}(0); +} + +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:19776: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19779: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:19781: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19784: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_func_curses_version=yes + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_func_curses_version=no + +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f core +fi +echo "$as_me:19799: result: $cf_cv_func_curses_version" >&5 +echo "${ECHO_T}$cf_cv_func_curses_version" >&6 +test "$cf_cv_func_curses_version" = yes && +cat >>confdefs.h <<\EOF +#define HAVE_CURSES_VERSION 1 +EOF + +echo "$as_me:19806: checking for alternate character set array" >&5 +echo $ECHO_N "checking for alternate character set array... $ECHO_C" >&6 +if test "${cf_cv_curses_acs_map+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_curses_acs_map=unknown +for name in acs_map _acs_map __acs_map ${NCURSES_WRAP_PREFIX}acs_map +do +cat >"conftest.$ac_ext" <<_ACEOF +#line 19816 "configure" +#include "confdefs.h" + +#include <${cf_cv_ncurses_header:-curses.h}> + +int +main (void) +{ + +${name}['k'] = ACS_PLUS + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19832: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19835: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19838: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19841: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_curses_acs_map=$name; break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +done + +fi +echo "$as_me:19852: result: $cf_cv_curses_acs_map" >&5 +echo "${ECHO_T}$cf_cv_curses_acs_map" >&6 + +test "$cf_cv_curses_acs_map" != unknown && +cat >>confdefs.h <<EOF +#define CURSES_ACS_ARRAY $cf_cv_curses_acs_map +EOF + +if test "$cf_enable_widec" = yes; then + +echo "$as_me:19862: checking for wide alternate character set array" >&5 +echo $ECHO_N "checking for wide alternate character set array... $ECHO_C" >&6 +if test "${cf_cv_curses_wacs_map+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + + cf_cv_curses_wacs_map=unknown + for name in wacs_map _wacs_map __wacs_map _nc_wacs _wacs_char + do + cat >"conftest.$ac_ext" <<_ACEOF +#line 19872 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +void *foo = &(${name}['k']); (void)foo + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19888: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19891: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19894: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19897: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_curses_wacs_map=$name + break +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + done +fi +echo "$as_me:19908: result: $cf_cv_curses_wacs_map" >&5 +echo "${ECHO_T}$cf_cv_curses_wacs_map" >&6 + +test "$cf_cv_curses_wacs_map" != unknown && +cat >>confdefs.h <<EOF +#define CURSES_WACS_ARRAY $cf_cv_curses_wacs_map +EOF + +echo "$as_me:19916: checking for wide alternate character constants" >&5 +echo $ECHO_N "checking for wide alternate character constants... $ECHO_C" >&6 +if test "${cf_cv_curses_wacs_symbols+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + +cf_cv_curses_wacs_symbols=no +if test "$cf_cv_curses_wacs_map" != unknown +then + cat >"conftest.$ac_ext" <<_ACEOF +#line 19926 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +cchar_t *foo = WACS_PLUS; + ${cf_cv_curses_wacs_map}['k'] = *WACS_PLUS; (void)foo + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19943: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19946: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19949: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19952: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_curses_wacs_symbols=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 19962 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ +cchar_t *foo = WACS_PLUS; (void)foo + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:19978: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:19981: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:19984: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:19987: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_curses_wacs_symbols=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi + +fi +echo "$as_me:19998: result: $cf_cv_curses_wacs_symbols" >&5 +echo "${ECHO_T}$cf_cv_curses_wacs_symbols" >&6 + +test "$cf_cv_curses_wacs_symbols" != no && +cat >>confdefs.h <<\EOF +#define CURSES_WACS_SYMBOLS 1 +EOF + +fi + +echo "$as_me:20008: checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}" >&5 +echo $ECHO_N "checking for type attr_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 +cat >"conftest.$ac_ext" <<_ACEOF +#line 20011 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +attr_t foo + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20029: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20032: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20035: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20038: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +echo "$as_me:20047: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 +if test "$cf_result" = yes ; then + +cf_result=`echo "have_type_attr_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <<EOF +#define $cf_result 1 +EOF + +else + +cat >>confdefs.h <<EOF +#define attr_t long +EOF + +fi + +if test "$cf_enable_widec" = yes; then + +# This is needed on Tru64 5.0 to declare mbstate_t +echo "$as_me:20068: 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 20075 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif +int +main (void) +{ +mbstate_t state + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20093: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20096: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20099: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20102: \$? = $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 20109 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#include <wchar.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif +int +main (void) +{ +mbstate_t value + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20128: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20131: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20134: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20137: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_mbstate_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_mbstate_t=unknown +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:20149: result: $cf_cv_mbstate_t" >&5 +echo "${ECHO_T}$cf_cv_mbstate_t" >&6 + +if test "$cf_cv_mbstate_t" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + + NEED_WCHAR_H=1 +fi + +# if we do not find mbstate_t in either place, use substitution to provide a fallback. +if test "$cf_cv_mbstate_t" = unknown ; then + NCURSES_MBSTATE_T=1 +fi + +# if we find mbstate_t in either place, use substitution to provide a fallback. +if test "$cf_cv_mbstate_t" != unknown ; then + NCURSES_OK_MBSTATE_T=1 +fi + +# This is needed on Tru64 5.0 to declare wchar_t +echo "$as_me:20172: 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 20179 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif +int +main (void) +{ +wchar_t state + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20197: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20200: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20203: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20206: \$? = $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 20213 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#include <wchar.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif +int +main (void) +{ +wchar_t value + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20232: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20235: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20238: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20241: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_wchar_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_wchar_t=unknown +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:20253: result: $cf_cv_wchar_t" >&5 +echo "${ECHO_T}$cf_cv_wchar_t" >&6 + +if test "$cf_cv_wchar_t" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + + NEED_WCHAR_H=1 +fi + +# if we do not find wchar_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wchar_t" = unknown ; then + NCURSES_WCHAR_T=1 +fi + +# if we find wchar_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wchar_t" != unknown ; then + NCURSES_OK_WCHAR_T=1 +fi + +# This is needed on Tru64 5.0 to declare wint_t +echo "$as_me:20276: 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 20283 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif +int +main (void) +{ +wint_t state + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20301: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20304: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20307: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20310: \$? = $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 20317 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <stdarg.h> +#include <stdio.h> +#include <wchar.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif +int +main (void) +{ +wint_t value + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20336: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20339: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20342: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20345: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_cv_wint_t=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_cv_wint_t=unknown +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +fi +echo "$as_me:20357: result: $cf_cv_wint_t" >&5 +echo "${ECHO_T}$cf_cv_wint_t" >&6 + +if test "$cf_cv_wint_t" = yes ; then + +cat >>confdefs.h <<\EOF +#define NEED_WCHAR_H 1 +EOF + + NEED_WCHAR_H=1 +fi + +# if we do not find wint_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wint_t" = unknown ; then + NCURSES_WINT_T=1 +fi + +# if we find wint_t in either place, use substitution to provide a fallback. +if test "$cf_cv_wint_t" != unknown ; then + NCURSES_OK_WINT_T=1 +fi + + if test "$NCURSES_OK_MBSTATE_T" = 0 ; then + +echo "$as_me:20381: checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}" >&5 +echo $ECHO_N "checking for type mbstate_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 +cat >"conftest.$ac_ext" <<_ACEOF +#line 20384 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +mbstate_t foo + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20402: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20405: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20408: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20411: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +echo "$as_me:20420: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 +if test "$cf_result" = yes ; then + +cf_result=`echo "have_type_mbstate_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <<EOF +#define $cf_result 1 +EOF + +else + +cat >>confdefs.h <<EOF +#define mbstate_t long +EOF + +fi + + fi + + if test "$NCURSES_OK_WCHAR_T" = 0 ; then + +echo "$as_me:20442: checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}" >&5 +echo $ECHO_N "checking for type wchar_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 +cat >"conftest.$ac_ext" <<_ACEOF +#line 20445 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +wchar_t foo + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20463: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20466: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20469: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20472: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +echo "$as_me:20481: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 +if test "$cf_result" = yes ; then + +cf_result=`echo "have_type_wchar_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <<EOF +#define $cf_result 1 +EOF + +else + +cat >>confdefs.h <<EOF +#define wchar_t long +EOF + +fi + + fi + + if test "$NCURSES_OK_WINT_T" = 0 ; then + +echo "$as_me:20503: checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}" >&5 +echo $ECHO_N "checking for type wint_t in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 +cat >"conftest.$ac_ext" <<_ACEOF +#line 20506 "configure" +#include "confdefs.h" + +#ifndef _XOPEN_SOURCE_EXTENDED +#define _XOPEN_SOURCE_EXTENDED +#endif +#include <${cf_cv_ncurses_header:-curses.h}> +int +main (void) +{ + +wint_t foo + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20524: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20527: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20530: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20533: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +echo "$as_me:20542: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 +if test "$cf_result" = yes ; then + +cf_result=`echo "have_type_wint_t" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + +cat >>confdefs.h <<EOF +#define $cf_result 1 +EOF + +else + +cat >>confdefs.h <<EOF +#define wint_t long +EOF + +fi + + fi +fi + +for cf_data in \ +TABSIZE \ +curscr \ +ospeed \ +boolnames \ +boolfnames \ +ttytype +do +echo "$as_me:20571: checking for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}" >&5 +echo $ECHO_N "checking for data $cf_data declaration in ${cf_cv_ncurses_header:-curses.h}... $ECHO_C" >&6 + +cat >"conftest.$ac_ext" <<_ACEOF +#line 20575 "configure" +#include "confdefs.h" + +#ifdef HAVE_XCURSES +#include <xcurses.h> +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#elif defined(HAVE_TERM_H) +#include <term.h> +#endif +#endif + +int +main (void) +{ + +#if defined($cf_data) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT)) + const void *foo = (const void *)($cf_data); +#else + const void *foo = &($cf_data); +#endif + fprintf(stderr, "testing linkage of $cf_data:%p\\n", (const void *)foo); + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:20608: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:20611: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:20614: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20617: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" +echo "$as_me:20627: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + +if test "$cf_result" = yes ; then + +cf_result=`echo "have_curses_data_$cf_data" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_result 1 +EOF + +else + echo "$as_me:20639: checking for data $cf_data in library" >&5 +echo $ECHO_N "checking for data $cf_data in library... $ECHO_C" >&6 + # BSD linkers insist on making weak linkage, but resolve at runtime. + if test "$cross_compiling" = yes; then + + # cross-compiling + cat >"conftest.$ac_ext" <<_ACEOF +#line 20646 "configure" +#include "confdefs.h" + +#ifdef HAVE_XCURSES +#include <xcurses.h> +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#elif defined(HAVE_TERM_H) +#include <term.h> +#endif +#endif + +extern char $cf_data; +int +main (void) +{ + + do { + +#if defined($cf_data) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT)) + const void *foo = (const void *)($cf_data); +#else + const void *foo = &($cf_data); +#endif + fprintf(stderr, "testing linkage of $cf_data:%p\\n", (const void *)foo); + + ${cf_cv_main_return:-return}(foo == 0); + } while (0) + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:20685: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20688: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:20691: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20694: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 20706 "configure" +#include "confdefs.h" + +#ifdef HAVE_XCURSES +#include <xcurses.h> +char * XCursesProgramName = "test"; +#else +#include <${cf_cv_ncurses_header:-curses.h}> +#if defined(NCURSES_VERSION) && defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(NCURSES_VERSION) && defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#elif defined(HAVE_TERM_H) +#include <term.h> +#endif +#endif + +extern char $cf_data; +int main(void) +{ + +#if defined($cf_data) && ((defined(NCURSES_WRAPPED_VAR) && (NCURSES_VERSION_PATCH < 20200208)) || defined(NCURSES_BROKEN_LINKER) || defined(NCURSES_REENTRANT)) + const void *foo = (const void *)($cf_data); +#else + const void *foo = &($cf_data); +#endif + fprintf(stderr, "testing linkage of $cf_data:%p\\n", (const void *)foo); + + ${cf_cv_main_return:-return}(foo == 0); +} +_ACEOF +rm -f "conftest$ac_exeext" +if { (eval echo "$as_me:20738: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20741: \$? = $ac_status" >&5 + (exit "$ac_status"); } && { ac_try='"./conftest$ac_exeext"' + { (eval echo "$as_me:20743: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20746: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_result=yes + +else + echo "$as_me: program exited with status $ac_status" >&5 +echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_result=no +fi +rm -f core ./core.* ./*.core "conftest$ac_exeext" "conftest.$ac_objext" "conftest.$ac_ext" +fi + echo "$as_me:20758: result: $cf_result" >&5 +echo "${ECHO_T}$cf_result" >&6 + if test "$cf_result" = yes ; then + +cf_result=`echo "decl_curses_data_$cf_data" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cat >>confdefs.h <<EOF +#define $cf_result 1 +EOF + + # do not exit loop here, since we prefer system's declarations + fi +fi +done + +if test -n "$with_screen" && test "x$with_screen" = "xpdcurses" +then + echo "$as_me:20775: checking for X" >&5 +echo $ECHO_N "checking for X... $ECHO_C" >&6 + +# Check whether --with-x or --without-x was given. +if test "${with_x+set}" = set; then + withval="$with_x" + +fi; +# $have_x is `yes', `no', `disabled', or empty when we do not yet know. +if test "x$with_x" = xno; then + # The user explicitly disabled X. + have_x=disabled +else + if test "x$x_includes" != xNONE && test "x$x_libraries" != xNONE; then + # Both variables are already set. + have_x=yes + else + if test "${ac_cv_have_x+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + # One or both of the vars are not set, and there is no cached value. +ac_x_includes=no ac_x_libraries=no +rm -fr conftest.dir +if mkdir conftest.dir; then + cd conftest.dir + # Make sure to not put "make" in the Imakefile rules, since we grep it out. + cat >Imakefile <<'EOF' +acfindx: + @echo 'ac_im_incroot="${INCROOT}"; ac_im_usrlibdir="${USRLIBDIR}"; ac_im_libdir="${LIBDIR}"' +EOF + if (xmkmf) >/dev/null 2>/dev/null && test -f Makefile; then + # GNU make sometimes prints "make[1]: Entering...", which would confuse us. + eval "`${MAKE-make} acfindx 2>/dev/null | grep -v make`" + # Open Windows xmkmf reportedly sets LIBDIR instead of USRLIBDIR. + for ac_extension in a so sl dylib dll; do + if test ! -f "$ac_im_usrlibdir/libX11.$ac_extension" && + test -f "$ac_im_libdir/libX11.$ac_extension"; then + ac_im_usrlibdir=$ac_im_libdir; break + fi + done + # Screen out bogus values from the imake configuration. They are + # bogus both because they are the default anyway, and because + # using them would break gcc on systems where it needs fixed includes. + case $ac_im_incroot in + /usr/include) ;; + *) test -f "$ac_im_incroot/X11/Xos.h" && ac_x_includes=$ac_im_incroot;; + esac + case $ac_im_usrlibdir in + /usr/lib | /lib) ;; + *) test -d "$ac_im_usrlibdir" && ac_x_libraries=$ac_im_usrlibdir ;; + esac + fi + cd .. + rm -fr conftest.dir +fi + +# Standard set of common directories for X headers. +# Check X11 before X11Rn because it is often a symlink to the current release. +ac_x_header_dirs=' +/usr/X11/include +/usr/X11R7/include +/usr/X11R6/include +/usr/X11R5/include +/usr/X11R4/include + +/opt/local/include +/opt/X11/include + +/usr/include/X11 +/usr/include/X11R7 +/usr/include/X11R6 +/usr/include/X11R5 +/usr/include/X11R4 + +/usr/local/X11/include +/usr/local/X11R7/include +/usr/local/X11R6/include +/usr/local/X11R5/include +/usr/local/X11R4/include + +/usr/local/include/X11 +/usr/local/include/X11R7 +/usr/local/include/X11R6 +/usr/local/include/X11R5 +/usr/local/include/X11R4 + +/usr/X386/include +/usr/x386/include +/usr/XFree86/include/X11 + +/usr/include +/usr/local/include +/usr/unsupported/include +/usr/athena/include +/usr/local/x11r5/include +/usr/lpp/Xamples/include + +/usr/openwin/include +/usr/openwin/share/include' + +if test "$ac_x_includes" = no; then + # Guess where to find include files, by looking for Intrinsic.h. + # First, try using that file with no special directory specified. + cat >"conftest.$ac_ext" <<_ACEOF +#line 20879 "configure" +#include "confdefs.h" +#include <X11/Intrinsic.h> +_ACEOF +if { (eval echo "$as_me:20883: \"$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:20889: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + # We can compile using X headers with no special include directory. +ac_x_includes= +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + for ac_dir in $ac_x_header_dirs; do + if test -r "$ac_dir/X11/Intrinsic.h"; then + ac_x_includes=$ac_dir + break + fi +done +fi +rm -f conftest.err "conftest.$ac_ext" +fi # $ac_x_includes = no + +if test "$ac_x_libraries" = no; then + # Check for the libraries. + # See if we find them without any special options. + # Don't add to $LIBS permanently. + ac_save_LIBS=$LIBS + LIBS="-lXt $LIBS" + cat >"conftest.$ac_ext" <<_ACEOF +#line 20922 "configure" +#include "confdefs.h" +#include <X11/Intrinsic.h> +int +main (void) +{ +XtMalloc (0) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:20934: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:20937: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:20940: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:20943: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + LIBS=$ac_save_LIBS +# We can link X programs with no special library path. +ac_x_libraries= +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +LIBS=$ac_save_LIBS +for ac_dir in `echo "$ac_x_includes $ac_x_header_dirs" | sed s/include/lib/g` +do + # Don't even attempt the hair of trying to link an X program! + for ac_extension in a so sl dylib dll; do + if test -r "$ac_dir/libXt.$ac_extension"; then + ac_x_libraries=$ac_dir + break 2 + fi + done +done +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi # $ac_x_libraries = no + +if test "$ac_x_includes" = no || test "$ac_x_libraries" = no; then + # Didn't find X anywhere. Cache the known absence of X. + ac_cv_have_x="have_x=no" +else + # Record where we found X for the cache. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$ac_x_includes ac_x_libraries=$ac_x_libraries" +fi +fi + + fi + eval "$ac_cv_have_x" +fi # $with_x != no + +if test "$have_x" != yes; then + echo "$as_me:20981: result: $have_x" >&5 +echo "${ECHO_T}$have_x" >&6 + no_x=yes +else + # If each of the values was on the command line, it overrides each guess. + test "x$x_includes" = xNONE && x_includes=$ac_x_includes + test "x$x_libraries" = xNONE && x_libraries=$ac_x_libraries + # Update the cache value to reflect the command line values. + ac_cv_have_x="have_x=yes \ + ac_x_includes=$x_includes ac_x_libraries=$x_libraries" + echo "$as_me:20991: result: libraries $x_libraries, headers $x_includes" >&5 +echo "${ECHO_T}libraries $x_libraries, headers $x_includes" >&6 +fi + + if test "$no_x" = yes; then + # Not all programs may use this symbol, but it does not hurt to define it. + +cat >>confdefs.h <<\EOF +#define X_DISPLAY_MISSING 1 +EOF + + X_CFLAGS= + X_PRE_LIBS= + X_LIBS= + X_EXTRA_LIBS= +else + if test -n "$x_includes"; then + X_CFLAGS="$X_CFLAGS -I$x_includes" + fi + + # It would also be nice to do this for all -L options, not just this one. + if test -n "$x_libraries"; then + X_LIBS="$X_LIBS -L$x_libraries" + # For Solaris; some versions of Sun CC require a space after -R and + # others require no space. Words are not sufficient . . . . + case `(uname -sr) 2>/dev/null` in + "SunOS 5"*) + echo "$as_me:21018: checking whether -R must be followed by a space" >&5 +echo $ECHO_N "checking whether -R must be followed by a space... $ECHO_C" >&6 + ac_xsave_LIBS=$LIBS; LIBS="$LIBS -R$x_libraries" + cat >"conftest.$ac_ext" <<_ACEOF +#line 21022 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21034: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21037: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21040: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21043: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_R_nospace=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_R_nospace=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + if test $ac_R_nospace = yes; then + echo "$as_me:21053: result: no" >&5 +echo "${ECHO_T}no" >&6 + X_LIBS="$X_LIBS -R$x_libraries" + else + LIBS="$ac_xsave_LIBS -R $x_libraries" + cat >"conftest.$ac_ext" <<_ACEOF +#line 21059 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21071: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21074: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21077: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21080: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_R_space=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_R_space=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + if test $ac_R_space = yes; then + echo "$as_me:21090: result: yes" >&5 +echo "${ECHO_T}yes" >&6 + X_LIBS="$X_LIBS -R $x_libraries" + else + echo "$as_me:21094: result: neither works" >&5 +echo "${ECHO_T}neither works" >&6 + fi + fi + LIBS=$ac_xsave_LIBS + esac + fi + + # Check for system-dependent libraries X programs must link with. + # Do this before checking for the system-independent R6 libraries + # (-lICE), since we may need -lsocket or whatever for X linking. + + if test "$ISC" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl_s -linet" + else + # Martyn Johnson says this is needed for Ultrix, if the X + # libraries were built with DECnet support. And Karl Berry says + # the Alpha needs dnet_stub (dnet does not exist). + ac_xsave_LIBS="$LIBS"; LIBS="$LIBS $X_LIBS -lX11" + cat >"conftest.$ac_ext" <<_ACEOF +#line 21114 "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 XOpenDisplay (); +int +main (void) +{ +XOpenDisplay (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21133: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21136: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21139: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21142: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + : +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +echo "$as_me:21148: checking for dnet_ntoa in -ldnet" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21156 "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 dnet_ntoa (); +int +main (void) +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21175: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21178: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21181: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21184: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dnet_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dnet_dnet_ntoa=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21195: result: $ac_cv_lib_dnet_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_dnet_ntoa" >&6 +if test "$ac_cv_lib_dnet_dnet_ntoa" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet" +fi + + if test $ac_cv_lib_dnet_dnet_ntoa = no; then + echo "$as_me:21202: checking for dnet_ntoa in -ldnet_stub" >&5 +echo $ECHO_N "checking for dnet_ntoa in -ldnet_stub... $ECHO_C" >&6 +if test "${ac_cv_lib_dnet_stub_dnet_ntoa+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldnet_stub $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21210 "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 dnet_ntoa (); +int +main (void) +{ +dnet_ntoa (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21229: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21232: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21235: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21238: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dnet_stub_dnet_ntoa=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dnet_stub_dnet_ntoa=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21249: result: $ac_cv_lib_dnet_stub_dnet_ntoa" >&5 +echo "${ECHO_T}$ac_cv_lib_dnet_stub_dnet_ntoa" >&6 +if test "$ac_cv_lib_dnet_stub_dnet_ntoa" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -ldnet_stub" +fi + + fi +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$ac_xsave_LIBS" + + # msh@cis.ufl.edu says -lnsl (and -lsocket) are needed for his 386/AT, + # to get the SysV transport functions. + # Chad R. Larson says the Pyramis MIS-ES running DC/OSx (SVR4) + # needs -lnsl. + # The nsl library prevents programs from opening the X display + # on Irix 5.2, according to T.E. Dickey. + # The functions gethostbyname, getservbyname, and inet_addr are + # in -lbsd on LynxOS 3.0.1/i386, according to Lars Hecking. + echo "$as_me:21268: checking for gethostbyname" >&5 +echo $ECHO_N "checking for gethostbyname... $ECHO_C" >&6 +if test "${ac_cv_func_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 21274 "configure" +#include "confdefs.h" +#define gethostbyname autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef gethostbyname + +#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 gethostbyname (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_gethostbyname) || defined (__stub___gethostbyname) +#error found stub for gethostbyname +#endif + + return gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21305: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21308: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21311: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21314: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_gethostbyname=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:21324: result: $ac_cv_func_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_func_gethostbyname" >&6 + + if test $ac_cv_func_gethostbyname = no; then + echo "$as_me:21328: checking for gethostbyname in -lnsl" >&5 +echo $ECHO_N "checking for gethostbyname in -lnsl... $ECHO_C" >&6 +if test "${ac_cv_lib_nsl_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lnsl $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21336 "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 gethostbyname (); +int +main (void) +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21355: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21358: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21361: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21364: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_nsl_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_nsl_gethostbyname=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21375: result: $ac_cv_lib_nsl_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_nsl_gethostbyname" >&6 +if test "$ac_cv_lib_nsl_gethostbyname" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lnsl" +fi + + if test $ac_cv_lib_nsl_gethostbyname = no; then + echo "$as_me:21382: checking for gethostbyname in -lbsd" >&5 +echo $ECHO_N "checking for gethostbyname in -lbsd... $ECHO_C" >&6 +if test "${ac_cv_lib_bsd_gethostbyname+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lbsd $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21390 "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 gethostbyname (); +int +main (void) +{ +gethostbyname (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21409: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21412: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21415: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21418: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_bsd_gethostbyname=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_bsd_gethostbyname=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21429: result: $ac_cv_lib_bsd_gethostbyname" >&5 +echo "${ECHO_T}$ac_cv_lib_bsd_gethostbyname" >&6 +if test "$ac_cv_lib_bsd_gethostbyname" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lbsd" +fi + + fi + fi + + # lieder@skyler.mavd.honeywell.com says without -lsocket, + # socket/setsockopt and other routines are undefined under SCO ODT + # 2.0. But -lsocket is broken on IRIX 5.2 (and is not necessary + # on later versions), says Simon Leinen: it contains gethostby* + # variants that don't use the nameserver (or something). -lsocket + # must be given before -lnsl if both are needed. We assume that + # if connect needs -lnsl, so does gethostbyname. + echo "$as_me:21445: checking for connect" >&5 +echo $ECHO_N "checking for connect... $ECHO_C" >&6 +if test "${ac_cv_func_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 21451 "configure" +#include "confdefs.h" +#define connect autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef connect + +#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 connect (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_connect) || defined (__stub___connect) +#error found stub for connect +#endif + + return connect (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21482: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21485: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21488: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21491: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_connect=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:21501: result: $ac_cv_func_connect" >&5 +echo "${ECHO_T}$ac_cv_func_connect" >&6 + + if test $ac_cv_func_connect = no; then + echo "$as_me:21505: checking for connect in -lsocket" >&5 +echo $ECHO_N "checking for connect in -lsocket... $ECHO_C" >&6 +if test "${ac_cv_lib_socket_connect+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lsocket $X_EXTRA_LIBS $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21513 "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 connect (); +int +main (void) +{ +connect (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21532: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21535: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21538: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21541: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_socket_connect=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_socket_connect=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21552: result: $ac_cv_lib_socket_connect" >&5 +echo "${ECHO_T}$ac_cv_lib_socket_connect" >&6 +if test "$ac_cv_lib_socket_connect" = yes; then + X_EXTRA_LIBS="-lsocket $X_EXTRA_LIBS" +fi + + fi + + # Guillermo Gomez says -lposix is necessary on A/UX. + echo "$as_me:21561: checking for remove" >&5 +echo $ECHO_N "checking for remove... $ECHO_C" >&6 +if test "${ac_cv_func_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 21567 "configure" +#include "confdefs.h" +#define remove autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef remove + +#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 remove (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_remove) || defined (__stub___remove) +#error found stub for remove +#endif + + return remove (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21598: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21601: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21604: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21607: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_remove=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:21617: result: $ac_cv_func_remove" >&5 +echo "${ECHO_T}$ac_cv_func_remove" >&6 + + if test $ac_cv_func_remove = no; then + echo "$as_me:21621: checking for remove in -lposix" >&5 +echo $ECHO_N "checking for remove in -lposix... $ECHO_C" >&6 +if test "${ac_cv_lib_posix_remove+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lposix $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21629 "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 remove (); +int +main (void) +{ +remove (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21648: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21651: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21654: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21657: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_posix_remove=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_posix_remove=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21668: result: $ac_cv_lib_posix_remove" >&5 +echo "${ECHO_T}$ac_cv_lib_posix_remove" >&6 +if test "$ac_cv_lib_posix_remove" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lposix" +fi + + fi + + # BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay. + echo "$as_me:21677: checking for shmat" >&5 +echo $ECHO_N "checking for shmat... $ECHO_C" >&6 +if test "${ac_cv_func_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >"conftest.$ac_ext" <<_ACEOF +#line 21683 "configure" +#include "confdefs.h" +#define shmat autoconf_temporary +#include <limits.h> /* least-intrusive standard header which defines gcc2 __stub macros */ +#undef shmat + +#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 shmat (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_shmat) || defined (__stub___shmat) +#error found stub for shmat +#endif + + return shmat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21714: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21717: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21720: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21723: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_func_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_func_shmat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +fi +echo "$as_me:21733: result: $ac_cv_func_shmat" >&5 +echo "${ECHO_T}$ac_cv_func_shmat" >&6 + + if test $ac_cv_func_shmat = no; then + echo "$as_me:21737: checking for shmat in -lipc" >&5 +echo $ECHO_N "checking for shmat in -lipc... $ECHO_C" >&6 +if test "${ac_cv_lib_ipc_shmat+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lipc $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21745 "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 shmat (); +int +main (void) +{ +shmat (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21764: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21767: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21770: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21773: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_ipc_shmat=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_ipc_shmat=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21784: result: $ac_cv_lib_ipc_shmat" >&5 +echo "${ECHO_T}$ac_cv_lib_ipc_shmat" >&6 +if test "$ac_cv_lib_ipc_shmat" = yes; then + X_EXTRA_LIBS="$X_EXTRA_LIBS -lipc" +fi + + fi + fi + + # Check for libraries that X11R6 Xt/Xaw programs need. + ac_save_LDFLAGS=$LDFLAGS + test -n "$x_libraries" && LDFLAGS="$LDFLAGS -L$x_libraries" + # SM needs ICE to (dynamically) link under SunOS 4.x (so we have to + # check for ICE first), but we must link in the order -lSM -lICE or + # we get undefined symbols. So assume we have SM if we have ICE. + # These have to be linked with before -lX11, unlike the other + # libraries we check for below, so use a different variable. + # John Interrante, Karl Berry + echo "$as_me:21802: checking for IceConnectionNumber in -lICE" >&5 +echo $ECHO_N "checking for IceConnectionNumber in -lICE... $ECHO_C" >&6 +if test "${ac_cv_lib_ICE_IceConnectionNumber+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-lICE $X_EXTRA_LIBS $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 21810 "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 IceConnectionNumber (); +int +main (void) +{ +IceConnectionNumber (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:21829: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:21832: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:21835: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:21838: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_ICE_IceConnectionNumber=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_ICE_IceConnectionNumber=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:21849: result: $ac_cv_lib_ICE_IceConnectionNumber" >&5 +echo "${ECHO_T}$ac_cv_lib_ICE_IceConnectionNumber" >&6 +if test "$ac_cv_lib_ICE_IceConnectionNumber" = yes; then + X_PRE_LIBS="$X_PRE_LIBS -lSM -lICE" +fi + + LDFLAGS=$ac_save_LDFLAGS + +fi + +fi + +if test "$GCC" = yes || test "$GXX" = yes +then + +if test "$GCC" = yes || test "$GXX" = yes +then + case $CFLAGS in + (*-Werror=*) + test -n "$verbose" && echo " repairing CFLAGS: $CFLAGS" 1>&6 + +echo "${as_me:-configure}:21870: testing repairing CFLAGS: $CFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $CFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + CFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $CFLAGS" 1>&6 + +echo "${as_me:-configure}:21893: testing ... fixed $CFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:21897: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +if test "$GCC" = yes || test "$GXX" = yes +then + case $CPPFLAGS in + (*-Werror=*) + test -n "$verbose" && echo " repairing CPPFLAGS: $CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:21909: testing repairing CPPFLAGS: $CPPFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $CPPFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + CPPFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $CPPFLAGS" 1>&6 + +echo "${as_me:-configure}:21932: testing ... fixed $CPPFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:21936: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +if test "$GCC" = yes || test "$GXX" = yes +then + case $LDFLAGS in + (*-Werror=*) + test -n "$verbose" && echo " repairing LDFLAGS: $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:21948: testing repairing LDFLAGS: $LDFLAGS ..." 1>&5 + + cf_temp_flags= + for cf_temp_scan in $LDFLAGS + do + case "x$cf_temp_scan" in + (x-Werror=*) + + test -n "$EXTRA_CFLAGS" && EXTRA_CFLAGS="$EXTRA_CFLAGS " + EXTRA_CFLAGS="${EXTRA_CFLAGS}$cf_temp_scan" + + ;; + (*) + + test -n "$cf_temp_flags" && cf_temp_flags="$cf_temp_flags " + cf_temp_flags="${cf_temp_flags}$cf_temp_scan" + + ;; + esac + done + LDFLAGS="$cf_temp_flags" + test -n "$verbose" && echo " ... fixed $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:21971: testing ... fixed $LDFLAGS ..." 1>&5 + + test -n "$verbose" && echo " ... extra $EXTRA_CFLAGS" 1>&6 + +echo "${as_me:-configure}:21975: testing ... extra $EXTRA_CFLAGS ..." 1>&5 + + ;; + esac +fi + +echo "$as_me:21981: 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. +if test "${enable_warnings+set}" = set; then + enableval="$enable_warnings" + test "$enableval" != yes && enableval=no + if test "$enableval" != "no" ; then + enable_warnings=yes + else + enable_warnings=no + fi +else + enableval=no + enable_warnings=no + +fi; +echo "$as_me:21998: result: $enable_warnings" >&5 +echo "${ECHO_T}$enable_warnings" >&6 +if test "$enable_warnings" = "yes" +then + +if test "$GCC" = yes || test "$GXX" = yes +then +cat > conftest.i <<EOF +#ifndef GCC_PRINTF +#define GCC_PRINTF 0 +#endif +#ifndef GCC_SCANF +#define GCC_SCANF 0 +#endif +#ifndef GCC_NORETURN +#define GCC_NORETURN /* nothing */ +#endif +#ifndef GCC_UNUSED +#define GCC_UNUSED /* nothing */ +#endif +EOF +if test "$GCC" = yes +then + { echo "$as_me:22021: checking for $CC __attribute__ directives..." >&5 +echo "$as_me: checking for $CC __attribute__ directives..." >&6;} +cat > "conftest.$ac_ext" <<EOF +#line 22024 "${as_me:-configure}" +#include "confdefs.h" +#include "conftest.h" +#include "conftest.i" +#if GCC_PRINTF +#define GCC_PRINTFLIKE(fmt,var) __attribute__((format(printf,fmt,var))) +#else +#define GCC_PRINTFLIKE(fmt,var) /*nothing*/ +#endif +#if GCC_SCANF +#define GCC_SCANFLIKE(fmt,var) __attribute__((format(scanf,fmt,var))) +#else +#define GCC_SCANFLIKE(fmt,var) /*nothing*/ +#endif +extern void wow(char *,...) GCC_SCANFLIKE(1,2); +extern GCC_NORETURN void oops(char *,...) GCC_PRINTFLIKE(1,2); +extern GCC_NORETURN void foo(void); +int main(int argc GCC_UNUSED, char *argv[] GCC_UNUSED) { (void)argc; (void)argv; return 0; } +EOF + cf_printf_attribute=no + cf_scanf_attribute=no + for cf_attribute in scanf printf unused noreturn + do + +cf_ATTRIBUTE=`echo "$cf_attribute" | sed y%abcdefghijklmnopqrstuvwxyz./-%ABCDEFGHIJKLMNOPQRSTUVWXYZ___%` + + cf_directive="__attribute__(($cf_attribute))" + echo "checking for $CC $cf_directive" 1>&5 + + case "$cf_attribute" in + (printf) + cf_printf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + (scanf) + cf_scanf_attribute=yes + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE 1 +EOF + ;; + (*) + cat >conftest.h <<EOF +#define GCC_$cf_ATTRIBUTE $cf_directive +EOF + ;; + esac + + if { (eval echo "$as_me:22073: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22076: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:22078: result: ... $cf_attribute" >&5 +echo "${ECHO_T}... $cf_attribute" >&6 + cat conftest.h >>confdefs.h + case "$cf_attribute" in + (noreturn) + +cat >>confdefs.h <<EOF +#define GCC_NORETURN $cf_directive +EOF + + ;; + (printf) + cf_value='/* nothing */' + if test "$cf_printf_attribute" != no ; then + cf_value='__attribute__((format(printf,fmt,var)))' + +cat >>confdefs.h <<\EOF +#define GCC_PRINTF 1 +EOF + + fi + +cat >>confdefs.h <<EOF +#define GCC_PRINTFLIKE(fmt,var) $cf_value +EOF + + ;; + (scanf) + cf_value='/* nothing */' + if test "$cf_scanf_attribute" != no ; then + cf_value='__attribute__((format(scanf,fmt,var)))' + +cat >>confdefs.h <<\EOF +#define GCC_SCANF 1 +EOF + + fi + +cat >>confdefs.h <<EOF +#define GCC_SCANFLIKE(fmt,var) $cf_value +EOF + + ;; + (unused) + +cat >>confdefs.h <<EOF +#define GCC_UNUSED $cf_directive +EOF + + ;; + esac + fi + done +else + ${FGREP-fgrep} define conftest.i >>confdefs.h +fi +rm -rf ./conftest* +fi + +if test "x$have_x" = xyes; then + +cf_save_LIBS_CF_CONST_X_STRING="$LIBS" +cf_save_CFLAGS_CF_CONST_X_STRING="$CFLAGS" +cf_save_CPPFLAGS_CF_CONST_X_STRING="$CPPFLAGS" +LIBS="$LIBS ${X_PRE_LIBS} ${X_LIBS} ${X_EXTRA_LIBS}" +for cf_X_CFLAGS in $X_CFLAGS +do + case "x$cf_X_CFLAGS" in + x-[IUD]*) + CPPFLAGS="$CPPFLAGS $cf_X_CFLAGS" + ;; + *) + CFLAGS="$CFLAGS $cf_X_CFLAGS" + ;; + esac +done + +cat >"conftest.$ac_ext" <<_ACEOF +#line 22156 "configure" +#include "confdefs.h" + +#include <stdlib.h> +#include <X11/Intrinsic.h> + +int +main (void) +{ +String foo = malloc(1); free((void*)foo) + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:22171: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22174: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:22177: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22180: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + +echo "$as_me:22183: 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 22190 "configure" +#include "confdefs.h" + +#define _CONST_X_STRING /* X11R7.8 (perhaps) */ +#undef XTSTRINGDEFINES /* X11R5 and later */ +#include <stdlib.h> +#include <X11/Intrinsic.h> + +int +main (void) +{ +String foo = malloc(1); *foo = 0 + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" +if { (eval echo "$as_me:22207: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22210: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest.$ac_objext"' + { (eval echo "$as_me:22213: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22216: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + + cf_cv_const_x_string=no + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 + + cf_cv_const_x_string=yes + +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + +fi +echo "$as_me:22231: result: $cf_cv_const_x_string" >&5 +echo "${ECHO_T}$cf_cv_const_x_string" >&6 + +LIBS="$cf_save_LIBS_CF_CONST_X_STRING" +CFLAGS="$cf_save_CFLAGS_CF_CONST_X_STRING" +CPPFLAGS="$cf_save_CPPFLAGS_CF_CONST_X_STRING" + +case "$cf_cv_const_x_string" in +(no) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-DXTSTRINGDEFINES" + + ;; +(*) + + test -n "$CPPFLAGS" && CPPFLAGS="$CPPFLAGS " + CPPFLAGS="${CPPFLAGS}-D_CONST_X_STRING" + + ;; +esac + +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest.$ac_ext" + fi +cat > "conftest.$ac_ext" <<EOF +#line 22260 "${as_me:-configure}" +int main(int argc, char *argv[]) { return (argv[argc-1] == 0) ; } +EOF +if test "$INTEL_COMPILER" = yes +then +# The "-wdXXX" options suppress warnings: +# remark #1419: external declaration in primary source file +# remark #1683: explicit conversion of a 64-bit integral type to a smaller integral type (potential portability problem) +# remark #1684: conversion from pointer to same-sized integral type (potential portability problem) +# remark #193: zero used for undefined preprocessing identifier +# remark #593: variable "curs_sb_left_arrow" was set but never used +# remark #810: conversion from "int" to "Dimension={unsigned short}" may lose significant bits +# remark #869: parameter "tw" was never referenced +# remark #981: operands are evaluated in unspecified order +# warning #279: controlling expression is constant + + { echo "$as_me:22276: checking for $CC warning options..." >&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + EXTRA_CFLAGS="$EXTRA_CFLAGS -Wall" + for cf_opt in \ + wd1419 \ + wd1683 \ + wd1684 \ + wd193 \ + wd593 \ + wd279 \ + wd810 \ + wd869 \ + wd981 + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if { (eval echo "$as_me:22292: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22295: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:22297: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +elif test "$GCC" = yes && test "$GCC_VERSION" != "unknown" +then + { echo "$as_me:22305: checking for $CC warning options..." >&5 +echo "$as_me: checking for $CC warning options..." >&6;} + cf_save_CFLAGS="$CFLAGS" + cf_warn_CONST="" + test "$with_ext_const" = yes && cf_warn_CONST="Wwrite-strings" + cf_gcc_warnings="Wignored-qualifiers Wlogical-op Wvarargs" + test "x$CLANG_COMPILER" = xyes && cf_gcc_warnings= + for cf_opt in W Wall \ + Wbad-function-cast \ + Wcast-align \ + Wcast-qual \ + Wdeclaration-after-statement \ + Wextra \ + Winline \ + Wmissing-declarations \ + Wmissing-prototypes \ + Wnested-externs \ + Wpointer-arith \ + Wshadow \ + Wstrict-prototypes \ + Wundef Wno-inline $cf_gcc_warnings $cf_warn_CONST Wno-unknown-pragmas + do + CFLAGS="$cf_save_CFLAGS $EXTRA_CFLAGS -$cf_opt" + if { (eval echo "$as_me:22328: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>&5 + ac_status=$? + echo "$as_me:22331: \$? = $ac_status" >&5 + (exit "$ac_status"); }; then + test -n "$verbose" && echo "$as_me:22333: result: ... -$cf_opt" >&5 +echo "${ECHO_T}... -$cf_opt" >&6 + case "$cf_opt" in + (Winline) + case "$GCC_VERSION" in + ([34].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:22341: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + (Wpointer-arith) + case "$GCC_VERSION" in + ([12].*) + test -n "$verbose" && echo " feature is broken in gcc $GCC_VERSION" 1>&6 + +echo "${as_me:-configure}:22351: testing feature is broken in gcc $GCC_VERSION ..." 1>&5 + + continue;; + esac + ;; + esac + EXTRA_CFLAGS="$EXTRA_CFLAGS -$cf_opt" + fi + done + CFLAGS="$cf_save_CFLAGS" +fi +rm -rf ./conftest* + +fi + +fi + +echo "$as_me:22368: 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. +if test "${with_dmalloc+set}" = set; then + withval="$with_dmalloc" + case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_dmalloc=yes + +cat >>confdefs.h <<EOF +#define USE_DMALLOC 1 +EOF + + ;; + esac +else + with_dmalloc= +fi; +echo "$as_me:22390: result: ${with_dmalloc:-no}" >&5 +echo "${ECHO_T}${with_dmalloc:-no}" >&6 + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +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 + + ;; + esac + ;; +esac + +if test "$with_dmalloc" = yes ; then + echo "$as_me:22504: 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 22510 "configure" +#include "confdefs.h" +#include <dmalloc.h> +_ACEOF +if { (eval echo "$as_me:22514: \"$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:22520: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_dmalloc_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_dmalloc_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:22539: 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:22543: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldmalloc $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 22551 "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 dmalloc_debug (); +int +main (void) +{ +dmalloc_debug (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22570: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22573: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22576: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22579: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dmalloc_dmalloc_debug=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dmalloc_dmalloc_debug=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:22590: 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 +#define HAVE_LIBDMALLOC 1 +EOF + + LIBS="-ldmalloc $LIBS" + +fi + +fi + +fi + +echo "$as_me:22605: 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. +if test "${with_dbmalloc+set}" = set; then + withval="$with_dbmalloc" + case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_dbmalloc=yes + +cat >>confdefs.h <<EOF +#define USE_DBMALLOC 1 +EOF + + ;; + esac +else + with_dbmalloc= +fi; +echo "$as_me:22627: result: ${with_dbmalloc:-no}" >&5 +echo "${ECHO_T}${with_dbmalloc:-no}" >&6 + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +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 + + ;; + esac + ;; +esac + +if test "$with_dbmalloc" = yes ; then + echo "$as_me:22741: 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 22747 "configure" +#include "confdefs.h" +#include <dbmalloc.h> +_ACEOF +if { (eval echo "$as_me:22751: \"$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:22757: \$? = $ac_status" >&5 + (exit "$ac_status"); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_cv_header_dbmalloc_h=yes +else + echo "$as_me: failed program was:" >&5 + cat "conftest.$ac_ext" >&5 + ac_cv_header_dbmalloc_h=no +fi +rm -f conftest.err "conftest.$ac_ext" +fi +echo "$as_me:22776: 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:22780: 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 +else + ac_check_lib_save_LIBS=$LIBS +LIBS="-ldbmalloc $LIBS" +cat >"conftest.$ac_ext" <<_ACEOF +#line 22788 "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 debug_malloc (); +int +main (void) +{ +debug_malloc (); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:22807: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:22810: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:22813: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:22816: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + ac_cv_lib_dbmalloc_debug_malloc=yes +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +ac_cv_lib_dbmalloc_debug_malloc=no +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" +LIBS=$ac_check_lib_save_LIBS +fi +echo "$as_me:22827: 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 +#define HAVE_LIBDBMALLOC 1 +EOF + + LIBS="-ldbmalloc $LIBS" + +fi + +fi + +fi + +echo "$as_me:22842: 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. +if test "${with_valgrind+set}" = set; then + withval="$with_valgrind" + case "x$withval" in + (x|xno) ;; + (*) + : "${with_cflags:=-g}" + : "${enable_leaks:=no}" + with_valgrind=yes + +cat >>confdefs.h <<EOF +#define USE_VALGRIND 1 +EOF + + ;; + esac +else + with_valgrind= +fi; +echo "$as_me:22864: result: ${with_valgrind:-no}" >&5 +echo "${ECHO_T}${with_valgrind:-no}" >&6 + +case ".$with_cflags" in +(.*-g*) + case .$CFLAGS in + (.*-g*) + ;; + (*) + +cf_fix_cppflags=no +cf_new_cflags= +cf_new_cppflags= +cf_new_extra_cppflags= + +for cf_add_cflags in -g +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 + + ;; + esac + ;; +esac + +echo "$as_me:22977: 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. +if test "${enable_leaks+set}" = set; then + enableval="$enable_leaks" + enable_leaks=$enableval +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:22988: result: $with_no_leaks" >&5 +echo "${ECHO_T}$with_no_leaks" >&6 + +if test "$enable_leaks" = no ; then + +cat >>confdefs.h <<\EOF +#define NO_LEAKS 1 +EOF + +cat >>confdefs.h <<\EOF +#define YY_NO_LEAKS 1 +EOF + +fi + +LD_RPATH_OPT= +if test "x$cf_cv_enable_rpath" != xno +then + echo "$as_me:23006: checking for an rpath option" >&5 +echo $ECHO_N "checking for an rpath option... $ECHO_C" >&6 + case "$cf_cv_system_name" in + (irix*) + if test "$GCC" = yes; then + LD_RPATH_OPT="-Wl,-rpath," + else + LD_RPATH_OPT="-rpath " + fi + ;; + (linux*|gnu*|k*bsd*-gnu|freebsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (openbsd[2-9].*|mirbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (dragonfly*) + LD_RPATH_OPT="-rpath " + ;; + (netbsd*) + LD_RPATH_OPT="-Wl,-rpath," + ;; + (osf*|mls+*) + LD_RPATH_OPT="-rpath " + ;; + (solaris2*) + LD_RPATH_OPT="-R" + ;; + (*) + ;; + esac + echo "$as_me:23037: result: $LD_RPATH_OPT" >&5 +echo "${ECHO_T}$LD_RPATH_OPT" >&6 + + case "x$LD_RPATH_OPT" in + (x-R*) + echo "$as_me:23042: 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" + +cf_add_libs="$LIBS" +# reverse order +cf_add_0lib= +for cf_add_1lib in ${LD_RPATH_OPT}$libdir; do cf_add_0lib="$cf_add_1lib $cf_add_0lib"; done +# filter duplicates +for cf_add_1lib in $cf_add_0lib; do + for cf_add_2lib in $cf_add_libs; do + if test "x$cf_add_1lib" = "x$cf_add_2lib"; then + cf_add_1lib= + break + fi + done + test -n "$cf_add_1lib" && cf_add_libs="$cf_add_1lib $cf_add_libs" +done +LIBS="$cf_add_libs" + + cat >"conftest.$ac_ext" <<_ACEOF +#line 23063 "configure" +#include "confdefs.h" + +int +main (void) +{ + + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23075: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23078: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23081: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23084: \$? = $ac_status" >&5 + (exit "$ac_status"); }; }; then + cf_rpath_space=no +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +cf_rpath_space=yes +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + LIBS="$cf_save_LIBS" + echo "$as_me:23094: result: $cf_rpath_space" >&5 +echo "${ECHO_T}$cf_rpath_space" >&6 + test "$cf_rpath_space" = yes && LD_RPATH_OPT="$LD_RPATH_OPT " + ;; + esac +fi + +echo "$as_me:23101: 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. +if test "${enable_rpath_hack+set}" = set; then + enableval="$enable_rpath_hack" + test "$enableval" != no && enableval=yes + if test "$enableval" != "yes" ; then + enable_rpath_hack=no + else + enable_rpath_hack=yes + fi +else + enableval=yes + enable_rpath_hack=yes + +fi; +if test "x$enable_rpath_hack" = xno; then cf_disable_rpath_hack=yes; else cf_disable_rpath_hack=no; fi +echo "$as_me:23119: result: $cf_disable_rpath_hack" >&5 +echo "${ECHO_T}$cf_disable_rpath_hack" >&6 + +if test "$enable_rpath_hack" = yes ; then + +echo "$as_me:23124: 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:23127: 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:23134: 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 +else + if test -n "$cf_ldd_prog"; then + ac_cv_prog_cf_ldd_prog="$cf_ldd_prog" # 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_cf_ldd_prog="$ac_prog" +echo "$as_me:23149: found $ac_dir/$ac_word" >&5 +break +done + +fi +fi +cf_ldd_prog=$ac_cv_prog_cf_ldd_prog +if test -n "$cf_ldd_prog"; then + echo "$as_me:23157: result: $cf_ldd_prog" >&5 +echo "${ECHO_T}$cf_ldd_prog" >&6 +else + echo "$as_me:23160: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + test -n "$cf_ldd_prog" && break +done +test -n "$cf_ldd_prog" || cf_ldd_prog="no" + + cf_rpath_list="/usr/lib /lib" + if test "$cf_ldd_prog" != no + then + cf_rpath_oops= + +cat >"conftest.$ac_ext" <<_ACEOF +#line 23174 "configure" +#include "confdefs.h" +#include <stdio.h> +int +main (void) +{ +printf("Hello"); + ; + return 0; +} +_ACEOF +rm -f "conftest.$ac_objext" "conftest$ac_exeext" +if { (eval echo "$as_me:23186: \"$ac_link\"") >&5 + (eval $ac_link) 2>&5 + ac_status=$? + echo "$as_me:23189: \$? = $ac_status" >&5 + (exit "$ac_status"); } && + { ac_try='test -s "conftest$ac_exeext"' + { (eval echo "$as_me:23192: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:23195: \$? = $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` +else + echo "$as_me: failed program was:" >&5 +cat "conftest.$ac_ext" >&5 +fi +rm -f "conftest.$ac_objext" "conftest$ac_exeext" "conftest.$ac_ext" + + # If we passed the link-test, but get a "not found" on a given library, + # this could be due to inept reconfiguration of gcc to make it only + # partly honor /usr/local/lib (or whatever). Sometimes this behavior + # is intentional, e.g., installing gcc in /usr/bin and suppressing the + # /usr/local libraries. + if test -n "$cf_rpath_oops" + then + for cf_rpath_src in $cf_rpath_oops + do + for cf_rpath_dir in \ + /usr/local \ + /usr/pkg \ + /opt/sfw + do + if test -f "$cf_rpath_dir/lib/$cf_rpath_src" + then + test -n "$verbose" && echo " ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src" 1>&6 + +echo "${as_me:-configure}:23223: testing ...adding -L$cf_rpath_dir/lib to LDFLAGS for $cf_rpath_src ..." 1>&5 + + LDFLAGS="$LDFLAGS -L$cf_rpath_dir/lib" + break + fi + done + done + fi + fi + + test -n "$verbose" && echo " ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 + +echo "${as_me:-configure}:23235: testing ...checking EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 + +test -n "$verbose" && echo " ...checking LDFLAGS $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:23239: testing ...checking LDFLAGS $LDFLAGS ..." 1>&5 + +cf_rpath_dst= +for cf_rpath_src in $LDFLAGS +do + case "$cf_rpath_src" in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 + +echo "${as_me:-configure}:23276: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 + + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +LDFLAGS=$cf_rpath_dst + +test -n "$verbose" && echo " ...checked LDFLAGS $LDFLAGS" 1>&6 + +echo "${as_me:-configure}:23289: testing ...checked LDFLAGS $LDFLAGS ..." 1>&5 + +test -n "$verbose" && echo " ...checking LIBS $LIBS" 1>&6 + +echo "${as_me:-configure}:23293: testing ...checking LIBS $LIBS ..." 1>&5 + +cf_rpath_dst= +for cf_rpath_src in $LIBS +do + case "$cf_rpath_src" in + (-L*) + + # check if this refers to a directory which we will ignore + cf_rpath_skip=no + if test -n "$cf_rpath_list" + then + for cf_rpath_item in $cf_rpath_list + do + if test "x$cf_rpath_src" = "x-L$cf_rpath_item" + then + cf_rpath_skip=yes + break + fi + done + fi + + if test "$cf_rpath_skip" = no + then + # transform the option + if test "$LD_RPATH_OPT" = "-R " ; then + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%-R %"` + else + cf_rpath_tmp=`echo "$cf_rpath_src" |sed -e "s%-L%$LD_RPATH_OPT%"` + fi + + # if we have not already added this, add it now + cf_rpath_tst=`echo "$EXTRA_LDFLAGS" | sed -e "s%$cf_rpath_tmp %%"` + if test "x$cf_rpath_tst" = "x$EXTRA_LDFLAGS" + then + test -n "$verbose" && echo " ...Filter $cf_rpath_src ->$cf_rpath_tmp" 1>&6 + +echo "${as_me:-configure}:23330: testing ...Filter $cf_rpath_src ->$cf_rpath_tmp ..." 1>&5 + + EXTRA_LDFLAGS="$cf_rpath_tmp $EXTRA_LDFLAGS" + fi + fi + ;; + esac + cf_rpath_dst="$cf_rpath_dst $cf_rpath_src" +done +LIBS=$cf_rpath_dst + +test -n "$verbose" && echo " ...checked LIBS $LIBS" 1>&6 + +echo "${as_me:-configure}:23343: testing ...checked LIBS $LIBS ..." 1>&5 + + test -n "$verbose" && echo " ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS" 1>&6 + +echo "${as_me:-configure}:23347: testing ...checked EXTRA_LDFLAGS $EXTRA_LDFLAGS ..." 1>&5 + +else + echo "$as_me:23350: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi + +TEST_ARGS="$LIBS" +LIBS= + +ac_config_files="$ac_config_files Makefile" +ac_config_commands="$ac_config_commands default" +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 +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overriden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, don't put newlines in cache variables' values. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +{ + (set) 2>&1 | + case `(ac_space=' '; set | grep ac_space) 2>&1` in + *ac_space=\ *) + # `set' does not quote correctly, so add quotes (double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \). + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n \ + "s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1=\\2/p" + ;; + esac; +} | + sed ' + t clear + : clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + /^ac_cv_env/!s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + : end' >>confcache +if cmp -s $cache_file confcache; then :; else + if test -w $cache_file; then + test "x$cache_file" != "x/dev/null" && echo "updating cache $cache_file" + cat confcache >$cache_file + else + echo "not updating unwritable cache $cache_file" + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +# VPATH may cause trouble with some makes, so we remove $(srcdir), +# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=/{ +s/:*\$(srcdir):*/:/; +s/:*\${srcdir}:*/:/; +s/:*@srcdir@:*/:/; +s/^\([^=]*=[ ]*\):*/\1/; +s/:*$//; +s/^[^=]*=[ ]*$//; +}' +fi + +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:23440: creating $CONFIG_STATUS" >&5 +echo "$as_me: creating $CONFIG_STATUS" >&6;} +cat >"$CONFIG_STATUS" <<_ACEOF +#! $SHELL +# Generated automatically by configure. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +SHELL=\${CONFIG_SHELL-$SHELL} +ac_cs_invocation="\$0 \$@" + +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS +_ACEOF + +cat >>"$CONFIG_STATUS" <<\_ACEOF +# Be Bourne compatible +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then + emulate sh + NULLCMD=: +elif test -n "${BASH_VERSION+set}" && (set -o posix) >/dev/null 2>&1; then + set -o posix +fi + +# Name of the executable. +as_me=`echo "$0" |sed 's,.*[\\/],,'` + +if expr a : '\(a\)' >/dev/null 2>&1; then + as_expr=expr +else + as_expr=false +fi + +rm -f conf$$ conf$$.exe conf$$.file +echo >conf$$.file +if ln -s conf$$.file conf$$ 2>/dev/null; then + # We could just check for DJGPP; but this test a) works b) is more generic + # and c) will remain valid once DJGPP supports symlinks (DJGPP 2.04). + if test -f conf$$.exe; then + # Don't use ln at all; we don't have any links + as_ln_s='cp -p' + else + as_ln_s='ln -s' + fi +elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln +else + as_ln_s='cp -p' +fi +rm -f conf$$ conf$$.exe conf$$.file + +as_executable_p="test -f" + +# Support unset when possible. +if (FOO=FOO; unset FOO) >/dev/null 2>&1; then + as_unset="unset" +else + as_unset="false" +fi + +# NLS nuisances. +$as_unset LANG || test "${LANG+set}" != set || { LANG=C; export LANG; } +$as_unset LC_ALL || test "${LC_ALL+set}" != set || { LC_ALL=C; export LC_ALL; } +$as_unset LC_TIME || test "${LC_TIME+set}" != set || { LC_TIME=C; export LC_TIME; } +$as_unset LC_CTYPE || test "${LC_CTYPE+set}" != set || { LC_CTYPE=C; export LC_CTYPE; } +$as_unset LANGUAGE || test "${LANGUAGE+set}" != set || { LANGUAGE=C; export LANGUAGE; } +$as_unset LC_COLLATE || test "${LC_COLLATE+set}" != set || { LC_COLLATE=C; export LC_COLLATE; } +$as_unset LC_NUMERIC || test "${LC_NUMERIC+set}" != set || { LC_NUMERIC=C; export LC_NUMERIC; } +$as_unset LC_MESSAGES || test "${LC_MESSAGES+set}" != set || { LC_MESSAGES=C; export LC_MESSAGES; } + +# IFS +# We need space, tab and new line, in precisely that order. +as_nl=' +' +IFS=" $as_nl" + +# CDPATH. +$as_unset CDPATH || test "${CDPATH+set}" != set || { CDPATH=:; export CDPATH; } + +exec 6>&1 + +_ACEOF + +# Files that config.status was made for. +if test -n "$ac_config_files"; then + echo "config_files=\"$ac_config_files\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_headers"; then + echo "config_headers=\"$ac_config_headers\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_links"; then + echo "config_links=\"$ac_config_links\"" >>"$CONFIG_STATUS" +fi + +if test -n "$ac_config_commands"; then + echo "config_commands=\"$ac_config_commands\"" >>"$CONFIG_STATUS" +fi + +cat >>"$CONFIG_STATUS" <<\EOF + +ac_cs_usage="\ +\`$as_me' instantiates files from templates according to the +current configuration. + +Usage: $0 [OPTIONS] [FILE]... + + -h, --help print this help, then exit + -V, --version print version number, then exit + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to <dickey@invisible-island.net>." +EOF + +cat >>"$CONFIG_STATUS" <<EOF +ac_cs_version="\\ +config.status +configured by $0, generated by GNU Autoconf 2.52.20210509, + with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" + +Copyright 2003-2020,2021 Thomas E. Dickey +Copyright 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001 +Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." +srcdir="$srcdir" +INSTALL="$INSTALL" +EOF + +cat >>"$CONFIG_STATUS" <<\EOF +# If no file are specified by the user, then we need to provide default +# value. By we need to know if files were specified by the user. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=*) + ac_option=`expr "x$1" : 'x\([^=]*\)='` + ac_optarg=`expr "x$1" : 'x[^=]*=\(.*\)'` + shift + set dummy "$ac_option" "$ac_optarg" ${1+"$@"} + shift + ;; + -*);; + *) # This is not an option, so the user has probably given explicit + # arguments. + ac_need_defaults=false;; + esac + + case $1 in + # Handling of the options. +EOF +cat >>"$CONFIG_STATUS" <<EOF + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + echo "running $SHELL $0 " $ac_configure_args " --no-create --no-recursion" + exec $SHELL $0 $ac_configure_args --no-create --no-recursion ;; +EOF +cat >>"$CONFIG_STATUS" <<\EOF + --version | --vers* | -V ) + echo "$ac_cs_version"; exit 0 ;; + --he | --h) + # Conflict between --help and --header + { { echo "$as_me:23619: 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;} + { (exit 1); exit 1; }; };; + --help | --hel | -h ) + echo "$ac_cs_usage"; exit 0 ;; + --debug | --d* | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + shift + CONFIG_FILES="$CONFIG_FILES $1" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + shift + CONFIG_HEADERS="$CONFIG_HEADERS $1" + ac_need_defaults=false;; + + # This is an error. + -*) { { echo "$as_me:23638: 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;} + { (exit 1); exit 1; }; } ;; + + *) ac_config_targets="$ac_config_targets $1" ;; + + esac + shift +done + +exec 5>>config.log +cat >&5 << _ACEOF + +## ----------------------- ## +## Running config.status. ## +## ----------------------- ## + +This file was extended by $as_me 2.52.20210509, executed with + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + > "$ac_cs_invocation" +on `(hostname || uname -n) 2>/dev/null | sed 1q` + +_ACEOF +EOF + +cat >>"$CONFIG_STATUS" <<EOF +# +# INIT-COMMANDS section. +# + +AWK="$AWK" +ECHO_CC="$ECHO_CC" +ECHO_LD="$ECHO_LD" +SHOW_CC="$SHOW_LD" + +EOF + +cat >>"$CONFIG_STATUS" <<\EOF +for ac_config_target in $ac_config_targets +do + case "$ac_config_target" in + # Handling of arguments. + "Makefile" ) CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "default" ) CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;; + "ncurses_cfg.h" ) CONFIG_HEADERS="$CONFIG_HEADERS ncurses_cfg.h:ncurses_tst.hin" ;; + *) { { echo "$as_me:23688: error: invalid argument: $ac_config_target" >&5 +echo "$as_me: error: invalid argument: $ac_config_target" >&2;} + { (exit 1); exit 1; }; };; + esac +done + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if "$ac_need_defaults"; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Create a temporary directory, and hook for its removal unless debugging. +$debug || +{ + trap 'exit_status=$?; rm -rf $tmp && exit $exit_status' 0 + trap '{ (exit 1); exit 1; }' 1 2 13 15 +} + +# Create a (secure) tmp directory for tmp files. +: ${TMPDIR=/tmp} +{ + tmp=`(umask 077 && mktemp -d -q "$TMPDIR/csXXXXXX") 2>/dev/null` && + test -n "$tmp" && test -d "$tmp" +} || +{ + tmp=$TMPDIR/cs$$-$RANDOM + (umask 077 && mkdir $tmp) +} || +{ + echo "$me: cannot create a temporary directory in $TMPDIR" >&2 + { (exit 1); exit 1; } +} + +EOF + +cat >>"$CONFIG_STATUS" <<EOF + +# +# CONFIG_FILES section. +# + +# No need to generate the scripts if there are no CONFIG_FILES. +# This happens for instance when ./config.status config.h +if test -n "\$CONFIG_FILES"; then + # Protect against being on the right side of a sed subst in config.status. + sed 's/,@/@@/; s/@,/@@/; s/,;t t\$/@;t t/; /@;t t\$/s/[\\\\&,]/\\\\&/g; + s/@@/,@/; s/@@/@,/; s/@;t t\$/,;t t/' >\$tmp/subs.sed <<\\CEOF +s,@SHELL@,$SHELL,;t t +s,@exec_prefix@,$exec_prefix,;t t +s,@prefix@,$prefix,;t t +s,@program_transform_name@,$program_transform_name,;t t +s,@bindir@,$bindir,;t t +s,@sbindir@,$sbindir,;t t +s,@libexecdir@,$libexecdir,;t t +s,@datarootdir@,$datarootdir,;t t +s,@datadir@,$datadir,;t t +s,@sysconfdir@,$sysconfdir,;t t +s,@sharedstatedir@,$sharedstatedir,;t t +s,@localstatedir@,$localstatedir,;t t +s,@runstatedir@,$runstatedir,;t t +s,@libdir@,$libdir,;t t +s,@includedir@,$includedir,;t t +s,@oldincludedir@,$oldincludedir,;t t +s,@infodir@,$infodir,;t t +s,@mandir@,$mandir,;t t +s,@PACKAGE_NAME@,$PACKAGE_NAME,;t t +s,@PACKAGE_TARNAME@,$PACKAGE_TARNAME,;t t +s,@PACKAGE_VERSION@,$PACKAGE_VERSION,;t t +s,@PACKAGE_STRING@,$PACKAGE_STRING,;t t +s,@PACKAGE_BUGREPORT@,$PACKAGE_BUGREPORT,;t t +s,@build_alias@,$build_alias,;t t +s,@host_alias@,$host_alias,;t t +s,@target_alias@,$target_alias,;t t +s,@ECHO_C@,$ECHO_C,;t t +s,@ECHO_N@,$ECHO_N,;t t +s,@ECHO_T@,$ECHO_T,;t t +s,@PATH_SEPARATOR@,$PATH_SEPARATOR,;t t +s,@DEFS@,$DEFS,;t t +s,@LIBS@,$LIBS,;t t +s,@build@,$build,;t t +s,@build_cpu@,$build_cpu,;t t +s,@build_vendor@,$build_vendor,;t t +s,@build_os@,$build_os,;t t +s,@host@,$host,;t t +s,@host_cpu@,$host_cpu,;t t +s,@host_vendor@,$host_vendor,;t t +s,@host_os@,$host_os,;t t +s,@SET_MAKE@,$SET_MAKE,;t t +s,@CC@,$CC,;t t +s,@CFLAGS@,$CFLAGS,;t t +s,@LDFLAGS@,$LDFLAGS,;t t +s,@CPPFLAGS@,$CPPFLAGS,;t t +s,@ac_ct_CC@,$ac_ct_CC,;t t +s,@EXEEXT@,$EXEEXT,;t t +s,@OBJEXT@,$OBJEXT,;t t +s,@EXTRA_CPPFLAGS@,$EXTRA_CPPFLAGS,;t t +s,@CPP@,$CPP,;t t +s,@GREP@,$GREP,;t t +s,@EGREP@,$EGREP,;t t +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,@INSTALL_OPT_S@,$INSTALL_OPT_S,;t t +s,@INSTALL_OPT_O@,$INSTALL_OPT_O,;t t +s,@LINT@,$LINT,;t t +s,@LINT_OPTS@,$LINT_OPTS,;t t +s,@MAKE_NO_PHONY@,$MAKE_NO_PHONY,;t t +s,@MAKE_PHONY@,$MAKE_PHONY,;t t +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,@MATH_LIB@,$MATH_LIB,;t t +s,@top_builddir@,$top_builddir,;t t +s,@CC_G_OPT@,$CC_G_OPT,;t t +s,@CC_SHARED_OPTS@,$CC_SHARED_OPTS,;t t +s,@DFT_DEP_SUFFIX@,$DFT_DEP_SUFFIX,;t t +s,@DFT_OBJ_SUBDIR@,$DFT_OBJ_SUBDIR,;t t +s,@DFT_UPR_MODEL@,$DFT_UPR_MODEL,;t t +s,@LD@,$LD,;t t +s,@LDFLAGS_SHARED@,$LDFLAGS_SHARED,;t t +s,@LDFLAGS_STATIC@,$LDFLAGS_STATIC,;t t +s,@LD_MODEL@,$LD_MODEL,;t t +s,@LD_SHARED_OPTS@,$LD_SHARED_OPTS,;t t +s,@LIBTOOL@,$LIBTOOL,;t t +s,@LIBTOOL_OPTS@,$LIBTOOL_OPTS,;t t +s,@LIB_CLEAN@,$LIB_CLEAN,;t t +s,@LIB_COMPILE@,$LIB_COMPILE,;t t +s,@LIB_LINK@,$LIB_LINK,;t t +s,@LINK_TESTS@,$LINK_TESTS,;t t +s,@LOCAL_LDFLAGS@,$LOCAL_LDFLAGS,;t t +s,@PACKAGE@,$PACKAGE,;t t +s,@PTHREAD@,$PTHREAD,;t t +s,@TEST_ARGS@,$TEST_ARGS,;t t +s,@TEST_DEPS@,$TEST_DEPS,;t t +s,@TEST_LIBS@,$TEST_LIBS,;t t +s,@TINFO_LDFLAGS@,$TINFO_LDFLAGS,;t t +s,@TINFO_LIBS@,$TINFO_LIBS,;t t +s,@cf_cv_abi_version@,$cf_cv_abi_version,;t t +s,@cf_cv_rel_version@,$cf_cv_rel_version,;t t +s,@includesubdir@,$includesubdir,;t t +s,@FGREP@,$FGREP,;t t +s,@HAVE_STDNORETURN_H@,$HAVE_STDNORETURN_H,;t t +s,@STDC_NORETURN@,$STDC_NORETURN,;t t +s,@PKG_CONFIG@,$PKG_CONFIG,;t t +s,@ac_pt_PKG_CONFIG@,$ac_pt_PKG_CONFIG,;t t +s,@ECHO_LT@,$ECHO_LT,;t t +s,@ECHO_LD@,$ECHO_LD,;t t +s,@RULE_CC@,$RULE_CC,;t t +s,@SHOW_CC@,$SHOW_CC,;t t +s,@ECHO_CC@,$ECHO_CC,;t t +s,@NCURSES_WRAP_PREFIX@,$NCURSES_WRAP_PREFIX,;t t +s,@NCURSES_CONFIG@,$NCURSES_CONFIG,;t t +s,@ac_ct_NCURSES_CONFIG@,$ac_ct_NCURSES_CONFIG,;t t +s,@X_CFLAGS@,$X_CFLAGS,;t t +s,@X_PRE_LIBS@,$X_PRE_LIBS,;t t +s,@X_LIBS@,$X_LIBS,;t t +s,@X_EXTRA_LIBS@,$X_EXTRA_LIBS,;t t +s,@XCURSES_CONFIG@,$XCURSES_CONFIG,;t t +s,@ac_ct_XCURSES_CONFIG@,$ac_ct_XCURSES_CONFIG,;t t +s,@RGB_PATH@,$RGB_PATH,;t t +s,@no_x11_rgb@,$no_x11_rgb,;t t +s,@FORM_NAME@,$FORM_NAME,;t t +s,@MENU_NAME@,$MENU_NAME,;t t +s,@PANEL_NAME@,$PANEL_NAME,;t t +s,@EXTRA_CFLAGS@,$EXTRA_CFLAGS,;t t +s,@cf_ldd_prog@,$cf_ldd_prog,;t t +s,@EXTRA_LDFLAGS@,$EXTRA_LDFLAGS,;t t +CEOF + +EOF + + cat >>"$CONFIG_STATUS" <<\EOF + # Split the substitutions into bite-sized pieces for seds with + # small command number limits, like on Digital OSF/1 and HP-UX. + ac_max_sed_lines=48 + ac_sed_frag=1 # Number of current file. + ac_beg=1 # First line for current file. + ac_end=$ac_max_sed_lines # Line after last line for current file. + ac_more_lines=: + ac_sed_cmds= + while "$ac_more_lines"; do + if test "$ac_beg" -gt 1; then + sed "1,${ac_beg}d; ${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + else + sed "${ac_end}q" $tmp/subs.sed >$tmp/subs.frag + fi + if test ! -s $tmp/subs.frag; then + ac_more_lines=false + else + # The purpose of the label and of the branching condition is to + # speed up the sed processing (if there are no `@' at all, there + # 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 + # 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 + if test ! -s $tmp/subs.edit; then + grep "^s,@[^@,][^@,]*@,.*,;t t$" $tmp/subs.next >$tmp/subs.edit + if test ! -s $tmp/subs.edit; then + if test "$ac_beg" -gt 1; then + ac_end=`expr "$ac_end" - 1` + continue + fi + fi + fi + fi + + if test -z "$ac_sed_cmds"; then + ac_sed_cmds="sed -f $tmp/subs-$ac_sed_frag.sed" + else + ac_sed_cmds="$ac_sed_cmds | sed -f $tmp/subs-$ac_sed_frag.sed" + fi + ac_sed_frag=`expr "$ac_sed_frag" + 1` + ac_beg=$ac_end + ac_end=`expr "$ac_end" + "$ac_max_sed_lines"` + fi + done + if test -z "$ac_sed_cmds"; then + ac_sed_cmds=cat + fi +fi # test -n "$CONFIG_FILES" + +EOF +cat >>"$CONFIG_STATUS" <<\EOF +for ac_file in : $CONFIG_FILES; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + # Compute @srcdir@, @top_srcdir@, and @INSTALL@ for subdirectories. + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + ac_dir_suffix="/`echo $ac_dir|sed 's,^\./,,'`" + # A "../" for each directory in $ac_dir_suffix. + ac_dots=`echo "$ac_dir_suffix" | sed 's,/[^/]*,../,g'` + else + ac_dir_suffix= ac_dots= + fi + + case "$srcdir" in + .) ac_srcdir=. + if test -z "$ac_dots"; then + ac_top_srcdir=. + else + ac_top_srcdir=`echo "$ac_dots" | sed 's,/$,,'` + fi ;; + [\\/]* | ?:[\\/]* ) + ac_srcdir="$srcdir$ac_dir_suffix"; + ac_top_srcdir="$srcdir" ;; + *) # Relative path. + ac_srcdir="$ac_dots$srcdir$ac_dir_suffix" + ac_top_srcdir="$ac_dots$srcdir" ;; + esac + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_dots$INSTALL ;; + esac + + if test x"$ac_file" != x-; then + { echo "$as_me:23994: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + rm -f "$ac_file" + fi + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + configure_input="Generated automatically from `echo $ac_file_in | + sed 's,.*/,,'` by configure." + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:24012: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:24025: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } +EOF +cat >>"$CONFIG_STATUS" <<\EOF + ac_warn_datarootdir=no + if test x"$ac_file" != x-; then + for ac_item in $ac_file_inputs + do + ac_seen=`grep '@\(datadir\|mandir\|infodir\)@' "$ac_item"` + if test -n "$ac_seen"; then + ac_used=`grep '@datarootdir@' "$ac_item"` + if test -z "$ac_used"; then + { echo "$as_me:24041: 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;} + ac_warn_datarootdir=yes + fi + fi + ac_seen=`grep '${datarootdir}' "$ac_item"` + if test -n "$ac_seen"; then + { echo "$as_me:24050: 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;} + ac_warn_datarootdir=yes + fi + done + fi + +if test "x$ac_warn_datarootdir" = xyes; then + ac_sed_cmds="$ac_sed_cmds | sed -e 's,@datarootdir@,\${prefix}/share,g' -e 's,\${datarootdir},\${prefix}/share,g'" +fi + +EOF +cat >>"$CONFIG_STATUS" <<EOF + sed "$ac_vpsub +$extrasub +EOF +cat >>"$CONFIG_STATUS" <<\EOF +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s,@configure_input@,$configure_input,;t t +s,@srcdir@,$ac_srcdir,;t t +s,@top_srcdir@,$ac_top_srcdir,;t t +s,@INSTALL@,$ac_INSTALL,;t t +" $ac_file_inputs | (eval "$ac_sed_cmds") >$tmp/out + rm -f $tmp/stdin + if test x"$ac_file" != x-; then + cp "$tmp/out" "$ac_file" + + for ac_name in prefix exec_prefix datarootdir + do + ac_seen=`${FGREP-fgrep} -n '${'$ac_name'[:=].*}' "$ac_file"` + if test -n "$ac_seen"; then + ac_init=`${EGREP-egrep} '[ ]*'$ac_name'[ ]*=' "$ac_file"` + if test -z "$ac_init"; then + ac_seen=`echo "$ac_seen" |sed -e 's,^,'$ac_file':,'` + { echo "$as_me:24087: 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;} + fi + fi + done + ${EGREP-egrep} -n '@[a-z_][a-z_0-9]+@' "$ac_file" >$tmp/out + ${EGREP-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:24098: WARNING: Some variables may not be substituted: +$ac_seen" >&5 +echo "$as_me: WARNING: Some variables may not be substituted: +$ac_seen" >&2;} + fi + else + cat $tmp/out + fi + rm -f $tmp/out + +done +EOF +cat >>"$CONFIG_STATUS" <<\EOF + +# +# CONFIG_HEADER section. +# + +# These sed commands are passed to sed as "A NAME B NAME C VALUE D", where +# NAME is the cpp macro being defined and VALUE is the value it is being given. +# +# ac_d sets the value in "#define NAME VALUE" lines. +ac_dA='s,^\([ ]*\)#\([ ]*define[ ][ ]*\)' +ac_dB='[ ].*$,\1#\2' +ac_dC=' ' +ac_dD=',;t' +# ac_i turns "#undef NAME" with trailing blanks into "#define NAME VALUE". +ac_iA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_iB='\([ ]\),\1#\2define\3' +ac_iC=' ' +ac_iD='\4,;t' +# ac_u turns "#undef NAME" without trailing blanks into "#define NAME VALUE". +ac_uA='s,^\([ ]*\)#\([ ]*\)undef\([ ][ ]*\)' +ac_uB='$,\1#\2define\3' +ac_uC=' ' +ac_uD=',;t' + +for ac_file in : $CONFIG_HEADERS; do test "x$ac_file" = x: && continue + # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". + case "$ac_file" in + - | *:- | *:-:* ) # input from stdin + cat >$tmp/stdin + ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + *:* ) ac_file_in=`echo "$ac_file" | sed 's,[^:]*:,,'` + ac_file=`echo "$ac_file" | sed 's,:.*,,'` ;; + * ) ac_file_in=$ac_file.in ;; + esac + + test x"$ac_file" != x- && { echo "$as_me:24147: creating $ac_file" >&5 +echo "$as_me: creating $ac_file" >&6;} + + # First look for the input files in the build tree, otherwise in the + # src tree. + ac_file_inputs=`IFS=: + for f in $ac_file_in; do + case $f in + -) echo $tmp/stdin ;; + [\\/$]*) + # Absolute (can't be DOS-style, as IFS=:) + test -f "$f" || { { echo "$as_me:24158: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + echo $f;; + *) # Relative + if test -f "$f"; then + # Build tree + echo $f + elif test -f "$srcdir/$f"; then + # Source tree + echo "$srcdir/$f" + else + # /dev/null tree + { { echo "$as_me:24171: error: cannot find input file: $f" >&5 +echo "$as_me: error: cannot find input file: $f" >&2;} + { (exit 1); exit 1; }; } + fi;; + esac + done` || { (exit 1); exit 1; } + # Remove the trailing spaces. + sed 's/[ ]*$//' $ac_file_inputs >$tmp/in + +EOF + +# Transform confdefs.h into a list of #define's. We won't use it as a sed +# script, but as data to insert where we see @DEFS@. We expect AC_SAVE_DEFS to +# be either 'cat' or 'sort'. +cat confdefs.h | uniq >conftest.vals + +# Break up conftest.vals because some shells have a limit on +# the size of here documents, and old seds have small limits too. + +rm -f conftest.tail +echo ' rm -f conftest.frag' >> "$CONFIG_STATUS" +while grep . conftest.vals >/dev/null +do + # Write chunks of a limited-size here document to conftest.frag. + echo ' cat >> conftest.frag <<CEOF' >> "$CONFIG_STATUS" + sed "${ac_max_here_lines}q" conftest.vals | sed -e 's/#ifdef.*/#if 0/' >> "$CONFIG_STATUS" + echo 'CEOF' >> "$CONFIG_STATUS" + sed "1,${ac_max_here_lines}d" conftest.vals > conftest.tail + rm -f conftest.vals + mv conftest.tail conftest.vals +done +rm -f conftest.vals + +# Run sed to substitute the contents of conftest.frag into $tmp/in at the +# marker @DEFS@. +echo ' cat >> conftest.edit <<CEOF +/@DEFS@/r conftest.frag +/@DEFS@/d +CEOF +sed -f conftest.edit $tmp/in > $tmp/out +rm -f $tmp/in +mv $tmp/out $tmp/in +rm -f conftest.edit conftest.frag +' >> "$CONFIG_STATUS" + +cat >>"$CONFIG_STATUS" <<\EOF + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated automatically by config.status. */ + if test x"$ac_file" = x-; then + echo "/* Generated automatically by configure. */" >$tmp/config.h + else + echo "/* $ac_file. Generated automatically by configure. */" >$tmp/config.h + fi + cat $tmp/in >>$tmp/config.h + 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:24229: $ac_file is unchanged" >&5 +echo "$as_me: $ac_file is unchanged" >&6;} + else + ac_dir=`$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| \ + . : '\(.\)' 2>/dev/null || +echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ s//\1/; q; } + /^X\(\/\/\)[^/].*/{ s//\1/; q; } + /^X\(\/\/\)$/{ s//\1/; q; } + /^X\(\/\).*/{ s//\1/; q; } + s/.*/./; q'` + if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then + { case "$ac_dir" in + [\\/]* | ?:[\\/]* ) as_incr_dir=;; + *) as_incr_dir=.;; +esac +as_dummy="$ac_dir" +for as_mkdir_dir in `IFS='/\\'; set X $as_dummy; shift; echo "$@"`; do + case $as_mkdir_dir in + # Skip DOS drivespec + ?:) as_incr_dir=$as_mkdir_dir ;; + *) + as_incr_dir=$as_incr_dir/$as_mkdir_dir + test -d "$as_incr_dir" || mkdir "$as_incr_dir" + ;; + esac +done; } + + fi + rm -f "$ac_file" + mv "$tmp/config.h" "$ac_file" + fi + else + cat $tmp/config.h + rm -f $tmp/config.h + fi +done +EOF +cat >>"$CONFIG_STATUS" <<\EOF +# +# CONFIG_COMMANDS section. +# +for ac_file in : $CONFIG_COMMANDS; do test "x$ac_file" = x: && continue + ac_dest=`echo "$ac_file" | sed 's,:.*,,'` + ac_source=`echo "$ac_file" | sed 's,[^:]*:,,'` + + case "$ac_dest" in + default ) + +for cf_dir in . +do + if test ! -d "$srcdir/$cf_dir" ; then + continue + elif test -f "$srcdir/$cf_dir/programs" ; then + $AWK -f $srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD" "$srcdir/$cf_dir/programs" >>$cf_dir/Makefile + fi +done + + cat >>Makefile <<TEST_EOF + +# These rules are generated so we do not rely on suffix rules, which do not +# work consistently for different make-programs (the '\$(MODEL)/' confuses +# some, and the '\$x' confuses others). +TEST_EOF + +LIST=`sed -e 's/[ ].*//' -e '/^[#@]/d' $srcdir/modules` +for N in $LIST +do + cat >>Makefile <<TEST_EOF + +\$(MODEL)/$N.o : \$(srcdir)/$N.c \\ + \$(srcdir)/test.priv.h \\ + ncurses_cfg.h + $SHOW_CC + $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) -DMODULE_NAME="$N" \$(srcdir)/$N.c +TEST_EOF +done + +if test -f ../config.guess && test -f ../config.sub +then + cat >>Makefile <<TEST_EOF + +# if we used CF_INHERIT for getting these files, we can remove them +distclean:: + rm -f config.guess config.sub +TEST_EOF +fi + ;; + esac +done +EOF + +cat >>"$CONFIG_STATUS" <<\EOF + +{ (exit 0); exit 0; } +EOF +chmod +x "$CONFIG_STATUS" +ac_clean_files=$ac_clean_files_save + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + exec 5>/dev/null + $SHELL "$CONFIG_STATUS" || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + "$ac_cs_success" || { (exit 1); exit 1; } +fi + diff --git a/deps/ncurses-6.3/test/configure.in b/deps/ncurses-6.3/test/configure.in new file mode 100644 index 0000000..faa674d --- /dev/null +++ b/deps/ncurses-6.3/test/configure.in @@ -0,0 +1,539 @@ +dnl*************************************************************************** +dnl Copyright 2018-2020,2021 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 * +dnl copy of this software and associated documentation files (the * +dnl "Software"), to deal in the Software without restriction, including * +dnl without limitation the rights to use, copy, modify, merge, publish, * +dnl distribute, distribute with modifications, sublicense, and/or sell * +dnl copies of the Software, and to permit persons to whom the Software is * +dnl furnished to do so, subject to the following conditions: * +dnl * +dnl The above copyright notice and this permission notice shall be included * +dnl in all copies or substantial portions of the Software. * +dnl * +dnl THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * +dnl OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * +dnl MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * +dnl IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * +dnl DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * +dnl OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * +dnl THE USE OR OTHER DEALINGS IN THE SOFTWARE. * +dnl * +dnl Except as contained in this notice, the name(s) of the above copyright * +dnl holders shall not be used in advertising or otherwise to promote the * +dnl sale, use or other dealings in this Software without prior written * +dnl authorization. * +dnl*************************************************************************** +dnl +dnl Author: Thomas E. Dickey 1996-on +dnl +dnl $Id: configure.in,v 1.163 2021/07/03 20:21:07 tom Exp $ +dnl This is a simple configuration-script for the ncurses test programs that +dnl allows the test-directory to be separately configured against a reference +dnl system (i.e., sysvr4 curses) +dnl +dnl If you're configuring ncurses, you shouldn't need to use this script. +dnl It's only for testing purposes. +dnl +dnl For additional information, see +dnl https://invisible-island.net/autoconf/ +dnl https://invisible-island.net/autoconf/my-autoconf.html +dnl https://invisible-island.net/ncurses/ncurses-examples.html +dnl --------------------------------------------------------------------------- +AC_PREREQ(2.52.20210509) +AC_INIT(ncurses.c) +AC_CONFIG_HEADER(ncurses_cfg.h:ncurses_tst.hin) + +CF_INHERIT_SCRIPT(config.guess) +CF_INHERIT_SCRIPT(config.sub) +CF_CHECK_CACHE + +AC_ARG_PROGRAM + +CF_HELP_MESSAGE(General Options:) + +AC_PROG_MAKE_SET +CF_PROG_CC +AC_C_INLINE +AC_PROG_CPP +AC_PROG_AWK +CF_PROG_INSTALL +CF_INSTALL_OPTS +CF_PROG_LINT +CF_MAKE_PHONY +CF_MAKE_TAGS + +CF_MATH_LIB(MATH_LIB,pow(sin(x),x)) +AC_SUBST(MATH_LIB) + +dnl Things that we don't need (or must override) if we're not building ncurses +CF_TOP_BUILDDIR +CC_G_OPT="-g" AC_SUBST(CC_G_OPT) +CC_SHARED_OPTS=unknown AC_SUBST(CC_SHARED_OPTS) +CPPFLAGS="$CPPFLAGS" AC_SUBST(CPPFLAGS) +DFT_DEP_SUFFIX="" AC_SUBST(DFT_DEP_SUFFIX) +DFT_OBJ_SUBDIR=`pwd|sed -e's:.*/::'` AC_SUBST(DFT_OBJ_SUBDIR) +DFT_UPR_MODEL="NORMAL" AC_SUBST(DFT_UPR_MODEL) +LD="ld" AC_SUBST(LD) +LDFLAGS_SHARED="" AC_SUBST(LDFLAGS_SHARED) +LDFLAGS_STATIC="" AC_SUBST(LDFLAGS_STATIC) +LD_MODEL="" AC_SUBST(LD_MODEL) +LD_SHARED_OPTS="" AC_SUBST(LD_SHARED_OPTS) +LIBTOOL="" AC_SUBST(LIBTOOL) +LIBTOOL_OPTS="" AC_SUBST(LIBTOOL_OPTS) +LIB_CLEAN="" AC_SUBST(LIB_CLEAN) +LIB_COMPILE="" AC_SUBST(LIB_COMPILE) +LIB_LINK='${CC}' AC_SUBST(LIB_LINK) +LINK_TESTS="" AC_SUBST(LINK_TESTS) +LOCAL_LDFLAGS="" AC_SUBST(LOCAL_LDFLAGS) +PACKAGE="ncurses-examples" AC_SUBST(PACKAGE) +PTHREAD="-lm" AC_SUBST(PTHREAD) +TEST_ARGS="" AC_SUBST(TEST_ARGS) +TEST_DEPS="" AC_SUBST(TEST_DEPS) +TEST_LIBS="" AC_SUBST(TEST_LIBS) +TINFO_LDFLAGS='' AC_SUBST(TINFO_LDFLAGS) +TINFO_LIBS='$(LIBS_CURSES)' AC_SUBST(TINFO_LIBS) +cf_cv_abi_version="" AC_SUBST(cf_cv_abi_version) +cf_cv_rel_version="" AC_SUBST(cf_cv_rel_version) +includesubdir="" AC_SUBST(includesubdir) + +cf_cv_screen=curses +cf_cv_libtype= + +AC_EXEEXT +AC_OBJEXT + +CF_GCC_ATTRIBUTES +CF_ENABLE_STRING_HACKS +CF_XOPEN_SOURCE(600) +CF_SIG_ATOMIC_T + +# Work around breakage on OS X +CF_SIGWINCH + +# Checks for CODESET support. +AM_LANGINFO_CODESET + +dnl --------------------------------------------------------------------------- +CF_PKG_CONFIG +CF_DISABLE_ECHO + +dnl --------------------------------------------------------------------------- +CF_HELP_MESSAGE(Curses Version-dependent Options:) +CF_NCURSES_WRAP_PREFIX + +AC_MSG_CHECKING(if you want to check for wide-character functions) +CF_ARG_DISABLE(widec, + [ --disable-widec disable checks for wide-character functions], + cf_enable_widec=no, + cf_enable_widec=yes, + yes) +AC_MSG_RESULT($cf_enable_widec) + +dnl --------------------------------------------------------------------------- +CF_HELP_MESSAGE(Curses Version-dependent Options:) +CF_WITH_NCURSES_ETC + +case $cf_cv_screen in +(ncurses*) + cf_cv_libtype=`echo "$cf_cv_screen" | sed -e 's/^ncurses//'` + ;; +esac + +CF_WITH_X11_RGB + +dnl If we've not specified a library, assume we're using sysvr4 libraries +dnl installed conventionally (e.g., SunOS 5.x - solaris). + +dnl Autoconf builds up the $LIBS in reverse order + +cf_curses_headers= + +case $cf_cv_screen in +(pdcurses) + cf_default_panel=no + cf_default_form=no + cf_default_menu=no + cf_default_tinfo=no + ;; +(xcurses|bsdcurses) + cf_default_panel=no + cf_default_form=no + cf_default_menu=no + cf_default_tinfo=yes + ;; +(*) + cf_default_panel=yes + cf_default_form=yes + cf_default_menu=yes + cf_default_tinfo=yes + case $cf_cv_screen in + (ncurses*) + cf_curses_headers="nc_alloc.h nomacros.h term_entry.h" + ;; + esac + ;; +esac + +CF_WITH_LIB_BASENAME(FORM_NAME,form) +CF_WITH_LIB_BASENAME(MENU_NAME,menu) +CF_WITH_LIB_BASENAME(PANEL_NAME,panel) + +AC_MSG_CHECKING(if you want to check for panel functions) +CF_ARG_DISABLE(panel, + [ --disable-panel disable checks for panel functions], + cf_enable_panel=no, + cf_enable_panel=$cf_default_panel, + yes) +AC_MSG_RESULT($cf_enable_panel) +if test $cf_enable_panel = yes +then + CF_CHECK_CURSES_LIB($PANEL_NAME,$cf_cv_libtype,new_panel,0) + cf_curses_headers="$cf_curses_headers panel.h" +fi + +AC_MSG_CHECKING(if you want to check for menu functions) +CF_ARG_DISABLE(menu, + [ --disable-menu disable checks for menu functions], + cf_enable_menu=no, + cf_enable_menu=$cf_default_menu, + yes) +AC_MSG_RESULT($cf_enable_menu) +if test $cf_enable_menu = yes +then + case $cf_cv_screen in + (ncurses*) + ;; + (curses*) + CF_NETBSD_MENU_H + ;; + esac + CF_CHECK_CURSES_LIB($MENU_NAME,$cf_cv_libtype,menu_driver,[0,0]) + cf_curses_headers="$cf_curses_headers menu.h" +fi + +AC_MSG_CHECKING(if you want to check for form functions) +CF_ARG_DISABLE(form, + [ --disable-form disable checks for form functions], + cf_enable_form=no, + cf_enable_form=$cf_default_form, + yes) +AC_MSG_RESULT($cf_enable_form) +if test $cf_enable_form = yes +then + case $cf_cv_screen in + (ncurses*) + ;; + (curses*) + CF_NETBSD_FORM_H + ;; + esac + CF_CHECK_CURSES_LIB($FORM_NAME,$cf_cv_libtype,form_driver,[0,0]) + cf_curses_headers="$cf_curses_headers form.h" +fi + +# look for curses-related headers +AC_CHECK_HEADERS( $cf_curses_headers ) + +AC_STDC_HEADERS +AC_HEADER_TIME +AC_CHECK_HEADERS( \ +getopt.h \ +locale.h \ +math.h \ +stdarg.h \ +stdint.h \ +sys/ioctl.h \ +sys/select.h \ +sys/time.h \ +termios.h \ +unistd.h \ +) + +CF_GETOPT_HEADER + +AC_CHECK_FUNCS( \ +getopt \ +gettimeofday \ +snprintf \ +strdup \ +strstr \ +tsearch \ +) + +# use a compile-check to work with ncurses*-config and subdirectory includes +AC_CACHE_CHECK(if we can use termcap.h,cf_cv_have_termcap_h,[ + AC_TRY_COMPILE([ +#include <curses.h> +#ifdef NCURSES_VERSION +#undef NCURSES_VERSION +#endif +#include <termcap.h> +#ifndef NCURSES_VERSION +#error wrong header +#endif +], + [return 0;], + [cf_cv_have_termcap_h=yes], + [cf_cv_have_termcap_h=no])]) +if test "x$cf_cv_have_termcap_h" = xyes +then + AC_DEFINE(HAVE_TERMCAP_H,1,[Define to 1 if we can use termcap.h]) +else +AC_CACHE_CHECK(if we can use ncurses/termcap.h,cf_cv_have_ncurses_termcap_h,[ + AC_TRY_COMPILE([ +#include <ncurses/curses.h> +#ifdef NCURSES_VERSION +#undef NCURSES_VERSION +#endif +#include <ncurses/termcap.h> +#ifndef NCURSES_VERSION +#error wrong header +#endif +], + [return 0;], + [cf_cv_have_ncurses_termcap_h=yes], + [cf_cv_have_ncurses_termcap_h=no])]) +test "x$cf_cv_have_ncurses_termcap_h" = xyes && AC_DEFINE(HAVE_NCURSES_TERMCAP_H,1,[Define to 1 if we can use ncurses/termcap.h]) +fi + +if test "x$ac_cv_func_getopt" = xno; then + AC_MSG_ERROR(getopt is required for building programs) +fi + +if test "$cf_enable_widec" = yes; then +AC_CHECK_FUNCS( \ +mblen \ +mbrlen \ +mbrtowc \ +mbsrtowcs \ +mbstowcs \ +mbtowc \ +wcsrtombs \ +wcstombs \ +) +fi + +CF_CURSES_FUNCS( \ +alloc_pair \ +assume_default_colors \ +chgat \ +color_content \ +color_set \ +copywin \ +delscreen \ +dupwin \ +exit_curses \ +exit_terminfo \ +filter \ +getbegx \ +getcurx \ +getmaxx \ +getnstr \ +getparx \ +getwin \ +halfdelay \ +init_extended_color \ +mvderwin \ +mvvline \ +mvwin \ +mvwvline \ +napms \ +newpad \ +putwin \ +reset_color_pairs \ +resize_term \ +resizeterm \ +restartterm \ +ripoffline \ +scr_dump \ +setupterm \ +slk_color \ +slk_init \ +termattrs \ +termname \ +tgetent \ +tigetnum \ +tigetstr \ +tputs_sp \ +typeahead \ +use_default_colors \ +use_env \ +use_extended_names \ +use_screen \ +use_window \ +vid_puts \ +vidputs \ +vsscanf \ +vw_printw \ +wchgat \ +winsdelln \ +winsstr \ +wresize \ +wsyncdown \ +_tracef \ +) + +CF_TPUTS_PROTO +CF_NCURSES_EXT_FUNCS + +if test "$cf_enable_widec" = yes +then + # workaround for systems with ncurses before 20111029, due to change of + # feature test macro from _XPG5 to _XOPEN_SOURCE + if test -n "$cf_cv_ncurses_version" && test "x$cf_cv_ncurses_version" != xno + then + cf_define_xpg5=no + AC_MSG_CHECKING(if _XPG5 should be defined to enable wide-characters) + + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}>], + [int x = _XPG5],, + [cf_save_cppflags="$CPPFLAGS" + CPPFLAGS="$CPPFLAGS -D_XPG5" + AC_TRY_COMPILE([ +#include <${cf_cv_ncurses_header:-curses.h}>], + [int x = _XPG5], + [cf_define_xpg5=yes]) + CPPFLAGS="$cf_save_cppflags"]) + AC_MSG_RESULT($cf_define_xpg5) + + if test "$cf_define_xpg5" = yes + then + CPPFLAGS="$CPPFLAGS -D_XPG5" + fi + fi + + AC_CACHE_CHECK(for wide-character functions,cf_cv_widechar_funcs,[ + AC_TRY_LINK([ +#include <${cf_cv_ncurses_header:-curses.h}>], + [ + static wchar_t src_wchar[2]; + static cchar_t dst_cchar; + setcchar(&dst_cchar, src_wchar, A_NORMAL, 0, (void *) 0); + ], + [cf_cv_widechar_funcs=yes], + [cf_cv_widechar_funcs=no]) + ]) + if test "$cf_cv_widechar_funcs" != no ; then + AC_DEFINE(USE_WIDEC_SUPPORT,1,[Define to 1 to enable wide-character support in (n)curses]) + else + AC_DEFINE(USE_WIDEC_SUPPORT,0) + fi +else + AC_DEFINE(USE_WIDEC_SUPPORT,0) +fi + +AC_CACHE_CHECK(if $cf_cv_screen library uses pthreads,cf_cv_use_pthreads,[ +AC_TRY_LINK([ +#include <${cf_cv_ncurses_header:-curses.h}> +extern void _nc_init_pthreads(void); +], +[ + initscr(); + _nc_init_pthreads(); + ], + [cf_cv_use_pthreads=yes], + [cf_cv_use_pthreads=no]) +]) +test $cf_cv_use_pthreads = yes && AC_DEFINE(USE_PTHREADS,1,[Define to 1 if $cf_cv_screen library uses pthreads]) + +CF_SYS_TIME_SELECT + +# special check for test/ditto.c +CF_FUNC_OPENPTY +if test "$cf_cv_func_openpty" != no ; then + AC_DEFINE_UNQUOTED(USE_OPENPTY_HEADER,<$cf_cv_func_openpty>,[Define to actual header for openpty function]) + AC_DEFINE(USE_XTERM_PTY,1,[Define to 1 if we should assume xterm pseudoterminal interface]) + if test "x$cf_cv_lib_util" = xyes ; then + CF_ADD_LIB(util,TEST_LIBS) + fi +fi + +CF_FUNC_CURSES_VERSION + +CF_CURSES_ACS_MAP +if test "$cf_enable_widec" = yes; then + CF_CURSES_WACS_MAP + CF_CURSES_WACS_SYMBOLS +fi + +CF_CURSES_CHECK_TYPE(attr_t,long) + +if test "$cf_enable_widec" = yes; then + CF_WCHAR_TYPE(mbstate_t, NCURSES_MBSTATE_T, NCURSES_OK_MBSTATE_T) + CF_WCHAR_TYPE(wchar_t, NCURSES_WCHAR_T, NCURSES_OK_WCHAR_T) + CF_WCHAR_TYPE(wint_t, NCURSES_WINT_T, NCURSES_OK_WINT_T) + + if test "$NCURSES_OK_MBSTATE_T" = 0 ; then + CF_CURSES_CHECK_TYPE(mbstate_t,long) + fi + + if test "$NCURSES_OK_WCHAR_T" = 0 ; then + CF_CURSES_CHECK_TYPE(wchar_t,long) + fi + + if test "$NCURSES_OK_WINT_T" = 0 ; then + CF_CURSES_CHECK_TYPE(wint_t,long) + fi +fi + +CF_CURSES_CHECK_DATA(\ +TABSIZE \ +curscr \ +ospeed \ +boolnames \ +boolfnames \ +ttytype) + +dnl --------------------------------------------------------------------------- +CF_HELP_MESSAGE(Testing/development Options:) +CF_WITH_SCREEN_PDCURSES +CF_ENABLE_WARNINGS(Wno-unknown-pragmas) +CF_DISABLE_LEAKS +CF_DISABLE_RPATH_HACK + +TEST_ARGS="$LIBS" +LIBS= + +dnl --------------------------------------------------------------------------- + +AC_OUTPUT(Makefile,[ +CF_PRG_RULES([$srcdir/mk-test.awk INSTALL=yes ECHO_LINK="$ECHO_LD"], .) + cat >>Makefile <<TEST_EOF + +# These rules are generated so we do not rely on suffix rules, which do not +# work consistently for different make-programs (the '\$(MODEL)/' confuses +# some, and the '\$x' confuses others). +TEST_EOF + +LIST=`sed -e 's/[[ ]].*//' -e '/^[[#@]]/d' $srcdir/modules` +for N in $LIST +do + cat >>Makefile <<TEST_EOF + +\$(MODEL)/$N.o : \$(srcdir)/$N.c \\ + \$(srcdir)/test.priv.h \\ + ncurses_cfg.h + $SHOW_CC + $ECHO_CC\$(CC) -c \$(CFLAGS_DEFAULT) -DMODULE_NAME="$N" \$(srcdir)/$N.c +TEST_EOF +done + +if test -f ../config.guess && test -f ../config.sub +then + cat >>Makefile <<TEST_EOF + +# if we used CF_INHERIT for getting these files, we can remove them +distclean:: + rm -f config.guess config.sub +TEST_EOF +fi +],[ +AWK="$AWK" +ECHO_CC="$ECHO_CC" +ECHO_LD="$ECHO_LD" +SHOW_CC="$SHOW_LD" +],cat) diff --git a/deps/ncurses-5.9/test/demo_altkeys.c b/deps/ncurses-6.3/test/demo_altkeys.c similarity index 87% rename from deps/ncurses-5.9/test/demo_altkeys.c rename to deps/ncurses-6.3/test/demo_altkeys.c index f2b07b1..fb3cd65 100644 --- a/deps/ncurses-5.9/test/demo_altkeys.c +++ b/deps/ncurses-6.3/test/demo_altkeys.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2005-2006,2008 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2005-2016,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 * @@ -26,27 +27,17 @@ * authorization. * ****************************************************************************/ /* - * $Id: demo_altkeys.c,v 1.9 2010/11/14 00:59:26 tom Exp $ + * $Id: demo_altkeys.c,v 1.14 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the define_key() function. * Thomas Dickey - 2005/10/22 */ +#define NEED_TIME_H #include <test.priv.h> #if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS -#if TIME_WITH_SYS_TIME -# include <sys/time.h> -# include <time.h> -#else -# if HAVE_SYS_TIME_H -# include <sys/time.h> -# else -# include <time.h> -# endif -#endif - #define MY_LOGFILE "demo_altkeys.log" #define MY_KEYS (KEY_MAX + 1) @@ -57,11 +48,12 @@ static void log_last_line(WINDOW *win) { FILE *fp; - int y, x, n; - char temp[256]; if ((fp = fopen(MY_LOGFILE, "a")) != 0) { + char temp[256]; + int y, x, n; int need = sizeof(temp) - 1; + if (need > COLS) need = COLS; getyx(win, y, x); @@ -85,13 +77,15 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) int n; int ch; #if HAVE_GETTIMEOFDAY - int secs, msecs; - struct timeval current, previous; + struct timeval previous; #endif unlink(MY_LOGFILE); - newterm(0, stdout, stdin); + if (newterm(0, stdout, stdin) == 0) { + fprintf(stderr, "Cannot initialize terminal\n"); + ExitProgram(EXIT_FAILURE); + } (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ @@ -104,14 +98,15 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) */ for (n = 0; n < 255; ++n) { char temp[10]; - sprintf(temp, "\033%c", n); + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "\033%c", n); define_key(temp, n + MY_KEYS); } for (n = KEY_MIN; n < KEY_MAX; ++n) { char *value; if ((value = keybound(n, 0)) != 0) { - char *temp = typeMalloc(char, strlen(value) + 2); - sprintf(temp, "\033%s", value); + size_t need = strlen(value) + 2; + char *temp = typeMalloc(char, need); + _nc_SPRINTF(temp, _nc_SLIMIT(need) "\033%s", value); define_key(temp, n + MY_KEYS); free(temp); free(value); @@ -125,8 +120,10 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) while ((ch = getch()) != ERR) { bool escaped = (ch >= MY_KEYS); const char *name = keyname(escaped ? (ch - MY_KEYS) : ch); - #if HAVE_GETTIMEOFDAY + int secs, msecs; + struct timeval current; + gettimeofday(&current, 0); secs = (int) (current.tv_sec - previous.tv_sec); msecs = (int) ((current.tv_usec - previous.tv_usec) / 1000); diff --git a/deps/ncurses-5.9/test/demo_defkey.c b/deps/ncurses-6.3/test/demo_defkey.c similarity index 86% rename from deps/ncurses-5.9/test/demo_defkey.c rename to deps/ncurses-6.3/test/demo_defkey.c index ac6dc2d..afe1029 100644 --- a/deps/ncurses-5.9/test/demo_defkey.c +++ b/deps/ncurses-6.3/test/demo_defkey.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2007,2008 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2002-2016,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: demo_defkey.c,v 1.20 2010/11/14 00:59:35 tom Exp $ + * $Id: demo_defkey.c,v 1.31 2020/12/26 17:55:13 tom Exp $ * * Demonstrate the define_key() function. * Thomas Dickey - 2002/11/23 @@ -45,10 +46,10 @@ static void log_last_line(WINDOW *win) { FILE *fp; - int y, x, n; - char temp[256]; if ((fp = fopen(MY_LOGFILE, "a")) != 0) { + char temp[256]; + int y, x, n; int need = sizeof(temp) - 1; if (need > COLS) need = COLS; @@ -73,20 +74,20 @@ log_last_line(WINDOW *win) static char * visichar(int ch) { - static char temp[10]; + static char temp[20]; ch = UChar(ch); assert(ch >= 0 && ch < 256); if (ch == '\\') { - strcpy(temp, "\\\\"); + _nc_STRCPY(temp, "\\\\", sizeof(temp)); } else if (ch == '\033') { - strcpy(temp, "\\E"); + _nc_STRCPY(temp, "\\E", sizeof(temp)); } else if (ch < ' ') { - sprintf(temp, "\\%03o", ch); + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "\\%03o", ch); } else if (ch >= 127) { - sprintf(temp, "\\%03o", ch); + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "\\%03o", ch); } else { - sprintf(temp, "%c", ch); + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "%c", ch); } return temp; } @@ -98,25 +99,27 @@ static char * visible(const char *string) { char *result = 0; - size_t need = 1; - int pass; - int n; if (string != 0 && *string != '\0') { + int pass; + int n; + size_t need = 1; + for (pass = 0; pass < 2; ++pass) { for (n = 0; string[n] != '\0'; ++n) { char temp[80]; - strcpy(temp, visichar(string[n])); - if (pass) - strcat(result, temp); - else + _nc_STRNCPY(temp, visichar(string[n]), sizeof(temp) - 2); + if (pass) { + _nc_STRCAT(result, temp, need); + } else { need += strlen(temp); + } } if (!pass) result = typeCalloc(char, need); } } else { - result = typeCalloc(char, 1); + result = typeCalloc(char, (size_t) 1); } return result; } @@ -131,7 +134,7 @@ really_define_key(WINDOW *win, const char *new_string, int code) char temp[80]; if (code_name == 0) { - sprintf(temp, "Keycode %d", code); + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "Keycode %d", code); code_name = temp; } @@ -184,15 +187,16 @@ duplicate(WINDOW *win, NCURSES_CONST char *name, int code) if (value != 0) { const char *prefix = 0; - char temp[BUFSIZ]; - if (!strncmp(value, "\033[", 2)) { + if (!(strncmp) (value, "\033[", (size_t) 2)) { prefix = "\033O"; - } else if (!strncmp(value, "\033O", 2)) { + } else if (!(strncmp) (value, "\033O", (size_t) 2)) { prefix = "\033["; } if (prefix != 0) { - sprintf(temp, "%s%s", prefix, value + 2); + char temp[BUFSIZ]; + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "%s%s", prefix, value + 2); really_define_key(win, temp, code); } } @@ -238,8 +242,8 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) * keypad() initializes the corresponding data. */ for (n = 0; n < 12; ++n) { - char name[10]; - sprintf(name, "kf%d", n + 1); + char name[20]; + _nc_SPRINTF(name, _nc_SLIMIT(sizeof(name)) "kf%d", n + 1); fkeys[n] = tigetstr(name); } for (n = 0; n < 12; ++n) { @@ -270,7 +274,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) break; } endwin(); - ExitProgram(EXIT_FAILURE); + ExitProgram(EXIT_SUCCESS); } #else int diff --git a/deps/ncurses-6.3/test/demo_forms.c b/deps/ncurses-6.3/test/demo_forms.c new file mode 100644 index 0000000..ea0426d --- /dev/null +++ b/deps/ncurses-6.3/test/demo_forms.c @@ -0,0 +1,643 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2003-2016,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. * + ****************************************************************************/ +/* + * $Id: demo_forms.c,v 1.58 2020/03/21 15:57:59 tom Exp $ + * + * Demonstrate a variety of functions from the form library. + * Thomas Dickey - 2003/4/26 + */ + +#include <test.priv.h> + +#if USE_LIBFORM + +#include <edit_field.h> + +typedef struct { + char *name; + char *value; +} MY_DATA; + +static MY_DATA *my_data; + +static int d_option = 0; +static int j_value = 0; +static int m_value = 0; +static int o_value = 0; +static char *t_value = 0; + +static void +failed(const char *s) +{ + perror(s); + ExitProgram(EXIT_FAILURE); +} + +static void +chomp(char *value) +{ + size_t have = strlen(value); + while (have != 0 && (value[have - 1] == '\n' || value[have - 1] == '\r')) { + value[--have] = '\0'; + } +} + +static int +trimmed(const char *value) +{ + int result = (int) strlen(value); + while (result > 0 && isspace(UChar(value[result - 1]))) { + --result; + } + return result; +} + +static char * +get_data(const char *name) +{ + char *result = t_value; + if (my_data != 0) { + int n; + for (n = 0; my_data[n].name != 0; ++n) { + if (!strcmp(name, my_data[n].name)) { + result = my_data[n].value; + break; + } + } + } + return result; +} + +/* + * Read (possibly) multi-line data with name+value pairs. + */ +static void +read_data(const char *filename) +{ + FILE *fp = fopen(filename, "r"); + + if (fp != 0) { + char buffer[BUFSIZ]; + char *colon; + int more = 0; + int item = 0; + + my_data = typeCalloc(MY_DATA, (size_t) 100); /* FIXME */ + while (fgets(buffer, sizeof(buffer), fp) != 0) { + chomp(buffer); + if (more) { + if (strcmp(buffer, ".")) { + char *prior = my_data[more - 1].value; + size_t need = strlen(buffer) + 2 + strlen(prior); + char *value = typeRealloc(char, need, prior); + if (value == 0) + failed("realloc"); + _nc_STRCAT(value, "\n", need); + _nc_STRCAT(value, buffer, need); + my_data[more - 1].value = value; + } else { + more = 0; + } + } else if (*buffer == '#') { + continue; + } else if ((colon = strchr(buffer, ':')) != 0) { + char *name; + char *value; + *colon++ = '\0'; + name = strdup(buffer); + value = strdup(colon); + if (name == 0 || value == 0) + failed("strdup"); + my_data[item].name = name; + my_data[item].value = value; + more = ++item; + } else { + failed("expected a colon"); + } + } + fclose(fp); + } else { + failed(filename); + } +} + +static FIELD * +make_label(const char *label, int frow, int fcol) +{ + FIELD *f = new_field(1, (int) strlen(label), frow, fcol, 0, 0); + + if (f) { + set_field_buffer(f, 0, label); + set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE)); + } + return (f); +} + +/* + * Define each field with an extra one, for reflecting "actual" text. + */ +static FIELD * +make_field(const char *label, int frow, int fcol, int rows, int cols) +{ + FIELD *f = new_field(rows, cols, frow, fcol, o_value, 1); + + if (f) { + set_field_back(f, A_UNDERLINE); + /* + * If -j and -d options are combined, -j loses. It is documented in + * "Character User Interface Programming", page 12-15 that setting + * O_STATIC off makes the form library ignore justification. + */ + set_field_just(f, j_value); + if (d_option) { + if (has_colors()) { + set_field_fore(f, (chtype) COLOR_PAIR(2)); + set_field_back(f, (A_UNDERLINE | (chtype) COLOR_PAIR(3))); + } else { + set_field_fore(f, A_BOLD); + } + /* + * The field_opts_off() call dumps core with Solaris curses, + * but that is a known bug in Solaris' form library -TD + */ + field_opts_off(f, O_STATIC); + set_max_field(f, m_value); + } + + init_edit_field(f, get_data(label)); + } + return (f); +} + +static void +display_form(FORM *f) +{ + WINDOW *w; + int rows, cols; + + scale_form(f, &rows, &cols); + + /* + * Put the form at the upper-left corner of the display, with just a box + * around it. + */ + if ((w = newwin(rows + 2, cols + 4, 0, 0)) != (WINDOW *) 0) { + set_form_win(f, w); + set_form_sub(f, derwin(w, rows, cols, 1, 2)); + box(w, 0, 0); + keypad(w, TRUE); + + if (post_form(f) != E_OK) + wrefresh(w); + } +} + +static void +erase_form(FORM *f) +{ + WINDOW *w = form_win(f); + WINDOW *s = form_sub(f); + + unpost_form(f); + werase(w); + wrefresh(w); + delwin(s); + delwin(w); +} + +static void +show_insert_mode(bool insert_mode) +{ + MvAddStr(5, 57, (insert_mode + ? "form_status: insert " + : "form_status: overlay")); +} + +#define O_SELECTABLE (O_ACTIVE | O_VISIBLE) + +static FIELD * +another_field(FORM *form, FIELD *field) +{ + FIELD **f = form_fields(form); + FIELD *result = 0; + int n; + + for (n = 0; f[n] != 0; ++n) { + if (f[n] != field) { + result = f[n]; + field_opts_on(result, O_SELECTABLE); + break; + } + } + return result; +} + +static int +my_form_driver(FORM *form, int c) +{ + static bool insert_mode = TRUE; + FIELD *field; + + switch (c) { + case MY_QUIT: + if (form_driver(form, REQ_VALIDATION) == E_OK) + return (TRUE); + break; + case MY_HELP: + help_edit_field(); + break; + case MY_EDT_MODE: + if ((field = current_field(form)) != 0) { + set_current_field(form, another_field(form, field)); + if ((unsigned) field_opts(field) & O_EDIT) { + field_opts_off(field, O_EDIT); + set_field_status(field, 0); + } else { + field_opts_on(field, O_EDIT); + } + set_current_field(form, field); + } + break; + case MY_INS_MODE: + /* there should be a form_status() function, but there is none */ + if (!insert_mode) { + if (form_driver(form, REQ_INS_MODE) == E_OK) { + insert_mode = TRUE; + } + } else { + if (form_driver(form, REQ_OVL_MODE) == E_OK) { + insert_mode = FALSE; + } + } + show_insert_mode(insert_mode); + refresh(); + break; + default: + beep(); + break; + } + return (FALSE); +} + +static void +show_current_field(WINDOW *win, FORM *form) +{ + FIELD *field; + int field_rows, field_cols, field_max; + int currow, curcol; + + if (has_colors()) { + wbkgd(win, (chtype) COLOR_PAIR(1)); + } + werase(win); + form_getyx(form, currow, curcol); + wprintw(win, "Cursor: %d,%d", currow, curcol); + if (data_ahead(form)) + waddstr(win, " ahead"); + if (data_behind(form)) + waddstr(win, " behind"); + waddch(win, '\n'); + + if ((field = current_field(form)) != 0) { + FIELDTYPE *type; + int nbuf; + + wprintw(win, "Page %d%s, Field %d/%d%s:", + form_page(form), + new_page(field) ? "*" : "", + field_index(field), field_count(form), + field_arg(field) ? "(arg)" : ""); + if ((type = field_type(field)) != 0) { + if (type == TYPE_ALNUM) + waddstr(win, "ALNUM"); + else if (type == TYPE_ALPHA) + waddstr(win, "ALPHA"); + else if (type == TYPE_ENUM) + waddstr(win, "ENUM"); + else if (type == TYPE_INTEGER) + waddstr(win, "INTEGER"); +#ifdef NCURSES_VERSION + else if (type == TYPE_IPV4) + waddstr(win, "IPV4"); +#endif + else if (type == TYPE_NUMERIC) + waddstr(win, "NUMERIC"); + else if (type == TYPE_REGEXP) + waddstr(win, "REGEXP"); + else + waddstr(win, "other"); + } + + if ((unsigned) field_opts(field) & O_EDIT) + waddstr(win, " editable"); + else + waddstr(win, " readonly"); + + if (field_status(field)) + waddstr(win, " modified"); + + if (dynamic_field_info(field, &field_rows, &field_cols, &field_max) + != ERR) { + wprintw(win, " size %dx%d (max %d)", + field_rows, field_cols, field_max); + } + + waddch(win, ' '); + (void) wattrset(win, AttrArg(field_fore(field), 0)); + waddstr(win, "fore"); + wattroff(win, (int) field_fore(field)); + + waddch(win, '/'); + + (void) wattrset(win, AttrArg(field_back(field), 0)); + waddstr(win, "back"); + wattroff(win, (int) field_back(field)); + + wprintw(win, ", pad '%c'", field_pad(field)); + + waddstr(win, "\n"); + for (nbuf = 0; nbuf <= 2; ++nbuf) { + char *buffer; + if ((buffer = field_buffer(field, nbuf)) != 0) { + wprintw(win, "buffer %d:", nbuf); + (void) wattrset(win, A_REVERSE); + if (nbuf) { + waddnstr(win, buffer, trimmed(buffer)); + } else { + waddstr(win, buffer); + } + wattroff(win, A_REVERSE); + waddstr(win, "\n"); + } + } + } + wrefresh(win); +} + +static void +demo_forms(void) +{ + FORM *form; + FIELD *f[100]; /* will memset to zero */ + int c; + unsigned n = 0; + int pg; + const char *fname; + static const char *my_enum[] = + {"first", "second", "third", 0}; + +#ifdef NCURSES_MOUSE_VERSION + mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); +#endif + + help_edit_field(); + + MvAddStr(4, 57, "Forms Entry Test"); + show_insert_mode(TRUE); + + refresh(); + + /* describe the form */ + memset(f, 0, sizeof(f)); + for (pg = 0; pg < 4; ++pg) { + char label[80]; + _nc_SPRINTF(label, _nc_SLIMIT(sizeof(label)) + "Sample Form Page %d", pg + 1); + f[n++] = make_label(label, 0, 15); + set_new_page(f[n - 1], TRUE); + + switch (pg) { + default: + fname = "Last Name"; + f[n++] = make_label(fname, 2, 0); + f[n++] = make_field(fname, 3, 0, 1, 18); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + + fname = "First Name"; + f[n++] = make_label(fname, 2, 20); + f[n++] = make_field(fname, 3, 20, 1, 12); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + + fname = "Middle Name"; + f[n++] = make_label(fname, 2, 34); + f[n++] = make_field(fname, 3, 34, 1, 12); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + break; + + case 1: + fname = "Last Name"; + f[n++] = make_label(fname, 2, 0); + f[n++] = make_field(fname, 3, 0, 1, 12); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + + fname = "First Name"; + f[n++] = make_label(fname, 2, 14); + f[n++] = make_field(fname, 3, 14, 1, 12); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + + fname = "MI"; + f[n++] = make_label(fname, 2, 28); + f[n++] = make_field(fname, 3, 28, 1, 1); + set_field_pad(f[n - 1], '?'); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + + fname = "First/Second/Third"; + f[n++] = make_label(fname, 2, 32); + f[n++] = make_field(fname, 3, 32, 1, 12); + set_field_type(f[n - 1], TYPE_ENUM, my_enum, 0, 0); + break; + + case 2: + fname = "Host Name"; + f[n++] = make_label(fname, 2, 0); + f[n++] = make_field(fname, 3, 0, 1, 24); + set_field_type(f[n - 1], TYPE_ALNUM, 1); + +#ifdef NCURSES_VERSION + fname = "IP Address"; + f[n++] = make_label(fname, 2, 26); + f[n++] = make_field(fname, 3, 26, 1, 16); + set_field_type(f[n - 1], TYPE_IPV4, 1); +#endif + break; + + case 3: + fname = "Four digits"; + f[n++] = make_label(fname, 2, 0); + f[n++] = make_field(fname, 3, 0, 1, 10); + set_field_type(f[n - 1], TYPE_INTEGER, 4, 0, 0); + + fname = "Numeric"; + f[n++] = make_label(fname, 2, 13); + f[n++] = make_field(fname, 3, 13, 1, 12); + set_field_type(f[n - 1], TYPE_NUMERIC, 3, -10000.0, 100000000.0); + + fname = "Phone number"; + f[n++] = make_label(fname, 2, 27); + f[n++] = make_field(fname, 3, 27, 1, 16); + set_field_type(f[n - 1], TYPE_REGEXP, + "^([0-9]-)?[0-9]{3}-[0-9]{3}-[0-9]{4} *$");; + break; + } + + fname = "Comments"; + f[n++] = make_label(fname, 5, 0); + f[n++] = make_field(fname, 6, 0, 4, 46); + init_edit_field(f[n - 1], get_data(fname)); + } + + f[n] = (FIELD *) 0; + + if ((form = new_form(f)) != 0) { + WINDOW *w; + WINDOW *also; + int finished = 0; + + display_form(form); + + w = form_win(form); + also = newwin(getmaxy(stdscr) - getmaxy(w), COLS, getmaxy(w), 0); + show_current_field(also, form); + + while (!finished) { + switch (edit_field(form, &c)) { + case E_OK: + break; + case E_UNKNOWN_COMMAND: + finished = my_form_driver(form, c); + break; + default: + beep(); + break; + } + show_current_field(also, form); + } + + erase_form(form); + + free_form(form); + } + for (c = 0; f[c] != 0; c++) { + free_edit_field(f[c]); + free_field(f[c]); + } + noraw(); + nl(); + +#ifdef NCURSES_MOUSE_VERSION + mousemask(0, (mmask_t *) 0); +#endif +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: demo_forms [options] [data file]" + ,"" + ," -d make fields dynamic" + ," -j value justify (1=left, 2=center, 3=right)" + ," -m value set maximum size of dynamic fields" + ," -o value specify number of offscreen rows in new_field()" + ," -t value specify text to fill fields initially" + }; + unsigned int j; + for (j = 0; j < SIZEOF(tbl); ++j) + fprintf(stderr, "%s\n", tbl[j]); + exit(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int ch; + + setlocale(LC_ALL, ""); + + while ((ch = getopt(argc, argv, "dj:m:o:t:")) != -1) { + switch (ch) { + case 'd': + d_option = TRUE; + break; + case 'j': + j_value = atoi(optarg); + if (j_value < NO_JUSTIFICATION + || j_value > JUSTIFY_RIGHT) + usage(); + break; + case 'm': + m_value = atoi(optarg); + break; + case 'o': + o_value = atoi(optarg); + break; + case 't': + t_value = optarg; + break; + default: + usage(); + + } + } + while (optind < argc) { + read_data(argv[optind++]); + } + + initscr(); + cbreak(); + noecho(); + raw(); + nonl(); /* lets us read ^M's */ + intrflush(stdscr, FALSE); + keypad(stdscr, TRUE); + + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + init_pair(2, COLOR_GREEN, COLOR_BLACK); + init_pair(3, COLOR_CYAN, COLOR_BLACK); + bkgd((chtype) COLOR_PAIR(1)); + refresh(); + } + + demo_forms(); + + endwin(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the curses form library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/demo_forms.txt b/deps/ncurses-6.3/test/demo_forms.txt new file mode 100644 index 0000000..0763fc0 --- /dev/null +++ b/deps/ncurses-6.3/test/demo_forms.txt @@ -0,0 +1,20 @@ +# $Id: demo_forms.txt,v 1.3 2013/06/08 14:10:15 tom Exp $ +First Name:John +. +Middle Name:Don +. +MI:D +. +Last Name:Smith +. +Comments:Hello +World! +. +Host Name:localhost@localdomain +. +IP Address:192.168.1.100 +. +Four digits:1234 +. +Numeric:32768 +. diff --git a/deps/ncurses-5.9/test/demo_keyok.c b/deps/ncurses-6.3/test/demo_keyok.c similarity index 91% rename from deps/ncurses-5.9/test/demo_keyok.c rename to deps/ncurses-6.3/test/demo_keyok.c index 8724d98..28d90aa 100644 --- a/deps/ncurses-5.9/test/demo_keyok.c +++ b/deps/ncurses-6.3/test/demo_keyok.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2003,2006 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2006,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: demo_keyok.c,v 1.5 2006/11/04 20:09:51 tom Exp $ + * $Id: demo_keyok.c,v 1.7 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the keyok() function. * Thomas Dickey - 2002/11/23 @@ -39,6 +40,7 @@ int main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) { int lastch = ERR; + int prior = ERR; int ch; WINDOW *win; @@ -57,6 +59,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) while ((ch = wgetch(win)) != ERR) { const char *name = keyname(ch); + if (ch == ESCAPE && prior == ch) + break; + prior = ch; wprintw(win, "Keycode %d, name %s\n", ch, name != 0 ? name : "<null>"); diff --git a/deps/ncurses-6.3/test/demo_menus.c b/deps/ncurses-6.3/test/demo_menus.c new file mode 100644 index 0000000..9f3b4d2 --- /dev/null +++ b/deps/ncurses-6.3/test/demo_menus.c @@ -0,0 +1,1053 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2003-2016,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. * + ****************************************************************************/ +/* + * $Id: demo_menus.c,v 1.73 2021/05/08 19:41:08 tom Exp $ + * + * Demonstrate a variety of functions from the menu library. + * Thomas Dickey - 2005/4/9 + */ +/* +item_description - +item_init - +item_opts - +item_opts_off - +item_opts_on - +item_term - +item_visible - +menu_back - +menu_fore - +menu_format - +menu_grey - +menu_init - +menu_opts - +menu_pad - +menu_request_by_name - +menu_request_name - +menu_term - +menu_userptr - +set_current_item - +set_item_opts - +set_menu_grey - +set_menu_items - +set_menu_opts - +set_menu_pad - +set_menu_pattern - +set_menu_spacing - +set_menu_userptr - +set_top_row - +top_row - +*/ + +#include <test.priv.h> + +#if USE_LIBMENU + +#include <menu.h> + +#include <sys/types.h> +#include <sys/stat.h> + +#ifdef NCURSES_VERSION +#ifdef TRACE +static unsigned save_trace = TRACE_ORDINARY | TRACE_CALLS; +static MENU *mpTrace; +#endif +#endif + +typedef enum { + eBanner = -1 + ,eFile + ,eSelect +#ifdef TRACE + ,eTrace +#endif + ,eMAX +} MenuNo; + +#define okMenuNo(n) (((n) > eBanner) && ((n) < eMAX)) + +#define MENU_Y 1 + +typedef struct { + NCURSES_CONST char *name; + void (*func) (int); + unsigned mask; +} MENU_DATA; + +static void call_files(int); + +static MENU *mpBanner; +static MENU *mpFile; +static MENU *mpSelect; + +static WINDOW *status; + +static bool loaded_file = FALSE; + +static char empty[1]; + +#ifdef TRACE +static GCC_NORETURN void failed(const char *s); + +static void +failed(const char *s) +{ + perror(s); + endwin(); + ExitProgram(EXIT_FAILURE); +} +#endif + +/* Common function to allow ^T to toggle trace-mode in the middle of a test + * so that trace-files can be made smaller. + */ +static int +wGetchar(WINDOW *win) +{ + int c; +#ifdef TRACE + while ((c = wgetch(win)) == CTRL('T')) { + if (_nc_tracing) { + save_trace = _nc_tracing; + Trace(("TOGGLE-TRACING OFF")); + _nc_tracing = 0; + } else { + _nc_tracing = save_trace; + } + curses_trace(_nc_tracing); + if (_nc_tracing) + Trace(("TOGGLE-TRACING ON")); + } +#else + c = wgetch(win); +#endif + return c; +} +#define Getchar() wGetchar(stdscr) + +static int +menu_virtualize(int c) +{ + int result; + + if (c == '\n' || c == KEY_EXIT) + result = (MAX_COMMAND + 1); + else if (c == 'u') + result = (REQ_SCR_ULINE); + else if (c == 'd') + result = (REQ_SCR_DLINE); + else if (c == 'b' || c == KEY_NPAGE) + result = (REQ_SCR_UPAGE); + else if (c == 'f' || c == KEY_PPAGE) + result = (REQ_SCR_DPAGE); + else if (c == 'l' || c == KEY_LEFT || c == KEY_BTAB) + result = (REQ_LEFT_ITEM); + else if (c == 'n' || c == KEY_DOWN) + result = (REQ_NEXT_ITEM); + else if (c == 'p' || c == KEY_UP) + result = (REQ_PREV_ITEM); + else if (c == 'r' || c == KEY_RIGHT || c == '\t') + result = (REQ_RIGHT_ITEM); + else if (c == ' ') + result = (REQ_TOGGLE_ITEM); + else { + if (c != KEY_MOUSE) + beep(); + result = (c); + } + return result; +} + +static int +menu_getc(MENU * m) +{ + return wGetchar(menu_win(m)); +} + +static int +menu_offset(MenuNo number) +{ + int result = 0; + + if (okMenuNo(number)) { + int spc_rows; +#ifdef NCURSES_VERSION + int spc_desc, spc_cols; + menu_spacing(mpBanner, &spc_desc, &spc_rows, &spc_cols); +#else + spc_rows = 0; +#endif + + /* FIXME: MENU.itemlen seems the only way to get actual width of items */ + result = (number - (eBanner + 1)) * (menu_itemwidth(mpBanner) + spc_rows); + } + return result; +} + +static void +my_menu_init(MENU * menu) +{ + Trace(("called MenuHook my_menu_init")); + mvwprintw(status, 2, 0, "menu_init %p", (void *) menu); + wclrtoeol(status); + wrefresh(status); +} + +static void +my_menu_term(MENU * menu) +{ + Trace(("called MenuHook my_menu_term")); + mvwprintw(status, 2, 0, "menu_term %p", (void *) menu); + wclrtoeol(status); + wrefresh(status); +} + +static void +my_item_init(MENU * menu) +{ + ITEM *item = current_item(menu); + const char *name = item_name(item); + + Trace(("called MenuHook my_item_init (%s)", name)); + mvwprintw(status, 2, 0, "item_init %s", name); + wclrtoeol(status); + wrefresh(status); +} + +static void +my_item_term(MENU * menu) +{ + ITEM *item = current_item(menu); + const char *name = item_name(item); + + Trace(("called MenuHook my_item_term (%s)", name)); + mvwprintw(status, 2, 0, "item_term %s", name); + wclrtoeol(status); + wrefresh(status); +} + +static MENU * +menu_create(ITEM ** items, int count, int ncols, MenuNo number) +{ + MENU *result; + WINDOW *menuwin; + int mrows, mcols; + int y = okMenuNo(number) ? MENU_Y : 0; + int x = menu_offset(number); + int margin = (y == MENU_Y) ? 1 : 0; + int maxcol = (ncols + x) < COLS ? ncols : (COLS - x - 1); + int maxrow = (count + 1) / ncols; + + if ((maxrow + y) >= (LINES - 4)) + maxrow = LINES - 4 - y; + + result = new_menu(items); + + if (has_colors()) { + set_menu_fore(result, (chtype) COLOR_PAIR(1)); + set_menu_back(result, (chtype) COLOR_PAIR(2)); + } + + set_menu_format(result, maxrow, maxcol); + scale_menu(result, &mrows, &mcols); + + if (mcols + (2 * margin + x) >= COLS) + mcols = COLS - (2 * margin + x); + + menuwin = newwin(mrows + (2 * margin), mcols + (2 * margin), y, x); + set_menu_win(result, menuwin); + keypad(menuwin, TRUE); + if (margin) + box(menuwin, 0, 0); + + set_menu_sub(result, derwin(menuwin, mrows, mcols, margin, margin)); + +#ifdef TRACE + if (number == eTrace) + menu_opts_off(result, O_ONEVALUE); + else + menu_opts_on(result, O_ONEVALUE); +#endif +#if defined(NCURSES_MOUSE_VERSION) && defined(O_MOUSE_MENU) + menu_opts_on(result, O_MOUSE_MENU); +#endif + + post_menu(result); + + set_menu_init(result, my_menu_init); + set_menu_term(result, my_menu_term); + set_item_init(result, my_item_init); + set_item_term(result, my_item_term); + return result; +} + +static void +menu_destroy(MENU * m) +{ + Trace(("menu_destroy %p", (void *) m)); + if (m != 0) { + ITEM **items = menu_items(m); + const char *blob = 0; + int count; + + count = item_count(m); + Trace(("menu_destroy %p count %d", (void *) m, count)); + if ((count > 0) && (m == mpSelect)) { + blob = item_name(*items); + } + + unpost_menu(m); + free_menu(m); + + /* free the extra data allocated in build_select_menu() */ + if ((count > 0) && (m == mpSelect)) { + if (blob && loaded_file) { + Trace(("freeing blob %p", blob)); + free((void *) blob); + } + free(items); + items = 0; + } +#ifdef TRACE + if ((count > 0) && (m == mpTrace)) { + ITEM **ip = items; + if (ip != 0) { + while (*ip) + free(*ip++); + } + } +#endif + } +} + +/* force the given menu to appear */ +static void +menu_display(MENU * m) +{ + touchwin(menu_win(m)); + wrefresh(menu_win(m)); +} + +/*****************************************************************************/ + +static void +build_file_menu(MenuNo number) +{ + static MENU_DATA table[] = + { + {"Exit", call_files, 0}, + {(char *) 0, 0, 0} + }; + static ITEM *items[SIZEOF(table)]; + + ITEM **ip = items; + int n; + + for (n = 0; table[n].name != 0; ++n) { + *ip = new_item(table[n].name, empty); + set_item_userptr(*ip, (void *) &table[n]); + ++ip; + } + *ip = (ITEM *) 0; + + mpFile = menu_create(items, SIZEOF(table) - 1, 1, number); +} + +static int +perform_file_menu(int cmd) +{ + return menu_driver(mpFile, cmd); +} + +/*****************************************************************************/ + +static void +call_select(int code) +{ + (void) code; + Trace(("Selected item %d", code)); +} + +static void +build_select_menu(MenuNo number, char *filename) +{ +#define MY_DATA(name) { name, call_select, 0 } + static MENU_DATA table[] = + { + MY_DATA("Lions"), + MY_DATA("Tigers"), + MY_DATA("Bears"), + MY_DATA("(Oh my!)"), + MY_DATA("Newts"), + MY_DATA("Platypi"), + MY_DATA("Lemurs"), + MY_DATA("(Oh really?!)"), + MY_DATA("Leopards"), + MY_DATA("Panthers"), + MY_DATA("Pumas"), + MY_DATA("Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs"), + MY_DATA("Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs, Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs"), + {(char *) 0, 0, 0} + }; + static ITEM **items; + + ITEM **ip; + MENU_DATA *ap = 0; + MENU_DATA *myList = 0; + int i; + size_t count = 0; + + if (filename != 0) { + struct stat sb; + if (stat(filename, &sb) == 0 + && (sb.st_mode & S_IFMT) == S_IFREG + && sb.st_size != 0) { + size_t size = (size_t) sb.st_size; + char *blob = typeMalloc(char, size + 1); + MENU_DATA *list = typeCalloc(MENU_DATA, size + 1); + + items = typeCalloc(ITEM *, size + 1); + Trace(("build_select_menu blob=%p, items=%p", + (void *) blob, + (void *) items)); + if (blob != 0 && list != 0) { + FILE *fp = fopen(filename, "r"); + if (fp != 0) { + if (fread(blob, sizeof(char), size, fp) == size) { + bool mark = TRUE; + unsigned j, k; + for (j = k = 0; j < size; ++j) { + if (mark) { + list[k++].name = blob + j; + mark = FALSE; + } + if (blob[j] == '\n') { + blob[j] = '\0'; + if (k > 0 && *list[k - 1].name == '\0') + --k; + mark = TRUE; + } else if (blob[j] == '\t') { + blob[j] = ' '; /* menu items are printable */ + } + } + list[k].name = 0; + count = k; + ap = myList = list; + } + fclose(fp); + } + loaded_file = TRUE; + } + if (ap == 0) + free(items); + } + } + if (ap == 0) { + count = SIZEOF(table) - 1; + items = typeCalloc(ITEM *, count + 1); + ap = table; + } + + ip = items; + for (i = 0; ap[i].name != 0; ++i) { + ap[i].func = call_select; + ap[i].mask = (unsigned) i; + *ip = new_item(ap[i].name, empty); + set_item_userptr(*ip, (void *) &table[i]); + ++ip; + } + *ip = 0; + + mpSelect = menu_create(items, (int) count, 1, number); + if (myList != 0) + free(myList); +} + +static int +perform_select_menu(int cmd) +{ + return menu_driver(mpSelect, cmd); +} + +/*****************************************************************************/ + +#ifdef TRACE + +static void +call_trace(int code) +{ + (void) code; + Trace(("Updating trace mask %d", code)); +} + +#define T_TBL(name) { #name, call_trace, name } +static MENU_DATA t_tbl[] = +{ + + T_TBL(TRACE_DISABLE), + T_TBL(TRACE_TIMES), + T_TBL(TRACE_TPUTS), + T_TBL(TRACE_UPDATE), + T_TBL(TRACE_MOVE), + T_TBL(TRACE_CHARPUT), + T_TBL(TRACE_ORDINARY), + T_TBL(TRACE_CALLS), + T_TBL(TRACE_VIRTPUT), + T_TBL(TRACE_IEVENT), + T_TBL(TRACE_BITS), + T_TBL(TRACE_ICALLS), + T_TBL(TRACE_CCALLS), + T_TBL(TRACE_DATABASE), + T_TBL(TRACE_ATTRS), + T_TBL(TRACE_MAXIMUM), + { + (char *) 0, 0, 0 + } +}; + +static void +build_trace_menu(MenuNo number) +{ + static ITEM *items[SIZEOF(t_tbl)]; + + ITEM **ip = items; + int n; + + for (n = 0; t_tbl[n].name != 0; n++) { + *ip = new_item(t_tbl[n].name, empty); + set_item_userptr(*ip, (void *) &t_tbl[n]); + ++ip; + } + *ip = (ITEM *) 0; + + mpTrace = menu_create(items, SIZEOF(t_tbl) - 1, 2, number); +} + +static char * +tracetrace(unsigned tlevel) +{ + static char *buf; + static size_t need = 12; + int n; + + if (buf == 0) { + for (n = 0; t_tbl[n].name != 0; n++) + need += strlen(t_tbl[n].name) + 2; + buf = typeMalloc(char, need); + if (!buf) + failed("tracetrace"); + } + _nc_SPRINTF(buf, _nc_SLIMIT(need) "0x%02x = {", tlevel); + if (tlevel == 0) { + _nc_STRCAT(buf, t_tbl[0].name ? t_tbl[0].name : "", need); + _nc_STRCAT(buf, ", ", need); + } else { + for (n = 1; t_tbl[n].name != 0; n++) + if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) { + _nc_STRCAT(buf, t_tbl[n].name, need); + _nc_STRCAT(buf, ", ", need); + } + } + if (buf[strlen(buf) - 2] == ',') + buf[strlen(buf) - 2] = '\0'; + _nc_STRCAT(buf, "}", need); + return buf; +} + +/* fake a dynamically reconfigurable menu using the 0th entry to deselect + * the others + */ +static bool +update_trace_menu(MENU * m) +{ + ITEM **items; + ITEM *i; + bool changed = FALSE; + + items = menu_items(m); + i = current_item(m); + if (i == items[0]) { + if (item_value(i)) { + ITEM **p; + for (p = items + 1; *p != 0; p++) + if (item_value(*p)) { + set_item_value(*p, FALSE); + changed = TRUE; + } + } + } + return changed; +} + +static int +perform_trace_menu(int cmd) +/* interactively set the trace level */ +{ + ITEM **ip; + int result; + + for (ip = menu_items(mpTrace); *ip; ip++) { + MENU_DATA *td = (MENU_DATA *) item_userptr(*ip); + unsigned mask = td->mask; + if (mask == 0) + set_item_value(*ip, _nc_tracing == 0); + else if ((mask & _nc_tracing) == mask) + set_item_value(*ip, TRUE); + } + + result = menu_driver(mpTrace, cmd); + + if (result == E_OK) { + if (update_trace_menu(mpTrace) || cmd == REQ_TOGGLE_ITEM) { + unsigned newtrace = 0; + for (ip = menu_items(mpTrace); *ip; ip++) { + if (item_value(*ip)) { + MENU_DATA *td = (MENU_DATA *) item_userptr(*ip); + newtrace |= td->mask; + } + } + curses_trace(newtrace); + Trace(("trace level interactively set to %s", tracetrace(_nc_tracing))); + + MvWPrintw(status, 1, 0, + "Trace level is %s\n", tracetrace(_nc_tracing)); + wrefresh(status); + } + } + return result; +} +#endif /* TRACE */ + +/*****************************************************************************/ + +static int +menu_number(void) +{ + return item_index(current_item(mpBanner)) - (eBanner + 1); +} + +static MENU * +current_menu(void) +{ + MENU *result; + + switch (menu_number()) { + case eFile: + result = mpFile; + break; + case eSelect: + result = mpSelect; + break; +#ifdef TRACE + case eTrace: + result = mpTrace; + break; +#endif + default: + result = 0; + break; + } + return result; +} + +static void +call_menus(int code) +{ + (void) code; + Trace(("Activated menu %d\n", code)); +} + +static void +build_menus(char *filename) +{ + static MENU_DATA table[] = + { + {"File", call_menus, 0}, + {"Select", call_menus, 1}, +#ifdef TRACE + {"Trace", call_menus, 2}, +#endif + {(char *) 0, 0, 0} + }; + static ITEM *items[SIZEOF(table)]; + + ITEM **ip = items; + int n; + + for (n = 0; table[n].name != 0; ++n) { + *ip = new_item(table[n].name, empty); + set_item_userptr(*ip, (void *) &table[n]); + ++ip; + } + *ip = (ITEM *) 0; + + mpBanner = menu_create(items, SIZEOF(table) - 1, SIZEOF(table) - 1, eBanner); + set_menu_mark(mpBanner, ">"); + + build_file_menu(eFile); + build_select_menu(eSelect, filename); +#ifdef TRACE + build_trace_menu(eTrace); +#endif +} + +static int +move_menu(MENU * menu, MENU * current, int by_y, int by_x) +{ + WINDOW *top_win = menu_win(menu); + WINDOW *sub_win = menu_sub(menu); + int y0, x0; + int y1, x1; + int result; + + getbegyx(top_win, y0, x0); + y0 += by_y; + x0 += by_x; + + getbegyx(sub_win, y1, x1); + y1 += by_y; + x1 += by_x; + + if ((result = mvwin(top_win, y0, x0)) != ERR) { +#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH < 20060218) + sub_win->_begy = y1; + sub_win->_begx = x1; +#else + mvwin(sub_win, y1, x1); +#endif + if (menu == current) { + touchwin(top_win); + wnoutrefresh(top_win); + } + } + return result; +} + +/* + * Move the menus around on the screen, to test mvwin(). + */ +static void +move_menus(MENU * current, int by_y, int by_x) +{ + if (move_menu(mpBanner, current, by_y, by_x) != ERR) { + erase(); + wnoutrefresh(stdscr); + move_menu(mpFile, current, by_y, by_x); + move_menu(mpSelect, current, by_y, by_x); +#ifdef TRACE + move_menu(mpTrace, current, by_y, by_x); +#endif + doupdate(); + } +} + +#if defined(KEY_RESIZE) && NCURSES_EXT_FUNCS +static void +resize_menu(MENU ** menu) +{ +#if 0 + WINDOW *win = menu_win(*menu); + WINDOW *sub = menu_sub(*menu); +#endif + (void) menu; +} + +static void +resize_menus(MENU * current) +{ + (void) current; + + werase(status); + wnoutrefresh(status); + wresize(status, 1, COLS); + mvwin(status, LINES - 1, 0); + + resize_menu(&mpBanner); + resize_menu(&mpFile); + resize_menu(&mpSelect); +#ifdef TRACE + resize_menu(&mpTrace); +#endif +} +#endif /* defined(KEY_RESIZE) && NCURSES_EXT_FUNCS */ + +static void +show_status(int ch, MENU * menu) +{ + wmove(status, 0, 0); + wprintw(status, "key %s, menu %d, mark %s, match %s", + keyname(ch), + menu_number(), + menu_mark(menu), + menu_pattern(menu)); + wclrtoeol(status); + wrefresh(status); +} + +static void +perform_menus(void) +{ + MENU *this_menu; + MENU *last_menu = mpFile; + int code = E_UNKNOWN_COMMAND; + int cmd; + int ch = ERR; + +#ifdef NCURSES_MOUSE_VERSION + mousemask(BUTTON1_CLICKED, (mmask_t *) 0); +#endif + + menu_display(last_menu); + + for (;;) { + + if (ch != ERR) + show_status(ch, last_menu); + + ch = menu_getc(mpBanner); + + /* + * Provide for moving the menu around in the screen using shifted + * cursor keys. + */ + switch (ch) { + case KEY_SF: + move_menus(last_menu, 1, 0); + continue; + case KEY_SR: + move_menus(last_menu, -1, 0); + continue; + case KEY_SLEFT: + move_menus(last_menu, 0, -1); + continue; + case KEY_SRIGHT: + move_menus(last_menu, 0, 1); + continue; +#if defined(KEY_RESIZE) && NCURSES_EXT_FUNCS + case KEY_RESIZE: + resize_menus(last_menu); + continue; +#endif + } + cmd = menu_virtualize(ch); + + switch (cmd) { + /* + * The banner menu acts solely to select one of the other menus. + * Move between its items, wrapping at the left/right limits. + */ + case REQ_LEFT_ITEM: + case REQ_RIGHT_ITEM: + code = menu_driver(mpBanner, cmd); + if (code == E_REQUEST_DENIED) { + if (menu_number() > 0) + code = menu_driver(mpBanner, REQ_FIRST_ITEM); + else + code = menu_driver(mpBanner, REQ_LAST_ITEM); + } + break; + default: + switch (menu_number()) { + case eFile: + code = perform_file_menu(cmd); + break; + case eSelect: + code = perform_select_menu(cmd); + break; +#ifdef TRACE + case eTrace: + code = perform_trace_menu(cmd); + break; +#endif + } + +#if defined(NCURSES_MOUSE_VERSION) && defined(O_MOUSE_MENU) + if ((code == E_REQUEST_DENIED) && (cmd == KEY_MOUSE)) { + (void) menu_getc(mpBanner); + code = menu_driver(mpBanner, cmd); + if (code == E_REQUEST_DENIED) { + MEVENT event; + if (menu_getc(mpBanner) == KEY_MOUSE) + getmouse(&event); /* give up */ + } + } +#endif + + break; + } + + if (code == E_OK) { + this_menu = current_menu(); + if (this_menu != last_menu) { + move(1, 0); + clrtobot(); + box(menu_win(this_menu), 0, 0); + refresh(); + + /* force the current menu to appear */ + menu_display(this_menu); + + last_menu = this_menu; + } + } + wrefresh(menu_win(last_menu)); + if (code == E_UNKNOWN_COMMAND + || code == E_NOT_POSTED) { + ITEM *item = current_item(last_menu); + MENU_DATA *td = (MENU_DATA *) item_userptr(item); + td->func((int) td->mask); + } + if (code == E_REQUEST_DENIED) + beep(); + continue; + } +} + +static void +destroy_menus(void) +{ + menu_destroy(mpFile); + menu_destroy(mpSelect); +#ifdef TRACE + menu_destroy(mpTrace); +#endif + menu_destroy(mpBanner); +} + +#if HAVE_RIPOFFLINE +static int +rip_footer(WINDOW *win, int cols) +{ + wbkgd(win, A_REVERSE); + werase(win); + wmove(win, 0, 0); + wprintw(win, "footer: %d columns", cols); + wnoutrefresh(win); + return OK; +} + +static int +rip_header(WINDOW *win, int cols) +{ + wbkgd(win, A_REVERSE); + werase(win); + wmove(win, 0, 0); + wprintw(win, "header: %d columns", cols); + wnoutrefresh(win); + return OK; +} +#endif /* HAVE_RIPOFFLINE */ + +static void +call_files(int code) +{ + switch (code) { + case 0: + destroy_menus(); + endwin(); + printf("DONE!\n"); + ExitProgram(EXIT_SUCCESS); + } +} + +static void +usage(void) +{ + static const char *const tbl[] = + { + "Usage: demo_menus [options] [menu-file]" + ,"" + ,"Options:" +#if HAVE_RIPOFFLINE + ," -f rip-off footer line (can repeat)" + ," -h rip-off header line (can repeat)" +#endif +#ifdef TRACE + ," -t mask specify default trace-level (may toggle with ^T)" +#endif + }; + size_t n; + for (n = 0; n < SIZEOF(tbl); n++) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int c; + + setlocale(LC_ALL, ""); + + while ((c = getopt(argc, argv, "fht:")) != -1) { + switch (c) { +#if HAVE_RIPOFFLINE + case 'f': + ripoffline(-1, rip_footer); + break; + case 'h': + ripoffline(1, rip_header); + break; +#endif /* HAVE_RIPOFFLINE */ +#ifdef TRACE + case 't': + curses_trace((unsigned) strtoul(optarg, 0, 0)); + break; +#endif + default: + usage(); + } + } + + initscr(); + noraw(); + cbreak(); + noecho(); + + if (has_colors()) { + start_color(); + init_pair(1, COLOR_RED, COLOR_BLACK); + init_pair(2, COLOR_BLUE, COLOR_WHITE); + } + status = newwin(3, COLS, LINES - 3, 0); + build_menus(argc > 1 ? argv[1] : 0); + perform_menus(); + destroy_menus(); + + endwin(); + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(void) +{ + printf("This program requires the curses menu library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/demo_new_pair.c b/deps/ncurses-6.3/test/demo_new_pair.c new file mode 100644 index 0000000..ac0d9bf --- /dev/null +++ b/deps/ncurses-6.3/test/demo_new_pair.c @@ -0,0 +1,394 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 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. * + ****************************************************************************/ +/* + * $Id: demo_new_pair.c,v 1.24 2021/02/21 01:24:06 tom Exp $ + * + * Demonstrate the alloc_pair() function. + */ + +#include <test.priv.h> +#include <time.h> +#include <popup_msg.h> + +#if HAVE_ALLOC_PAIR && USE_WIDEC_SUPPORT + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> + +#define MAX_BITS 8 /* all but A_ALTCHARSET */ +#define MAX_ATTR ((1<<MAX_BITS)-1) + +static bool +valid_cap(NCURSES_CONST char *name) +{ + char *value = tigetstr(name); + return (value != 0 && value != (char *) -1) ? TRUE : FALSE; +} + +static attr_t +next_attr(int now) +{ + static bool init = FALSE; + static attr_t table[MAX_BITS * MAX_BITS]; + static int limit = 0; + + if (!init) { + int j, k; + attr_t bits[MAX_BITS]; + + init = TRUE; + bits[limit++] = WA_NORMAL; + if (valid_cap("smso")) + bits[limit++] = WA_STANDOUT; + if (valid_cap("smul")) + bits[limit++] = WA_UNDERLINE; + if (valid_cap("rev")) + bits[limit++] = WA_REVERSE; + if (valid_cap("blink")) + bits[limit++] = WA_BLINK; + if (valid_cap("dim")) + bits[limit++] = WA_DIM; + if (valid_cap("bold")) + bits[limit++] = WA_BOLD; + for (j = 0; j < limit; ++j) { + for (k = 0; k < limit; ++k) { + table[j * limit + k] = bits[j] | bits[k]; + } + } + } + return table[now % limit]; +} + +static void +our_content(int pair, int *fg, int *bg) +{ + pair %= COLOR_PAIRS; + *fg = (pair / COLORS) % COLORS; + *bg = (pair % COLORS); +} + +static int +make_color(int now) +{ + int fg, bg; + our_content(now, &fg, &bg); + return alloc_pair(fg, bg); +} + +static int +next_color(int now) +{ + int result = 0; + if ((short) now > 0) { + if (now < COLOR_PAIRS) { + int fg, bg; + our_content(now, &fg, &bg); + if (init_pair((short) now, (short) fg, (short) bg) != OK) + now = ERR; + } else { + now %= COLOR_PAIRS; + } + result = now; + } + return result; +} + +static time_t +now(void) +{ + return time((time_t *) 0); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: demo_new_pair [options]", + "", + "Repeatedly print using all possible color combinations.", + "", + "Options:", + " -g use getcchar to check setcchar", + " -i use init_pair rather than alloc_pair", + " -p start in paged-mode", + " -s start in single-step mode", + " -w print a wide-character cell", + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +#define use_pages() \ + paged_mode = TRUE, single_mode = TRUE + +#define use_single() \ + paged_mode = FALSE, single_mode = TRUE + +#define update_modes() \ + scrollok(stdscr, !paged_mode); \ + nodelay(stdscr, !single_mode || paged_mode) + +int +main(int argc, char *argv[]) +{ + static const char *help[] = + { + "This program iterates over the possible color combinations,", + "allocating or initializing color pairs. For best results,", + "choose screen-width dividing evenly into the number of colors,", + "e.g.,", + "", + " 32x64,32x128 256 colors", + " 24x44,24x88 88 colors", + " 32x64,24x128 16 colors", + "", + "Keys:", + " c toggle between coloring and de-coloring cells", + " p show one page at a time", + " s show one character at a time", + " <space> display char/page without pausing", + " v/V cycle through video attributes", + " w toggle between \"#\" and a double-width equivalent", + " ? print this screen (exit on any character).", + "", + "To exit this program, press ^Q, ^[ or \"q\".", + 0 + }; + + bool done = FALSE; + bool check_set = FALSE; + bool clobber = FALSE; + bool hascolor = FALSE; + bool use_init = FALSE; + bool use_wide = FALSE; + bool paged_mode = FALSE; + bool single_mode = FALSE; + int video_mode = 0; + int current; + int ch; + wchar_t wch[2]; + time_t start = now(); + long total_cells = 0; + FILE *output = 0; + + setlocale(LC_ALL, ""); + + while ((ch = getopt(argc, argv, "gipsw")) != -1) { + switch (ch) { + case 'g': + check_set = TRUE; + break; + case 'i': + use_init = TRUE; + break; + case 'p': + use_pages(); + break; + case 's': + use_single(); + break; + case 'w': + use_wide = TRUE; + break; + default: + usage(); + break; + } + } + + if (isatty(fileno(stderr))) { + output = stderr; + } else if ((ch = open("/dev/tty", O_WRONLY)) >= 0) { + output = fdopen(ch, "w"); + } else { + fprintf(stderr, "cannot open terminal for output\n"); + ExitProgram(EXIT_FAILURE); + } + if (newterm(NULL, output, stdin) == 0) { + fprintf(stderr, "Cannot initialize terminal\n"); + fclose(output); + ExitProgram(EXIT_FAILURE); + } + (void) cbreak(); /* read chars without wait for \n */ + (void) noecho(); /* don't echo input */ + update_modes(); + curs_set(0); + + keypad(stdscr, TRUE); + + if ((hascolor = has_colors())) { + start_color(); + current = 1; + } else { + current = 0; + } + + /* + * Repeatedly cycle through all colors, initializing pairs as needed. + * Provide for single-stepping, or page-at-a-time, as well as quitting. + */ + while (!done) { + cchar_t temp; + attr_t my_attrs; + int my_pair; + + switch (getch()) { + case HELP_KEY_1: + popup_msg(stdscr, help); + break; + case 'p': + /* step-by-page */ + use_pages(); + update_modes(); + break; + case 's': + /* step-by-char */ + use_single(); + update_modes(); + break; + case ' ': + single_mode = FALSE; + update_modes(); + break; + case QUIT: + case ESCAPE: + case 'q': + done = TRUE; + continue; + case 'c': + clobber = !clobber; + continue; + case 'v': + if (--video_mode < 0) + video_mode = MAX_ATTR; + continue; + case 'V': + if (video_mode > MAX_ATTR) + video_mode = 0; + continue; + case 'w': + use_wide = !use_wide; + continue; + case ERR: + break; + default: + beep(); + break; + } + if (hascolor) { + my_attrs = next_attr(video_mode); + if (clobber) { + int fg, bg; + our_content(current, &fg, &bg); + my_pair = find_pair(fg, bg); + if (my_pair > 0) { + free_pair(my_pair); + } + my_pair = 0; + } else { + my_pair = (use_init + ? next_color(current) + : make_color(current)); + } + } else { + my_attrs = next_attr(current); + my_pair = 0; + } + if (my_pair < 0) + break; + wch[0] = use_wide ? 0xff03 : '#'; + wch[1] = 0; + setcchar(&temp, wch, my_attrs, + (short) my_pair, + (use_init ? NULL : (void *) &my_pair)); + + if (check_set) { + int problem = 0; + wchar_t chk_wch[2]; + attr_t chk_attrs = 0; + short chk_pair = 0; + int chk_pair2 = 0; + +#define AllButColor(a) ((a) & (A_ATTRIBUTES & ~A_COLOR)) + + if (getcchar(&temp, NULL, &chk_attrs, &chk_pair, + (use_init ? NULL : (void *) &chk_pair2)) != 2) { + problem = 1; + } else if (getcchar(&temp, chk_wch, &chk_attrs, &chk_pair, + (use_init ? NULL : (void *) &chk_pair2)) != OK) { + problem = 2; + } else if (chk_wch[0] != wch[0]) { + problem = 3; + } else if (AllButColor(my_attrs) != AllButColor(chk_attrs)) { + problem = 4; + } else if (my_pair != chk_pair) { + problem = 4; + } else if (!use_init && (my_pair != chk_pair2)) { + problem = 5; + } + if (problem) { + wch[0] = (wchar_t) (problem + '0'); + setcchar(&temp, wch, my_attrs, + (short) my_pair, + (use_init ? NULL : (void *) &my_pair)); + } + } + + /* + * At the end of a page, move the cursor to the home position. + */ + if ((add_wch(&temp) == ERR) && paged_mode) { + nodelay(stdscr, !single_mode); + move(0, 0); + } + total_cells += 1 + (use_wide ? 1 : 0); + ++current; + } + stop_curses(); + fclose(output); + + printf("%.1f cells/second\n", + (double) (total_cells) / (double) (now() - start)); + + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the ncurses alloc_pair function\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-5.9/test/demo_panels.c b/deps/ncurses-6.3/test/demo_panels.c similarity index 91% rename from deps/ncurses-5.9/test/demo_panels.c rename to deps/ncurses-6.3/test/demo_panels.c index ce6beb7..005483e 100644 --- a/deps/ncurses-5.9/test/demo_panels.c +++ b/deps/ncurses-6.3/test/demo_panels.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007-2008,2010 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2003-2016,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: demo_panels.c,v 1.37 2010/05/01 22:19:02 tom Exp $ + * $Id: demo_panels.c,v 1.45 2020/02/02 23:34:34 tom Exp $ * * Demonstrate a variety of functions from the panel library. */ @@ -204,7 +205,7 @@ mkpanel(short color, int rows, int cols, int tly, int tlx) { WINDOW *win; PANEL *pan = 0; - char *userdata = typeMalloc(char, 3); + char *userdata = typeMalloc(char, 6); if ((win = newwin(rows, cols, tly, tlx)) != 0) { keypad(win, TRUE); @@ -222,13 +223,13 @@ mkpanel(short color, int rows, int cols, int tly, int tlx) wbkgdset(win, A_BOLD | ' '); } } - sprintf(userdata, "p%d", color % 8); + _nc_SPRINTF(userdata, _nc_SLIMIT(4) "p%d", color % 8); set_panel_userptr(pan, (NCURSES_CONST void *) userdata); return pan; } static void -my_remove_panel(PANEL ** pans, int which) +my_remove_panel(PANEL **pans, int which) { if (pans[which] != 0) { PANEL *pan = pans[which]; @@ -248,9 +249,8 @@ my_remove_panel(PANEL ** pans, int which) #define ABS(a) ((a) < 0 ? -(a) : (a)) static void -my_create_panel(PANEL ** pans, int which, FillPanel myFill) +my_create_panel(PANEL **pans, int which, FillPanel myFill) { - PANEL *pan = 0; int code; short pair = (short) which; short fg = (short) ((pair == COLOR_BLUE) ? COLOR_WHITE : COLOR_BLACK); @@ -271,7 +271,7 @@ my_create_panel(PANEL ** pans, int which, FillPanel myFill) if (code > 0) { char also[80]; - sprintf(also, " (first %d,%d)", y0, x0); + _nc_SPRINTF(also, _nc_SLIMIT(sizeof(also)) " (first %d,%d)", y0, x0); /* get the position of the opposite corner */ while ((code = get_position("Opposite corner", also, which, &x1, &y1)) == 0) { @@ -281,7 +281,10 @@ my_create_panel(PANEL ** pans, int which, FillPanel myFill) if (code > 0) { int tly = MIN(y0, y1); int tlx = MIN(x0, x1); - pan = mkpanel(pair, ABS(y1 - y0) + 1, ABS(x1 - x0) + 1, tly, tlx); + PANEL *pan = mkpanel(pair, + ABS(y1 - y0) + 1, + ABS(x1 - x0) + 1, + tly, tlx); /* finish */ myFill(pan); pans[which] = pan; @@ -292,7 +295,7 @@ my_create_panel(PANEL ** pans, int which, FillPanel myFill) } static void -my_move_panel(PANEL ** pans, int which, bool continuous) +my_move_panel(PANEL **pans, int which, bool continuous) { if (pans[which] != 0) { int code; @@ -302,7 +305,7 @@ my_move_panel(PANEL ** pans, int which, bool continuous) char also[80]; getbegyx(win, y0, x0); - sprintf(also, " (start %d,%d)", y0, x0); + _nc_SPRINTF(also, _nc_SLIMIT(sizeof(also)) " (start %d,%d)", y0, x0); wmove(stdscr, y0, x0); while ((code = get_position("Move panel", also, which, &x1, &y1)) == 0) { if (continuous) { @@ -317,7 +320,7 @@ my_move_panel(PANEL ** pans, int which, bool continuous) } static void -my_resize_panel(PANEL ** pans, int which, FillPanel myFill) +my_resize_panel(PANEL **pans, int which, FillPanel myFill) { if (pans[which] != 0) { int code; @@ -327,7 +330,7 @@ my_resize_panel(PANEL ** pans, int which, FillPanel myFill) char also[80]; getbegyx(win, y0, x0); - sprintf(also, " (start %d,%d)", y0, x0); + _nc_SPRINTF(also, _nc_SLIMIT(sizeof(also)) " (start %d,%d)", y0, x0); wmove(stdscr, y0, x0); while ((code = get_position("Resize panel", also, which, &x1, &y1)) == 0) { @@ -365,7 +368,7 @@ init_panel(void) } static void -fill_panel(PANEL * pan) +fill_panel(PANEL *pan) { WINDOW *win = panel_window(pan); const char *userptr = (const char *) panel_userptr(pan); @@ -385,7 +388,7 @@ fill_panel(PANEL * pan) } static void -fill_unboxed(PANEL * pan) +fill_unboxed(PANEL *pan) { WINDOW *win = panel_window(pan); const char *userptr = (const char *) panel_userptr(pan); @@ -406,7 +409,7 @@ make_fullwidth_digit(cchar_t *target, int digit) { wchar_t source[2]; - source[0] = digit + 0xff10; + source[0] = (wchar_t) (digit + 0xff10); source[1] = 0; setcchar(target, source, A_NORMAL, 0, 0); } @@ -428,7 +431,7 @@ init_wide_panel(void) } static void -fill_wide_panel(PANEL * pan) +fill_wide_panel(PANEL *pan) { WINDOW *win = panel_window(pan); int num = ((const char *) panel_userptr(pan))[1]; @@ -450,7 +453,7 @@ fill_wide_panel(PANEL * pan) #define MAX_PANELS 5 static int -which_panel(PANEL * px[MAX_PANELS + 1], PANEL * pan) +which_panel(PANEL *px[MAX_PANELS + 1], PANEL *pan) { int result = 0; int j; @@ -465,7 +468,7 @@ which_panel(PANEL * px[MAX_PANELS + 1], PANEL * pan) } static void -show_panels(PANEL * px[MAX_PANELS + 1]) +show_help(WINDOW *win) { static const char *help[] = { @@ -479,9 +482,19 @@ show_panels(PANEL * px[MAX_PANELS + 1]) " m - move the panel (M for continuous move)", " r - resize the panel", " s - show the panel", - " b - put the panel on the top of the stack" + " t - put the panel on the top of the stack" }; + int j; + + for (j = 0; j < (int) SIZEOF(help); ++j) { + if (wprintw(win, "%s\n", help[j]) == ERR) + break; + } +} +static void +show_panels(PANEL *px[MAX_PANELS + 1]) +{ struct { bool valid; bool hidden; @@ -490,7 +503,6 @@ show_panels(PANEL * px[MAX_PANELS + 1]) } table[MAX_PANELS + 1]; WINDOW *win; - PANEL *pan; int j; memset(table, 0, sizeof(table)); @@ -504,6 +516,8 @@ show_panels(PANEL * px[MAX_PANELS + 1]) } if ((win = newwin(LINES - 1, COLS, 0, 0)) != 0) { + PANEL *pan; + keypad(win, TRUE); if ((pan = new_panel(win)) != 0) { werase(win); @@ -527,10 +541,7 @@ show_panels(PANEL * px[MAX_PANELS + 1]) waddch(win, '\n'); } } - for (j = 0; j < (int) SIZEOF(help); ++j) { - if (wprintw(win, "%s\n", help[j]) == ERR) - break; - } + show_help(win); wgetch(win); del_panel(pan); pflush(); @@ -556,7 +567,7 @@ wrapper(top_panel) /* *INDENT-ON* */ static void -do_panel(PANEL * px[MAX_PANELS + 1], +do_panel(PANEL *px[MAX_PANELS + 1], NCURSES_CONST char *cmd, FillPanel myFill) { @@ -622,11 +633,10 @@ ok_digit(int ch) * End the command with a newline. Reject other characters. */ static bool -get_command(PANEL * px[MAX_PANELS + 1], char *buffer, int limit) +get_command(PANEL *px[MAX_PANELS + 1], char *buffer, int limit) { int length = 0; int y0, x0; - int c0, ch; WINDOW *win; getyx(stdscr, y0, x0); @@ -645,9 +655,9 @@ get_command(PANEL * px[MAX_PANELS + 1], char *buffer, int limit) } (void) wgetch(win); } else { - c0 = 0; + int c0 = 0; for (;;) { - ch = wgetch(win); + int ch = wgetch(win); if (ch == ERR || ch == QUIT || ch == ESCAPE) { buffer[0] = '\0'; break; @@ -655,7 +665,7 @@ get_command(PANEL * px[MAX_PANELS + 1], char *buffer, int limit) wrefresh(curscr); } else if (ch == '\n' || ch == KEY_ENTER) { break; - } else if (ch == '?') { + } else if (ch == HELP_KEY_1) { show_panels(px); } else if (length + 3 < limit) { if (ch >= KEY_MIN) { diff --git a/deps/ncurses-6.3/test/demo_tabs.c b/deps/ncurses-6.3/test/demo_tabs.c new file mode 100644 index 0000000..f63850d --- /dev/null +++ b/deps/ncurses-6.3/test/demo_tabs.c @@ -0,0 +1,119 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * * + * 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: Thomas E. Dickey + * + * $Id: demo_tabs.c,v 1.5 2020/02/02 23:34:34 tom Exp $ + * + * A simple demo of tabs in curses. + */ +#define USE_TINFO +#include "test.priv.h" + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: demo_tabs [options]", + "", + "Print a grid to test tab-stops with the curses interface", + "", + "Options:", + " -l COUNT total number of lines to show", + " -t NUM set TABSIZE variable to the given value", + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int tabstop; + int n, col, row, step; + int line_limit = -1; + int curses_stops = -1; + + while ((n = getopt(argc, argv, "l:t:")) != -1) { + switch (n) { + case 'l': + line_limit = atoi(optarg); + break; + case 't': + curses_stops = atoi(optarg); + break; + default: + usage(); + break; + } + } + + initscr(); + noecho(); + cbreak(); + if (curses_stops > 0) + set_tabsize(curses_stops); +#if HAVE_TIGETNUM + tabstop = tigetnum("it"); + if (tabstop <= 0) +#endif + tabstop = 8; + for (row = 0; row < LINES; ++row) { + move(row, 0); + for (col = step = 0; col < COLS - 1; ++col) { + if (row == 0) { + chtype ch = '-'; + if ((col % tabstop) == 0) + ch = '+'; + addch(ch); + } else if (col + 1 < row) { + addch('*'); + } else { + printw("%x", step); + col = (row + (tabstop * ++step)); + col /= tabstop; + col *= tabstop; + col -= 1; + if ((col + tabstop) < COLS) + addch('\t'); + refresh(); + } + } + addch('\n'); + if (line_limit > 0 && row >= line_limit) + break; + } + getch(); + endwin(); + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-6.3/test/demo_termcap.c b/deps/ncurses-6.3/test/demo_termcap.c new file mode 100644 index 0000000..347fc5b --- /dev/null +++ b/deps/ncurses-6.3/test/demo_termcap.c @@ -0,0 +1,923 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2005-2016,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: Thomas E. Dickey + * + * $Id: demo_termcap.c,v 1.60 2021/03/20 16:05:49 tom Exp $ + * + * A simple demo of the termcap interface. + */ +#define USE_TINFO +#include <test.priv.h> +#include <sys/stat.h> + +#if NCURSES_XNAMES +#if HAVE_TERM_ENTRY_H +#include <term_entry.h> +#else +#undef NCURSES_XNAMES +#define NCURSES_XNAMES 0 +#endif +#endif + +#if defined(NCURSES_VERSION) +#if HAVE_NCURSES_TERMCAP_H +#include <ncurses/termcap.h> +#elif HAVE_TERMCAP_H +#include <termcap.h> +#endif +#endif + +static GCC_NORETURN void failed(const char *); + +static void +failed(const char *msg) +{ + fprintf(stderr, "%s\n", msg); + ExitProgram(EXIT_FAILURE); +} + +#if HAVE_TGETENT + +#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) +#define USE_CODE_LISTS 1 +#else +#define USE_CODE_LISTS 0 +#endif + +#define FCOLS 8 +#define FNAME(type) "%s %-*s = ", #type, FCOLS + +static bool b_opt = FALSE; +static bool n_opt = FALSE; +static bool s_opt = FALSE; +static bool q_opt = FALSE; +#ifdef NCURSES_VERSION +static bool x_opt = FALSE; +static bool y_opt = FALSE; +#endif + +static char *d_opt; +static char *e_opt; +static char **db_list; +static int db_item; + +static char *my_blob; +static char **my_boolcodes; +static char **my_numcodes; +static char **my_numvalues; +static char **my_strcodes; +static char **my_strvalues; + +static long total_values; +static long total_b_values; +static long total_n_values; +static long total_s_values; + +#define isCapName(c) (isgraph(c) && strchr("^=:\\", c) == 0) +#define EachCapName(n) n = 33; n < 127; ++n + +static char * +make_dbitem(char *p, char *q) +{ + size_t need = strlen(e_opt) + 2 + (size_t) (p - q); + char *result = malloc(need); + _nc_SPRINTF(result, _nc_SLIMIT(need) "%s=%.*s", e_opt, (int) (p - q), q); + return result; +} + +static void +make_dblist(void) +{ + if (d_opt && e_opt) { + int pass; + + for (pass = 0; pass < 2; ++pass) { + char *p, *q; + size_t count = 0; + + for (p = q = d_opt; *p != '\0'; ++p) { + if (*p == ':') { + if (p != q + 1) { + if (pass) { + db_list[count] = make_dbitem(p, q); + } + count++; + } + q = p + 1; + } + } + if (p != q + 1) { + if (pass) { + db_list[count] = make_dbitem(p, q); + } + count++; + } + if (!pass) { + db_list = typeCalloc(char *, count + 1); + } + } + } +} + +static char * +next_dbitem(void) +{ + char *result = 0; + + if (db_list) { + if ((result = db_list[db_item]) == 0) { + db_item = 0; + result = db_list[0]; + } else { + db_item++; + } + } + if (result != 0) + printf("** %s\n", result); + return result; +} + +#if NO_LEAKS +static void +free_dblist(void) +{ + if (db_list) { + int n; + for (n = 0; db_list[n]; ++n) + free(db_list[n]); + free(db_list); + db_list = 0; + } +} +#endif /* NO_LEAKS */ + +static void +show_string(const char *name, const char *value) +{ + printf(FNAME(str), name); + if (value == ((char *) -1)) { + printf("CANCELLED"); + } else if (value == ((char *) 0)) { + printf("ABSENT"); + } else { + while (*value != 0) { + int ch = UChar(*value++); + switch (ch) { + case '\177': + fputs("^?", stdout); + break; + case '\033': + fputs("\\E", stdout); + break; + case '\b': + fputs("\\b", stdout); + break; + case '\f': + fputs("\\f", stdout); + break; + case '\n': + fputs("\\n", stdout); + break; + case '\r': + fputs("\\r", stdout); + break; + case ' ': + fputs("\\s", stdout); + break; + case '\t': + fputs("\\t", stdout); + break; + case '^': + fputs("\\^", stdout); + break; + case ':': + fputs("\\072", stdout); + break; + case '\\': + fputs("\\\\", stdout); + break; + default: + if (isgraph(ch)) + fputc(ch, stdout); + else if (ch < 32) + printf("^%c", ch + '@'); + else + printf("\\%03o", ch); + break; + } + } + } + printf("\n"); +} + +static void +show_number(const char *name, int value) +{ + printf(FNAME(num), name); + printf(" %d\n", value); +} + +static void +dumpit(NCURSES_CONST char *cap) +{ + /* + * One of the limitations of the termcap interface is that the library + * cannot determine the size of the buffer passed via tgetstr(), nor the + * amount of space remaining. This demo simply reuses the whole buffer + * for each call; a normal termcap application would try to use the buffer + * to hold all of the strings extracted from the terminal entry. + */ + char area[1024], *ap = area; + char *str; + int num; + + if ((str = tgetstr(cap, &ap)) != 0) { + total_values++; + total_s_values++; + if (!q_opt) { + /* + * Note that the strings returned are mostly terminfo format, since + * ncurses does not convert except for a handful of special cases. + */ + show_string(cap, str); + } + } else if ((num = tgetnum(cap)) >= 0) { + total_values++; + total_n_values++; + if (!q_opt) { + show_number(cap, num); + } + } else if (tgetflag(cap) > 0) { + total_values++; + total_b_values++; + if (!q_opt) { + printf(FNAME(flg), cap); + printf("%s\n", "true"); + } + } + + if (!q_opt) + fflush(stdout); +} + +static void +brute_force(const char *name) +{ + char buffer[1024]; + + if (db_list) { + putenv(next_dbitem()); + } + if (!q_opt) + printf("Terminal type \"%s\"\n", name); + if (tgetent(buffer, name) >= 0) { + char cap[3]; + int c1, c2; + + cap[2] = 0; + for (EachCapName(c1)) { + cap[0] = (char) c1; + if (isCapName(c1)) { + for (EachCapName(c2)) { + cap[1] = (char) c2; + if (isCapName(c2)) { + dumpit(cap); + } + } + } + } + } +} + +#if NCURSES_XNAMES +static void +dump_xname(NCURSES_CONST char *cap) +{ + if (strlen(cap) == 2) + dumpit(cap); +} +#endif + +static void +demo_termcap(NCURSES_CONST char *name) +{ + char buffer[1024]; + + if (db_list) { + putenv(next_dbitem()); + } + if (!q_opt) + printf("Terminal type \"%s\"\n", name); + if (tgetent(buffer, name) >= 0) { + NCURSES_CONST char *cap; + unsigned n; + + if (b_opt) { + for (n = 0;; ++n) { + cap = my_boolcodes[n]; + if (cap == 0) + break; + dumpit(cap); + } + } + + if (n_opt) { + for (n = 0;; ++n) { + cap = my_numcodes[n]; + if (cap == 0) + break; + dumpit(cap); + } + } + + if (s_opt) { + for (n = 0;; ++n) { + cap = my_strcodes[n]; + if (cap == 0) + break; + dumpit(cap); + } + } +#ifdef NCURSES_VERSION + if (x_opt && (my_blob == 0) && y_opt) { +#if NCURSES_XNAMES + TERMTYPE *term = (TERMTYPE *) cur_term; + if (term != 0 + && ((NUM_BOOLEANS(term) != BOOLCOUNT) + || (NUM_NUMBERS(term) != NUMCOUNT) + || (NUM_STRINGS(term) != STRCOUNT))) { + for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) { + dump_xname(ExtBoolname(term, (int) n, boolnames)); + } + for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) { + dump_xname(ExtNumname(term, (int) n, numnames)); + } + for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) { + dump_xname(ExtStrname(term, (int) n, strnames)); + } + } +#endif + } +#endif + } +} + +typedef enum { + pDefault = 0 + ,pComment + ,pDescription + ,pEscaped + ,pNewline + ,pName + ,pNumber + ,pString +} STATE; + +static void +parse_description(const char *input_name) +{ + static char empty[1]; + + FILE *fp; + struct stat sb; + size_t count_bools = 0; + size_t count_nums = 0; + size_t count_strs = 0; + size_t len; + size_t j, k; + STATE state; + + if (stat(input_name, &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG) { + failed("input is not a file"); + } + + if (sb.st_size == 0) { + failed("input is empty"); + } + + /* + * None of the arrays could be larger than the input-file, and since it + * is small, just allocate the maximum for simplicity. + */ + if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0 || + (my_boolcodes = typeCalloc(char *, sb.st_size)) == 0 || + (my_numcodes = typeCalloc(char *, sb.st_size)) == 0 || + (my_numvalues = typeCalloc(char *, sb.st_size)) == 0 || + (my_strcodes = typeCalloc(char *, sb.st_size)) == 0 || + (my_strvalues = typeCalloc(char *, sb.st_size)) == 0) { + failed("cannot allocate memory for input-file"); + } + + if ((fp = fopen(input_name, "r")) == 0) + failed("cannot open input-file"); + len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp); + my_blob[sb.st_size] = '\0'; + fclose(fp); + + /* + * First, get rid of comments and escaped newlines, as well as repeated + * colons to construct a canonical entry. + * + * FIXME: actually this should make an additional pass just to strip + * comment-lines and escaped newlines. But it is workable for infocmp + * output. + */ + state = pNewline; + for (j = k = 0; j < len; ++j) { + int ch = my_blob[j]; + if (ch == '\t') { + ch = ' '; + } + switch (state) { + case pNewline: + if (ch == ' ') { + continue; + } + if (ch == '#') { + state = pComment; + continue; + } + state = pDefault; + /* FALLTHRU */ + case pDefault: + switch (ch) { + case '|': + state = pDescription; + continue; + case '\\': + state = pEscaped; + continue; + case '\n': + state = pNewline; + continue; + case ' ': + case ':': + break; + default: + state = pName; + break; + } + my_blob[k++] = (char) ch; + break; + case pComment: + if (ch == '\n') + state = pNewline; + break; + case pDescription: + switch (ch) { + case ':': + state = pDefault; + break; + case '\n': + state = pNewline; + break; + } + break; + case pEscaped: + if (ch != '\n') { + my_blob[k++] = (char) ch; + state = pDefault; + } else { + state = pNewline; + } + break; + case pName: + switch (ch) { + case '\n': + state = pNewline; + continue; + case ' ': + case ':': + state = pDefault; + break; + case '#': + state = pNumber; + break; + case '|': + state = pDescription; + continue; + } + my_blob[k++] = (char) ch; + break; + case pNumber: + switch (ch) { + case '\n': + state = pNewline; + continue; + case ':': + state = pDefault; + break; + case ' ': + state = pDefault; + continue; + } + my_blob[k++] = (char) ch; + break; + case pString: + switch (ch) { + case '\\': + if (my_blob[j + 1] == '\0') { + state = pDefault; + continue; + } + break; + case '\n': + state = pNewline; + continue; + case ':': + state = pDefault; + break; + } + my_blob[k++] = (char) ch; + break; + default: + /* not used */ + break; + } + } + my_blob[k] = '\0'; + + /* + * Then, parse what's left, making indexes of the names and values. + */ + state = pDefault; + for (j = 0; my_blob[j] != '\0'; ++j) { + switch (state) { + case pDefault: + switch (my_blob[j]) { + case '\\': + state = pEscaped; + break; + case ':': + my_blob[j] = '\0'; + if (my_blob[j + 1] != '\0' && my_blob[j + 1] != ':') + state = pName; + break; + case ' ': + break; + default: + break; + } + case pEscaped: + break; + case pName: + state = pDefault; + /* + * Commented-out capabilities might be accessible (they are in + * ncurses). + */ + if (my_blob[j] == '.' && my_blob[j + 1] == '.') { + j += 2; + } + if (my_blob[j + 1] != '\0') { + switch (my_blob[j + 2]) { + case '#': + my_numvalues[count_nums] = &my_blob[j + 3]; + my_numcodes[count_nums++] = &my_blob[j]; + my_blob[j + 2] = '\0'; + state = pNumber; + j += 2; + break; + case '=': + my_strvalues[count_strs] = &my_blob[j + 3]; + my_strcodes[count_strs++] = &my_blob[j]; + my_blob[j + 2] = '\0'; + state = pString; + j += 2; + break; + default: + if (my_blob[j + 2] == '@') { + /* + * We cannot get the type for a cancelled item + * directly, but can infer it assuming the input + * came from infocmp, which puts the data in a + * known order. + */ + if (count_strs) { + my_strvalues[count_strs] = empty; + my_strcodes[count_strs++] = &my_blob[j]; + } else if (count_nums) { + my_numvalues[count_nums] = empty; + my_numcodes[count_nums++] = &my_blob[j]; + } else { + my_boolcodes[count_bools++] = &my_blob[j]; + } + } else { + my_boolcodes[count_bools++] = &my_blob[j]; + } + j++; + break; + } + } + break; + case pNumber: + if (!isdigit(UChar(my_blob[j]))) { + --j; + state = pDefault; + } + break; + case pString: + switch (my_blob[j]) { + case '\\': + if (my_blob[j + 1] == '\0') { + state = pDefault; + continue; + } else { + ++j; + } + break; + case '\n': + state = pNewline; + continue; + case ':': + --j; + state = pDefault; + break; + } + break; + case pNewline: + case pComment: + case pDescription: + default: + break; + } + } + my_boolcodes[count_bools] = 0; + my_numcodes[count_nums] = 0; + my_numvalues[count_nums] = 0; + my_strcodes[count_strs] = 0; + my_strvalues[count_strs] = 0; + +#if 0 + printf("bools:%d\n", (int) count_bools); + for (j = 0; my_boolcodes[j]; ++j) + printf("%5d:%s\n", (int) j, my_boolcodes[j]); + + printf("numbers:%d\n", (int) count_nums); + for (j = 0; my_numcodes[j]; ++j) + printf("%5d:%s(%s)\n", (int) j, my_numcodes[j], my_numvalues[j]); + + printf("strings:%d\n", (int) count_strs); + for (j = 0; my_strcodes[j]; ++j) + printf("%5d:%s(%s)\n", (int) j, my_strcodes[j], my_strvalues[j]); +#endif +} + +#if USE_CODE_LISTS +static char ** +copy_code_list(NCURSES_CONST char *const *list) +{ + int pass; + size_t count; + size_t length = 1; + char **result = 0; + char *unused = 0; + + for (pass = 0; pass < 2; ++pass) { + for (count = 0; list[count] != 0; ++count) { + size_t chunk = strlen(list[count]) + 1; + if (pass == 0) { + length += chunk; + } else { + result[count] = unused; + _nc_STRCPY(unused, list[count], length); + unused += chunk; + } + } + if (pass == 0) { + char *blob = malloc(length); + result = typeCalloc(char *, count + 1); + unused = blob; + if (blob == 0 || result == 0) + failed("copy_code_list failed"); + } + } + + return result; +} + +#if NO_LEAKS +static void +free_code_list(char **list) +{ + if (list) { + free(list[0]); + free(list); + } +} +#endif /* NO_LEAKS */ +#endif /* USE_CODE_LISTS */ + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: demo_termcap [options] [terminal]", + "", + "If no options are given, print all (boolean, numeric, string)", + "capabilities for the given terminal, using short names.", + "", + "Options:", + " -a try all names, print capabilities found", + " -b print boolean-capabilities", + " -d LIST colon-separated list of databases to use", + " -e NAME environment variable to set with -d option", + " -i NAME terminal description to use as names for \"-a\" option, etc.", + " -n print numeric-capabilities", + " -q quiet (prints only counts)", + " -r COUNT repeat for given count", + " -s print string-capabilities", + " -v print termcap-variables", +#ifdef NCURSES_VERSION + " -x print extended capabilities", +#endif + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int n; + char *name; + bool a_opt = FALSE; +#if defined(NCURSES_VERSION) || defined(HAVE_CURSES_DATA_OSPEED) + bool v_opt = FALSE; +#endif + char *input_name = 0; + + int repeat; + int r_opt = 1; + + while ((n = getopt(argc, argv, "abd:e:i:nqr:svxy")) != -1) { + switch (n) { + case 'a': + a_opt = TRUE; + break; + case 'b': + b_opt = TRUE; + break; + case 'd': + d_opt = optarg; + break; + case 'e': + e_opt = optarg; + break; + case 'i': + input_name = optarg; + break; + case 'n': + n_opt = TRUE; + break; + case 'q': + q_opt = TRUE; + break; + case 'r': + if ((r_opt = atoi(optarg)) <= 0) + usage(); + break; + case 's': + s_opt = TRUE; + break; +#if defined(NCURSES_VERSION) || defined(HAVE_CURSES_DATA_OSPEED) + case 'v': + v_opt = TRUE; + break; +#endif +#ifdef NCURSES_VERSION +#if NCURSES_XNAMES + case 'x': + x_opt = TRUE; + break; + case 'y': + y_opt = TRUE; + x_opt = TRUE; + break; +#endif +#endif + default: + usage(); + break; + } + } + +#if HAVE_USE_EXTENDED_NAMES + use_extended_names(x_opt); +#endif + + if (!(b_opt || n_opt || s_opt)) { + b_opt = TRUE; + n_opt = TRUE; + s_opt = TRUE; + } + + make_dblist(); + + if (a_opt) { + for (repeat = 0; repeat < r_opt; ++repeat) { + if (optind < argc) { + for (n = optind; n < argc; ++n) { + brute_force(argv[n]); + } + } else if ((name = getenv("TERM")) != 0) { + brute_force(name); + } else { + static char dumb[] = "dumb"; + brute_force(dumb); + } + } + } else { + if (input_name != 0) { + parse_description(input_name); + } +#if USE_CODE_LISTS + else { + my_boolcodes = copy_code_list(boolcodes); + my_numcodes = copy_code_list(numcodes); + my_strcodes = copy_code_list(strcodes); + } +#else + else { + failed("no capability-lists available (use -i option)"); + } +#endif /* USE_CODE_LISTS */ + for (repeat = 0; repeat < r_opt; ++repeat) { + if (optind < argc) { + for (n = optind; n < argc; ++n) { + demo_termcap(argv[n]); + } + } else if ((name = getenv("TERM")) != 0) { + demo_termcap(name); + } else { + static char dumb[] = "dumb"; + demo_termcap(dumb); + } + } + } + + printf("%ld values (%ld booleans, %ld numbers, %ld strings)\n", + total_values, total_b_values, total_n_values, total_s_values); + +#if defined(NCURSES_VERSION) || defined(HAVE_CURSES_DATA_OSPEED) + if (v_opt) { + show_number("PC", PC); + show_string("UP", UP); + show_string("BC", BC); + show_number("ospeed", (int) ospeed); + } +#endif + +#if NO_LEAKS + free_dblist(); +#if USE_CODE_LISTS + free_code_list(my_boolcodes); + free_code_list(my_numcodes); + free_code_list(my_strcodes); +#endif +#endif /* NO_LEAKS */ + + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + failed("This program requires termcap"); +} +#endif diff --git a/deps/ncurses-6.3/test/demo_terminfo.c b/deps/ncurses-6.3/test/demo_terminfo.c new file mode 100644 index 0000000..45cee39 --- /dev/null +++ b/deps/ncurses-6.3/test/demo_terminfo.c @@ -0,0 +1,954 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2009-2016,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: Thomas E. Dickey + * + * $Id: demo_terminfo.c,v 1.52 2021/03/20 16:07:29 tom Exp $ + * + * A simple demo of the terminfo interface. + */ +#define USE_TINFO +#include <test.priv.h> +#include <sys/stat.h> + +#if NCURSES_XNAMES +#if HAVE_TERM_ENTRY_H +#include <term_entry.h> +#else +#undef NCURSES_XNAMES +#define NCURSES_XNAMES 0 +#endif +#endif + +static GCC_NORETURN void failed(const char *); + +static void +failed(const char *msg) +{ + fprintf(stderr, "%s\n", msg); + ExitProgram(EXIT_FAILURE); +} + +#if HAVE_TIGETSTR + +#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) +#define USE_CODE_LISTS 1 +#else +#define USE_CODE_LISTS 0 +#endif + +static bool a_opt = FALSE; +static bool b_opt = FALSE; +static bool f_opt = FALSE; +static bool n_opt = FALSE; +static bool q_opt = FALSE; +static bool s_opt = FALSE; +#ifdef NCURSES_VERSION +static bool x_opt = FALSE; +static bool y_opt = FALSE; +#endif + +static char *d_opt; +static char *e_opt; +static char **db_list; +static int db_item; + +static char *my_blob; +static char **my_boolcodes; +static char **my_numcodes; +static char **my_numvalues; +static char **my_strcodes; +static char **my_strvalues; + +static long total_values; +static long total_b_values; +static long total_n_values; +static long total_s_values; + +#define FCOLS 8 +#define FNAME(type) "%s %-*s = ", #type, f_opt ? 24 : FCOLS + +static char * +make_dbitem(char *p, char *q) +{ + size_t need = strlen(e_opt) + 2 + (size_t) (p - q); + char *result = malloc(need); + _nc_SPRINTF(result, _nc_SLIMIT(need) "%s=%.*s", e_opt, (int) (p - q), q); + return result; +} + +static void +make_dblist(void) +{ + if (d_opt && e_opt) { + int pass; + + for (pass = 0; pass < 2; ++pass) { + char *p, *q; + size_t count = 0; + + for (p = q = d_opt; *p != '\0'; ++p) { + if (*p == ':') { + if (p != q + 1) { + if (pass) { + db_list[count] = make_dbitem(p, q); + } + count++; + } + q = p + 1; + } + } + if (p != q + 1) { + if (pass) { + db_list[count] = make_dbitem(p, q); + } + count++; + } + if (!pass) { + db_list = typeCalloc(char *, count + 1); + } + } + } +} + +static char * +next_dbitem(void) +{ + char *result = 0; + + if (db_list) { + if ((result = db_list[db_item]) == 0) { + db_item = 0; + result = db_list[0]; + } else { + db_item++; + } + } + if (result != 0) + printf("** %s\n", result); + return result; +} + +#if NO_LEAKS +static void +free_dblist(void) +{ + if (db_list) { + int n; + for (n = 0; db_list[n]; ++n) + free(db_list[n]); + free(db_list); + db_list = 0; + } +} +#endif + +static void +dumpit(NCURSES_CONST char *cap, const char *show) +{ + const char *str; + int num; + + if ((str = tigetstr(cap)) != 0 && (str != (char *) -1)) { + total_values++; + total_s_values++; + if (!q_opt) { + printf(FNAME(str), show ? show : cap); + while (*str != 0) { + int ch = UChar(*str++); + switch (ch) { + case '\177': + fputs("^?", stdout); + break; + case '\033': + fputs("\\E", stdout); + break; + case '\b': + fputs("\\b", stdout); + break; + case '\f': + fputs("\\f", stdout); + break; + case '\n': + fputs("\\n", stdout); + break; + case '\r': + fputs("\\r", stdout); + break; + case ' ': + fputs("\\s", stdout); + break; + case '\t': + fputs("\\t", stdout); + break; + case '^': + fputs("\\^", stdout); + break; + case ':': + fputs("\\072", stdout); + break; + case '\\': + fputs("\\\\", stdout); + break; + default: + if (isgraph(ch)) + fputc(ch, stdout); + else if (ch < 32) + printf("^%c", ch + '@'); + else + printf("\\%03o", ch); + break; + } + } + printf("\n"); + } + } else if ((num = tigetnum(cap)) >= 0) { + total_values++; + total_n_values++; + if (!q_opt) { + printf(FNAME(num), show ? show : cap); + printf(" %d\n", num); + } + } else if ((num = tigetflag(cap)) >= 0) { + total_values++; + total_b_values++; + if (!q_opt) { + printf(FNAME(flg), show ? show : cap); + printf("%s\n", num ? "true" : "false"); + } + } + + if (!q_opt) + fflush(stdout); +} + +#define isCapName(c) (isalnum(UChar(c)) || ((c) == '_')) +#define LegalItem(c,n) (n) + +static void +brute_force(const char *name) +{ +#define MAX_FORCE 5 /* omit "colors", since CPU-time is a problem */ + static const char legal[] = "\ +0123456789\ +ABCDEFGHIJKLMNOPQRSTUVWXYZ\ +abcdefghijklmnopqrstuvwxyz_"; + int length; + int j, k; + bool carry; + bool changed; + char cap[MAX_FORCE + 1]; + int item[MAX_FORCE + 1]; + + if (db_list) { + putenv(next_dbitem()); + } + if (!q_opt) + printf("Terminal type \"%s\"\n", name); + setupterm((NCURSES_CONST char *) name, 1, (int *) 0); + if (!q_opt) { + if (strcmp(name, ttytype)) + printf("... actual \"%s\"\n", ttytype); + } + + for (length = 1; length <= MAX_FORCE; ++length) { + /* set all digits to zeros */ + for (j = 0; j < length; ++j) { + item[j] = LegalItem(j, 0); + } + + do { + changed = FALSE; + /* copy digits to cap-name */ + for (j = 0; j < length; ++j) { + cap[j] = legal[item[j]]; + } + cap[length] = '\0'; + dumpit(cap, NULL); + + k = length - 1; + do { + carry = FALSE; + for (; k >= 0; --k) { + item[k] += 1; + if (legal[item[k]]) { + changed = TRUE; + break; + } + if (k > 0 && + legal[item[k - 1] + 1]) { + for (j = k; j < length; ++j) { + item[j] = LegalItem(j, 0); + } + carry = TRUE; + changed = TRUE; + } + } + } while (carry); + } while (changed); + } + del_curterm(cur_term); +} + +#if USE_CODE_LISTS +#define fullname(type,n) f_opt ? type##fnames[n] : cap +#else +#define fullname(type,n) cap +#endif + +static void +demo_terminfo(char *name) +{ + unsigned n; + NCURSES_CONST char *cap; + + if (db_list) { + putenv(next_dbitem()); + } + if (!q_opt) + printf("Terminal type \"%s\"\n", name); + setupterm(name, 1, (int *) 0); + + if (b_opt) { + for (n = 0;; ++n) { + cap = my_boolcodes[n]; + if (cap == 0) + break; + dumpit(cap, fullname(bool, n)); + } + } + + if (n_opt) { + for (n = 0;; ++n) { + cap = my_numcodes[n]; + if (cap == 0) + break; + dumpit(cap, fullname(num, n)); + } + } + + if (s_opt) { + for (n = 0;; ++n) { + cap = my_strcodes[n]; + if (cap == 0) + break; + dumpit(cap, fullname(str, n)); + } + } +#ifdef NCURSES_VERSION + if (x_opt && (my_blob == 0)) { + if (y_opt) { +#if NCURSES_XNAMES + TERMTYPE *term = (TERMTYPE *) cur_term; + if (term != 0 + && ((NUM_BOOLEANS(term) != BOOLCOUNT) + || (NUM_NUMBERS(term) != NUMCOUNT) + || (NUM_STRINGS(term) != STRCOUNT))) { + for (n = BOOLCOUNT; n < NUM_BOOLEANS(term); ++n) { + dumpit(ExtBoolname(term, (int) n, boolnames), NULL); + } + for (n = NUMCOUNT; n < NUM_NUMBERS(term); ++n) { + dumpit(ExtNumname(term, (int) n, numnames), NULL); + } + for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) { + dumpit(ExtStrname(term, (int) n, strnames), NULL); + } + } +#endif + } else { + char temp[80]; + static const char *xterm_keys[] = + { + "kDC", "kDN", "kEND", "kHOM", "kIC", + "kLFT", "kNXT", "kPRV", "kRIT", "kUP", + }; + for (n = 0; n < SIZEOF(xterm_keys); ++n) { + int mod; + for (mod = 0; mod < 8; ++mod) { + if (mod == 0) { + /* these happen to be standard - avoid duplicates */ + if (!strcmp(xterm_keys[n], "kDC") || + !strcmp(xterm_keys[n], "kEND") || + !strcmp(xterm_keys[n], "kHOM") || + !strcmp(xterm_keys[n], "kLFT") || + !strcmp(xterm_keys[n], "kRIT")) { + continue; + } + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "%.*s", 8, xterm_keys[n]); + } else { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "%.*s%d", 8, xterm_keys[n], mod); + } + dumpit(temp, NULL); + } + } + } + } +#endif + del_curterm(cur_term); +} + +typedef enum { + pDefault = 0 + ,pComment + ,pDescription + ,pEscaped + ,pNewline + ,pName + ,pNumber + ,pString +} STATE; + +static void +parse_description(const char *input_name) +{ + static char empty[1]; + + FILE *fp; + struct stat sb; + size_t count_bools = 0; + size_t count_nums = 0; + size_t count_strs = 0; + size_t len; + size_t j, k, jl; + STATE state; + + if (stat(input_name, &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG) { + failed("input is not a file"); + } + + if (sb.st_size == 0) { + failed("input is empty"); + } + + /* + * None of the arrays could be larger than the input-file, and since it + * is small, just allocate the maximum for simplicity. + */ + if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0 || + (my_boolcodes = typeCalloc(char *, sb.st_size)) == 0 || + (my_numcodes = typeCalloc(char *, sb.st_size)) == 0 || + (my_numvalues = typeCalloc(char *, sb.st_size)) == 0 || + (my_strcodes = typeCalloc(char *, sb.st_size)) == 0 || + (my_strvalues = typeCalloc(char *, sb.st_size)) == 0) { + failed("cannot allocate memory for input-file"); + } + + if ((fp = fopen(input_name, "r")) == 0) + failed("cannot open input-file"); + len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp); + my_blob[sb.st_size] = '\0'; + fclose(fp); + + /* + * First, get rid of comments and escaped newlines, as well as repeated + * colons to construct a canonical entry. + */ + state = pNewline; + for (j = k = 0; j < len; ++j) { + int ch = my_blob[j]; + if (ch == '\t') { + ch = ' '; + } + switch (state) { + case pNewline: + if (ch == ' ') { + continue; + } + if (ch == '#') { + state = pComment; + continue; + } + state = pDefault; + /* FALLTHRU */ + case pDefault: + switch (ch) { + case '|': + state = pDescription; + continue; + case '\\': + state = pEscaped; + continue; + case '\n': + state = pNewline; + continue; + case ' ': + break; + case ',': + my_blob[k++] = (char) ch; + break; + default: + if (isalpha(UChar(ch))) + state = pName; + else + fprintf(stderr, "OOPS @%d:%.20s\n", __LINE__, my_blob + j); + my_blob[k++] = (char) ch; + break; + } + break; + case pComment: + if (ch == '\n') + state = pNewline; + break; + case pDescription: + switch (ch) { + case ',': + state = pDefault; + break; + case '\n': + state = pNewline; + break; + } + break; + case pEscaped: + if (ch != '\n') { + my_blob[k++] = (char) ch; + state = pDefault; + } else { + state = pNewline; + } + break; + case pName: + switch (ch) { + case '\n': + state = pNewline; + continue; + case ' ': + case ',': + state = pDefault; + break; + case '#': + state = pNumber; + break; + case '=': + state = pString; + break; + case '|': + state = pDescription; + continue; + } + my_blob[k++] = (char) ch; + break; + case pNumber: + switch (ch) { + case '\n': + state = pNewline; + continue; + case ',': + state = pDefault; + break; + case ' ': + state = pDefault; + continue; + } + my_blob[k++] = (char) ch; + break; + case pString: + switch (ch) { + case '\n': + state = pNewline; + break; + case ',': + state = pDefault; + my_blob[k++] = (char) ch; + break; + default: + my_blob[k++] = (char) ch; + break; + } + break; + default: + /* not used */ + break; + } + } + my_blob[k] = '\0'; + + /* + * Then, parse what's left, making indexes of the names and values. + */ + state = pDefault; + for (j = 0; my_blob[j] != '\0'; ++j) { + switch (state) { + case pDefault: + switch (my_blob[j]) { + case '\\': + state = pEscaped; + break; + case ',': + my_blob[j] = '\0'; + if (my_blob[j + 1] != '\0' && my_blob[j + 1] != ',') + state = pName; + break; + case ' ': + break; + default: + break; + } + case pEscaped: + break; + case pName: + state = pDefault; + if (isalpha(UChar(my_blob[j]))) { + for (jl = 1; isalnum(UChar(my_blob[j + jl])); ++jl) { + ; + } + } else { + jl = 0; + } + if (jl != 0) { + switch (my_blob[j + jl]) { + case '#': + my_numvalues[count_nums] = &my_blob[j + jl + 1]; + my_numcodes[count_nums++] = &my_blob[j]; + my_blob[j + jl] = '\0'; + state = pNumber; + j += jl; + break; + case '=': + my_strvalues[count_strs] = &my_blob[j + jl + 1]; + my_strcodes[count_strs++] = &my_blob[j]; + my_blob[j + jl] = '\0'; + state = pString; + j += jl; + break; + default: + if (my_blob[j + jl] == '@') { + /* + * We cannot get the type for a cancelled item + * directly, but can infer it assuming the input + * came from infocmp, which puts the data in a + * known order. + */ + if (count_strs) { + my_strvalues[count_strs] = empty; + my_strcodes[count_strs++] = &my_blob[j]; + } else if (count_nums) { + my_numvalues[count_nums] = empty; + my_numcodes[count_nums++] = &my_blob[j]; + } else { + my_boolcodes[count_bools++] = &my_blob[j]; + } + my_blob[j + jl] = '\0'; + j += jl + 1; + } else { + my_boolcodes[count_bools++] = &my_blob[j]; + my_blob[j + jl] = '\0'; + j += jl; + } + state = (isCapName(my_blob[j + 1]) + ? pName + : pDefault); + break; + } + } + break; + case pNumber: + if (!isdigit(UChar(my_blob[j]))) { + --j; + state = pDefault; + } + break; + case pString: + switch (my_blob[j]) { + case '\\': + if (my_blob[j + 1] != '\0') { + ++j; + } else { + --j; + state = pDefault; + } + break; + case ',': + --j; + state = pDefault; + break; + } + break; + case pNewline: + case pComment: + case pDescription: + default: + break; + } + } + my_boolcodes[count_bools] = 0; + my_numcodes[count_nums] = 0; + my_numvalues[count_nums] = 0; + my_strcodes[count_strs] = 0; + my_strvalues[count_strs] = 0; + +#if 0 + printf("# bools:%d\n", (int) count_bools); + for (j = 0; my_boolcodes[j]; ++j) + printf("\t%s,\n", my_boolcodes[j]); + + printf("# numbers:%d\n", (int) count_nums); + for (j = 0; my_numcodes[j]; ++j) + printf("\t%s#%s,\n", my_numcodes[j], my_numvalues[j]); + + printf("# strings:%d\n", (int) count_strs); + for (j = 0; my_strcodes[j]; ++j) + printf("\t%s=%s,\n", my_strcodes[j], my_strvalues[j]); +#endif +} + +#if USE_CODE_LISTS +static char ** +copy_code_list(NCURSES_CONST char *const *list) +{ + int pass; + size_t count; + size_t length = 1; + char **result = 0; + char *unused = 0; + + for (pass = 0; pass < 2; ++pass) { + for (count = 0; list[count] != 0; ++count) { + size_t chunk = strlen(list[count]) + 1; + if (pass == 0) { + length += chunk; + } else { + result[count] = unused; + _nc_STRCPY(unused, list[count], length); + unused += chunk; + } + } + if (pass == 0) { + char *blob = malloc(length); + result = typeCalloc(char *, count + 1); + unused = blob; + if (blob == 0 || result == 0) + failed("copy_code_list failed"); + } + } + + return result; +} + +#if NO_LEAKS +static void +free_code_list(char **list) +{ + if (list) { + free(list[0]); + free(list); + } +} +#endif +#endif /* USE_CODE_LISTS */ + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: demo_terminfo [options] [terminal]", + "", + "If no options are given, print all (boolean, numeric, string)", + "capabilities for the given terminal, using short names.", + "", + "Options:", + " -a try all names, print capabilities found", + " -b print boolean-capabilities", + " -d LIST colon-separated list of databases to use", + " -e NAME environment variable to set with -d option", + " -f print full names", + " -i NAME terminal description to use as names for \"-a\" option", + " -n print numeric-capabilities", + " -q quiet (prints only counts)", + " -r COUNT repeat for given count", + " -s print string-capabilities", +#ifdef NCURSES_VERSION + " -x print extended capabilities", + " -y direct-lookup names of extended capabilities", +#endif + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int n; + int repeat; + char *name; + int r_opt = 1; + char *input_name = 0; + + while ((n = getopt(argc, argv, "abd:e:fi:nqr:sxy")) != -1) { + switch (n) { + case 'a': + a_opt = TRUE; + break; + case 'b': + b_opt = TRUE; + break; + case 'd': + d_opt = optarg; + break; + case 'e': + e_opt = optarg; + break; + case 'f': + f_opt = TRUE; + break; + case 'i': + input_name = optarg; + break; + case 'n': + n_opt = TRUE; + break; + case 'q': + q_opt = TRUE; + break; + case 'r': + if ((r_opt = atoi(optarg)) <= 0) + usage(); + break; + case 's': + s_opt = TRUE; + break; + case 'x': +#ifdef NCURSES_VERSION + x_opt = TRUE; +#endif + break; +#ifdef NCURSES_VERSION + case 'y': + y_opt = TRUE; + x_opt = TRUE; + break; +#endif + default: + usage(); + break; + } + } + +#if HAVE_USE_EXTENDED_NAMES + use_extended_names(x_opt); +#endif + + if (!(b_opt || n_opt || s_opt)) { + b_opt = TRUE; + n_opt = TRUE; + s_opt = TRUE; + } + + make_dblist(); + + if (a_opt) { + for (repeat = 0; repeat < r_opt; ++repeat) { + if (optind < argc) { + for (n = optind; n < argc; ++n) { + brute_force(argv[n]); + } + } else if ((name = getenv("TERM")) != 0) { + brute_force(name); + } else { + static char dumb[] = "dumb"; + brute_force(dumb); + } + } + } else { + if (input_name != 0) { + parse_description(input_name); + } +#if USE_CODE_LISTS + else { + my_boolcodes = copy_code_list(boolnames); + my_numcodes = copy_code_list(numnames); + my_strcodes = copy_code_list(strnames); + } +#else + else { + failed("no capability-lists available (use -i option)"); + } +#endif /* USE_CODE_LISTS */ + for (repeat = 0; repeat < r_opt; ++repeat) { + if (optind < argc) { + for (n = optind; n < argc; ++n) { + demo_terminfo(argv[n]); + } + } else if ((name = getenv("TERM")) != 0) { + demo_terminfo(name); + } else { + static char dumb[] = "dumb"; + demo_terminfo(dumb); + } + } + } + +#define PLURAL(n) n, (n != 1) ? "s" : "" + printf("%ld value%s (%ld boolean%s, %ld number%s, %ld string%s)\n", + PLURAL(total_values), + PLURAL(total_b_values), + PLURAL(total_n_values), + PLURAL(total_s_values)); + +#if NO_LEAKS + free_dblist(); + if (input_name != 0) { + if (my_blob != 0) { + free(my_blob); + free(my_boolcodes); + free(my_numcodes); + free(my_numvalues); + free(my_strcodes); + free(my_strvalues); + } + } +#if USE_CODE_LISTS + else { + free_code_list(my_boolcodes); + free_code_list(my_numcodes); + free_code_list(my_strcodes); + } +#endif +#endif /* NO_LEAKS */ + + ExitProgram(EXIT_SUCCESS); +} + +#else /* !HAVE_TIGETSTR */ +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + failed("This program requires the terminfo functions such as tigetstr"); + ExitProgram(EXIT_FAILURE); +} +#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-5.9/test/ditto.c b/deps/ncurses-6.3/test/ditto.c similarity index 91% rename from deps/ncurses-5.9/test/ditto.c rename to deps/ncurses-6.3/test/ditto.c index 636a6ee..fdc8611 100644 --- a/deps/ncurses-5.9/test/ditto.c +++ b/deps/ncurses-6.3/test/ditto.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -29,7 +30,7 @@ /* * Author: Thomas E. Dickey (1998-on) * - * $Id: ditto.c,v 1.40 2010/11/14 01:06:47 tom Exp $ + * $Id: ditto.c,v 1.52 2021/08/15 20:07:11 tom Exp $ * * The program illustrates how to set up multiple screens from a single * program. @@ -44,6 +45,8 @@ #include <test.priv.h> #include <sys/stat.h> +#if HAVE_DELSCREEN + #ifdef USE_PTHREADS #include <pthread.h> #endif @@ -80,6 +83,7 @@ typedef struct { int which1; /* this screen's index in DITTO[] array */ int length; /* length of windows[] and peeks[] */ char **titles; /* per-window titles */ + WINDOW **parents; /* display boxes around each screen's data */ WINDOW **windows; /* display data from each screen */ PEEK *peeks; /* indices for each screen's fifo */ FIFO fifo; /* fifo for this screen */ @@ -98,6 +102,9 @@ typedef struct { DITTO *ditto; /* data for all screens */ } DDATA; +static GCC_NORETURN void failed(const char *); +static GCC_NORETURN void usage(void); + static void failed(const char *s) { @@ -108,7 +115,7 @@ failed(const char *s) static void usage(void) { - fprintf(stderr, "usage: ditto [terminal1 ...]\n"); + fprintf(stderr, "Usage: ditto [terminal1 ...]\n"); ExitProgram(EXIT_FAILURE); } @@ -151,6 +158,10 @@ open_tty(char *path) int aslave; char slave_name[1024]; char s_option[sizeof(slave_name) + 80]; + const char *xterm_prog = 0; + + if ((xterm_prog = getenv("XTERM_PROG")) == 0) + xterm_prog = "xterm"; if (openpty(&amaster, &aslave, slave_name, 0, 0) != 0 || strlen(slave_name) > sizeof(slave_name) - 1) @@ -159,9 +170,10 @@ open_tty(char *path) errno = EISDIR; failed(slave_name); } - sprintf(s_option, "-S%s/%d", slave_name, aslave); + _nc_SPRINTF(s_option, _nc_SLIMIT(sizeof(s_option)) + "-S%s/%d", slave_name, aslave); if (fork()) { - execlp("xterm", "xterm", s_option, "-title", path, (char *) 0); + execlp(xterm_prog, xterm_prog, s_option, "-title", path, (char *) 0); _exit(0); } fp = fdopen(amaster, "r+"); @@ -170,7 +182,7 @@ open_tty(char *path) #else struct stat sb; - if (stat(path, &sb) < 0) + if (stat(path, &sb) == -1) failed(path); if ((sb.st_mode & S_IFMT) != S_IFCHR) { errno = ENOTTY; @@ -185,7 +197,7 @@ open_tty(char *path) return fp; } -static void +static int init_screen( #if HAVE_USE_WINDOW SCREEN *sp GCC_UNUSED, @@ -201,6 +213,7 @@ init_screen( scrollok(stdscr, TRUE); box(stdscr, 0, 0); + target->parents = typeCalloc(WINDOW *, (size_t) target->length); target->windows = typeCalloc(WINDOW *, (size_t) target->length); target->peeks = typeCalloc(PEEK, (size_t) target->length); @@ -220,9 +233,11 @@ init_screen( nodelay(inner, TRUE); #endif + target->parents[k] = outer; target->windows[k] = inner; } doupdate(); + return TRUE; } static void @@ -338,7 +353,6 @@ static void * handle_screen(void *arg) { DDATA ddata; - int ch; memset(&ddata, 0, sizeof(ddata)); ddata.ditto = (DITTO *) arg; @@ -346,7 +360,7 @@ handle_screen(void *arg) ddata.ditto -= ddata.source; /* -> base of array */ for (;;) { - ch = read_screen(ddata.ditto->screen, &ddata); + int ch = read_screen(ddata.ditto->screen, &ddata); if (ch == CTRL('D')) { int later = (ddata.source ? ddata.source : -1); int j; @@ -439,3 +453,11 @@ main(int argc, char *argv[]) } ExitProgram(EXIT_SUCCESS); } +#else +int +main(void) +{ + printf("This program requires the curses delscreen function\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/dots.c b/deps/ncurses-6.3/test/dots.c new file mode 100644 index 0000000..94d90a1 --- /dev/null +++ b/deps/ncurses-6.3/test/dots.c @@ -0,0 +1,245 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1999-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. * + ****************************************************************************/ + +/* + * Author: Thomas E. Dickey <dickey@clark.net> 1999 + * + * $Id: dots.c,v 1.40 2020/05/29 23:04:02 tom Exp $ + * + * A simple demo of the terminfo interface. + */ +#define USE_TINFO +#include <test.priv.h> + +#if HAVE_SETUPTERM + +#include <time.h> + +static bool interrupted = FALSE; +static long total_chars = 0; +static time_t started; + +static +TPUTS_PROTO(outc, c) +{ + int rc = c; + + if (interrupted) { + char tmp = (char) c; + if (write(STDOUT_FILENO, &tmp, (size_t) 1) == -1) + rc = EOF; + } else { + rc = putc(c, stdout); + } + TPUTS_RETURN(rc); +} + +static bool +outs(const char *s) +{ + if (VALID_STRING(s)) { + tputs(s, 1, outc); + return TRUE; + } + return FALSE; +} + +static void +cleanup(void) +{ + outs(exit_attribute_mode); + if (!outs(orig_colors)) + outs(orig_pair); + outs(clear_screen); + outs(cursor_normal); + + fflush(stdout); + fprintf(stderr, "\n\n%ld total cells, rate %.2f/sec\n", + total_chars, + ((double) (total_chars) / (double) (time((time_t *) 0) - started))); +} + +static void +onsig(int n GCC_UNUSED) +{ + interrupted = TRUE; +} + +static double +ranf(void) +{ + long r = (rand() & 077777); + return ((double) r / 32768.); +} + +static int +get_number(NCURSES_CONST char *cap, int map) +{ + int result = map; + if (cap != 0) { + int check = tigetnum(cap); + if (check > 0) + result = check; + } + return result; +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: dots [options]" + ,"" + ,"Options:" + ," -T TERM override $TERM" +#if HAVE_USE_ENV + ," -e allow environment $LINES / $COLUMNS" +#endif + ," -f use tigetnum rather than <term.h> mapping" + ," -m SIZE set margin (default: 2)" + ," -r SECS self-interrupt/exit after specified number of seconds" + ," -s MSECS delay 1% of the time (default: 1 msecs)" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, + char *argv[]) +{ + int ch; + double r; + double c; + int my_colors; + int f_option = 0; + int m_option = 2; + int r_option = 0; + int s_option = 1; + size_t need; + char *my_env; + + while ((ch = getopt(argc, argv, "T:efm:r:s:")) != -1) { + switch (ch) { + case 'T': + need = 6 + strlen(optarg); + my_env = malloc(need); + _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg); + putenv(my_env); + break; +#if HAVE_USE_ENV + case 'e': + use_env(TRUE); + break; +#endif + case 'f': + f_option = 1; + break; + case 'm': + m_option = atoi(optarg); + break; + case 'r': + r_option = atoi(optarg); + break; + case 's': + s_option = atoi(optarg); + break; + default: + usage(); + break; + } + } + + SetupAlarm(r_option); + InitAndCatch(setupterm((char *) 0, 1, (int *) 0), onsig); + + srand((unsigned) time(0)); + + outs(clear_screen); + outs(cursor_invisible); + +#define GetNumber(ln,sn) get_number(f_option ? #sn : 0, ln) + my_colors = GetNumber(max_colors, colors); + if (my_colors > 1) { + if (!VALID_STRING(set_a_foreground) + || !VALID_STRING(set_a_background) + || (!VALID_STRING(orig_colors) && !VALID_STRING(orig_pair))) + my_colors = -1; + } + + r = (double) (GetNumber(lines, lines) - (m_option * 2)); + c = (double) (GetNumber(columns, cols) - (m_option * 2)); + started = time((time_t *) 0); + + while (!interrupted) { + int x = (int) (c * ranf()) + m_option; + int y = (int) (r * ranf()) + m_option; + int p = (ranf() > 0.9) ? '*' : ' '; + + tputs(tparm3(cursor_address, y, x), 1, outc); + if (my_colors > 0) { + int z = (int) (ranf() * my_colors); + if (ranf() > 0.01) { + tputs(tparm2(set_a_foreground, z), 1, outc); + } else { + tputs(tparm2(set_a_background, z), 1, outc); + if (s_option) + napms(s_option); + } + } else if (VALID_STRING(exit_attribute_mode) + && VALID_STRING(enter_reverse_mode)) { + if (ranf() <= 0.01) { + outs((ranf() > 0.6) + ? enter_reverse_mode + : exit_attribute_mode); + if (s_option) + napms(s_option); + } + } + outc(p); + fflush(stdout); + ++total_chars; + } + cleanup(); + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + fprintf(stderr, "This program requires terminfo\n"); + exit(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/dots_curses.c b/deps/ncurses-6.3/test/dots_curses.c new file mode 100644 index 0000000..95ddb93 --- /dev/null +++ b/deps/ncurses-6.3/test/dots_curses.c @@ -0,0 +1,229 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 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: Thomas E. Dickey + * + * $Id: dots_curses.c,v 1.21 2020/08/29 16:22:03 juergen Exp $ + * + * A simple demo of the curses interface used for comparison with termcap. + */ +#include <test.priv.h> + +#if !defined(_NC_WINDOWS) +#include <sys/time.h> +#endif + +#include <time.h> + +static bool interrupted = FALSE; +static long total_chars = 0; +static time_t started; + +static void +cleanup(void) +{ + endwin(); + + fflush(stdout); + fprintf(stderr, "\n\n%ld total cells, rate %.2f/sec\n", + total_chars, + ((double) (total_chars) / (double) (time((time_t *) 0) - started))); +} + +static void +onsig(int n GCC_UNUSED) +{ + interrupted = TRUE; +} + +static double +ranf(void) +{ + long r = (rand() & 077777); + return ((double) r / 32768.); +} + +static int +mypair(int fg, int bg) +{ + int pair = (fg * COLORS) + bg; + return (pair >= COLOR_PAIRS) ? -1 : pair; +} + +static void +set_colors(int fg, int bg) +{ + int pair = mypair(fg, bg); + if (pair > 0) { + attron(COLOR_PAIR(mypair(fg, bg))); + } +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: dots_curses [options]" + ,"" + ,"Options:" + ," -T TERM override $TERM" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors()" +#endif +#if HAVE_USE_ENV + ," -e allow environment $LINES / $COLUMNS" +#endif + ," -m SIZE set margin (default: 2)" + ," -r SECS self-interrupt/exit after specified number of seconds" + ," -s MSECS delay 1% of the time (default: 1 msecs)" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int ch; + int fg, bg; + double r; + double c; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif + int m_option = 2; + int r_option = 0; + int s_option = 1; + size_t need; + char *my_env; + + while ((ch = getopt(argc, argv, "T:dem:r:s:")) != -1) { + switch (ch) { + case 'T': + need = 6 + strlen(optarg); + my_env = malloc(need); + _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg); + putenv(my_env); + break; +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif +#if HAVE_USE_ENV + case 'e': + use_env(TRUE); + break; +#endif + case 'm': + m_option = atoi(optarg); + break; + case 'r': + r_option = atoi(optarg); + break; + case 's': + s_option = atoi(optarg); + break; + default: + usage(); + break; + } + } + + srand((unsigned) time(0)); + + SetupAlarm(r_option); + InitAndCatch(initscr(), onsig); + + if (has_colors()) { + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (d_option) + use_default_colors(); +#endif + for (fg = 0; fg < COLORS; fg++) { + for (bg = 0; bg < COLORS; bg++) { + int pair; + if (interrupted) { + cleanup(); + ExitProgram(EXIT_FAILURE); + } + pair = mypair(fg, bg); + if (pair > 0) + init_pair((short) pair, (short) fg, (short) bg); + } + } + } + + r = (double) (LINES - (m_option * 2)); + c = (double) (COLS - (m_option * 2)); + started = time((time_t *) 0); + + fg = COLOR_WHITE; + bg = COLOR_BLACK; + while (!interrupted) { + int x = (int) (c * ranf()) + m_option; + int y = (int) (r * ranf()) + m_option; + int p = (ranf() > 0.9) ? '*' : ' '; + + move(y, x); + if (has_colors()) { + int z = (int) (ranf() * COLORS); + if (ranf() > 0.01) { + set_colors(fg = z, bg); + attron(COLOR_PAIR(mypair(fg, bg))); + } else { + set_colors(fg, bg = z); + if (s_option) + napms(s_option); + } + } else { + if (ranf() <= 0.01) { + if (ranf() > 0.6) { + attron(A_REVERSE); + } else { + attroff(A_REVERSE); + } + if (s_option) + napms(s_option); + } + } + AddCh(p); + refresh(); + ++total_chars; + } + cleanup(); + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-6.3/test/dots_mvcur.c b/deps/ncurses-6.3/test/dots_mvcur.c new file mode 100644 index 0000000..a032124 --- /dev/null +++ b/deps/ncurses-6.3/test/dots_mvcur.c @@ -0,0 +1,262 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2007-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. * + ****************************************************************************/ + +/* + * Author: Thomas E. Dickey - 2007 + * + * $Id: dots_mvcur.c,v 1.26 2020/05/29 23:04:02 tom Exp $ + * + * A simple demo of the terminfo interface, and mvcur. + */ +#define USE_TINFO +#include <test.priv.h> + +#if HAVE_SETUPTERM + +#include <time.h> + +static bool interrupted = FALSE; +static long total_chars = 0; +static time_t started; + +static +TPUTS_PROTO(outc, c) +{ + int rc = c; + + if (interrupted) { + char tmp = (char) c; + if (write(STDOUT_FILENO, &tmp, (size_t) 1) == -1) + rc = EOF; + } else { + if (putc(c, stdout) == EOF) + rc = EOF; + } + TPUTS_RETURN(rc); +} + +static bool +outs(const char *s) +{ + if (VALID_STRING(s)) { + tputs(s, 1, outc); + return TRUE; + } + return FALSE; +} + +static void +cleanup(void) +{ + outs(exit_attribute_mode); + if (!outs(orig_colors)) + outs(orig_pair); + outs(clear_screen); + outs(cursor_normal); + + fflush(stdout); + fprintf(stderr, "\n\n%ld total cells, rate %.2f/sec\n", + total_chars, + ((double) (total_chars) / (double) (time((time_t *) 0) - started))); +} + +static void +onsig(int n GCC_UNUSED) +{ + interrupted = TRUE; +} + +static double +ranf(void) +{ + long r = (rand() & 077777); + return ((double) r / 32768.); +} + +static int +get_number(NCURSES_CONST char *cap, int map) +{ + int result = map; + if (cap != 0) { + int check = tigetnum(cap); + if (check > 0) + result = check; + } + return result; +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: dots_termcap [options]" + ,"" + ,"Options:" + ," -T TERM override $TERM" +#if HAVE_USE_ENV + ," -e allow environment $LINES / $COLUMNS" +#endif + ," -f use tigetnum rather than <term.h> mapping" + ," -m SIZE set margin (default: 2)" + ," -r SECS self-interrupt/exit after specified number of seconds" + ," -s MSECS delay 1% of the time (default: 1 msecs)" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + int x0 = 1, y0 = 1; + int ch; + double r; + double c; + SCREEN *sp; + int my_colors; + int f_option = 0; + int m_option = 2; + int r_option = 0; + int s_option = 1; + size_t need; + char *my_env; + + while ((ch = getopt(argc, argv, "T:efm:r:s:")) != -1) { + switch (ch) { + case 'T': + need = 6 + strlen(optarg); + my_env = malloc(need); + _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg); + putenv(my_env); + break; +#if HAVE_USE_ENV + case 'e': + use_env(TRUE); + break; +#endif + case 'f': + f_option = 1; + break; + case 'm': + m_option = atoi(optarg); + break; + case 'r': + r_option = atoi(optarg); + break; + case 's': + s_option = atoi(optarg); + break; + default: + usage(); + break; + } + } + + SetupAlarm(r_option); + InitAndCatch((sp = newterm((char *) 0, stdout, stdin)), onsig); + refresh(); /* needed with Solaris curses to cancel endwin */ + + if (sp == 0) { + fprintf(stderr, "Cannot initialize terminal\n"); + ExitProgram(EXIT_FAILURE); + } + + srand((unsigned) time(0)); + + outs(clear_screen); + outs(cursor_home); + outs(cursor_invisible); + +#define GetNumber(ln,sn) get_number(f_option ? #sn : 0, ln) + my_colors = GetNumber(max_colors, colors); + if (my_colors > 1) { + if (!VALID_STRING(set_a_foreground) + || !VALID_STRING(set_a_background) + || (!VALID_STRING(orig_colors) && !VALID_STRING(orig_pair))) + my_colors = -1; + } + + r = (double) (GetNumber(lines, lines) - (m_option * 2)); + c = (double) (GetNumber(columns, cols) - (m_option * 2)); + started = time((time_t *) 0); + + while (!interrupted) { + int x = (int) (c * ranf()) + m_option; + int y = (int) (r * ranf()) + m_option; + int p = (ranf() > 0.9) ? '*' : ' '; + + if (mvcur(y0, x0, y, x) != ERR) { + x0 = x; + y0 = y; + } + + if (my_colors > 0) { + int z = (int) (ranf() * my_colors); + if (ranf() > 0.01) { + tputs(tparm2(set_a_foreground, z), 1, outc); + } else { + tputs(tparm2(set_a_background, z), 1, outc); + if (s_option) + napms(s_option); + } + } else if (VALID_STRING(exit_attribute_mode) + && VALID_STRING(enter_reverse_mode)) { + if (ranf() <= 0.01) { + outs((ranf() > 0.6) + ? enter_reverse_mode + : exit_attribute_mode); + if (s_option) + napms(s_option); + } + } + outc(p); + ++x0; + fflush(stdout); + ++total_chars; + } + cleanup(); + endwin(); + delscreen(sp); + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + fprintf(stderr, "This program requires terminfo\n"); + exit(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/dots_termcap.c b/deps/ncurses-6.3/test/dots_termcap.c new file mode 100644 index 0000000..5e4c17d --- /dev/null +++ b/deps/ncurses-6.3/test/dots_termcap.c @@ -0,0 +1,328 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2013-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: Thomas E. Dickey + * + * $Id: dots_termcap.c,v 1.26 2020/09/05 17:58:47 juergen Exp $ + * + * A simple demo of the termcap interface. + */ +#define USE_TINFO +#include <test.priv.h> + +#if !defined(_NC_WINDOWS) +#include <sys/time.h> +#endif + +#if HAVE_TGETENT + +#include <time.h> + +static bool interrupted = FALSE; +static long total_chars = 0; +static time_t started; + +static char *t_AB; +static char *t_AF; +static char *t_cl; +static char *t_cm; +static char *t_me; +static char *t_mr; +static char *t_oc; +static char *t_op; +static char *t_ve; +static char *t_vi; + +static struct { + NCURSES_CONST char *name; + char **value; +} my_caps[] = { + + { + "AB", &t_AB + }, + { + "AF", &t_AF + }, + { + "cl", &t_cl + }, + { + "cm", &t_cm + }, + { + "me", &t_me + }, + { + "mr", &t_mr + }, + { + "oc", &t_oc + }, + { + "op", &t_op + }, + { + "ve", &t_ve + }, + { + "vi", &t_vi + }, +}; + +static +TPUTS_PROTO(outc, c) +{ + int rc = c; + + if (interrupted) { + char tmp = (char) c; + if (write(STDOUT_FILENO, &tmp, (size_t) 1) == -1) + rc = EOF; + } else { + rc = putc(c, stdout); + } + TPUTS_RETURN(rc); +} + +static bool +outs(char *s) +{ + if (VALID_STRING(s)) { + tputs(s, 1, outc); + return TRUE; + } + return FALSE; +} + +static void +cleanup(void) +{ + outs(t_me); + if (!outs(t_oc)) + outs(t_op); + outs(t_cl); + outs(t_ve); + + fflush(stdout); + fprintf(stderr, "\n\n%ld total cells, rate %.2f/sec\n", + total_chars, + ((double) (total_chars) / (double) (time((time_t *) 0) - started))); +} + +static void +onsig(int n GCC_UNUSED) +{ + interrupted = TRUE; +} + +static double +ranf(void) +{ + long r = (rand() & 077777); + return ((double) r / 32768.); +} + +static void +my_napms(int ms) +{ + if (ms > 0) { +#if defined(_NC_WINDOWS) || !HAVE_GETTIMEOFDAY + Sleep((unsigned int) ms); +#else + struct timeval data; + data.tv_sec = 0; + data.tv_usec = ms * 1000; + select(0, NULL, NULL, NULL, &data); +#endif + } +} + +static int +get_number(NCURSES_CONST char *cap, const char *env) +{ + int result = tgetnum(cap); + char *value = env ? getenv(env) : 0; + if (value != 0 && *value != 0) { + char *next = 0; + long check = strtol(value, &next, 10); + if (check > 0 && *next == '\0') + result = (int) check; + } + return result; +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: dots_termcap [options]" + ,"" + ,"Options:" + ," -T TERM override $TERM" + ," -e allow environment $LINES / $COLUMNS" + ," -m SIZE set margin (default: 2)" + ," -r SECS self-interrupt/exit after specified number of seconds" + ," -s MSECS delay 1% of the time (default: 1 msecs)" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int ch; + int num_colors; + int num_lines; + int num_columns; + int e_option = 0; + int m_option = 2; + int r_option = 0; + int s_option = 1; + double r; + double c; + char buffer[1024]; + char area[1024]; + char *name; + size_t need; + char *my_env; + + while ((ch = getopt(argc, argv, "T:em:r:s:")) != -1) { + switch (ch) { + case 'T': + need = 6 + strlen(optarg); + my_env = malloc(need); + _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg); + putenv(my_env); + break; + case 'e': + e_option = 1; + break; + case 'm': + m_option = atoi(optarg); + break; + case 'r': + r_option = atoi(optarg); + break; + case 's': + s_option = atoi(optarg); + break; + default: + usage(); + break; + } + } + + if ((name = getenv("TERM")) == 0) { + fprintf(stderr, "TERM is not set\n"); + ExitProgram(EXIT_FAILURE); + } + + srand((unsigned) time(0)); + + SetupAlarm((unsigned) r_option); + InitAndCatch(ch = tgetent(buffer, name), onsig); + if (ch < 0) { + fprintf(stderr, "terminal description not found\n"); + ExitProgram(EXIT_FAILURE); + } else { + size_t t; + char *ap = area; + for (t = 0; t < SIZEOF(my_caps); ++t) { + *(my_caps[t].value) = tgetstr((NCURSES_CONST char *) + my_caps[t].name, &ap); + } + } + + num_colors = tgetnum("Co"); +#define GetNumber(cap,env) get_number(cap, e_option ? env : 0) + num_lines = GetNumber("li", "LINES"); + num_columns = GetNumber("co", "COLUMNS"); + + outs(t_cl); + outs(t_vi); + if (num_colors > 1) { + if (!VALID_STRING(t_AF) + || !VALID_STRING(t_AB) + || (!VALID_STRING(t_oc) && !VALID_STRING(t_op))) + num_colors = -1; + } + + r = (double) (num_lines - (2 * m_option)); + c = (double) (num_columns - (2 * m_option)); + started = time((time_t *) 0); + + while (!interrupted) { + int x = (int) (c * ranf()) + m_option; + int y = (int) (r * ranf()) + m_option; + int p = (ranf() > 0.9) ? '*' : ' '; + + tputs(tgoto(t_cm, x, y), 1, outc); + if (num_colors > 0) { + int z = (int) (ranf() * num_colors); + if (ranf() > 0.01) { + tputs(tgoto(t_AF, 0, z), 1, outc); + } else { + tputs(tgoto(t_AB, 0, z), 1, outc); + if (s_option) + my_napms(s_option); + } + } else if (VALID_STRING(t_me) + && VALID_STRING(t_mr)) { + if (ranf() <= 0.01) { + outs((ranf() > 0.6) + ? t_mr + : t_me); + if (s_option) + my_napms(s_option); + } + } + outc(p); + fflush(stdout); + ++total_chars; + } + cleanup(); + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + fprintf(stderr, "This program requires termcap\n"); + exit(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/dots_xcurses.c b/deps/ncurses-6.3/test/dots_xcurses.c new file mode 100644 index 0000000..b640c2b --- /dev/null +++ b/deps/ncurses-6.3/test/dots_xcurses.c @@ -0,0 +1,277 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 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: Thomas E. Dickey + * + * $Id: dots_xcurses.c,v 1.24 2020/08/29 16:22:03 juergen Exp $ + * + * A simple demo of the wide-curses interface used for comparison with termcap. + */ +#include <test.priv.h> + +#if !defined(_NC_WINDOWS) +#include <sys/time.h> +#endif + +#include <time.h> + +#if USE_WIDEC_SUPPORT + +#if HAVE_ALLOC_PAIR +#define NewPair(n) x_option ? ((void *)&(n)) : NULL +#else +#define NewPair(n) NULL +#endif + +#define InitPair(p,fg,bg) init_pair((short) (p), (short) (fg), (short) (bg)) + +static bool interrupted = FALSE; +static long total_chars = 0; +static time_t started; + +#if HAVE_ALLOC_PAIR +static bool x_option = FALSE; +#endif + +static void +cleanup(void) +{ + endwin(); + + fflush(stdout); + fprintf(stderr, "\n\n%ld total cells, rate %.2f/sec\n", + total_chars, + ((double) (total_chars) / (double) (time((time_t *) 0) - started))); +} + +static void +onsig(int n GCC_UNUSED) +{ + interrupted = TRUE; +} + +static double +ranf(void) +{ + long r = (rand() & 077777); + return ((double) r / 32768.); +} + +static int +mypair(int fg, int bg) +{ + int result; +#if HAVE_ALLOC_PAIR + if (x_option) { + result = alloc_pair(fg, bg); + } else +#endif + { + int pair = (fg * COLORS) + bg; + result = (pair >= COLOR_PAIRS) ? -1 : pair; + } + return result; +} + +static void +set_colors(int fg, int bg) +{ + int pair = mypair(fg, bg); + if (pair > 0) { + (void) color_set((short) pair, NewPair(pair)); + } +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: dots_xcurses [options]" + ,"" + ,"Options:" + ," -T TERM override $TERM" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors()" +#endif +#if HAVE_USE_ENV + ," -e allow environment $LINES / $COLUMNS" +#endif + ," -m SIZE set margin (default: 2)" + ," -r SECS self-interrupt/exit after specified number of seconds" + ," -s MSECS delay 1% of the time (default: 1 msecs)" +#if HAVE_ALLOC_PAIR + ," -x use alloc_pair() rather than init_pair()" +#endif + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int fg, bg, ch; + wchar_t wch[2]; + double r; + double c; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif + int m_option = 2; + int r_option = 0; + int s_option = 1; + size_t need; + char *my_env; + + while ((ch = getopt(argc, argv, "T:dem:r:s:x")) != -1) { + switch (ch) { + case 'T': + need = 6 + strlen(optarg); + my_env = malloc(need); + _nc_SPRINTF(my_env, _nc_SLIMIT(need) "TERM=%s", optarg); + putenv(my_env); + break; +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif +#if HAVE_USE_ENV + case 'e': + use_env(TRUE); + break; +#endif + case 'm': + m_option = atoi(optarg); + break; + case 'r': + r_option = atoi(optarg); + break; + case 's': + s_option = atoi(optarg); + break; +#if HAVE_ALLOC_PAIR + case 'x': + x_option = TRUE; + break; +#endif + default: + usage(); + break; + } + } + + srand((unsigned) time(0)); + + SetupAlarm(r_option); + InitAndCatch(initscr(), onsig); + if (has_colors()) { + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (d_option) + use_default_colors(); +#endif +#if HAVE_ALLOC_PAIR + if (x_option) { + ; /* nothing */ + } else +#endif + { + for (fg = 0; fg < COLORS; fg++) { + for (bg = 0; bg < COLORS; bg++) { + int pair; + if (interrupted) { + cleanup(); + ExitProgram(EXIT_FAILURE); + } + pair = mypair(fg, bg); + if (pair > 0) { + InitPair(pair, fg, bg); + } + } + } + } + } + + r = (double) (LINES - (2 * m_option)); + c = (double) (COLS - (2 * m_option)); + started = time((time_t *) 0); + + fg = COLOR_WHITE; + bg = COLOR_BLACK; + wch[1] = 0; + while (!interrupted) { + int x = (int) (c * ranf()) + m_option; + int y = (int) (r * ranf()) + m_option; + int p = (ranf() > 0.9) ? '*' : ' '; + + move(y, x); + if (has_colors()) { + int z = (int) (ranf() * COLORS); + if (ranf() > 0.01) { + set_colors(fg = z, bg); + } else { + set_colors(fg, bg = z); + if (s_option) + napms(s_option); + } + } else { + if (ranf() <= 0.01) { + if (ranf() > 0.6) { + attr_on(WA_REVERSE, NULL); + } else { + attr_off(WA_REVERSE, NULL); + } + if (s_option) + napms(s_option); + } + } + wch[0] = (wchar_t) p; + addnwstr(wch, 1); + refresh(); + ++total_chars; + } + cleanup(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the wide-ncurses library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/dump_window.c b/deps/ncurses-6.3/test/dump_window.c new file mode 100644 index 0000000..14a8c9f --- /dev/null +++ b/deps/ncurses-6.3/test/dump_window.c @@ -0,0 +1,179 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: dump_window.c,v 1.4 2020/02/02 23:34:34 tom Exp $ + */ +#include <dump_window.h> + +static FILE *dumpfp; + +int +open_dump(const char *fn) +{ + int result = 0; + close_dump(); + if ((dumpfp = fopen(fn, "a")) != 0) + result = 1; + return result; +} + +void +close_dump(void) +{ + if (dumpfp != 0) { + fclose(dumpfp); + dumpfp = 0; + } +} + +void +dump_window(WINDOW *w) +{ + wgetch(w); + if (dumpfp != 0) { + int y, x; + int oldy, oldx; + int maxy, maxx; + int pass; + char *cvec = 0; + char *avec = 0; + char *pvec = 0; + int ccnt = 0; + int acnt = 0; + int pcnt = 0; + int endy = -1; + int endx = -1; + + fprintf(dumpfp, "Window %p\n", (void *) w); + + getyx(w, oldy, oldx); + getmaxyx(w, maxy, maxx); + fprintf(dumpfp, "size (%dx%d)\n", maxy, maxx); + getbegyx(w, y, x); + fprintf(dumpfp, "begin (%dx%d)\n", maxy, maxx); + getyx(w, y, x); + fprintf(dumpfp, "position (%d,%d)\n", y, x); + + if (maxy > 0 && maxx > 0) { + for (pass = 0; pass < 2; ++pass) { + for (y = 0; y < maxy; ++y) { + + if (cvec) + memset(cvec, 0, (size_t) maxx + 1); + if (avec) + memset(avec, 0, (size_t) maxx + 1); + if (pvec) + memset(pvec, 0, (size_t) maxx + 1); + + for (x = 0; x < maxx; ++x) { + chtype data = mvwinch(w, y, x); + chtype temp; + char cc = (char) ((data & 0xff) ? (data & 0xff) : ' '); + char aa; + char pp; + + temp = ((data & A_ATTRIBUTES) & (~A_COLOR)); + if (temp) { + if (temp & A_ALTCHARSET) { + aa = (temp & A_BOLD) ? 'A' : 'a'; + } else if (temp & A_STANDOUT) { + aa = (temp & A_BOLD) ? 'S' : 's'; + } else if (temp & A_REVERSE) { + aa = (temp & A_BOLD) ? 'R' : 'r'; + } else if (temp & A_UNDERLINE) { + aa = (temp & A_BOLD) ? 'U' : 'u'; + } else { + aa = (temp & A_BOLD) ? 'b' : '?'; + } + } else { + aa = ' '; + } + if (data & A_COLOR) { + if (PAIR_NUMBER((int) data) < 8) { + pp = (char) ('0' + PAIR_NUMBER((int) data)); + } else { + pp = '*'; + } + } else { + pp = ' '; + } + + if (pass) { + if (cvec) + cvec[x] = cc; + if (avec) + avec[x] = aa; + if (pvec) + pvec[x] = pp; + } else { + if (cc != ' ' || aa != ' ' || pp != ' ') { + if (endx < x) + endx = x; + if (endy < y) + endy = y; + } + ccnt += (cc != ' '); + acnt += (aa != ' '); + pcnt += (pp != ' '); + } + } + if (pass) { + fprintf(dumpfp, "%3d", y + 1); + if (cvec) + fprintf(dumpfp, "\tc|%.*s|\n", maxx, cvec); + if (avec) + fprintf(dumpfp, "\ta|%.*s|\n", maxx, avec); + if (pvec) + fprintf(dumpfp, "\tp|%.*s|\n", maxx, pvec); + } + } + if (pass) { + free(cvec); + free(avec); + free(pvec); + } else { + fprintf(dumpfp, "%d cells with characters\n", ccnt); + fprintf(dumpfp, "%d cells with video-attributes\n", acnt); + fprintf(dumpfp, "%d cells with color-attributes\n", pcnt); + if (endy < 0 || endx < 0) + break; + /* reduce the dump a little, ignore really blank cells */ + maxx = endx + 1; + maxy = endy + 1; + if (ccnt) + cvec = malloc((size_t) maxx + 1); + if (acnt) + avec = malloc((size_t) maxx + 1); + if (pcnt) + pvec = malloc((size_t) maxx + 1); + } + } + } + wmove(w, oldy, oldx); + } +} diff --git a/deps/ncurses-6.3/test/dump_window.h b/deps/ncurses-6.3/test/dump_window.h new file mode 100644 index 0000000..865249e --- /dev/null +++ b/deps/ncurses-6.3/test/dump_window.h @@ -0,0 +1,40 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: dump_window.h,v 1.2 2020/02/02 23:34:34 tom Exp $ + */ +#ifndef DUMP_WINDOW_H_incl +#define DUMP_WINDOW_H_incl 1 + +#include <test.priv.h> + +extern int open_dump(const char *fn); +extern void close_dump(void); +extern void dump_window(WINDOW *w); + +#endif /* DUMP_WINDOW_H_incl */ diff --git a/deps/ncurses-6.3/test/dup_field.c b/deps/ncurses-6.3/test/dup_field.c new file mode 100644 index 0000000..eb87c90 --- /dev/null +++ b/deps/ncurses-6.3/test/dup_field.c @@ -0,0 +1,392 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: dup_field.c,v 1.2 2021/03/27 23:41:57 tom Exp $ + * + * Demonstrate move_field(). + */ + +#include <test.priv.h> + +#if USE_LIBFORM + +#include <edit_field.h> +#include <popup_msg.h> + +#define MY_DEMO EDIT_FIELD('f') + +static char empty[] = ""; +static FIELD *all_fields[100]; +/* *INDENT-OFF* */ +static struct { + int code; + int result; + const char *help; +} commands[] = { + { CTRL('A'), REQ_BEG_FIELD, "go to beginning of field" }, + { CTRL('D'), REQ_DOWN_FIELD, "move downward to field" }, + { CTRL('E'), REQ_END_FIELD, "go to end of field" }, + { CTRL('G'), MY_DEMO, "move current field with cursor keys" }, + { CTRL('H'), REQ_DEL_PREV, "delete previous character" }, + { CTRL('I'), REQ_NEXT_FIELD, "go to next field" }, + { CTRL('K'), REQ_CLR_EOF, "clear to end of field" }, + { CTRL('N'), REQ_NEXT_FIELD, "go to next field" }, + { CTRL('P'), REQ_PREV_FIELD, "go to previous field" }, + { CTRL('Q'), MY_QUIT, "exit form" }, + { CTRL('U'), REQ_UP_FIELD, "move upward to field" }, + { CTRL('W'), REQ_NEXT_WORD, "go to next word" }, + { CTRL('X'), REQ_CLR_FIELD, "clear field" }, + { CTRL('['), MY_QUIT, "exit form" }, + { KEY_F(1), MY_HELP, "show this screen", }, + { KEY_BACKSPACE, REQ_DEL_PREV, "delete previous character" }, + { KEY_BTAB, REQ_PREV_FIELD, "go to previous field" }, + { KEY_DOWN, REQ_DOWN_CHAR, "move down 1 character" }, + { KEY_END, REQ_LAST_FIELD, "go to last field" }, + { KEY_HOME, REQ_FIRST_FIELD, "go to first field" }, + { KEY_LEFT, REQ_LEFT_CHAR, "move left 1 character" }, + { KEY_NEXT, REQ_NEXT_FIELD, "go to next field" }, + { KEY_PREVIOUS, REQ_PREV_FIELD, "go to previous field" }, + { KEY_RIGHT, REQ_RIGHT_CHAR, "move right 1 character" }, + { KEY_UP, REQ_UP_CHAR, "move up 1 character" } +}; +/* *INDENT-ON* */ + +static void +my_help_edit_field(void) +{ + int used = 0; + unsigned n; + char **msgs = typeCalloc(char *, 3 + SIZEOF(commands)); + + msgs[used++] = strdup("Defined form edit/traversal keys:"); + for (n = 0; n < SIZEOF(commands); ++n) { + char *msg; + const char *name; + const char *code = keyname(commands[n].code); + size_t need = 5; +#ifdef NCURSES_VERSION + if ((name = form_request_name(commands[n].result)) == 0) +#endif + name = commands[n].help; + need = 5 + strlen(code) + strlen(name); + msg = typeMalloc(char, need); + _nc_SPRINTF(msg, _nc_SLIMIT(need) "%s -- %s", code, name); + msgs[used++] = msg; + } + msgs[used++] = + strdup("Arrow keys move within a field as you would expect."); + msgs[used] = 0; + popup_msg2(stdscr, msgs); + for (n = 0; msgs[n] != 0; ++n) { + free(msgs[n]); + } + free(msgs); +} + +static void +do_demo(FORM *form) +{ +} + +static FIELD * +make_label(const char *label, int frow, int fcol) +{ + FIELD *f = new_field(1, (int) strlen(label), frow, fcol, 0, 0); + + if (f) { + set_field_buffer(f, 0, label); + set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE)); + } + return (f); +} + +static FIELD * +make_field(int frow, int fcol, int rows, int cols) +{ + FIELD *f = new_field(rows, cols, frow, fcol, 0, 1); + + if (f) { + set_field_back(f, A_UNDERLINE); + init_edit_field(f, empty); + } + return (f); +} + +static void +erase_form(FORM *f) +{ + WINDOW *w = form_win(f); + WINDOW *s = form_sub(f); + + unpost_form(f); + werase(w); + wrefresh(w); + delwin(s); + delwin(w); +} + +static int +my_form_driver(FORM *form, int c) +{ + switch (c) { + case MY_QUIT: + if (form_driver(form, REQ_VALIDATION) == E_OK) + return (TRUE); + break; + case MY_HELP: + my_help_edit_field(); + break; + case MY_DEMO: + do_demo(form); + break; + default: + beep(); + break; + } + return (FALSE); +} + +static FieldAttrs * +my_field_attrs(FIELD *f) +{ + return (FieldAttrs *) field_userptr(f); +} + +static int +buffer_length(FIELD *f) +{ + return my_field_attrs(f)->row_lengths[0]; +} + +static void +set_buffer_length(FIELD *f, int length) +{ + my_field_attrs(f)->row_lengths[0] = length; +} + +static int +offset_in_field(FORM *form) +{ + FIELD *field = current_field(form); + int currow, curcol; + + form_getyx(form, currow, curcol); + return curcol + currow * (int) field->dcols; +} + +static void +inactive_field(FIELD *f) +{ + set_field_back(f, my_field_attrs(f)->background); +} + +static int +my_edit_field(FORM *form, int *result) +{ + int ch = wgetch(form_win(form)); + int status; + FIELD *before; + unsigned n; + int before_row; + int before_col; + int before_off = offset_in_field(form); + + form_getyx(form, before_row, before_col); + before = current_field(form); + set_field_back(before, A_NORMAL); + if (ch <= KEY_MAX) { + set_field_back(before, A_REVERSE); + } else if (ch <= MAX_FORM_COMMAND) { + inactive_field(before); + } + + *result = ch; + for (n = 0; n < SIZEOF(commands); ++n) { + if (commands[n].code == ch) { + *result = commands[n].result; + break; + } + } + + status = form_driver(form, *result); + + if (status == E_OK) { + bool modified = TRUE; + int length = buffer_length(before); + + if (length < before_off) + length = before_off; + switch (*result) { + case REQ_CLR_EOF: + length = before_off; + break; + case REQ_CLR_EOL: + if ((int) (before_row + 1) == (int) (before->rows)) + length = before_off; + break; + case REQ_CLR_FIELD: + length = 0; + break; + case REQ_DEL_CHAR: + if (length > before_off) + --length; + break; + case REQ_DEL_PREV: + if (length > 0) { + if (before_col > 0) { + --length; + } else if (before_row > 0) { + length -= (int) before->cols + before_col; + } + } + break; + case REQ_NEW_LINE: + length += (int) before->cols; + break; + + default: + modified = (ch < MIN_FORM_COMMAND + && isprint(ch)); + break; + } + + /* + * If we do not force a re-validation, then field_buffer 0 will + * be lagging by one character. + */ + if (modified && form_driver(form, REQ_VALIDATION) == E_OK && *result + < MIN_FORM_COMMAND) + ++length; + + set_buffer_length(before, length); + } + + if (current_field(form) != before) + inactive_field(before); + return status; +} + +static void +demo_forms(void) +{ + FORM *form; + int c; + unsigned n = 0; + const char *fname; + + /* describe the form */ + all_fields[n++] = make_label("Sample Form", 0, 15); + + fname = "Last Name"; + all_fields[n++] = make_label(fname, 2, 0); + all_fields[n++] = make_field(3, 0, 1, 18); + set_field_type(all_fields[n - 1], TYPE_ALPHA, 1); + + fname = "First Name"; + all_fields[n++] = make_label(fname, 2, 20); + all_fields[n++] = make_field(3, 20, 1, 12); + set_field_type(all_fields[n - 1], TYPE_ALPHA, 1); + + fname = "Middle Name"; + all_fields[n++] = make_label(fname, 2, 34); + all_fields[n++] = make_field(3, 34, 1, 12); + set_field_type(all_fields[n - 1], TYPE_ALPHA, 1); + + fname = "Comments"; + all_fields[n++] = make_label(fname, 5, 0); + all_fields[n++] = make_field(6, 0, 4, 46); + init_edit_field(all_fields[n - 1], empty); + + all_fields[n] = (FIELD *) 0; + + if ((form = new_form(all_fields)) != 0) { + int finished = 0; + + post_form(form); + + while (!finished) { + switch (my_edit_field(form, &c)) { + case E_OK: + break; + case E_UNKNOWN_COMMAND: + finished = my_form_driver(form, c); + break; + default: + beep(); + break; + } + } + + erase_form(form); + + free_form(form); + } + for (c = 0; all_fields[c] != 0; c++) { + free_edit_field(all_fields[c]); + free_field(all_fields[c]); + } + noraw(); + nl(); +} + +int +main(void) +{ + setlocale(LC_ALL, ""); + + initscr(); + cbreak(); + noecho(); + raw(); + nonl(); /* lets us read ^M's */ + intrflush(stdscr, FALSE); + keypad(stdscr, TRUE); + + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + init_pair(2, COLOR_GREEN, COLOR_BLACK); + init_pair(3, COLOR_CYAN, COLOR_BLACK); + bkgd((chtype) COLOR_PAIR(1)); + refresh(); + } + + demo_forms(); + + endwin(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the curses form library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-5.9/test/echochar.c b/deps/ncurses-6.3/test/echochar.c similarity index 84% rename from deps/ncurses-5.9/test/echochar.c rename to deps/ncurses-6.3/test/echochar.c index 829d1f2..ce7f03d 100644 --- a/deps/ncurses-5.9/test/echochar.c +++ b/deps/ncurses-6.3/test/echochar.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006-2008,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2006-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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: echochar.c,v 1.8 2010/11/14 01:00:44 tom Exp $ + * $Id: echochar.c,v 1.21 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the echochar function (compare to dots.c). * Thomas Dickey - 2006/11/4 @@ -36,8 +37,6 @@ #include <time.h> -#define valid(s) ((s != 0) && s != (char *)-1) - static bool interrupted = FALSE; static long total_chars = 0; static time_t started; @@ -45,9 +44,9 @@ static time_t started; static void cleanup(void) { - endwin(); + stop_curses(); - printf("\n\n%ld total chars, rate %.2f/sec\n", + printf("\n\n%ld total cells, rate %.2f/sec\n", total_chars, ((double) (total_chars) / (double) (time((time_t *) 0) - started))); } @@ -69,19 +68,21 @@ static void set_color(char *my_pairs, int fg, int bg) { int pair = (fg * COLORS) + bg; - if (!my_pairs[pair]) { - init_pair((short) pair, - (short) fg, - (short) bg); + if (pair < COLOR_PAIRS) { + if (!my_pairs[pair]) { + init_pair((short) pair, + (short) fg, + (short) bg); + } + attron(COLOR_PAIR(pair)); } - attron(COLOR_PAIR(pair)); } int main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) { - int ch, x, y, z, p; + int ch; double r; double c; bool use_colors; @@ -96,13 +97,12 @@ main(int argc GCC_UNUSED, opt_r = TRUE; break; default: - fprintf(stderr, "usage: echochar [-r]\n"); + fprintf(stderr, "Usage: echochar [-r]\n"); ExitProgram(EXIT_FAILURE); } } - CATCHALL(onsig); - initscr(); + InitAndCatch(initscr(), onsig); use_colors = has_colors(); if (use_colors) { @@ -122,13 +122,13 @@ main(int argc GCC_UNUSED, started = time((time_t *) 0); while (!interrupted) { - x = (int) (c * ranf()) + 2; - y = (int) (r * ranf()) + 2; - p = (ranf() > 0.9) ? '*' : ' '; + int x = (int) (c * ranf()) + 2; + int y = (int) (r * ranf()) + 2; + int p = (ranf() > 0.9) ? '*' : ' '; move(y, x); if (use_colors > 0) { - z = (int) (ranf() * COLORS); + int z = (int) (ranf() * COLORS); if (ranf() > 0.01) { set_color(my_pairs, z, last_bg); last_fg = z; @@ -147,7 +147,7 @@ main(int argc GCC_UNUSED, } } if (opt_r) { - addch(UChar(p)); + AddCh(UChar(p)); refresh(); } else { echochar(UChar(p)); @@ -155,5 +155,6 @@ main(int argc GCC_UNUSED, ++total_chars; } cleanup(); + free(my_pairs); ExitProgram(EXIT_SUCCESS); } diff --git a/deps/ncurses-5.9/test/edit_field.c b/deps/ncurses-6.3/test/edit_field.c similarity index 78% rename from deps/ncurses-5.9/test/edit_field.c rename to deps/ncurses-6.3/test/edit_field.c index 8a664e8..b2b2084 100644 --- a/deps/ncurses-5.9/test/edit_field.c +++ b/deps/ncurses-6.3/test/edit_field.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2003-2008,2011 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2003-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 * @@ -26,11 +27,11 @@ * authorization. * ****************************************************************************/ /* - * $Id: edit_field.c,v 1.17 2011/01/15 18:15:11 tom Exp $ + * $Id: edit_field.c,v 1.31 2020/02/02 23:34:34 tom Exp $ * * A wrapper for form_driver() which keeps track of the user's editing changes - * for each field, and makes the result available as a null-terminated string - * in field_buffer(field,1). + * for each field, and makes the resulting length available as a + * null-terminated string in field_buffer(field,1). * * Thomas Dickey - 2003/4/26. */ @@ -40,6 +41,7 @@ #if USE_LIBFORM #include <edit_field.h> +#include <popup_msg.h> static struct { int code; @@ -169,148 +171,112 @@ static struct { } }; -static WINDOW *old_window; - -static void -begin_popup(void) -{ - doupdate(); - old_window = dupwin(curscr); -} - -static void -end_popup(void) -{ - touchwin(old_window); - wnoutrefresh(old_window); - doupdate(); - delwin(old_window); -} - /* * Display a temporary window listing the keystroke-commands we recognize. */ void help_edit_field(void) { - int x0 = 4; - int y0 = 2; - int y1 = 0; - int y2 = 0; - int wide = COLS - ((x0 + 1) * 2); - int high = LINES - ((y0 + 1) * 2); - WINDOW *help = newwin(high, wide, y0, x0); - WINDOW *data = newpad(2 + SIZEOF(commands), wide - 4); + int used = 0; unsigned n; - int ch = ERR; + char **msgs = typeCalloc(char *, 3 + SIZEOF(commands)); - begin_popup(); - - keypad(help, TRUE); - keypad(data, TRUE); - waddstr(data, "Defined form edit/traversal keys:\n"); + msgs[used++] = strdup("Defined form edit/traversal keys:"); for (n = 0; n < SIZEOF(commands); ++n) { + char *msg; const char *name; + const char *code = keyname(commands[n].code); + size_t need = 5; #ifdef NCURSES_VERSION if ((name = form_request_name(commands[n].result)) == 0) #endif name = commands[n].help; - wprintw(data, "%s -- %s\n", - keyname(commands[n].code), - name != 0 ? name : commands[n].help); + need = 5 + strlen(code) + strlen(name); + msg = typeMalloc(char, need); + _nc_SPRINTF(msg, _nc_SLIMIT(need) "%s -- %s", code, name); + msgs[used++] = msg; } - waddstr(data, "Arrow keys move within a field as you would expect."); - y2 = getcury(data); - - do { - switch (ch) { - case KEY_HOME: - y1 = 0; - break; - case KEY_END: - y1 = y2; - break; - case KEY_PREVIOUS: - case KEY_PPAGE: - if (y1 > 0) { - y1 -= high / 2; - if (y1 < 0) - y1 = 0; - } else { - beep(); - } - break; - case KEY_NEXT: - case KEY_NPAGE: - if (y1 < y2) { - y1 += high / 2; - if (y1 >= y2) - y1 = y2; - } else { - beep(); - } - break; - case CTRL('P'): - case KEY_UP: - if (y1 > 0) - --y1; - else - beep(); - break; - case CTRL('N'): - case KEY_DOWN: - if (y1 < y2) - ++y1; - else - beep(); - break; - default: - beep(); - break; - case ERR: - break; - } - werase(help); - box(help, 0, 0); - wnoutrefresh(help); - pnoutrefresh(data, y1, 0, y0 + 1, x0 + 1, high, wide); - doupdate(); - } while ((ch = wgetch(data)) != ERR && ch != QUIT && ch != ESCAPE); - werase(help); - wrefresh(help); - delwin(help); - delwin(data); - - end_popup(); + msgs[used++] = + strdup("Arrow keys move within a field as you would expect."); + msgs[used] = 0; + popup_msg2(stdscr, msgs); + for (n = 0; msgs[n] != 0; ++n) { + free(msgs[n]); + } + free(msgs); } static int -offset_in_field(FORM * form) +offset_in_field(FORM *form) { FIELD *field = current_field(form); int currow, curcol; form_getyx(form, currow, curcol); - return curcol + currow * field->dcols; + return curcol + currow * (int) field->dcols; +} + +static void +inactive_field(FIELD *f) +{ + set_field_back(f, field_attrs(f)->background); +} + +FieldAttrs * +field_attrs(FIELD *f) +{ + return (FieldAttrs *) field_userptr(f); +} + +static int +buffer_length(FIELD *f) +{ + return field_attrs(f)->row_lengths[0]; } static void -inactive_field(FIELD * f) +set_buffer_length(FIELD *f, int length) { - FieldAttrs *ptr = (FieldAttrs *) field_userptr(f); - set_field_back(f, ptr->background); + field_attrs(f)->row_lengths[0] = length; +} + +/* + * The userptr is used in edit_field.c's inactive_field(), as well as for + * keeping track of the actual lengths of lines in a multiline field. + */ +void +init_edit_field(FIELD *f, char *value) +{ + char empty[1]; + FieldAttrs *ptr = field_attrs(f); + if (ptr == 0) { + int rows, cols, frow, fcol, nrow, nbuf; + + ptr = typeCalloc(FieldAttrs, (size_t) 1); + ptr->background = field_back(f); + if (field_info(f, &rows, &cols, &frow, &fcol, &nrow, &nbuf) == E_OK) { + ptr->row_count = nrow; + ptr->row_lengths = typeCalloc(int, (size_t) nrow + 1); + } + } + if (value == 0) { + value = empty; + *value = '\0'; + } + set_field_userptr(f, (void *) ptr); + set_field_buffer(f, 0, value); /* will be formatted */ + set_field_buffer(f, 1, value); /* will be unformatted */ + set_buffer_length(f, (int) strlen(value)); } int -edit_field(FORM * form, int *result) +edit_field(FORM *form, int *result) { int ch = wgetch(form_win(form)); int status; FIELD *before; unsigned n; - char lengths[80]; int length; - char *buffer; int before_row; int before_col; int before_off = offset_in_field(form); @@ -337,9 +303,7 @@ edit_field(FORM * form, int *result) if (status == E_OK) { bool modified = TRUE; - length = 0; - if ((buffer = field_buffer(before, 1)) != 0) - length = atoi(buffer); + length = buffer_length(before); if (length < before_off) length = before_off; switch (*result) { @@ -347,7 +311,7 @@ edit_field(FORM * form, int *result) length = before_off; break; case REQ_CLR_EOL: - if (before_row + 1 == before->rows) + if ((int) (before_row + 1) == (int) (before->rows)) length = before_off; break; case REQ_CLR_FIELD: @@ -362,12 +326,12 @@ edit_field(FORM * form, int *result) if (before_col > 0) { --length; } else if (before_row > 0) { - length -= before->cols + before_col; + length -= (int) before->cols + before_col; } } break; case REQ_NEW_LINE: - length += before->cols; + length += (int) before->cols; break; #if 0 /* FIXME: finish these */ @@ -445,14 +409,23 @@ edit_field(FORM * form, int *result) < MIN_FORM_COMMAND) ++length; - sprintf(lengths, "%d", length); - set_field_buffer(before, 1, lengths); + set_buffer_length(before, length); } if (current_field(form) != before) inactive_field(before); return status; } + +void +free_edit_field(FIELD *f) +{ + FieldAttrs *ptr = field_attrs(f); + if (ptr != 0) { + free(ptr->row_lengths); + free(ptr); + } +} #else extern void no_edit_field(void); diff --git a/deps/ncurses-5.9/test/edit_field.h b/deps/ncurses-6.3/test/edit_field.h similarity index 85% rename from deps/ncurses-5.9/test/edit_field.h rename to deps/ncurses-6.3/test/edit_field.h index eacade3..ad9e6a5 100644 --- a/deps/ncurses-5.9/test/edit_field.h +++ b/deps/ncurses-6.3/test/edit_field.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2003-2006,2008 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2003-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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: edit_field.h,v 1.6 2008/12/20 19:23:18 tom Exp $ + * $Id: edit_field.h,v 1.11 2020/02/02 23:34:34 tom Exp $ * * Interface of edit_field.c */ @@ -45,9 +46,14 @@ typedef struct { chtype background; + int row_count; + int *row_lengths; } FieldAttrs; +extern FieldAttrs *field_attrs(FIELD *field); +extern void init_edit_field(FIELD *field, char *value); extern void help_edit_field(void); -extern int edit_field(FORM * form, int *result); +extern int edit_field(FORM *form, int *result); +extern void free_edit_field(FIELD *field); #endif /* EDIT_FORM_H_incl */ diff --git a/deps/ncurses-6.3/test/escherknot.xbm b/deps/ncurses-6.3/test/escherknot.xbm new file mode 100644 index 0000000..80bc471 --- /dev/null +++ b/deps/ncurses-6.3/test/escherknot.xbm @@ -0,0 +1,473 @@ +#define escherknot_width 216 +#define escherknot_height 208 + +static char escherknot_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfa, 0x5f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0x6f, 0xf6, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0xff, 0x3a, 0x13, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x0d, 0x02, 0x51, 0x71, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x2f, 0x20, 0xd9, 0x88, + 0x9b, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x82, + 0xac, 0x44, 0x4e, 0x1c, 0xf3, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x1e, 0x40, 0x02, 0x44, 0x60, 0xe2, 0xfc, 0x06, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x25, 0x09, 0x90, 0x22, 0x13, 0xb7, 0x9a, 0x1e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0x00, 0x00, 0x40, 0x10, 0x89, + 0x18, 0xe3, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x04, 0x08, + 0x01, 0x10, 0xc8, 0xa8, 0xd5, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x83, 0x80, 0x20, 0x40, 0x82, 0x00, 0x66, 0x9c, 0xec, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x08, 0x08, 0x24, 0x12, 0x93, 0x5b, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0x12, 0x80, 0x04, 0x01, 0x00, 0x80, + 0x19, 0x33, 0xfa, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x80, 0x80, 0x00, + 0x20, 0x08, 0x12, 0xc4, 0x68, 0x26, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, + 0x02, 0x04, 0x24, 0x00, 0x01, 0x40, 0x24, 0x8c, 0xcd, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x80, 0x49, 0x10, 0x90, 0x00, 0x21, 0x20, 0x08, 0x11, 0x43, 0xd9, + 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe8, + 0xff, 0xff, 0x0b, 0x00, 0x60, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x30, 0xb9, 0xf2, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x97, 0x04, 0x08, 0xfe, 0x05, 0x30, 0x10, 0x12, 0x20, 0x20, + 0x04, 0x00, 0x80, 0x48, 0x0c, 0xa3, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x92, 0x20, 0x49, 0x40, 0x3e, 0x0e, 0x82, + 0x00, 0x84, 0x25, 0x01, 0x80, 0x00, 0x80, 0xc8, 0x34, 0xed, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x25, 0x01, 0x04, 0x01, 0x08, + 0xd0, 0x17, 0x00, 0x80, 0x25, 0x01, 0xad, 0x04, 0x12, 0x20, 0x23, 0x4c, + 0x6a, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x02, 0x48, + 0x92, 0x20, 0x41, 0x92, 0x9e, 0x80, 0x24, 0x24, 0x29, 0x00, 0x04, 0x00, + 0x10, 0x98, 0xcc, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x4f, 0x10, 0x01, 0x90, 0x24, 0x40, 0x12, 0xf0, 0x00, 0x24, 0x41, 0x0b, + 0xa9, 0x10, 0x00, 0x00, 0x04, 0xd9, 0x96, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0x00, 0x92, 0x48, 0x02, 0x04, 0x09, 0xc0, 0x84, 0x8f, + 0x29, 0x2d, 0xf8, 0xa9, 0x02, 0x00, 0x00, 0x20, 0x90, 0xf4, 0x1e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x98, 0x24, 0x91, 0x04, 0x50, 0x22, 0x24, + 0x1b, 0x12, 0x7a, 0x48, 0xca, 0x03, 0x21, 0x10, 0x00, 0x00, 0x48, 0x93, + 0xff, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9e, 0x24, 0x92, 0x20, + 0x81, 0xda, 0x24, 0xc8, 0x16, 0xd0, 0xe7, 0x50, 0xd2, 0xbf, 0x03, 0x00, + 0x80, 0x00, 0x30, 0x29, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, + 0x20, 0x80, 0x24, 0x41, 0x12, 0x2a, 0x41, 0xb2, 0x80, 0x33, 0x0e, 0x7e, + 0x88, 0x1c, 0x01, 0x00, 0xa0, 0x24, 0x69, 0x75, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x82, 0x44, 0x11, 0x24, 0x09, 0x90, 0xa4, 0x4d, 0xd2, 0x92, + 0x9e, 0xd3, 0x83, 0x6b, 0x62, 0x00, 0x00, 0x10, 0x22, 0xff, 0x7f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x30, 0x42, 0x04, 0x92, 0x24, 0x6b, 0x53, 0x32, + 0x59, 0x90, 0x16, 0xfa, 0xb4, 0xf4, 0xff, 0x0f, 0x01, 0x00, 0x90, 0x68, + 0x4a, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x28, 0x90, 0x24, 0x11, 0x24, + 0x49, 0xda, 0x82, 0xc5, 0x92, 0xd2, 0xd0, 0x9e, 0x1e, 0x00, 0x78, 0x0a, + 0x00, 0x00, 0x05, 0xd2, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x4c, 0x02, + 0x44, 0xb2, 0x65, 0xea, 0x49, 0x9e, 0x2c, 0x4b, 0x1a, 0xd2, 0xeb, 0xe3, + 0xff, 0xc7, 0x09, 0x00, 0x20, 0x68, 0xff, 0xd6, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x0b, 0x90, 0x40, 0x92, 0x24, 0x09, 0x5f, 0xd2, 0x64, 0x59, 0x72, + 0x56, 0x7f, 0xfd, 0xdf, 0x1f, 0x12, 0x00, 0x20, 0x49, 0x92, 0xde, 0x01, + 0x00, 0x00, 0x00, 0x80, 0x41, 0x92, 0x4c, 0x92, 0x24, 0x25, 0xc9, 0x8b, + 0x2e, 0xcb, 0x92, 0x4b, 0x5a, 0x2f, 0x75, 0xf4, 0x04, 0x00, 0x00, 0x41, + 0xf6, 0x74, 0x01, 0x00, 0x00, 0x00, 0x40, 0x49, 0x02, 0x00, 0xba, 0xb6, + 0xfd, 0x49, 0xf8, 0x74, 0x6d, 0x4b, 0x72, 0xed, 0xdb, 0xff, 0xcf, 0x53, + 0x00, 0x00, 0x48, 0xb6, 0xd7, 0x03, 0x00, 0x00, 0x00, 0x60, 0x48, 0x10, + 0xc9, 0x93, 0x24, 0x00, 0x7b, 0xc3, 0xa6, 0x69, 0x58, 0x5a, 0xfb, 0xfa, + 0xa5, 0xbe, 0x16, 0x00, 0x00, 0x92, 0xa4, 0xfd, 0x03, 0x00, 0x00, 0x00, + 0x30, 0x01, 0x20, 0x5d, 0xa2, 0xfe, 0x7f, 0x01, 0x4f, 0x1a, 0xcd, 0x6b, + 0x6a, 0xa9, 0x5f, 0xff, 0xf3, 0x24, 0x01, 0x40, 0xc0, 0xb4, 0xf4, 0x03, + 0x00, 0x00, 0x00, 0x2c, 0x88, 0x84, 0x89, 0xb6, 0x00, 0x24, 0x7d, 0x69, + 0xf2, 0x34, 0xad, 0x99, 0x2d, 0xf7, 0xff, 0x9f, 0x4b, 0x00, 0x00, 0x92, + 0xa6, 0xad, 0x07, 0x00, 0x00, 0x00, 0x06, 0x91, 0x24, 0xe9, 0xa4, 0xfd, + 0xa5, 0xa9, 0x4b, 0x93, 0xe7, 0x34, 0x63, 0xf9, 0xfc, 0xd5, 0xef, 0x16, + 0x00, 0x40, 0x90, 0xb4, 0xbd, 0x07, 0x00, 0x00, 0x00, 0x6a, 0x80, 0x4c, + 0x96, 0xbe, 0x2d, 0xfd, 0x2f, 0x7c, 0x5e, 0x9c, 0x67, 0xad, 0xa5, 0xfd, + 0xff, 0xbf, 0x29, 0x00, 0x00, 0x92, 0x76, 0xed, 0x06, 0x00, 0x00, 0x00, + 0x05, 0x12, 0x48, 0x53, 0x25, 0x65, 0x25, 0xf4, 0xe5, 0xd3, 0x72, 0x9c, + 0x35, 0xdf, 0xf6, 0x7f, 0xf5, 0x56, 0x00, 0x00, 0x92, 0xa4, 0xed, 0x0f, + 0x00, 0x00, 0x80, 0x49, 0x20, 0x59, 0x38, 0xec, 0xff, 0xff, 0xad, 0x2f, + 0x5d, 0xd3, 0x33, 0xe6, 0x24, 0xed, 0xff, 0xdf, 0x2d, 0x01, 0x40, 0x80, + 0x24, 0xbd, 0x07, 0x00, 0x00, 0xc0, 0x48, 0x24, 0x49, 0x87, 0x37, 0x21, + 0xa0, 0xbd, 0xf4, 0x79, 0x4f, 0xc7, 0x9c, 0xde, 0xf6, 0xff, 0xff, 0x5b, + 0x08, 0x00, 0x92, 0xfc, 0xe9, 0x0e, 0x00, 0x00, 0x20, 0x89, 0x40, 0xd3, + 0xf4, 0x49, 0xff, 0xff, 0xe7, 0x2f, 0xcf, 0x79, 0x9c, 0x53, 0xb2, 0x35, + 0xff, 0xff, 0x37, 0x00, 0x40, 0x90, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x30, + 0x91, 0x49, 0x32, 0x2d, 0xff, 0x6b, 0xb7, 0xbd, 0xbc, 0x3c, 0xef, 0x79, + 0xce, 0xde, 0xd6, 0xfd, 0xff, 0x9f, 0x00, 0x00, 0x92, 0xa6, 0xad, 0x0b, + 0x00, 0x00, 0x30, 0x11, 0x89, 0x8c, 0xcb, 0x5b, 0xba, 0xaf, 0xf6, 0xd7, + 0xe7, 0x35, 0xe7, 0x59, 0xb3, 0xfb, 0xff, 0xff, 0x7f, 0x04, 0x40, 0x80, + 0xe4, 0xb9, 0x1f, 0x00, 0x00, 0x48, 0x22, 0x91, 0x66, 0x79, 0xeb, 0xff, + 0xff, 0xdf, 0xbe, 0xbe, 0xe7, 0x8c, 0x75, 0x6b, 0x4a, 0xfa, 0xbf, 0x7f, + 0x00, 0x00, 0x82, 0x24, 0xef, 0x0e, 0x00, 0x00, 0x4c, 0x22, 0xb2, 0x79, + 0x5e, 0xfa, 0x5b, 0xa9, 0xfd, 0xeb, 0xf5, 0x9c, 0x3d, 0xc6, 0xcc, 0xee, + 0xed, 0x01, 0xf8, 0x00, 0x40, 0x82, 0xb6, 0xa9, 0x1b, 0x00, 0x00, 0x94, + 0x64, 0x66, 0x8e, 0xd3, 0x97, 0xfe, 0xff, 0xd7, 0xdf, 0x9f, 0x7b, 0xf3, + 0x3c, 0x35, 0x59, 0x6b, 0x00, 0x70, 0x00, 0x00, 0x40, 0xe4, 0xed, 0x1e, + 0x00, 0x00, 0x92, 0xc4, 0x34, 0xf3, 0xfc, 0xfd, 0x5f, 0xad, 0x7d, 0xfa, + 0x7a, 0xce, 0x8e, 0xb3, 0x76, 0x2f, 0xfd, 0x00, 0xe0, 0x04, 0x00, 0x9a, + 0x26, 0xaf, 0x1e, 0x00, 0x00, 0x13, 0x88, 0xcc, 0xb5, 0x3f, 0xbf, 0xff, + 0xff, 0xd7, 0xef, 0xef, 0xbd, 0x79, 0x6a, 0xde, 0xec, 0xab, 0x01, 0xc0, + 0x00, 0x00, 0x40, 0xb6, 0xbd, 0x1b, 0x00, 0x00, 0x05, 0x91, 0xeb, 0x5c, + 0xeb, 0xeb, 0xff, 0xff, 0xff, 0x7e, 0xef, 0x6b, 0xef, 0xcd, 0x99, 0xb3, + 0xe4, 0x07, 0x80, 0x00, 0x40, 0x49, 0xb2, 0xe5, 0x1a, 0x00, 0x80, 0x20, + 0x32, 0xb1, 0xe7, 0x79, 0x7f, 0xf7, 0xff, 0xfd, 0xeb, 0xbd, 0xfe, 0x2c, + 0x3d, 0x6b, 0xb6, 0xaf, 0x06, 0x80, 0x00, 0x00, 0x41, 0x96, 0xfe, 0x1e, + 0x00, 0x80, 0x44, 0xb2, 0x9b, 0xf9, 0xde, 0xff, 0xff, 0xff, 0x7f, 0xbf, + 0xf7, 0xbb, 0xb3, 0x77, 0xce, 0xce, 0xb6, 0x0d, 0x80, 0x01, 0x00, 0x49, + 0xf2, 0x94, 0x1f, 0x00, 0x40, 0x49, 0x44, 0xe6, 0x9e, 0x77, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xbf, 0xf7, 0x7e, 0xd6, 0xbc, 0xd9, 0xba, 0x3b, 0x80, + 0x00, 0x00, 0x64, 0x93, 0xf7, 0x1b, 0x00, 0x40, 0x89, 0xec, 0x7e, 0x67, + 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xce, 0xdb, 0x99, 0x33, 0x37, + 0xd3, 0x36, 0x80, 0x01, 0x80, 0x24, 0xda, 0xd6, 0x1e, 0x00, 0x20, 0x90, + 0x99, 0x99, 0x7b, 0xef, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xef, 0xbd, 0x37, + 0x63, 0xf3, 0x66, 0xdb, 0x7a, 0x80, 0x00, 0x00, 0x24, 0x59, 0xde, 0x1f, + 0x00, 0x60, 0x12, 0xb3, 0xf7, 0xdd, 0xfb, 0xfe, 0xff, 0xff, 0xff, 0xff, + 0xbf, 0xf7, 0xfe, 0x6e, 0xce, 0xdd, 0x6d, 0xd7, 0x80, 0x00, 0x80, 0x20, + 0xcb, 0xfb, 0x1f, 0x00, 0x10, 0x20, 0x6e, 0x66, 0x76, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xef, 0xde, 0xdb, 0x9b, 0x99, 0xb3, 0x5d, 0x6b, 0x81, + 0x00, 0x40, 0x96, 0x59, 0x6a, 0x1f, 0x00, 0x98, 0xc4, 0xe4, 0xdf, 0xff, + 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7b, 0x6f, 0x7b, 0x37, 0x7f, + 0xb3, 0xdd, 0x83, 0x00, 0x00, 0xb0, 0xed, 0xef, 0x1d, 0x00, 0x10, 0x88, + 0x9e, 0xdd, 0xcd, 0xbd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xed, + 0x6c, 0xe6, 0xcc, 0x76, 0x6d, 0xc1, 0x00, 0x40, 0x91, 0x24, 0x7b, 0x1f, + 0x00, 0x08, 0xd1, 0xf1, 0x66, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xdf, 0xbd, 0xbf, 0xd9, 0xdd, 0xdd, 0xb6, 0x47, 0x00, 0x00, 0xd8, + 0xb4, 0xad, 0x1f, 0x00, 0x24, 0x24, 0x6f, 0xf6, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0xb7, 0x9d, 0x33, 0xd9, 0x96, 0x4e, + 0x00, 0x20, 0x49, 0xf7, 0xfd, 0x1e, 0x00, 0x48, 0xe4, 0xac, 0xb9, 0xdd, + 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xdd, 0x76, 0xb6, + 0xb7, 0xfd, 0x7a, 0x00, 0x00, 0x44, 0x96, 0xb7, 0x1f, 0x00, 0x02, 0x9a, + 0xbe, 0x6f, 0x77, 0xff, 0xff, 0x7f, 0x61, 0xd9, 0xff, 0xff, 0xff, 0xfd, + 0xdd, 0x66, 0xed, 0x66, 0x5b, 0x37, 0x00, 0x90, 0x64, 0xb9, 0xf6, 0x1f, + 0x00, 0x02, 0xc9, 0xf3, 0xee, 0xfd, 0xff, 0xff, 0x2f, 0x24, 0x4f, 0xfe, + 0xff, 0xff, 0x7f, 0x37, 0xdb, 0xcd, 0x7c, 0xff, 0x3a, 0x00, 0x88, 0x24, + 0xdb, 0xde, 0x1a, 0x00, 0x13, 0x31, 0x6f, 0xbb, 0xdf, 0xff, 0xff, 0x21, + 0xa0, 0x64, 0xf3, 0xff, 0xff, 0xe7, 0xff, 0x96, 0xbb, 0x9b, 0xa5, 0x1d, + 0x00, 0x60, 0x32, 0xe9, 0xdb, 0x0f, 0x00, 0x65, 0xe6, 0x3c, 0xfb, 0xf6, + 0xff, 0x7f, 0x10, 0xa4, 0xb5, 0x9d, 0xfe, 0xdf, 0xdf, 0xdd, 0x6d, 0x32, + 0xb3, 0x7d, 0x0d, 0x00, 0x0b, 0x93, 0x7c, 0x7b, 0x0f, 0x00, 0x89, 0xdc, + 0xb3, 0xed, 0xfb, 0xff, 0x1f, 0x10, 0x90, 0x92, 0xd9, 0xfe, 0x7f, 0xff, + 0x77, 0xdb, 0xee, 0x6e, 0xdb, 0x0e, 0x00, 0x20, 0xdd, 0x66, 0x6f, 0x0f, + 0x80, 0x91, 0x5a, 0xfb, 0xbe, 0xef, 0xff, 0x0f, 0x10, 0xda, 0x92, 0xee, + 0xff, 0xff, 0xff, 0xf7, 0xb7, 0xcd, 0xee, 0xde, 0x07, 0x00, 0x24, 0x49, + 0xb6, 0xed, 0x0f, 0x00, 0x12, 0x6b, 0xcd, 0xf3, 0xbe, 0xff, 0x07, 0x08, + 0x48, 0xda, 0x76, 0xb7, 0xff, 0xff, 0xdd, 0x6e, 0xba, 0x99, 0x65, 0x03, + 0x40, 0x92, 0xe4, 0xba, 0xbd, 0x0e, 0x80, 0x62, 0xed, 0x7d, 0x5f, 0xf7, + 0xff, 0x01, 0x08, 0x28, 0xc9, 0x26, 0xbb, 0xff, 0xff, 0xff, 0x99, 0xb7, + 0xbb, 0x7d, 0x03, 0x00, 0x89, 0x64, 0xdb, 0xf6, 0x07, 0x40, 0x0c, 0x35, + 0xe7, 0x79, 0xdd, 0xff, 0x01, 0x84, 0xa5, 0x7d, 0xba, 0xdd, 0xfe, 0x7f, + 0xbf, 0xbf, 0x6d, 0x76, 0xdb, 0x01, 0x00, 0x48, 0x36, 0xdb, 0xd6, 0x07, + 0xc0, 0x88, 0xb4, 0xb6, 0xbf, 0xff, 0x7f, 0x00, 0x0c, 0x24, 0x44, 0xdb, + 0xed, 0xff, 0xdf, 0xef, 0x6e, 0xdb, 0x6e, 0xb7, 0x00, 0x80, 0x44, 0x93, + 0xed, 0x5b, 0x07, 0x40, 0x91, 0xd2, 0xfa, 0xfc, 0xf6, 0x7f, 0x00, 0x02, + 0xb4, 0x35, 0xd9, 0xef, 0xff, 0xff, 0xfb, 0xef, 0xb6, 0xc9, 0xe4, 0x00, + 0x10, 0x24, 0xd9, 0x6d, 0xfb, 0x03, 0x00, 0x27, 0xfe, 0xd3, 0xd6, 0xdb, + 0x3f, 0x00, 0xa2, 0x94, 0xb4, 0xdb, 0x7c, 0xff, 0xff, 0xbf, 0xd9, 0xad, + 0xdb, 0x7d, 0x00, 0x40, 0x32, 0xd9, 0xb6, 0xef, 0x03, 0x60, 0xe4, 0x5a, + 0x5f, 0x5f, 0xff, 0x1f, 0x00, 0x02, 0x52, 0x92, 0xec, 0xb6, 0xff, 0xff, + 0xef, 0xff, 0x6d, 0xb6, 0x3b, 0x00, 0x28, 0x90, 0xcc, 0xbe, 0xfd, 0x03, + 0xa0, 0x88, 0xeb, 0xf9, 0xfd, 0xf5, 0x1f, 0x00, 0x82, 0x53, 0xbb, 0x6d, + 0xf7, 0xff, 0xf9, 0xff, 0x6f, 0xdb, 0x6d, 0x1b, 0x00, 0x04, 0xc9, 0x66, + 0xdb, 0x57, 0x03, 0xa0, 0x52, 0xaf, 0xa7, 0x97, 0xff, 0x0f, 0x00, 0x51, + 0x48, 0xda, 0x66, 0xdb, 0xff, 0xf8, 0xdf, 0xed, 0xbe, 0xed, 0x0e, 0x00, + 0x92, 0x64, 0x32, 0xeb, 0xf6, 0x01, 0x20, 0x63, 0xbd, 0xbc, 0xfc, 0xfa, + 0x0f, 0x00, 0x09, 0x20, 0x89, 0x3e, 0xff, 0xff, 0xe0, 0x7f, 0xdf, 0x6f, + 0xdb, 0x07, 0x00, 0x01, 0x24, 0xbb, 0xed, 0xfe, 0x01, 0xa0, 0xce, 0xf5, + 0xf6, 0xdb, 0xdf, 0x07, 0x00, 0x41, 0xad, 0x5f, 0xf2, 0xed, 0xff, 0xc0, + 0xff, 0xbf, 0xdd, 0x92, 0x03, 0x00, 0x44, 0xb2, 0xd9, 0x7d, 0xfb, 0x01, + 0xe0, 0xaa, 0xdf, 0x9b, 0x7f, 0xfb, 0x07, 0x80, 0x28, 0x21, 0x64, 0xbb, + 0x7f, 0x7f, 0x80, 0xff, 0xf6, 0xbb, 0xee, 0x03, 0x80, 0x22, 0x99, 0xed, + 0xb6, 0xff, 0x00, 0x90, 0xb8, 0x5e, 0x5b, 0x6b, 0xed, 0x03, 0x00, 0x01, + 0xa6, 0x6d, 0xdb, 0xf6, 0x7f, 0x00, 0xff, 0xff, 0xf6, 0xcd, 0x00, 0x40, + 0x10, 0xc9, 0x6c, 0xff, 0xf7, 0x00, 0xa0, 0xe3, 0x72, 0xeb, 0xef, 0xff, + 0x03, 0x80, 0xe0, 0x90, 0x24, 0xdb, 0xbd, 0x3f, 0x00, 0xfe, 0xdb, 0x6f, + 0xfb, 0x00, 0x00, 0x89, 0x4c, 0xb6, 0xd9, 0x7e, 0x00, 0x70, 0xaf, 0xaf, + 0x6f, 0xb5, 0xde, 0x03, 0x80, 0x94, 0x92, 0xb6, 0xf9, 0xf6, 0x3f, 0x00, + 0xfc, 0xbf, 0xdd, 0x7b, 0x00, 0x10, 0x48, 0x26, 0xb3, 0xdf, 0x7f, 0x00, + 0x70, 0xd8, 0xae, 0xfd, 0xff, 0xf7, 0x03, 0x80, 0x00, 0xd2, 0x36, 0xcf, + 0xdf, 0x3f, 0x00, 0xb8, 0x6d, 0xdf, 0x16, 0x00, 0x48, 0x44, 0xb2, 0xfb, + 0x6c, 0x3f, 0x00, 0x50, 0x75, 0xfd, 0xa5, 0xd5, 0xfe, 0x01, 0x40, 0xd1, + 0x12, 0xa2, 0x7d, 0xfb, 0x1f, 0x00, 0xf0, 0xff, 0xbf, 0x0d, 0x00, 0x20, + 0x12, 0x9b, 0xcd, 0xf6, 0x3f, 0x00, 0x90, 0xd5, 0xa7, 0xfd, 0x77, 0xab, + 0x03, 0x40, 0x1c, 0xc8, 0xbe, 0x6d, 0xfb, 0x1f, 0x00, 0xe0, 0xff, 0xee, + 0x07, 0x00, 0x04, 0x91, 0xc9, 0x7e, 0xbf, 0x1f, 0x00, 0x30, 0x57, 0xbf, + 0xa6, 0xde, 0xfd, 0x01, 0x40, 0x40, 0x6b, 0xd3, 0x6e, 0xef, 0x0f, 0x00, + 0xc0, 0xeb, 0x7d, 0x03, 0x00, 0x90, 0xc8, 0x6c, 0x76, 0xfb, 0x0f, 0x00, + 0x70, 0x5c, 0xe5, 0xf7, 0xfa, 0xeb, 0x01, 0x40, 0x50, 0x49, 0x92, 0xf4, + 0xfd, 0x0f, 0x00, 0xc0, 0xff, 0xdb, 0x01, 0x80, 0x44, 0x44, 0x66, 0xbb, + 0x6f, 0x0f, 0x00, 0xd0, 0xf1, 0x95, 0xf6, 0x6f, 0xad, 0x01, 0x40, 0x08, + 0x78, 0xdb, 0xb6, 0xef, 0x0f, 0x00, 0x00, 0xdf, 0xd6, 0x00, 0x00, 0x20, + 0x32, 0xb3, 0xdb, 0xfd, 0x0f, 0x00, 0x10, 0xd7, 0xf7, 0xb6, 0xd8, 0xeb, + 0x03, 0x20, 0x43, 0x27, 0xd9, 0xb6, 0xfd, 0x0f, 0x00, 0x00, 0xff, 0x7e, + 0x00, 0x40, 0x12, 0x93, 0xd9, 0xec, 0xb6, 0x07, 0x00, 0x70, 0x55, 0xdd, + 0xf6, 0x6f, 0xbb, 0x01, 0x40, 0x28, 0xa1, 0x6f, 0xb6, 0xb7, 0x0f, 0x00, + 0x00, 0xde, 0x1f, 0x00, 0x80, 0x88, 0xd8, 0xcc, 0x66, 0xff, 0x03, 0x00, + 0x70, 0xf4, 0xf5, 0xdb, 0xaa, 0xee, 0x01, 0x60, 0x28, 0x2d, 0x49, 0xf7, + 0xf6, 0x07, 0x00, 0x00, 0x7c, 0x0f, 0x00, 0x08, 0x48, 0x66, 0x6e, 0xfb, + 0xef, 0x03, 0x00, 0xd0, 0xd5, 0xdf, 0x52, 0xff, 0xda, 0x03, 0x20, 0xa3, + 0xa5, 0xd9, 0xb2, 0xff, 0x07, 0x00, 0x00, 0xf8, 0x07, 0x00, 0x20, 0x22, + 0x33, 0x37, 0xbf, 0xfd, 0x01, 0x00, 0x70, 0x5f, 0xf7, 0xfe, 0xab, 0x6b, + 0x02, 0xa0, 0xa8, 0xb4, 0x6d, 0xdf, 0xf6, 0x07, 0x00, 0x00, 0xf8, 0x01, + 0x00, 0x12, 0x33, 0x11, 0xd9, 0xdd, 0xff, 0x01, 0x00, 0x70, 0x75, 0xd5, + 0x52, 0xea, 0x8a, 0x03, 0x20, 0x84, 0x36, 0x69, 0xba, 0xdb, 0x07, 0x00, + 0x00, 0xf0, 0x01, 0x00, 0x81, 0xc8, 0xcc, 0xdd, 0xed, 0xff, 0x00, 0x00, + 0x60, 0xd5, 0xdf, 0xf6, 0xae, 0x6b, 0x03, 0x00, 0xa1, 0xa4, 0x6d, 0xdf, + 0xfe, 0x07, 0x00, 0x00, 0x60, 0x00, 0x40, 0x44, 0xc6, 0xcc, 0x64, 0xb7, + 0xfd, 0x00, 0x00, 0xe0, 0x55, 0xf7, 0xd6, 0xea, 0xba, 0x07, 0x20, 0x94, + 0x94, 0x6d, 0xfb, 0xdb, 0x07, 0x00, 0x00, 0x20, 0x00, 0x20, 0x20, 0x32, + 0x76, 0x77, 0xff, 0x7f, 0x00, 0x00, 0x60, 0x7d, 0xd5, 0xb6, 0x3f, 0xaf, + 0x06, 0xa0, 0xa4, 0x95, 0x6c, 0x9b, 0xee, 0x07, 0x00, 0x00, 0x18, 0x00, + 0x10, 0x92, 0x15, 0x73, 0xbb, 0xd9, 0x3f, 0x00, 0x00, 0xe0, 0xf5, 0xff, + 0xf7, 0x6a, 0xa9, 0x06, 0x80, 0xa2, 0xb4, 0x6d, 0xfb, 0xfb, 0x07, 0x00, + 0x00, 0x04, 0x00, 0x84, 0x88, 0xc8, 0x99, 0xdd, 0xff, 0x3f, 0x00, 0x00, + 0xe0, 0x8b, 0xff, 0x96, 0x6a, 0xb6, 0x0a, 0xa0, 0x94, 0x96, 0x64, 0xdb, + 0xee, 0x07, 0x00, 0x00, 0x03, 0x08, 0x20, 0x60, 0x66, 0xec, 0xee, 0xb6, + 0x1d, 0x00, 0x00, 0xc0, 0x7e, 0xa5, 0xf4, 0xab, 0x55, 0x0d, 0x20, 0xe7, + 0xd4, 0x6d, 0xdb, 0xfb, 0x07, 0x00, 0x80, 0x00, 0x00, 0x09, 0x12, 0x33, + 0x67, 0x77, 0xff, 0x0f, 0x00, 0x00, 0xc0, 0xfa, 0xff, 0xb7, 0x7a, 0x55, + 0x19, 0x90, 0x91, 0xd4, 0x64, 0xdb, 0xee, 0x07, 0x00, 0x40, 0x00, 0x81, + 0x04, 0x88, 0x91, 0x3b, 0xbb, 0xfd, 0x0f, 0x00, 0x00, 0xc0, 0xab, 0xbf, + 0xed, 0x4e, 0xbb, 0x32, 0x20, 0x94, 0x96, 0x6c, 0xff, 0xfa, 0x03, 0x00, + 0x30, 0x40, 0x20, 0x20, 0x64, 0xcc, 0xdc, 0xdd, 0xff, 0x07, 0x00, 0x00, + 0xc0, 0xeb, 0xea, 0xfd, 0xd5, 0xaa, 0x2a, 0x20, 0xd7, 0xb0, 0x6d, 0x93, + 0xef, 0x07, 0x00, 0x08, 0x00, 0x08, 0x01, 0x23, 0xee, 0xee, 0xee, 0xfb, + 0x03, 0x00, 0x00, 0xc0, 0xfe, 0xff, 0x2d, 0xdd, 0x6a, 0x49, 0xd0, 0x90, + 0x9a, 0x64, 0xdf, 0xea, 0x07, 0x00, 0x03, 0x80, 0x40, 0x8c, 0x98, 0x33, + 0xb3, 0xbb, 0xff, 0x01, 0x00, 0x00, 0xc0, 0xa5, 0x7b, 0x6d, 0xa7, 0x56, + 0xc5, 0xa0, 0x94, 0x94, 0x6f, 0xd3, 0xbb, 0x07, 0x80, 0x10, 0x0c, 0x12, + 0x40, 0xc6, 0xb9, 0xdb, 0xfb, 0xfd, 0x01, 0x00, 0x00, 0x80, 0x97, 0xee, + 0xdf, 0xba, 0x54, 0x1a, 0xa1, 0xe5, 0xd2, 0x64, 0x7e, 0xee, 0x07, 0x60, + 0x02, 0x80, 0x00, 0x31, 0x62, 0xcc, 0xdc, 0xee, 0x7f, 0x00, 0x00, 0x00, + 0x80, 0xff, 0xff, 0xdb, 0xaa, 0xb5, 0x8a, 0x86, 0x98, 0x96, 0x6d, 0x9b, + 0xea, 0x07, 0x98, 0x00, 0x22, 0x44, 0x88, 0x39, 0x77, 0x77, 0xff, 0x7f, + 0x00, 0x00, 0x00, 0x80, 0x7d, 0x77, 0xba, 0x7b, 0x2d, 0x55, 0x3c, 0xa6, + 0xb4, 0x6c, 0xf6, 0xaf, 0x07, 0x07, 0x90, 0x88, 0x20, 0x42, 0x9c, 0xbb, + 0xbb, 0xbb, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x4b, 0xbd, 0xbf, 0x55, 0x53, + 0xa5, 0xb2, 0xa1, 0xb4, 0xc9, 0x9f, 0xda, 0xcf, 0x28, 0x24, 0x42, 0x08, + 0x31, 0xe6, 0xcc, 0xdd, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xff, 0xef, + 0xb7, 0xbd, 0xde, 0x12, 0xd1, 0xac, 0x95, 0x4d, 0xf2, 0x56, 0x9f, 0x88, + 0x80, 0x10, 0xc2, 0x9c, 0x73, 0x77, 0xef, 0xfe, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0xbf, 0xfb, 0xed, 0xeb, 0x35, 0x95, 0x72, 0xa2, 0x35, 0xcd, 0xb6, + 0xd6, 0x2f, 0x21, 0x24, 0x04, 0x31, 0xc6, 0x98, 0x33, 0xf7, 0xff, 0xff, + 0x00, 0x00, 0x00, 0x00, 0xd6, 0x6a, 0x7f, 0x5b, 0xab, 0x2d, 0x28, 0x23, + 0x65, 0xd9, 0xb6, 0x55, 0x5f, 0x88, 0x08, 0x43, 0x0c, 0x61, 0xde, 0xdd, + 0xfb, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x76, 0xff, 0x4d, 0xd7, 0x4d, + 0x4a, 0xa5, 0x29, 0x2d, 0xdb, 0xbe, 0x55, 0x1f, 0x22, 0x42, 0x28, 0xc2, + 0x39, 0xe7, 0xee, 0xee, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0xdc, 0x7f, + 0xfb, 0xb6, 0xb6, 0x95, 0x70, 0x2e, 0xa5, 0xd9, 0x24, 0x5d, 0x5f, 0x8a, + 0x28, 0x88, 0x31, 0x9e, 0x39, 0x73, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0xec, 0xb7, 0xdf, 0x6c, 0xb5, 0x65, 0x26, 0xa3, 0x39, 0x9b, 0xfc, + 0x85, 0x5d, 0x21, 0x04, 0x63, 0x1c, 0xe6, 0xdd, 0xbd, 0xfb, 0xff, 0xff, + 0x01, 0x00, 0x00, 0x00, 0xb8, 0xfa, 0xb6, 0x6f, 0x4d, 0x9a, 0x28, 0x59, + 0x4d, 0xd3, 0x2f, 0xf5, 0x3f, 0x8c, 0xd1, 0x18, 0xc6, 0x31, 0xf6, 0xdd, + 0xfe, 0xff, 0xfe, 0x01, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xb9, 0xb6, + 0x25, 0xe1, 0x4d, 0x69, 0xba, 0x6c, 0xad, 0x3c, 0x41, 0x14, 0x84, 0xe9, + 0x9e, 0x37, 0xf7, 0xff, 0xff, 0xfb, 0x03, 0x00, 0x00, 0x00, 0x70, 0x5d, + 0x3d, 0x9f, 0x3d, 0x6d, 0x26, 0x52, 0x59, 0xb6, 0x6d, 0xab, 0x7f, 0x14, + 0x82, 0xe1, 0x39, 0xe6, 0xdd, 0xfb, 0xff, 0xbf, 0xff, 0x01, 0x00, 0x00, + 0x00, 0xf0, 0xf6, 0x6f, 0x77, 0xcd, 0x92, 0xd0, 0x52, 0x4b, 0xb3, 0x49, + 0x0b, 0x3a, 0x41, 0x61, 0x38, 0x9e, 0x73, 0xee, 0xdc, 0xff, 0xff, 0xfd, + 0x03, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xd7, 0x65, 0xda, 0x66, 0x63, 0x9d, + 0xf2, 0x36, 0x7b, 0x6a, 0x7f, 0x14, 0x18, 0x8e, 0xe7, 0xd9, 0x7b, 0xff, + 0xff, 0xef, 0xff, 0x03, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xdd, 0xb6, + 0xc9, 0x4c, 0x46, 0x9a, 0x64, 0xcb, 0x5b, 0xed, 0x06, 0xc6, 0xe3, 0x71, + 0xde, 0xbd, 0xff, 0xff, 0x7f, 0xff, 0x07, 0x00, 0x00, 0x00, 0xc0, 0x7f, + 0x7f, 0xff, 0x59, 0x37, 0x75, 0xbb, 0x96, 0x66, 0xdb, 0x56, 0xf7, 0xe0, + 0xf2, 0x74, 0x9e, 0x77, 0xef, 0xfd, 0xff, 0xeb, 0xed, 0x03, 0x00, 0x00, + 0x00, 0xc0, 0xea, 0xdf, 0xb3, 0xdb, 0xde, 0xc6, 0x81, 0xb0, 0x6c, 0xba, + 0xb4, 0xf6, 0x38, 0x18, 0x3c, 0xe7, 0x9c, 0xfb, 0xff, 0x7f, 0xff, 0xff, + 0x07, 0x00, 0x00, 0x00, 0x80, 0xff, 0xf7, 0x6e, 0x66, 0xd9, 0x99, 0xac, + 0xa4, 0xcd, 0x96, 0xa5, 0xea, 0x03, 0xa7, 0xcf, 0x79, 0xef, 0xfd, 0xff, + 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfd, 0xef, 0xdf, + 0x6f, 0xef, 0x72, 0x65, 0xd9, 0xb6, 0xad, 0xe8, 0xc1, 0xe1, 0xf1, 0xbe, + 0x7b, 0xef, 0xff, 0xdf, 0x7a, 0xfb, 0x07, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0x5f, 0xdd, 0x9d, 0xac, 0x99, 0x84, 0x29, 0xcd, 0x3c, 0x4f, 0x9d, 0x7d, + 0x3c, 0x9e, 0xe7, 0xbe, 0xff, 0xff, 0xff, 0xff, 0xef, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0xfe, 0xff, 0x77, 0x7b, 0x33, 0xe7, 0x5a, 0x49, 0x9b, 0x65, + 0x59, 0x75, 0x07, 0x97, 0xf7, 0xbb, 0xef, 0xff, 0xff, 0xdb, 0xfe, 0xff, + 0x07, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xf7, 0x3f, 0xe7, 0xcf, 0x9c, 0x51, + 0x4d, 0xb0, 0x6d, 0x4b, 0xc9, 0xd3, 0xf5, 0x79, 0xfe, 0xfb, 0xff, 0xff, + 0xdb, 0xda, 0xfe, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xef, 0xde, + 0xdd, 0xf3, 0x4d, 0x52, 0x36, 0xcb, 0xd2, 0x3a, 0x7e, 0x3c, 0xde, 0xe7, + 0xbe, 0xff, 0x7f, 0xda, 0xff, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0xf8, + 0xff, 0xfb, 0xdd, 0x73, 0x8f, 0xa5, 0x9a, 0xe6, 0xd9, 0xb6, 0xe2, 0x4e, + 0xc7, 0xf7, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0xf6, 0xff, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xff, 0xff, 0x7f, 0xee, 0x79, 0xb2, 0xb2, 0x2c, 0x9f, + 0xb6, 0x54, 0xfe, 0xfb, 0x79, 0xbf, 0xff, 0xff, 0x5f, 0xda, 0xff, 0xfa, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xf7, 0xbf, 0xe7, 0x4b, + 0xb4, 0x69, 0xd3, 0x2c, 0x25, 0xbd, 0xbc, 0xcf, 0xf7, 0xfd, 0xff, 0xd7, + 0xf6, 0xfe, 0xdf, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xbf, 0x9d, + 0xf1, 0x3e, 0x57, 0x25, 0xcb, 0xb6, 0x6d, 0xa9, 0xb5, 0xef, 0xfb, 0xff, + 0xff, 0xff, 0xd5, 0xda, 0xd6, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x80, + 0xff, 0xff, 0xfb, 0xcf, 0xf5, 0x25, 0x65, 0xd9, 0x66, 0x5b, 0x4a, 0xfa, + 0xf9, 0x7e, 0xff, 0xff, 0xff, 0xf6, 0xd6, 0xdf, 0xfa, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xff, 0xef, 0x3e, 0xf7, 0x9f, 0x5b, 0x92, 0x6c, + 0xdb, 0x52, 0xe5, 0xbe, 0xdf, 0xff, 0xff, 0xbf, 0x51, 0xda, 0xfa, 0x7f, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7b, 0x9f, 0xe7, + 0x4c, 0xb3, 0x4d, 0xd3, 0x54, 0xd9, 0xe7, 0xfb, 0xff, 0xff, 0x5f, 0xdc, + 0xfa, 0xdf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0x7f, + 0xe7, 0xf9, 0x3a, 0xd3, 0xa6, 0xe9, 0xb6, 0xa5, 0xca, 0xf9, 0xfd, 0xff, + 0xff, 0x83, 0x42, 0xd2, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xf0, 0xff, 0xfd, 0xbf, 0xef, 0x4f, 0xd5, 0x64, 0xdb, 0x26, 0x4d, 0x30, + 0x7f, 0xff, 0xff, 0xff, 0x91, 0xda, 0xdb, 0xda, 0xdf, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf, 0xff, 0x7d, 0xbe, 0xb5, 0x6d, 0x97, + 0x6d, 0x93, 0x56, 0xdf, 0xff, 0xff, 0x7f, 0x81, 0x4a, 0xda, 0x7f, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xef, 0xeb, 0xbb, + 0xa6, 0x4d, 0x73, 0xcd, 0x92, 0xaa, 0xfe, 0xff, 0xff, 0x1f, 0x01, 0x6a, + 0x5b, 0xfb, 0xfb, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, + 0xfd, 0xbf, 0x5f, 0x3b, 0xdb, 0x36, 0xbb, 0x26, 0x4c, 0xf9, 0xff, 0xff, + 0x0f, 0xa3, 0x2a, 0xe9, 0x7f, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xee, 0xff, 0xff, 0xfe, 0xfe, 0xcc, 0x91, 0xec, 0x93, 0x6d, 0x93, + 0xf2, 0xff, 0xff, 0x03, 0x00, 0x6a, 0x6d, 0x6f, 0xff, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x6f, 0x76, 0xb6, 0xcd, + 0x76, 0xc9, 0x2a, 0xe9, 0xff, 0xff, 0x00, 0x02, 0x24, 0xed, 0xf9, 0xed, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, 0xdf, 0xff, + 0xd9, 0x66, 0x9b, 0x6c, 0x93, 0x54, 0xc5, 0xff, 0x3f, 0x00, 0x01, 0x95, + 0xb5, 0xaf, 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, + 0xff, 0xff, 0xfd, 0xae, 0x7d, 0xde, 0x6d, 0xf6, 0xa1, 0x8a, 0xff, 0x0f, + 0x00, 0x81, 0x90, 0xb4, 0xfd, 0xfd, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xcd, 0xb2, 0xdb, 0x2c, 0xcb, + 0x54, 0xfe, 0x01, 0x00, 0x01, 0xd2, 0xb6, 0xb7, 0xff, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x39, 0xdb, 0x76, + 0xb3, 0x4b, 0xb6, 0x0a, 0xfe, 0x00, 0x00, 0x01, 0x48, 0xda, 0xfe, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, + 0xcf, 0xb9, 0x6d, 0xb6, 0xd9, 0xa5, 0x75, 0x1c, 0x00, 0x80, 0x80, 0x20, + 0xdb, 0xda, 0xbe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0xff, 0xff, 0xff, 0x77, 0x96, 0xd9, 0x26, 0xb3, 0x4d, 0x82, 0x11, 0x00, + 0x80, 0x80, 0x24, 0x6d, 0xff, 0xf7, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xbb, 0x67, 0xdb, 0xdd, 0x36, 0xd9, + 0x54, 0x60, 0x00, 0xc0, 0x00, 0x92, 0x65, 0x6b, 0xff, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x4f, 0x7d, 0x96, + 0xd9, 0x6c, 0x36, 0xad, 0xc2, 0x00, 0x60, 0x00, 0xc8, 0xb6, 0x6d, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, + 0xff, 0xc8, 0x76, 0xbb, 0xcb, 0x64, 0x52, 0x02, 0x03, 0x10, 0x00, 0x64, + 0xda, 0xff, 0xfb, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0xff, 0xff, 0x5f, 0xd7, 0x4d, 0x33, 0x99, 0xdd, 0x96, 0x04, 0x2c, + 0x1c, 0x40, 0x22, 0xdb, 0xb6, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xdf, 0xb5, 0xed, 0xe6, 0x36, 0x9b, + 0x6c, 0x29, 0xf0, 0x03, 0x00, 0x99, 0x6c, 0xfb, 0xfd, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0x7f, 0x35, 0xbb, + 0xec, 0x76, 0x33, 0x91, 0x02, 0x00, 0x00, 0x00, 0x64, 0x67, 0xdf, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, + 0xbf, 0x6f, 0x9b, 0x9d, 0xc9, 0xce, 0x36, 0x49, 0x00, 0x00, 0x00, 0x93, + 0xb1, 0xdd, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x40, 0xff, 0x6a, 0x76, 0xbb, 0xdd, 0xd9, 0x64, 0x12, 0x01, + 0x00, 0x40, 0x98, 0xdd, 0x6d, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xdf, 0x66, 0x73, 0x33, 0xbb, + 0x9d, 0x4d, 0x00, 0x00, 0x00, 0x63, 0xe6, 0xf6, 0xff, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xed, 0xfd, + 0xee, 0xee, 0x36, 0x73, 0x2b, 0x04, 0x00, 0xa0, 0x38, 0x75, 0xbf, 0xff, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x7f, 0xd9, 0xec, 0xce, 0x66, 0x66, 0x66, 0x22, 0x04, 0x00, 0xc6, + 0x99, 0xbb, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x5e, 0xb3, 0xdb, 0xb9, 0xcd, 0xc9, 0x88, 0x89, + 0x00, 0x68, 0x31, 0xee, 0xdd, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xbe, 0xbb, 0x9b, 0x3f, + 0xbb, 0x33, 0x23, 0x04, 0x00, 0x8c, 0xf3, 0xee, 0xff, 0x03, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xbc, 0x67, + 0x76, 0x77, 0xb2, 0x66, 0xce, 0x0c, 0xd1, 0xd6, 0xe3, 0x79, 0xf7, 0xff, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0xfd, 0xef, 0xe6, 0xee, 0xce, 0x9c, 0x31, 0x16, 0x00, 0x3c, + 0x9e, 0xfb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x78, 0x9f, 0xdb, 0xdc, 0x9d, 0x99, 0x33, 0xc6, + 0xc1, 0xff, 0x8f, 0xe7, 0xbb, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xf7, 0xbd, 0xbb, 0x33, + 0x7b, 0xee, 0x18, 0x1e, 0x50, 0xf0, 0xf9, 0xfe, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x7b, + 0xf7, 0x77, 0xf7, 0xe6, 0x9c, 0xe3, 0xf0, 0x4d, 0xff, 0x7c, 0xef, 0xff, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0xdf, 0x76, 0x7f, 0xcf, 0x9e, 0x73, 0x8f, 0x07, 0xff, 0x0b, + 0xdf, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0xee, 0xcd, 0xdd, 0x9d, 0x7b, 0xf7, 0x7c, + 0x7a, 0x00, 0xf0, 0xe7, 0xfd, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x7f, 0xbf, 0xdd, 0x7b, + 0x6b, 0x9e, 0xf3, 0xe1, 0xff, 0xff, 0x7d, 0xff, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xee, + 0xb7, 0xbb, 0x7b, 0xee, 0x79, 0x8f, 0x0f, 0xfa, 0x2f, 0xff, 0xf7, 0x3f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x7e, 0xff, 0x77, 0xef, 0xdd, 0x77, 0x7c, 0xfe, 0x02, 0xe8, + 0xcf, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xef, 0xee, 0xdd, 0xb3, 0xcf, 0xf3, + 0xf1, 0xff, 0xff, 0xf9, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xfb, 0xff, 0xbf, + 0xef, 0xbe, 0xcf, 0x8f, 0xfe, 0x5f, 0xfe, 0xff, 0x0f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, + 0xbf, 0xbb, 0xf7, 0xde, 0x79, 0x3e, 0xff, 0x52, 0xd2, 0xdf, 0xff, 0x0f, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xe0, 0xef, 0xef, 0xef, 0x3c, 0xef, 0xf9, 0xf8, 0xff, 0xff, + 0xf7, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xee, 0xdc, 0xf7, 0xfe, 0xe7, + 0x97, 0xfe, 0xff, 0xfe, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xbf, + 0xef, 0xbf, 0x3e, 0xff, 0xda, 0xf6, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfe, 0xbf, 0xf7, 0xfe, 0xf7, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xfe, 0xff, 0xde, 0xbd, 0xef, 0xfb, 0xd7, 0xff, 0xbf, + 0xfd, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0xf7, 0x7d, 0xbf, + 0xff, 0xd2, 0xf6, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xbf, + 0xef, 0xfb, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0xff, 0xef, 0xbe, 0xf7, 0xef, 0xef, 0xff, 0xff, 0xff, 0x3f, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xfb, 0xdf, 0xbf, 0xff, 0xff, 0xff, + 0xff, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x7f, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, + 0xfe, 0xff, 0xfb, 0xf7, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf0, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xfd, 0xff, 0xff, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, + 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xff, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xfc, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x1f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, + 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 + }; diff --git a/deps/ncurses-6.3/test/extended_color.c b/deps/ncurses-6.3/test/extended_color.c new file mode 100644 index 0000000..bc52cc4 --- /dev/null +++ b/deps/ncurses-6.3/test/extended_color.c @@ -0,0 +1,252 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 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. * + ****************************************************************************/ +/* + * $Id: extended_color.c,v 1.15 2020/02/02 23:34:34 tom Exp $ + */ + +#include <test.priv.h> + +#if USE_EXTENDED_COLOR + +#define SHOW(n) ((n) == ERR ? "ERR" : "OK") + +#if USE_SP_FUNCS +static bool opt_s = FALSE; +#define if_opt_s(a,b) (opt_s ? (a) : (b)) +#else +#define if_opt_s(a,b) (b) +#endif + +static void +failed(const char *name) +{ + printw("...%s failed", name); + getch(); + endwin(); + ExitProgram(EXIT_FAILURE); +} + +static void +do_pair_content(SCREEN *sp, int pair) +{ + int i, f, b; + + (void) sp; + i = if_opt_s(extended_pair_content_sp(sp, pair, &f, &b), + extended_pair_content(0, &f, &b)); + if (i != OK) + failed("pair_content"); + printw("pair %d contains (%d,%d)\n", pair, f, b); + getch(); +} + +static void +do_init_pair(SCREEN *sp, int pair, int fg, int bg) +{ + int i; + + (void) sp; + i = if_opt_s(init_extended_pair_sp(sp, pair, fg, bg), + init_extended_pair(pair, fg, bg)); + if (i != OK) + failed("init_pair"); +} + +static void +do_init_color(SCREEN *sp, int color, int adjust) +{ + int r, g, b; + int i; + + (void) sp; + i = if_opt_s(extended_color_content_sp(sp, color, &r, &g, &b), + extended_color_content(color, &r, &g, &b)); + if (i != OK) + failed("color_content"); + + r = (adjust + 1000 + r) % 1000; + g = (adjust + 1000 + g) % 1000; + b = (adjust + 1000 + b) % 1000; + + i = if_opt_s(init_extended_color_sp(sp, color, r, g, b), + init_extended_color(color, r, g, b)); + if (i != OK) + failed("init_color"); +} + +static void +do_color_set(const char *expected, int pair) +{ + int i = color_set((short) pair, (void *) &pair); + printw("%s (%s)\n", expected, SHOW(i)); + if (i != OK) + failed("color_set"); + getch(); +} + +static void +show_1_rgb(SCREEN *sp, const char *name, int color, int y, int x) +{ + int r, g, b; + int i; + + (void) sp; + i = if_opt_s(extended_color_content_sp(sp, color, &r, &g, &b), + extended_color_content(color, &r, &g, &b)); + wmove(stdscr, y, x); + if (i == OK) { + printw("%-8s %3d/%3d/%3d", name, r, g, b); + } else { + printw("%-8s %s", name, SHOW(i)); + } +} + +static void +show_rgb(SCREEN *sp) +{ + int y, x; + getyx(stdscr, y, x); + show_1_rgb(sp, "RED", COLOR_RED, y + 1, x); + show_1_rgb(sp, "GREEN", COLOR_GREEN, y + 2, x); + show_1_rgb(sp, "BLUE", COLOR_BLUE, y + 3, x); + wmove(stdscr, y, x); +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: extended_color", + "", + "Options:", + " -s use sp-funcs", + NULL + }; + size_t n; + for (n = 0; n < SIZEOF(tbl); ++n) { + fprintf(stderr, "%s\n", tbl[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int i; + SCREEN *sp; + + while ((i = getopt(argc, argv, "s")) != -1) { + switch (i) { +#if USE_SP_FUNCS + case 's': + opt_s = TRUE; + break; +#endif + default: + usage(); + /* NOTREACHED */ + } + } + + slk_init(1); + sp = newterm(NULL, stdout, stdin); + cbreak(); + noecho(); + + if (!has_colors()) { + endwin(); + fprintf(stderr, "This demo requires a color terminal\n"); + ExitProgram(EXIT_FAILURE); + } + + start_color(); + + do_pair_content(sp, 0); + + printw("Initializing pair 1 to red/black\n"); + do_init_pair(sp, 1, COLOR_RED, COLOR_BLACK); + do_color_set("RED/BLACK", 1); + + printw("Initializing pair 2 to white/blue\n"); + do_init_pair(sp, 2, COLOR_WHITE, COLOR_BLUE); + do_color_set("WHITE/BLUE", 2); + + printw("Initializing pair 3 to green/black\n"); + do_init_pair(sp, 3, COLOR_GREEN, COLOR_BLACK); + do_color_set("GREEN/BLACK", 3); + + printw("Resetting colors to pair 0\n"); + do_color_set("Default Colors", 0); + + printw("Resetting colors to pair 1\n"); + do_color_set("RED/BLACK", 1); + + printw("Drawing soft-key tabs with pair 2\n"); + slk_attrset(A_BOLD); /* reverse-video is hard to see */ + (void) if_opt_s(extended_slk_color_sp(sp, 2), + extended_slk_color(2)); + for (i = 1; i <= 8; ++i) { + char temp[80]; + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) "(SLK-%d)", i); + slk_set(i, temp, 0); + } + slk_touch(); + slk_noutrefresh(); + + i = if_opt_s(can_change_color_sp(sp), + can_change_color()); + if (i) { + do_color_set("Default Colors", 0); + printw("Press any key to stop...\n"); + nodelay(stdscr, TRUE); + while (getch() == ERR) { + show_rgb(sp); + do_init_color(sp, COLOR_RED, 1); + do_init_color(sp, COLOR_BLUE, -1); + napms(50); + } + printw("...done"); + nodelay(stdscr, FALSE); + getch(); + } + + endwin(); + + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the ncurses extended color/pair functions\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/filter.c b/deps/ncurses-6.3/test/filter.c new file mode 100644 index 0000000..6cd9206 --- /dev/null +++ b/deps/ncurses-6.3/test/filter.c @@ -0,0 +1,427 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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: Thomas E. Dickey 1998 + * + * $Id: filter.c,v 1.35 2020/07/25 22:40:57 tom Exp $ + * + * An example of the 'filter()' function in ncurses, this program prompts + * for commands and executes them (like a command shell). It illustrates + * how ncurses can be used to implement programs that are not full-screen. + * + * Ncurses differs slightly from SVr4 curses. The latter does not flush its + * state when exiting program mode, so the attributes on the command lines of + * this program 'bleed' onto the executed commands. Rather than use the + * reset_shell_mode() and reset_prog_mode() functions, we could invoke endwin() + * and refresh(), but that does not work any better. + */ +#define NEED_KEY_EVENT +#include <test.priv.h> + +#if HAVE_FILTER + +#include <time.h> + +static int +show_prompt(int underline, bool clocked) +{ + int limit = COLS; + + move(0, 0); + attrset(A_NORMAL); + clrtoeol(); + attrset(A_BOLD); + addstr("Command: "); + + limit -= getcurx(stdscr); + + if (clocked) { + if (limit >= 3) { + time_t now = time((time_t *) 0); + struct tm *my = localtime(&now); + char buffer[80]; + int skip, y, x; + int margin; + + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) "%02d:%02d:%02d", + my->tm_hour, + my->tm_min, + my->tm_sec); + + if (limit > 9) { + skip = 0; + } else if (limit > 6) { + skip = 3; + } else { + skip = 6; + } + /* + * Write the clock message on the right-margin so we can show the + * results of resizing the screen. + */ + getyx(stdscr, y, x); + margin = (int) strlen(buffer) - skip; + limit -= margin; + move(0, COLS - margin); + addstr(buffer); + move(y, x); + } + } + attron(underline); + return limit; +} + +static int +new_command(char *buffer, int length, int underline, bool clocked, bool polled) +{ + int code = OK; + + if (polled) { + bool done = FALSE; + bool first = TRUE; + int y = 0, x = 0; + int n; + int mark = 0; + int used = 0; + const int gap = 2; + + timeout(20); /* no one types 50CPS... */ + while (!done) { + int limit; + int ch = getch(); + + buffer[used] = '\0'; + + limit = show_prompt(underline, clocked); + if (first) { + getyx(stdscr, y, x); + first = FALSE; + } else { + int left = 0; + + /* + * if the screen is too narrow to show the whole buffer, + * shift the editing point left/right as needed. + */ + move(y, x); + if ((used + gap) > limit) { + while ((mark - left + gap) > limit) { + left += limit / 2; + } + } + printw("%.*s", limit, buffer + left); + move(y, x + mark - left); + } + + switch (ch) { + case ERR: + continue; + case '\004': + code = ERR; + done = TRUE; + break; + case KEY_ENTER: + case '\n': + done = TRUE; + break; + case KEY_BACKSPACE: + case '\b': + if (used) { + if (mark < used) { + /* getnstr does not do this */ + if (mark > 0) { + --mark; + for (n = mark; n < used; ++n) { + buffer[n] = buffer[n + 1]; + } + } else { + flash(); + } + } else { + /* getnstr does this */ + mark = --used; + buffer[used] = '\0'; + } + } else { + flash(); + } + break; + /* + * Unlike getnstr, this function can move the cursor into the + * middle of the buffer and insert/delete at that point. + */ + case KEY_HOME: + mark = 0; + break; + case KEY_END: + mark = used; + break; + case KEY_LEFT: + if (mark > 0) { + mark--; + } else { + flash(); + } + break; + case KEY_RIGHT: + if (mark < used) { + mark++; + } else { + flash(); + } + break; +#ifdef KEY_EVENT + case KEY_EVENT: + continue; +#endif +#ifdef KEY_RESIZE + case KEY_RESIZE: + /* + * Unlike getnstr, this function "knows" what the whole screen + * is supposed to look like, and can handle resize events. + */ + continue; +#endif + case '\t': + ch = ' '; + /* FALLTHRU */ + default: + if (ch >= KEY_MIN) { + flash(); + continue; + } + if (mark < used) { + /* getnstr does not do this... */ + for (n = used + 1; n > mark; --n) { + buffer[n] = buffer[n - 1]; + } + buffer[mark] = (char) ch; + used++; + mark++; + } else { + /* getnstr does this part */ + buffer[used] = (char) ch; + mark = ++used; + } + break; + } + } + } else { + show_prompt(underline, clocked); + + code = getnstr(buffer, length); + /* + * If this returns anything except ERR/OK, it would be one of ncurses's + * extensions. Fill the buffer with something harmless that the shell + * will execute as a comment. + */ +#ifdef KEY_EVENT + if (code == KEY_EVENT) + _nc_STRCPY(buffer, "# event!", length); +#endif +#ifdef KEY_RESIZE + if (code == KEY_RESIZE) { + _nc_STRCPY(buffer, "# resize!", length); + getch(); + } +#endif + } + attroff(underline); + attroff(A_BOLD); + refresh(); + + return code; +} + +#ifdef NCURSES_VERSION +/* + * Cancel xterm's alternate-screen mode (from dialog -TD) + */ +#define isprivate(s) ((s) != 0 && strstr(s, "\033[?") != 0) +static void +cancel_altscreen(void) +{ + if (isatty(fileno(stdout)) + && key_mouse != 0 /* xterm and kindred */ + && isprivate(enter_ca_mode) + && isprivate(exit_ca_mode)) { + /* + * initscr() or newterm() already wrote enter_ca_mode as a side effect + * of initializing the screen. It would be nice to not even do that, + * but we do not really have access to the correct copy of the + * terminfo description until those functions have been invoked. + */ + (void) refresh(); + (void) putp(exit_ca_mode); + (void) fflush(stdout); + /* + * Prevent ncurses from switching "back" to the normal screen when + * exiting from this program. That would move the cursor to the + * original location saved in xterm. Normally curses sets the cursor + * position to the first line after the display, but the alternate + * screen switching is done after that point. + * + * Cancelling the strings altogether also works around the buggy + * implementation of alternate-screen in rxvt, etc., which clear more + * of the display than they should. + */ + enter_ca_mode = 0; + exit_ca_mode = 0; + } +} +#endif + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: filter [options]" + ,"" + ,"Options:" +#ifdef NCURSES_VERSION + ," -a suppress xterm alternate-screen by amending smcup/rmcup" +#endif + ," -c show current time on prompt line with \"Command\"" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -i use initscr() rather than newterm()" + ," -p poll for individual characters rather than using getnstr" + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int ch; + char buffer[80]; + int underline; +#ifdef NCURSES_VERSION + bool a_option = FALSE; +#endif + bool c_option = FALSE; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif + bool i_option = FALSE; + bool p_option = FALSE; + + setlocale(LC_ALL, ""); + + while ((ch = getopt(argc, argv, "adcip")) != -1) { + switch (ch) { +#ifdef NCURSES_VERSION + case 'a': + a_option = TRUE; + break; +#endif + case 'c': + c_option = TRUE; + break; +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif + case 'i': + i_option = TRUE; + break; + case 'p': + p_option = TRUE; + break; + default: + usage(); + } + } + + printf("starting filter program using %s...\n", + i_option ? "initscr" : "newterm"); + filter(); + if (i_option) { + initscr(); + } else { + if (newterm((char *) 0, stdout, stdin) == 0) { + fprintf(stderr, "cannot initialize terminal\n"); + ExitProgram(EXIT_FAILURE); + } + } +#ifdef NCURSES_VERSION + if (a_option) { + cancel_altscreen(); + } +#endif + cbreak(); + keypad(stdscr, TRUE); + + if (has_colors()) { + int background = COLOR_BLACK; + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (d_option && (use_default_colors() != ERR)) + background = -1; +#endif + init_pair(1, COLOR_CYAN, (short) background); + underline = COLOR_PAIR(1); + } else { + underline = A_UNDERLINE; + } + + for (;;) { + int code = new_command(buffer, sizeof(buffer) - 1, + underline, c_option, p_option); + if (code == ERR || *buffer == '\0') + break; + reset_shell_mode(); + printf("\n"); + fflush(stdout); + IGNORE_RC(system(buffer)); + reset_prog_mode(); + touchwin(stdscr); + erase(); + refresh(); + } + clear(); + refresh(); + endwin(); + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(void) +{ + printf("This program requires the filter function\n"); + ExitProgram(EXIT_FAILURE); +} +#endif /* HAVE_FILTER */ diff --git a/deps/ncurses-5.9/test/firework.c b/deps/ncurses-6.3/test/firework.c similarity index 78% rename from deps/ncurses-5.9/test/firework.c rename to deps/ncurses-6.3/test/firework.c index 2c409d8..bfeadd7 100644 --- a/deps/ncurses-5.9/test/firework.c +++ b/deps/ncurses-6.3/test/firework.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: firework.c,v 1.27 2010/11/13 20:58:25 tom Exp $ + * $Id: firework.c,v 1.37 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -37,11 +38,10 @@ static short my_bg = COLOR_BLACK; static void cleanup(void) { - curs_set(1); - endwin(); + stop_curses(); } -static RETSIGTYPE +static void onsig(int n GCC_UNUSED) { cleanup(); @@ -94,14 +94,14 @@ explode(int row, int col) showit(); init_pair(1, get_colour(&bold), my_bg); - (void) attrset(COLOR_PAIR(1) | bold); + (void) attrset(AttrArg(COLOR_PAIR(1), bold)); MvPrintw(row - 1, col - 1, " - "); MvPrintw(row + 0, col - 1, "-+-"); MvPrintw(row + 1, col - 1, " - "); showit(); init_pair(1, get_colour(&bold), my_bg); - (void) attrset(COLOR_PAIR(1) | bold); + (void) attrset(AttrArg(COLOR_PAIR(1), bold)); MvPrintw(row - 2, col - 2, " --- "); MvPrintw(row - 1, col - 2, "-+++-"); MvPrintw(row + 0, col - 2, "-+#+-"); @@ -110,7 +110,7 @@ explode(int row, int col) showit(); init_pair(1, get_colour(&bold), my_bg); - (void) attrset(COLOR_PAIR(1) | bold); + (void) attrset(AttrArg(COLOR_PAIR(1), bold)); MvPrintw(row - 2, col - 2, " +++ "); MvPrintw(row - 1, col - 2, "++#++"); MvPrintw(row + 0, col - 2, "+# #+"); @@ -119,7 +119,7 @@ explode(int row, int col) showit(); init_pair(1, get_colour(&bold), my_bg); - (void) attrset(COLOR_PAIR(1) | bold); + (void) attrset(AttrArg(COLOR_PAIR(1), bold)); MvPrintw(row - 2, col - 2, " # "); MvPrintw(row - 1, col - 2, "## ##"); MvPrintw(row + 0, col - 2, "# #"); @@ -128,7 +128,7 @@ explode(int row, int col) showit(); init_pair(1, get_colour(&bold), my_bg); - (void) attrset(COLOR_PAIR(1) | bold); + (void) attrset(AttrArg(COLOR_PAIR(1), bold)); MvPrintw(row - 2, col - 2, " # # "); MvPrintw(row - 1, col - 2, "# #"); MvPrintw(row + 0, col - 2, " "); @@ -137,17 +137,54 @@ explode(int row, int col) showit(); } +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: firework [options]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors, repeat to use in init_pair" +#endif + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + int -main( - int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) +main(int argc, char *argv[]) { - int start, end, row, diff, flag = 0, direction; + int ch; + int start, end; + int row, diff; + int flag = 0; + int direction; unsigned seed; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif - CATCHALL(onsig); + while ((ch = getopt(argc, argv, "d")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif + default: + usage(); + } + } + if (optind < argc) + usage(); - initscr(); + InitAndCatch(initscr(), onsig); noecho(); cbreak(); keypad(stdscr, TRUE); @@ -156,7 +193,7 @@ main( if (has_colors()) { start_color(); #if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) + if (d_option && (use_default_colors() == OK)) my_bg = -1; #endif } @@ -173,8 +210,8 @@ main( direction = (start > end) ? -1 : 1; diff = abs(start - end); } while (diff < 2 || diff >= LINES - 2); - (void) attrset(A_NORMAL); - for (row = 0; row < diff; row++) { + (void) attrset(AttrArg(0, A_NORMAL)); + for (row = 1; row < diff; row++) { MvPrintw(LINES - row, start + (row * direction), (direction < 0) ? "\\" : "/"); if (flag++) { diff --git a/deps/ncurses-5.9/test/firstlast.c b/deps/ncurses-6.3/test/firstlast.c similarity index 87% rename from deps/ncurses-5.9/test/firstlast.c rename to deps/ncurses-6.3/test/firstlast.c index f5328c7..0a8e5ee 100644 --- a/deps/ncurses-5.9/test/firstlast.c +++ b/deps/ncurses-6.3/test/firstlast.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2010,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 * @@ -29,7 +30,7 @@ * This test was written by Alexander V. Lukyanov to demonstrate difference * between ncurses 4.1 and SVR4 curses * - * $Id: firstlast.c,v 1.7 2010/05/01 19:11:55 tom Exp $ + * $Id: firstlast.c,v 1.9 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -40,6 +41,11 @@ fill(WINDOW *w, const char *str) const char *s; int x0 = -1, y0 = -1; int x1, y1; + int maxx, maxy, limit; + + getmaxyx(w, maxy, maxx); + wmove(w, 0, 0); + limit = maxy * maxx; for (;;) { for (s = str; *s; s++) { @@ -49,6 +55,16 @@ fill(WINDOW *w, const char *str) wmove(w, 0, 0); return; } + /* waddch() should return ERR at the lower-right corner */ + if (--limit < 0) { + beep(); + if (*str == '?') + return; + napms(500); + wmove(w, maxy - 1, 0); + str = "?"; + limit = maxx + 1; + } x0 = x1; y0 = y1; } diff --git a/deps/ncurses-5.9/test/foldkeys.c b/deps/ncurses-6.3/test/foldkeys.c similarity index 91% rename from deps/ncurses-5.9/test/foldkeys.c rename to deps/ncurses-6.3/test/foldkeys.c index a5e25e3..ba4d18c 100644 --- a/deps/ncurses-5.9/test/foldkeys.c +++ b/deps/ncurses-6.3/test/foldkeys.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2006 Free Software Foundation, Inc. * + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2006-2016,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 * @@ -29,7 +30,7 @@ /* * Author: Thomas E. Dickey, 2006 * - * $Id: foldkeys.c,v 1.4 2010/11/14 01:00:53 tom Exp $ + * $Id: foldkeys.c,v 1.10 2021/08/08 00:41:57 tom Exp $ * * Demonstrate a method for altering key definitions at runtime. * @@ -38,21 +39,11 @@ * merging only for the keys which are defined in the terminal description. */ +#define NEED_TIME_H #include <test.priv.h> #if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS -#if TIME_WITH_SYS_TIME -# include <sys/time.h> -# include <time.h> -#else -# if HAVE_SYS_TIME_H -# include <sys/time.h> -# else -# include <time.h> -# endif -#endif - #define MY_LOGFILE "demo_foldkeys.log" #define MY_KEYS (KEY_MAX + 1) @@ -63,10 +54,10 @@ static void log_last_line(WINDOW *win) { FILE *fp; - int y, x, n; - char temp[256]; if ((fp = fopen(MY_LOGFILE, "a")) != 0) { + char temp[256]; + int y, x, n; int need = sizeof(temp) - 1; if (need > COLS) need = COLS; @@ -155,6 +146,8 @@ demo_foldkeys(void) int first, second; char final[2]; char *value; + size_t need; + if (info[j].state == 0 && sscanf(info[j].value, "\033[%d;%d%c", @@ -162,8 +155,10 @@ demo_foldkeys(void) &second, final) == 3 && *final != ';' + && (need = strlen(info[j].value)) != 0 && (value = strdup(info[j].value)) != 0) { - sprintf(value, "\033[%d%c", first, *final); + (void) need; /* _nc_SLIMIT is normally nothing */ + _nc_SPRINTF(value, _nc_SLIMIT(need) "\033[%d%c", first, *final); for (k = 0; k < info_len; ++k) { if (info[k].state == 0 && !strcmp(info[k].value, value)) { @@ -172,7 +167,7 @@ demo_foldkeys(void) } } if (info[j].state == 0) { - sprintf(value, "\033O%c", *final); + _nc_SPRINTF(value, _nc_SLIMIT(need) "\033O%c", *final); for (k = 0; k < info_len; ++k) { if (info[k].state == 0 && !strcmp(info[k].value, value)) { @@ -203,13 +198,16 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) { int ch; #if HAVE_GETTIMEOFDAY - int secs, msecs; - struct timeval current, previous; + struct timeval previous; #endif + if (newterm(0, stdout, stdin) == 0) { + fprintf(stderr, "Cannot initialize terminal\n"); + ExitProgram(EXIT_FAILURE); + } + unlink(MY_LOGFILE); - newterm(0, stdout, stdin); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ @@ -228,6 +226,9 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) const char *name = keyname(escaped ? (ch - MY_KEYS) : ch); #if HAVE_GETTIMEOFDAY + int secs, msecs; + struct timeval current; + gettimeofday(&current, 0); secs = (int) (current.tv_sec - previous.tv_sec); msecs = (int) ((current.tv_usec - previous.tv_usec) / 1000); diff --git a/deps/ncurses-6.3/test/form_driver_w.c b/deps/ncurses-6.3/test/form_driver_w.c new file mode 100644 index 0000000..dd7ea68 --- /dev/null +++ b/deps/ncurses-6.3/test/form_driver_w.c @@ -0,0 +1,174 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2013-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: Gaute Hope, 2013 * + ****************************************************************************/ + +/* + * $Id: form_driver_w.c,v 1.16 2020/02/02 23:34:34 tom Exp $ + * + * Test form_driver_w (int, int, wchar_t), a wide char aware + * replacement of form_driver. + */ + +#include <test.priv.h> +#include <popup_msg.h> + +#if USE_WIDEC_SUPPORT && USE_LIBFORM && (defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH >= 20131207) + +#include <form.h> + +int +main(void) +{ + static const char *help[] = + { + "Commands:", + " ^D,^Q,ESC - quit program", + " <Tab>,<Down> - move to next field", + " <BackTab>,<Up> - move to previous field", + 0 + }; + +#define NUM_FIELDS 3 +#define MyRow(n) (4 + (n) * 2) +#define MyCol(n) 10 + FIELD *field[NUM_FIELDS + 1]; + FORM *my_form; + bool done = FALSE; + int n; + + setlocale(LC_ALL, ""); + + /* Initialize curses */ + initscr(); + cbreak(); + noecho(); + keypad(stdscr, TRUE); + + /* Initialize the fields */ + for (n = 0; n < NUM_FIELDS; ++n) { + field[n] = new_field(1, 10, MyRow(n), 18, 0, 0); + set_field_back(field[n], A_UNDERLINE); + /* Print a line for the option */ + field_opts_off(field[n], O_AUTOSKIP); + /* Don't go to next field when this is filled */ + } + field[n] = NULL; + + /* Create the form and post it */ + my_form = new_form(field); + post_form(my_form); + refresh(); + + for (n = 0; n < NUM_FIELDS; ++n) { + mvprintw(MyRow(n), MyCol(n), "Value %d:", n + 1); + } + + /* Loop through to get user requests */ + while (!done) { + wint_t ch; + int ret = get_wch(&ch); + + mvprintw(MyRow(NUM_FIELDS), + MyCol(NUM_FIELDS), + "Got %d (%#x), type: %s", + (int) ch, + (int) ch, + (ret == KEY_CODE_YES) + ? "KEY_CODE_YES" + : ((ret == OK) + ? "OK" + : ((ret == ERR) + ? "ERR" + : "?"))); + clrtoeol(); + + switch (ret) { + case KEY_CODE_YES: + switch (ch) { + case KEY_DOWN: + /* Go to next field */ + form_driver_w(my_form, KEY_CODE_YES, REQ_NEXT_FIELD); + /* Go to the end of the present buffer */ + /* Leaves nicely at the last character */ + form_driver_w(my_form, KEY_CODE_YES, REQ_END_LINE); + break; + case KEY_BTAB: + case KEY_UP: + /* Go to previous field */ + form_driver_w(my_form, KEY_CODE_YES, REQ_PREV_FIELD); + form_driver_w(my_form, KEY_CODE_YES, REQ_END_LINE); + break; + default: + break; + } + break; + case OK: + switch (ch) { + case CTRL('D'): + case QUIT: + case ESCAPE: + done = TRUE; + break; + case '\t': + form_driver_w(my_form, KEY_CODE_YES, REQ_NEXT_FIELD); + form_driver_w(my_form, KEY_CODE_YES, REQ_END_LINE); + break; + case HELP_KEY_1: + popup_msg(form_win(my_form), help); + break; + default: + form_driver_w(my_form, OK, (wchar_t) ch); + break; + } + break; + } + } + + /* Un post form and free the memory */ + unpost_form(my_form); + free_form(my_form); + for (n = 0; n < NUM_FIELDS; ++n) { + free_field(field[n]); + } + + endwin(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the wide-ncurses and forms library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif /* USE_WIDEC_SUPPORT */ diff --git a/deps/ncurses-5.9/test/gdc.6 b/deps/ncurses-6.3/test/gdc.6 similarity index 88% rename from deps/ncurses-5.9/test/gdc.6 rename to deps/ncurses-6.3/test/gdc.6 index ed3a4f1..383aae5 100644 --- a/deps/ncurses-5.9/test/gdc.6 +++ b/deps/ncurses-6.3/test/gdc.6 @@ -1,5 +1,6 @@ .\"*************************************************************************** -.\" Copyright (c) 1998-2003,2006 Free Software Foundation, Inc. * +.\" Copyright 2020 Thomas E. Dickey * +.\" Copyright 1998-2006,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 * @@ -26,16 +27,12 @@ .\" authorization. * .\"*************************************************************************** .\" -.\" $Id: gdc.6,v 1.3 2006/04/22 23:02:15 tom Exp $ +.\" $Id: gdc.6,v 1.5 2020/02/02 23:34:34 tom Exp $ .TH GDC 6 .SH NAME gdc \- grand digital clock (curses) .SH SYNOPSIS -.B gdc -[-n] [ -[-s] [ -.I n -] +.B gdc \fP[\fIoptions\fP] [\fIn\fP] .SH DESCRIPTION .I Gdc runs a digital clock made of reverse-video blanks on a terminal screen. @@ -44,14 +41,20 @@ You can make the clock stop, pause or resume by pressing a ``q'', ``s'' or space, respectively. .SH OPTIONS .TP -.B -n +.B \-d +use terminal's default colors for the background. +.TP +.B \-n redirects input to /dev/null, making it ignore the stop/pause commands. You can still stop it by pressing the interrupt key. .TP -.B -s +.B \-s makes digits scroll as they change. When running on a fast display, the program breaks up the scrolling into subsecond repaints, making the operation appear smooth. +.TP +.B \-t \fIhh:mm:ss\fP +specify starting time (default is ``now''). .PP With an optional numeric argument .I num @@ -61,4 +64,5 @@ seconds. Normally it runs "forever" (counting down from 2 billion seconds). .SH AUTHOR Amos Shapir, modified for curses by John Lupien. +.br Improvements for ncurses by Thomas Dickey. diff --git a/deps/ncurses-6.3/test/gdc.c b/deps/ncurses-6.3/test/gdc.c new file mode 100644 index 0000000..59c95e1 --- /dev/null +++ b/deps/ncurses-6.3/test/gdc.c @@ -0,0 +1,453 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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. * + ****************************************************************************/ +/* + * Grand digital clock for curses compatible terminals + * Usage: gdc [-s] [-t hh:mm:ss] [n] -- run for n seconds (default infinity) + * Flags: -s: scroll + * + * modified 10-18-89 for curses (jrl) + * 10-18-89 added signal handling + * + * $Id: gdc.c,v 1.54 2020/02/02 23:34:34 tom Exp $ + */ + +#include <test.priv.h> + +#include <time.h> + +#define YBASE 10 +#define XBASE 10 +#define XLENGTH 54 +#define YDEPTH 5 + +#define PAIR_DIGITS 1 +#define PAIR_OTHERS 2 +#define PAIR_FRAMES 3 + +static short disp[11] = +{ + 075557, 011111, 071747, 071717, 055711, + 074717, 074757, 071111, 075757, 075717, 002020 +}; +static long older[6], next[6], newer[6], mask; + +static int sigtermed = 0; +static bool redirected = FALSE; +static bool hascolor = FALSE; + +static void +sighndl(int signo) +{ + signal(signo, sighndl); + sigtermed = signo; + if (redirected) { + stop_curses(); + ExitProgram(EXIT_FAILURE); + } +} + +static void +check_term(void) +{ + if (sigtermed) { + (void) standend(); + stop_curses(); + fprintf(stderr, "gdc terminated by signal %d\n", sigtermed); + ExitProgram(EXIT_FAILURE); + } +} + +static void +drawbox(bool scrolling) +{ + chtype bottom[XLENGTH + 1]; + + if (hascolor) + (void) attrset(AttrArg(COLOR_PAIR(PAIR_FRAMES), 0)); + + MvAddCh(YBASE - 1, XBASE - 1, ACS_ULCORNER); + hline(ACS_HLINE, XLENGTH); + MvAddCh(YBASE - 1, XBASE + XLENGTH, ACS_URCORNER); + + MvAddCh(YBASE + YDEPTH, XBASE - 1, ACS_LLCORNER); + if ((mvinchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH)) != ERR) { + int n; + for (n = 0; n < XLENGTH; n++) { + if (!scrolling) + bottom[n] &= ~A_COLOR; + bottom[n] = ACS_HLINE | (bottom[n] & (A_ATTRIBUTES | A_COLOR)); + } + (void) mvaddchnstr(YBASE + YDEPTH, XBASE, bottom, XLENGTH); + } + MvAddCh(YBASE + YDEPTH, XBASE + XLENGTH, ACS_LRCORNER); + + move(YBASE, XBASE - 1); + vline(ACS_VLINE, YDEPTH); + + move(YBASE, XBASE + XLENGTH); + vline(ACS_VLINE, YDEPTH); + + if (hascolor) + (void) attrset(AttrArg(COLOR_PAIR(PAIR_OTHERS), 0)); +} + +static void +standt(int on) +{ + if (on) { + if (hascolor) { + attron(COLOR_PAIR(PAIR_DIGITS)); + } else { + attron(A_STANDOUT); + } + } else { + if (hascolor) { + attron(COLOR_PAIR(PAIR_OTHERS)); + } else { + attroff(A_STANDOUT); + } + } +} + +static void +set(int t, int n) +{ + int i, m; + + m = 7 << n; + for (i = 0; i < 5; i++) { + next[i] |= ((disp[t] >> ((4 - i) * 3)) & 07) << n; + mask |= (next[i] ^ older[i]) & m; + } + if (mask & m) + mask |= m; +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: gdc [options] [count]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -n redirect input to /dev/null" + ," -s scroll each number into place, rather than flipping" + ," -t hh:mm:ss specify starting time (default is ``now'')" + ,"" + ,"If you specify a count, gdc runs for that number of seconds" + }; + unsigned j; + for (j = 0; j < SIZEOF(msg); j++) + fprintf(stderr, "%s\n", msg[j]); + ExitProgram(EXIT_FAILURE); +} + +static time_t +parse_time(const char *value) +{ + int hh, mm, ss; + int check; + time_t result; + char c; + struct tm *tm; + + if (sscanf(value, "%d:%d:%d%c", &hh, &mm, &ss, &c) != 3) { + if (sscanf(value, "%02d%02d%02d%c", &hh, &mm, &ss, &c) != 3) { + usage(); + } + } + + if ((hh < 0) || (hh >= 24) || + (mm < 0) || (mm >= 60) || + (ss < 0) || (ss >= 60)) { + usage(); + } + + /* adjust so that the localtime in the main loop will give usable time */ + result = (hh * 3600) + ((mm * 60) + ss); + for (check = 0; check < 24; ++check) { + tm = localtime(&result); + if (tm->tm_hour == hh) + break; + result += 3600; + } + + if (tm->tm_hour != hh) { + fprintf(stderr, "Cannot find local time for %s!\n", value); + usage(); + } + return result; +} + +int +main(int argc, char *argv[]) +{ + time_t now; + struct tm *tm; + long t, a; + int i, j, s, k; + int count = 0; + FILE *ofp = stdout; + FILE *ifp = stdin; + bool smooth = FALSE; + bool stages = FALSE; + time_t starts = 0; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif + + setlocale(LC_ALL, ""); + + while ((k = getopt(argc, argv, "dnst:")) != -1) { + switch (k) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif + case 'n': + ifp = fopen("/dev/null", "r"); + redirected = TRUE; + break; + case 's': + smooth = TRUE; + break; + case 't': + starts = parse_time(optarg); + break; + default: + usage(); + } + } + if (optind < argc) { + count = atoi(argv[optind++]); + assert(count >= 0); + if (optind < argc) + usage(); + } + + InitAndCatch({ + if (redirected) { + char *name = getenv("TERM"); + if (name == 0 + || newterm(name, ofp, ifp) == 0) { + fprintf(stderr, "cannot open terminal\n"); + ExitProgram(EXIT_FAILURE); + } + } else { + initscr(); + } + } + ,sighndl); + + cbreak(); + noecho(); + nodelay(stdscr, 1); + curs_set(0); + + hascolor = has_colors(); + + if (hascolor) { + short bg = COLOR_BLACK; + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (d_option && (use_default_colors() == OK)) + bg = -1; +#endif + init_pair(PAIR_DIGITS, COLOR_BLACK, COLOR_RED); + init_pair(PAIR_OTHERS, COLOR_RED, bg); + init_pair(PAIR_FRAMES, COLOR_WHITE, bg); + (void) attrset(AttrArg(COLOR_PAIR(PAIR_OTHERS), 0)); + } + + restart: + for (j = 0; j < 5; j++) + older[j] = newer[j] = next[j] = 0; + + clear(); + drawbox(FALSE); + + do { + char buf[40]; + + if (starts != 0) { + now = ++starts; + } else { + time(&now); + } + tm = localtime(&now); + + mask = 0; + set(tm->tm_sec % 10, 0); + set(tm->tm_sec / 10, 4); + set(tm->tm_min % 10, 10); + set(tm->tm_min / 10, 14); + set(tm->tm_hour % 10, 20); + set(tm->tm_hour / 10, 24); + set(10, 7); + set(10, 17); + + for (k = 0; k < 6; k++) { + if (smooth) { + for (i = 0; i < 5; i++) + newer[i] = (newer[i] & ~mask) | (newer[i + 1] & mask); + newer[5] = (newer[5] & ~mask) | (next[k] & mask); + } else { + newer[k] = (newer[k] & ~mask) | (next[k] & mask); + } + next[k] = 0; + for (s = 1; s >= 0; s--) { + standt(s); + for (i = 0; i < 6; i++) { + if ((a = (newer[i] ^ older[i]) & (s ? newer : older)[i]) + != 0) { + for (j = 0, t = 1 << 26; t; t >>= 1, j++) { + if (a & t) { + if (!(a & (t << 1))) { + move(YBASE + i, XBASE + 2 * j); + } + addstr(" "); + } + } + } + if (!s) { + older[i] = newer[i]; + } + } + if (!s) { + if (smooth) + drawbox(TRUE); + refresh(); + /* + * If we're scrolling, space out the refreshes to fake + * movement. That's 7 frames, or 6 intervals, which would + * be 166 msec if we spread it out over a second. It looks + * better (but will work on a slow terminal, e.g., less + * than 9600bd) to squeeze that into a half-second, and use + * half of 170 msec to ensure that the program doesn't eat + * a lot of time when asking what time it is, at the top of + * this loop -T.Dickey + */ + if (smooth) + napms(85); + if (stages) { + stages = FALSE; + switch (wgetch(stdscr)) { + case 'q': + count = 1; + break; + case 'S': + stages = TRUE; + /* FALLTHRU */ + case 's': + nodelay(stdscr, FALSE); + break; + case ' ': + nodelay(stdscr, TRUE); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: +#endif + case '?': + goto restart; + case ERR: + check_term(); + /* FALLTHRU */ + default: + continue; + } + } + } + } + } + + /* this depends on the detailed format of ctime(3) */ + _nc_STRNCPY(buf, ctime(&now), (size_t) 30); + { + char *d2 = buf + 10; + char *s2 = buf + 19; + while ((*d2++ = *s2++) != '\0') ; + } + MvAddStr(16, 30, buf); + + move(6, 0); + drawbox(FALSE); + refresh(); + + /* + * If we're not smooth-scrolling, wait 1000 msec (1 sec). Use napms() + * rather than sleep() because the latter does odd things on some + * systems, e.g., suspending output as well. + */ + if (smooth) + napms(500); + else + napms(1000); + + /* + * This is a safe way to check if we're interrupted - making the signal + * handler set a flag that we can check. Since we're running + * nodelay(), the wgetch() call returns immediately, and in particular + * will return an error if interrupted. This works only if we can + * read from the input, of course. + */ + stages = FALSE; + switch (wgetch(stdscr)) { + case 'q': + count = 1; + break; + case 'S': + stages = TRUE; + /* FALLTHRU */ + case 's': + nodelay(stdscr, FALSE); + break; + case ' ': + nodelay(stdscr, TRUE); + break; +#ifdef KEY_RESIZE + case KEY_RESIZE: +#endif + case '?': + goto restart; + case ERR: + check_term(); + /* FALLTHRU */ + default: + continue; + } + } while (--count); + (void) standend(); + stop_curses(); + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-5.9/test/hanoi.c b/deps/ncurses-6.3/test/hanoi.c similarity index 80% rename from deps/ncurses-5.9/test/hanoi.c rename to deps/ncurses-6.3/test/hanoi.c index 3366e93..610b2d8 100644 --- a/deps/ncurses-5.9/test/hanoi.c +++ b/deps/ncurses-6.3/test/hanoi.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-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 * @@ -41,10 +42,11 @@ * * Date: 05.Nov.90 * - * $Id: hanoi.c,v 1.31 2010/11/14 01:01:07 tom Exp $ + * $Id: hanoi.c,v 1.42 2021/05/08 20:44:44 tom Exp $ */ #include <test.priv.h> +#include <math.h> #define NPEGS 3 /* This is not configurable !! */ #define MINTILES 3 @@ -57,7 +59,7 @@ #define MIDPEG 39 #define RIGHTPEG 59 -#define LENTOIND(x) (((x)-1)/2) +#define LENTOIND(x) (((int)(x)-1)/2) #define OTHER(a,b) (3-((a)+(b))) struct Peg { @@ -84,110 +86,10 @@ static short TileColour[] = COLOR_MAGENTA, /* Length 17 */ COLOR_RED, /* Length 19 */ }; +static int NTiles = 0; static int NMoves = 0; static bool AutoFlag = FALSE; -static void InitTiles(int NTiles); -static void DisplayTiles(void); -static void MakeMove(int From, int To); -static void AutoMove(int From, int To, int Num); -static void Usage(void); -static int Solved(int NumTiles); -static int GetMove(int *From, int *To); -static int InvalidMove(int From, int To); - -int -main(int argc, char **argv) -{ - int NTiles, FromCol, ToCol; - - setlocale(LC_ALL, ""); - - switch (argc) { - case 1: - NTiles = DEFAULTTILES; - break; - case 2: - NTiles = atoi(argv[1]); - if (NTiles > MAXTILES || NTiles < MINTILES) { - fprintf(stderr, "Range %d to %d\n", MINTILES, MAXTILES); - ExitProgram(EXIT_FAILURE); - } - break; - case 3: - if (strcmp(argv[2], "a")) { - Usage(); - ExitProgram(EXIT_FAILURE); - } - NTiles = atoi(argv[1]); - if (NTiles > MAXTILES || NTiles < MINTILES) { - fprintf(stderr, "Range %d to %d\n", MINTILES, MAXTILES); - ExitProgram(EXIT_FAILURE); - } - AutoFlag = TRUE; - break; - default: - Usage(); - ExitProgram(EXIT_FAILURE); - } -#ifdef TRACE - trace(TRACE_MAXIMUM); -#endif - initscr(); - if (has_colors()) { - int i; - short bg = COLOR_BLACK; - start_color(); -#if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) - bg = -1; -#endif - for (i = 0; i < 9; i++) - init_pair((short) (i + 1), bg, TileColour[i]); - } - cbreak(); - if (LINES < 24) { - endwin(); - fprintf(stderr, "Min screen length 24 lines\n"); - ExitProgram(EXIT_FAILURE); - } - if (AutoFlag) { - curs_set(0); - leaveok(stdscr, TRUE); /* Attempt to remove cursor */ - } - InitTiles(NTiles); - DisplayTiles(); - if (AutoFlag) { - do { - noecho(); - AutoMove(0, 2, NTiles); - } while (!Solved(NTiles)); - sleep(2); - } else { - echo(); - for (;;) { - if (GetMove(&FromCol, &ToCol)) - break; - if (InvalidMove(FromCol, ToCol)) { - MvAddStr(STATUSLINE, 0, "Invalid Move !!"); - refresh(); - beep(); - continue; - } - MakeMove(FromCol, ToCol); - if (Solved(NTiles)) { - MvPrintw(STATUSLINE, 0, - "Well Done !! You did it in %d moves", NMoves); - refresh(); - sleep(5); - break; - } - } - } - endwin(); - ExitProgram(EXIT_SUCCESS); -} - static int InvalidMove(int From, int To) { @@ -211,7 +113,7 @@ InvalidMove(int From, int To) } static void -InitTiles(int NTiles) +InitTiles(void) { int Size, SlotNo; @@ -232,7 +134,7 @@ DisplayTiles(void) erase(); MvAddStr(1, 24, "T O W E R S O F H A N O I"); MvAddStr(3, 34, "SJR 1990"); - MvPrintw(19, 5, "Moves : %d", NMoves); + MvPrintw(19, 5, "Moves : %d of %.0f", NMoves, pow(2.0, (float) NTiles) - 1); (void) attrset(A_REVERSE); MvAddStr(BASELINE, 8, " "); @@ -255,7 +157,7 @@ DisplayTiles(void) memset(TileBuf, ' ', len); TileBuf[len] = '\0'; if (has_colors()) - (void) attrset(COLOR_PAIR(LENTOIND(len))); + (void) attrset(AttrArg(COLOR_PAIR(LENTOIND(len)), 0)); else (void) attrset(A_REVERSE); MvAddStr(BASELINE - (SlotNo + 1), @@ -310,12 +212,12 @@ AutoMove(int From, int To, int Num) if (Num == 1) { MakeMove(From, To); napms(500); - return; + } else { + AutoMove(From, OTHER(From, To), Num - 1); + MakeMove(From, To); + napms(500); + AutoMove(OTHER(From, To), To, Num - 1); } - AutoMove(From, OTHER(From, To), Num - 1); - MakeMove(From, To); - napms(500); - AutoMove(OTHER(From, To), To, Num - 1); } static int @@ -330,9 +232,129 @@ Solved(int NumTiles) } static void -Usage(void) +usage(void) +{ + static const char *msg[] = + { + "Usage: hanoi [options] [[<No Of Tiles>] [a]]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -n NUM set number of tiles (positional param is deprecated)" + ," -X solve automatically (positional \"a\" is deprecated)" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char **argv) { - fprintf(stderr, "Usage: hanoi [<No Of Tiles>] [a]\n"); - fprintf(stderr, - "The 'a' option causes the tower to be solved automatically\n"); + int ch, FromCol, ToCol; + +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif + + NTiles = DEFAULTTILES; + while ((ch = getopt(argc, argv, "dn:X")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif + case 'n': + NTiles = atoi(optarg); + break; + case 'X': + AutoFlag = TRUE; + break; + default: + usage(); + /* NOTREACHED */ + } + } + setlocale(LC_ALL, ""); + + switch (argc - optind) { + case 2: + if (strcmp(argv[optind + 1], "a")) { + usage(); + } + AutoFlag = TRUE; + /* FALLTHRU */ + case 1: + NTiles = atoi(argv[optind]); + /* FALLTHRU */ + case 0: + break; + default: + usage(); + } + + if (NTiles > MAXTILES || NTiles < MINTILES) { + fprintf(stderr, "Range %d to %d\n", MINTILES, MAXTILES); + usage(); + } + + initscr(); + if (has_colors()) { + int i; + short bg = COLOR_BLACK; + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (d_option && (use_default_colors() == OK)) + bg = -1; +#endif + for (i = 0; i < 9; i++) + init_pair((short) (i + 1), bg, TileColour[i]); + } + cbreak(); + if (LINES < 24) { + endwin(); + fprintf(stderr, "Min screen length 24 lines\n"); + ExitProgram(EXIT_FAILURE); + } + if (AutoFlag) { + curs_set(0); + leaveok(stdscr, TRUE); /* Attempt to remove cursor */ + } + InitTiles(); + DisplayTiles(); + if (AutoFlag) { + do { + noecho(); + AutoMove(0, 2, NTiles); + } while (!Solved(NTiles)); + sleep(2); + } else { + echo(); + for (;;) { + if (GetMove(&FromCol, &ToCol)) + break; + if (InvalidMove(FromCol, ToCol)) { + MvAddStr(STATUSLINE, 0, "Invalid Move !!"); + refresh(); + beep(); + continue; + } + MakeMove(FromCol, ToCol); + if (Solved(NTiles)) { + MvPrintw(STATUSLINE, 0, + "Well Done !! You did it in %d moves", NMoves); + refresh(); + sleep(5); + break; + } + } + } + stop_curses(); + ExitProgram(EXIT_SUCCESS); } diff --git a/deps/ncurses-5.9/test/hashtest.c b/deps/ncurses-6.3/test/hashtest.c similarity index 93% rename from deps/ncurses-5.9/test/hashtest.c rename to deps/ncurses-6.3/test/hashtest.c index 919a109..70d6228 100644 --- a/deps/ncurses-5.9/test/hashtest.c +++ b/deps/ncurses-6.3/test/hashtest.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -30,7 +31,7 @@ * * Generate timing statistics for vertical-motion optimization. * - * $Id: hashtest.c,v 1.31 2010/11/13 23:43:15 tom Exp $ + * $Id: hashtest.c,v 1.36 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -54,7 +55,7 @@ cleanup(void) endwin(); } -static RETSIGTYPE +static void finish(int sig GCC_UNUSED) { cleanup(); @@ -82,7 +83,7 @@ genlines(int base) move(0, 0); for (i = 0; i < head_lines; i++) for (j = 0; j < COLS; j++) - addch(UChar((j % 8 == 0) ? ('A' + j / 8) : '-')); + AddCh(UChar((j % 8 == 0) ? ('A' + j / 8) : '-')); move(head_lines, 0); for (i = head_lines; i < LINES - foot_lines; i++) { @@ -90,13 +91,13 @@ genlines(int base) + LO_CHAR); int hi = (extend_corner || (i < LINES - 1)) ? COLS : COLS - 1; for (j = 0; j < hi; j++) - addch(c); + AddCh(c); } for (i = LINES - foot_lines; i < LINES; i++) { move(i, 0); for (j = 0; j < (extend_corner ? COLS : COLS - 1); j++) - addch(UChar((j % 8 == 0) ? ('A' + j / 8) : '-')); + AddCh(UChar((j % 8 == 0) ? ('A' + j / 8) : '-')); } scrollok(stdscr, TRUE); @@ -222,12 +223,10 @@ main(int argc, char *argv[]) test_optimize = TRUE; } #if USE_TRACE - trace(TRACE_TIMES); + curses_trace(TRACE_TIMES); #endif - CATCHALL(finish); /* arrange interrupts to terminate */ - - (void) initscr(); /* initialize the curses library */ + InitAndCatch(initscr(), finish); 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 */ diff --git a/deps/ncurses-5.9/test/inch_wide.c b/deps/ncurses-6.3/test/inch_wide.c similarity index 91% rename from deps/ncurses-5.9/test/inch_wide.c rename to deps/ncurses-6.3/test/inch_wide.c index 3d31f17..e44a5f5 100644 --- a/deps/ncurses-5.9/test/inch_wide.c +++ b/deps/ncurses-6.3/test/inch_wide.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2007-2010,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: inch_wide.c,v 1.7 2010/05/01 19:13:46 tom Exp $ + * $Id: inch_wide.c,v 1.11 2020/02/02 23:34:34 tom Exp $ */ /* int in_wch(cchar_t *wcval); @@ -44,6 +45,7 @@ */ #include <test.priv.h> +#include <popup_msg.h> #if USE_WIDEC_SUPPORT @@ -59,13 +61,24 @@ Quit(int ch) static int test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) { + static const char *help[] = + { + "Test input from screen using inch(), etc., in a moveable viewport.", + "", + "Commands:", + " ESC/^Q - quit", + " h,j,k,l (and arrow-keys) - move viewport", + " w - recur to new window", + " for next input file", + 0 + }; + WINDOW *txtbox = 0; WINDOW *txtwin = 0; FILE *fp; int j; int txt_x = 0, txt_y = 0; int base_y; - int limit; cchar_t ch; cchar_t text[MAX_COLS]; @@ -109,6 +122,8 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) } while (!Quit(j = mvwgetch(txtwin, txt_y, txt_x))) { + int limit; + switch (j) { case KEY_DOWN: case 'j': @@ -148,6 +163,9 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) wnoutrefresh(txtwin); } break; + case HELP_KEY_1: + popup_msg(txtwin, help); + break; default: beep(); break; @@ -251,7 +269,7 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); if (argc < 2) { - fprintf(stderr, "usage: %s file\n", argv[0]); + fprintf(stderr, "usage: %s file1 [file2 [...]]\n", argv[0]); return EXIT_FAILURE; } diff --git a/deps/ncurses-5.9/test/inchs.c b/deps/ncurses-6.3/test/inchs.c similarity index 88% rename from deps/ncurses-5.9/test/inchs.c rename to deps/ncurses-6.3/test/inchs.c index f07a2bd..1d1691a 100644 --- a/deps/ncurses-5.9/test/inchs.c +++ b/deps/ncurses-6.3/test/inchs.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 2007-2012,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: inchs.c,v 1.11 2010/11/13 23:41:23 tom Exp $ + * $Id: inchs.c,v 1.18 2020/02/02 23:34:34 tom Exp $ * * Author: Thomas E Dickey */ @@ -46,10 +47,21 @@ */ #include <test.priv.h> +#include <popup_msg.h> #define BASE_Y 7 #define MAX_COLS 1024 +static void +failed(const char *s) +{ + int save = errno; + endwin(); + errno = save; + perror(s); + ExitProgram(EXIT_FAILURE); +} + static bool Quit(int ch) { @@ -59,13 +71,23 @@ Quit(int ch) static int test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) { + static const char *help[] = + { + "Test input from screen using inch(), etc., in a moveable viewport.", + "", + "Commands:", + " ESC/^Q - quit", + " h,j,k,l (and arrow-keys) - move viewport", + " w - recur to new window", + " for next input file", + 0 + }; WINDOW *txtbox = 0; WINDOW *txtwin = 0; FILE *fp; int ch, j; int txt_x = 0, txt_y = 0; int base_y; - int limit; chtype text[MAX_COLS]; if (argv[level] == 0) { @@ -87,6 +109,8 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) txtwin = stdscr; base_y = BASE_Y; } + if (txtwin == 0) + failed("cannot create txtwin"); keypad(txtwin, TRUE); /* enable keyboard mapping */ (void) cbreak(); /* take input chars one at a time, no wait for \n */ @@ -108,6 +132,8 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) } while (!Quit(j = mvwgetch(txtwin, txt_y, txt_x))) { + int limit; + switch (j) { case KEY_DOWN: case 'j': @@ -147,6 +173,9 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) wnoutrefresh(txtwin); } break; + case HELP_KEY_1: + popup_msg(txtwin, help); + break; default: beep(); break; @@ -252,7 +281,7 @@ main(int argc, char *argv[]) setlocale(LC_ALL, ""); if (argc < 2) { - fprintf(stderr, "usage: %s file\n", argv[0]); + fprintf(stderr, "usage: %s file1 [file2 [...]]\n", argv[0]); return EXIT_FAILURE; } diff --git a/deps/ncurses-5.9/test/ins_wide.c b/deps/ncurses-6.3/test/ins_wide.c similarity index 93% rename from deps/ncurses-5.9/test/ins_wide.c rename to deps/ncurses-6.3/test/ins_wide.c index 87deb1a..9f73392 100644 --- a/deps/ncurses-5.9/test/ins_wide.c +++ b/deps/ncurses-6.3/test/ins_wide.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2016,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: ins_wide.c,v 1.15 2010/12/12 00:20:14 tom Exp $ + * $Id: ins_wide.c,v 1.25 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the wins_wstr() and wins_wch functions. * Thomas Dickey - 2002/11/23 @@ -132,7 +133,7 @@ ColOf(wchar_t *buffer, int length, int margin) result += 2; break; default: - result += wcwidth(ch); + result += wcwidth((wchar_t) ch); if (ch < 32) ++result; break; @@ -228,19 +229,30 @@ test_inserts(int level) WINDOW *work = 0; WINDOW *show = 0; int margin = (2 * MY_TABSIZE) - 1; - Options option = ((m_opt ? oMove : oDefault) - | ((w_opt || (level > 0)) ? oWindow : oDefault)); + Options option = (Options) ((int) (m_opt ? oMove : oDefault) + | (int) ((w_opt || (level > 0)) + ? oWindow : oDefault)); if (first) { static char cmd[80]; setlocale(LC_ALL, ""); - putenv(strcpy(cmd, "TABSIZE=8")); + _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd)); + putenv(cmd); initscr(); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ keypad(stdscr, TRUE); + + /* + * Show the characters inserted in color, to distinguish from those + * that are shifted. + */ + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + } } limit = LINES - 5; @@ -274,14 +286,8 @@ test_inserts(int level) doupdate(); - /* - * Show the characters inserted in color, to distinguish from those that - * are shifted. - */ if (has_colors()) { - start_color(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - wbkgdset(work, COLOR_PAIR(1) | ' '); + wbkgdset(work, (chtype) (COLOR_PAIR(1) | ' ')); } while ((ch = read_linedata(work)) != ERR && !isQUIT(ch)) { @@ -290,11 +296,13 @@ test_inserts(int level) case key_RECUR: test_inserts(level + 1); - touchwin(look); + if (look) + touchwin(look); touchwin(work); touchwin(show); - wnoutrefresh(look); + if (look) + wnoutrefresh(look); wnoutrefresh(work); wnoutrefresh(show); @@ -384,7 +392,9 @@ test_inserts(int level) } break; default: - buffer[length++] = ch; + if (length >= BUFSIZ - 2) + break; + buffer[length++] = (wchar_t) ch; buffer[length] = '\0'; /* put the string in, one character at a time */ @@ -438,10 +448,10 @@ test_inserts(int level) } } if (level > 0) { - delwin(show); delwin(work); delwin(look); } + delwin(show); } static void @@ -449,7 +459,7 @@ usage(void) { static const char *tbl[] = { - "Usage: inserts [options]" + "Usage: ins_wide [options]" ,"" ,"Options:" ," -f FILE read data from given file" diff --git a/deps/ncurses-5.9/test/insdelln.c b/deps/ncurses-6.3/test/insdelln.c similarity index 93% rename from deps/ncurses-5.9/test/insdelln.c rename to deps/ncurses-6.3/test/insdelln.c index d5034a4..55e606a 100644 --- a/deps/ncurses-5.9/test/insdelln.c +++ b/deps/ncurses-6.3/test/insdelln.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2008-2009,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 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 * @@ -26,13 +27,17 @@ * authorization. * ****************************************************************************/ /* - * $Id: insdelln.c,v 1.5 2010/11/13 23:39:38 tom Exp $ + * $Id: insdelln.c,v 1.14 2020/02/02 23:34:34 tom Exp $ * * test-driver for deleteln, wdeleteln, insdelln, winsdelln, insertln, winsertln */ #include <test.priv.h> +#if HAVE_WINSDELLN + +#include <popup_msg.h> + #define SHOW(n) ((n) == ERR ? "ERR" : "OK") #define COLOR_DEFAULT (-1) @@ -66,10 +71,10 @@ color_params(unsigned state, int *pair) }; /* *INDENT-ON* */ - static bool first = TRUE; const char *result = 0; if (has_colors()) { + static bool first = TRUE; if (first) { unsigned n; @@ -175,6 +180,8 @@ do_subwindow(WINDOW *win, STATUS * sp, void func(WINDOW *)) delwin(win1); touchwin(win); } else { + if (win1) + delwin(win1); beep(); } } @@ -215,19 +222,10 @@ show_help(WINDOW *win) ,"q quit" ,"= resets count to zero." ,"? shows this help-window" - ,"" - ,"" + ,0 }; - int y_max, x_max; - int row; - - getmaxyx(win, y_max, x_max); - for (row = 0; row < (int) SIZEOF(table) && row < y_max; ++row) { - MvWPrintw(win, row, 0, "%.*s", x_max, table[row]); - } - while (wgetch(win) != 'q') - beep(); + popup_msg(win, table); } static void @@ -277,8 +275,8 @@ update_status(WINDOW *win, STATUS * sp) sp->count = 0; show_status(win, sp); break; - case '?': - do_subwindow(win, sp, show_help); + case HELP_KEY_1: + show_help(win); break; default: if (isdigit(sp->ch)) { @@ -300,7 +298,7 @@ test_winsdelln(WINDOW *win) init_status(win, &st); do { - (void) wattrset(win, st.attr | (attr_t) COLOR_PAIR(st.pair)); + (void) wattrset(win, AttrArg(COLOR_PAIR(st.pair), st.attr)); switch (st.ch) { case 'i': for (n = 0; n < st.count; ++n) @@ -341,7 +339,7 @@ test_insdelln(void) init_status(stdscr, &st); do { - (void) attrset(st.attr | (attr_t) COLOR_PAIR(st.pair)); + (void) attrset(AttrArg(COLOR_PAIR(st.pair), st.attr)); switch (st.ch) { case 'i': for (n = 0; n < st.count; ++n) @@ -385,3 +383,12 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) ExitProgram(EXIT_SUCCESS); } + +#else +int +main(void) +{ + printf("This program requires the curses winsdelln function\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-5.9/test/inserts.c b/deps/ncurses-6.3/test/inserts.c similarity index 94% rename from deps/ncurses-5.9/test/inserts.c rename to deps/ncurses-6.3/test/inserts.c index a12fa40..6d108cc 100644 --- a/deps/ncurses-5.9/test/inserts.c +++ b/deps/ncurses-6.3/test/inserts.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2002-2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2002-2016,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: inserts.c,v 1.23 2010/12/12 00:19:55 tom Exp $ + * $Id: inserts.c,v 1.30 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the winsstr() and winsch functions. * Thomas Dickey - 2002/10/19 @@ -161,12 +162,22 @@ test_inserts(int level) static char cmd[80]; setlocale(LC_ALL, ""); - putenv(strcpy(cmd, "TABSIZE=8")); + _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd)); + putenv(cmd); initscr(); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ keypad(stdscr, TRUE); + + /* + * Show the characters inserted in color, to distinguish from those + * that are shifted. + */ + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + } } limit = LINES - 5; @@ -200,14 +211,8 @@ test_inserts(int level) doupdate(); - /* - * Show the characters inserted in color, to distinguish from those that - * are shifted. - */ if (has_colors()) { - start_color(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - wbkgdset(work, COLOR_PAIR(1) | ' '); + wbkgdset(work, (chtype) (COLOR_PAIR(1) | ' ')); } while ((ch = read_linedata(work)) != ERR && !isQUIT(ch)) { @@ -216,11 +221,13 @@ test_inserts(int level) case key_RECUR: test_inserts(level + 1); - touchwin(look); + if (look) + touchwin(look); touchwin(work); touchwin(show); - wnoutrefresh(look); + if (look) + wnoutrefresh(look); wnoutrefresh(work); wnoutrefresh(show); @@ -314,6 +321,8 @@ test_inserts(int level) beep(); break; } + if (length >= BUFSIZ - 2) + break; buffer[length++] = (char) ch; buffer[length] = '\0'; @@ -368,10 +377,10 @@ test_inserts(int level) } } if (level > 0) { - delwin(show); delwin(work); delwin(look); } + delwin(show); } static void diff --git a/deps/ncurses-5.9/test/key_names.c b/deps/ncurses-6.3/test/key_names.c similarity index 91% rename from deps/ncurses-5.9/test/key_names.c rename to deps/ncurses-6.3/test/key_names.c index ba45656..69c95d6 100644 --- a/deps/ncurses-5.9/test/key_names.c +++ b/deps/ncurses-6.3/test/key_names.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007,2008 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: key_names.c,v 1.4 2008/10/11 20:22:37 tom Exp $ + * $Id: key_names.c,v 1.8 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -77,7 +78,8 @@ main(int argc, char *argv[]) endwin(); } for (n = -1; n < KEY_MAX + 512; n++) { - const char *result = key_name(n); + int check = wcwidth((wchar_t) n); + const char *result = check >= 0 ? key_name((wchar_t) n) : "?"; if (result != 0) printf("%d(%5o):%s\n", n, n, result); } diff --git a/deps/ncurses-5.9/test/keynames.c b/deps/ncurses-6.3/test/keynames.c similarity index 93% rename from deps/ncurses-5.9/test/keynames.c rename to deps/ncurses-6.3/test/keynames.c index 26cfa87..5a3d12a 100644 --- a/deps/ncurses-5.9/test/keynames.c +++ b/deps/ncurses-6.3/test/keynames.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2008 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2006,2008 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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: keynames.c,v 1.9 2008/10/11 20:22:37 tom Exp $ + * $Id: keynames.c,v 1.10 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> diff --git a/deps/ncurses-6.3/test/knight.c b/deps/ncurses-6.3/test/knight.c new file mode 100644 index 0000000..08ccf22 --- /dev/null +++ b/deps/ncurses-6.3/test/knight.c @@ -0,0 +1,956 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-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. * + ****************************************************************************/ +/* + * Knight's Tour - a brain game + * + * The original of this game was anonymous. It had an unbelievably bogus + * interface, you actually had to enter square coordinates! Redesign by + * Eric S. Raymond <esr@snark.thyrsus.com> July 22 1995. Mouse support + * added September 20th 1995. + * + * $Id: knight.c,v 1.49 2021/05/08 19:32:15 tom Exp $ + */ + +#include <test.priv.h> + +/* board size */ +#define YLIMIT 8 +#define XLIMIT 8 +#define MAXMOVES (ylimit * xlimit) + +/* where to start the instructions */ +#define INSTRY 2 +#define INSTRX 35 + +/* corner of board */ +#define BOARDY 2 +#define BOARDX 0 + +/* notification line */ +#define NOTIFYY 21 + +/* virtual color values */ +#define TRAIL_COLOR 1 +#define PLUS_COLOR 2 +#define MINUS_COLOR 3 + +#define CX(x) (2 + 4 * (x)) +#define CY(y) (1 + 2 * (y)) +#define cellmove(y, x) wmove(boardwin, CY(y), CX(x)) +#define CXINV(x) (((x) - 1) / 4) +#define CYINV(y) (((y) - 2) / 2) + +typedef struct { + int x, y; +} HISTORY; + +typedef int SQUARES[YLIMIT][XLIMIT]; + +static WINDOW *boardwin; /* the board window */ +static WINDOW *helpwin; /* the help window */ +static WINDOW *msgwin; /* the message window */ + +#if HAVE_USE_DEFAULT_COLORS +static bool d_option; +#endif + +static chtype minus = '-'; /* possible-move character */ +static chtype oldch; +static chtype plus = '+'; /* cursor hot-spot character */ +static chtype trail = '#'; /* trail character */ + +static int ylimit = YLIMIT; +static int xlimit = XLIMIT; +static int maxmoves = (YLIMIT * XLIMIT); + +static int count_tries; /* count of trials so far */ +static int test_test; /* FIXME */ +/* *INDENT-OFF* */ +static const struct { + int y; + int x; +} offsets[] = { + { 2, 1 }, + { 1, 2 }, + { -1, 2 }, + { -2, 1 }, + { -2, -1 }, + { -1, -2 }, + { 1, -2 }, + { 2, -1 }, +}; +#define MAX_OFFSET (unsigned)SIZEOF(offsets) +/* *INDENT-ON* */ + +static void +init_program(void) +{ + setlocale(LC_ALL, ""); + + srand((unsigned) getpid()); + initscr(); + cbreak(); /* immediate char return */ + noecho(); /* no immediate echo */ + + maxmoves = MAXMOVES; + boardwin = newwin(ylimit * 2 + 1, xlimit * 4 + 1, BOARDY, BOARDX); + helpwin = newwin(0, 0, INSTRY, INSTRX); + msgwin = newwin(1, INSTRX - 1, NOTIFYY, 0); + + scrollok(msgwin, TRUE); + keypad(boardwin, TRUE); + + if (has_colors()) { + int bg = COLOR_BLACK; + + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (d_option && (use_default_colors() == OK)) + bg = -1; +#endif + + (void) init_pair(TRAIL_COLOR, (short) COLOR_CYAN, (short) bg); + (void) init_pair(PLUS_COLOR, (short) COLOR_RED, (short) bg); + (void) init_pair(MINUS_COLOR, (short) COLOR_GREEN, (short) bg); + + trail |= (chtype) COLOR_PAIR(TRAIL_COLOR); + plus |= (chtype) COLOR_PAIR(PLUS_COLOR); + minus |= (chtype) COLOR_PAIR(MINUS_COLOR); + } +#ifdef NCURSES_MOUSE_VERSION + (void) mousemask(BUTTON1_CLICKED, (mmask_t *) NULL); +#endif /* NCURSES_MOUSE_VERSION */ +#if defined(PDCURSES) + mouse_set(BUTTON1_RELEASED); +#endif + + oldch = minus; +} + +static void +help1(void) +/* game explanation -- initial help screen */ +{ + (void) waddstr(helpwin, "Knight's move is a solitaire puzzle. Your\n"); + (void) waddstr(helpwin, "objective is to visit each square of the \n"); + (void) waddstr(helpwin, "chessboard exactly once by making knight's\n"); + (void) waddstr(helpwin, "moves (one square right or left followed \n"); + (void) waddstr(helpwin, "by two squares up or down, or two squares \n"); + (void) waddstr(helpwin, "right or left followed by one square up or\n"); + (void) waddstr(helpwin, "down). You may start anywhere.\n\n"); + + (void) waddstr(helpwin, "Use arrow keys to move the cursor around.\n"); + (void) waddstr(helpwin, "When you want to move your knight to the \n"); + (void) waddstr(helpwin, "cursor location, press <space> or Enter.\n"); + (void) waddstr(helpwin, "Illegal moves will be rejected with an \n"); + (void) waddstr(helpwin, "audible beep.\n\n"); + (void) waddstr(helpwin, "The program will detect if you solve the\n"); + (void) waddstr(helpwin, "puzzle; also inform you when you run out\n"); + (void) waddstr(helpwin, "of legal moves.\n\n"); + + MvWAddStr(helpwin, NOTIFYY - INSTRY, 0, + "Press `?' to go to keystroke help."); +} + +static void +help2(void) +/* keystroke help screen */ +{ + (void) waddstr(helpwin, "Possible moves are shown with `-'.\n\n"); + + (void) waddstr(helpwin, "You can move around with the arrow keys or\n"); + (void) waddstr(helpwin, "with the rogue/hack movement keys. Other\n"); + (void) waddstr(helpwin, "commands allow you to undo moves or redraw.\n"); + (void) waddstr(helpwin, "Your mouse may work; try left-button to\n"); + (void) waddstr(helpwin, "move to the square under the pointer.\n\n"); + + (void) waddstr(helpwin, "x,q -- exit y k u 7 8 9\n"); + (void) waddstr(helpwin, "r -- redraw screen \\|/ \\|/ \n"); + (void) waddstr(helpwin, "bksp -- undo move h-+-l 4-+-6\n"); + (void) waddstr(helpwin, "a -- autojump /|\\ /|\\ \n"); + if (ylimit <= 6) { + (void) waddstr(helpwin, "R -- solve (slow) b j n 1 2 3\n"); + } else { + (void) waddstr(helpwin, " b j n 1 2 3\n"); + } + + (void) waddstr(helpwin, "\nYou can place your knight on the selected\n"); + (void) waddstr(helpwin, "square with spacebar, Enter, or the keypad\n"); + (void) waddstr(helpwin, "center key. Use F/B to review the path.\n"); + + MvWAddStr(helpwin, NOTIFYY - INSTRY, 0, + "Press `?' to go to game explanation"); +} + +static void +show_help(bool * keyhelp) +{ + werase(helpwin); + if (*keyhelp) { + help1(); + *keyhelp = FALSE; + } else { + help2(); + *keyhelp = TRUE; + } + wrefresh(helpwin); +} + +static inline bool +isValidYX(int y, int x) +{ + return (y >= 0 && y < ylimit && x >= 0 && x < xlimit) ? TRUE : FALSE; +} + +static inline bool +isUnusedYX(SQUARES squares, int y, int x) +{ + return (isValidYX(y, x) && (!squares[y][x]) ? TRUE : FALSE); +} + +static bool +boardIsFilled(SQUARES squares, int y, int x) +{ + unsigned n; + + for (n = 0; n < MAX_OFFSET; n++) { + if (isUnusedYX(squares, y + offsets[n].y, x + offsets[n].x)) { + return FALSE; + } + } + return TRUE; +} + +static void +drawBoard(void) +{ + int i, j; + + MvAddStr(0, 20, "KNIGHT'S MOVE -- a logical solitaire"); + + move(BOARDY, BOARDX); + waddch(boardwin, ACS_ULCORNER); + for (j = 0; j < (ylimit - 1); j++) { + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_TTEE); + } + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_URCORNER); + + for (i = 1; i < ylimit; i++) { + move(BOARDY + i * 2 - 1, BOARDX); + waddch(boardwin, ACS_VLINE); + for (j = 0; j < xlimit; j++) { + waddch(boardwin, ' '); + waddch(boardwin, ' '); + waddch(boardwin, ' '); + waddch(boardwin, ACS_VLINE); + } + move(BOARDY + i * 2, BOARDX); + waddch(boardwin, ACS_LTEE); + for (j = 0; j < xlimit - 1; j++) { + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_PLUS); + } + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_RTEE); + } + + move(BOARDY + i * 2 - 1, BOARDX); + waddch(boardwin, ACS_VLINE); + for (j = 0; j < xlimit; j++) { + waddch(boardwin, ' '); + waddch(boardwin, ' '); + waddch(boardwin, ' '); + waddch(boardwin, ACS_VLINE); + } + + move(BOARDY + i * 2, BOARDX); + waddch(boardwin, ACS_LLCORNER); + for (j = 0; j < xlimit - 1; j++) { + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_BTEE); + } + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_HLINE); + waddch(boardwin, ACS_LRCORNER); +} + +static void +mark_possibles(SQUARES squares, int y, int x, chtype mark) +{ + unsigned n; + + for (n = 0; n < MAX_OFFSET; n++) { + if (isUnusedYX(squares, y + offsets[n].y, x + offsets[n].x)) { + cellmove(y + offsets[n].y, x + offsets[n].x); + waddch(boardwin, mark); + } + } +} + +static bool +find_next_move(SQUARES squares, HISTORY * doneData, int doneSize, int *y, int *x) +{ + bool result = FALSE; + + if (doneSize > 1) { + unsigned j; + int oldy = doneData[doneSize - 1].y; + int oldx = doneData[doneSize - 1].x; + int found = -1; + int first = -1; + int next = -1; + + for (j = 0; j < MAX_OFFSET * 2; j++) { + unsigned k = j % MAX_OFFSET; + int newy = oldy + offsets[k].y; + int newx = oldx + offsets[k].x; + if (isUnusedYX(squares, newy, newx)) { + if (first < 0) + first = (int) k; + if (newy == *y + && newx == *x) { + found = (int) k; + } else if (found >= 0) { + next = (int) k; + break; + } + } + } + if (found < 0) + next = first; + if (next >= 0) { + *y = oldy + offsets[next].y; + *x = oldx + offsets[next].x; + } + result = TRUE; + } + return result; +} + +static void +count_next_moves(SQUARES squares, int count_moves, int y, int x) +{ + int count = 0; + unsigned j; + + wprintw(msgwin, "\nMove %d", count_moves); + for (j = 0; j < MAX_OFFSET; j++) { + int newy = y + offsets[j].y; + int newx = x + offsets[j].x; + if (isUnusedYX(squares, newy, newx)) { + ++count; + } + } + wprintw(msgwin, ", gives %d choices", count); + wclrtoeol(msgwin); +} + +static void +unmarkcell(int row, int column) +{ + cellmove(row, column); + waddch(boardwin, '\b'); + waddch(boardwin, ' '); + waddch(boardwin, minus); + waddch(boardwin, ' '); +} + +static void +markcell(chtype tchar, int row, int column) +{ + cellmove(row, column); + waddch(boardwin, '\b'); + waddch(boardwin, tchar); + waddch(boardwin, tchar); + waddch(boardwin, tchar); +} + +static void +drawMove(SQUARES squares, int count_moves, chtype tchar, int oldy, int oldx, int + row, int column) +/* place the stars, update board & currents */ +{ + if (count_moves <= 1) { + int i, j; + + for (i = 0; i < ylimit; i++) { + for (j = 0; j < xlimit; j++) { + if (count_moves == 0) { + unmarkcell(i, j); + } else { + cellmove(i, j); + if (winch(boardwin) == minus) + waddch(boardwin, ' '); + } + } + } + } else { + markcell(tchar, oldy, oldx); + mark_possibles(squares, oldy, oldx, ' '); + } + + if (row >= 0 && column >= 0) { + markcell(trail, row, column); + mark_possibles(squares, row, column, minus); + squares[row][column] = TRUE; + } + + wprintw(msgwin, "\nMove %d", count_moves); + if (count_tries != count_moves) + wprintw(msgwin, " (%d tries)", count_tries); + wclrtoeol(msgwin); +} + +static int +iabs(int num) +{ + if (num < 0) + return (-num); + else + return (num); +} + +static bool +evaluate_move(SQUARES squares, HISTORY * doneData, int doneSize, int row, int column) +{ + if (doneSize <= 1) + return (TRUE); + else if (squares[row][column] == TRUE) { + waddstr(msgwin, "\nYou've already been there."); + return (FALSE); + } else { + int rdif = iabs(row - doneData[doneSize - 1].y); + int cdif = iabs(column - doneData[doneSize - 1].x); + + if (!((rdif == 1) && (cdif == 2)) && !((rdif == 2) && (cdif == 1))) { + waddstr(msgwin, "\nThat's not a legal knight's move."); + return (FALSE); + } + } + + return (TRUE); +} + +static int +completed(SQUARES squares) +{ + int i, j, count = 0; + + for (i = 0; i < ylimit; i++) { + for (j = 0; j < xlimit; j++) { + if (squares[i][j] != 0) { + count += 1; + } + } + } + return ((count == maxmoves) ? -1 : count); +} + +static void +no_previous_move(void) +{ + waddstr(msgwin, "\nNo previous move."); + beep(); +} + +/* Recursively try all possible moves, starting from (y,x) */ +static int +recurBack(SQUARES squares, int y, int x, int total) +{ + int longest = total; + int best_x = x; + int best_y = y; + int result; + + if (total < maxmoves) { + unsigned k; + + for (k = 0; k < MAX_OFFSET; k++) { + int try_x = x + offsets[k].x; + int try_y = y + offsets[k].y; + if (isUnusedYX(squares, try_y, try_x)) { + ++test_test; + squares[try_y][try_x] = total + 1; + result = recurBack(squares, try_y, try_x, total + 1); + if (result > longest) { + longest = result; + best_x = try_x; + best_y = try_y; + } + if (result >= maxmoves) + break; + squares[try_y][try_x] = 0; /* allow retry... */ + } + } + } + + result = total; + if (longest > total) { + result = longest; + squares[best_y][best_x] = total + 1; + (void) recurBack(squares, best_y, best_x, total + 1); + if (result < maxmoves) + squares[best_y][best_x] = 0; + } + + return result; +} + +/* + * Solve the Knight Tour problem using backtracking, returning the length of + * the resulting solution. If this is invoked from a point where the remaining + * choices cannot complete the tour, the result will fall short. + */ +static int +useBacktracking(SQUARES result, HISTORY * doneData, int doneSize) +{ + int y = 0, x = 0, n; + SQUARES squares; + int total; + int actual = doneSize - 1; + + memset(squares, 0, sizeof(squares)); + for (n = 1; n <= actual; ++n) { + y = doneData[n].y; + x = doneData[n].x; + squares[y][x] = n; + } + + total = recurBack(squares, y, x, actual); + if (total > actual) { + for (y = 0; y < ylimit; ++y) { + for (x = 0; x < xlimit; ++x) { + result[y][x] = squares[y][x]; + if ((n = squares[y][x]) != 0) { + doneData[n].y = y; + doneData[n].x = x; + } + } + } + } + return total; +} + +static int +reviewHistory(HISTORY * history, int count_moves, int review, int *ny, int *nx) +{ + if (review < 0) { + beep(); + review = 0; + } else if (review > count_moves - 2) { + beep(); + review = count_moves - 2; + } else { + *ny = history[count_moves - review - 1].y; + *nx = history[count_moves - review - 1].x; + wprintw(msgwin, "\nReview %d:%d.", count_moves - review - 1, + count_moves - 1); + wrefresh(msgwin); + } + return review; +} + +static void +play(void) +/* play the game */ +{ + bool keyhelp; /* TRUE if keystroke help is up */ + int i, j, count; + int lastcol; /* last location visited */ + int lastrow; + int ny = 0, nx = 0; + int review = 0; /* review history */ + int test_size; + int rw = 0, col = 0; /* current row and column */ + + do { + SQUARES squares; + HISTORY history[(YLIMIT * XLIMIT) + 1]; + int count_moves = 0; /* count of moves so far */ + + /* clear screen and draw board */ + werase(boardwin); + werase(helpwin); + werase(msgwin); + drawBoard(); + help1(); + wnoutrefresh(stdscr); + wnoutrefresh(helpwin); + wnoutrefresh(msgwin); + wnoutrefresh(boardwin); + doupdate(); + + for (i = 0; i < ylimit; i++) { + for (j = 0; j < xlimit; j++) { + unmarkcell(i, j); + } + } + memset(squares, 0, sizeof(squares)); + memset(history, 0, sizeof(history)); + history[0].y = history[0].x = -1; + history[1].y = history[1].x = -1; + lastrow = lastcol = -2; + count_moves = 1; + count_tries = 1; + keyhelp = FALSE; + show_help(&keyhelp); + + for (;;) { + if (rw != lastrow || col != lastcol) { + if (lastrow >= 0 && lastcol >= 0) { + cellmove(lastrow, lastcol); + if (squares[lastrow][lastcol]) + waddch(boardwin, trail); + else + waddch(boardwin, oldch); + } + + cellmove(rw, col); + oldch = winch(boardwin); + + lastrow = rw; + lastcol = col; + } + cellmove(rw, col); + waddch(boardwin, plus); + cellmove(rw, col); + + wrefresh(msgwin); + + switch (wgetch(boardwin)) { + case 'k': + case '8': + case KEY_UP: + ny = rw + ylimit - 1; + nx = col; + break; + case 'j': + case '2': + case KEY_DOWN: + ny = rw + 1; + nx = col; + break; + case 'h': + case '4': + case KEY_LEFT: + ny = rw; + nx = col + xlimit - 1; + break; + case 'l': + case '6': + case KEY_RIGHT: + ny = rw; + nx = col + 1; + break; + case 'y': + case '7': + case KEY_A1: + ny = rw + ylimit - 1; + nx = col + xlimit - 1; + break; + case 'b': + case '1': + case KEY_C1: + ny = rw + 1; + nx = col + xlimit - 1; + break; + case 'u': + case '9': + case KEY_A3: + ny = rw + ylimit - 1; + nx = col + 1; + break; + case 'n': + case '3': + case KEY_C3: + ny = rw + 1; + nx = col + 1; + break; + +#ifdef KEY_MOUSE + case KEY_MOUSE: +#ifdef NCURSES_MOUSE_VERSION + { + MEVENT myevent; + + getmouse(&myevent); + if (myevent.y >= CY(0) && myevent.y <= CY(ylimit) + && myevent.x >= CX(0) && myevent.x <= CX(xlimit)) { + nx = CXINV(myevent.x); + ny = CYINV(myevent.y); + ungetch('\n'); + break; + } else { + beep(); + continue; + } + } +#endif /* NCURSES_MOUSE_VERSION */ +#ifdef PDCURSES + { + int test_y, test_x; + request_mouse_pos(); + test_y = MOUSE_Y_POS + 0; + test_x = MOUSE_X_POS + 1; + if (test_y >= CY(0) && test_y <= CY(ylimit) + && test_x >= CX(0) && test_x <= CX(xlimit)) { + ny = CYINV(test_y); + nx = CXINV(test_x); + wmove(helpwin, 0, 0); + wrefresh(helpwin); + ungetch('\n'); + } + break; + } +#endif /* PDCURSES */ +#endif /* KEY_MOUSE */ + + case KEY_B2: + case '\n': + case ' ': + review = 0; + if (evaluate_move(squares, history, count_moves, rw, col)) { + drawMove(squares, + count_moves, + trail, + history[count_moves - 1].y, + history[count_moves - 1].x, + rw, col); + history[count_moves].y = (short) rw; + history[count_moves].x = (short) col; + count_moves++; + count_tries++; + + if (boardIsFilled(squares, rw, col)) { + if (completed(squares) < 0) { + waddstr(msgwin, "\nYou won."); + } else { + waddstr(msgwin, + "\nNo further moves are possible."); + } + } + } else { + beep(); + } + break; + + case KEY_UNDO: + case KEY_BACKSPACE: + case '\b': + review = 0; + if (count_moves <= 0) { + no_previous_move(); + } else if (count_moves <= 1) { + ny = history[count_moves].y; + nx = history[count_moves].x; + if (nx < 0 || ny < 0) { + ny = (lastrow >= 0) ? lastrow : 0; + nx = (lastcol >= 0) ? lastcol : 0; + } + count_moves = 0; + squares[ny][nx] = FALSE; + oldch = minus; + drawMove(squares, count_moves, ' ', ny, nx, -1, -1); + count_moves = 1; + count_tries = 1; + no_previous_move(); + } else { + int oldy = history[count_moves - 1].y; + int oldx = history[count_moves - 1].x; + + if (!squares[rw][col]) { + cellmove(rw, col); + waddch(boardwin, ' '); + } + + squares[oldy][oldx] = FALSE; + --count_moves; + ny = history[count_moves - 1].y; + nx = history[count_moves - 1].x; + if (nx < 0 || ny < 0) { + ny = oldy; + nx = oldx; + } + drawMove(squares, count_moves, ' ', oldy, oldx, ny, nx); + + /* avoid problems if we just changed the current cell */ + cellmove(lastrow, lastcol); + oldch = winch(boardwin); + } + break; + + case 'a': + nx = col; + ny = rw; + if (find_next_move(squares, history, count_moves, &ny, &nx)) + count_next_moves(squares, count_moves, ny, nx); + else + beep(); + break; + + case 'F': + review = reviewHistory(history, count_moves, review - 1, + &ny, &nx); + break; + + case 'B': + review = reviewHistory(history, count_moves, review + 1, + &ny, &nx); + break; + + case 'R': + if (ylimit <= 6) { + wprintw(msgwin, "\nworking..."); + wrefresh(msgwin); + test_test = 0; + test_size = useBacktracking(squares, history, count_moves); + wprintw(msgwin, "\nOk %d:%d (%d tests)", + test_size, maxmoves, test_test); + review = 0; + while (count_moves <= test_size) { + markcell(trail, + ny = history[count_moves].y, + nx = history[count_moves].x); + count_moves++; + } + } else { + wprintw(msgwin, "\nBoard is too large."); + } + wrefresh(msgwin); + break; + +#if HAVE_CURSCR + case KEY_REDO: + case '\f': + case 'r': + clearok(curscr, TRUE); + wnoutrefresh(stdscr); + wnoutrefresh(boardwin); + wnoutrefresh(msgwin); + wnoutrefresh(helpwin); + doupdate(); + break; +#endif + + case 'q': + case 'x': + goto dropout; + + case HELP_KEY_1: + show_help(&keyhelp); + break; + + default: + beep(); + break; + } + + col = nx % xlimit; + rw = ny % ylimit; + } + + dropout: + if ((count = completed(squares)) < 0) + wprintw(msgwin, "\nYou won. Care to try again? "); + else + wprintw(msgwin, "\n%d squares filled. Try again? ", count); + wclrtoeol(msgwin); + } while + (tolower(wgetch(msgwin)) == 'y'); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: knight [options]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -n NUM set board-size to NUM*NUM (default 8x8)" + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int ch; + + while ((ch = getopt(argc, argv, "dn:")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif + case 'n': + ch = atoi(optarg); + if (ch < 3 || ch > 8) { + fprintf(stderr, "board size %d is outside [3..8]\n", ch); + usage(); + } + xlimit = ylimit = ch; + break; + default: + usage(); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(); + + init_program(); + + play(); + + endwin(); + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-5.9/test/linedata.h b/deps/ncurses-6.3/test/linedata.h similarity index 89% rename from deps/ncurses-5.9/test/linedata.h rename to deps/ncurses-6.3/test/linedata.h index 2510ee7..f042ab4 100644 --- a/deps/ncurses-5.9/test/linedata.h +++ b/deps/ncurses-6.3/test/linedata.h @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2009,2010 Free Software Foundation, Inc. * + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2009-2010,2012 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 * @@ -26,6 +27,16 @@ * authorization. * ****************************************************************************/ +/* + * $Id: linedata.h,v 1.8 2020/02/02 23:34:34 tom Exp $ + * + * Utility functions for reading a line of text from a file. + */ +#ifndef LINEDATA_H_incl +#define LINEDATA_H_incl 1 + +#include <test.priv.h> + #define isQUIT(c) ((c) == QUIT || (c) == ESCAPE) #define key_RECUR CTRL('W') @@ -85,10 +96,8 @@ read_linedata(WINDOW *work) beep(); continue; } - } else if (code != ERR) { - result = (int) ch; - break; } else { + result = (int) ch; break; } } @@ -98,3 +107,5 @@ read_linedata(WINDOW *work) } return result; } + +#endif /* LINEDATA_H_incl */ diff --git a/deps/ncurses-5.9/test/linux-color.dat b/deps/ncurses-6.3/test/linux-color.dat similarity index 92% rename from deps/ncurses-5.9/test/linux-color.dat rename to deps/ncurses-6.3/test/linux-color.dat index 528b3f0..ef922eb 100644 --- a/deps/ncurses-5.9/test/linux-color.dat +++ b/deps/ncurses-6.3/test/linux-color.dat @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2004,2006 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 2004,2006 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: linux-color.dat,v 1.2 2006/04/22 21:40:00 tom Exp $ +# $Id: linux-color.dat,v 1.3 2020/02/08 21:38:22 tom Exp $ # These values are derived from linux/drivers/char/vt.c (default_red[], # default_grn[] and default_blu[]), commented /* the default colour table, for VGA+ colour systems */ diff --git a/deps/ncurses-6.3/test/list_keys.c b/deps/ncurses-6.3/test/list_keys.c new file mode 100644 index 0000000..e3077de --- /dev/null +++ b/deps/ncurses-6.3/test/list_keys.c @@ -0,0 +1,512 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2016,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. * + ****************************************************************************/ +/* + * $Id: list_keys.c,v 1.27 2021/03/27 23:41:21 tom Exp $ + * + * Author: Thomas E Dickey + * + * List function keys for one or more terminals. + */ + +#define USE_TINFO +#include <test.priv.h> + +#if NCURSES_XNAMES +#if HAVE_TERM_ENTRY_H +#include <term_entry.h> +#else +#undef NCURSES_XNAMES +#define NCURSES_XNAMES 0 +#endif +#endif + +#if HAVE_TIGETSTR +#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) + +static bool f_opt = FALSE; +static bool m_opt = FALSE; +static bool t_opt = FALSE; +static bool x_opt = FALSE; + +typedef enum { + ktCursor + ,ktFunction + ,ktOther +#if HAVE_USE_EXTENDED_NAMES + ,ktExtended +#endif +} KEYTYPE; + +typedef struct { + KEYTYPE type; + const char *name; +} KEYNAMES; + +#define Type(n) list[n].type +#define Name(n) list[n].name + +static const char * +full_name(const char *name) +{ + const char *result = name; + int n; + for (n = 0; strnames[n] != 0; ++n) { + if (!strcmp(name, strnames[n])) { + result = strfnames[n]; + break; + } + } + return result; +} + +static int +show_key(const char *name, bool show) +{ + int width = 0; + NCURSES_CONST char *value = tigetstr((NCURSES_CONST char *) name); + + if (show && t_opt) + fputc('"', stdout); + + if (value != 0 && value != (char *) -1) { + while (*value != 0) { + char buffer[10]; + int ch = UChar(*value++); + switch (ch) { + case '\177': + _nc_STRCPY(buffer, "^?", sizeof(buffer)); + break; + case '\033': + _nc_STRCPY(buffer, "\\E", sizeof(buffer)); + break; + case '\b': + _nc_STRCPY(buffer, "\\b", sizeof(buffer)); + break; + case '\f': + _nc_STRCPY(buffer, "\\f", sizeof(buffer)); + break; + case '\n': + _nc_STRCPY(buffer, "\\n", sizeof(buffer)); + break; + case '\r': + _nc_STRCPY(buffer, "\\r", sizeof(buffer)); + break; + case ' ': + _nc_STRCPY(buffer, "\\s", sizeof(buffer)); + break; + case '\t': + _nc_STRCPY(buffer, "\\t", sizeof(buffer)); + break; + case '^': + _nc_STRCPY(buffer, "\\^", sizeof(buffer)); + break; + case ':': + _nc_STRCPY(buffer, "\\072", sizeof(buffer)); + break; + case '\\': + _nc_STRCPY(buffer, "\\\\", sizeof(buffer)); + break; + default: + if (t_opt && ch == '"') { + _nc_STRCPY(buffer, "\"\"", sizeof(buffer)); + } else if (isgraph(ch)) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "%c", ch); + } else if (ch < 32) { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "^%c", ch + '@'); + } else { + _nc_SPRINTF(buffer, _nc_SLIMIT(sizeof(buffer)) + "\\%03o", ch); + } + break; + } + width += (int) strlen(buffer); + if (show) + fputs(buffer, stdout); + } + } + + if (show && t_opt) + fputc('"', stdout); + + return width; +} + +static bool +valid_key(const char *name, TERMINAL **terms, int count) +{ + bool result = FALSE; + if (*name == 'k') { + int k; + for (k = 0; k < count; ++k) { + set_curterm(terms[k]); + if (show_key(name, FALSE)) { + result = TRUE; + break; + } + } + } + return result; +} + +static int +compare_keys(const void *a, const void *b) +{ + const KEYNAMES *p = (const KEYNAMES *) a; + const KEYNAMES *q = (const KEYNAMES *) b; + int result = (int) (p->type - q->type); + int pn, qn; + if (result == 0) { + if (p->type == ktFunction && + sscanf(p->name, "kf%d", &pn) == 1 && + sscanf(q->name, "kf%d", &qn) == 1) { + result = (pn - qn); + } else { + result = strcmp(p->name, q->name); + } + } + return result; +} + +static void +draw_line(int width) +{ + if (!t_opt) { + int j; + for (j = 0; j < width; ++j) { + printf("-"); + } + printf("\n"); + } +} + +static const char * +modified_key(const char *name) +{ + static char result[100]; + char buffer[sizeof(result) - 10]; + int value; + char chr; + static const char *modifiers[][2] = + { + {"", ""}, + {"s-", "shift-"}, + {"a-", "alt-"}, + {"as-", "alt-shift-"}, + {"c-", "ctrl-"}, + {"sc-", "ctrl-shift-"}, + {"ac-", "alt-ctrl-"}, + {"acs-" "alt-ctrl-shift-"}, + }; + + if (strlen(name) > (sizeof(result) - 3)) { + *result = '\0'; + } else if (sscanf(name, "kf%d%c", &value, &chr) == 1 && + value >= 1 && + value <= 63) { + /* map 1,2,3,4,5,6,7 to 1,2,5,... */ + int map = ((value - 1) / 12); + int key = ((value - 1) % 12); + int bit1 = (map & 2); + int bit2 = (map & 4); + map &= ~6; + map |= (bit1 << 1) | (bit2 >> 1); + _nc_SPRINTF(result, _nc_SLIMIT(sizeof(result)) + "%sF%d", modifiers[map][(unsigned) f_opt], 1 + key); + } else if (sscanf(name, "k%80[A-Z]%d%c", buffer, &value, &chr) == 2 && + (value > 1 && + value <= 8) && + (!strcmp(buffer, "UP") || + !strcmp(buffer, "DN") || + !strcmp(buffer, "LFT") || + !strcmp(buffer, "RIT") || + !strcmp(buffer, "IC") || + !strcmp(buffer, "DC") || + !strcmp(buffer, "HOM") || + !strcmp(buffer, "END") || + !strcmp(buffer, "NXT") || + !strcmp(buffer, "PRV"))) { + _nc_SPRINTF(result, _nc_SLIMIT(sizeof(result)) + "%sk%s", modifiers[value - 1][(unsigned) f_opt], buffer); + } else if (sscanf(name, "k%80[A-Z]%c", buffer, &chr) == 1 && + (!strcmp(buffer, "UP") || + !strcmp(buffer, "DN"))) { + _nc_SPRINTF(result, _nc_SLIMIT(sizeof(result)) + "%sk%s", modifiers[1][(unsigned) f_opt], buffer); + } else { + *result = '\0'; + } + return result; +} + +static void +list_keys(TERMINAL **terms, int count) +{ + int j, k; + int widths0 = 0; + int widths1 = 0; + int widths2 = 0; + int widthsx; + int check; + size_t total = 0; + size_t actual = 0; + const char *name = f_opt ? "strfname" : "strname"; + const char *modifier = "extended"; + KEYNAMES *list; + + for (total = 0; strnames[total]; ++total) { + ; + } +#if NCURSES_XNAMES + if (x_opt) { + for (k = 0; k < count; ++k) { + TERMTYPE *term; + set_curterm(terms[k]); + term = (TERMTYPE *) cur_term; + total += (size_t) (NUM_STRINGS(term) - STRCOUNT); + } + } +#endif + list = typeCalloc(KEYNAMES, total + 1); + for (j = 0; strnames[j]; ++j) { + Type(j) = ktOther; + if (sscanf(strnames[j], "kf%d", &k) == 1) { + Type(j) = ktFunction; + } else if (!(strncmp) (strnames[j], "kcu", 3)) { + Type(j) = ktCursor; + } + Name(j) = strnames[j]; + } +#if NCURSES_XNAMES + if (x_opt) { + int m, n; + + for (k = 0; k < count; ++k) { + TERMTYPE *term; + + set_curterm(terms[k]); + term = (TERMTYPE *) cur_term; + for (n = STRCOUNT; n < NUM_STRINGS(term); ++n) { + bool found = FALSE; + const char *estr = ExtStrname(term, (int) n, strnames); + for (m = STRCOUNT; m < j; ++m) { + if (!strcmp(estr, Name(m))) { + found = TRUE; + break; + } + } + if (!found) { + Type(j) = ktExtended; + Name(j++) = estr; + } + } + } + } +#endif + actual = (size_t) j; + qsort(list, actual, sizeof(KEYNAMES), compare_keys); + + widths0 = (int) strlen(name); + if (m_opt) + widths1 = (int) strlen(modifier); + + for (k = 0; k < count; ++k) { + set_curterm(terms[k]); + check = (int) strlen(termname()); + if (widths2 < check) + widths2 = check; + } + for (j = 0; Name(j) != 0; ++j) { + if (valid_key(Name(j), terms, count)) { + const char *label = f_opt ? full_name(Name(j)) : Name(j); + check = (int) strlen(label); + if (widths0 < check) + widths0 = check; + for (k = 0; k < count; ++k) { + set_curterm(terms[k]); + check = show_key(Name(j), FALSE) + 1; + if (widths2 < check) + widths2 = check; + if (m_opt) { + check = (int) strlen(modified_key(Name(j))); + if (widths1 < check) + widths1 = check; + } + } + } + } + + if (t_opt) { + printf("\"%s\"", name); + if (m_opt) + printf(",\"%s\"", modifier); + } else { + printf("%-*s", widths0, name); + if (m_opt) + printf(" %-*s", widths1, modifier); + } + for (k = 0; k < count; ++k) { + set_curterm(terms[k]); + if (t_opt) { + printf(",\"%s\"", termname()); + } else if (k + 1 >= count) { + printf(" %s", termname()); + } else { + printf(" %-*s", widths2, termname()); + } + } + printf("\n"); + + widthsx = widths0 + ((count + 1) * widths2); + + for (j = 0; Name(j) != 0; ++j) { + if (j == 0 || (Type(j) != Type(j - 1))) + draw_line(widthsx); + if (valid_key(Name(j), terms, count)) { + const char *label = f_opt ? full_name(Name(j)) : Name(j); + if (t_opt) { + printf("\"%s\"", label); + if (m_opt) + printf(",\"%s\"", modified_key(Name(j))); + } else { + printf("%-*s", widths0, label); + if (m_opt) + printf(" %-*s", widths1, modified_key(Name(j))); + } + for (k = 0; k < count; ++k) { + printf(t_opt ? "," : " "); + set_curterm(terms[k]); + check = show_key(Name(j), TRUE); + if (!t_opt) { + if (k + 1 < count) { + printf("%*s", widths2 - check, " "); + } + } + } + printf("\n"); + } + } + free(list); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: list_keys [options] [terminal [terminal2 [...]]]", + "", + "Print capabilities for terminal special keys.", + "", + "Options:", + " -f print full names", + " -m print modifier-column for shift/control keys", + " -t print result as CSV table", +#ifdef NCURSES_VERSION + " -x print extended capabilities", +#endif + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int n; + TERMINAL **terms = typeCalloc(TERMINAL *, argc + 1); + + while ((n = getopt(argc, argv, "fmtx")) != -1) { + switch (n) { + case 'f': + f_opt = TRUE; + break; + case 'm': + m_opt = TRUE; + break; + case 't': + t_opt = TRUE; + break; +#ifdef NCURSES_VERSION + case 'x': + x_opt = TRUE; + break; +#endif + default: + usage(); + break; + } + } + +#if HAVE_USE_EXTENDED_NAMES + use_extended_names(x_opt); +#endif + + if (optind < argc) { + int found = 0; + int status; + for (n = optind; n < argc; ++n) { + setupterm((NCURSES_CONST char *) argv[n], 1, &status); + if (status > 0 && cur_term != 0) { + terms[found++] = cur_term; + } + } + if (found) + list_keys(terms, found); + } else { + setupterm(NULL, 1, (int *) 0); + terms[0] = cur_term; + list_keys(terms, 1); + } + + free(terms); + + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + printf("This program requires the terminfo arrays\n"); + ExitProgram(EXIT_FAILURE); +} +#endif +#else /* !HAVE_TIGETSTR */ +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + printf("This program requires the terminfo functions such as tigetstr\n"); + ExitProgram(EXIT_FAILURE); +} +#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-5.9/test/listused.sh b/deps/ncurses-6.3/test/listused.sh similarity index 96% rename from deps/ncurses-5.9/test/listused.sh rename to deps/ncurses-6.3/test/listused.sh index 1c3fe0a..2151653 100755 --- a/deps/ncurses-5.9/test/listused.sh +++ b/deps/ncurses-6.3/test/listused.sh @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 2003-2006,2010 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2003-2006,2010 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"), # @@ -26,7 +27,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: listused.sh,v 1.8 2010/09/18 15:15:15 tom Exp $ +# $Id: listused.sh,v 1.10 2021/06/17 21:20:30 tom Exp $ # A very simple script to list all entrypoints that are used by either a test # program, or within the libraries. This relies on the output format of 'nm', # and assumes that the libraries are configured with TRACE defined, and using @@ -144,7 +145,7 @@ do if test -z "$HAVE" then for tmp in ../lib/*.a - do + do case $tmp in *_*|*+*) continue diff --git a/deps/ncurses-5.9/test/lrtest.c b/deps/ncurses-6.3/test/lrtest.c similarity index 94% rename from deps/ncurses-5.9/test/lrtest.c rename to deps/ncurses-6.3/test/lrtest.c index da12034..9c77577 100644 --- a/deps/ncurses-5.9/test/lrtest.c +++ b/deps/ncurses-6.3/test/lrtest.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2005,2010 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2010,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 * @@ -34,7 +35,7 @@ * This can't be part of the ncurses test-program, because ncurses rips off the * bottom line to do labels. * - * $Id: lrtest.c,v 1.22 2010/05/01 19:11:55 tom Exp $ + * $Id: lrtest.c,v 1.27 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -148,9 +149,9 @@ main( nodelay(stdscr, TRUE); #ifdef TRACE else if (ch == 'T') - trace(0); + curses_trace(0); else if (ch == 't') - trace(TRACE_CALLS | TRACE_ICALLS | TRACE_UPDATE); + curses_trace(TRACE_CALLS | TRACE_ICALLS | TRACE_UPDATE); #endif #ifdef KEY_RESIZE else if (ch == KEY_RESIZE) { @@ -174,8 +175,7 @@ main( refresh(); } - curs_set(1); - endwin(); + stop_curses(); ExitProgram(EXIT_SUCCESS); } diff --git a/deps/ncurses-6.3/test/make-tar.sh b/deps/ncurses-6.3/test/make-tar.sh new file mode 100755 index 0000000..9eaf40b --- /dev/null +++ b/deps/ncurses-6.3/test/make-tar.sh @@ -0,0 +1,150 @@ +#!/bin/sh +# $Id: make-tar.sh,v 1.18 2021/10/12 21:12:16 tom Exp $ +############################################################################## +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2010-2015,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. # +############################################################################## +# Construct a tar-file containing only the test tree as well as its associated +# scripts. The reason for doing that is to simplify distributing the test +# programs as a separate package. + +CDPATH=: +export CDPATH + +TARGET=`pwd` + +: "${PKG_NAME:=ncurses-examples}" +: "${ROOTNAME:=ncurses-test}" +: "${DESTDIR:=$TARGET}" +: "${TMPDIR:=/tmp}" + +grep_assign() { + grep_assign=`grep -E "^$2\>" "$1" | sed -e "s/^$2[ ]*=[ ]*//" -e 's/"//g'` + eval "$2"=\""$grep_assign"\" +} + +grep_patchdate() { + grep_assign ../dist.mk NCURSES_MAJOR + grep_assign ../dist.mk NCURSES_MINOR + grep_assign ../dist.mk NCURSES_PATCH +} + +# The rpm spec-file in the ncurses tree is a template. Fill in the version +# information from dist.mk +edit_specfile() { + sed \ + -e "s/\\<MAJOR\\>/$NCURSES_MAJOR/g" \ + -e "s/\\<MINOR\\>/$NCURSES_MINOR/g" \ + -e "s/\\<YYYYMMDD\\>/$NCURSES_PATCH/g" "$1" >"$1.new" + chmod u+w "$1" + mv "$1.new" "$1" +} + +make_changelog() { + [ -f "$1" ] && chmod u+w "$1" + cat >"$1" <<EOF +`echo $PKG_NAME|tr 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' 'abcdefghijklmnopqrstuvwxyz'` ($NCURSES_MAJOR.$NCURSES_MINOR+$NCURSES_PATCH) unstable; urgency=low + + * snapshot of ncurses subpackage for $PKG_NAME. + + -- `head -n 1 "$HOME"/.signature` `date -R` +EOF +} + +# This can be run from either the subdirectory, or from the top-level +# source directory. We will put the tar file in the original directory. +if [ -d ./test ] +then + cd ./test || exit +fi +SOURCE=`cd ..;pwd` + +BUILD=$TMPDIR/make-tar$$ +trap "cd /; rm -rf $BUILD; exit 0" EXIT INT QUIT TERM HUP + +umask 077 +if ! ( mkdir $BUILD ) +then + echo "? cannot make build directory $BUILD" +fi + +umask 022 +mkdir $BUILD/$ROOTNAME + +cp -p -r ./* $BUILD/$ROOTNAME/ || exit + +# Add the config.* utility scripts from the top-level directory. +for i in . .. +do + for j in COPYING config.guess config.sub install-sh tar-copy.sh + do + [ -f $i/$j ] && cp -p $i/$j $BUILD/$ROOTNAME/ + done +done + +# Make rpm and dpkg scripts for test-builds +grep_patchdate +for spec in "$BUILD/$ROOTNAME"/package/*.spec +do + edit_specfile "$spec" +done +for spec in "$BUILD/$ROOTNAME"/package/debian* +do + make_changelog "$spec"/changelog +done + +cp -p "$SOURCE/NEWS" "$BUILD/$ROOTNAME" + +# cleanup empty directories (an artifact of ncurses source archives) + +touch $BUILD/$ROOTNAME/MANIFEST +( cd $BUILD/$ROOTNAME && find . -type f -print | "$SOURCE/misc/csort" >MANIFEST ) + +cd $BUILD || exit + +# Remove build-artifacts. +find . -name RCS -exec rm -rf {} \; +find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null +find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null +find $BUILD/$ROOTNAME -type d -exec rmdir {} \; 2>/dev/null + +# There is no need for this script in the tar file. +rm -f $ROOTNAME/make-tar.sh + +# Remove build-artifacts. +find . -name "*.gz" -exec rm -rf {} \; + +# Make the files writable... +chmod -R u+w . + +tar cf - $ROOTNAME | gzip >"$DESTDIR/$ROOTNAME.tar.gz" +cd "$DESTDIR" || exit + +pwd +ls -l $ROOTNAME.tar.gz + +# vi:ts=4 sw=4 diff --git a/deps/ncurses-6.3/test/mensetmanus.xbm b/deps/ncurses-6.3/test/mensetmanus.xbm new file mode 100644 index 0000000..095b8ec --- /dev/null +++ b/deps/ncurses-6.3/test/mensetmanus.xbm @@ -0,0 +1,258 @@ +#define mensetmanus_width 161 +#define mensetmanus_height 145 + +static char mensetmanus_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, + 0x01, 0x00, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x07, 0x00, 0x00, + 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x3f, 0xdb, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, + 0x00, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xf7, 0xff, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x61, 0x00, 0x00, 0xc6, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xff, + 0x1f, 0x00, 0x00, 0x00, 0xc0, 0xe1, 0xff, 0xff, 0x87, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xc3, 0xf6, 0x1f, 0x00, 0x00, + 0x00, 0xc0, 0xc0, 0xff, 0xff, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x80, 0x9f, 0x65, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x00, + 0x07, 0x80, 0x87, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x80, 0x9f, 0x6d, 0x1f, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xc7, + 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x89, 0x6d, + 0x1b, 0x00, 0x00, 0x00, 0xc0, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, + 0x00, 0xc0, 0xe1, 0x5b, 0xdb, 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x80, 0x83, + 0x5b, 0xdb, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0x81, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x00, 0xcf, 0x5b, 0x1b, 0x0c, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x80, 0x6d, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x5b, 0x1b, 0x0c, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x80, 0x6d, 0x1b, 0x00, 0x00, + 0x00, 0x00, 0xf8, 0x5b, 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0xe0, 0x83, 0x6d, 0x19, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x5b, 0x0b, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xe0, 0x83, 0x6d, 0x1b, 0x00, 0x00, 0x00, 0x00, 0x80, 0x5b, 0x0f, 0x0e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x6d, + 0x1b, 0x00, 0x00, 0x00, 0x00, 0x80, 0x4b, 0x0f, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x83, 0x79, 0x1b, 0x00, 0x00, + 0x00, 0x00, 0x80, 0x6b, 0xbf, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x03, 0xfb, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x6d, 0xb7, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x03, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xed, 0xf7, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xfe, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xed, 0xd7, 0x07, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x7f, 0xf8, 0xff, 0x07, 0x00, + 0x00, 0x00, 0xe0, 0xfe, 0xd7, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x80, 0xff, 0x7f, 0xe0, 0xff, 0x3f, 0x00, 0x00, 0x00, 0xf0, + 0xff, 0xd6, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, + 0xbf, 0x73, 0x80, 0x3b, 0x7c, 0x00, 0x00, 0x00, 0xf8, 0xe7, 0xd6, 0xef, + 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xb9, 0x73, 0xc0, + 0x3b, 0xf0, 0x01, 0x00, 0x00, 0xff, 0xc3, 0xbf, 0xe7, 0x3f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0xb8, 0x7f, 0xe0, 0x3b, 0xc0, 0x03, + 0x00, 0xc0, 0xbf, 0xc7, 0xbf, 0xe7, 0x7e, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0xb8, 0xff, 0xf8, 0x3b, 0x80, 0x07, 0x00, 0xe0, 0x61, + 0x87, 0xfd, 0xe7, 0xe6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0xb8, 0xf3, 0xff, 0x3b, 0x00, 0x0f, 0x00, 0x78, 0x60, 0x8e, 0xf1, 0x67, + 0xc7, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xb8, 0xc3, 0x8f, + 0x7b, 0x00, 0x0e, 0x00, 0x38, 0xe0, 0x8c, 0x03, 0x66, 0x87, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x07, 0xb8, 0x03, 0x83, 0x7b, 0x00, 0x1e, + 0x00, 0x1c, 0xe0, 0x1d, 0x03, 0x76, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x07, 0xb8, 0xe3, 0x8f, 0xbb, 0x01, 0x39, 0x00, 0x1e, 0xe0, + 0x3b, 0x03, 0xf6, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x0f, + 0xb8, 0xe3, 0x8f, 0x3b, 0xc6, 0x38, 0x00, 0x17, 0xe0, 0x73, 0x07, 0xfe, + 0xff, 0xff, 0x7f, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x0b, 0xb8, 0xe7, 0x8e, + 0x3b, 0x38, 0x78, 0x00, 0x13, 0xe0, 0x77, 0x06, 0xfe, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0xe0, 0x12, 0x3c, 0xff, 0xce, 0x3b, 0x00, 0x78, + 0x80, 0x13, 0x60, 0xef, 0x0e, 0xfe, 0x00, 0x00, 0x60, 0x08, 0x00, 0x00, + 0x00, 0x70, 0x22, 0x3e, 0xfc, 0xfe, 0x39, 0x00, 0xe8, 0x80, 0x61, 0x60, + 0xce, 0x0f, 0xfe, 0x00, 0x00, 0x60, 0xf8, 0x00, 0x00, 0x00, 0x70, 0xc2, + 0x39, 0xf8, 0x7e, 0x38, 0x00, 0xc8, 0xc0, 0x81, 0x71, 0xde, 0x0f, 0xfe, + 0x00, 0x00, 0x60, 0x88, 0x00, 0x00, 0x00, 0x70, 0x04, 0x38, 0xe0, 0x0e, + 0x38, 0x00, 0xc4, 0xc0, 0x01, 0x7e, 0xbc, 0x1f, 0xfe, 0x00, 0x00, 0x60, + 0x88, 0x00, 0x00, 0x00, 0x78, 0x04, 0x38, 0xe0, 0x0e, 0x38, 0x00, 0xc4, + 0xc1, 0x01, 0x60, 0x3c, 0x1f, 0xfe, 0x00, 0x00, 0x60, 0x84, 0x0f, 0x00, + 0x00, 0x78, 0x08, 0x38, 0xe0, 0x0f, 0x38, 0x00, 0x82, 0xe1, 0x01, 0x60, + 0x74, 0x3e, 0xfe, 0x00, 0x00, 0x60, 0x44, 0x08, 0x00, 0x00, 0xb8, 0x10, + 0x38, 0xe0, 0x0f, 0x38, 0x00, 0x81, 0xe1, 0x00, 0x60, 0xe4, 0x3e, 0xfe, + 0x00, 0x00, 0x60, 0x44, 0x08, 0x00, 0x00, 0x98, 0x20, 0x38, 0xf8, 0x3f, + 0x38, 0x80, 0x80, 0xe1, 0x01, 0x60, 0xc4, 0x3c, 0xfe, 0x00, 0x00, 0x60, + 0x24, 0x0c, 0x00, 0x00, 0x1c, 0xc1, 0x39, 0x3c, 0x78, 0x38, 0x40, 0x80, + 0x61, 0x01, 0x60, 0xc4, 0x79, 0xfe, 0x00, 0x00, 0x60, 0x22, 0x32, 0x00, + 0x00, 0x1c, 0x01, 0x3e, 0x1c, 0xf0, 0x38, 0xf0, 0x9f, 0x61, 0x01, 0x60, + 0x84, 0x7b, 0xee, 0x00, 0x00, 0x60, 0x12, 0x21, 0x00, 0x00, 0x1c, 0x02, + 0x38, 0x0e, 0xe7, 0xf8, 0x3f, 0xe0, 0x61, 0x00, 0x60, 0x04, 0xf7, 0xce, + 0x00, 0x00, 0x60, 0x92, 0x10, 0x00, 0x00, 0x1c, 0x04, 0x38, 0x06, 0xff, + 0x38, 0x40, 0x80, 0x61, 0x02, 0x60, 0x04, 0xe7, 0xcf, 0x00, 0x00, 0x60, + 0x8a, 0x18, 0x00, 0x00, 0x1c, 0x18, 0x38, 0x07, 0xf0, 0x38, 0x00, 0x81, + 0x61, 0x02, 0x60, 0x04, 0xee, 0xcf, 0xff, 0x03, 0x60, 0x49, 0xe4, 0x00, + 0x00, 0x1c, 0x70, 0x38, 0x07, 0xe7, 0x38, 0x00, 0x82, 0x61, 0x04, 0x60, + 0x04, 0xdc, 0xcf, 0x01, 0x04, 0x60, 0x25, 0x42, 0x00, 0x00, 0x1c, 0xfe, + 0x3f, 0x03, 0xff, 0x38, 0x00, 0x84, 0x61, 0x08, 0x60, 0x04, 0xfc, 0xcf, + 0xf8, 0xff, 0x60, 0x95, 0x31, 0x00, 0x00, 0xfc, 0x01, 0xff, 0x03, 0xf0, + 0xf8, 0x1f, 0x88, 0x61, 0x10, 0xe0, 0xff, 0xff, 0xff, 0x00, 0x00, 0xe1, + 0x53, 0x0c, 0x00, 0x00, 0x38, 0xf0, 0xff, 0x03, 0xef, 0xf8, 0x7f, 0x90, + 0x61, 0x40, 0xe0, 0xff, 0xff, 0xff, 0x00, 0xff, 0xe3, 0x2b, 0xfe, 0x00, + 0x00, 0x18, 0xf8, 0xff, 0x03, 0xff, 0x7c, 0xf0, 0x90, 0x61, 0x00, 0x3e, + 0x36, 0xe3, 0xe1, 0x00, 0x00, 0xe3, 0x9f, 0x60, 0x00, 0x00, 0x38, 0x3c, + 0x00, 0x03, 0xf0, 0x1f, 0xe0, 0xa0, 0xe1, 0x00, 0x30, 0x22, 0xe2, 0xc0, + 0x00, 0xff, 0xe3, 0x7f, 0x18, 0x00, 0x00, 0x38, 0x0e, 0x00, 0x07, 0xe7, + 0x07, 0xc0, 0xe1, 0xc1, 0x00, 0x18, 0x22, 0xe2, 0xc0, 0x00, 0x00, 0xe1, + 0x1f, 0x07, 0x00, 0x00, 0x38, 0x06, 0x00, 0x07, 0xef, 0x01, 0xc0, 0xc1, + 0xc1, 0x01, 0x16, 0x24, 0xe2, 0xc0, 0x01, 0xff, 0xe1, 0xff, 0x00, 0x00, + 0x00, 0x70, 0x07, 0x00, 0x0e, 0xf8, 0x00, 0x80, 0xc3, 0xc0, 0xf1, 0x11, + 0x24, 0xe4, 0xc0, 0x03, 0xe0, 0xe1, 0x7f, 0x00, 0x00, 0x00, 0x70, 0x07, + 0x00, 0x1e, 0x3c, 0x00, 0x80, 0xe3, 0x80, 0x0f, 0x10, 0x24, 0xe4, 0xc0, + 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xfc, 0x0f, + 0x00, 0x00, 0x63, 0x80, 0x01, 0x08, 0x44, 0xe4, 0xc0, 0xff, 0xff, 0xff, + 0xff, 0xff, 0x01, 0x00, 0xe0, 0x03, 0x00, 0xf8, 0x07, 0x00, 0x00, 0x73, + 0x80, 0x03, 0x08, 0x44, 0xe4, 0xc0, 0xfc, 0x00, 0x07, 0x0e, 0x00, 0x00, + 0x00, 0xc0, 0x03, 0x00, 0xf0, 0x01, 0x00, 0x00, 0x33, 0x00, 0x03, 0x08, + 0x44, 0xe4, 0xe0, 0xcc, 0x00, 0x07, 0x0e, 0x00, 0x00, 0x00, 0xc0, 0x03, + 0x00, 0x78, 0x00, 0x00, 0x80, 0x3f, 0x00, 0x07, 0x04, 0x44, 0xe8, 0x70, + 0xcc, 0x01, 0x87, 0x0f, 0x00, 0x00, 0x00, 0x80, 0x07, 0x00, 0x3e, 0x00, + 0x00, 0x80, 0x1f, 0x00, 0x0e, 0x04, 0x44, 0xe8, 0x38, 0xcc, 0x81, 0xe7, + 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x80, 0x0f, + 0x00, 0x1c, 0x02, 0x44, 0xf8, 0x1e, 0xcc, 0xe1, 0xff, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x0f, 0xc0, 0x23, 0x00, 0x00, 0xc0, 0x07, 0x00, 0x38, 0x01, + 0x42, 0xfc, 0x0f, 0xcc, 0xf1, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, + 0xf0, 0x39, 0x00, 0x00, 0xe0, 0x03, 0x00, 0xf0, 0x00, 0xc2, 0xff, 0x07, + 0xcc, 0x7f, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x7c, 0x0e, 0x00, + 0x00, 0xf0, 0x01, 0x00, 0xe0, 0x03, 0xe2, 0xe7, 0x07, 0xcc, 0x1f, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xbf, 0x23, 0xe0, 0xff, 0xff, 0x00, + 0x00, 0xc0, 0x1f, 0xff, 0x64, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0xf0, 0xff, 0x3c, 0xf0, 0xff, 0x7f, 0x00, 0x00, 0x00, 0xff, + 0x7f, 0x64, 0x06, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, + 0xf8, 0x1f, 0x78, 0x7c, 0x7f, 0x00, 0x00, 0x00, 0xfc, 0x20, 0x64, 0x06, + 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x70, 0xf8, 0x33, 0x1c, + 0x38, 0x66, 0x00, 0x00, 0x00, 0x0c, 0x20, 0x6c, 0x06, 0xcc, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x78, 0x3e, 0x0e, 0x38, 0x76, 0x00, + 0x00, 0x00, 0x0c, 0x20, 0x68, 0x06, 0xcc, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x38, 0xf8, 0x87, 0x0f, 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, + 0x20, 0x68, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, + 0x78, 0xf8, 0x0f, 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, + 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xf8, 0xff, 0x0f, + 0x38, 0x76, 0x00, 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, 0xcc, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xf8, 0xff, 0x0e, 0x38, 0x76, 0x00, + 0x00, 0x00, 0x0c, 0x10, 0x68, 0x06, 0xcc, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1c, 0xf8, 0xe1, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, + 0x08, 0x68, 0x06, 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, + 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, 0x08, 0x68, 0x06, + 0xcc, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x0e, + 0x38, 0x3e, 0x00, 0x00, 0x00, 0x0c, 0x04, 0x68, 0x06, 0xcc, 0x0e, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, + 0x00, 0x00, 0x1c, 0x04, 0x68, 0x06, 0xcc, 0x0e, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x06, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, + 0x02, 0x68, 0x06, 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, + 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x02, 0x68, 0x06, + 0xcc, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xe0, 0x0e, + 0x38, 0x3e, 0x00, 0x00, 0x00, 0x1c, 0x01, 0x68, 0x06, 0xcc, 0x1c, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, + 0x00, 0x00, 0x18, 0x01, 0x68, 0x06, 0xcc, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x98, + 0x00, 0x68, 0x06, 0xcc, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, + 0x38, 0xe0, 0x0e, 0x38, 0x3e, 0x00, 0x00, 0x00, 0x98, 0x00, 0x68, 0x06, + 0xcc, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x03, 0x38, 0xe0, 0x0e, + 0x38, 0x1e, 0x00, 0x00, 0x00, 0x58, 0x00, 0x6c, 0x0e, 0xcc, 0x18, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x80, 0x01, 0x30, 0xe0, 0x0e, 0x38, 0x1e, 0x00, + 0x00, 0x00, 0x38, 0x00, 0x64, 0x0e, 0xcc, 0x18, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xc0, 0x01, 0x70, 0xe0, 0x0e, 0x1c, 0x1e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x64, 0x1e, 0xcc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x01, + 0xe0, 0xe1, 0x0e, 0x0f, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x64, 0x3e, + 0xcc, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0xef, 0xce, + 0x07, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x64, 0x3e, 0xcc, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x00, 0xff, 0xfe, 0x03, 0x1e, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x64, 0x7e, 0xcc, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x00, 0xfc, 0xfe, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, + 0x00, 0x64, 0x66, 0xcc, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, + 0x00, 0xe0, 0x1e, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x66, 0xe6, + 0xcc, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0xe0, 0x0e, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x18, 0x00, 0x62, 0xc6, 0xcd, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0xfe, 0xff, 0x0f, 0x1e, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x62, 0xc6, 0xcd, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x70, 0x00, 0xc0, 0xff, 0xff, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x38, + 0x00, 0x62, 0x86, 0xcf, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, + 0xf0, 0xff, 0xff, 0x0f, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x61, 0x86, + 0xcf, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0xfc, 0x00, 0x00, + 0x0e, 0x0e, 0x00, 0x00, 0x00, 0x38, 0x00, 0x61, 0x8e, 0xcf, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x78, 0x00, 0x00, 0x0e, 0x0e, 0x00, + 0x00, 0x00, 0xf8, 0xff, 0x7f, 0xfe, 0xdf, 0xff, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x18, 0x00, 0xf0, 0x00, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xf0, + 0xff, 0x3f, 0xff, 0xdf, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, + 0xe0, 0x01, 0x00, 0x0e, 0x0e, 0x00, 0x00, 0x00, 0xf0, 0xff, 0x8f, 0x07, + 0x9e, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xe0, 0x07, 0x00, + 0x0e, 0x0f, 0x00, 0x00, 0x00, 0x30, 0x00, 0xc0, 0xff, 0x3f, 0xc0, 0x01, + 0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x0f, 0x00, + 0x00, 0x00, 0xf0, 0xff, 0xff, 0xff, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0xfe, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0xf0, + 0xff, 0xff, 0x00, 0xff, 0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, + 0x3f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00, + 0x38, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0x7f, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x38, 0x00, 0x38, 0xe0, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, + 0xdc, 0x01, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, + 0x38, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x9c, 0x03, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x18, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x07, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x1c, 0xfe, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x0c, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, + 0x1c, 0xfc, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0c, 0x00, + 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, + 0x80, 0x07, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x0e, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, + 0x1c, 0x1c, 0x00, 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, + 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x1c, 0x00, + 0x80, 0x03, 0x00, 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x18, 0x38, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x06, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0xfc, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x0e, 0x00, 0x18, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, + 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, + 0x18, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x07, 0x0e, 0x00, 0x18, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0c, 0x00, + 0x38, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x38, 0x70, 0x00, + 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x06, 0x1c, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x06, 0x18, 0x00, 0x38, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x18, 0x00, + 0x30, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0xe0, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x38, 0x00, 0x30, 0xe0, 0x01, + 0x00, 0x00, 0x00, 0x00, 0xf0, 0x01, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x0c, 0x3c, 0x00, 0x30, 0xf0, 0x01, 0x00, 0x00, 0x00, + 0x00, 0xf8, 0x03, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x0c, 0x7e, 0x00, 0x70, 0xf8, 0x03, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x0f, + 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x0c, 0xe7, 0x00, + 0x70, 0xbc, 0x03, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x1e, 0x1f, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0xdc, 0xe3, 0x00, 0x60, 0x1e, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x0f, 0xfc, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0xfc, 0xc1, 0x01, 0xe0, 0x0f, 0x0f, 0x00, 0x00, 0x00, + 0x80, 0x07, 0xf0, 0x1f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0xf8, 0x80, 0x03, 0xe0, 0x03, 0x1e, 0x00, 0x00, 0x00, 0xc0, 0x03, 0xe0, + 0x1b, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x78, 0x80, 0x07, + 0xe0, 0x01, 0x1c, 0x00, 0x00, 0x00, 0xe0, 0x01, 0xc0, 0x1b, 0x00, 0x00, + 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x38, 0x00, 0x0f, 0xe0, 0x01, 0x38, + 0x00, 0x00, 0x00, 0xf0, 0x00, 0xc0, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x00, 0x30, 0x0e, 0x1e, 0xc0, 0x71, 0xf8, 0x00, 0x00, 0x00, + 0x78, 0x00, 0xdc, 0x19, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, + 0x30, 0x1f, 0x1e, 0xc0, 0xf9, 0xf8, 0x00, 0x00, 0x00, 0xfc, 0xff, 0xff, + 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xf0, 0xff, 0xff, + 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, + 0xff, 0x07, 0x00, 0x00, 0x00, 0x00, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, + 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/deps/ncurses-6.3/test/mini.xterm_48x48.xpm b/deps/ncurses-6.3/test/mini.xterm_48x48.xpm new file mode 100644 index 0000000..c4738f8 --- /dev/null +++ b/deps/ncurses-6.3/test/mini.xterm_48x48.xpm @@ -0,0 +1,264 @@ +/* XPM */ +static char * mini_xterm_48x48_xpm[] = { +"48 48 213 2", +" c None", +". c #FF0000", +"+ c #FF5300", +"@ c #FF5E00", +"# c #FF4800", +"$ c #FF4200", +"% c #FF4000", +"& c #FF4B00", +"* c #FF5200", +"= c #FF5400", +"- c #FF3500", +"; c #FF5100", +"> c #FF5C00", +", c #FF3000", +"' c #FF4500", +") c #FF2000", +"! c #FF0300", +"~ c #FF1600", +"{ c #FF5D00", +"] c #FF3800", +"^ c #FF0200", +"/ c #FF0900", +"( c #FF2B00", +"_ c #FF3300", +": c #FF1A00", +"< c #FF1300", +"[ c #FF1200", +"} c #FF5700", +"| c #4577BA", +"1 c #874E78", +"2 c #887577", +"3 c #887E77", +"4 c #887977", +"5 c #875078", +"6 c #566CA9", +"7 c #5E70A1", +"8 c #884E77", +"9 c #887677", +"0 c #7C5B83", +"a c #795686", +"b c #008DFE", +"c c #0012F3", +"d c #000BF2", +"e c #008FFE", +"f c #006CFA", +"g c #0000F1", +"h c #0001F1", +"i c #0020F4", +"j c #0040F6", +"k c #0959F0", +"l c #1158E8", +"m c #1159E8", +"n c #0058F9", +"o c #001DF4", +"p c #0023F4", +"q c #005BFA", +"r c #0060FA", +"s c #0E58EB", +"t c #0651F3", +"u c #0033F5", +"v c #000EF2", +"w c #006EFA", +"x c #0092FF", +"y c #001FF4", +"z c #000FF2", +"A c #0C51EC", +"B c #326AC9", +"C c #7A6583", +"D c #CA6234", +"E c #FC5F03", +"F c #FF5800", +"G c #FF0800", +"H c #F4060B", +"I c #007CFB", +"J c #0013F3", +"K c #007EFB", +"L c #FF1800", +"M c #F3590C", +"N c #AB6152", +"O c #4F4EAD", +"P c #175CE4", +"Q c #0036F5", +"R c #0022F4", +"S c #0095FD", +"T c #0084FD", +"U c #0004F1", +"V c #0051F8", +"W c #345AC7", +"X c #E61519", +"Y c #FF5900", +"Z c #FF4600", +"` c #FF0100", +" . c #446EB9", +".. c #0034F6", +"+. c #0032F5", +"@. c #FF2200", +"#. c #006FFA", +"$. c #002DF5", +"%. c #0086FD", +"&. c #0046F7", +"*. c #0015F3", +"=. c #0076FC", +"-. c #FF0400", +";. c #FF2300", +">. c #FF2900", +",. c #9E3E61", +"'. c #0039F6", +"). c #FF2A00", +"!. c #FF4300", +"~. c #0071FB", +"{. c #005EF9", +"]. c #004DF7", +"^. c #008CFE", +"/. c #0008F2", +"(. c #001DF3", +"_. c #007DFB", +":. c #FF4100", +"<. c #FF5B00", +"[. c #A3425C", +"}. c #994C66", +"|. c #FF1100", +"1. c #0072FB", +"2. c #000AF2", +"3. c #006EFC", +"4. c #0017F3", +"5. c #007FFB", +"6. c #FF0600", +"7. c #FF5600", +"8. c #A56A5A", +"9. c #A53B5A", +"0. c #FF4F00", +"a. c #0076FB", +"b. c #0076FA", +"c. c #0093FF", +"d. c #007DFC", +"e. c #FF1C00", +"f. c #A5765A", +"g. c #A55D5A", +"h. c #006FFB", +"i. c #002CF5", +"j. c #008AFD", +"k. c #006BF9", +"l. c #FF3A00", +"m. c #FF5000", +"n. c #007BFB", +"o. c #008BFD", +"p. c #A5755A", +"q. c #9A5565", +"r. c #A43A5B", +"s. c #FF4D00", +"t. c #80507F", +"u. c #FF0F00", +"v. c #7A5485", +"w. c #A5555A", +"x. c #FF0A00", +"y. c #A53D5A", +"z. c #A4515B", +"A. c #A5685A", +"B. c #A5735A", +"C. c #FF0700", +"D. c #FF2E00", +"E. c #FF1500", +"F. c #A3705C", +"G. c #FF0500", +"H. c #9A4965", +"I. c #FF0E00", +"J. c #FF3B00", +"K. c #FF2D00", +"L. c #A13C5E", +"M. c #FF4C00", +"N. c #62649D", +"O. c #FF0B00", +"P. c #FF4700", +"Q. c #FF1D00", +"R. c #A56D5A", +"S. c #FF2C00", +"T. c #A4465B", +"U. c #FF1400", +"V. c #A03E61", +"W. c #FF3100", +"X. c #FF1B00", +"Y. c #FF1000", +"Z. c #0029F5", +"`. c #0027F4", +" + c #4571BA", +".+ c #FF3900", +"++ c #FF3200", +"@+ c #008EFD", +"#+ c #0019F3", +"$+ c #0090FD", +"%+ c #FF0D00", +"&+ c #FF1E00", +"*+ c #FF4E00", +"=+ c #0088FC", +"-+ c #0087FC", +";+ c #FF1900", +">+ c #0036F6", +",+ c #FF2100", +"'+ c #0073FB", +")+ c #0062FA", +"!+ c #001AF3", +"~+ c #2463D8", +"{+ c #3E58BE", +"]+ c #2A7FD3", +"^+ c #807B7F", +"/+ c #008EFB", +"(+ c #006AFA", +"_+ c #004CF8", +":+ c #717B8D", +"<+ c #EE0B11", +"[+ c #F73E08", +"}+ c #FF1F00", +"|+ c #FF5500", +" ", +" ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ . . # @ @ @ @ @ @ @ @ @ @ @ @ $ . ", +" . % & & & * @ @ @ @ @ = & & & & & . . - & & & & & ; @ > & & & & , . ", +" . . . . . . * @ @ @ @ ; . . . . . . . . . . . . . ' @ ) . . . . . . ", +" ! ~ { @ @ @ @ ] ^ / ( @ $ . ", +" ^ _ @ @ @ @ @ : ! < [ > } ^ . ", +" | 1 2 3 3 3 3 4 5 6 7 8 9 3 0 a ", +" b c d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d d c e ", +" f g g g g g g h i j k l m n o g g g g g g p q r s t u v g g g g g g g w ", +" x y g g g g z A B C D E F G H I c g g g g J K L / M N O P Q h g g g g R S ", +" T g g g U V W X Y @ @ @ @ Z ` ...g g g g +. ` ' @ @.. #.$.g g g g %. ", +" &.g g *.=. -.;.@ @ @ @ @ >.,.'.g g g g '. / ).@ !.. ~.{.U g g ]. ", +" ^./.g (._. ` :.@ @ @ @ <.[.'.g g g g '.}.|.<.} ^ . 1.2.g d e ", +" 3.g 4.5. 6.7.@ @ @ @ 8.'.g g g g '.9.0.@ [ . a./.g b. ", +" c.R /.d. -.e.@ @ @ @ f.'.g g g g '.g.@ - . h.h i. ", +" j.k.%. ^ l.@ @ @ f.'.g g g g '.f.m.` n.f o. ", +" ! * @ @ f.'.g g g g '.p.G . ", +" ! ~ { @ f.'.g g g g '.q.. ", +" ^ _ @ f.'.g g g g '.r. ", +" ^ s.f.'.g g g g '.t. ", +" ^ u.p.'.g g g g '.v. ", +" ^ w.'.g g g g '.r. ", +" x.y.'.g g g g '.z.^ ", +" ` A.'.g g g g '.B.x.. ", +" C.D.f.'.g g g g '.f.# ` ", +" < E.{ F.'.g g g g '.f.@ ( ^ ", +" : G.; @ H.'.g g g g '.f.@ <.I.^ ", +" -.J.@ K.L.'.g g g g '.f.@ @ s.` ", +" I.) @ M.. N.'.g g g g '.f.@ @ @ _ ^ ", +" L O.F <.6.. '.g g g g '.f.@ @ @ { E.! ", +" ^ P.@ Q.. '.g g g g '.R.@ @ @ @ * ! ", +" G S.@ % . '.g g g g '.T.{ @ @ @ @ l.^ ", +" < U.> 7.^ ..g g g g u V.W.@ @ @ @ @ e.! ", +" X.-.m.@ Y.. Z.g g g g `. +` M.@ @ @ @ 7.6. ", +" -..+@ ++. @+#+g g g g #+$+^ %+<.@ @ @ @ :.` ", +" I.&+@ *+. =+h g g g g h -+ ! >.@ @ @ @ @ ;.^ ", +" ;+x.} > C.. >+g g g g g g >+ ` Z @ @ @ @ Y / . ", +" ` ' @ ,+. %.1.'+)+!+g g g g g g g g #+)+~+{+]+^+@ @ @ P.` ", +" / ).@ !.. /+(+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+_+(+:+@ @ @ @ ).^ ", +" I.[ > F . . <+[+@ @ @ @ <.I.` ", +" . . . . . . 0.@ }+. . . . . . . . . . . . . |+@ @ @ @ s.. . . . . . ", +" O.@ @ @ @ @ @ @ @ @ @ @ @ @ ^ ! $ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ $ . ", +" . & & & & & & & & & & & & & . . , & & & & & & & & & & & & & & & , . ", +" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" ", +" "}; diff --git a/deps/ncurses-6.3/test/mk-test.awk b/deps/ncurses-6.3/test/mk-test.awk new file mode 100644 index 0000000..cf3066f --- /dev/null +++ b/deps/ncurses-6.3/test/mk-test.awk @@ -0,0 +1,168 @@ +# $Id: mk-test.awk,v 1.25 2021/04/24 23:10:40 tom Exp $ +############################################################################## +# Copyright 2019-2020,2021 Thomas E. Dickey # +# Copyright 2006-2017,2018 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: Thomas E. Dickey +# +# generate Makefile for ncurses tests. +BEGIN { + first = 1; + count = 0; + } +/^#/ { + next; + } +/^$/ { + next; + } + { + if (first) { + print "# generated by mk-test.awk\n"; + first = 0; + } + progs[count] = $1; + flags[count] = $2; + using[count] = $3; + files[count] = ""; + for (n = 4; n <= NF; ++n) { + files[count] = sprintf("%s $(MODEL)/%s$o", files[count], $n); + } + count = count + 1; + } +END { + for (n = 0; n < count; ++n) { + if (n == 0) { + printf "TESTS\t= "; + } else { + printf "\t "; + } + printf "$(destdir)%s$x", progs[n]; + if (n < count - 1) { + printf " \\"; + } + print ""; + } + print "SCRIPTS = \\" + print " $(srcdir)/savescreen.sh \\" + print " $(srcdir)/tput-colorcube \\" + print " $(srcdir)/tput-initc \\" + print " $(srcdir)/tracemunch" + print "DATAFILES = \\" + print " $(srcdir)/*.x* \\" + print " $(srcdir)/*.dat" + print "" + print "all:: $(TESTS)" + print "" + print "sources:" + print "" + print "check::" + print " @ echo The test-programs are interactive" + print "tags:" + print " $(CTAGS) *.[ch]" + print "" + print "# no libraries here" + print "libs \\" + print "install.libs \\" + print "uninstall.libs:" + print "" + if (INSTALL == "yes") { + print "# we might install the test-programs" + print "install \\" + print "install.test: $(BINDIR) $(DATADIR) $(TESTS)" + + print " @$(SHELL) -c 'for src in $(TESTS); do \\" + print " dst=`echo $$src | $(TRANSFORM)`; \\" + print " echo \"installing $$src -> $(BINDIR)/$$dst\"; \\" + print " $(INSTALL_PROG) $$src $(BINDIR)/$$dst; \\" + print " done'" + + print " @$(SHELL) -c 'for src in $(SCRIPTS); do \\" + print " dst=`echo $$src | sed -e 's,^.*/,,' | $(TRANSFORM)`; \\" + print " echo \"installing $$src -> $(BINDIR)/$$dst\"; \\" + print " $(INSTALL_SCRIPT) $$src $(BINDIR)/$$dst; \\" + print " done'" + + print " @$(SHELL) -c 'for src in $(DATAFILES); do \\" + print " dst=`echo $$src | sed -e 's,^.*/,,'`; \\" + print " echo \"installing $$src -> $(DATADIR)/$$dst\"; \\" + print " $(INSTALL_DATA) $$src $(DATADIR)/$$dst; \\" + print " done'" + print "" + print "uninstall \\" + print "uninstall.test:" + + print " @$(SHELL) -c 'for src in $(TESTS); do \\" + print " dst=`echo $$src | $(TRANSFORM)`; \\" + print " rm -f $(BINDIR)/$$dst; \\" + print " done'" + + print " @$(SHELL) -c 'for src in $(SCRIPTS); do \\" + print " dst=`echo $$src | sed -e 's,^.*/,,' | $(TRANSFORM)`; \\" + print " rm -f $(BINDIR)/$$dst; \\" + print " done'" + + print " @$(SHELL) -c 'for src in $(DATAFILES); do \\" + print " dst=`echo $$src | sed -e 's,^.*/,,'`; \\" + print " rm -f $(DATADIR)/$$dst; \\" + print " done'" + } else { + print "install \\" + print "install.test \\" + print "uninstall \\" + print "uninstall.test:" + } + print "" + print "mostlyclean ::" + print " -rm -f core tags TAGS *~ *.bak *.i *.ln *.atac trace" + print "" + print "clean :: mostlyclean" + print " -$(SHELL) -c \"if test -n '$x' ; then $(MAKE) clean x=''; fi\"" + print " -rm -rf *$o screendump *.lis $(TESTS) .libs *.dSYM" + print "" + print "distclean :: clean" + print " -rm -f Makefile ncurses_cfg.h config.status config.log" + print "" + print "realclean :: distclean" + print "" + print "lint:" + print " $(SHELL) -c 'for N in $(TESTS); do echo LINT:$$N; $(LINT) $(LINT_OPTS) $(CPPFLAGS) $(srcdir)/$$N.c $(LINT_LIBS); done'" + print "$(BINDIR) $(DATADIR) :" + print " mkdir -p $@" + + + if (ECHO_LINK != "") { + ECHO_LINK="@ echo linking $@ ... ;" + } + for (n = 0; n < count; ++n) { + print ""; + printf "$(destdir)%s$x:%s %s\n", progs[n], files[n], using[n]; + printf "\t%s$(LINK) -o $@%s %s\n", ECHO_LINK, files[n], flags[n]; + } + + } diff --git a/deps/ncurses-6.3/test/modules b/deps/ncurses-6.3/test/modules new file mode 100644 index 0000000..de3d140 --- /dev/null +++ b/deps/ncurses-6.3/test/modules @@ -0,0 +1,121 @@ +# $Id: modules,v 1.74 2021/02/13 16:33:43 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2016,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: Thomas E. Dickey 1997-on +# +# Test-Program modules + +@ base +back_ground progs $(srcdir) $(HEADER_DEPS) +background progs $(srcdir) $(HEADER_DEPS) +blue progs $(srcdir) $(HEADER_DEPS) +bs progs $(srcdir) $(HEADER_DEPS) +cardfile progs $(srcdir) $(HEADER_DEPS) $(incdir)/panel.h $(incdir)/form.h +chgat progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +clip_printw progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +color_content progs $(srcdir) $(HEADER_DEPS) +color_set progs $(srcdir) $(HEADER_DEPS) +demo_altkeys progs $(srcdir) $(HEADER_DEPS) +demo_defkey progs $(srcdir) $(HEADER_DEPS) +demo_forms progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h +demo_keyok progs $(srcdir) $(HEADER_DEPS) +demo_menus progs $(srcdir) $(HEADER_DEPS) $(incdir)/menu.h +demo_new_pair progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +demo_panels progs $(srcdir) $(HEADER_DEPS) $(incdir)/panel.h +demo_tabs progs $(srcdir) $(HEADER_DEPS) +demo_termcap progs $(srcdir) $(HEADER_DEPS) +demo_terminfo progs $(srcdir) $(HEADER_DEPS) +ditto progs $(srcdir) $(HEADER_DEPS) +dots progs $(srcdir) $(HEADER_DEPS) +dots_curses progs $(srcdir) $(HEADER_DEPS) +dots_mvcur progs $(srcdir) $(HEADER_DEPS) +dots_termcap progs $(srcdir) $(HEADER_DEPS) +dots_xcurses progs $(srcdir) $(HEADER_DEPS) +dump_window progs $(srcdir) $(HEADER_DEPS) $(srcdir)/dump_window.h +dup_field progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h +echochar progs $(srcdir) $(HEADER_DEPS) +edit_field progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h $(srcdir)/popup_msg.h +extended_color progs $(srcdir) $(HEADER_DEPS) +filter progs $(srcdir) $(HEADER_DEPS) +firework progs $(srcdir) $(HEADER_DEPS) +firstlast progs $(srcdir) $(HEADER_DEPS) +foldkeys progs $(srcdir) $(HEADER_DEPS) +form_driver_w progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +gdc progs $(srcdir) $(HEADER_DEPS) +hanoi progs $(srcdir) $(HEADER_DEPS) +hashtest progs $(srcdir) $(HEADER_DEPS) +inch_wide progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +inchs progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +ins_wide progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h +insdelln progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +inserts progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h +key_names progs $(srcdir) $(HEADER_DEPS) +keynames progs $(srcdir) $(HEADER_DEPS) +knight progs $(srcdir) $(HEADER_DEPS) +list_keys progs $(srcdir) $(HEADER_DEPS) +lrtest progs $(srcdir) $(HEADER_DEPS) +move_field progs $(srcdir) $(HEADER_DEPS) $(srcdir)/edit_field.h +movewindow progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +ncurses progs $(srcdir) $(HEADER_DEPS) $(incdir)/panel.h $(incdir)/menu.h $(incdir)/form.h +newdemo progs $(srcdir) $(HEADER_DEPS) +padview progs $(srcdir) $(HEADER_DEPS) $(srcdir)/widechars.h $(srcdir)/popup_msg.h +pair_content progs $(srcdir) $(HEADER_DEPS) +picsmap progs $(srcdir) $(HEADER_DEPS) +popup_msg progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +railroad progs $(srcdir) $(HEADER_DEPS) +rain progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +redraw progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h +savescreen progs $(srcdir) $(HEADER_DEPS) $(srcdir)/popup_msg.h $(srcdir)/parse_rgb.h +sp_tinfo progs $(srcdir) $(HEADER_DEPS) +tclock progs $(srcdir) $(HEADER_DEPS) +test_add_wchstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h +test_addchstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h +test_addstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h +test_addwstr progs $(srcdir) $(HEADER_DEPS) $(srcdir)/linedata.h +test_arrays progs $(srcdir) $(HEADER_DEPS) +test_get_wstr progs $(srcdir) $(HEADER_DEPS) +test_getstr progs $(srcdir) $(HEADER_DEPS) +test_instr progs $(srcdir) $(HEADER_DEPS) +test_inwstr progs $(srcdir) $(HEADER_DEPS) +test_opaque progs $(srcdir) $(HEADER_DEPS) +test_setupterm progs $(srcdir) $(HEADER_DEPS) +test_sgr progs $(srcdir) $(HEADER_DEPS) +test_termattrs progs $(srcdir) $(HEADER_DEPS) +test_tparm progs $(srcdir) $(HEADER_DEPS) +test_vid_puts progs $(srcdir) $(HEADER_DEPS) +test_vidputs progs $(srcdir) $(HEADER_DEPS) +testaddch progs $(srcdir) $(HEADER_DEPS) +testcurs progs $(srcdir) $(HEADER_DEPS) +testscanw progs $(srcdir) $(HEADER_DEPS) +view progs $(srcdir) $(HEADER_DEPS) $(srcdir)/widechars.h $(srcdir)/popup_msg.h +worm progs $(srcdir) $(HEADER_DEPS) +xmas progs $(srcdir) $(HEADER_DEPS) + +# vile:makemode diff --git a/deps/ncurses-6.3/test/move_field.c b/deps/ncurses-6.3/test/move_field.c new file mode 100644 index 0000000..b5ec943 --- /dev/null +++ b/deps/ncurses-6.3/test/move_field.c @@ -0,0 +1,522 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: move_field.c,v 1.9 2021/06/12 21:30:34 tom Exp $ + * + * Demonstrate move_field(). + */ + +#include <test.priv.h> + +#if USE_LIBFORM + +#include <edit_field.h> +#include <popup_msg.h> + +#ifdef HAVE_NETBSD_FORM_H +#define form_field_row(field) (field)->form_row +#define form_field_col(field) (field)->form_col +#else /* e.g., SVr4, ncurses */ +#define form_field_row(field) (field)->frow +#define form_field_col(field) (field)->fcol +#endif + +#define DO_DEMO CTRL('F') /* actual key for toggling demo-mode */ +#define MY_DEMO EDIT_FIELD('f') /* internal request-code */ + +static char empty[] = ""; +static FIELD *all_fields[100]; +/* *INDENT-OFF* */ +static struct { + int code; + int result; + const char *help; +} commands[] = { + { CTRL('A'), REQ_BEG_FIELD, "go to beginning of field" }, + { CTRL('D'), REQ_DOWN_FIELD, "move downward to field" }, + { CTRL('E'), REQ_END_FIELD, "go to end of field" }, + { CTRL('H'), REQ_DEL_PREV, "delete previous character" }, + { CTRL('I'), REQ_NEXT_FIELD, "go to next field" }, + { CTRL('K'), REQ_CLR_EOF, "clear to end of field" }, + { CTRL('N'), REQ_NEXT_FIELD, "go to next field" }, + { CTRL('P'), REQ_PREV_FIELD, "go to previous field" }, + { CTRL('Q'), MY_QUIT, "exit form" }, + { CTRL('U'), REQ_UP_FIELD, "move upward to field" }, + { CTRL('W'), REQ_NEXT_WORD, "go to next word" }, + { CTRL('X'), REQ_CLR_FIELD, "clear field" }, + { CTRL('['), MY_QUIT, "exit form" }, + { KEY_F(1), MY_HELP, "show this screen", }, + { KEY_BACKSPACE, REQ_DEL_PREV, "delete previous character" }, + { KEY_BTAB, REQ_PREV_FIELD, "go to previous field" }, + { KEY_DOWN, REQ_DOWN_CHAR, "move down 1 character" }, + { KEY_END, REQ_LAST_FIELD, "go to last field" }, + { KEY_HOME, REQ_FIRST_FIELD, "go to first field" }, + { KEY_LEFT, REQ_LEFT_CHAR, "move left 1 character" }, + { KEY_NEXT, REQ_NEXT_FIELD, "go to next field" }, + { KEY_PREVIOUS, REQ_PREV_FIELD, "go to previous field" }, + { KEY_RIGHT, REQ_RIGHT_CHAR, "move right 1 character" }, + { KEY_UP, REQ_UP_CHAR, "move up 1 character" }, + { DO_DEMO, MY_DEMO, "move current field with cursor keys" } +}; +/* *INDENT-ON* */ + +static void +my_help_edit_field(void) +{ + int used = 0; + unsigned n; + char **msgs = typeCalloc(char *, 3 + SIZEOF(commands)); + + msgs[used++] = strdup("Defined form edit/traversal keys:"); + for (n = 0; n < SIZEOF(commands); ++n) { + char *msg; + const char *name; + const char *code = keyname(commands[n].code); + size_t need = 5; +#ifdef NCURSES_VERSION + if ((name = form_request_name(commands[n].result)) == 0) +#endif + name = commands[n].help; + need = 5 + strlen(code) + strlen(name); + msg = typeMalloc(char, need); + _nc_SPRINTF(msg, _nc_SLIMIT(need) "%s -- %s", code, name); + msgs[used++] = msg; + } + msgs[used++] = + strdup("Arrow keys move within a field as you would expect."); + msgs[used] = 0; + popup_msg2(stdscr, msgs); + for (n = 0; msgs[n] != 0; ++n) { + free(msgs[n]); + } + free(msgs); +} + +static FIELD * +make_label(const char *label, int frow, int fcol) +{ + FIELD *f = new_field(1, (int) strlen(label), frow, fcol, 0, 0); + + if (f) { + set_field_buffer(f, 0, label); + set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE)); + } + return (f); +} + +static FIELD * +make_field(int frow, int fcol, int rows, int cols) +{ + FIELD *f = new_field(rows, cols, frow, fcol, 0, 1); + + if (f) { + set_field_back(f, A_UNDERLINE); + init_edit_field(f, empty); + } + return (f); +} + +static void +erase_form(FORM *f) +{ + WINDOW *w = form_win(f); + WINDOW *s = form_sub(f); + + unpost_form(f); + werase(w); + wrefresh(w); + delwin(s); + delwin(w); +} + +static FieldAttrs * +my_field_attrs(FIELD *f) +{ + return (FieldAttrs *) field_userptr(f); +} + +static int +buffer_length(FIELD *f) +{ + return my_field_attrs(f)->row_lengths[0]; +} + +static void +set_buffer_length(FIELD *f, int length) +{ + my_field_attrs(f)->row_lengths[0] = length; +} + +static int +offset_in_field(FORM *form) +{ + FIELD *field = current_field(form); + int currow, curcol; + + form_getyx(form, currow, curcol); + return curcol + currow * (int) field->dcols; +} + +static void +inactive_field(FIELD *f) +{ + set_field_back(f, my_field_attrs(f)->background); +} + +static int +my_edit_field(FORM *form, int *result) +{ + int ch = wgetch(form_win(form)); + int status; + FIELD *before; + unsigned n; + int before_row; + int before_col; + int before_off = offset_in_field(form); + + form_getyx(form, before_row, before_col); + before = current_field(form); + set_field_back(before, A_NORMAL); + if (ch <= KEY_MAX) { + set_field_back(before, A_REVERSE); + } else if (ch <= MAX_FORM_COMMAND) { + inactive_field(before); + } + + *result = ch; + for (n = 0; n < SIZEOF(commands); ++n) { + if (commands[n].code == ch) { + *result = commands[n].result; + break; + } + } + + status = form_driver(form, *result); + + if (status == E_OK) { + bool modified = TRUE; + int length = buffer_length(before); + + if (length < before_off) + length = before_off; + switch (*result) { + case REQ_CLR_EOF: + length = before_off; + break; + case REQ_CLR_EOL: + if ((int) (before_row + 1) == (int) (before->rows)) + length = before_off; + break; + case REQ_CLR_FIELD: + length = 0; + break; + case REQ_DEL_CHAR: + if (length > before_off) + --length; + break; + case REQ_DEL_PREV: + if (length > 0) { + if (before_col > 0) { + --length; + } else if (before_row > 0) { + length -= (int) before->cols + before_col; + } + } + break; + case REQ_NEW_LINE: + length += (int) before->cols; + break; + + default: + modified = (ch < MIN_FORM_COMMAND + && isprint(ch)); + break; + } + + /* + * If we do not force a re-validation, then field_buffer 0 will + * be lagging by one character. + */ + if (modified && form_driver(form, REQ_VALIDATION) == E_OK && *result + < MIN_FORM_COMMAND) + ++length; + + set_buffer_length(before, length); + } + + if (current_field(form) != before) + inactive_field(before); + return status; +} + +static FIELD ** +copy_fields(FIELD **source, size_t length) +{ + FIELD **target = calloc(length + 1, sizeof(FIELD *)); + memcpy(target, source, length * sizeof(FIELD *)); + return target; +} + +/* display a status message to show what's happening */ +static void +show_status(FORM *form, FIELD *field) +{ + WINDOW *sub = form_sub(form); + int currow, curcol; + + getyx(stdscr, currow, curcol); + mvprintw(LINES - 1, 0, + "Field at [%d,%d]. Press %s to quit moving.", + getbegy(sub) + form_field_row(field), + getbegx(sub) + form_field_col(field), + keyname(DO_DEMO)); + clrtobot(); + move(currow, curcol); + refresh(); +} + +/* + * Move the current label+field in response to cursor-keys (or h,j,k,l) until + * a control/F is read. + */ +static void +do_demo(FORM *form) +{ + int count = field_count(form); + FIELD *my_field = current_field(form); + + if (count > 0 && my_field != NULL) { + size_t needed = (size_t) count; + FIELD **old_fields = copy_fields(form_fields(form), needed); + FIELD **new_fields = copy_fields(form_fields(form), needed); + + if (old_fields != NULL && new_fields != NULL) { + bool found = FALSE; + int ch; + + /* TODO: move the label too, in parallel with the editing field */ + + /* remove the current field from the newer list */ + for (ch = 0; ch <= count; ++ch) { + if (found) { + new_fields[ch - 1] = new_fields[ch]; + } else if (new_fields[ch] == my_field) { + found = TRUE; + } + } + + if (found) { + int currow, curcol; + + getyx(stdscr, currow, curcol); + + show_status(form, my_field); + while ((ch = wgetch(form_win(form))) != DO_DEMO) { + int field_y = form_field_row(my_field); + int field_x = form_field_col(my_field); + + switch (ch) { + case 'h': + case KEY_LEFT: + if (field_x > 0) + field_x--; + break; + case 'j': + case KEY_DOWN: + field_y++; + break; + case 'k': + case KEY_UP: + if (field_y > 0) + field_y--; + break; + case 'l': + case KEY_RIGHT: + field_x++; + break; + case CTRL('Q'): + case CTRL('['): + ch = DO_DEMO; + /* FALLTHRU */ + case DO_DEMO: + break; + default: + continue; + } + + if (ch == DO_DEMO) + break; + + /* alter connected fields temporarily to move the field */ + unpost_form(form); + set_form_fields(form, new_fields); + post_form(form); + + /* TODO: update screen position on success */ + move_field(my_field, field_y, field_x); + + /* restore the form's list of fields */ + unpost_form(form); + set_form_fields(form, old_fields); + post_form(form); + + show_status(form, my_field); + } + + /* cleanup */ + move(LINES - 1, 0); + clrtobot(); + move(currow, curcol); + refresh(); + } + } + free(old_fields); + free(new_fields); + } +} + +static int +my_form_driver(FORM *form, int c) +{ + switch (c) { + case MY_QUIT: + if (form_driver(form, REQ_VALIDATION) == E_OK) + return (TRUE); + break; + case MY_HELP: + my_help_edit_field(); + break; + case MY_DEMO: + do_demo(form); + break; + default: + beep(); + break; + } + return (FALSE); +} + +static void +demo_forms(void) +{ + FORM *form; + int c; + unsigned n = 0; + const char *fname; + + /* describe the form */ + all_fields[n++] = make_label("Sample Form", 0, 15); + + fname = "Last Name"; + all_fields[n++] = make_label(fname, 2, 0); + all_fields[n++] = make_field(3, 0, 1, 18); + set_field_type(all_fields[n - 1], TYPE_ALPHA, 1); + + fname = "First Name"; + all_fields[n++] = make_label(fname, 2, 20); + all_fields[n++] = make_field(3, 20, 1, 12); + set_field_type(all_fields[n - 1], TYPE_ALPHA, 1); + + fname = "Middle Name"; + all_fields[n++] = make_label(fname, 2, 34); + all_fields[n++] = make_field(3, 34, 1, 12); + set_field_type(all_fields[n - 1], TYPE_ALPHA, 1); + + fname = "Comments"; + all_fields[n++] = make_label(fname, 5, 0); + all_fields[n++] = make_field(6, 0, 4, 46); + init_edit_field(all_fields[n - 1], empty); + + all_fields[n] = (FIELD *) 0; + + if ((form = new_form(all_fields)) != 0) { + int finished = 0; + + post_form(form); + + while (!finished) { + switch (my_edit_field(form, &c)) { + case E_OK: + break; + case E_UNKNOWN_COMMAND: + finished = my_form_driver(form, c); + break; + default: + beep(); + break; + } + } + + erase_form(form); + + free_form(form); + } + for (c = 0; all_fields[c] != 0; c++) { + free_edit_field(all_fields[c]); + free_field(all_fields[c]); + } + noraw(); + nl(); +} + +int +main(void) +{ + setlocale(LC_ALL, ""); + + initscr(); + cbreak(); + noecho(); + raw(); + nonl(); /* lets us read ^M's */ + intrflush(stdscr, FALSE); + keypad(stdscr, TRUE); + + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + init_pair(2, COLOR_GREEN, COLOR_BLACK); + init_pair(3, COLOR_CYAN, COLOR_BLACK); + bkgd((chtype) COLOR_PAIR(1)); + refresh(); + } + + demo_forms(); + + endwin(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the curses form library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/movewindow.c b/deps/ncurses-6.3/test/movewindow.c new file mode 100644 index 0000000..0c94572 --- /dev/null +++ b/deps/ncurses-6.3/test/movewindow.c @@ -0,0 +1,786 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 2006-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. * + ****************************************************************************/ +/* + * $Id: movewindow.c,v 1.51 2020/02/02 23:34:34 tom Exp $ + * + * Demonstrate move functions for windows and derived windows from the curses + * library. + * + * Author: Thomas E. Dickey + */ +/* +derwin +mvderwin +subwin +mvwin + +TODO: + add command to reset subwindow's origin to coincide with parent. + add command to delete subwindow (check if it has subwindows though) + */ + +#include <test.priv.h> + +#if HAVE_MVDERWIN && HAVE_MVWIN + +#include <popup_msg.h> + +#ifdef HAVE_XCURSES +#undef derwin +#endif + +#if defined(NCURSES_CONST) +#define CONST_FMT NCURSES_CONST +#elif defined(PDCURSES) +#define CONST_FMT const +#else +#define CONST_FMT /* nothing */ +#endif + +#undef LINE_MAX + +#define LINE_MIN 2 +#define LINE_MAX (LINES - 2) +#define COL_MIN 2 +#define COL_MAX (COLS - 2) + +typedef struct { + int y, x; +} PAIR; + +typedef struct { + WINDOW *parent; /* need this since WINDOW->_parent is not portable */ + WINDOW *child; /* the actual value */ +} FRAME; + +static void head_line(CONST_FMT char *fmt, ...) GCC_PRINTFLIKE(1, 2); +static void tail_line(CONST_FMT char *fmt, ...) GCC_PRINTFLIKE(1, 2); + +static unsigned num_windows; +static FRAME *all_windows; + +static void +failed(const char *s) +{ + perror(s); + endwin(); + ExitProgram(EXIT_FAILURE); +} + +static void +message(int lineno, CONST_FMT char *fmt, va_list argp) +{ + int y, x; + + getyx(stdscr, y, x); + move(lineno, 0); + clrtoeol(); + +#ifdef HAVE_XCURSES + { + char buffer[1024]; + vsprintf(buffer, fmt, argp); + addstr(buffer); + } +#elif defined(HAVE_VW_PRINTW) + vw_printw(stdscr, fmt, argp); +#else + vwprintw(stdscr, fmt, argp); +#endif + + move(y, x); + refresh(); +} + +static void +head_line(CONST_FMT char *fmt, ...) +{ + va_list argp; + + va_start(argp, fmt); + message(0, fmt, argp); + va_end(argp); +} + +static void +tail_line(CONST_FMT char *fmt, ...) +{ + va_list argp; + + va_start(argp, fmt); + message(LINES - 1, fmt, argp); + va_end(argp); +} + +/* + * Arrow keys move cursor, return location at current on non-arrow key. + */ +static PAIR * +selectcell(WINDOW *parent, + WINDOW *child, + int uli, int ulj, + int lri, int lrj, + bool relative, + bool * more) +{ + static PAIR res; /* result cell */ + int si = lri - uli + 1; /* depth of the select area */ + int sj = lrj - ulj + 1; /* width of the select area */ + int i = 0, j = 0; /* offsets into the select area */ + + res.y = uli; + res.x = ulj; + + if (child != 0) { + if (relative) { + getparyx(child, i, j); + } else { + getbegyx(child, i, j); + i -= uli + getbegy(parent); + j -= ulj + getbegx(parent); + } + } + + if (more) + *more = FALSE; + + for (;;) { + bool moved = FALSE; + + tail_line("Upper left [%2d,%2d] Lower right [%2d,%2d] -> %d,%d -> %d,%d", + uli, ulj, + lri, lrj, + i, j, + uli + i, ulj + j); + wmove(parent, uli + i, ulj + j); + + switch (wgetch(parent)) { + case KEY_UP: + i += si - 1; + moved = TRUE; + break; + case KEY_DOWN: + i++; + moved = TRUE; + break; + case KEY_LEFT: + j += sj - 1; + moved = TRUE; + break; + case KEY_RIGHT: + j++; + moved = TRUE; + break; + case QUIT: + /* FALLTHRU */ + case ESCAPE: + return ((PAIR *) 0); +#ifdef NCURSES_MOUSE_VERSION + case KEY_MOUSE: + { + MEVENT event; + + getmouse(&event); + if (event.y > uli && event.x > ulj) { + if (parent != stdscr) { + i = event.y - getbegy(parent) - uli; + j = event.x - getbegx(parent) - ulj; + } else { + i = event.y - uli; + j = event.x - ulj; + } + } else { + beep(); + break; + } + } +#endif + /* FALLTHRU */ + default: + res.y = uli + i; + res.x = ulj + j; + return (&res); + } + + if (si <= 0) + i = 0; + else + i %= si; + + if (sj <= 0) + j = 0; + else + j %= sj; + + /* + * If the caller can handle continuous movement, return the result. + */ + if (moved && more) { + *more = TRUE; + res.y = uli + i; + res.x = ulj + j; + return (&res); + } + } +} + +/* + * Ask user for a window definition. + */ +static bool +getwindow(WINDOW *parent, PAIR * ul, PAIR * lr) +{ + int min_col = (parent == stdscr) ? COL_MIN : 0; + int max_col = (parent == stdscr) ? COL_MAX : getmaxx(parent); + int min_line = (parent == stdscr) ? LINE_MIN : 0; + int max_line = (parent == stdscr) ? LINE_MAX : getmaxy(parent); + PAIR *tmp; + bool result = FALSE; + + head_line("Use arrows to move cursor, anything else to mark corner 1"); + if ((tmp = selectcell(parent, 0, + min_line, min_col, + max_line, max_col, + FALSE, + (bool *) 0)) != 0) { + *ul = *tmp; + MvWAddCh(parent, ul->y, ul->x, '*'); + + head_line("Use arrows to move cursor, anything else to mark corner 2"); + if ((tmp = selectcell(parent, 0, + ul->y, ul->x, + max_line, max_col, + FALSE, + (bool *) 0)) != 0) { + *lr = *tmp; + MvWAddCh(parent, lr->y, lr->x, '*'); + wmove(parent, lr->y, lr->x); + wsyncdown(parent); + wrefresh(parent); + result = (lr->y != ul->y && lr->x != ul->x); + } + } + head_line("done"); + return result; +} + +/* + * Draw a box inside the given window. + */ +static void +box_inside(WINDOW *win) +{ + int y0, x0; + int y1, x1; + + getyx(win, y0, x0); + getmaxyx(win, y1, x1); + + MvWHLine(win, 0, 0, ACS_HLINE, x1); + MvWHLine(win, y1 - 1, 0, ACS_HLINE, x1); + + MvWVLine(win, 0, 0, ACS_VLINE, y1); + MvWVLine(win, 0, x1 - 1, ACS_VLINE, y1); + + MvWAddCh(win, 0, 0, ACS_ULCORNER); + MvWAddCh(win, y1 - 1, 0, ACS_LLCORNER); + MvWAddCh(win, 0, x1 - 1, ACS_URCORNER); + MvWAddCh(win, y1 - 1, x1 - 1, ACS_LRCORNER); + + wsyncdown(win); + wmove(win, y0, x0); + wrefresh(win); +} + +/* + * Add a window to our list. + */ +static void +add_window(WINDOW *parent, WINDOW *child) +{ + static unsigned have = 0; + unsigned need = ((num_windows + 1) | 31) + 1; + + keypad(child, TRUE); + if (need > have) { + all_windows = typeRealloc(FRAME, need, all_windows); + if (!all_windows) + failed("add_window"); + } + all_windows[num_windows].parent = parent; + all_windows[num_windows].child = child; + num_windows++; +} + +static int +window2num(WINDOW *win) +{ + int n; + int result = -1; + for (n = 0; n < (int) num_windows; ++n) { + if (win == all_windows[n].child) { + result = n; + break; + } + } + return result; +} + +static WINDOW * +parent_of(WINDOW *win) +{ + WINDOW *result = 0; + int n = window2num(win); + if (n >= 0) + result = all_windows[n].parent; + return result; +} + +static void +repaint_one(WINDOW *win) +{ + touchwin(win); + wnoutrefresh(win); +} + +static void +refresh_all(WINDOW *win) +{ + unsigned n; + + for (n = 0; n < num_windows; ++n) { + if (all_windows[n].child != win) { + repaint_one(all_windows[n].child); + } + } + + repaint_one(win); + doupdate(); +} + +static WINDOW * +next_window(WINDOW *win) +{ + WINDOW *result = win; + int n = window2num(win); + + if (n++ >= 0) { + result = all_windows[(unsigned) n % num_windows].child; + wmove(result, 0, 0); + wrefresh(result); + } + return result; +} + +static WINDOW * +prev_window(WINDOW *win) +{ + WINDOW *result = win; + int n = window2num(win); + + if (n-- >= 0) { + if (n < 0) + n = (int) (num_windows - 1); + result = all_windows[(unsigned) n % num_windows].child; + wmove(result, 0, 0); + wrefresh(result); + } + return result; +} + +static void +recur_move_window(WINDOW *parent, int dy, int dx) +{ + unsigned n; + + for (n = 0; n < num_windows; ++n) { + if (all_windows[n].parent == parent) { + mvwin(all_windows[n].child, dy, dx); + recur_move_window(all_windows[n].child, dy, dx); + } + } +} + +/* + * test mvwin(). + */ +static bool +move_window(WINDOW *win, bool recur) +{ + WINDOW *parent = parent_of(win); + bool result = FALSE; + + if (parent != 0) { + bool top = (parent == stdscr); + int min_col = top ? COL_MIN : 0; + int max_col = top ? COL_MAX : getmaxx(parent); + int min_line = top ? LINE_MIN : 0; + int max_line = top ? LINE_MAX : getmaxy(parent); + PAIR *tmp; + bool more; + + head_line("Select new position for %swindow", top ? "" : "sub"); + + while ((tmp = selectcell(parent, + win, + min_line, min_col, + max_line, max_col, + FALSE, + &more)) != 0) { + int y0, x0; + getbegyx(parent, y0, x0); + /* + * Moving a subwindow has the effect of moving a viewport around + * the screen. The parent window retains the contents of the + * subwindow in the original location, but the viewport will show + * the contents (again) at the new location. So it will look odd + * when testing. + */ + if (mvwin(win, y0 + tmp->y, x0 + tmp->x) != ERR) { + if (recur) { + recur_move_window(win, tmp->y, tmp->x); + } + refresh_all(win); + doupdate(); + result = TRUE; + } else { + result = FALSE; + } + if (!more) + break; + } + } + head_line("done"); + return result; +} + +static void +show_derwin(WINDOW *win) +{ + int pary, parx, maxy, maxx; + + getmaxyx(win, maxy, maxx); + getparyx(win, pary, parx); + + head_line("Select new position for derived window at %d,%d (%d,%d)", + pary, parx, maxy, maxx); +} + +/* + * test mvderwin(). + */ +static bool +move_derwin(WINDOW *win) +{ + WINDOW *parent = parent_of(win); + bool result = FALSE; + + if (parent != 0) { + bool top = (parent == stdscr); + int min_col = top ? COL_MIN : 0; + int max_col = top ? COL_MAX : getmaxx(parent); + int min_line = top ? LINE_MIN : 0; + int max_line = top ? LINE_MAX : getmaxy(parent); + PAIR *tmp; + bool more; + + show_derwin(win); + while ((tmp = selectcell(parent, + win, + min_line, min_col, + max_line, max_col, + TRUE, + &more)) != 0) { + if (mvderwin(win, tmp->y, tmp->x) != ERR) { + refresh_all(win); + doupdate(); + repaint_one(win); + doupdate(); + result = TRUE; + show_derwin(win); + } else { + flash(); + } + if (!more) + break; + } + } + head_line("done"); + return result; +} + +static void +fill_window(WINDOW *win, chtype ch) +{ + int y, x; + int y0, x0; + int y1, x1; + + getyx(win, y0, x0); + getmaxyx(win, y1, x1); + for (y = 0; y < y1; ++y) { + for (x = 0; x < x1; ++x) { + MvWAddCh(win, y, x, ch); + } + } + wsyncdown(win); + wmove(win, y0, x0); + wrefresh(win); +} + +static void +fill_with_pattern(WINDOW *win) +{ + int y, x; + int y0, x0; + int y1, x1; + int ch = 'a'; + + getyx(win, y0, x0); + getmaxyx(win, y1, x1); + for (y = 0; y < y1; ++y) { + for (x = 0; x < x1; ++x) { + MvWAddCh(win, y, x, (chtype) ch); + if (++ch > 'z') + ch = 'a'; + } + } + wsyncdown(win); + wmove(win, y0, x0); + wrefresh(win); +} + +#define lines_of(ul,lr) (lr.y - ul.y + 1) +#define cols_of(ul,lr) (lr.x - ul.x + 1) +#define pair_of(ul) ul.y, ul.x + +static WINDOW * +create_my_window(WINDOW *current) +{ + PAIR ul, lr; + WINDOW *result = 0; + + if (getwindow(stdscr, &ul, &lr)) { + result = newwin(lines_of(ul, lr), cols_of(ul, lr), pair_of(ul)); + if (result != 0) { + fill_window(result, 'c'); + add_window(stdscr, result); + } + } + if (result == 0) + result = current; + return result; +} + +static WINDOW * +create_my_derwin(WINDOW *parent) +{ + PAIR ul, lr; + WINDOW *result = 0; + + if (getwindow(parent, &ul, &lr)) { + result = derwin(parent, lines_of(ul, lr), cols_of(ul, lr), pair_of(ul)); + if (result != 0) { + fill_window(result, 'd'); + add_window(parent, result); + } + } + if (result == 0) + result = parent; + return result; +} + +static WINDOW * +create_my_subwin(WINDOW *parent) +{ + PAIR ul, lr; + WINDOW *result = 0; + + if (getwindow(parent, &ul, &lr)) { + result = subwin(parent, + lines_of(ul, lr), + cols_of(ul, lr), + ul.y + getbegy(parent), + ul.x + getbegx(parent)); + if (result != 0) { + fill_window(result, 's'); + add_window(parent, result); + } + } + if (result == 0) + result = parent; + return result; +} + +static void +show_help(WINDOW *current) +{ + /* *INDENT-OFF* */ + static struct { + int key; + CONST_FMT char * msg; + } help[] = { + { HELP_KEY_1, "Show this screen" }, + { 'b', "Draw a box inside the current window" }, + { 'c', "Create a new window" }, + { 'd', "Create a new derived window" }, + { 'D', "Move derived window (moves viewport)" }, + { 'f', "Fill the current window with the next character" }, + { 'F', "Fill the current window with a pattern" }, + { 'm', "Move the current window" }, + { 'M', "Move the current window (and its children)" }, + { 'q', "Quit" }, + { 's', "Create a new subwindow" }, + { CTRL('L'), "Repaint all windows, doing current one last" }, + { CTRL('N'), "Cursor to next window" }, + { CTRL('P'), "Cursor to previous window" }, + }; + /* *INDENT-ON* */ + + char **msgs = typeCalloc(char *, SIZEOF(help) + 1); + size_t n; + + for (n = 0; n < SIZEOF(help); ++n) { + size_t need = (21 + strlen(help[n].msg)); + msgs[n] = typeMalloc(char, need); + _nc_SPRINTF(msgs[n], _nc_SLIMIT(need) + "%-20s%s", keyname(help[n].key), help[n].msg); + } + popup_msg2(current, msgs); + for (n = 0; n < SIZEOF(help); ++n) { + free(msgs[n]); + } + free(msgs); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + WINDOW *current_win; + int ch; + bool done = FALSE; + + initscr(); + cbreak(); + noecho(); + nonl(); + intrflush(stdscr, FALSE); + + add_window(0, current_win = stdscr); + +#ifdef NCURSES_MOUSE_VERSION + (void) mousemask(BUTTON1_CLICKED, (mmask_t *) NULL); +#endif /* NCURSES_MOUSE_VERSION */ + + while (!done && (ch = wgetch(current_win)) != ERR) { + int y, x; + + getyx(current_win, y, x); + + switch (ch) { + case HELP_KEY_1: + show_help(current_win); + break; + case 'b': + box_inside(current_win); + break; + case 'c': + current_win = create_my_window(current_win); + break; + case 'd': + current_win = create_my_derwin(current_win); + break; + case 'D': + if (!move_derwin(current_win)) { + tail_line("error"); + continue; + } + break; + case 'f': + fill_window(current_win, (chtype) wgetch(current_win)); + break; + case 'F': + fill_with_pattern(current_win); + break; + case 'm': + case 'M': + if (!move_window(current_win, (ch == 'M'))) { + tail_line("error"); + continue; + } + break; + case 'q': + done = TRUE; + break; + case 's': + current_win = create_my_subwin(current_win); + break; + case CTRL('L'): + refresh_all(current_win); + break; + case CTRL('N'): + current_win = next_window(current_win); + break; + case CTRL('P'): + current_win = prev_window(current_win); + break; +#if 0 + /* want to allow cursor to move around the current window too */ + /* want to test the resizing of windows and subwindows too */ + /* want to allow deleting a window also */ +#endif + default: + wmove(current_win, y, x); + tail_line("unrecognized key (use '?' for help)"); + beep(); + continue; + } + tail_line("size [%d,%d] begin [%d,%d] parent [%d,%d]", + getmaxy(current_win), + getmaxx(current_win), + getbegy(current_win), + getbegx(current_win), + getpary(current_win), + getparx(current_win)); + wmove(current_win, 0, 0); + } + endwin(); +#if NO_LEAKS + free(all_windows); +#endif + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(void) +{ + printf("This program requires the curses mvderwin and mvwin functions\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/ncurses.c b/deps/ncurses-6.3/test/ncurses.c new file mode 100644 index 0000000..c387b0a --- /dev/null +++ b/deps/ncurses-6.3/test/ncurses.c @@ -0,0 +1,8071 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + ****************************************************************************/ +/**************************************************************************** + +NAME + ncurses.c --- ncurses library exerciser + +SYNOPSIS + ncurses + +DESCRIPTION + An interactive test module for the ncurses library. + +AUTHOR + Author: Eric S. Raymond <esr@snark.thyrsus.com> 1993 + Thomas E. Dickey (beginning revision 1.27 in 1996). + +$Id: ncurses.c,v 1.527 2021/09/04 10:31:03 tom Exp $ + +***************************************************************************/ + +#include <test.priv.h> + +#ifdef __hpux +#undef mvwdelch /* HPUX 11.23 macro will not compile */ +#endif + +#if HAVE_GETTIMEOFDAY +#if HAVE_SYS_TIME_H && HAVE_SYS_TIME_SELECT +#include <sys/time.h> +#endif +#if HAVE_SYS_SELECT_H +#include <sys/select.h> +#endif +#endif + +#if USE_LIBPANEL +#include <panel.h> +#endif + +#if USE_LIBMENU +#include <menu.h> +#endif + +#if USE_LIBFORM +#include <form.h> +#endif + +#ifdef NCURSES_VERSION + +#define NCURSES_CONST_PARAM const void + +#ifdef TRACE +static unsigned save_trace = TRACE_ORDINARY | TRACE_ICALLS | TRACE_CALLS; +#endif + +#else + +#define NCURSES_CONST_PARAM char + +#define mmask_t chtype /* not specified in XSI */ + +#ifndef ACS_S3 +#ifdef CURSES_ACS_ARRAY +#define ACS_S3 (CURSES_ACS_ARRAY['p']) /* scan line 3 */ +#define ACS_S7 (CURSES_ACS_ARRAY['r']) /* scan line 7 */ +#define ACS_LEQUAL (CURSES_ACS_ARRAY['y']) /* less/equal */ +#define ACS_GEQUAL (CURSES_ACS_ARRAY['z']) /* greater/equal */ +#define ACS_PI (CURSES_ACS_ARRAY['{']) /* Pi */ +#define ACS_NEQUAL (CURSES_ACS_ARRAY['|']) /* not equal */ +#define ACS_STERLING (CURSES_ACS_ARRAY['}']) /* UK pound sign */ +#else +#define ACS_S3 (A_ALTCHARSET + 'p') /* scan line 3 */ +#define ACS_S7 (A_ALTCHARSET + 'r') /* scan line 7 */ +#define ACS_LEQUAL (A_ALTCHARSET + 'y') /* less/equal */ +#define ACS_GEQUAL (A_ALTCHARSET + 'z') /* greater/equal */ +#define ACS_PI (A_ALTCHARSET + '{') /* Pi */ +#define ACS_NEQUAL (A_ALTCHARSET + '|') /* not equal */ +#define ACS_STERLING (A_ALTCHARSET + '}') /* UK pound sign */ +#endif +#endif /* ACS_S3 */ + +#ifndef WACS_S3 +#ifdef CURSES_WACS_ARRAY +#define WACS_S3 (&(CURSES_WACS_ARRAY['p'])) /* scan line 3 */ +#define WACS_S7 (&(CURSES_WACS_ARRAY['r'])) /* scan line 7 */ +#define WACS_LEQUAL (&(CURSES_WACS_ARRAY['y'])) /* less/equal */ +#define WACS_GEQUAL (&(CURSES_WACS_ARRAY['z'])) /* greater/equal */ +#define WACS_PI (&(CURSES_WACS_ARRAY['{'])) /* Pi */ +#define WACS_NEQUAL (&(CURSES_WACS_ARRAY['|'])) /* not equal */ +#define WACS_STERLING (&(CURSES_WACS_ARRAY['}'])) /* UK pound sign */ +#endif +#endif + +#endif + +#if HAVE_WCSRTOMBS +#define count_wchars(src, len, state) wcsrtombs(0, &src, len, state) +#define trans_wchars(dst, src, len, state) wcsrtombs(dst, &src, len, state) +#define reset_wchars(state) init_mb(state) +#elif HAVE_WCSTOMBS && HAVE_MBTOWC && HAVE_MBLEN +#define count_wchars(src, len, state) wcstombs(0, src, len) +#define trans_wchars(dst, src, len, state) wcstombs(dst, src, len) +#define reset_wchars(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) +#define state_unused +#endif + +#if HAVE_MBSRTOWCS +#define count_mbytes(src, len, state) mbsrtowcs(0, &src, len, state) +#define trans_mbytes(dst, src, len, state) mbsrtowcs(dst, &src, len, state) +#define reset_mbytes(state) init_mb(state) +#elif HAVE_MBSTOWCS && HAVE_MBTOWC && HAVE_MBLEN +#define count_mbytes(src, len, state) mbstowcs(0, src, len) +#define trans_mbytes(dst, src, len, state) mbstowcs(dst, src, len) +#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) +#define state_unused +#endif + +#define ToggleAcs(temp,real) temp = ((temp == real) ? NULL : real) + +#define P(string) printw("%s\n", string) + +#define BLANK ' ' /* this is the background character */ + +static int MaxColors; /* the actual number of colors we'll use */ +static int MinColors; /* the minimum color code */ +static bool UseColors; /* true if we use colors */ + +#undef max_pairs +static int max_pairs; /* ...and the number of color pairs */ + +#if HAVE_COLOR_CONTENT +typedef struct { + NCURSES_COLOR_T red; + NCURSES_COLOR_T green; + NCURSES_COLOR_T blue; +} RGB_DATA; + +static RGB_DATA *all_colors; +#endif + +static void main_menu(bool); +static GCC_NORETURN void failed(const char *s); + +static void +failed(const char *s) +{ + perror(s); + endwin(); + ExitProgram(EXIT_FAILURE); +} + +static void +Repaint(void) +{ + touchwin(stdscr); +#if HAVE_CURSCR + touchwin(curscr); + wrefresh(curscr); +#else + wrefresh(stdscr); +#endif +} + +static bool +isQuit(int c, bool escape) +{ + return ((c) == QUIT || (escape && ((c) == ESCAPE))); +} +#define case_QUIT QUIT: case ESCAPE + +/* Common function to allow ^T to toggle trace-mode in the middle of a test + * so that trace-files can be made smaller. + */ +static int +wGetchar(WINDOW *win) +{ + int c; +#ifdef TRACE + while ((c = wgetch(win)) == CTRL('T')) { + if (_nc_tracing) { + save_trace = _nc_tracing; + Trace(("TOGGLE-TRACING OFF")); + _nc_tracing = 0; + } else { + _nc_tracing = save_trace; + } + curses_trace(_nc_tracing); + if (_nc_tracing) + Trace(("TOGGLE-TRACING ON")); + } +#else + c = wgetch(win); +#endif + return c; +} +#define Getchar() wGetchar(stdscr) + +#if USE_SOFTKEYS +/* replaces wgetnstr(), since we want to be able to edit values */ +static void +wGetstring(WINDOW *win, char *buffer, int limit) +{ + int y0, x0, x; + bool done = FALSE; + + echo(); + getyx(win, y0, x0); + (void) wattrset(win, A_REVERSE); + + x = (int) strlen(buffer); + while (!done) { + int ch; + if (x > (int) strlen(buffer)) + x = (int) strlen(buffer); + wmove(win, y0, x0); + wprintw(win, "%-*s", limit, buffer); + wmove(win, y0, x0 + x); + switch (ch = wGetchar(win)) { + case '\n': + case KEY_ENTER: + done = TRUE; + break; + case CTRL('U'): + *buffer = '\0'; + break; + case '\b': + case KEY_BACKSPACE: + case KEY_DC: + if (x > 0) { + int j; + for (j = --x; (buffer[j] = buffer[j + 1]) != '\0'; ++j) { + ; + } + } else { + beep(); + } + break; + case KEY_LEFT: + if (x > 0) { + --x; + } else { + flash(); + } + break; + case KEY_RIGHT: + ++x; + break; + default: + if (!isprint(ch) || ch >= KEY_MIN) { + beep(); + } else if ((int) strlen(buffer) < limit) { + int j; + for (j = (int) strlen(buffer) + 1; j > x; --j) { + buffer[j] = buffer[j - 1]; + } + buffer[x++] = (char) ch; + } else { + flash(); + } + } + } + + wattroff(win, A_REVERSE); + wmove(win, y0, x0); + noecho(); +} +#endif + +#if USE_WIDEC_SUPPORT +static wchar_t +fullwidth_digit(int ch) +{ + return (wchar_t) (ch + 0xff10 - '0'); +} + +static void +make_fullwidth_text(wchar_t *target, const char *source) +{ + int ch; + while ((ch = *source++) != 0) { + *target++ = fullwidth_digit(ch); + } + *target = 0; +} + +static void +make_narrow_text(wchar_t *target, const char *source) +{ + int ch; + while ((ch = *source++) != 0) { + *target++ = (wchar_t) ch; + } + *target = 0; +} + +#if USE_LIBPANEL +static void +make_fullwidth_digit(cchar_t *target, int digit) +{ + wchar_t source[2]; + + source[0] = fullwidth_digit(digit + '0'); + source[1] = 0; + setcchar(target, source, A_NORMAL, 0, 0); +} +#endif + +static int +wGet_wchar(WINDOW *win, wint_t *result) +{ + int c; +#ifdef TRACE + while ((c = wget_wch(win, result)) == CTRL('T')) { + if (_nc_tracing) { + save_trace = _nc_tracing; + Trace(("TOGGLE-TRACING OFF")); + _nc_tracing = 0; + } else { + _nc_tracing = save_trace; + } + curses_trace(_nc_tracing); + if (_nc_tracing) + Trace(("TOGGLE-TRACING ON")); + } +#else + c = wget_wch(win, result); +#endif + return c; +} +#define Get_wchar(result) wGet_wchar(stdscr, result) + +/* replaces wgetn_wstr(), since we want to be able to edit values */ +#if USE_SOFTKEYS +static void +wGet_wstring(WINDOW *win, wchar_t *buffer, int limit) +{ + int y0, x0, x; + wint_t ch; + bool done = FALSE; + bool fkey = FALSE; + + echo(); + getyx(win, y0, x0); + (void) wattrset(win, A_REVERSE); + + x = (int) wcslen(buffer); + while (!done) { + if (x > (int) wcslen(buffer)) + x = (int) wcslen(buffer); + + /* clear the "window' */ + wmove(win, y0, x0); + wprintw(win, "%*s", limit, " "); + + /* write the existing buffer contents */ + wmove(win, y0, x0); + waddnwstr(win, buffer, limit); + + /* positions the cursor past character 'x' */ + wmove(win, y0, x0); + waddnwstr(win, buffer, x); + + switch (wGet_wchar(win, &ch)) { + case KEY_CODE_YES: + fkey = TRUE; + switch (ch) { + case KEY_ENTER: + ch = '\n'; + fkey = FALSE; + break; + case KEY_BACKSPACE: + case KEY_DC: + ch = '\b'; + fkey = FALSE; + break; + case KEY_LEFT: + case KEY_RIGHT: + break; + default: + ch = (wint_t) -1; + break; + } + break; + case OK: + fkey = FALSE; + break; + default: + ch = (wint_t) -1; + fkey = TRUE; + break; + } + + switch (ch) { + case '\n': + done = TRUE; + break; + case CTRL('U'): + *buffer = '\0'; + break; + case '\b': + if (x > 0) { + int j; + for (j = --x; (buffer[j] = buffer[j + 1]) != '\0'; ++j) { + ; + } + } else { + beep(); + } + break; + case KEY_LEFT: + if (x > 0) { + --x; + } else { + beep(); + } + break; + case KEY_RIGHT: + ++x; + break; + default: + if (fkey) { + beep(); + } else if ((int) wcslen(buffer) < limit) { + int j; + for (j = (int) wcslen(buffer) + 1; j > x; --j) { + buffer[j] = buffer[j - 1]; + } + buffer[x++] = (wchar_t) ch; + } else { + beep(); + } + } + } + + wattroff(win, A_REVERSE); + wmove(win, y0, x0); + noecho(); +} +#endif /* USE_SOFTKEYS */ + +#endif /* USE_WIDEC_SUPPORT */ + +static void +Pause(void) +{ + move(LINES - 1, 0); + addstr("Press any key to continue... "); + (void) Getchar(); +} + +static void +Cannot(const char *what) +{ + printw("\nThis %s terminal %s\n\n", getenv("TERM"), what); + Pause(); + endwin(); +} + +static void +ShellOut(bool message) +{ + if (message) + addstr("Shelling out..."); + def_prog_mode(); + endwin(); +#ifdef _NC_WINDOWS + system("cmd.exe"); +#else + IGNORE_RC(system("sh")); +#endif + if (message) + addstr("returned from shellout.\n"); + refresh(); +} + +#ifdef NCURSES_MOUSE_VERSION +/* + * This function is the same as _tracemouse(), but we cannot count on that + * being available in the non-debug library. + */ +static const char * +mouse_decode(MEVENT const *ep) +{ + static char buf[80 + (5 * 10) + (32 * 15)]; + + (void) _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + "id %2d at (%2d, %2d, %d) state %4lx = {", + ep->id, ep->x, ep->y, ep->z, (unsigned long) ep->bstate); + +#define SHOW(m, s) \ + if ((ep->bstate & m)==m) { \ + _nc_STRCAT(buf, s, sizeof(buf)); \ + _nc_STRCAT(buf, ", ", sizeof(buf)); \ + } + + SHOW(BUTTON1_RELEASED, "release-1"); + SHOW(BUTTON1_PRESSED, "press-1"); + SHOW(BUTTON1_CLICKED, "click-1"); + SHOW(BUTTON1_DOUBLE_CLICKED, "doubleclick-1"); + SHOW(BUTTON1_TRIPLE_CLICKED, "tripleclick-1"); +#if NCURSES_MOUSE_VERSION == 1 + SHOW(BUTTON1_RESERVED_EVENT, "reserved-1"); +#endif + + SHOW(BUTTON2_RELEASED, "release-2"); + SHOW(BUTTON2_PRESSED, "press-2"); + SHOW(BUTTON2_CLICKED, "click-2"); + SHOW(BUTTON2_DOUBLE_CLICKED, "doubleclick-2"); + SHOW(BUTTON2_TRIPLE_CLICKED, "tripleclick-2"); +#if NCURSES_MOUSE_VERSION == 1 + SHOW(BUTTON2_RESERVED_EVENT, "reserved-2"); +#endif + + SHOW(BUTTON3_RELEASED, "release-3"); + SHOW(BUTTON3_PRESSED, "press-3"); + SHOW(BUTTON3_CLICKED, "click-3"); + SHOW(BUTTON3_DOUBLE_CLICKED, "doubleclick-3"); + SHOW(BUTTON3_TRIPLE_CLICKED, "tripleclick-3"); +#if NCURSES_MOUSE_VERSION == 1 + SHOW(BUTTON3_RESERVED_EVENT, "reserved-3"); +#endif + + SHOW(BUTTON4_RELEASED, "release-4"); + SHOW(BUTTON4_PRESSED, "press-4"); + SHOW(BUTTON4_CLICKED, "click-4"); + SHOW(BUTTON4_DOUBLE_CLICKED, "doubleclick-4"); + SHOW(BUTTON4_TRIPLE_CLICKED, "tripleclick-4"); +#if NCURSES_MOUSE_VERSION == 1 + SHOW(BUTTON4_RESERVED_EVENT, "reserved-4"); +#endif + +#if NCURSES_MOUSE_VERSION == 2 + SHOW(BUTTON5_RELEASED, "release-5"); + SHOW(BUTTON5_PRESSED, "press-5"); + SHOW(BUTTON5_CLICKED, "click-5"); + SHOW(BUTTON5_DOUBLE_CLICKED, "doubleclick-5"); + SHOW(BUTTON5_TRIPLE_CLICKED, "tripleclick-5"); +#endif + + SHOW(BUTTON_CTRL, "ctrl"); + SHOW(BUTTON_SHIFT, "shift"); + SHOW(BUTTON_ALT, "alt"); + SHOW(ALL_MOUSE_EVENTS, "all-events"); + SHOW(REPORT_MOUSE_POSITION, "position"); + +#undef SHOW + + if (buf[strlen(buf) - 1] == ' ') + buf[strlen(buf) - 2] = '\0'; + _nc_STRCAT(buf, "}", sizeof(buf)); + return (buf); +} + +static void +show_mouse(WINDOW *win) +{ + MEVENT event; + bool outside; + bool show_loc; + + getmouse(&event); + outside = !wenclose(win, event.y, event.x); + + if (outside) { + (void) wstandout(win); + waddstr(win, "KEY_MOUSE"); + (void) wstandend(win); + } else { + waddstr(win, "KEY_MOUSE"); + } + wprintw(win, ", %s", mouse_decode(&event)); + + if (outside) + win = stdscr; + + show_loc = wmouse_trafo(win, &event.y, &event.x, FALSE); + + if (show_loc) { + int y, x; + getyx(win, y, x); + wmove(win, event.y, event.x); + waddch(win, '*'); + wmove(win, y, x); + } + + if (outside) + wnoutrefresh(win); +} +#endif /* NCURSES_MOUSE_VERSION */ + +/**************************************************************************** + * + * Character input test + * + ****************************************************************************/ + +#define NUM_GETCH_FLAGS 256 +typedef bool GetchFlags[NUM_GETCH_FLAGS]; + +static void +setup_getch(WINDOW *win, GetchFlags flags) +{ + keypad(win, flags['k']); /* should be redundant, but for testing */ + meta(win, flags['m']); /* force this to a known state */ + if (flags['e']) + echo(); + else + noecho(); +} + +static void +init_getch(WINDOW *win, GetchFlags flags, int delay) +{ + memset(flags, FALSE, NUM_GETCH_FLAGS); + flags[UChar('k')] = (win == stdscr); + flags[UChar('m')] = TRUE; + flags[UChar('t')] = (delay != 0); + + setup_getch(win, flags); +} + +static bool +blocking_getch(GetchFlags flags, int delay) +{ + return ((delay < 0) && flags['t']); +} + +#define ExitOnEscape() (flags[UChar('k')] && flags[UChar('t')]) + +static void +wgetch_help(WINDOW *win, GetchFlags flags) +{ + static const char *help[] = + { + "e -- toggle echo mode" + ,"g -- triggers a getstr test" + ,"k -- toggle keypad/literal mode" + ,"m -- toggle meta (7-bit/8-bit) mode" + ,"^q -- quit" + ,"s -- shell out" + ,"t -- toggle timeout" + ,"w -- create a new window" +#ifdef SIGTSTP + ,"z -- suspend this process" +#endif + }; + int y, x; + unsigned chk = ((SIZEOF(help) + 1) / 2); + unsigned n; + + getyx(win, y, x); + move(0, 0); + printw("Type any key to see its %s value. Also:\n", + flags['k'] ? "keypad" : "literal"); + for (n = 0; n < SIZEOF(help); ++n) { + const char *msg = help[n]; + int row = 1 + (int) (n % chk); + int col = (n >= chk) ? COLS / 2 : 0; + int flg = ((strstr(msg, "toggle") != 0) + && (flags[UChar(*msg)] != FALSE)); + if (*msg == '^' && ExitOnEscape()) + msg = "^[,^q -- quit"; + if (flg) + (void) standout(); + MvPrintw(row, col, "%s", msg); + if (col == 0) + clrtoeol(); + if (flg) + (void) standend(); + } + wrefresh(stdscr); + wmove(win, y, x); +} + +static void +wgetch_wrap(WINDOW *win, int first_y) +{ + int last_y = getmaxy(win) - 1; + int y = getcury(win) + 1; + + if (y >= last_y) + y = first_y; + wmove(win, y, 0); + wclrtoeol(win); +} + +#if defined(KEY_RESIZE) && HAVE_WRESIZE +typedef struct { + WINDOW *text; + WINDOW *frame; +} WINSTACK; + +static WINSTACK *winstack = 0; +static unsigned len_winstack = 0; + +static void +forget_boxes(void) +{ + if (winstack != 0) { + free(winstack); + } + winstack = 0; + len_winstack = 0; +} + +static void +remember_boxes(unsigned level, WINDOW *txt_win, WINDOW *box_win) +{ + unsigned need = (level + 1) * 2; + + assert(level < (unsigned) COLS); + + if (winstack == 0) { + len_winstack = 20; + winstack = typeMalloc(WINSTACK, len_winstack); + } else if (need >= len_winstack) { + len_winstack = need; + winstack = typeRealloc(WINSTACK, len_winstack, winstack); + } + if (!winstack) + failed("remember_boxes"); + winstack[level].text = txt_win; + winstack[level].frame = box_win; +} + +#if USE_SOFTKEYS && (defined(NCURSES_VERSION_PATCH) && NCURSES_VERSION_PATCH < 20071229) && NCURSES_EXT_FUNCS +static void +slk_repaint(void) +{ + /* this chunk is now done in resize_term() */ + slk_touch(); + slk_clear(); + slk_noutrefresh(); +} + +#else +#define slk_repaint() /* nothing */ +#endif + +#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE +/* + * For wgetch_test(), we create pairs of windows - one for a box, one for text. + * Resize both and paint the box in the parent. + */ +static void +resize_boxes(unsigned level, WINDOW *win) +{ + unsigned n; + int base = 5; + int high = LINES - base; + int wide = COLS; + + touchwin(stdscr); + wnoutrefresh(stdscr); + + slk_repaint(); + + for (n = 0; n < level; ++n) { + wresize(winstack[n].frame, high, wide); + wresize(winstack[n].text, high - 2, wide - 2); + high -= 2; + wide -= 2; + werase(winstack[n].text); + box(winstack[n].frame, 0, 0); + wnoutrefresh(winstack[n].frame); + wprintw(winstack[n].text, + "size %dx%d\n", + getmaxy(winstack[n].text), + getmaxx(winstack[n].text)); + wnoutrefresh(winstack[n].text); + if (winstack[n].text == win) + break; + } + doupdate(); +} +#endif /* resize_boxes */ +#else +#define forget_boxes() /* nothing */ +#define remember_boxes(level,text,frame) /* nothing */ +#endif + +/* + * Return-code is OK/ERR or a keyname. + */ +static const char * +ok_keyname(int code) +{ + return ((code == OK) ? "OK" : ((code == ERR) ? "ERR" : keyname(code))); +} + +static void +wgetch_test(unsigned level, WINDOW *win, int delay) +{ + char buf[BUFSIZ]; + int first_y, first_x; + int incount = 0; + GetchFlags flags; + + init_getch(win, flags, delay); + notimeout(win, FALSE); + wtimeout(win, delay); + getyx(win, first_y, first_x); + + wgetch_help(win, flags); + wsetscrreg(win, first_y, getmaxy(win) - 1); + scrollok(win, TRUE); + + for (;;) { + int c; + + while ((c = wGetchar(win)) == ERR) { + incount++; + if (blocking_getch(flags, delay)) { + (void) wprintw(win, "%05d: input error", incount); + break; + } else { + (void) wprintw(win, "%05d: input timed out", incount); + } + wgetch_wrap(win, first_y); + } + if (c == ERR && blocking_getch(flags, delay)) { + wprintw(win, "ERR"); + wgetch_wrap(win, first_y); + } else if (isQuit(c, ExitOnEscape())) { + break; + } else if (c == 'e') { + flags[UChar('e')] = !flags[UChar('e')]; + setup_getch(win, flags); + wgetch_help(win, flags); + } else if (c == 'g') { + waddstr(win, "wgetnstr test: "); + echo(); + c = wgetnstr(win, buf, sizeof(buf) - 1); + noecho(); + wprintw(win, "I saw %d characters:\n\t`%s' (%s).", + (int) strlen(buf), buf, + ok_keyname(c)); + wclrtoeol(win); + wgetch_wrap(win, first_y); + } else if (c == 'k') { + flags[UChar('k')] = !flags[UChar('k')]; + setup_getch(win, flags); + wgetch_help(win, flags); + } else if (c == 'm') { + flags[UChar('m')] = !flags[UChar('m')]; + setup_getch(win, flags); + wgetch_help(win, flags); + } else if (c == 's') { + ShellOut(TRUE); + } else if (c == 't') { + notimeout(win, flags[UChar('t')]); + flags[UChar('t')] = !flags[UChar('t')]; + wgetch_help(win, flags); + } else if (c == 'w') { + int high = getmaxy(win) - 1 - first_y + 1; + int wide = getmaxx(win) - first_x; + int old_y, old_x; + int new_y = first_y + getbegy(win); + int new_x = first_x + getbegx(win); + + getyx(win, old_y, old_x); + if (high > 2 && wide > 2) { + WINDOW *wb = newwin(high, wide, new_y, new_x); + WINDOW *wi = newwin(high - 2, wide - 2, new_y + 1, new_x + 1); + + box(wb, 0, 0); + wrefresh(wb); + wmove(wi, 0, 0); + remember_boxes(level, wi, wb); + wgetch_test(level + 1, wi, delay); + delwin(wi); + delwin(wb); + + wgetch_help(win, flags); + wmove(win, old_y, old_x); + touchwin(win); + wrefresh(win); + doupdate(); + } +#ifdef SIGTSTP + } else if (c == 'z') { + kill(getpid(), SIGTSTP); +#endif + } else { + wprintw(win, "Key pressed: %04o ", c); +#ifdef NCURSES_MOUSE_VERSION + if (c == KEY_MOUSE) { + show_mouse(win); + } else +#endif /* NCURSES_MOUSE_VERSION */ + if (c >= KEY_MIN) { +#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE + if (c == KEY_RESIZE) { + resize_boxes(level, win); + } +#endif + (void) waddstr(win, keyname(c)); + } else if (c >= 0x80) { + unsigned c2 = (unsigned) c; +#if !(defined(NCURSES_VERSION) || defined(_XOPEN_CURSES)) + /* at least Solaris SVR4 curses breaks unctrl(128), etc. */ + c2 &= 0x7f; +#endif + if (isprint(c)) + (void) wprintw(win, "%c", UChar(c)); + else if (c2 != UChar(c)) + (void) wprintw(win, "M-%s", unctrl(c2)); + else + (void) wprintw(win, "%s", unctrl(c2)); + waddstr(win, " (high-half character)"); + } else { + if (isprint(c)) + (void) wprintw(win, "%c (ASCII printable character)", c); + else + (void) wprintw(win, "%s (ASCII control character)", + unctrl(UChar(c))); + } + wgetch_wrap(win, first_y); + } + } + + wtimeout(win, -1); + + if (!level) + init_getch(win, flags, delay); +} + +static int +begin_getch_test(void) +{ + char buf[BUFSIZ]; + int delay; + + refresh(); + +#ifdef NCURSES_MOUSE_VERSION + mousemask(ALL_MOUSE_EVENTS | REPORT_MOUSE_POSITION, (mmask_t *) 0); +#endif + + (void) printw("Delay in 10ths of a second (<CR> for blocking input)? "); + echo(); + getnstr(buf, sizeof(buf) - 1); + noecho(); + nonl(); + + if (isdigit(UChar(buf[0]))) { + delay = atoi(buf) * 100; + } else { + delay = -1; + } + raw(); + move(6, 0); + return delay; +} + +static void +finish_getch_test(void) +{ +#ifdef NCURSES_MOUSE_VERSION + mousemask(0, (mmask_t *) 0); +#endif + erase(); + noraw(); + nl(); + endwin(); +} + +static int +getch_test(bool recur GCC_UNUSED) +{ + int delay = begin_getch_test(); + + slk_restore(); + wgetch_test(0, stdscr, delay); + forget_boxes(); + finish_getch_test(); + slk_clear(); + return OK; +} + +#if USE_WIDEC_SUPPORT +/* + * For wget_wch_test(), we create pairs of windows - one for a box, one for text. + * Resize both and paint the box in the parent. + */ +#if defined(KEY_RESIZE) && HAVE_WRESIZE +static void +resize_wide_boxes(unsigned level, WINDOW *win) +{ + unsigned n; + int base = 5; + int high = LINES - base; + int wide = COLS; + + touchwin(stdscr); + wnoutrefresh(stdscr); + + slk_repaint(); + + for (n = 0; n < level; ++n) { + wresize(winstack[n].frame, high, wide); + wresize(winstack[n].text, high - 2, wide - 2); + high -= 2; + wide -= 2; + werase(winstack[n].text); + box_set(winstack[n].frame, 0, 0); + wnoutrefresh(winstack[n].frame); + wprintw(winstack[n].text, + "size %dx%d\n", + getmaxy(winstack[n].text), + getmaxx(winstack[n].text)); + wnoutrefresh(winstack[n].text); + if (winstack[n].text == win) + break; + } + doupdate(); +} +#endif /* KEY_RESIZE */ + +static char * +wcstos(const wchar_t *src) +{ + int need; + char *result = 0; + const wchar_t *tmp = src; +#ifndef state_unused + mbstate_t state; +#endif + + reset_wchars(state); + if ((need = (int) count_wchars(tmp, 0, &state)) > 0) { + unsigned have = (unsigned) need; + if ((result = typeCalloc(char, have + 1)) != 0) { + tmp = src; + if (trans_wchars(result, tmp, have, &state) != have) { + free(result); + result = 0; + } + } else { + failed("wcstos"); + } + } + return result; +} + +static void +wget_wch_test(unsigned level, WINDOW *win, int delay) +{ + wchar_t wchar_buf[BUFSIZ]; + wint_t wint_buf[BUFSIZ]; + int first_y, first_x; + wint_t c; + int incount = 0; + GetchFlags flags; + char *temp; + + init_getch(win, flags, delay); + notimeout(win, FALSE); + wtimeout(win, delay); + getyx(win, first_y, first_x); + + wgetch_help(win, flags); + wsetscrreg(win, first_y, getmaxy(win) - 1); + scrollok(win, TRUE); + + for (;;) { + int code; + + while ((code = wGet_wchar(win, &c)) == ERR) { + incount++; + if (blocking_getch(flags, delay)) { + (void) wprintw(win, "%05d: input error", incount); + break; + } else { + (void) wprintw(win, "%05d: input timed out", incount); + } + wgetch_wrap(win, first_y); + } + if (code == ERR && blocking_getch(flags, delay)) { + wprintw(win, "ERR"); + wgetch_wrap(win, first_y); + } else if (isQuit((int) c, ExitOnEscape())) { + break; + } else if (c == 'e') { + flags[UChar('e')] = !flags[UChar('e')]; + setup_getch(win, flags); + wgetch_help(win, flags); + } else if (c == 'g') { + waddstr(win, "wgetn_str test: "); + echo(); + code = wgetn_wstr(win, wint_buf, BUFSIZ - 1); + noecho(); + if (code == ERR) { + wprintw(win, "wgetn_wstr returns an error."); + } else { + int n; + for (n = 0; (wchar_buf[n] = (wchar_t) wint_buf[n]) != 0; ++n) { + ; + } + if ((temp = wcstos(wchar_buf)) != 0) { + wprintw(win, "I saw %d characters:\n\t`%s'.", + (int) wcslen(wchar_buf), temp); + free(temp); + } else { + wprintw(win, "I saw %d characters (cannot convert).", + (int) wcslen(wchar_buf)); + } + } + wclrtoeol(win); + wgetch_wrap(win, first_y); + } else if (c == 'k') { + flags[UChar('k')] = !flags[UChar('k')]; + setup_getch(win, flags); + wgetch_help(win, flags); + } else if (c == 'm') { + flags[UChar('m')] = !flags[UChar('m')]; + setup_getch(win, flags); + wgetch_help(win, flags); + } else if (c == 's') { + ShellOut(TRUE); + } else if (c == 't') { + notimeout(win, flags[UChar('t')]); + flags[UChar('t')] = !flags[UChar('t')]; + wgetch_help(win, flags); + } else if (c == 'w') { + int high = getmaxy(win) - 1 - first_y + 1; + int wide = getmaxx(win) - first_x; + int old_y, old_x; + int new_y = first_y + getbegy(win); + int new_x = first_x + getbegx(win); + + getyx(win, old_y, old_x); + if (high > 2 && wide > 2) { + WINDOW *wb = newwin(high, wide, new_y, new_x); + WINDOW *wi = newwin(high - 2, wide - 2, new_y + 1, new_x + 1); + + box_set(wb, 0, 0); + wrefresh(wb); + wmove(wi, 0, 0); + remember_boxes(level, wi, wb); + wget_wch_test(level + 1, wi, delay); + delwin(wi); + delwin(wb); + + wgetch_help(win, flags); + wmove(win, old_y, old_x); + touchwin(win); + wrefresh(win); + } +#ifdef SIGTSTP + } else if (c == 'z') { + kill(getpid(), SIGTSTP); +#endif + } else { + wprintw(win, "Key pressed: %04o ", (int) c); +#ifdef NCURSES_MOUSE_VERSION + if (c == KEY_MOUSE) { + show_mouse(win); + } else +#endif /* NCURSES_MOUSE_VERSION */ + if (code == KEY_CODE_YES) { +#if defined(KEY_RESIZE) && HAVE_WRESIZE + if (c == KEY_RESIZE) { + resize_wide_boxes(level, win); + } +#endif + (void) waddstr(win, keyname((wchar_t) c)); + } else { + (void) waddstr(win, key_name((wchar_t) c)); + if (c < 256 && iscntrl(c)) { + (void) wprintw(win, " (control character)"); + } else { + (void) wprintw(win, " = %#x (printable character)", + (unsigned) c); + } + } + wgetch_wrap(win, first_y); + } + } + + wtimeout(win, -1); + + if (!level) + init_getch(win, flags, delay); +} + +static int +x_getch_test(bool recur GCC_UNUSED) +{ + int delay = begin_getch_test(); + + slk_restore(); + wget_wch_test(0, stdscr, delay); + forget_boxes(); + finish_getch_test(); + slk_clear(); + return OK; +} +#endif + +/**************************************************************************** + * + * Character attributes test + * + ****************************************************************************/ + +#if HAVE_SETUPTERM || HAVE_TGETENT +#define get_ncv() TIGETNUM("ncv","NC") +#define get_xmc() TIGETNUM("xmc","sg") +#else +#define get_ncv() -1 +#define get_xmc() -1 +#endif + +#if !HAVE_TERMATTRS +static chtype +my_termattrs(void) +{ + static int first = TRUE; + static chtype result = 0; + + if (first) { +#if !HAVE_TIGETSTR + char buffer[4096]; + char parsed[4096]; + char *area_pointer = parsed; + + tgetent(buffer, getenv("TERM")); +#endif + + if (TIGETSTR("smso", "so")) + result |= A_STANDOUT; + if (TIGETSTR("smul", "us")) + result |= A_UNDERLINE; + if (TIGETSTR("rev", "mr")) + result |= A_REVERSE; + if (TIGETSTR("blink", "mb")) + result |= A_BLINK; + if (TIGETSTR("dim", "mh")) + result |= A_DIM; + if (TIGETSTR("bold", "md")) + result |= A_BOLD; + if (TIGETSTR("smacs", "ac")) + result |= A_ALTCHARSET; + + first = FALSE; + } + return result; +} +#define termattrs() my_termattrs() +#endif + +#define ATTRSTRING_1ST 32 /* ' ' */ +#define ATTRSTRING_END 126 /* '~' */ + +#define COLS_PRE_ATTRS 5 +#define COLS_AFT_ATTRS 15 +#define COL_ATTRSTRING (COLS_PRE_ATTRS + 17) +#define LEN_ATTRSTRING (COLS - (COL_ATTRSTRING + COLS_AFT_ATTRS)) +#define MAX_ATTRSTRING (ATTRSTRING_END + 1 - ATTRSTRING_1ST) + +static char attr_test_string[MAX_ATTRSTRING + 1]; + +static void +attr_legend(WINDOW *helpwin) +{ + int row = 1; + int col = 1; + + MvWPrintw(helpwin, row++, col, + "ESC to exit."); + MvWPrintw(helpwin, row++, col, + "^L repaints."); + ++row; + MvWPrintw(helpwin, row++, col, + "Modify the test strings:"); + MvWPrintw(helpwin, row++, col, + " A digit sets gaps on each side of displayed attributes"); + MvWPrintw(helpwin, row++, col, + " </> shifts the text left/right. "); + ++row; + MvWPrintw(helpwin, row++, col, + "Toggles:"); + if (UseColors) { + MvWPrintw(helpwin, row++, col, + " f/F/b/B toggle foreground/background background color"); + MvWPrintw(helpwin, row++, col, + " t/T toggle text/background color attribute"); + } + MvWPrintw(helpwin, row++, col, + " a/A toggle ACS (alternate character set) mapping"); + MvWPrintw(helpwin, row, col, + " v/V toggle video attribute to combine with each line"); +#if USE_WIDEC_SUPPORT + MvWPrintw(helpwin, row, col, + " w/W toggle normal/wide (double-width) test-characters"); +#endif +} + +static void +show_color_attr(int fg, int bg, int tx) +{ + if (UseColors) { + printw(" Colors (fg %d, bg %d", fg, bg); + if (tx >= 0) + printw(", text %d", tx); + printw("),"); + } +} + +static bool +cycle_color_attr(int ch, NCURSES_COLOR_T *fg, NCURSES_COLOR_T *bg, NCURSES_COLOR_T *tx) +{ + bool error = FALSE; + + if (UseColors) { + switch (ch) { + case 'f': + *fg = (NCURSES_COLOR_T) (*fg + 1); + break; + case 'F': + *fg = (NCURSES_COLOR_T) (*fg - 1); + break; + case 'b': + *bg = (NCURSES_COLOR_T) (*bg + 1); + break; + case 'B': + *bg = (NCURSES_COLOR_T) (*bg - 1); + break; + case 't': + *tx = (NCURSES_COLOR_T) (*tx + 1); + break; + case 'T': + *tx = (NCURSES_COLOR_T) (*tx - 1); + break; + default: + beep(); + error = TRUE; + break; + } + if (*fg >= COLORS) + *fg = (NCURSES_COLOR_T) MinColors; + if (*fg < MinColors) + *fg = (NCURSES_COLOR_T) (COLORS - 1); + if (*bg >= COLORS) + *bg = (NCURSES_COLOR_T) MinColors; + if (*bg < MinColors) + *bg = (NCURSES_COLOR_T) (COLORS - 1); + if (*tx >= COLORS) + *tx = -1; + if (*tx < -1) + *tx = (NCURSES_COLOR_T) (COLORS - 1); + } else { + beep(); + error = TRUE; + } + return error; +} + +static void +adjust_attr_string(int adjust) +{ + char save = attr_test_string[0]; + int first = ((int) UChar(save)) + adjust; + + if (first >= ATTRSTRING_1ST) { + int j, k; + + for (j = 0, k = first; j < MAX_ATTRSTRING; ++j, ++k) { + if (k > ATTRSTRING_END) + break; + attr_test_string[j] = (char) k; + if (((k + 1 - first) % 5) == 0) { + if (++j >= MAX_ATTRSTRING) + break; + attr_test_string[j] = ' '; + } + } + if ((LEN_ATTRSTRING - j) > 5) { + attr_test_string[0] = save; + adjust_attr_string(adjust - 1); + } else { + while (j < MAX_ATTRSTRING) + attr_test_string[j++] = ' '; + attr_test_string[j] = '\0'; + } + } +} + +/* + * Prefer the right-end of the string for starting, since that maps to the + * VT100 line-drawing. + */ +static int +default_attr_string(void) +{ + int result = (ATTRSTRING_END - LEN_ATTRSTRING); + result += (LEN_ATTRSTRING / 5); + if (result < ATTRSTRING_1ST) + result = ATTRSTRING_1ST; + return result; +} + +static void +init_attr_string(void) +{ + attr_test_string[0] = (char) default_attr_string(); + adjust_attr_string(0); +} + +static int +show_attr(WINDOW *win, int row, int skip, bool arrow, chtype attr, const char *name) +{ + int ncv = get_ncv(); + chtype test = attr & (chtype) (~(A_ALTCHARSET | A_CHARTEXT)); + + if (arrow) + MvPrintw(row, COLS_PRE_ATTRS - 3, "-->"); + MvPrintw(row, COLS_PRE_ATTRS, "%s mode:", name); + MvPrintw(row, COL_ATTRSTRING - 1, "|"); + if (skip) + printw("%*s", skip, " "); + /* + * Just for testing, write text using the alternate character set one + * character at a time (to pass its rendition directly), and use the + * string operation for the other attributes. + */ + wmove(win, 0, 0); + werase(win); + if (attr & A_ALTCHARSET) { + const char *s; + + for (s = attr_test_string; *s != '\0'; ++s) { + chtype ch = UChar(*s); + (void) waddch(win, ch | attr); + } + } else { + (void) wattrset(win, AttrArg(attr, 0)); + (void) waddstr(win, attr_test_string); + (void) wattroff(win, (int) attr); + } + if (skip) + printw("%*s", skip, " "); + MvPrintw(row, COL_ATTRSTRING + LEN_ATTRSTRING, "|"); + if (test != A_NORMAL) { + if (!(termattrs() & test)) { + printw(" (N/A)"); + } else { + if (ncv > 0 && stdscr && (getbkgd(stdscr) & A_COLOR)) { + static const chtype table[] = + { + A_STANDOUT, + A_UNDERLINE, + A_REVERSE, + A_BLINK, + A_DIM, + A_BOLD, +#ifdef A_INVIS + A_INVIS, +#endif +#ifdef A_ITALIC + A_ITALIC, +#endif + A_PROTECT, + A_ALTCHARSET + }; + unsigned n; + bool found = FALSE; + for (n = 0; n < SIZEOF(table); n++) { + if ((table[n] & attr) != 0 + && ((1 << n) & ncv) != 0) { + found = TRUE; + break; + } + } + if (found) + printw(" (NCV)"); + } + if ((termattrs() & test) != test) { + printw(" (Part)"); + } + } + } + return row + 2; +} + +typedef struct { + chtype attr; + NCURSES_CONST char *name; +} ATTR_TBL; +/* *INDENT-OFF* */ +static const ATTR_TBL attrs_to_test[] = { + { A_STANDOUT, "STANDOUT" }, + { A_REVERSE, "REVERSE" }, + { A_BOLD, "BOLD" }, + { A_UNDERLINE, "UNDERLINE" }, + { A_DIM, "DIM" }, + { A_BLINK, "BLINK" }, + { A_PROTECT, "PROTECT" }, +#ifdef A_INVIS + { A_INVIS, "INVISIBLE" }, +#endif +#ifdef A_ITALIC + { A_ITALIC, "ITALIC" }, +#endif + { A_NORMAL, "NORMAL" }, +}; +/* *INDENT-ON* */ + +static unsigned +init_attr_list(ATTR_TBL * target, attr_t attrs) +{ + unsigned result = 0; + size_t n; + + for (n = 0; n < SIZEOF(attrs_to_test); ++n) { + attr_t test = attrs_to_test[n].attr; + if (test == A_NORMAL || (test & attrs) != 0) { + target[result++] = attrs_to_test[n]; + } + } + return result; +} + +#if USE_WIDEC_SUPPORT +typedef struct { + attr_t attr; + NCURSES_CONST char *name; +} W_ATTR_TBL; +/* *INDENT-OFF* */ +static const W_ATTR_TBL w_attrs_to_test[] = { + { WA_STANDOUT, "STANDOUT" }, + { WA_REVERSE, "REVERSE" }, + { WA_BOLD, "BOLD" }, + { WA_UNDERLINE, "UNDERLINE" }, + { WA_DIM, "DIM" }, + { WA_BLINK, "BLINK" }, + { WA_PROTECT, "PROTECT" }, +#ifdef WA_INVIS + { WA_INVIS, "INVISIBLE" }, +#endif +#ifdef WA_ITALIC + { WA_ITALIC, "ITALIC" }, +#endif + { WA_NORMAL, "NORMAL" }, +}; +/* *INDENT-ON* */ + +static unsigned +init_w_attr_list(W_ATTR_TBL * target, attr_t attrs) +{ + unsigned result = 0; + size_t n; + + for (n = 0; n < SIZEOF(w_attrs_to_test); ++n) { + attr_t test = w_attrs_to_test[n].attr; + if (test == WA_NORMAL || (test & attrs) != 0) { + target[result++] = w_attrs_to_test[n]; + } + } + return result; +} +#endif + +static bool +attr_getc(int *skip, + NCURSES_COLOR_T *fg, + NCURSES_COLOR_T *bg, + NCURSES_COLOR_T *tx, + int *ac, + unsigned *kc, + unsigned limit) +{ + bool result = TRUE; + bool error = FALSE; + WINDOW *helpwin; + + do { + int ch = Getchar(); + + error = FALSE; + if (ch < 256 && isdigit(ch)) { + *skip = (ch - '0'); + } else { + switch (ch) { + case CTRL('L'): + Repaint(); + break; + case HELP_KEY_1: + if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { + box(helpwin, 0, 0); + attr_legend(helpwin); + wGetchar(helpwin); + delwin(helpwin); + } + break; + case 'a': + *ac = 0; + break; + case 'A': + *ac = A_ALTCHARSET; + break; + case 'v': + if (*kc == 0) + *kc = limit - 1; + else + *kc -= 1; + break; + case 'V': + *kc += 1; + if (*kc >= limit) + *kc = 0; + break; + case '<': + adjust_attr_string(-1); + break; + case '>': + adjust_attr_string(1); + break; + case case_QUIT: + result = FALSE; + break; + default: + error = cycle_color_attr(ch, fg, bg, tx); + break; + } + } + } while (error); + return result; +} + +static int +attr_test(bool recur GCC_UNUSED) +/* test text attributes */ +{ + int n; + int skip = get_xmc(); + NCURSES_COLOR_T fg = COLOR_BLACK; /* color pair 0 is special */ + NCURSES_COLOR_T bg = COLOR_BLACK; + NCURSES_COLOR_T tx = -1; + int ac = 0; + WINDOW *my_wins[SIZEOF(attrs_to_test)]; + ATTR_TBL my_list[SIZEOF(attrs_to_test)]; + unsigned my_size = init_attr_list(my_list, termattrs()); + + if (my_size > 1) { + unsigned j, k; + + for (j = 0; j < my_size; ++j) { + my_wins[j] = subwin(stdscr, + 1, LEN_ATTRSTRING, + 2 + (int) (2 * j), COL_ATTRSTRING); + scrollok(my_wins[j], FALSE); + } + + if (skip < 0) + skip = 0; + + n = skip; /* make it easy */ + k = my_size - 1; + init_attr_string(); + + do { + int row = 2; + chtype normal = A_NORMAL | BLANK; + chtype extras = (chtype) ac; + + if (UseColors) { + NCURSES_PAIRS_T pair = 0; + if ((fg != COLOR_BLACK) || (bg != COLOR_BLACK)) { + pair = 1; + if (init_pair(pair, fg, bg) == ERR) { + beep(); + } else { + normal |= (chtype) COLOR_PAIR(pair); + } + } + if (tx >= 0) { + pair = 2; + if (init_pair(pair, tx, bg) == ERR) { + beep(); + } else { + extras |= (chtype) COLOR_PAIR(pair); + normal &= ~A_COLOR; + } + } + } + bkgd(normal); + bkgdset(normal); + erase(); + + box(stdscr, 0, 0); + MvAddStr(0, 20, "Character attribute test display"); + + for (j = 0; j < my_size; ++j) { + bool arrow = (j == k); + row = show_attr(my_wins[j], row, n, arrow, + normal | + extras | + my_list[j].attr | + my_list[k].attr, + my_list[j].name); + } + + MvPrintw(row, COLS_PRE_ATTRS, + "This terminal does %shave the magic-cookie glitch", + get_xmc() > -1 ? "" : "not "); + MvPrintw(row + 1, COLS_PRE_ATTRS, "Enter '?' for help."); + show_color_attr(fg, bg, tx); + printw(" ACS (%d)", ac != 0); + + refresh(); + } while (attr_getc(&n, &fg, &bg, &tx, &ac, &k, my_size)); + + bkgdset(A_NORMAL | BLANK); + erase(); + endwin(); + return OK; + } else { + Cannot("does not support video attributes."); + return ERR; + } +} + +#if USE_WIDEC_SUPPORT +static bool use_fullwidth; +static wchar_t wide_attr_test_string[MAX_ATTRSTRING + 1]; + +#define FULL_LO 0xff00 +#define FULL_HI 0xff5e +#define HALF_LO 0x20 + +#define isFullWidth(ch) ((int)(ch) >= FULL_LO && (int)(ch) <= FULL_HI) +#define ToNormalWidth(ch) (wchar_t) (((int)(ch) - FULL_LO) + HALF_LO) +#define ToFullWidth(ch) (wchar_t) (((int)(ch) - HALF_LO) + FULL_LO) + +/* + * Returns an ASCII code in [32..126] + */ +static wchar_t +normal_wchar(int ch) +{ + wchar_t result = (wchar_t) ch; + if (isFullWidth(ch)) + result = ToNormalWidth(ch); + return result; +} + +/* + * Returns either an ASCII code in in [32..126] or full-width in + * [0xff00..0xff5e], according to use_fullwidth setting. + */ +static wchar_t +target_wchar(int ch) +{ + wchar_t result = (wchar_t) ch; + if (use_fullwidth) { + if (!isFullWidth(ch)) + result = ToFullWidth(ch); + } else { + if (isFullWidth(ch)) + result = ToNormalWidth(ch); + } + return result; +} + +static void +wide_adjust_attr_string(int adjust) +{ + wchar_t save = wide_attr_test_string[0]; + int first = ((int) normal_wchar(save)) + adjust; + + if (first >= ATTRSTRING_1ST) { + int j, k; + + for (j = 0, k = first; j < MAX_ATTRSTRING; ++j, ++k) { + if (k > ATTRSTRING_END) + break; + wide_attr_test_string[j] = target_wchar(k); + if (((k + 1 - first) % 5) == 0) { + if (++j >= MAX_ATTRSTRING) + break; + wide_attr_test_string[j] = ' '; + } + } + if ((LEN_ATTRSTRING - j) > 5) { + wide_attr_test_string[0] = save; + wide_adjust_attr_string(adjust - 1); + } else { + while (j < MAX_ATTRSTRING) + wide_attr_test_string[j++] = ' '; + wide_attr_test_string[j] = '\0'; + } + } +} + +static void +wide_init_attr_string(void) +{ + use_fullwidth = FALSE; + wide_attr_test_string[0] = (wchar_t) default_attr_string(); + wide_adjust_attr_string(0); +} + +static void +set_wide_background(NCURSES_PAIRS_T pair) +{ + cchar_t normal; + wchar_t blank[2]; + + blank[0] = ' '; + blank[1] = 0; + setcchar(&normal, blank, A_NORMAL, pair, 0); + bkgrnd(&normal); + bkgrndset(&normal); +} + +static attr_t +get_wide_background(void) +{ + attr_t result = WA_NORMAL; + attr_t attr; + cchar_t ch; + NCURSES_PAIRS_T pair; + + memset(&ch, 0, sizeof(ch)); + if (getbkgrnd(&ch) != ERR) { + wchar_t wch[CCHARW_MAX]; + + if (getcchar(&ch, wch, &attr, &pair, 0) != ERR) { + result = attr; + } + } + return result; +} + +static int +wide_show_attr(WINDOW *win, + int row, + int skip, + bool arrow, + attr_t attr, + NCURSES_PAIRS_T pair, + const char *name) +{ + int ncv = get_ncv(); + attr_t test = attr & ~WA_ALTCHARSET; + + if (arrow) + MvPrintw(row, COLS_PRE_ATTRS - 3, "-->"); + MvPrintw(row, COLS_PRE_ATTRS, "%s mode:", name); + MvPrintw(row, COL_ATTRSTRING - 1, "|"); + if (skip) + printw("%*s", skip, " "); + + /* + * Just for testing, write text using the alternate character set one + * character at a time (to pass its rendition directly), and use the + * string operation for the other attributes. + */ + wmove(win, 0, 0); + werase(win); + if (attr & WA_ALTCHARSET) { + const wchar_t *s; + cchar_t ch; + + for (s = wide_attr_test_string; *s != L'\0'; ++s) { + wchar_t fill[2]; + fill[0] = *s; + fill[1] = L'\0'; + setcchar(&ch, fill, attr, pair, 0); + (void) wadd_wch(win, &ch); + } + } else { + attr_t old_attr = 0; + NCURSES_PAIRS_T old_pair = 0; + + (void) (wattr_get) (win, &old_attr, &old_pair, 0); + (void) wattr_set(win, attr, pair, 0); + (void) waddwstr(win, wide_attr_test_string); + (void) wattr_set(win, old_attr, old_pair, 0); + } + if (skip) + printw("%*s", skip, " "); + MvPrintw(row, COL_ATTRSTRING + LEN_ATTRSTRING, "|"); + if (test != A_NORMAL) { + if (!(term_attrs() & test)) { + printw(" (N/A)"); + } else { + if (ncv > 0 && (get_wide_background() & A_COLOR)) { + static const attr_t table[] = + { + WA_STANDOUT, + WA_UNDERLINE, + WA_REVERSE, + WA_BLINK, + WA_DIM, + WA_BOLD, + WA_INVIS, + WA_PROTECT, + WA_ALTCHARSET + }; + unsigned n; + bool found = FALSE; + for (n = 0; n < SIZEOF(table); n++) { + if ((table[n] & attr) != 0 + && ((1 << n) & ncv) != 0) { + found = TRUE; + break; + } + } + if (found) + printw(" (NCV)"); + } + if ((term_attrs() & test) != test) { + printw(" (Part)"); + } + } + } + return row + 2; +} + +static bool +wide_attr_getc(int *skip, + NCURSES_COLOR_T *fg, NCURSES_COLOR_T *bg, + NCURSES_COLOR_T *tx, int *ac, + unsigned *kc, unsigned limit) +{ + bool result = TRUE; + bool error = FALSE; + WINDOW *helpwin; + + do { + int ch = Getchar(); + + error = FALSE; + if (ch < 256 && isdigit(ch)) { + *skip = (ch - '0'); + } else { + switch (ch) { + case CTRL('L'): + Repaint(); + break; + case HELP_KEY_1: + if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { + box_set(helpwin, 0, 0); + attr_legend(helpwin); + wGetchar(helpwin); + delwin(helpwin); + } + break; + case 'a': + *ac = 0; + break; + case 'A': + *ac = A_ALTCHARSET; + break; + case 'v': + if (*kc == 0) + *kc = limit - 1; + else + *kc -= 1; + break; + case 'V': + *kc += 1; + if (*kc >= limit) + *kc = 0; + break; + case 'w': + use_fullwidth = FALSE; + wide_adjust_attr_string(0); + break; + case 'W': + use_fullwidth = TRUE; + wide_adjust_attr_string(0); + break; + case '<': + wide_adjust_attr_string(-1); + break; + case '>': + wide_adjust_attr_string(1); + break; + case case_QUIT: + result = FALSE; + break; + default: + error = cycle_color_attr(ch, fg, bg, tx); + break; + } + } + } while (error); + return result; +} + +static int +x_attr_test(bool recur GCC_UNUSED) +/* test text attributes using wide-character calls */ +{ + int n; + int skip = get_xmc(); + NCURSES_COLOR_T fg = COLOR_BLACK; /* color pair 0 is special */ + NCURSES_COLOR_T bg = COLOR_BLACK; + NCURSES_COLOR_T tx = -1; + int ac = 0; + W_ATTR_TBL my_list[SIZEOF(w_attrs_to_test)]; + WINDOW *my_wins[SIZEOF(w_attrs_to_test)]; + unsigned my_size = init_w_attr_list(my_list, term_attrs()); + + if (my_size > 1) { + unsigned j, k; + + for (j = 0; j < my_size; ++j) { + my_wins[j] = subwin(stdscr, + 1, LEN_ATTRSTRING, + 2 + (int) (2 * j), COL_ATTRSTRING); + scrollok(my_wins[j], FALSE); + } + + if (skip < 0) + skip = 0; + + n = skip; /* make it easy */ + k = my_size - 1; + wide_init_attr_string(); + + do { + int row = 2; + NCURSES_PAIRS_T pair = 0; + NCURSES_PAIRS_T extras = 0; + + if (UseColors) { + pair = (NCURSES_PAIRS_T) (fg != COLOR_BLACK || bg != COLOR_BLACK); + if (pair != 0) { + pair = 1; + if (init_pair(pair, fg, bg) == ERR) { + beep(); + } + } + extras = pair; + if (tx >= 0) { + extras = 2; + if (init_pair(extras, tx, bg) == ERR) { + beep(); + } + } + } + set_wide_background(pair); + erase(); + + box_set(stdscr, 0, 0); + MvAddStr(0, 20, "Character attribute test display"); + + for (j = 0; j < my_size; ++j) { + row = wide_show_attr(my_wins[j], row, n, (j == k), + ((attr_t) ac | + my_list[j].attr | + my_list[k].attr), + extras, + my_list[j].name); + } + + MvPrintw(row, COLS_PRE_ATTRS, + "This terminal does %shave the magic-cookie glitch", + get_xmc() > -1 ? "" : "not "); + MvPrintw(row + 1, COLS_PRE_ATTRS, "Enter '?' for help."); + show_color_attr(fg, bg, tx); + printw(" ACS (%d)", ac != 0); + + refresh(); + } while (wide_attr_getc(&n, &fg, &bg, &tx, &ac, &k, my_size)); + + set_wide_background(0); + erase(); + endwin(); + return OK; + } else { + Cannot("does not support extended video attributes."); + return ERR; + } +} +#endif + +/**************************************************************************** + * + * Color support tests + * + ****************************************************************************/ + +static NCURSES_CONST char *the_color_names[] = +{ + "black", + "red", + "green", + "yellow", + "blue", + "magenta", + "cyan", + "white", + "BLACK", + "RED", + "GREEN", + "YELLOW", + "BLUE", + "MAGENTA", + "CYAN", + "WHITE" +}; + +static void +show_color_name(int y, int x, int color, bool wide, int zoom) +{ + if (move(y, x) != ERR) { + char temp[80]; + int width = 8; + + if (wide || zoom) { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "%02d", color); + if (wide) + width = 4; + if ((int) strlen(temp) >= width) { + int pwr2 = 0; + while ((1 << pwr2) < color) + ++pwr2; + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + width > 4 ? "2^%d" : "^%d", pwr2); + } + } else if (color >= 8) { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "[%02d]", color); + } else if (color < 0) { + _nc_STRCPY(temp, "default", sizeof(temp)); + } else { + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "%.*s", 16, the_color_names[color]); + } + printw("%-*.*s", width, width, temp); + } +} + +static void +color_legend(WINDOW *helpwin, bool wide) +{ + int row = 1; + int col = 1; + + MvWPrintw(helpwin, row++, col, + "ESC to exit."); + ++row; + MvWPrintw(helpwin, row++, col, + "Use up/down arrow to scroll through the display if it is"); + MvWPrintw(helpwin, row++, col, + "longer than one screen. Control/N and Control/P can be used"); + MvWPrintw(helpwin, row++, col, + "in place of up/down arrow. Use pageup/pagedown to scroll a"); + MvWPrintw(helpwin, row++, col, + "full screen; control/B and control/F can be used here."); + ++row; + MvWPrintw(helpwin, row++, col, + "Toggles:"); + MvWPrintw(helpwin, row++, col, + " a/A toggle altcharset off/on"); + MvWPrintw(helpwin, row++, col, + " b/B toggle bold off/on"); + if (has_colors()) { + MvWPrintw(helpwin, row++, col, + " c/C cycle used-colors through 8,16,...,COLORS"); + } + MvWPrintw(helpwin, row++, col, + " n/N toggle text/number on/off"); + MvWPrintw(helpwin, row++, col, + " r/R toggle reverse on/off"); + MvWPrintw(helpwin, row++, col, + " w/W switch width between 4/8 columns"); + MvWPrintw(helpwin, row++, col, + " z/Z zoom out (or in)"); +#if USE_WIDEC_SUPPORT + if (wide) { + MvWPrintw(helpwin, row++, col, + "Wide characters:"); + MvWPrintw(helpwin, row, col, + " x/X toggle text between ASCII and wide-character"); + } +#else + (void) wide; +#endif +} + +#define set_color_test(name, value) if (name != value) { name = value; base_row = 0; } + +static int +color_cycle(int current, int step) +{ + int result = current; + if (step < 0) { + if (current <= 8) { + result = COLORS; + } else { + result = 8; + if ((result * 2) > COLORS) { + result = COLORS; + } else { + while ((result * 2) < current) { + result *= 2; + } + } + } + } else { + if (current >= COLORS) { + result = 8; + } else { + result *= 2; + } + if (result > COLORS) + result = COLORS; + } + return result; +} + +/* generate a color test pattern */ +static int +color_test(bool recur GCC_UNUSED) +{ + NCURSES_PAIRS_T i; + int top = 0, width; + int base_row = 0; + int grid_top = top + 3; + int page_size = (LINES - grid_top); + int pairs_max; + int colors_max = COLORS; + int col_limit; + int row_limit; + int per_row; + char *numbered = 0; + const char *hello; + bool done = FALSE; + bool opt_acsc = FALSE; + bool opt_bold = FALSE; + bool opt_revs = FALSE; + bool opt_nums = FALSE; + bool opt_wide = FALSE; + int opt_zoom = 0; + WINDOW *helpwin; + + if (!UseColors) { + Cannot("does not support color."); + return ERR; + } + + numbered = typeCalloc(char, COLS + 1); + done = ((COLS < 16) || (numbered == 0)); + + /* + * Because the number of colors is usually a power of two, we also use + * a power of two for the number of colors shown per line (to be tidy). + */ + for (col_limit = 1; col_limit * 2 < COLS; col_limit *= 2) ; + + reloop: + while (!done) { + int shown = 0; + int zoom_size = (1 << opt_zoom); + int colors_max1 = colors_max / zoom_size; + double colors_max2 = (double) colors_max1 * (double) colors_max1; + + pairs_max = PAIR_NUMBER(A_COLOR) + 1; + if (colors_max2 <= COLOR_PAIRS) { + int limit = (colors_max1 - MinColors) * (colors_max1 - MinColors); + if (pairs_max > limit) + pairs_max = limit; + } + if (pairs_max > COLOR_PAIRS) + pairs_max = COLOR_PAIRS; + if (pairs_max < colors_max1) + pairs_max = colors_max1; + + /* this assumes an 80-column line */ + if (opt_wide) { + width = 4; + hello = "Test"; + per_row = (col_limit / ((colors_max1 > 8) ? width : 8)); + } else { + width = 8; + hello = "Hello"; + per_row = (col_limit / width); + } + per_row -= MinColors; + + row_limit = (pairs_max + per_row - 1) / per_row; + + move(0, 0); + (void) printw("There are %d color pairs and %d colors", + pairs_max, COLORS); + if (colors_max1 != COLORS) + (void) printw(" (using %d colors)", colors_max1); + if (MinColors) + (void) addstr(" besides 'default'"); + if (opt_zoom) + (void) printw(" zoom:%d", opt_zoom); + + clrtobot(); + MvPrintw(top + 1, 0, + "%dx%d matrix of foreground/background colors, bold *%s*\n", + row_limit, + per_row, + opt_bold ? "on" : "off"); + + /* show color names/numbers across the top */ + for (i = 0; i < per_row; i++) { + show_color_name(top + 2, + (i + 1) * width, + (int) i * zoom_size + MinColors, + opt_wide, + opt_zoom); + } + + /* show a grid of colors, with color names/ numbers on the left */ + for (i = (NCURSES_PAIRS_T) (base_row * per_row); i < pairs_max; i++) { + int row = grid_top + (i / per_row) - base_row; + int col = (i % per_row + 1) * width; + NCURSES_PAIRS_T pair = i; + + if ((i / per_row) > row_limit) + break; + +#define InxToFG(i) (int)((((unsigned long)(i) * (unsigned long)zoom_size) % (unsigned long)(colors_max1 - MinColors)) + (unsigned long)MinColors) +#define InxToBG(i) (int)((((unsigned long)(i) * (unsigned long)zoom_size) / (unsigned long)(colors_max1 - MinColors)) + (unsigned long)MinColors) + if (row >= 0 && move(row, col) != ERR) { + NCURSES_COLOR_T fg = (NCURSES_COLOR_T) InxToFG(i); + NCURSES_COLOR_T bg = (NCURSES_COLOR_T) InxToBG(i); + + init_pair(pair, fg, bg); + attron(COLOR_PAIR(pair)); + if (opt_acsc) + attron(A_ALTCHARSET); + if (opt_bold) + attron(A_BOLD); + if (opt_revs) + attron(A_REVERSE); + + if (opt_nums) { + _nc_SPRINTF(numbered, _nc_SLIMIT((size_t) (COLS + 1)) + "{%02X}", (int) i); + hello = numbered; + } + printw("%-*.*s", width, width, hello); + (void) attrset(A_NORMAL); + + if ((i % per_row) == 0 && InxToFG(i) == MinColors) { + show_color_name(row, 0, + InxToBG(i), + opt_wide, + opt_zoom); + } + ++shown; + } else if (shown) { + break; + } + } + + switch (wGetchar(stdscr)) { + case 'a': + opt_acsc = FALSE; + break; + case 'A': + opt_acsc = TRUE; + break; + case 'b': + opt_bold = FALSE; + break; + case 'B': + opt_bold = TRUE; + break; + case 'c': + colors_max = color_cycle(colors_max, -1); + break; + case 'C': + colors_max = color_cycle(colors_max, 1); + break; + case 'n': + opt_nums = FALSE; + break; + case 'N': + opt_nums = TRUE; + break; + case 'r': + opt_revs = FALSE; + break; + case 'R': + opt_revs = TRUE; + break; + case case_QUIT: + done = TRUE; + continue; + case 'w': + set_color_test(opt_wide, FALSE); + break; + case 'W': + set_color_test(opt_wide, TRUE); + break; + case 'z': + if (opt_zoom <= 0) { + beep(); + } else { + --opt_zoom; + goto reloop; + } + break; + case 'Z': + if ((1 << opt_zoom) >= colors_max) { + beep(); + } else { + ++opt_zoom; + goto reloop; + } + break; + case CTRL('p'): + case KEY_UP: + if (base_row <= 0) { + beep(); + } else { + base_row -= 1; + } + break; + case CTRL('n'): + case KEY_DOWN: + if (base_row + page_size >= row_limit) { + beep(); + } else { + base_row += 1; + } + break; + case CTRL('b'): + case KEY_PREVIOUS: + case KEY_PPAGE: + if (base_row <= 0) { + beep(); + } else { + base_row -= (page_size - 1); + if (base_row < 0) + base_row = 0; + } + break; + case CTRL('f'): + case KEY_NEXT: + case KEY_NPAGE: + if (base_row + page_size >= row_limit) { + beep(); + } else { + base_row += page_size - 1; + if (base_row + page_size >= row_limit) { + base_row = row_limit - page_size - 1; + } + } + break; + case HELP_KEY_1: + if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { + box(helpwin, 0, 0); + color_legend(helpwin, FALSE); + wGetchar(helpwin); + delwin(helpwin); + } + break; + default: + beep(); + continue; + } + } + + erase(); + endwin(); + + free(numbered); + return OK; +} + +#if USE_WIDEC_SUPPORT + +#if USE_EXTENDED_COLOR +#define InitExtendedPair(p,f,g) init_extended_pair((p),(f),(g)) +#define ExtendedColorSet(p) color_set((NCURSES_PAIRS_T) (p), &(p)) +#define EXTENDED_PAIRS_T int +#else +#define InitExtendedPair(p,f,g) init_pair((NCURSES_PAIRS_T) (p),(NCURSES_COLOR_T)(f),(NCURSES_COLOR_T)(g)) +#define ExtendedColorSet(p) color_set((NCURSES_PAIRS_T) (p), NULL) +#define EXTENDED_PAIRS_T NCURSES_PAIRS_T +#endif + +/* generate a color test pattern */ +static int +x_color_test(bool recur GCC_UNUSED) +{ + long i; + int top = 0, width; + int base_row = 0; + int grid_top = top + 3; + int page_size = (LINES - grid_top); + int pairs_max; + int colors_max = COLORS; + int col_limit; + int row_limit; + int per_row; + char *numbered = 0; + const char *hello; + bool done = FALSE; + bool opt_acsc = FALSE; + bool opt_bold = FALSE; + bool opt_revs = FALSE; + bool opt_wide = FALSE; + bool opt_nums = FALSE; + bool opt_xchr = FALSE; + int opt_zoom = 0; + wchar_t *buffer = 0; + WINDOW *helpwin; + + if (!UseColors) { + Cannot("does not support color."); + return ERR; + } + numbered = typeCalloc(char, COLS + 1); + buffer = typeCalloc(wchar_t, COLS + 1); + done = ((COLS < 16) || (numbered == 0) || (buffer == 0)); + + /* + * Because the number of colors is usually a power of two, we also use + * a power of two for the number of colors shown per line (to be tidy). + */ + for (col_limit = 1; col_limit * 2 < COLS; col_limit *= 2) ; + + reloop: + while (!done) { + int shown = 0; + int zoom_size = (1 << opt_zoom); + int colors_max1 = colors_max / zoom_size; + double colors_max2 = (double) colors_max1 * (double) colors_max1; + + pairs_max = ((unsigned) (-1)) / 2; + if (colors_max2 <= COLOR_PAIRS) { + int limit = (colors_max1 - MinColors) * (colors_max1 - MinColors); + if (pairs_max > limit) + pairs_max = limit; + } + if (pairs_max > COLOR_PAIRS) + pairs_max = COLOR_PAIRS; + if (pairs_max < colors_max1) + pairs_max = colors_max1; + + if (opt_wide) { + width = 4; + hello = "Test"; + per_row = (col_limit / ((colors_max1 > 8) ? width : 8)); + } else { + width = 8; + hello = "Hello"; + per_row = (col_limit / width); + } + per_row -= MinColors; + + if (opt_xchr) { + make_fullwidth_text(buffer, hello); + width *= 2; + per_row /= 2; + } else { + make_narrow_text(buffer, hello); + } + + row_limit = (pairs_max + per_row - 1) / per_row; + + move(0, 0); + (void) printw("There are %d color pairs and %d colors", + pairs_max, COLORS); + if (colors_max1 != COLORS) + (void) printw(" (using %d colors)", colors_max1); + if (MinColors) + (void) addstr(" besides 'default'"); + if (opt_zoom) + (void) printw(" zoom:%d", opt_zoom); + + clrtobot(); + MvPrintw(top + 1, 0, + "%dx%d matrix of foreground/background colors, bold *%s*\n", + row_limit, + per_row, + opt_bold ? "on" : "off"); + + /* show color names/numbers across the top */ + for (i = 0; i < per_row; i++) { + show_color_name(top + 2, + ((int) i + 1) * width, + (int) i * zoom_size + MinColors, + opt_wide, + opt_zoom); + } + + /* show a grid of colors, with color names/ numbers on the left */ + for (i = (base_row * per_row); i < pairs_max; i++) { + int row = grid_top + ((int) i / per_row) - base_row; + int col = ((int) i % per_row + 1) * width; + int pair = (int) i; + + if ((i / per_row) > row_limit) + break; + + if (row >= 0 && move(row, col) != ERR) { + InitExtendedPair(pair, InxToFG(i), InxToBG(i)); + (void) ExtendedColorSet(pair); + if (opt_acsc) + attr_on(WA_ALTCHARSET, NULL); + if (opt_bold) + attr_on(WA_BOLD, NULL); + if (opt_revs) + attr_on(WA_REVERSE, NULL); + + if (opt_nums) { + _nc_SPRINTF(numbered, + _nc_SLIMIT((size_t) (COLS + 1) * sizeof(wchar_t)) + "{%02X}", (unsigned) i); + if (opt_xchr) { + make_fullwidth_text(buffer, numbered); + } else { + make_narrow_text(buffer, numbered); + } + } + addnwstr(buffer, width); + (void) attr_set(A_NORMAL, 0, NULL); + + if ((i % per_row) == 0 && InxToFG(i) == MinColors) { + show_color_name(row, 0, + InxToBG(i), + opt_wide, + opt_zoom); + } + ++shown; + } else if (shown) { + break; + } + } + + switch (wGetchar(stdscr)) { + case 'a': + opt_acsc = FALSE; + break; + case 'A': + opt_acsc = TRUE; + break; + case 'b': + opt_bold = FALSE; + break; + case 'B': + opt_bold = TRUE; + break; + case 'c': + colors_max = color_cycle(colors_max, -1); + break; + case 'C': + colors_max = color_cycle(colors_max, 1); + break; + case 'n': + opt_nums = FALSE; + break; + case 'N': + opt_nums = TRUE; + break; + case 'r': + opt_revs = FALSE; + break; + case 'R': + opt_revs = TRUE; + break; + case case_QUIT: + done = TRUE; + continue; + case 'w': + set_color_test(opt_wide, FALSE); + break; + case 'W': + set_color_test(opt_wide, TRUE); + break; + case 'x': + opt_xchr = FALSE; + break; + case 'X': + opt_xchr = TRUE; + break; + case 'z': + if (opt_zoom <= 0) { + beep(); + } else { + --opt_zoom; + goto reloop; + } + break; + case 'Z': + if ((1 << opt_zoom) >= colors_max) { + beep(); + } else { + ++opt_zoom; + goto reloop; + } + break; + case CTRL('p'): + case KEY_UP: + if (base_row <= 0) { + beep(); + } else { + base_row -= 1; + } + break; + case CTRL('n'): + case KEY_DOWN: + if (base_row + page_size >= row_limit) { + beep(); + } else { + base_row += 1; + } + break; + case CTRL('b'): + case KEY_PREVIOUS: + case KEY_PPAGE: + if (base_row <= 0) { + beep(); + } else { + base_row -= (page_size - 1); + if (base_row < 0) + base_row = 0; + } + break; + case CTRL('f'): + case KEY_NEXT: + case KEY_NPAGE: + if (base_row + page_size >= row_limit) { + beep(); + } else { + base_row += page_size - 1; + if (base_row + page_size >= row_limit) { + base_row = row_limit - page_size - 1; + } + } + break; + case HELP_KEY_1: + if ((helpwin = newwin(LINES - 1, COLS - 2, 0, 0)) != 0) { + box(helpwin, 0, 0); + color_legend(helpwin, TRUE); + wGetchar(helpwin); + delwin(helpwin); + } + break; + default: + beep(); + continue; + } + } + + erase(); + endwin(); + + free(numbered); + free(buffer); + return OK; +} +#endif /* USE_WIDEC_SUPPORT */ + +#if HAVE_COLOR_CONTENT +static void +change_color(NCURSES_PAIRS_T current, int field, int value, int usebase) +{ + NCURSES_COLOR_T red, green, blue; + + color_content(current, &red, &green, &blue); + + switch (field) { + case 0: + red = (NCURSES_COLOR_T) (usebase ? (red + value) : value); + break; + case 1: + green = (NCURSES_COLOR_T) (usebase ? (green + value) : value); + break; + case 2: + blue = (NCURSES_COLOR_T) (usebase ? (blue + value) : value); + break; + } + + if (init_color(current, red, green, blue) == ERR) + beep(); +} + +static void +reset_all_colors(void) +{ + NCURSES_PAIRS_T c; + + for (c = 0; c < COLORS; ++c) + init_color(c, + all_colors[c].red, + all_colors[c].green, + all_colors[c].blue); +} + +#define okCOLOR(n) ((n) >= 0 && (n) < MaxColors) +#define okRGB(n) ((n) >= 0 && (n) <= 1000) +#define DecodeRGB(n) (NCURSES_COLOR_T) ((n * 1000) / 0xffff) + +static void +init_all_colors(bool xterm_colors, char *palette_file) +{ + NCURSES_PAIRS_T cp; + all_colors = typeMalloc(RGB_DATA, (unsigned) MaxColors); + if (!all_colors) + failed("all_colors"); + for (cp = 0; cp < MaxColors; ++cp) { + color_content(cp, + &all_colors[cp].red, + &all_colors[cp].green, + &all_colors[cp].blue); + } + /* xterm and compatible terminals can read results of an OSC string + * asking for the current color palette. + */ + if (xterm_colors) { + int n; + char result[BUFSIZ]; + int check_n; + unsigned check_r, check_g, check_b; + + raw(); + noecho(); + + for (n = 0; n < MaxColors; ++n) { + int got; + + fprintf(stderr, "\033]4;%d;?\007", n); + got = (int) read(0, result, sizeof(result) - 1); + if (got < 0) + break; + result[got] = '\0'; + if (sscanf(result, "\033]4;%d;rgb:%x/%x/%x\007", + &check_n, + &check_r, + &check_g, + &check_b) == 4 && + check_n == n) { + all_colors[n].red = DecodeRGB(check_r); + all_colors[n].green = DecodeRGB(check_g); + all_colors[n].blue = DecodeRGB(check_b); + } else { + break; + } + } + reset_prog_mode(); + } + if (palette_file != 0) { + FILE *fp = fopen(palette_file, "r"); + if (fp != 0) { + char buffer[BUFSIZ]; + int red, green, blue; + int scale = 1000; + int c; + while (fgets(buffer, sizeof(buffer), fp) != 0) { + if (sscanf(buffer, "scale:%d", &c) == 1) { + scale = c; + } else if (sscanf(buffer, "%d:%d %d %d", + &c, + &red, + &green, + &blue) == 4 + && okCOLOR(c) + && okRGB(red) + && okRGB(green) + && okRGB(blue)) { +#define Scaled(n) (NCURSES_COLOR_T) (((n) * 1000) / scale) + all_colors[c].red = Scaled(red); + all_colors[c].green = Scaled(green); + all_colors[c].blue = Scaled(blue); + } + } + fclose(fp); + } + } +} + +#define scaled_rgb(n) ((255 * (n)) / 1000) + +static int +color_edit(bool recur GCC_UNUSED) +/* display the color test pattern, without trying to edit colors */ +{ + int i; + int current; + int this_c, value, field; + int last_c; + int top_color; + int page_size; + + if (!UseColors) { + Cannot("does not support color."); + return ERR; + } else if (!can_change_color()) { + Cannot("has hardwired color values."); + return ERR; + } + + reset_all_colors(); +#ifdef KEY_RESIZE + retry: +#endif + current = 0; + this_c = 0; + value = 0; + field = 0; + top_color = 0; + page_size = (LINES - 6); + erase(); + + for (i = 0; i < MaxColors; i++) + init_pair((NCURSES_PAIRS_T) i, + (NCURSES_COLOR_T) COLOR_WHITE, + (NCURSES_COLOR_T) i); + + MvPrintw(LINES - 2, 0, "Number: %d", value); + + do { + NCURSES_COLOR_T red, green, blue; + + attron(A_BOLD); + MvAddStr(0, 20, "Color RGB Value Editing"); + attroff(A_BOLD); + + for (i = (NCURSES_COLOR_T) top_color; + (i - top_color < page_size) + && (i < MaxColors); i++) { + char numeric[80]; + + _nc_SPRINTF(numeric, _nc_SLIMIT(sizeof(numeric)) "[%d]", i); + MvPrintw(2 + i - top_color, 0, "%c %-8s:", + (i == current ? '>' : ' '), + (i < (int) SIZEOF(the_color_names) + ? the_color_names[i] : numeric)); + (void) attrset(AttrArg(COLOR_PAIR(i), 0)); + addstr(" "); + (void) attrset(A_NORMAL); + + color_content((NCURSES_PAIRS_T) i, &red, &green, &blue); + addstr(" R = "); + if (current == i && field == 0) + attron(A_STANDOUT); + printw("%04d", (int) red); + if (current == i && field == 0) + (void) attrset(A_NORMAL); + addstr(", G = "); + if (current == i && field == 1) + attron(A_STANDOUT); + printw("%04d", (int) green); + if (current == i && field == 1) + (void) attrset(A_NORMAL); + addstr(", B = "); + if (current == i && field == 2) + attron(A_STANDOUT); + printw("%04d", (int) blue); + if (current == i && field == 2) + (void) attrset(A_NORMAL); + (void) attrset(A_NORMAL); + printw(" ( %3d %3d %3d )", + (int) scaled_rgb(red), + (int) scaled_rgb(green), + (int) scaled_rgb(blue)); + } + + MvAddStr(LINES - 3, 0, + "Use up/down to select a color, left/right to change fields."); + MvAddStr(LINES - 2, 0, + "Modify field by typing nnn=, nnn-, or nnn+. ? for help."); + + move(2 + current - top_color, 0); + + last_c = this_c; + this_c = Getchar(); + if (this_c < 256 && isdigit(this_c) && !isdigit(last_c)) + value = 0; + + switch (this_c) { +#ifdef KEY_RESIZE + case KEY_RESIZE: + move(0, 0); + goto retry; +#endif + case '!': + ShellOut(FALSE); + /* FALLTHRU */ + case CTRL('r'): + endwin(); + refresh(); + break; + case CTRL('l'): + refresh(); + break; + case CTRL('b'): + case KEY_PPAGE: + if (current > 0) + current -= (page_size - 1); + else + beep(); + break; + + case CTRL('f'): + case KEY_NPAGE: + if (current < (MaxColors - 1)) + current += (page_size - 1); + else + beep(); + break; + + case CTRL('p'): + case KEY_UP: + current = (current == 0 ? (MaxColors - 1) : current - 1); + break; + + case CTRL('n'): + case KEY_DOWN: + current = (current == (MaxColors - 1) ? 0 : current + 1); + break; + + case '\t': + case KEY_RIGHT: + field = (field == 2 ? 0 : field + 1); + break; + + case KEY_BTAB: + case KEY_LEFT: + field = (field == 0 ? 2 : field - 1); + break; + + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + value = value * 10 + (this_c - '0'); + break; + + case '+': + change_color((NCURSES_PAIRS_T) current, field, value, 1); + break; + + case '-': + change_color((NCURSES_PAIRS_T) current, field, -value, 1); + break; + + case '=': + change_color((NCURSES_PAIRS_T) current, field, value, 0); + break; + + case HELP_KEY_1: + erase(); + P(" RGB Value Editing Help"); + P(""); + P("You are in the RGB value editor. Use the arrow keys to select one of"); + P("the fields in one of the RGB triples of the current colors; the one"); + P("currently selected will be reverse-video highlighted."); + P(""); + P("To change a field, enter the digits of the new value; they are echoed"); + P("as entered. Finish by typing `='. The change will take effect instantly."); + P("To increment or decrement a value, use the same procedure, but finish"); + P("with a `+' or `-'."); + P(""); + P("Use `!' to shell-out, ^R or ^L to repaint the screen."); + P(""); + P("Press 'm' to invoke the top-level menu with the current color settings."); + P("To quit, do ESC"); + + Pause(); + erase(); + break; + + case 'm': + endwin(); + main_menu(FALSE); + for (i = 0; i < MaxColors; i++) + init_pair((NCURSES_PAIRS_T) i, + (NCURSES_COLOR_T) COLOR_WHITE, + (NCURSES_COLOR_T) i); + refresh(); + break; + + case case_QUIT: + break; + + default: + beep(); + break; + } + + if (current < 0) + current = 0; + if (current >= MaxColors) + current = MaxColors - 1; + if (current < top_color) + top_color = current; + if (current - top_color >= page_size) + top_color = current - (page_size - 1); + + MvPrintw(LINES - 1, 0, "Number: %d", value); + clrtoeol(); + } while + (!isQuit(this_c, TRUE)); + + erase(); + + /* + * ncurses does not reset each color individually when calling endwin(). + */ + reset_all_colors(); + + endwin(); + return OK; +} +#endif /* HAVE_COLOR_CONTENT */ + +/**************************************************************************** + * + * Alternate character-set stuff + * + ****************************************************************************/ +static bool +cycle_attr(int ch, unsigned *at_code, chtype *attr, ATTR_TBL * list, unsigned limit) +{ + bool result = TRUE; + + switch (ch) { + case 'v': + if ((*at_code += 1) >= limit) + *at_code = 0; + break; + case 'V': + if (*at_code == 0) + *at_code = limit - 1; + else + *at_code -= 1; + break; + default: + result = FALSE; + break; + } + if (result) + *attr = list[*at_code].attr; + return result; +} + +#if USE_WIDEC_SUPPORT +static bool +cycle_w_attr(int ch, unsigned *at_code, attr_t *attr, W_ATTR_TBL * list, unsigned limit) +{ + bool result = TRUE; + + switch (ch) { + case 'v': + if ((*at_code += 1) >= limit) + *at_code = 0; + break; + case 'V': + if (*at_code == 0) + *at_code = limit - 1; + else + *at_code -= 1; + break; + default: + result = FALSE; + break; + } + if (result) + *attr = list[*at_code].attr; + return result; +} +#endif + +static bool +cycle_colors(int ch, int *fg, int *bg, NCURSES_PAIRS_T *pair) +{ + bool result = FALSE; + + if (UseColors) { + result = TRUE; + switch (ch) { + case 'F': + if ((*fg -= 1) < 0) + *fg = COLORS - 1; + break; + case 'f': + if ((*fg += 1) >= COLORS) + *fg = 0; + break; + case 'B': + if ((*bg -= 1) < 0) + *bg = COLORS - 1; + break; + case 'b': + if ((*bg += 1) >= COLORS) + *bg = 0; + break; + default: + result = FALSE; + break; + } + if (result) { + *pair = (NCURSES_PAIRS_T) (*fg != COLOR_BLACK || *bg != COLOR_BLACK); + if (*pair != 0) { + *pair = 1; + if (init_pair(*pair, + (NCURSES_COLOR_T) *fg, + (NCURSES_COLOR_T) *bg) == ERR) { + result = FALSE; + } + } + } + } + return result; +} + +/**************************************************************************** + * + * Soft-key label test + * + ****************************************************************************/ + +#if USE_SOFTKEYS + +#define SLK_HELP 17 +#define SLK_WORK (SLK_HELP + 3) + +static void +slk_help(void) +{ + static const char *table[] = + { + "Available commands are:" + ,"" + ,"^L -- repaint this message and activate soft keys" + ,"a/d -- activate/disable soft keys" + ,"c -- set centered format for labels" + ,"l -- set left-justified format for labels" + ,"r -- set right-justified format for labels" + ,"[12345678] -- set label; labels are numbered 1 through 8" + ,"e -- erase stdscr (should not erase labels)" + ,"s -- test scrolling of shortened screen" + ,"v/V -- cycle through video attributes" +#if HAVE_SLK_COLOR + ,"F/f/B/b -- cycle through foreground/background colors" +#endif + ,"ESC -- return to main menu" + ,"" + ,"Note: if activating the soft keys causes your terminal to scroll up" + ,"one line, your terminal auto-scrolls when anything is written to the" + ,"last screen position. The ncurses code does not yet handle this" + ,"gracefully." + }; + unsigned j; + + move(2, 0); + for (j = 0; j < SIZEOF(table); ++j) { + P(table[j]); + } + refresh(); +} + +#if HAVE_SLK_COLOR +static void +call_slk_color(int fg, int bg) +{ + init_pair(1, (NCURSES_COLOR_T) bg, (NCURSES_COLOR_T) fg); + slk_color(1); + MvPrintw(SLK_WORK, 0, "Colors %d/%d\n", fg, bg); + clrtoeol(); + slk_touch(); + slk_noutrefresh(); + refresh(); +} +#endif + +static int +slk_test(bool recur GCC_UNUSED) +/* exercise the soft keys */ +{ + int c, fmt = 1; + char buf[9]; + char *s; + chtype attr = A_NORMAL; + unsigned at_code = 0; +#if HAVE_SLK_COLOR + int fg = COLOR_BLACK; + int bg = COLOR_WHITE; + NCURSES_PAIRS_T pair = 0; +#endif + ATTR_TBL my_list[SIZEOF(attrs_to_test)]; + unsigned my_size = init_attr_list(my_list, termattrs()); + + c = CTRL('l'); +#if HAVE_SLK_COLOR + if (UseColors) { + call_slk_color(fg, bg); + } +#endif + + do { + move(0, 0); + switch (c) { + case CTRL('l'): + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Soft Key Exerciser"); + attroff(A_BOLD); + + slk_help(); + /* fall through */ + + case 'a': + slk_restore(); + break; + + case 'e': + wclear(stdscr); + break; + + case 's': + MvPrintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: "); + while ((c = Getchar()) != 'Q' && (c != ERR)) + AddCh(c); + break; + + case 'd': + slk_clear(); + break; + + case 'l': + fmt = 0; + break; + + case 'c': + fmt = 1; + break; + + case 'r': + fmt = 2; + break; + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + MvAddStr(SLK_WORK, 0, "Please enter the label value: "); + _nc_STRCPY(buf, "", sizeof(buf)); + if ((s = slk_label(c - '0')) != 0) { + _nc_STRNCPY(buf, s, (size_t) 8); + } + wGetstring(stdscr, buf, 8); + slk_set((c - '0'), buf, fmt); + slk_refresh(); + move(SLK_WORK, 0); + clrtobot(); + break; + + case case_QUIT: + goto done; + +#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE + case KEY_RESIZE: + wnoutrefresh(stdscr); + break; +#endif + + default: + if (cycle_attr(c, &at_code, &attr, my_list, my_size)) { + slk_attrset(attr); + slk_touch(); + slk_noutrefresh(); + break; + } +#if HAVE_SLK_COLOR + if (cycle_colors(c, &fg, &bg, &pair)) { + if (UseColors) { + call_slk_color(fg, bg); + } else { + beep(); + } + break; + } +#endif + beep(); + break; + } + } while (!isQuit(c = Getchar(), TRUE)); + + done: + slk_clear(); + erase(); + endwin(); + return OK; +} + +#if USE_WIDEC_SUPPORT +#define SLKLEN 8 +static int +x_slk_test(bool recur GCC_UNUSED) +/* exercise the soft keys */ +{ + int c, fmt = 1; + wchar_t buf[SLKLEN + 1]; + char *s; + attr_t attr = WA_NORMAL; + unsigned at_code = 0; + int fg = COLOR_BLACK; + int bg = COLOR_WHITE; + NCURSES_PAIRS_T pair = 0; + W_ATTR_TBL my_list[SIZEOF(w_attrs_to_test)]; + unsigned my_size = init_w_attr_list(my_list, term_attrs()); + + c = CTRL('l'); + if (UseColors) { + call_slk_color(fg, bg); + } + do { + move(0, 0); + switch (c) { + case CTRL('l'): + erase(); + attr_on(WA_BOLD, NULL); + MvAddStr(0, 20, "Soft Key Exerciser"); + attr_off(WA_BOLD, NULL); + + slk_help(); + /* fall through */ + + case 'a': + slk_restore(); + break; + + case 'e': + wclear(stdscr); + break; + + case 's': + MvPrintw(SLK_WORK, 0, "Press Q to stop the scrolling-test: "); + while ((c = Getchar()) != 'Q' && (c != ERR)) + AddCh(c); + break; + + case 'd': + slk_clear(); + break; + + case 'l': + fmt = 0; + break; + + case 'c': + fmt = 1; + break; + + case 'r': + fmt = 2; + break; + + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + MvAddStr(SLK_WORK, 0, "Please enter the label value: "); + *buf = 0; + if ((s = slk_label(c - '0')) != 0) { + char *temp = strdup(s); + size_t used = strlen(temp); + size_t want = SLKLEN; +#ifndef state_unused + mbstate_t state; +#endif + + buf[0] = L'\0'; + while (want > 0 && used != 0) { + size_t test; + const char *base = s; + + reset_mbytes(state); + test = count_mbytes(base, 0, &state); + if (test == (size_t) -1) { + temp[--used] = 0; + } else if (test > want) { + temp[--used] = 0; + } else { + reset_mbytes(state); + trans_mbytes(buf, base, want, &state); + break; + } + } + free(temp); + } + wGet_wstring(stdscr, buf, SLKLEN); + slk_wset((c - '0'), buf, fmt); + slk_refresh(); + move(SLK_WORK, 0); + clrtobot(); + break; + + case case_QUIT: + goto done; + + case 'F': + if (UseColors) { + fg = (NCURSES_COLOR_T) ((fg + 1) % COLORS); + call_slk_color(fg, bg); + } + break; + case 'B': + if (UseColors) { + bg = (NCURSES_COLOR_T) ((bg + 1) % COLORS); + call_slk_color(fg, bg); + } + break; +#if defined(NCURSES_VERSION) && defined(KEY_RESIZE) && HAVE_WRESIZE + case KEY_RESIZE: + wnoutrefresh(stdscr); + break; +#endif + default: + if (cycle_w_attr(c, &at_code, &attr, my_list, my_size)) { + slk_attr_set(attr, (NCURSES_COLOR_T) (fg || bg), NULL); + slk_touch(); + slk_noutrefresh(); + break; + } +#if HAVE_SLK_COLOR + if (cycle_colors(c, &fg, &bg, &pair)) { + if (UseColors) { + call_slk_color(fg, bg); + } else { + beep(); + } + break; + } +#endif + beep(); + break; + } + } while (!isQuit(c = Getchar(), TRUE)); + + done: + slk_clear(); + erase(); + endwin(); + return OK; +} +#endif +#endif /* SLK_INIT */ + +static void +show_256_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +{ + unsigned first = 0; + unsigned last = 255; + unsigned code; + int count; + + erase(); + attron(A_BOLD); + MvPrintw(0, 20, "Display of Character Codes %#0x to %#0x", + first, last); + attroff(A_BOLD); + refresh(); + + for (code = first; code <= last; ++code) { + int row = (int) (2 + (code / 16)); + int col = (int) (5 * (code % 16)); + IGNORE_RC(mvaddch(row, col, colored_chtype(code, attr, pair))); + for (count = 1; count < repeat; ++count) { + AddCh(colored_chtype(code, attr, pair)); + } + } + +} + +/* + * Show a slice of 32 characters, allowing those to be repeated up to the + * screen's width. + * + * ISO 6429: codes 0x80 to 0x9f may be control characters that cause the + * terminal to perform functions. The remaining codes can be graphic. + */ +static void +show_upper_chars(int base, int pagesize, int repeat, attr_t attr, NCURSES_PAIRS_T pair) +{ + unsigned code; + unsigned first = (unsigned) base; + unsigned last = first + (unsigned) pagesize - 2; + bool C1 = (first == 128); + int reply; + + erase(); + attron(A_BOLD); + MvPrintw(0, 20, "Display of %s Character Codes %d to %d", + C1 ? "C1" : "GR", first, last); + attroff(A_BOLD); + refresh(); + + for (code = first; code <= last; code++) { + int count = repeat; + int row = 2 + ((int) (code - first) % (pagesize / 2)); + int col = ((int) (code - first) / (pagesize / 2)) * COLS / 2; + char tmp[80]; + _nc_SPRINTF(tmp, _nc_SLIMIT(sizeof(tmp)) "%3u (0x%x)", code, code); + MvPrintw(row, col, "%*s: ", COLS / 4, tmp); + + do { + if (C1) + nodelay(stdscr, TRUE); + echochar(colored_chtype(code, attr, pair)); + if (C1) { + /* (yes, this _is_ crude) */ + while ((reply = Getchar()) != ERR) { + AddCh(UChar(reply)); + napms(10); + } + nodelay(stdscr, FALSE); + } + } while (--count > 0); + } +} + +#define PC_COLS 4 + +static void +show_pc_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +{ + unsigned code; + + erase(); + attron(A_BOLD); + MvPrintw(0, 20, "Display of PC Character Codes"); + attroff(A_BOLD); + refresh(); + + for (code = 0; code < 16; ++code) { + MvPrintw(2, (int) code * PC_COLS + 8, "%X", code); + } + for (code = 0; code < 256; code++) { + int count = repeat; + int row = 3 + (int) (code / 16) + (code >= 128); + int col = 8 + (int) (code % 16) * PC_COLS; + if ((code % 16) == 0) + MvPrintw(row, 0, "0x%02x:", code); + move(row, col); + do { + switch (code) { + case '\n': + case '\r': + case '\b': + case '\f': + case '\033': + case 0x9b: + /* + * Skip the ones that do not work. + */ + break; + default: + AddCh(colored_chtype(code, A_ALTCHARSET | attr, pair)); + break; + } + } while (--count > 0); + } +} + +static void +show_box_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +{ + (void) repeat; + + attr |= (attr_t) COLOR_PAIR(pair); + + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Display of the ACS Line-Drawing Set"); + attroff(A_BOLD); + refresh(); + /* *INDENT-OFF* */ + wborder(stdscr, + colored_chtype(ACS_VLINE, attr, pair), + colored_chtype(ACS_VLINE, attr, pair), + colored_chtype(ACS_HLINE, attr, pair), + colored_chtype(ACS_HLINE, attr, pair), + colored_chtype(ACS_ULCORNER, attr, pair), + colored_chtype(ACS_URCORNER, attr, pair), + colored_chtype(ACS_LLCORNER, attr, pair), + colored_chtype(ACS_LRCORNER, attr, pair)); + MvHLine(LINES / 2, 0, colored_chtype(ACS_HLINE, attr, pair), COLS); + MvVLine(0, COLS / 2, colored_chtype(ACS_VLINE, attr, pair), LINES); + MvAddCh(0, COLS / 2, colored_chtype(ACS_TTEE, attr, pair)); + MvAddCh(LINES / 2, COLS / 2, colored_chtype(ACS_PLUS, attr, pair)); + MvAddCh(LINES - 1, COLS / 2, colored_chtype(ACS_BTEE, attr, pair)); + MvAddCh(LINES / 2, 0, colored_chtype(ACS_LTEE, attr, pair)); + MvAddCh(LINES / 2, COLS - 1, colored_chtype(ACS_RTEE, attr, pair)); + /* *INDENT-ON* */ +} + +static int +show_1_acs(int n, int repeat, const char *name, chtype code) +{ + const int height = 16; + int row = 2 + (n % height); + int col = (n / height) * COLS / 2; + + MvPrintw(row, col, "%*s : ", COLS / 4, name); + do { + AddCh(code); + } while (--repeat > 0); + return n + 1; +} + +static void +show_acs_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +/* display the ACS character set */ +{ + int n; + +#define BOTH(name) #name, colored_chtype(name, attr, (chtype) pair) + + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Display of the ACS Character Set"); + attroff(A_BOLD); + refresh(); + + n = show_1_acs(0, repeat, BOTH(ACS_ULCORNER)); + n = show_1_acs(n, repeat, BOTH(ACS_URCORNER)); + n = show_1_acs(n, repeat, BOTH(ACS_LLCORNER)); + n = show_1_acs(n, repeat, BOTH(ACS_LRCORNER)); + + n = show_1_acs(n, repeat, BOTH(ACS_LTEE)); + n = show_1_acs(n, repeat, BOTH(ACS_RTEE)); + n = show_1_acs(n, repeat, BOTH(ACS_TTEE)); + n = show_1_acs(n, repeat, BOTH(ACS_BTEE)); + + n = show_1_acs(n, repeat, BOTH(ACS_HLINE)); + n = show_1_acs(n, repeat, BOTH(ACS_VLINE)); + + /* + * HPUX's ACS definitions are broken here. Just give up. + */ +#if !(defined(__hpux) && !defined(NCURSES_VERSION)) + n = show_1_acs(n, repeat, BOTH(ACS_LARROW)); + n = show_1_acs(n, repeat, BOTH(ACS_RARROW)); + n = show_1_acs(n, repeat, BOTH(ACS_UARROW)); + n = show_1_acs(n, repeat, BOTH(ACS_DARROW)); + + n = show_1_acs(n, repeat, BOTH(ACS_BLOCK)); + n = show_1_acs(n, repeat, BOTH(ACS_BOARD)); + n = show_1_acs(n, repeat, BOTH(ACS_LANTERN)); + n = show_1_acs(n, repeat, BOTH(ACS_BULLET)); + n = show_1_acs(n, repeat, BOTH(ACS_CKBOARD)); + n = show_1_acs(n, repeat, BOTH(ACS_DEGREE)); + n = show_1_acs(n, repeat, BOTH(ACS_DIAMOND)); + n = show_1_acs(n, repeat, BOTH(ACS_PLMINUS)); + n = show_1_acs(n, repeat, BOTH(ACS_PLUS)); + + n = show_1_acs(n, repeat, BOTH(ACS_GEQUAL)); + n = show_1_acs(n, repeat, BOTH(ACS_NEQUAL)); + n = show_1_acs(n, repeat, BOTH(ACS_LEQUAL)); + + n = show_1_acs(n, repeat, BOTH(ACS_STERLING)); + n = show_1_acs(n, repeat, BOTH(ACS_PI)); + n = show_1_acs(n, repeat, BOTH(ACS_S1)); + n = show_1_acs(n, repeat, BOTH(ACS_S3)); + n = show_1_acs(n, repeat, BOTH(ACS_S7)); + (void) show_1_acs(n, repeat, BOTH(ACS_S9)); +#endif +#undef BOTH +} + +static int +acs_test(bool recur GCC_UNUSED) +{ + int c = 'a'; + int pagesize = 32; + char *term = getenv("TERM"); + const char *pch_kludge = ((term != 0 && strstr(term, "linux")) + ? "p=PC, " + : ""); + chtype attr = A_NORMAL; + int digit = 0; + int repeat = 1; + int fg = COLOR_BLACK; + int bg = COLOR_BLACK; + unsigned at_code = 0; + NCURSES_PAIRS_T pair = 0; + void (*last_show_acs) (int, attr_t, NCURSES_PAIRS_T) = 0; + ATTR_TBL my_list[SIZEOF(attrs_to_test)]; + unsigned my_size = init_attr_list(my_list, termattrs()); + + do { + switch (c) { + case CTRL('L'): + Repaint(); + break; + case 'a': + ToggleAcs(last_show_acs, show_acs_chars); + break; + case 'p': + if (*pch_kludge) + ToggleAcs(last_show_acs, show_pc_chars); + else + beep(); + break; + case 'w': + if (pagesize == 32) { + pagesize = 256; + } else { + pagesize = 32; + } + break; + case 'x': + ToggleAcs(last_show_acs, show_box_chars); + break; + case '0': + case '1': + case '2': + case '3': + digit = (c - '0'); + last_show_acs = 0; + break; + case '-': + if (digit > 0) { + --digit; + last_show_acs = 0; + } else { + beep(); + } + break; + case '+': + if (digit < 3) { + ++digit; + last_show_acs = 0; + } else { + beep(); + } + break; + case '>': + if (repeat < (COLS / 4)) + ++repeat; + break; + case '<': + if (repeat > 1) + --repeat; + break; + default: + if (cycle_attr(c, &at_code, &attr, my_list, my_size) + || cycle_colors(c, &fg, &bg, &pair)) { + break; + } else { + beep(); + } + break; + } + if (pagesize != 32) { + show_256_chars(repeat, attr, pair); + } else if (last_show_acs != 0) { + last_show_acs(repeat, attr, pair); + } else { + show_upper_chars(digit * pagesize + 128, pagesize, repeat, attr, pair); + } + + MvPrintw(LINES - 3, 0, + "Note: ANSI terminals may not display C1 characters."); + MvPrintw(LINES - 2, 0, + "Select: a=ACS, w=all x=box, %s0=C1, 1-3,+/- non-ASCII, </> repeat, ESC=quit", + pch_kludge); + if (UseColors) { + MvPrintw(LINES - 1, 0, + "v/V, f/F, b/B cycle through video attributes (%s) and color %d/%d.", + my_list[at_code].name, + fg, bg); + } else { + MvPrintw(LINES - 1, 0, + "v/V cycles through video attributes (%s).", + my_list[at_code].name); + } + refresh(); + } while (!isQuit(c = Getchar(), TRUE)); + + Pause(); + erase(); + endwin(); + return OK; +} + +#if USE_WIDEC_SUPPORT +static cchar_t * +merge_wide_attr(cchar_t *dst, const cchar_t *src, attr_t attr, NCURSES_PAIRS_T pair) +{ + + *dst = *src; + do { + int count; + TEST_CCHAR(src, count, { + attr |= (test_attrs & A_ALTCHARSET); + setcchar(dst, test_wch, attr, pair, NULL); + }, { + ; + }); + } while (0); + return dst; +} + +/* + * Header/legend take up no more than 8 lines, leaving 16 lines on a 24-line + * display. If there are no repeats, we could normally display 16 lines of 64 + * characters (1024 total). However, taking repeats and double-width cells + * into account, use 256 characters for the page. + */ +static void +show_paged_widechars(unsigned base, + unsigned pagesize, + int repeat, + int space, + attr_t attr, + NCURSES_PAIRS_T pair) +{ + unsigned first = base * pagesize; + unsigned last = first + pagesize - 1; + int per_line = 16; + cchar_t temp; + wchar_t code; + wchar_t codes[10]; + + erase(); + attron(A_BOLD); + MvPrintw(0, 20, "Display of Character Codes %#x to %#x", first, last); + attroff(A_BOLD); + + for (code = (wchar_t) first; code <= (wchar_t) last; code++) { + int row = (2 + (int) (code - (wchar_t) first) / per_line); + int col = 5 * ((int) code % per_line); + int count; + + memset(&codes, 0, sizeof(codes)); + codes[0] = code; + setcchar(&temp, codes, attr, pair, 0); + move(row, col); + if (wcwidth(code) == 0 && code != 0) { + AddCh((chtype) space | + (A_REVERSE ^ attr) | + (attr_t) COLOR_PAIR(pair)); + } + add_wch(&temp); + for (count = 1; count < repeat; ++count) { + add_wch(&temp); + } + } +} + +static void +show_upper_widechars(unsigned first, int repeat, int space, attr_t attr, NCURSES_PAIRS_T pair) +{ + cchar_t temp; + wchar_t code; + unsigned last = first + 31; + + erase(); + attron(A_BOLD); + MvPrintw(0, 20, "Display of Character Codes %d to %d", first, last); + attroff(A_BOLD); + + for (code = (wchar_t) first; code <= (wchar_t) last; code++) { + int row = 2 + ((int) (code - (wchar_t) first) % 16); + int col = ((int) (code - (wchar_t) first) / 16) * COLS / 2; + wchar_t codes[10]; + char tmp[80]; + int count = repeat; + + _nc_SPRINTF(tmp, _nc_SLIMIT(sizeof(tmp)) + "%3ld (0x%lx)", (long) code, (long) code); + MvPrintw(row, col, "%*s: ", COLS / 4, tmp); + + memset(&codes, 0, sizeof(codes)); + codes[0] = code; + setcchar(&temp, codes, attr, pair, 0); + + do { + int y, x; + + /* + * Give non-spacing characters something to combine with. If we + * don't, they'll bunch up in a heap on the space after the ":". + * Mark them with reverse-video to make them simpler to find on + * the display. + */ + if (wcwidth(code) == 0) { + AddCh((chtype) space | + (A_REVERSE ^ attr) | + (attr_t) COLOR_PAIR(pair)); + } + /* + * This uses echo_wchar(), for comparison with the normal 'f' + * test (and to make a test-case for echo_wchar()). The screen + * may flicker because the erase() at the top of the function + * is met by the builtin refresh() in echo_wchar(). + */ + echo_wchar(&temp); + /* + * The repeat-count may make text wrap - avoid that. + */ + getyx(stdscr, y, x); + (void) y; + if (x >= col + (COLS / 2) - 2) + break; + } while (--count > 0); + } +} + +static int +show_1_wacs(int n, int repeat, const char *name, const cchar_t *code) +{ + const int height = 16; + int row = 2 + (n % height); + int col = (n / height) * COLS / 2; + + MvPrintw(row, col, "%*s : ", COLS / 4, name); + while (--repeat >= 0) { + add_wch(code); + } + return n + 1; +} + +#define MERGE_ATTR(wch) merge_wide_attr(&temp, wch, attr, pair) + +static void +show_wacs_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +/* display the wide-ACS character set */ +{ + cchar_t temp; + + int n; + +/*#define BOTH2(name) #name, &(name) */ +#define BOTH2(name) #name, MERGE_ATTR(name) + + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); + attroff(A_BOLD); + refresh(); + + n = show_1_wacs(0, repeat, BOTH2(WACS_ULCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_URCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LLCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LRCORNER)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_LTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_RTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_TTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_BTEE)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_HLINE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_VLINE)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_LARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_RARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_UARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DARROW)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_BLOCK)); + n = show_1_wacs(n, repeat, BOTH2(WACS_BOARD)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LANTERN)); + n = show_1_wacs(n, repeat, BOTH2(WACS_BULLET)); + n = show_1_wacs(n, repeat, BOTH2(WACS_CKBOARD)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND)); + n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS)); + n = show_1_wacs(n, repeat, BOTH2(WACS_PLUS)); + +#ifdef CURSES_WACS_ARRAY + n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL)); + n = show_1_wacs(n, repeat, BOTH2(WACS_NEQUAL)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LEQUAL)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_STERLING)); + n = show_1_wacs(n, repeat, BOTH2(WACS_PI)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S1)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S3)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S7)); + (void) show_1_wacs(n, repeat, BOTH2(WACS_S9)); +#endif +} + +#ifdef WACS_D_PLUS +static void +show_wacs_chars_double(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +/* display the wide-ACS character set */ +{ + cchar_t temp; + + int n; + +/*#define BOTH2(name) #name, &(name) */ +#define BOTH2(name) #name, MERGE_ATTR(name) + + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); + attroff(A_BOLD); + refresh(); + + n = show_1_wacs(0, repeat, BOTH2(WACS_D_ULCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_URCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_LLCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_LRCORNER)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_D_LTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_RTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_TTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_BTEE)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_D_HLINE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_VLINE)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_LARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_RARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_UARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DARROW)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_BLOCK)); + n = show_1_wacs(n, repeat, BOTH2(WACS_BOARD)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LANTERN)); + n = show_1_wacs(n, repeat, BOTH2(WACS_BULLET)); + n = show_1_wacs(n, repeat, BOTH2(WACS_CKBOARD)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND)); + n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS)); + n = show_1_wacs(n, repeat, BOTH2(WACS_D_PLUS)); + +#ifdef CURSES_WACS_ARRAY + n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL)); + n = show_1_wacs(n, repeat, BOTH2(WACS_NEQUAL)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LEQUAL)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_STERLING)); + n = show_1_wacs(n, repeat, BOTH2(WACS_PI)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S1)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S3)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S7)); + (void) show_1_wacs(n, repeat, BOTH2(WACS_S9)); +#endif +} +#endif + +#ifdef WACS_T_PLUS +static void +show_wacs_chars_thick(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +/* display the wide-ACS character set */ +{ + cchar_t temp; + + int n; + +/*#define BOTH2(name) #name, &(name) */ +#define BOTH2(name) #name, MERGE_ATTR(name) + + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); + attroff(A_BOLD); + refresh(); + + n = show_1_wacs(0, repeat, BOTH2(WACS_T_ULCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_URCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_LLCORNER)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_LRCORNER)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_T_LTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_RTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_TTEE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_BTEE)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_T_HLINE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_VLINE)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_LARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_RARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_UARROW)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DARROW)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_BLOCK)); + n = show_1_wacs(n, repeat, BOTH2(WACS_BOARD)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LANTERN)); + n = show_1_wacs(n, repeat, BOTH2(WACS_BULLET)); + n = show_1_wacs(n, repeat, BOTH2(WACS_CKBOARD)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DEGREE)); + n = show_1_wacs(n, repeat, BOTH2(WACS_DIAMOND)); + n = show_1_wacs(n, repeat, BOTH2(WACS_PLMINUS)); + n = show_1_wacs(n, repeat, BOTH2(WACS_T_PLUS)); + +#ifdef CURSES_WACS_ARRAY + n = show_1_wacs(n, repeat, BOTH2(WACS_GEQUAL)); + n = show_1_wacs(n, repeat, BOTH2(WACS_NEQUAL)); + n = show_1_wacs(n, repeat, BOTH2(WACS_LEQUAL)); + + n = show_1_wacs(n, repeat, BOTH2(WACS_STERLING)); + n = show_1_wacs(n, repeat, BOTH2(WACS_PI)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S1)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S3)); + n = show_1_wacs(n, repeat, BOTH2(WACS_S7)); + (void) show_1_wacs(n, repeat, BOTH2(WACS_S9)); +#endif +} +#endif + +#undef MERGE_ATTR + +#define MERGE_ATTR(n,wch) merge_wide_attr(&temp[n], wch, attr, pair) + +static void +show_wbox_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +{ + cchar_t temp[8]; + + (void) repeat; + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Display of the Wide-ACS Line-Drawing Set"); + attroff(A_BOLD); + refresh(); + + wborder_set(stdscr, + MERGE_ATTR(0, WACS_VLINE), + MERGE_ATTR(1, WACS_VLINE), + MERGE_ATTR(2, WACS_HLINE), + MERGE_ATTR(3, WACS_HLINE), + MERGE_ATTR(4, WACS_ULCORNER), + MERGE_ATTR(5, WACS_URCORNER), + MERGE_ATTR(6, WACS_LLCORNER), + MERGE_ATTR(7, WACS_LRCORNER)); + /* *INDENT-OFF* */ + (void) mvhline_set(LINES / 2, 0, MERGE_ATTR(0, WACS_HLINE), COLS); + (void) mvvline_set(0, COLS / 2, MERGE_ATTR(0, WACS_VLINE), LINES); + (void) mvadd_wch(0, COLS / 2, MERGE_ATTR(0, WACS_TTEE)); + (void) mvadd_wch(LINES / 2, COLS / 2, MERGE_ATTR(0, WACS_PLUS)); + (void) mvadd_wch(LINES - 1, COLS / 2, MERGE_ATTR(0, WACS_BTEE)); + (void) mvadd_wch(LINES / 2, 0, MERGE_ATTR(0, WACS_LTEE)); + (void) mvadd_wch(LINES / 2, COLS - 1, MERGE_ATTR(0, WACS_RTEE)); + /* *INDENT-ON* */ +} + +#undef MERGE_ATTR + +static int +show_2_wacs(int n, const char *name, const char *code, attr_t attr, NCURSES_PAIRS_T pair) +{ + const int height = 16; + int row = 2 + (n % height); + int col = (n / height) * COLS / 2; + char temp[80]; + + MvPrintw(row, col, "%*s : ", COLS / 4, name); + (void) attr_set(attr, pair, 0); + _nc_STRNCPY(temp, code, 20); + addstr(temp); + (void) attr_set(A_NORMAL, 0, 0); + return n + 1; +} + +#define SHOW_UTF8(n, name, code) show_2_wacs(n, name, code, attr, pair) + +static void +show_utf8_chars(int repeat, attr_t attr, NCURSES_PAIRS_T pair) +{ + int n; + + (void) repeat; + erase(); + attron(A_BOLD); + MvAddStr(0, 20, "Display of the Wide-ACS Character Set"); + attroff(A_BOLD); + refresh(); + /* *INDENT-OFF* */ + n = SHOW_UTF8(0, "WACS_ULCORNER", "\342\224\214"); + n = SHOW_UTF8(n, "WACS_URCORNER", "\342\224\220"); + n = SHOW_UTF8(n, "WACS_LLCORNER", "\342\224\224"); + n = SHOW_UTF8(n, "WACS_LRCORNER", "\342\224\230"); + + n = SHOW_UTF8(n, "WACS_LTEE", "\342\224\234"); + n = SHOW_UTF8(n, "WACS_RTEE", "\342\224\244"); + n = SHOW_UTF8(n, "WACS_TTEE", "\342\224\254"); + n = SHOW_UTF8(n, "WACS_BTEE", "\342\224\264"); + + n = SHOW_UTF8(n, "WACS_HLINE", "\342\224\200"); + n = SHOW_UTF8(n, "WACS_VLINE", "\342\224\202"); + + n = SHOW_UTF8(n, "WACS_LARROW", "\342\206\220"); + n = SHOW_UTF8(n, "WACS_RARROW", "\342\206\222"); + n = SHOW_UTF8(n, "WACS_UARROW", "\342\206\221"); + n = SHOW_UTF8(n, "WACS_DARROW", "\342\206\223"); + + n = SHOW_UTF8(n, "WACS_BLOCK", "\342\226\256"); + n = SHOW_UTF8(n, "WACS_BOARD", "\342\226\222"); + n = SHOW_UTF8(n, "WACS_LANTERN", "\342\230\203"); + n = SHOW_UTF8(n, "WACS_BULLET", "\302\267"); + n = SHOW_UTF8(n, "WACS_CKBOARD", "\342\226\222"); + n = SHOW_UTF8(n, "WACS_DEGREE", "\302\260"); + n = SHOW_UTF8(n, "WACS_DIAMOND", "\342\227\206"); + n = SHOW_UTF8(n, "WACS_PLMINUS", "\302\261"); + n = SHOW_UTF8(n, "WACS_PLUS", "\342\224\274"); + n = SHOW_UTF8(n, "WACS_GEQUAL", "\342\211\245"); + n = SHOW_UTF8(n, "WACS_NEQUAL", "\342\211\240"); + n = SHOW_UTF8(n, "WACS_LEQUAL", "\342\211\244"); + + n = SHOW_UTF8(n, "WACS_STERLING", "\302\243"); + n = SHOW_UTF8(n, "WACS_PI", "\317\200"); + n = SHOW_UTF8(n, "WACS_S1", "\342\216\272"); + n = SHOW_UTF8(n, "WACS_S3", "\342\216\273"); + n = SHOW_UTF8(n, "WACS_S7", "\342\216\274"); + (void) SHOW_UTF8(n, "WACS_S9", "\342\216\275"); + /* *INDENT-ON* */ +} + +/* display the wide-ACS character set */ +static int +x_acs_test(bool recur GCC_UNUSED) +{ + int c = 'a'; + unsigned digit = 0; + int repeat = 1; + int space = ' '; + unsigned pagesize = 32; + attr_t attr = WA_NORMAL; + int fg = COLOR_BLACK; + int bg = COLOR_BLACK; + unsigned at_code = 0; + NCURSES_PAIRS_T pair = 0; + void (*last_show_wacs) (int, attr_t, NCURSES_PAIRS_T) = 0; + W_ATTR_TBL my_list[SIZEOF(w_attrs_to_test)]; + unsigned my_size = init_w_attr_list(my_list, term_attrs()); + char at_page[20]; + bool pending_code = FALSE; + + at_page[0] = '\0'; + do { + switch (c) { + case CTRL('L'): + Repaint(); + break; + case 'a': + ToggleAcs(last_show_wacs, show_wacs_chars); + break; +#ifdef WACS_D_PLUS + case 'd': + ToggleAcs(last_show_wacs, show_wacs_chars_double); + break; +#endif +#ifdef WACS_T_PLUS + case 't': + ToggleAcs(last_show_wacs, show_wacs_chars_thick); + break; +#endif + case 'w': + if (pagesize == 32) { + pagesize = 256; + } else { + pagesize = 32; + } + break; + case 'x': + ToggleAcs(last_show_wacs, show_wbox_chars); + break; + case 'u': + ToggleAcs(last_show_wacs, show_utf8_chars); + break; + case '@': + pending_code = !pending_code; + if (pending_code) { + _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%02x", digit); + } else if (at_page[0] != '\0') { + _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%x", digit); + } + break; + default: + if (pending_code && isxdigit(c)) { + size_t len = strlen(at_page); + if (len && at_page[0] == '0') { + memmove(at_page, at_page + 1, len--); + } + if (len < sizeof(at_page) - 1) { + at_page[len++] = (char) c; + at_page[len] = '\0'; + } + } else if (pending_code + && (c == '\b' || c == KEY_BACKSPACE || c == KEY_DC)) { + size_t len = strlen(at_page); + if (len) + at_page[--len] = '\0'; + } else if (c < 256 && isdigit(c)) { + digit = (unsigned) (c - '0'); + last_show_wacs = 0; + } else if (c == '+') { + ++digit; + _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%02x", digit); + last_show_wacs = 0; + } else if (c == '-' && digit > 0) { + --digit; + _nc_SPRINTF(at_page, _nc_SLIMIT(sizeof(at_page)) "%02x", + UChar(digit)); + last_show_wacs = 0; + } else if (c == '>' && repeat < (COLS / 4)) { + ++repeat; + } else if (c == '<' && repeat > 1) { + --repeat; + } else if (c == '_') { + space = (space == ' ') ? '_' : ' '; + last_show_wacs = 0; + } else if (cycle_w_attr(c, &at_code, &attr, my_list, my_size) + || cycle_colors(c, &fg, &bg, &pair)) { + if (last_show_wacs != 0) + break; + } else { + beep(); + break; + } + break; + } + if (pagesize != 32) { + show_paged_widechars(digit, pagesize, repeat, space, attr, pair); + } else if (last_show_wacs != 0) { + last_show_wacs(repeat, attr, pair); + } else { + show_upper_widechars(digit * 32 + 128, repeat, space, attr, pair); + } + + MvPrintw(LINES - 4, 0, + "Select: a/d/t WACS, w=%d/page, @", + pagesize); + printw("%s", + pending_code ? at_page : "page"); + addstr(", x=box, u UTF-8, ^L repaint"); + MvPrintw(LINES - 3, 2, + "0-9,+/- non-ASCII, </> repeat, _ space, ESC=quit"); + if (UseColors) { + MvPrintw(LINES - 2, 2, + "v/V, f/F, b/B cycle through video attributes (%s) and color %d/%d.", + my_list[at_code].name, + fg, bg); + } else { + MvPrintw(LINES - 2, 2, + "v/V cycles through video attributes (%s).", + my_list[at_code].name); + } + refresh(); + } while (!isQuit(c = Getchar(), TRUE)); + + Pause(); + erase(); + endwin(); + return OK; +} + +#endif + +/* + * Graphic-rendition test (adapted from vttest) + */ +static int +sgr_attr_test(bool recur GCC_UNUSED) +{ + int pass; + + for (pass = 0; pass < 2; pass++) { + chtype normal = ((pass == 0 ? A_NORMAL : A_REVERSE)) | BLANK; + + /* Use non-default colors if possible to exercise bce a little */ + if (UseColors) { + init_pair(1, COLOR_WHITE, COLOR_BLUE); + normal |= (chtype) COLOR_PAIR(1); + } + bkgdset(normal); + erase(); + MvPrintw(1, 20, "Graphic rendition test pattern:"); + + MvPrintw(4, 1, "vanilla"); + +#define set_sgr(mask) bkgdset((normal^(mask))); + set_sgr(A_BOLD); + MvPrintw(4, 40, "bold"); + + set_sgr(A_UNDERLINE); + MvPrintw(6, 6, "underline"); + + set_sgr(A_BOLD | A_UNDERLINE); + MvPrintw(6, 45, "bold underline"); + + set_sgr(A_BLINK); + MvPrintw(8, 1, "blink"); + + set_sgr(A_BLINK | A_BOLD); + MvPrintw(8, 40, "bold blink"); + + set_sgr(A_UNDERLINE | A_BLINK); + MvPrintw(10, 6, "underline blink"); + + set_sgr(A_BOLD | A_UNDERLINE | A_BLINK); + MvPrintw(10, 45, "bold underline blink"); + + set_sgr(A_REVERSE); + MvPrintw(12, 1, "negative"); + + set_sgr(A_BOLD | A_REVERSE); + MvPrintw(12, 40, "bold negative"); + + set_sgr(A_UNDERLINE | A_REVERSE); + MvPrintw(14, 6, "underline negative"); + + set_sgr(A_BOLD | A_UNDERLINE | A_REVERSE); + MvPrintw(14, 45, "bold underline negative"); + + set_sgr(A_BLINK | A_REVERSE); + MvPrintw(16, 1, "blink negative"); + + set_sgr(A_BOLD | A_BLINK | A_REVERSE); + MvPrintw(16, 40, "bold blink negative"); + + set_sgr(A_UNDERLINE | A_BLINK | A_REVERSE); + MvPrintw(18, 6, "underline blink negative"); + + set_sgr(A_BOLD | A_UNDERLINE | A_BLINK | A_REVERSE); + MvPrintw(18, 45, "bold underline blink negative"); + + bkgdset(normal); + MvPrintw(LINES - 2, 1, "%s background. ", pass == 0 ? "Dark" : + "Light"); + clrtoeol(); + Pause(); + } + + bkgdset(A_NORMAL | BLANK); + erase(); + endwin(); + return OK; +} + +/**************************************************************************** + * + * Windows and scrolling tester. + * + ****************************************************************************/ + +#define BOTLINES 4 /* number of line stolen from screen bottom */ + +typedef struct { + int y, x; +} pair; + +#define FRAME struct frame +FRAME +{ + FRAME *next, *last; + bool do_scroll; + bool do_keypad; + WINDOW *wind; +}; + +#if defined(NCURSES_VERSION) && NCURSES_EXT_FUNCS +#if (NCURSES_VERSION_PATCH < 20070331) +#define is_keypad(win) (win)->_use_keypad +#define is_scrollok(win) (win)->_scroll +#endif +#else +#define is_keypad(win) FALSE +#define is_scrollok(win) FALSE +#endif + +static WINDOW * +frame_win(FRAME * curp) +{ + return (curp != 0) ? curp->wind : stdscr; +} + +/* We need to know if these flags are actually set, so don't look in FRAME. + * These names are known to work with SVr4 curses as well as ncurses. The + * _use_keypad name does not work with Solaris 8. + */ +static bool +HaveKeypad(FRAME * curp) +{ + WINDOW *win = frame_win(curp); + (void) win; + return is_keypad(win); +} + +static bool +HaveScroll(FRAME * curp) +{ + WINDOW *win = frame_win(curp); + (void) win; + return is_scrollok(win); +} + +static void +newwin_legend(FRAME * curp) +{ +#define DATA(num, name) { name, num } + static const struct { + const char *msg; + int code; + } legend[] = { + DATA(0, "^C = create window"), + DATA(0, "^N = next window"), + DATA(0, "^P = previous window"), + DATA(0, "^F = scroll forward"), + DATA(0, "^B = scroll backward"), + DATA(1, "^K = keypad(%s)"), + DATA(2, "^S = scrollok(%s)"), + DATA(0, "^W = save window"), + DATA(0, "^R = restore window"), +#if HAVE_WRESIZE + DATA(0, "^X = resize"), +#endif + DATA(3, "^Q%s = exit") + }; +#undef DATA + size_t n; + bool do_keypad = HaveKeypad(curp); + bool do_scroll = HaveScroll(curp); + char buf[BUFSIZ]; + + move(LINES - 4, 0); + + for (n = 0; n < SIZEOF(legend); n++) { + int x; + + switch (legend[n].code) { + default: + _nc_STRCPY(buf, legend[n].msg, sizeof(buf)); + break; + case 1: + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + legend[n].msg, do_keypad ? "yes" : "no"); + break; + case 2: + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + legend[n].msg, do_scroll ? "yes" : "no"); + break; + case 3: + _nc_SPRINTF(buf, _nc_SLIMIT(sizeof(buf)) + legend[n].msg, do_keypad ? "/ESC" : ""); + break; + } + x = getcurx(stdscr); + addstr((COLS < (x + 3 + (int) strlen(buf))) ? "\n" : (n ? ", " : "")); + addstr(buf); + } + clrtoeol(); +} + +static void +transient(FRAME * curp, NCURSES_CONST char *msg) +{ + newwin_legend(curp); + if (msg) { + MvAddStr(LINES - 1, 0, msg); + refresh(); + napms(1000); + } + + move(LINES - 1, 0); + printw("%s characters are echoed, window should %sscroll.", + HaveKeypad(curp) ? "Non-arrow" : "All other", + HaveScroll(curp) ? "" : "not "); + clrtoeol(); +} + +static void +newwin_report(FRAME * curp) +/* report on the cursor's current position, then restore it */ +{ + WINDOW *win = frame_win(curp); + int y, x; + + if (win != stdscr) + transient(curp, (char *) 0); + getyx(win, y, x); + move(LINES - 1, COLS - 17); + printw("Y = %2d X = %2d", y, x); + if (win != stdscr) + refresh(); + else + wmove(win, y, x); +} + +static pair * +selectcell(int uli, int ulj, int lri, int lrj) +/* arrows keys move cursor, return location at current on non-arrow key */ +{ + static pair res; /* result cell */ + int si = lri - uli + 1; /* depth of the select area */ + int sj = lrj - ulj + 1; /* width of the select area */ + int i = 0, j = 0; /* offsets into the select area */ + + res.y = uli; + res.x = ulj; + for (;;) { + move(uli + i, ulj + j); + newwin_report((FRAME *) 0); + + switch (Getchar()) { + case KEY_UP: + i += si - 1; + break; + case KEY_DOWN: + i++; + break; + case KEY_LEFT: + j += sj - 1; + break; + case KEY_RIGHT: + j++; + break; + case case_QUIT: + return ((pair *) 0); +#ifdef NCURSES_MOUSE_VERSION + case KEY_MOUSE: + { + MEVENT event; + + getmouse(&event); + if (event.y > uli && event.x > ulj) { + i = event.y - uli; + j = event.x - ulj; + } else { + beep(); + break; + } + } +#endif + /* FALLTHRU */ + default: + res.y = uli + i; + res.x = ulj + j; + return (&res); + } + i %= si; + j %= sj; + } +} + +static void +outerbox(pair ul, pair lr, bool onoff) +/* draw or erase a box *outside* the given pair of corners */ +{ + MvAddCh(ul.y - 1, lr.x - 1, onoff ? ACS_ULCORNER : ' '); + MvAddCh(ul.y - 1, lr.x + 1, onoff ? ACS_URCORNER : ' '); + MvAddCh(lr.y + 1, lr.x + 1, onoff ? ACS_LRCORNER : ' '); + MvAddCh(lr.y + 1, ul.x - 1, onoff ? ACS_LLCORNER : ' '); + move(ul.y - 1, ul.x); + hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1); + move(ul.y, ul.x - 1); + vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1); + move(lr.y + 1, ul.x); + hline(onoff ? ACS_HLINE : ' ', lr.x - ul.x + 1); + move(ul.y, lr.x + 1); + vline(onoff ? ACS_VLINE : ' ', lr.y - ul.y + 1); +} + +static WINDOW * +getwindow(void) +/* Ask user for a window definition */ +{ + WINDOW *rwindow; + pair ul, lr, *tmp; + + move(0, 0); + clrtoeol(); + addstr("Use arrows to move cursor, anything else to mark corner 1"); + refresh(); + if ((tmp = selectcell(2, 1, LINES - BOTLINES - 2, COLS - 2)) == (pair *) 0) + return ((WINDOW *) 0); + memcpy(&ul, tmp, sizeof(pair)); + MvAddCh(ul.y - 1, ul.x - 1, ACS_ULCORNER); + move(0, 0); + clrtoeol(); + addstr("Use arrows to move cursor, anything else to mark corner 2"); + refresh(); + if ((tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2)) == + (pair *) 0) + return ((WINDOW *) 0); + memcpy(&lr, tmp, sizeof(pair)); + + rwindow = subwin(stdscr, lr.y - ul.y + 1, lr.x - ul.x + 1, ul.y, ul.x); + + outerbox(ul, lr, TRUE); + refresh(); + + if (rwindow != 0) + wrefresh(rwindow); + + move(0, 0); + clrtoeol(); + return (rwindow); +} + +static void +newwin_move(FRAME * curp, int dy, int dx) +{ + WINDOW *win = frame_win(curp); + int cur_y, cur_x; + int max_y, max_x; + + getyx(win, cur_y, cur_x); + getmaxyx(win, max_y, max_x); + if ((cur_x += dx) < 0) + cur_x = 0; + else if (cur_x >= max_x) + cur_x = max_x - 1; + if ((cur_y += dy) < 0) + cur_y = 0; + else if (cur_y >= max_y) + cur_y = max_y - 1; + wmove(win, cur_y, cur_x); +} + +static FRAME * +delete_framed(FRAME * fp, bool showit) +{ + FRAME *np = 0; + + if (fp != 0) { + fp->last->next = fp->next; + fp->next->last = fp->last; + + if (showit) { + werase(fp->wind); + wrefresh(fp->wind); + } + delwin(fp->wind); + + np = (fp == fp->next) ? NULL : fp->next; + free(fp); + } + return np; +} + +static int +scroll_test(bool recur GCC_UNUSED) +/* Demonstrate windows */ +{ + int c; + FRAME *current = (FRAME *) 0, *neww; + WINDOW *usescr; +#if HAVE_PUTWIN && HAVE_GETWIN + FILE *fp; +#endif + +#define DUMPFILE "screendump" + +#ifdef NCURSES_MOUSE_VERSION + mousemask(BUTTON1_CLICKED, (mmask_t *) 0); +#endif + c = CTRL('C'); + raw(); + do { + transient((FRAME *) 0, (char *) 0); + switch (c) { + case CTRL('C'): + if ((neww = typeCalloc(FRAME, (size_t) 1)) == 0) { + failed("scroll_test"); + goto breakout; + } + if ((neww->wind = getwindow()) == (WINDOW *) 0) { + failed("scroll_test"); + free(neww); + goto breakout; + } + + if (current == 0) { /* First element, */ + neww->next = neww; /* so point it at itself */ + neww->last = neww; + } else { + neww->next = current->next; + neww->last = current; + neww->last->next = neww; + neww->next->last = neww; + } + current = neww; + /* SVr4 curses sets the keypad on all newly-created windows to + * false. Someone reported that PDCurses makes new windows inherit + * this flag. Remove the following 'keypad()' call to test this + */ + keypad(current->wind, TRUE); + current->do_keypad = HaveKeypad(current); + current->do_scroll = HaveScroll(current); + break; + + case CTRL('N'): /* go to next window */ + if (current) + current = current->next; + break; + + case CTRL('P'): /* go to previous window */ + if (current) + current = current->last; + break; + + case CTRL('F'): /* scroll current window forward */ + if (current) + wscrl(frame_win(current), 1); + break; + + case CTRL('B'): /* scroll current window backwards */ + if (current) + wscrl(frame_win(current), -1); + break; + + case CTRL('K'): /* toggle keypad mode for current */ + if (current) { + current->do_keypad = !current->do_keypad; + keypad(current->wind, current->do_keypad); + } + break; + + case CTRL('S'): + if (current) { + current->do_scroll = !current->do_scroll; + scrollok(current->wind, current->do_scroll); + } + break; + +#if HAVE_PUTWIN && HAVE_GETWIN + case CTRL('W'): /* save and delete window */ + if ((current != 0) && (current == current->next)) { + transient(current, "Will not save/delete ONLY window"); + break; + } else if ((fp = fopen(DUMPFILE, "w")) == (FILE *) 0) { + transient(current, "Can't open screen dump file"); + } else { + int rc = putwin(frame_win(current), fp); + (void) fclose(fp); + + if (rc == OK) { + current = delete_framed(current, TRUE); + } else { + transient(current, "Can't write screen dump file"); + } + } + break; + + case CTRL('R'): /* restore window */ + if ((fp = fopen(DUMPFILE, "r")) == (FILE *) 0) { + transient(current, "Can't open screen dump file"); + } else { + if ((neww = typeCalloc(FRAME, (size_t) 1)) != 0) { + + neww->next = current ? current->next : 0; + neww->last = current; + if (neww->last != 0) + neww->last->next = neww; + if (neww->next != 0) + neww->next->last = neww; + + neww->wind = getwin(fp); + + wrefresh(neww->wind); + } else { + failed("scroll_test"); + } + (void) fclose(fp); + } + break; +#endif + +#if HAVE_WRESIZE + case CTRL('X'): /* resize window */ + if (current) { + pair *tmp, ul, lr; + int mx, my; + + move(0, 0); + clrtoeol(); + addstr("Use arrows to move cursor, anything else to mark new corner"); + refresh(); + + getbegyx(current->wind, ul.y, ul.x); + + tmp = selectcell(ul.y, ul.x, LINES - BOTLINES - 2, COLS - 2); + if (tmp == (pair *) 0) { + beep(); + break; + } + + getmaxyx(current->wind, lr.y, lr.x); + lr.y += (ul.y - 1); + lr.x += (ul.x - 1); + outerbox(ul, lr, FALSE); + wnoutrefresh(stdscr); + + /* strictly cosmetic hack for the test */ + getmaxyx(current->wind, my, mx); + if (my > tmp->y - ul.y) { + getyx(current->wind, lr.y, lr.x); + wmove(current->wind, tmp->y - ul.y + 1, 0); + wclrtobot(current->wind); + wmove(current->wind, lr.y, lr.x); + } + if (mx > tmp->x - ul.x) { + int i; + for (i = 0; i < my; i++) { + wmove(current->wind, i, tmp->x - ul.x + 1); + wclrtoeol(current->wind); + } + } + wnoutrefresh(current->wind); + + memcpy(&lr, tmp, sizeof(pair)); + (void) wresize(current->wind, lr.y - ul.y + 0, lr.x - ul.x + 0); + + getbegyx(current->wind, ul.y, ul.x); + getmaxyx(current->wind, lr.y, lr.x); + lr.y += (ul.y - 1); + lr.x += (ul.x - 1); + outerbox(ul, lr, TRUE); + wnoutrefresh(stdscr); + + wnoutrefresh(current->wind); + move(0, 0); + clrtoeol(); + doupdate(); + } + break; +#endif /* HAVE_WRESIZE */ + + case KEY_UP: + newwin_move(current, -1, 0); + break; + case KEY_DOWN: + newwin_move(current, 1, 0); + break; + case KEY_LEFT: + newwin_move(current, 0, -1); + break; + case KEY_RIGHT: + newwin_move(current, 0, 1); + break; + + case KEY_BACKSPACE: + /* FALLTHROUGH */ + case KEY_DC: + { + int y, x; + getyx(frame_win(current), y, x); + if (--x < 0) { + if (--y < 0) + break; + x = getmaxx(frame_win(current)) - 1; + } + (void) mvwdelch(frame_win(current), y, x); + } + break; + + case '\r': + c = '\n'; + /* FALLTHROUGH */ + + default: + if (current) + waddch(current->wind, (chtype) c); + else + beep(); + break; + } + newwin_report(current); + usescr = frame_win(current); + wrefresh(usescr); + } while + (!isQuit(c = wGetchar(usescr), TRUE) + && (c != ERR)); + + breakout: + while (current != 0) + current = delete_framed(current, FALSE); + + scrollok(stdscr, TRUE); /* reset to driver's default */ +#ifdef NCURSES_MOUSE_VERSION + mousemask(0, (mmask_t *) 0); +#endif + noraw(); + erase(); + endwin(); + return OK; +} + +/**************************************************************************** + * + * Panels tester + * + ****************************************************************************/ + +#if USE_LIBPANEL +static int nap_msec = 1; + +static NCURSES_CONST char *mod[] = +{ + "test ", + "TEST ", + "(**) ", + "*()* ", + "<--> ", + "LAST " +}; + +/*+------------------------------------------------------------------------- + wait_a_while(msec) +--------------------------------------------------------------------------*/ +static void +wait_a_while(int msec GCC_UNUSED) +{ +#if HAVE_NAPMS + if (nap_msec == 1) + wGetchar(stdscr); + else + napms(nap_msec); +#else + if (nap_msec == 1) + wGetchar(stdscr); + else if (msec > 1000) + sleep((unsigned) msec / 1000); + else + sleep(1); +#endif +} /* end of wait_a_while */ + +/*+------------------------------------------------------------------------- + saywhat(text) +--------------------------------------------------------------------------*/ +static void +saywhat(NCURSES_CONST char *text) +{ + wmove(stdscr, LINES - 1, 0); + wclrtoeol(stdscr); + if (text != 0 && *text != '\0') { + waddstr(stdscr, text); + waddstr(stdscr, "; "); + } + waddstr(stdscr, "press any key to continue"); +} /* end of saywhat */ + +/*+------------------------------------------------------------------------- + mkpanel(rows,cols,tly,tlx) - alloc a win and panel and associate them +--------------------------------------------------------------------------*/ +static PANEL * +mkpanel(NCURSES_COLOR_T color, int rows, int cols, int tly, int tlx) +{ + WINDOW *win; + PANEL *pan = 0; + + if ((win = newwin(rows, cols, tly, tlx)) != 0) { + if ((pan = new_panel(win)) == 0) { + delwin(win); + } else if (UseColors) { + NCURSES_COLOR_T fg = (NCURSES_COLOR_T) ((color == COLOR_BLUE) + ? COLOR_WHITE + : COLOR_BLACK); + NCURSES_COLOR_T bg = color; + + init_pair(color, fg, bg); + wbkgdset(win, (attr_t) (COLOR_PAIR(color) | ' ')); + } else { + wbkgdset(win, A_BOLD | ' '); + } + } + return pan; +} /* end of mkpanel */ + +/*+------------------------------------------------------------------------- + rmpanel(pan) +--------------------------------------------------------------------------*/ +static void +rmpanel(PANEL *pan) +{ + WINDOW *win = panel_window(pan); + del_panel(pan); + delwin(win); +} /* end of rmpanel */ + +/*+------------------------------------------------------------------------- + pflush() +--------------------------------------------------------------------------*/ +static void +pflush(void) +{ + update_panels(); + doupdate(); +} /* end of pflush */ + +/*+------------------------------------------------------------------------- + fill_panel(win) +--------------------------------------------------------------------------*/ +static void +init_panel(WINDOW *win) +{ + register int y, x; + + for (y = 0; y < LINES - 1; y++) { + for (x = 0; x < COLS; x++) + wprintw(win, "%d", (y + x) % 10); + } +} + +static void +fill_panel(PANEL *pan) +{ + WINDOW *win = panel_window(pan); + const char *userptr = (const char *) panel_userptr(pan); + int num = (userptr && *userptr) ? userptr[1] : '?'; + int y, x; + + wmove(win, 1, 1); + wprintw(win, "-pan%c-", num); + wclrtoeol(win); + box(win, 0, 0); + for (y = 2; y < getmaxy(win) - 1; y++) { + for (x = 1; x < getmaxx(win) - 1; x++) { + wmove(win, y, x); + waddch(win, UChar(num)); + } + } +} + +#if USE_WIDEC_SUPPORT +static void +init_wide_panel(WINDOW *win) +{ + int digit; + cchar_t temp[10]; + + for (digit = 0; digit < 10; ++digit) + make_fullwidth_digit(&temp[digit], digit); + + do { + int y, x; + getyx(stdscr, y, x); + digit = (y + x / 2) % 10; + } while (wadd_wch(win, &temp[digit]) != ERR); +} + +static void +fill_wide_panel(PANEL *pan) +{ + WINDOW *win = panel_window(pan); + const char *userptr = (const char *) panel_userptr(pan); + int num = (userptr && *userptr) ? userptr[1] : '?'; + int y, x; + + wmove(win, 1, 1); + wprintw(win, "-pan%c-", num); + wclrtoeol(win); + box(win, 0, 0); + for (y = 2; y < getmaxy(win) - 1; y++) { + for (x = 1; x < getmaxx(win) - 1; x++) { + wmove(win, y, x); + waddch(win, UChar(num)); + } + } +} +#endif + +#define MAX_PANELS 5 + +static void +canned_panel(PANEL *px[MAX_PANELS + 1], NCURSES_CONST char *cmd) +{ + int which = cmd[1] - '0'; + + saywhat(cmd); + switch (*cmd) { + case 'h': + hide_panel(px[which]); + break; + case 's': + show_panel(px[which]); + break; + case 't': + top_panel(px[which]); + break; + case 'b': + bottom_panel(px[which]); + break; + case 'd': + rmpanel(px[which]); + break; + } + pflush(); + wait_a_while(nap_msec); +} + +static int +demo_panels(void (*InitPanel) (WINDOW *), void (*FillPanel) (PANEL *)) +{ + int count; + int itmp; + PANEL *px[MAX_PANELS + 1]; + + scrollok(stdscr, FALSE); /* we don't want stdscr to scroll! */ + refresh(); + + InitPanel(stdscr); + for (count = 0; count < 5; count++) { + px[1] = mkpanel(COLOR_RED, + LINES / 2 - 2, + COLS / 8 + 1, + 0, + 0); + set_panel_userptr(px[1], (NCURSES_CONST void *) "p1"); + + px[2] = mkpanel(COLOR_GREEN, + LINES / 2 + 1, + COLS / 7, + LINES / 4, + COLS / 10); + set_panel_userptr(px[2], (NCURSES_CONST void *) "p2"); + + px[3] = mkpanel(COLOR_YELLOW, + LINES / 4, + COLS / 10, + LINES / 2, + COLS / 9); + set_panel_userptr(px[3], (NCURSES_CONST void *) "p3"); + + px[4] = mkpanel(COLOR_BLUE, + LINES / 2 - 2, + COLS / 8, + LINES / 2 - 2, + COLS / 3); + set_panel_userptr(px[4], (NCURSES_CONST void *) "p4"); + + px[5] = mkpanel(COLOR_MAGENTA, + LINES / 2 - 2, + COLS / 8, + LINES / 2, + COLS / 2 - 2); + set_panel_userptr(px[5], (NCURSES_CONST void *) "p5"); + + FillPanel(px[1]); + FillPanel(px[2]); + FillPanel(px[3]); + FillPanel(px[4]); + FillPanel(px[5]); + + hide_panel(px[4]); + hide_panel(px[5]); + pflush(); + saywhat(""); + wait_a_while(nap_msec); + + saywhat("h3 s1 s2 s4 s5"); + move_panel(px[1], 0, 0); + hide_panel(px[3]); + show_panel(px[1]); + show_panel(px[2]); + show_panel(px[4]); + show_panel(px[5]); + pflush(); + wait_a_while(nap_msec); + + canned_panel(px, "s1"); + canned_panel(px, "s2"); + + saywhat("m2"); + move_panel(px[2], LINES / 3 + 1, COLS / 8); + pflush(); + wait_a_while(nap_msec); + + canned_panel(px, "s3"); + + saywhat("m3"); + move_panel(px[3], LINES / 4 + 1, COLS / 15); + pflush(); + wait_a_while(nap_msec); + + canned_panel(px, "b3"); + canned_panel(px, "s4"); + canned_panel(px, "s5"); + canned_panel(px, "t3"); + canned_panel(px, "t1"); + canned_panel(px, "t2"); + canned_panel(px, "t3"); + canned_panel(px, "t4"); + + for (itmp = 0; itmp < 6; itmp++) { + WINDOW *w4 = panel_window(px[4]); + WINDOW *w5 = panel_window(px[5]); + + saywhat("m4"); + wmove(w4, LINES / 8, 1); + waddstr(w4, mod[itmp]); + move_panel(px[4], LINES / 6, itmp * (COLS / 8)); + wmove(w5, LINES / 6, 1); + waddstr(w5, mod[itmp]); + pflush(); + wait_a_while(nap_msec); + + saywhat("m5"); + wmove(w4, LINES / 6, 1); + waddstr(w4, mod[itmp]); + move_panel(px[5], LINES / 3 - 1, (itmp * 10) + 6); + wmove(w5, LINES / 8, 1); + waddstr(w5, mod[itmp]); + pflush(); + wait_a_while(nap_msec); + } + + saywhat("m4"); + move_panel(px[4], LINES / 6, itmp * (COLS / 8)); + pflush(); + wait_a_while(nap_msec); + + canned_panel(px, "t5"); + canned_panel(px, "t2"); + canned_panel(px, "t1"); + canned_panel(px, "d2"); + canned_panel(px, "h3"); + canned_panel(px, "d1"); + canned_panel(px, "d4"); + canned_panel(px, "d5"); + canned_panel(px, "d3"); + + wait_a_while(nap_msec); + if (nap_msec == 1) + break; + nap_msec = 100L; + } + + erase(); + endwin(); + return OK; +} + +#if USE_LIBPANEL +static int +panel_test(bool recur GCC_UNUSED) +{ + return demo_panels(init_panel, fill_panel); +} +#endif + +#if USE_WIDEC_SUPPORT && USE_LIBPANEL +static int +x_panel_test(bool recur GCC_UNUSED) +{ + return demo_panels(init_wide_panel, fill_wide_panel); +} +#endif +#endif /* USE_LIBPANEL */ + +/**************************************************************************** + * + * Pad tester + * + ****************************************************************************/ + +#if HAVE_NEWPAD + +/* The behavior of mvhline, mvvline for negative/zero length is unspecified, + * though we can rely on negative x/y values to stop the macro. + */ +static void +do_h_line(int y, int x, chtype c, int to) +{ + if ((to) > (x)) + MvHLine(y, x, c, (to) - (x)); +} + +static void +do_v_line(int y, int x, chtype c, int to) +{ + if ((to) > (y)) + MvVLine(y, x, c, (to) - (y)); +} + +#define GRIDSIZE 3 + +static bool pending_pan = FALSE; +static bool show_panner_legend = TRUE; + +static int +panner_legend(int line) +{ + static const char *const legend[] = + { + "Use arrow keys (or U,D,L,R) to pan, ESC to quit, ! to shell-out.", + "Use +,- (or j,k) to grow/shrink the panner vertically.", + "Use <,> (or h,l) to grow/shrink the panner horizontally.", + "Number repeats. Toggle legend:? filler:a timer:t scrollmark:s." + }; + int n = ((int) SIZEOF(legend) - (LINES - line)); + if (n >= 0 && n < (int) SIZEOF(legend)) { + if (move(line, 0) != ERR) { + if (show_panner_legend) + printw("%s", legend[n]); + clrtoeol(); + return show_panner_legend; + } + } + return FALSE; +} + +static void +panner_h_cleanup(int from_y, int from_x, int to_x) +{ + if (!panner_legend(from_y)) + do_h_line(from_y, from_x, ' ', to_x); +} + +static void +panner_v_cleanup(int from_y, int from_x, int to_y) +{ + if (!panner_legend(from_y)) + do_v_line(from_y, from_x, ' ', to_y); +} + +static void +fill_pad(WINDOW *panpad, bool pan_lines, bool colored) +{ + int y, x; + unsigned gridcount = 0; + chtype fill = 0; +#ifdef A_COLOR + if (colored) + fill = (chtype) COLOR_PAIR(1); +#endif + + wmove(panpad, 0, 0); + for (y = 0; y < getmaxy(panpad); y++) { + for (x = 0; x < getmaxx(panpad); x++) { + if (y % GRIDSIZE == 0 && x % GRIDSIZE == 0) { + if (y == 0 && x == 0) + waddch(panpad, pan_lines ? ACS_ULCORNER : '+'); + else if (y == 0) + waddch(panpad, pan_lines ? ACS_TTEE : '+'); + else if (y == 0 || x == 0) + waddch(panpad, pan_lines ? ACS_LTEE : '+'); + else + waddch(panpad, (chtype) ((pan_lines ? 'a' : 'A') + + (int) (gridcount++ % 26)) | fill); + } else if (y % GRIDSIZE == 0) + waddch(panpad, pan_lines ? ACS_HLINE : '-'); + else if (x % GRIDSIZE == 0) + waddch(panpad, pan_lines ? ACS_VLINE : '|'); + else + waddch(panpad, ' '); + } + } +} + +static void +panner(WINDOW *pad, + int top_x, int top_y, int porty, int portx, + int (*pgetc) (WINDOW *), + bool colored) +{ +#if HAVE_GETTIMEOFDAY + struct timeval before, after; + bool timing = TRUE; +#endif + bool pan_lines = FALSE; + bool scrollers = TRUE; + int basex = 0; + int basey = 0; + int pxmax, pymax, lowend, highend, c; + + getmaxyx(pad, pymax, pxmax); + scrollok(stdscr, FALSE); /* we don't want stdscr to scroll! */ + + c = KEY_REFRESH; + do { +#ifdef NCURSES_VERSION + /* + * During shell-out, the user may have resized the window. Adjust + * the port size of the pad to accommodate this. Ncurses automatically + * resizes all of the normal windows to fit on the new screen. + */ + if (top_x > COLS) + top_x = COLS; + if (portx > COLS) + portx = COLS; + if (top_y > LINES) + top_y = LINES; + if (porty > LINES) + porty = LINES; +#endif + switch (c) { + case KEY_REFRESH: + erase(); + + /* FALLTHRU */ + case HELP_KEY_1: + if (c == HELP_KEY_1) + show_panner_legend = !show_panner_legend; + panner_legend(LINES - 4); + panner_legend(LINES - 3); + panner_legend(LINES - 2); + panner_legend(LINES - 1); + break; + case 'a': + pan_lines = !pan_lines; + fill_pad(pad, pan_lines, colored); + pending_pan = FALSE; + break; + +#if HAVE_GETTIMEOFDAY + case 't': + timing = !timing; + if (!timing) + panner_legend(LINES - 1); + break; +#endif + case 's': + scrollers = !scrollers; + break; + + /* Move the top-left corner of the pad, keeping the bottom-right + * corner fixed. + */ + case 'h': /* increase-columns: move left edge to left */ + if (top_x <= 0) + beep(); + else { + panner_v_cleanup(top_y, top_x, porty); + top_x--; + } + break; + + case 'j': /* decrease-lines: move top-edge down */ + if (top_y >= porty) + beep(); + else { + panner_h_cleanup(top_y - 1, top_x - (top_x > 0), portx); + top_y++; + } + break; + + case 'k': /* increase-lines: move top-edge up */ + if (top_y <= 0) + beep(); + else { + top_y--; + panner_h_cleanup(top_y, top_x, portx); + } + break; + + case 'l': /* decrease-columns: move left-edge to right */ + if (top_x >= portx) + beep(); + else { + panner_v_cleanup(top_y - (top_y > 0), top_x - 1, porty); + top_x++; + } + break; + + /* Move the bottom-right corner of the pad, keeping the top-left + * corner fixed. + */ + case KEY_IC: /* increase-columns: move right-edge to right */ + if (portx >= pxmax || portx >= COLS) + beep(); + else { + panner_v_cleanup(top_y - (top_y > 0), portx - 1, porty); + ++portx; + } + break; + + case KEY_IL: /* increase-lines: move bottom-edge down */ + if (porty >= pymax || porty >= LINES) + beep(); + else { + panner_h_cleanup(porty - 1, top_x - (top_x > 0), portx); + ++porty; + } + break; + + case KEY_DC: /* decrease-columns: move bottom edge up */ + if (portx <= top_x) + beep(); + else { + portx--; + panner_v_cleanup(top_y - (top_y > 0), portx, porty); + } + break; + + case KEY_DL: /* decrease-lines */ + if (porty <= top_y) + beep(); + else { + porty--; + panner_h_cleanup(porty, top_x - (top_x > 0), portx); + } + break; + + case KEY_LEFT: /* pan leftwards */ + if (basex > 0) + basex--; + else + beep(); + break; + + case KEY_RIGHT: /* pan rightwards */ + if (basex + portx - (pymax > porty) < pxmax) + basex++; + else + beep(); + break; + + case KEY_UP: /* pan upwards */ + if (basey > 0) + basey--; + else + beep(); + break; + + case KEY_DOWN: /* pan downwards */ + if (basey + porty - (pxmax > portx) < pymax) + basey++; + else + beep(); + break; + + case 'H': + case KEY_HOME: + case KEY_FIND: + basey = 0; + break; + + case 'E': + case KEY_END: + case KEY_SELECT: + basey = pymax - porty; + if (basey < 0) + basey = 0; + break; + + default: + beep(); + break; + } + + MvAddCh(top_y - 1, top_x - 1, ACS_ULCORNER); + do_v_line(top_y, top_x - 1, ACS_VLINE, porty); + do_h_line(top_y - 1, top_x, ACS_HLINE, portx); + + if (scrollers && (pxmax > portx - 1)) { + int length = (portx - top_x - 1); + float ratio = ((float) length) / ((float) pxmax); + + lowend = (int) ((float) top_x + ((float) basex * ratio)); + highend = (int) ((float) top_x + ((float) (basex + length) * ratio)); + + do_h_line(porty - 1, top_x, ACS_HLINE, lowend); + if (highend < portx) { + attron(A_REVERSE); + do_h_line(porty - 1, lowend, ' ', highend + 1); + attroff(A_REVERSE); + do_h_line(porty - 1, highend + 1, ACS_HLINE, portx); + } + } else + do_h_line(porty - 1, top_x, ACS_HLINE, portx); + + if (scrollers && (pymax > porty - 1)) { + int length = (porty - top_y - 1); + float ratio = ((float) length) / ((float) pymax); + + lowend = (int) ((float) top_y + ((float) basey * ratio)); + highend = (int) ((float) top_y + ((float) (basey + length) * ratio)); + + do_v_line(top_y, portx - 1, ACS_VLINE, lowend); + if (highend < porty) { + attron(A_REVERSE); + do_v_line(lowend, portx - 1, ' ', highend + 1); + attroff(A_REVERSE); + do_v_line(highend + 1, portx - 1, ACS_VLINE, porty); + } + } else + do_v_line(top_y, portx - 1, ACS_VLINE, porty); + + MvAddCh(top_y - 1, portx - 1, ACS_URCORNER); + MvAddCh(porty - 1, top_x - 1, ACS_LLCORNER); + MvAddCh(porty - 1, portx - 1, ACS_LRCORNER); + + if (!pending_pan) { +#if HAVE_GETTIMEOFDAY + gettimeofday(&before, 0); +#endif + wnoutrefresh(stdscr); + + pnoutrefresh(pad, + basey, basex, + top_y, top_x, + porty - (pxmax > portx) - 1, + portx - (pymax > porty) - 1); + + doupdate(); +#if HAVE_GETTIMEOFDAY +#define TIMEVAL2S(data) ((double) data.tv_sec + ((double) data.tv_usec / 1.0e6)) + if (timing) { + double elapsed; + gettimeofday(&after, 0); + elapsed = (TIMEVAL2S(after) - TIMEVAL2S(before)); + move(LINES - 1, COLS - 12); + printw("Secs: %2.03f", elapsed); + refresh(); + } +#endif + } + + } while + ((c = pgetc(pad)) != KEY_EXIT); + + scrollok(stdscr, TRUE); /* reset to driver's default */ +} + +static int +padgetch(WINDOW *win) +{ + static int count; + static int last; + + if ((pending_pan = (count > 0)) != FALSE) { + count--; + pending_pan = (count != 0); + } else { + for (;;) { + int c; + switch (c = wGetchar(win)) { + case '!': + ShellOut(FALSE); + /* FALLTHRU */ + case CTRL('r'): + endwin(); + refresh(); + c = KEY_REFRESH; + break; + case CTRL('l'): + c = KEY_REFRESH; + break; + case 'U': + c = KEY_UP; + break; + case 'D': + c = KEY_DOWN; + break; + case 'R': + c = KEY_RIGHT; + break; + case 'L': + c = KEY_LEFT; + break; + case '+': + c = KEY_IL; + break; + case '-': + c = KEY_DL; + break; + case '>': + c = KEY_IC; + break; + case '<': + c = KEY_DC; + break; + case ERR: /* FALLTHRU */ + case case_QUIT: + count = 0; + c = KEY_EXIT; + break; + default: + if (c >= '0' && c <= '9') { + count = count * 10 + (c - '0'); + continue; + } + break; + } + last = c; + break; + } + if (count > 0) + count--; + } + return (last); +} + +#define PAD_HIGH 200 +#define PAD_WIDE 200 + +static int +pad_test(bool recur GCC_UNUSED) +/* Demonstrate pads. */ +{ + WINDOW *panpad = newpad(PAD_HIGH, PAD_WIDE); + + if (panpad == 0) { + Cannot("cannot create requested pad"); + return ERR; + } +#ifdef A_COLOR + if (UseColors) { + init_pair(1, COLOR_BLACK, COLOR_GREEN); + init_pair(2, COLOR_CYAN, COLOR_BLUE); + wbkgd(panpad, (chtype) (COLOR_PAIR(2) | ' ')); + } +#endif + fill_pad(panpad, FALSE, TRUE); + + panner_legend(LINES - 4); + panner_legend(LINES - 3); + panner_legend(LINES - 2); + panner_legend(LINES - 1); + + keypad(panpad, TRUE); + + /* Make the pad (initially) narrow enough that a trace file won't wrap. + * We'll still be able to widen it during a test, since that's required + * for testing boundaries. + */ + panner(panpad, 2, 2, LINES - 5, COLS - 15, padgetch, TRUE); + + delwin(panpad); + endwin(); + erase(); + return OK; +} +#endif /* HAVE_NEWPAD */ + +/**************************************************************************** + * + * Tests from John Burnell's PDCurses tester + * + ****************************************************************************/ + +static void +Continue(WINDOW *win) +{ + noecho(); + wmove(win, 10, 1); + MvWAddStr(win, 10, 1, " Press any key to continue"); + wrefresh(win); + wGetchar(win); +} + +static int +flushinp_test(bool recur GCC_UNUSED) +/* Input test, adapted from John Burnell's PDCurses tester */ +{ + WINDOW *win = stdscr; + int w, h, bx, by, sw, sh, i; + + WINDOW *subWin; + wclear(win); + + getmaxyx(win, h, w); + getbegyx(win, by, bx); + sw = w / 3; + sh = h / 3; + if ((subWin = subwin(win, sh, sw, by + h - sh - 2, bx + w - sw - 2)) == 0) + return ERR; + +#ifdef A_COLOR + if (UseColors) { + init_pair(2, COLOR_CYAN, COLOR_BLUE); + wbkgd(subWin, (chtype) (COLOR_PAIR(2) | ' ')); + } +#endif + (void) wattrset(subWin, A_BOLD); + box(subWin, ACS_VLINE, ACS_HLINE); + MvWAddStr(subWin, 2, 1, "This is a subwindow"); + wrefresh(win); + + /* + * This used to set 'nocbreak()'. However, Alexander Lukyanov says that + * it only happened to "work" on SVr4 because that implementation does not + * emulate nocbreak+noecho mode, whereas ncurses does. To get the desired + * test behavior, we're using 'cbreak()', which will allow a single + * character to return without needing a newline. - T.Dickey 1997/10/11. + */ + cbreak(); + MvWAddStr(win, 0, 1, "This is a test of the flushinp() call."); + + MvWAddStr(win, 2, 1, "Type random keys for 5 seconds."); + MvWAddStr(win, 3, 1, + "These should be discarded (not echoed) after the subwindow goes away."); + wrefresh(win); + + for (i = 0; i < 5; i++) { + MvWPrintw(subWin, 1, 1, "Time = %d", i); + wrefresh(subWin); + napms(1000); + flushinp(); + } + + delwin(subWin); + werase(win); + flash(); + wrefresh(win); + napms(1000); + + MvWAddStr(win, 2, 1, + "If you were still typing when the window timer expired,"); + MvWAddStr(win, 3, 1, + "or else you typed nothing at all while it was running,"); + MvWAddStr(win, 4, 1, + "test was invalid. You'll see garbage or nothing at all. "); + MvWAddStr(win, 6, 1, "Press a key"); + wmove(win, 9, 10); + wrefresh(win); + echo(); + wGetchar(win); + flushinp(); + MvWAddStr(win, 12, 0, + "If you see any key other than what you typed, flushinp() is broken."); + Continue(win); + + wmove(win, 9, 10); + wdelch(win); + wrefresh(win); + wmove(win, 12, 0); + clrtoeol(); + waddstr(win, + "What you typed should now have been deleted; if not, wdelch() failed."); + Continue(win); + + cbreak(); + return OK; +} + +/**************************************************************************** + * + * Menu test + * + ****************************************************************************/ + +#if USE_LIBMENU + +#define MENU_Y 8 +#define MENU_X 8 + +static int +menu_virtualize(int c) +{ + if (c == '\n' || c == KEY_EXIT) + return (MAX_COMMAND + 1); + else if (c == 'u') + return (REQ_SCR_ULINE); + else if (c == 'd') + return (REQ_SCR_DLINE); + else if (c == 'b' || c == KEY_NPAGE) + return (REQ_SCR_UPAGE); + else if (c == 'f' || c == KEY_PPAGE) + return (REQ_SCR_DPAGE); + else if (c == 'n' || c == KEY_DOWN) + return (REQ_NEXT_ITEM); + else if (c == 'p' || c == KEY_UP) + return (REQ_PREV_ITEM); + else if (c == ' ') + return (REQ_TOGGLE_ITEM); + else { + if (c != KEY_MOUSE) + beep(); + return (c); + } +} + +static CONST_MENUS char *animals[] = +{ + "Lions", + "Tigers", + "Bears", + "(Oh my!)", + "Newts", + "Platypi", + "Lemurs", + "(Oh really?!)", + "Leopards", + "Panthers", + "Pumas", + "Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs", + "Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs, Lions, Tigers, Bears, (Oh my!), Newts, Platypi, Lemurs", + (char *) 0 +}; + +static int +menu_test(bool recur GCC_UNUSED) +{ + MENU *m; + ITEM *items[SIZEOF(animals)]; + ITEM **ip = items; + CONST_MENUS char **ap; + int mrows, mcols, c; + WINDOW *menuwin; + +#ifdef NCURSES_MOUSE_VERSION + mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); +#endif + MvAddStr(0, 0, "This is the menu test:"); + MvAddStr(2, 0, " Use up and down arrow to move the select bar."); + MvAddStr(3, 0, " 'n' and 'p' act like arrows."); + MvAddStr(4, 0, + " 'b' and 'f' scroll up/down (page), 'u' and 'd' (line)."); + MvAddStr(5, 0, " Press return to exit."); + refresh(); + + for (ap = animals; *ap; ap++) { + if ((*ip = new_item(*ap, "")) != 0) + ++ip; + } + *ip = (ITEM *) 0; + + m = new_menu(items); + + set_menu_format(m, (SIZEOF(animals) + 1) / 2, 1); + scale_menu(m, &mrows, &mcols); + + menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X); + set_menu_win(m, menuwin); + keypad(menuwin, TRUE); + box(menuwin, 0, 0); + + set_menu_sub(m, derwin(menuwin, mrows, mcols, 1, 1)); + + post_menu(m); + + while ((c = menu_driver(m, menu_virtualize(wGetchar(menuwin)))) != E_UNKNOWN_COMMAND) { + if (c == E_NOT_POSTED) + break; + if (c == E_REQUEST_DENIED) + beep(); + continue; + } + + MvPrintw(LINES - 2, 0, + "You chose: %s\n", item_name(current_item(m))); + (void) addstr("Press any key to continue..."); + wGetchar(stdscr); + + unpost_menu(m); + delwin(menuwin); + + free_menu(m); + for (ip = items; *ip; ip++) + free_item(*ip); +#ifdef NCURSES_MOUSE_VERSION + mousemask(0, (mmask_t *) 0); +#endif + return OK; +} + +#ifdef TRACE +#define T_TBL(name) { #name, name } +static struct { + const char *name; + unsigned mask; +} t_tbl[] = { + + T_TBL(TRACE_DISABLE), + T_TBL(TRACE_TIMES), + T_TBL(TRACE_TPUTS), + T_TBL(TRACE_UPDATE), + T_TBL(TRACE_MOVE), + T_TBL(TRACE_CHARPUT), + T_TBL(TRACE_ORDINARY), + T_TBL(TRACE_CALLS), + T_TBL(TRACE_VIRTPUT), + T_TBL(TRACE_IEVENT), + T_TBL(TRACE_BITS), + T_TBL(TRACE_ICALLS), + T_TBL(TRACE_CCALLS), + T_TBL(TRACE_DATABASE), + T_TBL(TRACE_ATTRS), + T_TBL(TRACE_MAXIMUM), + { + (char *) 0, 0 + } +}; + +static char * +tracetrace(unsigned tlevel) +{ + static char *buf; + static size_t need = 12; + int n; + + if (buf == 0) { + for (n = 0; t_tbl[n].name != 0; n++) + need += strlen(t_tbl[n].name) + 2; + buf = typeMalloc(char, need); + if (!buf) + failed("tracetrace"); + } + _nc_SPRINTF(buf, _nc_SLIMIT(need) "0x%02x = {", tlevel); + if (tlevel == 0) { + _nc_STRCAT(buf, t_tbl[0].name ? t_tbl[0].name : "", need); + _nc_STRCAT(buf, ", ", need); + } else { + for (n = 1; t_tbl[n].name != 0; n++) + if ((tlevel & t_tbl[n].mask) == t_tbl[n].mask) { + _nc_STRCAT(buf, t_tbl[n].name, need); + _nc_STRCAT(buf, ", ", need); + } + } + if (buf[strlen(buf) - 2] == ',') + buf[strlen(buf) - 2] = '\0'; + _nc_STRCAT(buf, "}", need); + return buf; +} + +/* fake a dynamically reconfigurable menu using the 0th entry to deselect + * the others + */ +static int +run_trace_menu(MENU * m) +{ + ITEM **items; + ITEM *i, **p; + + for (;;) { + bool changed = FALSE; + switch (menu_driver(m, menu_virtualize(wGetchar(menu_win(m))))) { + case E_UNKNOWN_COMMAND: + return FALSE; + default: + items = menu_items(m); + i = current_item(m); + if (i == items[0]) { + if (item_value(i)) { + for (p = items + 1; *p != 0; p++) + if (item_value(*p)) { + set_item_value(*p, FALSE); + changed = TRUE; + } + } + } else { + for (p = items + 1; *p != 0; p++) + if (item_value(*p)) { + set_item_value(items[0], FALSE); + changed = TRUE; + break; + } + } + if (!changed) + return TRUE; + } + } +} + +static int +trace_set(bool recur GCC_UNUSED) +/* interactively set the trace level */ +{ + MENU *m; + ITEM *items[SIZEOF(t_tbl)]; + ITEM **ip = items; + int mrows, mcols; + unsigned newtrace; + int n; + WINDOW *menuwin; + + MvAddStr(0, 0, "Interactively set trace level:"); + MvAddStr(2, 0, " Press space bar to toggle a selection."); + MvAddStr(3, 0, " Use up and down arrow to move the select bar."); + MvAddStr(4, 0, " Press return to set the trace level."); + MvPrintw(6, 0, "(Current trace level is %s)", tracetrace(_nc_tracing)); + + refresh(); + + for (n = 0; t_tbl[n].name != 0; n++) { + if ((*ip = new_item(t_tbl[n].name, "")) != 0) { + ++ip; + } + } + *ip = (ITEM *) 0; + + m = new_menu(items); + + set_menu_format(m, 0, 2); + scale_menu(m, &mrows, &mcols); + + menu_opts_off(m, O_ONEVALUE); + menuwin = newwin(mrows + 2, mcols + 2, MENU_Y, MENU_X); + set_menu_win(m, menuwin); + keypad(menuwin, TRUE); + box(menuwin, 0, 0); + + set_menu_sub(m, derwin(menuwin, mrows, mcols, 1, 1)); + + post_menu(m); + + for (ip = menu_items(m); *ip; ip++) { + unsigned mask = t_tbl[item_index(*ip)].mask; + if (mask == 0) + set_item_value(*ip, _nc_tracing == 0); + else if ((mask & _nc_tracing) == mask) + set_item_value(*ip, TRUE); + } + + while (run_trace_menu(m)) + continue; + + newtrace = 0; + for (ip = menu_items(m); *ip; ip++) + if (item_value(*ip)) + newtrace |= t_tbl[item_index(*ip)].mask; + curses_trace(newtrace); + Trace(("trace level interactively set to %s", tracetrace(_nc_tracing))); + + MvPrintw(LINES - 2, 0, + "Trace level is %s\n", tracetrace(_nc_tracing)); + (void) addstr("Press any key to continue..."); + wGetchar(stdscr); + + unpost_menu(m); + delwin(menuwin); + + free_menu(m); + for (ip = items; *ip; ip++) + free_item(*ip); + + return OK; +} +#endif /* TRACE */ +#endif /* USE_LIBMENU */ + +/**************************************************************************** + * + * Forms test + * + ****************************************************************************/ +#if USE_LIBFORM +static FIELD * +make_label(int frow, int fcol, NCURSES_CONST char *label) +{ + FIELD *f = new_field(1, (int) strlen(label), frow, fcol, 0, 0); + + if (f) { + set_field_buffer(f, 0, label); + set_field_opts(f, (int) ((unsigned) field_opts(f) & ~O_ACTIVE)); + } + return (f); +} + +static FIELD * +make_field(int frow, int fcol, int rows, int cols, bool secure) +{ + FIELD *f = new_field(rows, cols, frow, fcol, 0, secure ? 1 : 0); + + if (f) { + set_field_back(f, A_UNDERLINE); + set_field_userptr(f, (void *) 0); + } + return (f); +} + +static void +display_form(FORM *f) +{ + WINDOW *w; + int rows, cols; + + scale_form(f, &rows, &cols); + + if ((w = newwin(rows + 2, cols + 4, 0, 0)) != (WINDOW *) 0) { + set_form_win(f, w); + set_form_sub(f, derwin(w, rows, cols, 1, 2)); + box(w, 0, 0); + keypad(w, TRUE); + if (post_form(f) != E_OK) + wrefresh(w); + } +} + +static void +erase_form(FORM *f) +{ + WINDOW *w = form_win(f); + WINDOW *s = form_sub(f); + + unpost_form(f); + werase(w); + wrefresh(w); + delwin(s); + delwin(w); +} + +static int +edit_secure(FIELD *me, int c) +{ + int rows, cols, frow, fcol, nrow, nbuf; + + if (field_info(me, &rows, &cols, &frow, &fcol, &nrow, &nbuf) == E_OK + && nbuf > 0) { + char *source = field_buffer(me, 1); + size_t have = (source ? strlen(source) : 0) + 1; + size_t need = 80 + have; + char *temp = malloc(need); + + if (temp != 0) { + size_t len; + _nc_STRNCPY(temp, source ? source : "", have + 1); + len = (size_t) (char *) field_userptr(me); + if (c <= KEY_MAX) { + if (isgraph(c) && (len + 1) < sizeof(temp)) { + temp[len++] = (char) c; + temp[len] = 0; + set_field_buffer(me, 1, temp); + c = '*'; + } else { + c = 0; + } + } else { + switch (c) { + case REQ_BEG_FIELD: + case REQ_CLR_EOF: + case REQ_CLR_EOL: + case REQ_DEL_LINE: + case REQ_DEL_WORD: + case REQ_DOWN_CHAR: + case REQ_END_FIELD: + case REQ_INS_CHAR: + case REQ_INS_LINE: + case REQ_LEFT_CHAR: + case REQ_NEW_LINE: + case REQ_NEXT_WORD: + case REQ_PREV_WORD: + case REQ_RIGHT_CHAR: + case REQ_UP_CHAR: + c = 0; /* we don't want to do inline editing */ + break; + case REQ_CLR_FIELD: + if (len) { + temp[0] = 0; + set_field_buffer(me, 1, temp); + } + break; + case REQ_DEL_CHAR: + case REQ_DEL_PREV: + if (len) { + temp[--len] = 0; + set_field_buffer(me, 1, temp); + } + break; + } + } + set_field_userptr(me, (void *) len); + free(temp); + } + } + return c; +} + +static int +form_virtualize(FORM *f, WINDOW *w) +{ + /* *INDENT-OFF* */ + static const struct { + int code; + int result; + } lookup[] = { + { CTRL('A'), REQ_NEXT_CHOICE }, + { CTRL('B'), REQ_PREV_WORD }, + { CTRL('C'), REQ_CLR_EOL }, + { CTRL('D'), REQ_DOWN_FIELD }, + { CTRL('E'), REQ_END_FIELD }, + { CTRL('F'), REQ_NEXT_PAGE }, + { CTRL('G'), REQ_DEL_WORD }, + { CTRL('H'), REQ_DEL_PREV }, + { CTRL('I'), REQ_INS_CHAR }, + { CTRL('K'), REQ_CLR_EOF }, + { CTRL('L'), REQ_LEFT_FIELD }, + { CTRL('M'), REQ_NEW_LINE }, + { CTRL('N'), REQ_NEXT_FIELD }, + { CTRL('O'), REQ_INS_LINE }, + { CTRL('P'), REQ_PREV_FIELD }, + { CTRL('R'), REQ_RIGHT_FIELD }, + { CTRL('S'), REQ_BEG_FIELD }, + { CTRL('U'), REQ_UP_FIELD }, + { CTRL('V'), REQ_DEL_CHAR }, + { CTRL('W'), REQ_NEXT_WORD }, + { CTRL('X'), REQ_CLR_FIELD }, + { CTRL('Y'), REQ_DEL_LINE }, + { CTRL('Z'), REQ_PREV_CHOICE }, + { ESCAPE, MAX_FORM_COMMAND + 1 }, + { KEY_BACKSPACE, REQ_DEL_PREV }, + { KEY_DOWN, REQ_DOWN_CHAR }, + { KEY_END, REQ_LAST_FIELD }, + { KEY_HOME, REQ_FIRST_FIELD }, + { KEY_LEFT, REQ_LEFT_CHAR }, + { KEY_LL, REQ_LAST_FIELD }, + { KEY_NEXT, REQ_NEXT_FIELD }, + { KEY_NPAGE, REQ_NEXT_PAGE }, + { KEY_PPAGE, REQ_PREV_PAGE }, + { KEY_PREVIOUS, REQ_PREV_FIELD }, + { KEY_RIGHT, REQ_RIGHT_CHAR }, + { KEY_UP, REQ_UP_CHAR }, + { QUIT, MAX_FORM_COMMAND + 1 } + }; + /* *INDENT-ON* */ + + static int mode = REQ_INS_MODE; + int c = wGetchar(w); + FIELD *me = current_field(f); + bool current = TRUE; + + if (c == CTRL(']')) { + if (mode == REQ_INS_MODE) { + mode = REQ_OVL_MODE; + } else { + mode = REQ_INS_MODE; + } + c = mode; + } else { + unsigned n; + for (n = 0; n < SIZEOF(lookup); n++) { + if (lookup[n].code == c) { + c = lookup[n].result; + break; + } + } + } + MvPrintw(0, COLS - 6, "(%s)", mode == REQ_INS_MODE ? "INS" : "OVL"); + + /* + * Force the field that the user is typing into to be in reverse video, + * while the other fields are shown underlined. + */ + switch (c) { + case REQ_BEG_FIELD: + case REQ_CLR_EOF: + case REQ_CLR_EOL: + case REQ_CLR_FIELD: + case REQ_DEL_CHAR: + case REQ_DEL_LINE: + case REQ_DEL_PREV: + case REQ_DEL_WORD: + case REQ_END_FIELD: + case REQ_INS_CHAR: + case REQ_INS_LINE: + case REQ_LEFT_CHAR: + case REQ_LEFT_FIELD: + case REQ_NEXT_WORD: + case REQ_RIGHT_CHAR: + current = TRUE; + break; + default: + current = (c < KEY_MAX); + break; + } + if (current) { + c = edit_secure(me, c); + set_field_back(me, A_REVERSE); + } else { + c = edit_secure(me, c); + set_field_back(me, A_UNDERLINE); + } + return c; +} + +static int +my_form_driver(FORM *form, int c) +{ + if (c == (MAX_FORM_COMMAND + 1) + && form_driver(form, REQ_VALIDATION) == E_OK) + return (TRUE); + else { + beep(); + return (FALSE); + } +} + +#ifdef NCURSES_VERSION +#define FIELDCHECK_CB(func) bool func(FIELD * fld, const void * data GCC_UNUSED) +#define CHAR_CHECK_CB(func) bool func(int ch, const void *data GCC_UNUSED) +#else +#define FIELDCHECK_CB(func) int func(FIELD * fld, char * data GCC_UNUSED) +#define CHAR_CHECK_CB(func) int func(int ch, char *data GCC_UNUSED) +#endif + +/* + * Allow a middle initial, optionally with a '.' to end it. + */ +static +FIELDCHECK_CB(mi_field_check) +{ + char *s = field_buffer(fld, 0); + int state = 0; + int n; + + for (n = 0; s[n] != '\0'; ++n) { + switch (state) { + case 0: + if (s[n] == '.') { + if (n != 1) + return FALSE; + state = 2; + } else if (isspace(UChar(s[n]))) { + state = 2; + } + break; + case 2: + if (!isspace(UChar(s[n]))) + return FALSE; + break; + } + } + + /* force the form to display a leading capital */ + if (islower(UChar(s[0]))) { + s[0] = (char) toupper(UChar(s[0])); + set_field_buffer(fld, 0, s); + } + return TRUE; +} + +static +CHAR_CHECK_CB(mi_char_check) +{ + return ((isalpha(ch) || ch == '.') ? TRUE : FALSE); +} + +/* + * Passwords should be at least 6 characters. + */ +static +FIELDCHECK_CB(pw_field_check) +{ + char *s = field_buffer(fld, 0); + int n; + + for (n = 0; s[n] != '\0'; ++n) { + if (isspace(UChar(s[n]))) { + if (n < 6) + return FALSE; + } + } + return TRUE; +} + +static +CHAR_CHECK_CB(pw_char_check) +{ + return (isgraph(ch) ? TRUE : FALSE); +} + +static int +form_test(bool recur GCC_UNUSED) +{ + FORM *form; + FIELD *f[12], *secure; + FIELDTYPE *fty_middle = new_fieldtype(mi_field_check, mi_char_check); + FIELDTYPE *fty_passwd = new_fieldtype(pw_field_check, pw_char_check); + int c; + unsigned n = 0; + +#ifdef NCURSES_MOUSE_VERSION + mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); +#endif + + move(18, 0); + addstr("Defined edit/traversal keys: ^Q/ESC- exit form\n"); + addstr("^N -- go to next field ^P -- go to previous field\n"); + addstr("Home -- go to first field End -- go to last field\n"); + addstr("^L -- go to field to left ^R -- go to field to right\n"); + addstr("^U -- move upward to field ^D -- move downward to field\n"); + addstr("^W -- go to next word ^B -- go to previous word\n"); + addstr("^S -- go to start of field ^E -- go to end of field\n"); + addstr("^H -- delete previous char ^Y -- delete line\n"); + addstr("^G -- delete current word ^C -- clear to end of line\n"); + addstr("^K -- clear to end of field ^X -- clear field\n"); + addstr("Arrow keys move within a field as you would expect. ^] toggles overlay mode."); + + MvAddStr(4, 57, "Forms Entry Test"); + + refresh(); + + /* describe the form */ + memset(f, 0, sizeof(f)); + f[n++] = make_label(0, 15, "Sample Form"); + + f[n++] = make_label(2, 0, "Last Name"); + f[n++] = make_field(3, 0, 1, 18, FALSE); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + + f[n++] = make_label(2, 20, "First Name"); + f[n++] = make_field(3, 20, 1, 12, FALSE); + set_field_type(f[n - 1], TYPE_ALPHA, 1); + + f[n++] = make_label(2, 34, "Middle Name"); + f[n++] = make_field(3, 34, 1, 12, FALSE); + set_field_type(f[n - 1], fty_middle); + + f[n++] = make_label(5, 0, "Comments"); + f[n++] = make_field(6, 0, 4, 46, FALSE); + + f[n++] = make_label(5, 20, "Password:"); + secure = + f[n++] = make_field(5, 30, 1, 9, TRUE); + set_field_type(f[n - 1], fty_passwd); + f[n] = (FIELD *) 0; + + if ((form = new_form(f)) != 0) { + WINDOW *w; + int finished = 0; + + display_form(form); + + w = form_win(form); + raw(); + nonl(); /* lets us read ^M's */ + while (!finished) { + switch (form_driver(form, c = form_virtualize(form, w))) { + case E_OK: + MvAddStr(5, 57, field_buffer(secure, 1)); + clrtoeol(); + refresh(); + break; + case E_UNKNOWN_COMMAND: + finished = my_form_driver(form, c); + break; + default: + beep(); + break; + } + } + + erase_form(form); + + free_form(form); + } + for (c = 0; f[c] != 0; c++) + free_field(f[c]); + free_fieldtype(fty_middle); + free_fieldtype(fty_passwd); + noraw(); + nl(); + +#ifdef NCURSES_MOUSE_VERSION + mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); +#endif + return OK; +} +#endif /* USE_LIBFORM */ + +/**************************************************************************** + * + * Overlap test + * + ****************************************************************************/ + +#if HAVE_COPYWIN /* ...and overlay, overwrite */ + +static const int overlap_HEAD = 1; +static const int overlap_FOOT = 6; + +static WINDOW * +make_overlap(int n) +{ + WINDOW *result; + int y, x; + + getmaxyx(stdscr, y, x); + if (y < 23 || x < 80) { + Cannot("The screen is too small for this test"); + result = 0; + } else { + int ymax = y - (overlap_HEAD + overlap_FOOT); + int high = ymax / 5; /* equal-sized parts for cross */ + int xmax = x - 2; /* margin */ + int wide = (xmax / 5) & ~1; + int lmar, tmar; + + if (high > 8) + high = 8; + + if (wide > 8) + wide = 8; + + tmar = (ymax - (5 * high)) / 2 + overlap_HEAD; + lmar = (xmax - (5 * wide)) / 2; + + if (n == 0) { + result = newwin(3 * high, 3 * wide, tmar, lmar); + } else { + result = newwin(3 * high, 3 * wide, tmar + 2 * high, lmar + 2 * wide); + } + } + return result; +} + +static void +clear_overlap(void) +{ + int row; + + for (row = overlap_HEAD; row < LINES - overlap_FOOT; ++row) { + move(row, 0); + clrtoeol(); + } +} + +static int +move_overlap(int shift, WINDOW *win1) +{ + int ymax = getmaxy(stdscr) - (overlap_HEAD + overlap_FOOT); + int high = ymax / 5; /* equal-sized parts for cross */ + int tmar; + int xmax1 = getmaxx(win1) + 1; + int lmar1 = (COLS - (5 * (xmax1) / 3)) / 2; + int rc = ERR; + + if (high > 8) + high = 8; + tmar = (ymax - (5 * high)) / 2 + overlap_HEAD; + + rc = mvwin(win1, tmar, lmar1 + shift); + return rc; +} + +static void +fillwin(WINDOW *win, char ch) +{ + int y, x; + int y1, x1; + + getmaxyx(win, y1, x1); + for (y = 0; y < y1; y++) { + wmove(win, y, 0); + for (x = 0; x < x1; x++) + waddch(win, UChar(ch)); + } +} + +#define InCross(x,y, x1,y1) \ + (((x > (x1 - 1) / 3) && (x <= (2 * (x1 - 1)) / 3)) \ + || (((y > (y1 - 1) / 3) && (y <= (2 * (y1 - 1)) / 3)))) + +static void +crosswin(WINDOW *win, char ch) +{ + int y, x; + int y1, x1; + int xw = 1; + + getmaxyx(win, y1, x1); + for (y = 0; y < y1; y++) { + for (x = 0; x < x1; x += xw) { + if (InCross(x, y, x1, y1)) { + wmove(win, y, x); + waddch(win, UChar(ch)); + } + } + } +} + +/* + * Match "crosswin()", but using line-drawing characters. This could be done + * a little simpler using box(), but the reason for this example is to test + * hline/vline and addch with line-drawing vs the copy/overlay functions. + */ +static void +crossbox(WINDOW *win) +{ + int y1, x1; + int ymax, xmax; + + getmaxyx(win, y1, x1); + + ymax = (y1 + 1); + xmax = (x1 + 1); + + mvwhline(win, 0, (xmax / 3), ACS_HLINE, (xmax / 3)); + mvwhline(win, ymax / 3, 0, ACS_HLINE, xmax); + mvwhline(win, ((2 * ymax) / 3) - 1, 0, ACS_HLINE, xmax); + mvwhline(win, y1 - 1, (xmax / 3), ACS_HLINE, (xmax / 3)); + + mvwvline(win, (ymax / 3), 0, ACS_VLINE, (ymax / 3)); + mvwvline(win, 0, xmax / 3, ACS_VLINE, ymax); + mvwvline(win, 0, ((2 * xmax) / 3) - 1, ACS_VLINE, ymax); + mvwvline(win, (ymax / 3), x1 - 1, ACS_VLINE, (ymax / 3)); + + mvwaddch(win, 0, (xmax / 3), ACS_ULCORNER); + mvwaddch(win, 0, ((2 * xmax) / 3) - 1, ACS_URCORNER); + mvwaddch(win, y1 - 1, (xmax / 3), ACS_LLCORNER); + mvwaddch(win, y1 - 1, ((2 * xmax) / 3) - 1, ACS_LRCORNER); + + mvwaddch(win, (ymax / 3), 0, ACS_ULCORNER); + mvwaddch(win, ((2 * ymax) / 3) - 1, 0, ACS_LLCORNER); + mvwaddch(win, (ymax / 3), x1 - 1, ACS_URCORNER); + mvwaddch(win, ((2 * ymax) / 3) - 1, x1 - 1, ACS_LRCORNER); + + mvwaddch(win, (ymax / 3), (xmax / 3), ACS_PLUS); + mvwaddch(win, (ymax / 3), ((2 * xmax) / 3) - 1, ACS_PLUS); + mvwaddch(win, ((2 * ymax) / 3) - 1, ((2 * xmax) / 3) - 1, ACS_PLUS); + mvwaddch(win, ((2 * ymax) / 3) - 1, (xmax / 3), ACS_PLUS); +} + +typedef enum { + otBASE_refresh = 0 + ,otBASE_fill + ,otBASE_draw + ,otBASE_clear + ,otBASE_copy +} otBASE; + +#define OVERLAP_FLAVORS 6 + +typedef enum { + otFILL_normal = 0 + ,otFILL_bold + ,otFILL_color + ,otFILL_bright +} otFILL; + +#define LimitFILL() UseColors ? 4 : 2 + +typedef enum { + otDRAW_text_cross = 0 + ,otDRAW_line_box + ,otDRAW_line_cross + ,otDRAW_set_bg + ,otDRAW_reset_bg +} otDRAW; + +#define LimitDRAW() UseColors ? 5 : 3 + +typedef enum { + otCOPY_overwrite = 0 + ,otCOPY_merge + ,otCOPY_force + ,otCOPY_overlay +} otCOPY; + +#define LimitCOPY() 4 + +static void +overlap_helpitem(int state, int item, char *message) +{ + int row = (item / 2); + int col = ((item % 2) ? COLS / 2 : 0); + + move(LINES - 6 + row, col); + printw("%c%c = %s", state == row ? '>' : ' ', 'a' + item, message); + clrtoeol(); +} + +static void +overlap_test_1_attr(WINDOW *win, int flavor, int col) +{ + NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (1 + (flavor * 2) + col); + + switch ((otFILL) flavor) { + case otFILL_normal: + (void) wattrset(win, A_NORMAL); + break; + case otFILL_bold: + (void) wattrset(win, A_BOLD); + break; + case otFILL_color: + init_pair(cpair, COLOR_BLUE, COLOR_WHITE); + (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_NORMAL)); + break; + case otFILL_bright: + init_pair(cpair, COLOR_WHITE, COLOR_BLUE); + (void) wattrset(win, AttrArg(COLOR_PAIR(cpair), A_BOLD)); + break; + } +} + +static void +overlap_test_2_attr(WINDOW *win, int flavor, int col) +{ + NCURSES_PAIRS_T cpair = (NCURSES_PAIRS_T) (9 + (flavor * 2) + col); + + switch ((otDRAW) flavor) { + case otDRAW_text_cross: + /* no effect */ + break; + case otDRAW_line_box: + /* no effect */ + break; + case otDRAW_line_cross: + /* no effect */ + break; + case otDRAW_set_bg: + init_pair(cpair, COLOR_RED, COLOR_GREEN); + wbkgdset(win, colored_chtype(' ', A_BLINK, cpair)); + break; + case otDRAW_reset_bg: + wbkgdset(win, ' ' | A_NORMAL); + break; + } +} + +static int +overlap_help(int state, int flavors[OVERLAP_FLAVORS]) +{ + int item; + int limit[OVERLAP_FLAVORS]; + char msg[80]; + + if (state < 0) + state += OVERLAP_FLAVORS; + state = state % OVERLAP_FLAVORS; + assert(state >= 0 && state < OVERLAP_FLAVORS); + + for (item = 0; item < (2 * OVERLAP_FLAVORS); ++item) { + int row = item / 2; + int col = item % 2; + const char *ths = col ? "B" : "A"; + const char *tht = col ? "A" : "B"; + + switch ((otBASE) row) { + case otBASE_refresh: + limit[row] = 1; + flavors[row] = 0; + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "refresh %s, then %s, then doupdate.", ths, tht); + break; + case otBASE_fill: + limit[row] = LimitFILL(); + flavors[row] %= limit[row]; + overlap_test_1_attr(stdscr, flavors[row], col); + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "fill window %s with letter %s.", ths, ths); + break; + case otBASE_draw: + limit[row] = LimitDRAW(); + flavors[row] %= limit[row]; + switch ((otDRAW) flavors[row]) { + case otDRAW_text_cross: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "cross text-pattern in window %s.", ths); + break; + case otDRAW_line_box: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "draw line-box in window %s.", ths); + break; + case otDRAW_line_cross: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "draw line-cross in window %s.", ths); + break; + case otDRAW_set_bg: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "set background of window %s.", ths); + break; + case otDRAW_reset_bg: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "reset background of window %s.", ths); + break; + } + break; + case otBASE_clear: + limit[row] = 1; + flavors[row] = 0; + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "clear window %s.", ths); + break; + case otBASE_copy: + limit[row] = LimitCOPY(); + flavors[row] %= limit[row]; + switch ((otCOPY) flavors[row]) { + case otCOPY_overwrite: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "overwrite %s onto %s.", ths, tht); + break; + case otCOPY_merge: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "copywin(FALSE) %s onto %s.", ths, tht); + break; + case otCOPY_force: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "copywin(TRUE) %s onto %s.", ths, tht); + break; + case otCOPY_overlay: + _nc_SPRINTF(msg, _nc_SLIMIT(sizeof(msg)) + "overlay %s onto %s.", ths, tht); + break; + } + break; + } + overlap_helpitem(state, item, msg); + (void) wattrset(stdscr, A_NORMAL); + wbkgdset(stdscr, ' ' | A_NORMAL); + } + move(LINES - 1, 0); + printw("^Q/ESC = terminate test. </> shift. Up/down/space select (row %d", + state + 1); + if (limit[state] > 1) + printw(" test %d:%d", 1 + flavors[state], limit[state]); + printw(")."); + clrtoeol(); + + return state; +} + +static void +overlap_test_0(WINDOW *a, WINDOW *b) +{ + touchwin(a); + touchwin(b); + wnoutrefresh(a); + wnoutrefresh(b); + doupdate(); +} + +static void +overlap_test_1(int flavor, int col, WINDOW *a, char fill) +{ + overlap_test_1_attr(a, flavor, col); + fillwin(a, fill); + (void) wattrset(a, A_NORMAL); +} + +static void +overlap_test_2(int flavor, int col, WINDOW *a, char fill) +{ + overlap_test_2_attr(a, flavor, col); + switch ((otDRAW) flavor) { + case otDRAW_text_cross: + crosswin(a, fill); + break; + case otDRAW_line_box: + box(a, 0, 0); + break; + case otDRAW_line_cross: + crossbox(a); + break; + case otDRAW_set_bg: + /* done in overlap_test_2_attr */ + break; + case otDRAW_reset_bg: + /* done in overlap_test_2_attr */ + break; + } +} + +static void +overlap_test_3(WINDOW *a) +{ + wclear(a); + wmove(a, 0, 0); +} + +static void +overlap_test_4(int flavor, WINDOW *a, WINDOW *b) +{ + switch ((otCOPY) flavor) { + case otCOPY_overwrite: + overwrite(a, b); + break; + case otCOPY_merge: + copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), FALSE); + break; + case otCOPY_force: + copywin(a, b, 0, 0, 0, 0, getmaxy(b), getmaxx(b), TRUE); + break; + case otCOPY_overlay: + overlay(a, b); + break; + } +} + +/* test effects of overlapping windows */ +static int +overlap_test(bool recur GCC_UNUSED) +{ + WINDOW *win1, *win2; + int ch; + int shift = 0, last_refresh = -1; + int state, flavor[OVERLAP_FLAVORS]; + + if ((win1 = make_overlap(0)) == 0) { + return ERR; + } else if ((win2 = make_overlap(1)) == 0) { + delwin(win1); + return ERR; + } + + curs_set(0); + raw(); + refresh(); + move(0, 0); + printw("Test wnoutrefresh() for two overlapping windows:"); + + memset(flavor, 0, sizeof(flavor)); + state = overlap_help(0, flavor); + + while (!isQuit(ch = Getchar(), TRUE)) { + switch (ch) { + case 'a': /* refresh window A first, then B */ + overlap_test_0(win1, win2); + break; + + case 'b': /* refresh window B first, then A */ + overlap_test_0(win2, win1); + break; + + case 'c': /* fill window A so it is visible */ + overlap_test_1(flavor[otBASE_fill], 0, win1, 'A'); + break; + + case 'd': /* fill window B so it is visible */ + overlap_test_1(flavor[otBASE_fill], 1, win2, 'B'); + break; + + case 'e': /* cross test pattern in window A */ + overlap_test_2(flavor[otBASE_draw], 0, win1, 'A'); + break; + + case 'f': /* cross test pattern in window A */ + overlap_test_2(flavor[otBASE_draw], 1, win2, 'B'); + break; + + case 'g': /* clear window A */ + overlap_test_3(win1); + break; + + case 'h': /* clear window B */ + overlap_test_3(win2); + break; + + case 'i': /* overwrite A onto B */ + overlap_test_4(flavor[otBASE_copy], win1, win2); + break; + + case 'j': /* overwrite B onto A */ + overlap_test_4(flavor[otBASE_copy], win2, win1); + break; + + case CTRL('n'): + case KEY_DOWN: + state = overlap_help(state + 1, flavor); + break; + + case CTRL('p'): + case KEY_UP: + state = overlap_help(state - 1, flavor); + break; + + case ' ': + flavor[state] += 1; + state = overlap_help(state, flavor); + break; + + case HELP_KEY_1: + state = overlap_help(state, flavor); + break; + + case '<': + /* FALLTHRU */ + case '>': + /* see below */ + break; + + default: + beep(); + break; + } + + switch (ch) { + case 'a': + /* FALLTHRU */ + case 'b': + last_refresh = ch; + break; + case '<': + shift -= 2; + /* FALLTHRU */ + case '>': + shift += 1; + if (move_overlap(shift, win1) != OK) { + flash(); + shift += (ch == '>') ? -1 : 1; + } else if (last_refresh > 0) { + clear_overlap(); + wnoutrefresh(stdscr); + if (last_refresh == 'a') + overlap_test_0(win1, win2); + else + overlap_test_0(win2, win1); + } + break; + default: + last_refresh = -1; + break; + } + } + + delwin(win2); + delwin(win1); + erase(); + stop_curses(); + return OK; +} + +#if USE_WIDEC_SUPPORT +static void +x_fillwin(WINDOW *win, wchar_t ch) +{ + int y, x; + int y1, x1; + + getmaxyx(win, y1, x1); + x1 /= 2; + for (y = 0; y < y1; y++) { + wmove(win, y, 0); + for (x = 0; x < x1; x++) + waddnwstr(win, &ch, 1); + } +} + +static void +x_crosswin(WINDOW *win, wchar_t ch) +{ + int y, x; + int y1, x1; + int xw = 2; + + getmaxyx(win, y1, x1); + for (y = 0; y < y1; y++) { + for (x = 0; x < x1; x += xw) { + if (InCross(x, y, x1, y1)) { + wmove(win, y, x); + waddnwstr(win, &ch, 1); + } + } + } +} + +static void +x_overlap_test_1(int flavor, int col, WINDOW *a, wchar_t fill) +{ + overlap_test_1_attr(a, flavor, col); + x_fillwin(a, fill); + (void) wattrset(a, A_NORMAL); +} + +static void +x_overlap_test_2(int flavor, int col, WINDOW *a, wchar_t fill) +{ + overlap_test_2_attr(a, flavor, col); + switch ((otDRAW) flavor) { + case otDRAW_text_cross: + x_crosswin(a, fill); + break; + case otDRAW_line_box: + box(a, 0, 0); + break; + case otDRAW_line_cross: + crossbox(a); + break; + case otDRAW_set_bg: + /* done in overlap_test_2_attr */ + break; + case otDRAW_reset_bg: + /* done in overlap_test_2_attr */ + break; + } +} + +/* test effects of overlapping windows */ +static int +x_overlap_test(bool recur GCC_UNUSED) +{ + const wchar_t WIDE_A = 0xff21; + const wchar_t WIDE_B = 0xff22; + WINDOW *win1, *win2; + int ch; + int shift = 0, last_refresh = -1; + int state, flavor[OVERLAP_FLAVORS]; + + if ((win1 = make_overlap(0)) == 0) { + return ERR; + } else if ((win2 = make_overlap(1)) == 0) { + delwin(win1); + return ERR; + } + + curs_set(0); + raw(); + refresh(); + move(0, 0); + printw("Test wnoutrefresh() for overlapping windows with double-cell characters:"); + + memset(flavor, 0, sizeof(flavor)); + state = overlap_help(0, flavor); + + while (!isQuit(ch = Getchar(), TRUE)) { + switch (ch) { + case 'a': /* refresh window A first, then B */ + overlap_test_0(win1, win2); + break; + + case 'b': /* refresh window B first, then A */ + overlap_test_0(win2, win1); + break; + + case 'c': /* fill window A so it is visible */ + x_overlap_test_1(flavor[otBASE_fill], 0, win1, WIDE_A); + break; + + case 'd': /* fill window B so it is visible */ + x_overlap_test_1(flavor[otBASE_fill], 1, win2, WIDE_B); + break; + + case 'e': /* cross test pattern in window A */ + x_overlap_test_2(flavor[otBASE_draw], 0, win1, WIDE_A); + break; + + case 'f': /* cross test pattern in window A */ + x_overlap_test_2(flavor[otBASE_draw], 1, win2, WIDE_B); + break; + + case 'g': /* clear window A */ + overlap_test_3(win1); + break; + + case 'h': /* clear window B */ + overlap_test_3(win2); + break; + + case 'i': /* overwrite A onto B */ + overlap_test_4(flavor[otBASE_copy], win1, win2); + break; + + case 'j': /* overwrite B onto A */ + overlap_test_4(flavor[otBASE_copy], win2, win1); + break; + + case CTRL('n'): + case KEY_DOWN: + state = overlap_help(state + 1, flavor); + break; + + case CTRL('p'): + case KEY_UP: + state = overlap_help(state - 1, flavor); + break; + + case ' ': + flavor[state] += 1; + state = overlap_help(state, flavor); + break; + + case HELP_KEY_1: + state = overlap_help(state, flavor); + break; + + case '<': + /* FALLTHRU */ + case '>': + /* see below */ + break; + + default: + beep(); + break; + } + + switch (ch) { + case 'a': + /* FALLTHRU */ + case 'b': + last_refresh = ch; + break; + case '<': + shift -= 2; + /* FALLTHRU */ + case '>': + shift += 1; + if (move_overlap(shift, win1) != OK) { + flash(); + shift += (ch == '>') ? -1 : 1; + } else if (last_refresh > 0) { + clear_overlap(); + wnoutrefresh(stdscr); + if (last_refresh == 'a') + overlap_test_0(win1, win2); + else + overlap_test_0(win2, win1); + } + break; + default: + last_refresh = -1; + break; + } + } + + delwin(win2); + delwin(win1); + erase(); + stop_curses(); + return OK; +} +#endif /* USE_WIDEC_SUPPORT */ + +#endif /* HAVE_COPYWIN */ + +static void +show_setting_name(const char *name) +{ + printw("%-25s ", name); +} + +static void +show_string_setting(const char *name, const char *value) +{ + show_setting_name(name); + if (value) { + printw("\"%s\"", value); + } else { + attron(A_REVERSE); + addstr("<NULL>"); + attroff(A_REVERSE); + } + AddCh('\n'); +} + +static void +show_number_setting(const char *name, int value) +{ + show_setting_name(name); + if (value >= 0) { + printw("%d", value); + } else { + attron(A_REVERSE); + printw("%d", value); + attroff(A_REVERSE); + } + AddCh('\n'); +} + +static void +show_boolean_setting(const char *name, int value) +{ + show_setting_name(name); + if (value >= 0) { + printw("%s", value ? "TRUE" : "FALSE"); + } else { + attron(A_REVERSE); + printw("%d", value); + attroff(A_REVERSE); + } + AddCh('\n'); +} + +static int +settings_test(bool recur GCC_UNUSED) +{ +#if USE_WIDEC_SUPPORT + wchar_t ch; +#endif + + move(0, 0); + show_string_setting("termname", termname()); + show_string_setting("longname", longname()); + show_number_setting("baudrate", baudrate()); + if (erasechar() > 0) { + show_string_setting("unctrl(erasechar)", unctrl((chtype) erasechar())); + show_string_setting("keyname(erasechar)", keyname(erasechar())); + } + if (killchar() > 0) { + show_string_setting("unctrl(killchar)", unctrl((chtype) killchar())); + show_string_setting("keyname(killchar)", keyname(killchar())); + } +#if USE_WIDEC_SUPPORT + if (erasewchar(&ch) == OK) { + show_string_setting("key_name(erasewchar)", key_name(ch)); + } + if (killwchar(&ch) == OK) { + show_string_setting("key_name(killwchar)", key_name(ch)); + } +#endif + show_boolean_setting("has_ic", has_ic()); + show_boolean_setting("has_il", has_il()); + show_boolean_setting("has_colors", has_colors()); +#if HAVE_COLOR_CONTENT + show_boolean_setting("can_change_color", can_change_color()); +#endif + show_setting_name("LINES"); + printw("%d\n", LINES); + show_setting_name("COLS"); + printw("%d\n", COLS); + Pause(); + erase(); + stop_curses(); + return OK; +} + +/**************************************************************************** + * + * Main sequence + * + ****************************************************************************/ + +static void +usage(void) +{ + static const char *const tbl[] = + { + "Usage: ncurses [options]" + ,"" + ,"Options:" +#ifdef NCURSES_VERSION + ," -a f,b set default-colors (assumed white-on-black)" + ," -d use default-colors if terminal supports them" +#endif +#if HAVE_USE_ENV + ," -E call use_env(FALSE) to ignore $LINES and $COLUMNS" +#endif +#if USE_SOFTKEYS + ," -e fmt specify format for soft-keys test (e)" +#endif +#if HAVE_RIPOFFLINE + ," -f rip-off footer line (can repeat)" + ," -h rip-off header line (can repeat)" +#endif + ," -m do not use colors" +#if HAVE_COLOR_CONTENT + ," -p file rgb values to use in 'd' rather than ncurses's builtin" +#endif +#if USE_LIBPANEL + ," -s msec specify nominal time for panel-demo (default: 1, to hold)" +#endif +#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_NC_WINDOWS) + ," -T call use_tioctl(TRUE) to allow SIGWINCH to override environment" +#endif +#ifdef TRACE + ," -t mask specify default trace-level (may toggle with ^T)" +#endif +#if HAVE_COLOR_CONTENT + ," -x use xterm-compatible control for reading color palette" +#endif + }; + size_t n; + for (n = 0; n < SIZEOF(tbl); n++) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(EXIT_FAILURE); +} + +static void +set_terminal_modes(void) +{ + noraw(); + cbreak(); + noecho(); + scrollok(stdscr, TRUE); + idlok(stdscr, TRUE); + keypad(stdscr, TRUE); +} + +#ifdef SIGUSR1 +static void +announce_sig(int sig) +{ + (void) fprintf(stderr, "Handled signal %d\r\n", sig); +} +#endif + +#if HAVE_RIPOFFLINE +static int +rip_footer(WINDOW *win, int cols) +{ + wbkgd(win, A_REVERSE); + werase(win); + wmove(win, 0, 0); + wprintw(win, "footer: window %p, %d columns", (void *) win, cols); + wnoutrefresh(win); + return OK; +} + +static int +rip_header(WINDOW *win, int cols) +{ + wbkgd(win, A_REVERSE); + werase(win); + wmove(win, 0, 0); + wprintw(win, "header: window %p, %d columns", (void *) win, cols); + wnoutrefresh(win); + return OK; +} +#endif /* HAVE_RIPOFFLINE */ + +static void +main_menu(bool top) +{ +#if USE_WIDEC_SUPPORT + typedef struct { + bool recur; + int (*narrow_func) (bool); + int (*wide_func) (bool); + int code; + const char *help; + } MyCmds; +#define BOTH(a) a, x_ ## a +#define ONLY(a) a, NULL +#define CMDS(recur, funcs,code,help) { recur, funcs, code, help } +#else + typedef struct { + bool recur; + int (*narrow_func) (bool); + int code; + const char *help; + } MyCmds; +#define BOTH(a) a +#define ONLY(a) a +#define CMDS(recur, funcs,code,help) { recur, funcs, code, help } +#endif + /* *INDENT-OFF* */ + static MyCmds cmds[] = + { + CMDS(TRUE, BOTH(getch_test), 'a', "keyboard and mouse input test"), + CMDS(TRUE, BOTH(attr_test), 'b', "character attribute test"), + CMDS(TRUE, BOTH(color_test), 'c', "color test pattern"), +#if HAVE_COLOR_CONTENT + CMDS(FALSE, ONLY(color_edit), 'd', "edit RGB color values"), +#endif +#if USE_SOFTKEYS + CMDS(TRUE, BOTH(slk_test), 'e', "exercise soft keys"), +#endif + CMDS(TRUE, BOTH(acs_test), 'f', "display ACS characters"), + CMDS(TRUE, ONLY(scroll_test), 'g', "display windows and scrolling"), + CMDS(TRUE, ONLY(flushinp_test), 'i', "test flushinp()"), + CMDS(TRUE, ONLY(sgr_attr_test), 'k', "display character attributes"), +#if USE_LIBMENU + CMDS(TRUE, ONLY(menu_test), 'm', "exercise menu library"), +#endif +#if USE_LIBPANEL + CMDS(TRUE, BOTH(panel_test), 'o', "exercise panel library"), +#endif +#if HAVE_NEWPAD + CMDS(TRUE, ONLY(pad_test), 'p', "exercise pad features"), +#endif + CMDS(TRUE, ONLY(NULL), 'q', "quit"), +#if USE_LIBMENU + CMDS(TRUE, ONLY(form_test), 'r', "exercise form library"), +#endif +#if HAVE_COPYWIN + CMDS(TRUE, BOTH(overlap_test), 's', "overlapping-refresh test"), +#endif +#if USE_LIBMENU && defined(TRACE) + CMDS(TRUE, ONLY(trace_set), 't', "set trace level"), +#endif + CMDS(TRUE, ONLY(settings_test), 'v', "show terminal name and settings"), + CMDS(FALSE, ONLY(NULL), '?', "repeat this command summary") + }; + /* *INDENT-ON* */ + + int (*doit) (bool); + char command; + unsigned n; + do { + printf("This is the ncurses main menu (uppercase for wide-characters)\n"); + for (n = 0; n < SIZEOF(cmds); ++n) { + if (top || cmds[n].recur) { + putchar(' '); +#if USE_WIDEC_SUPPORT + if (cmds[n].wide_func) { + printf("%c,", toupper(cmds[n].code)); + } +#endif + printf("%c\t= %s\n", cmds[n].code, cmds[n].help); + } + } + + (void) fputs("> ", stdout); + (void) fflush(stdout); /* necessary under SVr4 curses */ + + /* + * This used to be an 'fgets()' call (until 1996/10). However with + * some runtime libraries, mixing stream I/O and 'read()' causes the + * input stream to be flushed when switching between the two. + */ + command = 0; + for (;;) { + char ch = '\0'; + if (read(fileno(stdin), &ch, (size_t) 1) <= 0) { + int save_err = errno; + perror("\nOOPS"); + if (save_err == EINTR) { + clearerr(stdin); + continue; + } else if (command == 0) { + command = 'q'; + } + break; + } else if (command == 0 && !isspace(UChar(ch))) { + command = ch; + } else if (ch == '\n' || ch == '\r') { + if ((command == 'd') && !top) { + (void) fputs("Do not nest test-d\n", stdout); + command = 0; + } + if (command != 0) + break; + (void) fputs("> ", stdout); + (void) fflush(stdout); + } + } + + doit = NULL; + for (n = 0; n < SIZEOF(cmds); ++n) { + if (cmds[n].code == command) { + doit = cmds[n].narrow_func; + break; + } +#if USE_WIDEC_SUPPORT + if (toupper(cmds[n].code) == command) { + doit = cmds[n].wide_func; + break; + } +#endif + } + + if (doit != NULL && doit(FALSE) == OK) { + /* + * This may be overkill; it is intended to reset everything back + * to the initial terminal modes so that tests don't get in + * each other's way. + */ + flushinp(); + set_terminal_modes(); + reset_prog_mode(); + clear(); + refresh(); + endwin(); + if (command == '?') { + (void) puts("This is the ncurses capability tester."); + (void) + puts("You may select a test from the main menu by typing the"); + (void) + puts("key letter of the choice (the letter to left of the =)"); + (void) + puts("at the > prompt. Type `q' to exit."); + } + continue; + } + } while + (command != 'q'); +} + +/*+------------------------------------------------------------------------- + main(argc,argv) +--------------------------------------------------------------------------*/ + +int +main(int argc, char *argv[]) +{ + int c; + int my_e_param = 1; +#ifdef NCURSES_VERSION_PATCH +#if HAVE_USE_DEFAULT_COLORS + int default_fg = COLOR_WHITE; + int default_bg = COLOR_BLACK; + bool default_colors = FALSE; +#if HAVE_ASSUME_DEFAULT_COLORS + bool assumed_colors = FALSE; +#endif +#endif +#endif + bool monochrome = FALSE; +#if HAVE_COLOR_CONTENT + bool xterm_colors = FALSE; + char *palette_file = 0; +#endif + + setlocale(LC_ALL, ""); + + while ((c = getopt(argc, argv, "a:dEe:fhmp:s:Tt:x")) != -1) { + switch (c) { +#ifdef NCURSES_VERSION_PATCH +#if HAVE_USE_DEFAULT_COLORS +#if HAVE_ASSUME_DEFAULT_COLORS + case 'a': + assumed_colors = TRUE; + switch (sscanf(optarg, "%d,%d", &default_fg, &default_bg)) { + case 0: + default_fg = COLOR_WHITE; + /* FALLTHRU */ + case 1: + default_bg = COLOR_BLACK; + break; + } + break; +#endif + case 'd': + default_colors = TRUE; + break; +#endif +#endif +#if HAVE_USE_ENV + case 'E': + use_env(FALSE); + break; +#endif + case 'e': + my_e_param = atoi(optarg); +#ifdef NCURSES_VERSION + if (my_e_param > 3) /* allow extended layouts */ + usage(); +#else + if (my_e_param > 1) + usage(); +#endif + break; +#if HAVE_RIPOFFLINE + case 'f': + ripoffline(-1, rip_footer); + break; + case 'h': + ripoffline(1, rip_header); + break; +#endif /* HAVE_RIPOFFLINE */ + case 'm': + monochrome = TRUE; + break; +#if HAVE_COLOR_CONTENT + case 'p': + palette_file = optarg; + break; +#endif +#if USE_LIBPANEL + case 's': + nap_msec = (int) atol(optarg); + break; +#endif +#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20120714) && !defined(_NC_WINDOWS) + case 'T': + use_tioctl(TRUE); + break; +#endif +#ifdef TRACE + case 't': + save_trace = (unsigned) strtol(optarg, 0, 0); + break; +#endif +#if HAVE_COLOR_CONTENT + case 'x': + xterm_colors = TRUE; + break; +#endif + default: + usage(); + } + } + + /* + * If there's no menus (unlikely for ncurses!), then we'll have to set + * tracing on initially, just in case the user wants to test something that + * doesn't involve wGetchar. + */ +#ifdef TRACE + /* enable debugging */ +#if !USE_LIBMENU + curses_trace(save_trace); +#else + if (!isatty(fileno(stdin))) + curses_trace(save_trace); +#endif /* USE_LIBMENU */ +#endif /* TRACE */ + +#if USE_SOFTKEYS + /* tell it we're going to play with soft keys */ + slk_init(my_e_param); +#endif + +#ifdef SIGUSR1 + /* set up null signal catcher so we can see what interrupts to getch do */ + signal(SIGUSR1, announce_sig); +#endif + + /* we must initialize the curses data structure only once */ + initscr(); + bkgdset(BLANK); + + set_terminal_modes(); + def_prog_mode(); + + /* tests, in general, will want these modes */ + UseColors = (bool) (monochrome ? FALSE : has_colors()); + + if (UseColors) { + start_color(); +#ifdef NCURSES_VERSION_PATCH + MaxColors = COLORS; /* was > 16 ? 16 : COLORS */ +#if HAVE_USE_DEFAULT_COLORS + if (default_colors) { + use_default_colors(); + MinColors = -1; + } +#if HAVE_ASSUME_DEFAULT_COLORS + if (assumed_colors) + assume_default_colors(default_fg, default_bg); +#endif +#endif +#else /* normal SVr4 curses */ + MaxColors = COLORS; /* was > 8 ? 8 : COLORS */ +#endif + max_pairs = COLOR_PAIRS; /* was > 256 ? 256 : COLOR_PAIRS */ + +#if HAVE_COLOR_CONTENT + if (can_change_color()) { + init_all_colors(xterm_colors, palette_file); + } +#endif + } + + /* + * Return to terminal mode, so we're guaranteed of being able to + * select terminal commands even if the capabilities are wrong. + */ + endwin(); + +#if HAVE_CURSES_VERSION + (void) printf("Welcome to %s. Press ? for help.\n", curses_version()); +#elif defined(NCURSES_VERSION_MAJOR) && defined(NCURSES_VERSION_MINOR) && defined(NCURSES_VERSION_PATCH) + (void) printf("Welcome to ncurses %d.%d.%d. Press ? for help.\n", + NCURSES_VERSION_MAJOR, + NCURSES_VERSION_MINOR, + NCURSES_VERSION_PATCH); +#else + (void) puts("Welcome to ncurses. Press ? for help."); +#endif + + main_menu(TRUE); + + ExitProgram(EXIT_SUCCESS); +} + +/* ncurses.c ends here */ diff --git a/deps/ncurses-5.9/test/ncurses_tst.hin b/deps/ncurses-6.3/test/ncurses_tst.hin similarity index 93% rename from deps/ncurses-5.9/test/ncurses_tst.hin rename to deps/ncurses-6.3/test/ncurses_tst.hin index 1d77cbd..238fc22 100644 --- a/deps/ncurses-5.9/test/ncurses_tst.hin +++ b/deps/ncurses-6.3/test/ncurses_tst.hin @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998 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 * @@ -30,7 +31,7 @@ * Author: Thomas E. Dickey <dickey@clark.net> 1998 * ****************************************************************************/ /* - * $Id: ncurses_tst.hin,v 1.2 1998/02/11 12:14:05 tom Exp $ + * $Id: ncurses_tst.hin,v 1.3 2020/02/02 23:34:34 tom Exp $ * * This is a template-file used to generate the "ncurses_cfg.h" file. * diff --git a/deps/ncurses-5.9/test/newdemo.c b/deps/ncurses-6.3/test/newdemo.c similarity index 89% rename from deps/ncurses-5.9/test/newdemo.c rename to deps/ncurses-6.3/test/newdemo.c index 75626a9..d76523a 100644 --- a/deps/ncurses-5.9/test/newdemo.c +++ b/deps/ncurses-6.3/test/newdemo.c @@ -2,7 +2,7 @@ * newdemo.c - A demo program using PDCurses. The program illustrate * the use of colours for text output. * - * $Id: newdemo.c,v 1.35 2010/12/12 00:19:15 tom Exp $ + * $Id: newdemo.c,v 1.47 2019/12/14 23:25:29 tom Exp $ */ #include <test.priv.h> @@ -47,10 +47,10 @@ static const char *messages[] = /* * Trap interrupt */ -static RETSIGTYPE +static void trap(int sig GCC_UNUSED) { - endwin(); + stop_curses(); ExitProgram(EXIT_FAILURE); } @@ -61,11 +61,12 @@ static int WaitForUser(WINDOW *win) { time_t t; - chtype key; nodelay(win, TRUE); t = time((time_t *) 0); + while (1) { + chtype key; if ((int) (key = (chtype) wgetch(win)) != ERR) { if (key == 'q' || key == 'Q') return 1; @@ -84,7 +85,7 @@ set_colors(WINDOW *win, int pair, int foreground, int background) if (pair > COLOR_PAIRS) pair = COLOR_PAIRS; init_pair((short) pair, (short) foreground, (short) background); - (void) wattrset(win, (attr_t) COLOR_PAIR(pair)); + (void) wattrset(win, AttrArg(COLOR_PAIR(pair), 0)); } } @@ -96,7 +97,7 @@ use_colors(WINDOW *win, int pair, chtype attrs) pair = COLOR_PAIRS; attrs |= (chtype) COLOR_PAIR(pair); } - (void) wattrset(win, attrs); + (void) wattrset(win, AttrArg(attrs, 0)); return attrs; } @@ -113,12 +114,19 @@ SubWinTest(WINDOW *win) getbegyx(win, by, bx); sw = w / 3; sh = h / 3; - if ((swin1 = subwin(win, sh, sw, by + 3, bx + 5)) == NULL) + + if ((swin1 = subwin(win, sh, sw, by + 3, bx + 5)) == NULL) { return 1; - if ((swin2 = subwin(win, sh, sw, by + 4, bx + 8)) == NULL) + } + if ((swin2 = subwin(win, sh, sw, by + 4, bx + 8)) == NULL) { + delwin(swin1); return 1; - if ((swin3 = subwin(win, sh, sw, by + 5, bx + 11)) == NULL) + } + if ((swin3 = subwin(win, sh, sw, by + 5, bx + 11)) == NULL) { + delwin(swin1); + delwin(swin2); return 1; + } set_colors(swin1, 8, COLOR_RED, COLOR_BLUE); werase(swin1); @@ -214,18 +222,14 @@ int main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) { WINDOW *win; - int w, x, y, i, j, k; - char buffer[200]; - const char *message; + int x, y, i, k; + char buffer[SIZEOF(messages) * 80]; int width, height; chtype save[80]; - chtype c; setlocale(LC_ALL, ""); - CATCHALL(trap); - - initscr(); + InitAndCatch(initscr(), trap); if (has_colors()) start_color(); cbreak(); @@ -234,11 +238,16 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) height = 14; /* Create a drawing window */ win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2); if (win == NULL) { - endwin(); + stop_curses(); ExitProgram(EXIT_FAILURE); } while (1) { + int w; + int j; + chtype c; + const char *message; + set_colors(win, 1, COLOR_WHITE, COLOR_BLUE); werase(win); @@ -292,11 +301,11 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) message = messages[j = 0]; i = 1; w = width - 2; - strcpy(buffer, message); + _nc_STRCPY(buffer, message, sizeof(buffer)); while (j < NMESSAGES) { while ((int) strlen(buffer) < w) { - strcat(buffer, " ... "); - strcat(buffer, messages[++j % NMESSAGES]); + _nc_STRCAT(buffer, " ... ", sizeof(buffer)); + _nc_STRCAT(buffer, messages[++j % NMESSAGES], sizeof(buffer)); } if (i < w) @@ -353,6 +362,6 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) if (WaitForUser(win) == 1) break; } - endwin(); + stop_curses(); ExitProgram(EXIT_SUCCESS); } diff --git a/deps/ncurses-6.3/test/package/debian-mingw/compat b/deps/ncurses-6.3/test/package/debian-mingw/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw/compat @@ -0,0 +1 @@ +10 diff --git a/deps/ncurses-6.3/test/package/debian-mingw/control b/deps/ncurses-6.3/test/package/debian-mingw/control new file mode 100644 index 0000000..64bd01b --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw/control @@ -0,0 +1,18 @@ +Source: ncurses-examples +Maintainer: Thomas E. Dickey <dickey@invisible-island.net> +Section: misc +Priority: optional +Standards-Version: 3.8.4 +Build-Depends: debhelper (>= 5) +Homepage: https://invisible-island.net/ncurses/ncurses-examples.html + +Package: mingw32-ncurses-examples +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: example/test programs from ncurses + These are the example/test programs from the ncurses distribution. + . + This package is used for testing ABI 6 with the MinGW 32-bit port. + . + This package installs in "bin/ncurses-examples" to avoid conflict with other + packages. diff --git a/deps/ncurses-6.3/test/package/debian-mingw/copyright b/deps/ncurses-6.3/test/package/debian-mingw/copyright new file mode 100644 index 0000000..a805a1f --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw/copyright @@ -0,0 +1,79 @@ +Upstream source https://invisible-island.net/ncurses/ncurses-examples.html + +Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net> + +------------------------------------------------------------------------------- +Files: * +Copyright: 2017-2020,2021 Thomas E. Dickey +Copyright: 1998-2016,2017 Free Software Foundation, Inc. +Licence: X11 + +Files: aclocal.m4 package +Copyright: 2003-2020,2021 by Thomas E. Dickey +Licence: X11 + + 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. + +------------------------------------------------------------------------------- +Files: install-sh +Copyright: 1994 X Consortium +Licence: X11 + + 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, 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 + 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. + + FSF changes to this file are in the public domain. + + Calling this script install-sh is preferred over install.sh, to prevent + `make' implicit rules from creating a file called install from it + when there is no Makefile. + + This script is compatible with the BSD install script, but was written + from scratch. It can only install one file at a time, a restriction + shared with many OS's install programs. + +On Debian systems, the complete text of the GNU General +Public License can be found in '/usr/share/common-licenses/GPL-2' + +-- vile: txtmode file-encoding=utf-8 diff --git a/deps/ncurses-5.9/test/package/debian/docs b/deps/ncurses-6.3/test/package/debian-mingw/docs similarity index 100% rename from deps/ncurses-5.9/test/package/debian/docs rename to deps/ncurses-6.3/test/package/debian-mingw/docs diff --git a/deps/ncurses-6.3/test/package/debian-mingw/rules b/deps/ncurses-6.3/test/package/debian-mingw/rules new file mode 100755 index 0000000..e61cf71 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw/rules @@ -0,0 +1,101 @@ +#!/usr/bin/make -f +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion +CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic + +NCURSES_PKG = ncurses-examples + +TARGET = i686-w64-mingw32 +MINGW_BIN = /usr/bin +MINGW_TOP = /usr/$(TARGET) +MINGW_TMP = $(CURDIR)/debian/mingw32-ncurses-examples + +CFLAGS = $(CC_NORMAL) + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + + +configure: configure-stamp +configure-stamp: + dh_testdir + + CFLAGS="$(CFLAGS)" ./configure \ + --host=$(TARGET) \ + --target=$(TARGET) \ + --prefix=$(MINGW_TOP) \ + --bindir=\$${prefix}/bin/$(NCURSES_PKG) \ + --datadir=\$${prefix}/share/$(NCURSES_PKG) \ + --with-screen=ncursesw6 \ + --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + [ ! -f makefile ] || $(MAKE) distclean + + rm -f configure-stamp build-stamp install-stamp + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) install DESTDIR=$(MINGW_TMP) + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# No binary-indep target. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installdocs + dh_installexamples + dh_installchangelogs NEWS + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/deps/ncurses-6.3/test/package/debian-mingw/source/format b/deps/ncurses-6.3/test/package/debian-mingw/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/deps/ncurses-6.3/test/package/debian-mingw/watch b/deps/ncurses-6.3/test/package/debian-mingw/watch new file mode 100644 index 0000000..ec075b1 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \ + debian uupdate diff --git a/deps/ncurses-6.3/test/package/debian-mingw64/compat b/deps/ncurses-6.3/test/package/debian-mingw64/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw64/compat @@ -0,0 +1 @@ +10 diff --git a/deps/ncurses-6.3/test/package/debian-mingw64/control b/deps/ncurses-6.3/test/package/debian-mingw64/control new file mode 100644 index 0000000..c22f262 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw64/control @@ -0,0 +1,18 @@ +Source: ncurses-examples +Maintainer: Thomas E. Dickey <dickey@invisible-island.net> +Section: misc +Priority: optional +Standards-Version: 3.8.4 +Build-Depends: debhelper (>= 5) +Homepage: https://invisible-island.net/ncurses/ncurses-examples.html + +Package: mingw64-ncurses-examples +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: example/test programs from ncurses + These are the example/test programs from the ncurses distribution. + . + This package is used for testing ABI 6 with the MinGW 64-bit port. + . + This package installs in "bin/ncurses-examples" to avoid conflict with other + packages. diff --git a/deps/ncurses-6.3/test/package/debian-mingw64/copyright b/deps/ncurses-6.3/test/package/debian-mingw64/copyright new file mode 100644 index 0000000..a805a1f --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw64/copyright @@ -0,0 +1,79 @@ +Upstream source https://invisible-island.net/ncurses/ncurses-examples.html + +Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net> + +------------------------------------------------------------------------------- +Files: * +Copyright: 2017-2020,2021 Thomas E. Dickey +Copyright: 1998-2016,2017 Free Software Foundation, Inc. +Licence: X11 + +Files: aclocal.m4 package +Copyright: 2003-2020,2021 by Thomas E. Dickey +Licence: X11 + + 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. + +------------------------------------------------------------------------------- +Files: install-sh +Copyright: 1994 X Consortium +Licence: X11 + + 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, 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 + 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. + + FSF changes to this file are in the public domain. + + Calling this script install-sh is preferred over install.sh, to prevent + `make' implicit rules from creating a file called install from it + when there is no Makefile. + + This script is compatible with the BSD install script, but was written + from scratch. It can only install one file at a time, a restriction + shared with many OS's install programs. + +On Debian systems, the complete text of the GNU General +Public License can be found in '/usr/share/common-licenses/GPL-2' + +-- vile: txtmode file-encoding=utf-8 diff --git a/deps/ncurses-6.3/test/package/debian-mingw64/docs b/deps/ncurses-6.3/test/package/debian-mingw64/docs new file mode 100644 index 0000000..e845566 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw64/docs @@ -0,0 +1 @@ +README diff --git a/deps/ncurses-6.3/test/package/debian-mingw64/rules b/deps/ncurses-6.3/test/package/debian-mingw64/rules new file mode 100755 index 0000000..7db9c5a --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw64/rules @@ -0,0 +1,101 @@ +#!/usr/bin/make -f +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +CC_NORMAL = -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion +CC_STRICT = $(CC_NORMAL) -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic + +NCURSES_PKG = ncurses-examples + +TARGET = x86_64-w64-mingw32 +MINGW_BIN = /usr/bin +MINGW_TOP = /usr/$(TARGET) +MINGW_TMP = $(CURDIR)/debian/mingw64-ncurses-examples + +CFLAGS = $(CC_NORMAL) + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + + +configure: configure-stamp +configure-stamp: + dh_testdir + + CFLAGS="$(CFLAGS)" ./configure \ + --host=$(TARGET) \ + --target=$(TARGET) \ + --prefix=$(MINGW_TOP) \ + --bindir=\$${prefix}/bin/$(NCURSES_PKG) \ + --datadir=\$${prefix}/share/$(NCURSES_PKG) \ + --with-screen=ncursesw6 \ + --with-pkg-config-libdir=/usr/$(TARGET)/lib/pkgconfig + + touch configure-stamp + +build: build-stamp +build-stamp: configure-stamp + dh_testdir + + $(MAKE) + + touch build-stamp + +clean: + dh_testdir + dh_testroot + + [ ! -f makefile ] || $(MAKE) distclean + + rm -f configure-stamp build-stamp install-stamp + + dh_clean + +install: install-stamp +install-stamp: build-stamp + dh_testdir + dh_testroot + dh_clean -k + dh_installdirs + + $(MAKE) install DESTDIR=$(MINGW_TMP) + + touch install-stamp + +# Build architecture-independent files here. +binary-indep: build install +# No binary-indep target. + +# Build architecture-dependent files here. +binary-arch: build install + dh_testdir + dh_testroot + dh_installdocs + dh_installexamples + dh_installchangelogs NEWS + dh_strip + dh_compress + dh_fixperms + dh_installdeb + dh_shlibdeps + dh_gencontrol + dh_md5sums + dh_builddeb + +binary: binary-indep binary-arch +.PHONY: build clean binary-indep binary-arch binary install install-stamp diff --git a/deps/ncurses-6.3/test/package/debian-mingw64/source/format b/deps/ncurses-6.3/test/package/debian-mingw64/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw64/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/deps/ncurses-6.3/test/package/debian-mingw64/watch b/deps/ncurses-6.3/test/package/debian-mingw64/watch new file mode 100644 index 0000000..ec075b1 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian-mingw64/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \ + debian uupdate diff --git a/deps/ncurses-6.3/test/package/debian/compat b/deps/ncurses-6.3/test/package/debian/compat new file mode 100644 index 0000000..f599e28 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian/compat @@ -0,0 +1 @@ +10 diff --git a/deps/ncurses-6.3/test/package/debian/control b/deps/ncurses-6.3/test/package/debian/control new file mode 100644 index 0000000..d7647b3 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian/control @@ -0,0 +1,26 @@ +Source: ncurses-examples +Maintainer: Thomas E. Dickey <dickey@invisible-island.net> +Section: misc +Priority: optional +Standards-Version: 3.8.4 +Build-Depends: debhelper (>= 5) +Homepage: https://invisible-island.net/ncurses/ncurses-examples.html + +Package: ncurses-examples +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: example/test programs from ncurses + These are the example/test programs from the ncurses distribution. + . + This package installs in "bin/ncurses-examples" to avoid conflict with other + packages. + +Package: ncursest-examples +Architecture: any +Depends: ${shlibs:Depends}, ${misc:Depends} +Description: example/test programs from ncurses + These are the example/test programs from the ncurses distribution, using + the thread configuration. + . + This package installs in "bin/ncursest-examples" to avoid conflict with other + packages. diff --git a/deps/ncurses-6.3/test/package/debian/copyright b/deps/ncurses-6.3/test/package/debian/copyright new file mode 100644 index 0000000..c6873e2 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian/copyright @@ -0,0 +1,79 @@ +Upstream source https://invisible-island.net/ncurses/ncurses-examples.html + +Current ncurses maintainer: Thomas Dickey <dickey@invisible-island.net> + +------------------------------------------------------------------------------- +Files: * +Copyright: 2017-2020,2021 Thomas E. Dickey +Copyright: 1998-2016,2017 Free Software Foundation, Inc. +Licence: X11 + +Files: aclocal.m4 package +Copyright: 2003-2019,2020 by Thomas E. Dickey +Licence: X11 + + 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. + +------------------------------------------------------------------------------- +Files: install-sh +Copyright: 1994 X Consortium +Licence: X11 + + 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, 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 + 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. + + FSF changes to this file are in the public domain. + + Calling this script install-sh is preferred over install.sh, to prevent + `make' implicit rules from creating a file called install from it + when there is no Makefile. + + This script is compatible with the BSD install script, but was written + from scratch. It can only install one file at a time, a restriction + shared with many OS's install programs. + +On Debian systems, the complete text of the GNU General +Public License can be found in '/usr/share/common-licenses/GPL-2' + +-- vile: txtmode file-encoding=utf-8 diff --git a/deps/ncurses-6.3/test/package/debian/docs b/deps/ncurses-6.3/test/package/debian/docs new file mode 100644 index 0000000..e845566 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian/docs @@ -0,0 +1 @@ +README diff --git a/deps/ncurses-6.3/test/package/debian/rules b/deps/ncurses-6.3/test/package/debian/rules new file mode 100755 index 0000000..4e6d570 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian/rules @@ -0,0 +1,164 @@ +#!/usr/bin/make -f +# Made with the aid of dh_make, by Craig Small +# Sample debian/rules that uses debhelper. GNU copyright 1997 by Joey Hess. +# Some lines taken from debmake, by Cristoph Lameter. + +# Uncomment this to turn on verbose mode. +#export DH_VERBOSE=1 + +# packages +NCURSES_PKG = ncurses-examples +NCURSEST_PKG = ncursest-examples + +PACKAGES.indep = # ncurses-examples-docs +PACKAGES.arch = $(NCURSES_PKG) $(NCURSEST_PKG) + +# These are used for cross-compiling and for saving the configure script +# from having to guess our platform (since we know it already) +DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) +DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) + +CFLAGS = $(shell dpkg-buildflags --get CFLAGS) +CPPFLAGS = $(shell dpkg-buildflags --get CPPFLAGS) +LDFLAGS = $(shell dpkg-buildflags --get LDFLAGS) + +ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) + CFLAGS += -O0 +else + CFLAGS += -O2 +endif +ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) + INSTALL_PROGRAM += -s +endif + +verbose = # -v + +configure = \ + CFLAGS="$(CFLAGS)" \ + CPPFLAGS="$(CPPFLAGS)" \ + LDFLAGS="$(LDFLAGS)" ../../configure \ + --host=$(DEB_HOST_GNU_TYPE) \ + --build=$(DEB_BUILD_GNU_TYPE) \ + --prefix=/usr \ + --disable-rpath-hack + +.PHONY: all config build install binary clean config-indep config-arch \ + build-indep build-arch install-indep install-arch binary-indep \ + binary-arch + +all: build + +config: config-indep config-arch +build: build-indep build-arch +install: install-indep install-arch +binary: binary-indep binary-arch +clean: + dh_testdir + dh_testroot + dh_clean $(verbose) + rm -rf t + +config-indep: $(PACKAGES.indep:%=config-%-stamp) +config-arch: $(PACKAGES.arch:%=config-%-stamp) + +build-indep: $(PACKAGES.indep:%=build-%-stamp) +build-arch: $(PACKAGES.arch:%=build-%-stamp) + +install-indep: $(PACKAGES.indep:%=install-%-stamp) +install-arch: $(PACKAGES.arch:%=install-%-stamp) + +config-$(NCURSES_PKG)-stamp: + dh_testdir + + rm -rf t/ncurses6 + mkdir -p t/ncurses6 + + cd t/ncurses6; $(configure) \ + --bindir=\$${prefix}/bin/$(NCURSES_PKG) \ + --datadir=\$${prefix}/share/$(NCURSES_PKG) \ + --with-screen=ncursesw6 + + touch $@ + +config-$(NCURSEST_PKG)-stamp: + dh_testdir + + rm -rf t/ncursest6 + mkdir -p t/ncursest6 + + cd t/ncursest6; $(configure) \ + --bindir=\$${prefix}/bin/$(NCURSEST_PKG) \ + --datadir=\$${prefix}/share/$(NCURSEST_PKG) \ + --with-screen=ncursestw6 + + touch $@ + +build-$(NCURSES_PKG)-stamp: config-$(NCURSES_PKG)-stamp + dh_testdir + + $(MAKE) -C t/ncurses6 + + touch $@ + +build-$(NCURSEST_PKG)-stamp: config-$(NCURSEST_PKG)-stamp + dh_testdir + + $(MAKE) -C t/ncursest6 + + touch $@ + +install-$(NCURSES_PKG)-stamp: build-$(NCURSES_PKG)-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -p$(NCURSES_PKG) + + $(MAKE) -C t/ncurses6 install DESTDIR=$(CURDIR)/debian/$(NCURSES_PKG) + + touch $@ + +install-$(NCURSEST_PKG)-stamp: build-$(NCURSEST_PKG)-stamp + dh_testdir + dh_testroot + dh_installdirs $(verbose) + dh_prep $(verbose) -p$(NCURSEST_PKG) + + $(MAKE) -C t/ncursest6 install DESTDIR=$(CURDIR)/debian/$(NCURSEST_PKG) + + touch $@ + +# Build architecture-independent files here. +binary-indep: install-indep +ifneq ($(PACKAGES.indep),) + rm -f $(PACKAGES.indep:%=install-%-stamp) + dh_testdir + dh_testroot + dh_installdocs $(verbose) $(PACKAGES.indep:%=-p%) + dh_installman $(verbose) $(PACKAGES.indep:%=-p%) + dh_installexamples $(verbose) $(PACKAGES.indep:%=-p%) + dh_installchangelogs $(verbose) $(PACKAGES.indep:%=-p%) NEWS + dh_compress $(verbose) $(PACKAGES.indep:%=-p%) + dh_fixperms $(verbose) $(PACKAGES.indep:%=-p%) + dh_installdeb $(verbose) $(PACKAGES.indep:%=-p%) + dh_gencontrol $(verbose) $(PACKAGES.indep:%=-p%) + dh_md5sums $(verbose) $(PACKAGES.indep:%=-p%) + dh_builddeb $(verbose) $(PACKAGES.indep:%=-p%) +endif + +# Build architecture-dependent files here. +binary-arch: install-arch +ifneq ($(PACKAGES.arch),) + rm -f $(PACKAGES.arch:%=install-%-stamp) + dh_testdir + dh_testroot + dh_installchangelogs $(verbose) $(PACKAGES.arch:%=-p%) NEWS + dh_strip $(verbose) $(PACKAGES.arch:%=-p%) + dh_compress $(verbose) $(PACKAGES.arch:%=-p%) + dh_fixperms $(verbose) $(PACKAGES.arch:%=-p%) + dh_installdeb $(verbose) $(PACKAGES.arch:%=-p%) + dh_makeshlibs $(verbose) $(PACKAGES.arch:%=-p%) + dh_shlibdeps $(verbose) $(PACKAGES.arch:%=-p%) + dh_gencontrol $(verbose) $(PACKAGES.arch:%=-p%) + dh_md5sums $(verbose) $(PACKAGES.arch:%=-p%) + dh_builddeb $(verbose) $(PACKAGES.arch:%=-p%) +endif diff --git a/deps/ncurses-6.3/test/package/debian/source/format b/deps/ncurses-6.3/test/package/debian/source/format new file mode 100644 index 0000000..89ae9db --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian/source/format @@ -0,0 +1 @@ +3.0 (native) diff --git a/deps/ncurses-6.3/test/package/debian/watch b/deps/ncurses-6.3/test/package/debian/watch new file mode 100644 index 0000000..ec075b1 --- /dev/null +++ b/deps/ncurses-6.3/test/package/debian/watch @@ -0,0 +1,4 @@ +version=3 + +opts=passive ftp://ftp.invisible-island.net/ncurses-examples/ncurses-examples-([\d.]+)\.tgz \ + debian uupdate diff --git a/deps/ncurses-6.3/test/package/mingw-ncurses-examples.spec b/deps/ncurses-6.3/test/package/mingw-ncurses-examples.spec new file mode 100644 index 0000000..cad43d1 --- /dev/null +++ b/deps/ncurses-6.3/test/package/mingw-ncurses-examples.spec @@ -0,0 +1,123 @@ +Summary: ncurses-examples - example/test programs from ncurses +%?mingw_package_header + +%global AppProgram ncurses-examples +%global AppVersion MAJOR.MINOR +%global AppRelease YYYYMMDD +# $Id: mingw-ncurses-examples.spec,v 1.10 2021/06/17 21:11:12 tom Exp $ +Name: mingw32-ncurses6-examples +Version: %{AppVersion} +Release: %{AppRelease} +License: X11 +Group: Development/Libraries +Source: ncurses-examples-%{release}.tgz +# URL: https://invisible-island.net/ncurses/ + +BuildRequires: mingw32-ncurses6 + +BuildRequires: mingw32-filesystem >= 95 +BuildRequires: mingw32-gcc +BuildRequires: mingw32-binutils + +BuildRequires: mingw64-ncurses6 + +BuildRequires: mingw64-filesystem >= 95 +BuildRequires: mingw64-gcc +BuildRequires: mingw64-binutils + +%define CC_NORMAL -Wall -Wstrict-prototypes -Wmissing-prototypes -Wshadow -Wconversion +%define CC_STRICT %{CC_NORMAL} -W -Wbad-function-cast -Wcast-align -Wcast-qual -Wmissing-declarations -Wnested-externs -Wpointer-arith -Wwrite-strings -ansi -pedantic + +%description -n mingw32-ncurses6-examples +Cross-compiling support for ncurses to mingw32. + +The ncurses library routines are a terminal-independent method of +updating character screens with reasonable optimization. + +This package is used for testing ABI 6 with cross-compiles to MinGW. + +%package -n mingw64-ncurses6-examples +Summary: Curses library for MinGW64 + +%description -n mingw64-ncurses6-examples +Cross-compiling support for ncurses to mingw64. + +The ncurses library routines are a terminal-independent method of +updating character screens with reasonable optimization. + +This package is used for testing ABI 6 with cross-compiles to MinGW. + +%prep + +# override location of bindir, e.g., to avoid conflict with pdcurses +%global mingw32_bindir %{mingw32_exec_prefix}/bin/%{AppProgram} +%global mingw64_bindir %{mingw64_exec_prefix}/bin/%{AppProgram} + +%global mingw32_datadir %{mingw32_datadir}/%{AppProgram} +%global mingw64_datadir %{mingw64_datadir}/%{AppProgram} + +%define CFG_OPTS \\\ + --enable-echo \\\ + --enable-warnings \\\ + --verbose \\\ + --with-screen=ncursesw6 + +%define debug_package %{nil} +%setup -q -n ncurses-examples-%{release} + +%build +mkdir BUILD-W32 +pushd BUILD-W32 +CFLAGS="%{CC_NORMAL}" \ +CC=%{mingw32_cc} \ +NCURSES_CONFIG_SUFFIX=dev \ +%mingw32_configure %{CFG_OPTS} \ + --datadir=%{mingw32_datadir} +make +popd + +mkdir BUILD-W64 +pushd BUILD-W64 +CFLAGS="%{CC_NORMAL}" \ +CC=%{mingw64_cc} \ +%mingw64_configure %{CFG_OPTS} \ + --datadir=%{mingw32_datadir} +make +popd + +%install +rm -rf $RPM_BUILD_ROOT + +pushd BUILD-W32 +%{mingw32_make} install DESTDIR=$RPM_BUILD_ROOT +popd + +pushd BUILD-W64 +%{mingw64_make} install DESTDIR=$RPM_BUILD_ROOT +popd + +%clean +if rm -rf $RPM_BUILD_ROOT; then + echo OK +else + find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1 +fi +exit 0 + +%defattr(-,root,root,-) + +%files -n mingw32-ncurses6-examples +%{mingw32_bindir}/* +%{mingw32_datadir}/* + +%files -n mingw64-ncurses6-examples +%{mingw64_bindir}/* +%{mingw64_datadir}/* + +%changelog + +* Sat Nov 16 2019 Thomas Dickey +- modify clean-rule to work around Fedora NFS bugs. + +* Sat Oct 19 2013 Thomas E. Dickey +- initial version diff --git a/deps/ncurses-6.3/test/package/ncurses-examples.spec b/deps/ncurses-6.3/test/package/ncurses-examples.spec new file mode 100644 index 0000000..d2b5a84 --- /dev/null +++ b/deps/ncurses-6.3/test/package/ncurses-examples.spec @@ -0,0 +1,118 @@ +Summary: example/test programs from ncurses +%global AppProgram ncurses-examples +%global AltProgram ncursest-examples +%global AppVersion MAJOR.MINOR +%global AppRelease YYYYMMDD +# $Id: ncurses-examples.spec,v 1.16 2019/11/23 21:11:34 tom Exp $ +Name: %{AppProgram} +Version: %{AppVersion} +Release: %{AppRelease} +License: MIT +Group: Applications/Development +URL: ftp://ftp.invisible-island.net/%{AppProgram} +Source0: %{AppProgram}-%{AppRelease}.tgz +Packager: Thomas Dickey <dickey@invisible-island.net> + +%description +These are the example/test programs from the ncurses MAJOR.MINOR distribution, +for patch-date YYYYMMDD. + +This package installs in "bin/%{AppProgram}" to avoid conflict with other +packages. + +%package -n %{AltProgram} +Summary: examples/test programs from ncurses with POSIX thread support + +%description -n %{AltProgram} +These are the example/test programs from the ncurses MAJOR.MINOR distribution, +for patch-date YYYYMMDD, using the "ncurseswt" library to demonstrate the +use of POSIX threads, e.g., in ditto, rain, and worm. + +This package installs in "bin/%{AltProgram}" to avoid conflict with other +packages. + +%prep + +%setup -q -n %{AppProgram}-%{AppRelease} + +%define debug_package %{nil} + +%build + +%global _configure ../configure +%define my_srcdir .. + +mkdir BUILD-%{AppProgram} +pushd BUILD-%{AppProgram} +INSTALL_PROGRAM='${INSTALL}' \ +NCURSES_CONFIG_SUFFIX=dev \ +CONFIGURE_TOP=%{my_srcdir} \ +%configure \ + --target %{_target_platform} \ + --prefix=%{_prefix} \ + --bindir=%{_bindir}/%{AppProgram} \ + --datadir=%{_datadir}/%{AppProgram} \ + --with-screen=ncursesw6dev \ + --disable-rpath-hack + +make +popd + +mkdir BUILD-%{AltProgram} +pushd BUILD-%{AltProgram} +INSTALL_PROGRAM='${INSTALL}' \ +NCURSES_CONFIG_SUFFIX=dev \ +CONFIGURE_TOP=%{my_srcdir} \ +%configure \ + --target %{_target_platform} \ + --prefix=%{_prefix} \ + --bindir=%{_bindir}/%{AltProgram} \ + --datadir=%{_datadir}/%{AltProgram} \ + --with-screen=ncursestw6dev \ + --disable-rpath-hack + +make +popd + +%install +[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT + +pushd BUILD-%{AppProgram} +make install DESTDIR=$RPM_BUILD_ROOT +popd + +pushd BUILD-%{AltProgram} +make install DESTDIR=$RPM_BUILD_ROOT +popd + +%clean +if rm -rf $RPM_BUILD_ROOT; then + echo OK +else + find $RPM_BUILD_ROOT -type f | grep -F -v /.nfs && exit 1 +fi +exit 0 + +%files -n %{AppProgram} +%defattr(-,root,root) +%{_bindir}/%{AppProgram}/* +%{_datadir}/%{AppProgram}/* + +%files -n %{AltProgram} +%defattr(-,root,root) +%{_bindir}/%{AltProgram}/* +%{_datadir}/%{AltProgram}/* + +%changelog +# each patch should add its ChangeLog entries here + +* Sat Nov 16 2019 Thomas Dickey +- modify clean-rule to work around Fedora NFS bugs. + +* Sat Nov 11 2017 Thomas Dickey +- add example data-files +- use rpm built-in "configure" +- suppress debug-package + +* Thu Mar 25 2010 Thomas Dickey +- initial version diff --git a/deps/ncurses-6.3/test/padview.c b/deps/ncurses-6.3/test/padview.c new file mode 100644 index 0000000..fb1d9fc --- /dev/null +++ b/deps/ncurses-6.3/test/padview.c @@ -0,0 +1,539 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 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. * + ****************************************************************************/ +/* + * clone of view.c, using pads + * + * $Id: padview.c,v 1.18 2021/06/12 23:16:31 tom Exp $ + */ + +#include <test.priv.h> +#include <widechars.h> +#include <popup_msg.h> + +#include <sys/stat.h> +#include <time.h> + +#if HAVE_NEWPAD + +static GCC_NORETURN void finish(int sig); + +#define my_pair 1 + +static int shift = 0; +static bool try_color = FALSE; + +static char *fname; +static int num_lines; + +#if USE_WIDEC_SUPPORT +static bool n_option = FALSE; +#endif + +static GCC_NORETURN void usage(void); + +static void +failed(const char *msg) +{ + endwin(); + fprintf(stderr, "%s\n", msg); + ExitProgram(EXIT_FAILURE); +} + +static void +finish(int sig) +{ + endwin(); + ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS); +} + +static void +show_all(const char *tag, WINDOW *my_pad, int my_row) +{ + int i; + int digits; + char temp[BUFSIZ]; + time_t this_time; + + for (digits = 1, i = num_lines; i > 0; i /= 10) { + ++digits; + } + + wattrset(stdscr, COLOR_PAIR(my_pair)); + clear(); + + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "view %.*s", (int) strlen(tag), tag); + i = (int) strlen(temp); + _nc_SPRINTF(temp + i, _nc_SLIMIT(sizeof(temp) - (size_t) i) + " %.*s", (int) sizeof(temp) - i - 2, fname); + mvprintw(0, 0, "%.*s", COLS, temp); + this_time = time((time_t *) 0); + _nc_STRNCPY(temp, ctime(&this_time), (size_t) 30); + if ((i = (int) strlen(temp)) != 0) { + temp[--i] = 0; + mvprintw(0, COLS - i - 2, " %s", temp); + } + + for (i = 1; i < LINES; i++) { + int actual = my_row + i; + if (actual > num_lines) { + break; + } + mvprintw(i, 0, "%*d:", digits, actual); + } + wnoutrefresh(stdscr); + pnoutrefresh(my_pad, my_row, shift, 1, digits + 1, LINES - 1, COLS - 1); + doupdate(); +} + +static WINDOW * +read_file(const char *filename) +{ + FILE *fp; + int pass; + int k; + int height, width; + size_t j; + size_t len; + struct stat sb; + char *my_blob; + char **my_vec = 0; + WINDOW *my_pad; + + if (stat(filename, &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG) { + failed("input is not a file"); + } + + if (sb.st_size == 0) { + failed("input is empty"); + } + + if ((fp = fopen(filename, "r")) == 0) { + failed("cannot open input-file"); + } + + if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0) { + failed("cannot allocate memory for input-file"); + } + + len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp); + fclose(fp); + + if (len > (size_t) sb.st_size) + len = (size_t) sb.st_size; + my_blob[len] = '\0'; + + for (pass = 0; pass < 2; ++pass) { + char *base = my_blob; + k = 0; + for (j = 0; j < len; ++j) { + if (my_blob[j] == '\n') { + if (pass) { + my_vec[k] = base; + my_blob[j] = '\0'; + } + base = my_blob + j + 1; + ++k; + } + } + if (base != (my_blob + j)) { + if (pass) + my_vec[k] = base; + ++k; + } + num_lines = k; + if (pass == 0) { + if (((my_vec = typeCalloc(char *, (size_t) k + 2)) == 0)) { + failed("cannot allocate line-vector #1"); + } + } else { + if (my_vec[0] == NULL) + my_vec[0] = my_blob; + } + } + +#if USE_WIDEC_SUPPORT + if (!memcmp("\357\273\277", my_blob, 3)) { + char *s = my_blob + 3; + char *d = my_blob; + Trace(("trim BOM")); + do { + } while ((*d++ = *s++) != '\0'); + } +#endif + + height = num_lines; + width = (int) strlen(my_vec[0]); + for (k = 1; my_vec[k]; ++k) { + int check = (int) (my_vec[k] - my_vec[k - 1]); + if (width < check) + width = check; + } + width = (width + 1) * 5; + my_pad = newpad(height, width); + if (my_pad == 0) + failed("cannot allocate pad workspace"); + if (try_color) { + wattrset(my_pad, COLOR_PAIR(my_pair)); + wbkgd(my_pad, (chtype) (' ' | COLOR_PAIR(my_pair))); + } + + /* + * Use the curses library for rendering, including tab-conversion. + */ + Trace(("slurp the file")); + for (k = 0; my_vec[k]; ++k) { + char *s; +#if USE_WIDEC_SUPPORT + char *last = my_vec[k] + (int) strlen(my_vec[k]); + wchar_t wch[2]; + size_t rc; +#ifndef state_unused + mbstate_t state; +#endif +#endif /* USE_WIDEC_SUPPORT */ + + wmove(my_pad, k, 0); +#if USE_WIDEC_SUPPORT + wch[1] = 0; + reset_mbytes(state); +#endif + for (s = my_vec[k]; *s != '\0'; ++s) { +#if USE_WIDEC_SUPPORT + if (!n_option) { + rc = (size_t) check_mbytes(wch[0], s, (size_t) (last - s), state); + if ((long) rc == -1 || (long) rc == -2) { + break; + } + s += rc - 1; + waddwstr(my_pad, wch); + } else +#endif + waddch(my_pad, *s & 0xff); + } + } + + free(my_vec); + free(my_blob); + + return my_pad; +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: view [options] file" + ,"" + ,"Options:" + ," -c use color if terminal supports it" + ," -i ignore INT, QUIT, TERM signals" +#if USE_WIDEC_SUPPORT + ," -n use waddch (bytes) rather then wadd_wch (wide-chars)" +#endif + ," -s start in single-step mode, waiting for input" +#ifdef TRACE + ," -t trace screen updates" + ," -T NUM specify trace mask" +#endif + }; + size_t n; + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + static const char *help[] = + { + "Commands:", + " q,^Q,ESC - quit this program", + "", + " p,<Up> - scroll the viewport up by one row", + " n,<Down> - scroll the viewport down by one row", + " l,<Left> - scroll the viewport left by one column", + " r,<Right> - scroll the viewport right by one column", + " <,> - scroll the viewport left/right by 8 columns", + "", + " h,<Home> - scroll the viewport to top of file", + " ^F,<PageDn> - scroll to the next page", + " ^B,<PageUp> - scroll to the previous page", + " e,<End> - scroll the viewport to end of file", + "", + " ^L - repaint using redrawwin()", + "", + " 0 through 9 - enter digits for count", + " s - use entered count for halfdelay() parameter", + " - if no entered count, stop nodelay()", + " <space> - begin nodelay()", + 0 + }; + + int i; + int my_delay = 0; + WINDOW *my_pad; + int my_row = 0; + int value = 0; + bool done = FALSE; + bool got_number = FALSE; + bool ignore_sigs = FALSE; + bool single_step = FALSE; + const char *my_label = "Input"; + + setlocale(LC_ALL, ""); + + while ((i = getopt(argc, argv, "cinstT:")) != -1) { + switch (i) { + case 'c': + try_color = TRUE; + break; + case 'i': + ignore_sigs = TRUE; + break; +#if USE_WIDEC_SUPPORT + case 'n': + n_option = TRUE; + break; +#endif + case 's': + single_step = TRUE; + break; +#ifdef TRACE + case 'T': + { + char *next = 0; + int tvalue = (int) strtol(optarg, &next, 0); + if (tvalue < 0 || (next != 0 && *next != 0)) + usage(); + curses_trace((unsigned) tvalue); + } + break; + case 't': + curses_trace(TRACE_CALLS); + break; +#endif + default: + usage(); + } + } + if (optind + 1 != argc) + usage(); + + InitAndCatch(initscr(), ignore_sigs ? SIG_IGN : finish); + 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) noecho(); /* don't echo input */ + if (!single_step) + nodelay(stdscr, TRUE); + idlok(stdscr, TRUE); /* allow use of insert/delete line */ + + if (try_color) { + if (has_colors()) { + start_color(); + init_pair(my_pair, COLOR_WHITE, COLOR_BLUE); + bkgd((chtype) (' ' | COLOR_PAIR(my_pair))); + } else { + try_color = FALSE; + } + } + + /* + * Do this after starting color, otherwise the pad's background will be + * uncolored after the ncurses 6.1.20181208 fixes. + */ + my_pad = read_file(fname = argv[optind]); + + my_row = 0; + while (!done) { + int n, c; + + if (!got_number) + show_all(my_label, my_pad, my_row); + + for (;;) { + c = getch(); + if ((c < 127) && isdigit(c)) { + if (!got_number) { + MvPrintw(0, 0, "Count: "); + clrtoeol(); + } + addch(UChar(c)); + value = 10 * value + (c - '0'); + got_number = TRUE; + } else + break; + } + if (got_number && value) { + n = value; + } else { + n = 1; + } + + if (c != ERR) + my_label = keyname(c); + switch (c) { + case KEY_DOWN: + case 'n': + for (i = 0; i < n; i++) + if (my_row < (num_lines - LINES + 1)) + my_row++; + else + break; + break; + + case KEY_UP: + case 'p': + for (i = 0; i < n; i++) + if (my_row > 0) + my_row--; + else + break; + break; + + case 'h': + /* FALLTHRU */ + case KEY_HOME: + my_row = 0; + break; + + case '<': + if ((shift -= 8) < 0) + shift = 0; + break; + case '>': + shift += 8; + break; + + case 'e': + /* FALLTHRU */ + case KEY_END: + if (num_lines > LINES) + my_row = (num_lines - LINES + 1); + else + my_row = (num_lines - 2); + break; + + case CTRL('F'): + /* FALLTHRU */ + case KEY_NPAGE: + for (i = 0; i < n; i++) { + if (my_row < (num_lines - 5)) + my_row += (LINES - 1); + else + my_row = (num_lines - 2); + } + break; + + case CTRL('B'): + /* FALLTHRU */ + case KEY_PPAGE: + for (i = 0; i < n; i++) { + if (my_row >= LINES) + my_row -= (LINES - 1); + else + my_row = 0; + } + break; + + case 'r': + case KEY_RIGHT: + shift += n; + break; + + case 'l': + case KEY_LEFT: + shift -= n; + if (shift < 0) { + shift = 0; + beep(); + } + break; + + case 'q': + case QUIT: + case ESCAPE: + done = TRUE; + break; + +#ifdef KEY_RESIZE + case KEY_RESIZE: /* ignore this; ncurses will repaint */ + break; +#endif + case 's': +#if HAVE_HALFDELAY + if (got_number) { + halfdelay(my_delay = n); + } else { + nodelay(stdscr, FALSE); + my_delay = -1; + } +#else + nodelay(stdscr, FALSE); + my_delay = -1; +#endif + break; + case ' ': + nodelay(stdscr, TRUE); + my_delay = 0; + break; + case CTRL('L'): + redrawwin(stdscr); + break; + case ERR: + if (!my_delay) + napms(50); + break; + case HELP_KEY_1: + popup_msg(stdscr, help); + break; + default: + beep(); + break; + } + if (c >= KEY_MIN || (c > 0 && !isdigit(c))) { + got_number = FALSE; + value = 0; + } + } + + finish(0); /* we're done */ +} +#else +int +main(void) +{ + printf("This program requires the curses pad functions\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/pair_content.c b/deps/ncurses-6.3/test/pair_content.c new file mode 100644 index 0000000..fc5926b --- /dev/null +++ b/deps/ncurses-6.3/test/pair_content.c @@ -0,0 +1,317 @@ +/**************************************************************************** + * Copyright 2018-2019,2020 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: pair_content.c,v 1.14 2020/02/02 23:34:34 tom Exp $ + */ + +#define NEED_TIME_H +#include <test.priv.h> + +#if USE_EXTENDED_COLOR +typedef int my_color_t; +#else +typedef NCURSES_COLOR_T my_color_t; +#endif + +typedef struct { + my_color_t fg; + my_color_t bg; +} MYPAIR; + +static int f_opt; +static int i_opt; +static int l_opt; +static int n_opt; +static int p_opt; +static int r_opt; +static int s_opt; + +#if USE_EXTENDED_COLOR +static int x_opt; +#endif + +static MYPAIR *expected; + +#if HAVE_GETTIMEOFDAY +static struct timeval initial_time; +static struct timeval finish_time; +#endif + +static void +failed(const char *msg) +{ + printw("%s", msg); + getch(); + endwin(); + ExitProgram(EXIT_FAILURE); +} + +#if USE_EXTENDED_COLOR +static int +InitPair(int pair, int fg, int bg) +{ + int rc; + if (x_opt) { + rc = init_extended_pair(pair, fg, bg); + } else { + rc = init_pair((NCURSES_PAIRS_T) pair, + (NCURSES_COLOR_T) fg, + (NCURSES_COLOR_T) bg); + } + return rc; +} + +static int +PairContent(int pair, int *fgp, int *bgp) +{ + int rc; + if (x_opt) { + rc = extended_pair_content(pair, fgp, bgp); + } else { + short fg, bg; + if ((rc = pair_content((short) pair, &fg, &bg)) == OK) { + *fgp = fg; + *bgp = bg; + } + } + return rc; +} +#else +#define InitPair(pair,fg,bg) init_pair((NCURSES_COLOR_T)pair,(NCURSES_COLOR_T)fg,(NCURSES_COLOR_T)bg) +#define PairContent(pair,fgp,bgp) pair_content((NCURSES_PAIRS_T)pair,fgp,bgp) +#endif + +static my_color_t +random_color(void) +{ + return (my_color_t) (rand() % COLORS); +} + +static void +setup_test(void) +{ + initscr(); + cbreak(); + noecho(); + scrollok(stdscr, TRUE); + if (has_colors()) { + start_color(); + + if (!f_opt) + f_opt = 1; + if (!l_opt) + l_opt = COLOR_PAIRS; + if (l_opt <= 1) + failed("color-pair limit must be greater than one"); + + if (!n_opt) { + int pair; + size_t need = (size_t) ((l_opt > COLOR_PAIRS) + ? l_opt + : COLOR_PAIRS) + 1; + + expected = typeCalloc(MYPAIR, need); + if (s_opt) { + my_color_t fg; + my_color_t bg; + pair = f_opt; + for (fg = 0; fg < COLORS; ++fg) { + for (bg = 0; bg < COLORS; ++bg) { + if (pair < l_opt) { + InitPair(pair, fg, bg); + expected[pair].fg = (my_color_t) fg; + expected[pair].bg = (my_color_t) bg; + ++pair; + } else { + break; + } + } + } + } else { + for (pair = f_opt; pair < l_opt; ++pair) { + expected[pair].fg = random_color(); + expected[pair].bg = random_color(); + InitPair(pair, expected[pair].fg, expected[pair].bg); + } + } + } + } else { + failed("This demo requires a color terminal"); + } +#if HAVE_GETTIMEOFDAY + gettimeofday(&initial_time, 0); +#endif +} + +static void +run_test(void) +{ + int pair; + bool success = TRUE; + for (pair = 1; pair < l_opt; ++pair) { + my_color_t fg; + my_color_t bg; + if (PairContent(pair, &fg, &bg) == OK) { + if (expected != 0) { + if (fg != expected[pair].fg) + success = FALSE; + if (bg != expected[pair].bg) + success = FALSE; + } + } + } + if (i_opt) { + addch(success ? '.' : '?'); + refresh(); + } +} + +static void +finish_test(void) +{ + getch(); + endwin(); +} + +#if HAVE_GETTIMEOFDAY +static double +seconds(struct timeval *mark) +{ + double result = (double) mark->tv_sec; + result += ((double) mark->tv_usec / 1e6); + return result; +} +#endif + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: pair_content [options]" + ,"" + ,"Options:" + ," -f PAIR first color pair to test (default: 1)" + ," -i interactive, showing test-progress" + ," -l PAIR last color pair to test (default: max_pairs-1)" + ," -n do not initialize color pairs" + ," -p print data for color pairs instead of testing" + ," -r COUNT repeat for given count" + ," -s initialize pairs sequentially rather than random" +#if USE_EXTENDED_COLOR + ," -x use extended color pairs/values" +#endif + }; + size_t n; + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int i; + + while ((i = getopt(argc, argv, "f:il:npr:sx")) != -1) { + switch (i) { + case 'f': + if ((f_opt = atoi(optarg)) <= 0) + usage(); + break; + case 'i': + i_opt = 1; + break; + case 'l': + if ((l_opt = atoi(optarg)) <= 0) + usage(); + break; + case 'n': + n_opt = 1; + break; + case 'p': + p_opt = 1; + break; + case 'r': + if ((r_opt = atoi(optarg)) <= 0) + usage(); + break; + case 's': + s_opt = 1; + break; +#if USE_EXTENDED_COLOR + case 'x': + x_opt = 1; + break; +#endif + default: + usage(); + } + } + if (optind < argc) + usage(); + if (r_opt <= 0) + r_opt = 1; + + setup_test(); + if (p_opt) { + endwin(); + for (i = f_opt; i < l_opt; ++i) { + my_color_t fg, bg; + if (PairContent(i, &fg, &bg) == OK) { + printf("%d: %d %d\n", i, fg, bg); + } else { + printf("%d: ? ?\n", i); + } + } + } else { + int repeat; + + for (repeat = 0; repeat < r_opt; ++repeat) { + run_test(); + if (i_opt) { + addch('.'); + refresh(); + } + } + + if (i_opt) { + addch('\n'); + } + printw("DONE: "); +#if HAVE_GETTIMEOFDAY + gettimeofday(&finish_time, 0); + printw("%.03f seconds", + seconds(&finish_time) + - seconds(&initial_time)); +#endif + finish_test(); + } + + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-6.3/test/parse_rgb.h b/deps/ncurses-6.3/test/parse_rgb.h new file mode 100644 index 0000000..df315b5 --- /dev/null +++ b/deps/ncurses-6.3/test/parse_rgb.h @@ -0,0 +1,98 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * * + * 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. * + ****************************************************************************/ +/* + * $Id: parse_rgb.h,v 1.5 2020/02/02 23:34:34 tom Exp $ + * + * Sample implementation of ncurses RGB extension from user_caps(5). + */ +#ifndef PARSE_RBG_H_incl +#define PARSE_RBG_H_incl 1 + +#include <test.priv.h> + +#if HAVE_TIGETSTR && USE_WIDEC_SUPPORT +static int +parse_rgb(int *r_max, int *g_max, int *b_max) +{ + int colors = tigetnum("colors"); + int result = ERR; + + *r_max = *g_max = *b_max = 0; + + if (colors > 0) { + int max_bits; + int bits; + int pwr2; + int r = 0, g = 0, b = 0; + char *data; + char ch; + + for (max_bits = 0, pwr2 = 1; + pwr2 < colors; + ++max_bits, pwr2 <<= 1) { + ; + } + + if (tigetflag("RGB") > 0) { + result = OK; + r = g = b = (max_bits + 2) / 3; + } else if ((bits = tigetnum("RGB")) > 0) { + result = OK; + r = g = b = bits; + } else if ((data = tigetstr("RGB")) != ABSENT_STRING + && data != CANCELLED_STRING + && sscanf(data, "%d/%d/%d%c", &r, &g, &b, &ch) == 3) { + result = OK; + } + + if ((r + g + b) < max_bits) { + result = ERR; + } else if (result == 0) { + if (r > max_bits) { + r = max_bits; + g = b = 0; + } + *r_max = r; + if (g > (max_bits -= r)) { + g = max_bits; + b = 0; + } + *g_max = g; + if (b > (max_bits -= g)) { + b = max_bits; + } + *b_max = b; + } + } + return result; +} +#else +#define parse_rgb(r,g,b) (ERR) +#endif + +#endif /* PARSE_RBG_H_incl */ diff --git a/deps/ncurses-6.3/test/picsmap.c b/deps/ncurses-6.3/test/picsmap.c new file mode 100644 index 0000000..f95747f --- /dev/null +++ b/deps/ncurses-6.3/test/picsmap.c @@ -0,0 +1,1776 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2017,2018 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. * + ****************************************************************************/ +/* + * $Id: picsmap.c,v 1.139 2021/05/08 15:56:05 tom Exp $ + * + * Author: Thomas E. Dickey + * + * A little more interesting than "dots", read a simple image into memory and + * measure the time taken to paint it normally vs randomly. + * + * TODO improve use of rgb-names using tsearch. + * + * TODO add option to dump picture in non-optimized mode, e.g., like tput. + * TODO write cells/second to stderr (or log) + * TODO write picture left-to-right/top-to-bottom + * TODO write picture randomly + * TODO add one-shot option vs repeat-count before exiting + * TODO add option "-xc" for init_color vs init_extended_color + * TODO add option "-xa" for init_pair vs alloc_pair + * TODO use pad to allow pictures larger than screen + * TODO add option to just use convert (which can scale) vs builtin xbm/xpm. + * TODO add scr_dump and scr_restore calls + * TODO add option for assume_default_colors + */ +#include <test.priv.h> + +#include <sys/types.h> +#include <sys/stat.h> + +#if HAVE_STDINT_H +#include <stdint.h> +#define my_intptr_t intptr_t +#else +#define my_intptr_t long +#endif + +#if HAVE_TSEARCH +#include <search.h> +#endif + +#undef CUR /* use only the curses interface */ + +#define L_BLOCK '[' +#define R_BLOCK ']' + +#define L_CURLY '{' +#define R_CURLY '}' + +#define MaxSCALE 1000 /* input curses ranges 0..1000 */ +#define MaxRGB 255 /* output color ranges 0..255 */ +#define okCOLOR(n) ((n) >= 0 && (n) < COLORS) +#define okSCALE(n) ((n) >= 0 && (n) <= MaxSCALE) +#define Scaled256(n) (NCURSES_COLOR_T) (int)(((double)(n) * MaxSCALE) / 255) +#define ScaledColor(n) (NCURSES_COLOR_T) (int)(((double)(n) * MaxSCALE) / scale) + +#ifndef RGB_PATH +#define RGB_PATH "/etc/X11/rgb.txt" +#endif + +#include <picsmap.h> + +typedef struct { + size_t file; + size_t name; + size_t list; + size_t data; + size_t head; + size_t pair; + size_t cell; +} HOW_MUCH; + +#undef MAX +#define MAX(a,b) ((a)>(b)?(a):(b)) + +/* + * tfind will return null on failure, so we map subscripts starting at one. + */ +#define P2I(n) (((int)(my_intptr_t)(n)) - 1) +#define I2P(n) (void *)(my_intptr_t)((n) + 1) + +#define pause_curses() if (in_curses) stop_curses() + +#define debugmsg if (debugging) logmsg +#define debugmsg2 if (debugging) logmsg2 + +static GCC_NORETURN void cleanup(int); +static void giveup(const char *fmt, ...) GCC_PRINTFLIKE(1, 2); +static void logmsg(const char *fmt, ...) GCC_PRINTFLIKE(1, 2); +static void logmsg2(const char *fmt, ...) GCC_PRINTFLIKE(1, 2); +static void warning(const char *fmt, ...) GCC_PRINTFLIKE(1, 2); +static int gather_c_values(int); + +static FILE *logfp = 0; +static double aspect_ratio = 0.6; +static bool in_curses = FALSE; +static bool debugging = FALSE; +static bool quiet = FALSE; +static int slow_time = -1; +static RGB_NAME *rgb_table; +static RGB_DATA *all_colors; +static HOW_MUCH how_much; + +static int reading_last; +static int reading_size; +static FG_NODE *reading_ncols; + +#if HAVE_TSEARCH +static void *reading_ntree; +#endif + +#if HAVE_ALLOC_PAIR && USE_EXTENDED_COLOR +#define USE_EXTENDED_COLORS 1 +static bool use_extended_pairs = FALSE; +static bool use_extended_colors = FALSE; +#else +#define USE_EXTENDED_COLORS 0 +#endif + +static void +logmsg(const char *fmt, ...) +{ + if (logfp != 0) { + va_list ap; + va_start(ap, fmt); + vfprintf(logfp, fmt, ap); + va_end(ap); + fputc('\n', logfp); + fflush(logfp); + } +} + +static void +logmsg2(const char *fmt, ...) +{ + if (logfp != 0) { + va_list ap; + va_start(ap, fmt); + vfprintf(logfp, fmt, ap); + va_end(ap); + fflush(logfp); + } +} + +static void +close_log(void) +{ + if (logfp != 0) { + logmsg("Allocations:"); + logmsg("%8ld file", (long) how_much.file); + logmsg("%8ld name", (long) how_much.name); + logmsg("%8ld list", (long) how_much.list); + logmsg("%8ld data", (long) how_much.data); + logmsg("%8ld head", (long) how_much.head); + logmsg("%8ld pair", (long) how_much.pair); + logmsg("%8ld cell", (long) how_much.cell); + logmsg("%8ld window", LINES * COLS * (long) sizeof(NCURSES_CH_T)); + fclose(logfp); + logfp = 0; + } +} + +static void +cleanup(int code) +{ + pause_curses(); + close_log(); + ExitProgram(code); + /* NOTREACHED */ +} + +static void +failed(const char *msg) +{ + int save = errno; + perror(msg); + logmsg("failed with %s", strerror(save)); + cleanup(EXIT_FAILURE); +} + +static void +warning(const char *fmt, ...) +{ + if (logfp != 0) { + va_list ap; + va_start(ap, fmt); + vfprintf(logfp, fmt, ap); + va_end(ap); + fputc('\n', logfp); + fflush(logfp); + } else { + va_list ap; + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + va_end(ap); + fputc('\n', stderr); + cleanup(EXIT_FAILURE); + } +} + +static void +free_data(char **data) +{ + if (data != 0) { + free(data[0]); + free(data); + } +} + +static PICS_HEAD * +free_pics_head(PICS_HEAD * pics) +{ + if (pics != 0) { + free(pics->fgcol); + free(pics->cells); + free(pics->name); + free(pics); + pics = 0; + } + return pics; +} + +static void +begin_c_values(int size) +{ + reading_last = 0; + reading_size = size; + reading_ncols = typeCalloc(FG_NODE, size + 1); + how_much.pair += (sizeof(FG_NODE) * (size_t) size); + /* black is always the first slot, to work around P2I/I2P logic */ + gather_c_values(0); +} + +#if HAVE_TSEARCH +static int +compare_c_values(const void *p, const void *q) +{ + const int a = P2I(p); + const int b = P2I(q); + return (reading_ncols[a].fgcol - reading_ncols[b].fgcol); +} + +#ifdef DEBUG_TSEARCH +static void +check_c_values(int ln) +{ + static int oops = 5; + FG_NODE **ft; + int n; + for (n = 0; n < reading_last; ++n) { + ft = tfind(I2P(n), &reading_ntree, compare_c_values); + if (ft != 0) { + int q = P2I(*ft); + if (reading_ncols[q].fgcol != reading_ncols[n].fgcol) { + logmsg("@%d, %d:%d (%d) %d %d fgcol %06X %06X", ln, n, + reading_last - 1, + reading_size, + q, n, + reading_ncols[n].fgcol, + reading_ncols[q].fgcol); + } + } else { + logmsg("@%d, %d:%d (%d) ? %d null %06X", ln, n, + reading_last - 1, + reading_size, + n, + reading_ncols[n].fgcol); + if (oops-- <= 0) + return; + } + } +} +#else +#define check_c_values(n) /* nothing */ +#endif +#endif + +static int +gather_c_values(int fg) +{ + int found = -1; +#if HAVE_TSEARCH + FG_NODE **ft; + int next = reading_last; + + reading_ncols[next].fgcol = fg; + reading_ncols[next].count = 0; + + check_c_values(__LINE__); + if ((ft = tfind(I2P(next), &reading_ntree, compare_c_values)) != 0) { + found = P2I(*ft); + } else { + if (reading_last + 2 >= reading_size) { + int more = ((MAX(reading_last, reading_size) + 2) * 3) / 2; + int last = reading_last + 1; + FG_NODE *p = typeRealloc(FG_NODE, more, reading_ncols); + if (p == 0) + goto done; + + reading_size = more; + reading_ncols = p; + memset(reading_ncols + last, 0, + sizeof(FG_NODE) * (size_t) (more - last)); + check_c_values(__LINE__); + } + ++reading_last; + how_much.pair += sizeof(FG_NODE); + if ((ft = tsearch(I2P(next), &reading_ntree, compare_c_values)) != 0) { + found = P2I(*ft); + if (found != next) + logmsg("OOPS expected slot %d, got %d", next, found); + debugmsg("allocated color #%d as #%06X", next, fg); + check_c_values(__LINE__); + } + } +#else + int n; + + for (n = 0; n < reading_last; ++n) { + if (reading_ncols[n].fgcol == fg) { + found = n; + break; + } + } + if (found < 0) { + if (reading_last + 2 >= reading_size) { + int more = ((reading_last + 2) * 3) / 2; + FG_NODE *p = typeRealloc(FG_NODE, more, reading_ncols); + if (p == 0) + goto done; + + how_much.pair -= (sizeof(FG_NODE) * (size_t) reading_size); + how_much.pair += (sizeof(FG_NODE) * (size_t) more); + reading_size = more; + reading_ncols = p; + memset(reading_ncols + reading_last, 0, + sizeof(FG_NODE) * (size_t) (more - reading_last)); + } + reading_ncols[reading_last].fgcol = fg; + found = reading_last++; + } +#endif + done: + return found; +} + +static void +finish_c_values(PICS_HEAD * head) +{ + head->colors = reading_last; + head->fgcol = reading_ncols; + + reading_last = 0; + reading_size = 0; + reading_ncols = 0; +} + +static void +dispose_c_values(void) +{ +#if HAVE_TSEARCH + if (reading_ntree != 0) { + int n; + for (n = 0; n < reading_last; ++n) { + tdelete(I2P(n), &reading_ntree, compare_c_values); + } + reading_ntree = 0; + } +#endif + if (reading_ncols != 0) { + free(reading_ncols); + reading_ncols = 0; + } + reading_last = 0; + reading_size = 0; +} + +static int +is_file(const char *filename, struct stat *sb) +{ + int result = 0; + if (stat(filename, sb) == 0 + && (sb->st_mode & S_IFMT) == S_IFREG + && sb->st_size != 0) { + result = 1; + } + debugmsg("is_file(%s) %d", filename, result); + return result; +} + +/* + * Simplify reading xbm/xpm files by first making an array of lines. Blank + * lines are filtered out. + */ +static char ** +read_file(const char *filename) +{ + char **result = 0; + struct stat sb; + + if (!quiet) { + pause_curses(); + printf("** %s\n", filename); + } + + if (is_file(filename, &sb)) { + size_t size = (size_t) sb.st_size; + char *blob = typeCalloc(char, size + 1); + bool binary = FALSE; + unsigned k = 0; + + result = typeCalloc(char *, size + 1); + how_much.file += ((size + 1) * 2); + + if (blob != 0 && result != 0) { + FILE *fp = fopen(filename, "r"); + if (fp != 0) { + logmsg("opened %s", filename); + + if (fread(blob, sizeof(char), size, fp) == size) { + bool had_line = TRUE; + unsigned j; + + for (j = 0; (size_t) j < size; ++j) { + if (blob[j] == '\0' || + (UChar(blob[j]) < 32 && + !isspace(UChar(blob[j]))) || + (UChar(blob[j]) >= 128 && UChar(blob[j]) < 160)) { + binary = TRUE; + } + if (blob[j] == '\n') { + blob[j] = '\0'; + if (k && !binary) { + debugmsg2("[%5d] %s\n", k, result[k - 1]); + } + had_line = TRUE; + } else if (had_line) { + had_line = FALSE; + result[k++] = blob + j; + } + } + result[k] = 0; + if (k && !binary) { + debugmsg2("[%5d] %s\n", k, result[k - 1]); + } + } + fclose(fp); + } else { + logmsg("cannot open %s", filename); + } + } + if (k == 0) { + debugmsg("...file is empty"); + free(blob); + free(result); + result = 0; + } else if (binary) { + debugmsg("...file is non-text"); + } + } + return result; +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: picsmap [options] [imagefile [...]]" + ,"Read/display one or more xbm/xpm files (possibly use \"convert\")" + ,"" + ,"Options:" + ," -a ratio aspect-ratio correction for ImageMagick" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -L add debugging information to logfile" + ," -l logfile write informational messages to logfile" + ," -p palette color-palette file (default \"$TERM.dat\")" + ," -q less verbose" + ," -r rgb-path xpm uses X rgb color-names (default \"" RGB_PATH "\")" + ," -s SECS pause for SECS seconds after display vs getch" +#if USE_EXTENDED_COLORS + ," -x [pc] use extension (p=extended-pairs, c=extended-colors)" + ," Either/both extension may be given" +#endif + }; + size_t n; + + pause_curses(); + + fflush(stdout); + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + cleanup(EXIT_FAILURE); +} + +static void +giveup(const char *fmt, ...) +{ + va_list ap; + + pause_curses(); + fflush(stdout); + + va_start(ap, fmt); + vfprintf(stderr, fmt, ap); + fputc('\n', stderr); + va_end(ap); + + if (logfp) { + va_start(ap, fmt); + vfprintf(logfp, fmt, ap); + fputc('\n', logfp); + va_end(ap); + fflush(logfp); + } + + usage(); +} + +/* + * Palette files are named for $TERM values. However, there are fewer palette + * files than $TERM's. Although there are known problems (some cannot even get + * black and white correct), for the purpose of comparison, pretending that + * those map into "xterm" is useful. + */ +static char ** +read_palette(const char *filename) +{ + static const char *data_dir = DATA_DIR; + char **result = 0; + size_t last = strlen(filename); + size_t need = (strlen(data_dir) + 20 + last); + char *full_name = malloc(need); + char *s; + struct stat sb; + + if (full_name != 0) { + int tries; + for (tries = 0; tries < 8; ++tries) { + + *(s = full_name) = '\0'; + if (tries & 1) { + if (strchr(filename, '/') == 0) { + _nc_SPRINTF(full_name, _nc_SLIMIT(need) "%s/", data_dir); + } else { + continue; + } + } + s += strlen(s); + if (((size_t) (s - full_name) + last + 1) >= need) + continue; + + _nc_STRCAT(full_name, filename, need); + if (tries & 4) { + char *t = s; + char *tc; + int num; + char chr; + int found = 0; + while (*t != '\0') { + if (*t == '-') { + if (sscanf(t, "-%d%c", &num, &chr) == 2 && + chr == 'c' && + (tc = strchr(t, chr)) != 0 && + !(strncmp) (tc, "color", 5)) { + found = 1; + } + break; + } + ++t; + } + if (found && (t != s) + && (strncmp) (s, "xterm", (size_t) (t - s))) { + _nc_SPRINTF(s, _nc_SLIMIT(need - (size_t) (s - full_name)) + "xterm%s", filename + (t - s)); + } else { + continue; + } + } + + if (tries & 2) { + int len = (int) strlen(filename); + if (len <= 4 || strcmp(filename + len - 4, ".dat")) { + _nc_STRCAT(full_name, ".dat", need); + } else { + continue; + } + } + if (is_file(full_name, &sb)) + goto ok; + } + goto failed; + ok: + result = read_file(full_name); + failed: + free(full_name); + } + return result; +} + +static void +init_palette(const char *palette_file) +{ + if (palette_file != 0) { + char **data = read_palette(palette_file); + + all_colors = typeMalloc(RGB_DATA, (unsigned) COLORS); + how_much.data += (sizeof(RGB_DATA) * (unsigned) COLORS); + +#if HAVE_COLOR_CONTENT + { + int cp; + for (cp = 0; cp < COLORS; ++cp) { + color_content((short) cp, + &all_colors[cp].red, + &all_colors[cp].green, + &all_colors[cp].blue); + } + } +#else + memset(all_colors, 0, sizeof(RGB_DATA) * (size_t) COLORS); +#endif + if (data != 0) { + int n; + int red, green, blue; + int scale = MaxSCALE; + int c; + for (n = 0; data[n] != 0; ++n) { + if (sscanf(data[n], "scale:%d", &c) == 1) { + scale = c; + } else if (sscanf(data[n], "%d:%d %d %d", + &c, + &red, + &green, + &blue) == 4 + && okCOLOR(c) + && okSCALE(red) + && okSCALE(green) + && okSCALE(blue)) { + /* *INDENT-EQLS* */ + all_colors[c].red = ScaledColor(red); + all_colors[c].green = ScaledColor(green); + all_colors[c].blue = ScaledColor(blue); + } + } + } + free_data(data); + /* *INDENT-EQLS* */ + } else if (COLORS > 1) { + int power2 = 1; + int shift = 0; + + while (power2 < COLORS) { + ++shift; + power2 <<= 1; + } + + if ((power2 != COLORS) || ((shift % 3) != 0)) { + if (all_colors == 0) { + init_palette(getenv("TERM")); + if (all_colors == 0) { + giveup("With %d colors, you need a palette-file", COLORS); + } + } + } + } +} + +/* + * Map the 24-bit RGB value to a color index if using a palette, otherwise to a + * direct color value. + */ +static int +map_color(int value) +{ + int result = value; + + if (result < 0) { + result = -1; + } else { + /* *INDENT-EQLS* */ + int red = (value & 0xff0000) >> 16; + int green = (value & 0x00ff00) >> 8; + int blue = (value & 0x0000ff) >> 0; + + if (all_colors != 0) { +#define Diff2(n,m) ((m) - all_colors[n].m) * ((m) - all_colors[n].m) +#define Diff2S(n) Diff2(n,red) + Diff2(n,green) + Diff2(n,blue) + int d2 = Diff2S(0); + int n; + + /* *INDENT-EQLS* */ + red = Scaled256(red); + green = Scaled256(green); + blue = Scaled256(blue); + + for (result = 0, n = 1; n < COLORS; ++n) { + int d = Diff2(n, red) + Diff2(n, green) + Diff2(n, blue); + if (d < d2) { + d2 = d; + result = n; + } + } + } else { /* direct color */ + int power2 = 1; + int shifts = 8; + + while (power2 < COLORS) { + power2 <<= 3; + shifts--; + } + + if (shifts > 0) { + /* TODO: round up */ + red >>= shifts; + green >>= shifts; + blue >>= shifts; + result = ((red << (2 * (8 - shifts))) + + (green << (8 - shifts)) + + blue); + } + } + } + return result; +} + +static int +bytes_of(int value) +{ + if (value & 7) { + value |= 7; + value++; + } + return value; +} + +static int match_c(const char *, const char *, ...) GCC_SCANFLIKE(2,3); + +static char * +skip_s(char *s) +{ + while (isspace(UChar(*s))) + s++; + return s; +} + +static const char * +skip_cs(const char *s) +{ + while (isspace(UChar(*s))) + s++; + return s; +} + +static char * +skip_word(char *s) +{ + s = skip_s(s); + while (isgraph(UChar(*s))) + s++; + return s; +} + +static int +match_c(const char *source, const char *pattern, ...) +{ + int limit = (int) strlen(source); + const char *last_s = source + limit; + va_list ap; + int ch; + int *ip; + char *cp; + long lv; + + va_start(ap, pattern); + + limit = -1; + while (*pattern != '\0') { + ch = UChar(*pattern++); + /* blank in the pattern matches zero-or-more blanks in source */ + if (isspace(ch)) { + source = skip_cs(source); + continue; + } + /* %c, %d, %s are like sscanf except for special treatment of blanks */ + if (ch == '%' && *pattern != '\0' && strchr("cdnsx", *pattern)) { + bool found = FALSE; + ch = *pattern++; + switch (ch) { + case 'c': + cp = va_arg(ap, char *); + do { + *cp++ = *source++; + } while (--limit > 0); + break; + case 'd': + case 'x': + limit = -1; + ip = va_arg(ap, int *); + lv = strtol(source, &cp, ch == 'd' ? 10 : 16); + if (cp != 0 && cp != source) { + *ip = (int) lv; + source = cp; + } else { + goto finish; + } + break; + case 'n': + /* not really sscanf... */ + limit = *va_arg(ap, int *); + break; + case 's': + limit = -1; + cp = va_arg(ap, char *); + while (*source != '\0') { + ch = UChar(*source); + if (isspace(ch)) { + break; + } else if (found && (ch == *skip_cs(pattern))) { + break; + } else { + *cp++ = *source++; + found = TRUE; + } + } + *cp = '\0'; + break; + } + continue; + } + /* other characters are matched literally */ + if (*source++ != ch) { + break; + } + } + finish: + + va_end(ap); + if (source > last_s) + source = last_s; + return (*source || *pattern) ? 0 : 1; +} + +static int +match_colors(const char *source, int cpp, char *arg1, char *arg2, char *arg3) +{ + int result = 0; + + /* most files use a quasi-fixed format */ + if (match_c(source, " \"%n%c %s %s \" , ", &cpp, arg1, arg2, arg3)) { + arg1[cpp] = '\0'; + result = 1; + } else { + const char *s = skip_cs(source); + size_t have = strlen(source); + + if (*s++ == '"' && have > ((size_t) cpp + 2)) { + memcpy(arg1, s, (size_t) cpp); + s += cpp; + while (*s++ == '\t') { + char *t; + for (t = arg2; (*s != '\0') && strchr("\t\"", *s) == 0;) { + if (*s == ' ') { + s = skip_cs(s); + break; + } + *t++ = *s++; + *t = '\0'; + } + for (t = arg3; (*s != '\0') && strchr("\t\"", *s) == 0;) { + *t++ = *s++; + *t = '\0'; + } + if (!strcmp(arg2, "c")) { + result = 1; + break; + } + } + } + } + return result; +} + +static RGB_NAME * +parse_rgb(char **data) +{ + char buf[BUFSIZ]; + int n; + unsigned long r, g, b; + char *s, *t; + size_t item = 0; + size_t need; + RGB_NAME *result = 0; + + for (need = 0; data[need] != 0; ++need) ; + + result = typeCalloc(RGB_NAME, need + 2); + how_much.name += (sizeof(RGB_NAME) * (need + 2)); + + for (n = 0; data[n] != 0; ++n) { + if (strlen(t = data[n]) >= sizeof(buf) - 1) + continue; + if (*(s = skip_s(t)) == '!') + continue; + + r = strtoul(s, &t, 10); + s = skip_s(t); + g = strtoul(s, &t, 10); + s = skip_s(t); + b = strtoul(s, &t, 10); + s = skip_s(t); + + result[item].name = s; + t = s + strlen(s); + while (t-- != s && isspace(UChar(*t))) { + *t = '\0'; + } + result[item].value = (int) ((r & 0xff) << 16 | + (g & 0xff) << 8 | + (b & 0xff)); + ++item; + } + + result[item].name = "none"; + result[item].value = -1; + + return result; +} + +#define LOWERCASE(c) ((isalpha(UChar(c)) && isupper(UChar(c))) ? tolower(UChar(c)) : (c)) + +static int +CaselessCmp(const char *a, const char *b) +{ /* strcasecmp isn't portable */ + while (*a && *b) { + int cmp = LOWERCASE(*a) - LOWERCASE(*b); + if (cmp != 0) + break; + a++, b++; + } + return LOWERCASE(*a) - LOWERCASE(*b); +} + +static RGB_NAME * +lookup_rgb(const char *name) +{ + RGB_NAME *result = 0; + if (rgb_table != 0) { + int n; + for (n = 0; rgb_table[n].name != 0; ++n) { + if (!CaselessCmp(name, rgb_table[n].name)) { + result = &rgb_table[n]; + break; + } + } + } + return result; +} + +static PICS_HEAD * +parse_xbm(char **data) +{ + int n; + int state = 0; + char buf[2048]; + int num; + char ch; + char *s; + char *t; + PICS_HEAD *result; + size_t which = 0; + size_t cells = 0; + + debugmsg("called parse_xbm"); + + result = typeCalloc(PICS_HEAD, 1); + how_much.head += sizeof(PICS_HEAD); + + begin_c_values(2); + gather_c_values(0); + gather_c_values(0xffffff); + + for (n = 0; data[n] != 0; ++n) { + if (strlen(s = data[n]) >= sizeof(buf) - 1) + continue; + switch (state) { + case 0: + case 1: + case 2: + if (sscanf(s, "#define %1024s %d%c", buf, &num, &ch) >= 2) { + if ((t = strstr(buf, "_width")) != 0) { + state |= 1; + result->wide = (short) bytes_of(num); + } else if ((t = strstr(buf, "_height")) != 0) { + state |= 2; + result->high = (short) num; + } else { + break; + } + *t = '\0'; + if (result->name) { + if (strcmp(result->name, buf)) { + goto finish; + } + } else { + result->name = strdup(buf); + } + } + break; + case 3: + if (sscanf(s, "static char %1024[^_ ]_bits[]%c", buf, &ch) >= 1) { + if (strcmp(result->name, buf)) { + goto finish; + } + state = 4; + cells = (size_t) (result->wide * result->high); + + result->cells = typeCalloc(PICS_CELL, cells); + how_much.cell += (sizeof(PICS_CELL) * cells); + + if ((s = strchr(s, L_CURLY)) == 0) + break; + ++s; + } else { + break; + } + case 4: + while (*s != '\0') { + while (isspace(UChar(*s))) { + ++s; + } + if (isdigit(UChar(*s))) { + long value = strtol(s, &t, 0); + int b; + if (t != s || value > MaxRGB || value < 0) { + s = t; + } else { + state = -1; + goto finish; + } + for (b = 0; b < 8; ++b) { + if (((1L << b) & value) != 0) { + result->cells[which].ch = '*'; + result->cells[which].fg = 1; + reading_ncols[1].count++; + } else { + result->cells[which].ch = ' '; + result->cells[which].fg = 0; + reading_ncols[0].count++; + } + if (++which > cells) { + state = -1; + goto finish; + } + } + } + if (*s == R_CURLY) { + state = 5; + goto finish; + } else if (*s == ',') { + ++s; + } + } + break; + default: + break; + } + } + finish: + if (state < 4) { + debugmsg("...state was only %d", state); + if (result) { + result = free_pics_head(result); + } + } else { + finish_c_values(result); + } + return result; +} + +static PICS_HEAD * +parse_xpm(char **data) +{ + int state = 0; + PICS_HEAD *result; + RGB_NAME *by_name; + int n; + int cells = 0; + int cpp = 1; /* chars per pixel */ + int num[6]; + int found; + int which = 0; + int num_colors = 0; + char ch; + const char *cs; + char *s; + char buf[BUFSIZ]; + char arg1[BUFSIZ]; + char arg2[BUFSIZ]; + char arg3[BUFSIZ]; + char **list = 0; + + debugmsg("called parse_xpm"); + + result = typeCalloc(PICS_HEAD, 1); + how_much.head += sizeof(PICS_HEAD); + + for (n = 0; data[n] != 0; ++n) { + if (strlen(s = data[n]) >= sizeof(buf) - 1) + continue; + switch (state) { + case 0: + if (match_c(s, " /* XPM */ ")) { + state = 1; + } + break; + case 1: + if (match_c(s, " static char * %s [] = %c ", arg1, &ch) && + ch == L_CURLY) { + result->name = strdup(arg1); + state = 2; + } + break; + case 2: + if (match_c(s, " \" %d %d %d %d \" , ", + num + 0, num + 1, num + 2, num + 3) || + match_c(s, " \" %d %d %d %d %d %d \" , ", + num + 0, num + 1, num + 2, num + 3, num + 4, num + 5)) { + result->wide = (short) num[0]; + result->high = (short) num[1]; + result->colors = num[2]; + + begin_c_values(num[2]); + + cells = (result->wide * result->high); + + result->cells = typeCalloc(PICS_CELL, cells); + how_much.cell += sizeof(PICS_CELL) * (size_t) cells; + + list = typeCalloc(char *, result->colors + 1); + how_much.list += sizeof(char *) * (size_t) (result->colors + 1); + + cpp = num[3]; + state = 3; + } + break; + case 3: + if (!match_colors(s, cpp, arg1, arg2, arg3)) { + break; + } + num_colors++; + free(list[reading_last]); + list[reading_last] = strdup(arg1); + if ((by_name = lookup_rgb(arg3)) != 0) { + found = gather_c_values(by_name->value); + } else if (*arg3 == '#') { + char *rgb = arg3 + 1; + unsigned long value = strtoul(rgb, &s, 16); + switch ((int) strlen(rgb)) { + case 6: + break; + case 12: + value = (((value >> 24) & 0xff0000L) + | ((value >> 16) & 0xff00L) + | ((value >> 8) & 0xffL)); + break; + default: + warning("unexpected rgb value %s", rgb); + break; + } + found = gather_c_values((int) value); + } else { + found = gather_c_values(0); /* actually an error */ + } + debugmsg(" [%d:%d] %06X", num_colors, result->colors, + reading_ncols[(found >= 0) ? found : 0].fgcol); + if (num_colors >= result->colors) { + finish_c_values(result); + state = 4; + if (list[0] == 0) + list[0] = strdup("\033"); + } + break; + case 4: + if (*(cs = skip_cs(s)) == '"') { + ++cs; + while (*cs != '\0' && *cs != '"') { + int c; + + /* FIXME - factor out */ + for (c = 0; c < result->colors; ++c) { + if (list[c] == 0) { + /* should not happen... */ + continue; + } + if (!(strncmp) (cs, list[c], (size_t) cpp)) { + result->cells[which].ch = list[c][0]; + result->cells[which].fg = c; + result->fgcol[c].count++; + break; + } + } + + if (result->cells[which].ch == 0) { + result->cells[which].ch = '?'; + result->cells[which].fg = 0; + } + + if (++which >= cells) { + state = 5; + break; + } + for (c = cpp; c > 0; --c, ++cs) { + if (*cs == '\0') + break; + } + } + } + break; + } + } + + if (result && list) { + for (n = 0; n < result->colors; ++n) + free(list[n]); + free(list); + } + + if (state < 5) { + debugmsg("...state was only %d", state); + result = free_pics_head(result); + } + + if (result) { + debugmsg("...allocated %d colors", result->colors); + } + + return result; +} + +/* + * The obscurely-named "convert" is provided by ImageMagick + */ +static PICS_HEAD * +parse_img(const char *filename) +{ + size_t need = strlen(filename) + 256; + char *cmd = malloc(need); + FILE *pp; + char buffer[BUFSIZ]; + char dummy[BUFSIZ]; + bool okay = TRUE; + PICS_HEAD *result; + int pic_x = 0; + int pic_y = 0; + int width = in_curses ? COLS : 80; + + _nc_SPRINTF(cmd, _nc_SLIMIT(need) "identify \"%s\"", filename); + if (quiet) + _nc_STRCAT(cmd, " 2>/dev/null", need); + + logmsg("...opening pipe to %s", cmd); + + result = typeCalloc(PICS_HEAD, 1); + how_much.head += sizeof(PICS_HEAD); + + if ((pp = popen(cmd, "r")) != 0) { + if (fgets(buffer, sizeof(buffer), pp) != 0) { + size_t n = strlen(filename); + debugmsg2("...read %s", buffer); + if (strlen(buffer) > n && + !(strncmp) (buffer, filename, n) && + isspace(UChar(buffer[n])) && + sscanf(skip_word(buffer + n), " %dx%d ", &pic_x, &pic_y) == 2) { + /* distort image to make it show normally on terminal */ + pic_x = (int) ((double) pic_x / aspect_ratio); + } else { + pic_x = pic_y = 0; + } + } + pclose(pp); + } + if (pic_x <= 0 || pic_y <= 0) + goto finish; + + _nc_SPRINTF(cmd, _nc_SLIMIT(need) + "convert " "-resize %dx%d\\! " "-thumbnail %dx \"%s\" " + "-define txt:compliance=SVG txt:-", + pic_x, pic_y, width, filename); + if (quiet) + _nc_STRCAT(cmd, " 2>/dev/null", need); + + logmsg("...opening pipe to %s", cmd); + if ((pp = popen(cmd, "r")) != 0) { + int count = 0; + int col = 0; + int row = 0; + int len = 0; + while (fgets(buffer, sizeof(buffer), pp) != 0) { + debugmsg2("[%5d] %s", count + 1, buffer); + if (strlen(buffer) > 160) { /* 80 columns would be enough */ + okay = FALSE; + break; + } + if (count++ == 0) { + if (match_c(buffer, + "# ImageMagick pixel enumeration: %d,%d,%d,%s ", + &col, &row, &len, dummy)) { + result->name = strdup(filename); + result->wide = (short) col; + result->high = (short) row; + + begin_c_values(256); + + result->cells = typeCalloc(PICS_CELL, (size_t) (col * row)); + how_much.cell += (sizeof(PICS_CELL) * (size_t) (col * row)); + } else { + okay = FALSE; + break; + } + } else { + /* subsequent lines begin "col,row: (r,g,b,a) #RGB" */ + int r, g, b, nocolor; + unsigned check; + char *t; + char *s = t = strchr(buffer, '#'); + + if (s != 0) { + /* after the "#RGB", there are differences - just ignore */ + while (*s != '\0' && !isspace(UChar(*s))) + ++s; + *++s = '\0'; + } + if (match_c(buffer, + "%d,%d: (%d,%d,%d,%d) #%x ", + &col, &row, + &r, &g, &b, &nocolor, + &check)) { + int which, c; + + if ((s - t) > 8) /* 6 hex digits vs 8 */ + check /= 256; + if (r > MaxRGB || + g > MaxRGB || + b > MaxRGB || + check != (unsigned) ((r << 16) | (g << 8) | b)) { + okay = FALSE; + break; + } + c = gather_c_values((int) check); + which = col + (row * result->wide); + result->cells[which].ch = ((in_curses || + check == 0xffffff) + ? ' ' + : '#'); + if (c >= 0 && c < reading_last) { + result->cells[which].fg = c; + reading_ncols[c].count++; + } else { + result->cells[which].fg = -1; + } + } else { + okay = FALSE; + break; + } + } + } + finish_c_values(result); + pclose(pp); + if (okay) { + /* FIXME - is this trimming needed? */ + for (len = result->colors; len > 3; len--) { + if (result->fgcol[len - 1].fgcol == 0) { + result->colors = len - 1; + } else { + break; + } + } + } + } + finish: + free(cmd); + + if (!okay) { + result = free_pics_head(result); + } + + return result; +} + +static PICS_HEAD * +read_picture(const char *filename, char **data) +{ + PICS_HEAD *pics; + if ((pics = parse_xbm(data)) == 0) { + dispose_c_values(); + if ((pics = parse_xpm(data)) == 0) { + dispose_c_values(); + if ((pics = parse_img(filename)) == 0) { + dispose_c_values(); + free_data(data); + warning("unexpected file-format for \"%s\"", filename); + } else if (pics->high == 0 || pics->wide == 0) { + dispose_c_values(); + free_data(data); + pics = free_pics_head(pics); + warning("no picture found in \"%s\"", filename); + } + } + } + return pics; +} + +#define fg_color(pics,n) (pics->fgcol[n].fgcol) + +static void +dump_picture(PICS_HEAD * pics) +{ + int y, x; + + printf("Name %s\n", pics->name); + printf("Size %dx%d\n", pics->high, pics->wide); + printf("Color\n"); + for (y = 0; y < pics->colors; ++y) { + if (fg_color(pics, y) < 0) { + printf(" %3d: %d\n", y, fg_color(pics, y)); + } else { + printf(" %3d: #%06x\n", y, fg_color(pics, y)); + } + } + for (y = 0; y < pics->high; ++y) { + for (x = 0; x < pics->wide; ++x) { + putchar(pics->cells[y * pics->wide + x].ch); + } + putchar('\n'); + } +} + +#ifndef USE_DISPLAY_DRIVER +static void +init_display(const char *palette_path, int opt_d) +{ + (void) opt_d; + if (isatty(fileno(stdout))) { + in_curses = TRUE; + initscr(); + cbreak(); + noecho(); + curs_set(0); + if (has_colors()) { + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (opt_d) + use_default_colors(); +#endif + init_palette(palette_path); + } + scrollok(stdscr, FALSE); + stop_curses(); + } +} + +static void +show_picture(PICS_HEAD * pics) +{ + int y, x; + int n; + + debugmsg("called show_picture"); + logmsg("...using %dx%d screen", LINES, COLS); +#if HAVE_RESET_COLOR_PAIRS + reset_color_pairs(); +#elif HAVE_CURSCR + wclear(curscr); + clear(); +#endif + if (has_colors()) { + logmsg("...using %d colors", pics->colors); + for (n = 0; n < pics->colors; ++n) { + int my_pair = (n + 1); + int my_color = map_color(fg_color(pics, n)); +#if USE_EXTENDED_COLORS + if (use_extended_pairs) { + init_extended_pair(my_pair, my_color, my_color); + } else +#endif + { + my_pair &= 0x7fff; + my_color &= 0x7fff; + init_pair((short) my_pair, (short) my_color, (short) my_color); + } + } + attrset(COLOR_PAIR(1)); + erase(); + } + for (y = 0; y < pics->high; ++y) { + if (y >= LINES) + break; + move(y, 0); + + for (x = 0; x < pics->wide; ++x) { + int my_pair; + + if (x >= COLS) + break; + n = (y * pics->wide + x); + my_pair = pics->cells[n].fg + 1; +#if USE_EXTENDED_COLORS + if (use_extended_pairs) { + cchar_t temp; + wchar_t wch[2]; + wch[0] = (wchar_t) pics->cells[n].ch; + wch[1] = 0; + setcchar(&temp, wch, A_NORMAL, (short) my_pair, &my_pair); + add_wch(&temp); + } else +#endif + { + attrset(COLOR_PAIR(my_pair)); + addch((chtype) pics->cells[n].ch); + } + } + } + if (slow_time >= 0) { + refresh(); + if (slow_time > 0) { +#ifdef NCURSES_VERSION + napms(1000 * slow_time); +#else + sleep((unsigned) slow_time); +#endif + } + } else { + wmove(stdscr, 0, 0); + getch(); + } + if (!quiet) + endwin(); +} +#endif + +static int +compare_fg_counts(const void *a, const void *b) +{ + const FG_NODE *p = (const FG_NODE *) a; + const FG_NODE *q = (const FG_NODE *) b; + return (q->count - p->count); +} + +static void +report_colors(PICS_HEAD * pics) +{ + int accum; + double level; + int j; + int shift; + int total; + char buffer[256]; + + if (logfp == 0) + return; + + qsort(pics->fgcol, (size_t) pics->colors, sizeof(FG_NODE), compare_fg_counts); + /* + * For debugging, show a (short) list of the colors used. + */ + if (debugging && (pics->colors < 1000)) { + int digits = 0; + int high; + int wide = 4; + for (j = pics->colors; j != 0; j /= 10) { + ++digits; + if (j < 10) + ++digits; + } + if (digits > 8) + digits = 8; + logmsg("These colors were used:"); + high = (pics->colors + wide - 1) / wide; + for (j = 0; j < high && j < pics->colors; ++j) { + int k; + char *s = buffer; + *s = '\0'; + for (k = 0; k < wide; ++k) { + int n = j + (k * high); + size_t want = (sizeof(buffer) - (size_t) (s - buffer)); + if (want < 100 || want >= sizeof(buffer)) + break; + if (n >= pics->colors) + break; + if (k) { + *s++ = ' '; + if (digits < 8) { + _nc_SPRINTF(s, _nc_SLIMIT(want) "%*s", 8 - digits, + " "); + s += strlen(s); + } + } + if (pics->fgcol[n].fgcol >= 0) { + _nc_SPRINTF(s, _nc_SLIMIT(want) "%3d #%06X %*d", n, + pics->fgcol[n].fgcol, + digits, pics->fgcol[n].count); + } else { + _nc_SPRINTF(s, _nc_SLIMIT(want) "%3d (empty) %*d", n, + digits, pics->fgcol[n].count); + } + s += strlen(s); + if ((s - buffer) > 100) + break; + } + logmsg("%s", buffer); + } + } + + /* + * Given the list of colors sorted by the number of times they are used, + * log a short report showing the number of colors for 90%, 99%, 99.9%, + * etc. + */ + logmsg("Number of colors versus number of cells"); + total = pics->high * pics->wide; + accum = 0; + level = 0.1; + shift = 1; + for (j = 0; j < pics->colors; ++j) { + accum += pics->fgcol[j].count; + if (accum >= (total * (1.0 - level))) { + int after = (shift > 2) ? shift - 2 : 0; + logmsg("%8d colors (%.1f%%) in %d cells (%.*f%%)", + j + 1, + (100.0 * (j + 1)) / pics->colors, + accum, + after, (100.0 * accum) / total); + if (accum >= total) + break; + level /= 10.0; + shift++; + } + } +} + +int +main(int argc, char *argv[]) +{ + int n; + int opt_d = FALSE; + char ignore_ch; + const char *palette_path = 0; + const char *rgb_path = RGB_PATH; + + while ((n = getopt(argc, argv, "a:dLl:p:qr:s:x:")) != -1) { + switch (n) { + case 'a': + if (sscanf(optarg, "%lf%c", &aspect_ratio, &ignore_ch) != 1 + || aspect_ratio < 0.1 + || aspect_ratio > 10.) { + fprintf(stderr, "Expected a number in [0.1 to 10.]: %s\n", optarg); + usage(); + } + break; +#if HAVE_USE_DEFAULT_COLORS + case 'd': + opt_d = TRUE; + break; +#endif + case 'L': + debugging = TRUE; + break; + case 'l': + if ((logfp = fopen(optarg, "a")) == 0) + failed(optarg); + break; + case 'p': + palette_path = optarg; + break; + case 'q': + quiet = TRUE; + break; + case 'r': + rgb_path = optarg; + break; + case 's': + slow_time = atoi(optarg); + break; +#if USE_EXTENDED_COLORS + case 'x': + { + char *s = optarg; + while (*s) { + switch (*s++) { + case 'p': + use_extended_pairs = TRUE; + break; + case 'c': + use_extended_colors = TRUE; + break; + default: + usage(); + break; + } + } + } + break; +#endif + default: + usage(); + break; + } + } + + if (optind < argc) { + char **rgb_data = read_file(rgb_path); + + if (rgb_data) + rgb_table = parse_rgb(rgb_data); + + init_display(palette_path, opt_d); + if (optind >= argc) + giveup("expected at least one image filename"); + + for (n = optind; n < argc; ++n) { + PICS_HEAD *pics; + char **data = read_file(argv[n]); + + if (data == 0) { + warning("cannot read \"%s\"", argv[n]); + continue; + } + if ((pics = read_picture(argv[n], data)) != 0) { + if (in_curses) { + show_picture(pics); + } else { + dump_picture(pics); + } + report_colors(pics); + dispose_c_values(); + free_data(data); + free_pics_head(pics); + } + } + free_data(rgb_data); + free(rgb_table); + free(all_colors); + } else { + usage(); + } + + cleanup(EXIT_SUCCESS); +} diff --git a/deps/ncurses-6.3/test/picsmap.h b/deps/ncurses-6.3/test/picsmap.h new file mode 100644 index 0000000..fc790a9 --- /dev/null +++ b/deps/ncurses-6.3/test/picsmap.h @@ -0,0 +1,71 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 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: Thomas E. Dickey * + ****************************************************************************/ +/* $Id: picsmap.h,v 1.5 2021/04/24 23:25:17 tom Exp $ */ + +#ifndef PICSMAP_H_INCL +#define PICSMAP_H_INCL 1 + +typedef int NUM_COLOR; +typedef unsigned short NUM_COUNT; + +typedef struct { + char ch; /* nominal character to display */ + NUM_COLOR fg; /* foreground color */ +} PICS_CELL; + +typedef struct { + NUM_COLOR fgcol; + NUM_COUNT count; +} FG_NODE; + +typedef struct { + char *name; + short high; + short wide; + int colors; + FG_NODE *fgcol; + PICS_CELL *cells; +} PICS_HEAD; + +typedef struct { + const char *name; + int value; +} RGB_NAME; + +typedef struct { + short red; + short green; + short blue; +} RGB_DATA; + +#endif /* PICSMAP_H_INCL */ diff --git a/deps/ncurses-6.3/test/popup_msg.c b/deps/ncurses-6.3/test/popup_msg.c new file mode 100644 index 0000000..5c0e5ba --- /dev/null +++ b/deps/ncurses-6.3/test/popup_msg.c @@ -0,0 +1,184 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 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. * + ****************************************************************************/ +/* + * $Id: popup_msg.c,v 1.10 2020/02/02 23:34:34 tom Exp $ + * + * Show a multi-line message in a window which may extend beyond the screen. + * + * Thomas Dickey - 2017/4/15. + */ + +#include <test.priv.h> + +#include <popup_msg.h> + +#if HAVE_NEWPAD + +static WINDOW *old_window; + +static void +begin_popup(void) +{ + doupdate(); + old_window = dupwin(curscr); +} + +static void +end_popup(void) +{ + touchwin(old_window); + wnoutrefresh(old_window); + doupdate(); + delwin(old_window); +} + +/* + * Display a temporary window, e.g., to display a help-message. + */ +void +popup_msg(WINDOW *parent, const char *const *msg) +{ + int x0 = 4; + int y0 = 2; + int y1 = 0; + int y2 = 0; + int wide = getmaxx(parent) - ((x0 + 1) * 2); + int high = getmaxy(parent) - ((y0 + 1) * 2); + WINDOW *help; + WINDOW *data; + int n; + int width = 0; + int length; + int last_y; + int ch = ERR; + + for (n = 0; msg[n] != 0; ++n) { + int check = (int) strlen(msg[n]); + if (width < check) + width = check; + } + length = n; + + if ((help = newwin(high, wide, y0, x0)) == 0) + return; + if ((data = newpad(length + 1, width)) == 0) { + delwin(help); + return; + } + + begin_popup(); + + keypad(data, TRUE); + + for (n = 0; n < length; ++n) { + waddstr(data, msg[n]); + if ((n + 1) < length) { + waddch(data, '\n'); + } + } + y2 = getcury(data); + last_y = (y2 - (high - 3)); + + do { + switch (ch) { + case KEY_HOME: + y1 = 0; + break; + case KEY_END: + y1 = last_y; + break; + case KEY_PREVIOUS: + case KEY_PPAGE: + if (y1 > 0) { + y1 -= high / 2; + if (y1 < 0) + y1 = 0; + } else { + beep(); + } + break; + case KEY_NEXT: + case KEY_NPAGE: + if (y1 < last_y) { + y1 += high / 2; + if (y1 > last_y) + y1 = last_y; + } else { + beep(); + } + break; + case CTRL('P'): + case KEY_UP: + if (y1 > 0) + --y1; + else + beep(); + break; + case CTRL('N'): + case KEY_DOWN: + if (y1 < last_y) + ++y1; + else + beep(); + break; + default: + beep(); + break; + case ERR: + break; + } + werase(help); + box(help, 0, 0); + wnoutrefresh(help); + pnoutrefresh(data, y1, 0, y0 + 1, x0 + 1, high, wide); + doupdate(); + } while ((ch = wgetch(data)) != ERR && ch != QUIT && ch != ESCAPE); + werase(help); + wrefresh(help); + delwin(help); + delwin(data); + + end_popup(); +} + +void +popup_msg2(WINDOW *parent, char **msg) +{ + popup_msg(parent, (const char *const *) msg); +} + +#else +void +popup_msg(WINDOW *parent, const char *const *msg) +{ + (void) parent; + (void) msg; + beep(); +} +#endif diff --git a/deps/ncurses-6.3/test/popup_msg.h b/deps/ncurses-6.3/test/popup_msg.h new file mode 100644 index 0000000..88dff73 --- /dev/null +++ b/deps/ncurses-6.3/test/popup_msg.h @@ -0,0 +1,43 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 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. * + ****************************************************************************/ +/* + * $Id: popup_msg.h,v 1.5 2020/02/02 23:34:34 tom Exp $ + * + * Utility functions for a popup-message or help-screen. + */ + +#ifndef POPUP_MSG_H_incl +#define POPUP_MSG_H_incl 1 + +#include <test.priv.h> + +extern void popup_msg(WINDOW *parent, const char *const *msg); +extern void popup_msg2(WINDOW *parent, char **msg); + +#endif /* POPUP_MSG_H_incl */ diff --git a/deps/ncurses-6.3/test/programs b/deps/ncurses-6.3/test/programs new file mode 100644 index 0000000..6946faa --- /dev/null +++ b/deps/ncurses-6.3/test/programs @@ -0,0 +1,116 @@ +# $Id: programs,v 1.49 2021/03/13 20:37:44 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 2006-2016,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: Thomas E. Dickey +# +# programs used for ncurses tests +back_ground $(LDFLAGS_CURSES) $(LOCAL_LIBS) back_ground dump_window +background $(LDFLAGS_CURSES) $(LOCAL_LIBS) background dump_window +blue $(LDFLAGS_CURSES) $(LOCAL_LIBS) blue +bs $(LDFLAGS_CURSES) $(LOCAL_LIBS) bs +cardfile $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) cardfile +chgat $(LDFLAGS_CURSES) $(LOCAL_LIBS) chgat popup_msg +clip_printw $(LDFLAGS_CURSES) $(LOCAL_LIBS) clip_printw popup_msg +color_content $(LDFLAGS_CURSES) $(LOCAL_LIBS) color_content +color_set $(LDFLAGS_CURSES) $(LOCAL_LIBS) color_set +demo_altkeys $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_altkeys +demo_defkey $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_defkey +demo_forms $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_forms edit_field popup_msg +demo_keyok $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_keyok +demo_menus $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_menus +demo_new_pair $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_new_pair popup_msg +demo_panels $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) demo_panels +demo_tabs $(LDFLAGS_CURSES) $(LOCAL_LIBS) demo_tabs +demo_termcap $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_termcap +demo_terminfo $(LDFLAGS_TINFO) $(LOCAL_LIBS) demo_terminfo +ditto $(LDFLAGS_THREADS) $(LOCAL_LIBS) ditto +dots $(LDFLAGS_TINFO) $(LOCAL_LIBS) dots +dots_curses $(LDFLAGS_CURSES) $(LOCAL_LIBS) dots_curses +dots_mvcur $(LDFLAGS_CURSES) $(LOCAL_LIBS) dots_mvcur +dots_termcap $(LDFLAGS_TINFO) $(LOCAL_LIBS) dots_termcap +dots_xcurses $(LDFLAGS_CURSES) $(LOCAL_LIBS) dots_xcurses +dup_field $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) dup_field edit_field popup_msg +echochar $(LDFLAGS_CURSES) $(LOCAL_LIBS) echochar +extended_color $(LDFLAGS_CURSES) $(LOCAL_LIBS) extended_color +filter $(LDFLAGS_CURSES) $(LOCAL_LIBS) filter +firework $(LDFLAGS_CURSES) $(LOCAL_LIBS) firework +firstlast $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) firstlast +foldkeys $(LDFLAGS_CURSES) $(LOCAL_LIBS) foldkeys +form_driver_w $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) form_driver_w popup_msg +gdc $(LDFLAGS_CURSES) $(LOCAL_LIBS) gdc +hanoi $(LDFLAGS_CURSES_M) $(LOCAL_LIBS) hanoi +hashtest $(LDFLAGS_CURSES) $(LOCAL_LIBS) hashtest +inch_wide $(LDFLAGS_CURSES) $(LOCAL_LIBS) inch_wide popup_msg +inchs $(LDFLAGS_CURSES) $(LOCAL_LIBS) inchs popup_msg +ins_wide $(LDFLAGS_CURSES) $(LOCAL_LIBS) ins_wide +insdelln $(LDFLAGS_CURSES) $(LOCAL_LIBS) insdelln popup_msg +inserts $(LDFLAGS_CURSES) $(LOCAL_LIBS) inserts +key_names $(LDFLAGS_CURSES) $(LOCAL_LIBS) key_names +keynames $(LDFLAGS_CURSES) $(LOCAL_LIBS) keynames +knight $(LDFLAGS_CURSES) $(LOCAL_LIBS) knight +list_keys $(LDFLAGS_TINFO) $(LOCAL_LIBS) list_keys +lrtest $(LDFLAGS_CURSES) $(LOCAL_LIBS) lrtest +move_field $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) move_field edit_field popup_msg +movewindow $(LDFLAGS_CURSES) $(LOCAL_LIBS) movewindow popup_msg +ncurses $(LDFLAGS_DEFAULT) $(LOCAL_LIBS) ncurses +newdemo $(LDFLAGS_CURSES) $(LOCAL_LIBS) newdemo +padview $(LDFLAGS_CURSES) $(LOCAL_LIBS) padview popup_msg +pair_content $(LDFLAGS_CURSES) $(LOCAL_LIBS) pair_content +picsmap $(LDFLAGS_CURSES) $(LOCAL_LIBS) picsmap +railroad $(LDFLAGS_TINFO) $(LOCAL_LIBS) railroad +rain $(LDFLAGS_THREADS) $(LOCAL_LIBS) rain popup_msg +redraw $(LDFLAGS_CURSES) $(LOCAL_LIBS) redraw popup_msg +savescreen $(LDFLAGS_CURSES) $(LOCAL_LIBS) savescreen popup_msg +sp_tinfo $(LDFLAGS_TINFO) $(LOCAL_LIBS) sp_tinfo +tclock $(LDFLAGS_CURSES_M) $(LOCAL_LIBS) tclock +test_add_wchstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_add_wchstr +test_addchstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addchstr +test_addstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addstr +test_addwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_addwstr +test_arrays $(LDFLAGS_TINFO) $(LOCAL_LIBS) test_arrays +test_get_wstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_get_wstr popup_msg +test_getstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_getstr popup_msg +test_instr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_instr +test_inwstr $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_inwstr +test_opaque $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_opaque +test_setupterm $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_setupterm +test_sgr $(LDFLAGS_TINFO) $(LOCAL_LIBS) test_sgr +test_termattrs $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_termattrs +test_tparm $(LDFLAGS_TINFO) $(LOCAL_LIBS) test_tparm +test_vid_puts $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_vid_puts +test_vidputs $(LDFLAGS_CURSES) $(LOCAL_LIBS) test_vidputs +testaddch $(LDFLAGS_CURSES) $(LOCAL_LIBS) testaddch +testcurs $(LDFLAGS_CURSES) $(LOCAL_LIBS) testcurs +testscanw $(LDFLAGS_CURSES) $(LOCAL_LIBS) testscanw +view $(LDFLAGS_CURSES) $(LOCAL_LIBS) view popup_msg +worm $(LDFLAGS_THREADS) $(LOCAL_LIBS) worm +xmas $(LDFLAGS_CURSES) $(LOCAL_LIBS) xmas + +# vile:makemode diff --git a/deps/ncurses-5.9/test/railroad.c b/deps/ncurses-6.3/test/railroad.c similarity index 91% rename from deps/ncurses-5.9/test/railroad.c rename to deps/ncurses-6.3/test/railroad.c index 973ec46..3336f56 100644 --- a/deps/ncurses-5.9/test/railroad.c +++ b/deps/ncurses-6.3/test/railroad.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2000-2008,2009 Free Software Foundation, Inc. * + * Copyright 2019,2020 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 * @@ -29,7 +30,7 @@ /* * Author: Thomas E. Dickey - 2000 * - * $Id: railroad.c,v 1.19 2009/10/24 21:37:56 tom Exp $ + * $Id: railroad.c,v 1.25 2020/09/05 21:43:37 tom Exp $ * * A simple demo of the termcap interface. */ @@ -55,20 +56,20 @@ static char *backup; static bool interrupted = FALSE; -static int -outc(TPUTS_ARG c) +static +TPUTS_PROTO(outc, c) { int rc = OK; if (interrupted) { char tmp = (char) c; - if (write(STDOUT_FILENO, &tmp, 1) == -1) + if (write(STDOUT_FILENO, &tmp, (size_t) 1) == -1) rc = ERR; } else { if (putc(c, stdout) == EOF) rc = ERR; } - return rc; + TPUTS_RETURN(rc); } static void @@ -113,7 +114,7 @@ static void ShowSign(char *string) { char *base = string; - int ch, first, last; + int first, last; if (moveit != 0) { tputs(tgoto(moveit, 0, height - 1), 1, outc); @@ -121,7 +122,7 @@ ShowSign(char *string) } while (*string != 0) { - ch = *string; + int ch = *string; if (ch != ' ') { if (moveit != 0) { for (first = length - 2; first >= (string - base); first--) { @@ -187,10 +188,17 @@ railroad(char **args) NCURSES_CONST char *name = getenv("TERM"); char buffer[1024]; char area[1024], *ap = area; + int z; if (name == 0) +#ifdef EXP_WIN32_DRIVER + name = "ms-terminal"; +#else name = "dumb"; - if (tgetent(buffer, name) >= 0) { +#endif + + InitAndCatch(z = tgetent(buffer, name), onsig); + if (z >= 0) { wipeit = tgetstr("ce", &ap); height = tgetnum("li"); @@ -220,8 +228,6 @@ railroad(char **args) MyShowCursor(0); - CATCHALL(onsig); - while (*args) { ShowSign(*args++); } diff --git a/deps/ncurses-5.9/test/rain.c b/deps/ncurses-6.3/test/rain.c similarity index 83% rename from deps/ncurses-5.9/test/rain.c rename to deps/ncurses-6.3/test/rain.c index 5f0cbfa..4c3568c 100644 --- a/deps/ncurses-5.9/test/rain.c +++ b/deps/ncurses-6.3/test/rain.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2009,2010 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-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 * @@ -26,9 +27,10 @@ * authorization. * ****************************************************************************/ /* - * $Id: rain.c,v 1.38 2010/11/13 20:11:46 tom Exp $ + * $Id: rain.c,v 1.52 2020/08/29 16:22:03 juergen Exp $ */ #include <test.priv.h> +#include <popup_msg.h> /* rain 11/3/1980 EPS/CITHEP */ @@ -66,11 +68,18 @@ typedef struct { static STATS drop_threads[MAX_THREADS]; #endif +#if HAVE_USE_WINDOW +static int +safe_wgetch(WINDOW *w, void *data GCC_UNUSED) +{ + return wgetch(w); +} +#endif + static void onsig(int n GCC_UNUSED) { - curs_set(1); - endwin(); + stop_curses(); ExitProgram(EXIT_FAILURE); } @@ -102,10 +111,7 @@ next_j(int j) --j; if (has_colors()) { int z = (int) (3 * ranf()); - chtype color = (chtype) COLOR_PAIR(z); - if (z) - color |= A_BOLD; - (void) attrset(color); + (void) attrset(AttrArg(COLOR_PAIR(z), (z ? A_BOLD : A_NORMAL))); } return j; } @@ -222,7 +228,7 @@ draw_drop(void *arg) * Find myself in the list of threads so we can count the number of loops. */ for (mystats = 0; mystats < MAX_THREADS; ++mystats) { -#ifdef __MINGW32__ +#if defined(_NC_WINDOWS) && !defined(__WINPTHREADS_VERSION) if (drop_threads[mystats].myself.p == pthread_self().p) #else if (drop_threads[mystats].myself == pthread_self()) @@ -256,7 +262,7 @@ draw_drop(void *arg) /* * The description of pthread_create() is misleading, since it implies that * threads will exit cleanly after their function returns. - * + * * Since they do not (and the number of threads is limited by system * resources), make a limited number of threads, and signal any that are * waiting when we want a thread past that limit. @@ -288,30 +294,76 @@ start_drop(DATA * data) static int get_input(void) { - return USING_WINDOW(stdscr, wgetch); + return USING_WINDOW1(stdscr, wgetch, safe_wgetch); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: rain [options]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); } int -main(int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) +main(int argc, char *argv[]) { + static const char *help[] = + { + "Commands:", + " q/Q exit the program", + " s do single-step", + " <space> undo single-step", + "", + 0 + }; + bool done = FALSE; DATA drop; #ifndef USE_PTHREADS DATA last[MAX_DROP]; #endif int j = 0; + int ch; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif - setlocale(LC_ALL, ""); + while ((ch = getopt(argc, argv, "d")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; +#endif + default: + usage(); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(); - CATCHALL(onsig); + setlocale(LC_ALL, ""); - initscr(); + InitAndCatch(initscr(), onsig); if (has_colors()) { int bg = COLOR_BLACK; start_color(); #if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) + if (d_option && (use_default_colors() == OK)) bg = -1; #endif init_pair(1, COLOR_BLUE, (short) bg); @@ -376,11 +428,17 @@ main(int argc GCC_UNUSED, case (KEY_RESIZE): break; #endif + case HELP_KEY_1: + popup_msg(stdscr, help); + break; + case ERR: + break; + default: + beep(); } napms(50); } - curs_set(1); - endwin(); + stop_curses(); #ifdef USE_PTHREADS printf("Counts per thread:\n"); for (j = 0; j < MAX_THREADS; ++j) diff --git a/deps/ncurses-6.3/test/redraw.c b/deps/ncurses-6.3/test/redraw.c new file mode 100644 index 0000000..b0840fb --- /dev/null +++ b/deps/ncurses-6.3/test/redraw.c @@ -0,0 +1,242 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2006-2012,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. * + ****************************************************************************/ +/* + * $Id: redraw.c,v 1.13 2021/06/17 21:26:02 tom Exp $ + * + * Demonstrate the redrawwin() and wredrawln() functions. + * Thomas Dickey - 2006/11/4 + */ + +#include <test.priv.h> +#include <popup_msg.h> + +static void +trash(int beg_x, int max_x, int cur_x) +{ + int x; + + for (x = cur_x; x > beg_x; --x) { + putchar('\b'); + } + for (x = beg_x; x < max_x; ++x) { + if (x < cur_x) + putchar('<'); + else if (x == cur_x) + putchar('='); + else if (x > cur_x) + putchar('>'); + } + for (x = max_x; x > cur_x; --x) { + putchar('\b'); + } + fflush(stdout); +} + +static void +test_redraw(WINDOW *win) +{ + static const char *help[] = + { + "Commands:", + " ^Q/ESC/q - quit", + " w - recur in a new window", + " ! - overwrite current line using stdio outside curses.", +#ifdef NCURSES_VERSION + " @ - run \"date\" command, to put its output on screen.", +#endif + " ^L - call redrawwin() for current window.", + " ^W - call wredrawln() for current line/current window.", + " arrow-keys - move cursor on the screen", + "", + "Other control characters are added to the screen in printable form.", + "Other printable characters are added to the screen as is.", + 0 + }; + + WINDOW *win1; + WINDOW *win2; + bool done = FALSE; + int max_y, max_x; + int beg_y, beg_x; + + assert(win != 0); + + scrollok(win, TRUE); + keypad(win, TRUE); + getmaxyx(win, max_y, max_x); + getbegyx(win, beg_y, beg_x); + + while (!done) { + int ch = wgetch(win); + int y, x; + + getyx(win, y, x); + switch (ch) { + case 'q': + /* FALLTHRU */ + case QUIT: + case ESCAPE: + done = TRUE; + break; + case 'w': + win1 = newwin(max_y, max_x, + beg_y, beg_x); + win2 = newwin(max_y - 2, max_x - 2, + beg_y + 1, beg_x + 1); + box(win1, 0, 0); + wrefresh(win1); + + test_redraw(win2); + + delwin(win2); + delwin(win1); + + touchwin(win); + break; + + case '!': + /* + * redrawwin() and wredrawln() do not take into account the + * possibility that the cursor may have moved. That makes them + * cumbersome for using with a shell command. So we simply + * trash the current line of the window using backspace/overwrite. + */ + trash(beg_x, max_x, x + beg_x); + break; + +#ifdef NCURSES_VERSION + case '@': + /* + * For a shell command, we can work around the problem noted above + * using mvcur(). It is ifdef'd for NCURSES, since X/Open does + * not define the case where the old location is unknown. + */ + IGNORE_RC(system("date")); + mvcur(-1, -1, y, x); + break; +#endif + + case CTRL('W'): + redrawwin(win); + break; + + case CTRL('L'): + wredrawln(win, y, 1); + break; + + case KEY_UP: + if (y > 0) + wmove(win, y - 1, x); + break; + + case KEY_DOWN: + if (y < max_y) + wmove(win, y + 1, x); + break; + + case KEY_LEFT: + if (x > 0) + wmove(win, y, x - 1); + break; + + case KEY_RIGHT: + if (x < max_x) + wmove(win, y, x + 1); + break; + + case HELP_KEY_1: + popup_msg(win, help); + break; + + default: + if (ch > KEY_MIN) { + waddstr(win, keyname(ch)); + waddch(win, '\n'); + } else { + waddstr(win, unctrl(UChar(ch))); + } + break; + } + wnoutrefresh(win); + doupdate(); + } +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: redraw [options]" + ,"" + ,"Options:" + ," -e use stderr (default stdout)" + ," -n do not initialize terminal" + }; + unsigned n; + for (n = 0; n < SIZEOF(tbl); ++n) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int ch; + bool no_init = FALSE; + FILE *my_fp = stdout; + + while ((ch = getopt(argc, argv, "en")) != -1) { + switch (ch) { + case 'e': + my_fp = stderr; + break; + case 'n': + no_init = TRUE; + break; + default: + usage(); + break; + } + } + if (optind < argc) + usage(); + + if (no_init) { + START_TRACE(); + } else { + newterm((char *) 0, my_fp, stdin); + } + + raw(); + noecho(); + test_redraw(stdscr); + endwin(); + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-6.3/test/savescreen.c b/deps/ncurses-6.3/test/savescreen.c new file mode 100644 index 0000000..4c767a5 --- /dev/null +++ b/deps/ncurses-6.3/test/savescreen.c @@ -0,0 +1,656 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 2006-2017,2018 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. * + ****************************************************************************/ +/* + * $Id: savescreen.c,v 1.58 2021/03/27 23:41:21 tom Exp $ + * + * Demonstrate save/restore functions from the curses library. + * Thomas Dickey - 2007/7/14 + */ + +#define NEED_TIME_H +#include <test.priv.h> +#include <popup_msg.h> +#include <parse_rgb.h> + +#if HAVE_SCR_DUMP + +#include <sys/types.h> +#include <sys/stat.h> + +#if defined(__hpux) +#define MyMarker 'X' +#else +#define MyMarker ACS_DIAMOND +#endif + +#define MAX_ANSI 8 + +static bool use_init = FALSE; +static bool keep_dumps = FALSE; + +#if USE_WIDEC_SUPPORT +/* In HPUX curses, cchar_t is opaque; other implementations are not */ +static wchar_t +BaseChar(cchar_t data) +{ + wchar_t my_wchar[CCHARW_MAX]; + wchar_t result = 0; + attr_t my_attr; + short my_pair; + if (getcchar(&data, my_wchar, &my_attr, &my_pair, NULL) == OK) + result = my_wchar[0]; + return result; +} +#endif + +static int +fexists(const char *name) +{ + struct stat sb; + return (stat(name, &sb) == 0 && (sb.st_mode & S_IFMT) == S_IFREG); +} + +static void +setup_next(void) +{ + curs_set(1); + reset_shell_mode(); +} + +static void +cleanup(char *files[]) +{ + if (!keep_dumps) { + int n; + + for (n = 0; files[n] != 0; ++n) { + unlink(files[n]); + } + } +} + +static int +load_screen(char *filename) +{ + int result; + + if (use_init) { + if ((result = scr_init(filename)) != ERR) + result = scr_restore(filename); + } else { + result = scr_set(filename); + } + return result; +} + +/* + * scr_restore() or scr_set() operates on curscr. If we read a character using + * getch() that will refresh stdscr, wiping out the result. To avoid that, + * copy the data back from curscr to stdscr. + */ +static void +after_load(void) +{ + overwrite(curscr, stdscr); + doupdate(); +} + +static void +show_what(int color, int which, int last) +{ + int y, x, n; + time_t now; + char *mytime; + + getyx(stdscr, y, x); + + move(0, 0); + printw("Color %d. Saved %d of %d (? for help)", color, which, last + 1); + + now = time((time_t *) 0); + mytime = ctime(&now); + for (n = (int) strlen(mytime) - 1; n >= 0; --n) { + if (isspace(UChar(mytime[n]))) { + mytime[n] = '\0'; + } else { + break; + } + } + mvprintw(0, (COLS - n - 2), " %s", mytime); + + move(y, x); + + refresh(); +} + +static int +get_command(int color, int which, int last) +{ + int ch; + + timeout(50); + + do { + show_what(color, which, last); + ch = getch(); + } while (ch == ERR); + + return ch; +} + +static int +dump_screen(char **files, int color, int which, int last, bool use_colors) +{ +#if USE_WIDEC_SUPPORT + cchar_t mycc; +#endif + char *filename = files[which]; + bool dumped = FALSE; + + if (filename != 0) { + dumped = TRUE; + show_what(color, ++which, last); + if (scr_dump(filename) == ERR) { + endwin(); + printf("Cannot write screen-dump %s\n", filename); + cleanup(files); + ExitProgram(EXIT_SUCCESS); + } + if (use_colors) { + int cx, cy; + int pair = 1 + (which % MAX_ANSI); + /* + * Change the background color, to make it more obvious. But that + * changes the existing text-color. Copy the old values from the + * currently displayed screen. + */ + bkgd((chtype) COLOR_PAIR(pair)); + for (cy = 1; cy < LINES; ++cy) { + for (cx = 0; cx < COLS; ++cx) { + wmove(curscr, cy, cx); + wmove(stdscr, cy, cx); +#if USE_WIDEC_SUPPORT + if (win_wch(curscr, &mycc) != ERR) { + int myxx = wcwidth(BaseChar(mycc)); + if (myxx > 0) { + wadd_wchnstr(stdscr, &mycc, 1); + cx += (myxx - 1); + } + } +#else + waddch(stdscr, winch(curscr)); +#endif + } + } + } + } + return dumped; +} + +static void +editor_help(void) +{ + static const char *msgs[] = + { + "You are now in the screen-editor, which allows you to make some", + "lines on the screen, as well as save copies of the screen to a", + "temporary file", + "", + "Keys:", + " q quit", + " n run the screen-loader to show the saved screens", + " <space> dump a screen", + "", + " a toggle between '#' and graphic symbol for drawing", + " c change color drawn by line to next in palette", + " h,j,k,l or arrows to move around the screen, drawing", + 0 + }; + popup_msg(stdscr, msgs); +} + +static void +replay_help(void) +{ + static const char *msgs[] = + { + "You are now in the screen-loader, which allows you to view", + "the dumped/restored screens.", + "", + "Keys:", + " q quit", + " <space> load the next screen", + " <backspace> load the previous screen", + 0 + }; + popup_msg(stdscr, msgs); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: savescreen [-r] files", + "", + "Options:", + " -f file fill/initialize screen using text from this file", + " -i use scr_init/scr_restore rather than scr_set", + " -k keep the restored dump-files rather than removing them", + " -r replay the screen-dump files" + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int ch; + int which = 0; + int last; + bool use_colors = FALSE; + bool replaying = FALSE; + bool done = FALSE; + char **files; + char *fill_by = 0; +#if USE_WIDEC_SUPPORT + cchar_t mycc; + static const wchar_t mywc[2] = + {L'#', 0}; +#endif + + setlocale(LC_ALL, ""); + + while ((ch = getopt(argc, argv, "f:ikr")) != -1) { + switch (ch) { + case 'f': + fill_by = optarg; + break; + case 'i': + use_init = TRUE; + break; + case 'k': + keep_dumps = TRUE; + break; + case 'r': + replaying = TRUE; + break; + default: + usage(); + break; + } + } + + files = argv + optind; + last = argc - optind - 1; + + if (replaying) { + while (last >= 0 && !fexists(files[last])) + --last; + } + + initscr(); + cbreak(); + noecho(); + keypad(stdscr, TRUE); + curs_set(0); + + if (has_colors() && (start_color() == OK) && COLORS >= MAX_ANSI) { +#if USE_WIDEC_SUPPORT + bool using_rgb = FALSE; +#endif + static const struct { + int fg, bg; + } table[MAX_ANSI] = { +#define DATA(fg,bg) { COLOR_##fg, COLOR_##bg } + DATA(RED, WHITE), + DATA(GREEN, WHITE), + DATA(YELLOW, BLACK), + DATA(BLUE, WHITE), + DATA(MAGENTA, WHITE), + DATA(MAGENTA, BLACK), + DATA(CYAN, WHITE), + DATA(CYAN, BLACK), +#undef DATA + }; + int n; + int pair = 1; + + use_colors = TRUE; + /* + * Discounting color-pair 0 (no color), make the next 8 color pairs + * useful for leaving a visually distinct trail of characters on the + * screen. + */ + for (n = 0; n < MAX_ANSI; ++n) { + init_pair((short) pair++, (short) table[n].fg, (short) table[n].bg); + } + /* + * After that, use color pairs for constructing a test-pattern, e.g., + * imitating xterm's scripts. + */ + if (fill_by == 0) { + if (COLORS <= 256) { + for (n = 0; n < COLORS; ++n) + init_pair((short) (n + MAX_ANSI), (short) n, (short) n); + } +#if HAVE_TIGETSTR && USE_WIDEC_SUPPORT + else { + int r_max, g_max, b_max; + + if (parse_rgb(&r_max, &g_max, &b_max) > 0) { + int rows = LINES - 1; + int cols = COLS - 1; + int b_delta = (b_max / rows); + int r_delta = (r_max / cols); + int g_delta = (g_max / cols); + int row = 0; + int b = 0; + + using_rgb = TRUE; + while (row++ < rows) { + int col = 0; + int r = 0; + int g = g_max; + while (col++ < cols) { + int color = (((r * (g_max + 1)) + g) * (b_max + 1) + + b + MAX_ANSI); +#if USE_EXTENDED_COLOR + init_extended_pair(pair, color, color); +#else + init_pair(pair, color, color); +#endif + pair++; + r += r_delta; + g -= g_delta; + } + b += b_delta; + } + } + } +#endif + } + if ((fill_by == 0) && !replaying) { +#if USE_WIDEC_SUPPORT + int cube = 0; +#endif + /* + * Originally (before wide-characters) ncurses supported 16 colors. + */ + if (COLORS >= 16 && COLORS <= 256) { + mvprintw(2, 0, "System colors:\n"); + for (n = 0; n < 16; ++n) { + pair = n + MAX_ANSI; + addch((chtype) (' ' | COLOR_PAIR(pair))); + addch((chtype) (' ' | COLOR_PAIR(pair))); + if (((n + 1) % 8) == 0) + addch('\n'); + } + } + /* + * Even with ncurses, you need wide-character support to have more + * than 16 colors. + */ +#if USE_WIDEC_SUPPORT + if (COLORS == 88) { + cube = 4; + } else if (COLORS == 256) { + cube = 6; + } + if (cube != 0) { + int r, g, b; + int cube0 = 16; + int cube1 = cube0 + (cube * cube * cube); + + addch('\n'); + printw("Color cube, %dx%dx%d:\n", cube, cube, cube); + for (g = 0; g < cube; g++) { + for (r = 0; r < cube; r++) { + for (b = 0; b < cube; b++) { + pair = MAX_ANSI + + 16 + + (r * cube * cube) + (g * cube) + b; + setcchar(&mycc, mywc, 0, (short) pair, NULL); + add_wch(&mycc); + add_wch(&mycc); + } + addch(' '); + } + addch('\n'); + } + addch('\n'); + printw("Grayscale ramp:\n"); + for (n = cube1; n < COLORS; ++n) { + pair = n + MAX_ANSI; + setcchar(&mycc, mywc, 0, (short) pair, NULL); + add_wch(&mycc); + add_wch(&mycc); + } + } else if ((COLORS > 256) && using_rgb) { + int rows = LINES - 1; + int cols = COLS - 1; + int row = 0; + + pair = MAX_ANSI; + while (row++ < rows) { + int col = 0; + while (col++ < cols) { + setcchar(&mycc, mywc, 0, (short) pair, &pair); + add_wch(&mycc); + ++pair; + } + addch('\n'); + } + addch('\n'); + } +#endif + } + } + + if (fill_by != 0) { + FILE *fp = fopen(fill_by, "r"); + if (fp != 0) { + bool filled = FALSE; + move(1, 0); + while ((ch = fgetc(fp)) != EOF) { + if (addch(UChar(ch)) == ERR) { + filled = TRUE; + break; + } + } + fclose(fp); + if (!filled) { + while (addch(' ') != ERR) { + ; + } + } + move(0, 0); + } else { + stop_curses(); + fprintf(stderr, "Cannot open \"%s\"\n", fill_by); + ExitProgram(EXIT_FAILURE); + } + } + + if (replaying) { + + /* + * Use the last file as the initial/current screen. + */ + if (last < 0) { + stop_curses(); + printf("No screen-dumps given\n"); + ExitProgram(EXIT_FAILURE); + } + + which = last; + if (load_screen(files[which]) == ERR) { + stop_curses(); + printf("Cannot load screen-dump %s\n", files[which]); + ExitProgram(EXIT_FAILURE); + } + after_load(); + + while (!done && (ch = getch()) != ERR) { + switch (ch) { + case 'n': + /* + * If we got a "next" here, skip to the final screen before + * moving to the next process. + */ + setup_next(); + which = last; + done = TRUE; + break; + case 'q': + cleanup(files); + done = TRUE; + break; + case KEY_BACKSPACE: + case '\b': + if (--which < 0) + which = last; + break; + case ' ': + if (++which > last) + which = 0; + break; + case HELP_KEY_1: + replay_help(); + break; + default: + beep(); + continue; + } + + if (ch == 'q') { + ; + } else if (scr_restore(files[which]) == ERR) { + endwin(); + printf("Cannot load screen-dump %s\n", files[which]); + cleanup(files); + ExitProgram(EXIT_FAILURE); + } else { + wrefresh(curscr); + } + } + endwin(); + } else { + int y = 0; + int x = 0; + int color = 0; + int altchars = 0; + bool dirty = use_colors || (fill_by != 0); + + while (!done) { + switch (get_command(color, which, last)) { + case 'n': + if (dirty && files[which]) { + dump_screen(files, color, which, last, use_colors); + } + setup_next(); + done = TRUE; + break; + case 'q': + cleanup(files); + done = TRUE; + break; + case ' ': + if (dump_screen(files, color, which, last, use_colors)) { + which = (which + 1) % MAX_ANSI; + dirty = FALSE; + } else { + setup_next(); + done = TRUE; + } + break; + case KEY_LEFT: + case 'h': + if (--x < 0) + x = COLS - 1; + break; + case KEY_DOWN: + case 'j': + if (++y >= LINES) + y = 1; + break; + case KEY_UP: + case 'k': + if (--y < 1) + y = LINES - 1; + break; + case KEY_RIGHT: + case 'l': + if (++x >= COLS) + x = 0; + break; + case 'a': + altchars = !altchars; + break; + case 'c': + if (use_colors) { + color = (color + 1) % MAX_ANSI; + } + break; + case HELP_KEY_1: + editor_help(); + break; + default: + beep(); + continue; + } + if (!done) { + chtype attr = A_REVERSE; + chtype ch2 = (altchars ? MyMarker : '#'); + if (use_colors) { + attr |= (chtype) COLOR_PAIR(color); + } + move(y, x); + AddCh(ch2 | attr); + move(y, x); + dirty = TRUE; + } + } + endwin(); + } + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + printf("This program requires the screen-dump functions\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-5.9/test/savescreen.sh b/deps/ncurses-6.3/test/savescreen.sh old mode 100755 new mode 100644 similarity index 85% rename from deps/ncurses-5.9/test/savescreen.sh rename to deps/ncurses-6.3/test/savescreen.sh index e49aa17..4a15ce4 --- a/deps/ncurses-5.9/test/savescreen.sh +++ b/deps/ncurses-6.3/test/savescreen.sh @@ -1,6 +1,7 @@ #!/bin/sh ############################################################################## -# Copyright (c) 2007,2009 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 2007-2009,2018 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"), # @@ -26,14 +27,23 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: savescreen.sh,v 1.4 2009/10/10 17:08:45 tom Exp $ +# $Id: savescreen.sh,v 1.6 2020/02/02 23:34:34 tom Exp $ # # Use this script to exercise "savescreen". # It starts by generating a series of temporary-filenames, which are passed # to the test-program. Loop as long as the first file named exists. + +: ${TMPDIR:=/tmp} + +# "mktemp -d" would be preferable, but is not standard. +MY_DIR=$TMPDIR/savescreen$$ +trap "rm -rf $MY_DIR" EXIT INT QUIT HUP +umask 077 +mkdir $MY_DIR || exit 1 + PARAMS= NFILES=4 -PREFIX=savescreen-$$ +PREFIX=$MY_DIR/savescreen n=0 BEGINS=$PREFIX-$n.tmp while test $n != $NFILES @@ -43,12 +53,12 @@ do n=`expr $n + 1` done -./savescreen $PARAMS +${0%.sh} $PARAMS if test -f $BEGINS then while test -f $BEGINS do - ./savescreen -r $PARAMS + ${0%.sh} -r $PARAMS test $? != 0 && break done else diff --git a/deps/ncurses-6.3/test/sp_tinfo.c b/deps/ncurses-6.3/test/sp_tinfo.c new file mode 100644 index 0000000..419b000 --- /dev/null +++ b/deps/ncurses-6.3/test/sp_tinfo.c @@ -0,0 +1,352 @@ +/**************************************************************************** + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 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. * + ****************************************************************************/ + +/* + * $Id: sp_tinfo.c,v 1.23 2020/02/02 23:34:34 tom Exp $ + * + * TOTO: add option for non-sp-funcs interface + */ + +#define USE_TINFO +#include <test.priv.h> + +#if HAVE_TPUTS_SP +/* + * The higher-level curses library stores a TERMINAL* inside SCREEN, but the + * latter is opaque. This structure helps us keep the two associated. + */ +typedef struct { + const char *name; + FILE *fp; + SCREEN *sp; + TERMINAL *term; + int (*outc) (SCREEN *, int); +} MYDATA; + +static bool opt_n = FALSE; /* true to suppress new_prescr */ +static bool opt_t = FALSE; /* true to use termcap */ + +static int +my_outc(SCREEN *sp, int ch) +{ + (void) sp; + return fputc(ch, stdout); +} + +static int +my_errc(SCREEN *sp, int ch) +{ + (void) sp; + return fputc(ch, stderr); +} + +static MYDATA * +initialize(const char *name, FILE *output) +{ + MYDATA *result = typeCalloc(MYDATA, 1); + int error; + + result->fp = output; + result->name = name; + result->outc = (fileno(output) == 1) ? my_outc : my_errc; + result->sp = opt_n ? NULL : new_prescr(); + + if (opt_t) { + char *temp = strdup(name); + tgetent_sp(result->sp, temp, name); + free(temp); + } else { + setupterm((NCURSES_CONST char *) name, fileno(output), &error); + } + result->term = cur_term; + + return result; +} + +static void +show_flag(MYDATA * data, const char *name, int value) +{ + if (value < 0) { + fprintf(data->fp, " %s = (unknown)\n", name); + } else if (value == 0) { + fprintf(data->fp, " %s = false\n", name); + } else { + fprintf(data->fp, " %s = true\n", name); + } +} + +#define TC_PARMS data->sp, (NCURSES_CONST char *)tc +#define TI_PARMS data->sp, (NCURSES_CONST char *)ti + +static void +show_cap_flag(MYDATA * data, const char *ti, const char *tc) +{ + const char *name = (opt_t ? tc : ti); + show_flag(data, name, (opt_t + ? tgetflag_sp(TC_PARMS) + : tigetflag_sp(TI_PARMS))); +} + +static void +show_number(MYDATA * data, const char *name, int value) +{ + if (value <= -2) { + fprintf(data->fp, " %s = (unknown)\n", name); + } else if (value <= -1) { + fprintf(data->fp, " %s = (missing)\n", name); + } else { + fprintf(data->fp, " %s = %d\n", name, value); + } +} + +static void +show_cap_number(MYDATA * data, const char *ti, const char *tc) +{ + const char *name = (opt_t ? tc : ti); + show_number(data, name, (opt_t + ? tgetnum_sp(TC_PARMS) + : tigetnum_sp(TI_PARMS))); +} + +static void +show_string(MYDATA * data, const char *name, const char *value) +{ + fprintf(data->fp, " %s = ", name); + if (value == 0) { + fprintf(data->fp, "(missing)"); + } else if (value == (char *) -1) { + fprintf(data->fp, "(canceled)"); + } else { + int ch; + while ((ch = UChar(*value++)) != '\0') { + if (ch < 32) { + fprintf(data->fp, "^%c", ch | '@'); + } else if (ch == 127) { + fprintf(data->fp, "^?"); + } else if (ch > 127) { + fprintf(data->fp, "\\%03o", ch); + } else { + fprintf(data->fp, "%c", ch); + } + } + } + fprintf(data->fp, "\n"); +} + +static void +show_cap_string(MYDATA * data, const char *ti, const char *tc) +{ + const char *name = (opt_t ? tc : ti); + char tcapjunk[1024]; + char *tcap_ptr = tcapjunk; + show_string(data, name, (opt_t + ? tgetstr_sp(TC_PARMS, &tcap_ptr) + : tigetstr_sp(TI_PARMS))); +} + +static void +show_char(MYDATA * data, const char *name, int value) +{ + if (value < 0) { + show_string(data, name, "(missing)"); + } else { + char temp[2]; + temp[0] = (char) value; + temp[1] = '\0'; + show_string(data, name, temp); + } +} + +static void +do_stuff(MYDATA * data) +{ + SCREEN *sp = data->sp; +#if NCURSES_EXT_FUNCS + char *s; + int my_code = 1234; + const char *my_text = "\033[?m"; +#endif + + set_curterm_sp(sp, data->term); + + /* putp always goes to standard output */ + putp_sp(sp, "Hello "); + putp_sp(sp, data->name); + putp_sp(sp, "!\n"); + + fprintf(data->fp, "Term: %s\n", termname_sp(sp)); + fprintf(data->fp, "Long: %s\n", longname_sp(sp)); + show_cap_flag(data, "am", "am"); + show_cap_number(data, "lines", "li"); + show_cap_string(data, "clear", "cl"); + show_cap_string(data, "tbc", "ct"); + show_flag(data, "has_ic", has_ic_sp(sp)); + show_flag(data, "has_il", has_il_sp(sp)); + show_number(data, "baudrate", baudrate_sp(sp)); + show_char(data, "erase ch", erasechar_sp(sp)); + show_char(data, "kill ch", killchar_sp(sp)); + show_string(data, "unctrl", unctrl_sp(sp, 033)); + fflush(data->fp); + +#if NCURSES_EXT_FUNCS + define_key_sp(sp, my_text, my_code); + has_key_sp(sp, 0); + key_defined_sp(sp, my_text); + if ((s = keybound_sp(sp, my_code, 0)) != 0) + free(s); +#endif + keyname_sp(sp, '?'); +#if NCURSES_EXT_FUNCS + keyok_sp(sp, my_code, FALSE); + keyok_sp(sp, my_code, TRUE); +#endif + + savetty_sp(sp); + + def_shell_mode_sp(sp); + + /* + * These functions are low-level settings for ncurses. + */ +#if NCURSES_EXT_FUNCS + set_tabsize_sp(sp, 5); /* waddch */ +#endif + typeahead_sp(sp, FALSE); /* waddch */ + use_env_sp(sp, FALSE); /* newterm */ + use_tioctl_sp(sp, FALSE); /* newterm */ + intrflush_sp(sp, 0, 0); /* wgetch */ + flushinp_sp(sp); /* waddch */ + halfdelay_sp(sp, 5); /* wgetch */ + + /* + * These manipulate the terminal modes, mainly for wgetch. + */ + cbreak_sp(sp); + raw_sp(sp); + def_prog_mode_sp(sp); + + delay_output_sp(sp, 200); + + napms_sp(sp, 10); + + nocbreak_sp(sp); + noqiflush_sp(sp); + noraw_sp(sp); + qiflush_sp(sp); + + resetty_sp(sp); + + tputs_sp(sp, "{reset-mode}\n", 0, data->outc); + + reset_prog_mode_sp(sp); + + curs_set_sp(sp, 0); + tputs_sp(sp, "{prog-mode}\n", 0, data->outc); + + reset_shell_mode_sp(sp); + + tputs_sp(sp, "{shell-mode}\n", 0, data->outc); +} + +static void +cleanup(MYDATA * data) +{ + set_curterm(data->term); + del_curterm(data->term); +#if !NO_LEAKS + free(data->sp); /* cannot use delscreen in tinfo */ +#endif + free(data); +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: sp_tinfo [output] [error]", + "", + "Options:", + " -n suppress call to new_prescr()", + " -t use termcap functions rather than terminfo", + NULL + }; + size_t n; + for (n = 0; n < SIZEOF(tbl); ++n) { + fprintf(stderr, "%s\n", tbl[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + MYDATA *my_out; + MYDATA *my_err; + int n; + + while ((n = getopt(argc, argv, "nt")) != -1) { + switch (n) { + case 'n': + opt_n = TRUE; + break; + case 't': + opt_t = TRUE; + break; + default: + usage(); + /* NOTREACHED */ + } + } + argv += (optind - 1); + argc -= (optind - 1); + + if (argc > 3) + usage(); + + my_out = initialize((argc > 1) ? argv[1] : "vt100", stdout); + my_err = initialize((argc > 2) ? argv[2] : "ansi", stderr); + + do_stuff(my_out); + do_stuff(my_err); + + cleanup(my_out); + cleanup(my_err); + + ExitProgram(EXIT_SUCCESS); +} +#else +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + fprintf(stderr, + "This program requires the low-level ncurses sp-funcs tputs_sp\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-5.9/test/tclock.c b/deps/ncurses-6.3/test/tclock.c similarity index 80% rename from deps/ncurses-5.9/test/tclock.c rename to deps/ncurses-6.3/test/tclock.c index fb44725..71da53a 100644 --- a/deps/ncurses-5.9/test/tclock.c +++ b/deps/ncurses-6.3/test/tclock.c @@ -1,22 +1,12 @@ -/* $Id: tclock.c,v 1.30 2011/03/22 09:16:00 tom Exp $ */ +/* $Id: tclock.c,v 1.42 2020/12/26 17:56:36 tom Exp $ */ +#define NEED_TIME_H #include <test.priv.h> #if HAVE_MATH_H #include <math.h> -#if TIME_WITH_SYS_TIME -# include <sys/time.h> -# include <time.h> -#else -# if HAVE_SYS_TIME_H -# include <sys/time.h> -# else -# include <time.h> -# endif -#endif - /* tclock - analog/digital clock for curses. If it gives you joy, then @@ -53,14 +43,14 @@ /* Plot a point */ static void -plot(int x, int y, char col) +plot(int x, int y, int col) { MvAddCh(y, x, (chtype) col); } -/* Draw a diagonal(arbitrary) line using Bresenham's alogrithm. */ +/* Draw a diagonal(arbitrary) line using Bresenham's algorithm. */ static void -dline(int pair, int from_x, int from_y, int x2, int y2, char ch) +dline(int pair, int from_x, int from_y, int x2, int y2, int ch) { int dx, dy; int ax, ay; @@ -69,7 +59,7 @@ dline(int pair, int from_x, int from_y, int x2, int y2, char ch) int d; if (has_colors()) - (void) attrset((attr_t) COLOR_PAIR(pair)); + (void) attrset(AttrArg(COLOR_PAIR(pair), 0)); dx = x2 - from_x; dy = y2 - from_y; @@ -116,8 +106,28 @@ dline(int pair, int from_x, int from_y, int x2, int y2, char ch) } } +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: tclock [options]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + int -main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +main(int argc, char *argv[]) { int i, cx, cy; double cr, mradius, hradius, mangle, hangle; @@ -130,13 +140,31 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) bool odd = FALSE; time_t tim; struct tm *t; - char szChar[10]; + char szChar[20]; char *text; short my_bg = COLOR_BLACK; #if HAVE_GETTIMEOFDAY struct timeval current; +#endif double fraction = 0.0; +#if HAVE_USE_DEFAULT_COLORS + bool d_option = FALSE; +#endif + + while ((ch = getopt(argc, argv, "d")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + d_option = TRUE; + break; #endif + default: + usage(); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(); setlocale(LC_ALL, ""); @@ -149,7 +177,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) if (has_colors()) { start_color(); #if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) + if (d_option && (use_default_colors() == OK)) my_bg = -1; #endif init_pair(1, COLOR_RED, my_bg); @@ -175,7 +203,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) sangle = (i + 1) * (2.0 * PI) / 12.0; sdx = A2X(sangle, sradius); sdy = A2Y(sangle, sradius); - sprintf(szChar, "%d", i + 1); + _nc_SPRINTF(szChar, _nc_SLIMIT(sizeof(szChar)) "%d", i + 1); MvAddStr(cy - sdy, cx + sdx, szChar); } @@ -216,12 +244,12 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) attroff(A_REVERSE); if (has_colors()) - (void) attrset(COLOR_PAIR(1)); + (void) attrset(AttrArg(COLOR_PAIR(1), 0)); dline(1, cx, cy, cx + sdx, cy - sdy, 'O'); if (has_colors()) - (void) attrset(COLOR_PAIR(0)); + (void) attrset(AttrArg(COLOR_PAIR(0), 0)); text = ctime(&tim); MvPrintw(2, 0, "%.*s", (int) (strlen(text) - 1), text); @@ -254,8 +282,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) } - curs_set(1); - endwin(); + stop_curses(); ExitProgram(EXIT_SUCCESS); } #else diff --git a/deps/ncurses-6.3/test/terminal.xbm b/deps/ncurses-6.3/test/terminal.xbm new file mode 100644 index 0000000..b8d9204 --- /dev/null +++ b/deps/ncurses-6.3/test/terminal.xbm @@ -0,0 +1,52 @@ +/*****************************************************************************/ +/** Copyright 1988 by Evans & Sutherland Computer Corporation, **/ +/** Salt Lake City, Utah **/ +/** **/ +/** All Rights Reserved **/ +/** **/ +/** Permission to use, copy, modify, and distribute this software and **/ +/** its documentation for any purpose and without fee is hereby **/ +/** granted, provided that the above copyright notice appear in all **/ +/** copies and that both that copyright notice and this permis- **/ +/** sion notice appear in supporting documentation, and that the **/ +/** name of Evans & Sutherland not be used in advertising or publi- **/ +/** city pertaining to distribution of the software without specif- **/ +/** ic, written prior permission. **/ +/** **/ +/** EVANS & SUTHERLAND DISCLAIMS ALL WARRANTIES WITH REGARD TO **/ +/** THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILI- **/ +/** TY AND FITNESS, IN NO EVENT SHALL EVANS & SUTHERLAND BE LIABLE **/ +/** FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAM- **/ +/** AGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, **/ +/** WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS **/ +/** ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PER- **/ +/** FORMANCE OF THIS SOFTWARE. **/ +/*****************************************************************************/ + +#define xterm_width 48 +#define xterm_height 48 +static char xterm_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x05, + 0x20, 0x01, 0x00, 0x00, 0x20, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, + 0xa0, 0xfc, 0xff, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0xfc, 0x01, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0xfc, 0xff, 0x3f, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0xfc, 0x03, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0xfc, 0xff, 0x01, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0xfc, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, + 0xa0, 0x00, 0x00, 0x00, 0x40, 0x21, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, + 0xa0, 0x00, 0x00, 0x00, 0x40, 0x11, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09, + 0xa0, 0x00, 0x00, 0x00, 0x40, 0x09, 0xa0, 0x00, 0x00, 0x00, 0x40, 0x05, + 0x20, 0x01, 0x00, 0x00, 0x20, 0x05, 0x20, 0xfe, 0xff, 0xff, 0x1f, 0x03, + 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, 0xc0, 0xff, 0xff, 0xff, 0xff, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xc0, 0xff, 0xff, 0xff, 0xff, 0x03, 0x20, 0x00, 0x00, 0x00, 0x00, 0x03, + 0xa0, 0xaa, 0xaa, 0xaa, 0x2a, 0x03, 0x10, 0x00, 0x00, 0x00, 0x80, 0x02, + 0x50, 0x55, 0x55, 0x55, 0x95, 0x02, 0x08, 0x00, 0x00, 0x00, 0x40, 0x02, + 0xa8, 0xaa, 0xaa, 0xaa, 0x4a, 0x02, 0x04, 0x00, 0x00, 0x00, 0x20, 0x01, + 0xb4, 0xff, 0xff, 0xff, 0xad, 0x00, 0x02, 0x00, 0x00, 0x00, 0x50, 0x00, + 0xfe, 0xff, 0xff, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/deps/ncurses-6.3/test/test.priv.h b/deps/ncurses-6.3/test/test.priv.h new file mode 100644 index 0000000..58f79e0 --- /dev/null +++ b/deps/ncurses-6.3/test/test.priv.h @@ -0,0 +1,1229 @@ +/**************************************************************************** + * Copyright 2018-2020,2021 Thomas E. Dickey * + * Copyright 1998-2017,2018 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: Thomas E. Dickey 1996-on * + ****************************************************************************/ +/* $Id: test.priv.h,v 1.197 2021/04/25 00:00:24 tom Exp $ */ + +#ifndef __TEST_PRIV_H +#define __TEST_PRIV_H 1 + +#include <ncurses_cfg.h> + +/* + * Fix ifdef's that look for the form/menu/panel libraries, if we are building + * with wide-character ncurses. + */ +#ifdef HAVE_LIBFORMW +#define HAVE_LIBFORMW 1 +#define HAVE_LIBFORM 1 +#endif + +#ifdef HAVE_LIBMENUW +#define HAVE_LIBMENUW 1 +#define HAVE_LIBMENU 1 +#endif + +#ifdef HAVE_LIBPANELW +#define HAVE_LIBPANELW 1 +#define HAVE_LIBPANEL 1 +#endif + +/* + * Fallback definitions to accommodate broken compilers. + */ +#ifndef HAVE_ALLOC_PAIR +#define HAVE_ALLOC_PAIR 0 +#endif + +#ifndef HAVE_ASSUME_DEFAULT_COLORS +#define HAVE_ASSUME_DEFAULT_COLORS 0 +#endif + +#ifndef HAVE_BSD_STRING_H +#define HAVE_BSD_STRING_H 0 +#endif + +#ifndef HAVE_CURSES_VERSION +#define HAVE_CURSES_VERSION 0 +#endif + +#ifndef HAVE_CURSCR +#define HAVE_CURSCR 0 +#endif + +#ifndef HAVE_CHGAT +#define HAVE_CHGAT 0 +#endif + +#ifndef HAVE_COLOR_CONTENT +#define HAVE_COLOR_CONTENT 0 +#endif + +#ifndef HAVE_COPYWIN +#define HAVE_COPYWIN 0 +#endif + +#ifndef HAVE_COLOR_SET +#define HAVE_COLOR_SET 0 +#endif + +#ifndef HAVE_DELSCREEN +#define HAVE_DELSCREEN 0 +#endif + +#ifndef HAVE_DUPWIN +#define HAVE_DUPWIN 0 +#endif + +#ifndef HAVE_FILTER +#define HAVE_FILTER 0 +#endif + +#ifndef HAVE_FORM_H +#define HAVE_FORM_H 0 +#endif + +#ifndef HAVE_GETBEGX +#define HAVE_GETBEGX 0 +#endif + +#ifndef HAVE_GETCURX +#define HAVE_GETCURX 0 +#endif + +#ifndef HAVE_GETMAXX +#define HAVE_GETMAXX 0 +#endif + +#ifndef HAVE_GETOPT_H +#define HAVE_GETOPT_H 0 +#endif + +#ifndef HAVE_GETPARX +#define HAVE_GETPARX 0 +#endif + +#ifndef HAVE_GETWIN +#define HAVE_GETWIN 0 +#endif + +#ifndef HAVE_HALFDELAY +#define HAVE_HALFDELAY 0 +#endif + +#ifndef HAVE_INIT_EXTENDED_COLOR +#define HAVE_INIT_EXTENDED_COLOR 0 +#endif + +#ifndef HAVE_LIBFORM +#define HAVE_LIBFORM 0 +#endif + +#ifndef HAVE_LIBMENU +#define HAVE_LIBMENU 0 +#endif + +#ifndef HAVE_LIBPANEL +#define HAVE_LIBPANEL 0 +#endif + +#ifndef HAVE_LANGINFO_CODESET +#define HAVE_LANGINFO_CODESET 0 +#endif + +#ifndef HAVE_LOCALE_H +#define HAVE_LOCALE_H 0 +#endif + +#ifndef HAVE_MATH_H +#define HAVE_MATH_H 0 +#endif + +#ifndef HAVE_MENU_H +#define HAVE_MENU_H 0 +#endif + +#ifndef HAVE_MVDERWIN +#define HAVE_MVDERWIN 0 +#endif + +#ifndef HAVE_MVVLINE +#define HAVE_MVVLINE 0 +#endif + +#ifndef HAVE_MVWIN +#define HAVE_MVWIN 0 +#endif + +#ifndef HAVE_MVWVLINE +#define HAVE_MVWVLINE 0 +#endif + +#ifndef HAVE_NAPMS +#define HAVE_NAPMS 1 +#endif + +#ifndef HAVE_NC_ALLOC_H +#define HAVE_NC_ALLOC_H 0 +#endif + +#ifndef HAVE_NEWPAD +#define HAVE_NEWPAD 0 +#endif + +#ifndef HAVE_PANEL_H +#define HAVE_PANEL_H 0 +#endif + +#ifndef HAVE_PUTWIN +#define HAVE_PUTWIN 0 +#endif + +#ifndef HAVE_RESET_COLOR_PAIRS +#define HAVE_RESET_COLOR_PAIRS 0 +#endif + +#ifndef HAVE_RESIZE_TERM +#define HAVE_RESIZE_TERM 0 +#endif + +#ifndef HAVE_RESTARTTERM +#define HAVE_RESTARTTERM 0 +#endif + +#ifndef HAVE_RIPOFFLINE +#define HAVE_RIPOFFLINE 0 +#endif + +#ifndef HAVE_SCR_DUMP +#define HAVE_SCR_DUMP 0 +#endif + +#ifndef HAVE_SETUPTERM +#define HAVE_SETUPTERM 0 +#endif + +#ifndef HAVE_SLK_COLOR +#define HAVE_SLK_COLOR 0 +#endif + +#ifndef HAVE_SLK_INIT +#define HAVE_SLK_INIT 0 +#endif + +#ifndef HAVE_STDINT_H +#define HAVE_STDINT_H 0 +#endif + +#ifndef HAVE_STDNORETURN_H +#define HAVE_STDNORETURN_H 0 +#endif + +#ifndef HAVE_STRSTR +#define HAVE_STRSTR 0 +#endif + +#ifndef HAVE_SYS_IOCTL_H +#define HAVE_SYS_IOCTL_H 0 +#endif + +#ifndef HAVE_SYS_SELECT_H +#define HAVE_SYS_SELECT_H 0 +#endif + +#ifndef HAVE_TERMATTRS +#define HAVE_TERMATTRS 0 +#endif + +#ifndef HAVE_TERMIOS_H +#define HAVE_TERMIOS_H 0 +#endif + +#ifndef HAVE_TERMNAME +#define HAVE_TERMNAME 0 +#endif + +#ifndef HAVE_TERM_ENTRY_H +#define HAVE_TERM_ENTRY_H 0 +#endif + +#ifndef HAVE_TGETENT +#define HAVE_TGETENT 0 +#endif + +#ifndef HAVE_TIGETNUM +#define HAVE_TIGETNUM 0 +#endif + +#ifndef HAVE_TIGETSTR +#define HAVE_TIGETSTR 0 +#endif + +#ifndef HAVE_TPUTS_SP +#define HAVE_TPUTS_SP 0 +#endif + +#ifndef HAVE_TSEARCH +#define HAVE_TSEARCH 0 +#endif + +#ifndef HAVE_TYPEAHEAD +#define HAVE_TYPEAHEAD 0 +#endif + +#ifndef HAVE_WINSSTR +#define HAVE_WINSSTR 0 +#endif + +#ifndef HAVE_USE_DEFAULT_COLORS +#define HAVE_USE_DEFAULT_COLORS 0 +#endif + +#ifndef HAVE_USE_ENV +#define HAVE_USE_ENV 0 +#endif + +#ifndef HAVE_USE_EXTENDED_NAMES +#define HAVE_USE_EXTENDED_NAMES 0 +#endif + +#ifndef HAVE_USE_SCREEN +#define HAVE_USE_SCREEN 0 +#endif + +#ifndef HAVE_USE_WINDOW +#define HAVE_USE_WINDOW 0 +#endif + +#ifndef HAVE_VIDPUTS +#define HAVE_VIDPUTS 0 +#endif + +#ifndef HAVE_VID_PUTS +#define HAVE_VID_PUTS 0 +#endif + +#ifndef HAVE_WINSDELLN +#define HAVE_WINSDELLN 0 +#endif + +#ifndef HAVE_WRESIZE +#define HAVE_WRESIZE 0 +#endif + +#ifndef HAVE__TRACEF +#define HAVE__TRACEF 0 +#endif + +#ifndef NCURSES_EXT_FUNCS +#define NCURSES_EXT_FUNCS 0 +#endif + +#ifndef NEED_PTEM_H +#define NEED_PTEM_H 0 +#endif + +#ifndef NEED_WCHAR_H +#define NEED_WCHAR_H 0 +#endif + +#ifndef NO_LEAKS +#define NO_LEAKS 0 +#endif + +/* + * Workaround for HPUX + */ +#if defined(__hpux) && !defined(NCURSES_VERSION) +#define _ACS_COMPAT_CODE /* needed for acs_map vs __acs_map */ +#endif + +#include <stdlib.h> +#include <stdarg.h> +#include <string.h> +#include <sys/types.h> +#include <errno.h> + +#if HAVE_UNISTD_H +#include <unistd.h> +#endif + +#include <signal.h> /* include before curses.h to work around glibc bug */ + +#if NEED_WCHAR_H +#include <wchar.h> +#ifdef HAVE_LIBUTF8_H +#include <libutf8.h> +#endif +#endif + +#if defined(HAVE_XCURSES) +#include <xcurses.h> +#elif defined(HAVE_NCURSESW_NCURSES_H) +#include <ncursesw/curses.h> +#elif defined(HAVE_NCURSES_NCURSES_H) +#include <ncurses/curses.h> +#else +#include <curses.h> +#endif + +#if HAVE_STDNORETURN_H && !defined(NCURSES_VERSION) +#include <stdnoreturn.h> +#undef GCC_NORETURN +#define GCC_NORETURN _Noreturn +#endif + +#if !(defined(NCURSES_WGETCH_EVENTS) && defined(NEED_KEY_EVENT)) +#undef KEY_EVENT /* reduce compiler-warnings with Visual C++ */ +#endif + +#if defined(HAVE_XCURSES) || defined(PDCURSES) +/* no other headers */ +#undef HAVE_SETUPTERM /* nonfunctional */ +#define HAVE_SETUPTERM 0 +#undef HAVE_TGETENT /* nonfunctional */ +#define HAVE_TGETENT 0 +#undef HAVE_TIGETSTR /* nonfunctional */ +#define HAVE_TIGETSTR 0 +#elif defined(HAVE_NCURSESW_TERM_H) +#include <ncursesw/term.h> +#elif defined(HAVE_NCURSES_TERM_H) +#include <ncurses/term.h> +#elif defined(HAVE_TERM_H) +#include <term.h> +#endif + +/* + * Not all curses.h implementations include unctrl.h, + */ +#if defined(HAVE_NCURSESW_UNCTRL_H) +#include <ncursesw/unctrl.h> +#elif defined(HAVE_NCURSES_UNCTRL_H) +#include <ncurses/unctrl.h> +#elif defined(HAVE_UNCTRL_H) +#include <unctrl.h> +#endif + +#if HAVE_GETOPT_H +#include <getopt.h> +#elif !defined(HAVE_GETOPT_HEADER) +/* 'getopt()' may be prototyped in <stdlib.h>, but declaring its variables + * doesn't hurt. + */ +extern char *optarg; +extern int optind; +#endif /* HAVE_GETOPT_H */ + +#if HAVE_LOCALE_H +#include <locale.h> +#else +#define setlocale(name,string) /* nothing */ +#endif + +#include <assert.h> +#include <ctype.h> + +#if defined(_MSC_VER) +#undef popen +#define popen(s,n) _popen(s,n) +#undef pclose +#define pclose(s) _pclose(s) +#endif + +#ifndef GCC_NORETURN +#define GCC_NORETURN /* nothing */ +#endif +#ifndef GCC_PRINTFLIKE +#define GCC_PRINTFLIKE(a,b) /* nothing */ +#endif +#ifndef GCC_SCANFLIKE +#define GCC_SCANFLIKE(a,b) /* nothing */ +#endif +#ifndef GCC_UNUSED +#define GCC_UNUSED /* nothing */ +#endif + +#ifndef HAVE_GETNSTR +#define getnstr(s,n) getstr(s) +#endif + +#if HAVE_INIT_EXTENDED_COLOR +#define USE_EXTENDED_COLOR 1 +#else +#define USE_EXTENDED_COLOR 0 +#endif + +#ifndef USE_SOFTKEYS +#if HAVE_SLK_INIT +#define USE_SOFTKEYS 1 +#else +#define USE_SOFTKEYS 0 +#endif +#endif + +#if !USE_SOFTKEYS +#define slk_init() /* nothing */ +#define slk_restore() /* nothing */ +#define slk_clear() /* nothing */ +#endif + +#ifndef HAVE_CURSES_DATA_TABSIZE +#define HAVE_CURSES_DATA_TABSIZE 0 +#endif + +#if !NCURSES_EXT_FUNCS +#if HAVE_CURSES_DATA_TABSIZE +#define set_tabsize(n) TABSIZE = (n) +#else +#define set_tabsize(n) /* nothing */ +#endif +#endif + +#if HAVE_TPUTS_SP +#define USE_SP_FUNCS 1 +#else +#define USE_SP_FUNCS 0 +#endif + +#ifndef HAVE_WSYNCDOWN +#define wsyncdown(win) /* nothing */ +#endif + +#ifndef USE_WIDEC_SUPPORT +#if (defined(_XOPEN_SOURCE_EXTENDED) \ + || (defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE - 0 >= 500)) \ + || (defined(NCURSES_WIDECHAR) && (NCURSES_WIDECHAR - 0 < 1))) \ + && defined(WACS_ULCORNER) +#define USE_WIDEC_SUPPORT 1 +#else +#define USE_WIDEC_SUPPORT 0 +#endif +#endif + +#if HAVE_PANEL_H && HAVE_LIBPANEL +#define USE_LIBPANEL 1 +#else +#define USE_LIBPANEL 0 +#endif + +#if HAVE_MENU_H && HAVE_LIBMENU +#define USE_LIBMENU 1 +#else +#define USE_LIBMENU 0 +#endif + +#if HAVE_FORM_H && HAVE_LIBFORM +#define USE_LIBFORM 1 +#else +#define USE_LIBFORM 0 +#endif + +/* workaround, to build against NetBSD's variant of the form library */ +#ifdef HAVE_NETBSD_FORM_H +#define form_getyx(form, y, x) y = (int)current_field(form)->cursor_ypos, x = (int)current_field(form)->cursor_xpos +#else +#define form_getyx(form, y, x) y = (int)(form)->currow, x = (int)(form)->curcol +#endif + +/* workaround, to build against NetBSD's variant of the form library */ +#ifdef HAVE_NETBSD_MENU_H +#define menu_itemwidth(menu) (menu)->max_item_width +#else +#define menu_itemwidth(menu) (menu)->itemlen +#endif + +#ifndef HAVE_TYPE_ATTR_T +#if !USE_WIDEC_SUPPORT && !defined(attr_t) +#define attr_t chtype +#endif +#endif + +#undef NCURSES_CH_T +#if !USE_WIDEC_SUPPORT +#define NCURSES_CH_T chtype +#else +#define NCURSES_CH_T cchar_t +#endif + +#ifndef NCURSES_COLOR_T +#define NCURSES_COLOR_T short +#endif + +#ifndef NCURSES_PAIRS_T +#define NCURSES_PAIRS_T short +#endif + +#ifndef CCHARW_MAX +#define CCHARW_MAX 5 +#endif + +#if defined(NCURSES_VERSION) && defined(CURSES_WACS_ARRAY) && !defined(CURSES_WACS_SYMBOLS) +#define CURSES_WACS_SYMBOLS +#endif + +#if defined(CURSES_WACS_ARRAY) && !defined(CURSES_WACS_SYMBOLS) +/* NetBSD 5.1 defines these incorrectly */ +#undef WACS_RARROW +#undef WACS_LARROW +#undef WACS_UARROW +#undef WACS_DARROW +#undef WACS_BLOCK +#undef WACS_DIAMOND +#undef WACS_CKBOARD +#undef WACS_DEGREE +#undef WACS_PLMINUS +#undef WACS_BOARD +#undef WACS_LANTERN +#undef WACS_LRCORNER +#undef WACS_URCORNER +#undef WACS_ULCORNER +#undef WACS_LLCORNER +#undef WACS_PLUS +#undef WACS_HLINE +#undef WACS_S1 +#undef WACS_S9 +#undef WACS_LTEE +#undef WACS_RTEE +#undef WACS_BTEE +#undef WACS_TTEE +#undef WACS_VLINE +#undef WACS_BULLET +#undef WACS_S3 +#undef WACS_S7 +#undef WACS_LEQUAL +#undef WACS_GEQUAL +#undef WACS_PI +#undef WACS_NEQUAL +#undef WACS_STERLING + +#define WACS_RARROW &(CURSES_WACS_ARRAY['+']) +#define WACS_LARROW &(CURSES_WACS_ARRAY[',']) +#define WACS_UARROW &(CURSES_WACS_ARRAY['-']) +#define WACS_DARROW &(CURSES_WACS_ARRAY['.']) +#define WACS_BLOCK &(CURSES_WACS_ARRAY['0']) +#define WACS_DIAMOND &(CURSES_WACS_ARRAY['`']) +#define WACS_CKBOARD &(CURSES_WACS_ARRAY['a']) +#define WACS_DEGREE &(CURSES_WACS_ARRAY['f']) +#define WACS_PLMINUS &(CURSES_WACS_ARRAY['g']) +#define WACS_BOARD &(CURSES_WACS_ARRAY['h']) +#define WACS_LANTERN &(CURSES_WACS_ARRAY['i']) +#define WACS_LRCORNER &(CURSES_WACS_ARRAY['j']) +#define WACS_URCORNER &(CURSES_WACS_ARRAY['k']) +#define WACS_ULCORNER &(CURSES_WACS_ARRAY['l']) +#define WACS_LLCORNER &(CURSES_WACS_ARRAY['m']) +#define WACS_PLUS &(CURSES_WACS_ARRAY['n']) +#define WACS_HLINE &(CURSES_WACS_ARRAY['q']) +#define WACS_S1 &(CURSES_WACS_ARRAY['o']) +#define WACS_S9 &(CURSES_WACS_ARRAY['s']) +#define WACS_LTEE &(CURSES_WACS_ARRAY['t']) +#define WACS_RTEE &(CURSES_WACS_ARRAY['u']) +#define WACS_BTEE &(CURSES_WACS_ARRAY['v']) +#define WACS_TTEE &(CURSES_WACS_ARRAY['w']) +#define WACS_VLINE &(CURSES_WACS_ARRAY['x']) +#define WACS_BULLET &(CURSES_WACS_ARRAY['~']) +#define WACS_S3 &(CURSES_WACS_ARRAY['p']) +#define WACS_S7 &(CURSES_WACS_ARRAY['r']) +#define WACS_LEQUAL &(CURSES_WACS_ARRAY['y']) +#define WACS_GEQUAL &(CURSES_WACS_ARRAY['z']) +#define WACS_PI &(CURSES_WACS_ARRAY['{']) +#define WACS_NEQUAL &(CURSES_WACS_ARRAY['|']) +#define WACS_STERLING &(CURSES_WACS_ARRAY['}']) +#endif + +#ifndef WA_NORMAL +#define WA_NORMAL A_NORMAL +#endif +#ifndef WA_BOLD +#define WA_BOLD A_BOLD +#endif +#ifndef WA_REVERSE +#define WA_REVERSE A_REVERSE +#endif +#ifndef WA_UNDERLINE +#define WA_UNDERLINE A_UNDERLINE +#endif +#ifndef WA_BLINK +#define WA_BLINK A_BLINK +#endif + +#ifndef OK +#define OK (0) +#endif + +#ifndef ERR +#define ERR (-1) +#endif + +#undef CTRL +#define CTRL(x) ((x) & 0x1f) + +#define QUIT CTRL('Q') +#define ESCAPE CTRL('[') + +#ifndef KEY_MIN +#define KEY_MIN 256 /* not defined in Solaris 8 */ +#endif + +#define HELP_KEY_1 '?' +#define HELP_KEY_2 KEY_F(1) + +/* from nc_string.h, to make this stand alone */ +#if HAVE_BSD_STRING_H +#include <bsd/string.h> +#endif + +#ifdef __cplusplus +#define NCURSES_VOID /* nothing */ +#else +#define NCURSES_VOID (void) +#endif + +#ifndef HAVE_STRLCAT +#define HAVE_STRLCAT 0 +#endif + +#ifndef HAVE_STRLCPY +#define HAVE_STRLCPY 0 +#endif + +#ifndef HAVE_SNPRINTF +#define HAVE_SNPRINTF 0 +#endif + +#ifndef USE_STRING_HACKS +#define USE_STRING_HACKS 0 +#endif + +#ifndef NCURSES_CAST +#ifdef __cplusplus +extern "C" { +#define NCURSES_CAST(type,value) static_cast<type>(value) +#else +#define NCURSES_CAST(type,value) (type)(value) +#endif +#endif + +#if USE_STRING_HACKS && HAVE_STRLCAT +#define _nc_STRCAT(d,s,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,n)) +#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strlcat((d),(s),NCURSES_CAST(size_t,m)) +#else +#define _nc_STRCAT(d,s,n) NCURSES_VOID strcat((d),(s)) +#define _nc_STRNCAT(d,s,m,n) NCURSES_VOID strncat((d),(s),(n)) +#endif + +#if USE_STRING_HACKS && HAVE_STRLCPY +#define _nc_STRCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n)) +#define _nc_STRNCPY(d,s,n) NCURSES_VOID strlcpy((d),(s),NCURSES_CAST(size_t,n)) +#else +#define _nc_STRCPY(d,s,n) NCURSES_VOID strcpy((d),(s)) +#define _nc_STRNCPY(d,s,n) NCURSES_VOID strncpy((d),(s),(n)) +#endif + +#if USE_STRING_HACKS && HAVE_SNPRINTF +#define _nc_SPRINTF NCURSES_VOID (snprintf) +#define _nc_SLIMIT(n) NCURSES_CAST(size_t,n), +#else +#define _nc_SPRINTF NCURSES_VOID (sprintf) +#define _nc_SLIMIT(n) /* nothing */ +#endif + +/* + * X/Open Curses does not define the arrays of terminfo/termcap names as SVr4 + * curses did, and some implementations provide them anyway, but undeclared. + */ +#ifdef DECL_CURSES_DATA_BOOLNAMES +extern char *boolnames[], *boolcodes[], *boolfnames[]; +extern char *numnames[], *numcodes[], *numfnames[]; +extern char *strnames[], *strcodes[], *strfnames[]; +#endif + +/* + * Again, an SVr4 curses feature latent in the libraries but not in headers. + */ +#ifndef DECL_CURSES_DATA_TABSIZE +#define DECL_CURSES_DATA_TABSIZE 0 +#endif + +#if DECL_CURSES_DATA_TABSIZE +extern int TABSIZE; +#undef HAVE_CURSES_DATA_TABSIZE +#define HAVE_CURSES_DATA_TABSIZE 1 +#endif + +#ifndef HAVE_CURSES_DATA_TABSIZE +#define HAVE_CURSES_DATA_TABSIZE 0 +#endif + +/* + * X/Open Curses provides termname(), whose return value is analogous to the + * SVr4 curses variable ttytype[]. + */ +#ifndef HAVE_CURSES_DATA_TTYTYPE +#define HAVE_CURSES_DATA_TTYTYPE 0 +#endif + +#ifndef DECL_CURSES_DATA_TTYTYPE +#define DECL_CURSES_DATA_TTYTYPE 0 +#endif + +#if !defined(ttytype) && (!HAVE_CURSES_DATA_TTYTYPE || DECL_CURSES_DATA_TTYTYPE) +#define ttytype termname() +#endif + +#define colored_chtype(ch, attr, pair) \ + ((chtype) (ch) | (chtype) (attr) | (chtype) COLOR_PAIR(pair)) + +/* + * Workaround for HPUX + */ +#if defined(__hpux) && !defined(NCURSES_VERSION) +#define getbegx(w) __getbegx(w) +#define getbegy(w) __getbegy(w) +#define getcurx(w) __getcurx(w) +#define getcury(w) __getcury(w) +#define getmaxx(w) __getmaxx(w) +#define getmaxy(w) __getmaxy(w) +#define getparx(w) __getparx(w) +#define getpary(w) __getpary(w) +#endif + +/* + * Workaround in case getcchar() returns a positive value when the source + * string produces only a L'\0'. + */ +#define TEST_CCHAR(s, count, then_stmt, else_stmt) \ + if ((count = getcchar(s, NULL, NULL, NULL, NULL)) > 0) { \ + wchar_t test_wch[CCHARW_MAX + 2]; \ + attr_t test_attrs; \ + NCURSES_PAIRS_T test_pair; \ + \ + if (getcchar( s, test_wch, &test_attrs, &test_pair, NULL) == OK \ + && test_wch[0] != L'\0') { \ + then_stmt \ + } else { \ + else_stmt \ + } \ + } else { \ + else_stmt \ + } +/* + * These usually are implemented as macros, but may be functions. + */ +#if !defined(getcurx) && !HAVE_GETCURX +#define getcurx(win) ((win) ? ((int)(win)->_curx) : ERR) +#define getcury(win) ((win) ? ((int)(win)->_cury) : ERR) +#endif + +#if !defined(getbegx) && !HAVE_GETBEGX +#define getbegx(win) ((win) ? ((int)(win)->_begx) : ERR) +#define getbegy(win) ((win) ? ((int)(win)->_begy) : ERR) +#endif + +#if !defined(getmaxx) && !HAVE_GETMAXX +#define getmaxx(win) ((win) ? ((int)(win)->_maxx + 1) : ERR) +#define getmaxy(win) ((win) ? ((int)(win)->_maxy + 1) : ERR) +#endif + +/* + * Solaris 10 xpg4: +#define __m_getparx(w) ((w)->_parent == (WINDOW *) 0 ? -1 \ + : (w)->_begx - (w)->_parent->_begx) + */ +#if !defined(getparx) && !HAVE_GETPARX +#ifdef __m_getparx +#define getparx(win) __m_getparx(win) +#define getpary(win) __m_getpary(win) +#else +#define getparx(win) ((win)?((win)->_parx + 1):ERR) +#define getpary(win) ((win)?((win)->_pary + 1):ERR) +#endif +#endif + +#if !defined(mvwvline) && !HAVE_MVWVLINE +#define mvwvline(w,y,x,ch,n) (move(y,x) == ERR ? ERR : wvline(w,ch,n)) +#define mvwhline(w,y,x,ch,n) (move(y,x) == ERR ? ERR : whline(w,ch,n)) +#endif + +#if !defined(mvvline) && !HAVE_MVVLINE +#define mvvline(y,x,ch,n) (move(y,x) == ERR ? ERR : vline(ch,n)) +#define mvhline(y,x,ch,n) (move(y,x) == ERR ? ERR : hline(ch,n)) +#endif + +/* + * Try to accommodate curses implementations that have no terminfo support. + */ +#if HAVE_TIGETNUM +#define TIGETNUM(ti,tc) tigetnum(ti) +#else +#define TIGETNUM(ti,tc) tgetnum(tc) +#endif + +#if HAVE_TIGETSTR +#define TIGETSTR(ti,tc) tigetstr(ti) +#else +#define TIGETSTR(ti,tc) tgetstr(tc,&area_pointer) +#endif + +/* + * So far (2013 - more than ten years), only ncurses implements + * use_extended_names(). + */ +#if defined(NCURSES_XNAMES) +#elif defined(NCURSES_VERSION) && defined(HAVE_TERM_ENTRY_H) && HAVE_TERM_ENTRY_H +#define NCURSES_XNAMES 1 +#else +#define NCURSES_XNAMES 0 +#endif + +/* + * ncurses restores the cursor in endwin(). Other libraries may not. + */ +#ifdef NCURSES_VERSION +#define stop_curses() endwin() +#else +#define stop_curses() do { endwin(); curs_set(1); } while (0) +#endif + +/* ncurses implements tparm() with varargs, X/Open with a fixed-parameter list + * (which is incompatible with legacy usage, doesn't solve any problems). + */ +#define tparm3(a,b,c) tparm(a,b,c,0,0,0,0,0,0,0) +#define tparm2(a,b) tparm(a,b,0,0,0,0,0,0,0,0) + +#define UChar(c) ((unsigned char)(c)) + +#define SIZEOF(table) (sizeof(table)/sizeof(table[0])) + +#if defined(NCURSES_VERSION) && HAVE_NC_ALLOC_H +#include <nc_alloc.h> +#if HAVE_EXIT_TERMINFO && (defined(USE_TERMINFO) || defined(USE_TINFO)) +#undef ExitProgram +#define ExitProgram(code) exit_terminfo(code) +#elif HAVE_EXIT_CURSES +#undef ExitProgram +#define ExitProgram(code) exit_curses(code) +#endif +#else /* not ncurses-tree */ +#define typeMalloc(type,n) (type *) malloc((size_t)(n) * sizeof(type)) +#define typeCalloc(type,elts) (type *) calloc((size_t)(elts), sizeof(type)) +#define typeRealloc(type,n,p) (type *) realloc(p, (size_t)(n) * sizeof(type)) +#endif + +#ifndef ExitProgram +#define ExitProgram(code) exit(code) +#endif + +#ifndef EXIT_SUCCESS +#define EXIT_SUCCESS 0 +#endif +#ifndef EXIT_FAILURE +#define EXIT_FAILURE 1 +#endif + +#undef _NC_WINDOWS +#if (defined(_WIN32) || defined(_WIN64)) +#define _NC_WINDOWS 1 +#endif + +#if defined(_NC_WINDOWS) || defined(USE_WIN32CON_DRIVER) + +#if defined(PDCURSES) +#ifdef WINVER +# if WINVER < 0x0501 +# error WINVER must at least be 0x0501 +# endif +#else +# define WINVER 0x0501 +#endif +#include <windows.h> +#include <sys/time.h> /* for struct timeval */ +#undef sleep +#define sleep(n) Sleep((n) * 1000) +#define SIGHUP 1 +#define SIGKILL 9 +#define getlogin() "username" + +#elif defined(EXP_WIN32_DRIVER) + +#if defined(HAVE_NCURSESW_NCURSES_H) +#include <ncursesw/nc_win32.h> +#elif defined(HAVE_NCURSES_NCURSES_H) +#include <ncurses/nc_win32.h> +#else +#include <nc_win32.h> +#endif + +#else + +#if defined(HAVE_NCURSESW_NCURSES_H) +#include <ncursesw/nc_mingw.h> +#elif defined(HAVE_NCURSES_NCURSES_H) +#include <ncurses/nc_mingw.h> +#else +#include <nc_mingw.h> +#endif + +#endif + +/* conflicts in test/firstlast.c */ +#undef large +#undef small + +#endif + +#ifdef NEED_TIME_H +#if TIME_WITH_SYS_TIME +# include <sys/time.h> +# include <time.h> +#else +# if HAVE_SYS_TIME_H +# include <sys/time.h> +# else +# include <time.h> +# endif +#endif +#endif + +/* + * Ultrix 3.1 + */ +#ifndef STDOUT_FILENO +#define STDOUT_FILENO 1 +#endif + +#if !HAVE_STRSTR +extern char *_nc_strstr(const char *, const char *); +#define strstr(a,b) _nc_strstr((a),(b)) +#endif /* !HAVE_STRSTR */ + +/* Use this to quiet gcc's -Wwrite-strings warnings, but accommodate SVr4 + * curses which doesn't have const parameters declared (so far) in the places + * that XSI shows. + */ +#ifndef NCURSES_CONST +#ifdef PDCURSES +#define NCURSES_CONST const /* close enough */ +#else +#define NCURSES_CONST /* nothing */ +#endif +#endif + +/* out-of-band values for representing absent capabilities */ +#define ABSENT_BOOLEAN ((signed char)-1) /* 255 */ +#define ABSENT_NUMERIC (-1) +#define ABSENT_STRING (char *)0 + +/* out-of-band values for representing cancels */ +#define CANCELLED_BOOLEAN ((signed char)-2) /* 254 */ +#define CANCELLED_NUMERIC (-2) +#define CANCELLED_STRING (char *)(-1) + +#define VALID_BOOLEAN(s) ((unsigned char)(s) <= 1) /* reject "-1" */ +#define VALID_NUMERIC(s) ((s) >= 0) +#define VALID_STRING(s) ((s) != CANCELLED_STRING && (s) != ABSENT_STRING) + +#define VT_ACSC "``aaffggiijjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~" + +#define CATCHALL(handler) do { \ + int nsig; \ + for (nsig = SIGHUP; nsig < SIGTERM; ++nsig) \ + if (nsig != SIGKILL) \ + signal(nsig, handler); \ + } while(0) + +#ifdef NCURSES_VERSION +#define InitAndCatch(init,handler) do { CATCHALL(handler); init; } while (0) +#else +#define InitAndCatch(init,handler) do { init; CATCHALL(handler); } while (0) +#endif + +#if defined(_NC_WINDOWS) || defined(USE_WIN32CON_DRIVER) +#define SetupAlarm(opt) (void)opt +#else +#define SetupAlarm(opt) if (opt) alarm((unsigned)opt) +#endif + +/* + * Workaround for clean(er) compile with Solaris's legacy curses. + * The same would be needed for HPUX 10.20 + */ +#ifndef TPUTS_ARG +#define TPUTS_ARG int +#endif + +#if defined(sun) && !defined(_XOPEN_CURSES) && !defined(NCURSES_VERSION_PATCH) +#undef TPUTS_ARG +#define TPUTS_ARG char +extern char *tgoto(char *, int, int); /* available, but not prototyped */ +#endif + +#ifndef TPUTS_PROTO +#define TPUTS_PROTO(func,value) int func(TPUTS_ARG value) +#endif + +#ifndef TPUTS_RETURN +#define TPUTS_RETURN(value) return value +#endif + +/* + * Workarounds for Solaris's X/Open curses + */ +#if !defined(KEY_MIN) && defined(__KEY_MIN) +#define KEY_MIN __KEY_MIN +#endif +#if !defined(KEY_MAX) && defined(__KEY_MIN) +#define KEY_MAX __KEY_MAX +#endif + +/* + * Workaround to build with Sun's default SVr4 curses. + */ +#ifdef NCURSES_VERSION +#ifndef HAVE_VW_PRINTW +#define HAVE_VW_PRINTW 1 +#endif +#endif + +/* + * ncurses provides arrays of capability names; X/Open discarded these SVr4 + * features. Some implementations continue to provide them (see the test + * configure script). + */ +#ifdef NCURSES_VERSION +#ifndef HAVE_CURSES_DATA_BOOLNAMES +#define HAVE_CURSES_DATA_BOOLNAMES 1 +#endif +#endif + +/* + * ncurses provides a termcap interface; a few packagers replace or displace + * its header file with an incompatible one. The demo_termcap program uses + * the ncurses file, if available. + */ +#ifdef NCURSES_VERSION +#ifndef HAVE_NCURSES_TERMCAP_H +#define HAVE_NCURSES_TERMCAP_H 0 +#endif +#ifndef HAVE_TERMCAP_H +#define HAVE_TERMCAP_H 0 +#endif +#endif + +/* + * ncurses uses const in some places where X/Open does (or did) not allow. + */ +#if defined(NCURSES_CONST) +#define CONST_MENUS NCURSES_CONST +#elif defined(PDCURSES) +#define CONST_MENUS const +#else +#define CONST_MENUS /* nothing */ +#endif + +/* + * Simplify setting up demo of threading with these macros. + */ + +#if HAVE_USE_WINDOW +#define USING_WINDOW(w,func) use_window(w, (NCURSES_WINDOW_CB) func, w) +#define USING_WINDOW1(w,func,safe) use_window(w, (NCURSES_WINDOW_CB) safe, NULL) +#define USING_WINDOW2(w,func,data) use_window(w, (NCURSES_WINDOW_CB) func, data) +#define WANT_USE_WINDOW() extern void _nc_want_use_window(void) +#else +#define USING_WINDOW(w,func) func(w, NULL) +#define USING_WINDOW1(w,func,safe) func(w) +#define USING_WINDOW2(w,func,data) func(w,data) +#define WANT_USE_WINDOW() extern void _nc_want_use_window(void) +#endif + +#if HAVE_USE_WINDOW +#define USING_SCREEN(s,func,data) use_screen(s, (NCURSES_SCREEN_CB) func, data) +#define WANT_USE_SCREEN() extern void _nc_want_use_screen(void) +#else +#define USING_SCREEN(s,func,data) func(data) +#define WANT_USE_SCREEN() extern void _nc_want_use_screen(void) +#endif + +#if defined(TRACE) && HAVE__TRACEF +#define Trace(p) _tracef p +#define USE_TRACE 1 +#define START_TRACE() \ + if ((_nc_tracing & TRACE_MAXIMUM) == 0) { \ + int t = _nc_getenv_num("NCURSES_TRACE"); \ + if (t >= 0) \ + curses_trace((unsigned) t); \ + } +extern unsigned _nc_tracing; +extern int _nc_getenv_num(const char *); +#else +#undef TRACE +#define Trace(p) /* nothing */ +#define USE_TRACE 0 +#define START_TRACE() /* nothing */ +#endif + +#define Trace2(p) /* nothing */ + +#define AddCh(c) (void) addch((chtype)(c)) +#define WAddCh(w,c) (void) waddch((w),(chtype)(c)) +#define MvAddCh(y,x,c) (void) mvaddch((y),(x),(chtype)(c)) +#define MvWAddCh(w,y,x,c) (void) mvwaddch((w),(y),(x),(chtype)(c)) +#define MvAddStr(y,x,s) (void) mvaddstr((y),(x),(s)) +#define MvWAddStr(w,y,x,s) (void) mvwaddstr((w),(y),(x),(s)) +#define MvWAddChStr(w,y,x,s) (void) mvwaddchstr((w),(y),(x),(s)) +#define MvPrintw (void) mvprintw +#define MvWPrintw (void) mvwprintw +#define MvHLine (void) mvhline +#define MvWHLine (void) mvwhline +#define MvVLine (void) mvvline +#define MvWVLine (void) mvwvline + +/* + * The macro likely uses unsigned values, while X/Open prototype uses int. + */ +#if defined(wattrset) || defined(PDCURSES) +#define AttrArg(p,a) (chtype) ((chtype)(p) | (chtype)(a)) +#else +#define AttrArg(p,a) (int) ((chtype)(p) | (chtype)(a)) +#endif + +/* + * Workaround for defective implementation of gcc attribute warn_unused_result + */ +#if defined(__GNUC__) && defined(_FORTIFY_SOURCE) +#define IGNORE_RC(func) errno = func +#else +#define IGNORE_RC(func) (void) func +#endif /* gcc workarounds */ + +#define init_mb(state) memset(&state, 0, sizeof(state)) + +#endif /* __TEST_PRIV_H */ diff --git a/deps/ncurses-5.9/test/test_add_wchstr.c b/deps/ncurses-6.3/test/test_add_wchstr.c similarity index 90% rename from deps/ncurses-5.9/test/test_add_wchstr.c rename to deps/ncurses-6.3/test/test_add_wchstr.c index a48f2c4..b1d320b 100644 --- a/deps/ncurses-5.9/test/test_add_wchstr.c +++ b/deps/ncurses-6.3/test/test_add_wchstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2009,2010,2011 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2009-2016,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_add_wchstr.c,v 1.15 2011/01/15 18:15:11 tom Exp $ + * $Id: test_add_wchstr.c,v 1.29 2021/05/08 20:04:10 tom Exp $ * * Demonstrate the waddwchstr() and wadd_wch functions. * Thomas Dickey - 2009/9/12 @@ -48,18 +49,24 @@ #define WIDE_LINEDATA #include <linedata.h> +#undef AddCh #undef MvAddCh #undef MvAddStr #undef MvWAddCh +#undef MvWAddChStr #undef MvWAddStr +#undef WAddCh -/* definitions to make it simpler to compare with test_addstr.c */ +/* + * redefinitions to simplify comparison between test_*str programs + */ #define AddNStr add_wchnstr #define AddStr add_wchstr #define MvAddNStr (void) mvadd_wchnstr #define MvAddStr (void) mvadd_wchstr #define MvWAddNStr (void) mvwadd_wchnstr #define MvWAddStr (void) mvwadd_wchstr +#define MvWAddChStr(w,y,x,s) (void) mvwadd_wchstr((w),(y),(x),(s)) #define WAddNStr wadd_wchnstr #define WAddStr wadd_wchstr @@ -90,6 +97,8 @@ static size_t temp_length; if (need > temp_length) { \ temp_length = need * 2; \ temp_buffer = typeRealloc(cchar_t, temp_length, temp_buffer); \ + if (!temp_buffer) \ + failed("TempBuffer"); \ } \ have[0] = 0; \ have[1] = 0; \ @@ -101,7 +110,7 @@ static size_t temp_length; && (temp = unctrl((chtype) have[0])) != 0 \ && strlen(temp) > 1) { \ while (*temp != '\0') { \ - have[0] = *temp++; \ + have[0] = (wchar_t) *temp++; \ setcchar(&temp_buffer[n++], have, A_NORMAL, 0, NULL); \ } \ } else { \ @@ -123,10 +132,11 @@ ChWLen(const wchar_t *source) if (!pass_ctls) { size_t adjust = 0; size_t n; - const char *s; - for (n = 0; n < result; ++n) { - if (source[n] < 256 && (s = unctrl((chtype) source[n])) != 0) { + for (n = 0; source[n] != 0; ++n) { + const char *s; + + if ((source[n] < 256) && (s = unctrl((chtype) source[n])) != 0) { adjust += (strlen(s) - 1); } } @@ -208,7 +218,7 @@ ColOf(wchar_t *buffer, int length, int margin) result += 2; break; default: - result += wcwidth(ch); + result += wcwidth((wchar_t) ch); if (ch < 32) ++result; break; @@ -289,7 +299,7 @@ AddCh(chtype ch) #define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n))) static void -test_add_wchstr(int level) +recursive_test(int level) { static bool first = TRUE; @@ -304,19 +314,33 @@ test_add_wchstr(int level) WINDOW *work = 0; WINDOW *show = 0; int margin = (2 * MY_TABSIZE) - 1; - Options option = ((m_opt ? oMove : oDefault) - | ((w_opt || (level > 0)) ? oWindow : oDefault)); + Options option = (Options) ((unsigned) (m_opt + ? oMove + : oDefault) + | (unsigned) ((w_opt || (level > 0)) + ? oWindow + : oDefault)); if (first) { static char cmd[80]; setlocale(LC_ALL, ""); - putenv(strcpy(cmd, "TABSIZE=8")); + _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd)); + putenv(cmd); initscr(); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ keypad(stdscr, TRUE); + + /* + * Show the characters added in color, to distinguish from those that + * are shifted. + */ + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + } } limit = LINES - 5; @@ -340,8 +364,8 @@ test_add_wchstr(int level) MvWVLine(work, row, margin + 1, ACS_VLINE, limit - 2); limit /= 2; - (void) mvwadd_wchstr(work, 1, 2, ChStr("String")); - (void) mvwadd_wchstr(work, limit + 1, 2, ChStr("Chars")); + MvWAddChStr(work, 1, 2, ChStr("String")); + MvWAddChStr(work, limit + 1, 2, ChStr("Chars")); wnoutrefresh(work); buffer[length = 0] = '\0'; @@ -350,27 +374,23 @@ test_add_wchstr(int level) doupdate(); - /* - * Show the characters added in color, to distinguish from those that - * are shifted. - */ if (has_colors()) { - start_color(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - wbkgdset(work, COLOR_PAIR(1) | ' '); + wbkgdset(work, (chtype) (COLOR_PAIR(1) | ' ')); } while ((ch = read_linedata(work)) != ERR && !isQUIT(ch)) { wmove(work, row, margin + 1); switch (ch) { case key_RECUR: - test_add_wchstr(level + 1); + recursive_test(level + 1); - touchwin(look); + if (look) + touchwin(look); touchwin(work); touchwin(show); - wnoutrefresh(look); + if (look) + wnoutrefresh(look); wnoutrefresh(work); wnoutrefresh(show); @@ -461,7 +481,7 @@ test_add_wchstr(int level) } break; default: - buffer[length++] = ch; + buffer[length++] = (wchar_t) ch; buffer[length] = '\0'; /* put the string in, one character at a time */ @@ -514,8 +534,8 @@ test_add_wchstr(int level) break; } } + delwin(show); if (level > 0) { - delwin(show); delwin(work); delwin(look); } @@ -575,8 +595,11 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) if (optind < argc) usage(); - test_add_wchstr(0); + recursive_test(0); endwin(); +#if NO_LEAKS + free(temp_buffer); +#endif ExitProgram(EXIT_SUCCESS); } #else diff --git a/deps/ncurses-5.9/test/test_addchstr.c b/deps/ncurses-6.3/test/test_addchstr.c similarity index 93% rename from deps/ncurses-5.9/test/test_addchstr.c rename to deps/ncurses-6.3/test/test_addchstr.c index 815ccc5..5b2df8a 100644 --- a/deps/ncurses-5.9/test/test_addchstr.c +++ b/deps/ncurses-6.3/test/test_addchstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2009-2016,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 * @@ -26,16 +27,18 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_addchstr.c,v 1.13 2010/12/12 01:28:24 tom Exp $ + * $Id: test_addchstr.c,v 1.25 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the waddchstr() and waddch functions. * Thomas Dickey - 2009/9/12 */ #include <test.priv.h> - #include <linedata.h> +/* + * redefinitions to simplify comparison between test_*str programs + */ #undef MvAddStr #undef MvWAddStr @@ -48,9 +51,6 @@ #define WAddNStr waddchnstr #define WAddStr waddchstr -#define AddCh addch -#define WAddCh waddch - #define MY_TABSIZE 8 typedef enum { @@ -65,7 +65,7 @@ static bool pass_ctls = FALSE; static bool w_opt = FALSE; static int n_opt = -1; -static attr_t show_attr; +static chtype show_attr; static chtype *temp_buffer; static size_t temp_length; @@ -101,6 +101,8 @@ ChStr(const char *source) if (need > temp_length) { temp_length = need * 2; temp_buffer = typeRealloc(chtype, temp_length, temp_buffer); + if (!temp_buffer) + failed("TempBuffer"); } do { const char *s; @@ -205,7 +207,7 @@ ColOf(char *buffer, int length, int margin) #define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n))) static void -test_adds(int level) +recursive_test(int level) { static bool first = TRUE; @@ -231,12 +233,22 @@ test_adds(int level) static char cmd[80]; setlocale(LC_ALL, ""); - putenv(strcpy(cmd, "TABSIZE=8")); + _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd)); + putenv(cmd); initscr(); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ keypad(stdscr, TRUE); + + /* + * Show the characters added in color, to distinguish from those that + * are shifted. + */ + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + } } limit = LINES - 5; @@ -270,14 +282,8 @@ test_adds(int level) doupdate(); - /* - * Show the characters added in color, to distinguish from those that - * are shifted. - */ if (has_colors()) { - start_color(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - show_attr = COLOR_PAIR(1); + show_attr = (chtype) COLOR_PAIR(1); wbkgdset(work, show_attr | ' '); } else { show_attr = A_STANDOUT; @@ -287,13 +293,15 @@ test_adds(int level) wmove(work, row, margin + 1); switch (ch) { case key_RECUR: - test_adds(level + 1); + recursive_test(level + 1); - touchwin(look); + if (look) + touchwin(look); touchwin(work); touchwin(show); - wnoutrefresh(look); + if (look) + wnoutrefresh(look); wnoutrefresh(work); wnoutrefresh(show); @@ -445,10 +453,10 @@ test_adds(int level) } } if (level > 0) { - delwin(show); delwin(work); delwin(look); } + delwin(show); } static void @@ -505,7 +513,10 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) if (optind < argc) usage(); - test_adds(0); + recursive_test(0); endwin(); +#if NO_LEAKS + free(temp_buffer); +#endif ExitProgram(EXIT_SUCCESS); } diff --git a/deps/ncurses-5.9/test/test_addstr.c b/deps/ncurses-6.3/test/test_addstr.c similarity index 93% rename from deps/ncurses-5.9/test/test_addstr.c rename to deps/ncurses-6.3/test/test_addstr.c index 5cc184a..67e540a 100644 --- a/deps/ncurses-5.9/test/test_addstr.c +++ b/deps/ncurses-6.3/test/test_addstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2009-2016,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 * @@ -26,16 +27,18 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_addstr.c,v 1.6 2010/12/12 00:17:37 tom Exp $ + * $Id: test_addstr.c,v 1.16 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the waddstr() and waddch functions. * Thomas Dickey - 2009/9/12 */ #include <test.priv.h> - #include <linedata.h> +/* + * redefinitions to simplify comparison between test_*str programs + */ #define AddNStr addnstr #define AddStr addstr #define MvAddNStr (void) mvaddnstr @@ -43,9 +46,6 @@ #define WAddNStr waddnstr #define WAddStr waddstr -#define AddCh addch -#define WAddCh waddch - #define MY_TABSIZE 8 typedef enum { @@ -129,7 +129,7 @@ ColOf(char *buffer, int length, int margin) #define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n))) static void -test_adds(int level) +recursive_test(int level) { static bool first = TRUE; @@ -155,12 +155,22 @@ test_adds(int level) static char cmd[80]; setlocale(LC_ALL, ""); - putenv(strcpy(cmd, "TABSIZE=8")); + _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd)); + putenv(cmd); initscr(); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ keypad(stdscr, TRUE); + + /* + * Show the characters added in color, to distinguish from those that + * are shifted. + */ + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + } } limit = LINES - 5; @@ -194,27 +204,23 @@ test_adds(int level) doupdate(); - /* - * Show the characters added in color, to distinguish from those that - * are shifted. - */ if (has_colors()) { - start_color(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - wbkgdset(work, COLOR_PAIR(1) | ' '); + wbkgdset(work, (chtype) (COLOR_PAIR(1) | ' ')); } while ((ch = read_linedata(work)) != ERR && !isQUIT(ch)) { wmove(work, row, margin + 1); switch (ch) { case key_RECUR: - test_adds(level + 1); + recursive_test(level + 1); - touchwin(look); + if (look) + touchwin(look); touchwin(work); touchwin(show); - wnoutrefresh(look); + if (look) + wnoutrefresh(look); wnoutrefresh(work); wnoutrefresh(show); @@ -361,8 +367,8 @@ test_adds(int level) break; } } + delwin(show); if (level > 0) { - delwin(show); delwin(work); delwin(look); } @@ -418,7 +424,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) if (optind < argc) usage(); - test_adds(0); + recursive_test(0); endwin(); ExitProgram(EXIT_SUCCESS); } diff --git a/deps/ncurses-5.9/test/test_addwstr.c b/deps/ncurses-6.3/test/test_addwstr.c similarity index 89% rename from deps/ncurses-5.9/test/test_addwstr.c rename to deps/ncurses-6.3/test/test_addwstr.c index 92334ae..22cacb9 100644 --- a/deps/ncurses-5.9/test/test_addwstr.c +++ b/deps/ncurses-6.3/test/test_addwstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2009,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2009-2016,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_addwstr.c,v 1.6 2010/12/12 00:18:00 tom Exp $ + * $Id: test_addwstr.c,v 1.17 2020/02/02 23:34:34 tom Exp $ * * Demonstrate the waddwstr() and wadd_wch functions. * Thomas Dickey - 2009/9/12 @@ -48,12 +49,16 @@ #define WIDE_LINEDATA #include <linedata.h> +#undef AddCh #undef MvAddCh #undef MvAddStr #undef MvWAddCh #undef MvWAddStr +#undef WAddCh -/* definitions to make it simpler to compare with inserts.c */ +/* + * redefinitions to simplify comparison between test_*str programs + */ #define AddNStr addnwstr #define AddStr addwstr #define MvAddNStr (void) mvaddnwstr @@ -103,8 +108,7 @@ legend(WINDOW *win, int level, Options state, wchar_t *buffer, int length) wprintw(win, "down-arrow or ^N to repeat on next line, ^W for inner window, ESC to exit.\n"); wclrtoeol(win); - wprintw(win, "Level %d,%s inserted %d characters <", level, - showstate, length); + wprintw(win, "Level %d,%s added %d characters <", level, showstate, length); waddwstr(win, buffer); waddstr(win, ">"); } @@ -137,7 +141,7 @@ ColOf(wchar_t *buffer, int length, int margin) result += 2; break; default: - result += wcwidth(ch); + result += wcwidth((wchar_t) ch); if (ch < 32) ++result; break; @@ -218,7 +222,7 @@ AddCh(chtype ch) #define LEN(n) ((length - (n) > n_opt) ? n_opt : (length - (n))) static void -test_inserts(int level) +recursive_test(int level) { static bool first = TRUE; @@ -233,19 +237,33 @@ test_inserts(int level) WINDOW *work = 0; WINDOW *show = 0; int margin = (2 * MY_TABSIZE) - 1; - Options option = ((m_opt ? oMove : oDefault) - | ((w_opt || (level > 0)) ? oWindow : oDefault)); + Options option = (Options) ((unsigned) (m_opt + ? oMove + : oDefault) + | (unsigned) ((w_opt || (level > 0)) + ? oWindow + : oDefault)); if (first) { static char cmd[80]; setlocale(LC_ALL, ""); - putenv(strcpy(cmd, "TABSIZE=8")); + _nc_STRCPY(cmd, "TABSIZE=8", sizeof(cmd)); + putenv(cmd); initscr(); (void) cbreak(); /* take input chars one at a time, no wait for \n */ (void) noecho(); /* don't echo input */ keypad(stdscr, TRUE); + + /* + * Show the characters added in color, to distinguish from those that + * are shifted. + */ + if (has_colors()) { + start_color(); + init_pair(1, COLOR_WHITE, COLOR_BLUE); + } } limit = LINES - 5; @@ -279,27 +297,23 @@ test_inserts(int level) doupdate(); - /* - * Show the characters inserted in color, to distinguish from those that - * are shifted. - */ if (has_colors()) { - start_color(); - init_pair(1, COLOR_WHITE, COLOR_BLUE); - wbkgdset(work, COLOR_PAIR(1) | ' '); + wbkgdset(work, (chtype) (COLOR_PAIR(1) | ' ')); } while ((ch = read_linedata(work)) != ERR && !isQUIT(ch)) { wmove(work, row, margin + 1); switch (ch) { case key_RECUR: - test_inserts(level + 1); + recursive_test(level + 1); - touchwin(look); + if (look) + touchwin(look); touchwin(work); touchwin(show); - wnoutrefresh(look); + if (look) + wnoutrefresh(look); wnoutrefresh(work); wnoutrefresh(show); @@ -361,7 +375,7 @@ test_inserts(int level) break; } - /* do the corresponding single-character insertion */ + /* do the corresponding single-character add */ row2 = limit + row; for (col = 0; col < length; ++col) { col2 = ColOf(buffer, col, margin); @@ -392,7 +406,7 @@ test_inserts(int level) ch = '\b'; /* FALLTHRU */ default: - buffer[length++] = ch; + buffer[length++] = (wchar_t) ch; buffer[length] = '\0'; /* put the string in, one character at a time */ @@ -416,7 +430,7 @@ test_inserts(int level) break; } - /* do the corresponding single-character insertion */ + /* do the corresponding single-character add */ switch (option) { case oDefault: if (move(limit + row, col) != ERR) { @@ -445,8 +459,8 @@ test_inserts(int level) break; } } + delwin(show); if (level > 0) { - delwin(show); delwin(work); delwin(look); } @@ -457,12 +471,12 @@ usage(void) { static const char *tbl[] = { - "Usage: inserts [options]" + "Usage: test_addwstr [options]" ,"" ,"Options:" ," -f FILE read data from given file" - ," -n NUM limit string-inserts to NUM bytes on ^N replay" - ," -m perform wmove/move separately from insert-functions" + ," -n NUM limit string-adds to NUM bytes on ^N replay" + ," -m perform wmove/move separately from add-functions" ," -w use window-parameter even when stdscr would be implied" }; unsigned n; @@ -502,7 +516,7 @@ main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) if (optind < argc) usage(); - test_inserts(0); + recursive_test(0); endwin(); ExitProgram(EXIT_SUCCESS); } diff --git a/deps/ncurses-6.3/test/test_arrays.c b/deps/ncurses-6.3/test/test_arrays.c new file mode 100644 index 0000000..7ee25ea --- /dev/null +++ b/deps/ncurses-6.3/test/test_arrays.c @@ -0,0 +1,226 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-2010,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. * + ****************************************************************************/ +/* + * $Id: test_arrays.c,v 1.9 2020/02/02 23:34:34 tom Exp $ + * + * Author: Thomas E Dickey + * + * Demonstrate the public arrays from the terminfo library. + +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolnames[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolcodes[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) boolfnames[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numnames[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numcodes[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) numfnames[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strnames[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strcodes[]; +extern NCURSES_EXPORT_VAR(NCURSES_CONST char * const ) strfnames[]; + + */ + +#define USE_TINFO +#include <test.priv.h> + +#if HAVE_TIGETSTR +#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) + +static bool opt_C; +static bool opt_T; +static bool opt_c; +static bool opt_f; +static bool opt_n; +static bool opt_t; + +#define PLAIN(opts, name) if (opts) dump_array(#name, name) + +static void +dump_array(const char *name, NCURSES_CONST char *const *list) +{ + int n; + + printf("%s:\n", name); + for (n = 0; list[n] != 0; ++n) { + printf("%5d:%s\n", n, list[n]); + } +} + +static void +dump_plain(void) +{ + PLAIN(opt_T && opt_n, boolnames); + PLAIN(opt_C && opt_c, boolcodes); + PLAIN(opt_T && opt_f, boolfnames); + + PLAIN(opt_T && opt_n, numnames); + PLAIN(opt_C && opt_c, numcodes); + PLAIN(opt_T && opt_f, numfnames); + + PLAIN(opt_T && opt_n, strnames); + PLAIN(opt_C && opt_c, strcodes); + PLAIN(opt_T && opt_f, strfnames); +} + +#define STRING(opts, name) if (opts) { printf("%s\"%s\"", c++ ? "," : "", name); } +#define NUMBER(opts, value) if (opts) { printf("%s%d", c++ ? "," : "", value); } + +static void +dump_table(void) +{ + int c = 0; + int r; + + STRING(opt_t, "Index"); + STRING(opt_t, "Type"); + STRING(opt_n, "Name"); + STRING(opt_c, "Code"); + STRING(opt_f, "FName"); + printf("\n"); + + for (r = 0; boolnames[r]; ++r) { + c = 0; + NUMBER(opt_t, r); + STRING(opt_t, "bool"); + STRING(opt_T && opt_n, boolnames[r]); + STRING(opt_C && opt_c, boolcodes[r]); + STRING(opt_T && opt_f, boolfnames[r]); + printf("\n"); + } + + for (r = 0; numnames[r]; ++r) { + c = 0; + NUMBER(opt_t, r); + STRING(opt_t, "num"); + STRING(opt_T && opt_n, numnames[r]); + STRING(opt_C && opt_c, numcodes[r]); + STRING(opt_T && opt_f, numfnames[r]); + printf("\n"); + } + + for (r = 0; strnames[r]; ++r) { + c = 0; + NUMBER(opt_t, r); + STRING(opt_t, "str"); + STRING(opt_T && opt_n, strnames[r]); + STRING(opt_C && opt_c, strcodes[r]); + STRING(opt_T && opt_f, strfnames[r]); + printf("\n"); + } +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: test_arrays [options]", + "", + "If no options are given, print all (boolean, numeric, string)", + "capability names showing their index within the tables.", + "", + "Options:", + " -C print termcap names", + " -T print terminfo names", + " -c print termcap names", + " -f print full terminfo names", + " -n print short terminfo names", + " -t print the result as CSV table", + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int n; + + while ((n = getopt(argc, argv, "CTcfnt")) != -1) { + switch (n) { + case 'C': + opt_C = TRUE; + break; + case 'T': + opt_T = TRUE; + break; + case 'c': + opt_c = TRUE; + break; + case 'f': + opt_f = TRUE; + break; + case 'n': + opt_n = TRUE; + break; + case 't': + opt_t = TRUE; + break; + default: + usage(); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(); + + if (!(opt_T || opt_C)) { + opt_T = opt_C = TRUE; + } + if (!(opt_c || opt_f || opt_n)) { + opt_c = opt_f = opt_n = TRUE; + } + + if (opt_t) { + dump_table(); + } else { + dump_plain(); + } + + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + printf("This program requires the terminfo arrays\n"); + ExitProgram(EXIT_FAILURE); +} +#endif +#else /* !HAVE_TIGETSTR */ +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + printf("This program requires the terminfo functions such as tigetstr\n"); + ExitProgram(EXIT_FAILURE); +} +#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-5.9/test/test_get_wstr.c b/deps/ncurses-6.3/test/test_get_wstr.c similarity index 86% rename from deps/ncurses-5.9/test/test_get_wstr.c rename to deps/ncurses-6.3/test/test_get_wstr.c index dc01b0e..bc86030 100644 --- a/deps/ncurses-5.9/test/test_get_wstr.c +++ b/deps/ncurses-6.3/test/test_get_wstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007-2009,2011 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-2011,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_get_wstr.c,v 1.8 2011/01/15 18:15:11 tom Exp $ + * $Id: test_get_wstr.c,v 1.12 2020/02/02 23:34:34 tom Exp $ * * Author: Thomas E Dickey * @@ -43,6 +44,7 @@ */ #include <test.priv.h> +#include <popup_msg.h> #if HAVE_CHGAT /* NetBSD curses wchgat */ @@ -79,14 +81,14 @@ Remainder(WINDOW *txtwin) static void ShowPrompt(WINDOW *txtwin, int limit) { - wchgat(txtwin, limit, A_REVERSE, 0, NULL); + wchgat(txtwin, limit, WA_REVERSE, 0, NULL); wnoutrefresh(txtwin); } static void MovePrompt(WINDOW *txtwin, int limit, int y, int x) { - wchgat(txtwin, Remainder(txtwin), A_NORMAL, 0, NULL); + wchgat(txtwin, Remainder(txtwin), WA_NORMAL, 0, NULL); wmove(txtwin, y, x); ShowPrompt(txtwin, limit); } @@ -134,8 +136,30 @@ ShowFlavor(WINDOW *strwin, WINDOW *txtwin, int flavor, int limit) } static int -test_get_wstr(int level, char **argv, WINDOW *strwin) +recursive_test(int level, char **argv, WINDOW *strwin) { + static const char *help[] = + { + "Commands:", + " q,^Q,ESC - quit this program", + " ^Q,ESC - quit help-screen", + "", + " p,<Up> - move beginning of prompt one up row", + " j,<Down> - move beginning of prompt one down row", + " h,<Left> - move beginning of prompt one left column", + " l,<Right> - move beginning of prompt one right column", + "", + " - - reduce getnstr buffer-size one column", + " + - increase getnstr buffer-size one column", + " : - prompt for input-text", + "", + " < - scroll \"left\" through getstr-functions", + " > - scroll \"right\" through getstr-functions", + "", + " w - recur to subwindow", + " ?,<F1> - show help-screen", + 0 + }; WINDOW *txtbox = 0; WINDOW *txtwin = 0; FILE *fp; @@ -225,7 +249,7 @@ test_get_wstr(int level, char **argv, WINDOW *strwin) break; case 'w': - test_get_wstr(level + 1, argv, strwin); + recursive_test(level + 1, argv, strwin); if (txtbox != 0) { touchwin(txtbox); wnoutrefresh(txtbox); @@ -311,10 +335,13 @@ test_get_wstr(int level, char **argv, WINDOW *strwin) } noecho(); (void) wattrset(txtwin, A_NORMAL); - wprintw(strwin, "%d", rc); + wprintw(strwin, "%s:", (rc == OK) ? "OK" : "ERR"); (void) waddwstr(strwin, (wchar_t *) buffer); wnoutrefresh(strwin); break; + case HELP_KEY_1: + popup_msg(stdscr, help); + break; default: beep(); break; @@ -349,7 +376,7 @@ main(int argc, char *argv[]) strwin = derwin(chrbox, 4, COLS - 2, 1, 1); - test_get_wstr(1, argv, strwin); + recursive_test(1, argv, strwin); endwin(); ExitProgram(EXIT_SUCCESS); diff --git a/deps/ncurses-5.9/test/test_getstr.c b/deps/ncurses-6.3/test/test_getstr.c similarity index 84% rename from deps/ncurses-5.9/test/test_getstr.c rename to deps/ncurses-6.3/test/test_getstr.c index a086393..0910a04 100644 --- a/deps/ncurses-5.9/test/test_getstr.c +++ b/deps/ncurses-6.3/test/test_getstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-2012,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_getstr.c,v 1.9 2009/08/29 19:02:25 tom Exp $ + * $Id: test_getstr.c,v 1.14 2020/02/02 23:34:34 tom Exp $ * * Author: Thomas E Dickey * @@ -43,6 +44,7 @@ */ #include <test.priv.h> +#include <popup_msg.h> #if HAVE_CHGAT /* Solaris SVr4 curses lacks wchgat, mvgetnstr, mvwgetnstr */ @@ -58,6 +60,15 @@ typedef enum { eMaxFlavor } Flavors; +/* + * Return-code is OK/ERR or a keyname. + */ +static const char * +ok_keyname(int code) +{ + return ((code == OK) ? "OK" : ((code == ERR) ? "ERR" : keyname(code))); +} + static bool Quit(int ch) { @@ -77,14 +88,14 @@ Remainder(WINDOW *txtwin) static void ShowPrompt(WINDOW *txtwin, int limit) { - wchgat(txtwin, limit, A_REVERSE, 0, NULL); + wchgat(txtwin, limit, WA_REVERSE, 0, NULL); wnoutrefresh(txtwin); } static void MovePrompt(WINDOW *txtwin, int limit, int y, int x) { - wchgat(txtwin, Remainder(txtwin), A_NORMAL, 0, NULL); + wchgat(txtwin, Remainder(txtwin), WA_NORMAL, 0, NULL); wmove(txtwin, y, x); ShowPrompt(txtwin, limit); } @@ -132,8 +143,30 @@ ShowFlavor(WINDOW *strwin, WINDOW *txtwin, int flavor, int limit) } static int -test_getstr(int level, char **argv, WINDOW *strwin) +recursive_test(int level, char **argv, WINDOW *strwin) { + static const char *help[] = + { + "Commands:", + " q,^Q,ESC - quit this program", + " ^Q,ESC - quit help-screen", + "", + " p,<Up> - move beginning of prompt one up row", + " j,<Down> - move beginning of prompt one down row", + " h,<Left> - move beginning of prompt one left column", + " l,<Right> - move beginning of prompt one right column", + "", + " - - reduce getnstr buffer-size one column", + " + - increase getnstr buffer-size one column", + " : - prompt for input-text", + "", + " < - scroll \"left\" through getstr-functions", + " > - scroll \"right\" through getstr-functions", + "", + " w - recur to subwindow", + " ?,<F1> - show help-screen", + 0 + }; WINDOW *txtbox = 0; WINDOW *txtwin = 0; FILE *fp; @@ -224,7 +257,7 @@ test_getstr(int level, char **argv, WINDOW *strwin) break; case 'w': - test_getstr(level + 1, argv, strwin); + recursive_test(level + 1, argv, strwin); if (txtbox != 0) { touchwin(txtbox); wnoutrefresh(txtbox); @@ -310,9 +343,12 @@ test_getstr(int level, char **argv, WINDOW *strwin) } noecho(); (void) wattrset(txtwin, A_NORMAL); - wprintw(strwin, "%d:%s", rc, buffer); + wprintw(strwin, "%s:%s", ok_keyname(rc), buffer); wnoutrefresh(strwin); break; + case HELP_KEY_1: + popup_msg(stdscr, help); + break; default: beep(); break; @@ -347,7 +383,7 @@ main(int argc, char *argv[]) strwin = derwin(chrbox, 4, COLS - 2, 1, 1); - test_getstr(1, argv, strwin); + recursive_test(1, argv, strwin); endwin(); ExitProgram(EXIT_SUCCESS); diff --git a/deps/ncurses-5.9/test/test_instr.c b/deps/ncurses-6.3/test/test_instr.c similarity index 94% rename from deps/ncurses-5.9/test/test_instr.c rename to deps/ncurses-6.3/test/test_instr.c index 627db08..f04d8a3 100644 --- a/deps/ncurses-5.9/test/test_instr.c +++ b/deps/ncurses-6.3/test/test_instr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-2010,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_instr.c,v 1.5 2010/05/01 19:13:46 tom Exp $ + * $Id: test_instr.c,v 1.10 2020/02/02 23:34:34 tom Exp $ * * Author: Thomas E Dickey * @@ -68,7 +69,7 @@ showmore(WINDOW *win, int line, char *buffer) } static int -test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) +recursive_test(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) { WINDOW *txtbox = 0; WINDOW *txtwin = 0; @@ -85,6 +86,7 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) return FALSE; } + *buffer = '\0'; if (level > 1) { txtbox = newwin(LINES - BASE_Y, COLS - level, BASE_Y, level); box(txtbox, 0, 0); @@ -150,7 +152,7 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) beep(); break; case 'w': - test_inchs(level + 1, argv, chrwin, strwin); + recursive_test(level + 1, argv, chrwin, strwin); if (txtbox != 0) { touchwin(txtbox); wnoutrefresh(txtbox); @@ -253,7 +255,7 @@ main(int argc, char *argv[]) chrwin = derwin(chrbox, 2, COLS - 2, 1, 1); strwin = derwin(chrbox, 2, COLS - 2, 3, 1); - test_inchs(1, argv, chrwin, strwin); + recursive_test(1, argv, chrwin, strwin); endwin(); ExitProgram(EXIT_SUCCESS); diff --git a/deps/ncurses-5.9/test/test_inwstr.c b/deps/ncurses-6.3/test/test_inwstr.c similarity index 94% rename from deps/ncurses-5.9/test/test_inwstr.c rename to deps/ncurses-6.3/test/test_inwstr.c index 3d2656f..81ebda7 100644 --- a/deps/ncurses-5.9/test/test_inwstr.c +++ b/deps/ncurses-6.3/test/test_inwstr.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007,2010 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 2007-2010,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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_inwstr.c,v 1.4 2010/05/01 19:13:46 tom Exp $ + * $Id: test_inwstr.c,v 1.6 2020/02/02 23:34:34 tom Exp $ * * Author: Thomas E Dickey * @@ -70,7 +71,7 @@ showmore(WINDOW *win, int line, wchar_t *buffer) } static int -test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) +recursive_test(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) { WINDOW *txtbox = 0; WINDOW *txtwin = 0; @@ -151,7 +152,7 @@ test_inchs(int level, char **argv, WINDOW *chrwin, WINDOW *strwin) beep(); break; case 'w': - test_inchs(level + 1, argv, chrwin, strwin); + recursive_test(level + 1, argv, chrwin, strwin); if (txtbox != 0) { touchwin(txtbox); wnoutrefresh(txtbox); @@ -254,7 +255,7 @@ main(int argc, char *argv[]) chrwin = derwin(chrbox, 2, COLS - 2, 1, 1); strwin = derwin(chrbox, 2, COLS - 2, 3, 1); - test_inchs(1, argv, chrwin, strwin); + recursive_test(1, argv, chrwin, strwin); endwin(); ExitProgram(EXIT_SUCCESS); diff --git a/deps/ncurses-5.9/test/test_opaque.c b/deps/ncurses-6.3/test/test_opaque.c similarity index 91% rename from deps/ncurses-5.9/test/test_opaque.c rename to deps/ncurses-6.3/test/test_opaque.c index 6ec75fa..c365ba5 100644 --- a/deps/ncurses-5.9/test/test_opaque.c +++ b/deps/ncurses-6.3/test/test_opaque.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 2007-2008,2009 Free Software Foundation, Inc. * + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2007-2008,2009 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 * @@ -26,7 +27,7 @@ * authorization. * ****************************************************************************/ /* - * $Id: test_opaque.c,v 1.9 2009/10/24 21:21:29 tom Exp $ + * $Id: test_opaque.c,v 1.14 2021/09/11 23:44:07 tom Exp $ * * Author: Thomas E Dickey * @@ -44,6 +45,9 @@ bool is_scrollok(const WINDOW *win); bool is_syncok(const WINDOW *win); int wgetscrreg (const WINDOW *, int *, int *); + bool is_pad(const WINDOW *win); + bool is_subwin(const WINDOW *win); + int wgetdelay(const WINDOW *win); */ #include <test.priv.h> @@ -51,7 +55,7 @@ #define BASE_Y 6 #define MAX_COLS 1024 -#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20080119) && NCURSES_EXT_FUNCS +#if defined(NCURSES_VERSION_PATCH) && (NCURSES_VERSION_PATCH >= 20090906) && NCURSES_EXT_FUNCS && NCURSES_OPAQUE static bool Quit(int ch) @@ -208,6 +212,8 @@ static struct { }; /* *INDENT-ON* */ +#define bool2c(c) ((c) ? 'T' : 'F') + /* * Display and/or allow update for the properties accessed in the opaque * window. Some may change state after refreshing the window, so we @@ -226,18 +232,35 @@ show_opaque(WINDOW *stswin, WINDOW *txtwin, bool before, int active) show_keyword(stswin, n, active, bool_funcs[n].name); to_result(stswin, n, before); - wprintw(stswin, "%c", bool_funcs[n].func(txtwin, -1) ? 'T' : 'F'); + wprintw(stswin, "%c", bool2c(bool_funcs[n].func(txtwin, -1))); } + show_keyword(stswin, n, active, "is_pad"); + to_result(stswin, n, TRUE); + wprintw(stswin, "%c", bool2c(is_pad(txtwin))); + + ++n; + show_keyword(stswin, n, active, "is_subwin"); + to_result(stswin, n, TRUE); + wprintw(stswin, "%c", bool2c(is_subwin(txtwin))); + + ++n; show_keyword(stswin, n, active, "wgetparent"); to_result(stswin, n, TRUE); wprintw(stswin, "%p", (void *) wgetparent(txtwin)); + ++n; + show_keyword(stswin, n, active, "wgetdelay"); + to_result(stswin, n, TRUE); + wprintw(stswin, "%d", wgetdelay(txtwin)); + ++n; show_keyword(stswin, n, active, "wgetscrreg"); to_result(stswin, n, TRUE); if (wgetscrreg(txtwin, &top, &bottom) == OK) wprintw(stswin, "%d,%d", top, bottom); + else + wprintw(stswin, "none"); wnoutrefresh(stswin); return active; diff --git a/deps/ncurses-6.3/test/test_setupterm.c b/deps/ncurses-6.3/test/test_setupterm.c new file mode 100644 index 0000000..9d582aa --- /dev/null +++ b/deps/ncurses-6.3/test/test_setupterm.c @@ -0,0 +1,216 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 2015,2016 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: Thomas E. Dickey + * + * $Id: test_setupterm.c,v 1.10 2020/02/02 23:34:34 tom Exp $ + * + * A simple demo of setupterm/restartterm. + */ +#include <test.priv.h> + +#if HAVE_TIGETSTR + +static bool a_opt = FALSE; +static bool f_opt = FALSE; +static bool n_opt = FALSE; +static bool r_opt = FALSE; + +static void +test_rc(NCURSES_CONST char *name, int actual_rc, int actual_err) +{ + int expect_rc = -1; + int expect_err = -1; + + if (name == 0) + name = getenv("TERM"); + if (name == 0) + name = "?"; + + switch (*name) { + case 'v': /* vt100 is normal */ + case 'd': /* dumb has no special flags */ + expect_rc = 0; + expect_err = 1; + break; + case 'l': /* lpr is hardcopy */ + expect_err = 1; + break; + case 'u': /* unknown is generic */ + expect_err = 0; + break; + default: + break; + } + if (n_opt) { + expect_rc = -1; + expect_err = -1; + } + printf("%s", + ((actual_rc == expect_rc && actual_err == expect_err) + ? "OK" + : "ERR")); + printf(" '%s'", name); + if (actual_rc == expect_rc) { + printf(" rc=%d", actual_rc); + } else { + printf(" rc=%d (%d)", actual_rc, expect_rc); + } + if (actual_err == expect_err) { + printf(" err=%d", actual_err); + } else { + printf(" err=%d (%d)", actual_err, expect_err); + } + printf("\n"); +} + +static void +test_setupterm(NCURSES_CONST char *name) +{ + int rc; + int err = -99; + +#if HAVE_RESTARTTERM + if (r_opt) + rc = restartterm(name, 0, f_opt ? NULL : &err); + else +#endif + rc = setupterm(name, 0, f_opt ? NULL : &err); + test_rc(name, rc, err); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: test_setupterm [options] [terminal]", + "", + "Demonstrate error-checking for setupterm and restartterm.", + "", + "Options:", + " -a automatic test for each success/error code", + " -f treat errors as fatal", + " -n set environment to disable terminfo database, assuming", + " the compiled-in paths for database also fail", +#if HAVE_RESTARTTERM + " -r test restartterm rather than setupterm", +#endif + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int n; + + while ((n = getopt(argc, argv, "afnr")) != -1) { + switch (n) { + case 'a': + a_opt = TRUE; + break; + case 'f': + f_opt = TRUE; + break; + case 'n': + n_opt = TRUE; + break; +#if HAVE_RESTARTTERM + case 'r': + r_opt = TRUE; + break; +#endif + default: + usage(); + break; + } + } + + if (n_opt) { + static char none[][25] = + { + "HOME=/GUI", + "TERMINFO=/GUI", + "TERMINFO_DIRS=/GUI" + }; + /* + * We can turn this off, but not on again, because ncurses caches the + * directory locations. + */ + printf("** without database\n"); + for (n = 0; n < 3; ++n) + putenv(none[n]); + } else { + printf("** with database\n"); + } + + /* + * The restartterm relies on an existing screen, so we make one here. + */ + if (r_opt) { + newterm("ansi", stdout, stdin); + reset_shell_mode(); + } + + if (a_opt) { + static char predef[][9] = + {"vt100", "dumb", "lpr", "unknown", "none-such"}; + if (optind < argc) { + usage(); + } + for (n = 0; n < 4; ++n) { + test_setupterm(predef[n]); + } + } else { + if (optind < argc) { + for (n = optind; n < argc; ++n) { + test_setupterm(argv[n]); + } + } else { + test_setupterm(NULL); + } + } + + ExitProgram(EXIT_SUCCESS); +} + +#else /* !HAVE_TIGETSTR */ +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + printf("This program requires the terminfo functions such as tigetstr\n"); + ExitProgram(EXIT_FAILURE); +} +#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-6.3/test/test_sgr.c b/deps/ncurses-6.3/test/test_sgr.c new file mode 100644 index 0000000..33564ad --- /dev/null +++ b/deps/ncurses-6.3/test/test_sgr.c @@ -0,0 +1,384 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 2015-2016,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: Thomas E. Dickey + * + * $Id: test_sgr.c,v 1.17 2021/03/27 22:43:36 tom Exp $ + * + * A simple demo of the sgr/sgr0 terminal capabilities. + */ +#define USE_TINFO +#include <test.priv.h> + +#if !HAVE_TIGETSTR +static GCC_NORETURN void failed(const char *); + +static void +failed(const char *msg) +{ + fprintf(stderr, "%s\n", msg); + ExitProgram(EXIT_FAILURE); +} +#endif + +#if HAVE_TIGETSTR + +static bool no_init = FALSE; +static bool q_opt = FALSE; + +static char *d_opt; +static char *e_opt; +static char **db_list; +static int db_item; + +static long total_values; + +static char * +make_dbitem(char *p, char *q) +{ + size_t need = strlen(e_opt) + 2 + (size_t) (p - q); + char *result = malloc(need); + _nc_SPRINTF(result, _nc_SLIMIT(need) "%s=%.*s", e_opt, (int) (p - q), q); + return result; +} + +static void +make_dblist(void) +{ + if (d_opt && e_opt) { + int pass; + + for (pass = 0; pass < 2; ++pass) { + char *p, *q; + size_t count = 0; + + for (p = q = d_opt; *p != '\0'; ++p) { + if (*p == ':') { + if (p != q + 1) { + if (pass) { + db_list[count] = make_dbitem(p, q); + } + count++; + } + q = p + 1; + } + } + if (p != q + 1) { + if (pass) { + db_list[count] = make_dbitem(p, q); + } + count++; + } + if (!pass) { + db_list = typeCalloc(char *, count + 1); + } + } + } +} + +static char * +next_dbitem(void) +{ + char *result = 0; + + if (db_list) { + if ((result = db_list[db_item]) == 0) { + db_item = 0; + result = db_list[0]; + } else { + db_item++; + } + } + printf("** %s\n", result ? result : "<null>"); + return result; +} + +#if NO_LEAKS +static void +free_dblist(void) +{ + if (db_list) { + int n; + for (n = 0; db_list[n]; ++n) + free(db_list[n]); + free(db_list); + db_list = 0; + } +} +#endif + +#define MAXPAR 9 +#define MAXSGR (1 << MAXPAR) +#define BITS2P(n) (count & (1 << (n - 1))) +#define MASK_SMSO (1 << 0) +#define MASK_BOLD (1 << 5) +#define MASK_REV (1 << 2) + +static void +dumpit(unsigned bits, unsigned ignore, const char *sgr, const char *sgr0) +{ + static const char sample[] = "abcdefghijklm"; + static char params[] = "SURBDBIPA"; + unsigned n; + + printf("%4u ", bits); + bits &= ~ignore; + for (n = 0; n < MAXPAR; ++n) { + putchar((int) ((bits & (unsigned) (1 << n)) ? params[n] : '-')); + } + putchar(' '); + putp(sgr); + putp(sample); + putp(sgr0); + putchar('\n'); +} + +static bool +one_bit(unsigned a, unsigned b) +{ + unsigned c = (a ^ b); + bool result = FALSE; + if (c) { + while (!(c & 1)) { + c >>= 1; + } + result = (c == 1); + } + return result; +} + +static void +brute_force(const char *name) +{ + unsigned count; + char *my_sgr; + char *my_sgr0; + char *my_bold; + char *my_revs; + char *my_smso; + char *my_name = strdup(name); + + if (db_list) { + putenv(next_dbitem()); + } + + if (!q_opt) + printf("Terminal type \"%s\"\n", my_name); + + if (no_init) { + START_TRACE(); + } else { + setupterm((NCURSES_CONST char *) my_name, 1, (int *) 0); + } + + if (!q_opt) { + if (strcmp(my_name, ttytype)) + printf("... actual \"%s\"\n", ttytype); + } + + my_sgr = tigetstr("sgr"); + my_sgr0 = tigetstr("sgr0"); + my_bold = tigetstr("bold"); + my_revs = tigetstr("rev"); + my_smso = tigetstr("smso"); + + if (!VALID_STRING(my_sgr)) { + fprintf(stderr, "no \"sgr\" capability found\n"); + } else if (!VALID_STRING(my_sgr0)) { + fprintf(stderr, "no \"sgr0\" capability found\n"); + } else { + char *values[MAXSGR + MAXPAR]; + unsigned j; + unsigned ignore = 0; + unsigned reason = 0; + unsigned repeat = 0; + for (count = 0; count < MAXSGR; ++count) { + values[count] = tparm(my_sgr, + BITS2P(1), + BITS2P(2), + BITS2P(3), + BITS2P(4), + BITS2P(5), + BITS2P(6), + BITS2P(7), + BITS2P(8), + BITS2P(9)); + if (values[count] != 0) { + values[count] = strdup(values[count]); + } + } + for (count = 0; count < MAXSGR; ++count) { + if (values[count] != 0) { + for (j = count + 1; j < MAXSGR; ++j) { + if (values[j] == 0) + continue; + if (strcmp(values[count], values[j])) + continue; + if (one_bit(count, j)) { + free(values[j]); + values[j] = 0; + } + } + } + } + for (j = 0; j < MAXPAR; ++j) { + unsigned mask = (unsigned) (1 << j); + for (count = 0; count < MAXSGR; ++count) { + if ((count & mask) != 0) + continue; + if (values[count] != 0 && values[count + mask] != 0) { + mask = 0; + break; + } + } + ignore |= mask; + } + /* smso is tested first, but often duplicates bold or reverse. */ + if (VALID_STRING(my_smso)) { + if (VALID_STRING(my_bold) && !strcmp(my_bold, my_smso)) { + repeat |= MASK_SMSO; + reason = MASK_BOLD; + } + if (VALID_STRING(my_revs) && !strcmp(my_revs, my_smso)) { + repeat |= MASK_SMSO; + reason = MASK_REV; + } + } + for (count = 0; count < MAXSGR; ++count) { + if (values[count] != 0) { + bool found = FALSE; + if ((repeat & MASK_SMSO) != 0 + && (count & MASK_SMSO) != 0) { + found = TRUE; + } else { + for (j = 0; j < count; ++j) { + if (values[j] != 0 && !strcmp(values[j], values[count])) { + if ((repeat & MASK_SMSO) != 0 + && (j & MASK_SMSO) != 0 + && (count & reason) != 0) { + continue; + } + found = TRUE; + break; + } + } + } + if (!found) { + dumpit(count, ignore, values[count], my_sgr0); + ++total_values; + } + } + } + for (count = 0; count < MAXSGR; ++count) { + free(values[count]); + } + } + free(my_name); + del_curterm(cur_term); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: test_sgr [options] [terminal]", + "", + "Print all distinct combinations of sgr capability.", + "", + "Options:", + " -d LIST colon-separated list of databases to use", + " -e NAME environment variable to set with -d option", + " -n do not initialize terminal, to test error-checking", + " -q quiet (prints only counts)", + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + int n; + char *name; + + while ((n = getopt(argc, argv, "d:e:nq")) != -1) { + switch (n) { + case 'd': + d_opt = optarg; + break; + case 'e': + e_opt = optarg; + break; + case 'n': + no_init = TRUE; + break; + case 'q': + q_opt = TRUE; + break; + default: + usage(); + break; + } + } + + make_dblist(); + + if (optind < argc) { + for (n = optind; n < argc; ++n) { + brute_force(argv[n]); + } + } else if ((name = getenv("TERM")) != 0) { + brute_force(name); + } else { + static char dumb[] = "dumb"; + brute_force(dumb); + } + + printf("%ld distinct values\n", total_values); + +#if NO_LEAKS + free_dblist(); +#endif + + ExitProgram(EXIT_SUCCESS); +} + +#else /* !HAVE_TIGETSTR */ +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + failed("This program requires the terminfo functions such as tigetstr"); + ExitProgram(EXIT_FAILURE); +} +#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-6.3/test/test_termattrs.c b/deps/ncurses-6.3/test/test_termattrs.c new file mode 100644 index 0000000..fc22216 --- /dev/null +++ b/deps/ncurses-6.3/test/test_termattrs.c @@ -0,0 +1,200 @@ +/**************************************************************************** + * Copyright 2020 Thomas E. Dickey * + * Copyright 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. * + ****************************************************************************/ +/* + * $Id: test_termattrs.c,v 1.3 2020/02/02 23:34:34 tom Exp $ + * + * Demonstrate the termattrs and term_attrs functions. + */ + +#define USE_TINFO +#include <test.priv.h> + +#if HAVE_SETUPTERM + +static FILE *my_fp; + +static void +test_termattrs(unsigned long value) +{ +#define DATA(name) { name, #name } + static struct { + unsigned long code; + const char *name; + } table[] = { +#ifdef A_ATTRIBUTES + DATA(A_ATTRIBUTES), +#endif +#ifdef A_CHARTEXT + DATA(A_CHARTEXT), +#endif +#ifdef A_COLOR + DATA(A_COLOR), +#endif +#ifdef A_STANDOUT + DATA(A_STANDOUT), +#endif +#ifdef A_UNDERLINE + DATA(A_UNDERLINE), +#endif +#ifdef A_REVERSE + DATA(A_REVERSE), +#endif +#ifdef A_BLINK + DATA(A_BLINK), +#endif +#ifdef A_DIM + DATA(A_DIM), +#endif +#ifdef A_BOLD + DATA(A_BOLD), +#endif +#ifdef A_ALTCHARSET + DATA(A_ALTCHARSET), +#endif +#ifdef A_INVIS + DATA(A_INVIS), +#endif +#ifdef A_PROTECT + DATA(A_PROTECT), +#endif +#ifdef A_HORIZONTAL + DATA(A_HORIZONTAL), +#endif +#ifdef A_LEFT + DATA(A_LEFT), +#endif +#ifdef A_LOW + DATA(A_LOW), +#endif +#ifdef A_RIGHT + DATA(A_RIGHT), +#endif +#ifdef A_TOP + DATA(A_TOP), +#endif +#ifdef A_VERTICAL + DATA(A_VERTICAL), +#endif +#ifdef A_ITALIC + DATA(A_ITALIC), +#endif + }; + size_t n; + fprintf(my_fp, "Result: %08lX\r\n", value); + for (n = 0; n < SIZEOF(table); ++n) { + if ((value & table[n].code) != 0) { + fprintf(my_fp, "%08lX %08lX %s\r\n", + table[n].code, value & table[n].code, table[n].name); + } + }; + fputs("\r\n", my_fp); +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: test_termattrs [options]" + ,"" + ,"Options:" + ," -e use stderr (default stdout)" + ," -n do not initialize terminal" + ," -s use setupterm rather than newterm" +#if USE_WIDEC_SUPPORT + ," -w use term_attrs rather than termattrs" +#endif + }; + unsigned n; + for (n = 0; n < SIZEOF(tbl); ++n) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int ch; + bool no_init = FALSE; + bool s_opt = FALSE; +#if USE_WIDEC_SUPPORT + bool w_opt = FALSE; +#endif + + my_fp = stdout; + + while ((ch = getopt(argc, argv, "ensw")) != -1) { + switch (ch) { + case 'e': + my_fp = stderr; + break; + case 'n': + no_init = TRUE; + break; + case 's': + s_opt = TRUE; + break; +#if USE_WIDEC_SUPPORT + case 'w': + w_opt = TRUE; + break; +#endif + default: + usage(); + break; + } + } + if (optind < argc) + usage(); + + if (no_init) { + START_TRACE(); + } else if (s_opt) { + setupterm((char *) 0, fileno(my_fp), (int *) 0); + } else { + newterm((char *) 0, my_fp, stdin); + } +#if USE_WIDEC_SUPPORT + if (w_opt) + test_termattrs((unsigned long) term_attrs()); + else +#endif + test_termattrs((unsigned long) termattrs()); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + fprintf(stderr, "This program requires terminfo\n"); + exit(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/test_tparm.c b/deps/ncurses-6.3/test/test_tparm.c new file mode 100644 index 0000000..1c976af --- /dev/null +++ b/deps/ncurses-6.3/test/test_tparm.c @@ -0,0 +1,489 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * * + * 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: Thomas E. Dickey + * + * $Id: test_tparm.c,v 1.20 2021/03/20 15:58:32 tom Exp $ + * + * Exercise tparm, either for all possible capabilities with fixed parameters, + * or one capability with all possible parameters. + * + * TODO: incorporate tic.h and _nc_tparm_analyze + * TODO: optionally test tiparm + * TODO: add checks/logic to handle "%s" in tparm + */ +#define USE_TINFO +#include <test.priv.h> + +static GCC_NORETURN void failed(const char *); + +static void +failed(const char *msg) +{ + fprintf(stderr, "%s\n", msg); + ExitProgram(EXIT_FAILURE); +} + +#if HAVE_TIGETSTR + +static int a_opt; +static int p_opt; +static int v_opt; + +/* + * Total tests (and failures): + */ +static long total_tests; +static long total_fails; + +/* + * Total characters formatted for tputs: + */ +static long total_nulls; +static long total_ctrls; +static long total_print; + +static int +output_func(int ch) +{ + if (ch == 0) { + total_nulls++; + } else if (ch < 32 || (ch >= 127 && ch < 160)) { + total_ctrls++; + } else { + total_print++; + } + return ch; +} + +static int +isNumeric(char *source) +{ + char *next = 0; + long value = strtol(source, &next, 0); + int result = (next == 0 || next == source || *next != '\0') ? 0 : 1; + (void) value; + return result; +} + +static int +relevant(const char *name, const char *value) +{ + int code = 1; + if (VALID_STRING(value)) { + if (strstr(value, "%p") == 0 + && strstr(value, "%d") == 0 + && strstr(value, "%s") == 0 + && (!p_opt || strstr(value, "$<") == 0)) { + if (v_opt > 2) + printf("? %s noparams\n", name); + code = 0; + } + } else { + if (v_opt > 2) { + printf("? %s %s\n", + (value == ABSENT_STRING) + ? "absent" + : "cancel", + name); + } + code = 0; + } + return code; +} + +static int +increment(int *all_parms, int *num_parms, int len_parms, int end_parms) +{ + int rc = 0; + int n; + + if (len_parms > 9) + len_parms = 9; + + if (end_parms < len_parms) { + if (all_parms[end_parms]++ >= num_parms[end_parms]) { + all_parms[end_parms] = 0; + increment(all_parms, num_parms, len_parms, end_parms + 1); + } + } + for (n = 0; n < len_parms; ++n) { + if (all_parms[n] != 0) { + rc = 1; + break; + } + } + /* return 1 until the vector resets to all 0's */ + return rc; +} + +static void +test_tparm(const char *name, const char *format, int *number) +{ + char *result = tparm(format, + number[0], + number[1], + number[2], + number[3], + number[4], + number[5], + number[6], + number[7], + number[8]); + total_tests++; + if (result != NULL) { + tputs(result, 1, output_func); + } else { + total_fails++; + } + if (v_opt > 1) + printf(".. %2d = %2d %2d %2d %2d %2d %2d %2d %2d %2d %s\n", + result != 0 ? (int) strlen(result) : -1, + number[0], + number[1], + number[2], + number[3], + number[4], + number[5], + number[6], + number[7], + number[8], + name); +} + +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: test_tparm [options] [capability] [value1 [value2 [...]]]", + "", + "Use tparm/tputs for all distinct combinations of given capability.", + "", + "Options:", + " -T TERM override $TERM; this may be a comma-separated list or \"-\"", + " to read a list from standard-input", + " -a test all combinations of parameters", + " [value1...] forms a vector of maximum parameter-values.", + " -p test capabilities with no parameters but having padding", + " -r NUM repeat tests NUM times", + " -v show values and results", + }; + unsigned n; + for (n = 0; n < SIZEOF(msg); ++n) { + fprintf(stderr, "%s\n", msg[n]); + } + ExitProgram(EXIT_FAILURE); +} + +#define PLURAL(n) n, (n != 1) ? "s" : "" +#define COLONS(n) (n >= 1) ? ":" : "" + +#define NUMFORM "%10ld" + +int +main(int argc, char *argv[]) +{ + int n; + int r_run, t_run, n_run; + char *old_term = getenv("TERM"); + int r_opt = 1; + char *t_opt = 0; + + int len_caps = 0; /* cur # of items in all_caps[] */ + int max_caps = 10; /* max # of items in all_caps[] */ + char **all_caps = typeCalloc(char *, max_caps); + + int all_parms[10]; /* workspace for "-a" option */ + + int len_terms = 0; /* cur # of items in all_terms[] */ + int max_terms = 10; /* max # of items in all_terms[] */ + char **all_terms = typeCalloc(char *, max_terms); + + int use_caps; + char **cap_name; + char **cap_data; + + int len_parms = 0; /* cur # of items in num_parms[], str_parms[] */ + int max_parms = argc + 10; /* max # of items in num_parms[], str_parms[] */ + int *num_parms = typeCalloc(int, max_parms); + char **str_parms = typeCalloc(char *, max_parms); + long use_parms = 1; + + if (all_caps == 0 || all_terms == 0 || num_parms == 0 || str_parms == 0) + failed("no memory"); + + while ((n = getopt(argc, argv, "T:apr:v")) != -1) { + switch (n) { + case 'T': + t_opt = optarg; + break; + case 'a': + ++a_opt; + break; + case 'p': + ++p_opt; + break; + case 'r': + r_opt = atoi(optarg); + break; + case 'v': + ++v_opt; + break; + default: + usage(); + break; + } + } + + /* + * If there is a nonnumeric parameter after the options, use that as the + * capability name. + */ + if (optind < argc) { + if (!isNumeric(argv[optind])) { + all_caps[len_caps++] = strdup(argv[optind++]); + } + } + + /* + * Any remaining arguments must be possible parameter values. If numeric, + * and "-a" is not set, use those as the actual values for which the + * capabilities are tested. + */ + while (optind < argc) { + if (isNumeric(argv[optind])) { + char *dummy = 0; + long value = strtol(argv[optind], &dummy, 0); + num_parms[len_parms] = (int) value; + } + str_parms[len_parms] = argv[optind]; + ++optind; + ++len_parms; + } + for (n = len_parms; n < max_parms; ++n) { + static char dummy[1]; + str_parms[n] = dummy; + } + if (v_opt) { + printf("%d parameter%s%s\n", PLURAL(len_parms), COLONS(len_parms)); + if (v_opt > 3) { + for (n = 0; n < len_parms; ++n) { + printf(" %d: %d (%s)\n", n + 1, num_parms[n], str_parms[n]); + } + } + } + + /* + * Make a list of values for $TERM. Accept "-" for standard input to + * simplify scripting a check of the whole database. + */ + old_term = strdup((old_term == 0) ? "unknown" : old_term); + if (t_opt != 0) { + if (!strcmp(t_opt, "-")) { + char buffer[BUFSIZ]; + while (fgets(buffer, sizeof(buffer) - 1, stdin) != 0) { + char *s = buffer; + char *t; + while (isspace(UChar(s[0]))) + ++s; + t = s + strlen(s); + while (t != s && isspace(UChar(t[-1]))) + *--t = '\0'; + s = strdup(s); + if (len_terms + 2 >= max_terms) { + max_terms *= 2; + all_terms = typeRealloc(char *, max_terms, all_terms); + if (all_terms == 0) + failed("no memory: all_terms"); + } + all_terms[len_terms++] = s; + } + } else { + char *s = t_opt; + char *t; + while ((t = strtok(s, ",")) != 0) { + s = 0; + if (len_terms + 2 >= max_terms) { + max_terms *= 2; + all_terms = typeRealloc(char *, max_terms, all_terms); + if (all_terms == 0) + failed("no memory: all_terms"); + } + all_terms[len_terms++] = strdup(t); + } + } + } else { + all_terms[len_terms++] = strdup(old_term); + } + all_terms[len_terms] = 0; + if (v_opt) { + printf("%d term%s:\n", PLURAL(len_terms)); + if (v_opt > 3) { + for (n = 0; n < len_terms; ++n) { + printf(" %d: %s\n", n + 1, all_terms[n]); + } + } + } + + /* + * If no capability name was selected, use the predefined list of string + * capabilities. + * + * TODO: To address the "other" systems which do not follow SVr4, + * just use the output from infocmp on $TERM. + */ + if (len_caps == 0) { +#if defined(HAVE_CURSES_DATA_BOOLNAMES) || defined(DECL_CURSES_DATA_BOOLNAMES) + for (n = 0; strnames[n] != 0; ++n) { + if (len_caps + 2 >= max_caps) { + max_caps *= 2; + all_caps = typeRealloc(char *, max_caps, all_caps); + if (all_caps == 0) { + failed("no memory: all_caps"); + } + } + all_caps[len_caps++] = strdup(strnames[n]); + } +#else + all_caps[len_caps++] = strdup("cup"); + all_caps[len_caps++] = strdup("sgr"); +#endif + } + all_caps[len_caps] = 0; + if (v_opt) { + printf("%d name%s%s\n", PLURAL(len_caps), COLONS(len_caps)); + if (v_opt > 3) { + for (n = 0; n < len_caps; ++n) { + printf(" %d: %s\n", n + 1, all_caps[n]); + } + } + } + + cap_name = typeMalloc(char *, len_caps); + cap_data = typeMalloc(char *, len_caps); + + if (r_opt <= 0) + r_opt = 1; + + if (a_opt) { + for (n = 0; n < max_parms; ++n) + if (num_parms[n]) + use_parms *= (num_parms[n] + 1); + } + + for (r_run = 0; r_run < r_opt; ++r_run) { + for (t_run = 0; t_run < len_terms; ++t_run) { + int errs; + + if (setupterm(all_terms[t_run], fileno(stdout), &errs) != OK) { + printf("** skipping %s (errs:%d)\n", all_terms[t_run], errs); + } + + /* + * Most of the capabilities have no parameters, e.g., they are + * function-keys or simple operations such as clear-display. + * Ignore those, since they do not really exercise tparm. + */ + use_caps = 0; + for (n = 0; n < len_caps; ++n) { + char *value = tigetstr(all_caps[n]); + if (relevant(all_caps[n], value)) { + cap_name[use_caps] = all_caps[n]; + cap_data[use_caps] = value; + use_caps++; + } + } + + if (v_opt) { + printf("[%d:%d] %d cap%s * %ld param%s \"%s\"\n", + r_run + 1, r_opt, + PLURAL(use_caps), + PLURAL(use_parms), + all_terms[t_run]); + } + + memset(all_parms, 0, sizeof(all_parms)); + if (a_opt) { + /* for each combination of values */ + do { + for (n_run = 0; n_run < use_caps; ++n_run) { + test_tparm(cap_name[n_run], cap_data[n_run], all_parms); + } + } + while (increment(all_parms, num_parms, len_parms, 0)); + } else { + /* for the given values */ + for (n_run = 0; n_run < use_caps; ++n_run) { + test_tparm(cap_name[n_run], cap_data[n_run], all_parms); + } + } + if (cur_term != 0) { + del_curterm(cur_term); + } else { + printf("? no cur_term\n"); + } + } + } + + printf("Tests:\n"); + printf(NUMFORM " total\n", total_tests); + if (total_fails) + printf(NUMFORM " failed\n", total_fails); + printf("Characters:\n"); + printf(NUMFORM " nulls\n", total_nulls); + printf(NUMFORM " controls\n", total_ctrls); + printf(NUMFORM " printable\n", total_print); + printf(NUMFORM " total\n", total_nulls + total_ctrls + total_print); +#if NO_LEAKS + for (n = 0; n < len_caps; ++n) { + free(all_caps[n]); + } + free(all_caps); + free(old_term); + for (n = 0; n < len_terms; ++n) { + free(all_terms[n]); + } + free(all_terms); + free(num_parms); + free(str_parms); + free(cap_name); + free(cap_data); +#endif + + ExitProgram(EXIT_SUCCESS); +} + +#else /* !HAVE_TIGETSTR */ +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + failed("This program requires the terminfo functions such as tigetstr"); +} +#endif /* HAVE_TIGETSTR */ diff --git a/deps/ncurses-6.3/test/test_vid_puts.c b/deps/ncurses-6.3/test/test_vid_puts.c new file mode 100644 index 0000000..1259ebf --- /dev/null +++ b/deps/ncurses-6.3/test/test_vid_puts.c @@ -0,0 +1,158 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2013-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. * + ****************************************************************************/ +/* + * $Id: test_vid_puts.c,v 1.12 2021/04/25 00:10:43 tom Exp $ + * + * Demonstrate the vid_puts and vid_attr functions. + * Thomas Dickey - 2013/01/12 + */ + +#define USE_TINFO +#include <test.priv.h> + +#if USE_WIDEC_SUPPORT && HAVE_SETUPTERM && HAVE_VID_PUTS + +static FILE *my_fp; +static bool p_opt = FALSE; + +static +TPUTS_PROTO(outc, c) +{ + int rc; + + rc = putc(c, my_fp); + TPUTS_RETURN(rc); +} + +static bool +outs(const char *s) +{ + if (VALID_STRING(s)) { + tputs(s, 1, outc); + return TRUE; + } + return FALSE; +} + +static void +cleanup(void) +{ + if (cur_term != 0) { + outs(exit_attribute_mode); + if (!outs(orig_colors)) + outs(orig_pair); + outs(cursor_normal); + } +} + +static void +change_attr(chtype attr) +{ + if (p_opt) { + vid_puts(attr, (short) 0, (void *) 0, outc); + } else { + vid_attr(attr, (short) 0, (void *) 0); + } +} + +static void +test_vid_puts(void) +{ + fprintf(my_fp, "Name: "); + change_attr(A_BOLD); + fputs("Bold", my_fp); + change_attr(A_REVERSE); + fputs(" Reverse", my_fp); + change_attr(A_NORMAL); + fputs("\n", my_fp); +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: test_vid_puts [options]" + ,"" + ,"Options:" + ," -e use stderr (default stdout)" + ," -n do not initialize terminal" + ," -p use vid_puts (default vid_attr)" + }; + unsigned n; + for (n = 0; n < SIZEOF(tbl); ++n) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int ch; + bool no_init = FALSE; + + my_fp = stdout; + + while ((ch = getopt(argc, argv, "enp")) != -1) { + switch (ch) { + case 'e': + my_fp = stderr; + break; + case 'n': + no_init = TRUE; + break; + case 'p': + p_opt = TRUE; + break; + default: + usage(); + break; + } + } + if (optind < argc) + usage(); + + if (no_init) { + START_TRACE(); + } else { + setupterm((char *) 0, fileno(my_fp), (int *) 0); + } + test_vid_puts(); + cleanup(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(void) +{ + printf("This program requires the wide-ncurses terminfo library\n"); + ExitProgram(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-6.3/test/test_vidputs.c b/deps/ncurses-6.3/test/test_vidputs.c new file mode 100644 index 0000000..25b7714 --- /dev/null +++ b/deps/ncurses-6.3/test/test_vidputs.c @@ -0,0 +1,159 @@ +/**************************************************************************** + * Copyright 2020,2021 Thomas E. Dickey * + * Copyright 2013-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. * + ****************************************************************************/ +/* + * $Id: test_vidputs.c,v 1.11 2021/04/25 00:10:43 tom Exp $ + * + * Demonstrate the vidputs and vidattr functions. + * Thomas Dickey - 2013/01/12 + */ + +#define USE_TINFO +#include <test.priv.h> + +#if HAVE_SETUPTERM && HAVE_VIDPUTS + +static FILE *my_fp; +static bool p_opt = FALSE; + +static +TPUTS_PROTO(outc, c) +{ + int rc; + + rc = putc(c, my_fp); + TPUTS_RETURN(rc); +} + +static bool +outs(const char *s) +{ + if (VALID_STRING(s)) { + tputs(s, 1, outc); + return TRUE; + } + return FALSE; +} + +static void +cleanup(void) +{ + if (cur_term != 0) { + outs(exit_attribute_mode); + if (!outs(orig_colors)) + outs(orig_pair); + outs(cursor_normal); + } +} + +static void +change_attr(chtype attr) +{ + if (p_opt) { + vidputs(attr, outc); + } else { + vidattr(attr); + } +} + +static void +test_vidputs(void) +{ + fprintf(my_fp, "Name: "); + change_attr(A_BOLD); + fputs("Bold", my_fp); + change_attr(A_REVERSE); + fputs(" Reverse", my_fp); + change_attr(A_NORMAL); + fputs("\n", my_fp); +} + +static void +usage(void) +{ + static const char *tbl[] = + { + "Usage: test_vidputs [options]" + ,"" + ,"Options:" + ," -e use stderr (default stdout)" + ," -n do not initialize terminal" + ," -p use vidputs (default vidattr)" + }; + unsigned n; + for (n = 0; n < SIZEOF(tbl); ++n) + fprintf(stderr, "%s\n", tbl[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc GCC_UNUSED, char *argv[]GCC_UNUSED) +{ + int ch; + bool no_init = FALSE; + + my_fp = stdout; + + while ((ch = getopt(argc, argv, "enp")) != -1) { + switch (ch) { + case 'e': + my_fp = stderr; + break; + case 'n': + no_init = TRUE; + break; + case 'p': + p_opt = TRUE; + break; + default: + usage(); + break; + } + } + if (optind < argc) + usage(); + + if (no_init) { + START_TRACE(); + } else { + setupterm((char *) 0, fileno(my_fp), (int *) 0); + } + test_vidputs(); + cleanup(); + ExitProgram(EXIT_SUCCESS); +} + +#else +int +main(int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + fprintf(stderr, "This program requires terminfo\n"); + exit(EXIT_FAILURE); +} +#endif diff --git a/deps/ncurses-5.9/test/testaddch.c b/deps/ncurses-6.3/test/testaddch.c similarity index 86% rename from deps/ncurses-5.9/test/testaddch.c rename to deps/ncurses-6.3/test/testaddch.c index 7a909e2..875c8be 100644 --- a/deps/ncurses-5.9/test/testaddch.c +++ b/deps/ncurses-6.3/test/testaddch.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2006,2009 Free Software Foundation, Inc. * + * Copyright 2020 Thomas E. Dickey * + * Copyright 1998-2013,2014 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 * @@ -29,7 +30,7 @@ * This is an example written by Alexander V. Lukyanov <lav@yars.free.net>, * to demonstrate an inconsistency between ncurses and SVr4 curses. * - * $Id: testaddch.c,v 1.7 2009/08/29 19:02:25 tom Exp $ + * $Id: testaddch.c,v 1.13 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -63,21 +64,21 @@ main( for (i = 0; i < 8; i++) { back = (i & 1) ? A_BOLD | 'B' : ' '; set = (i & 2) ? A_REVERSE : 0; - attr = (i & 4) ? COLOR_PAIR(4) : 0; + attr = (chtype) ((i & 4) ? COLOR_PAIR(4) : 0); bkgdset(back); - (void) attrset(set); + (void) attrset(AttrArg(set, 0)); attr_addstr("Test string with spaces -> <-\n", attr); } addch('\n'); for (i = 0; i < 8; i++) { - back = (i & 1) ? A_BOLD | 'B' | COLOR_PAIR(1) : ' '; - set = (i & 2) ? A_REVERSE | COLOR_PAIR(2) : 0; - attr = (i & 4) ? COLOR_PAIR(4) : 0; + back = (i & 1) ? (A_BOLD | 'B' | (chtype) COLOR_PAIR(1)) : ' '; + set = (i & 2) ? (A_REVERSE | (chtype) COLOR_PAIR(2)) : 0; + attr = (chtype) ((i & 4) ? (chtype) COLOR_PAIR(4) : 0); bkgdset(back); - (void) attrset(set); + (void) attrset(AttrArg(set, 0)); attr_addstr("Test string with spaces -> <-\n", attr); } diff --git a/deps/ncurses-5.9/test/testcurs.c b/deps/ncurses-6.3/test/testcurs.c similarity index 88% rename from deps/ncurses-5.9/test/testcurs.c rename to deps/ncurses-6.3/test/testcurs.c index 5cc62f2..2e01415 100644 --- a/deps/ncurses-5.9/test/testcurs.c +++ b/deps/ncurses-6.3/test/testcurs.c @@ -6,13 +6,13 @@ * wrs(5/28/93) -- modified to be consistent (perform identically) with either * PDCurses or under Unix System V, R4 * - * $Id: testcurs.c,v 1.43 2010/11/13 21:02:28 tom Exp $ + * $Id: testcurs.c,v 1.56 2021/03/27 22:39:50 tom Exp $ */ #include <test.priv.h> #if defined(XCURSES) -char *XCursesProgramName = "testcurs"; +const char *XCursesProgramName = "testcurs"; #endif static int initTest(WINDOW **); @@ -20,139 +20,16 @@ static void display_menu(int, int); static void inputTest(WINDOW *); static void introTest(WINDOW *); static void outputTest(WINDOW *); +#if HAVE_NEWPAD static void padTest(WINDOW *); +#endif static void scrollTest(WINDOW *); #if defined(PDCURSES) && !defined(XCURSES) static void resizeTest(WINDOW *); #endif -struct commands { - NCURSES_CONST char *text; - void (*function) (WINDOW *); -}; -typedef struct commands COMMAND; - -static const COMMAND command[] = -{ - {"General Test", introTest}, - {"Pad Test", padTest}, -#if defined(PDCURSES) && !defined(XCURSES) - {"Resize Test", resizeTest}, -#endif - {"Scroll Test", scrollTest}, - {"Input Test", inputTest}, - {"Output Test", outputTest} -}; -#define MAX_OPTIONS (int) SIZEOF(command) - -#if !HAVE_STRDUP -#define strdup my_strdup -static char * -strdup(char *s) -{ - char *p = typeMalloc(char, strlen(s) + 1); - if (p) - strcpy(p, s); - return (p); -} -#endif /* not HAVE_STRDUP */ - static int width, height; -int -main( - int argc GCC_UNUSED, - char *argv[]GCC_UNUSED) -{ - WINDOW *win; - int key; - int old_option = (-1); - int new_option = 0; - bool quit = FALSE; - int n; - - setlocale(LC_ALL, ""); - -#ifdef PDCDEBUG - PDC_debug("testcurs started\n"); -#endif - if (!initTest(&win)) - ExitProgram(EXIT_FAILURE); - - erase(); - display_menu(old_option, new_option); - for (;;) { -#ifdef A_COLOR - if (has_colors()) { - init_pair(1, COLOR_WHITE, COLOR_BLUE); - wbkgd(win, COLOR_PAIR(1)); - } else - wbkgd(win, A_REVERSE); -#else - wbkgd(win, A_REVERSE); -#endif - werase(win); - - noecho(); - keypad(stdscr, TRUE); - raw(); - key = getch(); - if (key < KEY_MIN && key > 0 && isalpha(key)) { - if (islower(key)) - key = toupper(key); - for (n = 0; n < MAX_OPTIONS; ++n) { - if (key == command[n].text[0]) { - display_menu(old_option, new_option = n); - key = ' '; - break; - } - } - } - switch (key) { - case 10: - case 13: - case KEY_ENTER: - erase(); - refresh(); - (*command[new_option].function) (win); - erase(); - display_menu(old_option, new_option); - break; - case KEY_UP: - new_option = ((new_option == 0) - ? new_option - : new_option - 1); - display_menu(old_option, new_option); - break; - case KEY_DOWN: - new_option = ((new_option == (MAX_OPTIONS - 1)) - ? new_option - : new_option + 1); - display_menu(old_option, new_option); - break; - case 'Q': - case 'q': - quit = TRUE; - break; - default: - beep(); - break; - case ' ': - break; - } - if (quit == TRUE) - break; - } - - delwin(win); - - endwin(); -#ifdef XCURSES - XCursesExit(); -#endif - ExitProgram(EXIT_SUCCESS); -} - static void Continue(WINDOW *win) { @@ -182,7 +59,7 @@ initTest(WINDOW **win) PDC_debug("initTest called\n"); #endif #ifdef TRACE - trace(TRACE_MAXIMUM); + curses_trace(TRACE_MAXIMUM); #endif initscr(); #ifdef PDCDEBUG @@ -196,7 +73,7 @@ initTest(WINDOW **win) height = 13; /* Create a drawing window */ *win = newwin(height, width, (LINES - height) / 2, (COLS - width) / 2); if (*win == NULL) { - endwin(); + stop_curses(); return 0; } return 1; @@ -283,7 +160,7 @@ inputTest(WINDOW *win) { int answered; int repeat; - int w, h, bx, by, sw, sh, i, c, num; + int w, h, bx, by, sw, sh, i, num; char buffer[80]; WINDOW *subWin; wclear(win); @@ -298,7 +175,7 @@ inputTest(WINDOW *win) #ifdef A_COLOR if (has_colors()) { init_pair(2, COLOR_WHITE, COLOR_RED); - wbkgd(subWin, COLOR_PAIR(2) | A_BOLD); + wbkgd(subWin, (chtype) COLOR_PAIR(2) | A_BOLD); } else wbkgd(subWin, A_BOLD); #else @@ -353,11 +230,16 @@ inputTest(WINDOW *win) typeahead(-1); #endif +#ifdef NCURSES_MOUSE_VERSION + mousemask(ALL_MOUSE_EVENTS, (mmask_t *) 0); +#endif #if defined(PDCURSES) mouse_set(ALL_MOUSE_EVENTS); #endif for (;;) { + int c; + wmove(win, 3, 5); c = wgetch(win); wclrtobot(win); @@ -367,8 +249,38 @@ inputTest(WINDOW *win) wprintw(win, "Key Pressed: %c", c); else wprintw(win, "Key Pressed: %s", unctrl(UChar(c))); -#if defined(PDCURSES) +#ifdef KEY_MOUSE if (c == KEY_MOUSE) { +#if defined(NCURSES_MOUSE_VERSION) +#define ButtonChanged(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, 037)) +#define ButtonPressed(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_PRESSED)) +#define ButtonDouble(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_DOUBLE_CLICKED)) +#define ButtonTriple(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_TRIPLE_CLICKED)) +#define ButtonRelease(n) ((event.bstate) & NCURSES_MOUSE_MASK(1, NCURSES_BUTTON_RELEASED)) + MEVENT event; + int button = 0; + + getmouse(&event); + if (ButtonChanged(1)) + button = 1; + else if (ButtonChanged(2)) + button = 2; + else if (ButtonChanged(3)) + button = 3; + else + button = 0; + wmove(win, 4, 18); + wprintw(win, "Button %d: ", button); + if (ButtonPressed(button)) + wprintw(win, "pressed: "); + else if (ButtonDouble(button)) + wprintw(win, "double: "); + else if (ButtonTriple(button)) + wprintw(win, "triple: "); + else + wprintw(win, "released: "); + wprintw(win, " Position: Y: %d X: %d", event.y, event.x); +#elif defined(PDCURSES) int button = 0; request_mouse_pos(); if (BUTTON_CHANGED(1)) @@ -390,8 +302,9 @@ inputTest(WINDOW *win) else wprintw(win, "released: "); wprintw(win, " Position: Y: %d X: %d", MOUSE_Y_POS, MOUSE_X_POS); +#endif /* NCURSES_VERSION vs PDCURSES */ } -#endif +#endif /* KEY_MOUSE */ wrefresh(win); if (c == ' ') break; @@ -415,7 +328,7 @@ inputTest(WINDOW *win) "%d %[][a-zA-Z]s", "%d %[^0-9]" }; - const char *format = fmt[(unsigned) repeat % SIZEOF(fmt)]; + char *format = strdup(fmt[(unsigned) repeat % SIZEOF(fmt)]); wclear(win); MvWAddStr(win, 3, 2, "The window should have moved"); @@ -431,19 +344,19 @@ inputTest(WINDOW *win) noraw(); num = 0; *buffer = 0; - answered = mvwscanw(win, 7, 6, strdup(format), &num, buffer); + answered = mvwscanw(win, 7, 6, format, &num, buffer); MvWPrintw(win, 8, 6, "String: %s Number: %d (%d values read)", buffer, num, answered); Continue(win); ++repeat; + free(format); } while (answered > 0); } static void outputTest(WINDOW *win) { - WINDOW *win1; char Buffer[80]; chtype ch; int by, bx; @@ -483,7 +396,7 @@ outputTest(WINDOW *win) MvWAddStr(win, 6, 1, "display of at least 24 LINES by 75 COLUMNS"); Continue(win); } else { - win1 = newwin(10, 50, 14, 25); + WINDOW *win1 = newwin(10, 50, 14, 25); if (win1 == NULL) { endwin(); return; @@ -491,7 +404,7 @@ outputTest(WINDOW *win) #ifdef A_COLOR if (has_colors()) { init_pair(3, COLOR_BLUE, COLOR_WHITE); - wbkgd(win1, COLOR_PAIR(3)); + wbkgd(win1, (chtype) COLOR_PAIR(3)); } else wbkgd(win1, A_NORMAL); #else @@ -645,7 +558,7 @@ resizeTest(WINDOW *dummy GCC_UNUSED) win1 = newwin(10, 50, 14, 25); if (win1 == NULL) { - endwin(); + stop_curses(); return; } #ifdef A_COLOR @@ -673,12 +586,15 @@ resizeTest(WINDOW *dummy GCC_UNUSED) } #endif +#if HAVE_NEWPAD static void padTest(WINDOW *dummy GCC_UNUSED) { - WINDOW *pad, *spad; + WINDOW *pad; if ((pad = newpad(50, 100)) != 0) { + WINDOW *spad; + wattron(pad, A_REVERSE); MvWAddStr(pad, 5, 2, "This is a new pad"); (void) wattrset(pad, A_NORMAL); @@ -693,9 +609,11 @@ padTest(WINDOW *dummy GCC_UNUSED) raw(); wgetch(pad); - spad = subpad(pad, 12, 25, 6, 52); - MvWAddStr(spad, 2, 2, "This is a new subpad"); - box(spad, 0, 0); + if ((spad = subpad(pad, 12, 25, 6, 52)) != 0) { + MvWAddStr(spad, 2, 2, "This is a new subpad"); + box(spad, 0, 0); + delwin(spad); + } prefresh(pad, 0, 0, 0, 0, 15, 75); keypad(pad, TRUE); raw(); @@ -711,6 +629,28 @@ padTest(WINDOW *dummy GCC_UNUSED) delwin(pad); } } +#endif /* HAVE_NEWPAD */ + +struct commands { + NCURSES_CONST char *text; + void (*function) (WINDOW *); +}; +typedef struct commands COMMAND; + +static const COMMAND command[] = +{ + {"General Test", introTest}, +#if HAVE_NEWPAD + {"Pad Test", padTest}, +#endif +#if defined(PDCURSES) && !defined(XCURSES) + {"Resize Test", resizeTest}, +#endif + {"Scroll Test", scrollTest}, + {"Input Test", inputTest}, + {"Output Test", outputTest} +}; +#define MAX_OPTIONS (int) SIZEOF(command) static void display_menu(int old_option, int new_option) @@ -735,3 +675,99 @@ display_menu(int old_option, int new_option) "Use Up and Down Arrows to select - Enter to run - Q to quit"); refresh(); } + +int +main( + int argc GCC_UNUSED, + char *argv[]GCC_UNUSED) +{ + WINDOW *win; + int old_option = (-1); + int new_option = 0; + bool quit = FALSE; + int n; + + setlocale(LC_ALL, ""); + +#ifdef PDCDEBUG + PDC_debug("testcurs started\n"); +#endif + if (!initTest(&win)) + ExitProgram(EXIT_FAILURE); + + erase(); + display_menu(old_option, new_option); + + for (;;) { + int key; + +#ifdef A_COLOR + if (has_colors()) { + init_pair(1, COLOR_WHITE, COLOR_BLUE); + wbkgd(win, (chtype) COLOR_PAIR(1)); + } else + wbkgd(win, A_REVERSE); +#else + wbkgd(win, A_REVERSE); +#endif + werase(win); + + noecho(); + keypad(stdscr, TRUE); + raw(); + key = getch(); + if (key < KEY_MIN && key > 0 && isalpha(key)) { + if (islower(key)) + key = toupper(key); + for (n = 0; n < MAX_OPTIONS; ++n) { + if (key == command[n].text[0]) { + display_menu(old_option, new_option = n); + key = ' '; + break; + } + } + } + switch (key) { + case 10: + case 13: + case KEY_ENTER: + erase(); + refresh(); + (*command[new_option].function) (win); + erase(); + display_menu(old_option, new_option); + break; + case KEY_UP: + new_option = ((new_option == 0) + ? new_option + : new_option - 1); + display_menu(old_option, new_option); + break; + case KEY_DOWN: + new_option = ((new_option == (MAX_OPTIONS - 1)) + ? new_option + : new_option + 1); + display_menu(old_option, new_option); + break; + case 'Q': + case 'q': + quit = TRUE; + break; + default: + beep(); + break; + case ' ': + break; + } + if (quit == TRUE) + break; + } + + delwin(win); + + stop_curses(); +#ifdef XCURSES + XCursesExit(); +#endif + ExitProgram(EXIT_SUCCESS); +} diff --git a/deps/ncurses-5.9/test/testscanw.c b/deps/ncurses-6.3/test/testscanw.c similarity index 91% rename from deps/ncurses-5.9/test/testscanw.c rename to deps/ncurses-6.3/test/testscanw.c index 79589c2..251c464 100644 --- a/deps/ncurses-5.9/test/testscanw.c +++ b/deps/ncurses-6.3/test/testscanw.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2002,2006 Free Software Foundation, Inc. * + * Copyright 2019,2020 Thomas E. Dickey * + * Copyright 1998-2002,2006 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 * @@ -29,7 +30,7 @@ * Date: 1997/03/17 * From: bayern@morpheus.cis.yale.edu * - * $Id: testscanw.c,v 1.11 2006/04/01 19:08:03 tom Exp $ + * $Id: testscanw.c,v 1.13 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> @@ -47,7 +48,7 @@ main(int argc, char *argv[]) echo(); #if 0 - trace(TRACE_UPDATE | TRACE_CALLS); + curses_trace(TRACE_UPDATE | TRACE_CALLS); #endif while (argc > 1) { if (isdigit(UChar(*argv[1]))) diff --git a/deps/ncurses-6.3/test/tput-colorcube b/deps/ncurses-6.3/test/tput-colorcube new file mode 100644 index 0000000..67a4997 --- /dev/null +++ b/deps/ncurses-6.3/test/tput-colorcube @@ -0,0 +1,131 @@ +#!/bin/sh +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 2016 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. # +############################################################################## +# $Id: tput-colorcube,v 1.2 2020/02/02 23:34:34 tom Exp $ +# Use this script to print an xterm-style color cube, e.g., as done in +# the xterm 88colors2.pl and 256colors2.pl scripts. + +failed() { + printf "?? $*\n" >&2 + exit 1 +} + +newline() { + tput op + printf "\n" +} + +if [ $# = 1 ] +then + myterm=$1 +elif [ $# = 0 ] +then + myterm=$TERM +else + failed "expected one parameter or none" +fi + +colors=$(tput -T $myterm colors 2>/dev/null) +if [ ${colors:-0} -le 0 ] +then + myterm=${myterm%%-color} + colors=$(tput -T $myterm colors 2>/dev/null) +fi +if [ ${colors:-0} -le 0 ] +then + failed "terminal $myterm does not support color" +fi + +printf "System colors:\n" + +color=0 +inrow=$colors +to_do=$colors +[ $colors -gt 256 ] && colors=256 +[ $inrow -gt 8 ] && inrow=8 +[ $to_do -gt 16 ] && to_do=16 +while [ $color -lt $to_do ] +do + [ $color = $inrow ] && newline + tput setab $color + printf ' ' + color=$(expr $color + 1) +done +newline + +[ $colors -le 16 ] && exit + +if [ $colors = 256 ] +then + cube=6 + ramp=232 +elif [ $colors -ge 88 ] +then + cube=4 + ramp=80 +else + exit +fi + +printf "\n" +printf "Color cube, ${cube}x${cube}x${cube}:\n" +g=0 +cube2=$(expr $cube \* $cube) +while [ $g -lt $cube ] +do + r=0 + while [ $r -lt $cube ] + do + b=0 + while [ $b -lt $cube ] + do + color=$(expr 16 + \( $r \* $cube2 \) + \( $g \* $cube \) + $b) + tput setab $color + printf ' ' + b=$(expr $b + 1) + done + tput op + printf ' ' + r=$(expr $r + 1) + done + newline + g=$(expr $g + 1) +done + +printf "\n" +printf "Grayscale ramp:\n" +color=$ramp +while [ $color -lt $colors ] +do + tput setab $color + printf ' ' + color=$(expr $color + 1) +done +newline +# vi:ts=4 sw=4 diff --git a/deps/ncurses-6.3/test/tput-initc b/deps/ncurses-6.3/test/tput-initc new file mode 100644 index 0000000..9d71c4f --- /dev/null +++ b/deps/ncurses-6.3/test/tput-initc @@ -0,0 +1,156 @@ +#!/bin/sh +############################################################################## +# Copyright 2020 Thomas E. Dickey # +# Copyright 2016 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. # +############################################################################## +# $Id: tput-initc,v 1.6 2020/02/02 23:34:34 tom Exp $ +# Some of the ".dat" files in ncurses' test-directory give r/g/b numbers for +# default palettes of xterm and Linux console. This script reads the numbers +# and (assuming the same or compatible terminal) uses tput to (re)initialize +# the palette using those numbers. + +failed() { + printf "?? $*\n" >&2 + exit 1 +} + +usage() { + cat >&2 <<-EOF + usage: $0 [-r] [-s] [palette-data] + + Use this script with a palette data-file to (re)initialize colors with + tput. This script assumes arrangements for 16-, 88- and 256-colors + like the xterm 88colors2.pl and 256colors2.pl scripts. + + Options: + -r reverse palette + -s reverse system colors (first 16 if more than 16 colors) +EOF + exit 1 +} + +opt_r=no +opt_s=no + +while getopts "rs" option "$@" +do + case $option in + (r) + opt_r=yes + ;; + (s) + opt_s=yes + ;; + (*) + usage + ;; + esac +done +shift $(expr $OPTIND - 1) + +if [ $# = 1 ] +then + file=$1 +elif [ $# = 0 ] +then + file=$TERM.dat +else + failed "expected one parameter or none" +fi + +if [ ! -f "$file" ] +then + if [ -f "$file.dat" ] + then + file="$file.dat" + else + failed "no such file: $file" + fi +fi + +myterm=${file%%.dat} +colors=$(tput -T $myterm colors 2>/dev/null) +if [ ${colors:-0} -le 0 ] +then + myterm=${myterm%%-color} + colors=$(tput -T $myterm colors 2>/dev/null) +fi +if [ ${colors:-0} -le 0 ] +then + failed "terminal $myterm does not support color" +fi + +cat $file |\ +awk -v opt_r=$opt_r \ + -v opt_s=$opt_s \ + -v colors=$colors \ + -v myterm=$myterm ' +BEGIN { + limit = 1000; + range = -1; + cramp = -1; + if ( colors == 88 ) { + cramp = 80; + } else if ( colors = 256 ) { + cramp = 232; + } +} +function scaled(n) { + return (n * 1000)/limit; +} + +/^scale:[0-9]+/{ + sub("^scale:","",$0); + limit = $0; +} + +/^[0-9]+:/{ + sub(":","",$1); + item = $1 + 0; + if (range < item) { + range = item; + } + params[$1] = sprintf ("%d %d %d", scaled($2),scaled($3),scaled($4)); +} +END { + for (n = 0; n <= range; ++n) { + m = n; + if ( opt_r == "yes" ) { + if ( colors <= 16 ) { + m = range - n; + } else if ( ( opt_s == "yes" ) && ( n < 16 ) ) { + m = 15 - n; + } else if ( n >= cramp ) { + m = cramp + colors - 1 - n; + } else { + m = 16 + cramp - 1 - n; + } + } + printf "tput -T%s initc %d %s\n", myterm, m, params[n]; + } +} +' |sh - diff --git a/deps/ncurses-6.3/test/tracemunch b/deps/ncurses-6.3/test/tracemunch new file mode 100755 index 0000000..b2d3b03 --- /dev/null +++ b/deps/ncurses-6.3/test/tracemunch @@ -0,0 +1,939 @@ +#!/usr/bin/env perl +# $Id: tracemunch,v 1.41 2021/09/04 10:31:03 tom Exp $ +############################################################################## +# Copyright 2018-2020,2021 Thomas E. Dickey # +# Copyright 1998-2005,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. # +############################################################################## +# tracemunch -- compactify ncurses trace logs +# +# The error logs produced by ncurses with tracing enabled can be very tedious +# to wade through. This script helps by compacting runs of log lines that +# can be conveniently expressed as higher-level operations. + +use strict; +use warnings; + +$| = 1; + +our $putattr = + 'PutAttrChar\(\{\{ ' . "'(.)'" + . ' = 0[0-7]+ \}\}\) at \(([0-9]+), ([0-9]+)\)'; +our $waddnstr = +'^called \{waddnstr\((0x[[:xdigit:]]+|window\d+),"((\\.|[^\"]*))",[-]?[0-9]+\)'; + +our %TR = qw( + DISABLE 0x0000 + TIMES 0x0001 + TPUTS 0x0002 + UPDATE 0x0004 + MOVE 0x0008 + CHARPUT 0x0010 + ORDINARY 0x001F + CALLS 0x0020 + VIRTPUT 0x0040 + IEVENT 0x0080 + BITS 0x0100 + ICALLS 0x0200 + CCALLS 0x0400 + DATABASE 0x0800 + ATTRS 0x1000 +); + +our $tracelevel = 0; + +our $tSCREEN = 1; # SCREEN* +our $tWINDOW = 2; # WINDOW* +our $tTERMINAL = 3; # TERMINAL* +our $tPANEL = 4; # PANEL* +our $tFIELD = 5; # FIELD* +our $tFORM = 5; # FORM* +our $tMENU = 6; # MENU* +our $tITEM = 7; # ITEM* + +our %known_p1_types = ( + $tSCREEN => "SCREEN*", + $tWINDOW => "WINDOW*", + $tTERMINAL => "TERMINAL*", + $tPANEL => "PANEL*", + $tFORM => "FORM*", + $tFIELD => "FIELD*", + $tMENU => "MENU*", + $tITEM => "ITEM*", +); + +# If the trace is complete, we can infer addresses using the return value from +# newwin, etc. But if it is incomplete, we can still check for special cases +# such as SCREEN* and WINDOW* parameters. In this table, the type for the +# first parameter is encoded, relying upon an ncurses programming convention: +our %known_p1 = ( + TransformLine => $tSCREEN, + _nc_console_read => $tSCREEN, + _nc_freewin => $tWINDOW, + _nc_initscr => $tSCREEN, + _nc_makenew => $tSCREEN, + _nc_mingw_console_read => $tSCREEN, + _nc_reset_colors => $tSCREEN, + _nc_scroll_optimize => $tSCREEN, + _nc_tinfo => $tSCREEN, + _nc_tinfo_mvcur => $tSCREEN, + _nc_wgetch => $tWINDOW, + adjust_window => $tWINDOW, + assume_default_colors => $tSCREEN, + attr_get => $tWINDOW, + baudrate => $tSCREEN, + beep => $tSCREEN, + border_set => $tWINDOW, + bottom_panel => $tPANEL, + bottom_panel => $tPANEL, + box => $tWINDOW, + box_set => $tWINDOW, + can_change_color => $tSCREEN, + cbreak => $tSCREEN, + ceiling_panel => $tSCREEN, + clearok => $tWINDOW, + color_content => $tSCREEN, + copywin => $tWINDOW, + current_item => $tMENU, + curs_set => $tSCREEN, + decrease_size => $tSCREEN, + def_prog_mode => $tSCREEN, + def_shell_mode => $tSCREEN, + define_key => $tSCREEN, + del_curterm => $tSCREEN, + del_panel => $tPANEL, + del_panel => $tPANEL, + delay_output => $tSCREEN, + delscreen => $tSCREEN, + delwin => $tWINDOW, + derwin => $tWINDOW, + doupdate => $tSCREEN, + dup_field => $tFIELD, + dupwin => $tWINDOW, + echo => $tSCREEN, + endwin => $tSCREEN, + erasechar => $tSCREEN, + field_opts_off => $tFIELD, + field_opts_on => $tFIELD, + filter => $tSCREEN, + flash => $tSCREEN, + flushinp => $tSCREEN, + form_driver => $tFORM, + form_driver_w => $tFORM, + form_opts_off => $tFORM, + form_opts_on => $tFORM, + free_field => $tFIELD, + free_form => $tFORM, + free_item => $tITEM, + free_menu => $tMENU, + getattrs => $tWINDOW, + getbegx => $tWINDOW, + getbegy => $tWINDOW, + getbkgd => $tWINDOW, + getcurx => $tWINDOW, + getcury => $tWINDOW, + getmaxx => $tWINDOW, + getmaxy => $tWINDOW, + getmouse => $tSCREEN, + getparx => $tWINDOW, + getpary => $tWINDOW, + ground_panel => $tSCREEN, + halfdelay => $tSCREEN, + has_ic => $tSCREEN, + has_il => $tSCREEN, + has_key => $tSCREEN, + hide_panel => $tPANEL, + hide_panel => $tPANEL, + idcok => $tWINDOW, + idlok => $tWINDOW, + immedok => $tWINDOW, + increase_size => $tSCREEN, + init_color => $tSCREEN, + init_pair => $tSCREEN, + intrflush => $tSCREEN, + is_cleared => $tWINDOW, + is_idcok => $tWINDOW, + is_idlok => $tWINDOW, + is_immedok => $tWINDOW, + is_keypad => $tWINDOW, + is_leaveok => $tWINDOW, + is_linetouched => $tWINDOW, + is_nodelay => $tWINDOW, + is_notimeout => $tWINDOW, + is_pad => $tWINDOW, + is_scrollok => $tWINDOW, + is_subwin => $tWINDOW, + is_syncok => $tWINDOW, + is_term_resized => $tSCREEN, + is_wintouched => $tWINDOW, + item_count => $tMENU, + item_description => $tITEM, + item_index => $tITEM, + item_init => $tMENU, + item_name => $tITEM, + item_opts => $tITEM, + item_opts_off => $tITEM, + item_opts_on => $tITEM, + item_term => $tMENU, + item_userptr => $tITEM, + item_value => $tITEM, + item_visible => $tITEM, + key_defined => $tSCREEN, + keybound => $tSCREEN, + keyok => $tSCREEN, + keypad => $tWINDOW, + killchar => $tSCREEN, + leaveok => $tWINDOW, + link_field => $tFIELD, + longname => $tSCREEN, + menu_back => $tMENU, + menu_driver => $tMENU, + menu_fore => $tMENU, + menu_format => $tMENU, + menu_grey => $tMENU, + menu_init => $tMENU, + menu_items => $tMENU, + menu_mark => $tMENU, + menu_opts => $tMENU, + menu_opts_off => $tMENU, + menu_opts_on => $tMENU, + menu_pad => $tMENU, + menu_pattern => $tMENU, + menu_spacing => $tMENU, + menu_sub => $tMENU, + menu_term => $tMENU, + menu_userptr => $tMENU, + menu_win => $tMENU, + meta => $tWINDOW, + mouseinterval => $tSCREEN, + mousemask => $tSCREEN, + move_field => $tFIELD, + move_panel => $tPANEL, + move_panel => $tPANEL, + mvcur => $tSCREEN, + mvderwin => $tWINDOW, + mvwadd_wch => $tWINDOW, + mvwadd_wchnstr => $tWINDOW, + mvwadd_wchstr => $tWINDOW, + mvwaddch => $tWINDOW, + mvwaddchnstr => $tWINDOW, + mvwaddchstr => $tWINDOW, + mvwaddnstr => $tWINDOW, + mvwaddnwstr => $tWINDOW, + mvwaddstr => $tWINDOW, + mvwaddwstr => $tWINDOW, + mvwchgat => $tWINDOW, + mvwdelch => $tWINDOW, + mvwget_wch => $tWINDOW, + mvwget_wstr => $tWINDOW, + mvwgetch => $tWINDOW, + mvwgetn_wstr => $tWINDOW, + mvwgetnstr => $tWINDOW, + mvwgetstr => $tWINDOW, + mvwhline => $tWINDOW, + mvwhline_set => $tWINDOW, + mvwin => $tWINDOW, + mvwin_wch => $tWINDOW, + mvwin_wchnstr => $tWINDOW, + mvwin_wchstr => $tWINDOW, + mvwinch => $tWINDOW, + mvwinchnstr => $tWINDOW, + mvwinchstr => $tWINDOW, + mvwins_nwstr => $tWINDOW, + mvwins_wch => $tWINDOW, + mvwins_wstr => $tWINDOW, + mvwinsch => $tWINDOW, + mvwinsnstr => $tWINDOW, + mvwinsstr => $tWINDOW, + mvwinstr => $tWINDOW, + mvwinwstr => $tWINDOW, + mvwvline => $tWINDOW, + mvwvline_set => $tWINDOW, + new_panel => $tWINDOW, + new_panel => $tWINDOW, + newpad => $tSCREEN, + newterm => $tSCREEN, + newwin => $tSCREEN, + nl => $tSCREEN, + nocbreak => $tSCREEN, + nodelay => $tWINDOW, + noecho => $tSCREEN, + nofilter => $tSCREEN, + nonl => $tSCREEN, + noqiflush => $tSCREEN, + noraw => $tSCREEN, + notimeout => $tWINDOW, + overlap => $tWINDOW, + overlay => $tWINDOW, + overwrite => $tWINDOW, + pair_content => $tSCREEN, + panel_above => $tPANEL, + panel_above => $tPANEL, + panel_below => $tPANEL, + panel_below => $tPANEL, + panel_hidden => $tPANEL, + panel_hidden => $tPANEL, + panel_userptr => $tPANEL, + panel_userptr => $tPANEL, + panel_window => $tPANEL, + panel_window => $tPANEL, + pecho_wchar => $tWINDOW, + pechochar => $tWINDOW, + pnoutrefresh => $tWINDOW, + pos_form_cursor => $tFORM, + pos_menu_cursor => $tMENU, + post_form => $tFORM, + post_menu => $tMENU, + putwin => $tWINDOW, + qiflush => $tSCREEN, + raw => $tSCREEN, + redrawwin => $tWINDOW, + replace_panel => $tPANEL, + replace_panel => $tPANEL, + reset_prog_mode => $tSCREEN, + reset_shell_mode => $tSCREEN, + resetty => $tSCREEN, + resize_term => $tSCREEN, + resizeterm => $tSCREEN, + restartterm => $tSCREEN, + ripoffline => $tSCREEN, + savetty => $tSCREEN, + scale_menu => $tMENU, + scr_init => $tSCREEN, + scr_restore => $tSCREEN, + scr_set => $tSCREEN, + scroll => $tWINDOW, + scrollok => $tWINDOW, + set_current_field => $tFORM, + set_current_item => $tMENU, + set_curterm => $tTERMINAL, + set_field_back => $tFIELD, + set_field_buffer => $tFIELD, + set_field_fore => $tFIELD, + set_field_init => $tFORM, + set_field_just => $tFIELD, + set_field_opts => $tFIELD, + set_field_pad => $tFIELD, + set_field_status => $tFIELD, + set_field_term => $tFORM, + set_field_type => $tFIELD, + set_field_userptr => $tFIELD, + set_form_fields => $tFORM, + set_form_init => $tFORM, + set_form_opts => $tFORM, + set_form_page => $tFORM, + set_form_sub => $tFORM, + set_form_term => $tFORM, + set_form_userptr => $tFORM, + set_form_win => $tFORM, + set_item_init => $tMENU, + set_item_opts => $tITEM, + set_item_term => $tMENU, + set_item_userptr => $tITEM, + set_item_value => $tITEM, + set_menu_back => $tMENU, + set_menu_fore => $tMENU, + set_menu_format => $tMENU, + set_menu_grey => $tMENU, + set_menu_init => $tMENU, + set_menu_items => $tMENU, + set_menu_mark => $tMENU, + set_menu_opts => $tMENU, + set_menu_pad => $tMENU, + set_menu_pattern => $tMENU, + set_menu_spacing => $tMENU, + set_menu_sub => $tMENU, + set_menu_term => $tMENU, + set_menu_userptr => $tMENU, + set_menu_win => $tMENU, + set_new_page => $tFIELD, + set_panel_userptr => $tPANEL, + set_panel_userptr => $tPANEL, + set_term => $tSCREEN, + set_top_row => $tMENU, + show_panel => $tPANEL, + show_panel => $tPANEL, + slk_attr => $tSCREEN, + slk_attr_set => $tSCREEN, + slk_attroff => $tSCREEN, + slk_attron => $tSCREEN, + slk_attrset => $tSCREEN, + slk_clear => $tSCREEN, + slk_color => $tSCREEN, + slk_init => $tSCREEN, + slk_label => $tSCREEN, + slk_noutrefresh => $tSCREEN, + slk_refresh => $tSCREEN, + slk_restore => $tSCREEN, + slk_set => $tSCREEN, + slk_touch => $tSCREEN, + start_color => $tSCREEN, + subwin => $tWINDOW, + syncok => $tWINDOW, + termattrs => $tSCREEN, + termname => $tSCREEN, + tgetflag => $tSCREEN, + tgetnum => $tSCREEN, + tigetflag => $tSCREEN, + tigetnum => $tSCREEN, + tigetstr => $tSCREEN, + tinfo => $tSCREEN, + top_panel => $tPANEL, + top_panel => $tPANEL, + top_row => $tMENU, + touchline => $tWINDOW, + touchwin => $tWINDOW, + typeahead => $tSCREEN, + unfocus_current_field => $tFORM, + unget_wch => $tSCREEN, + ungetch => $tSCREEN, + ungetmouse => $tSCREEN, + unpost_form => $tFORM, + unpost_menu => $tMENU, + untouchwin => $tWINDOW, + update_panels_sp => $tSCREEN, + use_default_colors => $tSCREEN, + use_env => $tSCREEN, + use_legacy_coding => $tSCREEN, + use_screen => $tSCREEN, + use_tioctl => $tSCREEN, + use_window => $tWINDOW, + vidattr => $tSCREEN, + vidputs => $tSCREEN, + vw_printw => $tWINDOW, + vwprintw => $tWINDOW, + wadd_wch => $tWINDOW, + wadd_wchnstr => $tWINDOW, + wadd_wchstr => $tWINDOW, + waddch => $tWINDOW, + waddchnstr => $tWINDOW, + waddchstr => $tWINDOW, + waddnstr => $tWINDOW, + waddnwstr => $tWINDOW, + waddstr => $tWINDOW, + waddwstr => $tWINDOW, + wattr_get => $tWINDOW, + wattr_off => $tWINDOW, + wattr_on => $tWINDOW, + wattr_set => $tWINDOW, + wattroff => $tWINDOW, + wattron => $tWINDOW, + wattrset => $tWINDOW, + wbkgd => $tWINDOW, + wbkgdset => $tWINDOW, + wborder => $tWINDOW, + wborder_set => $tWINDOW, + wchgat => $tWINDOW, + wclear => $tWINDOW, + wclrtobot => $tWINDOW, + wclrtoeol => $tWINDOW, + wcolor_set => $tWINDOW, + wcursyncup => $tWINDOW, + wdelch => $tWINDOW, + wdeleteln => $tWINDOW, + wechochar => $tWINDOW, + wenclose => $tWINDOW, + werase => $tWINDOW, + wget_wch => $tWINDOW, + wget_wstr => $tWINDOW, + wgetbkgrnd => $tWINDOW, + wgetch => $tWINDOW, + wgetch_events => $tWINDOW, + wgetdelay => $tWINDOW, + wgetn_wstr => $tWINDOW, + wgetnstr => $tWINDOW, + wgetparent => $tWINDOW, + wgetscrreg => $tWINDOW, + wgetstr => $tWINDOW, + whline => $tWINDOW, + whline_set => $tWINDOW, + win_wch => $tWINDOW, + win_wchnstr => $tWINDOW, + win_wchstr => $tWINDOW, + winch => $tWINDOW, + winchnstr => $tWINDOW, + winchstr => $tWINDOW, + winnstr => $tWINDOW, + winnwstr => $tWINDOW, + wins_nwstr => $tWINDOW, + wins_wch => $tWINDOW, + wins_wstr => $tWINDOW, + winsch => $tWINDOW, + winsdelln => $tWINDOW, + winsertln => $tWINDOW, + winsnstr => $tWINDOW, + winsstr => $tWINDOW, + winstr => $tWINDOW, + winwstr => $tWINDOW, + wmouse_trafo => $tWINDOW, + wmove => $tWINDOW, + wnoutrefresh => $tWINDOW, + wprintw => $tWINDOW, + wredrawln => $tWINDOW, + wrefresh => $tWINDOW, + wresize => $tWINDOW, + wscrl => $tWINDOW, + wsetscrreg => $tWINDOW, + wstandend => $tWINDOW, + wstandout => $tWINDOW, + wsyncdown => $tWINDOW, + wsyncup => $tWINDOW, + wtimeout => $tWINDOW, + wtouchln => $tWINDOW, + wvline => $tWINDOW, +); + +our $fld_nums = 0; +our $frm_nums = 0; +our $itm_nums = 0; +our $mnu_nums = 0; +our $pan_nums = 0; +our $scr_nums = 0; +our $thr_nums = 0; +our $trm_nums = 0; +our $try_nums = 0; +our $usr_nums = 0; +our $win_nums = 0; + +our $curscr = ""; +our $newscr = ""; +our $stdscr = ""; + +our %fld_addr; # FIELD* +our %frm_addr; # FORM* +our %itm_addr; # ITEM* +our %mnu_addr; # MENU* +our %pan_addr; # PANEL* +our %scr_addr; # SCREEN* +our %thr_addr; # thread-id +our %trm_addr; # TERMINAL* +our %try_addr; # tries-number +our %usr_addr; # user-pointer +our %win_addr; # WINDOW* + +sub has_addr($) { + my $value = shift; + my $result = 0; + $result = 1 if ( $value =~ /\b0x[[:xdigit:]]+\b/i ); + return $result; +} + +sub transaddr($) { + my $arg = shift; + my $n; + + $arg =~ s/\b$curscr\b/curscr/g if ($curscr); + $arg =~ s/\b$newscr\b/newscr/g if ($newscr); + $arg =~ s/\b$stdscr\b/stdscr/g if ($stdscr); + if ( &has_addr($arg) ) { + foreach my $addr ( keys %fld_addr ) { + $n = $fld_addr{$addr}; + $arg =~ s/\b$addr\b/field$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %frm_addr ) { + $n = $frm_addr{$addr}; + $arg =~ s/\b$addr\b/form$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %itm_addr ) { + $n = $itm_addr{$addr}; + $arg =~ s/\b$addr\b/item$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %mnu_addr ) { + $n = $mnu_addr{$addr}; + $arg =~ s/\b$addr\b/menu$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %pan_addr ) { + $n = $pan_addr{$addr}; + $arg =~ s/\b$addr\b/panel$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %scr_addr ) { + $n = $scr_addr{$addr}; + $arg =~ s/\b$addr\b/screen$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %thr_addr ) { + $n = $thr_addr{$addr}; + $arg =~ s/\b$addr\b/thread$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %trm_addr ) { + $n = $trm_addr{$addr}; + $arg =~ s/\b$addr\b/terminal$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %try_addr ) { + $n = $try_addr{$addr}; + $arg =~ s/\b$addr\b/tries_$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %usr_addr ) { + $n = $usr_addr{$addr}; + $arg =~ s/\b$addr\b/user_ptr$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + foreach my $addr ( keys %win_addr ) { + $n = $win_addr{$addr}; + $arg =~ s/\b$addr\b/window$n/g if ( defined $n ); + } + } + if ( &has_addr($arg) ) { + if ( $arg =~ /add_wch\((window\d+,)?0x[[:xdigit:]]+\)/i ) { + $arg =~ s/(0x[[:xdigit:]]+)[)]/\&wch)/i; + } + elsif ( + $arg =~ /color_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){3}/i ) + { + $arg =~ s/(,0x[[:xdigit:]]+){3}[)]/,\&r,\&g,\&b)/i; + } + elsif ( $arg =~ /pair_content\((screen\d+,)?\d+(,0x[[:xdigit:]]+){2}/i ) + { + $arg =~ s/(,0x[[:xdigit:]]+){2}[)]/,\&fg,\&bg)/i; + } + } + if ( &has_addr($arg) and $arg =~ /called\s+\{/ ) { + my $func = $arg; + chomp $func; + $func =~ s/^.*called\s+\{([[:alnum:]_]+)\(.*$/$1/; + if ( defined $known_p1{$func} ) { + my $addr = $arg; + my $type = $known_p1{$func}; + chomp $addr; + $addr =~ s/^[^(]+\((0x[[:xdigit:]]+).*$/$1/i; + if ( $addr !~ /^0x[[:xdigit:]]+$/i ) { + if ( $type == $tSCREEN and $addr =~ /^[^(]+\(screen\d+[,)]/ ) { + + # ignore + } + elsif ( $type == $tWINDOW + and $addr =~ + /^[^(]+\((stdscr|newscr|curscr|window\d+)[,)]/ ) + { + + # ignore + } + elsif ( $type == $tTERMINAL + and $addr =~ /^[^(]+\(terminal\d+[,)]/ ) + { + # ignore + } + elsif ( $type == $tPANEL and $addr =~ /^[^(]+\(panel\d+[,)]/ ) { + + # ignore + } + elsif ( $type == $tFIELD and $addr =~ /^[^(]+\(field\d+[,)]/ ) { + + # ignore + } + elsif ( $type == $tMENU and $addr =~ /^[^(]+\(menu\d+[,)]/ ) { + + # ignore + } + elsif ( $type == $tITEM and $addr =~ /^[^(]+\(item\d+[,)]/ ) { + + # ignore + } + else { + printf "OOPS - expected type \"%s\", skipping\n>>$addr\n", + $known_p1_types{$type}; + } + } + elsif ( $type == $tSCREEN ) { + $scr_addr{$addr} = ++$scr_nums; + $arg = &transaddr($arg); + } + elsif ( $type == $tWINDOW ) { + $win_addr{$addr} = ++$win_nums; + $arg = &transaddr($arg); + } + elsif ( $type == $tTERMINAL ) { + $trm_addr{$addr} = ++$trm_nums; + $arg = &transaddr($arg); + } + elsif ( $type == $tPANEL ) { + $pan_addr{$addr} = ++$pan_nums; + $arg = &transaddr($arg); + } + elsif ( $type == $tFIELD ) { + $fld_addr{$addr} = ++$fld_nums; + $arg = &transaddr($arg); + } + elsif ( $type == $tFORM ) { + $frm_addr{$addr} = ++$frm_nums; + $arg = &transaddr($arg); + } + elsif ( $type == $tMENU ) { + $mnu_addr{$addr} = ++$mnu_nums; + $arg = &transaddr($arg); + } + elsif ( $type == $tITEM ) { + $itm_addr{$addr} = ++$itm_nums; + $arg = &transaddr($arg); + } + } + } + + return $arg; +} + +sub muncher($) { + my $STDIN = shift; + + while (<$STDIN>) { + my $addr; + my $n; + my $awaiting = ""; + + CLASSIFY: { + + next unless $_; + + # just in case someone tries a file with cr/lf line-endings: + $_ =~ s/\r\n/\n/g; + $_ =~ s/\r/\n/g; + + if ( $_ =~ + /^TRACING NCURSES version.*\(tracelevel=(0x[[:xdigit:]]+)\)/ ) + { + $tracelevel = hex $1; + print; + next; + } + + my $thread = ""; + if ( $_ =~ /^(0x[[:xdigit:]]+):/ ) { + $thr_addr{$1} = ++$thr_nums unless defined $thr_addr{$1}; + $thread = "thread" . $thr_addr{$1} . ":"; + $_ =~ s/^[^:]*://; + } + + # Transform window pointer addresses to make it easier to compare logs + $awaiting = "curscr" if ( $_ =~ /creating curscr/ ); + $awaiting = "newscr" if ( $_ =~ /creating newscr/ ); + $awaiting = "stdscr" if ( $_ =~ /creating stdscr/ ); + $awaiting = "screen" if ( $_ =~ /^(\+ )*called \{new_prescr\(\)/ ); + if ( $_ =~ /^create :window 0x([[:xdigit:]]+)/ ) { + $addr = "0x$1"; + if ( $awaiting eq "curscr" ) { + $curscr = $addr; + } + elsif ( $awaiting eq "newscr" ) { + $newscr = $addr; + } + elsif ( $awaiting eq "stdscr" ) { + $stdscr = $addr; + } + else { + $win_addr{$addr} = $win_nums++; + } + $awaiting = ""; + } + elsif ( $_ =~ /^create :(root|new)_panel 0x([[:xdigit:]]+)/ ) { + $addr = "0x$2"; + $pan_addr{$addr} = $pan_nums++; + $_ = &transaddr($_); + } + elsif ( $_ =~ /^create :user_ptr 0x([[:xdigit:]]+)/ ) { + $addr = "0x$1"; + $usr_addr{$addr} = $usr_nums++; + $_ = &transaddr($_); + } + elsif ( $_ =~ /^create :field 0x([[:xdigit:]]+)/ ) { + $addr = "0x$1"; + $fld_addr{$addr} = $fld_nums++; + $_ = &transaddr($_); + } + elsif ( $_ =~ /^create :form 0x([[:xdigit:]]+)/ ) { + $addr = "0x$1"; + $frm_addr{$addr} = $frm_nums++; + $_ = &transaddr($_); + } + elsif ( $_ =~ /^create :menu 0x([[:xdigit:]]+)/ ) { + $addr = "0x$1"; + $mnu_addr{$addr} = $mnu_nums++; + $_ = &transaddr($_); + } + elsif ( $_ =~ /^create :item 0x([[:xdigit:]]+)/ ) { + $addr = "0x$1"; + $itm_addr{$addr} = $itm_nums++; + $_ = &transaddr($_); + } + elsif ( $_ =~ /^(\+ )*called \{set_curterm\((0x[[:xdigit:]]+)\)/ ) { + $trm_addr{$2} = ++$trm_nums unless defined $trm_addr{$2}; + } + elsif ( $_ =~ /^(\+ )*called \{_nc_add_to_try\((0x[[:xdigit:]]+),/ ) + { + $try_addr{$2} = ++$try_nums unless defined $try_addr{$2}; + } + elsif ( $_ =~ /^(\+ )*_nc_alloc_screen_sp 0x([[:xdigit:]]+)/ ) { + $addr = "0x$2"; + $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} ); + $awaiting = ""; + } + elsif ( $_ =~ /^(\+ )*return }0x([[:xdigit:]]+)/ ) { + $addr = "0x$2"; + if ( $awaiting eq "screen" ) { + $scr_addr{$addr} = ++$scr_nums unless ( $scr_addr{$addr} ); + } + } + elsif ( $_ =~ /^\.\.\.deleted win=0x([[:xdigit:]]+)/ ) { + $addr = "0x$1"; + $_ = &transaddr($_); + if ( $addr eq $curscr ) { + $curscr = ""; + } + elsif ( $addr eq $newscr ) { + $newscr = ""; + } + elsif ( $addr eq $stdscr ) { + $stdscr = ""; + } + else { + undef $win_addr{$addr}; + } + } + elsif ( $_ =~ /^\.\.\.deleted pan=\"0x([[:xdigit:]]+)\"/ ) { + $addr = "0x$1"; + $_ = &transaddr($_); + undef $pan_addr{$addr}; + } + elsif ( $_ =~ /^([+ ])*called \{free_field\(0x([[:xdigit:]]+)\)/ ) { + $addr = "0x$2"; + $_ = &transaddr($_); + undef $fld_addr{$addr}; + } + elsif ( $_ =~ /^([+ ])*called \{free_form\(0x([[:xdigit:]]+)\)/ ) { + $addr = "0x$2"; + $_ = &transaddr($_); + undef $frm_addr{$addr}; + } + elsif ( $_ =~ /^([+ ])*called \{free_menu\(0x([[:xdigit:]]+)\)/ ) { + $addr = "0x$2"; + $_ = &transaddr($_); + undef $mnu_addr{$addr}; + } + elsif ( $_ =~ /^([+ ])*called \{free_item\(0x([[:xdigit:]]+)\)/ ) { + $addr = "0x$2"; + $_ = &transaddr($_); + undef $itm_addr{$addr}; + } + + # Compactify runs of PutAttrChar + if ( ( ( $tracelevel & $TR{CHARPUT} ) != 0 ) and $_ =~ /$putattr/ ) + { + my $putattr_chars = $1; + my $starty = $2; + my $startx = $3; + while (<$STDIN>) { + if ( $_ =~ /$putattr/ ) { + $putattr_chars .= $1; + } + else { + next if ( $_ =~ /^PUTC 0x[[:xdigit:]]+.*/ ); + next if ( $_ =~ /^\.\.\.skip.*/ ); + next if ( $_ =~ /^forced to blank.*/ ); + last; + } + } + print "RUN of PutAttrChar()s:" + . " \"$putattr_chars\" from ${starty}, ${startx}\n"; + redo CLASSIFY; + } + + # Compactify runs of waddnstr calls + if ( ( ( $tracelevel & $TR{CALLS} ) != 0 ) and $_ =~ /$waddnstr/ ) { + my $waddnstr_chars = $2; + my $winaddr = $1; + while (<$STDIN>) { + next if ( $_ =~ /^return \}0/ ); + if ( $_ =~ /$waddnstr/ && $1 eq $winaddr ) { + $waddnstr_chars .= $2; + } + else { + last; + } + } + my $winaddstr = &transaddr($winaddr); + print "RUN of waddnstr()s:" + . " $winaddstr, \"$waddnstr_chars\"\n"; + redo CLASSIFY; + } + + # More transformations can go here + + # Repeated runs of anything + my $anyline = &transaddr($_); + my $repeatcount = 1; + while (<$STDIN>) { + if ( &transaddr($_) eq $anyline ) { + $repeatcount++; + } + else { + last; + } + } + if ( $repeatcount > 1 ) { + print "${repeatcount} REPEATS OF $anyline"; + } + else { + print $thread . $anyline; + } + redo CLASSIFY if $_; + + } # :CLASSIFY + } +} + +for my $tr ( keys %TR ) { + $TR{$tr} = hex $TR{$tr}; +} + +if ( $#ARGV >= 0 ) { + while ( $#ARGV >= 0 ) { + my $file = shift @ARGV; + open my $ifh, "<", $file or die $!; + &muncher($ifh); + } +} +else { + &muncher( \*STDIN ); +} + +# tracemunch ends here diff --git a/deps/ncurses-6.3/test/view.c b/deps/ncurses-6.3/test/view.c new file mode 100644 index 0000000..b368f5b --- /dev/null +++ b/deps/ncurses-6.3/test/view.c @@ -0,0 +1,660 @@ +/**************************************************************************** + * Copyright 2019-2020,2021 Thomas E. Dickey * + * Copyright 1998-2016,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. * + ****************************************************************************/ +/* + * view.c -- a silly little viewer program + * + * written by Eric S. Raymond <esr@snark.thyrsus.com> December 1994 + * to test the scrolling code in ncurses. + * + * modified by Thomas Dickey <dickey@clark.net> July 1995 to demonstrate + * the use of 'resizeterm()', and May 2000 to illustrate wide-character + * handling. This program intentionally does not use pads, to allow testing + * with less-capable implementations of curses. + * + * Takes a filename argument. It's a simple file-viewer with various + * scroll-up and scroll-down commands. + * + * n -- scroll one line forward + * p -- scroll one line back + * + * Either command accepts a numeric prefix interpreted as a repeat count. + * Thus, typing `5n' should scroll forward 5 lines in the file. + * + * The way you can tell this is working OK is that, in the trace file, + * there should be one scroll operation plus a small number of line + * updates, as opposed to a whole-page update. This means the physical + * scroll operation worked, and the refresh() code only had to do a + * partial repaint. + * + * $Id: view.c,v 1.142 2021/06/12 23:16:31 tom Exp $ + */ + +#include <test.priv.h> +#include <widechars.h> +#include <popup_msg.h> + +#include <sys/stat.h> +#include <time.h> + +static GCC_NORETURN void finish(int sig); + +#define my_pair 1 + +static int shift = 0; +static bool try_color = FALSE; + +static char *fname; +static NCURSES_CH_T **vec_lines; +static NCURSES_CH_T **lptr; +static int num_lines; + +#if USE_WIDEC_SUPPORT +static bool n_option = FALSE; +#endif + +static GCC_NORETURN void +failed(const char *msg) +{ + endwin(); + fprintf(stderr, "%s\n", msg); + ExitProgram(EXIT_FAILURE); +} + +static int +ch_len(NCURSES_CH_T *src) +{ + int result = 0; + +#if USE_WIDEC_SUPPORT + for (;;) { + int count; + TEST_CCHAR(src, count, { + int len = wcwidth(test_wch[0]); + result += (len > 0) ? len : 1; + ++src; + } + , { + break; + }) + } +#else + while (*src++) + result++; +#endif + return result; +} + +static void +finish(int sig) +{ + endwin(); +#if NO_LEAKS + if (vec_lines != 0) { + int n; + for (n = 0; n < num_lines; ++n) { + free(vec_lines[n]); + } + free(vec_lines); + } +#endif + ExitProgram(sig != 0 ? EXIT_FAILURE : EXIT_SUCCESS); +} + +static void +show_all(const char *tag) +{ + int i; + int digits; + char temp[BUFSIZ]; + time_t this_time; + + for (digits = 1, i = num_lines; i > 0; i /= 10) { + ++digits; + } + + _nc_SPRINTF(temp, _nc_SLIMIT(sizeof(temp)) + "view %.*s", (int) strlen(tag), tag); + i = (int) strlen(temp); + _nc_SPRINTF(temp + i, _nc_SLIMIT(sizeof(temp) - (size_t) i) + " %.*s", (int) sizeof(temp) - i - 2, fname); + move(0, 0); + printw("%.*s", COLS, temp); + clrtoeol(); + this_time = time((time_t *) 0); + _nc_STRNCPY(temp, ctime(&this_time), (size_t) 30); + if ((i = (int) strlen(temp)) != 0) { + temp[--i] = 0; + if (move(0, COLS - i - 2) != ERR) + printw(" %s", temp); + } + + scrollok(stdscr, FALSE); /* prevent screen from moving */ + for (i = 1; i < LINES; i++) { + NCURSES_CH_T *s; + int len; + int actual = (int) (lptr + i - vec_lines); + + if (actual > num_lines) { + if (i < LINES - 1) { + int y, x; + getyx(stdscr, y, x); + move(i, 0); + clrtobot(); + move(y, x); + } + break; + } + move(i, 0); + printw("%*d:", digits, actual); + clrtoeol(); + if ((s = lptr[i - 1]) == 0) { + continue; + } + len = ch_len(s); + if (len > shift) { +#if USE_WIDEC_SUPPORT + /* + * An index into an array of cchar_t's is not necessarily the same + * as the column-offset. A pad would do this directly. Here we + * must translate (or compute a table of offsets). + */ + { + int j; + int width = 1; + + for (j = actual = 0; j < shift; ++j) { + int count; + + TEST_CCHAR(s + j, count, { + width = wcwidth(test_wch[0]); + } + , { + width = 1; + }); + actual += width; + if (actual > shift) { + break; + } else if (actual == shift) { + ++j; + break; + } + } + if (actual < len) { + if (actual > shift) + addch('<'); + add_wchstr(s + j + (actual > shift)); + } + } +#else + addchstr(s + shift); +#endif + } +#if defined(NCURSES_VERSION) || defined(HAVE_WCHGAT) + if (try_color) + wchgat(stdscr, -1, WA_NORMAL, my_pair, NULL); +#endif + } + setscrreg(1, LINES - 1); + scrollok(stdscr, TRUE); + refresh(); +} + +static void +read_file(const char *filename) +{ + FILE *fp; + int pass; + int k; + int width; + size_t j; + size_t len; + struct stat sb; + char *my_blob; + char **my_vec = 0; + WINDOW *my_win; + + if (stat(filename, &sb) != 0 + || (sb.st_mode & S_IFMT) != S_IFREG) { + failed("input is not a file"); + } + + if (sb.st_size == 0) { + failed("input is empty"); + } + + if ((fp = fopen(filename, "r")) == 0) { + failed("cannot open input-file"); + } + + if ((my_blob = malloc((size_t) sb.st_size + 1)) == 0) { + failed("cannot allocate memory for input-file"); + } + + len = fread(my_blob, sizeof(char), (size_t) sb.st_size, fp); + fclose(fp); + + if (len > (size_t) sb.st_size) + len = (size_t) sb.st_size; + my_blob[len] = '\0'; + + for (pass = 0; pass < 2; ++pass) { + char *base = my_blob; + k = 0; + for (j = 0; j < len; ++j) { + if (my_blob[j] == '\n') { + if (pass) { + my_vec[k] = base; + my_blob[j] = '\0'; + } + base = my_blob + j + 1; + ++k; + } + } + if (base != (my_blob + j)) { + if (pass) + my_vec[k] = base; + ++k; + } + num_lines = k; + if (pass == 0) { + if (((my_vec = typeCalloc(char *, (size_t) k + 2)) == 0)) { + failed("cannot allocate line-vector #1"); + } + } else { + if (my_vec[0] == NULL) + my_vec[0] = my_blob; + } + } + +#if USE_WIDEC_SUPPORT + if (!memcmp("\357\273\277", my_blob, 3)) { + char *s = my_blob + 3; + char *d = my_blob; + Trace(("trim BOM")); + do { + } while ((*d++ = *s++) != '\0'); + } +#endif + + width = (int) strlen(my_vec[0]); + for (k = 1; my_vec[k]; ++k) { + int check = (int) (my_vec[k] - my_vec[k - 1]); + if (width < check) + width = check; + } + width = (width + 1) * 5; + my_win = newwin(2, width, 0, 0); + if (my_win == 0) { + failed("cannot allocate temporary window"); + } + + if ((vec_lines = typeCalloc(NCURSES_CH_T *, (size_t) num_lines + 2)) == 0) { + failed("cannot allocate line-vector #2"); + } + + /* + * Use the curses library for rendering, including tab-conversion. This + * will not make the resulting array's indices correspond to column for + * lines containing double-width cells because the "in_wch" functions will + * ignore the skipped cells. Use pads for that sort of thing. + */ + Trace(("slurp the file")); + for (k = 0; my_vec[k]; ++k) { + char *s; + int y, x; +#if USE_WIDEC_SUPPORT + char *last = my_vec[k] + (int) strlen(my_vec[k]); + wchar_t wch[2]; + size_t rc; +#ifndef state_unused + mbstate_t state; +#endif +#endif /* USE_WIDEC_SUPPORT */ + + werase(my_win); + wmove(my_win, 0, 0); +#if USE_WIDEC_SUPPORT + wch[1] = 0; + reset_mbytes(state); +#endif + for (s = my_vec[k]; *s != '\0'; ++s) { +#if USE_WIDEC_SUPPORT + if (!n_option) { + rc = (size_t) check_mbytes(wch[0], s, (size_t) (last - s), state); + if ((long) rc == -1 || (long) rc == -2) { + break; + } + s += rc - 1; + waddwstr(my_win, wch); + } else +#endif + waddch(my_win, *s & 0xff); + } + getyx(my_win, y, x); + if (y) + x = width - 1; + wmove(my_win, 0, 0); + /* "x + 1" works with standard curses; some implementations are buggy */ + if ((vec_lines[k] = typeCalloc(NCURSES_CH_T, x + width + 1)) == 0) { + failed("cannot allocate line-vector #3"); + } +#if USE_WIDEC_SUPPORT + win_wchnstr(my_win, vec_lines[k], x); +#else + winchnstr(my_win, vec_lines[k], x); +#endif + } + + delwin(my_win); + free(my_vec); + free(my_blob); +} + +static GCC_NORETURN void +usage(void) +{ + static const char *msg[] = + { + "Usage: view [options] file" + ,"" + ,"Options:" + ," -c use color if terminal supports it" + ," -i ignore INT, QUIT, TERM signals" +#if USE_WIDEC_SUPPORT + ," -n use waddch (bytes) rather then wadd_wch (wide-chars)" +#endif + ," -s start in single-step mode, waiting for input" +#ifdef TRACE + ," -t trace screen updates" + ," -T NUM specify trace mask" +#endif + }; + size_t n; + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + ExitProgram(EXIT_FAILURE); +} + +int +main(int argc, char *argv[]) +{ + static const char *help[] = + { + "Commands:", + " q,^Q,ESC - quit this program", + "", + " p,<Up> - scroll the viewport up by one row", + " n,<Down> - scroll the viewport down by one row", + " l,<Left> - scroll the viewport left by one column", + " r,<Right> - scroll the viewport right by one column", + " <,> - scroll the viewport left/right by 8 columns", + "", + " h,<Home> - scroll the viewport to top of file", + " ^F,<PageDn> - scroll to the next page", + " ^B,<PageUp> - scroll to the previous page", + " e,<End> - scroll the viewport to end of file", + "", + " ^L - repaint using redrawwin()", + "", + " 0 through 9 - enter digits for count", + " s - use entered count for halfdelay() parameter", + " - if no entered count, stop nodelay()", + " <space> - begin nodelay()", + 0 + }; + + int i; + int my_delay = 0; + NCURSES_CH_T **olptr; + int value = 0; + bool done = FALSE; + bool got_number = FALSE; + bool ignore_sigs = FALSE; + bool single_step = FALSE; + const char *my_label = "Input"; + + setlocale(LC_ALL, ""); + + while ((i = getopt(argc, argv, "cinstT:")) != -1) { + switch (i) { + case 'c': + try_color = TRUE; + break; + case 'i': + ignore_sigs = TRUE; + break; +#if USE_WIDEC_SUPPORT + case 'n': + n_option = TRUE; + break; +#endif + case 's': + single_step = TRUE; + break; +#ifdef TRACE + case 'T': + { + char *next = 0; + int tvalue = (int) strtol(optarg, &next, 0); + if (tvalue < 0 || (next != 0 && *next != 0)) + usage(); + curses_trace((unsigned) tvalue); + } + break; + case 't': + curses_trace(TRACE_CALLS); + break; +#endif + default: + usage(); + } + } + if (optind + 1 != argc) + usage(); + + InitAndCatch(initscr(), ignore_sigs ? SIG_IGN : finish); + 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) noecho(); /* don't echo input */ + if (!single_step) + nodelay(stdscr, TRUE); + idlok(stdscr, TRUE); /* allow use of insert/delete line */ + + read_file(fname = argv[optind]); + + if (try_color) { + if (has_colors()) { + start_color(); + init_pair(my_pair, COLOR_WHITE, COLOR_BLUE); + bkgd((chtype) COLOR_PAIR(my_pair)); + } else { + try_color = FALSE; + } + } + + lptr = vec_lines; + while (!done) { + int n, c; + + if (!got_number) + show_all(my_label); + + for (;;) { + c = getch(); + if ((c < 127) && isdigit(c)) { + if (!got_number) { + MvPrintw(0, 0, "Count: "); + clrtoeol(); + } + addch(UChar(c)); + value = 10 * value + (c - '0'); + got_number = TRUE; + } else + break; + } + if (got_number && value) { + n = value; + } else { + n = 1; + } + + if (c != ERR) + my_label = keyname(c); + switch (c) { + case KEY_DOWN: + case 'n': + olptr = lptr; + for (i = 0; i < n; i++) + if ((lptr - vec_lines) < (num_lines - LINES + 1)) + lptr++; + else + break; + scrl((int) (lptr - olptr)); + break; + + case KEY_UP: + case 'p': + olptr = lptr; + for (i = 0; i < n; i++) + if (lptr > vec_lines) + lptr--; + else + break; + scrl((int) (lptr - olptr)); + break; + + case 'h': + /* FALLTHRU */ + case KEY_HOME: + lptr = vec_lines; + break; + + case '<': + if ((shift -= 8) < 0) + shift = 0; + break; + case '>': + shift += 8; + break; + + case 'e': + /* FALLTHRU */ + case KEY_END: + if (num_lines > LINES) + lptr = (vec_lines + num_lines - LINES + 1); + else + lptr = (vec_lines + (num_lines - 2)); + break; + + case CTRL('F'): + /* FALLTHRU */ + case KEY_NPAGE: + for (i = 0; i < n; i++) { + if ((lptr - vec_lines) < (num_lines - 5)) + lptr += (LINES - 1); + else + lptr = (vec_lines + num_lines - 2); + } + break; + + case CTRL('B'): + /* FALLTHRU */ + case KEY_PPAGE: + for (i = 0; i < n; i++) { + if ((lptr - vec_lines) >= LINES) + lptr -= (LINES - 1); + else + lptr = vec_lines; + } + break; + + case 'r': + case KEY_RIGHT: + shift += n; + break; + + case 'l': + case KEY_LEFT: + shift -= n; + if (shift < 0) { + shift = 0; + beep(); + } + break; + + case 'q': + case QUIT: + case ESCAPE: + done = TRUE; + break; + +#ifdef KEY_RESIZE + case KEY_RESIZE: /* ignore this; ncurses will repaint */ + break; +#endif + case 's': +#if HAVE_HALFDELAY + if (got_number) { + halfdelay(my_delay = n); + } else { + nodelay(stdscr, FALSE); + my_delay = -1; + } +#else + nodelay(stdscr, FALSE); + my_delay = -1; +#endif + break; + case ' ': + nodelay(stdscr, TRUE); + my_delay = 0; + break; + case CTRL('L'): + redrawwin(stdscr); + break; + case ERR: + if (!my_delay) + napms(50); + break; + case HELP_KEY_1: + popup_msg(stdscr, help); + break; + default: + beep(); + break; + } + if (c >= KEY_MIN || (c > 0 && !isdigit(c))) { + got_number = FALSE; + value = 0; + } + } + + finish(0); /* we're done */ +} diff --git a/deps/ncurses-6.3/test/widechars-utf8-tabs.txt b/deps/ncurses-6.3/test/widechars-utf8-tabs.txt new file mode 100644 index 0000000..ca605a1 --- /dev/null +++ b/deps/ncurses-6.3/test/widechars-utf8-tabs.txt @@ -0,0 +1,15 @@ +APPLE -- It's an APPLE. +DOG -- No, that's not my DOG. +ORANGE -- Yeah, that's JUICY. +CHICKEN -- Normally not a PET. +CAT -- No, never put a DOG and a CAT together! +FISH -- Cats like FISH. +LEMON -- You KNOW how it TASTES. +----+----1----+----2----+----3----+----4 +APPLE -- It's an APPLE. + APPLE -- It's an APPLE. + APPLE -- It's an APPLE. + APPLE -- It's an APPLE. + APPLE -- It's an APPLE. + APPLE -- It's an APPLE. +----+----1----+----2----+----3----+----4 diff --git a/deps/ncurses-5.9/test/widechars-utf8.txt b/deps/ncurses-6.3/test/widechars-utf8.txt similarity index 100% rename from deps/ncurses-5.9/test/widechars-utf8.txt rename to deps/ncurses-6.3/test/widechars-utf8.txt diff --git a/deps/ncurses-6.3/test/widechars.h b/deps/ncurses-6.3/test/widechars.h new file mode 100644 index 0000000..2578a92 --- /dev/null +++ b/deps/ncurses-6.3/test/widechars.h @@ -0,0 +1,72 @@ +/**************************************************************************** + * Copyright 2018,2020 Thomas E. Dickey * + * Copyright 2012 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. * + ****************************************************************************/ + +#ifndef __WIDECHARS_H +#define __WIDECHARS_H 1 + +#include <test.priv.h> + +#if USE_WIDEC_SUPPORT + +#if defined(_NC_WINDOWS) && !defined(_MSC_VER) && !defined(EXP_WIN32_DRIVER) +/* + * MinGW has wide-character functions, but they do not work correctly. + */ + +extern int _nc_mbtowc(wchar_t *pwc, const char *s, size_t n); +extern int __MINGW_NOTHROW _nc_mbtowc(wchar_t *pwc, const char *s, size_t n); +#define mbtowc(pwc,s,n) _nc_mbtowc(pwc,s,n) + +extern int __MINGW_NOTHROW _nc_mblen(const char *, size_t); +#define mblen(s,n) _nc_mblen(s, n) + +#endif /* _WIN32||_WIN64 */ + +#if HAVE_MBTOWC && HAVE_MBLEN +#define reset_mbytes(state) IGNORE_RC(mblen(NULL, 0)), IGNORE_RC(mbtowc(NULL, NULL, 0)) +#define count_mbytes(buffer,length,state) mblen(buffer,length) +#define check_mbytes(wch,buffer,length,state) \ + (int) mbtowc(&wch, buffer, length) +#define state_unused +#elif HAVE_MBRTOWC && HAVE_MBRLEN +#define reset_mbytes(state) init_mb(state) +#define count_mbytes(buffer,length,state) mbrlen(buffer,length,&state) +#define check_mbytes(wch,buffer,length,state) \ + (int) mbrtowc(&wch, buffer, length, &state) +#else +make an error +#endif + +#else + +#endif /* USE_WIDEC_SUPPORT */ + +extern void widechars_stub(void); + +#endif /* __WIDECHARS_H */ diff --git a/deps/ncurses-5.9/test/worm.c b/deps/ncurses-6.3/test/worm.c similarity index 82% rename from deps/ncurses-5.9/test/worm.c rename to deps/ncurses-6.3/test/worm.c index 98f099c..6304e4b 100644 --- a/deps/ncurses-5.9/test/worm.c +++ b/deps/ncurses-6.3/test/worm.c @@ -1,5 +1,6 @@ /**************************************************************************** - * Copyright (c) 1998-2007,2008 Free Software Foundation, Inc. * + * Copyright 2018-2019,2020 Thomas E. Dickey * + * Copyright 1998-2016,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 * @@ -47,25 +48,20 @@ July 1995 (esr): worms is now in living color! :-) -Options: - -f fill screen with copies of 'WORM' at start. - -l <n> set worm length - -n <n> set number of worms - -t make worms leave droppings - -T <start> <end> set trace interval - -S set single-stepping during trace interval - -N suppress cursor-movement optimization - This program makes a good torture-test for the ncurses cursor-optimization code. You can use -T to set the worm move interval over which movement traces will be dumped. The program stops and waits for one character of input at the beginning and end of the interval. - $Id: worm.c,v 1.60 2010/11/13 20:21:21 tom Exp $ + $Id: worm.c,v 1.82 2020/02/02 23:34:34 tom Exp $ */ #include <test.priv.h> +#ifndef NCURSES_VERSION +#undef TRACE +#endif + #ifdef USE_PTHREADS #include <pthread.h> #endif @@ -102,6 +98,7 @@ static unsigned long sequence = 0; static bool quitting = FALSE; static WORM worm[MAX_WORMS]; +static int max_refs; static int **refs; static int last_x, last_y; @@ -201,15 +198,37 @@ static const struct options { }; /* *INDENT-ON* */ +#if HAVE_USE_WINDOW +static int +safe_wgetch(WINDOW *w, void *data GCC_UNUSED) +{ + return wgetch(w); +} +static int +safe_wrefresh(WINDOW *w, void *data GCC_UNUSED) +{ + return wrefresh(w); +} +#endif + +#ifdef KEY_RESIZE +static void +failed(const char *s) +{ + perror(s); + stop_curses(); + ExitProgram(EXIT_FAILURE); +} +#endif + static void cleanup(void) { - USING_WINDOW(stdscr, wrefresh); - curs_set(1); - endwin(); + USING_WINDOW1(stdscr, wrefresh, safe_wrefresh); + stop_curses(); } -static RETSIGTYPE +static void onsig(int sig GCC_UNUSED) { cleanup(); @@ -286,6 +305,7 @@ draw_worm(WINDOW *win, void *data) switch (op->nopts) { case 0: done = TRUE; + Trace(("done - draw_worm")); break; case 1: w->orientation = op->opts[0]; @@ -316,9 +336,9 @@ draw_worm(WINDOW *win, void *data) static bool quit_worm(int bitnum) { - pending |= (1 << bitnum); + pending = (pending | (unsigned) (1 << bitnum)); napms(10); /* let the other thread(s) have a chance */ - pending &= ~(1 << bitnum); + pending = (pending & (unsigned) ~(1 << bitnum)); return quitting; } @@ -327,7 +347,7 @@ start_worm(void *arg) { unsigned long compare = 0; Trace(("start_worm")); - while (!quit_worm(((struct worm *) arg) - worm)) { + while (!quit_worm((int) (((struct worm *) arg) - worm))) { while (compare < sequence) { ++compare; #if HAVE_USE_WINDOW @@ -354,8 +374,7 @@ draw_all_worms(void) if (first) { first = FALSE; for (n = 0, w = &worm[0]; n < number; n++, w++) { - int rc; - rc = pthread_create(&(w->thread), NULL, start_worm, w); + (void) pthread_create(&(w->thread), NULL, start_worm, w); } } #else @@ -377,20 +396,23 @@ static int get_input(void) { int ch; - ch = USING_WINDOW(stdscr, wgetch); + ch = USING_WINDOW1(stdscr, wgetch, safe_wgetch); return ch; } #ifdef KEY_RESIZE static int -update_refs(WINDOW *win) +update_refs(WINDOW *win, void *data) { int x, y; (void) win; + (void) data; if (last_x != COLS - 1) { for (y = 0; y <= last_y; y++) { refs[y] = typeRealloc(int, (size_t) COLS, refs[y]); + if (!refs[y]) + failed("update_refs"); for (x = last_x + 1; x < COLS; x++) refs[y][x] = 0; } @@ -399,9 +421,12 @@ update_refs(WINDOW *win) if (last_y != LINES - 1) { for (y = LINES; y <= last_y; y++) free(refs[y]); + max_refs = LINES; refs = typeRealloc(int *, (size_t) LINES, refs); for (y = last_y + 1; y < LINES; y++) { refs[y] = typeMalloc(int, (size_t) COLS); + if (!refs[y]) + failed("update_refs"); for (x = 0; x < COLS; x++) refs[y][x] = 0; } @@ -411,40 +436,69 @@ update_refs(WINDOW *win) } #endif +static void +usage(void) +{ + static const char *msg[] = + { + "Usage: worm [options]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -f fill screen with copies of \"WORM\" at start" + ," -l <n> set length of worms" + ," -n <n> set number of worms" + ," -t leave trail of \".\"" +#ifdef TRACE + ," -T <start>,<end> set trace interval" + ," -N suppress cursor-movement optimization" +#endif + }; + size_t n; + + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); + + ExitProgram(EXIT_FAILURE); +} + int main(int argc, char *argv[]) { + int ch; int x, y; int n; struct worm *w; int *ip; bool done = FALSE; +#if HAVE_USE_DEFAULT_COLORS + bool opt_d = FALSE; +#endif setlocale(LC_ALL, ""); - for (x = 1; x < argc; x++) { - char *p; - p = argv[x]; - if (*p == '-') - p++; - switch (*p) { + while ((ch = getopt(argc, argv, "dfl:n:tT:N")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + opt_d = TRUE; + break; +#endif case 'f': field = "WORM"; break; case 'l': - if (++x == argc) - goto usage; - if ((length = atoi(argv[x])) < 2 || length > MAX_LENGTH) { + if ((length = atoi(optarg)) < 2 || length > MAX_LENGTH) { fprintf(stderr, "%s: Invalid length\n", *argv); - ExitProgram(EXIT_FAILURE); + usage(); } break; case 'n': - if (++x == argc) - goto usage; - if ((number = atoi(argv[x])) < 1 || number > MAX_WORMS) { + if ((number = atoi(optarg)) < 1 || number > MAX_WORMS) { fprintf(stderr, "%s: Invalid number of worms\n", *argv); - ExitProgram(EXIT_FAILURE); + usage(); } break; case 't': @@ -452,20 +506,20 @@ main(int argc, char *argv[]) break; #ifdef TRACE case 'T': - trace_start = atoi(argv[++x]); - trace_end = atoi(argv[++x]); + if (sscanf(optarg, "%d,%d", &trace_start, &trace_end) != 2) + usage(); break; case 'N': _nc_optimize_enable ^= OPTIMIZE_ALL; /* declared by ncurses */ break; #endif /* TRACE */ default: - usage: - fprintf(stderr, - "usage: %s [-field] [-length #] [-number #] [-trail]\n", *argv); - ExitProgram(EXIT_FAILURE); + usage(); + /* NOTREACHED */ } } + if (optind < argc) + usage(); signal(SIGINT, onsig); initscr(); @@ -483,13 +537,13 @@ main(int argc, char *argv[]) int bg = COLOR_BLACK; start_color(); #if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) + if (opt_d && (use_default_colors() == OK)) bg = -1; #endif #define SET_COLOR(num, fg) \ init_pair(num+1, (short) fg, (short) bg); \ - flavor[num] |= COLOR_PAIR(num+1) | A_BOLD + flavor[num] |= (chtype) COLOR_PAIR(num+1) | A_BOLD SET_COLOR(0, COLOR_GREEN); SET_COLOR(1, COLOR_RED); @@ -501,8 +555,9 @@ main(int argc, char *argv[]) } #endif /* A_COLOR */ - refs = typeMalloc(int *, (size_t) LINES); - for (y = 0; y < LINES; y++) { + max_refs = LINES; + refs = typeMalloc(int *, (size_t) max_refs); + for (y = 0; y < max_refs; y++) { refs[y] = typeMalloc(int, (size_t) COLS); for (x = 0; x < COLS; x++) { refs[y][x] = 0; @@ -545,21 +600,19 @@ main(int argc, char *argv[]) } } } - USING_WINDOW(stdscr, wrefresh); + USING_WINDOW1(stdscr, wrefresh, safe_wrefresh); nodelay(stdscr, TRUE); while (!done) { - int ch; - ++sequence; if ((ch = get_input()) > 0) { #ifdef TRACE if (trace_start || trace_end) { if (generation == trace_start) { - trace(TRACE_CALLS); + curses_trace(TRACE_CALLS); get_input(); } else if (generation == trace_end) { - trace(0); + curses_trace(0); get_input(); } @@ -580,6 +633,7 @@ main(int argc, char *argv[]) if (ch == 'q') { quitting = TRUE; done = TRUE; + Trace(("done - quitting")); continue; } else if (ch == 's') { nodelay(stdscr, FALSE); @@ -590,13 +644,13 @@ main(int argc, char *argv[]) done = draw_all_worms(); napms(10); - USING_WINDOW(stdscr, wrefresh); + USING_WINDOW1(stdscr, wrefresh, safe_wrefresh); } Trace(("Cleanup")); cleanup(); -#ifdef NO_LEAKS - for (y = 0; y < LINES; y++) { +#if NO_LEAKS + for (y = 0; y < max_refs; y++) { free(refs[y]); } free(refs); diff --git a/deps/ncurses-5.9/test/xmas.c b/deps/ncurses-6.3/test/xmas.c similarity index 96% rename from deps/ncurses-5.9/test/xmas.c rename to deps/ncurses-6.3/test/xmas.c index fc0cc4c..678c9e1 100644 --- a/deps/ncurses-5.9/test/xmas.c +++ b/deps/ncurses-6.3/test/xmas.c @@ -92,7 +92,7 @@ /******************************************************************************/ /* - * $Id: xmas.c,v 1.27 2010/11/13 20:24:10 tom Exp $ + * $Id: xmas.c,v 1.36 2021/03/27 22:40:53 tom Exp $ */ #include <test.priv.h> @@ -133,22 +133,7 @@ static WINDOW *w_holiday; static WINDOW *w_del_msg; static bool *my_pairs; -static int boxit(void); -static int seas(void); -static int greet(void); -static int fromwho(void); -static int tree(void); -static int balls(void); -static int star(void); -static int strng1(void); -static int strng2(void); -static int strng3(void); -static int strng4(void); -static int strng5(void); -static int reindeer(void); -static int blinkit(void); - -static RETSIGTYPE done(int sig) GCC_NORETURN; +static GCC_NORETURN void done(int sig); static void set_color(WINDOW *win, chtype color) @@ -183,980 +168,1004 @@ look_out(int msecs) } } -int -main(int argc GCC_UNUSED, char **argv GCC_UNUSED) +static int +boxit(void) { - int loopy; + int x = 0; - setlocale(LC_ALL, ""); + while (x < 20) { + MvAddCh(x, 7, '|'); + ++x; + } - initscr(); - noecho(); - nonl(); - refresh(); + x = 8; + + while (x < 80) { + MvAddCh(19, x, '_'); + ++x; + } - CATCHALL(done); + x = 0; - if (has_colors()) { - start_color(); -#if HAVE_USE_DEFAULT_COLORS - if (use_default_colors() == OK) - my_bg = -1; -#endif + while (x < 80) { + MvAddCh(22, x, '_'); + ++x; } - curs_set(0); - if ((treescrn = newwin(16, 27, 3, 53)) == 0 || - (treescrn2 = newwin(16, 27, 3, 53)) == 0 || - (treescrn3 = newwin(16, 27, 3, 53)) == 0 || - (treescrn4 = newwin(16, 27, 3, 53)) == 0 || - (treescrn5 = newwin(16, 27, 3, 53)) == 0 || - (treescrn6 = newwin(16, 27, 3, 53)) == 0 || - (treescrn7 = newwin(16, 27, 3, 53)) == 0 || - (treescrn8 = newwin(16, 27, 3, 53)) == 0 || + return (0); +} - (dotdeer0 = newwin(3, 71, 0, 8)) == 0 || +static int +seas(void) +{ + MvAddCh(4, 1, 'S'); + MvAddCh(6, 1, 'E'); + MvAddCh(8, 1, 'A'); + MvAddCh(10, 1, 'S'); + MvAddCh(12, 1, 'O'); + MvAddCh(14, 1, 'N'); + MvAddCh(16, 1, '`'); + MvAddCh(18, 1, 'S'); - (stardeer0 = newwin(4, 56, 0, 8)) == 0 || + return (0); +} - (lildeer0 = newwin(7, 53, 0, 8)) == 0 || - (lildeer1 = newwin(2, 4, 0, 0)) == 0 || - (lildeer2 = newwin(2, 4, 0, 0)) == 0 || - (lildeer3 = newwin(2, 4, 0, 0)) == 0 || +static int +greet(void) +{ + MvAddCh(3, 5, 'G'); + MvAddCh(5, 5, 'R'); + MvAddCh(7, 5, 'E'); + MvAddCh(9, 5, 'E'); + MvAddCh(11, 5, 'T'); + MvAddCh(13, 5, 'I'); + MvAddCh(15, 5, 'N'); + MvAddCh(17, 5, 'G'); + MvAddCh(19, 5, 'S'); - (middeer0 = newwin(15, 42, 0, 8)) == 0 || - (middeer1 = newwin(3, 7, 0, 0)) == 0 || - (middeer2 = newwin(3, 7, 0, 0)) == 0 || - (middeer3 = newwin(3, 7, 0, 0)) == 0 || + return (0); +} - (bigdeer0 = newwin(10, 23, 0, 0)) == 0 || - (bigdeer1 = newwin(10, 23, 0, 0)) == 0 || - (bigdeer2 = newwin(10, 23, 0, 0)) == 0 || - (bigdeer3 = newwin(10, 23, 0, 0)) == 0 || - (bigdeer4 = newwin(10, 23, 0, 0)) == 0 || +static int +fromwho(void) +{ + MvAddStr(21, 13, FROMWHO); + return (0); +} - (lookdeer0 = newwin(10, 25, 0, 0)) == 0 || - (lookdeer1 = newwin(10, 25, 0, 0)) == 0 || - (lookdeer2 = newwin(10, 25, 0, 0)) == 0 || - (lookdeer3 = newwin(10, 25, 0, 0)) == 0 || - (lookdeer4 = newwin(10, 25, 0, 0)) == 0 || +static int +tree(void) +{ + set_color(treescrn, COLOR_GREEN); + MvWAddCh(treescrn, 1, 11, (chtype) '/'); + MvWAddCh(treescrn, 2, 11, (chtype) '/'); + MvWAddCh(treescrn, 3, 10, (chtype) '/'); + MvWAddCh(treescrn, 4, 9, (chtype) '/'); + MvWAddCh(treescrn, 5, 9, (chtype) '/'); + MvWAddCh(treescrn, 6, 8, (chtype) '/'); + MvWAddCh(treescrn, 7, 7, (chtype) '/'); + MvWAddCh(treescrn, 8, 6, (chtype) '/'); + MvWAddCh(treescrn, 9, 6, (chtype) '/'); + MvWAddCh(treescrn, 10, 5, (chtype) '/'); + MvWAddCh(treescrn, 11, 3, (chtype) '/'); + MvWAddCh(treescrn, 12, 2, (chtype) '/'); - (w_holiday = newwin(1, 26, 3, 27)) == 0 || + MvWAddCh(treescrn, 1, 13, (chtype) '\\'); + MvWAddCh(treescrn, 2, 13, (chtype) '\\'); + MvWAddCh(treescrn, 3, 14, (chtype) '\\'); + MvWAddCh(treescrn, 4, 15, (chtype) '\\'); + MvWAddCh(treescrn, 5, 15, (chtype) '\\'); + MvWAddCh(treescrn, 6, 16, (chtype) '\\'); + MvWAddCh(treescrn, 7, 17, (chtype) '\\'); + MvWAddCh(treescrn, 8, 18, (chtype) '\\'); + MvWAddCh(treescrn, 9, 18, (chtype) '\\'); + MvWAddCh(treescrn, 10, 19, (chtype) '\\'); + MvWAddCh(treescrn, 11, 21, (chtype) '\\'); + MvWAddCh(treescrn, 12, 22, (chtype) '\\'); - (w_del_msg = newwin(1, 19, 23, 60)) == 0) { - endwin(); - fprintf(stderr, "Cannot create windows - screen too small\n"); - ExitProgram(EXIT_FAILURE); - } + MvWAddCh(treescrn, 4, 10, (chtype) '_'); + MvWAddCh(treescrn, 4, 14, (chtype) '_'); + MvWAddCh(treescrn, 8, 7, (chtype) '_'); + MvWAddCh(treescrn, 8, 17, (chtype) '_'); - MvWAddStr(w_del_msg, 0, 0, "Hit any key to quit"); + MvWAddStr(treescrn, 13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\"); - MvWAddStr(w_holiday, 0, 0, "H A P P Y H O L I D A Y S"); + MvWAddStr(treescrn, 14, 11, "| |"); + MvWAddStr(treescrn, 15, 11, "|_|"); - /* set up the windows for our various reindeer */ + unset_color(treescrn); + wrefresh(treescrn); + wrefresh(w_del_msg); - /* lildeer1 */ - MvWAddCh(lildeer1, 0, 0, (chtype) 'V'); - MvWAddCh(lildeer1, 1, 0, (chtype) '@'); - MvWAddCh(lildeer1, 1, 1, (chtype) '<'); - MvWAddCh(lildeer1, 1, 2, (chtype) '>'); - MvWAddCh(lildeer1, 1, 3, (chtype) '~'); + return (0); +} - /* lildeer2 */ - MvWAddCh(lildeer2, 0, 0, (chtype) 'V'); - MvWAddCh(lildeer2, 1, 0, (chtype) '@'); - MvWAddCh(lildeer2, 1, 1, (chtype) '|'); - MvWAddCh(lildeer2, 1, 2, (chtype) '|'); - MvWAddCh(lildeer2, 1, 3, (chtype) '~'); +static int +balls(void) +{ + overlay(treescrn, treescrn2); - /* lildeer3 */ - MvWAddCh(lildeer3, 0, 0, (chtype) 'V'); - MvWAddCh(lildeer3, 1, 0, (chtype) '@'); - MvWAddCh(lildeer3, 1, 1, (chtype) '>'); - MvWAddCh(lildeer3, 1, 2, (chtype) '<'); - MvWAddCh(lildeer2, 1, 3, (chtype) '~'); + set_color(treescrn2, COLOR_BLUE); + MvWAddCh(treescrn2, 3, 9, (chtype) '@'); + MvWAddCh(treescrn2, 3, 15, (chtype) '@'); + MvWAddCh(treescrn2, 4, 8, (chtype) '@'); + MvWAddCh(treescrn2, 4, 16, (chtype) '@'); + MvWAddCh(treescrn2, 5, 7, (chtype) '@'); + MvWAddCh(treescrn2, 5, 17, (chtype) '@'); + MvWAddCh(treescrn2, 7, 6, (chtype) '@'); + MvWAddCh(treescrn2, 7, 18, (chtype) '@'); + MvWAddCh(treescrn2, 8, 5, (chtype) '@'); + MvWAddCh(treescrn2, 8, 19, (chtype) '@'); + MvWAddCh(treescrn2, 10, 4, (chtype) '@'); + MvWAddCh(treescrn2, 10, 20, (chtype) '@'); + MvWAddCh(treescrn2, 11, 2, (chtype) '@'); + MvWAddCh(treescrn2, 11, 22, (chtype) '@'); + MvWAddCh(treescrn2, 12, 1, (chtype) '@'); + MvWAddCh(treescrn2, 12, 23, (chtype) '@'); - /* middeer1 */ - MvWAddCh(middeer1, 0, 2, (chtype) 'y'); - MvWAddCh(middeer1, 0, 3, (chtype) 'y'); - MvWAddCh(middeer1, 1, 2, (chtype) '0'); - MvWAddCh(middeer1, 1, 3, (chtype) '('); - MvWAddCh(middeer1, 1, 4, (chtype) '='); - MvWAddCh(middeer1, 1, 5, (chtype) ')'); - MvWAddCh(middeer1, 1, 6, (chtype) '~'); - MvWAddCh(middeer1, 2, 3, (chtype) '\\'); - MvWAddCh(middeer1, 2, 4, (chtype) '/'); + unset_color(treescrn2); + wrefresh(treescrn2); + wrefresh(w_del_msg); + return (0); +} - /* middeer2 */ - MvWAddCh(middeer2, 0, 2, (chtype) 'y'); - MvWAddCh(middeer2, 0, 3, (chtype) 'y'); - MvWAddCh(middeer2, 1, 2, (chtype) '0'); - MvWAddCh(middeer2, 1, 3, (chtype) '('); - MvWAddCh(middeer2, 1, 4, (chtype) '='); - MvWAddCh(middeer2, 1, 5, (chtype) ')'); - MvWAddCh(middeer2, 1, 6, (chtype) '~'); - MvWAddCh(middeer2, 2, 3, (chtype) '|'); - MvWAddCh(middeer2, 2, 5, (chtype) '|'); +static int +star(void) +{ + (void) wattrset(treescrn2, A_BOLD | A_BLINK); + set_color(treescrn2, COLOR_YELLOW); - /* middeer3 */ - MvWAddCh(middeer3, 0, 2, (chtype) 'y'); - MvWAddCh(middeer3, 0, 3, (chtype) 'y'); - MvWAddCh(middeer3, 1, 2, (chtype) '0'); - MvWAddCh(middeer3, 1, 3, (chtype) '('); - MvWAddCh(middeer3, 1, 4, (chtype) '='); - MvWAddCh(middeer3, 1, 5, (chtype) ')'); - MvWAddCh(middeer3, 1, 6, (chtype) '~'); - MvWAddCh(middeer3, 2, 2, (chtype) '/'); - MvWAddCh(middeer3, 2, 6, (chtype) '\\'); + MvWAddCh(treescrn2, 0, 12, (chtype) '*'); + (void) wstandend(treescrn2); - /* bigdeer1 */ - MvWAddCh(bigdeer1, 0, 17, (chtype) '\\'); - MvWAddCh(bigdeer1, 0, 18, (chtype) '/'); - MvWAddCh(bigdeer1, 0, 20, (chtype) '\\'); - MvWAddCh(bigdeer1, 0, 21, (chtype) '/'); - MvWAddCh(bigdeer1, 1, 18, (chtype) '\\'); - MvWAddCh(bigdeer1, 1, 20, (chtype) '/'); - MvWAddCh(bigdeer1, 2, 19, (chtype) '|'); - MvWAddCh(bigdeer1, 2, 20, (chtype) '_'); - MvWAddCh(bigdeer1, 3, 18, (chtype) '/'); - MvWAddCh(bigdeer1, 3, 19, (chtype) '^'); - MvWAddCh(bigdeer1, 3, 20, (chtype) '0'); - MvWAddCh(bigdeer1, 3, 21, (chtype) '\\'); - MvWAddCh(bigdeer1, 4, 17, (chtype) '/'); - MvWAddCh(bigdeer1, 4, 18, (chtype) '/'); - MvWAddCh(bigdeer1, 4, 19, (chtype) '\\'); - MvWAddCh(bigdeer1, 4, 22, (chtype) '\\'); - MvWAddStr(bigdeer1, 5, 7, "^~~~~~~~~// ~~U"); - MvWAddStr(bigdeer1, 6, 7, "( \\_____( /"); - MvWAddStr(bigdeer1, 7, 8, "( ) /"); - MvWAddStr(bigdeer1, 8, 9, "\\\\ /"); - MvWAddStr(bigdeer1, 9, 11, "\\>/>"); + unset_color(treescrn2); + wrefresh(treescrn2); + wrefresh(w_del_msg); + return (0); +} - /* bigdeer2 */ - MvWAddCh(bigdeer2, 0, 17, (chtype) '\\'); - MvWAddCh(bigdeer2, 0, 18, (chtype) '/'); - MvWAddCh(bigdeer2, 0, 20, (chtype) '\\'); - MvWAddCh(bigdeer2, 0, 21, (chtype) '/'); - MvWAddCh(bigdeer2, 1, 18, (chtype) '\\'); - MvWAddCh(bigdeer2, 1, 20, (chtype) '/'); - MvWAddCh(bigdeer2, 2, 19, (chtype) '|'); - MvWAddCh(bigdeer2, 2, 20, (chtype) '_'); - MvWAddCh(bigdeer2, 3, 18, (chtype) '/'); - MvWAddCh(bigdeer2, 3, 19, (chtype) '^'); - MvWAddCh(bigdeer2, 3, 20, (chtype) '0'); - MvWAddCh(bigdeer2, 3, 21, (chtype) '\\'); - MvWAddCh(bigdeer2, 4, 17, (chtype) '/'); - MvWAddCh(bigdeer2, 4, 18, (chtype) '/'); - MvWAddCh(bigdeer2, 4, 19, (chtype) '\\'); - MvWAddCh(bigdeer2, 4, 22, (chtype) '\\'); - MvWAddStr(bigdeer2, 5, 7, "^~~~~~~~~// ~~U"); - MvWAddStr(bigdeer2, 6, 7, "(( )____( /"); - MvWAddStr(bigdeer2, 7, 7, "( / |"); - MvWAddStr(bigdeer2, 8, 8, "\\/ |"); - MvWAddStr(bigdeer2, 9, 9, "|> |>"); - - /* bigdeer3 */ - MvWAddCh(bigdeer3, 0, 17, (chtype) '\\'); - MvWAddCh(bigdeer3, 0, 18, (chtype) '/'); - MvWAddCh(bigdeer3, 0, 20, (chtype) '\\'); - MvWAddCh(bigdeer3, 0, 21, (chtype) '/'); - MvWAddCh(bigdeer3, 1, 18, (chtype) '\\'); - MvWAddCh(bigdeer3, 1, 20, (chtype) '/'); - MvWAddCh(bigdeer3, 2, 19, (chtype) '|'); - MvWAddCh(bigdeer3, 2, 20, (chtype) '_'); - MvWAddCh(bigdeer3, 3, 18, (chtype) '/'); - MvWAddCh(bigdeer3, 3, 19, (chtype) '^'); - MvWAddCh(bigdeer3, 3, 20, (chtype) '0'); - MvWAddCh(bigdeer3, 3, 21, (chtype) '\\'); - MvWAddCh(bigdeer3, 4, 17, (chtype) '/'); - MvWAddCh(bigdeer3, 4, 18, (chtype) '/'); - MvWAddCh(bigdeer3, 4, 19, (chtype) '\\'); - MvWAddCh(bigdeer3, 4, 22, (chtype) '\\'); - MvWAddStr(bigdeer3, 5, 7, "^~~~~~~~~// ~~U"); - MvWAddStr(bigdeer3, 6, 6, "( ()_____( /"); - MvWAddStr(bigdeer3, 7, 6, "/ / /"); - MvWAddStr(bigdeer3, 8, 5, "|/ \\"); - MvWAddStr(bigdeer3, 9, 5, "/> \\>"); - - /* bigdeer4 */ - MvWAddCh(bigdeer4, 0, 17, (chtype) '\\'); - MvWAddCh(bigdeer4, 0, 18, (chtype) '/'); - MvWAddCh(bigdeer4, 0, 20, (chtype) '\\'); - MvWAddCh(bigdeer4, 0, 21, (chtype) '/'); - MvWAddCh(bigdeer4, 1, 18, (chtype) '\\'); - MvWAddCh(bigdeer4, 1, 20, (chtype) '/'); - MvWAddCh(bigdeer4, 2, 19, (chtype) '|'); - MvWAddCh(bigdeer4, 2, 20, (chtype) '_'); - MvWAddCh(bigdeer4, 3, 18, (chtype) '/'); - MvWAddCh(bigdeer4, 3, 19, (chtype) '^'); - MvWAddCh(bigdeer4, 3, 20, (chtype) '0'); - MvWAddCh(bigdeer4, 3, 21, (chtype) '\\'); - MvWAddCh(bigdeer4, 4, 17, (chtype) '/'); - MvWAddCh(bigdeer4, 4, 18, (chtype) '/'); - MvWAddCh(bigdeer4, 4, 19, (chtype) '\\'); - MvWAddCh(bigdeer4, 4, 22, (chtype) '\\'); - MvWAddStr(bigdeer4, 5, 7, "^~~~~~~~~// ~~U"); - MvWAddStr(bigdeer4, 6, 6, "( )______( /"); - MvWAddStr(bigdeer4, 7, 5, "(/ \\"); - MvWAddStr(bigdeer4, 8, 0, "v___= ----^"); - - /* lookdeer1 */ - MvWAddStr(lookdeer1, 0, 16, "\\/ \\/"); - MvWAddStr(lookdeer1, 1, 17, "\\Y/ \\Y/"); - MvWAddStr(lookdeer1, 2, 19, "\\=/"); - MvWAddStr(lookdeer1, 3, 17, "^\\o o/^"); - MvWAddStr(lookdeer1, 4, 17, "//( )"); - MvWAddStr(lookdeer1, 5, 7, "^~~~~~~~~// \\O/"); - MvWAddStr(lookdeer1, 6, 7, "( \\_____( /"); - MvWAddStr(lookdeer1, 7, 8, "( ) /"); - MvWAddStr(lookdeer1, 8, 9, "\\\\ /"); - MvWAddStr(lookdeer1, 9, 11, "\\>/>"); - - /* lookdeer2 */ - MvWAddStr(lookdeer2, 0, 16, "\\/ \\/"); - MvWAddStr(lookdeer2, 1, 17, "\\Y/ \\Y/"); - MvWAddStr(lookdeer2, 2, 19, "\\=/"); - MvWAddStr(lookdeer2, 3, 17, "^\\o o/^"); - MvWAddStr(lookdeer2, 4, 17, "//( )"); - MvWAddStr(lookdeer2, 5, 7, "^~~~~~~~~// \\O/"); - MvWAddStr(lookdeer2, 6, 7, "(( )____( /"); - MvWAddStr(lookdeer2, 7, 7, "( / |"); - MvWAddStr(lookdeer2, 8, 8, "\\/ |"); - MvWAddStr(lookdeer2, 9, 9, "|> |>"); - - /* lookdeer3 */ - MvWAddStr(lookdeer3, 0, 16, "\\/ \\/"); - MvWAddStr(lookdeer3, 1, 17, "\\Y/ \\Y/"); - MvWAddStr(lookdeer3, 2, 19, "\\=/"); - MvWAddStr(lookdeer3, 3, 17, "^\\o o/^"); - MvWAddStr(lookdeer3, 4, 17, "//( )"); - MvWAddStr(lookdeer3, 5, 7, "^~~~~~~~~// \\O/"); - MvWAddStr(lookdeer3, 6, 6, "( ()_____( /"); - MvWAddStr(lookdeer3, 7, 6, "/ / /"); - MvWAddStr(lookdeer3, 8, 5, "|/ \\"); - MvWAddStr(lookdeer3, 9, 5, "/> \\>"); - - /* lookdeer4 */ - MvWAddStr(lookdeer4, 0, 16, "\\/ \\/"); - MvWAddStr(lookdeer4, 1, 17, "\\Y/ \\Y/"); - MvWAddStr(lookdeer4, 2, 19, "\\=/"); - MvWAddStr(lookdeer4, 3, 17, "^\\o o/^"); - MvWAddStr(lookdeer4, 4, 17, "//( )"); - MvWAddStr(lookdeer4, 5, 7, "^~~~~~~~~// \\O/"); - MvWAddStr(lookdeer4, 6, 6, "( )______( /"); - MvWAddStr(lookdeer4, 7, 5, "(/ \\"); - MvWAddStr(lookdeer4, 8, 0, "v___= ----^"); - - /***********************************************/ - cbreak(); - nodelay(stdscr, TRUE); - for (;;) { - clear(); - werase(treescrn); - touchwin(w_del_msg); - touchwin(treescrn); - werase(treescrn2); - touchwin(treescrn2); - werase(treescrn8); - touchwin(treescrn8); - refresh(); - look_out(150); - boxit(); - refresh(); - look_out(150); - seas(); - refresh(); - look_out(150); - greet(); - refresh(); - look_out(150); - fromwho(); - refresh(); - look_out(150); - tree(); - look_out(150); - balls(); - look_out(150); - star(); - look_out(150); - strng1(); - strng2(); - strng3(); - strng4(); - strng5(); - - /* set up the windows for our blinking trees */ - /* **************************************** */ - /* treescrn3 */ - - overlay(treescrn, treescrn3); - - /*balls */ - MvWAddCh(treescrn3, 4, 18, ' '); - MvWAddCh(treescrn3, 7, 6, ' '); - MvWAddCh(treescrn3, 8, 19, ' '); - MvWAddCh(treescrn3, 11, 22, ' '); - - /*star */ - MvWAddCh(treescrn3, 0, 12, '*'); +static int +strng1(void) +{ + (void) wattrset(treescrn2, A_BOLD | A_BLINK); + set_color(treescrn2, COLOR_WHITE); - /*strng1 */ - MvWAddCh(treescrn3, 3, 11, ' '); + MvWAddCh(treescrn2, 3, 13, (chtype) '\''); + MvWAddCh(treescrn2, 3, 12, (chtype) ':'); + MvWAddCh(treescrn2, 3, 11, (chtype) '.'); - /*strng2 */ - MvWAddCh(treescrn3, 5, 13, ' '); - MvWAddCh(treescrn3, 6, 10, ' '); + wattroff(treescrn2, A_BOLD | A_BLINK); + unset_color(treescrn2); - /*strng3 */ - MvWAddCh(treescrn3, 7, 16, ' '); - MvWAddCh(treescrn3, 7, 14, ' '); + wrefresh(treescrn2); + wrefresh(w_del_msg); + return (0); +} - /*strng4 */ - MvWAddCh(treescrn3, 10, 13, ' '); - MvWAddCh(treescrn3, 10, 10, ' '); - MvWAddCh(treescrn3, 11, 8, ' '); +static int +strng2(void) +{ + (void) wattrset(treescrn2, A_BOLD | A_BLINK); + set_color(treescrn2, COLOR_WHITE); - /*strng5 */ - MvWAddCh(treescrn3, 11, 18, ' '); - MvWAddCh(treescrn3, 12, 13, ' '); + MvWAddCh(treescrn2, 5, 14, (chtype) '\''); + MvWAddCh(treescrn2, 5, 13, (chtype) ':'); + MvWAddCh(treescrn2, 5, 12, (chtype) '.'); + MvWAddCh(treescrn2, 5, 11, (chtype) ','); + MvWAddCh(treescrn2, 6, 10, (chtype) '\''); + MvWAddCh(treescrn2, 6, 9, (chtype) ':'); - /* treescrn4 */ + wattroff(treescrn2, A_BOLD | A_BLINK); + unset_color(treescrn2); - overlay(treescrn, treescrn4); + wrefresh(treescrn2); + wrefresh(w_del_msg); + return (0); +} - /*balls */ - MvWAddCh(treescrn4, 3, 9, ' '); - MvWAddCh(treescrn4, 4, 16, ' '); - MvWAddCh(treescrn4, 7, 6, ' '); - MvWAddCh(treescrn4, 8, 19, ' '); - MvWAddCh(treescrn4, 11, 2, ' '); - MvWAddCh(treescrn4, 12, 23, ' '); +static int +strng3(void) +{ + (void) wattrset(treescrn2, A_BOLD | A_BLINK); + set_color(treescrn2, COLOR_WHITE); - /*star */ - (void) wstandout(treescrn4); - MvWAddCh(treescrn4, 0, 12, '*'); - (void) wstandend(treescrn4); + MvWAddCh(treescrn2, 7, 16, (chtype) '\''); + MvWAddCh(treescrn2, 7, 15, (chtype) ':'); + MvWAddCh(treescrn2, 7, 14, (chtype) '.'); + MvWAddCh(treescrn2, 7, 13, (chtype) ','); + MvWAddCh(treescrn2, 8, 12, (chtype) '\''); + MvWAddCh(treescrn2, 8, 11, (chtype) ':'); + MvWAddCh(treescrn2, 8, 10, (chtype) '.'); + MvWAddCh(treescrn2, 8, 9, (chtype) ','); - /*strng1 */ - MvWAddCh(treescrn4, 3, 13, ' '); + wattroff(treescrn2, A_BOLD | A_BLINK); + unset_color(treescrn2); - /*strng2 */ + wrefresh(treescrn2); + wrefresh(w_del_msg); + return (0); +} - /*strng3 */ - MvWAddCh(treescrn4, 7, 15, ' '); - MvWAddCh(treescrn4, 8, 11, ' '); +static int +strng4(void) +{ + (void) wattrset(treescrn2, A_BOLD | A_BLINK); + set_color(treescrn2, COLOR_WHITE); - /*strng4 */ - MvWAddCh(treescrn4, 9, 16, ' '); - MvWAddCh(treescrn4, 10, 12, ' '); - MvWAddCh(treescrn4, 11, 8, ' '); + MvWAddCh(treescrn2, 9, 17, (chtype) '\''); + MvWAddCh(treescrn2, 9, 16, (chtype) ':'); + MvWAddCh(treescrn2, 9, 15, (chtype) '.'); + MvWAddCh(treescrn2, 9, 14, (chtype) ','); + MvWAddCh(treescrn2, 10, 13, (chtype) '\''); + MvWAddCh(treescrn2, 10, 12, (chtype) ':'); + MvWAddCh(treescrn2, 10, 11, (chtype) '.'); + MvWAddCh(treescrn2, 10, 10, (chtype) ','); + MvWAddCh(treescrn2, 11, 9, (chtype) '\''); + MvWAddCh(treescrn2, 11, 8, (chtype) ':'); + MvWAddCh(treescrn2, 11, 7, (chtype) '.'); + MvWAddCh(treescrn2, 11, 6, (chtype) ','); + MvWAddCh(treescrn2, 12, 5, (chtype) '\''); - /*strng5 */ - MvWAddCh(treescrn4, 11, 18, ' '); - MvWAddCh(treescrn4, 12, 14, ' '); + wattroff(treescrn2, A_BOLD | A_BLINK); + unset_color(treescrn2); - /* treescrn5 */ + wrefresh(treescrn2); + wrefresh(w_del_msg); + return (0); +} - overlay(treescrn, treescrn5); +static int +strng5(void) +{ + (void) wattrset(treescrn2, A_BOLD | A_BLINK); + set_color(treescrn2, COLOR_WHITE); - /*balls */ - MvWAddCh(treescrn5, 3, 15, ' '); - MvWAddCh(treescrn5, 10, 20, ' '); - MvWAddCh(treescrn5, 12, 1, ' '); + MvWAddCh(treescrn2, 11, 19, (chtype) '\''); + MvWAddCh(treescrn2, 11, 18, (chtype) ':'); + MvWAddCh(treescrn2, 11, 17, (chtype) '.'); + MvWAddCh(treescrn2, 11, 16, (chtype) ','); + MvWAddCh(treescrn2, 12, 15, (chtype) '\''); + MvWAddCh(treescrn2, 12, 14, (chtype) ':'); + MvWAddCh(treescrn2, 12, 13, (chtype) '.'); + MvWAddCh(treescrn2, 12, 12, (chtype) ','); - /*star */ - MvWAddCh(treescrn5, 0, 12, '*'); + wattroff(treescrn2, A_BOLD | A_BLINK); + unset_color(treescrn2); - /*strng1 */ - MvWAddCh(treescrn5, 3, 11, ' '); + /* save a fully lit tree */ + overlay(treescrn2, treescrn); - /*strng2 */ - MvWAddCh(treescrn5, 5, 12, ' '); + wrefresh(treescrn2); + wrefresh(w_del_msg); + return (0); +} - /*strng3 */ - MvWAddCh(treescrn5, 7, 14, ' '); - MvWAddCh(treescrn5, 8, 10, ' '); +static int +blinkit(void) +{ + static int cycle; - /*strng4 */ - MvWAddCh(treescrn5, 9, 15, ' '); - MvWAddCh(treescrn5, 10, 11, ' '); - MvWAddCh(treescrn5, 11, 7, ' '); + if (cycle > 4) { + cycle = 0; + } - /*strng5 */ - MvWAddCh(treescrn5, 11, 17, ' '); - MvWAddCh(treescrn5, 12, 13, ' '); + touchwin(treescrn8); - /* treescrn6 */ + switch (cycle) { + case 0: + overlay(treescrn3, treescrn8); + break; + case 1: + overlay(treescrn4, treescrn8); + break; + case 2: + overlay(treescrn5, treescrn8); + break; + case 3: + overlay(treescrn6, treescrn8); + break; + case 4: + overlay(treescrn7, treescrn8); + break; + } + touchwin(treescrn8); + wrefresh(treescrn8); + wrefresh(w_del_msg); + look_out(50); - overlay(treescrn, treescrn6); + /*ALL ON************************************************** */ - /*balls */ - MvWAddCh(treescrn6, 6, 7, ' '); - MvWAddCh(treescrn6, 7, 18, ' '); - MvWAddCh(treescrn6, 10, 4, ' '); - MvWAddCh(treescrn6, 11, 23, ' '); + overlay(treescrn, treescrn8); + wrefresh(treescrn8); + wrefresh(w_del_msg); + look_out(50); - /*star */ - (void) wstandout(treescrn6); - MvWAddCh(treescrn6, 0, 12, '*'); - (void) wstandend(treescrn6); + ++cycle; + return (0); +} - /*strng1 */ +static void +deer_step(WINDOW *win, int y, int x) +{ + mvwin(win, y, x); + wrefresh(win); + wrefresh(w_del_msg); + look_out(5); +} - /*strng2 */ - MvWAddCh(treescrn6, 5, 11, ' '); +static int +reindeer(void) +{ + int looper; + y_pos = 0; - /*strng3 */ - MvWAddCh(treescrn6, 7, 13, ' '); - MvWAddCh(treescrn6, 8, 9, ' '); + for (x_pos = 70; x_pos > 62; x_pos--) { + for (looper = 0; looper < 4; looper++) { + MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '.'); + wrefresh(dotdeer0); + wrefresh(w_del_msg); + werase(dotdeer0); + wrefresh(dotdeer0); + wrefresh(w_del_msg); + look_out(50); + } + } - /*strng4 */ - MvWAddCh(treescrn6, 9, 14, ' '); - MvWAddCh(treescrn6, 10, 10, ' '); - MvWAddCh(treescrn6, 11, 6, ' '); + y_pos = 2; - /*strng5 */ - MvWAddCh(treescrn6, 11, 16, ' '); - MvWAddCh(treescrn6, 12, 12, ' '); + for (; x_pos > 50; x_pos--) { + for (looper = 0; looper < 4; looper++) { - /* treescrn7 */ + if (x_pos < 56) { + y_pos = 3; - overlay(treescrn, treescrn7); + MvWAddCh(stardeer0, y_pos, x_pos, (chtype) '*'); + wrefresh(stardeer0); + wrefresh(w_del_msg); + werase(stardeer0); + wrefresh(stardeer0); + wrefresh(w_del_msg); + } else { + MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '*'); + wrefresh(dotdeer0); + wrefresh(w_del_msg); + werase(dotdeer0); + wrefresh(dotdeer0); + wrefresh(w_del_msg); + } + } + } - /*balls */ - MvWAddCh(treescrn7, 3, 15, ' '); - MvWAddCh(treescrn7, 6, 7, ' '); - MvWAddCh(treescrn7, 7, 18, ' '); - MvWAddCh(treescrn7, 10, 4, ' '); - MvWAddCh(treescrn7, 11, 22, ' '); + x_pos = 58; - /*star */ - MvWAddCh(treescrn7, 0, 12, '*'); + for (y_pos = 2; y_pos < 5; y_pos++) { - /*strng1 */ - MvWAddCh(treescrn7, 3, 12, ' '); + touchwin(lildeer0); + wrefresh(lildeer0); + wrefresh(w_del_msg); - /*strng2 */ - MvWAddCh(treescrn7, 5, 13, ' '); - MvWAddCh(treescrn7, 6, 9, ' '); + for (looper = 0; looper < 4; looper++) { + deer_step(lildeer3, y_pos, x_pos); + deer_step(lildeer2, y_pos, x_pos); + deer_step(lildeer1, y_pos, x_pos); + deer_step(lildeer2, y_pos, x_pos); + deer_step(lildeer3, y_pos, x_pos); - /*strng3 */ - MvWAddCh(treescrn7, 7, 15, ' '); - MvWAddCh(treescrn7, 8, 11, ' '); + touchwin(lildeer0); + wrefresh(lildeer0); + wrefresh(w_del_msg); - /*strng4 */ - MvWAddCh(treescrn7, 9, 16, ' '); - MvWAddCh(treescrn7, 10, 12, ' '); - MvWAddCh(treescrn7, 11, 8, ' '); + x_pos -= 2; + } + } - /*strng5 */ - MvWAddCh(treescrn7, 11, 18, ' '); - MvWAddCh(treescrn7, 12, 14, ' '); + x_pos = 35; - look_out(150); - reindeer(); + for (y_pos = 5; y_pos < 10; y_pos++) { - touchwin(w_holiday); - wrefresh(w_holiday); + touchwin(middeer0); + wrefresh(middeer0); wrefresh(w_del_msg); - look_out(500); - for (loopy = 0; loopy < 100; loopy++) { - blinkit(); - } + for (looper = 0; looper < 2; looper++) { + deer_step(middeer3, y_pos, x_pos); + deer_step(middeer2, y_pos, x_pos); + deer_step(middeer1, y_pos, x_pos); + deer_step(middeer2, y_pos, x_pos); + deer_step(middeer3, y_pos, x_pos); -#ifdef NOLOOP - done(0); -#endif + touchwin(middeer0); + wrefresh(middeer0); + wrefresh(w_del_msg); + + x_pos -= 3; + } } - /*NOTREACHED */ -} -static int -boxit(void) -{ - int x = 0; + look_out(300); - while (x < 20) { - MvAddCh(x, 7, '|'); - ++x; + y_pos = 1; + + for (x_pos = 8; x_pos < 16; x_pos++) { + deer_step(bigdeer4, y_pos, x_pos); + deer_step(bigdeer3, y_pos, x_pos); + deer_step(bigdeer2, y_pos, x_pos); + deer_step(bigdeer1, y_pos, x_pos); + deer_step(bigdeer2, y_pos, x_pos); + deer_step(bigdeer3, y_pos, x_pos); + deer_step(bigdeer4, y_pos, x_pos); + deer_step(bigdeer0, y_pos, x_pos); } - x = 8; + --x_pos; - while (x < 80) { - MvAddCh(19, x, '_'); - ++x; + for (looper = 0; looper < 6; looper++) { + deer_step(lookdeer4, y_pos, x_pos); + deer_step(lookdeer3, y_pos, x_pos); + deer_step(lookdeer2, y_pos, x_pos); + deer_step(lookdeer1, y_pos, x_pos); + deer_step(lookdeer2, y_pos, x_pos); + deer_step(lookdeer3, y_pos, x_pos); + deer_step(lookdeer4, y_pos, x_pos); } - x = 0; + deer_step(lookdeer0, y_pos, x_pos); - while (x < 80) { - MvAddCh(22, x, '_'); - ++x; + for (; y_pos < 10; y_pos++) { + for (looper = 0; looper < 2; looper++) { + deer_step(bigdeer4, y_pos, x_pos); + deer_step(bigdeer3, y_pos, x_pos); + deer_step(bigdeer2, y_pos, x_pos); + deer_step(bigdeer1, y_pos, x_pos); + deer_step(bigdeer2, y_pos, x_pos); + deer_step(bigdeer3, y_pos, x_pos); + deer_step(bigdeer4, y_pos, x_pos); + } + deer_step(bigdeer0, y_pos, x_pos); } + --y_pos; + + deer_step(lookdeer3, y_pos, x_pos); return (0); } -static int -seas(void) +static void +done(int sig GCC_UNUSED) { - MvAddCh(4, 1, 'S'); - MvAddCh(6, 1, 'E'); - MvAddCh(8, 1, 'A'); - MvAddCh(10, 1, 'S'); - MvAddCh(12, 1, 'O'); - MvAddCh(14, 1, 'N'); - MvAddCh(16, 1, '`'); - MvAddCh(18, 1, 'S'); + move(LINES - 1, 0); + refresh(); + stop_curses(); - return (0); +#if NO_LEAKS + if (my_pairs != 0) + free(my_pairs); +#endif + + ExitProgram(EXIT_SUCCESS); } -static int -greet(void) +static void +usage(void) { - MvAddCh(3, 5, 'G'); - MvAddCh(5, 5, 'R'); - MvAddCh(7, 5, 'E'); - MvAddCh(9, 5, 'E'); - MvAddCh(11, 5, 'T'); - MvAddCh(13, 5, 'I'); - MvAddCh(15, 5, 'N'); - MvAddCh(17, 5, 'G'); - MvAddCh(19, 5, 'S'); + static const char *msg[] = + { + "Usage: xmas [options]" + ,"" + ,"Options:" +#if HAVE_USE_DEFAULT_COLORS + ," -d invoke use_default_colors" +#endif + ," -q execute once, then quit" + }; + size_t n; - return (0); -} + for (n = 0; n < SIZEOF(msg); n++) + fprintf(stderr, "%s\n", msg[n]); -static int -fromwho(void) -{ - MvAddStr(21, 13, FROMWHO); - return (0); + ExitProgram(EXIT_FAILURE); } -static int -tree(void) +int +main(int argc, char *argv[]) { - set_color(treescrn, COLOR_GREEN); - MvWAddCh(treescrn, 1, 11, (chtype) '/'); - MvWAddCh(treescrn, 2, 11, (chtype) '/'); - MvWAddCh(treescrn, 3, 10, (chtype) '/'); - MvWAddCh(treescrn, 4, 9, (chtype) '/'); - MvWAddCh(treescrn, 5, 9, (chtype) '/'); - MvWAddCh(treescrn, 6, 8, (chtype) '/'); - MvWAddCh(treescrn, 7, 7, (chtype) '/'); - MvWAddCh(treescrn, 8, 6, (chtype) '/'); - MvWAddCh(treescrn, 9, 6, (chtype) '/'); - MvWAddCh(treescrn, 10, 5, (chtype) '/'); - MvWAddCh(treescrn, 11, 3, (chtype) '/'); - MvWAddCh(treescrn, 12, 2, (chtype) '/'); + int ch; + int loopy; +#if HAVE_USE_DEFAULT_COLORS + bool opt_d = FALSE; +#endif + bool opt_q = FALSE; - MvWAddCh(treescrn, 1, 13, (chtype) '\\'); - MvWAddCh(treescrn, 2, 13, (chtype) '\\'); - MvWAddCh(treescrn, 3, 14, (chtype) '\\'); - MvWAddCh(treescrn, 4, 15, (chtype) '\\'); - MvWAddCh(treescrn, 5, 15, (chtype) '\\'); - MvWAddCh(treescrn, 6, 16, (chtype) '\\'); - MvWAddCh(treescrn, 7, 17, (chtype) '\\'); - MvWAddCh(treescrn, 8, 18, (chtype) '\\'); - MvWAddCh(treescrn, 9, 18, (chtype) '\\'); - MvWAddCh(treescrn, 10, 19, (chtype) '\\'); - MvWAddCh(treescrn, 11, 21, (chtype) '\\'); - MvWAddCh(treescrn, 12, 22, (chtype) '\\'); + while ((ch = getopt(argc, argv, "dq")) != -1) { + switch (ch) { +#if HAVE_USE_DEFAULT_COLORS + case 'd': + opt_d = TRUE; + break; +#endif + case 'q': + opt_q = TRUE; + break; + default: + usage(); + /* NOTREACHED */ + } + } - MvWAddCh(treescrn, 4, 10, (chtype) '_'); - MvWAddCh(treescrn, 4, 14, (chtype) '_'); - MvWAddCh(treescrn, 8, 7, (chtype) '_'); - MvWAddCh(treescrn, 8, 17, (chtype) '_'); + setlocale(LC_ALL, ""); - MvWAddStr(treescrn, 13, 0, "//////////// \\\\\\\\\\\\\\\\\\\\\\\\"); + InitAndCatch(initscr(), done); + noecho(); + nonl(); + refresh(); - MvWAddStr(treescrn, 14, 11, "| |"); - MvWAddStr(treescrn, 15, 11, "|_|"); + if (has_colors()) { + start_color(); +#if HAVE_USE_DEFAULT_COLORS + if (opt_d && (use_default_colors() == OK)) + my_bg = -1; +#endif + } + curs_set(0); - unset_color(treescrn); - wrefresh(treescrn); - wrefresh(w_del_msg); + if ((treescrn = newwin(16, 27, 3, 53)) == 0 || + (treescrn2 = newwin(16, 27, 3, 53)) == 0 || + (treescrn3 = newwin(16, 27, 3, 53)) == 0 || + (treescrn4 = newwin(16, 27, 3, 53)) == 0 || + (treescrn5 = newwin(16, 27, 3, 53)) == 0 || + (treescrn6 = newwin(16, 27, 3, 53)) == 0 || + (treescrn7 = newwin(16, 27, 3, 53)) == 0 || + (treescrn8 = newwin(16, 27, 3, 53)) == 0 || - return (0); -} + (dotdeer0 = newwin(3, 71, 0, 8)) == 0 || -static int -balls(void) -{ - overlay(treescrn, treescrn2); + (stardeer0 = newwin(4, 56, 0, 8)) == 0 || - set_color(treescrn2, COLOR_BLUE); - MvWAddCh(treescrn2, 3, 9, (chtype) '@'); - MvWAddCh(treescrn2, 3, 15, (chtype) '@'); - MvWAddCh(treescrn2, 4, 8, (chtype) '@'); - MvWAddCh(treescrn2, 4, 16, (chtype) '@'); - MvWAddCh(treescrn2, 5, 7, (chtype) '@'); - MvWAddCh(treescrn2, 5, 17, (chtype) '@'); - MvWAddCh(treescrn2, 7, 6, (chtype) '@'); - MvWAddCh(treescrn2, 7, 18, (chtype) '@'); - MvWAddCh(treescrn2, 8, 5, (chtype) '@'); - MvWAddCh(treescrn2, 8, 19, (chtype) '@'); - MvWAddCh(treescrn2, 10, 4, (chtype) '@'); - MvWAddCh(treescrn2, 10, 20, (chtype) '@'); - MvWAddCh(treescrn2, 11, 2, (chtype) '@'); - MvWAddCh(treescrn2, 11, 22, (chtype) '@'); - MvWAddCh(treescrn2, 12, 1, (chtype) '@'); - MvWAddCh(treescrn2, 12, 23, (chtype) '@'); + (lildeer0 = newwin(7, 53, 0, 8)) == 0 || + (lildeer1 = newwin(2, 4, 0, 0)) == 0 || + (lildeer2 = newwin(2, 4, 0, 0)) == 0 || + (lildeer3 = newwin(2, 4, 0, 0)) == 0 || - unset_color(treescrn2); - wrefresh(treescrn2); - wrefresh(w_del_msg); - return (0); -} + (middeer0 = newwin(15, 42, 0, 8)) == 0 || + (middeer1 = newwin(3, 7, 0, 0)) == 0 || + (middeer2 = newwin(3, 7, 0, 0)) == 0 || + (middeer3 = newwin(3, 7, 0, 0)) == 0 || -static int -star(void) -{ - (void) wattrset(treescrn2, A_BOLD | A_BLINK); - set_color(treescrn2, COLOR_YELLOW); + (bigdeer0 = newwin(10, 23, 0, 0)) == 0 || + (bigdeer1 = newwin(10, 23, 0, 0)) == 0 || + (bigdeer2 = newwin(10, 23, 0, 0)) == 0 || + (bigdeer3 = newwin(10, 23, 0, 0)) == 0 || + (bigdeer4 = newwin(10, 23, 0, 0)) == 0 || - MvWAddCh(treescrn2, 0, 12, (chtype) '*'); - (void) wstandend(treescrn2); + (lookdeer0 = newwin(10, 25, 0, 0)) == 0 || + (lookdeer1 = newwin(10, 25, 0, 0)) == 0 || + (lookdeer2 = newwin(10, 25, 0, 0)) == 0 || + (lookdeer3 = newwin(10, 25, 0, 0)) == 0 || + (lookdeer4 = newwin(10, 25, 0, 0)) == 0 || - unset_color(treescrn2); - wrefresh(treescrn2); - wrefresh(w_del_msg); - return (0); -} + (w_holiday = newwin(1, 26, 3, 27)) == 0 || -static int -strng1(void) -{ - (void) wattrset(treescrn2, A_BOLD | A_BLINK); - set_color(treescrn2, COLOR_WHITE); + (w_del_msg = newwin(1, 19, 23, 60)) == 0) { + stop_curses(); + fprintf(stderr, "Cannot create windows - screen too small\n"); + ExitProgram(EXIT_FAILURE); + } - MvWAddCh(treescrn2, 3, 13, (chtype) '\''); - MvWAddCh(treescrn2, 3, 12, (chtype) ':'); - MvWAddCh(treescrn2, 3, 11, (chtype) '.'); + MvWAddStr(w_del_msg, 0, 0, "Hit any key to quit"); - wattroff(treescrn2, A_BOLD | A_BLINK); - unset_color(treescrn2); + MvWAddStr(w_holiday, 0, 0, "H A P P Y H O L I D A Y S"); - wrefresh(treescrn2); - wrefresh(w_del_msg); - return (0); -} + /* set up the windows for our various reindeer */ -static int -strng2(void) -{ - (void) wattrset(treescrn2, A_BOLD | A_BLINK); - set_color(treescrn2, COLOR_WHITE); + /* lildeer1 */ + MvWAddCh(lildeer1, 0, 0, (chtype) 'V'); + MvWAddCh(lildeer1, 1, 0, (chtype) '@'); + MvWAddCh(lildeer1, 1, 1, (chtype) '<'); + MvWAddCh(lildeer1, 1, 2, (chtype) '>'); + MvWAddCh(lildeer1, 1, 3, (chtype) '~'); + + /* lildeer2 */ + MvWAddCh(lildeer2, 0, 0, (chtype) 'V'); + MvWAddCh(lildeer2, 1, 0, (chtype) '@'); + MvWAddCh(lildeer2, 1, 1, (chtype) '|'); + MvWAddCh(lildeer2, 1, 2, (chtype) '|'); + MvWAddCh(lildeer2, 1, 3, (chtype) '~'); + + /* lildeer3 */ + MvWAddCh(lildeer3, 0, 0, (chtype) 'V'); + MvWAddCh(lildeer3, 1, 0, (chtype) '@'); + MvWAddCh(lildeer3, 1, 1, (chtype) '>'); + MvWAddCh(lildeer3, 1, 2, (chtype) '<'); + MvWAddCh(lildeer2, 1, 3, (chtype) '~'); + + /* middeer1 */ + MvWAddCh(middeer1, 0, 2, (chtype) 'y'); + MvWAddCh(middeer1, 0, 3, (chtype) 'y'); + MvWAddCh(middeer1, 1, 2, (chtype) '0'); + MvWAddCh(middeer1, 1, 3, (chtype) '('); + MvWAddCh(middeer1, 1, 4, (chtype) '='); + MvWAddCh(middeer1, 1, 5, (chtype) ')'); + MvWAddCh(middeer1, 1, 6, (chtype) '~'); + MvWAddCh(middeer1, 2, 3, (chtype) '\\'); + MvWAddCh(middeer1, 2, 4, (chtype) '/'); + + /* middeer2 */ + MvWAddCh(middeer2, 0, 2, (chtype) 'y'); + MvWAddCh(middeer2, 0, 3, (chtype) 'y'); + MvWAddCh(middeer2, 1, 2, (chtype) '0'); + MvWAddCh(middeer2, 1, 3, (chtype) '('); + MvWAddCh(middeer2, 1, 4, (chtype) '='); + MvWAddCh(middeer2, 1, 5, (chtype) ')'); + MvWAddCh(middeer2, 1, 6, (chtype) '~'); + MvWAddCh(middeer2, 2, 3, (chtype) '|'); + MvWAddCh(middeer2, 2, 5, (chtype) '|'); + + /* middeer3 */ + MvWAddCh(middeer3, 0, 2, (chtype) 'y'); + MvWAddCh(middeer3, 0, 3, (chtype) 'y'); + MvWAddCh(middeer3, 1, 2, (chtype) '0'); + MvWAddCh(middeer3, 1, 3, (chtype) '('); + MvWAddCh(middeer3, 1, 4, (chtype) '='); + MvWAddCh(middeer3, 1, 5, (chtype) ')'); + MvWAddCh(middeer3, 1, 6, (chtype) '~'); + MvWAddCh(middeer3, 2, 2, (chtype) '/'); + MvWAddCh(middeer3, 2, 6, (chtype) '\\'); + + /* bigdeer1 */ + MvWAddCh(bigdeer1, 0, 17, (chtype) '\\'); + MvWAddCh(bigdeer1, 0, 18, (chtype) '/'); + MvWAddCh(bigdeer1, 0, 20, (chtype) '\\'); + MvWAddCh(bigdeer1, 0, 21, (chtype) '/'); + MvWAddCh(bigdeer1, 1, 18, (chtype) '\\'); + MvWAddCh(bigdeer1, 1, 20, (chtype) '/'); + MvWAddCh(bigdeer1, 2, 19, (chtype) '|'); + MvWAddCh(bigdeer1, 2, 20, (chtype) '_'); + MvWAddCh(bigdeer1, 3, 18, (chtype) '/'); + MvWAddCh(bigdeer1, 3, 19, (chtype) '^'); + MvWAddCh(bigdeer1, 3, 20, (chtype) '0'); + MvWAddCh(bigdeer1, 3, 21, (chtype) '\\'); + MvWAddCh(bigdeer1, 4, 17, (chtype) '/'); + MvWAddCh(bigdeer1, 4, 18, (chtype) '/'); + MvWAddCh(bigdeer1, 4, 19, (chtype) '\\'); + MvWAddCh(bigdeer1, 4, 22, (chtype) '\\'); + MvWAddStr(bigdeer1, 5, 7, "^~~~~~~~~// ~~U"); + MvWAddStr(bigdeer1, 6, 7, "( \\_____( /"); + MvWAddStr(bigdeer1, 7, 8, "( ) /"); + MvWAddStr(bigdeer1, 8, 9, "\\\\ /"); + MvWAddStr(bigdeer1, 9, 11, "\\>/>"); + + /* bigdeer2 */ + MvWAddCh(bigdeer2, 0, 17, (chtype) '\\'); + MvWAddCh(bigdeer2, 0, 18, (chtype) '/'); + MvWAddCh(bigdeer2, 0, 20, (chtype) '\\'); + MvWAddCh(bigdeer2, 0, 21, (chtype) '/'); + MvWAddCh(bigdeer2, 1, 18, (chtype) '\\'); + MvWAddCh(bigdeer2, 1, 20, (chtype) '/'); + MvWAddCh(bigdeer2, 2, 19, (chtype) '|'); + MvWAddCh(bigdeer2, 2, 20, (chtype) '_'); + MvWAddCh(bigdeer2, 3, 18, (chtype) '/'); + MvWAddCh(bigdeer2, 3, 19, (chtype) '^'); + MvWAddCh(bigdeer2, 3, 20, (chtype) '0'); + MvWAddCh(bigdeer2, 3, 21, (chtype) '\\'); + MvWAddCh(bigdeer2, 4, 17, (chtype) '/'); + MvWAddCh(bigdeer2, 4, 18, (chtype) '/'); + MvWAddCh(bigdeer2, 4, 19, (chtype) '\\'); + MvWAddCh(bigdeer2, 4, 22, (chtype) '\\'); + MvWAddStr(bigdeer2, 5, 7, "^~~~~~~~~// ~~U"); + MvWAddStr(bigdeer2, 6, 7, "(( )____( /"); + MvWAddStr(bigdeer2, 7, 7, "( / |"); + MvWAddStr(bigdeer2, 8, 8, "\\/ |"); + MvWAddStr(bigdeer2, 9, 9, "|> |>"); - MvWAddCh(treescrn2, 5, 14, (chtype) '\''); - MvWAddCh(treescrn2, 5, 13, (chtype) ':'); - MvWAddCh(treescrn2, 5, 12, (chtype) '.'); - MvWAddCh(treescrn2, 5, 11, (chtype) ','); - MvWAddCh(treescrn2, 6, 10, (chtype) '\''); - MvWAddCh(treescrn2, 6, 9, (chtype) ':'); + /* bigdeer3 */ + MvWAddCh(bigdeer3, 0, 17, (chtype) '\\'); + MvWAddCh(bigdeer3, 0, 18, (chtype) '/'); + MvWAddCh(bigdeer3, 0, 20, (chtype) '\\'); + MvWAddCh(bigdeer3, 0, 21, (chtype) '/'); + MvWAddCh(bigdeer3, 1, 18, (chtype) '\\'); + MvWAddCh(bigdeer3, 1, 20, (chtype) '/'); + MvWAddCh(bigdeer3, 2, 19, (chtype) '|'); + MvWAddCh(bigdeer3, 2, 20, (chtype) '_'); + MvWAddCh(bigdeer3, 3, 18, (chtype) '/'); + MvWAddCh(bigdeer3, 3, 19, (chtype) '^'); + MvWAddCh(bigdeer3, 3, 20, (chtype) '0'); + MvWAddCh(bigdeer3, 3, 21, (chtype) '\\'); + MvWAddCh(bigdeer3, 4, 17, (chtype) '/'); + MvWAddCh(bigdeer3, 4, 18, (chtype) '/'); + MvWAddCh(bigdeer3, 4, 19, (chtype) '\\'); + MvWAddCh(bigdeer3, 4, 22, (chtype) '\\'); + MvWAddStr(bigdeer3, 5, 7, "^~~~~~~~~// ~~U"); + MvWAddStr(bigdeer3, 6, 6, "( ()_____( /"); + MvWAddStr(bigdeer3, 7, 6, "/ / /"); + MvWAddStr(bigdeer3, 8, 5, "|/ \\"); + MvWAddStr(bigdeer3, 9, 5, "/> \\>"); - wattroff(treescrn2, A_BOLD | A_BLINK); - unset_color(treescrn2); + /* bigdeer4 */ + MvWAddCh(bigdeer4, 0, 17, (chtype) '\\'); + MvWAddCh(bigdeer4, 0, 18, (chtype) '/'); + MvWAddCh(bigdeer4, 0, 20, (chtype) '\\'); + MvWAddCh(bigdeer4, 0, 21, (chtype) '/'); + MvWAddCh(bigdeer4, 1, 18, (chtype) '\\'); + MvWAddCh(bigdeer4, 1, 20, (chtype) '/'); + MvWAddCh(bigdeer4, 2, 19, (chtype) '|'); + MvWAddCh(bigdeer4, 2, 20, (chtype) '_'); + MvWAddCh(bigdeer4, 3, 18, (chtype) '/'); + MvWAddCh(bigdeer4, 3, 19, (chtype) '^'); + MvWAddCh(bigdeer4, 3, 20, (chtype) '0'); + MvWAddCh(bigdeer4, 3, 21, (chtype) '\\'); + MvWAddCh(bigdeer4, 4, 17, (chtype) '/'); + MvWAddCh(bigdeer4, 4, 18, (chtype) '/'); + MvWAddCh(bigdeer4, 4, 19, (chtype) '\\'); + MvWAddCh(bigdeer4, 4, 22, (chtype) '\\'); + MvWAddStr(bigdeer4, 5, 7, "^~~~~~~~~// ~~U"); + MvWAddStr(bigdeer4, 6, 6, "( )______( /"); + MvWAddStr(bigdeer4, 7, 5, "(/ \\"); + MvWAddStr(bigdeer4, 8, 0, "v___= ----^"); - wrefresh(treescrn2); - wrefresh(w_del_msg); - return (0); -} + /* lookdeer1 */ + MvWAddStr(lookdeer1, 0, 16, "\\/ \\/"); + MvWAddStr(lookdeer1, 1, 17, "\\Y/ \\Y/"); + MvWAddStr(lookdeer1, 2, 19, "\\=/"); + MvWAddStr(lookdeer1, 3, 17, "^\\o o/^"); + MvWAddStr(lookdeer1, 4, 17, "//( )"); + MvWAddStr(lookdeer1, 5, 7, "^~~~~~~~~// \\O/"); + MvWAddStr(lookdeer1, 6, 7, "( \\_____( /"); + MvWAddStr(lookdeer1, 7, 8, "( ) /"); + MvWAddStr(lookdeer1, 8, 9, "\\\\ /"); + MvWAddStr(lookdeer1, 9, 11, "\\>/>"); -static int -strng3(void) -{ - (void) wattrset(treescrn2, A_BOLD | A_BLINK); - set_color(treescrn2, COLOR_WHITE); + /* lookdeer2 */ + MvWAddStr(lookdeer2, 0, 16, "\\/ \\/"); + MvWAddStr(lookdeer2, 1, 17, "\\Y/ \\Y/"); + MvWAddStr(lookdeer2, 2, 19, "\\=/"); + MvWAddStr(lookdeer2, 3, 17, "^\\o o/^"); + MvWAddStr(lookdeer2, 4, 17, "//( )"); + MvWAddStr(lookdeer2, 5, 7, "^~~~~~~~~// \\O/"); + MvWAddStr(lookdeer2, 6, 7, "(( )____( /"); + MvWAddStr(lookdeer2, 7, 7, "( / |"); + MvWAddStr(lookdeer2, 8, 8, "\\/ |"); + MvWAddStr(lookdeer2, 9, 9, "|> |>"); - MvWAddCh(treescrn2, 7, 16, (chtype) '\''); - MvWAddCh(treescrn2, 7, 15, (chtype) ':'); - MvWAddCh(treescrn2, 7, 14, (chtype) '.'); - MvWAddCh(treescrn2, 7, 13, (chtype) ','); - MvWAddCh(treescrn2, 8, 12, (chtype) '\''); - MvWAddCh(treescrn2, 8, 11, (chtype) ':'); - MvWAddCh(treescrn2, 8, 10, (chtype) '.'); - MvWAddCh(treescrn2, 8, 9, (chtype) ','); + /* lookdeer3 */ + MvWAddStr(lookdeer3, 0, 16, "\\/ \\/"); + MvWAddStr(lookdeer3, 1, 17, "\\Y/ \\Y/"); + MvWAddStr(lookdeer3, 2, 19, "\\=/"); + MvWAddStr(lookdeer3, 3, 17, "^\\o o/^"); + MvWAddStr(lookdeer3, 4, 17, "//( )"); + MvWAddStr(lookdeer3, 5, 7, "^~~~~~~~~// \\O/"); + MvWAddStr(lookdeer3, 6, 6, "( ()_____( /"); + MvWAddStr(lookdeer3, 7, 6, "/ / /"); + MvWAddStr(lookdeer3, 8, 5, "|/ \\"); + MvWAddStr(lookdeer3, 9, 5, "/> \\>"); - wattroff(treescrn2, A_BOLD | A_BLINK); - unset_color(treescrn2); + /* lookdeer4 */ + MvWAddStr(lookdeer4, 0, 16, "\\/ \\/"); + MvWAddStr(lookdeer4, 1, 17, "\\Y/ \\Y/"); + MvWAddStr(lookdeer4, 2, 19, "\\=/"); + MvWAddStr(lookdeer4, 3, 17, "^\\o o/^"); + MvWAddStr(lookdeer4, 4, 17, "//( )"); + MvWAddStr(lookdeer4, 5, 7, "^~~~~~~~~// \\O/"); + MvWAddStr(lookdeer4, 6, 6, "( )______( /"); + MvWAddStr(lookdeer4, 7, 5, "(/ \\"); + MvWAddStr(lookdeer4, 8, 0, "v___= ----^"); - wrefresh(treescrn2); - wrefresh(w_del_msg); - return (0); -} + /***********************************************/ + cbreak(); + nodelay(stdscr, TRUE); + do { + clear(); + werase(treescrn); + touchwin(w_del_msg); + touchwin(treescrn); + werase(treescrn2); + touchwin(treescrn2); + werase(treescrn8); + touchwin(treescrn8); + refresh(); + look_out(150); + boxit(); + refresh(); + look_out(150); + seas(); + refresh(); + look_out(150); + greet(); + refresh(); + look_out(150); + fromwho(); + refresh(); + look_out(150); + tree(); + look_out(150); + balls(); + look_out(150); + star(); + look_out(150); + strng1(); + strng2(); + strng3(); + strng4(); + strng5(); -static int -strng4(void) -{ - (void) wattrset(treescrn2, A_BOLD | A_BLINK); - set_color(treescrn2, COLOR_WHITE); + /* set up the windows for our blinking trees */ + /* **************************************** */ + /* treescrn3 */ - MvWAddCh(treescrn2, 9, 17, (chtype) '\''); - MvWAddCh(treescrn2, 9, 16, (chtype) ':'); - MvWAddCh(treescrn2, 9, 15, (chtype) '.'); - MvWAddCh(treescrn2, 9, 14, (chtype) ','); - MvWAddCh(treescrn2, 10, 13, (chtype) '\''); - MvWAddCh(treescrn2, 10, 12, (chtype) ':'); - MvWAddCh(treescrn2, 10, 11, (chtype) '.'); - MvWAddCh(treescrn2, 10, 10, (chtype) ','); - MvWAddCh(treescrn2, 11, 9, (chtype) '\''); - MvWAddCh(treescrn2, 11, 8, (chtype) ':'); - MvWAddCh(treescrn2, 11, 7, (chtype) '.'); - MvWAddCh(treescrn2, 11, 6, (chtype) ','); - MvWAddCh(treescrn2, 12, 5, (chtype) '\''); + overlay(treescrn, treescrn3); - wattroff(treescrn2, A_BOLD | A_BLINK); - unset_color(treescrn2); + /*balls */ + MvWAddCh(treescrn3, 4, 18, ' '); + MvWAddCh(treescrn3, 7, 6, ' '); + MvWAddCh(treescrn3, 8, 19, ' '); + MvWAddCh(treescrn3, 11, 22, ' '); - wrefresh(treescrn2); - wrefresh(w_del_msg); - return (0); -} + /*star */ + MvWAddCh(treescrn3, 0, 12, '*'); -static int -strng5(void) -{ - (void) wattrset(treescrn2, A_BOLD | A_BLINK); - set_color(treescrn2, COLOR_WHITE); + /*strng1 */ + MvWAddCh(treescrn3, 3, 11, ' '); - MvWAddCh(treescrn2, 11, 19, (chtype) '\''); - MvWAddCh(treescrn2, 11, 18, (chtype) ':'); - MvWAddCh(treescrn2, 11, 17, (chtype) '.'); - MvWAddCh(treescrn2, 11, 16, (chtype) ','); - MvWAddCh(treescrn2, 12, 15, (chtype) '\''); - MvWAddCh(treescrn2, 12, 14, (chtype) ':'); - MvWAddCh(treescrn2, 12, 13, (chtype) '.'); - MvWAddCh(treescrn2, 12, 12, (chtype) ','); + /*strng2 */ + MvWAddCh(treescrn3, 5, 13, ' '); + MvWAddCh(treescrn3, 6, 10, ' '); - wattroff(treescrn2, A_BOLD | A_BLINK); - unset_color(treescrn2); + /*strng3 */ + MvWAddCh(treescrn3, 7, 16, ' '); + MvWAddCh(treescrn3, 7, 14, ' '); - /* save a fully lit tree */ - overlay(treescrn2, treescrn); + /*strng4 */ + MvWAddCh(treescrn3, 10, 13, ' '); + MvWAddCh(treescrn3, 10, 10, ' '); + MvWAddCh(treescrn3, 11, 8, ' '); - wrefresh(treescrn2); - wrefresh(w_del_msg); - return (0); -} + /*strng5 */ + MvWAddCh(treescrn3, 11, 18, ' '); + MvWAddCh(treescrn3, 12, 13, ' '); -static int -blinkit(void) -{ - static int cycle; + /* treescrn4 */ - if (cycle > 4) { - cycle = 0; - } + overlay(treescrn, treescrn4); - touchwin(treescrn8); + /*balls */ + MvWAddCh(treescrn4, 3, 9, ' '); + MvWAddCh(treescrn4, 4, 16, ' '); + MvWAddCh(treescrn4, 7, 6, ' '); + MvWAddCh(treescrn4, 8, 19, ' '); + MvWAddCh(treescrn4, 11, 2, ' '); + MvWAddCh(treescrn4, 12, 23, ' '); - switch (cycle) { - case 0: - overlay(treescrn3, treescrn8); - wrefresh(treescrn8); - wrefresh(w_del_msg); - break; - case 1: - overlay(treescrn4, treescrn8); - wrefresh(treescrn8); - wrefresh(w_del_msg); - break; - case 2: - overlay(treescrn5, treescrn8); - wrefresh(treescrn8); - wrefresh(w_del_msg); - break; - case 3: - overlay(treescrn6, treescrn8); - wrefresh(treescrn8); - wrefresh(w_del_msg); - break; - case 4: - overlay(treescrn7, treescrn8); - wrefresh(treescrn8); - wrefresh(w_del_msg); - break; - } - touchwin(treescrn8); + /*star */ + (void) wstandout(treescrn4); + MvWAddCh(treescrn4, 0, 12, '*'); + (void) wstandend(treescrn4); - /*ALL ON************************************************** */ + /*strng1 */ + MvWAddCh(treescrn4, 3, 13, ' '); - overlay(treescrn, treescrn8); - wrefresh(treescrn8); - wrefresh(w_del_msg); + /*strng2 */ - ++cycle; - return (0); -} + /*strng3 */ + MvWAddCh(treescrn4, 7, 15, ' '); + MvWAddCh(treescrn4, 8, 11, ' '); -static void -deer_step(WINDOW *win, int y, int x) -{ - mvwin(win, y, x); - wrefresh(win); - wrefresh(w_del_msg); - look_out(5); -} + /*strng4 */ + MvWAddCh(treescrn4, 9, 16, ' '); + MvWAddCh(treescrn4, 10, 12, ' '); + MvWAddCh(treescrn4, 11, 8, ' '); -static int -reindeer(void) -{ - int looper; - y_pos = 0; + /*strng5 */ + MvWAddCh(treescrn4, 11, 18, ' '); + MvWAddCh(treescrn4, 12, 14, ' '); - for (x_pos = 70; x_pos > 62; x_pos--) { - if (x_pos < 62) { - y_pos = 1; - } - for (looper = 0; looper < 4; looper++) { - MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '.'); - wrefresh(dotdeer0); - wrefresh(w_del_msg); - werase(dotdeer0); - wrefresh(dotdeer0); - wrefresh(w_del_msg); - look_out(50); - } - } + /* treescrn5 */ - y_pos = 2; + overlay(treescrn, treescrn5); - for (; x_pos > 50; x_pos--) { - for (looper = 0; looper < 4; looper++) { + /*balls */ + MvWAddCh(treescrn5, 3, 15, ' '); + MvWAddCh(treescrn5, 10, 20, ' '); + MvWAddCh(treescrn5, 12, 1, ' '); - if (x_pos < 56) { - y_pos = 3; + /*star */ + MvWAddCh(treescrn5, 0, 12, '*'); - MvWAddCh(stardeer0, y_pos, x_pos, (chtype) '*'); - wrefresh(stardeer0); - wrefresh(w_del_msg); - werase(stardeer0); - wrefresh(stardeer0); - wrefresh(w_del_msg); - } else { - MvWAddCh(dotdeer0, y_pos, x_pos, (chtype) '*'); - wrefresh(dotdeer0); - wrefresh(w_del_msg); - werase(dotdeer0); - wrefresh(dotdeer0); - wrefresh(w_del_msg); - } - } - } + /*strng1 */ + MvWAddCh(treescrn5, 3, 11, ' '); - x_pos = 58; + /*strng2 */ + MvWAddCh(treescrn5, 5, 12, ' '); - for (y_pos = 2; y_pos < 5; y_pos++) { + /*strng3 */ + MvWAddCh(treescrn5, 7, 14, ' '); + MvWAddCh(treescrn5, 8, 10, ' '); - touchwin(lildeer0); - wrefresh(lildeer0); - wrefresh(w_del_msg); + /*strng4 */ + MvWAddCh(treescrn5, 9, 15, ' '); + MvWAddCh(treescrn5, 10, 11, ' '); + MvWAddCh(treescrn5, 11, 7, ' '); - for (looper = 0; looper < 4; looper++) { - deer_step(lildeer3, y_pos, x_pos); - deer_step(lildeer2, y_pos, x_pos); - deer_step(lildeer1, y_pos, x_pos); - deer_step(lildeer2, y_pos, x_pos); - deer_step(lildeer3, y_pos, x_pos); + /*strng5 */ + MvWAddCh(treescrn5, 11, 17, ' '); + MvWAddCh(treescrn5, 12, 13, ' '); - touchwin(lildeer0); - wrefresh(lildeer0); - wrefresh(w_del_msg); + /* treescrn6 */ - x_pos -= 2; - } - } + overlay(treescrn, treescrn6); - x_pos = 35; + /*balls */ + MvWAddCh(treescrn6, 6, 7, ' '); + MvWAddCh(treescrn6, 7, 18, ' '); + MvWAddCh(treescrn6, 10, 4, ' '); + MvWAddCh(treescrn6, 11, 23, ' '); - for (y_pos = 5; y_pos < 10; y_pos++) { + /*star */ + (void) wstandout(treescrn6); + MvWAddCh(treescrn6, 0, 12, '*'); + (void) wstandend(treescrn6); - touchwin(middeer0); - wrefresh(middeer0); - wrefresh(w_del_msg); + /*strng1 */ - for (looper = 0; looper < 2; looper++) { - deer_step(middeer3, y_pos, x_pos); - deer_step(middeer2, y_pos, x_pos); - deer_step(middeer1, y_pos, x_pos); - deer_step(middeer2, y_pos, x_pos); - deer_step(middeer3, y_pos, x_pos); + /*strng2 */ + MvWAddCh(treescrn6, 5, 11, ' '); - touchwin(middeer0); - wrefresh(middeer0); - wrefresh(w_del_msg); + /*strng3 */ + MvWAddCh(treescrn6, 7, 13, ' '); + MvWAddCh(treescrn6, 8, 9, ' '); - x_pos -= 3; - } - } + /*strng4 */ + MvWAddCh(treescrn6, 9, 14, ' '); + MvWAddCh(treescrn6, 10, 10, ' '); + MvWAddCh(treescrn6, 11, 6, ' '); - look_out(300); + /*strng5 */ + MvWAddCh(treescrn6, 11, 16, ' '); + MvWAddCh(treescrn6, 12, 12, ' '); - y_pos = 1; + /* treescrn7 */ - for (x_pos = 8; x_pos < 16; x_pos++) { - deer_step(bigdeer4, y_pos, x_pos); - deer_step(bigdeer3, y_pos, x_pos); - deer_step(bigdeer2, y_pos, x_pos); - deer_step(bigdeer1, y_pos, x_pos); - deer_step(bigdeer2, y_pos, x_pos); - deer_step(bigdeer3, y_pos, x_pos); - deer_step(bigdeer4, y_pos, x_pos); - deer_step(bigdeer0, y_pos, x_pos); - } + overlay(treescrn, treescrn7); - --x_pos; + /*balls */ + MvWAddCh(treescrn7, 3, 15, ' '); + MvWAddCh(treescrn7, 6, 7, ' '); + MvWAddCh(treescrn7, 7, 18, ' '); + MvWAddCh(treescrn7, 10, 4, ' '); + MvWAddCh(treescrn7, 11, 22, ' '); - for (looper = 0; looper < 6; looper++) { - deer_step(lookdeer4, y_pos, x_pos); - deer_step(lookdeer3, y_pos, x_pos); - deer_step(lookdeer2, y_pos, x_pos); - deer_step(lookdeer1, y_pos, x_pos); - deer_step(lookdeer2, y_pos, x_pos); - deer_step(lookdeer3, y_pos, x_pos); - deer_step(lookdeer4, y_pos, x_pos); - } + /*star */ + MvWAddCh(treescrn7, 0, 12, '*'); - deer_step(lookdeer0, y_pos, x_pos); + /*strng1 */ + MvWAddCh(treescrn7, 3, 12, ' '); - for (; y_pos < 10; y_pos++) { - for (looper = 0; looper < 2; looper++) { - deer_step(bigdeer4, y_pos, x_pos); - deer_step(bigdeer3, y_pos, x_pos); - deer_step(bigdeer2, y_pos, x_pos); - deer_step(bigdeer1, y_pos, x_pos); - deer_step(bigdeer2, y_pos, x_pos); - deer_step(bigdeer3, y_pos, x_pos); - deer_step(bigdeer4, y_pos, x_pos); - } - deer_step(bigdeer0, y_pos, x_pos); - } + /*strng2 */ + MvWAddCh(treescrn7, 5, 13, ' '); + MvWAddCh(treescrn7, 6, 9, ' '); - --y_pos; + /*strng3 */ + MvWAddCh(treescrn7, 7, 15, ' '); + MvWAddCh(treescrn7, 8, 11, ' '); - deer_step(lookdeer3, y_pos, x_pos); - return (0); -} + /*strng4 */ + MvWAddCh(treescrn7, 9, 16, ' '); + MvWAddCh(treescrn7, 10, 12, ' '); + MvWAddCh(treescrn7, 11, 8, ' '); -static RETSIGTYPE -done(int sig GCC_UNUSED) -{ - CATCHALL(done); + /*strng5 */ + MvWAddCh(treescrn7, 11, 18, ' '); + MvWAddCh(treescrn7, 12, 14, ' '); - move(LINES - 1, 0); - refresh(); - endwin(); - curs_set(1); + look_out(150); + reindeer(); -#if NO_LEAKS - if (my_pairs != 0) - free(my_pairs); -#endif + touchwin(w_holiday); + wrefresh(w_holiday); + wrefresh(w_del_msg); - ExitProgram(EXIT_SUCCESS); + look_out(500); + for (loopy = 0; loopy < 100; loopy++) { + blinkit(); + } + } while (!opt_q); + done(0); } diff --git a/deps/ncurses-5.9/test/xterm-16color.dat b/deps/ncurses-6.3/test/xterm-16color.dat similarity index 89% rename from deps/ncurses-5.9/test/xterm-16color.dat rename to deps/ncurses-6.3/test/xterm-16color.dat index 6d47d93..075c44b 100644 --- a/deps/ncurses-5.9/test/xterm-16color.dat +++ b/deps/ncurses-6.3/test/xterm-16color.dat @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2004,2006 Free Software Foundation, Inc. # +# Copyright 2020,2021 Thomas E. Dickey # +# Copyright 2004-2006,2016 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"), # @@ -25,21 +26,21 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: xterm-16color.dat,v 1.2 2006/04/22 21:40:00 tom Exp $ -# This illustrates the predefined colors for XFree86 xterm's "xterm-16color". +# $Id: xterm-16color.dat,v 1.5 2021/06/17 21:20:30 tom Exp $ +# This illustrates the predefined colors for XFree86 xterm's "xterm-16color". # If you set $TERM to "xterm-88color" (and have xterm compiled to support the # 88-color or 256-color feature), you can use the ncurses 'd' screen to # manipulate the colors shown in the screen. The 'd' screen is limited to # the first 16 colors, and xterm happens to use the same first 16 colors in # the extended color models that support initc. # -# The colors shown are for xterm patch #189. +# The colors shown are for xterm patch #192. scale:255 0: 0 0 0 black 1: 205 0 0 red3 2: 0 205 0 green3 3: 205 205 0 yellow3 -4: 30 144 255 DodgerBlue1 +4: 0 0 238 blue2 5: 205 0 205 magenta3 6: 0 205 205 cyan3 7: 229 229 229 gray90 @@ -47,7 +48,7 @@ scale:255 9: 255 0 0 red 10: 0 255 0 green 11: 255 255 0 yellow -12: 99 184 255 SteelBlue1 +12: 92 92 255 customblue 13: 255 0 255 magenta 14: 0 255 255 cyan 15: 255 255 255 white diff --git a/deps/ncurses-5.9/test/xterm-256color.dat b/deps/ncurses-6.3/test/xterm-256color.dat similarity index 95% rename from deps/ncurses-5.9/test/xterm-256color.dat rename to deps/ncurses-6.3/test/xterm-256color.dat index 3dcaabd..28f518e 100644 --- a/deps/ncurses-5.9/test/xterm-256color.dat +++ b/deps/ncurses-6.3/test/xterm-256color.dat @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2009 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 2009,2016 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: xterm-256color.dat,v 1.1 2009/10/30 22:33:40 tom Exp $ +# $Id: xterm-256color.dat,v 1.3 2020/02/08 21:38:22 tom Exp $ # This illustrates the predefined colors for xterm's "xterm-256color" feature. # If you set $TERM to "xterm-256color" (and have xterm compiled to support the # 256-color feature), you can use the ncurses 'd' screen to @@ -33,13 +34,13 @@ # the first 16 colors, and xterm happens to use the same first 16 colors in # the extended color models that support initc. # -# The colors shown are for xterm patch #189. +# The colors shown are for xterm patch #192. scale:255 0: 0 0 0 black 1: 205 0 0 red3 2: 0 205 0 green3 3: 205 205 0 yellow3 -4: 30 144 255 DodgerBlue1 +4: 0 0 238 blue2 5: 205 0 205 magenta3 6: 0 205 205 cyan3 7: 229 229 229 gray90 @@ -47,7 +48,7 @@ scale:255 9: 255 0 0 red 10: 0 255 0 green 11: 255 255 0 yellow -12: 99 184 255 SteelBlue1 +12: 92 92 255 customblue 13: 255 0 255 magenta 14: 0 255 255 cyan 15: 255 255 255 white diff --git a/deps/ncurses-5.9/test/xterm-88color.dat b/deps/ncurses-6.3/test/xterm-88color.dat similarity index 93% rename from deps/ncurses-5.9/test/xterm-88color.dat rename to deps/ncurses-6.3/test/xterm-88color.dat index 95a753c..48ee18b 100644 --- a/deps/ncurses-5.9/test/xterm-88color.dat +++ b/deps/ncurses-6.3/test/xterm-88color.dat @@ -1,5 +1,6 @@ ############################################################################## -# Copyright (c) 2005-2006,2009 Free Software Foundation, Inc. # +# Copyright 2020 Thomas E. Dickey # +# Copyright 2005-2009,2016 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"), # @@ -25,7 +26,7 @@ # use or other dealings in this Software without prior written # # authorization. # ############################################################################## -# $Id: xterm-88color.dat,v 1.3 2009/10/30 22:33:56 tom Exp $ +# $Id: xterm-88color.dat,v 1.5 2020/02/08 21:38:22 tom Exp $ # This illustrates the predefined colors for xterm's "xterm-88color" feature. # If you set $TERM to "xterm-88color" (and have xterm compiled to support the # 88-color or 256-color feature), you can use the ncurses 'd' screen to @@ -33,13 +34,13 @@ # the first 16 colors, and xterm happens to use the same first 16 colors in # the extended color models that support initc. # -# The colors shown are for xterm patch #189. +# The colors shown are for xterm patch #192. scale:255 0: 0 0 0 black 1: 205 0 0 red3 2: 0 205 0 green3 3: 205 205 0 yellow3 -4: 30 144 255 DodgerBlue1 +4: 0 0 238 blue2 5: 205 0 205 magenta3 6: 0 205 205 cyan3 7: 229 229 229 gray90 @@ -47,7 +48,7 @@ scale:255 9: 255 0 0 red 10: 0 255 0 green 11: 255 255 0 yellow -12: 99 184 255 SteelBlue1 +12: 92 92 255 customblue 13: 255 0 255 magenta 14: 0 255 255 cyan 15: 255 255 255 white diff --git a/deps/ncurses-6.3/test/xterm-color_48x48.xpm b/deps/ncurses-6.3/test/xterm-color_48x48.xpm new file mode 100644 index 0000000..d8a501f --- /dev/null +++ b/deps/ncurses-6.3/test/xterm-color_48x48.xpm @@ -0,0 +1,61 @@ +/* XPM */ +static char * xterm_color_48x48_xpm[] = { +"48 48 10 1", +". c None", +" c #555500", +"+ c #000000", +"@ c #FFFFFF", +"# c #FF0000", +"$ c #070700", +"% c #0B0B00", +"& c #FF8400", +"* c #49FF00", +"= c #60B7FF", +"................................................", +"......++++++++++++++++++++++++++++++++++........", +".....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++......", +".....+@@@++++++++++++++++++++++++++++@@@+@+.....", +".....+@@++++++++++++++++++++++++++++++@@+@@+....", +".....+@++++++++++++++++++++++++++++++++@+@@@+...", +".....+@++###++++###++++++++++++++++++++@+@@@@+..", +".....+@+++##++++##+++++++++++++++++++++@+@@@@+..", +".....+@++++##++##++++++++++++++++++++++@+@@@@+..", +".....+@++++##++##++++++++++++++++++++++@+@@@@+..", +".....+@+++++####+++++++++++++++++++++++@+@@@@+..", +".....+@+++++####+++++++++++++++++++++++@+@@@@+..", +".....+@++++++##++++++++++++++++++++++++@+@@@@+..", +".....+@+++++####+++++++++++++++++++++++@+@@@@+..", +".....+@+++++####+++++++++++++++++++++++@+@@@@+..", +".....+@++++##++##++++++++++++++++++++++@+@@@@+..", +".....+@++++##++##++++++++++++++++++++++@+@@@@+..", +".....+@+++##++++##+++++++++++++++++++++@+@@@@+..", +".....+@++###++++###++++++++++++++++++++@+@@@@+..", +".....+@++++++++++++++++++++++++++++++++@+@@@@+..", +".....+@$+++++++++++++++++++++++++++++++@+@@@@+..", +".....+@%@@@@@@@+&&&&&++****+++==+++==++@+@@@@+..", +".....+@++++@++++&++++++*+++*++==+++==++@+@@@@+..", +".....+@++++@++++&++++++*+++*++=+=+=+=++@+@@@@+..", +".....+@++++@++++&&&&+++****+++=+=+=+=++@+@@@@+..", +".....+@++++@++++&++++++*+*++++=++=++=++@+@@@+...", +".....+@++++@++++&++++++*++*+++=++=++=++@+@@@+...", +".....+@++++@++++&&&&&++*+++*++=+++++=++@+@@+....", +".....+@++++++++++++++++++++++++++++++++@+@@+....", +".....+@++++++++++++++++++++++++++++++++@+@+.....", +".....+@@++++++++++++++++++++++++++++++@@+@+.....", +".....+@@@++++++++++++++++++++++++++++@@@++......", +".....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++......", +"......++++++++++++++++++++++++++++++++++........", +"................................................", +"................................................", +"......++++++++++++++++++++++++++++++++++++......", +".....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@++......", +".....+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@@++......", +"....+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@+......", +"....+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@@+@+......", +"...+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@+......", +"...+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@+@@+@@+......", +"..+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@@+.......", +"..+@++@++++++++++++++++++++++++++@++@+@+........", +".+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+@+.........", +".+++++++++++++++++++++++++++++++++++++..........", +"................................................"};